From b4b2657965ae67970a3c8d8de41153107ef964da Mon Sep 17 00:00:00 2001 From: zeromus Date: Sun, 4 Nov 2012 23:29:06 +0000 Subject: [PATCH] some libmednahawk work. it can't possibly be used by anyone else yet, but i gotta do a checkin. --- BizHawk.Emulation/BizHawk.Emulation.csproj | 7 +- .../Consoles/PSX/LibMednahawkDll.cs | 52 + BizHawk.Emulation/Consoles/PSX/Octoshock.cs | 254 + BizHawk.Emulation/DiscSystem/Disc.API.cs | 56 +- BizHawk.Emulation/DiscSystem/ECM.cs | 5 +- BizHawk.Emulation/Interfaces/CoreComms.cs | 3 + BizHawk.Emulation/Properties/AssemblyInfo.cs | 5 - BizHawk.MultiClient/Config.cs | 8 + BizHawk.MultiClient/MainForm.cs | 30 +- BizHawk.MultiClient/config/PathManager.cs | 19 +- .../output/dll/libmednahawk.dll | Bin 0 -> 2817536 bytes BizHawk.Util/BizHawk.Util.csproj | 9 +- BizHawk.pro.sln | 120 + DiscoHawk/DiscoHawk.csproj | 3 + .../Consoles/PSX => attic}/PSX.cs | 0 libmednahawk/ABOUT-NLS | 1282 + libmednahawk/COPYING | 341 + libmednahawk/ChangeLog | 5008 +++ libmednahawk/Makefile.am | 5 + libmednahawk/Makefile.in | 834 + libmednahawk/NEWS | 0 libmednahawk/README | 22 + libmednahawk/TODO | 345 + libmednahawk/acinclude.m4 | 594 + libmednahawk/aclocal.m4 | 1242 + libmednahawk/api.cpp | 194 + libmednahawk/autogen.sh | 11 + libmednahawk/compile | 143 + libmednahawk/config.guess | 1502 + libmednahawk/config.h | 22 + libmednahawk/config.rpath | 672 + libmednahawk/config.sub | 1714 + libmednahawk/configure | 29422 ++++++++++++++ libmednahawk/configure.ac | 547 + libmednahawk/depcomp | 630 + libmednahawk/dx/XInput.h | 258 + libmednahawk/dx/dinput.h | 4417 +++ ...n32-ddraw-dinput8-dsound-dxerr8-dxguid.lib | Bin 0 -> 1957750 bytes libmednahawk/dx/dsound.h | 2358 ++ libmednahawk/include/Fir_Resampler.h | 243 + libmednahawk/include/blargg_common.h | 175 + libmednahawk/include/blargg_config.h | 30 + libmednahawk/include/blargg_endian.h | 158 + libmednahawk/include/blargg_source.h | 78 + libmednahawk/include/blip/Blip_Buffer.h | 498 + libmednahawk/include/blip/Stereo_Buffer.h | 71 + libmednahawk/include/config.h.in | 730 + libmednahawk/include/mpcdec/config_types.h | 50 + libmednahawk/include/mpcdec/decoder.h | 124 + libmednahawk/include/mpcdec/huffman.h | 54 + libmednahawk/include/mpcdec/internal.h | 65 + libmednahawk/include/mpcdec/math.h | 143 + libmednahawk/include/mpcdec/mpcdec.h | 141 + libmednahawk/include/mpcdec/reader.h | 82 + libmednahawk/include/mpcdec/requant.h | 51 + libmednahawk/include/mpcdec/streaminfo.h | 91 + libmednahawk/include/trio/CHANGES | 785 + libmednahawk/include/trio/trio.h | 235 + libmednahawk/include/trio/triodef.h | 335 + libmednahawk/include/trio/trionan.h | 183 + libmednahawk/include/trio/triop.h | 473 + libmednahawk/include/trio/triostr.h | 681 + libmednahawk/intl/ChangeLog | 4 + libmednahawk/intl/Makefile.in | 659 + libmednahawk/intl/VERSION | 1 + libmednahawk/intl/bindtextdom.c | 340 + libmednahawk/intl/config.charset | 684 + libmednahawk/intl/dcgettext.c | 56 + libmednahawk/intl/dcigettext.c | 1705 + libmednahawk/intl/dcngettext.c | 57 + libmednahawk/intl/dgettext.c | 58 + libmednahawk/intl/dngettext.c | 59 + libmednahawk/intl/eval-plural.h | 108 + libmednahawk/intl/explodename.c | 135 + libmednahawk/intl/export.h | 6 + libmednahawk/intl/finddomain.c | 212 + libmednahawk/intl/gettext.c | 63 + libmednahawk/intl/gettextP.h | 311 + libmednahawk/intl/gmo.h | 152 + libmednahawk/intl/hash-string.c | 51 + libmednahawk/intl/hash-string.h | 36 + libmednahawk/intl/intl-compat.c | 133 + libmednahawk/intl/intl-exports.c | 36 + libmednahawk/intl/l10nflist.c | 400 + libmednahawk/intl/langprefs.c | 355 + libmednahawk/intl/libgnuintl.h.in | 466 + libmednahawk/intl/libintl.rc | 38 + libmednahawk/intl/loadinfo.h | 132 + libmednahawk/intl/loadmsgcat.c | 1333 + libmednahawk/intl/localcharset.c | 549 + libmednahawk/intl/localcharset.h | 42 + libmednahawk/intl/locale.alias | 77 + libmednahawk/intl/localealias.c | 439 + libmednahawk/intl/localename.c | 2959 ++ libmednahawk/intl/lock.c | 1059 + libmednahawk/intl/lock.h | 928 + libmednahawk/intl/log.c | 128 + libmednahawk/intl/ngettext.c | 65 + libmednahawk/intl/os2compat.c | 98 + libmednahawk/intl/os2compat.h | 46 + libmednahawk/intl/osdep.c | 26 + libmednahawk/intl/plural-exp.c | 155 + libmednahawk/intl/plural-exp.h | 129 + libmednahawk/intl/plural.c | 1961 + libmednahawk/intl/plural.y | 385 + libmednahawk/intl/printf-args.c | 188 + libmednahawk/intl/printf-args.h | 155 + libmednahawk/intl/printf-parse.c | 628 + libmednahawk/intl/printf-parse.h | 75 + libmednahawk/intl/printf.c | 429 + libmednahawk/intl/ref-add.sin | 31 + libmednahawk/intl/ref-del.sin | 26 + libmednahawk/intl/relocatable.c | 493 + libmednahawk/intl/relocatable.h | 83 + libmednahawk/intl/setlocale.c | 1015 + libmednahawk/intl/textdomain.c | 127 + libmednahawk/intl/threadlib.c | 75 + libmednahawk/intl/tsearch.c | 684 + libmednahawk/intl/tsearch.h | 83 + libmednahawk/intl/vasnprintf.c | 5568 +++ libmednahawk/intl/vasnprintf.h | 78 + libmednahawk/intl/vasnwprintf.h | 46 + libmednahawk/intl/version.c | 26 + libmednahawk/intl/wprintf-parse.h | 75 + libmednahawk/intl/xsize.h | 109 + libmednahawk/inttypes.h | 12 + libmednahawk/libmednahawk.vcxproj | 456 + libmednahawk/libmednahawk.vcxproj.filters | 813 + libmednahawk/ltmain.sh | 8413 ++++ libmednahawk/m4/ChangeLog | 89 + libmednahawk/m4/ax_cflags_gcc_option.m4 | 225 + libmednahawk/m4/codeset.m4 | 21 + libmednahawk/m4/fcntl-o.m4 | 81 + libmednahawk/m4/gettext.m4 | 383 + libmednahawk/m4/glibc2.m4 | 30 + libmednahawk/m4/glibc21.m4 | 30 + libmednahawk/m4/iconv.m4 | 214 + libmednahawk/m4/intdiv0.m4 | 84 + libmednahawk/m4/intl.m4 | 294 + libmednahawk/m4/intldir.m4 | 19 + libmednahawk/m4/intlmacosx.m4 | 51 + libmednahawk/m4/intmax.m4 | 33 + libmednahawk/m4/inttypes-h.m4 | 25 + libmednahawk/m4/inttypes-pri.m4 | 36 + libmednahawk/m4/inttypes_h.m4 | 26 + libmednahawk/m4/lcmessage.m4 | 31 + libmednahawk/m4/lib-ld.m4 | 110 + libmednahawk/m4/lib-link.m4 | 774 + libmednahawk/m4/lib-prefix.m4 | 224 + libmednahawk/m4/libtool.m4 | 7377 ++++ libmednahawk/m4/lock.m4 | 37 + libmednahawk/m4/longdouble.m4 | 31 + libmednahawk/m4/longlong.m4 | 106 + libmednahawk/m4/ltoptions.m4 | 368 + libmednahawk/m4/ltsugar.m4 | 123 + libmednahawk/m4/ltversion.m4 | 23 + libmednahawk/m4/lt~obsolete.m4 | 92 + libmednahawk/m4/nls.m4 | 32 + libmednahawk/m4/po.m4 | 449 + libmednahawk/m4/printf-posix.m4 | 45 + libmednahawk/m4/progtest.m4 | 92 + libmednahawk/m4/signed.m4 | 17 + libmednahawk/m4/size_max.m4 | 75 + libmednahawk/m4/stdint_h.m4 | 26 + libmednahawk/m4/threadlib.m4 | 347 + libmednahawk/m4/uintmax_t.m4 | 30 + libmednahawk/m4/ulonglong.m4 | 23 + libmednahawk/m4/visibility.m4 | 74 + libmednahawk/m4/wchar_t.m4 | 20 + libmednahawk/m4/wint_t.m4 | 28 + libmednahawk/m4/xsize.m4 | 13 + libmednahawk/missing | 376 + libmednahawk/netplay_stub.cpp | 6 + libmednahawk/po/ChangeLog | 24 + libmednahawk/po/LINGUAS | 3 + libmednahawk/po/Makefile.in.in | 444 + libmednahawk/po/Makevars | 43 + libmednahawk/po/POTFILES.in | 752 + libmednahawk/po/Rules-quot | 47 + libmednahawk/po/boldquot.sed | 10 + libmednahawk/po/de.gmo | Bin 0 -> 34902 bytes libmednahawk/po/de.po | 4788 +++ libmednahawk/po/en@boldquot.header | 25 + libmednahawk/po/en@quot.header | 22 + libmednahawk/po/es.gmo | Bin 0 -> 3821 bytes libmednahawk/po/es.po | 4340 ++ libmednahawk/po/insert-header.sin | 23 + libmednahawk/po/mednafen.pot | 4320 ++ libmednahawk/po/quot.sed | 6 + libmednahawk/po/remove-potcdate.sin | 19 + libmednahawk/po/ru.gmo | Bin 0 -> 47706 bytes libmednahawk/po/ru.po | 4800 +++ libmednahawk/po/stamp-po | 1 + libmednahawk/sdl/include/SDL.h | 101 + libmednahawk/sdl/include/SDL_active.h | 63 + libmednahawk/sdl/include/SDL_audio.h | 284 + libmednahawk/sdl/include/SDL_byteorder.h | 29 + libmednahawk/sdl/include/SDL_cdrom.h | 202 + libmednahawk/sdl/include/SDL_config.h | 45 + libmednahawk/sdl/include/SDL_config.h.default | 45 + libmednahawk/sdl/include/SDL_config.h.in | 310 + .../sdl/include/SDL_config_dreamcast.h | 106 + libmednahawk/sdl/include/SDL_config_macos.h | 112 + libmednahawk/sdl/include/SDL_config_macosx.h | 150 + libmednahawk/sdl/include/SDL_config_minimal.h | 62 + libmednahawk/sdl/include/SDL_config_nds.h | 115 + libmednahawk/sdl/include/SDL_config_os2.h | 141 + libmednahawk/sdl/include/SDL_config_symbian.h | 146 + libmednahawk/sdl/include/SDL_copying.h | 22 + libmednahawk/sdl/include/SDL_cpuinfo.h | 69 + libmednahawk/sdl/include/SDL_endian.h | 209 + libmednahawk/sdl/include/SDL_error.h | 72 + libmednahawk/sdl/include/SDL_events.h | 356 + libmednahawk/sdl/include/SDL_getenv.h | 28 + libmednahawk/sdl/include/SDL_joystick.h | 187 + libmednahawk/sdl/include/SDL_keyboard.h | 135 + libmednahawk/sdl/include/SDL_keysym.h | 326 + libmednahawk/sdl/include/SDL_loadso.h | 78 + libmednahawk/sdl/include/SDL_main.h | 106 + libmednahawk/sdl/include/SDL_mouse.h | 143 + libmednahawk/sdl/include/SDL_mutex.h | 177 + libmednahawk/sdl/include/SDL_name.h | 11 + libmednahawk/sdl/include/SDL_platform.h | 110 + libmednahawk/sdl/include/SDL_quit.h | 55 + libmednahawk/sdl/include/SDL_rwops.h | 155 + libmednahawk/sdl/include/SDL_stdinc.h | 620 + libmednahawk/sdl/include/SDL_syswm.h | 225 + libmednahawk/sdl/include/SDL_thread.h | 120 + libmednahawk/sdl/include/SDL_timer.h | 125 + libmednahawk/sdl/include/SDL_types.h | 28 + libmednahawk/sdl/include/SDL_version.h | 91 + libmednahawk/sdl/include/SDL_video.h | 951 + libmednahawk/sdl/include/begin_code.h | 191 + libmednahawk/sdl/include/close_code.h | 46 + libmednahawk/sdl/include/doxyfile | 946 + libmednahawk/sdl/include/sdl_config_win32.h | 184 + libmednahawk/sdl/include/sdl_opengl.h | 6556 ++++ libmednahawk/sdl/sdl-vc8-Win32.lib | Bin 0 -> 678556 bytes libmednahawk/sdl/sdlmain-vc8-Win32.lib | Bin 0 -> 9262 bytes libmednahawk/src/FileStream.cpp | 96 + libmednahawk/src/FileStream.h | 59 + libmednahawk/src/FileWrapper.cpp | 402 + libmednahawk/src/FileWrapper.h | 80 + libmednahawk/src/Makefile.am | 146 + libmednahawk/src/Makefile.in | 1203 + libmednahawk/src/MemoryStream.cpp | 257 + libmednahawk/src/MemoryStream.h | 70 + libmednahawk/src/PSFLoader.cpp | 335 + libmednahawk/src/PSFLoader.h | 49 + libmednahawk/src/Stream.cpp | 126 + libmednahawk/src/Stream.h | 188 + libmednahawk/src/cdplay.cpp | 589 + libmednahawk/src/cdrom/CDAccess.cpp | 58 + libmednahawk/src/cdrom/CDAccess.h | 26 + libmednahawk/src/cdrom/CDAccess_Image.cpp | 983 + libmednahawk/src/cdrom/CDAccess_Image.h | 95 + libmednahawk/src/cdrom/CDAccess_Physical.cpp | 358 + libmednahawk/src/cdrom/CDAccess_Physical.h | 36 + libmednahawk/src/cdrom/CDUtility.cpp | 176 + libmednahawk/src/cdrom/CDUtility.h | 210 + libmednahawk/src/cdrom/Makefile.am.inc | 7 + libmednahawk/src/cdrom/SimpleFIFO.cpp | 6 + libmednahawk/src/cdrom/SimpleFIFO.h | 107 + libmednahawk/src/cdrom/audioreader.cpp | 582 + libmednahawk/src/cdrom/audioreader.h | 43 + libmednahawk/src/cdrom/audioreader_opus.cpp | 185 + libmednahawk/src/cdrom/audioreader_opus.h | 21 + libmednahawk/src/cdrom/cdromif.cpp | 731 + libmednahawk/src/cdrom/cdromif.h | 190 + libmednahawk/src/cdrom/crc32.cpp | 130 + libmednahawk/src/cdrom/dvdisaster.h | 173 + libmednahawk/src/cdrom/galois-inlines.h | 40 + libmednahawk/src/cdrom/galois.cpp | 156 + libmednahawk/src/cdrom/l-ec.cpp | 478 + libmednahawk/src/cdrom/lec.cpp | 691 + libmednahawk/src/cdrom/lec.h | 77 + libmednahawk/src/cdrom/pcecd.cpp | 1165 + libmednahawk/src/cdrom/pcecd.h | 66 + libmednahawk/src/cdrom/recover-raw.cpp | 203 + .../src/cdrom/scsicd-pce-commands.inc | 269 + libmednahawk/src/cdrom/scsicd.cpp | 3107 ++ libmednahawk/src/cdrom/scsicd.h | 101 + libmednahawk/src/clamp.h | 35 + libmednahawk/src/compress/Makefile.am.inc | 1 + libmednahawk/src/compress/README.LZO | 124 + libmednahawk/src/compress/blz.c | 982 + libmednahawk/src/compress/blz.h | 40 + libmednahawk/src/compress/ioapi.c | 180 + libmednahawk/src/compress/ioapi.h | 75 + libmednahawk/src/compress/lzoconf.h | 446 + libmednahawk/src/compress/lzodefs.h | 1852 + libmednahawk/src/compress/minilzo.c | 4579 +++ libmednahawk/src/compress/minilzo.h | 109 + libmednahawk/src/compress/quicklz.c | 888 + libmednahawk/src/compress/quicklz.h | 82 + libmednahawk/src/compress/unzip.c | 1561 + libmednahawk/src/compress/unzip.h | 357 + libmednahawk/src/cputest/Makefile.am.inc | 13 + libmednahawk/src/cputest/README | 3 + libmednahawk/src/cputest/arm_cpu.c | 29 + libmednahawk/src/cputest/cputest.c | 86 + libmednahawk/src/cputest/cputest.h | 70 + libmednahawk/src/cputest/ppc_cpu.c | 87 + libmednahawk/src/cputest/x86_cpu.c | 159 + libmednahawk/src/cputest/x86_cpu.h | 101 + libmednahawk/src/debug.cpp | 237 + libmednahawk/src/debug.h | 221 + libmednahawk/src/demo/Makefile.am | 7 + libmednahawk/src/demo/Makefile.in | 596 + libmednahawk/src/demo/demo.cpp | 41 + libmednahawk/src/desa68/Makefile.am | 13 + libmednahawk/src/desa68/Makefile.in | 601 + libmednahawk/src/desa68/desa68.c | 1572 + libmednahawk/src/desa68/desa68.h | 234 + libmednahawk/src/dis6280.cpp | 470 + libmednahawk/src/dis6280.h | 14 + libmednahawk/src/dis6502.cpp | 313 + libmednahawk/src/dis6502.h | 15 + libmednahawk/src/driver.h | 15 + libmednahawk/src/drivers/2xSaI.cpp | 1347 + libmednahawk/src/drivers/2xSaI.h | 53 + .../src/drivers/Joystick_DOS_Standard.cpp | 142 + .../src/drivers/Joystick_DOS_Standard.h | 5 + libmednahawk/src/drivers/Joystick_DX5.cpp | 431 + libmednahawk/src/drivers/Joystick_DX5.h | 6 + libmednahawk/src/drivers/Joystick_Linux.cpp | 573 + libmednahawk/src/drivers/Joystick_Linux.h | 4 + libmednahawk/src/drivers/Joystick_SDL.cpp | 188 + libmednahawk/src/drivers/Joystick_SDL.h | 4 + libmednahawk/src/drivers/Joystick_XInput.cpp | 263 + libmednahawk/src/drivers/Joystick_XInput.h | 5 + libmednahawk/src/drivers/Keyboard.h | 89 + libmednahawk/src/drivers/Makefile.am | 33 + libmednahawk/src/drivers/Makefile.in | 718 + libmednahawk/src/drivers/NetClient.h | 26 + libmednahawk/src/drivers/NetClient_BSD.cpp | 81 + libmednahawk/src/drivers/NetClient_BSD.h | 28 + libmednahawk/src/drivers/NetClient_POSIX.cpp | 264 + libmednahawk/src/drivers/NetClient_POSIX.h | 31 + libmednahawk/src/drivers/NetClient_WS2.cpp | 303 + libmednahawk/src/drivers/NetClient_WS2.h | 31 + libmednahawk/src/drivers/args.cpp | 186 + libmednahawk/src/drivers/args.h | 27 + libmednahawk/src/drivers/cheat.cpp | 749 + libmednahawk/src/drivers/cheat.h | 5 + libmednahawk/src/drivers/console.cpp | 307 + libmednahawk/src/drivers/console.h | 27 + libmednahawk/src/drivers/debugger.cpp | 1691 + libmednahawk/src/drivers/debugger.h | 29 + libmednahawk/src/drivers/ers.cpp | 102 + libmednahawk/src/drivers/ers.h | 33 + libmednahawk/src/drivers/fps.cpp | 185 + libmednahawk/src/drivers/fps.h | 13 + libmednahawk/src/drivers/gfxdebugger.cpp | 263 + libmednahawk/src/drivers/gfxdebugger.h | 8 + libmednahawk/src/drivers/help.cpp | 121 + libmednahawk/src/drivers/help.h | 10 + libmednahawk/src/drivers/hq2x.cpp | 2860 ++ libmednahawk/src/drivers/hq3x.cpp | 3828 ++ libmednahawk/src/drivers/hq4x.cpp | 5281 +++ libmednahawk/src/drivers/hqxx-common.cpp | 3 + libmednahawk/src/drivers/hqxx-common.h | 39 + libmednahawk/src/drivers/icon.h | 2264 ++ libmednahawk/src/drivers/input-config.cpp | 229 + libmednahawk/src/drivers/input-config.h | 14 + .../src/drivers/input-default-buttons.h | 591 + libmednahawk/src/drivers/input.cpp | 1974 + libmednahawk/src/drivers/input.h | 41 + libmednahawk/src/drivers/joystick.cpp | 585 + libmednahawk/src/drivers/joystick.h | 118 + libmednahawk/src/drivers/logdebugger.cpp | 287 + libmednahawk/src/drivers/logdebugger.h | 9 + libmednahawk/src/drivers/main.cpp | 2014 + libmednahawk/src/drivers/main.h | 88 + libmednahawk/src/drivers/memdebugger.cpp | 1108 + libmednahawk/src/drivers/memdebugger.h | 10 + libmednahawk/src/drivers/netplay.cpp | 717 + libmednahawk/src/drivers/netplay.h | 13 + libmednahawk/src/drivers/nnx.cpp | 206 + libmednahawk/src/drivers/nnx.h | 7 + libmednahawk/src/drivers/nongl.cpp | 457 + libmednahawk/src/drivers/nongl.h | 8 + libmednahawk/src/drivers/opengl.cpp | 858 + libmednahawk/src/drivers/opengl.h | 185 + libmednahawk/src/drivers/overlay.cpp | 304 + libmednahawk/src/drivers/overlay.h | 9 + libmednahawk/src/drivers/prompt.cpp | 209 + libmednahawk/src/drivers/prompt.h | 30 + libmednahawk/src/drivers/remote.cpp | 290 + libmednahawk/src/drivers/remote.h | 9 + libmednahawk/src/drivers/scale2x.c | 926 + libmednahawk/src/drivers/scale2x.h | 52 + libmednahawk/src/drivers/scale3x.c | 385 + libmednahawk/src/drivers/scale3x.h | 33 + libmednahawk/src/drivers/scalebit.c | 387 + libmednahawk/src/drivers/scalebit.h | 51 + libmednahawk/src/drivers/shader.cpp | 396 + libmednahawk/src/drivers/shader.h | 22 + libmednahawk/src/drivers/sound.cpp | 361 + libmednahawk/src/drivers/sound.h | 16 + libmednahawk/src/drivers/video-state.cpp | 229 + libmednahawk/src/drivers/video-state.h | 10 + libmednahawk/src/drivers/video.cpp | 1299 + libmednahawk/src/drivers/video.h | 127 + libmednahawk/src/endian.cpp | 245 + libmednahawk/src/endian.h | 207 + libmednahawk/src/error.cpp | 136 + libmednahawk/src/error.h | 75 + libmednahawk/src/file.cpp | 796 + libmednahawk/src/file.h | 156 + libmednahawk/src/gb/Makefile.am | 8 + libmednahawk/src/gb/Makefile.in | 604 + libmednahawk/src/gb/gb.cpp | 2779 ++ libmednahawk/src/gb/gb.h | 70 + libmednahawk/src/gb/gbCodes.h | 1388 + libmednahawk/src/gb/gbCodesCB.h | 1284 + libmednahawk/src/gb/gbGlobals.cpp | 51 + libmednahawk/src/gb/gbGlobals.h | 66 + libmednahawk/src/gb/gfx.cpp | 479 + libmednahawk/src/gb/memory.cpp | 952 + libmednahawk/src/gb/memory.h | 149 + libmednahawk/src/gb/sound.cpp | 152 + libmednahawk/src/gb/sound.h | 21 + libmednahawk/src/gb/z80.cpp | 481 + libmednahawk/src/gb/z80.h | 13 + libmednahawk/src/gba/GBA.cpp | 3434 ++ libmednahawk/src/gba/GBA.h | 162 + libmednahawk/src/gba/GBAinline.cpp | 285 + libmednahawk/src/gba/GBAinline.h | 315 + libmednahawk/src/gba/Gfx.cpp | 1409 + libmednahawk/src/gba/Gfx.h | 85 + libmednahawk/src/gba/Globals.cpp | 110 + libmednahawk/src/gba/Globals.h | 132 + libmednahawk/src/gba/Makefile.am | 6 + libmednahawk/src/gba/Makefile.in | 618 + libmednahawk/src/gba/Mode0.cpp | 558 + libmednahawk/src/gba/Mode1.cpp | 519 + libmednahawk/src/gba/Mode2.cpp | 484 + libmednahawk/src/gba/Mode3.cpp | 411 + libmednahawk/src/gba/Mode4.cpp | 407 + libmednahawk/src/gba/Mode5.cpp | 411 + libmednahawk/src/gba/Port.h | 31 + libmednahawk/src/gba/RTC.cpp | 229 + libmednahawk/src/gba/RTC.h | 62 + libmednahawk/src/gba/Sound.cpp | 451 + libmednahawk/src/gba/Sound.h | 69 + libmednahawk/src/gba/arm.cpp | 7952 ++++ libmednahawk/src/gba/arm.h | 6 + libmednahawk/src/gba/bios.cpp | 1165 + libmednahawk/src/gba/bios.h | 52 + libmednahawk/src/gba/eeprom.cpp | 223 + libmednahawk/src/gba/eeprom.h | 46 + libmednahawk/src/gba/flash.cpp | 229 + libmednahawk/src/gba/flash.h | 43 + libmednahawk/src/gba/gfx-draw.h | 233 + libmednahawk/src/gba/myrom.h | 174 + libmednahawk/src/gba/sram.cpp | 37 + libmednahawk/src/gba/sram.h | 31 + libmednahawk/src/gba/thumb.cpp | 2115 + libmednahawk/src/gba/thumb.h | 6 + libmednahawk/src/general.cpp | 595 + libmednahawk/src/general.h | 41 + libmednahawk/src/gettext.h | 79 + libmednahawk/src/git-virtb.h | 365 + libmednahawk/src/git.h | 386 + libmednahawk/src/hw_cpu/.Tpo | 389 + libmednahawk/src/hw_cpu/Makefile.am | 33 + libmednahawk/src/hw_cpu/Makefile.in | 864 + libmednahawk/src/hw_cpu/c68k/c68k.c | 330 + libmednahawk/src/hw_cpu/c68k/c68k.cpp | 361 + libmednahawk/src/hw_cpu/c68k/c68k.h | 233 + libmednahawk/src/hw_cpu/c68k/c68k_ini.inc | 0 libmednahawk/src/hw_cpu/c68k/c68k_op0.inc | 8329 ++++ libmednahawk/src/hw_cpu/c68k/c68k_op1.inc | 5626 +++ libmednahawk/src/hw_cpu/c68k/c68k_op2.inc | 6247 +++ libmednahawk/src/hw_cpu/c68k/c68k_op3.inc | 6247 +++ libmednahawk/src/hw_cpu/c68k/c68k_op4.inc | 7141 ++++ libmednahawk/src/hw_cpu/c68k/c68k_op5.inc | 7801 ++++ libmednahawk/src/hw_cpu/c68k/c68k_op6.inc | 4434 +++ libmednahawk/src/hw_cpu/c68k/c68k_op7.inc | 2058 + libmednahawk/src/hw_cpu/c68k/c68k_op8.inc | 5965 +++ libmednahawk/src/hw_cpu/c68k/c68k_op9.inc | 5855 +++ libmednahawk/src/hw_cpu/c68k/c68k_opA.inc | 4116 ++ libmednahawk/src/hw_cpu/c68k/c68k_opB.inc | 5845 +++ libmednahawk/src/hw_cpu/c68k/c68k_opC.inc | 5283 +++ libmednahawk/src/hw_cpu/c68k/c68k_opD.inc | 5855 +++ libmednahawk/src/hw_cpu/c68k/c68k_opE.inc | 6034 +++ libmednahawk/src/hw_cpu/c68k/c68k_opF.inc | 4116 ++ libmednahawk/src/hw_cpu/c68k/c68kexec.c | 167 + libmednahawk/src/hw_cpu/c68k/c68kexec.cpp | 167 + libmednahawk/src/hw_cpu/c68k/c68kmac.inc | 254 + libmednahawk/src/hw_cpu/c68k/gen68k.c | 3780 ++ libmednahawk/src/hw_cpu/c68k/gen68k.h | 68 + libmednahawk/src/hw_cpu/c68k/gen68k.inc | 1649 + libmednahawk/src/hw_cpu/huc6280/dis6280.cpp | 470 + libmednahawk/src/hw_cpu/huc6280/dis6280.h | 14 + libmednahawk/src/hw_cpu/huc6280/huc6280.cpp | 804 + libmednahawk/src/hw_cpu/huc6280/huc6280.h | 579 + .../src/hw_cpu/huc6280/huc6280_step.inc | 95 + libmednahawk/src/hw_cpu/huc6280/ops.inc | 558 + .../src/hw_cpu/v810/fpu-new/mednafen-gcc.h | 78 + libmednahawk/src/hw_cpu/v810/fpu-new/milieu.h | 45 + .../src/hw_cpu/v810/fpu-new/softfloat-macros | 627 + .../hw_cpu/v810/fpu-new/softfloat-specialize | 242 + .../src/hw_cpu/v810/fpu-new/softfloat.c | 2284 ++ .../src/hw_cpu/v810/fpu-new/softfloat.h | 141 + .../src/hw_cpu/v810/fpu-new/timesoftfloat.c | 1050 + libmednahawk/src/hw_cpu/v810/v810_cpu.cpp | 1494 + libmednahawk/src/hw_cpu/v810/v810_cpu.h | 359 + libmednahawk/src/hw_cpu/v810/v810_cpuD.cpp | 363 + libmednahawk/src/hw_cpu/v810/v810_cpuD.h | 15 + libmednahawk/src/hw_cpu/v810/v810_do_am.h | 72 + .../src/hw_cpu/v810/v810_op_table.inc | 36 + libmednahawk/src/hw_cpu/v810/v810_oploop.inc | 1081 + libmednahawk/src/hw_cpu/v810/v810_opt.h | 170 + libmednahawk/src/hw_cpu/z80-fuse/coretest.c | 405 + .../src/hw_cpu/z80-fuse/opcodes_base.c | 1123 + libmednahawk/src/hw_cpu/z80-fuse/z80.cpp | 266 + libmednahawk/src/hw_cpu/z80-fuse/z80.h | 125 + libmednahawk/src/hw_cpu/z80-fuse/z80_cb.c | 930 + libmednahawk/src/hw_cpu/z80-fuse/z80_ddfd.c | 534 + libmednahawk/src/hw_cpu/z80-fuse/z80_ddfdcb.c | 1226 + libmednahawk/src/hw_cpu/z80-fuse/z80_ed.c | 567 + libmednahawk/src/hw_cpu/z80-fuse/z80_macros.h | 432 + libmednahawk/src/hw_cpu/z80-fuse/z80_ops.cpp | 74 + libmednahawk/src/hw_misc/Makefile.am | 8 + libmednahawk/src/hw_misc/Makefile.in | 608 + .../src/hw_misc/arcade_card/arcade_card.cpp | 366 + .../src/hw_misc/arcade_card/arcade_card.h | 55 + libmednahawk/src/hw_sound/Makefile.am | 14 + libmednahawk/src/hw_sound/Makefile.in | 676 + libmednahawk/src/hw_sound/gb_apu/Gb_Apu.cpp | 394 + libmednahawk/src/hw_sound/gb_apu/Gb_Apu.h | 182 + .../src/hw_sound/gb_apu/Gb_Apu_State.cpp | 118 + libmednahawk/src/hw_sound/gb_apu/Gb_Oscs.cpp | 665 + libmednahawk/src/hw_sound/gb_apu/Gb_Oscs.h | 190 + .../src/hw_sound/gb_apu/blargg_common.h | 206 + .../src/hw_sound/gb_apu/blargg_config.h | 31 + .../src/hw_sound/gb_apu/blargg_source.h | 92 + libmednahawk/src/hw_sound/pce_psg/pce_psg.cpp | 909 + libmednahawk/src/hw_sound/pce_psg/pce_psg.h | 180 + libmednahawk/src/hw_sound/sms_apu/Sms_Apu.cpp | 384 + libmednahawk/src/hw_sound/sms_apu/Sms_Apu.h | 92 + libmednahawk/src/hw_sound/sms_apu/Sms_Oscs.h | 48 + libmednahawk/src/hw_sound/ym2413/2413tone.h | 20 + libmednahawk/src/hw_sound/ym2413/emu2413.cpp | 1768 + libmednahawk/src/hw_sound/ym2413/emu2413.h | 123 + .../src/hw_sound/ym2612/Ym2612_Emu.cpp | 1146 + libmednahawk/src/hw_sound/ym2612/Ym2612_Emu.h | 39 + .../src/hw_sound/ym2612/ym2612_opeg.inc | 400 + libmednahawk/src/hw_video/Makefile.am | 8 + libmednahawk/src/hw_video/Makefile.in | 608 + .../src/hw_video/huc6270/backup/vdc.cpp | 1950 + .../src/hw_video/huc6270/backup/vdc.h | 448 + libmednahawk/src/hw_video/huc6270/vdc.cpp | 1953 + libmednahawk/src/hw_video/huc6270/vdc.h | 448 + libmednahawk/src/lepacker.h | 103 + libmednahawk/src/lynx/Makefile.am | 6 + libmednahawk/src/lynx/Makefile.in | 605 + libmednahawk/src/lynx/c6502mak.h | 694 + libmednahawk/src/lynx/c65c02.cpp | 990 + libmednahawk/src/lynx/c65c02.h | 306 + libmednahawk/src/lynx/cart.cpp | 428 + libmednahawk/src/lynx/cart.h | 143 + libmednahawk/src/lynx/license.txt | 21 + libmednahawk/src/lynx/lynxbase.h | 57 + libmednahawk/src/lynx/lynxdef.h | 287 + libmednahawk/src/lynx/machine.h | 65 + libmednahawk/src/lynx/memmap.cpp | 222 + libmednahawk/src/lynx/memmap.h | 96 + libmednahawk/src/lynx/mikie.cpp | 2755 ++ libmednahawk/src/lynx/mikie.h | 407 + libmednahawk/src/lynx/ram.cpp | 131 + libmednahawk/src/lynx/ram.h | 90 + libmednahawk/src/lynx/rom.cpp | 88 + libmednahawk/src/lynx/rom.h | 82 + libmednahawk/src/lynx/susie.cpp | 2226 ++ libmednahawk/src/lynx/susie.h | 445 + libmednahawk/src/lynx/sysbase.h | 73 + libmednahawk/src/lynx/system.cpp | 477 + libmednahawk/src/lynx/system.h | 234 + libmednahawk/src/masmem.h | 211 + libmednahawk/src/math_ops.cpp | 36 + libmednahawk/src/math_ops.h | 57 + libmednahawk/src/md/Makefile.am | 19 + libmednahawk/src/md/Makefile.in | 728 + libmednahawk/src/md/cart/cart.cpp | 522 + libmednahawk/src/md/cart/cart.h | 81 + libmednahawk/src/md/cart/map_eeprom.cpp | 646 + libmednahawk/src/md/cart/map_eeprom.h | 25 + libmednahawk/src/md/cart/map_ff.cpp | 176 + libmednahawk/src/md/cart/map_ff.h | 2 + libmednahawk/src/md/cart/map_realtec.cpp | 190 + libmednahawk/src/md/cart/map_realtec.h | 6 + libmednahawk/src/md/cart/map_rmx3.cpp | 135 + libmednahawk/src/md/cart/map_rmx3.h | 2 + libmednahawk/src/md/cart/map_rom.cpp | 127 + libmednahawk/src/md/cart/map_rom.h | 6 + libmednahawk/src/md/cart/map_sbb.cpp | 135 + libmednahawk/src/md/cart/map_sbb.h | 2 + libmednahawk/src/md/cart/map_sram.cpp | 196 + libmednahawk/src/md/cart/map_sram.h | 6 + libmednahawk/src/md/cart/map_ssf2.cpp | 168 + libmednahawk/src/md/cart/map_ssf2.h | 6 + libmednahawk/src/md/cart/map_svp.cpp | 127 + libmednahawk/src/md/cart/map_svp.h | 6 + libmednahawk/src/md/cart/map_yase.cpp | 161 + libmednahawk/src/md/cart/map_yase.h | 2 + libmednahawk/src/md/cart/ssp16.c | 1246 + libmednahawk/src/md/cart/ssp16.h | 100 + libmednahawk/src/md/cd/cd.cpp | 1057 + libmednahawk/src/md/cd/cd.h | 13 + libmednahawk/src/md/cd/cdc_cdd.cpp | 74 + libmednahawk/src/md/cd/cdc_cdd.h | 20 + libmednahawk/src/md/cd/interrupt.cpp | 104 + libmednahawk/src/md/cd/interrupt.h | 13 + libmednahawk/src/md/cd/pcm.cpp | 181 + libmednahawk/src/md/cd/pcm.h | 7 + libmednahawk/src/md/cd/timer.cpp | 61 + libmednahawk/src/md/cd/timer.h | 9 + libmednahawk/src/md/cpuintrf.h | 30 + libmednahawk/src/md/debug.cpp | 477 + libmednahawk/src/md/debug.h | 20 + libmednahawk/src/md/genesis.cpp | 131 + libmednahawk/src/md/genesis.h | 42 + libmednahawk/src/md/genio.cpp | 401 + libmednahawk/src/md/genio.h | 47 + libmednahawk/src/md/hcnt.h | 69 + libmednahawk/src/md/header.cpp | 120 + libmednahawk/src/md/header.h | 84 + libmednahawk/src/md/hvc.h | 817 + libmednahawk/src/md/input/gamepad.cpp | 408 + libmednahawk/src/md/input/gamepad.h | 7 + libmednahawk/src/md/input/mouse.cpp | 220 + libmednahawk/src/md/input/mouse.h | 3 + libmednahawk/src/md/macros.h | 68 + libmednahawk/src/md/mem68k.cpp | 710 + libmednahawk/src/md/mem68k.h | 24 + libmednahawk/src/md/membnk.cpp | 324 + libmednahawk/src/md/membnk.h | 22 + libmednahawk/src/md/memvdp.cpp | 59 + libmednahawk/src/md/memvdp.h | 14 + libmednahawk/src/md/memz80.cpp | 259 + libmednahawk/src/md/memz80.h | 23 + libmednahawk/src/md/osd_cpu.h | 68 + libmednahawk/src/md/shared.h | 37 + libmednahawk/src/md/sound.cpp | 199 + libmednahawk/src/md/sound.h | 25 + libmednahawk/src/md/system.cpp | 599 + libmednahawk/src/md/system.h | 43 + libmednahawk/src/md/vcnt.h | 98 + libmednahawk/src/md/vdp.cpp | 1924 + libmednahawk/src/md/vdp.h | 254 + libmednahawk/src/md/vdp_run.inc | 307 + libmednahawk/src/md5.cpp | 260 + libmednahawk/src/md5.h | 41 + libmednahawk/src/mednafen-driver.h | 157 + libmednahawk/src/mednafen.cpp | 1719 + libmednahawk/src/mednafen.h | 60 + libmednahawk/src/memory.cpp | 71 + libmednahawk/src/memory.h | 49 + libmednahawk/src/mempatcher-driver.h | 23 + libmednahawk/src/mempatcher.cpp | 1112 + libmednahawk/src/mempatcher.h | 29 + libmednahawk/src/movie-driver.h | 6 + libmednahawk/src/movie.cpp | 355 + libmednahawk/src/movie.h | 17 + libmednahawk/src/mpcdec/!VERSION | 13 + libmednahawk/src/mpcdec/AUTHORS | 10 + libmednahawk/src/mpcdec/CMakeLists.txt | 7 + libmednahawk/src/mpcdec/COPYING | 31 + libmednahawk/src/mpcdec/ChangeLog | 40 + libmednahawk/src/mpcdec/Makefile.am | 9 + libmednahawk/src/mpcdec/Makefile.in | 609 + libmednahawk/src/mpcdec/README | 6 + libmednahawk/src/mpcdec/crc32.c | 56 + libmednahawk/src/mpcdec/datatypes.h | 38 + libmednahawk/src/mpcdec/decoder.h | 102 + libmednahawk/src/mpcdec/fastmath.c | 77 + libmednahawk/src/mpcdec/huffman-bcl.c | 280 + libmednahawk/src/mpcdec/huffman.c | 358 + libmednahawk/src/mpcdec/huffman.h | 83 + libmednahawk/src/mpcdec/huffsv46.c | 79 + libmednahawk/src/mpcdec/huffsv7.c | 85 + libmednahawk/src/mpcdec/idtag.c | 87 + libmednahawk/src/mpcdec/internal.h | 110 + libmednahawk/src/mpcdec/minimax.h | 57 + libmednahawk/src/mpcdec/mpc_bits_reader.c | 181 + libmednahawk/src/mpcdec/mpc_bits_reader.h | 149 + libmednahawk/src/mpcdec/mpc_decoder.c | 681 + libmednahawk/src/mpcdec/mpc_demux.c | 738 + libmednahawk/src/mpcdec/mpc_reader.c | 144 + libmednahawk/src/mpcdec/mpc_types.h | 151 + libmednahawk/src/mpcdec/mpcdec.h | 148 + libmednahawk/src/mpcdec/mpcdec_math.h | 135 + libmednahawk/src/mpcdec/mpcmath.h | 155 + libmednahawk/src/mpcdec/reader.h | 98 + libmednahawk/src/mpcdec/requant.c | 124 + libmednahawk/src/mpcdec/requant.h | 61 + libmednahawk/src/mpcdec/streaminfo.c | 245 + libmednahawk/src/mpcdec/streaminfo.h | 109 + libmednahawk/src/mpcdec/synth_filter.c | 430 + libmednahawk/src/mpcdec/tags.c | 1134 + libmednahawk/src/nes/Makefile.am | 17 + libmednahawk/src/nes/Makefile.in | 1214 + libmednahawk/src/nes/boards/107.cpp | 45 + libmednahawk/src/nes/boards/112.cpp | 120 + libmednahawk/src/nes/boards/113.cpp | 77 + libmednahawk/src/nes/boards/114.cpp | 138 + libmednahawk/src/nes/boards/117.cpp | 110 + libmednahawk/src/nes/boards/140.cpp | 45 + libmednahawk/src/nes/boards/15.cpp | 91 + libmednahawk/src/nes/boards/151.cpp | 81 + libmednahawk/src/nes/boards/152.cpp | 48 + libmednahawk/src/nes/boards/156.cpp | 69 + libmednahawk/src/nes/boards/16.cpp | 446 + libmednahawk/src/nes/boards/163.cpp | 199 + libmednahawk/src/nes/boards/18.cpp | 164 + libmednahawk/src/nes/boards/180.cpp | 44 + libmednahawk/src/nes/boards/182.cpp | 79 + libmednahawk/src/nes/boards/184.cpp | 47 + libmednahawk/src/nes/boards/185.cpp | 62 + libmednahawk/src/nes/boards/187.cpp | 186 + libmednahawk/src/nes/boards/189.cpp | 103 + libmednahawk/src/nes/boards/193.cpp | 58 + libmednahawk/src/nes/boards/208.cpp | 157 + libmednahawk/src/nes/boards/21.cpp | 178 + libmednahawk/src/nes/boards/22.cpp | 95 + libmednahawk/src/nes/boards/222.cpp | 96 + libmednahawk/src/nes/boards/228.cpp | 79 + libmednahawk/src/nes/boards/23.cpp | 187 + libmednahawk/src/nes/boards/232.cpp | 74 + libmednahawk/src/nes/boards/234.cpp | 115 + libmednahawk/src/nes/boards/240.cpp | 108 + libmednahawk/src/nes/boards/241.cpp | 123 + libmednahawk/src/nes/boards/242.cpp | 81 + libmednahawk/src/nes/boards/244.cpp | 70 + libmednahawk/src/nes/boards/246.cpp | 102 + libmednahawk/src/nes/boards/248.cpp | 144 + libmednahawk/src/nes/boards/25.cpp | 174 + libmednahawk/src/nes/boards/32.cpp | 127 + libmednahawk/src/nes/boards/33.cpp | 166 + libmednahawk/src/nes/boards/34.cpp | 68 + libmednahawk/src/nes/boards/38.cpp | 61 + libmednahawk/src/nes/boards/41.cpp | 79 + libmednahawk/src/nes/boards/42.cpp | 111 + libmednahawk/src/nes/boards/46.cpp | 72 + libmednahawk/src/nes/boards/51.cpp | 87 + libmednahawk/src/nes/boards/65.cpp | 130 + libmednahawk/src/nes/boards/67.cpp | 136 + libmednahawk/src/nes/boards/68.cpp | 140 + libmednahawk/src/nes/boards/70.cpp | 47 + libmednahawk/src/nes/boards/72.cpp | 78 + libmednahawk/src/nes/boards/73.cpp | 107 + libmednahawk/src/nes/boards/75.cpp | 100 + libmednahawk/src/nes/boards/76.cpp | 118 + libmednahawk/src/nes/boards/77.cpp | 68 + libmednahawk/src/nes/boards/78.cpp | 47 + libmednahawk/src/nes/boards/8.cpp | 79 + libmednahawk/src/nes/boards/80.cpp | 170 + libmednahawk/src/nes/boards/82.cpp | 115 + libmednahawk/src/nes/boards/8237.cpp | 165 + libmednahawk/src/nes/boards/86.cpp | 65 + libmednahawk/src/nes/boards/87.cpp | 45 + libmednahawk/src/nes/boards/88.cpp | 98 + libmednahawk/src/nes/boards/89.cpp | 66 + libmednahawk/src/nes/boards/90.cpp | 358 + libmednahawk/src/nes/boards/92.cpp | 80 + libmednahawk/src/nes/boards/93.cpp | 48 + libmednahawk/src/nes/boards/94.cpp | 46 + libmednahawk/src/nes/boards/95.cpp | 146 + libmednahawk/src/nes/boards/96.cpp | 81 + libmednahawk/src/nes/boards/97.cpp | 80 + libmednahawk/src/nes/boards/99.cpp | 67 + libmednahawk/src/nes/boards/Makefile.am.inc | 8 + libmednahawk/src/nes/boards/codemasters.cpp | 94 + libmednahawk/src/nes/boards/colordreams.cpp | 60 + libmednahawk/src/nes/boards/deirom.cpp | 89 + libmednahawk/src/nes/boards/emu2413.cpp | 1138 + libmednahawk/src/nes/boards/emu2413.h | 207 + libmednahawk/src/nes/boards/emutypes.h | 44 + libmednahawk/src/nes/boards/ffe.cpp | 187 + libmednahawk/src/nes/boards/fme7.cpp | 289 + libmednahawk/src/nes/boards/h2288.cpp | 116 + libmednahawk/src/nes/boards/malee.cpp | 63 + libmednahawk/src/nes/boards/mapinc.h | 7 + libmednahawk/src/nes/boards/maxicart.cpp | 120 + libmednahawk/src/nes/boards/mmc1.cpp | 637 + libmednahawk/src/nes/boards/mmc2and4.cpp | 229 + libmednahawk/src/nes/boards/mmc3.cpp | 1643 + libmednahawk/src/nes/boards/mmc5.cpp | 863 + libmednahawk/src/nes/boards/n106.cpp | 552 + libmednahawk/src/nes/boards/nina06.cpp | 70 + libmednahawk/src/nes/boards/novel.cpp | 65 + libmednahawk/src/nes/boards/sachen.cpp | 356 + libmednahawk/src/nes/boards/simple.cpp | 366 + libmednahawk/src/nes/boards/super24.cpp | 260 + libmednahawk/src/nes/boards/supervision.cpp | 84 + libmednahawk/src/nes/boards/tengen.cpp | 238 + libmednahawk/src/nes/boards/vrc6.cpp | 362 + libmednahawk/src/nes/boards/vrc7.cpp | 237 + libmednahawk/src/nes/boards/vrc7tone.h | 17 + libmednahawk/src/nes/cart.cpp | 786 + libmednahawk/src/nes/cart.h | 114 + libmednahawk/src/nes/debug-driver.h | 0 libmednahawk/src/nes/debug.cpp | 514 + libmednahawk/src/nes/debug.h | 32 + libmednahawk/src/nes/fds-driver.h | 4 + libmednahawk/src/nes/fds-sound.cpp | 507 + libmednahawk/src/nes/fds-sound.h | 3 + libmednahawk/src/nes/fds.cpp | 805 + libmednahawk/src/nes/fds.h | 10 + libmednahawk/src/nes/filter.cpp | 749 + libmednahawk/src/nes/filter.h | 90 + libmednahawk/src/nes/ines-bad.inc | 38 + libmednahawk/src/nes/ines-correct.inc | 199 + libmednahawk/src/nes/ines.cpp | 944 + libmednahawk/src/nes/ines.h | 138 + libmednahawk/src/nes/input.cpp | 899 + libmednahawk/src/nes/input.h | 80 + libmednahawk/src/nes/input/Makefile.am.inc | 1 + libmednahawk/src/nes/input/arkanoid.cpp | 165 + libmednahawk/src/nes/input/bworld.cpp | 89 + libmednahawk/src/nes/input/cursor.cpp | 99 + libmednahawk/src/nes/input/fkb.cpp | 119 + libmednahawk/src/nes/input/fkb.h | 72 + libmednahawk/src/nes/input/ftrainer.cpp | 89 + libmednahawk/src/nes/input/hypershot.cpp | 64 + libmednahawk/src/nes/input/mahjong.cpp | 94 + libmednahawk/src/nes/input/oekakids.cpp | 116 + libmednahawk/src/nes/input/partytap.cpp | 92 + libmednahawk/src/nes/input/powerpad.cpp | 99 + libmednahawk/src/nes/input/shadow.cpp | 164 + libmednahawk/src/nes/input/share.h | 9 + libmednahawk/src/nes/input/suborkb.cpp | 110 + libmednahawk/src/nes/input/suborkb.h | 96 + libmednahawk/src/nes/input/toprider.cpp | 78 + libmednahawk/src/nes/input/zapper.cpp | 167 + libmednahawk/src/nes/nes.cpp | 597 + libmednahawk/src/nes/nes.h | 61 + libmednahawk/src/nes/nsf.cpp | 558 + libmednahawk/src/nes/nsf.h | 65 + libmednahawk/src/nes/nsfe.cpp | 332 + libmednahawk/src/nes/nsfe.h | 2 + libmednahawk/src/nes/ntsc/LGPL.txt | 504 + libmednahawk/src/nes/ntsc/benchmark.c | 87 + libmednahawk/src/nes/ntsc/changes.txt | 91 + libmednahawk/src/nes/ntsc/demo.c | 255 + libmednahawk/src/nes/ntsc/nes.raw | 1 + libmednahawk/src/nes/ntsc/nes_ntsc.cpp | 658 + libmednahawk/src/nes/ntsc/nes_ntsc.h | 170 + libmednahawk/src/nes/ntsc/nes_ntsc.txt | 232 + libmednahawk/src/nes/ntsc/readme.txt | 68 + libmednahawk/src/nes/ops.h | 491 + libmednahawk/src/nes/ppu/Makefile.am.inc | 1 + libmednahawk/src/nes/ppu/fast-pputile.h | 94 + libmednahawk/src/nes/ppu/palette.cpp | 131 + libmednahawk/src/nes/ppu/palette.h | 12 + libmednahawk/src/nes/ppu/palettes/default.h | 64 + .../src/nes/ppu/palettes/rp2c04-0001.h | 64 + .../src/nes/ppu/palettes/rp2c04-0002.h | 64 + .../src/nes/ppu/palettes/rp2c04-0003.h | 64 + .../src/nes/ppu/palettes/rp2c04-0004.h | 64 + libmednahawk/src/nes/ppu/palettes/rp2c0x.h | 64 + libmednahawk/src/nes/ppu/ppu-fastrl.h | 222 + libmednahawk/src/nes/ppu/ppu-subline.h | 90 + libmednahawk/src/nes/ppu/ppu.cpp | 1618 + libmednahawk/src/nes/ppu/ppu.h | 60 + libmednahawk/src/nes/sound.cpp | 1088 + libmednahawk/src/nes/sound.h | 35 + libmednahawk/src/nes/unif.cpp | 603 + libmednahawk/src/nes/unif.h | 76 + libmednahawk/src/nes/vsuni.cpp | 403 + libmednahawk/src/nes/vsuni.h | 15 + libmednahawk/src/nes/x6502.cpp | 733 + libmednahawk/src/nes/x6502.h | 58 + libmednahawk/src/nes/x6502struct.h | 25 + libmednahawk/src/netplay-driver.h | 46 + libmednahawk/src/netplay.cpp | 846 + libmednahawk/src/netplay.h | 78 + libmednahawk/src/ngp/Makefile.am | 15 + libmednahawk/src/ngp/Makefile.in | 689 + libmednahawk/src/ngp/T6W28_Apu.cpp | 414 + libmednahawk/src/ngp/T6W28_Apu.h | 84 + libmednahawk/src/ngp/T6W28_Oscs.h | 55 + .../ngp/TLCS-900h/TLCS900h_disassemble.cpp | 641 + .../src/ngp/TLCS-900h/TLCS900h_disassemble.h | 77 + .../TLCS-900h/TLCS900h_disassemble_dst.cpp | 240 + .../TLCS-900h/TLCS900h_disassemble_extra.cpp | 199 + .../TLCS-900h/TLCS900h_disassemble_reg.cpp | 662 + .../TLCS-900h/TLCS900h_disassemble_src.cpp | 507 + .../src/ngp/TLCS-900h/TLCS900h_interpret.cpp | 975 + .../src/ngp/TLCS-900h/TLCS900h_interpret.h | 137 + .../ngp/TLCS-900h/TLCS900h_interpret_dst.cpp | 315 + .../ngp/TLCS-900h/TLCS900h_interpret_dst.h | 132 + .../ngp/TLCS-900h/TLCS900h_interpret_reg.cpp | 2187 ++ .../ngp/TLCS-900h/TLCS900h_interpret_reg.h | 305 + .../TLCS-900h/TLCS900h_interpret_single.cpp | 428 + .../ngp/TLCS-900h/TLCS900h_interpret_single.h | 170 + .../ngp/TLCS-900h/TLCS900h_interpret_src.cpp | 1266 + .../ngp/TLCS-900h/TLCS900h_interpret_src.h | 200 + .../src/ngp/TLCS-900h/TLCS900h_registers.cpp | 205 + .../src/ngp/TLCS-900h/TLCS900h_registers.h | 126 + .../ngp/TLCS-900h/TLCS900h_registers_mapB.h | 83 + .../TLCS-900h/TLCS900h_registers_mapCodeB0.h | 105 + .../TLCS-900h/TLCS900h_registers_mapCodeB1.h | 105 + .../TLCS-900h/TLCS900h_registers_mapCodeB2.h | 105 + .../TLCS-900h/TLCS900h_registers_mapCodeB3.h | 105 + .../TLCS-900h/TLCS900h_registers_mapCodeL0.h | 60 + .../TLCS-900h/TLCS900h_registers_mapCodeL1.h | 60 + .../TLCS-900h/TLCS900h_registers_mapCodeL2.h | 60 + .../TLCS-900h/TLCS900h_registers_mapCodeL3.h | 60 + .../TLCS-900h/TLCS900h_registers_mapCodeW0.h | 94 + .../TLCS-900h/TLCS900h_registers_mapCodeW1.h | 94 + .../TLCS-900h/TLCS900h_registers_mapCodeW2.h | 94 + .../TLCS-900h/TLCS900h_registers_mapCodeW3.h | 94 + .../ngp/TLCS-900h/TLCS900h_registers_mapL.h | 84 + .../ngp/TLCS-900h/TLCS900h_registers_mapW.h | 84 + libmednahawk/src/ngp/Z80_interface.cpp | 148 + libmednahawk/src/ngp/Z80_interface.h | 34 + libmednahawk/src/ngp/bios.cpp | 237 + libmednahawk/src/ngp/bios.h | 52 + libmednahawk/src/ngp/biosHLE.cpp | 629 + libmednahawk/src/ngp/dma.cpp | 314 + libmednahawk/src/ngp/dma.h | 57 + libmednahawk/src/ngp/flash.cpp | 339 + libmednahawk/src/ngp/flash.h | 31 + libmednahawk/src/ngp/gfx.cpp | 367 + libmednahawk/src/ngp/gfx.h | 107 + libmednahawk/src/ngp/gfx_scanline_colour.cpp | 265 + libmednahawk/src/ngp/gfx_scanline_mono.cpp | 248 + libmednahawk/src/ngp/interrupt.cpp | 554 + libmednahawk/src/ngp/interrupt.h | 59 + libmednahawk/src/ngp/mem.cpp | 648 + libmednahawk/src/ngp/mem.h | 56 + libmednahawk/src/ngp/neopop.cpp | 417 + libmednahawk/src/ngp/neopop.h | 220 + libmednahawk/src/ngp/rom.cpp | 181 + libmednahawk/src/ngp/rtc.cpp | 66 + libmednahawk/src/ngp/rtc.h | 6 + libmednahawk/src/ngp/sound.cpp | 146 + libmednahawk/src/ngp/sound.h | 30 + libmednahawk/src/okiadpcm-deltatable.h | 98 + libmednahawk/src/okiadpcm.cpp | 49 + libmednahawk/src/okiadpcm.h | 165 + libmednahawk/src/okiadpcm_generate.cpp | 78 + libmednahawk/src/pce/EVENT_SYSTEM_NOTES | 7 + libmednahawk/src/pce/Makefile.am | 12 + libmednahawk/src/pce/Makefile.in | 638 + libmednahawk/src/pce/SUBTITLE_FORMAT | 80 + libmednahawk/src/pce/SUBTITLE_NOTES | 70 + libmednahawk/src/pce/debug.cpp | 1184 + libmednahawk/src/pce/debug.h | 48 + libmednahawk/src/pce/hes.cpp | 297 + libmednahawk/src/pce/hes.h | 15 + libmednahawk/src/pce/huc.cpp | 620 + libmednahawk/src/pce/huc.h | 37 + libmednahawk/src/pce/input.cpp | 402 + libmednahawk/src/pce/input.h | 35 + libmednahawk/src/pce/input/gamepad.cpp | 162 + libmednahawk/src/pce/input/gamepad.h | 14 + libmednahawk/src/pce/input/mouse.cpp | 171 + libmednahawk/src/pce/input/mouse.h | 13 + libmednahawk/src/pce/input/tsushinkb.cpp | 304 + libmednahawk/src/pce/input/tsushinkb.h | 13 + libmednahawk/src/pce/mcgenjin.cpp | 260 + libmednahawk/src/pce/mcgenjin.h | 136 + libmednahawk/src/pce/mcgenjin_ym2413.inc | 97 + libmednahawk/src/pce/pce.cpp | 1165 + libmednahawk/src/pce/pce.h | 35 + libmednahawk/src/pce/subhw.cpp | 565 + libmednahawk/src/pce/subhw.h | 19 + libmednahawk/src/pce/tsushin.cpp | 53 + libmednahawk/src/pce/tsushin.h | 12 + libmednahawk/src/pce/vce.cpp | 843 + libmednahawk/src/pce/vce.h | 316 + libmednahawk/src/pce/vce_sync.inc | 272 + libmednahawk/src/pce_fast/Makefile.am | 8 + libmednahawk/src/pce_fast/Makefile.in | 605 + libmednahawk/src/pce_fast/hes.cpp | 249 + libmednahawk/src/pce_fast/hes.h | 10 + libmednahawk/src/pce_fast/huc.cpp | 447 + libmednahawk/src/pce_fast/huc.h | 17 + libmednahawk/src/pce_fast/huc6280.cpp | 784 + libmednahawk/src/pce_fast/huc6280.h | 156 + libmednahawk/src/pce_fast/huc6280_ops.inc | 635 + libmednahawk/src/pce_fast/input.cpp | 338 + libmednahawk/src/pce_fast/input.h | 19 + libmednahawk/src/pce_fast/ioread.inc | 119 + libmednahawk/src/pce_fast/pce.cpp | 676 + libmednahawk/src/pce_fast/pce.h | 45 + libmednahawk/src/pce_fast/tsushin.cpp | 53 + libmednahawk/src/pce_fast/tsushin.h | 12 + libmednahawk/src/pce_fast/vdc.cpp | 1748 + libmednahawk/src/pce_fast/vdc.h | 211 + libmednahawk/src/pce_fast/vpc_mix_inner.inc | 35 + libmednahawk/src/pcfx/Makefile.am | 12 + libmednahawk/src/pcfx/Makefile.in | 635 + libmednahawk/src/pcfx/debug.cpp | 657 + libmednahawk/src/pcfx/debug.h | 31 + libmednahawk/src/pcfx/fxscsi.cpp | 38 + libmednahawk/src/pcfx/fxscsi.h | 8 + libmednahawk/src/pcfx/gamedb.inc | 1731 + libmednahawk/src/pcfx/huc6273.cpp | 252 + libmednahawk/src/pcfx/huc6273.h | 13 + libmednahawk/src/pcfx/input.cpp | 435 + libmednahawk/src/pcfx/input.h | 56 + libmednahawk/src/pcfx/input/gamepad.cpp | 175 + libmednahawk/src/pcfx/input/gamepad.h | 9 + libmednahawk/src/pcfx/input/mouse.cpp | 121 + libmednahawk/src/pcfx/input/mouse.h | 8 + libmednahawk/src/pcfx/interrupt.cpp | 230 + libmednahawk/src/pcfx/interrupt.h | 23 + libmednahawk/src/pcfx/io-handler.inc | 290 + libmednahawk/src/pcfx/jrevdct.cpp | 280 + libmednahawk/src/pcfx/jrevdct.h | 11 + libmednahawk/src/pcfx/king-bgfast-blit.inc | 103 + libmednahawk/src/pcfx/king-bgfast.inc | 252 + libmednahawk/src/pcfx/king.cpp | 4045 ++ libmednahawk/src/pcfx/king.h | 47 + libmednahawk/src/pcfx/king_mix_body.inc | 62 + libmednahawk/src/pcfx/mem-handler.inc | 324 + libmednahawk/src/pcfx/pcfx.cpp | 1427 + libmednahawk/src/pcfx/pcfx.h | 45 + libmednahawk/src/pcfx/rainbow.cpp | 1152 + libmednahawk/src/pcfx/rainbow.h | 18 + libmednahawk/src/pcfx/soundbox.cpp | 654 + libmednahawk/src/pcfx/soundbox.h | 45 + libmednahawk/src/pcfx/timer.cpp | 180 + libmednahawk/src/pcfx/timer.h | 14 + libmednahawk/src/player.cpp | 224 + libmednahawk/src/player.h | 9 + libmednahawk/src/psx/.Tpo | 411 + libmednahawk/src/psx/Makefile.am | 12 + libmednahawk/src/psx/Makefile.in | 675 + libmednahawk/src/psx/NOTES | 3 + libmednahawk/src/psx/PSX-TODO | 46 + libmednahawk/src/psx/README.NOW | 2 + libmednahawk/src/psx/SOURCES | 38 + libmednahawk/src/psx/cdc.cpp | 2108 + libmednahawk/src/psx/cdc.h | 311 + libmednahawk/src/psx/cpu.cpp | 1994 + libmednahawk/src/psx/cpu.h | 167 + libmednahawk/src/psx/debug.cpp | 674 + libmednahawk/src/psx/debug.h | 21 + libmednahawk/src/psx/dis.cpp | 408 + libmednahawk/src/psx/dis.h | 11 + libmednahawk/src/psx/dma.cpp | 634 + libmednahawk/src/psx/dma.h | 24 + libmednahawk/src/psx/frontio.cpp | 918 + libmednahawk/src/psx/frontio.h | 142 + libmednahawk/src/psx/gpu.cpp | 1398 + libmednahawk/src/psx/gpu.h | 330 + libmednahawk/src/psx/gpu_command_table.inc | 195 + libmednahawk/src/psx/gpu_line.inc | 249 + libmednahawk/src/psx/gpu_polygon.inc | 489 + libmednahawk/src/psx/gpu_sprite.inc | 232 + libmednahawk/src/psx/gte.cpp | 1741 + libmednahawk/src/psx/gte.h | 21 + libmednahawk/src/psx/gte_divrecip.inc | 32768 ++++++++++++++++ libmednahawk/src/psx/input/dualanalog.cpp | 285 + libmednahawk/src/psx/input/dualanalog.h | 11 + libmednahawk/src/psx/input/dualshock.cpp | 1025 + libmednahawk/src/psx/input/dualshock.h | 11 + libmednahawk/src/psx/input/gamepad.cpp | 238 + libmednahawk/src/psx/input/gamepad.h | 12 + libmednahawk/src/psx/input/guncon.cpp | 396 + libmednahawk/src/psx/input/guncon.h | 11 + libmednahawk/src/psx/input/justifier.cpp | 393 + libmednahawk/src/psx/input/justifier.h | 11 + libmednahawk/src/psx/input/memcard.cpp | 453 + libmednahawk/src/psx/input/memcard.h | 11 + libmednahawk/src/psx/input/mouse.cpp | 252 + libmednahawk/src/psx/input/mouse.h | 11 + libmednahawk/src/psx/input/multitap.cpp | 335 + libmednahawk/src/psx/input/multitap.h | 45 + libmednahawk/src/psx/input/negcon.cpp | 259 + libmednahawk/src/psx/input/negcon.h | 9 + libmednahawk/src/psx/irq.cpp | 174 + libmednahawk/src/psx/irq.h | 43 + libmednahawk/src/psx/mdec.cpp | 543 + libmednahawk/src/psx/mdec.h | 23 + libmednahawk/src/psx/psx.cpp | 1834 + libmednahawk/src/psx/psx.h | 85 + libmednahawk/src/psx/sio.cpp | 106 + libmednahawk/src/psx/sio.h | 13 + libmednahawk/src/psx/spu.cpp | 1642 + libmednahawk/src/psx/spu.h | 341 + libmednahawk/src/psx/spu_fir_table.inc | 256 + libmednahawk/src/psx/spu_nft.inc | 64 + libmednahawk/src/psx/spu_reverb.inc | 237 + libmednahawk/src/psx/spu_xa.inc | 12 + libmednahawk/src/psx/timer.cpp | 516 + libmednahawk/src/psx/timer.h | 42 + libmednahawk/src/qtrecord.cpp | 997 + libmednahawk/src/qtrecord.h | 116 + libmednahawk/src/resampler/Makefile.am.inc | 1 + libmednahawk/src/resampler/arch.h | 239 + libmednahawk/src/resampler/fixed_generic.h | 106 + libmednahawk/src/resampler/resample.c | 1158 + libmednahawk/src/resampler/resample_sse.h | 128 + libmednahawk/src/resampler/resampler.h | 349 + libmednahawk/src/resampler/stack_alloc.h | 115 + libmednahawk/src/settings-common.h | 76 + libmednahawk/src/settings-driver.h | 16 + libmednahawk/src/settings.cpp | 798 + libmednahawk/src/settings.h | 22 + libmednahawk/src/sexyal/COPYING | 22 + libmednahawk/src/sexyal/Makefile.am | 30 + libmednahawk/src/sexyal/Makefile.in | 649 + libmednahawk/src/sexyal/README | 15 + libmednahawk/src/sexyal/convert.cpp | 190 + libmednahawk/src/sexyal/convert.h | 2 + libmednahawk/src/sexyal/drivers/alsa.cpp | 524 + libmednahawk/src/sexyal/drivers/dsound.cpp | 352 + libmednahawk/src/sexyal/drivers/dummy.cpp | 203 + libmednahawk/src/sexyal/drivers/jack.cpp | 449 + libmednahawk/src/sexyal/drivers/oss.cpp | 421 + libmednahawk/src/sexyal/drivers/sdl.cpp | 406 + libmednahawk/src/sexyal/sexyal.cpp | 380 + libmednahawk/src/sexyal/sexyal.h | 183 + libmednahawk/src/sms/Makefile.am | 10 + libmednahawk/src/sms/Makefile.in | 609 + libmednahawk/src/sms/cart.cpp | 284 + libmednahawk/src/sms/cart.h | 16 + libmednahawk/src/sms/docs/changelog | 108 + libmednahawk/src/sms/docs/compatability.txt | 14 + libmednahawk/src/sms/docs/license | 340 + libmednahawk/src/sms/docs/porting.txt | 454 + libmednahawk/src/sms/docs/readme.txt | 310 + libmednahawk/src/sms/hvc.inc | 158 + libmednahawk/src/sms/memz80.cpp | 353 + libmednahawk/src/sms/memz80.h | 27 + libmednahawk/src/sms/pio.cpp | 289 + libmednahawk/src/sms/pio.h | 60 + libmednahawk/src/sms/render.cpp | 569 + libmednahawk/src/sms/render.h | 38 + libmednahawk/src/sms/romdb.cpp | 41 + libmednahawk/src/sms/romdb.h | 20 + libmednahawk/src/sms/shared.h | 18 + libmednahawk/src/sms/sms.cpp | 117 + libmednahawk/src/sms/sms.h | 99 + libmednahawk/src/sms/sound.cpp | 213 + libmednahawk/src/sms/sound.h | 22 + libmednahawk/src/sms/system.cpp | 496 + libmednahawk/src/sms/system.h | 68 + libmednahawk/src/sms/tms.cpp | 521 + libmednahawk/src/sms/tms.h | 24 + libmednahawk/src/sms/vdp.cpp | 656 + libmednahawk/src/sms/vdp.h | 85 + libmednahawk/src/snes/Makefile.am | 80 + libmednahawk/src/snes/Makefile.in | 1096 + libmednahawk/src/snes/VERSION.BSNES | 1 + libmednahawk/src/snes/interface.cpp | 1153 + libmednahawk/src/snes/src/Makefile | 227 + libmednahawk/src/snes/src/base.hpp | 46 + .../src/snes/src/cartridge/cartridge.cpp | 133 + .../src/snes/src/cartridge/cartridge.hpp | 116 + .../src/snes/src/cartridge/gameboyheader.cpp | 22 + .../src/snes/src/cartridge/header.cpp | 321 + .../src/snes/src/cartridge/serialization.cpp | 37 + libmednahawk/src/snes/src/cc.bat | 3 + .../src/snes/src/cheat/cheat-inline.hpp | 2 + libmednahawk/src/snes/src/cheat/cheat.cpp | 196 + libmednahawk/src/snes/src/cheat/cheat.hpp | 35 + libmednahawk/src/snes/src/chip/21fx/21fx.cpp | 195 + libmednahawk/src/snes/src/chip/21fx/21fx.hpp | 44 + .../src/snes/src/chip/21fx/serialization.cpp | 31 + libmednahawk/src/snes/src/chip/bsx/bsx.cpp | 10 + libmednahawk/src/snes/src/chip/bsx/bsx.hpp | 71 + .../src/snes/src/chip/bsx/bsx_base.cpp | 140 + .../src/snes/src/chip/bsx/bsx_cart.cpp | 97 + .../src/snes/src/chip/bsx/bsx_flash.cpp | 119 + libmednahawk/src/snes/src/chip/chip.hpp | 17 + libmednahawk/src/snes/src/chip/cx4/cx4.cpp | 210 + libmednahawk/src/snes/src/chip/cx4/cx4.hpp | 95 + libmednahawk/src/snes/src/chip/cx4/data.cpp | 187 + .../src/snes/src/chip/cx4/functions.cpp | 251 + libmednahawk/src/snes/src/chip/cx4/oam.cpp | 228 + .../src/snes/src/chip/cx4/opcodes.cpp | 229 + .../src/snes/src/chip/cx4/serialization.cpp | 39 + libmednahawk/src/snes/src/chip/dsp1/dsp1.cpp | 83 + libmednahawk/src/snes/src/chip/dsp1/dsp1.hpp | 20 + .../src/snes/src/chip/dsp1/dsp1emu.cpp | 1625 + .../src/snes/src/chip/dsp1/dsp1emu.hpp | 129 + .../src/snes/src/chip/dsp1/serialization.cpp | 56 + libmednahawk/src/snes/src/chip/dsp2/dsp2.cpp | 149 + libmednahawk/src/snes/src/chip/dsp2/dsp2.hpp | 45 + .../src/snes/src/chip/dsp2/opcodes.cpp | 177 + .../src/snes/src/chip/dsp2/serialization.cpp | 26 + libmednahawk/src/snes/src/chip/dsp3/dsp3.cpp | 42 + libmednahawk/src/snes/src/chip/dsp3/dsp3.hpp | 12 + libmednahawk/src/snes/src/chip/dsp3/dsp3emu.c | 1146 + libmednahawk/src/snes/src/chip/dsp4/dsp4.cpp | 62 + libmednahawk/src/snes/src/chip/dsp4/dsp4.hpp | 12 + libmednahawk/src/snes/src/chip/dsp4/dsp4emu.c | 2150 + libmednahawk/src/snes/src/chip/dsp4/dsp4emu.h | 108 + libmednahawk/src/snes/src/chip/obc1/obc1.cpp | 84 + libmednahawk/src/snes/src/chip/obc1/obc1.hpp | 26 + .../src/snes/src/chip/obc1/serialization.cpp | 9 + .../src/snes/src/chip/sa1/bus/bus.cpp | 243 + .../src/snes/src/chip/sa1/bus/bus.hpp | 56 + .../src/snes/src/chip/sa1/dma/dma.cpp | 139 + .../src/snes/src/chip/sa1/dma/dma.hpp | 11 + .../src/snes/src/chip/sa1/memory/memory.cpp | 24 + .../src/snes/src/chip/sa1/memory/memory.hpp | 5 + .../src/snes/src/chip/sa1/mmio/mmio.cpp | 633 + .../src/snes/src/chip/sa1/mmio/mmio.hpp | 256 + libmednahawk/src/snes/src/chip/sa1/sa1.cpp | 327 + libmednahawk/src/snes/src/chip/sa1/sa1.hpp | 38 + .../src/snes/src/chip/sa1/serialization.cpp | 150 + libmednahawk/src/snes/src/chip/sdd1/sdd1.cpp | 161 + libmednahawk/src/snes/src/chip/sdd1/sdd1.hpp | 41 + .../src/snes/src/chip/sdd1/sdd1emu.cpp | 452 + .../src/snes/src/chip/sdd1/sdd1emu.hpp | 164 + .../src/snes/src/chip/sdd1/serialization.cpp | 19 + .../src/snes/src/chip/spc7110/decomp.cpp | 511 + .../src/snes/src/chip/spc7110/decomp.hpp | 46 + .../snes/src/chip/spc7110/serialization.cpp | 81 + .../src/snes/src/chip/spc7110/spc7110.cpp | 677 + .../src/snes/src/chip/spc7110/spc7110.hpp | 136 + .../src/snes/src/chip/srtc/serialization.cpp | 8 + libmednahawk/src/snes/src/chip/srtc/srtc.cpp | 233 + libmednahawk/src/snes/src/chip/srtc/srtc.hpp | 24 + .../src/snes/src/chip/st010/serialization.cpp | 7 + .../src/snes/src/chip/st010/st010.cpp | 95 + .../src/snes/src/chip/st010/st010.hpp | 44 + .../src/snes/src/chip/st010/st010_data.hpp | 126 + .../src/snes/src/chip/st010/st010_op.cpp | 261 + .../src/snes/src/chip/st011/st011.cpp | 20 + .../src/snes/src/chip/st011/st011.hpp | 9 + .../src/snes/src/chip/st018/st018.cpp | 124 + .../src/snes/src/chip/st018/st018.hpp | 51 + .../src/snes/src/chip/superfx/bus/bus.cpp | 106 + .../src/snes/src/chip/superfx/bus/bus.hpp | 34 + .../src/snes/src/chip/superfx/core/core.cpp | 107 + .../src/snes/src/chip/superfx/core/core.hpp | 92 + .../src/chip/superfx/core/opcode_table.cpp | 270 + .../snes/src/chip/superfx/core/opcodes.cpp | 661 + .../snes/src/chip/superfx/core/registers.hpp | 175 + .../snes/src/chip/superfx/disasm/disasm.cpp | 279 + .../snes/src/chip/superfx/disasm/disasm.hpp | 5 + .../snes/src/chip/superfx/memory/memory.cpp | 71 + .../snes/src/chip/superfx/memory/memory.hpp | 9 + .../src/snes/src/chip/superfx/mmio/mmio.cpp | 118 + .../src/snes/src/chip/superfx/mmio/mmio.hpp | 2 + .../snes/src/chip/superfx/serialization.cpp | 94 + .../src/snes/src/chip/superfx/superfx.cpp | 79 + .../src/snes/src/chip/superfx/superfx.hpp | 26 + .../snes/src/chip/superfx/timing/timing.cpp | 97 + .../snes/src/chip/superfx/timing/timing.hpp | 19 + .../src/chip/supergameboy/supergameboy.cpp | 140 + .../src/chip/supergameboy/supergameboy.hpp | 41 + libmednahawk/src/snes/src/clean.bat | 1 + .../src/snes/src/cpu/core/algorithms.cpp | 369 + libmednahawk/src/snes/src/cpu/core/core.cpp | 74 + libmednahawk/src/snes/src/cpu/core/core.hpp | 219 + .../cpu/core/disassembler/disassembler.cpp | 483 + .../cpu/core/disassembler/disassembler.hpp | 30 + libmednahawk/src/snes/src/cpu/core/memory.hpp | 77 + .../src/snes/src/cpu/core/opcode_misc.cpp | 352 + .../src/snes/src/cpu/core/opcode_pc.cpp | 181 + .../src/snes/src/cpu/core/opcode_read.cpp | 279 + .../src/snes/src/cpu/core/opcode_rmw.cpp | 169 + .../src/snes/src/cpu/core/opcode_write.cpp | 199 + .../src/snes/src/cpu/core/registers.hpp | 81 + .../src/snes/src/cpu/core/serialization.cpp | 36 + libmednahawk/src/snes/src/cpu/core/table.cpp | 312 + .../src/snes/src/cpu/cpu-debugger.cpp | 59 + .../src/snes/src/cpu/cpu-debugger.hpp | 42 + libmednahawk/src/snes/src/cpu/cpu.cpp | 29 + libmednahawk/src/snes/src/cpu/cpu.hpp | 27 + .../snes/src/cpu/scpu/debugger/debugger.cpp | 88 + .../snes/src/cpu/scpu/debugger/debugger.hpp | 64 + .../src/snes/src/cpu/scpu/dma/dma.cpp | 272 + .../src/snes/src/cpu/scpu/dma/dma.hpp | 71 + .../src/snes/src/cpu/scpu/memory/memory.cpp | 35 + .../src/snes/src/cpu/scpu/memory/memory.hpp | 16 + .../src/snes/src/cpu/scpu/mmio/mmio.cpp | 537 + .../src/snes/src/cpu/scpu/mmio/mmio.hpp | 71 + libmednahawk/src/snes/src/cpu/scpu/scpu.cpp | 113 + libmednahawk/src/snes/src/cpu/scpu/scpu.hpp | 106 + .../src/snes/src/cpu/scpu/serialization.cpp | 105 + .../src/snes/src/cpu/scpu/timing/event.cpp | 35 + .../src/snes/src/cpu/scpu/timing/irq.cpp | 107 + .../src/snes/src/cpu/scpu/timing/joypad.cpp | 28 + .../src/snes/src/cpu/scpu/timing/timing.cpp | 172 + .../src/snes/src/cpu/scpu/timing/timing.hpp | 40 + libmednahawk/src/snes/src/data/bsnes.Manifest | 9 + libmednahawk/src/snes/src/data/bsnes.desktop | 8 + libmednahawk/src/snes/src/data/bsnes.ico | Bin 0 -> 22071 bytes libmednahawk/src/snes/src/data/bsnes.png | Bin 0 -> 1368 bytes .../src/snes/src/data/documentation.html | 81 + .../icons-16x16/accessories-text-editor.png | Bin 0 -> 574 bytes .../icons-16x16/applications-multimedia.png | Bin 0 -> 592 bytes .../src/data/icons-16x16/appointment-new.png | Bin 0 -> 897 bytes .../data/icons-16x16/audio-volume-high.png | Bin 0 -> 685 bytes .../src/data/icons-16x16/document-open.png | Bin 0 -> 672 bytes .../snes/src/data/icons-16x16/folder-new.png | Bin 0 -> 635 bytes .../src/snes/src/data/icons-16x16/folder.png | Bin 0 -> 581 bytes .../src/data/icons-16x16/help-browser.png | Bin 0 -> 932 bytes .../src/data/icons-16x16/image-x-generic.png | Bin 0 -> 558 bytes .../src/data/icons-16x16/input-gaming.png | Bin 0 -> 812 bytes .../src/data/icons-16x16/item-check-off.png | Bin 0 -> 209 bytes .../src/data/icons-16x16/item-check-on.png | Bin 0 -> 266 bytes .../src/data/icons-16x16/item-radio-off.png | Bin 0 -> 565 bytes .../src/data/icons-16x16/item-radio-on.png | Bin 0 -> 647 bytes .../data/icons-16x16/media-playback-start.png | Bin 0 -> 660 bytes .../data/icons-16x16/media-playback-stop.png | Bin 0 -> 429 bytes .../src/data/icons-16x16/media-record.png | Bin 0 -> 653 bytes .../data/icons-16x16/preferences-desktop.png | Bin 0 -> 440 bytes .../data/icons-16x16/preferences-system.png | Bin 0 -> 611 bytes .../src/data/icons-16x16/process-stop.png | Bin 0 -> 820 bytes .../data/icons-16x16/system-file-manager.png | Bin 0 -> 378 bytes .../src/data/icons-16x16/system-search.png | Bin 0 -> 935 bytes .../src/data/icons-16x16/text-x-generic.png | Bin 0 -> 333 bytes .../data/icons-16x16/utilities-terminal.png | Bin 0 -> 668 bytes .../src/data/icons-16x16/video-display.png | Bin 0 -> 662 bytes .../src/data/icons-16x16/view-refresh.png | Bin 0 -> 912 bytes libmednahawk/src/snes/src/data/license.html | 77 + libmednahawk/src/snes/src/data/logo.png | Bin 0 -> 16733 bytes libmednahawk/src/snes/src/dsp/adsp/adsp.cpp | 595 + libmednahawk/src/snes/src/dsp/adsp/adsp.hpp | 174 + .../src/snes/src/dsp/adsp/adsp_tables.cpp | 77 + libmednahawk/src/snes/src/dsp/dsp.hpp | 12 + libmednahawk/src/snes/src/dsp/sdsp/brr.cpp | 62 + .../src/snes/src/dsp/sdsp/counter.cpp | 52 + .../snes/src/dsp/sdsp/debugger/debugger.cpp | 3 + .../snes/src/dsp/sdsp/debugger/debugger.hpp | 3 + libmednahawk/src/snes/src/dsp/sdsp/echo.cpp | 135 + .../src/snes/src/dsp/sdsp/envelope.cpp | 62 + .../src/snes/src/dsp/sdsp/gaussian.cpp | 54 + libmednahawk/src/snes/src/dsp/sdsp/misc.cpp | 35 + libmednahawk/src/snes/src/dsp/sdsp/sdsp.cpp | 338 + libmednahawk/src/snes/src/dsp/sdsp/sdsp.hpp | 176 + .../src/snes/src/dsp/sdsp/serialization.cpp | 68 + libmednahawk/src/snes/src/dsp/sdsp/voice.cpp | 174 + libmednahawk/src/snes/src/interface.hpp | 39 + libmednahawk/src/snes/src/lib/libco/amd64.c | 104 + .../libco/blargg_libco_ppc64-5/benchmark.c | 123 + .../blargg_libco_ppc64-5/benchmark_impl.c | 5 + .../libco/blargg_libco_ppc64-5/libco/libco.c | 23 + .../libco/blargg_libco_ppc64-5/libco/libco.h | 34 + .../libco/blargg_libco_ppc64-5/libco/ppc.c | 407 + .../src/lib/libco/blargg_libco_ppc64-5/ppc.S | 265 + .../lib/libco/blargg_libco_ppc64-5/ppc_regs.S | 329 + .../lib/libco/blargg_libco_ppc64-5/ppc_regs.h | 32 + .../lib/libco/blargg_libco_ppc64-5/readme.txt | 34 + .../lib/libco/blargg_libco_ppc64-5/run_tests | 41 + .../libco/blargg_libco_ppc64-5/run_tests.txt | 106 + .../libco/blargg_libco_ppc64-5/test_libco.c | 134 + .../libco/blargg_libco_ppc64-5/test_regs.c | 274 + .../libco/blargg_libco_ppc64-5/test_threads.c | 188 + .../lib/libco/blargg_libco_ppc64-5/testing.h | 36 + libmednahawk/src/snes/src/lib/libco/fiber.c | 51 + libmednahawk/src/snes/src/lib/libco/libco.c | 23 + libmednahawk/src/snes/src/lib/libco/libco.h | 34 + libmednahawk/src/snes/src/lib/libco/ppc-elf.c | 325 + libmednahawk/src/snes/src/lib/libco/ppc.c | 407 + libmednahawk/src/snes/src/lib/libco/ppc.s | 478 + libmednahawk/src/snes/src/lib/libco/ppc64.s | 513 + libmednahawk/src/snes/src/lib/libco/sjlj.c | 102 + .../src/snes/src/lib/libco/ucontext.c | 67 + libmednahawk/src/snes/src/lib/libco/x86.c | 93 + libmednahawk/src/snes/src/lib/nall/Makefile | 109 + .../src/snes/src/lib/nall/Makefile-qt | 55 + .../src/snes/src/lib/nall/algorithm.hpp | 23 + libmednahawk/src/snes/src/lib/nall/any.hpp | 74 + libmednahawk/src/snes/src/lib/nall/array.hpp | 95 + libmednahawk/src/snes/src/lib/nall/base64.hpp | 90 + libmednahawk/src/snes/src/lib/nall/bit.hpp | 51 + libmednahawk/src/snes/src/lib/nall/config.hpp | 124 + libmednahawk/src/snes/src/lib/nall/crc32.hpp | 66 + libmednahawk/src/snes/src/lib/nall/detect.hpp | 30 + .../src/snes/src/lib/nall/dictionary.hpp | 73 + libmednahawk/src/snes/src/lib/nall/dl.hpp | 116 + libmednahawk/src/snes/src/lib/nall/endian.hpp | 38 + libmednahawk/src/snes/src/lib/nall/file.hpp | 256 + .../src/snes/src/lib/nall/filemap.hpp | 190 + .../src/snes/src/lib/nall/function.hpp | 190 + libmednahawk/src/snes/src/lib/nall/input.hpp | 386 + libmednahawk/src/snes/src/lib/nall/lzss.hpp | 81 + .../src/snes/src/lib/nall/moduloarray.hpp | 40 + .../src/snes/src/lib/nall/platform.hpp | 77 + .../src/snes/src/lib/nall/priorityqueue.hpp | 106 + .../src/snes/src/lib/nall/property.hpp | 91 + libmednahawk/src/snes/src/lib/nall/serial.hpp | 80 + .../src/snes/src/lib/nall/serializer.hpp | 126 + libmednahawk/src/snes/src/lib/nall/sha256.hpp | 143 + libmednahawk/src/snes/src/lib/nall/sort.hpp | 62 + libmednahawk/src/snes/src/lib/nall/static.hpp | 17 + libmednahawk/src/snes/src/lib/nall/stdint.hpp | 44 + libmednahawk/src/snes/src/lib/nall/string.hpp | 18 + .../src/snes/src/lib/nall/string/base.hpp | 122 + .../src/snes/src/lib/nall/string/cast.hpp | 30 + .../src/snes/src/lib/nall/string/compare.hpp | 100 + .../src/snes/src/lib/nall/string/convert.hpp | 285 + .../src/snes/src/lib/nall/string/core.hpp | 118 + .../src/snes/src/lib/nall/string/filename.hpp | 60 + .../src/snes/src/lib/nall/string/match.hpp | 72 + .../src/snes/src/lib/nall/string/math.hpp | 160 + .../src/snes/src/lib/nall/string/replace.hpp | 103 + .../src/snes/src/lib/nall/string/split.hpp | 56 + .../src/snes/src/lib/nall/string/strl.hpp | 48 + .../src/snes/src/lib/nall/string/trim.hpp | 50 + .../src/snes/src/lib/nall/string/utility.hpp | 75 + libmednahawk/src/snes/src/lib/nall/traits.hpp | 97 + libmednahawk/src/snes/src/lib/nall/ups.hpp | 190 + libmednahawk/src/snes/src/lib/nall/utf8.hpp | 72 + .../src/snes/src/lib/nall/utility.hpp | 36 + libmednahawk/src/snes/src/lib/nall/varint.hpp | 92 + libmednahawk/src/snes/src/lib/nall/vector.hpp | 162 + libmednahawk/src/snes/src/lib/ruby/audio.hpp | 23 + .../src/snes/src/lib/ruby/audio/alsa.cpp | 240 + .../src/snes/src/lib/ruby/audio/ao.cpp | 94 + .../snes/src/lib/ruby/audio/directsound.cpp | 212 + .../src/snes/src/lib/ruby/audio/openal.cpp | 210 + .../src/snes/src/lib/ruby/audio/oss.cpp | 113 + .../snes/src/lib/ruby/audio/pulseaudio.cpp | 177 + .../src/lib/ruby/audio/pulseaudiosimple.cpp | 115 + libmednahawk/src/snes/src/lib/ruby/input.hpp | 22 + .../src/snes/src/lib/ruby/input/carbon.cpp | 157 + .../snes/src/lib/ruby/input/directinput.cpp | 387 + .../src/snes/src/lib/ruby/input/rawinput.cpp | 797 + .../src/snes/src/lib/ruby/input/sdl.cpp | 230 + .../src/snes/src/lib/ruby/input/x.cpp | 50 + .../src/snes/src/lib/ruby/input/xlibkeys.hpp | 264 + libmednahawk/src/snes/src/lib/ruby/ruby.cpp | 370 + libmednahawk/src/snes/src/lib/ruby/ruby.hpp | 109 + .../src/snes/src/lib/ruby/ruby_audio.cpp | 133 + .../src/snes/src/lib/ruby/ruby_impl.cpp | 177 + libmednahawk/src/snes/src/lib/ruby/video.hpp | 28 + .../src/snes/src/lib/ruby/video/direct3d.cpp | 388 + .../snes/src/lib/ruby/video/directdraw.cpp | 186 + .../src/snes/src/lib/ruby/video/gdi.cpp | 100 + .../src/snes/src/lib/ruby/video/glx.cpp | 231 + .../src/snes/src/lib/ruby/video/opengl.hpp | 225 + .../src/snes/src/lib/ruby/video/qtopengl.cpp | 174 + .../src/snes/src/lib/ruby/video/qtraster.cpp | 126 + .../src/snes/src/lib/ruby/video/sdl.cpp | 140 + .../src/snes/src/lib/ruby/video/wgl.cpp | 154 + .../src/snes/src/lib/ruby/video/xv.cpp | 498 + libmednahawk/src/snes/src/lib/sync.bat | 7 + libmednahawk/src/snes/src/lib/sync.sh | 10 + .../src/snes/src/memory/memory-inline.hpp | 75 + libmednahawk/src/snes/src/memory/memory.cpp | 112 + libmednahawk/src/snes/src/memory/memory.hpp | 104 + .../src/snes/src/memory/smemory/generic.cpp | 112 + .../snes/src/memory/smemory/serialization.cpp | 11 + .../src/snes/src/memory/smemory/smemory.cpp | 38 + .../src/snes/src/memory/smemory/smemory.hpp | 20 + .../src/snes/src/memory/smemory/system.cpp | 18 + libmednahawk/src/snes/src/ppu/bppu/bppu.cpp | 378 + libmednahawk/src/snes/src/ppu/bppu/bppu.hpp | 65 + .../snes/src/ppu/bppu/debugger/debugger.cpp | 290 + .../snes/src/ppu/bppu/debugger/debugger.hpp | 272 + .../src/snes/src/ppu/bppu/debugger/render.cpp | 194 + .../src/snes/src/ppu/bppu/memory/memory.cpp | 173 + .../src/snes/src/ppu/bppu/memory/memory.hpp | 10 + .../src/snes/src/ppu/bppu/mmio/mmio.cpp | 671 + .../src/snes/src/ppu/bppu/mmio/mmio.hpp | 198 + .../src/snes/src/ppu/bppu/render/addsub.cpp | 25 + .../src/snes/src/ppu/bppu/render/bg.cpp | 205 + .../src/snes/src/ppu/bppu/render/cache.cpp | 147 + .../src/snes/src/ppu/bppu/render/line.cpp | 139 + .../src/snes/src/ppu/bppu/render/mode7.cpp | 139 + .../src/snes/src/ppu/bppu/render/oam.cpp | 217 + .../src/snes/src/ppu/bppu/render/render.cpp | 129 + .../src/snes/src/ppu/bppu/render/render.hpp | 97 + .../src/snes/src/ppu/bppu/render/windows.cpp | 70 + .../src/snes/src/ppu/bppu/serialization.cpp | 183 + .../src/snes/src/ppu/ppu-debugger.cpp | 305 + .../src/snes/src/ppu/ppu-debugger.hpp | 243 + libmednahawk/src/snes/src/ppu/ppu-inline.hpp | 85 + libmednahawk/src/snes/src/ppu/ppu.cpp | 56 + libmednahawk/src/snes/src/ppu/ppu.hpp | 94 + .../src/snes/src/ppu/serialization.cpp | 28 + .../src/snes/src/smp/core/algorithms.cpp | 126 + libmednahawk/src/snes/src/smp/core/core.cpp | 31 + libmednahawk/src/snes/src/smp/core/core.hpp | 118 + .../smp/core/disassembler/disassembler.cpp | 304 + .../smp/core/disassembler/disassembler.hpp | 2 + libmednahawk/src/snes/src/smp/core/memory.hpp | 27 + .../src/snes/src/smp/core/opcode_misc.cpp | 148 + .../src/snes/src/smp/core/opcode_mov.cpp | 200 + .../src/snes/src/smp/core/opcode_pc.cpp | 152 + .../src/snes/src/smp/core/opcode_read.cpp | 154 + .../src/snes/src/smp/core/opcode_rmw.cpp | 58 + .../src/snes/src/smp/core/registers.hpp | 44 + .../src/snes/src/smp/core/serialization.cpp | 26 + libmednahawk/src/snes/src/smp/core/table.cpp | 264 + libmednahawk/src/snes/src/smp/smp.cpp | 47 + libmednahawk/src/snes/src/smp/smp.hpp | 19 + .../snes/src/smp/ssmp/debugger/debugger.cpp | 44 + .../snes/src/smp/ssmp/debugger/debugger.hpp | 19 + .../src/snes/src/smp/ssmp/memory/memory.cpp | 226 + .../src/snes/src/smp/ssmp/memory/memory.hpp | 12 + .../src/snes/src/smp/ssmp/serialization.cpp | 38 + libmednahawk/src/snes/src/smp/ssmp/ssmp.cpp | 97 + libmednahawk/src/snes/src/smp/ssmp/ssmp.hpp | 49 + .../src/snes/src/smp/ssmp/timing/timing.cpp | 28 + .../src/snes/src/smp/ssmp/timing/timing.hpp | 34 + .../src/snes/src/system/audio/audio.cpp | 90 + .../src/snes/src/system/audio/audio.hpp | 22 + .../src/snes/src/system/config/config.cpp | 27 + .../src/snes/src/system/config/config.hpp | 36 + .../src/snes/src/system/debugger/debugger.cpp | 107 + .../src/snes/src/system/debugger/debugger.hpp | 32 + .../src/snes/src/system/input/input.cpp | 336 + .../src/snes/src/system/input/input.hpp | 94 + .../snes/src/system/interface/interface.hpp | 7 + .../snes/src/system/scheduler/scheduler.cpp | 67 + .../snes/src/system/scheduler/scheduler.hpp | 142 + .../src/snes/src/system/serialization.cpp | 97 + libmednahawk/src/snes/src/system/system.cpp | 245 + libmednahawk/src/snes/src/system/system.hpp | 58 + .../src/snes/src/system/video/video.cpp | 105 + .../src/snes/src/system/video/video.hpp | 27 + libmednahawk/src/snes/src/ui_qt/Makefile | 48 + .../src/ui_qt/application/application.cpp | 172 + .../src/ui_qt/application/application.moc.hpp | 46 + .../src/snes/src/ui_qt/application/init.cpp | 108 + .../src/snes/src/ui_qt/application/qb.cpp | 101 + .../src/snes/src/ui_qt/application/qb.hpp | 36 + .../src/snes/src/ui_qt/base/about.cpp | 32 + .../src/snes/src/ui_qt/base/about.moc.hpp | 14 + libmednahawk/src/snes/src/ui_qt/base/base.cpp | 7 + .../src/snes/src/ui_qt/base/diskbrowser.cpp | 601 + .../snes/src/ui_qt/base/diskbrowser.moc.hpp | 117 + .../src/snes/src/ui_qt/base/htmlviewer.cpp | 21 + .../snes/src/ui_qt/base/htmlviewer.moc.hpp | 14 + .../src/snes/src/ui_qt/base/loader.cpp | 229 + .../src/snes/src/ui_qt/base/loader.moc.hpp | 47 + libmednahawk/src/snes/src/ui_qt/base/main.cpp | 636 + .../src/snes/src/ui_qt/base/main.moc.hpp | 151 + .../snes/src/ui_qt/cartridge/cartridge.cpp | 378 + .../snes/src/ui_qt/cartridge/cartridge.hpp | 38 + libmednahawk/src/snes/src/ui_qt/config.cpp | 143 + libmednahawk/src/snes/src/ui_qt/config.hpp | 98 + .../src/snes/src/ui_qt/debugger/debugger.cpp | 248 + .../snes/src/ui_qt/debugger/debugger.moc.hpp | 51 + .../src/snes/src/ui_qt/debugger/hexeditor.cpp | 120 + .../snes/src/ui_qt/debugger/hexeditor.moc.hpp | 25 + .../ui_qt/debugger/misc/debugger-options.cpp | 27 + .../debugger/misc/debugger-options.moc.hpp | 15 + .../src/ui_qt/debugger/ppu/cgram-viewer.cpp | 124 + .../ui_qt/debugger/ppu/cgram-viewer.moc.hpp | 29 + .../src/ui_qt/debugger/ppu/layer-toggle.cpp | 105 + .../ui_qt/debugger/ppu/layer-toggle.moc.hpp | 30 + .../src/ui_qt/debugger/ppu/oam-viewer.cpp | 124 + .../src/ui_qt/debugger/ppu/oam-viewer.moc.hpp | 24 + .../src/ui_qt/debugger/ppu/vram-viewer.cpp | 175 + .../ui_qt/debugger/ppu/vram-viewer.moc.hpp | 38 + .../src/ui_qt/debugger/tools/breakpoint.cpp | 78 + .../ui_qt/debugger/tools/breakpoint.moc.hpp | 30 + .../src/ui_qt/debugger/tools/disassembler.cpp | 110 + .../ui_qt/debugger/tools/disassembler.moc.hpp | 29 + .../snes/src/ui_qt/debugger/tools/memory.cpp | 162 + .../src/ui_qt/debugger/tools/memory.moc.hpp | 36 + .../src/ui_qt/debugger/tools/properties.cpp | 88 + .../ui_qt/debugger/tools/properties.moc.hpp | 37 + .../src/snes/src/ui_qt/debugger/tracer.cpp | 74 + .../snes/src/ui_qt/debugger/tracer.moc.hpp | 26 + .../src/snes/src/ui_qt/input/controller.cpp | 372 + .../src/snes/src/ui_qt/input/controller.hpp | 112 + .../src/snes/src/ui_qt/input/input.cpp | 277 + .../src/snes/src/ui_qt/input/input.hpp | 91 + .../input/userinterface-emulationspeed.cpp | 181 + .../src/ui_qt/input/userinterface-general.cpp | 68 + .../src/ui_qt/input/userinterface-states.cpp | 148 + .../src/ui_qt/input/userinterface-system.cpp | 88 + .../input/userinterface-videosettings.cpp | 115 + .../snes/src/ui_qt/input/userinterface.hpp | 5 + libmednahawk/src/snes/src/ui_qt/interface.cpp | 54 + libmednahawk/src/snes/src/ui_qt/interface.hpp | 13 + .../src/snes/src/ui_qt/link/filter.cpp | 255 + .../src/snes/src/ui_qt/link/filter.hpp | 55 + .../src/snes/src/ui_qt/link/reader.cpp | 44 + .../src/snes/src/ui_qt/link/reader.hpp | 15 + libmednahawk/src/snes/src/ui_qt/main.cpp | 39 + .../src/snes/src/ui_qt/movie/movie.cpp | 109 + .../src/snes/src/ui_qt/movie/movie.hpp | 20 + .../snes/src/ui_qt/platform/platform_osx.cpp | 17 + .../snes/src/ui_qt/platform/platform_win.cpp | 57 + .../snes/src/ui_qt/platform/platform_x.cpp | 47 + .../src/snes/src/ui_qt/resource/resource.qrc | 37 + .../src/snes/src/ui_qt/resource/resource.rc | 2 + .../src/snes/src/ui_qt/settings/advanced.cpp | 192 + .../snes/src/ui_qt/settings/advanced.moc.hpp | 58 + .../src/snes/src/ui_qt/settings/audio.cpp | 130 + .../src/snes/src/ui_qt/settings/audio.moc.hpp | 29 + .../src/snes/src/ui_qt/settings/input.cpp | 253 + .../src/snes/src/ui_qt/settings/input.moc.hpp | 33 + .../src/snes/src/ui_qt/settings/paths.cpp | 83 + .../src/snes/src/ui_qt/settings/paths.moc.hpp | 40 + .../snes/src/ui_qt/settings/pixelshader.cpp | 81 + .../src/ui_qt/settings/pixelshader.moc.hpp | 29 + .../src/snes/src/ui_qt/settings/settings.cpp | 36 + .../snes/src/ui_qt/settings/settings.moc.hpp | 13 + .../src/snes/src/ui_qt/settings/video.cpp | 133 + .../src/snes/src/ui_qt/settings/video.moc.hpp | 33 + .../src/snes/src/ui_qt/state/state.cpp | 104 + .../src/snes/src/ui_qt/state/state.hpp | 24 + .../src/snes/src/ui_qt/tools/cheateditor.cpp | 211 + .../snes/src/ui_qt/tools/cheateditor.moc.hpp | 30 + .../src/snes/src/ui_qt/tools/cheatfinder.cpp | 200 + .../snes/src/ui_qt/tools/cheatfinder.moc.hpp | 41 + .../src/snes/src/ui_qt/tools/statemanager.cpp | 280 + .../snes/src/ui_qt/tools/statemanager.moc.hpp | 40 + .../src/snes/src/ui_qt/tools/tools.cpp | 29 + .../src/snes/src/ui_qt/tools/tools.moc.hpp | 13 + libmednahawk/src/snes/src/ui_qt/ui-base.hpp | 92 + .../snes/src/ui_qt/utility/system-state.cpp | 102 + .../src/snes/src/ui_qt/utility/utility.cpp | 146 + .../src/snes/src/ui_qt/utility/utility.hpp | 39 + .../src/snes/src/ui_qt/utility/window.cpp | 158 + libmednahawk/src/sound.h | 24 + libmednahawk/src/sound/Blip_Buffer.cpp | 455 + libmednahawk/src/sound/Fir_Resampler.cpp | 199 + libmednahawk/src/sound/Makefile.am | 7 + libmednahawk/src/sound/Makefile.in | 601 + libmednahawk/src/sound/Stereo_Buffer.cpp | 188 + libmednahawk/src/sound/WAVRecord.cpp | 99 + libmednahawk/src/sound/WAVRecord.h | 31 + libmednahawk/src/sound/sound.cpp | 41 + libmednahawk/src/state-common.h | 18 + libmednahawk/src/state-driver.h | 19 + libmednahawk/src/state.cpp | 1277 + libmednahawk/src/state.h | 147 + libmednahawk/src/string/ConvertUTF.cpp | 560 + libmednahawk/src/string/ConvertUTF.h | 149 + libmednahawk/src/string/Makefile.am.inc | 2 + libmednahawk/src/string/escape.cpp | 157 + libmednahawk/src/string/escape.h | 7 + libmednahawk/src/string/world_strtod.c | 207 + libmednahawk/src/string/world_strtod.h | 14 + libmednahawk/src/tests.cpp | 657 + libmednahawk/src/tests.h | 7 + libmednahawk/src/tremor/!!!VERSION | 5 + libmednahawk/src/tremor/CHANGELOG | 19 + libmednahawk/src/tremor/COPYING | 28 + libmednahawk/src/tremor/Makefile.am | 15 + libmednahawk/src/tremor/Makefile.in | 623 + libmednahawk/src/tremor/README | 46 + libmednahawk/src/tremor/Version_script.in | 62 + libmednahawk/src/tremor/asm_arm.h | 245 + libmednahawk/src/tremor/backends.h | 131 + libmednahawk/src/tremor/bitwise.c | 857 + libmednahawk/src/tremor/block.c | 497 + libmednahawk/src/tremor/block.h | 24 + libmednahawk/src/tremor/codebook.c | 391 + libmednahawk/src/tremor/codebook.h | 101 + libmednahawk/src/tremor/codec_internal.h | 92 + libmednahawk/src/tremor/config_types.h | 12 + libmednahawk/src/tremor/configure.in | 146 + libmednahawk/src/tremor/floor0.c | 439 + libmednahawk/src/tremor/floor1.c | 460 + libmednahawk/src/tremor/framing.c | 2093 + libmednahawk/src/tremor/info.c | 390 + libmednahawk/src/tremor/iseeking_example.c | 265 + libmednahawk/src/tremor/ivorbiscodec.h | 204 + libmednahawk/src/tremor/ivorbisfile.h | 130 + libmednahawk/src/tremor/ivorbisfile_example.c | 91 + libmednahawk/src/tremor/lsp_lookup.h | 136 + libmednahawk/src/tremor/mapping0.c | 328 + libmednahawk/src/tremor/mdct.c | 510 + libmednahawk/src/tremor/mdct.h | 52 + libmednahawk/src/tremor/mdct_lookup.h | 540 + libmednahawk/src/tremor/misc.h | 252 + libmednahawk/src/tremor/ogg.h | 210 + libmednahawk/src/tremor/os.h | 64 + libmednahawk/src/tremor/os_types.h | 147 + libmednahawk/src/tremor/registry.c | 50 + libmednahawk/src/tremor/registry.h | 40 + libmednahawk/src/tremor/res012.c | 374 + libmednahawk/src/tremor/sharedbook.c | 447 + libmednahawk/src/tremor/synthesis.c | 131 + libmednahawk/src/tremor/vorbisfile.c | 1884 + libmednahawk/src/tremor/vorbisidec.pc.in | 14 + libmednahawk/src/tremor/window.c | 83 + libmednahawk/src/tremor/window.h | 27 + libmednahawk/src/tremor/window_lookup.h | 2084 + libmednahawk/src/trio/CHANGES | 785 + libmednahawk/src/trio/Makefile.am | 6 + libmednahawk/src/trio/Makefile.in | 599 + libmednahawk/src/trio/trio.c | 7766 ++++ libmednahawk/src/trio/trionan.c | 1257 + libmednahawk/src/trio/triostr.c | 2385 ++ libmednahawk/src/types.h | 173 + libmednahawk/src/vb/Makefile.am | 10 + libmednahawk/src/vb/Makefile.in | 607 + libmednahawk/src/vb/debug.cpp | 702 + libmednahawk/src/vb/debug.h | 33 + libmednahawk/src/vb/input.cpp | 228 + libmednahawk/src/vb/input.h | 29 + libmednahawk/src/vb/timer.cpp | 254 + libmednahawk/src/vb/timer.h | 30 + libmednahawk/src/vb/vb.cpp | 1123 + libmednahawk/src/vb/vb.h | 61 + libmednahawk/src/vb/vip.cpp | 1683 + libmednahawk/src/vb/vip.h | 71 + libmednahawk/src/vb/vip_draw.inc | 474 + libmednahawk/src/vb/vsu.cpp | 520 + libmednahawk/src/vb/vsu.h | 81 + libmednahawk/src/video-driver.h | 9 + libmednahawk/src/video.h | 18 + libmednahawk/src/video/Deinterlacer.cpp | 109 + libmednahawk/src/video/Deinterlacer.h | 25 + libmednahawk/src/video/Makefile.am.inc | 1 + libmednahawk/src/video/font-data-12x13.c | 43 + libmednahawk/src/video/font-data-18x18.c | 43 + libmednahawk/src/video/font-data.cpp | 46 + libmednahawk/src/video/font-data.h | 63 + libmednahawk/src/video/font12x13.h | 19204 +++++++++ libmednahawk/src/video/font18x18.h | 27990 +++++++++++++ libmednahawk/src/video/font4x5.h | 195 + libmednahawk/src/video/font5x7.h | 1848 + libmednahawk/src/video/font6x13.h | 4430 +++ libmednahawk/src/video/font9x18.h | 4752 +++ libmednahawk/src/video/png.cpp | 189 + libmednahawk/src/video/png.h | 31 + libmednahawk/src/video/primitives.cpp | 79 + libmednahawk/src/video/primitives.h | 8 + libmednahawk/src/video/resize.cpp | 156 + libmednahawk/src/video/resize.h | 2 + libmednahawk/src/video/selblur.cpp | 121 + libmednahawk/src/video/selblur.h | 29 + libmednahawk/src/video/surface.cpp | 285 + libmednahawk/src/video/surface.h | 207 + libmednahawk/src/video/tblur.cpp | 167 + libmednahawk/src/video/tblur.h | 11 + libmednahawk/src/video/text.cpp | 354 + libmednahawk/src/video/text.h | 31 + libmednahawk/src/video/video-common.h | 7 + libmednahawk/src/video/video.cpp | 101 + libmednahawk/src/wswan/Makefile.am | 13 + libmednahawk/src/wswan/Makefile.in | 645 + libmednahawk/src/wswan/debug.cpp | 453 + libmednahawk/src/wswan/debug.h | 40 + libmednahawk/src/wswan/dis/dis_decode.cpp | 256 + libmednahawk/src/wswan/dis/dis_groups.cpp | 304 + libmednahawk/src/wswan/dis/dis_tables.h | 148 + libmednahawk/src/wswan/dis/dis_tables.inc | 667 + libmednahawk/src/wswan/dis/disasm.h | 380 + libmednahawk/src/wswan/dis/opcodes.inc | 389 + libmednahawk/src/wswan/dis/resolve.cpp | 227 + libmednahawk/src/wswan/dis/syntax.cpp | 187 + libmednahawk/src/wswan/eeprom.cpp | 231 + libmednahawk/src/wswan/eeprom.h | 15 + libmednahawk/src/wswan/gfx.cpp | 991 + libmednahawk/src/wswan/gfx.h | 49 + libmednahawk/src/wswan/interrupt.cpp | 168 + libmednahawk/src/wswan/interrupt.h | 43 + libmednahawk/src/wswan/main.cpp | 568 + libmednahawk/src/wswan/memory.cpp | 626 + libmednahawk/src/wswan/memory.h | 38 + libmednahawk/src/wswan/rtc.cpp | 115 + libmednahawk/src/wswan/rtc.h | 15 + libmednahawk/src/wswan/sound.cpp | 444 + libmednahawk/src/wswan/sound.h | 22 + libmednahawk/src/wswan/start.inc | 269 + libmednahawk/src/wswan/tcache.cpp | 308 + libmednahawk/src/wswan/v30mz-ea.inc | 60 + libmednahawk/src/wswan/v30mz-modrm.inc | 104 + libmednahawk/src/wswan/v30mz-private.h | 255 + libmednahawk/src/wswan/v30mz.cpp | 1153 + libmednahawk/src/wswan/v30mz.h | 35 + libmednahawk/src/wswan/wstech24.txt | 757 + libmednahawk/src/wswan/wswan.h | 34 + libmednahawk/zlib123/README | 125 + libmednahawk/zlib123/zconf.h | 332 + libmednahawk/zlib123/zlib-1.2.3_from_tastools | 0 libmednahawk/zlib123/zlib-vc8-Win32.lib | Bin 0 -> 103944 bytes libmednahawk/zlib123/zlib.h | 1357 + libmednahawk/zlib123/zutil.h | 269 + 1775 files changed, 728577 insertions(+), 50 deletions(-) create mode 100644 BizHawk.Emulation/Consoles/PSX/LibMednahawkDll.cs create mode 100644 BizHawk.Emulation/Consoles/PSX/Octoshock.cs create mode 100644 BizHawk.MultiClient/output/dll/libmednahawk.dll create mode 100644 BizHawk.pro.sln rename {BizHawk.Emulation/Consoles/PSX => attic}/PSX.cs (100%) create mode 100644 libmednahawk/ABOUT-NLS create mode 100644 libmednahawk/COPYING create mode 100644 libmednahawk/ChangeLog create mode 100644 libmednahawk/Makefile.am create mode 100644 libmednahawk/Makefile.in create mode 100644 libmednahawk/NEWS create mode 100644 libmednahawk/README create mode 100644 libmednahawk/TODO create mode 100644 libmednahawk/acinclude.m4 create mode 100644 libmednahawk/aclocal.m4 create mode 100644 libmednahawk/api.cpp create mode 100644 libmednahawk/autogen.sh create mode 100644 libmednahawk/compile create mode 100644 libmednahawk/config.guess create mode 100644 libmednahawk/config.h create mode 100644 libmednahawk/config.rpath create mode 100644 libmednahawk/config.sub create mode 100644 libmednahawk/configure create mode 100644 libmednahawk/configure.ac create mode 100644 libmednahawk/depcomp create mode 100644 libmednahawk/dx/XInput.h create mode 100644 libmednahawk/dx/dinput.h create mode 100644 libmednahawk/dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib create mode 100644 libmednahawk/dx/dsound.h create mode 100644 libmednahawk/include/Fir_Resampler.h create mode 100644 libmednahawk/include/blargg_common.h create mode 100644 libmednahawk/include/blargg_config.h create mode 100644 libmednahawk/include/blargg_endian.h create mode 100644 libmednahawk/include/blargg_source.h create mode 100644 libmednahawk/include/blip/Blip_Buffer.h create mode 100644 libmednahawk/include/blip/Stereo_Buffer.h create mode 100644 libmednahawk/include/config.h.in create mode 100644 libmednahawk/include/mpcdec/config_types.h create mode 100644 libmednahawk/include/mpcdec/decoder.h create mode 100644 libmednahawk/include/mpcdec/huffman.h create mode 100644 libmednahawk/include/mpcdec/internal.h create mode 100644 libmednahawk/include/mpcdec/math.h create mode 100644 libmednahawk/include/mpcdec/mpcdec.h create mode 100644 libmednahawk/include/mpcdec/reader.h create mode 100644 libmednahawk/include/mpcdec/requant.h create mode 100644 libmednahawk/include/mpcdec/streaminfo.h create mode 100644 libmednahawk/include/trio/CHANGES create mode 100644 libmednahawk/include/trio/trio.h create mode 100644 libmednahawk/include/trio/triodef.h create mode 100644 libmednahawk/include/trio/trionan.h create mode 100644 libmednahawk/include/trio/triop.h create mode 100644 libmednahawk/include/trio/triostr.h create mode 100644 libmednahawk/intl/ChangeLog create mode 100644 libmednahawk/intl/Makefile.in create mode 100644 libmednahawk/intl/VERSION create mode 100644 libmednahawk/intl/bindtextdom.c create mode 100644 libmednahawk/intl/config.charset create mode 100644 libmednahawk/intl/dcgettext.c create mode 100644 libmednahawk/intl/dcigettext.c create mode 100644 libmednahawk/intl/dcngettext.c create mode 100644 libmednahawk/intl/dgettext.c create mode 100644 libmednahawk/intl/dngettext.c create mode 100644 libmednahawk/intl/eval-plural.h create mode 100644 libmednahawk/intl/explodename.c create mode 100644 libmednahawk/intl/export.h create mode 100644 libmednahawk/intl/finddomain.c create mode 100644 libmednahawk/intl/gettext.c create mode 100644 libmednahawk/intl/gettextP.h create mode 100644 libmednahawk/intl/gmo.h create mode 100644 libmednahawk/intl/hash-string.c create mode 100644 libmednahawk/intl/hash-string.h create mode 100644 libmednahawk/intl/intl-compat.c create mode 100644 libmednahawk/intl/intl-exports.c create mode 100644 libmednahawk/intl/l10nflist.c create mode 100644 libmednahawk/intl/langprefs.c create mode 100644 libmednahawk/intl/libgnuintl.h.in create mode 100644 libmednahawk/intl/libintl.rc create mode 100644 libmednahawk/intl/loadinfo.h create mode 100644 libmednahawk/intl/loadmsgcat.c create mode 100644 libmednahawk/intl/localcharset.c create mode 100644 libmednahawk/intl/localcharset.h create mode 100644 libmednahawk/intl/locale.alias create mode 100644 libmednahawk/intl/localealias.c create mode 100644 libmednahawk/intl/localename.c create mode 100644 libmednahawk/intl/lock.c create mode 100644 libmednahawk/intl/lock.h create mode 100644 libmednahawk/intl/log.c create mode 100644 libmednahawk/intl/ngettext.c create mode 100644 libmednahawk/intl/os2compat.c create mode 100644 libmednahawk/intl/os2compat.h create mode 100644 libmednahawk/intl/osdep.c create mode 100644 libmednahawk/intl/plural-exp.c create mode 100644 libmednahawk/intl/plural-exp.h create mode 100644 libmednahawk/intl/plural.c create mode 100644 libmednahawk/intl/plural.y create mode 100644 libmednahawk/intl/printf-args.c create mode 100644 libmednahawk/intl/printf-args.h create mode 100644 libmednahawk/intl/printf-parse.c create mode 100644 libmednahawk/intl/printf-parse.h create mode 100644 libmednahawk/intl/printf.c create mode 100644 libmednahawk/intl/ref-add.sin create mode 100644 libmednahawk/intl/ref-del.sin create mode 100644 libmednahawk/intl/relocatable.c create mode 100644 libmednahawk/intl/relocatable.h create mode 100644 libmednahawk/intl/setlocale.c create mode 100644 libmednahawk/intl/textdomain.c create mode 100644 libmednahawk/intl/threadlib.c create mode 100644 libmednahawk/intl/tsearch.c create mode 100644 libmednahawk/intl/tsearch.h create mode 100644 libmednahawk/intl/vasnprintf.c create mode 100644 libmednahawk/intl/vasnprintf.h create mode 100644 libmednahawk/intl/vasnwprintf.h create mode 100644 libmednahawk/intl/version.c create mode 100644 libmednahawk/intl/wprintf-parse.h create mode 100644 libmednahawk/intl/xsize.h create mode 100644 libmednahawk/inttypes.h create mode 100644 libmednahawk/libmednahawk.vcxproj create mode 100644 libmednahawk/libmednahawk.vcxproj.filters create mode 100644 libmednahawk/ltmain.sh create mode 100644 libmednahawk/m4/ChangeLog create mode 100644 libmednahawk/m4/ax_cflags_gcc_option.m4 create mode 100644 libmednahawk/m4/codeset.m4 create mode 100644 libmednahawk/m4/fcntl-o.m4 create mode 100644 libmednahawk/m4/gettext.m4 create mode 100644 libmednahawk/m4/glibc2.m4 create mode 100644 libmednahawk/m4/glibc21.m4 create mode 100644 libmednahawk/m4/iconv.m4 create mode 100644 libmednahawk/m4/intdiv0.m4 create mode 100644 libmednahawk/m4/intl.m4 create mode 100644 libmednahawk/m4/intldir.m4 create mode 100644 libmednahawk/m4/intlmacosx.m4 create mode 100644 libmednahawk/m4/intmax.m4 create mode 100644 libmednahawk/m4/inttypes-h.m4 create mode 100644 libmednahawk/m4/inttypes-pri.m4 create mode 100644 libmednahawk/m4/inttypes_h.m4 create mode 100644 libmednahawk/m4/lcmessage.m4 create mode 100644 libmednahawk/m4/lib-ld.m4 create mode 100644 libmednahawk/m4/lib-link.m4 create mode 100644 libmednahawk/m4/lib-prefix.m4 create mode 100644 libmednahawk/m4/libtool.m4 create mode 100644 libmednahawk/m4/lock.m4 create mode 100644 libmednahawk/m4/longdouble.m4 create mode 100644 libmednahawk/m4/longlong.m4 create mode 100644 libmednahawk/m4/ltoptions.m4 create mode 100644 libmednahawk/m4/ltsugar.m4 create mode 100644 libmednahawk/m4/ltversion.m4 create mode 100644 libmednahawk/m4/lt~obsolete.m4 create mode 100644 libmednahawk/m4/nls.m4 create mode 100644 libmednahawk/m4/po.m4 create mode 100644 libmednahawk/m4/printf-posix.m4 create mode 100644 libmednahawk/m4/progtest.m4 create mode 100644 libmednahawk/m4/signed.m4 create mode 100644 libmednahawk/m4/size_max.m4 create mode 100644 libmednahawk/m4/stdint_h.m4 create mode 100644 libmednahawk/m4/threadlib.m4 create mode 100644 libmednahawk/m4/uintmax_t.m4 create mode 100644 libmednahawk/m4/ulonglong.m4 create mode 100644 libmednahawk/m4/visibility.m4 create mode 100644 libmednahawk/m4/wchar_t.m4 create mode 100644 libmednahawk/m4/wint_t.m4 create mode 100644 libmednahawk/m4/xsize.m4 create mode 100644 libmednahawk/missing create mode 100644 libmednahawk/netplay_stub.cpp create mode 100644 libmednahawk/po/ChangeLog create mode 100644 libmednahawk/po/LINGUAS create mode 100644 libmednahawk/po/Makefile.in.in create mode 100644 libmednahawk/po/Makevars create mode 100644 libmednahawk/po/POTFILES.in create mode 100644 libmednahawk/po/Rules-quot create mode 100644 libmednahawk/po/boldquot.sed create mode 100644 libmednahawk/po/de.gmo create mode 100644 libmednahawk/po/de.po create mode 100644 libmednahawk/po/en@boldquot.header create mode 100644 libmednahawk/po/en@quot.header create mode 100644 libmednahawk/po/es.gmo create mode 100644 libmednahawk/po/es.po create mode 100644 libmednahawk/po/insert-header.sin create mode 100644 libmednahawk/po/mednafen.pot create mode 100644 libmednahawk/po/quot.sed create mode 100644 libmednahawk/po/remove-potcdate.sin create mode 100644 libmednahawk/po/ru.gmo create mode 100644 libmednahawk/po/ru.po create mode 100644 libmednahawk/po/stamp-po create mode 100644 libmednahawk/sdl/include/SDL.h create mode 100644 libmednahawk/sdl/include/SDL_active.h create mode 100644 libmednahawk/sdl/include/SDL_audio.h create mode 100644 libmednahawk/sdl/include/SDL_byteorder.h create mode 100644 libmednahawk/sdl/include/SDL_cdrom.h create mode 100644 libmednahawk/sdl/include/SDL_config.h create mode 100644 libmednahawk/sdl/include/SDL_config.h.default create mode 100644 libmednahawk/sdl/include/SDL_config.h.in create mode 100644 libmednahawk/sdl/include/SDL_config_dreamcast.h create mode 100644 libmednahawk/sdl/include/SDL_config_macos.h create mode 100644 libmednahawk/sdl/include/SDL_config_macosx.h create mode 100644 libmednahawk/sdl/include/SDL_config_minimal.h create mode 100644 libmednahawk/sdl/include/SDL_config_nds.h create mode 100644 libmednahawk/sdl/include/SDL_config_os2.h create mode 100644 libmednahawk/sdl/include/SDL_config_symbian.h create mode 100644 libmednahawk/sdl/include/SDL_copying.h create mode 100644 libmednahawk/sdl/include/SDL_cpuinfo.h create mode 100644 libmednahawk/sdl/include/SDL_endian.h create mode 100644 libmednahawk/sdl/include/SDL_error.h create mode 100644 libmednahawk/sdl/include/SDL_events.h create mode 100644 libmednahawk/sdl/include/SDL_getenv.h create mode 100644 libmednahawk/sdl/include/SDL_joystick.h create mode 100644 libmednahawk/sdl/include/SDL_keyboard.h create mode 100644 libmednahawk/sdl/include/SDL_keysym.h create mode 100644 libmednahawk/sdl/include/SDL_loadso.h create mode 100644 libmednahawk/sdl/include/SDL_main.h create mode 100644 libmednahawk/sdl/include/SDL_mouse.h create mode 100644 libmednahawk/sdl/include/SDL_mutex.h create mode 100644 libmednahawk/sdl/include/SDL_name.h create mode 100644 libmednahawk/sdl/include/SDL_platform.h create mode 100644 libmednahawk/sdl/include/SDL_quit.h create mode 100644 libmednahawk/sdl/include/SDL_rwops.h create mode 100644 libmednahawk/sdl/include/SDL_stdinc.h create mode 100644 libmednahawk/sdl/include/SDL_syswm.h create mode 100644 libmednahawk/sdl/include/SDL_thread.h create mode 100644 libmednahawk/sdl/include/SDL_timer.h create mode 100644 libmednahawk/sdl/include/SDL_types.h create mode 100644 libmednahawk/sdl/include/SDL_version.h create mode 100644 libmednahawk/sdl/include/SDL_video.h create mode 100644 libmednahawk/sdl/include/begin_code.h create mode 100644 libmednahawk/sdl/include/close_code.h create mode 100644 libmednahawk/sdl/include/doxyfile create mode 100644 libmednahawk/sdl/include/sdl_config_win32.h create mode 100644 libmednahawk/sdl/include/sdl_opengl.h create mode 100644 libmednahawk/sdl/sdl-vc8-Win32.lib create mode 100644 libmednahawk/sdl/sdlmain-vc8-Win32.lib create mode 100644 libmednahawk/src/FileStream.cpp create mode 100644 libmednahawk/src/FileStream.h create mode 100644 libmednahawk/src/FileWrapper.cpp create mode 100644 libmednahawk/src/FileWrapper.h create mode 100644 libmednahawk/src/Makefile.am create mode 100644 libmednahawk/src/Makefile.in create mode 100644 libmednahawk/src/MemoryStream.cpp create mode 100644 libmednahawk/src/MemoryStream.h create mode 100644 libmednahawk/src/PSFLoader.cpp create mode 100644 libmednahawk/src/PSFLoader.h create mode 100644 libmednahawk/src/Stream.cpp create mode 100644 libmednahawk/src/Stream.h create mode 100644 libmednahawk/src/cdplay.cpp create mode 100644 libmednahawk/src/cdrom/CDAccess.cpp create mode 100644 libmednahawk/src/cdrom/CDAccess.h create mode 100644 libmednahawk/src/cdrom/CDAccess_Image.cpp create mode 100644 libmednahawk/src/cdrom/CDAccess_Image.h create mode 100644 libmednahawk/src/cdrom/CDAccess_Physical.cpp create mode 100644 libmednahawk/src/cdrom/CDAccess_Physical.h create mode 100644 libmednahawk/src/cdrom/CDUtility.cpp create mode 100644 libmednahawk/src/cdrom/CDUtility.h create mode 100644 libmednahawk/src/cdrom/Makefile.am.inc create mode 100644 libmednahawk/src/cdrom/SimpleFIFO.cpp create mode 100644 libmednahawk/src/cdrom/SimpleFIFO.h create mode 100644 libmednahawk/src/cdrom/audioreader.cpp create mode 100644 libmednahawk/src/cdrom/audioreader.h create mode 100644 libmednahawk/src/cdrom/audioreader_opus.cpp create mode 100644 libmednahawk/src/cdrom/audioreader_opus.h create mode 100644 libmednahawk/src/cdrom/cdromif.cpp create mode 100644 libmednahawk/src/cdrom/cdromif.h create mode 100644 libmednahawk/src/cdrom/crc32.cpp create mode 100644 libmednahawk/src/cdrom/dvdisaster.h create mode 100644 libmednahawk/src/cdrom/galois-inlines.h create mode 100644 libmednahawk/src/cdrom/galois.cpp create mode 100644 libmednahawk/src/cdrom/l-ec.cpp create mode 100644 libmednahawk/src/cdrom/lec.cpp create mode 100644 libmednahawk/src/cdrom/lec.h create mode 100644 libmednahawk/src/cdrom/pcecd.cpp create mode 100644 libmednahawk/src/cdrom/pcecd.h create mode 100644 libmednahawk/src/cdrom/recover-raw.cpp create mode 100644 libmednahawk/src/cdrom/scsicd-pce-commands.inc create mode 100644 libmednahawk/src/cdrom/scsicd.cpp create mode 100644 libmednahawk/src/cdrom/scsicd.h create mode 100644 libmednahawk/src/clamp.h create mode 100644 libmednahawk/src/compress/Makefile.am.inc create mode 100644 libmednahawk/src/compress/README.LZO create mode 100644 libmednahawk/src/compress/blz.c create mode 100644 libmednahawk/src/compress/blz.h create mode 100644 libmednahawk/src/compress/ioapi.c create mode 100644 libmednahawk/src/compress/ioapi.h create mode 100644 libmednahawk/src/compress/lzoconf.h create mode 100644 libmednahawk/src/compress/lzodefs.h create mode 100644 libmednahawk/src/compress/minilzo.c create mode 100644 libmednahawk/src/compress/minilzo.h create mode 100644 libmednahawk/src/compress/quicklz.c create mode 100644 libmednahawk/src/compress/quicklz.h create mode 100644 libmednahawk/src/compress/unzip.c create mode 100644 libmednahawk/src/compress/unzip.h create mode 100644 libmednahawk/src/cputest/Makefile.am.inc create mode 100644 libmednahawk/src/cputest/README create mode 100644 libmednahawk/src/cputest/arm_cpu.c create mode 100644 libmednahawk/src/cputest/cputest.c create mode 100644 libmednahawk/src/cputest/cputest.h create mode 100644 libmednahawk/src/cputest/ppc_cpu.c create mode 100644 libmednahawk/src/cputest/x86_cpu.c create mode 100644 libmednahawk/src/cputest/x86_cpu.h create mode 100644 libmednahawk/src/debug.cpp create mode 100644 libmednahawk/src/debug.h create mode 100644 libmednahawk/src/demo/Makefile.am create mode 100644 libmednahawk/src/demo/Makefile.in create mode 100644 libmednahawk/src/demo/demo.cpp create mode 100644 libmednahawk/src/desa68/Makefile.am create mode 100644 libmednahawk/src/desa68/Makefile.in create mode 100644 libmednahawk/src/desa68/desa68.c create mode 100644 libmednahawk/src/desa68/desa68.h create mode 100644 libmednahawk/src/dis6280.cpp create mode 100644 libmednahawk/src/dis6280.h create mode 100644 libmednahawk/src/dis6502.cpp create mode 100644 libmednahawk/src/dis6502.h create mode 100644 libmednahawk/src/driver.h create mode 100644 libmednahawk/src/drivers/2xSaI.cpp create mode 100644 libmednahawk/src/drivers/2xSaI.h create mode 100644 libmednahawk/src/drivers/Joystick_DOS_Standard.cpp create mode 100644 libmednahawk/src/drivers/Joystick_DOS_Standard.h create mode 100644 libmednahawk/src/drivers/Joystick_DX5.cpp create mode 100644 libmednahawk/src/drivers/Joystick_DX5.h create mode 100644 libmednahawk/src/drivers/Joystick_Linux.cpp create mode 100644 libmednahawk/src/drivers/Joystick_Linux.h create mode 100644 libmednahawk/src/drivers/Joystick_SDL.cpp create mode 100644 libmednahawk/src/drivers/Joystick_SDL.h create mode 100644 libmednahawk/src/drivers/Joystick_XInput.cpp create mode 100644 libmednahawk/src/drivers/Joystick_XInput.h create mode 100644 libmednahawk/src/drivers/Keyboard.h create mode 100644 libmednahawk/src/drivers/Makefile.am create mode 100644 libmednahawk/src/drivers/Makefile.in create mode 100644 libmednahawk/src/drivers/NetClient.h create mode 100644 libmednahawk/src/drivers/NetClient_BSD.cpp create mode 100644 libmednahawk/src/drivers/NetClient_BSD.h create mode 100644 libmednahawk/src/drivers/NetClient_POSIX.cpp create mode 100644 libmednahawk/src/drivers/NetClient_POSIX.h create mode 100644 libmednahawk/src/drivers/NetClient_WS2.cpp create mode 100644 libmednahawk/src/drivers/NetClient_WS2.h create mode 100644 libmednahawk/src/drivers/args.cpp create mode 100644 libmednahawk/src/drivers/args.h create mode 100644 libmednahawk/src/drivers/cheat.cpp create mode 100644 libmednahawk/src/drivers/cheat.h create mode 100644 libmednahawk/src/drivers/console.cpp create mode 100644 libmednahawk/src/drivers/console.h create mode 100644 libmednahawk/src/drivers/debugger.cpp create mode 100644 libmednahawk/src/drivers/debugger.h create mode 100644 libmednahawk/src/drivers/ers.cpp create mode 100644 libmednahawk/src/drivers/ers.h create mode 100644 libmednahawk/src/drivers/fps.cpp create mode 100644 libmednahawk/src/drivers/fps.h create mode 100644 libmednahawk/src/drivers/gfxdebugger.cpp create mode 100644 libmednahawk/src/drivers/gfxdebugger.h create mode 100644 libmednahawk/src/drivers/help.cpp create mode 100644 libmednahawk/src/drivers/help.h create mode 100644 libmednahawk/src/drivers/hq2x.cpp create mode 100644 libmednahawk/src/drivers/hq3x.cpp create mode 100644 libmednahawk/src/drivers/hq4x.cpp create mode 100644 libmednahawk/src/drivers/hqxx-common.cpp create mode 100644 libmednahawk/src/drivers/hqxx-common.h create mode 100644 libmednahawk/src/drivers/icon.h create mode 100644 libmednahawk/src/drivers/input-config.cpp create mode 100644 libmednahawk/src/drivers/input-config.h create mode 100644 libmednahawk/src/drivers/input-default-buttons.h create mode 100644 libmednahawk/src/drivers/input.cpp create mode 100644 libmednahawk/src/drivers/input.h create mode 100644 libmednahawk/src/drivers/joystick.cpp create mode 100644 libmednahawk/src/drivers/joystick.h create mode 100644 libmednahawk/src/drivers/logdebugger.cpp create mode 100644 libmednahawk/src/drivers/logdebugger.h create mode 100644 libmednahawk/src/drivers/main.cpp create mode 100644 libmednahawk/src/drivers/main.h create mode 100644 libmednahawk/src/drivers/memdebugger.cpp create mode 100644 libmednahawk/src/drivers/memdebugger.h create mode 100644 libmednahawk/src/drivers/netplay.cpp create mode 100644 libmednahawk/src/drivers/netplay.h create mode 100644 libmednahawk/src/drivers/nnx.cpp create mode 100644 libmednahawk/src/drivers/nnx.h create mode 100644 libmednahawk/src/drivers/nongl.cpp create mode 100644 libmednahawk/src/drivers/nongl.h create mode 100644 libmednahawk/src/drivers/opengl.cpp create mode 100644 libmednahawk/src/drivers/opengl.h create mode 100644 libmednahawk/src/drivers/overlay.cpp create mode 100644 libmednahawk/src/drivers/overlay.h create mode 100644 libmednahawk/src/drivers/prompt.cpp create mode 100644 libmednahawk/src/drivers/prompt.h create mode 100644 libmednahawk/src/drivers/remote.cpp create mode 100644 libmednahawk/src/drivers/remote.h create mode 100644 libmednahawk/src/drivers/scale2x.c create mode 100644 libmednahawk/src/drivers/scale2x.h create mode 100644 libmednahawk/src/drivers/scale3x.c create mode 100644 libmednahawk/src/drivers/scale3x.h create mode 100644 libmednahawk/src/drivers/scalebit.c create mode 100644 libmednahawk/src/drivers/scalebit.h create mode 100644 libmednahawk/src/drivers/shader.cpp create mode 100644 libmednahawk/src/drivers/shader.h create mode 100644 libmednahawk/src/drivers/sound.cpp create mode 100644 libmednahawk/src/drivers/sound.h create mode 100644 libmednahawk/src/drivers/video-state.cpp create mode 100644 libmednahawk/src/drivers/video-state.h create mode 100644 libmednahawk/src/drivers/video.cpp create mode 100644 libmednahawk/src/drivers/video.h create mode 100644 libmednahawk/src/endian.cpp create mode 100644 libmednahawk/src/endian.h create mode 100644 libmednahawk/src/error.cpp create mode 100644 libmednahawk/src/error.h create mode 100644 libmednahawk/src/file.cpp create mode 100644 libmednahawk/src/file.h create mode 100644 libmednahawk/src/gb/Makefile.am create mode 100644 libmednahawk/src/gb/Makefile.in create mode 100644 libmednahawk/src/gb/gb.cpp create mode 100644 libmednahawk/src/gb/gb.h create mode 100644 libmednahawk/src/gb/gbCodes.h create mode 100644 libmednahawk/src/gb/gbCodesCB.h create mode 100644 libmednahawk/src/gb/gbGlobals.cpp create mode 100644 libmednahawk/src/gb/gbGlobals.h create mode 100644 libmednahawk/src/gb/gfx.cpp create mode 100644 libmednahawk/src/gb/memory.cpp create mode 100644 libmednahawk/src/gb/memory.h create mode 100644 libmednahawk/src/gb/sound.cpp create mode 100644 libmednahawk/src/gb/sound.h create mode 100644 libmednahawk/src/gb/z80.cpp create mode 100644 libmednahawk/src/gb/z80.h create mode 100644 libmednahawk/src/gba/GBA.cpp create mode 100644 libmednahawk/src/gba/GBA.h create mode 100644 libmednahawk/src/gba/GBAinline.cpp create mode 100644 libmednahawk/src/gba/GBAinline.h create mode 100644 libmednahawk/src/gba/Gfx.cpp create mode 100644 libmednahawk/src/gba/Gfx.h create mode 100644 libmednahawk/src/gba/Globals.cpp create mode 100644 libmednahawk/src/gba/Globals.h create mode 100644 libmednahawk/src/gba/Makefile.am create mode 100644 libmednahawk/src/gba/Makefile.in create mode 100644 libmednahawk/src/gba/Mode0.cpp create mode 100644 libmednahawk/src/gba/Mode1.cpp create mode 100644 libmednahawk/src/gba/Mode2.cpp create mode 100644 libmednahawk/src/gba/Mode3.cpp create mode 100644 libmednahawk/src/gba/Mode4.cpp create mode 100644 libmednahawk/src/gba/Mode5.cpp create mode 100644 libmednahawk/src/gba/Port.h create mode 100644 libmednahawk/src/gba/RTC.cpp create mode 100644 libmednahawk/src/gba/RTC.h create mode 100644 libmednahawk/src/gba/Sound.cpp create mode 100644 libmednahawk/src/gba/Sound.h create mode 100644 libmednahawk/src/gba/arm.cpp create mode 100644 libmednahawk/src/gba/arm.h create mode 100644 libmednahawk/src/gba/bios.cpp create mode 100644 libmednahawk/src/gba/bios.h create mode 100644 libmednahawk/src/gba/eeprom.cpp create mode 100644 libmednahawk/src/gba/eeprom.h create mode 100644 libmednahawk/src/gba/flash.cpp create mode 100644 libmednahawk/src/gba/flash.h create mode 100644 libmednahawk/src/gba/gfx-draw.h create mode 100644 libmednahawk/src/gba/myrom.h create mode 100644 libmednahawk/src/gba/sram.cpp create mode 100644 libmednahawk/src/gba/sram.h create mode 100644 libmednahawk/src/gba/thumb.cpp create mode 100644 libmednahawk/src/gba/thumb.h create mode 100644 libmednahawk/src/general.cpp create mode 100644 libmednahawk/src/general.h create mode 100644 libmednahawk/src/gettext.h create mode 100644 libmednahawk/src/git-virtb.h create mode 100644 libmednahawk/src/git.h create mode 100644 libmednahawk/src/hw_cpu/.Tpo create mode 100644 libmednahawk/src/hw_cpu/Makefile.am create mode 100644 libmednahawk/src/hw_cpu/Makefile.in create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k.c create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k.cpp create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k.h create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_ini.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op0.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op1.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op2.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op3.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op4.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op5.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op6.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op7.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op8.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_op9.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_opA.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_opB.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_opC.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_opD.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_opE.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68k_opF.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/c68kexec.c create mode 100644 libmednahawk/src/hw_cpu/c68k/c68kexec.cpp create mode 100644 libmednahawk/src/hw_cpu/c68k/c68kmac.inc create mode 100644 libmednahawk/src/hw_cpu/c68k/gen68k.c create mode 100644 libmednahawk/src/hw_cpu/c68k/gen68k.h create mode 100644 libmednahawk/src/hw_cpu/c68k/gen68k.inc create mode 100644 libmednahawk/src/hw_cpu/huc6280/dis6280.cpp create mode 100644 libmednahawk/src/hw_cpu/huc6280/dis6280.h create mode 100644 libmednahawk/src/hw_cpu/huc6280/huc6280.cpp create mode 100644 libmednahawk/src/hw_cpu/huc6280/huc6280.h create mode 100644 libmednahawk/src/hw_cpu/huc6280/huc6280_step.inc create mode 100644 libmednahawk/src/hw_cpu/huc6280/ops.inc create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/mednafen-gcc.h create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/milieu.h create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-macros create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-specialize create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.c create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.h create mode 100644 libmednahawk/src/hw_cpu/v810/fpu-new/timesoftfloat.c create mode 100644 libmednahawk/src/hw_cpu/v810/v810_cpu.cpp create mode 100644 libmednahawk/src/hw_cpu/v810/v810_cpu.h create mode 100644 libmednahawk/src/hw_cpu/v810/v810_cpuD.cpp create mode 100644 libmednahawk/src/hw_cpu/v810/v810_cpuD.h create mode 100644 libmednahawk/src/hw_cpu/v810/v810_do_am.h create mode 100644 libmednahawk/src/hw_cpu/v810/v810_op_table.inc create mode 100644 libmednahawk/src/hw_cpu/v810/v810_oploop.inc create mode 100644 libmednahawk/src/hw_cpu/v810/v810_opt.h create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/coretest.c create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/opcodes_base.c create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80.cpp create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80.h create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80_cb.c create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80_ddfd.c create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80_ddfdcb.c create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80_ed.c create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80_macros.h create mode 100644 libmednahawk/src/hw_cpu/z80-fuse/z80_ops.cpp create mode 100644 libmednahawk/src/hw_misc/Makefile.am create mode 100644 libmednahawk/src/hw_misc/Makefile.in create mode 100644 libmednahawk/src/hw_misc/arcade_card/arcade_card.cpp create mode 100644 libmednahawk/src/hw_misc/arcade_card/arcade_card.h create mode 100644 libmednahawk/src/hw_sound/Makefile.am create mode 100644 libmednahawk/src/hw_sound/Makefile.in create mode 100644 libmednahawk/src/hw_sound/gb_apu/Gb_Apu.cpp create mode 100644 libmednahawk/src/hw_sound/gb_apu/Gb_Apu.h create mode 100644 libmednahawk/src/hw_sound/gb_apu/Gb_Apu_State.cpp create mode 100644 libmednahawk/src/hw_sound/gb_apu/Gb_Oscs.cpp create mode 100644 libmednahawk/src/hw_sound/gb_apu/Gb_Oscs.h create mode 100644 libmednahawk/src/hw_sound/gb_apu/blargg_common.h create mode 100644 libmednahawk/src/hw_sound/gb_apu/blargg_config.h create mode 100644 libmednahawk/src/hw_sound/gb_apu/blargg_source.h create mode 100644 libmednahawk/src/hw_sound/pce_psg/pce_psg.cpp create mode 100644 libmednahawk/src/hw_sound/pce_psg/pce_psg.h create mode 100644 libmednahawk/src/hw_sound/sms_apu/Sms_Apu.cpp create mode 100644 libmednahawk/src/hw_sound/sms_apu/Sms_Apu.h create mode 100644 libmednahawk/src/hw_sound/sms_apu/Sms_Oscs.h create mode 100644 libmednahawk/src/hw_sound/ym2413/2413tone.h create mode 100644 libmednahawk/src/hw_sound/ym2413/emu2413.cpp create mode 100644 libmednahawk/src/hw_sound/ym2413/emu2413.h create mode 100644 libmednahawk/src/hw_sound/ym2612/Ym2612_Emu.cpp create mode 100644 libmednahawk/src/hw_sound/ym2612/Ym2612_Emu.h create mode 100644 libmednahawk/src/hw_sound/ym2612/ym2612_opeg.inc create mode 100644 libmednahawk/src/hw_video/Makefile.am create mode 100644 libmednahawk/src/hw_video/Makefile.in create mode 100644 libmednahawk/src/hw_video/huc6270/backup/vdc.cpp create mode 100644 libmednahawk/src/hw_video/huc6270/backup/vdc.h create mode 100644 libmednahawk/src/hw_video/huc6270/vdc.cpp create mode 100644 libmednahawk/src/hw_video/huc6270/vdc.h create mode 100644 libmednahawk/src/lepacker.h create mode 100644 libmednahawk/src/lynx/Makefile.am create mode 100644 libmednahawk/src/lynx/Makefile.in create mode 100644 libmednahawk/src/lynx/c6502mak.h create mode 100644 libmednahawk/src/lynx/c65c02.cpp create mode 100644 libmednahawk/src/lynx/c65c02.h create mode 100644 libmednahawk/src/lynx/cart.cpp create mode 100644 libmednahawk/src/lynx/cart.h create mode 100644 libmednahawk/src/lynx/license.txt create mode 100644 libmednahawk/src/lynx/lynxbase.h create mode 100644 libmednahawk/src/lynx/lynxdef.h create mode 100644 libmednahawk/src/lynx/machine.h create mode 100644 libmednahawk/src/lynx/memmap.cpp create mode 100644 libmednahawk/src/lynx/memmap.h create mode 100644 libmednahawk/src/lynx/mikie.cpp create mode 100644 libmednahawk/src/lynx/mikie.h create mode 100644 libmednahawk/src/lynx/ram.cpp create mode 100644 libmednahawk/src/lynx/ram.h create mode 100644 libmednahawk/src/lynx/rom.cpp create mode 100644 libmednahawk/src/lynx/rom.h create mode 100644 libmednahawk/src/lynx/susie.cpp create mode 100644 libmednahawk/src/lynx/susie.h create mode 100644 libmednahawk/src/lynx/sysbase.h create mode 100644 libmednahawk/src/lynx/system.cpp create mode 100644 libmednahawk/src/lynx/system.h create mode 100644 libmednahawk/src/masmem.h create mode 100644 libmednahawk/src/math_ops.cpp create mode 100644 libmednahawk/src/math_ops.h create mode 100644 libmednahawk/src/md/Makefile.am create mode 100644 libmednahawk/src/md/Makefile.in create mode 100644 libmednahawk/src/md/cart/cart.cpp create mode 100644 libmednahawk/src/md/cart/cart.h create mode 100644 libmednahawk/src/md/cart/map_eeprom.cpp create mode 100644 libmednahawk/src/md/cart/map_eeprom.h create mode 100644 libmednahawk/src/md/cart/map_ff.cpp create mode 100644 libmednahawk/src/md/cart/map_ff.h create mode 100644 libmednahawk/src/md/cart/map_realtec.cpp create mode 100644 libmednahawk/src/md/cart/map_realtec.h create mode 100644 libmednahawk/src/md/cart/map_rmx3.cpp create mode 100644 libmednahawk/src/md/cart/map_rmx3.h create mode 100644 libmednahawk/src/md/cart/map_rom.cpp create mode 100644 libmednahawk/src/md/cart/map_rom.h create mode 100644 libmednahawk/src/md/cart/map_sbb.cpp create mode 100644 libmednahawk/src/md/cart/map_sbb.h create mode 100644 libmednahawk/src/md/cart/map_sram.cpp create mode 100644 libmednahawk/src/md/cart/map_sram.h create mode 100644 libmednahawk/src/md/cart/map_ssf2.cpp create mode 100644 libmednahawk/src/md/cart/map_ssf2.h create mode 100644 libmednahawk/src/md/cart/map_svp.cpp create mode 100644 libmednahawk/src/md/cart/map_svp.h create mode 100644 libmednahawk/src/md/cart/map_yase.cpp create mode 100644 libmednahawk/src/md/cart/map_yase.h create mode 100644 libmednahawk/src/md/cart/ssp16.c create mode 100644 libmednahawk/src/md/cart/ssp16.h create mode 100644 libmednahawk/src/md/cd/cd.cpp create mode 100644 libmednahawk/src/md/cd/cd.h create mode 100644 libmednahawk/src/md/cd/cdc_cdd.cpp create mode 100644 libmednahawk/src/md/cd/cdc_cdd.h create mode 100644 libmednahawk/src/md/cd/interrupt.cpp create mode 100644 libmednahawk/src/md/cd/interrupt.h create mode 100644 libmednahawk/src/md/cd/pcm.cpp create mode 100644 libmednahawk/src/md/cd/pcm.h create mode 100644 libmednahawk/src/md/cd/timer.cpp create mode 100644 libmednahawk/src/md/cd/timer.h create mode 100644 libmednahawk/src/md/cpuintrf.h create mode 100644 libmednahawk/src/md/debug.cpp create mode 100644 libmednahawk/src/md/debug.h create mode 100644 libmednahawk/src/md/genesis.cpp create mode 100644 libmednahawk/src/md/genesis.h create mode 100644 libmednahawk/src/md/genio.cpp create mode 100644 libmednahawk/src/md/genio.h create mode 100644 libmednahawk/src/md/hcnt.h create mode 100644 libmednahawk/src/md/header.cpp create mode 100644 libmednahawk/src/md/header.h create mode 100644 libmednahawk/src/md/hvc.h create mode 100644 libmednahawk/src/md/input/gamepad.cpp create mode 100644 libmednahawk/src/md/input/gamepad.h create mode 100644 libmednahawk/src/md/input/mouse.cpp create mode 100644 libmednahawk/src/md/input/mouse.h create mode 100644 libmednahawk/src/md/macros.h create mode 100644 libmednahawk/src/md/mem68k.cpp create mode 100644 libmednahawk/src/md/mem68k.h create mode 100644 libmednahawk/src/md/membnk.cpp create mode 100644 libmednahawk/src/md/membnk.h create mode 100644 libmednahawk/src/md/memvdp.cpp create mode 100644 libmednahawk/src/md/memvdp.h create mode 100644 libmednahawk/src/md/memz80.cpp create mode 100644 libmednahawk/src/md/memz80.h create mode 100644 libmednahawk/src/md/osd_cpu.h create mode 100644 libmednahawk/src/md/shared.h create mode 100644 libmednahawk/src/md/sound.cpp create mode 100644 libmednahawk/src/md/sound.h create mode 100644 libmednahawk/src/md/system.cpp create mode 100644 libmednahawk/src/md/system.h create mode 100644 libmednahawk/src/md/vcnt.h create mode 100644 libmednahawk/src/md/vdp.cpp create mode 100644 libmednahawk/src/md/vdp.h create mode 100644 libmednahawk/src/md/vdp_run.inc create mode 100644 libmednahawk/src/md5.cpp create mode 100644 libmednahawk/src/md5.h create mode 100644 libmednahawk/src/mednafen-driver.h create mode 100644 libmednahawk/src/mednafen.cpp create mode 100644 libmednahawk/src/mednafen.h create mode 100644 libmednahawk/src/memory.cpp create mode 100644 libmednahawk/src/memory.h create mode 100644 libmednahawk/src/mempatcher-driver.h create mode 100644 libmednahawk/src/mempatcher.cpp create mode 100644 libmednahawk/src/mempatcher.h create mode 100644 libmednahawk/src/movie-driver.h create mode 100644 libmednahawk/src/movie.cpp create mode 100644 libmednahawk/src/movie.h create mode 100644 libmednahawk/src/mpcdec/!VERSION create mode 100644 libmednahawk/src/mpcdec/AUTHORS create mode 100644 libmednahawk/src/mpcdec/CMakeLists.txt create mode 100644 libmednahawk/src/mpcdec/COPYING create mode 100644 libmednahawk/src/mpcdec/ChangeLog create mode 100644 libmednahawk/src/mpcdec/Makefile.am create mode 100644 libmednahawk/src/mpcdec/Makefile.in create mode 100644 libmednahawk/src/mpcdec/README create mode 100644 libmednahawk/src/mpcdec/crc32.c create mode 100644 libmednahawk/src/mpcdec/datatypes.h create mode 100644 libmednahawk/src/mpcdec/decoder.h create mode 100644 libmednahawk/src/mpcdec/fastmath.c create mode 100644 libmednahawk/src/mpcdec/huffman-bcl.c create mode 100644 libmednahawk/src/mpcdec/huffman.c create mode 100644 libmednahawk/src/mpcdec/huffman.h create mode 100644 libmednahawk/src/mpcdec/huffsv46.c create mode 100644 libmednahawk/src/mpcdec/huffsv7.c create mode 100644 libmednahawk/src/mpcdec/idtag.c create mode 100644 libmednahawk/src/mpcdec/internal.h create mode 100644 libmednahawk/src/mpcdec/minimax.h create mode 100644 libmednahawk/src/mpcdec/mpc_bits_reader.c create mode 100644 libmednahawk/src/mpcdec/mpc_bits_reader.h create mode 100644 libmednahawk/src/mpcdec/mpc_decoder.c create mode 100644 libmednahawk/src/mpcdec/mpc_demux.c create mode 100644 libmednahawk/src/mpcdec/mpc_reader.c create mode 100644 libmednahawk/src/mpcdec/mpc_types.h create mode 100644 libmednahawk/src/mpcdec/mpcdec.h create mode 100644 libmednahawk/src/mpcdec/mpcdec_math.h create mode 100644 libmednahawk/src/mpcdec/mpcmath.h create mode 100644 libmednahawk/src/mpcdec/reader.h create mode 100644 libmednahawk/src/mpcdec/requant.c create mode 100644 libmednahawk/src/mpcdec/requant.h create mode 100644 libmednahawk/src/mpcdec/streaminfo.c create mode 100644 libmednahawk/src/mpcdec/streaminfo.h create mode 100644 libmednahawk/src/mpcdec/synth_filter.c create mode 100644 libmednahawk/src/mpcdec/tags.c create mode 100644 libmednahawk/src/nes/Makefile.am create mode 100644 libmednahawk/src/nes/Makefile.in create mode 100644 libmednahawk/src/nes/boards/107.cpp create mode 100644 libmednahawk/src/nes/boards/112.cpp create mode 100644 libmednahawk/src/nes/boards/113.cpp create mode 100644 libmednahawk/src/nes/boards/114.cpp create mode 100644 libmednahawk/src/nes/boards/117.cpp create mode 100644 libmednahawk/src/nes/boards/140.cpp create mode 100644 libmednahawk/src/nes/boards/15.cpp create mode 100644 libmednahawk/src/nes/boards/151.cpp create mode 100644 libmednahawk/src/nes/boards/152.cpp create mode 100644 libmednahawk/src/nes/boards/156.cpp create mode 100644 libmednahawk/src/nes/boards/16.cpp create mode 100644 libmednahawk/src/nes/boards/163.cpp create mode 100644 libmednahawk/src/nes/boards/18.cpp create mode 100644 libmednahawk/src/nes/boards/180.cpp create mode 100644 libmednahawk/src/nes/boards/182.cpp create mode 100644 libmednahawk/src/nes/boards/184.cpp create mode 100644 libmednahawk/src/nes/boards/185.cpp create mode 100644 libmednahawk/src/nes/boards/187.cpp create mode 100644 libmednahawk/src/nes/boards/189.cpp create mode 100644 libmednahawk/src/nes/boards/193.cpp create mode 100644 libmednahawk/src/nes/boards/208.cpp create mode 100644 libmednahawk/src/nes/boards/21.cpp create mode 100644 libmednahawk/src/nes/boards/22.cpp create mode 100644 libmednahawk/src/nes/boards/222.cpp create mode 100644 libmednahawk/src/nes/boards/228.cpp create mode 100644 libmednahawk/src/nes/boards/23.cpp create mode 100644 libmednahawk/src/nes/boards/232.cpp create mode 100644 libmednahawk/src/nes/boards/234.cpp create mode 100644 libmednahawk/src/nes/boards/240.cpp create mode 100644 libmednahawk/src/nes/boards/241.cpp create mode 100644 libmednahawk/src/nes/boards/242.cpp create mode 100644 libmednahawk/src/nes/boards/244.cpp create mode 100644 libmednahawk/src/nes/boards/246.cpp create mode 100644 libmednahawk/src/nes/boards/248.cpp create mode 100644 libmednahawk/src/nes/boards/25.cpp create mode 100644 libmednahawk/src/nes/boards/32.cpp create mode 100644 libmednahawk/src/nes/boards/33.cpp create mode 100644 libmednahawk/src/nes/boards/34.cpp create mode 100644 libmednahawk/src/nes/boards/38.cpp create mode 100644 libmednahawk/src/nes/boards/41.cpp create mode 100644 libmednahawk/src/nes/boards/42.cpp create mode 100644 libmednahawk/src/nes/boards/46.cpp create mode 100644 libmednahawk/src/nes/boards/51.cpp create mode 100644 libmednahawk/src/nes/boards/65.cpp create mode 100644 libmednahawk/src/nes/boards/67.cpp create mode 100644 libmednahawk/src/nes/boards/68.cpp create mode 100644 libmednahawk/src/nes/boards/70.cpp create mode 100644 libmednahawk/src/nes/boards/72.cpp create mode 100644 libmednahawk/src/nes/boards/73.cpp create mode 100644 libmednahawk/src/nes/boards/75.cpp create mode 100644 libmednahawk/src/nes/boards/76.cpp create mode 100644 libmednahawk/src/nes/boards/77.cpp create mode 100644 libmednahawk/src/nes/boards/78.cpp create mode 100644 libmednahawk/src/nes/boards/8.cpp create mode 100644 libmednahawk/src/nes/boards/80.cpp create mode 100644 libmednahawk/src/nes/boards/82.cpp create mode 100644 libmednahawk/src/nes/boards/8237.cpp create mode 100644 libmednahawk/src/nes/boards/86.cpp create mode 100644 libmednahawk/src/nes/boards/87.cpp create mode 100644 libmednahawk/src/nes/boards/88.cpp create mode 100644 libmednahawk/src/nes/boards/89.cpp create mode 100644 libmednahawk/src/nes/boards/90.cpp create mode 100644 libmednahawk/src/nes/boards/92.cpp create mode 100644 libmednahawk/src/nes/boards/93.cpp create mode 100644 libmednahawk/src/nes/boards/94.cpp create mode 100644 libmednahawk/src/nes/boards/95.cpp create mode 100644 libmednahawk/src/nes/boards/96.cpp create mode 100644 libmednahawk/src/nes/boards/97.cpp create mode 100644 libmednahawk/src/nes/boards/99.cpp create mode 100644 libmednahawk/src/nes/boards/Makefile.am.inc create mode 100644 libmednahawk/src/nes/boards/codemasters.cpp create mode 100644 libmednahawk/src/nes/boards/colordreams.cpp create mode 100644 libmednahawk/src/nes/boards/deirom.cpp create mode 100644 libmednahawk/src/nes/boards/emu2413.cpp create mode 100644 libmednahawk/src/nes/boards/emu2413.h create mode 100644 libmednahawk/src/nes/boards/emutypes.h create mode 100644 libmednahawk/src/nes/boards/ffe.cpp create mode 100644 libmednahawk/src/nes/boards/fme7.cpp create mode 100644 libmednahawk/src/nes/boards/h2288.cpp create mode 100644 libmednahawk/src/nes/boards/malee.cpp create mode 100644 libmednahawk/src/nes/boards/mapinc.h create mode 100644 libmednahawk/src/nes/boards/maxicart.cpp create mode 100644 libmednahawk/src/nes/boards/mmc1.cpp create mode 100644 libmednahawk/src/nes/boards/mmc2and4.cpp create mode 100644 libmednahawk/src/nes/boards/mmc3.cpp create mode 100644 libmednahawk/src/nes/boards/mmc5.cpp create mode 100644 libmednahawk/src/nes/boards/n106.cpp create mode 100644 libmednahawk/src/nes/boards/nina06.cpp create mode 100644 libmednahawk/src/nes/boards/novel.cpp create mode 100644 libmednahawk/src/nes/boards/sachen.cpp create mode 100644 libmednahawk/src/nes/boards/simple.cpp create mode 100644 libmednahawk/src/nes/boards/super24.cpp create mode 100644 libmednahawk/src/nes/boards/supervision.cpp create mode 100644 libmednahawk/src/nes/boards/tengen.cpp create mode 100644 libmednahawk/src/nes/boards/vrc6.cpp create mode 100644 libmednahawk/src/nes/boards/vrc7.cpp create mode 100644 libmednahawk/src/nes/boards/vrc7tone.h create mode 100644 libmednahawk/src/nes/cart.cpp create mode 100644 libmednahawk/src/nes/cart.h create mode 100644 libmednahawk/src/nes/debug-driver.h create mode 100644 libmednahawk/src/nes/debug.cpp create mode 100644 libmednahawk/src/nes/debug.h create mode 100644 libmednahawk/src/nes/fds-driver.h create mode 100644 libmednahawk/src/nes/fds-sound.cpp create mode 100644 libmednahawk/src/nes/fds-sound.h create mode 100644 libmednahawk/src/nes/fds.cpp create mode 100644 libmednahawk/src/nes/fds.h create mode 100644 libmednahawk/src/nes/filter.cpp create mode 100644 libmednahawk/src/nes/filter.h create mode 100644 libmednahawk/src/nes/ines-bad.inc create mode 100644 libmednahawk/src/nes/ines-correct.inc create mode 100644 libmednahawk/src/nes/ines.cpp create mode 100644 libmednahawk/src/nes/ines.h create mode 100644 libmednahawk/src/nes/input.cpp create mode 100644 libmednahawk/src/nes/input.h create mode 100644 libmednahawk/src/nes/input/Makefile.am.inc create mode 100644 libmednahawk/src/nes/input/arkanoid.cpp create mode 100644 libmednahawk/src/nes/input/bworld.cpp create mode 100644 libmednahawk/src/nes/input/cursor.cpp create mode 100644 libmednahawk/src/nes/input/fkb.cpp create mode 100644 libmednahawk/src/nes/input/fkb.h create mode 100644 libmednahawk/src/nes/input/ftrainer.cpp create mode 100644 libmednahawk/src/nes/input/hypershot.cpp create mode 100644 libmednahawk/src/nes/input/mahjong.cpp create mode 100644 libmednahawk/src/nes/input/oekakids.cpp create mode 100644 libmednahawk/src/nes/input/partytap.cpp create mode 100644 libmednahawk/src/nes/input/powerpad.cpp create mode 100644 libmednahawk/src/nes/input/shadow.cpp create mode 100644 libmednahawk/src/nes/input/share.h create mode 100644 libmednahawk/src/nes/input/suborkb.cpp create mode 100644 libmednahawk/src/nes/input/suborkb.h create mode 100644 libmednahawk/src/nes/input/toprider.cpp create mode 100644 libmednahawk/src/nes/input/zapper.cpp create mode 100644 libmednahawk/src/nes/nes.cpp create mode 100644 libmednahawk/src/nes/nes.h create mode 100644 libmednahawk/src/nes/nsf.cpp create mode 100644 libmednahawk/src/nes/nsf.h create mode 100644 libmednahawk/src/nes/nsfe.cpp create mode 100644 libmednahawk/src/nes/nsfe.h create mode 100644 libmednahawk/src/nes/ntsc/LGPL.txt create mode 100644 libmednahawk/src/nes/ntsc/benchmark.c create mode 100644 libmednahawk/src/nes/ntsc/changes.txt create mode 100644 libmednahawk/src/nes/ntsc/demo.c create mode 100644 libmednahawk/src/nes/ntsc/nes.raw create mode 100644 libmednahawk/src/nes/ntsc/nes_ntsc.cpp create mode 100644 libmednahawk/src/nes/ntsc/nes_ntsc.h create mode 100644 libmednahawk/src/nes/ntsc/nes_ntsc.txt create mode 100644 libmednahawk/src/nes/ntsc/readme.txt create mode 100644 libmednahawk/src/nes/ops.h create mode 100644 libmednahawk/src/nes/ppu/Makefile.am.inc create mode 100644 libmednahawk/src/nes/ppu/fast-pputile.h create mode 100644 libmednahawk/src/nes/ppu/palette.cpp create mode 100644 libmednahawk/src/nes/ppu/palette.h create mode 100644 libmednahawk/src/nes/ppu/palettes/default.h create mode 100644 libmednahawk/src/nes/ppu/palettes/rp2c04-0001.h create mode 100644 libmednahawk/src/nes/ppu/palettes/rp2c04-0002.h create mode 100644 libmednahawk/src/nes/ppu/palettes/rp2c04-0003.h create mode 100644 libmednahawk/src/nes/ppu/palettes/rp2c04-0004.h create mode 100644 libmednahawk/src/nes/ppu/palettes/rp2c0x.h create mode 100644 libmednahawk/src/nes/ppu/ppu-fastrl.h create mode 100644 libmednahawk/src/nes/ppu/ppu-subline.h create mode 100644 libmednahawk/src/nes/ppu/ppu.cpp create mode 100644 libmednahawk/src/nes/ppu/ppu.h create mode 100644 libmednahawk/src/nes/sound.cpp create mode 100644 libmednahawk/src/nes/sound.h create mode 100644 libmednahawk/src/nes/unif.cpp create mode 100644 libmednahawk/src/nes/unif.h create mode 100644 libmednahawk/src/nes/vsuni.cpp create mode 100644 libmednahawk/src/nes/vsuni.h create mode 100644 libmednahawk/src/nes/x6502.cpp create mode 100644 libmednahawk/src/nes/x6502.h create mode 100644 libmednahawk/src/nes/x6502struct.h create mode 100644 libmednahawk/src/netplay-driver.h create mode 100644 libmednahawk/src/netplay.cpp create mode 100644 libmednahawk/src/netplay.h create mode 100644 libmednahawk/src/ngp/Makefile.am create mode 100644 libmednahawk/src/ngp/Makefile.in create mode 100644 libmednahawk/src/ngp/T6W28_Apu.cpp create mode 100644 libmednahawk/src/ngp/T6W28_Apu.h create mode 100644 libmednahawk/src/ngp/T6W28_Oscs.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_dst.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_extra.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_reg.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_src.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.cpp create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapB.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB0.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB1.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB2.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB3.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL0.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL1.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL2.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL3.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW0.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW1.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW2.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW3.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapL.h create mode 100644 libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapW.h create mode 100644 libmednahawk/src/ngp/Z80_interface.cpp create mode 100644 libmednahawk/src/ngp/Z80_interface.h create mode 100644 libmednahawk/src/ngp/bios.cpp create mode 100644 libmednahawk/src/ngp/bios.h create mode 100644 libmednahawk/src/ngp/biosHLE.cpp create mode 100644 libmednahawk/src/ngp/dma.cpp create mode 100644 libmednahawk/src/ngp/dma.h create mode 100644 libmednahawk/src/ngp/flash.cpp create mode 100644 libmednahawk/src/ngp/flash.h create mode 100644 libmednahawk/src/ngp/gfx.cpp create mode 100644 libmednahawk/src/ngp/gfx.h create mode 100644 libmednahawk/src/ngp/gfx_scanline_colour.cpp create mode 100644 libmednahawk/src/ngp/gfx_scanline_mono.cpp create mode 100644 libmednahawk/src/ngp/interrupt.cpp create mode 100644 libmednahawk/src/ngp/interrupt.h create mode 100644 libmednahawk/src/ngp/mem.cpp create mode 100644 libmednahawk/src/ngp/mem.h create mode 100644 libmednahawk/src/ngp/neopop.cpp create mode 100644 libmednahawk/src/ngp/neopop.h create mode 100644 libmednahawk/src/ngp/rom.cpp create mode 100644 libmednahawk/src/ngp/rtc.cpp create mode 100644 libmednahawk/src/ngp/rtc.h create mode 100644 libmednahawk/src/ngp/sound.cpp create mode 100644 libmednahawk/src/ngp/sound.h create mode 100644 libmednahawk/src/okiadpcm-deltatable.h create mode 100644 libmednahawk/src/okiadpcm.cpp create mode 100644 libmednahawk/src/okiadpcm.h create mode 100644 libmednahawk/src/okiadpcm_generate.cpp create mode 100644 libmednahawk/src/pce/EVENT_SYSTEM_NOTES create mode 100644 libmednahawk/src/pce/Makefile.am create mode 100644 libmednahawk/src/pce/Makefile.in create mode 100644 libmednahawk/src/pce/SUBTITLE_FORMAT create mode 100644 libmednahawk/src/pce/SUBTITLE_NOTES create mode 100644 libmednahawk/src/pce/debug.cpp create mode 100644 libmednahawk/src/pce/debug.h create mode 100644 libmednahawk/src/pce/hes.cpp create mode 100644 libmednahawk/src/pce/hes.h create mode 100644 libmednahawk/src/pce/huc.cpp create mode 100644 libmednahawk/src/pce/huc.h create mode 100644 libmednahawk/src/pce/input.cpp create mode 100644 libmednahawk/src/pce/input.h create mode 100644 libmednahawk/src/pce/input/gamepad.cpp create mode 100644 libmednahawk/src/pce/input/gamepad.h create mode 100644 libmednahawk/src/pce/input/mouse.cpp create mode 100644 libmednahawk/src/pce/input/mouse.h create mode 100644 libmednahawk/src/pce/input/tsushinkb.cpp create mode 100644 libmednahawk/src/pce/input/tsushinkb.h create mode 100644 libmednahawk/src/pce/mcgenjin.cpp create mode 100644 libmednahawk/src/pce/mcgenjin.h create mode 100644 libmednahawk/src/pce/mcgenjin_ym2413.inc create mode 100644 libmednahawk/src/pce/pce.cpp create mode 100644 libmednahawk/src/pce/pce.h create mode 100644 libmednahawk/src/pce/subhw.cpp create mode 100644 libmednahawk/src/pce/subhw.h create mode 100644 libmednahawk/src/pce/tsushin.cpp create mode 100644 libmednahawk/src/pce/tsushin.h create mode 100644 libmednahawk/src/pce/vce.cpp create mode 100644 libmednahawk/src/pce/vce.h create mode 100644 libmednahawk/src/pce/vce_sync.inc create mode 100644 libmednahawk/src/pce_fast/Makefile.am create mode 100644 libmednahawk/src/pce_fast/Makefile.in create mode 100644 libmednahawk/src/pce_fast/hes.cpp create mode 100644 libmednahawk/src/pce_fast/hes.h create mode 100644 libmednahawk/src/pce_fast/huc.cpp create mode 100644 libmednahawk/src/pce_fast/huc.h create mode 100644 libmednahawk/src/pce_fast/huc6280.cpp create mode 100644 libmednahawk/src/pce_fast/huc6280.h create mode 100644 libmednahawk/src/pce_fast/huc6280_ops.inc create mode 100644 libmednahawk/src/pce_fast/input.cpp create mode 100644 libmednahawk/src/pce_fast/input.h create mode 100644 libmednahawk/src/pce_fast/ioread.inc create mode 100644 libmednahawk/src/pce_fast/pce.cpp create mode 100644 libmednahawk/src/pce_fast/pce.h create mode 100644 libmednahawk/src/pce_fast/tsushin.cpp create mode 100644 libmednahawk/src/pce_fast/tsushin.h create mode 100644 libmednahawk/src/pce_fast/vdc.cpp create mode 100644 libmednahawk/src/pce_fast/vdc.h create mode 100644 libmednahawk/src/pce_fast/vpc_mix_inner.inc create mode 100644 libmednahawk/src/pcfx/Makefile.am create mode 100644 libmednahawk/src/pcfx/Makefile.in create mode 100644 libmednahawk/src/pcfx/debug.cpp create mode 100644 libmednahawk/src/pcfx/debug.h create mode 100644 libmednahawk/src/pcfx/fxscsi.cpp create mode 100644 libmednahawk/src/pcfx/fxscsi.h create mode 100644 libmednahawk/src/pcfx/gamedb.inc create mode 100644 libmednahawk/src/pcfx/huc6273.cpp create mode 100644 libmednahawk/src/pcfx/huc6273.h create mode 100644 libmednahawk/src/pcfx/input.cpp create mode 100644 libmednahawk/src/pcfx/input.h create mode 100644 libmednahawk/src/pcfx/input/gamepad.cpp create mode 100644 libmednahawk/src/pcfx/input/gamepad.h create mode 100644 libmednahawk/src/pcfx/input/mouse.cpp create mode 100644 libmednahawk/src/pcfx/input/mouse.h create mode 100644 libmednahawk/src/pcfx/interrupt.cpp create mode 100644 libmednahawk/src/pcfx/interrupt.h create mode 100644 libmednahawk/src/pcfx/io-handler.inc create mode 100644 libmednahawk/src/pcfx/jrevdct.cpp create mode 100644 libmednahawk/src/pcfx/jrevdct.h create mode 100644 libmednahawk/src/pcfx/king-bgfast-blit.inc create mode 100644 libmednahawk/src/pcfx/king-bgfast.inc create mode 100644 libmednahawk/src/pcfx/king.cpp create mode 100644 libmednahawk/src/pcfx/king.h create mode 100644 libmednahawk/src/pcfx/king_mix_body.inc create mode 100644 libmednahawk/src/pcfx/mem-handler.inc create mode 100644 libmednahawk/src/pcfx/pcfx.cpp create mode 100644 libmednahawk/src/pcfx/pcfx.h create mode 100644 libmednahawk/src/pcfx/rainbow.cpp create mode 100644 libmednahawk/src/pcfx/rainbow.h create mode 100644 libmednahawk/src/pcfx/soundbox.cpp create mode 100644 libmednahawk/src/pcfx/soundbox.h create mode 100644 libmednahawk/src/pcfx/timer.cpp create mode 100644 libmednahawk/src/pcfx/timer.h create mode 100644 libmednahawk/src/player.cpp create mode 100644 libmednahawk/src/player.h create mode 100644 libmednahawk/src/psx/.Tpo create mode 100644 libmednahawk/src/psx/Makefile.am create mode 100644 libmednahawk/src/psx/Makefile.in create mode 100644 libmednahawk/src/psx/NOTES create mode 100644 libmednahawk/src/psx/PSX-TODO create mode 100644 libmednahawk/src/psx/README.NOW create mode 100644 libmednahawk/src/psx/SOURCES create mode 100644 libmednahawk/src/psx/cdc.cpp create mode 100644 libmednahawk/src/psx/cdc.h create mode 100644 libmednahawk/src/psx/cpu.cpp create mode 100644 libmednahawk/src/psx/cpu.h create mode 100644 libmednahawk/src/psx/debug.cpp create mode 100644 libmednahawk/src/psx/debug.h create mode 100644 libmednahawk/src/psx/dis.cpp create mode 100644 libmednahawk/src/psx/dis.h create mode 100644 libmednahawk/src/psx/dma.cpp create mode 100644 libmednahawk/src/psx/dma.h create mode 100644 libmednahawk/src/psx/frontio.cpp create mode 100644 libmednahawk/src/psx/frontio.h create mode 100644 libmednahawk/src/psx/gpu.cpp create mode 100644 libmednahawk/src/psx/gpu.h create mode 100644 libmednahawk/src/psx/gpu_command_table.inc create mode 100644 libmednahawk/src/psx/gpu_line.inc create mode 100644 libmednahawk/src/psx/gpu_polygon.inc create mode 100644 libmednahawk/src/psx/gpu_sprite.inc create mode 100644 libmednahawk/src/psx/gte.cpp create mode 100644 libmednahawk/src/psx/gte.h create mode 100644 libmednahawk/src/psx/gte_divrecip.inc create mode 100644 libmednahawk/src/psx/input/dualanalog.cpp create mode 100644 libmednahawk/src/psx/input/dualanalog.h create mode 100644 libmednahawk/src/psx/input/dualshock.cpp create mode 100644 libmednahawk/src/psx/input/dualshock.h create mode 100644 libmednahawk/src/psx/input/gamepad.cpp create mode 100644 libmednahawk/src/psx/input/gamepad.h create mode 100644 libmednahawk/src/psx/input/guncon.cpp create mode 100644 libmednahawk/src/psx/input/guncon.h create mode 100644 libmednahawk/src/psx/input/justifier.cpp create mode 100644 libmednahawk/src/psx/input/justifier.h create mode 100644 libmednahawk/src/psx/input/memcard.cpp create mode 100644 libmednahawk/src/psx/input/memcard.h create mode 100644 libmednahawk/src/psx/input/mouse.cpp create mode 100644 libmednahawk/src/psx/input/mouse.h create mode 100644 libmednahawk/src/psx/input/multitap.cpp create mode 100644 libmednahawk/src/psx/input/multitap.h create mode 100644 libmednahawk/src/psx/input/negcon.cpp create mode 100644 libmednahawk/src/psx/input/negcon.h create mode 100644 libmednahawk/src/psx/irq.cpp create mode 100644 libmednahawk/src/psx/irq.h create mode 100644 libmednahawk/src/psx/mdec.cpp create mode 100644 libmednahawk/src/psx/mdec.h create mode 100644 libmednahawk/src/psx/psx.cpp create mode 100644 libmednahawk/src/psx/psx.h create mode 100644 libmednahawk/src/psx/sio.cpp create mode 100644 libmednahawk/src/psx/sio.h create mode 100644 libmednahawk/src/psx/spu.cpp create mode 100644 libmednahawk/src/psx/spu.h create mode 100644 libmednahawk/src/psx/spu_fir_table.inc create mode 100644 libmednahawk/src/psx/spu_nft.inc create mode 100644 libmednahawk/src/psx/spu_reverb.inc create mode 100644 libmednahawk/src/psx/spu_xa.inc create mode 100644 libmednahawk/src/psx/timer.cpp create mode 100644 libmednahawk/src/psx/timer.h create mode 100644 libmednahawk/src/qtrecord.cpp create mode 100644 libmednahawk/src/qtrecord.h create mode 100644 libmednahawk/src/resampler/Makefile.am.inc create mode 100644 libmednahawk/src/resampler/arch.h create mode 100644 libmednahawk/src/resampler/fixed_generic.h create mode 100644 libmednahawk/src/resampler/resample.c create mode 100644 libmednahawk/src/resampler/resample_sse.h create mode 100644 libmednahawk/src/resampler/resampler.h create mode 100644 libmednahawk/src/resampler/stack_alloc.h create mode 100644 libmednahawk/src/settings-common.h create mode 100644 libmednahawk/src/settings-driver.h create mode 100644 libmednahawk/src/settings.cpp create mode 100644 libmednahawk/src/settings.h create mode 100644 libmednahawk/src/sexyal/COPYING create mode 100644 libmednahawk/src/sexyal/Makefile.am create mode 100644 libmednahawk/src/sexyal/Makefile.in create mode 100644 libmednahawk/src/sexyal/README create mode 100644 libmednahawk/src/sexyal/convert.cpp create mode 100644 libmednahawk/src/sexyal/convert.h create mode 100644 libmednahawk/src/sexyal/drivers/alsa.cpp create mode 100644 libmednahawk/src/sexyal/drivers/dsound.cpp create mode 100644 libmednahawk/src/sexyal/drivers/dummy.cpp create mode 100644 libmednahawk/src/sexyal/drivers/jack.cpp create mode 100644 libmednahawk/src/sexyal/drivers/oss.cpp create mode 100644 libmednahawk/src/sexyal/drivers/sdl.cpp create mode 100644 libmednahawk/src/sexyal/sexyal.cpp create mode 100644 libmednahawk/src/sexyal/sexyal.h create mode 100644 libmednahawk/src/sms/Makefile.am create mode 100644 libmednahawk/src/sms/Makefile.in create mode 100644 libmednahawk/src/sms/cart.cpp create mode 100644 libmednahawk/src/sms/cart.h create mode 100644 libmednahawk/src/sms/docs/changelog create mode 100644 libmednahawk/src/sms/docs/compatability.txt create mode 100644 libmednahawk/src/sms/docs/license create mode 100644 libmednahawk/src/sms/docs/porting.txt create mode 100644 libmednahawk/src/sms/docs/readme.txt create mode 100644 libmednahawk/src/sms/hvc.inc create mode 100644 libmednahawk/src/sms/memz80.cpp create mode 100644 libmednahawk/src/sms/memz80.h create mode 100644 libmednahawk/src/sms/pio.cpp create mode 100644 libmednahawk/src/sms/pio.h create mode 100644 libmednahawk/src/sms/render.cpp create mode 100644 libmednahawk/src/sms/render.h create mode 100644 libmednahawk/src/sms/romdb.cpp create mode 100644 libmednahawk/src/sms/romdb.h create mode 100644 libmednahawk/src/sms/shared.h create mode 100644 libmednahawk/src/sms/sms.cpp create mode 100644 libmednahawk/src/sms/sms.h create mode 100644 libmednahawk/src/sms/sound.cpp create mode 100644 libmednahawk/src/sms/sound.h create mode 100644 libmednahawk/src/sms/system.cpp create mode 100644 libmednahawk/src/sms/system.h create mode 100644 libmednahawk/src/sms/tms.cpp create mode 100644 libmednahawk/src/sms/tms.h create mode 100644 libmednahawk/src/sms/vdp.cpp create mode 100644 libmednahawk/src/sms/vdp.h create mode 100644 libmednahawk/src/snes/Makefile.am create mode 100644 libmednahawk/src/snes/Makefile.in create mode 100644 libmednahawk/src/snes/VERSION.BSNES create mode 100644 libmednahawk/src/snes/interface.cpp create mode 100644 libmednahawk/src/snes/src/Makefile create mode 100644 libmednahawk/src/snes/src/base.hpp create mode 100644 libmednahawk/src/snes/src/cartridge/cartridge.cpp create mode 100644 libmednahawk/src/snes/src/cartridge/cartridge.hpp create mode 100644 libmednahawk/src/snes/src/cartridge/gameboyheader.cpp create mode 100644 libmednahawk/src/snes/src/cartridge/header.cpp create mode 100644 libmednahawk/src/snes/src/cartridge/serialization.cpp create mode 100644 libmednahawk/src/snes/src/cc.bat create mode 100644 libmednahawk/src/snes/src/cheat/cheat-inline.hpp create mode 100644 libmednahawk/src/snes/src/cheat/cheat.cpp create mode 100644 libmednahawk/src/snes/src/cheat/cheat.hpp create mode 100644 libmednahawk/src/snes/src/chip/21fx/21fx.cpp create mode 100644 libmednahawk/src/snes/src/chip/21fx/21fx.hpp create mode 100644 libmednahawk/src/snes/src/chip/21fx/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/bsx/bsx.cpp create mode 100644 libmednahawk/src/snes/src/chip/bsx/bsx.hpp create mode 100644 libmednahawk/src/snes/src/chip/bsx/bsx_base.cpp create mode 100644 libmednahawk/src/snes/src/chip/bsx/bsx_cart.cpp create mode 100644 libmednahawk/src/snes/src/chip/bsx/bsx_flash.cpp create mode 100644 libmednahawk/src/snes/src/chip/chip.hpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/cx4.cpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/cx4.hpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/data.cpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/functions.cpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/oam.cpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/opcodes.cpp create mode 100644 libmednahawk/src/snes/src/chip/cx4/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp1/dsp1.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp1/dsp1.hpp create mode 100644 libmednahawk/src/snes/src/chip/dsp1/dsp1emu.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp1/dsp1emu.hpp create mode 100644 libmednahawk/src/snes/src/chip/dsp1/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp2/dsp2.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp2/dsp2.hpp create mode 100644 libmednahawk/src/snes/src/chip/dsp2/opcodes.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp2/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp3/dsp3.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp3/dsp3.hpp create mode 100644 libmednahawk/src/snes/src/chip/dsp3/dsp3emu.c create mode 100644 libmednahawk/src/snes/src/chip/dsp4/dsp4.cpp create mode 100644 libmednahawk/src/snes/src/chip/dsp4/dsp4.hpp create mode 100644 libmednahawk/src/snes/src/chip/dsp4/dsp4emu.c create mode 100644 libmednahawk/src/snes/src/chip/dsp4/dsp4emu.h create mode 100644 libmednahawk/src/snes/src/chip/obc1/obc1.cpp create mode 100644 libmednahawk/src/snes/src/chip/obc1/obc1.hpp create mode 100644 libmednahawk/src/snes/src/chip/obc1/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/bus/bus.cpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/bus/bus.hpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/dma/dma.cpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/dma/dma.hpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/memory/memory.cpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/memory/memory.hpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/mmio/mmio.cpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/mmio/mmio.hpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/sa1.cpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/sa1.hpp create mode 100644 libmednahawk/src/snes/src/chip/sa1/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/sdd1/sdd1.cpp create mode 100644 libmednahawk/src/snes/src/chip/sdd1/sdd1.hpp create mode 100644 libmednahawk/src/snes/src/chip/sdd1/sdd1emu.cpp create mode 100644 libmednahawk/src/snes/src/chip/sdd1/sdd1emu.hpp create mode 100644 libmednahawk/src/snes/src/chip/sdd1/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/spc7110/decomp.cpp create mode 100644 libmednahawk/src/snes/src/chip/spc7110/decomp.hpp create mode 100644 libmednahawk/src/snes/src/chip/spc7110/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/spc7110/spc7110.cpp create mode 100644 libmednahawk/src/snes/src/chip/spc7110/spc7110.hpp create mode 100644 libmednahawk/src/snes/src/chip/srtc/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/srtc/srtc.cpp create mode 100644 libmednahawk/src/snes/src/chip/srtc/srtc.hpp create mode 100644 libmednahawk/src/snes/src/chip/st010/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/st010/st010.cpp create mode 100644 libmednahawk/src/snes/src/chip/st010/st010.hpp create mode 100644 libmednahawk/src/snes/src/chip/st010/st010_data.hpp create mode 100644 libmednahawk/src/snes/src/chip/st010/st010_op.cpp create mode 100644 libmednahawk/src/snes/src/chip/st011/st011.cpp create mode 100644 libmednahawk/src/snes/src/chip/st011/st011.hpp create mode 100644 libmednahawk/src/snes/src/chip/st018/st018.cpp create mode 100644 libmednahawk/src/snes/src/chip/st018/st018.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/bus/bus.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/bus/bus.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/core/core.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/core/core.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/core/opcode_table.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/core/opcodes.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/core/registers.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/disasm/disasm.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/disasm/disasm.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/memory/memory.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/memory/memory.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/mmio/mmio.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/mmio/mmio.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/serialization.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/superfx.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/superfx.hpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/timing/timing.cpp create mode 100644 libmednahawk/src/snes/src/chip/superfx/timing/timing.hpp create mode 100644 libmednahawk/src/snes/src/chip/supergameboy/supergameboy.cpp create mode 100644 libmednahawk/src/snes/src/chip/supergameboy/supergameboy.hpp create mode 100644 libmednahawk/src/snes/src/clean.bat create mode 100644 libmednahawk/src/snes/src/cpu/core/algorithms.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/core.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/core.hpp create mode 100644 libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.hpp create mode 100644 libmednahawk/src/snes/src/cpu/core/memory.hpp create mode 100644 libmednahawk/src/snes/src/cpu/core/opcode_misc.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/opcode_pc.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/opcode_read.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/opcode_rmw.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/opcode_write.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/registers.hpp create mode 100644 libmednahawk/src/snes/src/cpu/core/serialization.cpp create mode 100644 libmednahawk/src/snes/src/cpu/core/table.cpp create mode 100644 libmednahawk/src/snes/src/cpu/cpu-debugger.cpp create mode 100644 libmednahawk/src/snes/src/cpu/cpu-debugger.hpp create mode 100644 libmednahawk/src/snes/src/cpu/cpu.cpp create mode 100644 libmednahawk/src/snes/src/cpu/cpu.hpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.hpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/dma/dma.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/dma/dma.hpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/memory/memory.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/memory/memory.hpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.hpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/scpu.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/scpu.hpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/serialization.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/timing/event.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/timing/irq.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/timing/joypad.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/timing/timing.cpp create mode 100644 libmednahawk/src/snes/src/cpu/scpu/timing/timing.hpp create mode 100644 libmednahawk/src/snes/src/data/bsnes.Manifest create mode 100644 libmednahawk/src/snes/src/data/bsnes.desktop create mode 100644 libmednahawk/src/snes/src/data/bsnes.ico create mode 100644 libmednahawk/src/snes/src/data/bsnes.png create mode 100644 libmednahawk/src/snes/src/data/documentation.html create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/accessories-text-editor.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/applications-multimedia.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/appointment-new.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/audio-volume-high.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/document-open.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/folder-new.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/folder.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/help-browser.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/image-x-generic.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/input-gaming.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/item-check-off.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/item-check-on.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/item-radio-off.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/item-radio-on.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/media-playback-start.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/media-playback-stop.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/media-record.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/preferences-desktop.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/preferences-system.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/process-stop.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/system-file-manager.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/system-search.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/text-x-generic.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/utilities-terminal.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/video-display.png create mode 100644 libmednahawk/src/snes/src/data/icons-16x16/view-refresh.png create mode 100644 libmednahawk/src/snes/src/data/license.html create mode 100644 libmednahawk/src/snes/src/data/logo.png create mode 100644 libmednahawk/src/snes/src/dsp/adsp/adsp.cpp create mode 100644 libmednahawk/src/snes/src/dsp/adsp/adsp.hpp create mode 100644 libmednahawk/src/snes/src/dsp/adsp/adsp_tables.cpp create mode 100644 libmednahawk/src/snes/src/dsp/dsp.hpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/brr.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/counter.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.hpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/echo.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/envelope.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/gaussian.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/misc.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/sdsp.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/sdsp.hpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/serialization.cpp create mode 100644 libmednahawk/src/snes/src/dsp/sdsp/voice.cpp create mode 100644 libmednahawk/src/snes/src/interface.hpp create mode 100644 libmednahawk/src/snes/src/lib/libco/amd64.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark_impl.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.h create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/ppc.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc.S create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.S create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.h create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/readme.txt create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests.txt create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_libco.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_regs.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_threads.c create mode 100644 libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/testing.h create mode 100644 libmednahawk/src/snes/src/lib/libco/fiber.c create mode 100644 libmednahawk/src/snes/src/lib/libco/libco.c create mode 100644 libmednahawk/src/snes/src/lib/libco/libco.h create mode 100644 libmednahawk/src/snes/src/lib/libco/ppc-elf.c create mode 100644 libmednahawk/src/snes/src/lib/libco/ppc.c create mode 100644 libmednahawk/src/snes/src/lib/libco/ppc.s create mode 100644 libmednahawk/src/snes/src/lib/libco/ppc64.s create mode 100644 libmednahawk/src/snes/src/lib/libco/sjlj.c create mode 100644 libmednahawk/src/snes/src/lib/libco/ucontext.c create mode 100644 libmednahawk/src/snes/src/lib/libco/x86.c create mode 100644 libmednahawk/src/snes/src/lib/nall/Makefile create mode 100644 libmednahawk/src/snes/src/lib/nall/Makefile-qt create mode 100644 libmednahawk/src/snes/src/lib/nall/algorithm.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/any.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/array.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/base64.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/bit.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/config.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/crc32.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/detect.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/dictionary.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/dl.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/endian.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/file.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/filemap.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/function.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/input.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/lzss.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/moduloarray.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/platform.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/priorityqueue.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/property.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/serial.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/serializer.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/sha256.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/sort.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/static.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/stdint.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/base.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/cast.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/compare.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/convert.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/core.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/filename.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/match.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/math.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/replace.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/split.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/strl.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/trim.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/string/utility.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/traits.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/ups.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/utf8.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/utility.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/varint.hpp create mode 100644 libmednahawk/src/snes/src/lib/nall/vector.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/alsa.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/ao.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/directsound.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/openal.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/oss.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/pulseaudio.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/audio/pulseaudiosimple.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input/carbon.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input/directinput.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input/rawinput.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input/sdl.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input/x.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/input/xlibkeys.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/ruby.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/ruby.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/ruby_audio.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/ruby_impl.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/direct3d.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/directdraw.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/gdi.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/glx.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/opengl.hpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/qtopengl.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/qtraster.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/sdl.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/wgl.cpp create mode 100644 libmednahawk/src/snes/src/lib/ruby/video/xv.cpp create mode 100644 libmednahawk/src/snes/src/lib/sync.bat create mode 100644 libmednahawk/src/snes/src/lib/sync.sh create mode 100644 libmednahawk/src/snes/src/memory/memory-inline.hpp create mode 100644 libmednahawk/src/snes/src/memory/memory.cpp create mode 100644 libmednahawk/src/snes/src/memory/memory.hpp create mode 100644 libmednahawk/src/snes/src/memory/smemory/generic.cpp create mode 100644 libmednahawk/src/snes/src/memory/smemory/serialization.cpp create mode 100644 libmednahawk/src/snes/src/memory/smemory/smemory.cpp create mode 100644 libmednahawk/src/snes/src/memory/smemory/smemory.hpp create mode 100644 libmednahawk/src/snes/src/memory/smemory/system.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/bppu.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/bppu.hpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.hpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/debugger/render.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/memory/memory.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/memory/memory.hpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.hpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/addsub.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/bg.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/cache.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/line.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/mode7.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/oam.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/render.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/render.hpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/render/windows.cpp create mode 100644 libmednahawk/src/snes/src/ppu/bppu/serialization.cpp create mode 100644 libmednahawk/src/snes/src/ppu/ppu-debugger.cpp create mode 100644 libmednahawk/src/snes/src/ppu/ppu-debugger.hpp create mode 100644 libmednahawk/src/snes/src/ppu/ppu-inline.hpp create mode 100644 libmednahawk/src/snes/src/ppu/ppu.cpp create mode 100644 libmednahawk/src/snes/src/ppu/ppu.hpp create mode 100644 libmednahawk/src/snes/src/ppu/serialization.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/algorithms.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/core.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/core.hpp create mode 100644 libmednahawk/src/snes/src/smp/core/disassembler/disassembler.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/disassembler/disassembler.hpp create mode 100644 libmednahawk/src/snes/src/smp/core/memory.hpp create mode 100644 libmednahawk/src/snes/src/smp/core/opcode_misc.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/opcode_mov.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/opcode_pc.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/opcode_read.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/opcode_rmw.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/registers.hpp create mode 100644 libmednahawk/src/snes/src/smp/core/serialization.cpp create mode 100644 libmednahawk/src/snes/src/smp/core/table.cpp create mode 100644 libmednahawk/src/snes/src/smp/smp.cpp create mode 100644 libmednahawk/src/snes/src/smp/smp.hpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.cpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.hpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/memory/memory.cpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/memory/memory.hpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/serialization.cpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/ssmp.cpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/ssmp.hpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/timing/timing.cpp create mode 100644 libmednahawk/src/snes/src/smp/ssmp/timing/timing.hpp create mode 100644 libmednahawk/src/snes/src/system/audio/audio.cpp create mode 100644 libmednahawk/src/snes/src/system/audio/audio.hpp create mode 100644 libmednahawk/src/snes/src/system/config/config.cpp create mode 100644 libmednahawk/src/snes/src/system/config/config.hpp create mode 100644 libmednahawk/src/snes/src/system/debugger/debugger.cpp create mode 100644 libmednahawk/src/snes/src/system/debugger/debugger.hpp create mode 100644 libmednahawk/src/snes/src/system/input/input.cpp create mode 100644 libmednahawk/src/snes/src/system/input/input.hpp create mode 100644 libmednahawk/src/snes/src/system/interface/interface.hpp create mode 100644 libmednahawk/src/snes/src/system/scheduler/scheduler.cpp create mode 100644 libmednahawk/src/snes/src/system/scheduler/scheduler.hpp create mode 100644 libmednahawk/src/snes/src/system/serialization.cpp create mode 100644 libmednahawk/src/snes/src/system/system.cpp create mode 100644 libmednahawk/src/snes/src/system/system.hpp create mode 100644 libmednahawk/src/snes/src/system/video/video.cpp create mode 100644 libmednahawk/src/snes/src/system/video/video.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/Makefile create mode 100644 libmednahawk/src/snes/src/ui_qt/application/application.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/application/application.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/application/init.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/application/qb.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/application/qb.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/about.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/about.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/base.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/diskbrowser.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/diskbrowser.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/htmlviewer.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/htmlviewer.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/loader.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/loader.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/main.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/base/main.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/config.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/config.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/debugger.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/debugger.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tracer.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/debugger/tracer.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/controller.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/controller.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/input.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/input.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/userinterface-emulationspeed.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/userinterface-general.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/userinterface-states.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/userinterface-system.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/userinterface-videosettings.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/input/userinterface.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/interface.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/interface.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/link/filter.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/link/filter.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/link/reader.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/link/reader.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/main.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/movie/movie.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/movie/movie.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/platform/platform_osx.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/platform/platform_win.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/platform/platform_x.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/resource/resource.qrc create mode 100644 libmednahawk/src/snes/src/ui_qt/resource/resource.rc create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/advanced.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/advanced.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/audio.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/audio.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/input.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/input.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/paths.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/paths.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/pixelshader.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/pixelshader.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/settings.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/settings.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/video.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/settings/video.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/state/state.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/state/state.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/cheateditor.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/cheateditor.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/statemanager.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/statemanager.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/tools.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/tools/tools.moc.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/ui-base.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/utility/system-state.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/utility/utility.cpp create mode 100644 libmednahawk/src/snes/src/ui_qt/utility/utility.hpp create mode 100644 libmednahawk/src/snes/src/ui_qt/utility/window.cpp create mode 100644 libmednahawk/src/sound.h create mode 100644 libmednahawk/src/sound/Blip_Buffer.cpp create mode 100644 libmednahawk/src/sound/Fir_Resampler.cpp create mode 100644 libmednahawk/src/sound/Makefile.am create mode 100644 libmednahawk/src/sound/Makefile.in create mode 100644 libmednahawk/src/sound/Stereo_Buffer.cpp create mode 100644 libmednahawk/src/sound/WAVRecord.cpp create mode 100644 libmednahawk/src/sound/WAVRecord.h create mode 100644 libmednahawk/src/sound/sound.cpp create mode 100644 libmednahawk/src/state-common.h create mode 100644 libmednahawk/src/state-driver.h create mode 100644 libmednahawk/src/state.cpp create mode 100644 libmednahawk/src/state.h create mode 100644 libmednahawk/src/string/ConvertUTF.cpp create mode 100644 libmednahawk/src/string/ConvertUTF.h create mode 100644 libmednahawk/src/string/Makefile.am.inc create mode 100644 libmednahawk/src/string/escape.cpp create mode 100644 libmednahawk/src/string/escape.h create mode 100644 libmednahawk/src/string/world_strtod.c create mode 100644 libmednahawk/src/string/world_strtod.h create mode 100644 libmednahawk/src/tests.cpp create mode 100644 libmednahawk/src/tests.h create mode 100644 libmednahawk/src/tremor/!!!VERSION create mode 100644 libmednahawk/src/tremor/CHANGELOG create mode 100644 libmednahawk/src/tremor/COPYING create mode 100644 libmednahawk/src/tremor/Makefile.am create mode 100644 libmednahawk/src/tremor/Makefile.in create mode 100644 libmednahawk/src/tremor/README create mode 100644 libmednahawk/src/tremor/Version_script.in create mode 100644 libmednahawk/src/tremor/asm_arm.h create mode 100644 libmednahawk/src/tremor/backends.h create mode 100644 libmednahawk/src/tremor/bitwise.c create mode 100644 libmednahawk/src/tremor/block.c create mode 100644 libmednahawk/src/tremor/block.h create mode 100644 libmednahawk/src/tremor/codebook.c create mode 100644 libmednahawk/src/tremor/codebook.h create mode 100644 libmednahawk/src/tremor/codec_internal.h create mode 100644 libmednahawk/src/tremor/config_types.h create mode 100644 libmednahawk/src/tremor/configure.in create mode 100644 libmednahawk/src/tremor/floor0.c create mode 100644 libmednahawk/src/tremor/floor1.c create mode 100644 libmednahawk/src/tremor/framing.c create mode 100644 libmednahawk/src/tremor/info.c create mode 100644 libmednahawk/src/tremor/iseeking_example.c create mode 100644 libmednahawk/src/tremor/ivorbiscodec.h create mode 100644 libmednahawk/src/tremor/ivorbisfile.h create mode 100644 libmednahawk/src/tremor/ivorbisfile_example.c create mode 100644 libmednahawk/src/tremor/lsp_lookup.h create mode 100644 libmednahawk/src/tremor/mapping0.c create mode 100644 libmednahawk/src/tremor/mdct.c create mode 100644 libmednahawk/src/tremor/mdct.h create mode 100644 libmednahawk/src/tremor/mdct_lookup.h create mode 100644 libmednahawk/src/tremor/misc.h create mode 100644 libmednahawk/src/tremor/ogg.h create mode 100644 libmednahawk/src/tremor/os.h create mode 100644 libmednahawk/src/tremor/os_types.h create mode 100644 libmednahawk/src/tremor/registry.c create mode 100644 libmednahawk/src/tremor/registry.h create mode 100644 libmednahawk/src/tremor/res012.c create mode 100644 libmednahawk/src/tremor/sharedbook.c create mode 100644 libmednahawk/src/tremor/synthesis.c create mode 100644 libmednahawk/src/tremor/vorbisfile.c create mode 100644 libmednahawk/src/tremor/vorbisidec.pc.in create mode 100644 libmednahawk/src/tremor/window.c create mode 100644 libmednahawk/src/tremor/window.h create mode 100644 libmednahawk/src/tremor/window_lookup.h create mode 100644 libmednahawk/src/trio/CHANGES create mode 100644 libmednahawk/src/trio/Makefile.am create mode 100644 libmednahawk/src/trio/Makefile.in create mode 100644 libmednahawk/src/trio/trio.c create mode 100644 libmednahawk/src/trio/trionan.c create mode 100644 libmednahawk/src/trio/triostr.c create mode 100644 libmednahawk/src/types.h create mode 100644 libmednahawk/src/vb/Makefile.am create mode 100644 libmednahawk/src/vb/Makefile.in create mode 100644 libmednahawk/src/vb/debug.cpp create mode 100644 libmednahawk/src/vb/debug.h create mode 100644 libmednahawk/src/vb/input.cpp create mode 100644 libmednahawk/src/vb/input.h create mode 100644 libmednahawk/src/vb/timer.cpp create mode 100644 libmednahawk/src/vb/timer.h create mode 100644 libmednahawk/src/vb/vb.cpp create mode 100644 libmednahawk/src/vb/vb.h create mode 100644 libmednahawk/src/vb/vip.cpp create mode 100644 libmednahawk/src/vb/vip.h create mode 100644 libmednahawk/src/vb/vip_draw.inc create mode 100644 libmednahawk/src/vb/vsu.cpp create mode 100644 libmednahawk/src/vb/vsu.h create mode 100644 libmednahawk/src/video-driver.h create mode 100644 libmednahawk/src/video.h create mode 100644 libmednahawk/src/video/Deinterlacer.cpp create mode 100644 libmednahawk/src/video/Deinterlacer.h create mode 100644 libmednahawk/src/video/Makefile.am.inc create mode 100644 libmednahawk/src/video/font-data-12x13.c create mode 100644 libmednahawk/src/video/font-data-18x18.c create mode 100644 libmednahawk/src/video/font-data.cpp create mode 100644 libmednahawk/src/video/font-data.h create mode 100644 libmednahawk/src/video/font12x13.h create mode 100644 libmednahawk/src/video/font18x18.h create mode 100644 libmednahawk/src/video/font4x5.h create mode 100644 libmednahawk/src/video/font5x7.h create mode 100644 libmednahawk/src/video/font6x13.h create mode 100644 libmednahawk/src/video/font9x18.h create mode 100644 libmednahawk/src/video/png.cpp create mode 100644 libmednahawk/src/video/png.h create mode 100644 libmednahawk/src/video/primitives.cpp create mode 100644 libmednahawk/src/video/primitives.h create mode 100644 libmednahawk/src/video/resize.cpp create mode 100644 libmednahawk/src/video/resize.h create mode 100644 libmednahawk/src/video/selblur.cpp create mode 100644 libmednahawk/src/video/selblur.h create mode 100644 libmednahawk/src/video/surface.cpp create mode 100644 libmednahawk/src/video/surface.h create mode 100644 libmednahawk/src/video/tblur.cpp create mode 100644 libmednahawk/src/video/tblur.h create mode 100644 libmednahawk/src/video/text.cpp create mode 100644 libmednahawk/src/video/text.h create mode 100644 libmednahawk/src/video/video-common.h create mode 100644 libmednahawk/src/video/video.cpp create mode 100644 libmednahawk/src/wswan/Makefile.am create mode 100644 libmednahawk/src/wswan/Makefile.in create mode 100644 libmednahawk/src/wswan/debug.cpp create mode 100644 libmednahawk/src/wswan/debug.h create mode 100644 libmednahawk/src/wswan/dis/dis_decode.cpp create mode 100644 libmednahawk/src/wswan/dis/dis_groups.cpp create mode 100644 libmednahawk/src/wswan/dis/dis_tables.h create mode 100644 libmednahawk/src/wswan/dis/dis_tables.inc create mode 100644 libmednahawk/src/wswan/dis/disasm.h create mode 100644 libmednahawk/src/wswan/dis/opcodes.inc create mode 100644 libmednahawk/src/wswan/dis/resolve.cpp create mode 100644 libmednahawk/src/wswan/dis/syntax.cpp create mode 100644 libmednahawk/src/wswan/eeprom.cpp create mode 100644 libmednahawk/src/wswan/eeprom.h create mode 100644 libmednahawk/src/wswan/gfx.cpp create mode 100644 libmednahawk/src/wswan/gfx.h create mode 100644 libmednahawk/src/wswan/interrupt.cpp create mode 100644 libmednahawk/src/wswan/interrupt.h create mode 100644 libmednahawk/src/wswan/main.cpp create mode 100644 libmednahawk/src/wswan/memory.cpp create mode 100644 libmednahawk/src/wswan/memory.h create mode 100644 libmednahawk/src/wswan/rtc.cpp create mode 100644 libmednahawk/src/wswan/rtc.h create mode 100644 libmednahawk/src/wswan/sound.cpp create mode 100644 libmednahawk/src/wswan/sound.h create mode 100644 libmednahawk/src/wswan/start.inc create mode 100644 libmednahawk/src/wswan/tcache.cpp create mode 100644 libmednahawk/src/wswan/v30mz-ea.inc create mode 100644 libmednahawk/src/wswan/v30mz-modrm.inc create mode 100644 libmednahawk/src/wswan/v30mz-private.h create mode 100644 libmednahawk/src/wswan/v30mz.cpp create mode 100644 libmednahawk/src/wswan/v30mz.h create mode 100644 libmednahawk/src/wswan/wstech24.txt create mode 100644 libmednahawk/src/wswan/wswan.h create mode 100644 libmednahawk/zlib123/README create mode 100644 libmednahawk/zlib123/zconf.h create mode 100644 libmednahawk/zlib123/zlib-1.2.3_from_tastools create mode 100644 libmednahawk/zlib123/zlib-vc8-Win32.lib create mode 100644 libmednahawk/zlib123/zlib.h create mode 100644 libmednahawk/zlib123/zutil.h diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj index 28f8a16142..28a210a9dc 100644 --- a/BizHawk.Emulation/BizHawk.Emulation.csproj +++ b/BizHawk.Emulation/BizHawk.Emulation.csproj @@ -75,6 +75,9 @@ + + VersionInfo.cs + @@ -366,6 +369,8 @@ + + @@ -526,8 +531,8 @@ - + diff --git a/BizHawk.Emulation/Consoles/PSX/LibMednahawkDll.cs b/BizHawk.Emulation/Consoles/PSX/LibMednahawkDll.cs new file mode 100644 index 0000000000..9342799021 --- /dev/null +++ b/BizHawk.Emulation/Consoles/PSX/LibMednahawkDll.cs @@ -0,0 +1,52 @@ +using System; +using System.Runtime.InteropServices; + +public unsafe static class LibMednahawkDll +{ + public enum eProp : int + { + GetPtr_FramebufferPointer, + GetPtr_FramebufferPitchPixels, + GetPtr_FramebufferWidth, + GetPtr_FramebufferHeight, + SetPtr_FopenCallback, + SetPtr_FcloseCallback, + SetPtr_FopCallback + } + + public enum FOP: int + { + FOP_fread, + FOP_fwrite, + FOP_fflush, + FOP_fseeko, + FOP_ftello, + FOP_ferror, + FOP_clearerr, + FOP_size + }; + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate IntPtr t_FopenCallback(string fname, string mode); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int t_FcloseCallback(IntPtr fp); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate long t_FopCallback(int op, IntPtr ptr, long a, long b, IntPtr fp); + + [DllImport("libmednahawk.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr dll_GetPropPtr(eProp prop); + + [DllImport("libmednahawk.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern void dll_SetPropPtr(eProp prop, IntPtr val); + + [DllImport("libmednahawk.dll", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.U1)] + public static extern bool dll_Initialize(); + + [DllImport("libmednahawk.dll", CallingConvention = CallingConvention.Cdecl)] + public static extern void psx_FrameAdvance(); + + [DllImport("libmednahawk.dll", CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.U1)] + public static extern bool psx_LoadCue(string path); +} diff --git a/BizHawk.Emulation/Consoles/PSX/Octoshock.cs b/BizHawk.Emulation/Consoles/PSX/Octoshock.cs new file mode 100644 index 0000000000..917e7cc23a --- /dev/null +++ b/BizHawk.Emulation/Consoles/PSX/Octoshock.cs @@ -0,0 +1,254 @@ +using System; +using System.Runtime.InteropServices; +using System.IO; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BizHawk.Emulation.Consoles.PSX +{ + public unsafe class Octoshock : IEmulator, IVideoProvider, ISoundProvider + { + public string SystemId { get { return "NULL"; } } + public static readonly ControllerDefinition NullController = new ControllerDefinition { Name = "Null Controller" }; + + private int[] frameBuffer = new int[0]; + private Random rand = new Random(); + public CoreInputComm CoreInputComm { get; set; } + public CoreOutputComm CoreOutputComm { get; private set; } + public IVideoProvider VideoProvider { get { return this; } } + public ISoundProvider SoundProvider { get { return this; } } + public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(this, 735); } } + public bool StartAsyncSound() { return true; } + public void EndAsyncSound() { } + + //we can only have one active core at a time, due to the lib being so static. + //so we'll track the current one here and detach the previous one whenever a new one is booted up. + static Octoshock CurrOctoshockCore; + + bool disposed = false; + public void Dispose() + { + if (disposed) return; + disposed = true; + + //BizHawk.Emulation.Consoles.Nintendo.SNES.LibsnesDll.snes_set_audio_sample(null); + } + + public Octoshock() + { + var domains = new List(); + CoreOutputComm = new CoreOutputComm(); + CoreInputComm = new CoreInputComm(); + VirtualWidth = BufferWidth = 256; + BufferHeight = 192; + } + + void Attach() + { + //attach this core as the current + if (CurrOctoshockCore != null) + CurrOctoshockCore.Dispose(); + CurrOctoshockCore = this; + } + + //note to self: try to make mednafen have file IO callbacks into here: open, close, read, write. + //we'll trick mednafen into using a virtual filesystem and track the fake files internally + + public void LoadCuePath(string path) + { + Attach(); + + //note to self: + //consider loading a fake cue, which is generated by our Disc class, and converting all reads to the fake bin to reads into the disc class. + //thatd be pretty cool.... (may need to add an absolute byte range read method into the disc class, which can traverse the requisite LBAs)... + //...but... are there other ideas? + LibMednahawkDll.psx_LoadCue(path); + } + + + static Octoshock() + { + LibMednahawkDll.dll_Initialize(); + + FopenCallback = new LibMednahawkDll.t_FopenCallback(FopenCallbackProc); + FcloseCallback = new LibMednahawkDll.t_FcloseCallback(FcloseCallbackProc); + FopCallback = new LibMednahawkDll.t_FopCallback(FopCallbackProc); + LibMednahawkDll.dll_SetPropPtr(LibMednahawkDll.eProp.SetPtr_FopenCallback, Marshal.GetFunctionPointerForDelegate(FopenCallback)); + LibMednahawkDll.dll_SetPropPtr(LibMednahawkDll.eProp.SetPtr_FcloseCallback, Marshal.GetFunctionPointerForDelegate(FcloseCallback)); + LibMednahawkDll.dll_SetPropPtr(LibMednahawkDll.eProp.SetPtr_FopCallback, Marshal.GetFunctionPointerForDelegate(FopCallback)); + } + + static LibMednahawkDll.t_FopenCallback FopenCallback; + static LibMednahawkDll.t_FcloseCallback FcloseCallback; + static LibMednahawkDll.t_FopCallback FopCallback; + + class VirtualFile : IDisposable + { + public Stream stream; + public int id; + public void Dispose() + { + if(stream != null) stream.Dispose(); + stream = null; + } + } + + static Dictionary VirtualFiles = new Dictionary(); + + static IntPtr FopenCallbackProc(string fname, string mode) + { + //TODO - probably this should never really fail. but for now, mednafen tries to create a bunch of junk, so just return failure for files which cant be opened + + if (fname.StartsWith("$psx")) + { + string[] parts = fname.Split('/'); + if (parts[0] != "$psx") throw new InvalidOperationException("Octoshock using some weird path we dont handle yet"); + if (parts[1] == "firmware") + { + fname = Path.Combine(CurrOctoshockCore.CoreInputComm.PSX_FirmwaresPath, parts[2]); + if (!File.Exists(fname)) + { + System.Windows.Forms.MessageBox.Show("the Octoshock core is referencing a firmware file which could not be found. Please make sure it's in your configured PSX firmwares folder. The referenced filename is: " + parts[1]); + } + } + } + + Stream stream = null; + if (mode == "rb") { if (File.Exists(fname)) stream = new FileStream(fname, FileMode.Open, FileAccess.Read, FileShare.Read); } + else if (mode == "wb") stream = new FileStream(fname, FileMode.Create, FileAccess.Write, FileShare.Read); + else throw new InvalidOperationException("unexpected virtual file mode from libmednahawk"); + + if (stream == null) return IntPtr.Zero; + + //find a free id. dont use 0 because it looks like an error + int id = 1; + for (; ; ) + { + RETRY: + foreach (var vfid in VirtualFiles.Keys) + if (vfid == id) + { + id++; + goto RETRY; + } + break; + } + + var ret = new VirtualFile(); + ret.id = id; + ret.stream = stream; + + VirtualFiles[ret.id] = ret; + return new IntPtr(ret.id); + } + static int FcloseCallbackProc(IntPtr fp) + { + int id = fp.ToInt32(); + VirtualFiles[id].stream.Dispose(); + VirtualFiles.Remove(id); + return 0; + } + static byte[] fiobuf = new byte[10*1024]; + static long FopCallbackProc(int op, IntPtr ptr, long a, long b, IntPtr fp) + { + var vf = VirtualFiles[fp.ToInt32()]; + int amt = (int)(a*b); + switch ((LibMednahawkDll.FOP)op) + { + case LibMednahawkDll.FOP.FOP_clearerr: return 0; + case LibMednahawkDll.FOP.FOP_ferror: return 0; + case LibMednahawkDll.FOP.FOP_fflush: vf.stream.Flush(); return 0; + case LibMednahawkDll.FOP.FOP_fread: + { + if(fiobuf.Length < amt) + fiobuf = new byte[amt]; + int read = vf.stream.Read(fiobuf, 0, amt); + Marshal.Copy(fiobuf, 0, ptr, amt); + return read / a; + } + case LibMednahawkDll.FOP.FOP_fseeko: + vf.stream.Seek(a, (SeekOrigin)b); + return vf.stream.Position; + case LibMednahawkDll.FOP.FOP_ftello: + return vf.stream.Position; + case LibMednahawkDll.FOP.FOP_fwrite: + { + if (fiobuf.Length < amt) + fiobuf = new byte[amt]; + Marshal.Copy(fiobuf, 0, ptr, amt); + vf.stream.Write(fiobuf, 0, amt); + return (int)b; + } + case LibMednahawkDll.FOP.FOP_size: return vf.stream.Length; + default: + throw new InvalidOperationException("INESTIMABLE GOPHER"); + } + } + + + public void ResetFrameCounter() + { + Frame = 0; + } + + public void FrameAdvance(bool render, bool rendersound) + { + LibMednahawkDll.psx_FrameAdvance(); + + if (render == false) return; + + int w = LibMednahawkDll.dll_GetPropPtr(LibMednahawkDll.eProp.GetPtr_FramebufferWidth).ToInt32(); + int h = LibMednahawkDll.dll_GetPropPtr(LibMednahawkDll.eProp.GetPtr_FramebufferHeight).ToInt32(); + int p = LibMednahawkDll.dll_GetPropPtr(LibMednahawkDll.eProp.GetPtr_FramebufferPitchPixels).ToInt32(); + IntPtr iptr = LibMednahawkDll.dll_GetPropPtr(LibMednahawkDll.eProp.GetPtr_FramebufferPointer); + void* ptr = iptr.ToPointer(); + + + VirtualWidth = BufferWidth = w; + BufferHeight = h; + + int len = w*h; + if (frameBuffer.Length != len) + frameBuffer = new int[len]; + + //todo - we could do the reformatting in the PSX core + //better yet, we could send a buffer into the psx core before frame advance to use for outputting video to + + for (int y = 0, i = 0; y < h; y++) + for (int x = 0; x < w; x++, i++) + { + frameBuffer[i] = (int)unchecked(((int*)ptr)[y * p + x] | (int)0xFF000000); + } + } + public ControllerDefinition ControllerDefinition { get { return NullController; } } + public IController Controller { get; set; } + + public int Frame { get; set; } + public int LagCount { get { return 0; } set { return; } } + public bool IsLagFrame { get { return false; } } + + public byte[] ReadSaveRam() { return null; } + public void StoreSaveRam(byte[] data) { } + public void ClearSaveRam() { } + public bool DeterministicEmulation { get { return true; } } + public bool SaveRamModified { get; set; } + public void SaveStateText(TextWriter writer) { } + public void LoadStateText(TextReader reader) { } + public void SaveStateBinary(BinaryWriter writer) { } + public void LoadStateBinary(BinaryReader reader) { } + public byte[] SaveStateBinary() { return new byte[1]; } + public int[] GetVideoBuffer() { return frameBuffer; } + public int VirtualWidth { get; private set; } + public int BufferWidth { get; private set; } + public int BufferHeight { get; private set; } + public int BackgroundColor { get { return 0; } } + public void GetSamples(short[] samples) { } + public void DiscardSamples() { } + public int MaxVolume { get; set; } + private IList memoryDomains; + public IList MemoryDomains { get { return memoryDomains; } } + public MemoryDomain MainMemory { get { return memoryDomains[0]; } } + } + +} diff --git a/BizHawk.Emulation/DiscSystem/Disc.API.cs b/BizHawk.Emulation/DiscSystem/Disc.API.cs index eeefdcdc7e..f7637b923c 100644 --- a/BizHawk.Emulation/DiscSystem/Disc.API.cs +++ b/BizHawk.Emulation/DiscSystem/Disc.API.cs @@ -150,37 +150,37 @@ namespace BizHawk.DiscSystem // converts LBA to minute:second:frame format. //TODO - somewhat redundant with Timestamp, which is due for refactoring into something not cue-related - public static void ConvertLBAtoMSF(int lba, out byte m, out byte s, out byte f) - { - lba += 150; - m = (byte) (lba / 75 / 60); - s = (byte) ((lba - (m * 75 * 60)) / 75); - f = (byte) (lba - (m * 75 * 60) - (s * 75)); - } + public static void ConvertLBAtoMSF(int lba, out byte m, out byte s, out byte f) + { + lba += 150; + m = (byte)(lba / 75 / 60); + s = (byte)((lba - (m * 75 * 60)) / 75); + f = (byte)(lba - (m * 75 * 60) - (s * 75)); + } - // converts MSF to LBA offset - public static int ConvertMSFtoLBA(byte m, byte s, byte f) - { - return f + (s*75) + (m*75*60) - 150; - } + // converts MSF to LBA offset + public static int ConvertMSFtoLBA(byte m, byte s, byte f) + { + return f + (s * 75) + (m * 75 * 60) - 150; + } - // gets an identifying hash. hashes the first 512 sectors of - // the first data track on the disc. - public string GetHash() - { - byte[] buffer = new byte[512*2352]; - foreach (var track in TOC.Sessions[0].Tracks) - { - if (track.TrackType == ETrackType.Audio) - continue; + // gets an identifying hash. hashes the first 512 sectors of + // the first data track on the disc. + public string GetHash() + { + byte[] buffer = new byte[512 * 2352]; + foreach (var track in TOC.Sessions[0].Tracks) + { + if (track.TrackType == ETrackType.Audio) + continue; - int lba_len = Math.Min(track.length_aba, 512); - for (int s=0; s<512 && sV+(=`Tloe)UJXL6U}!eP^ij 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%0D0l3aI9s(P?M^lYu z;w_l)_L5%1r1O?=9(p?HtLukDxR(2gik-{}S2(?5C-ck|sJb3d;-WdP%T-peypGwp zeCtM6pB&|mzi`@qoyZKn=gwf13Lr?y6KmUzpRRzprWdmASy zX4EA!nrm3G+>R+2YNj9}IXOA9lNsy^)IE(_QnB#Pgiz{}rV!O(|Xu7z|LV&Mq7NV=Uh7oX=v`7q4;u1shmA4_yHR9jQWp|6@J_#*m zjBsWKoDv?0U?e^8EZ^Zv66G3BHQDs1*D(n)nXTS~_Afg}^g8CMT*uJ;Li)ytLFbG14q z$2R=R_!HS3$F?A3j3&yO=x8+!plTA1R?p(m>RBjSJ&QuCX937$%uJ0Yso`v>Sd(5! zt7kcD^{kM!^|Iin)w4}#^=t)NJsY-G^C*s(`+gr^C>0EvEEkpmvf8Wi94FGnbccUG zx3-==miclW#+9OCHE5ded&eAE;^w`=>xWa@KbbUIT8LyTxq}PV$d)6>NHXD})`y#+|s?(`S#&j#oCX zXHxPq_1kNpRS?8B>Aa!%48bP@AI$yp{HRx)T3w~}&&l&WV0Nirgivz{0?DngeO1y?i5*O_T?^gg{Iab{#3ulh4cc1vOWIoYI8ux#!Im0UMEW-3sRZ~i6jZ}B;W&wrpEwc_JS*i>+P`{B%EZ{N}uv*Y$M zZ{rI{vwgU+o{3i#wjpR+MLi7Jz}AY~{jy#$3SU^gVCm^yvDbZR=3#*g=kT1?l_+6z z1V!Cl0Ve9ppAjav!g9iv9Zw9O;X!HyOnDAf83Q9bLOd>yyx1?Np4nGEB&VL)RUXW# zZ{W8tr=A(Nw14G`75J{$$?nco_Swo8`JlZ=BJj*kRwDZ~XLa^#$xaoe!d6dk4L)7? z_>jaQ_>92E1tS%1d`x>4UiN3W6Z_9|-nWQ!EM&ee_36LTr~SNy-SZf{d-2sy^m*|E zcq6AuiW@g-MR+l-*4Tx;cpBdN2p`tMuZjM4!kkr~rb{0`t_W|FVKj%!U2wTXzbO~EI)T$wSLzB%6rBL>?F4q#7nPfavW zke@yGw|}tR-$pvdn%Vi5K5eI&o$&*hIm@FV|@$&Lz~?p9ugUhdsc9c85c*9!3=xpF@3hd(Qa(kZ~10jymf(VCUUC5_yKZ? z-#_|iGsnv6O7u&aKl|dXcbXYgnwQ9+hQtl6@ukO;^N8~+YZb+wUU!~#KVR9w)jso1 z7wx*~t+w>Yh(>Idt2fk6;Un%jq>?E7ptBv3U0tz`R1 z@gw`=`(|$>Q01k+F&Cm09uzW`F5|29-u4%exa|`z$ai3Y+xSAl`wDuWdO_Z2MJM4c zms#)=jdDktyn38(?D%CGCkxRvbSuEiuEwp{4~tz*-ONzq|16jI!d*j_t0Fypzu(pF zXB-w@P#jW?H-4DvYTt*Dx0i{}KHI}cH6Hmlc>NB&mWx+&{?=D}8Uu`Vf+r9^HBe0CR`ljAXNCRnr#<+Dws*9P!IvUve-Mxq*s%h>}-W$LP4XNq}zocV9 zCT|KbRe2HgDMmpDMgaC5cUmugVJ>rSe{d?#=f-5ar9W3r%LW!1UNa_m6|UE06n@d3 z&`+T6!o(^TkF>`1PP_}S`H$}XZ>BZlWdrl7U+m3(wo7m9O|R|J7kkrZy9~zO44RkO z@wBeAw<68%$jf*mFRdjUkQK`81D@tfUd9`SO(lWihLXS~m=)rGpF7q7$oAWc9Z+oRK7%k#*a-9-lTnYWbs?L$`_Q5K$eH)tWVF2$k@%^$a98mYmA_mCqnk zsTYf{MtISOXZc~~W$eo``Ng7QAb684F(kHWsdlg~4! zi@GY?nB5hfFsAZ#G2ru;5`Ff`+!Af*w{jZGf3Gj?M83dOf-k3~{GoGJZp>ao@^2_s zabS>RidUr=uhPOWgnqBTSbtmpFQgyYf?f`>McPa;G4*8T4_@p=?r2LpwAsGuSHixZ zyS%u>`KfTqPMKxHJkeiH|JDAhE9xnCssdt74j@R5>Z1;Vy~y_ zzc%CQL6%JTR!Q3S;lN>S3X7H^k$GuX_`!2CN%}({YDc10 ztQx=)c_!3fU8mt%5BYG3wOnmgK;T@{5|&nZ3DL$Im?8J3Nu0GxQglIXVCK-B*(WZM z?L=L=$mo>}Tw8SokCm6 z;nZK(KIZ;Bc)2&Ykh}LBUtZXi-2i)bvri_#FS#ucVUl}ygByQZERbUnjv#%ppGEo-&b7)pIL^^3zakeU zI7%OvD9>QzXdrg9zqV=t03BDs*io;x>g#faH!8=l?%g9-vEwOtn_63SZ{lizTzxxn zH4qE`wX23AIXe2aRJ{0D$?m47SWLa;!HT0JYFDvLbhP~xxne=^DpjsnPz)k4azw2Z zi18WBkbA;Wa}pJQ)m*#@Z>oX#aBcV0oA2+%$4je@{MgaKv9||nt1=S&v{>8VSl3{! za!9fV6@KKXJ9adntzy5RqbKecYa66hvKO((X7AqK&%aIoSe4b!71sVUmSBo^t525ZldJU%o6Z==?V7wsZlP*?-e zA0n+K*T)KMy0%R8ccLBW578SeSLhGR$wjF43Hy8rmkb5Xa>K?*@CH`^OCi70B_`uS z-ayrA1Tzy$vp-mYknoiCfW9ww2CvDFFm1RMI9YBZC8dXw#K1n8gwKSnDJRo!x@1byZ-+XvGpNkli^)vP{*UbN4rx`Cp{plNosOE%z9`U?iqi z?vU8NqOTr&6!Aqq{hrZs;@1nt2s4w3Uno)Yq3s`0l)@$j_H+kUx5VL=W*)QO2Mz4*rBgJ|4Lf`>4548*$y%?7A3XJQCOz|*?={}fM zxsY43ma(`cGdE2ltE(Hnl_ncWvi5r#@gUk8o$QOll$S&hyEH0!pEbUcGpnU|2F`Cy z_91DNvKOmT_F~C&L6doBbLG|GV4NE%R8B3m%F%KhBge6F9EW2QcC<10>{s-+W)>Oy zuEVk%=YZI`rSH?~32F80)3ti`shX0>{b zE(Q(TYxNw}w0e$aT0KWGt)8QoR?ksOtCxLc^^%r)NlQKVU}^Q7ifQ#SN2=$vNvr4F zNUP^eNvoGxQ$6R|TD>H+UJ_a_39Xle)=NU`nNY2Mf*f<@I2lL8IfSp;dd|zWdhTC? zQ?WRGQJlUc$2oHRiX6W#M=61N-p4oBNKUuZOvMFv;`vPrGErSIr|6HlSyglbFSe6@i+=*Hh$Bq6Z+~{}p+~~(~qYoEP z7jE>?jP%1Z^NZP0EJO+N{*66_A11tR@@7r+X2;E-K87^|7%j#c%v2Rt0E-4#*%c=V ztgyQPK^Y?v&RiPCD)J{at3>>>U&;AP_+#2|ZH`x)L4y(lq*t^5sLbvgw&p0LG6)Qj9IV^OMd0klhm}$&mK-D^!va*g6ya z-$Y+lV^X_&S+%=yXm@dK3OdD^1Hl{kE)2f6MkLmz?7_l# zlYdIoJEgi#?yk~H^g6kXN_)OU^XWBge!4Wgcny7f4v&{c7apnCu~B;J*c{^$z9x+E zb<_$}O-C-=j9W@PsST{SpToWx@5oLz9ZUs2jxGi%euD9@lZkBW-3J~*)_F3b+)|14 zDWhMk-3zlmFisSmj7d9ovcOtwSKz@nkU80Vu!rncy`CA6RWF%gX2V+MLF_O6ZtIyZ z?G$vvL%CXc)VR9o)`^-hHDTsV@4n|Z_)%ZIhBPf|B@`3Bhudt!)wFj0_=iNeNG z0}5_wYQ>U%s2P0CEUVjBi}xI&&8WO?3WoG|&K-DW^7o(RQ{F)ANPn$P?$K}+j2-c6b#jl! z&DOj}tCM>)*v!T}+7mMdz>bwB6;a0V^X$93pXKDPt44Dd$#NG zTRJ?!n@+&K&v8$163+jl-TdY`KU;8({w4oZo}U&5_Xn!RB7gM zKjpBAd+Ua@Sgb9W*5YZ<&qiL)^)%3S%vn!Ep=fsWrPo={<754tS z`^0BX#r)ztN`F==(sHwzJgna!HK~2b-Fw&}1h!5a@6LHE@JKAM^{2d(4Q$;LJ92T_ zK3sCj;n|b6PyZ=PguD3Dmb2={&h|_DDT~E)VwT6wdSgdY()OjrBG0mq!`5Dz07sr> z!$-+)f>t_D+cD{JRXoe&`2yA4%ccL6laK5@o}bEuWO+RxJjI=9zCZj^>0TdX2dSU6 z)~61u^{K!!6TW@$^;}ID1D~bm94t*;tv@KCnI0dM{`5iir&BZuF{iT(w^1+wm|6Z9 zYzRNd_+Z80LHg&;dRhVEKNZi@3-Q>po)) zH?Y)|Fy(yKu)vjXL`P$uUc)JqUMI(2U9^@{Cw-?JUk+?Oh@B*;a~K^S&Dwp%+jtnO z2~!gWET-3O#6p|Z-enpE^IJKs`tyMqyWMr1m1V^=(_IpX2LrQlm?Yh?DhmW-VJ;S@uwMy%?1nQ#2&ar4ELoxF5~2lFYu zF=~@xnv~i0?r4K9uS5wbCO!cRK3)Ns1YzuL7-Ueq7G6c<_@r@H)ofE4~Pg3+(Gj`L|OVW(ALbBip) za(j1eO#yi|TqNNG`xy}Z{8}AXfhxWhhRF=hX8aiel7$5R4n~Xb|8V0COy-3f+Q<3MR6Kb)C5-u&?G$sO@ zZgH`lfojt{cv9E-r=OU?-V|vH=H&a!cb1Mq9g41@p%QsaTwttuG7WWD!mXzms>cEk zGk<|g4D~N?MQ02)9?nF>Z-b@bYI+Unll=MmjEkZfvf;Mi(X7V(T@j-{pSjHNMl&i4 zjIZBwuR5mjC2ajqY z)HdGS@DFv3MHq>tjF%b{{-=taEEQMT7ZQPE9}ce(dZMz{)=;zzYqYJ~#v@a*8c&SI zkIX#F+nKEW+FI7p6Pd_=mc5zt+0Ej|l|qgtH$QqE@3qXD7tJ5QwKIJ!Z@jYhSL|d3 zzy>E)qq1~Fk%C$sa{)`9AsIM?fVo2aklt)VWriJm=KErG3)>Du&@ zW*#4G!`#e+8KJ!ry%_b^!VY-O!KEH7LhFTXx_=G(8T6q+gnarfthvDGUlUKTY?If0 z`mLoqGbeu&5uZ}E1qw9R_0%{t@Lcgi5&)0ASbr!8=K&PsdImL43_8yC-yi}U2 zA>r#pay0z;!q>iAWWPsm*@##Hg2$(8W+HBg86s93*m?j7!xHV*+~GLcgEw&Y87b)2 zLC+~P7GI3iz_#avN)%GoZs{&mXVg;<*etI3T}@X!OBeozSS2(#VE z<%vslX^}Un#>nP5RWk!v+JQH!zl!|{x;X@!6M)%15zod?=LNH50#JN~jQpP1B`-%B z;`xySaV+-9s)_NVks0XP@tT*rCGQwiVHni+fG3)FOsDe=6>tH-F978xFn5lpi7OGk z7VI(K!9oX?FF4)7&(S2NMF-nXHDVQf4+7^1MH4M?7wjnq9@+pWm^Iw}HtY-TGro^a zD6*w8yJ5UcZLq>7---K)8d;U9;l#C8?!bhMrz*1WBNv?FV|Otg?#NbL+zD_24bNW8 z$9~f3Xf^ESOadP|W3@hJ_^;u&wpJFbYS=5C8v;Voq-WJ?*qI7}KM*U8ORlheI6C!g z<2T}pSJ6Cf0){3~oqEM9 zAj~(l)0ekLe%Ca36mPTw2&K{6(jApUp{7?q0i7QH04`NciJtFPRxDc_(+IteuC1lD zz#s zZx4HjCK9Q}17Y2;3}Gjie#0?0p>oQj`T51~!HD!g*5SQ=WDRjPlK?4v0wUZI4n9Hdaq7Ux-l4UVd`(1p5MCOzSMe$wHSTa z)DmP{_ONp+R(k?3YFHDS>)eeuxjP*5%r*X?>F;H%x4+Q!Mn;@J8UA)Sre<4h;|I1O zWuCUwdcL3Ll?}Px-EWBHrfc-U2~{s;UvMmO1r2cI2X|<6$Xy(%gth0` z`Od$-_`A5$n{xP()zfuK8AC2g=5v(SI4kgD)h+ZlMre0ADp?2kDF;#m)~hx zAL*%GFjP8m+P#}+o)}-Z3K79!`d{qZuBL(EUOVA!_a2`NoZoENS5UXFZwmah z*q4E_uUkHHICj0Uh&k8qj`a1Dn}E53`7I+YqPLxwG0oT{81BMffT^3n5PLe@`hBjf z>jxPk?5{-_KQPm2w!hTs8TJRIVpjVz!H0Cu5G`NgwW_5}2anW3!!LjgtQFYi(0*DH zoayUl`aooYDLnf;K9l%Jw2tEbpm3m*$9QBrj&b`AqSegv?QIyZ?TsN^c#dw{ z2=wRsb~TKrH`(RuYN+w;Z}0%KkY_~Na((Z#=cw|AzeWu3b~XM8KGhm+Ev4O79;|Qd zua8XEN$2m=N#`{)U!Jv=GQ>z5DQhVyF|+IK_R8gReW#-zK}Qk;XSW~});a_-dAA&M zNP7F4uqFaa=e}_4-7DLxZi)Oa0$QDi?ypl@zmEF@LM1wIA$u11V_wW9ONU-g)#-vMYqP3iZ8u{&5aazYYz8`H1 zz+T^A!!=sR%EN>4yDL{78YE05UBW4Eqz>1p^}WizY0UE{+QR=C=d$pR>#@Ed zcJulks0XJ%ujSoE%e#OsZM&m$u%2{rIXuCrZ^g%5iSYde5xCUg0uvfYkKpI|cCYB6 zj}vjvk44-VZr1u0%Non0TaPcmx3-#Zfh(Rg3>fQfthj^plTkMoU5PhoQhX6zhQ3q%Ci~FCp&%0lXo>cbIWgGp>td~r5C^$AzL)2sXHm>%V79Og@ zk^D()>luIDO`*CK-=?;6QQAqD@01vDnerCNk96fgAm9%`C=G#h403kidDXVP03oFd z_#y!aV8Xe)5co57TEE!8y43!`N!Vd-@;e$7_=wm(*xDRluh_v}->HTVAVc5_)-_Di zHX{Qv58Jr%;Gh=}=z!l48g*d{yZe=0)7CO5Mcmq!Sk&ViRO5TG6Dj<#;8R}vN%*9$ zdYJdK4j&`tclp|*4{1RUR-5v>Z#5kz_aRD6KeLXix>m33$FJWmu%c-=Fs0nCi=%%7VI?s>4Ac~^?I`xLRxfqg3=qm@qyn8XZ~np zt9IIw7YN5bdhC~GXBF`o@nPwTh+FlNmQan-jR@C+r;!`z(w?OaYz|eoglf^5Dyj81 zhn&9c(aTz%pckg^sS4G^B1!y!_5__Us8YFFwoUJ>3e;++n*&a*nKl?tH`mvV9YtZM zTWjV6CgPgwJ5JwnA$gAS)~SYS{D?}XPNKiP)1IKsj74i{A1|V{KBKK6{A&qS%OmF6 z#*JLvTRx?6qtG>xORmw6m^FOF?B*@pfGvy#YQVWt{IN>PLd1d|Em&_J zS#I#Rq9ECQOxZ}O33bCZJy&5)QXH88SVi_hIi5#@AQQR8ZIaB9nd^t#9nB zk7V2Omu5AKEl()Tyye^9PQYtbvY80{(t}egUWtFH8-kPKts?bg+HsgQ{1y3X7{x?m zlS4^$!$jo?W?1zl-mFqKa#rfl1h^G#IFNYuL;8llx$=mrMC;{C{n+q_u;J>e2v!{v zb`Oh;apYuT@KSZduPb;R zZaB-x0R}`a!CwIM_>lD0@nDjH2g#gx0Gl{lc;HFxAU2ipz%_SpoA{7~2c8xzYs8HW z1Rl`omLDEKbZ*82i3BK>2i@4_TEcX~1cCeF;D(>W01)npy~j>dQ$m9NY&*?};M)~- zxA2||>>q3nOwNr6k+kg=h_KU(b7wmtLZ?K89fSyg|IgBff4rh4IFYP~Pk};?fNnkl z7!OcZM@&7Ap`jlBJ~{CQAvnE%E1w29NMiv{Eb_X*161Zkf?5mVEGQBW26N#-QtN9v zB0wN2ut9)8;tcTM*B28^gcFB>2dA{Yl}CUF(cZ)v;6dso9S=^0oj6kf27JJzObJOg zoGg*o2LqGl`GNq0sRRbtSth0r`X|pN1KX~){vaI;^!NY+zj44&$70Op#+YgsM+Y9I z8|NmDi)GqIju3(>P7Q4jq990zn}gN9Q!v;y93vncJXIBhJ)LY0sv4gdzD}GT6eNIT z+Z?FY_DWlcB2MTNaYCPddUzySKq>Fri6CJRK|-f@n-{v@9nwxt$3nHfy=t7c7`?dV zZRw0SIa)&M$^s6L9ej9jyb!7JMT~eMSe^Cgz>vuasdxb;w6lc|!^H~`P?1q9^9%;6 zIbP_`6Ccvz1sxwKYM^5P+$0k|=$Qp0E_8~xkilUxj)7`RT!@IlNkQ>|I1YT>I1Re1 zU?+WuGIV$V7I47eP6Z4I4f%j@alr5{T;Hz95-;FvM|6mQ;a+mzKf}D*fHOT_xK0ld zuhv7v_sqCZdJOS+|^`1&&Y7$9SQ3n0Udh#|th>tzhQ@wSxgd ziCSN$+WOZPlrYB&wMM)^_XlAo*nK`nq_w1-BbSSap=yt|9R~{z7+4BU8T~l9bh?Z! zVK2==r?!UER5u0PxGCcO*T_r6Jl_f61wxDyh#P3;Gc2b%;~>FdFD`_a5JF6l2tfyG z!H0?YK2hrnxQ+NBb)Pur@k6bMA8I*%pbyFM1FbFszyRGRMp690QA1W}h#*kpsL+8c zqPR!D z(_P{m#11nkb|6$BQJX*omv5WeN~0Xj_fkF0VBiB|1Dz&%oH^R^3lnH>OUW<%3Rem} zzwmQ>4bw>BLBaV2Q&C>z5YTl*WEd#D02ag>_%{AZX*q_*Y&ixRc$sZ4X-|1S$6mhS zi-ZxxS1T>wP)#;uORp@e)xx$t4=oI@kUM^TS8=TI;{jD`He=g0s`%|9?c zi2MUfk4lLj3de`hl!K_xk%M^33=aBvb3WxCXp75}f8cmR<{t!Jl#+ia7hVjVgJ?wc zD&o5 zZ&ITB{K!vG4yqja32`40`H77CNWuAua^Z(L-pI^R;6CEX$WauGA7zg>+}6t0aQVzE z)vb)A#V(PeLUt`{(t--0oX;$&-of$4E~)^=?RZ1vEs)JL=Pk0v8=`$O=f0ILQ5A!~ zFrUsP=qx%L0&F{GLu^LY`$?{J^e`I&S?_9LB~KcZh>q#)ReqvG_?_BXrbPIY^L*`; zx`e<}Tg%zZkc(+}l+E0W_ya~W@gXEL%%!1DUgJY<>!0ab!IZlcB_e-X z*ykvh)fK%*-Qah|f9)V9gu3C6l;;H5p@RfW)V5M-;?_C=R!w2Z?MDHwc_Vmqz3#26r52>ajC7hA@DOL7i2!cUk8a5DHG{=deIP8 za2BR8WdUknzeDE~VX;6}00~J@6_#n}EJ4I?`boiCK;aH7NK^@ZTfk85VVfq!SMfH10VMjb<9pyM zh<%dvN!~5xN!mp22upc`4!LLQs^#>SNzl(&z=o3J8PE})Qkjl`Z;MLgAXguMDZU$Z zg%gKRfZV6`3PJ+73Peb_RMaL9jh`a;2>VcD3_E+I^oPV1SO=oD!60hqVnIMin1|A9 z>n#-f`v*i7o0qKhKXV=6un*`JBJi$Lg?cl%2u)-c=#x^_gYO8w z*-d`QMMze4Q59Kwp+kD1!|=k0Th8wQw5cfm; zt%51A%+b78IOAt|mxVKO{kcegOlj1lKRV_OZWI1!5I`cR^xT@oA7SBj6feOgwO&ah zq8`RDqSFhpwh#P0l*+J2FNj^ZnIMoNd$6IKe$CM+M6xL-bCfzut$QP z>TY3HC&Og3e=>Qbt2`e00pXFU`@4CI@?rtz@W;tn{1JSC;{7pMgg=5dki#E)hxSJz z1epDCGO9wu`y=yv`EVpc0GUACgQl4-C5f7n*m>{+nnNl@++D;5K!HC*Y=A3U)=D-2 zSg)W15Er0}w)v#?93PXLqnAx*8vvh>&dOcQ{%V6CIzaqTo!)zs-$VcOfDQ@Iyb?)Q z_^Ar5#a?nzokQIZhH#w5_89da!Jj5RK>ieJ+WY07M+XOAaDWfXYGc=HaJs1*K9u*7 z`EJvZX#vO^=hAT*99Z#lD&G6RI&58J^-OW6Nu8H)wyge1ReKtQkn&Hi#P+jiy3C%* zwb@#6T=E`G&URutb*?T7_g!3wCC>x^2=ojADur$U2cw8#qKIMoaeVeu6a(Z;;;h_@ zvoh)3i$3j=W(_)UtSl6%2dQ$NHI+Q1w z@3;T$4)Fc{6I)GNPV+v1qbBdv`56VCm&=zIcvjYy<*f9B;)S!aOKtrGot41>RN9!) z5k&;G$9z`G{JDNY*6Q)9sIKYNcS*wL>N|FhSzMc=ZvBi*@)?O;jYyFQfa8?*Tz*eC__=dUpFq=-Df zPan8p@L$sDlzCF=aS~n&n%s14d;H6lB$a^7=q*SMh#Ya;yAy57y9X7WQ47{Y#3d>A zlzD0iRHqZD@*-Rd&fF#f0I=}r%tf-&sYU9+u9OriL9zt3k_1SypFDnu_|{c)&qO3) zaOa4zTBWSvizf*7Ebmu#Qwso{Z~Yo|00`F0m$*AX_~DnAPqonMx5ZtzNIk?&5yrCbs>XW~k)@nDLg0(cs%J(e{8|FX?iDUQi@O zuuO3gSoo4F891rnk&ij>;4J~2EGb%UfcMw}0wiX_MX2#G2(yTiu4rKz^>lPmjwY)D zHR6YaQQQ=9Mb+sbU`9?>F=@u&*b-fi8h8nk%-ov-6dwgZI{J%E6dZS5iC(J@!-v^^OC27_yfC_rlc$5NXrdYQGt3jc}T{ag5KZ9s3giv03 zhd`3ZVGTsD=>nQP~P(Ycgel8cLl1Q(aCUIssZhr!Rsy^Hzz8#xmK?(Ythj^h+vjHO}+ zL@RJGweA@D#BAiFCE!@#+kpc=>d#&I?7!LB1DC%z_~H>&o8CEm-F^t>|b2|eC>g5$k?9Pe>e9UlR~ z1!cm(xS1poN9cMa;sldG96etWP*Z$vlfJ`bPtbP=yxEx_-k4I_JAgM*O!+Rtnf#4wh01QwBz2txlZfDL{FaU$Y+HW9!KsrDfB zc~+Q*dp@iJs#x?k1Ln*G=G+uFa9kLCK`4H zh=LQJ!OO(=7w1s~_E99>u<4la#$+P_S1!CcsqN9bN$oe|&1sSXC?egKjyF~{fW({E zv*Hc%-jkT?55;ch(L2>HBo>GqdJ0$>0RDFG;qflL>NS%8TCILt0L z1ORlHi7US_uI*8PgYwCG77&@{y8xM*DE-2scz z6}{S9IK{k?B;J$K@jIii;xjcuo?%EjBv;(azr>dk!9G+U_^F7F-~VH zzPTwt383-?IM5TrCRUJ52u*2#G^L1r3xt{J^bV;2XCfP!fEgpe5rRVsa1gp7z)9&- zEcSu=NU?a69^W`dXMBTu6~#9W^2gRy8P;ctZ*<5pbZPnM3G%Gd8uus>;81wetvw-5 zFxSn#Z8*U&Pjnk_W(FEyOht5q(1wmKlsE?H7PW^DG1#mnz9C9|pBg6%F#KQMrwfj6 zL_RA)vFbkG2{qm(!W;cUl_k6piYE$zjQA#+(khm6pE8|YL*1tWlW?EH86xgeh;CeT z<)ElXs15qm);BVCT->Mh%^tD%Mi(5YtVJRv60~e17TJ6q7NRTEbn%HD-<-Ahh9PID z_=d`hV@;90Gf&L{%lTT{%nQkBHG0v#V z;i#E8oNrjH&lKOBZ}}SpGC)b0zo~&0lp}wWp!i1QZ%A!jQvN2>p1^zIYj{3*V~TNx zx>KccI1gsa;pB>MXtV2ZpAr_$w<>c}7WDH&mKKpNCvKS5qMcGsa1R!AVyU6zF;Xhr zg+pAc8apd#at&!(QK3s~$$&l^6I1Epcghq_zy<9i_2i+x4EVL-GdKv}5CYGn49>OQ z9cX>M0LeWHgVA|p09Wl)5(gJw3;OYYyk=@HrgD8}wMf zc1Lj8rxG!*duwwV>ZI|Z3(n`9M0!l*b5ac*3<`%JaOg>$E6hn9Bx{h=K|UxWuOst? z9+@xnAYT|rHoPCax@q1(GX5aftwfFDBvq|MKG}mB#apsQfjKD1Ga-?Id@@xPM1I#~ zZ8<9y8P+C}J6kCBL2~D}BK8>~xuc86g}tTfSC;%vro9z{M+N727>}YSDaR9mTtAiL zdCg)ArugTA$nVgYrPA^{*U~$r0-#C5;85QAolN^E6puz-jz`2lmK;x`#rjO~kACGp z|MELz0cFbX{2RqToZoptgg+(ZcQWm%ko%VDY|AIdBko(!g;IhCnI2P)XDGZG>G%hq z3=L^K;z%0#@aJoU6~%`?lv&oppZ5*}I~@L?o|?OUm1!S^;*H5hMq~WL6gd(9Jd%bw zY4J}MeTU%7VYPLAhv;e~$a2*nlw0*3N$zUY5^_r7Dz!dKk(Uu->%3KXh-_p!fHuK` zpXCQXl4Tz*t=+e!;Ras>kxzVSCE^*BNVR=bN8gD$8uvBz?xXg=eixdX?i6e~{8dta zB-QwT05py%^eN1I=IeC6r?pconW(zxfZb-h`c2q zto0_kiHjxlleB@m<)S@qA{z+6p3a`0#G)P|?NFEOr0xeVVzb~yz#<0V^jugXMug$+ z4zs(v&F(&tSov`GPOLn+yH#Q0)!qFn-QC}n#ob-RVgEY%xJMk(2iXh^ArUAg`BB(! zgzD>U^6=E=w`ce8!EkIA$xVWe6@N=H0{Fo}+8Q{yi=2Fx)yY%vtoN6JziT0v6#JO` zU1Uw*^_j{rkFt|pycSMOITPLQDOJKwkD4B(N-WwS$bhh#RBiU{Mc3l?=^cYp zicVI63$uAJU0$apbkO;}%dn4J$`qWeIOwNQhI6ptD$(#?mXVX(_MaM9CQ(D)FO{AB z%t_dW9e_Sg>IYReQRc@T%zvr^YgQie^+uOl4|OZv=W(E4ZRW|t+l^5HIL{@O9_%*E zfg`rbd|&U1@8PKp4a-N;9o>AM)BYgY*#(J(V6*9N&Hbu%4GXgyp}mDe8{wItu}S@k zaBk8VP39Bbr1->%j^Ie=&%1Q}3X6{PvmD*bq^<$O@bvEUE*Z4Bv|b$M*HUv@ZaqJ6 zGxm?-GcW<%UXTH3cmuVbKW)ryKnRJGyp~RKAA7emeFF>d?jvLhU{ui=4oX}PJ2-SL z#u;wi&-~Bt+H>sU`uPpM0H5DjH9vKkgn!pkZ~K4C?cb^M+fcitb3-^x6lxdQv)F?A zJ%%DQtI)+fdmwwremw`w;Jtpj5=KDwumwjs?0^(b9Icz|fqAd!Qi>Ct^huc~czywU zEeGrzeIZ)k75zH4KBb27=zM~L5A&2I40o8j=`e@(1)?r&l@o_~Egk0XH~YBRzo8$^ z%fDGaY9*`k23p9fhJG~nPNw;{t{n|Q%?;@`#bbtlo2N_U@^6fm$m-vzNL~0hH>57| z^fvo9V)U&34L;BL7oUR+WQot&ZiIj1W;LXLlfD#5rF1<_ssn>{9);|{kUozB$X`9Y zkS1v`+)<)n0+^ghp&bWRkFIj38m2-^Q=g`#VHQ}1mIl4bYkiRD#r*(&QICLZg5Y0g z`Q+jjW{4+5zw-Yj_&@E#9D?{k`jY#FIaB@01r3b)m1BBC_3&KCCKQTCk0XH+1F}Y?}!&PZ_J&*{yDYdhQFM5Lf&aLjFIOd;$`Jmh? z`oD1hh$8Lhc6y_InDfIHDa>b5R`Wq6%_H&wCcRA=_=D;yD(q{W+6hx$z^IT$dsn_X z3AJO4xPZDQYvcPw-#Fqka=O5IO5_Bn%{@dqFukx7lT~&ZTvutIGnH*t`|Q&?XYR(J z(Q%lgt6QhC!(^XioN_M92?euMsbM~-=G3y{X5W6b_4f!z$O@3@_Dc>uBA2@}gA{rH z5RKC%$HOo^gegYP3RG>)`WzalW1XMj6zC;V*jeYS$e}7ipCi!=o$}Ex8R&(NUpRU} z;0R9i0$7c%&ua;C_*$g>>G%bkPT^Nh1I)xP#IvRH<$+%*o=}Qi=@X+h@$@*rxM9(n%oFiolEJrrQ|B zBCJTJGq-0+XOgIta4c1s$5~Ia+IVco4+w$MN+9_)rR=kJP*l z9^^yk9}2VpFq+?E;(uJ=_yxHS7}?PJ905)-NrX0rG0d3xaZehA3H+ku34s^ueME;3 z8vCL2QHKv6_QCxkxWh*`^5&)tiazfn29=?Z`*a(^4$$-U49YeV`|J|thlGKFT6!23 z0+3-O1g41~IgI?tUW8$%5Qc5Tm5a#upoU-^-T-M=_fW@=<9q|>d0|>7T}(*aF^6m> zm_)Y^y6_du!QaCgL&~9(!0-^AV;q20rwq^(fFV0^lJsMy^V7lyN$Hsj(ifh^_zO$J zAs7^ieu}`NunnS)hzJY_){$l$dVXz~_)C`x^&*TXOG<@cskso8%8_w=$@4=}5tkl- zxhMd`O)8FT0hoy2e?o>6bpuaIJO8r9Uncl6SRP;F!5L6{XVS`n4Dl{nM;u-9kRq;Vwz#GH%C;iadVsv%aa9xB4e)C2&Zso zM9f7czoG7oFuIc#!4NK*T6l-gk7a&8e?L^%&FPu-cEcU1lhqrfW%<5em1(Tc*Wvg*yw_xmD+ zT-N&{;}xb14s%~Tuk&3W2Wpig-*sGK7xG<)hrzC4^Ie&Ir@Z;MXEEk7a$YxQ&3XMM z9l~TjeMtN=O9{@)eAmx7+$ux9YYDv(=ex)vOUrj<+E2cG%JUt=WX$y{Y%w$Eb(hsb z$3njAR@h2;@?AQ9A@)k)SCRRyO#3SYzs`Eji}8y~Bt}LQH^##8YmDW)eoVMiLcVJ; zexLJQ27nct@5;2F3jx23oYx`XRF0h2r>qcWVxQ^!p)r#G`eQQ2QuAMLA`qke7niC_ z$bV(pVc0&83J8`pD>jIS2MztFh!0kEPuw&%^xJPswn~kpIdSj}@E$ z%Cw(zjb|gA12f_=OAc&^ck@XDCCLpiW)c$Gzum127_ z6%b@DOcPi}y~pLe9m`}F;`vtRlwuhT%#+3p7wC8-+sj1sMcZWJb?$ArM%xTJrx2lg zPmnI7SKH|g4s?U!*@e!@LbZbm)^6E2nMR7s{FlGF*^hA}%-7}-1Mk=M8TGn8W8%zB zvzkOZ(@jbfw=->j2Hoqa#~0N)p+Wx{zRb$+6ntMfUqWy_#k?2h^NV>epz~u!k5Fse zskQ4&-&323F|+)G$`&Yg)V8Wi1b1tb)-!XT;|wsi5?@# z-usj-qFcJC9iqG77Z5jrx5aeOAky%CW(eYViTb7Mnk~BTbtPVN7?f`@QAFxF#8{Cf zBI|C*Kl(B82U{-`T!ODf<9$fJl}7fq$hVB~KG5T#sckkj$DEt|MAm{n#qWkHXFBCO zn6Fi5w6tZyKG^_x-d(6N>r2!kyfDEf(adtDYmPYB%w(k~Gpl=(3_GR~`WW%8!XY#J}Q+KBBv^p}4@J53%f{K7^Yhp?5p;$ww8M0DqEz5b%7m7<|UL} z&J#)pkB^E7>eW8Ab%HESr?g$@THpGZ*~m;cIJUPmJYfU@VZp?{a!dA=oEYS^s)E1| zm%>gwC|=5DNN5zEi6&-RaiM79CNyErjEcQC@=<>&N>kbYM`Nq}Ip>mzv`CY$Lnc^}>a zm8kf;7)YQATO~AMe$O$d)Cvf`C-J3L34ItiGaD`!qcfDXsrg|CF~SS_Ua0@jKK=ZJ z6EHbtRN@4ja9)Vm-A1={nAx|pB8tp!5347G`beL5WM)IHHRc`ZY^Y)NWMD&aOrrHt z-y9L9ggge;SlCb2G`Bk_nbW<&9`K%EOkAqw8Q#jh5PCp6@Y&L+`n9a3>!Lh3lC zj}L*~(2OVCuYbt+WZBt@Par}gdikJ;Pef8jgeXW;znyij=@=35%24=XAPY}IBYKk@ zhQ@3Gp+qu-YEq&m!q#ErX{m`jDP)ns30nbT72-8PeuMwVB4VA|l-8h@Vijson-;AI zYSUL4THMC@BKW;U%2zmE;d+~lS5nHfQ5LUQay4fmUWpo1C5~5cLZBm;l(S*VRlf0x zp=cBLA2y#FVx4ddQ?#P(?8Pby%&EmcvDuIKx|lo9FDN<{cb;ePW!jyG_`H5PpF{(S za~+?6eWb@HEPr#+oPyRrn89Rt{3v^TBIK<-7!QTnv$dGmg(0VT+;xhJOsI7+g(Xm@ z{0;U?&hx@BFFQUd<+_s@pHSFHi4!pmX6X0?hfbzmF4fV-s+Z&OZzMOl%rt)rp++8h zIS|*Yj4rE z>ykN(BuPPc&D!ohk)eTB4!XI>G^wIv0bTX6cMmaHCP3PIo)3r~>(lAJ4D}C@yJ_q) z8eil5`LP+K((lXqJS<i3N{Rw|G56^FNry{5lLwR<&sI1A4X@DH=AeWg4ewXrK&k z)-|aVO}dpKPd9luUDMF?$lNI!>dOyOH>YTX5CDQY?gtg$Lw14tRAk^+_^QG*f1xFW zPC!;|!228J{Gs~BjqgFKq9QVJX2$%XJ*)Prs~*6cA=D#%9a%9^Y2_>{2KoBLYcxp+ zuOtpap_x23Uc)R$P;AX62Li4xaq3IFS*2{`k!O$y9HHJy%4xN2_Cxwet2b93QI%-D ze5oIIvWNIi#tkDnwSHr&b8l*pOz3qXu{+9xWq*A!C33h0&r>{5#w@Q(9KkHB(_#Kk zADOX~*!2s0R@-(bUY($9mnQwO;Y>PZ&#oNyoMSQ@c8a&DA~;bwA=a0i06k!W0l<;$$aH>!L;qA}ri*goQMBk{dgl zw4>1OiNQ>FGY}4xrrjg_qi7KHB^q8olzflSkM*PG!?`^1ps7#q$i#y|BOWyH59KN9 z$^`RqlpFuRZ!+UwDg!3(9qIZ$>%9YJ2u&5Y*y_d=wi^@1wLS!phB8?;Q^+Rm6UayE zzVvcku2>KXtIcFsQ8!Fd^j9cF-+nLI7g~@b03>@I7X8Mpxgg`e+Ct+$N~Qt+Xki8X zaY!Yke?sf^$Jyae=5Iy(cNY0inXzB$CR|+X2h02-StgH3MYqvn<;w4*H$lkfp^%T` zzhSPx$6WI2&Hd)AXLEV*uekWnQ(F8tiH9K=_{Z@dYXuSi;XeHMQ1&y-eYpJb-%$7` z2dwJ&XYMUiROBb{kM6<(|4NDe1pe^_xFGzq!#~dFG{A)`o}O}I7B`$lh2no9rT>%1h3AT6Z}CI4CMR6F!*===L7$nO@VH| zWz7c?6HH!)*^1fNOv#p3z8G`68Vn_t{kP5c4f9>N`%RGxysA^=`!J+hWCP_mt2ae^ z#8f_T(8ve=JKc3gDjyhd6`l|TxiD*jI~O2AXJ*O?BKwEN9%?Iboskg4NoL6j-eflG z^F1FZW5P1!0~rtXd|(O>O(tq;Nis}6urxd@E+#BjPLT01BPUoa9+p2I9Ql0UzY!vG zg`~86;9sU7@H6;w*c|-}#vjyq`>{)O_GXdJ{b#$noDWSKxf}ftmJM$bGoD_^(_!K~wx^$_aia(|kle zd6@ff`QyKl%m;RofpFwkdOq+=crSSYrt^B(=ufYQ`?abkK2o( zCW4&coLu$`#yDmya4$}!ORyAD*+8qlQnCZnrFF~>6hfHHQFl^b34VIoAe>CPdXm_I zq^;yGuHL=gEgFdGJ>DRu;E=Y`B(4+eK!&eq@&#B^g|JWVr*Gz~XVb)F4oh0KQ(g5N z%8TqKMFdm~&*C5IhKMu%%S)NAfbuWTLyKUZ?=LUqc}e0tevSv;J<~dw17?bvB4%e}tndpAH9^9^BPan1by0xB+OK+>;EyCz+josJ`)Zb`{ktvz`=^+z#bQmgM#j!|%f> zK)a3s&7{aIbbg-HW4=U2*lr^0olMQi3-t;;=Ies2$0AHY*5i43W-X?ftOto(imb=> zNL)RPW!x+yvyYM-I9@wf+ni03Nm@*udJ3xECZe9EtdgjwImbAf({egh?|)#I_&_o( z*Ush&bXsmUSHmPZKbMA2Y-K$5DWh9{@p{da(pMML5J?3elRhbFe<7w}?s7JC8puE= z!PdKyO>Mx;CoM@&!?O|qP%H!e2LVu%OaMjqg_7~l6Qqi=^*1uq6 zB5oZK2Q&kN&z6&)uF*g)WKp- z0MNYzKp`GE7>hcHMBRGIyu(8SP~rFky{8F(QfxOFM-$skf=?Oso3P}d5Jhs@M9#vhJ^gcMZ7?OE|h-p>sEr?4ws z|0$=E7pwowjD1Wuv!Y@jn3ju8Yv31WN;}g2g)j#pkB9DLLIP^OlOf*0c~;VW?7kA> z9f}PR?EK-rYzIX@lNqU3Wi%AZ7QowH*E6T@e65gpJ9Wg9Ib~x-}yHLGU9c zEk3^(VN%8NDSGRz+RV}DG$~oMH9;FFjHZnLJtLA3?rCpfY+WOgnnCmm^c+LJGUB1E zPY{Yer3>1;MQR(G9WBBY{>YhcAVuYwHFH0jX|2MiY4>(asiQBFT93CY@#c8%ekWEC z+?Nh5baD#)c-YxQ&5**ei_m}S*hIAre@=X#+aYQF38b2mXo&PRgt0&y`h2ZlWBkFL zxsD}HQ4Dyx2;aK<(|2jV54G1-70`U#z<<>1(ib-Bu6Eszfb{ry9+V8H!tK(Vd z$@|@j{z%G8wB;|+mTy(tXaW@NmERGsbzqv#GVMj$ZKazw8#;|G(ec>nV^w&<)y&}E zs(xatw%UcCLBA69_8x6Dby=I^>k{KvyL{c4rMw?I%$vJJY_2y!+k4uyz3X^;VM9TO zmcS%MUuX1QeZK9ZoX2^!zOk=9GQIIdvA^$Yd{HPhYi7PQ>rs)%NhptU9%n1&h%KM& zI~|=w`8{0n7cX3(-$Lrg^;(L~b zybYa#!2vZsKyDJPM~>f_c$4I+cr7j&ZbvYX?PM(4n?4WA#BV#Ec%w>rRu{W+UR8Mu zX{!5mvFjTv535R~9u7e|SjxBFPo8(5Wge+$X?LsAi8KC|`0QKYwQws8YrS#8%x(;P zB=_6y?QD9L9TBQ#Oce9(mC9=Gapyj@Z5s=$k$XjFonC58^#r@5b06lIiXo+Z@Z*tN zuOrVxA2BR!YEFJWt72~C28sx&UYQ}OzE+o1PthgSwOJ(9 zJZ|kz$;2Y46Q}@x-NGiNEKCyAU|~U6*np*eZq^bOIPZ2h3}_*Xskf3{7e}5X>9ko; zZ4y%({qjIi+KqxC9t~n@nV$74+hMzEn~E1;zC#-Cal?F_m_d)jMA|P|?nYs`{mS-m zZ1ydPQL!6BNki+|+QsP*0&;W9{(!}J4ZPD^phN3_mgbkHG&B*e~*cQUos0@AXIP|VwM=<~J={j{TM52bX6;Y(&kJWOko116Ew zE*SAdb@E>cp`g}(haR1rX$eg%LA*tzAqjq;q_^hdb#hMd6MEI`#q&{yf2sP^NaG(1 zsjc|uF-ViRyZ=cR{L{fNWB#eoOvi!)#voL!n;Pd}-fe_b)V@>ED_gQis4+tvbUR_D z=!ue=gNk_ryJ!?@GX>3Tk(flT?a_zPi*e5AcA*_dBq(C%?Q}7Eu#!T*Q#AkdIK|FM z>P_6IoSOEmh@BCnc*G#oU22@T7&;yX)e`2>JIN@~rqn?_iuuaL7FwOM&@@0y)63aM}&98WMQ?pV5iDm33aW?sr!z1B9j@VCLF~HVH>#!r*3R0;ZZ@#7_ zRLXf<82*WQ&nEulD31S({(~bK|Ka4$jQ_-t-_#J*Z1{)YqsAsi|D4p^-c&}~bS@in zFpYD0K%C2&JT^H$H6!+OnQyv<$9{a%AB)=yyueAK$pOcA+{NA00g_$xcdFS^E*B@L6Ilh0- zn&bO;cHA{**p<3;QV3m zPzS?|{GXBbGZKL^|A%q(Wyt@f_1C5ZHRb;Hpa}AQFaS^zxq3cvLMio!@($8|+BQxB zBKLrAi`UYYw(MfqUDN+A=O+(-0Y?VKvQ#mrQ5&zNW(+d7y z!D`t3t9sN`yYV(ckQ}EDBbH%JC&fG<>-@Lj^+8`u>4Ri(<4?q}K?tZNnQwFa#;TcJ zlFYZ++b&48pf8UHuNGWBma2MtiObiK(osh}mLZevJhWCWMTLK&0#Y(7t8W#Yz6!rn zN%FW5Tn~2VydFsYzGe7inplwr+>Q$UG+7JFS{}mLthIz#wbBO5xhF-Biy-+(WuSoqg^YhH}Y-POy`e_S4PnYyddfv^- zW>}-zb}@6dhqA_A!ybv8=P?YDOi?Od`!QlUhUNgKeufZE(-O7za_$avYZvu1gmBu$ zdd07st&X?Qf^dTEgJ7>(Q+Xf%)=jf7hIDn=uBOK~G@S)sUt5r~Ax@qZNvlp1MU zls@t7;14c`LFs)s))B-t zjghBJ^KkRRpHUI-SaMM#67NVRniYSLL7fcURV_C(8VY~TnLfIhSO@CpsSG&oXLUlj z`NEa0;YUXMq5Z6eA;b}~LRA+dAIh{;$u+J!khV%7 zwM4{&tJZ&~Ax`0VQ*u9;V)W4l-V}Vd5_scC&EGCXADtK8z&;A;$1rB&9iEyl@Mf5J z#{tDFD`o@kxQFyoobT~K_ZoCTekWzH&B5xHAgnLh9CShods)lVJUR_Sm}?NvlPX{x zi()&Yu9o)ci7Lzl?`-xvg+3P5J61lEyf&$=W4WgvB-nN#_iXniQ1L_7r@!H9jFv*7 zkNUtQAcm$cFc_uVgV+uEp8eCF7JUDKSfJLoRgE8~5M>?L`$E-*3|h)$r|2?Sl0mN% z#lCiB9T)q$SqA+h`gLfXgEhY0YW%wrazFzE!$017J>A@e(i3G#Xp@QmuoLvZ8@OFw z(4%g+Tv^BMYZHm1Rmy6XcOINDg(aNrYTLN^y1Mh|$^)w6uNSXup;y8WZ(8mK=SmCK zEL^l03f)Dx4Qc+GIfLkUSL5>!toRO|nM7?VUe;E%RRyM)u1o?yNb#(Npq_;2SytBq zuao|n+Aiav5=Ui&JDOYui8D2H;hm<;Ufkns2^gCknA{S;COcvwSb@7aFp0N%9dC74 zRS;Y4plM}dtM^9VF@0NACw>ZokDyC#bpTtv6(aYoB<)~DG@9AU-FIuW#}K+XeA^nX z(Y9cl<6on`Ki<>a@dt9%kfZwyHe5M9?M1QI7|83Q?Fr(HY4J}+n;&g8tD+Co&!%=i za<}XC-JUpe)2!8Ew>K%PdAHlC-OojIMuqTX9^W1{P8x8^Cd;tCF4koeLdVeXz zFRj<}hWoj{)N0YMIPqGQvW_?W08PCm(Jln?o~8PZzqazAss!uhOUO05mWCgGY55mH zyo6G>Vg>&C`e4>xc>R|G!EQ(muARwbQ}ikbJ9la!kLZebz5dOnS1TGxS>FX+ui6Gt zyKB+nB`~L|{V*q zf&oH@dxHa{p-+;G-tR_xsD5cF$Wr&wq+H+v ziFH{2Zr0CVtDA}m7&7$pJD3Hq9=}g3M7j1aDc=-Ib$5w`R?L=V7(IfL6cSLRr;R*QO|z$3w;pEi|e zfF+0NkFfG}Gy$w5y+anf08$9Z5IyKjc)^V@_;gVEpt>ftBD#okg9J7MXte>#t~4`n z2s3z*Plg>)cMBT?pAOCb$;U3za9H>!YmW*!ST|6kn^5CXJ|IF6ZZjps4NA!Vh8wUO zI3>2hhY2?3RjxcR=JL2rXlw0UQxf9m*Cf7?QfRDp1=T zn5@ZOD+t)Q#R?kj_|b`lp~4bi^g%hglltlqOnhBN7j$9}Obl3~3z9dwDVW@$#+Pw` z;VdS=NKk;`!0#h&@&OxY_&B1A$yuWd3MD0FOw1m8)q=2dhIA*2!=^vJc^b( zmK4UCY$=TV@MG-fGpOZBDfx^E`2AEqLjVS_N5q$z*O6iJ8Q>4|{gm{JoX((z`kc{_ z7VsLr4Ny9lIgM+#!@evzjTzZ;8pHJ`8w2@`D(rnJ`Hf#-C-wZsPsCB9TTbRtW8xF% z%x@HBK3Q@cw}P>4$#KMU~{k^IWO}Yr)YzV&u@tPi(Wh# z^8P|M-l6jwWr;s7-I@`9aDD^V8dHkn9a)h>07wcyE`WT;T^xWEpYLFKh{$))aOKkS z9p@4+^38et9CH}0IS+vsnK_TY%aQZY^P%TazJsy=lp^E0N(wRx&v*Qc;Ks;zJk3!@ zj(q6w`Hm9sB9-#k*Fkt;N_mL;3gtWS)PM}k-=xQG%?TMPyeLP!aem}GxaHJEBLC1* zQoe)w>rrtM!3MP-C@J4@F7YGZc;ib6!Vh!KgYhFv&SSWEBR$`tC)zXXDKtVXldmx_ z3||8yG?FwcLFU)-&(sJFP!hn@NHk3I?QWPt%^A68vUk5Xp`l-Wk2lKW!;%)VMvX53 zmKe>u5Vd>Cc5wNAnqHHw)64ho%q-s{yT1HxUw`y2SO^GVT!2Nrg7sj?hpv)*j9SWv zG6_SlGOURVDyLqua1k{_Km1$lL!btav0$*n*T3RaK9S=EyH~P@&zVZU=p2-2dSUoDv`eop#Jd=xq*)o%R+46s}qz2=o4Vfq|+xb zX`t!Q0Z=d0^`VnulwfaSX!^u3NByEDWFMP%HS83I&b=TgTWwe?7j z^tq0*ZN5 zpmnmpc7WU>=`>vK;-r%xOjz%~|y_HE3|CU)G{tnW|zoc7plh(DtCYteN%VsOqA2vwG>$)zUS+y9!fI zdx$e7I4>4o6+8z&cn%3FU!yCVucKiG=G0?y#1#0btX}q!rzW*dZ-BW`TXEl1`UL5P zJhexS*TGYn-%#Xvyp8J*+fx3ziT%|-IWAamh=cU}p^4AH8~7;Ci)F?Os3UMjN*rRE zhU>PGbJ#0>B^)*|i5+$+IV>?^CbPr#sIC7uhr_acr1T!(J2?c=g=h+-kaUR>6pl*- zcpw*ZXKq}HXqC<%}YAS}a75tp_F1~3Cg zopGcR^$`dyj#Tp@Wo$$Q^`! zr5zLvE0;syLnfEQ)~}@FgAmV;GX2VNv}CoAIc)t3%cOIN-faDfyCQM=9qNXsiqqGB z^KS`1%v=t}k1Sk{eBz6AKF9fzzZhHkm7jk$dN~zAQNn zTff4c7+$S!?5mGt>%@?wKgX!mul&W|5QLa=9JYQXpZ*-Ser2LNb%)6pPX?c$7{u1E zR1_$l75RJO3hq zc}VH}K59;F&%dBXefIo|0_R_Rxq;3Mx&uRGN)tcq`4gfP|C?fDn> z{0pN2Os{AF^ZGCiVDhc4-+(#9*4nzQAL!4{(aETnjY|E%pFWfsU)cHqTR)J-|IN3S ze)(4jAI!CMTR)I5K8#BJz})4852j+etsk)U1EvOZWsWaiet_`9TuZn00|)CH3xkkR zHveMqzO)d-)(_bF0d>8y&!DAi1Zl zA2?U~f$;w!@3i#;wtgV{@i~97<@hX2KVZ*q$Tq*>M~kqe_WX;*I0Y+~zfYfSSu-=E zpV?MSURypnV}8h63-et+TfZ_o^ee}2ryaBBU)b|6$}<1rhXI(Ah3momuplH+G>LSc z5CygV)H*qh=XLQsoR(0HX(Ud*6G$($P9Pn6_$a1{&haH_$gD$4YU{*IL-#yiJH8ck zYwbuOVS1X^*WYl>0*oKU_%v@nCX#xCJb^T+uJ6JL(S1hg7o#lk<657bGd_p`YBbMM zd$c%y$Eeh=?6{Q>!o=;c^((f1sRt6mySyP%Gw2)@rA8lvGprO z>R0CZ2_MW{4qLyHFFuS){mKJ36F!*89JYSN)~}pB{Yuqb!Vfc-!`82y@A{Q%Kb96^ z*!mS)zfwm1%J$i?FH26t)~^(o-x#&?FOGefAjFj8u=Ojpe&uZCI2vYA3}Wk7#)^LB z=O4<5KWzPqtzRjde&x0s2`|h!4_m*Y^Uu#m{Yt|Pgcqiihpk_+^(!aOUe4pv>j^*1 zIS*UEqT|O%>Q`1@i+!;5E4F?mhkhkIgZ$LiuZ$Y~%70ELhqd)9wtgi$0ry{~3Wv4z zE9XeRa^p2=C#tPqvGps4e&xz3)?pKE{eaij50pheaN<35X4vyDimR`WO8vm3T0#g@ZQa%n*!qF9Ra^h(cj++& z&(GN_=jQ}mE&j=K2RAkQC&vOVU%;)lK4X<2{k!@9=z1jg5*8yl;+{%aa12VHphxL~ zhN&f3vrKz&T!p)$Iau8itc?Yd%|WMcNA$9mr|G-X_f&;yV$o!Cs9Jl}fp7Q{(RWNw zRJAwzomxVB)P-+hNYq?kA4Eq12#BN(Dd3vt>m(hLOY8J)ZFoPfFVG=f9lyKM8%?e} zH0a$5MUuL{&%0M$zXz$Q?$gTtX-|KdE`8B~n7`JSP~#^dLeka|fV70FR~A6-89&60yw(pSstF%V#dKRgVCx6YUM+p`WrQE*TDq+t zC?LcT5~NW!|Dr)n3o&f{fUO@WqkiDMm%zR(ISpGsP+Wdv)anO(PJ$3qj>Fau*!qF9 zmE+j%pcur~4-}W*_yB1|(&o^@%qp#9Obwv(jDBbmUBBMFo1gB#ult zro=yvpV+BxXuaXXl(h+Z)D4#_>%LTluM^!zmDTs+tHxI=r<_qLDiQ}LDD7(7xcOBt z(f{3fbjlh00mWa>uPR&UrSQX>mbj%oFA9#8k;e|Qp zVe1EU{_pvyAJ|?+cwtI;*!lrmKX4ZH1D~!S{4nP{Z2f?aA0w$B*fsbE+#_oMASSwhuZ5Z%;l_q=X#b~^VcoWLM|$4ZEbp$ z0+U#vSKFHSABXr?;;5U$l~~}U7I4S>NzISSmqQDn4c|cA<7^2SMX$i*mOw2U=*2>) zin*HulYCoH`dY`Oudb>fN?(rV;AGi{uP5r9zO8C2eoE^(rr;B3tGWIa9GK(lY8bC| z#ry->YVN}qaL+;63$6Lw+E(AThHKHQ&$qkb8ZCh?eDOc2T>0vtcZaPX$e|zDFaZ0o z^#h34TS5~>1yq(lr|a%&YH6Ew+|}}Xe97pia3Po!e~hmJv7m?J{|lkI9K|C!*7vy+WG-oKalQtOG3ZGgRlKL;o<*^!=h(&ZAJ^l(LGE)m9ZBNGrkqjEIFs7G zrb9`58+qz);CByQ>^vQIKL1|)(Ut90X9AvZ?CXP(ZMX`C+Gp`a5cfZAEj=&pe;#_? zWeAM5)7s`()ZGaB&vp7EU#&m#duF~oYprv}BWWdQN=5w?SX2PO~;xUv7&HU3uY|J9AZ75h(%@wmPi zkDC|c30jQfYJ3eX#v{4~^lFa?3ox#-$DFsfCaedzp?Jz;7hyqAL7qY;kT@{jnc%N3sWgMW7jdun-CcKonlb@w0NDRA`n>J`H^=i*mSc5lYvJ8)eS2TjxA(== z_O8>ncb$2A{~v8{pBn#P+TPW?y-D>GNs+%WWh(ljE^Ui9p=_#L&Bh&=tzD*ld>p># zufe+R9+v0(`_3jj$aZIyjF6`x$%d z`A9MA`R)CqX+7VKql4`8a{RXt`wY%TT(v}dw=~cmWt(>AI2fI}zDL;^LuM~1O!awT zssfbKEET4SoX8DSFV(A|uvB%!Do&G#vM7!c5bC2>+Wz2iA)5Cu-;&u;!qZjTafzTt#>08YBJ(- z+3$F{-hZHVDHk3*D;Bw6JXi+TmUyr%wW`D5!OQjh`R(u#$>-)K4*7wV=jOO*NllEIvAYNpiXQ(CMNK+Cqzd(x3WW<4~ zT5tx3FdV-CAyAq?26c@Vtd(#m0-d6kt>gyZr6*o-6pgMdgLMZhdl)?I+ajn zYgLsvVf}T=JOGDyh}K{h)7I@9r>f})L;!uD9&v7z0>*3g?6RqtylK{I{lc)CBMQHR zZVdm3W%6~Z@gJrDWUKm#t$IL#Y6#s5k`NNPv~KTi<>ktC98g4o)}h&2wU$6c0b&Y* z3Z-9LGENHtv%8eNP&7psYETVzP_&@!Kmf_ql9}x895cKp1*R4x4dS{0DD}@)W+``! zL!dbaVTjM~Uh!-SKYBN|+yO~N-(T8p^V^?Q{L?e1~-FCBh6A^f5f zJK~8xDC5TyxJarSet9W-*K^EO>OqXDZg|Sc9{41cFA|3*G##Sah4Pl#cH;x#hu>cQ zp0M^L9k*fUJ}u&CI?Ok-!xNN+Wyv$KQ;@X9asf2nEZ;}~>u6R`UGyyqda{Z1JvwkPKtn2r~ z{}{>jbISNqDKNgw_dZJD6Xj1iNmiEo=$w>g4s#!UVh5WuXWGazZ`p~J&3OU+k|mTJ zllHm0y9obYyxnS_UnYOgxMf}t{(UhXUEbgG$H&WmXI;M=un8l#eq-6cH*T}~cMtr% z0RJw}{pfpifa8An-P8eIw)^4DS?-6`a7Sr_kR;&dh%y2N!+$|;nt3JsO)6eFKcDwI zIiB~g$gPHZUX1;v6adfmUAFR7asO}Zql!^xNg-omdcc8^>FTNu+TnIJ{sQgrqg+x* zsGpE6LFW3psUL`2>qB+SrFCV?0BrRlrveh%`tDQ)pj+7+i`K?Mb-1@jKdYV5wjlw4 z?Cb|j*;&d7K*aI^zW+VS_rHS^K>VcpU$@%k0&(pn=u(1?MT@C$@P&V;6+tCowsMp5 z$#HYU`^(h8_pRX<@k`H7d#DypPjS4({$IiOhqZ??+c|~?G;zkj_uoTf}DS}3d=q`$&Wr`>|UhAc_prjQHktXs+YP1CoEm*Iv->h_L z3taebCF11;NEzXa8Q8&C5GBXiJ^)Dk6hV+V%hMab@d2burXs~8FTV|nyCN2<(Lysc zJ*7n7!mEwXa|M!a$n>4%w~I>T$^%M#+?vFJcf>t4EssrT7!Qs`sHU;APTlab(!)QE zZ-o;F$19srD{{~egq=I-8(f^6t+t)O=Ra1Df<6_y4~=(*Y7%cK;-5|1xa9qc@``hx z+V++faC}3q+WXv z+lMcvY7b)j@Wl+EyBdF!b}i^Icq6f34f5;toL~Rt1lkKNIF;#OB|KKdToiTGB{OR;;szN zkV$B@^?g~ki_RMp_)>PMxcdGFXuFUvnMT`{e?5=4>sALouPmT$MS`(1P_NyJk3N;E z{ec-=>hHo{#s91xJ5nzy{=6@(H_#Rkp`3RM)&HbNUPGyTO5cPLEDs4B)rS^vLjj*#vZR^1H9;-9BBkfl1NaBAK zX96Lh7C_`j_u7gM0N)aacC(8grylr$$01&T+InNQ&43Hp`*HU6<3OUQ{m2oIiQ`Cy ztHal;=8%KnJ~AuiAQ|@&Pqup1Z0()0Rt4xU5Lfk}EL^ERszcyPI6QBLf5DX7L>L8%Z;EYxAK$ZS_!J5Ijs@?9wb5sVV3h;8% z3ETR?-2P(k&(VvD+8_6?M{0kv#Jh-}qMkypeD{$P;mY?paw2)K9baP;sWf-j={$P|bo9DSNcr5$B1srXIG3A5glr+u=yycFa%`B;X6d zGZ6O7z~5odI!vdL;Fkr2Z;8VO(HwHAI67vsz$sKG$va&Cn8{bjr>P_&IvgCDpiuc^ zzPwJdI|?cgeMvVdgPrE4AmfmNaB*wuz|)qxls$C(-G-Z@e(c>Q zj=KS%ibzaGKcC`HTlpP3j!tDiVJcK@SbJQsTr6~G)bnGW1=@UZyUne< z*8nf(Mm>!LsKKtkFxKymv%P*S$T1QyOc)6c6wDbJAlpL*hPz;=5@_6GK-cBu;Ef>p zLZ!4>Adjf)`;}ALL$JaA%4nVT5UwovqF#Flffl})syzhL>xbCBGCBiv4rY^l6MuP$ zw7*cDOrUY}^du8X2BBV|tO_UKpXUVpp$U-iPy+t6+BW-Z;fK#GhiOUz)_(Lp5RItN zg-YoM|LSY_K;qMgkAlykT#rwJ&p@0Ke25jRt#+w9IsBV~Fm`T}-bFhO=Ppq3@?W&R zd(`-UkZ%jcOAl$DtcsUj-#++thj%kLIgc=hO*%EcN0NxGbn`>;oV*#d93)KY;o)#J zaU-~Dl^?q0)rChZLAgC6CDmDHTS$wc=3Hm{B8t<_Q?A&YFx%W$dH?b>G zT@&oey=t51lb}I|AAWiHb>`HqvI{yt*0>>w8-DoRk;}rGNQpXe7>8=Yv1;uOM`fs9 zyTgUQT#2;yEC?O6JKU9_8S|+kN32ie<-RD+b>l=TTReRutv2#MGibF%g7j?Xe-Z?v z<;nl7H{$8J`QLY*{VCr{aZy4w+|9Mn5Z);7oX^}WF_yg_bicW>sQsw>$Bg~>-9MFO zKgxBV`3yM;!reQ`NzP$@XAeAQB=S2SO*zw$`JM1H*rou|RBm!6)+1E^jCQWjl+OFp zUCQ<+@~5Tn44Ka<0N=X)KEt2>ms~90oVJZ`IqMBY?Z=$I%h-?5Ka^!ZYGkN~WD= zTFK50xyT7dN`}Jbtw_u$eIgMf?`^lak*3)SB^uH&%3fUK=vDs!(ljzD6I?@0&~{RR zP9vcO7>0r5(I;T{61^_tqFfU3mS^$8qi>Q!%y%R7vdc3EuPWzep zri=4n%&%8ZuJ!uukBeEaa_0Mpl0pFx$xlWq--qHB%M_!_aUWyj0=e|2~( z;j+|+`Ih!L-O>cxk>ul@AUxjAgh$w-1J$SilI|2BueuK!^%_BZC&Ybur{E53aL3t2e6+5Vd5ud{wolE048emGZQ zRW79dKmYvw9M4-8ejpuaqef5pxu*<3$zLyY@CkTH&_Ne))>B@E^`at2TF0LYK~MR3 zG3)ok$F1vk@OvYb%zz-z-2bLqF;R4%qf@))P;ogSG(sH-Vw8?;=H4+4Nm&uo1StOEl0O1$w*Q zM~m8z9Pv?sdWQ3w-?LOR4x2*i-;ZFuMMgyD_gq3-VAsD(*4q`eA9Ge`>_@b$g^~!Zum!-yJQqbLFUi+xT|$EAR|?xheqPdcT?BPyZAvi$9q{GUI-F zL7g{6?Z-V$8T;{`=CbUEjc;d{-}Cq1z&2U&?Xz@Pl?C6%eEoYP>|UammEZGyIyP*6 zPdXnenQOi7TUpF{*?fUCzQ9yE7j1qI8pLJi<2f2~`0IUifZ6_qj0k0Jwnqe*|7);`jV8N?vn8 z@_X8fS-0)jk)0eI)I3 zRN>?9V%G2Aeb)86{A(k*eq-6co4;iB?~Px@%I5FiIr6)soZoZke#3_?d>8Lm*sRh= zXr1@`hR*_ivhjO-6m|^9XUdYF9J~CUX+Wn!_zmZ&{r_cldw7AusNw9vbfg>ggHi79 zpA{gN!SC6I;AYt8y`b#>c?wi)e$Tn@-+T{D*5>!f78Rp_-*XQjvxxo3aXwr~_13R^ z&NyresegYK>uu%t#J`Ad+5DbT`8`XE+K+oald&IvxVJ3(k>z}~`8|o@`!na;-{SA@ z!8Tdz-#34OcFyMal%+q}I(SCm{2uq+8UFN<&zHrYvc=~Y)Ol0Xel&(M_T!(zW!VoK z-_9<-XY*ayCM&+Z^=Gtm<-oTw&+qAh-DlW4+$|(_+@k<_o0p z1)ia3#pd_qG0N|`3afG< z@q5}omE(C$myt2T@A=99F#tG!e$Q2l;3X!0&pfQx14LKVPvUeg#QsfSSp5CXp3lB1b3QvojCTK?QPaPtf+Enu_ajGq zbRpGS*WGLcTLtiY+;gzrR({X>Z^gH4eov|Vp05j5(|^w|i$9q{GUI-FL7g{6?Z*#p%Gi&9 zzbyM<dZEtgmBb)0eMySM+N0#w}T@^(GFCPb9CvI81GxL+eQ#bx%2i z0nCZRS1i*$tgWr7a91dpFYk9~O&)xm7`#H+tUdQ-i~&p>xFT`zil)OA*H=_D9l>nj z3Nff1@0RGlqG_Nn|7Y)e z;G-(8wl^f;N+OGZN(GT3+Lj=1UqD3`DH0czur?%YVvW)kFDMX}zh!ANKV~7wjVgv-Fh!M9Cc_~JXAtv9MxtrZHxp($%+*$T6-}d)wT<)1U zbLO16&vWj%v$L!3N1}k@Ir9P3gID$md{50g&IK3G$KhMw-r4aJ9|dP5ctw6gQ3Bt2 z_O|4e{0+Vf>lOJ`a^It5~k zf>Wxz{^pfD14n~-MShjsHxsqwl? z&T3`0ki%w>L6F*#O2}*>6^0bG`QewQ#OnOk-@|Y57jfK^?-NtUz>{x3$j(__`wZl{ zkkh7Rc#~O@U7HU1?Bh^g_fAx^g>8UdizNK4=XoCZnWnCradr#O!~F9=B>3wsc#G%X zU)lHxLDLJ1V85DIhhKmF180vB>95xuXs(*x_!f5QdA*_8;v1aI`t{fEaCR1v{(1(d zhML~^cC4PiHsf^1ufKknh;&7yzplWEl%~Jtz~Q0(*H;>xIqYrW*I)m@*-J$F>p`5T zX!^^B^CHa_vGB_`f%)rg_%ShWOO?MOvHtUnI5C(HKac92tlv~+_5#$B&n}+9sfu4E z@BB@uq~rx83Mk+C^$OI3x9HlHNaQ!)iNtumwg%0PpLoHmNaQyZt6xGbc_pv?9f|xZ z`FbsC$tyX#4v7Ma=O122J$Pk~H<0Lpi|2!HqS^5i@B0=K`3=Rsji@EB552yy;g{3 zpy{t{E{)Y%U-uUy9e(|Fa~WzGk^Xw-Lo@?Te>rg8rr9D1=L~-R^)sBJM5MpI$BBxj zH*WY$&!Yn{C;Ro6^CZ$m{pH#FXEUdhUz1^R@alu@|AU=;u=5A@_$WJhVoN-4KMs($ z(RQA%*j~RAbkC6IT}Kn!<(EEn$egCBJ!dtsU4G+WcOTv2Hz8(147}jDybCpf?(pNU zH+I&(e!_bl^wEtoo%nubUU_)t^Sod_xq|Ci-s{@)8R3&*y>f;(X0(3}@+IGaLH%{(Q!x~^=JfO$h9nUepK84EmYdi1+tIv){vCKLYQ^<$pM)gB z{#AFPR$Tve$w;Cbp9VW>&FR_qTO^6N_{60n>$!Oy%0LpKf5+er30(g^X@T^Q!y9b5 z{wFh0f8F>D8H-wTdOH09Ng^&j)p#!}H?Ii~qIn79v*wSe71w|8{YWD0f7_o>E3W_U z2}q(FpCfo{DyL^0-kIt*J}vf#;Uo^e1BJfkfbzH2Yy*2}>K(8R>^gWzgS;*Kao+=< zCs%voQZ!?gbmS%eq@!47>dDhQkAat|bd2~J(&6<5{h*aEh1(woafYax%QBq5s-%TD zD-`-;|1TrSA8wqHsb)O5FPe)=Is|87LVvt^Bhq2`_2I_f+)>T=9-N=4q}}nxK%qaf zMnsZ7mf{VHsu{N*iRPk`9>L$Q5&Gjs%-M!tA7=dZ6V;4Q;>=uQoY7sq>JYh>K4?-Xh4& zYve*SFQI>H32Mdl-;Q783j2>)Eb8Cqc_h(|&%;YmYtD{d_$6z^#ix3eXkP8{>s+CK z7cUp}-~J+!2>XwJ1-0V*IuE~U)s0X0bs{~(3y>t@;xlG5vYzwLv^SAN=-;>vs1?`0 z58gK@>|cdn;Bx)z-$t5s<1@bywdV9}+KD8Q7oYc#_1wG$??Muxf2S6qR$TuHc(b3d z|Cskh{Ri(s68-pmfLe2QjKeRj{l+KU&%;Z{qdBND*6n_?-R`)~BFtyEK7vN@`htGY z%9q0Jk0)@>r}D?Lzo5COqzTiJROpXaarR|+f7CsL=A@eOJec|0FlQUyA5UOrR{I0< zze-w&*-Pk;%P~i){Bb__-`0u9c4%tA3-bxHaEX5AgeE6v@aRkVGT@Ra%Yt2DS3!t%{_+7Dgj#cYN=%41ycicL@tN8VSK4x+d-&#|6GpdCG>A^{7#kg%d}2`^pER`T55N|{Bz}4 zBoX?z3*Iru_y1iW{m1_Swc`3u7>6Xf@i~Iu9ddg1Wg$Hg7oRx%#*&-YZoIQi7@w&R zq1ki&2Two}VgIT}Q7f+hI=r(@H$F9Zw;QKtHGaz(aq$_SBl6EY{BBj~-!4yx`VYoC z+l2kA@h&;eukG`ZX5IL#cpA0l^pwm+l8B2>)w9TYZeI0&MG~QZ^XH*fT>o|Wjk2)6 z*8Vl+*{|ptX0i; zFwUG*(!QA8h5l%Va|q-617`}V84nih&r;B~uM7E7?2m=0mErwSw+vaU_6O#Fm2}8U zsISl;&tr~M`Qv=Oou{9cor*KW2K&vR!8{k!ICG<&Xp{b?i-_Rq(=+_?TH@w-&r_*7`@!&C08Uidv` z#Kot&5qXjG&vv{oPw3x)^`idm@%}(z|Ee}9597vP7l$Oe@o8v>T622#nUN&o;uDA8 z`*QO-)Dg`~=-)BzQ7f*0AN)32*gp=xQRe!e#5?PB<1^$6ksY1zKDdaBPc?oI&H0Br zpHArCHTWGk*MD$#BMa~PH@rWV zUWAZNHRJZN{-j5^-S&;_uwi_DmU6$`h&kKv{xIXc>neYo#F>FgT7dVfi`U21$fvsg zFk*e+Hq4G3Z;t#Gn%hs{?~%O&>7S4HjB(@7!#l5a`M&}0ALI0#{a<8_5hiT5Fi%q?y|TC z(d@bYeej7N!uV+IUsE*K2e^MtX+0mm>*eg=ejh&a;*%@#@8Fq8BJ}UnCs8ZTFB7IC ziLn2e*{BuQe{epM=-xl`HTJJ5ksF8KO8bpZxSxlY;_nKoGS=;Wv)%5v&LYfbw_b;Q z>h%Tvpp`F$+aFKhoKNMCWqr_GRMG_e?LVPEUd7p$;r&rJ%-@XX;Y?2L51sv4%DplI zXFG=Xha2ZKsu^z|<~18RhqI|zgND?iPjAN!=yC?iTwUl>O$-sUddZHY4fY(mIY`yUdiO=kjRrK4)Lq( z4Bkb^E4yq7QigA6mLElWJil6wX2(xFVI>mz_1wP5htK^nS)RI?n_9G+;D4sp5P!C?& zC!ZkE1sBhY4x`!e6Q6MeiTsA5*8$X$SMtn3B=W1|`lF~NuVmrBktm>e&iowp;FW!O z9EtqKGZKDJ{d-*O^gZ&C>^i7V)~3T#(wDfLso7#Pe%A3k5ByBCr4tt(RrzBi`0K5| zqUdYRamjqW7I`>b^y{xb;p{Xb{dLnCJ#Wl;Nw3BII34rrueS@3u88#4<6F=SG}o7H zqh5==ZK#D`e?3`}-s{@)Df7zNdX9kKH^1#Mw5UAqN0r!2cmhc@-mfaHx-bv&-|tc+gQo=2 zzjPXE#f@J-14%r2=1oF7W;}&jb9z?KLK1I^87c8ujFUWWUfbuPc?tb82B(u;|7mjq z>E9cFZ<_0W&$Fn%ZhUHRs>kW+v>54$xcIDDhOFo2HEjiw2;)`&ASLuK#Xa`W5!SZG)))$v2Qh zH$L4rq1K!o`*8g;;^MOfR};B;P1}KHEcP$1<#PS&w+7NbAD2YA{)2IkIlpD_;t?Kc2uj zpK8YU;LK7b9hHxKDfS0`L2Y<{bj9zTRWqJ|GdY!X)boM(<5isP7~UUG;G9M^RX zQc34y-WRTqr*U>+cz@i1a|qRp>+#E8mGoZBrb2&YZAYuf@cvkeIa@X3LpU=~NfR)8 z3H|XjW>1wr&S(8bIR)#+u{1uoexqFPA-LYod%b17L+N+ozGi*ryMCjLpZ@#i@%i5= z8!EVdo%g!-eA;>CT6|}$?{_I4$RCgHI8R=qNY-T`iAH{L-^%-3%e$+SNP(m(D` zs1-N<;E71$CqGk0D|`gC=JXtAHA0Vt-g_ug;!}k)DsEo&I`uWhFN<;B#`WK>Q(sg1 zkDo5`>#`gq(Tz`Eyc3nPBXu^?6LImW)~K&3p3|$ZDXqHTJd*QE`=^m#g!f<7eAJ5T zza4K$)QwMqMtx1O@Hoy2BQ8E$mWuo{4dm~ef7Ff7 zy|^03>FI>C)QF2uEv|xb^VmZjt8tv3 zasNakL|lBf;JlriS0DUhTj<{^{LH}hABmR_O<=d@0=i*oJdHl|Pm}glfivai*e@u2_S7DfGvyYf&r1`{N+yY}Jgf#P9c1(oy)Wnb03)m_1eg zIG^XbjiT|v^&92-Si$uX-s>&v9ZJ9Jyz=v1zfs12-mX2LT*37$?{)3@jPS~} z_|91M8^r^qspyXL9g_IT&y>*` zGEr+zPcK$OjJ*1dGOsQVh~_mIzi$)9rwZq7oL}m7>TAmQYc%R>isVp$^);pS!;?hw zSjhIQMQVI{;|!1YuTFhU@yi&TM{@l~PDLIQ#7Ls^5 zC{pmP7FWTzd2PqJsL;P_aCMREKN4rW!v3XrmmJrB!hGacU3^=Ct8tv3RGg(oTzm%N zDi}AfdY%1e%DOGps5>f>X^W75h4G2QRXlF|?aNVr-T2hJh+1=cR=3;o;W?`Za1|7p1HDD2-GKM`>K=i&OEZhU5F)ajIUa=ZXp=r=y$t5+zNcD)l> zik>JGY5Uv!Nsr(>P2+h((Xkb0gI-_I4_bI1ZhzF_oKNMCL+SqfQSk>P75f8cUxxR` zQk-L{{BaUzaw=&B&O?O$xDIDKhWAHZE{d^g#=EEalP2JO>q39Ddj{z+yg$lu4x#eL zG@PlZq(>H_nF{@J0<*c{{m~V_K~v569-JAdr1LSa3H{Lyze8&24`ZDlbPm5rgX!Y) zlm6{T_AZur9MSUpq?d3T#SOqG#+ttsCmJp0f3+W3ES3r8&-u?g|HwZ-DFdfY{1@xH zZ$NnA_pAPGumgD|ui+HWuac`aqTzTYCHVcRCr{KlKMB`nd1bHQ?f&?NX8BR1pP%&L z4xtzO;`g6^Lva?@taF8Gl$=8QaOJ2#sBS;ibJd2K^9=x*bV@Pzt#q*{UXm8@@s! zzo97k9JScJ~}r2&cj#xoMm19}EO)cGFy(CH!$ zT;|nmu?Ro%d7cLZ=O^LpR+T?Sg1>IUskNpzzQj)mnk|xWM(x*McjB#l5$Uf7aq6n+ zjaLfM{iNCAW1P(T_ZQC2BGO+s;nYym8*O*%`6~&hJAVCj^M0f&BK`H%XJ`hR{#x>> zUW;#VI^ow}KYWRFMWny3z=?{czZ^I((rl53>Ds@)zG>mF^SOUZ`F{1~i>V2C|CVyS zk-aNbUq9i!-g3W_(yz=br}01k^Lbh@pGku2>E7$w^SRM0XX`lv&QGesJ4ik6N0rzt z!}V*8_p3^)d^Tf#|CS=@gKPQ1{%i2APi}nf`^}y_^CqF58LQCE!RhIb-xGUN%t(n( z7hK)s=5+|Ce?q^kd0FI_dvKyD>|d?%-rKW2UPqdB<5Pk6x^nZFjg!ELi%%7Op_R9HPoW!)#_8#G5=s2VCw%*r6vqAKv&d54!-VJjqr3#IQ6mT7zPG|yv( z#`#HqLnC;7K|g5aOX2oMonZfkGUIhPe^q%a0p~?Re_XEKc;NAh5&dxo_s-mVxN-CO zTI*13RsJZ%S(wltH{xQO;n&9??P8e6AMJ5|rt-%qTxt{gV+77F4DSzfg})WB9hdu5 z{^*X`ROpZEs?Z3A_s89svsE)*hBE_|v;y;*&>tf(d#e0#KIn-aYO22kqImN^CKc6!1`26`v8wA&%_g>eY&tqP>7QP$n`*%tNx;%sKI8R=q zNDj?K5{>*yX;sQ*%-3%e$%Ons`d8zugBzdwezTwaOc||k0UC|d!~K4p_a2Ir_>93- zFm7H~;>w#aKGlB}`DGc-=!E@y<1C09|Il)zSvNl1@85BHN+R_8DayL*f~#QMyyoeA zKSk+35Wn)}`Y&6J{40#lZ5s7GMe{mb-_woH3XM9QqNfe6(?#6&`{i{)TRQytp z>yE&!;PERjfd5gICOvQOSH?NZ)AiEn#c-_wmx!+vBfXU8~Pr}G=1@YO4n89$VR=763k6zSk6{YhucLQ;+A4MoRe zb5JX{e(UWWI_6M~ABverl9{7mJK`Iz^G{&*T^7l!x89XN+j&A1-d=2X&qF`EkgkyR2& z_sdeu*{T^I!kK|ent<6$=#Qr{d#cvQ`K)&+->-iDQ5qjyzfrE|3a)2)ueYpsDE&rw z<>$M8qm19~FWU1t?X|19uA{Wy@4c=)pRHcG7T+1GexuB2Og6gXJb8^Gx$Y|2Fv?>!VL@mY+kVBEa!c^b`2 z7@yuVQ7f+hA)L_(`;W(25ZC`oTzS)tt#JKEsNTg1g@46cH4{@IOprV0H!6~9yE z`X71@c}&QFs?fa`JG>9hy^Nelmsq#Dl~ijJ*QP%H0Rr608N zrEvS>iRs8%l|TC6{8c5L{}k#g^vCmgsFmUUQI0b*)r{NYH?=D15S)bx{jn8Sy$tV< zZGwuGvexI}{7mJK3e5XLf0W_u!tnl>i*pFoj0fXPMI~K3%tgIa@X3 zEAjq!m2?z-YbNwZ8D`Ix>%&;*2kpQ_3)98tC%xoHmWO2?N3=XY>G!ye;s)RoW6l2@ zwz0+h|LsTiE|v-A&-u?g|HwZ-=?a`W@n5Vzg5Q4n{i=Tnb|A0hL7d|GRq`1w#qvsK z!e|-}5;FT>og+v!zJij`FX2(yw;4BjPjpxD|)RI?n(`h8~tK{`s)RI?{ z`W+Gl6wjG;s0Xj?hI%Br;Ntmx6Pg`A@xqu!c+=*2ui`fpv(E{Y-1H+7`Bm~xEEzTb`Js_Cy+@DqY&i&&gd`}Nnwcq?B-`s)`sb=CC716-Qz{R$mgUyD9NKKJi0 zoSj9azrOzp%~jK1@8JwrvqdaUcl`S6hyO#PMWnx8`yS0e(;JR&^jd7j>4aZ@y^XV% zi1gQic8I++{dF16i!@s#VY>G3uS?Kq)L-Xw|CaKd#Zz3Q*Rk*sz`DYnU|Ac-S zukrm9#V=RlL{r#*jmCR#rT;y+LaQ5}`MAK!&0{#OuSQ&a7UOCqH?Q`%SSj@HmI~4O zzj7~<2>X}fq?Q}M4=%>)#;5xMG#aO8HZG+`TzqPAy35Tgu=88id@AzG$iqk?jt@?v zx$!69)KfP;D{#G))02vm+=z?Mz^{=Pxp~!}MiQ}qarKw$KMhxTh5h6Hi$>x4Z^so; z-T2htf+nYDHLhnyTzqPAI?v5(0xk{;{o4iCX1V^;en6fV_V0}!61e{JOeh`Jjn9lW zs5PhOI8M?1#wUFHl@!Kx3-(_q((Qu%7mBn&Xa9xL>bnTpf1y~rZ5vuazK1K%`8X2< z`!AHf6?pfc=dnwDp45K4N71`B=m)L*G2H9JT<*^wBTM~BXW%SM=#TGkPGWd})Zq+B zwLW%#eY&y8NW7QP$n`*(^5s_+g{PhO))0z1DYpUs%B-zfe2tVC;9BR^AG zt-)CbH$M0MWSM~h0z1E@8doVf|IWh|NpXBM>U+xg>u~<4 z8=oT@bvi}QLY$>WTzsY;Mys6j?_gYc6Z==A?x^@>JFYtl```9&(fIYpkVH2=eQ`C8 zo5%5Lq$lFyGZ0t7xOuI^TOEb|9fLPsa{agCx}&iFc>F}b_1}%_d%E!{JcFXZ>FI^* zbbjL#zUOmgMgQ_|Xb$L!LXp-l^d}v{GHnmrYdmi#I&ORk>G1l3e$dL7!tIZ`SCO?U zf2_mj52~aII4=_V<8u5C((wMc1HTJZ&3N7>f8Hv@S(wltH{!Q}hWE!HLB&d0>+NxV zrt;P(TniKWV+77F4DSzfmA@6R9dCqF`J+2#Q=vbuJAy_qyg%;7oUNMiGMpKxq!pOg zg#H+T*;D0@^I5-9zH^#BkH!brX_V_j1=p|hUT<0NQ2Mp=%FlQGMj5}%J3fC-(gwlx z=e^gp=ku6XuElr8s^2Ic=<+PO<2-qdA_?sLmQprjzJ8EUG%ull2mS-K;`%RJha|%Ow`tV(lsjS_uJ7r_ zXN5+cPSMi_*XbfIK2tU7W6Hb&JHMqj&WXAB?8X&IaeOrDd&>AH|ApeK8=vkPbvi}Q zK3u1ZxcF?rRWQ!K)9@Q%v41t{j*4IE%aDJC{qsLSt+??A<9t>(J`dw+9H*xjuDnHD ze5T^OotxLmPm$+@{#}fp8MyxSxb7(Izec0Jr^L5CuJ7r_r{O5Fma}6VuG9IAPx$H; z%8VbHgXVyqC=}`7S^lImoJgwiyrJlL%!OKceL+8HGp@(AIhFKY%%(zrWbKZm`(-KSY}Jep;mklKO~C9W^vBbfJzK7iSv6}- zCQ}-@&rFhrq-Qwob=IVwId^E>BY=p^b?h2 z-T|MI2Em_XcC9abO1s0EJkXhxLehF#)8cYQ&}Ot(Ec`#&41dx(lBBLAc_6gyMuolM zLnaku((Xy!;ZHKV))79X^>rq9b;9szL#$~stxJxBSzF63`AKmmQ)02xX1>ML#$>X% z2Ef0`ltIKw$`W@uZM829C`l~2#ROL^t}Cc4xjRUpLphfG7z1dOB?lU{~?+F2$dB zaoTD~QpZ^(CX?ATtC;>RKGwx)UrLg@I2|iUT34rSmC};zA~|NKeT~zx_JslOL)*Hh zCUS<@YMu6NdHYRHdxiVlvU5#fy3#N|yFuK5PYw4$s^wUQAsVj+18BIPS_Js7}`m2e<43^Z9vee?btKAdf)+M%TIy-w6 zOssRZJH`(4F~dxT!D_YI8fMI+zM~&&EUp<~$f=86YkGs@Or(j#GmBhv=-Nx+&4E!8 zd?sc1Y)U5wm{}@gj>22&W@8{=W@gNh&N=0ZB{egi^PII|rp}n*x|7ZOC;20NG${uA z$bO#@%paM^1bu(xJQ}zI(tQrdAp2W7U>6(xv;6@(K!I7vSEKkE7JMD|d|2>x`4Xx4 zIttVUgRcqHoS^abyH7>mz7%9S215m1Wmq%U|34H7xjQeNHOA);t>=z7|0L;PLhODiOZUV3Jni>+P(QG4ORg zl&=kguRV}4I`9&z{B`->*7!pk3?dU4iSbv#Az!{dFQ-b}bo$>#xI~_TsCZs!NJ< z+SYn2uOzJtN$$uhuV$#Wwxv~9r>%e_CHVfe5$f0QFDSh_ZG}*$^;BQCI33$sR$mu; zs;@b70M6`-q5A5CA|8}sgR8#w19h!N*Hz8c*A?#5`5ts##j3Ash@+0oQ>w3PY4vqw z%j)Y|Z}rt_TcH$S7dstG-JiVg1K6d_1=z*30K0=p0AN=T*HrL7lr1f9l#?Y-z~>ly zf#r=#Z*4Zlu~Af;T?4hsRjf8Uk?CXDyEeeu>`kmTYjHgbv!T_{0#=`;i-E7tZlN_l zR-Y~OmI7(<)^B}wJ-m==zT*+z%%O87E;>t?aSV)UGsoCBdMdV-`AqDq+U}uM+gMM% zv_M&@tuT(*5@0XEhs8f!P3&eUB}4U?)=k|VsBwY_OCTx)md- zi4$StOtXnly=V1p+Zi&4dX6liZo1SC{@Y0X=O_^Qk5C)E{v(}TE^6FpuHLO}9C5H3 zc-Qm{k9}tHVJdTEU5a}z?7W9}4Kel#;#fskOsW6i{RoRJbsittnil?}`xR!@MDZQo zubppvA2%}$`2ONkQt|yRP!|loccA9b>^WF`|Mp!Gz8_{1dH7D4KI7nfH`uITSbWbd z_JOBC@%=D-J;|{6K9m|4#rI%#cX;d1=NsQ=PYVOSzw@M2e4hmBg2DHG)EpW3e%VeD zzMp%CO61}DdZy1f_)cKEnPKt$G@PB$44wwX_he+E;qvzlJEHgwPizs1@2jVV0pCBH zA{E~kfVyDt{Vr;b41B*~n+V^#F^N2U-}4q7$vF7l4Gsh_EWYP%Gd#W@hOd`3Q;^~C zeJC|9n!iURzL!i21HS+Gh*W&v0P2Fl_es*rOgy%ID8*Ujf>{*5t+ZYxjzi}e#iFXB>P# z_jd#1`&eq6vGIKe9Ea9yqT%qp2Q@BQpNYu&%(&5E!1otZq~iNspe`7E??BCw@qYE& z#Ugw^%p~&goiKgI!S`f1deX4WKqd09DJX+)WG<@_iu*B_e5l(;qZL{{2ECV z-y;*>SKGpX@1NZ!72g+tx?u4AE^3Ype80gd!uM`WA`jp9%%vk42j9se1LOPYg@(uX zWMrb@@O{Hyqxc@F-)}1UO&IX~$Dva3eFLZq2Hz)9b7bJVBTt0yRwj{$@26%P3*Qef zFfhIkrN$Y%{=OW3YNpvl!{K`){B~h9e~--k{rJsc!1t?QP?`JR2L*@k3!uLge9z7i z;d>^N$iw$|rq4L}yLFy{@qH!ynpZP;8npg?Zm!Qn!{Pf_YFzaFYDB(YZ8Iu@O?Uy$iw$Urq4L|z8ro`(Xj7V8}ohOX;6I6L?#*z-*@Ik z@jX)OGrjtS0pIVtUMjwK0CmCCXZH4$gzslFrkfAQy1@%=7P7Yx34pytSUzxwS1 zB78s0B=Yc`Fnz|s_rs4H7~h9d;|%_O^)a7`hQs&9>?poRD!$L|9tM1Wr<+uKp9JcH z!S{aD92xk2*&jsse(v{FA`jo!GkwOv_sl5<#`m3*ec)-({Jk48(Qx>l`dvp65)F$lgPvOc&5)d z`TLIX2FCXu)Hq|;->2X2GtqGPeso+E-y;>@+q4Y>zTXlj72i+C28Zt(puZG+Uvh^C z-={N)JbX`N`iz6`dwy?VeD6n%Gd8}Hu|5+GhwrEFi{g8v;(M>A`lh^6bAFK}-yUZ& zk)$}MZ7oUa>9jSFq#-1&3rX(iwAGL#bMdh*ZA~V#$!RMfNeRAxZ6rxu;a|nayEtuy z#h-T}yGV}NY2V^>Y&aU7CUV~25xHYKF|bokXLDP zI?j+Z;F?+jMAPWZ*=8-tzSJ6@WyvVYvUIi;T3)inpXx{Ih^;8G-rX0}0lPRIMOKG< z#wAa+wc4s5YgcBAk2w_we@#?L&Nh-f#9E&1)v@YSSMoz5XjtK{`JN*DHm7YBv~)Vw z5PKbQnoS)|#Ie@;k;V1030z~VBXilcVyAsAvAajZcRmtJsOLwgrZ{05j-~F8hfsts zAhtqcU)uRBaTKKz$KsUHsqVL#WDAT&Tr(g7o$D=cloQ9y7<+}~jY?wAk8xD8D|KWx z9VNzIb+fG@=Q>i-JZd7CW^W+&H8AihI;Q&prt{3Dj#{vj&XJnk5jx*`v%Mxa!D+9t z7U#AlusRxM=EQ?f&6fOOF(#9>(&AbIQ#y5#YfW$XuL)MKt(0_jx#-#$ombP7lxA7> zv&$9mVVIdVsG^@b(oaWVQVH~5T{F_juHw3@iOo#*rWXHjHCT}1?vU=mg973xBy-qo zv)wU{EyO;PIPyE^6ve}+9QylW1% zFGb%z@Q`93q!lUYq!RvJN6Ipa>#qi5-IE+1Foig+0)KV}<6v*o5^5;1&AilJ%fe9+ zW2=NH+-}XOvCN+avfq!*BwyZFVix#MxwBIBtz(`eu_?rske)&IGPjvin2iU(MEBk? zKKlwitA&~fizgpe4D(+V^Irul8iD_w4JN+KLKv8> zhd;r5qbRMXH7zb@1l31X#Zq;28K-pwM*4 zzRu*X&ZL1PZHP5Zrgh12Fl%eMCI5Wmed;%1!FzI6D&7wPb;00$!+#~={TDZi@cw-! zk&E})OsC=S{^)39xRuVfCR zpQt4B4)~Nb2>v9qYm`pX?r(o_k%J%SG^}tQime?5vbqi9WXhwYn?gA z`09O?uX=wFs`ryXT`=!w`%!cJyq|p@3XK6(?=QQSVmg$j;T0RJ-XCnP-kpo={DEx|E$#Q**~Fh ze+pVd_5{UY&G!kK=J|i0a2GXBe7=@axbK{^hP`;18DrZPW8X;MNYHmGTVm{mN`)MX z_z$!!;xDBW8{hk<`!jts1lyiK_WL}_{JA_SK!2`w>-m!g{3rVp-Y=AS-p_pKeLvGU zJQV({K>v%@_nYhc=bH~E9}WW_ynYB4u{=H)3+jU5gC5iz8GO+8Y7rlt>Y>dCA6LWB zt>A-~nI7Zu!SrDP;@9yn^zchQ9~}KnDDaEE6b~66BvO-Uimk`53y{8`y>o}@M0A#VtIUU7pMz{4?0kDWbnbaT}6Cwm`T*n2k#z*pFiZVC{; zN)G7ZmwZ0xM~#z?Um@j#={E-G&&m7s{3)Lgj@}Roe@6Mh2z)U7{V?!BPB|=Md3?|h z)CI!_r+0xlGWg(=1Q8$XU=lSSyu1&FZUrAqVS0?m2blu`#IH>s>EV}rKG@km6!;ZV zK8U9#2U0H@SE=Vu`Ft?xe?#HVC?6Ps5Bk3w20nPC1QxM8KIj4Jg5iUs#bAyMK6tO4 zh!55?iJA`)BseS?C*Xlib_$8kY?xMy;*7L#g>jU&>>TW%M%IAZ| zzM=4Eln;!+2ff}210UR12#Z)AA9Mh9!SKP}9bk?OK6uk4;)CT(qUM9VG8noQe2~WU z7>^Hj^a&8Z7QUy4U-J2&2Q@CT_+a9%0`%wbQayjl=Yze!423_Vd|(7V==4??_`tpu z7O^}&XnZp`KG+HUrSQQk^&JHJO$n2z`Cv*B4BZMoNMd@7#|Njb4G_O(|4R?QHc z&jJ+N9@C`FxOjWhnd^Fo7_vPUDU;*@(!Ux%I5g%kSiJA|RHo(xW;DgRgkMa0m`4s`;SL*9}_$8kY z8ZQq8eub0|lBvmo@IjjbJ%7sQgAJF3!k6ZrR&$F-S z`BOe09PJnie@6Mh2z*eoGz@(3^GUI|PVd{r|3qU-J22!6l)um1{*SRNm&1a-mi!B}dJ3_h^!7x6(Nlc@Qi^9mTc6@2i;C&uK1^%n<- zU%i&=;g@_q=s=B=j$a|=gG_UP{@nM1oO%Qt0r@6C{Mt7|55MH|!RfQ1z^{<3aT@&j&028w!6$`M?N#kUA+0eBgQn7O^}&7z*lw;e*D9!5kTU@Z~>6e6WW} z)O@h{aTvN4e2~ZV7>^IupAHbeN*>e0FZq1Xff^TC&j*=b2k6hq*?Rtz&j&keLgCLS z9~glThCdVrKFE0x7O^}&=m+Y8;e*pzV2%tv_+-6^4|Xt#nh#$73k=-~KA6Jv7>^J3 z{3k&C+VrR%e#z&9e$=?g;)Ch#0R1`c&wBop&j&}p3WYzTd|(7V=szwDeDKI0VG+yY zgC3wR7(O`q2QWtlAH4U9h!55?iJA`HHey10(Q3uY1G52lr*dB9_Mo9Y9?$e6aT(Fh>R- zy!n!d50*2Dnh)|GfT3H#2Wd=?@%SL|Sb+GoaJ(LV$>)Ow{|*Iyg_I8t9}Uo-!|&Jg zr+hvbN{x&1K^EY5UuSYxXVO5DHpH6NGv|(PEV-G3;7?L__>3{3)Lg#!}-#%?Eikx22_LkQ_6)JwEXw@~P{$@h^}wREbjLCG1sSW)&20oIQn=i_}!Ls$%_JG4N zS>!Kf_^)NItuc$-ZUz{>ILmpf*|PQa_H%D-Z`lf$E&DIZaz1XJdwcs|Et-5?M^ozP z3|Drc+X01yywU`h{h+&^rnENmoFdEIvnCk9eqZeedi(Gk2td$TaomGk08Nf)CkU2kaZP=x(@XSzHpk=$G(e zK;?HOF;gG4ZjOTnGaj;TPJsVD^#^O7ng083YhFkC?-a|{-(I}EuE}J|x@Na!YlgY# zWNcRK`adF+%1ik_wD@uRzMCp&7DE-b8rO}=! z-3d`@kD_#OR`KU;X>>e++ip4rQHtL^FT)IB^Mx>ex8<$(N2jEdJ?_is%R(^SQ6A%{ zCbr7X_KFx=jT5fet1h*lf$&)7{Jdps!XF<}nezRi(Xsnt*uBJ}6c4cFiPFZqy-}+6 zMCrK*jnA8GpWKBIpNRl(p7?akxM1QlXL2z2&!{x=DY2W$t?`L5>8`)TzmP%d$gP&d zTjK`QC)O)`R0n)?!0Bk9eAEDZ)THpyS3ZO#mql_Z+Fd-?_FWda zmGV)CEawQ|qg&h09YOi%JGc~+<$Tf%^rY}n`e;}77EDp#i>aNX7mi&KH zAO#$W-zmbdnKaCv|SmlHj>e2oW}yD|Ekb)1o8{31$- z9xm*XL>yaU9F@dY2wd1XXIqTzAhDG@bE*_lBo2Vz>KKQ+$=(12X_@nUV+&qvu6Z(k z9Hzg1oH-5FI?9g?%`0cOZ{_@}dF226$5Wr&6@_u9ze4<7wU%Lz5=DR%rf`bBtuWJ-N#+vUk>3G;4vS0-Ra=!_~^l zaptfUbA9uQ>D|0yx(z5Al&9n|MX`A-k11OlW69sc77RQD)if`dTGfI{hP6V<@{Yy2 z;+|m(=GeutmHdK%1V&jfbg|HtQf}Fr&sGX73X)T&ERV`l{kJJ=rV?%;&zh-hzO+qQ zGnKGfV9iiPuz2D>vbIDUP63QaIYXO78Wn63-IJW9jXOWWQ&L9P1711F*)sM22W%%KL+e zvOQBxR`RVu(n)Q)DD<)`ttoUtoeY6%r>gbz2Ne}|-V^+;t zfY&r~pBXBN=^0LYoi#~jg)*(DH7zb@1ketvYsSKdWJ*G59Z6DGk~|PtryCXah7Xxk zkVy-iN!{U3GP~9hK83!1ngq}PiN)}w=Xv}e0RJXa1`#VMOWftO)v`4079}gYg36M+ zg9JL1W66)PpyfkS%&s}@2R$85z-8BxyWt5dE!8z;kSnRXd*3jcD4X+(EcxXiB}s84 zErBG%b8-<$>Pa)Nq#?z}yA*%k#c8V{NgZdEm`rBVtYZ4N_*fUGeJM%q;&iMaXWX?F$3mhqiT1O;Gx<)jI9l^7fmY_6m1A3=5{i(>SqhbK1^0fpfsx zeW0E;u7f1d3EY$xmv_MA%&v9j9J7{WUuuodvSbuxSvuRQEHByOPxYe>4<^>T3xD$y zDyXHWx{@CfK|{HF2J~kYRHzuhz~#hVN1T*5VS!sevbbha=C{?6x$Ii8(_REmc%z|) zlvwh@=+qP^%)wFU&dT?dPYXMr1qMwej%_KUQ{AJO1YA%@W>OWGI%;pWHRN398>cuC z2DUc<6@%JRs?>c2>qKj%jv_FNwWS<>>&^C>+ytk+##)@)mO$tmX6D43ponD2zXZt5 zTAA}CEMMDFVy{(#otjtEla#{pHPP#<;KMMwz-?>kr;hZ~M*68MiA@39GGP#ysjf`mx61ngNEKy12Po(L~~zMXot??WOSM zz$ghmlQMiZrIQ29ER`{*%Y4Q_z|5Vq-7!$#$thPXshRPdr?_LL&X@uDARGOs_#=HZ zDF*w405q^snCw*a1ogAH~<^_fzK^ zUng6`g0JfbOU2iFL0zkNEFgUCPR*e^7J|apc29}$wI-KJT8Xc3u};Ro*Z6mRceFm9 zgcx6QOMJ$J3180@`%KXHhirV!L8I$90O4yvG=GI8vPJ&7%}@Ti0_U$QaQ-@*YEkE} z6XCLJ$rzl!cDm7vuXd^~Db8tI>&;wAS{IVsk!7xC$X46Ztkr2NAV~?ne{F>PAN~cY ztJ78pd9EjW-Qsj?Yni<+_GGX28vxEEzW*Qi6VP>4bN0Hzy%YK~bX~==*EPgZN9HNn z>sp$x z0zSvs3oLI`dUM+t$3{_Zy9RQ-RV=r)GJOnt*9Mr|-o$cSi|bjK4bA5YSUyJ=1E1e+ zp*a)FZwtMt6it5p=eIjG@n#O4D{;|T!i-~JOq)5zzR{EMTIMscFYDbyvtIiCl-Z}O z)K(ZrYzZ0Zamc=D-swL24jAWvLM>G1Rw@3c`KAqOcV;C7opaVe6u|SI z4A?S%8kmf-V2f)hxb4(Mo{U`aUuWvUIn;xEO0Ma_ROUj+hs)S|#{~MIpcqL_v?3F$ zh@Iubz{hi_=g1Q3rc3SMzm3#?jslVY2({7cKhoLdqQ;Hpo)@%@BM$Zq(G`lDihXAC zVJdTEU5a~UA^1=HzMndek8Di~|IzouvudLF4*R>#H@^4(br|sdk^hm3?>#_WtFvc> z???Md!uR*4i12+qlgPvOOs3B`_q*N7~fZJ@qwp7^Y?R` zeI^VZisV zuaJuGD?wc__&%1JBLm-U_lod6kxAs?`{7Ju;rsO042e7^(+mAHRq=cU2ndoJ{sg6|Kci|{>}N#x=CIft?E{oHB;|6dnLgv-d$$)1jPJQiec)+Od_Vj*pNWRU_o39dD85G|zW0v_1HM0El8Wy= zKwU8P_oGce$iesbZWH1AdM1&F@0m=WaqvBJv4Qb@=OQ0?8Wi8VArlRU@3{-3_#UbC z_tbMgG@rk6{=UEJss})o_x;tOpe`7EZ~Q?LzJEDXgztNpL>|6RXZnnT?-QRjFuw0y zV0e5_L?#*z-xs)|_#UbFKKa`);QQ;fQt^E(s0#+)dr)&^?4N0Svk2c$4Wbfx_`aO! zGY-B_pJ!lvKk76*zFU!rhQs%jbEEh!3*QgYlVi~NiS+xd==?-CK4qqW%9_tlW=h;s1H@{XVMBcYdPp6dL8^M0#4Ht%4+VVIL~Jr_R8UGs>Zg z0I|xsik=f_O5q?v?gSdQ)2^IAQ{din8X(nke&S-M4Gycp=O^Y>!f}9S;PgZ|Fp{3G z(&)_D#-E>9=sQ2L2+mKO0qWrN8z-E0=y1=t%hj=-dp^Ge{nmtE{U6*JlEJ+EZL z91k88zzx)4thK~J$}(L|8aWO3IwW-oxu1Z zJ&OjP_fksYwGMmHw6FP0#;$N^C;W0lB|D3zECWt@p@%_sp!U)IG!Um%#J+|dMstQN zp@tIMOgQO!Q z>?@#MpbVg9RP{;PmRBk&(RW~hb#G|!_ETS$XU%Fj&s%IX;)&!|CYF=SzNl9N<-6eSRgV3#NWE zmYUGTKoXhOPzCVcH&^ydcUpD%fCh6e&Fl%G~n&I@bn*ePRCVa2 zYkcpY?oZMA>+7cn=+Av8_53OS_a!?}47~d&7y;WLi?u z1Vgui4>mJB#;X^t|8s!&b@o#|{F48C(198!9lt`#2bq%s^ylh>dj6Ep2Rk1Lg+HTw zU<5vxyeABN@cM38#PaxHET{{H4|-5@Wbi>-i--?SbwlR`9{gOpo#SAaP=V z_;vhaJ^Yf-2MZ>I0>47a2Z#R@pg$Mx)AOf%J{U@klg_VEJ}?3wjC(H(eDGo^EMj?l za2Kcxh7USWb7b(rw`LI^9A*;r^TE4&Vdz%y!6K%|czm!vD?t3(_kkXM$>)O()Hvz* z6;eLPd>}x7&aTk&r+hxxIX)ErjPijI_#pLPVc-MTPFTe9_+Tig3x*FG-vM)E@WGdD zM0~J^Nz{C>xg3UW1s~)wJ;vjM%y9wYSII6t{F2WHJO3C8{0b=_#8Z<4d7nJFOwXV4 z`C!r?LgCLS9~glThQA#KKFHYyi&!2X^aFLl@WJV~z#JKT@JYiZg8imDm_*G7FPFg3 zt>A+xOpo#SVETOl;@75PJ^Yf-2S@J>1%8E;4-%=#f$+h&B0Yb~=Ys{Aq3~yv4~)PE z{Wph!4<6YBi&!2X^Z<3i@WIi4f;lqy;Jxoee6XHL)O@h05Qc6AAKcIM7>^H@-yI-+ zt=^%BU-J2&F(VZC6;eJ(rX~l%2dUfj{3)LgHl&BbpHV(A0w45xJq&zsUjZy)d3?|T z)CI!_d)I?GGWg)lGa^1%&LnC+$lD4-w}KDSm>%Qt!Qr$3@oV9mdiW)u4~A0XBJ2GD zNe$4S!?)=9Q$8P@9vupQM)|-9e9-B&Fz|u>RanIG_@MEX;P_xC^q0a1ubdR|0bvp~ zA57T@L$`ttl9(Rj@xi&f0>rP`Z|LEdd_EXUjf*TkSZ@!|pZz!J`BOe0bfCsb_h*z3 zjKBwN{vHNCxMdYAVtIUU`laCbU<34*!Us#LMSL)wNz{CB|2i1D6?`y&=`kK3bQ>8U zeog*|9)8K^gWNkqfnOo57wx$tK!5gHtLIPoe9(^?7ivDps~MCAr}gES$?frp7m-h0 zzm0!^oFTVc5^s+ia5nKQJDAg%ZML3yDi)49nbl~5<8~~r(Qr1(Ev7c~;|TajVs5@D zw{I57FvEdDF>IS`Zn$Py zToSwJm+)ag<##19Q~zY$90v_%{L#8O0si~c@2q+BoXQ!at$Fl>ny2oxZ2fKf?R8Bi zQ`R-REn71#&MN-AZC3p5=1bd6$3PUndtQb)EB5`Old5|$ zt4X~22A54!eipit5&uCY6k-LJTR3phY=argW_9O0l*U%U>(0k}!7zOSjI4|}X z$##=GcH?|V_Rso?-ZFW|dc$#@a7QV(ku#@mNbl@^&G*o?&G%6E0q+kY$~{yZOV~ZM z_q*a4Oa30XLkS#hYp*G;Pnhe7CyrY9Q2ax}%pKj~CNjYdF*P~wt5{N&cP!Qw_l#w0 zPJHpPi(@P2Ext0hZAa70-94d6Y@KCm;nnotmaXq+6(4UKTW;B!|1)|aEB*kt=SN zcd~9~H+uUNz`;H4U(z@4j-nXH5n?MP_VP<@$71Z&!~w@+RbC3m`P!?9;~?C=G4?Yt zj@l-BgJsUzM(_DbzI&J6!|eVw(E2E#n2OfNkk!%k(c1Mf7j}k9TpzP)*22A$M(#6{ zq#@}UPJ5j-sb|g|aPMahf3400uPcTZmA zeI6?ZDLNm#h$Qu-IGHr0_;?pM1Y9{KTsaC{IR~7c9cW)llDjw^D@a;bI9*$5={X;K zjnlEV6nqKP19X#i_94qX67T^(%Sl*U0I@MjXpGx58AL__Vsum8_ zQx5<3o-_egX7S{|gpT%q*2L zlaMhGFf%)>@JQ#Ja>bIG8PB0Z{&Hrx?qu`+N&XO>?{{iQYy6S(Xy6V=_c~HCS zT`U@ppwV?4pk&bOJiaKtmRs`AH@N~W}_$LwajN?U)H;aX1%eVe6yg{#=-B!!0+vRh<`6;KP12IvD7&Fdp1yd zG3f6P?-<}S(Qva=0(DEq@OvdY-knK5@SBec$Xb;QJ*os6>3S3-X&_&%pdgzpoXL>|6(WBQDfzwbyiFuwPo#u+<*pWer3 zqT%rU=&z#q9;x`=>G3e&yZte#_}-Wu9KP>_{!;M$mF*&YCrly_->poaaq!*x3j^c( z%IkdKY0&)r+_gRv4TtYzsd3TzOho4I{r?gMe1GIosrcRl)CE(2Kl*1$`2OA&5x%cy z5_$NZ$@Ccq-1 zPm=Kc%MBuY-@_#G@O?VdXB>P#ca?$heJnN3*!7tm-F+q+4&QrF5C$V9{8 z`^qb#_#UbG`@-Lc0pC9uD;3{!L0vHTK9rgx1K+QGS%mNLOd=28cdVu(83*4<7X#z_ z>CT47_he+E;qZM!rzpNhD!y;}T^R8F>$|1m`$|w348D)0=E%Tz+lwN6Ph=8#_@(4D_}*xa;(Mgx`&oM!@cnuiR3g3~9TgnD zuY~?m@O{o-Mfg6EN#x;sH>S@x^_f#`4UF%1QR9q_@9X1yCK?XkJ5b}I?^h%8{c5K> z!hrAg+oj@ro5xx^9k%#YArq4L|e$HfId>>1VGd8~OXgcRL(Qx?Q zgBlmbcPaROke(b<49C!U4rQk26`=DI-T0Km0xD}hKao3sW+Bz$JAbCgbAIAi{Sjk?x4yHns?_=gfAerLSknp z&=kQDii_zHivM7eEyT8hxMsk4ES>8uZW&yR6bvMY6DHa%i7#$Kfy zu~^c4YGb13gvB**;@~QF!lHxeJOf9&5J#ZL&!-`@4t787E zfJGzlA3bKMh5rJNFSC#anUtlo@Ybe~a!-6S+;>s?=#MkP5k{+sgZa;XMhP^8m@UVA z2(c1h4gW>Yqw$_saK7<=_>i#R{dB8TyzdL@g2DTm!IJR)jr>VdFM+G1$DvfuW1}e(f*h(yLZ%)dCKYNEW3X`(Cq%pCq?y} zJxrqhy{gT>fuURRdsTT%53SokA`Ce_Jzt&vsKu=}+iP+Yoc0=Pac)}z>!)F6PCPs$ znJxKaJPG{@n((!A(Vs7pf4=1OZ#)oCq5N)!a-OZrR*(YO-rHb-XWh9=hQfqx=3#lI zu+ZqS>X!L`R`UAhqt)gAUe(dFV4S%Apd|LqrzFmdv2BARFu_Ka4}3 zrReB&i)$&J*!bQ*-JhcK*AuD9f&9Mt(3zA%y!rq6 z=7ZtC4g(+L{0}T*d3?|h)CI!_r~839GWg(=DIz}D!6a%vc==`+x)ppdh3PRKADlZK zAbxEcq=#Sf`Cu$HF0%Mw{nr8dbKFgO{*=!L9jI~A{Tby0BmACi|2|>hgGYV^i&!2X z^Z<3i@WIhvf;lqy;Jrsge6XHL)O@gL01Vv|EuRu`Fyaz9SVO&`M?N#(5rVC_~5>4U=hpXgASlB7(UqB3(S$h z2X8(o;)CT(qUM9V>tX0t@Ie~WV>~`cJP{y%E$pj@U-J22!Iz=HuaNS=;pzbWIXqF% zpYr)&C^atnd;l-aL;w4#=eu6isYe+2zh>pu?=zh+;jhhOsfpaV5dI(~(e4>FGh=+FMw>iJVXAME^hDEt|H zJ}|=bL7T2&;DcMPfJH2i4^Cem93O0e{!;j0Nv4PorZb6}5AOdt4BZMo7{K%xj}H<* z3lP61_te8L`Fyb8NGR|tq)7VNi*D zaI|A^e6SMwOW}h#4iO(rWD+$Wq;-R#Tfqm{Fg?cOgTn^{#IJEz>fx7sJ{U@kla5~@ z~|S_F;hd zHN1l!e#z&9+`XZ|uaG_;?D-%-f1XXy^QU}1=tqr<^1%i9KDnf+t|_n7oL^+gKY!mx z`?0Z3CLe47b;0Z}nncZ!vA@WXB;o@rlc@RNnu}Y<2j2{*BN&elGIs}vU;WK`_$8kY zcD^49{0b=_#8Z<4*>8Hhot{7C^TDL@Q1~FqWDl zgAZ)Ci1;9pNz{DMIkt6t@Wl{g^1<}?0>rOgZS?R{maC~aB6v*kb0Xw?L_Jc?wC__7}D!!>)`67 zW+1b(Njv8sJb!YiExd=8j3grGUwv9(FO)FgG^=m+^LS zhM_bwq4c%{a#T`dJ+(Jew?q5fw98GJT(_f2s)L+5HyPcQ!_orupz)B)Ba|M7yApC{ zvVd76=H-t2>RAn33bN-0BPBcTJT$E2h(BJV8BV9-#$k>h7q87il&0_p#cKz`(Tv8? zFKx%j=O!Xdc)mjS+!eS;t2tSrEqpNj9X%eH`K$DIjQE{>ce;~&=*-Macan#i*|!U2 zzfAb6&#%$ghi(zda(mdl2V?DtTLM9U)zl&?am(CXgI!nc`9g=YP__dh!s_Zwcxl`! zy+@l7K)S6;Ydg%$HGM4b!FWtWh-GIlOTFJ>5L`b9`DoE=0&Qet$GTVhjE7oL+Nb{1 ze@y$lhRwg9Q6vss3@V@ZB`Kxlf}#T>)jOp+h1U3|h&nv+mECV>?-vC30> za&#W8lf);}?eItspFx|PWex+TBHfn#QqxIlqb8D}dr=Bx2>xPgnL}buE;t{uT_vBB z$T(|6B zOKpkF)_@D|X=Cx)0T3b$1fp=f^K%{B?5x$f_0I@pMTy?p9=e*j&tEnx)}$%kG6aw4 zd_vi}!E`T_RolIXVs%wQ*_=x$z@E6975OO4o>)_NUAZieHA0y=Q3(tLmCN#2<2edR z+(8-XAdK6E)fMS$xuE|reJvOC%hKQBg5Ep*9WLkzR_MX4l7V(X+dNv^eg@yMma1On zTCL?Uv%#}#O)ndXEVJ!__-ZZnT3dtP(j>T6oDKR{3dt_XFqhwM#2x;%x zew3AtvLhvvZGz7`HvW2OmHret3>T9qV$xN(x@7=P<9V0~SDpX<-!14>g!>OnBd30C z_z%2<;sX8y;flK=wL)|Qt#7B)M}J$52W#*LEses z;Bd=bAL$<)c7xn>?}vwQ=WdPYXb_8PBmIN#4EYD&1OMPnhrh#!Y*Sr7b~+VBRY~iR zo{z{j@q(+u{DXVQKX@^zb+a$vsav#oU?$;o`fzFmIqDY8<)Uq!^v5eh!?AUJPCz}v z#d0}02cO4d;3D0}ib>bPsh;fooBaQAPleu8#rt;^vfaeJf9LW#rrt(vqVmj+eN$=>EC+^O5wi7Ws-73 zH07|}oU9haeECj@7&MrHJ1gAZr>IJC^fz-sn3KPvneN-Uf4}d9M_c~=9ttCY?4ax~ zu`N7`rnVn|oDcxHY*%vtDtT-C>+N;}AorkQe^vd8j{^vEF1CJsyS7X8Yu!Jis$XA1 zb{(Ga3e&Im5;-*EbwT=d?69`<>s36agZlN<(7@bQ*X!5BRUwH!zdq??{W|Nd5HVe( zU(dW5BH{daL|eZWg_V9D0K)X^O11wg%%Shug!f;|&(VK*k{Y25Ofv?*%^MCzH^WN)SyP$Fg=-X;-tJ><@hQ4g`B+rlcZQJ`{o1gQ( zt>C5)pHOcSA16WomOdC0*}r|4`b@ktxh~k1+Qj=&=jz|S(W<_2QC*pvYKa>25C7n+ zHmj5#uP~2ChkCtRsn@Gh`kN~|OdP%!gYWHp82-JOUFiHu2mT+3>)zilOAjNl+kL<6 zmDhn^+xtxep2I^e+x&Y#>i2Ad{;V&yexLSn7wGpt?~JN`&qsC_qTdG*IpAriZtem}ch)$iyLUC8Wsm+AN4 zf7k{3{qNhNs^4cJy9?3pHxfC~(C@?hw58t@c}(>5``X@AQuopC>92NU{r<|*kn&t2 zkDvG_DY39>kcUvz1+}ci$Vr*O7Uum9LyoXnZ240)5#M`U$@8$3#!RpNZ>U`n~_+Zmi#DEea{mZrXp}_rD<$ zyPbZ&k%&|K@Bfzl_Y?1Tfqwr93XP(EKd|n?^!qDF9~J%X(zd1FAL235)9?Lxe%)t& z=E>)~v3@`BTu6C#Q~jPEMq;zn?9;F#WzB z>7%0GUpr&OtTpuFu|I^)Azt3`olxH{9@B8M2NbGj{{YD~A)$jk7`hD6TyFkDH`L(F( z_k3h`A^Lp~krR#mGqGQ^rQhq0QcU#p`-?ok?xWu)m2_kMzP>o5JiDoW?;l2Dx6|*l zW~=)B-*x`|_e;7!zyJOJqN?9#A-fCF?>7=T(a`V154WY?6M0PZ^!wURsif|s-yfRU zjrIGsC%e6VPYoln+v)fDzf<-5zpH+K`wv~9-~Y8Zs`~vEWOpI@J)g*lhJH66XiLAR z@|fu9_kI89Ui$sX8QoaFA9$?W>-Y3961$y#f5oBd_h{+&J>)sY3paF%Q)cp45avHo z3ipz@lHvmX6C?c3{GM_N`JeG9ZWW(Ia5MiiJDv~f_dLq(7Cp;0vhfDdydvm7QTCij z-V(7lB#T8jT1iwAp&m+(4cK&x%Fmk^U3ch5RRa;6HKQbEM(di8fEV zO`4fBJ2u^X__4Un=0t6s9%uMIgumQ!HXbh29Eo-z*JBs@n8Q5K%tU%T01uGl1JJfS z%zxqv@}Ib@y&h3Li5dTDy<%_U6`%CZfG(TH#7@TrHJ=2H?cl$ zH@Tz9jBvO3LC_t|&Y(M*{iqc8dDsvBUMl(fm77PluZrg;~p44BwsY~iU&qW7hJC;w)V1UtMmnY zGWKKU26*nSq1Qy&=3KlfO3omA5`DCv2JN(jS(fvcS?k$CB9xhnds!NIbHKNE4O-#0 z^rGheRLGTmOZ-~%m(wbB0cSq&mjh45+rs_j?53AlA9*xH-#X?F;AaN&%mK%6{C48q zTd)q8rVaea%}_J^+TXsMLTY5TIfplIgOyb&?VBrYn+p2K**;ttEnzl}pQT=IXf!cr z$2n+XxqVx~PxVI=^jC1P_5GpwU83*%qu40w`w!d~rtjw=eN^=Q^c`*K`@4BeboG5K z&$HX<`w5S9Z+-vfZ$tXDJL>zMVf1xJegDYAs=kj_|NdXpGY{+E|ARW+ZTLs`Qe3P3 z`#(`Gq5l0IrGLKw!Oi;jCrX3*{^EVl_9rMbn(se7b7Av0uOR)o=5JnTZ|~mq0crcz z_QyZOV_JT%D*N{+x&z;<8p`vbd3kh%(WfW>>hw{IF*jI_%`%FXW9i;mu?+mvR9uvZ zL6Sk3bC=Sge~CJLac=s2QS|*wo_SDF0UyZU&5-?tyUi=D=;qmBi?!x*xWFXWH8kdWS8G`pbXxNO1^_Lb*0}E<_TBMp%m4Zt1?|MM z_k#1`8U627^(5k=j;HKtSoJr2y?Be21^fRO+a4TxstfGFKolB9d$6tK!tB9(q>qX{ zaBObN9!%mfE$zWA^H6jL>_H!%PxrG2Pd?C2{guVer@uPkd$#v?hW_f*?-!;L$?f@m zVa(j~;Te54Fx#U4E1Y0Dmr=P@nq zLE6(Ox&!t=$Mfla_TbEY?bKg4yUwS-qHhoKiMXiuXFJs%yfL|*c%E>c56|e^gPufO z)bUj9L3gkR6_0g+J^0oECXU|sNZv$t7qZ{y5hCXt`+eFyUu64hTlOHG$F#HuLyJ*# z2kgPuYp8_oXAj=Ex1IXyy4mN`U(vS*J&Cxe>#t6=2a_hX6VF3M=fgAl_F(-zoq?xn z54wXrczbFW*n@xlH<&nj_TUv{cOmv5pU8=ZJutu9mOV)2F)i&upWmVA4%mZF-|3$A zAa!Cp_16!dIG_HCzCDB@lV~;9!&aWJM~u#Rrn(BFIqpLGxS%d z+Ji(QxjpO2Z$ETCJfm+99if-w256{5B{7BCXSvx$VYY;Vh;upInl5Ou`jh{59(fQ z-5z}OD-_)Ud$5e>)BWthi{^IfuS55pPk%+<9-O_kGxS%d+Jo^#a(nE-?96S9gByvsf3Niec2hg?eCqD=;Te5<@a2u2fv0K@x`RE) zy0Z)HfqOidIC}QrMr3y(_TcOtASW93;Isc}%N}gyF)i)EJ2n*E0ej%&`E);fa3;N- z`m5ru^XaeX+k<=}?%&HEyzz^6;yEq*e0WCR9`q#QqK>C(54wXrxOr?B*n=W7m^ga& z;A&)dA@<|&;2Zf*iD1_$*sHDbvYHy})hxWN?mzy-XZby~GtfVH5 zZp&fm8uXy?kjo>K9)=$la%QrCS>R5SJMODzHE=1&o*Rsm?6~vLu#zMGc#UQ_or)WW zIeuKcHVaXj!XFf`9SBD=8b`mh9V4Hch%n*#3f*&8;3BQ&WQDfy!Sr|ZcwpwQ(y_gr5*Y1}G({0OQ7(rr~*+hJy|=>rFc=3^p4EIWHy>irgj;QB$x zM~hw)u-P_ttb4Uj9n^}_J`1RK|DVx5f1}Me-?@Dj<2HKsPo@>A55?j!kWD)Gzm^Y@VaRFM3{-Jm7;$t3xSv$I)-xnoIwdO&D;+Ql5h z+)R=mtzCS=P@0oaIwpY?HL=Q5dvbIht&_wj)9vs`M$-CcnZtljN4qWirI&7}Hfkan zx)-HDhTt!@mN_KmKK=yZ7022Va`@aD1&QT%Q0`GvDB8xYz?^Zo;DV*9RMNHKp+aoJ3rU4&CXh#TmOtu zR+Q+i?V+og`}}3IVojRjEkp2#&L@t_J3Q62S8R;O5+lAE?>1(;5|1fT6 zoDKR{3dt_XFqhwM#2?3Kf*_1PX5OaqM@RW%5$%$X9)GZB|1jL7$#FKCrsWl{c@@_h z$B)@xX5oUB{GQJGr`ZV4#$hI})bByhGY~YP?AB|v&Wif`-KUCAl&<<0s4h5K1~sA@S|NTY_J-5(tb!PIy|Cdzv%EW$0jjv71Aeo52c8X zCSk)=qp%^Pr?)Xh_be4c1=b>qD)uZT^d6z|y}lIPUhmly-CyVtT?I57ikhNv+g4_Y zMeD?(J!0MmVo`(WI4qhaY3hqj0jFp|q2==WA5y>i|NGCb-_+&*+4ZYm(N_IRxcoK3 z=!8U2mb#osd4r5Gt3j4M(e|!TX6+F!s-mr2SZz%RN~I#R-a~qlM4N#@L<923C6>h1 zD9dAVP-;m;xv=&mF$_v*Kn{6AMNT1k5aqsIhyV)~a}Q1h3CFsCab*uZ5dbygGuHxmv}mBY1uDcNMRW;Pu)L6|auqW!tUd)e*d6 z_p5ky1h4mMRlGWa*8`uacy$D?lrL1gI)c~VzEtt*2wsk_RlGWa*KnVTS4Z&rxJkvU zBY3&A-?msPQRi1RnzrVnN5rXkb%eh@OHlFZ2wn>X6|auqWlmP{>Ih!n^g9<`6R{r0 zVzB8c2iu9}I%&&7+R0pO5gZlc=;7p>k#^L@%NK7VY>@jM51v`m6RYv=q7`4i#+VQH zqQ$U220?6_^Q=yAF2dykS9Req<|udT|BgF+Pf+L4dBnola^_fvpLGn&l7+FJx~o~t zaN1gDYOqNAMEV;R#cndE@sw4^8^k=f&{&HK@?QHmMV$bZRWMr)Llh;iOmM@7yaC8ms8zRP@dbdLXM9qeQp^7 zzkW@0Qbn;hEYodUk%hfQO}~rmc<}W}70>UCr*XE5XEgb9fK$aYns{FI%!T4v!u9E$ zAgbM()JwW(`7oR{-9w*}E@jj7imon=7?yPo{;{W>VD*j!Ge~&j+{JRqW2j5ol?@Iiu!}qSM<6jNt9WLtp!C+~BtDmln^G~Us~s=P<}K1UuP?{iELHcW^UZ^k~yv3l=8@{Hs? zouacekwc`7;?2jzJL;XA4bF-IzjVCGEWTW~ZF!b-ydjJ(zL`JZ->G}hH>R%?dReS>|MG4>jJym?Ue=IStQ}}ml zZx!Fp#P`WdRD3%V-_!vrzMYBhz9A~Uory0SuHxI7_@@6@#kVu@t-D&qw=?m5F-^s{ zGw~fiQpLA3@jWw2#kVu@ePfJ@Z)f5=X{?HGXX2YUUd6XF@m>2%72nRp_o2H~d^;20 z{&%bRb|$`C^Hh906W=F)t>W96_@@4sif?D)yYC?t-_FFBO;z#jOnlQFE%84Tk^b<`r&%oz~jEty)N}sz+IV7 z`HayMP0R;hW%BNwG1#|rvz|8XV7rc!9F%##GKgc2Ary{ri#vL=xgk#3j-lHaEbK;$`9$~{Bdd2QD0`LEH$RD{nzG&Oq`+=m0$tM-xD39OfN4~tE;u~drZ;X6- zLB%)9_O+7xqIM-(f%sVEUPf3jt8~*uxbeGa|Sxz_)c0D~m&h1|G{9jPJo$9IdPK;O>=FDn@f02N}uH$jm(l&vSfYhXP@O& z=rxcX`jh$NdsF{!zvuOTIs5zF{-dF+TjBqZ{eUbh@(W>w7{@@WSiskrVm8S87-T!( z;4C-f;p`Yv7+`qt(*qU@;s-jM^|kiUrCq z&HJ{LQ#T2Ow_$?riBQ2o`}4i2{~sb$@b|C&e~nPV-@p3rg{}{20$%^SWc~go)BwZy zWy3^0Mjse&=wvUj0oRpqsyQ)^oycX4L9duW@0&;fx16GloMak!QtEJu4v*;AFFJh8 zu}REZh4cxqLZSn{7^fPA4X{ZV>O9N$Wurh0c5GGbSxQLCnA%;ZN#4XP!r0nmJ``t zXrty%P{W%#;1KmogW`8JkGHuO4pPyQ@R5op4zwq4acXX(+@8t7R;MQBjop))G1$UE zWlpT3v@==`tk9Q|?nPU&i8PXt9i~#dqwCX8%!51CiM`)=?UQFx?jbsBm6buK^3o#;Pu&WRlGWa*TQKkULC>9 zJVV8+BY1uDq>5KZ@OrIS#j7KD*<31K9lTp;nkt{E6(Y4 zg1@!Rw(~U7WKgD&*bmKcTdC)v}yxu)6Ch!1FCyYTFl(W)#8gFbr z7|l0URyNzwz{i&=o^@9-TNCCYykGQd)!|3!bF?G~w+v41_QPVxblX;B!R^PoW;+-< zj;H+o&z)%Gc5|v1ys7vX=pOt^yvnBO6?^B<~0>$L~N%9=6 zivLB&|L*WJw&i;n-L_o@1)EA8(S;dAjS|6g?e|D-_W|E}c!8^YHL zRQ|u{{J;27mH)ev|4)Z|2vzz2qVxaVzf<|YEBSxTtmgQ4kMBQg=Y-LvY>$=q$950; zGR3y&Q@^jQ5wROOD&JS$=Z-*`>t_|;=;6zLuj1RO{>T4U#kVu@t$R_$w=?m5afym= zXW~2lH5K2^#P`hWD!!eG?;CHb_;x0~lipGB?M!?V%T;_k6W_J#RD3%V--o;{@m0Uq z)AD;g?}X2?2WFGh@Ab6#y`JfhMetPsvF|!Ru6`e-wcU4T!>7JO@5^;)Kcnh@yKVp5 zZ_aMc#47(rb2n~&iz#{)-)Q37v&9mFif=UWT_3r)01d3-8%=y4iCkPz@r|8)ba2j$B+&@r^RR2O<|2RD7e1@BGNcg#f-?>TfmS z-S9Cb?=N;KJ(s=Lk{-MX`2Fy2TJ(0fbFCnMd~fPM5UWEW=VHP7ceVe>%ejn15C+=l zuerQ*jsML*a+ztHKJd@?#y{cjB1A}TpYK!s{}3TUy#D_o{`qPnELE8N{fE@=zBS>N zFT8%Lzqw}q<`%x+5-JXu%*kil^$IkMD8SeCH;(du3P?bex}6{4WsyHLFzoyV5_z zrQr*VD*s<}|0qv{PjjpIUv&IG37k;v4vAYLxsRj;~ko?M(j}XBt#|I}_hGPOJEKCccx-s`z#$zKOcC zp|1le{TsFa5WW7x+ISV;&g9>Rj4HmJiEsa2D!!eG@75F*-_FGM$;(uHI}_j3!7cGs z{qwc-&o@1MmOU_=6zPvAhkYWNo96QEB)MsRvB-eEcRifWX_uQcJL=-)i#O%{HnnHZ z^F7iHG583n)32NUTetCB{;k{(*X!uJq<6a4rJf3W9@kg$xgUYz6HUyAZ{x~e#T|q1 z;ohwG)~0xUDLN;85ZC*aK^$`op>csw`U&@8CCy$ZTshY_J7ya^x6B6%(PA4_sKuqFCthds6W0p{t52^uZB2**Z)7n zf8CM@%K+mUu%G`S^&4_YxaAA4pXzU}nZG$(|CUgN@q>z2GrVGlsCae6-^qK!RJ=NZ z*8^9ocy$D?l&e*|I)c~Vu2b>q2wsk#t9W$;ui>LqygGu{#~CVK9l^_GR`KcxUL)>M z@#+X(pG`OyULD$hrTXX7FpDA6ZCjCrZG%@eTXEv^DJq`d**V;(xJX9rIG(D1xZqA$ zTN5UByS;t@n0N1cdp`p(eXbW{)Ur^|3%0D?(n&N75|Hl|C%e*{!dr-e=hxrihoz) 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

?e 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

  • ij|ttD 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%0A<+ceXD->NyF14>nAV3<$O%^vA1GGQOX&vnGXn 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

    _ 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

    n=Q;0W-~4khM_#Oy^L=7sbk^t zO$sOc4Ag1GeL-2qjUhqbU)$! zhPs2*@b|)ci~DG3lesY@Dyz`2{bP=%JPYDR33rswKY^{r*z~Zqso~F((u`L62h<7t zOSB~*mG1*?TV!laA%wqz)j^B&Y?Yf>L29S}vTMkdX>zU2X*pIwbi+RkOWfsGg2F#t z+P`{kbwBto$2tMk!MSebf4elRjn^`y|A|`mE3WEW69#@Gj*w}jO6^!3rt)6)-kT|%d?KEicylF5Xyo4m?0(of%UJxFp=4<6PJmX@e%FKqJ(c3;VfOL58^f%_~yT$}(_) zFw60gpj|^VF0l;aByE(-nJ&N#;!L?oz0;IR=n*P!Gy6O+V%_neB|QI}Ck7RY?7pjI z2ZJj&R{AC#7lP~7P0myt4{=+%|5f?5D5CALU=Zi1%SwY}WQLYJC2FxFfsD2YdI_le zdxt6|#d#^1CC5a!BX{cY9fLT~YP0?^(QUYzo3pkFmxFRD@gcer5ml`+262vzK5z`; z9E~WmM=vS%rC=Fs9l0cE;x@YB$1Djp?4V-dwjE{4>VMH*jg}v4%7a_CZXLv6xMa#L z`m}Vvn%j9hjALm#sH=D&WGwRV+i1d_*#by&>IMuPTaf8AMrwPjp z{WZ0~5lDrj`cm^4;+ZnH={1`=+s|;@R(z7xnT{3aSQN{ZLf+Kb9HW9W#1pzq(z7EX zlk^-gstPNTN?QgD@g$X4o@L>@Xd6R1A9PjIzCco*7DOZz(1k*>T#gi^wg|!Y6_{TRo0p zwWP!^;**5*79u_wWZaSPDWIMC{>9~>&I&2x_fx?OXq%$#6`)2Ik)O6in|4DMr8T6u z0)^1v^Ge5Le3g(!SY=c$hpSEMLIS!**i&oNdK7GUx^RMV^Mv6uz$8TcOfU(-fh6_f ze^!z@J{t@R`l_SVz6BgTN2p`I;pkeBsXRG#sIHS#>mKT5FqT}xZH&76x29fYcphkn zc0+KegBjNWt^#UwpD(1Pr=1tR0IxjGR*_x^dYlc{EJ>!Sh2ce@n;Krf#7*5Gym*P5 zx_4o4NwKFsTu_V~t?n=u`4Y_cs-DfPBOJ~%I z-k3|rCBF%DON->qpj#R?K(;cJh$!g`FEb?d>R~gM1aX73<%4|Q;yBBNVisH{{VHUhq=$0z|R|?%yIHZhqOJ(eJp%P;;g=)6|gm zwT9eNLURtj&ZQdu3STb_bfWBX6ow;`1V!TwLYE2OXlOFwo1(H^Cm8=a8XQR@yhT$QQCCrdqFa$p&V#1{sl?A9;u1*s;Zse> z2I^Bn7b@@WFy&AkuL6vJBhEOEI~HdYD&t?njLE%B_!*bdVZd?MjL>?#nL^qkYz6DN z3^D$7jPme#w6-{oo4)N z$cg0j>U)L;I#sp{8Cyo__dzZZ4C49a!3d!GsYB|HGyVmMadC*R8jOEs%Oz)3bCoVR zKQbJxHdi%u$@%e;bS1Oa{U=M(mCU~0A>~%Qa4`OLjMstiGhu;>LzU&|=fXyLJT~sr zLTjIAbhY}0q1xwhTIldgHJh9!qq+iT;a7&VzmE4v*%~)%Hh*oX)7$V~P|@qRUR8D< zs3=W4&VV|L`W$})>MR;{{4L0}Zh(EOsye?joMy##T6n*r;X=jg_d*v6|A2Bp%YVZk zg}A1F%o-MuHuS}x3>%>GCj8m3-|i=*^#2l(#!i*tfrzZk3I7U~7{kRO-rvAh8~-ll zLD+|Qt!V4Yt$#$MIg?laG@Q1Vl}|JNjYznvb#sPwTM?w1{TpoQB|kn|{EwuA++OFy z!v{^7QqeDxrTpOr=#P$ZKaOF>Ghs4)yEEv`f{kH!5&B6Z>AYy`eZR14L|PK*>}IIW znBndq-E{iu{86?`ZTCvqUDyMp7av`C#L^HYeAL69OEFEZ9_Gh@da_K>*el|Mh~VituMvxsS^QJN_1pHLaa+2^)(^>lHMbR>0l4jusN&lBBo)#u8?wz z3^_d-)51d|@~|{vwvA7`WGB~jT^AC@}WWgXkzD4p^$U*^~|q30bl{xzJP z+Bh{UTyEG(7y7=XVQ$@~_%jy{U&`4`$(L0D3gHOK*N*JF@MyDLaqWg{SIDa)g@nl! zDC6ic!eUmNDrIGkjsojLj9|+X(-SOWnk^5;@XdN9kU1o+Lk<(Kqa`hun{&;wY>zRl zF;!m^9&5H_9gn6VpO1^E%hMd=--vc0Wc&-#ewah~#HGAzB{|OHrJCJQuSfsGNrp|R zDLmP6itCl|ajvZHmT-lTzLu7hz*7jwuM$>~PE|D8eY4Yq>g9Q$=TxQ!;QWZZ$3rdf1!fyxn$Zdux>r1x zhrDZri%gk|B&jE#A1~CZhw`2?3T1Vz&9%bCND0BiV*G2ioPpS){e;|S^0pOL8Mgdo z9j$PwY%QZLpD#081w+V;e-%&+rr8RsT}l??TH#5CT)pLQD?Ay*QD>>Kt?-nD8DF-- z<%ViiIJaBjsS&OCL%6~NLW*mJr%6h2x4iRRvpB03@!JYlE~QOrr}rwy)K$CMkgW1P z(=~>~O3`5aYZ#-!TB-uF1X}W+3Hpl-^nCg-;I<*o$vn$3^%7q_d2ZK~HI7Q5Hiy5+k>=T^2Cp|9pk3gN3a#*BLmrZ$1Bsah9JZ`o3)X7oiHUM;Zelvz=*qzdUg0J~BGqEsHEXFL zm5#|-%l3w(y7iqW4v;97WS2IrS_*%m{Cxa#Mb#5!90S>P>Z276dw3nfg;{1jrZCOsfF-jpx z-(*N}Gy%rH!uI1C-|VM`N?WJKTTFSdUZ*I~dn-6tVT{5bksbkOdG;tvk-9FtP0IZP z6{bz+XzJhYw(B-*v;@9`{sz~oSG<i(SrjCkzj~bdy^`1O>%@B4*wra2zQ662yuQ5?>)``S^#uOhHRFYT!oT@oM5CVYp-#-Q4=)W- z&*Yn;H2U|EPUVU4(N4^=k6G4{n`9$yY-wjKCO*Ej)8n2`&?{&tr3$B5{3J=xk-lln zh0S=?vES}f$!BUSwc!q-4qWHc9*xn_T1_p(_)-R_ZFlF=w5iWNKeN%Tcwa&giyJESOoElN?9^4FtOg!CJdYEDIt@h|AdHVO4jDbwEiX%xN% z_TW~xX3GKB8-}-y4YO8=U;SaHUUub{vuPS+?rsV@J5C^ED^S>_S6hl2(-G%IM7f`9 z%C5a899Ugpt5bi^ZoSOoPmk(7^SrAj?A|*uIx#w1u9YpMLNA%i7gLOeODvFqyhvzt z6pxDRas(-bX|^^gy?dH;v|M)Sd{9A+yL2zG)@an2M&)+Gu(zSMHrWcoJ`r1Z+|MnKHs~V9dIJb(H}^ZfnX1o9%2l)9$>UurQ`~#PjNq z-oV4Ghig5Ki+U|1MUd}R#{dE3vPYV;fX`*HpDfQtDMxy$peiB#2937P0IdSbFE-yA$|@>{Y80VVuBb+I-dnG&DOC}BeZ^xKEruJ<%hcR zR1=WS*9^g^vv#E;-4Vm9A~r{6B)!^ja&o3+)27!LwkBs>`gFtb$r(EJC_lrcbZiWt zX-F5)r2`Si-S%1F;JWSi-+%vhU67vbsBLe;=QwWNx_yW6+KAh?n)JG;yko~!NuO)D zWBZP+ru@7l-EPvlOSeX!pKrJopG^9Kgm;_m3k~OZlJcBvdctY1cA}PD}qjRZg9~rZK&V7DN zLJ#+-gr0=QCUosmLJ#-ogdWf_2|c~XCY&?v<6^AlycCX4=w)<5LNCx06S{VPOhU9h zDWR9($qC)|aS2^}Me@qidrCr2@2Lqry{9Gg^p=xXZhLx?dh*XmQpYnBdMT_-=sus7 zY(1~ePUv}cPEz)8D@p2EcW#op?Rg2^_WXpdd_m0iDbME%6FOgHJ|j|!m}W6sP)VR& zcjdX*OTKuShI6^Q#HA}TPtg;i&ud*_mE+p-<;IsfPG{2!DZ4Bx&${vx9cOu1jofNa zFFsqOpA^GgYZRXBczN0RDXxsqCcZo>$FuvXj@ydPSL8lhG@cffJ&x5{^4a;y+-Fn1 zDk^&%t5+wVov-mEkXNSs^q9aorKehbMw0F@e5U)HGIk*P>@_qz%W+4{_Gd@s%zb`N zQZ}Ee*Cu86`MMbH{GvtUxe?XyE|wj?Z7F-B&gkE0-IM7c6Tu%Gl8( zF7Qai7cSF^o+<|GeCyV&i9S!e?Tg$iRU*0Tqtpv9yf~sof))2o*tw2(`swGrnQn(~b?+$g;%NvBPEbMn~(ZY-NKXELt)QQ2^A?&Teb+ATSn&AQ~X zd+`cKhq<|1g$d^7UJ15oZYYKuzk1a&+m@I9y?WVfr+ZB|u3t9Y>0Y~x?rht=t{Y!Z zk#)G?WeYpq8ndKH#*!~Vs6B!y)|MC zZ6wAy+P^JgO#a&=M&)QJK`xDYrM|^vZw!z^837P6f+DynCI{3kaz6|mqM|R#?B0d~Z zOFXzuhL!-~M;v|afo%rM?ByGJVFoUI3{0yH%x8_cS1Sg+ar<~g-JF8^1W3Ktj$ig! zg-<%tYFKt`Hf4#CvCTdrYgNKKKyDhEZOu+kG}vZf$ODb_h6bitOu1aE+ZecKVvUD0w%MC958|@_%pYSeIE|%)0BD&#A5n0C&-fcL4#oP*O?Y``I+}+0+e#KDxqcbUg z)iJ$9U@~IUrYFPK3`^Wu&-MkTS->nKTRoQFh*I0!z%+~778>))ipMt%85K~k>TEMG z)DXc22;X+w!8zaYyv=doo_huq(03eH-*($-;ddQ*uZeA9{$8^6*Vb%L%8uVp=*mA> z7UnHnv10Ao6)P6bW1GRU(3qZ`ZM9}+ryFcD@N;l0^T4W@KQd%WcyP1$#|eo8?kDCm z2QJ-Vn3WrnvCY8HUylO*EGhHS6!7N>xjuo@hRp49jQd5BdJ=x=XcYkIuN;l3#4aR#dHGZA^5f$%pGTQfSF!*3&wjO#QCzl-P%L%1KL>M}EC z?a1#Psov)GA96IW|7f=Pie@V*Yru=|o9b4*A_-jOL zg?~#pZus}4%+fN_mLs#^6Akbm5&bj@|8#8la%lLMBkj&0x?wJ&nj_r5yQTl>mOkjn zHld1A6b@5f4P|xyGPW6jxLSOf(9V+5R*{>`k%wIl8_m|Rwy=s)BhvE@3x!H`)ye|* z`qX$wq-^swuCQCgxPresXuG}3eLejgf~}$9VeZf#8D|zz$~G{!+<1f`p;T=pV^2d4 zX(tJHzAN(zGYfYwkp538^JwhtwyZT;8@rDqr?$1RMKIlz&c$?J!}aSoY}mdL+)uc5 zD^C$%`GIW)pyHsGWQdLQAPXes$h$`g6^I-=2f$G1UDKL*U`-zrgF@UKCo~@iC**_% z7bd*m0!a@6dAH)=03|xe&VeMIoRspR;2?!PFxaD6;tXV>nt9(LZ4X!svVF41`K`T} zOUzbpZ)=iOVX2|APInWAUNB?jnB5F&IF}i+rlSI;E(p0TEvuD;%Rwe)OU$6_bt-*H z>dJ?Mp`NiGYCazU4&F1lV{-e%Jw)Tthp`03q@dbV0zT4g(WO}M>M>w_sBd7h*;8S? z>?omBnMy?Yu^?`6-TfQq@Tw#vhy6DkE#&2i5s!&d|0Wz8r4f&7+vc{X)`EpR(=2CxL_OwyxW}ZnNg#PR`Mm;vOfQ+dQ{*Zu8bbcFu!3t*U-nodVV; znPctinOQ8TR`W4vv@O0|Fp$i9ay!wT&oP{f;j5Gty7=p z$c{MckDMFb6AHYpvQwMYIE~L z)uf@nr&%7wmy3ms;U>>_)B3_CE?q^f(ccq5{L#)l?PXeZn61+Ajdc+(Jq(Xo&t*%y zTI9=Q%NNoGpLiH`zdi->h;LpQiL}^1Ff`N0jrP1UQpzMXN}udL)9tad`zi8SeI!5G zFL$5SXQCd4r{XiODwEH`E6nHBtyX`(PUokY&*Zr)*9_ImV?m0kY@srqjLt&1$}sj_ zn92qzEW)>9UKdSv@_w^hVs`wX|mXF6-_oHykvCof^MlT0{V;aO8v)tqO6j3aUN z*&0*X!kz^Qp97Y8Az5W|Qd9TWIu5LMybh$&=n;H+n!$60dcBo4tQ5lYz~buqwkm&R zss+eHnzU6!yY8Q_Qpo6C3E4T1G?WT=U(ndlEV6Upuuv@Ay>$~icQg|F(6GF5 zpg6Fx%(WY=Z1Hm$y?HL(#G5QPA>C~`3FO&1dh*B0!B9ZTEW_~Ja8dPYe^B!fg<-3r z3&8pF=lArCOw~(lw==JFT5@sZD(N^hr4xdyq@gUUl?LlS!otY5dVTdIc%YDpf;r8M zanbC?gN0O+DgHQG7^Pdcn(`qa-3??oE}CF{^^WyBE?>QRus<9MMt|jVCfkr-u9gVf z;VuR3EYsblTqV14SvMXgTh!ygWVvG+m>e!7TCv-61jxmhW)yuci`~*ABl@sLY{Yoe-*Me|d^esDF?w~PkOr1CRXOT6 zBsDFTPq}5xl{vjFpcN5yAwhadxAfF*>1o2CyqeO%ncd1OyYZ}UJi8muaU@a}ZlxQ~ z?N&aoTY7#sUMS>hz8*Ko)ylCow0`{@eYL9Nin;acb;4d8rRdJB{u**wWO9;mW0i>Z#V4k>GQdScL>W_Y0ftQ-v(yxm9*b!%Eg|!o+1?9C4?fr+i}Yl zmyQav()gBf3+X+Mygk-%qcBX=SJWqT@P3nywU{``z}sDUaIQ5b{J?T{Zp^l@ZOxXl z>=Rtt=5}nI7v^o<(Hab!O*xxhFn=Ms;Zx@G@Z{RbVc{LZh4U9o+XW|lx?6d?Tlvmz z<Np2EAe)-5^Y#sMbwvPKGTSqo%;qsvOwOHl2 zpGotW>~GQ>7bIKv>XFIT@qlFO_^4#-$P-uyB@gI8i&c&XnKTdRV3X#!Fxk3Sha_9a zMakCj&}8eFS*-FTFSc0axWuGrdQ6s@G{@d#>oHlDY#k3vwvNk_ts|Sv+)w|1xWy_D z_Xv~b0X^EJIUbp8-K)nWTgRi4t>a^pts|T0JQNT2Xp0rcj>ni3O~+$Rn&WZF*1bAD z**cz(Y#mQbwvOxr^ibUAlPp&L4e>eIq-eVIaVE`iMY46TPD!?orzTs+(~_-Y*j7 zc)m$gELM3y&$3wM_-vEr0X@g0IbNG=-K*=8 zt>bf(t>g2Otz+F{MRGhv&$n3R_yUun>CzXPG{-f`*1dXBvUR*Z**d;B**Xqdtnz?v zuvq2z5|g6o;l9+QIj&8%?$wRS*72rf>v(grb!=Fy$XL(YmszZGe7Q-n(j3<% zThIAdBwNQ@lda<`lda>B#VQZzRTirpUu{w}aU}UQCe3kuvURUsn`|9lmuwwhpKKk6 zEmrvHKEJ_YmE#*tO3t|SO(xB8L$Ybxox2Gii<+lPxhp`u=3=czd#S z{6MmGY+9`HfIeuk%JD-c%>(+dNpswkY~8DmBwNRiCR@jkC0oZaixsi;-;Z0Ya{Poz zU6U_AY0?}wCtLsKQ_0rxj%4fj>169TZn4S(y3=Bn<7Z6jntb_LljgW3+4?u1OSX=m zPqvO7ArCq$2VWJSmk(^Ny%83e#xXc-kogu2HP(uTgR^?TgR^^TgOR@RUXjS zELJ&w-K1#Z@cA1i&2ek8b+5jeY#qOqY#qOyY#p~*tjI(6`8yV?9KUN)LUif(Oq%2N zWb0miKiN9|AlW+pFxfgzS*-Gaeq^!A@y9031NwgK#xVcVnUhxGOJ^c2FYqZFSdea+$RCj;)O(4 zsUBY6wyoCcVHmVmBD(P#6lYc%Dn6m{M#Y&4jfzibyoux&>*@&$hU!Mx zyF~KGeLicNCqE$74M#ZbvMH9rpl%Mu)$4;{U$DQQ`-FOWSUwH=$txztxqDA@a{D`` z)&B+D{gqj$lw2`9QgM#qX60}I;cANsj)w+?M}d`!gN zwqiwUG2>b)%qz@GK83fJSZd2DyrWdk8s(gCE0ssv6y6g9nq}KxgWZ+#xuE3O-mmvX zDJR5e#_mdxn$EFh?E9m%JUvS4!|kQOBG%B5Z7g9&@{aNXzBb(^>yE-9PwIq?MI9eheu)Uxw@~r)4`)m{js7 z*j*{xyK}q~Dcdc0CIe5XWOpUf*8Chli?m!GoK$1j&qJJ$R#xWtIi!W5N+rhm^YVFp zj$c5kojxOKm52dS(wp#$NGUO`d8&NxLfX@tk z!8cvG$Swq(zuy8?1WI3nhd4=@Q;;I2X)9HIC53S2_ zJId?Z((lV>-CIjY6FkI8KCAQ{e^}zIYD=f2tmbzZ4IbhI7JB1|HxeW6VQ^c zy)rz+7@w)nx&u=9Q=)OCGRN^}C|fwy8tqf~IXF?$uO5CFra?{>LavP5!|qCu2=wv# z1!c}J!C9UlLOoJN`jwP%R4oN`52$KZq8z|qM`;b3<#j5;x;KRs%6(BfTjYn`l|rJW zm?8ZQNCT_fQC|HPq&SAGkl0-b7Ok1Ajtp}x0<8!dw)f-rV7j>B)gOfVLVocO<0v(+ zNexKLz93Mf5G`7jVHPqR%bfi> zasF<_E#-oiOj}^jf;`-RNIK60Cft9Tavtu#qR;gV|5?azRMnRIcMOQjjPO4o9fnH8 zU61BFii~jkknfg|tNRp>8WyJ9qNpP(H}QQBQ*KzxILw{YCbf!IX%)hrhV^2<`#j&J zqcQn=8QM+0l?oSJ$5u92;Hn<>aU4`dY7pO~yn3KOB=>bxHB_4ROSTkI#s$}q+RUx- zL~?;)u~w*$s@6Tyl?My*yAcjBYz<9vX+!x@jukl`R@oyYL1mtQh3$bR<%_JW1Rmt5 zT~PA*U`O^M>Ny}`p-`FOc!)`D7g%|a3vN`dRtNhgx!^j6Y#Y~g%nY;2Y*wxk(Bi0E z@IqOV+fr(5m^4(0P=;&;aa#heR!7({>B?jkh0KOYM>{!IH^Op9N|;c&*gH<@O*=z8 zYS>X{mNMrELmG;HtH6(TG_MHgNW)?(vZIBH5%rm)V+_?5p+CXy4&fx-^wk4Rj*b(m zQdzYM#|y`~le*cQ;phaz#&~1AIR&05^hQ*%?l-iKkMJZz8VUF6WJ7h^nv+N$C)}}W z)%FdWcW|^q$ooHbIG!TBr?+or!{+TAohqDS3*hjW!adDw%h)z$TNd7*t(duOv!tgB zwZ+P^Dx4wIvE!LS)kuChS{ZSM8=%3ngsRQ-ra3xWNIvlpoQ)ivBh0sZhl;SJM@`!n z_j3&?1bjzup0FM$B=hQgSGJY{!3BoojAzb;$(H5~=|v!>8beTj!{b3Jc0Yd^SOp90 z_T|hdfESyz-^Ac0CLNSm(kBRctc{8vTqUFsD1G6jCha#dc$rCgwX#c}2;vA;kqWC# zxlp-a^^9zv1kPKq;PO>#w$B5fY*J3v84KtsZcBEU?d6Wjjtu3ensT9MhG>FUfOxgw zfmLf(flte&YLG%L+2R>^WkQZ|SGh7OI55J? z%?pKHA`Vhr2DwQt;x-C&TcfdS2V%Qh#MMYw7Ye&aq+T_3vKiVo$L1LAa~l~1-9*}`Q&)PdOU9hEIy+UJN0cQtj_&>z0MjrO?%vE46XwB0{qv|SL< z@{0Dkjf(RD5sBo;0PS8~%pHh726XhKC2)&~6xLBJ3nw z8c{>@I_3S888#ZT4DzX0hqqDn>Ig%7*N*Ddqa)G; zsa}-~Im3AiN{QWfZPbAGn27!5vZTjG9OOy|9v3mVJH8uF=*APfvA-Kn>c*41@p0X_ zq8m@?##6iTv~Da5vnv10ojx58^ij>uFwCWA8cKw#hLzL$%=Az0tZDo3e{4#hw#GVr zcg{3N>e0EYOcQFYobcRfCSk@#6P_n&shIG5NeB88UNFrOH7L3Zr_+%>2QQkYMp^&B zzJB~PAJxo`bu^uhG96qzt^c^p(s9YO0oNGoBRv7+0k_R4$R86D>@M6r*&hk8?Wrf zt0K~a)-1=>5!cdQ(bivMNC!}^QhK@}t;8&kbsnxgBckp*xNW%pOhX@-6sy^QA^E`6 zOaEy3S%&5E0B>|#+X&A#oS>L0I@zDoiG}*LhFOU2I>SWSb2~7jVE@Gl&(KmysB)td zNbAE3k#NkLf%L<8D4F3dV6{2wbA4RaKsC2&W1HOQBwKu0%^$YAIgSrkOQlIV%u=pp zdKD>;h6@Y8Vt+}rWep9ouv8isuPGJ}0Gaj@ZN4@uJqpZfwFl&`&9Xy4T#0VEYR;m6 zahr&JWB(3y=@jvA@kQo1q8YAPZVPfuZ~9x}sBxD%`AZ}6!aa?sOILrU@wcT|Mb<2XWCRA^%%$aIiSZ?r`? zJk54!N3PX~3x$;lo96S`j>DC{;R3NbC)z4OT+1qsvlc0yt>no2L@l4si^`SN+~2{A z4uzSj8IEqPkhkWF@cBYVRffVW-C9RtW%ziI1g2`1{U@xLz&yIe{|VDQ3AmIaEw^#$ ze}a5WZl?!TXUwUQ-5In~)#bZ@FfYNd4&*#35Av2)y;Fcw60F$!%B#&`PD!vlI$9nb z86LoFcPVG6xhp(KPbIU~iXsksJjjKBh8)MY;Snfv*BATSn;A!Y3bCfstAqK5ItnF} z_lih9$?e^iX7w!W19A${0V+2doCY9$7&+Rbu&>akUv;MJ2hyogcc}sH4>B&v=wRri zUjVAjuMSg(X+|Vf&(x&{n633>r2Hti^+d8tXi~aM1dQ~+i1cEF2Z2O{=-R)7+o%LC z1T9LONd<0HG^yGfOYtJGA&DZ*xEu5&WGcbTaimG_YLFHQwB)M`MP&eIX;JF@&C(*7 zGF7Qz<~$AtY{81eK|B_*?>KIh>U-eZsa>FTgz} zNj;!rP0EwyycCWDHLfy8iv*gt?(+!|IUiIFPmD;bIz=@44H0?&`J{yMiv|j$B3UIQ zMUQ(hU#QVK-3p|QMwv1!sxdzWspk#<>)}+SKJ*Q8r-8X^h4O=e(!|F5W6f#N|75C6H>rcdJ_>Tdrd<;DM>YG8>&Cq zk@xypyYZ9{vf~xs*rqC81luLFT*BRgtX&smW>4=M|t`1+%j9>Q>oO3*?CND~0VvpCMOf zT5Vus7Q(9}wK!WozgnoibA{^9LySQhTf(wso%Nt)2Jx8SA;was;#Y@;=FQ_JKA=Uz zmseiz%0;cNPzu9f$MVV>WUJ&^)S0LL# zi*#|0eFZ|IrI?Z4w}N~?7ReD%=Q5?D@_n0>Nnmw&c*6*H&45ZAEuZ>z?~v54P1c{h z4HPM!*uGOzmG?Zo4=cRu!L9}0cR$#@;A>tHCE|hAdkvWu^l9Pu3ER`c8-*5)22l_1 z7q+K`Z#T@Rg+CzlGLdrAFrOCwpkY2O{2{}9TKL1l_O$ROVS8HmBf|Ey@JEGH`LyuI z%r>7E9uu~wg+DIztW&H$AtdYgM)*k~O(w%M;pT{OTKH2!s|+@mdxx++E&OR=ds=v0 z*q#=?(~tticLbjiwx@+Z>&j_bc#EOcXhq|5$<}94KM!_H3*QB1?P=jJfra+8@ZBcO zr-i?4(tKL@E5i1)@K=THY2mM%G@lm!hDq~j;jJK!pcTjPO;gUNg}()MObdV8r1`Y) zciookFx&4rrfK2rrkqa;e;@3a7XCplwQ1oWCR;os8b3~`IPn}CS5DKyI}(y;q|+d) z%A=#)-VXi(RG(p*IfyY9PeD0OQGNUhwAc!$f3n5-zwm2NTX6jKIN@GH+o7TU)y#uZ z&E0R1;xZOyGd_PSue7)=$7*Sma&3_Geo4()EPwCPc#CKFgQ2ROIt5|w!BwLhN7wXi z?%OhN-Gb)7k=CcUL2#-yRYx2y-BtgSyDsb$%Hi~m|4&JxkmW}Ycd$4L3!(EzUy74k z5)bwZ{*%7%{#=@4Z_v+!9shefWa+RFP7UXVO6cRg>5m9|aC~YW=CY&|7Kcmt>9zRm z7nbpJMlL%nKPusmeoEo!a9&u+-_f~jc|1xf%mrNseUau_NSba*KeFSxWA5G*(wkhn6j)rKq$@FfN^LuS z$0T(u<(I-$s6|3-YaN?w-5fRMqqh@3X9PMv(H)l#knKjj+7BPkz!#-t=UjGtesnWw z($89?5B2MWTx*e~y&NtNS6NCs(|BU8!gJGswYA>nr2p;GJ1^Hd)ar6-tJAMa%!?#^LOQT`DWp^F%-)Guw&TTWN_6R3 zkjkgCHMuk?{Z|S*Ta(KkqP2urFNx<#`%HV{L$ppOSN-Qww3Az%4lG3ZqWCO8LphS% zlhQ$#R!TtUi6w_B^?##)B1I z^*Pn+)COLW)bo_(UvwNit>gH=4Tg7WcueJdKAzByFdtMxLHt8q1 z7p8;w>GexBwzE#K!kIhOf}8UCurKA1+>6pd{PZ~Ke`hVc{(oqt7OdTVz4(7<{dfB{ z_+MJyhItE?gg2yv__>&T@G*~iRs|bjFkSZ$E%h!_FQ?spy)ODttA`P0#t6knu051yFXXPthx(Qe?>?A|SI~aEExbRxhrhR3JC}>Xhw?*> zSo`_YwI|hqB>ZqX;Byb^UoUzU{_h91-KO?oJh~~ibDe^ZbV59Cw<1aS(R4t3&IorB z^UsA3^1pLr#S67_t#(bzzse8B@}v27?zBgixqyR@=inujdOOTu=Mv`k@?+&!f$@F0 zV?R$4eli^(uTa0zd76K12b=ltXKDBM-Snw$q>iPZtHV>RU6sNexz=g)K=pG<*fsx2 z!cV7z{Ihd>mcATM2mkZ45NqO{xs-)2>Z*R)XMPfXCLK_>Qg8jCwTq{J=US{Y#CnzL zSzELvKTIJm4lg8)dxX8hF1hS;`BBn3EZo2~LG9B%x$N`#Q7WNx!?FM6*B5dvwK=L6 zngP%ZSLYRG!b*6aY5d<~zAxrw{ct10y9h&90EPB{`}HN{2Zba5KU#Mq_jcmp{Q7bX zNvZq4L;MPUx!WgdE$7VawK8pw2fvz>{^y8w9%rAiP-)^D4naAtlw7!+c>*2J%oyY6pw6^8Bx`LXa9>5Lue=(%i z+TC~f@H(N|`G1W?zuS?<)Q+Ujb{fCek;WuVpKYz}9cfI`^x4+>ejcyRexvKPwSIt> zm(as${m_#d|NGU}&zI9XBvbKtCra&1YYWx;x|p9U`KBDDKgx3=#W{U;j#z)3=R}gG z&rYqM9bR72O)bJlQeyHYW=h;#5Ar=H8Dm${45>V72u|LO}NRZoXdWmA8Dp$ z3Fqqoe>z%Xt%r-JqgEOn{_ip0FQQhuV*PKeUq&r270tkDO!v_7z-UI z)r|k;*RM^>+b*@z|J$#7bHDuH1g;u;5U&a~qB4VRhP!S$Y!Hz9z8d$I^b~FUm5@Sqa)HF@C_YzBti6vN~ zNi4DV-g`|kiGTf{-<*4XGk13Gea!v5-F>^?J#+4vGiS=3I~(kUaztc_TZOj@D%dMW zy2JIgqx1nM6JWoMbE{+Z~Nr~XCCd{uSA zW61H}q|m+(kw5KS+H3vz(}Se7^$TBuBt1o5Q z47mApd{tyck)?8A^QyVWe$?J%eN@D+SXO^hZEnS8m8=1tg0I%~L|39L^Hpe{#`}Rn zssGi<8bn#sG55vdr)Ev%^D$QhV0P8pd-}HZQ9ol-jdS)^N&FHZN-gshlk9!K_hG zurg+q^0G$KURHNGWNOj86m`=HtFfT)m7D`7t zb)%-WDNEUWZ)l9CP#^1LtwUK_AM>)-70T)u$|ydNgQoQ;OWC}v^-1OQLb+iiy#Xm% zQZN6PWf?VADD|0~tU@g}E|P`!%Cd|aPwH5S_wli|JH{Y4ft1|mBJUpSug2htOn>(+ ziL*NMzM-^fz2&v6(wAOgIBcFs#ckwe87a3rL}WM4DQ(OgbJu=t=3x_3>Z|1|EJjTv zr5Y%;K*kEVmTYNLw#X_gehf2)n~{p`sh$yhVsqvgOVQVuht#>>Nu+YJjM}2jqF_#z zX+N1%PL@$qn4`(smTi1E$4*ivYkB&9ILE1^8V<*3nH!z!&h@XSScYyIDV5b*${V8w zSS-kzPOBn@RLynFC}df0C?8E`GRK@Ov+9E*uw#ATWN3i{Nk*t&r)b>JIEHoMR z9H<>AtCbDZj%_*@T(8%hLRO9qvUXyQ82jVczIdJ`vjLWNCZ+FeETga4ZU-Ub*@9i@ zh1M@be=uETv1=jAyfA+)b2sLglV$$(Wm2kFS(Z_|x6P0m(@&6`EIY?N3R%XMWf`?6 z&(ZqXIzDL=&j?oiN^*|Mf{dxJvZqid>uZH9>wo2CeVvxb$udiPgOr|6S(Z_AS!;8$ z%o6hoSypSyvW(h`IokCjjrICyEzI7euqGqDCT-L{)GH^;a@<#BSsAv^F64xp@*jb{rE^b|ZPmXpdlh_bZ*71&tT!9uA9 z;d6Zz>vafarEDzgQ17c)Q&cDGutFAmwamt{7BGI*$vV7{W$`Ppv8*GgefV5o;cU?3 z!)(Ekq_ivo3t6~^HAFr*iuKVx*HsF$WwqM~{h~Y`UC6Tf2)1=K!!adUT1SHCo3LXG zS=O7&&kZdUD$Fod$vTdascy~I@yrpn!KgdCGD0Y5i_fdqe=RCx1vV$^TT!j8mbJK$ zWzi(B*AnK4E7z#qau;FojI+_yB$bYu;?-CukXj_GB+io(o+N)Lf%q!YiKOgWLfnQ} zjwg}Q6^fX>(=}9B>tpF;Qk`z8KXS6ZO$yg*Uv!7EpEE96i*X96Ns^P!*63rrBH%j( z)z-uub7yqK5#UtHf~IZF$s$qNSk`w*nbx^kpVJ}=R<-_F*{a_oHKovfn2@MR!)5Ga z>HDN6i$&1A)lT6If#ZRrQ3^c@}NLl(}ln}3v>(n!IhaSSV-+r-B${g9MO0jJ~g z*j{Ilvi1=x<#5EU`Di+$AqwlGCvN24EUfoTU`xz#pN0{{qy~lHvlF~LxSv&^nJj%i~ zk@gZBsPjo_pFN!6?C1`h3rMN&F+8(uk>by5aONgIz>QZuXLLY`v1vDd@$d zP}UYvY`oB|Sif=!DOdt};Cc^^*b>$TH^E?5oTD>3O1q$a5*XXAy$6{ zzwaqERDJ&nQlVd{txm}8g(5hHKDOkf~-9QTO zw7C&YjbMmjI5Zmmj+FIHCi^mkSAVwF)m()mYac?GN?NGan##3Ltg%qMlxI+rjV38^z zkGGQ2x28zsnk0nS*Y|q$-P=gP(uk?JcdK2PnEDeb{g&2kjns(hopLz0lvF6=@Jhew z-0h?gnbX6lJ4mSnjrJDvjk=SRY(rWc;PGFmX?F>=oSYNpUvX#3Y*`DtwcA#XUEF>q z%Kf>JwVbTFMk}>LL6)hz3u*0VM;4U9RT1Kpn98n6gT z9XZ}dN~7LxLg8~gjJm(g`s~`%$X{)Kppa#3`Kqqz^>@m$5)OV7+O!7~S=JK(8>ojO zS!LVDt-`~JthmJuvL2zVR8m|!9!+EgHXgA))&{xo_wc#Cie)|SWf>XI2E?+S@MAtm ztCRJl$guIl-wkFlGo@qnm>q^$MB1>bWY;RVn*K$jCS~QWHQ7nNC9+fw^segPzfJAqny4O&n4s7B-XW#ZV>VFldJ1J7f1b*E zFOrqALDu^`$GV=v2Zbz~f6TKV7L@fS^LIaeM7`=-tB*-7sA;V}DJYAk`PS+moI$Gd ziGLQdETZIn;$PGY?F)|Md@F=DX-jhn_is`U@CY^~jBLCrsm`d`TsLn`X_XKl8ot6aBny*AYC|10z|Hea_tFLG>? zysFpeeo@F$+k?%mgmdjPMj@vN;wA4S*D}Oz00QIVqwNj#2Ue-YR zS9*qV`#31kE3k1NU}fqRKG#>VtS=>c1vZv7n3USHvxq04C;Rmq=s&DNN-YRh$(UM| zRBj%?_8VD^RO|diU*k)Q=3=o+e0A$9356UxWuC0u>-cJh!Zn$)USCTn&2fm> zB+l{c38m-wb;&nA$8RK*tqRl?g0?bnE-B3Y;aULB4hOE3S-$f~sa4?{t<+u#rIygE zO~I;rCls_s9nra3ok@@lNE2#=TuHZnH)^S-eG>|@^sv2^5bx&~RI5jWwX|O?Wh=Y( zXO37UYHK?&R~XMA9Y9K@4`%J}EiI*`0~0Fl_XT?$M9TVlh>03Y0(EdgVWr>D7V40M zvY4dLHmW?7)Lhq)V*{D@9pOgF<8aw^0;?jB4kM-i+gb*U)50~d1+^671=8UORo-L6 zY=1;Tt z`_Zs{L%#m4TFR~@Elwz0ztZwkDXPbkgu<9@xYIVKO%Zu)Ce&hI|MhVysS^@PV}!AW zotRK4BkM<_#hvKElSqZ@?x7ypb@!7iC@n>!zD-JXz?H)w%j)APq*`;FDAypy`!9co zl*&SH+hYC{{|fJ)8d13J7_J%OKfSA5_VkS?d`qttEb-5);|-rqOQ>VzbG2+d()nIO z;jUS|9v)NQPpB}%636HtBotZ&tsgOUIw`f6{Is-;(s3XPSo$F;eW%=0GwO_lihJ&u zqwDbCnH3avwOlMEsy&^v5-LB(_oIZGB6Se6Hs}TPm)#)!?qu%Aq);zL$YFICKG+7st($xvykX>EQazAxv%JUqqX1FLz{n-6j_96K?{r+N7PW-PS z*HA~xq5X-WmZ7_ZRJ+ugk?yFX&Z6E9lycDi)}^FkS)*ka*7e-VLTS2;6ztXTpB^Wx zZ}ia7w)~VaskvS+^e4v3)zRVd96aZWgu+#D-2XpX*wDIPNlM1ca-csOzf!%fiYVO$ z2{i=uH%`ATD0s|*Vh%k1Twh;XP-APU>k109IXa`$PiFfYiMZ=Y$=2qwvw`|*0=XL^ zN_}T{u|k@Dm!;xDCez_9HH{w~@jQRyedil&L>O6lxlxeQR1u z3hUddtZ{pZ!qwKC&F&zjR~GX6-$_cZu~>^(*6l7*q4h5l`0vl8P;YeH*h<|^3bIDD z0{)$QNa-w19{UR^_4+*ZS5hH%w32@-D79AW=lagQ1!Y&H^4xvQvGwzy>HRenzNgwg zP)nH}f3KzNoE}W5u#yJ77)uXTQbyqU;e^6_S_5Lwek4Qn@gA$~IKCx6Q;<-wQEOQ} zmQeU+xdp{Lk0+GM!egACNGQzmq5UYQCkra>50?r2_f$cpd6dbg3kp5n*g|FMnHIg` z&-+Q-Ksh~IP@BpspX&5nLG_nfHlq@IKFP74j9PZ`v&->UUMMJ?>4`syU%wd1LcAX< zhmEKL_Y$eG-V+eNCWeoTS1*&oTu!G*YHc}Wl|@8pj(AMds|AIT7bGFa)|mNPLFMdg#QWWO1(M|ZMu@yy90OL#PK*MZ}|?pYb*Du zz1OFsuDv#D1t}pt?48_mUy-Fp?o)ej#SUBTVDIFf`$>*n+rGb872}fnG(cowPl@U% zj_B@k(dTx}V(td)hkj+r7E$=2J3NcY5R>O5hSxzh{)G5r>p{In{fF3kRWj8I! zioRaF#F)9K+pG%;YYpX>U%H@%NP9iRP3nTeU0SkNQOCxTZ@BiJr&y*wO%-+&LbdupDtWr}I$+)UG(&oP*cGro&FsRem2DSy>zAKycsBv!5K&Fw2S&05rIS@XTDy3swpyI+T1@v75Gewm{K_n7HuzdFYQ z#B;hjL+1|cXvheM#^lJTgiJi zDZMrvmv$(jb0R8~jJ^ug&q={TRligA3sS-MY6s|P>6fJNZq@IU{i;M&-BI#uQfBF( zv%Mo%h)J0x%x>|u@^eY)`U{<_ut(GWJW{d8m~R+$0jVVt^>w7Kv8)mK#Dx)++CKE8 zE+Pf3tLo6jq)v1Ia;e=t8Z~PPFRg~RYK|NqDfMJn`C=ULgi!5Z%Jvq zhXgyqIbK^(b~btKuOo%oZ5)dWSy(%)ekMQCOiHC8H+U*69jtZ(DcGPPo?u$VmiQeh zm6f;Gjihi_1IAtE^PM6W*22pA-;+{Vd8^(;3M)-;=vrUAnxtQp$3KwLxAM0CV?vdq zlL@<-6mpDLKF2GSZXu=L3)ZsVt?85xZp~1^_Lk#qq?UMVq3>rl3-oNE5dTkC570)(oEP zN5pzv3y+o_6$*6*k63S>m-QHBX-tdTwcrzvlTzuZ9cGJQi6;t5TVp5psA7+k!Sc7J zn=a9--AA4$DJ#?-vwz6(DN>qa%m(UdQt3YPq5jLSvy+0XHi@NH8{@e8EUDJsW2Y)1 zkI#|Pw zlp;6N>ormX{dgKM+H#YTY2~eNwoRvPA4}J(4(1d_W4auy4~6xzcZ>%6IO=5*63lky2|deUwn4 zK5EOSzjpm`hJr=Q{lZU3p+8ggyQlvkWqE}WSg^!DNvWnJ5sDC9CenlPk2jOv% zei4t|bQFPm8aw@w8{xM}h}9OTj%sHh)?b=k*{vcq(GFX++0jks;+?FdX|x=sSU1YD zD7UcCFZP_}NWosvUt?goc65&@^8|Yi_Ua*&o}LUizIsUql^a?C()Gmx~FtV5@ zuW?xFD>>>ew}?iqzgVN(iquQL9Y1Q14O~A`A(CTuy_{ozQj3dHjz__!*8o!bX?}KP zB~o?%HIUTM;tU7)7>78gbq=`>B30-2E0aR$;R@jp|EOhY+JA`@d=)(dtkOq26-V;H zq+p?{5?Vzl?L*a3t46ZQ;}?9((rTnuq+e+(G(4h)kivJXW>;1(Q6NM73ONoXWl;{K z9-%%CBNfXq&a`ikian;Y@FJszld@=HL>x^uK$4F9j^CoMO!g<*o zOge8eiWEkb zAvYiu??8*b<8UbpOJhmtJKDZX5hC8_VH_##X~#XC;L+nrsjS7`=k3vQoRCoEC}z}# z31v~N9KSY7D6MaZWpT{eIH5F(A%@|VrA-nFvfAWs(zcSUi3wGXVJ2%+QWnMHNN3b$ zr1Twa*%lUa21ae3P$7z;BrQ!!sB#Q5YKs;MK5OyEsL2VXR#oo~r9CB~Op0 zck63iaBgZsAxHfzF2`vJRgPko+w$TLZ)bc^h3^YwLv4D5kxup(e_0lTfPHaXx|_M{3)IYB(I}9dX+w zl-41{u(%wzPbiII8pA@raEF9KOqwcv>T>+rv7oG%ufCc_fH{<9Jz&U6shvnQWCVeI zD91?+vjedJY3G8<_wvnPyHJ+CqaKYuer$|4=5?N3Ut z!fY+O!D2>J4-<9(DSZbl$TD>xDZK{~vz^vzhj#lQQYs59NR8;0G!|}(qtVfl(y>{-@-_zO>#x)qE;S8SuuZk z&%Zd8+QW0&Wxs5s_%;6jZbVIU`}nJ~pu%fVr+G@tA089;?x#9ixBorLGBW0j`aY?; zR^bPvkUum+4<+q?olZ(ymYJgWw|qoGSz7ubDSgNKYGn;OipTVkXAY`J^mp%qpXoeT}(3aAtUq(u0Vg1gwQr0*o$t;$RVJ;_?whEXpM9%}j6{J*FXcg3>mAaBtc{~m& z`U|f3_En@*R?G(KYEmd0n=gbU9G0#jrSG(oV1G+0l@+dkICm|nR$0b5cO9u%RxyuB z&$*sdS(fKW-9YNUa)#wYX9Mu<-;q*TF&n5GNvSVme2jYU59auLQl=N^f+TelDSQgg znj-CcuR@xBQ&ty|3bK^6c!T%GUh$kq>K;;7%2D(c z|Iu^$3n|kJw2?;rl~hia>Gd~KIax;COUh)0+R;NwT0g#zR4hx$K;2IYvT%J!clJ`r zmg57YOjdj)$*2c~Qk%r%Z5vhSH=TQkvXsrw%s(uY&S}-jdW5oU{tLBrikwM2%l{~; zx?SHNBc+<=cYS|cDAl{}%Hk80W#b(nk<$OQXQf=Ik53Dw zHmH;J3}usiXGtJ}{NvQ(1ukyWDrzGdlo%2K_cjM!im1uvhsA zCGyHT5xvUB{kyU1PWkF)I*-DafBj~9zQ)w&Bw zZB9yav6T_}pJ9^{%FY4L(7xS+Taaox93RPUmUf(OqTJ+yYP!4S?wuL#L>}=kJ5Hf2 z=ySiXORk)FrS@jqTK8j3f5|u`LDsnEDg}DN!i+iFxob2IkycdoZVDuyZcLo z=;Le08q9H9Qfm9M)ePH?RM1&p#pk#^DU_c@lST4c%TaaPft1F#{L0iFNtwOWuKH+t z%_&jPWiPQ;oA=rfCw3yGr8r5-TwmeQ($1vfYlWEG#T=QXT}Wa6%Z|zJT!}d&405}Y zg6%__eL~5?RnUuk=nQ4@AZeLO=9l2PZAsKCZci`P$$UN0HL~ z+|BNI4mlo8N^{g%Z!Il-L^&NpO7B|<`RTsu`rTtm;eXT(Xsq#|;e7&;XJLtQiGQgi zxmI4HEJDSyrU-g`iPBk&P-_vb+l2aNiLyGY^Z0r<)G(nIl_>koAf2ZSYgfLNQ05W( z%P*$=Vp6aG4&%&oP>xGT>G!sF+Z8cq4_VQq^R~`46RPYJo!+i;tvsRZET>7d*WBUP zCni)}hx8f@G&zZs>X6s#WK#GgivGSP>K!Pkla{_sO5X{+>A1Ij3Mp-^&{kPF+B~*% z-yx-E9eecVmZAGDDZHh7orGt@PAgG}Cb`z(w+Ut6w&%g}Vz9fm3+fr6_IB5GLH$pt z4tIT*R6|x3+|UIDz2s_57u0-D-M9?YVE6kjs6}4ZO%WzMxS3S`^QB_> z4tGnI((@1ByERLN&()u9E2t^bmRF}gQC8?jwbDyTIf>BeVf^i+!nnph3(t3uS{mML zd37f#{V4DGcachM6bpQil#{;pJ>tFN-P7)Lxw~|4_Y%Q}B1+2~p3|6D3OZ zvREE+d@`Y4kzZ?==|>7nB42u{L>#Jy$L-{{P3g6QlbzJd0UeRW<`w?8aVGu(VP!ME~ymDRHRC`+Y!eVnCChCP2ms=Lf2 zRHc8Anjkt=rMA$S@d$by^EjfmZ?z}XICp?U&kHjiAs%-m)EuE^w@}>@3OUY}tFdc) z%UX`hB@}j)Y^AyYq>-ySLnBVh_DDLja!!B-GmS?V0Xqc|1&d`j%EosPVG4dyM=Y%H+&kNP|$0flubDTjL1;)gqteIWE17qNGOyLb|vUux~4NS zp-eCJ37ikoni&c;ckhxHj>=FdM?FWAwN{40XC0-;G`d7#c0U(a*Dg^gp^Mx>vZE>d zFnG?G5~Z?QwO^-1$&R@qYcGjSYl~$=X|G$N+N5Wk^NICJl$N&nSSX?OOB7bX;F^eX zf!d%%IT;1+D*gbAnMF}TV-sq)UttOV$4W~};|i*uM3`V7`_!JtC$eCB%TN6QM7cz{ntl4hjB+IDOJSgIkCr4pr$62&4|nw-v~X0 zX%VHhU;DhcHX8Z>(@9N~ndn`lN1LN&kaF((mDJ3Lg8pUCF@N1Mq0m~*^O3~74BBnw zDb&_Da;sIsX6Y^M8d0+UR0XwL zL}6U}RXI0!Nq>Lc&18K!rkZVXc0cjQpC#^ZX^`7JrbHO@nkFsZbcw+$liDMp+M65s zH7>hIjsr;TS*E0ae6-X=J+OXB(^nG8Nsc?ZU7NefwY)HIb}pw{7t47yTqlpXQm2z5qnR+ZGyQj^4EaE16gPOs6=h+4i&N!eUgteNF_87bJ) zR!`VU1*0w}^`SeXQm-pWeOjE^5*d|iDJ(Ei?n+X29Wm^pIgQj+q!ttsRL*zZ58M%? zt|s-8wEOW9@2z|dsl&x{K!sm_H;<6}6-a5R^p=*cSE2s`=6Efs;D5L;2uJ93Tt{kA z@fmue`i;qG3{`aIt z6x!RhoY-Yi*V>HQ>fdw zlTv%(mru78NqU&DJ4oRgne`!{ecYzqNvd7m#~I|x@h(!@Dyj^#u;ut?Qn<#7`3Uss zw018r$UR6(-@+MU7b@f(YR5yQFdvGXf;R^0VN&?@zF8I2BcwFPL%CvWdnwZe(sM&8 zJxWSTTO*;`B;@#53kBU%>TyzYeK{T>Worm?l3O05f@mGaZ7-5SOqeLO;+Udu1+TUA5~)rh zI;D+-|7esBrTwy}^mj1lyK|!TMX|5GLRmOFyBjOj>(vs4zTWtZ_OE$LOK_;@J3vaL z)xTb+tk|k*(|%Hpx|Z(^Qo66)DEX}$+!bCf$2Uo7*|bTUwo*&Xd5aXRF|kzIBh9Gp zZBk~-ZGF8i*X?&m!AEiA{Oes(s@F6rC0u`i_E;5;nBd%dq#80NLWyrAWA5$cv72y~ z@B0x2PsR0#NnTRy(I1e~6PhP0WqvHV408L5)y{Bp{o5asQeVY6^ojD)?|wvTN9prU zqB@QWn;L&k&n+ zlRq6PPqYl(zer(qj_uQ-BNSbMfY$ckq;x$w)}>&4Qa;B|N#VZX5#sgh`VuI6;r~df z5{SzqWJEbao*UFF3>)?q``EFcT>DroK540qgNwUm{Vk4rns+xJaQDfzzy$`mc2ax0 zJLR}rWK0svVmI0eGV7$NqlUt7#%k(TNez|Wxkdct5^4g^U~ee{OWjG`2IN`louzz^&3l?gEl;YPBj#~1lcT8*sW?Z; z)1Qk`E08M7I#RAq9BGj2ODf0;HZg3)3He+f;juIb3U0I>IV$)~n*2q#zd~FOha%2tFt!edkO;U$6 z!?8rH75mO8Qt>%17H>o(v{<-SmNLD}zebZ%Uq#6vuUDjv53z9V5~a+GLQD}$ggL)4 zB?{WimHK~YB5R!twN$7#WYitnj&-xtQcz866P#O*)FdgFy9+Bp+86S_rS(ZomV11v zs0|7VS5{#QJ!=KF6(NsyP__1c~>ly|#&|NSfJrn$L9GN(yI*xg@0R@|5H)hbQo`BPrFz z^w%5>n^U3!Q!dAyN>s2#xg2+{q~dbir9_1s%jLK$Dfs=w#A2rXZlo5=NUo|JcaNx` zds>cr##CiFekG<7tsq;=@vD_oT#jGMQ%O0_C53&{;#eQY`+1}$$-JG$B#d?RmDy{r z45dUI@AoDZ=cv)E!$i4#NQE3Bs~qq5CDm7Ycvu-S!F}ScFJ76j`K00;HG0i8$n8fe z&QYURcW3?k{Yjyfj^)MnI)D^fX_eP%uLCnwtGx~)RnD;-?++#wa%{ENA*3KnZPse9 zLrYXR$8x+sj8r+ta=c$aN+ZKy>A9REo?VU;hbNRW8YM!^IU=EgtT^5uSxLol;;0I$ z94C$@W#gfo_Q#O2c%P$=C1qzHQ&zVZlCn?j8Q-#WTtX?6+Uxj)%G>Lkl~io6MHN)p zUf&}1xw}q!Iw8kc`^BWbkgL6jtGRPr5>e_gF=h5@l0r{?k=xH%B*C+#6G%aiPu&Bq zyX(>H-c(;T>ck9H)cs(+!GLGDyiAxF&(q@~kHVI=jTdroFySCqd#&3L5qJyJoIDG0t4Ezv>k0^YM@TCB{ZB}J>PO!Ii5ob{hYBrKVRA<+y6X6sU_eWmVQABqkz{3#l zGA{Uf(WBBH)&zsxWu%&Nb@>+Y>G^KI=KLm}=aafTLn$%8xnI+;D@c`dEZgf!QXxm5 ztJ|l!pNVo;kqWXlmrSeudDyYHY&DG`jhk_dGUaTp{KV~S+ zEiT8KD{?HC<1H1k)V5}?TQjm+%kj1h)mn~ATXM{m;~gccsvPeuQB~!5S0xpfK@PHDC^jr$uZlcYOh3>M!HbC35{P?$3d zYklskpyF9_=k6!vBz{4!A2rWvo+Ym)no{!o0I5_j+~Z~GK~jBWHDfVe^3TslQSPA@ z%A$BoJxmHSm^d(hjGo*o(G1cfl@xjcmL9F3`j%#p9wUVocBn&ZrN?1W%z2!Y&A(3e zF$r;eu4U++B&D@*v5&e%jU@FHsr#fY!?nr#+~3{({`GyNp3YFp-!HVKXGoQE)c9r8 zv!p_fc=dqn^7DW}?zw{cROTH}Tc`NPw1s(|vdTG@E%5@Wa*o=Iu|B|yq~7qB%G>Lu z4At7Ey_}&6%SUb6D-~4PUawYAarO_Y`nbx7wt%X55hXDQUORovjFImJ7q(j0NU!qU5>G)K)(d*q=$zL%j^ zksiQeKXNcx?_PK*O{-c6g;&4UZ(m%_ToMBG;f0ZdIMWgNzi&^?NDUF!-Nxx#Q*y1yHio{Lp z!F);z_F59jiY@V!Sa+Tw1FH)ZtQ7epnL;UL9LRo~1N59LHigVQUB6F?qTpv=Fqsl7x zhE^c8*xf7ZP_$=kk0z`yDa4{USDdA#exx+VzA~4yg3Rn{zD5m5C@?EJo%0EnScw!y zy?w+FCq%lLtbwFj&oTVg%bsI;4ylk;F2~giYKhpYwIofip#|lH8QF4{Mm0!|^~W{t zisIF!2DuR}l(Lr!dkv{INX0qY`fbBTlCm6C*41)f^3?{pHAw|o*gszn!$xJO*)l5C z!>F}LE#mm)ET^k;LIfBcQIC^*#@*PwFBc;Y9l#ZI7R#{EcYn_CW&*gZ= zwKvuGPXV6U;H5KS=OgI*J!;}&^bo|1STQ{(fL$hxC>C+#(%l8SpU8&**Jxwr?jQ9_|V z-m3k^2^G#UZecd5q^3tL%tTUZtJqqh$G2&Yg0)Ka+AK$jwWO~c_4qcgpzicB*ou2n z1y#N-x86fwVSyPYZP0wuM^Y z9u&QVidLL$M=Gp1`%tKR{faZ2`PrUSSaB98v&0Uh%nm`Tu$o~NGS74%`Z`^Ggfq!wcjtIRG0WsCCM(Wr0^-)#Q52$0}2YZ zM?Q!TizMEo4M8t(ng6$3qGVzb>Knnj)i* zxf16v>x+9{kPajbL2I3v+ee~T zIL9MO6zm?3Kpk14EJvILtZq3TRZu6056Zl=^v~=#QvUx!=HZc!E>TKgei%ofjw$7+ zw#QXZv?L+NV@s6k1wu74y%rXfme5eS%U#PGE0Kfkk1J72WYs+Sjd}#?_)?AwWp3_Z zxmJ+s_01Bc+QSbqrxUbaR8VTKV`K%-IqrRbFEm!*o4w90DB0Cj?x%_GfF2?5SUNAF za0d_WM%L%)lB=cjNiC5*nP&TI4tnJQt86V@Kx&wbHTt*#vcf<|Oc5~NX zd(a$5iVs=3h?LAP$f1v#=VXK2#iX#iMnl#(ERmes<^F+q*M&<+K_`rUy|blF)vo3QIh;XXtAU6FnL&T3(2iR($B^l;#J zL2G&t^OXJa<`INOMF1@#T+OjkFs93kwSee z=NM}3pGYA;{8}y!y-U#UnsaU`DU{Gu?=kqTmg%w&RfrR}lhV>giR+#7bL2cM-9bw8 zYDn9U{PZyDPEt!8?m&un+D03#=`K=3#8ZzF>L_{E{al9`E$z z%6>lvwN;Oh<2?n1=w)#nF%13{ew+F)l%@A0ugq2`-cRSRqz1_@gGUvN$qG=9?*M;v|cBW0c!yfFC0{iIOZZE~mg+EV-V7-ed?2S}lP z>EpFuQ(9yFeH+96PD-`G<6?gnQ{~yxgQT#Y2{Ch#L=v?`(CZ;m{p3^Je?CHXph=_2 z!=yq!xEEUQinSacA%(gf4*cd2@ltmGZan_?yX^)XYG?^mO@H?|<%l9~`B@#ns z`LpXScg&S{_k4ns&gv2Q2%|^XWN`E6D|Etq)km~DO z>TVJzEE3dnl~AX+YvoAw>P@OmT7y+2nnL?|@~VgUkfr54g&CJRst;v_5_;4Kz_PJ%~`gtmpV_sH&Pgzu} zk~JX85xYtba1Y6$zhfV?Ux`#x=E%;KJwd)F#~J>*Pm_8L6bkv_cQ&eJ4H63DdH6)N ztd&WfB=<8{dEu9+m+lzb%WL0DdP5yiX%8mVQ}h}wy#Q!GOJ3nu^cKsE%X;d%)vOc9COwcy_Cal zidAjLdO|68g6#ZXRnyiN3i-+Jgg2|>>IPmG&mrhV}+_}(}JIjqb!Y>(BC3v zpvHSD#KJr^fwG!Xb9FbnHmRY5<-aD>^=U&-X`5C}Z6uVnY1P!mNsgm@Ut&~}<0c8! zUHTm3TJ)MoD(D=}!?fSjQ`)B4nYB`zQI?g^%f3Y`w`rS`(qHhzoDW*GvVTn?WhL~e z{LY%z_E17wkkU2{EfHn|RI+J5*;BB6ovbOO>ST3BIbzjEyR`rFU`ETPn+>-=l>KzLPmQ=sB`Yaiw6qnG@0D9^D|tc?SEHL6EWrQ~f% z*(dfKw*cD-rP0J%8l&)RX?x15qjvBVtXfCyNLimbjlzhGIND|1siiqWY1>gp?Ie`i zzK+^C$e1=1>Zty^38mWCQD3Gk8!5dcZ3te+ z^EtbdvR`cdj_k^d*YO_4dyukOK9dD`mi8otoiBBNUzLT|mcHUClw+N&uX+l#woca9 znB$_Nv~PE}7gh~dk-kpqMPE~U`e=e!)=$PwmcAjBTD4BrT%qR5;pCgz4?|>1WzA!b zJ$x?xB$hlVJigJxGIV>9np~9jN$w&U#*k1k5H<8oveMCBV?IQ8l8e( z^QFhvkfXlGx1X1VnpOUt<+A7O?Cse`2-t!?HaY3)FrDDlB+n_-7gRvmSyQ06(+vJRsx(`5?v z3#Gk4D7|J}M;$H{?oZUdA*?%DW-`!f$9sSt!5rOLvzN7Ep;P$)za z9eq^EI!-7=5+@_IYFWoKN7x?yk`-kR5)m%G*7QwMdR{%myKt^2%VU@?TqIN|$0}Lh z5=ym)tR8aM&gikM#mrGH^rCpGUNeu|+9jk=+Na3zA z`HKEbBay*SOr;hqwNfvU950mwM zp|l(!D<<&T(hn#rXrr%A7ELXkE>!Tsn2f0(3Z*e8Ch$6@&R~wIPBC?+P}+)iO6-o0 zIDVZ)S-6VSF1^sb^8&LO2|70&Y1XzuCfLTOK-PS!7k z($=a@)-Rc(S}0g7j)lJ>70yi0Gmc-sW{!2Tej`-s6Ron&WsZ=gTIpk~*Lf0iu%mLg zwqf>;pU;<=)2&PD0_KS8?&)FjE|jqq<~MrE%zveNS1vTo{hR#C@rBnS(i{& zs#9BZ_2E*XLOWC@!!?S_gevzZf(I=&wcO>*G3acsf~+fqO3Sg8x{|Wgs%RmDc9!K; zq(1evIrx2Cx34CJePqll)Yn4YzJ`?b^Q^ZWN6g;}rFE!I*0n-u3F)sYiz%u&zG zdQ12(*z0;yX?^S|cQ9GHL8!PKV|z_8$o-Cb)ycY%Ihu{M2I0S9l=XX3T6%FT486yj zgwiNiC+iPFX@8P}MXv3cq)QmU7Y z&C!?p%udn$nUuDFdFpOb8dLJrJ)~5;jq}lu4j%m%QtD-S>aV0AYpG~FKw5bmy``Ki z{Vk$Ump+x)k6CNXgNL5Ny%7bUMH%2a-wdIH7v2|9sF`cX$`AdepIMPl++R>?`K991 zIav=-7S6H5t(2wyPD*!)$?NrC(Z>vaX=filKeSBOhaQ&NffZ}@vL2ycnnM`D<2MK_ zJz7xKN`{%MPB~{wk0rA5)Z?VgqdSWpa4hQyQYsz4J)m(oo(X)ClzDWHdWw|Zp^%sL zG%3w-tn>t${)lJqo*|_<=BZ~%sjSbWPiWc)t3FqvI%Ir|d1xGnO_rW7QA=fy4$P$E zh<~N-g%Tydf++n}(>}<0krZ0VDp@a)vJ%S4dYP1J+DFduc7K*}3B6LHI^2Zl96z*E zbgz=q9AjA_y1zzhuJlo=WW7!b;+M+3R>59jkFz&QRCihH*hzbZ9N#3R_R7n8imEt6rK}gy)AVcD^Z8=taC5kk)9~#8Sz)0-erz@J!-J`8eDUWuOqxiO8o^M)7Q6t zXaOy~FBE>;8oyPkM>iSq+c%8*fU@eS4}~g^VREuQYLSIsTugKPxJ6cu`b4PmxE8aY zoyB3=|ARSNE)&IKb|yysQz&hx>ZpIU$m-_~<=EC_{hJhYK@Sr%vRb>l8RR}Ch3J4@ zVY^V)7c=ZXr0n}WoevE8)4+0v;F^(vi|C78QXs@ zRPc!^SzidHwWm&&EY&QMQv1uDE*A0I>?7Ak3bu#!k7U#dwr>|oEm0?{LnuTWS9nxj zRyXDdS^LY;M{G7v$`psCmb)l zDD^q?jj=K}?swT&dkdvC2EKq*NO8Z*sO1Nt6k!GZwIF-H{M={IQi;r+a_HL5(Ngag zh}HD|8e>-=wUu0b*wNR`1;UlD!}KMkt9Q|>KU@y{ z#B@vjTc|CI6_oh>FiQhSsb4#hfK^F20<{t;+=He5f@?rHLO*(-r&LZgH7JsWz84N% z``i|-O<&nl>iN~wmm*nO1A0m2(}Nq`xWOd~@n zjyNZ1gL8yToU^5kN#PS{gL6!6zll(x9IIqa6iT(PleH;xL@uy6?1gW{<+vFs*asGe zz3>g#&(h{Xsjt?_nk1A)i8@(ZFh`X&Pqb>6-qwU3z{Bq|N=?ehw%r&ywzI-jz}iWHmG(z&f*!3#2! z-n|u<+J#vvm32`IHQtxK$}>w`ObX|OtH6*mvKSp2bx8{~CPQ6H3Oz^s!DsC-S(lL- zAr@7uB5ys6y1Yce?yy=)T|o+;LmKo?sVhnK6l$ndWC8ecf_=lN-;s)aA*F64rLq=Ef83aciE_U$Q9A0-o&&yR>86CzUwGYE z{4A#aK+4Vw7PES5vi?X4t4D@QZ+&gKPhbuIdbmOE<`M;FBUyiIoME?+Lh0)6%h>Z6 z|Ao@NwM5~QAwFi8soP4F-eaMj7|Z%oiBd1cD)q9gr3p3K=cryE^twHvOiEeS9W7K& z`#TE?-q(XJ6fYqQt-Cd&Wt`a*3%kiFwf;H7v zv&1jrdszNLYO1udyNLd1nK44a>RL;GC52I*mbT>=^!ghqt&7@cgZ25yf*ejFuIw{KyeQ)y*quwB8 z?*uw{&YPsrwu})epe#n&H{T+KSwQ@*J9eSLy~gnf>}^sFS%(%!rXI~U6Xo6^rEgiA zM!>&#H=;nO#^IIH??n{ef$puNkoQTM--k9KSmFaxYDtx2cGdix`;e68WmZpe<#dep zNZ_N`i$`m>zSq;Wky7b8Cx`XJ)7=(wCfcWI7Ycb{Po-({S^nPU4pL};@H-##irnJe z4Z1PMye!RUIZ}C9N_8idmo?d+R1Z>lSxWUBsx2Po+lG7nmF|@PhDv`_?``N+$TAjd zmX*W3^F1YIV`jX!P_ex%qL%LkU!D|N%{H+&_AI~w+gs{Wwy#7gC(EdTL(x~!do!05Wux;#ozZHU zK_bigG?P6ITY!)EKv>!PL|3xDB(j1(fX>MpOzl&xR4;8sRw1S3pUP5dRZ@9b1Emil zvw)=XvXmMklwSGG$uhrRowAfI>t)nXq14k_Wp%0&@;FQ=%uwOCA8{oFBfhXRjA0F* z<7D|4tDdx$VIL&4xuJhJ+*A4;uvZ+S%*|kmQm}H()I~wZpUQNNWE}9QhH@^A{n%%My+4eM_4SC21?TgBFpL{$W)e6 zV;S%DI$wSdmvN-@9H+_HaF+DF_7NWoB{ZJe=VfVWPau_-rPPL`^0Fp-^*17wm!;Ik z38kz)E)hAJ<0hnHOKBNFj#3jn^`iVAOG#yI>ZyrB)ydk7Ip$>{SLZe-m6xT|BvN@< z8ZoyZm6xT|WR^DkJ{>oCrQ~5sAP`HY+lwhQh8bW-RY!M zhg6nQGfH~R^Lv}kWY5F2pGjHzt36pxrQb_sDK(2!Ue;v)<=Le2 zvXt7IR9=>r_BN#QvXt6Zd;&3PRlkFhwkeQ`LvzEox1;B@a)H`@s7Cu%CYH5>=vBo9 zSvyAkoU&H2tT`g9wV#t}zmwNq`#IIJb{1LY^UxzEgI>GP64sZ)Xu;|xY=yL|$U-uC z;ZE?qmSxOy4DlbdV@mNxMSxPPRaaHA(rN!f+;~0HYGM-a7zG#Og zONQ05zUlQ+tCY!D)*_+eyf6ogI)x+n>bJZsoL^v#3)Es#W^rRwmU`h5Qo&xvL6%ZY z-#%iLX=iBjWbqDwCls=*jRdP)Or1!p*2y}lkYzC^FY9EX)TVW^zRhzCY^z?U2&HFR zC+js||eW8L4s$~6uvW(5i zIz6iwa#syhvma8H&QjnytL4C-zwOR1}Uyhpp5m!(#{#>+w(Y73moQtG$99qLNfwO$rlp*mUD$vJlO*X-)_ zx}IKGC+mixXovy7;w%B#DZWKyC&+DaD{k=a&SS2q@shdc(&LM|6t3QxZE2H-w z&)=)8KhhF;S^C|Zy)0;M^|35Vsau3nOVr7_m3k?g>ZP)76H4nvovc4mmerx0UQ312 zx?LyhcFIyVuh$*EZX@Q@$-2|a!hKnFdfnyy3s$X@^=FZ#mI8_Tm^;V2S-11Dw6yOj z&JmKdZkJ^#^%wd?I)kh;&00c#^|FFb#IuHz6_Llk6*)q0NRJOtn&Z8s^#4?rzIz`j zwE=XuBgnd+lqwOkfqEc1N0VXCpfvs6%L?b1%2Mh>k-OoWrM6o*$%~etJFX}=4HWGhsz%5=3goGIDNHF))OMD)mKwlPtsTOvb40H z@_K389(*;(QtD~n4&fJT?7Eg--O?*uT0YJ_Q^-Q}O4)E1$g@Km()Yoh>UFZ7D`e%^ zAnSQ)(?*M|{=@rV-z2RaO zvXpw2l$J_(w3ZHix7SE%X#`5g$XbrCvp$B;^_9xf@4n$>h58uSc)b0ljzycU89r~7 z^;V%5e4<~8jb**9W8~83t+L)JWce|2iH&8wtLND4S*zE3@i|t?dS581X{FCw_4=UD ztCfxQ`cSD#Sz1CLQI?cNiB(xjeO#JTu(2pU)6caWKPhCPuZGb{ehl*u=7=+Em8BB@ zNlIm>vbOfWRPwKqf3?ce@BZ7%!i*Wlja7PmDwIaKyk08nKh&$YZ?{vubc`%Fr1;cF z@LxfjcJ~0FQ^S=EZ3-%)j?{6M7ydSyA{-U(Y;#Ma->Gq$m%{! ztyO=HJxJA^W6vT-=k9V_yE7%e;?Q3q>n~@csaHguCfD!sRBuu*%lgk#rC#E|Z!zOA zS<6S%Pu#5H)0FB%>S4EUrK}Yq>Y_?neM#LVp7@aHe`e+!S4^lg{duOA=vPo?d$hRv zYfN$9q(3ROeV!UnQ08BGY9&(YUwLX^L79K$sX?UFzw*@Jf^zN!xzG3v@x*W!K0k7+ z@Z}4_>{vmqO6r3q){pj-6*wBZdb$fx)h=Q_m%u{QS(sImGBMZvPF;A^YO3N`%jba4QSeU2QB2{;eql+9} zOZ`DCu(WnWmFrJTjUn}BbNA+{5&^9C$8lnvh&sE8IFX~)CG});|4LcwMbxF0veqZ{ zken0Z#BYj77i+&kLY?Wpk)g&G)L`*tyIQ96fbovi<4B>WqjQ<9)cArj|55^vv8)NC z)W7o7h6QE*m8Ui$rT&$tHXgR2tV=@gweB1@Ays#d6N?-XbFc#~=E3dYM{ZNTd_kBQ zBtY^bw;5l4(A-J(I@R^s`WRx)<`H$4T#?UHlSsYL+^bU777=xRrL4(;5`FI~ohLtX zQ~2@)PsQiSk6dT*(&85)xgC?OI=ZQ(LOaw-O)Dt#ue_}3q(VE?Dr-hTnSbSF%_J4t zp;lS53JSketZg>xp&nr`i`fySF~^wrn)KGB-f$Xo5Nq@ZyM=EPQ5tiM>Ddg_wxphL z8gp{gb`hm9Cr9mAP*#p+1w4mxoI^^>F;DGOP*#q4YG+bfj(KXAg0gbVQ@fJVa?De^ zv4zogC{KNvRNXo5QRIkr=uGLcVsDmknB#wi)SJz-n=_-`oKVXxeT~$U%}Xn(Z;*OO zeD81Wv{KwLS#t|2l%rmw#N);Wxp}1Q9COrO1r^FMN9|3@$}vanQ&6ECbJV`1tQ>RH ze3p=vV~*O7RNXo5U*wq9ZS1y#z2G$+5K(d6E>j1RD%Wl7;XtEq*FUio(DxJ0i!b$lW#AHTkt$jVcT zT4d$w(6?G-<)~&sSHs^3=CUY0Sw} zr!bmm%*j*VAys#drxrO@&2@B>d;6UGZbaqgI+Qw%RDQ0bUG`gX?t2lHo9j^O`=s)7 z9ZLNmqH=Q`N}WzBKi8q!|1hC6=7hNprOqfQ^RKklV*RyqXOdFe=c%&_%KR%&{fLzM zSDyNDL79K$sh^Ni|H@N8rRS)B<*A>MsyoNCiyW)Q$ZFMdBC2e6^jon$8D98vQu#5m zmi8|qDmO+}>X)SQV`Qa%6;Zh{vQob$h29X_wDK5Pwf{{*rDJ5J&MheOFI%01Scg87 z#;@~8sqORB`2}VEm8UKsmG3iYju#e``Bz@nMWph5CY5zDJtyC1QtA>?b?10#kz-Y# zNv(QWL|I<~o@MUlCEcK9f>clFIj)l)5USa(yPHt|pc5GpY91B$SsO0RjPZHKs+q-#mxT5Z+*{dEOZ)&J6Rygrfz*=deS-B3_fy)>n6q^woksEjPg zckcIHP%7)Df>Jx^-HqYSKb7R%A1DiUsG|Nz>SP&zjq^R))++`#lNwobUEvl|xCV)P zE^*jhgcbpAEhviQAHp+_M*O{xZ%k-a?N!HSW((5d-y!iF)C2D^BQS|zbf-=v^ zw=j1WlzlNz-BnQLIeF@C%2LlsDa>v=cTX3Tw(fr+^&7wEX#QHjUr9}=xnl4)QmC)+ z9P4o)K3Te#)VN~Al%wt=W&LdP8vJjbbALfut6+JQpC2eFi}&SE?Z3YZRle?KpTy4( zQm+|uKcbTniXHJ>?L(w+4^9>Ja6vWPSu*QTMLkkb-K5o=Q%OC}9LKwDE2$?ur3C!h zbT7{|KUv7qXi{E>6y~g+Dk!{DX5v*(PgAeo$h^wPXf7w7(S3%L{^CQJ@rkMD3Ti`% zBp4ay)AI#2UUI9ZUJ%MkTifKEv=^zD+QNJh&%qKekPrY1F{iGacN@jWLm4dR; z&Qq@zlts)iuEo9>o&J!OB&75V^VI7F<>WU$(GKNve8W>p>|IH{S;z|3idPPph2LV1 zup#oxQE!t%G#OJd6Zj4(M3d7hsCP*{FLN|=BpMBkeBbnXub`}i?EUid`vqksRQ}Zd z`+%~lz00|e3#uX7VAdz!6aA#1Om?37M?qQJk*EGeSytM)nTLOOL20k!Q&OjkO|7SZ zSRc>K|A*B2LY?V9RVJqXOR6l(dVG5B|07kFRi-{86+9kZhW+u56+x=~{}q(YGnsYE z&z~1mANdwmxKyM@#rvhV+m?xHUnZ(!nW%2dL@l>WRQF|~dMp#wbD5}K%S82FCaPbC z3K85DssA!j12WVS6T#<|mWdjep}uHRNbzFOGEpm&(z`p#k0$d=r0kve8Rvn&!3}#C zv#`2{ue}qVS0M#L=WD~K_G(p9_KrQr-&&0n-qm<$TzDQrYJjxw`U^MVQ+u^KDG(rY zX(*}m)A(D%Na5X)A}yC11*Lm=jS(AS*Gt^(VF$i7JWItis1XH)*GNO8uYqHT{#!h* z(TM*=84ZzEZHTvB_+(^>3h(0;S{zMlHtbdF^9a5*s)m|PYONM3xBKD-EffVrFUFF> zTI-#}`mp98H>Np8uIE`AM{1V4RE`~8LyleD<;}~RKQYLSCj}W*J;Mp4aDQIjZ=BnZ z6k5--m`C}=Mx@Zs4%RMH8m3Yuf76K4-h%3< zYfJ5$n?;oNPtYre<)RPV=J7xB)!Du;H{0hHw478>IKyxV?*GFx(iRQ>BoDejUD(kw z_SMM+)fy%3+jyQ*Q1N@=^_|79=yiH(lDji}lzBDPQ|Sk4xnR|4q;&5^)c+CUgU8BW zs6*39nLMrA_Mbk_AcgDMYIj&3w&zD~X7MugWy3nYei92bZAr>jz=U5#YA3Z-K{+?y zog)W&Xd`6AHbaEqPt&Z1y~1xA&y?%0%lS3?7~SJf)9i-5+Fp8mb9@gUyBw8eZB5E( z-M1fS8`3tU7JFH9WPGE)e1befUwng9`Tg>LbC-#lw@lPt%S7$HOww?NjW7Hih+%l`RT zQVT^&TBi+NNDAku=Q-9saaUq~Jy0ucTsc`$3jUeeLutmHOJbq!zfQ96$8Gjk;LMP*$)zOXn3-yYx+F zN=pWxLJKrkqVZz!2~Fo06nZdI<=syCr45j?q+c|-V4S;v)Dj<+8t$8N-!yhR7#;o6 z{e`5kr=`|gSaYnjgX>e)MWp;&(%aa^Z6~?y;SLZDngw?;Da?b+b6+%P%b)EHTR`p- zQj3N9qB+%{na(D58ssh|wNUKvx%_>zxsTgf?#`Ie+=|p?q;x(}b3|`B-Ua1yQWM3h zXtC^=BYQ|$x`GsTWWb$x(0sb@!v(8eNlJGCZHQOtUp&ur6)D>b@pJjr9o?~Os%7Y| zCZ#(G;TJ0~YlO$pB40zQpXjoa?=zv_G)}BPin4x73VTNA(OdexySP1NHVpfGAYDre z`)qwt{MjyN9+8I!8}RWZ_HV`WLk;xgyP_U$=+|*ZxkEpFq@b!;egDx0u0bu(e<~jz zYoO$MRDP}>Jl?<=HoBmmXy6RhcGc*Ui5M+`KFJrJDpA<0dAR)gzba8KL4|sIhOCpPv;9o?f4xYuGi~W+v&p`4IPf*P_nPFWsZ;z1aUOoHzo*q^AGy~X_Od)brvKSzZ+J?^nE9i?-t?4xr}bGq z;Vq$X^|C&_EmWKuu2W(#&ZLxv>wgoAR%J6ezvZRuMoJ9pAlOzxq3pYpYA-0XR&#u7 zW+SUPQESyvP@V2-p{$>V=Qyr*qbz(f@&DO-6F5JLGXK9O2}y_?0m5lWzBz_WAeqeM zB7~4k$U%aEgd`xyk$f}ron**d%#j0QriG}esEDZOMnyzLM8z8w5j;_G*IQRS5L}Pd zby?9B<;ef@si*6B`UvQ2{r!Lc*MF;LzTI8@?x(7rx~r?JQMysqMjVBns4<6lsu?95 z`-BVd#O7G!wtAd7GqQj>Jf)U7$c*w7b1dUqzJ;gbj$f$`x~q)l0BRdtw9HCl@%#9Oo&9ieKI9FfU48 zlw5+d7bFfl-cyU9#ZQ@cE#`WR&b<>~249N4_iac`Oiy^S>M1vh z5szc=PMVWE#rzny3*mdN1SID9p4yA{1Gg(|>3y_WpZH5=yg%Gw9ekkJr(=wV#Lq-NM92oigf_ng{zVk(8LO~=bV{nDSiicFYLL2!d!%N!K}71PqLEA z+LpW~IX7uY9!T8%@qSWDJq=%6&i_Jca!UO=IS;Z{VT)zB<0+Qn*W>Bi3-ES3b1c8x zdQzbP%B~pZH@YEuFQCITU6r0m_MCow4r{t~^kawALWfMEJOFZS;zUvCwzNe)W z+aBZLFY%R|edA=!@Uoazk3ze4JpS4Gy*291&GgiedBFS-U#I`F`8Iyq-OW(=RK?}A8&ReF*Q*yn6HhTq{V~9h(ZT8ev=C!t!z!@wo zon%dW5jWdY^1d*CC)#+fi_*j#PaS3R8NV8Qlr34`X<8EJvALcSn+XZOo#yI5N6m|< zeW(Xoky?KQAFjmF&mCmuN0dPWj(#Psy{KMUdsT5JL++W$#N)M*OU>Kspr)e_Vh>yrbv zp4#iFRi2Wb(u7oBED=L&ulAI*JCC&Grj(uMqSQav=C^Y_#W3!*b-`-%?N{L}jIO-E zQ!7!Ub1lG?Xj2?&x6oeQ;He7Ah6=V*P>zhWu@I<@5w*_d=_2aFh!R=T%s@`oMG+;k zil`TQYBSv9|MB>mL)KpxdrC(CdO?lLQI~kig>j1Y7xg;K$Iy#B)r-=v7cL%SUDVX2 zo^rA#BQ0>{s#w-#o^rlF8Y^;Ssmnd(Tr8rlh$xn(6_fz=Ia!-L<^1JFUVQ*@u-Q}D z*@f}^!m6kCqR!J>NYPt7#pm*R3nf6Sr~b>9N|K7tMK5K!`Gxmdo2R5L#MXrLpX1eu zYo2-?W~IH#mT+vdlbz;ewFfGBjd@MlTD{Qrhh`-X+v=&$;fc1}&PAK&++>rdws~r| zZ5N+{+`)})F^YN@8;cQ%bY7cwbth3*{FxOQ6p=;tnHrq99p|~*sCOX{5el` zdaA|N)$wo8eV3=$n~RyaH`nbcw;H{~0c&@T4~yyX6t9+jbEDT&C)nE-*mi)F#G#bC z%2UR4g6oXZSV&)e5yjrf-YAWQF!o1O1yqNPo9Q-|cHmshKt$0-;>nHBq>vemD3%N7 zr`l&Mo$esBBcjH@_Ffw|5>uNzwKJv?V_YiJ>1$U+Rd6qT?^0MuU%MlU4!ATXDU3EW zS4Widy-Q&seZ4rM4#8dTFmFW3#O;md9SP;o?D13_gV}g|iKpZ)H$LA2ABNc8>nW+X z-TNJS72qLHiLC5bQN%X!l=~i{n`y~syUx7SQ+tpb&#*b4qakPDETrgbJjIz2`+XU( zKZ&0!Tt4WpemdP-!;xU=+(TnLSM zgQwj6+-JYWc$25(PNo=+GL8#^aP&q`#s135dXuMk^DflM>(Jt$@9H9HZ&uWiW;p7_ zL#;kqBI;&EwHS^o9tv`J)P6DMEsB!WyZMA@bM!<9Z~ZB1EJDYz{^clB#zrpwlcM-V zyUF&6z;b9UnEi@kES_!tgiz9d!MsgT91T6&dtg?&69=^dVO zx{p(alXi=zXd^NXKn`UF^G;7mnvfXG#^bG?;+k%YBcFD6Yl2+Wa|TsUMpU z7EpX5sHqQmilx%gc*;2&>2w78X%iwh@A4GW{9ed78XbM?cXk}`>L)8aQreZ*7l z{$Y?d8B*h1^ifX*2@>PftTP|;6m7y>rem=pTA)52QBp!nI*i>j<`WUcag0h*!3rk5 zrs5p4`%gyH0vp%Ym{(yPn_-H&+fzfhe*s2u8?07kt$T-l%2Uj<>=&;?Odf(g%S2~B z9Z?3ca}M0Q25C&*g>uwq6vf`x?eKpkiJuo3bC04zP2{A={<9fMY#EZczPi^_d`j!S zYVLBbllZxaD*sCNeV&s0lkm2`l_d#-c`BA6vnWGZ@pVs8y7-ObwsCGW=0Qb?TcmVO`-Y;% zvQ9vX9!hjs_|J-xmdSNVwsrC^isBbc512~AXZaz7c!sYi>-!{ui`rk`@)Vzn%ty~q zo{Pw@)9SZ9MH`0kfH81UYvMbeie+2~sd10>yPl#f2_v7q>K54dJQe#ZE9?87qAWfK zSdKZ17hoT2;s=Uaf_!ll#za?OAGctBs3^9*R)9JR`y~{fntxT)2)J|sTwIQQ=%pF+ zqljW1vm}vctV@!(G6DPa+?1BTZUpwTh~DZf2k;rr)|P~fK5r0N;$vs z6vN2UDWw0<1N*h7D4FXIJdN1}Ph%ga)!%rE&qUm|)8>w#i+@k4*gd+$dxDF<^|E4) zGUr2{Yi0f}Lk)RXW9mP0R2Y{JvVNbT=x?Wu;IIEIrD7K!^Az>9&%8X<*UNDn%zr70 zWk3tQ!pJ9!?3p_AhYZz%^7mMCxH%b2$lZ^7O6yB&|Bs%c^bu&CaE{w*+lF-R8S^Jk zaUAZ{#MLu*ptcM(%zvj;sG(d<<@S{LXD>_Sa}I{|=7M|1JdvZ=o8uP;WAm2`#T-fB zhiBWQ|C*!Dg{*Tk)RP&CPje68e`D;Rc`8F)Xl_alBsbx?L2RB@)Mz|SYrqI#gPjQ% zxMwmH+hDu#&zbPS98eVB{b)Cz#lO}>hz5>)vHsyEIW9=6^O40g!FGvk$9S z#2oG^ck3d^S&aWh&I0=*B1+zu3BLh5GNoLa5q-JeohdjrrC568x1p3e%FCiA8N1Xu z_Z36^ia9!^(o?&0*Mi+K5yh*NG#WBw@3?Uh#S~mj9qTE^BQ;A-{8e$H%yFKgrk(Gl z#XZbZ$9sxa^48Lj9qkJ_2ycQaO7ao)7U~V&ePWK17}C^9o?_qEg@CCrZt*=orJ9hx znvrf~6d+5DPpQ#Zw_rM+Xv<2WS?Xl(B7KQ3fFs>=J5x^6-w7G26=mUdC<|K^H8DfA zn6QOduVg403zT+Ppe7YiQ&FmN=EjhXS2{g8rH0v3jn_C<$XUqjtvNHr%aSyse;qYd zQBpRuG#A=Y^`4RvSN}Tdlniw|Qp12P$H+S~%~Q0YJG{!Y!*b4<21V(o9U&b~SCpF< zOFEWys-oOg?&I`&T1s(Nn${K1Tw0uwQXIJ~+E&>B%uK1NsH=;%8!gqCagpPudW*k~Bv!OV+KqN|P; za(;$#SKVHy(=(KF$?b(&peT_L@}V$zCst7`nfTnmV9z6G7Ai{Ip)Bp7R*C=WwTxy0tvYI$gQ3g-TS!0jKJ~rnoioIF3rr3jw>-V*VRP1xgTo+Lx zH)g2|N~yRESRYX>rUlYn_}IR1W`5&8$auj>- zbTu|F^b|{J<}T;2n7Y_g()KE*F7Xs)@uW!Bi#)|1Rhf&IrW7^JRVP@Z=cQfdWzj{B zTI3mHE>9`8`546<*fdv{oyUwkf4p`^)%QQ3y7BS#SzmKF89&s;J-^!w}4t zh+>(;mKn>NA(V0zkF`dWmJ~~CQ`B(ibu<2lLrP556eR>nO|?ff*D)@@AM9oqkVs=NA^A#zlTcNJ@l$_TgWWD$gWj*a*oS`^Bd=&m$cd)Cjc9C!lXN0XfL&it=8nsL>e7 zS%mieBDCt_6n%}NuqujSjVId@=Ph$>hT02#x-C3C*%whP3%ODwpRaIR;&a=}GSpu9 zpHGmv?e)~lBP#Y4{S->3S12m@ihc^zb)I7WUy}Mr{1n=TuT<3D)JNi{K)uRSR8G*= z5}R+GW?!wS*k96q87gLii*Hnv%s(1}9^yH5 z#=I#*am0aRsPQO(F>lUM7eW%>Pmf!*H|HpMk4RH*$x*BE<`QSP#IoL6K+#Q2{ZocI z6}8#r_}5|FpP?p$S&Dxx>uouTOjZ+bR}}TR8v2r77eAPPnV}d%GBO?F$Cz6(l+3@q z5Iu^RdS`}Ws+aT}Q@2KxOUofuJDbBl)3bxXn{;eqw_LRF4_Q7ZG z@szP;8hgiK6(%R^y*Y}E;~aH+M7cc1{3^$edS67jcVRZ!UOdm7xg(p z=lu~SvM9+(bF%J?sFt*>=Mw|o(c&QUfgDAKvxj2pgAv79@buRvJPj1rov;sOsP$mT zNjMyJS40`qopt!%mF^vb^%NAd;C!(Nyt2O0_6Hswlp1u?FiH ztiiq|h%z6GsH~)ray}kWSxJHVL_~=blc9&K z0bvx6j4_{96yF;Uxg)erKI18t5F8t0+g)UaFy7-S+VN`9=)< ztS=~8?wXVA>W?p`l=G+b^Q9N>?2P$RhN5QKBhu!}8H#@9lOGv5aO_tUB`f=J9D{Q_ zgLyzv?tKfE_bz;7znY=8AXl%#{}x4kEkjMgY=A@YKSfbrS5%9Uxh?cp?Baupa!+Bh z)Hf8x@3m!p^Dm0h=_mN?n~IWF=3115YfTGUoX&hJL$Q^)8>w|S z_MuJwZACGavHjvUC+jth$xA}5uk*wILQ1kqG-t{EnER}YQi&T{xw4hkzJefM=9m{v~Kjp^=We~?lVAgE5Z~L=4-lo8V3laX@T&^(%>q`#-B zUqlq|axEM;rbaugS)Zd^k3vS?g!-kTM4KE@(4!c?Qk09$Z5isr#NHy zNJyb1u3i$4A^k^0twK9UB<(`k8dJYdsZb9T9sQ@5C1K`oT+)l}V<}bVp&+Zp+x=Hc z1)D&HJO7|uJQ6zM*eZX+yTQght|-oMk$#7s;qpgC8Kn3MN|VL-k7uv^DWw=c<+Ek} z+sk6UFPl^IXHPNM?5!8gmU%)^Sy`^0`Ad#s{@^(CL<&#MUlp|rVPLM{FP~L9^Q59U zKS%VX=jS}7D1&@IEY(*$_vUF&(Whl|eV*|Y{Xk6=&Eh$rD9Qism-nS+iaU_K%%kGy z31?6_QA->cp@$R5KD&_P!EHZR*1a`KSxBAyFyvo99cj;tPz}zjVQS&X;6bl zDT-rp(#Gd|qrn`lDB6dXexQyir9v9SjQb2FlH7ATC+*lmYH22S92Zg47h7`&5;x<- z$vQrw7`g+Agi-d6Iw7JsFY2a5T6{ceb&xqRqQtVru>8{Iq?DpI`6eq@m%AG?x06IP z%#y>H=SQ;Ks2%g}sc6{-iQ_%B2QJB`UE|rwo(gk1^V9@Sg=A{o?#S%_58Iw~p6xtz4zO<{)P`|RJ&Zt-r zj!#k4Q&`pKeddPbeb_%0k<%1)Ah{JOhO_E!#XRGHHDss+vzg>SrcP7T#H1N(AMC?_ zb22fKH6x;!>Q6ygUd1*A?KD}-gznB%6lT>W%gpEPyt>dvGo~@3xT^Qjn47*NS#Pcn zUdPcaMKS+NS^|EvL(}ePvyr~gS68<;g~8 z__DNLvSZC>WGFs0AtQSi%7qany<@H}#a=MSxScsOqNo8O>sV6T)p1_ z84Z~>z{(so29%q@=|XvqrzEw=Gq-G-UX`I%K$5If75jd*r$qW?NTZ^Q$(Y^m%(Sn(NcX*NW%LI@?l z1s69)6vOWFwJrfJj3~;FH4$2(7kNtjEB=#N@qv1wr^N4~2R@&RW9VW}i7XqW^e6cK z5=C(YjisQ(VW3{*Ddr9tzjS49pe~IlDNQI#YN0?~7Ez(4DqNs0_ms3ZSk7_dbHmX3 zy~0yc=28=q&*D_L$y4+d)BC;2er&DYcT~$}Pf5BLS@IkFRZS^|tUP^f$xzuR5E2co z-bFWimodfJZq$o2ZJrW0c`fMGQMCd}G~r@^WV@&6lB65?jq8Q2o|3X~BFaG-bK{#j zypv{IL^=QK*+8T^B1-(f8Sf5^#Q$bqPR*4OC05ip-!X_=9or*H;^++1jW&^ct|NDL zddj7)-5A%VE@Dk|c}jA}XsmW~z73lTAEkABN@Tk)tQ>|>a+&={`yNlxS1iYw59OOP zA?5TcisdDr;b&V4S9yx-7SYdV+O<_OGw{{Wh`7?lsHg;wxj##yz721M5`}cdTuw5A{>wA*M z?9NbGe~F7%XQ-^dtSIwhPq9Ze4C8-nyENFhF+w`rW#{2vof!1LX@55Vm-PkX;ag;*l72ZYK z@NMeD(f5)!G`Bj)To+NJQLmh8>rdG`_l$XEL@{S@oZwO0hm8BTugXyDXR@bxQxdO@ z_3DWFy}94q0-at*fk`au`iL?ZZQO#kY8`4mJ=XCWMRB}SYK6%lgL!R+ng}h(7Bp|n z>mrJ}*7duSc0)vETLGbzdwoPXS$r2#KO?>|qMR&81zB%U6#a1k{|`A2rTd#Q6xSVl zDgGBJ?v0+3nuFz=+k%U4@)X}3T!d`_wkDg;D_-84J;nJfo074~M!dmt1^zeU*o_6; z?5RCSpBJKZTaEn{`0v17$EMQWl2S+Dt>A^wQ>$Uhx!0zO;IFrOS-fp8!uM|TO02s5 zZX8KzN&A0FDb`G^Ig7XbQ;O}i?b}Kz%67HK+fx@gDlBj5xDnWR|Bfl~S=sR|rIdt* zAvETlsf%SJ%@T@ROMM@Q@?8g|q<%5xw$#P4QELg$yGwl^hxa`PrCf@AZ|dSGt5t@+ zXuCZ(ddGB{CEu5$V#1B7-EmOL-SPg^Us7i{+wA_%oUD;3fwR;Ha#T$8N@SZ49+Yx- zd?@u-dXwErJr>*CH6`y0C&BHT%!jAsb?C0T{Ydi>xOl)Mc56Y-X3K?}q%Pq`n2#d1 z65nk?PdG@i$_bi)=&Br4uCgOe$*6dQ0yOx#u$pWoDfEtu5Do87fF5Epu{CM!+ zPfbbHa8T^iQ}XcP_t?sJ}USHeD& z(f4_ZaW4H#w=Pa-Pu%Y*){bS==RK8|6snK>M%C#l94=(<*r$%8W2DfAJJ(kN+YhQt~+V?4@I;r>BRnR|X zK8E({anS29GdywE>QZVmGF%Jt>UYtmIxZQL3{SY$x}%0EY7xG8Fxrd(h5k%L4Ns|u zA?snY-~76e8lkA`%pc+6@d>|N!_ApPBI-VKv!(FG8SAS$@2`<5)q)T{Z0^KU0IaT< z9FYuH{u-51)Wdz|9`j9pLHeY;U3|z-0Ns%n^7xGZf#pkCK{q-=Oqdf-SACjB|onl>^#0eXpQd|{4 z(pL+fc4X82$tl%@wAX_9?R<)x&m9v|O6DiaZ=RZ%QZo9--y&I+lnN=8>6s}y&O?(@ zN>X82-kzLN46}@{bej+3spllTIUc?^IVGZ;c4QxyzEe|bxoN`_%r(fnGM-6ag}Ghz zUY2}qeX8}fJ9g4f@sx~@wHTQ#%6uL2c1ucehMa7xp)=XS?5L$F73!Y2PwHGeJEcO+ z64!u^T9#4_lWaw@mZy|FFL0!c0EgOYMM`nxF}yLe)H#*zS9;1IU2Vm-85{SZ#4+Za zh~hW7o`-F_*=E@wa8*Q&N=79wOgFxh5zOj{65B50wm_X5QPeosOJOWB9)j7NQjEpx zlAAI9BHR8X9)qby)PD5GuSxcSy8-?3nA(z~t_OK5o-D*vYedn-+mm}zH)Ea*>l*yVR4t*n9Mc?14sIG{jj5{EO)UAr@j;Ie>x5Qm7 zt0$t~lTr+)4r6abIk#>Dqp7PRO7!J^V@>qssP|aEYk&1C>a7Vk`s-sVi~}jfoRClX zE`JOvDx2~hwWELvDc?~$6_ri-j@qTDY|3}kZbfBNzN4;IR5s;1>cxt3Y2KxLN9`$~ zLdtj4OB9t&`HtGFsF3P;6iU}2MP*aIla&-wF6BGwrHaa?d`DfQsBFr2)U}GrrhG^3 zQ&cwPJL+YMa%tY>B1gTvfC?$!QLo5QI^{d+x`@KOOWW(>Xv{Hc^|eVwRP;8mM+Vn@%s}&`yRW1U>8Zema74?Kku(8$mJo9*f%xe@S-v)mSzSAzg zR#9BHkiDF&i?34@!+0I~6j@m}6i~aYtT>FXSJVymyQ2KI==-t4S1>m!iv1?pPBW(k z$h<*OcUgbkU~Vz*GM|a4n+hrV{-Y7~Mn&BMDYu)uZ5Ur2QEyVz-Jotke>5xW&5F7? zrLtkXSy7jvjmZt)@Wd9(TNEYw;;+`%TMMY0bN>3L48?DU^2@I8H{S^kn*9;A)Fi0e zuSwo+Ymc`_WzO3aC9MvrAKC73=Ix3~VBT)q9=Bj0sCOueZ5MIxRz=;SD9U09%yOSC z3TNJ_C~3Xy_iY$Q-Kr?cx;c@$c0Zm(j=B`M-ImA*clqnPTmn)pZ|bt^O<*V`X0pr}#KF%Dt;SOFzD?d{1jj4z1! zc#gU^2|bS#GN162^kV3iv}5Ad<0ln$4}8Oa{>IeZijtNU^9XZen6L0DMTwletWPV7 zdHNpw-;(JyeWrxEMY(v7q8Pec61D-fzdoxd`siN#bBld{ucBNza$QE&=M*Jvy=x#z zyLg|X*fY5c|F>maykAk&fo!_}_<2R$ntTE&EARU+WT=mTlGach#xE+0`jSoi{!5B- z>4AQWWqnyuB8zUav=3?GD~h5lk*9V4fTCQ!mYf}AeN|ESs)!8!If^B!9SwaeLo`sYF_+u!~dMY(*P%^lxNDVb}cYwh6Tw<3zM=QMwh zilJ{u6iY&CpPP=y??hC#)($RyH=-zuse(CNr?2ltRJPU*vc4ZtlqI$HJ;}c0k|=%s zAfnh$%)h|1R5!Nq?qp;&7N>PHd9`X#Ql1NBgblG^MBq>DIr{5YZ*#<l`KJ4r}c|{U$@X+^x&|e~&2UAGhf| zgby#~On9#CF4g6z1L}fO7t! zPm7O7fpWegReU@;=c2)EtE@RRM{y=%){OD`a(;4q8Rw@z@$CVxFXtz>=lfmaOYCzl z;>lv-LhAO1=cpr-Jat5lqAaHmw?8sRQI@;v_G5Dtz7OJK!1?Q_9Q8y2b##t0c>B(| z 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

    _sfpnxI8Hq_iEHOO3 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%0Aak0`{fbe-#4;{8^Yo7Jfi|MAw17e+>|}Y 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

    YYZji33aUOTXw-nndu)_(RC+{~K0uSZW#N7=!K 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

    0A%W<3M~+i|9!D2fFGr6#Gm}?!EB&YNzrnC^&my zW!>dOcH~4Z%M`9Yy5b-vZ!5@horLK4oJ>My)zcQ&*0Dx)VQMd)g1mUD+5QfP-nVO+ft_Xk^?`429vrAD?F_#ZUkXSycriYDC1mL}X&+jE*GTpmrh zqpk_BLlZu4M-$$QCVWrVgiD|a*Fh8RXG0VAK@)DJYr@OXgik;jeQiS%-ijuC-AWUV zYeI~#3A>^RH?q=%526V_v7rgCLlZuaCj4I4goDt8+uP8DOP~qYK@;w$Yr?zHgzwnV zgioLqzD`0blv}K5!lD&+(>3AE=!92oXu`AcDjmd0{{+8cYI?QG(N@@ieEVQ%gNvbl z9iiRY+-($uzrH=%!5Fjy;jPQv<%u{9$@^$~E+frw9%QAOL5><{b|Y!ekjhH2s}53aoap+zLuHhHgB@rEt#i{hN%@v z()AK)&##`TmD*c@J837FdsA?pZ-K6N&Fcl}hAepOeOS3xteo6M*XoMj2gpcyaKToj zFR(MY&_BrOZ)N4KvvSGk8Y+gnr54GSK6qN@!ZY6QdyX6EM{b~^8AxBLXa?b^d)utk zz2f?tvoD^sdAvPD;eC$6n-0f`8|mf7Fx!Tq?kKD{b8z)QvNM^ol5ZJb-Yz5!aL9BSX6-k{%<%N6PQtGT&WV{yvA@8(;mSRc;eAlM2Kkafh%@CLqHW~I~q z?9&on+GvsiYw#&Y!yPog9jftm=nkbu(h^&6AY8-yZ+<`4#A(o*CdWCv9S`9wcuKEm z8dO=Me??pbooTxJ!+(kYR?>vm{a?~_oD~;;FuHsP+(F}E)BJ@W;2chXj{#|!!ng)j z!WH~0e&BFk4SNEQq1U}auggYe*pC-OYtk%ZgXW>uMbQWPP+WWwIh0nXY4DXH_;lfI zIF)4ccJ%j~cym&?I^)UlXA0lOs#EM5PFw>dz5ICTtHAK-3dLp`-nt#Q>TcnubHGVg zlG%AfUIas!my7ax0LQqf0p^)YQ(W<3%)wVMZ#ieWjSD6vGw)KWH@h8N{t1vgA{AdO zt~ItcT;{$|FlNyCz67HrDM1RDk5(*%Z0m{34jdi(pfN z7eNRwzc%oD$Kf_#&kXGXGqle>=^?7P<1TH&%z8L^Y?*%Ur6>3vDI?p{&y#dmzrpeC z0*Nt@sdYQ1))VN2izJP43GUlhef?yv63Y7huCLz}*6+KG_1nh!-C+Ha>+4sa^&6CM z{UWt}XI{U?tluzw{i0dF_jcCr0_*qLRa?KBtY2@|Z>Ej)lNVioef^HIelJS`v#x53si?dyy5LgtxUix5(yFW2HErE zJ{jQ}d(hI?443B!+}ddV!y36iQOsg~xX zEJi};SWm*@BJc2=Nt~5s(8YuJ%C%?JCNjg^hq%!(RmqhxB6Z(lvC*$;!ztK+~CDKn4pOyjW zC(>seUq5j~KPiiTQs1JV>_k7gjee4xyiA;aG8+A44f;v6ML+RCKWRoo;D|)}Nm2BZ zn(_3L%jhTH66q&PRI`b-eo_zpWMD%5Bt~1ew0KnGnlm;1s6AO%T^`1;8z^pn%^^phs&C&Lrz zCxy{Z%&NAgpIk&g5!QHo{UieYKgmirUuig}bxHaSAWOOshtD>8pKsv#O>Wa0aGre6C--!? z_uO#pHO3V(82viotDunb23Vh#XPHxcu<`~ZJS|^&{)aCh2gw_M2#rng1%yH6n*phD zyVpLYUcSO%myXG>Fi5K73ux=z2VcMxi|6MSU%g}`=JGNh_QCg~y%a_%uiZLz=e$B! z=@-;YX_FA&R$UTry-_r!=T>&)DM;0^I&-x+s%B+6Lc4JPl=F0f(pj{baSFK7+Qh0p z6D#xUVXMU(U~6J^5gwKG#IYk2$KlWnWMXv!ujy;NKw0&PRpZ3o07FhY^Qw)k^JUeQ zATNk)v`2Y!wl>sVc;V=rn{k4OpX)9}1V@~BWob#4z1oUf%}AAh*S?O|XpS%H8J?Zw?12;w5ogiu+4*1bcJ>+WK=NiZ&>|qcL*;di zP5YuQC!cgwF%aIuF3zDC2xeDMZ)g^CNF(l}spN{q6(kgd08$2R74h5b3ffQB@UHY5 zJLOdSJ*82bSJh-*WmetR*_>Am*5_5Htmaidc>iVf2U+G-=1GM%ud4ThdDT$nRjXmf zo`LgrPx&#^;{r4CGO4XkD#qagTZ_UqPh3F_aTZA5hUNv6ysX(3z6!-<&Jh`*HKCvUcZH1@W&}W50LN=T#e+ zSDo{J04X&s^NfV^s@+!eD&bz3=T(bf2g`at3;a&UO2vH!*JgV<>DSQsnne6OOD;}FziQG1;6_W6^eY~$6BjKqAe z^{O-M5!1)?FcsWc%_d|a#xRXq%QWhQ_br&64rCx@>KMXpO1xbQ;He&fCGZ%vCxhyX zt7(_$y8^!v~w>YK^Ms58J`aUfWWv=D_c&=>Tr(+<8 zt!1Kk77zY6oLhy+Wh&$m-QRS`Yp1venVNmrTY5)%lhT= zERM=r+p{&=!B}Wj>zE-Qji>q4;EUV_wQd|c()RidXZ@Dz>-T~6%R_3V93+eeklY57 zQ&~(F{|NKM+tBG!l0q*9r~4Ph8k_(PHxlRcC7jb=eKW!u^dM!@3@XV8xLYd~JuHSs zhg3|AOLHHti*tGaJq-)Vh#w*;@-*JOxF7T4`TD##;rhwE*n0nEXa5DT|IF(rz5spy z1?N=W%eeigowIXryqkS^pW^ufP z-v^R+UI3|gCoL%_lqbLe$4_3^PUUe^H}>j++t#e(9Yj5Uhz2W~LN*%Z{m}AS{jm(Oxq71d7g=!2bB*`NmWryBiegET}%?|H4fb4P0MA}~5 zK5c|AK=x^TUqIr0x*yNw1DsrGNdam5v^`B4nlC`kS?hIff-gY!sr5R`Ia^98d=1dm z2PnGGQst75M&)}e)2xu3s@KuUn1^JJpRTO;Bdb4$ERJZj$4TS8P|mKLD(4`Mpmw}q z$MAv`3gmv>5hT9roV;SaNZhx;6B6eL(mc0vuTG5yA&#Kx?BRA~XGhR)y^_iDK8qtL z1&oZMWMgXTui9{20o!y}z-w53Sry5z7TNedFxcmM{6*gF9PMHs@m%KRUR8;i$*=V0 zgsU!#eTfnfvi8HgW^=pVOJ?;Z3AGg7&hSC~p|6iN@qwxIHJ`Q zXR1%Uq{LIWp-yx}c#?2wPQqm*=k+Qmp{Ma%E6pi1ry&Mk$WLfaWyomOBb_;rWVWpT zcAP+(T9{i`dmG^g8${Mh?$?K5s659DmYH;=H%_3IIDtmv1X@FSDjE;id$-j12nwmZ zgtQa(wDJ-hRa2HXWTG;|bQH2wJ#tXpNI{7wNamXdEMMTvR-T}COk5^#ibvwrJYw+# zWrn3&&a(oJ+vZlDpg7lUGWNfCg399ws%M#buE1#^tj8EUL0{lJ<|Ut4NxiXpz>1y8 zZ^CYV6YQ&sS5Otd`($Frd$Hr~tBUne6$hazu0T~hnS`nsjjH$_Rk0wdVznex#hR#! zy-^hxqADIDQSr!TqGBtFitDuS8hYkb9uZAb3`SGzkc6iAE1F_Bn&KWb#k)ypiVx8g z)3Kku(G*)Ip((aOQyhn;xCIBjw9Lgh=&fJLCoB$nBM$n8q*Lu_icQfJ!_X9^;pJQs zn&Kri#joBO;YoOq9=ES4)nKU zhqbeE!7qVfbX2+XlBxWQwL5PU?z}5M{0e8|W$Oo-q_vd`^Su75%}38mWpadFJcp4c zUc)Uonp^N&$Rf^4*|2>JF3K&qCb!_;@V4S^QMPZv@{N6|s~9F)xtdyBckyq*m2lnt zYQuGx@ar1IE%+f_R;dDVa0?c%r6gJstHJ)bY-_`1*3{s2sKMt^gFo3&gZH8a-xD=B zTw6EMf=i$U*Fg*JXG072L9b|Kr3Ifr3w~`w3*L$reBDY5u8I~cZrX%euq#?{BfNBj zlJwHez&*PQ4tWe}L@JV?rR{j>G%dIeT5!K4y>yxud;%}s>mj-3ODV1qayl(rH?7Ewtc1NqXrtE%+E(@T(ts z>9jOimjr3DZ;8BgtLT|OO*6ocymW>A1JHuo;&A@mq8Qoo(nSR9L<_!+mrlAgi$JZh z?WNPS;ASXglPHxj#sioY7My=2U{*S_Z;+ zS_HY}ADAuA=nvLX3DSn!AI)GEn!z5}|95GDbmYxhmPV}lDj_x*>cVDJ{Hv(=q5>D8 zE#hadmb5aC=8n3CJ8Cq!p!ej0a+3>6=vBXFl`0Y4$NU~Sgy!>XGLf2ni!8C*5k5u6|6qI)h4A+jG(tQ7U~q-V+mae}Qc$-C~uljv-y0N~NpqIqCAK zbaivG1S3_tIw>dJel)rVXmn}G57=?iMQa+5=A-jNqic;uH+4ppHE8r^U-x}Rlxz- zmBj5d=wLhW7nolHw)_P#Ose1D3vr=2A`m)sJ0@on$XZ5{wY)?E=qm}Jg1Te81CH@Y z@g3vz0p!%XJj^rC=5(u!q=R}DeMG03Rlj3aozt}pysdh!9b5-O*qNFj9j~omC!CN| zl1#^ID|jC#WSSqQhg%y&P>s3j1U$Z8aqQ#`U6(yR;anxjW0<>XC=AeOG35-%*06$QT{@s zIp_L-bZlBZ4=ss}p_V-KUGmV5%sfja%0pYvJS#Kv>H?u;Dy;&N&$5@dDi zBuL*qV(yV1JASXY#KuDo+VF$)-EI0>QmXmpkJ5L2QDEk&{Oc(_J((YZ_J)sf6=S(RVz$ZKFSnYzu83vQELPU(>uC!II+xRzvIN0WJ711&Dv;~wp2 zsiDJZ8cHXeSW|G)ZLx6ivv?JS{ZtboWN#=1bD$LLBei@V)ie!GEF+!IGMO4e=2aBa zqu$rOUow->Sh|3dI6wW(VMTKMwjL9s{RbN;k;>wa5g~ zyD7}FFenr&;FO)jiS-62mJ3d-K-jqLpb<_;kXA0pyt$f6yGk}{ot{B|tLGxkbLNR; zA~%wWyv&R_1(bDZ@2w6KsE27JT(DL2cbuld;~kBZITdfB9;vwDhDGPJp zE>0{*oLHiI*T+{d2wy>jO={0?irTY=9-3$<*YCYk!`@3g!?=bM%Yfcl6pnRG$O656 z$N0`s>BqB>^JJQw2azTK6@B}{k zXF}WdN;HGIK|@mVz-;s<`tka1&Fg!z?!~hA`nK|7<#N92*_j;RGd~)SmE{7MOF1lF{ zvWz3>BGR}p7w`gnK!eG^Z$LSmUD}&)pqe5tRrID4$_tQ&8C71DYZO9A7f3+kbua88 zQgV-cKl`Tl%MW?J3Jt=NZXC^=Y7P0-ICow-JL$$8xB*JBmw$m+`&+;S*mRL(KTg<8 z?JR=iB&nSTHc~sYS#jxlKTC>0&wm8xQgf<|(40Kb)asI3@1T+dv&n#LK@YvAIs+Ww zMdpGOY2MqzU4MtjwHk_qv{hX}U;FNw$*nM{0{N;oQ0}iV%S|X6M#x(jPidgN7UVWm z4LVGBHM5w*tWuon(IgCBxEq*KQ~X~gn@yjB+RTKUKSq{`a8S6XT@%V{pW@)>-ICF6RSCXFXdsWOryDNSxY zm=mBaU3Vk&6wn?x#J3?3r-VIRDkzXH$cBmxH8W@lld7YTMVVuSeC0msG-jwABY_J>P7Q zy{uoK?vTBjSdqP?=T&@tDg2yilJNJd<7b{jMfmN+;dR@tyFKpp>4CewnO%2#O??if zxw$UeA$wWoP@%aLKSb8A4C_}fNpHJ0hgyxd{S4mrJFr}TV!m94)N4K1tpoA*OpTXU zc81RE&xzf}YQ}gWUS9cU<=Pv~bTLxjr!rC2$ZYo1ga2s?@9qC)3a`fxQg}k_k`&&{ z1Sz}$e(}|VH2#@Mm3Y%3V4Y5gTR-b`!b;K!r|`MoMmM^@Fii=2sgk`*lRPmVXcP`a@NY_ zQvx1SO>)dak{#?fRc9ogh7a)yPnqfX*T=-wr3%!VM540O?b{;SBcA%iuGgm z0t_StHcPb_MxoGNM_Je0ctsQ$q7HnJ-X4Q2X|UsX0bbDW=zzmEx2FeQfM%YZ$UP6| zjx`sT?H+u2=G3}0BYSZI*QN!%gUUb4-Fm0WhTWqHC>31>g_Ree5lqwW+_A=~Oy*|1 zK-yecd)o%{w(USa!S6nE@p*0ZIYf&6DUCl)iTv}nW+vVJhOzp~{Ix8ids0u|{$w|mlnjb>F;YpjaP)Ok4gxKebY4wZz9~;;5evn30RH;< zXc^LWe;oH$tal2C^m$aWtSSt)UzxUy)b-y3O4E3**g#oP5PjimhLU*s4fTGi%61+g zm8uC=h)K3P(_ElKH) zwvp2H*MAGf=_%c7_(Kfv-1F;fwyt_gcLyomTawa^&~y%SMzCE_{9E<7IRYlhJ){mCxymq6|gjd_pgu9^$PuDf!t7yXinKFA6v7re+L9@tcr3nv46JBgX6K;O{fWXrknE*^10&4y7&W6R$7!o@nrq-1HPFkh2qIN^#i_H z3OZ6tB*^F5;+qYpn{&Ap%|LE0CFs$s1I?gcJeq;QH$5w7O*2^TyMuSrqx2K+o5iv&vdm<^Q8BL0X>VJmp$Y>?~?P(;GPRLzdT(|9cgizOmD+x#Q=WJ z{ZqJ<-sC(b=QlxD45Cr?-dibqo%9#y7Ue^Jq4eF-mJGrea$aj`Up?!2-}3`~#(8MB zt?1Pd;^;_-qpN6{KdP9|$#`oN^Y*n;eEvf5Ifvr&9pY$Vh@+L%eRC*@F46RkDd&0e zc#Q9{n7?j%hSU0m@t(V7Ztj*9xLdY?`8y8g?|Qn2F8Dw4|LmWh z6rVdiLrns@1`LNxw;a{(1U-YV=@`r&SdtE*5EQ%q^a(Do@VvhSX604k8&nmRcQ?`n z)9C@(8FVt}cF-GHH`=?UJ0Ydfg=~TLn)nSr-JfU$2aT8L`1)$h2+!HWwHiGh-62fQ zu%dUT!zbbvFQL29?GOa_rzC-_Uk>AVIjncz?S7ip$#?EQq05%hz2xy-Sq>hVVAFZg zkK2NNV*9SFFjV;!xU!Dn%6guJD@$n21$9@J(3+OpS@%`vg?(36 zPC75dl@+QwFYLRrX3=@ECtl};pJnDU&#LnxGo2US@j5STyRxQ`2-p(WdEt~>>8zS7 z%bRI+;sjSl$ee``5}1Umu7Xb6mPGBY1gvIjSKU5+{hV;sdD?oh9O`D~p;_pJt!FKjP$Z6NoRGm!Kc$)buIPIl1QD}^WF}%=bGMGQkss|x;FWAnyap%-dVDW#Iwvf zU;d!8q%bN>4cmM=qqc5lUtMjzvm^pv-C?_Yy6u+ElHB;}D%j=Ixm!9*#8mRQb9XHv|zlUC_T zTFK11l}_4S3u#xIR>mdj+S1QEp4Pq%z6TU-IhkJu&P$VDRj57Pp!Q5BU$c{Z&21~% z(l0t~X{i-$DI@tB5Arq5=+cu3)k>A4ic$0Fd`zc;0_)OPGJur&LQ?97Xv>XDP*t~; zpbFO3EpdKo6O-sGbOe1jX17eDd#cs~Gf7*>1i2s+ly|F7N6;Xe=px)UyB&7B3bW@w zm_0?v*ZfSrrWeh#v+0%E%LMWX4J8>(xzWcem>QTm!J(L9T1>v?2>F^9bQ5IpC`va} zO*(>l(-Aa>j-Y)s!bwgt4J~j+vgi$IUmik6a*5tX@{*3AtaJn=oI7fIxH%Wqi01cE z^iiz#-sXJ_X3r~_J=w_D_>r%Xblg~-?LVJ%bOgE4u`CnjVd!AXXj)7- zk7|SdJr4bQeIhrcXy3ziH{=O)?+@tSdFUPqpa-!n?Puc?G|dzUG|_R`l#ZYJE&}g(Ou=0+1><|Oy1*2i3R7@0;b@~L`=b&Fa>+ZV+wwQDOe~GQ}8HE!I$xvf&*a+E=t4{tiXwicz-Fam-c--b!$XqImURim8 z`m@$TFyBc_jCjqTDi=s*#c28k7f5@xQ|0}>2{&G}KCeil+9yn^i>;Nv*+r@GA+C}b z_ypN5CuBlVJ?kq^$S_4o+W?*Lq?$v1QcTc7sx?N-eM|_P&AGb;y5vzsi}*xyjI-)z ztCYxDsnl!whI1=FkOQ9Bl6Yc6>@X(d^lNDeT+2>AYt>9qk-20ut7ZzbE+dKM$~qIq z+N&qJOm;;bD6d}lolQgF!K}gqvPV%1AF8)vcJj(58atcf2@=2ML_9(3t!SaC(AP?E zCRc$E(imc>r016D-_whDf~Z9P=w(=k_4U+z_sW&_T>xiJNxyo6C6mM87e6`po*x8l6keih$KJ7~@4HnlSQ;G{Dy`>+l1vBU{=!SpN zM6v@Xi0;k|%Wb&9+cLRP9JQrY%C3=x6|z!MD$goM&?jSN_P;lsK{aWT?*WhbcRbN6 zEhqVFXxdr%2A6^}T7_m$XbnpfgWp^_P+bI!5!`EBF)H;7|DRJ+{RhmArBQOqfvR1Dj=+IXWHY=uYp$bOc$? zGi)6?f@aY1Wbgc%$6{`~(+=b|-1aL778z&>LU}W4Nzk*LiCXxYilAEM}RTv zJGB=aL^DCew$i#0Z-MMoYxk{rr&=qmWpLltOW?lM2tM(Z*3}ST&IH(AL2IS82qeUx zAt828KtiOEz+i~TZHQ)Xia#@s;WL4biM6z5p0(4OX`SmTMr)?Dw6}uQG{%Yn^MN~Y z#su8ob<7mc$K(E5&lC??xW6TsDb|7e+uOqZO*m8Rpt!%w;r^b00b}kFv0lN|3An#i znJIR&aDNld6tz95owe5KpD!X=|5Ivx{2;aMDhR^3 zZ-p;lB2u}FO+^UZ;lkS7Bt@NM) zD$%@@K243w^i~mN^QhENW!OwzU^7i6kuLtb11f*=mh6`kByLZ)0M+5uQT4|BfjXom z)9=y)B^|p3afrmZtf#2XAR&a@*BNXDE$ygd^>)-BDGjg4U1lS9>1Sd6%*1!QDFNSE zn;nnWcj}o0JGB{2o5Q$Ai|bN4tIvBsq=(UfwqA&dmN-G0`IytQ%VBgM)tNt^X}Q%D zzZxpD-dDMT7SMEifTr8WzOPi5NDk%DtD*R_gCIrBP`;3TiaMYrA7skqgL2!POs&jI zW{`f+I6$`)0ooB)P$?ALih7Hx_Ogw_6ZA0Pt#V!$NWg)P&k-&U2fAYd4)jZDaE3{1 zUjM@6qHBtYw?lX%?lf*10gIdX|xHh{%xlJ&OiLo_{nZPV2l3C0RW--ZK?ayLTF^dse zYGeHJ!xSym_AEwRT&tMHTwvdRW)_pj&MYQjLVm#y67r(uOF~|>{G<}{qUCqDLC3V7 z#R#!Ww0ud(iOwwd@Dc~SEZ{6Ni@FRiHgfj?05B_l6t z{;nUW`I3Z|K5*>bmef zbm7$K!sTq}!f(-qbLhIT_-4l_PHAFYxCgrMOeL(zqo z+R%kNq6<$(7mn0*;ZNwo`E2OI_sA)vCZ|wN2%F(v)eVJ>B3LYg)^cHd+56GV4Gbtnl3!i zs$JTaUMTli(S=1X6lZHKoUMIqcFk0xYvxz7@!@3SwQa|Yd$yWEes zU(@q@MHOYTm8rLB3>}7R^|!T#4z*GrFNBnyhsVOYyE z6z+f3!QhPt&aWEy zVb~0%X9NvFD`^Ni6%?Z}_=EE(pGYcW4iwlRGMVj-1LzW7Xxzy3<+AZ9+$Co{jVH?M zNIi{bPKj8jxu((Py@PDP722S`(*|wN#hL-KfhhsmV2922$v-?6uyO}f_V$I&;WqPO z5 zMq5Gae66hD99D3jqJhR=!Tzk^0#@*VzJggy7=wii!35Nx6k+$P}X4gzD*?#4cnl!8Hpq z#U4ebNXmu$iH@Lrr0^>1jQpu~$rMw_!)}30agChTXF7fJtI1cBz^(~85gZ^>2oJv@ zjPyh<?WSkx72&#?Wpd}NI?!J9h_GTle<_Vfhp7|#8OUpE~9E@!r@^@9BiwKKX(svti zADpF``zz;XdR_>5XlJg>8QL1k$Osgdzv%DX%Q<=q&d9&?9b|$vk`LNQdEAn9@Jsf> zk1!lZ!eY+U4VH`K1_XxDW^w}Kl!X$sOl}4c#R1P4_eGO@+7^ZHz6Oqfa99Ske`{ilQA33qpr~Le^#B{ zBk1*7Oa^`*1R!z4e&>5xz|{noq?+pd9mdWTLiavAUU%t3{DKmb+ATBrtWxOgK6r*| z@Y~Ri$(J-EOvINy*KILP&IiawUx&Q@MD@01U;^%n`>Qq$QsPFL0-tLW>4JZ765Uk< z_PkK^%aez1$^3f+uGu9hHM?ovJH|Zp8tJ`vrcbcE(?Ihs3^mAubbK}34sFTD|3NbvRLMJast zEih?hCi;#JQ%COt-X?yFr1_>Vy6rgS&fEu?CKD}FCGo6OqA8^=PO&b$PzI9ann26j zGP<8P(K>a4uD7c+KtF{y>OiV9vu{pj0YPyYba5_D6)ZlmQS4HJt2z}^pST=W{ zx~Ebzb050=2JsS|%V}{O()Uv|+?>2;d`QiYCN(da>qFeGuBf*64CLkwVR;M}kZV^# zzmLQZw1c~76hHr?oUqZR3$O`q;K;jA_vmwSR_{nte&to@;Nj?z&cg|^whPRH{H#rJ zkJ6+HOe8}5$re;%m1;tvtnbm7=}D+ZJC9Cuf%Sv|I{*@U7&Gm0BoD&zu+QO(8-b@` z6;$p>)^Z1v&M3NQkCM)dhSYwA)`S>3GGjdsv74glPcsBK!05TcyeS5C%P}xrpi^L0 zlF7NrFNUL3@|OwEV<^l&dP3_Pz=S;v0@XNZi{U8$b7)_QF!BG4%ws6dKVtda|A?p9 z;OgM&=$Z~KGAmh(+_Y}BVq%jSF~lZZJW*PYdC5 z_gGxSAKkygcyKT|n$kh!$%>CZxBTzKu9f?32WT7V*<4Hm~AXXH)o9q13kp%T3Dn)t%&Ghb>R7z&B5 z6JIj(-#^y!6L7Hn3|#b|g8Y3}(PJKo?|29815x<>k8;*UbJ|@Ay1@hoG)ZBiGfZuP=wQ= zw}aoH7=B|MVME0Ij$R-UeuL(^`+S?Wa68|FXXX&Omyi9!!L&E`eXPDv3~E! zd~0jv=%0>PS7|6aChig}T4X_k3;#I88(jXZEodHlJ!~76;7*oWkG8RurX$ybix*1GvF2#zk?Q$=+LeFGm+NIPmk$jf0{x zZOGk?zu}#Vpi%c2dhi>36S+|GE5Wwv#+z#vB!>MYJ|Ck@Wx_4x>(-R^@lkG*a7t_? z3v-Km`%k=+joka1(C#o2f7DvO4Hx+7d~?qO)xV0V4y2R;?Ayh#z>m|%`qq?%GshoC zRD1IKQ=pM;=fsHdcmj(oGel`WGTiNG(Va{)$2Pc)x6yzdp(44`72gz|)hMr}@KH`O zRsWYWKQG#SRqqh*o=|b-lHEN(r^++Bv9gle4M0Wg0JHHA8XI=digSmvJq@`fL;gaB z5Pp`SG(PmC^C65cML3#BEFHQAKPNai#o@;paphOT_ZC7gR&(6>op^bDWPdsOJ8@sg z?_Zd8lU3sn3NEDfpM#&HUphbjb4VezhF4&l#W1ITO!r+Z>|8^5Ap?hp!Pa?eWN%et zPld9V25{DglejQMYJYA7zfIBd=f)N?c(ZoZNY+O1JNVJPFkjvhS;P+Eig>ZiaAweydv z-&*-?b>MHE4xU$OGRnc+lIk;&>`O1^IR81kR{rvjCUu%NRwrpEPER>EwG(Cwr;3~>v2-1XJE5?lFLx*dzCk(1{pmZX#F^5L zGejoZlgOvcVI~r#{DW6GOFnX&N~gXeg*h{%{i3mJC#c%2VdQL)Q^knWH-wX= zDvUkxKBynUniClF=FO9P7X^nYkeFeGYS80&TdaBt+WUxyxCw{Wey3~1?WstT* z=E{+^_V~trAG{s1b@hZE>WHj$iF#Q8ZHs7@1UYGkoySe~cb>4bY=&xg(}hcbs2n@X z_F>*SNV*_j&G;f}iRrWyU;Xa$ig|0L4QkFojm=BgVVI!=S`OHva13I);AMgWoUvov zhtkWS=gJT8(qmHm5~O%}r!L7f(Lrr^XvS$No7orGKW*bUjh_c~)D@roUFUa%78o5WqZsTICSY`|Bid?R&6=Cn{Z z0d&m{HC&l#i32#R!Th*zRv!;+q>SaDWeMJj!_9dZtAuhnfUQnI$_2S~0d|fvow%(W zRe+@g6)pJboPAYOP_W4Ry-`j+%Z8&O+y5(kC45MI-bIgIGNI&7~LZ5V%a{+|CnVh1l+JoTF<%+ue9Kl4yW8jsmMvsP^oVC zB+9Gj`@FYNheJj%$dv552ytYTWAyy z9Ad*F!XXJzkfuhgw7nTT~U6DvIB=bOst4YtZND_LTx$*^(b6=d4tW*=2Bs@6sjS^?CirD zpsABS9Z=h6FXoUfAQSe0%$WIc#XO2&KdyTeA1Q_Np217XgXWUrxu!Yz7(5FDUc@ey z1?3gKMc(1_q20r{yGizF?yT=pPZqug>!-YNe5QE6Ks88~{tENURF`p>a+{rAyEpjq z0L|V&ugfhsMRT5^H%EFKuGHU<%)NwOSw^imcOwH|?&DV-!;-?0m+>olGmCIzf^1#j zR@CwMd+aTqvcD~g>QABeb7&J`!zMREDxVAPf<=|%<2&9YRZSK?+@pRuq;@&tc6`N( zb50EStT=htMHUW_fzv4Z5?|6+HUBobEy9Qsa_=H4J;5!>lW`BpxJP8%0e9t^o8l+S z?r>8oszN*5iVI$t_vk%HqS32p^g8;e1^&Md`OADMnhK{C?*~+rO}Oz)(d|`K3!;mP z0)z2aP zIRP&-GN_9j>c!{uQ=bTWw#lQl|HY;wD&+<0WT}z`Lt%1imWsHjS+$CuYf>rps13(k zR>EhUlTR)BMFFaC!A_1`T6=&Rk76bTY6_^dI_m5KW}O8W!Am@pM3wFE-Hv3@J>JII z*GwwRdWI&Og}l^xNhZBBY+~4lJ=MGg{*pR3|yQ zyay{x=Zf5^;-zvIJznLcTWF@y^ zmz=Sja1S*-MJp|lp;B&8d|bLLeI6ZF@e#iaJo~AEuehe zXx~ND?-CsELjfKl2vU-y{z&7)Yq&npl6F!Ya@`fCP`c-j76 zRMGU^>4YeS8QT`n!A*=1P+F&Wq)KH19U8>Y0b?!rp{o@^Og+x~TnThhK)Fy5!Ww{{|+c-N?w>7?b zvT_LpT1A1@QJ^h2wnI0lPga(CUTXOnS=q%c^0L>)b8z z(8LSsla+^LxCo4zE$|)3UhN?QRTwF%A9%yadB1d=Pr*QKbd3ppx zU+Ss4I8iUB>E|S)>_AVEw=~ zDEg#AKcq%)CA(86MlrKkjG;v;xg=`kGgXg z{2n{zt%1)HoBOly`szy}rqveVdx(edd`ygegB=eVVR~pYL8GY!OP*Re5#&SL<1J3BOApt-Sdduau%6_dI?|t4c@_ei(28m$e$x0pqD<0J{9|in2(L~A-?lY#D5ll zW%HMtyLUgo`;Kg}|`7^cWu@RH9JC6-t%2oOP=Eu0X)?gl+(62+*_?9Ks z=Vzhym7kJN|2zCTZ=dHPzmME!mu7{XUq6gJ34cCM4=fn(#JAW6{W9+Ko4o99O`SjY z+hq0k;rb8x8sO8Fr*Vk=tN*+j;XCK#+RxWsWm{jCS^9T*AEM0U^vAp!P~Uuxxv&>d zg_d<&HHe!;%&;3mS)0q5uMuJLo?wu2j9 zyQs#VV2}E=d%PO(e-b>6GUZT^1qK5qzCIQQF%{cp2l^GP`6 zdFGdbbQQLEuj6IvjW^lY^)_zG`+Q^YA+wX8u0KsL(a%&!gtugpcYl8ORbCk3zoX*B zAj|7L?*{)EEQcOj`FQ0!coBid8Q0<4 zsPe4CvQhyQ=iDkDO9OXSxb>7xL*lXsvx>`dHSY#3Y8S|_Zmsw%;@0j_B{+U<6E!Iw z%Yc636i0qRy%j&MZ5ZFy>0VYJ>RqdXL@W||tJ zNEK0|j%dRp;=_4RoB@2e1pdVi{zZ`*vqJ44b!Hn4I>5b{;#_!eEdtb|Xb``ujxtI^REDE4R9{T}RzUTIqb?k6 zkpWktDnv<$Gbid*y2oC;e(4H|0w{wfQKdut2Fc)(wIx&Ul8qanMDp$oYSo$DrES{EN}jE82?d6(`_0*9eVCDFwn8{>^xkp&!vH15|C zRm7O>VbMG4-JpTZlF1 z&ZRgqwHqB}QDp5K9oP%U!?f;Led6Vzx=w?1w~6q`%e3+qXjv2D$pZU(}E#Uz|vFls550NTEgn-C&5fwm2ggd{XJ$H zE2@SM)!P@(s!cvQjrY{w7gu+zs#vNWi`fFHbVM0Tl@p)?6<4Q!n_UD_@8rN)Q5Et& zc&p+3Hq^&B#sL;5qX+f|I-PK#ZpIZ_S^NyQ_NZ*_42Y)@*FJcf%4wG_fuM7bj#Wkd zF>yK?^bA_~WG86nt|In)J|%F;Ca0M?AFc-z0)BNrqWB-;qoozoIdwwzbS|K(u3B9u z0_5}r>(V2IVF&%nzS5~kb6>=xE25Mu%ENW^aSN}mgD&pt+Z)2j;=))V z7aG`4W$tisYOZ**U+Z`a50B;y?9y($t^G1b*KWhXnU$=nTH)aXb-O#-HxnKn;dYC2 zaBD$4dbOR5~Z7#R6je<9j#LDH}s~8m)+Nn+SRH! z*ftKfpLy;C9*=m}C3Shkw?5?t_hIS_b*``Io-E=B`0)niCZ}NR0*oz=^*;W9IM&C? z-93DQp-yW^A7w#(pa2{mRi}Da?|2m+zrZ!Pj9#lZ;M_~;`3h4orNONERrJ=87;8G{ZBWY{1>x?EZ9 zo7U)jwDIN!`c8+1yKCd`Ca7kzR52AioF)!km#jM`>sp+%t*^-g+2eTlgg@}D{gLEce0Fe>@0ZHrYD+!IkWUaD|Eb?uw)l+f2=((53WxD z9!$f4MVz=AoY#i!2KaGP_|1b?8^EVc!(~NStfn4+myXvMwzA+U8yr;h{Nb3u9cw86 z_ox$p#4L^UxTXF);QS8p=o_5kk!H>|UVZ1mY}V*&XR&O0R+3dkS;g`2lj`Ds>EY#Y z@uY+GKNXiadgAAan>Sz@?#nKyMekg0yv^jB+ + + VersionInfo.cs + @@ -178,12 +181,6 @@ true - - - {197D4314-8A9F-49BA-977D-54ACEFAEB6BA} - BizHawk.Emulation - - "$(SolutionDir)subwcrev.bat" "$(ProjectDir)" diff --git a/BizHawk.pro.sln b/BizHawk.pro.sln new file mode 100644 index 0000000000..a5678a3501 --- /dev/null +++ b/BizHawk.pro.sln @@ -0,0 +1,120 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Emulation", "BizHawk.Emulation\BizHawk.Emulation.csproj", "{197D4314-8A9F-49BA-977D-54ACEFAEB6BA}" + ProjectSection(ProjectDependencies) = postProject + {B014CA7A-DC5F-404C-8614-3378CD02E17D} = {B014CA7A-DC5F-404C-8614-3378CD02E17D} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.Util", "BizHawk.Util\BizHawk.Util.csproj", "{EE135301-08B3-4EFC-A61C-1C53E1C65CB9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BizHawk.MultiClient", "BizHawk.MultiClient\BizHawk.MultiClient.csproj", "{DD448B37-BA3F-4544-9754-5406E8094723}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscoHawk", "DiscoHawk\DiscoHawk.csproj", "{C4366030-6D03-424B-AE53-F4F43BB217C3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmednahawk", "libmednahawk\libmednahawk.vcxproj", "{B014CA7A-DC5F-404C-8614-3378CD02E17D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|Win32 = Debug|Win32 + Release FastBuild|Any CPU = Release FastBuild|Any CPU + Release FastBuild|Mixed Platforms = Release FastBuild|Mixed Platforms + Release FastBuild|Win32 = Release FastBuild|Win32 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Win32.ActiveCfg = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Debug|Win32.Build.0 = Debug|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release FastBuild|Any CPU.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release FastBuild|Any CPU.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release FastBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release FastBuild|Mixed Platforms.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release FastBuild|Win32.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Any CPU.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Win32.ActiveCfg = Release|Any CPU + {197D4314-8A9F-49BA-977D-54ACEFAEB6BA}.Release|Win32.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Win32.ActiveCfg = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Debug|Win32.Build.0 = Debug|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release FastBuild|Any CPU.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release FastBuild|Any CPU.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release FastBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release FastBuild|Mixed Platforms.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release FastBuild|Win32.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Any CPU.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Win32.ActiveCfg = Release|Any CPU + {EE135301-08B3-4EFC-A61C-1C53E1C65CB9}.Release|Win32.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Win32.ActiveCfg = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Debug|Win32.Build.0 = Debug|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release FastBuild|Any CPU.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release FastBuild|Any CPU.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release FastBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release FastBuild|Mixed Platforms.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release FastBuild|Win32.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Any CPU.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Win32.ActiveCfg = Release|Any CPU + {DD448B37-BA3F-4544-9754-5406E8094723}.Release|Win32.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Win32.ActiveCfg = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Debug|Win32.Build.0 = Debug|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release FastBuild|Any CPU.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release FastBuild|Any CPU.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release FastBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release FastBuild|Mixed Platforms.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release FastBuild|Win32.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Any CPU.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Win32.ActiveCfg = Release|Any CPU + {C4366030-6D03-424B-AE53-F4F43BB217C3}.Release|Win32.Build.0 = Release|Any CPU + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Debug|Win32.ActiveCfg = Debug|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Debug|Win32.Build.0 = Debug|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release FastBuild|Any CPU.ActiveCfg = Release FastBuild|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release FastBuild|Mixed Platforms.ActiveCfg = Release FastBuild|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release FastBuild|Mixed Platforms.Build.0 = Release FastBuild|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release FastBuild|Win32.ActiveCfg = Release FastBuild|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release FastBuild|Win32.Build.0 = Release FastBuild|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release|Any CPU.ActiveCfg = Release|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release|Mixed Platforms.Build.0 = Release|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release|Win32.ActiveCfg = Release|Win32 + {B014CA7A-DC5F-404C-8614-3378CD02E17D}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = BizHawk.MultiClient\BizHawk.MultiClient.csproj + EndGlobalSection +EndGlobal diff --git a/DiscoHawk/DiscoHawk.csproj b/DiscoHawk/DiscoHawk.csproj index 602fff2011..d2e4a33b3b 100644 --- a/DiscoHawk/DiscoHawk.csproj +++ b/DiscoHawk/DiscoHawk.csproj @@ -74,6 +74,9 @@ --> + + VersionInfo.cs + Form diff --git a/BizHawk.Emulation/Consoles/PSX/PSX.cs b/attic/PSX.cs similarity index 100% rename from BizHawk.Emulation/Consoles/PSX/PSX.cs rename to attic/PSX.cs diff --git a/libmednahawk/ABOUT-NLS b/libmednahawk/ABOUT-NLS new file mode 100644 index 0000000000..5a22773f9b --- /dev/null +++ b/libmednahawk/ABOUT-NLS @@ -0,0 +1,1282 @@ +1 Notes on the Free Translation Project +*************************************** + +Free software is going international! The Free Translation Project is +a way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work on translations can contact the appropriate team. + +1.1 INSTALL Matters +=================== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU `gettext'. Other packages have their own ways to +internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. Installers may use special +options at configuration time for changing the default behaviour. The +command: + + ./configure --disable-nls + +will _totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl' library +and will decide to use it. If not, you may have to to use the +`--with-libintl-prefix' option to tell `configure' where to look for it. + + Internationalized packages usually have many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +1.2 Using This Package +====================== + +As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. If you happen to have the `LC_ALL' or some other +`LC_xxx' environment variables set, you should unset them before +setting `LANG', otherwise the setting of `LANG' will not have the +desired effect. Here `LL' is an ISO 639 two-letter language code, and +`CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your language by running the +command `locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +1.3 Translating Teams +===================== + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://translationproject.org/', in the "Teams" area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `coordinator@translationproject.org' to +reach the coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. + +1.4 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of June +2010. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca + +--------------------------------------------------+ + a2ps | [] [] | + aegis | | + ant-phone | | + anubis | | + aspell | [] [] | + bash | | + bfd | | + bibshelf | [] | + binutils | | + bison | | + bison-runtime | [] | + bluez-pin | [] [] | + bombono-dvd | | + buzztard | | + cflow | | + clisp | | + coreutils | [] [] | + cpio | | + cppi | | + cpplib | [] | + cryptsetup | | + dfarc | | + dialog | [] [] | + dico | | + diffutils | [] | + dink | | + doodle | | + e2fsprogs | [] | + enscript | [] | + exif | | + fetchmail | [] | + findutils | [] | + flex | [] | + freedink | | + gas | | + gawk | [] [] | + gcal | [] | + gcc | | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] | + gettext-tools | [] [] | + gip | [] | + gjay | | + gliv | [] | + glunarclock | [] [] | + gnubiff | | + gnucash | [] | + gnuedu | | + gnulib | | + gnunet | | + gnunet-gtk | | + gnutls | | + gold | | + gpe-aerial | | + gpe-beam | | + gpe-bluetooth | | + gpe-calendar | | + gpe-clock | [] | + gpe-conf | | + gpe-contacts | | + gpe-edit | | + gpe-filemanager | | + gpe-go | | + gpe-login | | + gpe-ownerinfo | [] | + gpe-package | | + gpe-sketchbook | | + gpe-su | [] | + gpe-taskmanager | [] | + gpe-timesheet | [] | + gpe-today | [] | + gpe-todo | | + gphoto2 | | + gprof | [] | + gpsdrive | | + gramadoir | | + grep | | + grub | [] [] | + gsasl | | + gss | | + gst-plugins-bad | [] | + gst-plugins-base | [] | + gst-plugins-good | [] | + gst-plugins-ugly | [] | + gstreamer | [] [] [] | + gtick | | + gtkam | [] | + gtkorphan | [] | + gtkspell | [] [] [] | + gutenprint | | + hello | [] | + help2man | | + hylafax | | + idutils | | + indent | [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | | + iso_639 | [] [] [] [] | + iso_639_3 | | + jwhois | | + kbd | | + keytouch | [] | + keytouch-editor | | + keytouch-keyboa... | [] | + klavaro | [] | + latrine | | + ld | [] | + leafpad | [] [] | + libc | [] [] | + libexif | () | + libextractor | | + libgnutls | | + libgpewidget | | + libgpg-error | | + libgphoto2 | | + libgphoto2_port | | + libgsasl | | + libiconv | [] | + libidn | | + lifelines | | + liferea | [] [] | + lilypond | | + linkdr | [] | + lordsawar | | + lprng | | + lynx | [] | + m4 | | + mailfromd | | + mailutils | | + make | | + man-db | | + man-db-manpages | | + minicom | | + mkisofs | | + myserver | | + nano | [] [] | + opcodes | | + parted | | + pies | | + popt | | + psmisc | | + pspp | [] | + pwdutils | | + radius | [] | + recode | [] [] | + rosegarden | | + rpm | | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] | + sharutils | [] [] | + shishi | | + skencil | | + solfege | | + solfege-manual | | + soundtracker | | + sp | | + sysstat | | + tar | [] | + texinfo | | + tin | | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] | + vice | | + vmm | | + vorbis-tools | | + wastesedge | | + wdiff | | + wget | [] [] | + wyslij-po | | + xchat | [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] | + +--------------------------------------------------+ + af am an ar as ast az be be@latin bg bn_IN bs ca + 6 0 1 2 3 19 1 10 3 28 3 1 38 + + crh cs da de el en en_GB en_ZA eo es et eu fa + +-------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] | + aegis | [] [] [] | + ant-phone | [] () | + anubis | [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] | + bfd | [] | + bibshelf | [] [] [] | + binutils | [] | + bison | [] [] | + bison-runtime | [] [] [] [] | + bluez-pin | [] [] [] [] [] [] | + bombono-dvd | [] | + buzztard | [] [] [] | + cflow | [] [] | + clisp | [] [] [] [] | + coreutils | [] [] [] [] | + cpio | | + cppi | | + cpplib | [] [] [] | + cryptsetup | [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] [] [] | + dink | [] [] [] | + doodle | [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + exif | () [] [] | + fetchmail | [] [] () [] [] [] | + findutils | [] [] [] | + flex | [] [] | + freedink | [] [] [] | + gas | [] | + gawk | [] [] [] | + gcal | [] | + gcc | [] [] | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] [] [] | + gip | [] [] [] [] | + gjay | [] | + gliv | [] [] [] | + glunarclock | [] [] | + gnubiff | () | + gnucash | [] () () () () | + gnuedu | [] [] | + gnulib | [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gold | [] | + gpe-aerial | [] [] [] [] | + gpe-beam | [] [] [] [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] | + gpe-conf | [] [] [] | + gpe-contacts | [] [] [] | + gpe-edit | [] [] | + gpe-filemanager | [] [] [] | + gpe-go | [] [] [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] [] | + gpe-package | [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] () [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] [] | + grep | [] | + grub | [] [] | + gsasl | [] | + gss | | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] () [] | + gtkam | [] [] () [] [] | + gtkorphan | [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | [] [] [] | + hello | [] [] [] [] | + help2man | [] | + hylafax | [] [] | + idutils | [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | [] () [] [] | + iso_3166 | [] [] [] [] () [] [] [] () | + iso_3166_2 | () | + iso_4217 | [] [] [] () [] [] | + iso_639 | [] [] [] [] () [] [] | + iso_639_3 | [] | + jwhois | [] | + kbd | [] [] [] [] [] | + keytouch | [] [] | + keytouch-editor | [] [] | + keytouch-keyboa... | [] | + klavaro | [] [] [] [] | + latrine | [] () | + ld | [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] () | + libextractor | | + libgnutls | [] | + libgpewidget | [] [] | + libgpg-error | [] [] | + libgphoto2 | [] () | + libgphoto2_port | [] () [] | + libgsasl | | + libiconv | [] [] [] [] [] | + libidn | [] [] [] | + lifelines | [] () | + liferea | [] [] [] [] [] | + lilypond | [] [] [] | + linkdr | [] [] [] | + lordsawar | [] | + lprng | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] | + make | [] [] [] | + man-db | | + man-db-manpages | | + minicom | [] [] [] [] | + mkisofs | | + myserver | | + nano | [] [] [] | + opcodes | [] [] | + parted | [] [] | + pies | | + popt | [] [] [] [] [] | + psmisc | [] [] [] | + pspp | [] | + pwdutils | [] | + radius | [] | + recode | [] [] [] [] [] [] | + rosegarden | () () () | + rpm | [] [] [] | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] [] [] [] | + sed | [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | | + skencil | [] () [] | + solfege | [] [] [] | + solfege-manual | [] [] | + soundtracker | [] [] [] | + sp | [] | + sysstat | [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] | + tin | [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] [] [] [] | + vice | () () | + vmm | [] | + vorbis-tools | [] [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] [] | + wyslij-po | | + xchat | [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] | + +-------------------------------------------------+ + crh cs da de el en en_GB en_ZA eo es et eu fa + 5 64 105 117 18 1 8 0 28 89 18 19 0 + + fi fr ga gl gu he hi hr hu hy id is it ja ka kn + +----------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | [] [] | + ant-phone | [] [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] [] | + bibshelf | [] [] [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] | + bison-runtime | [] [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + bombono-dvd | [] | + buzztard | [] | + cflow | [] [] [] | + clisp | [] | + coreutils | [] [] [] [] [] | + cpio | [] [] [] [] | + cppi | [] [] | + cpplib | [] [] [] | + cryptsetup | [] [] [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] [] [] [] [] [] | + dink | [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] | + freedink | [] [] [] | + gas | [] [] | + gawk | [] [] [] [] () [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] | + gip | [] [] [] [] [] [] | + gjay | [] | + gliv | [] () | + glunarclock | [] [] [] [] | + gnubiff | () [] () | + gnucash | () () () () () [] | + gnuedu | [] [] | + gnulib | [] [] [] [] [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gold | [] [] | + gpe-aerial | [] [] [] | + gpe-beam | [] [] [] [] | + gpe-bluetooth | [] [] [] [] | + gpe-calendar | [] [] | + gpe-clock | [] [] [] [] [] | + gpe-conf | [] [] [] [] | + gpe-contacts | [] [] [] [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] [] [] | + gpe-go | [] [] [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] [] [] [] [] | + gprof | [] [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] [] | + grep | [] [] | + grub | [] [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] | + gtkorphan | [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] | + gutenprint | [] [] [] [] | + hello | [] [] [] | + help2man | [] [] | + hylafax | [] | + idutils | [] [] [] [] [] [] | + indent | [] [] [] [] [] [] [] [] | + iso_15924 | [] () [] [] | + iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | () [] [] [] | + iso_4217 | [] () [] [] [] [] | + iso_639 | [] () [] [] [] [] [] [] [] | + iso_639_3 | () [] [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] [] [] [] [] [] | + keytouch-editor | [] [] [] [] [] | + keytouch-keyboa... | [] [] [] [] [] | + klavaro | [] [] | + latrine | [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] () | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | | + libgnutls | [] [] | + libgpewidget | [] [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] [] | + libidn | [] [] [] [] | + lifelines | () | + liferea | [] [] [] [] | + lilypond | [] [] | + linkdr | [] [] [] [] [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] [] | + m4 | [] [] [] [] [] [] | + mailfromd | | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] [] | + man-db | [] [] | + man-db-manpages | [] | + minicom | [] [] [] [] [] | + mkisofs | [] [] [] [] | + myserver | | + nano | [] [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] [] | + pies | | + popt | [] [] [] [] [] [] [] [] [] | + psmisc | [] [] [] | + pspp | | + pwdutils | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rosegarden | () () () () () | + rpm | [] [] | + rush | | + sarg | [] | + screem | [] [] | + scrollkeeper | [] [] [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] | + shishi | [] | + skencil | [] | + solfege | [] [] [] [] | + solfege-manual | [] [] | + soundtracker | [] [] | + sp | [] () | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + tin | [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux-ng | [] [] [] [] [] [] | + vice | () () () | + vmm | [] | + vorbis-tools | [] | + wastesedge | () () | + wdiff | [] | + wget | [] [] [] [] [] [] [] [] | + wyslij-po | [] [] [] | + xchat | [] [] [] [] [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] | + +----------------------------------------------------+ + fi fr ga gl gu he hi hr hu hy id is it ja ka kn + 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 + + ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne + +-----------------------------------------------+ + a2ps | [] | + aegis | | + ant-phone | | + anubis | [] [] | + aspell | [] | + bash | | + bfd | | + bibshelf | [] [] | + binutils | | + bison | [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + bombono-dvd | | + buzztard | | + cflow | | + clisp | | + coreutils | [] | + cpio | | + cppi | | + cpplib | | + cryptsetup | | + dfarc | [] | + dialog | [] [] [] [] [] | + dico | | + diffutils | [] [] | + dink | | + doodle | | + e2fsprogs | | + enscript | | + exif | [] | + fetchmail | | + findutils | | + flex | | + freedink | [] | + gas | | + gawk | | + gcal | | + gcc | | + gettext-examples | [] [] [] [] | + gettext-runtime | [] | + gettext-tools | [] | + gip | [] [] | + gjay | | + gliv | | + glunarclock | [] | + gnubiff | | + gnucash | () () () () | + gnuedu | | + gnulib | | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gold | | + gpe-aerial | [] | + gpe-beam | [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] [] | + gpe-conf | [] [] | + gpe-contacts | [] [] | + gpe-edit | [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] | + gpe-timesheet | [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] | + gphoto2 | | + gprof | [] | + gpsdrive | | + gramadoir | | + grep | | + grub | | + gsasl | | + gss | | + gst-plugins-bad | [] [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | | + gtick | | + gtkam | [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | | + hello | [] [] [] | + help2man | | + hylafax | | + idutils | | + indent | | + iso_15924 | [] [] | + iso_3166 | [] [] () [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] | + iso_639 | [] [] | + iso_639_3 | [] | + jwhois | [] | + kbd | | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + klavaro | [] | + latrine | [] | + ld | | + leafpad | [] [] [] | + libc | [] | + libexif | | + libextractor | | + libgnutls | [] | + libgpewidget | [] [] | + libgpg-error | | + libgphoto2 | | + libgphoto2_port | | + libgsasl | | + libiconv | | + libidn | | + lifelines | | + liferea | | + lilypond | | + linkdr | | + lordsawar | | + lprng | | + lynx | | + m4 | | + mailfromd | | + mailutils | | + make | [] | + man-db | | + man-db-manpages | | + minicom | [] | + mkisofs | | + myserver | | + nano | [] [] | + opcodes | | + parted | | + pies | | + popt | [] [] [] | + psmisc | | + pspp | | + pwdutils | | + radius | | + recode | | + rosegarden | | + rpm | | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] | + sed | | + sharutils | | + shishi | | + skencil | | + solfege | [] | + solfege-manual | | + soundtracker | | + sp | | + sysstat | [] | + tar | [] | + texinfo | [] | + tin | | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | | + vice | | + vmm | | + vorbis-tools | | + wastesedge | | + wdiff | | + wget | [] | + wyslij-po | | + xchat | [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +-----------------------------------------------+ + ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne + 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 + + nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + +---------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] [] | + aegis | [] [] [] | + ant-phone | [] [] | + anubis | [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] | + bfd | [] | + bibshelf | [] [] | + binutils | [] [] | + bison | [] [] [] | + bison-runtime | [] [] [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + bombono-dvd | [] () | + buzztard | [] [] | + cflow | [] | + clisp | [] [] | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cppi | [] | + cpplib | [] | + cryptsetup | [] | + dfarc | [] | + dialog | [] [] [] [] | + dico | [] | + diffutils | [] [] [] [] [] [] | + dink | () | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + exif | [] [] [] () [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] [] | + freedink | [] [] | + gas | | + gawk | [] [] [] [] | + gcal | | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] | + gip | [] [] [] [] [] | + gjay | | + gliv | [] [] [] [] [] [] | + glunarclock | [] [] [] [] [] | + gnubiff | [] () | + gnucash | [] () () () | + gnuedu | [] | + gnulib | [] [] [] [] | + gnunet | | + gnunet-gtk | | + gnutls | [] [] | + gold | | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] [] | + gpe-go | [] [] [] [] [] [] [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] [] | + gphoto2 | [] [] [] [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] [] | + grep | [] [] [] [] | + grub | [] [] [] | + gsasl | [] [] [] [] | + gss | [] [] [] | + gst-plugins-bad | [] [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] [] [] | + gutenprint | [] [] | + hello | [] [] [] [] | + help2man | [] [] | + hylafax | [] | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | [] [] [] [] | + iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | + iso_3166_2 | [] [] [] | + iso_4217 | [] [] [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] [] [] | + keytouch-editor | [] [] [] | + keytouch-keyboa... | [] [] [] | + klavaro | [] [] | + latrine | [] [] | + ld | | + leafpad | [] [] [] [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] () [] | + libextractor | | + libgnutls | [] [] | + libgpewidget | [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | [] [] | + lifelines | [] [] | + liferea | [] [] [] [] [] () () [] | + lilypond | [] | + linkdr | [] [] [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] | + make | [] [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] [] | + minicom | [] [] [] [] | + mkisofs | [] [] [] | + myserver | | + nano | [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] | + pies | [] | + popt | [] [] [] [] | + psmisc | [] [] [] | + pspp | [] [] | + pwdutils | [] | + radius | [] [] [] | + recode | [] [] [] [] [] [] [] [] | + rosegarden | () () | + rpm | [] [] [] | + rush | [] [] | + sarg | | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + skencil | [] [] | + solfege | [] [] [] [] | + solfege-manual | [] [] [] | + soundtracker | [] | + sp | | + sysstat | [] [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + tin | [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] [] [] [] [] | + vice | [] | + vmm | [] | + vorbis-tools | [] [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] [] [] [] [] [] | + wyslij-po | [] [] [] | + xchat | [] [] [] [] [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +---------------------------------------------------+ + nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 + + sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW + +---------------------------------------------------+ + a2ps | [] [] [] [] [] | 27 + aegis | [] | 9 + ant-phone | [] [] [] [] | 9 + anubis | [] [] [] [] | 15 + aspell | [] [] [] | 20 + bash | [] [] [] | 12 + bfd | [] | 6 + bibshelf | [] [] [] | 16 + binutils | [] [] | 8 + bison | [] [] | 12 + bison-runtime | [] [] [] [] [] [] | 29 + bluez-pin | [] [] [] [] [] [] [] [] | 37 + bombono-dvd | [] | 4 + buzztard | [] | 7 + cflow | [] [] [] | 9 + clisp | | 10 + coreutils | [] [] [] [] | 22 + cpio | [] [] [] [] [] [] | 13 + cppi | [] [] | 5 + cpplib | [] [] [] [] [] [] | 14 + cryptsetup | [] [] | 7 + dfarc | [] | 9 + dialog | [] [] [] [] [] [] [] | 30 + dico | [] | 2 + diffutils | [] [] [] [] [] [] | 30 + dink | | 4 + doodle | [] [] | 7 + e2fsprogs | [] [] [] | 11 + enscript | [] [] [] [] | 17 + exif | [] [] [] | 16 + fetchmail | [] [] [] | 17 + findutils | [] [] [] [] [] | 20 + flex | [] [] [] [] | 15 + freedink | [] | 10 + gas | [] | 4 + gawk | [] [] [] [] | 18 + gcal | [] [] | 5 + gcc | [] [] [] | 7 + gettext-examples | [] [] [] [] [] [] [] | 34 + gettext-runtime | [] [] [] [] [] [] [] | 29 + gettext-tools | [] [] [] [] [] [] | 22 + gip | [] [] [] [] | 22 + gjay | [] | 3 + gliv | [] [] [] | 14 + glunarclock | [] [] [] [] [] | 19 + gnubiff | [] [] | 4 + gnucash | () [] () [] () | 10 + gnuedu | [] [] | 7 + gnulib | [] [] [] [] | 16 + gnunet | [] | 1 + gnunet-gtk | [] [] [] | 5 + gnutls | [] [] [] | 10 + gold | [] | 4 + gpe-aerial | [] [] [] | 18 + gpe-beam | [] [] [] | 19 + gpe-bluetooth | [] [] [] | 13 + gpe-calendar | [] [] [] [] | 12 + gpe-clock | [] [] [] [] [] | 28 + gpe-conf | [] [] [] [] | 20 + gpe-contacts | [] [] [] | 17 + gpe-edit | [] [] [] | 12 + gpe-filemanager | [] [] [] [] | 16 + gpe-go | [] [] [] [] [] | 25 + gpe-login | [] [] [] | 11 + gpe-ownerinfo | [] [] [] [] [] | 25 + gpe-package | [] [] [] | 13 + gpe-sketchbook | [] [] [] | 20 + gpe-su | [] [] [] [] [] | 30 + gpe-taskmanager | [] [] [] [] [] | 29 + gpe-timesheet | [] [] [] [] [] | 25 + gpe-today | [] [] [] [] [] [] | 30 + gpe-todo | [] [] [] [] | 17 + gphoto2 | [] [] [] [] [] | 24 + gprof | [] [] [] | 15 + gpsdrive | [] [] [] | 11 + gramadoir | [] [] [] | 11 + grep | [] [] [] | 10 + grub | [] [] [] | 14 + gsasl | [] [] [] [] | 14 + gss | [] [] [] | 11 + gst-plugins-bad | [] [] [] [] | 26 + gst-plugins-base | [] [] [] [] [] | 24 + gst-plugins-good | [] [] [] [] | 24 + gst-plugins-ugly | [] [] [] [] [] | 29 + gstreamer | [] [] [] [] | 22 + gtick | [] [] [] | 13 + gtkam | [] [] [] | 20 + gtkorphan | [] [] [] | 14 + gtkspell | [] [] [] [] [] [] [] [] [] | 45 + gutenprint | [] | 10 + hello | [] [] [] [] [] [] | 21 + help2man | [] [] | 7 + hylafax | [] | 5 + idutils | [] [] [] [] | 17 + indent | [] [] [] [] [] [] | 30 + iso_15924 | () [] () [] [] | 16 + iso_3166 | [] [] () [] [] () [] [] [] () | 53 + iso_3166_2 | () [] () [] | 9 + iso_4217 | [] () [] [] () [] [] | 26 + iso_639 | [] [] [] () [] () [] [] [] [] | 38 + iso_639_3 | [] () | 8 + jwhois | [] [] [] [] [] | 16 + kbd | [] [] [] [] [] | 15 + keytouch | [] [] [] | 16 + keytouch-editor | [] [] [] | 14 + keytouch-keyboa... | [] [] [] | 14 + klavaro | [] | 11 + latrine | [] [] [] | 10 + ld | [] [] [] [] | 11 + leafpad | [] [] [] [] [] [] | 33 + libc | [] [] [] [] [] | 21 + libexif | [] () | 7 + libextractor | [] | 1 + libgnutls | [] [] [] | 9 + libgpewidget | [] [] [] | 14 + libgpg-error | [] [] [] | 9 + libgphoto2 | [] [] | 8 + libgphoto2_port | [] [] [] [] | 14 + libgsasl | [] [] [] | 13 + libiconv | [] [] [] [] | 21 + libidn | () [] [] | 11 + lifelines | [] | 4 + liferea | [] [] [] | 21 + lilypond | [] | 7 + linkdr | [] [] [] [] [] | 17 + lordsawar | | 1 + lprng | [] | 3 + lynx | [] [] [] [] | 17 + m4 | [] [] [] [] | 19 + mailfromd | [] [] | 3 + mailutils | [] | 5 + make | [] [] [] [] | 21 + man-db | [] [] [] | 8 + man-db-manpages | | 4 + minicom | [] [] | 16 + mkisofs | [] [] | 9 + myserver | | 0 + nano | [] [] [] [] | 21 + opcodes | [] [] [] | 11 + parted | [] [] [] [] [] | 15 + pies | [] [] | 3 + popt | [] [] [] [] [] [] | 27 + psmisc | [] [] | 11 + pspp | | 4 + pwdutils | [] [] | 6 + radius | [] [] | 9 + recode | [] [] [] [] | 28 + rosegarden | () | 0 + rpm | [] [] [] | 11 + rush | [] [] | 4 + sarg | | 1 + screem | [] | 3 + scrollkeeper | [] [] [] [] [] | 27 + sed | [] [] [] [] [] | 30 + sharutils | [] [] [] [] [] | 22 + shishi | [] | 3 + skencil | [] [] | 7 + solfege | [] [] [] [] | 16 + solfege-manual | [] | 8 + soundtracker | [] [] [] | 9 + sp | [] | 3 + sysstat | [] [] | 15 + tar | [] [] [] [] [] [] | 23 + texinfo | [] [] [] [] [] | 17 + tin | | 4 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux-ng | [] [] [] [] | 20 + vice | () () | 1 + vmm | [] | 4 + vorbis-tools | [] | 6 + wastesedge | | 2 + wdiff | [] [] | 7 + wget | [] [] [] [] [] | 26 + wyslij-po | [] [] | 8 + xchat | [] [] [] [] [] [] | 36 + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 + xkeyboard-config | [] [] [] | 22 + +---------------------------------------------------+ + 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW + 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If June 2010 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://translationproject.org/extra/matrix.html'. + +1.5 Using `gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + diff --git a/libmednahawk/COPYING b/libmednahawk/COPYING new file mode 100644 index 0000000000..ce7ac8e137 --- /dev/null +++ b/libmednahawk/COPYING @@ -0,0 +1,341 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/libmednahawk/ChangeLog b/libmednahawk/ChangeLog new file mode 100644 index 0000000000..c8cd743661 --- /dev/null +++ b/libmednahawk/ChangeLog @@ -0,0 +1,5008 @@ +-- 0.9.26-WIP: -- + +October 13, 2012: + PSX: Handle non-word-aligned timer port reads and writes, rather than triggering an assert(). Also, a warning message is + now printed if a game tries to read from timer open bus space, rather than an assert() being triggered. + + More C++11 warning fixes. + +October 12, 2012: + NES: Added emulation of iNES mapper 101. + +October 11, 2012: + PSX: Added a "Dance Pad" emulated device, that uses mostly the same code as the "Gamepad" device, but doesn't provide + access to the shoulder buttons, and allows for opposing D-pad directions to be pressed simultaneously. + + PSX: Improved emulation of bit15 of the SPU control register; fixes problems with "Dance Dance Revolution", + "Medal of Honor", "Madden NFL 2003", "Fuuraiki", and "The Misadventures of Tron Bonne". + +October 10, 2012: + PSX: Fixed a bug that could cause an emulator crash if the game crashed and tried to execute code in the last 64KiB of the + CPU logical address space. + +-- 0.9.25-WIP: -- + +October 9, 2012: + Fixed a problem of usage of uninitialized memory in a startup function in drivers/input.cpp. + +October 8, 2012: + PSX: Tweaked GunCon hit detection, to improve menu behavior in games like "Point Blank 2". + + PSX: Reduced the penalty time required to resume from a Pause state to the best-case observed times(for 1x and 2x) on a PS1; + more accurate modeling will need to take into account the time passed since the Pause command among other things(TODO for + the future maybe, though the relationship between time passed and time to resume from a Pause state is a bit...wonky). + + PSX: Pause command completion time is now more accurate, per tests on a PS1. + +October 7, 2012: + PSX: Changed conditions under which "GetLocL" fails, per limited tests on a PS1. Fixed a game-breaking lockup in "Star Ixiom". + + PSX: Added CDC "Standby" command and status emulation, fixes a game-breaking lockup in "Philosoma". + +October 6, 2012: + PSX: Don't run DMA channel 1 unless there really is data available from the MDEC; fixes partially-broken FMV in "Rayman". + +October 5, 2012: + PSX: DMA, and GPU FIFO emulation tweaks, to fix a regression in "Legacy of Kain - Soul Reaver"(the game does something fairly + unique; it has a transfer length of 0x10 in some linked-list headers). + + PSX: Increased base cycle usage counts for polygon commands, per tests on a PS1. + + PSX: Improved GPU FIFO behavior, based on tests on a PS1. The GPU on an actual PS1 appears(more of a hypothesis than anything, based + on limited data) to have a contention or dependency system with different functional units that have access to the FIFO; the changes + here just simulate some of its less-computationally-expensive characteristics in regards to GPU status bits and + gross/rough timing. + +September 30, 2012: + Fixed numerous code constructs that caused errors and/or warnings when compiling for the C++11 standard. + +September 29, 2012: + PSX: Improved reliability of the Konami Justifier simulated offscreen shot process. + + PSX: More event handling tweaks. + +September 28, 2012: + PSX: Added experimental emulation of the DREAD Konami Justifier. This light gun makes tears of pain flow in a torrent. + + PSX: Added partial emulation of some esoteric timer features, though what was added is probably not totally correct. + + PSX: Altered the global event system to use a sorted doubly-linked list, to allow for more precise timing of events + in relation of one sub-device/chip to another. + +September 27, 2012: + Added code to allow CD image file data to be entirely loaded into memory, though the code is not used as such at current. + + SNES: Added boolean setting "snes.correct_aspect", default value of "0"(preserving previous behavior). + + PSX: Added additional heuristics for determining game region; fixes misdetection of the region for the North American release + of "Wing Commander IV". + +September 25, 2012: + PSX: Tweaked GunCon x coordinate scaling. + + Changed absolute mouse x and y coordinate passing from driver->core to be in 1.15.16 fixed point format(previously + simple integers), to avoid excess precision loss when scaling the coordinates from viewport dimensions + to nominal_width and nominal_height. + +September 24, 2012: + PSX: Added preliminary GunCon emulation. + + Genesis: Adjusted aspect ratio slightly. + + PSX: Adjusted NTSC aspect ratio slightly. + + PSX: Reduced internal frame buffer width by 1/4(reduces memory usage). + + PSX: When playing a PSF, virtual input(gamepad, etc.) devices are no longer emulated as being connected. + + The CUE sheet reader will now seek past a UTF-8 BOM at the beginning of a CUE sheet if present(and print an error/warning + message). + + Fixed resource leakage issue when CUE/TOC sheet loading aborts due to an error. + +September 20, 2012: + Removed the rawer parts of a half-baked idea implemented long ago in the virtual input device abstraction structures, and + removed some extremely poorly-scaling-with-increased-emulated-system-count-and-emulated-device-count code that said + half-baked functionality required, shaving a considerable amount off Mednafen's startup time + (though probably not really noticeable on faster CPUs). + + Modified settings loading and saving code to use new FileStream functionality. + +September 18, 2012: + Modified the CD image reading and "AudioReader" code(used for reading MS WAV/Vorbis/MusePack/etc) to operate on a + "Stream" object instead of using stdio functions on "FILE", in regards to files used for track data. This allows MemoryStream + to be used very easily to preload the track file data into memory, which may be put to use in the future. + + Implemented FileStream, derived from Stream, as a quick wrapper around FileWrapper(HAH). + +September 15, 2012: + Map SDL hats to buttons instead of axes in the new joystick interface abstraction code, to prevent loss of information. + +September 8, 2012: + Entered more information into the possible values enum struct for the *.debugger.disfontsize setting(s) so that the possible values + will be in the autogenerated documentation. + +September 7, 2012: + Added a const char* "Description" member to the "InputDeviceInfoStruct", and did some minor internal plumbing so it will be propagated to the + automatically-generated documentation if non-NULL. (For the possibility of more verbose emulated input device information for the + *.input.port* settings in the documentation) + +September 6, 2012: + Increased size of line buffer used in settings file reading. + + Changed input configuration evaluation code to allow multiple physical mappings to a single emulated analog button/axis to work properly(it is + somewhat useful for neGcon emulation). + + PSX: Added neGcon emulation. + +September 5, 2012: + Added setting "input.joystick.global_focus". + + Renamed settings: + autofirefreq -> input.autofirefreq + analogthreshold -> input.joystick.axis_threshold + ckdelay -> input.ckdelay + +September 3, 2012: + PSX: Don't mask the address specified by the memcard write command, but instead signal an error condition if the address is invalid, per + tests on a PS1. + +September 1, 2012: + Reduced memory usage of internal runtime text rendering data structures by about 2.4MB for 64-bit builds, and about 0.8MB for 32-bit builds. + +August 31, 2012: + Only destroy and recreate the emulated device and device state on the port being altered with CTRL+SHIFT+[n], rather than all ports, to + avoid usability problems with more complex input devices(like on the PS1 for instance). + + Fixed a longstanding bug that caused input configuration data to be lost if you changed the device on a port with CTRL+SHIFT+[n] after + configuring input without an emulator exit in-between. + +August somethingth, 2012: + PSX: Added DualShock emulation, complete with Analog mode toggle button emulation. + + Revamped physical joystick/gamepad support: + Added native code targeting DirectInput(5.0) and XInput on MS Windows, and jsdev and evdev on Linux. + + Added support for rumble on Linux and XInput devices on MS Windows. + + Refactored and recoded much of the joystick input configuration handling code. + + Added kludgey support for handling physical joystick analog buttons in the input configuration process without it freaking out: + Note: The process described below should NOT be necessary if you're using an XBox 360/XInput controller under MS Windows. If + you're using such a controller under a different operating system, or using a non-XBox 360/non-XInput controller, and it has + analog buttons, then you should perform the process as described below. + + Also note that the process is only necessary when you're configuring inputs, and not during "normal" gameplay/usage. + + Twirl all sticks and D-pads and press all analog buttons on any physical gamepads/joysticks with analog buttons you want + to use in the input configuration process, then press F3. Then, configure input as normal. The detected analog buttons + will be recognized during input configuration until Mednafen exits; if you exit Mednafen and restart, and want to configure + input devices again, you'll need to repeat the twirling-pressing-F3 process again). + +August 12, 2012: + Fixed a bug that was causing the FPS display to be missing if the "overlay" video driver was used in combination with PC Engine emulation. + + Removed the last vestiges of the driver-side handling of the long since removed/replaced PC-FX multi-resolution-frame multi-layer alpha + blending method. + +August 11, 2012: + Added setting "osd.alpha_blend", default value of "1", that controls enabling of OSD alpha-channel blending. Set it to "0" for + a speedup when using the "sdl" video.driver. + + Software("sdl" video driver) render fixes/improvements: + Improved precision and rounding behavior with the fixed-point math used for scanline effects and non-integer scaling. + + Implemented alpha blending for all OSD elements except the FPS display. + + Added support for the scanlines effect when the screen is rotated(via ALT+O). + + Fixed a bug that caused an enabled scanline effect to be missing when a special scaler(hq2x, hq3x, scale2x, etc) is used + and no post-special-scaler scaling is necessary. + +August 10, 2012: + Implemented minor optimizations to the "sdl" "video.driver" scanlines effect code. + + Changed a ton of driver-side OSD rendering code to use MDFN_Surface instead of SDL_Surface. + +August 1, 2012: + Fixed port numbering(from 0-based to 1-based) in the error message display after trying to configure buttons for a nonexistent virtual device/port. + +June 14, 2012: + Added a non-threaded alternative implementation of CDIF(currently unused, but will be useful if we ever target an OS without multithreading + capabilities). + +July 13, 2012: + Lynx: Made reporting of errors during game load to be more verbose. + + GB: Error out if a ROM image to be loaded is less than 512 bytes in size. + + GB: Don't use TestMagic() in Load(), and don't return -1. (So that -force_module gb will work as expected) + +-- 0.9.24-WIP: -- + +July 12, 2012: + Only use "AI_ADDRCONFIG" flag with getaddrinfo() hints if it's available; fixes a compilation error on OpenBSD. + + Disallow manual save states with "snes" module during netplay, since the bsnes save state code alters the current state on save state, + which would cause desynchs, or annoyances and extra bandwidth usage to work around the issue, in a netplay environment. + +July 9, 2012: + Netplay: + Removed setting "netplay.merge", since similar functionality can be obtained by issuing one or more of the newly-added commands. + + Added /take, /dupe, and /drop commands. + +July 8, 2012: + PSX: Implemented CD-XA playback current file and channel matching(per very limited tests on a real PS1), fixes broken speech in + "Yarudora Series Vol.1 - Double Cast". + + Netplay: + BSD/POSIX: Only use MSG_NOSIGNAL if it is defined; fixes compilation issue on Mac OS X. And don't use MSG_NOSIGNAL + for recv(), only send(). + + BSD/POSIX: Use socket option "SO_NOSIGPIPE", if available. + + Handle a recv() return value of zero properly(or at least semi-properly :b), to prevent a lockup in certain situations. + + Added player /swap command(requires mednafen-server 0.5.0). + +July 6, 2012: + SMS: Added "Power Strike II" to the internal game database, to force PAL mode, per suggestion from "megadriver". + +-- 0.9.23-WIP: -- + +July 5, 2012: + PSX: Fixed a very small memory leak in frontio.cpp. + + Updated internal copy of miniLZO from version 2.01 to version 2.06. + +July 4, 2012: + SNES: Removed some debug printf()'s that got left in the code from the work a few days ago. + + Networking: + Don't pass a NULL pointer to the WSAIoctl() output length count pointer argument. + + More verbose error reporting with Winsock2 network code. + + Break out of the name resolution loop so that we don't erroneously connect() multiple times. + + Fixed some socket leaks on error bugs. + + PSX: Use only one 9-bit SPU RAM write address offset counter for voices 1 and 3, and CD-audio writing to SPU RAM, and never reset it during + runtime(sans reset/power condition, of course); fixes audio glitches with the guitar sounds in "Um Jammer Lammy". + +July 3, 2012: + Wrote netplay code directly targeting BSD/POSIX and Winsock2 APIs, and removed SDL_net support. This change also brings support + for IPv6. + +July 2, 2012: + /server and /connect no longer accept "[HOST]:[PORT]" form, only "[HOST] [PORT]". + + /server and/or /connect with no arguments in the netplay console will now connect to the server as specified by "netplay.host" instead + of trying to connect to an empty string and trashing the "netplay.host" setting in the process. + +July 1, 2012: + Fixed various internal problems with the netplay user interface code(memory leaks, using free()'d memory, definite multithreading unsafety, + /quit not working properly, trying to access the network when the connection is closed, etc.). + +June 30, 2012: + Further disable state rewinding functionality during netplay. + + SNES: Backported(sort of) a fix to the serializer code that was breaking 64-bit integer restoring. + +June 29, 2012: + SNES: Change various instances of "if(scheduler.sync == Scheduler::SyncAll)" to "while(scheduler.sync == Scheduler::SyncAll)" in the + bsnes code, for better save state behavior. + + SNES: Run S-SMP more tightly in sync with S-CPU, to further reduce frame timing jitter. + +June 27, 2012: + Updated netplay protocol to increase the maximum number of allowed controllers per game from 8 to 16. + +June 26, 2012: + Changed save-state header magic from the 16-bytes MEDNAFENSVESTATE to the 8-bytes MDFNSVST, to make room for a 64-bit creation + timestamp(which will be used in the future). + The old header magic is still recognized, for backwards compatibility. + +June 25, 2012: + Cleaned up and remove VLA usage from core netplay code. + +June 24, 2012: + NES: Fixed an annoying old compiler warning in "ines.cpp". + + SNES: Disable some warnings to keep compilation of the bsnes code from spamming the screen with warnings. + + SNES: Implemented kludges to prevent sound clicks and scratchiness when state rewinding functionality is enabled(but it's still plenty + scratchy when actually rewinding ;)). A more proper fix does not seem possible, due to the way bsnes works. + + SNES: Modified bsnes core to prevent S-SMP(and S-DSP) from running as far ahead of the CPU as it did before, to reduce timing jitter. + This change has a small negative speed impact. + +June 23, 2012: + Tidied up netplay join/leave messages. + +May 30, 2012: + Fall back to nearest-neighbor scaling when blitting a screen image segment with a height less than 2(or less than 4, for scale4x); fixes an + assert-triggered "crash" when using scale2x with PSX emulation(and possibly Genesis and PC Engine emulation with some games, as well). + +May 29, 2012: + PSX: Fixed a stupid bug in the FB fill GPU command; the height iteration variable was being tested in respect to drawability(interlace mode, + dfe, etc.), rather than the actual destination Y coordinate into GPU RAM. Fixes major graphical problems with "Dead or Alive". + +May 28, 2012: + PSX: Altered data structures to avoid instantiating a templated struct with 0-size arrays. + +May 26, 2012: + PSX: The Pause CDC command will "complete" much, much faster now if the drive is already paused. Fixes the lack of music after pausing + and unpausing in "Dead or Alive". + + PSX: Corrected GPU line draw command coordinate precision handling, in regards to x,y drawing offset, per tests on a PS1; fixes a + flickering line issue in "Triple Play 97". + +May 25, 2012: + PC-FX: QuickTime movie recording will now (indirectly) take the "pcfx.high_dotclock_width" setting into account, to reduce the + size of the raw recorded image data when the setting is set to "256". (Note that this setting should still not be changed from the default + of "1024", unless you understand the graphical degradation smaller setting values will cause in some games.) + + MD: Fixed a bug that was causing the QuickTime movie recording code to instantly crash right after emulator startup with MD/Genesis emulation. + +May 24, 2012: + PCE_FAST: Some 32-bit x86 inline assembly was listing "rbp" in the clobber list, when it should have been listing "ebp". Fixed. + +May 23, 2012: + PSX: Improved the emulation accuracy of GPU texture windows(and made the texture window code much simpler), per tests on a PS1. + +May 23, 2012: + PSX: Mask sprite width and height for custom/variable-sized GPU sprites against 1023 and 511, respectively, per tests on a PS1. + +-- 0.9.22-WIP: -- + +May 8, 2012: + PC-FX: Increased the minimum allowable value for the "pcfx.cdspeed" setting from "1" to "2". + + Replaced internal module graphics layer toggling code with absolute graphics layer enable mask setting code. + +May 5, 2012: + NGP: Reduced the size of the noise channel LFSR from 16-bits to 15-bits, per mic_'s suggestion(and test program and recorded sound sample). + +May 4, 2012: + Fixed broken support for "CTRL" modifier when configuring command keys/hotkeys(this doesn't affect hardcoded default key assignments, + or manual configuration file changes to use the ctrl modifier, both of which already worked fine, it's just the in-Mednafen configuration + process that was broken in regards to the CTRL modifier key). + +May 2, 2012: + PSX: Fixed SPU handling of voice pitches > 0x3FFF; fixes broken sound effects in "Tales of Phantasia", and likely other games + as well. Thanks to "sparklewind" for bringing the bug to my attention, and recording sound samples of the sound effects from a PS1. + +April 30, 2012: + MD: Reworked YM2612 LFO PM/FM emulation based on notes from Nemesis. Changed the LFO AM waveform start phase so + that the first "sample" is 0; though the waveform probably needs to be changed from sine to triangle. Corrected(I hope. :b) LFO AM depth + setting 0x1 shift factor. + +April 29, 2012: + PSX: Increased CD audio buffering slightly, and flush buffers on Pause, to reduce the number of voice audio glitches in "Tales of Destiny 2". + +April 28, 2012: + PSX: Began adding save state support. + + Fixed a regression in the deinterlacer code, from the April 20 fix, that was causing the first entry in a valid line widths array + to be trashed. + +April 26, 2012: + NGP: Got rid of various truncations of CPU cycle counts to 8-bits(they're still ultimately truncated to 8-bit, but only in one place now, so + that it can easily be removed in the future when the CPU timing mess is resolved). + + PCE: Added direct BRAM editing capability to the debugger's memory editor. + + PCE: Fixed broken direct main RAM viewing and editing in the debugger's memory editor. + +April 23, 2012: + MD: Added support for region overrides in the internal database(though no entries that override region are present yet). + + MD: Changed supported region(as indicated by the game's embedded header) preference order to prefer domestic NTSC over overseas PAL. + + MD: Removed an erroneously superfluous interrupt pending check in the 68K emulator core(which should have been removed a long time ago, + since it is apparently a leftover of the original C68K timing model). + +April 21, 2012: + MD: The upper 8 and lower 8 horizontal lines on the screen are now rendered as the border color in 224 height mode; fixes graphical glitches + in "Micro Machines", possibly other games. + + MD: Corrected VDP vblank flag set and clear time, fixes sprite glitches in X-Men 2. + +April 20, 2012: + Fixed a bug in the system-independent deinterlacing code that was causing graphical glitches with Genesis interlaced mode under + certain conditions + + MD: Reset-button-triggered reset no longer resets VDP state, fixes major graphical corruption with Bonkers after such a reset. + +April 19, 2012: + MD: If the YM2612 channel "algorithm" has changed, start the attack phase on the next key on from maximum attenuation, to ostensibly + fix a broken sound effect in Ecco the Dolphin 2(Tides of Time), per the Gens EG implementation; this needs to be tested on an actual + Genesis, which will have to wait until I'm able to obtain a Genesis flash cart. + +April 18, 2012: + MD: Fixed the YM2612 save state code to work again(after the recent changes broke it); however, the recent changes have broken + save state compatibility with save states from 0.9.21-WIP and earlier, and that isn't going to be "fixed". + + MD: Fixed a major problem with the new EG implementation that was causing significant timbre and volume issues, due to an erroneous + assumption(from PS1 emulation work) of how the attack phase entry works(thanks to a terse old forum post from Steve Snake + for clarifying the issue). + +April 16, 2012: + MD: Tweaked the sin and exp table algorithms to more or less match those described at https://docs.google.com/View?docid=dd8kqn9f_13cqjkf4gp + (different chip, but at least the logsin table is supposed to be the same as the YM2612). The LFO tables still need to be worked on, though. + + MD: Fixed a bug(relating to ADSR phase skipping) in the new EG code that caused some broken music in Flashback. + +April 15, 2012: + MD: Fixed CSM support(untested) in YM2612 emulator. + + MD: Rewrote YM2612 emulator EG portion, based on information from Nemesis and MAME/Genesis Plus GX. (CSM support was broken in the process, and will + need to be fixed, along with some other code cleanups) + + MD: Simulated FIFO bits in the status register were only being set(to 1), and never cleared. Fixed. (Mega Turrican actually checks the + FIFO full bit, unlike many other games). + +April 14, 2012: + MD: Updated Z80 core to latest FUSE SVN revision(though it required heavy modification for inclusion in Mednafen, so it's possible + something Z80-emulation-related could have broken in the process); the update fixes some undocumented flag results, and changes/fixes timing + for some instructions. + + MD: Implemented very crude VDP FIFO timing simulation, fixes issues with "Soldiers of Fortune" and "Fatal Rewind". + + MD: Removed old, questionable YM2612 hack, fixes some missing sound effects in "Williams Arcade's Greatest Hits". + +April 13, 2012: + MD: Changed VDP line timing based on information in Genesis Plus GX, "Bram Stoker's Dracula" is now playable. + + MD: Reset(via F10 button) will now reset less state than power off/on "reset", to allow "X-Men" to progress to the final level. + + MD: Revamped 68K emulator timing, for more versatility and better timing granularity(exact timing not so much, at least not yet...) at the cost of + increased CPU usage. + + MD: Fixed a bug in the VDP DMA fill and VDP DMA VRAM copy timing calculations, fixes graphical glitches in a few games. + + MD: Applied Yabause revision 1972 C68K timing fix patch. + +April 11, 2012: + MD: Fixed a few(but there are many left :() YM2612 emulator bugs, based on information at http://gendev.spritesmind.net/forum/viewtopic.php?t=386 + +April 10, 2012: + PSX: Unmapped entries in the CPU emulator's fast instruction fetch memory map are now filled with a pointer to a dummy page, to prevent + a game's crash from crashing Mednafen as a whole. + + PSX: Removed unused partially-implemented CPU trampoline code and data, to reduce RAM usage and clean up code a bit(it was originally + to ensure stability with a PC-as-a-pointer style CPU optimization, but that optimization was never implemented due to being in conflict + with branch delay slot emulation). + +April 9, 2012: + PSX: Added main RAM mirror addresses to the fast instruction fetch memory map. + + PSX: Added various coprocessor-related instructions to the disassembler. + + Added logical AND mode command key functionality(where all buttons/keys configured to the command are required to be in a pressed state + simultaneously for the command to occur), on a per-command basis(commands can be configured in this mode with SHIFT+F2). + +April 8, 2012: + Fixed transposed memset() value and length arguments in cdromif.cpp, thanks to skitt for the notice. + + PSX: Fixed triangle coordinate precision in relation to draw offset based on more tests, fixes flickering graphical glitches on the + right side of the screen in "Quake II", probably other games as well. + +April 7, 2012: + PSX: Added L3 and R3 button emulation for emulated Dual Analog gamepads. + +-- 0.9.21-WIP: -- + +March 30, 2012: + Updated the internal copy of libmpcdec to r475(which supports SV8, whereas the version in Mednafen previously only supported up to + SV7), and updated the CD audio file reading code to use the new API, fixing a few problems(with variable initialization, and seeking) + in the process. + + SNES, PSX: Moved cleanup/deallocation code into a separate Cleanup() function, and call Cleanup() instead of CloseGame() in case of + error during file loading, to prevent nonvolatile saved memory deletion in case of error. + + SNES: 8MiB of memory is now allocated for the ROM image buffer passed to bsnes, regardless of actual ROM image size, to work + around potential design flaws in the bsnes cart loading code to prevent emulator crashes with malformed or corrupted ROM images. + + SNES: Added an 8MiB limit maximum ROM image size limit. + +March 29, 2012: + Updated the internal copy of tremor to SVN revision 18222, and imported and merged in libogg 1.3.0, since SVN tremor + no longer has its own libogg implementation(and hasn't for some time apparently!). + + PSX: Added draw time penalty for texturing on polygons. + + SNES: Began adding SNSF support. + + SNES: Added default mouse button assignments to emulated mice, and default key assignments to the emulated gamepad on the first + port. + +March 28, 2012: + Fixed a big bug in the CUE sheet parser that caused wrong track addresses/LBAs with multi-data/bin-file CD rips where the pregap + data is included in the binary image via "INDEX 00/INDEX 01" directives in the CUE sheet(which is a common form for PSX CD rips). + + PSX: Added draw time penalty for goraud/gradient polygon shading. + + PSX: Reduced draw time penalty for having transparency enabled, and added a draw time penalty for mask evaluation, per a quick, + noncomprehensive test on a PS1(more thorough testing in the future is warranted) on a flat-shaded triangle. + + PSX: Reduced triangle coordinate integer component precision, and reduced the maximum allowed triangle height to 512; fixes some graphical + glitches in "Fighting Force 2". + + PSX: Added SPU RAM editing(as opposed to simply viewing, as before) capability to the debugger. + + PSX: Noise mode being enabled on a voice will now suppress ADPCM block flags effecting an ADSR release, per tests on a PS1. + +March 27, 2012: + PSX: Revamped SPU IRQ to fix lockups in "Eithea". Tests need to be run on a PS1 to make sure the fix is correct, but the fix is derived + from plausible hypothetical behavior. + + PSX: Added emulation of some bits of the SPU status "register" at 0x1F801DAE. + +March 21, 2012: + PSX: Brought SPU DMA timing closer to what it is on actual PS1 in game usage cases(more accurate timing than this will require significantly + more SPU emulation work). This should fix sound glitches in the "Legend of Mana" FMV sequences. + +March 20, 2012: + PSX: Reverse OT clear DMA is now emulated as halting the CPU, per tests on a PS1(though further tests are needed, the DMA controller + "halting" is likely more complex than simply halting the CPU unconditionally while the DMA runs; and even in a C program, the + halting effect does not occur immediately, but is slightly delayed, which is not emulated). + + PSX: Improved CDC DMA timing slightly. + + PSX: Bit 28 of a channel control register is now cleared on DMA completion of that channel, per tests on a PS1. + +March 19, 2012: + PSX: Mute/Demute is now implemented for CD-XA playback as well as CD-DA playback. + + PSX: SPU control register bit14(mask 0x4000, the mute bit) no longer affects CD audio output, per a test on a PS1. + +March 4, 2012: + PSX: Added emulation of SPU registers available at [0x1F801E00, 0x1F801E80). + +February 29, 2012: + NGP, VB, GBA: Implemented minor optimizations for when running on PowerPC. + +February 28, 2012: + PSX: Added support for running on big-endian hosts, and added PowerPC-specific optimizations(AltiVec IDCT for MDEC, + and load/store byte-reverse instructions via inline assembly for memory accesses). A 1.42GHz PowerMac G4 system + is more than fast enough to play PSFs(especially with the idle loop detection speed hack added earlier), but is much + too slow to play games at full speed. + +February 18, 2012: + NES: Fixed Famicom Arkanoid controller emulation, thanks to raz0red for reporting that it was completely borked. + +February 16, 2012: + Fixed a compilation problem with gcc 4.7-prerelease, reported by belegdol. + +Feburary 11, 2012: + PSX: Fixed a mnemonic typo in the disassembler for "sltu", thanks to zeromus for reporting it. + +February 6, 2012: + PSX: Altered DMA abort behavior to try to prevent lockups in some games. + +February 5, 2012: + PSX: Fixed a potential buffer overflow crash when playing a PSF if the PSF tries to enable GPU video output. + + PSX: Added a simple idle loop detection speed hack to the CPU core, used only during PSF playback. + + PSX: Removed the InBDSlot variable, rolling its functionality into an interpretation of the lower 2 bits of the "new_PC_mask" + variable. + +February 3, 2012: + Fixed a spelling error in a 3D mode setting in vb/vb.cpp + + Added some missing typecasts in src/file.cpp. + +January 31, 2012: + Fixed a bug in the interpolation pixel shaders code that could cause a shader compilation error on some + OpenGL implementations. + +-- 0.9.19-WIP: -- + +January 28, 2012: + Added workaround for questionable header changes with libcdio 0.83 and newer. + +January 25, 2012: + Fixed "x" and "y" .videoip settings not working properly with screen rotation(though the fix is a bit + convoluted, in the future it may make sense to completely re-evaluate how destination rectangles and rotation + are done). + + Re-added "ipxnotysharper", "ipynotxsharper", and "ipsharper" pixel shader settings. + + Fixed interpolation-pixel-shader algorithm texture coordinate evaluation. + +January 24, 2012: + Re-added "ipxnoty" and "ipynotx" pixel shader settings, to compensate for the removal of the extended videoip settings. + + Fixed "x" and "y" .videoip settings to work properly in full-screen mode. + + PSX: Added default mouse button assignments for emulated mice. + + PC-FX: Fixed a crash when selecting the "RAINBOW" layer in the debugger's graphics viewer. (Note that viewing + the RAINBOW layer via this manner is still not supported; IE there's just empty space when the layer is selected in the + graphics viewer). + +January 23, 2012: + WonderSwan: Fixed a reset initialization bug(due to a design flaw) that was partially corrupting internal and + external EEPROM. + + PSX: Added emulation of LWL and LWR load delays, and emulation of LWL and LWR diversion of the register writeback + stage of a previous instruction's delayed load. + +January 22, 2012: + libcdio version information is now printed out on startup. + +January 21, 2012: + PSX: Added mouse emulation. + + Changed how physical mouse events are processed, removing a potential thread-safety issue with some SDL functions, + and ensuring that a very quick mouse button press and release registers as pressed for at least 1 frame, as far + as command processing and virtual input device emulation go. + +January 20, 2012: + PSX: Added default keyboard button assignments for emulated digital gamepad 1. + + PSX: Worked on multitap emulation some more. + + PSX: Corrected gamepad and memcard emulation, to only respond when the first communication byte is 0x01 or 0x81 + respectively, rather than masking the byte with 0x81 and then testing, which is apparently incorrect based on + real system testing. + +January 19, 2012: + PSX: Began adding multitap emulation. + + Fixed broken emulated input device selection command keys for ports 6, 7, and 8 + +January 18, 2012: + PSX: Front port I/O changes: + Masked values written to control and mode registers to match tests on a real PS1. + + Corrected RxD bit status when no device is driving it(was 0, should be 1). + + Added emulation of DSR status bit to reads from the status register(though DSR emulation is totally kludgy + at the moment, need to fix it up in the future). + + Added emulation of interrupt status bit to reads from the status register. + + Added emulation of memory card insertion detection bit, that is apparently set when the memory card receives + power after being off, and is cleared by issuing a (successful?) write. + + Attempted memory card block reads from beyond the end of the memory card will now fail as tested(granted + not extensively tested for multiple beyond-end address values) on a real PS1. + + The high byte of the read address specified in the memory card read command will now be echoed back in + the following byte sent back to the PS1, as per tests on the real PS1(previously in Mednafen, that byte was + just being sent as 0x00). + + The receive buffer byte is now duplicated across all bytes of multi-byte reads of the data port address, + as on a real PS1. + + Began adding analog gamepad support; though, the current front port SIO device interface is a bit clunky, + so probably no more emulated devices will be added until that can be improved. + + PSX: Removed asserts on MFC0 from a debug register; a warning message will still be printed if a debug register + is written with MTC0, however. + + Fixed a bug that could cause an assert() to be thrown with small effective y-scale values on certain types of + multires video frames, thanks to Speedvicio for reporting it. + +January 17, 2012: + PSX emulation module compilation is now enabled by default in the configure script. + + PC-FX: Fixed a lack of updating a cached copy of the debugger-editable KING register "ADPCMCTRL" on edit. + + Added a rudimentary test in the configure script to determine if "-fno-strict-overflow" or "-fwrapv" should be used + (in regards to gcc 4.2.x generating bad code for -fno-strict-overflow). + + Updated list of gettext translateable source code files. + +January 16, 2012: + PSX: Fixed emulation of bit7 of SPU control register, it actually appears to control the reverb algorithm writing + into the reverb work area, rather than setting the inputs to 0 as it was emulated before. Fixes music corruption + in "The Roots" demo, music playback in "Vib-Ribbon", and possibly minor sound glitches in other games as well. + + PSX: CD audio data is now written to SPU RAM without SPU output CD volume being applied, fixes course generation + in "Vib-Ribbon". + + Implemented support for mapping command keys(hotkeys) to mouse buttons; it was partially implemented before, + in that the command key configuration process allowed you to select mouse buttons for a command key, but the + mouse buttons had no effect in actually triggering the command. + +January 15, 2012: + GB: Added GB system type selection via "gb.system_type" setting. Sound emulation nuances have + changed from the previous default, such that DMG games will select emulation of the DMG sound hardware whereas + before they selected CGB sound hardware. To achieve the previous behavior, set the "gb.system_type" setting to "cgb", + though note that in a future version this setting may change color and palette selection as well. + +January 13, 2012: + Corrected a wrong argument type in an error reporting function in drivers/shader.cpp, which should fix compilation + issues with certain OpenGL implementations. + + PSX: Removed erroneous coordinate check in line-drawing code that was preventing 1-pixel-long lines from + being drawn, and fixed a divide-by-zero issue that removing the check caused. + + Port cache is now cleared on game close; has no practical effect on stock Mednafen, but needed for ports + that allow for more than one game loading per instance, to prevent problems with netplay and state rewinding. + + PSX: Refined GPU status port bit28 emulation, per tests run on a + real system(it's a bit weird and inconsistent). + + PSX: GPU polylines now require at least one line segment(two vertices) to + be specified before the termination code is honored, per tests on + a real system. + +January 12, 2012: + PSX: Fixed a problem with shaded polyline end code evaluation, fixes startup lockup in "Codename: Tenka". + + PSX: Fixed GPU flipped sprite drawing, the starting coordinates were being set incorrectly as + to how a real GPU apparently works(and how a real GPU apparently works is kind of wonky compared + to sprite flipping on older consoles!). + + PSX: Sprites are no longer dithered, per test results run on the real thing(though only with commands + 0x64 through 0x67, it's possible that the others couuuuld be different, more tests will be run). Fixes + the motion-blurred running scene in the beginning of "Silent Hill". + +January 11, 2012: + PSX: Improved GPU FB Read, FB Write, FB Copy, and FB Fill command emulation(particularly coordinate and + size masking; and doing mask bit handling for FB Copy, which fixes FF8 battle transitions), based on tests + run on a real system. + +January 8, 2012: + PSX: Fixed IRQ idle and FIFO room bits, fixes graphical update issues with "The Roots" demo. + + PSX: Made OT clear DMA occur over time instead of instantly. + + Fixed a deinterlacer bug that would cause a stale field to be displayed for the first interlaced frame after a + period of non-interlaced frames. + +January 6, 2012: + More build information is displayed on startup. + + Fixed a memory leak in the internal message display code. + +January 5, 2012: + Improved PAL region game support, and added rough region autodetection, with a BIOS filename setting for each supported + region. + +January 4, 2012: + Fixed multiple issues with the signal handler. + +January 3, 2012: + Fixed temporal blur memory allocation that could lead to crashes with emulated systems that support + interlaced video, it was only allocating for a fixed height of 256 when it should have been using the fb_height + member of MDFNGameInfo. + + Fixed problems with the configure script that caused user-supplied CPPFLAGS to be ignored. + + The Win32 build is now compiled with gcc 4.5.4 20111030(prerelease), and compiled with gcc option "-mstackrealign". + +December 30, 2011: + PSX: Added emulation of coprocessor->CPU transfer delay slots, fixes + graphical glitches in "Tekken 2". + + PSX: Fixed bug that was causing timer overflow flag to be set when it shouldn't be(when in target mode). + + PSX: GPU CLUT offset wrapping fixed(fixes "Next Tetris"). + + PSX: Return interlaced mode field in bit 13 of GPU status port reads. + + PSX: Miscellaneous GPU emulation improvements relating to coordinate precision. + + PSX: Revamped GPU, SPU, and MDEC DMA, (and GPU command buffering), to run over time instead of all at once. + +December 29, 2011: + Lynx: Fixed EVERON detection emulation, and emulated a hardware bug regarding SCB data reading, the latter of which + fixes a graphical glitch in "Joust". Thanks to sage and LX.NET for information and patches. + +December 21, 2011: + PSX: Fixed a typo in the return value calculation for control command 0x10, fixes graphical glitches in + "Xenogears". + +December 19, 2011: + PSX: Added backing variables/memory for memory accesses to 0x1f801000-0x1f801023, though their actual functionality isn't + emulated yet. + + PSX: Added dummy SIO(rear serial port) emulation to fix a divide-by-zero crash in Wipeout. + + PSX: Altered ReadN and ReadS semantics, fixes a lockup in Suikoden II. + + PSX: CD sector error correction will no longer be attempted on mode 2 form 2 sectors, fixes data corruption and lockup + issues with "Final Fantasy Tactics", "SaGa Frontier", and perhaps others. + +December 18, 2011: + PSX: Fixed a problem with line drawing gradient shading, fixes some glitches with lighting effects + in "Quake II", "Need for Speed III", and probably other glitches in other games as well. + + PSX: Altered Mem->GPU DMA completion calculation to take into account the GPU's FIFO, though the FIFO simulation + is rather crude; fixes various games that were flickering messes. + + PSX: Fixed FB write coordinate and size masking to not be braindead(it didn't allow 1024 width or 512 height, + which obviously broke games). + +December 17, 2011: + PSX: Improved emulation of SPU control register bit 15, fixes sound effects and music glitches in "Viewpoint", "Mat + Hoffman's Pro BMX", and likely other games as well(though "Hydro Thunder" still seems to have issues with + garbage sound). + + PSX: Improved emulation of SPU control register bit 14. + +December 16, 2011: + SMS: Began work on fixing H-counter behavior. + +December 15, 2011: + PSX: Masked FB write coordinates and widths to the bare minimum; not sure if this is totally correct(need to run + tests on the real thing), but it fixes a startup lockup in "Crash Team Racing". + + Revamped internal CD direct reading abstraction, and made several user-visible changes: + Removed "cdrom.lec_eval" setting; it complicated internal design, and was a bad decision in the sense + that it could promote distributing patches or CD rips that would likely not work properly when burned to + an actual disc. + + Added more proper support for multi-disc CD games; see the CD-emulation section in the documentation + for further details. + + Dropped support for physical CD drives that don't support MMC commands, don't support raw sector reading, + and/or don't support raw subchannel reading. + +December 7, 2011: + Added experimental support for enabling linear interpolation on one axis only(via the .videoip setting), + that doesn't require FBOs or pixel shaders. + +December 4, 2011: + PSX: Corrected time of FB Y readout offset lower bit versus field bit setting, fixes startup freeze in + "X-Men: Mutant Academy". + + PSX: Made SPU IRQ emulation slightly more accurate. + +December 3, 2011: + PSX: Added a kludge to prevent the GPU from returning busy status on status port reads after DMA to the GPU + finishes its simulated run time, to fix major problems with the battles in "Valkyrie Profile". + TODO: This kludge will be removed when more accurate DMA emulation is in place in the future. + + PSX: Reduced triangle vertex x,y coordinate integer precision, fixes missing level graphics in "Tony Hawk's + Pro Skater 2". + +December 2, 2011: + PSX: Improved mask bit emulation, fixes text brightness issues in "Dragon Quest 4", and possibly other + graphical issues in other games as well. + + Swapped the lines the scanlines effect is applied to, and removed the OpenGL texture offset hack used when scanlines + were enabled. + +December 1, 2011: + PSX: Improved display FB Y readout position emulation, and added support for line skipping and "dfe" functionality + when drawing in interlaced mode(it's likely not 100% correct, though). + +November 29, 2011: + Added emulation of the VDP quirk present in the Japanese SMS VDP to fix the graphical glitches in the Japanese + version of "Ys"; however, the quirk will only be emulated when the "sms.territory" setting is set to "domestic". + +November 28, 2011: + Replaced the various .pixshader ip* settings with "autoip" and "autoipsharper", and rewrote + the underlying "sharper" interpolation algorithm to produce more visually-pleasing results. There is some loss of + potential functionality with this change, but hopefully the gained functionality will greatly offset the loss in + practice. + +November 25, 2011: + SMS: Reduced FM volume to prevent some kind of overflow clicking in Blip_Buffer(TODO: investigate where + exactly it was happening). + +November 17, 2011: + Fixed some code causing compiler warnings in: + psx/dis.cpp + pcfx/king.cpp + pcfx/fxscsi.cpp + pce_fast/vdc.cpp + pce/vce_sync.inc + nes/boards/emu2413.cpp + nes/ntsc/nes_ntsc.cpp + md/debug.cpp + md/cd/cdc_cdd.cpp + +November 15, 2011: + Fixed the broken scanline effect when the screen is rotated when using the OpenGL video output driver. + +November 13, 2011: + Genesis: Fixed left/right gamepad default key assignments, they were backwards for some reason. + + Changed the default values for .xres and .yres to "0", which will cause Mednafen to use + the same resolution as the desktop video mode. + + Changed the default values for .xscalefs and .yscalefs to "1", and changed the default value + for .stretch from "0"(disabled) to "aspect_mult2". + + Revamped the quick help(via F1) screen, removing the annoying partial opacity and changing colors and layout + slightly. + + Remapped the screen rotation button from "F8" to "ALT + O", enabled screen rotation for all emulated systems, + and renamed the "command.rotatescreen" setting to "command.rotate_screen". + +November 12, 2011: + Began adding support for emulated analog buttons/axes to the core and driver code(to be used in the future + for additional PSX input device support). + +November 11, 2011: + Implemented a workaround for compiling the unzip code with Gentoo's messed up zlib header files. + +November 10, 2011: + NES: Corrected multiple problems with mouse coordinate translation for Zapper, Space Shadow Gun, Oeka Kids Tablet, + and Arkanoid controller emulation, especially with non-default video settings. + +November 9, 2011: + Altered "video.glvsync" semantics slightly, such that a setting of "0"(vsync disabled) will override video card + system driver settings in the same way that a setting of "1" will. (In short, it makes disabling vsync via this + setting more reliable) + +November 8, 2011: + Added new video stretch modes "aspect_int" and "aspect_mult2". + + WonderSwan: Implemented experimental setting "wswan.language"; it's only known to affect one game. + +November 7, 2011: + PSX: Made SPU execution slaved to the CDC, to prevent potential edge-case synchronization issues for audio streaming. + + PSX: Implemented rudimentary CD-XA playback. + + PSX: Implemented GetLocL CD command. + +October 30, 2011: + PSX: Implemented more of MDEC, to the point where the video in FMV sequences is working to a degree. + +October 27, 2011: + NES: Improved iNES mapper 69 expansion sound emulation accuracy(volume interpretation and channel frequencies + were off). + +October 26, 2011: + PSX: Fixed a bug that caused crashing when emulator sound output was disabled. + + PSX: Fixed missing initialization of a local variable in a GTE emulation function(very curiously, gcc 4.4 optimized it + as if it were initialized to zero, and didn't even print a warning about an uninitialized variable being used, but + the lack of initialization DID cause a warning and broke the code with gcc 4.6). + +October 25, 2011: + PSX: More GTE fixes. + +October 19, 2011: + PSX: Altered GPU triangle rendering to fix the little problem of + invisible walls in "Doom". + +October 18, 2011: + PSX: Corrected GTE MVMA when mx is 3(it has very strange behavior). + +October 17, 2011: + PSX: Improved CPU branch delay slot emulation, fixes a few graphical glitches in "Threads of Fate". + + PSX: Improved GTE flag emulation, and support for MVMA with the far color vector. + +October 15, 2011: + Fixed a bug that caused crackling and increased CPU usage when using certain non-integer fast/slow-forward speed + multipliers. + +October 13, 2011: + GBA: Added GSF-related file extensions to known file extensions list. + + PSX: Added PSF-related file extensions to known file extensions list. + + PSX: Disabled memory card emulation when a PSF is loaded. + +October 12, 2011: + CDPLAY, SNES, PSX: Changed several large statically-allocated arrays to be dynamically-allocated to reduce + memory usage when those emulation modules aren't being used. + + Increased the maximum supported sound output rate to 1048576 Hz, JUST BECAUSE. + + GB: Fixed loading of custom per-game palettes. + +October 10, 2011: + Changed setting and code constraints to increase the maximum supported sound output rate from 48KHz to 192KHz. + + NES: Altered the resampler to work for output rates higher than 48KHz. + + Modified Blip_Buffer to use 64-bit types for time-keeping and calculation instead of 32-bit, and extended + the precision of the fractional component of the output-to-input rate ratio from 20 bits to 32-bits. This + change to 64-bit types also has the effect for allowing for very large buffer sizes with very high + output rates. However, if you're using a custom video mode with a refresh rate tuned to minimize juddering + and frameskipping, you will need to adjust/recalculate those modes for all emulation modules + *other* than "nes", "psx", and "snes". + +October 8, 2011: + NES: Fixed a bug in the MMC5 split-screen emulation that caused a garbage scanline in the intro sequence + of "Uchuu Keibitai SDF". + + NES: Fixed MMC5 32K PRG switching mode. + +September 29, 2011: + Fixed a file descriptor leak in the gzip loading code, and removed usage of dup(). + + Maximum ROM image size is now enforced in the gzip loading code. + +September 25, 2011: + GBA: Fixed an endian-related bug in the sound emulation code. + +September 22, 2011: + Changed an erroneous memcpy() of an object to an assignment in the MDFN_Surface constructor. + + SMS: Removed an unecessary memset() that sometimes tried to memset() a NULL pointer. + +September 5, 2011: + PSX: Changed coordinate precision in the GPU sprite drawing code so that the level in "Skullmonkeys" + doesn't disappear when your character goes far enough to the right. + +September 4, 2011: + PSX: Added memory card support. + + PSX: Reworked SIO(for front ports) code, fixes problems with controllers acting totally wonky on some games. + +August 29, 2011: + NES: Fixed potential(in ports) memory leaks in the Game Genie emulation code. + +August 28, 2011: + PCE, PCE_FAST: Fixed an Arcade Card emulation bug that made Garou Densetsu 2 virtually unplayably difficult. + +August 25, 2011: + Added a "close()" method to FileWrapper, and modified the QuickTime and WAV recording code to make use of it. + +August 24, 2011: + GBA: Encapsulated in a namespace. + + GB: Encapsulated in a namespace. + + GB: Added a few minor missing variables to save states. + + PCE, PCE_FAST, PC-FX: Fixed potential memory leak(in ports) in the SCSI CD emulation code. + + NES: Fixed potential memory leaks(in ports) in the FDS and PPU emulation code. + +August 23, 2011: + PC-FX: Fixed a potential memory leak in the RAINBOW emulation code, again currently only relevant to ports of Mednafen. + + Refactored and reorganized physical CD and image reading code, and moved utility-type functions, types, and + enums into their own namespace, with somewhat more consistent naming, and removal of redundant functions and macros. + + Fixed a crash when "cdrom.lec_eval" is "0" and a physical data CD is loaded. + + Fixed potential(in ports of Mednafen) memory leaks in the CD-ROM emulation code. + +August 20, 2011: + PCE, PCE_FAST: Fixed potential memory leaks(in ports of Mednafen, not Mednafen as-is) in HES player code. + +August 18, 2011: + WonderSwan: Fixed an issue in the debugger's disassembly code that had the potential to cause the + compiler's linker to error out in certain situations. + + NGP: Fixed a memory map initialization bug(won't affect Mednafen as it is currently, but may affect ports that + load more than one game without restarting Mednafen). Thanks to raz0red for pointing it out. + +August 13, 2011: + Fixed(again) waveform Y coordinate saturation in the music player. + +-- 0.9.18-WIP: -- + +August 11, 2011: + SexyAL: Added support for reversed-byte-order(relative to CPU endianness) sample formats to the ALSA driver; this + will allow for better support for non-native soundcards(such as a little-endian sample format "PC" soundcard plugged + into an old PowerPC Mac big-endian system running Linux). + + SNES: Added support for custom palettes. + + GB: Added support for custom palettes. + +August 9, 2011: + The "P" subchannel is now simulated along with the Q subchannel in the CD read functions. This shouldn't have any + effect on emulation now, as the P subchannel data isn't used by any system emulation code in Mednafen, but it may + be used in the future. + + Improved accuracy of simulated Q subchannel data for pregap areas, in the + CD read functions. + +August 8, 2011: + Added path checks to files referenced in CUE sheets and PSF files, controlled(enabled/disabled) via the + setting "filesys.untrusted_fip_check". + + Added untested support for the "POSTGAP" directive in CUE sheets. + + Added support for specifying absolute file paths in PSF files and CUE/TOC files. + +August 7, 2011: + When loading a state, if the recorded variable/datum size is not equal to the expected size of the variable, + it will be treated as missing and not loaded. + + Removed redundant function "CDIF_GetTrackStartPositionLBA()". + + Removed mostly-redundant, and inconsistent across disc images and physical discs, functions + "cdrfile_get_track_sec_count()" and "CDIF_GetTrackSectorCount()". + + GB: Fixed coarse instruction timing and flag behavior for several instructions, based on blargg's CPU tests and + on code in the VBA-M SVN repository. + + Fixed a file descriptor leak in the save state preview code, that could cause file descriptor exhaustion + if multiple save states are used extensively in one session. Thanks to raz0red for reporting the bug. + +August 5, 2011: + SNES: Implemented RAM cheats and cheat search via the common interface. + + WonderSwan: Cart save RAM is now available to the cheat engine code(it was supposed to be before, but the code + was passing the pointer before it was initialized). + + Genesis: Updated EEPROM code to newer code from Genesis Plus GX, and fixed most of the EEPROM database entries + that were previously broken in Mednafen. + +August 4, 2011: + Genesis: Refactored and tweaked input device emulation a bit to fix input unresponsiveness issues in + "Samurai Spirits/"Samurai Shodown". + +August 3, 2011: + Genesis: Revamped 6-button gamepad emulation, and made it actually work. + +August 1, 2011: + Fixed a lack of mutex locks in the debugger's memory viewer when editing memory, that could cause crashes or wrong + behavior in certain cases. + + Began work on supporting comments in the disassembled code in the debugger. + +July 29, 2011: + Genesis: Made H-counter reading less completely wrong, but it's likely still mostly wrong(added a TODO entry + for fixing it). + + WonderSwan: Fixed(made considerably less broken at least!) debugger's fubar branch + history(it only took a few years, I guess no one used the WonderSwan debugger much :b). + +July 28, 2011: + WonderSwan: Cleaned up debugger code a bit. + + WonderSwan: Encapsulated in a namespace. + + The music player interface's waveform display will now saturate the Y coordinate to the screen boundaries + rather than forcing it to the middle of the screen(not sure why it was doing that before, doesn't make much sense). + + NES: Tweaked the audio resampling algorithms a bit to prevent degraded audio quality on high-amplitude input + samples. + + NES: Corrected audio resampler filter setup debug printfs to use more-correct labels, and added more information. + + NES: Added AltiVec support to the audio resampler. + +July 27, 2011: + Internal text renderer now truncates text with pixel granularity rather than glyph granularity. + +July 26, 2011: + NES: Reduced fb_height from 256 to 240. + + GBA: Changed "gba.bios" setting to use Mednafen's firmware path construction semantics rather than specifying a + path used directly. + + GBA: The "gba.bios" setting is now ignored when playing a GSF, fixing GSF playback with a real BIOS ROM + image is used. + +July 25, 2011: + PCE_FAST: Changed x86 inline assembly to manually push and pop rbx/ebx, rather than listing it in the clobber list, + to work around pedanticness in compilers in certain cases. + + Added a test to make sure "char" type is signed to "tests.cpp". + + Added a quick and dirty signed overflow test to "tests.cpp". + +July 18, 2011: + Lynx: ROM image headers are now read out field-by-field rather than memcpy()'ing into a packed struct. + +July 16, 2011: + Genesis: A loaded file with an extension of "md" will now be treated as a Sega Genesis/Megadrive game. + +July 8, 2011: + WonderSwan: Added "Code Segment", "Stack Segment", "Data Segment", and "Extra Segment" logical address spaces + to the debugger's memory editor. + +July 5, 2011: + Added highlighting to the instruction disassembly for the instruction that PC is pointing to, to avoid confusion + when the disassembly cursor is moved off in step mode from the current PC. + + Debugger disassembly will now be forcibly resynchronized to PC, in addition to the current disassembly cursor + address(currently, only the latter was synched). + + PCE: Revamped branch history to show the old PC in addition to the new PC, not to add an entry when a conditional + branch isn't taken, to show reset and IRQ events/"branches", and to show branch count when repeatedly branching to + the same target from the same source with no other branches in-between. These changes necessitated reducing the + number of entries in the branch history from 32 to 24. + T = timer, 1 = IRQ1, 2 = IRQ2, R = reset. + + Increased the available area for branch history display in the debugger. + + Halved the size(and number of bytes displayed) of the memory watch section in the debugger when the disassembly + list is selected(and offseted the watch address by -0x80 when the register list is selected). + +Jun 26, 2011: + Replaced the old CPU flag testing code with newer code from libavutil from ffmpeg. + + Restructured architecture detection code in configure.ac. + +Jun 19, 2011: + Fixed a minor(it's unlikely to have noticeably affected any commercial games) LFO emulation bug in the HuC6280 sound + core emulation code, reported by "mic_". + +Jun 13, 2011: + GBA: GSF playback now uses new PSF loading code developed for the PS1 emulation module. + + Changed the music player overlay to use std::string instead of C-strings. + +Jun 7, 2011: + Fixed a lack of variable initialization in the WAV recording code, which could cause WAV recordings to have an + erroneous value in a size field in the header. + +Jun 5, 2011: + PC-FX, VB: Implemented a minor CPU optimization that could cause regressions. TODO: Test games. + +Jun 2, 2011: + Changed "INLINE" #define in the SoftFloat target definition file from "extern inline" to "static inline" to resolve + issues user "mziab" reported with gcc 4.6.0. + +May 30, 2011: + NGP: Fixed the "ngp.language" setting to work properly with the non-numeric setting values("english" and "japanese") + (previously it was always Japanese language selection for both strings). + +May 28, 2011: + Genesis: Fixed a bug in the 68K emulation core that caused major problems in some games("Instruments of Power", + "The Lost Vikings", perhaps others) when running on big-endian platforms. + +May 20, 2011: + PCE: Loading Games Express CD games will now automatically load the Games Express CD Card BIOS; BIOS filename + is specified by the new "pce.gecdbios" setting, default value of "gecard.pce". + + PCE: Added Games Express CD game detection based on CRC32s for the remaining handful of games that the previous + method didn't detect. + +May 18, 2011: + Tweaked CD simulated read ahead to read farther ahead, but incrementally instead of all at once as before. + +April 28, 2011: + SNES: Fixed PAL video output size, and frame rate when using netplay. + +April 27, 2011: + SexyAL: Rewrote the channel and format conversion code, now allowing for output channel count up to 8; and, + tweaked the ALSA code to work with devices that only support > 2(but code is limited to <= 8) channels. + (The Audigy 2's "p16v" sub-device in ALSA can now be used directly by Mednafen) + +April 23, 2011: + Fixed a crash on exit when one audio file(FLAC, WAV, Vorbis, etc.) is used for multiple tracks in a CUE sheet. + +April 17, 2011: + NES, PCE: Fixed relative branch target address 16-bit wrapping in the debugger's disassembler. + + PCE: Added "SET" instruction to the debugger's disassembler(can't believe it's been missing all this time). + +April 15, 2011: + Fixed "--disable-vb" option to ./configure, thanks to Rakashazi for reporting the bug. + +April 8, 2011: + PC-FX: Fixed debugger's timer register text, and hooked up sound chip register setting in the debugger. + + PCE: Altered VDC line timing to fix raster effects in "Camp California" and "Shape Shifter". The changed way probably + still isn't right, but it's something commercial games are unlikely to rely on anyway(except in maybe those + hidden "four-screen" modes), and the previous way WAS breaking commercial games. + + PCE: Fixed a timing bug in the maximum VDC wait state calculation code(wasn't taking into account VCE-controlled + events like hsync and vsync changing state). + +April 5, 2011: + VB: Fixed register 30 state during and after *bsu instructions. Thanks to blitter for pointing the bug out + and submitting a patch. + + PCE: Improved ADPCM emulation based on more tests run on the real system. Fixes a lockup bug in "Hyper Wars". + (The changes made have the potential to cause regressions, however, if any are found please report them) + +Mar 7, 2011: + Hackish fix for problems with CUE/BIN disc images(particularly bad with multiple BIN style images) that contain + "INDEX 00" statements in the CUE sheet. (Problems ranging from incorrect Q subchannel data for the pregap + to wrong track start LBAs) + +February 12, 2011: + PC-FX, MD: Factored the deinterlacing code out of the individual emulation modules and into the core Mednafen code. + + PCE: Adjusted ADPCM emulation slightly, fixes massive A/V sync problems with "Sherlock Holmes". + +January 29, 2011: + NGP: Masked NGP BIOS syscall code properly, thanks to SANiK for pointing it out. + + MD: Changed line timings so vertical refresh rates are the same in both 256 and 320-wide modes. + + PCE: Fixed a Seiya Monogatari ADPCM-related lockup, thanks to Rakashazi for pointing the problem out. + +January 15, 2011: + Began adding PlayStation 1 emulation. + +January 5, 2011: + Fixed "volatile" placement on several pointer declarations. + +-- 0.9.16-WIP: -- + +December 31, 2010: + PCE: Re-enabled the VDC wait-state-limiting kludge, with some tweaks, to prevent hypothetical emulator crashes. + + PCE: Added a FIFO to buffer the CD subchannel data. Fixes CD+G playback, which was broken when VRAM access wait stating + was implemented. + + Adjusted a few setting descriptive texts, for the automatically-generated documentation. + +December 29, 2010: + Added setting aliases, allowing old setting names to be used in the settings file(though the new setting name + will be saved back to the setting file, not the old name) and on the command line. Currently, + settings renamed since December 15, 2010 have old setting name aliases. (Note: This of course doesn't apply to + the numerous removed settings since 0.9.15). + + Renamed settings: + frameskip -> video.frameskip + glvsync -> video.glvsync (Might want to rename this to video.opengl.vsync or video.driver.opengl.vsync in the future) + fs -> video.fs + vdriver -> video.driver + + +December 26, 2010: + Added "gama" atom to recorded QuickTime files. + + Added setting "qtrecord.vcodec", and added support for the QuickTime PNG codec. Possible values for this setting + are "raw", "cscd", and "png", with the default being "cscd". + + Added "ftyp" atom writing to the beginning of QuickTime files created. + + Class-ified PNG writing code, and fixed a bug from when the filesys.fname_* settings were added that broke + screen snapshots. + + Wrote new MS WAV file recording code to replace the old code that relied on libsndfile. This allows sound recording + to function even when Mednafen is compiled without libsndfile. + +December 25, 2010: + Fixed various problems with the QuickTime writing code. VLC and the official Apple QuickTime player can now + play the files Mednafen produces(though not necessarily the video component in the Apple QuickTime player). + + open() in the FileWrapper class is now passed with flag O_BINARY if it's defined. Fixes QT recording + on MS Windows. + + Creation and modification timestamps in QuickTime files produced are now filled with the time of recording start, + rather than being left at 0. + + Adjusted the QuickTime matrix calculation used for aspect ratio correction. + + Added settings "qtrecord.w_double_threshold" and "qtrecord.h_double_threshold". Users on slower systems, or + those who are transcoding via full-featured software after recording, may want to set these to 0. + +December 24, 2010: + + Mednafen is now compiled with largefile support enabled on 32-bit platforms(Win32 kind of included, its largefile + support is...DIFFERENT), though it is currently only necessary for QuickTime movie recording. + + Added experimental QuickTime movie recording support via the -qtrecord command-line switch. Video data + is encoded via the CamStudio codec(this may cause problems for Apple's QuickTime player software, as this + codec is typically not used in QuickTime containers AFAIK), audio data is raw. A few auxillary atoms + were left out, and may or may not need to be implemented in the future. + MPlayer, ffmpeg, and Youtube seem to be able to handle the files produced, though MPlayer has occasional + random A/V sync issues(at least for me). The version of VLC I have installed can play the video, but aspect + ratio correction and audio playback are broken. + + Removed the custom MMM-format recording and playback. + + Added lcm_width and lcm_height members to the MDFNGI struct, to aid in video recording(and perhaps other uses + in the future). + +December 19, 2010: + Added "%%" specifier to filesys.fname_* parser. + + Fixed a couple of deadlock bugs in the signal handler, though the probability of them having been encountered + during normal Mednafen use is very low. + + sigaction() will now be used instead of signal(), if available. + + Fixed strerror_r() usage(AGAIN, hopefully corectly this time) on non-glibc platforms. + +December 18, 2010: + Renamed settings: + nethost -> netplay.host + netport -> netplay.port + netpassword -> netplay.password + netlocalplayers -> netplay.localplayers + netnick -> netplay.nick + netgamekey -> netplay.gamekey + netmerge -> netplay.merge + netsmallfont -> netplay.smallfont + + Updated QuickLZ from 1.2.0 to 1.3.1. (1.4.1 seems to have some kind of a performance regression, at least how it's used in Mednafen), + and changed the default value for the "srwcompressor" setting from "minilzo" to "quicklz". + +December 17, 2010: + Renamed settings: + sounddriver -> sound.driver + sounddevice -> sound.device + soundrate -> sound.rate + soundvol -> sound.volume + soundbufsize -> sound.buffer_time + + Added filesys.fname_movie, filesys.fname_state, filesys.fname_sav, and filesys.fname_snap settings. These settings + contain a format string, and through manipulation of this format string, the previous functionality of + "dfmd5", filesys.*_samedir, and "snapname" settings can be obtained. For example, remove the "%M" specifier + to simulate setting the "dfmd5" setting to 0. Available specifiers: + + %b - Mednafen base directory (no trailing slash) + %z - Path separator + %d - Loaded file base directory("/games/nintendo/megaman.nes" -> "/games/nintendo") + %f - File base("/games/nintendo/megaman.nes" -> "megaman") + %F - Same as %f, but replaced with emulation module's short name with recognized multi-CD CD sets. + %m - MD5 hash of the currently loaded game. + %M - Empty for first evaluation per full path construction, then filled with the game's + MD5 hash(or the game set's MD5 hash ID for multi-CD CD sets) followed by a period. + %e - Loaded file extension("/games/nintendo/megaman.nes" -> ".nes") + %s - Current emulation module's short name. + %p - Special parameter(usually a number/numeric counter). + %x - Default extension for the file type the path will be used for(extension is WITHOUT the period). + %X - A merging of %p and %x(replaces the last character of %x with %p). + If the constructed path is relative, it will be appended to the Mednafen base directory and value of the + filesys.*_path settings automatically. If the constructed path is absolute, this appending will not occur. + + Removed setting dfmd5. + +December 16, 2010: + Removed the filesys.*_samedir settings, as they're largely unnecessary, can cause file corruption in certain + cases, and generally cause filesystem clutter. + + Removed the "snapname" setting(it's now hardcoded-on, effectively), and altered the snapshot naming template to + produce filenames that will be sorted correctly when in a list(IE in a file browser). + + NES: Added hashes of alternate VS SMB and VS The Goonies ROM images into the internal VS Unisystem database. + + NES: Cleaned up palette-handling code, and updated the VS System palettes. + +December 15, 2010: + NES: Added rudimentary bus conflict emulation to mapper 3, to fix corrupt graphics in Cybernoid. + + Removed the "pce.colormap", "pce_fast.colormap", "nes.cpalette", and "gba.colormap" settings. Custom palettes + will automatically be loaded if they're named "pce.pal", "pce_fast.pal", "nes.pal", and "gba.pal" respectively, + under the "palettes" directory under the Mednafen base directory. All of these systems can now use custom per-game + palettes by name a palette file as .pal or ..pal, IE "Mega Man 4.pal" or + "Mega Man 4.db45eb9413964295adb8d1da961807cc.pal". Using the form that includes the MD5 hash is preferred, to + prevent conflicts between games on different systems with the same filenames, and conflicts with the custom palette + for all games on an emulated system. + + Renamed path_snap, path_sav, path_state, path_movie, path_cheat, path_palette, path_firmware to filesys.path_*, + changed the interpretation of the path so that if the path is relative, it is relative to the Mednafen base directory, + and filled in the default values for these settings as the Mednafen default directories("sav", "mcs", "mcm", + "snaps", etc.). + + Changed the directory used for custom NES palettes from "gameinfo" to "palettes", since that was the only thing the + directory was being used for. + + Changed MDFN_Thread and MDFN_Mutex structs to forward declarations. + +December 13, 2010: + Fixed a rather insidious bug with the 64-bit little-endian decoding function(bug was due to a misunderstanding of + implicit type promotion rules). This fixes some (potential) issues with MMM playback, and RTC clock corruption + when loading the GameBoy MBC3 mapper's RTC data from a sav file. + + Added MasterClock and MasterCycles fields to the MMM format. This change is incompatible with previously-recorded + MMM movies. + + Added MasterCycles setting on the remaining systems. + +December 12, 2010: + PCE: Implemented mid-frame synching and input updating(at this point, it only happens twice per frame, IE only once + "in the middle"), although it can be extended to more points very easily in the future if the need should arise. + This should reduce input latency by up to 8ms in cases not improved by the previous change(below), + and allows "Takeda Shingen" to be playable. Mid-frame sync required a lot of code refactoring and kludging, Mednafen + was definitely not designed nor written with this feature in mind, so it's possible some things may be broken now + when using the PCE module/emulation; for example, rewinding while movie recording is active might corrupt the movie. + Also, mid-frame syncing isn't done while netplay is active, so "Takeda Shingen" will remain unplayable in netplay. + + PCE: Altered frame end timing slightly to reduce input lag on some games by 1 frame. + + SNES: Reduced input latency by 1 frame(~16.67ms). + + If the MEDNAFEN_HOME environment variable is either unset or empty, and the HOME environment variable is unset, + and getuid() and getpwuid() are available, the home directory used in consructing Mednafen's base directory will now be + obtained from the system password file via getpwuid(). + + Rewrote most of the speed throttling and frameskip determination code to be cleaner, and made a few minor tweaks + to the algorithms. + +December 9, 2010: + Being in the input configuration process will now disable all emulated device input during the process, and until 300ms + after it ends. + +December 8, 2010: + PCE: Rewrote the HES VDC initialization HuC6280 assembly code to work correctly with the new VDC emulation + accuracy improvements. + + Fixed a bug that would prevent exiting if physical CD-ROM reading hung, and the exit key was assigned + to a joystick button or a mouse button. + + Fixed an old kludge/bug that caused keyboard input latency for emulated devices(IE not command keys) to be + 1 frame(16.7 ms usually) higher than it should have been. + + PCE: Improved VRAM DMA emulation accuracy, improved wait state emulation accuracy, added kludgy emulation of a + CPU VRAM-access dead zone tied to HSYNC(fixes "Star Breaker" locking up when leaving a town), and improved VDC + horizontal timing register emulation. + +-- 0.9.15-WIP: -- + +November 12, 2010: + SNES: Reworked a floating-point compare to work correctly with x87 FPU math on gcc(and probably most 32-bit x86 + compilers). TODO: Audit code to find and correct any other instances of similar problematic floating-point code. + +November 11, 2010: + MasterCycles field of EmulateSpecStruct is now assigned in more emulated systems. + +November 10, 2010: + Genesis: Converted the "md.region" and "md.reported_region" settings to enum types, to allow for automatic document + generation for the various values for these settings. + + Genesis: Fixed various issues that were preventing emulation from working properly on big-endian systems. + + SNES: Updated the PowerPC code in libco with "blargg_libco_ppc64-5". + +November 9, 2010: + VB: Fixed an endian-related bug with joystick input state decoding. + + VB: Made the VIP emulation code big-endian-compatible. + + VB, PC-FX: Made the V810 core's "fast" mode work on big-endian platforms. + + Genesis: Fixed a major problem with illegal instruction handling; executing a long string of illegal instructions + will no longer lock up Mednafen. Thanks to Zombie for pointing out the lockup problem. + +November 8, 2010: + + Fixed(hopefully) OpenGL pixel shader initialization error detection. + + Fixed "supereagle" special scaler crashing when the source surface was large. + + VB: Added setting "vb.sidebyside.separation", which controls the number of pixels between the L/R view(pixel count is + pre-scaling by xscale(fs)), with a default value of 0. Previously, the effective separation for the sidebyside + was 16, so if you want to replicate the behavior of previous versions, set this setting's value to 16. + +November 7, 2010: + NGP, SMS, NES: const-ified some const data. + + NGP, PC-FX, NES, WonderSwan: Fixed various initialization issues(they're not a problem now, but it's done for future-proofing). + + WonderSwan: Fixed internal EEPROM initialization to not persist across game loadings(this doesn't apply to Mednafen... + yet ;)). TODO: Evaluate removing persistence across power events. + + MDFND_DestroyMutex() now actually frees the memory for the mutex wrapper. + + Fixed a few initialization and deinitialization bugs in cdrom/cdromif.cpp (thanks to Rakashazi for pointing them out) + +-- 0.9.14-WIP: -- + +November 6, 2010: + Corrected the last updated dates in the auto-generated documentation files. + + VB: Uncommented out important save state code that was commented out for debugging purposes(and was accidentally left + that way). + +-- 0.9.13-WIP: -- +November 5, 2010: + PCE: The timestamp displayed in the debugger is now counted from when a virtual power off->on occurred, rather + than the start of the Mednafen video frame. However, the displayed value wrap when it reaches 2^32 due to limitations + in the debugger code(TODO: fix in the future). + + PCE: Fixed default mouse L/R button assignments(they were reversed). (You'll need to delete the Mednafen configuration + file for the new defaults to take effect, or reconfigure the mouse in Mednafen, with the correct L/R button + assignment) + + PCE: Fixed a bug that caused the debugger to corrupt Arcade Card state in certain common situations while the debugger + was open or breakpoints were enabled. + + PCE, PCE_FAST: Reworked and fixed the ADPCM code to closer match a real system(based on hardware tests). Previously, + ADPCM playback IRQ generation was sooooo wrong. These changes finally fix the broken battle voices in "Langrisser", + yay. + +October 17, 2010: + Fixed 2xSaI family filters to not crash; the 2xSaI filter source image data is now from a temporary video buffer + created from the original source video buffer, but with padding on all sides to handle 2xSaI's lack of source + video buffer coordinate bounds checking. + +October 14, 2010: + Re-disabled physical CD unreadable sector testing code, as it causes too long of a delay at startup. A + different solution will need to be found. + +October 4, 2010: + PCE: Optimized debugger PC and opcode breakpoint testing during emulation. + +October 3, 2010: + PCE: Fixed CD register reads with side effects when the debugger is open, and changed PCE_InDebug from bool to uint32, + to allow for ++/-- pairs instead of = true, = false, to handle potential recursion. + +September 30, 2010: + PCE_FAST: Fixed a emulator crash in the case that a game didn't initialize MPRs properly. + + PCE_FAST: Made a small optimization to the HuC6280 core. + + PCE_FAST: Rewrote a bit of HES playback code so it works at a lower-level, allowing the removal/privatization of some + HuC6280 state setting functions. + +September 29, 2010: + PCE_FAST: Fixed a reversed-tile issue with BG drawing on big-endian platforms(thanks to Rakashazi for pointing it out). + + PCE_FAST: Added 16bpp rendering support. + + NES: Added 16bpp rendering support. + + Added 16bpp support to MDFN_Surface and MDFN_PixelFormat. However, most internal components in Mednafen currently + can't handle 16bpp, emulation modules included. + +September 25, 2010: + Altered the text for the "sound" setting to better match what it actually does. + +September 19, 2010: + The destination blit rectangle in the video output code now has the lowermost bits of the X and Y coordinates cleared, + as a quick kludge to fix potential issues with the VB emulation's "hli" and "vli" video modes. A cleaner + solution may be prudent in the future. + + VB: Added setting "vb.liprescale". + + Optimized the "hli" video mode drawing code slightly. + +September 18, 2010: + VB: Added setting "vb.3dreverse". + + VB: Renamed "pbarrier" 3dmode to "vli". + + VB: Added 3dmode "hli". + +September 16, 2010: + When -force_module is used with an unknown/invalid system, Mednafen will print an error stating so, rather + than stating that the file format is unrecognized. If the system is recognized, but the system only supports CDs + and the file being loaded is not a CD image, a message will be printed to that effect. + +September 13, 2010: + PCE_FAST: HDS is now used in calculating the screen viewable area position, fixing the "Final Blaster" intro + sequence. + +September 12, 2010: + Fixed a significant memory leak in the video output code(the leak would increase every time fullscreen is toggled + while Mednafen is running). + + PCE_FAST: Fixed a benign(in Mednafen as it is now) memory leak. + + PCE_FAST, PCE: IsSGX variable is now explicitly initialized to 0 correctly. + + Updated the AX_CFLAGS_GCC_OPTION autoconf macro. + + PCE_FAST: Renamed various identifiers in the HuC6280 emulator code to avoid conflicting with C reserved identifier + conventions. + + PCE_FAST: Removed unused VDC debug code. + + NES: An error while attempting to open the file specified by setting "nes.cpalette" will no longer cause Mednafen + to crash. + + SCSI CD: + Refactoring and code cleanups. + + Added various command error condition checks, and corrected various error codes(NEC uses a few + nonstandard ASC values). (INCOMPLETE) + + Specific command fixes for PCE CD: + Command 0xD8: If the command is executed with the same address as when it was previously executed, + and the previous execution was < 190ms ago, then the new execution + is ignored(this occurs regardless if the previous command was ignored). This is more + of a kludge than a proper fix, and it is intended to fix the silent CD-DA problem + with "Steam Heart's". + + Specific command fixes for PC-FX: + MODE SENSE and MODE SELECT: + Added support for block descriptor(incomplete), and the DBD bit for MODE SENSE. + Added support for all the mode pages present on a PC-FX(though most don't actually do anything + in emulation yet, as I do not know their function or their function is irrelevant at the current + level of CD emulation accuracy). + + Command 0x25: Corrected returned data when PMI bit is set. + Command 0x42: Fixed the relative address returned when the address results are expressed as LBA. + Command 0xD8: Proper support for play bit. + Command 0xD9: Improved play mode evaluation, and play mode 0x1 is no longer erroneously + interpreted as loop mode(only 0x4 is). + Command 0xDD: The control/adr field is now returned in the data. + Command 0xDE: Added emulation of returned data mode 0x03(there was a dummy stub before, to get the PhotoCD + player to work). + +September 11, 2010: + Changed hqxx's sole supported pixel format to match the new OpenGL texture pixel format used(in the future, changing + its hardcoded pixel format based on an #ifdef MSB_FIRST may be warranted). + + WonderSwan: Re-enabled(and fixed) debugger's graphics viewer. + + PCE_FAST: Reduced fb_height from 256 to 242. + +September 10, 2010: + If Mednafen is running with an OpenGL implementation of OpenGL >= 1.2, and is on an x86 or x86_64 platform, + it will now upload texture data in GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV format rather than GL_RGBA GL_UNSIGNED_BYTE. + This may need to be tweaked for older video cards. Would it have killed the OpenGL developers to have + included a means of querying the fastest formats for texture uploading? + +September 8, 2010: + todo: make sure tblur works right with surface->pitch32 != gameinfo->fb_width and player + + Converted MDFNGI pitch(in bytes) to fb_width(in pixels). + + Fixes for incorrectly using MDFNGameInfo->fb_width instead of the surface's pitch: + gb + gba + lynx(was hardcoded) + nes + ngp + pce_fast(was hardcoded) + player + wswan + mmrecord.cpp + tblur.cpp + + Reduction of fb_width to minimum acceptible for the module(the driver-side can still round up to a power of 2 when + creating the MDFN_Surface, of course): + gb + gba + lynx + ngp + pce_fast(required a bit of work in vdc.cpp to eliminate non-visible-area surface rendering) + vb + wswan + + +September 5, 2010: + PC-FX: Implemented an optimization to the FX VCE layer mixing priority evaluation code, that will also allow further + optimization in the future. + +September 4, 2010: + NES: Replaced "femms" inline assembly generated when compiling for x86_64 with "emms", as not all x86_64 + processors are made by AMD. + +August 24, 2010: + PC-FX: Track numbers in READ TOC(10) are now returned in hex instead of BCD(fixes BIOS handling of discs + with a large number of tracks; no PC-FX games are like this, but it may be useful for playing audio CDs or audio + portions of PCE CD). The bug was present in 0.8.x, but due to a design decision/bug elsewhere, it didn't + cause the BIOS to be unable to play the CD-DA tracks. + +August 22, 2010: + Re-enabled raw MMC command usage for reading physical discs(it had been disabled for debugging purposes). + + PC-FX: A PhotoCD disc will now automatically be detected as being handled by the PC-FX module. + + L-EC correction code is now called external to cdromfile.cpp, and with PC-FX/PCE CD emulation, will generate + a SCSI error if it fails. + +August 20, 2010: + SNES: Applied a patch from Jonas Quinn to fix a Cx4 emulation bug. + + VB: Mednafen will no longer automatically recognize files with the ".bin" extension as Virtual Boy games, + as the extension conflicts with Sega Genesis/Megadrive. If you have any such files, they will need to be renamed + to have an extension of ".vb" or ".vboy". + + VB: Files with the extension ".vboy" are now automatically recognized as Virtual Boy games. + + VB: Altered timer emulation to fix digital sound and voice playback in "Virtual Bowling". The change has the + possibility of causing regressions with other games, but none were detected in very quick and not thorough testing. + +August 14, 2010: + Cleaned up git.h slightly. + +-- 0.9.12-WIP: -- +August 13, 2010: + Updated internal copy of "libmpcdec" library from 1.2.5 to 1.2.6. + + Updated internal copy of "trio" library to 1.14(I believe the previous version was a pull from CVS between the 1.10 + and 1.11 releases). + +August 12, 2010: + PCE_FAST: Added setting "pce.correct_aspect", default value of 1. When disabled(value of 0), no aspect correction + will take place(other than in the 10MHz dot clock mode to halve its width), and overscan color will be used to + fill in the empty space when in 5MHz/10MHz dot clock modes. + + PCE_FAST: Corrected aspect ratio when playing HES files. + + PC-FX, VB: Fixed CPU operand order for FPU subops in the disassembler. + + VB: Hooked up more debugger functionality. + + PC-FX, VB: Fixed V810 read/write breakpoints in "fast" V810 emulation mode. + +August 9, 2010: + Mednafen's now compiled with -Wempty-body and -Wignored-qualifiers. + + NES: Removed a typoed semicolon in sound.cpp. + +August 8, 2010: + Added "math.h" header order inclusion check to "types.h", and fixed a few instances of incorrect #include order. + + Fixed C68K code generator dependency when building on/for a platform that has an extension for executables(AKA MS Windows). + + Fixed a structure initialization problem in the input setting generation code that could cause crashing under + certain circumstances. + + Fixed Makefile.am to actually link against SDL(somehow it was working anyway on Linux, probably through + an indirect linkage through SDL_net). + +August 5, 2010: + Debugger settings *.debugger.disfontsize and *.debugger.memcharenc are now automatically generated, the latter based on the system's DebuggerInfoStruct. + + Renamed *.debugger.memcharset settings to *.debugger.memcharenc + + PC-FX: Added settings "pcfx.input.port1.multitap" and "pcfx.input.port2.multitap". These settings shouldn't be enabled by average users. + +August 4, 2010: + PC-FX: Added RAINBOW buffer data to save states. + + Added a variable to save states whose absence was breaking save states made in the middle of a CD-ROM transfer. + + Switched to using the internal copy of Tremor to decode Ogg Vorbis files during CD emulation preferentially over libsndfile, as libsndfile has + an unacceptably slow seek implementation for Ogg Vorbis. + +August 3, 2010: + PC-FX: Added emulation of the 2 gamepad switches. + + Fixed a bug that caused a crash if input type of "none" was selected for a virtual input port. + + Input device state is now saved in save states(missing a call before). + + Fixed mouse emulation(previously, cursor movement was totally broken). + + Disabled various debug printf statements. + + Removed "bios.fastboot" setting and the HuEXE loading code(both of which have been broken for a while). The fastboot code likely + won't return(it'd be better as an external patch to the BIOS ROM image), and the HuEXE loading may return when PIO emulation is added(requiring + the use of the PC-FXGA BIOS most likely). + +August 2, 2010: + PC-FX: Fixed the horizontal position of the VDC layers vs KING BG and RAINBOW layers when VDC is in 7MHz dot clock mode. + + PC-FX: Disabled a few unknown memory address read/write debug printf()s. + +August 1, 2010: + PC-FX: Writing 0 to D0 of KING register 0x40 while a RAINBOW transfer is in process will now abort it. Fixes background flickering in "Tonari + no Princess Rolfee". + + PC-FX, VB: Values written to system registers EIPSW, FEPSW, EIPC, and FEPC by instruction "ldsr" are now masked properly. + + PC-FX: Added emulation of the TIMER TIREQ bit. + + PC-FX: Interrupt controller level/priority register writes are now ignored unless all 7 bits in the interrupt mask register are set. This matches + tests done on a real system(done by writing the priority registers, and then reading back the values; wouldn't catch the case of there being shadow + registers, however, given that this ignoring behavior is documented in the hardware documentation, this seems highly unlikely). This *finally* fixes + the PC-FX BIOS PhotoCD player! + + PC-FX: Fixed interrupt controller register value masks. + +July 31, 2010: + PCE: Removed a (mostly benign) debug addition left in the extended SF2 mapper size calculation code. + +July 30, 2010: + NES: Removed/Disabled some debug(not debugger :b) code. + + NES: Fixed the FDS written-disk shadow copy code. Previously, the FDS loading code was updating the MD5 hash improperly, causing + the filename of the shadow copy to be different when it was written than it was when a shadow copy was to be opened. + + NES: Altered FDS IRQ emulation to fix "Druid". + + NES: Fixed a bug that caused the entire file pathname to be evaluated when determining system type, now only the filename is examined. + + NES: Added strings "(Europe)", "(Germany)", "(USA)", and "(Japan)" to the filename scanning code for system determination. + + NES: Prettified the NES filter.cpp debug printf()s a little. + + PCE: Fixed HES player screen dimensions. + + PCE: Removed debug printf on bad opcode execution. + + PCE: HES playback code now initializes the VDC horizontal and vertical timing registers before calling the song initialization routine. Interestingly, + this seems to have broken the Cosmic Fantasy IV HES, but that it even sort-of worked in the first place was probably a fluke given the quality of the rip... + + PCE: Altered HuC6270 reset code to reset the horizontal and vertical timing registers to 0(which is closer to the real system than setting them to 0xFF, but + real reset values are unknown, though they might just be 0). + + PCE: When in LFO(FM) mode, excessive playback frequency for channel 0(carrier) is handled more gracefully(but still not "correct", + as it would be too CPU intensive). + + PCE: Rolled the LFO counter into the normal channel counter. On a real system, the LFO counter(pre-divider) and the normal channel counter may be + resetable independently, however, rolling them into one shouldn't cause any audible differences and simplifies the code(and fixes a bug due to how + it was implemented before in that if the modulator channel's volume was in the audible range, the waveform would have been distorted for larger LFO pre-divider + reload values). + +July 25, 2010: + Fixed Ogg Vorbis playback when libsndfile doesn't support it(I'd accidentally inverted the ov_open() success test during the change to AudioReader()). + + PCE: PSG channel numbering in the debugger's memory editor is now from 0 instead of 1. + +July 24, 2010: + Fixed libsndfile linkage with mingw32 target(it was broken when we added --with(out)-libsndfile configure option). + +July 22, 2010: + PCE: The 2MiB of arcade card RAM is now defined as an array that's allocated along with the ArcadeCard object, rather than a pointer that's manually + allocated off the heap. + + PCE: Added support for HES files that load data into banks 0x80-0x87. + + PCE: Fixed HES controls(song increment/decrement) to not lose responsiveness if the frame is being skipped. + +July 21, 2010: + PCE: Added a setting to select the PSG revision, "pce.psgrevision". + + PCE, PCE_FAST, PC-FX: Added revision selection functionality(only supporting HuC6280 and HuC6280A revisions currently) to the PSG emulation code, and + altered the volume table slightly to mimic the PCE's actual volume reduction limits. Also, hooked up the PSG register setting code for the debugger. + +July 17, 2010: + PCE: Fixed inconsistencies in how an emulated "power toggle" affects timestamps, correcting a failed assert in the CD-ROM emulation code if the user + tries to reset/power in the debugger under certain conditions. (TODO: Make similar fixes to PC-FX emulation code) + + PCE, PCE_FAST, PC-FX: Revamped and refactored PCE PSG core code to implement new details obtained through tests on a real SuperGrafx(HuC6280A) + and on a PC Engine(HuC6280). However, the emulation is closer to the HuC6280A revision. It may be necessary in the future to run tests on a PC-FX + to determine what differences, if any, are in its PSG core vs the HuC6280A's sound core. + +July 10, 2010: + PC-FX, PCE: SCSI CD-ROM emulation code cleanup and minor tweaks. + +July 7, 2010: + PCE: Improved mouse emulation greatly; previously, emulation of two buttons was missing. The two newly-emulated buttons "Select" and "Run" are mapped to + keyboard keys "Tab" and "Enter" by default. However, the L/R mapping may be backwards, and there are still problems with using the mouse with at least + one game("Lemmings"). + +July 5, 2010: + Fixed a temporal blur code bug that was causing an unblurred section of the screen on PCE games. + + Renamed the .vblur* settings to .tblur* (for temporal blur) to reduce confusion. + +July 3, 2010: + PCE: Adjusted DMA timing again to fix an extremely long delay at the beginning of Takeda Shingen(TODO: make sure the delay doesn't exist on a real PCE). + + The core CD reading functions now always put CD-DA data in the buffer in little-endian form. + + Separated and refactored the audio format decoding code out of cdromfile.cpp into audioreader.cpp + +July 2, 2010: + PCE_FAST: Scrapped the old arcade card code in favor of the modularized code from the "pce" emulation module. + + PCE: Moved arcade_card.* to hw_misc/arcade_card/arcade_card.*, and made its save state section names more verbose. + +July 1, 2010: + PCE_FAST: Corrected the aspect ratio. + + PCE_FAST: Scrapped the old PSG code in favor of the new modularized PSG code already being used by the regular "pce" module. + +June 27, 2010: + PCE: Fixed PRAM poking in the debugger to not allow unused bits to be set. + +June 26, 2010: + GBA: Including a line containing "rtc" in the save-game "type" file(refer to the GBA module documentation) will now enable realtime clock emulation for + that game. + +June 22, 2010: + SNES: Hooked up backup memory loading. + + Fixed the "autosave" option to work instead of causing a crash on exit. + +June 21, 2010: + The IPS patch loading code now checks for file read errors, and is no longer tolerant of IPS patches that end without an "EOF" patch/chunk header. + + Removed support for automatically patching with compressed IPS patches, as it causes a problem with at least one patch that has semi-hidden + PKZIP-format data in it that was confusing the file loader. + +June 20, 2010: + SNES: Hooked up multitap and mouse input emulation code(you'll need to manually enable multitap by setting "snes.input.port2.multitap" to "1" + because it can cause problems if it's enabled by default. + + SNES: Updated to bsnes v0.59(for SA-1 and SuperFX save state support). + +June 17, 2010: + NES: Added cart WRAM to mapper 18 emulation to fix "Jajamaru Gekimaden". + + PCE: Altered VRAM-to-VRAM DMA operation to fix Ankoku Densetsu/Legendary Axe II(and without breaking Langrisser), though stage 5 in LAII/AD may still + randomly have graphics corruption in certain conditions. + +June 11, 2010: + PC-FX: Fixed a bug that caused only half of the VDC BG tiles to be displayed in the debugger's graphics viewer. + + Fixed segfault on 0-entry setting enum lists. + + Wrote some simple PHP scripts to automatically generate portions of the individual emulation module documentation based on templates and the + settings definition file produced by -dump_settings_def. + + Added a command-line option "-dump_settings_def", which will dump definition data for all possible settings in Mednafen. + +June 8, 2010: + PCE: Adjusted VDC VDW start timing to fix vibrating screen in World Court Tennis. + +June 7, 2010: + PCE: Fixed "pce.h_overscan" setting to actually work right. + + PCE: Fixed screenshot width. + +June 6, 2010: + Finally got rid of the old FSettings global, moving SndRate to SoundRate of EmulateSpecStruct. + + Video frames are now recorded before temporal blur effect is applied(rationale: external movie encoders will have a wider variety of filters, whose + quality and parameters are not constrained by being able to run in realtime). + +June 5, 2010: + CDPLAY: Fixed a crash if playback when past the last audio track, and the last audio track was not the last track of the disc. + + PCE: Added more missing data to save states. + +June 2, 2010 + PCE: Altered vblank IRQ start timing to fix occasional massively-glitchy frames in Street Fighter II. + + PCE: Fixed a bug that could cause a crash(due to an incorrect parameter to memcpy()) if trying to load a large ROM image(>= 2MiB) that was + not padded to the Street Fighter II mapper size. + + PCE: Fixed missing intialization of many VDC variables on reset. + + PCE: Added support for a hypothetical extended Street Fighter II mapper. + +June 1, 2010: + Revamped CD-ROM system determination code. + + PCE: Altered VDC BXR/BYR latch timing again to fix Seiya Monogatari, and probably breaking another game in exchange though. :/ + + PC-FX: Fixed a problem caused by V810 optimization changes that broke CD ROM emulation in save states. + + Fixed loading of game cheats when loading a CD game(PCE CD, PC-FX). + +May 31, 2010: + PCE: Added a few missing variables to save states. + +May 29, 2010: + + Fixed a bug that could cause crashing on invalid save states(or with a state variable name >= 128 chars in length). + + NES: Added a few missing sound variables to save states, and added a missing CPU state variable to save states that could cause netplay + desync(unlikely, but still possible). + + PCE_FAST: Fixed broken frameskip behavior in regards to sprite overflow IRQs(which caused netplay desyncs). + + PCE_FAST: Added missing variables to save states(whose absence caused netplay desyncs). + +May 26, 2010: + Made an optimization to the V810 emulation code in order to improve performance on RISC CPUs(TODO: Make sure this didn't break anything). + + Fixed compiling when the configure script was passed "--disable-debugger". + +May 25, 2010: + Added support for compiling without libcdio and without libsndfile, by passing --without-libcdio and --without-libsndfile to the configure script, + respectively. Compiling without either is not recommended for general use of course, but may be of use to porters(especially compiling without libcdio). + +May 23, 2010: + Lynx: Fixed a few pieces of poorly-formed(and possibly undefined) code in the UART emulation code. + + Fixed an incorrect object creation bug in cdrom/pcecd.cpp + + SMS: Fixed a couple of strict aliasing violations. + + GBA: Fixed code causing gcc to issue warnings(listed here in the ChangeLog in the case I broke something, I'll know what did it) in the BIOS emulation code. + +May 22, 2010: + Moved MDFN_Rect typedef from types.h to video.h. + + Removed an extraneous semicolon after an if statement in the V810 save state code. + + Fixed a few code constructs causing compiler warnings. + + Added various macros(to force no inlining, force arbitrary alignment, etc.) to allow for an easier time getting the code to compile on + non-gcc-compatible compilers. + +May 21, 2010: + NES: Fixed a bug that could cause Mednafen to crash if the game crashed or intentionally executed off the end of the 16-bit address space without an immediate + absolute branch afterwards. + + VB: Hooked up settings "vb.disable_parallax", "vb.default_color", "vb.anaglyph.preset", "vb.anaglyph.lcolor", "vb.anaglyph.rcolor", and "vb.input.instant_read_hack" + to a SettingChanged() notification function so that those settings can be changed during emulation runtime. "vb.cpu_emulation" and "vb.3dmode" + are not hooked up, and can not be due to current Mednafen architectural limitations(and even if those weren't present, "vb.cpu_emulation" would still + require a virtual power toggle). + +May 15, 2010: + Began work on expanding the information in the setting definition structures, so that the documentation on settings can eventually be mostly auto-generated. + + Altered the help screen accessible via command-line option "-help" to not display any settings. There are far too many settings to list all at once. + Perhaps we'll add additional command-line options in the future to list settings according to a simple filter. + +May 14, 2010: + PC-FX: Added setting "pcfx.disable_bram". Only set this to 1 if you know what you're doing, as it's enabling an illegal/broken state. + + PCE: Added setting "pce.disable_bram_cd" and "pce.disable_bram_hucard". Only set "pce.disable_bram_cd" to 1 if you know what you're doing, as it's enabling + an illegal/broken state. pce.disable_bram_hucard is more useful, as it will make HuCard game run as if they're on a plain-Jane PC Engine/TurboGrafx without + CD-style backup memory. + +May 13, 2010: + NES: Moved read/write handler installation from the Power function to the Init function for input emulation, PPU emulation, and VS Unisystem emulation. + + NES: Corrected the power-up state(values) of internal RAM. + + NES: Fixed mapper 99 emulation(hopefully, I'm unable to test it currently). + + Fixed #include order(for config.h, basically) in many files. + +May 7, 2010: + Added a new fullscreen stretch mode that preserves the aspect ratio(at least in the same way that keeping xscalefs == yscalefs does), courtesy of donb04. + +May 6, 2010: + NES: Fixed PPU rendering code to use the real pitch of the output surface, rather than the requested pitch as specified in the MDFNGameInfo struct. + This should fix garbled video with "overlay" vdriver in some circumstances. + + NES: Fixed clear color during PPU startup/reset, such that the screen will no longer be briefly green after a reset using the "overlay" vdriver. + + NES: Added a (slow) kludge so that the output image is not totally wrong when NTSC blitter is enabled while using the "overlay" vdriver. + +April 30, 2010: + Altered the strerror_r() implementation detection preprocessor code to hopefully work correctly on non-GNU platforms. + +April 29, 2010: + GBA: Fixed a small bug that totally broke GSF loading. + + PCE_FAST: Added padding to memory mapped into the HuC6280 virtual address space to avoid potential emulator crashes if a game crashes. + + VB: Implemented more of the debugger. + +April 27, 2010: + Added 2xSaI, Super 2xSai, and Super Eagle scaling filters courtesy of a code submission from "donb04". + + Fixed fatal bugs in the IPS patching code(the bugs were introduced from the refactoring of the file loading code). + + Genesis: Removed various debug calls to exit() so that games crashing should no longer cause Mednafen to crash/exit. + + Genesis: Fixed interlaced mode to not be totally broken. + +April 23, 2010: + VB: Fixed brightness calculation bug that resulted in very dark images instead of completely black images. + +April 12, 2010: + SMS: Encapsulated in a namespace. + + SMS: Added missing state to save states to fix netplay and movie desynchs. + +April 11, 2010: + VB: Null-terminated the anaglyph preset list. + +April 11, 2010: + VB: Changed nominal width in pbarrier 3dmode to 768. + + Removed stale build files. + +April 7, 2010: + Removed unused PulseAudio option from configure.ac. + + Genesis: Encapsulated more code in a namespace. + +April 6, 2010: + PCE_FAST: Changed "inc" instructions to the equivalent "add" forms in inline assembly for better performance. + +April 5, 2010: + Replaced MDFN_FastU32MemsetM8() with code that doesn't violate strict aliasing(at least when an array with 32-bit elements is passed...which + is not exactly the case in every place it's called), and with inline assembly for x86 and x86_64. + +April 4, 2010: + VB: Fixed graphics output when "vdriver" is set to "overlay", and "vb.3dmode" is set to "anaglyph". + + Fixed command-line argument "-force_module" handling. + + PC-FX: Renamed setting "pcfx.adpcm.restrict_range" to "pcfx.adpcm.emulate_buggy_codec", since it now does more than effectively restrict the range, + thanks to David Michel's analysis of an official PC-FX ADPCM encoder. + +April 3, 2010: + Settings are now sorted before being saved to disk. + + Invalid/Unknown settings are now saved back to the configuration file on exit rather than being discarded. + + PCE: Fixed input port definitions so that Tsushin Keyboard can only be enabled on input port 1(which reduces the number of input mapping settings + automatically generated by about 400). + + PCE: Multitap emulation is now automatically disabled when Tsushin Keyboard is selected on input port 1(TODO: document this fact). + + NES: Fixed a few memory leaks in filter.cpp. + +March 30, 2010: + VB: Added a hack, enabled by default, that will return the current pad state when reading from SDR, rather than the latched state, to reduce latency + by 20milliseconds in some games. Perhaps remove this option when everyone has 240Hz monitors and we don't have much emulator and PC-caused latency. ;) + + VB: Fixed input automatic reading code to read 16 bits, not 32. Stupid typos. + + VB: Changed VB_SetEvent() to take the timestamp of the next event, rather than the number of cycles until the next event. The input code was erroneously + calling it with a timestamp before this change, so this change should fix potential input lag issues. + +March 29, 2010: + Factored some cheat management function calls out of individual emulation module code. + +March 26, 2010: + Added support for "enum" setting type. + + Added support for recognizing integer settings expressed as hexadecimal, with a 0x prefix. + +March 19, 2010: + PCE: Added (untested) emulation of Arcade Card register 0x1AE5, based on information from FluBBa. + + PC-FX, VB: Fixed "DIV" and "DIVU" instruction emulation when the destination register is "r30". + +March 18, 2010: + VB: Began adding Virtual Boy emulation. + +March 17, 2010(FIXME/TODO these changelogs): + Reorganized sufficiently-abstracted chip hardware emulation into directories hw_cpu, hw_sound, and hw_video. + + PC-FX: Fixed V810system register "PIR" value. + + +March 16, 2010: + PC-FX: Scrapped the old PC-FX-specific VDC code, in favor of the new abstracted VDC code originally written for the new more accurate + PC Engine emulation. + + Removed KING KRAM mode masks(they were pretty much disabled, anyway, and only served to bloat the code). + + Moved the KRAM arrays to the end of the king_t struct, so that commonly-used variables don't require 1MB+ offsets. + + Added page setting cache pointers to speed up rainbow and DMA operations slightly. + + The V810 event handler and memory+IO read/write functions are now accessed via pointers(small speed penalty, unfortunately). + + Minor V810 optimizations. + + FINALLY fixed the ADPCM decoding algorithm for the most part(I'm still unsure about loss of precision in interpolation mode, though), + removing that ugly hack that ran a DC-bias removal filter on the ADPCM predictors themselves. However, it turns out PC-FX games + are somewhat glitchy, so the following settings have been added(implemented as hacks that can improve sound quality over that + of an actual PC-FX): + pcfx.adpcm.restrict_range (Default: Disabled) + Hack that restrict ADPCM predictor to 50% normal range. Can improve sound in some games whose ADPCM was encoded + improperly(for example, in Miraculum FMV), but will make sound worse in other games(for example, Nirgends). + + pcfx.adpcm.suppress_channel_reset_clicks (Default: Enabled) + Hack to suppress clicks caused by forced channel resets. This will MURDER those nasty clicks that occur + when games reset the ADPCM predictor values when they are off-center. It shouldn't harm anything(except in + pathological cases, and even then, only minimally), thus it is enabled by default. However, people developing + new code for the PC-FX may wish to disable it for testing their programs. + + +March 7, 2010: + PC-FX, PCE CD: Fixed SCSI commands 0xD8 and 0xD9 to work properly when passed a track value of last_track + 1(leadout in this cae). + + PC-FX: V810 event handling revamp. + +March 5, 2010: + PC-FX: Added untested V810 bitstring search instructions. + + PC-FX: Fixed the FPU precision degradation flag when an overflow exception occurred(it was never being set, even in cases where it should have). + + PC-FX: Fixed CY and S flags when an FPU overflow exception occurred(they were erroneously being set in EIPSW, due to V810_Exp() being + called before SetFlag()). + +March 4, 2010: + PC-FX: The result of an FPU operation that overflows is now written to the output register(instead of discarded). Additionally, to get the correct + value on overflows required hacking the SoftFloat code to "wrap" the exponent on overflows, instead of transforming the value into an infinity. + +March 3, 2010: + PC-FX: Fixed the value returned on reads from the "PIR" V810 system register. + + PC-FX: Fixed the exception generated when an invalid FP instruction is executed. + + PC-FX: Scrapped most of the old V810 FPU emulation code, and switched from glibc's FPU emulation code to using "SoftFloat". SoftFloat has a well-defined + interface(even if it does pollute the namespace with globals :b), documentation, and has a license that will allow the V810 code to eventually be + backported to RealityBoy. The new V810 emulation code also has much more accurate FPU flag calculation and exception handling. + +February 27, 2010: + PC-FX: Fixed TRNC.SW and CVT.SW to set the FIV flag instead of the FRO flag in the event the result is too large to fit in an integer + register. + + PC-FX: Fixed unused variable warnings in the V810 emulator. + + PC-FX: Fixed lastop variable in V810 emulation code after a bitstring instruction is executed. Fixed bitstring handling so that the emulator + won't malfunction if an unhandled/illegal bitstring instruction is executed. + + +February 15, 2010: + PCE: Reworked HES playback code to be lower-level. + + PCE_FAST: Copied more CPU state to local variables in the execution loop. + + PCE_FAST: Added a "Page1" pointer that ZP and stack accessess now go through, instead of directly to RAM(for the case the game changes + what RAM is mapped into $2000-$3FFF). Note that this doesn't have any write protection mechanism, so if a game maps in ROM and then writes to ZP + or stack, the ROM data will be trashed. FIXME. + +February 10, 2010: + PCE: Added VCE and VPC registers to the debugger. + +February 8, 2010: + PCE_FAST: Optimized the SuperGrafx VPC mixing code a bit. + +February 5, 2010: + PCE_FAST: Refactored the HuC6280 cycle counting code to reduce CPU usage, and made a simple event system to reduce CPU usage further by + factoring timer updates out of the per-instruction execution loop. + + PCE_FAST: Increased the maximum overclock value accepted to "100", for testing purposes. TODO: Decrease this to a sane value + (or not, if 100 will work correctly even with PCE CD emulation) for 0.9.0 final. + +January 27, 2010: + PCE: Removed a bit of preprocessor abuse in the HuC6280 CPU core, and altered the HuC6280 CPU core emulator to not have dependencies on the main PC Engine + emulation code. + + PCE: Fixed CPU reset while in step mode(and a few other related problems) by altering the semantics of the debugger step mode with a pending IRQ. + (TODO: This needs to be documented in detail later when my thoughts are more collected) + +January 25, 2010: + Fixed a bug that would cause the emulator to crash if any opcode breakpoints triggered when the debugger screen was disabled and no other + breakpoints were active. + +January 24, 2010: + PCE: Encapsulated HuC6280 emulation in a class, and fixed(mostly) the debugger-related code. + +January 22, 2010: + + Changed save state format to save variable/array names somewhat like PASCAL strings in the file(maximum 255 bytes per name), instead of a fixed-width + field. + + On save state loading, each of the section definition arrays are now parsed and copied into a std::map, before the data in each section is + loaded, changing variable name search algorithmic complexity in the actual loading code from O(n^2) to O(log n)(ignoring any overhead that loading + into the std::map incurs). + +January 20, 2010: + + Fixed a couple of remotely-exploitable(if connected to a malicious server) stack manipulation bugs in the network play code. + +January 18, 2010: + + PCE: Removed settings "pce.ocmultiplier" and "pce.cdspeed", as they break games and cause code obfuscation(especially the overclocking option). + They will still be available in the PCE_FAST module, though(with no plans to remove them from it). + + PCE: Fixed the SF2 bank mask value to prevent invalid memory accesses. + + PCE: Altered multitap emulation slightly to fix input in "Strip Fighter". + + PCE: Fixed a bug that was causing CPU cycles to be lost as far as the VCE is concerned due to failing to synchronize the VCE emulation before + the timestamp was reset. + + PCE: Fixed a similar bug with lost cycles in timer emulation. (TODO: Maybe refactor the forced synchronization code so that it's all in one + spot instead of scattered about). + + PCE: Reverted VDC wait states to multiples of the 7MHz CPU clock instead of the 21MHz master clock, as after thinking about it more, I highly + doubt the wait states are done with 21MHz granularity. + +January 17, 2010: + + PCE: Altered VRAM DMA so that it will only run outside of VDW(or inside if in burst mode), and only when SAT DMA is not in progress. Fixes + status bar glitches in Langrisser. + + PCE: Removed VRAM DMA running shadow variables to fix "Fushigi no Yume no Alice"(setting SOUR to the value of DMA_SOUR, LENR to the value of DMA_LENR, etc. + works too, but I prefer the solution that uses the least number of extra registers/variables; to see which way is correct, though, we would + need to try to write LENR/SOUR/DESR while VRAM DMA is in progress on a real PC Engine). + + PCE: Adjusted horizontal line timing slightly to fix a broken scanline in Aoi Blink. + + PCE: Removed various debug print statements. + + PCE: Dot clock mode changes will now reset the VCE's clock divider. This is done, in combination with + VDC wait states being in 21MHz master cycles, to synchronize the VDC with the CPU when in 7MHz dot clock(and not possibly be in an unsynchronized state + dependent on when the dot clock change occurred). This may not be what happens on the real system, but it *shouldn't* hurt anything(commercial + games at least), and it should make it easier to get scanline timing right for emulating raster effects without glitches when in 7MHz dot clock. + + PCE: VDC wait states are now done in terms of 21MHz master cycles(TODO: confirm this is how it is on a real PCE or not). + +January 16, 2010: + + PCE: Added a lot of missing VDC variables to save states. + + PCE: Adjusted horizontal line timing slightly to fix a jittery problem with Shin Megami Tensei. + +January 15, 2010: + + PCE: Fixed arcade card state loading(it wasn't saving and loading the ACRAMUsed variable, causing the actual RAM contents to not be loaded + unless the arcade card RAM was written to before the state was loaded). + + PCE: Fixed the end of VRAM DMA code to actually commit any pending reads/writes(fixes an assert() failure in Crest of Wolf). + +January 14, 2010: + PCE: Added a semi-hack to fix VRAM and screen corruption in Asuka 120%'s split-resolution screen. + +January 10, 2010: + + PCE: Mostly figured out the Tsushin Keyboard layout, and mapped the best keys on a standard western "Windows key"-style keyboard I could think of + to the emulated keyboard. It turns out the keyboard is very similar to later(?) PC-88 keyboards(I used source code from "M88 - PC8801 Series Emulator" + as a guide to some of the more exotic keys I was having trouble with). + +January 9, 2010: + + PCE_FAST: Fixed CD BIOS loader to look in the "firmware" directory with non-absolute paths. + + PCE_FAST: Changed the default setting for "pce_fast.cdbios" from a warning string to "syscard3.pce". + + PCE_FAST: Fixed CD emulation crash. + +January 8, 2010: + + Added very basic support for threading functions on the driver side(which right now are just basic wrappers around SDL's threading support). This + was done to get the SDL dependency out of the new multi-threaded CD-ROM reading code. + +January 7, 2010: + + PCE: Fixed graphics rendering to use the actual pitch of the MDFN_Surface, instead of the hard-coded requested pitch/framebuffer width in + EmulatedPCE. + + Fixed a compilation problem with MINGW in src/cdrom/lec.h + + SNES, MMPlay, PCE_FAST: Fixed sound emulation to use driver-side supplied buffer. + + PCE, PC-FX: lastts is now initialized in the PCE_PSG constructor. + + WonderSwan: EEPROM is now initialized to 0 on startup(it wasn't being initialized at all before). + + Fixed a bug in the overlay blitting code that was causing graphics corruption on some PCE games(it was essentially assuming the source width was always + a multiple of 2). This bug made apparent another bug(reading beyond the source rect width, and possibly beyond the buffer in the worst-case. FIXME.). + + Overloaded the Open() method of the MDFNFILE class to allow for passing a "std::string" type for the path argument. + + PCE: Fixed the base path used in CD BIOS loading. + + PCE: Fixed loading of CD BIOS ROM images with 512-byte headers(broken in the HuCLoadCD->HuCLoad merge). + + SNES: Fixed compilation with (at least old) mingw32. byuu will include the fix in future bsnes. + + Fixed link order of libintl and libiconv. + + Fixed the include dir for config.h in intl/Makefile.in + +January 6, 2010: + Moved the ".forcemono" setting functionality out of individual emulator modules, into the core Mednafen code. The new way will be slightly + less efficient, but only when the user changes the setting from the default of 0, and most users PROBABLY won't do this. The benefit is simplification + of sound emulation in the emulation modules. + (This definitely breaks/changes the music format player's waveform visualization, which we might want to fix in the future) + + PCE: Merged HuCLoadCD() into HuCLoad(). + + PCE, PC-FX: Abstracted the core PCE PSG code in a class. The PCE and PC-FX PSG emulation now use this class(but not pce_fast, at least not yet...). + + PCE: Fixed CD sound emulation(broken in the PCE PSG refactoring). + + PCE: Stuffed arcade card emulation into a class. + + SMS: Fixed YM2413 detection(though I'm not sure it's 100% correct, games that can use it actually do use it now). + + SMS: Fixed an output overflow bug in the YM2413 emulation code. + + SNES: 15-bit SNES RGB to the host system video format now uses a 32768-entry uint32 LUT, instead of calling the output surface's MakeColor() method + for every pixel(which was especially slow in YCbCr mode). + + SNES: Updated to BSNES v058. + +January 5, 2010: + Added a "slow-forwarding" feature. It's like FAST forwarding, but you go SLOWER. Which kind of goes without saying, but I felt like saying it anyway. + It is controlled via the new settings "sftoggle" and "sfspeed", which behave similarly to "fftoggle" and "ffspeed", except that "sfspeed" can be + set to < 1 values(the actual range is 0.25 <= value <= 1). Fast-forwarding is activated by the backslash key(I first thought about using SHIFT+BACKQUOTE, + but that would probably make Mednafen worse on foreign keyboards, and we don't need any more of that...)...though this will probably break on some + Frussiranistanadengia keyboard somewhere. + If fast-forwarding and slow-forwarding are activated simultaneously(YOU MONSTER), the fast-forwarding speed multiplier will have precedence over the + slow-forwarding multiplier. + ...and since we recently moved to resampling the audio post-emulation-module-...emulation, slow-forwarding won't bring inaudible frequencies down + to the audible frequency range(since they were already filtered out). This has both good and bad sides, but probably mostly good(so no non-tubular sounds + caused by games "silencing" sound channels by setting their playback rates extremely high will be heard). + + GB: Fixed a bug(still many left) in the external RAM handling code, fixing an + emulator crash with "Wizards & Warriors - Chapter X". (I think! TODO: confirm) + + Added support for "lurkers" on the network play server. Previous versions of Mednafen don't lack support for this per se, but there + would be cosmetic issues with status messages printed to the internal console. + + Lynx, GBA, PC-FX, MD, SMS: Fixed sound emulation to use the driver-side allocated buffer. + +January 4, 2010: + + PC-FX: Added more checks to error conditions during fast booting, and cleaned up and added a few error messages. + + MDFND_PrintError() and MDFN_Message() will now lock a mutex around access to stdout, instead of queueing the messages to be sent to stdout in the + main thread. This is what I should have done in the first place... (This change fixes, among other things, dropped status/error messages + when CD-ROM loading fails). + + SMS: Fixed video output, broken during the transition to MDFN_Surface. + +January 3, 2010: + PCE: Fixed broken Soldier Blade title screen by altering the conditions of when D6 is set(TODO: alter/rename VDC_IS_BSY). + + Finished implementing priorities for emulation modules when loading a game. The priorities are, from highest to lowest: + External_high + Internal_high (All modules but pce_fast are currently set to this) + External_low + Internal low (pce_fast is set to this) + + Added .enable settings(type boolean, default value of 1) for all emulation modules. Setting the setting for an emulation module to 0 + will cause that module to not be considered when trying to determine which module to load the game with(it will still be used if explicitly + specified via -force_module or -loadcd). + + Added TestMagic() to Lynx, NES, GG, SMS, SNES. + + Removed SetSoundVolume() from the emulation modules, it's handled in the core code now, but the emulation modules can handle it themselves + if speed is critically important. + + Removed SetSoundMultiplier() from the emulation modules, sound is now resampled in the main core if fast-forwarding is in effect. However, + there still is a provision to handle it in the emulation modules if speed is critically important. + + The sound buffer emulation modules write to is now allocated on the driver side, but Mednafen still supports the old method of having the sound + buffer allocated in emulation modules. Currently, the following modules have been converted to the new system: + GameBoy + Neo Geo Pocket + NES + WonderSwan + +January 2, 2010: + Updated the documentation to reflect the additions and changes made between 0.8.5 and 0.8.D. + + GBA: Fixed a bug that would cause data corruption and the loaded game to crash whenever a state was + saved(but the state itself, and loading it, was fine) on a big-endian platform. + + NES: Removed support for sound quality setting "-3". It's too low-quality(Solstice sounds awful) and is unlikely to give a significant % performance + boost over quality -2. + +December 31, 2009: + Replaced more instances of usage of strerror() and "%m" in format strings with usage of the ErrnoHolder class. + + Lynx: The boot ROM is now loaded through MDFNFILE instead of stdio f*(). + + PC-FX: ROM BIOS and FX-SCSI ROM are now loaded through MDFNFILE instead of stdio f*(). + + Lynx: Fixed a bug in the cart loader code that would cause a crash if the ROM bank size was larger than the actual data available in the + file(as is the case with some homebrew programs). Thanks to "Wookie" for the patch. + + GB: Fixed colors when "vdriver" is set to "overlay". + + Fixed strerror_r() usage in error.cpp/error.h + + SexyAL: Fixed a bug affecting the return value from RawCanWrite() in the ALSA driver. The returned value was typically too + small by a factor of 4. The effects of this bug included potential long periods of garbled sound + during netplay. + + Fixed the return value from RawCanWrite() in the JACK driver. It was being clamped to a value + that was too small by a factor of 4; however, the clamp value was already excessively large in a way + that this bug would should have only been triggered if the "soundbufsize" setting was excessively large. + The effects of this bug would be similar to the ALSA RawCanWrite() bug. + + The ALSA and OSS drivers will now try to set audio output to 2 channels if the source data only has 1 channel, and 16-bit signed if the + source data is 8-bit(automatic conversion is done). This is done to allow for lower period/fragment sizes, as, in ALSA's internals at least, + the minimum period sizes are expressed in bytes, not sound frames. + + The ALSA and OSS drivers will now try to set lower period/fragment sizes than previous versions of Mednafen did. With default settings, for + ALSA, the new period/fragment size is 50% of what it was before, and for OSS, 25%. Also, there's a new setting to override + the SexyAL's driver's preferred period/fragment sizes, named "sound.period_time"(default value of 0: no override). + The period/fragment size is expressed in microseconds. If the new, lower fragment sizes cause problems, the setting can be changed to "2666" + to approximate the fragment size selection in previous versions of Mednafen when using ALSA output, and "5333" when using OSS output. + + Added a workaround to the OSS driver for a bug in ALSA(and hence, ALSA's in-kernel OSS emulation) that could cause the emulator to run far + too fast for a short period of time if a buffer underflow occurred. + + The ALSA's driver's RawCanWrite() method now(finally) uses snd_pcm_avail_update() instead of snd_pcm_delay(). + This should improve performance and frameskipping behavior when the ALSA output is not routed directly to a physical device, such as the case with + PulseAudio(though PulseAudio is still not recommended :b). + + If an invalid "sounddriver" is selected, Mednafen will now print an error message and not initialize sound + instead of silently selecting the default sound driver. + + SexyAL: Altered the argument order of SexiALI_Convert() to make more sense. + + Fixed the broken conversion code used when the frame count passed to Write() is greater than 2048. + + Fixed a bug/design flaw in the SexyAL SDL sound driver that can cause a crash during program + deinitialization. + + Added support for "float" output format to the ALSA driver. + + The ALSA driver will now try all formats that SexyAL's conversion code supports if the desired + format is not supported by the output device, rather that simply erroring out as before. + + Added support for converting to 24-bit and 32-bit PCM output formats from the source format(which + is still fixed to signed 16-bit). + + The driver function RawCanWrite() is now passed a pointer to a uint32_t, which it sets to the number + of bytes that can be written without blocking, rather than returning the value directly, so that + the return value can be used as a success/failure indicator. + + The driver function RawWrite(), and the "user" function Write(), will now return 1 on success, 0 on + (fatal) error, rather than returning the amount of data written. + + The OSS driver was testing the return value of open() incorrectly. Fixed. + + SexyAL is now compiled as C++(but doesn't use many C++ features yet), which necessitated + adding several explicit casts in various code, and fixing some inconsistent function prototypes and + declarations. + + JACK: Fixed a stereo playback crashing problem(a loop count was being calculated incorrectly). + + JACK: Switched to using jack_client_open() instead of the deprecated jack_client_new(). + + JACK: The "sounddevice" setting is now used, to specify the JACK server to connect to. + + JACK: Fixed a possible race condition in RawCanWrite(). + + JACK, SDL: Changed the inter-thread ringbuffer setup to be less likely to underrun, while not hurting + latency. + + JACK, SDL: Additional playback position precision is now obtained by using + jack_get_time()/SDL_GetTicks(). This will improve Mednafen's performance with larger fragment sizes + with these drivers, but smaller fragment sizes are still preferred for latency-to-underrun-occurrence-ratio + reasons. + + Renamed the "byteorder" field of SexyAL_format to "revbyteorder", and changed it to a boolean type, + to avoid confusion over what it actually represents. + +December 30, 2009: + Altered autogen.sh to force updates(copy to Mednafen's source dir) of automake standard files. + + Added usage of the AM_SILENT_RULES macro to the autoconf script, allowing pretty compile output via: + ./configure --enable-silent-rules + or + make V=0 + + PCE: Fixed the BRAM initialization(it was wrong, and generated from when Mednafen erroneously emulated 8KiB of BRAM). + Fixes lockups in "Sorcerian". + Note that if you have any existing save states or battery-backed RAM files for "Sorcerian" in "sav" or "mcs" under + Mednafen's base directory from when you attempted to run "Sorcerian", you will need to delete them + for this fix to have any effect. + + Fixed: + joystick.cpp:141: warning: format ‘%016llx’ expects type ‘long long unsigned int’, but argument 4 has type ‘uint64’ + + +November 30, 2009: + Fixed some PC-FX interlaced compile errors(resulting from an earlier effort to fix 0-width source rect blits + + due to not verifying that the variables for the previous field contained valid data). + + Fixed a minor typo in NGPGFX_CLASS::reset() + + GB: Fixed initialization of "HRAM" on virtual power toggle/reset. + + SMS: Fixed the input and reset emulation when the territory was + set to "domestic"(Japan) and FM emulation was enabled; the emulated system was erroneously + being treated as a Game Gear in a few places when those conditions were met. + + + +November 8, 2009: + Reran ./autogen.sh, under Ubuntu 9.10 + + Reverted drivers/opengl.cpp and drivers/opengl.h to pre-PBO experimentation copies. + + Fixed incorrect(and excessively complex, old code nearby) usage of MDFNI_DispMessage() in drivers/input.cpp in + the input configuration process. + + Removed archaic and unused(but still being compiled!) files drivers/config.cpp and drivers/config.h. + + Fixed cases of file I/O return values being ignored in: + mempatcher.cpp + mmmreader.cpp (not complete) + + Fixed some strict-aliasing-conflicting code in nes/ppu/ppu.cpp, and somewhat ambiguous parentheses. + TODO: Clean it up more. + + Reverted PC-FX KING/FXVCE rendering/mixing code to pre-black-bias-optimization attempt. It was convoluting the + code too much. + + +Before(some of these changes listed below are seriously out of order from when they occurred, development was kind of chaotic and haphazard): + + Altered the netplay protocol, adding "INTEGRITY", "SERVERTEXT", and "ECHO" commands. Added "/ping" and "/integrity" commands to the netplay + text console. + + CD emulation: + Added new multi-threaded CD image and physical drive reading code, with a small readahead buffer. + This new code will also allow sector read hints to be given, which should alleviate + emulation freezes once we emulate CD seek delays in cdrom/scsicd.cpp. + + Simplified the base CD reading code, to always fetch 2352+96 bytes of data. + + Physical CD reads will now read semi-"raw" data(2352 bytes per sector regardless of sector type), + along with 96 bytes of subchannel data per sector. + + extra commands(WIP) + + requires_medium + + Added "ErrnoHolder" class, to be instantiated immediately after a function that modifies errno(passed "errno" as the constructor argument). + It holds the errno value in a safe place(so future calls to any printf or whatever functions won't change it), and it has a StrError() function, + which is essentially a wrapper that will use strerror_r(), or if not available, strerror(), and return a const char * pointer to a buffer + internal to the ErrnoHolder class. + + + PC-FX: (August 30, 2009) Fixed stupid ASC value bug in DoPAUSERESUME that broke PC-FX CDDA player + + PC-FX, PCE: (August 30, 2009) Fixed stupid CD-DA playback volume bug + + PC-FX: Fixed ADPCM IRQ handling(fixes random lockups in Sparkling Feather during the initial period of FMVs). + + NES: Changed DMC IRQ emulation to fix "Apple Town Story". + + NES: Greatly improved FDS sound emulation(thanks to Disch's document, and VirtuaNES source code). + + The framebuffer that emulation modules render to is now abstracted behind the "MDFN_Surface" class, instead of having naked pointers and + various video format global variables out the wazoo. Adding the "overlay" output driver/method necessitated this change, too. + + Added support for SDL Y'CbCr overlays(USUALLY hardware accelerated). Enabling this video output method can be achieved by setting the "vdriver" + setting to "overlay". This is a very experimental video output method, it may not work properly on all operating systems and video cards. + + Added a special case faster 5x scaler for the "SDL soft" video driver. + + Added a faster generic integer scaler for the "SDL soft" video driver. + + PCE: Added the ability to load a custom colormap(palette) by setting "pce.colormap" to the path of the colormap + file. The colormap consists of either 512 or 1024 RGB triplets, 8-bits per color component, + in the order R,G,B,R,G,B,R,G,B,... . + It is recommended that the colormap provide all 1024 entries(the first 512 entries are for normal mode, + the second 512 entries are for grayscale/strip-colorburst mode). If it doesn't, Mednafen will calculate + the grayscale colors using a formula similar to that used with the real VCE, but with more precision. + The colormap may be disabled by setting the "pce.colormap" setting to an empty string, or 0. Command-line + examples: + mednafen -pce.colormap /path/to/blueblue.cmap /yarr/pirate/booty.pce [Enable] + + mednafen -pce.colormap 0 /some/where/over/the/rainbow/islands.cue [Disable] + + Added a (convoluted) compiler bug test to tests.cpp, to guard against buggy gcc versions when + compiling with -fno-strict-overflow with optimizations enabled. + + Added "frameskip" setting to disable internal frameskip for speed testing(because we invariably forget + to disable manual frameskip disabling code changes after we're done running tests). + + Fixed a crashing problem when entering an invalid menu choice("0") in the cheat interface. Thanks to + tsenart for reporting the bug. + + Fixed several instances of mismatches between format strings and passed argument types, which could cause + nonsensical information to be printed on big-endian platforms, and perhaps some little-endian platforms as well. + + Fixed the minimum field-width specifier on the statements that print the loaded game's CRC32 in several + places. + + Added the "format(...)" function attribute to the MDFN_DispMessage(), MDFN_PrintError(), and MDFN_printf() + function prototypes to catch format string errors. + + Changed the INLINE define to always force an inline with gcc(contrast with 0.8.x, where we introduced + a new ALWAYS_INLINE in addition to INLINE). + ...and added a blip_inline that does the same for Blip_Buffer. + ...and changed various "inline" statements to INLINE and blip_inline, where appropriate. + TODO: Audit our INLINE statements to make sure we're using them only in speed-critical code and with + smallish functions. Looking at Lynx and NES code here especially... + + NES: Fixed an intialization bug in mapper 193. + + NGP: Fixed an unaligned memory access bug in the memory r/w handlers, causing crashes on platforms + that do not support unaligned memory accesses. + + Removed erroneous dependency on CD-ROM emulation when WonderSwan emulation is enabled in the configure script. + + The included Tremor is now compiled with "-fvisibility=hidden" to work around a dynamic symbol collision + problem with libsndfile(BUT, -fvisibility is only available in gcc 4.0 and newer). + This solution may not be correct... + + Updated Tremor to the latest SVN version. + + Upped the minimum playback rate to 22050 Hz, from 8192 Hz. The lower rates aren't tested very often, + and the sound resampling code works very poorly at such low rates(not to mention sound quality in general is + going to be pretty bad at such low rates anyway). + + Added sanity checks to the first track number and total track count returned from libcdio, to prevent + a crash in Mednafen if the libcdio driver fails and returns nonsensical values. + + Removed unused file sms/state.h. + + Fixed a very-old bug that caused joystick unique ID collisions if more than 2 of the same "type" of physical + joystick were available. + + Mednafen is now compiled with -fsigned-char, to prevent any potential problems on systems with an "unsigned" char + type as default. + + Reworked the setting code to use a multimap with a 32-bit key(CRC32 of the setting name) instead of a vector + that was iterated over(TODO: Sort settings written to the configuration file). + + PC-FX: Adjusted the range of the I/O map mirror access range in the memory map, and added emulation of reads from it. + + PC-FX: Refactored the KING BG drawing code, adding support for BG0 subscreen. Fixes problems with + "Angelique Special". (We'll add a simple hack/very limited subscreen code to 0.8.x to fix this problem) + + PCE, PC-FX: Fixed the emulation of SCSI command 0xDE, mode 0x1. The value returned was too small by + 2 seconds. + + PCE, PC-FX: Fixed the sector count for the last track(which influences the leadout track start position/total + sector count) in multi-track CUE/BIN CDROM images. + + PC-FX: Greatly improved the KING->RAINBOW block transfer logic(previously a hacky buggy mess). + Fixes some minor glitches in Zenki. + + Fixed several problems in file.cpp, including buggy and overly-complicated MDFN_read*le() functions, + and a problem with the const-ness of the return value of strrchr() with gcc 4.4. + + PC-FX: Fixed the exception code set when an FPU divide-by-zero occurs(previously, it was being set to the + integer divide-by-zero exception code). + + PC-FX: Fixed the handler address called when a TRAP instruction is executed. + + PC-FX: Added boolean setting "pcfx.rainbow.chromaip", default enabled, that controls whether or not + the chroma channel of the RAINBOW chip's YUV output(usually used when decoding still full-color or moving images) + should be interpolated bilinearly. Turning it off will make the output image appear blockier and slightly + less blurry, and closer to what a real PC-FX displays. For a good example of its effect, look at the scrolling + red letters in "Kishin Douji Zenki" with it on, and then with it off. + + GBA: An error loading the custom colormap file is now treated as fatal. + + Increased the maximum X scale and Y scale sanity check value from 20 to 50. + + Fixed an off-by-one error in the software SDL graphics rotation code(used for Lynx and WonderSwan). + + SexyAL: The return values of ALSA functions are now treated as errors only if they're less than 0, rather + than non-zero as before. Thanks to R.L. for pointing this out. + + The default "nethost" setting is now "fobby.net" instead of "mednafen.com". The latter was allowed to + expire and lost to domain squatters some time ago. Domain squatters cause desires to commit grievous face-stabbing. + However, the netplay server on "fobby.net" is not guaranteed to be up. :p + + Fixed the rectangle calculation for screen rotation with Lynx and WonderSwan to use X scale and Y scale + values appropriately(they were reversed before; also, assuming square pixels on your monitor ;)). + Rotation still poses a problem in fullscreen with the default settings, however. + + Added new entries to "InputDeviceInputInfoStruct" concerning rotated inputs, and removed the Lynx and WonderSwan + partially-specific rotation code in drivers/input.cpp + + WonderSwan: Fixed a bug that made it impossible to push a direction on one D-pad while the opposing direction + was being pressed on the other D-pad. + + fflush(stdout) is now called after printing status messages or errors(may be nominally slower, but should + provide more information if something goes kaka on some platforms). + TODO: Synchronous error messages and status messages from the game thread, rather than asynchronous. + + Z80(SMS, NGP, MD): Ported the following changes from the FUSE SVN repository: + Unhalt on NMI (thanks, Simon Owen). + + Changed how firmware is located. Firmware is now searched in several locations, in this order: + MEDNAFEN_BASE_PATH/firmware/SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING + MEDNAFEN_BASE_PATH/SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING (for backwards compatibility) + ...or, if SYSTEM_SPECIFIC_blahblahblah has been set to an absolute path by the user, it will only search + there. Also, the firmware path override "path_firmware" setting has been added. Note that setting "path_firmware" + to a non-default value will cause Mednafen to only try to open SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING in + that path, it won't look anywhere else. + TODO: Document all this in the primary documentation. + + Fixed a race condition that could cause rapid oscillation between fullscreen and windowed when trying to + toggle it. + ...and fixed a race condition that could cause oscillations when rotating the screen with Lynx and WonderSwan + emulation. + + Changed the name of the mednafen configuration file to "mednafen-09x.cfg", to prevent conflicts with 0.8.x + and older(when going back and forth). + + NES: Renamed the misnamed Famicom input device "Quiz King Buzzers" to the correct name, "Party Tap". + + Fixed a bug when creating an SDL source surface, whose negative effects(clipping rightmost columns) could be + triggered when the "sdl" vdriver setting was used with certain xscale and yscale settings that would + cause a 1:1 pixel copy operation. + + PCE: Altered the Street Fighter 2 autodetection code to be data-agnostic. The SF2 mapper will now be enabled for + any ROM images 2MiB and over in size. + + Fixed string constant-to-(char *) problems in drivers/cheat.cpp + + PC-FX: Fixed bugs in "Play Audio Track Index" and "Read Subchannel" MMC commands, fixing the totally broken + cinematic sequences in "Boundary Gate". There may still be bugs in these commands that don't cause any known + problems with games, so I will need to run tests on a real system. + + PCE: Fixed ST0, ST1, and ST2 instruction timings(they were too low by 1 cycle). + + (Autoconf/automake cleanups and fixes) + + NES: Fixed "Time Lord" by altering the PPU startup sequence timing. + + Netplay (New commands, WIP) + + PC-FX: Chroma keying is now disabled in the 7.16MHz dot-clock mode(the problem that making this change + caused with Nirgends before was apparently a bug in the handling of RAINBOW's non-endless scroll mode, + which was fixed during optimizations). + + PC-FX: Made various optimizations: + Altered how chip linebuffer transparencies are expressed. They are now expressed simply by the pixel + being 0(along with layer number reorganization, the layer number in the upper bits of the internal + pixel prevents a YUV-triplet of "0" erroneously being interpreted as transparent). + + Reworked the VDC layer mixing code to be simpler, and have separate optimized(if the compiler works + properly :b) versions for the 4 different VDC 240-color-mode-enable settings. + + Rewrote pieces of the RAINBOW Huffman decoder to use LUTs. + + Rewrote the RAINBOW chroma-key evaluation code on suggestion of Exophase, and added several + special-case faster versions for common simple chroma-key settings. + + PC-FX: Modified the ADPCM play back code to use linear interpolation, with respect for the enable bits + in the control register, and to use the OKI/Dialogic ADPCM decoder class originally written for + PCE CD ADPCM emulation. + + NES: Cleaned up the iNES loading code a bit, and added support for WRAM on a few mappers that nominally shouldn't + have WRAM, enabled if the battery-backed bit is set in the iNES header. Fixes "Family BASIC", and probably + a few bootleg games as well. + + Added configure script option "--enable-altivec/--disable-altivec (default: enabled)" for compiling on + PowerPC architectures where AltiVec is not supported, or causes problems. + + Fixed a call to putenv(), to pass a static character array initialized to a string constant instead of a string + constant directly. + + SMS: Removed the old unused Z80 emulator code from when SMS Plus was assimilated. + + NES: Added support for mapper 163(TODO). + + NES: Added support for mapper 241. + + PCE, PC-FX: Improved LFO emulation again, fixing vibratto effects in the intro of "Hanii in the Sky". + + Debugger: Fixed a bug in the trace log code. It would cause the emulator to lock up if the user pressed + Enter/Return in the prompt popup without any text in the input field. + + Fixed a few argument descriptions(invoked with the -help command-line switch) that weren't properly gettextized. + + TODO-itemize? Added Sega Genesis emulation: + Based on cgfm2's Genesis Plus. + Uses YM2612 emulator from Gens + Uses Stef's C68k emulator(still needs more bug fixes for "The Lost Vikings"). + Uses blargg's Sms_Apu. + Some code based on/imported from Genesis Plus GX. + + PCE: Revamped input emulation: + Individual devices(exluding multitap) are now in their own classes. + Added incomplete emulation of the Tsushin Keyboard. + Added setting "pce.input.multitap" to allow for disabling the multitap(enabled by default). + + Fixed a few deprecated const string to char* conversions in: + v810_cpuD.cpp:188: warning: deprecated conversion from string constant to ‘char*’ + romdb.cpp:21: warning: deprecated conversion from string constant to ‘char*’ + + (More driver interface changes) + + GB: Corrected a lack of address masking in most of the cart RAM emulation code. Fixes a few Chinese GameBoy + Color games. + + GBA: Fixed a buffer overflow in the ROM image loading code. + + NES: (Re?)-added support for mapper 240(it was erroneously listed in the documentation as being supported...). + + PC-FX: Several variables related to subchannel reading weren't being saved in save states. Fixed. (This fixes + save states made within the BIOS' CD-DA player) + + Changed default key assignments for d-pads on emulated input devices from WASZ style to WASD. + + Altered the save state format and file extensions. Save states made from previous versions of Mednafen will obviously be + completely incompatible with this version. (Support for older save states may be readded later...) + + Added setting "osd.state_display_time", to control the length of time, in milliseconds, the save state/movie + screen is displayed after selecting a save state or movie. + + Added a save state function to the base Z80 emulation code(since the Z80 emulation is now used in 3 places). + + Added to the global include list in mednafen.h. + + Moved the multi-byte single-variable decoding/encoding functions from endian.cpp to endian.h as inline functions. + + PC-FX: Emulated gamepad button presses weren't being decoded from the driver-side data correctly(causing problems on big-endian + platforms). Fixed. + + SMS: SMS pause and 2-player support were erroneously commented out. Fixed. + + NES: Fixed CNROM emulation initialization bug. + + PCE: Added the VDC register select register to the debugger. + + PCE: Reads from the timer count register the cycle it is set to reload after expiring will now return 0x7F. Fixes "Battle Royale". + + PCE: Rewrote arcade card emulation based on information from David Shadoff, and a tip from Exophase. The ADPCM sound effects + in Garou Densetsu II work correctly now. + + PCE: ADPCM: Combined the two dividers into one. + + Rewrote the ADPCM nybble decoder. + + Fixed an off-by-one-nybble playback bug. + + Altered how the read and write addresses are set. Fixes the Super CD version of "Tengai Makyou Ziria", and + "CD Mahjong Bishoujo Chuushinha". + + + PCE, PC-FX: Improved PSG LFO emulation. + + PC-FX: Disassembly of the "nop" instruction will no longer show the virtually meaningless operand. + + PC-FX: Fixed alignment and prettified the disassembly of LDSR and STSR instructions. + + Added boolean setting "debugger.autostepmode" that, when set to 1, will cause Mednafen to automatically start + the debugger in step mode after a game is loaded(only if Mednafen has a debugger for the emulated system, of course). + + The most recently-saved save state slot will now be colored differently when selecting a save state slot. + Increased the brightness of non-empty save state slots. + Empty save state slots are now black instead of being partially transparent. + + PCE: Fixed emulation of a few VDC vertical timing registers when in SuperGrafx mode(this change shouldn't affect the released + commercial SuperGrafx games at all, but it will fix a few graphical emulation problems when trying to play normal PCE games + in SuperGrafx mode). + + PCE: ADPCM software reset was erroneously also resetting the playback frequency. Fixed. (Fixes ADPCM voices in Gulliver Boy) + + Added magic testing functions to the MDFNGI structure. + + Added known file extensions to the MDFNGI structure. + + PC-FX: KING BG and CG offset registers are now emulated as 8-bit instead of 9-bit. This shouldn't affect emulation at + all(these registers were write-only to the game code, and the background rendering code already + effectively masked these to 8-bits when rendering), but it will fix potential confusion when using the debugger's register + viewer. + Also, did the same to the soundbox ADPCMControl register(limiting it to 6-bits, in this case). + + PC-FX: Improved the logging of the ROM font system call in the debugger, to also include the callee address and the size of the + glyph being requested. + + PCE: Fixed disassembly of the JMP $(AAAA, X) instruction. + + GBA: Fixed a startup crashing bug on big-endian platforms. + + Removed unnecessary indirection of sound buffer variables in EmulateSpecStruct. + + Changed many instances of *printf() and *scanf() to their trio equivalents. + + Changed instances of fprintf() in mempatcher.cpp to trio_fprintf() to work around major issues with pre-C99 standard C libraries. + + WonderSwan: Added rudimentary support for playing back WSR(ripped WonderSwan music) files. + + Cleaned global header files. + + NES: Replaced the old FIR+Blip_Buffer resampler with an experimental new, all-in-one, polyphase resampler, written with some code and help + from blargg. Two new settings were added to control its characteristics: + nes.soundq - An arbitrary sound quality setting, default of 0. Higher values will increase sound quality(decreasing + passband width and increasing stopband attenuation), while lower values will decrease sound quality. The maximum is 3, + and the minimum is -3. Going below sound quality -1 is not recommended + + nes.sound_rate_error - The error tolerance of the polyphase resampler's output rate versus the real output rate. + Lower values will cause the resampler's output rate to come closer to the real output rate, at + the cost of more memory usage(and possibly cache thrashing), while higher values will do the opposite. + The default is 0.00005. The range is 0.0000001(most accurate) to 0.01(least accurate, will likely + cause sound to sound out of tune). + Changing this setting is not recommended for normal usage, though it may make sense to set it + to its minimum value if you are recording Mednafen's sound output. + + The setting .scanlines now takes the opacity of scanlines directly, in percent(range 0-100), instead of the old totally-fubar + formula. + WARNING: THIS CHANGE BREAKS BACKWARDS COMPATIBILITY FOR THIS SETTING IN EXISTING CONFIGURATION FILES AND ANY FRONTENDS OR SCRIPTS. + + GBA: Cleaned up a few benign shadowed-variables. + + GBA: DMA registers were being saved as 32-bit arrays instead of 16-bit arrays in save states, potentially causing memory + corruption, and broken save states on big endian platforms. Fixed. + + Abused C++ function overloading to force the SFARRAY16, SFARRAY32, etc. macros in state.h to force a compiler error if they + are passed arrays of an unknown/invalid type. Updated GBA, Lynx, NES... to not save invalid types(usually with a typecast to + the appropriate type, for union'd types). + + Added support in state.cpp and state.h for saving/loading bool types properly. + + Removed the hackish "bool8" type. + + Changed instances of manual SFORMAT structure creation in a lot of old system emulation code to use the SF* macros instead. + + GB, GBA: Upgraded Gb_Apu and replaced Gba_Apu(a Mednafen-specific hacked-up ancient version of Gb_Apu) to a newer version + provided by blargg, that includes builtin support for GBA's legacy sound channels. This change breaks save states for GB and GBA + created in previous versions of Mednafen(though this shouldn't happen again, at least not for updates to the sound code). + + Added a "fullname" member to the MDFNGI struct. + + PCE CD, PC-FX: Fixed display of CDROM data tracks in the debugger's memory viewer(it was broken sometime between 0.8.2 and 0.8.4). + + GBA: The Load() function was returning a largeish integer, instead of 1, after successfully loading a ROM image. Fixed. + + Removed the "fb" variable from the MDFNGI struct. + + Renamed "width" and "height" in the MDFNGI struct to "nominal_width" and "nominal_height", fixed NES and PCE emulation code to set nominal_height + correctly, and modified save state code to use these variables for generating and displaying save state previews(TODO: rewrite + save state preview resize code to resize vertically when DisplayRect.h != nominal_height, though this should never occur at the moment, + it may if we add support for systems with selectable interlaced video modes). + + Removed the save state preview width variable from the MDFNGI struct. + + Added an fb_height member to the MDFNGI struct. + + Fixed header include order in the JACK audio driver. + + GB: Corrected loading/saving of MBC3 time values in save files(this will cause incompatibility with MBC3 RTC save games created in previous + versions of Mednafen, unless they were created running on a 64-bit little-endian system). + + GB: The setting "filesys.disablesavegz" will now affect GameBoy save files. + + MDFN_DumpToFile() now checks for errors in fclose(). + + Added preliminary movie(audio+video) recording support to a custom format. A secondary + +0.8.6: + PCE: Removed a statement, that was used for debugging, that broke PC Engine multiplayer support in 0.8.5. (I'm not sure + how it got there in the first place...). + +0.8.5: + + Fixed a crashing bug when loading an uncompressed file and using the automatic IPS-patching feature when mmap() is available. + + PCE, PC-FX: All SCSI CDROM commands are now logged in the debugger's log viewer(when logging is enabled, of course). + + Added group support to the debugger's log viewer. + + PC-FX: Renamed the type of BIOS ROM font calls in the debugger's log viewer from "BIOS" to "ROMFONT". + + PC-FX: BIOS filesystem syscall(for backup memory access) calls are now logged in the debugger's log viewer. + + PC-FX: Added internal backup memory and external backup memory address spaces to the debugger's memory editor. + + PC-FX: In the 263-line mode, line 262 is now reported as being during blanking time(as on a real PC-FX). Fixes the annoying transparency layer + flickering and other weird graphical glitches in Der Langrisser FX. + + Added setting "filesys.disablesavegz", to disable gzip compression when saving save states and backup memory. + (In the case of backup memory, disabling gzip compression isn't supported for GB yet) + +0.8.4: + + PC-FX: Some RAINBOW registers weren't being reset on emulated system reset. Fixed. + + PC-FX: Added dummy support for the external bus reset register. + + PC-FX: Altered the way garbage data is handled by RAINBOW to fix a graphics bug in the Tengai Makyu options screen. + + PC-FX: Reworked a large part of the KING SCSI emulation code, and parts of the CDROM device emulation code. Previously non-working-at-all games + "Battle Heat" and "Tengai Makyu" work now. + The non-anime game mode in "Tyoushin Heiki Zeroigar" works now. "Der Langrisser FX" no longer locks up if you skip the intro movie. + "Yuna FX" no longer locks up in one of the intro movies. + These changes will cause some save state incompatibilities with previous versions of Mednafen. + (Some of the SCSI changes also affect the PCE CDROM emulation, which may also result in save-state incompatibility issues, particularly if + the save state occurred during a CDROM data transfer operation.) + + PC-FX: Added setting "pcfx.cdspeed". If you want to change this, read the documentation first! + + Cleaned up the video deinitialization code slightly, and fixed a few bugs in the OpenGL deinitialization code. + + PC-FX: Reads from the dummy KING register 0x07 will now return 0xFF, per the devkit docs. + + PC-FX: Reads from KING register 0x0B will now return the "DMA end" bit in D0 set correctly(at least, according to the developer docs). + + Fixed a compilation error after running configure with --disable-nes. + + PC-FX: Reads from I/O port 0xFC0 will *now* return the current timer counter value. The switch statement mask value was wrong... + + Removed the warning in the documentation about error correction of raw data track rips, as Mednafen will now perform simple correction + using the EDC and L-EC data(since 0.8.4-rc3). This could conceivably cause problems with naive hacks/translations/patches that neglect to update + the EDC and L-EC data, so it can be disabled by setting the setting "cdrom.lec_eval" to 0. + L-EC correction is based off code from dvdisaster(http://dvdisaster.net/). + + PCE, PC-FX: Removed some debug printf()'s that were left in 0.8.4-rc3 by mistake. + +0.8.4-rc3: + + PCE: Added preliminary(it works, but the code needs to be cleaned) ADPCM support for HES rips. + + PCE: Interrupts will be enabled with a CLI after a HES' init routine is called, to fix rips that neglect to do it themselves. + + PCE: Added support for HES rips that try to write data where it really shouldn't be written(some CD-ROM game rips do this), though a warning + will be printed the first time this occurs after loading. + + PCE: Added sanity checks to the HES loader to prevent crashes if invalid data is present. + + PCE: Reads from the I/O port will now return D7 as clear when emulating a PCE CD game. + + PCE: ADPCM RAM is now reset(to 0) on emulated PCE reset. + + PCE: Sprites trying to pull tile data from $8000-FFFF of VRAM will now be invisible(probably not correct, but trying to emulate indeterminate + effects is too difficult :b). Fixes a minor sprite garbage issue in Camp California. + + PCE, PC-FX: Fixed VRAM DMA source/dest increment/decrement bits(the source and dest were flipped). Fixes a problem with Fushigi no Yume no Alice. + + Moved some code in the source root directory to appropriate subdirectories. + + Added setting .debugger.disfontsize, valid settings being "xsmall", "small"(default), "medium", and "large", to control the font + size used to draw the disassembly text. Note that there may be overlap with other parts of the debugger at font sizes larger than the default. + + Refactored a few address space and register group debugger support functions out of individual system code. + + Fixed various low-impact memory leaks. + + The version of Mednafen last run is now stored in the configuration file as a comment(this will be necessary for changes in 0.8.5 or later + that will involve proper escaping/unescaping and quoting of strings, to prevent problems with extra whitespace added by manually editing + the configuration file). + + Fixed state rewinding on big-endian machines, and removed some unnecessary operations from the state rewinding code path. + + Mednafen will now refuse to try to load ROM images larger than 64MiB, as a sanity check. + + mmap() and madvise() will now be used to load ROM images, assuming they're available(UN*X only, generally). + + Errors during automatic IPS patching are now fatal. + + Sped up loading gzip'ed ROM images. + + Removed a global variable from the NES emulation code that had invaded state.cpp. Though, this makes the error message when trying to use + save states with authentic Game Genie emulation very unhelpful... + + GBA: Added support for loading a real GBA BIOS ROM image, using the setting "gba.bios". + + GBA: Added the ability to specify the backup memory type for games by creating a file with the same name as the ROM image, + with the extension replaced with "type", in the "sav" directory under the Mednafen base directory. + Example: SexyPlumbers.gba -> SexyPlumbers.type + + One or more of the following strings(on separate lines) may appear in the file: + sram + flash + eeprom + sensor + + Additionally, the flash size can be specified by specifying the size(real size, or divided by 1024) after the type, like "flash 128" or + "flash 131072". + + PCE: Improved noise LFSR and volume emulation, thanks to cgfm2 for the detailed information. + +0.8.4-rc2: + + Added meaningful descriptions to the command.* settings. + + PC-FX: Added an experimental feature to use mmap() to create a virtual 32-bit address space to speed up V810 instruction reads. + Enable by setting "pcfx.use_mmap" to 1. Of course, it won't work on 32-bit CPUs! Please read the documentation, there are caveats! + + PC-FX: Removed some redundant logic in the KING BG 8x1 drawing functions. + + PC-FX: FX VCE and VDC port access are now emulated as 16-bit, as in the real PC-FX, instead of 8-bit. + + PC-FX: Altered the debugger's memory peek and disassembly functions to not read the emulated memory map in the 0x80000000-0xEFFFFFFF region. + (Reading those addresses can cause side effects, and this is a temporary workaround) + + PC-FX: Changed the V810 memory read handlers to read RAM faster than BIOS ROM. This will probably increase host CPU usage while in the BIOS + loading screen, but decrease it in the actual game. + + PC-FX: Altered the V810 opcode fetch logic to do 16-bit reads instead of 32-bit, fixing potential crash issues + when Mednafen is run on CPUs that don't support unaligned memory accesses. + + PC-FX: Factored-out a few address masks in the memory read and write handlers. + + PC-FX: Replaced most of the V810 signed-variable bit-size converting code that uses conditional branches to code that uses 2 shifts, + taking advantage of modern 2's-complement CPU's arithmetic right-shift capabilities. It reduces generated machine code size slightly, + and should provide a slight speed boost as well. + + PC-FX: Optimized V810 address mode decoding by removing an unnecessary conditional jump. + + Added an important warning to the documentation regarding Mednafen's ripped CD image support: + + Mednafen does *not* correct bit errors in the user data of "raw" data track rips. It is strongly recommended to use + "cooked" data track rips(2048 bytes/sector for mode 1, not counting any subchannel data) with Mednafen. + + PC-FX: Improved exception handling, and added untested emulation of the TRAP instruction. + + Debugger: Rewrote the memory load and dump functions to be faster, and also to fix a bug in the load function that would + trash memory if the user tried to load more data than the specified file contained. + + Debugger: Using the Goto function will no longer cause memory edit mode to be exited. + + Debugger: Fixed a bug that occurred when entering a prompt(goto, change charset, etc.) while in editing mode, that caused + keyboard focus to be misdirected. + + SexyAL: The ALSA driver will try to set smaller period sizes when lower playback rates are used. + + GBA: Changed the heuristics used to detect SRAM/Flash usage, though they're still not perfect...if a game tries to use flash + memory improperly, it could be detected as using SRAM instead, or silently corrupt parts of flash memory... + + GB: Fixed sound register initialization on reset, fixes missing sound in A Boy and His Blob + + GB: Slightly increased the contrast of GBC colors. + + GB: Reworked blitting of mono GB colors for future features. + + GB: Removed a redeclaration of a variable in the same scope in a function in gfx.cpp. + + Debugger: Fixed PCE VRAM breakpoints to work with block memory transfer instructions. + + Debugger: Fixed parsing of single-address breakpoints after range breakpoints. + + Mednafen will now print out SDL version information when it starts. + + (The Win32 build will now be distributed with SDL 1.2.12) + + Debugger: Fixed -/+ opacity adjustment to not be done when entering text(such as in a dialog). + + Debugger: Fixed null termination of the ASCII string buffer displayed in the memory watch section. + + PCE, PC-FX: Fixed the frequency of the highest-frequency noise generation register setting, hopefully! + + PCE, PC-FX: Changed the LFSR to 16-bit, and to use a maximized tap configuration, to make the noise sound a bit closer to a real + PC Engine's(at least, in my opinion! It still sounds slightly more bassy than a real PC Engine, but that might be due to filters + on the PC Engine's sound output...). + + Non-power-of-2-sized-textures will not be used when a pixel shader is selected and enabled, to prevent a severe graphical corruption + regression introduced in 0.8.3-beta. I'm not sure if it's a problem with Mednafen's pixel shaders or the graphics card... + + SMS: Fixed soft reset. + + SexyAL: Removed smallc.c, and modified the OSS driver to use snprintf() instead of the single function smallc.c provided. + + SexyAL: "sexyal.h" is now included before all other header files. + + SexyAL: Revamped parts of the ALSA driver to fix reported lockup issues under certain conditions. + +0.8.4-rc1: + + Added preliminary support for inputting text directly into the selected address space in the debugger's memory editor. + + Moved the temporal video blurring code in mednafen.cpp to vblur.cpp + + Added settings "filesys.snap_samedir", "filesys.sav_samedir", "filesys.state_samedir", and "filesys.movie_samedir", default 0, that when + set to 1, will read/write the respective files from/to the same directory the game was loaded from. If you want + to use these, PLEASE read the documentation first, there are caveats! + + PCE CD, PC-FX: Added support for MS WAV file offsets and lengths in TOC files. + + PCE CD, PC-FX: Fixed a bug that caused CD-DA playback to be off by one sector(the first sector specified was being skipped). + + Began work to allow settings to be temporarily overridden during netplay and movie playback. + + PCE, PC-FX: Added settings "pce.disable_softreset" and "pcfx.disable_softreset", default 0, which when set to 1 will disable + simultaneous pressing of RUN and SEL. The current implementation kind of abuses the driver-side code that disallows opposing diagonal buttons + being pressed at the same time, so if we ever change that (undocumented) feature to go with the last-pressed direction rather than + clearing both, the description of these settings in the documentation will need to be updated. + + PCE CD, PC-FX: Read operations and CD-DA playback will now be stopped when the RST signal is asserted(fixes soft reset issues on PCE CD + games). + +0.8.3-beta: + + Fixed an OpenGL function typedef in drivers/opengl.h. + + PC-FX: Writes and reads to the KING and FXVCE chips "mapped" in parts of 0xA0000000 through 0xBFFFFFFF will now go through the respective + data port write handlers, instead of directly to KRAM or palette RAM. + + If non-power-of-2-sized OpenGL textures are not available, and bilinear interpolation or a pixel shader is enabled, and the emulated + system resolution changes(such as on the PCE), two lines of black pixels will be written to the texture buffer to prevent the display + of multi-colored garbage at borders, though the right+bottom borders will still be slightly darker than they should be... + + PC-FX: Added support for VDC data port writes via writes to 0xB4000000-0xB7FFFFFF and 0xB8000000-0xBBFFFFFF in the V810's + memory map. Fixes major graphical problems in "Super Power League FX". + + Updated the srwcompressor description in mednafen.cfg. + + PC-FX: KING BG1-3 scroll registers are now emulated as 10-bit instead of 11-bit(BG0's are still 11-bit), and BG1-3 virtual + screen size is now limited to 512x512(BG0 is still 1024x1024), per the official developer documents. + + Non-power-of-2-sized OpenGL textures will now be used if the "GL_ARB_texture_non_power_of_two" extension is detected. + + Fixed a bug that sometimes would cause black screens when using the "sdl"(non-default) video driver(SDL surface per-pixel alpha blending + was enabled when it shouldn't have been). + + PCE: Fixed a line clearing bug when BG is disabled that was causing some minor graphical garbage on some games that + use multiple horizontal resolutions per frame. + + Changed some nonsensical #ifdef statements that were intended to always evaluate as false with "#if 0". + + Renamed SYSTEM_CLOCK to System_Clock in scsicd.cpp to work around a potential macro conflict on OSX. + + PC-FX: Added partial support for NEC's "scan" SCSI command, used in the BIOS' CD-DA player screen. + + PC-FX, PCE CD: Revamped parts of the subchannel emulation code. The PC-FX BIOS CD player screen's time display works now. Also, an important + note regarding cdrdao "TOC" files and "RW_RAW" subchannel data was added to the documentation. + + PC-FX: Fixed a bug in the KING BG0 scrolling+rotation code for 16-color and 4-color backgrounds with BATs that was causing graphical + corruption in the PC-FX BIOS CD player screen. + + Fixed a compilation error when --disable-debugger was passed to the configure script. + +0.8.2-beta: + + Added blargg's experimental blz compressor, for use with state rewinding(change the setting "srwcompressor" to use it). + (This was added a while back, after 0.8.1, but I forgot to document it) + + SMS,GG: Added missing default key configurations. + + PC-FX: Added untested emulation of scaling+rotation in 4-color KING BG mode. + + PC-FX: Added emulation of scaling+rotation in 16-color KING BG mode. Fixes a problem with the background in the last stage of Zenki. + + PCE: Added VRAM size constants to the beginning of vdc.cpp, and modified the code to use them, to allow a certain crazy person to compile + a custom version of Mednafen which emulates extra VDC VRAM. + + PCE: Removed 0xEB as SBC immediate in the disassembler(it was left over from the 6502 disassembler). + + Changed setting type of setting "vdriver" to a string, with possible values "opengl" and "sdl"(and "0" and "1" for backwards compatibility, + of course). + + PCE: Set the default char set in the debugger's memory viewer to shift_jis. + + PCE: Fixed a missing #include in debug.cpp. + +2007-6-17: + + PC-FX: Improved VCE<->VDC<->KING scanline timing to fix a lockup issue in Anime Freak Vol 4(polling the FX VCE raster counter register + vs VDC VBlank IRQs). Unforunately, this change has caused some 1-line graphical glitches in games that do "raster effects". This + may be solved once/if V810 emulation has accurate cycle counts, which would require emulating instruction cache and prefetch logic. -_-; + + Fixed branch traces display in the debugger, it was broken to only display half of them twice sometime since 0.8.1. + + PC-FX: Optimized RAINBOW JPEG-like decoding by using a static implementation of bit fetching functions(instead of a class). + + PC-FX: Added untested emulation of the CAXI V810 instruction. + + PC-FX: The RAINBOW transfer block count register is now emulated as being 5-bits instead of 16-bits, fixes screen issues(blue blue!) + after defeating the snake monster in Zenki. + + PC-FX: If a KING BG is set to BAT+CG mode, but is missing a BAT fetch microprogram, it will now be drawn in CG mode(previously, the BAT + data was simply being forced to 0, which was wrong). It's confirmed on a real system. Fixes missing graphics in "Tonari Princess no Rolfee". + + PC-FX: Fixed transparency testing with 16M color KING backgrounds(only 1 Y component of every 2 pixels was being checked, now + both are checked). + + PC-FX: Implemented back cellophane support. Fixes fadeouts in "Lunatic Dawn", fadeins in "Team Innocent", and screen darkening issues + during dialogue in "Last Imperial Prince"(and also exposes a bug that LIP probably has on a real system too, wherein CCR isn't reset + to black after the dialogue is over, leaving the upper and lower parts of the screen outside the play area slightly dark greenish). + The hindmost color when mixing the layers is now set to palette entry #0, except when all layers are disabled(set to black), + or front cellophane(set to black) or back cellophane(set to value in CCR) is enabled. + + PC-FX: Added emulation of the expansion backup RAM. While not particularly necessary since Mednafen already emulated backup memory + separately for each game, it does give a few extra save slots to some games(such as Miraculum ^_^). + + Added opacity control(-/+) to the debugger. + + Added an always-on zero page view to the CPU debugger for NES and PC Engine. + + Reduced the size of the game thread event queue to a somewhat saner size, and added extra buffering so that its mutex is only locked for + a minimal amount of time to eliminate the chances of deadlock with this mutex. + + GBA: Fixed a bug that caused only half of the legacy wave sound channel's sample data to be saved. + + GB: Updated to Gb_Snd_Emu 0.1.5, fixes hanging note problems on some games, and cleaned up the sound save state code. + +2007-5-30: + + Added preliminary Sega Master System and Game Gear emulation based off of SMS Plus. + + Factored the remaining state rewinding code out of the individual systems' code. + + Fixed a minor visual bug when using state rewinding(also with save states, but it's not really visible) with the NTSC blitter. + + Simplified how state rewind requests are passed to the emulation code, and fixed a small bug when using state rewinding with + frame advance(now, a rewind will only occur if the state rewind button is held down while the frame advance button is pushed). + + Changed a local variable name in selblur.cpp to fix compilation on OS/X(and maybe PPC in general?), thanks to Matt Beaumont + for pointing out the conflict with a definition in altivec.h. + + PCE: Fixed cycle counts for BRA and BSR(they were 1 too high). + + PC-FX: Reads from I/O port 0xFC0 now return the current timer counter value. + + Parameters to MDFNI_Emulate() and the internal system Emulate() functions are now passed through a structure, to allow + for easier future expansion. + + PCE, PC-FX: Fixed audio track reading from physical CDs on big-endian platforms. + + NES: Fixed a bug that caused an emulator crash if Game Genie-style cheats were enabled at the same time as authentic Game Genie + emulation was enabled. + + Added setting "srwframes", which controls the number of save states to keep when state rewinding is enabled. + + Debugger: Fixed a bug that caused a crash if a PC breakpoint was triggered while the debugger screen was disabled. + + Added an experimental logging feature to the debugger, currently only used by the PC-FX emulation code, to log CD-ROM read commands + and calls to the PC-FX BIOS' glyph bitmap address function, both of which should be quite helpful in translation work... + + PCE, PC-FX: Moved the mouse sensitivity adjustments to the driver side to fix mouse emulation with network play and movies + when using non-default pce.mouse_sensitivity/pcfx.mouse_sensitivity settings. + + Added a few more entries to the in-emulator help screen. + + PC-FX: Increased the keyport latch delay, and added emulation of the PC-FX mouse. + + PC-FX: The keyport data ready flag is now reset only on low reads from the keyport data registers. + + PCE: Fixed disassembly of the BSR instruction. + + NGP: Fixed Z80 emulation cycle counts(they were far too low), and fixed emulation of the EI delay. + + GB: Reworked various things, including Z80 interrupt and HALT emulation. GameBoy emulation will be a bit more CPU intensive now, + and save states from older versions won't work with this version(sorry!). These changes could easily break some games, but...at least + "A Boy and His Blob" works now! + + GBA: Changed the file type detection code to reduce the chance of false positives. + + PCE: Files with the extension "sgx" will now be treated as raw SuperGrafx ROM image files(AKA SuperGrafx emulation will be enabled). + + NES: Refactored the file type detection code, so that emulation data structures and memory won't be initialized unless it's + a recognized file type. + + NES: NSF(but not NSFE) game/album name, artist, and copyright strings are now trimmed of leading and trailing whitespace. + + Added MDFN_trim(), MDFN_rtrim(), and MDFN_ltrim() functions. + + WonderSwan: Fixed a buffer overflow bug in the sprite drawing code. + + GBA: Flash and SRAM save games are now stored gzip-compressed. + + PCE: Fixed raw bytes display of relative branch instructions in the disassembler. + + PC-FX: Added CD-ROM data tracks to the memory debugger/viewer, read-only, however. + + The selected character set in the memory debugger/viewer will now be saved for that emulated system when exiting. + + Fixed text search in the memory debugger/viewer(iconv() was being called before the variables passed to it were initialized, oopsie). + + Simplified the scrolling code in the memory debugger/viewer, the line containing the cursor will now always be centered vertically + on the screen. + + PCE: Fixed an ambiguous if() statement in huc.cpp in the BRAM emulation code. + + GB: Fixed a semi-ambiguous boolean math statement in the cpu emulation code. + + Fixed an ambiguous else statement in the throttling code in drivers/main.cpp + + NGP: Neo Geo Pocket emulation code is now compiled with -fno-strict-aliasing to work around issues in the TLCS-900h code. + + GBA: Removed unused ELF code. + + Fixed some implicit conversions of const char * to char *. (stupid putenv() prototype grumble mumble) + + is now included in "mednafen.h", added notes to README about system header files automatically included, + and removed inclusions of such header files in source code files that include mednafen.h(most do, and should). This change + was brought about by gcc 4.3...it may not be the best way in regards to compile-performance wise, but it is more convenient + and safer than #include'ing the system headers manually(and forgetting to >_>). + + Modified instances of "Makefile.am" to stop including the top directory in the include search path, and removed the symlink of + config.h to include/config.h, and fixed the references to "config.h" in intl/Makefile.in. + + PCE: Made hes.cpp use MDFN_de32lsb() and MDFN_de16lsb() from endian.cpp. + + PCE: Changed some instances of free() to MDFN_free(). + + GBA: Un-inlined the CPUWriteMemory() function. + + GBA: Rewrote parts of the save-game(flash, eeprom, sram) code to make more sense! EEPROM data is now stored with a file extension "eep". + + +0.8.1: + + PC-FX: Added more registers/SetRegister() support to the debugger. + + Trying to edit a register in a debugger register groups with a NULL SetRegister method will no longer crash Mednafen. + + NES: Fixed a misnamed save state variable in the FME-7 code. + + Mednafen will now be compiled with "-fno-strict-overflow" if the C compiler supports that option, for the upcoming gcc 4.2 release, + as I'm not sure this optimization is safe with Mednafen's code(it may be, but better safe than somewhat sorry!). + + PCE CD, PC-FX: Added partial support for cdrdao "TOC" files, including support for rips with subchannel data, but it must be in the "RW_RAW" + format. Ripped CD+G CDs can be played back this way in the PCE CD and PC-FX BIOS CD players. + +0.8.0-beta: + + PC-FX: Improved VDC chain/256-color mode emulation. + + PC-FX: Altered FXVCE->VDC vsync emulation. + + PC-FX: Revamped RAINBOW code, adding support for JPEG-like encoded content, thanks to David Michel's help. + + WonderSwan: Fixed a bug in the debugger(HAH) regarding the display of HBTimerPeriod and VBTimerPeriod(they were erroneously listed as 1-byte + variables, when they should've been listed as 2-byte variables, which caused the values to wrap around to the other side of the screen if they + were >= 0x100). + + GBA: Structurized free-floating various variables...there shouldn't be any regressions, aside from save state incompatibility, unless + typos were made(if so, please tell me!). + + PC-FX: Added support for scrolling/rotation in 64K color mode. + + PC-FX: The KING data structure(including KRAM) is now dynamically allocated. + + GB, GBA: The memory for the color map/filter is now dynamically allocated. + + PC-FX: Changed the size of the emulated X tile coordinate register when drawing KING BG, affecting in-range calculation when in + non-endless scroll mode. Fixes missing eyes and mouths and other craziness in cutscenes in Chip Chan Kick. + + PC-FX: Fixed playback of the last 4 samples of an ADPCM playback sequence, fixes crazy volume problems in "Team Innocent". + + PCE: VDC chip data structures(including emulated VRAM) are now dynamically allocated. + + NES: FDS and several mappers' larger data structures are now dynamically allocated. + + NES: NSF write handler info structure is now dynamically allocated, which should reduce memory usage by 1 or 2 MiB(depending on the platform) + on other games/files. + + PCE: CDROM-related memory is now dynamically allocated, which should reduce Mednafen's memory usage for non PCE-CD games + by at least 2.25MiB. + + PCE: Added untested support for the Tsushin Booster's expansion RAM + + Replaced the hard-coded file extension tests when loading from a ZIP archive in MDFN_fopen() with code that tests extensions passed as + a double-NULL-terminated(each entry is single-NULL-terminated) string to MDFN_fopen(). + + Added QuickLZ to the codebase, and added the setting "srwcompressor" to specify which compressor to use for staterewinding, + "minilzo" or "quicklz", with "minilzo" as the default. QuickLZ can be considerably faster at compression than MiniLZO, though QuickLZ is written + with x86 and x86_64 CPUs in mind, and performance will likely suffer on other platforms, and its compression ratio isn't as good + as MiniLZO(which itself isn't that great!). + + PCE: Added the settings "pce.adpcmvolume", "pce.cddavolume", and "pce.cdpsgvolume", for people who like music more than sound effects, or + vice-versa for some weirdos! ;) + + PCE: Burst mode will now be tested for when the VDC would enter the active display area. + + PCE: Altered the relative volume of CDDA vs PSG vs ADPCM with CDROM games, based on tests done on a real system. + + PCE: ADPCM no longer uses saturated addition for the current output value, instead just wrapping(like apparently occurs on a real system). + + PCE: Scrapped the old SCSI CDROM code, it now uses code that was previously PC-FX only(and was abstracted to be used for both). + The Game Express CDROM card image now works, including Game Express CD games(at least Hi-Leg Fantasy ;)). John Madden Duo CD Football + works. Steam Hearts plays stage music now. 3x3 Eyes doesn't seem to have desynchronized audio anymore during cutscenes... + + Updated libmpcdec to 1.2.5(I think it was 1.2.2 previously...). + + PC-FX: Added VRAM and FXVCE palette RAM to the debugger's memory editor. + + PCE,PC-FX: Fixed CUE+BIN pregap handling, it was totally borked before. + + PC-FX: Improved byte writes to KING I/O ports, fixes graphics problems in First Kiss Monogatari and Pia Carrot He Youkoso + + PC-FX: Changed how reads/writes from/to KING registers 0x09 and 0x0A are handled. + + PC-FX: All writes to 0x80000000-0x80000FFF are now translated to I/O port writes. + + PC-FX: Reads from "unmapped" areas in the V810's memory address space will now return 0xFF(or 0xFFFF, or 0xFFFFFFFF). + This fixes a lockup that could occur + in Power Dolls FX...the game seems to be trying to use 4MiB of RAM when there's only 2MiB of RAM in a PC-FX! + Also, while this is probably the correct value to return for unmapped areas < 16MiB, it's not correct for at least some higher addresses... + more tests are called for, but we can't just dump the entire 4GiB address space...can we? + + PC-FX: D4 of reads from KING register 0x05 will now be set if a SCSI CD interrupt is pending. + + PC-FX: Fixed READ TOC SCSI command emulation. The starting track field is no longer treated as BCD. Silly me... Fixes + "Power Dolls FX" ADPCM sounds, and probably other games that have data tracks numbered 10 or above... + + PC-FX: D0 of reads from the KING DMA status registers is now the only bit returned. + + PC-FX: D0 of writes to the KING SCSI DMA length register is now ignored. + + PC-FX: Started work on initial support for for KING's 1M KRAM chip mode...I need to run tests! + + PC-FX: Reads from KING register/port 0x05 will now return the ATN and ACK SCSI status bits. + + PC-FX: Reads from KING register/port 0x04 will now return the SCSI status bits. + + PC-FX: Changed reads to KING registers/ports 0x01, 0x02, and 0x03 to return the last values written to those registers, rather + than setting the bits returned corresponding to the current SCSI status bits. + + PC-FX: Improved keyport emulation, fixes Can Can Bunny Extra DX title-screen "lockup". + + PC-FX: Added support for negative KRAM increment values on read/write(king register 0xE). + + PC-FX: Fixed the SCSI bits returned on port $600 reads: D17 now returns SEL status, and D23 now returns RST status(instead of ATN). + + PCE: Block memory transfer instructions are now emulated at 6 cycles per byte transfered(+extra if VDC is accessed) instead of 5, to + match tests done by malducci. This does break Wonder Momo, unfortunately... + + Moved the Q-subchannel simulation code to the general CD-ROM reading interfaces, and made PC Engine CD and PC-FX CD emulation both use it. + Also, the code will now set the index data field to index 0 for pregap areas, but...this is only possible when using disc images, due + to libcdio(or CD-ROM in general) limitations. :( + Ideally, on a physical disc, we would read the Q subchannel data directly, but...I'm not sure that all drives can read and return this + data, and using libcdio's direct MMC functions results in much much more latency(probably because it bypasses the OS's caching + of CDROM data), which would require an extra CDROM reader thread, which does its own caching and prefetch, in Mednafen. Maybe later! + + PC-FX: Fixed cmpf.s emulation, fixes lockups in "Pachio Kun FX". + + PC-FX: Added a tidy structure to contain SCSI command numbers, CDB lengths, and function pointers. + + PC-FX: Added support for SCSI command 0x08(READ6), which "Mahjong Gokuu Tenjiku" uses. + + PC-FX: Removed most of the 32-bit I/O and memory read/write functions, which are now handled by calling the 16-bit functions twice. + + PC-FX: Modified the KING background rendering code to only draw to one buffer, instead of multiple buffers that are later mixed, + to improve speed slightly. + + PC-FX: The raster counter returned on reads from FX-VCE now returns correct(I hope...at least according to a simple test I did on a real PC-FX!) + values in vblank. + + PC-FX: SCDI CD interrupts on end of CD-DA track playback are now emulated. + + PC-FX: SCSI CD "Test unit ready" command now expects to receive 6 data bytes total(1+5) instead of 1. + I'm not sure if this is correct with the PC-FX, but it matches the SCSI specs, so I'll keep it this way until shown otherwise. + + PC-FX: A17 of the effective KING BG CG and BAT addresses are now fixed to the CG and BAT offset settings, respectively, during rendering. + + PC-FX: Added support for non-endless-scroll in BG0 rotation mode. Fixes the title screen flipping effect for + Last Imperial Prince. + + PC-FX: When a VDC layer has the same VCE priority as a KING BG layer, the VDC layer will now be shown on top. I don't know if this is correct... + but it does fix a problem with disappearing sprites when leaving the airship in Miraculum. + + PC-FX: Added KING BG0 scaling/rotation support, but only for 8bpp backgrounds(direct or indirect) in endless scroll mode for now... + Fixes graphics in Miraculum(yay!) and Konpeki no Kantai. + + PC-FX: Fixed direct CG mode width mask, corrects graphics bugs in "Boundary Gate" and others. + + PC-FX: Added partial microprogram emulation, fixes junk graphics in Megami Paradise II. + + PC-FX: Combined the different KING background non-endless/endless and direct/indirect rendering codepaths. This will make it + a bit slower, but much more maintainable and...changeable! + + SexyAL: Added support for sound cards that don't support interleaved stereo samples...probably. + + Changed the font glyph cache to use an array of pointers instead of 2-dimensional array. This reduces resident memory + usage considerably, even on systems with 64-bit pointers. + + Readded the old 6x13 and 12x13 fonts for future usage in the debugger. + + Fixed the documentation to list the controls for configuring virtual devices as ALT+SHIFT+1, ALT+SHIFT+2, etc. instead of ALT+1. + Oops. + + PC-FX: Made fairly invasive minor optimizations/refactoring to the cellophane code... + I *have* tested it, and hopefully it won't break anything that worked before! + + PC-FX: Fixed a clipping bug in KING BG non-endless scrolling mode in regards to X scroll wrapping. Fixes the disappearing boss problem in + Stage 2 of Tyoushin Heiki Zeroigar! + + PCE: The soft reset function(F10 key by default) no longer soft-resets the PCE, as such a button doesn't exist on a real unit, and + could cause problems with some games, so it causes a hard reset(the same as the F11 key) now. + + PCE: Added PSG registers to the debugger. + + Enclosed many strings in _() or gettext_noop() for translation purposes. + + Altered po/Makefile.in.in to pass "-N" to msgmerge, to disable fuzzy string matching. Fuzzy strings are braindead I say! + + Reworked MDFN_malloc(), it now takes a purpose, and on error, will print out the number of bytes attempted to be allocated, + the purpose of the allocation, and the file and line number in which the allocation was attempted(through macro magic!). + + PC-FX: Changed the 7.16MHz dot-clock emulation mode to use an internal layer 1024-pixels wide(the least-common multiple of the + 2 different screen resolutions that are mixed by the video chip), rather than having 2 different + layers that are merged by the video code(which causes problems on edges). This new method is much slower, unfortunately... + The overlay code that supported this in the driver code and the interfaces have also been removed, as it is not used, and will not be used. + ADDITIONALLY, a setting "pcfx.high_dotclock_width" has been added. The default is, of course, 1024, but other accepted values + are 341 and 256, though I REALLY don't recommend using 256, as it will cause dropped pixels, whereas 341 will only cause somewhat + distorted pixels horizontally. The advantage of using 341 over the default of 1024 is SPEED, and bilinear interpolation(if enabled) will + work much better as well. + + PC-FX: Fixed major problems when using more than one breakpoint of a type(read, write, etc.); it also occurred with the PCE debugger, + but only with Aux breakpoints. + + PC-FX: Fixed the VDC state restore code to properly recache all the tiles, instead of half of them! + + GB, GBA: Fixed a few duplicate and misnamed variables in the save state structures. + + PCE, PC-FX: Fixed a misnamed variable in the VDC save state structures. + + Lynx: Removed a duplicate variable in the CPU save state structure. + + PC-FX: Save states are now named so that they can be shared among CDs in recognized multi-disc sets(previously only .sav games were). + This is intended to emulate "hot-swapping" as far as the game is concerned(though you will need to exit the emulator and load the second + disc, so it isn't truly hot-swap ;)). + When a game requests you to change the disc, the procedure is: + Eject virtual disc(F8 key). + Save state. + Exit emulator. + Load emulator with second CD. + Load state. + Wait for the game to load it. :b + + PC-FX: Implemented virtual CD insert/eject, via the F8 key. + + PC-FX: Added dummy handling of SCSI command 0x01(rezero unit), Doukyusei II no longer aborts the emulator. + + PC-FX: Fixed bitstring instructions to fetch from the proper source address, fixes major graphics corruption bugs in "Anime Freak FX Vol. 4" + and probably some other games as well. + + PC-FX: Fixed RAINBOW decoding to not begin block decoding until a 0xFF is discovered in the bytestream. Fixes some graphical problems + in "Ojousama Sousama". + + PC-FX: Fixed the CD-DA playback speed calculation to match with tests I performed on my own PC-FX with a pure sine wave(interestingly, + there was some really weird frequency aliasing at +10% playback speed on a real PC-FX...). + + WonderSwan: Refactored the SRAM and external EEPROM code, and added support for larger SRAM sizes(Dicing Knight works now!). + + PCE: Extended the Sherlock Holmes 1 hack to Sherlock Holmes 2 as well. + + The address displayed in the "Cursor position" field in the memory viewer/debugger is now masked properly. + + PC-FX: Fixed the ADPCM lowpass filter rolloff frequency calculation(forgot to divide by 2!). + + PC-FX: Changed priority handling of KING background for priorities 5-7, though I don't know if the new way is correct... fixes + a graphical bug in "Power Dolls FX". + + PC-FX: The ADPCM volume control registers are now emulated as logarithmic, instead of linear. + + PC-FX: Modified 256-color VDC sprite and bg palette index calculation, to fix color problems in the 3/4 view of Ojousama Sousamou. + + PC-FX: Altered ADPCM address emulation so that the "active" play address is 17 bits instead of 18 bits, fixes problems in several + games(Anime Freak FX Vol. 1, Tenchi Muyo! FX), hopefully it doesn't cause any new ones. ;) + + PC-FX: Added support for KING bitstring writes and reads, and changed maximum BGn screen dimension setting from 0x9 to 0xA. "Boundary Gate" works + much much better now due to these changes. + + + NES: + NULL-terminated the debugger's list of MMC1 registers, which was apparently forgotten earlier. Oops. + + Added MMC3 registers to the debugger. + + Added the current scanline(read-only) to the debugger's list of registers. + +0.7.2: + + NES: Added MMC1 registers to the NES debugger. + + Various cleanups(removing dead code and header declarations). + + Added settings "vblur.accum", enables motion blur accumulation mode, and "vblur.accum.amount". + + Added setting "vblur", when enabled, will (motion) blur adjacent video frames 50/50. + + Added WonderSwan emulation, based on Cygne, but greatly improved, and with a debugger. + + Modified the time base adjustment code used when sound is disabled to fix fast-forwarding when sound is disabled. + + "Fixed" a few instances of mostly harmless variable shadowing. + + Mednafen is now compiled with -Wshadow. + + Modified the save state preview rescaling code to properly(with interpolation instead of nearest-neighbor) rescale PCE games that use the + 512pixel-width mode, or in other words... the rescaling code will now work where (fb_width / state_preview_width) <= 2 whereas previously + it only worked properly where (fb_width / state_preview_width) < 2. + + Errors saving save states are now propagated and reported. + + NGP: Files with an extension of "npc" are now also treated as Neo Geo Pocket ROM images. + + PC-FX: Added setting "pcfx.nospritelimit". + + Removed the memory dump and graphics memory dump functionality from the main debugger. The new memory editor provides the same + or higher level of functionality. + + Added a new memory editor to the debugger interface, accessible by pressing ALT + 3 in the debugger. + + PCE: Added support for reduced-bit-depth background mode. + + If the ALSA driver code is unable to set stereo or mono sound, it will try mono or stereo sound instead, respectively. + + PCE: PSG waveform RAM will now only be updated if the channel is turned off. + + glFinish() will no longer be called every frame in the OpenGL code, which should improve performance(if it causes problems, like + tearing where there wasn't any before or decreased performance, please file a bug report!). + + If the "glvsync" setting is 1(the default), and the environment variable "__GL_SYNC_TO_VBLANK" is not set at all(either 0 or any value), + then it will be set to "1". This has the effect of forcing vblank synchronization when running under Linux with + NVidia's drivers. + + Fixed configure script option "--disable-jack". + + Lynx: Screen rotation now works in non-OpenGL mode(SDL+framebuffer), sans scanlines support. + + Lynx: Screen rotation now also rotates input sanely, as it did in 0.6.x and earlier versions. + + Fixed a fatal compilation error in the ALSA driver with ALSA versions < 1.0.9. + + Fixed a fatal compilation error on GCC < 3.4 in the PC-FX code. + + Added code to detect the maximum OpenGL texture size, and reworked the OSD code to use tiled drawing if a particular OSD surface is too + large to fit in a single texture. This is particularly relevant to users of old Voodoo cards. Note that tiled drawing isn't supported for the + main game framebuffer, so video cards with severe texture size limitations will still have problems with PC Engine and PC-FX games that use + higher resolution modes. + + The help screen, debugger, and cheat search interface now use their own surfaces instead of the generic OSD surface. + + Fixed(hopefully) OSD-clearing in SDL blit mode("-vdriver 1"). + + Removed the option "doublebuf". It is kind of an archaic leftover from when Mednafen did only one blit + per frame(and had the OSD written to the game's virtual framebuffer). Double buffering must always be enabled, + or else screen corruption may occur. Also, as a note, double buffering does not imply synchronizing to vblank, though + this does occur in some situations. + ***NOTE: Please check your scripts and frontends and remove any "-doublebuf" arguments! *** + +0.7.1: + Began work on an experimental stdio interface, see drivers/remote.cpp if you are a frontend author and can read C code, though + it is disabled for now. :) + Documentation for it will be written when it is closer to completion. + + Switched to trio_snprintf() from snprintf() in the input configuration code, this should fix problems under Windows(and any + other OS with a lame snprintf() implementation) with joystick button configurations not saving properly. + + Fixed parsing of the "sounddevice" setting(it was erroneously being compared to the long, + descriptive name of the driver instead of the short name). + + PC-FX: More changes. + +0.7.0: *** Network play with this release requires Mednafen Server >= 0.3.0 *** + + PCE: Fixed a timer reload bug. + + Added the following configure script options: + --enable-debugger build with internal debugger [default=yes] + --enable-cjk-fonts build with internal CJK(Chinese, Japanese, Korean) + fonts [default=yes] + --enable-gb build with GameBoy emulation [default=yes] + --enable-gba build with GameBoy Advance emulation [default=yes] + --enable-lynx build with Atari Lynx emulation [default=yes] + --enable-nes build with Nintendo Entertainment System emulation + [default=yes] + --enable-ngp build with Neo Geo Pocket emulation [default=yes] + --enable-pce build with PC Engine(TurboGrafx 16) emulation + [default=yes] + --enable-pcfx build with PC-FX emulation [default=yes] + + Moved the save states display and info text message display to blit directly to the framebuffer, rather + than to the general OSD layer(which is now only used for cheat console and debugger). + + Reworked the network play console interface to be more...usable. It takes up much less space, is centered at the bottom of the screen, + the "t" button now activates text input, pressing "Enter" exits netplay console mode, and it will automatically pop + up(though without user input possible, unless you press "t" while it's up) for 2.5 seconds when a new message is received. + + Added support for all possible input devices to be used with network play. + + Command-line arguments can now be prefixed with either "-" or "--". + + Fixed "--help/-help" parsing from command-line. + + PC-FX: Increased emulation accuracy, most games still don't work correctly, if at all. + + PCE: Fixed VRAM->VRAM DMA when destination writes occur outside of VRAM space(they're now ignored). Fixes "Ruin - Kami no Isan". + + OpenGL page flips will now try(it doesn't seem to work with nvidia's binary driver under Linux, so use "nvidia-settings" utility instead) + to be synchronized to vertical retrace/blanking period if Mednafen is compiled against SDL >= 1.2.10, + controllable by the setting "glvsync", enabled by default. + + The "sounddriver" setting is now honored. Values you can try are "default", "oss", "alsa", "dsound", and "jack". + + Added support for JACK and ALSA sound output, ALSA sound output is now preferred over OSS. + + Mednafen will now exit properly if it receives a not-fatal signal, such as SIGTERM or SIGINT. + + NES: Fixed noise and DMC playback frequencies with PAL emulation. Thanks to blargg for the information. + + Due to internal changes, and wanting to clean up code, save states created in versions older than 0.6.0 are no longer supported(if you have any + old save states you absolutely must have, load them in 0.6.5 and save them, then load them in 0.7.0). + + Added keys to increment(though a predefined list of possible devices) the currently selected device on an + input port(CTRL+SHIFT+1 through CTRL+SHIFT+5); note that this WILL change the setting for this port saved in the configuration file. + + PCE: Added mouse support(use "-pce.input1 mouse"). To use it properly in windowed mode, you will need to press the "Scroll Lock" + key. + + PCE: Added 6-button pad support. By default, the "M" key will switch between 2-button and 6-button modes(this is necessary + because most non-supporting games will break horribly in 6-button mode, which happens on a real system as well). + + Revamped much of the internal input device handling. Important user-visible changes: + Button configuration order is slightly different, with the rapid-fire instances of buttons immediately coming + after normal instances of the buttons. + + More buttons can now be configured for rapid-fire. + + A virtually unlimited number(instead of 4 in previous versions) of physical buttons may now be assigned to a + virtual button or command. + + Input button settings are now saved in the text-format mednafen.cfg file. + + Famicom input devices that were previously not configurable, such as the Family Keyboard, now are; however, + it would be unwieldy to configure the Family Keyboard using the in-emulator configuration process, so edit + the configuration file instead. + + The NES Zapper and other devices that are emulated using the mouse can now have their buttons configured. + + The setting to manually set an input device on the Famicom expansion port has changed from "nes.fcexp" to + "nes.input5". + + Gameboy and Gameboy Advance pad button configurations are now independent of each other. + + Save states and movies can't be accessed during HES/NSF/GSF playback anymore(does this hurt anyone?). + + Button configuration hotkey functions are now mapped to ALT+SHIFT+1 through ALT+SHIFT+5(for input ports 1-5) instead of F3, F4, and various + convoluted combinations of F3 and F4 with CTRL and SHIFT. + + The NSF/HES/GSF player graphical code now all use the same resolution and video settings("player.*"). + + Replaced the internal fixed-width 6x13 and 12x13 fonts with 9x18 and 18x18 fonts, respectively, and increased the general OSD layer + size to 384x336 from 256x224(which has a side effect of allowing more detailed save state previews for NES and PCE). + The new fonts provide about 10,000 more glyphs(for a total of about 32,000 glyphs), mostly for east-Asian languages(I think this MIGHT be + slightly overkill, but, eh...*flees*). + + PCE: The timer counter was being updated one instruction too late. Fixed. (This problem probably didn't affect + any games, but it could have resulted in confusion while using the debugger.) + + Remapped the state rewind key to ALT+S, and added a new help screen triggered by pressing "F1". + + PCE: The disassembler was missing opcode 0x3A, DEC. Fixed. + + NES: A few sound variables weren't being saved in the VRC6 and FME7 sound code. Fixed. + + PCE: Fixed disassembler decoding of ZP indirect addressing mode. + + NES: Fixed unofficial opcode 0xE2 cycle timing. + +0.6.5: + + PCE: Made a small optimization to HuC6280 emulation by caching the CPU speed shift-left cycle count adjust value. + + Removed an old kludge for Win32 that worked around an SDL problem in which the window position would be off-screen when + switching from fullscreen to windowed mode, as I think the problem is fixed in SDL 1.2.10. + + Reworked the signal handling code to be included if HAVE_SIGNAL is defined instead of if WIN32 is not defined, and added #ifdefs around + each possible signal(as some platforms don't provide #define's for some signals). + + PCE: Added setting "pce.cdspeed" to set a CD-ROM data transfer speed multiplier. PLEASE READ THE DOCUMENTATION FOR CAVEATS. + + PCE: Fixed CD-DA and ADPCM fadeout speed when setting the "pce.ocmultiplier" setting to a value other than 1. + + Cleaned up the multi-res blitting code in drivers/video.cpp to not cause crazy compiler warnings(and not be crazy in general!). + + PCE: Fixed the ADPCM playback rate formula(the result was off by about 0.27%), thanks to Charles MacDonald for detailed information. + + Began work on implementing several OpenGL pixel shaders, which will be finished in a later release. + + Mednafen no longers directly links to the OpenGL library, instead it uses SDL's OpenGL library loading and function address functions. + + Reverted back to pow() and cos() from powl() and cosl() in Blip_Buffer.cpp, due to some platforms not having long double types per se, + and adjusted the code activated by setting "pce.adpcmlp" to call Blip_Synth::treble_eq() with a "treble" value of a lower magnitude, which + might result in a slight difference in the ADPCM frequency spectrum produced when "pce.adpcmlp" is enabled. + + Fixed "Value increased" cheat search method(it was acting the same as "Value decreased", oops -_-). + + Changed the usage of fix-sized filename component arrays in general.cpp with string objects. + + MDFN_printf() and MDFN_PrintError() now use trio_vaprintf() instead of trio_vsnprintf(). + + NES: Added setting "nes.n106bs", which when set, will enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation. + + NES: Fixed save states for mapper 69 games(mirroring and prg bank setup wasn't being saved and restored). + + NES: Added support for multiple expansion sound chips used simultaneously in NSFs, including limiting the address space they + will respond to when multiple expansion sound chips are used(to prevent collisions between VRC6 and VRC7's address space, for example). + + PCE: Fixed CD-DA playback speed when setting the "pce.ocmultiplier" setting to a value other than 1. + + NGP: Changed the default full-screen video settings, so that the scaled image size is no longer larger than the + display area(oops -_-). + + NES: Added support for UNIF board "UNL-603-5052"(thanks to CaH4e3). + + NES: Fixed mapper 115, "Thunderbolt 2" now works(thanks to CaH4e3). + + NGP: Sound emulation now respects global sound volume setting "soundvol". + + NGP: Added missing setting "ngp.forcemono". + + PCE: Physical CDROM device names will now be printed on Mac OS/X on startup again. Physical CDROM access seems to work, + but the DarwinPorts libcdio 0.75 package appears to be horribly broken, so please remove it and install + libcdio 0.77(or higher) from its source code. + + NGP: Fixed a few major problems with NGP emulation on big-endian platforms(such as PPC OS/X). + +0.6.4: + + Added somewhat experimental Neo Geo Pocket(Color) emulation based off code from NeoPop, heavily modified. + + GB: Fixed frame rate when sound is disabled. + + Added →, â†, ↑, and ↓ characters to the Lynx, GB, GBA, and PC Engine directional button names used for button configuration, to match the NES button + names. + + PCE: Added setting "pce.adpcmlp", default value 0, that when enabled, will cause Mednafen to apply a lowpass filter to ADPCM sound output + with a rolloff frequency dependent on the current ADPCM playback frequency. This makes ADPCM voices sound less "harsh", however, the downside + is that it will cause many ADPCM sound effects to sound a bit muffled. + + PCE: Moved the OpenGL screen clearing code into the FlipOpenGL() function to fix a problem with some PCE games that use + multiple resolutions per frame having a partially corrupted screen when the OSD was up. + + PCE: Fixed save state loading with save states created during a CDROM data transfer. + + Fixed a bug that was causing flickering OSD remnants to remain onscreen in fullscreen mode if the OSD was drawn outside of + the game screen area. + + Fixed a bug in the resizing code for save state previews that was causing save state previews for the NES, GB, GBA, and Lynx to look absolutely + horrible. + + Assigned the two keys "-"(not the numpad instance) and "=" to functions "decrement selected save state slot" and "increment selected + save state slot", respectively. + + Removed the checks preventing save state usage when playing NSFs, since save states may be useful with NSFs in some circumstances. + + Added a new setting "ckdelay", which controls the length of time, in milliseconds, that a button/key corresponding to a + "dangerous" command like power, reset, exit, load state, etc. must be pressed before the command is executed. The default value is 0. + + Input mapping configuration is now saved after argument parsing if there is no game to be loaded, allowing a command like + "mednafen -inputcfg pcegamepad1" to work properly. + + The message "Configuration finished." will now be displayed when button mapping for the selected input device is complete when + using the in-game configuration process. + + PCE: Fixed a bug in the debugger involving disassembling block memory transfer instructions(effectively, the length was being + fetched 1 byte too early). + +0.6.3: + + SexyAL: Fixed buffer write memcpy() optimization to also check to make sure the input and output byte orders are the same. + + PCE: Added setting "pce.forcemono" to force monophonic sound output. + + Added setting "analogthreshold", which is the threshold for detecting a "button" press on analog axis, in percent. The default + value is 75(%). + + Worked around a very odd "bug" in gcc that involved muddling of local-scope structure definitions among different object files( + the structure previously named "BPOINT" in both NES and PCE emulation code), which led to breakpoints with NES emulation being + totally fubared. + + Added graphics memory dumping capabilities to the debugger. + + PCE, NES: Save states and powers/resets in debugger step mode SHOULD work properly now. + + Fixed a potential deadlock when exiting. + + Various debugger fixes. I lost the ChangeLog, sorry. -_- + +0.6.2: + + PCE: Physical CDROM device names will no longer be printed on Mac OS/X on startup, due to the code crashing badly(rather than goodly!). + + OpenGL texture heights are now rounded up to the nearest power of 2(texture widths already had this rounding in previous versions), + which should fix special scalers on video output devices that don't support non-power-of-2 textures(IE most video cards and Mac boxen). + + PCE: The libcdio sector reading functions are now checked for return values < 0 as errors, rather than != 0, to fix + problems under Linux and possibly many other OSes where the return value is something like 2048(the number of bytes read, presumably). + + PCE: Fixed a bug with disassembling block memory transfer instructions on < 64-bit systems(I had forgot to type-cast a variable + to uint64 before left-shifting it past 32-bits). + + PCE: Added the implied form of INC to the disassembler. + + NES: Removed the PRG mask constraint for UNROM/mapper 2, introduced in version 0.2.0, to fix the Japanese "Maniac Mansion" and possibly + other games. + + PCE: Fixed debugger write breakpoints. The code had a logical error in it, with the end effect of preventing stack writes in the IRQ + sequence, causing games to crash. + +0.6.1: + + PCE: The HuC6280 disassembler now gives @ZP hints for BBR and BBS instructions. + + NES: Increased the effectiveness of frame-skipping. + + Removed unnecessary sound buffer copying if the source format == device format in SexyAL, which is true most of the time. + + Fixed a bug that was causing a crash in the cheat interface when trying to list cheats, under Win32. + + Fixed a bug in the settings loading code that forced the user to resort to manual creation of ~/.mednafen/mednafen.cfg on + some operating systems(*BSD, OS/X). + It was being caused by 'errno' being modified between the attempt to open the settings file, and the test 'if(errno == ENOENT)'. + + Silent sound will now be outputted when in step mode in the debugger. Windows users' ears rejoice! + + Added a strtod() replacement that recognizes both "." and "," as valid radix characters, regardless of the current + locale, and modified settings.cpp to use it. + + Lynx: Removed some unused code. + +0.6.0: + The internal sound format has been changed to 16-bit from floating-point to improve performance, + especially on processors without FPUs. There should be no perceptual nor measurable + loss in sound quality. + + Removed fidlib from the source code tree, as it is no longer used. + + Lynx: Switched over to Blip_Buffer's lowpass("treble") capabilities from fidlib. + + PCE, NES: Added a debugger of DOOOOOM. + + PCE: Altered timer emulation slightly. + + PCE: It is now possible to load CDs simply by specifying the CUE file, or device, as you would with a ROM image, like so: + mednafen /dev/cdrom + mednafen /home/sauron/games/Ys/Ys.cue + + Added MusePack CD-DA playback(IE audio tracks encoded as MPC data) support. + + Added legal information to the end of the documentation, though it's likely incomplete. + + Switched over to using an internal copy of the "Tremor" decoder, and dropped dependencies on the ogg and vorbis + external libraries. + + The CD-DA reading function now provides sound data as 16-bit signed samples in the endian format native to the + host platform. + + PCE: Changed two often-used CDROM timing variables from int64 to int32 to try to improve performance slightly on non-64-bit platforms. + + PCE: Added a hack that changes subtle CDROM unit behaviour when the game "Sherlock Holmes" is loaded, so that the aforementioned game + will work. In general, I really, really + dislike hacks of this nature, but I think it's justified until I have a better understanding of the (complex) PCE CD + functioning. + + PCE: Lowered CDROM data transfer rate, and removed the kludgey one-time delay in the sector reading function. + + PCE: Altered ADPCM write delay to be inversely proportional to the playback frequency selected. + + GB, GBA and Lynx save-state previews are now saved at native resolution, instead of scaling down to 1/4 of the native resolution. + + NES: Fixed a mapper 96 initialization problem. + + NES: Implemented blargg's NTSC graphics filtering code(version 0.2.0). + + The setting "sounddevice" will now select which filesystem entry(like "/dev/dsp" or "/dev/adsp") to open when using the OSS output driver. + + NES: Changed the internal sound channels high-frequency mixing buffer to 16-bit, from 32-bit, to try to increase performance + on cache-starved processors. + + Added a simple, non-ideal(it increases CPU usage measureably because it dirties the OSD surface and causes it to be redrawn) + FPS display, toggled with SHIFT+F1. + + PCE: Added "hes" and "pce" to the file extensions looked for in ZIP archives in the file loader. + + NES: Added support for iNES mapper 38. + + Lynx: The lowpass filter can now be optionally disabled by modifying the "lynx.lowpass" setting. + + ROM sizes, MD5 hashes, and CRC32 checksums are now printed out for all systems emulated + by Mednafen. + + Rearranged the file loader detector to attempt to load the file as a GBA game last, since the GBA cart-detection + code *could* give false positives if the game isn't a GBA game. + + PCE: The 2KiB of BRAM is no longer mirrored across the 8KiB segment 0xF7, fixing "RAM is full" problems + with Exile 2. + + PCE: Fixed MD5 hash calculation for CD data tracks. + + Added settings "gb.forcemono" and "gba.forcemono". + + Lynx: Cleaned up the code. + + The MD5 hash is now calculated for GBA and Lynx games, and the correct MD5 hash is now used in filenames + (the nibbles in each byte were swapped previously). + ***NOTE*** + Save states and save games created in previous versions of Mednafen will have different filenames than the current version. + To do a quick-and-dirty fix, simply remove the MD5 hash component from the filename as such: + rename somegame.7e74d04f2d147f03061d447310b109ec.sav somegame.sav + + Changed autofire behavior to have the button set on half the frames in the autofire period, rather than just one frame. + + NES: Changed the background clear color to light blue(from black) when the background is disabled by the user, and + fixed background and sprite disabling by the user to not lock up some games that depend on sprite hits. + + GBA: Updates from VBA's CVS: + - bios.cpp : corrected a bug in registerRamReset. + - gba.cpp/gbainline.h : corrected the mirroring of Vram. + - gba.cpp : changed slightly the emulation of gbasavetype. + - RTC.cpp : vba now ignores rtc command 0x64. + + GBA: Reduced input latency by one frame. + + PCE: Reworked the frame/scanline counter loop to run NMI first, and then draw the active frame area, to reduce input + latency by one frame. Most games keep the vblank starting line outside of the TV's visible display area, but a few(like Dracula X) + have vblank occurring on a scanline that the VDC is still outputting a signal to the TV for. If a game alters its overscan color regularly, + and vblank is set to occur rather early, there might be a slight tearing effect at the bottom of the screen. Note that this is a very minor + problem, and is more than offset by the reduced input latency, though I thought I should mention it so I won't go crazy in the + future trying to debug the oddball game. ;) + Note that this change may cause compatibility problems with PCE save states created in older versions of Mednafen. + + NES: Fixed several PPU sprite RAM and VRAM read and write operations to pass blargg's tests. + + NES: Altered how the color to be blitted is decided when screen rendering is disabled to fix blargg's 410 color demo. + + Fixed scanlines to be aligned correctly(scanline darkening over the pixels that are interpolated between rows) when bilinear interpolation is + used, at least on my nvidia card. + + Floating-point/real number settings are now validated and checked to be in range. + + PCE: Rewrote SuperGrafx VPC priority evaluation code to work correctly with http://pcedev.net/demos/Sgx3b.zip which was tested + on real hardware. + + Simplified the OpenGL blitting code. + +0.5.2: + Modified the PCE code to only include header files that are needed. + + Fixed a memory leak in the state saving code. + + PCE: Closing HES music files will no longer produce battery-backed RAM files. x_x + + Fixed a memory leak in the state loading code. + + Reduced memory slightly in the text rendering code by using all the bits available in the array(instead of the lower bit of each byte) + that tells if a glyph is available or not. + + Modified the internal message display code to allocate and free space for the message being displayed, rather + than using a rather small static array. + + PCE: Fixed a small bug that would cause 1/75 second or less of the old CDDA track to play when switching to a new CDDA track. + + PCE: Changed how reads from $0000 are handled, and made vblank occur slightly later in the frame, to fix Valis 1. + + PCE: The CD reset function of $1804 now clears more variables, fixing problems with lockups when using the START+SELECT + soft reset in the middle of a data read. + + Finally fixed the endian conversion code so that save states(and netplay) are compatible between big-endian and + little-endian systems. + **NOTE** Save states created in previous versions of Mednafen on big endian platforms(such as OS/X PPC) + will no longer work in this version. + + Removed the tech documentation from the source code distribution. + + Truncated the ChangeLog to the first Nintencer release. + +0.5.1: + Fixed a crashy bug with hq2x, hq3x, and hq4x when using big-endian systems, or when the "vdriver" setting is set to "1". + +0.5.0: + Added a frame-advance feature. Press ALT+A to enter frame-advance mode, and subsequently to advance frames, and ALT+R + to exit frame-advance mode. + + The current machine state is now saved at the end of movies, to allow for the future implementation + of the seamless continuation of an already recorded movie. + + PCE: When loading from a physical disc, auxillary data(save states, movies, etc.) prefixes should now always be "cdrom", + rather than "cdrom" for the default device and the given name for other devices, because this(previous) behavior + caused problems under Win32(where colons couldn't be used in filenames). + + NES: Fixed FDS sound output(it was technically outputting before, but the volume was so low as to be inaudible). + + NES: The disk system BIOS can now be in iNES format. + + NES: The Game Genie and FDS ROM image loaders can now load the ROM image from a gzip or zip compressed file. + + Revised the documentation to remove misleading statements(that applied to FCE Ultra) and add some missing information. + + Updated the command-line section of the documentation with warnings and notes regarding settings, network play, + and movies. + + PCE: Fixed more bugs with CD reading when sound is disabled. + + Loading a save state while recording a movie will now embed that save state in the movie file. + + PCE: Save state previews are now generated with correct horizontal linear interpolation, fixing icky + blockiness. + + NES: It's now possible to record movies with any virtual input devices(like the Zapper), though the nes.input1, + nes.input2, and nes.fcexp settings must be set the same as they were at recording time, before playback. + + NES: All currently used expansion input devices are now saved in save states(before only gamepad data was saved). + + Added a network play setting to merge all local input into one virtual remote input(via inclusive OR on the + server), to allow for those UTTERLY SILLY games that support multiple players on one gamepad/joystick. + + Worked around an SDL bug(or feature? :b) that was causing events to be processed by SDL + instead of Mednafen when SDL_JoystickEventState() is called. + + Scrapped the old movie format from FCE Ultra, and replaced it with a simplified version + that simply writes the joystick inputs to the movie file stream each frame, and + lets zlib handle the compression and encoding. This is incompatible with the old + format, sorry. + + Movies are now stored in the right directory finally(mcm vs mcs). + + Rewrote most of the on-screen display code to work with a separate 256x224 buffer that is scaled and blitted + independently of the main game's video output buffer. Note that if you have OpenGL disabled(via "-vdriver 1"), + the overlay will not be scaled. + + PCE: Added support for multiple resolutions per frame, as used in such games as "Asuka 120%" + and "Ryuuko no Ken". + + PCE: Adjusted the internal resolution(and outputted aspect ratio) slightly when using the ~7MHz dot-clock. + + PCE: Added movie recording support. + + PCE: Adjusted ADPCM volume. + + PCE: Fixed left overscan clearing and disabled background lines clearing. + + The trio code is no longer compiled with -ffast-math. + + Removed netplay divider support(it didn't really work all that well anyway), and removed it from the server as well. + + PCE: Changes to the IRQ masking register are now delayed by one instruction, thanks to D. Michel + for the information. + + Status messages are now displayed for 2.5 seconds, rather than 180 frames. + + Changed save state display timing from frames to seconds, and set it to display for 2 seconds + after a number is pressed(previously it was around 3). + + Added the following settings: nes.ggrom, path_snap, path_sav, path_state, path_movie, path_cheat, path_palette. + + Changed the data types of "bool" variables that are saved in save states to uint8, to address more + cross-platform save-state compatibility issues. + + Fixed a problem with save states on big-endian platforms(was dividing by sizeof(uint32) instead of sizeof(uint16) + in a few places). + + Fixed hq2x, hq3x, and hq4x filters on big-endian platforms. + + PCE: Pushing the virtual reset or power button during CD reads will no longer cause the emulator to fail on + subsequent reads(a few variables weren't being reset properly). + +0.4.9: + + GB/GBA: Added configurable rapid fire buttons for virtual buttons A and B. + + NES: Disabling the background now works properly(it no longer also disables sprites!). + + PCE: Disabling background layers now replaces that layer with an obnoxious green color that shouldn't be used by any games, + to make sprite ripping easier. + + Added settings "fftoggle" and "ffnosound", to make the fast-forwarding button a toggle switch, and to silence + sound during fast-forwarding, respectively. + + PCE: CDDA playback interrupt and looping enabled flags are now reset properly, fixing a lockup that occurs when facing a boss + in Valis 2, and possibly other games. + +0.4.8: + PCE: Loading a physical CD will now print out a list of available devices. + + NES: Blip_Buffer's highpass filtering capabilities(for DC-offset removal) are now used instead of a custom function. + + Modified the included libintl so that it will compile on Mac OS/X. + + The "trio" subdirectory should(I can't test it) now be compiled with -mieee on Alpha architectures, + fixing a compilation error. + + NES: Fixed long-standing graphical problems with some sprites in (Mike Tyson's) Punch-Out. + + Removed "#include " from cdromif.cpp and cdromfile.cpp, since I forgot to in 0.4.6. + +0.4.7: + Fixed the NES PPC AltiVec resampling code by properly aligning an output array. + + Fixed NES sound emulation on 32-bit platforms(omitting the buffer size to Blip_Buffer::set_sample_rate() + was causing an assert to go off on <64-bit platforms). + +0.4.6: + + Dropped the libsamplerate dependency. + + NES: Replaced the resampling code from the intermediate frequency after FIR resample with Blip_Buffer. The only + audible effect seems to be a slight lowpass filter effect. + + PCE: Integrated the CDDA playback code into the main PCE CDROM emulation code by using Blip_Buffer. + + PCE: Removed the compressor and cddaquality settings. + + Updated the Russian PO file, mostly to remove or fix grossly incorrect "fuzzy" entries. + Added an incomplete Spanish(Spain) PO file. + + PCE: If a data sector read from a physical disc fails, it will be reattempted continuously until it succeeds, + or the user presses the exit key(F12 by default). (note that this may appear to lock up Mednafen, but the + exit key will still work) + This *should* fix problems with physical PCE CDs under Mac OS/X and MS Windows. + + Merged trio(http://daniel.haxx.se/projects/trio/) into Mednafen to fix format-string problems + on non-glibc systems(MS Windows for example!). + + GB: Modified the APU emulation code to silence a gcc warning. + + PCE, Lynx, GB, GBA: Doubled the size of the Blip_Buffer phase offset table for slightly higher sound quality. + + PCE: Fixed ADPCM playback code for when sound is disabled(it was ultimately causing a crash in earlier versions). + + Converted the MD5 functions to a class. + + Fixed(hopefully) compilation on non-Apple PowerPC systems. + + Fixed save-state support for saving/loading arrays of 16-bit and 32-bit variables(the hints were already there, + but the code to handle the hints was nonexistant). Note that this change will cause incompatibilities between old save states and + this version on big-endian platforms. + + Removed the included "m4" directory, updated autogen.sh, and reran it to regenerate aclocal.m4 with + newer(and fixed on AMD64) versions of the gettext autoconf scripts. + See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=349845 + +0.4.5: + drivers/opengl.cpp now includes the GL header files AFTER the header file that eventually loads config.h is included to fix + compilation on Mac OS X. + + Redefined SFEND from { 0 } to { 0, 0, 0}, and fixed older code to use the SFEND macro, to fix crashing on OSX and possibly + other platforms when saving or loading states. + + Reduced SDL's buffer size when using the SDL sound driver(used on MacOSX). + + Restructured and merged some of the sections in the autoconf script. Note to future self: I noted that it seems if + the first instance of PKG_CHECK_MODULES() is in a statement that doesn't evaluate, any other PKG_CHECK_MODULES() + statements will fail. I don't know if this is a bug in autoconf, or a misunderstanding on my part. + + Removed the largely unused ESD sound driver from compilation, as it is mostly unsuitable for use in Mednafen. + Also removed the jack driver, as it was unfinished, and couldn't be used anyway. + + PCE: Fixed CD-DA playback from "WAV" audio files on big-endian platforms. + + Fixed a compilation problem on big-endian CPUs by adding appropriate type-casts in psf.cpp. + +0.4.4: + Modified the GBA code to not use many INLINEd functions in arm.cpp. This greatly reduces + RAM and CPU usage during compilation, and should have only a negligible impact on performance(and might + even improve performance on cache-starved systems). + + Fixed a compilation problem on non-x86 and non-PPC platforms in the NES emulation code. + +0.4.3: (Note: PCE CD save states created in previous versions will not work very well with this release) + + Fixed a compilation problem in cdromif.cpp regarding NULL on *BSD platforms by including . + + Lynx: Fixed the constructor and destructor declarations of the C65C02 class, which should fix a reported + compilation error with gcc 4.1. + + GBA: Added a few missing variables to save states. + + GB: Lines during which time the screen is turned off are now cleared(fixes flickering problems at the + start of games, and during transitory blank screens). + + Fixed the SDL_net.h include statement in drivers/netplay.cpp. + + PCE: Fixed a bug with CUE+BIN sector size handling with regards to pregaps. CUE+BIN is still + officially unsupported. :B + + PCE: Noise is now rendered at blip_med_quality. + + PCE: Removed the code that checks to make sure the audio sector to play is non-zero. Fixes "Crazy Hospital". + + Changed the maximum supported playback rate from 96KHz to 48KHz, to be able to safely extend the temporal precision + of Blip_Buffer further. + Note that this shouldn't be considered a regression, as there are virtuall no benefits to using a sample rate + above 48KHz in Mednafen(though there may be benefits in other applications). + *************** + ***BIG NOTE:*** + *************** + If you previously set the playback rate above 48KHz, you will have to manually edit the text configuration + file(~/.mednafen/mednafen.cfg) to bring the value in range. This is necessary because of a limitation in the setting + validation code. + + + Updated to Blip_Buffer 0.4.0, which offers improved sound quality over previous versions: + - Improved sound quality by rewriting library to use 32-bit internal sample + buffer, higher phase resolution, and a properly windowed filter kernel. Current + user code should work without changes. + + PCE: When sprites and background are both disabled, and the VDC is not in burst mode, the scanline is now filled with color 0x000 from the palette + rather than 0x100. This fixes the "Hurry Up" water effect in the CD game "Rainbow Islands". + + PCE: Fixed the CD-DA amplitude calculating(used the BIOS' CD-DA player interface). + + PCE: Altered VDC line timing slightly. + + PCE: ADPCM frequency is no longer reset on ADPCM reset, fixes Gulliver Boy's dialogue voices during + gameplay. + + PCE: Fixed reading from nonexistant audio sectors(by memset()'ing the audio buffer to zero). + + PCE: Implemented sector reading delays, games that use FMV like Gulliver Boy work much better now. It's not implemented 100% correctly, + and requires a small CPU hack to disable IRQs during a timing-sensitive period of emulation. I don't like hacks, but...it's still better + than the giant hack of reading all the sectors at once, which was how it used to be. + + PCE: Implemented ADPCM read and write delay. "Record of Lodoss War" no longer locks up at the title screen. + + PCE: Opcode and operand data reads from VDC register 0x1 will now return 0x40, which fixes + Dragon Slayer 2. I doubt this is correct, but it shouldn't break any other game. + + PCE: CUE+BIN audio playback no longer locks up the emulator, but CUE+BIN is still + officially unsupported. + +0.4.2: + Fixed sprite hit emulation, fixes problems with VS Duck Hunt and VS Hogan's Alley + that have existed since Nintencer. + + Modified VS Unisystem light gun emulation slightly to be more accurate. + + Fixed the in-emulator sound(nsf,gsf,hes) player's waveform visualization, + broken in 0.4.1. + +0.4.1: + + Joysticks initialization is now slightly more verbose. + + Fixed hash calculation in the joystick code, and added a workaround for hash + collisions(which would occur if two extremely similar joysticks are used on + the same system). + + Video initialization is now more verbose. + + The -.special command-line arguments for selecting a special scaler now + take the short name of the scaler, which is found in the documentation, instead of + arbitrarily-chosen numbers. However, out of the goodness of my cold, black heart, + arbitrarily-chosen numbers may still be used, though it should be considered deprecated. + Example: + -nes.special 1 (deprecated, but works, selecting hq2x) + -nes.special hq2x (good!) + -nes.special wombat (bad!) + + libsndfile is now used for WAVE recording(instead of the old ugly code). + + Altered the internal floating-point format used to represent audio data by changing + the range to -1.0<=sample<=1.0(previously it was 0.0<=sample<=1.0). + + NES: Fixed a 1-byte overflow bug in the Barcode World input device emulation + code by changing a strcpy() to a memcpy(). + + Added a "-help" command-line option, which prints out command-line arguments + and parameters. + + Fixed the configuration file loading code to exit the emulator if + invalid data is in the configuration file, instead of just ignoring it + and the rest of the entries, thus trashing the configuration file on exit. + + Changed the default xscale and yscale settings for Lynx to 4. + + Physical mouse buttons can now be assigned to virtual buttons. + + The width and height of the state preview are now saved in save states, fixing a problem with broken + save states if the -nes.clipsides option is used, and possibly in other situations(note that this + won't fix the problem in old save states, only new ones). + + Fixed a garbage(OSD stuff) problem in screen snapshots and save states when they are done after a frame + that has been skipped(the solution is to delay the snapshot/save state until the next frame, which is + set to not be skip). + + Fixed a typo that broke the hq3x effect(it had weird graphical glitches). + + Modified more settings to use the new plain-text configuration file format. + +0.4.0: + Various minor code changes I forgot to document. I hope none of them are of the Mednafen-exploding + variety. ;) + + Added support for saving and loading settings in a plain-text file format, and moved many + settings to use this code. This file is named "mednafen.cfg" in the Mednafen base directory(whereas + the old binary configuration file is still named "mednafen03x.cfg"). + + NES: Merged RDoPCM() into RDoNoise(), reducing CPU usage slightly. + + NES: Removed the pedantically high-quality sound mode, and reduced the filter order for downsampling + from 512 to 256, with a larger transition band and smaller passband, creating a somewhat subtle low-pass filter + effect on the audible portion of the signal, and decreasing CPU usage. + + NES: Made optimizations to the CPU and PPU emulation code. + + PCE: Added -pce.forcesgx, -pce.ocmultiplier, -pce.nospritelimit, -pce.cdbios, -pce.cddaquality, and -pce.compressor + command-line options + + PCE: Sound(excluding CDDA in CD emulation mode) is now passed through an audio volume compressor. + + NES: Zero-page and stack memory accesses now go through the normal read-write function pointer system. + This will increase CPU usage slightly, but it's important for future plans(readding cheat support, + and an enhanced sound system through OggVorbis and WAV files). + + Updated to Blip_Buffer and Blip_Synth 0.3.6b1. + + Added special gcc options to configure.ac to get gcc to actually inline many functions + that are specified to be inlined. Sometimes I wonder if gcc developers are sane... + + NES: Fixed a weird typo(with apparently no effect) in the B2005() function in ppu/ppu.cpp + + Fixed scanlines effect when using a special scaler. + + Lynx: Optimized the sound rendering code slightly. + + PCE: Added PCE CD emulation. + + NES: Fixed the AMD64 MMX sound downsampling assembly code. This bug fix fixes staticy sounds and other problems + with NES audio on AMD64 platforms(only in 64-bit mode, of course :)). + + Removed MDFND_UTF8fopen() and MDFND_UTF8gzopen(), since they weren't really doing anything useful, and + the same functionality could be provided more easily with some kind of wrapper library, if it's needed + in the future. + + Updated the ZIP-file handling code with the newest version available, 1.01e. + + GBA: Updated most of the GBA emulation code with newer code from VBA's CVS repositoy. + + MDFN_FastU32MemsetM8() no longer tries to use floating-point data types, which was causing very bizarre problems on x86_64 + targets when compiled with gcc 4.0, and was probably an illegal thing to do anyway, as far as + portability is concerned(or maybe gcc 4.0's autovectorizer is broken). + This fixes problems with many GBA games when Mednafen is compiled with gcc 4.0. + + Added code to check for SDL_net in configure.ac and error out if it's not found, instead of blindly + trying to compile. + + A negative result for the JACK test in configure.ac will now print the result "no". + + Removed the argument to AM_GNU_GETTEXT in configure.ac, effectively setting it to "no-libtool". This will + force a static library to be made when necessary, instead of a shared library, which should fix problems + some people have been having with missing shared library error messages(libintl.so.3 and libintl.dll, for example). + +0.3.7 + Modified the OpenGL code to use glTexSubImage2D() instead of glTexImage2D() every frame, resulting in a slight + performance increase. + + Modified the OpenGL code to use smaller texture sizes with most PC Engine games(at least those + that run at a width of 256 pixels; exceptions include Aoi Blink, R-Type 1 and 2, Yo Bros., and others). + + Lynx: Moved CMikie::Update() and C65C02::Update() into c65c02.cpp and mikie.cpp, respectively. + + Fixed pointer-to-integer type casting that was causing compiler errors under Ubuntu Linux AMD64. + + Modified a lot of code to work around/fix various compiler warnings. + + Fixed a few typos in the documentation. + +0.3.6: + + NES: Fixed a bug with the VRC6 sound emulation which was causing heap corruption and one sound channel to not work. The bug apparently came up + between Nintencer 0.1.1 and Mednafen 0.2.0. Why didn't anyone tell me... -_- + + PCE: Made significant optimizations to CPU emulation. The code's a bit messier now, but I'll clean it up if/when 0.4.0 is released. + + NES: Removed the high-level frameskipping code, since frameskipping is automatically used now, and it could easily break some games. + + Removed the "-frameskip" command-line option, as it should not be needed anymore. + + Unified a lot of the driver-side frame-skipping code. + + Fixed a startup bug(MainThreadID was being used before it was set) that was causing the "Starting Mednafen x.x.x" line to be lost. + + Slightly restructured the "features" and "command line" sections of the documentation. + + PCE: Pressing the "Power" key now resets the internal RAM. + + All: Altered the shared music player interface, decreasing the brightness of the text, and adding pseudo-shadows. + + PCE: Added simple HES playback code. + + PCE: Altered noise emulation slightly, Ninja Ryukenden(and probably other games)'s music sounds more accurate now. + + Fixed alignment of the save state preview and selection box when emulating the PC Engine. + + The status line text and the save state selection message are now drawn with black shadows, to make reading easier. + + Changed the text status line background darkening shape to a rectangle on the NES, and fixed it to display correctly + with PC Engine emulation. + +0.3.5: + Added code to allow for writing to SDL framebuffers directly, without using OpenGL, controlled with the command-line option "-vdriver". + -vdriver 0 = OpenGL + -vdriver 1 = SDL framebuffer(bilinear interpolation and Lynx screen rotation are not available). + + Lynx: Disabled the crude(as in, non-working) stereo sound support, and added a low-pass filter to make the sound sound much closer to what + comes out of a real Lynx. + + PCE: Adjusted the visible horizontal display area, and overscan, in the 7 and 10MHz dot clock modes. + + PCE: Expanded the visible vertical display area by 8 pixels(4 on top, 4 on bottom). + + PCE: Altered VDC timing agaaaain. + + PCE: Block memory transfers now take 5 cycles(read, write, alter source, alter dest, decrement length?) per byte transferred instead of 6. Fixes + "Wonder Momo". + + PCE: Altered HuC6280 instruction timing slightly(removed the tests for indirect indexed and indexed indirect addressing modes to use extra CPU cycles). + + PCE: Corrected a timer emulation bug, fixes "Dragon Egg"'s tempo. + + PCE: Increased the number of cpu cycles per scanline from 454 to 455, based on tests I performed. + + GB/GBC: A sound enable register is now initialized properly on reset, fixing at least one unlicensed game. + + Lynx: Disabled the superclipping code, as it's buggy(causes bad sprite clipping and invisible mountains(OHNOS) in Steel Talons) + and doesn't appear to be necessary. + + The mouse cursor is now hidden. + +0.3.4: + Added command-line option "-autofirefreq" for setting the frequency of the configured auto-fire buttons + when playing NES and PC Engine games. + + PCE: Fixed Street Fighter 2 HuCard emulation. + + PCE: Modified PSG waveform writing/DDA emulation, fixes "Fire Pro Wrestling - Combination Tag". + + PCE: Modified TRB and TSB emulation. Fixes "Toy Shop Boys". + + PCE: Implemented VRAM-VRAM DMA direction control bits. + + PCE: Altered VDC timing, fixing a few games, making a few games more bouncy. ;) +0.3.3: + + PCE: Fixed sprite clipping on the left side of the screen. + + PCE: The emulated RCR register is now masked with 0x3FF when being set. Fixes Niko Niko Pun. + + PCE: Several CPU cycles are now emulated between setting the in-vblank flag and the vblank IRQ occurring. This works around an issue that would otherwise + require timing granularity as small as one cpu cycle. Interestingly, this same type of problem occurs with NES emulation. + + PCE: Altered the display rectangle calculation code to take into effect screen areas that may be hidden + on many television sets(and some games were designed with the assumption that these areas WOULD be hidden). + + PCE: Modified noise emulation...again. :b + + PCE: Modified LFO emulation, fixes major sound problems in "Bull Fight". + + PCE: The sprite DMA completion IRQ now occurs earlier(probably a few cycles too early now, but oh well). Fixes some graphical issues + in "Bull Fight". + + PCE: Sprite bit plane selection is now emulated to a degree. Fixes "Fighting Run". + + PCE: Very high-frequency(and probably inaudible) sounds are no longer played, because Blip_Synth + can't handle them well. Fixes "Bouken Danshaku Don" and others. + +0.3.2: + + GB: CGB-specific emulated RAM is no longer saved in save-states. + + GB: Fixed a bug in sound sweep emulation. + + GBC: The palette is now saved in save states. This fixes a major problem with save states with most GBC + games... + + Fixed the SF*N() save state macros to not put quotes around names in + save state files, and added a workaround for compatibility with old save states. This + is an embarrassing bug. :b + + PCE: Made major optimizations to the VDC emulation code. + + PCE: Rewrote the PSG emulation to use Blip_Synth and Blip_Buffer. + + PCE: Altered the noise channel emulation frequency calculation and LFSR emulation. I'm still not sure + if it's correct. + + Increased the minimum sound rate supported from 8192 to 22050. I don't test low rates very often, + and there may be loss-of-precision issues with such low rates. + +0.3.1: + Fixed a bug that existed since 0.2.0 that was causing a null-pointer deference in stat(). + Interesting, glibc silently ignored the error, but the error caused crashing under Windows. + + PCE: The HuC6280 timer latch is now loaded with an appropriate value on reset. Fixes + "Double Dungeons". + + PCE: Added generic PC Engine save RAM emulation. + +0.3.0 + Added PC Engine and SuperGrafx emulation. + + Save states are now compressed and encapsulated in gzip-format files. + + NES: Fixed display rectangle setting code that was causing screenshots from PAL games + to be cut off at the top and bottom. + + NES: Added an iNES header correction entry for "Gauntlet 2", to clear the four-screen bit. + + NES: Added support for configuring NES gamepads 3 and 4 from within the emulator(during emulation), mapped + to key combinations "F4" and "Shift + F4", respectively. + + Fixed virtual input device configuration from the command-line(it was segfaulting before because + the code was dereferencing a null pointer). + +0.2.2: + + Fixed a few problems with '#ifdef's when compiling on an MSB-first platform, though + I still haven't tested Mednafen on such a platform... + + NES: Fixed a nasty bug in the iNES loading code(the list of known bad ROM images wasn't + terminated with a NULL entry) that could cause segmentation faults on startup in + some situations. + + NES: A slightly faster version of the sprite priority handling+blitting code is now compiled when + a 64-bit CPU is "detected" by: + #if (SIZEOF_LONG == 8) + (is this the correct way to determine whether or not the cpu has native 64-bit + integer support? I know it works ok on x86 and x86_64, but what about SPARCs? :b) + + NES: Rewrote portions of the sprite rendering and priority comparison code to use simpler + logic. + +0.2.1: + GBA: Converted the DMA registers into arrays, rather than having them as a gazillion different + variables. + + GBA: Replaced the if() alpha-blending clamping mechanism with a simple LUT. + + GBA: Removed some apparently unnecessary if() statements in the graphics rendering code. + + GBA: Made a few experimental optimizations to the graphics rendering code( >> 24 changed to & 0xFF000000 in + some of the priority comparison code). + + GBA: Played around with some optimizations in the "gfxDrawTextScreen" function. + + GBA: Restructured the CPU emulation code, so I don't have to recompile one giant file when + I make a small change(and so it doesn't use totally obscene amounts of RAM during compilation). + + GBA: The sound flushing routine was returning and setting the wrong values, totally breaking the speed-throttling + code. Fixed. + + GB: Slightly increased the video contrast and brightness of the original GameBoy's emulation. + + GBA: Extended the BLIP buffer size, fixing a startup emulator crash with "Midway's Greatest Arcade Hits", and + possibly other games. + + Updated the documentation with better explanations in a few areas, and fixed a few errors. + +0.2.0: + (Sorry, I lost track of changes, but... 0.2.0 is kind of like an entirely new emulator! :b) + +0.1.1: + SDL_QUIT events are now handled properly. + + Increased the default fast-forward speed to 4x. + + Fast-forwarding will now invoke the emulation frame-skip code, to achieve much higher + fast-forwarding speeds. Fast-forwarding with frame skipping code may break some games, + but I haven't encountered any yet... + + Jitter correction is now done when configuring virtual input devices and command keys, and + the button pressed is on a physical joystick/gamepad. This is particularly necessary for + some(all?) analog joysticks connected via the ancient gameport interface on the PC, at least + under Windows 98 ;). + + Various code cleanups and subtle usability fixes. + + The "cheats" subdirectory under the Mednafen base directory is now created on startup(broken in 0.1.0). + + Fixed sound code used when expansion channels are used and the internal pre-downsample target format + is floating-point. + + Added error condition checks and more verbose error messages to various pieces of code. + + Implemented a modified version of the old PPU rendering code that is used when it is + safe to do so. This helps to offset the increased CPU requirements of the new code. + + The command-line option "-nothrottle" works again. + + Joysticks are now configured by a unique hash id, instead of by index number. This should + help if people install or uninstall joysticks. It has not been tested, but the code structure + was copied from the old Win32 port of FCE Ultra, so it should work. + Note that this change will break old button configurations in the configuration file from 0.1.0. + + Fixed mapper 19's(Namco 106) expansion sound. It now actually outputs sound(broken in 0.1.0)! + + Rewrote large parts of the PPU rendering code to be more accurate, and slower. :/ + This fixes Final Fantasy's "orb lighting" effect, and Micro Machines' title screen, + among others. + + Reads from $2004 will now return something meaningful to the games "Bee 52" and + "Micro Machines"(it returned nothing meaningful before, so it shouldn't break anything). + This, combined with the correct background palette selection used when sprites and background are + disabled, fixes some graphical issues in Micro Machines and Bee 52. + + Internal text rendering will now truncate strings that are too long to fit on the screen + (an issue with NSFEs and song titles...). Is there a better, sane way to deal with this? + + Added support for loading NSFE files, and made changes to the NSF player to display + more information if it's available. + + file.cpp: The FCEU_f* wrapper functions will now always load the entire file + into memory on FCEU_fopen(). I hope people don't do something silly like trying + to load a 1GB file of garbage. ;) + I might add mmap() capabilities in the future. + + Reworked the UNIF/FDS/iNES/NSF file loading code. + + Removed the "en" translation from the po directory, since it was a bit...redundant + or silly. If you did a "make install" with 0.1.0, you should run a command like: + rm /usr/local/share/locale/en/LC_MESSAGES/mednafen.mo + + Fixed a compile-time error in general.cpp when the asprintf() emulation function is used. + + Replaced the SDL WM icon with a scaled image of the Mednafen Beetle. + + Fixed the Super24-in-1 bootleg cart board emulation by removing a line of silly debug(?) code. + + Added FCEU_indent() function, for use with FCEU(I)_printf(), to automatically set indentation + for newlines, rather than having it in the format strings directly. This should make strings in the + gettext catalogs more manageable. + + config.h is now used instead of passing gobs of defines on the command-line to g++/gcc. + + Added code and an MDFNI_* interface to set the sound speed multiplier from the driver code, and + modified the driver code to use it. This is MUCH better than the method used in 0.1.0, which + was just telling FCE Ultra to reinitialize sound at a different rate whenever fast forwarding + started and stopped(which caused clicking). + + The sprite hit flag will no longer be set if the sprite hit would occur on pixel column 255, which matches + behavior on the NES. + +0.1.0: + Miscellaneous things I've forgotten about. + + Command-keys and virtual input devices are now configurable while a game is running. + + gettext is now used to provide message lookup services. + + Implemented crude Unicode rendering of internal in-game text messages, and several fixed-width fonts + covering most western languages, Japanese, Chinese, and Korean. + + Added 2xSaI, Super2xSaI, and SuperEagle video filters, and reordered the integer->filter mappings(used on the command line). + Should I parse for a string instead of an integer on the command-line? + + Converted Mednafen to compile with GCC's C++ compiler, though no advanced C++ features are used + yet. + + Fixed mapper 165 emulation with code from CaH4e3. + + VS Unisystem and Famicom Disk System commands are now saved in recorded movies. + + Video blits and special effects are now done in a thread separate from the game emulation and sound output thread. + + Command keys are now user-configurably(wow, it happened before the 22nd century!). + + Fixed emulation of MMC5's $5130 register. + + Fixed sound sweeping emulation; thanks to blargg. + + Corrected the behavior of mapper 144 to match what the hardware does regarding bus conflicts. + + Removed the low quality sound emulation code, and replaced the old high-quality sound emulation filter code with newer code that + can output to arbitrary rates and uses SIMD instructions if available. + + Fixed a rather stupid bug that could break loading of certain non-bankswitched NSFs. diff --git a/libmednahawk/Makefile.am b/libmednahawk/Makefile.am new file mode 100644 index 0000000000..64836fc428 --- /dev/null +++ b/libmednahawk/Makefile.am @@ -0,0 +1,5 @@ +SUBDIRS = po intl src + +ACLOCAL_AMFLAGS = -I m4 + +EXTRA_DIST = m4/ChangeLog diff --git a/libmednahawk/Makefile.in b/libmednahawk/Makefile.in new file mode 100644 index 0000000000..929806d806 --- /dev/null +++ b/libmednahawk/Makefile.in @@ -0,0 +1,834 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure \ + $(top_srcdir)/include/config.h.in \ + $(top_srcdir)/intl/Makefile.in ABOUT-NLS AUTHORS COPYING \ + ChangeLog INSTALL NEWS TODO compile config.guess config.rpath \ + config.sub depcomp install-sh ltmain.sh missing mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = intl/Makefile +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = po intl src +ACLOCAL_AMFLAGS = -I m4 +EXTRA_DIST = m4/ChangeLog +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +include/config.h: include/stamp-h1 + @if test ! -f $@; then \ + rm -f include/stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1; \ + else :; fi + +include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status + @rm -f include/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/config.h +$(top_srcdir)/include/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f include/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f include/config.h include/stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/NEWS b/libmednahawk/NEWS new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libmednahawk/README b/libmednahawk/README new file mode 100644 index 0000000000..d39c578792 --- /dev/null +++ b/libmednahawk/README @@ -0,0 +1,22 @@ +Compilation notes: + gcc is generally required(Intel's compiler might work), and the compilers specified via CC and CXX must be the same + version. + + Using gcc 4.4.x(or newer, though Mednafen doesn't get as much testing with newer versions) is recommended; anything + older than gcc 4.2.x may not work, and gcc 4.2.x has a nasty code generation bug that may pop up and trigger a + program abort in an internal compiler regression test routine in Mednafen; though there is now some logic in the + configure script to try to choose optimization options that won't trigger the bad code generation. + + Reportedly, passing: --build=x86_64-apple-darwin`uname -r` + to the configure script is necessary for building on Mac OS X to work properly. + + + +Some notes on the source code: + + The following system headers are included by including "mednafen.h", and always will be, so don't include them manually. + assert.h (included in "types.h") + inttypes.h (included in "types.h") + stdlib.h + stdio.h + string.h diff --git a/libmednahawk/TODO b/libmednahawk/TODO new file mode 100644 index 0000000000..f3785e0d8d --- /dev/null +++ b/libmednahawk/TODO @@ -0,0 +1,345 @@ +!!! Make sure all legal notices and licenses for DLLs are included in the Win32 binary distribution !!! + +Document the major changes in Mednafen 0.9.0 over Mednafen 0.8.x somewhere(NEWS?). A list to get started: + Sega Genesis/Mega Drive emulation, from Genesis Plus, Genesis Plus GX(EEPROM emulator, general information), Yabause(68K emulator), Gens(YM2612 emulator), and + of course the Z80 emulator core from FUSE already used in SMS and NGP emulation. + + Virtual Boy emulation(using the V810 emulator forked(and optimized and otherwise improved!) from Reality Boy ages ago for use in PC-FX emulation, along + with original code for everything else). + + Multi-threaded CD-ROM reading code. + + Significantly more accurate(though not entirely perfect, and slower) PCE emulation. + + The "pce_fast" emulation module, which is a fork of 0.8.x optimized for speed, at the expense of *generally*-unimportant accuracy. + + Various accuracy improvements to PC-FX emulation, including ADPCM IRQ generation(fixes Sparkling Feather), + correcting the ADPCM decoding algorithm, a new slightly more accurate V810 emulation mode to fix glitches in + Chip Chan Kick and Kishin Douji Zenki FX, greatly improved accuracy of KING->RAINBOW block transfers, and an + interrupt controller fix that allows for the BIOS PhotoCD player to work. The 2 switches on gamepads are also emulated + now. + + A new experimental/unstable video driver, "overlay". + + "Slow forwarding" feature. Mednafen is too good for "slow-mo". ;b + + Support for WSR(WonderSwan sound rip format) playback. + + Support for RTC in GBA games(requires a "type" file). + +!!! Initialize statically-allocated Blip_Buffer objects(via clear() method) and reset any corresponding last-value variables +on game load for each emulated system. + +Rewrite MDFNFILE in file.cpp to separate classes, ArchiveReader(takes a directory or archive filename) and ArchiveMemberReader(reads a file in a directory or a file +in an archive). + +Fix C68K generator to work correctly when cross-compiling to a platform whose binaries can't run(through automatic emulation) +on the build platform. + +In drivers/video.cpp, see if replacing "SDL_FillRect(screen, NULL, 0);" in ClearBackBuffer() with custom software-only +code to clear it fixes framerate degradation problems on Windows when env var SDL_VIDEODRIVER=directx and setting vdriver=sdl +Additionally, optimize ClearBackBuffer() to not clear parts of the screen that will be overwritten by normal non-OSD +blitting, and do testing for the vdriver=overlay case. + +In drivers/video.cpp, allocate video scaler pixel buffers separately from the SDL_Surface itself, and realloc() to larger +sizes when necessary(but never realloc() to smaller sizes), and free() only on video deinitialization. + +Add a setting to disallow joystick(or keyboard even) input when focus is lost. + +Switch hotkey/command key processing over to be event-based rather than instantaneous-state based. Consider implications for ckdelay, hotkey +logical AND mode. + +Systems with RTC emulation: Fix code to NOT use localtime(), which has consistency issues due to relying on external state(IE time zones), at + any time other than virtual power toggle/init. + +YM2612: + Timer fixes? + +Internationalization issues: + Radix(decimal point) character: + Remove world_strtod(). + Use trio functions solely for string<->floating-point conversion(in settings code), and ensure that trio is using the current locale. + + Alter similar translatable strings in various emulation modules to be the same strings. + + Ensure all important translatable strings are marked as such. + + Update Russian and German translations. + + Filesystem character coding vs UTF8 internal encoding vs locale. + + Replace string/ConvertUTF.cpp with iconv() usage. + + Wrap iconv() in C++ classes. + +Documentation: + Document systems with a debugger available. + +Netplay: + Simplify name resolution and eventually remove hackish-sort-preference for IPv4 addresses over IPv6(in 2014 maybe?), split functionality + into different components: + NetServer (maybe, to support *potentially* lower-latency P2P-style netplay) + NetClient (keep, and rework, select() type functionality in this class) + |-NetAddress + |-NetConnection + + Consider handling a recv() return value of 0 differently. + + +Settings: + Quote(and escape) string-type settings in the configuration file. + + Protect settings structures and objects with mutexes(for thread safety when using MDFNI_SetSetting() while the emulator is running) + + Optional manually-created per-game setting override files(or one big database file per system?). + + Save some emulation-related settings in save states, and temporarily(until another save state load, or a virtual power toggle via F11) make + them active. Consider implications for netplay, state rewinding, and PSX memory card emulation(slots can be disabled via settings). + Would require revamping large amounts of code. + + +Video: + Refactor hq2x, scale2x, 2xsai, etc. filtering code into classes based off an abstract base class. + + Add a "tblur.handle_gamma" setting that, when enabled, will cause gamma-correct temporal blurring. + +Sound: + Handle sound being disabled. + + Open sound device in the game thread, and close it in the game thread, since the game thread is what writes to it. + +Backup memory: + SRAM delta log and/or backing up of previous save game files. + +PCE_FAST: + MWR latching! + + +PCE: + one thing about timer inside the HuC6280 + the 7-bit timer is decremented when MSB of the prescaler changes from 1 to 0. + (assuming the prescaler is an up counter) + the prescaler seems to be a 10-bit counter + which is reset to zero when zero is written to the control bit ($0c01.bit0) + if the control bit is written to zero when the prescaler is greater than 512 (i.e. the MSB is 1), + prescaler is reset and the MSB changes from 1 --> 0 + ah..so the timer decrements + exactly + and if the timer value was zero at that point, /TIRQ will be asserted + + Fix HuC6280 op TMA with multiple bits set. + + Determine startup state of various chips(including PSG). + + Fix sprite 0 IRQ timing. + + Ensure all state is being saved to save states. + + Fix VRAM->VRAM DMA, SAT DMA timing, and CPU-halting handling with new information from tests on a real system. + + Fix broken SuperGrafx window emulation. + + If power/reset is triggered in the debugger, force a return from MDFNI_Emulate(); either that or clear + the audio buffer on power/reset. To fix a potential sound buffer overflow issue. (Actually, that won't happen + as-is, but + + Emulate disabled button/output when CLR is active on gamepad reads(might need to adjust the multitap code + to buffer data in this case?). + + Double-check timer IRQ semantics vs real system(what reads and writes acknowledge IRQs, cli-then-ack behavior, + mask register write effective delay, etc.). + +GBA: + GSF multiboot support, and make sure it works(and GSF loading in general) on big-endian platforms. + +SMS: + Rewrite VDP execution loop so events happen on the correct cycles more or less, and to remove the ugly IRQ-versus- + IRQ-bit-status-poll hacks. Use "z80_tstates" to do this. + + Simplify and improve(including TH latching of VDP H-counter) IO emulation, and use Genesis controller/gamepad + code(abstract it out of the Genesis code, into hw_input/sega_db9/* or something similar) + + Galactic Protector input when FM sound is enabled. + + Actually save/restore YM2413 data in save states. + +NGP: + Implement low-level BIOS and auxillary hardware emulation, with information provided by Judge. + +VB: + Check if Red Alarm's sound effects are supposed to be totally wonky when various sound effects "overlap". + + Look into getting VIP SCANRDY status bit emulated correctly. + +Genesis: + Fix VDP H-counter read value(write test program if necessary). + + Add Z80 IRQ ack hack which can be controlled by a setting. + + Event system in C68K, fix possible problems with excessively long 68K instructions and the Z80 IRQ + not being handled. + + Mouse emulation is borked, fix it. + + Implement "Virtua Racing" SVP emulation via code supplied by notaz. + +PC-FX: + cdrom/scsicd.cpp + Allow commands that require medium access to complete successfully if there's no disc present and + the "alloc size" field is 0. + + Generate SCSI errors when reserved fields are set to something other than 0(especially cdb[1] and the final cdb + entry). + + Complete mode page emulation: especially the CD audio control page, tests need to be done on the real + system to see if the volume fields have any effect, and if it's possible to have both L and R channels active + (0x3) on a single output port, or if only one is allowed per output port. + + Determine what data command 0xDE, mode 0x03, match 0xB0 is returning(the PhotoCD player uses it, it may + contain information encoding the LBA of the filesystem). + Doing this will require obtaining various CD-i, CD-i Ready, and PhotoCD discs for examination. + + Command 0x42(READ SUB-CHANNEL): + Add proper MCN and ISRC support. + + Figure out the weirdness when the ISRC is requested for a data track. + + Implement Q subchannel interpolation(perhaps globally). + + Only return Q subchannel data for audio operations? + + Emulate audio completion(or lack thereof) status correctly(if completed successfully, + 0x13, and from then on 0x15, I believe). + + Investigate audio status code when scanning. + + mempeekhw + + movbsu, cache load/store breakpoints + + Figure out 1M/4M DRAM mode differences on KING [low priority] + + Set pcfx.rainbow.chromaip default to 0 if the glitch in Deep Blue Fleet when viewing a ship from the side doesn't occur on a real PC-FX. + + Determine correct relative volume levels between ADPCM, CD-DA, and PSG. + + Investigate reported discrepancy between real PC-FX and Mednafen when uploading waveform to PSG by rewriting + the channel number/index before each sample write(on a real PC-FX, it doesn't work; IE, likely either the sample + writes are being ignored, or the waveform memory index is being reset on channel number/index write). + + V810 MUL or MULU overflow flag logic is likely wrong(can't remember which off hand ATM; confirm, and fix). + +NES: + Add some kind of protection against FDS corruption when exiting the emulator in the middle of a disk write. + + Fix apparent sound skew(lost cycles?) messing up blargg's DMC tests. + + Fix weird graphical glitches in Quattro Sports: BMX Simulator + + nes/boards/vrc7.cpp (slot save state saving) + +Safety fopen() replacement for preventing overwriting of files. + +smem_seek() offset signedness fix + +Reexamine the code for choosing which emulation module to use. Highest priority to file extension(as long as the extension is unique to a system, +"bin" is no unique for example), and special magic test functions if that fails. + +Investigate reports of undefined symbols(in V810 FPU emulation code, and the WonderSwan x86 disassembler, and possibly other places). There ARE references to +undefined symbols, but the symbols that reference them are never referenced themselves. We should probably fix this. + +Add dummy copy constructors to lots of our new classes. + +TODO: Add a "SaveStateMD5" member to the MDFNGI struct, to allow the sharing of battery-backed save files between PCE and PCE_FAST +without allowing save states to be shared. + +TODO: Clean up multithreaded CD-ROM reading code. Add fixes for drives that don't support raw subchannel reading and/or raw reading. Add fixes +for drives that return borked(from the wrong sectors) subchannel data. Add fixes for drives that refuse to read garbage mode 1 sectors(or fix readahead to not read +the pregap between audio and data tracks). + +TODO: Do locking in drivers/remote.cpp + +TODO: Consider locking in MDFNI_printf() due to the indentation global variable. + +Alter MD5 hash of games based on the module's name for save states etc.? + +Emulation "module" namespace encapsulation. + +Save state timestamp-related variables consistency checks to avoid the possibility of buffer overruns and, less importantly, locking up the emulator +by use of malicious save states. + +Investigate excessively long pause time after buffer underrun with ALSA and Intel HDA. + +Rewrite the cheat interface, and add support for multiple patches per named cheat. + +Movie recording non-overwriting. + +Clean up intialization/deinitialization code so that more than one game can be loaded per Mednafen run. Including cleaning up the + sound file player interface to not trash a system's MDFNGI struct. + (This is a lot harder than it sounds! :b) + +Debugger(general): + Disassembly address forcible resynchronization has inconsistent results across different emulated systems; make + them consistent. + + assert() in cdrom/scsicd.cpp on line 2629 is being triggered; "loading a save state while + stopped in the debugger brings up the message" + + Breakpoint logger mode(instead of breaking, output the instruction address that caused the breakpoint, + and which breakpoint was triggered(assuming that address+breakpoint pair wasn't outputted to the text file already). + + Add opcode breakpoints to PC-FX and NES debuggers. + + Debugger memory usage map and per-address-space breakpoints. + + Support for multi-line entries in the log viewer. + + fix various debugger problems(first, register updates when in stepping mode, or when new values are inputted in the register editor) + + Up-to-date register updates(for things like timer counter registers) during debugger while in step mode. + + Sprite viewer + + BG map viewer + + Full undefined behavior logging + +Input macro recording. + +Return -1 on game load error in main(), -2(maybe!) for unknown format. + + + +************ +**Old TODO**: +************ + +The following games are broken to some extent: + +Crystalis: Mostly working, but the screen jumps around during + dialogue. It apparently resets the MMC3 IRQ counter + mid-scanline. It'll require low-level PPU and MMC3 + IRQ counter emulation to function properly. + +Kickmaster: IRQ occurs a few CPU cycles too late, interferes with NMI routine, + and causes the game to lock up after the second boss. Luckily, there + are passwords, at least. + *"FIXED" BY HACK* + +Star Wars(PAL Beam Software version): + MMC3 IRQ occurs when it shouldn't, similar to the problem in + Kickmaster. + *"FIXED" BY HACK* + +*** General Features: + + Fix possible UNIF crashes(if no PRGx or CHRx chunks exist, it may crash, + due to changes made in 0.92). + +*** Emulation: + + Figure out what mapper 113 really is. + + Sound frame count stuff on PAL games(is it correct?). + + Fix Zapper emulation(one version of Chiller still doesn't always work correctly). diff --git a/libmednahawk/acinclude.m4 b/libmednahawk/acinclude.m4 new file mode 100644 index 0000000000..ac6f5d6c07 --- /dev/null +++ b/libmednahawk/acinclude.m4 @@ -0,0 +1,594 @@ +# Configure paths for SDL +# Sam Lantinga 9/21/99 +# stolen from Manish Singh +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS +dnl +AC_DEFUN([AM_PATH_SDL], +[dnl +dnl Get the cflags and libraries from the sdl-config script +dnl +AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], + sdl_prefix="$withval", sdl_prefix="") +AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], + sdl_exec_prefix="$withval", sdl_exec_prefix="") + + if test x$sdl_exec_prefix != x ; then + sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_args="$sdl_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl-config + fi + fi + + AC_PATH_PROG(SDL_CONFIG, sdl-config, no) + min_sdl_version=ifelse([$1], ,0.11.0,$1) + AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + fi + + if test "x$no_sdl" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl-config." + fi + SDL_CFLAGS="" + SDL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(SDL_CFLAGS) + AC_SUBST(SDL_LIBS) +]) + + +dnl Alexandre Duret-Lutz +AC_DEFUN([AC_FUNC_MKDIR], +[AC_CHECK_FUNCS([mkdir _mkdir]) +AC_CACHE_CHECK([whether mkdir takes one argument], + [ac_cv_mkdir_takes_one_arg], +[AC_TRY_COMPILE([ +#include +#if HAVE_UNISTD_H +# include +#endif +], [mkdir (".");], +[ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])]) +if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then + AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1, + [Define if mkdir takes only one argument.]) +fi +]) + +dnl Note: +dnl ===== +dnl I have not implemented the following suggestion because I don't have +dnl access to such a broken environment to test the macro. So I'm just +dnl appending the comments here in case you have, and want to fix +dnl AC_FUNC_MKDIR that way. +dnl +dnl |Thomas E. Dickey (dickey@herndon4.his.com) said: +dnl | it doesn't cover the problem areas (compilers that mistreat mkdir +dnl | may prototype it in dir.h and dirent.h, for instance). +dnl | +dnl |Alexandre: +dnl | Would it be sufficient to check for these headers and #include +dnl | them in the AC_TRY_COMPILE block? (and is AC_HEADER_DIRENT +dnl | suitable for this?) +dnl | +dnl |Thomas: +dnl | I think that might be a good starting point (with the set of recommended +dnl | ifdef's and includes for AC_HEADER_DIRENT, of course). + +dnl Configure Paths for Alsa +dnl Some modifications by Richard Boulton +dnl Christopher Lansdown +dnl Jaroslav Kysela +dnl Last modification: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp +dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. +dnl enables arguments --with-alsa-prefix= +dnl --with-alsa-enc-prefix= +dnl --disable-alsatest +dnl +dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, +dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. +dnl +AC_DEFUN([AM_PATH_ALSA], +[dnl Save the original CFLAGS, LDFLAGS, and LIBS +alsa_save_CFLAGS="$CFLAGS" +alsa_save_LDFLAGS="$LDFLAGS" +alsa_save_LIBS="$LIBS" +alsa_found=yes + +dnl +dnl Get the cflags and libraries for alsa +dnl +AC_ARG_WITH(alsa-prefix, +[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], +[alsa_prefix="$withval"], [alsa_prefix=""]) + +AC_ARG_WITH(alsa-inc-prefix, +[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], +[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + +dnl FIXME: this is not yet implemented +AC_ARG_ENABLE(alsatest, +[ --disable-alsatest Do not try to compile and run a test Alsa program], +[enable_alsatest="$enableval"], +[enable_alsatest=yes]) + +dnl Add any special include directories +AC_MSG_CHECKING(for ALSA CFLAGS) +if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" +fi +AC_MSG_RESULT($ALSA_CFLAGS) +CFLAGS="$alsa_save_CFLAGS" + +dnl add any special lib dirs +AC_MSG_CHECKING(for ALSA LDFLAGS) +if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +fi + +dnl add the alsa library +ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +LIBS="$ALSA_LIBS $LIBS" +AC_MSG_RESULT($ALSA_LIBS) + +dnl Check for a working version of libasound that is of the right version. +min_alsa_version=ifelse([$1], ,0.1.1,$1) +AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) +no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + alsa_min_minor_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + alsa_min_micro_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + +AC_LANG_SAVE +AC_LANG_C +AC_TRY_COMPILE([ +#include +], [ +/* ensure backward compatibility */ +#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +#endif +#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +#endif +#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +#endif + +# if(SND_LIB_MAJOR > $alsa_min_major_version) + exit(0); +# else +# if(SND_LIB_MAJOR < $alsa_min_major_version) +# error not present +# endif + +# if(SND_LIB_MINOR > $alsa_min_minor_version) + exit(0); +# else +# if(SND_LIB_MINOR < $alsa_min_minor_version) +# error not present +# endif + +# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +# error not present +# endif +# endif +# endif +exit(0); +], + [AC_MSG_RESULT(found.)], + [AC_MSG_RESULT(not present.) + ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) + alsa_found=no] +) +AC_LANG_RESTORE + +dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. +if test "x$enable_alsatest" = "xyes"; then +AC_CHECK_LIB([asound], [snd_ctl_open],, + [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) + alsa_found=no] +) +fi + +LDFLAGS="$alsa_save_LDFLAGS" +LIBS="$alsa_save_LIBS" + +if test "x$alsa_found" = "xyes" ; then + ifelse([$2], , :, [$2]) +else + ALSA_CFLAGS="" + ALSA_LIBS="" + ifelse([$3], , :, [$3]) +fi + +dnl That should be it. Now just export out symbols: +AC_SUBST(ALSA_CFLAGS) +AC_SUBST(ALSA_LIBS) +]) + +# Configure paths for ESD +# Manish Singh 98-9-30 +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS +dnl +AC_DEFUN([AM_PATH_ESD], +[dnl +dnl Get the cflags and libraries from the esd-config script +dnl +AC_ARG_WITH(esd-prefix,[ --with-esd-prefix=PFX Prefix where ESD is installed (optional)], + esd_prefix="$withval", esd_prefix="") +AC_ARG_WITH(esd-exec-prefix,[ --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)], + esd_exec_prefix="$withval", esd_exec_prefix="") +AC_ARG_ENABLE(esdtest, [ --disable-esdtest Do not try to compile and run a test ESD program], + , enable_esdtest=yes) + + if test x$esd_exec_prefix != x ; then + esd_args="$esd_args --exec-prefix=$esd_exec_prefix" + if test x${ESD_CONFIG+set} != xset ; then + ESD_CONFIG=$esd_exec_prefix/bin/esd-config + fi + fi + if test x$esd_prefix != x ; then + esd_args="$esd_args --prefix=$esd_prefix" + if test x${ESD_CONFIG+set} != xset ; then + ESD_CONFIG=$esd_prefix/bin/esd-config + fi + fi + + AC_PATH_PROG(ESD_CONFIG, esd-config, no) + min_esd_version=ifelse([$1], ,0.2.7,$1) + AC_MSG_CHECKING(for ESD - version >= $min_esd_version) + no_esd="" + if test "$ESD_CONFIG" = "no" ; then + no_esd=yes + else + AC_LANG_SAVE + AC_LANG_C + ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags` + ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs` + + esd_major_version=`$ESD_CONFIG $esd_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + esd_minor_version=`$ESD_CONFIG $esd_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_esdtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $ESD_CFLAGS" + LIBS="$LIBS $ESD_LIBS" +dnl +dnl Now check if the installed ESD is sufficiently new. (Also sanity +dnl checks the results of esd-config to some extent +dnl + rm -f conf.esdtest + AC_TRY_RUN([ +#include +#include +#include +#include + +char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.esdtest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_esd_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_esd_version"); + exit(1); + } + + if (($esd_major_version > major) || + (($esd_major_version == major) && ($esd_minor_version > minor)) || + (($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version); + printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n"); + printf("*** to point to the correct copy of esd-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} + +],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + AC_LANG_RESTORE + fi + fi + if test "x$no_esd" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$ESD_CONFIG" = "no" ; then + echo "*** The esd-config script installed by ESD could not be found" + echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the ESD_CONFIG environment variable to the" + echo "*** full path to esd-config." + else + if test -f conf.esdtest ; then + : + else + echo "*** Could not run ESD test program, checking why..." + CFLAGS="$CFLAGS $ESD_CFLAGS" + LIBS="$LIBS $ESD_LIBS" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([ +#include +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding ESD or finding the wrong" + echo "*** version of ESD. If it is not finding ESD, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means ESD was incorrectly installed" + echo "*** or that you have moved ESD since it was installed. In the latter case, you" + echo "*** may want to edit the esd-config script: $ESD_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + AC_LANG_RESTORE + fi + fi + ESD_CFLAGS="" + ESD_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(ESD_CFLAGS) + AC_SUBST(ESD_LIBS) + rm -f conf.esdtest +]) + +dnl AM_ESD_SUPPORTS_MULTIPLE_RECORD([ACTION-IF-SUPPORTS [, ACTION-IF-NOT-SUPPORTS]]) +dnl Test, whether esd supports multiple recording clients (version >=0.2.21) +dnl +AC_DEFUN([AM_ESD_SUPPORTS_MULTIPLE_RECORD], +[dnl + AC_MSG_NOTICE([whether installed esd version supports multiple recording clients]) + ac_save_ESD_CFLAGS="$ESD_CFLAGS" + ac_save_ESD_LIBS="$ESD_LIBS" + AM_PATH_ESD(0.2.21, + ifelse([$1], , [ + AM_CONDITIONAL(ESD_SUPPORTS_MULTIPLE_RECORD, true) + AC_DEFINE(ESD_SUPPORTS_MULTIPLE_RECORD, 1, + [Define if you have esound with support of multiple recording clients.])], + [$1]), + ifelse([$2], , [AM_CONDITIONAL(ESD_SUPPORTS_MULTIPLE_RECORD, false)], [$2]) + if test "x$ac_save_ESD_CFLAGS" != x ; then + ESD_CFLAGS="$ac_save_ESD_CFLAGS" + fi + if test "x$ac_save_ESD_LIBS" != x ; then + ESD_LIBS="$ac_save_ESD_LIBS" + fi + ) +]) + + + + + +AC_DEFUN([AX_NO_STRICT_OVERFLOW], +[ + AC_MSG_CHECKING(for compiler flags to disable strict overflow) + + nsof_test_prog=["#include +#include +#include +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; + +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; + +#ifdef __GNUC__ +#define NO_INLINE __attribute__((noinline)) +#else +#define NO_INLINE +#endif + +struct MathTestTSOEntry +{ + int32 a; + int32 b; +}; + +// Don't declare as static(though whopr might mess it up anyway) +MathTestTSOEntry MathTestTSOTests[] = +{ + { 0x7FFFFFFF, 2 }, + { 0x7FFFFFFE, 0x7FFFFFFF }, + { 0x7FFFFFFF, 0x7FFFFFFF }, + { 0x7FFFFFFE, 0x7FFFFFFE }, +}; + +static int TestSignedOverflow(void) +{ + for(unsigned int i = 0; i < sizeof(MathTestTSOTests) / sizeof(MathTestTSOEntry); i++) + { + int32 a = MathTestTSOTests[i].a; + int32 b = MathTestTSOTests[i].b; + + if(!((a + b) < a && (a + b) < b)) { return -1; } + + if(!((a + 0x7FFFFFFE) < a)) { return -2; } + if(!((b + 0x7FFFFFFE) < b)) { return -3; } + + if(!((a + 0x7FFFFFFF) < a)) { return -4; } + if(!((b + 0x7FFFFFFF) < b)) { return -5; } + + if(!((int32)(a + 0x80000000) < a)) { return -6; } + if(!((int32)(b + 0x80000000) < b)) { return -7; } + + if(!((int32)(a ^ 0x80000000) < a)) { return -8; } + if(!((int32)(b ^ 0x80000000) < b)) { return -9; } + } + return(0); +} + +static void AntiNSOBugTest_Sub1_a(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub1_a(int *array) +{ + for(int value = 0; value < 127; value++) + array[value] += (int8)value * 15; +} + +static void AntiNSOBugTest_Sub1_b(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub1_b(int *array) +{ + for(int value = 127; value < 256; value++) + array[value] += (int8)value * 15; +} + +static void AntiNSOBugTest_Sub2(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub2(int *array) +{ + for(int value = 0; value < 256; value++) + array[value] += (int8)value * 15; +} + +static void AntiNSOBugTest_Sub3(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub3(int *array) +{ + for(int value = 0; value < 256; value++) + { + if(value >= 128) + array[value] = (value - 256) * 15; + else + array[value] = value * 15; + } +} + +int main(int argc, char *argv[]) +{ + int array1[256], array2[256], array3[256]; + int i; + + memset(array1, 0, sizeof(array1)); + memset(array2, 0, sizeof(array2)); + memset(array3, 0, sizeof(array3)); + + AntiNSOBugTest_Sub1_a(array1); + AntiNSOBugTest_Sub1_b(array1); + AntiNSOBugTest_Sub2(array2); + AntiNSOBugTest_Sub3(array3); + + for(i = 0; i < 256; i++) + { + if((array1[i] != array2[i]) || (array2[i] != array3[i])) + { + exit(-1 - i); + } + } + + { + int tmp = TestSignedOverflow(); + + if(tmp) + exit(tmp); + } + + exit(0); +} +"] + + ac_save_CPPFLAGS="$CPPFLAGS" + NO_STRICT_OVERFLOW_FLAGS="" + + CPPFLAGS="$CPPFLAGS -fno-strict-overflow" + AC_TRY_RUN([$nsof_test_prog], [NO_STRICT_OVERFLOW_FLAGS="-fno-strict-overflow"], [ + CPPFLAGS="$ac_save_CPPFLAGS -fwrapv" + AC_TRY_RUN([$nsof_test_prog], [NO_STRICT_OVERFLOW_FLAGS="-fwrapv"], [AC_MSG_ERROR(Could not find working option to disable strict overflow.)]) + ]) + + CPPFLAGS="$ac_save_CPPFLAGS" + + if test "x$NO_STRICT_OVERFLOW_FLAGS" != x ; then + AC_MSG_RESULT($NO_STRICT_OVERFLOW_FLAGS) + else + AC_MSG_RESULT(none needed apparently) + fi +]) + + + + diff --git a/libmednahawk/aclocal.m4 b/libmednahawk/aclocal.m4 new file mode 100644 index 0000000000..1fb5f6b460 --- /dev/null +++ b/libmednahawk/aclocal.m4 @@ -0,0 +1,1242 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],, +[m4_warning([this file was generated for autoconf 2.67. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.11.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# Figure out how to run the assembler. -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_PROG_AS +# ---------- +AC_DEFUN([AM_PROG_AS], +[# By default we simply use the C compiler to build assembly code. +AC_REQUIRE([AC_PROG_CC]) +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 10 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 16 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.62])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_PROG_CC_C_O +# -------------- +# Like AC_PROG_CC_C_O, but changed for automake. +AC_DEFUN([AM_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC_C_O])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +dnl Make sure AC_PROG_CC is never called again, or it will override our +dnl setting of CC. +m4_define([AC_PROG_CC], + [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# (`yes' being less verbose, `no' or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], +[ --enable-silent-rules less verbose build output (undo: `make V=1') + --disable-silent-rules verbose build output (undo: `make V=0')]) +case $enable_silent_rules in +yes) AM_DEFAULT_VERBOSITY=0;; +no) AM_DEFAULT_VERBOSITY=1;; +*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/ax_cflags_gcc_option.m4]) +m4_include([m4/codeset.m4]) +m4_include([m4/fcntl-o.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/glibc2.m4]) +m4_include([m4/glibc21.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intdiv0.m4]) +m4_include([m4/intl.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/intmax.m4]) +m4_include([m4/inttypes-pri.m4]) +m4_include([m4/inttypes_h.m4]) +m4_include([m4/lcmessage.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/lock.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/printf-posix.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/size_max.m4]) +m4_include([m4/stdint_h.m4]) +m4_include([m4/threadlib.m4]) +m4_include([m4/uintmax_t.m4]) +m4_include([m4/visibility.m4]) +m4_include([m4/wchar_t.m4]) +m4_include([m4/wint_t.m4]) +m4_include([m4/xsize.m4]) +m4_include([acinclude.m4]) diff --git a/libmednahawk/api.cpp b/libmednahawk/api.cpp new file mode 100644 index 0000000000..0e7e093e81 --- /dev/null +++ b/libmednahawk/api.cpp @@ -0,0 +1,194 @@ +#include "mednafen.h" +#include "SDL.h" +#include +#include + +#include "drivers/input.h" +#include "drivers/main.h" +#include "mempatcher.h" +#include "settings-driver.h" +#include "FileWrapper.h" + +extern MDFNGI EmulatedPSX; +void BuildPortsInfo(MDFNGI *gi); + +static MDFNSetting MednafenSettings[] = +{ + { "filesys.untrusted_fip_check", MDFNSF_NOFLAGS, gettext_noop("Enable untrusted file-inclusion path security check."), gettext_noop("When this setting is set to \"1\", the default, paths to files referenced from files like CUE sheets and PSF rips are checked for certain characters that can be used in directory traversal, and if found, loading is aborted. Set it to \"0\" if you want to allow constructs like absolute paths in CUE sheets, but only if you understand the security implications of doing so(see \"Security Issues\" section in the documentation)."), MDFNST_BOOL, "0" }, + { "filesys.path_firmware", MDFNSF_NOFLAGS, gettext_noop("Path to directory for firmware."), NULL, MDFNST_STRING, "firmware" }, + { "filesys.path_sav", MDFNSF_NOFLAGS, gettext_noop("Path to directory for save games and nonvolatile memory."), gettext_noop("WARNING: Do not set this path to a directory that contains Famicom Disk System disk images, or you will corrupt them when you load an FDS game and exit Mednafen."), MDFNST_STRING, "sav" }, + { "filesys.fname_sav", MDFNSF_NOFLAGS, gettext_noop("Format string for save games filename."), gettext_noop("WARNING: %x should always be included, otherwise you run the risk of overwriting save data for games that create multiple save data files.\n\nSee fname_format.txt for more information. Edit at your own risk."), MDFNST_STRING, "%F.%M%x" }, + + //"dynamic" settings needed probably for each console + { "psx.tblur", MDFNSF_NOFLAGS, NULL, NULL, MDFNST_BOOL, "0" }, + { "psx.forcemono", MDFNSF_NOFLAGS, NULL, NULL, MDFNST_BOOL, "0" }, + + // BuildDynamicSetting(&setting, sysname, "tblur.accum", MDFNSF_COMMON_TEMPLATE | MDFNSF_CAT_VIDEO, CSD_tblur_accum, MDFNST_BOOL, "0"); + // BuildDynamicSetting(&setting, sysname, "tblur.accum.amount", MDFNSF_COMMON_TEMPLATE | MDFNSF_CAT_VIDEO, CSD_tblur_accum_amount, MDFNST_FLOAT, "50", "0", "100"); +}; + + +static MDFN_Surface *VTBuffer[2] = { NULL, NULL }; +static MDFN_Rect *VTLineWidths[2] = { NULL, NULL }; +int16 soundbuf[1024*1024]; //how big? big enough. +int VTBackBuffer = 0; +static MDFN_Rect VTDisplayRects[2]; +void FrameAdvance() +{ + EmulateSpecStruct espec; + memset(&espec, 0, sizeof(EmulateSpecStruct)); + + uint32 pitch32 = CurGame->fb_width; + MDFN_PixelFormat nf(MDFN_COLORSPACE_RGB, 16, 8, 0, 24); + + if(VTBuffer[0] == NULL || VTBuffer[0]->w != CurGame->fb_width || VTBuffer[0]->h != CurGame->fb_height) + { + if(VTBuffer[0]) delete VTBuffer[0]; + if(VTLineWidths[0]) free(VTLineWidths[0]); + VTBuffer[0] = new MDFN_Surface(NULL, CurGame->fb_width, CurGame->fb_height, CurGame->fb_width, nf); + VTLineWidths[0] = (MDFN_Rect *)calloc(CurGame->fb_height, sizeof(MDFN_Rect)); + } + + espec.surface = (MDFN_Surface *)VTBuffer[VTBackBuffer]; + espec.LineWidths = (MDFN_Rect *)VTLineWidths[VTBackBuffer]; + espec.skip = false; + espec.soundmultiplier = 1.0; + espec.NeedRewind = DNeedRewind; + + //espec.SoundRate = GetSoundRate(); + //espec.SoundBuf = GetEmuModSoundBuffer(&espec.SoundBufMaxSize); + //espec.SoundVolume = (double)MDFN_GetSettingUI("sound.volume") / 100; + + espec.SoundBufMaxSize = 1024*1024; + espec.SoundRate = 44100; + espec.SoundBuf = soundbuf; + espec.SoundVolume = 1.0; + + + MDFNI_Emulate(&espec); + + VTDisplayRects[VTBackBuffer] = espec.DisplayRect; + + //TODO sound + //sound = espec.SoundBuf + (espec.SoundBufSizeALMS * CurGame->soundchan); + //ssize = espec.SoundBufSize - espec.SoundBufSizeALMS; +} + +extern "C" __declspec(dllexport) void close() +{ + MDFNI_CloseGame(); +} + +enum eProp +{ + GetPtr_FramebufferPointer, + GetPtr_FramebufferPitchPixels, + GetPtr_FramebufferWidth, + GetPtr_FramebufferHeight, + SetPtr_FopenCallback, + SetPtr_FcloseCallback, + SetPtr_FopCallback +}; + +typedef void* (*t_FopenCallback)(const char* fname, const char* mode); +static t_FopenCallback FopenCallback; + +typedef int (*t_FcloseCallback)(void* fp); +static t_FcloseCallback FcloseCallback; + +typedef int64 (*t_FopCallback)(int op, void* ptr, int64 a, int64 b, FILE* fp); +static t_FopCallback FopCallback; + +extern "C" __declspec(dllexport) void dll_SetPropPtr(int prop, void* ptr) +{ + switch((eProp)prop) + { + case SetPtr_FopenCallback: FopenCallback = (t_FopenCallback)ptr; break; + case SetPtr_FcloseCallback: FcloseCallback = (t_FcloseCallback)ptr; break; + case SetPtr_FopCallback: FopCallback = (t_FopCallback)ptr; break; + } +} + +extern "C" __declspec(dllexport) void* dll_GetPropPtr(int prop) +{ + switch((eProp)prop) + { + case GetPtr_FramebufferPointer: + return VTBuffer[0]->pixels; + case GetPtr_FramebufferPitchPixels: + return (void*)VTBuffer[0]->pitchinpix; + case GetPtr_FramebufferWidth: + return (void*)VTBuffer[0]->w; + case GetPtr_FramebufferHeight: + return (void*)VTBuffer[0]->h; + default: + return 0; + } +} + +extern "C" __declspec(dllexport) bool psx_LoadCue(const char* path) +{ + MDFNI_CloseGame(); //todo - copy CloseGame into api.. dont like everything i see in there + + //load the psx game + MDFNGI *gi = CurGame = MDFNI_LoadCD("psx", path); + + //does some kind of input hooking-up + BuildPortsInfo(gi); + + return true; +} + +extern "C" __declspec(dllexport) void psx_FrameAdvance() +{ + FrameAdvance(); +} + +extern "C" __declspec(dllexport) bool dll_Initialize() +{ + //initialize emulator cores according to a list maintained inside this method + std::vector ExternalSystems; //wtf are external systems then? custom ones not known to mednafen's internals? + MDFNI_InitializeModules(ExternalSystems); + + MDFNI_SetBaseDirectory("$psx"); + + //add settings specific to each core + for(unsigned int x = 0; x < MDFNSystems.size(); x++) + { + if(MDFNSystems[x]->Settings) + MDFN_MergeSettings(MDFNSystems[x]->Settings); + } + + //prep settings. for now we reuse a lot of mednafen's internal settings building. i would prefer to have supported settings enumerated in here + static std::vector NeoDriverSettings; //these better be static or else shit will explode + MakeInputSettings(NeoDriverSettings); + MDFN_MergeSettings(NeoDriverSettings); + MDFN_MergeSettings(MednafenSettings); + + //settings hacks + MDFNI_SetSetting("filesys.path_firmware","firmware"); + MDFNI_SetSetting("filesys.path_sav","sav"); + + //cheats.. crashes without it, maybe we'll want to use the cheat system later + MDFN_MergeSettings(MDFNMP_Settings); + + return true; +} + + +//--------- + +FILE* headless_fopen(const char* path, const char* mode) +{ + return (FILE*)FopenCallback(path,mode); +} + +int headless_fclose(FILE* fp) +{ + return FcloseCallback(fp); +} + +int64 headless_fop(FOP op, void* ptr, int64 a, int64 b, FILE* fp) +{ + return FopCallback((int)op, ptr, a, b, fp); +} \ No newline at end of file diff --git a/libmednahawk/autogen.sh b/libmednahawk/autogen.sh new file mode 100644 index 0000000000..e684715f6b --- /dev/null +++ b/libmednahawk/autogen.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +libtoolize --force --copy +#gettextize --force --copy --intl +autoheader +aclocal -I m4 +autoconf +automake -a -c -f + +rm autom4te.cache/* +rmdir autom4te.cache diff --git a/libmednahawk/compile b/libmednahawk/compile new file mode 100644 index 0000000000..c924e835f5 --- /dev/null +++ b/libmednahawk/compile @@ -0,0 +1,143 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2009-10-06.20; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software +# Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file `INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; +esac + +ofile= +cfile= +eat= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no `-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # `.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use `[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libmednahawk/config.guess b/libmednahawk/config.guess new file mode 100644 index 0000000000..928ced7a31 --- /dev/null +++ b/libmednahawk/config.guess @@ -0,0 +1,1502 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +# Free Software Foundation, Inc. + +timestamp='2009-12-30' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libmednahawk/config.h b/libmednahawk/config.h new file mode 100644 index 0000000000..7a332d56da --- /dev/null +++ b/libmednahawk/config.h @@ -0,0 +1,22 @@ +//win32 msvc config +#pragma once +#define HAVE__MKDIR 1 +#define LSB_FIRST +#define SIZEOF_DOUBLE 8 +#define WANT_DEBUGGER 1 +#define snprintf _snprintf +#define strcasecmp(x,y) _stricmp(x,y) +#define strncasecmp(x, y, l) strnicmp(x, y, l) +#define _(x) (x) +#define PSS "/" +#define round(x) (floorf((x) + 0.5f)) +#define strdup _strdup +#define strtoull _strtoui64 +#define strtoll _strtoi64 +#define _USE_MATH_DEFINES +#define world_strtod strtod +#define WANT_PSX_EMU + + +#define MEDNAFEN_VERSION "0.999.999-WIP" +#define MEDNAFEN_VERSION_NUMERIC 0x999999 diff --git a/libmednahawk/config.rpath b/libmednahawk/config.rpath new file mode 100644 index 0000000000..8e96d35725 --- /dev/null +++ b/libmednahawk/config.rpath @@ -0,0 +1,672 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2010 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile-* | tilegx-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libmednahawk/configure b/libmednahawk/configure new file mode 100644 index 0000000000..0a19881ee5 --- /dev/null +++ b/libmednahawk/configure @@ -0,0 +1,29422 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.67. +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +$* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= +PACKAGE_URL= + +ac_unique_file="src/mednafen.cpp" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +gt_needs= +ac_header_list= +gl_use_threads_default= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +TRIO_CFLAGS +SSE3_CFLAGS +SSE2_CFLAGS +SSE_CFLAGS +MMX_CFLAGS +ARCH_POWERPC_ALTIVEC_FALSE +ARCH_POWERPC_ALTIVEC_TRUE +ARCH_POWERPC_FALSE +ARCH_POWERPC_TRUE +ARCH_X86_64_FALSE +ARCH_X86_64_TRUE +ARCH_X86_32_FALSE +ARCH_X86_32_TRUE +ARCH_X86_FALSE +ARCH_X86_TRUE +HAVE_POSIX_SOCKETS_FALSE +HAVE_POSIX_SOCKETS_TRUE +SNDFILE_LIBS +SNDFILE_CFLAGS +LIBCDIO_LIBS +LIBCDIO_CFLAGS +HAVE_LINUX_JOYSTICK_FALSE +HAVE_LINUX_JOYSTICK_TRUE +HAVE_LIBCDIO_FALSE +HAVE_LIBCDIO_TRUE +UNIX_FALSE +UNIX_TRUE +WIN32_FALSE +WIN32_TRUE +SDL_LIBS +SDL_CFLAGS +SDL_CONFIG +JACK_LIBS +JACK_CFLAGS +ALSA_LIBS +ALSA_CFLAGS +HAVE_JACK_FALSE +HAVE_JACK_TRUE +HAVE_SDL_FALSE +HAVE_SDL_TRUE +HAVE_DIRECTSOUND_FALSE +HAVE_DIRECTSOUND_TRUE +HAVE_ALSA_FALSE +HAVE_ALSA_TRUE +HAVE_OSSDSP_FALSE +HAVE_OSSDSP_TRUE +WANT_WSWAN_EMU_FALSE +WANT_WSWAN_EMU_TRUE +WANT_VB_EMU_FALSE +WANT_VB_EMU_TRUE +WANT_SNES_EMU_FALSE +WANT_SNES_EMU_TRUE +WANT_PSX_EMU_FALSE +WANT_PSX_EMU_TRUE +WANT_PCFX_EMU_FALSE +WANT_PCFX_EMU_TRUE +WANT_PCE_FAST_EMU_FALSE +WANT_PCE_FAST_EMU_TRUE +WANT_PCE_EMU_FALSE +WANT_PCE_EMU_TRUE +WANT_NGP_EMU_FALSE +WANT_NGP_EMU_TRUE +WANT_NES_EMU_FALSE +WANT_NES_EMU_TRUE +WANT_SMS_EMU_FALSE +WANT_SMS_EMU_TRUE +WANT_MD_EMU_FALSE +WANT_MD_EMU_TRUE +WANT_LYNX_EMU_FALSE +WANT_LYNX_EMU_TRUE +WANT_GBA_EMU_FALSE +WANT_GBA_EMU_TRUE +WANT_GB_EMU_FALSE +WANT_GB_EMU_TRUE +WANT_DEBUGGER_FALSE +WANT_DEBUGGER_TRUE +AM_CXXFLAGS +AM_CFLAGS +GBA_EXTRA_FLAGS +SNES_EXTRA_CXXFLAGS +SNES_EXTRA_FLAGS +WARNING_FLAGS +MATH_OPTIMIZER_FLAGS +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +INTL_LIBTOOL_SUFFIX_PREFIX +INTLOBJS +GENCAT +INSTOBJEXT +DATADIRNAME +CATOBJEXT +USE_INCLUDED_LIBINTL +BUILD_INCLUDED_LIBINTL +LTLIBC +WINDRES +WOE32 +WOE32DLL +HAVE_WPRINTF +HAVE_NEWLOCALE +HAVE_SNPRINTF +HAVE_ASPRINTF +HAVE_POSIX_PRINTF +INTL_DEFAULT_VERBOSITY +INTL_MACOSX_LIBS +GLIBC21 +INTLBISON +LTLIBMULTITHREAD +LIBMULTITHREAD +LTLIBTHREAD +LIBTHREAD +LIBPTH_PREFIX +LTLIBPTH +LIBPTH +PRI_MACROS_BROKEN +ALLOCA +GLIBC2 +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +LTLIBICONV +LIBICONV +XMKMF +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +HAVE_VISIBILITY +CFLAG_VISIBILITY +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +lt_ECHO +RANLIB +AR +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCCAS_FALSE +am__fastdepCCAS_TRUE +CCASDEPMODE +CCASFLAGS +CCAS +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +EGREP +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_silent_rules +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +enable_libtool_lock +enable_largefile +with_x +enable_rpath +with_libiconv_prefix +enable_nls +enable_threads +with_libpth_prefix +with_included_gettext +with_libintl_prefix +enable_debugger +enable_cjk_fonts +enable_altivec +enable_gb +enable_gba +enable_lynx +enable_md +enable_nes +enable_ngp +enable_pce +enable_pce_fast +enable_pcfx +enable_psx +enable_sms +enable_snes +enable_vb +enable_wswan +enable_alsa +with_alsa_prefix +with_alsa_inc_prefix +enable_alsatest +enable_jack +with_sdl_prefix +with_sdl_exec_prefix +with_libcdio +with_libsndfile +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CCAS +CCASFLAGS +CXX +CXXFLAGS +CCC +CXXCPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +XMKMF +JACK_CFLAGS +JACK_LIBS +LIBCDIO_CFLAGS +LIBCDIO_LIBS +SNDFILE_CFLAGS +SNDFILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-silent-rules less verbose build output (undo: `make V=1') + --disable-silent-rules verbose build output (undo: `make V=0') + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --disable-rpath do not hardcode runtime library paths + --disable-nls do not use Native Language Support + --enable-threads={posix|solaris|pth|win32} + specify multithreading API + --disable-threads build without multithread safety + --enable-debugger build with internal debugger [[default=yes]] + --enable-cjk-fonts build with internal CJK(Chinese, Japanese, Korean) + fonts [[default=yes]] + --enable-altivec use AltiVec extensions on PowerPC/POWER ISA + processors [[default=yes]] + --enable-gb build with GameBoy emulation [[default=yes]] + --enable-gba build with GameBoy Advance emulation [[default=yes]] + --enable-lynx build with Atari Lynx emulation [[default=yes]] + --enable-md build with Sega Genesis/MegaDrive emulation + [[default=yes]] + --enable-nes build with Nintendo Entertainment System emulation + [[default=yes]] + --enable-ngp build with Neo Geo Pocket emulation [[default=yes]] + --enable-pce build with PC Engine(TurboGrafx 16) emulation + [[default=yes]] + --enable-pce-fast build the separate, fast PC Engine(TurboGrafx 16) + emulation [[default=yes]] + --enable-pcfx build with PC-FX emulation [[default=yes]] + --enable-psx build with PlayStation emulation [[default=yes]] + --enable-sms build with SMS+GG emulation [[default=yes]] + --enable-snes build with SNES emulation [[default=yes]] + --enable-vb build with Virtual Boy emulation [[default=yes]] + --enable-wswan build with WonderSwan emulation [[default=yes]] + --enable-alsa support the ALSA audio API [[default=yes]] + --disable-alsatest Do not try to compile and run a test Alsa program + --enable-jack support the JACK audio API [[default=yes]] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-x use the X Window System + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib + --without-libpth-prefix don't search for libpth in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional) + --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional) + --with-sdl-prefix=PFX Prefix where SDL is installed (optional) + --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) + --with-libcdio support physical CD reading [default=yes] + --with-libsndfile support various sound file formats in ripped CD + images [default=yes] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CCAS assembler compiler command (defaults to CC) + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + XMKMF Path to xmkmf, Makefile generator for X Window System + JACK_CFLAGS C compiler flags for JACK, overriding pkg-config + JACK_LIBS linker flags for JACK, overriding pkg-config + LIBCDIO_CFLAGS + C compiler flags for LIBCDIO, overriding pkg-config + LIBCDIO_LIBS + linker flags for LIBCDIO, overriding pkg-config + SNDFILE_CFLAGS + C compiler flags for SNDFILE, overriding pkg-config + SNDFILE_LIBS + linker flags for SNDFILE, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.67 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval "test \"\${$3+set}\"" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES +# --------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_cxx_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_cxx_check_type + +# ac_fn_cxx_try_run LINENO +# ------------------------ +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_cxx_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_run + +# ac_fn_cxx_compute_int LINENO EXPR VAR INCLUDES +# ---------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_cxx_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_cxx_check_func + +# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_cxx_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval "test \"\${$3+set}\"" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_cxx_check_header_mongrel + +# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_cxx_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval "test \"\${$3+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_cxx_check_header_compile +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.67. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5 ; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +gt_needs="$gt_needs " +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5 ; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5 ; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5 ; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5 ; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5 ; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5 ; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = x""yes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test "${ac_cv_safe_to_define___extensions__+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + + + +# +# Avoid trailing and leading zeroes in the decimal version components to avoid confusing not-so-learned people. +# +MEDNAFEN_VERSION='0.9.26-WIP' +MEDNAFEN_VERSION_NUMERIC=0x000926 + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5 ;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version='1.11' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=mednafen + VERSION=$MEDNAFEN_VERSION + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in +yes) AM_DEFAULT_VERBOSITY=0;; +no) AM_DEFAULT_VERBOSITY=1;; +*) AM_DEFAULT_VERBOSITY=1;; +esac +AM_BACKSLASH='\' + +ac_config_headers="$ac_config_headers include/config.h:include/config.h.in" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5 ; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5 ; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# By default we simply use the C compiler to build assembly code. + +test "${CCAS+set}" = set || CCAS=$CC +test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + + +depcc="$CCAS" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CCAS_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CCAS_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CCAS_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then + am__fastdepCCAS_TRUE= + am__fastdepCCAS_FALSE='#' +else + am__fastdepCCAS_TRUE='#' + am__fastdepCCAS_FALSE= +fi + + +if test "x$CC" != xcc; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 +$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 +$as_echo_n "checking whether cc understands -c and -o together... " >&6; } +fi +set dummy $CC; ac_cc=`$as_echo "$2" | + sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' +rm -f conftest2.* +if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.$ac_ext >&5' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' + rm -f conftest2.* + if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f core conftest* + +fi +if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h + +fi + +# FIXME: we rely on the cache variable name because +# there is no other way. +set dummy $CC +am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o +if test "$am_t" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5 ; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.2.6b' +macro_revision='1.3017' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if test "${ac_cv_path_FGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test "${lt_cv_path_NM+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$ac_tool_prefix"; then + for ac_prog in "dumpbin -symbols" "link -dump -symbols" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in "dumpbin -symbols" "link -dump -symbols" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if test "${lt_cv_nm_interface+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:7180: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:7183: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:7186: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + + + + + + + + + + + + + + + + + + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 8391 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +_lt_caught_CXX_error=yes; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if test "${lt_cv_objdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + + + + + + + + + + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:10180: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:10184: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + + + + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:10519: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:10523: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:10624: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:10628: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:10679: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:10683: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void) {} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 13063 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 13159 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15115: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15119: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15214: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15218: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15266: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15270: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + + + + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 +$as_echo_n "checking whether the -Werror option is usable... " >&6; } + if test "${gl_cv_cc_vis_werror+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gl_cv_cc_vis_werror=yes +else + gl_cv_cc_vis_werror=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_CFLAGS" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 +$as_echo "$gl_cv_cc_vis_werror" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 +$as_echo_n "checking for simple visibility declarations... " >&6; } + if test "${gl_cv_cc_visibility+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gl_cv_cc_visibility=yes +else + gl_cv_cc_visibility=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_CFLAGS" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 +$as_echo "$gl_cv_cc_visibility" >&6; } + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + + + +cat >>confdefs.h <<_ACEOF +#define HAVE_VISIBILITY $HAVE_VISIBILITY +_ACEOF + + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if test "${ac_cv_sys_largefile_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_cxx_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test "${ac_cv_sys_file_offset_bits+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if test "${ac_cv_sys_large_files+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } +if test "${ac_cv_sys_largefile_source+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include /* for off_t */ + #include +int +main () +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_sys_largefile_source=no; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGEFILE_SOURCE 1 +#include /* for off_t */ + #include +int +main () +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_sys_largefile_source=1; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_cv_sys_largefile_source=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 +$as_echo "$ac_cv_sys_largefile_source" >&6; } +case $ac_cv_sys_largefile_source in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source +_ACEOF +;; +esac +rm -rf conftest* + +# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug +# in glibc 2.1.3, but that breaks too many other things. +# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. +if test $ac_cv_sys_largefile_source != unknown; then + +$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h + +fi + + +# sizeof tests need to come after largefile support macros + +ac_fn_cxx_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long +_ACEOF + +fi + +ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = x""yes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } +if test "${ac_cv_sizeof_short+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (short) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_short=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if test "${ac_cv_sizeof_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (int) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if test "${ac_cv_sizeof_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } +if test "${ac_cv_sizeof_long_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long long) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_long_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 +$as_echo_n "checking size of double... " >&6; } +if test "${ac_cv_sizeof_double+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_double" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (double) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_double=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 +$as_echo "$ac_cv_sizeof_double" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __int64" >&5 +$as_echo_n "checking size of __int64... " >&6; } +if test "${ac_cv_sizeof___int64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (__int64))" "ac_cv_sizeof___int64" "$ac_includes_default"; then : + +else + if test "$ac_cv_type___int64" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (__int64) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof___int64=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___int64" >&5 +$as_echo "$ac_cv_sizeof___int64" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF___INT64 $ac_cv_sizeof___int64 +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 +$as_echo_n "checking size of void *... " >&6; } +if test "${ac_cv_sizeof_void_p+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_void_p" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (void *) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_void_p=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +$as_echo "$ac_cv_sizeof_void_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_VOID_P $ac_cv_sizeof_void_p +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +$as_echo_n "checking size of size_t... " >&6; } +if test "${ac_cv_sizeof_size_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_size_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (size_t) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_size_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +$as_echo "$ac_cv_sizeof_size_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ptrdiff_t" >&5 +$as_echo_n "checking size of ptrdiff_t... " >&6; } +if test "${ac_cv_sizeof_ptrdiff_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (ptrdiff_t))" "ac_cv_sizeof_ptrdiff_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_ptrdiff_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (ptrdiff_t) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_ptrdiff_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ptrdiff_t" >&5 +$as_echo "$ac_cv_sizeof_ptrdiff_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_PTRDIFF_T $ac_cv_sizeof_ptrdiff_t +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 +$as_echo_n "checking size of off_t... " >&6; } +if test "${ac_cv_sizeof_off_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_off_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (off_t) +See \`config.log' for more details" "$LINENO" 5 ; } + else + ac_cv_sizeof_off_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 +$as_echo "$ac_cv_sizeof_off_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_OFF_T $ac_cv_sizeof_off_t +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +for ac_func in memcmp memcpy memmove memset mmap munmap madvise signal sigaction fcntl getenv putenv setenv gettimeofday getpwuid getuid nanosleep usleep strerror strerror_r ftello fopen64 fseeko64 ftello64 fstat64 +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_header in fcntl.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FCNTL_H 1 +_ACEOF + +fi + +done + +for ac_func in mkdir _mkdir +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mkdir takes one argument" >&5 +$as_echo_n "checking whether mkdir takes one argument... " >&6; } +if test "${ac_cv_mkdir_takes_one_arg+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if HAVE_UNISTD_H +# include +#endif + +int +main () +{ +mkdir ("."); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_mkdir_takes_one_arg=yes +else + ac_cv_mkdir_takes_one_arg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mkdir_takes_one_arg" >&5 +$as_echo "$ac_cv_mkdir_takes_one_arg" >&6; } +if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then + +$as_echo "#define MKDIR_TAKES_ONE_ARG 1" >>confdefs.h + +fi + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +# +# Check for any libraries that need to be linked against for clock_gettime(). +# +# (posix4 is apparently used by much older versions of Solaris according to tar, pre-7, so maybe it's not necessary +# for Mednafen?) +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +$as_echo_n "checking for library containing clock_gettime... " >&6; } +if test "${ac_cv_search_clock_gettime+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_clock_gettime+set}" = set; then : + break +fi +done +if test "${ac_cv_search_clock_gettime+set}" = set; then : + +else + ac_cv_search_clock_gettime=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +$as_echo "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +for ac_func in clock_gettime +do : + ac_fn_cxx_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_CLOCK_GETTIME 1 +_ACEOF + +fi +done + + + +$as_echo "#define MINILZO_HAVE_CONFIG_H 1" >>confdefs.h + + +ac_fn_cxx_check_header_mongrel "$LINENO" "OpenGL/gl.h" "ac_cv_header_OpenGL_gl_h" "$ac_includes_default" +if test "x$ac_cv_header_OpenGL_gl_h" = x""yes; then : + HAVE_OPENGL_GL_H=true +else + HAVE_OPENGL_GL_H=false +fi + + +if $HAVE_OPENGL_GL_H +then + +$as_echo "#define HAVE_APPLE_OPENGL_FRAMEWORK 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then : + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5 ;; #( + *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib la dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /usr/lib64 | /lib | /lib64) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # We can compile using X headers with no special include directory. +ac_x_includes= +else + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lX11 $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + LIBS=$ac_save_LIBS +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib la dll; do + if test -r "$ac_dir/libX11.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +$as_echo "$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } +fi + + + if test "x${x_includes}" != "x"; then + CPPFLAGS="-I${x_includes} ${CPPFLAGS}" + fi + + ac_fn_cxx_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default" +if test "x$ac_cv_header_GL_gl_h" = x""yes; then : + HAVE_GL_GL_H=true +else + HAVE_GL_GL_H=false +fi + + + + if test x$HAVE_GL_GL_H = xfalse; then + as_fn_error $? "*** OpenGL header file not found!" "$LINENO" 5 + fi +fi + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${acl_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${acl_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if test "${acl_cv_rpath+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then : + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +$as_echo_n "checking for 64-bit host... " >&6; } +if test "${gl_cv_solaris_64bit+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _LP64 +sixtyfour bits +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sixtyfour bits" >/dev/null 2>&1; then : + gl_cv_solaris_64bit=yes +else + gl_cv_solaris_64bit=no +fi +rm -f conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +$as_echo "$gl_cv_solaris_64bit" >&6; } + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if test "${am_cv_func_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if test "${am_cv_func_iconv_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\263"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +else + am_cv_func_iconv_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LIBS="$am_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if test "${am_cv_proto_iconv+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + am_cv_proto_iconv_arg1="" +else + am_cv_proto_iconv_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: + $am_cv_proto_iconv" >&5 +$as_echo " + $am_cv_proto_iconv" >&6; } + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +$as_echo_n "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.18 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_GMSGFMT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_XGETTEXT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_MSGMERGE+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; } +if test "${ac_cv_gnu_library_2+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then : + ac_cv_gnu_library_2=yes +else + ac_cv_gnu_library_2=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 +$as_echo "$ac_cv_gnu_library_2" >&6; } + + GLIBC2="$ac_cv_gnu_library_2" + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if test "${ac_cv_c_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 +$as_echo_n "checking for stdint.h... " >&6; } +if test "${gl_cv_header_stdint_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; return !i; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gl_cv_header_stdint_h=yes +else + gl_cv_header_stdint_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 +$as_echo "$gl_cv_header_stdint_h" >&6; } + if test $gl_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if test "${ac_cv_working_alloca_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if test "${ac_cv_func_alloca_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if test "${ac_cv_os_cray+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if test "${ac_cv_c_stack_direction+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + return find_stack_direction () < 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in getpagesize +do : + ac_fn_cxx_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 +$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gt_cv_int_divbyzero_sigfpe= + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On MacOS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + if test "$cross_compiling" = yes; then : + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + gt_cv_int_divbyzero_sigfpe=yes +else + gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 +$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 +$as_echo_n "checking for inttypes.h... " >&6; } +if test "${gl_cv_header_inttypes_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; return !i; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gl_cv_header_inttypes_h=yes +else + gl_cv_header_inttypes_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 +$as_echo "$gl_cv_header_inttypes_h" >&6; } + if test $gl_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +$as_echo_n "checking for unsigned long long int... " >&6; } +if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_type_unsigned_long_long_int=yes +else + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h + + fi + + + for ac_header in inttypes.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_inttypes_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 +$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } +if test "${gt_cv_inttypes_pri_broken+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gt_cv_inttypes_pri_broken=no +else + gt_cv_inttypes_pri_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 +$as_echo "$gt_cv_inttypes_pri_broken" >&6; } + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + + + + + + + + # Check whether --enable-threads was given. +if test "${enable_threads+set}" = set; then : + enableval=$enable_threads; gl_use_threads=$enableval +else + if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else + case "$host_os" in + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac + fi + +fi + + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_TRY_LINK test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi + + + + + + + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 +$as_echo_n "checking whether imported symbols can be declared weak... " >&6; } +if test "${gl_cv_have_weak+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gl_cv_have_weak=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern void xyzzy (); +#pragma weak xyzzy +int +main () +{ +xyzzy(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gl_cv_have_weak=maybe +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $gl_cv_have_weak = maybe; then + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __ELF__ + Extensible Linking Format + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Extensible Linking Format" >/dev/null 2>&1; then : + gl_cv_have_weak="guessing yes" +else + gl_cv_have_weak="guessing no" +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + gl_cv_have_weak=yes +else + gl_cv_have_weak=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 +$as_echo "$gl_cv_have_weak" >&6; } + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + ac_fn_cxx_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = x""yes; then : + gl_have_pthread_h=yes +else + gl_have_pthread_h=no +fi + + + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_mutex_lock((pthread_mutex_t*)0); + pthread_mutexattr_init((pthread_mutexattr_t*)0); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gl_have_pthread=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } +if test "${ac_cv_lib_pthread_pthread_kill+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_kill=yes +else + ac_cv_lib_pthread_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = x""yes; then : + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + +$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h + + esac + +fi + + else + # Some library is needed. Try libpthread and libc_r. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } +if test "${ac_cv_lib_pthread_pthread_kill+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_kill=yes +else + ac_cv_lib_pthread_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = x""yes; then : + gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread +fi + + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 +$as_echo_n "checking for pthread_kill in -lc_r... " >&6; } +if test "${ac_cv_lib_c_r_pthread_kill+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc_r $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_c_r_pthread_kill=yes +else + ac_cv_lib_c_r_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 +$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; } +if test "x$ac_cv_lib_c_r_pthread_kill" = x""yes; then : + gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r +fi + + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + +$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h + + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + +$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +thr_self(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gl_have_solaristhread=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + +$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h + + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + +$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 +$as_echo_n "checking how to link with libpth... " >&6; } +if test "${ac_cv_libpth_libs+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libpth-prefix was given. +if test "${with_libpth_prefix+set}" = set; then : + withval=$with_libpth_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBPTH= + LTLIBPTH= + INCPTH= + LIBPTH_PREFIX= + HAVE_LIBPTH= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='pth ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a" + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'pth'; then + LIBPTH_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'pth'; then + LIBPTH_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCPTH="${INCPTH}${INCPTH:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBPTH; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBPTH="${LIBPTH}${LIBPTH:+ }$dep" + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep" + ;; + esac + done + fi + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir" + done + fi + + + + + + + ac_cv_libpth_libs="$LIBPTH" + ac_cv_libpth_ltlibs="$LTLIBPTH" + ac_cv_libpth_cppflags="$INCPTH" + ac_cv_libpth_prefix="$LIBPTH_PREFIX" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 +$as_echo "$ac_cv_libpth_libs" >&6; } + LIBPTH="$ac_cv_libpth_libs" + LTLIBPTH="$ac_cv_libpth_ltlibs" + INCPTH="$ac_cv_libpth_cppflags" + LIBPTH_PREFIX="$ac_cv_libpth_prefix" + + for element in $INCPTH; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + + + HAVE_LIBPTH=yes + + + + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lpth" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pth_self(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gl_have_pth=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + +$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h + + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + +$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=win32 + +$as_echo "#define USE_WIN32_THREADS 1" >>confdefs.h + + fi + fi + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 +$as_echo_n "checking for multithread API to use... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 +$as_echo "$gl_threads_api" >&6; } + + + + + + + + + + + + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + ac_fn_cxx_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include +" +if test "x$ac_cv_type_pthread_rwlock_t" = x""yes; then : + +$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h + +fi + + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + + + + + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether feof_unlocked is declared" >&5 +$as_echo_n "checking whether feof_unlocked is declared... " >&6; } +if test "${ac_cv_have_decl_feof_unlocked+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef feof_unlocked + char *p = (char *) feof_unlocked; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_have_decl_feof_unlocked=yes +else + ac_cv_have_decl_feof_unlocked=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_feof_unlocked" >&5 +$as_echo "$ac_cv_have_decl_feof_unlocked" >&6; } + if test $ac_cv_have_decl_feof_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED $gt_value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fgets_unlocked is declared" >&5 +$as_echo_n "checking whether fgets_unlocked is declared... " >&6; } +if test "${ac_cv_have_decl_fgets_unlocked+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef fgets_unlocked + char *p = (char *) fgets_unlocked; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_have_decl_fgets_unlocked=yes +else + ac_cv_have_decl_fgets_unlocked=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_fgets_unlocked" >&5 +$as_echo "$ac_cv_have_decl_fgets_unlocked" >&6; } + if test $ac_cv_have_decl_fgets_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED $gt_value +_ACEOF + + + + + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_INTLBISON+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_INTLBISON="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 +$as_echo "$INTLBISON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 +$as_echo_n "checking version of bison... " >&6; } + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 +$as_echo "$ac_prog_version" >&6; } + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +$as_echo_n "checking for long long int... " >&6; } +if test "${ac_cv_type_long_long_int+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if test "$cross_compiling" = yes; then : + ac_cv_type_long_long_int=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main () +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + ac_cv_type_long_long_int=yes +else + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + ac_cv_type_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +$as_echo "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 +$as_echo_n "checking for wchar_t... " >&6; } +if test "${gt_cv_c_wchar_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + wchar_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gt_cv_c_wchar_t=yes +else + gt_cv_c_wchar_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 +$as_echo "$gt_cv_c_wchar_t" >&6; } + if test $gt_cv_c_wchar_t = yes; then + +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +$as_echo_n "checking for wint_t... " >&6; } +if test "${gt_cv_c_wint_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gt_cv_c_wint_t=yes +else + gt_cv_c_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +$as_echo "$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 +$as_echo_n "checking for intmax_t... " >&6; } +if test "${gt_cv_c_intmax_t+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + +int +main () +{ +intmax_t x = -1; + return !x; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + gt_cv_c_intmax_t=yes +else + gt_cv_c_intmax_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 +$as_echo "$gt_cv_c_intmax_t" >&6; } + if test $gt_cv_c_intmax_t = yes; then + +$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h + + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 +$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; } +if test "${gt_cv_func_printf_posix+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "notposix" >/dev/null 2>&1; then : + gt_cv_func_printf_posix="guessing no" +else + gt_cv_func_printf_posix="guessing yes" +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + gt_cv_func_printf_posix=yes +else + gt_cv_func_printf_posix=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 +$as_echo "$gt_cv_func_printf_posix" >&6; } + case $gt_cv_func_printf_posix in + *yes) + +$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } +if test "${ac_cv_gnu_library_2_1+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then : + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 +$as_echo "$ac_cv_gnu_library_2_1" >&6; } + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + for ac_header in stdint.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 +$as_echo_n "checking for SIZE_MAX... " >&6; } +if test "${gl_cv_size_max+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + gl_cv_size_max= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Found it" >/dev/null 2>&1; then : + gl_cv_size_max=yes +fi +rm -f conftest* + + if test -z "$gl_cv_size_max"; then + if ac_fn_cxx_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include +#include "; then : + +else + size_t_bits_minus_1= +fi + + if ac_fn_cxx_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include "; then : + +else + fits_in_uint= +fi + + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + extern size_t foo; + extern unsigned long foo; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + fits_in_uint=0 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 +$as_echo "$gl_cv_size_max" >&6; } + if test "$gl_cv_size_max" != yes; then + +cat >>confdefs.h <<_ACEOF +#define SIZE_MAX $gl_cv_size_max +_ACEOF + + fi + + + + + + for ac_header in stdint.h +do : + ac_fn_cxx_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +fi + +done + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 +$as_echo_n "checking for working fcntl.h... " >&6; } +if test "${gl_cv_header_working_fcntl_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + gl_cv_header_working_fcntl_h=cross-compiling +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + +int +main () +{ + + int status = !constants; + { + static char const sym[] = "conftest.sym"; + if (symlink (".", sym) != 0 + || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0) + status |= 32; + unlink (sym); + } + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + char c; + struct stat st0, st1; + if (fd < 0 + || fstat (fd, &st0) != 0 + || sleep (1) != 0 + || read (fd, &c, 1) != 1 + || close (fd) != 0 + || stat (file, &st1) != 0 + || st0.st_atime != st1.st_atime) + status |= 64; + } + return status; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + gl_cv_header_working_fcntl_h=yes +else + case $? in #( + 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 +$as_echo "$gl_cv_header_working_fcntl_h" >&6; } + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + +cat >>confdefs.h <<_ACEOF +#define HAVE_WORKING_O_NOATIME $ac_val +_ACEOF + + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + +cat >>confdefs.h <<_ACEOF +#define HAVE_WORKING_O_NOFOLLOW $ac_val +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + + + ac_fn_cxx_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = x""yes; then : + +else + +$as_echo "#define ptrdiff_t long" >>confdefs.h + + +fi + + for ac_header in stddef.h stdlib.h string.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snprintf is declared" >&5 +$as_echo_n "checking whether _snprintf is declared... " >&6; } +if test "${ac_cv_have_decl__snprintf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef _snprintf + char *p = (char *) _snprintf; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_have_decl__snprintf=yes +else + ac_cv_have_decl__snprintf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snprintf" >&5 +$as_echo "$ac_cv_have_decl__snprintf" >&6; } + if test $ac_cv_have_decl__snprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNPRINTF $gt_value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snwprintf is declared" >&5 +$as_echo_n "checking whether _snwprintf is declared... " >&6; } +if test "${ac_cv_have_decl__snwprintf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef _snwprintf + char *p = (char *) _snwprintf; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_have_decl__snwprintf=yes +else + ac_cv_have_decl__snwprintf=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snwprintf" >&5 +$as_echo "$ac_cv_have_decl__snwprintf" >&6; } + if test $ac_cv_have_decl__snwprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNWPRINTF $gt_value +_ACEOF + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getc_unlocked is declared" >&5 +$as_echo_n "checking whether getc_unlocked is declared... " >&6; } +if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef getc_unlocked + char *p = (char *) getc_unlocked; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_have_decl_getc_unlocked=yes +else + ac_cv_have_decl_getc_unlocked=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_getc_unlocked" >&5 +$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; } + if test $ac_cv_have_decl_getc_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $gt_value +_ACEOF + + + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if test "${am_cv_langinfo_codeset+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); return !cs; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + am_cv_langinfo_codeset=yes +else + am_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +$as_echo_n "checking for LC_MESSAGES... " >&6; } +if test "${gt_cv_val_LC_MESSAGES+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gt_cv_val_LC_MESSAGES=yes +else + gt_cv_val_LC_MESSAGES=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 +$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } + if test $gt_cv_val_LC_MESSAGES = yes; then + +$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h + + fi + + + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + + + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + + if test $WOE32 = yes; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_WINDRES+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_WINDRES="${ac_tool_prefix}windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +WINDRES=$ac_cv_prog_WINDRES +if test -n "$WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 +$as_echo "$WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_WINDRES"; then + ac_ct_WINDRES=$WINDRES + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_WINDRES+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_WINDRES"; then + ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_WINDRES="windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES +if test -n "$ac_ct_WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 +$as_echo "$ac_ct_WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_WINDRES" = x; then + WINDRES="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + WINDRES=$ac_ct_WINDRES + fi +else + WINDRES="$ac_cv_prog_WINDRES" +fi + + fi + + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 +$as_echo_n "checking whether included gettext is requested... " >&6; } + +# Check whether --with-included-gettext was given. +if test "${with_included_gettext+set}" = set; then : + withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 +$as_echo "$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if eval "test \"\${$gt_func_gnugettext_libc+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libc=yes" +else + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if eval "test \"\${$gt_func_gnugettext_libintl+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libintl=yes" +else + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV $LIBTHREAD" + LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlibVersion in -lz" >&5 +$as_echo_n "checking for zlibVersion in -lz... " >&6; } +if test "${ac_cv_lib_z_zlibVersion+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char zlibVersion (); +int +main () +{ +return zlibVersion (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_z_zlibVersion=yes +else + ac_cv_lib_z_zlibVersion=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_zlibVersion" >&5 +$as_echo "$ac_cv_lib_z_zlibVersion" >&6; } +if test "x$ac_cv_lib_z_zlibVersion" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + as_fn_error $? "*** zlib not found!" "$LINENO" 5 +fi + +LIBS="$LIBS -lz" + + +OPTIMIZER_FLAGS="" + +MATH_OPTIMIZER_FLAGS="-ffast-math" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OPTIMIZER_FLAGS for gcc -fomit-frame-pointer" >&5 +$as_echo_n "checking OPTIMIZER_FLAGS for gcc -fomit-frame-pointer... " >&6; } +if test "${ax_cv_cflags_gcc_option__fomit_frame_pointer+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__fomit_frame_pointer="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -fomit-frame-pointer" "-pedantic % -fomit-frame-pointer %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__fomit_frame_pointer=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__fomit_frame_pointer" >&5 +$as_echo "$ax_cv_cflags_gcc_option__fomit_frame_pointer" >&6; } +var=$ax_cv_cflags_gcc_option__fomit_frame_pointer +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $OPTIMIZER_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS does contain \$var"; } >&5 + (: OPTIMIZER_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS=\"\$OPTIMIZER_FLAGS \$var\""; } >&5 + (: OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var" + fi + ;; +esac + +as_VAR=`$as_echo "ax_cv_cflags_gcc_option_-finline-limit=6000" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OPTIMIZER_FLAGS for gcc -finline-limit=6000" >&5 +$as_echo_n "checking OPTIMIZER_FLAGS for gcc -finline-limit=6000... " >&6; } +if eval "test \"\${$as_VAR+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$as_VAR=\"no, unknown\"" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -finline-limit=6000" "-pedantic % -finline-limit=6000 %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_VAR=\`echo \$ac_arg | sed -e 's,.*% *,,'\`"; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +eval ac_res=\$$as_VAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +eval var=\$$as_VAR +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $OPTIMIZER_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS does contain \$var"; } >&5 + (: OPTIMIZER_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS=\"\$OPTIMIZER_FLAGS \$var\""; } >&5 + (: OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var" + fi + ;; +esac + +as_VAR=`$as_echo "ax_cv_cflags_gcc_option_--param large-function-growth=800" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OPTIMIZER_FLAGS for gcc --param large-function-growth=800" >&5 +$as_echo_n "checking OPTIMIZER_FLAGS for gcc --param large-function-growth=800... " >&6; } +if eval "test \"\${$as_VAR+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$as_VAR=\"no, unknown\"" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % --param large-function-growth=800" "-pedantic % --param large-function-growth=800 %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_VAR=\`echo \$ac_arg | sed -e 's,.*% *,,'\`"; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +eval ac_res=\$$as_VAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +eval var=\$$as_VAR +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $OPTIMIZER_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS does contain \$var"; } >&5 + (: OPTIMIZER_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS=\"\$OPTIMIZER_FLAGS \$var\""; } >&5 + (: OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var" + fi + ;; +esac + +as_VAR=`$as_echo "ax_cv_cflags_gcc_option_--param inline-unit-growth=175" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OPTIMIZER_FLAGS for gcc --param inline-unit-growth=175" >&5 +$as_echo_n "checking OPTIMIZER_FLAGS for gcc --param inline-unit-growth=175... " >&6; } +if eval "test \"\${$as_VAR+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$as_VAR=\"no, unknown\"" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % --param inline-unit-growth=175" "-pedantic % --param inline-unit-growth=175 %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_VAR=\`echo \$ac_arg | sed -e 's,.*% *,,'\`"; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +eval ac_res=\$$as_VAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +eval var=\$$as_VAR +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $OPTIMIZER_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS does contain \$var"; } >&5 + (: OPTIMIZER_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS=\"\$OPTIMIZER_FLAGS \$var\""; } >&5 + (: OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var" + fi + ;; +esac + +as_VAR=`$as_echo "ax_cv_cflags_gcc_option_--param max-inline-insns-single=10000" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OPTIMIZER_FLAGS for gcc --param max-inline-insns-single=10000" >&5 +$as_echo_n "checking OPTIMIZER_FLAGS for gcc --param max-inline-insns-single=10000... " >&6; } +if eval "test \"\${$as_VAR+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + eval "$as_VAR=\"no, unknown\"" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % --param max-inline-insns-single=10000" "-pedantic % --param max-inline-insns-single=10000 %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_VAR=\`echo \$ac_arg | sed -e 's,.*% *,,'\`"; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +eval ac_res=\$$as_VAR + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +eval var=\$$as_VAR +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $OPTIMIZER_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS does contain \$var"; } >&5 + (: OPTIMIZER_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : OPTIMIZER_FLAGS=\"\$OPTIMIZER_FLAGS \$var\""; } >&5 + (: OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + OPTIMIZER_FLAGS="$OPTIMIZER_FLAGS $var" + fi + ;; +esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler flags to disable strict overflow" >&5 +$as_echo_n "checking for compiler flags to disable strict overflow... " >&6; } + + nsof_test_prog="#include +#include +#include +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; + +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; + +#ifdef __GNUC__ +#define NO_INLINE __attribute__((noinline)) +#else +#define NO_INLINE +#endif + +struct MathTestTSOEntry +{ + int32 a; + int32 b; +}; + +// Don't declare as static(though whopr might mess it up anyway) +MathTestTSOEntry MathTestTSOTests[] = +{ + { 0x7FFFFFFF, 2 }, + { 0x7FFFFFFE, 0x7FFFFFFF }, + { 0x7FFFFFFF, 0x7FFFFFFF }, + { 0x7FFFFFFE, 0x7FFFFFFE }, +}; + +static int TestSignedOverflow(void) +{ + for(unsigned int i = 0; i < sizeof(MathTestTSOTests) / sizeof(MathTestTSOEntry); i++) + { + int32 a = MathTestTSOTests[i].a; + int32 b = MathTestTSOTests[i].b; + + if(!((a + b) < a && (a + b) < b)) { return -1; } + + if(!((a + 0x7FFFFFFE) < a)) { return -2; } + if(!((b + 0x7FFFFFFE) < b)) { return -3; } + + if(!((a + 0x7FFFFFFF) < a)) { return -4; } + if(!((b + 0x7FFFFFFF) < b)) { return -5; } + + if(!((int32)(a + 0x80000000) < a)) { return -6; } + if(!((int32)(b + 0x80000000) < b)) { return -7; } + + if(!((int32)(a ^ 0x80000000) < a)) { return -8; } + if(!((int32)(b ^ 0x80000000) < b)) { return -9; } + } + return(0); +} + +static void AntiNSOBugTest_Sub1_a(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub1_a(int *array) +{ + for(int value = 0; value < 127; value++) + array[value] += (int8)value * 15; +} + +static void AntiNSOBugTest_Sub1_b(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub1_b(int *array) +{ + for(int value = 127; value < 256; value++) + array[value] += (int8)value * 15; +} + +static void AntiNSOBugTest_Sub2(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub2(int *array) +{ + for(int value = 0; value < 256; value++) + array[value] += (int8)value * 15; +} + +static void AntiNSOBugTest_Sub3(int *array) NO_INLINE; +static void AntiNSOBugTest_Sub3(int *array) +{ + for(int value = 0; value < 256; value++) + { + if(value >= 128) + array[value] = (value - 256) * 15; + else + array[value] = value * 15; + } +} + +int main(int argc, char *argv[]) +{ + int array1[256], array2[256], array3[256]; + int i; + + memset(array1, 0, sizeof(array1)); + memset(array2, 0, sizeof(array2)); + memset(array3, 0, sizeof(array3)); + + AntiNSOBugTest_Sub1_a(array1); + AntiNSOBugTest_Sub1_b(array1); + AntiNSOBugTest_Sub2(array2); + AntiNSOBugTest_Sub3(array3); + + for(i = 0; i < 256; i++) + { + if((array1[i] != array2[i]) || (array2[i] != array3[i])) + { + exit(-1 - i); + } + } + + { + int tmp = TestSignedOverflow(); + + if(tmp) + exit(tmp); + } + + exit(0); +} +" + + ac_save_CPPFLAGS="$CPPFLAGS" + NO_STRICT_OVERFLOW_FLAGS="" + + CPPFLAGS="$CPPFLAGS -fno-strict-overflow" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5 ; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$nsof_test_prog +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + NO_STRICT_OVERFLOW_FLAGS="-fno-strict-overflow" +else + + CPPFLAGS="$ac_save_CPPFLAGS -fwrapv" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5 ; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$nsof_test_prog +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + NO_STRICT_OVERFLOW_FLAGS="-fwrapv" +else + as_fn_error $? "Could not find working option to disable strict overflow." "$LINENO" 5 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + + CPPFLAGS="$ac_save_CPPFLAGS" + + if test "x$NO_STRICT_OVERFLOW_FLAGS" != x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NO_STRICT_OVERFLOW_FLAGS" >&5 +$as_echo "$NO_STRICT_OVERFLOW_FLAGS" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed apparently" >&5 +$as_echo "none needed apparently" >&6; } + fi + + + +WARNING_FLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WARNING_FLAGS for gcc -Wall" >&5 +$as_echo_n "checking WARNING_FLAGS for gcc -Wall... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wall+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wall="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wall" "-pedantic % -Wall %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wall=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wall" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wall" >&6; } +var=$ax_cv_cflags_gcc_option__Wall +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $WARNING_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS does contain \$var"; } >&5 + (: WARNING_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS=\"\$WARNING_FLAGS \$var\""; } >&5 + (: WARNING_FLAGS="$WARNING_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + WARNING_FLAGS="$WARNING_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WARNING_FLAGS for gcc -Winline" >&5 +$as_echo_n "checking WARNING_FLAGS for gcc -Winline... " >&6; } +if test "${ax_cv_cflags_gcc_option__Winline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Winline="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Winline" "-pedantic % -Winline %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Winline=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Winline" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Winline" >&6; } +var=$ax_cv_cflags_gcc_option__Winline +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $WARNING_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS does contain \$var"; } >&5 + (: WARNING_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS=\"\$WARNING_FLAGS \$var\""; } >&5 + (: WARNING_FLAGS="$WARNING_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + WARNING_FLAGS="$WARNING_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WARNING_FLAGS for gcc -Wshadow" >&5 +$as_echo_n "checking WARNING_FLAGS for gcc -Wshadow... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wshadow+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wshadow="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wshadow" "-pedantic % -Wshadow %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wshadow=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wshadow" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wshadow" >&6; } +var=$ax_cv_cflags_gcc_option__Wshadow +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $WARNING_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS does contain \$var"; } >&5 + (: WARNING_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS=\"\$WARNING_FLAGS \$var\""; } >&5 + (: WARNING_FLAGS="$WARNING_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + WARNING_FLAGS="$WARNING_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WARNING_FLAGS for gcc -Wempty-body" >&5 +$as_echo_n "checking WARNING_FLAGS for gcc -Wempty-body... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wempty_body+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wempty_body="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wempty-body" "-pedantic % -Wempty-body %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wempty_body=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wempty_body" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wempty_body" >&6; } +var=$ax_cv_cflags_gcc_option__Wempty_body +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $WARNING_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS does contain \$var"; } >&5 + (: WARNING_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS=\"\$WARNING_FLAGS \$var\""; } >&5 + (: WARNING_FLAGS="$WARNING_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + WARNING_FLAGS="$WARNING_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking WARNING_FLAGS for gcc -Wignored-qualifiers" >&5 +$as_echo_n "checking WARNING_FLAGS for gcc -Wignored-qualifiers... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wignored_qualifiers+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wignored_qualifiers="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wignored-qualifiers" "-pedantic % -Wignored-qualifiers %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wignored_qualifiers=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wignored_qualifiers" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wignored_qualifiers" >&6; } +var=$ax_cv_cflags_gcc_option__Wignored_qualifiers +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $WARNING_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS does contain \$var"; } >&5 + (: WARNING_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARNING_FLAGS=\"\$WARNING_FLAGS \$var\""; } >&5 + (: WARNING_FLAGS="$WARNING_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + WARNING_FLAGS="$WARNING_FLAGS $var" + fi + ;; +esac + + + +SNES_EXTRA_FLAGS="" +SNES_EXTRA_CXXFLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-unused" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-unused... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_unused+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_unused="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-unused" "-pedantic % -Wno-unused %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_unused=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_unused" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_unused" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_unused +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-inline" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-inline... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_inline="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-inline" "-pedantic % -Wno-inline %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_inline=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_inline" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_inline" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_inline +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-shadow" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-shadow... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_shadow+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_shadow="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-shadow" "-pedantic % -Wno-shadow %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_shadow=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_shadow" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_shadow" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_shadow +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-sign-compare" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-sign-compare... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_sign_compare+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_sign_compare="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-sign-compare" "-pedantic % -Wno-sign-compare %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_sign_compare=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_sign_compare" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_sign_compare" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_sign_compare +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-inline" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-inline... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_inline="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-inline" "-pedantic % -Wno-inline %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_inline=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_inline" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_inline" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_inline +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-ignored-qualifiers" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-ignored-qualifiers... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_ignored_qualifiers+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_ignored_qualifiers="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-ignored-qualifiers" "-pedantic % -Wno-ignored-qualifiers %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_ignored_qualifiers=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_ignored_qualifiers" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_ignored_qualifiers" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_ignored_qualifiers +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-inline" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-inline... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_inline+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_inline="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-inline" "-pedantic % -Wno-inline %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_inline=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_inline" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_inline" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_inline +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-uninitialized" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-uninitialized... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_uninitialized+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_uninitialized="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-uninitialized" "-pedantic % -Wno-uninitialized %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_uninitialized=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_uninitialized" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_uninitialized" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_uninitialized +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-parentheses" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-parentheses... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_parentheses+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_parentheses="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-parentheses" "-pedantic % -Wno-parentheses %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_parentheses=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_parentheses" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_parentheses" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_parentheses +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SNES_EXTRA_FLAGS for gcc -Wno-switch" >&5 +$as_echo_n "checking SNES_EXTRA_FLAGS for gcc -Wno-switch... " >&6; } +if test "${ax_cv_cflags_gcc_option__Wno_switch+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__Wno_switch="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -Wno-switch" "-pedantic % -Wno-switch %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__Wno_switch=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__Wno_switch" >&5 +$as_echo "$ax_cv_cflags_gcc_option__Wno_switch" >&6; } +var=$ax_cv_cflags_gcc_option__Wno_switch +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $SNES_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS does contain \$var"; } >&5 + (: SNES_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : SNES_EXTRA_FLAGS=\"\$SNES_EXTRA_FLAGS \$var\""; } >&5 + (: SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + SNES_EXTRA_FLAGS="$SNES_EXTRA_FLAGS $var" + fi + ;; +esac + + + + +GBA_EXTRA_FLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking GBA_EXTRA_FLAGS for gcc -fno-unit-at-a-time" >&5 +$as_echo_n "checking GBA_EXTRA_FLAGS for gcc -fno-unit-at-a-time... " >&6; } +if test "${ax_cv_cflags_gcc_option__fno_unit_at_a_time+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__fno_unit_at_a_time="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -fno-unit-at-a-time" "-pedantic % -fno-unit-at-a-time %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__fno_unit_at_a_time=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__fno_unit_at_a_time" >&5 +$as_echo "$ax_cv_cflags_gcc_option__fno_unit_at_a_time" >&6; } +var=$ax_cv_cflags_gcc_option__fno_unit_at_a_time +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $GBA_EXTRA_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : GBA_EXTRA_FLAGS does contain \$var"; } >&5 + (: GBA_EXTRA_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : GBA_EXTRA_FLAGS=\"\$GBA_EXTRA_FLAGS \$var\""; } >&5 + (: GBA_EXTRA_FLAGS="$GBA_EXTRA_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + GBA_EXTRA_FLAGS="$GBA_EXTRA_FLAGS $var" + fi + ;; +esac + + + +MDFN_COMPAT_FLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking MDFN_COMPAT_FLAGS for gcc -fsigned-char" >&5 +$as_echo_n "checking MDFN_COMPAT_FLAGS for gcc -fsigned-char... " >&6; } +if test "${ax_cv_cflags_gcc_option__fsigned_char+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__fsigned_char="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -fsigned-char" "-pedantic % -fsigned-char %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__fsigned_char=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__fsigned_char" >&5 +$as_echo "$ax_cv_cflags_gcc_option__fsigned_char" >&6; } +var=$ax_cv_cflags_gcc_option__fsigned_char +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $MDFN_COMPAT_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : MDFN_COMPAT_FLAGS does contain \$var"; } >&5 + (: MDFN_COMPAT_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : MDFN_COMPAT_FLAGS=\"\$MDFN_COMPAT_FLAGS \$var\""; } >&5 + (: MDFN_COMPAT_FLAGS="$MDFN_COMPAT_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + MDFN_COMPAT_FLAGS="$MDFN_COMPAT_FLAGS $var" + fi + ;; +esac + + +AM_CFLAGS="$MDFN_COMPAT_FLAGS $WARNING_FLAGS $OPTIMIZER_FLAGS $NO_STRICT_OVERFLOW_FLAGS" + +AM_CXXFLAGS="$MDFN_COMPAT_FLAGS $WARNING_FLAGS $OPTIMIZER_FLAGS $NO_STRICT_OVERFLOW_FLAGS" + + + if false; then + WANT_DEBUGGER_TRUE= + WANT_DEBUGGER_FALSE='#' +else + WANT_DEBUGGER_TRUE='#' + WANT_DEBUGGER_FALSE= +fi + + +# Check whether --enable-debugger was given. +if test "${enable_debugger+set}" = set; then : + enableval=$enable_debugger; +else + enable_debugger=yes +fi + + +if test x$enable_debugger = xyes; then + +$as_echo "#define WANT_DEBUGGER 1" >>confdefs.h + + if true; then + WANT_DEBUGGER_TRUE= + WANT_DEBUGGER_FALSE='#' +else + WANT_DEBUGGER_TRUE='#' + WANT_DEBUGGER_FALSE= +fi + +fi + +# Check whether --enable-cjk-fonts was given. +if test "${enable_cjk_fonts+set}" = set; then : + enableval=$enable_cjk_fonts; +else + enable_cjk_fonts=yes +fi + + +if test x$enable_cjk_fonts = xyes; then + +$as_echo "#define WANT_INTERNAL_CJK 1" >>confdefs.h + +fi + +# Check whether --enable-altivec was given. +if test "${enable_altivec+set}" = set; then : + enableval=$enable_altivec; +else + enable_altivec=yes +fi + + + + if false; then + WANT_GB_EMU_TRUE= + WANT_GB_EMU_FALSE='#' +else + WANT_GB_EMU_TRUE='#' + WANT_GB_EMU_FALSE= +fi + + if false; then + WANT_GBA_EMU_TRUE= + WANT_GBA_EMU_FALSE='#' +else + WANT_GBA_EMU_TRUE='#' + WANT_GBA_EMU_FALSE= +fi + + if false; then + WANT_LYNX_EMU_TRUE= + WANT_LYNX_EMU_FALSE='#' +else + WANT_LYNX_EMU_TRUE='#' + WANT_LYNX_EMU_FALSE= +fi + + if false; then + WANT_MD_EMU_TRUE= + WANT_MD_EMU_FALSE='#' +else + WANT_MD_EMU_TRUE='#' + WANT_MD_EMU_FALSE= +fi + + if false; then + WANT_SMS_EMU_TRUE= + WANT_SMS_EMU_FALSE='#' +else + WANT_SMS_EMU_TRUE='#' + WANT_SMS_EMU_FALSE= +fi + + if false; then + WANT_NES_EMU_TRUE= + WANT_NES_EMU_FALSE='#' +else + WANT_NES_EMU_TRUE='#' + WANT_NES_EMU_FALSE= +fi + + if false; then + WANT_NGP_EMU_TRUE= + WANT_NGP_EMU_FALSE='#' +else + WANT_NGP_EMU_TRUE='#' + WANT_NGP_EMU_FALSE= +fi + + if false; then + WANT_PCE_EMU_TRUE= + WANT_PCE_EMU_FALSE='#' +else + WANT_PCE_EMU_TRUE='#' + WANT_PCE_EMU_FALSE= +fi + + if false; then + WANT_PCE_FAST_EMU_TRUE= + WANT_PCE_FAST_EMU_FALSE='#' +else + WANT_PCE_FAST_EMU_TRUE='#' + WANT_PCE_FAST_EMU_FALSE= +fi + + if false; then + WANT_PCFX_EMU_TRUE= + WANT_PCFX_EMU_FALSE='#' +else + WANT_PCFX_EMU_TRUE='#' + WANT_PCFX_EMU_FALSE= +fi + + if false; then + WANT_PSX_EMU_TRUE= + WANT_PSX_EMU_FALSE='#' +else + WANT_PSX_EMU_TRUE='#' + WANT_PSX_EMU_FALSE= +fi + + if false; then + WANT_SMS_EMU_TRUE= + WANT_SMS_EMU_FALSE='#' +else + WANT_SMS_EMU_TRUE='#' + WANT_SMS_EMU_FALSE= +fi + + if false; then + WANT_SNES_EMU_TRUE= + WANT_SNES_EMU_FALSE='#' +else + WANT_SNES_EMU_TRUE='#' + WANT_SNES_EMU_FALSE= +fi + + if false; then + WANT_VB_EMU_TRUE= + WANT_VB_EMU_FALSE='#' +else + WANT_VB_EMU_TRUE='#' + WANT_VB_EMU_FALSE= +fi + + if false; then + WANT_WSWAN_EMU_TRUE= + WANT_WSWAN_EMU_FALSE='#' +else + WANT_WSWAN_EMU_TRUE='#' + WANT_WSWAN_EMU_FALSE= +fi + + +# Check whether --enable-gb was given. +if test "${enable_gb+set}" = set; then : + enableval=$enable_gb; +else + enable_gb=yes +fi + + +if test x$enable_gb = xyes; then + +$as_echo "#define WANT_GB_EMU 1" >>confdefs.h + + if true; then + WANT_GB_EMU_TRUE= + WANT_GB_EMU_FALSE='#' +else + WANT_GB_EMU_TRUE='#' + WANT_GB_EMU_FALSE= +fi + +fi + +# Check whether --enable-gba was given. +if test "${enable_gba+set}" = set; then : + enableval=$enable_gba; +else + enable_gba=yes +fi + + +if test x$enable_gba = xyes; then + +$as_echo "#define WANT_GBA_EMU 1" >>confdefs.h + + if true; then + WANT_GBA_EMU_TRUE= + WANT_GBA_EMU_FALSE='#' +else + WANT_GBA_EMU_TRUE='#' + WANT_GBA_EMU_FALSE= +fi + +fi + +# Check whether --enable-lynx was given. +if test "${enable_lynx+set}" = set; then : + enableval=$enable_lynx; +else + enable_lynx=yes +fi + + +if test x$enable_lynx = xyes; then + +$as_echo "#define WANT_LYNX_EMU 1" >>confdefs.h + + if true; then + WANT_LYNX_EMU_TRUE= + WANT_LYNX_EMU_FALSE='#' +else + WANT_LYNX_EMU_TRUE='#' + WANT_LYNX_EMU_FALSE= +fi + +fi + +# Check whether --enable-md was given. +if test "${enable_md+set}" = set; then : + enableval=$enable_md; +else + enable_md=yes +fi + + +if test x$enable_md = xyes; then + +$as_echo "#define WANT_MD_EMU 1" >>confdefs.h + + if true; then + WANT_MD_EMU_TRUE= + WANT_MD_EMU_FALSE='#' +else + WANT_MD_EMU_TRUE='#' + WANT_MD_EMU_FALSE= +fi + +fi + +# Check whether --enable-nes was given. +if test "${enable_nes+set}" = set; then : + enableval=$enable_nes; +else + enable_nes=yes +fi + + +if test x$enable_nes = xyes; then + +$as_echo "#define WANT_NES_EMU 1" >>confdefs.h + + if true; then + WANT_NES_EMU_TRUE= + WANT_NES_EMU_FALSE='#' +else + WANT_NES_EMU_TRUE='#' + WANT_NES_EMU_FALSE= +fi + +fi + +# Check whether --enable-ngp was given. +if test "${enable_ngp+set}" = set; then : + enableval=$enable_ngp; +else + enable_ngp=yes +fi + + +if test x$enable_ngp = xyes; then + +$as_echo "#define WANT_NGP_EMU 1" >>confdefs.h + + if true; then + WANT_NGP_EMU_TRUE= + WANT_NGP_EMU_FALSE='#' +else + WANT_NGP_EMU_TRUE='#' + WANT_NGP_EMU_FALSE= +fi + +fi + +# Check whether --enable-pce was given. +if test "${enable_pce+set}" = set; then : + enableval=$enable_pce; +else + enable_pce=yes +fi + + +if test x$enable_pce = xyes; then + +$as_echo "#define WANT_PCE_EMU 1" >>confdefs.h + + if true; then + WANT_PCE_EMU_TRUE= + WANT_PCE_EMU_FALSE='#' +else + WANT_PCE_EMU_TRUE='#' + WANT_PCE_EMU_FALSE= +fi + +fi + +# Check whether --enable-pce-fast was given. +if test "${enable_pce_fast+set}" = set; then : + enableval=$enable_pce_fast; +else + enable_pce_fast=yes +fi + + +if test x$enable_pce_fast = xyes; then + +$as_echo "#define WANT_PCE_FAST_EMU 1" >>confdefs.h + + if true; then + WANT_PCE_FAST_EMU_TRUE= + WANT_PCE_FAST_EMU_FALSE='#' +else + WANT_PCE_FAST_EMU_TRUE='#' + WANT_PCE_FAST_EMU_FALSE= +fi + +fi + +# Check whether --enable-pcfx was given. +if test "${enable_pcfx+set}" = set; then : + enableval=$enable_pcfx; +else + enable_pcfx=yes +fi + + +if test x$enable_pcfx = xyes; then + +$as_echo "#define WANT_PCFX_EMU 1" >>confdefs.h + + if true; then + WANT_PCFX_EMU_TRUE= + WANT_PCFX_EMU_FALSE='#' +else + WANT_PCFX_EMU_TRUE='#' + WANT_PCFX_EMU_FALSE= +fi + +fi + +# Check whether --enable-psx was given. +if test "${enable_psx+set}" = set; then : + enableval=$enable_psx; +else + enable_psx=yes +fi + + +if test x$enable_psx = xyes; then + +$as_echo "#define WANT_PSX_EMU 1" >>confdefs.h + + if true; then + WANT_PSX_EMU_TRUE= + WANT_PSX_EMU_FALSE='#' +else + WANT_PSX_EMU_TRUE='#' + WANT_PSX_EMU_FALSE= +fi + +fi + +# Check whether --enable-sms was given. +if test "${enable_sms+set}" = set; then : + enableval=$enable_sms; +else + enable_sms=yes +fi + + +if test x$enable_sms = xyes; then + +$as_echo "#define WANT_SMS_EMU 1" >>confdefs.h + + if true; then + WANT_SMS_EMU_TRUE= + WANT_SMS_EMU_FALSE='#' +else + WANT_SMS_EMU_TRUE='#' + WANT_SMS_EMU_FALSE= +fi + +fi + +# Check whether --enable-snes was given. +if test "${enable_snes+set}" = set; then : + enableval=$enable_snes; +else + enable_snes=yes +fi + + +if test x$enable_snes = xyes; then + +$as_echo "#define WANT_SNES_EMU 1" >>confdefs.h + + if true; then + WANT_SNES_EMU_TRUE= + WANT_SNES_EMU_FALSE='#' +else + WANT_SNES_EMU_TRUE='#' + WANT_SNES_EMU_FALSE= +fi + +fi + +# Check whether --enable-vb was given. +if test "${enable_vb+set}" = set; then : + enableval=$enable_vb; +else + enable_vb=yes +fi + + +if test x$enable_vb = xyes; then + +$as_echo "#define WANT_VB_EMU 1" >>confdefs.h + + if true; then + WANT_VB_EMU_TRUE= + WANT_VB_EMU_FALSE='#' +else + WANT_VB_EMU_TRUE='#' + WANT_VB_EMU_FALSE= +fi + +fi + + +# Check whether --enable-wswan was given. +if test "${enable_wswan+set}" = set; then : + enableval=$enable_wswan; +else + enable_wswan=yes +fi + + +if test x$enable_wswan = xyes; then + +$as_echo "#define WANT_WSWAN_EMU 1" >>confdefs.h + + if true; then + WANT_WSWAN_EMU_TRUE= + WANT_WSWAN_EMU_FALSE='#' +else + WANT_WSWAN_EMU_TRUE='#' + WANT_WSWAN_EMU_FALSE= +fi + +fi + + if false; then + HAVE_OSSDSP_TRUE= + HAVE_OSSDSP_FALSE='#' +else + HAVE_OSSDSP_TRUE='#' + HAVE_OSSDSP_FALSE= +fi + + if false; then + HAVE_ALSA_TRUE= + HAVE_ALSA_FALSE='#' +else + HAVE_ALSA_TRUE='#' + HAVE_ALSA_FALSE= +fi + + if false; then + HAVE_DIRECTSOUND_TRUE= + HAVE_DIRECTSOUND_FALSE='#' +else + HAVE_DIRECTSOUND_TRUE='#' + HAVE_DIRECTSOUND_FALSE= +fi + + if false; then + HAVE_SDL_TRUE= + HAVE_SDL_FALSE='#' +else + HAVE_SDL_TRUE='#' + HAVE_SDL_FALSE= +fi + + if false; then + HAVE_JACK_TRUE= + HAVE_JACK_FALSE='#' +else + HAVE_JACK_TRUE='#' + HAVE_JACK_FALSE= +fi + + + +CheckALSA() +{ + # Check whether --enable-alsa was given. +if test "${enable_alsa+set}" = set; then : + enableval=$enable_alsa; +else + enable_alsa=yes +fi + + if test x$enable_alsa = xyes; then + alsa_save_CFLAGS="$CFLAGS" +alsa_save_LDFLAGS="$LDFLAGS" +alsa_save_LIBS="$LIBS" +alsa_found=yes + + +# Check whether --with-alsa-prefix was given. +if test "${with_alsa_prefix+set}" = set; then : + withval=$with_alsa_prefix; alsa_prefix="$withval" +else + alsa_prefix="" +fi + + + +# Check whether --with-alsa-inc-prefix was given. +if test "${with_alsa_inc_prefix+set}" = set; then : + withval=$with_alsa_inc_prefix; alsa_inc_prefix="$withval" +else + alsa_inc_prefix="" +fi + + +# Check whether --enable-alsatest was given. +if test "${enable_alsatest+set}" = set; then : + enableval=$enable_alsatest; enable_alsatest="$enableval" +else + enable_alsatest=yes +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ALSA CFLAGS" >&5 +$as_echo_n "checking for ALSA CFLAGS... " >&6; } +if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ALSA_CFLAGS" >&5 +$as_echo "$ALSA_CFLAGS" >&6; } +CFLAGS="$alsa_save_CFLAGS" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ALSA LDFLAGS" >&5 +$as_echo_n "checking for ALSA LDFLAGS... " >&6; } +if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +fi + +ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +LIBS="$ALSA_LIBS $LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ALSA_LIBS" >&5 +$as_echo "$ALSA_LIBS" >&6; } + +min_alsa_version=1.0.0 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libasound headers version >= $min_alsa_version" >&5 +$as_echo_n "checking for libasound headers version >= $min_alsa_version... " >&6; } +no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + alsa_min_minor_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + alsa_min_micro_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ + +/* ensure backward compatibility */ +#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +#endif +#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +#endif +#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +#endif + +# if(SND_LIB_MAJOR > $alsa_min_major_version) + exit(0); +# else +# if(SND_LIB_MAJOR < $alsa_min_major_version) +# error not present +# endif + +# if(SND_LIB_MINOR > $alsa_min_minor_version) + exit(0); +# else +# if(SND_LIB_MINOR < $alsa_min_minor_version) +# error not present +# endif + +# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +# error not present +# endif +# endif +# endif +exit(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found." >&5 +$as_echo "found." >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not present." >&5 +$as_echo "not present." >&6; } + + alsa_found=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +if test "x$enable_alsatest" = "xyes"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for snd_ctl_open in -lasound" >&5 +$as_echo_n "checking for snd_ctl_open in -lasound... " >&6; } +if test "${ac_cv_lib_asound_snd_ctl_open+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lasound $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char snd_ctl_open (); +int +main () +{ +return snd_ctl_open (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_asound_snd_ctl_open=yes +else + ac_cv_lib_asound_snd_ctl_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_asound_snd_ctl_open" >&5 +$as_echo "$ac_cv_lib_asound_snd_ctl_open" >&6; } +if test "x$ac_cv_lib_asound_snd_ctl_open" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBASOUND 1 +_ACEOF + + LIBS="-lasound $LIBS" + +else + + alsa_found=no + +fi + +fi + +LDFLAGS="$alsa_save_LDFLAGS" +LIBS="$alsa_save_LIBS" + +if test "x$alsa_found" = "xyes" ; then + have_alsa=yes +else + ALSA_CFLAGS="" + ALSA_LIBS="" + have_alsa=no +fi + + + + + + # Restore all flags from before the ALSA detection runs + CFLAGS="$alsa_save_CFLAGS" + LDFLAGS="$alsa_save_LDFLAGS" + LIBS="$alsa_save_LIBS" + + if test x$have_alsa = xyes; then + if true; then + HAVE_ALSA_TRUE= + HAVE_ALSA_FALSE='#' +else + HAVE_ALSA_TRUE='#' + HAVE_ALSA_FALSE= +fi + + +$as_echo "#define HAVE_ALSA 1" >>confdefs.h + + LIBS="$LIBS $ALSA_LIBS" + CPPFLAGS="$CPPFLAGS $ALSA_CFLAGS" + fi + fi +} + +CheckJACK() +{ + # Check whether --enable-jack was given. +if test "${enable_jack+set}" = set; then : + enableval=$enable_jack; +else + enable_jack=yes +fi + + if test x$enable_jack = xyes; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for JACK" >&5 +$as_echo_n "checking for JACK... " >&6; } + +if test -n "$JACK_CFLAGS"; then + pkg_cv_JACK_CFLAGS="$JACK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_CFLAGS=`$PKG_CONFIG --cflags "jack" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JACK_LIBS"; then + pkg_cv_JACK_LIBS="$JACK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"jack\""; } >&5 + ($PKG_CONFIG --exists --print-errors "jack") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JACK_LIBS=`$PKG_CONFIG --libs "jack" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + JACK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "jack" 2>&1` + else + JACK_PKG_ERRORS=`$PKG_CONFIG --print-errors "jack" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$JACK_PKG_ERRORS" >&5 + + have_jack=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_jack=no +else + JACK_CFLAGS=$pkg_cv_JACK_CFLAGS + JACK_LIBS=$pkg_cv_JACK_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_jack=yes +fi + + if test x$have_jack = xyes; then + if true; then + HAVE_JACK_TRUE= + HAVE_JACK_FALSE='#' +else + HAVE_JACK_TRUE='#' + HAVE_JACK_FALSE= +fi + + +$as_echo "#define HAVE_JACK 1" >>confdefs.h + + LIBS="$LIBS $JACK_LIBS" + CPPFLAGS="$CPPFLAGS $JACK_CFLAGS" + fi + fi +} + +CheckALSA +CheckJACK + +SDL_VERSION=1.2.0 + +# Check whether --with-sdl-prefix was given. +if test "${with_sdl_prefix+set}" = set; then : + withval=$with_sdl_prefix; sdl_prefix="$withval" +else + sdl_prefix="" +fi + + +# Check whether --with-sdl-exec-prefix was given. +if test "${with_sdl_exec_prefix+set}" = set; then : + withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" +else + sdl_exec_prefix="" +fi + + + if test x$sdl_exec_prefix != x ; then + sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_args="$sdl_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl-config + fi + fi + + # Extract the first word of "sdl-config", so it can be a program name with args. +set dummy sdl-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_SDL_CONFIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $SDL_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" + ;; +esac +fi +SDL_CONFIG=$ac_cv_path_SDL_CONFIG +if test -n "$SDL_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 +$as_echo "$SDL_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + min_sdl_version=$SDL_VERSION + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 +$as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + fi + + if test "x$no_sdl" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + HAVE_SDL=true + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl-config." + fi + SDL_CFLAGS="" + SDL_LIBS="" + HAVE_SDL=false + fi + + + +if $HAVE_SDL +then + if true; then + HAVE_SDL_TRUE= + HAVE_SDL_FALSE='#' +else + HAVE_SDL_TRUE='#' + HAVE_SDL_FALSE= +fi + + +$as_echo "#define HAVE_SDL 1" >>confdefs.h + + + +else + as_fn_error $? "*** SDL 1.2.x not found!" "$LINENO" 5 +fi + + +# Check whether --with-libcdio was given. +if test "${with_libcdio+set}" = set; then : + withval=$with_libcdio; +else + with_libcdio=yes +fi + + + +# Check whether --with-libsndfile was given. +if test "${with_libsndfile+set}" = set; then : + withval=$with_libsndfile; +else + with_libsndfile=yes +fi + + +#AC_ARG_WITH([ogg-vorbis], +# [AS_HELP_STRING([--with-ogg-vorbis], +# [support Ogg Vorbis playback for ripped CD images [default=yes]])], +# [], +# [with_oggvorbis=yes]) + + + if false; then + WIN32_TRUE= + WIN32_FALSE='#' +else + WIN32_TRUE='#' + WIN32_FALSE= +fi + + if false; then + UNIX_TRUE= + UNIX_FALSE='#' +else + UNIX_TRUE='#' + UNIX_FALSE= +fi + + if false; then + HAVE_LIBCDIO_TRUE= + HAVE_LIBCDIO_FALSE='#' +else + HAVE_LIBCDIO_TRUE='#' + HAVE_LIBCDIO_FALSE= +fi + + if false; then + HAVE_LINUX_JOYSTICK_TRUE= + HAVE_LINUX_JOYSTICK_FALSE='#' +else + HAVE_LINUX_JOYSTICK_TRUE='#' + HAVE_LINUX_JOYSTICK_FALSE= +fi + + +if expr x"$target" : 'x.*-mingw*' > /dev/null; then + CPPFLAGS="-mstackrealign $CPPFLAGS" + ac_fn_cxx_check_header_mongrel "$LINENO" "dsound.h" "ac_cv_header_dsound_h" "$ac_includes_default" +if test "x$ac_cv_header_dsound_h" = x""yes; then : + HAVE_DIRECTSOUND=true +else + HAVE_DIRECTSOUND=false +fi + + + + if $HAVE_DIRECTSOUND + then + if true; then + HAVE_DIRECTSOUND_TRUE= + HAVE_DIRECTSOUND_FALSE='#' +else + HAVE_DIRECTSOUND_TRUE='#' + HAVE_DIRECTSOUND_FALSE= +fi + + +$as_echo "#define HAVE_DIRECTSOUND 1" >>confdefs.h + + LIBS="-ldxguid -lwinmm -ldsound $LIBS" + fi + + +$as_echo "#define PSS_STYLE 2" >>confdefs.h + + +$as_echo "#define WIN32 1" >>confdefs.h + + if true; then + WIN32_TRUE= + WIN32_FALSE='#' +else + WIN32_TRUE='#' + WIN32_FALSE= +fi + + + LIBS="-mwindows -lws2_32 -ldxguid -lwinmm -ldinput $LIBS -lwinmm" + + if test x$with_libcdio = xyes; then + LIBS="$LIBS -lcdio" + +$as_echo "#define HAVE_LIBCDIO 1" >>confdefs.h + + if true; then + HAVE_LIBCDIO_TRUE= + HAVE_LIBCDIO_FALSE='#' +else + HAVE_LIBCDIO_TRUE='#' + HAVE_LIBCDIO_FALSE= +fi + + fi + + if test x$with_libsndfile = xyes; then + SNDFILE_LIBS="-lsndfile" + SNDFILE_CFLAGS="" + +$as_echo "#define HAVE_LIBSNDFILE 1" >>confdefs.h + + fi +else + if test x$with_libcdio = xyes; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBCDIO" >&5 +$as_echo_n "checking for LIBCDIO... " >&6; } + +if test -n "$LIBCDIO_CFLAGS"; then + pkg_cv_LIBCDIO_CFLAGS="$LIBCDIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcdio") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBCDIO_CFLAGS=`$PKG_CONFIG --cflags "libcdio" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBCDIO_LIBS"; then + pkg_cv_LIBCDIO_LIBS="$LIBCDIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcdio\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libcdio") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBCDIO_LIBS=`$PKG_CONFIG --libs "libcdio" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBCDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libcdio" 2>&1` + else + LIBCDIO_PKG_ERRORS=`$PKG_CONFIG --print-errors "libcdio" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBCDIO_PKG_ERRORS" >&5 + + as_fn_error $? "*** libcdio not found!" "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "*** libcdio not found!" "$LINENO" 5 +else + LIBCDIO_CFLAGS=$pkg_cv_LIBCDIO_CFLAGS + LIBCDIO_LIBS=$pkg_cv_LIBCDIO_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +$as_echo "#define HAVE_LIBCDIO 1" >>confdefs.h + + if true; then + HAVE_LIBCDIO_TRUE= + HAVE_LIBCDIO_FALSE='#' +else + HAVE_LIBCDIO_TRUE='#' + HAVE_LIBCDIO_FALSE= +fi + + fi + + if test x$with_libsndfile = xyes; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SNDFILE" >&5 +$as_echo_n "checking for SNDFILE... " >&6; } + +if test -n "$SNDFILE_CFLAGS"; then + pkg_cv_SNDFILE_CFLAGS="$SNDFILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 1.0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sndfile >= 1.0.2") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SNDFILE_CFLAGS=`$PKG_CONFIG --cflags "sndfile >= 1.0.2" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SNDFILE_LIBS"; then + pkg_cv_SNDFILE_LIBS="$SNDFILE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sndfile >= 1.0.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sndfile >= 1.0.2") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SNDFILE_LIBS=`$PKG_CONFIG --libs "sndfile >= 1.0.2" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SNDFILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "sndfile >= 1.0.2" 2>&1` + else + SNDFILE_PKG_ERRORS=`$PKG_CONFIG --print-errors "sndfile >= 1.0.2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SNDFILE_PKG_ERRORS" >&5 + + as_fn_error $? "*** libsndfile >= 1.0.2 not found!" "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "*** libsndfile >= 1.0.2 not found!" "$LINENO" 5 +else + SNDFILE_CFLAGS=$pkg_cv_SNDFILE_CFLAGS + SNDFILE_LIBS=$pkg_cv_SNDFILE_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + +$as_echo "#define HAVE_LIBSNDFILE 1" >>confdefs.h + + fi + + +$as_echo "#define PSS_STYLE 1" >>confdefs.h + + ac_fn_cxx_check_header_mongrel "$LINENO" "sys/soundcard.h" "ac_cv_header_sys_soundcard_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_soundcard_h" = x""yes; then : + if true; then + HAVE_OSSDSP_TRUE= + HAVE_OSSDSP_FALSE='#' +else + HAVE_OSSDSP_TRUE='#' + HAVE_OSSDSP_FALSE= +fi + +$as_echo "#define HAVE_OSSDSP 1" >>confdefs.h + +fi + + + ac_fn_cxx_check_header_mongrel "$LINENO" "linux/joystick.h" "ac_cv_header_linux_joystick_h" "$ac_includes_default" +if test "x$ac_cv_header_linux_joystick_h" = x""yes; then : + if true; then + HAVE_LINUX_JOYSTICK_TRUE= + HAVE_LINUX_JOYSTICK_FALSE='#' +else + HAVE_LINUX_JOYSTICK_TRUE='#' + HAVE_LINUX_JOYSTICK_FALSE= +fi + +$as_echo "#define HAVE_LINUX_JOYSTICK 1" >>confdefs.h + +fi + + + if expr x"$target" : 'x.*beos' > /dev/null; then + CPPFLAGS="-no-fpic $CPPFLAGS" + fi +fi + + if false; then + HAVE_POSIX_SOCKETS_TRUE= + HAVE_POSIX_SOCKETS_FALSE='#' +else + HAVE_POSIX_SOCKETS_TRUE='#' + HAVE_POSIX_SOCKETS_FALSE= +fi + +HAVE_POSIX_SOCKETS=yes + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 +$as_echo_n "checking for library containing gethostbyname... " >&6; } +if test "${ac_cv_search_gethostbyname+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +for ac_lib in '' nsl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_search_gethostbyname=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_gethostbyname+set}" = set; then : + break +fi +done +if test "${ac_cv_search_gethostbyname+set}" = set; then : + +else + ac_cv_search_gethostbyname=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 +$as_echo "$ac_cv_search_gethostbyname" >&6; } +ac_res=$ac_cv_search_gethostbyname +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 +$as_echo_n "checking for library containing socket... " >&6; } +if test "${ac_cv_search_socket+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +for ac_lib in '' socket; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_search_socket=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_socket+set}" = set; then : + break +fi +done +if test "${ac_cv_search_socket+set}" = set; then : + +else + ac_cv_search_socket=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 +$as_echo "$ac_cv_search_socket" >&6; } +ac_res=$ac_cv_search_socket +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +for ac_func in socket bind listen connect accept send recv close gethostbyname gethostbyaddr getaddrinfo freeaddrinfo gai_strerror select getsockopt setsockopt +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + HAVE_POSIX_SOCKETS=no +fi +done + + +if test x$HAVE_POSIX_SOCKETS = xyes; then + if true; then + HAVE_POSIX_SOCKETS_TRUE= + HAVE_POSIX_SOCKETS_FALSE='#' +else + HAVE_POSIX_SOCKETS_TRUE='#' + HAVE_POSIX_SOCKETS_FALSE= +fi + + +$as_echo "#define HAVE_POSIX_SOCKETS 1" >>confdefs.h + +fi + + if false; then + ARCH_X86_TRUE= + ARCH_X86_FALSE='#' +else + ARCH_X86_TRUE='#' + ARCH_X86_FALSE= +fi + + if false; then + ARCH_X86_32_TRUE= + ARCH_X86_32_FALSE='#' +else + ARCH_X86_32_TRUE='#' + ARCH_X86_32_FALSE= +fi + + if false; then + ARCH_X86_64_TRUE= + ARCH_X86_64_FALSE='#' +else + ARCH_X86_64_TRUE='#' + ARCH_X86_64_FALSE= +fi + + if false; then + ARCH_POWERPC_TRUE= + ARCH_POWERPC_FALSE='#' +else + ARCH_POWERPC_TRUE='#' + ARCH_POWERPC_FALSE= +fi + + if false; then + ARCH_POWERPC_ALTIVEC_TRUE= + ARCH_POWERPC_ALTIVEC_FALSE='#' +else + ARCH_POWERPC_ALTIVEC_TRUE='#' + ARCH_POWERPC_ALTIVEC_FALSE= +fi + + +TRIO_CFLAGS="" +MMX_CFLAGS="" +SSE_CFLAGS="" +SSE2_CFLAGS="" +SSE3_CFLAGS="" +case "$target_cpu" in + x86_64|amd64) + +$as_echo "#define ARCH_X86 1" >>confdefs.h + + if true; then + ARCH_X86_TRUE= + ARCH_X86_FALSE='#' +else + ARCH_X86_TRUE='#' + ARCH_X86_FALSE= +fi + + +$as_echo "#define ARCH_X86_64 1" >>confdefs.h + + if true; then + ARCH_X86_64_TRUE= + ARCH_X86_64_FALSE='#' +else + ARCH_X86_64_TRUE='#' + ARCH_X86_64_FALSE= +fi + + MMX_CFLAGS="-mmmx" + SSE_CFLAGS="-msse" + SSE2_CFLAGS="-msse2" + SSE3_CFLAGS="-msse3" + ;; + + i*86) + +$as_echo "#define ARCH_X86 1" >>confdefs.h + + if true; then + ARCH_X86_TRUE= + ARCH_X86_FALSE='#' +else + ARCH_X86_TRUE='#' + ARCH_X86_FALSE= +fi + + +$as_echo "#define ARCH_X86_32 1" >>confdefs.h + + if true; then + ARCH_X86_32_TRUE= + ARCH_X86_32_FALSE='#' +else + ARCH_X86_32_TRUE='#' + ARCH_X86_32_FALSE= +fi + + MMX_CFLAGS="-mmmx" + SSE_CFLAGS="-msse" + SSE2_CFLAGS="-msse2" + SSE3_CFLAGS="-msse3" + ;; + + powerpc) + +$as_echo "#define ARCH_POWERPC 1" >>confdefs.h + + if true; then + ARCH_POWERPC_TRUE= + ARCH_POWERPC_FALSE='#' +else + ARCH_POWERPC_TRUE='#' + ARCH_POWERPC_FALSE= +fi + + + if test x$enable_altivec = xyes; then + ALTIVEC_FLAGS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking ALTIVEC_FLAGS for gcc -faltivec" >&5 +$as_echo_n "checking ALTIVEC_FLAGS for gcc -faltivec... " >&6; } +if test "${ax_cv_cflags_gcc_option__faltivec+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__faltivec="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -faltivec" "-pedantic % -faltivec %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__faltivec=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__faltivec" >&5 +$as_echo "$ax_cv_cflags_gcc_option__faltivec" >&6; } +var=$ax_cv_cflags_gcc_option__faltivec +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $ALTIVEC_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : ALTIVEC_FLAGS does contain \$var"; } >&5 + (: ALTIVEC_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : ALTIVEC_FLAGS=\"\$ALTIVEC_FLAGS \$var\""; } >&5 + (: ALTIVEC_FLAGS="$ALTIVEC_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ALTIVEC_FLAGS="$ALTIVEC_FLAGS $var" + fi + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking ALTIVEC_FLAGS for gcc -maltivec" >&5 +$as_echo_n "checking ALTIVEC_FLAGS for gcc -maltivec... " >&6; } +if test "${ax_cv_cflags_gcc_option__maltivec+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__maltivec="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -maltivec" "-pedantic % -maltivec %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__maltivec=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__maltivec" >&5 +$as_echo "$ax_cv_cflags_gcc_option__maltivec" >&6; } +var=$ax_cv_cflags_gcc_option__maltivec +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $ALTIVEC_FLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : ALTIVEC_FLAGS does contain \$var"; } >&5 + (: ALTIVEC_FLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : ALTIVEC_FLAGS=\"\$ALTIVEC_FLAGS \$var\""; } >&5 + (: ALTIVEC_FLAGS="$ALTIVEC_FLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ALTIVEC_FLAGS="$ALTIVEC_FLAGS $var" + fi + ;; +esac + + if test "x$ALTIVEC_FLAGS" != "x"; then + CPPFLAGS="$CPPFLAGS $ALTIVEC_FLAGS" + +$as_echo "#define ARCH_POWERPC_ALTIVEC 1" >>confdefs.h + + if true; then + ARCH_POWERPC_ALTIVEC_TRUE= + ARCH_POWERPC_ALTIVEC_FALSE='#' +else + ARCH_POWERPC_ALTIVEC_TRUE='#' + ARCH_POWERPC_ALTIVEC_FALSE= +fi + + + ac_fn_cxx_check_header_mongrel "$LINENO" "altivec.h" "ac_cv_header_altivec_h" "$ac_includes_default" +if test "x$ac_cv_header_altivec_h" = x""yes; then : + +$as_echo "#define HAVE_ALTIVEC_H 1" >>confdefs.h + +fi + + + fi + fi + ;; + + alpha*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking TRIO_CFLAGS for gcc -mieee" >&5 +$as_echo_n "checking TRIO_CFLAGS for gcc -mieee... " >&6; } +if test "${ax_cv_cflags_gcc_option__mieee+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_cflags_gcc_option__mieee="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic -Werror % -mieee" "-pedantic % -mieee %% no, obsolete" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_cflags_gcc_option__mieee=`echo $ac_arg | sed -e 's,.*% *,,'`; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done + CFLAGS="$ac_save_CFLAGS" + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cflags_gcc_option__mieee" >&5 +$as_echo "$ax_cv_cflags_gcc_option__mieee" >&6; } +var=$ax_cv_cflags_gcc_option__mieee +case ".$var" in + .ok|.ok,*) ;; + .|.no|.no,*) ;; + *) + if echo " $TRIO_CFLAGS " | grep " $var " 2>&1 >/dev/null + then { { $as_echo "$as_me:${as_lineno-$LINENO}: : TRIO_CFLAGS does contain \$var"; } >&5 + (: TRIO_CFLAGS does contain $var) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + else { { $as_echo "$as_me:${as_lineno-$LINENO}: : TRIO_CFLAGS=\"\$TRIO_CFLAGS \$var\""; } >&5 + (: TRIO_CFLAGS="$TRIO_CFLAGS $var") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + TRIO_CFLAGS="$TRIO_CFLAGS $var" + fi + ;; +esac + + ;; +esac + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + +$as_echo "#define MSB_FIRST 1" >>confdefs.h +;; #( + no) + + +$as_echo "#define LSB_FIRST 1" >>confdefs.h + + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +cat >>confdefs.h <<_ACEOF +#define MEDNAFEN_VERSION "$MEDNAFEN_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define MEDNAFEN_VERSION_NUMERIC $MEDNAFEN_VERSION_NUMERIC +_ACEOF + + + +$as_echo "#define MPC_FIXED_POINT 1" >>confdefs.h + + +LIBS="$SNDFILE_LIBS $LIBCDIO_LIBS $LIBS" +CPPFLAGS="$LIBCDIO_CFLAGS $SNDFILE_CFLAGS $CPPFLAGS" + +ac_config_files="$ac_config_files Makefile src/Makefile src/drivers/Makefile src/sexyal/Makefile src/tremor/Makefile src/mpcdec/Makefile src/trio/Makefile src/gb/Makefile src/gba/Makefile src/lynx/Makefile src/pce/Makefile src/pce_fast/Makefile src/pcfx/Makefile src/psx/Makefile src/sms/Makefile src/vb/Makefile src/wswan/Makefile src/nes/Makefile src/snes/Makefile src/ngp/Makefile src/sound/Makefile src/hw_cpu/Makefile src/hw_misc/Makefile src/hw_sound/Makefile src/hw_video/Makefile src/md/Makefile src/demo/Makefile src/desa68/Makefile po/Makefile.in intl/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_DEBUGGER_TRUE}" && test -z "${WANT_DEBUGGER_FALSE}"; then + as_fn_error $? "conditional \"WANT_DEBUGGER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_DEBUGGER_TRUE}" && test -z "${WANT_DEBUGGER_FALSE}"; then + as_fn_error $? "conditional \"WANT_DEBUGGER\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_GB_EMU_TRUE}" && test -z "${WANT_GB_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_GB_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_GBA_EMU_TRUE}" && test -z "${WANT_GBA_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_GBA_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_LYNX_EMU_TRUE}" && test -z "${WANT_LYNX_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_LYNX_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_MD_EMU_TRUE}" && test -z "${WANT_MD_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_MD_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_SMS_EMU_TRUE}" && test -z "${WANT_SMS_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_SMS_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_NES_EMU_TRUE}" && test -z "${WANT_NES_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_NES_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_NGP_EMU_TRUE}" && test -z "${WANT_NGP_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_NGP_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PCE_EMU_TRUE}" && test -z "${WANT_PCE_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PCE_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PCE_FAST_EMU_TRUE}" && test -z "${WANT_PCE_FAST_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PCE_FAST_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PCFX_EMU_TRUE}" && test -z "${WANT_PCFX_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PCFX_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PSX_EMU_TRUE}" && test -z "${WANT_PSX_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PSX_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_SMS_EMU_TRUE}" && test -z "${WANT_SMS_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_SMS_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_SNES_EMU_TRUE}" && test -z "${WANT_SNES_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_SNES_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_VB_EMU_TRUE}" && test -z "${WANT_VB_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_VB_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_WSWAN_EMU_TRUE}" && test -z "${WANT_WSWAN_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_WSWAN_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_GB_EMU_TRUE}" && test -z "${WANT_GB_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_GB_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_GBA_EMU_TRUE}" && test -z "${WANT_GBA_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_GBA_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_LYNX_EMU_TRUE}" && test -z "${WANT_LYNX_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_LYNX_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_MD_EMU_TRUE}" && test -z "${WANT_MD_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_MD_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_NES_EMU_TRUE}" && test -z "${WANT_NES_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_NES_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_NGP_EMU_TRUE}" && test -z "${WANT_NGP_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_NGP_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PCE_EMU_TRUE}" && test -z "${WANT_PCE_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PCE_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PCE_FAST_EMU_TRUE}" && test -z "${WANT_PCE_FAST_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PCE_FAST_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PCFX_EMU_TRUE}" && test -z "${WANT_PCFX_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PCFX_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_PSX_EMU_TRUE}" && test -z "${WANT_PSX_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_PSX_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_SMS_EMU_TRUE}" && test -z "${WANT_SMS_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_SMS_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_SNES_EMU_TRUE}" && test -z "${WANT_SNES_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_SNES_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_VB_EMU_TRUE}" && test -z "${WANT_VB_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_VB_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WANT_WSWAN_EMU_TRUE}" && test -z "${WANT_WSWAN_EMU_FALSE}"; then + as_fn_error $? "conditional \"WANT_WSWAN_EMU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_OSSDSP_TRUE}" && test -z "${HAVE_OSSDSP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_OSSDSP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ALSA_TRUE}" && test -z "${HAVE_ALSA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ALSA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DIRECTSOUND_TRUE}" && test -z "${HAVE_DIRECTSOUND_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DIRECTSOUND\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_SDL_TRUE}" && test -z "${HAVE_SDL_FALSE}"; then + as_fn_error $? "conditional \"HAVE_SDL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_JACK_TRUE}" && test -z "${HAVE_JACK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_JACK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ALSA_TRUE}" && test -z "${HAVE_ALSA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ALSA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_JACK_TRUE}" && test -z "${HAVE_JACK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_JACK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_SDL_TRUE}" && test -z "${HAVE_SDL_FALSE}"; then + as_fn_error $? "conditional \"HAVE_SDL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then + as_fn_error $? "conditional \"WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${UNIX_TRUE}" && test -z "${UNIX_FALSE}"; then + as_fn_error $? "conditional \"UNIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LIBCDIO_TRUE}" && test -z "${HAVE_LIBCDIO_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBCDIO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LINUX_JOYSTICK_TRUE}" && test -z "${HAVE_LINUX_JOYSTICK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LINUX_JOYSTICK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DIRECTSOUND_TRUE}" && test -z "${HAVE_DIRECTSOUND_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DIRECTSOUND\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then + as_fn_error $? "conditional \"WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LIBCDIO_TRUE}" && test -z "${HAVE_LIBCDIO_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBCDIO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LIBCDIO_TRUE}" && test -z "${HAVE_LIBCDIO_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBCDIO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_OSSDSP_TRUE}" && test -z "${HAVE_OSSDSP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_OSSDSP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_LINUX_JOYSTICK_TRUE}" && test -z "${HAVE_LINUX_JOYSTICK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LINUX_JOYSTICK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_POSIX_SOCKETS_TRUE}" && test -z "${HAVE_POSIX_SOCKETS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_POSIX_SOCKETS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_POSIX_SOCKETS_TRUE}" && test -z "${HAVE_POSIX_SOCKETS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_POSIX_SOCKETS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_TRUE}" && test -z "${ARCH_X86_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_32_TRUE}" && test -z "${ARCH_X86_32_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86_32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_64_TRUE}" && test -z "${ARCH_X86_64_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86_64\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_POWERPC_TRUE}" && test -z "${ARCH_POWERPC_FALSE}"; then + as_fn_error $? "conditional \"ARCH_POWERPC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_POWERPC_ALTIVEC_TRUE}" && test -z "${ARCH_POWERPC_ALTIVEC_FALSE}"; then + as_fn_error $? "conditional \"ARCH_POWERPC_ALTIVEC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_TRUE}" && test -z "${ARCH_X86_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_64_TRUE}" && test -z "${ARCH_X86_64_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86_64\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_TRUE}" && test -z "${ARCH_X86_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_X86_32_TRUE}" && test -z "${ARCH_X86_32_FALSE}"; then + as_fn_error $? "conditional \"ARCH_X86_32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_POWERPC_TRUE}" && test -z "${ARCH_POWERPC_FALSE}"; then + as_fn_error $? "conditional \"ARCH_POWERPC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ARCH_POWERPC_ALTIVEC_TRUE}" && test -z "${ARCH_POWERPC_ALTIVEC_FALSE}"; then + as_fn_error $? "conditional \"ARCH_POWERPC_ALTIVEC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.67. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.67, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' +predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' +postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +AR \ +AR_FLAGS \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +SHELL \ +ECHO \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_wl \ +lt_prog_compiler_pic \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +fix_srcfile_path \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +fix_srcfile_path_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` + ;; +esac + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h:include/config.h.in" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/drivers/Makefile") CONFIG_FILES="$CONFIG_FILES src/drivers/Makefile" ;; + "src/sexyal/Makefile") CONFIG_FILES="$CONFIG_FILES src/sexyal/Makefile" ;; + "src/tremor/Makefile") CONFIG_FILES="$CONFIG_FILES src/tremor/Makefile" ;; + "src/mpcdec/Makefile") CONFIG_FILES="$CONFIG_FILES src/mpcdec/Makefile" ;; + "src/trio/Makefile") CONFIG_FILES="$CONFIG_FILES src/trio/Makefile" ;; + "src/gb/Makefile") CONFIG_FILES="$CONFIG_FILES src/gb/Makefile" ;; + "src/gba/Makefile") CONFIG_FILES="$CONFIG_FILES src/gba/Makefile" ;; + "src/lynx/Makefile") CONFIG_FILES="$CONFIG_FILES src/lynx/Makefile" ;; + "src/pce/Makefile") CONFIG_FILES="$CONFIG_FILES src/pce/Makefile" ;; + "src/pce_fast/Makefile") CONFIG_FILES="$CONFIG_FILES src/pce_fast/Makefile" ;; + "src/pcfx/Makefile") CONFIG_FILES="$CONFIG_FILES src/pcfx/Makefile" ;; + "src/psx/Makefile") CONFIG_FILES="$CONFIG_FILES src/psx/Makefile" ;; + "src/sms/Makefile") CONFIG_FILES="$CONFIG_FILES src/sms/Makefile" ;; + "src/vb/Makefile") CONFIG_FILES="$CONFIG_FILES src/vb/Makefile" ;; + "src/wswan/Makefile") CONFIG_FILES="$CONFIG_FILES src/wswan/Makefile" ;; + "src/nes/Makefile") CONFIG_FILES="$CONFIG_FILES src/nes/Makefile" ;; + "src/snes/Makefile") CONFIG_FILES="$CONFIG_FILES src/snes/Makefile" ;; + "src/ngp/Makefile") CONFIG_FILES="$CONFIG_FILES src/ngp/Makefile" ;; + "src/sound/Makefile") CONFIG_FILES="$CONFIG_FILES src/sound/Makefile" ;; + "src/hw_cpu/Makefile") CONFIG_FILES="$CONFIG_FILES src/hw_cpu/Makefile" ;; + "src/hw_misc/Makefile") CONFIG_FILES="$CONFIG_FILES src/hw_misc/Makefile" ;; + "src/hw_sound/Makefile") CONFIG_FILES="$CONFIG_FILES src/hw_sound/Makefile" ;; + "src/hw_video/Makefile") CONFIG_FILES="$CONFIG_FILES src/hw_video/Makefile" ;; + "src/md/Makefile") CONFIG_FILES="$CONFIG_FILES src/md/Makefile" ;; + "src/demo/Makefile") CONFIG_FILES="$CONFIG_FILES src/demo/Makefile" ;; + "src/desa68/Makefile") CONFIG_FILES="$CONFIG_FILES src/desa68/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/libmednahawk/configure.ac b/libmednahawk/configure.ac new file mode 100644 index 0000000000..be2543dc37 --- /dev/null +++ b/libmednahawk/configure.ac @@ -0,0 +1,547 @@ +AC_INIT([src/mednafen.cpp]) +AC_GNU_SOURCE +AC_USE_SYSTEM_EXTENSIONS +AC_CONFIG_MACRO_DIR([m4]) + +# +# Avoid trailing and leading zeroes in the decimal version components to avoid confusing not-so-learned people. +# +MEDNAFEN_VERSION='0.9.26-WIP' +MEDNAFEN_VERSION_NUMERIC=0x000926 + +AC_CANONICAL_HOST +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE([mednafen], $MEDNAFEN_VERSION) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) +AM_CONFIG_HEADER([include/config.h:include/config.h.in]) + +AC_PROG_CC +AC_PROG_CPP +AM_PROG_AS +AM_PROG_CC_C_O +AC_PROG_CXX +AC_PROG_CXXCPP +AC_LANG_CPLUSPLUS +AM_PROG_LIBTOOL +AC_PROG_INSTALL + +gl_VISIBILITY + +AC_SYS_LARGEFILE +AC_FUNC_FSEEKO + +# sizeof tests need to come after largefile support macros + +AC_CHECK_TYPE(ptrdiff_t,long) +AC_TYPE_SIZE_T +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(long long) +AC_CHECK_SIZEOF(double) +AC_CHECK_SIZEOF(__int64) +AC_CHECK_SIZEOF(void *) +AC_CHECK_SIZEOF(size_t) +AC_CHECK_SIZEOF(ptrdiff_t) +AC_CHECK_SIZEOF(off_t) +AC_C_CONST +AC_CHECK_FUNCS(memcmp memcpy memmove memset mmap munmap madvise signal sigaction fcntl getenv putenv setenv gettimeofday getpwuid getuid nanosleep usleep strerror strerror_r ftello fopen64 fseeko64 ftello64 fstat64) +AC_CHECK_HEADERS(fcntl.h) +AC_FUNC_MKDIR +PKG_PROG_PKG_CONFIG + +# +# Check for any libraries that need to be linked against for clock_gettime(). +# +# (posix4 is apparently used by much older versions of Solaris according to tar, pre-7, so maybe it's not necessary +# for Mednafen?) +AC_SEARCH_LIBS(clock_gettime, [rt posix4]) +AC_CHECK_FUNCS(clock_gettime) + +AC_DEFINE(MINILZO_HAVE_CONFIG_H, [1], [Define if config.h is present]) + +AC_CHECK_HEADER([OpenGL/gl.h],HAVE_OPENGL_GL_H=true, HAVE_OPENGL_GL_H=false) +if $HAVE_OPENGL_GL_H +then + AC_DEFINE(HAVE_APPLE_OPENGL_FRAMEWORK, [1], [Define if we should include from OpenGL instead of GL]) +else + AC_PATH_X + + if test "x${x_includes}" != "x"; then + CPPFLAGS="-I${x_includes} ${CPPFLAGS}" + fi + + AC_CHECK_HEADER([GL/gl.h],HAVE_GL_GL_H=true, HAVE_GL_GL_H=false) + + if test x$HAVE_GL_GL_H = xfalse; then + AC_MSG_ERROR([*** OpenGL header file not found!]) + fi +fi + +AM_ICONV +AM_GNU_GETTEXT + +AC_SUBST(LIBICONV) +AC_SUBST(LIBINTL) + +dnl Check for zlib +AC_CHECK_LIB([z], [zlibVersion],[], AC_MSG_ERROR([*** zlib not found!])) +LIBS="$LIBS -lz" + +dnl -fno-unit-at-a-time + +OPTIMIZER_FLAGS="" + +dnl MATH_OPTIMIZER_FLAGS is used in the automake files where it doesn't break code +MATH_OPTIMIZER_FLAGS="-ffast-math" +AC_SUBST(MATH_OPTIMIZER_FLAGS) + +AX_CFLAGS_GCC_OPTION([-fomit-frame-pointer], OPTIMIZER_FLAGS) +AX_CFLAGS_GCC_OPTION([-finline-limit=6000], OPTIMIZER_FLAGS) +AX_CFLAGS_GCC_OPTION([--param large-function-growth=800], OPTIMIZER_FLAGS) +AX_CFLAGS_GCC_OPTION([--param inline-unit-growth=175], OPTIMIZER_FLAGS) +AX_CFLAGS_GCC_OPTION([--param max-inline-insns-single=10000], OPTIMIZER_FLAGS) +AX_NO_STRICT_OVERFLOW + + +WARNING_FLAGS="" +AX_CFLAGS_GCC_OPTION([-Wall], WARNING_FLAGS) +AX_CFLAGS_GCC_OPTION([-Winline], WARNING_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wshadow], WARNING_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wempty-body], WARNING_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wignored-qualifiers], WARNING_FLAGS) +AC_SUBST(WARNING_FLAGS) + +SNES_EXTRA_FLAGS="" +SNES_EXTRA_CXXFLAGS="" +AX_CFLAGS_GCC_OPTION([-Wno-unused], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-inline], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-shadow], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-sign-compare], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-inline], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-ignored-qualifiers], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-inline], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-uninitialized], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-parentheses], SNES_EXTRA_FLAGS) +AX_CFLAGS_GCC_OPTION([-Wno-switch], SNES_EXTRA_FLAGS) +AC_SUBST(SNES_EXTRA_FLAGS) +AC_SUBST(SNES_EXTRA_CXXFLAGS) + +GBA_EXTRA_FLAGS="" +AX_CFLAGS_GCC_OPTION([-fno-unit-at-a-time], GBA_EXTRA_FLAGS) +AC_SUBST(GBA_EXTRA_FLAGS) + +MDFN_COMPAT_FLAGS="" +AX_CFLAGS_GCC_OPTION([-fsigned-char], MDFN_COMPAT_FLAGS) + +AC_SUBST([AM_CFLAGS], "$MDFN_COMPAT_FLAGS $WARNING_FLAGS $OPTIMIZER_FLAGS $NO_STRICT_OVERFLOW_FLAGS") +AC_SUBST([AM_CXXFLAGS], "$MDFN_COMPAT_FLAGS $WARNING_FLAGS $OPTIMIZER_FLAGS $NO_STRICT_OVERFLOW_FLAGS") + +AM_CONDITIONAL(WANT_DEBUGGER, false) + +AC_ARG_ENABLE(debugger, + AC_HELP_STRING([--enable-debugger], [build with internal debugger [[default=yes]]]), + , enable_debugger=yes) + +if test x$enable_debugger = xyes; then + AC_DEFINE([WANT_DEBUGGER], [1], [Define if we are compiling with debugger.]) + AM_CONDITIONAL(WANT_DEBUGGER, true) +fi + +AC_ARG_ENABLE(cjk-fonts, + AC_HELP_STRING([--enable-cjk-fonts], [build with internal CJK(Chinese, Japanese, Korean) fonts [[default=yes]]]), + , enable_cjk_fonts=yes) + +if test x$enable_cjk_fonts = xyes; then + AC_DEFINE([WANT_INTERNAL_CJK], [1], [Define if we are compiling with internal CJK fonts.]) +fi + +dnl +dnl The code that uses $enable_altivec is lower, in the CPU architecture section. +dnl +AC_ARG_ENABLE(altivec, + AC_HELP_STRING([--enable-altivec], [use AltiVec extensions on PowerPC/POWER ISA processors [[default=yes]]]), + , enable_altivec=yes) + + +AM_CONDITIONAL(WANT_GB_EMU, false) +AM_CONDITIONAL(WANT_GBA_EMU, false) +AM_CONDITIONAL(WANT_LYNX_EMU, false) +AM_CONDITIONAL(WANT_MD_EMU, false) +AM_CONDITIONAL(WANT_SMS_EMU, false) +AM_CONDITIONAL(WANT_NES_EMU, false) +AM_CONDITIONAL(WANT_NGP_EMU, false) +AM_CONDITIONAL(WANT_PCE_EMU, false) +AM_CONDITIONAL(WANT_PCE_FAST_EMU, false) +AM_CONDITIONAL(WANT_PCFX_EMU, false) +AM_CONDITIONAL(WANT_PSX_EMU, false) +AM_CONDITIONAL(WANT_SMS_EMU, false) +AM_CONDITIONAL(WANT_SNES_EMU, false) +AM_CONDITIONAL(WANT_VB_EMU, false) +AM_CONDITIONAL(WANT_WSWAN_EMU, false) + +AC_ARG_ENABLE(gb, + AC_HELP_STRING([--enable-gb], [build with GameBoy emulation [[default=yes]]]), + , enable_gb=yes) + +if test x$enable_gb = xyes; then + AC_DEFINE([WANT_GB_EMU], [1], [Define if we are compiling with GB emulation.]) + AM_CONDITIONAL(WANT_GB_EMU, true) +fi + +AC_ARG_ENABLE(gba, + AC_HELP_STRING([--enable-gba], [build with GameBoy Advance emulation [[default=yes]]]), + , enable_gba=yes) + +if test x$enable_gba = xyes; then + AC_DEFINE([WANT_GBA_EMU], [1], [Define if we are compiling with GBA emulation.]) + AM_CONDITIONAL(WANT_GBA_EMU, true) +fi + +AC_ARG_ENABLE(lynx, + AC_HELP_STRING([--enable-lynx], [build with Atari Lynx emulation [[default=yes]]]), + , enable_lynx=yes) + +if test x$enable_lynx = xyes; then + AC_DEFINE([WANT_LYNX_EMU], [1], [Define if we are compiling with Lynx emulation.]) + AM_CONDITIONAL(WANT_LYNX_EMU, true) +fi + +AC_ARG_ENABLE(md, + AC_HELP_STRING([--enable-md], [build with Sega Genesis/MegaDrive emulation [[default=yes]]]), + , enable_md=yes) + +if test x$enable_md = xyes; then + AC_DEFINE([WANT_MD_EMU], [1], [Define if we are compiling with Sega Genesis/MegaDrive emulation.]) + AM_CONDITIONAL(WANT_MD_EMU, true) +fi + +AC_ARG_ENABLE(nes, + AC_HELP_STRING([--enable-nes], [build with Nintendo Entertainment System emulation [[default=yes]]]), + , enable_nes=yes) + +if test x$enable_nes = xyes; then + AC_DEFINE([WANT_NES_EMU], [1], [Define if we are compiling with NES emulation.]) + AM_CONDITIONAL(WANT_NES_EMU, true) +fi + +AC_ARG_ENABLE(ngp, + AC_HELP_STRING([--enable-ngp], [build with Neo Geo Pocket emulation [[default=yes]]]), + , enable_ngp=yes) + +if test x$enable_ngp = xyes; then + AC_DEFINE([WANT_NGP_EMU], [1], [Define if we are compiling with NGP emulation.]) + AM_CONDITIONAL(WANT_NGP_EMU, true) +fi + +AC_ARG_ENABLE(pce, + AC_HELP_STRING([--enable-pce], [build with PC Engine(TurboGrafx 16) emulation [[default=yes]]]), + , enable_pce=yes) + +if test x$enable_pce = xyes; then + AC_DEFINE([WANT_PCE_EMU], [1], [Define if we are compiling with PCE emulation.]) + AM_CONDITIONAL(WANT_PCE_EMU, true) +fi + +AC_ARG_ENABLE(pce-fast, + AC_HELP_STRING([--enable-pce-fast], [build the separate, fast PC Engine(TurboGrafx 16) emulation [[default=yes]]]), + , enable_pce_fast=yes) + +if test x$enable_pce_fast = xyes; then + AC_DEFINE([WANT_PCE_FAST_EMU], [1], [Define if we are compiling with separate fast PCE emulation.]) + AM_CONDITIONAL(WANT_PCE_FAST_EMU, true) +fi + +AC_ARG_ENABLE(pcfx, + AC_HELP_STRING([--enable-pcfx], [build with PC-FX emulation [[default=yes]]]), + , enable_pcfx=yes) + +if test x$enable_pcfx = xyes; then + AC_DEFINE([WANT_PCFX_EMU], [1], [Define if we are compiling with PC-FX emulation.]) + AM_CONDITIONAL(WANT_PCFX_EMU, true) +fi + +AC_ARG_ENABLE(psx, + AC_HELP_STRING([--enable-psx], [build with PlayStation emulation [[default=yes]]]), + , enable_psx=yes) + +if test x$enable_psx = xyes; then + AC_DEFINE([WANT_PSX_EMU], [1], [Define if we are compiling with PlayStation emulation.]) + AM_CONDITIONAL(WANT_PSX_EMU, true) +fi + +AC_ARG_ENABLE(sms, + AC_HELP_STRING([--enable-sms], [build with SMS+GG emulation [[default=yes]]]), + , enable_sms=yes) + +if test x$enable_sms = xyes; then + AC_DEFINE([WANT_SMS_EMU], [1], [Define if we are compiling with SMS+GG emulation.]) + AM_CONDITIONAL(WANT_SMS_EMU, true) +fi + +AC_ARG_ENABLE(snes, + AC_HELP_STRING([--enable-snes], [build with SNES emulation [[default=yes]]]), + , enable_snes=yes) + +if test x$enable_snes = xyes; then + AC_DEFINE([WANT_SNES_EMU], [1], [Define if we are compiling with SNES emulation.]) + AM_CONDITIONAL(WANT_SNES_EMU, true) +fi + +AC_ARG_ENABLE(vb, + AC_HELP_STRING([--enable-vb], [build with Virtual Boy emulation [[default=yes]]]), + , enable_vb=yes) + +if test x$enable_vb = xyes; then + AC_DEFINE([WANT_VB_EMU], [1], [Define if we are compiling with Virtual Boy emulation.]) + AM_CONDITIONAL(WANT_VB_EMU, true) +fi + + +AC_ARG_ENABLE(wswan, + AC_HELP_STRING([--enable-wswan], [build with WonderSwan emulation [[default=yes]]]), + , enable_wswan=yes) + +if test x$enable_wswan = xyes; then + AC_DEFINE([WANT_WSWAN_EMU], [1], [Define if we are compiling with WonderSwan emulation.]) + AM_CONDITIONAL(WANT_WSWAN_EMU, true) +fi + +AM_CONDITIONAL(HAVE_OSSDSP, false) +AM_CONDITIONAL(HAVE_ALSA, false) +AM_CONDITIONAL(HAVE_DIRECTSOUND, false) +AM_CONDITIONAL(HAVE_SDL, false) +AM_CONDITIONAL(HAVE_JACK, false) + +dnl Check* functions ripped from SDL's autoconf file, with heavy modifications +dnl See if the ALSA audio interface is supported + +CheckALSA() +{ + AC_ARG_ENABLE(alsa, +AC_HELP_STRING([--enable-alsa], [support the ALSA audio API [[default=yes]]]), + , enable_alsa=yes) + if test x$enable_alsa = xyes; then + AM_PATH_ALSA(1.0.0, have_alsa=yes, have_alsa=no) + + # Restore all flags from before the ALSA detection runs + CFLAGS="$alsa_save_CFLAGS" + LDFLAGS="$alsa_save_LDFLAGS" + LIBS="$alsa_save_LIBS" + + if test x$have_alsa = xyes; then + AM_CONDITIONAL(HAVE_ALSA, true) + AC_DEFINE([HAVE_ALSA], [1], [Define if we are compiling with ALSA support.]) + LIBS="$LIBS $ALSA_LIBS" + CPPFLAGS="$CPPFLAGS $ALSA_CFLAGS" + fi + fi +} + +CheckJACK() +{ + AC_ARG_ENABLE(jack, +AC_HELP_STRING([--enable-jack], [support the JACK audio API [[default=yes]]]), + , enable_jack=yes) + if test x$enable_jack = xyes; then + PKG_CHECK_MODULES(JACK, jack, [have_jack=yes], [have_jack=no]) + + if test x$have_jack = xyes; then + AM_CONDITIONAL(HAVE_JACK, true) + AC_DEFINE([HAVE_JACK], [1], [Define if we are compiling with JACK support.]) + LIBS="$LIBS $JACK_LIBS" + CPPFLAGS="$CPPFLAGS $JACK_CFLAGS" + fi + fi +} + +CheckALSA +CheckJACK + +SDL_VERSION=1.2.0 +AM_PATH_SDL($SDL_VERSION, HAVE_SDL=true, HAVE_SDL=false) +if $HAVE_SDL +then + AM_CONDITIONAL(HAVE_SDL, true) + AC_DEFINE([HAVE_SDL], [1], [Define if we are compiling with SDL sound support.]) + AC_SUBST(SDL_LIBS) + AC_SUBST(SDL_CFLAGS) +else + AC_MSG_ERROR([*** SDL 1.2.x not found!]) +fi + +AC_ARG_WITH([libcdio], + [AS_HELP_STRING([--with-libcdio], + [support physical CD reading @<:@default=yes@:>@])], + [], + [with_libcdio=yes]) + +AC_ARG_WITH([libsndfile], + [AS_HELP_STRING([--with-libsndfile], + [support various sound file formats in ripped CD images @<:@default=yes@:>@])], + [], + [with_libsndfile=yes]) + +#AC_ARG_WITH([ogg-vorbis], +# [AS_HELP_STRING([--with-ogg-vorbis], +# [support Ogg Vorbis playback for ripped CD images @<:@default=yes@:>@])], +# [], +# [with_oggvorbis=yes]) + + +AM_CONDITIONAL(WIN32, false) +AM_CONDITIONAL(UNIX, false) +AM_CONDITIONAL(HAVE_LIBCDIO, false) +AM_CONDITIONAL(HAVE_LINUX_JOYSTICK, false) + +if expr x"$target" : 'x.*-mingw*' > /dev/null; then + CPPFLAGS="-mstackrealign $CPPFLAGS" + AC_CHECK_HEADER([dsound.h],HAVE_DIRECTSOUND=true, HAVE_DIRECTSOUND=false) + + if $HAVE_DIRECTSOUND + then + AM_CONDITIONAL(HAVE_DIRECTSOUND,true) + AC_DEFINE([HAVE_DIRECTSOUND], [1], [Define if we are compiling with DirectSound support.]) + LIBS="-ldxguid -lwinmm -ldsound $LIBS" + fi + + AC_DEFINE([PSS_STYLE],[2], [Defines the filesystem path-separator type.]) + AC_DEFINE([WIN32], [1], [Define if we are compiling for Win32.]) + AM_CONDITIONAL(WIN32, true) + + LIBS="-mwindows -lws2_32 -ldxguid -lwinmm -ldinput $LIBS -lwinmm" + + if test x$with_libcdio = xyes; then + LIBS="$LIBS -lcdio" + AC_DEFINE([HAVE_LIBCDIO], [1], [Define if we are compiling with libcdio support.]) + AM_CONDITIONAL(HAVE_LIBCDIO, true) + fi + + if test x$with_libsndfile = xyes; then + SNDFILE_LIBS="-lsndfile" + SNDFILE_CFLAGS="" + AC_DEFINE([HAVE_LIBSNDFILE], [1], [Define if we are compiling with libsndfile support.]) + fi +else + if test x$with_libcdio = xyes; then + PKG_CHECK_MODULES(LIBCDIO, libcdio, [], AC_MSG_ERROR([*** libcdio not found!])) + AC_DEFINE([HAVE_LIBCDIO], [1], [Define if we are compiling with libcdio support.]) + AM_CONDITIONAL(HAVE_LIBCDIO, true) + fi + + if test x$with_libsndfile = xyes; then + PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.2, [], AC_MSG_ERROR([*** libsndfile >= 1.0.2 not found!])) + AC_DEFINE([HAVE_LIBSNDFILE], [1], [Define if we are compiling with libsndfile support.]) + fi + + AC_DEFINE([PSS_STYLE],[1], [Defines the filesystem path-separator type.]) + AC_CHECK_HEADER([sys/soundcard.h],[AM_CONDITIONAL(HAVE_OSSDSP,true) AC_DEFINE([HAVE_OSSDSP], [1], [Define if we are compiling with OSS support.])]) + AC_CHECK_HEADER([linux/joystick.h],[AM_CONDITIONAL(HAVE_LINUX_JOYSTICK,true) AC_DEFINE([HAVE_LINUX_JOYSTICK], [1], [Define if we are compiling with Linux joystick support.])]) + if expr x"$target" : 'x.*beos' > /dev/null; then + CPPFLAGS="-no-fpic $CPPFLAGS" + fi +fi + +dnl +dnl FIXME: Make sure POSIX/BSD sockets API detection doesn't have any false positives(like when targeting Windows). +dnl +AM_CONDITIONAL(HAVE_POSIX_SOCKETS, false) +dnl +dnl +HAVE_POSIX_SOCKETS=yes + +dnl +dnl Solaris may require "nsl" and "socket" libraries. +dnl +AC_SEARCH_LIBS([gethostbyname], [nsl]) +AC_SEARCH_LIBS([socket], [socket]) + +AC_CHECK_FUNCS(socket bind listen connect accept send recv close gethostbyname gethostbyaddr getaddrinfo freeaddrinfo gai_strerror select getsockopt setsockopt, [], + [HAVE_POSIX_SOCKETS=no]) + +if test x$HAVE_POSIX_SOCKETS = xyes; then + AM_CONDITIONAL(HAVE_POSIX_SOCKETS, true) + AC_DEFINE([HAVE_POSIX_SOCKETS], [1], [Define if we are compiling with POSIX sockets support.]) +fi + +AM_CONDITIONAL(ARCH_X86, false) +AM_CONDITIONAL(ARCH_X86_32, false) +AM_CONDITIONAL(ARCH_X86_64, false) +AM_CONDITIONAL(ARCH_POWERPC, false) +AM_CONDITIONAL(ARCH_POWERPC_ALTIVEC, false) + +TRIO_CFLAGS="" +MMX_CFLAGS="" +SSE_CFLAGS="" +SSE2_CFLAGS="" +SSE3_CFLAGS="" +case "$target_cpu" in + x86_64|amd64) + AC_DEFINE([ARCH_X86], [1], [Define if we are compiling for 32-bit or 64-bit x86 architectures.]) + AM_CONDITIONAL(ARCH_X86, true) + AC_DEFINE([ARCH_X86_64], [1], [Define if we are compiling for 64-bit x86 architectures.]) + AM_CONDITIONAL(ARCH_X86_64, true) + dnl + dnl MMX, SSE, and SSE2 here should be unnecessary, but put them in just in case. + dnl + MMX_CFLAGS="-mmmx" + SSE_CFLAGS="-msse" + SSE2_CFLAGS="-msse2" + SSE3_CFLAGS="-msse3" + ;; + + i*86) + AC_DEFINE([ARCH_X86], [1], [Define if we are compiling for 32-bit or 64-bit x86 architectures.]) + AM_CONDITIONAL(ARCH_X86, true) + AC_DEFINE([ARCH_X86_32], [1], [Define if we are compiling for 32-bit x86 architectures.]) + AM_CONDITIONAL(ARCH_X86_32, true) + MMX_CFLAGS="-mmmx" + SSE_CFLAGS="-msse" + SSE2_CFLAGS="-msse2" + SSE3_CFLAGS="-msse3" + ;; + + powerpc) + AC_DEFINE([ARCH_POWERPC], [1], [Define if we are compiling for PPC architectures.]) + AM_CONDITIONAL(ARCH_POWERPC, true) + + if test x$enable_altivec = xyes; then + ALTIVEC_FLAGS="" + AX_CFLAGS_GCC_OPTION([-faltivec], ALTIVEC_FLAGS) + AX_CFLAGS_GCC_OPTION([-maltivec], ALTIVEC_FLAGS) + if test "x$ALTIVEC_FLAGS" != "x"; then + CPPFLAGS="$CPPFLAGS $ALTIVEC_FLAGS" + AC_DEFINE([ARCH_POWERPC_ALTIVEC], [1], [Define if we are compiling with AltiVec usage.]) + AM_CONDITIONAL(ARCH_POWERPC_ALTIVEC, true) + + AC_CHECK_HEADER([altivec.h], + AC_DEFINE([HAVE_ALTIVEC_H], [1], [Define if altivec.h is present and usable.]), + [] ) + fi + fi + ;; + + alpha*) + AX_CFLAGS_GCC_OPTION([-mieee], TRIO_CFLAGS) + ;; +esac +AC_SUBST(MMX_CFLAGS) +AC_SUBST(SSE_CFLAGS) +AC_SUBST(SSE2_CFLAGS) +AC_SUBST(SSE3_CFLAGS) +AC_SUBST(TRIO_CFLAGS) + +AC_C_BIGENDIAN([AC_DEFINE([MSB_FIRST],[1],[Define on big-endian platforms.])], +[ + AC_DEFINE([LSB_FIRST],[1],[Define on little-endian platforms.]) +]) +AC_DEFINE_UNQUOTED([MEDNAFEN_VERSION],"$MEDNAFEN_VERSION", [Mednafen version definition.]) +AC_DEFINE_UNQUOTED([MEDNAFEN_VERSION_NUMERIC],$MEDNAFEN_VERSION_NUMERIC, [Mednafen version numeric.]) + +AC_DEFINE([MPC_FIXED_POINT], [1], [Define to use fixed-point MPC decoder.]) + +LIBS="$SNDFILE_LIBS $LIBCDIO_LIBS $LIBS" +CPPFLAGS="$LIBCDIO_CFLAGS $SNDFILE_CFLAGS $CPPFLAGS" + +dnl Output Makefiles +AC_OUTPUT([Makefile src/Makefile src/drivers/Makefile src/sexyal/Makefile src/tremor/Makefile src/mpcdec/Makefile src/trio/Makefile src/gb/Makefile src/gba/Makefile src/lynx/Makefile src/pce/Makefile src/pce_fast/Makefile src/pcfx/Makefile src/psx/Makefile src/sms/Makefile src/vb/Makefile src/wswan/Makefile src/nes/Makefile src/snes/Makefile src/ngp/Makefile src/sound/Makefile src/hw_cpu/Makefile src/hw_misc/Makefile src/hw_sound/Makefile src/hw_video/Makefile src/md/Makefile src/demo/Makefile src/desa68/Makefile po/Makefile.in intl/Makefile]) diff --git a/libmednahawk/depcomp b/libmednahawk/depcomp new file mode 100644 index 0000000000..2484462d0a --- /dev/null +++ b/libmednahawk/depcomp @@ -0,0 +1,630 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libmednahawk/dx/XInput.h b/libmednahawk/dx/XInput.h new file mode 100644 index 0000000000..c54327b609 --- /dev/null +++ b/libmednahawk/dx/XInput.h @@ -0,0 +1,258 @@ +/*************************************************************************** +* * +* XInput.h -- This module defines XBOX controller APIs * +* and constansts for the Windows platform. * +* * +* Copyright (c) Microsoft Corp. All rights reserved. * +* * +***************************************************************************/ +#ifndef _XINPUT_H_ +#define _XINPUT_H_ + +#include + +// Current name of the DLL shipped in the same SDK as this header. +// The name reflects the current version +#define XINPUT_DLL_A "xinput1_3.dll" +#define XINPUT_DLL_W L"xinput1_3.dll" +#ifdef UNICODE + #define XINPUT_DLL XINPUT_DLL_W +#else + #define XINPUT_DLL XINPUT_DLL_A +#endif + +// +// Device types available in XINPUT_CAPABILITIES +// +#define XINPUT_DEVTYPE_GAMEPAD 0x01 + +// +// Device subtypes available in XINPUT_CAPABILITIES +// +#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01 +#define XINPUT_DEVSUBTYPE_WHEEL 0x02 +#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03 +#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04 +#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05 +#define XINPUT_DEVSUBTYPE_GUITAR 0x06 +#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08 + +// +// Flags for XINPUT_CAPABILITIES +// +#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004 + +// +// Constants for gamepad buttons +// +#define XINPUT_GAMEPAD_DPAD_UP 0x0001 +#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002 +#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004 +#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008 +#define XINPUT_GAMEPAD_START 0x0010 +#define XINPUT_GAMEPAD_BACK 0x0020 +#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040 +#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080 +#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 +#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 +#define XINPUT_GAMEPAD_A 0x1000 +#define XINPUT_GAMEPAD_B 0x2000 +#define XINPUT_GAMEPAD_X 0x4000 +#define XINPUT_GAMEPAD_Y 0x8000 + + +// +// Gamepad thresholds +// +#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849 +#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689 +#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30 + +// +// Flags to pass to XInputGetCapabilities +// +#define XINPUT_FLAG_GAMEPAD 0x00000001 + +// +// Devices that support batteries +// +#define BATTERY_DEVTYPE_GAMEPAD 0x00 +#define BATTERY_DEVTYPE_HEADSET 0x01 + +// +// Flags for battery status level +// +#define BATTERY_TYPE_DISCONNECTED 0x00 // This device is not connected +#define BATTERY_TYPE_WIRED 0x01 // Wired device, no battery +#define BATTERY_TYPE_ALKALINE 0x02 // Alkaline battery source +#define BATTERY_TYPE_NIMH 0x03 // Nickel Metal Hydride battery source +#define BATTERY_TYPE_UNKNOWN 0xFF // Cannot determine the battery type + +// These are only valid for wireless, connected devices, with known battery types +// The amount of use time remaining depends on the type of device. +#define BATTERY_LEVEL_EMPTY 0x00 +#define BATTERY_LEVEL_LOW 0x01 +#define BATTERY_LEVEL_MEDIUM 0x02 +#define BATTERY_LEVEL_FULL 0x03 + +// User index definitions +#define XUSER_MAX_COUNT 4 + +#define XUSER_INDEX_ANY 0x000000FF + + +// +// Codes returned for the gamepad keystroke +// + +#define VK_PAD_A 0x5800 +#define VK_PAD_B 0x5801 +#define VK_PAD_X 0x5802 +#define VK_PAD_Y 0x5803 +#define VK_PAD_RSHOULDER 0x5804 +#define VK_PAD_LSHOULDER 0x5805 +#define VK_PAD_LTRIGGER 0x5806 +#define VK_PAD_RTRIGGER 0x5807 + +#define VK_PAD_DPAD_UP 0x5810 +#define VK_PAD_DPAD_DOWN 0x5811 +#define VK_PAD_DPAD_LEFT 0x5812 +#define VK_PAD_DPAD_RIGHT 0x5813 +#define VK_PAD_START 0x5814 +#define VK_PAD_BACK 0x5815 +#define VK_PAD_LTHUMB_PRESS 0x5816 +#define VK_PAD_RTHUMB_PRESS 0x5817 + +#define VK_PAD_LTHUMB_UP 0x5820 +#define VK_PAD_LTHUMB_DOWN 0x5821 +#define VK_PAD_LTHUMB_RIGHT 0x5822 +#define VK_PAD_LTHUMB_LEFT 0x5823 +#define VK_PAD_LTHUMB_UPLEFT 0x5824 +#define VK_PAD_LTHUMB_UPRIGHT 0x5825 +#define VK_PAD_LTHUMB_DOWNRIGHT 0x5826 +#define VK_PAD_LTHUMB_DOWNLEFT 0x5827 + +#define VK_PAD_RTHUMB_UP 0x5830 +#define VK_PAD_RTHUMB_DOWN 0x5831 +#define VK_PAD_RTHUMB_RIGHT 0x5832 +#define VK_PAD_RTHUMB_LEFT 0x5833 +#define VK_PAD_RTHUMB_UPLEFT 0x5834 +#define VK_PAD_RTHUMB_UPRIGHT 0x5835 +#define VK_PAD_RTHUMB_DOWNRIGHT 0x5836 +#define VK_PAD_RTHUMB_DOWNLEFT 0x5837 + +// +// Flags used in XINPUT_KEYSTROKE +// +#define XINPUT_KEYSTROKE_KEYDOWN 0x0001 +#define XINPUT_KEYSTROKE_KEYUP 0x0002 +#define XINPUT_KEYSTROKE_REPEAT 0x0004 + +// +// Structures used by XInput APIs +// +typedef struct _XINPUT_GAMEPAD +{ + WORD wButtons; + BYTE bLeftTrigger; + BYTE bRightTrigger; + SHORT sThumbLX; + SHORT sThumbLY; + SHORT sThumbRX; + SHORT sThumbRY; +} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD; + +typedef struct _XINPUT_STATE +{ + DWORD dwPacketNumber; + XINPUT_GAMEPAD Gamepad; +} XINPUT_STATE, *PXINPUT_STATE; + +typedef struct _XINPUT_VIBRATION +{ + WORD wLeftMotorSpeed; + WORD wRightMotorSpeed; +} XINPUT_VIBRATION, *PXINPUT_VIBRATION; + +typedef struct _XINPUT_CAPABILITIES +{ + BYTE Type; + BYTE SubType; + WORD Flags; + XINPUT_GAMEPAD Gamepad; + XINPUT_VIBRATION Vibration; +} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; + +typedef struct _XINPUT_BATTERY_INFORMATION +{ + BYTE BatteryType; + BYTE BatteryLevel; +} XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; + +typedef struct _XINPUT_KEYSTROKE +{ + WORD VirtualKey; + WCHAR Unicode; + WORD Flags; + BYTE UserIndex; + BYTE HidCode; +} XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; + +// +// XInput APIs +// +#ifdef __cplusplus +extern "C" { +#endif + +DWORD WINAPI XInputGetState +( + DWORD dwUserIndex, // [in] Index of the gamer associated with the device + XINPUT_STATE* pState // [out] Receives the current state +); + +DWORD WINAPI XInputSetState +( + DWORD dwUserIndex, // [in] Index of the gamer associated with the device + XINPUT_VIBRATION* pVibration // [in, out] The vibration information to send to the controller +); + +DWORD WINAPI XInputGetCapabilities +( + DWORD dwUserIndex, // [in] Index of the gamer associated with the device + DWORD dwFlags, // [in] Input flags that identify the device type + XINPUT_CAPABILITIES* pCapabilities // [out] Receives the capabilities +); + +void WINAPI XInputEnable +( + BOOL enable // [in] Indicates whether xinput is enabled or disabled. +); + +DWORD WINAPI XInputGetDSoundAudioDeviceGuids +( + DWORD dwUserIndex, // [in] Index of the gamer associated with the device + GUID* pDSoundRenderGuid, // [out] DSound device ID for render + GUID* pDSoundCaptureGuid // [out] DSound device ID for capture +); + +DWORD WINAPI XInputGetBatteryInformation +( + DWORD dwUserIndex, // [in] Index of the gamer associated with the device + BYTE devType, // [in] Which device on this user index + XINPUT_BATTERY_INFORMATION* pBatteryInformation // [out] Contains the level and types of batteries +); + +DWORD WINAPI XInputGetKeystroke +( + DWORD dwUserIndex, // [in] Index of the gamer associated with the device + DWORD dwReserved, // [in] Reserved for future use + PXINPUT_KEYSTROKE pKeystroke // [out] Pointer to an XINPUT_KEYSTROKE structure that receives an input event. +); + +#ifdef __cplusplus +} +#endif + +#endif //_XINPUT_H_ + diff --git a/libmednahawk/dx/dinput.h b/libmednahawk/dx/dinput.h new file mode 100644 index 0000000000..bf74e163c4 --- /dev/null +++ b/libmednahawk/dx/dinput.h @@ -0,0 +1,4417 @@ +/**************************************************************************** + * + * Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved. + * + * File: dinput.h + * Content: DirectInput include file + * + ****************************************************************************/ + +#ifndef __DINPUT_INCLUDED__ +#define __DINPUT_INCLUDED__ + +#ifndef DIJ_RINGZERO + +#ifdef _WIN32 +#define COM_NO_WINDOWS_H +#include +#endif + +#endif /* DIJ_RINGZERO */ + +#ifdef __cplusplus +extern "C" { +#endif + + + + + +/* + * To build applications for older versions of DirectInput + * + * #define DIRECTINPUT_VERSION [ 0x0300 | 0x0500 | 0x0700 ] + * + * before #include . By default, #include + * will produce a DirectX 8-compatible header file. + * + */ + +#define DIRECTINPUT_HEADER_VERSION 0x0800 +#ifndef DIRECTINPUT_VERSION +#define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION +#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800") +#endif + +#ifndef DIJ_RINGZERO + +/**************************************************************************** + * + * Class IDs + * + ****************************************************************************/ + +DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(CLSID_DirectInputDevice8,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/**************************************************************************** + * + * Interfaces + * + ****************************************************************************/ + +DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); +DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); +DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(IID_IDirectInputDevice7A,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInputDevice7W,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); +DEFINE_GUID(IID_IDirectInputDevice8A,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); +DEFINE_GUID(IID_IDirectInputDevice8W,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); +DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); + +/**************************************************************************** + * + * Predefined object types + * + ****************************************************************************/ + +DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RxAxis, 0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RyAxis, 0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_RzAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Slider, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/**************************************************************************** + * + * Predefined product GUIDs + * + ****************************************************************************/ + +DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_Joystick ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysMouseEm2,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); +DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); + +/**************************************************************************** + * + * Predefined force feedback effects + * + ****************************************************************************/ + +DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); +DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Interfaces and Structures... + * + ****************************************************************************/ + +#if(DIRECTINPUT_VERSION >= 0x0500) + +/**************************************************************************** + * + * IDirectInputEffect + * + ****************************************************************************/ + +#define DIEFT_ALL 0x00000000 + +#define DIEFT_CONSTANTFORCE 0x00000001 +#define DIEFT_RAMPFORCE 0x00000002 +#define DIEFT_PERIODIC 0x00000003 +#define DIEFT_CONDITION 0x00000004 +#define DIEFT_CUSTOMFORCE 0x00000005 +#define DIEFT_HARDWARE 0x000000FF +#define DIEFT_FFATTACK 0x00000200 +#define DIEFT_FFFADE 0x00000400 +#define DIEFT_SATURATION 0x00000800 +#define DIEFT_POSNEGCOEFFICIENTS 0x00001000 +#define DIEFT_POSNEGSATURATION 0x00002000 +#define DIEFT_DEADBAND 0x00004000 +#define DIEFT_STARTDELAY 0x00008000 +#define DIEFT_GETTYPE(n) LOBYTE(n) + +#define DI_DEGREES 100 +#define DI_FFNOMINALMAX 10000 +#define DI_SECONDS 1000000 + +typedef struct DICONSTANTFORCE { + LONG lMagnitude; +} DICONSTANTFORCE, *LPDICONSTANTFORCE; +typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; + +typedef struct DIRAMPFORCE { + LONG lStart; + LONG lEnd; +} DIRAMPFORCE, *LPDIRAMPFORCE; +typedef const DIRAMPFORCE *LPCDIRAMPFORCE; + +typedef struct DIPERIODIC { + DWORD dwMagnitude; + LONG lOffset; + DWORD dwPhase; + DWORD dwPeriod; +} DIPERIODIC, *LPDIPERIODIC; +typedef const DIPERIODIC *LPCDIPERIODIC; + +typedef struct DICONDITION { + LONG lOffset; + LONG lPositiveCoefficient; + LONG lNegativeCoefficient; + DWORD dwPositiveSaturation; + DWORD dwNegativeSaturation; + LONG lDeadBand; +} DICONDITION, *LPDICONDITION; +typedef const DICONDITION *LPCDICONDITION; + +typedef struct DICUSTOMFORCE { + DWORD cChannels; + DWORD dwSamplePeriod; + DWORD cSamples; + LPLONG rglForceData; +} DICUSTOMFORCE, *LPDICUSTOMFORCE; +typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; + + +typedef struct DIENVELOPE { + DWORD dwSize; /* sizeof(DIENVELOPE) */ + DWORD dwAttackLevel; + DWORD dwAttackTime; /* Microseconds */ + DWORD dwFadeLevel; + DWORD dwFadeTime; /* Microseconds */ +} DIENVELOPE, *LPDIENVELOPE; +typedef const DIENVELOPE *LPCDIENVELOPE; + + +/* This structure is defined for DirectX 5.0 compatibility */ +typedef struct DIEFFECT_DX5 { + DWORD dwSize; /* sizeof(DIEFFECT_DX5) */ + DWORD dwFlags; /* DIEFF_* */ + DWORD dwDuration; /* Microseconds */ + DWORD dwSamplePeriod; /* Microseconds */ + DWORD dwGain; + DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ + DWORD dwTriggerRepeatInterval; /* Microseconds */ + DWORD cAxes; /* Number of axes */ + LPDWORD rgdwAxes; /* Array of axes */ + LPLONG rglDirection; /* Array of directions */ + LPDIENVELOPE lpEnvelope; /* Optional */ + DWORD cbTypeSpecificParams; /* Size of params */ + LPVOID lpvTypeSpecificParams; /* Pointer to params */ +} DIEFFECT_DX5, *LPDIEFFECT_DX5; +typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; + +typedef struct DIEFFECT { + DWORD dwSize; /* sizeof(DIEFFECT) */ + DWORD dwFlags; /* DIEFF_* */ + DWORD dwDuration; /* Microseconds */ + DWORD dwSamplePeriod; /* Microseconds */ + DWORD dwGain; + DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */ + DWORD dwTriggerRepeatInterval; /* Microseconds */ + DWORD cAxes; /* Number of axes */ + LPDWORD rgdwAxes; /* Array of axes */ + LPLONG rglDirection; /* Array of directions */ + LPDIENVELOPE lpEnvelope; /* Optional */ + DWORD cbTypeSpecificParams; /* Size of params */ + LPVOID lpvTypeSpecificParams; /* Pointer to params */ +#if(DIRECTINPUT_VERSION >= 0x0600) + DWORD dwStartDelay; /* Microseconds */ +#endif /* DIRECTINPUT_VERSION >= 0x0600 */ +} DIEFFECT, *LPDIEFFECT; +typedef DIEFFECT DIEFFECT_DX6; +typedef LPDIEFFECT LPDIEFFECT_DX6; +typedef const DIEFFECT *LPCDIEFFECT; + + +#if(DIRECTINPUT_VERSION >= 0x0700) +#ifndef DIJ_RINGZERO +typedef struct DIFILEEFFECT{ + DWORD dwSize; + GUID GuidEffect; + LPCDIEFFECT lpDiEffect; + CHAR szFriendlyName[MAX_PATH]; +}DIFILEEFFECT, *LPDIFILEEFFECT; +typedef const DIFILEEFFECT *LPCDIFILEEFFECT; +typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); +#endif /* DIJ_RINGZERO */ +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +#define DIEFF_OBJECTIDS 0x00000001 +#define DIEFF_OBJECTOFFSETS 0x00000002 +#define DIEFF_CARTESIAN 0x00000010 +#define DIEFF_POLAR 0x00000020 +#define DIEFF_SPHERICAL 0x00000040 + +#define DIEP_DURATION 0x00000001 +#define DIEP_SAMPLEPERIOD 0x00000002 +#define DIEP_GAIN 0x00000004 +#define DIEP_TRIGGERBUTTON 0x00000008 +#define DIEP_TRIGGERREPEATINTERVAL 0x00000010 +#define DIEP_AXES 0x00000020 +#define DIEP_DIRECTION 0x00000040 +#define DIEP_ENVELOPE 0x00000080 +#define DIEP_TYPESPECIFICPARAMS 0x00000100 +#if(DIRECTINPUT_VERSION >= 0x0600) +#define DIEP_STARTDELAY 0x00000200 +#define DIEP_ALLPARAMS_DX5 0x000001FF +#define DIEP_ALLPARAMS 0x000003FF +#else /* DIRECTINPUT_VERSION < 0x0600 */ +#define DIEP_ALLPARAMS 0x000001FF +#endif /* DIRECTINPUT_VERSION < 0x0600 */ +#define DIEP_START 0x20000000 +#define DIEP_NORESTART 0x40000000 +#define DIEP_NODOWNLOAD 0x80000000 +#define DIEB_NOTRIGGER 0xFFFFFFFF + +#define DIES_SOLO 0x00000001 +#define DIES_NODOWNLOAD 0x80000000 + +#define DIEGES_PLAYING 0x00000001 +#define DIEGES_EMULATED 0x00000002 + +typedef struct DIEFFESCAPE { + DWORD dwSize; + DWORD dwCommand; + LPVOID lpvInBuffer; + DWORD cbInBuffer; + LPVOID lpvOutBuffer; + DWORD cbOutBuffer; +} DIEFFESCAPE, *LPDIEFFESCAPE; + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputEffect + +DECLARE_INTERFACE_(IDirectInputEffect, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputEffect methods ***/ + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; + STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE; + STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE; + STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE; + STDMETHOD(Stop)(THIS) PURE; + STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; + STDMETHOD(Download)(THIS) PURE; + STDMETHOD(Unload)(THIS) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; +}; + +typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) +#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) +#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) +#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) +#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) +#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) +#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) +#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#else +#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputEffect_AddRef(p) (p)->AddRef() +#define IDirectInputEffect_Release(p) (p)->Release() +#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) +#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) +#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) +#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) +#define IDirectInputEffect_Stop(p) (p)->Stop() +#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) +#define IDirectInputEffect_Download(p) (p)->Download() +#define IDirectInputEffect_Unload(p) (p)->Unload() +#define IDirectInputEffect_Escape(p,a) (p)->Escape(a) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +/**************************************************************************** + * + * IDirectInputDevice + * + ****************************************************************************/ + +#if DIRECTINPUT_VERSION <= 0x700 +#define DIDEVTYPE_DEVICE 1 +#define DIDEVTYPE_MOUSE 2 +#define DIDEVTYPE_KEYBOARD 3 +#define DIDEVTYPE_JOYSTICK 4 + +#else +#define DI8DEVCLASS_ALL 0 +#define DI8DEVCLASS_DEVICE 1 +#define DI8DEVCLASS_POINTER 2 +#define DI8DEVCLASS_KEYBOARD 3 +#define DI8DEVCLASS_GAMECTRL 4 + +#define DI8DEVTYPE_DEVICE 0x11 +#define DI8DEVTYPE_MOUSE 0x12 +#define DI8DEVTYPE_KEYBOARD 0x13 +#define DI8DEVTYPE_JOYSTICK 0x14 +#define DI8DEVTYPE_GAMEPAD 0x15 +#define DI8DEVTYPE_DRIVING 0x16 +#define DI8DEVTYPE_FLIGHT 0x17 +#define DI8DEVTYPE_1STPERSON 0x18 +#define DI8DEVTYPE_DEVICECTRL 0x19 +#define DI8DEVTYPE_SCREENPOINTER 0x1A +#define DI8DEVTYPE_REMOTE 0x1B +#define DI8DEVTYPE_SUPPLEMENTAL 0x1C +#endif /* DIRECTINPUT_VERSION <= 0x700 */ + +#define DIDEVTYPE_HID 0x00010000 + +#if DIRECTINPUT_VERSION <= 0x700 +#define DIDEVTYPEMOUSE_UNKNOWN 1 +#define DIDEVTYPEMOUSE_TRADITIONAL 2 +#define DIDEVTYPEMOUSE_FINGERSTICK 3 +#define DIDEVTYPEMOUSE_TOUCHPAD 4 +#define DIDEVTYPEMOUSE_TRACKBALL 5 + +#define DIDEVTYPEKEYBOARD_UNKNOWN 0 +#define DIDEVTYPEKEYBOARD_PCXT 1 +#define DIDEVTYPEKEYBOARD_OLIVETTI 2 +#define DIDEVTYPEKEYBOARD_PCAT 3 +#define DIDEVTYPEKEYBOARD_PCENH 4 +#define DIDEVTYPEKEYBOARD_NOKIA1050 5 +#define DIDEVTYPEKEYBOARD_NOKIA9140 6 +#define DIDEVTYPEKEYBOARD_NEC98 7 +#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 +#define DIDEVTYPEKEYBOARD_NEC98106 9 +#define DIDEVTYPEKEYBOARD_JAPAN106 10 +#define DIDEVTYPEKEYBOARD_JAPANAX 11 +#define DIDEVTYPEKEYBOARD_J3100 12 + +#define DIDEVTYPEJOYSTICK_UNKNOWN 1 +#define DIDEVTYPEJOYSTICK_TRADITIONAL 2 +#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 +#define DIDEVTYPEJOYSTICK_GAMEPAD 4 +#define DIDEVTYPEJOYSTICK_RUDDER 5 +#define DIDEVTYPEJOYSTICK_WHEEL 6 +#define DIDEVTYPEJOYSTICK_HEADTRACKER 7 + +#else +#define DI8DEVTYPEMOUSE_UNKNOWN 1 +#define DI8DEVTYPEMOUSE_TRADITIONAL 2 +#define DI8DEVTYPEMOUSE_FINGERSTICK 3 +#define DI8DEVTYPEMOUSE_TOUCHPAD 4 +#define DI8DEVTYPEMOUSE_TRACKBALL 5 +#define DI8DEVTYPEMOUSE_ABSOLUTE 6 + +#define DI8DEVTYPEKEYBOARD_UNKNOWN 0 +#define DI8DEVTYPEKEYBOARD_PCXT 1 +#define DI8DEVTYPEKEYBOARD_OLIVETTI 2 +#define DI8DEVTYPEKEYBOARD_PCAT 3 +#define DI8DEVTYPEKEYBOARD_PCENH 4 +#define DI8DEVTYPEKEYBOARD_NOKIA1050 5 +#define DI8DEVTYPEKEYBOARD_NOKIA9140 6 +#define DI8DEVTYPEKEYBOARD_NEC98 7 +#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 +#define DI8DEVTYPEKEYBOARD_NEC98106 9 +#define DI8DEVTYPEKEYBOARD_JAPAN106 10 +#define DI8DEVTYPEKEYBOARD_JAPANAX 11 +#define DI8DEVTYPEKEYBOARD_J3100 12 + +#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 + +#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEJOYSTICK_STANDARD 2 + +#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEGAMEPAD_STANDARD 2 +#define DI8DEVTYPEGAMEPAD_TILT 3 + +#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 +#define DI8DEVTYPEDRIVING_DUALPEDALS 3 +#define DI8DEVTYPEDRIVING_THREEPEDALS 4 +#define DI8DEVTYPEDRIVING_HANDHELD 5 + +#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPEFLIGHT_STICK 2 +#define DI8DEVTYPEFLIGHT_YOKE 3 +#define DI8DEVTYPEFLIGHT_RC 4 + +#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE +#define DI8DEVTYPE1STPERSON_UNKNOWN 2 +#define DI8DEVTYPE1STPERSON_SIXDOF 3 +#define DI8DEVTYPE1STPERSON_SHOOTER 4 + +#define DI8DEVTYPESCREENPTR_UNKNOWN 2 +#define DI8DEVTYPESCREENPTR_LIGHTGUN 3 +#define DI8DEVTYPESCREENPTR_LIGHTPEN 4 +#define DI8DEVTYPESCREENPTR_TOUCH 5 + +#define DI8DEVTYPEREMOTE_UNKNOWN 2 + +#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 +#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 +#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 + +#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 +#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 +#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 +#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 +#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 +#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 +#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 +#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 +#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 +#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 +#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 +#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 +#endif /* DIRECTINPUT_VERSION <= 0x700 */ + +#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) +#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) + +#if(DIRECTINPUT_VERSION >= 0x0500) +/* This structure is defined for DirectX 3.0 compatibility */ +typedef struct DIDEVCAPS_DX3 { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; +} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +typedef struct DIDEVCAPS { + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFSamplePeriod; + DWORD dwFFMinTimeResolution; + DWORD dwFirmwareRevision; + DWORD dwHardwareRevision; + DWORD dwFFDriverVersion; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVCAPS, *LPDIDEVCAPS; + +#define DIDC_ATTACHED 0x00000001 +#define DIDC_POLLEDDEVICE 0x00000002 +#define DIDC_EMULATED 0x00000004 +#define DIDC_POLLEDDATAFORMAT 0x00000008 +#if(DIRECTINPUT_VERSION >= 0x0500) +#define DIDC_FORCEFEEDBACK 0x00000100 +#define DIDC_FFATTACK 0x00000200 +#define DIDC_FFFADE 0x00000400 +#define DIDC_SATURATION 0x00000800 +#define DIDC_POSNEGCOEFFICIENTS 0x00001000 +#define DIDC_POSNEGSATURATION 0x00002000 +#define DIDC_DEADBAND 0x00004000 +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +#define DIDC_STARTDELAY 0x00008000 +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIDC_ALIAS 0x00010000 +#define DIDC_PHANTOM 0x00020000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIDC_HIDDEN 0x00040000 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#define DIDFT_ALL 0x00000000 + +#define DIDFT_RELAXIS 0x00000001 +#define DIDFT_ABSAXIS 0x00000002 +#define DIDFT_AXIS 0x00000003 + +#define DIDFT_PSHBUTTON 0x00000004 +#define DIDFT_TGLBUTTON 0x00000008 +#define DIDFT_BUTTON 0x0000000C + +#define DIDFT_POV 0x00000010 +#define DIDFT_COLLECTION 0x00000040 +#define DIDFT_NODATA 0x00000080 + +#define DIDFT_ANYINSTANCE 0x00FFFF00 +#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE +#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) +#define DIDFT_GETTYPE(n) LOBYTE(n) +#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) +#define DIDFT_FFACTUATOR 0x01000000 +#define DIDFT_FFEFFECTTRIGGER 0x02000000 +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIDFT_OUTPUT 0x10000000 +#define DIDFT_VENDORDEFINED 0x04000000 +#define DIDFT_ALIAS 0x08000000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ +#ifndef DIDFT_OPTIONAL +#define DIDFT_OPTIONAL 0x80000000 +#endif + +#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) +#define DIDFT_NOCOLLECTION 0x00FFFF00 + +#ifndef DIJ_RINGZERO + +typedef struct _DIOBJECTDATAFORMAT { + const GUID *pguid; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; +} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; +typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; + +typedef struct _DIDATAFORMAT { + DWORD dwSize; + DWORD dwObjSize; + DWORD dwFlags; + DWORD dwDataSize; + DWORD dwNumObjs; + LPDIOBJECTDATAFORMAT rgodf; +} DIDATAFORMAT, *LPDIDATAFORMAT; +typedef const DIDATAFORMAT *LPCDIDATAFORMAT; + +#define DIDF_ABSAXIS 0x00000001 +#define DIDF_RELAXIS 0x00000002 + +#ifdef __cplusplus +extern "C" { +#endif +extern const DIDATAFORMAT c_dfDIMouse; + +#if(DIRECTINPUT_VERSION >= 0x0700) +extern const DIDATAFORMAT c_dfDIMouse2; +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +extern const DIDATAFORMAT c_dfDIKeyboard; + +#if(DIRECTINPUT_VERSION >= 0x0500) +extern const DIDATAFORMAT c_dfDIJoystick; +extern const DIDATAFORMAT c_dfDIJoystick2; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +#ifdef __cplusplus +}; +#endif + + +#if DIRECTINPUT_VERSION > 0x0700 + +typedef struct _DIACTIONA { + UINT_PTR uAppData; + DWORD dwSemantic; + OPTIONAL DWORD dwFlags; + OPTIONAL union { + LPCSTR lptszActionName; + UINT uResIdString; + }; + OPTIONAL GUID guidInstance; + OPTIONAL DWORD dwObjID; + OPTIONAL DWORD dwHow; +} DIACTIONA, *LPDIACTIONA ; +typedef struct _DIACTIONW { + UINT_PTR uAppData; + DWORD dwSemantic; + OPTIONAL DWORD dwFlags; + OPTIONAL union { + LPCWSTR lptszActionName; + UINT uResIdString; + }; + OPTIONAL GUID guidInstance; + OPTIONAL DWORD dwObjID; + OPTIONAL DWORD dwHow; +} DIACTIONW, *LPDIACTIONW ; +#ifdef UNICODE +typedef DIACTIONW DIACTION; +typedef LPDIACTIONW LPDIACTION; +#else +typedef DIACTIONA DIACTION; +typedef LPDIACTIONA LPDIACTION; +#endif // UNICODE + +typedef const DIACTIONA *LPCDIACTIONA; +typedef const DIACTIONW *LPCDIACTIONW; +#ifdef UNICODE +typedef DIACTIONW DIACTION; +typedef LPCDIACTIONW LPCDIACTION; +#else +typedef DIACTIONA DIACTION; +typedef LPCDIACTIONA LPCDIACTION; +#endif // UNICODE +typedef const DIACTION *LPCDIACTION; + + +#define DIA_FORCEFEEDBACK 0x00000001 +#define DIA_APPMAPPED 0x00000002 +#define DIA_APPNOMAP 0x00000004 +#define DIA_NORANGE 0x00000008 +#define DIA_APPFIXED 0x00000010 + +#define DIAH_UNMAPPED 0x00000000 +#define DIAH_USERCONFIG 0x00000001 +#define DIAH_APPREQUESTED 0x00000002 +#define DIAH_HWAPP 0x00000004 +#define DIAH_HWDEFAULT 0x00000008 +#define DIAH_DEFAULT 0x00000020 +#define DIAH_ERROR 0x80000000 + +typedef struct _DIACTIONFORMATA { + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + LPDIACTIONA rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + OPTIONAL LONG lAxisMin; + OPTIONAL LONG lAxisMax; + OPTIONAL HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + CHAR tszActionMap[MAX_PATH]; +} DIACTIONFORMATA, *LPDIACTIONFORMATA; +typedef struct _DIACTIONFORMATW { + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + LPDIACTIONW rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + OPTIONAL LONG lAxisMin; + OPTIONAL LONG lAxisMax; + OPTIONAL HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + WCHAR tszActionMap[MAX_PATH]; +} DIACTIONFORMATW, *LPDIACTIONFORMATW; +#ifdef UNICODE +typedef DIACTIONFORMATW DIACTIONFORMAT; +typedef LPDIACTIONFORMATW LPDIACTIONFORMAT; +#else +typedef DIACTIONFORMATA DIACTIONFORMAT; +typedef LPDIACTIONFORMATA LPDIACTIONFORMAT; +#endif // UNICODE +typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; +typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; +#ifdef UNICODE +typedef DIACTIONFORMATW DIACTIONFORMAT; +typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT; +#else +typedef DIACTIONFORMATA DIACTIONFORMAT; +typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT; +#endif // UNICODE +typedef const DIACTIONFORMAT *LPCDIACTIONFORMAT; + +#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF +#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF +#define DIAFTS_UNUSEDDEVICELOW 0x00000000 +#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 + +#define DIDBAM_DEFAULT 0x00000000 +#define DIDBAM_PRESERVE 0x00000001 +#define DIDBAM_INITIALIZE 0x00000002 +#define DIDBAM_HWDEFAULTS 0x00000004 + +#define DIDSAM_DEFAULT 0x00000000 +#define DIDSAM_NOUSER 0x00000001 +#define DIDSAM_FORCESAVE 0x00000002 + +#define DICD_DEFAULT 0x00000000 +#define DICD_EDIT 0x00000001 + +/* + * The following definition is normally defined in d3dtypes.h + */ +#ifndef D3DCOLOR_DEFINED +typedef DWORD D3DCOLOR; +#define D3DCOLOR_DEFINED +#endif + +typedef struct _DICOLORSET{ + DWORD dwSize; + D3DCOLOR cTextFore; + D3DCOLOR cTextHighlight; + D3DCOLOR cCalloutLine; + D3DCOLOR cCalloutHighlight; + D3DCOLOR cBorder; + D3DCOLOR cControlFill; + D3DCOLOR cHighlightFill; + D3DCOLOR cAreaFill; +} DICOLORSET, *LPDICOLORSET; +typedef const DICOLORSET *LPCDICOLORSET; + + +typedef struct _DICONFIGUREDEVICESPARAMSA{ + DWORD dwSize; + DWORD dwcUsers; + LPSTR lptszUserNames; + DWORD dwcFormats; + LPDIACTIONFORMATA lprgFormats; + HWND hwnd; + DICOLORSET dics; + IUnknown FAR * lpUnkDDSTarget; +} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; +typedef struct _DICONFIGUREDEVICESPARAMSW{ + DWORD dwSize; + DWORD dwcUsers; + LPWSTR lptszUserNames; + DWORD dwcFormats; + LPDIACTIONFORMATW lprgFormats; + HWND hwnd; + DICOLORSET dics; + IUnknown FAR * lpUnkDDSTarget; +} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; +#ifdef UNICODE +typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; +typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS; +#else +typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; +typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS; +#endif // UNICODE +typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; +typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; +#ifdef UNICODE +typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS; +typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS; +#else +typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS; +typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS; +#endif // UNICODE +typedef const DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS; + + +#define DIDIFT_CONFIGURATION 0x00000001 +#define DIDIFT_OVERLAY 0x00000002 + +#define DIDAL_CENTERED 0x00000000 +#define DIDAL_LEFTALIGNED 0x00000001 +#define DIDAL_RIGHTALIGNED 0x00000002 +#define DIDAL_MIDDLE 0x00000000 +#define DIDAL_TOPALIGNED 0x00000004 +#define DIDAL_BOTTOMALIGNED 0x00000008 + +typedef struct _DIDEVICEIMAGEINFOA { + CHAR tszImagePath[MAX_PATH]; + DWORD dwFlags; + // These are valid if DIDIFT_OVERLAY is present in dwFlags. + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT rgptCalloutLine[5]; + RECT rcCalloutRect; + DWORD dwTextAlign; +} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; +typedef struct _DIDEVICEIMAGEINFOW { + WCHAR tszImagePath[MAX_PATH]; + DWORD dwFlags; + // These are valid if DIDIFT_OVERLAY is present in dwFlags. + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT rgptCalloutLine[5]; + RECT rcCalloutRect; + DWORD dwTextAlign; +} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; +typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO; +#else +typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; +typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; +typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO; +typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO; +#else +typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO; +typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO; + +typedef struct _DIDEVICEIMAGEINFOHEADERA { + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + LPDIDEVICEIMAGEINFOA lprgImageInfoArray; +} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; +typedef struct _DIDEVICEIMAGEINFOHEADERW { + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + LPDIDEVICEIMAGEINFOW lprgImageInfoArray; +} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; +typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER; +#else +typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; +typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; +typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; +#ifdef UNICODE +typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER; +typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER; +#else +typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER; +typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER; +#endif // UNICODE +typedef const DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER; + +#endif /* DIRECTINPUT_VERSION > 0x0700 */ + +#if(DIRECTINPUT_VERSION >= 0x0500) +/* These structures are defined for DirectX 3.0 compatibility */ + +typedef struct DIDEVICEOBJECTINSTANCE_DX3A { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR tszName[MAX_PATH]; +} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; +typedef struct DIDEVICEOBJECTINSTANCE_DX3W { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + WCHAR tszName[MAX_PATH]; +} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; +#ifdef UNICODE +typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3; +typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3; +#else +typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3; +typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3; +#endif // UNICODE +typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; +typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; +typedef const DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +typedef struct DIDEVICEOBJECTINSTANCEA { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR tszName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReportId; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; +typedef struct DIDEVICEOBJECTINSTANCEW { + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + WCHAR tszName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReportId; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; +#ifdef UNICODE +typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE; +typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE; +#else +typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE; +typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE; +#endif // UNICODE +typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; +typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; +typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE; + +typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID); +#ifdef UNICODE +#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW +#else +#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA +#endif // !UNICODE + +#if(DIRECTINPUT_VERSION >= 0x0500) +#define DIDOI_FFACTUATOR 0x00000001 +#define DIDOI_FFEFFECTTRIGGER 0x00000002 +#define DIDOI_POLLED 0x00008000 +#define DIDOI_ASPECTPOSITION 0x00000100 +#define DIDOI_ASPECTVELOCITY 0x00000200 +#define DIDOI_ASPECTACCEL 0x00000300 +#define DIDOI_ASPECTFORCE 0x00000400 +#define DIDOI_ASPECTMASK 0x00000F00 +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIDOI_GUIDISUSAGE 0x00010000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +typedef struct DIPROPHEADER { + DWORD dwSize; + DWORD dwHeaderSize; + DWORD dwObj; + DWORD dwHow; +} DIPROPHEADER, *LPDIPROPHEADER; +typedef const DIPROPHEADER *LPCDIPROPHEADER; + +#define DIPH_DEVICE 0 +#define DIPH_BYOFFSET 1 +#define DIPH_BYID 2 +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIPH_BYUSAGE 3 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIMAKEUSAGEDWORD(UsagePage, Usage) \ + (DWORD)MAKELONG(Usage, UsagePage) +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +typedef struct DIPROPDWORD { + DIPROPHEADER diph; + DWORD dwData; +} DIPROPDWORD, *LPDIPROPDWORD; +typedef const DIPROPDWORD *LPCDIPROPDWORD; + +#if(DIRECTINPUT_VERSION >= 0x0800) +typedef struct DIPROPPOINTER { + DIPROPHEADER diph; + UINT_PTR uData; +} DIPROPPOINTER, *LPDIPROPPOINTER; +typedef const DIPROPPOINTER *LPCDIPROPPOINTER; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +typedef struct DIPROPRANGE { + DIPROPHEADER diph; + LONG lMin; + LONG lMax; +} DIPROPRANGE, *LPDIPROPRANGE; +typedef const DIPROPRANGE *LPCDIPROPRANGE; + +#define DIPROPRANGE_NOMIN ((LONG)0x80000000) +#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) + +#if(DIRECTINPUT_VERSION >= 0x050a) +typedef struct DIPROPCAL { + DIPROPHEADER diph; + LONG lMin; + LONG lCenter; + LONG lMax; +} DIPROPCAL, *LPDIPROPCAL; +typedef const DIPROPCAL *LPCDIPROPCAL; + +typedef struct DIPROPCALPOV { + DIPROPHEADER diph; + LONG lMin[5]; + LONG lMax[5]; +} DIPROPCALPOV, *LPDIPROPCALPOV; +typedef const DIPROPCALPOV *LPCDIPROPCALPOV; + +typedef struct DIPROPGUIDANDPATH { + DIPROPHEADER diph; + GUID guidClass; + WCHAR wszPath[MAX_PATH]; +} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; +typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; + +typedef struct DIPROPSTRING { + DIPROPHEADER diph; + WCHAR wsz[MAX_PATH]; +} DIPROPSTRING, *LPDIPROPSTRING; +typedef const DIPROPSTRING *LPCDIPROPSTRING; + +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define MAXCPOINTSNUM 8 + +typedef struct _CPOINT +{ + LONG lP; // raw value + DWORD dwLog; // logical_value / max_logical_value * 10000 +} CPOINT, *PCPOINT; + +typedef struct DIPROPCPOINTS { + DIPROPHEADER diph; + DWORD dwCPointsNum; + CPOINT cp[MAXCPOINTSNUM]; +} DIPROPCPOINTS, *LPDIPROPCPOINTS; +typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + + +#ifdef __cplusplus +#define MAKEDIPROP(prop) (*(const GUID *)(prop)) +#else +#define MAKEDIPROP(prop) ((REFGUID)(prop)) +#endif + +#define DIPROP_BUFFERSIZE MAKEDIPROP(1) + +#define DIPROP_AXISMODE MAKEDIPROP(2) + +#define DIPROPAXISMODE_ABS 0 +#define DIPROPAXISMODE_REL 1 + +#define DIPROP_GRANULARITY MAKEDIPROP(3) + +#define DIPROP_RANGE MAKEDIPROP(4) + +#define DIPROP_DEADZONE MAKEDIPROP(5) + +#define DIPROP_SATURATION MAKEDIPROP(6) + +#define DIPROP_FFGAIN MAKEDIPROP(7) + +#define DIPROP_FFLOAD MAKEDIPROP(8) + +#define DIPROP_AUTOCENTER MAKEDIPROP(9) + +#define DIPROPAUTOCENTER_OFF 0 +#define DIPROPAUTOCENTER_ON 1 + +#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) + +#define DIPROPCALIBRATIONMODE_COOKED 0 +#define DIPROPCALIBRATIONMODE_RAW 1 + +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIPROP_CALIBRATION MAKEDIPROP(11) + +#define DIPROP_GUIDANDPATH MAKEDIPROP(12) + +#define DIPROP_INSTANCENAME MAKEDIPROP(13) + +#define DIPROP_PRODUCTNAME MAKEDIPROP(14) +#endif /* DIRECTINPUT_VERSION >= 0x050a */ + +#if(DIRECTINPUT_VERSION >= 0x05b2) +#define DIPROP_JOYSTICKID MAKEDIPROP(15) + +#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16) + +#endif /* DIRECTINPUT_VERSION >= 0x05b2 */ + +#if(DIRECTINPUT_VERSION >= 0x0700) +#define DIPROP_PHYSICALRANGE MAKEDIPROP(18) + +#define DIPROP_LOGICALRANGE MAKEDIPROP(19) +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIPROP_KEYNAME MAKEDIPROP(20) + +#define DIPROP_CPOINTS MAKEDIPROP(21) + +#define DIPROP_APPDATA MAKEDIPROP(22) + +#define DIPROP_SCANCODE MAKEDIPROP(23) + +#define DIPROP_VIDPID MAKEDIPROP(24) + +#define DIPROP_USERNAME MAKEDIPROP(25) + +#define DIPROP_TYPENAME MAKEDIPROP(26) +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + + +typedef struct DIDEVICEOBJECTDATA_DX3 { + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; +} DIDEVICEOBJECTDATA_DX3, *LPDIDEVICEOBJECTDATA_DX3; +typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX; + +typedef struct DIDEVICEOBJECTDATA { + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; +#if(DIRECTINPUT_VERSION >= 0x0800) + UINT_PTR uAppData; +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ +} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; +typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; + +#define DIGDD_PEEK 0x00000001 + +#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \ + ((int)((dwSequence1) - (dwSequence2)) cmp 0) +#define DISCL_EXCLUSIVE 0x00000001 +#define DISCL_NONEXCLUSIVE 0x00000002 +#define DISCL_FOREGROUND 0x00000004 +#define DISCL_BACKGROUND 0x00000008 +#define DISCL_NOWINKEY 0x00000010 + +#if(DIRECTINPUT_VERSION >= 0x0500) +/* These structures are defined for DirectX 3.0 compatibility */ + +typedef struct DIDEVICEINSTANCE_DX3A { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR tszInstanceName[MAX_PATH]; + CHAR tszProductName[MAX_PATH]; +} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; +typedef struct DIDEVICEINSTANCE_DX3W { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + WCHAR tszInstanceName[MAX_PATH]; + WCHAR tszProductName[MAX_PATH]; +} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; +#ifdef UNICODE +typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3; +typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3; +#else +typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3; +typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3; +#endif // UNICODE +typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; +typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; +typedef const DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +typedef struct DIDEVICEINSTANCEA { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR tszInstanceName[MAX_PATH]; + CHAR tszProductName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; +typedef struct DIDEVICEINSTANCEW { + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + WCHAR tszInstanceName[MAX_PATH]; + WCHAR tszProductName[MAX_PATH]; +#if(DIRECTINPUT_VERSION >= 0x0500) + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; +#ifdef UNICODE +typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; +typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE; +#else +typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; +typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE; +#endif // UNICODE + +typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; +typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; +#ifdef UNICODE +typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE; +typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE; +#else +typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE; +typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE; +#endif // UNICODE +typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE; + +#undef INTERFACE +#define INTERFACE IDirectInputDeviceW + +DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; +}; + +typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; + +#undef INTERFACE +#define INTERFACE IDirectInputDeviceA + +DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; +}; + +typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; + +#ifdef UNICODE +#define IID_IDirectInputDevice IID_IDirectInputDeviceW +#define IDirectInputDevice IDirectInputDeviceW +#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl +#else +#define IID_IDirectInputDevice IID_IDirectInputDeviceA +#define IDirectInputDevice IDirectInputDeviceA +#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl +#endif +typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#else +#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice_AddRef(p) (p)->AddRef() +#define IDirectInputDevice_Release(p) (p)->Release() +#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice_Acquire(p) (p)->Acquire() +#define IDirectInputDevice_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#endif + +#endif /* DIJ_RINGZERO */ + + +#if(DIRECTINPUT_VERSION >= 0x0500) + +#define DISFFC_RESET 0x00000001 +#define DISFFC_STOPALL 0x00000002 +#define DISFFC_PAUSE 0x00000004 +#define DISFFC_CONTINUE 0x00000008 +#define DISFFC_SETACTUATORSON 0x00000010 +#define DISFFC_SETACTUATORSOFF 0x00000020 + +#define DIGFFS_EMPTY 0x00000001 +#define DIGFFS_STOPPED 0x00000002 +#define DIGFFS_PAUSED 0x00000004 +#define DIGFFS_ACTUATORSON 0x00000010 +#define DIGFFS_ACTUATORSOFF 0x00000020 +#define DIGFFS_POWERON 0x00000040 +#define DIGFFS_POWEROFF 0x00000080 +#define DIGFFS_SAFETYSWITCHON 0x00000100 +#define DIGFFS_SAFETYSWITCHOFF 0x00000200 +#define DIGFFS_USERFFSWITCHON 0x00000400 +#define DIGFFS_USERFFSWITCHOFF 0x00000800 +#define DIGFFS_DEVICELOST 0x80000000 + +#ifndef DIJ_RINGZERO + +typedef struct DIEFFECTINFOA { + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + CHAR tszName[MAX_PATH]; +} DIEFFECTINFOA, *LPDIEFFECTINFOA; +typedef struct DIEFFECTINFOW { + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + WCHAR tszName[MAX_PATH]; +} DIEFFECTINFOW, *LPDIEFFECTINFOW; +#ifdef UNICODE +typedef DIEFFECTINFOW DIEFFECTINFO; +typedef LPDIEFFECTINFOW LPDIEFFECTINFO; +#else +typedef DIEFFECTINFOA DIEFFECTINFO; +typedef LPDIEFFECTINFOA LPDIEFFECTINFO; +#endif // UNICODE +typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; +typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; +typedef const DIEFFECTINFO *LPCDIEFFECTINFO; + +#define DISDD_CONTINUE 0x00000001 + +typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); +#ifdef UNICODE +#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW +#else +#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA +#endif // !UNICODE +typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); + +#undef INTERFACE +#define INTERFACE IDirectInputDevice2W + +DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceW methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; +}; + +typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; + +#undef INTERFACE +#define INTERFACE IDirectInputDevice2A + +DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDeviceA methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; +}; + +typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; + +#ifdef UNICODE +#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W +#define IDirectInputDevice2 IDirectInputDevice2W +#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl +#else +#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A +#define IDirectInputDevice2 IDirectInputDevice2A +#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl +#endif +typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#else +#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice2_AddRef(p) (p)->AddRef() +#define IDirectInputDevice2_Release(p) (p)->Release() +#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice2_Acquire(p) (p)->Acquire() +#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice2_Poll(p) (p)->Poll() +#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ + +#if(DIRECTINPUT_VERSION >= 0x0700) +#define DIFEF_DEFAULT 0x00000000 +#define DIFEF_INCLUDENONSTANDARD 0x00000001 +#define DIFEF_MODIFYIFNEEDED 0x00000010 + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputDevice7W + +DECLARE_INTERFACE_(IDirectInputDevice7W, IDirectInputDevice2W) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice2W methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + + /*** IDirectInputDevice7W methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; +}; + +typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; + +#undef INTERFACE +#define INTERFACE IDirectInputDevice7A + +DECLARE_INTERFACE_(IDirectInputDevice7A, IDirectInputDevice2A) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice2A methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + + /*** IDirectInputDevice7A methods ***/ + STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; +}; + +typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; + +#ifdef UNICODE +#define IID_IDirectInputDevice7 IID_IDirectInputDevice7W +#define IDirectInputDevice7 IDirectInputDevice7W +#define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl +#else +#define IID_IDirectInputDevice7 IID_IDirectInputDevice7A +#define IDirectInputDevice7 IDirectInputDevice7A +#define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl +#endif +typedef struct IDirectInputDevice7 *LPDIRECTINPUTDEVICE7; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) +#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) +#else +#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice7_AddRef(p) (p)->AddRef() +#define IDirectInputDevice7_Release(p) (p)->Release() +#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice7_Acquire(p) (p)->Acquire() +#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice7_Poll(p) (p)->Poll() +#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) +#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0700 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) + +#ifndef DIJ_RINGZERO + +#undef INTERFACE +#define INTERFACE IDirectInputDevice8W + +DECLARE_INTERFACE_(IDirectInputDevice8W, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice8W methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; + STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; + STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE; + STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE; +}; + +typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; + +#undef INTERFACE +#define INTERFACE IDirectInputDevice8A + +DECLARE_INTERFACE_(IDirectInputDevice8A, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputDevice8A methods ***/ + STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE; + STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE; + STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE; + STDMETHOD(Acquire)(THIS) PURE; + STDMETHOD(Unacquire)(THIS) PURE; + STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE; + STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE; + STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE; + STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE; + STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE; + STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE; + STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE; + STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE; + STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE; + STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; + STDMETHOD(Poll)(THIS) PURE; + STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE; + STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE; + STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE; + STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; + STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE; + STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE; +}; + +typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; + +#ifdef UNICODE +#define IID_IDirectInputDevice8 IID_IDirectInputDevice8W +#define IDirectInputDevice8 IDirectInputDevice8W +#define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl +#else +#define IID_IDirectInputDevice8 IID_IDirectInputDevice8A +#define IDirectInputDevice8 IDirectInputDevice8A +#define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl +#endif +typedef struct IDirectInputDevice8 *LPDIRECTINPUTDEVICE8; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) +#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) +#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) +#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) +#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) +#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) +#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) +#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) +#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) +#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) +#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) +#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) +#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) +#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) +#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) +#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) +#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) +#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) +#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) +#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) +#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) +#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) +#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) +#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) +#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) +#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) +#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) +#else +#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInputDevice8_AddRef(p) (p)->AddRef() +#define IDirectInputDevice8_Release(p) (p)->Release() +#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) +#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) +#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) +#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) +#define IDirectInputDevice8_Acquire(p) (p)->Acquire() +#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() +#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) +#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) +#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) +#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) +#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) +#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) +#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) +#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) +#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) +#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) +#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) +#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) +#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) +#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) +#define IDirectInputDevice8_Poll(p) (p)->Poll() +#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) +#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) +#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) +#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) +#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) +#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) +#endif + +#endif /* DIJ_RINGZERO */ + +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +/**************************************************************************** + * + * Mouse + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +typedef struct _DIMOUSESTATE { + LONG lX; + LONG lY; + LONG lZ; + BYTE rgbButtons[4]; +} DIMOUSESTATE, *LPDIMOUSESTATE; + +#if DIRECTINPUT_VERSION >= 0x0700 +typedef struct _DIMOUSESTATE2 { + LONG lX; + LONG lY; + LONG lZ; + BYTE rgbButtons[8]; +} DIMOUSESTATE2, *LPDIMOUSESTATE2; +#endif + + +#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) +#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) +#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) +#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) +#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) +#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) +#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) +#if (DIRECTINPUT_VERSION >= 0x0700) +#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) +#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) +#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) +#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) +#endif +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Keyboard + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +/**************************************************************************** + * + * DirectInput keyboard scan codes + * + ****************************************************************************/ +#define DIK_ESCAPE 0x01 +#define DIK_1 0x02 +#define DIK_2 0x03 +#define DIK_3 0x04 +#define DIK_4 0x05 +#define DIK_5 0x06 +#define DIK_6 0x07 +#define DIK_7 0x08 +#define DIK_8 0x09 +#define DIK_9 0x0A +#define DIK_0 0x0B +#define DIK_MINUS 0x0C /* - on main keyboard */ +#define DIK_EQUALS 0x0D +#define DIK_BACK 0x0E /* backspace */ +#define DIK_TAB 0x0F +#define DIK_Q 0x10 +#define DIK_W 0x11 +#define DIK_E 0x12 +#define DIK_R 0x13 +#define DIK_T 0x14 +#define DIK_Y 0x15 +#define DIK_U 0x16 +#define DIK_I 0x17 +#define DIK_O 0x18 +#define DIK_P 0x19 +#define DIK_LBRACKET 0x1A +#define DIK_RBRACKET 0x1B +#define DIK_RETURN 0x1C /* Enter on main keyboard */ +#define DIK_LCONTROL 0x1D +#define DIK_A 0x1E +#define DIK_S 0x1F +#define DIK_D 0x20 +#define DIK_F 0x21 +#define DIK_G 0x22 +#define DIK_H 0x23 +#define DIK_J 0x24 +#define DIK_K 0x25 +#define DIK_L 0x26 +#define DIK_SEMICOLON 0x27 +#define DIK_APOSTROPHE 0x28 +#define DIK_GRAVE 0x29 /* accent grave */ +#define DIK_LSHIFT 0x2A +#define DIK_BACKSLASH 0x2B +#define DIK_Z 0x2C +#define DIK_X 0x2D +#define DIK_C 0x2E +#define DIK_V 0x2F +#define DIK_B 0x30 +#define DIK_N 0x31 +#define DIK_M 0x32 +#define DIK_COMMA 0x33 +#define DIK_PERIOD 0x34 /* . on main keyboard */ +#define DIK_SLASH 0x35 /* / on main keyboard */ +#define DIK_RSHIFT 0x36 +#define DIK_MULTIPLY 0x37 /* * on numeric keypad */ +#define DIK_LMENU 0x38 /* left Alt */ +#define DIK_SPACE 0x39 +#define DIK_CAPITAL 0x3A +#define DIK_F1 0x3B +#define DIK_F2 0x3C +#define DIK_F3 0x3D +#define DIK_F4 0x3E +#define DIK_F5 0x3F +#define DIK_F6 0x40 +#define DIK_F7 0x41 +#define DIK_F8 0x42 +#define DIK_F9 0x43 +#define DIK_F10 0x44 +#define DIK_NUMLOCK 0x45 +#define DIK_SCROLL 0x46 /* Scroll Lock */ +#define DIK_NUMPAD7 0x47 +#define DIK_NUMPAD8 0x48 +#define DIK_NUMPAD9 0x49 +#define DIK_SUBTRACT 0x4A /* - on numeric keypad */ +#define DIK_NUMPAD4 0x4B +#define DIK_NUMPAD5 0x4C +#define DIK_NUMPAD6 0x4D +#define DIK_ADD 0x4E /* + on numeric keypad */ +#define DIK_NUMPAD1 0x4F +#define DIK_NUMPAD2 0x50 +#define DIK_NUMPAD3 0x51 +#define DIK_NUMPAD0 0x52 +#define DIK_DECIMAL 0x53 /* . on numeric keypad */ +#define DIK_OEM_102 0x56 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ +#define DIK_F11 0x57 +#define DIK_F12 0x58 +#define DIK_F13 0x64 /* (NEC PC98) */ +#define DIK_F14 0x65 /* (NEC PC98) */ +#define DIK_F15 0x66 /* (NEC PC98) */ +#define DIK_KANA 0x70 /* (Japanese keyboard) */ +#define DIK_ABNT_C1 0x73 /* /? on Brazilian keyboard */ +#define DIK_CONVERT 0x79 /* (Japanese keyboard) */ +#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ +#define DIK_YEN 0x7D /* (Japanese keyboard) */ +#define DIK_ABNT_C2 0x7E /* Numpad . on Brazilian keyboard */ +#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ +#define DIK_PREVTRACK 0x90 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ +#define DIK_AT 0x91 /* (NEC PC98) */ +#define DIK_COLON 0x92 /* (NEC PC98) */ +#define DIK_UNDERLINE 0x93 /* (NEC PC98) */ +#define DIK_KANJI 0x94 /* (Japanese keyboard) */ +#define DIK_STOP 0x95 /* (NEC PC98) */ +#define DIK_AX 0x96 /* (Japan AX) */ +#define DIK_UNLABELED 0x97 /* (J3100) */ +#define DIK_NEXTTRACK 0x99 /* Next Track */ +#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ +#define DIK_RCONTROL 0x9D +#define DIK_MUTE 0xA0 /* Mute */ +#define DIK_CALCULATOR 0xA1 /* Calculator */ +#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */ +#define DIK_MEDIASTOP 0xA4 /* Media Stop */ +#define DIK_VOLUMEDOWN 0xAE /* Volume - */ +#define DIK_VOLUMEUP 0xB0 /* Volume + */ +#define DIK_WEBHOME 0xB2 /* Web home */ +#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ +#define DIK_DIVIDE 0xB5 /* / on numeric keypad */ +#define DIK_SYSRQ 0xB7 +#define DIK_RMENU 0xB8 /* right Alt */ +#define DIK_PAUSE 0xC5 /* Pause */ +#define DIK_HOME 0xC7 /* Home on arrow keypad */ +#define DIK_UP 0xC8 /* UpArrow on arrow keypad */ +#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ +#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ +#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ +#define DIK_END 0xCF /* End on arrow keypad */ +#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ +#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ +#define DIK_INSERT 0xD2 /* Insert on arrow keypad */ +#define DIK_DELETE 0xD3 /* Delete on arrow keypad */ +#define DIK_LWIN 0xDB /* Left Windows key */ +#define DIK_RWIN 0xDC /* Right Windows key */ +#define DIK_APPS 0xDD /* AppMenu key */ +#define DIK_POWER 0xDE /* System Power */ +#define DIK_SLEEP 0xDF /* System Sleep */ +#define DIK_WAKE 0xE3 /* System Wake */ +#define DIK_WEBSEARCH 0xE5 /* Web Search */ +#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */ +#define DIK_WEBREFRESH 0xE7 /* Web Refresh */ +#define DIK_WEBSTOP 0xE8 /* Web Stop */ +#define DIK_WEBFORWARD 0xE9 /* Web Forward */ +#define DIK_WEBBACK 0xEA /* Web Back */ +#define DIK_MYCOMPUTER 0xEB /* My Computer */ +#define DIK_MAIL 0xEC /* Mail */ +#define DIK_MEDIASELECT 0xED /* Media Select */ + +/* + * Alternate names for keys, to facilitate transition from DOS. + */ +#define DIK_BACKSPACE DIK_BACK /* backspace */ +#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ +#define DIK_LALT DIK_LMENU /* left Alt */ +#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ +#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ +#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ +#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ +#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ +#define DIK_RALT DIK_RMENU /* right Alt */ +#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ +#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ +#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ +#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ +#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ +#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ + +/* + * Alternate names for keys originally not used on US keyboards. + */ +#define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */ + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * Joystick + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +typedef struct DIJOYSTATE { + LONG lX; /* x-axis position */ + LONG lY; /* y-axis position */ + LONG lZ; /* z-axis position */ + LONG lRx; /* x-axis rotation */ + LONG lRy; /* y-axis rotation */ + LONG lRz; /* z-axis rotation */ + LONG rglSlider[2]; /* extra axes positions */ + DWORD rgdwPOV[4]; /* POV directions */ + BYTE rgbButtons[32]; /* 32 buttons */ +} DIJOYSTATE, *LPDIJOYSTATE; + +typedef struct DIJOYSTATE2 { + LONG lX; /* x-axis position */ + LONG lY; /* y-axis position */ + LONG lZ; /* z-axis position */ + LONG lRx; /* x-axis rotation */ + LONG lRy; /* y-axis rotation */ + LONG lRz; /* z-axis rotation */ + LONG rglSlider[2]; /* extra axes positions */ + DWORD rgdwPOV[4]; /* POV directions */ + BYTE rgbButtons[128]; /* 128 buttons */ + LONG lVX; /* x-axis velocity */ + LONG lVY; /* y-axis velocity */ + LONG lVZ; /* z-axis velocity */ + LONG lVRx; /* x-axis angular velocity */ + LONG lVRy; /* y-axis angular velocity */ + LONG lVRz; /* z-axis angular velocity */ + LONG rglVSlider[2]; /* extra axes velocities */ + LONG lAX; /* x-axis acceleration */ + LONG lAY; /* y-axis acceleration */ + LONG lAZ; /* z-axis acceleration */ + LONG lARx; /* x-axis angular acceleration */ + LONG lARy; /* y-axis angular acceleration */ + LONG lARz; /* z-axis angular acceleration */ + LONG rglASlider[2]; /* extra axes accelerations */ + LONG lFX; /* x-axis force */ + LONG lFY; /* y-axis force */ + LONG lFZ; /* z-axis force */ + LONG lFRx; /* x-axis torque */ + LONG lFRy; /* y-axis torque */ + LONG lFRz; /* z-axis torque */ + LONG rglFSlider[2]; /* extra axes forces */ +} DIJOYSTATE2, *LPDIJOYSTATE2; + +#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) +#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) +#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) +#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) +#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) +#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) +#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ + (n) * sizeof(LONG)) +#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ + (n) * sizeof(DWORD)) +#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) +#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) +#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) +#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) +#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) +#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) +#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) +#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) +#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) +#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) +#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) +#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) +#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) +#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) +#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) +#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) +#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) +#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) +#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) +#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) +#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) +#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) +#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) +#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) +#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) +#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) +#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) +#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) +#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) +#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) +#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) +#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) +#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) + + +#endif /* DIJ_RINGZERO */ + +/**************************************************************************** + * + * IDirectInput + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +#define DIENUM_STOP 0 +#define DIENUM_CONTINUE 1 + +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID); +#ifdef UNICODE +#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW +#else +#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA +#endif // !UNICODE +typedef BOOL (FAR PASCAL * LPDICONFIGUREDEVICESCALLBACK)(IUnknown FAR *, LPVOID); + +#define DIEDFL_ALLDEVICES 0x00000000 +#define DIEDFL_ATTACHEDONLY 0x00000001 +#if(DIRECTINPUT_VERSION >= 0x0500) +#define DIEDFL_FORCEFEEDBACK 0x00000100 +#endif /* DIRECTINPUT_VERSION >= 0x0500 */ +#if(DIRECTINPUT_VERSION >= 0x050a) +#define DIEDFL_INCLUDEALIASES 0x00010000 +#define DIEDFL_INCLUDEPHANTOMS 0x00020000 +#endif /* DIRECTINPUT_VERSION >= 0x050a */ +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIEDFL_INCLUDEHIDDEN 0x00040000 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + + +#if(DIRECTINPUT_VERSION >= 0x0800) +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID); +typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID); +#ifdef UNICODE +#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW +#else +#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA +#endif // !UNICODE +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIEDBS_MAPPEDPRI1 0x00000001 +#define DIEDBS_MAPPEDPRI2 0x00000002 +#define DIEDBS_RECENTDEVICE 0x00000010 +#define DIEDBS_NEWDEVICE 0x00000020 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#if(DIRECTINPUT_VERSION >= 0x0800) +#define DIEDBSFL_ATTACHEDONLY 0x00000000 +#define DIEDBSFL_THISUSER 0x00000010 +#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK +#define DIEDBSFL_AVAILABLEDEVICES 0x00001000 +#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 +#define DIEDBSFL_NONGAMINGDEVICES 0x00004000 +#define DIEDBSFL_VALID 0x00007110 +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#undef INTERFACE +#define INTERFACE IDirectInputW + +DECLARE_INTERFACE_(IDirectInputW, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; +}; + +typedef struct IDirectInputW *LPDIRECTINPUTW; + +#undef INTERFACE +#define INTERFACE IDirectInputA + +DECLARE_INTERFACE_(IDirectInputA, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; +}; + +typedef struct IDirectInputA *LPDIRECTINPUTA; + +#ifdef UNICODE +#define IID_IDirectInput IID_IDirectInputW +#define IDirectInput IDirectInputW +#define IDirectInputVtbl IDirectInputWVtbl +#else +#define IID_IDirectInput IID_IDirectInputA +#define IDirectInput IDirectInputA +#define IDirectInputVtbl IDirectInputAVtbl +#endif +typedef struct IDirectInput *LPDIRECTINPUT; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#else +#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput_AddRef(p) (p)->AddRef() +#define IDirectInput_Release(p) (p)->Release() +#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) +#endif + +#undef INTERFACE +#define INTERFACE IDirectInput2W + +DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputW methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + + /*** IDirectInput2W methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; +}; + +typedef struct IDirectInput2W *LPDIRECTINPUT2W; + +#undef INTERFACE +#define INTERFACE IDirectInput2A + +DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInputA methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + + /*** IDirectInput2A methods ***/ + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; +}; + +typedef struct IDirectInput2A *LPDIRECTINPUT2A; + +#ifdef UNICODE +#define IID_IDirectInput2 IID_IDirectInput2W +#define IDirectInput2 IDirectInput2W +#define IDirectInput2Vtbl IDirectInput2WVtbl +#else +#define IID_IDirectInput2 IID_IDirectInput2A +#define IDirectInput2 IDirectInput2A +#define IDirectInput2Vtbl IDirectInput2AVtbl +#endif +typedef struct IDirectInput2 *LPDIRECTINPUT2; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#else +#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput2_AddRef(p) (p)->AddRef() +#define IDirectInput2_Release(p) (p)->Release() +#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#endif + + +#undef INTERFACE +#define INTERFACE IDirectInput7W + +DECLARE_INTERFACE_(IDirectInput7W, IDirectInput2W) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput2W methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; + + /*** IDirectInput7W methods ***/ + STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; +}; + +typedef struct IDirectInput7W *LPDIRECTINPUT7W; + +#undef INTERFACE +#define INTERFACE IDirectInput7A + +DECLARE_INTERFACE_(IDirectInput7A, IDirectInput2A) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput2A methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; + + /*** IDirectInput7A methods ***/ + STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE; +}; + +typedef struct IDirectInput7A *LPDIRECTINPUT7A; + +#ifdef UNICODE +#define IID_IDirectInput7 IID_IDirectInput7W +#define IDirectInput7 IDirectInput7W +#define IDirectInput7Vtbl IDirectInput7WVtbl +#else +#define IID_IDirectInput7 IID_IDirectInput7A +#define IDirectInput7 IDirectInput7A +#define IDirectInput7Vtbl IDirectInput7AVtbl +#endif +typedef struct IDirectInput7 *LPDIRECTINPUT7; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) +#else +#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput7_AddRef(p) (p)->AddRef() +#define IDirectInput7_Release(p) (p)->Release() +#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) +#endif + +#if(DIRECTINPUT_VERSION >= 0x0800) +#undef INTERFACE +#define INTERFACE IDirectInput8W + +DECLARE_INTERFACE_(IDirectInput8W, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput8W methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8W *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE; + STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR,LPDIACTIONFORMATW,LPDIENUMDEVICESBYSEMANTICSCBW,LPVOID,DWORD) PURE; + STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSW,DWORD,LPVOID) PURE; +}; + +typedef struct IDirectInput8W *LPDIRECTINPUT8W; + +#undef INTERFACE +#define INTERFACE IDirectInput8A + +DECLARE_INTERFACE_(IDirectInput8A, IUnknown) +{ + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + /*** IDirectInput8A methods ***/ + STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8A *,LPUNKNOWN) PURE; + STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE; + STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE; + STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE; + STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE; + STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE; + STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR,LPDIACTIONFORMATA,LPDIENUMDEVICESBYSEMANTICSCBA,LPVOID,DWORD) PURE; + STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSA,DWORD,LPVOID) PURE; +}; + +typedef struct IDirectInput8A *LPDIRECTINPUT8A; + +#ifdef UNICODE +#define IID_IDirectInput8 IID_IDirectInput8W +#define IDirectInput8 IDirectInput8W +#define IDirectInput8Vtbl IDirectInput8WVtbl +#else +#define IID_IDirectInput8 IID_IDirectInput8A +#define IDirectInput8 IDirectInput8A +#define IDirectInput8Vtbl IDirectInput8AVtbl +#endif +typedef struct IDirectInput8 *LPDIRECTINPUT8; + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) +#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) +#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) +#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) +#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) +#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) +#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) +#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) +#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) +#else +#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#define IDirectInput8_AddRef(p) (p)->AddRef() +#define IDirectInput8_Release(p) (p)->Release() +#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) +#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) +#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) +#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) +#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) +#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) +#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) +#endif +#endif /* DIRECTINPUT_VERSION >= 0x0800 */ + +#if DIRECTINPUT_VERSION > 0x0700 + +extern HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); + +#else +extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); +extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter); +#ifdef UNICODE +#define DirectInputCreate DirectInputCreateW +#else +#define DirectInputCreate DirectInputCreateA +#endif // !UNICODE + +extern HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter); + +#endif /* DIRECTINPUT_VERSION > 0x700 */ + +#endif /* DIJ_RINGZERO */ + + +/**************************************************************************** + * + * Return Codes + * + ****************************************************************************/ + +/* + * The operation completed successfully. + */ +#define DI_OK S_OK + +/* + * The device exists but is not currently attached. + */ +#define DI_NOTATTACHED S_FALSE + +/* + * The device buffer overflowed. Some input was lost. + */ +#define DI_BUFFEROVERFLOW S_FALSE + +/* + * The change in device properties had no effect. + */ +#define DI_PROPNOEFFECT S_FALSE + +/* + * The operation had no effect. + */ +#define DI_NOEFFECT S_FALSE + +/* + * The device is a polled device. As a result, device buffering + * will not collect any data and event notifications will not be + * signalled until GetDeviceState is called. + */ +#define DI_POLLEDDEVICE ((HRESULT)0x00000002L) + +/* + * The parameters of the effect were successfully updated by + * IDirectInputEffect::SetParameters, but the effect was not + * downloaded because the device is not exclusively acquired + * or because the DIEP_NODOWNLOAD flag was passed. + */ +#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L) + +/* + * The parameters of the effect were successfully updated by + * IDirectInputEffect::SetParameters, but in order to change + * the parameters, the effect needed to be restarted. + */ +#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L) + +/* + * The parameters of the effect were successfully updated by + * IDirectInputEffect::SetParameters, but some of them were + * beyond the capabilities of the device and were truncated. + */ +#define DI_TRUNCATED ((HRESULT)0x00000008L) + +/* + * The settings have been successfully applied but could not be + * persisted. + */ +#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL) + +/* + * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED. + */ +#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL) + +/* + * A SUCCESS code indicating that settings cannot be modified. + */ +#define DI_WRITEPROTECT ((HRESULT)0x00000013L) + +/* + * The application requires a newer version of DirectInput. + */ +#define DIERR_OLDDIRECTINPUTVERSION \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) + +/* + * The application was written for an unsupported prerelease version + * of DirectInput. + */ +#define DIERR_BETADIRECTINPUTVERSION \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) + +/* + * The object could not be created due to an incompatible driver version + * or mismatched or incomplete driver components. + */ +#define DIERR_BADDRIVERVER \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) + +/* + * The device or device instance or effect is not registered with DirectInput. + */ +#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG + +/* + * The requested object does not exist. + */ +#define DIERR_NOTFOUND \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) + +/* + * The requested object does not exist. + */ +#define DIERR_OBJECTNOTFOUND \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) + +/* + * An invalid parameter was passed to the returning function, + * or the object was not in a state that admitted the function + * to be called. + */ +#define DIERR_INVALIDPARAM E_INVALIDARG + +/* + * The specified interface is not supported by the object + */ +#define DIERR_NOINTERFACE E_NOINTERFACE + +/* + * An undetermined error occured inside the DInput subsystem + */ +#define DIERR_GENERIC E_FAIL + +/* + * The DInput subsystem couldn't allocate sufficient memory to complete the + * caller's request. + */ +#define DIERR_OUTOFMEMORY E_OUTOFMEMORY + +/* + * The function called is not supported at this time + */ +#define DIERR_UNSUPPORTED E_NOTIMPL + +/* + * This object has not been initialized + */ +#define DIERR_NOTINITIALIZED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) + +/* + * This object is already initialized + */ +#define DIERR_ALREADYINITIALIZED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) + +/* + * This object does not support aggregation + */ +#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION + +/* + * Another app has a higher priority level, preventing this call from + * succeeding. + */ +#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED + +/* + * Access to the device has been lost. It must be re-acquired. + */ +#define DIERR_INPUTLOST \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) + +/* + * The operation cannot be performed while the device is acquired. + */ +#define DIERR_ACQUIRED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) + +/* + * The operation cannot be performed unless the device is acquired. + */ +#define DIERR_NOTACQUIRED \ + MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) + +/* + * The specified property cannot be changed. + */ +#define DIERR_READONLY E_ACCESSDENIED + +/* + * The device already has an event notification associated with it. + */ +#define DIERR_HANDLEEXISTS E_ACCESSDENIED + +/* + * Data is not yet available. + */ +#ifndef E_PENDING +#define E_PENDING 0x8000000AL +#endif + +/* + * Unable to IDirectInputJoyConfig_Acquire because the user + * does not have sufficient privileges to change the joystick + * configuration. + */ +#define DIERR_INSUFFICIENTPRIVS 0x80040200L + +/* + * The device is full. + */ +#define DIERR_DEVICEFULL 0x80040201L + +/* + * Not all the requested information fit into the buffer. + */ +#define DIERR_MOREDATA 0x80040202L + +/* + * The effect is not downloaded. + */ +#define DIERR_NOTDOWNLOADED 0x80040203L + +/* + * The device cannot be reinitialized because there are still effects + * attached to it. + */ +#define DIERR_HASEFFECTS 0x80040204L + +/* + * The operation cannot be performed unless the device is acquired + * in DISCL_EXCLUSIVE mode. + */ +#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L + +/* + * The effect could not be downloaded because essential information + * is missing. For example, no axes have been associated with the + * effect, or no type-specific information has been created. + */ +#define DIERR_INCOMPLETEEFFECT 0x80040206L + +/* + * Attempted to read buffered device data from a device that is + * not buffered. + */ +#define DIERR_NOTBUFFERED 0x80040207L + +/* + * An attempt was made to modify parameters of an effect while it is + * playing. Not all hardware devices support altering the parameters + * of an effect while it is playing. + */ +#define DIERR_EFFECTPLAYING 0x80040208L + +/* + * The operation could not be completed because the device is not + * plugged in. + */ +#define DIERR_UNPLUGGED 0x80040209L + +/* + * SendDeviceData failed because more information was requested + * to be sent than can be sent to the device. Some devices have + * restrictions on how much data can be sent to them. (For example, + * there might be a limit on the number of buttons that can be + * pressed at once.) + */ +#define DIERR_REPORTFULL 0x8004020AL + + +/* + * A mapper file function failed because reading or writing the user or IHV + * settings file failed. + */ +#define DIERR_MAPFILEFAIL 0x8004020BL + + +/*--- DINPUT Mapper Definitions: New for Dx8 ---*/ + + +/*--- Keyboard + Physical Keyboard Device ---*/ + +#define DIKEYBOARD_ESCAPE 0x81000401 +#define DIKEYBOARD_1 0x81000402 +#define DIKEYBOARD_2 0x81000403 +#define DIKEYBOARD_3 0x81000404 +#define DIKEYBOARD_4 0x81000405 +#define DIKEYBOARD_5 0x81000406 +#define DIKEYBOARD_6 0x81000407 +#define DIKEYBOARD_7 0x81000408 +#define DIKEYBOARD_8 0x81000409 +#define DIKEYBOARD_9 0x8100040A +#define DIKEYBOARD_0 0x8100040B +#define DIKEYBOARD_MINUS 0x8100040C /* - on main keyboard */ +#define DIKEYBOARD_EQUALS 0x8100040D +#define DIKEYBOARD_BACK 0x8100040E /* backspace */ +#define DIKEYBOARD_TAB 0x8100040F +#define DIKEYBOARD_Q 0x81000410 +#define DIKEYBOARD_W 0x81000411 +#define DIKEYBOARD_E 0x81000412 +#define DIKEYBOARD_R 0x81000413 +#define DIKEYBOARD_T 0x81000414 +#define DIKEYBOARD_Y 0x81000415 +#define DIKEYBOARD_U 0x81000416 +#define DIKEYBOARD_I 0x81000417 +#define DIKEYBOARD_O 0x81000418 +#define DIKEYBOARD_P 0x81000419 +#define DIKEYBOARD_LBRACKET 0x8100041A +#define DIKEYBOARD_RBRACKET 0x8100041B +#define DIKEYBOARD_RETURN 0x8100041C /* Enter on main keyboard */ +#define DIKEYBOARD_LCONTROL 0x8100041D +#define DIKEYBOARD_A 0x8100041E +#define DIKEYBOARD_S 0x8100041F +#define DIKEYBOARD_D 0x81000420 +#define DIKEYBOARD_F 0x81000421 +#define DIKEYBOARD_G 0x81000422 +#define DIKEYBOARD_H 0x81000423 +#define DIKEYBOARD_J 0x81000424 +#define DIKEYBOARD_K 0x81000425 +#define DIKEYBOARD_L 0x81000426 +#define DIKEYBOARD_SEMICOLON 0x81000427 +#define DIKEYBOARD_APOSTROPHE 0x81000428 +#define DIKEYBOARD_GRAVE 0x81000429 /* accent grave */ +#define DIKEYBOARD_LSHIFT 0x8100042A +#define DIKEYBOARD_BACKSLASH 0x8100042B +#define DIKEYBOARD_Z 0x8100042C +#define DIKEYBOARD_X 0x8100042D +#define DIKEYBOARD_C 0x8100042E +#define DIKEYBOARD_V 0x8100042F +#define DIKEYBOARD_B 0x81000430 +#define DIKEYBOARD_N 0x81000431 +#define DIKEYBOARD_M 0x81000432 +#define DIKEYBOARD_COMMA 0x81000433 +#define DIKEYBOARD_PERIOD 0x81000434 /* . on main keyboard */ +#define DIKEYBOARD_SLASH 0x81000435 /* / on main keyboard */ +#define DIKEYBOARD_RSHIFT 0x81000436 +#define DIKEYBOARD_MULTIPLY 0x81000437 /* * on numeric keypad */ +#define DIKEYBOARD_LMENU 0x81000438 /* left Alt */ +#define DIKEYBOARD_SPACE 0x81000439 +#define DIKEYBOARD_CAPITAL 0x8100043A +#define DIKEYBOARD_F1 0x8100043B +#define DIKEYBOARD_F2 0x8100043C +#define DIKEYBOARD_F3 0x8100043D +#define DIKEYBOARD_F4 0x8100043E +#define DIKEYBOARD_F5 0x8100043F +#define DIKEYBOARD_F6 0x81000440 +#define DIKEYBOARD_F7 0x81000441 +#define DIKEYBOARD_F8 0x81000442 +#define DIKEYBOARD_F9 0x81000443 +#define DIKEYBOARD_F10 0x81000444 +#define DIKEYBOARD_NUMLOCK 0x81000445 +#define DIKEYBOARD_SCROLL 0x81000446 /* Scroll Lock */ +#define DIKEYBOARD_NUMPAD7 0x81000447 +#define DIKEYBOARD_NUMPAD8 0x81000448 +#define DIKEYBOARD_NUMPAD9 0x81000449 +#define DIKEYBOARD_SUBTRACT 0x8100044A /* - on numeric keypad */ +#define DIKEYBOARD_NUMPAD4 0x8100044B +#define DIKEYBOARD_NUMPAD5 0x8100044C +#define DIKEYBOARD_NUMPAD6 0x8100044D +#define DIKEYBOARD_ADD 0x8100044E /* + on numeric keypad */ +#define DIKEYBOARD_NUMPAD1 0x8100044F +#define DIKEYBOARD_NUMPAD2 0x81000450 +#define DIKEYBOARD_NUMPAD3 0x81000451 +#define DIKEYBOARD_NUMPAD0 0x81000452 +#define DIKEYBOARD_DECIMAL 0x81000453 /* . on numeric keypad */ +#define DIKEYBOARD_OEM_102 0x81000456 /* <> or \| on RT 102-key keyboard (Non-U.S.) */ +#define DIKEYBOARD_F11 0x81000457 +#define DIKEYBOARD_F12 0x81000458 +#define DIKEYBOARD_F13 0x81000464 /* (NEC PC98) */ +#define DIKEYBOARD_F14 0x81000465 /* (NEC PC98) */ +#define DIKEYBOARD_F15 0x81000466 /* (NEC PC98) */ +#define DIKEYBOARD_KANA 0x81000470 /* (Japanese keyboard) */ +#define DIKEYBOARD_ABNT_C1 0x81000473 /* /? on Brazilian keyboard */ +#define DIKEYBOARD_CONVERT 0x81000479 /* (Japanese keyboard) */ +#define DIKEYBOARD_NOCONVERT 0x8100047B /* (Japanese keyboard) */ +#define DIKEYBOARD_YEN 0x8100047D /* (Japanese keyboard) */ +#define DIKEYBOARD_ABNT_C2 0x8100047E /* Numpad . on Brazilian keyboard */ +#define DIKEYBOARD_NUMPADEQUALS 0x8100048D /* = on numeric keypad (NEC PC98) */ +#define DIKEYBOARD_PREVTRACK 0x81000490 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */ +#define DIKEYBOARD_AT 0x81000491 /* (NEC PC98) */ +#define DIKEYBOARD_COLON 0x81000492 /* (NEC PC98) */ +#define DIKEYBOARD_UNDERLINE 0x81000493 /* (NEC PC98) */ +#define DIKEYBOARD_KANJI 0x81000494 /* (Japanese keyboard) */ +#define DIKEYBOARD_STOP 0x81000495 /* (NEC PC98) */ +#define DIKEYBOARD_AX 0x81000496 /* (Japan AX) */ +#define DIKEYBOARD_UNLABELED 0x81000497 /* (J3100) */ +#define DIKEYBOARD_NEXTTRACK 0x81000499 /* Next Track */ +#define DIKEYBOARD_NUMPADENTER 0x8100049C /* Enter on numeric keypad */ +#define DIKEYBOARD_RCONTROL 0x8100049D +#define DIKEYBOARD_MUTE 0x810004A0 /* Mute */ +#define DIKEYBOARD_CALCULATOR 0x810004A1 /* Calculator */ +#define DIKEYBOARD_PLAYPAUSE 0x810004A2 /* Play / Pause */ +#define DIKEYBOARD_MEDIASTOP 0x810004A4 /* Media Stop */ +#define DIKEYBOARD_VOLUMEDOWN 0x810004AE /* Volume - */ +#define DIKEYBOARD_VOLUMEUP 0x810004B0 /* Volume + */ +#define DIKEYBOARD_WEBHOME 0x810004B2 /* Web home */ +#define DIKEYBOARD_NUMPADCOMMA 0x810004B3 /* , on numeric keypad (NEC PC98) */ +#define DIKEYBOARD_DIVIDE 0x810004B5 /* / on numeric keypad */ +#define DIKEYBOARD_SYSRQ 0x810004B7 +#define DIKEYBOARD_RMENU 0x810004B8 /* right Alt */ +#define DIKEYBOARD_PAUSE 0x810004C5 /* Pause */ +#define DIKEYBOARD_HOME 0x810004C7 /* Home on arrow keypad */ +#define DIKEYBOARD_UP 0x810004C8 /* UpArrow on arrow keypad */ +#define DIKEYBOARD_PRIOR 0x810004C9 /* PgUp on arrow keypad */ +#define DIKEYBOARD_LEFT 0x810004CB /* LeftArrow on arrow keypad */ +#define DIKEYBOARD_RIGHT 0x810004CD /* RightArrow on arrow keypad */ +#define DIKEYBOARD_END 0x810004CF /* End on arrow keypad */ +#define DIKEYBOARD_DOWN 0x810004D0 /* DownArrow on arrow keypad */ +#define DIKEYBOARD_NEXT 0x810004D1 /* PgDn on arrow keypad */ +#define DIKEYBOARD_INSERT 0x810004D2 /* Insert on arrow keypad */ +#define DIKEYBOARD_DELETE 0x810004D3 /* Delete on arrow keypad */ +#define DIKEYBOARD_LWIN 0x810004DB /* Left Windows key */ +#define DIKEYBOARD_RWIN 0x810004DC /* Right Windows key */ +#define DIKEYBOARD_APPS 0x810004DD /* AppMenu key */ +#define DIKEYBOARD_POWER 0x810004DE /* System Power */ +#define DIKEYBOARD_SLEEP 0x810004DF /* System Sleep */ +#define DIKEYBOARD_WAKE 0x810004E3 /* System Wake */ +#define DIKEYBOARD_WEBSEARCH 0x810004E5 /* Web Search */ +#define DIKEYBOARD_WEBFAVORITES 0x810004E6 /* Web Favorites */ +#define DIKEYBOARD_WEBREFRESH 0x810004E7 /* Web Refresh */ +#define DIKEYBOARD_WEBSTOP 0x810004E8 /* Web Stop */ +#define DIKEYBOARD_WEBFORWARD 0x810004E9 /* Web Forward */ +#define DIKEYBOARD_WEBBACK 0x810004EA /* Web Back */ +#define DIKEYBOARD_MYCOMPUTER 0x810004EB /* My Computer */ +#define DIKEYBOARD_MAIL 0x810004EC /* Mail */ +#define DIKEYBOARD_MEDIASELECT 0x810004ED /* Media Select */ + + +/*--- MOUSE + Physical Mouse Device ---*/ + +#define DIMOUSE_XAXISAB (0x82000200 |DIMOFS_X ) /* X Axis-absolute: Some mice natively report absolute coordinates */ +#define DIMOUSE_YAXISAB (0x82000200 |DIMOFS_Y ) /* Y Axis-absolute: Some mice natively report absolute coordinates */ +#define DIMOUSE_XAXIS (0x82000300 |DIMOFS_X ) /* X Axis */ +#define DIMOUSE_YAXIS (0x82000300 |DIMOFS_Y ) /* Y Axis */ +#define DIMOUSE_WHEEL (0x82000300 |DIMOFS_Z ) /* Z Axis */ +#define DIMOUSE_BUTTON0 (0x82000400 |DIMOFS_BUTTON0) /* Button 0 */ +#define DIMOUSE_BUTTON1 (0x82000400 |DIMOFS_BUTTON1) /* Button 1 */ +#define DIMOUSE_BUTTON2 (0x82000400 |DIMOFS_BUTTON2) /* Button 2 */ +#define DIMOUSE_BUTTON3 (0x82000400 |DIMOFS_BUTTON3) /* Button 3 */ +#define DIMOUSE_BUTTON4 (0x82000400 |DIMOFS_BUTTON4) /* Button 4 */ +#define DIMOUSE_BUTTON5 (0x82000400 |DIMOFS_BUTTON5) /* Button 5 */ +#define DIMOUSE_BUTTON6 (0x82000400 |DIMOFS_BUTTON6) /* Button 6 */ +#define DIMOUSE_BUTTON7 (0x82000400 |DIMOFS_BUTTON7) /* Button 7 */ + + +/*--- VOICE + Physical Dplay Voice Device ---*/ + +#define DIVOICE_CHANNEL1 0x83000401 +#define DIVOICE_CHANNEL2 0x83000402 +#define DIVOICE_CHANNEL3 0x83000403 +#define DIVOICE_CHANNEL4 0x83000404 +#define DIVOICE_CHANNEL5 0x83000405 +#define DIVOICE_CHANNEL6 0x83000406 +#define DIVOICE_CHANNEL7 0x83000407 +#define DIVOICE_CHANNEL8 0x83000408 +#define DIVOICE_TEAM 0x83000409 +#define DIVOICE_ALL 0x8300040A +#define DIVOICE_RECORDMUTE 0x8300040B +#define DIVOICE_PLAYBACKMUTE 0x8300040C +#define DIVOICE_TRANSMIT 0x8300040D + +#define DIVOICE_VOICECOMMAND 0x83000410 + + +/*--- Driving Simulator - Racing + Vehicle control is primary objective ---*/ +#define DIVIRTUAL_DRIVING_RACE 0x01000000 +#define DIAXIS_DRIVINGR_STEER 0x01008A01 /* Steering */ +#define DIAXIS_DRIVINGR_ACCELERATE 0x01039202 /* Accelerate */ +#define DIAXIS_DRIVINGR_BRAKE 0x01041203 /* Brake-Axis */ +#define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01 /* Shift to next higher gear */ +#define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02 /* Shift to next lower gear */ +#define DIBUTTON_DRIVINGR_VIEW 0x01001C03 /* Cycle through view options */ +#define DIBUTTON_DRIVINGR_MENU 0x010004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04 /* Some devices combine accelerate and brake in a single axis */ +#define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601 /* Look around */ +#define DIBUTTON_DRIVINGR_BRAKE 0x01004C04 /* Brake-button */ +#define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405 /* Select next dashboard option */ +#define DIBUTTON_DRIVINGR_AIDS 0x01004406 /* Driver correction aids */ +#define DIBUTTON_DRIVINGR_MAP 0x01004407 /* Display Driving Map */ +#define DIBUTTON_DRIVINGR_BOOST 0x01004408 /* Turbo Boost */ +#define DIBUTTON_DRIVINGR_PIT 0x01004409 /* Pit stop notification */ +#define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0 /* Fallback Accelerate button */ +#define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4 /* Fallback Steer Left button */ +#define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCEC /* Fallback Steer Right button */ +#define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4EC /* Fallback Glance Right button */ +#define DIBUTTON_DRIVINGR_DEVICE 0x010044FE /* Show input device and controls */ +#define DIBUTTON_DRIVINGR_PAUSE 0x010044FC /* Start / Pause / Restart game */ + +/*--- Driving Simulator - Combat + Combat from within a vehicle is primary objective ---*/ +#define DIVIRTUAL_DRIVING_COMBAT 0x02000000 +#define DIAXIS_DRIVINGC_STEER 0x02008A01 /* Steering */ +#define DIAXIS_DRIVINGC_ACCELERATE 0x02039202 /* Accelerate */ +#define DIAXIS_DRIVINGC_BRAKE 0x02041203 /* Brake-axis */ +#define DIBUTTON_DRIVINGC_FIRE 0x02000C01 /* Fire */ +#define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02 /* Select next weapon */ +#define DIBUTTON_DRIVINGC_TARGET 0x02000C03 /* Select next available target */ +#define DIBUTTON_DRIVINGC_MENU 0x020004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04 /* Some devices combine accelerate and brake in a single axis */ +#define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601 /* Look around */ +#define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04 /* Shift to next higher gear */ +#define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05 /* Shift to next lower gear */ +#define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406 /* Select next dashboard option */ +#define DIBUTTON_DRIVINGC_AIDS 0x02004407 /* Driver correction aids */ +#define DIBUTTON_DRIVINGC_BRAKE 0x02004C08 /* Brake-button */ +#define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09 /* Alternative fire button */ +#define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0 /* Fallback Accelerate button */ +#define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4 /* Fallback Steer Left button */ +#define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCEC /* Fallback Steer Right button */ +#define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4EC /* Fallback Glance Right button */ +#define DIBUTTON_DRIVINGC_DEVICE 0x020044FE /* Show input device and controls */ +#define DIBUTTON_DRIVINGC_PAUSE 0x020044FC /* Start / Pause / Restart game */ + +/*--- Driving Simulator - Tank + Combat from withing a tank is primary objective ---*/ +#define DIVIRTUAL_DRIVING_TANK 0x03000000 +#define DIAXIS_DRIVINGT_STEER 0x03008A01 /* Turn tank left / right */ +#define DIAXIS_DRIVINGT_BARREL 0x03010202 /* Raise / lower barrel */ +#define DIAXIS_DRIVINGT_ACCELERATE 0x03039203 /* Accelerate */ +#define DIAXIS_DRIVINGT_ROTATE 0x03020204 /* Turn barrel left / right */ +#define DIBUTTON_DRIVINGT_FIRE 0x03000C01 /* Fire */ +#define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02 /* Select next weapon */ +#define DIBUTTON_DRIVINGT_TARGET 0x03000C03 /* Selects next available target */ +#define DIBUTTON_DRIVINGT_MENU 0x030004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601 /* Look around */ +#define DIAXIS_DRIVINGT_BRAKE 0x03045205 /* Brake-axis */ +#define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06 /* Some devices combine accelerate and brake in a single axis */ +#define DIBUTTON_DRIVINGT_VIEW 0x03005C04 /* Cycle through view options */ +#define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05 /* Select next dashboard option */ +#define DIBUTTON_DRIVINGT_BRAKE 0x03004C06 /* Brake-button */ +#define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07 /* Alternative fire button */ +#define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0 /* Fallback Accelerate button */ +#define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4 /* Fallback Steer Left button */ +#define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCEC /* Fallback Steer Right button */ +#define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0 /* Fallback Barrel up button */ +#define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8 /* Fallback Barrel down button */ +#define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4 /* Fallback Rotate left button */ +#define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244EC /* Fallback Rotate right button */ +#define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4EC /* Fallback Glance Right button */ +#define DIBUTTON_DRIVINGT_DEVICE 0x030044FE /* Show input device and controls */ +#define DIBUTTON_DRIVINGT_PAUSE 0x030044FC /* Start / Pause / Restart game */ + +/*--- Flight Simulator - Civilian + Plane control is the primary objective ---*/ +#define DIVIRTUAL_FLYING_CIVILIAN 0x04000000 +#define DIAXIS_FLYINGC_BANK 0x04008A01 /* Roll ship left / right */ +#define DIAXIS_FLYINGC_PITCH 0x04010A02 /* Nose up / down */ +#define DIAXIS_FLYINGC_THROTTLE 0x04039203 /* Throttle */ +#define DIBUTTON_FLYINGC_VIEW 0x04002401 /* Cycle through view options */ +#define DIBUTTON_FLYINGC_DISPLAY 0x04002402 /* Select next dashboard / heads up display option */ +#define DIBUTTON_FLYINGC_GEAR 0x04002C03 /* Gear up / down */ +#define DIBUTTON_FLYINGC_MENU 0x040004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FLYINGC_GLANCE 0x04004601 /* Look around */ +#define DIAXIS_FLYINGC_BRAKE 0x04046A04 /* Apply Brake */ +#define DIAXIS_FLYINGC_RUDDER 0x04025205 /* Yaw ship left/right */ +#define DIAXIS_FLYINGC_FLAPS 0x04055A06 /* Flaps */ +#define DIBUTTON_FLYINGC_FLAPSUP 0x04006404 /* Increment stepping up until fully retracted */ +#define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405 /* Decrement stepping down until fully extended */ +#define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0 /* Fallback brake button */ +#define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0 /* Fallback throttle up button */ +#define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8 /* Fallback throttle down button */ +#define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4EC /* Fallback Glance Right button */ +#define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_FLYINGC_DEVICE 0x040044FE /* Show input device and controls */ +#define DIBUTTON_FLYINGC_PAUSE 0x040044FC /* Start / Pause / Restart game */ + +/*--- Flight Simulator - Military + Aerial combat is the primary objective ---*/ +#define DIVIRTUAL_FLYING_MILITARY 0x05000000 +#define DIAXIS_FLYINGM_BANK 0x05008A01 /* Bank - Roll ship left / right */ +#define DIAXIS_FLYINGM_PITCH 0x05010A02 /* Pitch - Nose up / down */ +#define DIAXIS_FLYINGM_THROTTLE 0x05039203 /* Throttle - faster / slower */ +#define DIBUTTON_FLYINGM_FIRE 0x05000C01 /* Fire */ +#define DIBUTTON_FLYINGM_WEAPONS 0x05000C02 /* Select next weapon */ +#define DIBUTTON_FLYINGM_TARGET 0x05000C03 /* Selects next available target */ +#define DIBUTTON_FLYINGM_MENU 0x050004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FLYINGM_GLANCE 0x05004601 /* Look around */ +#define DIBUTTON_FLYINGM_COUNTER 0x05005C04 /* Activate counter measures */ +#define DIAXIS_FLYINGM_RUDDER 0x05024A04 /* Rudder - Yaw ship left/right */ +#define DIAXIS_FLYINGM_BRAKE 0x05046205 /* Brake-axis */ +#define DIBUTTON_FLYINGM_VIEW 0x05006405 /* Cycle through view options */ +#define DIBUTTON_FLYINGM_DISPLAY 0x05006406 /* Select next dashboard option */ +#define DIAXIS_FLYINGM_FLAPS 0x05055206 /* Flaps */ +#define DIBUTTON_FLYINGM_FLAPSUP 0x05005407 /* Increment stepping up until fully retracted */ +#define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408 /* Decrement stepping down until fully extended */ +#define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09 /* Alternative fire button */ +#define DIBUTTON_FLYINGM_GEAR 0x0500640A /* Gear up / down */ +#define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0 /* Fallback brake button */ +#define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0 /* Fallback throttle up button */ +#define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8 /* Fallback throttle down button */ +#define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4EC /* Fallback Glance Right button */ +#define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_FLYINGM_DEVICE 0x050044FE /* Show input device and controls */ +#define DIBUTTON_FLYINGM_PAUSE 0x050044FC /* Start / Pause / Restart game */ + +/*--- Flight Simulator - Combat Helicopter + Combat from helicopter is primary objective ---*/ +#define DIVIRTUAL_FLYING_HELICOPTER 0x06000000 +#define DIAXIS_FLYINGH_BANK 0x06008A01 /* Bank - Roll ship left / right */ +#define DIAXIS_FLYINGH_PITCH 0x06010A02 /* Pitch - Nose up / down */ +#define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03 /* Collective - Blade pitch/power */ +#define DIBUTTON_FLYINGH_FIRE 0x06001401 /* Fire */ +#define DIBUTTON_FLYINGH_WEAPONS 0x06001402 /* Select next weapon */ +#define DIBUTTON_FLYINGH_TARGET 0x06001403 /* Selects next available target */ +#define DIBUTTON_FLYINGH_MENU 0x060004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 /* Look around */ +#define DIAXIS_FLYINGH_TORQUE 0x06025A04 /* Torque - Rotate ship around left / right axis */ +#define DIAXIS_FLYINGH_THROTTLE 0x0603DA05 /* Throttle */ +#define DIBUTTON_FLYINGH_COUNTER 0x06005404 /* Activate counter measures */ +#define DIBUTTON_FLYINGH_VIEW 0x06006405 /* Cycle through view options */ +#define DIBUTTON_FLYINGH_GEAR 0x06006406 /* Gear up / down */ +#define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07 /* Alternative fire button */ +#define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0 /* Fallback throttle up button */ +#define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8 /* Fallback throttle down button */ +#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4EC /* Fallback Glance Right button */ +#define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_FLYINGH_DEVICE 0x060044FE /* Show input device and controls */ +#define DIBUTTON_FLYINGH_PAUSE 0x060044FC /* Start / Pause / Restart game */ + +/*--- Space Simulator - Combat + Space Simulator with weapons ---*/ +#define DIVIRTUAL_SPACESIM 0x07000000 +#define DIAXIS_SPACESIM_LATERAL 0x07008201 /* Move ship left / right */ +#define DIAXIS_SPACESIM_MOVE 0x07010202 /* Move ship forward/backward */ +#define DIAXIS_SPACESIM_THROTTLE 0x07038203 /* Throttle - Engine speed */ +#define DIBUTTON_SPACESIM_FIRE 0x07000401 /* Fire */ +#define DIBUTTON_SPACESIM_WEAPONS 0x07000402 /* Select next weapon */ +#define DIBUTTON_SPACESIM_TARGET 0x07000403 /* Selects next available target */ +#define DIBUTTON_SPACESIM_MENU 0x070004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 /* Look around */ +#define DIAXIS_SPACESIM_CLIMB 0x0701C204 /* Climb - Pitch ship up/down */ +#define DIAXIS_SPACESIM_ROTATE 0x07024205 /* Rotate - Turn ship left/right */ +#define DIBUTTON_SPACESIM_VIEW 0x07004404 /* Cycle through view options */ +#define DIBUTTON_SPACESIM_DISPLAY 0x07004405 /* Select next dashboard / heads up display option */ +#define DIBUTTON_SPACESIM_RAISE 0x07004406 /* Raise ship while maintaining current pitch */ +#define DIBUTTON_SPACESIM_LOWER 0x07004407 /* Lower ship while maintaining current pitch */ +#define DIBUTTON_SPACESIM_GEAR 0x07004408 /* Gear up / down */ +#define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 /* Alternative fire button */ +#define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4 /* Fallback move left button */ +#define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4EC /* Fallback move right button */ +#define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0 /* Fallback move forward button */ +#define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8 /* Fallback move backwards button */ +#define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0 /* Fallback throttle up button */ +#define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8 /* Fallback throttle down button */ +#define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4 /* Fallback turn left button */ +#define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244EC /* Fallback turn right button */ +#define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4 /* Fallback Glance Left button */ +#define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4EC /* Fallback Glance Right button */ +#define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0 /* Fallback Glance Up button */ +#define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8 /* Fallback Glance Down button */ +#define DIBUTTON_SPACESIM_DEVICE 0x070044FE /* Show input device and controls */ +#define DIBUTTON_SPACESIM_PAUSE 0x070044FC /* Start / Pause / Restart game */ + +/*--- Fighting - First Person + Hand to Hand combat is primary objective ---*/ +#define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000 +#define DIAXIS_FIGHTINGH_LATERAL 0x08008201 /* Sidestep left/right */ +#define DIAXIS_FIGHTINGH_MOVE 0x08010202 /* Move forward/backward */ +#define DIBUTTON_FIGHTINGH_PUNCH 0x08000401 /* Punch */ +#define DIBUTTON_FIGHTINGH_KICK 0x08000402 /* Kick */ +#define DIBUTTON_FIGHTINGH_BLOCK 0x08000403 /* Block */ +#define DIBUTTON_FIGHTINGH_CROUCH 0x08000404 /* Crouch */ +#define DIBUTTON_FIGHTINGH_JUMP 0x08000405 /* Jump */ +#define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406 /* Apply first special move */ +#define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407 /* Apply second special move */ +#define DIBUTTON_FIGHTINGH_MENU 0x080004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FIGHTINGH_SELECT 0x08004408 /* Select special move */ +#define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601 /* Look around */ +#define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409 /* Shows next on-screen display option */ +#define DIAXIS_FIGHTINGH_ROTATE 0x08024203 /* Rotate - Turn body left/right */ +#define DIBUTTON_FIGHTINGH_DODGE 0x0800440A /* Dodge */ +#define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4 /* Fallback left sidestep button */ +#define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4EC /* Fallback right sidestep button */ +#define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0 /* Fallback forward button */ +#define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080144E8 /* Fallback backward button */ +#define DIBUTTON_FIGHTINGH_DEVICE 0x080044FE /* Show input device and controls */ +#define DIBUTTON_FIGHTINGH_PAUSE 0x080044FC /* Start / Pause / Restart game */ + +/*--- Fighting - First Person Shooting + Navigation and combat are primary objectives ---*/ +#define DIVIRTUAL_FIGHTING_FPS 0x09000000 +#define DIAXIS_FPS_ROTATE 0x09008201 /* Rotate character left/right */ +#define DIAXIS_FPS_MOVE 0x09010202 /* Move forward/backward */ +#define DIBUTTON_FPS_FIRE 0x09000401 /* Fire */ +#define DIBUTTON_FPS_WEAPONS 0x09000402 /* Select next weapon */ +#define DIBUTTON_FPS_APPLY 0x09000403 /* Use item */ +#define DIBUTTON_FPS_SELECT 0x09000404 /* Select next inventory item */ +#define DIBUTTON_FPS_CROUCH 0x09000405 /* Crouch/ climb down/ swim down */ +#define DIBUTTON_FPS_JUMP 0x09000406 /* Jump/ climb up/ swim up */ +#define DIAXIS_FPS_LOOKUPDOWN 0x09018203 /* Look up / down */ +#define DIBUTTON_FPS_STRAFE 0x09000407 /* Enable strafing while active */ +#define DIBUTTON_FPS_MENU 0x090004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FPS_GLANCE 0x09004601 /* Look around */ +#define DIBUTTON_FPS_DISPLAY 0x09004408 /* Shows next on-screen display option/ map */ +#define DIAXIS_FPS_SIDESTEP 0x09024204 /* Sidestep */ +#define DIBUTTON_FPS_DODGE 0x09004409 /* Dodge */ +#define DIBUTTON_FPS_GLANCEL 0x0900440A /* Glance Left */ +#define DIBUTTON_FPS_GLANCER 0x0900440B /* Glance Right */ +#define DIBUTTON_FPS_FIRESECONDARY 0x0900440C /* Alternative fire button */ +#define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4 /* Fallback rotate left button */ +#define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4EC /* Fallback rotate right button */ +#define DIBUTTON_FPS_FORWARD_LINK 0x090144E0 /* Fallback forward button */ +#define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8 /* Fallback backward button */ +#define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0 /* Fallback look up button */ +#define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8 /* Fallback look down button */ +#define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4 /* Fallback step left button */ +#define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244EC /* Fallback step right button */ +#define DIBUTTON_FPS_DEVICE 0x090044FE /* Show input device and controls */ +#define DIBUTTON_FPS_PAUSE 0x090044FC /* Start / Pause / Restart game */ + +/*--- Fighting - Third Person action + Perspective of camera is behind the main character ---*/ +#define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000 +#define DIAXIS_TPS_TURN 0x0A020201 /* Turn left/right */ +#define DIAXIS_TPS_MOVE 0x0A010202 /* Move forward/backward */ +#define DIBUTTON_TPS_RUN 0x0A000401 /* Run or walk toggle switch */ +#define DIBUTTON_TPS_ACTION 0x0A000402 /* Action Button */ +#define DIBUTTON_TPS_SELECT 0x0A000403 /* Select next weapon */ +#define DIBUTTON_TPS_USE 0x0A000404 /* Use inventory item currently selected */ +#define DIBUTTON_TPS_JUMP 0x0A000405 /* Character Jumps */ +#define DIBUTTON_TPS_MENU 0x0A0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_TPS_GLANCE 0x0A004601 /* Look around */ +#define DIBUTTON_TPS_VIEW 0x0A004406 /* Select camera view */ +#define DIBUTTON_TPS_STEPLEFT 0x0A004407 /* Character takes a left step */ +#define DIBUTTON_TPS_STEPRIGHT 0x0A004408 /* Character takes a right step */ +#define DIAXIS_TPS_STEP 0x0A00C203 /* Character steps left/right */ +#define DIBUTTON_TPS_DODGE 0x0A004409 /* Character dodges or ducks */ +#define DIBUTTON_TPS_INVENTORY 0x0A00440A /* Cycle through inventory */ +#define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4 /* Fallback turn left button */ +#define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244EC /* Fallback turn right button */ +#define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0 /* Fallback forward button */ +#define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8 /* Fallback backward button */ +#define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0 /* Fallback look up button */ +#define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8 /* Fallback look down button */ +#define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4 /* Fallback glance up button */ +#define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4EC /* Fallback glance right button */ +#define DIBUTTON_TPS_DEVICE 0x0A0044FE /* Show input device and controls */ +#define DIBUTTON_TPS_PAUSE 0x0A0044FC /* Start / Pause / Restart game */ + +/*--- Strategy - Role Playing + Navigation and problem solving are primary actions ---*/ +#define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000 +#define DIAXIS_STRATEGYR_LATERAL 0x0B008201 /* sidestep - left/right */ +#define DIAXIS_STRATEGYR_MOVE 0x0B010202 /* move forward/backward */ +#define DIBUTTON_STRATEGYR_GET 0x0B000401 /* Acquire item */ +#define DIBUTTON_STRATEGYR_APPLY 0x0B000402 /* Use selected item */ +#define DIBUTTON_STRATEGYR_SELECT 0x0B000403 /* Select nextitem */ +#define DIBUTTON_STRATEGYR_ATTACK 0x0B000404 /* Attack */ +#define DIBUTTON_STRATEGYR_CAST 0x0B000405 /* Cast Spell */ +#define DIBUTTON_STRATEGYR_CROUCH 0x0B000406 /* Crouch */ +#define DIBUTTON_STRATEGYR_JUMP 0x0B000407 /* Jump */ +#define DIBUTTON_STRATEGYR_MENU 0x0B0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601 /* Look around */ +#define DIBUTTON_STRATEGYR_MAP 0x0B004408 /* Cycle through map options */ +#define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409 /* Shows next on-screen display option */ +#define DIAXIS_STRATEGYR_ROTATE 0x0B024203 /* Turn body left/right */ +#define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0 /* Fallback move forward button */ +#define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8 /* Fallback move backward button */ +#define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4 /* Fallback turn body left button */ +#define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244EC /* Fallback turn body right button */ +#define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FE /* Show input device and controls */ +#define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FC /* Start / Pause / Restart game */ + +/*--- Strategy - Turn based + Navigation and problem solving are primary actions ---*/ +#define DIVIRTUAL_STRATEGY_TURN 0x0C000000 +#define DIAXIS_STRATEGYT_LATERAL 0x0C008201 /* Sidestep left/right */ +#define DIAXIS_STRATEGYT_MOVE 0x0C010202 /* Move forward/backwards */ +#define DIBUTTON_STRATEGYT_SELECT 0x0C000401 /* Select unit or object */ +#define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402 /* Cycle through instructions */ +#define DIBUTTON_STRATEGYT_APPLY 0x0C000403 /* Apply selected instruction */ +#define DIBUTTON_STRATEGYT_TEAM 0x0C000404 /* Select next team / cycle through all */ +#define DIBUTTON_STRATEGYT_TURN 0x0C000405 /* Indicate turn over */ +#define DIBUTTON_STRATEGYT_MENU 0x0C0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_STRATEGYT_ZOOM 0x0C004406 /* Zoom - in / out */ +#define DIBUTTON_STRATEGYT_MAP 0x0C004407 /* cycle through map options */ +#define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408 /* shows next on-screen display options */ +#define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0 /* Fallback move forward button */ +#define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8 /* Fallback move back button */ +#define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FE /* Show input device and controls */ +#define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hunting + Hunting ---*/ +#define DIVIRTUAL_SPORTS_HUNTING 0x0D000000 +#define DIAXIS_HUNTING_LATERAL 0x0D008201 /* sidestep left/right */ +#define DIAXIS_HUNTING_MOVE 0x0D010202 /* move forward/backwards */ +#define DIBUTTON_HUNTING_FIRE 0x0D000401 /* Fire selected weapon */ +#define DIBUTTON_HUNTING_AIM 0x0D000402 /* Select aim/move */ +#define DIBUTTON_HUNTING_WEAPON 0x0D000403 /* Select next weapon */ +#define DIBUTTON_HUNTING_BINOCULAR 0x0D000404 /* Look through Binoculars */ +#define DIBUTTON_HUNTING_CALL 0x0D000405 /* Make animal call */ +#define DIBUTTON_HUNTING_MAP 0x0D000406 /* View Map */ +#define DIBUTTON_HUNTING_SPECIAL 0x0D000407 /* Special game operation */ +#define DIBUTTON_HUNTING_MENU 0x0D0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HUNTING_GLANCE 0x0D004601 /* Look around */ +#define DIBUTTON_HUNTING_DISPLAY 0x0D004408 /* show next on-screen display option */ +#define DIAXIS_HUNTING_ROTATE 0x0D024203 /* Turn body left/right */ +#define DIBUTTON_HUNTING_CROUCH 0x0D004409 /* Crouch/ Climb / Swim down */ +#define DIBUTTON_HUNTING_JUMP 0x0D00440A /* Jump/ Climb up / Swim up */ +#define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440B /* Alternative fire button */ +#define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0 /* Fallback move forward button */ +#define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8 /* Fallback move back button */ +#define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4 /* Fallback turn body left button */ +#define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244EC /* Fallback turn body right button */ +#define DIBUTTON_HUNTING_DEVICE 0x0D0044FE /* Show input device and controls */ +#define DIBUTTON_HUNTING_PAUSE 0x0D0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Fishing + Catching Fish is primary objective ---*/ +#define DIVIRTUAL_SPORTS_FISHING 0x0E000000 +#define DIAXIS_FISHING_LATERAL 0x0E008201 /* sidestep left/right */ +#define DIAXIS_FISHING_MOVE 0x0E010202 /* move forward/backwards */ +#define DIBUTTON_FISHING_CAST 0x0E000401 /* Cast line */ +#define DIBUTTON_FISHING_TYPE 0x0E000402 /* Select cast type */ +#define DIBUTTON_FISHING_BINOCULAR 0x0E000403 /* Look through Binocular */ +#define DIBUTTON_FISHING_BAIT 0x0E000404 /* Select type of Bait */ +#define DIBUTTON_FISHING_MAP 0x0E000405 /* View Map */ +#define DIBUTTON_FISHING_MENU 0x0E0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_FISHING_GLANCE 0x0E004601 /* Look around */ +#define DIBUTTON_FISHING_DISPLAY 0x0E004406 /* Show next on-screen display option */ +#define DIAXIS_FISHING_ROTATE 0x0E024203 /* Turn character left / right */ +#define DIBUTTON_FISHING_CROUCH 0x0E004407 /* Crouch/ Climb / Swim down */ +#define DIBUTTON_FISHING_JUMP 0x0E004408 /* Jump/ Climb up / Swim up */ +#define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0 /* Fallback move forward button */ +#define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8 /* Fallback move back button */ +#define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4 /* Fallback turn body left button */ +#define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244EC /* Fallback turn body right button */ +#define DIBUTTON_FISHING_DEVICE 0x0E0044FE /* Show input device and controls */ +#define DIBUTTON_FISHING_PAUSE 0x0E0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Baseball - Batting + Batter control is primary objective ---*/ +#define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000 +#define DIAXIS_BASEBALLB_LATERAL 0x0F008201 /* Aim left / right */ +#define DIAXIS_BASEBALLB_MOVE 0x0F010202 /* Aim up / down */ +#define DIBUTTON_BASEBALLB_SELECT 0x0F000401 /* cycle through swing options */ +#define DIBUTTON_BASEBALLB_NORMAL 0x0F000402 /* normal swing */ +#define DIBUTTON_BASEBALLB_POWER 0x0F000403 /* swing for the fence */ +#define DIBUTTON_BASEBALLB_BUNT 0x0F000404 /* bunt */ +#define DIBUTTON_BASEBALLB_STEAL 0x0F000405 /* Base runner attempts to steal a base */ +#define DIBUTTON_BASEBALLB_BURST 0x0F000406 /* Base runner invokes burst of speed */ +#define DIBUTTON_BASEBALLB_SLIDE 0x0F000407 /* Base runner slides into base */ +#define DIBUTTON_BASEBALLB_CONTACT 0x0F000408 /* Contact swing */ +#define DIBUTTON_BASEBALLB_MENU 0x0F0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409 /* Base runner goes back to a base */ +#define DIBUTTON_BASEBALLB_BOX 0x0F00440A /* Enter or exit batting box */ +#define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0 /* Fallback move forward button */ +#define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8 /* Fallback move back button */ +#define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FE /* Show input device and controls */ +#define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Baseball - Pitching + Pitcher control is primary objective ---*/ +#define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000 +#define DIAXIS_BASEBALLP_LATERAL 0x10008201 /* Aim left / right */ +#define DIAXIS_BASEBALLP_MOVE 0x10010202 /* Aim up / down */ +#define DIBUTTON_BASEBALLP_SELECT 0x10000401 /* cycle through pitch selections */ +#define DIBUTTON_BASEBALLP_PITCH 0x10000402 /* throw pitch */ +#define DIBUTTON_BASEBALLP_BASE 0x10000403 /* select base to throw to */ +#define DIBUTTON_BASEBALLP_THROW 0x10000404 /* throw to base */ +#define DIBUTTON_BASEBALLP_FAKE 0x10000405 /* Fake a throw to a base */ +#define DIBUTTON_BASEBALLP_MENU 0x100004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BASEBALLP_WALK 0x10004406 /* Throw intentional walk / pitch out */ +#define DIBUTTON_BASEBALLP_LOOK 0x10004407 /* Look at runners on bases */ +#define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0 /* Fallback move forward button */ +#define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8 /* Fallback move back button */ +#define DIBUTTON_BASEBALLP_DEVICE 0x100044FE /* Show input device and controls */ +#define DIBUTTON_BASEBALLP_PAUSE 0x100044FC /* Start / Pause / Restart game */ + +/*--- Sports - Baseball - Fielding + Fielder control is primary objective ---*/ +#define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000 +#define DIAXIS_BASEBALLF_LATERAL 0x11008201 /* Aim left / right */ +#define DIAXIS_BASEBALLF_MOVE 0x11010202 /* Aim up / down */ +#define DIBUTTON_BASEBALLF_NEAREST 0x11000401 /* Switch to fielder nearest to the ball */ +#define DIBUTTON_BASEBALLF_THROW1 0x11000402 /* Make conservative throw */ +#define DIBUTTON_BASEBALLF_THROW2 0x11000403 /* Make aggressive throw */ +#define DIBUTTON_BASEBALLF_BURST 0x11000404 /* Invoke burst of speed */ +#define DIBUTTON_BASEBALLF_JUMP 0x11000405 /* Jump to catch ball */ +#define DIBUTTON_BASEBALLF_DIVE 0x11000406 /* Dive to catch ball */ +#define DIBUTTON_BASEBALLF_MENU 0x110004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407 /* Shift the infield positioning */ +#define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408 /* Shift the outfield positioning */ +#define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4 /* Fallback aim left button */ +#define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4EC /* Fallback aim right button */ +#define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0 /* Fallback move forward button */ +#define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8 /* Fallback move back button */ +#define DIBUTTON_BASEBALLF_DEVICE 0x110044FE /* Show input device and controls */ +#define DIBUTTON_BASEBALLF_PAUSE 0x110044FC /* Start / Pause / Restart game */ + +/*--- Sports - Basketball - Offense + Offense ---*/ +#define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000 +#define DIAXIS_BBALLO_LATERAL 0x12008201 /* left / right */ +#define DIAXIS_BBALLO_MOVE 0x12010202 /* up / down */ +#define DIBUTTON_BBALLO_SHOOT 0x12000401 /* shoot basket */ +#define DIBUTTON_BBALLO_DUNK 0x12000402 /* dunk basket */ +#define DIBUTTON_BBALLO_PASS 0x12000403 /* throw pass */ +#define DIBUTTON_BBALLO_FAKE 0x12000404 /* fake shot or pass */ +#define DIBUTTON_BBALLO_SPECIAL 0x12000405 /* apply special move */ +#define DIBUTTON_BBALLO_PLAYER 0x12000406 /* select next player */ +#define DIBUTTON_BBALLO_BURST 0x12000407 /* invoke burst */ +#define DIBUTTON_BBALLO_CALL 0x12000408 /* call for ball / pass to me */ +#define DIBUTTON_BBALLO_MENU 0x120004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_BBALLO_GLANCE 0x12004601 /* scroll view */ +#define DIBUTTON_BBALLO_SCREEN 0x12004409 /* Call for screen */ +#define DIBUTTON_BBALLO_PLAY 0x1200440A /* Call for specific offensive play */ +#define DIBUTTON_BBALLO_JAB 0x1200440B /* Initiate fake drive to basket */ +#define DIBUTTON_BBALLO_POST 0x1200440C /* Perform post move */ +#define DIBUTTON_BBALLO_TIMEOUT 0x1200440D /* Time Out */ +#define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440E /* substitute one player for another */ +#define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0 /* Fallback move forward button */ +#define DIBUTTON_BBALLO_BACK_LINK 0x120144E8 /* Fallback move back button */ +#define DIBUTTON_BBALLO_DEVICE 0x120044FE /* Show input device and controls */ +#define DIBUTTON_BBALLO_PAUSE 0x120044FC /* Start / Pause / Restart game */ + +/*--- Sports - Basketball - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000 +#define DIAXIS_BBALLD_LATERAL 0x13008201 /* left / right */ +#define DIAXIS_BBALLD_MOVE 0x13010202 /* up / down */ +#define DIBUTTON_BBALLD_JUMP 0x13000401 /* jump to block shot */ +#define DIBUTTON_BBALLD_STEAL 0x13000402 /* attempt to steal ball */ +#define DIBUTTON_BBALLD_FAKE 0x13000403 /* fake block or steal */ +#define DIBUTTON_BBALLD_SPECIAL 0x13000404 /* apply special move */ +#define DIBUTTON_BBALLD_PLAYER 0x13000405 /* select next player */ +#define DIBUTTON_BBALLD_BURST 0x13000406 /* invoke burst */ +#define DIBUTTON_BBALLD_PLAY 0x13000407 /* call for specific defensive play */ +#define DIBUTTON_BBALLD_MENU 0x130004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_BBALLD_GLANCE 0x13004601 /* scroll view */ +#define DIBUTTON_BBALLD_TIMEOUT 0x13004408 /* Time Out */ +#define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409 /* substitute one player for another */ +#define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4EC /* Fallback sidestep right button */ +#define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0 /* Fallback move forward button */ +#define DIBUTTON_BBALLD_BACK_LINK 0x130144E8 /* Fallback move back button */ +#define DIBUTTON_BBALLD_DEVICE 0x130044FE /* Show input device and controls */ +#define DIBUTTON_BBALLD_PAUSE 0x130044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - Play + Play selection ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000 +#define DIBUTTON_FOOTBALLP_PLAY 0x14000401 /* cycle through available plays */ +#define DIBUTTON_FOOTBALLP_SELECT 0x14000402 /* select play */ +#define DIBUTTON_FOOTBALLP_HELP 0x14000403 /* Bring up pop-up help */ +#define DIBUTTON_FOOTBALLP_MENU 0x140004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLP_DEVICE 0x140044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLP_PAUSE 0x140044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - QB + Offense: Quarterback / Kicker ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000 +#define DIAXIS_FOOTBALLQ_LATERAL 0x15008201 /* Move / Aim: left / right */ +#define DIAXIS_FOOTBALLQ_MOVE 0x15010202 /* Move / Aim: up / down */ +#define DIBUTTON_FOOTBALLQ_SELECT 0x15000401 /* Select */ +#define DIBUTTON_FOOTBALLQ_SNAP 0x15000402 /* snap ball - start play */ +#define DIBUTTON_FOOTBALLQ_JUMP 0x15000403 /* jump over defender */ +#define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404 /* Dive/Slide */ +#define DIBUTTON_FOOTBALLQ_PASS 0x15000405 /* throws pass to receiver */ +#define DIBUTTON_FOOTBALLQ_FAKE 0x15000406 /* pump fake pass or fake kick */ +#define DIBUTTON_FOOTBALLQ_MENU 0x150004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407 /* Fake snap */ +#define DIBUTTON_FOOTBALLQ_MOTION 0x15004408 /* Send receivers in motion */ +#define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409 /* Change offensive play at line of scrimmage */ +#define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0 /* Fallback move forward button */ +#define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8 /* Fallback move back button */ +#define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - Offense + Offense - Runner ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000 +#define DIAXIS_FOOTBALLO_LATERAL 0x16008201 /* Move / Aim: left / right */ +#define DIAXIS_FOOTBALLO_MOVE 0x16010202 /* Move / Aim: up / down */ +#define DIBUTTON_FOOTBALLO_JUMP 0x16000401 /* jump or hurdle over defender */ +#define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402 /* holds out left arm */ +#define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403 /* holds out right arm */ +#define DIBUTTON_FOOTBALLO_THROW 0x16000404 /* throw pass or lateral ball to another runner */ +#define DIBUTTON_FOOTBALLO_SPIN 0x16000405 /* Spin to avoid defenders */ +#define DIBUTTON_FOOTBALLO_MENU 0x160004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLO_JUKE 0x16004406 /* Use special move to avoid defenders */ +#define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407 /* Lower shoulder to run over defenders */ +#define DIBUTTON_FOOTBALLO_TURBO 0x16004408 /* Speed burst past defenders */ +#define DIBUTTON_FOOTBALLO_DIVE 0x16004409 /* Dive over defenders */ +#define DIBUTTON_FOOTBALLO_ZOOM 0x1600440A /* Zoom view in / out */ +#define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440B /* substitute one player for another */ +#define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0 /* Fallback move forward button */ +#define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8 /* Fallback move back button */ +#define DIBUTTON_FOOTBALLO_DEVICE 0x160044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLO_PAUSE 0x160044FC /* Start / Pause / Restart game */ + +/*--- Sports - Football - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000 +#define DIAXIS_FOOTBALLD_LATERAL 0x17008201 /* Move / Aim: left / right */ +#define DIAXIS_FOOTBALLD_MOVE 0x17010202 /* Move / Aim: up / down */ +#define DIBUTTON_FOOTBALLD_PLAY 0x17000401 /* cycle through available plays */ +#define DIBUTTON_FOOTBALLD_SELECT 0x17000402 /* select player closest to the ball */ +#define DIBUTTON_FOOTBALLD_JUMP 0x17000403 /* jump to intercept or block */ +#define DIBUTTON_FOOTBALLD_TACKLE 0x17000404 /* tackler runner */ +#define DIBUTTON_FOOTBALLD_FAKE 0x17000405 /* hold down to fake tackle or intercept */ +#define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406 /* Initiate special tackle */ +#define DIBUTTON_FOOTBALLD_MENU 0x170004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_FOOTBALLD_SPIN 0x17004407 /* Spin to beat offensive line */ +#define DIBUTTON_FOOTBALLD_SWIM 0x17004408 /* Swim to beat the offensive line */ +#define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409 /* Bull rush the offensive line */ +#define DIBUTTON_FOOTBALLD_RIP 0x1700440A /* Rip the offensive line */ +#define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440B /* Change defensive play at the line of scrimmage */ +#define DIBUTTON_FOOTBALLD_ZOOM 0x1700440C /* Zoom view in / out */ +#define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440D /* substitute one player for another */ +#define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4EC /* Fallback sidestep right button */ +#define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0 /* Fallback move forward button */ +#define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144E8 /* Fallback move back button */ +#define DIBUTTON_FOOTBALLD_DEVICE 0x170044FE /* Show input device and controls */ +#define DIBUTTON_FOOTBALLD_PAUSE 0x170044FC /* Start / Pause / Restart game */ + +/*--- Sports - Golf + ---*/ +#define DIVIRTUAL_SPORTS_GOLF 0x18000000 +#define DIAXIS_GOLF_LATERAL 0x18008201 /* Move / Aim: left / right */ +#define DIAXIS_GOLF_MOVE 0x18010202 /* Move / Aim: up / down */ +#define DIBUTTON_GOLF_SWING 0x18000401 /* swing club */ +#define DIBUTTON_GOLF_SELECT 0x18000402 /* cycle between: club / swing strength / ball arc / ball spin */ +#define DIBUTTON_GOLF_UP 0x18000403 /* increase selection */ +#define DIBUTTON_GOLF_DOWN 0x18000404 /* decrease selection */ +#define DIBUTTON_GOLF_TERRAIN 0x18000405 /* shows terrain detail */ +#define DIBUTTON_GOLF_FLYBY 0x18000406 /* view the hole via a flyby */ +#define DIBUTTON_GOLF_MENU 0x180004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_GOLF_SCROLL 0x18004601 /* scroll view */ +#define DIBUTTON_GOLF_ZOOM 0x18004407 /* Zoom view in / out */ +#define DIBUTTON_GOLF_TIMEOUT 0x18004408 /* Call for time out */ +#define DIBUTTON_GOLF_SUBSTITUTE 0x18004409 /* substitute one player for another */ +#define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4EC /* Fallback sidestep right button */ +#define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0 /* Fallback move forward button */ +#define DIBUTTON_GOLF_BACK_LINK 0x180144E8 /* Fallback move back button */ +#define DIBUTTON_GOLF_DEVICE 0x180044FE /* Show input device and controls */ +#define DIBUTTON_GOLF_PAUSE 0x180044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hockey - Offense + Offense ---*/ +#define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000 +#define DIAXIS_HOCKEYO_LATERAL 0x19008201 /* Move / Aim: left / right */ +#define DIAXIS_HOCKEYO_MOVE 0x19010202 /* Move / Aim: up / down */ +#define DIBUTTON_HOCKEYO_SHOOT 0x19000401 /* Shoot */ +#define DIBUTTON_HOCKEYO_PASS 0x19000402 /* pass the puck */ +#define DIBUTTON_HOCKEYO_BURST 0x19000403 /* invoke speed burst */ +#define DIBUTTON_HOCKEYO_SPECIAL 0x19000404 /* invoke special move */ +#define DIBUTTON_HOCKEYO_FAKE 0x19000405 /* hold down to fake pass or kick */ +#define DIBUTTON_HOCKEYO_MENU 0x190004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601 /* scroll view */ +#define DIBUTTON_HOCKEYO_ZOOM 0x19004406 /* Zoom view in / out */ +#define DIBUTTON_HOCKEYO_STRATEGY 0x19004407 /* Invoke coaching menu for strategy help */ +#define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408 /* Call for time out */ +#define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409 /* substitute one player for another */ +#define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0 /* Fallback move forward button */ +#define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8 /* Fallback move back button */ +#define DIBUTTON_HOCKEYO_DEVICE 0x190044FE /* Show input device and controls */ +#define DIBUTTON_HOCKEYO_PAUSE 0x190044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hockey - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000 +#define DIAXIS_HOCKEYD_LATERAL 0x1A008201 /* Move / Aim: left / right */ +#define DIAXIS_HOCKEYD_MOVE 0x1A010202 /* Move / Aim: up / down */ +#define DIBUTTON_HOCKEYD_PLAYER 0x1A000401 /* control player closest to the puck */ +#define DIBUTTON_HOCKEYD_STEAL 0x1A000402 /* attempt steal */ +#define DIBUTTON_HOCKEYD_BURST 0x1A000403 /* speed burst or body check */ +#define DIBUTTON_HOCKEYD_BLOCK 0x1A000404 /* block puck */ +#define DIBUTTON_HOCKEYD_FAKE 0x1A000405 /* hold down to fake tackle or intercept */ +#define DIBUTTON_HOCKEYD_MENU 0x1A0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601 /* scroll view */ +#define DIBUTTON_HOCKEYD_ZOOM 0x1A004406 /* Zoom view in / out */ +#define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407 /* Invoke coaching menu for strategy help */ +#define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408 /* Call for time out */ +#define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409 /* substitute one player for another */ +#define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0 /* Fallback move forward button */ +#define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8 /* Fallback move back button */ +#define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FE /* Show input device and controls */ +#define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Hockey - Goalie + Goal tending ---*/ +#define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000 +#define DIAXIS_HOCKEYG_LATERAL 0x1B008201 /* Move / Aim: left / right */ +#define DIAXIS_HOCKEYG_MOVE 0x1B010202 /* Move / Aim: up / down */ +#define DIBUTTON_HOCKEYG_PASS 0x1B000401 /* pass puck */ +#define DIBUTTON_HOCKEYG_POKE 0x1B000402 /* poke / check / hack */ +#define DIBUTTON_HOCKEYG_STEAL 0x1B000403 /* attempt steal */ +#define DIBUTTON_HOCKEYG_BLOCK 0x1B000404 /* block puck */ +#define DIBUTTON_HOCKEYG_MENU 0x1B0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601 /* scroll view */ +#define DIBUTTON_HOCKEYG_ZOOM 0x1B004405 /* Zoom view in / out */ +#define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406 /* Invoke coaching menu for strategy help */ +#define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407 /* Call for time out */ +#define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408 /* substitute one player for another */ +#define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0 /* Fallback move forward button */ +#define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8 /* Fallback move back button */ +#define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FE /* Show input device and controls */ +#define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Mountain Biking + ---*/ +#define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000 +#define DIAXIS_BIKINGM_TURN 0x1C008201 /* left / right */ +#define DIAXIS_BIKINGM_PEDAL 0x1C010202 /* Pedal faster / slower / brake */ +#define DIBUTTON_BIKINGM_JUMP 0x1C000401 /* jump over obstacle */ +#define DIBUTTON_BIKINGM_CAMERA 0x1C000402 /* switch camera view */ +#define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403 /* perform first special move */ +#define DIBUTTON_BIKINGM_SELECT 0x1C000404 /* Select */ +#define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405 /* perform second special move */ +#define DIBUTTON_BIKINGM_MENU 0x1C0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601 /* scroll view */ +#define DIBUTTON_BIKINGM_ZOOM 0x1C004406 /* Zoom view in / out */ +#define DIAXIS_BIKINGM_BRAKE 0x1C044203 /* Brake axis */ +#define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4 /* Fallback turn left button */ +#define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4EC /* Fallback turn right button */ +#define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0 /* Fallback pedal faster button */ +#define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8 /* Fallback pedal slower button */ +#define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8 /* Fallback brake button */ +#define DIBUTTON_BIKINGM_DEVICE 0x1C0044FE /* Show input device and controls */ +#define DIBUTTON_BIKINGM_PAUSE 0x1C0044FC /* Start / Pause / Restart game */ + +/*--- Sports: Skiing / Snowboarding / Skateboarding + ---*/ +#define DIVIRTUAL_SPORTS_SKIING 0x1D000000 +#define DIAXIS_SKIING_TURN 0x1D008201 /* left / right */ +#define DIAXIS_SKIING_SPEED 0x1D010202 /* faster / slower */ +#define DIBUTTON_SKIING_JUMP 0x1D000401 /* Jump */ +#define DIBUTTON_SKIING_CROUCH 0x1D000402 /* crouch down */ +#define DIBUTTON_SKIING_CAMERA 0x1D000403 /* switch camera view */ +#define DIBUTTON_SKIING_SPECIAL1 0x1D000404 /* perform first special move */ +#define DIBUTTON_SKIING_SELECT 0x1D000405 /* Select */ +#define DIBUTTON_SKIING_SPECIAL2 0x1D000406 /* perform second special move */ +#define DIBUTTON_SKIING_MENU 0x1D0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SKIING_GLANCE 0x1D004601 /* scroll view */ +#define DIBUTTON_SKIING_ZOOM 0x1D004407 /* Zoom view in / out */ +#define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4 /* Fallback turn left button */ +#define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4EC /* Fallback turn right button */ +#define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0 /* Fallback increase speed button */ +#define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8 /* Fallback decrease speed button */ +#define DIBUTTON_SKIING_DEVICE 0x1D0044FE /* Show input device and controls */ +#define DIBUTTON_SKIING_PAUSE 0x1D0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Soccer - Offense + Offense ---*/ +#define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000 +#define DIAXIS_SOCCERO_LATERAL 0x1E008201 /* Move / Aim: left / right */ +#define DIAXIS_SOCCERO_MOVE 0x1E010202 /* Move / Aim: up / down */ +#define DIAXIS_SOCCERO_BEND 0x1E018203 /* Bend to soccer shot/pass */ +#define DIBUTTON_SOCCERO_SHOOT 0x1E000401 /* Shoot the ball */ +#define DIBUTTON_SOCCERO_PASS 0x1E000402 /* Pass */ +#define DIBUTTON_SOCCERO_FAKE 0x1E000403 /* Fake */ +#define DIBUTTON_SOCCERO_PLAYER 0x1E000404 /* Select next player */ +#define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405 /* Apply special move */ +#define DIBUTTON_SOCCERO_SELECT 0x1E000406 /* Select special move */ +#define DIBUTTON_SOCCERO_MENU 0x1E0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601 /* scroll view */ +#define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407 /* Substitute one player for another */ +#define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408 /* Shoot the ball low */ +#define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409 /* Shoot the ball high */ +#define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440A /* Make a thru pass */ +#define DIBUTTON_SOCCERO_SPRINT 0x1E00440B /* Sprint / turbo boost */ +#define DIBUTTON_SOCCERO_CONTROL 0x1E00440C /* Obtain control of the ball */ +#define DIBUTTON_SOCCERO_HEAD 0x1E00440D /* Attempt to head the ball */ +#define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0 /* Fallback move forward button */ +#define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8 /* Fallback move back button */ +#define DIBUTTON_SOCCERO_DEVICE 0x1E0044FE /* Show input device and controls */ +#define DIBUTTON_SOCCERO_PAUSE 0x1E0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Soccer - Defense + Defense ---*/ +#define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000 +#define DIAXIS_SOCCERD_LATERAL 0x1F008201 /* Move / Aim: left / right */ +#define DIAXIS_SOCCERD_MOVE 0x1F010202 /* Move / Aim: up / down */ +#define DIBUTTON_SOCCERD_BLOCK 0x1F000401 /* Attempt to block shot */ +#define DIBUTTON_SOCCERD_STEAL 0x1F000402 /* Attempt to steal ball */ +#define DIBUTTON_SOCCERD_FAKE 0x1F000403 /* Fake a block or a steal */ +#define DIBUTTON_SOCCERD_PLAYER 0x1F000404 /* Select next player */ +#define DIBUTTON_SOCCERD_SPECIAL 0x1F000405 /* Apply special move */ +#define DIBUTTON_SOCCERD_SELECT 0x1F000406 /* Select special move */ +#define DIBUTTON_SOCCERD_SLIDE 0x1F000407 /* Attempt a slide tackle */ +#define DIBUTTON_SOCCERD_MENU 0x1F0004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601 /* scroll view */ +#define DIBUTTON_SOCCERD_FOUL 0x1F004408 /* Initiate a foul / hard-foul */ +#define DIBUTTON_SOCCERD_HEAD 0x1F004409 /* Attempt a Header */ +#define DIBUTTON_SOCCERD_CLEAR 0x1F00440A /* Attempt to clear the ball down the field */ +#define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440B /* Make the goalie charge out of the box */ +#define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440C /* Substitute one player for another */ +#define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4EC /* Fallback sidestep right button */ +#define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0 /* Fallback move forward button */ +#define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8 /* Fallback move back button */ +#define DIBUTTON_SOCCERD_DEVICE 0x1F0044FE /* Show input device and controls */ +#define DIBUTTON_SOCCERD_PAUSE 0x1F0044FC /* Start / Pause / Restart game */ + +/*--- Sports - Racquet + Tennis - Table-Tennis - Squash ---*/ +#define DIVIRTUAL_SPORTS_RACQUET 0x20000000 +#define DIAXIS_RACQUET_LATERAL 0x20008201 /* Move / Aim: left / right */ +#define DIAXIS_RACQUET_MOVE 0x20010202 /* Move / Aim: up / down */ +#define DIBUTTON_RACQUET_SWING 0x20000401 /* Swing racquet */ +#define DIBUTTON_RACQUET_BACKSWING 0x20000402 /* Swing backhand */ +#define DIBUTTON_RACQUET_SMASH 0x20000403 /* Smash shot */ +#define DIBUTTON_RACQUET_SPECIAL 0x20000404 /* Special shot */ +#define DIBUTTON_RACQUET_SELECT 0x20000405 /* Select special shot */ +#define DIBUTTON_RACQUET_MENU 0x200004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_RACQUET_GLANCE 0x20004601 /* scroll view */ +#define DIBUTTON_RACQUET_TIMEOUT 0x20004406 /* Call for time out */ +#define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407 /* Substitute one player for another */ +#define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4EC /* Fallback sidestep right button */ +#define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0 /* Fallback move forward button */ +#define DIBUTTON_RACQUET_BACK_LINK 0x200144E8 /* Fallback move back button */ +#define DIBUTTON_RACQUET_DEVICE 0x200044FE /* Show input device and controls */ +#define DIBUTTON_RACQUET_PAUSE 0x200044FC /* Start / Pause / Restart game */ + +/*--- Arcade- 2D + Side to Side movement ---*/ +#define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000 +#define DIAXIS_ARCADES_LATERAL 0x21008201 /* left / right */ +#define DIAXIS_ARCADES_MOVE 0x21010202 /* up / down */ +#define DIBUTTON_ARCADES_THROW 0x21000401 /* throw object */ +#define DIBUTTON_ARCADES_CARRY 0x21000402 /* carry object */ +#define DIBUTTON_ARCADES_ATTACK 0x21000403 /* attack */ +#define DIBUTTON_ARCADES_SPECIAL 0x21000404 /* apply special move */ +#define DIBUTTON_ARCADES_SELECT 0x21000405 /* select special move */ +#define DIBUTTON_ARCADES_MENU 0x210004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_ARCADES_VIEW 0x21004601 /* scroll view left / right / up / down */ +#define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4EC /* Fallback sidestep right button */ +#define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0 /* Fallback move forward button */ +#define DIBUTTON_ARCADES_BACK_LINK 0x210144E8 /* Fallback move back button */ +#define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0 /* Fallback scroll view up button */ +#define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8 /* Fallback scroll view down button */ +#define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4 /* Fallback scroll view left button */ +#define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4EC /* Fallback scroll view right button */ +#define DIBUTTON_ARCADES_DEVICE 0x210044FE /* Show input device and controls */ +#define DIBUTTON_ARCADES_PAUSE 0x210044FC /* Start / Pause / Restart game */ + +/*--- Arcade - Platform Game + Character moves around on screen ---*/ +#define DIVIRTUAL_ARCADE_PLATFORM 0x22000000 +#define DIAXIS_ARCADEP_LATERAL 0x22008201 /* Left / right */ +#define DIAXIS_ARCADEP_MOVE 0x22010202 /* Up / down */ +#define DIBUTTON_ARCADEP_JUMP 0x22000401 /* Jump */ +#define DIBUTTON_ARCADEP_FIRE 0x22000402 /* Fire */ +#define DIBUTTON_ARCADEP_CROUCH 0x22000403 /* Crouch */ +#define DIBUTTON_ARCADEP_SPECIAL 0x22000404 /* Apply special move */ +#define DIBUTTON_ARCADEP_SELECT 0x22000405 /* Select special move */ +#define DIBUTTON_ARCADEP_MENU 0x220004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_ARCADEP_VIEW 0x22004601 /* Scroll view */ +#define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406 /* Alternative fire button */ +#define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4 /* Fallback sidestep left button */ +#define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4EC /* Fallback sidestep right button */ +#define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0 /* Fallback move forward button */ +#define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8 /* Fallback move back button */ +#define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0 /* Fallback scroll view up button */ +#define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8 /* Fallback scroll view down button */ +#define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4 /* Fallback scroll view left button */ +#define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4EC /* Fallback scroll view right button */ +#define DIBUTTON_ARCADEP_DEVICE 0x220044FE /* Show input device and controls */ +#define DIBUTTON_ARCADEP_PAUSE 0x220044FC /* Start / Pause / Restart game */ + +/*--- CAD - 2D Object Control + Controls to select and move objects in 2D ---*/ +#define DIVIRTUAL_CAD_2DCONTROL 0x23000000 +#define DIAXIS_2DCONTROL_LATERAL 0x23008201 /* Move view left / right */ +#define DIAXIS_2DCONTROL_MOVE 0x23010202 /* Move view up / down */ +#define DIAXIS_2DCONTROL_INOUT 0x23018203 /* Zoom - in / out */ +#define DIBUTTON_2DCONTROL_SELECT 0x23000401 /* Select Object */ +#define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402 /* Do first special operation */ +#define DIBUTTON_2DCONTROL_SPECIAL 0x23000403 /* Select special operation */ +#define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404 /* Do second special operation */ +#define DIBUTTON_2DCONTROL_MENU 0x230004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601 /* Hat switch */ +#define DIAXIS_2DCONTROL_ROTATEZ 0x23024204 /* Rotate view clockwise / counterclockwise */ +#define DIBUTTON_2DCONTROL_DISPLAY 0x23004405 /* Shows next on-screen display options */ +#define DIBUTTON_2DCONTROL_DEVICE 0x230044FE /* Show input device and controls */ +#define DIBUTTON_2DCONTROL_PAUSE 0x230044FC /* Start / Pause / Restart game */ + +/*--- CAD - 3D object control + Controls to select and move objects within a 3D environment ---*/ +#define DIVIRTUAL_CAD_3DCONTROL 0x24000000 +#define DIAXIS_3DCONTROL_LATERAL 0x24008201 /* Move view left / right */ +#define DIAXIS_3DCONTROL_MOVE 0x24010202 /* Move view up / down */ +#define DIAXIS_3DCONTROL_INOUT 0x24018203 /* Zoom - in / out */ +#define DIBUTTON_3DCONTROL_SELECT 0x24000401 /* Select Object */ +#define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402 /* Do first special operation */ +#define DIBUTTON_3DCONTROL_SPECIAL 0x24000403 /* Select special operation */ +#define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404 /* Do second special operation */ +#define DIBUTTON_3DCONTROL_MENU 0x240004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601 /* Hat switch */ +#define DIAXIS_3DCONTROL_ROTATEX 0x24034204 /* Rotate view forward or up / backward or down */ +#define DIAXIS_3DCONTROL_ROTATEY 0x2402C205 /* Rotate view clockwise / counterclockwise */ +#define DIAXIS_3DCONTROL_ROTATEZ 0x24024206 /* Rotate view left / right */ +#define DIBUTTON_3DCONTROL_DISPLAY 0x24004405 /* Show next on-screen display options */ +#define DIBUTTON_3DCONTROL_DEVICE 0x240044FE /* Show input device and controls */ +#define DIBUTTON_3DCONTROL_PAUSE 0x240044FC /* Start / Pause / Restart game */ + +/*--- CAD - 3D Navigation - Fly through + Controls for 3D modeling ---*/ +#define DIVIRTUAL_CAD_FLYBY 0x25000000 +#define DIAXIS_CADF_LATERAL 0x25008201 /* move view left / right */ +#define DIAXIS_CADF_MOVE 0x25010202 /* move view up / down */ +#define DIAXIS_CADF_INOUT 0x25018203 /* in / out */ +#define DIBUTTON_CADF_SELECT 0x25000401 /* Select Object */ +#define DIBUTTON_CADF_SPECIAL1 0x25000402 /* do first special operation */ +#define DIBUTTON_CADF_SPECIAL 0x25000403 /* Select special operation */ +#define DIBUTTON_CADF_SPECIAL2 0x25000404 /* do second special operation */ +#define DIBUTTON_CADF_MENU 0x250004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_CADF_HATSWITCH 0x25004601 /* Hat switch */ +#define DIAXIS_CADF_ROTATEX 0x25034204 /* Rotate view forward or up / backward or down */ +#define DIAXIS_CADF_ROTATEY 0x2502C205 /* Rotate view clockwise / counterclockwise */ +#define DIAXIS_CADF_ROTATEZ 0x25024206 /* Rotate view left / right */ +#define DIBUTTON_CADF_DISPLAY 0x25004405 /* shows next on-screen display options */ +#define DIBUTTON_CADF_DEVICE 0x250044FE /* Show input device and controls */ +#define DIBUTTON_CADF_PAUSE 0x250044FC /* Start / Pause / Restart game */ + +/*--- CAD - 3D Model Control + Controls for 3D modeling ---*/ +#define DIVIRTUAL_CAD_MODEL 0x26000000 +#define DIAXIS_CADM_LATERAL 0x26008201 /* move view left / right */ +#define DIAXIS_CADM_MOVE 0x26010202 /* move view up / down */ +#define DIAXIS_CADM_INOUT 0x26018203 /* in / out */ +#define DIBUTTON_CADM_SELECT 0x26000401 /* Select Object */ +#define DIBUTTON_CADM_SPECIAL1 0x26000402 /* do first special operation */ +#define DIBUTTON_CADM_SPECIAL 0x26000403 /* Select special operation */ +#define DIBUTTON_CADM_SPECIAL2 0x26000404 /* do second special operation */ +#define DIBUTTON_CADM_MENU 0x260004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIHATSWITCH_CADM_HATSWITCH 0x26004601 /* Hat switch */ +#define DIAXIS_CADM_ROTATEX 0x26034204 /* Rotate view forward or up / backward or down */ +#define DIAXIS_CADM_ROTATEY 0x2602C205 /* Rotate view clockwise / counterclockwise */ +#define DIAXIS_CADM_ROTATEZ 0x26024206 /* Rotate view left / right */ +#define DIBUTTON_CADM_DISPLAY 0x26004405 /* shows next on-screen display options */ +#define DIBUTTON_CADM_DEVICE 0x260044FE /* Show input device and controls */ +#define DIBUTTON_CADM_PAUSE 0x260044FC /* Start / Pause / Restart game */ + +/*--- Control - Media Equipment + Remote ---*/ +#define DIVIRTUAL_REMOTE_CONTROL 0x27000000 +#define DIAXIS_REMOTE_SLIDER 0x27050201 /* Slider for adjustment: volume / color / bass / etc */ +#define DIBUTTON_REMOTE_MUTE 0x27000401 /* Set volume on current device to zero */ +#define DIBUTTON_REMOTE_SELECT 0x27000402 /* Next/previous: channel/ track / chapter / picture / station */ +#define DIBUTTON_REMOTE_PLAY 0x27002403 /* Start or pause entertainment on current device */ +#define DIBUTTON_REMOTE_CUE 0x27002404 /* Move through current media */ +#define DIBUTTON_REMOTE_REVIEW 0x27002405 /* Move through current media */ +#define DIBUTTON_REMOTE_CHANGE 0x27002406 /* Select next device */ +#define DIBUTTON_REMOTE_RECORD 0x27002407 /* Start recording the current media */ +#define DIBUTTON_REMOTE_MENU 0x270004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIAXIS_REMOTE_SLIDER2 0x27054202 /* Slider for adjustment: volume */ +#define DIBUTTON_REMOTE_TV 0x27005C08 /* Select TV */ +#define DIBUTTON_REMOTE_CABLE 0x27005C09 /* Select cable box */ +#define DIBUTTON_REMOTE_CD 0x27005C0A /* Select CD player */ +#define DIBUTTON_REMOTE_VCR 0x27005C0B /* Select VCR */ +#define DIBUTTON_REMOTE_TUNER 0x27005C0C /* Select tuner */ +#define DIBUTTON_REMOTE_DVD 0x27005C0D /* Select DVD player */ +#define DIBUTTON_REMOTE_ADJUST 0x27005C0E /* Enter device adjustment menu */ +#define DIBUTTON_REMOTE_DIGIT0 0x2700540F /* Digit 0 */ +#define DIBUTTON_REMOTE_DIGIT1 0x27005410 /* Digit 1 */ +#define DIBUTTON_REMOTE_DIGIT2 0x27005411 /* Digit 2 */ +#define DIBUTTON_REMOTE_DIGIT3 0x27005412 /* Digit 3 */ +#define DIBUTTON_REMOTE_DIGIT4 0x27005413 /* Digit 4 */ +#define DIBUTTON_REMOTE_DIGIT5 0x27005414 /* Digit 5 */ +#define DIBUTTON_REMOTE_DIGIT6 0x27005415 /* Digit 6 */ +#define DIBUTTON_REMOTE_DIGIT7 0x27005416 /* Digit 7 */ +#define DIBUTTON_REMOTE_DIGIT8 0x27005417 /* Digit 8 */ +#define DIBUTTON_REMOTE_DIGIT9 0x27005418 /* Digit 9 */ +#define DIBUTTON_REMOTE_DEVICE 0x270044FE /* Show input device and controls */ +#define DIBUTTON_REMOTE_PAUSE 0x270044FC /* Start / Pause / Restart game */ + +/*--- Control- Web + Help or Browser ---*/ +#define DIVIRTUAL_BROWSER_CONTROL 0x28000000 +#define DIAXIS_BROWSER_LATERAL 0x28008201 /* Move on screen pointer */ +#define DIAXIS_BROWSER_MOVE 0x28010202 /* Move on screen pointer */ +#define DIBUTTON_BROWSER_SELECT 0x28000401 /* Select current item */ +#define DIAXIS_BROWSER_VIEW 0x28018203 /* Move view up/down */ +#define DIBUTTON_BROWSER_REFRESH 0x28000402 /* Refresh */ +#define DIBUTTON_BROWSER_MENU 0x280004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_BROWSER_SEARCH 0x28004403 /* Use search tool */ +#define DIBUTTON_BROWSER_STOP 0x28004404 /* Cease current update */ +#define DIBUTTON_BROWSER_HOME 0x28004405 /* Go directly to "home" location */ +#define DIBUTTON_BROWSER_FAVORITES 0x28004406 /* Mark current site as favorite */ +#define DIBUTTON_BROWSER_NEXT 0x28004407 /* Select Next page */ +#define DIBUTTON_BROWSER_PREVIOUS 0x28004408 /* Select Previous page */ +#define DIBUTTON_BROWSER_HISTORY 0x28004409 /* Show/Hide History */ +#define DIBUTTON_BROWSER_PRINT 0x2800440A /* Print current page */ +#define DIBUTTON_BROWSER_DEVICE 0x280044FE /* Show input device and controls */ +#define DIBUTTON_BROWSER_PAUSE 0x280044FC /* Start / Pause / Restart game */ + +/*--- Driving Simulator - Giant Walking Robot + Walking tank with weapons ---*/ +#define DIVIRTUAL_DRIVING_MECHA 0x29000000 +#define DIAXIS_MECHA_STEER 0x29008201 /* Turns mecha left/right */ +#define DIAXIS_MECHA_TORSO 0x29010202 /* Tilts torso forward/backward */ +#define DIAXIS_MECHA_ROTATE 0x29020203 /* Turns torso left/right */ +#define DIAXIS_MECHA_THROTTLE 0x29038204 /* Engine Speed */ +#define DIBUTTON_MECHA_FIRE 0x29000401 /* Fire */ +#define DIBUTTON_MECHA_WEAPONS 0x29000402 /* Select next weapon group */ +#define DIBUTTON_MECHA_TARGET 0x29000403 /* Select closest enemy available target */ +#define DIBUTTON_MECHA_REVERSE 0x29000404 /* Toggles throttle in/out of reverse */ +#define DIBUTTON_MECHA_ZOOM 0x29000405 /* Zoom in/out targeting reticule */ +#define DIBUTTON_MECHA_JUMP 0x29000406 /* Fires jump jets */ +#define DIBUTTON_MECHA_MENU 0x290004FD /* Show menu options */ +/*--- Priority 2 controls ---*/ + +#define DIBUTTON_MECHA_CENTER 0x29004407 /* Center torso to legs */ +#define DIHATSWITCH_MECHA_GLANCE 0x29004601 /* Look around */ +#define DIBUTTON_MECHA_VIEW 0x29004408 /* Cycle through view options */ +#define DIBUTTON_MECHA_FIRESECONDARY 0x29004409 /* Alternative fire button */ +#define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4 /* Fallback steer left button */ +#define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4EC /* Fallback steer right button */ +#define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0 /* Fallback tilt torso forward button */ +#define DIBUTTON_MECHA_BACK_LINK 0x290144E8 /* Fallback tilt toroso backward button */ +#define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4 /* Fallback rotate toroso right button */ +#define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244EC /* Fallback rotate torso left button */ +#define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0 /* Fallback increase engine speed */ +#define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8 /* Fallback decrease engine speed */ +#define DIBUTTON_MECHA_DEVICE 0x290044FE /* Show input device and controls */ +#define DIBUTTON_MECHA_PAUSE 0x290044FC /* Start / Pause / Restart game */ + +/* + * "ANY" semantics can be used as a last resort to get mappings for actions + * that match nothing in the chosen virtual genre. These semantics will be + * mapped at a lower priority that virtual genre semantics. Also, hardware + * vendors will not be able to provide sensible mappings for these unless + * they provide application specific mappings. + */ +#define DIAXIS_ANY_X_1 0xFF00C201 +#define DIAXIS_ANY_X_2 0xFF00C202 +#define DIAXIS_ANY_Y_1 0xFF014201 +#define DIAXIS_ANY_Y_2 0xFF014202 +#define DIAXIS_ANY_Z_1 0xFF01C201 +#define DIAXIS_ANY_Z_2 0xFF01C202 +#define DIAXIS_ANY_R_1 0xFF024201 +#define DIAXIS_ANY_R_2 0xFF024202 +#define DIAXIS_ANY_U_1 0xFF02C201 +#define DIAXIS_ANY_U_2 0xFF02C202 +#define DIAXIS_ANY_V_1 0xFF034201 +#define DIAXIS_ANY_V_2 0xFF034202 +#define DIAXIS_ANY_A_1 0xFF03C201 +#define DIAXIS_ANY_A_2 0xFF03C202 +#define DIAXIS_ANY_B_1 0xFF044201 +#define DIAXIS_ANY_B_2 0xFF044202 +#define DIAXIS_ANY_C_1 0xFF04C201 +#define DIAXIS_ANY_C_2 0xFF04C202 +#define DIAXIS_ANY_S_1 0xFF054201 +#define DIAXIS_ANY_S_2 0xFF054202 + +#define DIAXIS_ANY_1 0xFF004201 +#define DIAXIS_ANY_2 0xFF004202 +#define DIAXIS_ANY_3 0xFF004203 +#define DIAXIS_ANY_4 0xFF004204 + +#define DIPOV_ANY_1 0xFF004601 +#define DIPOV_ANY_2 0xFF004602 +#define DIPOV_ANY_3 0xFF004603 +#define DIPOV_ANY_4 0xFF004604 + +#define DIBUTTON_ANY(instance) ( 0xFF004400 | instance ) + + +#ifdef __cplusplus +}; +#endif + +#endif /* __DINPUT_INCLUDED__ */ + +/**************************************************************************** + * + * Definitions for non-IDirectInput (VJoyD) features defined more recently + * than the current sdk files + * + ****************************************************************************/ + +#ifdef _INC_MMSYSTEM +#ifndef MMNOJOY + +#ifndef __VJOYDX_INCLUDED__ +#define __VJOYDX_INCLUDED__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure + * contains mini-driver specific data to be passed by VJoyD to the mini- + * driver instead of doing a poll. + */ +#define JOY_PASSDRIVERDATA 0x10000000l + +/* + * Informs the joystick driver that the configuration has been changed + * and should be reloaded from the registery. + * dwFlags is reserved and should be set to zero + */ +WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags ); + +#ifndef DIJ_RINGZERO +/* + * Invoke the joystick control panel directly, using the passed window handle + * as the parent of the dialog. This API is only supported for compatibility + * purposes; new applications should use the RunControlPanel method of a + * device interface for a game controller. + * The API is called by using the function pointer returned by + * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned + * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow + * declaration and casting of an appropriately typed variable. + */ +void WINAPI ShowJoyCPL( HWND hWnd ); +typedef void (WINAPI* LPFNSHOWJOYCPL)( HWND hWnd ); +#endif /* DIJ_RINGZERO */ + + +/* + * Hardware Setting indicating that the device is a headtracker + */ +#define JOY_HWS_ISHEADTRACKER 0x02000000l + +/* + * Hardware Setting indicating that the VxD is used to replace + * the standard analog polling + */ +#define JOY_HWS_ISGAMEPORTDRIVER 0x04000000l + +/* + * Hardware Setting indicating that the driver needs a standard + * gameport in order to communicate with the device. + */ +#define JOY_HWS_ISANALOGPORTDRIVER 0x08000000l + +/* + * Hardware Setting indicating that VJoyD should not load this + * driver, it will be loaded externally and will register with + * VJoyD of it's own accord. + */ +#define JOY_HWS_AUTOLOAD 0x10000000l + +/* + * Hardware Setting indicating that the driver acquires any + * resources needed without needing a devnode through VJoyD. + */ +#define JOY_HWS_NODEVNODE 0x20000000l + + +/* + * Hardware Setting indicating that the device is a gameport bus + */ +#define JOY_HWS_ISGAMEPORTBUS 0x80000000l +#define JOY_HWS_GAMEPORTBUSBUSY 0x00000001l + +/* + * Usage Setting indicating that the settings are volatile and + * should be removed if still present on a reboot. + */ +#define JOY_US_VOLATILE 0x00000008L + +#ifdef __cplusplus +}; +#endif + +#endif /* __VJOYDX_INCLUDED__ */ + +#endif /* not MMNOJOY */ +#endif /* _INC_MMSYSTEM */ + +/**************************************************************************** + * + * Definitions for non-IDirectInput (VJoyD) features defined more recently + * than the current ddk files + * + ****************************************************************************/ + +#ifndef DIJ_RINGZERO + +#ifdef _INC_MMDDK +#ifndef MMNOJOYDEV + +#ifndef __VJOYDXD_INCLUDED__ +#define __VJOYDXD_INCLUDED__ +/* + * Poll type in which the do_other field of the JOYOEMPOLLDATA + * structure contains mini-driver specific data passed from an app. + */ +#define JOY_OEMPOLL_PASSDRIVERDATA 7 + +#endif /* __VJOYDXD_INCLUDED__ */ + +#endif /* not MMNOJOYDEV */ +#endif /* _INC_MMDDK */ + +#endif /* DIJ_RINGZERO */ + diff --git a/libmednahawk/dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib b/libmednahawk/dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib new file mode 100644 index 0000000000000000000000000000000000000000..9c4178c28a114b6eb0bfa23b933b68707b768d6f GIT binary patch literal 1957750 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 e0DE5K%jn^rkOF0auC@wwj0 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

    k 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�g`_SqN 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 z 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 z

    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 literal 0 HcmV?d00001 diff --git a/libmednahawk/po/es.po b/libmednahawk/po/es.po new file mode 100644 index 0000000000..300233d715 --- /dev/null +++ b/libmednahawk/po/es.po @@ -0,0 +1,4340 @@ +# Spanish translations for mednafen package. +# Copyright (C) 2005 Mednafen Team +# This file is distributed under the same license as the mednafen package. +# somebody , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: mednafen\n" +"Report-Msgid-Bugs-To: http://forum.fobby.net/\n" +"POT-Creation-Date: 2012-01-18 11:00-0800\n" +"PO-Revision-Date: 2006-01-29 23:54-0600\n" +"Last-Translator: Merp\n" +"Language-Team: Spanish\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/snes/interface.cpp:66 src/gb/gb.cpp:284 src/nes/ppu/palette.cpp:71 +#: src/pce_fast/vdc.cpp:1569 src/pce/pce.cpp:276 src/gba/GBA.cpp:842 +#, c-format +msgid "Loading custom palette from \"%s\"...\n" +msgstr "" + +#: src/snes/interface.cpp:73 src/mempatcher.cpp:238 src/gb/gb.cpp:291 +#: src/nes/ppu/palette.cpp:78 src/pce/pce.cpp:284 src/gba/GBA.cpp:849 +#, c-format +msgid "Error opening file: %s\n" +msgstr "" + +#: src/snes/interface.cpp:80 src/gb/gb.cpp:298 src/pce_fast/vdc.cpp:1578 +#: src/pce/vce.cpp:466 src/gba/GBA.cpp:858 +msgid "custom color map" +msgstr "" + +#: src/snes/interface.cpp:92 src/gb/gb.cpp:310 src/nes/ppu/palette.cpp:87 +#, c-format +msgid "Error reading file: %s\n" +msgstr "" + +#: src/snes/interface.cpp:336 +#, c-format +msgid "Error opening save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:347 src/snes/interface.cpp:359 +#, c-format +msgid "Error reading save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:448 +msgid "SNES Cart ROM" +msgstr "" + +#: src/snes/interface.cpp:556 +msgid "SNES save state buffer" +msgstr "" + +#: src/snes/interface.cpp:796 +msgid "Enable multitap on SNES port 1." +msgstr "" + +#: src/snes/interface.cpp:797 +msgid "Enable multitap on SNES port 2." +msgstr "" + +#: src/snes/interface.cpp:799 src/pce/pce.cpp:1009 +msgid "Emulated mouse sensitivity." +msgstr "" + +#: src/mempatcher.cpp:166 +msgid "Error allocating memory for cheat data." +msgstr "" + +#: src/mempatcher.cpp:231 +#, c-format +msgid "Loading cheats from %s...\n" +msgstr "" + +#: src/mempatcher.cpp:265 +#, c-format +msgid "Invalid cheat type: %c\n" +msgstr "" + +#: src/mempatcher.cpp:313 +#, c-format +msgid "%lu cheats loaded.\n" +msgstr "" + +#: src/wswan/main.cpp:215 +#, c-format +msgid "%s ROM image is too small." +msgstr "" + +#: src/wswan/main.cpp:244 src/gb/gb.cpp:2094 src/pce_fast/huc.cpp:123 +#: src/ngp/neopop.cpp:146 src/lynx/system.cpp:232 src/pce/huc.cpp:226 +#: src/sms/cart.cpp:133 src/md/system.cpp:236 src/vb/vb.cpp:605 +#: src/gba/GBA.cpp:748 +#, c-format +msgid "ROM: %dKiB\n" +msgstr "" + +#: src/wswan/main.cpp:249 src/gb/gb.cpp:2096 src/pce_fast/huc.cpp:125 +#: src/ngp/neopop.cpp:147 src/lynx/system.cpp:234 src/pce/huc.cpp:228 +#: src/sms/cart.cpp:135 src/md/system.cpp:237 src/vb/vb.cpp:606 +#: src/gba/GBA.cpp:750 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "" + +#: src/wswan/main.cpp:264 +#, c-format +msgid "Developer: %s (0x%02x)\n" +msgstr "" + +#: src/wswan/main.cpp:285 +#, c-format +msgid "EEPROM: %d bytes\n" +msgstr "" + +#: src/wswan/main.cpp:288 +#, c-format +msgid "Battery-backed RAM: %d bytes\n" +msgstr "" + +#: src/wswan/main.cpp:290 +#, c-format +msgid "Recorded Checksum: 0x%04x\n" +msgstr "" + +#: src/wswan/main.cpp:295 +#, c-format +msgid "Real Checksum: 0x%04x\n" +msgstr "" + +#: src/wswan/main.cpp:395 +msgid "Male" +msgstr "" + +#: src/wswan/main.cpp:398 +msgid "Female" +msgstr "" + +#: src/wswan/main.cpp:419 src/ngp/neopop.cpp:251 +msgid "Japanese" +msgstr "" + +#: src/wswan/main.cpp:422 src/ngp/neopop.cpp:254 +msgid "English" +msgstr "" + +#: src/wswan/main.cpp:430 +msgid "Virtually rotate D-pads along with screen." +msgstr "" + +#: src/wswan/main.cpp:431 src/ngp/neopop.cpp:262 +msgid "Language games should display text in." +msgstr "" + +#: src/wswan/main.cpp:431 +msgid "" +"The only game this setting is known to affect is \"Digimon Tamers - Battle " +"Spirit\"." +msgstr "" + +#: src/wswan/main.cpp:432 +msgid "Name" +msgstr "" + +#: src/wswan/main.cpp:433 +msgid "Birth Year" +msgstr "" + +#: src/wswan/main.cpp:434 +msgid "Birth Month" +msgstr "" + +#: src/wswan/main.cpp:435 +msgid "Birth Day" +msgstr "" + +#: src/wswan/main.cpp:436 +msgid "Sex" +msgstr "" + +#: src/wswan/main.cpp:437 +msgid "Blood Type" +msgstr "" + +#: src/wswan/main.cpp:508 +msgid "WonderSwan ROM Image" +msgstr "" + +#: src/wswan/main.cpp:509 +msgid "WonderSwan Color ROM Image" +msgstr "" + +#: src/wswan/main.cpp:510 +msgid "WonderSwan Music Rip" +msgstr "" + +#: src/general.cpp:170 src/cdrom/CDAccess_Image.cpp:489 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting.\n" +msgstr "" + +#: src/state.cpp:658 src/state.cpp:805 +#, c-format +msgid "Module \"%s\" doesn't support save states." +msgstr "" + +#: src/state.cpp:667 src/state.cpp:677 +#, c-format +msgid "State %d save error." +msgstr "Error en el save state numero %d." + +#: src/state.cpp:688 +#, c-format +msgid "State %d saved." +msgstr "El save state numero %d se ha creado." + +#: src/state.cpp:820 +#, c-format +msgid "State %d load error." +msgstr "Error: No est posible cargar el save state numero %d." + +#: src/state.cpp:831 +#, c-format +msgid "State %d loaded." +msgstr "El save state numero %d se ha cargado." + +#: src/state.cpp:840 +#, c-format +msgid "State %d read error!" +msgstr "Error de lectura en el save state numero %d!" + +#: src/state.cpp:894 +msgid "Save state preview buffer" +msgstr "" + +#: src/state.cpp:946 +msgid "Save state status" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:51 +msgid "MMC [MODE SENSE 10] command failed." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:59 +msgid "MMC [MODE SENSE 10] command returned bogus data for mode page 0x2A." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:64 +msgid "Drive does not support reading Mode 2 Form 1 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:69 +msgid "Drive does not support reading Mode 2 Form 2 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:74 +msgid "Reading CD-DA sectors via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:79 +msgid "Read CD-DA sectors via \"READ CD\" are not positionally-accurate." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:84 +msgid "Reading raw subchannel data via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:137 +msgid "Error reading disc TOC." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:148 +#, c-format +msgid "Invalid first track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:153 +#, c-format +msgid "Invalid last track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:220 src/cdrom/CDAccess_Physical.cpp:234 +#, c-format +msgid "MMC Read Error; libcdio return code %d" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:257 +msgid "Connected physical devices:\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:269 +msgid "No CDROM drives detected(or no disc present)." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:281 +msgid "Unknown error opening physical CD" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:323 +#, c-format +msgid "Error ejecting medium;; libcdio return code %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:124 +#, c-format +msgid "TOC first(%d)/last(%d) track numbers bad." +msgstr "" + +#: src/cdrom/cdromif.cpp:257 +#, c-format +msgid "Sector %u read error: %s" +msgstr "" + +#: src/cdrom/cdromif.cpp:414 src/cdrom/cdromif.cpp:415 +#: src/cdrom/scsicd.cpp:514 src/cdrom/scsicd.cpp:515 +#, c-format +msgid "Uncorrectable data at sector %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:464 +#, c-format +msgid "Error on eject/insert attempt: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:227 src/cdrom/CDAccess_Image.cpp:498 +#, c-format +msgid "Could not open referenced file \"%s\": %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:281 +#, c-format +msgid "" +"Length specified in TOC file for track %d is too large by %ld sectors!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:372 +#, c-format +msgid "Invalid track number: %d" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:393 +#, c-format +msgid "Invalid track format: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:402 +msgid "\"RW\" format subchannel data not supported, only \"RW_RAW\" is!" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:459 src/cdrom/CDAccess_Image.cpp:469 +#, c-format +msgid "Command %s is outside of a TRACK definition!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:514 +#, c-format +msgid "Unsupported audio track file format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:519 +#, c-format +msgid "Unsupported track format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:553 +#, c-format +msgid "Invalid track format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:560 +#, c-format +msgid "Invalid track number: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:601 +#, c-format +msgid "Unsupported CUE sheet directive: \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:605 +#, c-format +msgid "Unknown CUE sheet directive \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:615 +msgid "No tracks found!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:809 +#, c-format +msgid "Could not find track for sector %u!" +msgstr "" + +#: src/cdrom/pcecd.cpp:446 +msgid "PCE ADPCM RAM" +msgstr "" + +#: src/cdrom/audioreader.cpp:142 +msgid "Error initializing MusePack decoder!\n" +msgstr "" + +#: src/FileWrapper.cpp:87 +#, c-format +msgid "Error duping file descriptor: %s" +msgstr "" + +#: src/FileWrapper.cpp:94 +#, c-format +msgid "Error during fdopen(): %s" +msgstr "" + +#: src/FileWrapper.cpp:127 src/FileWrapper.cpp:139 +#, c-format +msgid "Error opening file \"%s\" for \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:129 src/FileWrapper.cpp:141 +#, c-format +msgid "Error opening file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:169 +#, c-format +msgid "Error closing opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:187 src/FileWrapper.cpp:190 src/FileWrapper.cpp:233 +#, c-format +msgid "Error reading from opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:202 +#, c-format +msgid "Error flushing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:212 src/FileWrapper.cpp:258 src/FileWrapper.cpp:268 +#, c-format +msgid "Error writing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:294 +#, c-format +msgid "Error reading line in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:306 +#, c-format +msgid "Error seeking in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:318 +#, c-format +msgid "Error getting the size of opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:345 +#, c-format +msgid "Error getting position in opened file \"%s\": %s" +msgstr "" + +#: src/PSFLoader.cpp:225 +#, c-format +msgid "Not a PSF(version=0x%02x) file!" +msgstr "" + +#: src/PSFLoader.cpp:232 +#, c-format +msgid "PSF is missing at least %u bytes of data!" +msgstr "" + +#: src/PSFLoader.cpp:235 +msgid "PSF compressed CRC32 mismatch(data is corrupt)!" +msgstr "" + +#: src/PSFLoader.cpp:258 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting." +msgstr "" + +#: src/PSFLoader.cpp:286 +msgid "PSF decompressed size exceeds maximum allowed!" +msgstr "" + +#: src/PSFLoader.cpp:289 +msgid "PSF compressed data is bad." +msgstr "" + +#: src/psx/frontio.cpp:461 +#, c-format +msgid "" +"Memory card file \"%s\" is an incorrect size(%d bytes). The correct size is " +"%d bytes." +msgstr "" + +#: src/psx/gpu.cpp:1130 +msgid "VIDEO STANDARD MISMATCH" +msgstr "" + +#: src/psx/psx.cpp:1294 src/pce/pce.cpp:944 src/pcfx/pcfx.cpp:893 +msgid "Eject error." +msgstr "" + +#: src/psx/psx.cpp:1300 src/pce/pce.cpp:950 src/pcfx/pcfx.cpp:899 +msgid "Virtual CD Drive Tray Open" +msgstr "" + +#: src/psx/psx.cpp:1302 src/pce/pce.cpp:952 src/pcfx/pcfx.cpp:901 +msgid "Virtual CD Drive Tray Closed" +msgstr "" + +#: src/psx/psx.cpp:1324 src/pce/pce.cpp:973 src/pcfx/pcfx.cpp:922 +msgid "Disc absence selected." +msgstr "" + +#: src/psx/psx.cpp:1326 src/pce/pce.cpp:975 src/pcfx/pcfx.cpp:924 +#, c-format +msgid "Disc %d of %d selected." +msgstr "" + +#: src/psx/psx.cpp:1355 +msgid "PSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1356 +msgid "MiniPSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1357 src/psx/psx.cpp:1358 +msgid "PS-X Executable" +msgstr "" + +#: src/psx/psx.cpp:1364 +msgid "Japan" +msgstr "" + +#: src/psx/psx.cpp:1365 +msgid "North America" +msgstr "" + +#: src/psx/psx.cpp:1366 +msgid "Europe" +msgstr "" + +#: src/psx/psx.cpp:1372 +msgid "Attempt to auto-detect region of game." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Default region to use." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Used if region autodetection fails or is disabled." +msgstr "" + +#: src/psx/psx.cpp:1375 +msgid "Path to the Japan SCPH-5500 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "Path to the North America SCPH-5501 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "SHA1 0555c6fae8906f3f09baf5988f00e55f88e9f30b" +msgstr "" + +#: src/psx/psx.cpp:1377 +msgid "Path to the Europe SCPH-5502 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1379 +msgid "SPU output resampler quality." +msgstr "" + +#: src/psx/psx.cpp:1380 +msgid "" +"0 is lowest quality and CPU usage, 10 is highest quality and CPU usage. The " +"resampler that this setting refers to is used for converting from 44.1KHz to " +"the sampling rate of the host audio device Mednafen is using. Changing " +"Mednafen's output rate, via the \"sound.rate\" setting, to \"44100\" will " +"bypass the resampler, which will decrease CPU usage by Mednafen, and can " +"increase or decrease audio quality, depending on various operating system " +"and hardware factors." +msgstr "" + +#: src/mednafen.cpp:54 +msgid "Force monophonic sound output." +msgstr "" + +#: src/mednafen.cpp:55 +msgid "Enable (automatic) usage of this module." +msgstr "" + +#: src/mednafen.cpp:56 +msgid "Enable video temporal blur(50/50 previous/current frame by default)." +msgstr "" + +#: src/mednafen.cpp:57 +msgid "Accumulate color data rather than discarding it." +msgstr "" + +#: src/mednafen.cpp:58 +msgid "" +"Blur amount in accumulation mode, specified in percentage of accumulation " +"buffer to mix with the current frame." +msgstr "" + +#: src/mednafen.cpp:73 +msgid "" +"A fast codec, computationally, but will cause enormous file size and may " +"exceed your storage medium's sustained write rate." +msgstr "" + +#: src/mednafen.cpp:76 +msgid "A good balance between performance and compression ratio." +msgstr "" + +#: src/mednafen.cpp:79 +msgid "" +"Has a better compression ratio than \"cscd\", but is much more CPU " +"intensive. Use for compatibility with official QuickTime in cases where you " +"have insufficient disk space for \"raw\"." +msgstr "" + +#: src/mednafen.cpp:84 +msgid "See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:88 +msgid "Compressor to use with state rewinding" +msgstr "" + +#: src/mednafen.cpp:90 +msgid "Number of frames to keep states for when state rewinding is enabled." +msgstr "" + +#: src/mednafen.cpp:91 +msgid "" +"WARNING: Setting this to a large value may cause excessive RAM usage in some " +"circumstances, such as with games that stream large volumes of data off of " +"CDs." +msgstr "" + +#: src/mednafen.cpp:93 +msgid "Enable untrusted file-inclusion path security check." +msgstr "" + +#: src/mednafen.cpp:94 +msgid "" +"When this setting is set to \"1\", the default, paths to files referenced " +"from files like CUE sheets and PSF rips are checked for certain characters " +"that can be used in directory traversal, and if found, loading is aborted. " +"Set it to \"0\" if you want to allow constructs like absolute paths in CUE " +"sheets, but only if you understand the security implications of doing so(see " +"\"Security Issues\" section in the documentation)." +msgstr "" + +#: src/mednafen.cpp:96 +msgid "Path to directory for screen snapshots." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "Path to directory for save games and nonvolatile memory." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "" +"WARNING: Do not set this path to a directory that contains Famicom Disk " +"System disk images, or you will corrupt them when you load an FDS game and " +"exit Mednafen." +msgstr "" + +#: src/mednafen.cpp:98 +msgid "Path to directory for save states." +msgstr "" + +#: src/mednafen.cpp:99 +msgid "Path to directory for movies." +msgstr "" + +#: src/mednafen.cpp:100 +msgid "Path to directory for cheats." +msgstr "" + +#: src/mednafen.cpp:101 +msgid "Path to directory for custom palettes." +msgstr "" + +#: src/mednafen.cpp:102 +msgid "Path to directory for firmware." +msgstr "" + +#: src/mednafen.cpp:104 +msgid "Format string for movie filename." +msgstr "" + +#: src/mednafen.cpp:105 +msgid "Format string for state filename." +msgstr "" + +#: src/mednafen.cpp:106 +msgid "Format string for save games filename." +msgstr "" + +#: src/mednafen.cpp:106 +#, c-format +msgid "" +"WARNING: %x should always be included, otherwise you run the risk of " +"overwriting save data for games that create multiple save data files.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:107 +msgid "Format string for screen snapshot filenames." +msgstr "" + +#: src/mednafen.cpp:107 +#, c-format +msgid "" +"WARNING: %x or %p should always be included, otherwise there will be a " +"conflict between the numeric counter text file and the image data file.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:109 +msgid "Disable gzip compression when saving save states and backup memory." +msgstr "" + +#: src/mednafen.cpp:112 +msgid "Double the raw image's width if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:113 +msgid "Double the raw image's height if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:115 +msgid "Video codec to use." +msgstr "" + +#: src/mednafen.cpp:213 +#, c-format +msgid "Starting QuickTime recording to file \"%s\":\n" +msgstr "" + +#: src/mednafen.cpp:215 +#, c-format +msgid "Video width: %u\n" +msgstr "" + +#: src/mednafen.cpp:216 +#, c-format +msgid "Video height: %u\n" +msgstr "" + +#: src/mednafen.cpp:217 +#, c-format +msgid "Video codec: %s\n" +msgstr "" + +#: src/mednafen.cpp:218 +#, c-format +msgid "Sound rate: %u\n" +msgstr "" + +#: src/mednafen.cpp:219 +#, c-format +msgid "Sound channels: %u\n" +msgstr "" + +#: src/mednafen.cpp:400 +msgid "M3U CD Set" +msgstr "" + +#: src/mednafen.cpp:419 +#, c-format +msgid "M3U at \"%s\" references self." +msgstr "" + +#: src/mednafen.cpp:422 +msgid "M3U load recursion too deep!" +msgstr "" + +#: src/mednafen.cpp:441 +#, c-format +msgid "" +"Loading %s...\n" +"\n" +msgstr "" + +#: src/mednafen.cpp:441 +msgid "PHYSICAL CD" +msgstr "" + +#: src/mednafen.cpp:472 +msgid "Error opening CD." +msgstr "" + +#: src/mednafen.cpp:486 +#, c-format +msgid "CD %d Layout:\n" +msgstr "" + +#: src/mednafen.cpp:491 +#, c-format +msgid "Track %2d, LBA: %6d %s\n" +msgstr "" + +#: src/mednafen.cpp:567 src/mednafen.cpp:770 +#, c-format +msgid "Unrecognized system \"%s\"!" +msgstr "" + +#: src/mednafen.cpp:572 +msgid "Could not find a system that supports this CD." +msgstr "" + +#: src/mednafen.cpp:579 +#, c-format +msgid "Specified system \"%s\" doesn't support CDs!" +msgstr "" + +#: src/mednafen.cpp:583 src/mednafen.cpp:779 +#, c-format +msgid "" +"Using module: %s(%s)\n" +"\n" +msgstr "" + +#: src/mednafen.cpp:631 +#, c-format +msgid "Applying IPS file \"%s\"...\n" +msgstr "" + +#: src/mednafen.cpp:638 src/settings.cpp:343 +#, c-format +msgid "Failed: %s\n" +msgstr "" + +#: src/mednafen.cpp:644 +#, c-format +msgid "Error opening IPS file: %s\n" +msgstr "" + +#: src/mednafen.cpp:681 +#, c-format +msgid "Loading %s...\n" +msgstr "" + +#: src/mednafen.cpp:708 +msgid "game" +msgstr "" + +#: src/mednafen.cpp:737 +msgid "" +"Specified system only supports CD(physical, or image files, such as *.cue " +"and *.toc) loading." +msgstr "" + +#: src/mednafen.cpp:739 +msgid "Specified system does not support normal file loading." +msgstr "" + +#: src/mednafen.cpp:772 +msgid "Unrecognized file format. Sorry." +msgstr "" + +#: src/mednafen.cpp:1020 +#, c-format +msgid "Internal emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1021 +#, c-format +msgid "External emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1357 +msgid "Can't rewind during movie playback(yet!)." +msgstr "" + +#: src/mednafen.cpp:1362 +msgid "Silly-billy, can't rewind during netplay." +msgstr "" + +#: src/mednafen.cpp:1367 +msgid "Music player rewinding is unsupported." +msgstr "" + +#: src/mednafen.cpp:1645 +#, c-format +msgid "%s enabled." +msgstr "" + +#: src/mednafen.cpp:1647 +#, c-format +msgid "%s disabled." +msgstr "" + +#: src/gb/gb.cpp:327 +#, c-format +msgid "Warning: %lld byte(s) of trailing unused data.\n" +msgstr "" + +#: src/gb/gb.cpp:1962 src/gb/gb.cpp:1992 src/nes/fds.cpp:601 +msgid "Unknown" +msgstr "" + +#: src/gb/gb.cpp:1967 src/drivers/video.cpp:547 +msgid "None" +msgstr "" + +#: src/gb/gb.cpp:2076 +msgid "GB Color Map" +msgstr "" + +#: src/gb/gb.cpp:2095 src/lynx/system.cpp:233 src/pce/huc.cpp:227 +#: src/sms/cart.cpp:134 src/gba/GBA.cpp:749 +#, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "" + +#: src/gb/gb.cpp:2097 +#, c-format +msgid "Type: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2098 +#, c-format +msgid "RAM Size: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2099 +#, c-format +msgid "Version: 0x%02x\n" +msgstr "" + +#: src/gb/gb.cpp:2132 +msgid "Invalid ROM size" +msgstr "" + +#: src/gb/gb.cpp:2146 +msgid "Invalid RAM size" +msgstr "" + +#: src/gb/gb.cpp:2666 +msgid "Auto" +msgstr "" + +#: src/gb/gb.cpp:2666 +msgid "Automatic detection based on headers." +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "DMG" +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "Original GameBoy Monochrome." +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "CGB" +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "" +"GameBoy Color.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "AGB" +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "" +"GameBoy Advance.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2675 +msgid "Emulated GB type." +msgstr "" + +#: src/gb/gb.cpp:2722 +msgid "GameBoy ROM Image" +msgstr "" + +#: src/gb/gb.cpp:2723 src/gb/gb.cpp:2724 +msgid "GameBoy Color ROM Image" +msgstr "" + +#: src/nes/nsf.cpp:154 +msgid "NSF data" +msgstr "" + +#: src/nes/nsf.cpp:194 +msgid "NSF header" +msgstr "" + +#: src/nes/nsf.cpp:227 +msgid "Load address is invalid!" +msgstr "" + +#: src/nes/nsf.cpp:234 +msgid "Total number of songs is less than 1!" +msgstr "¡El número total de canciones es menos de 1!" + +#: src/nes/nsf.cpp:265 +msgid "" +"NSF Loaded. File information:\n" +"\n" +msgstr "" +"NSF est cargado. Informacin del archivo:\n" +"\n" + +#: src/nes/nsf.cpp:268 +#, c-format +msgid "Game/Album Name:\t%s\n" +msgstr "Juego/Nombre del lbum:\t%s\n" + +#: src/nes/nsf.cpp:270 +#, c-format +msgid "Music Artist:\t%s\n" +msgstr "Autor de la Musica:\t%s\n" + +#: src/nes/nsf.cpp:272 +#, c-format +msgid "Copyright:\t\t%s\n" +msgstr "Copyright:\t\t%s\n" + +#: src/nes/nsf.cpp:274 +#, c-format +msgid "Ripper:\t\t%s\n" +msgstr "Ripper:\t\t%s\n" + +#: src/nes/nsf.cpp:283 +#, c-format +msgid "Expansion hardware: %s\n" +msgstr "Expansin de hardware: %s\n" + +#: src/nes/nsf.cpp:289 +msgid "Bank-switched\n" +msgstr "Los bancos del NSF pueden ser intercambiados.\n" + +#: src/nes/nsf.cpp:290 +#, c-format +msgid "" +"Load address: $%04x\n" +"Init address: $%04x\n" +"Play address: $%04x\n" +msgstr "" +"La direccin de cargar: $%04x\n" +"La direccin de inicializar: $%04x\n" +"La direccin de tocar: $%04x\n" + +#: src/nes/nsf.cpp:292 +#, c-format +msgid "" +"Starting song: %d / %d\n" +"\n" +msgstr "" + +#: src/nes/nsf.cpp:295 src/nes/nsf.cpp:297 +msgid "NSF expansion RAM" +msgstr "" + +#: src/nes/unif.cpp:143 +#, c-format +msgid "Name/Attribute Table Mirroring: %s\n" +msgstr "" + +#: src/nes/unif.cpp:154 +msgid "Name: " +msgstr "" + +#: src/nes/unif.cpp:191 +#, c-format +msgid "Dumped by: %s\n" +msgstr "" + +#: src/nes/unif.cpp:192 +#, c-format +msgid "Dumped with: %s\n" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "January" +msgstr "Enero" + +#: src/nes/unif.cpp:194 +msgid "February" +msgstr "Febrero" + +#: src/nes/unif.cpp:194 +msgid "March" +msgstr "Marcha" + +#: src/nes/unif.cpp:194 +msgid "April" +msgstr "Abril" + +#: src/nes/unif.cpp:194 +msgid "May" +msgstr "Mayo" + +#: src/nes/unif.cpp:194 +msgid "June" +msgstr "Junio" + +#: src/nes/unif.cpp:194 +msgid "July" +msgstr "Julio" + +#: src/nes/unif.cpp:195 +msgid "August" +msgstr "Augusto" + +#: src/nes/unif.cpp:195 +msgid "September" +msgstr "Septiembre" + +#: src/nes/unif.cpp:195 +msgid "October" +msgstr "Octubre" + +#: src/nes/unif.cpp:195 +msgid "November" +msgstr "Noviembre" + +#: src/nes/unif.cpp:195 +msgid "December" +msgstr "Diciembre" + +#: src/nes/unif.cpp:196 +#, c-format +msgid "Dumped on: %s %d, %d\n" +msgstr "" + +#: src/nes/unif.cpp:244 +#, c-format +msgid "TV Standard Compatibility: %s\n" +msgstr "" + +#: src/nes/unif.cpp:251 src/nes/ines.cpp:696 +msgid "Battery-backed.\n" +msgstr "" + +#: src/nes/unif.cpp:274 +#, c-format +msgid "PRG ROM %d size: %d" +msgstr "" + +#: src/nes/unif.cpp:284 +#, c-format +msgid "Error reading PRG chunk %d" +msgstr "" + +#: src/nes/unif.cpp:302 +#, c-format +msgid "Board name: %s\n" +msgstr "" + +#: src/nes/unif.cpp:315 +#, c-format +msgid "CHR ROM %d size: %d" +msgstr "" + +#: src/nes/unif.cpp:325 +#, c-format +msgid "Error reading CHR chunk %d" +msgstr "" + +#: src/nes/unif.cpp:503 +msgid "Board type not supported." +msgstr "Tipo de PCB no est suportado." + +#: src/nes/unif.cpp:570 src/nes/ines.cpp:692 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "" + +#: src/nes/boards/mmc5.cpp:122 src/nes/boards/mmc1.cpp:340 +msgid ">8KB external WRAM present. Use UNIF if you hack the ROM image.\n" +msgstr "" + +#: src/nes/boards/mmc5.cpp:655 src/nes/boards/mmc5.cpp:785 +msgid "MMC5 EXRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:770 src/nes/ines.cpp:917 +msgid "WRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:779 +msgid "MMC5 Fill" +msgstr "" + +#: src/nes/boards/maxicart.cpp:98 +msgid "expansion RAM" +msgstr "" + +#: src/nes/boards/mmc3.cpp:1536 +msgid "" +"Low-G-Man can not work normally in the iNES format.\n" +"This game has been recognized by its CRC32 value, and the appropriate " +"changes will be made so it will run.\n" +"If you wish to hack this game, you should use the UNIF format for your " +"hack.\n" +"\n" +msgstr "" + +#: src/nes/cart.cpp:494 +msgid "Game Genie ROM image" +msgstr "ROM del Game Genie" + +#: src/nes/cart.cpp:499 +msgid "Game Genie ROM Image" +msgstr "" + +#: src/nes/cart.cpp:509 +msgid "Error reading from Game Genie ROM image!" +msgstr "Error de lectura de la ROM del Game Genie." + +#: src/nes/cart.cpp:539 +msgid "Game Genie Read Map Backup" +msgstr "" + +#: src/nes/cart.cpp:540 +msgid "Game Genie Write Map Backup" +msgstr "" + +#: src/nes/cart.cpp:752 +#, c-format +msgid "WRAM file \"%s\" cannot be written to.\n" +msgstr "No est posible escribir al archivo de la WRAM \"%s\".\n" + +#: src/nes/ines.cpp:368 +#, c-format +msgid "" +"The copy of the game you have loaded, \"%s\", is bad, and will not work " +"properly on Mednafen." +msgstr "" + +#: src/nes/ines.cpp:531 +msgid "" +"The iNES header contains incorrect information. For now, the information " +"will be corrected in RAM:\n" +msgstr "" + +#: src/nes/ines.cpp:534 +#, c-format +msgid "The mapper number should be set to %d.\n" +msgstr "" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Horizontal" +msgstr "" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Vertical" +msgstr "" + +#: src/nes/ines.cpp:539 +msgid "Four-screen" +msgstr "" + +#: src/nes/ines.cpp:541 +#, c-format +msgid "Mirroring should be set to \"%s\".\n" +msgstr "" + +#: src/nes/ines.cpp:545 +msgid "The battery-backed bit should be set.\n" +msgstr "" + +#: src/nes/ines.cpp:549 +msgid "This game should not have any CHR ROM. " +msgstr "" + +#: src/nes/ines.cpp:604 +msgid "No PRG ROM present!" +msgstr "" + +#: src/nes/ines.cpp:621 +msgid "PRG ROM data" +msgstr "" + +#: src/nes/ines.cpp:633 +msgid "CHR ROM data" +msgstr "" + +#: src/nes/ines.cpp:648 +msgid "Error reading trainer." +msgstr "" + +#: src/nes/ines.cpp:659 +msgid "Error reading PRG ROM data" +msgstr "" + +#: src/nes/ines.cpp:668 +msgid "Error reading CHR ROM data" +msgstr "" + +#: src/nes/ines.cpp:688 +#, c-format +msgid "PRG ROM: %3d x 16KiB\n" +msgstr "" + +#: src/nes/ines.cpp:689 +#, c-format +msgid "CHR ROM: %3d x 8KiB\n" +msgstr "" + +#: src/nes/ines.cpp:690 +#, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "" + +#: src/nes/ines.cpp:693 +#, c-format +msgid "Mapper: %d\n" +msgstr "" + +#: src/nes/ines.cpp:694 +#, c-format +msgid "Mirroring: %s\n" +msgstr "" + +#: src/nes/ines.cpp:694 +msgid "None(Four-screen)" +msgstr "" + +#: src/nes/ines.cpp:697 +msgid "Trained.\n" +msgstr "" + +#: src/nes/ines.cpp:905 src/nes/fds.cpp:682 +msgid "CHR RAM" +msgstr "" + +#: src/nes/ines.cpp:940 +#, c-format +msgid "iNES mapper %d is not supported!" +msgstr "" + +#: src/nes/ppu/palette.cpp:87 +msgid "File length is too short" +msgstr "" + +#: src/nes/nes.cpp:406 +msgid "Cannot use states in GG Screen." +msgstr "No puede usar los save states dentro del Game Genie." + +#: src/nes/nes.cpp:437 src/pce_fast/huc.cpp:320 src/drivers/main.cpp:244 +#: src/drivers/main.cpp:261 src/pce/pce.cpp:732 src/vb/vb.cpp:983 +msgid "Disabled" +msgstr "" + +#: src/nes/nes.cpp:440 +msgid "Composite Video" +msgstr "" + +#: src/nes/nes.cpp:441 +msgid "S-Video" +msgstr "" + +#: src/nes/nes.cpp:442 +msgid "RGB" +msgstr "" + +#: src/nes/nes.cpp:443 +msgid "Monochrome" +msgstr "" + +#: src/nes/nes.cpp:450 +msgid "Disable four-score emulation." +msgstr "" + +#: src/nes/nes.cpp:452 +msgid "Remove 8-sprites-per-scanline hardware limit." +msgstr "" + +#: src/nes/nes.cpp:453 +msgid "" +"WARNING: Enabling this option will cause graphical glitches in some games, " +"including \"Solstice\"." +msgstr "" + +#: src/nes/nes.cpp:455 +msgid "Sound quality." +msgstr "" + +#: src/nes/nes.cpp:456 +msgid "Output rate tolerance." +msgstr "" + +#: src/nes/nes.cpp:457 +msgid "" +"Enable less-accurate, but better sounding, Namco 106(mapper 19) sound " +"emulation." +msgstr "" + +#: src/nes/nes.cpp:458 +msgid "" +"Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation." +msgstr "" + +#: src/nes/nes.cpp:459 +msgid "" +"Warning: This option may break NES network play when enabled IF the players " +"are using ROM images with different filenames." +msgstr "" + +#: src/nes/nes.cpp:461 +msgid "Enable PAL(50Hz) NES emulation." +msgstr "" + +#: src/nes/nes.cpp:462 +msgid "Enable Game Genie emulation." +msgstr "" + +#: src/nes/nes.cpp:463 +msgid "Path to Game Genie ROM image." +msgstr "" + +#: src/nes/nes.cpp:464 +msgid "Clip left+right 8 pixel columns." +msgstr "" + +#: src/nes/nes.cpp:465 +msgid "First displayed scanline in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:466 +msgid "Last displayed scanlines in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:467 +msgid "First displayed scanline in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:468 +msgid "Last displayedscanlines in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:469 +msgid "Enable NTSC color generation and blitter." +msgstr "" + +#: src/nes/nes.cpp:470 +msgid "" +"NOTE: If your refresh rate isn't very close to 60.1Hz(+-0.1), you will need " +"to set the nes.ntsc.mergefields setting to \"1\" to avoid excessive " +"flickering." +msgstr "" + +#: src/nes/nes.cpp:473 +msgid "Video quality/type preset." +msgstr "" + +#: src/nes/nes.cpp:474 +msgid "Merge fields to partially work around !=60.1Hz refresh rates." +msgstr "" + +#: src/nes/nes.cpp:475 +msgid "NTSC composite blitter saturation." +msgstr "" + +#: src/nes/nes.cpp:476 +msgid "NTSC composite blitter hue." +msgstr "" + +#: src/nes/nes.cpp:477 +msgid "NTSC composite blitter sharpness." +msgstr "" + +#: src/nes/nes.cpp:478 +msgid "NTSC composite blitter brightness." +msgstr "" + +#: src/nes/nes.cpp:479 +msgid "NTSC composite blitter contrast." +msgstr "" + +#: src/nes/nes.cpp:481 +msgid "Enable NTSC custom decoder matrix." +msgstr "" + +#: src/nes/nes.cpp:484 +msgid "NTSC custom decoder matrix element 0(red, value * V)." +msgstr "" + +#: src/nes/nes.cpp:485 +msgid "NTSC custom decoder matrix element 1(red, value * U)." +msgstr "" + +#: src/nes/nes.cpp:486 +msgid "NTSC custom decoder matrix element 2(green, value * V)." +msgstr "" + +#: src/nes/nes.cpp:487 +msgid "NTSC custom decoder matrix element 3(green, value * U)." +msgstr "" + +#: src/nes/nes.cpp:488 +msgid "NTSC custom decoder matrix element 4(blue, value * V)." +msgstr "" + +#: src/nes/nes.cpp:489 +msgid "NTSC custom decoder matrix element 5(blue, value * U." +msgstr "" + +#: src/nes/fds.cpp:84 +#, c-format +msgid "Disk %1$d Side %2$s Inserted" +msgstr "El lado numero %2$s del disco numero %1$d est insertado." + +#: src/nes/fds.cpp:89 +#, c-format +msgid "Disk %1$d Side %2$s Ejected" +msgstr "El lado numero %2$s del disco numero %1$d est expulsado." + +#: src/nes/fds.cpp:105 +msgid "Eject disk before selecting." +msgstr "Expulse el disco antes de seleccionar el lado." + +#: src/nes/fds.cpp:109 +#, c-format +msgid "Disk %1$d Side %2$s Selected" +msgstr "El lado numero %2$s del disco numero %1$d est selectado." + +#: src/nes/fds.cpp:358 src/nes/fds.cpp:636 +msgid "FDS Disk Data" +msgstr "" + +#: src/nes/fds.cpp:641 +msgid "FDS BIOS" +msgstr "" + +#: src/nes/fds.cpp:649 src/nes/fds.cpp:665 +msgid "FDS BIOS ROM image is too small." +msgstr "" + +#: src/nes/fds.cpp:676 +msgid "FDS RAM" +msgstr "" + +#: src/nes/fds.cpp:693 +msgid "auxillary FDS data" +msgstr "" + +#: src/nes/fds.cpp:726 +#, c-format +msgid "Sides: %d\n" +msgstr "" + +#: src/nes/fds.cpp:727 +#, c-format +msgid "Manufacturer Code: %02x (%s)\n" +msgstr "" + +#: src/nes/fds.cpp:728 +#, c-format +msgid "MD5: 0x%s\n" +msgstr "" + +#: src/pce_fast/vdc.cpp:1574 +#, c-format +msgid "Error opening file: %m\n" +msgstr "" + +#: src/pce_fast/vdc.cpp:1589 src/pce/pce.cpp:299 src/gba/GBA.cpp:862 +msgid "Error reading file\n" +msgstr "" + +#: src/pce_fast/hes.cpp:57 src/pce/hes.cpp:62 +#, c-format +msgid "" +"Warning: HES is writing to physical address %08x. Future warnings of this " +"nature are temporarily disabled for this HES file.\n" +msgstr "" + +#: src/pce_fast/hes.cpp:79 src/pce_fast/hes.cpp:84 src/pce/hes.cpp:99 +#: src/pce/hes.cpp:104 +msgid "HES ROM" +msgstr "" + +#: src/pce_fast/hes.cpp:105 src/pce/hes.cpp:144 +#, c-format +msgid "" +"Warning: HES is trying to load more data than is present in the file(%u " +"attempted, %u left)!\n" +msgstr "" + +#: src/pce_fast/hes.cpp:113 src/pce/hes.cpp:152 +msgid "Warning: HES is trying to load data past boundary.\n" +msgstr "" + +#: src/pce_fast/huc.cpp:124 +#, c-format +msgid "ROM CRC32: 0x%04x\n" +msgstr "" + +#: src/pce_fast/huc.cpp:127 src/pce/huc.cpp:266 +msgid "HuCard ROM" +msgstr "" + +#: src/pce_fast/huc.cpp:191 src/pce/huc.cpp:399 +msgid "Tsushin Booster RAM" +msgstr "" + +#: src/pce_fast/huc.cpp:263 src/pce_fast/huc.cpp:264 src/pce_fast/pce.cpp:625 +#: src/pce/pce.cpp:672 src/pce/pce.cpp:673 src/pce/pce.cpp:1083 +msgid "PC Engine ROM Image" +msgstr "" + +#: src/pce_fast/huc.cpp:265 src/pce/pce.cpp:674 src/md/cd/cd.cpp:903 +#: src/md/cd/cd.cpp:904 src/gba/GBA.cpp:2549 +msgid "BIOS Image" +msgstr "" + +#: src/pce_fast/huc.cpp:271 src/pce/pce.cpp:690 +msgid "CD BIOS" +msgstr "" + +#: src/pce_fast/huc.cpp:317 +#, c-format +msgid "CD MD5(first 256KiB): 0x%s\n" +msgstr "" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +#, c-format +msgid "Arcade Card Emulation: %s\n" +msgstr "" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +msgid "Enabled" +msgstr "" + +#: src/pce_fast/huc.cpp:344 src/pce/huc.cpp:351 +#, c-format +msgid "Error creating %s object: %s" +msgstr "" + +#: src/pce_fast/pce.cpp:177 src/pce/pce.cpp:339 +#, c-format +msgid "CD-DA Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:180 src/pce/pce.cpp:342 +#, c-format +msgid "ADPCM Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:282 +#, c-format +msgid "CPU overclock: %dx\n" +msgstr "" + +#: src/pce_fast/pce.cpp:285 +#, c-format +msgid "CD-ROM speed: %ux\n" +msgstr "" + +#: src/pce_fast/pce.cpp:348 src/pce/pce.cpp:350 +#, c-format +msgid "CD PSG Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:599 src/md/system.cpp:517 +msgid "Correct the aspect ratio." +msgstr "" + +#: src/pce_fast/pce.cpp:600 src/pce/pce.cpp:1004 src/pcfx/pcfx.cpp:1079 +msgid "First rendered scanline." +msgstr "" + +#: src/pce_fast/pce.cpp:601 src/pce/pce.cpp:1005 src/pcfx/pcfx.cpp:1080 +msgid "Last rendered scanline." +msgstr "" + +#: src/pce_fast/pce.cpp:602 src/pcfx/pcfx.cpp:1067 +msgid "Mouse sensitivity." +msgstr "" + +#: src/pce_fast/pce.cpp:603 src/pce/pce.cpp:1010 +msgid "" +"If set, when RUN+SEL are pressed simultaneously, disable both buttons " +"temporarily." +msgstr "" + +#: src/pce_fast/pce.cpp:604 src/pce/pce.cpp:1015 +msgid "Force SuperGrafx emulation." +msgstr "" + +#: src/pce_fast/pce.cpp:605 src/pce/pce.cpp:1018 +msgid "Enable Arcade Card emulation." +msgstr "" + +#: src/pce_fast/pce.cpp:606 +msgid "CPU overclock multiplier." +msgstr "" + +#: src/pce_fast/pce.cpp:607 +msgid "CD-ROM data transfer speed multiplier." +msgstr "" + +#: src/pce_fast/pce.cpp:608 src/pce/pce.cpp:1021 src/pcfx/pcfx.cpp:1076 +msgid "Remove 16-sprites-per-scanline hardware limit." +msgstr "" + +#: src/pce_fast/pce.cpp:610 src/pce/pce.cpp:1024 src/md/system.cpp:515 +msgid "Path to the CD BIOS" +msgstr "" + +#: src/pce_fast/pce.cpp:611 +msgid "Enable lowpass filter dependent on playback-frequency." +msgstr "" + +#: src/pce_fast/pce.cpp:612 src/pce/pce.cpp:1032 +msgid "PSG volume when playing a CD game." +msgstr "" + +#: src/pce_fast/pce.cpp:613 src/pce/pce.cpp:1033 +msgid "CD-DA volume." +msgstr "" + +#: src/pce_fast/pce.cpp:614 src/pce/pce.cpp:1034 +msgid "ADPCM volume." +msgstr "" + +#: src/pce_fast/pce.cpp:626 src/pce/pce.cpp:1084 +msgid "PC Engine Music Rip" +msgstr "" + +#: src/pce_fast/pce.cpp:627 src/pce/pce.cpp:1085 +msgid "SuperGrafx ROM Image" +msgstr "" + +#: src/player.cpp:212 +msgid "Song:" +msgstr "Cancin:" + +#: src/ngp/rom.cpp:104 +#, c-format +msgid "Name: %s\n" +msgstr "" + +#: src/ngp/rom.cpp:105 +msgid "System: " +msgstr "" + +#: src/ngp/rom.cpp:108 +msgid "Color" +msgstr "" + +#: src/ngp/rom.cpp:110 +msgid "Greyscale" +msgstr "" + +#: src/ngp/rom.cpp:114 +#, c-format +msgid "Catalog: %d (sub %d)\n" +msgstr "" + +#: src/ngp/rom.cpp:119 +#, c-format +msgid "Starting PC: 0x%06X\n" +msgstr "" + +#: src/ngp/neopop.cpp:134 src/sms/cart.cpp:94 src/md/cart/cart.cpp:340 +msgid "Cart ROM" +msgstr "" + +#: src/ngp/neopop.cpp:338 +msgid "Neo Geo Pocket ROM Image" +msgstr "" + +#: src/ngp/neopop.cpp:339 +msgid "Neo Geo Pocket Color ROM Image" +msgstr "" + +#: src/video/tblur.cpp:40 +#, c-format +msgid "Video temporal frame blur enabled with accumulation: %f.\n" +msgstr "" + +#: src/video/tblur.cpp:45 +msgid "Video temporal frame blur enabled.\n" +msgstr "" + +#: src/video/video.cpp:69 +#, c-format +msgid "Screen snapshot %d saved." +msgstr "" + +#: src/video/video.cpp:79 src/video/video.cpp:80 +#, c-format +msgid "Error saving screen snapshot: %s" +msgstr "" + +#: src/drivers/sound.cpp:144 src/drivers/sound.cpp:273 +msgid "Error opening a sound device." +msgstr "" + +#: src/drivers/sound.cpp:243 +msgid "" +"\n" +"Initializing sound...\n" +msgstr "" + +#: src/drivers/sound.cpp:248 +#, c-format +msgid "" +"\n" +"Unknown sound driver \"%s\". Supported sound drivers:\n" +msgstr "" + +#: src/drivers/sound.cpp:264 +#, c-format +msgid "Using \"%s\" audio driver with SexyAL's default device selection." +msgstr "" + +#: src/drivers/sound.cpp:266 +#, c-format +msgid "Using \"%s\" audio driver with device \"%s\":" +msgstr "" + +#: src/drivers/sound.cpp:282 +msgid "Set rate is out of range [22050-1048576]" +msgstr "" + +#: src/drivers/sound.cpp:287 +#, c-format +msgid "" +"\n" +"Bits: %u\n" +"Rate: %u\n" +"Channels: %u\n" +"Byte order: CPU %s\n" +"Buffer size: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:288 +#, c-format +msgid "Latency: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:294 +#, c-format +msgid "Period size: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:299 +msgid "" +"Warning: Period time is too large(it should be <= ~5.333ms). Video will " +"appear very jerky.\n" +msgstr "" + +#: src/drivers/joystick.cpp:169 +#, c-format +msgid "Joystick %d - %s - Unique ID: %016llx\n" +msgstr "" + +#: src/drivers/joystick.cpp:172 +#, c-format +msgid "Could not open joystick %d: %s.\n" +msgstr "" + +#: src/drivers/video-state.cpp:166 +#, c-format +msgid "-recording movie %d-" +msgstr "" + +#: src/drivers/video-state.cpp:168 +#, c-format +msgid "-playing movie %d-" +msgstr "" + +#: src/drivers/video-state.cpp:170 +msgid "-select movie-" +msgstr "" + +#: src/drivers/video-state.cpp:175 +msgid "-select state-" +msgstr "-selecciona el save state-" + +#: src/drivers/help.cpp:40 +msgid "Toggle Help" +msgstr "" + +#: src/drivers/help.cpp:42 +msgid "Configure Command Key" +msgstr "" + +#: src/drivers/help.cpp:43 +msgid "Configure buttons on port n(1-5)" +msgstr "" + +#: src/drivers/help.cpp:44 +msgid "Select device on port n" +msgstr "" + +#: src/drivers/help.cpp:46 +msgid "Rotate Screen" +msgstr "" + +#: src/drivers/help.cpp:47 +msgid "Toggle Fullscreen Mode" +msgstr "" + +#: src/drivers/help.cpp:48 +msgid "Take Screen Snapshot" +msgstr "" + +#: src/drivers/help.cpp:50 +msgid "Enable state rewinding" +msgstr "" + +#: src/drivers/help.cpp:51 src/drivers/input.cpp:703 +msgid "Rewind" +msgstr "" + +#: src/drivers/help.cpp:52 +msgid "Save State" +msgstr "" + +#: src/drivers/help.cpp:53 +msgid "Select Disk" +msgstr "" + +#: src/drivers/help.cpp:54 +msgid "Load State" +msgstr "" + +#: src/drivers/help.cpp:55 +msgid "Insert coin; Insert/Eject disk" +msgstr "" + +#: src/drivers/help.cpp:57 +msgid "(Soft) Reset, if available on emulated system." +msgstr "" + +#: src/drivers/help.cpp:58 +msgid "Power Toggle/Hard Reset" +msgstr "" + +#: src/drivers/help.cpp:59 src/drivers/input.cpp:702 +msgid "Exit" +msgstr "" + +#: src/drivers/help.cpp:64 +msgid "Mednafen Quickie Help" +msgstr "" + +#: src/drivers/help.cpp:67 +msgid "Default key assignments:" +msgstr "" + +#: src/drivers/video.cpp:385 +msgid "Initializing video...\n" +msgstr "" + +#: src/drivers/video.cpp:454 +msgid "Could not load OpenGL library, disabling OpenGL usage!" +msgstr "" + +#: src/drivers/video.cpp:481 +msgid "Eep! Effective X scale setting is way too high. Correcting." +msgstr "" + +#: src/drivers/video.cpp:487 +msgid "Eep! Effective Y scale setting is way too high. Correcting." +msgstr "" + +#: src/drivers/video.cpp:526 +#, c-format +msgid "Video Driver: %s\n" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "OpenGL" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Overlay" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Software SDL" +msgstr "" + +#: src/drivers/video.cpp:528 +#, c-format +msgid "Video Mode: %d x %d x %d bpp\n" +msgstr "" + +#: src/drivers/video.cpp:531 +#, c-format +msgid "" +"Sorry, %dbpp modes are not supported by Mednafen. Supported bit depths are " +"16bpp, 24bpp, and 32bpp.\n" +msgstr "" + +#: src/drivers/video.cpp:542 +#, c-format +msgid "Pixel shader: %s\n" +msgstr "" + +#: src/drivers/video.cpp:546 +#, c-format +msgid "Fullscreen: %s\n" +msgstr "" + +#: src/drivers/video.cpp:546 +msgid "Yes" +msgstr "" + +#: src/drivers/video.cpp:546 +msgid "No" +msgstr "" + +#: src/drivers/video.cpp:547 +#, c-format +msgid "Special Scaler: %s\n" +msgstr "" + +#: src/drivers/video.cpp:550 +msgid "Scanlines: Off\n" +msgstr "" + +#: src/drivers/video.cpp:552 +#, c-format +msgid "Scanlines: %d%% opacity\n" +msgstr "" + +#: src/drivers/video.cpp:554 +#, c-format +msgid "Destination Rectangle: X=%d, Y=%d, W=%d, H=%d\n" +msgstr "" + +#: src/drivers/video.cpp:559 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. This is ok if " +"you really do want the clipping...\n" +msgstr "" + +#: src/drivers/video.cpp:561 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. The rectangle " +"will be adjusted to fit within the screen area.\n" +msgstr "" + +#: src/drivers/opengl.cpp:320 +msgid "OpenGL dummy black texture data" +msgstr "" + +#: src/drivers/opengl.cpp:550 +#, c-format +msgid "Error getting proc address for: %s\n" +msgstr "" + +#: src/drivers/opengl.cpp:608 +#, c-format +msgid "OpenGL Implementation: %s %s %s\n" +msgstr "" + +#: src/drivers/opengl.cpp:612 +msgid "Checking extensions:\n" +msgstr "" + +#: src/drivers/opengl.cpp:619 +msgid "GL_ARB_texture_non_power_of_two found.\n" +msgstr "" + +#: src/drivers/opengl.cpp:645 +#, c-format +msgid "Invalid pixel shader type: %s\n" +msgstr "" + +#: src/drivers/opengl.cpp:683 +msgid "Using non-power-of-2 sized textures.\n" +msgstr "" + +#: src/drivers/opengl.cpp:685 +msgid "Using power-of-2 sized textures.\n" +msgstr "" + +#: src/drivers/opengl.cpp:783 +msgid "Checking maximum texture size...\n" +msgstr "" + +#: src/drivers/opengl.cpp:801 +#, c-format +msgid "Apparently it is at least: %d x %d\n" +msgstr "" + +#: src/drivers/opengl.cpp:805 +msgid "" +"Warning: Maximum texture size is reported as being less than 256, but we " +"can't handle that.\n" +msgstr "" + +#: src/drivers/opengl.cpp:829 +msgid "Using GL_RGBA, GL_UNSIGNED_BYTE for texture source data.\n" +msgstr "" + +#: src/drivers/opengl.cpp:839 +msgid "Using GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV for texture source data.\n" +msgstr "" + +#: src/drivers/input.cpp:530 +msgid "Cannot change input device during netplay." +msgstr "" + +#: src/drivers/input.cpp:534 +msgid "Cannot change input device while state rewinding is active." +msgstr "" + +#: src/drivers/input.cpp:553 +#, c-format +msgid "%s selected on port %d" +msgstr "" + +#: src/drivers/input.cpp:640 +msgid "Save state" +msgstr "" + +#: src/drivers/input.cpp:641 +msgid "Load state" +msgstr "" + +#: src/drivers/input.cpp:642 +msgid "Save movie" +msgstr "" + +#: src/drivers/input.cpp:643 +msgid "Load movie" +msgstr "" + +#: src/drivers/input.cpp:644 +msgid "Toggle state rewind functionality" +msgstr "" + +#: src/drivers/input.cpp:646 +msgid "Save state 0 select" +msgstr "" + +#: src/drivers/input.cpp:647 +msgid "Save state 1 select" +msgstr "" + +#: src/drivers/input.cpp:648 +msgid "Save state 2 select" +msgstr "" + +#: src/drivers/input.cpp:649 +msgid "Save state 3 select" +msgstr "" + +#: src/drivers/input.cpp:650 +msgid "Save state 4 select" +msgstr "" + +#: src/drivers/input.cpp:651 +msgid "Save state 5 select" +msgstr "" + +#: src/drivers/input.cpp:652 +msgid "Save state 6 select" +msgstr "" + +#: src/drivers/input.cpp:653 +msgid "Save state 7 select" +msgstr "" + +#: src/drivers/input.cpp:654 +msgid "Save state 8 select" +msgstr "" + +#: src/drivers/input.cpp:655 +msgid "Save state 9 select" +msgstr "" + +#: src/drivers/input.cpp:657 +msgid "Movie 0 select" +msgstr "" + +#: src/drivers/input.cpp:658 +msgid "Movie 1 select" +msgstr "" + +#: src/drivers/input.cpp:659 +msgid "Movie 2 select" +msgstr "" + +#: src/drivers/input.cpp:660 +msgid "Movie 3 select" +msgstr "" + +#: src/drivers/input.cpp:661 +msgid "Movie 4 select" +msgstr "" + +#: src/drivers/input.cpp:662 +msgid "Movie 5 select" +msgstr "" + +#: src/drivers/input.cpp:663 +msgid "Movie 6 select" +msgstr "" + +#: src/drivers/input.cpp:664 +msgid "Movie 7 select" +msgstr "" + +#: src/drivers/input.cpp:665 +msgid "Movie 8 select" +msgstr "" + +#: src/drivers/input.cpp:666 +msgid "Movie 9 select" +msgstr "" + +#: src/drivers/input.cpp:668 +msgid "Toggle graphics layer 1" +msgstr "" + +#: src/drivers/input.cpp:669 +msgid "Toggle graphics layer 2" +msgstr "" + +#: src/drivers/input.cpp:670 +msgid "Toggle graphics layer 3" +msgstr "" + +#: src/drivers/input.cpp:671 +msgid "Toggle graphics layer 4" +msgstr "" + +#: src/drivers/input.cpp:672 +msgid "Toggle graphics layer 5" +msgstr "" + +#: src/drivers/input.cpp:673 +msgid "Toggle graphics layer 6" +msgstr "" + +#: src/drivers/input.cpp:674 +msgid "Toggle graphics layer 7" +msgstr "" + +#: src/drivers/input.cpp:675 +msgid "Toggle graphics layer 8" +msgstr "" + +#: src/drivers/input.cpp:676 +msgid "Toggle graphics layer 9" +msgstr "" + +#: src/drivers/input.cpp:678 +msgid "Take screen snapshot" +msgstr "" + +#: src/drivers/input.cpp:679 +msgid "Toggle fullscreen mode" +msgstr "" + +#: src/drivers/input.cpp:680 +msgid "Fast-forward" +msgstr "" + +#: src/drivers/input.cpp:681 +msgid "Slow-forward" +msgstr "" + +#: src/drivers/input.cpp:683 +msgid "Insert coin" +msgstr "" + +#: src/drivers/input.cpp:684 +msgid "Toggle DIP switch view" +msgstr "" + +#: src/drivers/input.cpp:685 +msgid "Select disk/disc" +msgstr "" + +#: src/drivers/input.cpp:686 +msgid "Insert/Eject disk/disc" +msgstr "" + +#: src/drivers/input.cpp:687 +msgid "Activate barcode(for Famicom)" +msgstr "" + +#: src/drivers/input.cpp:688 +msgid "Grab input" +msgstr "" + +#: src/drivers/input.cpp:689 +msgid "Grab input and disable commands" +msgstr "" + +#: src/drivers/input.cpp:690 +msgid "Configure buttons on virtual port 1" +msgstr "" + +#: src/drivers/input.cpp:691 +msgid "Configure buttons on virtual port 2" +msgstr "" + +#: src/drivers/input.cpp:692 +msgid "Configure buttons on virtual port 3" +msgstr "" + +#: src/drivers/input.cpp:693 +msgid "Configure buttons on virtual port 4" +msgstr "" + +#: src/drivers/input.cpp:694 +msgid "Configure buttons on virtual port 5" +msgstr "" + +#: src/drivers/input.cpp:695 +msgid "Configure buttons on virtual port 6" +msgstr "" + +#: src/drivers/input.cpp:696 +msgid "Configure buttons on virtual port 7" +msgstr "" + +#: src/drivers/input.cpp:697 +msgid "Configure buttons on virtual port 8" +msgstr "" + +#: src/drivers/input.cpp:698 +msgid "Configure command key" +msgstr "" + +#: src/drivers/input.cpp:700 +msgid "Reset" +msgstr "" + +#: src/drivers/input.cpp:701 +msgid "Power toggle" +msgstr "" + +#: src/drivers/input.cpp:704 +msgid "Rotate screen" +msgstr "" + +#: src/drivers/input.cpp:706 +msgid "Toggle netplay console" +msgstr "" + +#: src/drivers/input.cpp:707 +msgid "Advance frame" +msgstr "" + +#: src/drivers/input.cpp:708 +msgid "Return to normal mode after advancing frames" +msgstr "" + +#: src/drivers/input.cpp:709 +msgid "Toggle cheat console" +msgstr "" + +#: src/drivers/input.cpp:710 +msgid "Enable/Disable cheats" +msgstr "" + +#: src/drivers/input.cpp:711 +msgid "Toggle frames-per-second display" +msgstr "" + +#: src/drivers/input.cpp:712 +msgid "Toggle debugger" +msgstr "" + +#: src/drivers/input.cpp:713 +msgid "Decrease selected save state slot by 1" +msgstr "" + +#: src/drivers/input.cpp:714 +msgid "Increase selected save state slot by 1" +msgstr "" + +#: src/drivers/input.cpp:715 +msgid "Toggle help screen" +msgstr "" + +#: src/drivers/input.cpp:716 +msgid "Select virtual device on virtual input port 1" +msgstr "" + +#: src/drivers/input.cpp:717 +msgid "Select virtual device on virtual input port 2" +msgstr "" + +#: src/drivers/input.cpp:718 +msgid "Select virtual device on virtual input port 3" +msgstr "" + +#: src/drivers/input.cpp:719 +msgid "Select virtual device on virtual input port 4" +msgstr "" + +#: src/drivers/input.cpp:720 +msgid "Select virtual device on virtual input port 5" +msgstr "" + +#: src/drivers/input.cpp:721 +msgid "Select virtual device on virtual input port 6" +msgstr "" + +#: src/drivers/input.cpp:722 +msgid "Select virtual device on virtual input port 7" +msgstr "" + +#: src/drivers/input.cpp:723 +msgid "Select virtual device on virtual input port 8" +msgstr "" + +#: src/drivers/input.cpp:950 +msgid "Configuration interrupted." +msgstr "" + +#: src/drivers/input.cpp:968 src/drivers/input.cpp:1613 +msgid "Configuration finished." +msgstr "" + +#: src/drivers/input.cpp:979 +msgid "Press command key to remap now..." +msgstr "" + +#: src/drivers/input.cpp:995 +msgid "Input grabbing enabled." +msgstr "" + +#: src/drivers/input.cpp:997 +msgid "Input grabbing disabled." +msgstr "" + +#: src/drivers/input.cpp:1013 +msgid "Command processing disabled." +msgstr "" + +#: src/drivers/input.cpp:1015 +msgid "Command processing enabled." +msgstr "" + +#: src/drivers/input.cpp:1040 +msgid "Application of cheats enabled." +msgstr "" + +#: src/drivers/input.cpp:1042 +msgid "Application of cheats disabled." +msgstr "" + +#: src/drivers/input.cpp:1073 +#, c-format +msgid "No buttons to configure for input port %d!" +msgstr "" + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality enabled." +msgstr "" + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality disabled." +msgstr "" + +#: src/drivers/input.cpp:1285 +msgid "Barcode Entered" +msgstr "" + +#: src/drivers/input.cpp:1287 +msgid "Enter Barcode" +msgstr "" + +#: src/drivers/input.cpp:1293 +#, c-format +msgid "Barcode: %s" +msgstr "" + +#: src/drivers/main.cpp:61 +msgid "Full-screen horizontal resolution." +msgstr "" + +#: src/drivers/main.cpp:62 +msgid "Full-screen vertical resolution." +msgstr "" + +#: src/drivers/main.cpp:63 +msgid "" +"A value of \"0\" will cause the desktop horizontal resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:64 +msgid "A value of \"0\" will cause the desktop vertical resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:66 +msgid "Scaling factor for the X axis." +msgstr "" + +#: src/drivers/main.cpp:67 +msgid "Scaling factor for the Y axis." +msgstr "" + +#: src/drivers/main.cpp:69 +msgid "Scaling factor for the X axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:70 +msgid "Scaling factor for the Y axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:71 +msgid "" +"For this settings to have any effect, the \".stretch\" setting must " +"be set to \"0\"." +msgstr "" + +#: src/drivers/main.cpp:73 +msgid "Enable scanlines with specified opacity." +msgstr "" + +#: src/drivers/main.cpp:74 +msgid "" +"Opacity is specified in %; IE a value of \"100\" will give entirely black " +"scanlines." +msgstr "" + +#: src/drivers/main.cpp:76 +msgid "Stretch to fill screen." +msgstr "" + +#: src/drivers/main.cpp:77 +msgid "Enable (bi)linear interpolation." +msgstr "" + +#: src/drivers/main.cpp:80 +msgid "Enable specified special video scaler." +msgstr "" + +#: src/drivers/main.cpp:81 +msgid "" +"The destination rectangle is NOT altered by this setting, so if you have " +"xscale and yscale set to \"2\", and try to use a 3x scaling filter like " +"hq3x, the image is not going to look that great. The nearest-neighbor " +"scalers are intended for use with bilinear interpolation enabled, at high " +"resolutions(such as 1280x1024; nn2x(or nny2x) + bilinear interpolation + " +"fullscreen stretching at this resolution looks quite nice)." +msgstr "" + +#: src/drivers/main.cpp:83 +msgid "Enable specified OpenGL pixel shader." +msgstr "" + +#: src/drivers/main.cpp:84 +msgid "" +"Obviously, this will only work with the OpenGL \"video.driver\" setting, and " +"only on cards and OpenGL implementations that support pixel shaders, " +"otherwise you will get a black screen, or Mednafen may display an error " +"message when starting up. Bilinear interpolation is disabled with pixel " +"shaders, and any interpolation, if present, will be noted in the description " +"of each pixel shader." +msgstr "" + +#: src/drivers/main.cpp:93 +msgid "This output method is preferred, as all features are available with it." +msgstr "" + +#: src/drivers/main.cpp:94 +msgid "" +"Slower with lower-quality scaling than OpenGL, but if you don't have " +"hardware-accelerated OpenGL rendering, it will be faster than software " +"OpenGL rendering. Bilinear interpolation not available. Pixel shaders do not " +"work with this output method, of course." +msgstr "" + +#: src/drivers/main.cpp:95 +msgid "" +"As fast as OpenGL, perhaps faster in some situations, *if* it's hardware-" +"accelerated. Scanline effects are not available. hq2x, hq3x, hq4x are not " +"available. The OSD may be missing or glitchy. Bilinear interpolation can't " +"be turned off. Harsh chroma subsampling blurring in some picture types. If " +"you use this output method, it is strongly recommended to use a special " +"scaler with it, such as nn2x." +msgstr "" + +#: src/drivers/main.cpp:102 +msgid "Default sound driver." +msgstr "" + +#: src/drivers/main.cpp:104 +msgid "A recommended driver, and the default for Linux(if available)." +msgstr "" + +#: src/drivers/main.cpp:105 +msgid "" +"A recommended driver, and the default for non-Linux UN*X/POSIX/BSD systems, " +"or anywhere ALSA is unavailable. If the ALSA driver gives you problems, you " +"can try using this one instead.\n" +"\n" +"If you are using OSSv4 or newer, you should edit \"/usr/lib/oss/conf/osscore." +"conf\", uncomment the max_intrate= line, and change the value from 100" +"(default) to 1000(or higher if you know what you're doing), and restart OSS. " +"Otherwise, performance will be poor, and the sound buffer size in Mednafen " +"will be orders of magnitude larger than specified.\n" +"\n" +"If the sound buffer size is still excessively larger than what is specified " +"via the \"sound.buffer_time\" setting, you can try setting \"sound." +"period_time\" to 2666, and as a last resort, 5333, to work around a design " +"flaw/limitation/choice in the OSS API and OSS implementation." +msgstr "" + +#: src/drivers/main.cpp:106 +msgid "A recommended driver, and the default for Microsoft Windows." +msgstr "" + +#: src/drivers/main.cpp:107 +msgid "" +"This driver is not recommended, but it serves as a backup driver if the " +"others aren't available. Its performance is generally sub-par, requiring " +"higher latency or faster CPUs/SMP for glitch-free playback, except where the " +"OS provides a sound callback API itself, such as with Mac OS X and BeOS." +msgstr "" + +#: src/drivers/main.cpp:108 +msgid "" +"Somewhat experimental driver, unusably buggy until Mednafen 0.8.C. The " +"\"sound.buffer_time\" setting controls the size of the local sound buffer, " +"not the server's sound buffer, and the latency reported during startup is " +"for the local sound buffer only. Please note that video card drivers(in the " +"kernel or X), and hardware-accelerated OpenGL, may interfere with jackd's " +"ability to effectively run with realtime response." +msgstr "" + +#: src/drivers/main.cpp:139 +msgid "" +"Will automatically interpolate on each axis if the corresponding effective " +"scaling factor is not an integer." +msgstr "" + +#: src/drivers/main.cpp:140 +msgid "" +"Same as \"autoip\", but when interpolation is done, it is done in a manner " +"that will reduce blurriness if possible." +msgstr "" + +#: src/drivers/main.cpp:157 +msgid "Server hostname." +msgstr "" + +#: src/drivers/main.cpp:158 +msgid "Server port." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Server password." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Password to connect to the netplay server." +msgstr "" + +#: src/drivers/main.cpp:160 +msgid "Local player count." +msgstr "" + +#: src/drivers/main.cpp:160 +msgid "Number of local players for network play." +msgstr "" + +#: src/drivers/main.cpp:161 +msgid "Nickname." +msgstr "" + +#: src/drivers/main.cpp:161 +msgid "Nickname to use for network play chat." +msgstr "" + +#: src/drivers/main.cpp:162 +msgid "Key to hash with the MD5 hash of the game." +msgstr "" + +#: src/drivers/main.cpp:163 +msgid "Merge input to this player # on the server." +msgstr "" + +#: src/drivers/main.cpp:164 +msgid "Use small(tiny!) font for netplay chat console." +msgstr "" + +#: src/drivers/main.cpp:166 +msgid "Enable fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:167 +msgid "Select video driver, \"opengl\" or \"sdl\"." +msgstr "" + +#: src/drivers/main.cpp:168 +msgid "Attempt to synchronize OpenGL page flips to vertical retrace period." +msgstr "" + +#: src/drivers/main.cpp:169 +msgid "" +"Note: Additionally, if the environment variable \"__GL_SYNC_TO_VBLANK\" does " +"not exist, then it will be created and set to the value specified for this " +"setting. This has the effect of forcibly enabling or disabling vblank " +"synchronization when running under Linux with NVidia's drivers." +msgstr "" + +#: src/drivers/main.cpp:172 +msgid "Enable frameskip during emulation rendering." +msgstr "" + +#: src/drivers/main.cpp:173 +msgid "Disable for rendering code performance testing." +msgstr "" + +#: src/drivers/main.cpp:175 +msgid "Fast-forwarding speed multiplier." +msgstr "" + +#: src/drivers/main.cpp:176 +msgid "Treat the fast-forward button as a toggle." +msgstr "" + +#: src/drivers/main.cpp:177 +msgid "Silence sound output when fast-forwarding." +msgstr "" + +#: src/drivers/main.cpp:179 +msgid "SLOW-forwarding speed multiplier." +msgstr "" + +#: src/drivers/main.cpp:180 +msgid "Treat the SLOW-forward button as a toggle." +msgstr "" + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency." +msgstr "" + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency = GameSystemFrameRateHz / (value + 1)" +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Analog axis press threshold." +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Threshold for detecting a \"button\" press on analog axis, in percent." +msgstr "" + +#: src/drivers/main.cpp:184 +msgid "Dangerous key action delay." +msgstr "" + +#: src/drivers/main.cpp:184 +msgid "" +"The length of time, in milliseconds, that a button/key corresponding to a " +"\"dangerous\" command like power, reset, exit, etc. must be pressed before " +"the command is executed." +msgstr "" + +#: src/drivers/main.cpp:185 +msgid "Disable speed throttling when sound is disabled." +msgstr "" + +#: src/drivers/main.cpp:186 +msgid "Automatic load/save state on game load/save." +msgstr "" + +#: src/drivers/main.cpp:186 +msgid "" +"Automatically save and load save states when a game is closed or loaded, " +"respectively." +msgstr "" + +#: src/drivers/main.cpp:187 +msgid "Select sound driver." +msgstr "" + +#: src/drivers/main.cpp:187 +msgid "" +"The following choices are possible, sorted by preference, high to low, when " +"\"default\" driver is used, but dependent on being compiled in." +msgstr "" + +#: src/drivers/main.cpp:188 +msgid "Select sound output device." +msgstr "" + +#: src/drivers/main.cpp:189 +msgid "Sound volume level, in percent." +msgstr "" + +#: src/drivers/main.cpp:190 +msgid "Enable sound output." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "Desired period size in microseconds." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "" +"Currently only affects OSS and ALSA output. A value of 0 defers to the " +"default in the driver code in SexyAL.\n" +"\n" +"Note: This is not the \"sound buffer size\" setting, that would be \"sound." +"buffer_time\"." +msgstr "" + +#: src/drivers/main.cpp:192 +msgid "Desired total buffer size in milliseconds." +msgstr "" + +#: src/drivers/main.cpp:199 +msgid "Specifies the sound playback rate, in sound frames per second(\"Hz\")." +msgstr "" + +#: src/drivers/main.cpp:202 +msgid "Automatically go into the debugger's step mode after a game is loaded." +msgstr "" + +#: src/drivers/main.cpp:205 +msgid "" +"The length of time, in milliseconds, to display the save state or the movie " +"selector after selecting a state or movie." +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full" +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full-screen stretch, disregarding aspect ratio." +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "Aspect Preserve" +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "" +"Full-screen stretch as far as the aspect ratio(in this sense, the equivalent " +"xscalefs == yscalefs) can be maintained." +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "Aspect Preserve + Integer Scale" +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "" +"Full-screen stretch, same as \"aspect\" except that the equivalent xscalefs " +"and yscalefs are rounded down to the nearest integer." +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "Aspect Preserve + Integer Multiple-of-2 Scale" +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "" +"Full-screen stretch, same as \"aspect_int\", but rounds down to the nearest " +"multiple of 2." +msgstr "" + +#: src/drivers/main.cpp:263 +msgid "Bilinear" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Linear (X)" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Interpolation only on the X axis." +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Linear (Y)" +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Interpolation only on the Y axis." +msgstr "" + +#: src/drivers/main.cpp:283 +msgid "Disassembly font size." +msgstr "" + +#: src/drivers/main.cpp:286 +msgid "Character encoding for the debugger's memory editor." +msgstr "" + +#: src/drivers/main.cpp:480 +msgid "How DARE you interrupt me!\n" +msgstr "" + +#: src/drivers/main.cpp:484 +msgid "MUST TERMINATE ALL HUMANS\n" +msgstr "" + +#: src/drivers/main.cpp:488 +msgid "Reach out and hang-up on someone.\n" +msgstr "" + +#: src/drivers/main.cpp:492 +msgid "" +"Iyeeeeeeeee!!! A segmentation fault has occurred. Have a fluffy day.\n" +msgstr "" + +#: src/drivers/main.cpp:496 +msgid "The pipe has broken! Better watch out for floods...\n" +msgstr "" + +#: src/drivers/main.cpp:501 +msgid "I told you to be nice to the driver.\n" +msgstr "Le dije ser agradable al conductor.\n" + +#: src/drivers/main.cpp:505 +msgid "Those darn floating points. Ne'er know when they'll bite!\n" +msgstr "Ésos maldijeron comas flotantes. ¡Usted nunca sabe cuándo morderán!\n" + +#: src/drivers/main.cpp:509 +msgid "Don't throw your clock at the meowing cats!\n" +msgstr "¡No lance su reloj en los gatos ruidosos!\n" + +#: src/drivers/main.cpp:513 +msgid "Abort, Retry, Ignore, Fail?\n" +msgstr "" + +#: src/drivers/main.cpp:517 src/drivers/main.cpp:521 +msgid "Killing your processes is not nice.\n" +msgstr "" + +#: src/drivers/main.cpp:531 +msgid "" +"\n" +"Signal has been caught and dealt with: " +msgstr "" + +#: src/drivers/main.cpp:656 +msgid "Show help!" +msgstr "" + +#: src/drivers/main.cpp:657 +msgid "Enable remote mode(EXPERIMENTAL AND INCOMPLETE)." +msgstr "" + +#: src/drivers/main.cpp:659 +msgid "Load and boot a CD for the specified system." +msgstr "" + +#: src/drivers/main.cpp:661 +msgid "Force usage of specified emulation module." +msgstr "" + +#: src/drivers/main.cpp:663 +msgid "Record sound output to the specified filename in the MS WAV format." +msgstr "" + +#: src/drivers/main.cpp:664 +msgid "" +"Record video and audio output to the specified filename in the QuickTime " +"format." +msgstr "" + +#: src/drivers/main.cpp:666 +msgid "Dump settings definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:667 +msgid "Dump modules definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:671 +msgid "Connect to the remote server and start network play." +msgstr "" + +#: src/drivers/main.cpp:676 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]\n" +msgstr "" + +#: src/drivers/main.cpp:679 +#, c-format +msgid "" +"No command-line arguments specified.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:681 +#, c-format +msgid "" +"\tPlease refer to the documentation for option parameters and usage.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:694 +#, c-format +msgid "" +"Each setting(listed in the documentation) can also be passed as an argument " +"by prefixing the name with a hyphen,\n" +"and specifying the value to change the setting to as the next argument.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:695 +#, c-format +msgid "" +"For example:\n" +"\t%s -pce.xres 1680 -pce.yres 1050 -pce.stretch aspect -pce.pixshader " +"ipsharper \"Hyper Bonk Soldier.pce\"\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:696 +#, c-format +msgid "" +"Settings specified in this manner are automatically saved to the " +"configuration file, hence they\n" +"do not need to be passed to future invocations of the Mednafen executable.\n" +msgstr "" + +#: src/drivers/main.cpp:712 +msgid "No game filename specified!" +msgstr "" + +#: src/drivers/main.cpp:1388 +#, c-format +msgid "Compiled with gcc %s\n" +msgstr "" + +#: src/drivers/main.cpp:1396 +#, c-format +msgid "Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n" +msgstr "" + +#: src/drivers/main.cpp:1406 +#, c-format +msgid "Running with %s\n" +msgstr "" + +#: src/drivers/main.cpp:1413 +#, c-format +msgid "Compiled against zlib %s, running with zlib %s\n" +msgstr "" + +#: src/drivers/main.cpp:1494 +#, c-format +msgid "Starting Mednafen %s\n" +msgstr "Mednafen %s está comenzando\n" + +#: src/drivers/main.cpp:1497 +msgid "Build information:\n" +msgstr "" + +#: src/drivers/main.cpp:1505 +#, c-format +msgid "Base directory: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1529 +#, c-format +msgid "Could not create mutex: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1567 +#, c-format +msgid "Error creating directories: %s\n" +msgstr "" + +#: src/drivers/netplay.cpp:245 +msgid "*** Error intializing SDL_net!" +msgstr "" + +#: src/drivers/netplay.cpp:256 +#, c-format +msgid "*** Error resolving host \"%s\"!" +msgstr "" + +#: src/drivers/netplay.cpp:263 +#, c-format +msgid "*** Error connecting to remote host \"%s\" on port %u!" +msgstr "" + +#: src/drivers/netplay.cpp:267 +msgid "*** Sending initialization data to server." +msgstr "" + +#: src/drivers/netplay.cpp:275 +msgid "*** Connection established." +msgstr "" + +#: src/lynx/system.cpp:382 +msgid "Virtually rotate D-pad along with screen." +msgstr "" + +#: src/lynx/system.cpp:383 +msgid "Enable sound output lowpass filter." +msgstr "" + +#: src/lynx/system.cpp:433 +msgid "Atari Lynx ROM Image" +msgstr "" + +#: src/lynx/rom.cpp:67 +msgid "Lynx Boot ROM" +msgstr "" + +#: src/lynx/rom.cpp:74 +msgid "The Lynx Boot ROM Image is an incorrect size." +msgstr "" + +#: src/pce/mcgenjin.cpp:197 +msgid "MCGenjin ROM size is too small!" +msgstr "" + +#: src/pce/mcgenjin.cpp:200 +msgid "MC Genjin header magic missing!" +msgstr "" + +#: src/pce/mcgenjin.cpp:220 +#, c-format +msgid "Unsupported MCGENJIN device on CS%d: 0x%02x" +msgstr "" + +#: src/pce/mcgenjin.cpp:224 +#, c-format +msgid "CS%d: Unused\n" +msgstr "" + +#: src/pce/mcgenjin.cpp:230 +#, c-format +msgid "CS%d: %uKiB %sRAM\n" +msgstr "" + +#: src/pce/hes.cpp:85 +msgid "HES header is too small." +msgstr "" + +#: src/pce/hes.cpp:91 +msgid "HES header magic is invalid." +msgstr "" + +#: src/pce/hes.cpp:109 +msgid "HES Information:\n" +msgstr "" + +#: src/pce/hes.cpp:114 +#, c-format +msgid "Init address: 0x%04x\n" +msgstr "" + +#: src/pce/hes.cpp:115 +#, c-format +msgid "Starting song: %d\n" +msgstr "" + +#: src/pce/hes.cpp:132 +msgid "Chunk load:\n" +msgstr "" + +#: src/pce/hes.cpp:134 +#, c-format +msgid "File offset: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:135 +#, c-format +msgid "Load size: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:136 +#, c-format +msgid "Load target address: 0x%08x\n" +msgstr "" + +#: src/pce/huc.cpp:207 +msgid "ROM image is too large!" +msgstr "" + +#: src/pce/huc.cpp:233 +msgid "CD RAM" +msgstr "" + +#: src/pce/huc.cpp:326 +msgid "System Card RAM" +msgstr "" + +#: src/pce/huc.cpp:372 +msgid "Populous RAM" +msgstr "" + +#: src/pce/pce.cpp:44 +msgid "HuC6280 as found in the original PC Engine." +msgstr "" + +#: src/pce/pce.cpp:45 +msgid "" +"HuC6280A as found in the SuperGrafx and CoreGrafx I. Provides proper " +"channel amplitude centering, but may cause clicking in a few games designed " +"with the original HuC6280's sound characteristics in mind." +msgstr "" + +#: src/pce/pce.cpp:46 +msgid "" +"Emulator-only pseudo-revision, designed to reduce clicking and audio " +"artifacts in games designed for either real revision." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "Match emulation mode." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "" +"Selects \"huc6280\" for non-SuperGrafx mode, and \"huc6280a\" for SuperGrafx" +"(full) mode." +msgstr "" + +#: src/pce/pce.cpp:507 +#, c-format +msgid "PSG Revision: %s\n" +msgstr "" + +#: src/pce/pce.cpp:707 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram_cd setting. This is " +"simulating a malfunction.\n" +msgstr "" + +#: src/pce/pce.cpp:731 +#, c-format +msgid "CD Layout: 0x%s\n" +msgstr "" + +#: src/pce/pce.cpp:1002 +msgid "Enable multitap(TurboTap) emulation." +msgstr "" + +#: src/pce/pce.cpp:1007 +msgid "Show horizontal overscan area." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "Disable BRAM(saved game memory) for CD games." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "" +"It is intended for viewing CD games' error screens that may be different " +"from simple BRAM full and uninitialized BRAM error screens, though it can " +"cause the game to crash outright." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "Disable BRAM(saved game memory) for HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "" +"It is intended for changing the behavior(passwords vs save games) of some " +"HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1016 +msgid "" +"Enabling this option is not necessary to run unrecognized PCE ROM images in " +"SuperGrafx mode, and enabling it is discouraged; ROM images with a file " +"extension of \".sgx\" will automatically enable SuperGrafx emulation." +msgstr "" + +#: src/pce/pce.cpp:1019 +msgid "" +"Leaving this option enabled is recommended, unless you want to see special " +"warning screens on ACD games, or you prefer the non-enhanced modes of ACD-" +"enhanced SCD games. Additionally, you may want to disable it you you wish " +"to use state rewinding with a SCD ACD-enhanced game on a slow CPU, as the " +"extra 2MiB of RAM the Arcade Card offers is difficult to compress in real-" +"time." +msgstr "" + +#: src/pce/pce.cpp:1022 +msgid "" +"WARNING: Enabling this option may cause undesirable graphics glitching on " +"some games(such as \"Bloody Wolf\")." +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Path to the GE CD BIOS" +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Games Express CD Card BIOS (Unlicensed)" +msgstr "" + +#: src/pce/pce.cpp:1027 +msgid "Enable lowpass filter with rolloff dependent on playback-frequency." +msgstr "" + +#: src/pce/pce.cpp:1028 +msgid "" +"This makes ADPCM voices sound less \"harsh\", however, the downside is that " +"it will cause many ADPCM sound effects to sound a bit muffled." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "Select PSG revision." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "" +"WARNING: HES playback will always use the \"huc6280a\" revision if this " +"setting is set to \"match\", since HES playback is always done with " +"SuperGrafx emulation enabled." +msgstr "" + +#: src/pce/pce.cpp:1036 +msgid "" +"Size of emulated VRAM per VDC in 16-bit words. DO NOT CHANGE THIS UNLESS " +"YOU KNOW WTF YOU ARE DOING." +msgstr "" + +#: src/sms/cart.cpp:136 +#, c-format +msgid "Mapper: %s\n" +msgstr "" + +#: src/sms/cart.cpp:137 +#, c-format +msgid "Territory: %s\n" +msgstr "" + +#: src/sms/cart.cpp:137 src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Domestic" +msgstr "" + +#: src/sms/cart.cpp:137 +msgid "Export" +msgstr "" + +#: src/sms/system.cpp:383 +msgid "Domestic(Japanese)" +msgstr "" + +#: src/sms/system.cpp:384 +msgid "Export(World)" +msgstr "" + +#: src/sms/system.cpp:390 +msgid "System territory/region." +msgstr "" + +#: src/sms/system.cpp:391 +msgid "Enable FM sound emulation when playing domestic/Japan-region games." +msgstr "" + +#: src/sms/system.cpp:403 +msgid "Sega Master System ROM Image" +msgstr "" + +#: src/sms/system.cpp:409 +msgid "Game Gear ROM Image" +msgstr "" + +#: src/settings.cpp:89 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid unsigned integer." +msgstr "" + +#: src/settings.cpp:99 src/settings.cpp:131 src/settings.cpp:166 +#, c-format +msgid "" +"Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s" +"\"." +msgstr "" + +#: src/settings.cpp:110 src/settings.cpp:142 src/settings.cpp:177 +#, c-format +msgid "" +"Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s" +"\"." +msgstr "" + +#: src/settings.cpp:121 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid signed integer." +msgstr "" + +#: src/settings.cpp:156 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not set to a floating-point(real) number." +msgstr "" + +#: src/settings.cpp:186 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not a valid boolean value." +msgstr "" + +#: src/settings.cpp:214 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not a recognized string. Recognized " +"strings: %s" +msgstr "" + +#: src/settings.cpp:223 +#, c-format +msgid "Setting \"%s\" is not set to a valid string: \"%s\"" +msgstr "" + +#: src/settings.cpp:225 +#, c-format +msgid "Setting \"%s\" is not set to a valid unsigned integer: \"%s\"" +msgstr "" + +#: src/settings.cpp:336 +#, c-format +msgid "Loading settings from \"%s\"..." +msgstr "" + +#: src/settings.cpp:429 +msgid ";Edit this file at your own risk!\n" +msgstr "" + +#: src/settings.cpp:430 +msgid "" +";File format: \n" +"\n" +msgstr "" + +#: src/settings.cpp:638 +#, c-format +msgid "Unknown setting \"%s\"" +msgstr "" + +#: src/pcfx/rainbow.cpp:257 src/pcfx/rainbow.cpp:260 +msgid "Huffman LUT" +msgstr "" + +#: src/pcfx/rainbow.cpp:656 +msgid "RAINBOW buffer RAM" +msgstr "" + +#: src/pcfx/king.cpp:1681 +msgid "KING Data" +msgstr "" + +#: src/pcfx/input/gamepad.cpp:83 +#, c-format +msgid "Pad %d - MODE 1: %s, MODE 2: %s" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +#, c-format +msgid "V810 Emulation Mode: %s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Accurate" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Fast" +msgstr "" + +#: src/pcfx/pcfx.cpp:510 +msgid "RAM" +msgstr "" + +#: src/pcfx/pcfx.cpp:515 src/md/cd/cd.cpp:879 src/gba/GBA.cpp:762 +msgid "BIOS ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:522 src/pcfx/pcfx.cpp:539 +msgid "BIOS ROM file is incorrect size.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:545 +msgid "FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:635 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram setting. This is simulating " +"a malfunction.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:830 +#, c-format +msgid "CD Layout MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:833 +#, c-format +msgid "GameSet MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:876 +#, c-format +msgid "Emulated CD-ROM drive speed: %ux\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "Fast Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "" +"Fast mode trades timing accuracy, cache emulation, and executing from " +"hardware registers and RAM not intended for code use for performance." +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "Accurate Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "" +"Increased timing accuracy, though not perfect, along with cache emulation, " +"at the cost of decreased performance. Additionally, even the pipeline isn't " +"correctly and fully emulated in this mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "Auto Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "" +"Selects \"fast\" or \"accurate\" automatically based on an internal " +"database. If the CD image is not recognized, defaults to \"fast\"." +msgstr "" + +#: src/pcfx/pcfx.cpp:1044 +msgid "This value will cause heavy pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1045 +msgid "This value will cause moderate pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1046 +msgid "" +"This value will cause no pixel distortion as long as interpolation is " +"enabled on the video output device and the resolution is sufficiently high, " +"but it will use a lot of CPU time." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "Enable multitap on PC-FX port 1." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "Enable multitap on PC-FX port 2." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 6 7 8." +msgstr "" + +#: src/pcfx/pcfx.cpp:1068 +msgid "" +"When RUN+SEL are pressed simultaneously, disable both buttons temporarily." +msgstr "" + +#: src/pcfx/pcfx.cpp:1070 src/vb/vb.cpp:998 +msgid "CPU emulation mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1071 +msgid "Path to the ROM BIOS" +msgstr "" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Path to the FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Intended for developers only." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "Disable internal and external BRAM." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "" +"It is intended for viewing games' error screens that may be different from " +"simple BRAM full and uninitialized BRAM error screens, though it can cause " +"the game to crash outright." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "Emulated CD-ROM speed." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "" +"Setting this to \"1\" will probably cause most games with FMV to break, but " +"setting it higher than 2, the default, will decrease loading times in most " +"games by some degree." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "Emulated width for 7.16MHz dot-clock mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "" +"Lower values are faster, but will cause some degree of pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1082 +msgid "" +"Enable bilinear interpolation on the chroma channel of RAINBOW YUV output." +msgstr "" + +#: src/pcfx/pcfx.cpp:1084 +msgid "Hack to suppress clicks caused by forced channel resets." +msgstr "" + +#: src/pcfx/pcfx.cpp:1088 +msgid "" +"Hack that emulates the codec a buggy ADPCM encoder used for some games' " +"ADPCM." +msgstr "" + +#: src/md/cd/cd.cpp:884 +msgid "Battery-backed RAM" +msgstr "" + +#: src/md/cd/cd.cpp:890 +msgid "Program RAM" +msgstr "" + +#: src/md/cd/cd.cpp:895 +msgid "Word RAM" +msgstr "" + +#: src/md/cd/cd.cpp:912 +#, c-format +msgid "Could not open CD BIOS file \"%s\": %s\n" +msgstr "" + +#: src/md/cd/cd.cpp:918 +msgid "BIOS is incorrect size." +msgstr "" + +#: src/md/system.cpp:238 +#, c-format +msgid "Header MD5: 0x%s\n" +msgstr "" + +#: src/md/system.cpp:239 +#, c-format +msgid "Product Code: %s\n" +msgstr "" + +#: src/md/system.cpp:240 +#, c-format +msgid "Domestic name: %s\n" +msgstr "" + +#: src/md/system.cpp:241 +#, c-format +msgid "Overseas name: %s\n" +msgstr "" + +#: src/md/system.cpp:242 +#, c-format +msgid "Copyright: %s\n" +msgstr "" + +#: src/md/system.cpp:244 +#, c-format +msgid "Checksum: 0x%04x\n" +msgstr "" + +#: src/md/system.cpp:246 +#, c-format +msgid "" +"Checksum: 0x%04x\n" +" Warning: calculated checksum(0x%04x) does not match\n" +msgstr "" + +#: src/md/system.cpp:248 +msgid "Supported I/O devices:\n" +msgstr "" + +#: src/md/system.cpp:253 +#, c-format +msgid "%s\n" +msgstr "" + +#: src/md/system.cpp:264 +msgid "Supported regions:\n" +msgstr "" + +#: src/md/system.cpp:267 +msgid "Japan/Domestic NTSC\n" +msgstr "" + +#: src/md/system.cpp:269 +msgid "Japan/Domestic PAL\n" +msgstr "" + +#: src/md/system.cpp:271 +msgid "Overseas NTSC\n" +msgstr "" + +#: src/md/system.cpp:273 +msgid "Overseas PAL\n" +msgstr "" + +#: src/md/system.cpp:336 +#, c-format +msgid "Active Region: %s %s\n" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Overseas" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "PAL" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "NTSC" +msgstr "" + +#: src/md/system.cpp:337 +#, c-format +msgid "Active Region Reported: %s %s\n" +msgstr "" + +#: src/md/system.cpp:484 src/md/system.cpp:499 +msgid "Match game's header." +msgstr "" + +#: src/md/system.cpp:484 +msgid "" +"Emulate the region that the game indicates it expects to run in via data in " +"the header(or in an internal database for a few games that may have bad " +"header data)." +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Overseas(non-Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Region used in North America." +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Overseas(non-Japan), PAL" +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Region used in Europe." +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Domestic(Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Region used in Japan." +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Domestic(Japan), PAL" +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Probably an invalid region, but available for testing purposes anyway." +msgstr "" + +#: src/md/system.cpp:497 +msgid "Match the region emulated." +msgstr "" + +#: src/md/system.cpp:499 +msgid "" +"This option, in conjunction with the \"md.region\" setting, can be used to " +"run all games at NTSC speeds, or all games at PAL speeds." +msgstr "" + +#: src/md/system.cpp:512 +msgid "Emulate the specified region's Genesis/MegaDrive" +msgstr "" + +#: src/md/system.cpp:513 +msgid "Region reported to the game." +msgstr "" + +#: src/md/system.cpp:515 +msgid "SegaCD/MegaCD emulation is currently nonfunctional." +msgstr "" + +#: src/md/system.cpp:527 +msgid "Super Magic Drive binary ROM Image" +msgstr "" + +#: src/md/system.cpp:528 +msgid "Super Magic Drive interleaved format ROM Image" +msgstr "" + +#: src/md/system.cpp:529 +msgid "Multi Game Doctor format ROM Image" +msgstr "" + +#: src/md/cart/cart.cpp:441 +#, c-format +msgid "Handler for mapper/board \"%s\" not found!\n" +msgstr "" + +#: src/md/cart/map_eeprom.cpp:187 +msgid "Cart EEPROM" +msgstr "" + +#: src/md/cart/map_sram.cpp:78 +msgid "Cart SRAM" +msgstr "" + +#: src/memory.cpp:33 +#, c-format +msgid "Error allocating(calloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/memory.cpp:47 +#, c-format +msgid "Error allocating(malloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/memory.cpp:61 +#, c-format +msgid "Error allocating(realloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/file.cpp:88 +#, c-format +msgid "Error reading IPS file header: %s" +msgstr "" + +#: src/file.cpp:95 +msgid "IPS file header is invalid." +msgstr "" + +#: src/file.cpp:104 src/file.cpp:174 src/file.cpp:269 src/file.cpp:291 +#: src/file.cpp:307 src/file.cpp:313 src/file.cpp:351 +msgid "file read buffer" +msgstr "" + +#: src/file.cpp:129 +#, c-format +msgid "" +"IPS EOF: Did %d patches\n" +"\n" +msgstr "" + +#: src/file.cpp:137 +#, c-format +msgid "Error reading IPS patch length: %s" +msgstr "" + +#: src/file.cpp:148 +#, c-format +msgid "Error reading IPS RLE patch length: %s" +msgstr "" + +#: src/file.cpp:170 +#, c-format +msgid "" +"ROM image will be too large after IPS patch; maximum size allowed is %llu " +"bytes." +msgstr "" + +#: src/file.cpp:194 +#, c-format +msgid "Error reading IPS RLE patch byte: %s" +msgstr "" + +#: src/file.cpp:213 +#, c-format +msgid "Error reading IPS patch: %s" +msgstr "" + +#: src/file.cpp:225 +#, c-format +msgid "Error reading IPS patch header: %s" +msgstr "" + +#: src/file.cpp:250 src/file.cpp:303 src/file.cpp:347 +#, c-format +msgid "ROM image is too large; maximum size allowed is %llu bytes." +msgstr "" + +#: src/file.cpp:276 src/file.cpp:332 +#, c-format +msgid "Error reading file: %s" +msgstr "" + +#: src/file.cpp:327 +#, c-format +msgid "Error reading file: zlib error: %s" +msgstr "" + +#: src/file.cpp:424 src/file.cpp:474 +#, c-format +msgid "Could not seek to first file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:440 +#, c-format +msgid "Could not get file information in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:467 +#, c-format +msgid "Error seeking to next file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:486 +#, c-format +msgid "Could not open file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:514 src/file.cpp:557 src/file.cpp:560 src/file.cpp:724 +#: src/file.cpp:756 +#, c-format +msgid "Error opening \"%s\": %s" +msgstr "" + +#: src/file.cpp:560 +msgid "zlib error" +msgstr "" + +#: src/file.cpp:737 src/file.cpp:769 +#, c-format +msgid "Error writing to \"%s\": %s" +msgstr "" + +#: src/file.cpp:745 +#, c-format +msgid "Error closing \"%s\"" +msgstr "" + +#: src/file.cpp:779 +#, c-format +msgid "Error closing \"%s\": %s" +msgstr "" + +#: src/vb/vb.cpp:600 +#, c-format +msgid "Title: %s\n" +msgstr "" + +#: src/vb/vb.cpp:601 +#, c-format +msgid "Game ID Code: %u\n" +msgstr "" + +#: src/vb/vb.cpp:602 +#, c-format +msgid "Manufacturer Code: %d\n" +msgstr "" + +#: src/vb/vb.cpp:603 +#, c-format +msgid "Version: %u\n" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Anaglyph" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Used in conjuction with classic dual-lens-color glasses." +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "CyberScope" +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "Intended for use with the CyberScope 3D device." +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "Side-by-Side" +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "" +"The left-eye image is displayed on the left, and the right-eye image is " +"displayed on the right." +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:983 +msgid "Forces usage of custom anaglyph colors." +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Red/Blue" +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Classic red/blue anaglyph." +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Red/Cyan" +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Improved quality red/cyan anaglyph." +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Red/Electric Cyan" +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Alternate version of red/cyan" +msgstr "" + +#: src/vb/vb.cpp:989 +msgid "Red/Green" +msgstr "" + +#: src/vb/vb.cpp:990 +msgid "Green/Magenta" +msgstr "" + +#: src/vb/vb.cpp:991 +msgid "Yellow/Blue" +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "Input latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "" +"Reduces latency in some games by 20ms by returning the current pad state, " +"rather than latched state, on serial port data reads. This hack may cause " +"some homebrew software to malfunction, but it should be relatively safe for " +"commercial official games." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "Display latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "" +"Reduces latency in games by displaying the framebuffer 20ms earlier. This " +"hack has some potential of causing graphical glitches, so it is disabled by " +"default." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "Allow draw skipping." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "" +"If vb.instant_display_hack is set to \"1\", and this setting is set to " +"\"1\", then frame-skipping the drawing to the emulated framebuffer will be " +"allowed. THIS WILL CAUSE GRAPHICAL GLITCHES, AND THEORETICALLY(but " +"unlikely) GAME CRASHES, ESPECIALLY WITH DIRECT FRAMEBUFFER DRAWING GAMES." +msgstr "" + +#: src/vb/vb.cpp:1005 +msgid "3D mode." +msgstr "" + +#: src/vb/vb.cpp:1006 +msgid "Line Interlaced prescale." +msgstr "" + +#: src/vb/vb.cpp:1008 +msgid "Disable parallax for BG and OBJ rendering." +msgstr "" + +#: src/vb/vb.cpp:1009 +msgid "Default maximum-brightness color to use in non-anaglyph 3D modes." +msgstr "" + +#: src/vb/vb.cpp:1011 +msgid "Anaglyph preset colors." +msgstr "" + +#: src/vb/vb.cpp:1012 +msgid "Anaglyph maximum-brightness color for left view." +msgstr "" + +#: src/vb/vb.cpp:1013 +msgid "Anaglyph maximum-brightness color for right view." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "Number of pixels to separate L/R views by." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "" +"This setting refers to pixels before vb.xscale(fs) scaling is taken into " +"consideration. For example, a value of \"100\" here will result in a " +"separation of 300 screen pixels if vb.xscale(fs) is set to \"3\"." +msgstr "" + +#: src/vb/vb.cpp:1017 +msgid "Reverse left/right 3D views." +msgstr "" + +#: src/vb/vb.cpp:1069 src/vb/vb.cpp:1070 +msgid "Nintendo Virtual Boy" +msgstr "" + +#: src/vb/vb.cpp:1072 +msgid "Nintendo Virtual Boy (Deprecated)" +msgstr "" + +#: src/netplay.cpp:259 src/netplay.cpp:265 +msgid "Could not send the integrity result to the netplay server." +msgstr "" + +#: src/netplay.cpp:292 +msgid "Could not send the save state command to the netplay server." +msgstr "" + +#: src/netplay.cpp:298 +msgid "Could not send the save state data to the netplay server." +msgstr "" + +#: src/netplay.cpp:355 +msgid "a lurker" +msgstr "" + +#: src/netplay.cpp:357 +#, c-format +msgid "player(s)%s%s%s%s%s%s%s%s" +msgstr "" + +#: src/netplay.cpp:441 +msgid "Remote state loaded." +msgstr "El state remoto est cargado." + +#: src/netplay.cpp:573 +#, c-format +msgid "* You are now known as <%s>." +msgstr "" + +#: src/netplay.cpp:578 +#, c-format +msgid "* <%s> is now known as <%s>" +msgstr "" + +#: src/netplay.cpp:635 +#, c-format +msgid "* You, %s, have connected as: %s%s" +msgstr "" + +#: src/netplay.cpp:649 +#, c-format +msgid "* %s has left(%s%s)" +msgstr "" + +#: src/netplay.cpp:653 +#, c-format +msgid "* %s has connected as: %s%s" +msgstr "" + +#: src/gba/flash.cpp:67 +msgid "flash memory" +msgstr "" + +#: src/gba/GBA.cpp:691 +msgid "ROM" +msgstr "" + +#: src/gba/GBA.cpp:696 +msgid "Work RAM" +msgstr "" + +#: src/gba/GBA.cpp:768 +msgid "Internal RAM" +msgstr "" + +#: src/gba/GBA.cpp:774 +msgid "Palette RAM" +msgstr "" + +#: src/gba/GBA.cpp:780 +msgid "VRAM" +msgstr "" + +#: src/gba/GBA.cpp:786 +msgid "OAM" +msgstr "" + +#: src/gba/GBA.cpp:792 +msgid "IO" +msgstr "" + +#: src/gba/GBA.cpp:798 +msgid "GBA Color Map" +msgstr "" + +#: src/gba/GBA.cpp:1367 +#, c-format +msgid "" +"Unsupported BIOS function %02x called from %08x. A BIOS file is needed in " +"order to get correct behaviour." +msgstr "" + +#: src/gba/GBA.cpp:2546 src/gba/GBA.cpp:2547 src/gba/GBA.cpp:2548 +#: src/gba/GBA.cpp:3382 src/gba/GBA.cpp:3383 src/gba/GBA.cpp:3384 +msgid "GameBoy Advance ROM Image" +msgstr "" + +#: src/gba/GBA.cpp:2555 +msgid "GBA BIOS" +msgstr "" + +#: src/gba/GBA.cpp:2562 +msgid "Invalid BIOS file size" +msgstr "El tamaño del archivo del BIOS es inválido" + +#: src/gba/GBA.cpp:3329 +msgid "Path to optional GBA BIOS ROM image." +msgstr "" + +#: src/gba/GBA.cpp:3380 +msgid "GSF Rip" +msgstr "" + +#: src/gba/GBA.cpp:3381 +msgid "MiniGSF Rip" +msgstr "" + +#: src/movie.cpp:64 +msgid "Movie recording stopped." +msgstr "La grabación de la película paró." + +#: src/movie.cpp:107 +msgid "Movie recording started." +msgstr "Grabación de la película comenzada." + +#: src/movie.cpp:119 +msgid "Movie playback stopped." +msgstr "" + +#: src/movie.cpp:138 +msgid "Can't play movies during netplay." +msgstr "" + +#: src/movie.cpp:159 +msgid "Error loading state portion of the movie." +msgstr "" + +#: src/movie.cpp:168 +msgid "Movie playback started." +msgstr "El aparato de lectura de la película paró." + +#: src/movie.cpp:331 +msgid "Movie status" +msgstr "" + +#~ msgid "Error opening Game Genie ROM image \"%s\": %m" +#~ msgstr "Error: No est posible cargar la ROM del Game Genie \"%s\": %m" + +#~ msgid "Error allocating memory for NSF structure." +#~ msgstr "Error: No es posible asignar la memoria para la estructura del NSF." + +#~ msgid "Network error; connection lost" +#~ msgstr "Error de red; se perdi la conexin." + +#~ msgid "" +#~ "An error occurred when trying to receive the netplay synchronization save " +#~ "state." +#~ msgstr "" +#~ "Un error ocurri al intentar recibir el save state para sincronizar " +#~ "netplay." diff --git a/libmednahawk/po/insert-header.sin b/libmednahawk/po/insert-header.sin new file mode 100644 index 0000000000..08c48e1be1 --- /dev/null +++ b/libmednahawk/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/libmednahawk/po/mednafen.pot b/libmednahawk/po/mednafen.pot new file mode 100644 index 0000000000..157d3a99e4 --- /dev/null +++ b/libmednahawk/po/mednafen.pot @@ -0,0 +1,4320 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Mednafen Team +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: mednafen 0.9.19-WIP\n" +"Report-Msgid-Bugs-To: http://forum.fobby.net/\n" +"POT-Creation-Date: 2012-01-18 11:00-0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/snes/interface.cpp:66 src/gb/gb.cpp:284 src/nes/ppu/palette.cpp:71 +#: src/pce_fast/vdc.cpp:1569 src/pce/pce.cpp:276 src/gba/GBA.cpp:842 +#, c-format +msgid "Loading custom palette from \"%s\"...\n" +msgstr "" + +#: src/snes/interface.cpp:73 src/mempatcher.cpp:238 src/gb/gb.cpp:291 +#: src/nes/ppu/palette.cpp:78 src/pce/pce.cpp:284 src/gba/GBA.cpp:849 +#, c-format +msgid "Error opening file: %s\n" +msgstr "" + +#: src/snes/interface.cpp:80 src/gb/gb.cpp:298 src/pce_fast/vdc.cpp:1578 +#: src/pce/vce.cpp:466 src/gba/GBA.cpp:858 +msgid "custom color map" +msgstr "" + +#: src/snes/interface.cpp:92 src/gb/gb.cpp:310 src/nes/ppu/palette.cpp:87 +#, c-format +msgid "Error reading file: %s\n" +msgstr "" + +#: src/snes/interface.cpp:336 +#, c-format +msgid "Error opening save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:347 src/snes/interface.cpp:359 +#, c-format +msgid "Error reading save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:448 +msgid "SNES Cart ROM" +msgstr "" + +#: src/snes/interface.cpp:556 +msgid "SNES save state buffer" +msgstr "" + +#: src/snes/interface.cpp:796 +msgid "Enable multitap on SNES port 1." +msgstr "" + +#: src/snes/interface.cpp:797 +msgid "Enable multitap on SNES port 2." +msgstr "" + +#: src/snes/interface.cpp:799 src/pce/pce.cpp:1009 +msgid "Emulated mouse sensitivity." +msgstr "" + +#: src/mempatcher.cpp:166 +msgid "Error allocating memory for cheat data." +msgstr "" + +#: src/mempatcher.cpp:231 +#, c-format +msgid "Loading cheats from %s...\n" +msgstr "" + +#: src/mempatcher.cpp:265 +#, c-format +msgid "Invalid cheat type: %c\n" +msgstr "" + +#: src/mempatcher.cpp:313 +#, c-format +msgid "%lu cheats loaded.\n" +msgstr "" + +#: src/wswan/main.cpp:215 +#, c-format +msgid "%s ROM image is too small." +msgstr "" + +#: src/wswan/main.cpp:244 src/gb/gb.cpp:2094 src/pce_fast/huc.cpp:123 +#: src/ngp/neopop.cpp:146 src/lynx/system.cpp:232 src/pce/huc.cpp:226 +#: src/sms/cart.cpp:133 src/md/system.cpp:236 src/vb/vb.cpp:605 +#: src/gba/GBA.cpp:748 +#, c-format +msgid "ROM: %dKiB\n" +msgstr "" + +#: src/wswan/main.cpp:249 src/gb/gb.cpp:2096 src/pce_fast/huc.cpp:125 +#: src/ngp/neopop.cpp:147 src/lynx/system.cpp:234 src/pce/huc.cpp:228 +#: src/sms/cart.cpp:135 src/md/system.cpp:237 src/vb/vb.cpp:606 +#: src/gba/GBA.cpp:750 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "" + +#: src/wswan/main.cpp:264 +#, c-format +msgid "Developer: %s (0x%02x)\n" +msgstr "" + +#: src/wswan/main.cpp:285 +#, c-format +msgid "EEPROM: %d bytes\n" +msgstr "" + +#: src/wswan/main.cpp:288 +#, c-format +msgid "Battery-backed RAM: %d bytes\n" +msgstr "" + +#: src/wswan/main.cpp:290 +#, c-format +msgid "Recorded Checksum: 0x%04x\n" +msgstr "" + +#: src/wswan/main.cpp:295 +#, c-format +msgid "Real Checksum: 0x%04x\n" +msgstr "" + +#: src/wswan/main.cpp:395 +msgid "Male" +msgstr "" + +#: src/wswan/main.cpp:398 +msgid "Female" +msgstr "" + +#: src/wswan/main.cpp:419 src/ngp/neopop.cpp:251 +msgid "Japanese" +msgstr "" + +#: src/wswan/main.cpp:422 src/ngp/neopop.cpp:254 +msgid "English" +msgstr "" + +#: src/wswan/main.cpp:430 +msgid "Virtually rotate D-pads along with screen." +msgstr "" + +#: src/wswan/main.cpp:431 src/ngp/neopop.cpp:262 +msgid "Language games should display text in." +msgstr "" + +#: src/wswan/main.cpp:431 +msgid "" +"The only game this setting is known to affect is \"Digimon Tamers - Battle " +"Spirit\"." +msgstr "" + +#: src/wswan/main.cpp:432 +msgid "Name" +msgstr "" + +#: src/wswan/main.cpp:433 +msgid "Birth Year" +msgstr "" + +#: src/wswan/main.cpp:434 +msgid "Birth Month" +msgstr "" + +#: src/wswan/main.cpp:435 +msgid "Birth Day" +msgstr "" + +#: src/wswan/main.cpp:436 +msgid "Sex" +msgstr "" + +#: src/wswan/main.cpp:437 +msgid "Blood Type" +msgstr "" + +#: src/wswan/main.cpp:508 +msgid "WonderSwan ROM Image" +msgstr "" + +#: src/wswan/main.cpp:509 +msgid "WonderSwan Color ROM Image" +msgstr "" + +#: src/wswan/main.cpp:510 +msgid "WonderSwan Music Rip" +msgstr "" + +#: src/general.cpp:170 src/cdrom/CDAccess_Image.cpp:489 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting.\n" +msgstr "" + +#: src/state.cpp:658 src/state.cpp:805 +#, c-format +msgid "Module \"%s\" doesn't support save states." +msgstr "" + +#: src/state.cpp:667 src/state.cpp:677 +#, c-format +msgid "State %d save error." +msgstr "" + +#: src/state.cpp:688 +#, c-format +msgid "State %d saved." +msgstr "" + +#: src/state.cpp:820 +#, c-format +msgid "State %d load error." +msgstr "" + +#: src/state.cpp:831 +#, c-format +msgid "State %d loaded." +msgstr "" + +#: src/state.cpp:840 +#, c-format +msgid "State %d read error!" +msgstr "" + +#: src/state.cpp:894 +msgid "Save state preview buffer" +msgstr "" + +#: src/state.cpp:946 +msgid "Save state status" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:51 +msgid "MMC [MODE SENSE 10] command failed." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:59 +msgid "MMC [MODE SENSE 10] command returned bogus data for mode page 0x2A." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:64 +msgid "Drive does not support reading Mode 2 Form 1 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:69 +msgid "Drive does not support reading Mode 2 Form 2 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:74 +msgid "Reading CD-DA sectors via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:79 +msgid "Read CD-DA sectors via \"READ CD\" are not positionally-accurate." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:84 +msgid "Reading raw subchannel data via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:137 +msgid "Error reading disc TOC." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:148 +#, c-format +msgid "Invalid first track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:153 +#, c-format +msgid "Invalid last track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:220 src/cdrom/CDAccess_Physical.cpp:234 +#, c-format +msgid "MMC Read Error; libcdio return code %d" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:257 +msgid "Connected physical devices:\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:269 +msgid "No CDROM drives detected(or no disc present)." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:281 +msgid "Unknown error opening physical CD" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:323 +#, c-format +msgid "Error ejecting medium;; libcdio return code %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:124 +#, c-format +msgid "TOC first(%d)/last(%d) track numbers bad." +msgstr "" + +#: src/cdrom/cdromif.cpp:257 +#, c-format +msgid "Sector %u read error: %s" +msgstr "" + +#: src/cdrom/cdromif.cpp:414 src/cdrom/cdromif.cpp:415 +#: src/cdrom/scsicd.cpp:514 src/cdrom/scsicd.cpp:515 +#, c-format +msgid "Uncorrectable data at sector %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:464 +#, c-format +msgid "Error on eject/insert attempt: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:227 src/cdrom/CDAccess_Image.cpp:498 +#, c-format +msgid "Could not open referenced file \"%s\": %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:281 +#, c-format +msgid "" +"Length specified in TOC file for track %d is too large by %ld sectors!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:372 +#, c-format +msgid "Invalid track number: %d" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:393 +#, c-format +msgid "Invalid track format: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:402 +msgid "\"RW\" format subchannel data not supported, only \"RW_RAW\" is!" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:459 src/cdrom/CDAccess_Image.cpp:469 +#, c-format +msgid "Command %s is outside of a TRACK definition!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:514 +#, c-format +msgid "Unsupported audio track file format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:519 +#, c-format +msgid "Unsupported track format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:553 +#, c-format +msgid "Invalid track format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:560 +#, c-format +msgid "Invalid track number: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:601 +#, c-format +msgid "Unsupported CUE sheet directive: \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:605 +#, c-format +msgid "Unknown CUE sheet directive \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:615 +msgid "No tracks found!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:809 +#, c-format +msgid "Could not find track for sector %u!" +msgstr "" + +#: src/cdrom/pcecd.cpp:446 +msgid "PCE ADPCM RAM" +msgstr "" + +#: src/cdrom/audioreader.cpp:142 +msgid "Error initializing MusePack decoder!\n" +msgstr "" + +#: src/FileWrapper.cpp:87 +#, c-format +msgid "Error duping file descriptor: %s" +msgstr "" + +#: src/FileWrapper.cpp:94 +#, c-format +msgid "Error during fdopen(): %s" +msgstr "" + +#: src/FileWrapper.cpp:127 src/FileWrapper.cpp:139 +#, c-format +msgid "Error opening file \"%s\" for \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:129 src/FileWrapper.cpp:141 +#, c-format +msgid "Error opening file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:169 +#, c-format +msgid "Error closing opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:187 src/FileWrapper.cpp:190 src/FileWrapper.cpp:233 +#, c-format +msgid "Error reading from opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:202 +#, c-format +msgid "Error flushing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:212 src/FileWrapper.cpp:258 src/FileWrapper.cpp:268 +#, c-format +msgid "Error writing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:294 +#, c-format +msgid "Error reading line in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:306 +#, c-format +msgid "Error seeking in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:318 +#, c-format +msgid "Error getting the size of opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:345 +#, c-format +msgid "Error getting position in opened file \"%s\": %s" +msgstr "" + +#: src/PSFLoader.cpp:225 +#, c-format +msgid "Not a PSF(version=0x%02x) file!" +msgstr "" + +#: src/PSFLoader.cpp:232 +#, c-format +msgid "PSF is missing at least %u bytes of data!" +msgstr "" + +#: src/PSFLoader.cpp:235 +msgid "PSF compressed CRC32 mismatch(data is corrupt)!" +msgstr "" + +#: src/PSFLoader.cpp:258 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting." +msgstr "" + +#: src/PSFLoader.cpp:286 +msgid "PSF decompressed size exceeds maximum allowed!" +msgstr "" + +#: src/PSFLoader.cpp:289 +msgid "PSF compressed data is bad." +msgstr "" + +#: src/psx/frontio.cpp:461 +#, c-format +msgid "" +"Memory card file \"%s\" is an incorrect size(%d bytes). The correct size is " +"%d bytes." +msgstr "" + +#: src/psx/gpu.cpp:1130 +msgid "VIDEO STANDARD MISMATCH" +msgstr "" + +#: src/psx/psx.cpp:1294 src/pce/pce.cpp:944 src/pcfx/pcfx.cpp:893 +msgid "Eject error." +msgstr "" + +#: src/psx/psx.cpp:1300 src/pce/pce.cpp:950 src/pcfx/pcfx.cpp:899 +msgid "Virtual CD Drive Tray Open" +msgstr "" + +#: src/psx/psx.cpp:1302 src/pce/pce.cpp:952 src/pcfx/pcfx.cpp:901 +msgid "Virtual CD Drive Tray Closed" +msgstr "" + +#: src/psx/psx.cpp:1324 src/pce/pce.cpp:973 src/pcfx/pcfx.cpp:922 +msgid "Disc absence selected." +msgstr "" + +#: src/psx/psx.cpp:1326 src/pce/pce.cpp:975 src/pcfx/pcfx.cpp:924 +#, c-format +msgid "Disc %d of %d selected." +msgstr "" + +#: src/psx/psx.cpp:1355 +msgid "PSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1356 +msgid "MiniPSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1357 src/psx/psx.cpp:1358 +msgid "PS-X Executable" +msgstr "" + +#: src/psx/psx.cpp:1364 +msgid "Japan" +msgstr "" + +#: src/psx/psx.cpp:1365 +msgid "North America" +msgstr "" + +#: src/psx/psx.cpp:1366 +msgid "Europe" +msgstr "" + +#: src/psx/psx.cpp:1372 +msgid "Attempt to auto-detect region of game." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Default region to use." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Used if region autodetection fails or is disabled." +msgstr "" + +#: src/psx/psx.cpp:1375 +msgid "Path to the Japan SCPH-5500 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "Path to the North America SCPH-5501 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "SHA1 0555c6fae8906f3f09baf5988f00e55f88e9f30b" +msgstr "" + +#: src/psx/psx.cpp:1377 +msgid "Path to the Europe SCPH-5502 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1379 +msgid "SPU output resampler quality." +msgstr "" + +#: src/psx/psx.cpp:1380 +msgid "" +"0 is lowest quality and CPU usage, 10 is highest quality and CPU usage. The " +"resampler that this setting refers to is used for converting from 44.1KHz to " +"the sampling rate of the host audio device Mednafen is using. Changing " +"Mednafen's output rate, via the \"sound.rate\" setting, to \"44100\" will " +"bypass the resampler, which will decrease CPU usage by Mednafen, and can " +"increase or decrease audio quality, depending on various operating system " +"and hardware factors." +msgstr "" + +#: src/mednafen.cpp:54 +msgid "Force monophonic sound output." +msgstr "" + +#: src/mednafen.cpp:55 +msgid "Enable (automatic) usage of this module." +msgstr "" + +#: src/mednafen.cpp:56 +msgid "Enable video temporal blur(50/50 previous/current frame by default)." +msgstr "" + +#: src/mednafen.cpp:57 +msgid "Accumulate color data rather than discarding it." +msgstr "" + +#: src/mednafen.cpp:58 +msgid "" +"Blur amount in accumulation mode, specified in percentage of accumulation " +"buffer to mix with the current frame." +msgstr "" + +#: src/mednafen.cpp:73 +msgid "" +"A fast codec, computationally, but will cause enormous file size and may " +"exceed your storage medium's sustained write rate." +msgstr "" + +#: src/mednafen.cpp:76 +msgid "A good balance between performance and compression ratio." +msgstr "" + +#: src/mednafen.cpp:79 +msgid "" +"Has a better compression ratio than \"cscd\", but is much more CPU " +"intensive. Use for compatibility with official QuickTime in cases where you " +"have insufficient disk space for \"raw\"." +msgstr "" + +#: src/mednafen.cpp:84 +msgid "See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:88 +msgid "Compressor to use with state rewinding" +msgstr "" + +#: src/mednafen.cpp:90 +msgid "Number of frames to keep states for when state rewinding is enabled." +msgstr "" + +#: src/mednafen.cpp:91 +msgid "" +"WARNING: Setting this to a large value may cause excessive RAM usage in some " +"circumstances, such as with games that stream large volumes of data off of " +"CDs." +msgstr "" + +#: src/mednafen.cpp:93 +msgid "Enable untrusted file-inclusion path security check." +msgstr "" + +#: src/mednafen.cpp:94 +msgid "" +"When this setting is set to \"1\", the default, paths to files referenced " +"from files like CUE sheets and PSF rips are checked for certain characters " +"that can be used in directory traversal, and if found, loading is aborted. " +"Set it to \"0\" if you want to allow constructs like absolute paths in CUE " +"sheets, but only if you understand the security implications of doing so(see " +"\"Security Issues\" section in the documentation)." +msgstr "" + +#: src/mednafen.cpp:96 +msgid "Path to directory for screen snapshots." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "Path to directory for save games and nonvolatile memory." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "" +"WARNING: Do not set this path to a directory that contains Famicom Disk " +"System disk images, or you will corrupt them when you load an FDS game and " +"exit Mednafen." +msgstr "" + +#: src/mednafen.cpp:98 +msgid "Path to directory for save states." +msgstr "" + +#: src/mednafen.cpp:99 +msgid "Path to directory for movies." +msgstr "" + +#: src/mednafen.cpp:100 +msgid "Path to directory for cheats." +msgstr "" + +#: src/mednafen.cpp:101 +msgid "Path to directory for custom palettes." +msgstr "" + +#: src/mednafen.cpp:102 +msgid "Path to directory for firmware." +msgstr "" + +#: src/mednafen.cpp:104 +msgid "Format string for movie filename." +msgstr "" + +#: src/mednafen.cpp:105 +msgid "Format string for state filename." +msgstr "" + +#: src/mednafen.cpp:106 +msgid "Format string for save games filename." +msgstr "" + +#: src/mednafen.cpp:106 +#, c-format +msgid "" +"WARNING: %x should always be included, otherwise you run the risk of " +"overwriting save data for games that create multiple save data files.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:107 +msgid "Format string for screen snapshot filenames." +msgstr "" + +#: src/mednafen.cpp:107 +#, c-format +msgid "" +"WARNING: %x or %p should always be included, otherwise there will be a " +"conflict between the numeric counter text file and the image data file.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:109 +msgid "Disable gzip compression when saving save states and backup memory." +msgstr "" + +#: src/mednafen.cpp:112 +msgid "Double the raw image's width if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:113 +msgid "Double the raw image's height if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:115 +msgid "Video codec to use." +msgstr "" + +#: src/mednafen.cpp:213 +#, c-format +msgid "Starting QuickTime recording to file \"%s\":\n" +msgstr "" + +#: src/mednafen.cpp:215 +#, c-format +msgid "Video width: %u\n" +msgstr "" + +#: src/mednafen.cpp:216 +#, c-format +msgid "Video height: %u\n" +msgstr "" + +#: src/mednafen.cpp:217 +#, c-format +msgid "Video codec: %s\n" +msgstr "" + +#: src/mednafen.cpp:218 +#, c-format +msgid "Sound rate: %u\n" +msgstr "" + +#: src/mednafen.cpp:219 +#, c-format +msgid "Sound channels: %u\n" +msgstr "" + +#: src/mednafen.cpp:400 +msgid "M3U CD Set" +msgstr "" + +#: src/mednafen.cpp:419 +#, c-format +msgid "M3U at \"%s\" references self." +msgstr "" + +#: src/mednafen.cpp:422 +msgid "M3U load recursion too deep!" +msgstr "" + +#: src/mednafen.cpp:441 +#, c-format +msgid "" +"Loading %s...\n" +"\n" +msgstr "" + +#: src/mednafen.cpp:441 +msgid "PHYSICAL CD" +msgstr "" + +#: src/mednafen.cpp:472 +msgid "Error opening CD." +msgstr "" + +#: src/mednafen.cpp:486 +#, c-format +msgid "CD %d Layout:\n" +msgstr "" + +#: src/mednafen.cpp:491 +#, c-format +msgid "Track %2d, LBA: %6d %s\n" +msgstr "" + +#: src/mednafen.cpp:567 src/mednafen.cpp:770 +#, c-format +msgid "Unrecognized system \"%s\"!" +msgstr "" + +#: src/mednafen.cpp:572 +msgid "Could not find a system that supports this CD." +msgstr "" + +#: src/mednafen.cpp:579 +#, c-format +msgid "Specified system \"%s\" doesn't support CDs!" +msgstr "" + +#: src/mednafen.cpp:583 src/mednafen.cpp:779 +#, c-format +msgid "" +"Using module: %s(%s)\n" +"\n" +msgstr "" + +#: src/mednafen.cpp:631 +#, c-format +msgid "Applying IPS file \"%s\"...\n" +msgstr "" + +#: src/mednafen.cpp:638 src/settings.cpp:343 +#, c-format +msgid "Failed: %s\n" +msgstr "" + +#: src/mednafen.cpp:644 +#, c-format +msgid "Error opening IPS file: %s\n" +msgstr "" + +#: src/mednafen.cpp:681 +#, c-format +msgid "Loading %s...\n" +msgstr "" + +#: src/mednafen.cpp:708 +msgid "game" +msgstr "" + +#: src/mednafen.cpp:737 +msgid "" +"Specified system only supports CD(physical, or image files, such as *.cue " +"and *.toc) loading." +msgstr "" + +#: src/mednafen.cpp:739 +msgid "Specified system does not support normal file loading." +msgstr "" + +#: src/mednafen.cpp:772 +msgid "Unrecognized file format. Sorry." +msgstr "" + +#: src/mednafen.cpp:1020 +#, c-format +msgid "Internal emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1021 +#, c-format +msgid "External emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1357 +msgid "Can't rewind during movie playback(yet!)." +msgstr "" + +#: src/mednafen.cpp:1362 +msgid "Silly-billy, can't rewind during netplay." +msgstr "" + +#: src/mednafen.cpp:1367 +msgid "Music player rewinding is unsupported." +msgstr "" + +#: src/mednafen.cpp:1645 +#, c-format +msgid "%s enabled." +msgstr "" + +#: src/mednafen.cpp:1647 +#, c-format +msgid "%s disabled." +msgstr "" + +#: src/gb/gb.cpp:327 +#, c-format +msgid "Warning: %lld byte(s) of trailing unused data.\n" +msgstr "" + +#: src/gb/gb.cpp:1962 src/gb/gb.cpp:1992 src/nes/fds.cpp:601 +msgid "Unknown" +msgstr "" + +#: src/gb/gb.cpp:1967 src/drivers/video.cpp:547 +msgid "None" +msgstr "" + +#: src/gb/gb.cpp:2076 +msgid "GB Color Map" +msgstr "" + +#: src/gb/gb.cpp:2095 src/lynx/system.cpp:233 src/pce/huc.cpp:227 +#: src/sms/cart.cpp:134 src/gba/GBA.cpp:749 +#, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "" + +#: src/gb/gb.cpp:2097 +#, c-format +msgid "Type: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2098 +#, c-format +msgid "RAM Size: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2099 +#, c-format +msgid "Version: 0x%02x\n" +msgstr "" + +#: src/gb/gb.cpp:2132 +msgid "Invalid ROM size" +msgstr "" + +#: src/gb/gb.cpp:2146 +msgid "Invalid RAM size" +msgstr "" + +#: src/gb/gb.cpp:2666 +msgid "Auto" +msgstr "" + +#: src/gb/gb.cpp:2666 +msgid "Automatic detection based on headers." +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "DMG" +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "Original GameBoy Monochrome." +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "CGB" +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "" +"GameBoy Color.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "AGB" +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "" +"GameBoy Advance.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2675 +msgid "Emulated GB type." +msgstr "" + +#: src/gb/gb.cpp:2722 +msgid "GameBoy ROM Image" +msgstr "" + +#: src/gb/gb.cpp:2723 src/gb/gb.cpp:2724 +msgid "GameBoy Color ROM Image" +msgstr "" + +#: src/nes/nsf.cpp:154 +msgid "NSF data" +msgstr "" + +#: src/nes/nsf.cpp:194 +msgid "NSF header" +msgstr "" + +#: src/nes/nsf.cpp:227 +msgid "Load address is invalid!" +msgstr "" + +#: src/nes/nsf.cpp:234 +msgid "Total number of songs is less than 1!" +msgstr "" + +#: src/nes/nsf.cpp:265 +msgid "" +"NSF Loaded. File information:\n" +"\n" +msgstr "" + +#: src/nes/nsf.cpp:268 +#, c-format +msgid "Game/Album Name:\t%s\n" +msgstr "" + +#: src/nes/nsf.cpp:270 +#, c-format +msgid "Music Artist:\t%s\n" +msgstr "" + +#: src/nes/nsf.cpp:272 +#, c-format +msgid "Copyright:\t\t%s\n" +msgstr "" + +#: src/nes/nsf.cpp:274 +#, c-format +msgid "Ripper:\t\t%s\n" +msgstr "" + +#: src/nes/nsf.cpp:283 +#, c-format +msgid "Expansion hardware: %s\n" +msgstr "" + +#: src/nes/nsf.cpp:289 +msgid "Bank-switched\n" +msgstr "" + +#: src/nes/nsf.cpp:290 +#, c-format +msgid "" +"Load address: $%04x\n" +"Init address: $%04x\n" +"Play address: $%04x\n" +msgstr "" + +#: src/nes/nsf.cpp:292 +#, c-format +msgid "" +"Starting song: %d / %d\n" +"\n" +msgstr "" + +#: src/nes/nsf.cpp:295 src/nes/nsf.cpp:297 +msgid "NSF expansion RAM" +msgstr "" + +#: src/nes/unif.cpp:143 +#, c-format +msgid "Name/Attribute Table Mirroring: %s\n" +msgstr "" + +#: src/nes/unif.cpp:154 +msgid "Name: " +msgstr "" + +#: src/nes/unif.cpp:191 +#, c-format +msgid "Dumped by: %s\n" +msgstr "" + +#: src/nes/unif.cpp:192 +#, c-format +msgid "Dumped with: %s\n" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "January" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "February" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "March" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "April" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "May" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "June" +msgstr "" + +#: src/nes/unif.cpp:194 +msgid "July" +msgstr "" + +#: src/nes/unif.cpp:195 +msgid "August" +msgstr "" + +#: src/nes/unif.cpp:195 +msgid "September" +msgstr "" + +#: src/nes/unif.cpp:195 +msgid "October" +msgstr "" + +#: src/nes/unif.cpp:195 +msgid "November" +msgstr "" + +#: src/nes/unif.cpp:195 +msgid "December" +msgstr "" + +#: src/nes/unif.cpp:196 +#, c-format +msgid "Dumped on: %s %d, %d\n" +msgstr "" + +#: src/nes/unif.cpp:244 +#, c-format +msgid "TV Standard Compatibility: %s\n" +msgstr "" + +#: src/nes/unif.cpp:251 src/nes/ines.cpp:696 +msgid "Battery-backed.\n" +msgstr "" + +#: src/nes/unif.cpp:274 +#, c-format +msgid "PRG ROM %d size: %d" +msgstr "" + +#: src/nes/unif.cpp:284 +#, c-format +msgid "Error reading PRG chunk %d" +msgstr "" + +#: src/nes/unif.cpp:302 +#, c-format +msgid "Board name: %s\n" +msgstr "" + +#: src/nes/unif.cpp:315 +#, c-format +msgid "CHR ROM %d size: %d" +msgstr "" + +#: src/nes/unif.cpp:325 +#, c-format +msgid "Error reading CHR chunk %d" +msgstr "" + +#: src/nes/unif.cpp:503 +msgid "Board type not supported." +msgstr "" + +#: src/nes/unif.cpp:570 src/nes/ines.cpp:692 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "" + +#: src/nes/boards/mmc5.cpp:122 src/nes/boards/mmc1.cpp:340 +msgid ">8KB external WRAM present. Use UNIF if you hack the ROM image.\n" +msgstr "" + +#: src/nes/boards/mmc5.cpp:655 src/nes/boards/mmc5.cpp:785 +msgid "MMC5 EXRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:770 src/nes/ines.cpp:917 +msgid "WRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:779 +msgid "MMC5 Fill" +msgstr "" + +#: src/nes/boards/maxicart.cpp:98 +msgid "expansion RAM" +msgstr "" + +#: src/nes/boards/mmc3.cpp:1536 +msgid "" +"Low-G-Man can not work normally in the iNES format.\n" +"This game has been recognized by its CRC32 value, and the appropriate " +"changes will be made so it will run.\n" +"If you wish to hack this game, you should use the UNIF format for your " +"hack.\n" +"\n" +msgstr "" + +#: src/nes/cart.cpp:494 +msgid "Game Genie ROM image" +msgstr "" + +#: src/nes/cart.cpp:499 +msgid "Game Genie ROM Image" +msgstr "" + +#: src/nes/cart.cpp:509 +msgid "Error reading from Game Genie ROM image!" +msgstr "" + +#: src/nes/cart.cpp:539 +msgid "Game Genie Read Map Backup" +msgstr "" + +#: src/nes/cart.cpp:540 +msgid "Game Genie Write Map Backup" +msgstr "" + +#: src/nes/cart.cpp:752 +#, c-format +msgid "WRAM file \"%s\" cannot be written to.\n" +msgstr "" + +#: src/nes/ines.cpp:368 +#, c-format +msgid "" +"The copy of the game you have loaded, \"%s\", is bad, and will not work " +"properly on Mednafen." +msgstr "" + +#: src/nes/ines.cpp:531 +msgid "" +"The iNES header contains incorrect information. For now, the information " +"will be corrected in RAM:\n" +msgstr "" + +#: src/nes/ines.cpp:534 +#, c-format +msgid "The mapper number should be set to %d.\n" +msgstr "" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Horizontal" +msgstr "" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Vertical" +msgstr "" + +#: src/nes/ines.cpp:539 +msgid "Four-screen" +msgstr "" + +#: src/nes/ines.cpp:541 +#, c-format +msgid "Mirroring should be set to \"%s\".\n" +msgstr "" + +#: src/nes/ines.cpp:545 +msgid "The battery-backed bit should be set.\n" +msgstr "" + +#: src/nes/ines.cpp:549 +msgid "This game should not have any CHR ROM. " +msgstr "" + +#: src/nes/ines.cpp:604 +msgid "No PRG ROM present!" +msgstr "" + +#: src/nes/ines.cpp:621 +msgid "PRG ROM data" +msgstr "" + +#: src/nes/ines.cpp:633 +msgid "CHR ROM data" +msgstr "" + +#: src/nes/ines.cpp:648 +msgid "Error reading trainer." +msgstr "" + +#: src/nes/ines.cpp:659 +msgid "Error reading PRG ROM data" +msgstr "" + +#: src/nes/ines.cpp:668 +msgid "Error reading CHR ROM data" +msgstr "" + +#: src/nes/ines.cpp:688 +#, c-format +msgid "PRG ROM: %3d x 16KiB\n" +msgstr "" + +#: src/nes/ines.cpp:689 +#, c-format +msgid "CHR ROM: %3d x 8KiB\n" +msgstr "" + +#: src/nes/ines.cpp:690 +#, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "" + +#: src/nes/ines.cpp:693 +#, c-format +msgid "Mapper: %d\n" +msgstr "" + +#: src/nes/ines.cpp:694 +#, c-format +msgid "Mirroring: %s\n" +msgstr "" + +#: src/nes/ines.cpp:694 +msgid "None(Four-screen)" +msgstr "" + +#: src/nes/ines.cpp:697 +msgid "Trained.\n" +msgstr "" + +#: src/nes/ines.cpp:905 src/nes/fds.cpp:682 +msgid "CHR RAM" +msgstr "" + +#: src/nes/ines.cpp:940 +#, c-format +msgid "iNES mapper %d is not supported!" +msgstr "" + +#: src/nes/ppu/palette.cpp:87 +msgid "File length is too short" +msgstr "" + +#: src/nes/nes.cpp:406 +msgid "Cannot use states in GG Screen." +msgstr "" + +#: src/nes/nes.cpp:437 src/pce_fast/huc.cpp:320 src/drivers/main.cpp:244 +#: src/drivers/main.cpp:261 src/pce/pce.cpp:732 src/vb/vb.cpp:983 +msgid "Disabled" +msgstr "" + +#: src/nes/nes.cpp:440 +msgid "Composite Video" +msgstr "" + +#: src/nes/nes.cpp:441 +msgid "S-Video" +msgstr "" + +#: src/nes/nes.cpp:442 +msgid "RGB" +msgstr "" + +#: src/nes/nes.cpp:443 +msgid "Monochrome" +msgstr "" + +#: src/nes/nes.cpp:450 +msgid "Disable four-score emulation." +msgstr "" + +#: src/nes/nes.cpp:452 +msgid "Remove 8-sprites-per-scanline hardware limit." +msgstr "" + +#: src/nes/nes.cpp:453 +msgid "" +"WARNING: Enabling this option will cause graphical glitches in some games, " +"including \"Solstice\"." +msgstr "" + +#: src/nes/nes.cpp:455 +msgid "Sound quality." +msgstr "" + +#: src/nes/nes.cpp:456 +msgid "Output rate tolerance." +msgstr "" + +#: src/nes/nes.cpp:457 +msgid "" +"Enable less-accurate, but better sounding, Namco 106(mapper 19) sound " +"emulation." +msgstr "" + +#: src/nes/nes.cpp:458 +msgid "" +"Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation." +msgstr "" + +#: src/nes/nes.cpp:459 +msgid "" +"Warning: This option may break NES network play when enabled IF the players " +"are using ROM images with different filenames." +msgstr "" + +#: src/nes/nes.cpp:461 +msgid "Enable PAL(50Hz) NES emulation." +msgstr "" + +#: src/nes/nes.cpp:462 +msgid "Enable Game Genie emulation." +msgstr "" + +#: src/nes/nes.cpp:463 +msgid "Path to Game Genie ROM image." +msgstr "" + +#: src/nes/nes.cpp:464 +msgid "Clip left+right 8 pixel columns." +msgstr "" + +#: src/nes/nes.cpp:465 +msgid "First displayed scanline in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:466 +msgid "Last displayed scanlines in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:467 +msgid "First displayed scanline in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:468 +msgid "Last displayedscanlines in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:469 +msgid "Enable NTSC color generation and blitter." +msgstr "" + +#: src/nes/nes.cpp:470 +msgid "" +"NOTE: If your refresh rate isn't very close to 60.1Hz(+-0.1), you will need " +"to set the nes.ntsc.mergefields setting to \"1\" to avoid excessive " +"flickering." +msgstr "" + +#: src/nes/nes.cpp:473 +msgid "Video quality/type preset." +msgstr "" + +#: src/nes/nes.cpp:474 +msgid "Merge fields to partially work around !=60.1Hz refresh rates." +msgstr "" + +#: src/nes/nes.cpp:475 +msgid "NTSC composite blitter saturation." +msgstr "" + +#: src/nes/nes.cpp:476 +msgid "NTSC composite blitter hue." +msgstr "" + +#: src/nes/nes.cpp:477 +msgid "NTSC composite blitter sharpness." +msgstr "" + +#: src/nes/nes.cpp:478 +msgid "NTSC composite blitter brightness." +msgstr "" + +#: src/nes/nes.cpp:479 +msgid "NTSC composite blitter contrast." +msgstr "" + +#: src/nes/nes.cpp:481 +msgid "Enable NTSC custom decoder matrix." +msgstr "" + +#: src/nes/nes.cpp:484 +msgid "NTSC custom decoder matrix element 0(red, value * V)." +msgstr "" + +#: src/nes/nes.cpp:485 +msgid "NTSC custom decoder matrix element 1(red, value * U)." +msgstr "" + +#: src/nes/nes.cpp:486 +msgid "NTSC custom decoder matrix element 2(green, value * V)." +msgstr "" + +#: src/nes/nes.cpp:487 +msgid "NTSC custom decoder matrix element 3(green, value * U)." +msgstr "" + +#: src/nes/nes.cpp:488 +msgid "NTSC custom decoder matrix element 4(blue, value * V)." +msgstr "" + +#: src/nes/nes.cpp:489 +msgid "NTSC custom decoder matrix element 5(blue, value * U." +msgstr "" + +#: src/nes/fds.cpp:84 +#, c-format +msgid "Disk %1$d Side %2$s Inserted" +msgstr "" + +#: src/nes/fds.cpp:89 +#, c-format +msgid "Disk %1$d Side %2$s Ejected" +msgstr "" + +#: src/nes/fds.cpp:105 +msgid "Eject disk before selecting." +msgstr "" + +#: src/nes/fds.cpp:109 +#, c-format +msgid "Disk %1$d Side %2$s Selected" +msgstr "" + +#: src/nes/fds.cpp:358 src/nes/fds.cpp:636 +msgid "FDS Disk Data" +msgstr "" + +#: src/nes/fds.cpp:641 +msgid "FDS BIOS" +msgstr "" + +#: src/nes/fds.cpp:649 src/nes/fds.cpp:665 +msgid "FDS BIOS ROM image is too small." +msgstr "" + +#: src/nes/fds.cpp:676 +msgid "FDS RAM" +msgstr "" + +#: src/nes/fds.cpp:693 +msgid "auxillary FDS data" +msgstr "" + +#: src/nes/fds.cpp:726 +#, c-format +msgid "Sides: %d\n" +msgstr "" + +#: src/nes/fds.cpp:727 +#, c-format +msgid "Manufacturer Code: %02x (%s)\n" +msgstr "" + +#: src/nes/fds.cpp:728 +#, c-format +msgid "MD5: 0x%s\n" +msgstr "" + +#: src/pce_fast/vdc.cpp:1574 +#, c-format +msgid "Error opening file: %m\n" +msgstr "" + +#: src/pce_fast/vdc.cpp:1589 src/pce/pce.cpp:299 src/gba/GBA.cpp:862 +msgid "Error reading file\n" +msgstr "" + +#: src/pce_fast/hes.cpp:57 src/pce/hes.cpp:62 +#, c-format +msgid "" +"Warning: HES is writing to physical address %08x. Future warnings of this " +"nature are temporarily disabled for this HES file.\n" +msgstr "" + +#: src/pce_fast/hes.cpp:79 src/pce_fast/hes.cpp:84 src/pce/hes.cpp:99 +#: src/pce/hes.cpp:104 +msgid "HES ROM" +msgstr "" + +#: src/pce_fast/hes.cpp:105 src/pce/hes.cpp:144 +#, c-format +msgid "" +"Warning: HES is trying to load more data than is present in the file(%u " +"attempted, %u left)!\n" +msgstr "" + +#: src/pce_fast/hes.cpp:113 src/pce/hes.cpp:152 +msgid "Warning: HES is trying to load data past boundary.\n" +msgstr "" + +#: src/pce_fast/huc.cpp:124 +#, c-format +msgid "ROM CRC32: 0x%04x\n" +msgstr "" + +#: src/pce_fast/huc.cpp:127 src/pce/huc.cpp:266 +msgid "HuCard ROM" +msgstr "" + +#: src/pce_fast/huc.cpp:191 src/pce/huc.cpp:399 +msgid "Tsushin Booster RAM" +msgstr "" + +#: src/pce_fast/huc.cpp:263 src/pce_fast/huc.cpp:264 src/pce_fast/pce.cpp:625 +#: src/pce/pce.cpp:672 src/pce/pce.cpp:673 src/pce/pce.cpp:1083 +msgid "PC Engine ROM Image" +msgstr "" + +#: src/pce_fast/huc.cpp:265 src/pce/pce.cpp:674 src/md/cd/cd.cpp:903 +#: src/md/cd/cd.cpp:904 src/gba/GBA.cpp:2549 +msgid "BIOS Image" +msgstr "" + +#: src/pce_fast/huc.cpp:271 src/pce/pce.cpp:690 +msgid "CD BIOS" +msgstr "" + +#: src/pce_fast/huc.cpp:317 +#, c-format +msgid "CD MD5(first 256KiB): 0x%s\n" +msgstr "" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +#, c-format +msgid "Arcade Card Emulation: %s\n" +msgstr "" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +msgid "Enabled" +msgstr "" + +#: src/pce_fast/huc.cpp:344 src/pce/huc.cpp:351 +#, c-format +msgid "Error creating %s object: %s" +msgstr "" + +#: src/pce_fast/pce.cpp:177 src/pce/pce.cpp:339 +#, c-format +msgid "CD-DA Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:180 src/pce/pce.cpp:342 +#, c-format +msgid "ADPCM Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:282 +#, c-format +msgid "CPU overclock: %dx\n" +msgstr "" + +#: src/pce_fast/pce.cpp:285 +#, c-format +msgid "CD-ROM speed: %ux\n" +msgstr "" + +#: src/pce_fast/pce.cpp:348 src/pce/pce.cpp:350 +#, c-format +msgid "CD PSG Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:599 src/md/system.cpp:517 +msgid "Correct the aspect ratio." +msgstr "" + +#: src/pce_fast/pce.cpp:600 src/pce/pce.cpp:1004 src/pcfx/pcfx.cpp:1079 +msgid "First rendered scanline." +msgstr "" + +#: src/pce_fast/pce.cpp:601 src/pce/pce.cpp:1005 src/pcfx/pcfx.cpp:1080 +msgid "Last rendered scanline." +msgstr "" + +#: src/pce_fast/pce.cpp:602 src/pcfx/pcfx.cpp:1067 +msgid "Mouse sensitivity." +msgstr "" + +#: src/pce_fast/pce.cpp:603 src/pce/pce.cpp:1010 +msgid "" +"If set, when RUN+SEL are pressed simultaneously, disable both buttons " +"temporarily." +msgstr "" + +#: src/pce_fast/pce.cpp:604 src/pce/pce.cpp:1015 +msgid "Force SuperGrafx emulation." +msgstr "" + +#: src/pce_fast/pce.cpp:605 src/pce/pce.cpp:1018 +msgid "Enable Arcade Card emulation." +msgstr "" + +#: src/pce_fast/pce.cpp:606 +msgid "CPU overclock multiplier." +msgstr "" + +#: src/pce_fast/pce.cpp:607 +msgid "CD-ROM data transfer speed multiplier." +msgstr "" + +#: src/pce_fast/pce.cpp:608 src/pce/pce.cpp:1021 src/pcfx/pcfx.cpp:1076 +msgid "Remove 16-sprites-per-scanline hardware limit." +msgstr "" + +#: src/pce_fast/pce.cpp:610 src/pce/pce.cpp:1024 src/md/system.cpp:515 +msgid "Path to the CD BIOS" +msgstr "" + +#: src/pce_fast/pce.cpp:611 +msgid "Enable lowpass filter dependent on playback-frequency." +msgstr "" + +#: src/pce_fast/pce.cpp:612 src/pce/pce.cpp:1032 +msgid "PSG volume when playing a CD game." +msgstr "" + +#: src/pce_fast/pce.cpp:613 src/pce/pce.cpp:1033 +msgid "CD-DA volume." +msgstr "" + +#: src/pce_fast/pce.cpp:614 src/pce/pce.cpp:1034 +msgid "ADPCM volume." +msgstr "" + +#: src/pce_fast/pce.cpp:626 src/pce/pce.cpp:1084 +msgid "PC Engine Music Rip" +msgstr "" + +#: src/pce_fast/pce.cpp:627 src/pce/pce.cpp:1085 +msgid "SuperGrafx ROM Image" +msgstr "" + +#: src/player.cpp:212 +msgid "Song:" +msgstr "" + +#: src/ngp/rom.cpp:104 +#, c-format +msgid "Name: %s\n" +msgstr "" + +#: src/ngp/rom.cpp:105 +msgid "System: " +msgstr "" + +#: src/ngp/rom.cpp:108 +msgid "Color" +msgstr "" + +#: src/ngp/rom.cpp:110 +msgid "Greyscale" +msgstr "" + +#: src/ngp/rom.cpp:114 +#, c-format +msgid "Catalog: %d (sub %d)\n" +msgstr "" + +#: src/ngp/rom.cpp:119 +#, c-format +msgid "Starting PC: 0x%06X\n" +msgstr "" + +#: src/ngp/neopop.cpp:134 src/sms/cart.cpp:94 src/md/cart/cart.cpp:340 +msgid "Cart ROM" +msgstr "" + +#: src/ngp/neopop.cpp:338 +msgid "Neo Geo Pocket ROM Image" +msgstr "" + +#: src/ngp/neopop.cpp:339 +msgid "Neo Geo Pocket Color ROM Image" +msgstr "" + +#: src/video/tblur.cpp:40 +#, c-format +msgid "Video temporal frame blur enabled with accumulation: %f.\n" +msgstr "" + +#: src/video/tblur.cpp:45 +msgid "Video temporal frame blur enabled.\n" +msgstr "" + +#: src/video/video.cpp:69 +#, c-format +msgid "Screen snapshot %d saved." +msgstr "" + +#: src/video/video.cpp:79 src/video/video.cpp:80 +#, c-format +msgid "Error saving screen snapshot: %s" +msgstr "" + +#: src/drivers/sound.cpp:144 src/drivers/sound.cpp:273 +msgid "Error opening a sound device." +msgstr "" + +#: src/drivers/sound.cpp:243 +msgid "" +"\n" +"Initializing sound...\n" +msgstr "" + +#: src/drivers/sound.cpp:248 +#, c-format +msgid "" +"\n" +"Unknown sound driver \"%s\". Supported sound drivers:\n" +msgstr "" + +#: src/drivers/sound.cpp:264 +#, c-format +msgid "Using \"%s\" audio driver with SexyAL's default device selection." +msgstr "" + +#: src/drivers/sound.cpp:266 +#, c-format +msgid "Using \"%s\" audio driver with device \"%s\":" +msgstr "" + +#: src/drivers/sound.cpp:282 +msgid "Set rate is out of range [22050-1048576]" +msgstr "" + +#: src/drivers/sound.cpp:287 +#, c-format +msgid "" +"\n" +"Bits: %u\n" +"Rate: %u\n" +"Channels: %u\n" +"Byte order: CPU %s\n" +"Buffer size: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:288 +#, c-format +msgid "Latency: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:294 +#, c-format +msgid "Period size: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:299 +msgid "" +"Warning: Period time is too large(it should be <= ~5.333ms). Video will " +"appear very jerky.\n" +msgstr "" + +#: src/drivers/joystick.cpp:169 +#, c-format +msgid "Joystick %d - %s - Unique ID: %016llx\n" +msgstr "" + +#: src/drivers/joystick.cpp:172 +#, c-format +msgid "Could not open joystick %d: %s.\n" +msgstr "" + +#: src/drivers/video-state.cpp:166 +#, c-format +msgid "-recording movie %d-" +msgstr "" + +#: src/drivers/video-state.cpp:168 +#, c-format +msgid "-playing movie %d-" +msgstr "" + +#: src/drivers/video-state.cpp:170 +msgid "-select movie-" +msgstr "" + +#: src/drivers/video-state.cpp:175 +msgid "-select state-" +msgstr "" + +#: src/drivers/help.cpp:40 +msgid "Toggle Help" +msgstr "" + +#: src/drivers/help.cpp:42 +msgid "Configure Command Key" +msgstr "" + +#: src/drivers/help.cpp:43 +msgid "Configure buttons on port n(1-5)" +msgstr "" + +#: src/drivers/help.cpp:44 +msgid "Select device on port n" +msgstr "" + +#: src/drivers/help.cpp:46 +msgid "Rotate Screen" +msgstr "" + +#: src/drivers/help.cpp:47 +msgid "Toggle Fullscreen Mode" +msgstr "" + +#: src/drivers/help.cpp:48 +msgid "Take Screen Snapshot" +msgstr "" + +#: src/drivers/help.cpp:50 +msgid "Enable state rewinding" +msgstr "" + +#: src/drivers/help.cpp:51 src/drivers/input.cpp:703 +msgid "Rewind" +msgstr "" + +#: src/drivers/help.cpp:52 +msgid "Save State" +msgstr "" + +#: src/drivers/help.cpp:53 +msgid "Select Disk" +msgstr "" + +#: src/drivers/help.cpp:54 +msgid "Load State" +msgstr "" + +#: src/drivers/help.cpp:55 +msgid "Insert coin; Insert/Eject disk" +msgstr "" + +#: src/drivers/help.cpp:57 +msgid "(Soft) Reset, if available on emulated system." +msgstr "" + +#: src/drivers/help.cpp:58 +msgid "Power Toggle/Hard Reset" +msgstr "" + +#: src/drivers/help.cpp:59 src/drivers/input.cpp:702 +msgid "Exit" +msgstr "" + +#: src/drivers/help.cpp:64 +msgid "Mednafen Quickie Help" +msgstr "" + +#: src/drivers/help.cpp:67 +msgid "Default key assignments:" +msgstr "" + +#: src/drivers/video.cpp:385 +msgid "Initializing video...\n" +msgstr "" + +#: src/drivers/video.cpp:454 +msgid "Could not load OpenGL library, disabling OpenGL usage!" +msgstr "" + +#: src/drivers/video.cpp:481 +msgid "Eep! Effective X scale setting is way too high. Correcting." +msgstr "" + +#: src/drivers/video.cpp:487 +msgid "Eep! Effective Y scale setting is way too high. Correcting." +msgstr "" + +#: src/drivers/video.cpp:526 +#, c-format +msgid "Video Driver: %s\n" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "OpenGL" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Overlay" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Software SDL" +msgstr "" + +#: src/drivers/video.cpp:528 +#, c-format +msgid "Video Mode: %d x %d x %d bpp\n" +msgstr "" + +#: src/drivers/video.cpp:531 +#, c-format +msgid "" +"Sorry, %dbpp modes are not supported by Mednafen. Supported bit depths are " +"16bpp, 24bpp, and 32bpp.\n" +msgstr "" + +#: src/drivers/video.cpp:542 +#, c-format +msgid "Pixel shader: %s\n" +msgstr "" + +#: src/drivers/video.cpp:546 +#, c-format +msgid "Fullscreen: %s\n" +msgstr "" + +#: src/drivers/video.cpp:546 +msgid "Yes" +msgstr "" + +#: src/drivers/video.cpp:546 +msgid "No" +msgstr "" + +#: src/drivers/video.cpp:547 +#, c-format +msgid "Special Scaler: %s\n" +msgstr "" + +#: src/drivers/video.cpp:550 +msgid "Scanlines: Off\n" +msgstr "" + +#: src/drivers/video.cpp:552 +#, c-format +msgid "Scanlines: %d%% opacity\n" +msgstr "" + +#: src/drivers/video.cpp:554 +#, c-format +msgid "Destination Rectangle: X=%d, Y=%d, W=%d, H=%d\n" +msgstr "" + +#: src/drivers/video.cpp:559 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. This is ok if " +"you really do want the clipping...\n" +msgstr "" + +#: src/drivers/video.cpp:561 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. The rectangle " +"will be adjusted to fit within the screen area.\n" +msgstr "" + +#: src/drivers/opengl.cpp:320 +msgid "OpenGL dummy black texture data" +msgstr "" + +#: src/drivers/opengl.cpp:550 +#, c-format +msgid "Error getting proc address for: %s\n" +msgstr "" + +#: src/drivers/opengl.cpp:608 +#, c-format +msgid "OpenGL Implementation: %s %s %s\n" +msgstr "" + +#: src/drivers/opengl.cpp:612 +msgid "Checking extensions:\n" +msgstr "" + +#: src/drivers/opengl.cpp:619 +msgid "GL_ARB_texture_non_power_of_two found.\n" +msgstr "" + +#: src/drivers/opengl.cpp:645 +#, c-format +msgid "Invalid pixel shader type: %s\n" +msgstr "" + +#: src/drivers/opengl.cpp:683 +msgid "Using non-power-of-2 sized textures.\n" +msgstr "" + +#: src/drivers/opengl.cpp:685 +msgid "Using power-of-2 sized textures.\n" +msgstr "" + +#: src/drivers/opengl.cpp:783 +msgid "Checking maximum texture size...\n" +msgstr "" + +#: src/drivers/opengl.cpp:801 +#, c-format +msgid "Apparently it is at least: %d x %d\n" +msgstr "" + +#: src/drivers/opengl.cpp:805 +msgid "" +"Warning: Maximum texture size is reported as being less than 256, but we " +"can't handle that.\n" +msgstr "" + +#: src/drivers/opengl.cpp:829 +msgid "Using GL_RGBA, GL_UNSIGNED_BYTE for texture source data.\n" +msgstr "" + +#: src/drivers/opengl.cpp:839 +msgid "Using GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV for texture source data.\n" +msgstr "" + +#: src/drivers/input.cpp:530 +msgid "Cannot change input device during netplay." +msgstr "" + +#: src/drivers/input.cpp:534 +msgid "Cannot change input device while state rewinding is active." +msgstr "" + +#: src/drivers/input.cpp:553 +#, c-format +msgid "%s selected on port %d" +msgstr "" + +#: src/drivers/input.cpp:640 +msgid "Save state" +msgstr "" + +#: src/drivers/input.cpp:641 +msgid "Load state" +msgstr "" + +#: src/drivers/input.cpp:642 +msgid "Save movie" +msgstr "" + +#: src/drivers/input.cpp:643 +msgid "Load movie" +msgstr "" + +#: src/drivers/input.cpp:644 +msgid "Toggle state rewind functionality" +msgstr "" + +#: src/drivers/input.cpp:646 +msgid "Save state 0 select" +msgstr "" + +#: src/drivers/input.cpp:647 +msgid "Save state 1 select" +msgstr "" + +#: src/drivers/input.cpp:648 +msgid "Save state 2 select" +msgstr "" + +#: src/drivers/input.cpp:649 +msgid "Save state 3 select" +msgstr "" + +#: src/drivers/input.cpp:650 +msgid "Save state 4 select" +msgstr "" + +#: src/drivers/input.cpp:651 +msgid "Save state 5 select" +msgstr "" + +#: src/drivers/input.cpp:652 +msgid "Save state 6 select" +msgstr "" + +#: src/drivers/input.cpp:653 +msgid "Save state 7 select" +msgstr "" + +#: src/drivers/input.cpp:654 +msgid "Save state 8 select" +msgstr "" + +#: src/drivers/input.cpp:655 +msgid "Save state 9 select" +msgstr "" + +#: src/drivers/input.cpp:657 +msgid "Movie 0 select" +msgstr "" + +#: src/drivers/input.cpp:658 +msgid "Movie 1 select" +msgstr "" + +#: src/drivers/input.cpp:659 +msgid "Movie 2 select" +msgstr "" + +#: src/drivers/input.cpp:660 +msgid "Movie 3 select" +msgstr "" + +#: src/drivers/input.cpp:661 +msgid "Movie 4 select" +msgstr "" + +#: src/drivers/input.cpp:662 +msgid "Movie 5 select" +msgstr "" + +#: src/drivers/input.cpp:663 +msgid "Movie 6 select" +msgstr "" + +#: src/drivers/input.cpp:664 +msgid "Movie 7 select" +msgstr "" + +#: src/drivers/input.cpp:665 +msgid "Movie 8 select" +msgstr "" + +#: src/drivers/input.cpp:666 +msgid "Movie 9 select" +msgstr "" + +#: src/drivers/input.cpp:668 +msgid "Toggle graphics layer 1" +msgstr "" + +#: src/drivers/input.cpp:669 +msgid "Toggle graphics layer 2" +msgstr "" + +#: src/drivers/input.cpp:670 +msgid "Toggle graphics layer 3" +msgstr "" + +#: src/drivers/input.cpp:671 +msgid "Toggle graphics layer 4" +msgstr "" + +#: src/drivers/input.cpp:672 +msgid "Toggle graphics layer 5" +msgstr "" + +#: src/drivers/input.cpp:673 +msgid "Toggle graphics layer 6" +msgstr "" + +#: src/drivers/input.cpp:674 +msgid "Toggle graphics layer 7" +msgstr "" + +#: src/drivers/input.cpp:675 +msgid "Toggle graphics layer 8" +msgstr "" + +#: src/drivers/input.cpp:676 +msgid "Toggle graphics layer 9" +msgstr "" + +#: src/drivers/input.cpp:678 +msgid "Take screen snapshot" +msgstr "" + +#: src/drivers/input.cpp:679 +msgid "Toggle fullscreen mode" +msgstr "" + +#: src/drivers/input.cpp:680 +msgid "Fast-forward" +msgstr "" + +#: src/drivers/input.cpp:681 +msgid "Slow-forward" +msgstr "" + +#: src/drivers/input.cpp:683 +msgid "Insert coin" +msgstr "" + +#: src/drivers/input.cpp:684 +msgid "Toggle DIP switch view" +msgstr "" + +#: src/drivers/input.cpp:685 +msgid "Select disk/disc" +msgstr "" + +#: src/drivers/input.cpp:686 +msgid "Insert/Eject disk/disc" +msgstr "" + +#: src/drivers/input.cpp:687 +msgid "Activate barcode(for Famicom)" +msgstr "" + +#: src/drivers/input.cpp:688 +msgid "Grab input" +msgstr "" + +#: src/drivers/input.cpp:689 +msgid "Grab input and disable commands" +msgstr "" + +#: src/drivers/input.cpp:690 +msgid "Configure buttons on virtual port 1" +msgstr "" + +#: src/drivers/input.cpp:691 +msgid "Configure buttons on virtual port 2" +msgstr "" + +#: src/drivers/input.cpp:692 +msgid "Configure buttons on virtual port 3" +msgstr "" + +#: src/drivers/input.cpp:693 +msgid "Configure buttons on virtual port 4" +msgstr "" + +#: src/drivers/input.cpp:694 +msgid "Configure buttons on virtual port 5" +msgstr "" + +#: src/drivers/input.cpp:695 +msgid "Configure buttons on virtual port 6" +msgstr "" + +#: src/drivers/input.cpp:696 +msgid "Configure buttons on virtual port 7" +msgstr "" + +#: src/drivers/input.cpp:697 +msgid "Configure buttons on virtual port 8" +msgstr "" + +#: src/drivers/input.cpp:698 +msgid "Configure command key" +msgstr "" + +#: src/drivers/input.cpp:700 +msgid "Reset" +msgstr "" + +#: src/drivers/input.cpp:701 +msgid "Power toggle" +msgstr "" + +#: src/drivers/input.cpp:704 +msgid "Rotate screen" +msgstr "" + +#: src/drivers/input.cpp:706 +msgid "Toggle netplay console" +msgstr "" + +#: src/drivers/input.cpp:707 +msgid "Advance frame" +msgstr "" + +#: src/drivers/input.cpp:708 +msgid "Return to normal mode after advancing frames" +msgstr "" + +#: src/drivers/input.cpp:709 +msgid "Toggle cheat console" +msgstr "" + +#: src/drivers/input.cpp:710 +msgid "Enable/Disable cheats" +msgstr "" + +#: src/drivers/input.cpp:711 +msgid "Toggle frames-per-second display" +msgstr "" + +#: src/drivers/input.cpp:712 +msgid "Toggle debugger" +msgstr "" + +#: src/drivers/input.cpp:713 +msgid "Decrease selected save state slot by 1" +msgstr "" + +#: src/drivers/input.cpp:714 +msgid "Increase selected save state slot by 1" +msgstr "" + +#: src/drivers/input.cpp:715 +msgid "Toggle help screen" +msgstr "" + +#: src/drivers/input.cpp:716 +msgid "Select virtual device on virtual input port 1" +msgstr "" + +#: src/drivers/input.cpp:717 +msgid "Select virtual device on virtual input port 2" +msgstr "" + +#: src/drivers/input.cpp:718 +msgid "Select virtual device on virtual input port 3" +msgstr "" + +#: src/drivers/input.cpp:719 +msgid "Select virtual device on virtual input port 4" +msgstr "" + +#: src/drivers/input.cpp:720 +msgid "Select virtual device on virtual input port 5" +msgstr "" + +#: src/drivers/input.cpp:721 +msgid "Select virtual device on virtual input port 6" +msgstr "" + +#: src/drivers/input.cpp:722 +msgid "Select virtual device on virtual input port 7" +msgstr "" + +#: src/drivers/input.cpp:723 +msgid "Select virtual device on virtual input port 8" +msgstr "" + +#: src/drivers/input.cpp:950 +msgid "Configuration interrupted." +msgstr "" + +#: src/drivers/input.cpp:968 src/drivers/input.cpp:1613 +msgid "Configuration finished." +msgstr "" + +#: src/drivers/input.cpp:979 +msgid "Press command key to remap now..." +msgstr "" + +#: src/drivers/input.cpp:995 +msgid "Input grabbing enabled." +msgstr "" + +#: src/drivers/input.cpp:997 +msgid "Input grabbing disabled." +msgstr "" + +#: src/drivers/input.cpp:1013 +msgid "Command processing disabled." +msgstr "" + +#: src/drivers/input.cpp:1015 +msgid "Command processing enabled." +msgstr "" + +#: src/drivers/input.cpp:1040 +msgid "Application of cheats enabled." +msgstr "" + +#: src/drivers/input.cpp:1042 +msgid "Application of cheats disabled." +msgstr "" + +#: src/drivers/input.cpp:1073 +#, c-format +msgid "No buttons to configure for input port %d!" +msgstr "" + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality enabled." +msgstr "" + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality disabled." +msgstr "" + +#: src/drivers/input.cpp:1285 +msgid "Barcode Entered" +msgstr "" + +#: src/drivers/input.cpp:1287 +msgid "Enter Barcode" +msgstr "" + +#: src/drivers/input.cpp:1293 +#, c-format +msgid "Barcode: %s" +msgstr "" + +#: src/drivers/main.cpp:61 +msgid "Full-screen horizontal resolution." +msgstr "" + +#: src/drivers/main.cpp:62 +msgid "Full-screen vertical resolution." +msgstr "" + +#: src/drivers/main.cpp:63 +msgid "" +"A value of \"0\" will cause the desktop horizontal resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:64 +msgid "A value of \"0\" will cause the desktop vertical resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:66 +msgid "Scaling factor for the X axis." +msgstr "" + +#: src/drivers/main.cpp:67 +msgid "Scaling factor for the Y axis." +msgstr "" + +#: src/drivers/main.cpp:69 +msgid "Scaling factor for the X axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:70 +msgid "Scaling factor for the Y axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:71 +msgid "" +"For this settings to have any effect, the \".stretch\" setting must " +"be set to \"0\"." +msgstr "" + +#: src/drivers/main.cpp:73 +msgid "Enable scanlines with specified opacity." +msgstr "" + +#: src/drivers/main.cpp:74 +msgid "" +"Opacity is specified in %; IE a value of \"100\" will give entirely black " +"scanlines." +msgstr "" + +#: src/drivers/main.cpp:76 +msgid "Stretch to fill screen." +msgstr "" + +#: src/drivers/main.cpp:77 +msgid "Enable (bi)linear interpolation." +msgstr "" + +#: src/drivers/main.cpp:80 +msgid "Enable specified special video scaler." +msgstr "" + +#: src/drivers/main.cpp:81 +msgid "" +"The destination rectangle is NOT altered by this setting, so if you have " +"xscale and yscale set to \"2\", and try to use a 3x scaling filter like " +"hq3x, the image is not going to look that great. The nearest-neighbor " +"scalers are intended for use with bilinear interpolation enabled, at high " +"resolutions(such as 1280x1024; nn2x(or nny2x) + bilinear interpolation + " +"fullscreen stretching at this resolution looks quite nice)." +msgstr "" + +#: src/drivers/main.cpp:83 +msgid "Enable specified OpenGL pixel shader." +msgstr "" + +#: src/drivers/main.cpp:84 +msgid "" +"Obviously, this will only work with the OpenGL \"video.driver\" setting, and " +"only on cards and OpenGL implementations that support pixel shaders, " +"otherwise you will get a black screen, or Mednafen may display an error " +"message when starting up. Bilinear interpolation is disabled with pixel " +"shaders, and any interpolation, if present, will be noted in the description " +"of each pixel shader." +msgstr "" + +#: src/drivers/main.cpp:93 +msgid "This output method is preferred, as all features are available with it." +msgstr "" + +#: src/drivers/main.cpp:94 +msgid "" +"Slower with lower-quality scaling than OpenGL, but if you don't have " +"hardware-accelerated OpenGL rendering, it will be faster than software " +"OpenGL rendering. Bilinear interpolation not available. Pixel shaders do not " +"work with this output method, of course." +msgstr "" + +#: src/drivers/main.cpp:95 +msgid "" +"As fast as OpenGL, perhaps faster in some situations, *if* it's hardware-" +"accelerated. Scanline effects are not available. hq2x, hq3x, hq4x are not " +"available. The OSD may be missing or glitchy. Bilinear interpolation can't " +"be turned off. Harsh chroma subsampling blurring in some picture types. If " +"you use this output method, it is strongly recommended to use a special " +"scaler with it, such as nn2x." +msgstr "" + +#: src/drivers/main.cpp:102 +msgid "Default sound driver." +msgstr "" + +#: src/drivers/main.cpp:104 +msgid "A recommended driver, and the default for Linux(if available)." +msgstr "" + +#: src/drivers/main.cpp:105 +msgid "" +"A recommended driver, and the default for non-Linux UN*X/POSIX/BSD systems, " +"or anywhere ALSA is unavailable. If the ALSA driver gives you problems, you " +"can try using this one instead.\n" +"\n" +"If you are using OSSv4 or newer, you should edit \"/usr/lib/oss/conf/osscore." +"conf\", uncomment the max_intrate= line, and change the value from 100" +"(default) to 1000(or higher if you know what you're doing), and restart OSS. " +"Otherwise, performance will be poor, and the sound buffer size in Mednafen " +"will be orders of magnitude larger than specified.\n" +"\n" +"If the sound buffer size is still excessively larger than what is specified " +"via the \"sound.buffer_time\" setting, you can try setting \"sound." +"period_time\" to 2666, and as a last resort, 5333, to work around a design " +"flaw/limitation/choice in the OSS API and OSS implementation." +msgstr "" + +#: src/drivers/main.cpp:106 +msgid "A recommended driver, and the default for Microsoft Windows." +msgstr "" + +#: src/drivers/main.cpp:107 +msgid "" +"This driver is not recommended, but it serves as a backup driver if the " +"others aren't available. Its performance is generally sub-par, requiring " +"higher latency or faster CPUs/SMP for glitch-free playback, except where the " +"OS provides a sound callback API itself, such as with Mac OS X and BeOS." +msgstr "" + +#: src/drivers/main.cpp:108 +msgid "" +"Somewhat experimental driver, unusably buggy until Mednafen 0.8.C. The " +"\"sound.buffer_time\" setting controls the size of the local sound buffer, " +"not the server's sound buffer, and the latency reported during startup is " +"for the local sound buffer only. Please note that video card drivers(in the " +"kernel or X), and hardware-accelerated OpenGL, may interfere with jackd's " +"ability to effectively run with realtime response." +msgstr "" + +#: src/drivers/main.cpp:139 +msgid "" +"Will automatically interpolate on each axis if the corresponding effective " +"scaling factor is not an integer." +msgstr "" + +#: src/drivers/main.cpp:140 +msgid "" +"Same as \"autoip\", but when interpolation is done, it is done in a manner " +"that will reduce blurriness if possible." +msgstr "" + +#: src/drivers/main.cpp:157 +msgid "Server hostname." +msgstr "" + +#: src/drivers/main.cpp:158 +msgid "Server port." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Server password." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Password to connect to the netplay server." +msgstr "" + +#: src/drivers/main.cpp:160 +msgid "Local player count." +msgstr "" + +#: src/drivers/main.cpp:160 +msgid "Number of local players for network play." +msgstr "" + +#: src/drivers/main.cpp:161 +msgid "Nickname." +msgstr "" + +#: src/drivers/main.cpp:161 +msgid "Nickname to use for network play chat." +msgstr "" + +#: src/drivers/main.cpp:162 +msgid "Key to hash with the MD5 hash of the game." +msgstr "" + +#: src/drivers/main.cpp:163 +msgid "Merge input to this player # on the server." +msgstr "" + +#: src/drivers/main.cpp:164 +msgid "Use small(tiny!) font for netplay chat console." +msgstr "" + +#: src/drivers/main.cpp:166 +msgid "Enable fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:167 +msgid "Select video driver, \"opengl\" or \"sdl\"." +msgstr "" + +#: src/drivers/main.cpp:168 +msgid "Attempt to synchronize OpenGL page flips to vertical retrace period." +msgstr "" + +#: src/drivers/main.cpp:169 +msgid "" +"Note: Additionally, if the environment variable \"__GL_SYNC_TO_VBLANK\" does " +"not exist, then it will be created and set to the value specified for this " +"setting. This has the effect of forcibly enabling or disabling vblank " +"synchronization when running under Linux with NVidia's drivers." +msgstr "" + +#: src/drivers/main.cpp:172 +msgid "Enable frameskip during emulation rendering." +msgstr "" + +#: src/drivers/main.cpp:173 +msgid "Disable for rendering code performance testing." +msgstr "" + +#: src/drivers/main.cpp:175 +msgid "Fast-forwarding speed multiplier." +msgstr "" + +#: src/drivers/main.cpp:176 +msgid "Treat the fast-forward button as a toggle." +msgstr "" + +#: src/drivers/main.cpp:177 +msgid "Silence sound output when fast-forwarding." +msgstr "" + +#: src/drivers/main.cpp:179 +msgid "SLOW-forwarding speed multiplier." +msgstr "" + +#: src/drivers/main.cpp:180 +msgid "Treat the SLOW-forward button as a toggle." +msgstr "" + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency." +msgstr "" + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency = GameSystemFrameRateHz / (value + 1)" +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Analog axis press threshold." +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Threshold for detecting a \"button\" press on analog axis, in percent." +msgstr "" + +#: src/drivers/main.cpp:184 +msgid "Dangerous key action delay." +msgstr "" + +#: src/drivers/main.cpp:184 +msgid "" +"The length of time, in milliseconds, that a button/key corresponding to a " +"\"dangerous\" command like power, reset, exit, etc. must be pressed before " +"the command is executed." +msgstr "" + +#: src/drivers/main.cpp:185 +msgid "Disable speed throttling when sound is disabled." +msgstr "" + +#: src/drivers/main.cpp:186 +msgid "Automatic load/save state on game load/save." +msgstr "" + +#: src/drivers/main.cpp:186 +msgid "" +"Automatically save and load save states when a game is closed or loaded, " +"respectively." +msgstr "" + +#: src/drivers/main.cpp:187 +msgid "Select sound driver." +msgstr "" + +#: src/drivers/main.cpp:187 +msgid "" +"The following choices are possible, sorted by preference, high to low, when " +"\"default\" driver is used, but dependent on being compiled in." +msgstr "" + +#: src/drivers/main.cpp:188 +msgid "Select sound output device." +msgstr "" + +#: src/drivers/main.cpp:189 +msgid "Sound volume level, in percent." +msgstr "" + +#: src/drivers/main.cpp:190 +msgid "Enable sound output." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "Desired period size in microseconds." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "" +"Currently only affects OSS and ALSA output. A value of 0 defers to the " +"default in the driver code in SexyAL.\n" +"\n" +"Note: This is not the \"sound buffer size\" setting, that would be \"sound." +"buffer_time\"." +msgstr "" + +#: src/drivers/main.cpp:192 +msgid "Desired total buffer size in milliseconds." +msgstr "" + +#: src/drivers/main.cpp:199 +msgid "Specifies the sound playback rate, in sound frames per second(\"Hz\")." +msgstr "" + +#: src/drivers/main.cpp:202 +msgid "Automatically go into the debugger's step mode after a game is loaded." +msgstr "" + +#: src/drivers/main.cpp:205 +msgid "" +"The length of time, in milliseconds, to display the save state or the movie " +"selector after selecting a state or movie." +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full" +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full-screen stretch, disregarding aspect ratio." +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "Aspect Preserve" +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "" +"Full-screen stretch as far as the aspect ratio(in this sense, the equivalent " +"xscalefs == yscalefs) can be maintained." +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "Aspect Preserve + Integer Scale" +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "" +"Full-screen stretch, same as \"aspect\" except that the equivalent xscalefs " +"and yscalefs are rounded down to the nearest integer." +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "Aspect Preserve + Integer Multiple-of-2 Scale" +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "" +"Full-screen stretch, same as \"aspect_int\", but rounds down to the nearest " +"multiple of 2." +msgstr "" + +#: src/drivers/main.cpp:263 +msgid "Bilinear" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Linear (X)" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Interpolation only on the X axis." +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Linear (Y)" +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Interpolation only on the Y axis." +msgstr "" + +#: src/drivers/main.cpp:283 +msgid "Disassembly font size." +msgstr "" + +#: src/drivers/main.cpp:286 +msgid "Character encoding for the debugger's memory editor." +msgstr "" + +#: src/drivers/main.cpp:480 +msgid "How DARE you interrupt me!\n" +msgstr "" + +#: src/drivers/main.cpp:484 +msgid "MUST TERMINATE ALL HUMANS\n" +msgstr "" + +#: src/drivers/main.cpp:488 +msgid "Reach out and hang-up on someone.\n" +msgstr "" + +#: src/drivers/main.cpp:492 +msgid "" +"Iyeeeeeeeee!!! A segmentation fault has occurred. Have a fluffy day.\n" +msgstr "" + +#: src/drivers/main.cpp:496 +msgid "The pipe has broken! Better watch out for floods...\n" +msgstr "" + +#: src/drivers/main.cpp:501 +msgid "I told you to be nice to the driver.\n" +msgstr "" + +#: src/drivers/main.cpp:505 +msgid "Those darn floating points. Ne'er know when they'll bite!\n" +msgstr "" + +#: src/drivers/main.cpp:509 +msgid "Don't throw your clock at the meowing cats!\n" +msgstr "" + +#: src/drivers/main.cpp:513 +msgid "Abort, Retry, Ignore, Fail?\n" +msgstr "" + +#: src/drivers/main.cpp:517 src/drivers/main.cpp:521 +msgid "Killing your processes is not nice.\n" +msgstr "" + +#: src/drivers/main.cpp:531 +msgid "" +"\n" +"Signal has been caught and dealt with: " +msgstr "" + +#: src/drivers/main.cpp:656 +msgid "Show help!" +msgstr "" + +#: src/drivers/main.cpp:657 +msgid "Enable remote mode(EXPERIMENTAL AND INCOMPLETE)." +msgstr "" + +#: src/drivers/main.cpp:659 +msgid "Load and boot a CD for the specified system." +msgstr "" + +#: src/drivers/main.cpp:661 +msgid "Force usage of specified emulation module." +msgstr "" + +#: src/drivers/main.cpp:663 +msgid "Record sound output to the specified filename in the MS WAV format." +msgstr "" + +#: src/drivers/main.cpp:664 +msgid "" +"Record video and audio output to the specified filename in the QuickTime " +"format." +msgstr "" + +#: src/drivers/main.cpp:666 +msgid "Dump settings definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:667 +msgid "Dump modules definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:671 +msgid "Connect to the remote server and start network play." +msgstr "" + +#: src/drivers/main.cpp:676 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]\n" +msgstr "" + +#: src/drivers/main.cpp:679 +#, c-format +msgid "" +"No command-line arguments specified.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:681 +#, c-format +msgid "" +"\tPlease refer to the documentation for option parameters and usage.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:694 +#, c-format +msgid "" +"Each setting(listed in the documentation) can also be passed as an argument " +"by prefixing the name with a hyphen,\n" +"and specifying the value to change the setting to as the next argument.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:695 +#, c-format +msgid "" +"For example:\n" +"\t%s -pce.xres 1680 -pce.yres 1050 -pce.stretch aspect -pce.pixshader " +"ipsharper \"Hyper Bonk Soldier.pce\"\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:696 +#, c-format +msgid "" +"Settings specified in this manner are automatically saved to the " +"configuration file, hence they\n" +"do not need to be passed to future invocations of the Mednafen executable.\n" +msgstr "" + +#: src/drivers/main.cpp:712 +msgid "No game filename specified!" +msgstr "" + +#: src/drivers/main.cpp:1388 +#, c-format +msgid "Compiled with gcc %s\n" +msgstr "" + +#: src/drivers/main.cpp:1396 +#, c-format +msgid "Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n" +msgstr "" + +#: src/drivers/main.cpp:1406 +#, c-format +msgid "Running with %s\n" +msgstr "" + +#: src/drivers/main.cpp:1413 +#, c-format +msgid "Compiled against zlib %s, running with zlib %s\n" +msgstr "" + +#: src/drivers/main.cpp:1494 +#, c-format +msgid "Starting Mednafen %s\n" +msgstr "" + +#: src/drivers/main.cpp:1497 +msgid "Build information:\n" +msgstr "" + +#: src/drivers/main.cpp:1505 +#, c-format +msgid "Base directory: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1529 +#, c-format +msgid "Could not create mutex: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1567 +#, c-format +msgid "Error creating directories: %s\n" +msgstr "" + +#: src/drivers/netplay.cpp:245 +msgid "*** Error intializing SDL_net!" +msgstr "" + +#: src/drivers/netplay.cpp:256 +#, c-format +msgid "*** Error resolving host \"%s\"!" +msgstr "" + +#: src/drivers/netplay.cpp:263 +#, c-format +msgid "*** Error connecting to remote host \"%s\" on port %u!" +msgstr "" + +#: src/drivers/netplay.cpp:267 +msgid "*** Sending initialization data to server." +msgstr "" + +#: src/drivers/netplay.cpp:275 +msgid "*** Connection established." +msgstr "" + +#: src/lynx/system.cpp:382 +msgid "Virtually rotate D-pad along with screen." +msgstr "" + +#: src/lynx/system.cpp:383 +msgid "Enable sound output lowpass filter." +msgstr "" + +#: src/lynx/system.cpp:433 +msgid "Atari Lynx ROM Image" +msgstr "" + +#: src/lynx/rom.cpp:67 +msgid "Lynx Boot ROM" +msgstr "" + +#: src/lynx/rom.cpp:74 +msgid "The Lynx Boot ROM Image is an incorrect size." +msgstr "" + +#: src/pce/mcgenjin.cpp:197 +msgid "MCGenjin ROM size is too small!" +msgstr "" + +#: src/pce/mcgenjin.cpp:200 +msgid "MC Genjin header magic missing!" +msgstr "" + +#: src/pce/mcgenjin.cpp:220 +#, c-format +msgid "Unsupported MCGENJIN device on CS%d: 0x%02x" +msgstr "" + +#: src/pce/mcgenjin.cpp:224 +#, c-format +msgid "CS%d: Unused\n" +msgstr "" + +#: src/pce/mcgenjin.cpp:230 +#, c-format +msgid "CS%d: %uKiB %sRAM\n" +msgstr "" + +#: src/pce/hes.cpp:85 +msgid "HES header is too small." +msgstr "" + +#: src/pce/hes.cpp:91 +msgid "HES header magic is invalid." +msgstr "" + +#: src/pce/hes.cpp:109 +msgid "HES Information:\n" +msgstr "" + +#: src/pce/hes.cpp:114 +#, c-format +msgid "Init address: 0x%04x\n" +msgstr "" + +#: src/pce/hes.cpp:115 +#, c-format +msgid "Starting song: %d\n" +msgstr "" + +#: src/pce/hes.cpp:132 +msgid "Chunk load:\n" +msgstr "" + +#: src/pce/hes.cpp:134 +#, c-format +msgid "File offset: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:135 +#, c-format +msgid "Load size: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:136 +#, c-format +msgid "Load target address: 0x%08x\n" +msgstr "" + +#: src/pce/huc.cpp:207 +msgid "ROM image is too large!" +msgstr "" + +#: src/pce/huc.cpp:233 +msgid "CD RAM" +msgstr "" + +#: src/pce/huc.cpp:326 +msgid "System Card RAM" +msgstr "" + +#: src/pce/huc.cpp:372 +msgid "Populous RAM" +msgstr "" + +#: src/pce/pce.cpp:44 +msgid "HuC6280 as found in the original PC Engine." +msgstr "" + +#: src/pce/pce.cpp:45 +msgid "" +"HuC6280A as found in the SuperGrafx and CoreGrafx I. Provides proper " +"channel amplitude centering, but may cause clicking in a few games designed " +"with the original HuC6280's sound characteristics in mind." +msgstr "" + +#: src/pce/pce.cpp:46 +msgid "" +"Emulator-only pseudo-revision, designed to reduce clicking and audio " +"artifacts in games designed for either real revision." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "Match emulation mode." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "" +"Selects \"huc6280\" for non-SuperGrafx mode, and \"huc6280a\" for SuperGrafx" +"(full) mode." +msgstr "" + +#: src/pce/pce.cpp:507 +#, c-format +msgid "PSG Revision: %s\n" +msgstr "" + +#: src/pce/pce.cpp:707 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram_cd setting. This is " +"simulating a malfunction.\n" +msgstr "" + +#: src/pce/pce.cpp:731 +#, c-format +msgid "CD Layout: 0x%s\n" +msgstr "" + +#: src/pce/pce.cpp:1002 +msgid "Enable multitap(TurboTap) emulation." +msgstr "" + +#: src/pce/pce.cpp:1007 +msgid "Show horizontal overscan area." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "Disable BRAM(saved game memory) for CD games." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "" +"It is intended for viewing CD games' error screens that may be different " +"from simple BRAM full and uninitialized BRAM error screens, though it can " +"cause the game to crash outright." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "Disable BRAM(saved game memory) for HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "" +"It is intended for changing the behavior(passwords vs save games) of some " +"HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1016 +msgid "" +"Enabling this option is not necessary to run unrecognized PCE ROM images in " +"SuperGrafx mode, and enabling it is discouraged; ROM images with a file " +"extension of \".sgx\" will automatically enable SuperGrafx emulation." +msgstr "" + +#: src/pce/pce.cpp:1019 +msgid "" +"Leaving this option enabled is recommended, unless you want to see special " +"warning screens on ACD games, or you prefer the non-enhanced modes of ACD-" +"enhanced SCD games. Additionally, you may want to disable it you you wish " +"to use state rewinding with a SCD ACD-enhanced game on a slow CPU, as the " +"extra 2MiB of RAM the Arcade Card offers is difficult to compress in real-" +"time." +msgstr "" + +#: src/pce/pce.cpp:1022 +msgid "" +"WARNING: Enabling this option may cause undesirable graphics glitching on " +"some games(such as \"Bloody Wolf\")." +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Path to the GE CD BIOS" +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Games Express CD Card BIOS (Unlicensed)" +msgstr "" + +#: src/pce/pce.cpp:1027 +msgid "Enable lowpass filter with rolloff dependent on playback-frequency." +msgstr "" + +#: src/pce/pce.cpp:1028 +msgid "" +"This makes ADPCM voices sound less \"harsh\", however, the downside is that " +"it will cause many ADPCM sound effects to sound a bit muffled." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "Select PSG revision." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "" +"WARNING: HES playback will always use the \"huc6280a\" revision if this " +"setting is set to \"match\", since HES playback is always done with " +"SuperGrafx emulation enabled." +msgstr "" + +#: src/pce/pce.cpp:1036 +msgid "" +"Size of emulated VRAM per VDC in 16-bit words. DO NOT CHANGE THIS UNLESS " +"YOU KNOW WTF YOU ARE DOING." +msgstr "" + +#: src/sms/cart.cpp:136 +#, c-format +msgid "Mapper: %s\n" +msgstr "" + +#: src/sms/cart.cpp:137 +#, c-format +msgid "Territory: %s\n" +msgstr "" + +#: src/sms/cart.cpp:137 src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Domestic" +msgstr "" + +#: src/sms/cart.cpp:137 +msgid "Export" +msgstr "" + +#: src/sms/system.cpp:383 +msgid "Domestic(Japanese)" +msgstr "" + +#: src/sms/system.cpp:384 +msgid "Export(World)" +msgstr "" + +#: src/sms/system.cpp:390 +msgid "System territory/region." +msgstr "" + +#: src/sms/system.cpp:391 +msgid "Enable FM sound emulation when playing domestic/Japan-region games." +msgstr "" + +#: src/sms/system.cpp:403 +msgid "Sega Master System ROM Image" +msgstr "" + +#: src/sms/system.cpp:409 +msgid "Game Gear ROM Image" +msgstr "" + +#: src/settings.cpp:89 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid unsigned integer." +msgstr "" + +#: src/settings.cpp:99 src/settings.cpp:131 src/settings.cpp:166 +#, c-format +msgid "" +"Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s" +"\"." +msgstr "" + +#: src/settings.cpp:110 src/settings.cpp:142 src/settings.cpp:177 +#, c-format +msgid "" +"Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s" +"\"." +msgstr "" + +#: src/settings.cpp:121 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid signed integer." +msgstr "" + +#: src/settings.cpp:156 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not set to a floating-point(real) number." +msgstr "" + +#: src/settings.cpp:186 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not a valid boolean value." +msgstr "" + +#: src/settings.cpp:214 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not a recognized string. Recognized " +"strings: %s" +msgstr "" + +#: src/settings.cpp:223 +#, c-format +msgid "Setting \"%s\" is not set to a valid string: \"%s\"" +msgstr "" + +#: src/settings.cpp:225 +#, c-format +msgid "Setting \"%s\" is not set to a valid unsigned integer: \"%s\"" +msgstr "" + +#: src/settings.cpp:336 +#, c-format +msgid "Loading settings from \"%s\"..." +msgstr "" + +#: src/settings.cpp:429 +msgid ";Edit this file at your own risk!\n" +msgstr "" + +#: src/settings.cpp:430 +msgid "" +";File format: \n" +"\n" +msgstr "" + +#: src/settings.cpp:638 +#, c-format +msgid "Unknown setting \"%s\"" +msgstr "" + +#: src/pcfx/rainbow.cpp:257 src/pcfx/rainbow.cpp:260 +msgid "Huffman LUT" +msgstr "" + +#: src/pcfx/rainbow.cpp:656 +msgid "RAINBOW buffer RAM" +msgstr "" + +#: src/pcfx/king.cpp:1681 +msgid "KING Data" +msgstr "" + +#: src/pcfx/input/gamepad.cpp:83 +#, c-format +msgid "Pad %d - MODE 1: %s, MODE 2: %s" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +#, c-format +msgid "V810 Emulation Mode: %s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Accurate" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Fast" +msgstr "" + +#: src/pcfx/pcfx.cpp:510 +msgid "RAM" +msgstr "" + +#: src/pcfx/pcfx.cpp:515 src/md/cd/cd.cpp:879 src/gba/GBA.cpp:762 +msgid "BIOS ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:522 src/pcfx/pcfx.cpp:539 +msgid "BIOS ROM file is incorrect size.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:545 +msgid "FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:635 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram setting. This is simulating " +"a malfunction.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:830 +#, c-format +msgid "CD Layout MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:833 +#, c-format +msgid "GameSet MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:876 +#, c-format +msgid "Emulated CD-ROM drive speed: %ux\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "Fast Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "" +"Fast mode trades timing accuracy, cache emulation, and executing from " +"hardware registers and RAM not intended for code use for performance." +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "Accurate Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "" +"Increased timing accuracy, though not perfect, along with cache emulation, " +"at the cost of decreased performance. Additionally, even the pipeline isn't " +"correctly and fully emulated in this mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "Auto Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "" +"Selects \"fast\" or \"accurate\" automatically based on an internal " +"database. If the CD image is not recognized, defaults to \"fast\"." +msgstr "" + +#: src/pcfx/pcfx.cpp:1044 +msgid "This value will cause heavy pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1045 +msgid "This value will cause moderate pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1046 +msgid "" +"This value will cause no pixel distortion as long as interpolation is " +"enabled on the video output device and the resolution is sufficiently high, " +"but it will use a lot of CPU time." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "Enable multitap on PC-FX port 1." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "Enable multitap on PC-FX port 2." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 6 7 8." +msgstr "" + +#: src/pcfx/pcfx.cpp:1068 +msgid "" +"When RUN+SEL are pressed simultaneously, disable both buttons temporarily." +msgstr "" + +#: src/pcfx/pcfx.cpp:1070 src/vb/vb.cpp:998 +msgid "CPU emulation mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1071 +msgid "Path to the ROM BIOS" +msgstr "" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Path to the FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Intended for developers only." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "Disable internal and external BRAM." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "" +"It is intended for viewing games' error screens that may be different from " +"simple BRAM full and uninitialized BRAM error screens, though it can cause " +"the game to crash outright." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "Emulated CD-ROM speed." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "" +"Setting this to \"1\" will probably cause most games with FMV to break, but " +"setting it higher than 2, the default, will decrease loading times in most " +"games by some degree." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "Emulated width for 7.16MHz dot-clock mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "" +"Lower values are faster, but will cause some degree of pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1082 +msgid "" +"Enable bilinear interpolation on the chroma channel of RAINBOW YUV output." +msgstr "" + +#: src/pcfx/pcfx.cpp:1084 +msgid "Hack to suppress clicks caused by forced channel resets." +msgstr "" + +#: src/pcfx/pcfx.cpp:1088 +msgid "" +"Hack that emulates the codec a buggy ADPCM encoder used for some games' " +"ADPCM." +msgstr "" + +#: src/md/cd/cd.cpp:884 +msgid "Battery-backed RAM" +msgstr "" + +#: src/md/cd/cd.cpp:890 +msgid "Program RAM" +msgstr "" + +#: src/md/cd/cd.cpp:895 +msgid "Word RAM" +msgstr "" + +#: src/md/cd/cd.cpp:912 +#, c-format +msgid "Could not open CD BIOS file \"%s\": %s\n" +msgstr "" + +#: src/md/cd/cd.cpp:918 +msgid "BIOS is incorrect size." +msgstr "" + +#: src/md/system.cpp:238 +#, c-format +msgid "Header MD5: 0x%s\n" +msgstr "" + +#: src/md/system.cpp:239 +#, c-format +msgid "Product Code: %s\n" +msgstr "" + +#: src/md/system.cpp:240 +#, c-format +msgid "Domestic name: %s\n" +msgstr "" + +#: src/md/system.cpp:241 +#, c-format +msgid "Overseas name: %s\n" +msgstr "" + +#: src/md/system.cpp:242 +#, c-format +msgid "Copyright: %s\n" +msgstr "" + +#: src/md/system.cpp:244 +#, c-format +msgid "Checksum: 0x%04x\n" +msgstr "" + +#: src/md/system.cpp:246 +#, c-format +msgid "" +"Checksum: 0x%04x\n" +" Warning: calculated checksum(0x%04x) does not match\n" +msgstr "" + +#: src/md/system.cpp:248 +msgid "Supported I/O devices:\n" +msgstr "" + +#: src/md/system.cpp:253 +#, c-format +msgid "%s\n" +msgstr "" + +#: src/md/system.cpp:264 +msgid "Supported regions:\n" +msgstr "" + +#: src/md/system.cpp:267 +msgid "Japan/Domestic NTSC\n" +msgstr "" + +#: src/md/system.cpp:269 +msgid "Japan/Domestic PAL\n" +msgstr "" + +#: src/md/system.cpp:271 +msgid "Overseas NTSC\n" +msgstr "" + +#: src/md/system.cpp:273 +msgid "Overseas PAL\n" +msgstr "" + +#: src/md/system.cpp:336 +#, c-format +msgid "Active Region: %s %s\n" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Overseas" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "PAL" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "NTSC" +msgstr "" + +#: src/md/system.cpp:337 +#, c-format +msgid "Active Region Reported: %s %s\n" +msgstr "" + +#: src/md/system.cpp:484 src/md/system.cpp:499 +msgid "Match game's header." +msgstr "" + +#: src/md/system.cpp:484 +msgid "" +"Emulate the region that the game indicates it expects to run in via data in " +"the header(or in an internal database for a few games that may have bad " +"header data)." +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Overseas(non-Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Region used in North America." +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Overseas(non-Japan), PAL" +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Region used in Europe." +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Domestic(Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Region used in Japan." +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Domestic(Japan), PAL" +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Probably an invalid region, but available for testing purposes anyway." +msgstr "" + +#: src/md/system.cpp:497 +msgid "Match the region emulated." +msgstr "" + +#: src/md/system.cpp:499 +msgid "" +"This option, in conjunction with the \"md.region\" setting, can be used to " +"run all games at NTSC speeds, or all games at PAL speeds." +msgstr "" + +#: src/md/system.cpp:512 +msgid "Emulate the specified region's Genesis/MegaDrive" +msgstr "" + +#: src/md/system.cpp:513 +msgid "Region reported to the game." +msgstr "" + +#: src/md/system.cpp:515 +msgid "SegaCD/MegaCD emulation is currently nonfunctional." +msgstr "" + +#: src/md/system.cpp:527 +msgid "Super Magic Drive binary ROM Image" +msgstr "" + +#: src/md/system.cpp:528 +msgid "Super Magic Drive interleaved format ROM Image" +msgstr "" + +#: src/md/system.cpp:529 +msgid "Multi Game Doctor format ROM Image" +msgstr "" + +#: src/md/cart/cart.cpp:441 +#, c-format +msgid "Handler for mapper/board \"%s\" not found!\n" +msgstr "" + +#: src/md/cart/map_eeprom.cpp:187 +msgid "Cart EEPROM" +msgstr "" + +#: src/md/cart/map_sram.cpp:78 +msgid "Cart SRAM" +msgstr "" + +#: src/memory.cpp:33 +#, c-format +msgid "Error allocating(calloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/memory.cpp:47 +#, c-format +msgid "Error allocating(malloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/memory.cpp:61 +#, c-format +msgid "Error allocating(realloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/file.cpp:88 +#, c-format +msgid "Error reading IPS file header: %s" +msgstr "" + +#: src/file.cpp:95 +msgid "IPS file header is invalid." +msgstr "" + +#: src/file.cpp:104 src/file.cpp:174 src/file.cpp:269 src/file.cpp:291 +#: src/file.cpp:307 src/file.cpp:313 src/file.cpp:351 +msgid "file read buffer" +msgstr "" + +#: src/file.cpp:129 +#, c-format +msgid "" +"IPS EOF: Did %d patches\n" +"\n" +msgstr "" + +#: src/file.cpp:137 +#, c-format +msgid "Error reading IPS patch length: %s" +msgstr "" + +#: src/file.cpp:148 +#, c-format +msgid "Error reading IPS RLE patch length: %s" +msgstr "" + +#: src/file.cpp:170 +#, c-format +msgid "" +"ROM image will be too large after IPS patch; maximum size allowed is %llu " +"bytes." +msgstr "" + +#: src/file.cpp:194 +#, c-format +msgid "Error reading IPS RLE patch byte: %s" +msgstr "" + +#: src/file.cpp:213 +#, c-format +msgid "Error reading IPS patch: %s" +msgstr "" + +#: src/file.cpp:225 +#, c-format +msgid "Error reading IPS patch header: %s" +msgstr "" + +#: src/file.cpp:250 src/file.cpp:303 src/file.cpp:347 +#, c-format +msgid "ROM image is too large; maximum size allowed is %llu bytes." +msgstr "" + +#: src/file.cpp:276 src/file.cpp:332 +#, c-format +msgid "Error reading file: %s" +msgstr "" + +#: src/file.cpp:327 +#, c-format +msgid "Error reading file: zlib error: %s" +msgstr "" + +#: src/file.cpp:424 src/file.cpp:474 +#, c-format +msgid "Could not seek to first file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:440 +#, c-format +msgid "Could not get file information in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:467 +#, c-format +msgid "Error seeking to next file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:486 +#, c-format +msgid "Could not open file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:514 src/file.cpp:557 src/file.cpp:560 src/file.cpp:724 +#: src/file.cpp:756 +#, c-format +msgid "Error opening \"%s\": %s" +msgstr "" + +#: src/file.cpp:560 +msgid "zlib error" +msgstr "" + +#: src/file.cpp:737 src/file.cpp:769 +#, c-format +msgid "Error writing to \"%s\": %s" +msgstr "" + +#: src/file.cpp:745 +#, c-format +msgid "Error closing \"%s\"" +msgstr "" + +#: src/file.cpp:779 +#, c-format +msgid "Error closing \"%s\": %s" +msgstr "" + +#: src/vb/vb.cpp:600 +#, c-format +msgid "Title: %s\n" +msgstr "" + +#: src/vb/vb.cpp:601 +#, c-format +msgid "Game ID Code: %u\n" +msgstr "" + +#: src/vb/vb.cpp:602 +#, c-format +msgid "Manufacturer Code: %d\n" +msgstr "" + +#: src/vb/vb.cpp:603 +#, c-format +msgid "Version: %u\n" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Anaglyph" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Used in conjuction with classic dual-lens-color glasses." +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "CyberScope" +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "Intended for use with the CyberScope 3D device." +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "Side-by-Side" +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "" +"The left-eye image is displayed on the left, and the right-eye image is " +"displayed on the right." +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:983 +msgid "Forces usage of custom anaglyph colors." +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Red/Blue" +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Classic red/blue anaglyph." +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Red/Cyan" +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Improved quality red/cyan anaglyph." +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Red/Electric Cyan" +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Alternate version of red/cyan" +msgstr "" + +#: src/vb/vb.cpp:989 +msgid "Red/Green" +msgstr "" + +#: src/vb/vb.cpp:990 +msgid "Green/Magenta" +msgstr "" + +#: src/vb/vb.cpp:991 +msgid "Yellow/Blue" +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "Input latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "" +"Reduces latency in some games by 20ms by returning the current pad state, " +"rather than latched state, on serial port data reads. This hack may cause " +"some homebrew software to malfunction, but it should be relatively safe for " +"commercial official games." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "Display latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "" +"Reduces latency in games by displaying the framebuffer 20ms earlier. This " +"hack has some potential of causing graphical glitches, so it is disabled by " +"default." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "Allow draw skipping." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "" +"If vb.instant_display_hack is set to \"1\", and this setting is set to " +"\"1\", then frame-skipping the drawing to the emulated framebuffer will be " +"allowed. THIS WILL CAUSE GRAPHICAL GLITCHES, AND THEORETICALLY(but " +"unlikely) GAME CRASHES, ESPECIALLY WITH DIRECT FRAMEBUFFER DRAWING GAMES." +msgstr "" + +#: src/vb/vb.cpp:1005 +msgid "3D mode." +msgstr "" + +#: src/vb/vb.cpp:1006 +msgid "Line Interlaced prescale." +msgstr "" + +#: src/vb/vb.cpp:1008 +msgid "Disable parallax for BG and OBJ rendering." +msgstr "" + +#: src/vb/vb.cpp:1009 +msgid "Default maximum-brightness color to use in non-anaglyph 3D modes." +msgstr "" + +#: src/vb/vb.cpp:1011 +msgid "Anaglyph preset colors." +msgstr "" + +#: src/vb/vb.cpp:1012 +msgid "Anaglyph maximum-brightness color for left view." +msgstr "" + +#: src/vb/vb.cpp:1013 +msgid "Anaglyph maximum-brightness color for right view." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "Number of pixels to separate L/R views by." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "" +"This setting refers to pixels before vb.xscale(fs) scaling is taken into " +"consideration. For example, a value of \"100\" here will result in a " +"separation of 300 screen pixels if vb.xscale(fs) is set to \"3\"." +msgstr "" + +#: src/vb/vb.cpp:1017 +msgid "Reverse left/right 3D views." +msgstr "" + +#: src/vb/vb.cpp:1069 src/vb/vb.cpp:1070 +msgid "Nintendo Virtual Boy" +msgstr "" + +#: src/vb/vb.cpp:1072 +msgid "Nintendo Virtual Boy (Deprecated)" +msgstr "" + +#: src/netplay.cpp:259 src/netplay.cpp:265 +msgid "Could not send the integrity result to the netplay server." +msgstr "" + +#: src/netplay.cpp:292 +msgid "Could not send the save state command to the netplay server." +msgstr "" + +#: src/netplay.cpp:298 +msgid "Could not send the save state data to the netplay server." +msgstr "" + +#: src/netplay.cpp:355 +msgid "a lurker" +msgstr "" + +#: src/netplay.cpp:357 +#, c-format +msgid "player(s)%s%s%s%s%s%s%s%s" +msgstr "" + +#: src/netplay.cpp:441 +msgid "Remote state loaded." +msgstr "" + +#: src/netplay.cpp:573 +#, c-format +msgid "* You are now known as <%s>." +msgstr "" + +#: src/netplay.cpp:578 +#, c-format +msgid "* <%s> is now known as <%s>" +msgstr "" + +#: src/netplay.cpp:635 +#, c-format +msgid "* You, %s, have connected as: %s%s" +msgstr "" + +#: src/netplay.cpp:649 +#, c-format +msgid "* %s has left(%s%s)" +msgstr "" + +#: src/netplay.cpp:653 +#, c-format +msgid "* %s has connected as: %s%s" +msgstr "" + +#: src/gba/flash.cpp:67 +msgid "flash memory" +msgstr "" + +#: src/gba/GBA.cpp:691 +msgid "ROM" +msgstr "" + +#: src/gba/GBA.cpp:696 +msgid "Work RAM" +msgstr "" + +#: src/gba/GBA.cpp:768 +msgid "Internal RAM" +msgstr "" + +#: src/gba/GBA.cpp:774 +msgid "Palette RAM" +msgstr "" + +#: src/gba/GBA.cpp:780 +msgid "VRAM" +msgstr "" + +#: src/gba/GBA.cpp:786 +msgid "OAM" +msgstr "" + +#: src/gba/GBA.cpp:792 +msgid "IO" +msgstr "" + +#: src/gba/GBA.cpp:798 +msgid "GBA Color Map" +msgstr "" + +#: src/gba/GBA.cpp:1367 +#, c-format +msgid "" +"Unsupported BIOS function %02x called from %08x. A BIOS file is needed in " +"order to get correct behaviour." +msgstr "" + +#: src/gba/GBA.cpp:2546 src/gba/GBA.cpp:2547 src/gba/GBA.cpp:2548 +#: src/gba/GBA.cpp:3382 src/gba/GBA.cpp:3383 src/gba/GBA.cpp:3384 +msgid "GameBoy Advance ROM Image" +msgstr "" + +#: src/gba/GBA.cpp:2555 +msgid "GBA BIOS" +msgstr "" + +#: src/gba/GBA.cpp:2562 +msgid "Invalid BIOS file size" +msgstr "" + +#: src/gba/GBA.cpp:3329 +msgid "Path to optional GBA BIOS ROM image." +msgstr "" + +#: src/gba/GBA.cpp:3380 +msgid "GSF Rip" +msgstr "" + +#: src/gba/GBA.cpp:3381 +msgid "MiniGSF Rip" +msgstr "" + +#: src/movie.cpp:64 +msgid "Movie recording stopped." +msgstr "" + +#: src/movie.cpp:107 +msgid "Movie recording started." +msgstr "" + +#: src/movie.cpp:119 +msgid "Movie playback stopped." +msgstr "" + +#: src/movie.cpp:138 +msgid "Can't play movies during netplay." +msgstr "" + +#: src/movie.cpp:159 +msgid "Error loading state portion of the movie." +msgstr "" + +#: src/movie.cpp:168 +msgid "Movie playback started." +msgstr "" + +#: src/movie.cpp:331 +msgid "Movie status" +msgstr "" diff --git a/libmednahawk/po/quot.sed b/libmednahawk/po/quot.sed new file mode 100644 index 0000000000..e8c9b564d6 --- /dev/null +++ b/libmednahawk/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g diff --git a/libmednahawk/po/remove-potcdate.sin b/libmednahawk/po/remove-potcdate.sin new file mode 100644 index 0000000000..d5a9ef13f4 --- /dev/null +++ b/libmednahawk/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/libmednahawk/po/ru.gmo b/libmednahawk/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d1bc468f8e7ef4f7dd99b2b944da71f20bef5fc2 GIT binary patch literal 47706 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\n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: src/snes/interface.cpp:66 src/gb/gb.cpp:284 src/nes/ppu/palette.cpp:71 +#: src/pce_fast/vdc.cpp:1569 src/pce/pce.cpp:276 src/gba/GBA.cpp:842 +#, c-format +msgid "Loading custom palette from \"%s\"...\n" +msgstr "" + +#: src/snes/interface.cpp:73 src/mempatcher.cpp:238 src/gb/gb.cpp:291 +#: src/nes/ppu/palette.cpp:78 src/pce/pce.cpp:284 src/gba/GBA.cpp:849 +#, c-format +msgid "Error opening file: %s\n" +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°: %s\n" + +#: src/snes/interface.cpp:80 src/gb/gb.cpp:298 src/pce_fast/vdc.cpp:1578 +#: src/pce/vce.cpp:466 src/gba/GBA.cpp:858 +msgid "custom color map" +msgstr "оÑÐ¾Ð±Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° цветов" + +#: src/snes/interface.cpp:92 src/gb/gb.cpp:310 src/nes/ppu/palette.cpp:87 +#, c-format +msgid "Error reading file: %s\n" +msgstr "" + +#: src/snes/interface.cpp:336 +#, c-format +msgid "Error opening save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:347 src/snes/interface.cpp:359 +#, c-format +msgid "Error reading save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:448 +msgid "SNES Cart ROM" +msgstr "" + +#: src/snes/interface.cpp:556 +msgid "SNES save state buffer" +msgstr "" + +#: src/snes/interface.cpp:796 +msgid "Enable multitap on SNES port 1." +msgstr "" + +#: src/snes/interface.cpp:797 +msgid "Enable multitap on SNES port 2." +msgstr "" + +#: src/snes/interface.cpp:799 src/pce/pce.cpp:1009 +msgid "Emulated mouse sensitivity." +msgstr "" + +#: src/mempatcher.cpp:166 +msgid "Error allocating memory for cheat data." +msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти под данные кодов." + +#: src/mempatcher.cpp:231 +#, c-format +msgid "Loading cheats from %s...\n" +msgstr "Загрузка кодов из %s...\n" + +#: src/mempatcher.cpp:265 +#, c-format +msgid "Invalid cheat type: %c\n" +msgstr "Ðеверный тип кода: %c\n" + +#: src/mempatcher.cpp:313 +#, fuzzy, c-format +msgid "%lu cheats loaded.\n" +msgstr "%d кодов загружено.\n" + +#: src/wswan/main.cpp:215 +#, c-format +msgid "%s ROM image is too small." +msgstr "" + +#: src/wswan/main.cpp:244 src/gb/gb.cpp:2094 src/pce_fast/huc.cpp:123 +#: src/ngp/neopop.cpp:146 src/lynx/system.cpp:232 src/pce/huc.cpp:226 +#: src/sms/cart.cpp:133 src/md/system.cpp:236 src/vb/vb.cpp:605 +#: src/gba/GBA.cpp:748 +#, c-format +msgid "ROM: %dKiB\n" +msgstr "ROM: %d КиБ\n" + +#: src/wswan/main.cpp:249 src/gb/gb.cpp:2096 src/pce_fast/huc.cpp:125 +#: src/ngp/neopop.cpp:147 src/lynx/system.cpp:234 src/pce/huc.cpp:228 +#: src/sms/cart.cpp:135 src/md/system.cpp:237 src/vb/vb.cpp:606 +#: src/gba/GBA.cpp:750 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "ROM MD5: 0x%s\n" + +#: src/wswan/main.cpp:264 +#, c-format +msgid "Developer: %s (0x%02x)\n" +msgstr "Разработчик: %s (0x%02x)\n" + +#: src/wswan/main.cpp:285 +#, c-format +msgid "EEPROM: %d bytes\n" +msgstr "EEPROM: %d Б\n" + +#: src/wswan/main.cpp:288 +#, c-format +msgid "Battery-backed RAM: %d bytes\n" +msgstr "RAM Ñ Ð±Ð°Ñ‚Ð°Ñ€ÐµÐ¹Ð½Ð¾Ð¹ поддержкой: %d Б\n" + +#: src/wswan/main.cpp:290 +#, c-format +msgid "Recorded Checksum: 0x%04x\n" +msgstr "ЗапиÑÐ°Ð½Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма: 0x%04x\n" + +#: src/wswan/main.cpp:295 +#, c-format +msgid "Real Checksum: 0x%04x\n" +msgstr "ÐÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма: 0x%04x\n" + +#: src/wswan/main.cpp:395 +msgid "Male" +msgstr "" + +#: src/wswan/main.cpp:398 +msgid "Female" +msgstr "" + +#: src/wswan/main.cpp:419 src/ngp/neopop.cpp:251 +msgid "Japanese" +msgstr "" + +#: src/wswan/main.cpp:422 src/ngp/neopop.cpp:254 +msgid "English" +msgstr "" + +#: src/wswan/main.cpp:430 +msgid "Virtually rotate D-pads along with screen." +msgstr "Виртуально повернуть кнопки направлений вмеÑте Ñ Ñкраном." + +#: src/wswan/main.cpp:431 src/ngp/neopop.cpp:262 +msgid "Language games should display text in." +msgstr "" + +#: src/wswan/main.cpp:431 +msgid "" +"The only game this setting is known to affect is \"Digimon Tamers - Battle " +"Spirit\"." +msgstr "" + +#: src/wswan/main.cpp:432 +msgid "Name" +msgstr "ИмÑ" + +#: src/wswan/main.cpp:433 +msgid "Birth Year" +msgstr "Год рождениÑ" + +#: src/wswan/main.cpp:434 +msgid "Birth Month" +msgstr "МеÑÑц рождениÑ" + +#: src/wswan/main.cpp:435 +msgid "Birth Day" +msgstr "День рождениÑ" + +#: src/wswan/main.cpp:436 +msgid "Sex" +msgstr "Пол" + +#: src/wswan/main.cpp:437 +msgid "Blood Type" +msgstr "Группа крови" + +#: src/wswan/main.cpp:508 +msgid "WonderSwan ROM Image" +msgstr "" + +#: src/wswan/main.cpp:509 +msgid "WonderSwan Color ROM Image" +msgstr "" + +#: src/wswan/main.cpp:510 +msgid "WonderSwan Music Rip" +msgstr "" + +#: src/general.cpp:170 src/cdrom/CDAccess_Image.cpp:489 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting.\n" +msgstr "" + +#: src/state.cpp:658 src/state.cpp:805 +#, c-format +msgid "Module \"%s\" doesn't support save states." +msgstr "" + +#: src/state.cpp:667 src/state.cpp:677 +#, c-format +msgid "State %d save error." +msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ %d." + +#: src/state.cpp:688 +#, c-format +msgid "State %d saved." +msgstr "СоÑтоÑние %d Ñохранено." + +#: src/state.cpp:820 +#, c-format +msgid "State %d load error." +msgstr "Ошибка загрузки ÑоÑтоÑÐ½Ð¸Ñ %d." + +#: src/state.cpp:831 +#, c-format +msgid "State %d loaded." +msgstr "СоÑтоÑние %d загружено." + +#: src/state.cpp:840 +#, c-format +msgid "State %d read error!" +msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ %d!" + +#: src/state.cpp:894 +msgid "Save state preview buffer" +msgstr "" + +#: src/state.cpp:946 +msgid "Save state status" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:51 +msgid "MMC [MODE SENSE 10] command failed." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:59 +msgid "MMC [MODE SENSE 10] command returned bogus data for mode page 0x2A." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:64 +msgid "Drive does not support reading Mode 2 Form 1 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:69 +msgid "Drive does not support reading Mode 2 Form 2 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:74 +msgid "Reading CD-DA sectors via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:79 +msgid "Read CD-DA sectors via \"READ CD\" are not positionally-accurate." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:84 +msgid "Reading raw subchannel data via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:137 +msgid "Error reading disc TOC." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:148 +#, fuzzy, c-format +msgid "Invalid first track: %d\n" +msgstr "Ðеверный номер дорожки: %d\n" + +#: src/cdrom/CDAccess_Physical.cpp:153 +#, c-format +msgid "Invalid last track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:220 src/cdrom/CDAccess_Physical.cpp:234 +#, c-format +msgid "MMC Read Error; libcdio return code %d" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:257 +msgid "Connected physical devices:\n" +msgstr "ПриÑоединённые физичеÑкие уÑтройÑтва:\n" + +#: src/cdrom/CDAccess_Physical.cpp:269 +msgid "No CDROM drives detected(or no disc present)." +msgstr "Приводы CRDOM не обнаружены (или компакт-диÑк отÑутÑтвует)." + +#: src/cdrom/CDAccess_Physical.cpp:281 +msgid "Unknown error opening physical CD" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:323 +#, c-format +msgid "Error ejecting medium;; libcdio return code %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:124 +#, c-format +msgid "TOC first(%d)/last(%d) track numbers bad." +msgstr "" + +#: src/cdrom/cdromif.cpp:257 +#, c-format +msgid "Sector %u read error: %s" +msgstr "" + +#: src/cdrom/cdromif.cpp:414 src/cdrom/cdromif.cpp:415 +#: src/cdrom/scsicd.cpp:514 src/cdrom/scsicd.cpp:515 +#, c-format +msgid "Uncorrectable data at sector %d" +msgstr "ÐеиÑправимые данные в Ñекторе %d" + +#: src/cdrom/cdromif.cpp:464 +#, c-format +msgid "Error on eject/insert attempt: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:227 src/cdrom/CDAccess_Image.cpp:498 +#, c-format +msgid "Could not open referenced file \"%s\": %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:281 +#, c-format +msgid "" +"Length specified in TOC file for track %d is too large by %ld sectors!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:372 +#, c-format +msgid "Invalid track number: %d" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:393 +#, c-format +msgid "Invalid track format: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:402 +msgid "\"RW\" format subchannel data not supported, only \"RW_RAW\" is!" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:459 src/cdrom/CDAccess_Image.cpp:469 +#, c-format +msgid "Command %s is outside of a TRACK definition!\n" +msgstr "Команда %s вне Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ TRACK!\n" + +#: src/cdrom/CDAccess_Image.cpp:514 +#, c-format +msgid "Unsupported audio track file format: %s\n" +msgstr "Формат файлов аудио-дорожек не поддерживаетÑÑ: %s\n" + +#: src/cdrom/CDAccess_Image.cpp:519 +#, c-format +msgid "Unsupported track format: %s\n" +msgstr "Ðеподдерживаемый формат дорожек: %s\n" + +#: src/cdrom/CDAccess_Image.cpp:553 +#, c-format +msgid "Invalid track format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:560 +#, c-format +msgid "Invalid track number: %d\n" +msgstr "Ðеверный номер дорожки: %d\n" + +#: src/cdrom/CDAccess_Image.cpp:601 +#, c-format +msgid "Unsupported CUE sheet directive: \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:605 +#, c-format +msgid "Unknown CUE sheet directive \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:615 +msgid "No tracks found!\n" +msgstr "Дорожки не найдены!\n" + +#: src/cdrom/CDAccess_Image.cpp:809 +#, c-format +msgid "Could not find track for sector %u!" +msgstr "" + +#: src/cdrom/pcecd.cpp:446 +msgid "PCE ADPCM RAM" +msgstr "PCE ADPCM RAM" + +#: src/cdrom/audioreader.cpp:142 +msgid "Error initializing MusePack decoder!\n" +msgstr "" + +#: src/FileWrapper.cpp:87 +#, c-format +msgid "Error duping file descriptor: %s" +msgstr "" + +#: src/FileWrapper.cpp:94 +#, c-format +msgid "Error during fdopen(): %s" +msgstr "" + +#: src/FileWrapper.cpp:127 src/FileWrapper.cpp:139 +#, c-format +msgid "Error opening file \"%s\" for \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:129 src/FileWrapper.cpp:141 +#, c-format +msgid "Error opening file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:169 +#, c-format +msgid "Error closing opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:187 src/FileWrapper.cpp:190 src/FileWrapper.cpp:233 +#, c-format +msgid "Error reading from opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:202 +#, c-format +msgid "Error flushing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:212 src/FileWrapper.cpp:258 src/FileWrapper.cpp:268 +#, c-format +msgid "Error writing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:294 +#, c-format +msgid "Error reading line in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:306 +#, c-format +msgid "Error seeking in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:318 +#, c-format +msgid "Error getting the size of opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:345 +#, c-format +msgid "Error getting position in opened file \"%s\": %s" +msgstr "" + +#: src/PSFLoader.cpp:225 +#, c-format +msgid "Not a PSF(version=0x%02x) file!" +msgstr "" + +#: src/PSFLoader.cpp:232 +#, c-format +msgid "PSF is missing at least %u bytes of data!" +msgstr "" + +#: src/PSFLoader.cpp:235 +msgid "PSF compressed CRC32 mismatch(data is corrupt)!" +msgstr "" + +#: src/PSFLoader.cpp:258 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting." +msgstr "" + +#: src/PSFLoader.cpp:286 +msgid "PSF decompressed size exceeds maximum allowed!" +msgstr "" + +#: src/PSFLoader.cpp:289 +msgid "PSF compressed data is bad." +msgstr "" + +#: src/psx/frontio.cpp:461 +#, c-format +msgid "" +"Memory card file \"%s\" is an incorrect size(%d bytes). The correct size is " +"%d bytes." +msgstr "" + +#: src/psx/gpu.cpp:1130 +msgid "VIDEO STANDARD MISMATCH" +msgstr "" + +#: src/psx/psx.cpp:1294 src/pce/pce.cpp:944 src/pcfx/pcfx.cpp:893 +msgid "Eject error." +msgstr "" + +#: src/psx/psx.cpp:1300 src/pce/pce.cpp:950 src/pcfx/pcfx.cpp:899 +msgid "Virtual CD Drive Tray Open" +msgstr "" + +#: src/psx/psx.cpp:1302 src/pce/pce.cpp:952 src/pcfx/pcfx.cpp:901 +msgid "Virtual CD Drive Tray Closed" +msgstr "" + +#: src/psx/psx.cpp:1324 src/pce/pce.cpp:973 src/pcfx/pcfx.cpp:922 +msgid "Disc absence selected." +msgstr "" + +#: src/psx/psx.cpp:1326 src/pce/pce.cpp:975 src/pcfx/pcfx.cpp:924 +#, c-format +msgid "Disc %d of %d selected." +msgstr "" + +#: src/psx/psx.cpp:1355 +msgid "PSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1356 +msgid "MiniPSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1357 src/psx/psx.cpp:1358 +msgid "PS-X Executable" +msgstr "" + +#: src/psx/psx.cpp:1364 +msgid "Japan" +msgstr "" + +#: src/psx/psx.cpp:1365 +msgid "North America" +msgstr "" + +#: src/psx/psx.cpp:1366 +msgid "Europe" +msgstr "" + +#: src/psx/psx.cpp:1372 +msgid "Attempt to auto-detect region of game." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Default region to use." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Used if region autodetection fails or is disabled." +msgstr "" + +#: src/psx/psx.cpp:1375 +msgid "Path to the Japan SCPH-5500 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "Path to the North America SCPH-5501 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "SHA1 0555c6fae8906f3f09baf5988f00e55f88e9f30b" +msgstr "" + +#: src/psx/psx.cpp:1377 +msgid "Path to the Europe SCPH-5502 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1379 +msgid "SPU output resampler quality." +msgstr "" + +#: src/psx/psx.cpp:1380 +msgid "" +"0 is lowest quality and CPU usage, 10 is highest quality and CPU usage. The " +"resampler that this setting refers to is used for converting from 44.1KHz to " +"the sampling rate of the host audio device Mednafen is using. Changing " +"Mednafen's output rate, via the \"sound.rate\" setting, to \"44100\" will " +"bypass the resampler, which will decrease CPU usage by Mednafen, and can " +"increase or decrease audio quality, depending on various operating system " +"and hardware factors." +msgstr "" + +#: src/mednafen.cpp:54 +msgid "Force monophonic sound output." +msgstr "Принудительно иÑпользовать монофоничеÑкий вывод звука." + +#: src/mednafen.cpp:55 +msgid "Enable (automatic) usage of this module." +msgstr "" + +#: src/mednafen.cpp:56 +msgid "Enable video temporal blur(50/50 previous/current frame by default)." +msgstr "" + +#: src/mednafen.cpp:57 +msgid "Accumulate color data rather than discarding it." +msgstr "ÐакоплÑть цветовые данные, а не отбраÑывать." + +#: src/mednafen.cpp:58 +msgid "" +"Blur amount in accumulation mode, specified in percentage of accumulation " +"buffer to mix with the current frame." +msgstr "" +"Степень Ñ€Ð°Ð·Ð¼Ñ‹Ñ‚Ð¸Ñ Ð² режиме накоплениÑ, указываетÑÑ Ð² процентах от буфера " +"накопленных данных при обработке текущего кадра." + +#: src/mednafen.cpp:73 +msgid "" +"A fast codec, computationally, but will cause enormous file size and may " +"exceed your storage medium's sustained write rate." +msgstr "" + +#: src/mednafen.cpp:76 +msgid "A good balance between performance and compression ratio." +msgstr "" + +#: src/mednafen.cpp:79 +msgid "" +"Has a better compression ratio than \"cscd\", but is much more CPU " +"intensive. Use for compatibility with official QuickTime in cases where you " +"have insufficient disk space for \"raw\"." +msgstr "" + +#: src/mednafen.cpp:84 +msgid "See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:88 +msgid "Compressor to use with state rewinding" +msgstr "" + +#: src/mednafen.cpp:90 +msgid "Number of frames to keep states for when state rewinding is enabled." +msgstr "КоличеÑтво кадров Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ, еÑли Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¾Ñ‚ÐºÐ¸ назад включена." + +#: src/mednafen.cpp:91 +msgid "" +"WARNING: Setting this to a large value may cause excessive RAM usage in some " +"circumstances, such as with games that stream large volumes of data off of " +"CDs." +msgstr "" + +#: src/mednafen.cpp:93 +msgid "Enable untrusted file-inclusion path security check." +msgstr "" + +#: src/mednafen.cpp:94 +msgid "" +"When this setting is set to \"1\", the default, paths to files referenced " +"from files like CUE sheets and PSF rips are checked for certain characters " +"that can be used in directory traversal, and if found, loading is aborted. " +"Set it to \"0\" if you want to allow constructs like absolute paths in CUE " +"sheets, but only if you understand the security implications of doing so(see " +"\"Security Issues\" section in the documentation)." +msgstr "" + +#: src/mednafen.cpp:96 +msgid "Path to directory for screen snapshots." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "Path to directory for save games and nonvolatile memory." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "" +"WARNING: Do not set this path to a directory that contains Famicom Disk " +"System disk images, or you will corrupt them when you load an FDS game and " +"exit Mednafen." +msgstr "" + +#: src/mednafen.cpp:98 +msgid "Path to directory for save states." +msgstr "" + +#: src/mednafen.cpp:99 +msgid "Path to directory for movies." +msgstr "" + +#: src/mednafen.cpp:100 +msgid "Path to directory for cheats." +msgstr "" + +#: src/mednafen.cpp:101 +msgid "Path to directory for custom palettes." +msgstr "" + +#: src/mednafen.cpp:102 +msgid "Path to directory for firmware." +msgstr "" + +#: src/mednafen.cpp:104 +msgid "Format string for movie filename." +msgstr "" + +#: src/mednafen.cpp:105 +msgid "Format string for state filename." +msgstr "" + +#: src/mednafen.cpp:106 +msgid "Format string for save games filename." +msgstr "" + +#: src/mednafen.cpp:106 +#, c-format +msgid "" +"WARNING: %x should always be included, otherwise you run the risk of " +"overwriting save data for games that create multiple save data files.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:107 +msgid "Format string for screen snapshot filenames." +msgstr "" + +#: src/mednafen.cpp:107 +#, c-format +msgid "" +"WARNING: %x or %p should always be included, otherwise there will be a " +"conflict between the numeric counter text file and the image data file.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:109 +msgid "Disable gzip compression when saving save states and backup memory." +msgstr "Ðе иÑпользовать Ñжатие gzip Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑоÑтоÑний и карт памÑти." + +#: src/mednafen.cpp:112 +msgid "Double the raw image's width if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:113 +msgid "Double the raw image's height if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:115 +msgid "Video codec to use." +msgstr "" + +#: src/mednafen.cpp:213 +#, c-format +msgid "Starting QuickTime recording to file \"%s\":\n" +msgstr "" + +#: src/mednafen.cpp:215 +#, c-format +msgid "Video width: %u\n" +msgstr "" + +#: src/mednafen.cpp:216 +#, c-format +msgid "Video height: %u\n" +msgstr "" + +#: src/mednafen.cpp:217 +#, c-format +msgid "Video codec: %s\n" +msgstr "" + +#: src/mednafen.cpp:218 +#, c-format +msgid "Sound rate: %u\n" +msgstr "" + +#: src/mednafen.cpp:219 +#, c-format +msgid "Sound channels: %u\n" +msgstr "" + +#: src/mednafen.cpp:400 +msgid "M3U CD Set" +msgstr "" + +#: src/mednafen.cpp:419 +#, c-format +msgid "M3U at \"%s\" references self." +msgstr "" + +#: src/mednafen.cpp:422 +msgid "M3U load recursion too deep!" +msgstr "" + +#: src/mednafen.cpp:441 +#, c-format +msgid "" +"Loading %s...\n" +"\n" +msgstr "" +"Загрузка %s...\n" +"\n" + +#: src/mednafen.cpp:441 +msgid "PHYSICAL CD" +msgstr "" + +#: src/mednafen.cpp:472 +msgid "Error opening CD." +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ CD." + +#: src/mednafen.cpp:486 +#, c-format +msgid "CD %d Layout:\n" +msgstr "" + +#: src/mednafen.cpp:491 +#, c-format +msgid "Track %2d, LBA: %6d %s\n" +msgstr "" + +#: src/mednafen.cpp:567 src/mednafen.cpp:770 +#, c-format +msgid "Unrecognized system \"%s\"!" +msgstr "СиÑтема «%s» не раÑпознана!" + +#: src/mednafen.cpp:572 +msgid "Could not find a system that supports this CD." +msgstr "" + +#: src/mednafen.cpp:579 +#, c-format +msgid "Specified system \"%s\" doesn't support CDs!" +msgstr "Ð£ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÑиÑтема «%s» не поддерживает CD!" + +#: src/mednafen.cpp:583 src/mednafen.cpp:779 +#, c-format +msgid "" +"Using module: %s(%s)\n" +"\n" +msgstr "" + +#: src/mednafen.cpp:631 +#, c-format +msgid "Applying IPS file \"%s\"...\n" +msgstr "Применение файла IPS «%s»...\n" + +#: src/mednafen.cpp:638 src/settings.cpp:343 +#, c-format +msgid "Failed: %s\n" +msgstr "" + +#: src/mednafen.cpp:644 +#, c-format +msgid "Error opening IPS file: %s\n" +msgstr "" + +#: src/mednafen.cpp:681 +#, c-format +msgid "Loading %s...\n" +msgstr "" + +#: src/mednafen.cpp:708 +msgid "game" +msgstr "" + +#: src/mednafen.cpp:737 +msgid "" +"Specified system only supports CD(physical, or image files, such as *.cue " +"and *.toc) loading." +msgstr "" + +#: src/mednafen.cpp:739 +msgid "Specified system does not support normal file loading." +msgstr "" + +#: src/mednafen.cpp:772 +msgid "Unrecognized file format. Sorry." +msgstr "Формат файла не раÑпознан. Извините." + +#: src/mednafen.cpp:1020 +#, c-format +msgid "Internal emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1021 +#, c-format +msgid "External emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1357 +msgid "Can't rewind during movie playback(yet!)." +msgstr "Ðевозможно перемотать назад в ходе воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ„Ð¸Ð»ÑŒÐ¼Ð° (пока)!" + +#: src/mednafen.cpp:1362 +msgid "Silly-billy, can't rewind during netplay." +msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¾Ñ‚Ð°Ñ‚ÑŒ назад в процеÑÑе Ñетевой игры." + +#: src/mednafen.cpp:1367 +msgid "Music player rewinding is unsupported." +msgstr "Перемотка назад Ð´Ð»Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ поддерживаетÑÑ." + +#: src/mednafen.cpp:1645 +#, c-format +msgid "%s enabled." +msgstr "%s включено." + +#: src/mednafen.cpp:1647 +#, c-format +msgid "%s disabled." +msgstr "%s выключено." + +#: src/gb/gb.cpp:327 +#, c-format +msgid "Warning: %lld byte(s) of trailing unused data.\n" +msgstr "" + +#: src/gb/gb.cpp:1962 src/gb/gb.cpp:1992 src/nes/fds.cpp:601 +msgid "Unknown" +msgstr "ÐеизвеÑтно" + +#: src/gb/gb.cpp:1967 src/drivers/video.cpp:547 +msgid "None" +msgstr "Ðет" + +#: src/gb/gb.cpp:2076 +msgid "GB Color Map" +msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° GB" + +#: src/gb/gb.cpp:2095 src/lynx/system.cpp:233 src/pce/huc.cpp:227 +#: src/sms/cart.cpp:134 src/gba/GBA.cpp:749 +#, fuzzy, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "ROM CRC32: 0x%08lx\n" + +#: src/gb/gb.cpp:2097 +#, c-format +msgid "Type: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2098 +#, c-format +msgid "RAM Size: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2099 +#, c-format +msgid "Version: 0x%02x\n" +msgstr "" + +#: src/gb/gb.cpp:2132 +msgid "Invalid ROM size" +msgstr "Ðекорректный размер ROM" + +#: src/gb/gb.cpp:2146 +msgid "Invalid RAM size" +msgstr "Ðекорректный размер RAM" + +#: src/gb/gb.cpp:2666 +msgid "Auto" +msgstr "" + +#: src/gb/gb.cpp:2666 +msgid "Automatic detection based on headers." +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "DMG" +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "Original GameBoy Monochrome." +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "CGB" +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "" +"GameBoy Color.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "AGB" +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "" +"GameBoy Advance.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2675 +msgid "Emulated GB type." +msgstr "" + +#: src/gb/gb.cpp:2722 +msgid "GameBoy ROM Image" +msgstr "" + +#: src/gb/gb.cpp:2723 src/gb/gb.cpp:2724 +msgid "GameBoy Color ROM Image" +msgstr "" + +#: src/nes/nsf.cpp:154 +msgid "NSF data" +msgstr "Данные NSF" + +#: src/nes/nsf.cpp:194 +msgid "NSF header" +msgstr "Заголовок NSF" + +#: src/nes/nsf.cpp:227 +msgid "Load address is invalid!" +msgstr "Ðекорректный Ð°Ð´Ñ€ÐµÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸!" + +#: src/nes/nsf.cpp:234 +msgid "Total number of songs is less than 1!" +msgstr "Общее чиÑло композиций меньше, чем 1!" + +#: src/nes/nsf.cpp:265 +msgid "" +"NSF Loaded. File information:\n" +"\n" +msgstr "" +"NSF загружен. Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ файле:\n" +"\n" + +#: src/nes/nsf.cpp:268 +#, c-format +msgid "Game/Album Name:\t%s\n" +msgstr "Ðазвание игры/альбома:\t%s\n" + +#: src/nes/nsf.cpp:270 +#, c-format +msgid "Music Artist:\t%s\n" +msgstr "ИÑполнитель музыки:\t%s\n" + +#: src/nes/nsf.cpp:272 +#, c-format +msgid "Copyright:\t\t%s\n" +msgstr "ÐвторÑкое право:\t\t%s\n" + +#: src/nes/nsf.cpp:274 +#, c-format +msgid "Ripper:\t\t%s\n" +msgstr "Ripper:\t\t%s\n" + +#: src/nes/nsf.cpp:283 +#, c-format +msgid "Expansion hardware: %s\n" +msgstr "УÑтройÑтва раÑширениÑ: %s\n" + +#: src/nes/nsf.cpp:289 +msgid "Bank-switched\n" +msgstr "С переключением банков памÑти\n" + +#: src/nes/nsf.cpp:290 +#, c-format +msgid "" +"Load address: $%04x\n" +"Init address: $%04x\n" +"Play address: $%04x\n" +msgstr "" +"ÐÐ´Ñ€ÐµÑ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸: $%04x\n" +"ÐÐ´Ñ€ÐµÑ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸: $%04x\n" +"ÐÐ´Ñ€ÐµÑ Ð²Ð¾ÑпроизведениÑ: $%04x\n" + +#: src/nes/nsf.cpp:292 +#, c-format +msgid "" +"Starting song: %d / %d\n" +"\n" +msgstr "" +"ВоÑпроизведение композиции: %d / %d\n" +"\n" + +#: src/nes/nsf.cpp:295 src/nes/nsf.cpp:297 +msgid "NSF expansion RAM" +msgstr "RAM раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ NFS" + +#: src/nes/unif.cpp:143 +#, c-format +msgid "Name/Attribute Table Mirroring: %s\n" +msgstr "Отражение таблицы имÑ/атрибут: %s\n" + +#: src/nes/unif.cpp:154 +msgid "Name: " +msgstr "Ðазвание: " + +#: src/nes/unif.cpp:191 +#, c-format +msgid "Dumped by: %s\n" +msgstr "Дамп Ñоздал: %s\n" + +#: src/nes/unif.cpp:192 +#, c-format +msgid "Dumped with: %s\n" +msgstr "Дамп Ñоздан Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ: %s\n" + +#: src/nes/unif.cpp:194 +msgid "January" +msgstr "Январь" + +#: src/nes/unif.cpp:194 +msgid "February" +msgstr "Февраль" + +#: src/nes/unif.cpp:194 +msgid "March" +msgstr "Март" + +#: src/nes/unif.cpp:194 +msgid "April" +msgstr "Ðпрель" + +#: src/nes/unif.cpp:194 +msgid "May" +msgstr "Май" + +#: src/nes/unif.cpp:194 +msgid "June" +msgstr "Июнь" + +#: src/nes/unif.cpp:194 +msgid "July" +msgstr "Июль" + +#: src/nes/unif.cpp:195 +msgid "August" +msgstr "ÐвгуÑÑ‚" + +#: src/nes/unif.cpp:195 +msgid "September" +msgstr "СентÑбрь" + +#: src/nes/unif.cpp:195 +msgid "October" +msgstr "ОктÑбрь" + +#: src/nes/unif.cpp:195 +msgid "November" +msgstr "ÐоÑбрь" + +#: src/nes/unif.cpp:195 +msgid "December" +msgstr "Декабрь" + +#: src/nes/unif.cpp:196 +#, c-format +msgid "Dumped on: %s %d, %d\n" +msgstr "Дамп Ñоздан: %s %d, %d\n" + +#: src/nes/unif.cpp:244 +#, c-format +msgid "TV Standard Compatibility: %s\n" +msgstr "СовмеÑтимоÑть Ñ Ñ‚ÐµÐ»ÐµÐ²Ð¸Ð·Ð¸Ð¾Ð½Ð½Ñ‹Ð¼ Ñтандартом: %s\n" + +#: src/nes/unif.cpp:251 src/nes/ines.cpp:696 +msgid "Battery-backed.\n" +msgstr "С батарейной поддержкой.\n" + +#: src/nes/unif.cpp:274 +#, c-format +msgid "PRG ROM %d size: %d" +msgstr "PRG ROM %d размер: %d" + +#: src/nes/unif.cpp:284 +#, c-format +msgid "Error reading PRG chunk %d" +msgstr "" + +#: src/nes/unif.cpp:302 +#, c-format +msgid "Board name: %s\n" +msgstr "Board name: %s\n" + +#: src/nes/unif.cpp:315 +#, c-format +msgid "CHR ROM %d size: %d" +msgstr "CHR ROM %d размер: %d" + +#: src/nes/unif.cpp:325 +#, c-format +msgid "Error reading CHR chunk %d" +msgstr "" + +#: src/nes/unif.cpp:503 +msgid "Board type not supported." +msgstr "Board type not supported." + +#: src/nes/unif.cpp:570 src/nes/ines.cpp:692 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "ROM MD5: 0x%s\n" + +#: src/nes/boards/mmc5.cpp:122 src/nes/boards/mmc1.cpp:340 +msgid ">8KB external WRAM present. Use UNIF if you hack the ROM image.\n" +msgstr "" +">ПриÑутÑтвует внешнÑÑ Ð¿Ð°Ð¼Ñть WRAM (8 КБ). ИÑпользуйте UNIF, еÑли хотите " +"изменить игру.\n" + +#: src/nes/boards/mmc5.cpp:655 src/nes/boards/mmc5.cpp:785 +msgid "MMC5 EXRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:770 src/nes/ines.cpp:917 +#, fuzzy +msgid "WRAM" +msgstr "RAM" + +#: src/nes/boards/mmc5.cpp:779 +msgid "MMC5 Fill" +msgstr "" + +#: src/nes/boards/maxicart.cpp:98 +msgid "expansion RAM" +msgstr "RAM раÑширениÑ" + +#: src/nes/boards/mmc3.cpp:1536 +msgid "" +"Low-G-Man can not work normally in the iNES format.\n" +"This game has been recognized by its CRC32 value, and the appropriate " +"changes will be made so it will run.\n" +"If you wish to hack this game, you should use the UNIF format for your " +"hack.\n" +"\n" +msgstr "" +"Low-G-Man не может корректно работать в формате iNES.\n" +"Эта игра была опознана по значению CRC32, и над ней будут произведены " +"необходимые операции, чтобы её запуÑтить.\n" +"ЕÑли вы хотите изменить Ñту игру, воÑпользуйтеÑÑŒ файлом в формате UNIF.\n" +"\n" + +#: src/nes/cart.cpp:494 +msgid "Game Genie ROM image" +msgstr "Образ Game Genie ROM" + +#: src/nes/cart.cpp:499 +msgid "Game Genie ROM Image" +msgstr "" + +#: src/nes/cart.cpp:509 +msgid "Error reading from Game Genie ROM image!" +msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð· образа Game Genie ROM!" + +#: src/nes/cart.cpp:539 +msgid "Game Genie Read Map Backup" +msgstr "" + +#: src/nes/cart.cpp:540 +msgid "Game Genie Write Map Backup" +msgstr "" + +#: src/nes/cart.cpp:752 +#, c-format +msgid "WRAM file \"%s\" cannot be written to.\n" +msgstr "Ðе удалоÑÑŒ запиÑать в файл WRAM «%s».\n" + +#: src/nes/ines.cpp:368 +#, c-format +msgid "" +"The copy of the game you have loaded, \"%s\", is bad, and will not work " +"properly on Mednafen." +msgstr "" +"ÐšÐ¾Ð¿Ð¸Ñ Ð¸Ð³Ñ€Ñ‹ «%s», которую вы выбрали, повреждена и будет работать некорректно " +"в Mednafen." + +#: src/nes/ines.cpp:531 +msgid "" +"The iNES header contains incorrect information. For now, the information " +"will be corrected in RAM:\n" +msgstr "" +"Заголовок iNES Ñодержит некорректную информацию. Он будет иÑправлен в " +"памÑти:\n" + +#: src/nes/ines.cpp:534 +#, c-format +msgid "The mapper number should be set to %d.\n" +msgstr "Ðомер маппера должен быть %d.\n" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Horizontal" +msgstr "Горизонтальное" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Vertical" +msgstr "Вертикальное" + +#: src/nes/ines.cpp:539 +#, fuzzy +msgid "Four-screen" +msgstr "Ðет (четыре Ñкрана)" + +#: src/nes/ines.cpp:541 +#, fuzzy, c-format +msgid "Mirroring should be set to \"%s\".\n" +msgstr "Ðомер маппера должен быть %d.\n" + +#: src/nes/ines.cpp:545 +msgid "The battery-backed bit should be set.\n" +msgstr "Должен быть уÑтановлен бит Â«Ñ Ð±Ð°Ñ‚Ð°Ñ€ÐµÐ¹Ð½Ð¾Ð¹ поддержкой».\n" + +#: src/nes/ines.cpp:549 +msgid "This game should not have any CHR ROM. " +msgstr "У Ñтой игры не должно быть CHR ROM. " + +#: src/nes/ines.cpp:604 +msgid "No PRG ROM present!" +msgstr "PRG ROM отÑутÑтвует!" + +#: src/nes/ines.cpp:621 +msgid "PRG ROM data" +msgstr "Данные PRG ROM" + +#: src/nes/ines.cpp:633 +#, fuzzy +msgid "CHR ROM data" +msgstr "Данные PRG ROM" + +#: src/nes/ines.cpp:648 +msgid "Error reading trainer." +msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ½ÐµÑ€Ð°." + +#: src/nes/ines.cpp:659 +msgid "Error reading PRG ROM data" +msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… PRG ROM" + +#: src/nes/ines.cpp:668 +msgid "Error reading CHR ROM data" +msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ CHR ROM" + +#: src/nes/ines.cpp:688 +#, c-format +msgid "PRG ROM: %3d x 16KiB\n" +msgstr "PRG ROM: %3d x 16 КиБ\n" + +#: src/nes/ines.cpp:689 +#, c-format +msgid "CHR ROM: %3d x 8KiB\n" +msgstr "CHR ROM: %3d x 8 КиБ\n" + +#: src/nes/ines.cpp:690 +#, fuzzy, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "ROM CRC32: 0x%08lx\n" + +#: src/nes/ines.cpp:693 +#, c-format +msgid "Mapper: %d\n" +msgstr "Маппер: %d\n" + +#: src/nes/ines.cpp:694 +#, c-format +msgid "Mirroring: %s\n" +msgstr "Отражение: %s\n" + +#: src/nes/ines.cpp:694 +msgid "None(Four-screen)" +msgstr "Ðет (четыре Ñкрана)" + +#: src/nes/ines.cpp:697 +msgid "Trained.\n" +msgstr "С тренером.\n" + +#: src/nes/ines.cpp:905 src/nes/fds.cpp:682 +msgid "CHR RAM" +msgstr "CHR RAM" + +#: src/nes/ines.cpp:940 +#, c-format +msgid "iNES mapper %d is not supported!" +msgstr "Маппер iNES %d не поддерживаетÑÑ!" + +#: src/nes/ppu/palette.cpp:87 +msgid "File length is too short" +msgstr "" + +#: src/nes/nes.cpp:406 +msgid "Cannot use states in GG Screen." +msgstr "Ðевозможно иÑпользовать ÑоÑтоÑÐ½Ð¸Ñ Ð½Ð° Ñкране GG." + +#: src/nes/nes.cpp:437 src/pce_fast/huc.cpp:320 src/drivers/main.cpp:244 +#: src/drivers/main.cpp:261 src/pce/pce.cpp:732 src/vb/vb.cpp:983 +msgid "Disabled" +msgstr "Выключено" + +#: src/nes/nes.cpp:440 +msgid "Composite Video" +msgstr "" + +#: src/nes/nes.cpp:441 +msgid "S-Video" +msgstr "" + +#: src/nes/nes.cpp:442 +msgid "RGB" +msgstr "" + +#: src/nes/nes.cpp:443 +msgid "Monochrome" +msgstr "" + +#: src/nes/nes.cpp:450 +msgid "Disable four-score emulation." +msgstr "" + +#: src/nes/nes.cpp:452 +msgid "Remove 8-sprites-per-scanline hardware limit." +msgstr "" + +#: src/nes/nes.cpp:453 +msgid "" +"WARNING: Enabling this option will cause graphical glitches in some games, " +"including \"Solstice\"." +msgstr "" + +#: src/nes/nes.cpp:455 +msgid "Sound quality." +msgstr "" + +#: src/nes/nes.cpp:456 +msgid "Output rate tolerance." +msgstr "" + +#: src/nes/nes.cpp:457 +msgid "" +"Enable less-accurate, but better sounding, Namco 106(mapper 19) sound " +"emulation." +msgstr "" +"ИÑпользовать менее аккуратную, но более приÑтную на Ñлух ÑмулÑцию звука Ð´Ð»Ñ " +"Namco 106." + +#: src/nes/nes.cpp:458 +msgid "" +"Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation." +msgstr "" +"Сканировать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° на наличие меток (U), (J), (E) и Ñ‚.д. Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ " +"режима ÑмулÑции (PAL/NTSC)." + +#: src/nes/nes.cpp:459 +msgid "" +"Warning: This option may break NES network play when enabled IF the players " +"are using ROM images with different filenames." +msgstr "" + +#: src/nes/nes.cpp:461 +msgid "Enable PAL(50Hz) NES emulation." +msgstr "ИÑпользовать ÑмулÑцию NES в режиме PAL (50 Гц)." + +#: src/nes/nes.cpp:462 +msgid "Enable Game Genie emulation." +msgstr "Включить ÑмулÑцию Game Genie." + +#: src/nes/nes.cpp:463 +msgid "Path to Game Genie ROM image." +msgstr "Путь к файлу Game Genie ROM." + +#: src/nes/nes.cpp:464 +msgid "Clip left+right 8 pixel columns." +msgstr "Обрезать левый и правый Ñтолбец из 8 пикÑелов." + +#: src/nes/nes.cpp:465 +msgid "First displayed scanline in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:466 +msgid "Last displayed scanlines in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:467 +msgid "First displayed scanline in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:468 +msgid "Last displayedscanlines in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:469 +msgid "Enable NTSC color generation and blitter." +msgstr "ИÑпользовать генерацию цветов NTSC и блиттер." + +#: src/nes/nes.cpp:470 +msgid "" +"NOTE: If your refresh rate isn't very close to 60.1Hz(+-0.1), you will need " +"to set the nes.ntsc.mergefields setting to \"1\" to avoid excessive " +"flickering." +msgstr "" + +#: src/nes/nes.cpp:473 +msgid "Video quality/type preset." +msgstr "" + +#: src/nes/nes.cpp:474 +msgid "Merge fields to partially work around !=60.1Hz refresh rates." +msgstr "" +"Совмещать полÑ, чтобы чаÑтично обойти проблемы Ñ Ñ‡Ð°Ñтотами Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ !=60.1 " +"Гц." + +#: src/nes/nes.cpp:475 +msgid "NTSC composite blitter saturation." +msgstr "ÐаÑыщенноÑть композитного блиттера NTSC." + +#: src/nes/nes.cpp:476 +msgid "NTSC composite blitter hue." +msgstr "Тон композитного блиттера NTSC." + +#: src/nes/nes.cpp:477 +msgid "NTSC composite blitter sharpness." +msgstr "РезкоÑть композитного блиттера NTSC." + +#: src/nes/nes.cpp:478 +msgid "NTSC composite blitter brightness." +msgstr "ЯркоÑть композитного блиттера NTSC." + +#: src/nes/nes.cpp:479 +msgid "NTSC composite blitter contrast." +msgstr "КонтраÑÑ‚ композитного блиттера NTSC." + +#: src/nes/nes.cpp:481 +msgid "Enable NTSC custom decoder matrix." +msgstr "ИÑпользовать оÑобую матрицу Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC." + +#: src/nes/nes.cpp:484 +msgid "NTSC custom decoder matrix element 0(red, value * V)." +msgstr "ОÑÐ¾Ð±Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC: Ñлемент 0 (краÑный, значение * V)" + +#: src/nes/nes.cpp:485 +msgid "NTSC custom decoder matrix element 1(red, value * U)." +msgstr "ОÑÐ¾Ð±Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC: Ñлемент 1 (краÑный, значение * U)" + +#: src/nes/nes.cpp:486 +msgid "NTSC custom decoder matrix element 2(green, value * V)." +msgstr "ОÑÐ¾Ð±Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC: Ñлемент 2 (зелёный, значение * V)" + +#: src/nes/nes.cpp:487 +msgid "NTSC custom decoder matrix element 3(green, value * U)." +msgstr "ОÑÐ¾Ð±Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC: Ñлемент 3 (зелёный, значение * U)" + +#: src/nes/nes.cpp:488 +msgid "NTSC custom decoder matrix element 4(blue, value * V)." +msgstr "ОÑÐ¾Ð±Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC: Ñлемент 4 (Ñиний, значение * V)" + +#: src/nes/nes.cpp:489 +msgid "NTSC custom decoder matrix element 5(blue, value * U." +msgstr "ОÑÐ¾Ð±Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ NTSC: Ñлемент 5 (Ñиний, значение * U)" + +#: src/nes/fds.cpp:84 +#, c-format +msgid "Disk %1$d Side %2$s Inserted" +msgstr "ДиÑк %1$d Ñторона %2$s вÑтавлен" + +#: src/nes/fds.cpp:89 +#, c-format +msgid "Disk %1$d Side %2$s Ejected" +msgstr "ДиÑк %1$d Ñторона %2$s извлечён" + +#: src/nes/fds.cpp:105 +msgid "Eject disk before selecting." +msgstr "Извлеките диÑк перед выбором." + +#: src/nes/fds.cpp:109 +#, c-format +msgid "Disk %1$d Side %2$s Selected" +msgstr "Выбран диÑк %1$d, Ñторона %2$s" + +#: src/nes/fds.cpp:358 src/nes/fds.cpp:636 +msgid "FDS Disk Data" +msgstr "Данные диÑка FDS" + +#: src/nes/fds.cpp:641 +msgid "FDS BIOS" +msgstr "" + +#: src/nes/fds.cpp:649 src/nes/fds.cpp:665 +msgid "FDS BIOS ROM image is too small." +msgstr "" + +#: src/nes/fds.cpp:676 +msgid "FDS RAM" +msgstr "FDS RAM" + +#: src/nes/fds.cpp:693 +msgid "auxillary FDS data" +msgstr "" + +#: src/nes/fds.cpp:726 +#, c-format +msgid "Sides: %d\n" +msgstr "Стороны: %d\n" + +#: src/nes/fds.cpp:727 +#, c-format +msgid "Manufacturer Code: %02x (%s)\n" +msgstr "Код производителÑ: %02x (%s)\n" + +#: src/nes/fds.cpp:728 +#, c-format +msgid "MD5: 0x%s\n" +msgstr "MD5: 0x%s\n" + +#: src/pce_fast/vdc.cpp:1574 +#, c-format +msgid "Error opening file: %m\n" +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°: %m\n" + +#: src/pce_fast/vdc.cpp:1589 src/pce/pce.cpp:299 src/gba/GBA.cpp:862 +msgid "Error reading file\n" +msgstr "" + +#: src/pce_fast/hes.cpp:57 src/pce/hes.cpp:62 +#, c-format +msgid "" +"Warning: HES is writing to physical address %08x. Future warnings of this " +"nature are temporarily disabled for this HES file.\n" +msgstr "" +"Предупреждение: HES запиÑывает по физичеÑкому адреÑу %08x. ПоÑледующие " +"подобные Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ отключены Ð´Ð»Ñ Ñтого файла HES.\n" + +#: src/pce_fast/hes.cpp:79 src/pce_fast/hes.cpp:84 src/pce/hes.cpp:99 +#: src/pce/hes.cpp:104 +msgid "HES ROM" +msgstr "HES ROM" + +#: src/pce_fast/hes.cpp:105 src/pce/hes.cpp:144 +#, c-format +msgid "" +"Warning: HES is trying to load more data than is present in the file(%u " +"attempted, %u left)!\n" +msgstr "" +"Предупреждение: HES пытаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ больше данных, чем ÑодержитÑÑ Ð² " +"файле (запрошено %u, оÑталоÑÑŒ %u)!\n" + +#: src/pce_fast/hes.cpp:113 src/pce/hes.cpp:152 +msgid "Warning: HES is trying to load data past boundary.\n" +msgstr "Предупреждение: HES пытаетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ данные за пределами.\n" + +#: src/pce_fast/huc.cpp:124 +#, c-format +msgid "ROM CRC32: 0x%04x\n" +msgstr "ROM CRC32: 0x%04x\n" + +#: src/pce_fast/huc.cpp:127 src/pce/huc.cpp:266 +msgid "HuCard ROM" +msgstr "HuCard ROM" + +#: src/pce_fast/huc.cpp:191 src/pce/huc.cpp:399 +msgid "Tsushin Booster RAM" +msgstr "Tsushin Booster RAM" + +#: src/pce_fast/huc.cpp:263 src/pce_fast/huc.cpp:264 src/pce_fast/pce.cpp:625 +#: src/pce/pce.cpp:672 src/pce/pce.cpp:673 src/pce/pce.cpp:1083 +msgid "PC Engine ROM Image" +msgstr "" + +#: src/pce_fast/huc.cpp:265 src/pce/pce.cpp:674 src/md/cd/cd.cpp:903 +#: src/md/cd/cd.cpp:904 src/gba/GBA.cpp:2549 +msgid "BIOS Image" +msgstr "" + +#: src/pce_fast/huc.cpp:271 src/pce/pce.cpp:690 +msgid "CD BIOS" +msgstr "" + +#: src/pce_fast/huc.cpp:317 +#, c-format +msgid "CD MD5(first 256KiB): 0x%s\n" +msgstr "CD MD5 (первые 256 КиБ): 0x%s\n" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +#, c-format +msgid "Arcade Card Emulation: %s\n" +msgstr "ЭмулÑÑ†Ð¸Ñ Arcade Card: %s\n" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +msgid "Enabled" +msgstr "Включено" + +#: src/pce_fast/huc.cpp:344 src/pce/huc.cpp:351 +#, c-format +msgid "Error creating %s object: %s" +msgstr "" + +#: src/pce_fast/pce.cpp:177 src/pce/pce.cpp:339 +#, c-format +msgid "CD-DA Volume: %d%%\n" +msgstr "ГромкоÑть CD-DA: %d%%\n" + +#: src/pce_fast/pce.cpp:180 src/pce/pce.cpp:342 +#, c-format +msgid "ADPCM Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:282 +#, c-format +msgid "CPU overclock: %dx\n" +msgstr "Разгон ЦП: %dx\n" + +#: src/pce_fast/pce.cpp:285 +#, fuzzy, c-format +msgid "CD-ROM speed: %ux\n" +msgstr "СкороÑть CD-ROM: %dx\n" + +#: src/pce_fast/pce.cpp:348 src/pce/pce.cpp:350 +#, c-format +msgid "CD PSG Volume: %d%%\n" +msgstr "ГромкоÑть CD PSG: %d%%\n" + +#: src/pce_fast/pce.cpp:599 src/md/system.cpp:517 +msgid "Correct the aspect ratio." +msgstr "" + +#: src/pce_fast/pce.cpp:600 src/pce/pce.cpp:1004 src/pcfx/pcfx.cpp:1079 +msgid "First rendered scanline." +msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ñтрока видео." + +#: src/pce_fast/pce.cpp:601 src/pce/pce.cpp:1005 src/pcfx/pcfx.cpp:1080 +msgid "Last rendered scanline." +msgstr "ПоÑледнÑÑ Ð²Ñ‹Ð²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ñтрока видео." + +#: src/pce_fast/pce.cpp:602 src/pcfx/pcfx.cpp:1067 +msgid "Mouse sensitivity." +msgstr "" + +#: src/pce_fast/pce.cpp:603 src/pce/pce.cpp:1010 +msgid "" +"If set, when RUN+SEL are pressed simultaneously, disable both buttons " +"temporarily." +msgstr "" +"ЕÑли уÑтановлено, RUN+SEL, нажатые одновременно, временно отключают обе Ñти " +"кнопки." + +#: src/pce_fast/pce.cpp:604 src/pce/pce.cpp:1015 +msgid "Force SuperGrafx emulation." +msgstr "Принудительно Ñмулировать SuperGrafx." + +#: src/pce_fast/pce.cpp:605 src/pce/pce.cpp:1018 +msgid "Enable Arcade Card emulation." +msgstr "Включить ÑмулÑцию Arcade Card." + +#: src/pce_fast/pce.cpp:606 +msgid "CPU overclock multiplier." +msgstr "Множитель ÑкороÑти ЦП." + +#: src/pce_fast/pce.cpp:607 +msgid "CD-ROM data transfer speed multiplier." +msgstr "Множитель ÑкороÑти передачи данных Ñ CD-ROM." + +#: src/pce_fast/pce.cpp:608 src/pce/pce.cpp:1021 src/pcfx/pcfx.cpp:1076 +msgid "Remove 16-sprites-per-scanline hardware limit." +msgstr "" + +#: src/pce_fast/pce.cpp:610 src/pce/pce.cpp:1024 src/md/system.cpp:515 +msgid "Path to the CD BIOS" +msgstr "Путь к CD BIOS" + +#: src/pce_fast/pce.cpp:611 +msgid "Enable lowpass filter dependent on playback-frequency." +msgstr "ИÑпользовать фильтр низких чаÑтот, завиÑÑщий от чаÑтоты диÑкретизации." + +#: src/pce_fast/pce.cpp:612 src/pce/pce.cpp:1032 +msgid "PSG volume when playing a CD game." +msgstr "ГромкоÑть PSG при воÑпроизведении игры Ñ CD." + +#: src/pce_fast/pce.cpp:613 src/pce/pce.cpp:1033 +msgid "CD-DA volume." +msgstr "ГромкоÑть CD-DA." + +#: src/pce_fast/pce.cpp:614 src/pce/pce.cpp:1034 +msgid "ADPCM volume." +msgstr "ГромкоÑть ADPCM." + +#: src/pce_fast/pce.cpp:626 src/pce/pce.cpp:1084 +msgid "PC Engine Music Rip" +msgstr "" + +#: src/pce_fast/pce.cpp:627 src/pce/pce.cpp:1085 +msgid "SuperGrafx ROM Image" +msgstr "" + +#: src/player.cpp:212 +msgid "Song:" +msgstr "КомпозициÑ:" + +#: src/ngp/rom.cpp:104 +#, c-format +msgid "Name: %s\n" +msgstr "ИмÑ: %s\n" + +#: src/ngp/rom.cpp:105 +msgid "System: " +msgstr "СиÑтема: " + +#: src/ngp/rom.cpp:108 +msgid "Color" +msgstr "Цвет" + +#: src/ngp/rom.cpp:110 +msgid "Greyscale" +msgstr "Шкала Ñерого" + +#: src/ngp/rom.cpp:114 +#, c-format +msgid "Catalog: %d (sub %d)\n" +msgstr "Каталог: %d (sub %d)\n" + +#: src/ngp/rom.cpp:119 +#, c-format +msgid "Starting PC: 0x%06X\n" +msgstr "Ðачальный PC: 0x%06X\n" + +#: src/ngp/neopop.cpp:134 src/sms/cart.cpp:94 src/md/cart/cart.cpp:340 +msgid "Cart ROM" +msgstr "Cart ROM" + +#: src/ngp/neopop.cpp:338 +msgid "Neo Geo Pocket ROM Image" +msgstr "" + +#: src/ngp/neopop.cpp:339 +msgid "Neo Geo Pocket Color ROM Image" +msgstr "" + +#: src/video/tblur.cpp:40 +#, c-format +msgid "Video temporal frame blur enabled with accumulation: %f.\n" +msgstr "" + +#: src/video/tblur.cpp:45 +msgid "Video temporal frame blur enabled.\n" +msgstr "" + +#: src/video/video.cpp:69 +#, c-format +msgid "Screen snapshot %d saved." +msgstr "Снимок Ñкрана %d Ñохранён." + +#: src/video/video.cpp:79 src/video/video.cpp:80 +#, c-format +msgid "Error saving screen snapshot: %s" +msgstr "" + +#: src/drivers/sound.cpp:144 src/drivers/sound.cpp:273 +msgid "Error opening a sound device." +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð°ÑƒÐ´Ð¸Ð¾-уÑтройÑтва." + +#: src/drivers/sound.cpp:243 +msgid "" +"\n" +"Initializing sound...\n" +msgstr "" +"\n" +"Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð·Ð²ÑƒÐºÐ°...\n" + +#: src/drivers/sound.cpp:248 +#, c-format +msgid "" +"\n" +"Unknown sound driver \"%s\". Supported sound drivers:\n" +msgstr "" + +#: src/drivers/sound.cpp:264 +#, c-format +msgid "Using \"%s\" audio driver with SexyAL's default device selection." +msgstr "" + +#: src/drivers/sound.cpp:266 +#, c-format +msgid "Using \"%s\" audio driver with device \"%s\":" +msgstr "ИÑпользуетÑÑ Ð°ÑƒÐ´Ð¸Ð¾-драйвер «%s», уÑтройÑтво «%s»:" + +#: src/drivers/sound.cpp:282 +msgid "Set rate is out of range [22050-1048576]" +msgstr "" + +#: src/drivers/sound.cpp:287 +#, c-format +msgid "" +"\n" +"Bits: %u\n" +"Rate: %u\n" +"Channels: %u\n" +"Byte order: CPU %s\n" +"Buffer size: %u sample frames(%f ms)\n" +msgstr "" +"\n" +"Биты: %u\n" +"ЧаÑтота: %u\n" +"Каналы: %u\n" +"ПорÑдок байт: CPU %s\n" +"Размер буфера: %u отÑчётов (%f мÑ)\n" + +#: src/drivers/sound.cpp:288 +#, c-format +msgid "Latency: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:294 +#, c-format +msgid "Period size: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:299 +msgid "" +"Warning: Period time is too large(it should be <= ~5.333ms). Video will " +"appear very jerky.\n" +msgstr "" + +#: src/drivers/joystick.cpp:169 +#, c-format +msgid "Joystick %d - %s - Unique ID: %016llx\n" +msgstr "ДжойÑтик %d - %s - уникальный идентификатор: %016llx\n" + +#: src/drivers/joystick.cpp:172 +#, fuzzy, c-format +msgid "Could not open joystick %d: %s.\n" +msgstr "Ðе удалоÑÑŒ открыть файл BIOS «%s»: %s\n" + +#: src/drivers/video-state.cpp:166 +#, c-format +msgid "-recording movie %d-" +msgstr "-запиÑÑŒ фильма %d-" + +#: src/drivers/video-state.cpp:168 +#, c-format +msgid "-playing movie %d-" +msgstr "-воÑпроизведение фильма %d-" + +#: src/drivers/video-state.cpp:170 +msgid "-select movie-" +msgstr "-выбор фильма-" + +#: src/drivers/video-state.cpp:175 +msgid "-select state-" +msgstr "-выбор ÑоÑтоÑниÑ-" + +#: src/drivers/help.cpp:40 +msgid "Toggle Help" +msgstr "" + +#: src/drivers/help.cpp:42 +msgid "Configure Command Key" +msgstr "" + +#: src/drivers/help.cpp:43 +msgid "Configure buttons on port n(1-5)" +msgstr "" + +#: src/drivers/help.cpp:44 +msgid "Select device on port n" +msgstr "" + +#: src/drivers/help.cpp:46 +msgid "Rotate Screen" +msgstr "" + +#: src/drivers/help.cpp:47 +msgid "Toggle Fullscreen Mode" +msgstr "" + +#: src/drivers/help.cpp:48 +msgid "Take Screen Snapshot" +msgstr "" + +#: src/drivers/help.cpp:50 +msgid "Enable state rewinding" +msgstr "" + +#: src/drivers/help.cpp:51 src/drivers/input.cpp:703 +msgid "Rewind" +msgstr "Перемотать назад" + +#: src/drivers/help.cpp:52 +msgid "Save State" +msgstr "" + +#: src/drivers/help.cpp:53 +msgid "Select Disk" +msgstr "" + +#: src/drivers/help.cpp:54 +msgid "Load State" +msgstr "" + +#: src/drivers/help.cpp:55 +msgid "Insert coin; Insert/Eject disk" +msgstr "" + +#: src/drivers/help.cpp:57 +msgid "(Soft) Reset, if available on emulated system." +msgstr "" + +#: src/drivers/help.cpp:58 +msgid "Power Toggle/Hard Reset" +msgstr "" + +#: src/drivers/help.cpp:59 src/drivers/input.cpp:702 +msgid "Exit" +msgstr "Выйти" + +#: src/drivers/help.cpp:64 +msgid "Mednafen Quickie Help" +msgstr "БыÑÑ‚Ñ€Ð°Ñ Ñправка Mednafen" + +#: src/drivers/help.cpp:67 +msgid "Default key assignments:" +msgstr "ПривÑзка клавиш по умолчанию:" + +#: src/drivers/video.cpp:385 +msgid "Initializing video...\n" +msgstr "Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾...\n" + +#: src/drivers/video.cpp:454 +msgid "Could not load OpenGL library, disabling OpenGL usage!" +msgstr "" +"Ðе удалоÑÑŒ загрузить библиотеку OpenGL, иÑпользование OpenGL отключено!" + +#: src/drivers/video.cpp:481 +msgid "Eep! Effective X scale setting is way too high. Correcting." +msgstr "КоÑффициент маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ оÑи X Ñлишком велик. ИÑправлено." + +#: src/drivers/video.cpp:487 +msgid "Eep! Effective Y scale setting is way too high. Correcting." +msgstr "КоÑффициент маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ оÑи Y Ñлишком велик. ИÑправлено." + +#: src/drivers/video.cpp:526 +#, c-format +msgid "Video Driver: %s\n" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "OpenGL" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Overlay" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Software SDL" +msgstr "" + +#: src/drivers/video.cpp:528 +#, c-format +msgid "Video Mode: %d x %d x %d bpp\n" +msgstr "Видео-режим: %d x %d x %d bpp\n" + +#: src/drivers/video.cpp:531 +#, c-format +msgid "" +"Sorry, %dbpp modes are not supported by Mednafen. Supported bit depths are " +"16bpp, 24bpp, and 32bpp.\n" +msgstr "" +"Извините, режимы Ñ bpp %d не поддерживаютÑÑ Ð² Mednafen. ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ " +"глубина цвета: 16 bpp, 24 bpp, и 32 bpp.\n" + +#: src/drivers/video.cpp:542 +#, c-format +msgid "Pixel shader: %s\n" +msgstr "Pixel shader: %s\n" + +#: src/drivers/video.cpp:546 +#, c-format +msgid "Fullscreen: %s\n" +msgstr "Полный Ñкран: %s\n" + +#: src/drivers/video.cpp:546 +msgid "Yes" +msgstr "Да" + +#: src/drivers/video.cpp:546 +msgid "No" +msgstr "Ðет" + +#: src/drivers/video.cpp:547 +#, c-format +msgid "Special Scaler: %s\n" +msgstr "Метод маÑштабированиÑ: %s\n" + +#: src/drivers/video.cpp:550 +msgid "Scanlines: Off\n" +msgstr "ЧерезÑтрочноÑть: Выкл.\n" + +#: src/drivers/video.cpp:552 +#, c-format +msgid "Scanlines: %d%% opacity\n" +msgstr "" + +#: src/drivers/video.cpp:554 +#, c-format +msgid "Destination Rectangle: X=%d, Y=%d, W=%d, H=%d\n" +msgstr "Целевой прÑмоугольник: X=%d, Y=%d, Ш=%d, Ð’=%d\n" + +#: src/drivers/video.cpp:559 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. This is ok if " +"you really do want the clipping...\n" +msgstr "" +"Предупреждение: Целевой прÑмоугольник выходит за пределы Ñкрана. Это " +"нормально, еÑли вы раÑÑчитывали обрезать видео.\n" + +#: src/drivers/video.cpp:561 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. The rectangle " +"will be adjusted to fit within the screen area.\n" +msgstr "" +"Предупреждение: Целевой прÑмоугольник выходит за пределы Ñкрана. Он будет " +"изменён таким образом, чтобы вмеÑтитьÑÑ Ð² облаÑть Ñкрана.\n" + +#: src/drivers/opengl.cpp:320 +msgid "OpenGL dummy black texture data" +msgstr "Заливка чёрным Ð´Ð»Ñ Ñ‚ÐµÐºÑтур OpenGL" + +#: src/drivers/opengl.cpp:550 +#, c-format +msgid "Error getting proc address for: %s\n" +msgstr "Ошибка при получении адреÑа процедуры: %s\n" + +#: src/drivers/opengl.cpp:608 +#, c-format +msgid "OpenGL Implementation: %s %s %s\n" +msgstr "Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ OpenGL: %s %s %s\n" + +#: src/drivers/opengl.cpp:612 +msgid "Checking extensions:\n" +msgstr "Проверка раÑширений:\n" + +#: src/drivers/opengl.cpp:619 +msgid "GL_ARB_texture_non_power_of_two found.\n" +msgstr "Обнаружено GL_ARB_texture_non_power_of_two.\n" + +#: src/drivers/opengl.cpp:645 +#, c-format +msgid "Invalid pixel shader type: %s\n" +msgstr "Ðекорректный тип pixel shader: %s\n" + +#: src/drivers/opengl.cpp:683 +msgid "Using non-power-of-2 sized textures.\n" +msgstr "ИÑпользуютÑÑ Ñ‚ÐµÐºÑтуры Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ «non-power-of-2».\n" + +#: src/drivers/opengl.cpp:685 +msgid "Using power-of-2 sized textures.\n" +msgstr "ИÑпользуютÑÑ Ñ‚ÐµÐºÑтуры Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ «power-of-2».\n" + +#: src/drivers/opengl.cpp:783 +msgid "Checking maximum texture size...\n" +msgstr "Проверка макÑимального размера текÑтур...\n" + +#: src/drivers/opengl.cpp:801 +#, c-format +msgid "Apparently it is at least: %d x %d\n" +msgstr "Как минимум: %d x %d\n" + +#: src/drivers/opengl.cpp:805 +msgid "" +"Warning: Maximum texture size is reported as being less than 256, but we " +"can't handle that.\n" +msgstr "" +"Предупреждение: МакÑимальный размер текÑтуры — менее 256, mednafen не " +"раÑÑчитан на работу Ñ Ð½Ð¸Ð¼Ð¸.\n" + +#: src/drivers/opengl.cpp:829 +msgid "Using GL_RGBA, GL_UNSIGNED_BYTE for texture source data.\n" +msgstr "" + +#: src/drivers/opengl.cpp:839 +msgid "Using GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV for texture source data.\n" +msgstr "" + +#: src/drivers/input.cpp:530 +msgid "Cannot change input device during netplay." +msgstr "Ðевозможно изменить уÑтройÑтво ввода в ходе Ñетевой игры." + +#: src/drivers/input.cpp:534 +msgid "Cannot change input device while state rewinding is active." +msgstr "Ðевозможно изменить уÑтройÑтво ввода в ходе перемотки назад." + +#: src/drivers/input.cpp:553 +#, c-format +msgid "%s selected on port %d" +msgstr "%s выбрано на порте %d" + +#: src/drivers/input.cpp:640 +msgid "Save state" +msgstr "Сохранить ÑоÑтоÑние" + +#: src/drivers/input.cpp:641 +msgid "Load state" +msgstr "Загрузить ÑоÑтоÑние" + +#: src/drivers/input.cpp:642 +msgid "Save movie" +msgstr "Сохранить фильм" + +#: src/drivers/input.cpp:643 +msgid "Load movie" +msgstr "Загрузить фильм" + +#: src/drivers/input.cpp:644 +msgid "Toggle state rewind functionality" +msgstr "Переключить возможноÑть перемотки назад" + +#: src/drivers/input.cpp:646 +msgid "Save state 0 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 0" + +#: src/drivers/input.cpp:647 +msgid "Save state 1 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 1" + +#: src/drivers/input.cpp:648 +msgid "Save state 2 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 2" + +#: src/drivers/input.cpp:649 +msgid "Save state 3 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 3" + +#: src/drivers/input.cpp:650 +msgid "Save state 4 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 4" + +#: src/drivers/input.cpp:651 +msgid "Save state 5 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 5" + +#: src/drivers/input.cpp:652 +msgid "Save state 6 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 6" + +#: src/drivers/input.cpp:653 +msgid "Save state 7 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 7" + +#: src/drivers/input.cpp:654 +msgid "Save state 8 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 8" + +#: src/drivers/input.cpp:655 +msgid "Save state 9 select" +msgstr "Выбор Ñчейки ÑоÑтоÑÐ½Ð¸Ñ 9" + +#: src/drivers/input.cpp:657 +msgid "Movie 0 select" +msgstr "Выбор фильма 0" + +#: src/drivers/input.cpp:658 +msgid "Movie 1 select" +msgstr "Выбор фильма 1" + +#: src/drivers/input.cpp:659 +msgid "Movie 2 select" +msgstr "Выбор фильма 2" + +#: src/drivers/input.cpp:660 +msgid "Movie 3 select" +msgstr "Выбор фильма 3" + +#: src/drivers/input.cpp:661 +msgid "Movie 4 select" +msgstr "Выбор фильма 4" + +#: src/drivers/input.cpp:662 +msgid "Movie 5 select" +msgstr "Выбор фильма 5" + +#: src/drivers/input.cpp:663 +msgid "Movie 6 select" +msgstr "Выбор фильма 6" + +#: src/drivers/input.cpp:664 +msgid "Movie 7 select" +msgstr "Выбор фильма 7" + +#: src/drivers/input.cpp:665 +msgid "Movie 8 select" +msgstr "Выбор фильма 8" + +#: src/drivers/input.cpp:666 +msgid "Movie 9 select" +msgstr "Выбор фильма 9" + +#: src/drivers/input.cpp:668 +msgid "Toggle graphics layer 1" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 1" + +#: src/drivers/input.cpp:669 +msgid "Toggle graphics layer 2" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 2" + +#: src/drivers/input.cpp:670 +msgid "Toggle graphics layer 3" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 3" + +#: src/drivers/input.cpp:671 +msgid "Toggle graphics layer 4" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 4" + +#: src/drivers/input.cpp:672 +msgid "Toggle graphics layer 5" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 5" + +#: src/drivers/input.cpp:673 +msgid "Toggle graphics layer 6" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 6" + +#: src/drivers/input.cpp:674 +msgid "Toggle graphics layer 7" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 7" + +#: src/drivers/input.cpp:675 +msgid "Toggle graphics layer 8" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 8" + +#: src/drivers/input.cpp:676 +msgid "Toggle graphics layer 9" +msgstr "Показать/Ñкрыть графичеÑкий Ñлой 9" + +#: src/drivers/input.cpp:678 +msgid "Take screen snapshot" +msgstr "Сделать Ñнимок Ñкрана" + +#: src/drivers/input.cpp:679 +msgid "Toggle fullscreen mode" +msgstr "Переключить полноÑкранный режим" + +#: src/drivers/input.cpp:680 +msgid "Fast-forward" +msgstr "Перемотка вперёд" + +#: src/drivers/input.cpp:681 +msgid "Slow-forward" +msgstr "" + +#: src/drivers/input.cpp:683 +msgid "Insert coin" +msgstr "Ð’Ñтавить монетку" + +#: src/drivers/input.cpp:684 +msgid "Toggle DIP switch view" +msgstr "Показать/Ñкрыть переключатели DIP" + +#: src/drivers/input.cpp:685 +msgid "Select disk/disc" +msgstr "Выбрать диÑк/диÑк" + +#: src/drivers/input.cpp:686 +msgid "Insert/Eject disk/disc" +msgstr "Ð’Ñтавить/извлечь диÑк/диÑк" + +#: src/drivers/input.cpp:687 +msgid "Activate barcode(for Famicom)" +msgstr "ЗадейÑтвовать штрих-код (Ð´Ð»Ñ Famicom)" + +#: src/drivers/input.cpp:688 +msgid "Grab input" +msgstr "Захватить ввод" + +#: src/drivers/input.cpp:689 +msgid "Grab input and disable commands" +msgstr "Захватить ввод и отключить команды" + +#: src/drivers/input.cpp:690 +msgid "Configure buttons on virtual port 1" +msgstr "ÐаÑтроить кнопки Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 1" + +#: src/drivers/input.cpp:691 +msgid "Configure buttons on virtual port 2" +msgstr "ÐаÑтроить кнопки Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 2" + +#: src/drivers/input.cpp:692 +msgid "Configure buttons on virtual port 3" +msgstr "ÐаÑтроить кнопки Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 3" + +#: src/drivers/input.cpp:693 +msgid "Configure buttons on virtual port 4" +msgstr "ÐаÑтроить кнопки Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 4" + +#: src/drivers/input.cpp:694 +msgid "Configure buttons on virtual port 5" +msgstr "ÐаÑтроить кнопки Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 5" + +#: src/drivers/input.cpp:695 +msgid "Configure buttons on virtual port 6" +msgstr "" + +#: src/drivers/input.cpp:696 +msgid "Configure buttons on virtual port 7" +msgstr "" + +#: src/drivers/input.cpp:697 +msgid "Configure buttons on virtual port 8" +msgstr "" + +#: src/drivers/input.cpp:698 +msgid "Configure command key" +msgstr "ÐаÑтроить команды и клавиши" + +#: src/drivers/input.cpp:700 +msgid "Reset" +msgstr "СброÑ" + +#: src/drivers/input.cpp:701 +msgid "Power toggle" +msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð¸Ñ‚Ð°Ð½Ð¸Ñ" + +#: src/drivers/input.cpp:704 +msgid "Rotate screen" +msgstr "Повернуть Ñкран" + +#: src/drivers/input.cpp:706 +msgid "Toggle netplay console" +msgstr "Показать/Ñкрыть окно Ñетевой игры" + +#: src/drivers/input.cpp:707 +msgid "Advance frame" +msgstr "Следующий кадр" + +#: src/drivers/input.cpp:708 +msgid "Return to normal mode after advancing frames" +msgstr "ВернутьÑÑ Ð² обычный режим поÑле Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ ÐºÐ°Ð´Ñ€Ð°" + +#: src/drivers/input.cpp:709 +msgid "Toggle cheat console" +msgstr "Показать/Ñкрыть окно кодов" + +#: src/drivers/input.cpp:710 +msgid "Enable/Disable cheats" +msgstr "Включить/выключить коды" + +#: src/drivers/input.cpp:711 +msgid "Toggle frames-per-second display" +msgstr "Показать/Ñкрыть Ñчётчик кадров в Ñекунду" + +#: src/drivers/input.cpp:712 +msgid "Toggle debugger" +msgstr "Переключить отладчик" + +#: src/drivers/input.cpp:713 +msgid "Decrease selected save state slot by 1" +msgstr "Уменьшить Ñлот ÑоÑтоÑÐ½Ð¸Ñ Ð½Ð° 1" + +#: src/drivers/input.cpp:714 +msgid "Increase selected save state slot by 1" +msgstr "Увеличить Ñлот ÑоÑтоÑÐ½Ð¸Ñ Ð½Ð° 1" + +#: src/drivers/input.cpp:715 +msgid "Toggle help screen" +msgstr "Отобразить/Ñкрыть Ñкран Ñправки" + +#: src/drivers/input.cpp:716 +msgid "Select virtual device on virtual input port 1" +msgstr "Выбрать виртуальное уÑтройÑтво Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 1" + +#: src/drivers/input.cpp:717 +msgid "Select virtual device on virtual input port 2" +msgstr "Выбрать виртуальное уÑтройÑтво Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 2" + +#: src/drivers/input.cpp:718 +msgid "Select virtual device on virtual input port 3" +msgstr "Выбрать виртуальное уÑтройÑтво Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 3" + +#: src/drivers/input.cpp:719 +msgid "Select virtual device on virtual input port 4" +msgstr "Выбрать виртуальное уÑтройÑтво Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 4" + +#: src/drivers/input.cpp:720 +msgid "Select virtual device on virtual input port 5" +msgstr "Выбрать виртуальное уÑтройÑтво Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ порта 5" + +#: src/drivers/input.cpp:721 +msgid "Select virtual device on virtual input port 6" +msgstr "" + +#: src/drivers/input.cpp:722 +msgid "Select virtual device on virtual input port 7" +msgstr "" + +#: src/drivers/input.cpp:723 +msgid "Select virtual device on virtual input port 8" +msgstr "" + +#: src/drivers/input.cpp:950 +msgid "Configuration interrupted." +msgstr "ÐаÑтройка прервана." + +#: src/drivers/input.cpp:968 src/drivers/input.cpp:1613 +msgid "Configuration finished." +msgstr "ÐаÑтройка завершена." + +#: src/drivers/input.cpp:979 +msgid "Press command key to remap now..." +msgstr "" + +#: src/drivers/input.cpp:995 +msgid "Input grabbing enabled." +msgstr "Захват ввода включён." + +#: src/drivers/input.cpp:997 +msgid "Input grabbing disabled." +msgstr "Захват ввода отключён." + +#: src/drivers/input.cpp:1013 +msgid "Command processing disabled." +msgstr "Обработка команд отключена." + +#: src/drivers/input.cpp:1015 +msgid "Command processing enabled." +msgstr "Обработка команд включена." + +#: src/drivers/input.cpp:1040 +msgid "Application of cheats enabled." +msgstr "Применение кодов включено." + +#: src/drivers/input.cpp:1042 +msgid "Application of cheats disabled." +msgstr "Применение кодов выключено." + +#: src/drivers/input.cpp:1073 +#, c-format +msgid "No buttons to configure for input port %d!" +msgstr "Ðет кнопок Ð´Ð»Ñ Ð½Ð°Ñтройки на порте ввода %d!" + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality enabled." +msgstr "ВозможноÑть перемотки назад включена." + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality disabled." +msgstr "ВозможноÑть перемотки назад отключена." + +#: src/drivers/input.cpp:1285 +msgid "Barcode Entered" +msgstr "Штрих-код введён" + +#: src/drivers/input.cpp:1287 +msgid "Enter Barcode" +msgstr "Введите штрих-код" + +#: src/drivers/input.cpp:1293 +#, c-format +msgid "Barcode: %s" +msgstr "Штрих-код: %s" + +#: src/drivers/main.cpp:61 +msgid "Full-screen horizontal resolution." +msgstr "ПолноÑкранное разрешение по горизонтали." + +#: src/drivers/main.cpp:62 +msgid "Full-screen vertical resolution." +msgstr "ПолноÑкранное разрешение по вертикали." + +#: src/drivers/main.cpp:63 +msgid "" +"A value of \"0\" will cause the desktop horizontal resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:64 +msgid "A value of \"0\" will cause the desktop vertical resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:66 +msgid "Scaling factor for the X axis." +msgstr "" + +#: src/drivers/main.cpp:67 +msgid "Scaling factor for the Y axis." +msgstr "" + +#: src/drivers/main.cpp:69 +msgid "Scaling factor for the X axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:70 +msgid "Scaling factor for the Y axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:71 +msgid "" +"For this settings to have any effect, the \".stretch\" setting must " +"be set to \"0\"." +msgstr "" + +#: src/drivers/main.cpp:73 +msgid "Enable scanlines with specified opacity." +msgstr "" + +#: src/drivers/main.cpp:74 +msgid "" +"Opacity is specified in %; IE a value of \"100\" will give entirely black " +"scanlines." +msgstr "" + +#: src/drivers/main.cpp:76 +msgid "Stretch to fill screen." +msgstr "РаÑÑ‚Ñнуть на веÑÑŒ Ñкран" + +#: src/drivers/main.cpp:77 +msgid "Enable (bi)linear interpolation." +msgstr "" + +#: src/drivers/main.cpp:80 +msgid "Enable specified special video scaler." +msgstr "ИÑпользовать указанный метод маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾." + +#: src/drivers/main.cpp:81 +msgid "" +"The destination rectangle is NOT altered by this setting, so if you have " +"xscale and yscale set to \"2\", and try to use a 3x scaling filter like " +"hq3x, the image is not going to look that great. The nearest-neighbor " +"scalers are intended for use with bilinear interpolation enabled, at high " +"resolutions(such as 1280x1024; nn2x(or nny2x) + bilinear interpolation + " +"fullscreen stretching at this resolution looks quite nice)." +msgstr "" + +#: src/drivers/main.cpp:83 +msgid "Enable specified OpenGL pixel shader." +msgstr "ИÑпользовать указанный OpenGL pixel shader." + +#: src/drivers/main.cpp:84 +msgid "" +"Obviously, this will only work with the OpenGL \"video.driver\" setting, and " +"only on cards and OpenGL implementations that support pixel shaders, " +"otherwise you will get a black screen, or Mednafen may display an error " +"message when starting up. Bilinear interpolation is disabled with pixel " +"shaders, and any interpolation, if present, will be noted in the description " +"of each pixel shader." +msgstr "" + +#: src/drivers/main.cpp:93 +msgid "This output method is preferred, as all features are available with it." +msgstr "" + +#: src/drivers/main.cpp:94 +msgid "" +"Slower with lower-quality scaling than OpenGL, but if you don't have " +"hardware-accelerated OpenGL rendering, it will be faster than software " +"OpenGL rendering. Bilinear interpolation not available. Pixel shaders do not " +"work with this output method, of course." +msgstr "" + +#: src/drivers/main.cpp:95 +msgid "" +"As fast as OpenGL, perhaps faster in some situations, *if* it's hardware-" +"accelerated. Scanline effects are not available. hq2x, hq3x, hq4x are not " +"available. The OSD may be missing or glitchy. Bilinear interpolation can't " +"be turned off. Harsh chroma subsampling blurring in some picture types. If " +"you use this output method, it is strongly recommended to use a special " +"scaler with it, such as nn2x." +msgstr "" + +#: src/drivers/main.cpp:102 +msgid "Default sound driver." +msgstr "" + +#: src/drivers/main.cpp:104 +msgid "A recommended driver, and the default for Linux(if available)." +msgstr "" + +#: src/drivers/main.cpp:105 +msgid "" +"A recommended driver, and the default for non-Linux UN*X/POSIX/BSD systems, " +"or anywhere ALSA is unavailable. If the ALSA driver gives you problems, you " +"can try using this one instead.\n" +"\n" +"If you are using OSSv4 or newer, you should edit \"/usr/lib/oss/conf/osscore." +"conf\", uncomment the max_intrate= line, and change the value from 100" +"(default) to 1000(or higher if you know what you're doing), and restart OSS. " +"Otherwise, performance will be poor, and the sound buffer size in Mednafen " +"will be orders of magnitude larger than specified.\n" +"\n" +"If the sound buffer size is still excessively larger than what is specified " +"via the \"sound.buffer_time\" setting, you can try setting \"sound." +"period_time\" to 2666, and as a last resort, 5333, to work around a design " +"flaw/limitation/choice in the OSS API and OSS implementation." +msgstr "" + +#: src/drivers/main.cpp:106 +msgid "A recommended driver, and the default for Microsoft Windows." +msgstr "" + +#: src/drivers/main.cpp:107 +msgid "" +"This driver is not recommended, but it serves as a backup driver if the " +"others aren't available. Its performance is generally sub-par, requiring " +"higher latency or faster CPUs/SMP for glitch-free playback, except where the " +"OS provides a sound callback API itself, such as with Mac OS X and BeOS." +msgstr "" + +#: src/drivers/main.cpp:108 +msgid "" +"Somewhat experimental driver, unusably buggy until Mednafen 0.8.C. The " +"\"sound.buffer_time\" setting controls the size of the local sound buffer, " +"not the server's sound buffer, and the latency reported during startup is " +"for the local sound buffer only. Please note that video card drivers(in the " +"kernel or X), and hardware-accelerated OpenGL, may interfere with jackd's " +"ability to effectively run with realtime response." +msgstr "" + +#: src/drivers/main.cpp:139 +msgid "" +"Will automatically interpolate on each axis if the corresponding effective " +"scaling factor is not an integer." +msgstr "" + +#: src/drivers/main.cpp:140 +msgid "" +"Same as \"autoip\", but when interpolation is done, it is done in a manner " +"that will reduce blurriness if possible." +msgstr "" + +#: src/drivers/main.cpp:157 +msgid "Server hostname." +msgstr "" + +#: src/drivers/main.cpp:158 +msgid "Server port." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Server password." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Password to connect to the netplay server." +msgstr "Пароль Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу." + +#: src/drivers/main.cpp:160 +msgid "Local player count." +msgstr "" + +#: src/drivers/main.cpp:160 +msgid "Number of local players for network play." +msgstr "КоличеÑтво локальных игроков Ð´Ð»Ñ Ñетевой игры." + +#: src/drivers/main.cpp:161 +msgid "Nickname." +msgstr "" + +#: src/drivers/main.cpp:161 +msgid "Nickname to use for network play chat." +msgstr "ПÑевдоним Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² Ñетевой игре и чате." + +#: src/drivers/main.cpp:162 +msgid "Key to hash with the MD5 hash of the game." +msgstr "Ключ Ð´Ð»Ñ Ñ…ÐµÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ MD5-Ñуммы игры." + +#: src/drivers/main.cpp:163 +msgid "Merge input to this player # on the server." +msgstr "СопоÑтавить ввод Ñ Ð¸Ð³Ñ€Ð¾ÐºÐ¾Ð¼ под Ñтим номером на Ñервере." + +#: src/drivers/main.cpp:164 +msgid "Use small(tiny!) font for netplay chat console." +msgstr "ИÑпользовать маленький (мелкий!) шрифт Ð´Ð»Ñ Ð¾ÐºÐ½Ð° чата." + +#: src/drivers/main.cpp:166 +msgid "Enable fullscreen mode." +msgstr "Включить полноÑкранный режим" + +#: src/drivers/main.cpp:167 +msgid "Select video driver, \"opengl\" or \"sdl\"." +msgstr "Выбрать видео-драйвер, «opengl» или «sdl»." + +#: src/drivers/main.cpp:168 +msgid "Attempt to synchronize OpenGL page flips to vertical retrace period." +msgstr "" +"ПытатьÑÑ Ñинхронизировать Ñмену видео-Ñтраниц OpenGL Ñ Ñ‡Ð°Ñтотой вертикальной " +"развёртки." + +#: src/drivers/main.cpp:169 +msgid "" +"Note: Additionally, if the environment variable \"__GL_SYNC_TO_VBLANK\" does " +"not exist, then it will be created and set to the value specified for this " +"setting. This has the effect of forcibly enabling or disabling vblank " +"synchronization when running under Linux with NVidia's drivers." +msgstr "" + +#: src/drivers/main.cpp:172 +msgid "Enable frameskip during emulation rendering." +msgstr "" + +#: src/drivers/main.cpp:173 +msgid "Disable for rendering code performance testing." +msgstr "" + +#: src/drivers/main.cpp:175 +msgid "Fast-forwarding speed multiplier." +msgstr "Множитель ÑкороÑти в режиме быÑтрой перемотки вперёд." + +#: src/drivers/main.cpp:176 +msgid "Treat the fast-forward button as a toggle." +msgstr "РаÑценивать клавишу быÑтрой перемотки вперёд как переключатель." + +#: src/drivers/main.cpp:177 +msgid "Silence sound output when fast-forwarding." +msgstr "Приглушать звук при быÑтрой перемотке вперёд." + +#: src/drivers/main.cpp:179 +msgid "SLOW-forwarding speed multiplier." +msgstr "" + +#: src/drivers/main.cpp:180 +msgid "Treat the SLOW-forward button as a toggle." +msgstr "" + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency." +msgstr "ЧаÑтота автоматичеÑкого огнÑ." + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency = GameSystemFrameRateHz / (value + 1)" +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Analog axis press threshold." +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Threshold for detecting a \"button\" press on analog axis, in percent." +msgstr "Граница воÑприÑÑ‚Ð¸Ñ Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ на аналоговой оÑи, в процентах." + +#: src/drivers/main.cpp:184 +msgid "Dangerous key action delay." +msgstr "" + +#: src/drivers/main.cpp:184 +msgid "" +"The length of time, in milliseconds, that a button/key corresponding to a " +"\"dangerous\" command like power, reset, exit, etc. must be pressed before " +"the command is executed." +msgstr "" +"Ð’Ñ€ÐµÐ¼Ñ Ð² мÑ, в течение которого должна быть нажата кнопка, Ð¾Ñ‚Ð²ÐµÑ‡Ð°ÑŽÑ‰Ð°Ñ Ð·Ð° " +"небезопаÑную команду (ÑброÑ, выход и Ñ‚.д.), чтобы команда была выполнена." + +#: src/drivers/main.cpp:185 +msgid "Disable speed throttling when sound is disabled." +msgstr "Отключать контроль ÑкороÑти когда звук отключён." + +#: src/drivers/main.cpp:186 +msgid "Automatic load/save state on game load/save." +msgstr "" + +#: src/drivers/main.cpp:186 +msgid "" +"Automatically save and load save states when a game is closed or loaded, " +"respectively." +msgstr "" +"ÐвтоматичеÑки ÑохранÑть и загружать ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ñ€Ð¸ закрытии и запуÑке игры " +"ÑоответÑтвенно." + +#: src/drivers/main.cpp:187 +msgid "Select sound driver." +msgstr "Выбрать аудио-драйвер." + +#: src/drivers/main.cpp:187 +msgid "" +"The following choices are possible, sorted by preference, high to low, when " +"\"default\" driver is used, but dependent on being compiled in." +msgstr "" + +#: src/drivers/main.cpp:188 +msgid "Select sound output device." +msgstr "Выбрать уÑтройÑтво вывода звука." + +#: src/drivers/main.cpp:189 +msgid "Sound volume level, in percent." +msgstr "ГромкоÑть звука в процентах." + +#: src/drivers/main.cpp:190 +msgid "Enable sound output." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "Desired period size in microseconds." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "" +"Currently only affects OSS and ALSA output. A value of 0 defers to the " +"default in the driver code in SexyAL.\n" +"\n" +"Note: This is not the \"sound buffer size\" setting, that would be \"sound." +"buffer_time\"." +msgstr "" + +#: src/drivers/main.cpp:192 +msgid "Desired total buffer size in milliseconds." +msgstr "" + +#: src/drivers/main.cpp:199 +msgid "Specifies the sound playback rate, in sound frames per second(\"Hz\")." +msgstr "" + +#: src/drivers/main.cpp:202 +msgid "Automatically go into the debugger's step mode after a game is loaded." +msgstr "ÐвтоматичеÑки войти в пошаговый режим отладчика поÑле загрузки игры." + +#: src/drivers/main.cpp:205 +msgid "" +"The length of time, in milliseconds, to display the save state or the movie " +"selector after selecting a state or movie." +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full" +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full-screen stretch, disregarding aspect ratio." +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "Aspect Preserve" +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "" +"Full-screen stretch as far as the aspect ratio(in this sense, the equivalent " +"xscalefs == yscalefs) can be maintained." +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "Aspect Preserve + Integer Scale" +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "" +"Full-screen stretch, same as \"aspect\" except that the equivalent xscalefs " +"and yscalefs are rounded down to the nearest integer." +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "Aspect Preserve + Integer Multiple-of-2 Scale" +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "" +"Full-screen stretch, same as \"aspect_int\", but rounds down to the nearest " +"multiple of 2." +msgstr "" + +#: src/drivers/main.cpp:263 +msgid "Bilinear" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Linear (X)" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Interpolation only on the X axis." +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Linear (Y)" +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Interpolation only on the Y axis." +msgstr "" + +#: src/drivers/main.cpp:283 +msgid "Disassembly font size." +msgstr "" + +#: src/drivers/main.cpp:286 +msgid "Character encoding for the debugger's memory editor." +msgstr "" + +#: src/drivers/main.cpp:480 +msgid "How DARE you interrupt me!\n" +msgstr "Ðу-ка не Ñмей Ð¼ÐµÐ½Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ñ‚ÑŒ!\n" + +#: src/drivers/main.cpp:484 +msgid "MUST TERMINATE ALL HUMANS\n" +msgstr "УБИТЬ ВСЕХ ЧЕЛОВЕКОВ!\n" + +#: src/drivers/main.cpp:488 +msgid "Reach out and hang-up on someone.\n" +msgstr "Может лучше Ñходишь прогулÑешьÑÑ?\n" + +#: src/drivers/main.cpp:492 +msgid "" +"Iyeeeeeeeee!!! A segmentation fault has occurred. Have a fluffy day.\n" +msgstr "Ошибка Ñегментации. ÐаÑлаждайтеÑÑŒ жизнью.\n" + +#: src/drivers/main.cpp:496 +msgid "The pipe has broken! Better watch out for floods...\n" +msgstr "Канал повреждён! Как бы не затопило...\n" + +#: src/drivers/main.cpp:501 +msgid "I told you to be nice to the driver.\n" +msgstr "Я же предупреждал — не лезь к водителю.\n" + +#: src/drivers/main.cpp:505 +msgid "Those darn floating points. Ne'er know when they'll bite!\n" +msgstr "" +"ÐÑ… Ñти чёртовы плавающие запÑтые. Ðикогда не угадаешь, куда они заплывут!\n" + +#: src/drivers/main.cpp:509 +msgid "Don't throw your clock at the meowing cats!\n" +msgstr "Ðе Ñтоит кидать Ñвои чаÑÑ‹ в кошек!\n" + +#: src/drivers/main.cpp:513 +msgid "Abort, Retry, Ignore, Fail?\n" +msgstr "Abort, Retry, Ignore, Fail?\n" + +#: src/drivers/main.cpp:517 src/drivers/main.cpp:521 +msgid "Killing your processes is not nice.\n" +msgstr "УбийÑтво процеÑÑов преÑледуетÑÑ Ð¿Ð¾ закону.\n" + +#: src/drivers/main.cpp:531 +msgid "" +"\n" +"Signal has been caught and dealt with: " +msgstr "" + +#: src/drivers/main.cpp:656 +msgid "Show help!" +msgstr "Показать Ñправку" + +#: src/drivers/main.cpp:657 +msgid "Enable remote mode(EXPERIMENTAL AND INCOMPLETE)." +msgstr "" + +#: src/drivers/main.cpp:659 +msgid "Load and boot a CD for the specified system." +msgstr "ЗагрузитьÑÑ Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚-диÑка Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ ÑиÑтемы." + +#: src/drivers/main.cpp:661 +msgid "Force usage of specified emulation module." +msgstr "" + +#: src/drivers/main.cpp:663 +msgid "Record sound output to the specified filename in the MS WAV format." +msgstr "ЗапиÑать звук в указанный файл в формате MS WAV" + +#: src/drivers/main.cpp:664 +msgid "" +"Record video and audio output to the specified filename in the QuickTime " +"format." +msgstr "" + +#: src/drivers/main.cpp:666 +msgid "Dump settings definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:667 +msgid "Dump modules definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:671 +msgid "Connect to the remote server and start network play." +msgstr "СоединитьÑÑ Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¼ Ñервером и начать Ñетевую игру." + +#: src/drivers/main.cpp:676 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]\n" +msgstr "ИÑпользование: %s [КЛЮЧ]... [ФÐЙЛ]\n" + +#: src/drivers/main.cpp:679 +#, c-format +msgid "" +"No command-line arguments specified.\n" +"\n" +msgstr "" +"Ðргументы командной Ñтроки не были заданы.\n" +"\n" + +#: src/drivers/main.cpp:681 +#, c-format +msgid "" +"\tPlease refer to the documentation for option parameters and usage.\n" +"\n" +msgstr "" +"\tСверьтеÑÑŒ Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸ÐµÐ¹ по наÑтройке и иÑпользованию ÑмулÑтора.\n" +"\n" + +#: src/drivers/main.cpp:694 +#, c-format +msgid "" +"Each setting(listed in the documentation) can also be passed as an argument " +"by prefixing the name with a hyphen,\n" +"and specifying the value to change the setting to as the next argument.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:695 +#, c-format +msgid "" +"For example:\n" +"\t%s -pce.xres 1680 -pce.yres 1050 -pce.stretch aspect -pce.pixshader " +"ipsharper \"Hyper Bonk Soldier.pce\"\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:696 +#, c-format +msgid "" +"Settings specified in this manner are automatically saved to the " +"configuration file, hence they\n" +"do not need to be passed to future invocations of the Mednafen executable.\n" +msgstr "" + +#: src/drivers/main.cpp:712 +msgid "No game filename specified!" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° не задано!" + +#: src/drivers/main.cpp:1388 +#, c-format +msgid "Compiled with gcc %s\n" +msgstr "" + +#: src/drivers/main.cpp:1396 +#, c-format +msgid "Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n" +msgstr "" + +#: src/drivers/main.cpp:1406 +#, c-format +msgid "Running with %s\n" +msgstr "" + +#: src/drivers/main.cpp:1413 +#, c-format +msgid "Compiled against zlib %s, running with zlib %s\n" +msgstr "" + +#: src/drivers/main.cpp:1494 +#, c-format +msgid "Starting Mednafen %s\n" +msgstr "ЗапуÑкаетÑÑ Mednafen %s\n" + +#: src/drivers/main.cpp:1497 +msgid "Build information:\n" +msgstr "" + +#: src/drivers/main.cpp:1505 +#, c-format +msgid "Base directory: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1529 +#, c-format +msgid "Could not create mutex: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1567 +#, c-format +msgid "Error creating directories: %s\n" +msgstr "" + +#: src/drivers/netplay.cpp:245 +msgid "*** Error intializing SDL_net!" +msgstr "*** Ошибка инициализации SDL_net!" + +#: src/drivers/netplay.cpp:256 +#, c-format +msgid "*** Error resolving host \"%s\"!" +msgstr "*** Ошибка при разрешении имени узла «%s»!" + +#: src/drivers/netplay.cpp:263 +#, c-format +msgid "*** Error connecting to remote host \"%s\" on port %u!" +msgstr "*** Ошибка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¼ узлом «%s» к порту %u!" + +#: src/drivers/netplay.cpp:267 +msgid "*** Sending initialization data to server." +msgstr "*** Отправка начальных данных Ñерверу." + +#: src/drivers/netplay.cpp:275 +msgid "*** Connection established." +msgstr "*** Соединение уÑтановлено." + +#: src/lynx/system.cpp:382 +msgid "Virtually rotate D-pad along with screen." +msgstr "Виртуально повернуть кнопки направлений вмеÑте Ñ Ñкраном." + +#: src/lynx/system.cpp:383 +msgid "Enable sound output lowpass filter." +msgstr "ИÑпользовать фильтр низких чаÑтот." + +#: src/lynx/system.cpp:433 +msgid "Atari Lynx ROM Image" +msgstr "" + +#: src/lynx/rom.cpp:67 +msgid "Lynx Boot ROM" +msgstr "" + +#: src/lynx/rom.cpp:74 +msgid "The Lynx Boot ROM Image is an incorrect size." +msgstr "" + +#: src/pce/mcgenjin.cpp:197 +msgid "MCGenjin ROM size is too small!" +msgstr "" + +#: src/pce/mcgenjin.cpp:200 +msgid "MC Genjin header magic missing!" +msgstr "" + +#: src/pce/mcgenjin.cpp:220 +#, c-format +msgid "Unsupported MCGENJIN device on CS%d: 0x%02x" +msgstr "" + +#: src/pce/mcgenjin.cpp:224 +#, c-format +msgid "CS%d: Unused\n" +msgstr "" + +#: src/pce/mcgenjin.cpp:230 +#, c-format +msgid "CS%d: %uKiB %sRAM\n" +msgstr "" + +#: src/pce/hes.cpp:85 +msgid "HES header is too small." +msgstr "" + +#: src/pce/hes.cpp:91 +msgid "HES header magic is invalid." +msgstr "" + +#: src/pce/hes.cpp:109 +msgid "HES Information:\n" +msgstr "" + +#: src/pce/hes.cpp:114 +#, c-format +msgid "Init address: 0x%04x\n" +msgstr "" + +#: src/pce/hes.cpp:115 +#, c-format +msgid "Starting song: %d\n" +msgstr "" + +#: src/pce/hes.cpp:132 +msgid "Chunk load:\n" +msgstr "" + +#: src/pce/hes.cpp:134 +#, c-format +msgid "File offset: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:135 +#, c-format +msgid "Load size: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:136 +#, c-format +msgid "Load target address: 0x%08x\n" +msgstr "" + +#: src/pce/huc.cpp:207 +msgid "ROM image is too large!" +msgstr "" + +#: src/pce/huc.cpp:233 +msgid "CD RAM" +msgstr "CD RAM" + +#: src/pce/huc.cpp:326 +msgid "System Card RAM" +msgstr "" + +#: src/pce/huc.cpp:372 +msgid "Populous RAM" +msgstr "Populous RAM" + +#: src/pce/pce.cpp:44 +msgid "HuC6280 as found in the original PC Engine." +msgstr "" + +#: src/pce/pce.cpp:45 +msgid "" +"HuC6280A as found in the SuperGrafx and CoreGrafx I. Provides proper " +"channel amplitude centering, but may cause clicking in a few games designed " +"with the original HuC6280's sound characteristics in mind." +msgstr "" + +#: src/pce/pce.cpp:46 +msgid "" +"Emulator-only pseudo-revision, designed to reduce clicking and audio " +"artifacts in games designed for either real revision." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "Match emulation mode." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "" +"Selects \"huc6280\" for non-SuperGrafx mode, and \"huc6280a\" for SuperGrafx" +"(full) mode." +msgstr "" + +#: src/pce/pce.cpp:507 +#, c-format +msgid "PSG Revision: %s\n" +msgstr "" + +#: src/pce/pce.cpp:707 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram_cd setting. This is " +"simulating a malfunction.\n" +msgstr "" + +#: src/pce/pce.cpp:731 +#, c-format +msgid "CD Layout: 0x%s\n" +msgstr "" + +#: src/pce/pce.cpp:1002 +msgid "Enable multitap(TurboTap) emulation." +msgstr "" + +#: src/pce/pce.cpp:1007 +msgid "Show horizontal overscan area." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "Disable BRAM(saved game memory) for CD games." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "" +"It is intended for viewing CD games' error screens that may be different " +"from simple BRAM full and uninitialized BRAM error screens, though it can " +"cause the game to crash outright." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "Disable BRAM(saved game memory) for HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "" +"It is intended for changing the behavior(passwords vs save games) of some " +"HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1016 +msgid "" +"Enabling this option is not necessary to run unrecognized PCE ROM images in " +"SuperGrafx mode, and enabling it is discouraged; ROM images with a file " +"extension of \".sgx\" will automatically enable SuperGrafx emulation." +msgstr "" + +#: src/pce/pce.cpp:1019 +msgid "" +"Leaving this option enabled is recommended, unless you want to see special " +"warning screens on ACD games, or you prefer the non-enhanced modes of ACD-" +"enhanced SCD games. Additionally, you may want to disable it you you wish " +"to use state rewinding with a SCD ACD-enhanced game on a slow CPU, as the " +"extra 2MiB of RAM the Arcade Card offers is difficult to compress in real-" +"time." +msgstr "" + +#: src/pce/pce.cpp:1022 +msgid "" +"WARNING: Enabling this option may cause undesirable graphics glitching on " +"some games(such as \"Bloody Wolf\")." +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Path to the GE CD BIOS" +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Games Express CD Card BIOS (Unlicensed)" +msgstr "" + +#: src/pce/pce.cpp:1027 +msgid "Enable lowpass filter with rolloff dependent on playback-frequency." +msgstr "" + +#: src/pce/pce.cpp:1028 +msgid "" +"This makes ADPCM voices sound less \"harsh\", however, the downside is that " +"it will cause many ADPCM sound effects to sound a bit muffled." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "Select PSG revision." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "" +"WARNING: HES playback will always use the \"huc6280a\" revision if this " +"setting is set to \"match\", since HES playback is always done with " +"SuperGrafx emulation enabled." +msgstr "" + +#: src/pce/pce.cpp:1036 +msgid "" +"Size of emulated VRAM per VDC in 16-bit words. DO NOT CHANGE THIS UNLESS " +"YOU KNOW WTF YOU ARE DOING." +msgstr "" + +#: src/sms/cart.cpp:136 +#, c-format +msgid "Mapper: %s\n" +msgstr "Маппер: %s\n" + +#: src/sms/cart.cpp:137 +#, c-format +msgid "Territory: %s\n" +msgstr "ТерриториÑ: %s\n" + +#: src/sms/cart.cpp:137 src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Domestic" +msgstr "Внутренний рынок" + +#: src/sms/cart.cpp:137 +msgid "Export" +msgstr "ЭкÑпорт" + +#: src/sms/system.cpp:383 +msgid "Domestic(Japanese)" +msgstr "" + +#: src/sms/system.cpp:384 +msgid "Export(World)" +msgstr "" + +#: src/sms/system.cpp:390 +msgid "System territory/region." +msgstr "" + +#: src/sms/system.cpp:391 +msgid "Enable FM sound emulation when playing domestic/Japan-region games." +msgstr "" +"Включить ÑмулÑцию FM-звука при воÑпроизведении игр из Японии (регион или " +"внутренний рынок)." + +#: src/sms/system.cpp:403 +msgid "Sega Master System ROM Image" +msgstr "" + +#: src/sms/system.cpp:409 +msgid "Game Gear ROM Image" +msgstr "" + +#: src/settings.cpp:89 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid unsigned integer." +msgstr "" + +#: src/settings.cpp:99 src/settings.cpp:131 src/settings.cpp:166 +#, c-format +msgid "" +"Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s" +"\"." +msgstr "" +"Параметр «%s» Ñлишком мал («%s»); минимальное допуÑтимое значение — «%s»." + +#: src/settings.cpp:110 src/settings.cpp:142 src/settings.cpp:177 +#, c-format +msgid "" +"Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s" +"\"." +msgstr "" +"Параметр «%s» Ñлишком велик («%s»); макÑимальное допуÑтимое значение — «%s»." + +#: src/settings.cpp:121 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid signed integer." +msgstr "" + +#: src/settings.cpp:156 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not set to a floating-point(real) number." +msgstr "" + +#: src/settings.cpp:186 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not a valid boolean value." +msgstr "" + +#: src/settings.cpp:214 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not a recognized string. Recognized " +"strings: %s" +msgstr "" + +#: src/settings.cpp:223 +#, c-format +msgid "Setting \"%s\" is not set to a valid string: \"%s\"" +msgstr "Параметр «%s» не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ Ñтрокой: «%s»" + +#: src/settings.cpp:225 +#, c-format +msgid "Setting \"%s\" is not set to a valid unsigned integer: \"%s\"" +msgstr "Параметр «%s» не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ беззнаковым целым чиÑлом: «%s»" + +#: src/settings.cpp:336 +#, c-format +msgid "Loading settings from \"%s\"..." +msgstr "Загрузка наÑтроек из «%s»..." + +#: src/settings.cpp:429 +msgid ";Edit this file at your own risk!\n" +msgstr ";Изменение Ñтого файла производите на Ñвой Ñтрах и риÑк!\n" + +#: src/settings.cpp:430 +msgid "" +";File format: \n" +"\n" +msgstr "" +";Формат файла: <ключ><одиночный пробел><значение>\n" +"\n" + +#: src/settings.cpp:638 +#, c-format +msgid "Unknown setting \"%s\"" +msgstr "ÐеизвеÑтный параметр «%s»" + +#: src/pcfx/rainbow.cpp:257 src/pcfx/rainbow.cpp:260 +msgid "Huffman LUT" +msgstr "" + +#: src/pcfx/rainbow.cpp:656 +msgid "RAINBOW buffer RAM" +msgstr "RAINBOW buffer RAM" + +#: src/pcfx/king.cpp:1681 +msgid "KING Data" +msgstr "Данные KING" + +#: src/pcfx/input/gamepad.cpp:83 +#, c-format +msgid "Pad %d - MODE 1: %s, MODE 2: %s" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +#, c-format +msgid "V810 Emulation Mode: %s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Accurate" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Fast" +msgstr "" + +#: src/pcfx/pcfx.cpp:510 +msgid "RAM" +msgstr "RAM" + +#: src/pcfx/pcfx.cpp:515 src/md/cd/cd.cpp:879 src/gba/GBA.cpp:762 +msgid "BIOS ROM" +msgstr "BIOS ROM" + +#: src/pcfx/pcfx.cpp:522 src/pcfx/pcfx.cpp:539 +msgid "BIOS ROM file is incorrect size.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:545 +msgid "FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:635 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram setting. This is simulating " +"a malfunction.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:830 +#, c-format +msgid "CD Layout MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:833 +#, c-format +msgid "GameSet MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:876 +#, fuzzy, c-format +msgid "Emulated CD-ROM drive speed: %ux\n" +msgstr "СкороÑть Ñмулируемого привода CD-ROM: %dx\n" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "Fast Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "" +"Fast mode trades timing accuracy, cache emulation, and executing from " +"hardware registers and RAM not intended for code use for performance." +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "Accurate Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "" +"Increased timing accuracy, though not perfect, along with cache emulation, " +"at the cost of decreased performance. Additionally, even the pipeline isn't " +"correctly and fully emulated in this mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "Auto Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "" +"Selects \"fast\" or \"accurate\" automatically based on an internal " +"database. If the CD image is not recognized, defaults to \"fast\"." +msgstr "" + +#: src/pcfx/pcfx.cpp:1044 +msgid "This value will cause heavy pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1045 +msgid "This value will cause moderate pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1046 +msgid "" +"This value will cause no pixel distortion as long as interpolation is " +"enabled on the video output device and the resolution is sufficiently high, " +"but it will use a lot of CPU time." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "Enable multitap on PC-FX port 1." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "Enable multitap on PC-FX port 2." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 6 7 8." +msgstr "" + +#: src/pcfx/pcfx.cpp:1068 +msgid "" +"When RUN+SEL are pressed simultaneously, disable both buttons temporarily." +msgstr "" + +#: src/pcfx/pcfx.cpp:1070 src/vb/vb.cpp:998 +msgid "CPU emulation mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1071 +msgid "Path to the ROM BIOS" +msgstr "Путь к файлу ROM BIOS" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Path to the FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Intended for developers only." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "Disable internal and external BRAM." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "" +"It is intended for viewing games' error screens that may be different from " +"simple BRAM full and uninitialized BRAM error screens, though it can cause " +"the game to crash outright." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "Emulated CD-ROM speed." +msgstr "СкороÑть Ñмулируемого CD-ROM." + +#: src/pcfx/pcfx.cpp:1074 +msgid "" +"Setting this to \"1\" will probably cause most games with FMV to break, but " +"setting it higher than 2, the default, will decrease loading times in most " +"games by some degree." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "Emulated width for 7.16MHz dot-clock mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "" +"Lower values are faster, but will cause some degree of pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1082 +msgid "" +"Enable bilinear interpolation on the chroma channel of RAINBOW YUV output." +msgstr "" + +#: src/pcfx/pcfx.cpp:1084 +msgid "Hack to suppress clicks caused by forced channel resets." +msgstr "" + +#: src/pcfx/pcfx.cpp:1088 +msgid "" +"Hack that emulates the codec a buggy ADPCM encoder used for some games' " +"ADPCM." +msgstr "" + +#: src/md/cd/cd.cpp:884 +msgid "Battery-backed RAM" +msgstr "" + +#: src/md/cd/cd.cpp:890 +msgid "Program RAM" +msgstr "" + +#: src/md/cd/cd.cpp:895 +msgid "Word RAM" +msgstr "" + +#: src/md/cd/cd.cpp:912 +#, c-format +msgid "Could not open CD BIOS file \"%s\": %s\n" +msgstr "Ðе удалоÑÑŒ открыть файл CD BIOS «%s»: %s\n" + +#: src/md/cd/cd.cpp:918 +msgid "BIOS is incorrect size." +msgstr "" + +#: src/md/system.cpp:238 +#, c-format +msgid "Header MD5: 0x%s\n" +msgstr "" + +#: src/md/system.cpp:239 +#, c-format +msgid "Product Code: %s\n" +msgstr "" + +#: src/md/system.cpp:240 +#, c-format +msgid "Domestic name: %s\n" +msgstr "" + +#: src/md/system.cpp:241 +#, c-format +msgid "Overseas name: %s\n" +msgstr "" + +#: src/md/system.cpp:242 +#, c-format +msgid "Copyright: %s\n" +msgstr "" + +#: src/md/system.cpp:244 +#, c-format +msgid "Checksum: 0x%04x\n" +msgstr "" + +#: src/md/system.cpp:246 +#, c-format +msgid "" +"Checksum: 0x%04x\n" +" Warning: calculated checksum(0x%04x) does not match\n" +msgstr "" + +#: src/md/system.cpp:248 +msgid "Supported I/O devices:\n" +msgstr "" + +#: src/md/system.cpp:253 +#, c-format +msgid "%s\n" +msgstr "" + +#: src/md/system.cpp:264 +msgid "Supported regions:\n" +msgstr "" + +#: src/md/system.cpp:267 +msgid "Japan/Domestic NTSC\n" +msgstr "" + +#: src/md/system.cpp:269 +msgid "Japan/Domestic PAL\n" +msgstr "" + +#: src/md/system.cpp:271 +msgid "Overseas NTSC\n" +msgstr "" + +#: src/md/system.cpp:273 +msgid "Overseas PAL\n" +msgstr "" + +#: src/md/system.cpp:336 +#, c-format +msgid "Active Region: %s %s\n" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Overseas" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "PAL" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "NTSC" +msgstr "" + +#: src/md/system.cpp:337 +#, c-format +msgid "Active Region Reported: %s %s\n" +msgstr "" + +#: src/md/system.cpp:484 src/md/system.cpp:499 +msgid "Match game's header." +msgstr "" + +#: src/md/system.cpp:484 +msgid "" +"Emulate the region that the game indicates it expects to run in via data in " +"the header(or in an internal database for a few games that may have bad " +"header data)." +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Overseas(non-Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Region used in North America." +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Overseas(non-Japan), PAL" +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Region used in Europe." +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Domestic(Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Region used in Japan." +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Domestic(Japan), PAL" +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Probably an invalid region, but available for testing purposes anyway." +msgstr "" + +#: src/md/system.cpp:497 +msgid "Match the region emulated." +msgstr "" + +#: src/md/system.cpp:499 +msgid "" +"This option, in conjunction with the \"md.region\" setting, can be used to " +"run all games at NTSC speeds, or all games at PAL speeds." +msgstr "" + +#: src/md/system.cpp:512 +msgid "Emulate the specified region's Genesis/MegaDrive" +msgstr "" + +#: src/md/system.cpp:513 +msgid "Region reported to the game." +msgstr "" + +#: src/md/system.cpp:515 +msgid "SegaCD/MegaCD emulation is currently nonfunctional." +msgstr "" + +#: src/md/system.cpp:527 +msgid "Super Magic Drive binary ROM Image" +msgstr "" + +#: src/md/system.cpp:528 +msgid "Super Magic Drive interleaved format ROM Image" +msgstr "" + +#: src/md/system.cpp:529 +msgid "Multi Game Doctor format ROM Image" +msgstr "" + +#: src/md/cart/cart.cpp:441 +#, c-format +msgid "Handler for mapper/board \"%s\" not found!\n" +msgstr "" + +#: src/md/cart/map_eeprom.cpp:187 +msgid "Cart EEPROM" +msgstr "" + +#: src/md/cart/map_sram.cpp:78 +msgid "Cart SRAM" +msgstr "" + +#: src/memory.cpp:33 +#, c-format +msgid "Error allocating(calloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти (calloc) в размере %u байт Ð´Ð»Ñ Â«%s» в %s (%d)!" + +#: src/memory.cpp:47 +#, c-format +msgid "Error allocating(malloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти (malloc) в размере %u байт Ð´Ð»Ñ Â«%s» в %s (%d)!" + +#: src/memory.cpp:61 +#, c-format +msgid "Error allocating(realloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" +"Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти (realloc) в размере %u байт Ð´Ð»Ñ Â«%s» в %s (%d)!" + +#: src/file.cpp:88 +#, c-format +msgid "Error reading IPS file header: %s" +msgstr "" + +#: src/file.cpp:95 +msgid "IPS file header is invalid." +msgstr "" + +#: src/file.cpp:104 src/file.cpp:174 src/file.cpp:269 src/file.cpp:291 +#: src/file.cpp:307 src/file.cpp:313 src/file.cpp:351 +msgid "file read buffer" +msgstr "буфер Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/file.cpp:129 +#, c-format +msgid "" +"IPS EOF: Did %d patches\n" +"\n" +msgstr "" +"Конец файла IPS: Применено %d патчей\n" +"\n" + +#: src/file.cpp:137 +#, c-format +msgid "Error reading IPS patch length: %s" +msgstr "" + +#: src/file.cpp:148 +#, c-format +msgid "Error reading IPS RLE patch length: %s" +msgstr "" + +#: src/file.cpp:170 +#, c-format +msgid "" +"ROM image will be too large after IPS patch; maximum size allowed is %llu " +"bytes." +msgstr "" +"Образ ROM будет Ñлишком велик поÑле Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° IPS; макÑимально " +"дозволенный размер — %llu Б." + +#: src/file.cpp:194 +#, c-format +msgid "Error reading IPS RLE patch byte: %s" +msgstr "" + +#: src/file.cpp:213 +#, c-format +msgid "Error reading IPS patch: %s" +msgstr "" + +#: src/file.cpp:225 +#, c-format +msgid "Error reading IPS patch header: %s" +msgstr "" + +#: src/file.cpp:250 src/file.cpp:303 src/file.cpp:347 +#, c-format +msgid "ROM image is too large; maximum size allowed is %llu bytes." +msgstr "Образ ROM Ñлишком велик; макÑимальный разрешённый размер — %llu Б." + +#: src/file.cpp:276 src/file.cpp:332 +#, c-format +msgid "Error reading file: %s" +msgstr "" + +#: src/file.cpp:327 +#, c-format +msgid "Error reading file: zlib error: %s" +msgstr "" + +#: src/file.cpp:424 src/file.cpp:474 +#, c-format +msgid "Could not seek to first file in ZIP archive: %s" +msgstr "Ðе удалоÑÑŒ перейти к первому файлу в архиве ZIP: %s" + +#: src/file.cpp:440 +#, c-format +msgid "Could not get file information in ZIP archive: %s" +msgstr "Ðе удалоÑÑŒ получить информацию о файле в архиве ZIP: %s" + +#: src/file.cpp:467 +#, c-format +msgid "Error seeking to next file in ZIP archive: %s" +msgstr "Ошибка перехода к Ñледующему файлу в архиве ZIP: %s" + +#: src/file.cpp:486 +#, c-format +msgid "Could not open file in ZIP archive: %s" +msgstr "Ðе удалоÑÑŒ открыть файл в архиве ZIP: %s" + +#: src/file.cpp:514 src/file.cpp:557 src/file.cpp:560 src/file.cpp:724 +#: src/file.cpp:756 +#, c-format +msgid "Error opening \"%s\": %s" +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Â«%s»: %s" + +#: src/file.cpp:560 +msgid "zlib error" +msgstr "" + +#: src/file.cpp:737 src/file.cpp:769 +#, c-format +msgid "Error writing to \"%s\": %s" +msgstr "" + +#: src/file.cpp:745 +#, c-format +msgid "Error closing \"%s\"" +msgstr "Ошибка Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Â«%s»" + +#: src/file.cpp:779 +#, c-format +msgid "Error closing \"%s\": %s" +msgstr "" + +#: src/vb/vb.cpp:600 +#, c-format +msgid "Title: %s\n" +msgstr "" + +#: src/vb/vb.cpp:601 +#, c-format +msgid "Game ID Code: %u\n" +msgstr "" + +#: src/vb/vb.cpp:602 +#, c-format +msgid "Manufacturer Code: %d\n" +msgstr "" + +#: src/vb/vb.cpp:603 +#, c-format +msgid "Version: %u\n" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Anaglyph" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Used in conjuction with classic dual-lens-color glasses." +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "CyberScope" +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "Intended for use with the CyberScope 3D device." +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "Side-by-Side" +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "" +"The left-eye image is displayed on the left, and the right-eye image is " +"displayed on the right." +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:983 +msgid "Forces usage of custom anaglyph colors." +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Red/Blue" +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Classic red/blue anaglyph." +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Red/Cyan" +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Improved quality red/cyan anaglyph." +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Red/Electric Cyan" +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Alternate version of red/cyan" +msgstr "" + +#: src/vb/vb.cpp:989 +msgid "Red/Green" +msgstr "" + +#: src/vb/vb.cpp:990 +msgid "Green/Magenta" +msgstr "" + +#: src/vb/vb.cpp:991 +msgid "Yellow/Blue" +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "Input latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "" +"Reduces latency in some games by 20ms by returning the current pad state, " +"rather than latched state, on serial port data reads. This hack may cause " +"some homebrew software to malfunction, but it should be relatively safe for " +"commercial official games." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "Display latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "" +"Reduces latency in games by displaying the framebuffer 20ms earlier. This " +"hack has some potential of causing graphical glitches, so it is disabled by " +"default." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "Allow draw skipping." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "" +"If vb.instant_display_hack is set to \"1\", and this setting is set to " +"\"1\", then frame-skipping the drawing to the emulated framebuffer will be " +"allowed. THIS WILL CAUSE GRAPHICAL GLITCHES, AND THEORETICALLY(but " +"unlikely) GAME CRASHES, ESPECIALLY WITH DIRECT FRAMEBUFFER DRAWING GAMES." +msgstr "" + +#: src/vb/vb.cpp:1005 +msgid "3D mode." +msgstr "" + +#: src/vb/vb.cpp:1006 +msgid "Line Interlaced prescale." +msgstr "" + +#: src/vb/vb.cpp:1008 +msgid "Disable parallax for BG and OBJ rendering." +msgstr "" + +#: src/vb/vb.cpp:1009 +msgid "Default maximum-brightness color to use in non-anaglyph 3D modes." +msgstr "" + +#: src/vb/vb.cpp:1011 +msgid "Anaglyph preset colors." +msgstr "" + +#: src/vb/vb.cpp:1012 +msgid "Anaglyph maximum-brightness color for left view." +msgstr "" + +#: src/vb/vb.cpp:1013 +msgid "Anaglyph maximum-brightness color for right view." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "Number of pixels to separate L/R views by." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "" +"This setting refers to pixels before vb.xscale(fs) scaling is taken into " +"consideration. For example, a value of \"100\" here will result in a " +"separation of 300 screen pixels if vb.xscale(fs) is set to \"3\"." +msgstr "" + +#: src/vb/vb.cpp:1017 +msgid "Reverse left/right 3D views." +msgstr "" + +#: src/vb/vb.cpp:1069 src/vb/vb.cpp:1070 +msgid "Nintendo Virtual Boy" +msgstr "" + +#: src/vb/vb.cpp:1072 +msgid "Nintendo Virtual Boy (Deprecated)" +msgstr "" + +#: src/netplay.cpp:259 src/netplay.cpp:265 +msgid "Could not send the integrity result to the netplay server." +msgstr "" + +#: src/netplay.cpp:292 +msgid "Could not send the save state command to the netplay server." +msgstr "Ðе удалоÑÑŒ поÑлать команду Ñохранить ÑоÑтоÑние Ñерверу Ñетевой игры." + +#: src/netplay.cpp:298 +msgid "Could not send the save state data to the netplay server." +msgstr "Ðе удалоÑÑŒ поÑлать данные Ñохранённого ÑоÑтоÑÐ½Ð¸Ñ Ñерверу Ñетевой игры." + +#: src/netplay.cpp:355 +msgid "a lurker" +msgstr "" + +#: src/netplay.cpp:357 +#, c-format +msgid "player(s)%s%s%s%s%s%s%s%s" +msgstr "" + +#: src/netplay.cpp:441 +msgid "Remote state loaded." +msgstr "Удалённое ÑоÑтоÑние загружено." + +#: src/netplay.cpp:573 +#, c-format +msgid "* You are now known as <%s>." +msgstr "* Теперь вы извеÑтны как <%s>." + +#: src/netplay.cpp:578 +#, c-format +msgid "* <%s> is now known as <%s>" +msgstr "* <%s> теперь извеÑтен как <%s>" + +#: src/netplay.cpp:635 +#, c-format +msgid "* You, %s, have connected as: %s%s" +msgstr "" + +#: src/netplay.cpp:649 +#, c-format +msgid "* %s has left(%s%s)" +msgstr "" + +#: src/netplay.cpp:653 +#, c-format +msgid "* %s has connected as: %s%s" +msgstr "" + +#: src/gba/flash.cpp:67 +msgid "flash memory" +msgstr "flash memory" + +#: src/gba/GBA.cpp:691 +msgid "ROM" +msgstr "ROM" + +#: src/gba/GBA.cpp:696 +msgid "Work RAM" +msgstr "Work RAM" + +#: src/gba/GBA.cpp:768 +msgid "Internal RAM" +msgstr "Internal RAM" + +#: src/gba/GBA.cpp:774 +msgid "Palette RAM" +msgstr "Palette RAM" + +#: src/gba/GBA.cpp:780 +msgid "VRAM" +msgstr "VRAM" + +#: src/gba/GBA.cpp:786 +msgid "OAM" +msgstr "OAM" + +#: src/gba/GBA.cpp:792 +msgid "IO" +msgstr "IO" + +#: src/gba/GBA.cpp:798 +msgid "GBA Color Map" +msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° GBA" + +#: src/gba/GBA.cpp:1367 +#, c-format +msgid "" +"Unsupported BIOS function %02x called from %08x. A BIOS file is needed in " +"order to get correct behaviour." +msgstr "" +"Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ BIOS %02x, Ð²Ñ‹Ð·Ð²Ð°Ð½Ð½Ð°Ñ Ð¸Ð· %08x, не поддерживаетÑÑ. Ð”Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ " +"работы необходим файл BIOS." + +#: src/gba/GBA.cpp:2546 src/gba/GBA.cpp:2547 src/gba/GBA.cpp:2548 +#: src/gba/GBA.cpp:3382 src/gba/GBA.cpp:3383 src/gba/GBA.cpp:3384 +msgid "GameBoy Advance ROM Image" +msgstr "" + +#: src/gba/GBA.cpp:2555 +msgid "GBA BIOS" +msgstr "" + +#: src/gba/GBA.cpp:2562 +msgid "Invalid BIOS file size" +msgstr "Ðекорректный размер файла BIOS" + +#: src/gba/GBA.cpp:3329 +msgid "Path to optional GBA BIOS ROM image." +msgstr "Путь к необÑзательному файлу GBA BIOS ROM." + +#: src/gba/GBA.cpp:3380 +msgid "GSF Rip" +msgstr "" + +#: src/gba/GBA.cpp:3381 +msgid "MiniGSF Rip" +msgstr "" + +#: src/movie.cpp:64 +msgid "Movie recording stopped." +msgstr "ЗапиÑÑŒ фильма прекращена." + +#: src/movie.cpp:107 +msgid "Movie recording started." +msgstr "ЗапиÑÑŒ фильма начата." + +#: src/movie.cpp:119 +msgid "Movie playback stopped." +msgstr "ВоÑпроизведение фильма прекращено." + +#: src/movie.cpp:138 +msgid "Can't play movies during netplay." +msgstr "Ðевозможно воÑпроизвеÑти фильм в ходе Ñетевой игры." + +#: src/movie.cpp:159 +msgid "Error loading state portion of the movie." +msgstr "Ошибка загрузки ÑоÑтоÑÐ½Ð¸Ñ Ð¸Ð· фильма." + +#: src/movie.cpp:168 +msgid "Movie playback started." +msgstr "ВоÑпроизведение фильма начато." + +#: src/movie.cpp:331 +msgid "Movie status" +msgstr "" + +#~ msgid "The scaling factor for the X axis." +#~ msgstr "КоÑффициент маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ оÑи X." + +#~ msgid "The scaling factor for the Y axis." +#~ msgstr "КоÑффициент маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ оÑи Y." + +#~ msgid "The scaling factor for the X axis in fullscreen mode." +#~ msgstr "КоÑффициент маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ оÑи X в полноÑкранном режиме." + +#~ msgid "The scaling factor for the Y axis in fullscreen mode." +#~ msgstr "КоÑффициент маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ оÑи Y в полноÑкранном режиме." + +#~ msgid "Enable scanlines with specified transparency." +#~ msgstr "ИÑпользовать черезÑтрочную развёртку Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ прозрачноÑтью." + +#~ msgid "Enable bilinear interpolation." +#~ msgstr "ИÑпользовать билинейную интерполÑцию." + +#~ msgid "Network play server hostname." +#~ msgstr "Ð˜Ð¼Ñ Ñервера Ð´Ð»Ñ Ñетевой игры." + +#~ msgid "Port to connect to on the server." +#~ msgstr "Порт Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу." + +#~ msgid "Enable sound emulation." +#~ msgstr "Включить ÑмулÑцию звука." + +#~ msgid "Specifies the desired size of the sound buffer, in milliseconds." +#~ msgstr "УÑтановить желаемый размер буфера звуковых данных, в мÑ." + +#~ msgid "Specifies the sound playback rate, in frames per second(\"Hz\")." +#~ msgstr "Указать чаÑтоту диÑкретизации звука, отÑчётов в Ñекунду (Гц)" + +#~ msgid "Enable the help screen." +#~ msgstr "Включить Ñкран Ñправки." + +#~ msgid "Character set for the debugger's memory editor." +#~ msgstr "Ðабор Ñимволов Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° памÑти в отладчике." + +#~ msgid "Disassembly font size(xsmall, small, medium, large)." +#~ msgstr "Размер шрифта дизаÑÑемблера (xsmall, small, medium, large)." + +#~ msgid "" +#~ "\n" +#~ "Signal %d has been caught and dealt with...\n" +#~ msgstr "" +#~ "\n" +#~ "Был пойман и обработан Ñигнал %d...\n" + +#~ msgid "Enable remote mode." +#~ msgstr "ИÑпользовать режим удалённой работы." + +#~ msgid "" +#~ "Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n" +#~ "\n" +#~ msgstr "" +#~ "Собран под SDL %u.%u.%u, запущен Ñ SDL %u.%u.%u\n" +#~ "\n" + +#~ msgid "Press a command key now." +#~ msgstr "Ðажмите командную клавишу." + +#~ msgid "OpenGL: %s\n" +#~ msgstr "OpenGL: %s\n" + +#~ msgid "Scanlines: %f%% transparency\n" +#~ msgstr "ЧерезÑтрочноÑть: %f%% прозрачноÑти\n" + +#~ msgid "Set rate is out of range [8192-48000]" +#~ msgstr "УÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ñ‡Ð°Ñтота за пределами [8192-48000]" + +#~ msgid " F1 - Toggle Help" +#~ msgstr " F1 - Показать/Ñкрыть Ñправку" + +#~ msgid " F2 - Configure Command Key" +#~ msgstr " F2 - ÐаÑтроить команды и клавиши" + +#~ msgid " ALT + SHIFT + [n] - Configure buttons on port n(1-5)" +#~ msgstr " ALT + SHIFT + [n] - ÐаÑтроить кнопки Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° n(1-5)" + +#~ msgid " CTRL + SHIFT + [n] - Select device on port n" +#~ msgstr " CTRL + SHIFT + [n] - Выбрать уÑтройÑтво Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° n" + +#~ msgid " ALT + S - Enable state rewinding" +#~ msgstr " ALT + S - Включить перемотку назад" + +#~ msgid " BACKSPACE - Rewind" +#~ msgstr " BACKSPACE - Перемотать назад" + +#~ msgid " F5 - Save State" +#~ msgstr " F5 - Сохранить ÑоÑтоÑние" + +#~ msgid " F6 - Select Disk" +#~ msgstr " F6 - Выбрать диÑк" + +#~ msgid " F7 - Load State" +#~ msgstr " F7 - Загрузить ÑоÑтоÑние" + +#~ msgid " F8 - Insert coin; Insert/Eject disk" +#~ msgstr " F8 - Ð’Ñтавить монетку или вÑтавить/извлечь диÑк" + +#~ msgid " F9 - Take Screen Snapshot" +#~ msgstr " F9 - Сделать Ñнимок Ñкрана" + +#~ msgid " F10 - (Soft) Reset, if available on emulated system." +#~ msgstr " F10 - (МÑгкий) ÑброÑ, еÑли возможен." + +#~ msgid " F11 - Power Toggle/Hard Reset" +#~ msgstr " F11 - Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð¸Ñ‚Ð°Ð½Ð¸Ñ/жёÑткий ÑброÑ" + +#~ msgid " F12 - Exit" +#~ msgstr " F12 - Выйти" + +#~ msgid "(now with 30% more moaning)" +#~ msgstr "(теперь Ñтонов на 30 процентов больше)" + +#~ msgid "IPS file \"%s\" is not valid!" +#~ msgstr "Ðекорректный файл IPS «%s»!" + +#~ msgid "Warning: IPS ended without an EOF chunk.\n" +#~ msgstr "Предупреждение: IPS закончилÑÑ Ð±ÐµÐ· блока EOF.\n" + +#~ msgid "Error opening \"%s\": %m" +#~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Â«%s»: %m" + +#~ msgid "Error writing to \"%s\": %m" +#~ msgstr "Ошибка запиÑи в «%s»: %m" + +#~ msgid "Loading custom color map from \"%s\"...\n" +#~ msgstr "Загрузка карты цветов из «%s»...\n" + +#~ msgid "Error opening \"%s\"" +#~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Â«%s»" + +#~ msgid "Error reading BIOS file" +#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° BIOS" + +#~ msgid "Load custom color map from specified file." +#~ msgstr "Загрузить оÑобую карту цветов из указанного файла." + +#~ msgid "Could not open referenced file \"%s\": %m\n" +#~ msgstr "Ðе удалоÑÑŒ открыть указанный файл «%s»: %m\n" + +#~ msgid "" +#~ "Length specified in TOC file for track %d is too large by %d sectors!\n" +#~ msgstr "" +#~ "ДлительноÑть дорожки %d, ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð² файле TOC, Ñлишком велика (%d " +#~ "Ñекторов Ñвыше нормы)!\n" + +#, fuzzy +#~ msgid "Invalid track count: %d\n" +#~ msgstr "Ðеверный номер дорожки: %d\n" + +#~ msgid "Error opening CUE sheet/TOC \"%s\": %m\n" +#~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° CUE/TOC «%s»: %m\n" + +#~ msgid "\"RW\" format subchannel data not supported, only \"RW_RAW\" is!\n" +#~ msgstr "" +#~ "Формат данных Ñубканала «RW» не поддерживаетÑÑ, поддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ " +#~ "«RW_RAW»!\n" + +#~ msgid "Error initializing MusePack decoder: %s!\n" +#~ msgstr "Ошибка инициализации декодера MusePack: %s!\n" + +#~ msgid "Error reading TOC file: %m\n" +#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° TOC: %m\n" + +#~ msgid "Error reading CUE sheet: %m\n" +#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° CUE: %m\n" + +#~ msgid "" +#~ "Raw rip data correction using L-EC: %s\n" +#~ "\n" +#~ msgstr "" +#~ "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ñ… данных Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ L-EC: %s\n" +#~ "\n" + +#~ msgid "PHYSICAL CDROM DISC" +#~ msgstr "ФИЗИЧЕСКИЙ ДИСК CDROM" + +#~ msgid "Track %2d, LSN: %6d %s\n" +#~ msgstr "Дорожка %2d, LSN: %6d %s\n" + +#~ msgid "Blur each frame with the last frame." +#~ msgstr "Размывать каждый кадр Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸ÐµÐ¼ предыдущего." + +#~ msgid "" +#~ "Compressor to use with state rewinding: \"minilzo\", \"quicklz\", or " +#~ "\"blz\"" +#~ msgstr "" +#~ "Метод ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ перемотки назад: «minilzo», «quicklz» или «blz»" + +#~ msgid "" +#~ "If value is true, use an alternate naming scheme(file base and numeric) " +#~ "for screen snapshots." +#~ msgstr "" +#~ "ЕÑли уÑтановлено в true, иÑпользовать альтернативную Ñхему Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ " +#~ "Ñнимков Ñкрана (Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° и чиÑло)." + +#~ msgid "" +#~ "Include the MD5 hash of the loaded game in the filenames of the data file" +#~ "(save states, SRAM backups) Mednafen creates." +#~ msgstr "" +#~ "ДобавлÑть MD5 загруженной игры в имена файлов Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ (Ñохранённые " +#~ "ÑоÑтоÑниÑ, SRAM) при их Ñоздании." + +#~ msgid "" +#~ "Enable simple error correction of raw data sector rips by evaluating L-EC " +#~ "and EDC data." +#~ msgstr "" +#~ "ИÑпользовать проÑтую коррекцию ошибок Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ñ… данных " +#~ "вычиÑлением L-EC и EDC." + +#~ msgid "Path override for screen snapshots." +#~ msgstr "Переопределение пути Ð´Ð»Ñ Ñнимков Ñкрана." + +#~ msgid "Path override for save games and nonvolatile memory." +#~ msgstr "Переопределение пути Ð´Ð»Ñ Ñохранённых игр и карт памÑти." + +#~ msgid "Path override for save states." +#~ msgstr "Переопределение пути Ð´Ð»Ñ Ñохранённых ÑоÑтоÑний." + +#~ msgid "Path override for movies." +#~ msgstr "Переопределение пути Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÐ¼Ð¾Ð²." + +#~ msgid "Path override for cheats." +#~ msgstr "Переопределение пути Ð´Ð»Ñ ÐºÐ¾Ð´Ð¾Ð²." + +#~ msgid "Path override for custom palettes." +#~ msgstr "Переопределение пути Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‚ цветов." + +#~ msgid "" +#~ "Write screen snapshots to the same directory the ROM/disk/disc image is " +#~ "in." +#~ msgstr "" +#~ "Создавать Ñнимки Ñкрана в той же директории, в которой находитÑÑ Ñ„Ð°Ð¹Ð» ROM/" +#~ "образ игры." + +#~ msgid "" +#~ "Write/Read save games and nonvolatile memory to/from the same directory " +#~ "the ROM/disk/disc image is in." +#~ msgstr "" +#~ "Создавать и иÑкать Ñохранённые игры и карты памÑти в той же директории, в " +#~ "которой находитÑÑ Ñ„Ð°Ð¹Ð» ROM/образ игры." + +#~ msgid "" +#~ "Write/Read save states to/from the same directory the ROM/disk/disc image " +#~ "is in." +#~ msgstr "" +#~ "Создавать и иÑкать Ñохранённые ÑоÑтоÑÐ½Ð¸Ñ Ð² той же директории, в которой " +#~ "находитÑÑ Ñ„Ð°Ð¹Ð» ROM/образ игры." + +#~ msgid "" +#~ "Write/Read movies to/from the same directory the ROM/disk/disc image is " +#~ "in." +#~ msgstr "" +#~ "Создавать и иÑкать фильмы в той же директории, в которой находитÑÑ Ñ„Ð°Ð¹Ð» " +#~ "ROM/образ игры." + +#~ msgid "Error opening Game Genie ROM image \"%s\": %m" +#~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Game Genie ROM «%s»: %m" + +#~ msgid "Game Genie Read Handler Save" +#~ msgstr "Game Genie Read Handler Save" + +#~ msgid "Game Genie Write Handler Save" +#~ msgstr "Game Genie Write Handler Save" + +#~ msgid "Select input device for input port 1." +#~ msgstr "Выбрать уÑтройÑтво ввода Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° 1." + +#~ msgid "Select input device for input port 2." +#~ msgstr "Выбрать уÑтройÑтво ввода Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° 2." + +#~ msgid "Select input device for input port 3." +#~ msgstr "Выбрать уÑтройÑтво ввода Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° 3." + +#~ msgid "Select input device for input port 4." +#~ msgstr "Выбрать уÑтройÑтво ввода Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° 4." + +#~ msgid "Select Famicom expansion-port device." +#~ msgstr "Выбрать уÑтройÑтво Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Famicom." + +#~ msgid "Disabled four-score emulation." +#~ msgstr "Отключить ÑмулÑцию four-score." + +#~ msgid "No 8-sprites-per-scanline limit option." +#~ msgstr "Отключить предел «8 Ñпрайтов на одну линию развёртки»." + +#~ msgid "First rendered scanline in NTSC mode." +#~ msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ñтрока в режиме NTSC." + +#~ msgid "Last rendered scanlines in NTSC mode." +#~ msgstr "ПоÑледнÑÑ Ð²Ñ‹Ð²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ñтрока в режиме NTSC." + +#~ msgid "First rendered scanline in PAL mode." +#~ msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ñтрока в режиме PAL." + +#~ msgid "Last rendered scanlines in PAL mode." +#~ msgstr "ПоÑледнÑÑ Ð²Ñ‹Ð²Ð¾Ð´Ð¸Ð¼Ð°Ñ Ñтрока в режиме PAL." + +#~ msgid "Filename of custom NES palette." +#~ msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° оÑобой карты цветов NES." + +#~ msgid "Select video quality/type preset." +#~ msgstr "Выбрать предуÑтановленную наÑтройку качеÑтва видео." + +#~ msgid "* You, %s, have connected as player: %s%s%s%s%s%s" +#~ msgstr "* Ð’Ñ‹, %s, вошли в качеÑтве игрока: %s%s%s%s%s%s" + +#~ msgid "* %s has left(player: %s%s%s%s%s%s)" +#~ msgstr "* %s вышел(игрок: %s%s%s%s%s%s)" + +#~ msgid "* %s has connected as player: %s%s%s%s%s%s" +#~ msgstr "* %s вошёл как игрок: %s%s%s%s%s%s" + +#~ msgid "If =1, tell games to display in English, if =0, in Japanese." +#~ msgstr "ЕÑли 1, игры должны пиÑать на английÑком, еÑли 0, то на ÑпонÑком." + +#~ msgid "Arcade Card RAM" +#~ msgstr "Arcade Card RAM" + +#~ msgid "Select input device for input port 5." +#~ msgstr "Выбрать уÑтройÑтво ввода Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ð° 5." + +#~ msgid "Set mouse sensitivity." +#~ msgstr "УÑтановить чувÑтвительноÑть мыши." + +#~ msgid "No 16-sprites-per-scanline limit option." +#~ msgstr "Отключить предел «16 Ñпрайтов на одну линию развёртки»." + +#~ msgid "Could not open BIOS file \"%s\": %s\n" +#~ msgstr "Ðе удалоÑÑŒ открыть файл BIOS «%s»: %s\n" + +#~ msgid "Using mmap() address space emulation...\n" +#~ msgstr "ИÑпользуетÑÑ ÑмулÑÑ†Ð¸Ñ Ð°Ð´Ñ€ÐµÑного проÑтранÑтва mmap()...\n" + +#~ msgid "Anonymous mmap() not supported? Then /dev/zero it is!\n" +#~ msgstr "Ðеименованный mmap() не поддерживаетÑÑ? Ðу его в /dev/null!\n" + +#~ msgid "Base mmap failed: %m" +#~ msgstr "Вызов Base mmap не удалÑÑ: %m" + +#~ msgid "RAM mmap failed: %m" +#~ msgstr "Вызов RAM mmap не удалÑÑ: %m" + +#~ msgid "Error reading BIOS file \"%s\": %s\n" +#~ msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° BIOS «%s»: %s\n" + +#~ msgid "CD ID MD5(first 4KiB): 0x%s\n" +#~ msgstr "CD ID MD5 (первые 4 КиБ): 0x%s\n" + +#~ msgid "GameSet MD5:\t 0x%s\n" +#~ msgstr "GameSet MD5:\t 0x%s\n" + +#~ msgid "Virtual CD Ejected" +#~ msgstr "Виртуальный CD извлечён" + +#~ msgid "Virtual CD Inserted" +#~ msgstr "Виртуальный CD вÑтавлен" + +#~ msgid "Emulated width for 7.16MHz dot-clock mode: 256, 341, or 1024." +#~ msgstr "" +#~ "Ð­Ð¼ÑƒÐ»Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° Ð´Ð»Ñ 7.16-мегагерцовых точечных чаÑов : 256, 341, или " +#~ "1024." + +#~ msgid "" +#~ "Use mmap() to create a virtual 32-bit address space to speed up V810 " +#~ "emulation." +#~ msgstr "" +#~ "ИÑпользовать mmap() Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ 32-битного адреÑного " +#~ "проÑтранÑтва Ð´Ð»Ñ ÑƒÑÐºÐ¾Ñ€ÐµÐ½Ð¸Ñ ÑмулÑции V810." + +#~ msgid "Setting \"%s\" is not set to a valid signed integer: \"%s\"" +#~ msgstr "Параметр «%s» не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ целым чиÑлом: «%s»" + +#~ msgid "Setting \"%s\" is not set to a floating-point(real) number: \"%s\"" +#~ msgstr "Параметр «%s» не ÑвлÑетÑÑ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼ вещеÑтвенным чиÑлом: «%s»" + +#~ msgid "Setting \"%s\" is not a valid boolean value: \"%s\"" +#~ msgstr "Параметр «%s» не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым логичеÑким значением: «%s»" + +#~ msgid "Failed: %m\n" +#~ msgstr "Сбой: %m\n" + +#~ msgid "Territory, \"domestic\"(Japan) or \"export\"." +#~ msgstr "ТерриториÑ, «Внутренний рынок» (ЯпониÑ) или «ЭкÑпорт»." + +#~ msgid "Error saving screen snapshot." +#~ msgstr "При Ñохранении Ñнимка Ñкрана произошла ошибка." + +#~ msgid "PNG compression buffer" +#~ msgstr "Буфер ÑÐ¶Ð°Ñ‚Ð¸Ñ PNG" + +#~ msgid "Video frame blur enabled with accumulation: %f.\n" +#~ msgstr "Размытие кадров Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸ÐµÐ¼: %f.\n" + +#~ msgid "Video frame blur enabled.\n" +#~ msgstr "Размытие кадров включено.\n" + +#~ msgid "Error opening %s: %s\n" +#~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ %s: %s\n" diff --git a/libmednahawk/po/stamp-po b/libmednahawk/po/stamp-po new file mode 100644 index 0000000000..7354eae3b3 --- /dev/null +++ b/libmednahawk/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/libmednahawk/sdl/include/SDL.h b/libmednahawk/sdl/include/SDL.h new file mode 100644 index 0000000000..0e7b50d65b --- /dev/null +++ b/libmednahawk/sdl/include/SDL.h @@ -0,0 +1,101 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL.h + * Main include header for the SDL library + */ + +#ifndef _SDL_H +#define _SDL_H + +#include "SDL_main.h" +#include "SDL_stdinc.h" +#include "SDL_audio.h" +#include "SDL_cdrom.h" +#include "SDL_cpuinfo.h" +#include "SDL_endian.h" +#include "SDL_error.h" +#include "SDL_events.h" +#include "SDL_loadso.h" +#include "SDL_mutex.h" +#include "SDL_rwops.h" +#include "SDL_thread.h" +#include "SDL_timer.h" +#include "SDL_video.h" +#include "SDL_version.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL.h + * @note As of version 0.5, SDL is loaded dynamically into the application + */ + +/** @name SDL_INIT Flags + * These are the flags which may be passed to SDL_Init() -- you should + * specify the subsystems which you will be using in your application. + */ +/*@{*/ +#define SDL_INIT_TIMER 0x00000001 +#define SDL_INIT_AUDIO 0x00000010 +#define SDL_INIT_VIDEO 0x00000020 +#define SDL_INIT_CDROM 0x00000100 +#define SDL_INIT_JOYSTICK 0x00000200 +#define SDL_INIT_NOPARACHUTE 0x00100000 /**< Don't catch fatal signals */ +#define SDL_INIT_EVENTTHREAD 0x01000000 /**< Not supported on all OS's */ +#define SDL_INIT_EVERYTHING 0x0000FFFF +/*@}*/ + +/** This function loads the SDL dynamically linked library and initializes + * the subsystems specified by 'flags' (and those satisfying dependencies) + * Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup + * signal handlers for some commonly ignored fatal signals (like SIGSEGV) + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** This function initializes specific SDL subsystems */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** This function cleans up specific SDL subsystems */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** This function returns mask of the specified subsystems which have + * been initialized. + * If 'flags' is 0, it returns a mask of all initialized subsystems. + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** This function cleans up all initialized subsystems and unloads the + * dynamically linked library. You should call it upon all exit conditions. + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_H */ diff --git a/libmednahawk/sdl/include/SDL_active.h b/libmednahawk/sdl/include/SDL_active.h new file mode 100644 index 0000000000..bebfc8c44d --- /dev/null +++ b/libmednahawk/sdl/include/SDL_active.h @@ -0,0 +1,63 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_active.h + * Include file for SDL application focus event handling + */ + +#ifndef _SDL_active_h +#define _SDL_active_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name The available application states */ +/*@{*/ +#define SDL_APPMOUSEFOCUS 0x01 /**< The app has mouse coverage */ +#define SDL_APPINPUTFOCUS 0x02 /**< The app has input focus */ +#define SDL_APPACTIVE 0x04 /**< The application is active */ +/*@}*/ + +/* Function prototypes */ +/** + * This function returns the current state of the application, which is a + * bitwise combination of SDL_APPMOUSEFOCUS, SDL_APPINPUTFOCUS, and + * SDL_APPACTIVE. If SDL_APPACTIVE is set, then the user is able to + * see your application, otherwise it has been iconified or disabled. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetAppState(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_active_h */ diff --git a/libmednahawk/sdl/include/SDL_audio.h b/libmednahawk/sdl/include/SDL_audio.h new file mode 100644 index 0000000000..f2eb335639 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_audio.h @@ -0,0 +1,284 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_audio.h + * Access to the raw audio mixing buffer for the SDL library + */ + +#ifndef _SDL_audio_h +#define _SDL_audio_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_endian.h" +#include "SDL_mutex.h" +#include "SDL_thread.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * When filling in the desired audio spec structure, + * - 'desired->freq' should be the desired audio frequency in samples-per-second. + * - 'desired->format' should be the desired audio format. + * - 'desired->samples' is the desired size of the audio buffer, in samples. + * This number should be a power of two, and may be adjusted by the audio + * driver to a value more suitable for the hardware. Good values seem to + * range between 512 and 8096 inclusive, depending on the application and + * CPU speed. Smaller values yield faster response time, but can lead + * to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. A stereo sample consists of both right + * and left channels in LR ordering. + * Note that the number of samples is directly related to time by the + * following formula: ms = (samples*1000)/freq + * - 'desired->size' is the size in bytes of the audio buffer, and is + * calculated by SDL_OpenAudio(). + * - 'desired->silence' is the value used to set the buffer to silence, + * and is calculated by SDL_OpenAudio(). + * - 'desired->callback' should be set to a function that will be called + * when the audio device is ready for more data. It is passed a pointer + * to the audio buffer, and the length in bytes of the audio buffer. + * This function usually runs in a separate thread, and so you should + * protect data structures that it accesses by calling SDL_LockAudio() + * and SDL_UnlockAudio() in your code. + * - 'desired->userdata' is passed as the first parameter to your callback + * function. + * + * @note The calculated values in this structure are calculated by SDL_OpenAudio() + * + */ +typedef struct SDL_AudioSpec { + int freq; /**< DSP frequency -- samples per second */ + Uint16 format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in samples (power of 2) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + /** + * This function is called when the audio device needs more data. + * + * @param[out] stream A pointer to the audio data buffer + * @param[in] len The length of the audio buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + */ + void (SDLCALL *callback)(void *userdata, Uint8 *stream, int len); + void *userdata; +} SDL_AudioSpec; + +/** + * @name Audio format flags + * defaults to LSB byte order + */ +/*@{*/ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB + +/** + * @name Native audio byte ordering + */ +/*@{*/ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#endif +/*@}*/ + +/*@}*/ + + +/** A structure to hold a set of audio conversion filters and buffers */ +typedef struct SDL_AudioCVT { + int needed; /**< Set to 1 if conversion possible */ + Uint16 src_format; /**< Source audio format */ + Uint16 dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + void (SDLCALL *filters[10])(struct SDL_AudioCVT *cvt, Uint16 format); + int filter_index; /**< Current audio conversion function */ +} SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * @name Audio Init and Quit + * These functions are used internally, and should not be used unless you + * have a specific need to specify the audio driver you want to use. + * You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/*@{*/ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/*@}*/ + +/** + * This function fills the given character buffer with the name of the + * current audio driver, and returns a pointer to it if the audio driver has + * been initialized. It returns NULL if no driver has been initialized. + */ +extern DECLSPEC char * SDLCALL SDL_AudioDriverName(char *namebuf, int maxlen); + +/** + * This function opens the audio device with the desired parameters, and + * returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by 'obtained'. If 'obtained' is NULL, the audio + * data passed to the callback function will be guaranteed to be in the + * requested format, and will be automatically converted to the hardware + * audio format if necessary. This function returns -1 if it failed + * to open the audio device, or couldn't set up the audio thread. + * + * The audio device starts out playing silence when it's opened, and should + * be enabled for playing by calling SDL_PauseAudio(0) when you are ready + * for your audio callback function to be called. Since the audio driver + * may modify the requested size of the audio buffer, you should allocate + * any local mixing buffers after you open the audio device. + * + * @sa SDL_AudioSpec + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); + +typedef enum { + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_audiostatus; + +/** Get the current audio state */ +extern DECLSPEC SDL_audiostatus SDLCALL SDL_GetAudioStatus(void); + +/** + * This function pauses and unpauses the audio callback processing. + * It should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * This function loads a WAVE from the data source, automatically freeing + * that source if 'freesrc' is non-zero. For example, to load a WAVE file, + * you could do: + * @code SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...); @endcode + * + * If this function succeeds, it returns the given SDL_AudioSpec, + * filled with the audio data format of the wave data, and sets + * 'audio_buf' to a malloc()'d buffer containing the audio data, + * and sets 'audio_len' to the length of that audio buffer, in bytes. + * You need to free the audio buffer with SDL_FreeWAV() when you are + * done with it. + * + * This function returns NULL and sets the SDL error message if the + * wave file cannot be opened, uses an unknown data format, or is + * corrupt. Currently raw and MS-ADPCM WAVE files are supported. + */ +extern DECLSPEC SDL_AudioSpec * SDLCALL SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); + +/** Compatibility convenience function -- loads a WAV from a file */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * This function frees data previously allocated with SDL_LoadWAV_RW() + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 *audio_buf); + +/** + * This function takes a source format and rate and a destination format + * and rate, and initializes the 'cvt' structure with information needed + * by SDL_ConvertAudio() to convert a buffer of audio data from one format + * to the other. + * + * @return This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT *cvt, + Uint16 src_format, Uint8 src_channels, int src_rate, + Uint16 dst_format, Uint8 dst_channels, int dst_rate); + +/** + * Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(), + * created an audio buffer cvt->buf, and filled it with cvt->len bytes of + * audio data in the source format, this function will convert it in-place + * to the desired format. + * The data conversion may expand the size of the audio data, so the buffer + * cvt->buf should be allocated after the cvt structure is initialized by + * SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long. + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT *cvt); + + +#define SDL_MIX_MAXVOLUME 128 +/** + * This takes two audio buffers of the playing audio format and mixes + * them, performing addition, volume adjustment, and overflow clipping. + * The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume. Note this does not change hardware volume. + * This is provided for convenience -- you can mix your own audio data. + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume); + +/** + * @name Audio Locks + * The lock manipulated by these functions protects the callback function. + * During a LockAudio/UnlockAudio pair, you can be guaranteed that the + * callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); +/*@}*/ + +/** + * This function shuts down audio processing and closes the audio device. + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_audio_h */ diff --git a/libmednahawk/sdl/include/SDL_byteorder.h b/libmednahawk/sdl/include/SDL_byteorder.h new file mode 100644 index 0000000000..5202c661eb --- /dev/null +++ b/libmednahawk/sdl/include/SDL_byteorder.h @@ -0,0 +1,29 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_byteorder.h + * @deprecated Use SDL_endian.h instead + */ + +/* DEPRECATED */ +#include "SDL_endian.h" diff --git a/libmednahawk/sdl/include/SDL_cdrom.h b/libmednahawk/sdl/include/SDL_cdrom.h new file mode 100644 index 0000000000..47d8266676 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_cdrom.h @@ -0,0 +1,202 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_cdrom.h + * This is the CD-audio control API for Simple DirectMedia Layer + */ + +#ifndef _SDL_cdrom_h +#define _SDL_cdrom_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file SDL_cdrom.h + * In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_CDROM flag. This causes SDL to scan the system + * for CD-ROM drives, and load appropriate drivers. + */ + +/** The maximum number of CD-ROM tracks on a disk */ +#define SDL_MAX_TRACKS 99 + +/** @name Track Types + * The types of CD-ROM track possible + */ +/*@{*/ +#define SDL_AUDIO_TRACK 0x00 +#define SDL_DATA_TRACK 0x04 +/*@}*/ + +/** The possible states which a CD-ROM drive can be in. */ +typedef enum { + CD_TRAYEMPTY, + CD_STOPPED, + CD_PLAYING, + CD_PAUSED, + CD_ERROR = -1 +} CDstatus; + +/** Given a status, returns true if there's a disk in the drive */ +#define CD_INDRIVE(status) ((int)(status) > 0) + +typedef struct SDL_CDtrack { + Uint8 id; /**< Track number */ + Uint8 type; /**< Data or audio track */ + Uint16 unused; + Uint32 length; /**< Length, in frames, of this track */ + Uint32 offset; /**< Offset, in frames, from start of disk */ +} SDL_CDtrack; + +/** This structure is only current as of the last call to SDL_CDStatus() */ +typedef struct SDL_CD { + int id; /**< Private drive identifier */ + CDstatus status; /**< Current drive status */ + + /** The rest of this structure is only valid if there's a CD in drive */ + /*@{*/ + int numtracks; /**< Number of tracks on disk */ + int cur_track; /**< Current track position */ + int cur_frame; /**< Current frame offset within current track */ + SDL_CDtrack track[SDL_MAX_TRACKS+1]; + /*@}*/ +} SDL_CD; + +/** @name Frames / MSF Conversion Functions + * Conversion functions from frames to Minute/Second/Frames and vice versa + */ +/*@{*/ +#define CD_FPS 75 +#define FRAMES_TO_MSF(f, M,S,F) { \ + int value = f; \ + *(F) = value%CD_FPS; \ + value /= CD_FPS; \ + *(S) = value%60; \ + value /= 60; \ + *(M) = value; \ +} +#define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) +/*@}*/ + +/* CD-audio API functions: */ + +/** + * Returns the number of CD-ROM drives on the system, or -1 if + * SDL_Init() has not been called with the SDL_INIT_CDROM flag. + */ +extern DECLSPEC int SDLCALL SDL_CDNumDrives(void); + +/** + * Returns a human-readable, system-dependent identifier for the CD-ROM. + * Example: + * - "/dev/cdrom" + * - "E:" + * - "/dev/disk/ide/1/master" + */ +extern DECLSPEC const char * SDLCALL SDL_CDName(int drive); + +/** + * Opens a CD-ROM drive for access. It returns a drive handle on success, + * or NULL if the drive was invalid or busy. This newly opened CD-ROM + * becomes the default CD used when other CD functions are passed a NULL + * CD-ROM handle. + * Drives are numbered starting with 0. Drive 0 is the system default CD-ROM. + */ +extern DECLSPEC SDL_CD * SDLCALL SDL_CDOpen(int drive); + +/** + * This function returns the current status of the given drive. + * If the drive has a CD in it, the table of contents of the CD and current + * play position of the CD will be stored in the SDL_CD structure. + */ +extern DECLSPEC CDstatus SDLCALL SDL_CDStatus(SDL_CD *cdrom); + +/** + * Play the given CD starting at 'start_track' and 'start_frame' for 'ntracks' + * tracks and 'nframes' frames. If both 'ntrack' and 'nframe' are 0, play + * until the end of the CD. This function will skip data tracks. + * This function should only be called after calling SDL_CDStatus() to + * get track information about the CD. + * For example: + * @code + * // Play entire CD: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) + * SDL_CDPlayTracks(cdrom, 0, 0, 0, 0); + * // Play last track: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) { + * SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0); + * } + * // Play first and second track and 10 seconds of third track: + * if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) + * SDL_CDPlayTracks(cdrom, 0, 0, 2, 10); + * @endcode + * + * @return This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_CDPlayTracks(SDL_CD *cdrom, + int start_track, int start_frame, int ntracks, int nframes); + +/** + * Play the given CD starting at 'start' frame for 'length' frames. + * @return It returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_CDPlay(SDL_CD *cdrom, int start, int length); + +/** Pause play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDPause(SDL_CD *cdrom); + +/** Resume play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDResume(SDL_CD *cdrom); + +/** Stop play + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDStop(SDL_CD *cdrom); + +/** Eject CD-ROM + * @return returns 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_CDEject(SDL_CD *cdrom); + +/** Closes the handle for the CD-ROM drive */ +extern DECLSPEC void SDLCALL SDL_CDClose(SDL_CD *cdrom); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_video_h */ diff --git a/libmednahawk/sdl/include/SDL_config.h b/libmednahawk/sdl/include/SDL_config.h new file mode 100644 index 0000000000..06f41a8d47 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config.h @@ -0,0 +1,45 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_h +#define _SDL_config_h + +#include "SDL_platform.h" + +/* Add any platform that doesn't build using the configure system */ +#if defined(__DREAMCAST__) +#include "SDL_config_dreamcast.h" +#elif defined(__MACOS__) +#include "SDL_config_macos.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__SYMBIAN32__) +#include "SDL_config_symbian.h" /* must be before win32! */ +#elif defined(__WIN32__) +#include "SDL_config_win32.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" +#else +#include "SDL_config_minimal.h" +#endif /* platform config */ + +#endif /* _SDL_config_h */ diff --git a/libmednahawk/sdl/include/SDL_config.h.default b/libmednahawk/sdl/include/SDL_config.h.default new file mode 100644 index 0000000000..06f41a8d47 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config.h.default @@ -0,0 +1,45 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_h +#define _SDL_config_h + +#include "SDL_platform.h" + +/* Add any platform that doesn't build using the configure system */ +#if defined(__DREAMCAST__) +#include "SDL_config_dreamcast.h" +#elif defined(__MACOS__) +#include "SDL_config_macos.h" +#elif defined(__MACOSX__) +#include "SDL_config_macosx.h" +#elif defined(__SYMBIAN32__) +#include "SDL_config_symbian.h" /* must be before win32! */ +#elif defined(__WIN32__) +#include "SDL_config_win32.h" +#elif defined(__OS2__) +#include "SDL_config_os2.h" +#else +#include "SDL_config_minimal.h" +#endif /* platform config */ + +#endif /* _SDL_config_h */ diff --git a/libmednahawk/sdl/include/SDL_config.h.in b/libmednahawk/sdl/include/SDL_config.h.in new file mode 100644 index 0000000000..5f62b97145 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config.h.in @@ -0,0 +1,310 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_h +#define _SDL_config_h + +/* This is a set of defines to configure the SDL features */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +/* Make sure that this isn't included by Visual C++ */ +#ifdef _MSC_VER +#error You should copy include/SDL_config.h.default to include/SDL_config.h +#endif + +/* C language features */ +#undef const +#undef inline +#undef volatile + +/* C datatypes */ +#undef size_t +#undef int8_t +#undef uint8_t +#undef int16_t +#undef uint16_t +#undef int32_t +#undef uint32_t +#undef int64_t +#undef uint64_t +#undef uintptr_t +#undef SDL_HAS_64BIT_TYPE + +/* Endianness */ +#undef SDL_BYTEORDER + +/* Comment this if you want to build without any C library requirements */ +#undef HAVE_LIBC +#if HAVE_LIBC + +/* Useful headers */ +#undef HAVE_ALLOCA_H +#undef HAVE_SYS_TYPES_H +#undef HAVE_STDIO_H +#undef STDC_HEADERS +#undef HAVE_STDLIB_H +#undef HAVE_STDARG_H +#undef HAVE_MALLOC_H +#undef HAVE_MEMORY_H +#undef HAVE_STRING_H +#undef HAVE_STRINGS_H +#undef HAVE_INTTYPES_H +#undef HAVE_STDINT_H +#undef HAVE_CTYPE_H +#undef HAVE_MATH_H +#undef HAVE_ICONV_H +#undef HAVE_SIGNAL_H +#undef HAVE_ALTIVEC_H + +/* C library functions */ +#undef HAVE_MALLOC +#undef HAVE_CALLOC +#undef HAVE_REALLOC +#undef HAVE_FREE +#undef HAVE_ALLOCA +#ifndef _WIN32 /* Don't use C runtime versions of these on Windows */ +#undef HAVE_GETENV +#undef HAVE_PUTENV +#undef HAVE_UNSETENV +#endif +#undef HAVE_QSORT +#undef HAVE_ABS +#undef HAVE_BCOPY +#undef HAVE_MEMSET +#undef HAVE_MEMCPY +#undef HAVE_MEMMOVE +#undef HAVE_MEMCMP +#undef HAVE_STRLEN +#undef HAVE_STRLCPY +#undef HAVE_STRLCAT +#undef HAVE_STRDUP +#undef HAVE__STRREV +#undef HAVE__STRUPR +#undef HAVE__STRLWR +#undef HAVE_INDEX +#undef HAVE_RINDEX +#undef HAVE_STRCHR +#undef HAVE_STRRCHR +#undef HAVE_STRSTR +#undef HAVE_ITOA +#undef HAVE__LTOA +#undef HAVE__UITOA +#undef HAVE__ULTOA +#undef HAVE_STRTOL +#undef HAVE_STRTOUL +#undef HAVE__I64TOA +#undef HAVE__UI64TOA +#undef HAVE_STRTOLL +#undef HAVE_STRTOULL +#undef HAVE_STRTOD +#undef HAVE_ATOI +#undef HAVE_ATOF +#undef HAVE_STRCMP +#undef HAVE_STRNCMP +#undef HAVE__STRICMP +#undef HAVE_STRCASECMP +#undef HAVE__STRNICMP +#undef HAVE_STRNCASECMP +#undef HAVE_SSCANF +#undef HAVE_SNPRINTF +#undef HAVE_VSNPRINTF +#undef HAVE_ICONV +#undef HAVE_SIGACTION +#undef HAVE_SETJMP +#undef HAVE_NANOSLEEP +#undef HAVE_CLOCK_GETTIME +#undef HAVE_GETPAGESIZE +#undef HAVE_MPROTECT + +#else +/* We may need some replacement for stdarg.h here */ +#include +#endif /* HAVE_LIBC */ + +/* Allow disabling of core subsystems */ +#undef SDL_AUDIO_DISABLED +#undef SDL_CDROM_DISABLED +#undef SDL_CPUINFO_DISABLED +#undef SDL_EVENTS_DISABLED +#undef SDL_FILE_DISABLED +#undef SDL_JOYSTICK_DISABLED +#undef SDL_LOADSO_DISABLED +#undef SDL_THREADS_DISABLED +#undef SDL_TIMERS_DISABLED +#undef SDL_VIDEO_DISABLED + +/* Enable various audio drivers */ +#undef SDL_AUDIO_DRIVER_ALSA +#undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC +#undef SDL_AUDIO_DRIVER_ARTS +#undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC +#undef SDL_AUDIO_DRIVER_BAUDIO +#undef SDL_AUDIO_DRIVER_BSD +#undef SDL_AUDIO_DRIVER_COREAUDIO +#undef SDL_AUDIO_DRIVER_DART +#undef SDL_AUDIO_DRIVER_DC +#undef SDL_AUDIO_DRIVER_DISK +#undef SDL_AUDIO_DRIVER_DUMMY +#undef SDL_AUDIO_DRIVER_DMEDIA +#undef SDL_AUDIO_DRIVER_DSOUND +#undef SDL_AUDIO_DRIVER_PULSE +#undef SDL_AUDIO_DRIVER_PULSE_DYNAMIC +#undef SDL_AUDIO_DRIVER_ESD +#undef SDL_AUDIO_DRIVER_ESD_DYNAMIC +#undef SDL_AUDIO_DRIVER_MINT +#undef SDL_AUDIO_DRIVER_MMEAUDIO +#undef SDL_AUDIO_DRIVER_NAS +#undef SDL_AUDIO_DRIVER_NAS_DYNAMIC +#undef SDL_AUDIO_DRIVER_OSS +#undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H +#undef SDL_AUDIO_DRIVER_PAUD +#undef SDL_AUDIO_DRIVER_QNXNTO +#undef SDL_AUDIO_DRIVER_SNDMGR +#undef SDL_AUDIO_DRIVER_SUNAUDIO +#undef SDL_AUDIO_DRIVER_WAVEOUT + +/* Enable various cdrom drivers */ +#undef SDL_CDROM_AIX +#undef SDL_CDROM_BEOS +#undef SDL_CDROM_BSDI +#undef SDL_CDROM_DC +#undef SDL_CDROM_DUMMY +#undef SDL_CDROM_FREEBSD +#undef SDL_CDROM_LINUX +#undef SDL_CDROM_MACOS +#undef SDL_CDROM_MACOSX +#undef SDL_CDROM_MINT +#undef SDL_CDROM_OPENBSD +#undef SDL_CDROM_OS2 +#undef SDL_CDROM_OSF +#undef SDL_CDROM_QNX +#undef SDL_CDROM_WIN32 + +/* Enable various input drivers */ +#undef SDL_INPUT_LINUXEV +#undef SDL_INPUT_TSLIB +#undef SDL_JOYSTICK_BEOS +#undef SDL_JOYSTICK_DC +#undef SDL_JOYSTICK_DUMMY +#undef SDL_JOYSTICK_IOKIT +#undef SDL_JOYSTICK_LINUX +#undef SDL_JOYSTICK_MACOS +#undef SDL_JOYSTICK_MINT +#undef SDL_JOYSTICK_OS2 +#undef SDL_JOYSTICK_RISCOS +#undef SDL_JOYSTICK_WINMM +#undef SDL_JOYSTICK_USBHID +#undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H + +/* Enable various shared object loading systems */ +#undef SDL_LOADSO_BEOS +#undef SDL_LOADSO_DLCOMPAT +#undef SDL_LOADSO_DLOPEN +#undef SDL_LOADSO_DUMMY +#undef SDL_LOADSO_LDG +#undef SDL_LOADSO_MACOS +#undef SDL_LOADSO_OS2 +#undef SDL_LOADSO_WIN32 + +/* Enable various threading systems */ +#undef SDL_THREAD_BEOS +#undef SDL_THREAD_DC +#undef SDL_THREAD_OS2 +#undef SDL_THREAD_PTH +#undef SDL_THREAD_PTHREAD +#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX +#undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP +#undef SDL_THREAD_SPROC +#undef SDL_THREAD_WIN32 + +/* Enable various timer systems */ +#undef SDL_TIMER_BEOS +#undef SDL_TIMER_DC +#undef SDL_TIMER_DUMMY +#undef SDL_TIMER_MACOS +#undef SDL_TIMER_MINT +#undef SDL_TIMER_OS2 +#undef SDL_TIMER_RISCOS +#undef SDL_TIMER_UNIX +#undef SDL_TIMER_WIN32 +#undef SDL_TIMER_WINCE + +/* Enable various video drivers */ +#undef SDL_VIDEO_DRIVER_AALIB +#undef SDL_VIDEO_DRIVER_BWINDOW +#undef SDL_VIDEO_DRIVER_CACA +#undef SDL_VIDEO_DRIVER_DC +#undef SDL_VIDEO_DRIVER_DDRAW +#undef SDL_VIDEO_DRIVER_DGA +#undef SDL_VIDEO_DRIVER_DIRECTFB +#undef SDL_VIDEO_DRIVER_DRAWSPROCKET +#undef SDL_VIDEO_DRIVER_DUMMY +#undef SDL_VIDEO_DRIVER_FBCON +#undef SDL_VIDEO_DRIVER_GAPI +#undef SDL_VIDEO_DRIVER_GEM +#undef SDL_VIDEO_DRIVER_GGI +#undef SDL_VIDEO_DRIVER_IPOD +#undef SDL_VIDEO_DRIVER_NANOX +#undef SDL_VIDEO_DRIVER_OS2FS +#undef SDL_VIDEO_DRIVER_PHOTON +#undef SDL_VIDEO_DRIVER_PICOGUI +#undef SDL_VIDEO_DRIVER_PS2GS +#undef SDL_VIDEO_DRIVER_PS3 +#undef SDL_VIDEO_DRIVER_QTOPIA +#undef SDL_VIDEO_DRIVER_QUARTZ +#undef SDL_VIDEO_DRIVER_RISCOS +#undef SDL_VIDEO_DRIVER_SVGALIB +#undef SDL_VIDEO_DRIVER_TOOLBOX +#undef SDL_VIDEO_DRIVER_VGL +#undef SDL_VIDEO_DRIVER_WINDIB +#undef SDL_VIDEO_DRIVER_WSCONS +#undef SDL_VIDEO_DRIVER_X11 +#undef SDL_VIDEO_DRIVER_X11_DGAMOUSE +#undef SDL_VIDEO_DRIVER_X11_DYNAMIC +#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT +#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR +#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER +#undef SDL_VIDEO_DRIVER_X11_VIDMODE +#undef SDL_VIDEO_DRIVER_X11_XINERAMA +#undef SDL_VIDEO_DRIVER_X11_XME +#undef SDL_VIDEO_DRIVER_X11_XRANDR +#undef SDL_VIDEO_DRIVER_X11_XV +#undef SDL_VIDEO_DRIVER_XBIOS + +/* Enable OpenGL support */ +#undef SDL_VIDEO_OPENGL +#undef SDL_VIDEO_OPENGL_GLX +#undef SDL_VIDEO_OPENGL_WGL +#undef SDL_VIDEO_OPENGL_OSMESA +#undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC + +/* Disable screensaver */ +#undef SDL_VIDEO_DISABLE_SCREENSAVER + +/* Enable assembly routines */ +#undef SDL_ASSEMBLY_ROUTINES +#undef SDL_HERMES_BLITTERS +#undef SDL_ALTIVEC_BLITTERS + +#endif /* _SDL_config_h */ diff --git a/libmednahawk/sdl/include/SDL_config_dreamcast.h b/libmednahawk/sdl/include/SDL_config_dreamcast.h new file mode 100644 index 0000000000..f3e9b476fd --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_dreamcast.h @@ -0,0 +1,106 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_dreamcast_h +#define _SDL_config_dreamcast_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +typedef unsigned long uintptr_t; +#define SDL_HAS_64BIT_TYPE 1 + +/* Useful headers */ +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRDUP 1 +#define HAVE_INDEX 1 +#define HAVE_RINDEX 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRICMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_DC 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#define SDL_CDROM_DC 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_DC 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DUMMY 1 + +/* Enable various threading systems */ +#define SDL_THREAD_DC 1 + +/* Enable various timer systems */ +#define SDL_TIMER_DC 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_DC 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 + +#endif /* _SDL_config_dreamcast_h */ diff --git a/libmednahawk/sdl/include/SDL_config_macos.h b/libmednahawk/sdl/include/SDL_config_macos.h new file mode 100644 index 0000000000..d9e7a3889e --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_macos.h @@ -0,0 +1,112 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_macos_h +#define _SDL_config_macos_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#include + +typedef SInt8 int8_t; +typedef UInt8 uint8_t; +typedef SInt16 int16_t; +typedef UInt16 uint16_t; +typedef SInt32 int32_t; +typedef UInt32 uint32_t; +typedef SInt64 int64_t; +typedef UInt64 uint64_t; +typedef unsigned long uintptr_t; + +#define SDL_HAS_64BIT_TYPE 1 + +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_SSCANF 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_SNDMGR 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#if TARGET_API_MAC_CARBON +#define SDL_CDROM_DUMMY 1 +#else +#define SDL_CDROM_MACOS 1 +#endif + +/* Enable various input drivers */ +#if TARGET_API_MAC_CARBON +#define SDL_JOYSTICK_DUMMY 1 +#else +#define SDL_JOYSTICK_MACOS 1 +#endif + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_MACOS 1 + +/* Enable various threading systems */ +#define SDL_THREADS_DISABLED 1 + +/* Enable various timer systems */ +#define SDL_TIMER_MACOS 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_DRAWSPROCKET 1 +#define SDL_VIDEO_DRIVER_TOOLBOX 1 + +/* Enable OpenGL support */ +#define SDL_VIDEO_OPENGL 1 + +#endif /* _SDL_config_macos_h */ diff --git a/libmednahawk/sdl/include/SDL_config_macosx.h b/libmednahawk/sdl/include/SDL_config_macosx.h new file mode 100644 index 0000000000..154c77fc90 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_macosx.h @@ -0,0 +1,150 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_macosx_h +#define _SDL_config_macosx_h + +#include "SDL_platform.h" + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#define SDL_HAS_64BIT_TYPE 1 + +/* Useful headers */ +/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */ +#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) ) +#define HAVE_ALLOCA_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#define SDL_CDROM_MACOSX 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_IOKIT 1 + +/* Enable various shared object loading systems */ +#ifdef __ppc__ +/* For Mac OS X 10.2 compatibility */ +#define SDL_LOADSO_DLCOMPAT 1 +#else +#define SDL_LOADSO_DLOPEN 1 +#endif + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +#if ((defined TARGET_API_MAC_CARBON) && (TARGET_API_MAC_CARBON)) +#define SDL_VIDEO_DRIVER_TOOLBOX 1 +#else +#define SDL_VIDEO_DRIVER_QUARTZ 1 +#endif +#define SDL_VIDEO_DRIVER_DGA 1 +#define SDL_VIDEO_DRIVER_X11 1 +#define SDL_VIDEO_DRIVER_X11_DGAMOUSE 1 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER "/usr/X11R6/lib/libXrender.1.dylib" +#define SDL_VIDEO_DRIVER_X11_VIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_XINERAMA 1 +#define SDL_VIDEO_DRIVER_X11_XME 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XV 1 + +/* Enable OpenGL support */ +#define SDL_VIDEO_OPENGL 1 +#define SDL_VIDEO_OPENGL_GLX 1 + +/* Disable screensaver */ +#define SDL_VIDEO_DISABLE_SCREENSAVER 1 + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* _SDL_config_macosx_h */ diff --git a/libmednahawk/sdl/include/SDL_config_minimal.h b/libmednahawk/sdl/include/SDL_config_minimal.h new file mode 100644 index 0000000000..fc4128bf4a --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_minimal.h @@ -0,0 +1,62 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_minimal_h +#define _SDL_config_minimal_h + +#include "SDL_platform.h" + +/* This is the minimal configuration that can be used to build SDL */ + +#include + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef unsigned int size_t; +typedef unsigned long uintptr_t; + +/* Enable the dummy audio driver (src/audio/dummy/\*.c) */ +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ +#define SDL_CDROM_DISABLED 1 + +/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ +#define SDL_JOYSTICK_DISABLED 1 + +/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 1 + +/* Enable the stub thread support (src/thread/generic/\*.c) */ +#define SDL_THREADS_DISABLED 1 + +/* Enable the stub timer support (src/timer/dummy/\*.c) */ +#define SDL_TIMERS_DISABLED 1 + +/* Enable the dummy video driver (src/video/dummy/\*.c) */ +#define SDL_VIDEO_DRIVER_DUMMY 1 + +#endif /* _SDL_config_minimal_h */ diff --git a/libmednahawk/sdl/include/SDL_config_nds.h b/libmednahawk/sdl/include/SDL_config_nds.h new file mode 100644 index 0000000000..792a2320e3 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_nds.h @@ -0,0 +1,115 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_nds_h +#define _SDL_config_nds_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +/* C datatypes */ +#define SDL_HAS_64BIT_TYPE 1 + +/* Endianness */ +#define SDL_BYTEORDER 1234 + +/* Useful headers */ +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_SETJMP 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_NDS 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ +#define SDL_CDROM_DISABLED 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_NDS 1 + +/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 1 + +/* Enable the stub thread support (src/thread/generic/\*.c) */ +#define SDL_THREADS_DISABLED 1 + +/* Enable various timer systems */ +#define SDL_TIMER_NDS 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_NDS 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 + +#endif /* _SDL_config_nds_h */ diff --git a/libmednahawk/sdl/include/SDL_config_os2.h b/libmednahawk/sdl/include/SDL_config_os2.h new file mode 100644 index 0000000000..045580292e --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_os2.h @@ -0,0 +1,141 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_os2_h +#define _SDL_config_os2_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef unsigned int size_t; +typedef unsigned long uintptr_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; + +#define SDL_HAS_64BIT_TYPE 1 + +/* Use Watcom's LIBC */ +#define HAVE_LIBC 1 + +/* Useful headers */ +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_INDEX 1 +#define HAVE_RINDEX 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__UITOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE__I64TOA 1 +#define HAVE__UI64TOA 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRICMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_SETJMP 1 +#define HAVE_CLOCK_GETTIME 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_DART 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various cdrom drivers */ +#define SDL_CDROM_OS2 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_OS2 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_OS2 1 + +/* Enable various threading systems */ +#define SDL_THREAD_OS2 1 + +/* Enable various timer systems */ +#define SDL_TIMER_OS2 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +#define SDL_VIDEO_DRIVER_OS2FS 1 + +/* Enable OpenGL support */ +/* Nothing here yet for OS/2... :( */ + +/* Enable assembly routines where available */ +#define SDL_ASSEMBLY_ROUTINES 1 + +#endif /* _SDL_config_os2_h */ diff --git a/libmednahawk/sdl/include/SDL_config_symbian.h b/libmednahawk/sdl/include/SDL_config_symbian.h new file mode 100644 index 0000000000..9e514ca947 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_config_symbian.h @@ -0,0 +1,146 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/* + +Symbian version Markus Mertama + +*/ + + +#ifndef _SDL_CONFIG_SYMBIAN_H +#define _SDL_CONFIG_SYMBIAN_H + +#include "SDL_platform.h" + +/* This is the minimal configuration that can be used to build SDL */ + + +#include +#include + + +#ifdef __GCCE__ +#define SYMBIAN32_GCCE +#endif + +#ifndef _SIZE_T_DEFINED +typedef unsigned int size_t; +#endif + +#ifndef _INTPTR_T_DECLARED +typedef unsigned int uintptr_t; +#endif + +#ifndef _INT8_T_DECLARED +typedef signed char int8_t; +#endif + +#ifndef _UINT8_T_DECLARED +typedef unsigned char uint8_t; +#endif + +#ifndef _INT16_T_DECLARED +typedef signed short int16_t; +#endif + +#ifndef _UINT16_T_DECLARED +typedef unsigned short uint16_t; +#endif + +#ifndef _INT32_T_DECLARED +typedef signed int int32_t; +#endif + +#ifndef _UINT32_T_DECLARED +typedef unsigned int uint32_t; +#endif + +#ifndef _INT64_T_DECLARED +typedef signed long long int64_t; +#endif + +#ifndef _UINT64_T_DECLARED +typedef unsigned long long uint64_t; +#endif + +#define SDL_AUDIO_DRIVER_EPOCAUDIO 1 + + +/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ +#define SDL_CDROM_DISABLED 1 + +/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ +#define SDL_JOYSTICK_DISABLED 1 + +/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 1 + +#define SDL_THREAD_SYMBIAN 1 + +#define SDL_VIDEO_DRIVER_EPOC 1 + +#define SDL_VIDEO_OPENGL 0 + +#define SDL_HAS_64BIT_TYPE 1 + +#define HAVE_LIBC 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 + +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +/*#define HAVE_ALLOCA 1*/ +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRUPR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +/*#define HAVE__STRICMP 1*/ +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 + + + +#endif /* _SDL_CONFIG_SYMBIAN_H */ diff --git a/libmednahawk/sdl/include/SDL_copying.h b/libmednahawk/sdl/include/SDL_copying.h new file mode 100644 index 0000000000..17d524834a --- /dev/null +++ b/libmednahawk/sdl/include/SDL_copying.h @@ -0,0 +1,22 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + diff --git a/libmednahawk/sdl/include/SDL_cpuinfo.h b/libmednahawk/sdl/include/SDL_cpuinfo.h new file mode 100644 index 0000000000..428b22deb5 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_cpuinfo.h @@ -0,0 +1,69 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_cpuinfo.h + * CPU feature detection for SDL + */ + +#ifndef _SDL_cpuinfo_h +#define _SDL_cpuinfo_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This function returns true if the CPU has the RDTSC instruction */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** This function returns true if the CPU has MMX features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** This function returns true if the CPU has MMX Ext. features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMXExt(void); + +/** This function returns true if the CPU has 3DNow features */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** This function returns true if the CPU has 3DNow! Ext. features */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNowExt(void); + +/** This function returns true if the CPU has SSE features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** This function returns true if the CPU has SSE2 features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** This function returns true if the CPU has AltiVec features */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_cpuinfo_h */ diff --git a/libmednahawk/sdl/include/SDL_endian.h b/libmednahawk/sdl/include/SDL_endian.h new file mode 100644 index 0000000000..cf5e83a77e --- /dev/null +++ b/libmednahawk/sdl/include/SDL_endian.h @@ -0,0 +1,209 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_endian.h + * Functions for reading and writing endian-specific values + */ + +#ifndef _SDL_endian_h +#define _SDL_endian_h + +#include "SDL_stdinc.h" + +/** @name SDL_ENDIANs + * The two types of endianness + */ +/*@{*/ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/*@}*/ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MISPEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* !SDL_BYTEORDER */ + + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name SDL_Swap Functions + * Use inline functions for compilers that support them, and static + * functions for those that do not. Because these functions become + * static for compilers that do not support inline functions, this + * header should only be included in files that actually use them. + */ +/*@{*/ +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0" : "=q" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0" : "=Q" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + Uint16 result; + + __asm__("rlwimi %0,%2,8,16,23" : "=&r" (result) : "0" (x >> 8), "r" (x)); + return result; +} +#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) +static __inline__ Uint16 SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0" : "=d" (x) : "0" (x) : "cc"); + return x; +} +#else +static __inline__ Uint16 SDL_Swap16(Uint16 x) { + return((x<<8)|(x>>8)); +} +#endif + +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0" : "=r" (x) : "0" (x)); + return x; +} +#elif defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23" : "=&r" (result) : "0" (x>>24), "r" (x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r" (result) : "0" (result), "r" (x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r" (result) : "0" (result), "r" (x)); + return result; +} +#elif defined(__GNUC__) && (defined(__M68000__) || defined(__M68020__)) +static __inline__ Uint32 SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0" : "=d" (x) : "0" (x) : "cc"); + return x; +} +#else +static __inline__ Uint32 SDL_Swap32(Uint32 x) { + return((x<<24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x>>24)); +} +#endif + +#ifdef SDL_HAS_64BIT_TYPE +#if defined(__GNUC__) && defined(__i386__) && \ + !(__GNUC__ == 2 && __GNUC_MINOR__ <= 95 /* broken gcc version */) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + union { + struct { Uint32 a,b; } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r" (v.s.a), "=r" (v.s.b) + : "0" (v.s.a), "1" (v.s.b)); + return v.u; +} +#elif defined(__GNUC__) && defined(__x86_64__) +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0" : "=r" (x) : "0" (x)); + return x; +} +#else +static __inline__ Uint64 SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return(x); +} +#endif +#else +/* This is mainly to keep compilers from complaining in SDL code. + * If there is no real 64-bit datatype, then compilers will complain about + * the fake 64-bit datatype that SDL provides when it compiles user code. + */ +#define SDL_Swap64(X) (X) +#endif /* SDL_HAS_64BIT_TYPE */ +/*@}*/ + +/** + * @name SDL_SwapLE and SDL_SwapBE Functions + * Byteswap item from the specified endianness to the native endianness + */ +/*@{*/ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#endif +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_endian_h */ diff --git a/libmednahawk/sdl/include/SDL_error.h b/libmednahawk/sdl/include/SDL_error.h new file mode 100644 index 0000000000..a8f9a14ff4 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_error.h @@ -0,0 +1,72 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_error.h + * Simple error message routines for SDL + */ + +#ifndef _SDL_error_h +#define _SDL_error_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name Public functions + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_SetError(const char *fmt, ...); +extern DECLSPEC char * SDLCALL SDL_GetError(void); +extern DECLSPEC void SDLCALL SDL_ClearError(void); +/*@}*/ + +/** + * @name Private functions + * @internal Private error message function - used internally + */ +/*@{*/ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +typedef enum { + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +extern DECLSPEC void SDLCALL SDL_Error(SDL_errorcode code); +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_error_h */ diff --git a/libmednahawk/sdl/include/SDL_events.h b/libmednahawk/sdl/include/SDL_events.h new file mode 100644 index 0000000000..caa6fecb6a --- /dev/null +++ b/libmednahawk/sdl/include/SDL_events.h @@ -0,0 +1,356 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file SDL_events.h + * Include file for SDL event handling + */ + +#ifndef _SDL_events_h +#define _SDL_events_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_active.h" +#include "SDL_keyboard.h" +#include "SDL_mouse.h" +#include "SDL_joystick.h" +#include "SDL_quit.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name General keyboard/mouse state definitions */ +/*@{*/ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 +/*@}*/ + +/** Event enumerations */ +typedef enum { + SDL_NOEVENT = 0, /**< Unused (do not remove) */ + SDL_ACTIVEEVENT, /**< Application loses/gains visibility */ + SDL_KEYDOWN, /**< Keys pressed */ + SDL_KEYUP, /**< Keys released */ + SDL_MOUSEMOTION, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_JOYAXISMOTION, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_QUIT, /**< User-requested quit */ + SDL_SYSWMEVENT, /**< System specific event */ + SDL_EVENT_RESERVEDA, /**< Reserved for future use.. */ + SDL_EVENT_RESERVEDB, /**< Reserved for future use.. */ + SDL_VIDEORESIZE, /**< User resized video mode */ + SDL_VIDEOEXPOSE, /**< Screen needs to be redrawn */ + SDL_EVENT_RESERVED2, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED3, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED4, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED5, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED6, /**< Reserved for future use.. */ + SDL_EVENT_RESERVED7, /**< Reserved for future use.. */ + /** Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */ + SDL_USEREVENT = 24, + /** This last event is only for bounding internal arrays + * It is the number of bits in the event mask datatype -- Uint32 + */ + SDL_NUMEVENTS = 32 +} SDL_EventType; + +/** @name Predefined event masks */ +/*@{*/ +#define SDL_EVENTMASK(X) (1<<(X)) +typedef enum { + SDL_ACTIVEEVENTMASK = SDL_EVENTMASK(SDL_ACTIVEEVENT), + SDL_KEYDOWNMASK = SDL_EVENTMASK(SDL_KEYDOWN), + SDL_KEYUPMASK = SDL_EVENTMASK(SDL_KEYUP), + SDL_KEYEVENTMASK = SDL_EVENTMASK(SDL_KEYDOWN)| + SDL_EVENTMASK(SDL_KEYUP), + SDL_MOUSEMOTIONMASK = SDL_EVENTMASK(SDL_MOUSEMOTION), + SDL_MOUSEBUTTONDOWNMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN), + SDL_MOUSEBUTTONUPMASK = SDL_EVENTMASK(SDL_MOUSEBUTTONUP), + SDL_MOUSEEVENTMASK = SDL_EVENTMASK(SDL_MOUSEMOTION)| + SDL_EVENTMASK(SDL_MOUSEBUTTONDOWN)| + SDL_EVENTMASK(SDL_MOUSEBUTTONUP), + SDL_JOYAXISMOTIONMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION), + SDL_JOYBALLMOTIONMASK = SDL_EVENTMASK(SDL_JOYBALLMOTION), + SDL_JOYHATMOTIONMASK = SDL_EVENTMASK(SDL_JOYHATMOTION), + SDL_JOYBUTTONDOWNMASK = SDL_EVENTMASK(SDL_JOYBUTTONDOWN), + SDL_JOYBUTTONUPMASK = SDL_EVENTMASK(SDL_JOYBUTTONUP), + SDL_JOYEVENTMASK = SDL_EVENTMASK(SDL_JOYAXISMOTION)| + SDL_EVENTMASK(SDL_JOYBALLMOTION)| + SDL_EVENTMASK(SDL_JOYHATMOTION)| + SDL_EVENTMASK(SDL_JOYBUTTONDOWN)| + SDL_EVENTMASK(SDL_JOYBUTTONUP), + SDL_VIDEORESIZEMASK = SDL_EVENTMASK(SDL_VIDEORESIZE), + SDL_VIDEOEXPOSEMASK = SDL_EVENTMASK(SDL_VIDEOEXPOSE), + SDL_QUITMASK = SDL_EVENTMASK(SDL_QUIT), + SDL_SYSWMEVENTMASK = SDL_EVENTMASK(SDL_SYSWMEVENT) +} SDL_EventMask ; +#define SDL_ALLEVENTS 0xFFFFFFFF +/*@}*/ + +/** Application visibility event structure */ +typedef struct SDL_ActiveEvent { + Uint8 type; /**< SDL_ACTIVEEVENT */ + Uint8 gain; /**< Whether given states were gained or lost (1/0) */ + Uint8 state; /**< A mask of the focus states */ +} SDL_ActiveEvent; + +/** Keyboard event structure */ +typedef struct SDL_KeyboardEvent { + Uint8 type; /**< SDL_KEYDOWN or SDL_KEYUP */ + Uint8 which; /**< The keyboard device index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + SDL_keysym keysym; +} SDL_KeyboardEvent; + +/** Mouse motion event structure */ +typedef struct SDL_MouseMotionEvent { + Uint8 type; /**< SDL_MOUSEMOTION */ + Uint8 which; /**< The mouse device index */ + Uint8 state; /**< The current button state */ + Uint16 x, y; /**< The X/Y coordinates of the mouse */ + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** Mouse button event structure */ +typedef struct SDL_MouseButtonEvent { + Uint8 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */ + Uint8 which; /**< The mouse device index */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint16 x, y; /**< The X/Y coordinates of the mouse at press time */ +} SDL_MouseButtonEvent; + +/** Joystick axis motion event structure */ +typedef struct SDL_JoyAxisEvent { + Uint8 type; /**< SDL_JOYAXISMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 axis; /**< The joystick axis index */ + Sint16 value; /**< The axis value (range: -32768 to 32767) */ +} SDL_JoyAxisEvent; + +/** Joystick trackball motion event structure */ +typedef struct SDL_JoyBallEvent { + Uint8 type; /**< SDL_JOYBALLMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 ball; /**< The joystick trackball index */ + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** Joystick hat position change event structure */ +typedef struct SDL_JoyHatEvent { + Uint8 type; /**< SDL_JOYHATMOTION */ + Uint8 which; /**< The joystick device index */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value: + * SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP + * SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT + * SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN + * Note that zero means the POV is centered. + */ +} SDL_JoyHatEvent; + +/** Joystick button event structure */ +typedef struct SDL_JoyButtonEvent { + Uint8 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */ + Uint8 which; /**< The joystick device index */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ +} SDL_JoyButtonEvent; + +/** The "window resized" event + * When you get this event, you are responsible for setting a new video + * mode with the new width and height. + */ +typedef struct SDL_ResizeEvent { + Uint8 type; /**< SDL_VIDEORESIZE */ + int w; /**< New width */ + int h; /**< New height */ +} SDL_ResizeEvent; + +/** The "screen redraw" event */ +typedef struct SDL_ExposeEvent { + Uint8 type; /**< SDL_VIDEOEXPOSE */ +} SDL_ExposeEvent; + +/** The "quit requested" event */ +typedef struct SDL_QuitEvent { + Uint8 type; /**< SDL_QUIT */ +} SDL_QuitEvent; + +/** A user-defined event type */ +typedef struct SDL_UserEvent { + Uint8 type; /**< SDL_USEREVENT through SDL_NUMEVENTS-1 */ + int code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + +/** If you want to use this event, you should include SDL_syswm.h */ +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; +typedef struct SDL_SysWMEvent { + Uint8 type; + SDL_SysWMmsg *msg; +} SDL_SysWMEvent; + +/** General event structure */ +typedef union SDL_Event { + Uint8 type; + SDL_ActiveEvent active; + SDL_KeyboardEvent key; + SDL_MouseMotionEvent motion; + SDL_MouseButtonEvent button; + SDL_JoyAxisEvent jaxis; + SDL_JoyBallEvent jball; + SDL_JoyHatEvent jhat; + SDL_JoyButtonEvent jbutton; + SDL_ResizeEvent resize; + SDL_ExposeEvent expose; + SDL_QuitEvent quit; + SDL_UserEvent user; + SDL_SysWMEvent syswm; +} SDL_Event; + + +/* Function prototypes */ + +/** Pumps the event loop, gathering events from the input devices. + * This function updates the event queue and internal input device state. + * This should only be run in the thread that sets the video mode. + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +typedef enum { + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Checks the event queue for messages and optionally returns them. + * + * If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to + * the back of the event queue. + * If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front + * of the event queue, matching 'mask', will be returned and will not + * be removed from the queue. + * If 'action' is SDL_GETEVENT, up to 'numevents' events at the front + * of the event queue, matching 'mask', will be returned and will be + * removed from the queue. + * + * @return + * This function returns the number of events actually stored, or -1 + * if there was an error. + * + * This function is thread-safe. + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event *events, int numevents, + SDL_eventaction action, Uint32 mask); + +/** Polls for currently pending events, and returns 1 if there are any pending + * events, or 0 if there are none available. If 'event' is not NULL, the next + * event is removed from the queue and stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event *event); + +/** Waits indefinitely for the next available event, returning 1, or 0 if there + * was an error while waiting for events. If 'event' is not NULL, the next + * event is removed from the queue and stored in that area. + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event *event); + +/** Add an event to the event queue. + * This function returns 0 on success, or -1 if the event queue was full + * or there was some other error. + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event *event); + +/** @name Event Filtering */ +/*@{*/ +typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); +/** + * This function sets up a filter to process all events before they + * change internal state and are posted to the internal event queue. + * + * The filter is protypted as: + * @code typedef int (SDLCALL *SDL_EventFilter)(const SDL_Event *event); @endcode + * + * If the filter returns 1, then the event will be added to the internal queue. + * If it returns 0, then the event will be dropped from the queue, but the + * internal state will still be updated. This allows selective filtering of + * dynamically arriving events. + * + * @warning Be very careful of what you do in the event filter function, as + * it may run in a different thread! + * + * There is one caveat when dealing with the SDL_QUITEVENT event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will + * be closed, otherwise the window will remain open if possible. + * If the quit event is generated by an interrupt signal, it will bypass the + * internal queue and be delivered to the application at the next event poll. + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter); + +/** + * Return the current event filter - can be used to "chain" filters. + * If there is no event filter set, this function returns NULL. + */ +extern DECLSPEC SDL_EventFilter SDLCALL SDL_GetEventFilter(void); +/*@}*/ + +/** @name Event State */ +/*@{*/ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 +/*@}*/ + +/** +* This function allows you to set the state of processing certain events. +* If 'state' is set to SDL_IGNORE, that event will be automatically dropped +* from the event queue and will not event be filtered. +* If 'state' is set to SDL_ENABLE, that event will be processed normally. +* If 'state' is set to SDL_QUERY, SDL_EventState() will return the +* current processing state of the specified event. +*/ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint8 type, int state); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_events_h */ diff --git a/libmednahawk/sdl/include/SDL_getenv.h b/libmednahawk/sdl/include/SDL_getenv.h new file mode 100644 index 0000000000..7dad3f5127 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_getenv.h @@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_getenv.h + * @deprecated Use SDL_stdinc.h instead + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/libmednahawk/sdl/include/SDL_joystick.h b/libmednahawk/sdl/include/SDL_joystick.h new file mode 100644 index 0000000000..93a9f650b5 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_joystick.h @@ -0,0 +1,187 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_joystick.h + * Include file for SDL joystick event handling + */ + +#ifndef _SDL_joystick_h +#define _SDL_joystick_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL_joystick.h + * @note In order to use these functions, SDL_Init() must have been called + * with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + */ + +/** The joystick structure used to identify an SDL joystick */ +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* Function prototypes */ +/** + * Count the number of joysticks attached to the system + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * If no name can be found, this function returns NULL. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickName(int device_index); + +/** + * Open a joystick for use. + * + * @param[in] device_index + * The index passed as an argument refers to + * the N'th joystick on the system. This index is the value which will + * identify this joystick in future joystick events. + * + * @return This function returns a joystick identifier, or NULL if an error occurred. + */ +extern DECLSPEC SDL_Joystick * SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Returns 1 if the joystick has been opened, or 0 if it has not. + */ +extern DECLSPEC int SDLCALL SDL_JoystickOpened(int device_index); + +/** + * Get the device index of an opened joystick. + */ +extern DECLSPEC int SDLCALL SDL_JoystickIndex(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick + * + * Joystick trackballs have only relative motion events associated + * with them and their state cannot be polled. + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick + * events are enabled. + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and check the state of the joystick when you want joystick + * information. + * + * @param[in] state The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE. + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +/** + * Get the current state of an axis control on a joystick + * + * @param[in] axis The axis indices start at index 0. + * + * @return The state is a value ranging from -32768 to 32767. + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis); + +/** + * @name Hat Positions + * The return value of SDL_JoystickGetHat() is one of the following positions: + */ +/*@{*/ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/*@}*/ + +/** + * Get the current state of a POV hat on a joystick + * + * @param[in] hat The hat indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, int hat); + +/** + * Get the ball axis change since the last poll + * + * @param[in] ball The ball indices start at index 0. + * + * @return This returns 0, or -1 if you passed it invalid parameters. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick + * + * @param[in] button The button indices start at index 0. + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, int button); + +/** + * Close a joystick previously opened with SDL_JoystickOpen() + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_joystick_h */ diff --git a/libmednahawk/sdl/include/SDL_keyboard.h b/libmednahawk/sdl/include/SDL_keyboard.h new file mode 100644 index 0000000000..e887de6d43 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_keyboard.h @@ -0,0 +1,135 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_keyboard.h + * Include file for SDL keyboard event handling + */ + +#ifndef _SDL_keyboard_h +#define _SDL_keyboard_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_keysym.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** Keysym structure + * + * - The scancode is hardware dependent, and should not be used by general + * applications. If no hardware scancode is available, it will be 0. + * + * - The 'unicode' translated character is only available when character + * translation is enabled by the SDL_EnableUNICODE() API. If non-zero, + * this is a UNICODE character corresponding to the keypress. If the + * high 9 bits of the character are 0, then this maps to the equivalent + * ASCII character: + * @code + * char ch; + * if ( (keysym.unicode & 0xFF80) == 0 ) { + * ch = keysym.unicode & 0x7F; + * } else { + * An international character.. + * } + * @endcode + */ +typedef struct SDL_keysym { + Uint8 scancode; /**< hardware specific scancode */ + SDLKey sym; /**< SDL virtual keysym */ + SDLMod mod; /**< current key modifiers */ + Uint16 unicode; /**< translated character */ +} SDL_keysym; + +/** This is the mask which refers to all hotkey bindings */ +#define SDL_ALL_HOTKEYS 0xFFFFFFFF + +/* Function prototypes */ +/** + * Enable/Disable UNICODE translation of keyboard input. + * + * This translation has some overhead, so translation defaults off. + * + * @param[in] enable + * If 'enable' is 1, translation is enabled. + * If 'enable' is 0, translation is disabled. + * If 'enable' is -1, the translation state is not changed. + * + * @return It returns the previous state of keyboard translation. + */ +extern DECLSPEC int SDLCALL SDL_EnableUNICODE(int enable); + +#define SDL_DEFAULT_REPEAT_DELAY 500 +#define SDL_DEFAULT_REPEAT_INTERVAL 30 +/** + * Enable/Disable keyboard repeat. Keyboard repeat defaults to off. + * + * @param[in] delay + * 'delay' is the initial delay in ms between the time when a key is + * pressed, and keyboard repeat begins. + * + * @param[in] interval + * 'interval' is the time in ms between keyboard repeat events. + * + * If 'delay' is set to 0, keyboard repeat is disabled. + */ +extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval); +extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval); + +/** + * Get a snapshot of the current state of the keyboard. + * Returns an array of keystates, indexed by the SDLK_* syms. + * Usage: + * @code + * Uint8 *keystate = SDL_GetKeyState(NULL); + * if ( keystate[SDLK_RETURN] ) //... \ is pressed. + * @endcode + */ +extern DECLSPEC Uint8 * SDLCALL SDL_GetKeyState(int *numkeys); + +/** + * Get the current key modifier state + */ +extern DECLSPEC SDLMod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state. + * This does not change the keyboard state, only the key modifier flags. + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDLMod modstate); + +/** + * Get the name of an SDL virtual keysym + */ +extern DECLSPEC char * SDLCALL SDL_GetKeyName(SDLKey key); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_keyboard_h */ diff --git a/libmednahawk/sdl/include/SDL_keysym.h b/libmednahawk/sdl/include/SDL_keysym.h new file mode 100644 index 0000000000..d07978765f --- /dev/null +++ b/libmednahawk/sdl/include/SDL_keysym.h @@ -0,0 +1,326 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_keysym_h +#define _SDL_keysym_h + +/** What we really want is a mapping of every raw key on the keyboard. + * To support international keyboards, we use the range 0xA1 - 0xFF + * as international virtual keycodes. We'll follow in the footsteps of X11... + * @brief The names of the keys + */ +typedef enum { + /** @name ASCII mapped keysyms + * The keyboard syms have been cleverly chosen to map to ASCII + */ + /*@{*/ + SDLK_UNKNOWN = 0, + SDLK_FIRST = 0, + SDLK_BACKSPACE = 8, + SDLK_TAB = 9, + SDLK_CLEAR = 12, + SDLK_RETURN = 13, + SDLK_PAUSE = 19, + SDLK_ESCAPE = 27, + SDLK_SPACE = 32, + SDLK_EXCLAIM = 33, + SDLK_QUOTEDBL = 34, + SDLK_HASH = 35, + SDLK_DOLLAR = 36, + SDLK_AMPERSAND = 38, + SDLK_QUOTE = 39, + SDLK_LEFTPAREN = 40, + SDLK_RIGHTPAREN = 41, + SDLK_ASTERISK = 42, + SDLK_PLUS = 43, + SDLK_COMMA = 44, + SDLK_MINUS = 45, + SDLK_PERIOD = 46, + SDLK_SLASH = 47, + SDLK_0 = 48, + SDLK_1 = 49, + SDLK_2 = 50, + SDLK_3 = 51, + SDLK_4 = 52, + SDLK_5 = 53, + SDLK_6 = 54, + SDLK_7 = 55, + SDLK_8 = 56, + SDLK_9 = 57, + SDLK_COLON = 58, + SDLK_SEMICOLON = 59, + SDLK_LESS = 60, + SDLK_EQUALS = 61, + SDLK_GREATER = 62, + SDLK_QUESTION = 63, + SDLK_AT = 64, + /* + Skip uppercase letters + */ + SDLK_LEFTBRACKET = 91, + SDLK_BACKSLASH = 92, + SDLK_RIGHTBRACKET = 93, + SDLK_CARET = 94, + SDLK_UNDERSCORE = 95, + SDLK_BACKQUOTE = 96, + SDLK_a = 97, + SDLK_b = 98, + SDLK_c = 99, + SDLK_d = 100, + SDLK_e = 101, + SDLK_f = 102, + SDLK_g = 103, + SDLK_h = 104, + SDLK_i = 105, + SDLK_j = 106, + SDLK_k = 107, + SDLK_l = 108, + SDLK_m = 109, + SDLK_n = 110, + SDLK_o = 111, + SDLK_p = 112, + SDLK_q = 113, + SDLK_r = 114, + SDLK_s = 115, + SDLK_t = 116, + SDLK_u = 117, + SDLK_v = 118, + SDLK_w = 119, + SDLK_x = 120, + SDLK_y = 121, + SDLK_z = 122, + SDLK_DELETE = 127, + /* End of ASCII mapped keysyms */ + /*@}*/ + + /** @name International keyboard syms */ + /*@{*/ + SDLK_WORLD_0 = 160, /* 0xA0 */ + SDLK_WORLD_1 = 161, + SDLK_WORLD_2 = 162, + SDLK_WORLD_3 = 163, + SDLK_WORLD_4 = 164, + SDLK_WORLD_5 = 165, + SDLK_WORLD_6 = 166, + SDLK_WORLD_7 = 167, + SDLK_WORLD_8 = 168, + SDLK_WORLD_9 = 169, + SDLK_WORLD_10 = 170, + SDLK_WORLD_11 = 171, + SDLK_WORLD_12 = 172, + SDLK_WORLD_13 = 173, + SDLK_WORLD_14 = 174, + SDLK_WORLD_15 = 175, + SDLK_WORLD_16 = 176, + SDLK_WORLD_17 = 177, + SDLK_WORLD_18 = 178, + SDLK_WORLD_19 = 179, + SDLK_WORLD_20 = 180, + SDLK_WORLD_21 = 181, + SDLK_WORLD_22 = 182, + SDLK_WORLD_23 = 183, + SDLK_WORLD_24 = 184, + SDLK_WORLD_25 = 185, + SDLK_WORLD_26 = 186, + SDLK_WORLD_27 = 187, + SDLK_WORLD_28 = 188, + SDLK_WORLD_29 = 189, + SDLK_WORLD_30 = 190, + SDLK_WORLD_31 = 191, + SDLK_WORLD_32 = 192, + SDLK_WORLD_33 = 193, + SDLK_WORLD_34 = 194, + SDLK_WORLD_35 = 195, + SDLK_WORLD_36 = 196, + SDLK_WORLD_37 = 197, + SDLK_WORLD_38 = 198, + SDLK_WORLD_39 = 199, + SDLK_WORLD_40 = 200, + SDLK_WORLD_41 = 201, + SDLK_WORLD_42 = 202, + SDLK_WORLD_43 = 203, + SDLK_WORLD_44 = 204, + SDLK_WORLD_45 = 205, + SDLK_WORLD_46 = 206, + SDLK_WORLD_47 = 207, + SDLK_WORLD_48 = 208, + SDLK_WORLD_49 = 209, + SDLK_WORLD_50 = 210, + SDLK_WORLD_51 = 211, + SDLK_WORLD_52 = 212, + SDLK_WORLD_53 = 213, + SDLK_WORLD_54 = 214, + SDLK_WORLD_55 = 215, + SDLK_WORLD_56 = 216, + SDLK_WORLD_57 = 217, + SDLK_WORLD_58 = 218, + SDLK_WORLD_59 = 219, + SDLK_WORLD_60 = 220, + SDLK_WORLD_61 = 221, + SDLK_WORLD_62 = 222, + SDLK_WORLD_63 = 223, + SDLK_WORLD_64 = 224, + SDLK_WORLD_65 = 225, + SDLK_WORLD_66 = 226, + SDLK_WORLD_67 = 227, + SDLK_WORLD_68 = 228, + SDLK_WORLD_69 = 229, + SDLK_WORLD_70 = 230, + SDLK_WORLD_71 = 231, + SDLK_WORLD_72 = 232, + SDLK_WORLD_73 = 233, + SDLK_WORLD_74 = 234, + SDLK_WORLD_75 = 235, + SDLK_WORLD_76 = 236, + SDLK_WORLD_77 = 237, + SDLK_WORLD_78 = 238, + SDLK_WORLD_79 = 239, + SDLK_WORLD_80 = 240, + SDLK_WORLD_81 = 241, + SDLK_WORLD_82 = 242, + SDLK_WORLD_83 = 243, + SDLK_WORLD_84 = 244, + SDLK_WORLD_85 = 245, + SDLK_WORLD_86 = 246, + SDLK_WORLD_87 = 247, + SDLK_WORLD_88 = 248, + SDLK_WORLD_89 = 249, + SDLK_WORLD_90 = 250, + SDLK_WORLD_91 = 251, + SDLK_WORLD_92 = 252, + SDLK_WORLD_93 = 253, + SDLK_WORLD_94 = 254, + SDLK_WORLD_95 = 255, /* 0xFF */ + /*@}*/ + + /** @name Numeric keypad */ + /*@{*/ + SDLK_KP0 = 256, + SDLK_KP1 = 257, + SDLK_KP2 = 258, + SDLK_KP3 = 259, + SDLK_KP4 = 260, + SDLK_KP5 = 261, + SDLK_KP6 = 262, + SDLK_KP7 = 263, + SDLK_KP8 = 264, + SDLK_KP9 = 265, + SDLK_KP_PERIOD = 266, + SDLK_KP_DIVIDE = 267, + SDLK_KP_MULTIPLY = 268, + SDLK_KP_MINUS = 269, + SDLK_KP_PLUS = 270, + SDLK_KP_ENTER = 271, + SDLK_KP_EQUALS = 272, + /*@}*/ + + /** @name Arrows + Home/End pad */ + /*@{*/ + SDLK_UP = 273, + SDLK_DOWN = 274, + SDLK_RIGHT = 275, + SDLK_LEFT = 276, + SDLK_INSERT = 277, + SDLK_HOME = 278, + SDLK_END = 279, + SDLK_PAGEUP = 280, + SDLK_PAGEDOWN = 281, + /*@}*/ + + /** @name Function keys */ + /*@{*/ + SDLK_F1 = 282, + SDLK_F2 = 283, + SDLK_F3 = 284, + SDLK_F4 = 285, + SDLK_F5 = 286, + SDLK_F6 = 287, + SDLK_F7 = 288, + SDLK_F8 = 289, + SDLK_F9 = 290, + SDLK_F10 = 291, + SDLK_F11 = 292, + SDLK_F12 = 293, + SDLK_F13 = 294, + SDLK_F14 = 295, + SDLK_F15 = 296, + /*@}*/ + + /** @name Key state modifier keys */ + /*@{*/ + SDLK_NUMLOCK = 300, + SDLK_CAPSLOCK = 301, + SDLK_SCROLLOCK = 302, + SDLK_RSHIFT = 303, + SDLK_LSHIFT = 304, + SDLK_RCTRL = 305, + SDLK_LCTRL = 306, + SDLK_RALT = 307, + SDLK_LALT = 308, + SDLK_RMETA = 309, + SDLK_LMETA = 310, + SDLK_LSUPER = 311, /**< Left "Windows" key */ + SDLK_RSUPER = 312, /**< Right "Windows" key */ + SDLK_MODE = 313, /**< "Alt Gr" key */ + SDLK_COMPOSE = 314, /**< Multi-key compose key */ + /*@}*/ + + /** @name Miscellaneous function keys */ + /*@{*/ + SDLK_HELP = 315, + SDLK_PRINT = 316, + SDLK_SYSREQ = 317, + SDLK_BREAK = 318, + SDLK_MENU = 319, + SDLK_POWER = 320, /**< Power Macintosh power key */ + SDLK_EURO = 321, /**< Some european keyboards */ + SDLK_UNDO = 322, /**< Atari keyboard has Undo */ + /*@}*/ + + /* Add any other keys here */ + + SDLK_LAST +} SDLKey; + +/** Enumeration of valid key mods (possibly OR'd together) */ +typedef enum { + KMOD_NONE = 0x0000, + KMOD_LSHIFT= 0x0001, + KMOD_RSHIFT= 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LMETA = 0x0400, + KMOD_RMETA = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_RESERVED = 0x8000 +} SDLMod; + +#define KMOD_CTRL (KMOD_LCTRL|KMOD_RCTRL) +#define KMOD_SHIFT (KMOD_LSHIFT|KMOD_RSHIFT) +#define KMOD_ALT (KMOD_LALT|KMOD_RALT) +#define KMOD_META (KMOD_LMETA|KMOD_RMETA) + +#endif /* _SDL_keysym_h */ diff --git a/libmednahawk/sdl/include/SDL_loadso.h b/libmednahawk/sdl/include/SDL_loadso.h new file mode 100644 index 0000000000..76fc723310 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_loadso.h @@ -0,0 +1,78 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_loadso.h + * System dependent library loading routines + */ + +/** @file SDL_loadso.h + * Some things to keep in mind: + * - These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * - Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * - Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + + +#ifndef _SDL_loadso_h +#define _SDL_loadso_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This function dynamically loads a shared object and returns a pointer + * to the object handle (or NULL if there was an error). + * The 'sofile' parameter is a system dependent name of the object file. + */ +extern DECLSPEC void * SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Given an object handle, this function looks up the address of the + * named function in the shared object and returns it. This address + * is no longer valid after calling SDL_UnloadObject(). + */ +extern DECLSPEC void * SDLCALL SDL_LoadFunction(void *handle, const char *name); + +/** Unload a shared object from memory */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_loadso_h */ diff --git a/libmednahawk/sdl/include/SDL_main.h b/libmednahawk/sdl/include/SDL_main.h new file mode 100644 index 0000000000..9867d09ba5 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_main.h @@ -0,0 +1,106 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_main_h +#define _SDL_main_h + +#include "SDL_stdinc.h" + +/** @file SDL_main.h + * Redefine main() on Win32 and MacOS so that it is called by winmain.c + */ + +#if defined(__WIN32__) || \ + (defined(__MWERKS__) && !defined(__BEOS__)) || \ + defined(__MACOS__) || defined(__MACOSX__) || \ + defined(__SYMBIAN32__) || defined(QWS) + +#ifdef __cplusplus +#define C_LINKAGE "C" +#else +#define C_LINKAGE +#endif /* __cplusplus */ + +/** The application's main() function must be called with C linkage, + * and should be declared like this: + * @code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * @endcode + */ +#define main SDL_main + +/** The prototype for the application's main() function */ +extern C_LINKAGE int SDL_main(int argc, char *argv[]); + + +/** @name From the SDL library code -- needed for registering the app on Win32 */ +/*@{*/ +#ifdef __WIN32__ + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** This should be called from your WinMain() function, if any */ +extern DECLSPEC void SDLCALL SDL_SetModuleHandle(void *hInst); +/** This can also be called, but is no longer necessary */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(char *name, Uint32 style, void *hInst); +/** This can also be called, but is no longer necessary (SDL_Quit calls it) */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); +#ifdef __cplusplus +} +#endif +#include "close_code.h" +#endif +/*@}*/ + +/** @name From the SDL library code -- needed for registering QuickDraw on MacOS */ +/*@{*/ +#if defined(__MACOS__) + +#include "begin_code.h" +#ifdef __cplusplus +extern "C" { +#endif + +/** Forward declaration so we don't need to include QuickDraw.h */ +struct QDGlobals; + +/** This should be called from your main() function, if any */ +extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); + +#ifdef __cplusplus +} +#endif +#include "close_code.h" +#endif +/*@}*/ + +#endif /* Need to redefine main()? */ + +#endif /* _SDL_main_h */ diff --git a/libmednahawk/sdl/include/SDL_mouse.h b/libmednahawk/sdl/include/SDL_mouse.h new file mode 100644 index 0000000000..5d16b45383 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_mouse.h @@ -0,0 +1,143 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_mouse.h + * Include file for SDL mouse event handling + */ + +#ifndef _SDL_mouse_h +#define _SDL_mouse_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct WMcursor WMcursor; /**< Implementation dependent */ +typedef struct SDL_Cursor { + SDL_Rect area; /**< The area of the mouse cursor */ + Sint16 hot_x, hot_y; /**< The "tip" of the cursor */ + Uint8 *data; /**< B/W cursor data */ + Uint8 *mask; /**< B/W cursor mask */ + Uint8 *save[2]; /**< Place to save cursor area */ + WMcursor *wm_cursor; /**< Window-manager cursor */ +} SDL_Cursor; + +/* Function prototypes */ +/** + * Retrieve the current state of the mouse. + * The current button state is returned as a button bitmask, which can + * be tested using the SDL_BUTTON(X) macros, and x and y are set to the + * current mouse cursor position. You can pass NULL for either x or y. + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Retrieve the current state of the mouse. + * The current button state is returned as a button bitmask, which can + * be tested using the SDL_BUTTON(X) macros, and x and y are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState(). + */ +extern DECLSPEC Uint8 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Set the position of the mouse cursor (generates a mouse motion event) + */ +extern DECLSPEC void SDLCALL SDL_WarpMouse(Uint16 x, Uint16 y); + +/** + * Create a cursor using the specified data and mask (in MSB format). + * The cursor width must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * data mask resulting pixel on screen + * 0 1 White + * 1 1 Black + * 0 0 Transparent + * 1 0 Inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + */ +extern DECLSPEC SDL_Cursor * SDLCALL SDL_CreateCursor + (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y); + +/** + * Set the currently active cursor to the specified one. + * If the cursor is currently visible, the change will be immediately + * represented on the display. + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor *cursor); + +/** + * Returns the currently active cursor. + */ +extern DECLSPEC SDL_Cursor * SDLCALL SDL_GetCursor(void); + +/** + * Deallocates a cursor created with SDL_CreateCursor(). + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor *cursor); + +/** + * Toggle whether or not the cursor is shown on the screen. + * The cursor start off displayed, but can be turned off. + * SDL_ShowCursor() returns 1 if the cursor was being displayed + * before the call, or 0 if it was not. You can query the current + * state by passing a 'toggle' value of -1. + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/*@{*/ +/** Used as a mask when testing buttons in buttonstate + * Button 1: Left mouse button + * Button 2: Middle mouse button + * Button 3: Right mouse button + * Button 4: Mouse wheel up (may also be a real button) + * Button 5: Mouse wheel down (may also be a real button) + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_WHEELUP 4 +#define SDL_BUTTON_WHEELDOWN 5 +#define SDL_BUTTON_X1 6 +#define SDL_BUTTON_X2 7 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_mouse_h */ diff --git a/libmednahawk/sdl/include/SDL_mutex.h b/libmednahawk/sdl/include/SDL_mutex.h new file mode 100644 index 0000000000..e6f4f9fcb6 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_mutex.h @@ -0,0 +1,177 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_mutex_h +#define _SDL_mutex_h + +/** @file SDL_mutex.h + * Functions to provide thread synchronization primitives + * + * @note These are independent of the other SDL routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** This is the timeout value which corresponds to never time out */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Mutex functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** The SDL mutex structure, defined in SDL_mutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** Create a mutex, initialized unlocked */ +extern DECLSPEC SDL_mutex * SDLCALL SDL_CreateMutex(void); + +#define SDL_LockMutex(m) SDL_mutexP(m) +/** Lock the mutex + * @return 0, or -1 on error + */ +extern DECLSPEC int SDLCALL SDL_mutexP(SDL_mutex *mutex); + +#define SDL_UnlockMutex(m) SDL_mutexV(m) +/** Unlock the mutex + * @return 0, or -1 on error + * + * It is an error to unlock a mutex that has not been locked by + * the current thread, and doing so results in undefined behavior. + */ +extern DECLSPEC int SDLCALL SDL_mutexV(SDL_mutex *mutex); + +/** Destroy a mutex */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex *mutex); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Semaphore functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** The SDL semaphore structure, defined in SDL_sem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** Create a semaphore, initialized with value, returns NULL on failure. */ +extern DECLSPEC SDL_sem * SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** Destroy a semaphore */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem *sem); + +/** + * This function suspends the calling thread until the semaphore pointed + * to by sem has a positive count. It then atomically decreases the semaphore + * count. + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem *sem); + +/** Non-blocking variant of SDL_SemWait(). + * @return 0 if the wait succeeds, + * SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem *sem); + +/** Variant of SDL_SemWait() with a timeout in milliseconds, returns 0 if + * the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait does not succeed in + * the allotted time, and -1 on error. + * + * On some platforms this function is implemented by looping with a delay + * of 1 ms, and so should be avoided if possible. + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 ms); + +/** Atomically increases the semaphore's count (not blocking). + * @return 0, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem *sem); + +/** Returns the current count of the semaphore */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem *sem); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Condition_variable_functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/*@{*/ +/** The SDL condition variable structure, defined in SDL_cond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; +/*@}*/ + +/** Create a condition variable */ +extern DECLSPEC SDL_cond * SDLCALL SDL_CreateCond(void); + +/** Destroy a condition variable */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond *cond); + +/** Restart one of the threads that are waiting on the condition variable, + * @return 0 or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond *cond); + +/** Restart all threads that are waiting on the condition variable, + * @return 0 or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond *cond); + +/** Wait on the condition variable, unlocking the provided mutex. + * The mutex must be locked before entering this function! + * The mutex is re-locked once the condition variable is signaled. + * @return 0 when it is signaled, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond *cond, SDL_mutex *mut); + +/** Waits for at most 'ms' milliseconds, and returns 0 if the condition + * variable is signaled, SDL_MUTEX_TIMEDOUT if the condition is not + * signaled in the allotted time, and -1 on error. + * On some platforms this function is implemented by looping with a delay + * of 1 ms, and so should be avoided if possible. + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond *cond, SDL_mutex *mutex, Uint32 ms); + +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_mutex_h */ + diff --git a/libmednahawk/sdl/include/SDL_name.h b/libmednahawk/sdl/include/SDL_name.h new file mode 100644 index 0000000000..84d5e39a09 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_name.h @@ -0,0 +1,11 @@ + +#ifndef _SDLname_h_ +#define _SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* _SDLname_h_ */ diff --git a/libmednahawk/sdl/include/SDL_platform.h b/libmednahawk/sdl/include/SDL_platform.h new file mode 100644 index 0000000000..38f7c32aa0 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_platform.h @@ -0,0 +1,110 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_platform.h + * Try to get a standard set of platform defines + */ + +#ifndef _SDL_platform_h +#define _SDL_platform_h + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__BEOS__) +#undef __BEOS__ +#define __BEOS__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if defined(linux) || defined(__linux) || defined(__linux__) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(__APPLE__) +#undef __MACOSX__ +#define __MACOSX__ 1 +#elif defined(macintosh) +#undef __MACOS__ +#define __MACOS__ 1 +#endif +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif +#if defined(WIN32) || defined(_WIN32) +#undef __WIN32__ +#define __WIN32__ 1 +#endif + +#endif /* _SDL_platform_h */ diff --git a/libmednahawk/sdl/include/SDL_quit.h b/libmednahawk/sdl/include/SDL_quit.h new file mode 100644 index 0000000000..f8bf26693d --- /dev/null +++ b/libmednahawk/sdl/include/SDL_quit.h @@ -0,0 +1,55 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_quit.h + * Include file for SDL quit event handling + */ + +#ifndef _SDL_quit_h +#define _SDL_quit_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/** @file SDL_quit.h + * An SDL_QUITEVENT is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate SDL_QUITEVENT events as well. There is no way + * to determine the cause of an SDL_QUITEVENT, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + */ + +/** @file SDL_quit.h + * There are no functions directly affecting the quit event + */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUITMASK)) + +#endif /* _SDL_quit_h */ diff --git a/libmednahawk/sdl/include/SDL_rwops.h b/libmednahawk/sdl/include/SDL_rwops.h new file mode 100644 index 0000000000..c4b24ed109 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_rwops.h @@ -0,0 +1,155 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_rwops.h + * This file provides a general interface for SDL to read and write + * data sources. It can easily be extended to files, memory, etc. + */ + +#ifndef _SDL_rwops_h +#define _SDL_rwops_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the read/write operation structure -- very basic */ + +typedef struct SDL_RWops { + /** Seek to 'offset' relative to whence, one of stdio's whence values: + * SEEK_SET, SEEK_CUR, SEEK_END + * Returns the final offset in the data source. + */ + int (SDLCALL *seek)(struct SDL_RWops *context, int offset, int whence); + + /** Read up to 'maxnum' objects each of size 'size' from the data + * source to the area pointed at by 'ptr'. + * Returns the number of objects read, or -1 if the read failed. + */ + int (SDLCALL *read)(struct SDL_RWops *context, void *ptr, int size, int maxnum); + + /** Write exactly 'num' objects each of size 'objsize' from the area + * pointed at by 'ptr' to data source. + * Returns 'num', or -1 if the write failed. + */ + int (SDLCALL *write)(struct SDL_RWops *context, const void *ptr, int size, int num); + + /** Close and free an allocated SDL_FSops structure */ + int (SDLCALL *close)(struct SDL_RWops *context); + + Uint32 type; + union { +#if defined(__WIN32__) && !defined(__SYMBIAN32__) + struct { + int append; + void *h; + struct { + void *data; + int size; + int left; + } buffer; + } win32io; +#endif +#ifdef HAVE_STDIO_H + struct { + int autoclose; + FILE *fp; + } stdio; +#endif + struct { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct { + void *data1; + } unknown; + } hidden; + +} SDL_RWops; + + +/** @name Functions to create SDL_RWops structures from various data sources */ +/*@{*/ + +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode); + +#ifdef HAVE_STDIO_H +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFP(FILE *fp, int autoclose); +#endif + +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromMem(void *mem, int size); +extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromConstMem(const void *mem, int size); + +extern DECLSPEC SDL_RWops * SDLCALL SDL_AllocRW(void); +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops *area); + +/*@}*/ + +/** @name Seek Reference Points */ +/*@{*/ +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ +/*@}*/ + +/** @name Macros to easily read and write from an SDL_RWops structure */ +/*@{*/ +#define SDL_RWseek(ctx, offset, whence) (ctx)->seek(ctx, offset, whence) +#define SDL_RWtell(ctx) (ctx)->seek(ctx, 0, RW_SEEK_CUR) +#define SDL_RWread(ctx, ptr, size, n) (ctx)->read(ctx, ptr, size, n) +#define SDL_RWwrite(ctx, ptr, size, n) (ctx)->write(ctx, ptr, size, n) +#define SDL_RWclose(ctx) (ctx)->close(ctx) +/*@}*/ + +/** @name Read an item of the specified endianness and return in native format */ +/*@{*/ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops *src); +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops *src); +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops *src); +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops *src); +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops *src); +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops *src); +/*@}*/ + +/** @name Write an item of native format to the specified endianness */ +/*@{*/ +extern DECLSPEC int SDLCALL SDL_WriteLE16(SDL_RWops *dst, Uint16 value); +extern DECLSPEC int SDLCALL SDL_WriteBE16(SDL_RWops *dst, Uint16 value); +extern DECLSPEC int SDLCALL SDL_WriteLE32(SDL_RWops *dst, Uint32 value); +extern DECLSPEC int SDLCALL SDL_WriteBE32(SDL_RWops *dst, Uint32 value); +extern DECLSPEC int SDLCALL SDL_WriteLE64(SDL_RWops *dst, Uint64 value); +extern DECLSPEC int SDLCALL SDL_WriteBE64(SDL_RWops *dst, Uint64 value); +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_rwops_h */ diff --git a/libmednahawk/sdl/include/SDL_stdinc.h b/libmednahawk/sdl/include/SDL_stdinc.h new file mode 100644 index 0000000000..24b31d6b60 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_stdinc.h @@ -0,0 +1,620 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_stdinc.h + * This is a general header that includes C language support + */ + +#ifndef _SDL_stdinc_h +#define _SDL_stdinc_h + +#include "SDL_config.h" + + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +# include +#endif + +/** The number of elements in an array */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/* Use proper C++ casts when compiled as C++ to be compatible with the option + -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above. */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#endif + +/** @name Basic data types */ +/*@{*/ +typedef enum { + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; + +typedef int8_t Sint8; +typedef uint8_t Uint8; +typedef int16_t Sint16; +typedef uint16_t Uint16; +typedef int32_t Sint32; +typedef uint32_t Uint32; + +#ifdef SDL_HAS_64BIT_TYPE +typedef int64_t Sint64; +#ifndef SYMBIAN32_GCCE +typedef uint64_t Uint64; +#endif +#else +/* This is really just a hack to prevent the compiler from complaining */ +typedef struct { + Uint32 hi; + Uint32 lo; +} Uint64, Sint64; +#endif + +/*@}*/ + +/** @name Make sure the types really have the right sizes */ +/*@{*/ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_dummy_ ## name[(x) * 2 - 1] + +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +/*@}*/ + +/** @name Enum Size Check + * Check to make sure enums are the size of ints, for structure packing. + * For both Watcom C/C++ and Borland C/C++ the compiler option that makes + * enums having the size of an int must be enabled. + * This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). + */ +/* Enable enums always int in CodeWarrior (for MPW use "-enum int") */ +#ifdef __MWERKS__ +#pragma enumsalwaysint on +#endif + +typedef enum { + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +#ifndef __NDS__ +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +/*@}*/ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_MALLOC +#define SDL_malloc malloc +#else +extern DECLSPEC void * SDLCALL SDL_malloc(size_t size); +#endif + +#ifdef HAVE_CALLOC +#define SDL_calloc calloc +#else +extern DECLSPEC void * SDLCALL SDL_calloc(size_t nmemb, size_t size); +#endif + +#ifdef HAVE_REALLOC +#define SDL_realloc realloc +#else +extern DECLSPEC void * SDLCALL SDL_realloc(void *mem, size_t size); +#endif + +#ifdef HAVE_FREE +#define SDL_free free +#else +extern DECLSPEC void SDLCALL SDL_free(void *mem); +#endif + +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) + #pragma alloca +# elif defined(__MRC__) + void *alloca (unsigned); +# else + char *alloca (); +# endif +#endif +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +#ifdef HAVE_GETENV +#define SDL_getenv getenv +#else +extern DECLSPEC char * SDLCALL SDL_getenv(const char *name); +#endif + +#ifdef HAVE_PUTENV +#define SDL_putenv putenv +#else +extern DECLSPEC int SDLCALL SDL_putenv(const char *variable); +#endif + +#ifdef HAVE_QSORT +#define SDL_qsort qsort +#else +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, + int (*compare)(const void *, const void *)); +#endif + +#ifdef HAVE_ABS +#define SDL_abs abs +#else +#define SDL_abs(X) ((X) < 0 ? -(X) : (X)) +#endif + +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) + +#ifdef HAVE_CTYPE_H +#define SDL_isdigit(X) isdigit(X) +#define SDL_isspace(X) isspace(X) +#define SDL_toupper(X) toupper(X) +#define SDL_tolower(X) tolower(X) +#else +#define SDL_isdigit(X) (((X) >= '0') && ((X) <= '9')) +#define SDL_isspace(X) (((X) == ' ') || ((X) == '\t') || ((X) == '\r') || ((X) == '\n')) +#define SDL_toupper(X) (((X) >= 'a') && ((X) <= 'z') ? ('A'+((X)-'a')) : (X)) +#define SDL_tolower(X) (((X) >= 'A') && ((X) <= 'Z') ? ('a'+((X)-'A')) : (X)) +#endif + +#ifdef HAVE_MEMSET +#define SDL_memset memset +#else +extern DECLSPEC void * SDLCALL SDL_memset(void *dst, int c, size_t len); +#endif + +#if defined(__GNUC__) && defined(i386) +#define SDL_memset4(dst, val, len) \ +do { \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; stosl\n\t" \ + : "=&D" (u0), "=&a" (u1), "=&c" (u2) \ + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, len)) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memset4 +#define SDL_memset4(dst, val, len) \ +do { \ + unsigned _count = (len); \ + unsigned _n = (_count + 3) / 4; \ + Uint32 *_p = SDL_static_cast(Uint32 *, dst); \ + Uint32 _val = (val); \ + if (len == 0) break; \ + switch (_count % 4) { \ + case 0: do { *_p++ = _val; \ + case 3: *_p++ = _val; \ + case 2: *_p++ = _val; \ + case 1: *_p++ = _val; \ + } while ( --_n ); \ + } \ +} while(0) +#endif + +/* We can count on memcpy existing on Mac OS X and being well-tuned. */ +#if defined(__MACH__) && defined(__APPLE__) +#define SDL_memcpy(dst, src, len) memcpy(dst, src, len) +#elif defined(__GNUC__) && defined(i386) +#define SDL_memcpy(dst, src, len) \ +do { \ + int u0, u1, u2; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; movsl\n\t" \ + "testb $2,%b4\n\t" \ + "je 1f\n\t" \ + "movsw\n" \ + "1:\ttestb $1,%b4\n\t" \ + "je 2f\n\t" \ + "movsb\n" \ + "2:" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" (SDL_static_cast(unsigned, len)/4), "q" (len), "1" (dst),"2" (src) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memcpy +#ifdef HAVE_MEMCPY +#define SDL_memcpy memcpy +#elif defined(HAVE_BCOPY) +#define SDL_memcpy(d, s, n) bcopy((s), (d), (n)) +#else +extern DECLSPEC void * SDLCALL SDL_memcpy(void *dst, const void *src, size_t len); +#endif +#endif + +/* We can count on memcpy existing on Mac OS X and being well-tuned. */ +#if defined(__MACH__) && defined(__APPLE__) +#define SDL_memcpy4(dst, src, len) memcpy(dst, src, (len)*4) +#elif defined(__GNUC__) && defined(i386) +#define SDL_memcpy4(dst, src, len) \ +do { \ + int ecx, edi, esi; \ + __asm__ __volatile__ ( \ + "cld\n\t" \ + "rep ; movsl" \ + : "=&c" (ecx), "=&D" (edi), "=&S" (esi) \ + : "0" (SDL_static_cast(unsigned, len)), "1" (dst), "2" (src) \ + : "memory" ); \ +} while(0) +#endif +#ifndef SDL_memcpy4 +#define SDL_memcpy4(dst, src, len) SDL_memcpy(dst, src, (len) << 2) +#endif + +#if defined(__GNUC__) && defined(i386) +#define SDL_revcpy(dst, src, len) \ +do { \ + int u0, u1, u2; \ + char *dstp = SDL_static_cast(char *, dst); \ + char *srcp = SDL_static_cast(char *, src); \ + int n = (len); \ + if ( n >= 4 ) { \ + __asm__ __volatile__ ( \ + "std\n\t" \ + "rep ; movsl\n\t" \ + "cld\n\t" \ + : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ + : "0" (n >> 2), \ + "1" (dstp+(n-4)), "2" (srcp+(n-4)) \ + : "memory" ); \ + } \ + switch (n & 3) { \ + case 3: dstp[2] = srcp[2]; \ + case 2: dstp[1] = srcp[1]; \ + case 1: dstp[0] = srcp[0]; \ + break; \ + default: \ + break; \ + } \ +} while(0) +#endif +#ifndef SDL_revcpy +extern DECLSPEC void * SDLCALL SDL_revcpy(void *dst, const void *src, size_t len); +#endif + +#ifdef HAVE_MEMMOVE +#define SDL_memmove memmove +#elif defined(HAVE_BCOPY) +#define SDL_memmove(d, s, n) bcopy((s), (d), (n)) +#else +#define SDL_memmove(dst, src, len) \ +do { \ + if ( dst < src ) { \ + SDL_memcpy(dst, src, len); \ + } else { \ + SDL_revcpy(dst, src, len); \ + } \ +} while(0) +#endif + +#ifdef HAVE_MEMCMP +#define SDL_memcmp memcmp +#else +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); +#endif + +#ifdef HAVE_STRLEN +#define SDL_strlen strlen +#else +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *string); +#endif + +#ifdef HAVE_STRLCPY +#define SDL_strlcpy strlcpy +#else +extern DECLSPEC size_t SDLCALL SDL_strlcpy(char *dst, const char *src, size_t maxlen); +#endif + +#ifdef HAVE_STRLCAT +#define SDL_strlcat strlcat +#else +extern DECLSPEC size_t SDLCALL SDL_strlcat(char *dst, const char *src, size_t maxlen); +#endif + +#ifdef HAVE_STRDUP +#define SDL_strdup strdup +#else +extern DECLSPEC char * SDLCALL SDL_strdup(const char *string); +#endif + +#ifdef HAVE__STRREV +#define SDL_strrev _strrev +#else +extern DECLSPEC char * SDLCALL SDL_strrev(char *string); +#endif + +#ifdef HAVE__STRUPR +#define SDL_strupr _strupr +#else +extern DECLSPEC char * SDLCALL SDL_strupr(char *string); +#endif + +#ifdef HAVE__STRLWR +#define SDL_strlwr _strlwr +#else +extern DECLSPEC char * SDLCALL SDL_strlwr(char *string); +#endif + +#ifdef HAVE_STRCHR +#define SDL_strchr strchr +#elif defined(HAVE_INDEX) +#define SDL_strchr index +#else +extern DECLSPEC char * SDLCALL SDL_strchr(const char *string, int c); +#endif + +#ifdef HAVE_STRRCHR +#define SDL_strrchr strrchr +#elif defined(HAVE_RINDEX) +#define SDL_strrchr rindex +#else +extern DECLSPEC char * SDLCALL SDL_strrchr(const char *string, int c); +#endif + +#ifdef HAVE_STRSTR +#define SDL_strstr strstr +#else +extern DECLSPEC char * SDLCALL SDL_strstr(const char *haystack, const char *needle); +#endif + +#ifdef HAVE_ITOA +#define SDL_itoa itoa +#else +#define SDL_itoa(value, string, radix) SDL_ltoa((long)value, string, radix) +#endif + +#ifdef HAVE__LTOA +#define SDL_ltoa _ltoa +#else +extern DECLSPEC char * SDLCALL SDL_ltoa(long value, char *string, int radix); +#endif + +#ifdef HAVE__UITOA +#define SDL_uitoa _uitoa +#else +#define SDL_uitoa(value, string, radix) SDL_ultoa((long)value, string, radix) +#endif + +#ifdef HAVE__ULTOA +#define SDL_ultoa _ultoa +#else +extern DECLSPEC char * SDLCALL SDL_ultoa(unsigned long value, char *string, int radix); +#endif + +#ifdef HAVE_STRTOL +#define SDL_strtol strtol +#else +extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, int base); +#endif + +#ifdef HAVE_STRTOUL +#define SDL_strtoul strtoul +#else +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *string, char **endp, int base); +#endif + +#ifdef SDL_HAS_64BIT_TYPE + +#ifdef HAVE__I64TOA +#define SDL_lltoa _i64toa +#else +extern DECLSPEC char* SDLCALL SDL_lltoa(Sint64 value, char *string, int radix); +#endif + +#ifdef HAVE__UI64TOA +#define SDL_ulltoa _ui64toa +#else +extern DECLSPEC char* SDLCALL SDL_ulltoa(Uint64 value, char *string, int radix); +#endif + +#ifdef HAVE_STRTOLL +#define SDL_strtoll strtoll +#else +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int base); +#endif + +#ifdef HAVE_STRTOULL +#define SDL_strtoull strtoull +#else +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *string, char **endp, int base); +#endif + +#endif /* SDL_HAS_64BIT_TYPE */ + +#ifdef HAVE_STRTOD +#define SDL_strtod strtod +#else +extern DECLSPEC double SDLCALL SDL_strtod(const char *string, char **endp); +#endif + +#ifdef HAVE_ATOI +#define SDL_atoi atoi +#else +#define SDL_atoi(X) SDL_strtol(X, NULL, 0) +#endif + +#ifdef HAVE_ATOF +#define SDL_atof atof +#else +#define SDL_atof(X) SDL_strtod(X, NULL) +#endif + +#ifdef HAVE_STRCMP +#define SDL_strcmp strcmp +#else +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +#endif + +#ifdef HAVE_STRNCMP +#define SDL_strncmp strncmp +#else +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +#endif + +#ifdef HAVE_STRCASECMP +#define SDL_strcasecmp strcasecmp +#elif defined(HAVE__STRICMP) +#define SDL_strcasecmp _stricmp +#else +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +#endif + +#ifdef HAVE_STRNCASECMP +#define SDL_strncasecmp strncasecmp +#elif defined(HAVE__STRNICMP) +#define SDL_strncasecmp _strnicmp +#else +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t maxlen); +#endif + +#ifdef HAVE_SSCANF +#define SDL_sscanf sscanf +#else +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...); +#endif + +#ifdef HAVE_SNPRINTF +#define SDL_snprintf snprintf +#else +extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...); +#endif + +#ifdef HAVE_VSNPRINTF +#define SDL_vsnprintf vsnprintf +#else +extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap); +#endif + +/** @name SDL_ICONV Error Codes + * The SDL implementation of iconv() returns these error codes + */ +/*@{*/ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 +/*@}*/ + +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +#define SDL_iconv_t iconv_t +#define SDL_iconv_open iconv_open +#define SDL_iconv_close iconv_close +#else +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +#endif +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); +/** This function converts a string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + */ +extern DECLSPEC char * SDLCALL SDL_iconv_string(const char *tocode, const char *fromcode, const char *inbuf, size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_stdinc_h */ diff --git a/libmednahawk/sdl/include/SDL_syswm.h b/libmednahawk/sdl/include/SDL_syswm.h new file mode 100644 index 0000000000..e2447fd402 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_syswm.h @@ -0,0 +1,225 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_syswm.h + * Include file for SDL custom system window manager hooks + */ + +#ifndef _SDL_syswm_h +#define _SDL_syswm_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_version.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @file SDL_syswm.h + * Your application has access to a special type of event 'SDL_SYSWMEVENT', + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState() + */ +#ifdef SDL_PROTOTYPES_ONLY +struct SDL_SysWMinfo; +typedef struct SDL_SysWMinfo SDL_SysWMinfo; +#else + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +/** These are the various supported subsystems under UNIX */ +typedef enum { + SDL_SYSWM_X11 +} SDL_SYSWM_TYPE; + +/** The UNIX custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union { + XEvent xevent; + } event; +}; + +/** The UNIX custom window manager information structure. + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +typedef struct SDL_SysWMinfo { + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union { + struct { + Display *display; /**< The X11 display */ + Window window; /**< The X11 display window */ + /** These locking functions should be called around + * any X11 functions using the display variable, + * but not the gfxdisplay variable. + * They lock the event thread, so should not be + * called around event functions or from event filters. + */ + /*@{*/ + void (*lock_func)(void); + void (*unlock_func)(void); + /*@}*/ + + /** @name Introduced in SDL 1.0.2 */ + /*@{*/ + Window fswindow; /**< The X11 fullscreen window */ + Window wmwindow; /**< The X11 managed input window */ + /*@}*/ + + /** @name Introduced in SDL 1.2.12 */ + /*@{*/ + Display *gfxdisplay; /**< The X11 display to which rendering is done */ + /*@}*/ + } x11; + } info; +} SDL_SysWMinfo; + +#elif defined(SDL_VIDEO_DRIVER_NANOX) +#include + +/** The generic custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The windows custom window manager information structure */ +typedef struct SDL_SysWMinfo { + SDL_version version ; + GR_WINDOW_ID window ; /* The display window */ +} SDL_SysWMinfo; + +#elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI) +#define WIN32_LEAN_AND_MEAN +#include + +/** The windows custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ +}; + +/** The windows custom window manager information structure */ +typedef struct SDL_SysWMinfo { + SDL_version version; + HWND window; /**< The Win32 display window */ + HGLRC hglrc; /**< The OpenGL context, if any */ +} SDL_SysWMinfo; + +#elif defined(SDL_VIDEO_DRIVER_RISCOS) + +/** RISC OS custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int eventCode; /**< The window for the message */ + int pollBlock[64]; +}; + +/** The RISC OS custom window manager information structure */ +typedef struct SDL_SysWMinfo { + SDL_version version; + int wimpVersion; /**< Wimp version running under */ + int taskHandle; /**< The RISC OS task handle */ + int window; /**< The RISC OS display window */ +} SDL_SysWMinfo; + +#elif defined(SDL_VIDEO_DRIVER_PHOTON) +#include +#include + +/** The QNX custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The QNX custom window manager information structure */ +typedef struct SDL_SysWMinfo { + SDL_version version; + int data; +} SDL_SysWMinfo; + +#else + +/** The generic custom event structure */ +struct SDL_SysWMmsg { + SDL_version version; + int data; +}; + +/** The generic custom window manager information structure */ +typedef struct SDL_SysWMinfo { + SDL_version version; + int data; +} SDL_SysWMinfo; + +#endif /* video driver type */ + +#endif /* SDL_PROTOTYPES_ONLY */ + +/* Function prototypes */ +/** + * This function gives you custom hooks into the window manager information. + * It fills the structure pointed to by 'info' with custom information and + * returns 1 if the function is implemented. If it's not implemented, or + * the version member of the 'info' structure is invalid, it returns 0. + * + * You typically use this function like this: + * @code + * SDL_SysWMInfo info; + * SDL_VERSION(&info.version); + * if ( SDL_GetWMInfo(&info) ) { ... } + * @endcode + */ +extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_syswm_h */ diff --git a/libmednahawk/sdl/include/SDL_thread.h b/libmednahawk/sdl/include/SDL_thread.h new file mode 100644 index 0000000000..67f87733df --- /dev/null +++ b/libmednahawk/sdl/include/SDL_thread.h @@ -0,0 +1,120 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_thread_h +#define _SDL_thread_h + +/** @file SDL_thread.h + * Header for the SDL thread management routines + * + * @note These are independent of the other SDL routines. + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +/* Thread synchronization primitives */ +#include "SDL_mutex.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/** Create a thread */ +#if ((defined(__WIN32__) && !defined(HAVE_LIBC)) || defined(__OS2__)) && !defined(__SYMBIAN32__) +/** + * We compile SDL into a DLL on OS/2. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL.DLL will + * be initialized for those threads, and not the RTL of the calling application! + * To solve this, we make a little hack here. + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL.DLL which uses this API, + * then the RTL of SDL.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD +#ifndef _WIN32_WCE +#include /* This has _beginthread() and _endthread() defined! */ +#endif + +#ifdef __OS2__ +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void *arg); +typedef void (*pfnSDL_CurrentEndThread)(void); +#elif __GNUC__ +typedef unsigned long (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, + unsigned (__stdcall *func)(void *), void *arg, + unsigned, unsigned *threadID); +typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); +#else +typedef uintptr_t (__cdecl *pfnSDL_CurrentBeginThread) (void *, unsigned, + unsigned (__stdcall *func)(void *), void *arg, + unsigned, unsigned *threadID); +typedef void (__cdecl *pfnSDL_CurrentEndThread)(unsigned code); +#endif + +extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread); + +#ifdef __OS2__ +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthread, _endthread) +#elif defined(_WIN32_WCE) +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, NULL, NULL) +#else +#define SDL_CreateThread(fn, data) SDL_CreateThread(fn, data, _beginthreadex, _endthreadex) +#endif +#else +extern DECLSPEC SDL_Thread * SDLCALL SDL_CreateThread(int (SDLCALL *fn)(void *), void *data); +#endif + +/** Get the 32-bit thread identifier for the current thread */ +extern DECLSPEC Uint32 SDLCALL SDL_ThreadID(void); + +/** Get the 32-bit thread identifier for the specified thread, + * equivalent to SDL_ThreadID() if the specified thread is NULL. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetThreadID(SDL_Thread *thread); + +/** Wait for a thread to finish. + * The return code for the thread function is placed in the area + * pointed to by 'status', if 'status' is not NULL. + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread *thread, int *status); + +/** Forcefully kill a thread without worrying about its state */ +extern DECLSPEC void SDLCALL SDL_KillThread(SDL_Thread *thread); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_thread_h */ diff --git a/libmednahawk/sdl/include/SDL_timer.h b/libmednahawk/sdl/include/SDL_timer.h new file mode 100644 index 0000000000..e724418556 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_timer.h @@ -0,0 +1,125 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_timer_h +#define _SDL_timer_h + +/** @file SDL_timer.h + * Header for the SDL time management routines + */ + +#include "SDL_stdinc.h" +#include "SDL_error.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the OS scheduler timeslice, in milliseconds */ +#define SDL_TIMESLICE 10 + +/** This is the maximum resolution of the SDL timer on all platforms */ +#define TIMER_RESOLUTION 10 /**< Experimentally determined */ + +/** + * Get the number of milliseconds since the SDL library initialization. + * Note that this value wraps if the program runs for more than ~49 days. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** Wait a specified number of milliseconds before returning */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** Function prototype for the timer callback function */ +typedef Uint32 (SDLCALL *SDL_TimerCallback)(Uint32 interval); + +/** + * Set a callback to run after the specified number of milliseconds has + * elapsed. The callback function is passed the current timer interval + * and returns the next timer interval. If the returned value is the + * same as the one passed in, the periodic alarm continues, otherwise a + * new alarm is scheduled. If the callback returns 0, the periodic alarm + * is cancelled. + * + * To cancel a currently running timer, call SDL_SetTimer(0, NULL); + * + * The timer callback function may run in a different thread than your + * main code, and so shouldn't call any functions from within itself. + * + * The maximum resolution of this timer is 10 ms, which means that if + * you request a 16 ms timer, your callback will run approximately 20 ms + * later on an unloaded system. If you wanted to set a flag signaling + * a frame update at 30 frames per second (every 33 ms), you might set a + * timer for 30 ms: + * @code SDL_SetTimer((33/10)*10, flag_update); @endcode + * + * If you use this function, you need to pass SDL_INIT_TIMER to SDL_Init(). + * + * Under UNIX, you should not use raise or use SIGALRM and this function + * in the same program, as it is implemented using setitimer(). You also + * should not use this function in multi-threaded applications as signals + * to multi-threaded apps have undefined behavior in some implementations. + * + * This function returns 0 if successful, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback); + +/** @name New timer API + * New timer API, supports multiple timers + * Written by Stephane Peter + */ +/*@{*/ + +/** + * Function prototype for the new timer callback function. + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL *SDL_NewTimerCallback)(Uint32 interval, void *param); + +/** Definition of the timer ID type */ +typedef struct _SDL_TimerID *SDL_TimerID; + +/** Add a new timer to the pool of timers already running. + * Returns a timer ID, or NULL when an error occurs. + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param); + +/** + * Remove one of the multiple timers knowing its ID. + * Returns a boolean value indicating success. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID t); + +/*@}*/ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_timer_h */ diff --git a/libmednahawk/sdl/include/SDL_types.h b/libmednahawk/sdl/include/SDL_types.h new file mode 100644 index 0000000000..beed9103c7 --- /dev/null +++ b/libmednahawk/sdl/include/SDL_types.h @@ -0,0 +1,28 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_types.h + * @deprecated Use SDL_stdinc.h instead. + */ + +/* DEPRECATED */ +#include "SDL_stdinc.h" diff --git a/libmednahawk/sdl/include/SDL_version.h b/libmednahawk/sdl/include/SDL_version.h new file mode 100644 index 0000000000..ed311d05fa --- /dev/null +++ b/libmednahawk/sdl/include/SDL_version.h @@ -0,0 +1,91 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_version.h + * This header defines the current SDL version + */ + +#ifndef _SDL_version_h +#define _SDL_version_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name Version Number + * Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL + */ +/*@{*/ +#define SDL_MAJOR_VERSION 1 +#define SDL_MINOR_VERSION 2 +#define SDL_PATCHLEVEL 14 +/*@}*/ + +typedef struct SDL_version { + Uint8 major; + Uint8 minor; + Uint8 patch; +} SDL_version; + +/** + * This macro can be used to fill a version structure with the compile-time + * version of the SDL library. + */ +#define SDL_VERSION(X) \ +{ \ + (X)->major = SDL_MAJOR_VERSION; \ + (X)->minor = SDL_MINOR_VERSION; \ + (X)->patch = SDL_PATCHLEVEL; \ +} + +/** This macro turns the version numbers into a numeric value: + * (1,2,3) -> (1203) + * This assumes that there will never be more than 100 patchlevels + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** This is the version number macro for the current SDL version */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) + +/** This macro will evaluate to true if compiled with SDL at least X.Y.Z */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +/** This function gets the version of the dynamically linked SDL library. + * it should NOT be used to fill a version structure, instead you should + * use the SDL_Version() macro. + */ +extern DECLSPEC const SDL_version * SDLCALL SDL_Linked_Version(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_version_h */ diff --git a/libmednahawk/sdl/include/SDL_video.h b/libmednahawk/sdl/include/SDL_video.h new file mode 100644 index 0000000000..bbda571daa --- /dev/null +++ b/libmednahawk/sdl/include/SDL_video.h @@ -0,0 +1,951 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** @file SDL_video.h + * Header file for access to the SDL raw framebuffer window + */ + +#ifndef _SDL_video_h +#define _SDL_video_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_rwops.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** @name Transparency definitions + * These define alpha as the opacity of a surface + */ +/*@{*/ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/*@}*/ + +/** @name Useful data types */ +/*@{*/ +typedef struct SDL_Rect { + Sint16 x, y; + Uint16 w, h; +} SDL_Rect; + +typedef struct SDL_Color { + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 unused; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette { + int ncolors; + SDL_Color *colors; +} SDL_Palette; +/*@}*/ + +/** Everything in the pixel format structure is read-only */ +typedef struct SDL_PixelFormat { + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + + /** RGB color key information */ + Uint32 colorkey; + /** Alpha value information (per-surface alpha) */ + Uint8 alpha; +} SDL_PixelFormat; + +/** This structure should be treated as read-only, except for 'pixels', + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface { + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + Uint16 pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + int offset; /**< Private */ + + /** Hardware-specific surface info */ + struct private_hwdata *hwdata; + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + Uint32 unused1; /**< for binary compatibility */ + + /** Allow recursive locks */ + Uint32 locked; /**< Private */ + + /** info for fast blit mapping to other surfaces */ + struct SDL_BlitMap *map; /**< Private */ + + /** format version, bumped at every change to invalidate blit maps */ + unsigned int format_version; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** @name SDL_Surface Flags + * These are the currently supported flags for the SDL_surface + */ +/*@{*/ + +/** Available for SDL_CreateRGBSurface() or SDL_SetVideoMode() */ +/*@{*/ +#define SDL_SWSURFACE 0x00000000 /**< Surface is in system memory */ +#define SDL_HWSURFACE 0x00000001 /**< Surface is in video memory */ +#define SDL_ASYNCBLIT 0x00000004 /**< Use asynchronous blits if possible */ +/*@}*/ + +/** Available for SDL_SetVideoMode() */ +/*@{*/ +#define SDL_ANYFORMAT 0x10000000 /**< Allow any video depth/pixel-format */ +#define SDL_HWPALETTE 0x20000000 /**< Surface has exclusive palette */ +#define SDL_DOUBLEBUF 0x40000000 /**< Set up double-buffered video mode */ +#define SDL_FULLSCREEN 0x80000000 /**< Surface is a full screen display */ +#define SDL_OPENGL 0x00000002 /**< Create an OpenGL rendering context */ +#define SDL_OPENGLBLIT 0x0000000A /**< Create an OpenGL rendering context and use it for blitting */ +#define SDL_RESIZABLE 0x00000010 /**< This video mode may be resized */ +#define SDL_NOFRAME 0x00000020 /**< No window caption or edge frame */ +/*@}*/ + +/** Used internally (read-only) */ +/*@{*/ +#define SDL_HWACCEL 0x00000100 /**< Blit uses hardware acceleration */ +#define SDL_SRCCOLORKEY 0x00001000 /**< Blit uses a source color key */ +#define SDL_RLEACCELOK 0x00002000 /**< Private flag */ +#define SDL_RLEACCEL 0x00004000 /**< Surface is RLE encoded */ +#define SDL_SRCALPHA 0x00010000 /**< Blit uses source alpha blending */ +#define SDL_PREALLOC 0x01000000 /**< Surface uses preallocated memory */ +/*@}*/ + +/*@}*/ + +/** Evaluates to true if the surface needs to be locked before access */ +#define SDL_MUSTLOCK(surface) \ + (surface->offset || \ + ((surface->flags & (SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_RLEACCEL)) != 0)) + +/** typedef for private surface blitting functions */ +typedef int (*SDL_blit)(struct SDL_Surface *src, SDL_Rect *srcrect, + struct SDL_Surface *dst, SDL_Rect *dstrect); + + +/** Useful for determining the video hardware capabilities */ +typedef struct SDL_VideoInfo { + Uint32 hw_available :1; /**< Flag: Can you create hardware surfaces? */ + Uint32 wm_available :1; /**< Flag: Can you talk to a window manager? */ + Uint32 UnusedBits1 :6; + Uint32 UnusedBits2 :1; + Uint32 blit_hw :1; /**< Flag: Accelerated blits HW --> HW */ + Uint32 blit_hw_CC :1; /**< Flag: Accelerated blits with Colorkey */ + Uint32 blit_hw_A :1; /**< Flag: Accelerated blits with Alpha */ + Uint32 blit_sw :1; /**< Flag: Accelerated blits SW --> HW */ + Uint32 blit_sw_CC :1; /**< Flag: Accelerated blits with Colorkey */ + Uint32 blit_sw_A :1; /**< Flag: Accelerated blits with Alpha */ + Uint32 blit_fill :1; /**< Flag: Accelerated color fill */ + Uint32 UnusedBits3 :16; + Uint32 video_mem; /**< The total amount of video memory (in K) */ + SDL_PixelFormat *vfmt; /**< Value: The format of the video surface */ + int current_w; /**< Value: The current video mode width */ + int current_h; /**< Value: The current video mode height */ +} SDL_VideoInfo; + + +/** @name Overlay Formats + * The most common video overlay formats. + * For an explanation of these pixel formats, see: + * http://www.webartz.com/fourcc/indexyuv.htm + * + * For information on the relationship between color spaces, see: + * http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html + */ +/*@{*/ +#define SDL_YV12_OVERLAY 0x32315659 /**< Planar mode: Y + V + U (3 planes) */ +#define SDL_IYUV_OVERLAY 0x56555949 /**< Planar mode: Y + U + V (3 planes) */ +#define SDL_YUY2_OVERLAY 0x32595559 /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ +#define SDL_UYVY_OVERLAY 0x59565955 /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ +#define SDL_YVYU_OVERLAY 0x55595659 /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ +/*@}*/ + +/** The YUV hardware video overlay */ +typedef struct SDL_Overlay { + Uint32 format; /**< Read-only */ + int w, h; /**< Read-only */ + int planes; /**< Read-only */ + Uint16 *pitches; /**< Read-only */ + Uint8 **pixels; /**< Read-write */ + + /** @name Hardware-specific surface info */ + /*@{*/ + struct private_yuvhwfuncs *hwfuncs; + struct private_yuvhwdata *hwdata; + /*@{*/ + + /** @name Special flags */ + /*@{*/ + Uint32 hw_overlay :1; /**< Flag: This overlay hardware accelerated? */ + Uint32 UnusedBits :31; + /*@}*/ +} SDL_Overlay; + + +/** Public enumeration for setting the OpenGL window attributes. */ +typedef enum { + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_SWAP_CONTROL +} SDL_GLattr; + +/** @name flags for SDL_SetPalette() */ +/*@{*/ +#define SDL_LOGPAL 0x01 +#define SDL_PHYSPAL 0x02 +/*@}*/ + +/* Function prototypes */ + +/** + * @name Video Init and Quit + * These functions are used internally, and should not be used unless you + * have a specific need to specify the video driver you want to use. + * You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/*@{*/ +/** + * Initializes the video subsystem. Sets up a connection + * to the window manager, etc, and determines the current video mode and + * pixel format, but does not initialize a window or graphics mode. + * Note that event handling is activated by this routine. + * + * If you use both sound and video in your application, you need to call + * SDL_Init() before opening the sound device, otherwise under Win32 DirectX, + * you won't be able to set full-screen display modes. + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name, Uint32 flags); +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); +/*@}*/ + +/** + * This function fills the given character buffer with the name of the + * video driver, and returns a pointer to it if the video driver has + * been initialized. It returns NULL if no driver has been initialized. + */ +extern DECLSPEC char * SDLCALL SDL_VideoDriverName(char *namebuf, int maxlen); + +/** + * This function returns a pointer to the current display surface. + * If SDL is doing format conversion on the display surface, this + * function returns the publicly visible surface, not the real video + * surface. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetVideoSurface(void); + +/** + * This function returns a read-only pointer to information about the + * video hardware. If this is called before SDL_SetVideoMode(), the 'vfmt' + * member of the returned structure will contain the pixel format of the + * "best" video mode. + */ +extern DECLSPEC const SDL_VideoInfo * SDLCALL SDL_GetVideoInfo(void); + +/** + * Check to see if a particular video mode is supported. + * It returns 0 if the requested mode is not supported under any bit depth, + * or returns the bits-per-pixel of the closest available mode with the + * given width and height. If this bits-per-pixel is different from the + * one used when setting the video mode, SDL_SetVideoMode() will succeed, + * but will emulate the requested bits-per-pixel with a shadow surface. + * + * The arguments to SDL_VideoModeOK() are the same ones you would pass to + * SDL_SetVideoMode() + */ +extern DECLSPEC int SDLCALL SDL_VideoModeOK(int width, int height, int bpp, Uint32 flags); + +/** + * Return a pointer to an array of available screen dimensions for the + * given format and video flags, sorted largest to smallest. Returns + * NULL if there are no dimensions available for a particular format, + * or (SDL_Rect **)-1 if any dimension is okay for the given format. + * + * If 'format' is NULL, the mode list will be for the format given + * by SDL_GetVideoInfo()->vfmt + */ +extern DECLSPEC SDL_Rect ** SDLCALL SDL_ListModes(SDL_PixelFormat *format, Uint32 flags); + +/** + * Set up a video mode with the specified width, height and bits-per-pixel. + * + * If 'bpp' is 0, it is treated as the current display bits per pixel. + * + * If SDL_ANYFORMAT is set in 'flags', the SDL library will try to set the + * requested bits-per-pixel, but will return whatever video pixel format is + * available. The default is to emulate the requested pixel format if it + * is not natively available. + * + * If SDL_HWSURFACE is set in 'flags', the video surface will be placed in + * video memory, if possible, and you may have to call SDL_LockSurface() + * in order to access the raw framebuffer. Otherwise, the video surface + * will be created in system memory. + * + * If SDL_ASYNCBLIT is set in 'flags', SDL will try to perform rectangle + * updates asynchronously, but you must always lock before accessing pixels. + * SDL will wait for updates to complete before returning from the lock. + * + * If SDL_HWPALETTE is set in 'flags', the SDL library will guarantee + * that the colors set by SDL_SetColors() will be the colors you get. + * Otherwise, in 8-bit mode, SDL_SetColors() may not be able to set all + * of the colors exactly the way they are requested, and you should look + * at the video surface structure to determine the actual palette. + * If SDL cannot guarantee that the colors you request can be set, + * i.e. if the colormap is shared, then the video surface may be created + * under emulation in system memory, overriding the SDL_HWSURFACE flag. + * + * If SDL_FULLSCREEN is set in 'flags', the SDL library will try to set + * a fullscreen video mode. The default is to create a windowed mode + * if the current graphics system has a window manager. + * If the SDL library is able to set a fullscreen video mode, this flag + * will be set in the surface that is returned. + * + * If SDL_DOUBLEBUF is set in 'flags', the SDL library will try to set up + * two surfaces in video memory and swap between them when you call + * SDL_Flip(). This is usually slower than the normal single-buffering + * scheme, but prevents "tearing" artifacts caused by modifying video + * memory while the monitor is refreshing. It should only be used by + * applications that redraw the entire screen on every update. + * + * If SDL_RESIZABLE is set in 'flags', the SDL library will allow the + * window manager, if any, to resize the window at runtime. When this + * occurs, SDL will send a SDL_VIDEORESIZE event to you application, + * and you must respond to the event by re-calling SDL_SetVideoMode() + * with the requested size (or another size that suits the application). + * + * If SDL_NOFRAME is set in 'flags', the SDL library will create a window + * without any title bar or frame decoration. Fullscreen video modes have + * this flag set automatically. + * + * This function returns the video framebuffer surface, or NULL if it fails. + * + * If you rely on functionality provided by certain video flags, check the + * flags of the returned surface to make sure that functionality is available. + * SDL will fall back to reduced functionality if the exact flags you wanted + * are not available. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_SetVideoMode + (int width, int height, int bpp, Uint32 flags); + +/** @name SDL_Update Functions + * These functions should not be called while 'screen' is locked. + */ +/*@{*/ +/** + * Makes sure the given list of rectangles is updated on the given screen. + */ +extern DECLSPEC void SDLCALL SDL_UpdateRects + (SDL_Surface *screen, int numrects, SDL_Rect *rects); +/** + * If 'x', 'y', 'w' and 'h' are all 0, SDL_UpdateRect will update the entire + * screen. + */ +extern DECLSPEC void SDLCALL SDL_UpdateRect + (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h); +/*@}*/ + +/** + * On hardware that supports double-buffering, this function sets up a flip + * and returns. The hardware will wait for vertical retrace, and then swap + * video buffers before the next video surface blit or lock will return. + * On hardware that doesn not support double-buffering, this is equivalent + * to calling SDL_UpdateRect(screen, 0, 0, 0, 0); + * The SDL_DOUBLEBUF flag must have been passed to SDL_SetVideoMode() when + * setting the video mode for this function to perform hardware flipping. + * This function returns 0 if successful, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_Flip(SDL_Surface *screen); + +/** + * Set the gamma correction for each of the color channels. + * The gamma values range (approximately) between 0.1 and 10.0 + * + * If this function isn't supported directly by the hardware, it will + * be emulated using gamma ramps, if available. If successful, this + * function returns 0, otherwise it returns -1. + */ +extern DECLSPEC int SDLCALL SDL_SetGamma(float red, float green, float blue); + +/** + * Set the gamma translation table for the red, green, and blue channels + * of the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. + * The input is the index into the array, and the output is the 16-bit + * gamma value at that index, scaled to the output color precision. + * + * You may pass NULL for any of the channels to leave it unchanged. + * If the call succeeds, it will return 0. If the display driver or + * hardware does not support gamma translation, or otherwise fails, + * this function will return -1. + */ +extern DECLSPEC int SDLCALL SDL_SetGammaRamp(const Uint16 *red, const Uint16 *green, const Uint16 *blue); + +/** + * Retrieve the current values of the gamma translation tables. + * + * You must pass in valid pointers to arrays of 256 16-bit quantities. + * Any of the pointers may be NULL to ignore that channel. + * If the call succeeds, it will return 0. If the display driver or + * hardware does not support gamma translation, or otherwise fails, + * this function will return -1. + */ +extern DECLSPEC int SDLCALL SDL_GetGammaRamp(Uint16 *red, Uint16 *green, Uint16 *blue); + +/** + * Sets a portion of the colormap for the given 8-bit surface. If 'surface' + * is not a palettized surface, this function does nothing, returning 0. + * If all of the colors were set as passed to SDL_SetColors(), it will + * return 1. If not all the color entries were set exactly as given, + * it will return 0, and you should look at the surface palette to + * determine the actual color palette. + * + * When 'surface' is the surface associated with the current display, the + * display colormap will be updated with the requested colors. If + * SDL_HWPALETTE was set in SDL_SetVideoMode() flags, SDL_SetColors() + * will always return 1, and the palette is guaranteed to be set the way + * you desire, even if the window colormap has to be warped or run under + * emulation. + */ +extern DECLSPEC int SDLCALL SDL_SetColors(SDL_Surface *surface, + SDL_Color *colors, int firstcolor, int ncolors); + +/** + * Sets a portion of the colormap for a given 8-bit surface. + * 'flags' is one or both of: + * SDL_LOGPAL -- set logical palette, which controls how blits are mapped + * to/from the surface, + * SDL_PHYSPAL -- set physical palette, which controls how pixels look on + * the screen + * Only screens have physical palettes. Separate change of physical/logical + * palettes is only possible if the screen has SDL_HWPALETTE set. + * + * The return value is 1 if all colours could be set as requested, and 0 + * otherwise. + * + * SDL_SetColors() is equivalent to calling this function with + * flags = (SDL_LOGPAL|SDL_PHYSPAL). + */ +extern DECLSPEC int SDLCALL SDL_SetPalette(SDL_Surface *surface, int flags, + SDL_Color *colors, int firstcolor, + int ncolors); + +/** + * Maps an RGB triple to an opaque pixel value for a given pixel format + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB +(const SDL_PixelFormat * const format, + const Uint8 r, const Uint8 g, const Uint8 b); + +/** + * Maps an RGBA quadruple to a pixel value for a given pixel format + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA +(const SDL_PixelFormat * const format, + const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a); + +/** + * Maps a pixel value into the RGB components for a given pixel format + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * const fmt, + Uint8 *r, Uint8 *g, Uint8 *b); + +/** + * Maps a pixel value into the RGBA components for a given pixel format + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * const fmt, + Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); + +/** @sa SDL_CreateRGBSurface */ +#define SDL_AllocSurface SDL_CreateRGBSurface +/** + * Allocate and free an RGB surface (must be called after SDL_SetVideoMode) + * If the depth is 4 or 8 bits, an empty palette is allocated for the surface. + * If the depth is greater than 8 bits, the pixel format is set using the + * flags '[RGB]mask'. + * If the function runs out of memory, it will return NULL. + * + * The 'flags' tell what kind of surface to create. + * SDL_SWSURFACE means that the surface should be created in system memory. + * SDL_HWSURFACE means that the surface should be created in video memory, + * with the same format as the display surface. This is useful for surfaces + * that will not change much, to take advantage of hardware acceleration + * when being blitted to the display surface. + * SDL_ASYNCBLIT means that SDL will try to perform asynchronous blits with + * this surface, but you must always lock it before accessing the pixels. + * SDL will wait for current blits to finish before returning from the lock. + * SDL_SRCCOLORKEY indicates that the surface will be used for colorkey blits. + * If the hardware supports acceleration of colorkey blits between + * two surfaces in video memory, SDL will try to place the surface in + * video memory. If this isn't possible or if there is no hardware + * acceleration available, the surface will be placed in system memory. + * SDL_SRCALPHA means that the surface will be used for alpha blits and + * if the hardware supports hardware acceleration of alpha blits between + * two surfaces in video memory, to place the surface in video memory + * if possible, otherwise it will be placed in system memory. + * If the surface is created in video memory, blits will be _much_ faster, + * but the surface format must be identical to the video surface format, + * and the only way to access the pixels member of the surface is to use + * the SDL_LockSurface() and SDL_UnlockSurface() calls. + * If the requested surface actually resides in video memory, SDL_HWSURFACE + * will be set in the flags member of the returned surface. If for some + * reason the surface could not be placed in video memory, it will not have + * the SDL_HWSURFACE flag set, and will be created in system memory instead. + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +/** @sa SDL_CreateRGBSurface */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, int height, int depth, int pitch, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface *surface); + +/** + * SDL_LockSurface() sets up a surface for directly accessing the pixels. + * Between calls to SDL_LockSurface()/SDL_UnlockSurface(), you can write + * to and read from 'surface->pixels', using the pixel format stored in + * 'surface->format'. Once you are done accessing the surface, you should + * use SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates + * to 0, then you can read and write to the surface at any time, and the + * pixel format of the surface will not change. In particular, if the + * SDL_HWSURFACE flag is not given when calling SDL_SetVideoMode(), you + * will not need to lock the display surface before accessing it. + * + * No operating system or library calls should be made between lock/unlock + * pairs, as critical system locks may be held during this time. + * + * SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked. + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface *surface); +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface); + +/** + * Load a surface from a seekable SDL data source (memory or file.) + * If 'freesrc' is non-zero, the source will be closed after being read. + * Returns the new surface, or NULL if there was an error. + * The new surface should be freed with SDL_FreeSurface(). + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, int freesrc); + +/** Convenience macro -- load a surface from a file */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data source (memory or file.) + * If 'freedst' is non-zero, the source will be closed after being written. + * Returns 0 if successful or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface *surface, SDL_RWops *dst, int freedst); + +/** Convenience macro -- save a surface to a file */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Sets the color key (transparent pixel) in a blittable surface. + * If 'flag' is SDL_SRCCOLORKEY (optionally OR'd with SDL_RLEACCEL), + * 'key' will be the transparent pixel in the source image of a blit. + * SDL_RLEACCEL requests RLE acceleration for the surface if present, + * and removes RLE acceleration if absent. + * If 'flag' is 0, this function clears any current color key. + * This function returns 0, or -1 if there was an error. + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey + (SDL_Surface *surface, Uint32 flag, Uint32 key); + +/** + * This function sets the alpha value for the entire surface, as opposed to + * using the alpha component of each pixel. This value measures the range + * of transparency of the surface, 0 being completely transparent to 255 + * being completely opaque. An 'alpha' value of 255 causes blits to be + * opaque, the source pixels copied to the destination (the default). Note + * that per-surface alpha can be combined with colorkey transparency. + * + * If 'flag' is 0, alpha blending is disabled for the surface. + * If 'flag' is SDL_SRCALPHA, alpha blending is enabled for the surface. + * OR:ing the flag with SDL_RLEACCEL requests RLE acceleration for the + * surface; if SDL_RLEACCEL is not specified, the RLE accel will be removed. + * + * The 'alpha' parameter is ignored for surfaces that have an alpha channel. + */ +extern DECLSPEC int SDLCALL SDL_SetAlpha(SDL_Surface *surface, Uint32 flag, Uint8 alpha); + +/** + * Sets the clipping rectangle for the destination surface in a blit. + * + * If the clip rectangle is NULL, clipping will be disabled. + * If the clip rectangle doesn't intersect the surface, the function will + * return SDL_FALSE and blits will be completely clipped. Otherwise the + * function returns SDL_TRUE and blits to the surface will be clipped to + * the intersection of the surface area and the clipping rectangle. + * + * Note that blits are automatically clipped to the edges of the source + * and destination surfaces. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface *surface, const SDL_Rect *rect); + +/** + * Gets the clipping rectangle for the destination surface in a blit. + * 'rect' must be a pointer to a valid rectangle which will be filled + * with the correct values. + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect); + +/** + * Creates a new surface of the specified format, and then copies and maps + * the given surface to it so the blit of the converted surface will be as + * fast as possible. If this function fails, it returns NULL. + * + * The 'flags' parameter is passed to SDL_CreateRGBSurface() and has those + * semantics. You can also pass SDL_RLEACCEL in the flags parameter and + * SDL will try to RLE accelerate colorkey and alpha blits in the resulting + * surface. + * + * This function is used internally by SDL_DisplayFormat(). + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_ConvertSurface + (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags); + +/** + * This performs a fast blit from the source surface to the destination + * surface. It assumes that the source and destination rectangles are + * the same size. If either 'srcrect' or 'dstrect' are NULL, the entire + * surface (src or dst) is copied. The final blit rectangles are saved + * in 'srcrect' and 'dstrect' after all clipping is performed. + * If the blit is successful, it returns 0, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without alpha and colorkey + * are defined as follows: + * + * RGBA->RGB: + * SDL_SRCALPHA set: + * alpha-blend (using alpha-channel). + * SDL_SRCCOLORKEY ignored. + * SDL_SRCALPHA not set: + * copy RGB. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source colour key, ignoring alpha in the + * comparison. + * + * RGB->RGBA: + * SDL_SRCALPHA set: + * alpha-blend (using the source per-surface alpha value); + * set destination alpha to opaque. + * SDL_SRCALPHA not set: + * copy RGB, set destination alpha to source per-surface alpha value. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source colour key. + * + * RGBA->RGBA: + * SDL_SRCALPHA set: + * alpha-blend (using the source alpha channel) the RGB values; + * leave destination alpha untouched. [Note: is this correct?] + * SDL_SRCCOLORKEY ignored. + * SDL_SRCALPHA not set: + * copy all of RGBA to the destination. + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * RGB values of the source colour key, ignoring alpha in the + * comparison. + * + * RGB->RGB: + * SDL_SRCALPHA set: + * alpha-blend (using the source per-surface alpha value). + * SDL_SRCALPHA not set: + * copy RGB. + * both: + * if SDL_SRCCOLORKEY set, only copy the pixels matching the + * source colour key. + * + * If either of the surfaces were in video memory, and the blit returns -2, + * the video memory was lost, so it should be reloaded with artwork and + * re-blitted: + * @code + * while ( SDL_BlitSurface(image, imgrect, screen, dstrect) == -2 ) { + * while ( SDL_LockSurface(image) < 0 ) + * Sleep(10); + * -- Write image pixels to image->pixels -- + * SDL_UnlockSurface(image); + * } + * @endcode + * + * This happens under DirectX 5.0 when the system switches away from your + * fullscreen application. The lock will also fail until you have access + * to the video memory again. + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** This is the public blit function, SDL_BlitSurface(), and it performs + * rectangle validation and clipping before passing it to SDL_LowerBlit() + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); +/** This is a semi-private blit function and it performs low-level surface + * blitting only. + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); + +/** + * This function performs a fast fill of the given rectangle with 'color' + * The given rectangle is clipped to the destination surface clip area + * and the final fill rectangle is saved in the passed in pointer. + * If 'dstrect' is NULL, the whole surface will be filled with 'color' + * The color should be a pixel of the format used by the surface, and + * can be generated by the SDL_MapRGB() function. + * This function returns 0 on success, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color); + +/** + * This function takes a surface and copies it to a new surface of the + * pixel format and colors of the video framebuffer, suitable for fast + * blitting onto the display surface. It calls SDL_ConvertSurface() + * + * If you want to take advantage of hardware colorkey or alpha blit + * acceleration, you should set the colorkey and alpha value before + * calling this function. + * + * If the conversion fails or runs out of memory, it returns NULL + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormat(SDL_Surface *surface); + +/** + * This function takes a surface and copies it to a new surface of the + * pixel format and colors of the video framebuffer (if possible), + * suitable for fast alpha blitting onto the display surface. + * The new surface will always have an alpha channel. + * + * If you want to take advantage of hardware colorkey or alpha blit + * acceleration, you should set the colorkey and alpha value before + * calling this function. + * + * If the conversion fails or runs out of memory, it returns NULL + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_DisplayFormatAlpha(SDL_Surface *surface); + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name YUV video surface overlay functions */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** This function creates a video output overlay + * Calling the returned surface an overlay is something of a misnomer because + * the contents of the display surface underneath the area where the overlay + * is shown is undefined - it may be overwritten with the converted YUV data. + */ +extern DECLSPEC SDL_Overlay * SDLCALL SDL_CreateYUVOverlay(int width, int height, + Uint32 format, SDL_Surface *display); + +/** Lock an overlay for direct access, and unlock it when you are done */ +extern DECLSPEC int SDLCALL SDL_LockYUVOverlay(SDL_Overlay *overlay); +extern DECLSPEC void SDLCALL SDL_UnlockYUVOverlay(SDL_Overlay *overlay); + +/** Blit a video overlay to the display surface. + * The contents of the video surface underneath the blit destination are + * not defined. + * The width and height of the destination rectangle may be different from + * that of the overlay, but currently only 2x scaling is supported. + */ +extern DECLSPEC int SDLCALL SDL_DisplayYUVOverlay(SDL_Overlay *overlay, SDL_Rect *dstrect); + +/** Free a video overlay */ +extern DECLSPEC void SDLCALL SDL_FreeYUVOverlay(SDL_Overlay *overlay); + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name OpenGL support functions. */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Dynamically load an OpenGL library, or the default one if path is NULL + * + * If you do this, you need to retrieve all of the GL functions used in + * your program from the dynamic library using SDL_GL_GetProcAddress(). + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get the address of a GL function + */ +extern DECLSPEC void * SDLCALL SDL_GL_GetProcAddress(const char* proc); + +/** + * Set an attribute of the OpenGL subsystem before intialization. + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get an attribute of the OpenGL subsystem from the windowing + * interface, such as glX. This is of course different from getting + * the values from SDL's internal OpenGL subsystem, which only + * stores the values you request before initialization. + * + * Developers should track the values they pass into SDL_GL_SetAttribute + * themselves if they want to retrieve these values. + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int* value); + +/** + * Swap the OpenGL buffers, if double-buffering is supported. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapBuffers(void); + +/** @name OpenGL Internal Functions + * Internal functions that should not be called unless you have read + * and understood the source code for these functions. + */ +/*@{*/ +extern DECLSPEC void SDLCALL SDL_GL_UpdateRects(int numrects, SDL_Rect* rects); +extern DECLSPEC void SDLCALL SDL_GL_Lock(void); +extern DECLSPEC void SDLCALL SDL_GL_Unlock(void); +/*@}*/ + +/*@}*/ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +/** @name Window Manager Functions */ +/** These functions allow interaction with the window manager, if any. */ /*@{*/ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Sets the title and icon text of the display window (UTF-8 encoded) + */ +extern DECLSPEC void SDLCALL SDL_WM_SetCaption(const char *title, const char *icon); +/** + * Gets the title and icon text of the display window (UTF-8 encoded) + */ +extern DECLSPEC void SDLCALL SDL_WM_GetCaption(char **title, char **icon); + +/** + * Sets the icon for the display window. + * This function must be called before the first call to SDL_SetVideoMode(). + * It takes an icon surface, and a mask in MSB format. + * If 'mask' is NULL, the entire icon surface will be used as the icon. + */ +extern DECLSPEC void SDLCALL SDL_WM_SetIcon(SDL_Surface *icon, Uint8 *mask); + +/** + * This function iconifies the window, and returns 1 if it succeeded. + * If the function succeeds, it generates an SDL_APPACTIVE loss event. + * This function is a noop and returns 0 in non-windowed environments. + */ +extern DECLSPEC int SDLCALL SDL_WM_IconifyWindow(void); + +/** + * Toggle fullscreen mode without changing the contents of the screen. + * If the display surface does not require locking before accessing + * the pixel information, then the memory pointers will not change. + * + * If this function was able to toggle fullscreen mode (change from + * running in a window to fullscreen, or vice-versa), it will return 1. + * If it is not implemented, or fails, it returns 0. + * + * The next call to SDL_SetVideoMode() will set the mode fullscreen + * attribute based on the flags parameter - if SDL_FULLSCREEN is not + * set, then the display will be windowed by default where supported. + * + * This is currently only implemented in the X11 video driver. + */ +extern DECLSPEC int SDLCALL SDL_WM_ToggleFullScreen(SDL_Surface *surface); + +typedef enum { + SDL_GRAB_QUERY = -1, + SDL_GRAB_OFF = 0, + SDL_GRAB_ON = 1, + SDL_GRAB_FULLSCREEN /**< Used internally */ +} SDL_GrabMode; +/** + * This function allows you to set and query the input grab state of + * the application. It returns the new input grab state. + * + * Grabbing means that the mouse is confined to the application window, + * and nearly all keyboard input is passed directly to the application, + * and not interpreted by a window manager, if any. + */ +extern DECLSPEC SDL_GrabMode SDLCALL SDL_WM_GrabInput(SDL_GrabMode mode); + +/*@}*/ + +/** @internal Not in public API at the moment - do not use! */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface *src, SDL_Rect *srcrect, + SDL_Surface *dst, SDL_Rect *dstrect); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* _SDL_video_h */ diff --git a/libmednahawk/sdl/include/begin_code.h b/libmednahawk/sdl/include/begin_code.h new file mode 100644 index 0000000000..5355a4d191 --- /dev/null +++ b/libmednahawk/sdl/include/begin_code.h @@ -0,0 +1,191 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * @file begin_code.h + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/** + * @file begin_code.h + * This shouldn't be nested -- included it around code only. + */ +#ifdef _begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define _begin_code_h + +/** + * @def DECLSPEC + * Some compilers use a special export keyword + */ +#ifndef DECLSPEC +# if defined(__BEOS__) || defined(__HAIKU__) +# if defined(__GNUC__) +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC __declspec(export) +# endif +# elif defined(__WIN32__) +# ifdef __BORLANDC__ +# ifdef BUILD_SDL +# define DECLSPEC +# else +# define DECLSPEC __declspec(dllimport) +# endif +# else +# define DECLSPEC __declspec(dllexport) +# endif +# elif defined(__OS2__) +# ifdef __WATCOMC__ +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined (__GNUC__) && __GNUC__ < 4 +# /* Added support for GCC-EMX = 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/** + * @def SDLCALL + * By default SDL uses the C calling convention + */ +#ifndef SDLCALL +# if defined(__WIN32__) && !defined(__GNUC__) +# define SDLCALL __cdecl +# elif defined(__OS2__) +# if defined (__GNUC__) && __GNUC__ < 4 +# /* Added support for GCC-EMX

    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 z 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 + + +FileStream::FileStream(const char *path, const int mode) : fw(path, mode), OpenedMode(mode) +{ + +} + +FileStream::~FileStream() +{ + +} + +uint64 FileStream::attributes(void) +{ + uint64 ret = ATTRIBUTE_SEEKABLE; + + switch(OpenedMode) + { + case MODE_READ: + ret |= ATTRIBUTE_READABLE; + break; + + case MODE_WRITE_SAFE: + case MODE_WRITE: + ret |= ATTRIBUTE_WRITEABLE; + break; + } + + return ret; +} + +uint8 *FileStream::map(void) +{ + //return fw.map(); + return(NULL); +} + +void FileStream::unmap(void) +{ + //fw.unmap(); +} + + +uint64 FileStream::read(void *data, uint64 count, bool error_on_eos) +{ + return fw.read(data, count, error_on_eos); +} + +void FileStream::write(const void *data, uint64 count) +{ + fw.write(data, count); +} + +void FileStream::seek(int64 offset, int whence) +{ + fw.seek(offset, whence); +} + +int64 FileStream::tell(void) +{ + return fw.tell(); +} + +int64 FileStream::size(void) +{ + return fw.size(); +} + +void FileStream::close(void) +{ + fw.close(); +} diff --git a/libmednahawk/src/FileStream.h b/libmednahawk/src/FileStream.h new file mode 100644 index 0000000000..b598d2de59 --- /dev/null +++ b/libmednahawk/src/FileStream.h @@ -0,0 +1,59 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO/WIP + +#ifndef __MDFN_FILESTREAM_H +#define __MDFN_FILESTREAM_H + +#include "Stream.h" +#include "FileWrapper.h" + +class FileStream : public Stream +{ + public: + + enum + { + MODE_READ = FileWrapper::MODE_READ, + MODE_WRITE = FileWrapper::MODE_WRITE, + MODE_WRITE_SAFE = FileWrapper::MODE_WRITE_SAFE + }; + + FileStream(const char *path, const int mode); + virtual ~FileStream(); + + virtual uint64 attributes(void); + + virtual uint8 *map(void); + virtual void unmap(void); + + virtual uint64 read(void *data, uint64 count, bool error_on_eos = true); + virtual void write(const void *data, uint64 count); + virtual void seek(int64 offset, int whence); + virtual int64 tell(void); + virtual int64 size(void); + virtual void close(void); + + private: + FileWrapper fw; + const int OpenedMode; +}; + + + +#endif diff --git a/libmednahawk/src/FileWrapper.cpp b/libmednahawk/src/FileWrapper.cpp new file mode 100644 index 0000000000..b99d321512 --- /dev/null +++ b/libmednahawk/src/FileWrapper.cpp @@ -0,0 +1,402 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "FileWrapper.h" + +#include +#include +#include +#include +#include +//#include //zero 07-feb-2012 +#include +#include + +//TODO - change FOP crap to separate functions. this was just less work at the time. +FILE* headless_fopen(const char* path, const char* mode); +int headless_fclose(FILE* fp); +int64 headless_fop(FOP op, void* ptr, int64 a, int64 b, FILE* fp); + +// Some really bad preprocessor abuse follows to handle platforms that don't have fseeko and ftello...and of course +// for largefile support on Windows: + +#ifndef HAVE_FSEEKO + #define fseeko fseek +#endif + +#ifndef HAVE_FTELLO + #define ftello ftell +#endif + +#if SIZEOF_OFF_T == 4 + + #ifdef HAVE_FOPEN64 + #define fopen fopen64 + #endif + + #ifdef HAVE_FTELLO64 + #undef ftello + #define ftello ftello64 + #endif + + #ifdef HAVE_FSEEKO64 + #undef fseeko + #define fseeko fseeko64 + #endif + + #ifdef HAVE_FSTAT64 + #define fstat fstat64 + #define stat stat64 + #endif + +#endif + +// For special uses, IE in classes that take a path or a FileWrapper & in the constructor, and the FileWrapper non-pointer member +// is in the initialization list for the path constructor but not the constructor with FileWrapper& +#if 0 +FileWrapper::FileWrapper() +{ + fp = NULL; +} +#endif + +#if 0 +FileWrapper::FileWrapper(FileWrapper &original) : OpenedMode(original.OpenedMode) +{ + int fd; + int duped_fd; + + path_save = original.path_save; + + original.flush(); + + fd = fileno(original.fp); + if(-1 == (duped_fd = dup(fd))) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error duping file descriptor: %s"), ene.StrError())); + } + + if(!(fp = fdopen(duped_fd, (OpenedMode == MODE_READ) ? "rb" : "wb"))) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error during fdopen(): %s"), ene.StrError())); + } +} +#endif + +FileWrapper::FileWrapper(const char *path, const int mode, const char *purpose) : OpenedMode(mode) +{ + path_save = std::string(path); + + if(mode == MODE_READ) + fp = headless_fopen(path, "rb"); + else if(mode == MODE_WRITE) + fp = headless_fopen(path, "wb"); + else if(mode == MODE_WRITE_SAFE) // SO ANNOYING + { + int open_flags = O_WRONLY | O_CREAT | O_EXCL; + + #ifdef O_BINARY + open_flags |= O_BINARY; + #elif defined(_O_BINARY) + open_flags |= _O_BINARY; + #endif + + #if defined(S_IRGRP) && defined(S_IROTH) + int tmpfd = open(path, open_flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + #else + //int tmpfd = open(path, open_flags, S_IRUSR | S_IWUSR); + int tmpfd = open(path, open_flags, _S_IREAD | _S_IWRITE); //zero 07-feb-2011 + #endif + if(tmpfd == -1) + { + ErrnoHolder ene(errno); + + if(purpose) + throw(MDFN_Error(ene.Errno(), _("Error opening file \"%s\" for \"%s\": %s"), path_save.c_str(), purpose, ene.StrError())); + else + throw(MDFN_Error(ene.Errno(), _("Error opening file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } + fp = fdopen(tmpfd, "wb"); + } + + if(!fp) + { + ErrnoHolder ene(errno); + + if(purpose) + throw(MDFN_Error(ene.Errno(), _("Error opening file \"%s\" for \"%s\": %s"), path_save.c_str(), purpose, ene.StrError())); + else + throw(MDFN_Error(ene.Errno(), _("Error opening file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } +} + +FileWrapper::~FileWrapper() +{ + try + { + close(); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + } +} + +void FileWrapper::close(void) +{ + if(fp) + { + FILE *tmp = fp; + + fp = NULL; + + if(headless_fclose(tmp) == EOF) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error closing opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } + } +} + +uint64 FileWrapper::read(void *data, uint64 count, bool error_on_eof) +{ + uint64 read_count; + + headless_fop(FOP_clearerr,0,0,0,fp); + + read_count = headless_fop(FOP_fread, data, 1, count, fp); + + if(read_count != count) + { + ErrnoHolder ene(errno); + + if(headless_fop(FOP_ferror,NULL,0,0,fp)) + throw(MDFN_Error(ene.Errno(), _("Error reading from opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + + if(error_on_eof) + throw(MDFN_Error(ene.Errno(), _("Error reading from opened file \"%s\": %s"), path_save.c_str(), "EOF")); + } + + return(read_count); +} + +void FileWrapper::flush(void) +{ + if(headless_fop(FOP_fflush, 0, 0, 0, fp) == EOF) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error flushing to opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } +} + +void FileWrapper::write(const void *data, uint64 count) +{ + if(headless_fop(FOP_fwrite, (void*)data, 1, count, fp) != count) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error writing to opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } +} + +static int TIN(trio_pointer_t ptr) +{ + int c = 0; + uint64 ret = ((FileWrapper*)ptr)->read(&c,1,false); + if(ret == 0) return EOF; + else return c; +} + +static int TOUT(trio_pointer_t ptr, int c) +{ + ((FileWrapper*)ptr)->write(&c,1); + return 1; +} + +int FileWrapper::scanf(const char *format, ...) +{ + va_list ap; + int ret; + + headless_fop(FOP_clearerr,0,0,0,fp); + + va_start(ap, format); + + ret = trio_vcscanf(TIN, this, format, ap); + + va_end(ap); + + if(headless_fop(FOP_ferror,NULL,0,0,fp)) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error reading from opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } + + //if(ret < 0 || ret == EOF) + // throw(MDFN_Error(0, _("%s error on format string \"%s\""), "trio_vfscanf()", format)); + + return(ret); +} + +void FileWrapper::printf(const char *format, ...) +{ + va_list ap; + + headless_fop(FOP_clearerr,0,0,0,fp); + + va_start(ap, format); + + trio_vcprintf(TOUT, this, format, ap); + + va_end(ap); + + if(headless_fop(FOP_ferror,NULL,0,0,fp)) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error writing to opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } +} + +void FileWrapper::put_char(int c) +{ + /*if(fputc(c, fp) == EOF) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error writing to opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + }*/ + uint8 b = (uint8)c; + write(&b,1); +} + +void FileWrapper::put_string(const char *str) +{ + write(str, strlen(str)); +} + +// We need to decide whether to prohibit NULL characters in output and input strings via std::string. +// Yes for correctness, no for potential security issues(though unlikely in context all things considered). +void FileWrapper::put_string(const std::string &str) +{ + write(str.data(), str.size()); +} + +char * myfgets(char *buf, int bsize, FileWrapper *fp) +{ +int i; +int c; +int done = 0; +if (buf == 0 || bsize <= 0 || fp == 0) + return 0; +for (i = 0; !done && i < bsize - 1; i++) { + c = TIN(fp); + if (c == EOF) { + done = 1; + i--; + } else { + buf[i] = c; + if (c == '\n') + done = 1; + } +} +buf[i] = '\0'; +if (i == 0) + return 0; +else + return buf; +} + +char *FileWrapper::get_line(char *buf_s, int buf_size) +{ + char *ret; + + headless_fop(FOP_clearerr,0,0,0,fp); + + + ret = ::myfgets(buf_s, buf_size, this); + if(headless_fop(FOP_ferror,NULL,0,0,fp)) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error reading line in opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } + return(ret); +} + + +void FileWrapper::seek(int64 offset, int whence) +{ + if(headless_fop(FOP_fseeko, NULL, offset, whence, fp) == -1) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error seeking in opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } +} + +int64 FileWrapper::size(void) +{ + struct stat buf; + + return headless_fop(FOP_size, NULL, 0, 0, fp); + + //to be implemented in the filesystem dispatcher + //if(fstat(fileno(fp), &buf) == -1) + //{ + // ErrnoHolder ene(errno); + // throw(MDFN_Error(ene.Errno(), _("Error getting the size of opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + //} + //return(buf.st_size); + +/* TODO for systems without fstat()? + int64 orig_pos = tell(); + int64 ret; + + seek(0, SEEK_END); + + ret = tell(); + + seek(orig_pos, SEEK_SET); + */ +} + +int64 FileWrapper::tell(void) +{ + int64 offset; + + offset = headless_fop(FOP_ftello,0,0,0,fp); + + if(offset == -1) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), _("Error getting position in opened file \"%s\": %s"), path_save.c_str(), ene.StrError())); + } + + return(offset); +} + + diff --git a/libmednahawk/src/FileWrapper.h b/libmednahawk/src/FileWrapper.h new file mode 100644 index 0000000000..c5b5e50ed1 --- /dev/null +++ b/libmednahawk/src/FileWrapper.h @@ -0,0 +1,80 @@ +#ifndef __MDFN_FILEWRAPPER_H +#define __MDFN_FILEWRAPPER_H + +#include +#include + +enum FOP +{ + FOP_fread, + FOP_fwrite, + FOP_fflush, + FOP_fseeko, + FOP_ftello, + FOP_ferror, + FOP_clearerr, + FOP_size +}; + +// A stdio FILE wrapper(with some BSD and POSIXisms, and a little dash of Win32, thrown in for special behaviors) +class FileWrapper +{ + public: + + enum + { + MODE_READ = 0, + MODE_WRITE, + MODE_WRITE_SAFE // Will throw an exception instead of overwriting an existing file. + }; + + FileWrapper(const char *path, const int mode, const char *purpose = NULL); + #if 0 + FileWrapper(); + #endif + ~FileWrapper(); + + uint64 read(void *data, uint64 count, bool error_on_eof = true); + + void write(const void *data, uint64 count); + + int scanf(const char *format, ...) MDFN_FORMATSTR(scanf, 2, 3); + + void printf(const char *format, ...) MDFN_FORMATSTR(printf, 2, 3); + + void put_char(int c); + + void put_string(const char *str); + void put_string(const std::string &str); + + char *get_line(char *s, int size); // Same semantics as fgets(), for now + + void seek(int64 offset, int whence); + + int64 tell(void); + + int64 size(void); + + void flush(void); + //void flushsync(void); // TODO: see fflush and fsync + + void close(void); // Flushes and closes the underlying OS/C lib file. Calling any other method of this class after a call to + // this method is illegal(except for the implicit call to the destructor). + // + // This is necessary since there can be errors when closing a file, and we can't safely throw an + // exception from the destructor. + // + // Manually calling this method isn't strictly necessary, it'll be called from the destructor + // automatically, but calling is strongly recommended when the file is opened for writing. + private: + + FileWrapper & operator=(const FileWrapper &); // Assignment operator + FileWrapper(const FileWrapper &); // Copy constructor + //FileWrapper(FileWrapper &); // Copy constructor + + FILE *fp; + std::string path_save; + const int OpenedMode; +}; + +#endif diff --git a/libmednahawk/src/Makefile.am b/libmednahawk/src/Makefile.am new file mode 100644 index 0000000000..c66eea1462 --- /dev/null +++ b/libmednahawk/src/Makefile.am @@ -0,0 +1,146 @@ +SUBDIRS = trio +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_builddir)/include/blip -I$(top_srcdir)/intl -I$(top_srcdir) + +bin_PROGRAMS = mednafen +mednafen_SOURCES = debug.cpp error.cpp mempatcher.cpp settings.cpp endian.cpp mednafen.cpp file.cpp general.cpp md5.cpp memory.cpp netplay.cpp state.cpp movie.cpp player.cpp PSFLoader.cpp tests.cpp qtrecord.cpp cdplay.cpp okiadpcm.cpp FileWrapper.cpp Stream.cpp MemoryStream.cpp FileStream.cpp +mednafen_LDADD = trio/libtrio.a drivers/libmdfnsdl.a sexyal/libsexyal.a @SDL_LIBS@ +mednafen_DEPENDENCIES = trio/libtrio.a drivers/libmdfnsdl.a sexyal/libsexyal.a + +SUBDIRS += sexyal drivers + +if WANT_DEBUGGER +mednafen_SOURCES += dis6502.cpp +endif + +SUBDIRS += demo +mednafen_LDADD += demo/libdemo.a +mednafen_DEPENDENCIES += demo/libdemo.a + +if WANT_GB_EMU +SUBDIRS += gb +mednafen_LDADD += gb/libgb.a +mednafen_DEPENDENCIES += gb/libgb.a +endif + +if WANT_GBA_EMU +SUBDIRS += gba +mednafen_LDADD += gba/libgba.a +mednafen_DEPENDENCIES += gba/libgba.a +endif + +if WANT_LYNX_EMU +SUBDIRS += lynx +mednafen_LDADD += lynx/liblynx.a +mednafen_DEPENDENCIES += lynx/liblynx.a +endif + +if WANT_MD_EMU +SUBDIRS += md +mednafen_LDADD += md/libmd.a +mednafen_DEPENDENCIES += md/libmd.a +endif + +if WANT_NES_EMU +SUBDIRS += nes +mednafen_LDADD += nes/libnes.a +mednafen_DEPENDENCIES += nes/libnes.a +endif + +if WANT_NGP_EMU +SUBDIRS += ngp +mednafen_LDADD += ngp/libngp.a +mednafen_DEPENDENCIES += ngp/libngp.a +endif + +if WANT_PCE_EMU +SUBDIRS += pce +mednafen_LDADD += pce/libpce.a +mednafen_DEPENDENCIES += pce/libpce.a +endif + +if WANT_PCE_FAST_EMU +SUBDIRS += pce_fast +mednafen_LDADD += pce_fast/libpce_fast.a +mednafen_DEPENDENCIES += pce_fast/libpce_fast.a +endif + +if WANT_PCFX_EMU +SUBDIRS += pcfx +mednafen_LDADD += pcfx/libpcfx.a +mednafen_DEPENDENCIES += pcfx/libpcfx.a +endif + +if WANT_PSX_EMU +SUBDIRS += psx +mednafen_LDADD += psx/libpsx.a +mednafen_DEPENDENCIES += psx/libpsx.a +endif + + +if WANT_SMS_EMU +SUBDIRS += sms +mednafen_LDADD += sms/libsms.a +mednafen_DEPENDENCIES += sms/libsms.a +endif + +if WANT_SNES_EMU +SUBDIRS += snes +mednafen_LDADD += snes/libsnes.a +mednafen_DEPENDENCIES += snes/libsnes.a +endif + +if WANT_VB_EMU +SUBDIRS += vb +mednafen_LDADD += vb/libvb.a +mednafen_DEPENDENCIES += vb/libvb.a +endif + +if WANT_WSWAN_EMU +SUBDIRS += wswan +mednafen_LDADD += wswan/libwswan.a +mednafen_DEPENDENCIES += wswan/libwswan.a +endif + +if WANT_DEBUGGER +SUBDIRS += desa68 +mednafen_LDADD += desa68/libdesa68.a +mednafen_DEPENDENCIES += desa68/libdesa68.a +endif + +SUBDIRS += hw_cpu +mednafen_LDADD += hw_cpu/libmdfnhwcpu.a +mednafen_DEPENDENCIES += hw_cpu/libmdfnhwcpu.a + +SUBDIRS += hw_misc +mednafen_LDADD += hw_misc/libmdfnhwmisc.a +mednafen_DEPENDENCIES += hw_misc/libmdfnhwmisc.a + +SUBDIRS += hw_sound +mednafen_LDADD += hw_sound/libmdfnhwsound.a +mednafen_DEPENDENCIES += hw_sound/libmdfnhwsound.a + +SUBDIRS += hw_video +mednafen_LDADD += hw_video/libmdfnhwvideo.a +mednafen_DEPENDENCIES += hw_video/libmdfnhwvideo.a + +SUBDIRS += tremor mpcdec +mednafen_LDADD += tremor/libvorbisidec.a mpcdec/libmpcdec.a +mednafen_DEPENDENCIES += tremor/libvorbisidec.a mpcdec/libmpcdec.a + +include cdrom/Makefile.am.inc + + +SUBDIRS += sound +mednafen_LDADD += sound/libmdfnsound.a +mednafen_DEPENDENCIES += sound/libmdfnsound.a + +include compress/Makefile.am.inc +include string/Makefile.am.inc +include video/Makefile.am.inc +include resampler/Makefile.am.inc +include cputest/Makefile.am.inc + +mednafen_LDADD += @LIBINTL@ @LIBICONV@ + diff --git a/libmednahawk/src/Makefile.in b/libmednahawk/src/Makefile.in new file mode 100644 index 0000000000..ee0cfcc3de --- /dev/null +++ b/libmednahawk/src/Makefile.in @@ -0,0 +1,1203 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = mednafen$(EXEEXT) +@WANT_DEBUGGER_TRUE@am__append_1 = dis6502.cpp +@WANT_GB_EMU_TRUE@am__append_2 = gb +@WANT_GB_EMU_TRUE@am__append_3 = gb/libgb.a +@WANT_GB_EMU_TRUE@am__append_4 = gb/libgb.a +@WANT_GBA_EMU_TRUE@am__append_5 = gba +@WANT_GBA_EMU_TRUE@am__append_6 = gba/libgba.a +@WANT_GBA_EMU_TRUE@am__append_7 = gba/libgba.a +@WANT_LYNX_EMU_TRUE@am__append_8 = lynx +@WANT_LYNX_EMU_TRUE@am__append_9 = lynx/liblynx.a +@WANT_LYNX_EMU_TRUE@am__append_10 = lynx/liblynx.a +@WANT_MD_EMU_TRUE@am__append_11 = md +@WANT_MD_EMU_TRUE@am__append_12 = md/libmd.a +@WANT_MD_EMU_TRUE@am__append_13 = md/libmd.a +@WANT_NES_EMU_TRUE@am__append_14 = nes +@WANT_NES_EMU_TRUE@am__append_15 = nes/libnes.a +@WANT_NES_EMU_TRUE@am__append_16 = nes/libnes.a +@WANT_NGP_EMU_TRUE@am__append_17 = ngp +@WANT_NGP_EMU_TRUE@am__append_18 = ngp/libngp.a +@WANT_NGP_EMU_TRUE@am__append_19 = ngp/libngp.a +@WANT_PCE_EMU_TRUE@am__append_20 = pce +@WANT_PCE_EMU_TRUE@am__append_21 = pce/libpce.a +@WANT_PCE_EMU_TRUE@am__append_22 = pce/libpce.a +@WANT_PCE_FAST_EMU_TRUE@am__append_23 = pce_fast +@WANT_PCE_FAST_EMU_TRUE@am__append_24 = pce_fast/libpce_fast.a +@WANT_PCE_FAST_EMU_TRUE@am__append_25 = pce_fast/libpce_fast.a +@WANT_PCFX_EMU_TRUE@am__append_26 = pcfx +@WANT_PCFX_EMU_TRUE@am__append_27 = pcfx/libpcfx.a +@WANT_PCFX_EMU_TRUE@am__append_28 = pcfx/libpcfx.a +@WANT_PSX_EMU_TRUE@am__append_29 = psx +@WANT_PSX_EMU_TRUE@am__append_30 = psx/libpsx.a +@WANT_PSX_EMU_TRUE@am__append_31 = psx/libpsx.a +@WANT_SMS_EMU_TRUE@am__append_32 = sms +@WANT_SMS_EMU_TRUE@am__append_33 = sms/libsms.a +@WANT_SMS_EMU_TRUE@am__append_34 = sms/libsms.a +@WANT_SNES_EMU_TRUE@am__append_35 = snes +@WANT_SNES_EMU_TRUE@am__append_36 = snes/libsnes.a +@WANT_SNES_EMU_TRUE@am__append_37 = snes/libsnes.a +@WANT_VB_EMU_TRUE@am__append_38 = vb +@WANT_VB_EMU_TRUE@am__append_39 = vb/libvb.a +@WANT_VB_EMU_TRUE@am__append_40 = vb/libvb.a +@WANT_WSWAN_EMU_TRUE@am__append_41 = wswan +@WANT_WSWAN_EMU_TRUE@am__append_42 = wswan/libwswan.a +@WANT_WSWAN_EMU_TRUE@am__append_43 = wswan/libwswan.a +@WANT_DEBUGGER_TRUE@am__append_44 = desa68 +@WANT_DEBUGGER_TRUE@am__append_45 = desa68/libdesa68.a +@WANT_DEBUGGER_TRUE@am__append_46 = desa68/libdesa68.a +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/cdrom/Makefile.am.inc \ + $(srcdir)/compress/Makefile.am.inc \ + $(srcdir)/cputest/Makefile.am.inc \ + $(srcdir)/resampler/Makefile.am.inc \ + $(srcdir)/string/Makefile.am.inc \ + $(srcdir)/video/Makefile.am.inc +@HAVE_LIBCDIO_TRUE@am__append_47 = cdrom/CDAccess_Physical.cpp +@ARCH_X86_TRUE@am__append_48 = cputest/x86_cpu.c +@ARCH_POWERPC_TRUE@am__append_49 = cputest/ppc_cpu.c +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__mednafen_SOURCES_DIST = debug.cpp error.cpp mempatcher.cpp \ + settings.cpp endian.cpp mednafen.cpp file.cpp general.cpp \ + md5.cpp memory.cpp netplay.cpp state.cpp movie.cpp player.cpp \ + PSFLoader.cpp tests.cpp qtrecord.cpp cdplay.cpp okiadpcm.cpp \ + FileWrapper.cpp Stream.cpp MemoryStream.cpp FileStream.cpp \ + dis6502.cpp cdrom/audioreader.cpp cdrom/cdromif.cpp \ + cdrom/scsicd.cpp cdrom/pcecd.cpp cdrom/CDUtility.cpp \ + cdrom/crc32.cpp cdrom/galois.cpp cdrom/l-ec.cpp \ + cdrom/recover-raw.cpp cdrom/lec.cpp cdrom/CDAccess.cpp \ + cdrom/CDAccess_Image.cpp cdrom/CDAccess_Physical.cpp \ + compress/minilzo.c compress/quicklz.c compress/blz.cpp \ + compress/ioapi.c compress/unzip.c string/world_strtod.c \ + string/escape.cpp string/ConvertUTF.cpp video/surface.cpp \ + video/font-data.cpp video/font-data-18x18.c \ + video/font-data-12x13.c video/png.cpp video/primitives.cpp \ + video/text.cpp video/video.cpp video/tblur.cpp \ + video/selblur.cpp video/resize.cpp video/Deinterlacer.cpp \ + resampler/resample.c cputest/cputest.c cputest/x86_cpu.c \ + cputest/ppc_cpu.c +@WANT_DEBUGGER_TRUE@am__objects_1 = dis6502.$(OBJEXT) +am__dirstamp = $(am__leading_dot)dirstamp +@HAVE_LIBCDIO_TRUE@am__objects_2 = cdrom/CDAccess_Physical.$(OBJEXT) +@ARCH_X86_TRUE@am__objects_3 = cputest/x86_cpu.$(OBJEXT) +@ARCH_POWERPC_TRUE@am__objects_4 = cputest/ppc_cpu.$(OBJEXT) +am_mednafen_OBJECTS = debug.$(OBJEXT) error.$(OBJEXT) \ + mempatcher.$(OBJEXT) settings.$(OBJEXT) endian.$(OBJEXT) \ + mednafen.$(OBJEXT) file.$(OBJEXT) general.$(OBJEXT) \ + md5.$(OBJEXT) memory.$(OBJEXT) netplay.$(OBJEXT) \ + state.$(OBJEXT) movie.$(OBJEXT) player.$(OBJEXT) \ + PSFLoader.$(OBJEXT) tests.$(OBJEXT) qtrecord.$(OBJEXT) \ + cdplay.$(OBJEXT) okiadpcm.$(OBJEXT) FileWrapper.$(OBJEXT) \ + Stream.$(OBJEXT) MemoryStream.$(OBJEXT) FileStream.$(OBJEXT) \ + $(am__objects_1) cdrom/audioreader.$(OBJEXT) \ + cdrom/cdromif.$(OBJEXT) cdrom/scsicd.$(OBJEXT) \ + cdrom/pcecd.$(OBJEXT) cdrom/CDUtility.$(OBJEXT) \ + cdrom/crc32.$(OBJEXT) cdrom/galois.$(OBJEXT) \ + cdrom/l-ec.$(OBJEXT) cdrom/recover-raw.$(OBJEXT) \ + cdrom/lec.$(OBJEXT) cdrom/CDAccess.$(OBJEXT) \ + cdrom/CDAccess_Image.$(OBJEXT) $(am__objects_2) \ + compress/minilzo.$(OBJEXT) compress/quicklz.$(OBJEXT) \ + compress/blz.$(OBJEXT) compress/ioapi.$(OBJEXT) \ + compress/unzip.$(OBJEXT) string/world_strtod.$(OBJEXT) \ + string/escape.$(OBJEXT) string/ConvertUTF.$(OBJEXT) \ + video/surface.$(OBJEXT) video/font-data.$(OBJEXT) \ + video/font-data-18x18.$(OBJEXT) \ + video/font-data-12x13.$(OBJEXT) video/png.$(OBJEXT) \ + video/primitives.$(OBJEXT) video/text.$(OBJEXT) \ + video/video.$(OBJEXT) video/tblur.$(OBJEXT) \ + video/selblur.$(OBJEXT) video/resize.$(OBJEXT) \ + video/Deinterlacer.$(OBJEXT) resampler/resample.$(OBJEXT) \ + cputest/cputest.$(OBJEXT) $(am__objects_3) $(am__objects_4) +mednafen_OBJECTS = $(am_mednafen_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(mednafen_SOURCES) +DIST_SOURCES = $(am__mednafen_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = trio sexyal drivers demo gb gba lynx md nes ngp pce \ + pce_fast pcfx psx sms snes vb wswan desa68 hw_cpu hw_misc \ + hw_sound hw_video tremor mpcdec sound +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = trio sexyal drivers demo $(am__append_2) $(am__append_5) \ + $(am__append_8) $(am__append_11) $(am__append_14) \ + $(am__append_17) $(am__append_20) $(am__append_23) \ + $(am__append_26) $(am__append_29) $(am__append_32) \ + $(am__append_35) $(am__append_38) $(am__append_41) \ + $(am__append_44) hw_cpu hw_misc hw_sound hw_video tremor \ + mpcdec sound +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_builddir)/include/blip -I$(top_srcdir)/intl -I$(top_srcdir) +mednafen_SOURCES = debug.cpp error.cpp mempatcher.cpp settings.cpp \ + endian.cpp mednafen.cpp file.cpp general.cpp md5.cpp \ + memory.cpp netplay.cpp state.cpp movie.cpp player.cpp \ + PSFLoader.cpp tests.cpp qtrecord.cpp cdplay.cpp okiadpcm.cpp \ + FileWrapper.cpp Stream.cpp MemoryStream.cpp FileStream.cpp \ + $(am__append_1) cdrom/audioreader.cpp cdrom/cdromif.cpp \ + cdrom/scsicd.cpp cdrom/pcecd.cpp cdrom/CDUtility.cpp \ + cdrom/crc32.cpp cdrom/galois.cpp cdrom/l-ec.cpp \ + cdrom/recover-raw.cpp cdrom/lec.cpp cdrom/CDAccess.cpp \ + cdrom/CDAccess_Image.cpp $(am__append_47) compress/minilzo.c \ + compress/quicklz.c compress/blz.cpp compress/ioapi.c \ + compress/unzip.c string/world_strtod.c string/escape.cpp \ + string/ConvertUTF.cpp video/surface.cpp video/font-data.cpp \ + video/font-data-18x18.c video/font-data-12x13.c video/png.cpp \ + video/primitives.cpp video/text.cpp video/video.cpp \ + video/tblur.cpp video/selblur.cpp video/resize.cpp \ + video/Deinterlacer.cpp resampler/resample.c cputest/cputest.c \ + $(am__append_48) $(am__append_49) +mednafen_LDADD = trio/libtrio.a drivers/libmdfnsdl.a \ + sexyal/libsexyal.a @SDL_LIBS@ demo/libdemo.a $(am__append_3) \ + $(am__append_6) $(am__append_9) $(am__append_12) \ + $(am__append_15) $(am__append_18) $(am__append_21) \ + $(am__append_24) $(am__append_27) $(am__append_30) \ + $(am__append_33) $(am__append_36) $(am__append_39) \ + $(am__append_42) $(am__append_45) hw_cpu/libmdfnhwcpu.a \ + hw_misc/libmdfnhwmisc.a hw_sound/libmdfnhwsound.a \ + hw_video/libmdfnhwvideo.a tremor/libvorbisidec.a \ + mpcdec/libmpcdec.a sound/libmdfnsound.a @LIBINTL@ @LIBICONV@ +mednafen_DEPENDENCIES = trio/libtrio.a drivers/libmdfnsdl.a \ + sexyal/libsexyal.a demo/libdemo.a $(am__append_4) \ + $(am__append_7) $(am__append_10) $(am__append_13) \ + $(am__append_16) $(am__append_19) $(am__append_22) \ + $(am__append_25) $(am__append_28) $(am__append_31) \ + $(am__append_34) $(am__append_37) $(am__append_40) \ + $(am__append_43) $(am__append_46) hw_cpu/libmdfnhwcpu.a \ + hw_misc/libmdfnhwmisc.a hw_sound/libmdfnhwsound.a \ + hw_video/libmdfnhwvideo.a tremor/libvorbisidec.a \ + mpcdec/libmpcdec.a sound/libmdfnsound.a +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/cdrom/Makefile.am.inc $(srcdir)/compress/Makefile.am.inc $(srcdir)/string/Makefile.am.inc $(srcdir)/video/Makefile.am.inc $(srcdir)/resampler/Makefile.am.inc $(srcdir)/cputest/Makefile.am.inc $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +cdrom/$(am__dirstamp): + @$(MKDIR_P) cdrom + @: > cdrom/$(am__dirstamp) +cdrom/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) cdrom/$(DEPDIR) + @: > cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/audioreader.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/cdromif.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/scsicd.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/pcecd.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/CDUtility.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/crc32.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/galois.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/l-ec.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/recover-raw.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/lec.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/CDAccess.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/CDAccess_Image.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +cdrom/CDAccess_Physical.$(OBJEXT): cdrom/$(am__dirstamp) \ + cdrom/$(DEPDIR)/$(am__dirstamp) +compress/$(am__dirstamp): + @$(MKDIR_P) compress + @: > compress/$(am__dirstamp) +compress/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) compress/$(DEPDIR) + @: > compress/$(DEPDIR)/$(am__dirstamp) +compress/minilzo.$(OBJEXT): compress/$(am__dirstamp) \ + compress/$(DEPDIR)/$(am__dirstamp) +compress/quicklz.$(OBJEXT): compress/$(am__dirstamp) \ + compress/$(DEPDIR)/$(am__dirstamp) +compress/blz.$(OBJEXT): compress/$(am__dirstamp) \ + compress/$(DEPDIR)/$(am__dirstamp) +compress/ioapi.$(OBJEXT): compress/$(am__dirstamp) \ + compress/$(DEPDIR)/$(am__dirstamp) +compress/unzip.$(OBJEXT): compress/$(am__dirstamp) \ + compress/$(DEPDIR)/$(am__dirstamp) +string/$(am__dirstamp): + @$(MKDIR_P) string + @: > string/$(am__dirstamp) +string/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) string/$(DEPDIR) + @: > string/$(DEPDIR)/$(am__dirstamp) +string/world_strtod.$(OBJEXT): string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +string/escape.$(OBJEXT): string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +string/ConvertUTF.$(OBJEXT): string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +video/$(am__dirstamp): + @$(MKDIR_P) video + @: > video/$(am__dirstamp) +video/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) video/$(DEPDIR) + @: > video/$(DEPDIR)/$(am__dirstamp) +video/surface.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/font-data.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/font-data-18x18.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/font-data-12x13.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/png.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/primitives.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/text.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/video.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/tblur.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/selblur.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/resize.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +video/Deinterlacer.$(OBJEXT): video/$(am__dirstamp) \ + video/$(DEPDIR)/$(am__dirstamp) +resampler/$(am__dirstamp): + @$(MKDIR_P) resampler + @: > resampler/$(am__dirstamp) +resampler/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) resampler/$(DEPDIR) + @: > resampler/$(DEPDIR)/$(am__dirstamp) +resampler/resample.$(OBJEXT): resampler/$(am__dirstamp) \ + resampler/$(DEPDIR)/$(am__dirstamp) +cputest/$(am__dirstamp): + @$(MKDIR_P) cputest + @: > cputest/$(am__dirstamp) +cputest/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) cputest/$(DEPDIR) + @: > cputest/$(DEPDIR)/$(am__dirstamp) +cputest/cputest.$(OBJEXT): cputest/$(am__dirstamp) \ + cputest/$(DEPDIR)/$(am__dirstamp) +cputest/x86_cpu.$(OBJEXT): cputest/$(am__dirstamp) \ + cputest/$(DEPDIR)/$(am__dirstamp) +cputest/ppc_cpu.$(OBJEXT): cputest/$(am__dirstamp) \ + cputest/$(DEPDIR)/$(am__dirstamp) +mednafen$(EXEEXT): $(mednafen_OBJECTS) $(mednafen_DEPENDENCIES) + @rm -f mednafen$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(mednafen_OBJECTS) $(mednafen_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f cdrom/CDAccess.$(OBJEXT) + -rm -f cdrom/CDAccess_Image.$(OBJEXT) + -rm -f cdrom/CDAccess_Physical.$(OBJEXT) + -rm -f cdrom/CDUtility.$(OBJEXT) + -rm -f cdrom/audioreader.$(OBJEXT) + -rm -f cdrom/cdromif.$(OBJEXT) + -rm -f cdrom/crc32.$(OBJEXT) + -rm -f cdrom/galois.$(OBJEXT) + -rm -f cdrom/l-ec.$(OBJEXT) + -rm -f cdrom/lec.$(OBJEXT) + -rm -f cdrom/pcecd.$(OBJEXT) + -rm -f cdrom/recover-raw.$(OBJEXT) + -rm -f cdrom/scsicd.$(OBJEXT) + -rm -f compress/blz.$(OBJEXT) + -rm -f compress/ioapi.$(OBJEXT) + -rm -f compress/minilzo.$(OBJEXT) + -rm -f compress/quicklz.$(OBJEXT) + -rm -f compress/unzip.$(OBJEXT) + -rm -f cputest/cputest.$(OBJEXT) + -rm -f cputest/ppc_cpu.$(OBJEXT) + -rm -f cputest/x86_cpu.$(OBJEXT) + -rm -f resampler/resample.$(OBJEXT) + -rm -f string/ConvertUTF.$(OBJEXT) + -rm -f string/escape.$(OBJEXT) + -rm -f string/world_strtod.$(OBJEXT) + -rm -f video/Deinterlacer.$(OBJEXT) + -rm -f video/font-data-12x13.$(OBJEXT) + -rm -f video/font-data-18x18.$(OBJEXT) + -rm -f video/font-data.$(OBJEXT) + -rm -f video/png.$(OBJEXT) + -rm -f video/primitives.$(OBJEXT) + -rm -f video/resize.$(OBJEXT) + -rm -f video/selblur.$(OBJEXT) + -rm -f video/surface.$(OBJEXT) + -rm -f video/tblur.$(OBJEXT) + -rm -f video/text.$(OBJEXT) + -rm -f video/video.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileStream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileWrapper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemoryStream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSFLoader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdplay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dis6502.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endian.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/general.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mednafen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempatcher.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netplay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/okiadpcm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtrecord.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settings.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess_Image.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess_Physical.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDUtility.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/audioreader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/cdromif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/crc32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/galois.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/l-ec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/lec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/pcecd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/recover-raw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/scsicd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/blz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/ioapi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/minilzo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/quicklz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/unzip.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/cputest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/ppc_cpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/x86_cpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@resampler/$(DEPDIR)/resample.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/ConvertUTF.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/escape.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/world_strtod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data-12x13.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data-18x18.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/png.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/primitives.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/resize.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/selblur.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/surface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/tblur.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/text.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/video.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f cdrom/$(DEPDIR)/$(am__dirstamp) + -rm -f cdrom/$(am__dirstamp) + -rm -f compress/$(DEPDIR)/$(am__dirstamp) + -rm -f compress/$(am__dirstamp) + -rm -f cputest/$(DEPDIR)/$(am__dirstamp) + -rm -f cputest/$(am__dirstamp) + -rm -f resampler/$(DEPDIR)/$(am__dirstamp) + -rm -f resampler/$(am__dirstamp) + -rm -f string/$(DEPDIR)/$(am__dirstamp) + -rm -f string/$(am__dirstamp) + -rm -f video/$(DEPDIR)/$(am__dirstamp) + -rm -f video/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) cdrom/$(DEPDIR) compress/$(DEPDIR) cputest/$(DEPDIR) resampler/$(DEPDIR) string/$(DEPDIR) video/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) cdrom/$(DEPDIR) compress/$(DEPDIR) cputest/$(DEPDIR) resampler/$(DEPDIR) string/$(DEPDIR) video/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags ctags-recursive distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am \ + uninstall-binPROGRAMS + + +#if ARCH_ARM +#mednafen_SOURCES += cputest/arm_cpu.c +#endif + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/MemoryStream.cpp b/libmednahawk/src/MemoryStream.cpp new file mode 100644 index 0000000000..4502da3d56 --- /dev/null +++ b/libmednahawk/src/MemoryStream.cpp @@ -0,0 +1,257 @@ +#include "MemoryStream.h" +#include + +/* + TODO: + Write and Seek expansion that fail should not corrupt the state. + + Copy and assignment constructor fixes. +*/ + +// TODO 128-bit integers for range checking? + + +MemoryStream::MemoryStream() : data_buffer(NULL), data_buffer_size(0), data_buffer_alloced(0), position(0) +{ + data_buffer_size = 0; + data_buffer_alloced = 64; + if(!(data_buffer = (uint8*)realloc(data_buffer, data_buffer_alloced))) + throw MDFN_Error(ErrnoHolder(errno)); +} + +MemoryStream::MemoryStream(uint64 size_hint) : data_buffer(NULL), data_buffer_size(0), data_buffer_alloced(0), position(0) +{ + data_buffer_size = 0; + data_buffer_alloced = (size_hint > SIZE_MAX) ? SIZE_MAX : size_hint; + + if(!(data_buffer = (uint8*)realloc(data_buffer, data_buffer_alloced))) + throw MDFN_Error(ErrnoHolder(errno)); +} + +MemoryStream::MemoryStream(Stream *stream) : data_buffer(NULL), data_buffer_size(0), data_buffer_alloced(0), position(0) +{ + try + { + if((position = stream->tell()) != 0) + stream->seek(0, SEEK_SET); + + data_buffer_size = stream->size(); + data_buffer_alloced = data_buffer_size; + if(!(data_buffer = (uint8*)realloc(data_buffer, data_buffer_alloced))) + throw MDFN_Error(ErrnoHolder(errno)); + + stream->read(data_buffer, data_buffer_size); + + stream->close(); + } + catch(...) + { + if(data_buffer) + { + free(data_buffer); + data_buffer = NULL; + } + + delete stream; + throw; + } + delete stream; +} + +MemoryStream::MemoryStream(const MemoryStream &zs) +{ + data_buffer_size = zs.data_buffer_size; + data_buffer_alloced = zs.data_buffer_alloced; + if(!(data_buffer = (uint8*)malloc(data_buffer_alloced))) + throw MDFN_Error(ErrnoHolder(errno)); + + memcpy(data_buffer, zs.data_buffer, data_buffer_size); + + position = zs.position; +} + +#if 0 +MemoryStream & MemoryStream::operator=(const MemoryStream &zs) +{ + if(this != &zs) + { + if(data_buffer) + { + free(data_buffer); + data_buffer = NULL; + } + + data_buffer_size = zs.data_buffer_size; + data_buffer_alloced = zs.data_buffer_alloced; + + if(!(data_buffer = (uint8*)malloc(data_buffer_alloced))) + throw MDFN_Error(ErrnoHolder(errno)); + + memcpy(data_buffer, zs.data_buffer, data_buffer_size); + + position = zs.position; + } + return(*this); +} +#endif + +MemoryStream::~MemoryStream() +{ + if(data_buffer) + { + free(data_buffer); + data_buffer = NULL; + } +} + +uint64 MemoryStream::attributes(void) +{ + return (ATTRIBUTE_READABLE | ATTRIBUTE_WRITEABLE | ATTRIBUTE_SEEKABLE); +} + + +uint8 *MemoryStream::map(void) +{ + return data_buffer; +} + +void MemoryStream::unmap(void) +{ + +} + + +INLINE void MemoryStream::grow_if_necessary(uint64 new_required_size) +{ + if(new_required_size > data_buffer_size) + { + if(new_required_size > data_buffer_alloced) + { + uint64 new_required_alloced = round_up_pow2(new_required_size); + uint8 *new_data_buffer; + + // first condition will happen at new_required_size > (1ULL << 63) due to round_up_pow2() "wrapping". + // second condition can occur when running on a 32-bit system. + if(new_required_alloced < new_required_size || new_required_alloced > SIZE_MAX) + new_required_alloced = SIZE_MAX; + + // If constrained alloc size isn't enough, throw an out-of-memory/address-space type error. + if(new_required_alloced < new_required_size) + throw MDFN_Error(ErrnoHolder(ENOMEM)); + + if(!(new_data_buffer = (uint8*)realloc(data_buffer, new_required_alloced))) + throw MDFN_Error(ErrnoHolder(errno)); + + // + // Assign all in one go after the realloc() so we don't leave our object in an inconsistent state if the realloc() fails. + // + data_buffer = new_data_buffer; + data_buffer_size = new_required_size; + data_buffer_alloced = new_required_alloced; + } + else + data_buffer_size = new_required_size; + } +} + +uint64 MemoryStream::read(void *data, uint64 count, bool error_on_eos) +{ + if(count > data_buffer_size) + { + if(error_on_eos) + throw MDFN_Error(0, _("EOF")); + + count = data_buffer_size; + } + + if((uint64)position > (data_buffer_size - count)) + { + if(error_on_eos) + throw MDFN_Error(0, _("EOF")); + + count = data_buffer_size - position; + } + + memmove(data, &data_buffer[position], count); + position += count; + + return count; +} + +void MemoryStream::write(const void *data, uint64 count) +{ + uint64 nrs = position + count; + + if(nrs < position) + throw MDFN_Error(ErrnoHolder(EFBIG)); + + grow_if_necessary(nrs); + + memmove(&data_buffer[position], data, count); + position += count; +} + +void MemoryStream::seek(int64 offset, int whence) +{ + int64 new_position; + + switch(whence) + { + default: + throw MDFN_Error(ErrnoHolder(EINVAL)); + break; + + case SEEK_SET: + new_position = offset; + break; + + case SEEK_CUR: + new_position = position + offset; + break; + + case SEEK_END: + new_position = data_buffer_size + offset; + break; + } + + if(new_position < 0) + throw MDFN_Error(ErrnoHolder(EINVAL)); + else + grow_if_necessary(new_position); + + position = new_position; +} + +int64 MemoryStream::tell(void) +{ + return position; +} + +int64 MemoryStream::size(void) +{ + return data_buffer_size; +} + +void MemoryStream::close(void) +{ + +} + + +int MemoryStream::get_line(std::string &str) +{ + str.clear(); // or str.resize(0)?? + + while(position < data_buffer_size) + { + uint8 c = data_buffer[position++]; + + if(c == '\r' || c == '\n' || c == 0) + return(c); + + str.push_back(c); // Should be faster than str.append(1, c) + } + + return(-1); +} + diff --git a/libmednahawk/src/MemoryStream.h b/libmednahawk/src/MemoryStream.h new file mode 100644 index 0000000000..29d5e3fa9e --- /dev/null +++ b/libmednahawk/src/MemoryStream.h @@ -0,0 +1,70 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO/WIP + +#include "Stream.h" + +class MemoryStream : public Stream +{ + public: + + MemoryStream(); + MemoryStream(uint64 size_hint); + MemoryStream(Stream *stream); // Will create a MemoryStream equivalent of the contents of "stream", and then "delete stream". + // Will only work if stream->tell() == 0, or if "stream" is seekable. + // stream will be deleted even if this constructor throws. + + MemoryStream(const MemoryStream &zs); + MemoryStream & operator=(const MemoryStream &zs); + +#if 0 + enum GrowMode + { + GROWMODE_POW2 = 0, + GROWMODE_ + }; + + void set_grow_mode( +#endif + + virtual ~MemoryStream(); + + virtual uint64 attributes(void); + + virtual uint8 *map(void); + virtual void unmap(void); + + virtual uint64 read(void *data, uint64 count, bool error_on_eos = true); + virtual void write(const void *data, uint64 count); + virtual void seek(int64 offset, int whence); + virtual int64 tell(void); + virtual int64 size(void); + virtual void close(void); + + virtual int get_line(std::string &str); + + private: + uint8 *data_buffer; + uint64 data_buffer_size; + uint64 data_buffer_alloced; + + int64 position; + + void grow_if_necessary(uint64 new_required_size); +}; + diff --git a/libmednahawk/src/PSFLoader.cpp b/libmednahawk/src/PSFLoader.cpp new file mode 100644 index 0000000000..c2bf2c40b9 --- /dev/null +++ b/libmednahawk/src/PSFLoader.cpp @@ -0,0 +1,335 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* + TODO: + Time string parsing convenience functions. + + Character set autodetect heuristics and conversion for when the "utf8" tag is missing. +*/ +#include "mednafen.h" +#include "PSFLoader.h" +#include "endian.h" +#include "general.h" + +#include +#include +#include +//#include + + +PSFTags::PSFTags() +{ + + +} + +PSFTags::~PSFTags() +{ + +} + +void PSFTags::AddTag(char *tag_line) +{ + char *eq; + + // Transform 0x01-0x1F -> 0x20 + for(unsigned int i = 0; i < strlen(tag_line); i++) + if((unsigned char)tag_line[i] < 0x20) + tag_line[i] = 0x20; + + eq = strchr(tag_line, '='); + + if(eq) + { + *eq = 0; + + MDFN_trim(tag_line); + MDFN_trim(eq + 1); + + for(unsigned int i = 0; i < strlen(tag_line); i++) + tag_line[i] = tolower(tag_line[i]); + + if(TagExists(tag_line)) + tags[tag_line] = tags[std::string(tag_line)] + std::string(1, '\n') + std::string(eq + 1); + else + tags[tag_line] = std::string(eq + 1); + } +} + +#if 0 +static const char *DetectCharset(const uint8 *data, const uint32 data_size) +{ + static const char *TestCharsets[] = { "UTF-8", /*"SJIS",*/ "WINDOWS-1252" }; + + for(unsigned int i = 0; i < sizeof(TestCharsets) / sizeof(TestCharsets[0]); i++) + { + iconv_t cd; + + cd = iconv_open("UTF-32", TestCharsets[i]); + if(cd != (iconv_t)-1) + { + size_t in_len = data_size; + size_t out_len = data_size * 4 + 4; + char *in_ptr = (char *)data; + char *const out_ptr_mem = new char[out_len]; + char *out_ptr = out_ptr_mem; + + if(iconv(cd, (ICONV_CONST char **)&in_ptr, &in_len, &out_ptr, &out_len) != (size_t)-1) + { + delete[] out_ptr_mem; + return(TestCharsets[i]); + } + delete[] out_ptr_mem; + } + } + + return(NULL); +} +#endif + +void PSFTags::LoadTags(const uint8 *data_in, uint32 size) +{ + std::vector tags_heap; + char *data; + char *spos; + //const char *detected_charset = DetectCharset(data_in, size); + + tags_heap.resize(size + 1); + tags_heap[size] = 0; + + memcpy(&tags_heap[0], data_in, size); + + data = &tags_heap[0]; + spos = data; + + while(size) + { + if(*data == 0x0A || *data == 0x00) + { + *data = 0; + + if(data - spos) + { + if(*(data - 1) == 0xD) // handle \r + *(data - 1) = 0; + + AddTag(spos); + } + + spos = data + 1; // Skip \n for next tag + } + + size--; + data++; + } + +} + +int64 PSFTags::GetTagI(const char *name) +{ + std::map::iterator it; + + it = tags.find(name); + if(it != tags.end()) + { + long long ret = 0; + std::string &tmp = tags[name]; + + trio_sscanf(tmp.c_str(), "%lld", &ret); + + return(ret); + } + return(0); // INT64_MIN +} + +bool PSFTags::TagExists(const char *name) +{ + if(tags.find(name) != tags.end()) + return(true); + + return(false); +} + + +std::string PSFTags::GetTag(const char *name) +{ + std::map::iterator it; + + it = tags.find(name); + + if(it != tags.end()) + return(it->second); + + return(""); +} + +void PSFTags::EraseTag(const char *name) +{ + std::map::iterator it; + + it = tags.find(name); + if(it != tags.end()) + tags.erase(it); +} + +PSFLoader::PSFLoader() +{ + + +} + +PSFLoader::~PSFLoader() +{ + + +} + +bool PSFLoader::TestMagic(uint8 version, MDFNFILE *fp) +{ + if(fp->size < (3 + 1 + 4 + 4 + 4)) + return(false); + + if(memcmp(fp->data, "PSF", 3)) + return(false); + + if(fp->data[3] != version) + return(false); + + return(true); +} + +PSFTags PSFLoader::LoadInternal(uint8 version, uint32 max_exe_size, MDFNFILE *fp, uint32 level, bool force_ignore_pcsp) +{ + uint32 reserved_size, compressed_size, compressed_crc32; + bool _lib_present = false; + PSFTags tags; + + std::vector decompress_buffer; + uLongf decompress_len; + + if(!TestMagic(version, fp)) + throw(MDFN_Error(0, _("Not a PSF(version=0x%02x) file!"), version)); + + reserved_size = MDFN_de32lsb(fp->data + 4); + compressed_size = MDFN_de32lsb(fp->data + 8); + compressed_crc32 = MDFN_de32lsb(fp->data + 12); + + if(fp->size < (16 + reserved_size + compressed_size)) + throw(MDFN_Error(0, _("PSF is missing at least %u bytes of data!"), 16 + reserved_size + compressed_size - fp->size)); + + if(crc32(0, fp->data + 16 + reserved_size, compressed_size) != compressed_crc32) + throw(MDFN_Error(0, _("PSF compressed CRC32 mismatch(data is corrupt)!"))); + + + { + const uint8 *tag_section = fp->data + 16 + reserved_size + compressed_size; + uint32 tag_section_size = fp->size - 16 - reserved_size - compressed_size; + + if(tag_section_size > 5 && !memcmp(tag_section, "[TAG]", 5)) + tags.LoadTags(tag_section + 5, tag_section_size - 5); + } + + // + // Handle minipsf simple _lib + // + + if(level < 15) + { + if(tags.TagExists("_lib")) + { + std::string tp = tags.GetTag("_lib"); + + if(!MDFN_IsFIROPSafe(tp)) + { + throw(MDFN_Error(0, _("Referenced path \"%s\" is potentially unsafe. See \"filesys.untrusted_fip_check\" setting."), tp.c_str())); + } + + MDFNFILE subfile(MDFN_MakeFName(MDFNMKF_AUX, 0, tp.c_str()).c_str(), NULL, NULL); + + LoadInternal(version, max_exe_size, &subfile, level + 1); + + _lib_present = true; + } + } + + // + // + // + + decompress_buffer.resize(max_exe_size); + decompress_len = max_exe_size; + switch( uncompress((Bytef *)&decompress_buffer[0], &decompress_len, (const Bytef *)(fp->data + 16 + reserved_size), compressed_size) ) + { + default: + throw(MDFN_Error(0, "zlib unknown error")); + + case Z_OK: break; + + case Z_MEM_ERROR: + throw(MDFN_Error(0, "zlib Z_MEM_ERROR")); + + case Z_BUF_ERROR: + throw(MDFN_Error(0, _("PSF decompressed size exceeds maximum allowed!"))); + + case Z_DATA_ERROR: + throw(MDFN_Error(0, _("PSF compressed data is bad."))); + } + + HandleReserved(fp->data + 16, reserved_size); + HandleEXE(&decompress_buffer[0], decompress_len, force_ignore_pcsp | _lib_present); + decompress_buffer.resize(0); + + // + // handle libN + // + if(level < 15) + { + for(unsigned int n = 2; n <= INT_MAX; n++) + { + char tmpbuf[32]; + + trio_snprintf(tmpbuf, 32, "_lib%d", (int)n); + + if(tags.TagExists(tmpbuf)) + { + MDFNFILE subfile(MDFN_MakeFName(MDFNMKF_AUX, 0, tags.GetTag(tmpbuf).c_str()).c_str(), NULL, NULL); + + LoadInternal(version, max_exe_size, &subfile, level + 1, true); + } + else + break; + } + } + + return(tags); +} + +PSFTags PSFLoader::Load(uint8 version, uint32 max_exe_size, MDFNFILE *fp) +{ + return(LoadInternal(version, max_exe_size, fp, 0, false)); +} + +void PSFLoader::HandleReserved(const uint8 *data, uint32 len) +{ + +} + +void PSFLoader::HandleEXE(const uint8 *data, uint32 len, bool ignore_pcsp) +{ + +} + diff --git a/libmednahawk/src/PSFLoader.h b/libmednahawk/src/PSFLoader.h new file mode 100644 index 0000000000..ceaa7b54fd --- /dev/null +++ b/libmednahawk/src/PSFLoader.h @@ -0,0 +1,49 @@ +#ifndef __MDFN_PSFLOADER_H +#define __MDFN_PSFLOADER_H + +#include +#include +#include +#include + +class PSFTags +{ + public: + + PSFTags(); + ~PSFTags(); + + int64 GetTagI(const char *name); + std::string GetTag(const char *name); + bool TagExists(const char *name); + + void LoadTags(const uint8 *data, uint32 size); + void EraseTag(const char *name); + + + private: + + void AddTag(char *tag_line); + std::map tags; +}; + +class PSFLoader +{ + public: + PSFLoader(); + ~PSFLoader(); + + static bool TestMagic(uint8 version, MDFNFILE *fp); + + PSFTags Load(uint8 version, uint32 max_exe_size, MDFNFILE *fp); + + virtual void HandleReserved(const uint8 *data, uint32 len); + virtual void HandleEXE(const uint8 *data, uint32 len, bool ignore_pcsp = false); + + private: + + PSFTags LoadInternal(uint8 version, uint32 max_exe_size, MDFNFILE *fp, uint32 level, bool force_ignore_pcsp = false); +}; + + +#endif diff --git a/libmednahawk/src/Stream.cpp b/libmednahawk/src/Stream.cpp new file mode 100644 index 0000000000..58b59b6650 --- /dev/null +++ b/libmednahawk/src/Stream.cpp @@ -0,0 +1,126 @@ +// TODO/WIP + +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "Stream.h" + +#include + +Stream::Stream() +{ + +} + +Stream::~Stream() +{ + +} + +void Stream::printf(const char *format, ...) +{ + char *str = NULL; + int rc; + + va_list ap; + + va_start(ap, format); + + rc = trio_vasprintf(&str, format, ap); + + va_end(ap); + + if(rc < 0) + throw MDFN_Error(0, "Error in trio_vasprintf()"); + else + { + try // Bleck + { + write(str, rc); + } + catch(...) + { + free(str); + throw; + } + free(str); + } +} + +#if 0 +int Stream::scanf(const char *format, ...) +{ + + +} + +void Stream::printf(const char *format, ...) +{ + +} + +void Stream::put_string(const char *str) +{ + write(str, strlen(str)); +} + +void Stream::put_string(const std::string &str) +{ + write(str.data(), str.size()); +} +#endif + +int Stream::get_line(std::string &str) +{ + uint8 c; + + str.clear(); // or str.resize(0)?? + + while(read(&c, sizeof(c), false) > 0) + { + if(c == '\r' || c == '\n' || c == 0) + return(c); + + str.push_back(c); + } + + return(-1); +} + +StreamFilter::StreamFilter() +{ + target_stream = NULL; +} + +StreamFilter::StreamFilter(Stream *target_arg) +{ + target_stream = target_arg; +} + +StreamFilter::~StreamFilter() +{ + if(target_stream) + delete target_stream; +} + +Stream* StreamFilter::steal(void) +{ + Stream *ret = target_stream; + target_stream = NULL; + return ret; +} diff --git a/libmednahawk/src/Stream.h b/libmednahawk/src/Stream.h new file mode 100644 index 0000000000..093439f5cc --- /dev/null +++ b/libmednahawk/src/Stream.h @@ -0,0 +1,188 @@ +#ifndef __MDFN_STREAM_H +#define __MDFN_STREAM_H + +// TODO/WIP + +// TODO?: BufferedStream, no virtual functions, yes inline functions, constructor takes a Stream* argument. + +#include "mednafen.h" +#include + +#include // For SEEK_* defines, which we will use in Stream out of FORCE OF HABIT. + +class Stream +{ + public: + + Stream(); + virtual ~Stream(); + + enum + { + ATTRIBUTE_READABLE = 0, + ATTRIBUTE_WRITEABLE, + ATTRIBUTE_SEEKABLE + }; + virtual uint64 attributes(void) = 0; + + virtual uint8 *map(void) = 0; // Map the entirety of the stream data into the address space of the process, if possible, and return a pointer. + // (the returned pointer must be cached, and returned on any subsequent calls to map() without an unmap() + // in-between, to facilitate a sort of "feature-testing", to determine if an alternative like "MemoryStream" + // should be used). + + virtual void unmap(void) = 0; // Unmap the stream data from the address space. (Possibly invalidating the pointer returned from map()). + // (must automatically be called, if necessary, from the destructor). + + virtual uint64 read(void *data, uint64 count, bool error_on_eos = true) = 0; + virtual void write(const void *data, uint64 count) = 0; + + virtual void seek(int64 offset, int whence) = 0; + virtual int64 tell(void) = 0; + virtual int64 size(void) = 0; + virtual void close(void) = 0; // Flushes(in the case of writeable streams) and closes the stream. + // Necessary since this operation can fail(running out of disk space, for instance), + // and throw an exception in the destructor would be a Bad Idea(TM). + // + // Manually calling this function isn't strictly necessary, but recommended when the + // stream is writeable; it will be called automatically from the destructor, with any + // exceptions thrown caught and logged. + + // + // Utility functions(TODO): + // + INLINE uint8 get_u8(void) + { + uint8 ret; + + read(&ret, sizeof(ret)); + + return ret; + } + + INLINE void put_u8(uint8 c) + { + write(&c, sizeof(c)); + } + + + template + INLINE T get_NE(void) + { + T ret; + + read(&ret, sizeof(ret)); + + return ret; + } + + template + INLINE void put_NE(T c) + { + write(&c, sizeof(c)); + } + + + template + INLINE T get_RE(void) + { + uint8 tmp[sizeof(T)]; + T ret = 0; + + read(tmp, sizeof(tmp)); + + for(unsigned i = 0; i < sizeof(T); i++) + ret |= (T)tmp[i] << (i * 8); + + return ret; + } + + template + INLINE void put_RE(T c) + { + uint8 tmp[sizeof(T)]; + + for(unsigned i = 0; i < sizeof(T); i++) + tmp[i] = ((uint8 *)&c)[sizeof(T) - 1 - i]; + + write(tmp, sizeof(tmp)); + } + + template + INLINE T get_LE(void) + { + #ifdef LSB_FIRST + return get_NE(); + #else + return get_RE(); + #endif + } + + template + INLINE void put_LE(T c) + { + #ifdef LSB_FIRST + return put_NE(c); + #else + return put_RE(c); + #endif + } + + template + INLINE T get_BE(void) + { + #ifndef LSB_FIRST + return get_NE(); + #else + return get_RE(); + #endif + } + + template + INLINE void put_BE(T c) + { + #ifndef LSB_FIRST + return put_NE(c); + #else + return put_RE(c); + #endif + } + + // Reads a line into "str", overwriting its contents; returns the line-end char('\n' or '\r' or '\0'), or -1 on EOF. + // The line-end char won't be added to "str". + // It's up to the caller to handle extraneous empty lines caused by DOS-format text lines(\r\n). + // ("str" is passed by reference for the possibility of improved performance by reusing alloced memory for the std::string, though part + // of it would be up to the STL implementation). + // Implemented as virtual so that a higher-performance version can be implemented if possible(IE with MemoryStream) + virtual int get_line(std::string &str); + virtual void printf(const char *format, ...) MDFN_FORMATSTR(printf, 2, 3); + +#if 0 + int scanf(const char *format, ...) MDFN_FORMATSTR(scanf, 2, 3); + void put_string(const char *str); + void put_string(const std::string &str); +#endif +}; + +// StreamFilter takes ownership of the Stream pointer passed, and will delete it in its destructor. +class StreamFilter : public Stream +{ + public: + + StreamFilter(); + StreamFilter(Stream *target_arg); + virtual ~StreamFilter(); + + virtual uint64 read(void *data, uint64 count, bool error_on_eos = true) = 0; + virtual void write(const void *data, uint64 count) = 0; + virtual void seek(int64 offset, int whence) = 0; + virtual int64 tell(void) = 0; + virtual int64 size(void) = 0; + virtual void close(void) = 0; + + virtual Stream *steal(void); + + private: + Stream *target_stream; +}; + +#endif diff --git a/libmednahawk/src/cdplay.cpp b/libmednahawk/src/cdplay.cpp new file mode 100644 index 0000000000..e073119d67 --- /dev/null +++ b/libmednahawk/src/cdplay.cpp @@ -0,0 +1,589 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +//#include +#include "mednafen.h" +#include "cdrom/cdromif.h" +#include "netplay.h" +#include +#include +#include +#include + +using namespace CDUtility; + +#include + +namespace MDFN_IEN_CDPLAY +{ + +static std::vector sqrt_lut; //[65536]; +static std::vector sin_lut; //[65536]; +static SpeexResamplerState *resampler = NULL; + +static uint8 *controller_ptr; +static uint8 last_controller; + +enum +{ + PLAYMODE_PAUSE = -1, + PLAYMODE_STOP = 0, + PLAYMODE_PLAY = 1, + PLAYMODE_SCAN_FORWARD = 2, + PLAYMODE_SCAN_REVERSE = 3, +}; + +static int PlayMode; +static int32 PlaySector; +static int16 CDDABuffer[588 * 2]; + +static int16 ResampBuffer[588 * 2][2]; // Resampler input buffer, * 2 for resampler leftovers +static uint32 ResampBufferPos; +static uint32 PrevRate; + +static std::vector *cdifs; + +static int32 CurrentATLI; + +struct AudioTrackInfo +{ + inline AudioTrackInfo(unsigned disc_, int32 track_, int32 lba_, int32 final_lba_) + { + disc = disc_; + track = track_; + lba = lba_; + final_lba = final_lba_; + } + + unsigned disc; + int32 track; + int32 lba; + int32 final_lba; // Inclusive. +}; + +static std::vector AudioTrackList; + +static void InitLUT(void); + +static int LoadCD(std::vector *CDInterfaces) +{ + cdifs = CDInterfaces; + + AudioTrackList.clear(); + + for(unsigned disc = 0; disc < cdifs->size(); disc++) + { + TOC toc; + + (*cdifs)[disc]->ReadTOC(&toc); + + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(!(toc.tracks[track].control & 0x4)) + { + AudioTrackList.push_back(AudioTrackInfo(disc, track, toc.tracks[track].lba, toc.tracks[track + 1].lba - 1)); + } + } + } + + if(!AudioTrackList.size()) + { + puts("Audio track doesn't exist"); + return(0); + } + + CurrentATLI = 0; + PlaySector = AudioTrackList[CurrentATLI].lba; + PlayMode = PLAYMODE_PLAY; //STOP; + + { + int err; + resampler = speex_resampler_init(2, 44100, (int)48000, 5, &err); + PrevRate = 48000; + } + //resampler.buffer_size(588 * 2 + 100); + //resampler.time_ratio((double)44100 / 48000, 0.9965); + ResampBufferPos = 0; + + InitLUT(); + + return(1); +} + +static bool TestMagicCD(std::vector *CDInterfaces) +{ + CDUtility::TOC magic_toc; + + for(unsigned i = 0; i < CDInterfaces->size(); i++) + { + (*CDInterfaces)[i]->ReadTOC(&magic_toc); + + // If any audio track is found, return true. + for(int32 track = magic_toc.first_track; track <= magic_toc.last_track; track++) + if(!(magic_toc.tracks[track].control & 0x4)) + return(true); + } + + return(false); +} + +static void CloseGame(void) +{ + if(resampler) + { + speex_resampler_destroy(resampler); + resampler = NULL; + } + sin_lut.resize(0); + sqrt_lut.resize(0); +} + +static uint8 SubQBuf[3][0xC]; + +static void GenSubQFromSubPW(uint8 *SubPWBuf) +{ + uint8 sq[0xC]; + + memset(sq, 0, 0xC); + + for(int i = 0; i < 96; i++) + sq[i >> 3] |= ((SubPWBuf[i] & 0x40) >> 6) << (7 - (i & 7)); + + if(!subq_check_checksum(sq)) + puts("SubQ checksum error!"); + else + { + uint8 adr = sq[0] & 0xF; + + if(adr <= 0x3) + memcpy(SubQBuf[adr], sq, 0xC); + } +} +static const int lobes = 2; +static const int oversample_shift = 7; //1; //7; +static const int oversample = 1 << oversample_shift; +static const int oversample_mo = oversample - 1; + +static void InitLUT(void) +{ + sqrt_lut.resize(65536); + sin_lut.resize(65536); + + for(int i = 0; i < 65536; i++) + sqrt_lut[i] = sqrt((double)i / 65536); + + for(int i = 0; i < 65536; i++) + sin_lut[i] = sin((double)i * M_PI * 2 / 65536); +} + +static void Emulate(EmulateSpecStruct *espec) +{ + uint8 sector_buffer[2352 + 96]; + uint8 new_controller = *controller_ptr; + + espec->MasterCycles = 588; + + //printf("%d %d\n", toc.tracks[100].lba, AudioTrackList[AudioTrackList.size() - 1] + 1); + + if(PlaySector < AudioTrackList[CurrentATLI].lba) // Reverse-scanning handling. + { + if(CurrentATLI > 0) + { + CurrentATLI--; + PlaySector = AudioTrackList[CurrentATLI].final_lba; + } + else + { + CurrentATLI = 0; + PlayMode = PLAYMODE_STOP; + PlaySector = AudioTrackList[CurrentATLI].lba; + } + } + else if(PlaySector > AudioTrackList[CurrentATLI].final_lba) + { + if((CurrentATLI + 1) < AudioTrackList.size()) + CurrentATLI++; + else + { + CurrentATLI = 0; + PlayMode = PLAYMODE_STOP; + } + + PlaySector = AudioTrackList[CurrentATLI].lba; + } + + if(PlayMode == PLAYMODE_STOP || PlayMode == PLAYMODE_PAUSE) + { + //memset(CDDABuffer, 0, sizeof(CDDABuffer)); + for(int i = 0; i < 588; i++) + { + ResampBuffer[ResampBufferPos][0] = 0; + ResampBuffer[ResampBufferPos][1] = 0; + ResampBufferPos++; + } + } + else + { + (*cdifs)[AudioTrackList[CurrentATLI].disc]->ReadRawSector(sector_buffer, PlaySector); + GenSubQFromSubPW(sector_buffer + 2352); + + for(int i = 0; i < 588 * 2; i++) + { + CDDABuffer[i] = MDFN_de16lsb(§or_buffer[i * sizeof(int16)]); + + ResampBuffer[ResampBufferPos + (i >> 1)][i & 1] = CDDABuffer[i] / 2; + } + ResampBufferPos += 588; + } + + if(espec->SoundBuf) + { + if((int)espec->SoundRate == 44100) + { + memcpy(espec->SoundBuf, ResampBuffer, ResampBufferPos * 2 * sizeof(int16)); + espec->SoundBufSize = ResampBufferPos; + ResampBufferPos = 0; + } + else + { + spx_uint32_t in_len; + spx_uint32_t out_len; + + if(PrevRate != (uint32)espec->SoundRate) + { + speex_resampler_set_rate(resampler, 44100, (uint32)espec->SoundRate); + PrevRate = (uint32)espec->SoundRate; + } + + in_len = ResampBufferPos; + out_len = 524288; // FIXME, real size. + + speex_resampler_process_interleaved_int(resampler, (const spx_int16_t *)ResampBuffer, &in_len, (spx_int16_t *)espec->SoundBuf, &out_len); + + assert(in_len <= ResampBufferPos); + + if((ResampBufferPos - in_len) > 0) + memmove(ResampBuffer, ResampBuffer + in_len, (ResampBufferPos - in_len) * sizeof(int16) * 2); + + ResampBufferPos -= in_len; + + //printf("%d\n", ResampBufferPos); + assert((ResampBufferPos + 588) <= (sizeof(ResampBuffer) / sizeof(int16) / 2)); + + espec->SoundBufSize = out_len; + } + } +// for(int i = 0; i < espec->SoundBufSize * 2; i++) +// espec->SoundBuf[i] = (rand() & 0x7FFF) - 0x4000; //(rand() * 192) >> 8 + + if(!espec->skip) + { + char tmpbuf[256]; + const MDFN_PixelFormat &format = espec->surface->format; + uint32 *pixels = espec->surface->pixels; + uint32 text_color = format.MakeColor(0xE0, 0xE0, 0xE0); + uint32 text_shadow_color = format.MakeColor(0x20, 0x20, 0x20); + uint32 cur_sector = PlaySector; + + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + + espec->DisplayRect.w = 320; + espec->DisplayRect.h = 240; + + espec->surface->Fill(0, 0, 0, 0); + + { + uint32 color_table[256]; + + for(int i = 0; i < 170; i++) + { + int m = 255 * i / 170; + + color_table[i] = format.MakeColor(m, 0, m); + + //printf("%d %d %08x\n", m, i, color_table[i]); + } + + for(int i = 0; i < 588; i++) + { + int32 unip_samp; + int32 next_unip_samp; + + unip_samp = ((CDDABuffer[i * 2 + 0] + CDDABuffer[i * 2 + 1]) >> 1) + 32768; + next_unip_samp = ((CDDABuffer[(i * 2 + 2) % 1176] + CDDABuffer[(i * 2 + 3) % 1176]) >> 1) + 32768; + + for(int osi = 0; osi < oversample; osi++) + { + double sample; + int x; + int y; + double x_raw, y_raw; + double x_raw2, y_raw2; + double x_raw_prime, y_raw_prime; + + sample = (double)(unip_samp * (oversample - osi) + next_unip_samp * osi) / (oversample * 65536); + + int32 theta_i = (int64)65536 * (i * oversample + osi) / (oversample * 588); + int32 theta_i_alt = (int64)65536 * (i * oversample + osi) / (oversample * 588); + + double radius = sin_lut[(lobes * theta_i) & 0xFFFF]; // * sin_lut[(16384 + (theta_i)) & 0xFFFF]; + double radius2 = sin_lut[(lobes * (theta_i + 1)) & 0xFFFF]; // * sin_lut[(16384 + ((theta_i + 1))) & 0xFFFF]; + + x_raw = radius * sin_lut[(16384 + theta_i_alt) & 0xFFFF]; + y_raw = radius * sin_lut[theta_i_alt & 0xFFFF]; + + x_raw2 = radius2 * sin_lut[(16384 + theta_i_alt + 1) & 0xFFFF]; + y_raw2 = radius2 * sin_lut[(theta_i_alt + 1) & 0xFFFF]; + + // Approximation, of course. + x_raw_prime = (x_raw2 - x_raw) / (1 * M_PI * 2 / 65536); + y_raw_prime = (y_raw2 - y_raw) / (1 * M_PI * 2 / 65536); + +// printf("%f %f\n", y_raw_prime, sin_lut[(16384 + lobes * theta_i_alt) & 0xFFFF] + sin_lut[(16384 + theta_i_alt) & 0xFFFF]); + + if(x_raw_prime || y_raw_prime) + { + x_raw_prime = x_raw_prime / sqrt(x_raw_prime * x_raw_prime + y_raw_prime * y_raw_prime); + y_raw_prime = y_raw_prime / sqrt(x_raw_prime * x_raw_prime + y_raw_prime * y_raw_prime); + } + + x_raw += (sample - 0.5) * y_raw_prime / 2; + y_raw += (sample - 0.5) * -x_raw_prime / 2; + + x = 160 + 100 * x_raw; + y = 120 + 100 * y_raw; + + if((x >= 0 && x < 320) && (y >= 0 && y < 240)) + pixels[x + y * espec->surface->pitch32] = format.MakeColor(255, 255, 255); //color_table[(int)(sample * 150)]; //x * x + y * y; //format.MakeColor(sample * 255, 0, sample * 255); + } + } + } + + { + TOC toc; + + (*cdifs)[AudioTrackList[CurrentATLI].disc]->ReadTOC(&toc); + + trio_snprintf(tmpbuf, 256, "Disc: %d/%d", AudioTrackList[CurrentATLI].disc + 1, cdifs->size()); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + + trio_snprintf(tmpbuf, 256, "Track: %d/%d", AudioTrackList[CurrentATLI].track, toc.last_track); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + + trio_snprintf(tmpbuf, 256, "Sector: %d/%d", cur_sector, toc.tracks[100].lba - 1); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + } + + pixels += 22 * espec->surface->pitch32; + + + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)"SubQ", text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + + //trio_snprintf(tmpbuf, 256, "Q-Mode: %01x", SubQBuf[1][0] & 0xF); + //DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + //pixels += 22 * espec->surface->pitch32; + + trio_snprintf(tmpbuf, 256, "Track: %d", BCD_to_U8(SubQBuf[1][1])); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + + trio_snprintf(tmpbuf, 256, "Index: %d", BCD_to_U8(SubQBuf[1][2])); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + + + trio_snprintf(tmpbuf, 256, "Relative: %02d:%02d:%02d", BCD_to_U8(SubQBuf[1][3]), BCD_to_U8(SubQBuf[1][4]), BCD_to_U8(SubQBuf[1][5])); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + + trio_snprintf(tmpbuf, 256, "Absolute: %02d:%02d:%02d", BCD_to_U8(SubQBuf[1][7]), BCD_to_U8(SubQBuf[1][8]), BCD_to_U8(SubQBuf[1][9])); + DrawTextTransShadow(pixels, espec->surface->pitch32 * 4, 320, (UTF8 *)tmpbuf, text_color, text_shadow_color, 0, MDFN_FONT_9x18_18x18); + pixels += 22 * espec->surface->pitch32; + } + + if(PlayMode != PLAYMODE_STOP && PlayMode != PLAYMODE_PAUSE) + { + const int scan_amount = 4; //16; + + if(new_controller & 0x40) + PlaySector += scan_amount; + else if(new_controller & 0x80) + PlaySector -= scan_amount; + else + PlaySector++; + } + + if(!(last_controller & 0x1) && (new_controller & 1)) + { + PlayMode = (PlayMode == PLAYMODE_PLAY) ? PLAYMODE_PAUSE : PLAYMODE_PLAY; + } + + if(!(last_controller & 0x2) && (new_controller & 2)) // Stop + { + PlayMode = PLAYMODE_STOP; + PlaySector = AudioTrackList[CurrentATLI].lba; + } + + if(!(last_controller & 0x4) && (new_controller & 4)) + { + if(CurrentATLI < (AudioTrackList.size() - 1)) + CurrentATLI++; + + PlaySector = AudioTrackList[CurrentATLI].lba; + } + + if(!(last_controller & 0x8) && (new_controller & 8)) + { + if(CurrentATLI) + CurrentATLI--; + + PlaySector = AudioTrackList[CurrentATLI].lba; + } + + if(!(last_controller & 0x10) && (new_controller & 0x10)) + { + CurrentATLI = std::min(CurrentATLI + 10, AudioTrackList.size() - 1); + PlaySector = AudioTrackList[CurrentATLI].lba; + } + + if(!(last_controller & 0x20) && (new_controller & 0x20)) + { + CurrentATLI = std::max(CurrentATLI - 10, 0); + PlaySector = AudioTrackList[CurrentATLI].lba; + } + + + last_controller = new_controller; +} + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { NULL, NULL } +}; + +static void SetInput(int port, const char *type, void *ptr) +{ + controller_ptr = (uint8 *)ptr; +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFNNPCMD_POWER: + case MDFNNPCMD_RESET: break; + } +} + +static MDFNSetting CDPlaySettings[] = +{ + { NULL } +}; + +static const InputDeviceInputInfoStruct IDII[] = +{ + { "play_pause", "Play/Pause", 0, IDIT_BUTTON, NULL }, + { "stop", "Stop", 1, IDIT_BUTTON, NULL }, + { "next_track", "Next Track", 2, IDIT_BUTTON, NULL }, + { "previous_track", "Previous Track", 3, IDIT_BUTTON, NULL }, + + { "next_track_10", "Next Track 10", 4, IDIT_BUTTON, NULL }, + { "previous_track_10", "Previous Track 10", 5, IDIT_BUTTON, NULL }, + + { "scan_forward", "Scan Forward", 6, IDIT_BUTTON, NULL }, + { "scan_reverse", "Scan Reverse", 7, IDIT_BUTTON, NULL }, + + //{ "reverse_seek", "Reverse Seek", 1, IDIT_BUTTON, NULL }, + //{ "forward_seek", "Forward Seek", 2, IDIT_BUTTON, NULL }, + //{ "fast_reverse_seek", "Fast Reverse Seek", 3, IDIT_BUTTON, NULL }, + //{ "fast_forward_seek", "Fast Forward Seek", 4, IDIT_BUTTON, NULL }, +}; + +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + { + "controller", + "Controller", + NULL, + NULL, + sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), + IDII, + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo } +}; + +static InputInfoStruct InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; +} + +using namespace MDFN_IEN_CDPLAY; + +MDFNGI EmulatedCDPlay = +{ + "cdplay", + "Mednafen Test CD-DA Player", + KnownExtensions, + MODPRIO_INTERNAL_EXTRA_LOW, + NULL, // Debug info + &InputInfo, // + NULL, + NULL, + LoadCD, + TestMagicCD, + CloseGame, + NULL, + NULL, // Layer names, null-delimited + NULL, + NULL, + NULL, + NULL, + NULL, + false, + NULL, //StateAction, + Emulate, + SetInput, + DoSimpleCommand, + CDPlaySettings, + MDFN_MASTERCLOCK_FIXED(44100), + 75 * 65536 * 256, + false, // Multires possible? + + 320, // lcm_width + 240, // lcm_height + NULL, // Dummy + + + 320, // Nominal width + 240, // Nominal height + 512, // Framebuffer width + 256, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/cdrom/CDAccess.cpp b/libmednahawk/src/cdrom/CDAccess.cpp new file mode 100644 index 0000000000..a8410c1f52 --- /dev/null +++ b/libmednahawk/src/cdrom/CDAccess.cpp @@ -0,0 +1,58 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" + +#include +#include +//#include //zero 07-feb-2012 + + +#include "CDAccess.h" +#include "CDAccess_Image.h" + +#ifdef HAVE_LIBCDIO +#include "CDAccess_Physical.h" +#endif + +using namespace CDUtility; + +CDAccess::CDAccess() +{ + +} + +CDAccess::~CDAccess() +{ + +} + +CDAccess *cdaccess_open(const char *path, bool image_memcache) +{ + CDAccess *ret; + struct stat stat_buf; + + #ifdef HAVE_LIBCDIO + if(path == NULL || (!stat(path, &stat_buf) && !S_ISREG(stat_buf.st_mode))) + ret = new CDAccess_Physical(path); + else + #endif + ret = new CDAccess_Image(path, image_memcache); + + return ret; +} + diff --git a/libmednahawk/src/cdrom/CDAccess.h b/libmednahawk/src/cdrom/CDAccess.h new file mode 100644 index 0000000000..dce7aa07ee --- /dev/null +++ b/libmednahawk/src/cdrom/CDAccess.h @@ -0,0 +1,26 @@ +#ifndef __MDFN_CDROMFILE_H +#define __MDFN_CDROMFILE_H + +#include + +#include "CDUtility.h" + +class CDAccess +{ + public: + + CDAccess(); + virtual ~CDAccess(); + + virtual void Read_Raw_Sector(uint8 *buf, int32 lba) = 0; + + virtual void Read_TOC(CDUtility::TOC *toc) = 0; + + virtual bool Is_Physical(void) = 0; + + virtual void Eject(bool eject_status) = 0; // Eject a disc if it's physical, otherwise NOP. Returns true on success(or NOP), false on error +}; + +CDAccess *cdaccess_open(const char *path, bool image_memcache); + +#endif diff --git a/libmednahawk/src/cdrom/CDAccess_Image.cpp b/libmednahawk/src/cdrom/CDAccess_Image.cpp new file mode 100644 index 0000000000..f55c2313cb --- /dev/null +++ b/libmednahawk/src/cdrom/CDAccess_Image.cpp @@ -0,0 +1,983 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + Notes and TODO: + + POSTGAP in CUE sheets may not be handled properly, should the directive automatically increment the index number? + + INDEX nn where 02 <= nn <= 99 is not supported in CUE sheets. + + TOC reading code is extremely barebones, leaving out support for more esoteric features. + + A PREGAP statement in the first track definition in a CUE sheet may not work properly(depends on what is proper); + it will be added onto the implicit default 00:02:00 of pregap. + + Trying to read sectors at an LBA of less than 0 is not supported. TODO: support it(at least up to -150). +*/ + +#define _CDROMFILE_INTERNAL +#include "../mednafen.h" + +#include +#include + +#include +#include +#include +#include + +#include "../general.h" +#include "../endian.h" +#include "../FileStream.h" +#include "../MemoryStream.h" + +#include "CDAccess.h" +#include "CDAccess_Image.h" + +#include "audioreader.h" + +#include + +using namespace CDUtility; + +enum +{ + CDRF_SUBM_NONE = 0, + CDRF_SUBM_RW = 1, + CDRF_SUBM_RW_RAW = 2 +}; + +// Disk-image(rip) track/sector formats +enum +{ + DI_FORMAT_AUDIO = 0x00, + DI_FORMAT_MODE1 = 0x01, + DI_FORMAT_MODE1_RAW = 0x02, + DI_FORMAT_MODE2 = 0x03, + DI_FORMAT_MODE2_FORM1 = 0x04, + DI_FORMAT_MODE2_FORM2 = 0x05, + DI_FORMAT_MODE2_RAW = 0x06, + _DI_FORMAT_COUNT +}; + +static const int32 DI_Size_Table[7] = +{ + 2352, // Audio + 2048, // MODE1 + 2352, // MODE1 RAW + 2336, // MODE2 + 2048, // MODE2 Form 1 + 2324, // Mode 2 Form 2 + 2352 +}; + +static const char *DI_CDRDAO_Strings[7] = +{ + "AUDIO", + "MODE1", + "MODE1_RAW", + "MODE2", + "MODE2_FORM1", + "MODE2_FORM2", + "MODE2_RAW" +}; + +static const char *DI_CUE_Strings[7] = +{ + "AUDIO", + "MODE1/2048", + "MODE1/2352", + + // FIXME: These are just guesses: + "MODE2/2336", + "MODE2/2048", + "MODE2/2324", + "MODE2/2352" +}; + +static char *UnQuotify(char *src, char *dest) +{ + bool in_quote = 0; + bool already_normal = 0; + + while(*src) + { + if(*src == ' ' || *src == '\t') + { + if(!in_quote) + { + if(already_normal) + break; + else + { + src++; + continue; + } + } + } + + if(*src == '"') + { + if(in_quote) + { + src++; + break; + } + else + in_quote = 1; + } + else + { + *dest = *src; + already_normal = 1; + dest++; + } + src++; + } + + *dest = 0; + return(src); +} + +uint32 CDAccess_Image::GetSectorCount(CDRFILE_TRACK_INFO *track) +{ + if(track->DIFormat == DI_FORMAT_AUDIO) + { + if(track->AReader) + return(((track->AReader->FrameCount() * 4) - track->FileOffset) / 2352); + else + { + const int64 size = track->fp->size(); + + //printf("%d %d %d\n", (int)stat_buf.st_size, (int)track->FileOffset, (int)stat_buf.st_size - (int)track->FileOffset); + if(track->SubchannelMode) + return((size - track->FileOffset) / (2352 + 96)); + else + return((size - track->FileOffset) / 2352); + } + } + else + { + const int64 size = track->fp->size(); + + return((size - track->FileOffset) / DI_Size_Table[track->DIFormat]); + } + + return(0); +} + +void CDAccess_Image::ParseTOCFileLineInfo(CDRFILE_TRACK_INFO *track, const int tracknum, const char *filename, const char *binoffset, const char *msfoffset, const char *length, bool image_memcache) +{ + long offset = 0; // In bytes! + long tmp_long; + int m, s, f; + uint32 sector_mult; + long sectors; + std::string efn; + + efn = MDFN_EvalFIP(base_dir, filename); + track->fp = new FileStream(efn.c_str(), FileStream::MODE_READ); + if(image_memcache) + track->fp = new MemoryStream(track->fp); + + if(strlen(filename) >= 4 && !strcasecmp(filename + strlen(filename) - 4, ".wav")) + { + //zero 29-oct-2012 - no AudioReader support + //track->AReader = AR_Open(track->fp); + + if(!track->AReader) + throw MDFN_Error(0, "TODO ERROR"); + } + + sector_mult = DI_Size_Table[track->DIFormat]; + + if(track->SubchannelMode) + sector_mult += 96; + + if(binoffset && trio_sscanf(binoffset, "%ld", &tmp_long) == 1) + { + offset += tmp_long; + } + + if(msfoffset && trio_sscanf(msfoffset, "%d:%d:%d", &m, &s, &f) == 3) + { + offset += ((m * 60 + s) * 75 + f) * sector_mult; + } + + track->FileOffset = offset; // Make sure this is set before calling GetSectorCount()! + sectors = GetSectorCount(track); + //printf("Track: %d, offset: %ld, %ld\n", tracknum, offset, sectors); + + if(length) + { + tmp_long = sectors; + + if(trio_sscanf(length, "%d:%d:%d", &m, &s, &f) == 3) + tmp_long = (m * 60 + s) * 75 + f; + else if(track->DIFormat == DI_FORMAT_AUDIO) + { + char *endptr = NULL; + + tmp_long = strtol(length, &endptr, 10); + + // Error? + if(endptr == length) + { + tmp_long = sectors; + } + else + tmp_long /= 588; + + } + + if(tmp_long > sectors) + { + throw MDFN_Error(0, _("Length specified in TOC file for track %d is too large by %ld sectors!\n"), tracknum, (long)(tmp_long - sectors)); + } + sectors = tmp_long; + } + + track->FirstFileInstance = 1; + track->sectors = sectors; +} + + + +void CDAccess_Image::ImageOpen(const char *path, bool image_memcache) +{ + FileWrapper fp(path, FileWrapper::MODE_READ); + bool IsTOC = FALSE; + char linebuf[512]; + int32 active_track = -1; + int32 AutoTrackInc = 1; // For TOC + CDRFILE_TRACK_INFO TmpTrack; + std::string file_base, file_ext; + + memset(&TmpTrack, 0, sizeof(TmpTrack)); + + MDFN_GetFilePathComponents(path, &base_dir, &file_base, &file_ext); + + if(!strcasecmp(file_ext.c_str(), ".toc")) + { + puts("TOC file detected."); + IsTOC = true; + } + + // Check for annoying UTF-8 BOM. + if(!IsTOC) + { + uint8 bom_tmp[3]; + + if(fp.read(bom_tmp, 3, false) == 3 && bom_tmp[0] == 0xEF && bom_tmp[1] == 0xBB && bom_tmp[2] == 0xBF) + { + // Print an annoying error message, but don't actually error out. + MDFN_PrintError(_("UTF-8 BOM detected at start of CUE sheet.")); + } + else + fp.seek(0, SEEK_SET); + } + + + // Assign opposite maximum values so our tests will work! + FirstTrack = 99; + LastTrack = 0; + + while(fp.get_line(linebuf, 512) != NULL) + { + char cmdbuf[512], raw_args[512], args[4][512]; + int argcount = 0; + + raw_args[0] = 0; + cmdbuf[0] = 0; + + args[0][0] = args[1][0] = args[2][0] = args[3][0] = 0; + + MDFN_trim(linebuf); + + if(IsTOC) + { + // Handle TOC format comments + char *ss_loc = strstr(linebuf, "//"); + if(ss_loc) + { + ss_loc[0] = '\n'; + ss_loc[1] = 0; + } + } + + if(trio_sscanf(linebuf, "%s %[^\r\n]", cmdbuf, raw_args) < 1) + continue; // Skip blank lines + + UnQuotify(UnQuotify(UnQuotify(UnQuotify(raw_args, args[0]), args[1]), args[2]), args[3]); + if(args[0][0]) + { + argcount++; + if(args[1][0]) + { + argcount++; + if(args[2][0]) + { + argcount++; + if(args[3][0]) + { + argcount++; + } + } + } + } + + if(IsTOC) + { + if(!strcasecmp(cmdbuf, "TRACK")) + { + if(active_track >= 0) + { + memcpy(&Tracks[active_track], &TmpTrack, sizeof(TmpTrack)); + memset(&TmpTrack, 0, sizeof(TmpTrack)); + active_track = -1; + } + + if(AutoTrackInc > 99) + { + throw(MDFN_Error(0, _("Invalid track number: %d"), AutoTrackInc)); + } + + active_track = AutoTrackInc++; + if(active_track < FirstTrack) + FirstTrack = active_track; + if(active_track > LastTrack) + LastTrack = active_track; + + int format_lookup; + for(format_lookup = 0; format_lookup < _DI_FORMAT_COUNT; format_lookup++) + { + if(!strcasecmp(args[0], DI_CDRDAO_Strings[format_lookup])) + { + TmpTrack.DIFormat = format_lookup; + break; + } + } + + if(format_lookup == _DI_FORMAT_COUNT) + { + throw(MDFN_Error(0, _("Invalid track format: %s"), args[0])); + } + + if(TmpTrack.DIFormat == DI_FORMAT_AUDIO) + TmpTrack.RawAudioMSBFirst = TRUE; // Silly cdrdao... + + if(!strcasecmp(args[1], "RW")) + { + TmpTrack.SubchannelMode = CDRF_SUBM_RW; + throw(MDFN_Error(0, _("\"RW\" format subchannel data not supported, only \"RW_RAW\" is!"))); + } + else if(!strcasecmp(args[1], "RW_RAW")) + TmpTrack.SubchannelMode = CDRF_SUBM_RW_RAW; + + } // end to TRACK + else if(!strcasecmp(cmdbuf, "SILENCE")) + { + + } + else if(!strcasecmp(cmdbuf, "ZERO")) + { + + } + else if(!strcasecmp(cmdbuf, "FILE") || !strcasecmp(cmdbuf, "AUDIOFILE")) + { + const char *binoffset = NULL; + const char *msfoffset = NULL; + const char *length = NULL; + + if(args[1][0] == '#') + { + binoffset = args[1] + 1; + msfoffset = args[2]; + length = args[3]; + } + else + { + msfoffset = args[1]; + length = args[2]; + } + //printf("%s, %s, %s, %s\n", args[0], binoffset, msfoffset, length); + ParseTOCFileLineInfo(&TmpTrack, active_track, args[0], binoffset, msfoffset, length, image_memcache); + } + else if(!strcasecmp(cmdbuf, "DATAFILE")) + { + const char *binoffset = NULL; + const char *length = NULL; + + if(args[1][0] == '#') + { + binoffset = args[1] + 1; + length = args[2]; + } + else + length = args[1]; + + ParseTOCFileLineInfo(&TmpTrack, active_track, args[0], binoffset, NULL, length, image_memcache); + } + else if(!strcasecmp(cmdbuf, "INDEX")) + { + + } + else if(!strcasecmp(cmdbuf, "PREGAP")) + { + if(active_track < 0) + { + throw(MDFN_Error(0, _("Command %s is outside of a TRACK definition!\n"), cmdbuf)); + } + int m,s,f; + trio_sscanf(args[0], "%d:%d:%d", &m, &s, &f); + TmpTrack.pregap = (m * 60 + s) * 75 + f; + } // end to PREGAP + else if(!strcasecmp(cmdbuf, "START")) + { + if(active_track < 0) + { + throw(MDFN_Error(0, _("Command %s is outside of a TRACK definition!\n"), cmdbuf)); + } + int m,s,f; + trio_sscanf(args[0], "%d:%d:%d", &m, &s, &f); + TmpTrack.pregap = (m * 60 + s) * 75 + f; + } + } /*********** END TOC HANDLING ************/ + else // now for CUE sheet handling + { + if(!strcasecmp(cmdbuf, "FILE")) + { + if(active_track >= 0) + { + memcpy(&Tracks[active_track], &TmpTrack, sizeof(TmpTrack)); + memset(&TmpTrack, 0, sizeof(TmpTrack)); + active_track = -1; + } + + if(!MDFN_IsFIROPSafe(args[0])) + { + throw(MDFN_Error(0, _("Referenced path \"%s\" is potentially unsafe. See \"filesys.untrusted_fip_check\" setting.\n"), args[0])); + } + + std::string efn = MDFN_EvalFIP(base_dir, args[0]); + TmpTrack.fp = new FileStream(efn.c_str(), FileStream::MODE_READ); + TmpTrack.FirstFileInstance = 1; + + if(image_memcache) + TmpTrack.fp = new MemoryStream(TmpTrack.fp); + + if(!strcasecmp(args[1], "BINARY")) + { + //TmpTrack.Format = TRACK_FORMAT_DATA; + //struct stat stat_buf; + //fstat(fileno(TmpTrack.fp), &stat_buf); + //TmpTrack.sectors = stat_buf.st_size; // / 2048; + } + else if(!strcasecmp(args[1], "OGG") || !strcasecmp(args[1], "VORBIS") || !strcasecmp(args[1], "WAVE") || !strcasecmp(args[1], "WAV") || !strcasecmp(args[1], "PCM") + || !strcasecmp(args[1], "MPC") || !strcasecmp(args[1], "MP+")) + { + //zero 29-oct-2012 - no AudioReader support + //TmpTrack.AReader = AR_Open(TmpTrack.fp); + if(!TmpTrack.AReader) + { + throw(MDFN_Error(0, _("Unsupported audio track file format: %s\n"), args[0])); + } + } + else + { + throw(MDFN_Error(0, _("Unsupported track format: %s\n"), args[1])); + } + } + else if(!strcasecmp(cmdbuf, "TRACK")) + { + if(active_track >= 0) + { + memcpy(&Tracks[active_track], &TmpTrack, sizeof(TmpTrack)); + TmpTrack.FirstFileInstance = 0; + TmpTrack.pregap = 0; + TmpTrack.pregap_dv = 0; + TmpTrack.postgap = 0; + TmpTrack.index[0] = -1; + TmpTrack.index[1] = 0; + } + active_track = atoi(args[0]); + + if(active_track < FirstTrack) + FirstTrack = active_track; + if(active_track > LastTrack) + LastTrack = active_track; + + int format_lookup; + for(format_lookup = 0; format_lookup < _DI_FORMAT_COUNT; format_lookup++) + { + if(!strcasecmp(args[1], DI_CUE_Strings[format_lookup])) + { + TmpTrack.DIFormat = format_lookup; + break; + } + } + + if(format_lookup == _DI_FORMAT_COUNT) + { + throw(MDFN_Error(0, _("Invalid track format: %s\n"), args[0])); + } + + if(active_track < 0 || active_track > 99) + { + throw(MDFN_Error(0, _("Invalid track number: %d\n"), active_track)); + } + } + else if(!strcasecmp(cmdbuf, "INDEX")) + { + if(active_track >= 0) + { + int m,s,f; + trio_sscanf(args[1], "%d:%d:%d", &m, &s, &f); + + if(!strcasecmp(args[0], "01") || !strcasecmp(args[0], "1")) + TmpTrack.index[1] = (m * 60 + s) * 75 + f; + else if(!strcasecmp(args[0], "00") || !strcasecmp(args[0], "0")) + TmpTrack.index[0] = (m * 60 + s) * 75 + f; + } + } + else if(!strcasecmp(cmdbuf, "PREGAP")) + { + if(active_track >= 0) + { + int m,s,f; + trio_sscanf(args[0], "%d:%d:%d", &m, &s, &f); + TmpTrack.pregap = (m * 60 + s) * 75 + f; + } + } + else if(!strcasecmp(cmdbuf, "POSTGAP")) + { + if(active_track >= 0) + { + int m,s,f; + trio_sscanf(args[0], "%d:%d:%d", &m, &s, &f); + TmpTrack.postgap = (m * 60 + s) * 75 + f; + } + } + else if(!strcasecmp(cmdbuf, "REM")) + { + + } + else if(!strcasecmp(cmdbuf, "CDTEXTFILE") || !strcasecmp(cmdbuf, "FLAGS") || !strcasecmp(cmdbuf, "CATALOG") || !strcasecmp(cmdbuf, "ISRC") || + !strcasecmp(cmdbuf, "TITLE") || !strcasecmp(cmdbuf, "PERFORMER") || !strcasecmp(cmdbuf, "SONGWRITER")) + { + MDFN_printf(_("Unsupported CUE sheet directive: \"%s\".\n"), cmdbuf); // FIXME, generic logger passed by pointer to constructor + } + else + { + throw MDFN_Error(0, _("Unknown CUE sheet directive \"%s\".\n"), cmdbuf); + } + } // end of CUE sheet handling + } // end of fgets() loop + + if(active_track >= 0) + memcpy(&Tracks[active_track], &TmpTrack, sizeof(TmpTrack)); + + if(FirstTrack > LastTrack) + { + throw(MDFN_Error(0, _("No tracks found!\n"))); + } + + FirstTrack = FirstTrack; + NumTracks = 1 + LastTrack - FirstTrack; + + int32 RunningLBA = 0; + int32 LastIndex = 0; + long FileOffset = 0; + + for(int x = FirstTrack; x < (FirstTrack + NumTracks); x++) + { + if(Tracks[x].DIFormat == DI_FORMAT_AUDIO) + Tracks[x].Format = CD_TRACK_FORMAT_AUDIO; + else + Tracks[x].Format = CD_TRACK_FORMAT_DATA; + + if(IsTOC) + { + RunningLBA += Tracks[x].pregap; + Tracks[x].LBA = RunningLBA; + RunningLBA += Tracks[x].sectors; + RunningLBA += Tracks[x].postgap; + } + else // else handle CUE sheet... + { + if(Tracks[x].FirstFileInstance) + { + LastIndex = 0; + FileOffset = 0; + } + + RunningLBA += Tracks[x].pregap; + + Tracks[x].pregap_dv = 0; + + if(Tracks[x].index[0] != -1) + Tracks[x].pregap_dv = Tracks[x].index[1] - Tracks[x].index[0]; + + FileOffset += Tracks[x].pregap_dv * DI_Size_Table[Tracks[x].DIFormat]; + + RunningLBA += Tracks[x].pregap_dv; + + Tracks[x].LBA = RunningLBA; + + // Make sure FileOffset this is set before the call to GetSectorCount() + Tracks[x].FileOffset = FileOffset; + Tracks[x].sectors = GetSectorCount(&Tracks[x]); + + if((x + 1) >= (FirstTrack + NumTracks) || Tracks[x+1].FirstFileInstance) + { + + } + else + { + // Fix the sector count if we have multiple tracks per one binary image file. + if(Tracks[x + 1].index[0] == -1) + Tracks[x].sectors = Tracks[x + 1].index[1] - Tracks[x].index[1]; + else + Tracks[x].sectors = Tracks[x + 1].index[0] - Tracks[x].index[1]; //Tracks[x + 1].index - Tracks[x].index; + } + + //printf("Poo: %d %d\n", x, Tracks[x].sectors); + RunningLBA += Tracks[x].sectors; + RunningLBA += Tracks[x].postgap; + + //printf("%d, %ld %d %d %d %d\n", x, FileOffset, Tracks[x].index, Tracks[x].pregap, Tracks[x].sectors, Tracks[x].LBA); + + FileOffset += Tracks[x].sectors * DI_Size_Table[Tracks[x].DIFormat]; + } // end to cue sheet handling + } // end to track loop + + total_sectors = RunningLBA; +} + +void CDAccess_Image::Cleanup(void) +{ + for(int32 track = 0; track < 100; track++) + { + CDRFILE_TRACK_INFO *this_track = &Tracks[track]; + + if(this_track->FirstFileInstance) + { + if(Tracks[track].AReader) + { + delete Tracks[track].AReader; + Tracks[track].AReader = NULL; + } + + if(this_track->fp) + { + delete this_track->fp; + this_track->fp = NULL; + } + } + } +} + +CDAccess_Image::CDAccess_Image(const char *path, bool image_memcache) : NumTracks(0), FirstTrack(0), LastTrack(0), total_sectors(0) +{ + memset(Tracks, 0, sizeof(Tracks)); + + try + { + ImageOpen(path, image_memcache); + } + catch(...) + { + Cleanup(); + throw; + } +} + +CDAccess_Image::~CDAccess_Image() +{ + Cleanup(); +} + +void CDAccess_Image::Read_Raw_Sector(uint8 *buf, int32 lba) +{ + bool TrackFound = FALSE; + uint8 SimuQ[0xC]; + + memset(buf + 2352, 0, 96); + + MakeSubPQ(lba, buf + 2352); + + subq_deinterleave(buf + 2352, SimuQ); + + for(int32 track = FirstTrack; track < (FirstTrack + NumTracks); track++) + { + CDRFILE_TRACK_INFO *ct = &Tracks[track]; + + if(lba >= (ct->LBA - ct->pregap_dv - ct->pregap) && lba < (ct->LBA + ct->sectors + ct->postgap)) + { + TrackFound = TRUE; + + // Handle pregap and postgap reading + if(lba < (ct->LBA - ct->pregap_dv) || lba >= (ct->LBA + ct->sectors)) + { + //printf("Pre/post-gap read, LBA=%d(LBA-track_start_LBA=%d)\n", lba, lba - ct->LBA); + memset(buf, 0, 2352); // Null sector data, per spec + } + else + { + if(ct->AReader) + { + int16 AudioBuf[588 * 2]; + int frames_read = ct->AReader->Read((ct->FileOffset / 4) + (lba - ct->LBA) * 588, AudioBuf, 588); + + ct->LastSamplePos += frames_read; + + if(frames_read < 0 || frames_read > 588) // This shouldn't happen. + { + printf("Error: frames_read out of range: %d\n", frames_read); + frames_read = 0; + } + + if(frames_read < 588) + memset((uint8 *)AudioBuf + frames_read * 2 * sizeof(int16), 0, (588 - frames_read) * 2 * sizeof(int16)); + + for(int i = 0; i < 588 * 2; i++) + MDFN_en16lsb(buf + i * 2, AudioBuf[i]); + } + else // Binary, woo. + { + long SeekPos = ct->FileOffset; + long LBARelPos = lba - ct->LBA; + + SeekPos += LBARelPos * DI_Size_Table[ct->DIFormat]; + + if(ct->SubchannelMode) + SeekPos += 96 * (lba - ct->LBA); + + ct->fp->seek(SeekPos, SEEK_SET); + + switch(ct->DIFormat) + { + case DI_FORMAT_AUDIO: + ct->fp->read(buf, 2352); + + if(ct->RawAudioMSBFirst) + Endian_A16_Swap(buf, 588 * 2); + break; + + case DI_FORMAT_MODE1: + ct->fp->read(buf + 12 + 3 + 1, 2048); + encode_mode1_sector(lba + 150, buf); + break; + + case DI_FORMAT_MODE1_RAW: + case DI_FORMAT_MODE2_RAW: + ct->fp->read(buf, 2352); + break; + + case DI_FORMAT_MODE2: + ct->fp->read(buf + 16, 2336); + encode_mode2_sector(lba + 150, buf); + break; + + + // FIXME: M2F1, M2F2, does sub-header come before or after user data(standards say before, but I wonder + // about cdrdao...). + case DI_FORMAT_MODE2_FORM1: + ct->fp->read(buf + 24, 2048); + //encode_mode2_form1_sector(lba + 150, buf); + break; + + case DI_FORMAT_MODE2_FORM2: + ct->fp->read(buf + 24, 2324); + //encode_mode2_form2_sector(lba + 150, buf); + break; + + } + + if(ct->SubchannelMode) + ct->fp->read(buf + 2352, 96); + } + } // end if audible part of audio track read. + break; + } // End if LBA is in range + } // end track search loop + + if(!TrackFound) + { + throw(MDFN_Error(0, _("Could not find track for sector %u!"), lba)); + } + +#if 0 + if(qbuf[0] & 0x40) + { + uint8 dummy_buf[2352 + 96]; + bool any_mismatch = FALSE; + + memcpy(dummy_buf + 16, buf + 16, 2048); + memset(dummy_buf + 2352, 0, 96); + + MakeSubPQ(lba, dummy_buf + 2352); + encode_mode1_sector(lba + 150, dummy_buf); + + for(int i = 0; i < 2352 + 96; i++) + { + if(dummy_buf[i] != buf[i]) + { + printf("Mismatch at %d, %d: %02x:%02x; ", lba, i, dummy_buf[i], buf[i]); + any_mismatch = TRUE; + } + } + if(any_mismatch) + puts("\n"); + } +#endif + + //subq_deinterleave(buf + 2352, qbuf); + //printf("%02x\n", qbuf[0]); + //printf("%02x\n", buf[12 + 3]); +} + +void CDAccess_Image::MakeSubPQ(int32 lba, uint8 *SubPWBuf) +{ + uint8 buf[0xC]; + int32 track; + uint32 lba_relative; + uint32 ma, sa, fa; + uint32 m, s, f; + uint8 pause_or = 0x00; + bool track_found = FALSE; + + for(track = FirstTrack; track < (FirstTrack + NumTracks); track++) + { + if(lba >= (Tracks[track].LBA - Tracks[track].pregap_dv - Tracks[track].pregap) && lba < (Tracks[track].LBA + Tracks[track].sectors + Tracks[track].postgap)) + { + track_found = TRUE; + break; + } + } + + //printf("%d %d\n", Tracks[1].LBA, Tracks[1].sectors); + + if(!track_found) + { + printf("MakeSubPQ error for sector %u!", lba); + track = FirstTrack; + } + + lba_relative = abs((int32)lba - Tracks[track].LBA); + + f = (lba_relative % 75); + s = ((lba_relative / 75) % 60); + m = (lba_relative / 75 / 60); + + fa = (lba + 150) % 75; + sa = ((lba + 150) / 75) % 60; + ma = ((lba + 150) / 75 / 60); + + uint8 adr = 0x1; // Q channel data encodes position + uint8 control = (Tracks[track].Format == CD_TRACK_FORMAT_AUDIO) ? 0x00 : 0x04; + + // Handle pause(D7 of interleaved subchannel byte) bit, should be set to 1 when in pregap or postgap. + if((lba < Tracks[track].LBA) || (lba >= Tracks[track].LBA + Tracks[track].sectors)) + { + //printf("pause_or = 0x80 --- %d\n", lba); + pause_or = 0x80; + } + + // Handle pregap between audio->data track + { + int32 pg_offset = (int32)lba - Tracks[track].LBA; + + // If we're more than 2 seconds(150 sectors) from the real "start" of the track/INDEX 01, and the track is a data track, + // and the preceding track is an audio track, encode it as audio. + if(pg_offset < -150) + { + if(Tracks[track].Format == CD_TRACK_FORMAT_DATA && (FirstTrack < track) && + Tracks[track - 1].Format == CD_TRACK_FORMAT_AUDIO) + { + //printf("Pregap part 1 audio->data: lba=%d track_lba=%d\n", lba, Tracks[track].LBA); + control = 0x00; + } + } + } + + + memset(buf, 0, 0xC); + buf[0] = (adr << 0) | (control << 4); + buf[1] = U8_to_BCD(track); + + if(lba < Tracks[track].LBA) // Index is 00 in pregap + buf[2] = U8_to_BCD(0x00); + else + buf[2] = U8_to_BCD(0x01); + + // Track relative MSF address + buf[3] = U8_to_BCD(m); + buf[4] = U8_to_BCD(s); + buf[5] = U8_to_BCD(f); + + buf[6] = 0; // Zerroooo + + // Absolute MSF address + buf[7] = U8_to_BCD(ma); + buf[8] = U8_to_BCD(sa); + buf[9] = U8_to_BCD(fa); + + subq_generate_checksum(buf); + + for(int i = 0; i < 96; i++) + SubPWBuf[i] |= (((buf[i >> 3] >> (7 - (i & 0x7))) & 1) ? 0x40 : 0x00) | pause_or; +} + +void CDAccess_Image::Read_TOC(TOC *toc) +{ + toc->Clear(); + + toc->first_track = FirstTrack; + toc->last_track = FirstTrack + NumTracks - 1; + toc->disc_type = DISC_TYPE_CDDA_OR_M1; // FIXME + + for(int i = toc->first_track; i <= toc->last_track; i++) + { + toc->tracks[i].lba = Tracks[i].LBA; + toc->tracks[i].adr = ADR_CURPOS; + toc->tracks[i].control = 0x0; + + if(Tracks[i].Format != CD_TRACK_FORMAT_AUDIO) + toc->tracks[i].control |= 0x4; + } + + toc->tracks[100].lba = total_sectors; + toc->tracks[100].adr = ADR_CURPOS; + toc->tracks[100].control = 0x00; // Audio... + + // Convenience leadout track duplication. + if(toc->last_track < 99) + toc->tracks[toc->last_track + 1] = toc->tracks[100]; +} + +bool CDAccess_Image::Is_Physical(void) +{ + return(false); +} + +void CDAccess_Image::Eject(bool eject_status) +{ + +} + diff --git a/libmednahawk/src/cdrom/CDAccess_Image.h b/libmednahawk/src/cdrom/CDAccess_Image.h new file mode 100644 index 0000000000..8eba5fbda9 --- /dev/null +++ b/libmednahawk/src/cdrom/CDAccess_Image.h @@ -0,0 +1,95 @@ +#ifndef __MDFN_CDACCESS_IMAGE_H +#define __MDFN_CDACCESS_IMAGE_H + +class Stream; +class AudioReader; + +struct CDRFILE_TRACK_INFO +{ + int32 LBA; + + CDUtility::CD_Track_Format_t Format; + uint32 DIFormat; + + int32 pregap; + int32 pregap_dv; + + int32 postgap; + + int32 index[2]; + + int32 sectors; // Not including pregap sectors! + Stream *fp; + bool FirstFileInstance; + bool RawAudioMSBFirst; + long FileOffset; + unsigned int SubchannelMode; + + uint32 LastSamplePos; + + AudioReader *AReader; +}; +#if 0 +struct Medium_Chunk +{ + int64 Offset; // Offset in [..TODO..] + uint32 DIFormat; + + FILE *fp; + bool FirstFileInstance; + bool RawAudioMSBFirst; + unsigned int SubchannelMode; + + uint32 LastSamplePos; + AudioReader *AReader; +}; + +struct CD_Chunk +{ + int32 LBA; + int32 Track; + int32 Index; + bool DataType; + + Medium_Chunk Medium; +}; + +static std::vector Chunks; +#endif + +class CDAccess_Image : public CDAccess +{ + public: + + CDAccess_Image(const char *path, bool image_memcache); + virtual ~CDAccess_Image(); + + virtual void Read_Raw_Sector(uint8 *buf, int32 lba); + + virtual void Read_TOC(CDUtility::TOC *toc); + + virtual bool Is_Physical(void); + + virtual void Eject(bool eject_status); + private: + + int32 NumTracks; + int32 FirstTrack; + int32 LastTrack; + int32 total_sectors; + CDRFILE_TRACK_INFO Tracks[100]; // Track #0(HMM?) through 99 + + std::string base_dir; + + void ImageOpen(const char *path, bool image_memcache); + void Cleanup(void); + + // MakeSubPQ will OR the simulated P and Q subchannel data into SubPWBuf. + void MakeSubPQ(int32 lba, uint8 *SubPWBuf); + + void ParseTOCFileLineInfo(CDRFILE_TRACK_INFO *track, const int tracknum, const char *filename, const char *binoffset, const char *msfoffset, const char *length, bool image_memcache); + uint32 GetSectorCount(CDRFILE_TRACK_INFO *track); +}; + + +#endif diff --git a/libmednahawk/src/cdrom/CDAccess_Physical.cpp b/libmednahawk/src/cdrom/CDAccess_Physical.cpp new file mode 100644 index 0000000000..64ef479ed7 --- /dev/null +++ b/libmednahawk/src/cdrom/CDAccess_Physical.cpp @@ -0,0 +1,358 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define EXTERNAL_LIBCDIO_CONFIG_H 1 + +#include "../mednafen.h" +#include "../general.h" + +#include "CDAccess.h" +#include "CDAccess_Physical.h" + +#include + +#include +#include + +#if LIBCDIO_VERSION_NUM >= 83 +#include +#endif + +using namespace CDUtility; + +void CDAccess_Physical::DetermineFeatures(void) +{ + uint8 buf[256]; + + mmc_cdb_t cdb = {{0, }}; + + CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_MODE_SENSE_10); + + memset(buf, 0, sizeof(buf)); + + cdb.field[2] = 0x2A; + + cdb.field[7] = sizeof(buf) >> 8; + cdb.field[8] = sizeof(buf) & 0xFF; + + if(mmc_run_cmd ((CdIo *)p_cdio, MMC_TIMEOUT_DEFAULT, + &cdb, + SCSI_MMC_DATA_READ, + sizeof(buf), + buf)) + { + throw(MDFN_Error(0, _("MMC [MODE SENSE 10] command failed."))); + } + else + { + const uint8 *pd = &buf[8]; + + if(pd[0] != 0x2A || pd[1] < 0x14) + { + throw(MDFN_Error(0, _("MMC [MODE SENSE 10] command returned bogus data for mode page 0x2A."))); + } + + if(!(pd[4] & 0x10)) + { + throw(MDFN_Error(0, _("Drive does not support reading Mode 2 Form 1 sectors."))); + } + + if(!(pd[4] & 0x20)) + { + throw(MDFN_Error(0, _("Drive does not support reading Mode 2 Form 2 sectors."))); + } + + if(!(pd[5] & 0x01)) + { + throw(MDFN_Error(0, _("Reading CD-DA sectors via \"READ CD\" is not supported."))); + } + + if(!(pd[5] & 0x02)) + { + throw(MDFN_Error(0, _("Read CD-DA sectors via \"READ CD\" are not positionally-accurate."))); + } + + if(!(pd[5] & 0x04)) + { + throw(MDFN_Error(0, _("Reading raw subchannel data via \"READ CD\" is not supported."))); + } + } +} + +void CDAccess_Physical::PreventAllowMediumRemoval(bool prevent) +{ +#if 0 + mmc_cdb_t cdb = {{0, }}; + uint8 buf[8]; + + cdb.field[0] = 0x1E; + cdb.field[1] = 0x00; + cdb.field[2] = 0x00; + cdb.field[3] = 0x00; + cdb.field[4] = 0x00; //prevent; + cdb.field[5] = 0x00; + + printf("%d\n", mmc_run_cmd_len (p_cdio, MMC_TIMEOUT_DEFAULT, + &cdb, 6, + SCSI_MMC_DATA_READ, 0, buf)); + assert(0); +#endif +} + +void CDAccess_Physical::ReadPhysDiscInfo(unsigned retry) +{ + mmc_cdb_t cdb = {{0, }}; + uint8 toc_buffer[8192]; + int64 start_time = time(NULL); + int cdio_rc; + + cdb.field[0] = 0x43; // Read TOC + cdb.field[1] = 0x00; + cdb.field[2] = 0x00; // Format 0000b + cdb.field[3] = 0x00; + cdb.field[4] = 0x00; + cdb.field[5] = 0x00; + cdb.field[6] = 0x01; // Track number + cdb.field[7] = sizeof(toc_buffer) >> 8; + cdb.field[8] = sizeof(toc_buffer) & 0xFF; + cdb.field[9] = 0x00; + + memset(toc_buffer, 0, sizeof(toc_buffer)); + + while((cdio_rc = mmc_run_cmd ((CdIo *)p_cdio, MMC_TIMEOUT_DEFAULT, + &cdb, + SCSI_MMC_DATA_READ, + sizeof(toc_buffer), + toc_buffer))) + { + if(!retry || time(NULL) >= (start_time + retry)) + { + throw(MDFN_Error(0, _("Error reading disc TOC."))); + } + } + + PhysTOC.Clear(); + + PhysTOC.first_track = toc_buffer[2]; + PhysTOC.last_track = toc_buffer[3]; + + if(PhysTOC.first_track < 1 || PhysTOC.first_track > 99) + { + throw(MDFN_Error(0, _("Invalid first track: %d\n"), PhysTOC.first_track)); + } + + if(PhysTOC.last_track > 99 || PhysTOC.last_track < PhysTOC.first_track) + { + throw(MDFN_Error(0, _("Invalid last track: %d\n"), PhysTOC.last_track)); + } + + int32 len_counter = MDFN_de16msb(&toc_buffer[0]) - 2; + uint8 *tbi = &toc_buffer[4]; + + assert(len_counter >= 0); + assert((len_counter & 7) == 0); + + while(len_counter) + { + uint8 adr = tbi[1] >> 4; + uint8 control = tbi[1] & 0xF; + uint8 tnum = tbi[2]; + uint32 lba = MDFN_de32msb(&tbi[4]); + + if(tnum == 0xAA) + { + PhysTOC.tracks[100].adr = adr; + PhysTOC.tracks[100].control = control; + PhysTOC.tracks[100].lba = lba; + } + else if(tnum >= PhysTOC.first_track && tnum <= PhysTOC.last_track) + { + PhysTOC.tracks[tnum].adr = adr; + PhysTOC.tracks[tnum].control = control; + PhysTOC.tracks[tnum].lba = lba; + } + + tbi += 8; + len_counter -= 8; + } + + // Convenience leadout track duplication. + if(PhysTOC.last_track < 99) + PhysTOC.tracks[PhysTOC.last_track + 1] = PhysTOC.tracks[100]; +} + +void CDAccess_Physical::Read_TOC(TOC *toc) +{ + *toc = PhysTOC; +} + +void CDAccess_Physical::Read_Raw_Sector(uint8 *buf, int32 lba) +{ + mmc_cdb_t cdb = {{0, }}; + int cdio_rc; + + CDIO_MMC_SET_COMMAND(cdb.field, CDIO_MMC_GPCMD_READ_CD); + CDIO_MMC_SET_READ_TYPE (cdb.field, CDIO_MMC_READ_TYPE_ANY); + CDIO_MMC_SET_READ_LBA (cdb.field, lba); + CDIO_MMC_SET_READ_LENGTH24(cdb.field, 1); + + if(SkipSectorRead[(lba >> 3) & 0xFFFF] & (1 << (lba & 7))) + { + printf("Read(skipped): %d\n", lba); + memset(buf, 0, 2352); + + cdb.field[9] = 0x00; + cdb.field[10] = 0x01; + + if((cdio_rc = mmc_run_cmd ((CdIo *)p_cdio, MMC_TIMEOUT_DEFAULT, + &cdb, + SCSI_MMC_DATA_READ, + 96, + buf + 2352))) + { + throw(MDFN_Error(0, _("MMC Read Error; libcdio return code %d"), cdio_rc)); + } + } + else + { + cdb.field[9] = 0xF8; + cdb.field[10] = 0x01; + + if((cdio_rc = mmc_run_cmd ((CdIo *)p_cdio, MMC_TIMEOUT_DEFAULT, + &cdb, + SCSI_MMC_DATA_READ, + 2352 + 96, + buf))) + { + throw(MDFN_Error(0, _("MMC Read Error; libcdio return code %d"), cdio_rc)); + } + } +} + +CDAccess_Physical::CDAccess_Physical(const char *path) +{ + char **devices = NULL; + char **parseit = NULL; + + p_cdio = NULL; + + cdio_init(); + +// +// +// + try + { + devices = cdio_get_devices(DRIVER_DEVICE); + parseit = devices; + if(parseit) + { + MDFN_printf(_("Connected physical devices:\n")); + MDFN_indent(1); + while(*parseit) + { + MDFN_printf("%s\n", *parseit); + parseit++; + } + MDFN_indent(-1); + } + + if(!parseit || parseit == devices) + { + throw(MDFN_Error(0, _("No CDROM drives detected(or no disc present)."))); + } + + if(devices) + { + cdio_free_device_list(devices); + devices = NULL; + } + + p_cdio = cdio_open_cd(path); //, DRIVER_UNKNOWN); //NULL, DRIVER_UNKNOWN); + if(!p_cdio) + { + throw(MDFN_Error(0, _("Unknown error opening physical CD"))); + } + + //PreventAllowMediumRemoval(true); + ReadPhysDiscInfo(0); + + // + // Determine how we can read this CD. + // + DetermineFeatures(); + + memset(SkipSectorRead, 0, sizeof(SkipSectorRead)); + } + catch(std::exception &e) + { + if(devices) + cdio_free_device_list(devices); + + if(p_cdio) + cdio_destroy((CdIo *)p_cdio); + + throw; + } +} + +CDAccess_Physical::~CDAccess_Physical() +{ + cdio_destroy((CdIo *)p_cdio); +} + +bool CDAccess_Physical::Is_Physical(void) +{ + return(true); +} + +void CDAccess_Physical::Eject(bool eject_status) +{ + int cdio_rc; + +#if LIBCDIO_VERSION_NUM >= 83 + if((cdio_rc = mmc_start_stop_unit((CdIo *)p_cdio, eject_status, false, 0, 0)) != 0) + { + if(cdio_rc != DRIVER_OP_UNSUPPORTED) // Don't error out if it's just an unsupported operation. + throw(MDFN_Error(0, _("Error ejecting medium;; libcdio return code %d"), cdio_rc)); + } +#else + if((cdio_rc = mmc_start_stop_media((CdIo *)p_cdio, eject_status, false, 0)) != 0) + { + if(cdio_rc != DRIVER_OP_UNSUPPORTED) // Don't error out if it's just an unsupported operation. + throw(MDFN_Error(0, _("Error ejecting medium;; libcdio return code %d"), cdio_rc)); + } +#endif + + if(!eject_status) + { + try + { + ReadPhysDiscInfo(10); + } + catch(std::exception &e) + { +#if LIBCDIO_VERSION_NUM >= 83 + mmc_start_stop_unit((CdIo *)p_cdio, true, false, 0, 0); // Eject disc, if possible. +#else + mmc_start_stop_media((CdIo *)p_cdio, true, false, 0); // Eject disc, if possible. +#endif + throw; + } + } +} + diff --git a/libmednahawk/src/cdrom/CDAccess_Physical.h b/libmednahawk/src/cdrom/CDAccess_Physical.h new file mode 100644 index 0000000000..4a3384213b --- /dev/null +++ b/libmednahawk/src/cdrom/CDAccess_Physical.h @@ -0,0 +1,36 @@ +#ifndef __MDFN_CDACCESS_PHYSICAL_H +#define __MDFN_CDACCESS_PHYSICAL_H + +// Don't include here, else it will pollute with its #define's. + +class CDAccess_Physical : public CDAccess +{ + public: + + CDAccess_Physical(const char *path); + virtual ~CDAccess_Physical(); + + virtual void Read_Raw_Sector(uint8 *buf, int32 lba); + + virtual void Read_TOC(CDUtility::TOC *toc); + + virtual bool Is_Physical(void); + + virtual void Eject(bool eject_status); + private: + + void *p_cdio; + + void DetermineFeatures(void); + void PhysOpen(const char *path); + void ReadPhysDiscInfo(unsigned retry); + + void PreventAllowMediumRemoval(bool prevent); + + CDUtility::TOC PhysTOC; + + // TODO: 1-bit per sector on the physical CD. If set, don't read that sector. + uint8 SkipSectorRead[65536]; +}; + +#endif diff --git a/libmednahawk/src/cdrom/CDUtility.cpp b/libmednahawk/src/cdrom/CDUtility.cpp new file mode 100644 index 0000000000..7de9a8e565 --- /dev/null +++ b/libmednahawk/src/cdrom/CDUtility.cpp @@ -0,0 +1,176 @@ +/* Mednafen - Multi-system Emulator + * + * Subchannel Q CRC Code: Copyright (C) 1998 Andreas Mueller + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "CDUtility.h" +#include "dvdisaster.h" +#include "lec.h" + +// Kill_LEC_Correct(); + + +namespace CDUtility +{ + +// lookup table for crc calculation +static uint16 subq_crctab[256] = +{ + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, + 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, + 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, + 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, + 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, + 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, + 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, + 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, + 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, + 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, + 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, + 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, + 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, + 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, + 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, + 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, + 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, + 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, + 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, + 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, + 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, + 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, + 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, + 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, + 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, + 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 +}; + + +static bool CDUtility_Inited = false; + +void CDUtility_Init(void) +{ + if(!CDUtility_Inited) + { + Init_LEC_Correct(); + + CDUtility_Inited = true; + } +} + +void encode_mode0_sector(uint32 aba, uint8 *sector_data) +{ + CDUtility_Init(); + + lec_encode_mode0_sector(aba, sector_data); +} + +void encode_mode1_sector(uint32 aba, uint8 *sector_data) +{ + CDUtility_Init(); + + lec_encode_mode1_sector(aba, sector_data); +} + +void encode_mode2_sector(uint32 aba, uint8 *sector_data) +{ + CDUtility_Init(); + + lec_encode_mode2_sector(aba, sector_data); +} + +void encode_mode2_form1_sector(uint32 aba, uint8 *sector_data) +{ + CDUtility_Init(); + + lec_encode_mode2_form1_sector(aba, sector_data); +} + +void encode_mode2_form2_sector(uint32 aba, uint8 *sector_data) +{ + CDUtility_Init(); + + lec_encode_mode2_form2_sector(aba, sector_data); +} + +bool edc_check(const uint8 *sector_data, bool xa) +{ + CDUtility_Init(); + + return(CheckEDC(sector_data, xa)); +} + +bool edc_lec_check_correct(uint8 *sector_data, bool xa) +{ + CDUtility_Init(); + + return(ValidateRawSector(sector_data, xa)); +} + + +bool subq_check_checksum(const uint8 *SubQBuf) +{ + uint16 crc = 0; + uint16 stored_crc = 0; + + stored_crc = SubQBuf[0xA] << 8; + stored_crc |= SubQBuf[0xB]; + + for(int i = 0; i < 0xA; i++) + crc = subq_crctab[(crc >> 8) ^ SubQBuf[i]] ^ (crc << 8); + + crc = ~crc; + + return(crc == stored_crc); +} + +void subq_generate_checksum(uint8 *buf) +{ + uint16 crc = 0; + + for(int i = 0; i < 0xA; i++) + crc = subq_crctab[(crc >> 8) ^ buf[i]] ^ (crc << 8); + + // Checksum + buf[0xa] = ~(crc >> 8); + buf[0xb] = ~(crc); +} + +void subq_deinterleave(const uint8 *SubPWBuf, uint8 *qbuf) +{ + memset(qbuf, 0, 0xC); + + for(int i = 0; i < 96; i++) + { + qbuf[i >> 3] |= ((SubPWBuf[i] >> 6) & 0x1) << (7 - (i & 0x7)); + } +} + +#if 0 +bool subq_extrapolate(const uint8 *subq_input, int32 position_delta, uint8 *subq_output) +{ + assert(subq_check_checksum(subq_input)); + + + subq_generate_checksum(subq_output); +} +#endif + +} diff --git a/libmednahawk/src/cdrom/CDUtility.h b/libmednahawk/src/cdrom/CDUtility.h new file mode 100644 index 0000000000..eaeaa29129 --- /dev/null +++ b/libmednahawk/src/cdrom/CDUtility.h @@ -0,0 +1,210 @@ +#ifndef __MDFN_CDROM_CDUTILITY_H +#define __MDFN_CDROM_CDUTILITY_H + +namespace CDUtility +{ + // Call once at app startup before creating any threads that could potentially cause re-entrancy to these functions. + // It will also be called automatically if needed for the first time a function in this namespace that requires + // the initialization function to be called is called, for potential + // usage in constructors of statically-declared objects. + void CDUtility_Init(void); + + // Quick definitions here: + // + // ABA - Absolute block address, synonymous to absolute MSF + // aba = (m_a * 60 * 75) + (s_a * 75) + f_a + // + // LBA - Logical block address(related: data CDs are required to have a pregap of 2 seconds, IE 150 frames/sectors) + // lba = aba - 150 + + + // Track formats(more abstract and simple) + typedef enum + { + CD_TRACK_FORMAT_AUDIO = 0x00, + CD_TRACK_FORMAT_DATA = 0x01, + //CDRF_FORMAT_CDI = 0x02 + } CD_Track_Format_t; + + enum + { + ADR_NOQINFO = 0x00, + ADR_CURPOS = 0x01, + ADR_MCN = 0x02, + ADR_ISRC = 0x03 + }; + + + struct TOC_Track + { + uint8 adr; + uint8 control; + uint32 lba; + }; + + enum + { + DISC_TYPE_CDDA_OR_M1 = 0x00, + DISC_TYPE_CD_I = 0x10, + DISC_TYPE_CD_XA = 0x20 + }; + + struct TOC + { + INLINE TOC() + { + Clear(); + } + + INLINE void Clear(void) + { + first_track = last_track = 0; + disc_type = 0; + + memset(tracks, 0, sizeof(tracks)); // FIXME if we change TOC_Track to non-POD type. + } + + INLINE int FindTrackByLBA(uint32 LBA) + { + for(int32 track = first_track; track <= (last_track + 1); track++) + { + if(track == (last_track + 1)) + { + if(LBA < tracks[100].lba) + return(track - 1); + } + else + { + if(LBA < tracks[track].lba) + return(track - 1); + } + } + return(0); + } + + uint8 first_track; + uint8 last_track; + uint8 disc_type; + TOC_Track tracks[100 + 1]; // [0] is unused, [100] is for the leadout track. + // Also, for convenience, tracks[last_track + 1] will always refer + // to the leadout track(even if last_track < 99, IE the leadout track details are duplicated). + }; + + // + // Address conversion functions. + // + static INLINE uint32 AMSF_to_ABA(int32 m_a, int32 s_a, int32 f_a) + { + return(f_a + 75 * s_a + 75 * 60 * m_a); + } + + static INLINE void ABA_to_AMSF(uint32 aba, uint8 *m_a, uint8 *s_a, uint8 *f_a) + { + *m_a = aba / 75 / 60; + *s_a = (aba - *m_a * 75 * 60) / 75; + *f_a = aba - (*m_a * 75 * 60) - (*s_a * 75); + } + + static INLINE int32 ABA_to_LBA(uint32 aba) + { + return(aba - 150); + } + + static INLINE uint32 LBA_to_ABA(int32 lba) + { + return(lba + 150); + } + + static INLINE int32 AMSF_to_LBA(uint8 m_a, uint8 s_a, uint8 f_a) + { + return(ABA_to_LBA(AMSF_to_ABA(m_a, s_a, f_a))); + } + + static INLINE void LBA_to_AMSF(int32 lba, uint8 *m_a, uint8 *s_a, uint8 *f_a) + { + ABA_to_AMSF(LBA_to_ABA(lba), m_a, s_a, f_a); + } + + // + // BCD conversion functions + // + static INLINE bool BCD_is_valid(uint8 bcd_number) + { + if((bcd_number & 0xF0) >= 0xA0) + return(false); + + if((bcd_number & 0x0F) >= 0x0A) + return(false); + + return(true); + } + + static INLINE uint8 BCD_to_U8(uint8 bcd_number) + { + return( ((bcd_number >> 4) * 10) + (bcd_number & 0x0F) ); + } + + static INLINE uint8 U8_to_BCD(uint8 num) + { + return( ((num / 10) << 4) + (num % 10) ); + } + + // should always perform the conversion, even if the bcd number is invalid. + static INLINE bool BCD_to_U8_check(uint8 bcd_number, uint8 *out_number) + { + *out_number = BCD_to_U8(bcd_number); + + if(!BCD_is_valid(bcd_number)) + return(false); + + return(true); + } + + // + // Sector data encoding functions(to full 2352 bytes raw sector). + // + // sector_data must be able to contain at least 2352 bytes. + void encode_mode0_sector(uint32 aba, uint8 *sector_data); + void encode_mode1_sector(uint32 aba, uint8 *sector_data); // 2048 bytes of user data at offset 16 + void encode_mode2_sector(uint32 aba, uint8 *sector_data); // 2336 bytes of user data at offset 16 + void encode_mode2_form1_sector(uint32 aba, uint8 *sector_data); // 2048+8 bytes of user data at offset 16 + void encode_mode2_form2_sector(uint32 aba, uint8 *sector_data); // 2324+8 bytes of user data at offset 16 + + // + // User data error detection and correction + // + + // Check EDC of a mode 1 or mode 2 form 1 sector. + // Returns "true" if checksum is ok(matches). + // Returns "false" if checksum mismatch. + // sector_data should contain 2352 bytes of raw sector data. + bool edc_check(const uint8 *sector_data, bool xa); + + // Check EDC and L-EC data of a mode 1 or mode 2 form 1 sector, and correct bit errors if any exist. + // Returns "true" if errors weren't detected, or they were corrected succesfully. + // Returns "false" if errors couldn't be corrected. + // sector_data should contain 2352 bytes of raw sector data. + bool edc_lec_check_correct(uint8 *sector_data, bool xa); + + // + // Subchannel(Q in particular) functions + // + + // Returns false on checksum mismatch, true on match. + bool subq_check_checksum(const uint8 *subq_buf); + + // Calculates the checksum of Q subchannel data(not including the checksum bytes of course ;)) from subq_buf, and stores it into the appropriate position + // in subq_buf. + void subq_generate_checksum(uint8 *subq_buf); + + // Deinterleaves 12 bytes of subchannel Q data from 96 bytes of interleaved subchannel PW data. + void subq_deinterleave(const uint8 *subpw_buf, uint8 *subq_buf); + + // Extrapolates Q subchannel current position data from subq_input, with frame/sector delta position_delta, and writes to subq_output. + // Only valid for ADR_CURPOS. + // subq_input must pass subq_check_checksum(). + // TODO + //void subq_extrapolate(const uint8 *subq_input, int32 position_delta, uint8 *subq_output); +} + +#endif diff --git a/libmednahawk/src/cdrom/Makefile.am.inc b/libmednahawk/src/cdrom/Makefile.am.inc new file mode 100644 index 0000000000..73ec6a90ca --- /dev/null +++ b/libmednahawk/src/cdrom/Makefile.am.inc @@ -0,0 +1,7 @@ +mednafen_SOURCES += cdrom/audioreader.cpp cdrom/cdromif.cpp cdrom/scsicd.cpp cdrom/pcecd.cpp +mednafen_SOURCES += cdrom/CDUtility.cpp cdrom/crc32.cpp cdrom/galois.cpp cdrom/l-ec.cpp cdrom/recover-raw.cpp +mednafen_SOURCES += cdrom/lec.cpp cdrom/CDAccess.cpp cdrom/CDAccess_Image.cpp + +if HAVE_LIBCDIO +mednafen_SOURCES += cdrom/CDAccess_Physical.cpp +endif diff --git a/libmednahawk/src/cdrom/SimpleFIFO.cpp b/libmednahawk/src/cdrom/SimpleFIFO.cpp new file mode 100644 index 0000000000..97328e1c61 --- /dev/null +++ b/libmednahawk/src/cdrom/SimpleFIFO.cpp @@ -0,0 +1,6 @@ +#include "../mednafen.h" +#include "SimpleFIFO.h" + + + + diff --git a/libmednahawk/src/cdrom/SimpleFIFO.h b/libmednahawk/src/cdrom/SimpleFIFO.h new file mode 100644 index 0000000000..c1b2095f2a --- /dev/null +++ b/libmednahawk/src/cdrom/SimpleFIFO.h @@ -0,0 +1,107 @@ +#ifndef __MDFN_SIMPLEFIFO_H +#define __MDFN_SIMPLEFIFO_H + +#include +#include + +#include "../math_ops.h" + +template +class SimpleFIFO +{ + public: + + // Constructor + SimpleFIFO(uint32 the_size) // Size should be a power of 2! + { + data.resize(round_up_pow2(the_size)); + size = the_size; + read_pos = 0; + write_pos = 0; + in_count = 0; + } + + // Destructor + INLINE ~SimpleFIFO() + { + + } + + INLINE uint32 CanRead(void) + { + return(in_count); + } + + INLINE uint32 CanWrite(void) + { + return(size - in_count); + } + + INLINE T ReadUnit(bool peek = false) + { + T ret; + + assert(in_count > 0); + + ret = data[read_pos]; + + if(!peek) + { + read_pos = (read_pos + 1) & (data.size() - 1); + in_count--; + } + + return(ret); + } + + INLINE uint8 ReadByte(bool peek = false) + { + assert(sizeof(T) == 1); + + return(ReadUnit(peek)); + } + + INLINE void Write(const T *happy_data, uint32 happy_count) + { + assert(CanWrite() >= happy_count); + + while(happy_count) + { + data[write_pos] = *happy_data; + + write_pos = (write_pos + 1) & (data.size() - 1); + in_count++; + happy_data++; + happy_count--; + } + } + + INLINE void WriteUnit(const T& wr_data) + { + Write(&wr_data, 1); + } + + INLINE void WriteByte(const T& wr_data) + { + assert(sizeof(T) == 1); + Write(&wr_data, 1); + } + + + INLINE void Flush(void) + { + read_pos = 0; + write_pos = 0; + in_count = 0; + } + + //private: + std::vector data; + uint32 size; + uint32 read_pos; // Read position + uint32 write_pos; // Write position + uint32 in_count; // Number of units in the FIFO +}; + + +#endif diff --git a/libmednahawk/src/cdrom/audioreader.cpp b/libmednahawk/src/cdrom/audioreader.cpp new file mode 100644 index 0000000000..0d0b2c3bd3 --- /dev/null +++ b/libmednahawk/src/cdrom/audioreader.cpp @@ -0,0 +1,582 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// AR_Open(), and AudioReader, will NOT take "ownership" of the Stream object(IE it won't ever delete it). Though it does assume it has exclusive access +// to it for as long as the AudioReader object exists. + +// Don't allow exceptions to propagate into the vorbis/musepack/etc. libraries, as it could easily leave the state of the library's decoder "object" in an +// inconsistent state, which would cause all sorts of unfun when we try to destroy it while handling the exception farther up. + +//zero 29-oct-2012 - audioreader not supported +/* + +#include "../mednafen.h" +#include "audioreader.h" + +#include +#include + +#include "../tremor/ivorbisfile.h" +#include "../mpcdec/mpcdec.h" + +#ifdef HAVE_LIBSNDFILE +#include +#endif + +#ifdef HAVE_OPUSFILE +#include "audioreader_opus.h" +#endif + +#include +#include +#include + +#include "../general.h" +#include "../endian.h" + +AudioReader::AudioReader() : LastReadPos(0) +{ + +} + +AudioReader::~AudioReader() +{ + +} + +int64 AudioReader::Read_(int16 *buffer, int64 frames) +{ + abort(); + return(false); +} + +bool AudioReader::Seek_(int64 frame_offset) +{ + abort(); + return(false); +} + +int64 AudioReader::FrameCount(void) +{ + abort(); + return(0); +} + +class OggVorbisReader : public AudioReader +{ + public: + OggVorbisReader(Stream *fp); + ~OggVorbisReader(); + + int64 Read_(int16 *buffer, int64 frames); + bool Seek_(int64 frame_offset); + int64 FrameCount(void); + + private: + OggVorbis_File ovfile; + Stream *fw; +}; + + +static size_t iov_read_func(void *ptr, size_t size, size_t nmemb, void *user_data) +{ + Stream *fw = (Stream*)user_data; + + if(!size) + return(0); + + try + { + return fw->read(ptr, size * nmemb, false) / size; + } + catch(...) + { + return(0); + } +} + +static int iov_seek_func(void *user_data, ogg_int64_t offset, int whence) +{ + Stream *fw = (Stream*)user_data; + + try + { + fw->seek(offset, whence); + return(0); + } + catch(...) + { + return(-1); + } +} + +static int iov_close_func(void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + fw->close(); + return(0); + } + catch(...) + { + return EOF; + } +} + +static long iov_tell_func(void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + return fw->tell(); + } + catch(...) + { + return(-1); + } +} + +OggVorbisReader::OggVorbisReader(Stream *fp) : fw(fp) +{ + ov_callbacks cb; + + memset(&cb, 0, sizeof(cb)); + cb.read_func = iov_read_func; + cb.seek_func = iov_seek_func; + cb.close_func = iov_close_func; + cb.tell_func = iov_tell_func; + + fp->seek(0, SEEK_SET); + if(ov_open_callbacks(fp, &ovfile, NULL, 0, cb)) + throw(0); +} + +OggVorbisReader::~OggVorbisReader() +{ + ov_clear(&ovfile); +} + +int64 OggVorbisReader::Read_(int16 *buffer, int64 frames) +{ + uint8 *tw_buf = (uint8 *)buffer; + int cursection = 0; + long toread = frames * sizeof(int16) * 2; + + while(toread > 0) + { + long didread = ov_read(&ovfile, (char*)tw_buf, toread, &cursection); + + if(didread == 0) + break; + + tw_buf = (uint8 *)tw_buf + didread; + toread -= didread; + } + + return(frames - toread / sizeof(int16) / 2); +} + +bool OggVorbisReader::Seek_(int64 frame_offset) +{ + ov_pcm_seek(&ovfile, frame_offset); + return(true); +} + +int64 OggVorbisReader::FrameCount(void) +{ + return(ov_pcm_total(&ovfile, -1)); +} + +class MPCReader : public AudioReader +{ + public: + MPCReader(Stream *fp); + ~MPCReader(); + + int64 Read_(int16 *buffer, int64 frames); + bool Seek_(int64 frame_offset); + int64 FrameCount(void); + + private: + mpc_reader reader; + mpc_demux *demux; + mpc_streaminfo si; + + MPC_SAMPLE_FORMAT MPCBuffer[MPC_DECODER_BUFFER_LENGTH]; + + uint32 MPCBufferIn; + uint32 MPCBufferOffs; + Stream *fw; +}; + + +/// Reads size bytes of data into buffer at ptr. +static mpc_int32_t impc_read(mpc_reader *p_reader, void *ptr, mpc_int32_t size) +{ + Stream *fw = (Stream*)(p_reader->data); + + try + { + return fw->read(ptr, size, false); + } + catch(...) + { + return(MPC_STATUS_FAIL); + } +} + +/// Seeks to byte position offset. +static mpc_bool_t impc_seek(mpc_reader *p_reader, mpc_int32_t offset) +{ + Stream *fw = (Stream*)(p_reader->data); + + try + { + fw->seek(offset, SEEK_SET); + return(MPC_TRUE); + } + catch(...) + { + return(MPC_FALSE); + } +} + +/// Returns the current byte offset in the stream. +static mpc_int32_t impc_tell(mpc_reader *p_reader) +{ + Stream *fw = (Stream*)(p_reader->data); + + try + { + return fw->tell(); + } + catch(...) + { + return(MPC_STATUS_FAIL); + } +} + +/// Returns the total length of the source stream, in bytes. +static mpc_int32_t impc_get_size(mpc_reader *p_reader) +{ + Stream *fw = (Stream*)(p_reader->data); + + try + { + return fw->size(); + } + catch(...) + { + return(MPC_STATUS_FAIL); + } +} + +/// True if the stream is a seekable stream. +static mpc_bool_t impc_canseek(mpc_reader *p_reader) +{ + return(MPC_TRUE); +} + +MPCReader::MPCReader(Stream *fp) : fw(fp) +{ + fp->seek(0, SEEK_SET); + + demux = NULL; + memset(&si, 0, sizeof(si)); + memset(MPCBuffer, 0, sizeof(MPCBuffer)); + MPCBufferOffs = 0; + MPCBufferIn = 0; + + memset(&reader, 0, sizeof(reader)); + reader.read = impc_read; + reader.seek = impc_seek; + reader.tell = impc_tell; + reader.get_size = impc_get_size; + reader.canseek = impc_canseek; + reader.data = (void*)fp; + + if(!(demux = mpc_demux_init(&reader))) + { + throw(0); + } + mpc_demux_get_info(demux, &si); + + if(si.channels != 2) + { + mpc_demux_exit(demux); + demux = NULL; + throw MDFN_Error(0, _("MusePack stream has wrong number of channels(%u); the correct number is 2."), si.channels); + } + + if(si.sample_freq != 44100) + { + mpc_demux_exit(demux); + demux = NULL; + throw MDFN_Error(0, _("MusePack stream has wrong samplerate(%u Hz); the current samplerate is 44100 Hz."), si.sample_freq); + } +} + +MPCReader::~MPCReader() +{ + if(demux) + { + mpc_demux_exit(demux); + demux = NULL; + } +} + +int64 MPCReader::Read_(int16 *buffer, int64 frames) +{ + mpc_status err; + int16 *cowbuf = (int16 *)buffer; + int32 toread = frames * 2; + + while(toread > 0) + { + int32 tmplen; + + if(!MPCBufferIn) + { + mpc_frame_info fi; + memset(&fi, 0, sizeof(fi)); + + fi.buffer = MPCBuffer; + if((err = mpc_demux_decode(demux, &fi)) < 0 || fi.bits == -1) + return(frames - toread / 2); + + MPCBufferIn = fi.samples * 2; + MPCBufferOffs = 0; + } + + tmplen = MPCBufferIn; + + if(tmplen >= toread) + tmplen = toread; + + for(int x = 0; x < tmplen; x++) + { +#ifdef MPC_FIXED_POINT + int32 samp = MPCBuffer[MPCBufferOffs + x] >> MPC_FIXED_POINT_FRACTPART; +#else + #warning Floating-point MPC decoding path not tested. + int32 samp = (int32)(MPCBuffer[MPCBufferOffs + x] * 32767); +#endif + if(samp < -32768) + samp = -32768; + + if(samp > 32767) + samp = 32767; + + *cowbuf = (int16)samp; + cowbuf++; + } + + MPCBufferOffs += tmplen; + toread -= tmplen; + MPCBufferIn -= tmplen; + } + + return(frames - toread / 2); +} + +bool MPCReader::Seek_(int64 frame_offset) +{ + MPCBufferOffs = 0; + MPCBufferIn = 0; + + if(mpc_demux_seek_sample(demux, frame_offset) < 0) + return(false); + + return(true); +} + +int64 MPCReader::FrameCount(void) +{ + return(mpc_streaminfo_get_length_samples(&si)); +} + + +#ifdef HAVE_LIBSNDFILE +class SFReader : public AudioReader +{ + public: + + SFReader(Stream *fp); + ~SFReader(); + + int64 Read_(int16 *buffer, int64 frames); + bool Seek_(int64 frame_offset); + int64 FrameCount(void); + + private: + SNDFILE *sf; + SF_INFO sfinfo; + SF_VIRTUAL_IO sfvf; + + Stream *fw; +}; + +static sf_count_t isf_get_filelen(void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + return fw->size(); + } + catch(...) + { + return(-1); + } +} + +static sf_count_t isf_seek(sf_count_t offset, int whence, void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + fw->seek(offset, whence); + return fw->tell(); + } + catch(...) + { + return(-1); + } +} + +static sf_count_t isf_read(void *ptr, sf_count_t count, void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + return fw->read(ptr, count); + } + catch(...) + { + return(0); + } +} + +static sf_count_t isf_write(const void *ptr, sf_count_t count, void *user_data) +{ + return(0); +} + +static sf_count_t isf_tell(void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + return fw->tell(); + } + catch(...) + { + return(-1); + } +} + +SFReader::SFReader(Stream *fp) : fw(fp) +{ + fp->seek(0, SEEK_SET); + + memset(&sfvf, 0, sizeof(sfvf)); + sfvf.get_filelen = isf_get_filelen; + sfvf.seek = isf_seek; + sfvf.read = isf_read; + sfvf.write = isf_write; + sfvf.tell = isf_tell; + + memset(&sfinfo, 0, sizeof(sfinfo)); + if(!(sf = sf_open_virtual(&sfvf, SFM_READ, &sfinfo, (void*)fp))) + throw(0); +} + +SFReader::~SFReader() +{ + sf_close(sf); +} + +int64 SFReader::Read_(int16 *buffer, int64 frames) +{ + return(sf_read_short(sf, (short*)buffer, frames * 2) / 2); +} + +bool SFReader::Seek_(int64 frame_offset) +{ + // FIXME error condition + if(sf_seek(sf, frame_offset, SEEK_SET) != frame_offset) + return(false); + return(true); +} + +int64 SFReader::FrameCount(void) +{ + return(sfinfo.frames); +} + +#endif + + +AudioReader *AR_Open(Stream *fp) +{ + try + { + return new MPCReader(fp); + } + catch(int i) + { + } + +#ifdef HAVE_OPUSFILE + try + { + return new OpusReader(fp); + } + catch(int i) + { + } +#endif + + try + { + return new OggVorbisReader(fp); + } + catch(int i) + { + } + +#ifdef HAVE_LIBSNDFILE + try + { + return new SFReader(fp); + } + catch(int i) + { + } +#endif + + return(NULL); +} + + +*/ \ No newline at end of file diff --git a/libmednahawk/src/cdrom/audioreader.h b/libmednahawk/src/cdrom/audioreader.h new file mode 100644 index 0000000000..014a3e48d3 --- /dev/null +++ b/libmednahawk/src/cdrom/audioreader.h @@ -0,0 +1,43 @@ +#ifndef __MDFN_AUDIOREADER_H +#define __MDFN_AUDIOREADER_H + +#include "../Stream.h" + +class AudioReader +{ + public: + AudioReader(); + virtual ~AudioReader(); + + virtual int64 FrameCount(void); + INLINE int64 Read(int64 frame_offset, int16 *buffer, int64 frames) + { + int64 ret; + + //if(frame_offset >= 0) + { + if(LastReadPos != frame_offset) + { + //puts("SEEK"); + if(!Seek_(frame_offset)) + return(0); + LastReadPos = frame_offset; + } + } + ret = Read_(buffer, frames); + LastReadPos += ret; + return(ret); + } + + private: + virtual int64 Read_(int16 *buffer, int64 frames); + virtual bool Seek_(int64 frame_offset); + + int64 LastReadPos; +}; + +// AR_Open(), and AudioReader, will NOT take "ownership" of the Stream object(IE it won't ever delete it). Though it does assume it has exclusive access +// to it for as long as the AudioReader object exists. +AudioReader *AR_Open(Stream *fp); + +#endif diff --git a/libmednahawk/src/cdrom/audioreader_opus.cpp b/libmednahawk/src/cdrom/audioreader_opus.cpp new file mode 100644 index 0000000000..264fde4b06 --- /dev/null +++ b/libmednahawk/src/cdrom/audioreader_opus.cpp @@ -0,0 +1,185 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "audioreader.h" +#include "audioreader_opus.h" + +// OPUS SUPPORT NOT DONE YET!!! +/* + + (int64)op_pcm_total() * 44100 / 48000 + + resampling vs seek, filter delay, etc. to consider +*/ + +static size_t iop_read_func(void *ptr, size_t size, size_t nmemb, void *user_data) +{ + Stream *fw = (Stream*)user_data; + + if(!size) + return(0); + + try + { + return fw->read(ptr, size * nmemb, false) / size; + } + catch(...) + { + return(0); + } +} + +static int iop_seek_func(void *user_data, opus_int64 offset, int whence) +{ + Stream *fw = (Stream*)user_data; + + try + { + fw->seek(offset, whence); + return(0); + } + catch(...) + { + return(-1); + } +} + +static int iop_close_func(void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + fw->close(); + return(0); + } + catch(...) + { + return EOF; + } +} + +static opus_int64 iop_tell_func(void *user_data) +{ + Stream *fw = (Stream*)user_data; + + try + { + return fw->tell(); + } + catch(...) + { + return(-1); + } +} + +/* Error strings copied from libopusfile header file comments. */ +static const char *op_errstring(int error) +{ + static const struct + { + int code; + const char *str; + } error_table[] = + { + { OP_EREAD, gettext_noop("OP_EREAD: An underlying read, seek, or tell operation failed when it should have succeeded.") }, + { OP_EFAULT, gettext_noop("OP_EFAULT: A NULL pointer was passed where one was unexpected, or an internal memory allocation failed, or an internal library error was encountered.") }, + { OP_EIMPL, gettext_noop("OP_EIMPL: The stream used a feature that is not implemented, such as an unsupported channel family.") }, + { OP_EINVAL, gettext_noop("OP_EINVAL: One or more parameters to a function were invalid.") }, + { OP_ENOTFORMAT, gettext_noop("OP_ENOTFORMAT: A purported Ogg Opus stream did not begin with an Ogg page, or a purported header packet did not start with one of the required strings, \"OpusHead\" or \"OpusTags\".") }, + { OP_EBADHEADER, gettext_noop("OP_EBADHEADER: A required header packet was not properly formatted, contained illegal values, or was missing altogether.") }, + { OP_EVERSION, gettext_noop("OP_EVERSION: The ID header contained an unrecognized version number.") }, + { OP_EBADPACKET, gettext_noop("OP_EBADPACKET: An audio packet failed to decode properly.") }, + { OP_EBADLINK, gettext_noop("OP_EBADLINK: We failed to find data we had seen before, or the bitstream structure was sufficiently malformed that seeking to the target destination was impossible.") }, + { OP_ENOSEEK, gettext_noop("OP_ENOSEEK: An operation that requires seeking was requested on an unseekable stream.") }, + { OP_EBADTIMESTAMP, gettext_noop("OP_EBADTIMESTAMP: The first or last granule position of a link failed basic validity checks.") }, + }; + + for(unsigned i = 0; i < sizeof(error_table) / sizeof(error_table[0]); i++) + { + if(error_table[i].code == error) + { + return _(error_table[i].str); + } + } + + return _("Unknown"); +} + +OggOpusReader::OggOpusReader(Stream *fp) : fw(fp) +{ + OpusFileCallbacks cb; + int error = 0; + + memset(&cb, 0, sizeof(cb)); + cb.read_func = iop_read_func; + cb.seek_func = iop_seek_func; + cb.close_func = iop_close_func; + cb.tell_func = iop_tell_func; + + fp->seek(0, SEEK_SET); + + if(!(opfile = op_open_callbacks((void*)fp, &cb, NULL, 0, &error))) + { + switch(error) + { + default: + throw MDFN_Error(0, _("opusfile: error code: %d(%s)", error, op_errstring(error))); + break; + + case OP_ENOTFORMAT: + throw(0); + break; + } + } +} + +OggOpusReader::~OggOpusReader() +{ + op_free(opfile); +} + +int64 OggOpusReader::Read_(int16 *buffer, int64 frames) +{ + int16 *tr_buffer = buffer; + int64 tr_count = frames * 2; + + while(tr_count > 0) + { + int64 didread = op_read(opfile, tr_buffer, tr_count, NULL); + + if(didread == 0) + break; + + tr_buffer += didread * 2; + tr_count -= didread * 2; + } + + return(frames - (tr_count / 2)); +} + +bool OggOpusReader::Seek_(int64 frame_offset) +{ + op_pcm_seek(opfile, frame_offset); + return(true); +} + +int64 OggOpusReader::FrameCount(void) +{ + return(op_pcm_total(pvfile, -1)); +} diff --git a/libmednahawk/src/cdrom/audioreader_opus.h b/libmednahawk/src/cdrom/audioreader_opus.h new file mode 100644 index 0000000000..130b3546c7 --- /dev/null +++ b/libmednahawk/src/cdrom/audioreader_opus.h @@ -0,0 +1,21 @@ +#ifndef __MDFN_AUDIOREADER_OPUS_H +#define __MDFN_AUDIOREADER_OPUS_H + +#include + +class OggOpusReader : public AudioReader +{ + public: + OggOpusReader(Stream *fp); + ~OggOpusReader(); + + int64 Read_(int16 *buffer, int64 frames); + bool Seek_(int64 frame_offset); + int64 FrameCount(void); + + private: + OggOpus_File *opfile; + Stream *fw; +}; + +#endif diff --git a/libmednahawk/src/cdrom/cdromif.cpp b/libmednahawk/src/cdrom/cdromif.cpp new file mode 100644 index 0000000000..42f3cad6d8 --- /dev/null +++ b/libmednahawk/src/cdrom/cdromif.cpp @@ -0,0 +1,731 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include +#include +#include +#include "cdromif.h" +#include "CDAccess.h" +#include "../general.h" + +#include + +using namespace CDUtility; + +CDIF::CDIF() : UnrecoverableError(false), is_phys_cache(false), disc_cdaccess(NULL), DiscEjected(false) +{ + +} + +CDIF::~CDIF() +{ + +} + + +CDIF_Message::CDIF_Message() +{ + message = 0; + + memset(args, 0, sizeof(args)); +} + +CDIF_Message::CDIF_Message(unsigned int message_, uint32 arg0, uint32 arg1, uint32 arg2, uint32 arg3) +{ + message = message_; + args[0] = arg0; + args[1] = arg1; + args[2] = arg2; + args[3] = arg3; +} + +CDIF_Message::CDIF_Message(unsigned int message_, const std::string &str) +{ + message = message_; + str_message = str; +} + +CDIF_Message::~CDIF_Message() +{ + +} + +CDIF_Queue::CDIF_Queue() +{ + ze_mutex = MDFND_CreateMutex(); +} + +CDIF_Queue::~CDIF_Queue() +{ + MDFND_DestroyMutex(ze_mutex); +} + +// Returns FALSE if message not read, TRUE if it was read. Will always return TRUE if "blocking" is set. +// Will throw MDFN_Error if the read message code is CDIF_MSG_FATAL_ERROR +bool CDIF_Queue::Read(CDIF_Message *message, bool blocking) +{ + TryAgain: + + MDFND_LockMutex(ze_mutex); + + if(ze_queue.size() > 0) + { + *message = ze_queue.front(); + ze_queue.pop(); + MDFND_UnlockMutex(ze_mutex); + + if(message->message == CDIF_MSG_FATAL_ERROR) + throw MDFN_Error(0, "%s", message->str_message.c_str()); + + return(TRUE); + } + else if(blocking) + { + MDFND_UnlockMutex(ze_mutex); + MDFND_Sleep(1); + goto TryAgain; + } + else + { + MDFND_UnlockMutex(ze_mutex); + return(FALSE); + } +} + +void CDIF_Queue::Write(const CDIF_Message &message) +{ + MDFND_LockMutex(ze_mutex); + + ze_queue.push(message); + + MDFND_UnlockMutex(ze_mutex); +} + + +void CDIF_MT::RT_EjectDisc(bool eject_status, bool skip_actual_eject) +{ + int32 old_de = DiscEjected; + + DiscEjected = eject_status; + + if(old_de != DiscEjected) + { + if(!skip_actual_eject) + disc_cdaccess->Eject(eject_status); + + if(!eject_status) // Re-read the TOC + { + disc_cdaccess->Read_TOC(&disc_toc); + + if(disc_toc.first_track < 1 || disc_toc.last_track > 99 || disc_toc.first_track > disc_toc.last_track) + { + throw(MDFN_Error(0, _("TOC first(%d)/last(%d) track numbers bad."), disc_toc.first_track, disc_toc.last_track)); + } + } + + SBWritePos = 0; + ra_lba = 0; + ra_count = 0; + last_read_lba = ~0U; + memset(SectorBuffers, 0, SBSize * sizeof(CDIF_Sector_Buffer)); + } +} + +struct RTS_Args +{ + CDIF_MT *cdif_ptr; + const char *device_name; +}; + +static int ReadThreadStart_C(void *v_arg) +{ + RTS_Args *args = (RTS_Args *)v_arg; + + //zero 07-feb-2012 - fix dynamic stack buffer + if(args->device_name) + { + char *device_name = new char[strlen(args->device_name) + 1]; + + strcpy(device_name, args->device_name); + + int ret = args->cdif_ptr->ReadThreadStart(device_name); + delete[] device_name; + return ret; + } + else + return args->cdif_ptr->ReadThreadStart(NULL); +} + +int CDIF_MT::ReadThreadStart(const char *device_name) +{ + bool Running = TRUE; + + DiscEjected = true; + SBWritePos = 0; + ra_lba = 0; + ra_count = 0; + last_read_lba = ~0U; + + try + { + disc_cdaccess = cdaccess_open(device_name ? device_name : NULL, false); + RT_EjectDisc(false, true); + } + catch(std::exception &e) + { + EmuThreadQueue.Write(CDIF_Message(CDIF_MSG_FATAL_ERROR, std::string(e.what()))); + return(0); + } + + is_phys_cache = disc_cdaccess->Is_Physical(); + + EmuThreadQueue.Write(CDIF_Message(CDIF_MSG_DONE)); + + while(Running) + { + CDIF_Message msg; + + // Only do a blocking-wait for a message if we don't have any sectors to read-ahead. + // MDFN_DispMessage("%d %d %d\n", last_read_lba, ra_lba, ra_count); + if(ReadThreadQueue.Read(&msg, ra_count ? FALSE : TRUE)) + { + switch(msg.message) + { + case CDIF_MSG_DIEDIEDIE: + Running = FALSE; + break; + + case CDIF_MSG_EJECT: + try + { + RT_EjectDisc(msg.args[0]); + EmuThreadQueue.Write(CDIF_Message(CDIF_MSG_DONE)); + } + catch(std::exception &e) + { + EmuThreadQueue.Write(CDIF_Message(CDIF_MSG_FATAL_ERROR, std::string(e.what()))); + } + break; + + case CDIF_MSG_READ_SECTOR: + { + static const int max_ra = 16; + static const int initial_ra = 1; + static const int speedmult_ra = 2; + uint32 new_lba = msg.args[0]; + + assert((unsigned int)max_ra < (SBSize / 4)); + + if(last_read_lba != ~0U && new_lba == (last_read_lba + 1)) + { + int how_far_ahead = ra_lba - new_lba; + + if(how_far_ahead <= max_ra) + ra_count = std::min(speedmult_ra, 1 + max_ra - how_far_ahead); + else + ra_count++; + } + else if(new_lba != last_read_lba) + { + ra_lba = new_lba; + ra_count = initial_ra; + } + + last_read_lba = new_lba; + } + break; + } + } + + // Don't read >= the "end" of the disc, silly snake. Slither. + if(ra_count && ra_lba == disc_toc.tracks[100].lba) + { + ra_count = 0; + //printf("Ephemeral scarabs: %d!\n", ra_lba); + } + + if(ra_count) + { + uint8 tmpbuf[2352 + 96]; + bool error_condition = false; + + try + { + disc_cdaccess->Read_Raw_Sector(tmpbuf, ra_lba); + } + catch(std::exception &e) + { + MDFN_PrintError(_("Sector %u read error: %s"), ra_lba, e.what()); + memset(tmpbuf, 0, sizeof(tmpbuf)); + error_condition = true; + } + + MDFND_LockMutex(SBMutex); + + SectorBuffers[SBWritePos].lba = ra_lba; + memcpy(SectorBuffers[SBWritePos].data, tmpbuf, 2352 + 96); + SectorBuffers[SBWritePos].valid = TRUE; + SectorBuffers[SBWritePos].error = error_condition; + SBWritePos = (SBWritePos + 1) % SBSize; + + MDFND_UnlockMutex(SBMutex); + + ra_lba++; + ra_count--; + } + } + + if(disc_cdaccess) + { + delete disc_cdaccess; + disc_cdaccess = NULL; + } + + return(1); +} + +CDIF_MT::CDIF_MT(const char *device_name) : CDReadThread(NULL), SBMutex(NULL) +{ + try + { + CDIF_Message msg; + RTS_Args s; + + SBMutex = MDFND_CreateMutex(); + UnrecoverableError = false; + + s.cdif_ptr = this; + s.device_name = device_name; + + CDReadThread = MDFND_CreateThread(ReadThreadStart_C, &s); + EmuThreadQueue.Read(&msg); + } + catch(...) + { + if(CDReadThread) + { + MDFND_WaitThread(CDReadThread, NULL); + CDReadThread = NULL; + } + + if(SBMutex) + { + MDFND_DestroyMutex(SBMutex); + SBMutex = NULL; + } + + throw; + } +} + + +CDIF_MT::~CDIF_MT() +{ + bool thread_murdered_with_kitchen_knife = false; + + try + { + ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_DIEDIEDIE)); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + MDFND_KillThread(CDReadThread); + thread_murdered_with_kitchen_knife = true; + } + + if(!thread_murdered_with_kitchen_knife) + MDFND_WaitThread(CDReadThread, NULL); + + if(SBMutex) + { + MDFND_DestroyMutex(SBMutex); + SBMutex = NULL; + } +} + +bool CDIF::ValidateRawSector(uint8 *buf) +{ + int mode = buf[12 + 3]; + + if(mode != 0x1 && mode != 0x2) + return(false); + + if(!edc_lec_check_correct(buf, mode == 2)) + return(false); + + return(true); +} + +bool CDIF_MT::ReadRawSector(uint8 *buf, uint32 lba) +{ + bool found = FALSE; + bool error_condition = false; + + if(UnrecoverableError) + { + memset(buf, 0, 2352 + 96); + return(false); + } + + // This shouldn't happen, the emulated-system-specific CDROM emulation code should make sure the emulated program doesn't try + // to read past the last "real" sector of the disc. + if(lba >= disc_toc.tracks[100].lba) + { + printf("Attempt to read LBA %d, >= LBA %d\n", lba, disc_toc.tracks[100].lba); + return(FALSE); + } + + ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_READ_SECTOR, lba)); + + do + { + MDFND_LockMutex(SBMutex); + + for(int i = 0; i < SBSize; i++) + { + if(SectorBuffers[i].valid && SectorBuffers[i].lba == lba) + { + error_condition = SectorBuffers[i].error; + memcpy(buf, SectorBuffers[i].data, 2352 + 96); + found = TRUE; + } + } + + MDFND_UnlockMutex(SBMutex); + + if(!found) + MDFND_Sleep(1); + } while(!found); + + return(!error_condition); +} + +void CDIF_MT::HintReadSector(uint32 lba) +{ + if(UnrecoverableError) + return; + + ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_READ_SECTOR, lba)); +} + +int CDIF::ReadSector(uint8* pBuf, uint32 lba, uint32 nSectors) +{ + int ret = 0; + + if(UnrecoverableError) + return(false); + + while(nSectors--) + { + uint8 tmpbuf[2352 + 96]; + + if(!ReadRawSector(tmpbuf, lba)) + { + puts("CDIF Raw Read error"); + return(FALSE); + } + + if(!ValidateRawSector(tmpbuf)) + { + MDFN_DispMessage(_("Uncorrectable data at sector %d"), lba); + MDFN_PrintError(_("Uncorrectable data at sector %d"), lba); + return(false); + } + + const int mode = tmpbuf[12 + 3]; + + if(!ret) + ret = mode; + + if(mode == 1) + { + memcpy(pBuf, &tmpbuf[12 + 4], 2048); + } + else if(mode == 2) + { + memcpy(pBuf, &tmpbuf[12 + 4 + 8], 2048); + } + else + { + printf("CDIF_ReadSector() invalid sector type at LBA=%u\n", (unsigned int)lba); + return(false); + } + + pBuf += 2048; + lba++; + } + + return(ret); +} + +bool CDIF_MT::Eject(bool eject_status) +{ + if(UnrecoverableError) + return(false); + + try + { + CDIF_Message msg; + + ReadThreadQueue.Write(CDIF_Message(CDIF_MSG_EJECT, eject_status)); + EmuThreadQueue.Read(&msg); + } + catch(std::exception &e) + { + MDFN_PrintError(_("Error on eject/insert attempt: %s"), e.what()); + return(false); + } + + return(true); +} + +// +// +// Single-threaded implementation follows. +// +// + +CDIF_ST::CDIF_ST(const char *device_name, bool di_memcache) +{ + puts("***WARNING USING SINGLE-THREADED CD READER***"); + + disc_cdaccess = cdaccess_open(device_name ? device_name : NULL, false); + is_phys_cache = disc_cdaccess->Is_Physical(); + UnrecoverableError = false; + DiscEjected = false; + + disc_cdaccess->Read_TOC(&disc_toc); + + if(disc_toc.first_track < 1 || disc_toc.last_track > 99 || disc_toc.first_track > disc_toc.last_track) + { + throw(MDFN_Error(0, _("TOC first(%d)/last(%d) track numbers bad."), disc_toc.first_track, disc_toc.last_track)); + } +} + +CDIF_ST::~CDIF_ST() +{ + if(disc_cdaccess) + { + delete disc_cdaccess; + disc_cdaccess = NULL; + } +} + +void CDIF_ST::HintReadSector(uint32 lba) +{ + // TODO: disc_cdaccess seek hint? (probably not, would require asynchronousitycamel) +} + +bool CDIF_ST::ReadRawSector(uint8 *buf, uint32 lba) +{ + if(UnrecoverableError) + { + memset(buf, 0, 2352 + 96); + return(false); + } + + try + { + disc_cdaccess->Read_Raw_Sector(buf, lba); + } + catch(std::exception &e) + { + MDFN_PrintError(_("Sector %u read error: %s"), lba, e.what()); + memset(buf, 0, 2352 + 96); + return(false); + } + + return(true); +} + +bool CDIF_ST::Eject(bool eject_status) +{ + if(UnrecoverableError) + return(false); + + try + { + int32 old_de = DiscEjected; + + DiscEjected = eject_status; + + if(old_de != DiscEjected) + { + disc_cdaccess->Eject(eject_status); + + if(!eject_status) // Re-read the TOC + { + disc_cdaccess->Read_TOC(&disc_toc); + + if(disc_toc.first_track < 1 || disc_toc.last_track > 99 || disc_toc.first_track > disc_toc.last_track) + { + throw(MDFN_Error(0, _("TOC first(%d)/last(%d) track numbers bad."), disc_toc.first_track, disc_toc.last_track)); + } + } + } + } + catch(std::exception &e) + { + MDFN_PrintError("%s", e.what()); + return(false); + } + + return(true); +} + + +class CDIF_Stream_Thing : public Stream +{ + public: + + CDIF_Stream_Thing(CDIF *cdintf_arg, uint32 lba_arg, uint32 sector_count_arg); + ~CDIF_Stream_Thing(); + + virtual uint64 attributes(void); + virtual uint8 *map(void); + virtual void unmap(void); + + virtual uint64 read(void *data, uint64 count, bool error_on_eos = true); + virtual void write(const void *data, uint64 count); + + virtual void seek(int64 offset, int whence); + virtual int64 tell(void); + virtual int64 size(void); + virtual void close(void); + + private: + CDIF *cdintf; + const uint32 start_lba; + const uint32 sector_count; + int64 position; +}; + +CDIF_Stream_Thing::CDIF_Stream_Thing(CDIF *cdintf_arg, uint32 start_lba_arg, uint32 sector_count_arg) : cdintf(cdintf_arg), start_lba(start_lba_arg), sector_count(sector_count_arg) +{ + +} + +CDIF_Stream_Thing::~CDIF_Stream_Thing() +{ + +} + +uint64 CDIF_Stream_Thing::attributes(void) +{ + return(ATTRIBUTE_READABLE | ATTRIBUTE_SEEKABLE); +} + +uint8 *CDIF_Stream_Thing::map(void) +{ + return NULL; +} + +void CDIF_Stream_Thing::unmap(void) +{ + +} + +uint64 CDIF_Stream_Thing::read(void *data, uint64 count, bool error_on_eos) +{ + if(count > (((uint64)sector_count * 2048) - position)) + { + if(error_on_eos) + { + throw MDFN_Error(0, "EOF"); + } + + count = ((uint64)sector_count * 2048) - position; + } + + if(!count) + return(0); + + for(uint64 rp = position; rp < (position + count); rp = (rp &~ 2047) + 2048) + { + uint8 buf[2048]; + + if(!cdintf->ReadSector(buf, start_lba + (rp / 2048), 1)) + { + throw MDFN_Error(ErrnoHolder(EIO)); + } + + //::printf("Meow: %08llx -- %08llx\n", count, (rp - position) + std::min(2048 - (rp & 2047), count - (rp - position))); + memcpy((uint8*)data + (rp - position), buf + (rp & 2047), std::min(2048 - (rp & 2047), count - (rp - position))); + } + + position += count; + + return count; +} + +void CDIF_Stream_Thing::write(const void *data, uint64 count) +{ + throw MDFN_Error(ErrnoHolder(EBADF)); +} + +void CDIF_Stream_Thing::seek(int64 offset, int whence) +{ + int64 new_position; + + switch(whence) + { + default: + throw MDFN_Error(ErrnoHolder(EINVAL)); + break; + + case SEEK_SET: + new_position = offset; + break; + + case SEEK_CUR: + new_position = position + offset; + break; + + case SEEK_END: + new_position = ((int64)sector_count * 2048) + offset; + break; + } + + if(new_position < 0 || new_position > ((int64)sector_count * 2048)) + throw MDFN_Error(ErrnoHolder(EINVAL)); + + position = new_position; +} + +int64 CDIF_Stream_Thing::tell(void) +{ + return position; +} + +int64 CDIF_Stream_Thing::size(void) +{ + return(sector_count * 2048); +} + +void CDIF_Stream_Thing::close(void) +{ + +} + + +Stream *CDIF::MakeStream(uint32 lba, uint32 sector_count) +{ + return new CDIF_Stream_Thing(this, lba, sector_count); +} + diff --git a/libmednahawk/src/cdrom/cdromif.h b/libmednahawk/src/cdrom/cdromif.h new file mode 100644 index 0000000000..107a51cda9 --- /dev/null +++ b/libmednahawk/src/cdrom/cdromif.h @@ -0,0 +1,190 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __MDFN_CDROM_CDROMIF_H +#define __MDFN_CDROM_CDROMIF_H + +#include "CDUtility.h" +#include "../Stream.h" + +#include + +typedef CDUtility::TOC CD_TOC; +class CDAccess; + +class CDIF +{ + public: + + CDIF(); + virtual ~CDIF(); + + inline void ReadTOC(CDUtility::TOC *read_target) + { + *read_target = disc_toc; + } + + virtual void HintReadSector(uint32 lba) = 0; + virtual bool ReadRawSector(uint8 *buf, uint32 lba) = 0; + + // Call for mode 1 or mode 2 form 1 only. + bool ValidateRawSector(uint8 *buf); + + // Utility/Wrapped functions + // Reads mode 1 and mode2 form 1 sectors(2048 bytes per sector returned) + // Will return the type(1, 2) of the first sector read to the buffer supplied, 0 on error + int ReadSector(uint8* pBuf, uint32 lba, uint32 nSectors); + + // Return true if operation succeeded or it was a NOP(either due to not being implemented, or the current status matches eject_status). + // Returns false on failure(usually drive error of some kind; not completely fatal, can try again). + virtual bool Eject(bool eject_status) = 0; + + inline bool IsPhysical(void) { return(is_phys_cache); } + + // For Mode 1, or Mode 2 Form 1. + // No reference counting or whatever is done, so if you destroy the CDIF object before you destroy the returned Stream, things will go BOOM. + Stream *MakeStream(uint32 lba, uint32 sector_count); + + protected: + bool UnrecoverableError; + bool is_phys_cache; + CDUtility::TOC disc_toc; + CDAccess *disc_cdaccess; + bool DiscEjected; +}; + +enum +{ + // Status/Error messages + CDIF_MSG_DONE = 0, // Read -> emu. args: No args. + CDIF_MSG_INFO, // Read -> emu. args: str_message + CDIF_MSG_FATAL_ERROR, // Read -> emu. args: *TODO ARGS* + + // + // Command messages. + // + CDIF_MSG_DIEDIEDIE, // Emu -> read + + CDIF_MSG_READ_SECTOR, /* Emu -> read + args[0] = lba + */ + + CDIF_MSG_EJECT, // Emu -> read, args[0]; 0=insert, 1=eject +}; + +class CDIF_Message +{ + public: + + CDIF_Message(); + CDIF_Message(unsigned int message_, uint32 arg0 = 0, uint32 arg1 = 0, uint32 arg2 = 0, uint32 arg3 = 0); + CDIF_Message(unsigned int message_, const std::string &str); + ~CDIF_Message(); + + unsigned int message; + uint32 args[4]; + void *parg; + std::string str_message; +}; + +class CDIF_Queue +{ + public: + + CDIF_Queue(); + ~CDIF_Queue(); + + bool Read(CDIF_Message *message, bool blocking = TRUE); + + void Write(const CDIF_Message &message); + + private: + std::queue ze_queue; + MDFN_Mutex *ze_mutex; +}; + + +typedef struct +{ + bool valid; + bool error; + uint32 lba; + uint8 data[2352 + 96]; +} CDIF_Sector_Buffer; + +// TODO: prohibit copy constructor +class CDIF_MT : public CDIF +{ + public: + + CDIF_MT(const char *device_name); + virtual ~CDIF_MT(); + + virtual void HintReadSector(uint32 lba); + virtual bool ReadRawSector(uint8 *buf, uint32 lba); + + // Return true if operation succeeded or it was a NOP(either due to not being implemented, or the current status matches eject_status). + // Returns false on failure(usually drive error of some kind; not completely fatal, can try again). + virtual bool Eject(bool eject_status); + + // FIXME: Semi-private: + int ReadThreadStart(const char *device_name); + + private: + + MDFN_Thread *CDReadThread; + + // Queue for messages to the read thread. + CDIF_Queue ReadThreadQueue; + + // Queue for messages to the emu thread. + CDIF_Queue EmuThreadQueue; + + + enum { SBSize = 256 }; + CDIF_Sector_Buffer SectorBuffers[SBSize]; + + uint32 SBWritePos; + + MDFN_Mutex *SBMutex; + + + // + // Read-thread-only: + // + void RT_EjectDisc(bool eject_status, bool skip_actual_eject = false); + + uint32 ra_lba; + int ra_count; + uint32 last_read_lba; +}; + + +// TODO: prohibit copy constructor +class CDIF_ST : public CDIF +{ + public: + + CDIF_ST(const char *device_name, bool di_memcache); + virtual ~CDIF_ST(); + + virtual void HintReadSector(uint32 lba); + virtual bool ReadRawSector(uint8 *buf, uint32 lba); + virtual bool Eject(bool eject_status); +}; + +#endif diff --git a/libmednahawk/src/cdrom/crc32.cpp b/libmednahawk/src/cdrom/crc32.cpp new file mode 100644 index 0000000000..08268ae8dc --- /dev/null +++ b/libmednahawk/src/cdrom/crc32.cpp @@ -0,0 +1,130 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2007 Carsten Gnoerlich. + * Project home page: http://www.dvdisaster.com + * Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org + * + * CRC32 code based upon public domain code by Ross Williams (see notes below) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, + * or direct your browser at http://www.gnu.org. + */ + +#include "dvdisaster.h" + +/*** + *** EDC checksum used in CDROM sectors + ***/ + +/*****************************************************************/ +/* */ +/* CRC LOOKUP TABLE */ +/* ================ */ +/* The following CRC lookup table was generated automagically */ +/* by the Rocksoft^tm Model CRC Algorithm Table Generation */ +/* Program V1.0 using the following model parameters: */ +/* */ +/* Width : 4 bytes. */ +/* Poly : 0x8001801BL */ +/* Reverse : TRUE. */ +/* */ +/* For more information on the Rocksoft^tm Model CRC Algorithm, */ +/* see the document titled "A Painless Guide to CRC Error */ +/* Detection Algorithms" by Ross Williams */ +/* (ross@guest.adelaide.edu.au.). This document is likely to be */ +/* in the FTP archive "ftp.adelaide.edu.au/pub/rocksoft". */ +/* */ +/*****************************************************************/ + +unsigned long edctable[256] = +{ + 0x00000000L, 0x90910101L, 0x91210201L, 0x01B00300L, + 0x92410401L, 0x02D00500L, 0x03600600L, 0x93F10701L, + 0x94810801L, 0x04100900L, 0x05A00A00L, 0x95310B01L, + 0x06C00C00L, 0x96510D01L, 0x97E10E01L, 0x07700F00L, + 0x99011001L, 0x09901100L, 0x08201200L, 0x98B11301L, + 0x0B401400L, 0x9BD11501L, 0x9A611601L, 0x0AF01700L, + 0x0D801800L, 0x9D111901L, 0x9CA11A01L, 0x0C301B00L, + 0x9FC11C01L, 0x0F501D00L, 0x0EE01E00L, 0x9E711F01L, + 0x82012001L, 0x12902100L, 0x13202200L, 0x83B12301L, + 0x10402400L, 0x80D12501L, 0x81612601L, 0x11F02700L, + 0x16802800L, 0x86112901L, 0x87A12A01L, 0x17302B00L, + 0x84C12C01L, 0x14502D00L, 0x15E02E00L, 0x85712F01L, + 0x1B003000L, 0x8B913101L, 0x8A213201L, 0x1AB03300L, + 0x89413401L, 0x19D03500L, 0x18603600L, 0x88F13701L, + 0x8F813801L, 0x1F103900L, 0x1EA03A00L, 0x8E313B01L, + 0x1DC03C00L, 0x8D513D01L, 0x8CE13E01L, 0x1C703F00L, + 0xB4014001L, 0x24904100L, 0x25204200L, 0xB5B14301L, + 0x26404400L, 0xB6D14501L, 0xB7614601L, 0x27F04700L, + 0x20804800L, 0xB0114901L, 0xB1A14A01L, 0x21304B00L, + 0xB2C14C01L, 0x22504D00L, 0x23E04E00L, 0xB3714F01L, + 0x2D005000L, 0xBD915101L, 0xBC215201L, 0x2CB05300L, + 0xBF415401L, 0x2FD05500L, 0x2E605600L, 0xBEF15701L, + 0xB9815801L, 0x29105900L, 0x28A05A00L, 0xB8315B01L, + 0x2BC05C00L, 0xBB515D01L, 0xBAE15E01L, 0x2A705F00L, + 0x36006000L, 0xA6916101L, 0xA7216201L, 0x37B06300L, + 0xA4416401L, 0x34D06500L, 0x35606600L, 0xA5F16701L, + 0xA2816801L, 0x32106900L, 0x33A06A00L, 0xA3316B01L, + 0x30C06C00L, 0xA0516D01L, 0xA1E16E01L, 0x31706F00L, + 0xAF017001L, 0x3F907100L, 0x3E207200L, 0xAEB17301L, + 0x3D407400L, 0xADD17501L, 0xAC617601L, 0x3CF07700L, + 0x3B807800L, 0xAB117901L, 0xAAA17A01L, 0x3A307B00L, + 0xA9C17C01L, 0x39507D00L, 0x38E07E00L, 0xA8717F01L, + 0xD8018001L, 0x48908100L, 0x49208200L, 0xD9B18301L, + 0x4A408400L, 0xDAD18501L, 0xDB618601L, 0x4BF08700L, + 0x4C808800L, 0xDC118901L, 0xDDA18A01L, 0x4D308B00L, + 0xDEC18C01L, 0x4E508D00L, 0x4FE08E00L, 0xDF718F01L, + 0x41009000L, 0xD1919101L, 0xD0219201L, 0x40B09300L, + 0xD3419401L, 0x43D09500L, 0x42609600L, 0xD2F19701L, + 0xD5819801L, 0x45109900L, 0x44A09A00L, 0xD4319B01L, + 0x47C09C00L, 0xD7519D01L, 0xD6E19E01L, 0x46709F00L, + 0x5A00A000L, 0xCA91A101L, 0xCB21A201L, 0x5BB0A300L, + 0xC841A401L, 0x58D0A500L, 0x5960A600L, 0xC9F1A701L, + 0xCE81A801L, 0x5E10A900L, 0x5FA0AA00L, 0xCF31AB01L, + 0x5CC0AC00L, 0xCC51AD01L, 0xCDE1AE01L, 0x5D70AF00L, + 0xC301B001L, 0x5390B100L, 0x5220B200L, 0xC2B1B301L, + 0x5140B400L, 0xC1D1B501L, 0xC061B601L, 0x50F0B700L, + 0x5780B800L, 0xC711B901L, 0xC6A1BA01L, 0x5630BB00L, + 0xC5C1BC01L, 0x5550BD00L, 0x54E0BE00L, 0xC471BF01L, + 0x6C00C000L, 0xFC91C101L, 0xFD21C201L, 0x6DB0C300L, + 0xFE41C401L, 0x6ED0C500L, 0x6F60C600L, 0xFFF1C701L, + 0xF881C801L, 0x6810C900L, 0x69A0CA00L, 0xF931CB01L, + 0x6AC0CC00L, 0xFA51CD01L, 0xFBE1CE01L, 0x6B70CF00L, + 0xF501D001L, 0x6590D100L, 0x6420D200L, 0xF4B1D301L, + 0x6740D400L, 0xF7D1D501L, 0xF661D601L, 0x66F0D700L, + 0x6180D800L, 0xF111D901L, 0xF0A1DA01L, 0x6030DB00L, + 0xF3C1DC01L, 0x6350DD00L, 0x62E0DE00L, 0xF271DF01L, + 0xEE01E001L, 0x7E90E100L, 0x7F20E200L, 0xEFB1E301L, + 0x7C40E400L, 0xECD1E501L, 0xED61E601L, 0x7DF0E700L, + 0x7A80E800L, 0xEA11E901L, 0xEBA1EA01L, 0x7B30EB00L, + 0xE8C1EC01L, 0x7850ED00L, 0x79E0EE00L, 0xE971EF01L, + 0x7700F000L, 0xE791F101L, 0xE621F201L, 0x76B0F300L, + 0xE541F401L, 0x75D0F500L, 0x7460F600L, 0xE4F1F701L, + 0xE381F801L, 0x7310F900L, 0x72A0FA00L, 0xE231FB01L, + 0x71C0FC00L, 0xE151FD01L, 0xE0E1FE01L, 0x7070FF00L +}; + +/* + * CDROM EDC calculation + */ + +uint32 EDCCrc32(const unsigned char *data, int len) +{ + uint32 crc = 0; + + while(len--) + crc = edctable[(crc ^ *data++) & 0xFF] ^ (crc >> 8); + + return crc; +} diff --git a/libmednahawk/src/cdrom/dvdisaster.h b/libmednahawk/src/cdrom/dvdisaster.h new file mode 100644 index 0000000000..c95af652e5 --- /dev/null +++ b/libmednahawk/src/cdrom/dvdisaster.h @@ -0,0 +1,173 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2007 Carsten Gnoerlich. + * Project home page: http://www.dvdisaster.com + * Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, + * or direct your browser at http://www.gnu.org. + */ + +#ifndef DVDISASTER_H +#define DVDISASTER_H + +/* "Dare to be gorgeous and unique. + * But don't ever be cryptic or otherwise unfathomable. + * Make it unforgettably great." + * + * From "A Final Note on Style", + * Amiga Intuition Reference Manual, 1986, p. 231 + */ + +/*** + *** I'm too lazy to mess with #include dependencies. + *** Everything #includeable is rolled up herein... + */ + +#include "../types.h" + +#include +#include +#include +//#include //zero 07-feb-2012 +#include +#include +#include +#include +#include +#include +#include +#include +//#include //zero 07-feb-2012 + +/*** + *** dvdisaster.c + ***/ + +void PrepareDeadSector(void); + +void CreateEcc(void); +void FixEcc(void); +void Verify(void); + +uint32 EDCCrc32(const unsigned char*, int); + +/*** + *** galois.c + *** + * This is currently the hardcoded GF(2**8). + * int32 gives abundant space for the GF. + * Squeezing it down to uint8 won't probably gain much, + * so we implement this defensively here. + * + * Note that some performance critical stuff needs to + * be #included from galois-inlines.h + */ + +/* Galois field parameters for 8bit symbol Reed-Solomon code */ + +#define GF_SYMBOLSIZE 8 +#define GF_FIELDSIZE (1<= GF_FIELDMAX) + { + x -= GF_FIELDMAX; + x = (x >> GF_SYMBOLSIZE) + (x & GF_FIELDMAX); + } + + return x; +} diff --git a/libmednahawk/src/cdrom/galois.cpp b/libmednahawk/src/cdrom/galois.cpp new file mode 100644 index 0000000000..5c48f4f793 --- /dev/null +++ b/libmednahawk/src/cdrom/galois.cpp @@ -0,0 +1,156 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2007 Carsten Gnoerlich. + * Project home page: http://www.dvdisaster.com + * Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org + * + * The Reed-Solomon error correction draws a lot of inspiration - and even code - + * from Phil Karn's excellent Reed-Solomon library: http://www.ka9q.net/code/fec/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, + * or direct your browser at http://www.gnu.org. + */ + +#include "dvdisaster.h" + +#include "galois-inlines.h" + +/*** + *** Galois field arithmetic. + *** + * Calculations are done over the extension field GF(2**n). + * Be careful not to overgeneralize these arithmetics; + * they only work for the case of GF(p**n) with p being prime. + */ + +/* Initialize the Galois field tables */ + + +GaloisTables* CreateGaloisTables(int32 gf_generator) +{ + GaloisTables *gt = (GaloisTables *)calloc(1, sizeof(GaloisTables)); + int32 b,log; + + /* Allocate the tables. + The encoder uses a special version of alpha_to which has the mod_fieldmax() + folded into the table. */ + + gt->gfGenerator = gf_generator; + + gt->indexOf = (int32 *)calloc(GF_FIELDSIZE, sizeof(int32)); + gt->alphaTo = (int32 *)calloc(GF_FIELDSIZE, sizeof(int32)); + gt->encAlphaTo = (int32 *)calloc(2*GF_FIELDSIZE, sizeof(int32)); + + /* create the log/ilog values */ + + for(b=1, log=0; logindexOf[b] = log; + gt->alphaTo[log] = b; + b = b << 1; + if(b & GF_FIELDSIZE) + b = b ^ gf_generator; + } + + if(b!=1) + { + printf("Failed to create the Galois field log tables!\n"); + exit(1); + } + + /* we're even closed using infinity (makes things easier) */ + + gt->indexOf[0] = GF_ALPHA0; /* log(0) = inf */ + gt->alphaTo[GF_ALPHA0] = 0; /* and the other way around */ + + for(b=0; b<2*GF_FIELDSIZE; b++) + gt->encAlphaTo[b] = gt->alphaTo[mod_fieldmax(b)]; + + return gt; +} + +void FreeGaloisTables(GaloisTables *gt) +{ + if(gt->indexOf) free(gt->indexOf); + if(gt->alphaTo) free(gt->alphaTo); + if(gt->encAlphaTo) free(gt->encAlphaTo); + + free(gt); +} + +/*** + *** Create the the Reed-Solomon generator polynomial + *** and some auxiliary data structures. + */ + +ReedSolomonTables *CreateReedSolomonTables(GaloisTables *gt, + int32 first_consecutive_root, + int32 prim_elem, + int nroots_in) +{ ReedSolomonTables *rt = (ReedSolomonTables *)calloc(1, sizeof(ReedSolomonTables)); + int32 i,j,root; + + rt->gfTables = gt; + rt->fcr = first_consecutive_root; + rt->primElem = prim_elem; + rt->nroots = nroots_in; + rt->ndata = GF_FIELDMAX - rt->nroots; + + rt->gpoly = (int32 *)calloc((rt->nroots+1), sizeof(int32)); + + /* Create the RS code generator polynomial */ + + rt->gpoly[0] = 1; + + for(i=0, root=first_consecutive_root*prim_elem; inroots; i++, root+=prim_elem) + { rt->gpoly[i+1] = 1; + + /* Multiply gpoly by alpha**(root+x) */ + + for(j=i; j>0; j--) + { + if(rt->gpoly[j] != 0) + rt->gpoly[j] = rt->gpoly[j-1] ^ gt->alphaTo[mod_fieldmax(gt->indexOf[rt->gpoly[j]] + root)]; + else + rt->gpoly[j] = rt->gpoly[j-1]; + } + + rt->gpoly[0] = gt->alphaTo[mod_fieldmax(gt->indexOf[rt->gpoly[0]] + root)]; + } + + /* Store the polynomials index for faster encoding */ + + for(i=0; i<=rt->nroots; i++) + rt->gpoly[i] = gt->indexOf[rt->gpoly[i]]; + +#if 0 + /* for the precalculated unrolled loops only */ + + for(i=gt->nroots-1; i>0; i--) + PrintCLI( + " par_idx[((++spk)&%d)] ^= enc_alpha_to[feedback + %3d];\n", + nroots-1,gt->gpoly[i]); + + PrintCLI(" par_idx[sp] = enc_alpha_to[feedback + %3d];\n", + gt->gpoly[0]); +#endif + + return rt; +} + +void FreeReedSolomonTables(ReedSolomonTables *rt) +{ + if(rt->gpoly) free(rt->gpoly); + + free(rt); +} diff --git a/libmednahawk/src/cdrom/l-ec.cpp b/libmednahawk/src/cdrom/l-ec.cpp new file mode 100644 index 0000000000..39b4cbdd9f --- /dev/null +++ b/libmednahawk/src/cdrom/l-ec.cpp @@ -0,0 +1,478 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2007 Carsten Gnoerlich. + * Project home page: http://www.dvdisaster.com + * Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org + * + * The Reed-Solomon error correction draws a lot of inspiration - and even code - + * from Phil Karn's excellent Reed-Solomon library: http://www.ka9q.net/code/fec/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, + * or direct your browser at http://www.gnu.org. + */ + +#include "dvdisaster.h" + +#include "galois-inlines.h" + +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) + +/*** + *** Mapping between cd frame and parity vectors + ***/ + +/* + * Mapping of frame bytes to P/Q Vectors + */ + +int PToByteIndex(int p, int i) +{ return 12 + p + i*86; +} + +void ByteIndexToP(int b, int *p, int *i) +{ *p = (b-12)%86; + *i = (b-12)/86; +} + +int QToByteIndex(int q, int i) +{ int offset = 12 + (q & 1); + + if(i == 43) return 2248+q; + if(i == 44) return 2300+q; + + q&=~1; + return offset + (q*43 + i*88) % 2236; +} + +void ByteIndexToQ(int b, int *q, int *i) +{ int x,y,offset; + + if(b >= 2300) + { *i = 44; + *q = (b-2300); + return; + } + + if(b >= 2248) + { *i = 43; + *q = (b-2248); + return; + } + + offset = b&1; + b = (b-12)/2; + x = b/43; + y = (b-(x*43))%26; + *i = b-(x*43); + *q = 2*((x+26-y)%26)+offset; +} + +/* + * There are 86 vectors of P-parity, yielding a RS(26,24) code. + */ + +void GetPVector(unsigned char *frame, unsigned char *data, int n) +{ int i; + int w_idx = n+12; + + for(i=0; i<26; i++, w_idx+=86) + data[i] = frame[w_idx]; +} + +void SetPVector(unsigned char *frame, unsigned char *data, int n) +{ int i; + int w_idx = n+12; + + for(i=0; i<26; i++, w_idx+=86) + frame[w_idx] = data[i]; +} + +void FillPVector(unsigned char *frame, unsigned char data, int n) +{ int i; + int w_idx = n+12; + + for(i=0; i<26; i++, w_idx+=86) + frame[w_idx] = data; +} + +void OrPVector(unsigned char *frame, unsigned char value, int n) +{ int i; + int w_idx = n+12; + + for(i=0; i<26; i++, w_idx+=86) + frame[w_idx] |= value; +} + +void AndPVector(unsigned char *frame, unsigned char value, int n) +{ int i; + int w_idx = n+12; + + for(i=0; i<26; i++, w_idx+=86) + frame[w_idx] &= value; +} + +/* + * There are 52 vectors of Q-parity, yielding a RS(45,43) code. + */ + +void GetQVector(unsigned char *frame, unsigned char *data, int n) +{ int offset = 12 + (n & 1); + int w_idx = (n&~1) * 43; + int i; + + for(i=0; i<43; i++, w_idx+=88) + data[i] = frame[(w_idx % 2236) + offset]; + + data[43] = frame[2248 + n]; + data[44] = frame[2300 + n]; +} + +void SetQVector(unsigned char *frame, unsigned char *data, int n) +{ int offset = 12 + (n & 1); + int w_idx = (n&~1) * 43; + int i; + + for(i=0; i<43; i++, w_idx+=88) + frame[(w_idx % 2236) + offset] = data[i]; + + frame[2248 + n] = data[43]; + frame[2300 + n] = data[44]; +} + +void FillQVector(unsigned char *frame, unsigned char data, int n) +{ int offset = 12 + (n & 1); + int w_idx = (n&~1) * 43; + int i; + + for(i=0; i<43; i++, w_idx+=88) + frame[(w_idx % 2236) + offset] = data; + + frame[2248 + n] = data; + frame[2300 + n] = data; +} + +void OrQVector(unsigned char *frame, unsigned char data, int n) +{ int offset = 12 + (n & 1); + int w_idx = (n&~1) * 43; + int i; + + for(i=0; i<43; i++, w_idx+=88) + frame[(w_idx % 2236) + offset] |= data; + + frame[2248 + n] |= data; + frame[2300 + n] |= data; +} + +void AndQVector(unsigned char *frame, unsigned char data, int n) +{ int offset = 12 + (n & 1); + int w_idx = (n&~1) * 43; + int i; + + for(i=0; i<43; i++, w_idx+=88) + frame[(w_idx % 2236) + offset] &= data; + + frame[2248 + n] &= data; + frame[2300 + n] &= data; +} + +/*** + *** C2 error counting + ***/ + +int CountC2Errors(unsigned char *frame) +{ int i,count = 0; + frame += 2352; + + for(i=0; i<294; i++, frame++) + { if(*frame & 0x01) count++; + if(*frame & 0x02) count++; + if(*frame & 0x04) count++; + if(*frame & 0x08) count++; + if(*frame & 0x10) count++; + if(*frame & 0x20) count++; + if(*frame & 0x40) count++; + if(*frame & 0x80) count++; + } + + return count; +} + +/*** + *** L-EC error correction for CD raw data sectors + ***/ + +/* + * These could be used from ReedSolomonTables, + * but hardcoding them is faster. + */ + +#define NROOTS 2 +#define LEC_FIRST_ROOT 0 //GF_ALPHA0 +#define LEC_PRIM_ELEM 1 +#define LEC_PRIMTH_ROOT 1 + +/* + * Calculate the error syndrome + */ + +int DecodePQ(ReedSolomonTables *rt, unsigned char *data, int padding, + int *erasure_list, int erasure_count) +{ GaloisTables *gt = rt->gfTables; + int syndrome[NROOTS]; + int lambda[NROOTS+1]; + int omega[NROOTS+1]; + int b[NROOTS+1]; + int reg[NROOTS+1]; + int root[NROOTS]; + int loc[NROOTS]; + int syn_error; + int deg_lambda,lambda_roots; + int deg_omega; + int shortened_size = GF_FIELDMAX - padding; + int corrected = 0; + int i,j,k; + int r,el; + + /*** Form the syndromes: Evaluate data(x) at roots of g(x) */ + + for(i=0; ialphaTo[mod_fieldmax(gt->indexOf[syndrome[i]] + + (LEC_FIRST_ROOT+i)*LEC_PRIM_ELEM)]; + + /*** Convert syndrome to index form, check for nonzero condition. */ + + syn_error = 0; + for(i=0; iindexOf[syndrome[i]]; + } + + /*** If the syndrome is zero, everything is fine. */ + + if(!syn_error) + return 0; + + /*** Initialize lambda to be the erasure locator polynomial */ + + lambda[0] = 1; + lambda[1] = lambda[2] = 0; + + erasure_list[0] += padding; + erasure_list[1] += padding; + + if(erasure_count > 2) /* sanity check */ + erasure_count = 0; + + if(erasure_count > 0) + { lambda[1] = gt->alphaTo[mod_fieldmax(LEC_PRIM_ELEM*(GF_FIELDMAX-1-erasure_list[0]))]; + + for(i=1; i0; j--) + { int tmp = gt->indexOf[lambda[j-1]]; + + if(tmp != GF_ALPHA0) + lambda[j] ^= gt->alphaTo[mod_fieldmax(u + tmp)]; + } + } + } + + for(i=0; iindexOf[lambda[i]]; + + /*** Berlekamp-Massey algorithm to determine error+erasure locator polynomial */ + + r = erasure_count; /* r is the step number */ + el = erasure_count; + + /* Compute discrepancy at the r-th step in poly-form */ + + while(++r <= NROOTS) + { int discr_r = 0; + + for(i=0; ialphaTo[mod_fieldmax(gt->indexOf[lambda[i]] + syndrome[r-i-1])]; + + discr_r = gt->indexOf[discr_r]; + + if(discr_r == GF_ALPHA0) + { /* B(x) = x*B(x) */ + memmove(b+1, b, NROOTS*sizeof(b[0])); + b[0] = GF_ALPHA0; + } + else + { int t[NROOTS+1]; + + /* T(x) = lambda(x) - discr_r*x*b(x) */ + t[0] = lambda[0]; + for(i=0; ialphaTo[mod_fieldmax(discr_r + b[i])]; + else t[i+1] = lambda[i+1]; + } + + if(2*el <= r+erasure_count-1) + { el = r + erasure_count - el; + + /* B(x) <-- inv(discr_r) * lambda(x) */ + for(i=0; i<=NROOTS; i++) + b[i] = (lambda[i] == 0) ? GF_ALPHA0 + : mod_fieldmax(gt->indexOf[lambda[i]] - discr_r + GF_FIELDMAX); + } + else + { /* 2 lines below: B(x) <-- x*B(x) */ + memmove(b+1, b, NROOTS*sizeof(b[0])); + b[0] = GF_ALPHA0; + } + + memcpy(lambda, t, (NROOTS+1)*sizeof(t[0])); + } + } + + /*** Convert lambda to index form and compute deg(lambda(x)) */ + + deg_lambda = 0; + for(i=0; iindexOf[lambda[i]]; + if(lambda[i] != GF_ALPHA0) + deg_lambda = i; + } + + /*** Find roots of the error+erasure locator polynomial by Chien search */ + + memcpy(reg+1, lambda+1, NROOTS*sizeof(reg[0])); + lambda_roots = 0; /* Number of roots of lambda(x) */ + + for(i=1, k=LEC_PRIMTH_ROOT-1; i<=GF_FIELDMAX; i++, k=mod_fieldmax(k+LEC_PRIMTH_ROOT)) + { int q=1; /* lambda[0] is always 0 */ + + for(j=deg_lambda; j>0; j--) + { if(reg[j] != GF_ALPHA0) + { reg[j] = mod_fieldmax(reg[j] + j); + q ^= gt->alphaTo[reg[j]]; + } + } + + if(q != 0) continue; /* Not a root */ + + /* store root in index-form and the error location number */ + + root[lambda_roots] = i; + loc[lambda_roots] = k; + + /* If we've already found max possible roots, abort the search to save time */ + + if(++lambda_roots == deg_lambda) break; + } + + /* deg(lambda) unequal to number of roots => uncorrectable error detected + This is not reliable for very small numbers of roots, e.g. nroots = 2 */ + + if(deg_lambda != lambda_roots) + { return -1; + } + + /* Compute err+eras evaluator poly omega(x) = syn(x)*lambda(x) + (modulo x**nroots). in index form. Also find deg(omega). */ + + deg_omega = deg_lambda-1; + + for(i=0; i<=deg_omega; i++) + { int tmp = 0; + + for(j=i; j>=0; j--) + { if((syndrome[i - j] != GF_ALPHA0) && (lambda[j] != GF_ALPHA0)) + tmp ^= gt->alphaTo[mod_fieldmax(syndrome[i - j] + lambda[j])]; + } + + omega[i] = gt->indexOf[tmp]; + } + + /* Compute error values in poly-form. + num1 = omega(inv(X(l))), + num2 = inv(X(l))**(FIRST_ROOT-1) and + den = lambda_pr(inv(X(l))) all in poly-form. */ + + for(j=lambda_roots-1; j>=0; j--) + { int num1 = 0; + int num2; + int den; + int location = loc[j]; + + for(i=deg_omega; i>=0; i--) + { if(omega[i] != GF_ALPHA0) + num1 ^= gt->alphaTo[mod_fieldmax(omega[i] + i * root[j])]; + } + + num2 = gt->alphaTo[mod_fieldmax(root[j] * (LEC_FIRST_ROOT - 1) + GF_FIELDMAX)]; + den = 0; + + /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */ + + for(i=MIN(deg_lambda, NROOTS-1) & ~1; i>=0; i-=2) + { if(lambda[i+1] != GF_ALPHA0) + den ^= gt->alphaTo[mod_fieldmax(lambda[i+1] + i * root[j])]; + } + + /* Apply error to data */ + + if(num1 != 0 && location >= padding) + { + corrected++; + data[location-padding] ^= gt->alphaTo[mod_fieldmax(gt->indexOf[num1] + gt->indexOf[num2] + + GF_FIELDMAX - gt->indexOf[den])]; + + /* If no erasures were given, at most one error was corrected. + Return its position in erasure_list[0]. */ + + if(!erasure_count) + erasure_list[0] = location-padding; + } +#if 1 + else return -3; +#endif + } + + /*** Form the syndromes: Evaluate data(x) at roots of g(x) */ + + for(i=0; ialphaTo[mod_fieldmax(gt->indexOf[syndrome[i]] + + (LEC_FIRST_ROOT+i)*LEC_PRIM_ELEM)]; + } + + /*** Convert syndrome to index form, check for nonzero condition. */ +#if 1 + for(i=0; i + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include "lec.h" + +#define GF8_PRIM_POLY 0x11d /* x^8 + x^4 + x^3 + x^2 + 1 */ + +#define EDC_POLY 0x8001801b /* (x^16 + x^15 + x^2 + 1) (x^16 + x^2 + x + 1) */ + +#define LEC_HEADER_OFFSET 12 +#define LEC_DATA_OFFSET 16 +#define LEC_MODE1_DATA_LEN 2048 +#define LEC_MODE1_EDC_OFFSET 2064 +#define LEC_MODE1_INTERMEDIATE_OFFSET 2068 +#define LEC_MODE1_P_PARITY_OFFSET 2076 +#define LEC_MODE1_Q_PARITY_OFFSET 2248 +#define LEC_MODE2_FORM1_DATA_LEN (2048+8) +#define LEC_MODE2_FORM1_EDC_OFFSET 2072 +#define LEC_MODE2_FORM2_DATA_LEN (2324+8) +#define LEC_MODE2_FORM2_EDC_OFFSET 2348 + + +typedef u_int8_t gf8_t; + +static u_int8_t GF8_LOG[256]; +static gf8_t GF8_ILOG[256]; + +static const class Gf8_Q_Coeffs_Results_01 { +private: + u_int16_t table[43][256]; +public: + Gf8_Q_Coeffs_Results_01(); + ~Gf8_Q_Coeffs_Results_01() {} + const u_int16_t *operator[] (int i) const { return &table[i][0]; } + operator const u_int16_t *() const { return &table[0][0]; } +} CF8_Q_COEFFS_RESULTS_01; + +static const class CrcTable { +private: + u_int32_t table[256]; +public: + CrcTable(); + ~CrcTable() {} + u_int32_t operator[](int i) const { return table[i]; } + operator const u_int32_t *() const { return table; } +} CRCTABLE; + +static const class ScrambleTable { +private: + u_int8_t table[2340]; +public: + ScrambleTable(); + ~ScrambleTable() {} + u_int8_t operator[](int i) const { return table[i]; } + operator const u_int8_t *() const { return table; } +} SCRAMBLE_TABLE; + +/* Creates the logarithm and inverse logarithm table that is required + * for performing multiplication in the GF(8) domain. + */ +static void gf8_create_log_tables() +{ + u_int8_t log; + u_int16_t b; + + for (b = 0; b <= 255; b++) { + GF8_LOG[b] = 0; + GF8_ILOG[b] = 0; + } + + b = 1; + + for (log = 0; log < 255; log++) { + GF8_LOG[(u_int8_t)b] = log; + GF8_ILOG[log] = (u_int8_t)b; + + b <<= 1; + + if ((b & 0x100) != 0) + b ^= GF8_PRIM_POLY; + } +} + +/* Addition in the GF(8) domain: just the XOR of the values. + */ +#define gf8_add(a, b) (a) ^ (b) + + +/* Multiplication in the GF(8) domain: add the logarithms (modulo 255) + * and return the inverse logarithm. Not used! + */ +#if 0 +static gf8_t gf8_mult(gf8_t a, gf8_t b) +{ + int16_t sum; + + if (a == 0 || b == 0) + return 0; + + sum = GF8_LOG[a] + GF8_LOG[b]; + + if (sum >= 255) + sum -= 255; + + return GF8_ILOG[sum]; +} +#endif + +/* Division in the GF(8) domain: Like multiplication but logarithms a + * subtracted. + */ +static gf8_t gf8_div(gf8_t a, gf8_t b) +{ + int16_t sum; + + assert(b != 0); + + if (a == 0) + return 0; + + sum = GF8_LOG[a] - GF8_LOG[b]; + + if (sum < 0) + sum += 255; + + return GF8_ILOG[sum]; +} + +Gf8_Q_Coeffs_Results_01::Gf8_Q_Coeffs_Results_01() +{ + int i, j; + u_int16_t c; + gf8_t GF8_COEFFS_HELP[2][45]; + u_int8_t GF8_Q_COEFFS[2][45]; + + + gf8_create_log_tables(); + + /* build matrix H: + * 1 1 ... 1 1 + * a^44 a^43 ... a^1 a^0 + * + * + */ + + for (j = 0; j < 45; j++) { + GF8_COEFFS_HELP[0][j] = 1; /* e0 */ + GF8_COEFFS_HELP[1][j] = GF8_ILOG[44-j]; /* e1 */ + } + + + /* resolve equation system for parity byte 0 and 1 */ + + /* e1' = e1 + e0 */ + for (j = 0; j < 45; j++) { + GF8_Q_COEFFS[1][j] = gf8_add(GF8_COEFFS_HELP[1][j], + GF8_COEFFS_HELP[0][j]); + } + + /* e1'' = e1' / (a^1 + 1) */ + for (j = 0; j < 45; j++) { + GF8_Q_COEFFS[1][j] = gf8_div(GF8_Q_COEFFS[1][j], GF8_Q_COEFFS[1][43]); + } + + /* e0' = e0 + e1 / a^1 */ + for (j = 0; j < 45; j++) { + GF8_Q_COEFFS[0][j] = gf8_add(GF8_COEFFS_HELP[0][j], + gf8_div(GF8_COEFFS_HELP[1][j], + GF8_ILOG[1])); + } + + /* e0'' = e0' / (1 + 1 / a^1) */ + for (j = 0; j < 45; j++) { + GF8_Q_COEFFS[0][j] = gf8_div(GF8_Q_COEFFS[0][j], GF8_Q_COEFFS[0][44]); + } + + /* + * Compute the products of 0..255 with all of the Q coefficients in + * advance. When building the scalar product between the data vectors + * and the P/Q vectors the individual products can be looked up in + * this table + * + * The P parity coefficients are just a subset of the Q coefficients so + * that we do not need to create a separate table for them. + */ + + for (j = 0; j < 43; j++) { + + table[j][0] = 0; + + for (i = 1; i < 256; i++) { + c = GF8_LOG[i] + GF8_LOG[GF8_Q_COEFFS[0][j]]; + if (c >= 255) c -= 255; + table[j][i] = GF8_ILOG[c]; + + c = GF8_LOG[i] + GF8_LOG[GF8_Q_COEFFS[1][j]]; + if (c >= 255) c -= 255; + table[j][i] |= GF8_ILOG[c]<<8; + } + } +} + +/* Reverses the bits in 'd'. 'bits' defines the bit width of 'd'. + */ +static u_int32_t mirror_bits(u_int32_t d, int bits) +{ + int i; + u_int32_t r = 0; + + for (i = 0; i < bits; i++) { + r <<= 1; + + if ((d & 0x1) != 0) + r |= 0x1; + + d >>= 1; + } + + return r; +} + +/* Build the CRC lookup table for EDC_POLY poly. The CRC is 32 bit wide + * and reversed (i.e. the bit stream is divided by the EDC_POLY with the + * LSB first order). + */ +CrcTable::CrcTable () +{ + u_int32_t i, j; + u_int32_t r; + + for (i = 0; i < 256; i++) { + r = mirror_bits(i, 8); + + r <<= 24; + + for (j = 0; j < 8; j++) { + if ((r & 0x80000000) != 0) { + r <<= 1; + r ^= EDC_POLY; + } + else { + r <<= 1; + } + } + + r = mirror_bits(r, 32); + + table[i] = r; + } +} + +/* Calculates the CRC of given data with given lengths based on the + * table lookup algorithm. + */ +static u_int32_t calc_edc(u_int8_t *data, int len) +{ + u_int32_t crc = 0; + + while (len--) { + crc = CRCTABLE[(int)(crc ^ *data++) & 0xff] ^ (crc >> 8); + } + + return crc; +} + +/* Build the scramble table as defined in the yellow book. The bytes + 12 to 2351 of a sector will be XORed with the data of this table. + */ +ScrambleTable::ScrambleTable() +{ + u_int16_t i, j; + u_int16_t reg = 1; + u_int8_t d; + + for (i = 0; i < 2340; i++) { + d = 0; + + for (j = 0; j < 8; j++) { + d >>= 1; + + if ((reg & 0x1) != 0) + d |= 0x80; + + if ((reg & 0x1) != ((reg >> 1) & 0x1)) { + reg >>= 1; + reg |= 0x4000; /* 15-bit register */ + } + else { + reg >>= 1; + } + } + + table[i] = d; + } +} + +/* Calc EDC for a MODE 1 sector + */ +static void calc_mode1_edc(u_int8_t *sector) +{ + u_int32_t crc = calc_edc(sector, LEC_MODE1_DATA_LEN + 16); + + sector[LEC_MODE1_EDC_OFFSET] = crc & 0xffL; + sector[LEC_MODE1_EDC_OFFSET + 1] = (crc >> 8) & 0xffL; + sector[LEC_MODE1_EDC_OFFSET + 2] = (crc >> 16) & 0xffL; + sector[LEC_MODE1_EDC_OFFSET + 3] = (crc >> 24) & 0xffL; +} + +/* Calc EDC for a XA form 1 sector + */ +static void calc_mode2_form1_edc(u_int8_t *sector) +{ + u_int32_t crc = calc_edc(sector + LEC_DATA_OFFSET, + LEC_MODE2_FORM1_DATA_LEN); + + sector[LEC_MODE2_FORM1_EDC_OFFSET] = crc & 0xffL; + sector[LEC_MODE2_FORM1_EDC_OFFSET + 1] = (crc >> 8) & 0xffL; + sector[LEC_MODE2_FORM1_EDC_OFFSET + 2] = (crc >> 16) & 0xffL; + sector[LEC_MODE2_FORM1_EDC_OFFSET + 3] = (crc >> 24) & 0xffL; +} + +/* Calc EDC for a XA form 2 sector + */ +static void calc_mode2_form2_edc(u_int8_t *sector) +{ + u_int32_t crc = calc_edc(sector + LEC_DATA_OFFSET, + LEC_MODE2_FORM2_DATA_LEN); + + sector[LEC_MODE2_FORM2_EDC_OFFSET] = crc & 0xffL; + sector[LEC_MODE2_FORM2_EDC_OFFSET + 1] = (crc >> 8) & 0xffL; + sector[LEC_MODE2_FORM2_EDC_OFFSET + 2] = (crc >> 16) & 0xffL; + sector[LEC_MODE2_FORM2_EDC_OFFSET + 3] = (crc >> 24) & 0xffL; +} + +/* Writes the sync pattern to the given sector. + */ +static void set_sync_pattern(u_int8_t *sector) +{ + sector[0] = 0; + + sector[1] = sector[2] = sector[3] = sector[4] = sector[5] = + sector[6] = sector[7] = sector[8] = sector[9] = sector[10] = 0xff; + + sector[11] = 0; +} + + +static u_int8_t bin2bcd(u_int8_t b) +{ + return (((b/10) << 4) & 0xf0) | ((b%10) & 0x0f); +} + +/* Builds the sector header. + */ +static void set_sector_header(u_int8_t mode, u_int32_t adr, u_int8_t *sector) +{ + sector[LEC_HEADER_OFFSET] = bin2bcd(adr / (60*75)); + sector[LEC_HEADER_OFFSET + 1] = bin2bcd((adr / 75) % 60); + sector[LEC_HEADER_OFFSET + 2] = bin2bcd(adr % 75); + sector[LEC_HEADER_OFFSET + 3] = mode; +} + +/* Calculate the P parities for the sector. + * The 43 P vectors of length 24 are combined with the GF8_P_COEFFS. + */ +static void calc_P_parity(u_int8_t *sector) +{ + int i, j; + u_int16_t p01_msb, p01_lsb; + u_int8_t *p_lsb_start; + u_int8_t *p_lsb; + u_int8_t *p0, *p1; + u_int8_t d0,d1; + + p_lsb_start = sector + LEC_HEADER_OFFSET; + + p1 = sector + LEC_MODE1_P_PARITY_OFFSET; + p0 = sector + LEC_MODE1_P_PARITY_OFFSET + 2 * 43; + + for (i = 0; i <= 42; i++) { + p_lsb = p_lsb_start; + + p01_lsb = p01_msb = 0; + + for (j = 19; j <= 42; j++) { + d0 = *p_lsb; + d1 = *(p_lsb+1); + + p01_lsb ^= CF8_Q_COEFFS_RESULTS_01[j][d0]; + p01_msb ^= CF8_Q_COEFFS_RESULTS_01[j][d1]; + + p_lsb += 2 * 43; + } + + *p0 = p01_lsb; + *(p0 + 1) = p01_msb; + + *p1 = p01_lsb>>8; + *(p1 + 1) = p01_msb>>8; + + p0 += 2; + p1 += 2; + + p_lsb_start += 2; + } +} + +/* Calculate the Q parities for the sector. + * The 26 Q vectors of length 43 are combined with the GF8_Q_COEFFS. + */ +static void calc_Q_parity(u_int8_t *sector) +{ + int i, j; + u_int16_t q01_lsb, q01_msb; + u_int8_t *q_lsb_start; + u_int8_t *q_lsb; + u_int8_t *q0, *q1, *q_start; + u_int8_t d0,d1; + + q_lsb_start = sector + LEC_HEADER_OFFSET; + + q_start = sector + LEC_MODE1_Q_PARITY_OFFSET; + q1 = sector + LEC_MODE1_Q_PARITY_OFFSET; + q0 = sector + LEC_MODE1_Q_PARITY_OFFSET + 2 * 26; + + for (i = 0; i <= 25; i++) { + q_lsb = q_lsb_start; + + q01_lsb = q01_msb = 0; + + for (j = 0; j <= 42; j++) { + d0 = *q_lsb; + d1 = *(q_lsb+1); + + q01_lsb ^= CF8_Q_COEFFS_RESULTS_01[j][d0]; + q01_msb ^= CF8_Q_COEFFS_RESULTS_01[j][d1]; + + q_lsb += 2 * 44; + + if (q_lsb >= q_start) { + q_lsb -= 2 * 1118; + } + } + + *q0 = q01_lsb; + *(q0 + 1) = q01_msb; + + *q1 = q01_lsb>>8; + *(q1 + 1) = q01_msb>>8; + + q0 += 2; + q1 += 2; + + q_lsb_start += 2 * 43; + } +} + +/* Encodes a MODE 0 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide + */ +void lec_encode_mode0_sector(u_int32_t adr, u_int8_t *sector) +{ + u_int16_t i; + + set_sync_pattern(sector); + set_sector_header(0, adr, sector); + + sector += 16; + + for (i = 0; i < 2336; i++) + *sector++ = 0; +} + +/* Encodes a MODE 1 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2048 bytes user data at + * offset 16 + */ +void lec_encode_mode1_sector(u_int32_t adr, u_int8_t *sector) +{ + set_sync_pattern(sector); + set_sector_header(1, adr, sector); + + calc_mode1_edc(sector); + + /* clear the intermediate field */ + sector[LEC_MODE1_INTERMEDIATE_OFFSET] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 1] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 2] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 3] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 4] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 5] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 6] = + sector[LEC_MODE1_INTERMEDIATE_OFFSET + 7] = 0; + + calc_P_parity(sector); + calc_Q_parity(sector); +} + +/* Encodes a MODE 2 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2336 bytes user data at + * offset 16 + */ +void lec_encode_mode2_sector(u_int32_t adr, u_int8_t *sector) +{ + set_sync_pattern(sector); + set_sector_header(2, adr, sector); +} + +/* Encodes a XA form 1 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2048+8 bytes user data at + * offset 16 + */ +void lec_encode_mode2_form1_sector(u_int32_t adr, u_int8_t *sector) +{ + set_sync_pattern(sector); + + calc_mode2_form1_edc(sector); + + /* P/Q partiy must not contain the sector header so clear it */ + sector[LEC_HEADER_OFFSET] = + sector[LEC_HEADER_OFFSET + 1] = + sector[LEC_HEADER_OFFSET + 2] = + sector[LEC_HEADER_OFFSET + 3] = 0; + + calc_P_parity(sector); + calc_Q_parity(sector); + + /* finally add the sector header */ + set_sector_header(2, adr, sector); +} + +/* Encodes a XA form 2 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2324+8 bytes user data at + * offset 16 + */ +void lec_encode_mode2_form2_sector(u_int32_t adr, u_int8_t *sector) +{ + set_sync_pattern(sector); + + calc_mode2_form2_edc(sector); + + set_sector_header(2, adr, sector); +} + +/* Scrambles and byte swaps an encoded sector. + * 'sector' must be 2352 byte wide. + */ +void lec_scramble(u_int8_t *sector) +{ + u_int16_t i; + const u_int8_t *stable = SCRAMBLE_TABLE; + u_int8_t *p = sector; + u_int8_t tmp; + + + for (i = 0; i < 6; i++) { + /* just swap bytes of sector sync */ + tmp = *p; + *p = *(p + 1); + p++; + *p++ = tmp; + } + for (;i < (2352 / 2); i++) { + /* scramble and swap bytes */ + tmp = *p ^ *stable++; + *p = *(p + 1) ^ *stable++; + p++; + *p++ = tmp; + } +} + +#if 0 +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + char *infile; + char *outfile; + int fd_in, fd_out; + u_int8_t buffer1[2352]; + u_int8_t buffer2[2352]; + u_int32_t lba; + int i; + +#if 0 + for (i = 0; i < 2048; i++) + buffer1[i + 16] = 234; + + lba = 150; + + for (i = 0; i < 100000; i++) { + lec_encode_mode1_sector(lba, buffer1); + lec_scramble(buffer2); + lba++; + } + +#else + + if (argc != 3) + return 1; + + infile = argv[1]; + outfile = argv[2]; + + + if ((fd_in = open(infile, O_RDONLY)) < 0) { + perror("Cannot open input file"); + return 1; + } + + if ((fd_out = open(outfile, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) { + perror("Cannot open output file"); + return 1; + } + + lba = 150; + + do { + if (read(fd_in, buffer1, 2352) != 2352) + break; + + switch (*(buffer1 + 12 + 3)) { + case 1: + memcpy(buffer2 + 16, buffer1 + 16, 2048); + + lec_encode_mode1_sector(lba, buffer2); + break; + + case 2: + if ((*(buffer1 + 12 + 4 + 2) & 0x20) != 0) { + /* form 2 sector */ + memcpy(buffer2 + 16, buffer1 + 16, 2324 + 8); + lec_encode_mode2_form2_sector(lba, buffer2); + } + else { + /* form 1 sector */ + memcpy(buffer2 + 16, buffer1 + 16, 2048 + 8); + lec_encode_mode2_form1_sector(lba, buffer2); + } + break; + } + + if (memcmp(buffer1, buffer2, 2352) != 0) { + printf("Verify error at lba %ld\n", lba); + } + + lec_scramble(buffer2); + write(fd_out, buffer2, 2352); + + lba++; + } while (1); + + close(fd_in); + close(fd_out); + +#endif + + return 0; +} +#endif diff --git a/libmednahawk/src/cdrom/lec.h b/libmednahawk/src/cdrom/lec.h new file mode 100644 index 0000000000..b41c06b8fa --- /dev/null +++ b/libmednahawk/src/cdrom/lec.h @@ -0,0 +1,77 @@ +/* cdrdao - write audio CD-Rs in disc-at-once mode + * + * Copyright (C) 1998-2002 Andreas Mueller + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __LEC_H__ +#define __LEC_H__ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +typedef uint32_t u_int32_t; +typedef uint16_t u_int16_t; +typedef uint8_t u_int8_t; + +#ifndef TRUE +#define TRUE 1 +#endif + +/* Encodes a MODE 0 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide + */ +void lec_encode_mode0_sector(u_int32_t adr, u_int8_t *sector); + +/* Encodes a MODE 1 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2048 bytes user data at + * offset 16 + */ +void lec_encode_mode1_sector(u_int32_t adr, u_int8_t *sector); + +/* Encodes a MODE 2 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2336 bytes user data at + * offset 16 + */ +void lec_encode_mode2_sector(u_int32_t adr, u_int8_t *sector); + +/* Encodes a XA form 1 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2048+8 bytes user data at + * offset 16 + */ +void lec_encode_mode2_form1_sector(u_int32_t adr, u_int8_t *sector); + +/* Encodes a XA form 2 sector. + * 'adr' is the current physical sector address + * 'sector' must be 2352 byte wide containing 2324+8 bytes user data at + * offset 16 + */ +void lec_encode_mode2_form2_sector(u_int32_t adr, u_int8_t *sector); + +/* Scrambles and byte swaps an encoded sector. + * 'sector' must be 2352 byte wide. + */ +void lec_scramble(u_int8_t *sector); + +#endif diff --git a/libmednahawk/src/cdrom/pcecd.cpp b/libmednahawk/src/cdrom/pcecd.cpp new file mode 100644 index 0000000000..7db2f08ab2 --- /dev/null +++ b/libmednahawk/src/cdrom/pcecd.cpp @@ -0,0 +1,1165 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2004 Ki + * Copyright (C) 2007-2011 Mednafen Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* + Stuff to test: + ADPCM playback rate relative to main PC Engine master clock rate. (Might vary significantly from system-to-system + due to imperfections in the separate clocks) + + Figure out how the ADPCM DMA control bits work. + + Determine real fade timings. + + Determine what D0 of the fade control register does(maybe mutes the channel not being fad-controlled if it's set?). + + Determine what D7 of the fade control register does("TEST"), assuming it even exists on the production model PCE CD. + + Handle D2 of register at 0x1804 better. Determine what the other bits of 0x1804 are for. + + Determine what registers and bits setting D7 of $180D causes to reset. + + Test behavior of D0-D3 of $180D on a real system(already tested D4). (Does setting the read address + cause a new byte to be loaded into the read buffer?) + + Test ADPCM write performance at all frequencies when playback is occurring. + + OTHER STUFF. +*/ + +/* + Notes: + Reading from $180A decrements length. Appears to saturate at 0x0000. + Side effects include at least: half/end IRQ bit setting. Oddly enough, when the end flags are set via read from $180A, the intermediate + flag appears to be cleared. This wouldn't appear to occur in normal ADPCM playback, ie both end and intermediate flags are 1 by the end + of playback(though if D6 of $180D is cleared, the intermediate flag is apparently cleared on the next sample clock, either intentionally or due to + some kind of length underflow I don't know; but the mode of operation of having D6 cleared is buggy, and I doubt games rely on any of its + weirder nuances). + + Writing to $180A increments length. Appears to saturate at 0xFFFF. + Side effects include at least: half IRQ bit setting/clearing. + + For $180A port read/write accesses at least, half_point = (bool)(length < 32768), evaluated before length is decremented or incremented. + + ADPCM RAM reads due to playback apparently aren't reflected in $180A as ADPCM read busy state. Unknown if it shares the same + buffer as $180A port reads though. + + Having D4 of $180D set clears the end flags(and they will not be set as long as D4 is set). It doesn't clear the intermediate/half flag though. + Short of resetting the ADPCM hardware by setting D7 of $180D, this was the only way I could find to clear the end flags via software. + + Having D4 of $180D set does NOT prevent the half flag from being set(at least not during reads/writes to $180A). + + ADPCM playback doesn't seem to start if the end flags are set and 0x60 is written to $180D, but starts(at least as can be determined from a program + monitoring the status bits) if 0x20 is written(IE D6 is clear). More investigation is needed(unlikely to affect games though). + + ADPCM playback starting is likely delayed(or at certain intervals) compared to writes to $180D. Investigation is needed, but emulating a non-constant + granularity-related delay may be undesirable due to the potential of triggering race conditions in game code. + + I say "end flags", but I'm assuming there's effectively one end flag, that's present in both $1803 and $180C reads(though in different positions). +*/ + + +#include "../mednafen.h" +#include "../cdrom/cdromif.h" +#include "../cdrom/scsicd.h" +#include "../okiadpcm.h" + +#include "pcecd.h" +#include "SimpleFIFO.h" + +//#define PCECD_DEBUG + +static unsigned int OC_Multiplier; + +static void (*IRQCB)(bool asserted); + +static double CDDAVolumeSetting; // User setting! + +static bool bBRAMEnabled; +static uint8 _Port[15]; +static uint8 ACKStatus; + +static SimpleFIFO SubChannelFIFO(16); + +static Blip_Buffer *sbuf[2]; +static int16 RawPCMVolumeCache[2]; + +static int32 ClearACKDelay; + +static int32 lastts; +static int32 scsicd_ne = 0; + +// ADPCM variables and whatnot +#define ADPCM_DEBUG(x, ...) { /*printf("[Half=%d, End=%d, Playing=%d] "x, ADPCM.HalfReached, ADPCM.EndReached, ADPCM.Playing, ## __VA_ARGS__);*/ } + +typedef Blip_Synth ADSynth; +static ADSynth ADPCMSynth; +static OKIADPCM_Decoder MSM5205; + +static bool ADPCMLP; +typedef struct +{ + uint8 *RAM; // = NULL; //0x10000; + uint16 Addr; + uint16 ReadAddr; + uint16 WriteAddr; + uint16 LengthCount; + + bool HalfReached; + bool EndReached; + bool Playing; + + uint8 LastCmd; + uint32 SampleFreq; + uint32 LPF_SampleFreq; + + uint8 PlayBuffer; + uint8 ReadBuffer; + int32 ReadPending; + int32 WritePending; + uint8 WritePendingValue; + + uint32 PlayNibble; + + + int64 bigdivacc; + int64 bigdiv; + int32 last_pcm; +} ADPCM_t; + +static ADPCM_t ADPCM; + +typedef struct +{ + uint8 Command; + int32 Volume; + + int32 CycleCounter; + uint32 CountValue; // What to reload CycleCounter with when it expires. + bool Clocked; +} FADE_t; + +static FADE_t Fader; +static int32 ADPCMFadeVolume, CDDAFadeVolume; + +static INLINE void Fader_SyncWhich(void) +{ + if(Fader.Command & 0x2) // ADPCM fade + { + ADPCMFadeVolume = Fader.Volume; + CDDAFadeVolume = 65536; + } + else // CD-DA Fade + { + CDDAFadeVolume = Fader.Volume; + ADPCMFadeVolume = 65536; + } + + ADPCMFadeVolume >>= 6; + SCSICD_SetCDDAVolume(0.50f * CDDAFadeVolume * CDDAVolumeSetting / 65536, + 0.50f * CDDAFadeVolume * CDDAVolumeSetting / 65536); +} + + +static void RedoLPF(int f) +{ + if(sbuf[0] && sbuf[1]) + { + if(ADPCMLP) + { + if(f >= 14) + { + int rolloff = (int)((((double)32087.5 / (16 - f)) / 2) * 0.70); + ADPCMSynth.treble_eq( blip_eq_t(-1000, rolloff, sbuf[0]->sample_rate())); + } + else + { + int rolloff = (int)((((double)32087.5 / (16 - f)) / 2) * 0.80); + ADPCMSynth.treble_eq( blip_eq_t(-1000, rolloff, sbuf[0]->sample_rate())); + } + } + } +} + +static INLINE int32 ADPCM_ClocksToNextEvent(void) +{ + int32 ret = (ADPCM.bigdiv + 65535) >> 16; + + if(ADPCM.WritePending && ret > ADPCM.WritePending) + ret = ADPCM.WritePending; + + if(ADPCM.ReadPending && ret > ADPCM.ReadPending) + ret = ADPCM.ReadPending; + + return(ret); +} + +static int32 CalcNextEvent(int32 base) +{ + int32 next_event = base; + int32 ADPCM_ctne = ADPCM_ClocksToNextEvent(); + + if(next_event > ADPCM_ctne) + next_event = ADPCM_ctne; + + if(ClearACKDelay > 0 && next_event > ClearACKDelay) + next_event = ClearACKDelay; + + if(next_event > scsicd_ne) + next_event = scsicd_ne; + + if(Fader.Clocked && next_event > Fader.CycleCounter) + next_event = Fader.CycleCounter; + + return(next_event); +} + + +#ifndef __MDFN_INCLUDED_FROM_PCE_FAST + +uint32 PCECD_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 value = 0xDEADBEEF; + + switch(id) + { + case CD_GSREG_BSY: + value = SCSICD_GetBSY(); + break; + + case CD_GSREG_REQ: + value = SCSICD_GetREQ(); + break; + + case CD_GSREG_MSG: + value = SCSICD_GetMSG(); + break; + + case CD_GSREG_CD: + value = SCSICD_GetCD(); + break; + + case CD_GSREG_IO: + value = SCSICD_GetIO(); + break; + + case CD_GSREG_SEL: + value = SCSICD_GetSEL(); + break; + + case CD_GSREG_ADPCM_CONTROL: + value = ADPCM.LastCmd; + break; + + case CD_GSREG_ADPCM_FREQ: + value = ADPCM.SampleFreq; + break; + + case CD_GSREG_ADPCM_CUR: + value = MSM5205.GetSample(); + break; + + case CD_GSREG_ADPCM_WRADDR: + value = ADPCM.WriteAddr; + break; + + case CD_GSREG_ADPCM_RDADDR: + value = ADPCM.ReadAddr; + break; + + case CD_GSREG_ADPCM_LENGTH: + value = ADPCM.LengthCount; + break; + + case CD_GSREG_ADPCM_PLAYNIBBLE: + value = (bool)(ADPCM.PlayNibble); + break; + + case CD_GSREG_ADPCM_PLAYING: + value = ADPCM.Playing; + break; + + case CD_GSREG_ADPCM_HALFREACHED: + value = ADPCM.HalfReached; + break; + + case CD_GSREG_ADPCM_ENDREACHED: + value = ADPCM.EndReached; + break; + } + + return(value); +} + +// TODO: +void PCECD_SetRegister(const unsigned int id, const uint32 value) +{ + +} + +void ADPCM_PeekRAM(uint32 Address, uint32 Length, uint8 *Buffer) +{ + while(Length--) + { + Address &= 0xFFFF; + *Buffer = ADPCM.RAM[Address]; + Address++; + Buffer++; + } +} + +void ADPCM_PokeRAM(uint32 Address, uint32 Length, const uint8 *Buffer) +{ + while(Length--) + { + Address &= 0xFFFF; + ADPCM.RAM[Address] = *Buffer; + Address++; + Buffer++; + } +} + +#endif + +static void update_irq_state() +{ + uint8 irq = _Port[2] & _Port[0x3] & (0x4|0x8|0x10|0x20|0x40); + + IRQCB((bool)irq); +} + +static void StuffSubchannel(uint8 meow, int subindex) +{ + uint8 tmp_data = meow & 0x7F; + + if(subindex == -2) + tmp_data = 0x00; + else if(subindex == -1) + tmp_data = 0x80; + + if(SubChannelFIFO.CanWrite()) + SubChannelFIFO.Write(&tmp_data, 1); + + _Port[0x3] |= 0x10; + update_irq_state(); +} + +static void CDIRQ(int type) +{ + #ifdef PCECD_DEBUG + if(type != 0x8000 || _Port[0x3] & 0x60) + printf("CDIRQ: %d\n", type); + #endif + if(type & 0x8000) + { + type &= 0x7FFF; + if(type == SCSICD_IRQ_DATA_TRANSFER_DONE) + _Port[0x3] &= ~0x20; + else if(type == SCSICD_IRQ_DATA_TRANSFER_READY) + _Port[0x3] &= ~0x40; + } + else if(type == SCSICD_IRQ_DATA_TRANSFER_DONE) + { + _Port[0x3] |= 0x20; + } + else if(type == SCSICD_IRQ_DATA_TRANSFER_READY) + { + _Port[0x3] |= 0x40; + } + update_irq_state(); +} + +static void UpdateADPCMIRQState(void) +{ + _Port[0x3] &= ~0xC; + + _Port[0x3] |= ADPCM.HalfReached ? 0x4 : 0x0; + _Port[0x3] |= ADPCM.EndReached ? 0x8 : 0x0; + + update_irq_state(); +} + +static INLINE uint8 read_1808(int32 timestamp, const bool PeekMode) +{ + uint8 ret = SCSICD_GetDB(); + + if(!PeekMode) + { + if(SCSICD_GetREQ() && !SCSICD_GetACK() && !SCSICD_GetCD()) + { + if(SCSICD_GetIO()) + { + SCSICD_SetACK(TRUE); + ACKStatus = TRUE; + scsicd_ne = SCSICD_Run(timestamp); + ClearACKDelay = 15 * 3; + } + } + } + + return(ret); +} + +bool PCECD_SetSettings(const PCECD_Settings *settings) +{ + CDDAVolumeSetting = settings ? settings->CDDA_Volume : 1.0; + Fader_SyncWhich(); + + ADPCMSynth.volume(0.42735f * (settings ? settings->ADPCM_Volume : 1.0)); + ADPCMLP = settings ? settings->ADPCM_LPF : 0; + + SCSICD_SetTransferRate(126000 * (settings ? settings->CD_Speed : 1)); + + return true; +} + +bool PCECD_Init(const PCECD_Settings *settings, void (*irqcb)(bool), double master_clock, unsigned int ocm, Blip_Buffer *soundbuf_l, Blip_Buffer *soundbuf_r) +{ + lastts = 0; + + OC_Multiplier = ocm; + + IRQCB = irqcb; + + sbuf[0] = soundbuf_l; + sbuf[1] = soundbuf_r; + + // Warning: magic number 126000 in PCECD_SetSettings() too + SCSICD_Init(SCSICD_PCE, 3 * OC_Multiplier, sbuf[0], sbuf[1], 126000 * (settings ? settings->CD_Speed : 1), master_clock * OC_Multiplier, CDIRQ, StuffSubchannel); + + if(!(ADPCM.RAM = (uint8 *)MDFN_malloc(0x10000, _("PCE ADPCM RAM")))) + { + return(0); + } + + PCECD_SetSettings(settings); + + ADPCM.bigdivacc = (int64)((double)master_clock * OC_Multiplier * 65536 / 32087.5); + + return(TRUE); +} + + +void PCECD_Close(void) +{ + if(ADPCM.RAM) + { + MDFN_free(ADPCM.RAM); + ADPCM.RAM = NULL; + } + SCSICD_Close(); +} + + +int32 PCECD_Power(uint32 timestamp) +{ + if((int32)timestamp != lastts) + (void)PCECD_Run(timestamp); + + IRQCB(0); + + SCSICD_Power(timestamp); + scsicd_ne = 0x7fffffff; + + bBRAMEnabled = FALSE; + memset(_Port, 0, sizeof(_Port)); + ACKStatus = 0; + ClearACKDelay = 0; + + memset(ADPCM.RAM, 0x00, 65536); + + ADPCM.ReadPending = ADPCM.WritePending = 0; + ADPCM.ReadBuffer = 0; + + ADPCM.LastCmd = 0; + MSM5205.SetSample(0x800); + MSM5205.SetSSI(0); + + ADPCM.SampleFreq = 0; + ADPCM.LPF_SampleFreq = 0; + ADPCM.bigdiv = ADPCM.bigdivacc * (16 - ADPCM.SampleFreq); + RedoLPF(ADPCM.LPF_SampleFreq); + + ADPCM.Addr = 0; + ADPCM.ReadAddr = 0; + ADPCM.WriteAddr = 0; + ADPCM.LengthCount = 0; + ADPCM.LastCmd = 0; + + ADPCM.HalfReached = false; + ADPCM.EndReached = false; + ADPCM.Playing = false; + ADPCM.PlayNibble = 0; + + UpdateADPCMIRQState(); + + Fader.Command = 0x00; + Fader.Volume = 0; + Fader.CycleCounter = 0; + Fader.CountValue = 0; + Fader.Clocked = FALSE; + + return(CalcNextEvent(0x7FFFFFFF)); +} + +bool PCECD_IsBRAMEnabled() +{ + return bBRAMEnabled; +} + +uint8 PCECD_Read(uint32 timestamp, uint32 A, int32 &next_event, const bool PeekMode) +{ + uint8 ret = 0; + + if((A & 0x18c0) == 0x18c0) + { + switch (A & 0x18cf) + { + case 0x18c1: ret = 0xaa; break; + case 0x18c2: ret = 0x55; break; + case 0x18c3: ret = 0x00; break; + case 0x18c5: ret = 0xaa; break; + case 0x18c6: ret = 0x55; break; + case 0x18c7: ret = 0x03; break; + } + } + else + { + if(!PeekMode) + PCECD_Run(timestamp); + + switch(A & 0xf) + { + case 0x0: + ret = 0; + ret |= SCSICD_GetBSY() ? 0x80 : 0x00; + ret |= SCSICD_GetREQ() ? 0x40 : 0x00; + ret |= SCSICD_GetMSG() ? 0x20 : 0x00; + ret |= SCSICD_GetCD() ? 0x10 : 0x00; + ret |= SCSICD_GetIO() ? 0x08 : 0x00; + break; + + case 0x1: ret = SCSICD_GetDB(); + break; + + case 0x2: ret = _Port[2]; + break; + + case 0x3: bBRAMEnabled = FALSE; + + /* switch left/right of digitized cd playback */ + ret = _Port[0x3]; + if(!PeekMode) + _Port[0x3] ^= 2; + break; + + case 0x4: ret = _Port[4]; + break; + + case 0x5: if(_Port[0x3] & 0x2) + ret = RawPCMVolumeCache[1] & 0xff; // Right + else + ret = RawPCMVolumeCache[0] & 0xff; // Left + break; + + case 0x6: if(_Port[0x3] & 0x2) + ret = ((uint16)RawPCMVolumeCache[1]) >> 8; // Right + else + ret = ((uint16)RawPCMVolumeCache[0]) >> 8; // Left + break; + + case 0x7: + if(SubChannelFIFO.CanRead() > 0) + ret = SubChannelFIFO.ReadByte(PeekMode); + else + ret = 0x00; // Not sure if it's 0, 0xFF, the last byte read, or something else. + + if(!PeekMode) + { + if(SubChannelFIFO.CanRead() == 0) + { + _Port[0x3] &= ~0x10; + update_irq_state(); + } + } + break; + + case 0x8: + ret = read_1808(timestamp, PeekMode); + break; + + case 0xa: + if(!PeekMode) + { + ADPCM_DEBUG("ReadBuffer\n"); + ADPCM.ReadPending = 19 * 3; //24 * 3; + } + + ret = ADPCM.ReadBuffer; + + break; + + case 0xb: + ret = _Port[0xb]; + break; + + case 0xc: + //printf("ADPCM Status Read: %d\n", timestamp); + ret = 0x00; + + ret |= (ADPCM.EndReached) ? 0x01 : 0x00; + ret |= (ADPCM.Playing) ? 0x08 : 0x00; + ret |= (ADPCM.WritePending > 0) ? 0x04 : 0x00; + ret |= (ADPCM.ReadPending > 0) ? 0x80 : 0x00; + break; + + case 0xd: + ret = ADPCM.LastCmd; + break; + } + } + + #ifdef PCECD_DEBUG + printf("Read: %04x %02x, %d\n", A, ret, timestamp); + #endif + + next_event = CalcNextEvent(0x7FFFFFFF); + + return(ret); +} + +static INLINE void Fader_Run(const int32 clocks) +{ + if(Fader.Clocked) + { + Fader.CycleCounter -= clocks; + while(Fader.CycleCounter <= 0) + { + if(Fader.Volume) + Fader.Volume--; + + Fader_SyncWhich(); + + Fader.CycleCounter += Fader.CountValue; + } + } +} + + +int32 PCECD_Write(uint32 timestamp, uint32 physAddr, uint8 data) +{ + const uint8 V = data; + + #ifdef PCECD_DEBUG + printf("Write: (PC=%04x, t=%6d) %04x %02x; MSG: %d, REQ: %d, ACK: %d, CD: %d, IO: %d, BSY: %d, SEL: %d\n", HuCPU.PC, timestamp, physAddr, data, SCSICD_GetMSG(), SCSICD_GetREQ(), SCSICD_GetACK(), SCSICD_GetCD(), SCSICD_GetIO(), SCSICD_GetBSY(), SCSICD_GetSEL()); + #endif + + PCECD_Run(timestamp); + + switch (physAddr & 0xf) + { + case 0x0: + SCSICD_SetSEL(1); + SCSICD_Run(timestamp); + SCSICD_SetSEL(0); + scsicd_ne = SCSICD_Run(timestamp); + + /* reset irq status */ + _Port[0x3] &= ~(0x20 | 0x40); // TODO: Confirm writing this register really reset these bits. + update_irq_state(); + break; + + case 0x1: // $1801 + _Port[1] = data; + SCSICD_SetDB(data); + scsicd_ne = SCSICD_Run(timestamp); + break; + + case 0x2: // $1802 + #ifdef PCECD_DEBUG + if(!(_Port[0x3] & _Port[2] & 0x40) && (_Port[0x3] & data & 0x40)) + puts("IRQ on waah 0x40"); + if(!(_Port[0x3] & _Port[2] & 0x20) && (_Port[0x3] & data & 0x20)) + puts("IRQ on waah 0x20"); + #endif + + SCSICD_SetACK(data & 0x80); + scsicd_ne = SCSICD_Run(timestamp); + _Port[2] = data; + ACKStatus = (bool)(data & 0x80); + update_irq_state(); + break; + + case 0x3: // read only + break; + + case 0x4: + SCSICD_SetRST(data & 0x2); + scsicd_ne = SCSICD_Run(timestamp); + if(data & 0x2) + { + _Port[0x3] &= ~0x70; + update_irq_state(); + } + _Port[4] = data; + break; + + case 0x5: + case 0x6: + { + int16 left, right; + SCSICD_GetCDDAValues(left, right); + RawPCMVolumeCache[0] = ((int64)abs(left) * CDDAFadeVolume) >> 16; + RawPCMVolumeCache[1] = ((int64)abs(right) * CDDAFadeVolume) >> 16; + } + break; + + case 0x7: // $1807: D7=1 enables backup ram + if (data & 0x80) + { + bBRAMEnabled = TRUE; + } + break; + + case 0x8: // Set ADPCM address low + if(ADPCM.LastCmd & 0x80) + break; + + ADPCM.Addr &= 0xFF00; + ADPCM.Addr |= V; + + ADPCM_DEBUG("SAL: %02x, %d\n", V, timestamp); + + // Length appears to be constantly latched when D4 is set(tested on a real system) + if(ADPCM.LastCmd & 0x10) + { + ADPCM_DEBUG("Set length(crazy way L): %04x\n", ADPCM.Addr); + ADPCM.LengthCount = ADPCM.Addr; + } + break; + + case 0x9: // Set ADPCM address high + if(ADPCM.LastCmd & 0x80) + break; + + ADPCM.Addr &= 0x00FF; + ADPCM.Addr |= V << 8; + + ADPCM_DEBUG("SAH: %02x, %d\n", V, timestamp); + + // Length appears to be constantly latched when D4 is set(tested on a real system) + if(ADPCM.LastCmd & 0x10) + { + ADPCM_DEBUG("Set length(crazy way H): %04x\n", ADPCM.Addr); + ADPCM.LengthCount = ADPCM.Addr; + } + break; + + case 0xa: + //ADPCM_DEBUG("Write: %02x, %d\n", V, timestamp); + ADPCM.WritePending = 3 * 11; + ADPCM.WritePendingValue = data; + break; + + case 0xb: // adpcm dma + ADPCM_DEBUG("DMA: %02x\n", V); + _Port[0xb] = data; + break; + + case 0xc: // read-only + break; + + case 0xd: + ADPCM_DEBUG("Write180D: %02x\n", V); + if(data & 0x80) + { + ADPCM.Addr = 0; + ADPCM.ReadAddr = 0; + ADPCM.WriteAddr = 0; + ADPCM.LengthCount = 0; + ADPCM.LastCmd = 0; + + ADPCM.Playing = false; + ADPCM.HalfReached = false; + ADPCM.EndReached = false; + + ADPCM.PlayNibble = 0; + + UpdateADPCMIRQState(); + + MSM5205.SetSample(0x800); + MSM5205.SetSSI(0); + break; + } + + if(ADPCM.Playing && !(data & 0x20)) + ADPCM.Playing = false; + + if(!ADPCM.Playing && (data & 0x20)) + { + ADPCM.bigdiv = ADPCM.bigdivacc * (16 - ADPCM.SampleFreq); + ADPCM.Playing = true; + ADPCM.HalfReached = false; // Not sure about this. + ADPCM.PlayNibble = 0; + MSM5205.SetSample(0x800); + MSM5205.SetSSI(0); + } + + // Length appears to be constantly latched when D4 is set(tested on a real system) + if(data & 0x10) + { + ADPCM_DEBUG("Set length: %04x\n", ADPCM.Addr); + ADPCM.LengthCount = ADPCM.Addr; + ADPCM.EndReached = false; + } + + // D2 and D3 control read address + if(!(ADPCM.LastCmd & 0x8) && (data & 0x08)) + { + if(data & 0x4) + ADPCM.ReadAddr = ADPCM.Addr; + else + ADPCM.ReadAddr = (ADPCM.Addr - 1) & 0xFFFF; + + ADPCM_DEBUG("Set ReadAddr: %04x, %06x\n", ADPCM.Addr, ADPCM.ReadAddr); + } + + // D0 and D1 control write address + if(!(ADPCM.LastCmd & 0x2) && (data & 0x2)) + { + ADPCM.WriteAddr = ADPCM.Addr; + if(!(data & 0x1)) + ADPCM.WriteAddr = (ADPCM.WriteAddr - 1) & 0xFFFF; + ADPCM_DEBUG("Set WriteAddr: %04x, %06x\n", ADPCM.Addr, ADPCM.WriteAddr); + } + ADPCM.LastCmd = data; + UpdateADPCMIRQState(); + break; + + case 0xe: // Set ADPCM playback rate + { + uint8 freq = V & 0x0F; + + ADPCM.SampleFreq = freq; + + ADPCM_DEBUG("Freq: %02x\n", freq); + } + break; + + case 0xf: + Fader.Command = V; + + #ifdef PCECD_DEBUG + printf("Fade: %02x\n", data); + #endif + + // Cancel fade + if(!(V & 0x8)) + { + Fader.Volume = 65536; + Fader.CycleCounter = 0; + Fader.CountValue = 0; + Fader.Clocked = FALSE; + } + else + { + Fader.CountValue = OC_Multiplier * 3 * ((V & 0x4) ? 273 : 655); // 2.500s : 6.000s; + + if(!Fader.Clocked) + Fader.CycleCounter = Fader.CountValue; + + Fader.Clocked = TRUE; + } + Fader_SyncWhich(); + break; + } + + + return(CalcNextEvent(0x7FFFFFFF)); +} + +static INLINE void ADPCM_PB_Run(int32 basetime, int32 run_time) +{ + ADPCM.bigdiv -= run_time * 65536; + + while(ADPCM.bigdiv <= 0) + { + ADPCM.bigdiv += ADPCM.bigdivacc * (16 - ADPCM.SampleFreq); + + if(ADPCM.Playing && !ADPCM.PlayNibble) // Do playback sample buffer fetch. + { + ADPCM.HalfReached = (ADPCM.LengthCount < 32768); + if(!ADPCM.LengthCount && !(ADPCM.LastCmd & 0x10)) + { + if(ADPCM.EndReached) + ADPCM.HalfReached = false; + + ADPCM.EndReached = true; + + if(ADPCM.LastCmd & 0x40) + ADPCM.Playing = false; + } + + ADPCM.PlayBuffer = ADPCM.RAM[ADPCM.ReadAddr]; + ADPCM.ReadAddr = (ADPCM.ReadAddr + 1) & 0xFFFF; + + if(ADPCM.LengthCount && !(ADPCM.LastCmd & 0x10)) + ADPCM.LengthCount--; + } + + if(ADPCM.Playing) + { + int32 pcm; + uint8 nibble; + + nibble = (ADPCM.PlayBuffer >> (ADPCM.PlayNibble ^ 4)) & 0x0F; + pcm = (MSM5205.Decode(nibble) >> 2) - 512; + + ADPCM.PlayNibble ^= 4; + + pcm = (pcm * ADPCMFadeVolume) >> 8; + uint32 synthtime = ((basetime + (ADPCM.bigdiv >> 16))) / (3 * OC_Multiplier); + + if(sbuf[0] && sbuf[1]) + { + ADPCMSynth.offset(synthtime, pcm - ADPCM.last_pcm, sbuf[0]); + ADPCMSynth.offset(synthtime, pcm - ADPCM.last_pcm, sbuf[1]); + } + ADPCM.last_pcm = pcm; + } + } +} + +static INLINE void ADPCM_Run(const int32 clocks, const int32 timestamp) +{ + //printf("ADPCM Run: %d\n", clocks); + ADPCM_PB_Run(timestamp, clocks); + + if(ADPCM.WritePending) + { + ADPCM.WritePending -= clocks; + if(ADPCM.WritePending <= 0) + { + ADPCM.HalfReached = (ADPCM.LengthCount < 32768); + if(!(ADPCM.LastCmd & 0x10) && ADPCM.LengthCount < 0xFFFF) + ADPCM.LengthCount++; + + ADPCM.RAM[ADPCM.WriteAddr++] = ADPCM.WritePendingValue; + ADPCM.WritePending = 0; + } + } + + if(!ADPCM.WritePending) + { + if(_Port[0xb] & 0x3) + { + // Run SCSICD before we examine the signals. + scsicd_ne = SCSICD_Run(timestamp); + + if(!SCSICD_GetCD() && SCSICD_GetIO() && SCSICD_GetREQ() && !SCSICD_GetACK()) + { + ADPCM.WritePendingValue = read_1808(timestamp, false); //read_1801(); + ADPCM.WritePending = 10 * 3; + } + } + } + + if(ADPCM.ReadPending) + { + ADPCM.ReadPending -= clocks; + if(ADPCM.ReadPending <= 0) + { + ADPCM.ReadBuffer = ADPCM.RAM[ADPCM.ReadAddr]; + ADPCM.ReadAddr = (ADPCM.ReadAddr + 1) & 0xFFFF; + ADPCM.ReadPending = 0; + + ADPCM.HalfReached = (ADPCM.LengthCount < 32768); + if(!(ADPCM.LastCmd & 0x10)) + { + if(ADPCM.LengthCount) + ADPCM.LengthCount--; + else + { + ADPCM.EndReached = true; + ADPCM.HalfReached = false; + + if(ADPCM.LastCmd & 0x40) + ADPCM.Playing = false; + } + } + } + } + + UpdateADPCMIRQState(); +} + + +// The return value of this function is ignored in PCECD_Read() and PCECD_Write() for speed reasons, and the +// fact that reading and writing can change the next potential event, +#ifdef __MDFN_INCLUDED_FROM_PCE_FAST +void PCECD_Run(uint32 in_timestamp) +#else +int32 PCECD_Run(uint32 in_timestamp) +#endif +{ + int32 clocks = in_timestamp - lastts; + int32 running_ts = lastts; + + //printf("Run Begin: Clocks=%d(%d - %d), cl=%d\n", clocks, in_timestamp, lastts, CalcNextEvent); + //fflush(stdout); + + while(clocks > 0) + { + int32 chunk_clocks = CalcNextEvent(clocks); + + running_ts += chunk_clocks; + + if(ClearACKDelay > 0) + { + ClearACKDelay -= chunk_clocks; + if(ClearACKDelay <= 0) + { + ACKStatus = FALSE; + SCSICD_SetACK(FALSE); + SCSICD_Run(running_ts); + if(SCSICD_GetCD()) + { + _Port[0xb] &= ~1; + #ifdef PCECD_DEBUG + puts("DMA End"); + #endif + } + } + } + + Fader_Run(chunk_clocks); + + ADPCM_Run(chunk_clocks, running_ts); + scsicd_ne = SCSICD_Run(running_ts); + + clocks -= chunk_clocks; + } + + lastts = in_timestamp; + + + //puts("Run End"); + //fflush(stdout); + + + #ifndef __MDFN_INCLUDED_FROM_PCE_FAST + return(CalcNextEvent(0x7FFFFFFF)); + #endif +} + +void PCECD_ResetTS(void) +{ + if(ADPCM.SampleFreq != ADPCM.LPF_SampleFreq) + { + ADPCM.LPF_SampleFreq = ADPCM.SampleFreq; + RedoLPF(ADPCM.LPF_SampleFreq); + } + SCSICD_ResetTS(); + lastts = 0; +} + +static int ADPCM_StateAction(StateMem *sm, int load, int data_only) +{ + uint32 ad_sample = MSM5205.GetSample(); + int32 ad_ref_index = MSM5205.GetSSI(); + + SFORMAT StateRegs[] = + { + SFARRAY(ADPCM.RAM, 0x10000), + + SFVAR(ADPCM.bigdiv), + SFVAR(ADPCM.Addr), + SFVAR(ADPCM.ReadAddr), + SFVAR(ADPCM.WriteAddr), + SFVAR(ADPCM.LengthCount), + SFVAR(ADPCM.LastCmd), + SFVAR(ADPCM.SampleFreq), + + SFVAR(ADPCM.ReadPending), + SFVAR(ADPCM.ReadBuffer), + + SFVAR(ADPCM.WritePending), + SFVAR(ADPCM.WritePendingValue), + + SFVAR(ADPCM.HalfReached), + SFVAR(ADPCM.EndReached), + SFVAR(ADPCM.Playing), + + SFVAR(ADPCM.PlayNibble), + + SFVAR(ad_sample), + SFVAR(ad_ref_index), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "APCM"); + if(load) + { + MSM5205.SetSample(ad_sample); + MSM5205.SetSSI(ad_ref_index); + RedoLPF(ADPCM.SampleFreq); + } + return(ret); +} + +int PCECD_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(bBRAMEnabled), + SFVAR(ACKStatus), + SFVAR(ClearACKDelay), + SFARRAY16(RawPCMVolumeCache, 2), + SFARRAY(_Port, sizeof(_Port)), + + SFVAR(Fader.Command), + SFVAR(Fader.Volume), + SFVAR(Fader.CycleCounter), + SFVAR(Fader.CountValue), + SFVAR(Fader.Clocked), + + SFARRAY(&SubChannelFIFO.data[0], SubChannelFIFO.data.size()), + SFVAR(SubChannelFIFO.read_pos), + SFVAR(SubChannelFIFO.write_pos), + SFVAR(SubChannelFIFO.in_count), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "PECD"); + ret &= SCSICD_StateAction(sm, load, data_only, "CDRM"); + ret &= ADPCM_StateAction(sm, load, data_only); + + if(load) + { + Fader_SyncWhich(); + //SCSICD_SetDB(_Port[1]); + SCSICD_SetACK(ACKStatus); + SCSICD_SetRST(_Port[4] & 0x2); + + SubChannelFIFO.read_pos %= SubChannelFIFO.size; + SubChannelFIFO.write_pos %= SubChannelFIFO.size; + } + return(ret); +} diff --git a/libmednahawk/src/cdrom/pcecd.h b/libmednahawk/src/cdrom/pcecd.h new file mode 100644 index 0000000000..2a5dba3e1e --- /dev/null +++ b/libmednahawk/src/cdrom/pcecd.h @@ -0,0 +1,66 @@ +#ifndef __PCE_CDROM_H +#define __PCE_CDROM_H + +#include + +typedef struct +{ + double CDDA_Volume; + + unsigned int CD_Speed; + + double ADPCM_Volume; + + bool ADPCM_LPF; +} PCECD_Settings; + + +enum +{ + CD_GSREG_BSY = 0, + CD_GSREG_REQ, // RO + CD_GSREG_MSG, // RO + CD_GSREG_CD, // RO + CD_GSREG_IO, // RO + CD_GSREG_SEL, + + CD_GSREG_ADPCM_CONTROL, + CD_GSREG_ADPCM_FREQ, + CD_GSREG_ADPCM_CUR, + CD_GSREG_ADPCM_WRADDR, + CD_GSREG_ADPCM_RDADDR, + CD_GSREG_ADPCM_LENGTH, + CD_GSREG_ADPCM_PLAYNIBBLE, + + CD_GSREG_ADPCM_PLAYING, + CD_GSREG_ADPCM_HALFREACHED, + CD_GSREG_ADPCM_ENDREACHED, +}; + +uint32 PCECD_GetRegister(const unsigned int id, char *special, const uint32 special_len); +void PCECD_SetRegister(const unsigned int id, const uint32 value); + + +int32 PCECD_Run(uint32 in_timestamp) MDFN_WARN_UNUSED_RESULT; +void PCECD_ResetTS(void); + +bool PCECD_Init(const PCECD_Settings *settings, void (*irqcb)(bool), double master_clock, unsigned int ocm, Blip_Buffer *soundbuf_l, Blip_Buffer *soundbuf_r); +bool PCECD_SetSettings(const PCECD_Settings *settings); + +void PCECD_Close(); + +// Returns number of cycles until next CD event. +int32 PCECD_Power(uint32 timestamp) MDFN_WARN_UNUSED_RESULT; + +uint8 PCECD_Read(uint32 timestamp, uint32, int32 &next_event, const bool PeekMode = false); +int32 PCECD_Write(uint32 timestamp, uint32, uint8 data) MDFN_WARN_UNUSED_RESULT; + +bool PCECD_IsBRAMEnabled(); + +int PCECD_StateAction(StateMem *sm, int load, int data_only); + +void ADPCM_PeekRAM(uint32 Address, uint32 Length, uint8 *Buffer); +void ADPCM_PokeRAM(uint32 Address, uint32 Length, const uint8 *Buffer); + +#endif + diff --git a/libmednahawk/src/cdrom/recover-raw.cpp b/libmednahawk/src/cdrom/recover-raw.cpp new file mode 100644 index 0000000000..13bd1c67dd --- /dev/null +++ b/libmednahawk/src/cdrom/recover-raw.cpp @@ -0,0 +1,203 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2007 Carsten Gnoerlich. + * Project home page: http://www.dvdisaster.com + * Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, + * or direct your browser at http://www.gnu.org. + */ + +#include "dvdisaster.h" + +static GaloisTables *gt = NULL; /* for L-EC Reed-Solomon */ +static ReedSolomonTables *rt = NULL; + +bool Init_LEC_Correct(void) +{ + gt = CreateGaloisTables(0x11d); + rt = CreateReedSolomonTables(gt, 0, 1, 10); + + return(1); +} + +void Kill_LEC_Correct(void) +{ + FreeGaloisTables(gt); + FreeReedSolomonTables(rt); +} + +/*** + *** CD level CRC calculation + ***/ + +/* + * Test raw sector against its 32bit CRC. + * Returns TRUE if frame is good. + */ + +int CheckEDC(const unsigned char *cd_frame, bool xa_mode) +{ + unsigned int expected_crc, real_crc; + unsigned int crc_base = xa_mode ? 2072 : 2064; + + expected_crc = cd_frame[crc_base + 0] << 0; + expected_crc |= cd_frame[crc_base + 1] << 8; + expected_crc |= cd_frame[crc_base + 2] << 16; + expected_crc |= cd_frame[crc_base + 3] << 24; + + if(xa_mode) + real_crc = EDCCrc32(cd_frame+16, 2056); + else + real_crc = EDCCrc32(cd_frame, 2064); + + if(expected_crc == real_crc) + return(1); + else + { + //printf("Bad EDC CRC: Calculated: %08x, Recorded: %08x\n", real_crc, expected_crc); + return(0); + } +} + +/*** + *** A very simple L-EC error correction. + *** + * Perform just one pass over the Q and P vectors to see if everything + * is okay respectively correct minor errors. This is pretty much the + * same stuff the drive is supposed to do in the final L-EC stage. + */ + +static int simple_lec(unsigned char *frame) +{ + unsigned char byte_state[2352]; + unsigned char p_vector[P_VECTOR_SIZE]; + unsigned char q_vector[Q_VECTOR_SIZE]; + unsigned char p_state[P_VECTOR_SIZE]; + int erasures[Q_VECTOR_SIZE], erasure_count; + int ignore[2]; + int p_failures, q_failures; + int p_corrected, q_corrected; + int p,q; + + /* Setup */ + + memset(byte_state, 0, 2352); + + p_failures = q_failures = 0; + p_corrected = q_corrected = 0; + + /* Perform Q-Parity error correction */ + + for(q=0; q 2) + { GetPVector(byte_state, p_state, p); + erasure_count = 0; + + for(i=0; i 0 && erasure_count <= 2) + { GetPVector(frame, p_vector, p); + err = DecodePQ(rt, p_vector, P_PADDING, erasures, erasure_count); + } + } + + /* See what we've got */ + + if(err < 0) /* Uncorrectable. */ + { p_failures++; + } + else /* Correctable. */ + { if(err == 1 || err == 2) /* Store back corrected vector */ + { SetPVector(frame, p_vector, p); + p_corrected++; + } + } + } + + /* Sum up */ + + if(q_failures || p_failures || q_corrected || p_corrected) + { + return 1; + } + + return 0; +} + +/*** + *** Validate CD raw sector + ***/ + +int ValidateRawSector(unsigned char *frame, bool xaMode) +{ + int lec_did_sth = FALSE; + + /* Do simple L-EC. + It seems that drives stop their internal L-EC as soon as the + EDC is okay, so we may see uncorrected errors in the parity bytes. + Since we are also interested in the user data only and doing the + L-EC is expensive, we skip our L-EC as well when the EDC is fine. */ + + if(!CheckEDC(frame, xaMode)) + { + lec_did_sth = simple_lec(frame); + } + /* Test internal sector checksum again */ + + if(!CheckEDC(frame, xaMode)) + { + /* EDC failure in RAW sector */ + return FALSE; + } + + return TRUE; +} + diff --git a/libmednahawk/src/cdrom/scsicd-pce-commands.inc b/libmednahawk/src/cdrom/scsicd-pce-commands.inc new file mode 100644 index 0000000000..1394c506b5 --- /dev/null +++ b/libmednahawk/src/cdrom/scsicd-pce-commands.inc @@ -0,0 +1,269 @@ +/******************************************************** +* * +* PC Engine CD Command 0xD8 - SAPSP * +* * +********************************************************/ +static void DoNEC_PCE_SAPSP(const uint8 *cdb) +{ + uint32 new_read_sec_start; + + //printf("Set audio start: %02x %02x %02x %02x %02x %02x %02x\n", cdb[9], cdb[1], cdb[2], cdb[3], cdb[4], cdb[5], cdb[6]); + switch (cdb[9] & 0xc0) + { + default: SCSIDBG("Unknown SAPSP 9: %02x\n", cdb[9]); + case 0x00: + new_read_sec_start = (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + break; + + case 0x40: + new_read_sec_start = AMSF_to_LBA(BCD_to_U8(cdb[2]), BCD_to_U8(cdb[3]), BCD_to_U8(cdb[4])); + break; + + case 0x80: + { + int track = BCD_to_U8(cdb[2]); + + if(!track) + track = 1; + else if(track == toc.last_track + 1) + track = 100; + else if(track > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + new_read_sec_start = toc.tracks[track].lba; + } + break; + } + + //printf("%lld\n", (long long)(monotonic_timestamp - pce_lastsapsp_timestamp) * 1000 / System_Clock); + if(cdda.CDDAStatus == CDDASTATUS_PLAYING && new_read_sec_start == read_sec_start && ((int64)(monotonic_timestamp - pce_lastsapsp_timestamp) * 1000 / System_Clock) < 190) + { + pce_lastsapsp_timestamp = monotonic_timestamp; + + SendStatusAndMessage(STATUS_GOOD, 0x00); + CDIRQCallback(SCSICD_IRQ_DATA_TRANSFER_DONE); + return; + } + + pce_lastsapsp_timestamp = monotonic_timestamp; + + read_sec = read_sec_start = new_read_sec_start; + read_sec_end = toc.tracks[100].lba; + + + cdda.CDDAReadPos = 588; + + cdda.CDDAStatus = CDDASTATUS_PAUSED; + cdda.PlayMode = PLAYMODE_SILENT; + + if(cdb[1]) + { + cdda.PlayMode = PLAYMODE_NORMAL; + cdda.CDDAStatus = CDDASTATUS_PLAYING; + } + + if(read_sec < toc.tracks[100].lba) + Cur_CDIF->HintReadSector(read_sec); + + SendStatusAndMessage(STATUS_GOOD, 0x00); + CDIRQCallback(SCSICD_IRQ_DATA_TRANSFER_DONE); +} + + + +/******************************************************** +* * +* PC Engine CD Command 0xD9 - SAPEP * +* * +********************************************************/ +static void DoNEC_PCE_SAPEP(const uint8 *cdb) +{ + uint32 new_read_sec_end; + + //printf("Set audio end: %02x %02x %02x %02x %02x %02x %02x\n", cdb[9], cdb[1], cdb[2], cdb[3], cdb[4], cdb[5], cdb[6]); + + switch (cdb[9] & 0xc0) + { + default: SCSIDBG("Unknown SAPEP 9: %02x\n", cdb[9]); + + case 0x00: + new_read_sec_end = (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + break; + + case 0x40: + new_read_sec_end = BCD_to_U8(cdb[4]) + 75 * (BCD_to_U8(cdb[3]) + 60 * BCD_to_U8(cdb[2])); + new_read_sec_end -= 150; + break; + + case 0x80: + { + int track = BCD_to_U8(cdb[2]); + + if(!track) + track = 1; + else if(track == toc.last_track + 1) + track = 100; + else if(track > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + new_read_sec_end = toc.tracks[track].lba; + } + break; + } + + read_sec_end = new_read_sec_end; + + switch(cdb[1]) // PCE CD(TODO: Confirm these, and check the mode mask): + { + default: + case 0x03: cdda.PlayMode = PLAYMODE_NORMAL; + cdda.CDDAStatus = CDDASTATUS_PLAYING; + break; + + case 0x02: cdda.PlayMode = PLAYMODE_INTERRUPT; + cdda.CDDAStatus = CDDASTATUS_PLAYING; + break; + + case 0x01: cdda.PlayMode = PLAYMODE_LOOP; + cdda.CDDAStatus = CDDASTATUS_PLAYING; + break; + + case 0x00: cdda.PlayMode = PLAYMODE_SILENT; + cdda.CDDAStatus = CDDASTATUS_STOPPED; + break; + } + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +/******************************************************** +* * +* PC Engine CD Command 0xDA - Pause * +* * +********************************************************/ +static void DoNEC_PCE_PAUSE(const uint8 *cdb) +{ + if(cdda.CDDAStatus != CDDASTATUS_STOPPED) // Hmm, should we give an error if it tries to pause and it's already paused? + { + cdda.CDDAStatus = CDDASTATUS_PAUSED; + SendStatusAndMessage(STATUS_GOOD, 0x00); + } + else // Definitely give an error if it tries to pause when no track is playing! + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_AUDIO_NOT_PLAYING); + } +} + + + +/******************************************************** +* * +* PC Engine CD Command 0xDD - Read Subchannel Q * +* * +********************************************************/ +static void DoNEC_PCE_READSUBQ(const uint8 *cdb) +{ + uint8 *SubQBuf = cd.SubQBuf[QMode_Time]; + uint8 data_in[8192]; + + memset(data_in, 0x00, 10); + + data_in[2] = SubQBuf[1]; // Track + data_in[3] = SubQBuf[2]; // Index + data_in[4] = SubQBuf[3]; // M(rel) + data_in[5] = SubQBuf[4]; // S(rel) + data_in[6] = SubQBuf[5]; // F(rel) + data_in[7] = SubQBuf[7]; // M(abs) + data_in[8] = SubQBuf[8]; // S(abs) + data_in[9] = SubQBuf[9]; // F(abs) + + if(cdda.CDDAStatus == CDDASTATUS_PAUSED) + data_in[0] = 2; // Pause + else if(cdda.CDDAStatus == CDDASTATUS_PLAYING || cdda.CDDAStatus == CDDASTATUS_SCANNING) // FIXME: Is this the correct status code for scanning playback? + data_in[0] = 0; // Playing + else + data_in[0] = 3; // Stopped + + DoSimpleDataIn(data_in, 10); +} + + + +/******************************************************** +* * +* PC Engine CD Command 0xDE - Get Directory Info * +* * +********************************************************/ +static void DoNEC_PCE_GETDIRINFO(const uint8 *cdb) +{ + // Problems: + // Returned data lengths on real PCE are not confirmed. + // Mode 0x03 behavior not tested on real PCE + + uint8 data_in[2048]; + uint32 data_in_size = 0; + + memset(data_in, 0, sizeof(data_in)); + + switch(cdb[1]) + { + default: MDFN_DispMessage("Unknown GETDIRINFO Mode: %02x", cdb[1]); + printf("Unknown GETDIRINFO Mode: %02x", cdb[1]); + case 0x0: + data_in[0] = U8_to_BCD(toc.first_track); + data_in[1] = U8_to_BCD(toc.last_track); + + data_in_size = 2; + break; + + case 0x1: + { + uint8 m, s, f; + + LBA_to_AMSF(toc.tracks[100].lba, &m, &s, &f); + + data_in[0] = U8_to_BCD(m); + data_in[1] = U8_to_BCD(s); + data_in[2] = U8_to_BCD(f); + + data_in_size = 3; + } + break; + + case 0x2: + { + uint8 m, s, f; + int track = BCD_to_U8(cdb[2]); + + if(!track) + track = 1; + else if(cdb[2] == 0xAA) + { + track = 100; + } + else if(track > 99) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + LBA_to_AMSF(toc.tracks[track].lba, &m, &s, &f); + + data_in[0] = U8_to_BCD(m); + data_in[1] = U8_to_BCD(s); + data_in[2] = U8_to_BCD(f); + data_in[3] = toc.tracks[track].control; + data_in_size = 4; + } + break; + } + + DoSimpleDataIn(data_in, data_in_size); +} + diff --git a/libmednahawk/src/cdrom/scsicd.cpp b/libmednahawk/src/cdrom/scsicd.cpp new file mode 100644 index 0000000000..430b9c4a6d --- /dev/null +++ b/libmednahawk/src/cdrom/scsicd.cpp @@ -0,0 +1,3107 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "../clamp.h" +#include +#include +#include "scsicd.h" +#include "cdromif.h" +#include "SimpleFIFO.h" + +#define SCSIDBG(format, ...) { printf("SCSI: " format "\n", ## __VA_ARGS__); } +//#define SCSIDBG(format, ...) { } + +using namespace CDUtility; + + +static uint32 CD_DATA_TRANSFER_RATE; +static uint32 System_Clock; +static void (*CDIRQCallback)(int); +static void (*CDStuffSubchannels)(uint8, int); +static Blip_Buffer *sbuf[2]; +static int WhichSystem; +static CDIF *Cur_CDIF; + +// Internal operation to the SCSI CD unit. Only pass 1 or 0 to these macros! +#define SetIOP(mask, set) { cd_bus.signals &= ~mask; if(set) cd_bus.signals |= mask; } + +#define SetBSY(set) SetIOP(SCSICD_BSY_mask, set) +#define SetIO(set) SetIOP(SCSICD_IO_mask, set) +#define SetCD(set) SetIOP(SCSICD_CD_mask, set) +#define SetMSG(set) SetIOP(SCSICD_MSG_mask, set) + +static INLINE void SetREQ(bool set) +{ + if(set && !REQ_signal) + CDIRQCallback(SCSICD_IRQ_MAGICAL_REQ); + + SetIOP(SCSICD_REQ_mask, set); +} + +#define SetkingACK(set) SetIOP(SCSICD_kingACK_mask, set) +#define SetkingRST(set) SetIOP(SCSICD_kingRST_mask, set) +#define SetkingSEL(set) SetIOP(SCSICD_kingSEL_mask, set) +#define SetkingATN(set) SetIOP(SCSICD_kingATN_mask, set) + + +enum +{ + QMode_Zero = 0, + QMode_Time = 1, + QMode_MCN = 2, // Media Catalog Number + QMode_ISRC = 3 // International Standard Recording Code +}; + +typedef struct +{ + bool last_RST_signal; + + // The pending message to send(in the message phase) + uint8 message_pending; + + bool status_sent, message_sent; + + // Pending error codes + uint8 key_pending, asc_pending, ascq_pending, fru_pending; + + uint8 command_buffer[256]; + uint8 command_buffer_pos; + uint8 command_size_left; + + // FALSE if not all pending data is in the FIFO, TRUE if it is. + // Used for multiple sector CD reads. + bool data_transfer_done; + + // To target(the cd unit), for "MODE SELECT" mainly + uint8 data_out[8192]; + uint32 data_out_pos; + uint32 data_out_size; + + bool TrayOpen; + bool DiscChanged; + + uint8 SubQBuf[4][0xC]; // One for each of the 4 most recent q-Modes. + uint8 SubQBuf_Last[0xC]; // The most recent q subchannel data, regardless of q-mode. + + uint8 SubPWBuf[96]; + +} scsicd_t; + +typedef Blip_Synth < /*64*/blip_good_quality, 1 > CDSynth; + +enum +{ + CDDASTATUS_PAUSED = -1, + CDDASTATUS_STOPPED = 0, + CDDASTATUS_PLAYING = 1, + CDDASTATUS_SCANNING = 2, +}; + +enum +{ + PLAYMODE_SILENT = 0x00, + PLAYMODE_NORMAL, + PLAYMODE_INTERRUPT, + PLAYMODE_LOOP, +}; + +typedef struct +{ + int32 CDDADivAcc; + uint32 scan_sec_end; + + uint8 PlayMode; + CDSynth CDDASynth[2]; + int32 CDDAVolume[2]; + int16 last_sample[2]; + int16 CDDASectorBuffer[1176]; + uint32 CDDAReadPos; + + int8 CDDAStatus; + uint8 ScanMode; + int32 CDDADiv; + int CDDATimeDiv; + + uint8 OutPortChSelect[2]; + uint32 OutPortChSelectCache[2]; + int32 OutPortVolumeCache[2]; +} cdda_t; + +void MakeSense(uint8 * target, uint8 key, uint8 asc, uint8 ascq, uint8 fru) +{ + memset(target, 0, 18); + + target[0] = 0x70; // Current errors and sense data is not SCSI compliant + target[2] = key; + target[7] = 0x0A; + target[12] = asc; // Additional Sense Code + target[13] = ascq; // Additional Sense Code Qualifier + target[14] = fru; // Field Replaceable Unit code +} + +static void (*SCSILog)(const char *, const char *format, ...); +static void InitModePages(void); + +static scsicd_timestamp_t lastts; +static int64 monotonic_timestamp; +static int64 pce_lastsapsp_timestamp; + +scsicd_t cd; +scsicd_bus_t cd_bus; +static cdda_t cdda; + +static SimpleFIFO *din = NULL; + +static CDUtility::TOC toc; + +static uint32 read_sec_start; +static uint32 read_sec; +static uint32 read_sec_end; + +static int32 CDReadTimer; +static uint32 SectorAddr; +static uint32 SectorCount; + + +enum +{ + PHASE_BUS_FREE = 0, + PHASE_COMMAND, + PHASE_DATA_IN, + PHASE_DATA_OUT, + PHASE_STATUS, + PHASE_MESSAGE_IN, + PHASE_MESSAGE_OUT +}; +static unsigned int CurrentPhase; +static void ChangePhase(const unsigned int new_phase); + + +static void FixOPV(void) +{ + for(int port = 0; port < 2; port++) + { + cdda.OutPortVolumeCache[port] = cdda.CDDAVolume[port]; + + if(cdda.OutPortChSelect[port] & 0x01) + cdda.OutPortChSelectCache[port] = 0; + else if(cdda.OutPortChSelect[port] & 0x02) + cdda.OutPortChSelectCache[port] = 1; + else + { + cdda.OutPortChSelectCache[port] = 0; + cdda.OutPortVolumeCache[port] = 0; + } + } +} + +static void VirtualReset(void) +{ + InitModePages(); + + din->Flush(); + + cdda.CDDADivAcc = (int64)System_Clock * 65536 / 44100; + CDReadTimer = 0; + + pce_lastsapsp_timestamp = monotonic_timestamp; + + SectorAddr = SectorCount = 0; + read_sec_start = read_sec = 0; + read_sec_end = ~0; + + cdda.PlayMode = PLAYMODE_SILENT; + cdda.CDDAReadPos = 0; + cdda.CDDAStatus = CDDASTATUS_STOPPED; + cdda.CDDADiv = 0; + + cdda.ScanMode = 0; + cdda.scan_sec_end = 0; + + + cd.data_out_pos = cd.data_out_size = 0; + + FixOPV(); + + ChangePhase(PHASE_BUS_FREE); +} + +void SCSICD_Power(scsicd_timestamp_t system_timestamp) +{ + memset(&cd, 0, sizeof(scsicd_t)); + memset(&cd_bus, 0, sizeof(scsicd_bus_t)); + + monotonic_timestamp = system_timestamp; + + cd.DiscChanged = false; + + if(Cur_CDIF && !cd.TrayOpen) + Cur_CDIF->ReadTOC(&toc); + + CurrentPhase = PHASE_BUS_FREE; + + VirtualReset(); +} + + +void SCSICD_SetDB(uint8 data) +{ + cd_bus.DB = data; + //printf("Set DB: %02x\n", data); +} + +void SCSICD_SetACK(bool set) +{ + SetkingACK(set); + //printf("Set ACK: %d\n", set); +} + +void SCSICD_SetSEL(bool set) +{ + SetkingSEL(set); + //printf("Set SEL: %d\n", set); +} + +void SCSICD_SetRST(bool set) +{ + SetkingRST(set); + //printf("Set RST: %d\n", set); +} + +void SCSICD_SetATN(bool set) +{ + SetkingATN(set); + //printf("Set ATN: %d\n", set); +} + +static void GenSubQFromSubPW(void) +{ + uint8 SubQBuf[0xC]; + + memset(SubQBuf, 0, 0xC); + + for(int i = 0; i < 96; i++) + SubQBuf[i >> 3] |= ((cd.SubPWBuf[i] & 0x40) >> 6) << (7 - (i & 7)); + + //printf("Real %d/ SubQ %d - ", read_sec, BCD_to_U8(SubQBuf[7]) * 75 * 60 + BCD_to_U8(SubQBuf[8]) * 75 + BCD_to_U8(SubQBuf[9]) - 150); + // Debug code, remove me. + //for(int i = 0; i < 0xC; i++) + // printf("%02x ", SubQBuf[i]); + //printf("\n"); + + if(!subq_check_checksum(SubQBuf)) + { + SCSIDBG("SubQ checksum error!"); + } + else + { + memcpy(cd.SubQBuf_Last, SubQBuf, 0xC); + + uint8 adr = SubQBuf[0] & 0xF; + + if(adr <= 0x3) + memcpy(cd.SubQBuf[adr], SubQBuf, 0xC); + + //if(adr == 0x02) + //for(int i = 0; i < 12; i++) + // printf("%02x\n", cd.SubQBuf[0x2][i]); + } +} + + +#define STATUS_GOOD 0 +#define STATUS_CHECK_CONDITION 1 +#define STATUS_CONDITION_MET 2 +#define STATUS_BUSY 4 +#define STATUS_INTERMEDIATE 8 + +#define SENSEKEY_NO_SENSE 0x0 +#define SENSEKEY_NOT_READY 0x2 +#define SENSEKEY_MEDIUM_ERROR 0x3 +#define SENSEKEY_HARDWARE_ERROR 0x4 +#define SENSEKEY_ILLEGAL_REQUEST 0x5 +#define SENSEKEY_UNIT_ATTENTION 0x6 +#define SENSEKEY_ABORTED_COMMAND 0xB + +#define ASC_MEDIUM_NOT_PRESENT 0x3A + + +// NEC sub-errors(ASC), no ASCQ. +#define NSE_NO_DISC 0x0B // Used with SENSEKEY_NOT_READY - This condition occurs when tray is closed with no disc present. +#define NSE_TRAY_OPEN 0x0D // Used with SENSEKEY_NOT_READY +#define NSE_SEEK_ERROR 0x15 +#define NSE_HEADER_READ_ERROR 0x16 // Used with SENSEKEY_MEDIUM_ERROR +#define NSE_NOT_AUDIO_TRACK 0x1C // Used with SENSEKEY_MEDIUM_ERROR +#define NSE_NOT_DATA_TRACK 0x1D // Used with SENSEKEY_MEDIUM_ERROR +#define NSE_INVALID_COMMAND 0x20 +#define NSE_INVALID_ADDRESS 0x21 +#define NSE_INVALID_PARAMETER 0x22 +#define NSE_END_OF_VOLUME 0x25 +#define NSE_INVALID_REQUEST_IN_CDB 0x27 +#define NSE_DISC_CHANGED 0x28 // Used with SENSEKEY_UNIT_ATTENTION +#define NSE_AUDIO_NOT_PLAYING 0x2C + +// ASC, ASCQ pair +#define AP_UNRECOVERED_READ_ERROR 0x11, 0x00 +#define AP_LEC_UNCORRECTABLE_ERROR 0x11, 0x05 +#define AP_CIRC_UNRECOVERED_ERROR 0x11, 0x06 + +#define AP_UNKNOWN_MEDIUM_FORMAT 0x30, 0x01 +#define AP_INCOMPAT_MEDIUM_FORMAT 0x30, 0x02 + +static void ChangePhase(const unsigned int new_phase) +{ + //printf("New phase: %d %lld\n", new_phase, monotonic_timestamp); + switch(new_phase) + { + case PHASE_BUS_FREE: + SetBSY(false); + SetMSG(false); + SetCD(false); + SetIO(false); + SetREQ(false); + + CDIRQCallback(0x8000 | SCSICD_IRQ_DATA_TRANSFER_DONE); + break; + + case PHASE_DATA_IN: // Us to them + SetBSY(true); + SetMSG(false); + SetCD(false); + SetIO(true); + //SetREQ(true); + SetREQ(false); + break; + + case PHASE_STATUS: // Us to them + SetBSY(true); + SetMSG(false); + SetCD(true); + SetIO(true); + SetREQ(true); + break; + + case PHASE_MESSAGE_IN: // Us to them + SetBSY(true); + SetMSG(true); + SetCD(true); + SetIO(true); + SetREQ(true); + break; + + + case PHASE_DATA_OUT: // Them to us + SetBSY(true); + SetMSG(false); + SetCD(false); + SetIO(false); + SetREQ(true); + break; + + case PHASE_COMMAND: // Them to us + SetBSY(true); + SetMSG(false); + SetCD(true); + SetIO(false); + SetREQ(true); + break; + + case PHASE_MESSAGE_OUT: // Them to us + SetBSY(true); + SetMSG(true); + SetCD(true); + SetIO(false); + SetREQ(true); + break; + } + CurrentPhase = new_phase; +} + +static void SendStatusAndMessage(uint8 status, uint8 message) +{ + // This should never ever happen, but that doesn't mean it won't. ;) + if(din->CanRead()) + { + printf("BUG: %d bytes still in SCSI CD FIFO\n", din->CanRead()); + din->Flush(); + } + + cd.message_pending = message; + + cd.status_sent = FALSE; + cd.message_sent = FALSE; + + if(WhichSystem == SCSICD_PCE) + { + if(status == STATUS_GOOD || status == STATUS_CONDITION_MET) + cd_bus.DB = 0x00; + else + cd_bus.DB = 0x01; + } + else + cd_bus.DB = status << 1; + + ChangePhase(PHASE_STATUS); +} + +static void DoSimpleDataIn(const uint8 *data_in, uint32 len) +{ + din->Write(data_in, len); + + cd.data_transfer_done = true; + + ChangePhase(PHASE_DATA_IN); +} + +void SCSICD_SetDisc(bool tray_open, CDIF *cdif, bool no_emu_side_effects) +{ + Cur_CDIF = cdif; + + // Closing the tray. + if(cd.TrayOpen && !tray_open) + { + cd.TrayOpen = false; + + if(cdif) + { + cdif->ReadTOC(&toc); + + if(!no_emu_side_effects) + { + memset(cd.SubQBuf, 0, sizeof(cd.SubQBuf)); + memset(cd.SubQBuf_Last, 0, sizeof(cd.SubQBuf_Last)); + cd.DiscChanged = true; + } + } + } + else if(!cd.TrayOpen && tray_open) // Opening the tray + { + cd.TrayOpen = true; + } +} + +static void CommandCCError(int key, int asc = 0, int ascq = 0) +{ + printf("CC Error: %02x %02x %02x\n", key, asc, ascq); + + cd.key_pending = key; + cd.asc_pending = asc; + cd.ascq_pending = ascq; + cd.fru_pending = 0x00; + + SendStatusAndMessage(STATUS_CHECK_CONDITION, 0x00); +} + +static bool ValidateRawDataSector(uint8 *data, const uint32 lba) +{ + if(!Cur_CDIF->ValidateRawSector(data)) + { + MDFN_DispMessage(_("Uncorrectable data at sector %d"), lba); + MDFN_PrintError(_("Uncorrectable data at sector %d"), lba); + + din->Flush(); + cd.data_transfer_done = false; + + CommandCCError(SENSEKEY_MEDIUM_ERROR, AP_LEC_UNCORRECTABLE_ERROR); + return(false); + } + + return(true); +} + +static void DoMODESELECT6(const uint8 *cdb) +{ + if(cdb[4]) + { + cd.data_out_pos = 0; + cd.data_out_size = cdb[4]; + //printf("Switch to DATA OUT phase, len: %d\n", cd.data_out_size); + + ChangePhase(PHASE_DATA_OUT); + } + else + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +/* + All Japan Female Pro Wrestle: + Datumama: 10, 00 00 00 00 00 00 00 00 00 0a + + Kokuu Hyouryuu Nirgends: + Datumama: 10, 00 00 00 00 00 00 00 00 00 0f + Datumama: 10, 00 00 00 00 00 00 00 00 00 0f + + Last Imperial Prince: + Datumama: 10, 00 00 00 00 00 00 00 00 00 0f + Datumama: 10, 00 00 00 00 00 00 00 00 00 0f + + Megami Paradise II: + Datumama: 10, 00 00 00 00 00 00 00 00 00 0a + + Miraculum: + Datumama: 7, 00 00 00 00 29 01 00 + Datumama: 10, 00 00 00 00 00 00 00 00 00 0f + Datumama: 7, 00 00 00 00 29 01 00 + Datumama: 10, 00 00 00 00 00 00 00 00 00 00 + Datumama: 7, 00 00 00 00 29 01 00 + + Pachio Kun FX: + Datumama: 10, 00 00 00 00 00 00 00 00 00 14 + + Return to Zork: + Datumama: 10, 00 00 00 00 00 00 00 00 00 00 + + Sotsugyou II: + Datumama: 10, 00 00 00 00 01 00 00 00 00 01 + + Tokimeki Card Paradise: + Datumama: 10, 00 00 00 00 00 00 00 00 00 14 + Datumama: 10, 00 00 00 00 00 00 00 00 00 07 + + Tonari no Princess Rolfee: + Datumama: 10, 00 00 00 00 00 00 00 00 00 00 + + Zoku Hakutoi Monogatari: + Datumama: 10, 00 00 00 00 00 00 00 00 00 14 +*/ + + // Page 151: MODE SENSE(6) + // PC = 0 current + // PC = 1 Changeable + // PC = 2 Default + // PC = 3 Saved + // Page 183: Mode parameter header. + // Page 363: CD-ROM density codes. + // Page 364: CD-ROM mode page codes. + // Page 469: ASC and ASCQ table + + +struct ModePageParam +{ + const uint8 default_value; + const uint8 alterable_mask; // Alterable mask reported when PC == 1 + const uint8 real_mask; // Real alterable mask. +}; + +struct ModePage +{ + const uint8 code; + const uint8 param_length; + const ModePageParam params[64]; // 64 should be more than enough + uint8 current_value[64]; +}; + +/* + Mode pages present: + 0x00: + 0x0E: + 0x28: + 0x29: + 0x2A: + 0x2B: + 0x3F(Yes, not really a mode page but a fetch method) +*/ +static const int NumModePages = 5; +static ModePage ModePages[] = +{ + // Unknown + { 0x28, + 0x04, + { + { 0x00, 0x00, 0xFF }, + { 0x00, 0x00, 0xFF }, + { 0x00, 0x00, 0xFF }, + { 0x00, 0x00, 0xFF }, + } + }, + + // Unknown + { 0x29, + 0x01, + { + { 0x00, 0x00, 0xFF }, + } + }, + + // Unknown + { 0x2a, + 0x02, + { + { 0x00, 0x00, 0xFF }, + { 0x11, 0x00, 0xFF }, + } + }, + + // CD-DA playback speed modifier + { 0x2B, + 0x01, + { + { 0x00, 0x00, 0xFF }, + } + }, + + // 0x0E goes last, for correct order of return data when page code == 0x3F + // Real mask values are probably not right; some functionality not emulated yet. + // CD-ROM audio control parameters + { 0x0E, + 0x0E, + { + { 0x04, 0x04, 0x04 }, // Immed + { 0x00, 0x00, 0x00 }, // Reserved + { 0x00, 0x00, 0x00 }, // Reserved + { 0x00, 0x01, 0x01 }, // Reserved? + { 0x00, 0x00, 0x00 }, // MSB of LBA per second. + { 0x00, 0x00, 0x00 }, // LSB of LBA per second. + { 0x01, 0x01, 0x03 }, // Outport port 0 channel selection. + { 0xFF, 0x00, 0x00 }, // Outport port 0 volume. + { 0x02, 0x02, 0x03 }, // Outport port 1 channel selection. + { 0xFF, 0x00, 0x00 }, // Outport port 1 volume. + { 0x00, 0x00, 0x00 }, // Outport port 2 channel selection. + { 0x00, 0x00, 0x00 }, // Outport port 2 volume. + { 0x00, 0x00, 0x00 }, // Outport port 3 channel selection. + { 0x00, 0x00, 0x00 }, // Outport port 3 volume. + } + }, +}; + +static void UpdateMPCache(uint8 code) +{ + for(int pi = 0; pi < NumModePages; pi++) + { + const ModePage *mp = &ModePages[pi]; + //const ModePageParam *params = &ModePages[pi].params[0]; + + if(mp->code != code) + continue; + + switch(mp->code) + { + case 0x0E: + { + const uint8 *pd = &mp->current_value[0]; + + for(int i = 0; i < 2; i++) + cdda.OutPortChSelect[i] = pd[6 + i * 2]; + FixOPV(); + } + break; + + case 0x28: + break; + + case 0x29: + break; + + case 0x2A: + break; + + case 0x2B: + { + int8 speed = mp->current_value[0]; + double rate = 44100 + (double)44100 * speed / 100; + //printf("Speed: %d %f\n", speed, rate); + cdda.CDDADivAcc = (int32)((int64)System_Clock * 65536 / rate); + } + break; + } + + break; + } +} + +static void InitModePages(void) +{ + for(int pi = 0; pi < NumModePages; pi++) + { + ModePage *mp = &ModePages[pi]; + const ModePageParam *params = &ModePages[pi].params[0]; + + for(int parami = 0; parami < mp->param_length; parami++) + mp->current_value[parami] = params[parami].default_value; + + UpdateMPCache(mp->code); + } +} + +static void FinishMODESELECT6(const uint8 *data, const uint32 data_len) +{ + uint8 mode_data_length, medium_type, device_specific, block_descriptor_length; + uint32 offset = 0; + + printf("Mode Select (6) Data: 0x%08x, ", data_len); + for(unsigned int i = 0; i < cd.data_out_size; i++) + printf("0x%02x ", cd.data_out[i]); + printf("\n"); + + if(data_len < 4) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + mode_data_length = data[offset++]; + medium_type = data[offset++]; + device_specific = data[offset++]; + block_descriptor_length = data[offset++]; + + if(block_descriptor_length & 0x7) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if((offset + block_descriptor_length) > data_len) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + // TODO: block descriptors. + offset += block_descriptor_length; + + // Now handle mode pages + while(offset < data_len) + { + const uint8 code = data[offset++]; + uint8 param_len = 0; + bool page_found = false; + + if(code == 0x00) + { + if((offset + 0x5) > data_len) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + UpdateMPCache(0x00); + + offset += 0x5; + continue; + } + + if(offset >= data_len) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + param_len = data[offset++]; + + for(int pi = 0; pi < NumModePages; pi++) + { + ModePage *mp = &ModePages[pi]; + + if(code == mp->code) + { + page_found = true; + + if(param_len != mp->param_length) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if((param_len + offset) > data_len) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + for(int parami = 0; parami < mp->param_length; parami++) + { + mp->current_value[parami] &= ~mp->params[parami].real_mask; + mp->current_value[parami] |= (data[offset++]) & mp->params[parami].real_mask; + } + + UpdateMPCache(mp->code); + break; + } + } + + if(!page_found) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + } + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +static void DoMODESENSE6(const uint8 *cdb) +{ + unsigned int PC = (cdb[2] >> 6) & 0x3; + unsigned int PageCode = cdb[2] & 0x3F; + bool DBD = cdb[1] & 0x08; + int AllocSize = cdb[4]; + int index = 0; + uint8 data_in[8192]; + uint8 PageMatchOR = 0x00; + bool AnyPageMatch = false; + + SCSIDBG("Mode sense 6: %02x %d %d %d\n", PageCode, PC, DBD, AllocSize); + + if(!AllocSize) + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + + if(PC == 3) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(PageCode == 0x00) // Special weird case. + { + if(DBD || PC) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + memset(data_in, 0, 0xA); + data_in[0] = 0x09; + data_in[2] = 0x80; + data_in[9] = 0x0F; + + if(AllocSize > 0xA) + AllocSize = 0xA; + + DoSimpleDataIn(data_in, AllocSize); + return; + } + + data_in[0] = 0x00; // Fill this in later. + data_in[1] = 0x00; // Medium type + data_in[2] = 0x00; // Device-specific parameter. + data_in[3] = DBD ? 0x00 : 0x08; // Block descriptor length. + index += 4; + + if(!DBD) + { + data_in[index++] = 0x00; // Density code. + MDFN_en24msb(&data_in[index], 0x6E); // Number of blocks? + index += 3; + + data_in[index++] = 0x00; // Reserved + MDFN_en24msb(&data_in[index], 0x800); // Block length; + index += 3; + } + + PageMatchOR = 0x00; + if(PageCode == 0x3F) + PageMatchOR = 0x3F; + + for(int pi = 0; pi < NumModePages; pi++) + { + const ModePage *mp = &ModePages[pi]; + const ModePageParam *params = &ModePages[pi].params[0]; + + if((mp->code | PageMatchOR) != PageCode) + continue; + + AnyPageMatch = true; + + data_in[index++] = mp->code; + data_in[index++] = mp->param_length; + + for(int parami = 0; parami < mp->param_length; parami++) + { + uint8 data; + + if(PC == 0x02) + data = params[parami].default_value; + else if(PC == 0x01) + data = params[parami].alterable_mask; + else + data = mp->current_value[parami]; + + data_in[index++] = data; + } + } + + if(!AnyPageMatch) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(AllocSize > index) + AllocSize = index; + + data_in[0] = AllocSize - 1; + + DoSimpleDataIn(data_in, AllocSize); +} + +static void DoSTARTSTOPUNIT6(const uint8 *cdb) +{ + bool Immed = cdb[1] & 0x01; + bool LoEj = cdb[4] & 0x02; + bool Start = cdb[4] & 0x01; + + SCSIDBG("Do start stop unit 6: %d %d %d\n", Immed, LoEj, Start); + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +static void DoREZEROUNIT(const uint8 *cdb) +{ + SCSIDBG("Rezero Unit: %02x\n", cdb[5]); + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +// This data was originally taken from a PC-FXGA software loader, but +// while it was mostly correct(maybe it is correct for the FXGA, but not for the PC-FX?), +// it was 3 bytes too long, and the last real byte was 0x45 instead of 0x20. +// TODO: Investigate this discrepancy by testing an FXGA with the official loader software. +#if 0 +static const uint8 InqData[0x24] = +{ + // Standard + 0x05, 0x80, 0x02, 0x00, + + // Additional Length + 0x1F, + + // Vendor Specific + 0x00, 0x00, 0x00, 0x4E, 0x45, 0x43, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0x44, 0x2D, 0x52, 0x4F, + 0x4D, 0x20, 0x44, 0x52, 0x49, 0x56, 0x45, 0x3A, + 0x46, 0x58, 0x20, 0x31, 0x2E, 0x30, 0x20 +}; +#endif + +// Miraculum behaves differently if the last byte(offset 0x23) of the inquiry data is 0x45(ASCII character 'E'). Relavent code is at PC=0x3E382 +// If it's = 0x45, it will run MODE SELECT, and transfer this data to the CD unit: 00 00 00 00 29 01 00 +static const uint8 InqData[0x24] = +{ + // Peripheral device-type: CD-ROM/read-only direct access device + 0x05, + + // Removable media: yes + // Device-type qualifier: 0 + 0x80, + + // ISO version: 0 + // ECMA version: 0 + // ANSI version: 2 (SCSI-2? ORLY?) + 0x02, + + // Supports asynchronous event notification: no + // Supports the terminate I/O process message: no + // Response data format: 0 (not exactly correct, not exactly incorrect, meh. :b) + 0x00, + + // Additional Length + 0x1F, + + // Reserved + 0x00, 0x00, + + // Yay, no special funky features. + 0x00, + + // 8-15, vendor ID + // NEC + 0x4E, 0x45, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, + + // 16-31, product ID + // CD-ROM DRIVE:FX + 0x43, 0x44, 0x2D, 0x52, 0x4F, 0x4D, 0x20, 0x44, 0x52, 0x49, 0x56, 0x45, 0x3A, 0x46, 0x58, 0x20, + + // 32-35, product revision level + // 1.0 + 0x31, 0x2E, 0x30, 0x20 +}; + +static void DoINQUIRY(const uint8 *cdb) +{ + unsigned int AllocSize = (cdb[4] < sizeof(InqData)) ? cdb[4] : sizeof(InqData); + + if(AllocSize) + DoSimpleDataIn(InqData, AllocSize); + else + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +static void DoNEC_NOP(const uint8 *cdb) +{ + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +/******************************************************** +* * +* PC-FX CD Command 0xDC - EJECT * +* * +********************************************************/ +static void DoNEC_EJECT(const uint8 *cdb) +{ + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_REQUEST_IN_CDB); +} + +static void DoREQUESTSENSE(const uint8 *cdb) +{ + uint8 data_in[8192]; + + MakeSense(data_in, cd.key_pending, cd.asc_pending, cd.ascq_pending, cd.fru_pending); + + DoSimpleDataIn(data_in, 18); + + cd.key_pending = 0; + cd.asc_pending = 0; + cd.ascq_pending = 0; + cd.fru_pending = 0; +} + +static void EncodeM3TOC(uint8 *buf, uint8 POINTER_RAW, int32 LBA, uint32 PLBA, uint8 control) +{ + uint8 MIN, SEC, FRAC; + uint8 PMIN, PSEC, PFRAC; + + LBA_to_AMSF(LBA, &MIN, &SEC, &FRAC); + LBA_to_AMSF(PLBA, &PMIN, &PSEC, &PFRAC); + + buf[0x0] = control << 4; + buf[0x1] = 0x00; // TNO + buf[0x2] = POINTER_RAW; + buf[0x3] = U8_to_BCD(MIN); + buf[0x4] = U8_to_BCD(SEC); + buf[0x5] = U8_to_BCD(FRAC); + buf[0x6] = 0x00; // Zero + buf[0x7] = U8_to_BCD(PMIN); + buf[0x8] = U8_to_BCD(PSEC); + buf[0x9] = U8_to_BCD(PFRAC); +} + +/******************************************************** +* * +* PC-FX CD Command 0xDE - Get Directory Info * +* * +********************************************************/ +static void DoNEC_GETDIRINFO(const uint8 *cdb) +{ + // Problems: + // Mode 0x03 has a few semi-indeterminate(but within a range, and they only change when the disc is reloaded) fields on a real PC-FX, that correspond to where in the lead-in area the data + // was read, that we don't bother to handle here. + // Mode 0x03 returns weird/wrong control field data for the "last track" and "leadout" entries in the "Blue Breaker" TOC. + // A bug in the PC-FX CD firmware, or an oddity of the disc(maybe other PC-FX discs are similar)? Or maybe it's an undefined field in that context? + // "Match" value of 0xB0 is probably not handled properly. Is it to return the catalog number, or something else? + + uint8 data_in[2048]; + uint32 data_in_size = 0; + + memset(data_in, 0, sizeof(data_in)); + + switch(cdb[1] & 0x03) + { + // This commands returns relevant raw TOC data as encoded in the Q subchannel(sans the CRC bytes). + case 0x3: + { + int offset = 0; + int32 lilba = -150; + uint8 match = cdb[2]; + + if(match != 0x00 && match != 0xA0 && match != 0xA1 && match != 0xA2 && match != 0xB0) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_ADDRESS); + return; + } + memset(data_in, 0, sizeof(data_in)); + + data_in[0] = 0x00; // Size MSB??? + data_in[1] = 0x00; // Total Size - 2(we'll fill it in later). + offset = 2; + + if(!match || match == 0xA0) + { + EncodeM3TOC(&data_in[offset], 0xA0, lilba, toc.first_track * 75 * 60 - 150, toc.tracks[toc.first_track].control); + lilba++; + offset += 0xA; + } + + if(!match || match == 0xA1) + { + EncodeM3TOC(&data_in[offset], 0xA1, lilba, toc.last_track * 75 * 60 - 150, toc.tracks[toc.last_track].control); + lilba++; + offset += 0xA; + } + + if(!match || match == 0xA2) + { + EncodeM3TOC(&data_in[offset], 0xA2, lilba, toc.tracks[100].lba, toc.tracks[100].control); + lilba++; + offset += 0xA; + } + + if(!match) + for(int track = toc.first_track; track <= toc.last_track; track++) + { + EncodeM3TOC(&data_in[offset], U8_to_BCD(track), lilba, toc.tracks[track].lba, toc.tracks[track].control); + lilba++; + offset += 0xA; + } + + if(match == 0xB0) + { + memset(&data_in[offset], 0, 0x14); + offset += 0x14; + } + + assert((unsigned int)offset <= sizeof(data_in)); + data_in_size = offset; + MDFN_en16msb(&data_in[0], offset - 2); + } + break; + + case 0x0: + data_in[0] = U8_to_BCD(toc.first_track); + data_in[1] = U8_to_BCD(toc.last_track); + + data_in_size = 4; + break; + + case 0x1: + { + uint8 m, s, f; + + LBA_to_AMSF(toc.tracks[100].lba, &m, &s, &f); + + data_in[0] = U8_to_BCD(m); + data_in[1] = U8_to_BCD(s); + data_in[2] = U8_to_BCD(f); + + data_in_size = 4; + } + break; + + case 0x2: + { + uint8 m, s, f; + int track = BCD_to_U8(cdb[2]); + + if(track < toc.first_track || track > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_ADDRESS); + return; + } + + LBA_to_AMSF(toc.tracks[track].lba, &m, &s, &f); + + data_in[0] = U8_to_BCD(m); + data_in[1] = U8_to_BCD(s); + data_in[2] = U8_to_BCD(f); + data_in[3] = toc.tracks[track].control; + data_in_size = 4; + } + break; + } + + DoSimpleDataIn(data_in, data_in_size); +} + +static void DoREADTOC(const uint8 *cdb) +{ + uint8 data_in[8192]; + int FirstTrack = toc.first_track; + int LastTrack = toc.last_track; + int StartingTrack = cdb[6]; + unsigned int AllocSize = (cdb[7] << 8) | cdb[8]; + unsigned int RealSize = 0; + const bool WantInMSF = cdb[1] & 0x2; + + if(!AllocSize) + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + + if((cdb[1] & ~0x2) || cdb[2] || cdb[3] || cdb[4] || cdb[5] || cdb[9]) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(!StartingTrack) + StartingTrack = 1; + else if(StartingTrack == 0xAA) + { + StartingTrack = LastTrack + 1; + } + else if(StartingTrack > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + data_in[2] = FirstTrack; + data_in[3] = LastTrack; + + RealSize += 4; + + // Read leadout track too LastTrack + 1 ??? + for(int track = StartingTrack; track <= (LastTrack + 1); track++) + { + uint8 *subptr = &data_in[RealSize]; + uint32 lba; + uint8 m, s, f; + uint32 eff_track; + + if(track == (LastTrack + 1)) + eff_track = 100; + else + eff_track = track; + + lba = toc.tracks[eff_track].lba; + LBA_to_AMSF(lba, &m, &s, &f); + + subptr[0] = 0; + subptr[1] = toc.tracks[eff_track].control | (toc.tracks[eff_track].adr << 4); + + if(eff_track == 100) + subptr[2] = 0xAA; + else + subptr[2] = track; + + subptr[3] = 0; + + if(WantInMSF) + { + subptr[4] = 0; + subptr[5] = m; // Min + subptr[6] = s; // Sec + subptr[7] = f; // Frames + } + else + { + subptr[4] = lba >> 24; + subptr[5] = lba >> 16; + subptr[6] = lba >> 8; + subptr[7] = lba >> 0; + } + RealSize += 8; + } + + // PC-FX: AllocSize too small doesn't reflect in this. + data_in[0] = (RealSize - 2) >> 8; + data_in[1] = (RealSize - 2) >> 0; + + DoSimpleDataIn(data_in, (AllocSize < RealSize) ? AllocSize : RealSize); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x25 - READ CD-ROM CAPACITY * +* * +********************************************************/ +static void DoREADCDCAP10(const uint8 *cdb) +{ + bool pmi = cdb[8] & 0x1; + uint32 lba = MDFN_de32msb(cdb + 0x2); + uint32 ret_lba; + uint32 ret_bl; + uint8 data_in[8]; + + memset(data_in, 0, sizeof(data_in)); + + if(lba > 0x05FF69) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + + ret_lba = toc.tracks[100].lba - 1; + + if(pmi) + { + // Look for the track containing the LBA specified, then search for the first track afterwards that has a different track type(audio, data), + // and set the returned LBA to the sector preceding that track. + // + // If the specified LBA is >= leadout track, return the LBA of the sector immediately before the leadout track. + // + // If the specified LBA is < than the LBA of the first track, then return the LBA of sector preceding the first track. (I don't know if PC-FX can even handle discs like this, though) + if(lba >= toc.tracks[100].lba) + ret_lba = toc.tracks[100].lba - 1; + else if(lba < toc.tracks[toc.first_track].lba) + ret_lba = toc.tracks[toc.first_track].lba - 1; + else + { + const int track = toc.FindTrackByLBA(lba); + + for(int st = track + 1; st <= toc.last_track; st++) + { + if((toc.tracks[st].control ^ toc.tracks[track].control) & 0x4) + { + ret_lba = toc.tracks[st].lba - 1; + break; + } + } + } + } + + ret_bl = 2048; + + MDFN_en32msb(&data_in[0], ret_lba); + MDFN_en32msb(&data_in[4], ret_bl); + + cdda.CDDAStatus = CDDASTATUS_STOPPED; + + DoSimpleDataIn(data_in, 8); +} + +static void DoREADHEADER10(const uint8 *cdb) +{ + uint8 data_in[8192]; + bool WantInMSF = cdb[1] & 0x2; + uint32 HeaderLBA = MDFN_de32msb(cdb + 0x2); + int AllocSize = MDFN_de16msb(cdb + 0x7); + uint8 raw_buf[2352 + 96]; + uint8 mode; + int m, s, f; + uint32 lba; + + // Don't run command at all if AllocSize == 0(FIXME: On a real PC-FX, this command will return success + // if there's no CD when AllocSize == 0, implement this here, might require refactoring). + if(!AllocSize) + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + + if(HeaderLBA >= toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(HeaderLBA < toc.tracks[toc.first_track].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + Cur_CDIF->ReadRawSector(raw_buf, HeaderLBA); //, HeaderLBA + 1); + if(!ValidateRawDataSector(raw_buf, HeaderLBA)) + return; + + m = BCD_to_U8(raw_buf[12 + 0]); + s = BCD_to_U8(raw_buf[12 + 1]); + f = BCD_to_U8(raw_buf[12 + 2]); + mode = raw_buf[12 + 3]; + lba = AMSF_to_LBA(m, s, f); + + //printf("%d:%d:%d(LBA=%08x) %02x\n", m, s, f, lba, mode); + + data_in[0] = mode; + data_in[1] = 0; + data_in[2] = 0; + data_in[3] = 0; + + if(WantInMSF) + { + data_in[4] = 0; + data_in[5] = m; // Min + data_in[6] = s; // Sec + data_in[7] = f; // Frames + } + else + { + data_in[4] = lba >> 24; + data_in[5] = lba >> 16; + data_in[6] = lba >> 8; + data_in[7] = lba >> 0; + } + + cdda.CDDAStatus = CDDASTATUS_STOPPED; + + DoSimpleDataIn(data_in, 8); +} + +static void DoNEC_SST(const uint8 *cdb) // Command 0xDB, Set Stop Time +{ + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +static void DoPABase(const uint32 lba, const uint32 length, unsigned int status = CDDASTATUS_PLAYING, unsigned int mode = PLAYMODE_NORMAL) +{ + if(lba > toc.tracks[100].lba) // > is not a typo, it's a PC-FX bug apparently. + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(lba < toc.tracks[toc.first_track].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(!length) // FIXME to return good status in this case even if no CD is present + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + else + { + if(toc.tracks[toc.FindTrackByLBA(lba)].control & 0x04) + { + CommandCCError(SENSEKEY_MEDIUM_ERROR, NSE_NOT_AUDIO_TRACK); + return; + } + + cdda.CDDAReadPos = 588; + read_sec = read_sec_start = lba; + read_sec_end = read_sec_start + length; + + cdda.CDDAStatus = status; + cdda.PlayMode = mode; + + if(read_sec < toc.tracks[100].lba) + { + Cur_CDIF->HintReadSector(read_sec); //, read_sec_end, read_sec_start); + } + } + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +/******************************************************** +* * +* PC-FX CD Command 0xD8 - SAPSP * +* * +********************************************************/ +static void DoNEC_SAPSP(const uint8 *cdb) +{ + uint32 lba; + + switch (cdb[9] & 0xc0) + { + default: + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + break; + + case 0x00: + lba = MDFN_de24msb(&cdb[3]); + break; + + case 0x40: + { + uint8 m, s, f; + + if(!BCD_to_U8_check(cdb[2], &m) || !BCD_to_U8_check(cdb[3], &s) || !BCD_to_U8_check(cdb[4], &f)) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + lba = AMSF_to_LBA(m, s, f); + } + break; + + case 0x80: + { + uint8 track; + + if(!cdb[2] || !BCD_to_U8_check(cdb[2], &track)) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(track == toc.last_track + 1) + track = 100; + else if(track > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + lba = toc.tracks[track].lba; + } + break; + } + + if(cdb[1] & 0x01) + DoPABase(lba, toc.tracks[100].lba - lba, CDDASTATUS_PLAYING, PLAYMODE_NORMAL); + else + DoPABase(lba, toc.tracks[100].lba - lba, CDDASTATUS_PAUSED, PLAYMODE_SILENT); +} + + + +/******************************************************** +* * +* PC-FX CD Command 0xD9 - SAPEP * +* * +********************************************************/ +static void DoNEC_SAPEP(const uint8 *cdb) +{ + uint32 lba; + + if(cdda.CDDAStatus == CDDASTATUS_STOPPED) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_AUDIO_NOT_PLAYING); + return; + } + + switch (cdb[9] & 0xc0) + { + default: + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + break; + + case 0x00: + lba = MDFN_de24msb(&cdb[3]); + break; + + case 0x40: + { + uint8 m, s, f; + + if(!BCD_to_U8_check(cdb[2], &m) || !BCD_to_U8_check(cdb[3], &s) || !BCD_to_U8_check(cdb[4], &f)) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + lba = AMSF_to_LBA(m, s, f); + } + break; + + case 0x80: + { + uint8 track; + + if(!cdb[2] || !BCD_to_U8_check(cdb[2], &track)) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(track == toc.last_track + 1) + track = 100; + else if(track > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + lba = toc.tracks[track].lba; + } + break; + } + + switch(cdb[1] & 0x7) + { + case 0x00: cdda.PlayMode = PLAYMODE_SILENT; + break; + + case 0x04: cdda.PlayMode = PLAYMODE_LOOP; + break; + + default: cdda.PlayMode = PLAYMODE_NORMAL; + break; + } + cdda.CDDAStatus = CDDASTATUS_PLAYING; + + read_sec_end = lba; + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x45 - PLAY AUDIO(10) * +* * +********************************************************/ +static void DoPA10(const uint8 *cdb) +{ + // Real PC-FX Bug: Error out on LBA >(not >=) leadout sector number + const uint32 lba = MDFN_de32msb(cdb + 0x2); + const uint16 length = MDFN_de16msb(cdb + 0x7); + + DoPABase(lba, length); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0xA5 - PLAY AUDIO(12) * +* * +********************************************************/ +static void DoPA12(const uint8 *cdb) +{ + // Real PC-FX Bug: Error out on LBA >(not >=) leadout sector number + const uint32 lba = MDFN_de32msb(cdb + 0x2); + const uint32 length = MDFN_de32msb(cdb + 0x6); + + DoPABase(lba, length); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x47 - PLAY AUDIO MSF * +* * +********************************************************/ +static void DoPAMSF(const uint8 *cdb) +{ + int32 lba_start, lba_end; + + lba_start = AMSF_to_LBA(cdb[3], cdb[4], cdb[5]); + lba_end = AMSF_to_LBA(cdb[6], cdb[7], cdb[8]); + + if(lba_start < 0 || lba_end < 0 || lba_start >= (int32)toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + + if(lba_start == lba_end) + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + else if(lba_start > lba_end) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_ADDRESS); + return; + } + + cdda.CDDAReadPos = 588; + read_sec = read_sec_start = lba_start; + read_sec_end = lba_end; + + cdda.CDDAStatus = CDDASTATUS_PLAYING; + cdda.PlayMode = PLAYMODE_NORMAL; + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +static void DoPATI(const uint8 *cdb) +{ + // "Boundary Gate" uses this command. + // Problems: + // The index fields aren't handled. The ending index wouldn't be too bad, but the starting index would require a bit of work and code uglyfying(to scan for the index), and may be highly + // problematic when Mednafen is used with a physical CD. + int StartTrack = cdb[4]; + int EndTrack = cdb[7]; + int StartIndex = cdb[5]; + int EndIndex = cdb[8]; + + if(!StartTrack || StartTrack < toc.first_track || StartTrack > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + //printf("PATI: %d %d %d SI: %d, EI: %d\n", StartTrack, EndTrack, Cur_CDIF->GetTrackStartPositionLBA(StartTrack), StartIndex, EndIndex); + + DoPABase(toc.tracks[StartTrack].lba, toc.tracks[EndTrack].lba - toc.tracks[StartTrack].lba); +} + + +static void DoPATRBase(const uint32 lba, const uint32 length) +{ + if(lba >= toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(lba < toc.tracks[toc.first_track].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(!length) // FIXME to return good status in this case even if no CD is present + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + else + { + if(toc.tracks[toc.FindTrackByLBA(lba)].control & 0x04) + { + CommandCCError(SENSEKEY_MEDIUM_ERROR, NSE_NOT_AUDIO_TRACK); + return; + } + + cdda.CDDAReadPos = 588; + read_sec = read_sec_start = lba; + read_sec_end = read_sec_start + length; + + cdda.CDDAStatus = CDDASTATUS_PLAYING; + cdda.PlayMode = PLAYMODE_NORMAL; + } + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + +/******************************************************** +* * +* SCSI-2 CD Command 0x49 - PLAY AUDIO TRACK * +* RELATIVE(10) * +********************************************************/ +static void DoPATR10(const uint8 *cdb) +{ + const int32 rel_lba = MDFN_de32msb(cdb + 0x2); + const int StartTrack = cdb[6]; + const uint16 length = MDFN_de16msb(cdb + 0x7); + + if(!StartTrack || StartTrack < toc.first_track || StartTrack > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + DoPATRBase(toc.tracks[StartTrack].lba + rel_lba, length); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0xA9 - PLAY AUDIO TRACK * +* RELATIVE(12) * +********************************************************/ +static void DoPATR12(const uint8 *cdb) +{ + const int32 rel_lba = MDFN_de32msb(cdb + 0x2); + const int StartTrack = cdb[10]; + const uint32 length = MDFN_de32msb(cdb + 0x6); + + if(!StartTrack || StartTrack < toc.first_track || StartTrack > toc.last_track) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + DoPATRBase(toc.tracks[StartTrack].lba + rel_lba, length); +} + +static void DoPAUSERESUME(const uint8 *cdb) +{ + // Pause/resume + // "It shall not be considered an error to request a pause when a pause is already in effect, + // or to request a resume when a play operation is in progress." + + if(cdda.CDDAStatus == CDDASTATUS_STOPPED) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_AUDIO_NOT_PLAYING); + return; + } + + if(cdb[8] & 1) // Resume + cdda.CDDAStatus = CDDASTATUS_PLAYING; + else + cdda.CDDAStatus = CDDASTATUS_PAUSED; + + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + + + +static void DoREADBase(uint32 sa, uint32 sc) +{ + int track; + + if(sa > toc.tracks[100].lba) // Another one of those off-by-one PC-FX CD bugs. + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + + if((track = toc.FindTrackByLBA(sa)) == 0) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + + if(!(toc.tracks[track].control) & 0x4) + { + CommandCCError(SENSEKEY_MEDIUM_ERROR, NSE_NOT_DATA_TRACK); + return; + } + + // Case for READ(10) and READ(12) where sc == 0, and sa == toc.tracks[100].lba + if(!sc && sa == toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_MEDIUM_ERROR, NSE_HEADER_READ_ERROR); + return; + } + + if(SCSILog) + { + int Track = toc.FindTrackByLBA(sa); + uint32 Offset = sa - toc.tracks[Track].lba; //Cur_CDIF->GetTrackStartPositionLBA(Track); + SCSILog("SCSI", "Read: start=0x%08x(track=%d, offs=0x%08x), cnt=0x%08x", sa, Track, Offset, sc); + } + + SectorAddr = sa; + SectorCount = sc; + if(SectorCount) + { + Cur_CDIF->HintReadSector(sa); //, sa + sc); + + CDReadTimer = (uint64)1 * 2048 * System_Clock / CD_DATA_TRANSFER_RATE; + } + else + { + CDReadTimer = 0; + SendStatusAndMessage(STATUS_GOOD, 0x00); + } + cdda.CDDAStatus = CDDASTATUS_STOPPED; +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x08 - READ(6) * +* * +********************************************************/ +static void DoREAD6(const uint8 *cdb) +{ + uint32 sa = ((cdb[1] & 0x1F) << 16) | (cdb[2] << 8) | (cdb[3] << 0); + uint32 sc = cdb[4]; + + // TODO: confirm real PCE does this(PC-FX does at least). + if(!sc) + { + SCSIDBG("READ(6) with count == 0.\n"); + sc = 256; + } + + DoREADBase(sa, sc); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x28 - READ(10) * +* * +********************************************************/ +static void DoREAD10(const uint8 *cdb) +{ + uint32 sa = MDFN_de32msb(cdb + 0x2); + uint32 sc = MDFN_de16msb(cdb + 0x7); + + DoREADBase(sa, sc); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0xA8 - READ(12) * +* * +********************************************************/ +static void DoREAD12(const uint8 *cdb) +{ + uint32 sa = MDFN_de32msb(cdb + 0x2); + uint32 sc = MDFN_de32msb(cdb + 0x6); + + DoREADBase(sa, sc); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x34 - PREFETCH(10) * +* * +********************************************************/ +static void DoPREFETCH(const uint8 *cdb) +{ + uint32 lba = MDFN_de32msb(cdb + 0x2); + //uint32 len = MDFN_de16msb(cdb + 0x7); + //bool reladdr = cdb[1] & 0x1; + //bool immed = cdb[1] & 0x2; + + // Note: This command appears to lock up the CD unit to some degree on a real PC-FX if the (lba + len) >= leadout_track_lba, + // more testing is needed if we ever try to fully emulate this command. + if(lba >= (int32)toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + + //printf("Prefetch: %08x %08x %d %d %d %d\n", lba, len, link, flag, reladdr, immed); + //SendStatusAndMessage(STATUS_GOOD, 0x00); + SendStatusAndMessage(STATUS_CONDITION_MET, 0x00); +} + + + + +// SEEK functions are mostly just stubs for now, until(if) we emulate seek delays. +static void DoSEEKBase(uint32 lba) +{ + if(lba >= toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + return; + } + + cdda.CDDAStatus = CDDASTATUS_STOPPED; + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x0B - SEEK(6) * +* * +********************************************************/ +static void DoSEEK6(const uint8 *cdb) +{ + uint32 lba = ((cdb[1] & 0x1F) << 16) | (cdb[2] << 8) | cdb[3]; + + DoSEEKBase(lba); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x2B - SEEK(10) * +* * +********************************************************/ +static void DoSEEK10(const uint8 *cdb) +{ + uint32 lba = MDFN_de32msb(cdb + 0x2); + + DoSEEKBase(lba); +} + +// 353 +/******************************************************** +* * +* SCSI-2 CD Command 0x42 - READ SUB-CHANNEL(10) * +* * +********************************************************/ +static void DoREADSUBCHANNEL(const uint8 *cdb) +{ + uint8 data_in[8192]; + int DataFormat = cdb[3]; + int TrackNum = cdb[6]; + int AllocSize = (cdb[7] << 8) | cdb[8]; + bool WantQ = cdb[2] & 0x40; + bool WantMSF = cdb[1] & 0x02; + uint32 offset = 0; + + if(!AllocSize) + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + return; + } + + if(DataFormat > 0x3) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + if(DataFormat == 0x3 && (TrackNum < toc.first_track || TrackNum > toc.last_track)) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_PARAMETER); + return; + } + + data_in[offset++] = 0; + + // FIXME: Is this audio status code correct for scanning playback?? + if(cdda.CDDAStatus == CDDASTATUS_PLAYING || cdda.CDDAStatus == CDDASTATUS_SCANNING) + data_in[offset++] = 0x11; // Audio play operation in progress + else if(cdda.CDDAStatus == CDDASTATUS_PAUSED) + data_in[offset++] = 0x12; // Audio play operation paused + else + data_in[offset++] = 0x13; // 0x13(audio play operation completed successfully) or 0x15(no current audio status to return)? :( + + + // Subchannel data length(at data_in[0x2], filled out at the end of the function) + data_in[offset++] = 0x00; + data_in[offset++] = 0x00; + + //printf("42Read SubChannel: %02x %02x %d %d %d\n", DataFormat, TrackNum, AllocSize, WantQ, WantMSF); + if(WantQ) + { + // Sub-channel format code + data_in[offset++] = DataFormat; + if(!DataFormat || DataFormat == 0x01) + { + uint8 *SubQBuf = cd.SubQBuf[QMode_Time]; + + data_in[offset++] = ((SubQBuf[0] & 0x0F) << 4) | ((SubQBuf[0] & 0xF0) >> 4); // Control/adr + data_in[offset++] = SubQBuf[1]; // Track + data_in[offset++] = SubQBuf[2]; // Index + + // Absolute CD-ROM address + if(WantMSF) + { + data_in[offset++] = 0; + data_in[offset++] = BCD_to_U8(SubQBuf[7]); // M + data_in[offset++] = BCD_to_U8(SubQBuf[8]); // S + data_in[offset++] = BCD_to_U8(SubQBuf[9]); // F + } + else + { + uint32 tmp_lba = BCD_to_U8(SubQBuf[7]) * 60 * 75 + BCD_to_U8(SubQBuf[8]) * 75 + BCD_to_U8(SubQBuf[9]) - 150; + + data_in[offset++] = tmp_lba >> 24; + data_in[offset++] = tmp_lba >> 16; + data_in[offset++] = tmp_lba >> 8; + data_in[offset++] = tmp_lba >> 0; + } + + // Relative CD-ROM address + if(WantMSF) + { + data_in[offset++] = 0; + data_in[offset++] = BCD_to_U8(SubQBuf[3]); // M + data_in[offset++] = BCD_to_U8(SubQBuf[4]); // S + data_in[offset++] = BCD_to_U8(SubQBuf[5]); // F + } + else + { + uint32 tmp_lba = BCD_to_U8(SubQBuf[3]) * 60 * 75 + BCD_to_U8(SubQBuf[4]) * 75 + BCD_to_U8(SubQBuf[5]); // Don't subtract 150 in the conversion! + + data_in[offset++] = tmp_lba >> 24; + data_in[offset++] = tmp_lba >> 16; + data_in[offset++] = tmp_lba >> 8; + data_in[offset++] = tmp_lba >> 0; + } + } + + if(!DataFormat || DataFormat == 0x02) + { + if(DataFormat == 0x02) + { + data_in[offset++] = 0x00; + data_in[offset++] = 0x00; + data_in[offset++] = 0x00; + } + data_in[offset++] = 0x00; // MCVal and reserved. + for(int i = 0; i < 15; i++) + data_in[offset++] = 0x00; + } + + // Track ISRC + if(!DataFormat || DataFormat == 0x03) + { + if(DataFormat == 0x03) + { + uint8 *SubQBuf = cd.SubQBuf[QMode_Time]; // FIXME + data_in[offset++] = ((SubQBuf[0] & 0x0F) << 4) | ((SubQBuf[0] & 0xF0) >> 4); // Control/adr + data_in[offset++] = TrackNum; // From sub Q or from parameter? + data_in[offset++] = 0x00; // Reserved. + } + data_in[offset++] = 0x00; // TCVal and reserved + for(int i = 0; i < 15; i++) + data_in[offset++] = 0x00; + } + } + + MDFN_en16msb(&data_in[0x2], offset - 0x4); + + DoSimpleDataIn(data_in, (AllocSize > offset) ? offset : AllocSize); +} + + + +/******************************************************** +* * +* PC-FX CD Command 0xDD - READ SUB Q * +* * +********************************************************/ +static void DoNEC_READSUBQ(const uint8 *cdb) +{ + uint8 *SubQBuf = cd.SubQBuf[QMode_Time]; + uint8 data_in[10]; + const uint8 alloc_size = (cdb[1] < 10) ? cdb[1] : 10; + + memset(data_in, 0x00, 10); + + if(cdda.CDDAStatus == CDDASTATUS_PAUSED) + data_in[0] = 2; // Pause + else if(cdda.CDDAStatus == CDDASTATUS_PLAYING || cdda.CDDAStatus == CDDASTATUS_SCANNING) // FIXME: Is this the correct status code for scanning playback? + data_in[0] = 0; // Playing + else + data_in[0] = 3; // Stopped + + data_in[1] = SubQBuf[0]; // Control/adr + data_in[2] = SubQBuf[1]; // Track + data_in[3] = SubQBuf[2]; // Index + data_in[4] = SubQBuf[3]; // M(rel) + data_in[5] = SubQBuf[4]; // S(rel) + data_in[6] = SubQBuf[5]; // F(rel) + data_in[7] = SubQBuf[7]; // M(abs) + data_in[8] = SubQBuf[8]; // S(abs) + data_in[9] = SubQBuf[9]; // F(abs) + + DoSimpleDataIn(data_in, alloc_size); +} + +static void DoTESTUNITREADY(const uint8 *cdb) +{ + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + +static void DoNEC_PAUSE(const uint8 *cdb) +{ + if(cdda.CDDAStatus != CDDASTATUS_STOPPED) // Hmm, should we give an error if it tries to pause and it's already paused? + { + cdda.CDDAStatus = CDDASTATUS_PAUSED; + SendStatusAndMessage(STATUS_GOOD, 0x00); + } + else // Definitely give an error if it tries to pause when no track is playing! + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_AUDIO_NOT_PLAYING); + } +} + +static void DoNEC_SCAN(const uint8 *cdb) +{ + uint32 sector_tmp = 0; + + // 0: 0xD2 + // 1: 0x03 = reverse scan, 0x02 = forward scan + // 2: End M + // 3: End S + // 4: End F + + switch (cdb[9] & 0xc0) + { + default: + SCSIDBG("Unknown NECSCAN format"); + break; + + case 0x00: + sector_tmp = (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + break; + + case 0x40: + sector_tmp = AMSF_to_LBA(BCD_to_U8(cdb[2]), BCD_to_U8(cdb[3]), BCD_to_U8(cdb[4])); + break; + + case 0x80: // FIXME: error on invalid track number??? + sector_tmp = toc.tracks[BCD_to_U8(cdb[2])].lba; + break; + } + + cdda.ScanMode = cdb[1] & 0x3; + cdda.scan_sec_end = sector_tmp; + + if(cdda.CDDAStatus != CDDASTATUS_STOPPED) + { + if(cdda.ScanMode) + { + cdda.CDDAStatus = CDDASTATUS_SCANNING; + } + } + SendStatusAndMessage(STATUS_GOOD, 0x00); +} + + + +/******************************************************** +* * +* SCSI-2 CD Command 0x1E - PREVENT/ALLOW MEDIUM * +* REMOVAL * +********************************************************/ +static void DoPREVENTALLOWREMOVAL(const uint8 *cdb) +{ + //bool prevent = cdb[4] & 0x01; + //const int logical_unit = cdb[1] >> 5; + //SCSIDBG("PREVENT ALLOW MEDIUM REMOVAL: %d for %d\n", cdb[4] & 0x1, logical_unit); + //SendStatusAndMessage(STATUS_GOOD, 0x00); + + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_REQUEST_IN_CDB); +} + +// +// +// +#include "scsicd-pce-commands.inc" + + +#define SCF_REQUIRES_MEDIUM 0x0001 +#define SCF_INCOMPLETE 0x4000 +#define SCF_UNTESTED 0x8000 + +typedef struct +{ + uint8 cmd; + uint32 flags; + void (*func)(const uint8 *cdb); + const char *pretty_name; + const char *format_string; +} SCSICH; + +static const int32 RequiredCDBLen[16] = +{ + 6, // 0x0n + 6, // 0x1n + 10, // 0x2n + 10, // 0x3n + 10, // 0x4n + 10, // 0x5n + 10, // 0x6n + 10, // 0x7n + 10, // 0x8n + 10, // 0x9n + 12, // 0xAn + 12, // 0xBn + 10, // 0xCn + 10, // 0xDn + 10, // 0xEn + 10, // 0xFn +}; + +static SCSICH PCFXCommandDefs[] = +{ + { 0x00, SCF_REQUIRES_MEDIUM, DoTESTUNITREADY, "Test Unit Ready" }, + { 0x01, 0/* ? */, DoREZEROUNIT, "Rezero Unit" }, + { 0x03, 0, DoREQUESTSENSE, "Request Sense" }, + { 0x08, SCF_REQUIRES_MEDIUM, DoREAD6, "Read(6)" }, + { 0x0B, SCF_REQUIRES_MEDIUM, DoSEEK6, "Seek(6)" }, + { 0x0D, 0, DoNEC_NOP, "No Operation" }, + { 0x12, 0, DoINQUIRY, "Inquiry" }, + { 0x15, 0, DoMODESELECT6, "Mode Select(6)" }, + // TODO: { 0x16, 0 /* ? */, DoRESERVE, "Reserve" }, // 9.2.12 + // TODO: { 0x17, 0 /* ? */, DoRELEASE, "Release" }, // 9.2.11 + { 0x1A, 0, DoMODESENSE6, "Mode Sense(6)" }, + { 0x1B, SCF_REQUIRES_MEDIUM, DoSTARTSTOPUNIT6, "Start/Stop Unit" }, // 9.2.17 + // TODO: { 0x1D, , DoSENDDIAG, "Send Diagnostic" }, // 8.2.15 + { 0x1E, 0, DoPREVENTALLOWREMOVAL, "Prevent/Allow Media Removal" }, + + { 0x25, SCF_REQUIRES_MEDIUM, DoREADCDCAP10, "Read CD-ROM Capacity" }, // 14.2.8 + { 0x28, SCF_REQUIRES_MEDIUM, DoREAD10, "Read(10)" }, + { 0x2B, SCF_REQUIRES_MEDIUM, DoSEEK10, "Seek(10)" }, + + // TODO: { 0x2F, SCF_REQUIRES_MEDIUM, DoVERIFY10, "Verify(10)" }, // 16.2.11 + + { 0x34, SCF_REQUIRES_MEDIUM, DoPREFETCH, "Prefetch" }, + // TODO: { 0x3B, 0, 10, DoWRITEBUFFER, "Write Buffer" }, // 8.2.17 + // TODO: { 0x3C, 0, 10, DoREADBUFFER, "Read Buffer" }, // 8.2.12 + + { 0x42, SCF_REQUIRES_MEDIUM, DoREADSUBCHANNEL, "Read Subchannel" }, + { 0x43, SCF_REQUIRES_MEDIUM, DoREADTOC, "Read TOC" }, + { 0x44, SCF_REQUIRES_MEDIUM, DoREADHEADER10, "Read Header" }, + + { 0x45, SCF_REQUIRES_MEDIUM, DoPA10, "Play Audio(10)" }, + { 0x47, SCF_REQUIRES_MEDIUM, DoPAMSF, "Play Audio MSF" }, + { 0x48, SCF_REQUIRES_MEDIUM, DoPATI, "Play Audio Track Index" }, + { 0x49, SCF_REQUIRES_MEDIUM, DoPATR10, "Play Audio Track Relative(10)" }, + { 0x4B, SCF_REQUIRES_MEDIUM, DoPAUSERESUME, "Pause/Resume" }, + + { 0xA5, SCF_REQUIRES_MEDIUM, DoPA12, "Play Audio(12)" }, + { 0xA8, SCF_REQUIRES_MEDIUM, DoREAD12, "Read(12)" }, + { 0xA9, SCF_REQUIRES_MEDIUM, DoPATR12, "Play Audio Track Relative(12)" }, + + // TODO: { 0xAF, SCF_REQUIRES_MEDIUM, DoVERIFY12, "Verify(12)" }, // 16.2.12 + + { 0xD2, SCF_REQUIRES_MEDIUM, DoNEC_SCAN, "Scan" }, + { 0xD8, SCF_REQUIRES_MEDIUM, DoNEC_SAPSP, "Set Audio Playback Start Position" }, // "Audio track search" + { 0xD9, SCF_REQUIRES_MEDIUM, DoNEC_SAPEP, "Set Audio Playback End Position" }, // "Play" + { 0xDA, SCF_REQUIRES_MEDIUM, DoNEC_PAUSE, "Pause" }, // "Still" + { 0xDB, SCF_REQUIRES_MEDIUM | SCF_UNTESTED, DoNEC_SST, "Set Stop Time" }, + { 0xDC, SCF_REQUIRES_MEDIUM, DoNEC_EJECT, "Eject" }, + { 0xDD, SCF_REQUIRES_MEDIUM, DoNEC_READSUBQ, "Read Subchannel Q" }, + { 0xDE, SCF_REQUIRES_MEDIUM, DoNEC_GETDIRINFO, "Get Dir Info" }, + + { 0xFF, 0, 0, NULL, NULL }, +}; + +static SCSICH PCECommandDefs[] = +{ + { 0x00, SCF_REQUIRES_MEDIUM, DoTESTUNITREADY, "Test Unit Ready" }, + { 0x03, 0, DoREQUESTSENSE, "Request Sense" }, + { 0x08, SCF_REQUIRES_MEDIUM, DoREAD6, "Read(6)" }, + //{ 0x15, DoMODESELECT6, "Mode Select(6)" }, + { 0xD8, SCF_REQUIRES_MEDIUM, DoNEC_PCE_SAPSP, "Set Audio Playback Start Position" }, + { 0xD9, SCF_REQUIRES_MEDIUM, DoNEC_PCE_SAPEP, "Set Audio Playback End Position" }, + { 0xDA, SCF_REQUIRES_MEDIUM, DoNEC_PCE_PAUSE, "Pause" }, + { 0xDD, SCF_REQUIRES_MEDIUM, DoNEC_PCE_READSUBQ, "Read Subchannel Q" }, + { 0xDE, SCF_REQUIRES_MEDIUM, DoNEC_PCE_GETDIRINFO, "Get Dir Info" }, + + { 0xFF, 0, 0, NULL, NULL }, +}; + +void SCSICD_ResetTS(void) +{ + lastts = 0; +} + +void SCSICD_GetCDDAValues(int16 &left, int16 &right) +{ + if(cdda.CDDAStatus) + { + left = cdda.CDDASectorBuffer[cdda.CDDAReadPos * 2]; + right = cdda.CDDASectorBuffer[cdda.CDDAReadPos * 2 + 1]; + } + else + left = right = 0; +} + +static INLINE void RunCDDA(uint32 system_timestamp, int32 run_time) +{ + if(cdda.CDDAStatus == CDDASTATUS_PLAYING || cdda.CDDAStatus == CDDASTATUS_SCANNING) + { + int32 sample[2]; + + cdda.CDDADiv -= run_time << 16; + + while(cdda.CDDADiv <= 0) + { + cdda.CDDADiv += cdda.CDDADivAcc; + + //MDFN_DispMessage("%d %d %d\n", read_sec_start, read_sec, read_sec_end); + + if(cdda.CDDAReadPos == 588) + { + if(read_sec >= read_sec_end || (cdda.CDDAStatus == CDDASTATUS_SCANNING && read_sec == cdda.scan_sec_end)) + { + switch(cdda.PlayMode) + { + case PLAYMODE_SILENT: + case PLAYMODE_NORMAL: + cdda.CDDAStatus = CDDASTATUS_STOPPED; + break; + + case PLAYMODE_INTERRUPT: + cdda.CDDAStatus = CDDASTATUS_STOPPED; + CDIRQCallback(SCSICD_IRQ_DATA_TRANSFER_DONE); + break; + + case PLAYMODE_LOOP: + read_sec = read_sec_start; + break; + } + + // If CDDA playback is stopped, break out of our while(CDDADiv ...) loop and don't play any more sound! + if(cdda.CDDAStatus == CDDASTATUS_STOPPED) + break; + } + + // Don't play past the user area of the disc. + if(read_sec >= toc.tracks[100].lba) + { + cdda.CDDAStatus = CDDASTATUS_STOPPED; + break; + } + + if(cd.TrayOpen) + { + cdda.CDDAStatus = CDDASTATUS_STOPPED; + + #if 0 + cd.data_transfer_done = FALSE; + cd.key_pending = SENSEKEY_NOT_READY; + cd.asc_pending = ASC_MEDIUM_NOT_PRESENT; + cd.ascq_pending = 0x00; + cd.fru_pending = 0x00; + SendStatusAndMessage(STATUS_CHECK_CONDITION, 0x00); + #endif + + break; + } + + + cdda.CDDAReadPos = 0; + + { + uint8 tmpbuf[2352 + 96]; + + Cur_CDIF->ReadRawSector(tmpbuf, read_sec); //, read_sec_end, read_sec_start); + + for(int i = 0; i < 588 * 2; i++) + cdda.CDDASectorBuffer[i] = MDFN_de16lsb(&tmpbuf[i * 2]); + + memcpy(cd.SubPWBuf, tmpbuf + 2352, 96); + } + GenSubQFromSubPW(); + + if(cdda.CDDAStatus == CDDASTATUS_SCANNING) + { + int64 tmp_read_sec = read_sec; + + if(cdda.ScanMode & 1) + { + tmp_read_sec -= 24; + if(tmp_read_sec < cdda.scan_sec_end) + tmp_read_sec = cdda.scan_sec_end; + } + else + { + tmp_read_sec += 24; + if(tmp_read_sec > cdda.scan_sec_end) + tmp_read_sec = cdda.scan_sec_end; + } + read_sec = tmp_read_sec; + } + else + read_sec++; + } // End if(CDDAReadPos == 588) + + // If the last valid sub-Q data decoded indicate that the corresponding sector is a data sector, don't output the + // current sector as audio. + sample[0] = sample[1] = 0; + + if(!(cd.SubQBuf_Last[0] & 0x40) && cdda.PlayMode != PLAYMODE_SILENT) + { + sample[0] += (cdda.CDDASectorBuffer[cdda.CDDAReadPos * 2 + cdda.OutPortChSelectCache[0]] * cdda.OutPortVolumeCache[0]) >> 16; + sample[1] += (cdda.CDDASectorBuffer[cdda.CDDAReadPos * 2 + cdda.OutPortChSelectCache[1]] * cdda.OutPortVolumeCache[1]) >> 16; + } + + uint32 synthtime = ((system_timestamp + (cdda.CDDADiv >> 16))) / cdda.CDDATimeDiv; + if(!(cdda.CDDAReadPos % 6)) + { + int subindex = cdda.CDDAReadPos / 6 - 2; + + if(subindex >= 0) + CDStuffSubchannels(cd.SubPWBuf[subindex], subindex); + else // The system-specific emulation code should handle what value the sync bytes are. + CDStuffSubchannels(0x00, subindex); + } + + if(sbuf[0] && sbuf[1]) + { + cdda.CDDASynth[0].offset_inline(synthtime, sample[0] - cdda.last_sample[0], sbuf[0]); + cdda.CDDASynth[1].offset_inline(synthtime, sample[1] - cdda.last_sample[1], sbuf[1]); + } + + cdda.last_sample[0] = sample[0]; + cdda.last_sample[1] = sample[1]; + + cdda.CDDAReadPos++; + } + } +} + +static INLINE void RunCDRead(uint32 system_timestamp, int32 run_time) +{ + if(CDReadTimer > 0) + { + CDReadTimer -= run_time; + + if(CDReadTimer <= 0) + { + if(din->CanWrite() < ((WhichSystem == SCSICD_PCFX) ? 2352 : 2048)) // +96 if we find out the PC-FX can read subchannel data along with raw data too. ;) + { + //printf("Carp: %d %d %d\n", din->CanWrite(), SectorCount, CDReadTimer); + //CDReadTimer = (cd.data_in_size - cd.data_in_pos) * 10; + + CDReadTimer += (uint64) 1 * 2048 * System_Clock / CD_DATA_TRANSFER_RATE; + + //CDReadTimer += (uint64) 1 * 128 * System_Clock / CD_DATA_TRANSFER_RATE; + } + else + { + uint8 tmp_read_buf[2352 + 96]; + + if(cd.TrayOpen) + { + din->Flush(); + cd.data_transfer_done = FALSE; + + CommandCCError(SENSEKEY_NOT_READY, NSE_TRAY_OPEN); + } + else if(SectorAddr >= toc.tracks[100].lba) + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_END_OF_VOLUME); + } + else if(!Cur_CDIF->ReadRawSector(tmp_read_buf, SectorAddr)) //, SectorAddr + SectorCount)) + { + cd.data_transfer_done = FALSE; + + CommandCCError(SENSEKEY_ILLEGAL_REQUEST); + } + else if(ValidateRawDataSector(tmp_read_buf, SectorAddr)) + { + memcpy(cd.SubPWBuf, tmp_read_buf + 2352, 96); + + if(tmp_read_buf[12 + 3] == 0x2) + din->Write(tmp_read_buf + 24, 2048); + else + din->Write(tmp_read_buf + 16, 2048); + + GenSubQFromSubPW(); + + CDIRQCallback(SCSICD_IRQ_DATA_TRANSFER_READY); + + SectorAddr++; + SectorCount--; + + if(CurrentPhase != PHASE_DATA_IN) + ChangePhase(PHASE_DATA_IN); + + if(SectorCount) + { + cd.data_transfer_done = FALSE; + CDReadTimer += (uint64) 1 * 2048 * System_Clock / CD_DATA_TRANSFER_RATE; + } + else + { + cd.data_transfer_done = TRUE; + } + } + } // end else to if(!Cur_CDIF->ReadSector + + } + } +} + + +uint32 SCSICD_Run(scsicd_timestamp_t system_timestamp) +{ + int32 run_time = system_timestamp - lastts; + + if(system_timestamp < lastts) + { + fprintf(stderr, "Meow: %d %d\n", system_timestamp, lastts); + assert(system_timestamp >= lastts); + } + + monotonic_timestamp += run_time; + + lastts = system_timestamp; + + RunCDRead(system_timestamp, run_time); + RunCDDA(system_timestamp, run_time); + + bool ResetNeeded = false; + + if(RST_signal && !cd.last_RST_signal) + ResetNeeded = true; + + cd.last_RST_signal = RST_signal; + + if(ResetNeeded) + { + //puts("RST"); + VirtualReset(); + } + else if(CurrentPhase == PHASE_BUS_FREE) + { + if(SEL_signal) + { + if(WhichSystem == SCSICD_PCFX) + { + //if(cd_bus.DB == 0x84) + { + ChangePhase(PHASE_COMMAND); + } + } + else // PCE + { + ChangePhase(PHASE_COMMAND); + } + } + } + else if(ATN_signal && !REQ_signal && !ACK_signal) + { + //printf("Yay: %d %d\n", REQ_signal, ACK_signal); + ChangePhase(PHASE_MESSAGE_OUT); + } + else switch(CurrentPhase) + { + case PHASE_COMMAND: + if(REQ_signal && ACK_signal) // Data bus is valid nowww + { + //printf("Command Phase Byte I->T: %02x, %d\n", cd_bus.DB, cd.command_buffer_pos); + cd.command_buffer[cd.command_buffer_pos++] = cd_bus.DB; + SetREQ(FALSE); + } + + if(!REQ_signal && !ACK_signal && cd.command_buffer_pos) // Received at least one byte, what should we do? + { + if(cd.command_buffer_pos == RequiredCDBLen[cd.command_buffer[0] >> 4]) + { + const SCSICH *cmd_info_ptr; + + if(WhichSystem == SCSICD_PCFX) + cmd_info_ptr = PCFXCommandDefs; + else + cmd_info_ptr = PCECommandDefs; + + while(cmd_info_ptr->pretty_name && cmd_info_ptr->cmd != cd.command_buffer[0]) + cmd_info_ptr++; + + if(SCSILog) + { + char log_buffer[1024]; + int lb_pos; + + log_buffer[0] = 0; + + lb_pos = trio_snprintf(log_buffer, 1024, "Command: %02x, %s%s ", cd.command_buffer[0], cmd_info_ptr->pretty_name ? cmd_info_ptr->pretty_name : "!!BAD COMMAND!!", + (cmd_info_ptr->flags & SCF_UNTESTED) ? "(UNTESTED)" : ""); + + for(int i = 0; i < RequiredCDBLen[cd.command_buffer[0] >> 4]; i++) + lb_pos += trio_snprintf(log_buffer + lb_pos, 1024 - lb_pos, "%02x ", cd.command_buffer[i]); + + SCSILog("SCSI", "%s", log_buffer); + //puts(log_buffer); + } + + + if(cmd_info_ptr->pretty_name == NULL) // Command not found! + { + CommandCCError(SENSEKEY_ILLEGAL_REQUEST, NSE_INVALID_COMMAND); + + SCSIDBG("Bad Command: %02x\n", cd.command_buffer[0]); + + if(SCSILog) + SCSILog("SCSI", "Bad Command: %02x", cd.command_buffer[0]); + + cd.command_buffer_pos = 0; + } + else + { + if(cmd_info_ptr->flags & SCF_UNTESTED) + { + SCSIDBG("Untested SCSI command: %02x, %s", cd.command_buffer[0], cmd_info_ptr->pretty_name); + } + + if(cd.TrayOpen && (cmd_info_ptr->flags & SCF_REQUIRES_MEDIUM)) + { + CommandCCError(SENSEKEY_NOT_READY, NSE_TRAY_OPEN); + } + else if(!Cur_CDIF && (cmd_info_ptr->flags & SCF_REQUIRES_MEDIUM)) + { + CommandCCError(SENSEKEY_NOT_READY, NSE_NO_DISC); + } + else if(cd.DiscChanged && (cmd_info_ptr->flags & SCF_REQUIRES_MEDIUM)) + { + CommandCCError(SENSEKEY_UNIT_ATTENTION, NSE_DISC_CHANGED); + cd.DiscChanged = false; + } + else + { + cmd_info_ptr->func(cd.command_buffer); + } + + cd.command_buffer_pos = 0; + } + } // end if(cd.command_buffer_pos == RequiredCDBLen[cd.command_buffer[0] >> 4]) + else // Otherwise, get more data for the command! + SetREQ(TRUE); + } + break; + + case PHASE_DATA_OUT: + if(REQ_signal && ACK_signal) // Data bus is valid nowww + { + //printf("DATAOUT-SCSIIN: %d %02x\n", cd.data_out_pos, cd_bus.DB); + cd.data_out[cd.data_out_pos++] = cd_bus.DB; + SetREQ(FALSE); + } + else if(!REQ_signal && !ACK_signal && cd.data_out_pos) + { + if(cd.data_out_pos == cd.data_out_size) + { + cd.data_out_pos = 0; + + if(cd.command_buffer[0] == 0x15) + FinishMODESELECT6(cd.data_out, cd.data_out_size); + else // Error out here? It shouldn't be reached: + SendStatusAndMessage(STATUS_GOOD, 0x00); + } + else + SetREQ(TRUE); + } + break; + + + case PHASE_MESSAGE_OUT: + //printf("%d %d, %02x\n", REQ_signal, ACK_signal, cd_bus.DB); + if(REQ_signal && ACK_signal) + { + SetREQ(FALSE); + + // ABORT message is 0x06, but the code isn't set up to be able to recover from a MESSAGE OUT phase back to the previous phase, so we treat any message as an ABORT. + // Real tests are needed on the PC-FX to determine its behavior. + // (Previously, ATN emulation was a bit broken, which resulted in the wrong data on the data bus in this code path in at least "Battle Heat", but it's fixed now and 0x06 is on the data bus). + //if(cd_bus.DB == 0x6) // ABORT message! + if(1) + { + puts("ABORT"); + din->Flush(); + cd.data_out_pos = cd.data_out_size = 0; + + CDReadTimer = 0; + cdda.CDDAStatus = CDDASTATUS_STOPPED; + ChangePhase(PHASE_BUS_FREE); + } + else + printf("Message to target: %02x\n", cd_bus.DB); + } + break; + + + case PHASE_STATUS: + if(REQ_signal && ACK_signal) + { + SetREQ(FALSE); + cd.status_sent = TRUE; + } + + if(!REQ_signal && !ACK_signal && cd.status_sent) + { + // Status sent, so get ready to send the message! + cd.status_sent = FALSE; + cd_bus.DB = cd.message_pending; + + ChangePhase(PHASE_MESSAGE_IN); + } + break; + + case PHASE_DATA_IN: + if(!REQ_signal && !ACK_signal) + { + //puts("REQ and ACK false"); + if(din->CanRead() == 0) // aaand we're done! + { + CDIRQCallback(0x8000 | SCSICD_IRQ_DATA_TRANSFER_READY); + + if(cd.data_transfer_done) + { + SendStatusAndMessage(STATUS_GOOD, 0x00); + cd.data_transfer_done = FALSE; + CDIRQCallback(SCSICD_IRQ_DATA_TRANSFER_DONE); + } + } + else + { + cd_bus.DB = din->ReadByte(); + SetREQ(TRUE); + } + } + if(REQ_signal && ACK_signal) + { + //puts("REQ and ACK true"); + SetREQ(FALSE); + } + break; + + case PHASE_MESSAGE_IN: + if(REQ_signal && ACK_signal) + { + SetREQ(FALSE); + cd.message_sent = TRUE; + } + + if(!REQ_signal && !ACK_signal && cd.message_sent) + { + cd.message_sent = FALSE; + ChangePhase(PHASE_BUS_FREE); + } + break; + } + + int32 next_time = 0x7fffffff; + + if(CDReadTimer > 0 && CDReadTimer < next_time) + next_time = CDReadTimer; + + if(cdda.CDDAStatus == CDDASTATUS_PLAYING || cdda.CDDAStatus == CDDASTATUS_SCANNING) + { + int32 cdda_div_sexytime = (cdda.CDDADiv + 0xFFFF) >> 16; + if(cdda_div_sexytime > 0 && cdda_div_sexytime < next_time) + next_time = cdda_div_sexytime; + } + + assert(next_time >= 0); + + return(next_time); +} + +void SCSICD_SetLog(void (*logfunc)(const char *, const char *, ...)) +{ + SCSILog = logfunc; +} +#if 0 +static void kaiser_window( double* io, int count, double beta ) +{ + int const accuracy = 20; //12; + + double* end = io + count; + + double beta2 = beta * beta * (double) -0.25; + double to_fract = beta2 / ((double) count * count); + double i = 0; + double rescale; + for ( ; io < end; ++io, i += 1 ) + { + double x = i * i * to_fract - beta2; + double u = x; + double k = x + 1; + + double n = 2; + do + { + u *= x / (n * n); + n += 1; + k += u; + } + while ( k <= u * (1 << accuracy) ); + + if ( !i ) + rescale = 1 / k; // otherwise values get large + + *io *= k * rescale; + } +} + +static void gen_sinc( double* out, int size, double cutoff, double kaiser ) +{ + assert( size % 2 == 0 ); // size must be enev + + int const half_size = size / 2; + double* const mid = &out [half_size]; + + // Generate right half of sinc + for ( int i = 0; i < half_size; i++ ) + { + double angle = (i * 2 + 1) * (M_PI / 2); + mid [i] = sin( angle * cutoff ) / angle; + } + + kaiser_window( mid, half_size, kaiser ); + + // Mirror for left half + for ( int i = 0; i < half_size; i++ ) + out [i] = mid [half_size - 1 - i]; +} + +static void normalize( double* io, int size, double gain = 1.0 ) +{ + double sum = 0; + for ( int i = 0; i < size; i++ ) + sum += io [i]; + + double scale = gain / sum; + for ( int i = 0; i < size; i++ ) + io [i] *= scale; +} + +struct my_kernel : blip_eq_t +{ + double cutoff; + + my_kernel( double cutoff ) : cutoff( cutoff ) + { + } + + void generate( double* out, int count ) const + { + double tmp_buf[count * 2]; + double moo = 0; + + printf("%f %f\n", (double)cutoff, (double)oversample); + + gen_sinc(tmp_buf, count * 2, cutoff / oversample * 2, 10); + normalize(tmp_buf, count * 2, 1); //189216615); + + for(int i = 0; i < count; i++) + { + out[i] = tmp_buf[count + i]; + moo += out[i]; + } + printf("Moo: %f\n", moo); + } +}; +#endif + + +void SCSICD_SetTransferRate(uint32 TransferRate) +{ + CD_DATA_TRANSFER_RATE = TransferRate; +} + +void SCSICD_Close(void) +{ + if(din) + { + delete din; + din = NULL; + } +} + +void SCSICD_Init(int type, int cdda_time_div, Blip_Buffer *leftbuf, Blip_Buffer *rightbuf, uint32 TransferRate, uint32 SystemClock, void (*IRQFunc)(int), void (*SSCFunc)(uint8, int)) +{ + Cur_CDIF = NULL; + cd.TrayOpen = false; + + monotonic_timestamp = 0; + lastts = 0; + + SCSILog = NULL; + + if(type == SCSICD_PCFX) + din = new SimpleFIFO(65536); //4096); + else + din = new SimpleFIFO(2048); //8192); //1024); /2048); + + WhichSystem = type; + cdda.CDDATimeDiv = cdda_time_div; + + for(int i = 0; i < 2; i++) + { + //double meow = (((double)22050 / 48000) - (6.4 / 64 / 2)); + //my_kernel eq(meow); + + cdda.CDDASynth[i].volume(1.0f / 65536); + + cdda.CDDAVolume[i] = 65536; //1.0; + //CDDASynth[i].treble_eq(eq); + } + + FixOPV(); + + sbuf[0] = leftbuf; + sbuf[1] = rightbuf; + + CD_DATA_TRANSFER_RATE = TransferRate; + System_Clock = SystemClock; + CDIRQCallback = IRQFunc; + CDStuffSubchannels = SSCFunc; +} + +void SCSICD_SetCDDAVolume(double left, double right) +{ + cdda.CDDAVolume[0] = 65536 * left; + cdda.CDDAVolume[1] = 65536 * right; + + for(int i = 0; i < 2; i++) + { + if(cdda.CDDAVolume[i] > 65536) + { + printf("Debug Warning: CD-DA volume %d too large: %d\n", i, cdda.CDDAVolume[i]); + cdda.CDDAVolume[i] = 65536; + } + } + + FixOPV(); +} + +int SCSICD_StateAction(StateMem * sm, int load, int data_only, const char *sname) +{ + SFORMAT StateRegs[] = + { + SFVARN(cd_bus.DB, "DB"), + SFVARN(cd_bus.signals, "Signals"), + SFVAR(CurrentPhase), + + //SFVARN(cd_bus.BSY, "BSY"), + //SFVARN(cd_bus.MSG, "MSG"), + //SFVARN(cd_bus.CD, "CD"), + //SFVARN(cd_bus.REQ, "REQ"), + //SFVARN(cd_bus.IO, "IO"), + //SFVARN(cd_bus.kingACK, "kingACK"), + //SFVARN(cd_bus.kingRST, "kingRST"), + //SFVARN(cd_bus.kingSEL, "kingSEL"), + //SFVARN(cd_bus.kingATN, "kingATN"), + + SFVARN(cd.last_RST_signal, "last_RST"), + SFVARN(cd.message_pending, "message_pending"), + SFVARN(cd.status_sent, "status_sent"), + SFVARN(cd.message_sent, "message_sent"), + SFVARN(cd.key_pending, "key_pending"), + SFVARN(cd.asc_pending, "asc_pending"), + SFVARN(cd.ascq_pending, "ascq_pending"), + SFVARN(cd.fru_pending, "fru_pending"), + + SFARRAYN(cd.command_buffer, 256, "command_buffer"), + SFVARN(cd.command_buffer_pos, "command_buffer_pos"), + SFVARN(cd.command_size_left, "command_size_left"), + + // Don't save the FIFO's write position, it will be reconstructed from read_pos and in_count + SFARRAYN(&din->data[0], din->data.size(), "din_fifo"), + SFVARN(din->read_pos, "din_read_pos"), + SFVARN(din->in_count, "din_in_count"), + SFVARN(cd.data_transfer_done, "data_transfer_done"), + + SFARRAYN(cd.data_out, 8192, "data_out"), + SFVARN(cd.data_out_pos, "data_out_pos"), + SFVARN(cd.data_out_size, "data_out_size"), + + SFVARN(cd.TrayOpen, "TrayOpen"), + SFVARN(cd.DiscChanged, "DiscChanged"), + + SFVAR(cdda.PlayMode), + SFARRAY16(cdda.CDDASectorBuffer, 1176), + SFVAR(cdda.CDDAReadPos), + SFVAR(cdda.CDDAStatus), + SFVAR(cdda.CDDADiv), + SFVAR(read_sec_start), + SFVAR(read_sec), + SFVAR(read_sec_end), + + SFVAR(CDReadTimer), + SFVAR(SectorAddr), + SFVAR(SectorCount), + + SFVAR(cdda.ScanMode), + SFVAR(cdda.scan_sec_end), + + SFARRAYN(&cd.SubQBuf[0][0], sizeof(cd.SubQBuf), "SubQBufs"), + SFARRAYN(cd.SubQBuf_Last, sizeof(cd.SubQBuf_Last), "SubQBufLast"), + SFARRAYN(cd.SubPWBuf, sizeof(cd.SubPWBuf), "SubPWBuf"), + + SFVAR(monotonic_timestamp), + SFVAR(pce_lastsapsp_timestamp), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, sname); + + if(load) + { + din->in_count &= din->size - 1; + din->read_pos &= din->size - 1; + din->write_pos = (din->read_pos + din->in_count) & (din->size - 1); + //printf("%d %d %d\n", din->in_count, din->read_pos, din->write_pos); + } + + return (ret); +} diff --git a/libmednahawk/src/cdrom/scsicd.h b/libmednahawk/src/cdrom/scsicd.h new file mode 100644 index 0000000000..aae486047f --- /dev/null +++ b/libmednahawk/src/cdrom/scsicd.h @@ -0,0 +1,101 @@ +#ifndef __PCFX_SCSICD_H +#define __PCFX_SCSICD_H + +#include + +typedef int32 scsicd_timestamp_t; + +typedef struct +{ + // Data bus(FIXME: we should have a variable for the target and the initiator, and OR them together to be truly accurate). + uint8 DB; + + uint32 signals; + + // Signals under our(the "target") control. + //bool BSY, MSG, CD, REQ, IO; + + // Signals under the control of the initiator(not us!) + //bool kingACK, kingRST, kingSEL, kingATN; +} scsicd_bus_t; + +extern scsicd_bus_t cd_bus; // Don't access this structure directly by name outside of scsicd.c, but use the macros below. + +// Signals under our(the "target") control. +#define SCSICD_IO_mask 0x001 +#define SCSICD_CD_mask 0x002 +#define SCSICD_MSG_mask 0x004 +#define SCSICD_REQ_mask 0x008 +#define SCSICD_BSY_mask 0x010 + +// Signals under the control of the initiator(not us!) +#define SCSICD_kingRST_mask 0x020 +#define SCSICD_kingACK_mask 0x040 +#define SCSICD_kingATN_mask 0x080 +#define SCSICD_kingSEL_mask 0x100 + +#define BSY_signal ((const bool)(cd_bus.signals & SCSICD_BSY_mask)) +#define ACK_signal ((const bool)(cd_bus.signals & SCSICD_kingACK_mask)) +#define RST_signal ((const bool)(cd_bus.signals & SCSICD_kingRST_mask)) +#define MSG_signal ((const bool)(cd_bus.signals & SCSICD_MSG_mask)) +#define SEL_signal ((const bool)(cd_bus.signals & SCSICD_kingSEL_mask)) +#define REQ_signal ((const bool)(cd_bus.signals & SCSICD_REQ_mask)) +#define IO_signal ((const bool)(cd_bus.signals & SCSICD_IO_mask)) +#define CD_signal ((const bool)(cd_bus.signals & SCSICD_CD_mask)) +#define ATN_signal ((const bool)(cd_bus.signals & SCSICD_kingATN_mask)) + +#define DB_signal ((const uint8)cd_bus.DB) + +#define SCSICD_GetDB() DB_signal +#define SCSICD_GetBSY() BSY_signal +#define SCSICD_GetIO() IO_signal +#define SCSICD_GetCD() CD_signal +#define SCSICD_GetMSG() MSG_signal +#define SCSICD_GetREQ() REQ_signal + +// Should we phase out getting these initiator-driven signals like this(the initiator really should keep track of them itself)? +#define SCSICD_GetACK() ACK_signal +#define SCSICD_GetRST() RST_signal +#define SCSICD_GetSEL() SEL_signal +#define SCSICD_GetATN() ATN_signal + +void SCSICD_Power(scsicd_timestamp_t system_timestamp); +void SCSICD_SetDB(uint8 data); + +// These SCSICD_Set* functions are kind of misnomers, at least in comparison to the SCSICD_Get* functions... +// They will set/clear the bits corresponding to the KING's side of the bus. +void SCSICD_SetACK(bool set); +void SCSICD_SetSEL(bool set); +void SCSICD_SetRST(bool set); +void SCSICD_SetATN(bool set); + +uint32 SCSICD_Run(scsicd_timestamp_t); +void SCSICD_ResetTS(void); + +enum +{ + SCSICD_PCE = 1, + SCSICD_PCFX +}; + +enum +{ + SCSICD_IRQ_DATA_TRANSFER_DONE = 1, + SCSICD_IRQ_DATA_TRANSFER_READY, + SCSICD_IRQ_MAGICAL_REQ, +}; + +void SCSICD_GetCDDAValues(int16 &left, int16 &right); + +void SCSICD_SetLog(void (*logfunc)(const char *, const char *, ...)); + +void SCSICD_Init(int type, int CDDATimeDiv, Blip_Buffer *leftbuf, Blip_Buffer *rightbuf, uint32 TransferRate, uint32 SystemClock, void (*IRQFunc)(int), void (*SSCFunc)(uint8, int)); +void SCSICD_Close(void); + +void SCSICD_SetTransferRate(uint32 TransferRate); +void SCSICD_SetCDDAVolume(double left, double right); +int SCSICD_StateAction(StateMem *sm, int load, int data_only, const char *sname); + +void SCSICD_SetDisc(bool tray_open, CDIF *cdif, bool no_emu_side_effects = false); + +#endif diff --git a/libmednahawk/src/clamp.h b/libmednahawk/src/clamp.h new file mode 100644 index 0000000000..d053580ba7 --- /dev/null +++ b/libmednahawk/src/clamp.h @@ -0,0 +1,35 @@ +#ifndef __MDFN_CLAMP_H +#define __MDFN_CLAMP_H + +static INLINE int32 clamp_to_u8(int32 i) +{ + if(i & 0xFFFFFF00) + i = (((~i) >> 30) & 0xFF); + + return(i); +} + + +static INLINE int32 clamp_to_u16(int32 i) +{ + if(i & 0xFFFF0000) + i = (((~i) >> 31) & 0xFFFF); + + return(i); +} + +template static INLINE void clamp(T *val, U minimum, V maximum) +{ + if(*val < minimum) + { + //printf("Warning: clamping to minimum(%d)\n", (int)minimum); + *val = minimum; + } + if(*val > maximum) + { + //printf("Warning: clamping to maximum(%d)\n", (int)maximum); + *val = maximum; + } +} + +#endif diff --git a/libmednahawk/src/compress/Makefile.am.inc b/libmednahawk/src/compress/Makefile.am.inc new file mode 100644 index 0000000000..58392ecae8 --- /dev/null +++ b/libmednahawk/src/compress/Makefile.am.inc @@ -0,0 +1 @@ +mednafen_SOURCES += compress/minilzo.c compress/quicklz.c compress/blz.cpp compress/ioapi.c compress/unzip.c diff --git a/libmednahawk/src/compress/README.LZO b/libmednahawk/src/compress/README.LZO new file mode 100644 index 0000000000..e725437827 --- /dev/null +++ b/libmednahawk/src/compress/README.LZO @@ -0,0 +1,124 @@ + + ============================================================================ + miniLZO -- mini subset of the LZO real-time data compression library + ============================================================================ + + Author : Markus Franz Xaver Johannes Oberhumer + + http://www.oberhumer.com/opensource/lzo/ + Version : 2.06 + Date : 12 Aug 2011 + + I've created miniLZO for projects where it is inconvenient to + include (or require) the full LZO source code just because you + want to add a little bit of data compression to your application. + + miniLZO implements the LZO1X-1 compressor and both the standard and + safe LZO1X decompressor. Apart from fast compression it also useful + for situations where you want to use pre-compressed data files (which + must have been compressed with LZO1X-999). + + miniLZO consists of one C source file and three header files: + minilzo.c + minilzo.h, lzoconf.h, lzodefs.h + + To use miniLZO just copy these files into your source directory, add + minilzo.c to your Makefile and #include minilzo.h from your program. + Note: you also must distribute this file ('README.LZO') with your project. + + minilzo.o compiles to about 6 KiB (using gcc or Visual C on an i386), and + the sources are about 30 KiB when packed with zip - so there's no more + excuse that your application doesn't support data compression :-) + + For more information, documentation, example programs and other support + files (like Makefiles and build scripts) please download the full LZO + package from + http://www.oberhumer.com/opensource/lzo/ + + Have fun, + Markus + + + P.S. minilzo.c is generated automatically from the LZO sources and + therefore functionality is completely identical + + + Appendix A: building miniLZO + ---------------------------- + miniLZO is written such a way that it should compile and run + out-of-the-box on most machines. + + If you are running on a very unusual architecture and lzo_init() fails then + you should first recompile with '-DLZO_DEBUG' to see what causes the failure. + The most probable case is something like 'sizeof(void *) != sizeof(size_t)'. + After identifying the problem you can compile by adding some defines + like '-DSIZEOF_VOID_P=8' to your Makefile. + + The best solution is (of course) using Autoconf - if your project uses + Autoconf anyway just add '-DMINILZO_HAVE_CONFIG_H' to your compiler + flags when compiling minilzo.c. See the LZO distribution for an example + how to set up configure.ac. + + + Appendix B: list of public functions available in miniLZO + --------------------------------------------------------- + Library initialization + lzo_init() + + Compression + lzo1x_1_compress() + + Decompression + lzo1x_decompress() + lzo1x_decompress_safe() + + Checksum functions + lzo_adler32() + + Version functions + lzo_version() + lzo_version_string() + lzo_version_date() + + Portable (but slow) string functions + lzo_memcmp() + lzo_memcpy() + lzo_memmove() + lzo_memset() + + + Appendix C: suggested macros for 'configure.ac' when using Autoconf + ------------------------------------------------------------------- + Checks for typedefs and structures + AC_CHECK_TYPE(ptrdiff_t,long) + AC_TYPE_SIZE_T + AC_CHECK_SIZEOF(short) + AC_CHECK_SIZEOF(int) + AC_CHECK_SIZEOF(long) + AC_CHECK_SIZEOF(long long) + AC_CHECK_SIZEOF(__int64) + AC_CHECK_SIZEOF(void *) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_SIZEOF(ptrdiff_t) + + Checks for compiler characteristics + AC_C_CONST + + Checks for library functions + AC_CHECK_FUNCS(memcmp memcpy memmove memset) + + + Appendix D: Copyright + --------------------- + LZO and miniLZO are Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Markus Franz Xaver Oberhumer . + + LZO and miniLZO are distributed under the terms of the GNU General + Public License (GPL). See the file COPYING. + + Special licenses for commercial and other applications which + are not willing to accept the GNU General Public License + are available by contacting the author. + + diff --git a/libmednahawk/src/compress/blz.c b/libmednahawk/src/compress/blz.c new file mode 100644 index 0000000000..dcc0996b15 --- /dev/null +++ b/libmednahawk/src/compress/blz.c @@ -0,0 +1,982 @@ +/* Configuration macros. If undefined, it is automatically configured, otherwise its +value (0 or 1) determines the setting. */ + +/* Enable/disable use of negative/positive sign for faster high bit testing */ +/*#define BLZ_USE_SIGN 1 */ + +/* Enable/disable fast version that makes unaligned memory accesses. Fast version +uses all the following flags. Portable version only uses BLZ_USE_SIGN flag. */ +/*#define BLZ_FAST 1 */ + +/* Enable/disable use count leading zeros operation */ +/*#define BLZ_FAST_CLZ 1 */ + +/* Big/little endian override. Only needs to be set if assertion in blz_pack() fails. +Can happen on processors which support both byte orders and are using the less-common +one, like little-endian PowerPC or big-endian ARM. */ +/*#define BLZ_BIG_ENDIAN 1 */ + +/* Restricted pointer keyword. Auto configured for GCC and Microsoft, others might +use plain restrict. */ +/*#define BLZ_RESTRICT restrict */ + +/* blz 0.9.1. http://www.slack.net/~ant/ */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include "blz.h" + +#include +#include +#include +#include + +/* Copyright (C) 2007 Shay Green. This module is free software; you can +redistribute it and/or modify it under the terms of the GNU General Public +License, version 2 or later, as published by the Free Software Foundation. +This program is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ + +/* Comments with percentages are how often the condition is true */ + +/* Data format: [32-bit length] [block 1] [block 2] ... [32-bit data 0] [16-bit data 0] + +block: [32 bits] [symbol 0] [symbol 1] ... [symbol 30] + +Bits tell whether a symbol is a literal byte (1) or match (0), starting at bit 0. +Highest bit set is an end marker, so a block can have at most 31 symbols. +Matches are encoded in three ways. + +Short match [3-bit length | 13-bit offset] +Mid match [5-bit length] [16-bit offset] +Long match [8-bit data 0] [32-bit length] [32-bit offset] */ + +typedef unsigned char byte; + +#if INT_MAX < 0x7FFFFFFF || UINT_MAX < 0xFFFFFFFF + #error "int must be at least 32 bits" +#endif + +/* Automatically optimize for known processors. Thanks http://predef.sourceforge.net/ */ + +#define BLZ_PPC (defined (__POWERPC__) || defined (__ppc__) || defined (_M_PPC) || defined (_POWER)) + +#if BLZ_PPC || defined (__m68k__) + #ifndef BLZ_BIG_ENDIAN + #define BLZ_BIG_ENDIAN 1 + #endif +#endif + +#if BLZ_PPC || defined (__m68k__) || defined (__i386__) || defined (__x86_64__) || \ + defined (_M_IX86) || defined (_M_X64) + #ifndef BLZ_FAST + #define BLZ_FAST 1 + #endif + #ifndef BLZ_FAST_CLZ + #define BLZ_FAST_CLZ 1 + #endif +#endif + +#ifndef BLZ_RESTRICT + #if __GNUC__ >= 3 || _MSC_VER + #define BLZ_RESTRICT __restrict + #else + #define BLZ_RESTRICT + #endif +#endif + +#if INT_MAX != 0x7FFFFFFF || !BLZ_USE_SIGN + typedef unsigned bits_t; + #define TOP_BIT( n ) ((n) & 0x80000000u) + #define ALL_BITS( n ) ((n) & 0xFFFFFFFFu) +#else + typedef int bits_t; + #define TOP_BIT( n ) ((n) < 0) + #define ALL_BITS( n ) (n) +#endif + + + +/**** Fast version ****/ + +#if BLZ_FAST + +char const blz_version [] = "fast"; + +#if defined (HAVE_STDINT_H) + #include +#elif defined (HAVE_INTTYPES_H) + #include +#else + #if USHRT_MAX != 0xFFFF || UINT_MAX != 0xFFFFFFFF + #error "Short must be 16 bits and int must be 32 bits" + #endif + /* macros instead of typedefs in case std headers have these typedefs */ + #define uint16_t unsigned short + #define uint32_t unsigned int + #define int32_t signed int +#endif + +#ifndef GET16 + #define GET16( addr ) (*(uint16_t const*) (addr)) + #define GET32( addr ) (*(uint32_t const*) (addr)) + #define GET32S( addr ) (*( int32_t const*) (addr)) + #define SET16( addr, in ) (void) (*(uint16_t*) (addr) = (uint16_t) (in)) + #define SET32( addr, in ) (void) (*(uint32_t*) (addr) = (uint32_t) (in)) +#endif + +#if BLZ_BIG_ENDIAN + #define BIG_LITTLE( big, little ) (big) +#else + #define BIG_LITTLE( big, little ) (little) +#endif + +#if BLZ_FAST_CLZ + /* CLZ: count leading zeros, CTZ: count trailing zeros */ + #if __GNUC__ >= 4 + #define CLZ __builtin_clz + #define CTZ __builtin_ctz + #elif BLZ_PPC && (__GNUC__ >= 3 || __MWERKS__) + #if __GNUC__ + #include + #endif + #define CLZ __cntlzw + #define CTZ( n ) (32 - __cntlzw( ((n) - 1) & ~(n) )) + #endif + + #ifdef CLZ + #define COUNT_MATCH( n ) (BIG_LITTLE( CLZ( n ), CTZ( n ) ) >> 3) + #endif +#endif + +#define CALC_HASH( n ) BIG_LITTLE( (n >> 20) ^ (n >> 8 & 0xFFF), ((n >> 12) ^ n) & 0xFFF ) + +#if BLZ_BIG_ENDIAN && BLZ_PPC + /* optimizes out two instructions (unless compiler is really smart) */ + typedef int dict_entry_t; + #define DICT_SHIFT( x, y ) \ + (((x) / ((1u << (y)) / sizeof (byte*))) & (0xFFF * sizeof (byte*))) + #define DICT_ENTRY( d, n ) (DICT_SHIFT( n, 20 ) ^ DICT_SHIFT( n, 8 )) + #define USE_ENTRY( d, o ) *(byte const**) ((byte*) d + o) +#else + typedef byte const** dict_entry_t; + #define DICT_ENTRY( d, n ) &d [CALC_HASH( n )] + #define USE_ENTRY( d, o ) *o +#endif + +/* Pack */ + +#define PRE_GOTO() \ + data = GET32( in ) + +#define GOTO_NEXT \ + if ( !TOP_BIT( bits ) ) /* 97% */ \ + goto match;\ + goto flush; + +enum { in_max_offset = 11 }; /* 8+ byte match just before end will read this far ahead */ + +static int blz_pack_( byte const* const in_min, int const size, + void* const out_min, blz_pack_t* const dict ) +{ + /* On 32-bit x86, only dict, in_max, out_max, and bits_out don't fit in registers */ + byte const* BLZ_RESTRICT in = in_min; + byte const* const in_max = in + size - in_max_offset; + + byte* out = (byte*) out_min; + byte* const out_max = out + size; + byte* out_bits; + + bits_t bits = 2; + unsigned data; + + in += 4; + SET32( out, size ); + out_bits = (out += 8); + +literal_sub_4: /* Literal byte */ + { + int const t = in [-4]; + in -= 3; + PRE_GOTO(); + *out++ = t; + if ( TOP_BIT( ++bits ) ) /* 3% */ + goto flush; + } + +match: /* Check for match and update dict */ + { + /* calc dict entry and check for end of input */ + dict_entry_t const dict_offset = DICT_ENTRY( dict->dict, data ); + byte const* const BLZ_RESTRICT match = USE_ENTRY( dict->dict, dict_offset ); + bits <<= 1; + if ( in >= in_max ) /* 1% */ + goto final_bytes; + + /* read first 4 bytes of match and check match distance */ + { + unsigned const match_first = GET32( match - 4 ); + if ( match > in ) /* 1% */ + goto literal; + + /* compare first four bytes and update dict */ + USE_ENTRY( dict->dict, dict_offset ) = (in += 4); + if ( (data ^= match_first) != 0 ) /* 74% */ + { + int off = in - match; + if ( BIG_LITTLE( data >> 8, data & 0x00FFFFFF ) ) /* 57% */ + goto literal_sub_4; + if ( off >= (1 << 13) ) /* 19% */ + goto literal_sub_4; + + /* 3 byte match */ + --in; + PRE_GOTO(); + SET16( out, BIG_LITTLE( (1 << 13) | off, (off << 3) + 1 ) ); + out += 2; + GOTO_NEXT + } + } + + if ( (data = GET32( in ) ^ GET32( match )) != 0 ) /* 78% */ + { + /* 4-7 byte match */ + int off = in - match; + int len; + #ifdef COUNT_MATCH + len = COUNT_MATCH( data ); + in += len; + len += 2; + #else + len = 2; + if ( !(data & BIG_LITTLE( 0xFF000000, 0x000000FF )) ) /* 48% 5-7 byte match */ + { + ++in; + len = 3; + if ( !(data & BIG_LITTLE( 0x00FF0000, 0x0000FFFF )) ) /* 47% 6-7 byte match */ + { + ++in; + len = 4; + if ( !BIG_LITTLE( data >> 8, data & 0x00FF0000 ) ) /* 37% 7 byte match */ + { + ++in; + len = 5; + } + } + } + #endif + PRE_GOTO(); /* TODO: could avoid this in 4-byte case since it's already read */ + + /* Encode offset and length */ + if ( off < (1 << 13) ) /* 82% */ + { + /* LLLOOOOO OOOOOOOO */ + SET16( out, BIG_LITTLE( (len << 13) | off, (off << 3) + len ) ); + out += 2; + GOTO_NEXT + } + + /* unsigned cast and <= helps PowerPC */ + if ( (unsigned) off <= (1 << 16) - 1 ) /* 91% */ + { + /* 000LLLLL OOOOOOOO OOOOOOOO */ + *out = BIG_LITTLE( len, len << 3 ); + SET16( out + 1, off ); + out += 3; + GOTO_NEXT + } + + in -= 2; + in -= len; + goto literal; + } + { + /* 8+ byte match */ + byte const* const start = in + 2; + int off = match - in; + in += 4; + { + /* compare 4 bytes at a time */ + int temp; + do + { + data = GET32( in ); + temp = GET32( in + off ); + if ( in >= in_max ) /* 1% */ + goto hit_end; + in += 4; + } + while ( !(data ^= temp) ); /* 73% */ + + /* determine which of the 4 bytes matched */ + #ifdef COUNT_MATCH + in += COUNT_MATCH( data ); + #else + if ( !(data & BIG_LITTLE( 0xFF000000, 0x000000FF )) ) /* 64% */ + { + ++in; + if ( !(data & BIG_LITTLE( 0x00FF0000, 0x0000FFFF )) ) /* 58% */ + { + ++in; + if ( !BIG_LITTLE( data >> 8, data & 0x00FF0000 ) ) /* 45% */ + ++in; + } + } + #endif + } + hit_end: + + /* Encode offset and length */ + { + int len = in - start; + in -= 4; + off = -off; + PRE_GOTO(); + + if ( len < (1 << 5) ) /* 90% */ + { + /* unsigned cast and <= helps PowerPC */ + if ( (unsigned) off <= (1 << 16) - 1 ) /* 98% */ + { + /* 000LLLLL OOOOOOOO OOOOOOOO */ + *out = BIG_LITTLE( len, len << 3 ); + SET16( out + 1, off ); + out += 3; + GOTO_NEXT + } + + if ( len <= 9 - 2 ) /* 52% */ + { + /* TODO: lame */ + in -= 2; + in -= len; + goto literal; + } + } + + /* 00000000 OOOOOOOO OOOOOOOO OOOOOOOO OOOOOOOO LLLLLLLL LLLLLLLL LLLLLLLL LLLLLLLL */ + *out = 0; + SET32( out + 1, off ); + SET32( out + 5, len ); + out += 9; + GOTO_NEXT + } + } + } + + /* These two are at bottom of loop to make branches here positive and branches back + negative, which helps CPUs that lack dynamic branch prediction */ + +literal: /* Literal byte */ + { + int const t = *in++; + PRE_GOTO(); + *out++ = t; + if ( !TOP_BIT( ++bits ) ) /* 97% */ + goto match; + } + +flush: /* Flush bits */ + out += 4; + SET32( out_bits - 4, (bits << 1) + 1 ); + out_bits = out; + bits = 1; + if ( out < out_max ) /* 99% */ + goto match; + return -1; /* no compression */ + +final_bytes: + /* Right-justify and flush final bits */ +#ifdef CLZ + SET32( out_bits - 4, (bits + 1) << (CLZ( bits ) + 1) ); +#else + ++bits; + if ( !(bits & 0xFFFF0000u) ) + bits <<= 16; + + if ( !TOP_BIT( bits ) ) + while ( !TOP_BIT( bits <<= 1 ) ) { } + bits <<= 1; + + SET32( out_bits - 4, bits ); +#endif + + /* Remaining bytes should be in narrow range */ + assert( in_max + in_max_offset - in >= in_max_offset - 6 ); + assert( in_max + in_max_offset - in <= in_max_offset + 1 ); + + { + /* Copy final bytes */ + unsigned t0 = GET32( in_max + (in_max_offset - 12) ); + unsigned t1 = GET32( in_max + (in_max_offset - 8) ); + unsigned t2 = GET32( in_max + (in_max_offset - 4) ); + SET32( out, 0 ); /* End marker */ + SET32( out + 4, t0 ); + SET32( out + 8, t1 ); + SET32( out + 12, t2 ); + out += 16; + } + + return out - (byte*) out_min; +} + +int blz_pack( void const* in_min, int size, void* out, blz_pack_t* dict ) +{ + byte const* in = (byte const*) in_min; + assert( (unsigned) size <= 0x7FFFFFFF ); + if ( size >= 31 && dict ) /* 31 repeated bytes compress to 34 bytes */ + { + /* clear dict */ + byte const** dout = dict->dict; + int count; + in += 4; + for ( count = 0x1000; count--; ) + *dout++ = in; + in -= 4; + + { + int out_size = blz_pack_( in, size, out, dict ); + if ( (unsigned) out_size < (unsigned) size + 4 ) + return out_size; + } + } + SET32( out, -size ); + memcpy( (byte*) out + 4, in, size ); + + #ifndef NDEBUG + { + /* If these assertions fail, enable the appropriate byte order macro at the + top of this file */ + static byte const data [5] = { 0x12, 0x34, 0x56, 0x78, 0x9A }; + assert( GET32( data ) == BIG_LITTLE( 0x12345678, 0x78563412 ) ); + assert( GET32( data + 1 ) == BIG_LITTLE( 0x3456789A, 0x9A785634 ) ); + + { + volatile bits_t i = 0x40000000; + assert( !TOP_BIT( i ) && TOP_BIT( i << 1 ) && !TOP_BIT( i << 2 ) && !ALL_BITS( i << 2 ) ); + } + } + #endif + + return size + 4; +} + +/* Unpack */ + +int blz_size( void const* in ) +{ + int n = GET32S( in ); + if ( n < 0 ) + n = -n; + return n; +} + +int blz_unpack( void const* in_min, void* out_min ) +{ + int out_size = GET32S( in_min ); + byte const* BLZ_RESTRICT in = (byte const*) in_min + 4; + byte* out = (byte*) out_min; + + if ( out_size > 0 ) + { + byte* const out_end = out + out_size; + + /* Everything fits in registers, even on 32-bit x86 */ + unsigned data; + bits_t bits; + +refill: /* Refill bits */ + bits = GET32( in ); + in += 4; + data = GET16( in ); + if ( TOP_BIT( bits ) ) /* 48% */ + goto literal; + if ( !bits ) /* 1% */ + goto final_bytes; + +match: { /* Matching symbol */ + int off; + bits <<= 1; + off = BIG_LITTLE( data & 0x1FFF, data >> 3 ); + if ( !BIG_LITTLE( data >>= 13, data &= 0x07 ) ) /* 14% */ + goto long_match; +copy_bytes: + /*assert( data > 0 && (size_t) off <= (size_t) (out - (byte*) out_min) );*/ + + /* Copy bytes */ + off = -off; + { + byte* const end = out + 2 + data; + SET32( out, GET32( out + off ) ); + if ( data > 2 ) /* 30% */ + { + out += 4; + do + { + SET32( out, GET32( out + off ) ); + out += 4; + } + while ( out < end ); /* 55% */ + } + out = end; + } + in += 2; + + data = GET16( in ); + if ( !TOP_BIT( bits ) ) /* 60% */ + goto match; +literal: + if ( ALL_BITS( bits <<= 1 ) == 0 ) /* 7% */ + goto refill; + + /* Literal byte */ + *out++ = BIG_LITTLE( data >> 8, data ); + ++in; + + data = GET16( in ); + if ( TOP_BIT( bits ) ) /* 60% */ + goto literal; + + /* Start decoding match */ + bits <<= 1; + off = BIG_LITTLE( data & 0x1FFF, data >> 3 ); + if ( BIG_LITTLE( data >>= 13, data &= 0x07 ) != 0 ) /* 86% */ + goto copy_bytes; + + /* Longer match encodings */ +long_match: + data = BIG_LITTLE( off >> 8, off & 0x1F ); + ++in; + off = GET16( in ); + if ( data ) /* 92% */ + goto copy_bytes; + + off = GET32( in ); + data = GET32( in + 4 ); + in += 6; + goto copy_bytes; + } + +final_bytes: /* Copy final bytes */ + { + unsigned t0 = GET32( in ); + unsigned t1 = GET32( in + 4 ); + unsigned t2 = GET32( in + 8 ); + SET32( out_end - 12, t0 ); + SET32( out_end - 8, t1 ); + SET32( out_end - 4, t2 ); + } + } + else + { + memcpy( out, in, (out_size = -out_size) ); + } + return out_size; +} + +#else + +/**** Slow version ****/ + +char const blz_version [] = "slow"; + +/* Makes heavy use of pre-increment since that is more efficient on popular RISC processors */ + +/* Pack */ + +#define PRE_GOTO( off ) \ +{\ + data = (in [off + 2] << 16) | (in [off + 1] << 8);\ + data |= *(in += off);\ +} + +#define GOTO_NEXT \ + if ( !TOP_BIT( bits ) ) /* 97% */ \ + goto match;\ + goto flush; + +enum { in_max_offset = 9 }; /* 8+ byte match just before end will read this far ahead */ + +static int blz_pack_( byte const* const in_min, int size, + void* const out_min, blz_pack_t* const dict ) +{ + byte const* BLZ_RESTRICT in = in_min; + byte const* const in_max = in + size - in_max_offset; + + byte* out = (byte*) out_min; + byte* const out_max = out + size; + byte* out_bits; + + unsigned data; + bits_t bits = 2; + + out [0] = size; + out [1] = size >> 8; + out [2] = size >> 16; + out [3] = size >> 24; + out [4] = in [0]; + out [5] = in [1]; + in += 2; + out_bits = (out += 9); + +literal: /* Literal byte */ + { + int const t = *in; + PRE_GOTO( 1 ); + *++out = t; + if ( TOP_BIT( ++bits ) ) /* 3% */ + goto flush; + } + +match: /* Check for match and update dict */ + { + /* get then update dict entry and handle end of input */ + int off = (data >> 12) ^ (data & 0xFFF); + byte const* const BLZ_RESTRICT match = dict->dict [off]; + bits <<= 1; + dict->dict [off] = in; + if ( in >= in_max ) /* 1% */ + goto final_bytes; + + /* compare first 3 bytes and pre-read 4th bytes */ + data ^= match [0]; + data ^= match [1] << 8; + { + unsigned const in3 = in [3]; + unsigned const match3 = match [3]; + if ( data != ((unsigned) match [2] << 16) ) /* 42% first 3 bytes don't match */ + goto literal; + + off = in - match; + if ( in3 != match3 ) /* 53% 3 byte match */ + { + if ( off >= (1 << 13) ) /* 19% too far */ + goto literal; + + /* LLLhhhhh llllllll */ + PRE_GOTO( 3 ); + *(out += 2) = off; + out [-1] = (off >> 8) | (1 << 5); + GOTO_NEXT + } + } + + { + /* 4-7 byte match */ + int len = 2 << 5; + if ( *(in += 4) == match [4] ) /* 59% */ + { + len = 3 << 5; + if ( *++in == match [5] ) /* 66% */ + { + len = 4 << 5; + if ( *++in == match [6] ) /* 71% */ + { + len = 5 << 5; + if ( *++in == match [7] ) /* 75% */ + goto long_match; + } + } + } + PRE_GOTO( 0 ); + + /* Encode offset and length */ + if ( off < (1 << 13) ) /* 82% */ + { + /* LLLhhhhh llllllll */ + *(out += 2) = off; + out [-1] = (off >> 8) | len; + GOTO_NEXT + } + + len >>= 5; + if ( off < (1 << 16) ) /* 91% */ + { + /* 000LLLLL llllllll hhhhhhhh */ + out [1] = len; + out [2] = off; + *(out += 3) = off >> 8; + GOTO_NEXT + } + in -= 2; + in -= len; + goto literal; + } + + long_match: + { + /* 8+ byte match */ + byte const* const start = in - 4; + off = -off; + ++in; + { + int x, y; + do + { + x = *in; + y = in [off]; + if ( in >= in_max ) + break; + ++in; + } + while ( x == y ); /* 92% */ + } + + /* Encode offset and length */ + { + int len = in - start; + PRE_GOTO( -1 ); + off = -off; + + if ( len < (1 << 5) ) /* 90% */ + { + out [1] = len; + if ( off < (1 << 16) ) /* 98% */ + { + /* 000LLLLL llllllll hhhhhhhh */ + out [2] = off; + *(out += 3) = off >> 8; + GOTO_NEXT + } + + if ( len <= 9 - 2 ) /* 52% */ + { + /* TODO: lame */ + in -= 2; + in -= len; + goto literal; + } + } + + /* 8-bit 0, 32-bit offset, 32-bit length */ + out [1] = 0; + out [2] = off; + out [3] = off >> 8; + out [4] = off >> 16; + out [5] = off >> 24; + out [6] = len; + out [7] = len >> 8; + out [8] = len >> 16; + *(out += 9) = len >> 24; + GOTO_NEXT + } + } + } + + /* This is at bottom of loop to make branches here positive and branches back + negative, which helps CPUs that lack dynamic branch prediction */ + +flush: /* Flush bits */ + out += 4; + out_bits [-3] = (bits << 1) + 1; + out_bits [-2] = bits >> 7; + out_bits [-1] = bits >> 15; + out_bits [ 0] = bits >> 23; + out_bits = out; + bits = 1; + if ( out < out_max ) /* 99% */ + goto match; + return -1; /* no compression */ + +final_bytes: + /* Right-justify and flush final bits */ + { + ++bits; + if ( (bits & 0xFFFF0000) == 0 ) + bits <<= 16; + + if ( !TOP_BIT( bits ) ) + while ( !TOP_BIT( bits <<= 1 ) ) { } + bits <<= 1; + + out_bits [-3] = bits; + out_bits [-2] = bits >> 8; + out_bits [-1] = bits >> 16; + out_bits [ 0] = bits >> 24; + } + + { + byte const* const end = in_max + in_max_offset; + + /* Remaining bytes should be in narrow range */ + assert( end - in >= in_max_offset - 6 ); + assert( end - in <= in_max_offset + 1 ); + + /* End marker */ + out [1] = 0; + out [2] = 0; + out [3] = 0; + *(out += 4) = 0; + + /* Copy final bytes */ + do + { + *++out = *in++; + } + while ( in < end ); + } + + return out + 1 - (byte*) out_min; +} + +int blz_pack( void const* in_min, int size, void* out, blz_pack_t* dict ) +{ + byte const* in = (byte const*) in_min; + assert( (unsigned) size <= 0x7FFFFFFF ); + if ( size >= 21 && dict ) /* 21 repeated bytes compress to 24 bytes */ + { + /* clear dict */ + byte const** dout = dict->dict; + int count; + in += 1; /* avoid match at beginning since out is one less in unpack */ + for ( count = 0x1000; count--; ) + *dout++ = in; + in -= 1; + + { + int out_size = blz_pack_( in, size, out, dict ); + if ( (unsigned) out_size < (unsigned) size + 4 ) + return out_size; + } + } + ((byte*) out) [0] = size; + ((byte*) out) [1] = size >> 8; + ((byte*) out) [2] = size >> 16; + ((byte*) out) [3] = 0x80 | (size >> 24); + memcpy( (byte*) out + 4, in, size ); + + #ifndef NDEBUG + { + volatile bits_t i = 0x40000000; + assert( !TOP_BIT( i ) && TOP_BIT( i << 1 ) && !TOP_BIT( i << 2 ) && !ALL_BITS( i << 2 ) ); + } + #endif + + return size + 4; +} + +/* Unpack */ + +int blz_size( void const* in_ ) +{ + byte const* in = (byte const*) in_; + return in [0] | (in [1] << 8) | (in [2] << 16) | (in [3] << 24 & 0x7F); +} + +int blz_unpack( void const* in_min, void* out_min ) +{ + byte const* BLZ_RESTRICT in = (byte const*) in_min; + byte* out = (byte*) out_min; + bits_t out_size = in [0] | (in [1] << 8) | (in [2] << 16) | (in [3] << 24); + in += 4; + + if ( !TOP_BIT( out_size ) ) + { + byte* const out_max = out + out_size - 2; + unsigned data; /* usually holds next input byte, read ahead of time */ + bits_t bits; + + *out = in [0]; + *++out = in [1]; + in += 2; + +refill: { /* Refill bits */ + bits_t first = (in [3] << 24); + bits = in [0] | first | (in [1] << 8) | (in [2] << 16); + data = *(in += 4); + if ( TOP_BIT( first ) ) /* 48% */ + goto literal; + if ( !bits ) /* 1% */ + goto final_bytes; + } + +match: { /* Matching symbol */ + int len, off; + bits <<= 1; + off = *++in; + len = data >> 5; + data &= 0x1F; + if ( !len ) /* 17% */ + goto long_match; + +copy_bytes: /* Copy len+2 bytes from out-off to out */ + off |= data << 8; + { + byte const* match = out - off; + /*assert( len > 0 && (size_t) (match - (byte*) out_min) < (size_t) out_size );*/ + + /* match may = out + 1, so can't read ahead at all */ + out [1] = match [1]; + *(out += 2) = match [2]; + data = *(match += 3); + if ( --len ) /* 50% */ + { + do + { + *++out = data; + data = *++match; + } + while ( --len ); /* 80% */ + } + *++out = data; + } + + data = *++in; + if ( !TOP_BIT( bits ) ) /* 58% */ + goto match; +literal: + if ( ALL_BITS( bits <<= 1 ) == 0 ) /* 7% */ + goto refill; + + /* Literal byte */ + *++out = data; + data = *++in; + if ( TOP_BIT( bits ) ) /* 60% */ + goto literal; + + /* Start decoding match */ + bits <<= 1; + off = *++in; + len = data >> 5; + data &= 0x1F; + if ( len ) /* 82% */ + goto copy_bytes; + +long_match: /* Longer match encodings */ + len = data; + data = *++in; + if ( len ) /* 93% */ + goto copy_bytes; + + off |= in [1] << 16; + off |= in [2] << 24; + len = in [3]; + len |= in [4] << 8; + len |= in [5] << 16; + len |= *(in += 6) << 24; + goto copy_bytes; + } + +final_bytes: /* Copy final bytes */ + do + { + *++out = data; + data = *++in; + } + while ( out < out_max ); + *++out = data; + } + else + { + memcpy( out, in, out_size ^= 0x80000000u ); + } + return out_size; +} + +#endif diff --git a/libmednahawk/src/compress/blz.h b/libmednahawk/src/compress/blz.h new file mode 100644 index 0000000000..ce0eda0274 --- /dev/null +++ b/libmednahawk/src/compress/blz.h @@ -0,0 +1,40 @@ +/* Fast data compressor for keeping data compressed in memory. Data format subject +to change, so not suitable for long-term storage or transfer between computers. */ + +/* blz 0.9.1 */ +#ifndef BLZ_H +#define BLZ_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* All functions are thread-safe */ + +/* Temporary buffer type that you must allocate. Does NOT need to be cleared +before calling blz_pack(), and can be freed immediately afterwards. */ +typedef struct blz_pack_t { unsigned char const* dict [0x1000]; } blz_pack_t; + +/* Compresses data_size bytes from data_in to packed_out and returns packed size, +at most data_size + blz_worst_case. Requires data_size + blz_pack_extra bytes +allocated to packed_out. Requires that data_size be 0 to 0x7FFFFFFF (2 GB). +If temp is NULL, stores data uncompressed. */ +enum { blz_pack_extra = 320 }; +enum { blz_worst_case = 4 }; +int blz_pack( void const* data_in, int data_size, void* packed_out, blz_pack_t* temp ); + +/* Decompresses from packed_in to data_out and returns original data size. +Does NOT do any consistency checking, so corrupt data can crash program. */ +int blz_unpack( void const* packed_in, void* data_out ); + +/* Size of original data before compression */ +int blz_size( void const* packed_in ); + +/* String describing version of blz. Currently either "fast" or "slow". */ +extern char const blz_version []; + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/libmednahawk/src/compress/ioapi.c b/libmednahawk/src/compress/ioapi.c new file mode 100644 index 0000000000..82e63f9c0b --- /dev/null +++ b/libmednahawk/src/compress/ioapi.c @@ -0,0 +1,180 @@ +/* ioapi.c -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#include +#include +#include + +#include "zlib.h" +#ifndef OF +#define OF(a) a +#endif +#include "ioapi.h" + + + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +voidpf ZCALLBACK fopen_file_func OF(( + voidpf opaque, + const char* filename, + int mode)); + +uLong ZCALLBACK fread_file_func OF(( + voidpf opaque, + voidpf stream, + void* buf, + uLong size)); + +uLong ZCALLBACK fwrite_file_func OF(( + voidpf opaque, + voidpf stream, + const void* buf, + uLong size)); + +long ZCALLBACK ftell_file_func OF(( + voidpf opaque, + voidpf stream)); + +long ZCALLBACK fseek_file_func OF(( + voidpf opaque, + voidpf stream, + uLong offset, + int origin)); + +int ZCALLBACK fclose_file_func OF(( + voidpf opaque, + voidpf stream)); + +int ZCALLBACK ferror_file_func OF(( + voidpf opaque, + voidpf stream)); + + +voidpf ZCALLBACK fopen_file_func (opaque, filename, mode) + voidpf opaque; + const char* filename; + int mode; +{ + FILE* file = NULL; + const char* mode_fopen = NULL; + if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) + mode_fopen = "rb"; + else + if (mode & ZLIB_FILEFUNC_MODE_EXISTING) + mode_fopen = "r+b"; + else + if (mode & ZLIB_FILEFUNC_MODE_CREATE) + mode_fopen = "wb"; + + if ((filename!=NULL) && (mode_fopen != NULL)) + file = fopen(filename, mode_fopen); + return file; +} + + +uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) + voidpf opaque; + voidpf stream; + void* buf; + uLong size; +{ + uLong ret; + ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); + return ret; +} + + +uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) + voidpf opaque; + voidpf stream; + const void* buf; + uLong size; +{ + uLong ret; + ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); + return ret; +} + +long ZCALLBACK ftell_file_func (opaque, stream) + voidpf opaque; + voidpf stream; +{ + long ret; + ret = ftell((FILE *)stream); + return ret; +} + +long ZCALLBACK fseek_file_func (opaque, stream, offset, origin) + voidpf opaque; + voidpf stream; + uLong offset; + int origin; +{ + int fseek_origin=0; + long ret; + switch (origin) + { + case ZLIB_FILEFUNC_SEEK_CUR : + fseek_origin = SEEK_CUR; + break; + case ZLIB_FILEFUNC_SEEK_END : + fseek_origin = SEEK_END; + break; + case ZLIB_FILEFUNC_SEEK_SET : + fseek_origin = SEEK_SET; + break; + default: return -1; + } + ret = 0; + fseek((FILE *)stream, offset, fseek_origin); + return ret; +} + +int ZCALLBACK fclose_file_func (opaque, stream) + voidpf opaque; + voidpf stream; +{ + int ret; + ret = fclose((FILE *)stream); + return ret; +} + +int ZCALLBACK ferror_file_func (opaque, stream) + voidpf opaque; + voidpf stream; +{ + int ret; + ret = ferror((FILE *)stream); + return ret; +} + +void fill_fopen_filefunc (pzlib_filefunc_def) + zlib_filefunc_def* pzlib_filefunc_def; +{ + pzlib_filefunc_def->zopen_file = fopen_file_func; + pzlib_filefunc_def->zread_file = fread_file_func; + pzlib_filefunc_def->zwrite_file = fwrite_file_func; + pzlib_filefunc_def->ztell_file = ftell_file_func; + pzlib_filefunc_def->zseek_file = fseek_file_func; + pzlib_filefunc_def->zclose_file = fclose_file_func; + pzlib_filefunc_def->zerror_file = ferror_file_func; + pzlib_filefunc_def->opaque = NULL; +} diff --git a/libmednahawk/src/compress/ioapi.h b/libmednahawk/src/compress/ioapi.h new file mode 100644 index 0000000000..e73a3b2bd8 --- /dev/null +++ b/libmednahawk/src/compress/ioapi.h @@ -0,0 +1,75 @@ +/* ioapi.h -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#ifndef _ZLIBIOAPI_H +#define _ZLIBIOAPI_H + + +#define ZLIB_FILEFUNC_SEEK_CUR (1) +#define ZLIB_FILEFUNC_SEEK_END (2) +#define ZLIB_FILEFUNC_SEEK_SET (0) + +#define ZLIB_FILEFUNC_MODE_READ (1) +#define ZLIB_FILEFUNC_MODE_WRITE (2) +#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) + +#define ZLIB_FILEFUNC_MODE_EXISTING (4) +#define ZLIB_FILEFUNC_MODE_CREATE (8) + + +#ifndef ZCALLBACK + +#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) +#define ZCALLBACK CALLBACK +#else +#define ZCALLBACK +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); +typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); +typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); +typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); +typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); +typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); +typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); + +typedef struct zlib_filefunc_def_s +{ + open_file_func zopen_file; + read_file_func zread_file; + write_file_func zwrite_file; + tell_file_func ztell_file; + seek_file_func zseek_file; + close_file_func zclose_file; + testerror_file_func zerror_file; + voidpf opaque; +} zlib_filefunc_def; + + + +void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); + +#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) +#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) +#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) +#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) +#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) +#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/libmednahawk/src/compress/lzoconf.h b/libmednahawk/src/compress/lzoconf.h new file mode 100644 index 0000000000..af0aa23067 --- /dev/null +++ b/libmednahawk/src/compress/lzoconf.h @@ -0,0 +1,446 @@ +/* lzoconf.h -- configuration of the LZO data compression library + + This file is part of the LZO real-time data compression library. + + Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer + All Rights Reserved. + + The LZO library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + The LZO library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the LZO library; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Markus F.X.J. Oberhumer + + http://www.oberhumer.com/opensource/lzo/ + */ + + +#ifndef __LZOCONF_H_INCLUDED +#define __LZOCONF_H_INCLUDED 1 + +#define LZO_VERSION 0x2060 +#define LZO_VERSION_STRING "2.06" +#define LZO_VERSION_DATE "Aug 12 2011" + +/* internal Autoconf configuration file - only used when building LZO */ +#if defined(LZO_HAVE_CONFIG_H) +# include +#endif +#include +#include + + +/*********************************************************************** +// LZO requires a conforming +************************************************************************/ + +#if !defined(CHAR_BIT) || (CHAR_BIT != 8) +# error "invalid CHAR_BIT" +#endif +#if !defined(UCHAR_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX) +# error "check your compiler installation" +#endif +#if (USHRT_MAX < 1) || (UINT_MAX < 1) || (ULONG_MAX < 1) +# error "your limits.h macros are broken" +#endif + +/* get OS and architecture defines */ +#ifndef __LZODEFS_H_INCLUDED +#include "lzodefs.h" +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + + +/*********************************************************************** +// some core defines +************************************************************************/ + +#if !defined(LZO_UINT32_C) +# if (UINT_MAX < LZO_0xffffffffL) +# define LZO_UINT32_C(c) c ## UL +# else +# define LZO_UINT32_C(c) ((c) + 0U) +# endif +#endif + +/* memory checkers */ +#if !defined(__LZO_CHECKER) +# if defined(__BOUNDS_CHECKING_ON) +# define __LZO_CHECKER 1 +# elif defined(__CHECKER__) +# define __LZO_CHECKER 1 +# elif defined(__INSURE__) +# define __LZO_CHECKER 1 +# elif defined(__PURIFY__) +# define __LZO_CHECKER 1 +# endif +#endif + + +/*********************************************************************** +// integral and pointer types +************************************************************************/ + +/* lzo_uint should match size_t */ +#if !defined(LZO_UINT_MAX) +# if defined(LZO_ABI_LLP64) /* WIN64 */ +# if defined(LZO_OS_WIN64) + typedef unsigned __int64 lzo_uint; + typedef __int64 lzo_int; +# else + typedef unsigned long long lzo_uint; + typedef long long lzo_int; +# endif +# define LZO_UINT_MAX 0xffffffffffffffffull +# define LZO_INT_MAX 9223372036854775807LL +# define LZO_INT_MIN (-1LL - LZO_INT_MAX) +# elif defined(LZO_ABI_IP32L64) /* MIPS R5900 */ + typedef unsigned int lzo_uint; + typedef int lzo_int; +# define LZO_UINT_MAX UINT_MAX +# define LZO_INT_MAX INT_MAX +# define LZO_INT_MIN INT_MIN +# elif (ULONG_MAX >= LZO_0xffffffffL) + typedef unsigned long lzo_uint; + typedef long lzo_int; +# define LZO_UINT_MAX ULONG_MAX +# define LZO_INT_MAX LONG_MAX +# define LZO_INT_MIN LONG_MIN +# else +# error "lzo_uint" +# endif +#endif + +/* Integral types with 32 bits or more. */ +#if !defined(LZO_UINT32_MAX) +# if (UINT_MAX >= LZO_0xffffffffL) + typedef unsigned int lzo_uint32; + typedef int lzo_int32; +# define LZO_UINT32_MAX UINT_MAX +# define LZO_INT32_MAX INT_MAX +# define LZO_INT32_MIN INT_MIN +# elif (ULONG_MAX >= LZO_0xffffffffL) + typedef unsigned long lzo_uint32; + typedef long lzo_int32; +# define LZO_UINT32_MAX ULONG_MAX +# define LZO_INT32_MAX LONG_MAX +# define LZO_INT32_MIN LONG_MIN +# else +# error "lzo_uint32" +# endif +#endif + +/* Integral types with exactly 64 bits. */ +#if !defined(LZO_UINT64_MAX) +# if (LZO_UINT_MAX >= LZO_0xffffffffL) +# if ((((LZO_UINT_MAX) >> 31) >> 31) == 3) +# define lzo_uint64 lzo_uint +# define lzo_int64 lzo_int +# define LZO_UINT64_MAX LZO_UINT_MAX +# define LZO_INT64_MAX LZO_INT_MAX +# define LZO_INT64_MIN LZO_INT_MIN +# endif +# elif (ULONG_MAX >= LZO_0xffffffffL) +# if ((((ULONG_MAX) >> 31) >> 31) == 3) + typedef unsigned long lzo_uint64; + typedef long lzo_int64; +# define LZO_UINT64_MAX ULONG_MAX +# define LZO_INT64_MAX LONG_MAX +# define LZO_INT64_MIN LONG_MIN +# endif +# endif +#endif + +/* The larger type of lzo_uint and lzo_uint32. */ +#if (LZO_UINT_MAX >= LZO_UINT32_MAX) +# define lzo_xint lzo_uint +#else +# define lzo_xint lzo_uint32 +#endif + +/* Memory model that allows to access memory at offsets of lzo_uint. */ +#if !defined(__LZO_MMODEL) +# if (LZO_UINT_MAX <= UINT_MAX) +# define __LZO_MMODEL /*empty*/ +# elif defined(LZO_HAVE_MM_HUGE_PTR) +# define __LZO_MMODEL_HUGE 1 +# define __LZO_MMODEL __huge +# else +# define __LZO_MMODEL /*empty*/ +# endif +#endif + +/* no typedef here because of const-pointer issues */ +#define lzo_bytep unsigned char __LZO_MMODEL * +#define lzo_charp char __LZO_MMODEL * +#define lzo_voidp void __LZO_MMODEL * +#define lzo_shortp short __LZO_MMODEL * +#define lzo_ushortp unsigned short __LZO_MMODEL * +#define lzo_uint32p lzo_uint32 __LZO_MMODEL * +#define lzo_int32p lzo_int32 __LZO_MMODEL * +#if defined(LZO_UINT64_MAX) +#define lzo_uint64p lzo_uint64 __LZO_MMODEL * +#define lzo_int64p lzo_int64 __LZO_MMODEL * +#endif +#define lzo_uintp lzo_uint __LZO_MMODEL * +#define lzo_intp lzo_int __LZO_MMODEL * +#define lzo_xintp lzo_xint __LZO_MMODEL * +#define lzo_voidpp lzo_voidp __LZO_MMODEL * +#define lzo_bytepp lzo_bytep __LZO_MMODEL * +/* deprecated - use 'lzo_bytep' instead of 'lzo_byte *' */ +#define lzo_byte unsigned char __LZO_MMODEL + +typedef int lzo_bool; + + +/*********************************************************************** +// function types +************************************************************************/ + +/* name mangling */ +#if !defined(__LZO_EXTERN_C) +# ifdef __cplusplus +# define __LZO_EXTERN_C extern "C" +# else +# define __LZO_EXTERN_C extern +# endif +#endif + +/* calling convention */ +#if !defined(__LZO_CDECL) +# define __LZO_CDECL __lzo_cdecl +#endif + +/* DLL export information */ +#if !defined(__LZO_EXPORT1) +# define __LZO_EXPORT1 /*empty*/ +#endif +#if !defined(__LZO_EXPORT2) +# define __LZO_EXPORT2 /*empty*/ +#endif + +/* __cdecl calling convention for public C and assembly functions */ +#if !defined(LZO_PUBLIC) +# define LZO_PUBLIC(_rettype) __LZO_EXPORT1 _rettype __LZO_EXPORT2 __LZO_CDECL +#endif +#if !defined(LZO_EXTERN) +# define LZO_EXTERN(_rettype) __LZO_EXTERN_C LZO_PUBLIC(_rettype) +#endif +#if !defined(LZO_PRIVATE) +# define LZO_PRIVATE(_rettype) static _rettype __LZO_CDECL +#endif + +/* function types */ +typedef int +(__LZO_CDECL *lzo_compress_t) ( const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem ); + +typedef int +(__LZO_CDECL *lzo_decompress_t) ( const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem ); + +typedef int +(__LZO_CDECL *lzo_optimize_t) ( lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem ); + +typedef int +(__LZO_CDECL *lzo_compress_dict_t)(const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem, + const lzo_bytep dict, lzo_uint dict_len ); + +typedef int +(__LZO_CDECL *lzo_decompress_dict_t)(const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem, + const lzo_bytep dict, lzo_uint dict_len ); + + +/* Callback interface. Currently only the progress indicator ("nprogress") + * is used, but this may change in a future release. */ + +struct lzo_callback_t; +typedef struct lzo_callback_t lzo_callback_t; +#define lzo_callback_p lzo_callback_t __LZO_MMODEL * + +/* malloc & free function types */ +typedef lzo_voidp (__LZO_CDECL *lzo_alloc_func_t) + (lzo_callback_p self, lzo_uint items, lzo_uint size); +typedef void (__LZO_CDECL *lzo_free_func_t) + (lzo_callback_p self, lzo_voidp ptr); + +/* a progress indicator callback function */ +typedef void (__LZO_CDECL *lzo_progress_func_t) + (lzo_callback_p, lzo_uint, lzo_uint, int); + +struct lzo_callback_t +{ + /* custom allocators (set to 0 to disable) */ + lzo_alloc_func_t nalloc; /* [not used right now] */ + lzo_free_func_t nfree; /* [not used right now] */ + + /* a progress indicator callback function (set to 0 to disable) */ + lzo_progress_func_t nprogress; + + /* NOTE: the first parameter "self" of the nalloc/nfree/nprogress + * callbacks points back to this struct, so you are free to store + * some extra info in the following variables. */ + lzo_voidp user1; + lzo_xint user2; + lzo_xint user3; +}; + + +/*********************************************************************** +// error codes and prototypes +************************************************************************/ + +/* Error codes for the compression/decompression functions. Negative + * values are errors, positive values will be used for special but + * normal events. + */ +#define LZO_E_OK 0 +#define LZO_E_ERROR (-1) +#define LZO_E_OUT_OF_MEMORY (-2) /* [lzo_alloc_func_t failure] */ +#define LZO_E_NOT_COMPRESSIBLE (-3) /* [not used right now] */ +#define LZO_E_INPUT_OVERRUN (-4) +#define LZO_E_OUTPUT_OVERRUN (-5) +#define LZO_E_LOOKBEHIND_OVERRUN (-6) +#define LZO_E_EOF_NOT_FOUND (-7) +#define LZO_E_INPUT_NOT_CONSUMED (-8) +#define LZO_E_NOT_YET_IMPLEMENTED (-9) /* [not used right now] */ +#define LZO_E_INVALID_ARGUMENT (-10) + + +#ifndef lzo_sizeof_dict_t +# define lzo_sizeof_dict_t ((unsigned)sizeof(lzo_bytep)) +#endif + +/* lzo_init() should be the first function you call. + * Check the return code ! + * + * lzo_init() is a macro to allow checking that the library and the + * compiler's view of various types are consistent. + */ +#define lzo_init() __lzo_init_v2(LZO_VERSION,(int)sizeof(short),(int)sizeof(int),\ + (int)sizeof(long),(int)sizeof(lzo_uint32),(int)sizeof(lzo_uint),\ + (int)lzo_sizeof_dict_t,(int)sizeof(char *),(int)sizeof(lzo_voidp),\ + (int)sizeof(lzo_callback_t)) +LZO_EXTERN(int) __lzo_init_v2(unsigned,int,int,int,int,int,int,int,int,int); + +/* version functions (useful for shared libraries) */ +LZO_EXTERN(unsigned) lzo_version(void); +LZO_EXTERN(const char *) lzo_version_string(void); +LZO_EXTERN(const char *) lzo_version_date(void); +LZO_EXTERN(const lzo_charp) _lzo_version_string(void); +LZO_EXTERN(const lzo_charp) _lzo_version_date(void); + +/* string functions */ +LZO_EXTERN(int) + lzo_memcmp(const lzo_voidp a, const lzo_voidp b, lzo_uint len); +LZO_EXTERN(lzo_voidp) + lzo_memcpy(lzo_voidp dst, const lzo_voidp src, lzo_uint len); +LZO_EXTERN(lzo_voidp) + lzo_memmove(lzo_voidp dst, const lzo_voidp src, lzo_uint len); +LZO_EXTERN(lzo_voidp) + lzo_memset(lzo_voidp buf, int c, lzo_uint len); + +/* checksum functions */ +LZO_EXTERN(lzo_uint32) + lzo_adler32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); +LZO_EXTERN(lzo_uint32) + lzo_crc32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); +LZO_EXTERN(const lzo_uint32p) + lzo_get_crc32_table(void); + +/* misc. */ +LZO_EXTERN(int) _lzo_config_check(void); +typedef union { lzo_bytep p; lzo_uint u; } __lzo_pu_u; +typedef union { lzo_bytep p; lzo_uint32 u32; } __lzo_pu32_u; +typedef union { void *vp; lzo_bytep bp; lzo_uint u; lzo_uint32 u32; unsigned long l; } lzo_align_t; + +/* align a char pointer on a boundary that is a multiple of 'size' */ +LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp p, lzo_uint size); +#define LZO_PTR_ALIGN_UP(p,size) \ + ((p) + (lzo_uint) __lzo_align_gap((const lzo_voidp)(p),(lzo_uint)(size))) + + +/*********************************************************************** +// deprecated macros - only for backward compatibility with LZO v1.xx +************************************************************************/ + +#if defined(LZO_CFG_COMPAT) + +#define __LZOCONF_H 1 + +#if defined(LZO_ARCH_I086) +# define __LZO_i386 1 +#elif defined(LZO_ARCH_I386) +# define __LZO_i386 1 +#endif + +#if defined(LZO_OS_DOS16) +# define __LZO_DOS 1 +# define __LZO_DOS16 1 +#elif defined(LZO_OS_DOS32) +# define __LZO_DOS 1 +#elif defined(LZO_OS_WIN16) +# define __LZO_WIN 1 +# define __LZO_WIN16 1 +#elif defined(LZO_OS_WIN32) +# define __LZO_WIN 1 +#endif + +#define __LZO_CMODEL /*empty*/ +#define __LZO_DMODEL /*empty*/ +#define __LZO_ENTRY __LZO_CDECL +#define LZO_EXTERN_CDECL LZO_EXTERN +#define LZO_ALIGN LZO_PTR_ALIGN_UP + +#define lzo_compress_asm_t lzo_compress_t +#define lzo_decompress_asm_t lzo_decompress_t + +#endif /* LZO_CFG_COMPAT */ + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* already included */ + + +/* vim:set ts=4 et: */ diff --git a/libmednahawk/src/compress/lzodefs.h b/libmednahawk/src/compress/lzodefs.h new file mode 100644 index 0000000000..946fdb8de8 --- /dev/null +++ b/libmednahawk/src/compress/lzodefs.h @@ -0,0 +1,1852 @@ +/* lzodefs.h -- architecture, OS and compiler specific defines + + This file is part of the LZO real-time data compression library. + + Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer + All Rights Reserved. + + The LZO library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + The LZO library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the LZO library; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Markus F.X.J. Oberhumer + + http://www.oberhumer.com/opensource/lzo/ + */ + + +#ifndef __LZODEFS_H_INCLUDED +#define __LZODEFS_H_INCLUDED 1 + +#if defined(__CYGWIN32__) && !defined(__CYGWIN__) +# define __CYGWIN__ __CYGWIN32__ +#endif +#if defined(__IBMCPP__) && !defined(__IBMC__) +# define __IBMC__ __IBMCPP__ +#endif +#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER) +# define __INTEL_COMPILER __ICL +#endif +#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE) +# define _ALL_SOURCE 1 +#endif +#if defined(__mips__) && defined(__R5900__) +# if !defined(__LONG_MAX__) +# define __LONG_MAX__ 9223372036854775807L +# endif +#endif +#if defined(__INTEL_COMPILER) && defined(__linux__) +# pragma warning(disable: 193) +#endif +#if defined(__KEIL__) && defined(__C166__) +# pragma warning disable = 322 +#elif 0 && defined(__C251__) +# pragma warning disable = 322 +#endif +#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__) +# if (_MSC_VER >= 1300) +# pragma warning(disable: 4668) +# endif +#endif +#if 0 && defined(__WATCOMC__) +# if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060) +# pragma warning 203 9 +# endif +#endif +#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__) +# pragma option -h +#endif +#if 0 +#define LZO_0xffffL 0xfffful +#define LZO_0xffffffffL 0xfffffffful +#else +#define LZO_0xffffL 65535ul +#define LZO_0xffffffffL 4294967295ul +#endif +#if (LZO_0xffffL == LZO_0xffffffffL) +# error "your preprocessor is broken 1" +#endif +#if (16ul * 16384ul != 262144ul) +# error "your preprocessor is broken 2" +#endif +#if 0 +#if (32767 >= 4294967295ul) +# error "your preprocessor is broken 3" +#endif +#if (65535u >= 4294967295ul) +# error "your preprocessor is broken 4" +#endif +#endif +#if (UINT_MAX == LZO_0xffffL) +#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__) +# if !defined(MSDOS) +# define MSDOS 1 +# endif +# if !defined(_MSDOS) +# define _MSDOS 1 +# endif +#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX) +# if (__VERSION == 520) && (MB_LEN_MAX == 1) +# if !defined(__AZTEC_C__) +# define __AZTEC_C__ __VERSION +# endif +# if !defined(__DOS__) +# define __DOS__ 1 +# endif +# endif +#endif +#endif +#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL) +# define ptrdiff_t long +# define _PTRDIFF_T_DEFINED 1 +#endif +#if (UINT_MAX == LZO_0xffffL) +# undef __LZO_RENAME_A +# undef __LZO_RENAME_B +# if defined(__AZTEC_C__) && defined(__DOS__) +# define __LZO_RENAME_A 1 +# elif defined(_MSC_VER) && defined(MSDOS) +# if (_MSC_VER < 600) +# define __LZO_RENAME_A 1 +# elif (_MSC_VER < 700) +# define __LZO_RENAME_B 1 +# endif +# elif defined(__TSC__) && defined(__OS2__) +# define __LZO_RENAME_A 1 +# elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410) +# define __LZO_RENAME_A 1 +# elif defined(__PACIFIC__) && defined(DOS) +# if !defined(__far) +# define __far far +# endif +# if !defined(__near) +# define __near near +# endif +# endif +# if defined(__LZO_RENAME_A) +# if !defined(__cdecl) +# define __cdecl cdecl +# endif +# if !defined(__far) +# define __far far +# endif +# if !defined(__huge) +# define __huge huge +# endif +# if !defined(__near) +# define __near near +# endif +# if !defined(__pascal) +# define __pascal pascal +# endif +# if !defined(__huge) +# define __huge huge +# endif +# elif defined(__LZO_RENAME_B) +# if !defined(__cdecl) +# define __cdecl _cdecl +# endif +# if !defined(__far) +# define __far _far +# endif +# if !defined(__huge) +# define __huge _huge +# endif +# if !defined(__near) +# define __near _near +# endif +# if !defined(__pascal) +# define __pascal _pascal +# endif +# elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) +# if !defined(__cdecl) +# define __cdecl cdecl +# endif +# if !defined(__pascal) +# define __pascal pascal +# endif +# endif +# undef __LZO_RENAME_A +# undef __LZO_RENAME_B +#endif +#if (UINT_MAX == LZO_0xffffL) +#if defined(__AZTEC_C__) && defined(__DOS__) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +#elif defined(_MSC_VER) && defined(MSDOS) +# if (_MSC_VER < 600) +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +# endif +# if (_MSC_VER < 700) +# define LZO_BROKEN_INTEGRAL_PROMOTION 1 +# define LZO_BROKEN_SIZEOF 1 +# endif +#elif defined(__PACIFIC__) && defined(DOS) +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +#elif defined(__TURBOC__) && defined(__MSDOS__) +# if (__TURBOC__ < 0x0150) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +# define LZO_BROKEN_INTEGRAL_PROMOTION 1 +# endif +# if (__TURBOC__ < 0x0200) +# define LZO_BROKEN_SIZEOF 1 +# endif +# if (__TURBOC__ < 0x0400) && defined(__cplusplus) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +# endif +#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +# define LZO_BROKEN_SIZEOF 1 +#endif +#endif +#if defined(__WATCOMC__) && (__WATCOMC__ < 900) +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +#endif +#if defined(_CRAY) && defined(_CRAY1) +# define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1 +#endif +#define LZO_PP_STRINGIZE(x) #x +#define LZO_PP_MACRO_EXPAND(x) LZO_PP_STRINGIZE(x) +#define LZO_PP_CONCAT2(a,b) a ## b +#define LZO_PP_CONCAT3(a,b,c) a ## b ## c +#define LZO_PP_CONCAT4(a,b,c,d) a ## b ## c ## d +#define LZO_PP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e +#define LZO_PP_ECONCAT2(a,b) LZO_PP_CONCAT2(a,b) +#define LZO_PP_ECONCAT3(a,b,c) LZO_PP_CONCAT3(a,b,c) +#define LZO_PP_ECONCAT4(a,b,c,d) LZO_PP_CONCAT4(a,b,c,d) +#define LZO_PP_ECONCAT5(a,b,c,d,e) LZO_PP_CONCAT5(a,b,c,d,e) +#if 1 +#define LZO_CPP_STRINGIZE(x) #x +#define LZO_CPP_MACRO_EXPAND(x) LZO_CPP_STRINGIZE(x) +#define LZO_CPP_CONCAT2(a,b) a ## b +#define LZO_CPP_CONCAT3(a,b,c) a ## b ## c +#define LZO_CPP_CONCAT4(a,b,c,d) a ## b ## c ## d +#define LZO_CPP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e +#define LZO_CPP_ECONCAT2(a,b) LZO_CPP_CONCAT2(a,b) +#define LZO_CPP_ECONCAT3(a,b,c) LZO_CPP_CONCAT3(a,b,c) +#define LZO_CPP_ECONCAT4(a,b,c,d) LZO_CPP_CONCAT4(a,b,c,d) +#define LZO_CPP_ECONCAT5(a,b,c,d,e) LZO_CPP_CONCAT5(a,b,c,d,e) +#endif +#define __LZO_MASK_GEN(o,b) (((((o) << ((b)-1)) - (o)) << 1) + (o)) +#if 1 && defined(__cplusplus) +# if !defined(__STDC_CONSTANT_MACROS) +# define __STDC_CONSTANT_MACROS 1 +# endif +# if !defined(__STDC_LIMIT_MACROS) +# define __STDC_LIMIT_MACROS 1 +# endif +#endif +#if defined(__cplusplus) +# define LZO_EXTERN_C extern "C" +#else +# define LZO_EXTERN_C extern +#endif +#if !defined(__LZO_OS_OVERRIDE) +#if (LZO_OS_FREESTANDING) +# define LZO_INFO_OS "freestanding" +#elif (LZO_OS_EMBEDDED) +# define LZO_INFO_OS "embedded" +#elif 1 && defined(__IAR_SYSTEMS_ICC__) +# define LZO_OS_EMBEDDED 1 +# define LZO_INFO_OS "embedded" +#elif defined(__CYGWIN__) && defined(__GNUC__) +# define LZO_OS_CYGWIN 1 +# define LZO_INFO_OS "cygwin" +#elif defined(__EMX__) && defined(__GNUC__) +# define LZO_OS_EMX 1 +# define LZO_INFO_OS "emx" +#elif defined(__BEOS__) +# define LZO_OS_BEOS 1 +# define LZO_INFO_OS "beos" +#elif defined(__Lynx__) +# define LZO_OS_LYNXOS 1 +# define LZO_INFO_OS "lynxos" +#elif defined(__OS400__) +# define LZO_OS_OS400 1 +# define LZO_INFO_OS "os400" +#elif defined(__QNX__) +# define LZO_OS_QNX 1 +# define LZO_INFO_OS "qnx" +#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460) +# define LZO_OS_DOS32 1 +# define LZO_INFO_OS "dos32" +#elif defined(__BORLANDC__) && defined(__DPMI16__) +# define LZO_OS_DOS16 1 +# define LZO_INFO_OS "dos16" +#elif defined(__ZTC__) && defined(DOS386) +# define LZO_OS_DOS32 1 +# define LZO_INFO_OS "dos32" +#elif defined(__OS2__) || defined(__OS2V2__) +# if (UINT_MAX == LZO_0xffffL) +# define LZO_OS_OS216 1 +# define LZO_INFO_OS "os216" +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_OS_OS2 1 +# define LZO_INFO_OS "os2" +# else +# error "check your limits.h header" +# endif +#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64) +# define LZO_OS_WIN64 1 +# define LZO_INFO_OS "win64" +#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +#elif defined(__MWERKS__) && defined(__INTEL__) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows) +# if (UINT_MAX == LZO_0xffffL) +# define LZO_OS_WIN16 1 +# define LZO_INFO_OS "win16" +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +# else +# error "check your limits.h header" +# endif +#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS)) +# if (UINT_MAX == LZO_0xffffL) +# define LZO_OS_DOS16 1 +# define LZO_INFO_OS "dos16" +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_OS_DOS32 1 +# define LZO_INFO_OS "dos32" +# else +# error "check your limits.h header" +# endif +#elif defined(__WATCOMC__) +# if defined(__NT__) && (UINT_MAX == LZO_0xffffL) +# define LZO_OS_DOS16 1 +# define LZO_INFO_OS "dos16" +# elif defined(__NT__) && (__WATCOMC__ < 1100) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +# elif defined(__linux__) || defined(__LINUX__) +# define LZO_OS_POSIX 1 +# define LZO_INFO_OS "posix" +# else +# error "please specify a target using the -bt compiler option" +# endif +#elif defined(__palmos__) +# define LZO_OS_PALMOS 1 +# define LZO_INFO_OS "palmos" +#elif defined(__TOS__) || defined(__atarist__) +# define LZO_OS_TOS 1 +# define LZO_INFO_OS "tos" +#elif defined(macintosh) && !defined(__ppc__) +# define LZO_OS_MACCLASSIC 1 +# define LZO_INFO_OS "macclassic" +#elif defined(__VMS) +# define LZO_OS_VMS 1 +# define LZO_INFO_OS "vms" +#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) +# define LZO_OS_CONSOLE 1 +# define LZO_OS_CONSOLE_PS2 1 +# define LZO_INFO_OS "console" +# define LZO_INFO_OS_CONSOLE "ps2" +#elif (defined(__mips__) && defined(__psp__)) +# define LZO_OS_CONSOLE 1 +# define LZO_OS_CONSOLE_PSP 1 +# define LZO_INFO_OS "console" +# define LZO_INFO_OS_CONSOLE "psp" +#else +# define LZO_OS_POSIX 1 +# define LZO_INFO_OS "posix" +#endif +#if (LZO_OS_POSIX) +# if defined(_AIX) || defined(__AIX__) || defined(__aix__) +# define LZO_OS_POSIX_AIX 1 +# define LZO_INFO_OS_POSIX "aix" +# elif defined(__FreeBSD__) +# define LZO_OS_POSIX_FREEBSD 1 +# define LZO_INFO_OS_POSIX "freebsd" +# elif defined(__hpux__) || defined(__hpux) +# define LZO_OS_POSIX_HPUX 1 +# define LZO_INFO_OS_POSIX "hpux" +# elif defined(__INTERIX) +# define LZO_OS_POSIX_INTERIX 1 +# define LZO_INFO_OS_POSIX "interix" +# elif defined(__IRIX__) || defined(__irix__) +# define LZO_OS_POSIX_IRIX 1 +# define LZO_INFO_OS_POSIX "irix" +# elif defined(__linux__) || defined(__linux) || defined(__LINUX__) +# define LZO_OS_POSIX_LINUX 1 +# define LZO_INFO_OS_POSIX "linux" +# elif defined(__APPLE__) || defined(__MACOS__) +# define LZO_OS_POSIX_MACOSX 1 +# define LZO_INFO_OS_POSIX "macosx" +# elif defined(__minix__) || defined(__minix) +# define LZO_OS_POSIX_MINIX 1 +# define LZO_INFO_OS_POSIX "minix" +# elif defined(__NetBSD__) +# define LZO_OS_POSIX_NETBSD 1 +# define LZO_INFO_OS_POSIX "netbsd" +# elif defined(__OpenBSD__) +# define LZO_OS_POSIX_OPENBSD 1 +# define LZO_INFO_OS_POSIX "openbsd" +# elif defined(__osf__) +# define LZO_OS_POSIX_OSF 1 +# define LZO_INFO_OS_POSIX "osf" +# elif defined(__solaris__) || defined(__sun) +# if defined(__SVR4) || defined(__svr4__) +# define LZO_OS_POSIX_SOLARIS 1 +# define LZO_INFO_OS_POSIX "solaris" +# else +# define LZO_OS_POSIX_SUNOS 1 +# define LZO_INFO_OS_POSIX "sunos" +# endif +# elif defined(__ultrix__) || defined(__ultrix) +# define LZO_OS_POSIX_ULTRIX 1 +# define LZO_INFO_OS_POSIX "ultrix" +# elif defined(_UNICOS) +# define LZO_OS_POSIX_UNICOS 1 +# define LZO_INFO_OS_POSIX "unicos" +# else +# define LZO_OS_POSIX_UNKNOWN 1 +# define LZO_INFO_OS_POSIX "unknown" +# endif +#endif +#endif +#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +# if (UINT_MAX != LZO_0xffffL) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64) +# if (UINT_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__) +# define LZO_CC_CILLY 1 +# define LZO_INFO_CC "Cilly" +# if defined(__CILLY__) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CILLY__) +# else +# define LZO_INFO_CCVER "unknown" +# endif +#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__) +# define LZO_CC_SDCC 1 +# define LZO_INFO_CC "sdcc" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(SDCC) +#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__) +# define LZO_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__) +# define LZO_INFO_CC "Pathscale C" +# define LZO_INFO_CCVER __PATHSCALE__ +#elif defined(__INTEL_COMPILER) +# define LZO_CC_INTELC 1 +# define LZO_INFO_CC "Intel C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__INTEL_COMPILER) +# if defined(_WIN32) || defined(_WIN64) +# define LZO_CC_SYNTAX_MSC 1 +# else +# define LZO_CC_SYNTAX_GNUC 1 +# endif +#elif defined(__POCC__) && defined(_WIN32) +# define LZO_CC_PELLESC 1 +# define LZO_INFO_CC "Pelles C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__POCC__) +#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) +# if defined(__GNUC_PATCHLEVEL__) +# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) +# else +# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) +# endif +# if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__) +# define LZO_CC_CLANG_CLANG (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__) +# else +# define LZO_CC_CLANG_CLANG 0x010000L +# endif +# define LZO_CC_CLANG LZO_CC_CLANG_GNUC +# define LZO_INFO_CC "clang" +# define LZO_INFO_CCVER __VERSION__ +#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) +# if defined(__GNUC_PATCHLEVEL__) +# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) +# else +# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) +# endif +# define LZO_CC_LLVM LZO_CC_LLVM_GNUC +# define LZO_INFO_CC "llvm-gcc" +# define LZO_INFO_CCVER __VERSION__ +#elif defined(__GNUC__) && defined(__VERSION__) +# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) +# elif defined(__GNUC_MINOR__) +# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) +# else +# define LZO_CC_GNUC (__GNUC__ * 0x10000L) +# endif +# define LZO_INFO_CC "gcc" +# define LZO_INFO_CCVER __VERSION__ +#elif defined(__ACK__) && defined(_ACK) +# define LZO_CC_ACK 1 +# define LZO_INFO_CC "Amsterdam Compiler Kit C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__AZTEC_C__) +# define LZO_CC_AZTECC 1 +# define LZO_INFO_CC "Aztec C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__AZTEC_C__) +#elif defined(__CODEGEARC__) +# define LZO_CC_CODEGEARC 1 +# define LZO_INFO_CC "CodeGear C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CODEGEARC__) +#elif defined(__BORLANDC__) +# define LZO_CC_BORLANDC 1 +# define LZO_INFO_CC "Borland C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__BORLANDC__) +#elif defined(_CRAYC) && defined(_RELEASE) +# define LZO_CC_CRAYC 1 +# define LZO_INFO_CC "Cray C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_RELEASE) +#elif defined(__DMC__) && defined(__SC__) +# define LZO_CC_DMC 1 +# define LZO_INFO_CC "Digital Mars C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DMC__) +#elif defined(__DECC) +# define LZO_CC_DECC 1 +# define LZO_INFO_CC "DEC C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DECC) +#elif defined(__HIGHC__) +# define LZO_CC_HIGHC 1 +# define LZO_INFO_CC "MetaWare High C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__IAR_SYSTEMS_ICC__) +# define LZO_CC_IARC 1 +# define LZO_INFO_CC "IAR C" +# if defined(__VER__) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__VER__) +# else +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(__IBMC__) +# define LZO_CC_IBMC 1 +# define LZO_INFO_CC "IBM C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__IBMC__) +#elif defined(__KEIL__) && defined(__C166__) +# define LZO_CC_KEILC 1 +# define LZO_INFO_CC "Keil C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__C166__) +#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL) +# define LZO_CC_LCCWIN32 1 +# define LZO_INFO_CC "lcc-win32" +# define LZO_INFO_CCVER "unknown" +#elif defined(__LCC__) +# define LZO_CC_LCC 1 +# define LZO_INFO_CC "lcc" +# if defined(__LCC_VERSION__) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__LCC_VERSION__) +# else +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(_MSC_VER) +# define LZO_CC_MSC 1 +# define LZO_INFO_CC "Microsoft C" +# if defined(_MSC_FULL_VER) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER) +# else +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) +# endif +#elif defined(__MWERKS__) +# define LZO_CC_MWERKS 1 +# define LZO_INFO_CC "Metrowerks C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__MWERKS__) +#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386) +# define LZO_CC_NDPC 1 +# define LZO_INFO_CC "Microway NDP C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__PACIFIC__) +# define LZO_CC_PACIFICC 1 +# define LZO_INFO_CC "Pacific C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PACIFIC__) +#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__)) +# define LZO_CC_PGI 1 +# define LZO_INFO_CC "Portland Group PGI C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__PUREC__) && defined(__TOS__) +# define LZO_CC_PUREC 1 +# define LZO_INFO_CC "Pure C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PUREC__) +#elif defined(__SC__) && defined(__ZTC__) +# define LZO_CC_SYMANTECC 1 +# define LZO_INFO_CC "Symantec C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SC__) +#elif defined(__SUNPRO_C) +# define LZO_INFO_CC "SunPro C" +# if ((__SUNPRO_C)+0 > 0) +# define LZO_CC_SUNPROC __SUNPRO_C +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_C) +# else +# define LZO_CC_SUNPROC 1 +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(__SUNPRO_CC) +# define LZO_INFO_CC "SunPro C" +# if ((__SUNPRO_CC)+0 > 0) +# define LZO_CC_SUNPROC __SUNPRO_CC +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_CC) +# else +# define LZO_CC_SUNPROC 1 +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(__TINYC__) +# define LZO_CC_TINYC 1 +# define LZO_INFO_CC "Tiny C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TINYC__) +#elif defined(__TSC__) +# define LZO_CC_TOPSPEEDC 1 +# define LZO_INFO_CC "TopSpeed C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TSC__) +#elif defined(__WATCOMC__) +# define LZO_CC_WATCOMC 1 +# define LZO_INFO_CC "Watcom C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__WATCOMC__) +#elif defined(__TURBOC__) +# define LZO_CC_TURBOC 1 +# define LZO_INFO_CC "Turbo C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TURBOC__) +#elif defined(__ZTC__) +# define LZO_CC_ZORTECHC 1 +# define LZO_INFO_CC "Zortech C" +# if (__ZTC__ == 0x310) +# define LZO_INFO_CCVER "0x310" +# else +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__ZTC__) +# endif +#else +# define LZO_CC_UNKNOWN 1 +# define LZO_INFO_CC "unknown" +# define LZO_INFO_CCVER "unknown" +#endif +#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER) +# error "LZO_CC_MSC: _MSC_FULL_VER is not defined" +#endif +#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY) +# if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY) +# if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E) +# define LZO_ARCH_CRAY_MPP 1 +# elif defined(_CRAY1) +# define LZO_ARCH_CRAY_PVP 1 +# endif +# endif +#endif +#if !defined(__LZO_ARCH_OVERRIDE) +#if (LZO_ARCH_GENERIC) +# define LZO_INFO_ARCH "generic" +#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +# define LZO_ARCH_I086 1 +# define LZO_ARCH_IA16 1 +# define LZO_INFO_ARCH "i086" +#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) +# define LZO_ARCH_ALPHA 1 +# define LZO_INFO_ARCH "alpha" +#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E)) +# define LZO_ARCH_ALPHA 1 +# define LZO_INFO_ARCH "alpha" +#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64) +# define LZO_ARCH_AMD64 1 +# define LZO_INFO_ARCH "amd64" +#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB)) +# define LZO_ARCH_ARM 1 +# define LZO_ARCH_ARM_THUMB 1 +# define LZO_INFO_ARCH "arm_thumb" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__) +# define LZO_ARCH_ARM 1 +# if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1) +# define LZO_ARCH_ARM_THUMB 1 +# define LZO_INFO_ARCH "arm_thumb" +# elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2) +# define LZO_INFO_ARCH "arm" +# else +# define LZO_INFO_ARCH "arm" +# endif +#elif defined(__arm__) || defined(_M_ARM) +# define LZO_ARCH_ARM 1 +# define LZO_INFO_ARCH "arm" +#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__) +# define LZO_ARCH_AVR 1 +# define LZO_INFO_ARCH "avr" +#elif defined(__avr32__) || defined(__AVR32__) +# define LZO_ARCH_AVR32 1 +# define LZO_INFO_ARCH "avr32" +#elif defined(__bfin__) +# define LZO_ARCH_BLACKFIN 1 +# define LZO_INFO_ARCH "blackfin" +#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__) +# define LZO_ARCH_C166 1 +# define LZO_INFO_ARCH "c166" +#elif defined(__cris__) +# define LZO_ARCH_CRIS 1 +# define LZO_INFO_ARCH "cris" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__) +# define LZO_ARCH_EZ80 1 +# define LZO_INFO_ARCH "ez80" +#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) +# define LZO_ARCH_H8300 1 +# define LZO_INFO_ARCH "h8300" +#elif defined(__hppa__) || defined(__hppa) +# define LZO_ARCH_HPPA 1 +# define LZO_INFO_ARCH "hppa" +#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386) +# define LZO_ARCH_I386 1 +# define LZO_ARCH_IA32 1 +# define LZO_INFO_ARCH "i386" +#elif (LZO_CC_ZORTECHC && defined(__I86__)) +# define LZO_ARCH_I386 1 +# define LZO_ARCH_IA32 1 +# define LZO_INFO_ARCH "i386" +#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386) +# define LZO_ARCH_I386 1 +# define LZO_ARCH_IA32 1 +# define LZO_INFO_ARCH "i386" +#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64) +# define LZO_ARCH_IA64 1 +# define LZO_INFO_ARCH "ia64" +#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__) +# define LZO_ARCH_M16C 1 +# define LZO_INFO_ARCH "m16c" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__) +# define LZO_ARCH_M16C 1 +# define LZO_INFO_ARCH "m16c" +#elif defined(__m32r__) +# define LZO_ARCH_M32R 1 +# define LZO_INFO_ARCH "m32r" +#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K) +# define LZO_ARCH_M68K 1 +# define LZO_INFO_ARCH "m68k" +#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__) +# define LZO_ARCH_MCS251 1 +# define LZO_INFO_ARCH "mcs251" +#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__) +# define LZO_ARCH_MCS51 1 +# define LZO_INFO_ARCH "mcs51" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__) +# define LZO_ARCH_MCS51 1 +# define LZO_INFO_ARCH "mcs51" +#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000) +# define LZO_ARCH_MIPS 1 +# define LZO_INFO_ARCH "mips" +#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__) +# define LZO_ARCH_MSP430 1 +# define LZO_INFO_ARCH "msp430" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__) +# define LZO_ARCH_MSP430 1 +# define LZO_INFO_ARCH "msp430" +#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR) +# define LZO_ARCH_POWERPC 1 +# define LZO_INFO_ARCH "powerpc" +#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x) +# define LZO_ARCH_S390 1 +# define LZO_INFO_ARCH "s390" +#elif defined(__sh__) || defined(_M_SH) +# define LZO_ARCH_SH 1 +# define LZO_INFO_ARCH "sh" +#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8) +# define LZO_ARCH_SPARC 1 +# define LZO_INFO_ARCH "sparc" +#elif defined(__SPU__) +# define LZO_ARCH_SPU 1 +# define LZO_INFO_ARCH "spu" +#elif (UINT_MAX == LZO_0xffffL) && defined(__z80) +# define LZO_ARCH_Z80 1 +# define LZO_INFO_ARCH "z80" +#elif (LZO_ARCH_CRAY_PVP) +# if defined(_CRAYSV1) +# define LZO_ARCH_CRAY_SV1 1 +# define LZO_INFO_ARCH "cray_sv1" +# elif (_ADDR64) +# define LZO_ARCH_CRAY_T90 1 +# define LZO_INFO_ARCH "cray_t90" +# elif (_ADDR32) +# define LZO_ARCH_CRAY_YMP 1 +# define LZO_INFO_ARCH "cray_ymp" +# else +# define LZO_ARCH_CRAY_XMP 1 +# define LZO_INFO_ARCH "cray_xmp" +# endif +#else +# define LZO_ARCH_UNKNOWN 1 +# define LZO_INFO_ARCH "unknown" +#endif +#endif +#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2) +# error "FIXME - missing define for CPU architecture" +#endif +#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32) +# error "FIXME - missing WIN32 define for CPU architecture" +#endif +#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64) +# error "FIXME - missing WIN64 define for CPU architecture" +#endif +#if (LZO_OS_OS216 || LZO_OS_WIN16) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#elif 1 && (LZO_OS_DOS16 && defined(BLX286)) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#elif 1 && (LZO_OS_DOS16 && defined(DOSX286)) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__)) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#endif +#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM) +# error "this should not happen" +#endif +#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086) +# error "this should not happen" +#endif +#if (LZO_ARCH_I086) +# if (UINT_MAX != LZO_0xffffL) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if (LZO_ARCH_I386) +# if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__) +# error "this should not happen" +# endif +# if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if !defined(__LZO_MM_OVERRIDE) +#if (LZO_ARCH_I086) +#if (UINT_MAX != LZO_0xffffL) +# error "this should not happen" +#endif +#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM) +# define LZO_MM_TINY 1 +#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM) +# define LZO_MM_HUGE 1 +#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL) +# define LZO_MM_SMALL 1 +#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM) +# define LZO_MM_MEDIUM 1 +#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM) +# define LZO_MM_COMPACT 1 +#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL) +# define LZO_MM_LARGE 1 +#elif (LZO_CC_AZTECC) +# if defined(_LARGE_CODE) && defined(_LARGE_DATA) +# define LZO_MM_LARGE 1 +# elif defined(_LARGE_CODE) +# define LZO_MM_MEDIUM 1 +# elif defined(_LARGE_DATA) +# define LZO_MM_COMPACT 1 +# else +# define LZO_MM_SMALL 1 +# endif +#elif (LZO_CC_ZORTECHC && defined(__VCM__)) +# define LZO_MM_LARGE 1 +#else +# error "unknown memory model" +#endif +#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +#define LZO_HAVE_MM_HUGE_PTR 1 +#define LZO_HAVE_MM_HUGE_ARRAY 1 +#if (LZO_MM_TINY) +# undef LZO_HAVE_MM_HUGE_ARRAY +#endif +#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC) +# undef LZO_HAVE_MM_HUGE_PTR +# undef LZO_HAVE_MM_HUGE_ARRAY +#elif (LZO_CC_DMC || LZO_CC_SYMANTECC) +# undef LZO_HAVE_MM_HUGE_ARRAY +#elif (LZO_CC_MSC && defined(_QC)) +# undef LZO_HAVE_MM_HUGE_ARRAY +# if (_MSC_VER < 600) +# undef LZO_HAVE_MM_HUGE_PTR +# endif +#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295)) +# undef LZO_HAVE_MM_HUGE_ARRAY +#endif +#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR) +# if (LZO_OS_DOS16) +# error "this should not happen" +# elif (LZO_CC_ZORTECHC) +# else +# error "this should not happen" +# endif +#endif +#ifdef __cplusplus +extern "C" { +#endif +#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200)) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295)) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16) +# define LZO_MM_AHSHIFT 12 +#elif (LZO_CC_WATCOMC) + extern unsigned char _HShift; +# define LZO_MM_AHSHIFT ((unsigned) _HShift) +#else +# error "FIXME - implement LZO_MM_AHSHIFT" +#endif +#ifdef __cplusplus +} +#endif +#endif +#elif (LZO_ARCH_C166) +#if !defined(__MODEL__) +# error "FIXME - C166 __MODEL__" +#elif ((__MODEL__) == 0) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 1) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 2) +# define LZO_MM_LARGE 1 +#elif ((__MODEL__) == 3) +# define LZO_MM_TINY 1 +#elif ((__MODEL__) == 4) +# define LZO_MM_XTINY 1 +#elif ((__MODEL__) == 5) +# define LZO_MM_XSMALL 1 +#else +# error "FIXME - C166 __MODEL__" +#endif +#elif (LZO_ARCH_MCS251) +#if !defined(__MODEL__) +# error "FIXME - MCS251 __MODEL__" +#elif ((__MODEL__) == 0) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 2) +# define LZO_MM_LARGE 1 +#elif ((__MODEL__) == 3) +# define LZO_MM_TINY 1 +#elif ((__MODEL__) == 4) +# define LZO_MM_XTINY 1 +#elif ((__MODEL__) == 5) +# define LZO_MM_XSMALL 1 +#else +# error "FIXME - MCS251 __MODEL__" +#endif +#elif (LZO_ARCH_MCS51) +#if !defined(__MODEL__) +# error "FIXME - MCS51 __MODEL__" +#elif ((__MODEL__) == 1) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 2) +# define LZO_MM_LARGE 1 +#elif ((__MODEL__) == 3) +# define LZO_MM_TINY 1 +#elif ((__MODEL__) == 4) +# define LZO_MM_XTINY 1 +#elif ((__MODEL__) == 5) +# define LZO_MM_XSMALL 1 +#else +# error "FIXME - MCS51 __MODEL__" +#endif +#elif (LZO_ARCH_CRAY_PVP) +# define LZO_MM_PVP 1 +#else +# define LZO_MM_FLAT 1 +#endif +#if (LZO_MM_COMPACT) +# define LZO_INFO_MM "compact" +#elif (LZO_MM_FLAT) +# define LZO_INFO_MM "flat" +#elif (LZO_MM_HUGE) +# define LZO_INFO_MM "huge" +#elif (LZO_MM_LARGE) +# define LZO_INFO_MM "large" +#elif (LZO_MM_MEDIUM) +# define LZO_INFO_MM "medium" +#elif (LZO_MM_PVP) +# define LZO_INFO_MM "pvp" +#elif (LZO_MM_SMALL) +# define LZO_INFO_MM "small" +#elif (LZO_MM_TINY) +# define LZO_INFO_MM "tiny" +#else +# error "unknown memory model" +#endif +#endif +#if defined(SIZEOF_SHORT) +# define LZO_SIZEOF_SHORT (SIZEOF_SHORT) +#endif +#if defined(SIZEOF_INT) +# define LZO_SIZEOF_INT (SIZEOF_INT) +#endif +#if defined(SIZEOF_LONG) +# define LZO_SIZEOF_LONG (SIZEOF_LONG) +#endif +#if defined(SIZEOF_LONG_LONG) +# define LZO_SIZEOF_LONG_LONG (SIZEOF_LONG_LONG) +#endif +#if defined(SIZEOF___INT16) +# define LZO_SIZEOF___INT16 (SIZEOF___INT16) +#endif +#if defined(SIZEOF___INT32) +# define LZO_SIZEOF___INT32 (SIZEOF___INT32) +#endif +#if defined(SIZEOF___INT64) +# define LZO_SIZEOF___INT64 (SIZEOF___INT64) +#endif +#if defined(SIZEOF_VOID_P) +# define LZO_SIZEOF_VOID_P (SIZEOF_VOID_P) +#endif +#if defined(SIZEOF_SIZE_T) +# define LZO_SIZEOF_SIZE_T (SIZEOF_SIZE_T) +#endif +#if defined(SIZEOF_PTRDIFF_T) +# define LZO_SIZEOF_PTRDIFF_T (SIZEOF_PTRDIFF_T) +#endif +#define __LZO_LSR(x,b) (((x)+0ul) >> (b)) +#if !defined(LZO_SIZEOF_SHORT) +# if (LZO_ARCH_CRAY_PVP) +# define LZO_SIZEOF_SHORT 8 +# elif (USHRT_MAX == LZO_0xffffL) +# define LZO_SIZEOF_SHORT 2 +# elif (__LZO_LSR(USHRT_MAX,7) == 1) +# define LZO_SIZEOF_SHORT 1 +# elif (__LZO_LSR(USHRT_MAX,15) == 1) +# define LZO_SIZEOF_SHORT 2 +# elif (__LZO_LSR(USHRT_MAX,31) == 1) +# define LZO_SIZEOF_SHORT 4 +# elif (__LZO_LSR(USHRT_MAX,63) == 1) +# define LZO_SIZEOF_SHORT 8 +# elif (__LZO_LSR(USHRT_MAX,127) == 1) +# define LZO_SIZEOF_SHORT 16 +# else +# error "LZO_SIZEOF_SHORT" +# endif +#endif +#if !defined(LZO_SIZEOF_INT) +# if (LZO_ARCH_CRAY_PVP) +# define LZO_SIZEOF_INT 8 +# elif (UINT_MAX == LZO_0xffffL) +# define LZO_SIZEOF_INT 2 +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_SIZEOF_INT 4 +# elif (__LZO_LSR(UINT_MAX,7) == 1) +# define LZO_SIZEOF_INT 1 +# elif (__LZO_LSR(UINT_MAX,15) == 1) +# define LZO_SIZEOF_INT 2 +# elif (__LZO_LSR(UINT_MAX,31) == 1) +# define LZO_SIZEOF_INT 4 +# elif (__LZO_LSR(UINT_MAX,63) == 1) +# define LZO_SIZEOF_INT 8 +# elif (__LZO_LSR(UINT_MAX,127) == 1) +# define LZO_SIZEOF_INT 16 +# else +# error "LZO_SIZEOF_INT" +# endif +#endif +#if !defined(LZO_SIZEOF_LONG) +# if (ULONG_MAX == LZO_0xffffffffL) +# define LZO_SIZEOF_LONG 4 +# elif (__LZO_LSR(ULONG_MAX,7) == 1) +# define LZO_SIZEOF_LONG 1 +# elif (__LZO_LSR(ULONG_MAX,15) == 1) +# define LZO_SIZEOF_LONG 2 +# elif (__LZO_LSR(ULONG_MAX,31) == 1) +# define LZO_SIZEOF_LONG 4 +# elif (__LZO_LSR(ULONG_MAX,63) == 1) +# define LZO_SIZEOF_LONG 8 +# elif (__LZO_LSR(ULONG_MAX,127) == 1) +# define LZO_SIZEOF_LONG 16 +# else +# error "LZO_SIZEOF_LONG" +# endif +#endif +#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) +#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) +# if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__) +# if (LZO_CC_GNUC >= 0x030300ul) +# if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0) +# define LZO_SIZEOF_LONG_LONG LZO_SIZEOF_LONG +# elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1) +# define LZO_SIZEOF_LONG_LONG 4 +# endif +# endif +# endif +#endif +#endif +#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) +#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) +#if (LZO_ARCH_I086 && LZO_CC_DMC) +#elif (LZO_CC_CILLY) && defined(__GNUC__) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define LZO_SIZEOF_LONG_LONG 8 +#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400)) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_OS_WIN64 || defined(_WIN64)) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_ARCH_I386 && (LZO_CC_DMC)) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700))) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__))) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC)) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC)) +# define LZO_SIZEOF___INT64 8 +#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC)) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520))) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100))) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64)) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2) +#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +# define LZO_SIZEOF_LONG_LONG 8 +#endif +#endif +#endif +#if defined(__cplusplus) && (LZO_CC_GNUC) +# if (LZO_CC_GNUC < 0x020800ul) +# undef LZO_SIZEOF_LONG_LONG +# endif +#endif +#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG) +# undef LZO_SIZEOF_LONG_LONG +#endif +#if !defined(LZO_SIZEOF_VOID_P) +#if (LZO_ARCH_I086) +# define __LZO_WORDSIZE 2 +# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) +# define LZO_SIZEOF_VOID_P 2 +# elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) +# define LZO_SIZEOF_VOID_P 4 +# else +# error "LZO_MM" +# endif +#elif (LZO_ARCH_AVR || LZO_ARCH_Z80) +# define __LZO_WORDSIZE 1 +# define LZO_SIZEOF_VOID_P 2 +#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430) +# define LZO_SIZEOF_VOID_P 2 +#elif (LZO_ARCH_H8300) +# if defined(__NORMAL_MODE__) +# define __LZO_WORDSIZE 4 +# define LZO_SIZEOF_VOID_P 2 +# elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) +# define __LZO_WORDSIZE 4 +# define LZO_SIZEOF_VOID_P 4 +# else +# define __LZO_WORDSIZE 2 +# define LZO_SIZEOF_VOID_P 2 +# endif +# if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4) +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_INT +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_INT +# endif +#elif (LZO_ARCH_M16C) +# define __LZO_WORDSIZE 2 +# if defined(__m32c_cpu__) || defined(__m32cm_cpu__) +# define LZO_SIZEOF_VOID_P 4 +# else +# define LZO_SIZEOF_VOID_P 2 +# endif +#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) +# define __LZO_WORDSIZE 8 +# define LZO_SIZEOF_VOID_P 4 +#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64) +# define __LZO_WORDSIZE 8 +# define LZO_SIZEOF_VOID_P 8 +#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) +# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG +#elif (LZO_OS_OS400 || defined(__OS400__)) +# define __LZO_WORDSIZE LZO_SIZEOF_LONG +# define LZO_SIZEOF_VOID_P 16 +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG +#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) +# define LZO_SIZEOF_VOID_P 8 +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG +#elif (LZO_ARCH_SPU) +# if 0 +# define __LZO_WORDSIZE 16 +# endif +# define LZO_SIZEOF_VOID_P 4 +#else +# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG +#endif +#endif +#if !defined(LZO_WORDSIZE) +# if defined(__LZO_WORDSIZE) +# define LZO_WORDSIZE __LZO_WORDSIZE +# else +# define LZO_WORDSIZE LZO_SIZEOF_VOID_P +# endif +#endif +#if !defined(LZO_SIZEOF_SIZE_T) +#if (LZO_ARCH_I086 || LZO_ARCH_M16C) +# define LZO_SIZEOF_SIZE_T 2 +#else +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_VOID_P +#endif +#endif +#if !defined(LZO_SIZEOF_PTRDIFF_T) +#if (LZO_ARCH_I086) +# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE) +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_VOID_P +# elif (LZO_MM_COMPACT || LZO_MM_LARGE) +# if (LZO_CC_BORLANDC || LZO_CC_TURBOC) +# define LZO_SIZEOF_PTRDIFF_T 4 +# else +# define LZO_SIZEOF_PTRDIFF_T 2 +# endif +# else +# error "LZO_MM" +# endif +#else +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_SIZE_T +#endif +#endif +#if (LZO_ABI_NEUTRAL_ENDIAN) +# undef LZO_ABI_BIG_ENDIAN +# undef LZO_ABI_LITTLE_ENDIAN +#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN) +#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP) +# define LZO_ABI_BIG_ENDIAN 1 +#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__) +# if (__LITTLE_ENDIAN__ == 1) +# define LZO_ABI_LITTLE_ENDIAN 1 +# else +# define LZO_ABI_BIG_ENDIAN 1 +# endif +#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__) +# define LZO_ABI_LITTLE_ENDIAN 1 +#endif +#endif +#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN) +# error "this should not happen" +#endif +#if (LZO_ABI_BIG_ENDIAN) +# define LZO_INFO_ABI_ENDIAN "be" +#elif (LZO_ABI_LITTLE_ENDIAN) +# define LZO_INFO_ABI_ENDIAN "le" +#elif (LZO_ABI_NEUTRAL_ENDIAN) +# define LZO_INFO_ABI_ENDIAN "neutral" +#endif +#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) +# define LZO_ABI_I8LP16 1 +# define LZO_INFO_ABI_PM "i8lp16" +#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) +# define LZO_ABI_ILP16 1 +# define LZO_INFO_ABI_PM "ilp16" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4) +# define LZO_ABI_ILP32 1 +# define LZO_INFO_ABI_PM "ilp32" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8) +# define LZO_ABI_LLP64 1 +# define LZO_INFO_ABI_PM "llp64" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) +# define LZO_ABI_LP64 1 +# define LZO_INFO_ABI_PM "lp64" +#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) +# define LZO_ABI_ILP64 1 +# define LZO_INFO_ABI_PM "ilp64" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4) +# define LZO_ABI_IP32L64 1 +# define LZO_INFO_ABI_PM "ip32l64" +#endif +#if !defined(__LZO_LIBC_OVERRIDE) +#if (LZO_LIBC_NAKED) +# define LZO_INFO_LIBC "naked" +#elif (LZO_LIBC_FREESTANDING) +# define LZO_INFO_LIBC "freestanding" +#elif (LZO_LIBC_MOSTLY_FREESTANDING) +# define LZO_INFO_LIBC "mfreestanding" +#elif (LZO_LIBC_ISOC90) +# define LZO_INFO_LIBC "isoc90" +#elif (LZO_LIBC_ISOC99) +# define LZO_INFO_LIBC "isoc99" +#elif defined(__dietlibc__) +# define LZO_LIBC_DIETLIBC 1 +# define LZO_INFO_LIBC "dietlibc" +#elif defined(_NEWLIB_VERSION) +# define LZO_LIBC_NEWLIB 1 +# define LZO_INFO_LIBC "newlib" +#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__) +# if defined(__UCLIBC_SUBLEVEL__) +# define LZO_LIBC_UCLIBC (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__) +# else +# define LZO_LIBC_UCLIBC 0x00090bL +# endif +# define LZO_INFO_LIBC "uclibc" +#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__) +# define LZO_LIBC_GLIBC (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100) +# define LZO_INFO_LIBC "glibc" +#elif (LZO_CC_MWERKS) && defined(__MSL__) +# define LZO_LIBC_MSL __MSL__ +# define LZO_INFO_LIBC "msl" +#elif 1 && defined(__IAR_SYSTEMS_ICC__) +# define LZO_LIBC_ISOC90 1 +# define LZO_INFO_LIBC "isoc90" +#else +# define LZO_LIBC_DEFAULT 1 +# define LZO_INFO_LIBC "default" +#endif +#endif +#if !defined(__lzo_gnuc_extension__) +#if (LZO_CC_GNUC >= 0x020800ul) +# define __lzo_gnuc_extension__ __extension__ +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_gnuc_extension__ __extension__ +#else +# define __lzo_gnuc_extension__ /*empty*/ +#endif +#endif +#if !defined(__lzo_ua_volatile) +# define __lzo_ua_volatile volatile +#endif +#if !defined(__lzo_alignof) +#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) +# define __lzo_alignof(e) __alignof__(e) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700)) +# define __lzo_alignof(e) __alignof__(e) +#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) +# define __lzo_alignof(e) __alignof(e) +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_alignof(e) __alignof__(e) +#endif +#endif +#if defined(__lzo_alignof) +# define __lzo_HAVE_alignof 1 +#endif +#if !defined(__lzo_constructor) +#if (LZO_CC_GNUC >= 0x030400ul) +# define __lzo_constructor __attribute__((__constructor__,__used__)) +#elif (LZO_CC_GNUC >= 0x020700ul) +# define __lzo_constructor __attribute__((__constructor__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_constructor __attribute__((__constructor__)) +#endif +#endif +#if defined(__lzo_constructor) +# define __lzo_HAVE_constructor 1 +#endif +#if !defined(__lzo_destructor) +#if (LZO_CC_GNUC >= 0x030400ul) +# define __lzo_destructor __attribute__((__destructor__,__used__)) +#elif (LZO_CC_GNUC >= 0x020700ul) +# define __lzo_destructor __attribute__((__destructor__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_destructor __attribute__((__destructor__)) +#endif +#endif +#if defined(__lzo_destructor) +# define __lzo_HAVE_destructor 1 +#endif +#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor) +# error "this should not happen" +#endif +#if !defined(__lzo_inline) +#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295)) +#elif defined(__cplusplus) +# define __lzo_inline inline +#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550)) +# define __lzo_inline __inline +#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) +# define __lzo_inline __inline__ +#elif (LZO_CC_DMC) +# define __lzo_inline __inline +#elif (LZO_CC_INTELC) +# define __lzo_inline __inline +#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405)) +# define __lzo_inline __inline +#elif (LZO_CC_MSC && (_MSC_VER >= 900)) +# define __lzo_inline __inline +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_inline __inline__ +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +# define __lzo_inline inline +#endif +#endif +#if defined(__lzo_inline) +# define __lzo_HAVE_inline 1 +#else +# define __lzo_inline /*empty*/ +#endif +#if !defined(__lzo_forceinline) +#if (LZO_CC_GNUC >= 0x030200ul) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) +# define __lzo_forceinline __forceinline +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) +# define __lzo_forceinline __forceinline +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#endif +#endif +#if defined(__lzo_forceinline) +# define __lzo_HAVE_forceinline 1 +#else +# define __lzo_forceinline /*empty*/ +#endif +#if !defined(__lzo_noinline) +#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul) +# define __lzo_noinline __attribute__((__noinline__,__used__)) +#elif (LZO_CC_GNUC >= 0x030200ul) +# define __lzo_noinline __attribute__((__noinline__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC) +# define __lzo_noinline __declspec(noinline) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) +# define __lzo_noinline __attribute__((__noinline__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_noinline __attribute__((__noinline__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) +# define __lzo_noinline __declspec(noinline) +#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64)) +# if defined(__cplusplus) +# else +# define __lzo_noinline __declspec(noinline) +# endif +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_noinline __attribute__((__noinline__)) +#endif +#endif +#if defined(__lzo_noinline) +# define __lzo_HAVE_noinline 1 +#else +# define __lzo_noinline /*empty*/ +#endif +#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline) +# error "this should not happen" +#endif +#if !defined(__lzo_noreturn) +#if (LZO_CC_GNUC >= 0x020700ul) +# define __lzo_noreturn __attribute__((__noreturn__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) +# define __lzo_noreturn __declspec(noreturn) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) +# define __lzo_noreturn __attribute__((__noreturn__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_noreturn __attribute__((__noreturn__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) +# define __lzo_noreturn __declspec(noreturn) +#endif +#endif +#if defined(__lzo_noreturn) +# define __lzo_HAVE_noreturn 1 +#else +# define __lzo_noreturn /*empty*/ +#endif +#if !defined(__lzo_nothrow) +#if (LZO_CC_GNUC >= 0x030300ul) +# define __lzo_nothrow __attribute__((__nothrow__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus) +# define __lzo_nothrow __declspec(nothrow) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC) +# define __lzo_nothrow __attribute__((__nothrow__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_nothrow __attribute__((__nothrow__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus) +# define __lzo_nothrow __declspec(nothrow) +#endif +#endif +#if defined(__lzo_nothrow) +# define __lzo_HAVE_nothrow 1 +#else +# define __lzo_nothrow /*empty*/ +#endif +#if !defined(__lzo_restrict) +#if (LZO_CC_GNUC >= 0x030400ul) +# define __lzo_restrict __restrict__ +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) +# define __lzo_restrict __restrict__ +#elif (LZO_CC_CLANG || LZO_CC_LLVM) +# define __lzo_restrict __restrict__ +#elif (LZO_CC_MSC && (_MSC_VER >= 1400)) +# define __lzo_restrict __restrict +#endif +#endif +#if defined(__lzo_restrict) +# define __lzo_HAVE_restrict 1 +#else +# define __lzo_restrict /*empty*/ +#endif +#if !defined(__lzo_likely) && !defined(__lzo_unlikely) +#if (LZO_CC_GNUC >= 0x030200ul) +# define __lzo_likely(e) (__builtin_expect(!!(e),1)) +# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800)) +# define __lzo_likely(e) (__builtin_expect(!!(e),1)) +# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_likely(e) (__builtin_expect(!!(e),1)) +# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) +#endif +#endif +#if defined(__lzo_likely) +# define __lzo_HAVE_likely 1 +#else +# define __lzo_likely(e) (e) +#endif +#if defined(__lzo_unlikely) +# define __lzo_HAVE_unlikely 1 +#else +# define __lzo_unlikely(e) (e) +#endif +#if !defined(LZO_UNUSED) +# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) +# define LZO_UNUSED(var) ((void) &var) +# elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC) +# define LZO_UNUSED(var) if (&var) ; else +# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define LZO_UNUSED(var) ((void) var) +# elif (LZO_CC_MSC && (_MSC_VER < 900)) +# define LZO_UNUSED(var) if (&var) ; else +# elif (LZO_CC_KEILC) +# define LZO_UNUSED(var) {extern int __lzo_unused[1-2*!(sizeof(var)>0)];} +# elif (LZO_CC_PACIFICC) +# define LZO_UNUSED(var) ((void) sizeof(var)) +# elif (LZO_CC_WATCOMC) && defined(__cplusplus) +# define LZO_UNUSED(var) ((void) var) +# else +# define LZO_UNUSED(var) ((void) &var) +# endif +#endif +#if !defined(LZO_UNUSED_FUNC) +# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) +# define LZO_UNUSED_FUNC(func) ((void) func) +# elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC) +# define LZO_UNUSED_FUNC(func) if (func) ; else +# elif (LZO_CC_CLANG || LZO_CC_LLVM) +# define LZO_UNUSED_FUNC(func) ((void) &func) +# elif (LZO_CC_MSC && (_MSC_VER < 900)) +# define LZO_UNUSED_FUNC(func) if (func) ; else +# elif (LZO_CC_MSC) +# define LZO_UNUSED_FUNC(func) ((void) &func) +# elif (LZO_CC_KEILC || LZO_CC_PELLESC) +# define LZO_UNUSED_FUNC(func) {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];} +# else +# define LZO_UNUSED_FUNC(func) ((void) func) +# endif +#endif +#if !defined(LZO_UNUSED_LABEL) +# if (LZO_CC_WATCOMC) && defined(__cplusplus) +# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l +# elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC) +# define LZO_UNUSED_LABEL(l) if (0) goto l +# else +# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l +# endif +#endif +#if !defined(LZO_DEFINE_UNINITIALIZED_VAR) +# if 0 +# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var +# elif 0 && (LZO_CC_GNUC) +# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = var +# else +# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = init +# endif +#endif +#if !defined(LZO_UNCONST_CAST) +# if 0 && defined(__cplusplus) +# define LZO_UNCONST_CAST(t,e) (const_cast (e)) +# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e)))))) +# else +# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((const void *) (e))))) +# endif +#endif +#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER) +# if (LZO_CC_AZTECC || LZO_CC_ZORTECHC) +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; +# elif (LZO_CC_DMC || LZO_CC_SYMANTECC) +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1u-2*!(e)]; +# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; +# else +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-2*!(e)]; +# endif +#endif +#if !defined(LZO_COMPILE_TIME_ASSERT) +# if (LZO_CC_AZTECC) +# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-!(e)];} +# elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) +# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; +# elif (LZO_CC_MSC && (_MSC_VER < 900)) +# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; +# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) +# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; +# else +# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-2*!(e)];} +# endif +#endif +#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) +# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC) +# elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) +# define __lzo_cdecl __cdecl +# define __lzo_cdecl_atexit /*empty*/ +# define __lzo_cdecl_main __cdecl +# if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) +# define __lzo_cdecl_qsort __pascal +# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) +# define __lzo_cdecl_qsort _stdcall +# else +# define __lzo_cdecl_qsort __cdecl +# endif +# elif (LZO_CC_WATCOMC) +# define __lzo_cdecl __cdecl +# else +# define __lzo_cdecl __cdecl +# define __lzo_cdecl_atexit __cdecl +# define __lzo_cdecl_main __cdecl +# define __lzo_cdecl_qsort __cdecl +# endif +# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC) +# elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) +# define __lzo_cdecl_sighandler __pascal +# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) +# define __lzo_cdecl_sighandler _stdcall +# elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE) +# define __lzo_cdecl_sighandler __clrcall +# elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700)) +# if defined(_DLL) +# define __lzo_cdecl_sighandler _far _cdecl _loadds +# elif defined(_MT) +# define __lzo_cdecl_sighandler _far _cdecl +# else +# define __lzo_cdecl_sighandler _cdecl +# endif +# else +# define __lzo_cdecl_sighandler __cdecl +# endif +#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC) +# define __lzo_cdecl __cdecl +#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) +# define __lzo_cdecl cdecl +#endif +#if !defined(__lzo_cdecl) +# define __lzo_cdecl /*empty*/ +#endif +#if !defined(__lzo_cdecl_atexit) +# define __lzo_cdecl_atexit /*empty*/ +#endif +#if !defined(__lzo_cdecl_main) +# define __lzo_cdecl_main /*empty*/ +#endif +#if !defined(__lzo_cdecl_qsort) +# define __lzo_cdecl_qsort /*empty*/ +#endif +#if !defined(__lzo_cdecl_sighandler) +# define __lzo_cdecl_sighandler /*empty*/ +#endif +#if !defined(__lzo_cdecl_va) +# define __lzo_cdecl_va __lzo_cdecl +#endif +#if !(LZO_CFG_NO_WINDOWS_H) +#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64) +# if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000)) +# elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) +# elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul))) +# else +# define LZO_HAVE_WINDOWS_H 1 +# endif +#endif +#endif +#if (LZO_ARCH_ALPHA) +# define LZO_OPT_AVOID_UINT_INDEX 1 +# define LZO_OPT_AVOID_SHORT 1 +# define LZO_OPT_AVOID_USHORT 1 +#elif (LZO_ARCH_AMD64) +# define LZO_OPT_AVOID_INT_INDEX 1 +# define LZO_OPT_AVOID_UINT_INDEX 1 +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# define LZO_OPT_UNALIGNED64 1 +#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB) +#elif (LZO_ARCH_ARM) +# define LZO_OPT_AVOID_SHORT 1 +# define LZO_OPT_AVOID_USHORT 1 +#elif (LZO_ARCH_CRIS) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +#elif (LZO_ARCH_I386) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +#elif (LZO_ARCH_IA64) +# define LZO_OPT_AVOID_INT_INDEX 1 +# define LZO_OPT_AVOID_UINT_INDEX 1 +# define LZO_OPT_PREFER_POSTINC 1 +#elif (LZO_ARCH_M68K) +# define LZO_OPT_PREFER_POSTINC 1 +# define LZO_OPT_PREFER_PREDEC 1 +# if defined(__mc68020__) && !defined(__mcoldfire__) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# endif +#elif (LZO_ARCH_MIPS) +# define LZO_OPT_AVOID_UINT_INDEX 1 +#elif (LZO_ARCH_POWERPC) +# define LZO_OPT_PREFER_PREINC 1 +# define LZO_OPT_PREFER_PREDEC 1 +# if (LZO_ABI_BIG_ENDIAN) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# endif +#elif (LZO_ARCH_S390) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# if (LZO_SIZEOF_SIZE_T == 8) +# define LZO_OPT_UNALIGNED64 1 +# endif +#elif (LZO_ARCH_SH) +# define LZO_OPT_PREFER_POSTINC 1 +# define LZO_OPT_PREFER_PREDEC 1 +#endif +#ifndef LZO_CFG_NO_INLINE_ASM +#if (LZO_CC_LLVM) +# define LZO_CFG_NO_INLINE_ASM 1 +#endif +#endif +#ifndef LZO_CFG_NO_UNALIGNED +#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC) +# define LZO_CFG_NO_UNALIGNED 1 +#endif +#endif +#if (LZO_CFG_NO_UNALIGNED) +# undef LZO_OPT_UNALIGNED16 +# undef LZO_OPT_UNALIGNED32 +# undef LZO_OPT_UNALIGNED64 +#endif +#if (LZO_CFG_NO_INLINE_ASM) +#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) +# define LZO_ASM_SYNTAX_MSC 1 +#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) +#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul)) +#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) +# define LZO_ASM_SYNTAX_GNUC 1 +#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) +# define LZO_ASM_SYNTAX_GNUC 1 +#endif +#if (LZO_ASM_SYNTAX_GNUC) +#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) +# define __LZO_ASM_CLOBBER "ax" +#elif (LZO_CC_INTELC) +# define __LZO_ASM_CLOBBER "memory" +#else +# define __LZO_ASM_CLOBBER "cc", "memory" +#endif +#endif +#if defined(__LZO_INFOSTR_MM) +#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM)) +# define __LZO_INFOSTR_MM "" +#elif defined(LZO_INFO_MM) +# define __LZO_INFOSTR_MM "." LZO_INFO_MM +#else +# define __LZO_INFOSTR_MM "" +#endif +#if defined(__LZO_INFOSTR_PM) +#elif defined(LZO_INFO_ABI_PM) +# define __LZO_INFOSTR_PM "." LZO_INFO_ABI_PM +#else +# define __LZO_INFOSTR_PM "" +#endif +#if defined(__LZO_INFOSTR_ENDIAN) +#elif defined(LZO_INFO_ABI_ENDIAN) +# define __LZO_INFOSTR_ENDIAN "." LZO_INFO_ABI_ENDIAN +#else +# define __LZO_INFOSTR_ENDIAN "" +#endif +#if defined(__LZO_INFOSTR_OSNAME) +#elif defined(LZO_INFO_OS_CONSOLE) +# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_CONSOLE +#elif defined(LZO_INFO_OS_POSIX) +# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_POSIX +#else +# define __LZO_INFOSTR_OSNAME LZO_INFO_OS +#endif +#if defined(__LZO_INFOSTR_LIBC) +#elif defined(LZO_INFO_LIBC) +# define __LZO_INFOSTR_LIBC "." LZO_INFO_LIBC +#else +# define __LZO_INFOSTR_LIBC "" +#endif +#if defined(__LZO_INFOSTR_CCVER) +#elif defined(LZO_INFO_CCVER) +# define __LZO_INFOSTR_CCVER " " LZO_INFO_CCVER +#else +# define __LZO_INFOSTR_CCVER "" +#endif +#define LZO_INFO_STRING \ + LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \ + " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER + +#endif /* already included */ + +/* vim:set ts=4 et: */ diff --git a/libmednahawk/src/compress/minilzo.c b/libmednahawk/src/compress/minilzo.c new file mode 100644 index 0000000000..1b912c4340 --- /dev/null +++ b/libmednahawk/src/compress/minilzo.c @@ -0,0 +1,4579 @@ +/* minilzo.c -- mini subset of the LZO real-time data compression library + + This file is part of the LZO real-time data compression library. + + Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer + All Rights Reserved. + + The LZO library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + The LZO library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the LZO library; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Markus F.X.J. Oberhumer + + http://www.oberhumer.com/opensource/lzo/ + */ + +/* + * NOTE: + * the full LZO package can be found at + * http://www.oberhumer.com/opensource/lzo/ + */ + +#define __LZO_IN_MINILZO 1 + +#if defined(LZO_CFG_FREESTANDING) +# undef MINILZO_HAVE_CONFIG_H +# define LZO_LIBC_FREESTANDING 1 +# define LZO_OS_FREESTANDING 1 +#endif + +#ifdef MINILZO_HAVE_CONFIG_H +# include +#endif +#include +#include +#if defined(MINILZO_CFG_USE_INTERNAL_LZODEFS) + +#ifndef __LZODEFS_H_INCLUDED +#define __LZODEFS_H_INCLUDED 1 + +#if defined(__CYGWIN32__) && !defined(__CYGWIN__) +# define __CYGWIN__ __CYGWIN32__ +#endif +#if defined(__IBMCPP__) && !defined(__IBMC__) +# define __IBMC__ __IBMCPP__ +#endif +#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER) +# define __INTEL_COMPILER __ICL +#endif +#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE) +# define _ALL_SOURCE 1 +#endif +#if defined(__mips__) && defined(__R5900__) +# if !defined(__LONG_MAX__) +# define __LONG_MAX__ 9223372036854775807L +# endif +#endif +#if defined(__INTEL_COMPILER) && defined(__linux__) +# pragma warning(disable: 193) +#endif +#if defined(__KEIL__) && defined(__C166__) +# pragma warning disable = 322 +#elif 0 && defined(__C251__) +# pragma warning disable = 322 +#endif +#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__) +# if (_MSC_VER >= 1300) +# pragma warning(disable: 4668) +# endif +#endif +#if 0 && defined(__WATCOMC__) +# if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060) +# pragma warning 203 9 +# endif +#endif +#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__) +# pragma option -h +#endif +#if 0 +#define LZO_0xffffL 0xfffful +#define LZO_0xffffffffL 0xfffffffful +#else +#define LZO_0xffffL 65535ul +#define LZO_0xffffffffL 4294967295ul +#endif +#if (LZO_0xffffL == LZO_0xffffffffL) +# error "your preprocessor is broken 1" +#endif +#if (16ul * 16384ul != 262144ul) +# error "your preprocessor is broken 2" +#endif +#if 0 +#if (32767 >= 4294967295ul) +# error "your preprocessor is broken 3" +#endif +#if (65535u >= 4294967295ul) +# error "your preprocessor is broken 4" +#endif +#endif +#if (UINT_MAX == LZO_0xffffL) +#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__) +# if !defined(MSDOS) +# define MSDOS 1 +# endif +# if !defined(_MSDOS) +# define _MSDOS 1 +# endif +#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX) +# if (__VERSION == 520) && (MB_LEN_MAX == 1) +# if !defined(__AZTEC_C__) +# define __AZTEC_C__ __VERSION +# endif +# if !defined(__DOS__) +# define __DOS__ 1 +# endif +# endif +#endif +#endif +#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL) +# define ptrdiff_t long +# define _PTRDIFF_T_DEFINED 1 +#endif +#if (UINT_MAX == LZO_0xffffL) +# undef __LZO_RENAME_A +# undef __LZO_RENAME_B +# if defined(__AZTEC_C__) && defined(__DOS__) +# define __LZO_RENAME_A 1 +# elif defined(_MSC_VER) && defined(MSDOS) +# if (_MSC_VER < 600) +# define __LZO_RENAME_A 1 +# elif (_MSC_VER < 700) +# define __LZO_RENAME_B 1 +# endif +# elif defined(__TSC__) && defined(__OS2__) +# define __LZO_RENAME_A 1 +# elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410) +# define __LZO_RENAME_A 1 +# elif defined(__PACIFIC__) && defined(DOS) +# if !defined(__far) +# define __far far +# endif +# if !defined(__near) +# define __near near +# endif +# endif +# if defined(__LZO_RENAME_A) +# if !defined(__cdecl) +# define __cdecl cdecl +# endif +# if !defined(__far) +# define __far far +# endif +# if !defined(__huge) +# define __huge huge +# endif +# if !defined(__near) +# define __near near +# endif +# if !defined(__pascal) +# define __pascal pascal +# endif +# if !defined(__huge) +# define __huge huge +# endif +# elif defined(__LZO_RENAME_B) +# if !defined(__cdecl) +# define __cdecl _cdecl +# endif +# if !defined(__far) +# define __far _far +# endif +# if !defined(__huge) +# define __huge _huge +# endif +# if !defined(__near) +# define __near _near +# endif +# if !defined(__pascal) +# define __pascal _pascal +# endif +# elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) +# if !defined(__cdecl) +# define __cdecl cdecl +# endif +# if !defined(__pascal) +# define __pascal pascal +# endif +# endif +# undef __LZO_RENAME_A +# undef __LZO_RENAME_B +#endif +#if (UINT_MAX == LZO_0xffffL) +#if defined(__AZTEC_C__) && defined(__DOS__) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +#elif defined(_MSC_VER) && defined(MSDOS) +# if (_MSC_VER < 600) +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +# endif +# if (_MSC_VER < 700) +# define LZO_BROKEN_INTEGRAL_PROMOTION 1 +# define LZO_BROKEN_SIZEOF 1 +# endif +#elif defined(__PACIFIC__) && defined(DOS) +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +#elif defined(__TURBOC__) && defined(__MSDOS__) +# if (__TURBOC__ < 0x0150) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +# define LZO_BROKEN_INTEGRAL_PROMOTION 1 +# endif +# if (__TURBOC__ < 0x0200) +# define LZO_BROKEN_SIZEOF 1 +# endif +# if (__TURBOC__ < 0x0400) && defined(__cplusplus) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +# endif +#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) +# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 +# define LZO_BROKEN_SIZEOF 1 +#endif +#endif +#if defined(__WATCOMC__) && (__WATCOMC__ < 900) +# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 +#endif +#if defined(_CRAY) && defined(_CRAY1) +# define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1 +#endif +#define LZO_PP_STRINGIZE(x) #x +#define LZO_PP_MACRO_EXPAND(x) LZO_PP_STRINGIZE(x) +#define LZO_PP_CONCAT2(a,b) a ## b +#define LZO_PP_CONCAT3(a,b,c) a ## b ## c +#define LZO_PP_CONCAT4(a,b,c,d) a ## b ## c ## d +#define LZO_PP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e +#define LZO_PP_ECONCAT2(a,b) LZO_PP_CONCAT2(a,b) +#define LZO_PP_ECONCAT3(a,b,c) LZO_PP_CONCAT3(a,b,c) +#define LZO_PP_ECONCAT4(a,b,c,d) LZO_PP_CONCAT4(a,b,c,d) +#define LZO_PP_ECONCAT5(a,b,c,d,e) LZO_PP_CONCAT5(a,b,c,d,e) +#if 1 +#define LZO_CPP_STRINGIZE(x) #x +#define LZO_CPP_MACRO_EXPAND(x) LZO_CPP_STRINGIZE(x) +#define LZO_CPP_CONCAT2(a,b) a ## b +#define LZO_CPP_CONCAT3(a,b,c) a ## b ## c +#define LZO_CPP_CONCAT4(a,b,c,d) a ## b ## c ## d +#define LZO_CPP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e +#define LZO_CPP_ECONCAT2(a,b) LZO_CPP_CONCAT2(a,b) +#define LZO_CPP_ECONCAT3(a,b,c) LZO_CPP_CONCAT3(a,b,c) +#define LZO_CPP_ECONCAT4(a,b,c,d) LZO_CPP_CONCAT4(a,b,c,d) +#define LZO_CPP_ECONCAT5(a,b,c,d,e) LZO_CPP_CONCAT5(a,b,c,d,e) +#endif +#define __LZO_MASK_GEN(o,b) (((((o) << ((b)-1)) - (o)) << 1) + (o)) +#if 1 && defined(__cplusplus) +# if !defined(__STDC_CONSTANT_MACROS) +# define __STDC_CONSTANT_MACROS 1 +# endif +# if !defined(__STDC_LIMIT_MACROS) +# define __STDC_LIMIT_MACROS 1 +# endif +#endif +#if defined(__cplusplus) +# define LZO_EXTERN_C extern "C" +#else +# define LZO_EXTERN_C extern +#endif +#if !defined(__LZO_OS_OVERRIDE) +#if (LZO_OS_FREESTANDING) +# define LZO_INFO_OS "freestanding" +#elif (LZO_OS_EMBEDDED) +# define LZO_INFO_OS "embedded" +#elif 1 && defined(__IAR_SYSTEMS_ICC__) +# define LZO_OS_EMBEDDED 1 +# define LZO_INFO_OS "embedded" +#elif defined(__CYGWIN__) && defined(__GNUC__) +# define LZO_OS_CYGWIN 1 +# define LZO_INFO_OS "cygwin" +#elif defined(__EMX__) && defined(__GNUC__) +# define LZO_OS_EMX 1 +# define LZO_INFO_OS "emx" +#elif defined(__BEOS__) +# define LZO_OS_BEOS 1 +# define LZO_INFO_OS "beos" +#elif defined(__Lynx__) +# define LZO_OS_LYNXOS 1 +# define LZO_INFO_OS "lynxos" +#elif defined(__OS400__) +# define LZO_OS_OS400 1 +# define LZO_INFO_OS "os400" +#elif defined(__QNX__) +# define LZO_OS_QNX 1 +# define LZO_INFO_OS "qnx" +#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460) +# define LZO_OS_DOS32 1 +# define LZO_INFO_OS "dos32" +#elif defined(__BORLANDC__) && defined(__DPMI16__) +# define LZO_OS_DOS16 1 +# define LZO_INFO_OS "dos16" +#elif defined(__ZTC__) && defined(DOS386) +# define LZO_OS_DOS32 1 +# define LZO_INFO_OS "dos32" +#elif defined(__OS2__) || defined(__OS2V2__) +# if (UINT_MAX == LZO_0xffffL) +# define LZO_OS_OS216 1 +# define LZO_INFO_OS "os216" +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_OS_OS2 1 +# define LZO_INFO_OS "os2" +# else +# error "check your limits.h header" +# endif +#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64) +# define LZO_OS_WIN64 1 +# define LZO_INFO_OS "win64" +#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +#elif defined(__MWERKS__) && defined(__INTEL__) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows) +# if (UINT_MAX == LZO_0xffffL) +# define LZO_OS_WIN16 1 +# define LZO_INFO_OS "win16" +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +# else +# error "check your limits.h header" +# endif +#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS)) +# if (UINT_MAX == LZO_0xffffL) +# define LZO_OS_DOS16 1 +# define LZO_INFO_OS "dos16" +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_OS_DOS32 1 +# define LZO_INFO_OS "dos32" +# else +# error "check your limits.h header" +# endif +#elif defined(__WATCOMC__) +# if defined(__NT__) && (UINT_MAX == LZO_0xffffL) +# define LZO_OS_DOS16 1 +# define LZO_INFO_OS "dos16" +# elif defined(__NT__) && (__WATCOMC__ < 1100) +# define LZO_OS_WIN32 1 +# define LZO_INFO_OS "win32" +# elif defined(__linux__) || defined(__LINUX__) +# define LZO_OS_POSIX 1 +# define LZO_INFO_OS "posix" +# else +# error "please specify a target using the -bt compiler option" +# endif +#elif defined(__palmos__) +# define LZO_OS_PALMOS 1 +# define LZO_INFO_OS "palmos" +#elif defined(__TOS__) || defined(__atarist__) +# define LZO_OS_TOS 1 +# define LZO_INFO_OS "tos" +#elif defined(macintosh) && !defined(__ppc__) +# define LZO_OS_MACCLASSIC 1 +# define LZO_INFO_OS "macclassic" +#elif defined(__VMS) +# define LZO_OS_VMS 1 +# define LZO_INFO_OS "vms" +#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) +# define LZO_OS_CONSOLE 1 +# define LZO_OS_CONSOLE_PS2 1 +# define LZO_INFO_OS "console" +# define LZO_INFO_OS_CONSOLE "ps2" +#elif (defined(__mips__) && defined(__psp__)) +# define LZO_OS_CONSOLE 1 +# define LZO_OS_CONSOLE_PSP 1 +# define LZO_INFO_OS "console" +# define LZO_INFO_OS_CONSOLE "psp" +#else +# define LZO_OS_POSIX 1 +# define LZO_INFO_OS "posix" +#endif +#if (LZO_OS_POSIX) +# if defined(_AIX) || defined(__AIX__) || defined(__aix__) +# define LZO_OS_POSIX_AIX 1 +# define LZO_INFO_OS_POSIX "aix" +# elif defined(__FreeBSD__) +# define LZO_OS_POSIX_FREEBSD 1 +# define LZO_INFO_OS_POSIX "freebsd" +# elif defined(__hpux__) || defined(__hpux) +# define LZO_OS_POSIX_HPUX 1 +# define LZO_INFO_OS_POSIX "hpux" +# elif defined(__INTERIX) +# define LZO_OS_POSIX_INTERIX 1 +# define LZO_INFO_OS_POSIX "interix" +# elif defined(__IRIX__) || defined(__irix__) +# define LZO_OS_POSIX_IRIX 1 +# define LZO_INFO_OS_POSIX "irix" +# elif defined(__linux__) || defined(__linux) || defined(__LINUX__) +# define LZO_OS_POSIX_LINUX 1 +# define LZO_INFO_OS_POSIX "linux" +# elif defined(__APPLE__) || defined(__MACOS__) +# define LZO_OS_POSIX_MACOSX 1 +# define LZO_INFO_OS_POSIX "macosx" +# elif defined(__minix__) || defined(__minix) +# define LZO_OS_POSIX_MINIX 1 +# define LZO_INFO_OS_POSIX "minix" +# elif defined(__NetBSD__) +# define LZO_OS_POSIX_NETBSD 1 +# define LZO_INFO_OS_POSIX "netbsd" +# elif defined(__OpenBSD__) +# define LZO_OS_POSIX_OPENBSD 1 +# define LZO_INFO_OS_POSIX "openbsd" +# elif defined(__osf__) +# define LZO_OS_POSIX_OSF 1 +# define LZO_INFO_OS_POSIX "osf" +# elif defined(__solaris__) || defined(__sun) +# if defined(__SVR4) || defined(__svr4__) +# define LZO_OS_POSIX_SOLARIS 1 +# define LZO_INFO_OS_POSIX "solaris" +# else +# define LZO_OS_POSIX_SUNOS 1 +# define LZO_INFO_OS_POSIX "sunos" +# endif +# elif defined(__ultrix__) || defined(__ultrix) +# define LZO_OS_POSIX_ULTRIX 1 +# define LZO_INFO_OS_POSIX "ultrix" +# elif defined(_UNICOS) +# define LZO_OS_POSIX_UNICOS 1 +# define LZO_INFO_OS_POSIX "unicos" +# else +# define LZO_OS_POSIX_UNKNOWN 1 +# define LZO_INFO_OS_POSIX "unknown" +# endif +#endif +#endif +#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +# if (UINT_MAX != LZO_0xffffL) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64) +# if (UINT_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__) +# define LZO_CC_CILLY 1 +# define LZO_INFO_CC "Cilly" +# if defined(__CILLY__) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CILLY__) +# else +# define LZO_INFO_CCVER "unknown" +# endif +#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__) +# define LZO_CC_SDCC 1 +# define LZO_INFO_CC "sdcc" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(SDCC) +#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__) +# define LZO_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__) +# define LZO_INFO_CC "Pathscale C" +# define LZO_INFO_CCVER __PATHSCALE__ +#elif defined(__INTEL_COMPILER) +# define LZO_CC_INTELC 1 +# define LZO_INFO_CC "Intel C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__INTEL_COMPILER) +# if defined(_WIN32) || defined(_WIN64) +# define LZO_CC_SYNTAX_MSC 1 +# else +# define LZO_CC_SYNTAX_GNUC 1 +# endif +#elif defined(__POCC__) && defined(_WIN32) +# define LZO_CC_PELLESC 1 +# define LZO_INFO_CC "Pelles C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__POCC__) +#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) +# if defined(__GNUC_PATCHLEVEL__) +# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) +# else +# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) +# endif +# if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__) +# define LZO_CC_CLANG_CLANG (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__) +# else +# define LZO_CC_CLANG_CLANG 0x010000L +# endif +# define LZO_CC_CLANG LZO_CC_CLANG_GNUC +# define LZO_INFO_CC "clang" +# define LZO_INFO_CCVER __VERSION__ +#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) +# if defined(__GNUC_PATCHLEVEL__) +# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) +# else +# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) +# endif +# define LZO_CC_LLVM LZO_CC_LLVM_GNUC +# define LZO_INFO_CC "llvm-gcc" +# define LZO_INFO_CCVER __VERSION__ +#elif defined(__GNUC__) && defined(__VERSION__) +# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) +# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) +# elif defined(__GNUC_MINOR__) +# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) +# else +# define LZO_CC_GNUC (__GNUC__ * 0x10000L) +# endif +# define LZO_INFO_CC "gcc" +# define LZO_INFO_CCVER __VERSION__ +#elif defined(__ACK__) && defined(_ACK) +# define LZO_CC_ACK 1 +# define LZO_INFO_CC "Amsterdam Compiler Kit C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__AZTEC_C__) +# define LZO_CC_AZTECC 1 +# define LZO_INFO_CC "Aztec C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__AZTEC_C__) +#elif defined(__CODEGEARC__) +# define LZO_CC_CODEGEARC 1 +# define LZO_INFO_CC "CodeGear C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CODEGEARC__) +#elif defined(__BORLANDC__) +# define LZO_CC_BORLANDC 1 +# define LZO_INFO_CC "Borland C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__BORLANDC__) +#elif defined(_CRAYC) && defined(_RELEASE) +# define LZO_CC_CRAYC 1 +# define LZO_INFO_CC "Cray C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_RELEASE) +#elif defined(__DMC__) && defined(__SC__) +# define LZO_CC_DMC 1 +# define LZO_INFO_CC "Digital Mars C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DMC__) +#elif defined(__DECC) +# define LZO_CC_DECC 1 +# define LZO_INFO_CC "DEC C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DECC) +#elif defined(__HIGHC__) +# define LZO_CC_HIGHC 1 +# define LZO_INFO_CC "MetaWare High C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__IAR_SYSTEMS_ICC__) +# define LZO_CC_IARC 1 +# define LZO_INFO_CC "IAR C" +# if defined(__VER__) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__VER__) +# else +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(__IBMC__) +# define LZO_CC_IBMC 1 +# define LZO_INFO_CC "IBM C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__IBMC__) +#elif defined(__KEIL__) && defined(__C166__) +# define LZO_CC_KEILC 1 +# define LZO_INFO_CC "Keil C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__C166__) +#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL) +# define LZO_CC_LCCWIN32 1 +# define LZO_INFO_CC "lcc-win32" +# define LZO_INFO_CCVER "unknown" +#elif defined(__LCC__) +# define LZO_CC_LCC 1 +# define LZO_INFO_CC "lcc" +# if defined(__LCC_VERSION__) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__LCC_VERSION__) +# else +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(_MSC_VER) +# define LZO_CC_MSC 1 +# define LZO_INFO_CC "Microsoft C" +# if defined(_MSC_FULL_VER) +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER) +# else +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) +# endif +#elif defined(__MWERKS__) +# define LZO_CC_MWERKS 1 +# define LZO_INFO_CC "Metrowerks C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__MWERKS__) +#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386) +# define LZO_CC_NDPC 1 +# define LZO_INFO_CC "Microway NDP C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__PACIFIC__) +# define LZO_CC_PACIFICC 1 +# define LZO_INFO_CC "Pacific C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PACIFIC__) +#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__)) +# define LZO_CC_PGI 1 +# define LZO_INFO_CC "Portland Group PGI C" +# define LZO_INFO_CCVER "unknown" +#elif defined(__PUREC__) && defined(__TOS__) +# define LZO_CC_PUREC 1 +# define LZO_INFO_CC "Pure C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PUREC__) +#elif defined(__SC__) && defined(__ZTC__) +# define LZO_CC_SYMANTECC 1 +# define LZO_INFO_CC "Symantec C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SC__) +#elif defined(__SUNPRO_C) +# define LZO_INFO_CC "SunPro C" +# if ((__SUNPRO_C)+0 > 0) +# define LZO_CC_SUNPROC __SUNPRO_C +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_C) +# else +# define LZO_CC_SUNPROC 1 +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(__SUNPRO_CC) +# define LZO_INFO_CC "SunPro C" +# if ((__SUNPRO_CC)+0 > 0) +# define LZO_CC_SUNPROC __SUNPRO_CC +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_CC) +# else +# define LZO_CC_SUNPROC 1 +# define LZO_INFO_CCVER "unknown" +# endif +#elif defined(__TINYC__) +# define LZO_CC_TINYC 1 +# define LZO_INFO_CC "Tiny C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TINYC__) +#elif defined(__TSC__) +# define LZO_CC_TOPSPEEDC 1 +# define LZO_INFO_CC "TopSpeed C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TSC__) +#elif defined(__WATCOMC__) +# define LZO_CC_WATCOMC 1 +# define LZO_INFO_CC "Watcom C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__WATCOMC__) +#elif defined(__TURBOC__) +# define LZO_CC_TURBOC 1 +# define LZO_INFO_CC "Turbo C" +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TURBOC__) +#elif defined(__ZTC__) +# define LZO_CC_ZORTECHC 1 +# define LZO_INFO_CC "Zortech C" +# if (__ZTC__ == 0x310) +# define LZO_INFO_CCVER "0x310" +# else +# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__ZTC__) +# endif +#else +# define LZO_CC_UNKNOWN 1 +# define LZO_INFO_CC "unknown" +# define LZO_INFO_CCVER "unknown" +#endif +#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER) +# error "LZO_CC_MSC: _MSC_FULL_VER is not defined" +#endif +#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY) +# if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY) +# if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E) +# define LZO_ARCH_CRAY_MPP 1 +# elif defined(_CRAY1) +# define LZO_ARCH_CRAY_PVP 1 +# endif +# endif +#endif +#if !defined(__LZO_ARCH_OVERRIDE) +#if (LZO_ARCH_GENERIC) +# define LZO_INFO_ARCH "generic" +#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +# define LZO_ARCH_I086 1 +# define LZO_ARCH_IA16 1 +# define LZO_INFO_ARCH "i086" +#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) +# define LZO_ARCH_ALPHA 1 +# define LZO_INFO_ARCH "alpha" +#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E)) +# define LZO_ARCH_ALPHA 1 +# define LZO_INFO_ARCH "alpha" +#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64) +# define LZO_ARCH_AMD64 1 +# define LZO_INFO_ARCH "amd64" +#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB)) +# define LZO_ARCH_ARM 1 +# define LZO_ARCH_ARM_THUMB 1 +# define LZO_INFO_ARCH "arm_thumb" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__) +# define LZO_ARCH_ARM 1 +# if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1) +# define LZO_ARCH_ARM_THUMB 1 +# define LZO_INFO_ARCH "arm_thumb" +# elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2) +# define LZO_INFO_ARCH "arm" +# else +# define LZO_INFO_ARCH "arm" +# endif +#elif defined(__arm__) || defined(_M_ARM) +# define LZO_ARCH_ARM 1 +# define LZO_INFO_ARCH "arm" +#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__) +# define LZO_ARCH_AVR 1 +# define LZO_INFO_ARCH "avr" +#elif defined(__avr32__) || defined(__AVR32__) +# define LZO_ARCH_AVR32 1 +# define LZO_INFO_ARCH "avr32" +#elif defined(__bfin__) +# define LZO_ARCH_BLACKFIN 1 +# define LZO_INFO_ARCH "blackfin" +#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__) +# define LZO_ARCH_C166 1 +# define LZO_INFO_ARCH "c166" +#elif defined(__cris__) +# define LZO_ARCH_CRIS 1 +# define LZO_INFO_ARCH "cris" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__) +# define LZO_ARCH_EZ80 1 +# define LZO_INFO_ARCH "ez80" +#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) +# define LZO_ARCH_H8300 1 +# define LZO_INFO_ARCH "h8300" +#elif defined(__hppa__) || defined(__hppa) +# define LZO_ARCH_HPPA 1 +# define LZO_INFO_ARCH "hppa" +#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386) +# define LZO_ARCH_I386 1 +# define LZO_ARCH_IA32 1 +# define LZO_INFO_ARCH "i386" +#elif (LZO_CC_ZORTECHC && defined(__I86__)) +# define LZO_ARCH_I386 1 +# define LZO_ARCH_IA32 1 +# define LZO_INFO_ARCH "i386" +#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386) +# define LZO_ARCH_I386 1 +# define LZO_ARCH_IA32 1 +# define LZO_INFO_ARCH "i386" +#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64) +# define LZO_ARCH_IA64 1 +# define LZO_INFO_ARCH "ia64" +#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__) +# define LZO_ARCH_M16C 1 +# define LZO_INFO_ARCH "m16c" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__) +# define LZO_ARCH_M16C 1 +# define LZO_INFO_ARCH "m16c" +#elif defined(__m32r__) +# define LZO_ARCH_M32R 1 +# define LZO_INFO_ARCH "m32r" +#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K) +# define LZO_ARCH_M68K 1 +# define LZO_INFO_ARCH "m68k" +#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__) +# define LZO_ARCH_MCS251 1 +# define LZO_INFO_ARCH "mcs251" +#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__) +# define LZO_ARCH_MCS51 1 +# define LZO_INFO_ARCH "mcs51" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__) +# define LZO_ARCH_MCS51 1 +# define LZO_INFO_ARCH "mcs51" +#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000) +# define LZO_ARCH_MIPS 1 +# define LZO_INFO_ARCH "mips" +#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__) +# define LZO_ARCH_MSP430 1 +# define LZO_INFO_ARCH "msp430" +#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__) +# define LZO_ARCH_MSP430 1 +# define LZO_INFO_ARCH "msp430" +#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR) +# define LZO_ARCH_POWERPC 1 +# define LZO_INFO_ARCH "powerpc" +#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x) +# define LZO_ARCH_S390 1 +# define LZO_INFO_ARCH "s390" +#elif defined(__sh__) || defined(_M_SH) +# define LZO_ARCH_SH 1 +# define LZO_INFO_ARCH "sh" +#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8) +# define LZO_ARCH_SPARC 1 +# define LZO_INFO_ARCH "sparc" +#elif defined(__SPU__) +# define LZO_ARCH_SPU 1 +# define LZO_INFO_ARCH "spu" +#elif (UINT_MAX == LZO_0xffffL) && defined(__z80) +# define LZO_ARCH_Z80 1 +# define LZO_INFO_ARCH "z80" +#elif (LZO_ARCH_CRAY_PVP) +# if defined(_CRAYSV1) +# define LZO_ARCH_CRAY_SV1 1 +# define LZO_INFO_ARCH "cray_sv1" +# elif (_ADDR64) +# define LZO_ARCH_CRAY_T90 1 +# define LZO_INFO_ARCH "cray_t90" +# elif (_ADDR32) +# define LZO_ARCH_CRAY_YMP 1 +# define LZO_INFO_ARCH "cray_ymp" +# else +# define LZO_ARCH_CRAY_XMP 1 +# define LZO_INFO_ARCH "cray_xmp" +# endif +#else +# define LZO_ARCH_UNKNOWN 1 +# define LZO_INFO_ARCH "unknown" +#endif +#endif +#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2) +# error "FIXME - missing define for CPU architecture" +#endif +#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32) +# error "FIXME - missing WIN32 define for CPU architecture" +#endif +#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64) +# error "FIXME - missing WIN64 define for CPU architecture" +#endif +#if (LZO_OS_OS216 || LZO_OS_WIN16) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#elif 1 && (LZO_OS_DOS16 && defined(BLX286)) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#elif 1 && (LZO_OS_DOS16 && defined(DOSX286)) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__)) +# define LZO_ARCH_I086PM 1 +# define LZO_ARCH_IA16PM 1 +#endif +#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM) +# error "this should not happen" +#endif +#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086) +# error "this should not happen" +#endif +#if (LZO_ARCH_I086) +# if (UINT_MAX != LZO_0xffffL) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if (LZO_ARCH_I386) +# if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__) +# error "this should not happen" +# endif +# if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__) +# error "this should not happen" +# endif +# if (ULONG_MAX != LZO_0xffffffffL) +# error "this should not happen" +# endif +#endif +#if !defined(__LZO_MM_OVERRIDE) +#if (LZO_ARCH_I086) +#if (UINT_MAX != LZO_0xffffL) +# error "this should not happen" +#endif +#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM) +# define LZO_MM_TINY 1 +#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM) +# define LZO_MM_HUGE 1 +#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL) +# define LZO_MM_SMALL 1 +#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM) +# define LZO_MM_MEDIUM 1 +#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM) +# define LZO_MM_COMPACT 1 +#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL) +# define LZO_MM_LARGE 1 +#elif (LZO_CC_AZTECC) +# if defined(_LARGE_CODE) && defined(_LARGE_DATA) +# define LZO_MM_LARGE 1 +# elif defined(_LARGE_CODE) +# define LZO_MM_MEDIUM 1 +# elif defined(_LARGE_DATA) +# define LZO_MM_COMPACT 1 +# else +# define LZO_MM_SMALL 1 +# endif +#elif (LZO_CC_ZORTECHC && defined(__VCM__)) +# define LZO_MM_LARGE 1 +#else +# error "unknown memory model" +#endif +#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +#define LZO_HAVE_MM_HUGE_PTR 1 +#define LZO_HAVE_MM_HUGE_ARRAY 1 +#if (LZO_MM_TINY) +# undef LZO_HAVE_MM_HUGE_ARRAY +#endif +#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC) +# undef LZO_HAVE_MM_HUGE_PTR +# undef LZO_HAVE_MM_HUGE_ARRAY +#elif (LZO_CC_DMC || LZO_CC_SYMANTECC) +# undef LZO_HAVE_MM_HUGE_ARRAY +#elif (LZO_CC_MSC && defined(_QC)) +# undef LZO_HAVE_MM_HUGE_ARRAY +# if (_MSC_VER < 600) +# undef LZO_HAVE_MM_HUGE_PTR +# endif +#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295)) +# undef LZO_HAVE_MM_HUGE_ARRAY +#endif +#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR) +# if (LZO_OS_DOS16) +# error "this should not happen" +# elif (LZO_CC_ZORTECHC) +# else +# error "this should not happen" +# endif +#endif +#ifdef __cplusplus +extern "C" { +#endif +#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200)) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295)) + extern void __near __cdecl _AHSHIFT(void); +# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) +#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16) +# define LZO_MM_AHSHIFT 12 +#elif (LZO_CC_WATCOMC) + extern unsigned char _HShift; +# define LZO_MM_AHSHIFT ((unsigned) _HShift) +#else +# error "FIXME - implement LZO_MM_AHSHIFT" +#endif +#ifdef __cplusplus +} +#endif +#endif +#elif (LZO_ARCH_C166) +#if !defined(__MODEL__) +# error "FIXME - C166 __MODEL__" +#elif ((__MODEL__) == 0) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 1) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 2) +# define LZO_MM_LARGE 1 +#elif ((__MODEL__) == 3) +# define LZO_MM_TINY 1 +#elif ((__MODEL__) == 4) +# define LZO_MM_XTINY 1 +#elif ((__MODEL__) == 5) +# define LZO_MM_XSMALL 1 +#else +# error "FIXME - C166 __MODEL__" +#endif +#elif (LZO_ARCH_MCS251) +#if !defined(__MODEL__) +# error "FIXME - MCS251 __MODEL__" +#elif ((__MODEL__) == 0) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 2) +# define LZO_MM_LARGE 1 +#elif ((__MODEL__) == 3) +# define LZO_MM_TINY 1 +#elif ((__MODEL__) == 4) +# define LZO_MM_XTINY 1 +#elif ((__MODEL__) == 5) +# define LZO_MM_XSMALL 1 +#else +# error "FIXME - MCS251 __MODEL__" +#endif +#elif (LZO_ARCH_MCS51) +#if !defined(__MODEL__) +# error "FIXME - MCS51 __MODEL__" +#elif ((__MODEL__) == 1) +# define LZO_MM_SMALL 1 +#elif ((__MODEL__) == 2) +# define LZO_MM_LARGE 1 +#elif ((__MODEL__) == 3) +# define LZO_MM_TINY 1 +#elif ((__MODEL__) == 4) +# define LZO_MM_XTINY 1 +#elif ((__MODEL__) == 5) +# define LZO_MM_XSMALL 1 +#else +# error "FIXME - MCS51 __MODEL__" +#endif +#elif (LZO_ARCH_CRAY_PVP) +# define LZO_MM_PVP 1 +#else +# define LZO_MM_FLAT 1 +#endif +#if (LZO_MM_COMPACT) +# define LZO_INFO_MM "compact" +#elif (LZO_MM_FLAT) +# define LZO_INFO_MM "flat" +#elif (LZO_MM_HUGE) +# define LZO_INFO_MM "huge" +#elif (LZO_MM_LARGE) +# define LZO_INFO_MM "large" +#elif (LZO_MM_MEDIUM) +# define LZO_INFO_MM "medium" +#elif (LZO_MM_PVP) +# define LZO_INFO_MM "pvp" +#elif (LZO_MM_SMALL) +# define LZO_INFO_MM "small" +#elif (LZO_MM_TINY) +# define LZO_INFO_MM "tiny" +#else +# error "unknown memory model" +#endif +#endif +#if defined(SIZEOF_SHORT) +# define LZO_SIZEOF_SHORT (SIZEOF_SHORT) +#endif +#if defined(SIZEOF_INT) +# define LZO_SIZEOF_INT (SIZEOF_INT) +#endif +#if defined(SIZEOF_LONG) +# define LZO_SIZEOF_LONG (SIZEOF_LONG) +#endif +#if defined(SIZEOF_LONG_LONG) +# define LZO_SIZEOF_LONG_LONG (SIZEOF_LONG_LONG) +#endif +#if defined(SIZEOF___INT16) +# define LZO_SIZEOF___INT16 (SIZEOF___INT16) +#endif +#if defined(SIZEOF___INT32) +# define LZO_SIZEOF___INT32 (SIZEOF___INT32) +#endif +#if defined(SIZEOF___INT64) +# define LZO_SIZEOF___INT64 (SIZEOF___INT64) +#endif +#if defined(SIZEOF_VOID_P) +# define LZO_SIZEOF_VOID_P (SIZEOF_VOID_P) +#endif +#if defined(SIZEOF_SIZE_T) +# define LZO_SIZEOF_SIZE_T (SIZEOF_SIZE_T) +#endif +#if defined(SIZEOF_PTRDIFF_T) +# define LZO_SIZEOF_PTRDIFF_T (SIZEOF_PTRDIFF_T) +#endif +#define __LZO_LSR(x,b) (((x)+0ul) >> (b)) +#if !defined(LZO_SIZEOF_SHORT) +# if (LZO_ARCH_CRAY_PVP) +# define LZO_SIZEOF_SHORT 8 +# elif (USHRT_MAX == LZO_0xffffL) +# define LZO_SIZEOF_SHORT 2 +# elif (__LZO_LSR(USHRT_MAX,7) == 1) +# define LZO_SIZEOF_SHORT 1 +# elif (__LZO_LSR(USHRT_MAX,15) == 1) +# define LZO_SIZEOF_SHORT 2 +# elif (__LZO_LSR(USHRT_MAX,31) == 1) +# define LZO_SIZEOF_SHORT 4 +# elif (__LZO_LSR(USHRT_MAX,63) == 1) +# define LZO_SIZEOF_SHORT 8 +# elif (__LZO_LSR(USHRT_MAX,127) == 1) +# define LZO_SIZEOF_SHORT 16 +# else +# error "LZO_SIZEOF_SHORT" +# endif +#endif +#if !defined(LZO_SIZEOF_INT) +# if (LZO_ARCH_CRAY_PVP) +# define LZO_SIZEOF_INT 8 +# elif (UINT_MAX == LZO_0xffffL) +# define LZO_SIZEOF_INT 2 +# elif (UINT_MAX == LZO_0xffffffffL) +# define LZO_SIZEOF_INT 4 +# elif (__LZO_LSR(UINT_MAX,7) == 1) +# define LZO_SIZEOF_INT 1 +# elif (__LZO_LSR(UINT_MAX,15) == 1) +# define LZO_SIZEOF_INT 2 +# elif (__LZO_LSR(UINT_MAX,31) == 1) +# define LZO_SIZEOF_INT 4 +# elif (__LZO_LSR(UINT_MAX,63) == 1) +# define LZO_SIZEOF_INT 8 +# elif (__LZO_LSR(UINT_MAX,127) == 1) +# define LZO_SIZEOF_INT 16 +# else +# error "LZO_SIZEOF_INT" +# endif +#endif +#if !defined(LZO_SIZEOF_LONG) +# if (ULONG_MAX == LZO_0xffffffffL) +# define LZO_SIZEOF_LONG 4 +# elif (__LZO_LSR(ULONG_MAX,7) == 1) +# define LZO_SIZEOF_LONG 1 +# elif (__LZO_LSR(ULONG_MAX,15) == 1) +# define LZO_SIZEOF_LONG 2 +# elif (__LZO_LSR(ULONG_MAX,31) == 1) +# define LZO_SIZEOF_LONG 4 +# elif (__LZO_LSR(ULONG_MAX,63) == 1) +# define LZO_SIZEOF_LONG 8 +# elif (__LZO_LSR(ULONG_MAX,127) == 1) +# define LZO_SIZEOF_LONG 16 +# else +# error "LZO_SIZEOF_LONG" +# endif +#endif +#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) +#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) +# if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__) +# if (LZO_CC_GNUC >= 0x030300ul) +# if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0) +# define LZO_SIZEOF_LONG_LONG LZO_SIZEOF_LONG +# elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1) +# define LZO_SIZEOF_LONG_LONG 4 +# endif +# endif +# endif +#endif +#endif +#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) +#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) +#if (LZO_ARCH_I086 && LZO_CC_DMC) +#elif (LZO_CC_CILLY) && defined(__GNUC__) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define LZO_SIZEOF_LONG_LONG 8 +#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400)) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_OS_WIN64 || defined(_WIN64)) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_ARCH_I386 && (LZO_CC_DMC)) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700))) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__))) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC)) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC)) +# define LZO_SIZEOF___INT64 8 +#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC)) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520))) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100))) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64)) +# define LZO_SIZEOF___INT64 8 +#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) +# define LZO_SIZEOF_LONG_LONG 8 +#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2) +#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +# define LZO_SIZEOF_LONG_LONG 8 +#endif +#endif +#endif +#if defined(__cplusplus) && (LZO_CC_GNUC) +# if (LZO_CC_GNUC < 0x020800ul) +# undef LZO_SIZEOF_LONG_LONG +# endif +#endif +#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG) +# undef LZO_SIZEOF_LONG_LONG +#endif +#if !defined(LZO_SIZEOF_VOID_P) +#if (LZO_ARCH_I086) +# define __LZO_WORDSIZE 2 +# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) +# define LZO_SIZEOF_VOID_P 2 +# elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) +# define LZO_SIZEOF_VOID_P 4 +# else +# error "LZO_MM" +# endif +#elif (LZO_ARCH_AVR || LZO_ARCH_Z80) +# define __LZO_WORDSIZE 1 +# define LZO_SIZEOF_VOID_P 2 +#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430) +# define LZO_SIZEOF_VOID_P 2 +#elif (LZO_ARCH_H8300) +# if defined(__NORMAL_MODE__) +# define __LZO_WORDSIZE 4 +# define LZO_SIZEOF_VOID_P 2 +# elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) +# define __LZO_WORDSIZE 4 +# define LZO_SIZEOF_VOID_P 4 +# else +# define __LZO_WORDSIZE 2 +# define LZO_SIZEOF_VOID_P 2 +# endif +# if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4) +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_INT +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_INT +# endif +#elif (LZO_ARCH_M16C) +# define __LZO_WORDSIZE 2 +# if defined(__m32c_cpu__) || defined(__m32cm_cpu__) +# define LZO_SIZEOF_VOID_P 4 +# else +# define LZO_SIZEOF_VOID_P 2 +# endif +#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) +# define __LZO_WORDSIZE 8 +# define LZO_SIZEOF_VOID_P 4 +#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64) +# define __LZO_WORDSIZE 8 +# define LZO_SIZEOF_VOID_P 8 +#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) +# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG +#elif (LZO_OS_OS400 || defined(__OS400__)) +# define __LZO_WORDSIZE LZO_SIZEOF_LONG +# define LZO_SIZEOF_VOID_P 16 +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG +#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) +# define LZO_SIZEOF_VOID_P 8 +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG +#elif (LZO_ARCH_SPU) +# if 0 +# define __LZO_WORDSIZE 16 +# endif +# define LZO_SIZEOF_VOID_P 4 +#else +# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG +#endif +#endif +#if !defined(LZO_WORDSIZE) +# if defined(__LZO_WORDSIZE) +# define LZO_WORDSIZE __LZO_WORDSIZE +# else +# define LZO_WORDSIZE LZO_SIZEOF_VOID_P +# endif +#endif +#if !defined(LZO_SIZEOF_SIZE_T) +#if (LZO_ARCH_I086 || LZO_ARCH_M16C) +# define LZO_SIZEOF_SIZE_T 2 +#else +# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_VOID_P +#endif +#endif +#if !defined(LZO_SIZEOF_PTRDIFF_T) +#if (LZO_ARCH_I086) +# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE) +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_VOID_P +# elif (LZO_MM_COMPACT || LZO_MM_LARGE) +# if (LZO_CC_BORLANDC || LZO_CC_TURBOC) +# define LZO_SIZEOF_PTRDIFF_T 4 +# else +# define LZO_SIZEOF_PTRDIFF_T 2 +# endif +# else +# error "LZO_MM" +# endif +#else +# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_SIZE_T +#endif +#endif +#if (LZO_ABI_NEUTRAL_ENDIAN) +# undef LZO_ABI_BIG_ENDIAN +# undef LZO_ABI_LITTLE_ENDIAN +#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN) +#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP) +# define LZO_ABI_BIG_ENDIAN 1 +#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__) +# if (__LITTLE_ENDIAN__ == 1) +# define LZO_ABI_LITTLE_ENDIAN 1 +# else +# define LZO_ABI_BIG_ENDIAN 1 +# endif +#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__) +# define LZO_ABI_LITTLE_ENDIAN 1 +#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__) +# define LZO_ABI_BIG_ENDIAN 1 +#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__) +# define LZO_ABI_LITTLE_ENDIAN 1 +#endif +#endif +#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN) +# error "this should not happen" +#endif +#if (LZO_ABI_BIG_ENDIAN) +# define LZO_INFO_ABI_ENDIAN "be" +#elif (LZO_ABI_LITTLE_ENDIAN) +# define LZO_INFO_ABI_ENDIAN "le" +#elif (LZO_ABI_NEUTRAL_ENDIAN) +# define LZO_INFO_ABI_ENDIAN "neutral" +#endif +#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) +# define LZO_ABI_I8LP16 1 +# define LZO_INFO_ABI_PM "i8lp16" +#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) +# define LZO_ABI_ILP16 1 +# define LZO_INFO_ABI_PM "ilp16" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4) +# define LZO_ABI_ILP32 1 +# define LZO_INFO_ABI_PM "ilp32" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8) +# define LZO_ABI_LLP64 1 +# define LZO_INFO_ABI_PM "llp64" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) +# define LZO_ABI_LP64 1 +# define LZO_INFO_ABI_PM "lp64" +#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) +# define LZO_ABI_ILP64 1 +# define LZO_INFO_ABI_PM "ilp64" +#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4) +# define LZO_ABI_IP32L64 1 +# define LZO_INFO_ABI_PM "ip32l64" +#endif +#if !defined(__LZO_LIBC_OVERRIDE) +#if (LZO_LIBC_NAKED) +# define LZO_INFO_LIBC "naked" +#elif (LZO_LIBC_FREESTANDING) +# define LZO_INFO_LIBC "freestanding" +#elif (LZO_LIBC_MOSTLY_FREESTANDING) +# define LZO_INFO_LIBC "mfreestanding" +#elif (LZO_LIBC_ISOC90) +# define LZO_INFO_LIBC "isoc90" +#elif (LZO_LIBC_ISOC99) +# define LZO_INFO_LIBC "isoc99" +#elif defined(__dietlibc__) +# define LZO_LIBC_DIETLIBC 1 +# define LZO_INFO_LIBC "dietlibc" +#elif defined(_NEWLIB_VERSION) +# define LZO_LIBC_NEWLIB 1 +# define LZO_INFO_LIBC "newlib" +#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__) +# if defined(__UCLIBC_SUBLEVEL__) +# define LZO_LIBC_UCLIBC (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__) +# else +# define LZO_LIBC_UCLIBC 0x00090bL +# endif +# define LZO_INFO_LIBC "uclibc" +#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__) +# define LZO_LIBC_GLIBC (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100) +# define LZO_INFO_LIBC "glibc" +#elif (LZO_CC_MWERKS) && defined(__MSL__) +# define LZO_LIBC_MSL __MSL__ +# define LZO_INFO_LIBC "msl" +#elif 1 && defined(__IAR_SYSTEMS_ICC__) +# define LZO_LIBC_ISOC90 1 +# define LZO_INFO_LIBC "isoc90" +#else +# define LZO_LIBC_DEFAULT 1 +# define LZO_INFO_LIBC "default" +#endif +#endif +#if !defined(__lzo_gnuc_extension__) +#if (LZO_CC_GNUC >= 0x020800ul) +# define __lzo_gnuc_extension__ __extension__ +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_gnuc_extension__ __extension__ +#else +# define __lzo_gnuc_extension__ /*empty*/ +#endif +#endif +#if !defined(__lzo_ua_volatile) +# define __lzo_ua_volatile volatile +#endif +#if !defined(__lzo_alignof) +#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) +# define __lzo_alignof(e) __alignof__(e) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700)) +# define __lzo_alignof(e) __alignof__(e) +#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) +# define __lzo_alignof(e) __alignof(e) +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_alignof(e) __alignof__(e) +#endif +#endif +#if defined(__lzo_alignof) +# define __lzo_HAVE_alignof 1 +#endif +#if !defined(__lzo_constructor) +#if (LZO_CC_GNUC >= 0x030400ul) +# define __lzo_constructor __attribute__((__constructor__,__used__)) +#elif (LZO_CC_GNUC >= 0x020700ul) +# define __lzo_constructor __attribute__((__constructor__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_constructor __attribute__((__constructor__)) +#endif +#endif +#if defined(__lzo_constructor) +# define __lzo_HAVE_constructor 1 +#endif +#if !defined(__lzo_destructor) +#if (LZO_CC_GNUC >= 0x030400ul) +# define __lzo_destructor __attribute__((__destructor__,__used__)) +#elif (LZO_CC_GNUC >= 0x020700ul) +# define __lzo_destructor __attribute__((__destructor__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_destructor __attribute__((__destructor__)) +#endif +#endif +#if defined(__lzo_destructor) +# define __lzo_HAVE_destructor 1 +#endif +#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor) +# error "this should not happen" +#endif +#if !defined(__lzo_inline) +#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295)) +#elif defined(__cplusplus) +# define __lzo_inline inline +#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550)) +# define __lzo_inline __inline +#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) +# define __lzo_inline __inline__ +#elif (LZO_CC_DMC) +# define __lzo_inline __inline +#elif (LZO_CC_INTELC) +# define __lzo_inline __inline +#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405)) +# define __lzo_inline __inline +#elif (LZO_CC_MSC && (_MSC_VER >= 900)) +# define __lzo_inline __inline +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_inline __inline__ +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +# define __lzo_inline inline +#endif +#endif +#if defined(__lzo_inline) +# define __lzo_HAVE_inline 1 +#else +# define __lzo_inline /*empty*/ +#endif +#if !defined(__lzo_forceinline) +#if (LZO_CC_GNUC >= 0x030200ul) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) +# define __lzo_forceinline __forceinline +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) +# define __lzo_forceinline __forceinline +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) +#endif +#endif +#if defined(__lzo_forceinline) +# define __lzo_HAVE_forceinline 1 +#else +# define __lzo_forceinline /*empty*/ +#endif +#if !defined(__lzo_noinline) +#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul) +# define __lzo_noinline __attribute__((__noinline__,__used__)) +#elif (LZO_CC_GNUC >= 0x030200ul) +# define __lzo_noinline __attribute__((__noinline__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC) +# define __lzo_noinline __declspec(noinline) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) +# define __lzo_noinline __attribute__((__noinline__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_noinline __attribute__((__noinline__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) +# define __lzo_noinline __declspec(noinline) +#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64)) +# if defined(__cplusplus) +# else +# define __lzo_noinline __declspec(noinline) +# endif +#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) +# define __lzo_noinline __attribute__((__noinline__)) +#endif +#endif +#if defined(__lzo_noinline) +# define __lzo_HAVE_noinline 1 +#else +# define __lzo_noinline /*empty*/ +#endif +#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline) +# error "this should not happen" +#endif +#if !defined(__lzo_noreturn) +#if (LZO_CC_GNUC >= 0x020700ul) +# define __lzo_noreturn __attribute__((__noreturn__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) +# define __lzo_noreturn __declspec(noreturn) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) +# define __lzo_noreturn __attribute__((__noreturn__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_noreturn __attribute__((__noreturn__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) +# define __lzo_noreturn __declspec(noreturn) +#endif +#endif +#if defined(__lzo_noreturn) +# define __lzo_HAVE_noreturn 1 +#else +# define __lzo_noreturn /*empty*/ +#endif +#if !defined(__lzo_nothrow) +#if (LZO_CC_GNUC >= 0x030300ul) +# define __lzo_nothrow __attribute__((__nothrow__)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus) +# define __lzo_nothrow __declspec(nothrow) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC) +# define __lzo_nothrow __attribute__((__nothrow__)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_nothrow __attribute__((__nothrow__)) +#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus) +# define __lzo_nothrow __declspec(nothrow) +#endif +#endif +#if defined(__lzo_nothrow) +# define __lzo_HAVE_nothrow 1 +#else +# define __lzo_nothrow /*empty*/ +#endif +#if !defined(__lzo_restrict) +#if (LZO_CC_GNUC >= 0x030400ul) +# define __lzo_restrict __restrict__ +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) +# define __lzo_restrict __restrict__ +#elif (LZO_CC_CLANG || LZO_CC_LLVM) +# define __lzo_restrict __restrict__ +#elif (LZO_CC_MSC && (_MSC_VER >= 1400)) +# define __lzo_restrict __restrict +#endif +#endif +#if defined(__lzo_restrict) +# define __lzo_HAVE_restrict 1 +#else +# define __lzo_restrict /*empty*/ +#endif +#if !defined(__lzo_likely) && !defined(__lzo_unlikely) +#if (LZO_CC_GNUC >= 0x030200ul) +# define __lzo_likely(e) (__builtin_expect(!!(e),1)) +# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) +#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800)) +# define __lzo_likely(e) (__builtin_expect(!!(e),1)) +# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) +#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define __lzo_likely(e) (__builtin_expect(!!(e),1)) +# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) +#endif +#endif +#if defined(__lzo_likely) +# define __lzo_HAVE_likely 1 +#else +# define __lzo_likely(e) (e) +#endif +#if defined(__lzo_unlikely) +# define __lzo_HAVE_unlikely 1 +#else +# define __lzo_unlikely(e) (e) +#endif +#if !defined(LZO_UNUSED) +# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) +# define LZO_UNUSED(var) ((void) &var) +# elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC) +# define LZO_UNUSED(var) if (&var) ; else +# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define LZO_UNUSED(var) ((void) var) +# elif (LZO_CC_MSC && (_MSC_VER < 900)) +# define LZO_UNUSED(var) if (&var) ; else +# elif (LZO_CC_KEILC) +# define LZO_UNUSED(var) {extern int __lzo_unused[1-2*!(sizeof(var)>0)];} +# elif (LZO_CC_PACIFICC) +# define LZO_UNUSED(var) ((void) sizeof(var)) +# elif (LZO_CC_WATCOMC) && defined(__cplusplus) +# define LZO_UNUSED(var) ((void) var) +# else +# define LZO_UNUSED(var) ((void) &var) +# endif +#endif +#if !defined(LZO_UNUSED_FUNC) +# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) +# define LZO_UNUSED_FUNC(func) ((void) func) +# elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC) +# define LZO_UNUSED_FUNC(func) if (func) ; else +# elif (LZO_CC_CLANG || LZO_CC_LLVM) +# define LZO_UNUSED_FUNC(func) ((void) &func) +# elif (LZO_CC_MSC && (_MSC_VER < 900)) +# define LZO_UNUSED_FUNC(func) if (func) ; else +# elif (LZO_CC_MSC) +# define LZO_UNUSED_FUNC(func) ((void) &func) +# elif (LZO_CC_KEILC || LZO_CC_PELLESC) +# define LZO_UNUSED_FUNC(func) {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];} +# else +# define LZO_UNUSED_FUNC(func) ((void) func) +# endif +#endif +#if !defined(LZO_UNUSED_LABEL) +# if (LZO_CC_WATCOMC) && defined(__cplusplus) +# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l +# elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC) +# define LZO_UNUSED_LABEL(l) if (0) goto l +# else +# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l +# endif +#endif +#if !defined(LZO_DEFINE_UNINITIALIZED_VAR) +# if 0 +# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var +# elif 0 && (LZO_CC_GNUC) +# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = var +# else +# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = init +# endif +#endif +#if !defined(LZO_UNCONST_CAST) +# if 0 && defined(__cplusplus) +# define LZO_UNCONST_CAST(t,e) (const_cast (e)) +# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) +# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e)))))) +# else +# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((const void *) (e))))) +# endif +#endif +#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER) +# if (LZO_CC_AZTECC || LZO_CC_ZORTECHC) +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; +# elif (LZO_CC_DMC || LZO_CC_SYMANTECC) +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1u-2*!(e)]; +# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; +# else +# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-2*!(e)]; +# endif +#endif +#if !defined(LZO_COMPILE_TIME_ASSERT) +# if (LZO_CC_AZTECC) +# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-!(e)];} +# elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) +# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; +# elif (LZO_CC_MSC && (_MSC_VER < 900)) +# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; +# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) +# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; +# else +# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-2*!(e)];} +# endif +#endif +#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) +# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC) +# elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) +# define __lzo_cdecl __cdecl +# define __lzo_cdecl_atexit /*empty*/ +# define __lzo_cdecl_main __cdecl +# if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) +# define __lzo_cdecl_qsort __pascal +# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) +# define __lzo_cdecl_qsort _stdcall +# else +# define __lzo_cdecl_qsort __cdecl +# endif +# elif (LZO_CC_WATCOMC) +# define __lzo_cdecl __cdecl +# else +# define __lzo_cdecl __cdecl +# define __lzo_cdecl_atexit __cdecl +# define __lzo_cdecl_main __cdecl +# define __lzo_cdecl_qsort __cdecl +# endif +# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC) +# elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) +# define __lzo_cdecl_sighandler __pascal +# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) +# define __lzo_cdecl_sighandler _stdcall +# elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE) +# define __lzo_cdecl_sighandler __clrcall +# elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700)) +# if defined(_DLL) +# define __lzo_cdecl_sighandler _far _cdecl _loadds +# elif defined(_MT) +# define __lzo_cdecl_sighandler _far _cdecl +# else +# define __lzo_cdecl_sighandler _cdecl +# endif +# else +# define __lzo_cdecl_sighandler __cdecl +# endif +#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC) +# define __lzo_cdecl __cdecl +#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) +# define __lzo_cdecl cdecl +#endif +#if !defined(__lzo_cdecl) +# define __lzo_cdecl /*empty*/ +#endif +#if !defined(__lzo_cdecl_atexit) +# define __lzo_cdecl_atexit /*empty*/ +#endif +#if !defined(__lzo_cdecl_main) +# define __lzo_cdecl_main /*empty*/ +#endif +#if !defined(__lzo_cdecl_qsort) +# define __lzo_cdecl_qsort /*empty*/ +#endif +#if !defined(__lzo_cdecl_sighandler) +# define __lzo_cdecl_sighandler /*empty*/ +#endif +#if !defined(__lzo_cdecl_va) +# define __lzo_cdecl_va __lzo_cdecl +#endif +#if !(LZO_CFG_NO_WINDOWS_H) +#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64) +# if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000)) +# elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) +# elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul))) +# else +# define LZO_HAVE_WINDOWS_H 1 +# endif +#endif +#endif +#if (LZO_ARCH_ALPHA) +# define LZO_OPT_AVOID_UINT_INDEX 1 +# define LZO_OPT_AVOID_SHORT 1 +# define LZO_OPT_AVOID_USHORT 1 +#elif (LZO_ARCH_AMD64) +# define LZO_OPT_AVOID_INT_INDEX 1 +# define LZO_OPT_AVOID_UINT_INDEX 1 +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# define LZO_OPT_UNALIGNED64 1 +#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB) +#elif (LZO_ARCH_ARM) +# define LZO_OPT_AVOID_SHORT 1 +# define LZO_OPT_AVOID_USHORT 1 +#elif (LZO_ARCH_CRIS) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +#elif (LZO_ARCH_I386) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +#elif (LZO_ARCH_IA64) +# define LZO_OPT_AVOID_INT_INDEX 1 +# define LZO_OPT_AVOID_UINT_INDEX 1 +# define LZO_OPT_PREFER_POSTINC 1 +#elif (LZO_ARCH_M68K) +# define LZO_OPT_PREFER_POSTINC 1 +# define LZO_OPT_PREFER_PREDEC 1 +# if defined(__mc68020__) && !defined(__mcoldfire__) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# endif +#elif (LZO_ARCH_MIPS) +# define LZO_OPT_AVOID_UINT_INDEX 1 +#elif (LZO_ARCH_POWERPC) +# define LZO_OPT_PREFER_PREINC 1 +# define LZO_OPT_PREFER_PREDEC 1 +# if (LZO_ABI_BIG_ENDIAN) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# endif +#elif (LZO_ARCH_S390) +# define LZO_OPT_UNALIGNED16 1 +# define LZO_OPT_UNALIGNED32 1 +# if (LZO_SIZEOF_SIZE_T == 8) +# define LZO_OPT_UNALIGNED64 1 +# endif +#elif (LZO_ARCH_SH) +# define LZO_OPT_PREFER_POSTINC 1 +# define LZO_OPT_PREFER_PREDEC 1 +#endif +#ifndef LZO_CFG_NO_INLINE_ASM +#if (LZO_CC_LLVM) +# define LZO_CFG_NO_INLINE_ASM 1 +#endif +#endif +#ifndef LZO_CFG_NO_UNALIGNED +#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC) +# define LZO_CFG_NO_UNALIGNED 1 +#endif +#endif +#if (LZO_CFG_NO_UNALIGNED) +# undef LZO_OPT_UNALIGNED16 +# undef LZO_OPT_UNALIGNED32 +# undef LZO_OPT_UNALIGNED64 +#endif +#if (LZO_CFG_NO_INLINE_ASM) +#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) +# define LZO_ASM_SYNTAX_MSC 1 +#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) +#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul)) +#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) +# define LZO_ASM_SYNTAX_GNUC 1 +#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) +# define LZO_ASM_SYNTAX_GNUC 1 +#endif +#if (LZO_ASM_SYNTAX_GNUC) +#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) +# define __LZO_ASM_CLOBBER "ax" +#elif (LZO_CC_INTELC) +# define __LZO_ASM_CLOBBER "memory" +#else +# define __LZO_ASM_CLOBBER "cc", "memory" +#endif +#endif +#if defined(__LZO_INFOSTR_MM) +#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM)) +# define __LZO_INFOSTR_MM "" +#elif defined(LZO_INFO_MM) +# define __LZO_INFOSTR_MM "." LZO_INFO_MM +#else +# define __LZO_INFOSTR_MM "" +#endif +#if defined(__LZO_INFOSTR_PM) +#elif defined(LZO_INFO_ABI_PM) +# define __LZO_INFOSTR_PM "." LZO_INFO_ABI_PM +#else +# define __LZO_INFOSTR_PM "" +#endif +#if defined(__LZO_INFOSTR_ENDIAN) +#elif defined(LZO_INFO_ABI_ENDIAN) +# define __LZO_INFOSTR_ENDIAN "." LZO_INFO_ABI_ENDIAN +#else +# define __LZO_INFOSTR_ENDIAN "" +#endif +#if defined(__LZO_INFOSTR_OSNAME) +#elif defined(LZO_INFO_OS_CONSOLE) +# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_CONSOLE +#elif defined(LZO_INFO_OS_POSIX) +# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_POSIX +#else +# define __LZO_INFOSTR_OSNAME LZO_INFO_OS +#endif +#if defined(__LZO_INFOSTR_LIBC) +#elif defined(LZO_INFO_LIBC) +# define __LZO_INFOSTR_LIBC "." LZO_INFO_LIBC +#else +# define __LZO_INFOSTR_LIBC "" +#endif +#if defined(__LZO_INFOSTR_CCVER) +#elif defined(LZO_INFO_CCVER) +# define __LZO_INFOSTR_CCVER " " LZO_INFO_CCVER +#else +# define __LZO_INFOSTR_CCVER "" +#endif +#define LZO_INFO_STRING \ + LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \ + " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER + +#endif + +#endif + +#undef LZO_HAVE_CONFIG_H +#include "minilzo.h" + +#if !defined(MINILZO_VERSION) || (MINILZO_VERSION != 0x2060) +# error "version mismatch in miniLZO source files" +#endif + +#ifdef MINILZO_HAVE_CONFIG_H +# define LZO_HAVE_CONFIG_H 1 +#endif + +#ifndef __LZO_CONF_H +#define __LZO_CONF_H 1 + +#if !defined(__LZO_IN_MINILZO) +#if (LZO_CFG_FREESTANDING) +# define LZO_LIBC_FREESTANDING 1 +# define LZO_OS_FREESTANDING 1 +# define ACC_LIBC_FREESTANDING 1 +# define ACC_OS_FREESTANDING 1 +#endif +#if (LZO_CFG_NO_UNALIGNED) +# define ACC_CFG_NO_UNALIGNED 1 +#endif +#if (LZO_ARCH_GENERIC) +# define ACC_ARCH_GENERIC 1 +#endif +#if (LZO_ABI_NEUTRAL_ENDIAN) +# define ACC_ABI_NEUTRAL_ENDIAN 1 +#endif +#if (LZO_HAVE_CONFIG_H) +# define ACC_CONFIG_NO_HEADER 1 +#endif +#if defined(LZO_CFG_EXTRA_CONFIG_HEADER) +# include LZO_CFG_EXTRA_CONFIG_HEADER +#endif +#if defined(__LZOCONF_H) || defined(__LZOCONF_H_INCLUDED) +# error "include this file first" +#endif +#include "lzo/lzoconf.h" +#endif + +#if (LZO_VERSION < 0x02000) || !defined(__LZOCONF_H_INCLUDED) +# error "version mismatch" +#endif + +#if (LZO_CC_BORLANDC && LZO_ARCH_I086) +# pragma option -h +#endif + +#if (LZO_CC_MSC && (_MSC_VER >= 1000)) +# pragma warning(disable: 4127 4701) +#endif +#if (LZO_CC_MSC && (_MSC_VER >= 1300)) +# pragma warning(disable: 4820) +# pragma warning(disable: 4514 4710 4711) +#endif + +#if (LZO_CC_SUNPROC) +#if !defined(__cplusplus) +# pragma error_messages(off,E_END_OF_LOOP_CODE_NOT_REACHED) +# pragma error_messages(off,E_LOOP_NOT_ENTERED_AT_TOP) +# pragma error_messages(off,E_STATEMENT_NOT_REACHED) +#endif +#endif + +#if (__LZO_MMODEL_HUGE) && !(LZO_HAVE_MM_HUGE_PTR) +# error "this should not happen - check defines for __huge" +#endif + +#if defined(__LZO_IN_MINILZO) || defined(LZO_CFG_FREESTANDING) +#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) +# define ACC_WANT_ACC_INCD_H 1 +# define ACC_WANT_ACC_INCE_H 1 +# define ACC_WANT_ACC_INCI_H 1 +#elif 1 +# include +#else +# define ACC_WANT_ACC_INCD_H 1 +#endif + +#if (LZO_ARCH_I086) +# define ACC_MM_AHSHIFT LZO_MM_AHSHIFT +# define ACC_PTR_FP_OFF(x) (((const unsigned __far*)&(x))[0]) +# define ACC_PTR_FP_SEG(x) (((const unsigned __far*)&(x))[1]) +# define ACC_PTR_MK_FP(s,o) ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o))) +#endif + +#if !defined(lzo_uintptr_t) +# if defined(__LZO_MMODEL_HUGE) +# define lzo_uintptr_t unsigned long +# elif 1 && defined(LZO_OS_OS400) && (LZO_SIZEOF_VOID_P == 16) +# define __LZO_UINTPTR_T_IS_POINTER 1 + typedef char* lzo_uintptr_t; +# define lzo_uintptr_t lzo_uintptr_t +# elif (LZO_SIZEOF_SIZE_T == LZO_SIZEOF_VOID_P) +# define lzo_uintptr_t size_t +# elif (LZO_SIZEOF_LONG == LZO_SIZEOF_VOID_P) +# define lzo_uintptr_t unsigned long +# elif (LZO_SIZEOF_INT == LZO_SIZEOF_VOID_P) +# define lzo_uintptr_t unsigned int +# elif (LZO_SIZEOF_LONG_LONG == LZO_SIZEOF_VOID_P) +# define lzo_uintptr_t unsigned long long +# else +# define lzo_uintptr_t size_t +# endif +#endif +LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp)) + +#if 1 && !defined(LZO_CFG_FREESTANDING) +#if 1 && !defined(HAVE_STRING_H) +#define HAVE_STRING_H 1 +#endif +#if 1 && !defined(HAVE_MEMCMP) +#define HAVE_MEMCMP 1 +#endif +#if 1 && !defined(HAVE_MEMCPY) +#define HAVE_MEMCPY 1 +#endif +#if 1 && !defined(HAVE_MEMMOVE) +#define HAVE_MEMMOVE 1 +#endif +#if 1 && !defined(HAVE_MEMSET) +#define HAVE_MEMSET 1 +#endif +#endif + +#if 1 && defined(HAVE_STRING_H) +#include +#endif + +#if (LZO_CFG_FREESTANDING) +# undef HAVE_MEMCMP +# undef HAVE_MEMCPY +# undef HAVE_MEMMOVE +# undef HAVE_MEMSET +#endif + +#if !(HAVE_MEMCMP) +# undef memcmp +# define memcmp(a,b,c) lzo_memcmp(a,b,c) +#elif !(__LZO_MMODEL_HUGE) +# undef lzo_memcmp +# define lzo_memcmp(a,b,c) memcmp(a,b,c) +#endif +#if !(HAVE_MEMCPY) +# undef memcpy +# define memcpy(a,b,c) lzo_memcpy(a,b,c) +#elif !(__LZO_MMODEL_HUGE) +# undef lzo_memcpy +# define lzo_memcpy(a,b,c) memcpy(a,b,c) +#endif +#if !(HAVE_MEMMOVE) +# undef memmove +# define memmove(a,b,c) lzo_memmove(a,b,c) +#elif !(__LZO_MMODEL_HUGE) +# undef lzo_memmove +# define lzo_memmove(a,b,c) memmove(a,b,c) +#endif +#if !(HAVE_MEMSET) +# undef memset +# define memset(a,b,c) lzo_memset(a,b,c) +#elif !(__LZO_MMODEL_HUGE) +# undef lzo_memset +# define lzo_memset(a,b,c) memset(a,b,c) +#endif + +#undef NDEBUG +#if (LZO_CFG_FREESTANDING) +# undef LZO_DEBUG +# define NDEBUG 1 +# undef assert +# define assert(e) ((void)0) +#else +# if !defined(LZO_DEBUG) +# define NDEBUG 1 +# endif +# include +#endif + +#if 0 && defined(__BOUNDS_CHECKING_ON) +# include +#else +# define BOUNDS_CHECKING_OFF_DURING(stmt) stmt +# define BOUNDS_CHECKING_OFF_IN_EXPR(expr) (expr) +#endif + +#if !defined(__lzo_inline) +# define __lzo_inline /*empty*/ +#endif +#if !defined(__lzo_forceinline) +# define __lzo_forceinline /*empty*/ +#endif +#if !defined(__lzo_noinline) +# define __lzo_noinline /*empty*/ +#endif + +#if (LZO_CFG_PGO) +# undef __acc_likely +# undef __acc_unlikely +# undef __lzo_likely +# undef __lzo_unlikely +# define __acc_likely(e) (e) +# define __acc_unlikely(e) (e) +# define __lzo_likely(e) (e) +# define __lzo_unlikely(e) (e) +#endif + +#if 1 +# define LZO_BYTE(x) ((unsigned char) (x)) +#else +# define LZO_BYTE(x) ((unsigned char) ((x) & 0xff)) +#endif + +#define LZO_MAX(a,b) ((a) >= (b) ? (a) : (b)) +#define LZO_MIN(a,b) ((a) <= (b) ? (a) : (b)) +#define LZO_MAX3(a,b,c) ((a) >= (b) ? LZO_MAX(a,c) : LZO_MAX(b,c)) +#define LZO_MIN3(a,b,c) ((a) <= (b) ? LZO_MIN(a,c) : LZO_MIN(b,c)) + +#define lzo_sizeof(type) ((lzo_uint) (sizeof(type))) + +#define LZO_HIGH(array) ((lzo_uint) (sizeof(array)/sizeof(*(array)))) + +#define LZO_SIZE(bits) (1u << (bits)) +#define LZO_MASK(bits) (LZO_SIZE(bits) - 1) + +#define LZO_LSIZE(bits) (1ul << (bits)) +#define LZO_LMASK(bits) (LZO_LSIZE(bits) - 1) + +#define LZO_USIZE(bits) ((lzo_uint) 1 << (bits)) +#define LZO_UMASK(bits) (LZO_USIZE(bits) - 1) + +#if !defined(DMUL) +#if 0 + +# define DMUL(a,b) ((lzo_xint) ((lzo_uint32)(a) * (lzo_uint32)(b))) +#else +# define DMUL(a,b) ((lzo_xint) ((a) * (b))) +#endif +#endif + +#if 1 && (LZO_ARCH_AMD64 || LZO_ARCH_I386 || LZO_ARCH_POWERPC) +# if (LZO_SIZEOF_SHORT == 2) +# define LZO_UNALIGNED_OK_2 1 +# endif +# if (LZO_SIZEOF_INT == 4) +# define LZO_UNALIGNED_OK_4 1 +# endif +#endif +#if 1 && (LZO_ARCH_AMD64) +# if defined(LZO_UINT64_MAX) +# define LZO_UNALIGNED_OK_8 1 +# endif +#endif +#if (LZO_CFG_NO_UNALIGNED) +# undef LZO_UNALIGNED_OK_2 +# undef LZO_UNALIGNED_OK_4 +# undef LZO_UNALIGNED_OK_8 +#endif + +#undef UA_GET16 +#undef UA_SET16 +#undef UA_COPY16 +#undef UA_GET32 +#undef UA_SET32 +#undef UA_COPY32 +#undef UA_GET64 +#undef UA_SET64 +#undef UA_COPY64 +#if defined(LZO_UNALIGNED_OK_2) + LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(unsigned short) == 2) +# if 1 && defined(ACC_UA_COPY16) +# define UA_GET16 ACC_UA_GET16 +# define UA_SET16 ACC_UA_SET16 +# define UA_COPY16 ACC_UA_COPY16 +# else +# define UA_GET16(p) (* (__lzo_ua_volatile const lzo_ushortp) (__lzo_ua_volatile const lzo_voidp) (p)) +# define UA_SET16(p,v) ((* (__lzo_ua_volatile lzo_ushortp) (__lzo_ua_volatile lzo_voidp) (p)) = (unsigned short) (v)) +# define UA_COPY16(d,s) UA_SET16(d, UA_GET16(s)) +# endif +#endif +#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4) + LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint32) == 4) +# if 1 && defined(ACC_UA_COPY32) +# define UA_GET32 ACC_UA_GET32 +# define UA_SET32 ACC_UA_SET32 +# define UA_COPY32 ACC_UA_COPY32 +# else +# define UA_GET32(p) (* (__lzo_ua_volatile const lzo_uint32p) (__lzo_ua_volatile const lzo_voidp) (p)) +# define UA_SET32(p,v) ((* (__lzo_ua_volatile lzo_uint32p) (__lzo_ua_volatile lzo_voidp) (p)) = (lzo_uint32) (v)) +# define UA_COPY32(d,s) UA_SET32(d, UA_GET32(s)) +# endif +#endif +#if defined(LZO_UNALIGNED_OK_8) + LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint64) == 8) +# if 1 && defined(ACC_UA_COPY64) +# define UA_GET64 ACC_UA_GET64 +# define UA_SET64 ACC_UA_SET64 +# define UA_COPY64 ACC_UA_COPY64 +# else +# define UA_GET64(p) (* (__lzo_ua_volatile const lzo_uint64p) (__lzo_ua_volatile const lzo_voidp) (p)) +# define UA_SET64(p,v) ((* (__lzo_ua_volatile lzo_uint64p) (__lzo_ua_volatile lzo_voidp) (p)) = (lzo_uint64) (v)) +# define UA_COPY64(d,s) UA_SET64(d, UA_GET64(s)) +# endif +#endif + +#define MEMCPY8_DS(dest,src,len) \ + lzo_memcpy(dest,src,len); dest += len; src += len + +#define BZERO8_PTR(s,l,n) \ + lzo_memset((lzo_voidp)(s),0,(lzo_uint)(l)*(n)) + +#define MEMCPY_DS(dest,src,len) \ + do *dest++ = *src++; while (--len > 0) + +LZO_EXTERN(const lzo_bytep) lzo_copyright(void); + +#ifndef __LZO_PTR_H +#define __LZO_PTR_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(lzo_uintptr_t) +# if (__LZO_MMODEL_HUGE) +# define lzo_uintptr_t unsigned long +# else +# define lzo_uintptr_t acc_uintptr_t +# ifdef __ACC_INTPTR_T_IS_POINTER +# define __LZO_UINTPTR_T_IS_POINTER 1 +# endif +# endif +#endif + +#if (LZO_ARCH_I086) +#define PTR(a) ((lzo_bytep) (a)) +#define PTR_ALIGNED_4(a) ((ACC_PTR_FP_OFF(a) & 3) == 0) +#define PTR_ALIGNED2_4(a,b) (((ACC_PTR_FP_OFF(a) | ACC_PTR_FP_OFF(b)) & 3) == 0) +#elif (LZO_MM_PVP) +#define PTR(a) ((lzo_bytep) (a)) +#define PTR_ALIGNED_8(a) ((((lzo_uintptr_t)(a)) >> 61) == 0) +#define PTR_ALIGNED2_8(a,b) ((((lzo_uintptr_t)(a)|(lzo_uintptr_t)(b)) >> 61) == 0) +#else +#define PTR(a) ((lzo_uintptr_t) (a)) +#define PTR_LINEAR(a) PTR(a) +#define PTR_ALIGNED_4(a) ((PTR_LINEAR(a) & 3) == 0) +#define PTR_ALIGNED_8(a) ((PTR_LINEAR(a) & 7) == 0) +#define PTR_ALIGNED2_4(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 3) == 0) +#define PTR_ALIGNED2_8(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 7) == 0) +#endif + +#define PTR_LT(a,b) (PTR(a) < PTR(b)) +#define PTR_GE(a,b) (PTR(a) >= PTR(b)) +#define PTR_DIFF(a,b) (PTR(a) - PTR(b)) +#define pd(a,b) ((lzo_uint) ((a)-(b))) + +LZO_EXTERN(lzo_uintptr_t) +__lzo_ptr_linear(const lzo_voidp ptr); + +typedef union +{ + char a_char; + unsigned char a_uchar; + short a_short; + unsigned short a_ushort; + int a_int; + unsigned int a_uint; + long a_long; + unsigned long a_ulong; + lzo_int a_lzo_int; + lzo_uint a_lzo_uint; + lzo_int32 a_lzo_int32; + lzo_uint32 a_lzo_uint32; +#if defined(LZO_UINT64_MAX) + lzo_int64 a_lzo_int64; + lzo_uint64 a_lzo_uint64; +#endif + ptrdiff_t a_ptrdiff_t; + lzo_uintptr_t a_lzo_uintptr_t; + lzo_voidp a_lzo_voidp; + void * a_void_p; + lzo_bytep a_lzo_bytep; + lzo_bytepp a_lzo_bytepp; + lzo_uintp a_lzo_uintp; + lzo_uint * a_lzo_uint_p; + lzo_uint32p a_lzo_uint32p; + lzo_uint32 * a_lzo_uint32_p; + unsigned char * a_uchar_p; + char * a_char_p; +} +lzo_full_align_t; + +#ifdef __cplusplus +} +#endif + +#endif + +#ifndef LZO_DETERMINISTIC +#define LZO_DETERMINISTIC 1 +#endif + +#ifndef LZO_DICT_USE_PTR +#define LZO_DICT_USE_PTR 1 +#if 0 && (LZO_ARCH_I086) +# undef LZO_DICT_USE_PTR +# define LZO_DICT_USE_PTR 0 +#endif +#endif + +#if (LZO_DICT_USE_PTR) +# define lzo_dict_t const lzo_bytep +# define lzo_dict_p lzo_dict_t __LZO_MMODEL * +#else +# define lzo_dict_t lzo_uint +# define lzo_dict_p lzo_dict_t __LZO_MMODEL * +#endif + +#endif + +#if !defined(MINILZO_CFG_SKIP_LZO_PTR) + +LZO_PUBLIC(lzo_uintptr_t) +__lzo_ptr_linear(const lzo_voidp ptr) +{ + lzo_uintptr_t p; + +#if (LZO_ARCH_I086) + p = (((lzo_uintptr_t)(ACC_PTR_FP_SEG(ptr))) << (16 - ACC_MM_AHSHIFT)) + (ACC_PTR_FP_OFF(ptr)); +#elif (LZO_MM_PVP) + p = (lzo_uintptr_t) (ptr); + p = (p << 3) | (p >> 61); +#else + p = (lzo_uintptr_t) PTR_LINEAR(ptr); +#endif + + return p; +} + +LZO_PUBLIC(unsigned) +__lzo_align_gap(const lzo_voidp ptr, lzo_uint size) +{ +#if defined(__LZO_UINTPTR_T_IS_POINTER) + size_t n = (size_t) ptr; + n = (((n + size - 1) / size) * size) - n; +#else + lzo_uintptr_t p, n; + p = __lzo_ptr_linear(ptr); + n = (((p + size - 1) / size) * size) - p; +#endif + + assert(size > 0); + assert((long)n >= 0); + assert(n <= size); + return (unsigned)n; +} + +#endif +#if !defined(MINILZO_CFG_SKIP_LZO_UTIL) + +/* If you use the LZO library in a product, I would appreciate that you + * keep this copyright string in the executable of your product. + */ + +static const char __lzo_copyright[] = +#if !defined(__LZO_IN_MINLZO) + LZO_VERSION_STRING; +#else + "\r\n\n" + "LZO data compression library.\n" + "$Copyright: LZO Copyright (C) 1996-2011 Markus Franz Xaver Johannes Oberhumer\n" + "\n" + "http://www.oberhumer.com $\n\n" + "$Id: LZO version: v" LZO_VERSION_STRING ", " LZO_VERSION_DATE " $\n" + "$Info: " LZO_INFO_STRING " $\n"; +#endif + +LZO_PUBLIC(const lzo_bytep) +lzo_copyright(void) +{ +#if (LZO_OS_DOS16 && LZO_CC_TURBOC) + return (lzo_voidp) __lzo_copyright; +#else + return (const lzo_bytep) __lzo_copyright; +#endif +} + +LZO_PUBLIC(unsigned) +lzo_version(void) +{ + return LZO_VERSION; +} + +LZO_PUBLIC(const char *) +lzo_version_string(void) +{ + return LZO_VERSION_STRING; +} + +LZO_PUBLIC(const char *) +lzo_version_date(void) +{ + return LZO_VERSION_DATE; +} + +LZO_PUBLIC(const lzo_charp) +_lzo_version_string(void) +{ + return LZO_VERSION_STRING; +} + +LZO_PUBLIC(const lzo_charp) +_lzo_version_date(void) +{ + return LZO_VERSION_DATE; +} + +#define LZO_BASE 65521u +#define LZO_NMAX 5552 + +#define LZO_DO1(buf,i) s1 += buf[i]; s2 += s1 +#define LZO_DO2(buf,i) LZO_DO1(buf,i); LZO_DO1(buf,i+1); +#define LZO_DO4(buf,i) LZO_DO2(buf,i); LZO_DO2(buf,i+2); +#define LZO_DO8(buf,i) LZO_DO4(buf,i); LZO_DO4(buf,i+4); +#define LZO_DO16(buf,i) LZO_DO8(buf,i); LZO_DO8(buf,i+8); + +LZO_PUBLIC(lzo_uint32) +lzo_adler32(lzo_uint32 adler, const lzo_bytep buf, lzo_uint len) +{ + lzo_uint32 s1 = adler & 0xffff; + lzo_uint32 s2 = (adler >> 16) & 0xffff; + unsigned k; + + if (buf == NULL) + return 1; + + while (len > 0) + { + k = len < LZO_NMAX ? (unsigned) len : LZO_NMAX; + len -= k; + if (k >= 16) do + { + LZO_DO16(buf,0); + buf += 16; + k -= 16; + } while (k >= 16); + if (k != 0) do + { + s1 += *buf++; + s2 += s1; + } while (--k > 0); + s1 %= LZO_BASE; + s2 %= LZO_BASE; + } + return (s2 << 16) | s1; +} + +#undef LZO_DO1 +#undef LZO_DO2 +#undef LZO_DO4 +#undef LZO_DO8 +#undef LZO_DO16 + +#endif +#if !defined(MINILZO_CFG_SKIP_LZO_STRING) +#undef lzo_memcmp +#undef lzo_memcpy +#undef lzo_memmove +#undef lzo_memset +#if !defined(__LZO_MMODEL_HUGE) +# undef LZO_HAVE_MM_HUGE_PTR +#endif +#define lzo_hsize_t lzo_uint +#define lzo_hvoid_p lzo_voidp +#define lzo_hbyte_p lzo_bytep +#define LZOLIB_PUBLIC(r,f) LZO_PUBLIC(r) f +#define lzo_hmemcmp lzo_memcmp +#define lzo_hmemcpy lzo_memcpy +#define lzo_hmemmove lzo_memmove +#define lzo_hmemset lzo_memset +#define __LZOLIB_HMEMCPY_CH_INCLUDED 1 +#if !defined(LZOLIB_PUBLIC) +# define LZOLIB_PUBLIC(r,f) r __LZOLIB_FUNCNAME(f) +#endif +LZOLIB_PUBLIC(int, lzo_hmemcmp) (const lzo_hvoid_p s1, const lzo_hvoid_p s2, lzo_hsize_t len) +{ +#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCMP) + const lzo_hbyte_p p1 = (const lzo_hbyte_p) s1; + const lzo_hbyte_p p2 = (const lzo_hbyte_p) s2; + if __lzo_likely(len > 0) do + { + int d = *p1 - *p2; + if (d != 0) + return d; + p1++; p2++; + } while __lzo_likely(--len > 0); + return 0; +#else + return memcmp(s1, s2, len); +#endif +} +LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemcpy) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len) +{ +#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCPY) + lzo_hbyte_p p1 = (lzo_hbyte_p) dest; + const lzo_hbyte_p p2 = (const lzo_hbyte_p) src; + if (!(len > 0) || p1 == p2) + return dest; + do + *p1++ = *p2++; + while __lzo_likely(--len > 0); + return dest; +#else + return memcpy(dest, src, len); +#endif +} +LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemmove) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len) +{ +#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMMOVE) + lzo_hbyte_p p1 = (lzo_hbyte_p) dest; + const lzo_hbyte_p p2 = (const lzo_hbyte_p) src; + if (!(len > 0) || p1 == p2) + return dest; + if (p1 < p2) + { + do + *p1++ = *p2++; + while __lzo_likely(--len > 0); + } + else + { + p1 += len; + p2 += len; + do + *--p1 = *--p2; + while __lzo_likely(--len > 0); + } + return dest; +#else + return memmove(dest, src, len); +#endif +} +LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p s, int c, lzo_hsize_t len) +{ +#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMSET) + lzo_hbyte_p p = (lzo_hbyte_p) s; + if __lzo_likely(len > 0) do + *p++ = (unsigned char) c; + while __lzo_likely(--len > 0); + return s; +#else + return memset(s, c, len); +#endif +} +#undef LZOLIB_PUBLIC +#endif +#if !defined(MINILZO_CFG_SKIP_LZO_INIT) + +#if !defined(__LZO_IN_MINILZO) + +#define ACC_WANT_ACC_CHK_CH 1 +#undef ACCCHK_ASSERT + + ACCCHK_ASSERT_IS_SIGNED_T(lzo_int) + ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint) + + ACCCHK_ASSERT_IS_SIGNED_T(lzo_int32) + ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32) + ACCCHK_ASSERT((LZO_UINT32_C(1) << (int)(8*sizeof(LZO_UINT32_C(1))-1)) > 0) + ACCCHK_ASSERT(sizeof(lzo_uint32) >= 4) +#if defined(LZO_UINT64_MAX) + ACCCHK_ASSERT(sizeof(lzo_uint64) == 8) + ACCCHK_ASSERT_IS_SIGNED_T(lzo_int64) + ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint64) +#endif + +#if !defined(__LZO_UINTPTR_T_IS_POINTER) + ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uintptr_t) +#endif + ACCCHK_ASSERT(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp)) + + ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_xint) + ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint32)) + ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint)) + ACCCHK_ASSERT(sizeof(lzo_xint) == sizeof(lzo_uint32) || sizeof(lzo_xint) == sizeof(lzo_uint)) + +#endif +#undef ACCCHK_ASSERT + +#define WANT_lzo_bitops_clz32 1 +#define WANT_lzo_bitops_clz64 1 +#define WANT_lzo_bitops_ctz32 1 +#define WANT_lzo_bitops_ctz64 1 + +#if (defined(_WIN32) || defined(_WIN64)) && ((LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_MSC && (_MSC_VER >= 1400))) +#include +#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) && 0 +#pragma intrinsic(_BitScanReverse) +static __lzo_inline unsigned lzo_bitops_clz32(lzo_uint32 v) +{ + unsigned long r; + (void) _BitScanReverse(&r, v); + return (unsigned) r; +} +#define lzo_bitops_clz32 lzo_bitops_clz32 +#endif +#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX) && 0 +#pragma intrinsic(_BitScanReverse64) +static __lzo_inline unsigned lzo_bitops_clz64(lzo_uint64 v) +{ + unsigned long r; + (void) _BitScanReverse64(&r, v); + return (unsigned) r; +} +#define lzo_bitops_clz64 lzo_bitops_clz64 +#endif +#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32) +#pragma intrinsic(_BitScanForward) +static __lzo_inline unsigned lzo_bitops_ctz32(lzo_uint32 v) +{ + unsigned long r; + (void) _BitScanForward(&r, v); + return (unsigned) r; +} +#define lzo_bitops_ctz32 lzo_bitops_ctz32 +#endif +#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX) +#pragma intrinsic(_BitScanForward64) +static __lzo_inline unsigned lzo_bitops_ctz64(lzo_uint64 v) +{ + unsigned long r; + (void) _BitScanForward64(&r, v); + return (unsigned) r; +} +#define lzo_bitops_ctz64 lzo_bitops_ctz64 +#endif + +#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_LLVM && (!defined(__llvm_tools_version__) || (__llvm_tools_version__+0 >= 0x010500ul)))) +#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) +#define lzo_bitops_clz32(v) ((unsigned) __builtin_clz(v)) +#endif +#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX) +#define lzo_bitops_clz64(v) ((unsigned) __builtin_clzll(v)) +#endif +#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32) +#define lzo_bitops_ctz32(v) ((unsigned) __builtin_ctz(v)) +#endif +#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX) +#define lzo_bitops_ctz64(v) ((unsigned) __builtin_ctzll(v)) +#endif +#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount32) +#define lzo_bitops_popcount32(v) ((unsigned) __builtin_popcount(v)) +#endif +#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount64) && defined(LZO_UINT64_MAX) +#define lzo_bitops_popcount64(v) ((unsigned) __builtin_popcountll(v)) +#endif +#endif + +#if 0 +#define u2p(ptr,off) ((lzo_voidp) (((lzo_bytep)(lzo_voidp)(ptr)) + (off))) +#else +static __lzo_noinline lzo_voidp u2p(lzo_voidp ptr, lzo_uint off) +{ + return (lzo_voidp) ((lzo_bytep) ptr + off); +} +#endif + +LZO_PUBLIC(int) +_lzo_config_check(void) +{ + lzo_bool r = 1; + union { + lzo_xint a[2]; unsigned char b[2*LZO_MAX(8,sizeof(lzo_xint))]; +#if defined(LZO_UNALIGNED_OK_8) + lzo_uint64 c[2]; +#endif + unsigned short x[2]; lzo_uint32 y[2]; lzo_uint z[2]; + } u; + lzo_voidp p; + + u.a[0] = u.a[1] = 0; + p = u2p(&u, 0); + r &= ((* (lzo_bytep) p) == 0); +#if !defined(LZO_CFG_NO_CONFIG_CHECK) +#if defined(LZO_ABI_BIG_ENDIAN) + u.a[0] = u.a[1] = 0; u.b[sizeof(lzo_uint) - 1] = 128; + p = u2p(&u, 0); + r &= ((* (lzo_uintp) p) == 128); +#endif +#if defined(LZO_ABI_LITTLE_ENDIAN) + u.a[0] = u.a[1] = 0; u.b[0] = 128; + p = u2p(&u, 0); + r &= ((* (lzo_uintp) p) == 128); +#endif +#if defined(LZO_UNALIGNED_OK_2) + u.a[0] = u.a[1] = 0; + u.b[0] = 1; u.b[sizeof(unsigned short) + 1] = 2; + p = u2p(&u, 1); + r &= ((* (lzo_ushortp) p) == 0); +#endif +#if defined(LZO_UNALIGNED_OK_4) + u.a[0] = u.a[1] = 0; + u.b[0] = 3; u.b[sizeof(lzo_uint32) + 1] = 4; + p = u2p(&u, 1); + r &= ((* (lzo_uint32p) p) == 0); +#endif +#if defined(LZO_UNALIGNED_OK_8) + u.c[0] = u.c[1] = 0; + u.b[0] = 5; u.b[sizeof(lzo_uint64) + 1] = 6; + p = u2p(&u, 1); + r &= ((* (lzo_uint64p) p) == 0); +#endif +#if defined(lzo_bitops_clz32) + { unsigned i; lzo_uint32 v = 1; + for (i = 0; i < 32; i++, v <<= 1) + r &= lzo_bitops_clz32(v) == 31 - i; + } +#endif +#if defined(lzo_bitops_clz64) + { unsigned i; lzo_uint64 v = 1; + for (i = 0; i < 64; i++, v <<= 1) + r &= lzo_bitops_clz64(v) == 63 - i; + } +#endif +#if defined(lzo_bitops_ctz32) + { unsigned i; lzo_uint32 v = 1; + for (i = 0; i < 32; i++, v <<= 1) + r &= lzo_bitops_ctz32(v) == i; + } +#endif +#if defined(lzo_bitops_ctz64) + { unsigned i; lzo_uint64 v = 1; + for (i = 0; i < 64; i++, v <<= 1) + r &= lzo_bitops_ctz64(v) == i; + } +#endif +#endif + + return r == 1 ? LZO_E_OK : LZO_E_ERROR; +} + +LZO_PUBLIC(int) +__lzo_init_v2(unsigned v, int s1, int s2, int s3, int s4, int s5, + int s6, int s7, int s8, int s9) +{ + int r; + +#if defined(__LZO_IN_MINILZO) +#elif (LZO_CC_MSC && ((_MSC_VER) < 700)) +#else +#define ACC_WANT_ACC_CHK_CH 1 +#undef ACCCHK_ASSERT +#define ACCCHK_ASSERT(expr) LZO_COMPILE_TIME_ASSERT(expr) +#endif +#undef ACCCHK_ASSERT + + if (v == 0) + return LZO_E_ERROR; + + r = (s1 == -1 || s1 == (int) sizeof(short)) && + (s2 == -1 || s2 == (int) sizeof(int)) && + (s3 == -1 || s3 == (int) sizeof(long)) && + (s4 == -1 || s4 == (int) sizeof(lzo_uint32)) && + (s5 == -1 || s5 == (int) sizeof(lzo_uint)) && + (s6 == -1 || s6 == (int) lzo_sizeof_dict_t) && + (s7 == -1 || s7 == (int) sizeof(char *)) && + (s8 == -1 || s8 == (int) sizeof(lzo_voidp)) && + (s9 == -1 || s9 == (int) sizeof(lzo_callback_t)); + if (!r) + return LZO_E_ERROR; + + r = _lzo_config_check(); + if (r != LZO_E_OK) + return r; + + return r; +} + +#if !defined(__LZO_IN_MINILZO) + +#if (LZO_OS_WIN16 && LZO_CC_WATCOMC) && defined(__SW_BD) + +#if 0 +BOOL FAR PASCAL LibMain ( HANDLE hInstance, WORD wDataSegment, + WORD wHeapSize, LPSTR lpszCmdLine ) +#else +int __far __pascal LibMain ( int a, short b, short c, long d ) +#endif +{ + LZO_UNUSED(a); LZO_UNUSED(b); LZO_UNUSED(c); LZO_UNUSED(d); + return 1; +} + +#endif + +#endif + +#endif + +#define LZO1X 1 +#define LZO_EOF_CODE 1 +#define M2_MAX_OFFSET 0x0800 + +#if !defined(MINILZO_CFG_SKIP_LZO1X_1_COMPRESS) + +#if 1 && defined(UA_GET32) +#undef LZO_DICT_USE_PTR +#define LZO_DICT_USE_PTR 0 +#undef lzo_dict_t +#define lzo_dict_t unsigned short +#endif + +#define LZO_NEED_DICT_H 1 +#ifndef D_BITS +#define D_BITS 14 +#endif +#define D_INDEX1(d,p) d = DM(DMUL(0x21,DX3(p,5,5,6)) >> 5) +#define D_INDEX2(d,p) d = (d & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f) +#if 1 +#define DINDEX(dv,p) DM(((DMUL(0x1824429d,dv)) >> (32-D_BITS))) +#else +#define DINDEX(dv,p) DM((dv) + ((dv) >> (32-D_BITS))) +#endif + +#ifndef __LZO_CONFIG1X_H +#define __LZO_CONFIG1X_H 1 + +#if !defined(LZO1X) && !defined(LZO1Y) && !defined(LZO1Z) +# define LZO1X 1 +#endif + +#if !defined(__LZO_IN_MINILZO) +#include "lzo/lzo1x.h" +#endif + +#ifndef LZO_EOF_CODE +#define LZO_EOF_CODE 1 +#endif +#undef LZO_DETERMINISTIC + +#define M1_MAX_OFFSET 0x0400 +#ifndef M2_MAX_OFFSET +#define M2_MAX_OFFSET 0x0800 +#endif +#define M3_MAX_OFFSET 0x4000 +#define M4_MAX_OFFSET 0xbfff + +#define MX_MAX_OFFSET (M1_MAX_OFFSET + M2_MAX_OFFSET) + +#define M1_MIN_LEN 2 +#define M1_MAX_LEN 2 +#define M2_MIN_LEN 3 +#ifndef M2_MAX_LEN +#define M2_MAX_LEN 8 +#endif +#define M3_MIN_LEN 3 +#define M3_MAX_LEN 33 +#define M4_MIN_LEN 3 +#define M4_MAX_LEN 9 + +#define M1_MARKER 0 +#define M2_MARKER 64 +#define M3_MARKER 32 +#define M4_MARKER 16 + +#ifndef MIN_LOOKAHEAD +#define MIN_LOOKAHEAD (M2_MAX_LEN + 1) +#endif + +#if defined(LZO_NEED_DICT_H) + +#ifndef LZO_HASH +#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_B +#endif +#define DL_MIN_LEN M2_MIN_LEN + +#ifndef __LZO_DICT_H +#define __LZO_DICT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(D_BITS) && defined(DBITS) +# define D_BITS DBITS +#endif +#if !defined(D_BITS) +# error "D_BITS is not defined" +#endif +#if (D_BITS < 16) +# define D_SIZE LZO_SIZE(D_BITS) +# define D_MASK LZO_MASK(D_BITS) +#else +# define D_SIZE LZO_USIZE(D_BITS) +# define D_MASK LZO_UMASK(D_BITS) +#endif +#define D_HIGH ((D_MASK >> 1) + 1) + +#if !defined(DD_BITS) +# define DD_BITS 0 +#endif +#define DD_SIZE LZO_SIZE(DD_BITS) +#define DD_MASK LZO_MASK(DD_BITS) + +#if !defined(DL_BITS) +# define DL_BITS (D_BITS - DD_BITS) +#endif +#if (DL_BITS < 16) +# define DL_SIZE LZO_SIZE(DL_BITS) +# define DL_MASK LZO_MASK(DL_BITS) +#else +# define DL_SIZE LZO_USIZE(DL_BITS) +# define DL_MASK LZO_UMASK(DL_BITS) +#endif + +#if (D_BITS != DL_BITS + DD_BITS) +# error "D_BITS does not match" +#endif +#if (D_BITS < 6 || D_BITS > 18) +# error "invalid D_BITS" +#endif +#if (DL_BITS < 6 || DL_BITS > 20) +# error "invalid DL_BITS" +#endif +#if (DD_BITS < 0 || DD_BITS > 6) +# error "invalid DD_BITS" +#endif + +#if !defined(DL_MIN_LEN) +# define DL_MIN_LEN 3 +#endif +#if !defined(DL_SHIFT) +# define DL_SHIFT ((DL_BITS + (DL_MIN_LEN - 1)) / DL_MIN_LEN) +#endif + +#define LZO_HASH_GZIP 1 +#define LZO_HASH_GZIP_INCREMENTAL 2 +#define LZO_HASH_LZO_INCREMENTAL_A 3 +#define LZO_HASH_LZO_INCREMENTAL_B 4 + +#if !defined(LZO_HASH) +# error "choose a hashing strategy" +#endif + +#undef DM +#undef DX + +#if (DL_MIN_LEN == 3) +# define _DV2_A(p,shift1,shift2) \ + (((( (lzo_xint)((p)[0]) << shift1) ^ (p)[1]) << shift2) ^ (p)[2]) +# define _DV2_B(p,shift1,shift2) \ + (((( (lzo_xint)((p)[2]) << shift1) ^ (p)[1]) << shift2) ^ (p)[0]) +# define _DV3_B(p,shift1,shift2,shift3) \ + ((_DV2_B((p)+1,shift1,shift2) << (shift3)) ^ (p)[0]) +#elif (DL_MIN_LEN == 2) +# define _DV2_A(p,shift1,shift2) \ + (( (lzo_xint)(p[0]) << shift1) ^ p[1]) +# define _DV2_B(p,shift1,shift2) \ + (( (lzo_xint)(p[1]) << shift1) ^ p[2]) +#else +# error "invalid DL_MIN_LEN" +#endif +#define _DV_A(p,shift) _DV2_A(p,shift,shift) +#define _DV_B(p,shift) _DV2_B(p,shift,shift) +#define DA2(p,s1,s2) \ + (((((lzo_xint)((p)[2]) << (s2)) + (p)[1]) << (s1)) + (p)[0]) +#define DS2(p,s1,s2) \ + (((((lzo_xint)((p)[2]) << (s2)) - (p)[1]) << (s1)) - (p)[0]) +#define DX2(p,s1,s2) \ + (((((lzo_xint)((p)[2]) << (s2)) ^ (p)[1]) << (s1)) ^ (p)[0]) +#define DA3(p,s1,s2,s3) ((DA2((p)+1,s2,s3) << (s1)) + (p)[0]) +#define DS3(p,s1,s2,s3) ((DS2((p)+1,s2,s3) << (s1)) - (p)[0]) +#define DX3(p,s1,s2,s3) ((DX2((p)+1,s2,s3) << (s1)) ^ (p)[0]) +#define DMS(v,s) ((lzo_uint) (((v) & (D_MASK >> (s))) << (s))) +#define DM(v) DMS(v,0) + +#if (LZO_HASH == LZO_HASH_GZIP) +# define _DINDEX(dv,p) (_DV_A((p),DL_SHIFT)) + +#elif (LZO_HASH == LZO_HASH_GZIP_INCREMENTAL) +# define __LZO_HASH_INCREMENTAL 1 +# define DVAL_FIRST(dv,p) dv = _DV_A((p),DL_SHIFT) +# define DVAL_NEXT(dv,p) dv = (((dv) << DL_SHIFT) ^ p[2]) +# define _DINDEX(dv,p) (dv) +# define DVAL_LOOKAHEAD DL_MIN_LEN + +#elif (LZO_HASH == LZO_HASH_LZO_INCREMENTAL_A) +# define __LZO_HASH_INCREMENTAL 1 +# define DVAL_FIRST(dv,p) dv = _DV_A((p),5) +# define DVAL_NEXT(dv,p) \ + dv ^= (lzo_xint)(p[-1]) << (2*5); dv = (((dv) << 5) ^ p[2]) +# define _DINDEX(dv,p) ((DMUL(0x9f5f,dv)) >> 5) +# define DVAL_LOOKAHEAD DL_MIN_LEN + +#elif (LZO_HASH == LZO_HASH_LZO_INCREMENTAL_B) +# define __LZO_HASH_INCREMENTAL 1 +# define DVAL_FIRST(dv,p) dv = _DV_B((p),5) +# define DVAL_NEXT(dv,p) \ + dv ^= p[-1]; dv = (((dv) >> 5) ^ ((lzo_xint)(p[2]) << (2*5))) +# define _DINDEX(dv,p) ((DMUL(0x9f5f,dv)) >> 5) +# define DVAL_LOOKAHEAD DL_MIN_LEN + +#else +# error "choose a hashing strategy" +#endif + +#ifndef DINDEX +#define DINDEX(dv,p) ((lzo_uint)((_DINDEX(dv,p)) & DL_MASK) << DD_BITS) +#endif +#if !defined(DINDEX1) && defined(D_INDEX1) +#define DINDEX1 D_INDEX1 +#endif +#if !defined(DINDEX2) && defined(D_INDEX2) +#define DINDEX2 D_INDEX2 +#endif + +#if !defined(__LZO_HASH_INCREMENTAL) +# define DVAL_FIRST(dv,p) ((void) 0) +# define DVAL_NEXT(dv,p) ((void) 0) +# define DVAL_LOOKAHEAD 0 +#endif + +#if !defined(DVAL_ASSERT) +#if defined(__LZO_HASH_INCREMENTAL) && !defined(NDEBUG) +#if (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x020700ul) || LZO_CC_LLVM) +static void __attribute__((__unused__)) +#else +static void +#endif +DVAL_ASSERT(lzo_xint dv, const lzo_bytep p) +{ + lzo_xint df; + DVAL_FIRST(df,(p)); + assert(DINDEX(dv,p) == DINDEX(df,p)); +} +#else +# define DVAL_ASSERT(dv,p) ((void) 0) +#endif +#endif + +#if (LZO_DICT_USE_PTR) +# define DENTRY(p,in) (p) +# define GINDEX(m_pos,m_off,dict,dindex,in) m_pos = dict[dindex] +#else +# define DENTRY(p,in) ((lzo_dict_t) pd(p, in)) +# define GINDEX(m_pos,m_off,dict,dindex,in) m_off = dict[dindex] +#endif + +#if (DD_BITS == 0) + +# define UPDATE_D(dict,drun,dv,p,in) dict[ DINDEX(dv,p) ] = DENTRY(p,in) +# define UPDATE_I(dict,drun,index,p,in) dict[index] = DENTRY(p,in) +# define UPDATE_P(ptr,drun,p,in) (ptr)[0] = DENTRY(p,in) + +#else + +# define UPDATE_D(dict,drun,dv,p,in) \ + dict[ DINDEX(dv,p) + drun++ ] = DENTRY(p,in); drun &= DD_MASK +# define UPDATE_I(dict,drun,index,p,in) \ + dict[ (index) + drun++ ] = DENTRY(p,in); drun &= DD_MASK +# define UPDATE_P(ptr,drun,p,in) \ + (ptr) [ drun++ ] = DENTRY(p,in); drun &= DD_MASK + +#endif + +#if (LZO_DICT_USE_PTR) + +#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \ + (m_pos == NULL || (m_off = pd(ip, m_pos)) > max_offset) + +#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \ + (BOUNDS_CHECKING_OFF_IN_EXPR(( \ + m_pos = ip - (lzo_uint) PTR_DIFF(ip,m_pos), \ + PTR_LT(m_pos,in) || \ + (m_off = (lzo_uint) PTR_DIFF(ip,m_pos)) == 0 || \ + m_off > max_offset ))) + +#else + +#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \ + (m_off == 0 || \ + ((m_off = pd(ip, in) - m_off) > max_offset) || \ + (m_pos = (ip) - (m_off), 0) ) + +#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \ + (pd(ip, in) <= m_off || \ + ((m_off = pd(ip, in) - m_off) > max_offset) || \ + (m_pos = (ip) - (m_off), 0) ) + +#endif + +#if (LZO_DETERMINISTIC) +# define LZO_CHECK_MPOS LZO_CHECK_MPOS_DET +#else +# define LZO_CHECK_MPOS LZO_CHECK_MPOS_NON_DET +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +#endif + +#endif + +#define LZO_DETERMINISTIC !(LZO_DICT_USE_PTR) + +#ifndef DO_COMPRESS +#define DO_COMPRESS lzo1x_1_compress +#endif + +#if 1 && defined(DO_COMPRESS) && !defined(do_compress) +# define do_compress LZO_CPP_ECONCAT2(DO_COMPRESS,_core) +#endif + +#if defined(UA_GET64) && (LZO_ABI_BIG_ENDIAN) +# define WANT_lzo_bitops_clz64 1 +#elif defined(UA_GET64) && (LZO_ABI_LITTLE_ENDIAN) +# define WANT_lzo_bitops_ctz64 1 +#elif defined(UA_GET32) && (LZO_ABI_BIG_ENDIAN) +# define WANT_lzo_bitops_clz32 1 +#elif defined(UA_GET32) && (LZO_ABI_LITTLE_ENDIAN) +# define WANT_lzo_bitops_ctz32 1 +#endif + +#if (defined(_WIN32) || defined(_WIN64)) && ((LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_MSC && (_MSC_VER >= 1400))) +#include +#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) && 0 +#pragma intrinsic(_BitScanReverse) +static __lzo_inline unsigned lzo_bitops_clz32(lzo_uint32 v) +{ + unsigned long r; + (void) _BitScanReverse(&r, v); + return (unsigned) r; +} +#define lzo_bitops_clz32 lzo_bitops_clz32 +#endif +#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX) && 0 +#pragma intrinsic(_BitScanReverse64) +static __lzo_inline unsigned lzo_bitops_clz64(lzo_uint64 v) +{ + unsigned long r; + (void) _BitScanReverse64(&r, v); + return (unsigned) r; +} +#define lzo_bitops_clz64 lzo_bitops_clz64 +#endif +#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32) +#pragma intrinsic(_BitScanForward) +static __lzo_inline unsigned lzo_bitops_ctz32(lzo_uint32 v) +{ + unsigned long r; + (void) _BitScanForward(&r, v); + return (unsigned) r; +} +#define lzo_bitops_ctz32 lzo_bitops_ctz32 +#endif +#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX) +#pragma intrinsic(_BitScanForward64) +static __lzo_inline unsigned lzo_bitops_ctz64(lzo_uint64 v) +{ + unsigned long r; + (void) _BitScanForward64(&r, v); + return (unsigned) r; +} +#define lzo_bitops_ctz64 lzo_bitops_ctz64 +#endif + +#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_LLVM && (!defined(__llvm_tools_version__) || (__llvm_tools_version__+0 >= 0x010500ul)))) +#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) +#define lzo_bitops_clz32(v) ((unsigned) __builtin_clz(v)) +#endif +#if !defined(lzo_bitops_clz64) && defined(WANT_lzo_bitops_clz64) && defined(LZO_UINT64_MAX) +#define lzo_bitops_clz64(v) ((unsigned) __builtin_clzll(v)) +#endif +#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32) +#define lzo_bitops_ctz32(v) ((unsigned) __builtin_ctz(v)) +#endif +#if !defined(lzo_bitops_ctz64) && defined(WANT_lzo_bitops_ctz64) && defined(LZO_UINT64_MAX) +#define lzo_bitops_ctz64(v) ((unsigned) __builtin_ctzll(v)) +#endif +#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount32) +#define lzo_bitops_popcount32(v) ((unsigned) __builtin_popcount(v)) +#endif +#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount64) && defined(LZO_UINT64_MAX) +#define lzo_bitops_popcount64(v) ((unsigned) __builtin_popcountll(v)) +#endif +#endif + +static __lzo_noinline lzo_uint +do_compress ( const lzo_bytep in , lzo_uint in_len, + lzo_bytep out, lzo_uintp out_len, + lzo_uint ti, lzo_voidp wrkmem) +{ + register const lzo_bytep ip; + lzo_bytep op; + const lzo_bytep const in_end = in + in_len; + const lzo_bytep const ip_end = in + in_len - 20; + const lzo_bytep ii; + lzo_dict_p const dict = (lzo_dict_p) wrkmem; + + op = out; + ip = in; + ii = ip; + + ip += ti < 4 ? 4 - ti : 0; + for (;;) + { + const lzo_bytep m_pos; +#if !(LZO_DETERMINISTIC) + LZO_DEFINE_UNINITIALIZED_VAR(lzo_uint, m_off, 0); + lzo_uint m_len; + lzo_uint dindex; +next: + if __lzo_unlikely(ip >= ip_end) + break; + DINDEX1(dindex,ip); + GINDEX(m_pos,m_off,dict,dindex,in); + if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M4_MAX_OFFSET)) + goto literal; +#if 1 + if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3]) + goto try_match; + DINDEX2(dindex,ip); +#endif + GINDEX(m_pos,m_off,dict,dindex,in); + if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M4_MAX_OFFSET)) + goto literal; + if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3]) + goto try_match; + goto literal; + +try_match: +#if defined(UA_GET32) + if (UA_GET32(m_pos) != UA_GET32(ip)) +#else + if (m_pos[0] != ip[0] || m_pos[1] != ip[1] || m_pos[2] != ip[2] || m_pos[3] != ip[3]) +#endif + { +literal: + UPDATE_I(dict,0,dindex,ip,in); + ip += 1 + ((ip - ii) >> 5); + continue; + } + UPDATE_I(dict,0,dindex,ip,in); +#else + lzo_uint m_off; + lzo_uint m_len; + { + lzo_uint32 dv; + lzo_uint dindex; +literal: + ip += 1 + ((ip - ii) >> 5); +next: + if __lzo_unlikely(ip >= ip_end) + break; + dv = UA_GET32(ip); + dindex = DINDEX(dv,ip); + GINDEX(m_off,m_pos,in+dict,dindex,in); + UPDATE_I(dict,0,dindex,ip,in); + if __lzo_unlikely(dv != UA_GET32(m_pos)) + goto literal; + } +#endif + + ii -= ti; ti = 0; + { + register lzo_uint t = pd(ip,ii); + if (t != 0) + { + if (t <= 3) + { + op[-2] |= LZO_BYTE(t); +#if defined(UA_COPY32) + UA_COPY32(op, ii); + op += t; +#else + { do *op++ = *ii++; while (--t > 0); } +#endif + } +#if defined(UA_COPY32) || defined(UA_COPY64) + else if (t <= 16) + { + *op++ = LZO_BYTE(t - 3); +#if defined(UA_COPY64) + UA_COPY64(op, ii); + UA_COPY64(op+8, ii+8); +#else + UA_COPY32(op, ii); + UA_COPY32(op+4, ii+4); + UA_COPY32(op+8, ii+8); + UA_COPY32(op+12, ii+12); +#endif + op += t; + } +#endif + else + { + if (t <= 18) + *op++ = LZO_BYTE(t - 3); + else + { + register lzo_uint tt = t - 18; + *op++ = 0; + while __lzo_unlikely(tt > 255) + { + tt -= 255; +#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400)) + * (volatile unsigned char *) op++ = 0; +#else + *op++ = 0; +#endif + } + assert(tt > 0); + *op++ = LZO_BYTE(tt); + } +#if defined(UA_COPY32) || defined(UA_COPY64) + do { +#if defined(UA_COPY64) + UA_COPY64(op, ii); + UA_COPY64(op+8, ii+8); +#else + UA_COPY32(op, ii); + UA_COPY32(op+4, ii+4); + UA_COPY32(op+8, ii+8); + UA_COPY32(op+12, ii+12); +#endif + op += 16; ii += 16; t -= 16; + } while (t >= 16); if (t > 0) +#endif + { do *op++ = *ii++; while (--t > 0); } + } + } + } + m_len = 4; + { +#if defined(UA_GET64) + lzo_uint64 v; + v = UA_GET64(ip + m_len) ^ UA_GET64(m_pos + m_len); + if __lzo_unlikely(v == 0) { + do { + m_len += 8; + v = UA_GET64(ip + m_len) ^ UA_GET64(m_pos + m_len); + if __lzo_unlikely(ip + m_len >= ip_end) + goto m_len_done; + } while (v == 0); + } +#if (LZO_ABI_BIG_ENDIAN) && defined(lzo_bitops_clz64) + m_len += lzo_bitops_clz64(v) / CHAR_BIT; +#elif (LZO_ABI_BIG_ENDIAN) + if ((v >> (64 - CHAR_BIT)) == 0) do { + v <<= CHAR_BIT; + m_len += 1; + } while ((v >> (64 - CHAR_BIT)) == 0); +#elif (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_ctz64) + m_len += lzo_bitops_ctz64(v) / CHAR_BIT; +#elif (LZO_ABI_LITTLE_ENDIAN) + if ((v & UCHAR_MAX) == 0) do { + v >>= CHAR_BIT; + m_len += 1; + } while ((v & UCHAR_MAX) == 0); +#else + if (ip[m_len] == m_pos[m_len]) do { + m_len += 1; + } while (ip[m_len] == m_pos[m_len]); +#endif +#elif defined(UA_GET32) + lzo_uint32 v; + v = UA_GET32(ip + m_len) ^ UA_GET32(m_pos + m_len); + if __lzo_unlikely(v == 0) { + do { + m_len += 4; + v = UA_GET32(ip + m_len) ^ UA_GET32(m_pos + m_len); + if __lzo_unlikely(ip + m_len >= ip_end) + goto m_len_done; + } while (v == 0); + } +#if (LZO_ABI_BIG_ENDIAN) && defined(lzo_bitops_clz32) + m_len += lzo_bitops_clz32(v) / CHAR_BIT; +#elif (LZO_ABI_BIG_ENDIAN) + if ((v >> (32 - CHAR_BIT)) == 0) do { + v <<= CHAR_BIT; + m_len += 1; + } while ((v >> (32 - CHAR_BIT)) == 0); +#elif (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_ctz32) + m_len += lzo_bitops_ctz32(v) / CHAR_BIT; +#elif (LZO_ABI_LITTLE_ENDIAN) + if ((v & UCHAR_MAX) == 0) do { + v >>= CHAR_BIT; + m_len += 1; + } while ((v & UCHAR_MAX) == 0); +#else + if (ip[m_len] == m_pos[m_len]) do { + m_len += 1; + } while (ip[m_len] == m_pos[m_len]); +#endif +#else + if __lzo_unlikely(ip[m_len] == m_pos[m_len]) { + do { + m_len += 1; + if __lzo_unlikely(ip + m_len >= ip_end) + goto m_len_done; + } while (ip[m_len] == m_pos[m_len]); + } +#endif + } +m_len_done: + m_off = pd(ip,m_pos); + ip += m_len; + ii = ip; + if (m_len <= M2_MAX_LEN && m_off <= M2_MAX_OFFSET) + { + m_off -= 1; +#if defined(LZO1X) + *op++ = LZO_BYTE(((m_len - 1) << 5) | ((m_off & 7) << 2)); + *op++ = LZO_BYTE(m_off >> 3); +#elif defined(LZO1Y) + *op++ = LZO_BYTE(((m_len + 1) << 4) | ((m_off & 3) << 2)); + *op++ = LZO_BYTE(m_off >> 2); +#endif + } + else if (m_off <= M3_MAX_OFFSET) + { + m_off -= 1; + if (m_len <= M3_MAX_LEN) + *op++ = LZO_BYTE(M3_MARKER | (m_len - 2)); + else + { + m_len -= M3_MAX_LEN; + *op++ = M3_MARKER | 0; + while __lzo_unlikely(m_len > 255) + { + m_len -= 255; +#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400)) + * (volatile unsigned char *) op++ = 0; +#else + *op++ = 0; +#endif + } + *op++ = LZO_BYTE(m_len); + } + *op++ = LZO_BYTE(m_off << 2); + *op++ = LZO_BYTE(m_off >> 6); + } + else + { + m_off -= 0x4000; + if (m_len <= M4_MAX_LEN) + *op++ = LZO_BYTE(M4_MARKER | ((m_off >> 11) & 8) | (m_len - 2)); + else + { + m_len -= M4_MAX_LEN; + *op++ = LZO_BYTE(M4_MARKER | ((m_off >> 11) & 8)); + while __lzo_unlikely(m_len > 255) + { + m_len -= 255; +#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400)) + * (volatile unsigned char *) op++ = 0; +#else + *op++ = 0; +#endif + } + *op++ = LZO_BYTE(m_len); + } + *op++ = LZO_BYTE(m_off << 2); + *op++ = LZO_BYTE(m_off >> 6); + } + goto next; + } + + *out_len = pd(op, out); + return pd(in_end,ii-ti); +} + +LZO_PUBLIC(int) +DO_COMPRESS ( const lzo_bytep in , lzo_uint in_len, + lzo_bytep out, lzo_uintp out_len, + lzo_voidp wrkmem ) +{ + const lzo_bytep ip = in; + lzo_bytep op = out; + lzo_uint l = in_len; + lzo_uint t = 0; + + while (l > 20) + { + lzo_uint ll = l; + lzo_uintptr_t ll_end; +#if 0 || (LZO_DETERMINISTIC) + ll = LZO_MIN(ll, 49152); +#endif + ll_end = (lzo_uintptr_t)ip + ll; + if ((ll_end + ((t + ll) >> 5)) <= ll_end || (const lzo_bytep)(ll_end + ((t + ll) >> 5)) <= ip + ll) + break; +#if (LZO_DETERMINISTIC) + lzo_memset(wrkmem, 0, ((lzo_uint)1 << D_BITS) * sizeof(lzo_dict_t)); +#endif + t = do_compress(ip,ll,op,out_len,t,wrkmem); + ip += ll; + op += *out_len; + l -= ll; + } + t += l; + + if (t > 0) + { + const lzo_bytep ii = in + in_len - t; + + if (op == out && t <= 238) + *op++ = LZO_BYTE(17 + t); + else if (t <= 3) + op[-2] |= LZO_BYTE(t); + else if (t <= 18) + *op++ = LZO_BYTE(t - 3); + else + { + lzo_uint tt = t - 18; + + *op++ = 0; + while (tt > 255) + { + tt -= 255; +#if 1 && (LZO_CC_MSC && (_MSC_VER >= 1400)) + + * (volatile unsigned char *) op++ = 0; +#else + *op++ = 0; +#endif + } + assert(tt > 0); + *op++ = LZO_BYTE(tt); + } + do *op++ = *ii++; while (--t > 0); + } + + *op++ = M4_MARKER | 1; + *op++ = 0; + *op++ = 0; + + *out_len = pd(op, out); + return LZO_E_OK; +} + +#endif + +#undef do_compress +#undef DO_COMPRESS +#undef LZO_HASH + +#undef LZO_TEST_OVERRUN +#undef DO_DECOMPRESS +#define DO_DECOMPRESS lzo1x_decompress + +#if !defined(MINILZO_CFG_SKIP_LZO1X_DECOMPRESS) + +#if defined(LZO_TEST_OVERRUN) +# if !defined(LZO_TEST_OVERRUN_INPUT) +# define LZO_TEST_OVERRUN_INPUT 2 +# endif +# if !defined(LZO_TEST_OVERRUN_OUTPUT) +# define LZO_TEST_OVERRUN_OUTPUT 2 +# endif +# if !defined(LZO_TEST_OVERRUN_LOOKBEHIND) +# define LZO_TEST_OVERRUN_LOOKBEHIND 1 +# endif +#endif + +#undef TEST_IP +#undef TEST_OP +#undef TEST_LB +#undef TEST_LBO +#undef NEED_IP +#undef NEED_OP +#undef HAVE_TEST_IP +#undef HAVE_TEST_OP +#undef HAVE_NEED_IP +#undef HAVE_NEED_OP +#undef HAVE_ANY_IP +#undef HAVE_ANY_OP + +#if defined(LZO_TEST_OVERRUN_INPUT) +# if (LZO_TEST_OVERRUN_INPUT >= 1) +# define TEST_IP (ip < ip_end) +# endif +# if (LZO_TEST_OVERRUN_INPUT >= 2) +# define NEED_IP(x) \ + if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun +# endif +#endif + +#if defined(LZO_TEST_OVERRUN_OUTPUT) +# if (LZO_TEST_OVERRUN_OUTPUT >= 1) +# define TEST_OP (op <= op_end) +# endif +# if (LZO_TEST_OVERRUN_OUTPUT >= 2) +# undef TEST_OP +# define NEED_OP(x) \ + if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun +# endif +#endif + +#if defined(LZO_TEST_OVERRUN_LOOKBEHIND) +# define TEST_LB(m_pos) if (m_pos < out || m_pos >= op) goto lookbehind_overrun +# define TEST_LBO(m_pos,o) if (m_pos < out || m_pos >= op - (o)) goto lookbehind_overrun +#else +# define TEST_LB(m_pos) ((void) 0) +# define TEST_LBO(m_pos,o) ((void) 0) +#endif + +#if !defined(LZO_EOF_CODE) && !defined(TEST_IP) +# define TEST_IP (ip < ip_end) +#endif + +#if defined(TEST_IP) +# define HAVE_TEST_IP 1 +#else +# define TEST_IP 1 +#endif +#if defined(TEST_OP) +# define HAVE_TEST_OP 1 +#else +# define TEST_OP 1 +#endif + +#if defined(NEED_IP) +# define HAVE_NEED_IP 1 +#else +# define NEED_IP(x) ((void) 0) +#endif +#if defined(NEED_OP) +# define HAVE_NEED_OP 1 +#else +# define NEED_OP(x) ((void) 0) +#endif + +#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP) +# define HAVE_ANY_IP 1 +#endif +#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP) +# define HAVE_ANY_OP 1 +#endif + +#if defined(DO_DECOMPRESS) +LZO_PUBLIC(int) +DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len, + lzo_bytep out, lzo_uintp out_len, + lzo_voidp wrkmem ) +#endif +{ + register lzo_bytep op; + register const lzo_bytep ip; + register lzo_uint t; +#if defined(COPY_DICT) + lzo_uint m_off; + const lzo_bytep dict_end; +#else + register const lzo_bytep m_pos; +#endif + + const lzo_bytep const ip_end = in + in_len; +#if defined(HAVE_ANY_OP) + lzo_bytep const op_end = out + *out_len; +#endif +#if defined(LZO1Z) + lzo_uint last_m_off = 0; +#endif + + LZO_UNUSED(wrkmem); + +#if defined(COPY_DICT) + if (dict) + { + if (dict_len > M4_MAX_OFFSET) + { + dict += dict_len - M4_MAX_OFFSET; + dict_len = M4_MAX_OFFSET; + } + dict_end = dict + dict_len; + } + else + { + dict_len = 0; + dict_end = NULL; + } +#endif + + *out_len = 0; + + op = out; + ip = in; + + if (*ip > 17) + { + t = *ip++ - 17; + if (t < 4) + goto match_next; + assert(t > 0); NEED_OP(t); NEED_IP(t+1); + do *op++ = *ip++; while (--t > 0); + goto first_literal_run; + } + + while (TEST_IP && TEST_OP) + { + t = *ip++; + if (t >= 16) + goto match; + if (t == 0) + { + NEED_IP(1); + while (*ip == 0) + { + t += 255; + ip++; + NEED_IP(1); + } + t += 15 + *ip++; + } + assert(t > 0); NEED_OP(t+3); NEED_IP(t+4); +#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4) + t += 3; + if (t >= 8) do + { + UA_COPY64(op,ip); + op += 8; ip += 8; t -= 8; + } while (t >= 8); + if (t >= 4) + { + UA_COPY32(op,ip); + op += 4; ip += 4; t -= 4; + } + if (t > 0) + { + *op++ = *ip++; + if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } } + } +#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4) +#if !defined(LZO_UNALIGNED_OK_4) + if (PTR_ALIGNED2_4(op,ip)) + { +#endif + UA_COPY32(op,ip); + op += 4; ip += 4; + if (--t > 0) + { + if (t >= 4) + { + do { + UA_COPY32(op,ip); + op += 4; ip += 4; t -= 4; + } while (t >= 4); + if (t > 0) do *op++ = *ip++; while (--t > 0); + } + else + do *op++ = *ip++; while (--t > 0); + } +#if !defined(LZO_UNALIGNED_OK_4) + } + else +#endif +#endif +#if !defined(LZO_UNALIGNED_OK_4) && !defined(LZO_UNALIGNED_OK_8) + { + *op++ = *ip++; *op++ = *ip++; *op++ = *ip++; + do *op++ = *ip++; while (--t > 0); + } +#endif + +first_literal_run: + + t = *ip++; + if (t >= 16) + goto match; +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2); + last_m_off = m_off; +#else + m_off = (1 + M2_MAX_OFFSET) + (t >> 2) + (*ip++ << 2); +#endif + NEED_OP(3); + t = 3; COPY_DICT(t,m_off) +#else +#if defined(LZO1Z) + t = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2); + m_pos = op - t; + last_m_off = t; +#else + m_pos = op - (1 + M2_MAX_OFFSET); + m_pos -= t >> 2; + m_pos -= *ip++ << 2; +#endif + TEST_LB(m_pos); NEED_OP(3); + *op++ = *m_pos++; *op++ = *m_pos++; *op++ = *m_pos; +#endif + goto match_done; + + do { +match: + if (t >= 64) + { +#if defined(COPY_DICT) +#if defined(LZO1X) + m_off = 1 + ((t >> 2) & 7) + (*ip++ << 3); + t = (t >> 5) - 1; +#elif defined(LZO1Y) + m_off = 1 + ((t >> 2) & 3) + (*ip++ << 2); + t = (t >> 4) - 3; +#elif defined(LZO1Z) + m_off = t & 0x1f; + if (m_off >= 0x1c) + m_off = last_m_off; + else + { + m_off = 1 + (m_off << 6) + (*ip++ >> 2); + last_m_off = m_off; + } + t = (t >> 5) - 1; +#endif +#else +#if defined(LZO1X) + m_pos = op - 1; + m_pos -= (t >> 2) & 7; + m_pos -= *ip++ << 3; + t = (t >> 5) - 1; +#elif defined(LZO1Y) + m_pos = op - 1; + m_pos -= (t >> 2) & 3; + m_pos -= *ip++ << 2; + t = (t >> 4) - 3; +#elif defined(LZO1Z) + { + lzo_uint off = t & 0x1f; + m_pos = op; + if (off >= 0x1c) + { + assert(last_m_off > 0); + m_pos -= last_m_off; + } + else + { + off = 1 + (off << 6) + (*ip++ >> 2); + m_pos -= off; + last_m_off = off; + } + } + t = (t >> 5) - 1; +#endif + TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1); + goto copy_match; +#endif + } + else if (t >= 32) + { + t &= 31; + if (t == 0) + { + NEED_IP(1); + while (*ip == 0) + { + t += 255; + ip++; + NEED_IP(1); + } + t += 31 + *ip++; + } +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off = 1 + (ip[0] << 6) + (ip[1] >> 2); + last_m_off = m_off; +#else + m_off = 1 + (ip[0] >> 2) + (ip[1] << 6); +#endif +#else +#if defined(LZO1Z) + { + lzo_uint off = 1 + (ip[0] << 6) + (ip[1] >> 2); + m_pos = op - off; + last_m_off = off; + } +#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN) + m_pos = op - 1; + m_pos -= UA_GET16(ip) >> 2; +#else + m_pos = op - 1; + m_pos -= (ip[0] >> 2) + (ip[1] << 6); +#endif +#endif + ip += 2; + } + else if (t >= 16) + { +#if defined(COPY_DICT) + m_off = (t & 8) << 11; +#else + m_pos = op; + m_pos -= (t & 8) << 11; +#endif + t &= 7; + if (t == 0) + { + NEED_IP(1); + while (*ip == 0) + { + t += 255; + ip++; + NEED_IP(1); + } + t += 7 + *ip++; + } +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off += (ip[0] << 6) + (ip[1] >> 2); +#else + m_off += (ip[0] >> 2) + (ip[1] << 6); +#endif + ip += 2; + if (m_off == 0) + goto eof_found; + m_off += 0x4000; +#if defined(LZO1Z) + last_m_off = m_off; +#endif +#else +#if defined(LZO1Z) + m_pos -= (ip[0] << 6) + (ip[1] >> 2); +#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN) + m_pos -= UA_GET16(ip) >> 2; +#else + m_pos -= (ip[0] >> 2) + (ip[1] << 6); +#endif + ip += 2; + if (m_pos == op) + goto eof_found; + m_pos -= 0x4000; +#if defined(LZO1Z) + last_m_off = pd((const lzo_bytep)op, m_pos); +#endif +#endif + } + else + { +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off = 1 + (t << 6) + (*ip++ >> 2); + last_m_off = m_off; +#else + m_off = 1 + (t >> 2) + (*ip++ << 2); +#endif + NEED_OP(2); + t = 2; COPY_DICT(t,m_off) +#else +#if defined(LZO1Z) + t = 1 + (t << 6) + (*ip++ >> 2); + m_pos = op - t; + last_m_off = t; +#else + m_pos = op - 1; + m_pos -= t >> 2; + m_pos -= *ip++ << 2; +#endif + TEST_LB(m_pos); NEED_OP(2); + *op++ = *m_pos++; *op++ = *m_pos; +#endif + goto match_done; + } + +#if defined(COPY_DICT) + + NEED_OP(t+3-1); + t += 3-1; COPY_DICT(t,m_off) + +#else + + TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1); +#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4) + if (op - m_pos >= 8) + { + t += (3 - 1); + if (t >= 8) do + { + UA_COPY64(op,m_pos); + op += 8; m_pos += 8; t -= 8; + } while (t >= 8); + if (t >= 4) + { + UA_COPY32(op,m_pos); + op += 4; m_pos += 4; t -= 4; + } + if (t > 0) + { + *op++ = m_pos[0]; + if (t > 1) { *op++ = m_pos[1]; if (t > 2) { *op++ = m_pos[2]; } } + } + } + else +#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4) +#if !defined(LZO_UNALIGNED_OK_4) + if (t >= 2 * 4 - (3 - 1) && PTR_ALIGNED2_4(op,m_pos)) + { + assert((op - m_pos) >= 4); +#else + if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4) + { +#endif + UA_COPY32(op,m_pos); + op += 4; m_pos += 4; t -= 4 - (3 - 1); + do { + UA_COPY32(op,m_pos); + op += 4; m_pos += 4; t -= 4; + } while (t >= 4); + if (t > 0) do *op++ = *m_pos++; while (--t > 0); + } + else +#endif + { +copy_match: + *op++ = *m_pos++; *op++ = *m_pos++; + do *op++ = *m_pos++; while (--t > 0); + } + +#endif + +match_done: +#if defined(LZO1Z) + t = ip[-1] & 3; +#else + t = ip[-2] & 3; +#endif + if (t == 0) + break; + +match_next: + assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+1); +#if 0 + do *op++ = *ip++; while (--t > 0); +#else + *op++ = *ip++; + if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } } +#endif + t = *ip++; + } while (TEST_IP && TEST_OP); + } + +#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP) + *out_len = pd(op, out); + return LZO_E_EOF_NOT_FOUND; +#endif + +eof_found: + assert(t == 1); + *out_len = pd(op, out); + return (ip == ip_end ? LZO_E_OK : + (ip < ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN)); + +#if defined(HAVE_NEED_IP) +input_overrun: + *out_len = pd(op, out); + return LZO_E_INPUT_OVERRUN; +#endif + +#if defined(HAVE_NEED_OP) +output_overrun: + *out_len = pd(op, out); + return LZO_E_OUTPUT_OVERRUN; +#endif + +#if defined(LZO_TEST_OVERRUN_LOOKBEHIND) +lookbehind_overrun: + *out_len = pd(op, out); + return LZO_E_LOOKBEHIND_OVERRUN; +#endif +} + +#endif + +#define LZO_TEST_OVERRUN 1 +#undef DO_DECOMPRESS +#define DO_DECOMPRESS lzo1x_decompress_safe + +#if !defined(MINILZO_CFG_SKIP_LZO1X_DECOMPRESS_SAFE) + +#if defined(LZO_TEST_OVERRUN) +# if !defined(LZO_TEST_OVERRUN_INPUT) +# define LZO_TEST_OVERRUN_INPUT 2 +# endif +# if !defined(LZO_TEST_OVERRUN_OUTPUT) +# define LZO_TEST_OVERRUN_OUTPUT 2 +# endif +# if !defined(LZO_TEST_OVERRUN_LOOKBEHIND) +# define LZO_TEST_OVERRUN_LOOKBEHIND 1 +# endif +#endif + +#undef TEST_IP +#undef TEST_OP +#undef TEST_LB +#undef TEST_LBO +#undef NEED_IP +#undef NEED_OP +#undef HAVE_TEST_IP +#undef HAVE_TEST_OP +#undef HAVE_NEED_IP +#undef HAVE_NEED_OP +#undef HAVE_ANY_IP +#undef HAVE_ANY_OP + +#if defined(LZO_TEST_OVERRUN_INPUT) +# if (LZO_TEST_OVERRUN_INPUT >= 1) +# define TEST_IP (ip < ip_end) +# endif +# if (LZO_TEST_OVERRUN_INPUT >= 2) +# define NEED_IP(x) \ + if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun +# endif +#endif + +#if defined(LZO_TEST_OVERRUN_OUTPUT) +# if (LZO_TEST_OVERRUN_OUTPUT >= 1) +# define TEST_OP (op <= op_end) +# endif +# if (LZO_TEST_OVERRUN_OUTPUT >= 2) +# undef TEST_OP +# define NEED_OP(x) \ + if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun +# endif +#endif + +#if defined(LZO_TEST_OVERRUN_LOOKBEHIND) +# define TEST_LB(m_pos) if (m_pos < out || m_pos >= op) goto lookbehind_overrun +# define TEST_LBO(m_pos,o) if (m_pos < out || m_pos >= op - (o)) goto lookbehind_overrun +#else +# define TEST_LB(m_pos) ((void) 0) +# define TEST_LBO(m_pos,o) ((void) 0) +#endif + +#if !defined(LZO_EOF_CODE) && !defined(TEST_IP) +# define TEST_IP (ip < ip_end) +#endif + +#if defined(TEST_IP) +# define HAVE_TEST_IP 1 +#else +# define TEST_IP 1 +#endif +#if defined(TEST_OP) +# define HAVE_TEST_OP 1 +#else +# define TEST_OP 1 +#endif + +#if defined(NEED_IP) +# define HAVE_NEED_IP 1 +#else +# define NEED_IP(x) ((void) 0) +#endif +#if defined(NEED_OP) +# define HAVE_NEED_OP 1 +#else +# define NEED_OP(x) ((void) 0) +#endif + +#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP) +# define HAVE_ANY_IP 1 +#endif +#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP) +# define HAVE_ANY_OP 1 +#endif + +#if defined(DO_DECOMPRESS) +LZO_PUBLIC(int) +DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len, + lzo_bytep out, lzo_uintp out_len, + lzo_voidp wrkmem ) +#endif +{ + register lzo_bytep op; + register const lzo_bytep ip; + register lzo_uint t; +#if defined(COPY_DICT) + lzo_uint m_off; + const lzo_bytep dict_end; +#else + register const lzo_bytep m_pos; +#endif + + const lzo_bytep const ip_end = in + in_len; +#if defined(HAVE_ANY_OP) + lzo_bytep const op_end = out + *out_len; +#endif +#if defined(LZO1Z) + lzo_uint last_m_off = 0; +#endif + + LZO_UNUSED(wrkmem); + +#if defined(COPY_DICT) + if (dict) + { + if (dict_len > M4_MAX_OFFSET) + { + dict += dict_len - M4_MAX_OFFSET; + dict_len = M4_MAX_OFFSET; + } + dict_end = dict + dict_len; + } + else + { + dict_len = 0; + dict_end = NULL; + } +#endif + + *out_len = 0; + + op = out; + ip = in; + + if (*ip > 17) + { + t = *ip++ - 17; + if (t < 4) + goto match_next; + assert(t > 0); NEED_OP(t); NEED_IP(t+1); + do *op++ = *ip++; while (--t > 0); + goto first_literal_run; + } + + while (TEST_IP && TEST_OP) + { + t = *ip++; + if (t >= 16) + goto match; + if (t == 0) + { + NEED_IP(1); + while (*ip == 0) + { + t += 255; + ip++; + NEED_IP(1); + } + t += 15 + *ip++; + } + assert(t > 0); NEED_OP(t+3); NEED_IP(t+4); +#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4) + t += 3; + if (t >= 8) do + { + UA_COPY64(op,ip); + op += 8; ip += 8; t -= 8; + } while (t >= 8); + if (t >= 4) + { + UA_COPY32(op,ip); + op += 4; ip += 4; t -= 4; + } + if (t > 0) + { + *op++ = *ip++; + if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } } + } +#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4) +#if !defined(LZO_UNALIGNED_OK_4) + if (PTR_ALIGNED2_4(op,ip)) + { +#endif + UA_COPY32(op,ip); + op += 4; ip += 4; + if (--t > 0) + { + if (t >= 4) + { + do { + UA_COPY32(op,ip); + op += 4; ip += 4; t -= 4; + } while (t >= 4); + if (t > 0) do *op++ = *ip++; while (--t > 0); + } + else + do *op++ = *ip++; while (--t > 0); + } +#if !defined(LZO_UNALIGNED_OK_4) + } + else +#endif +#endif +#if !defined(LZO_UNALIGNED_OK_4) && !defined(LZO_UNALIGNED_OK_8) + { + *op++ = *ip++; *op++ = *ip++; *op++ = *ip++; + do *op++ = *ip++; while (--t > 0); + } +#endif + +first_literal_run: + + t = *ip++; + if (t >= 16) + goto match; +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2); + last_m_off = m_off; +#else + m_off = (1 + M2_MAX_OFFSET) + (t >> 2) + (*ip++ << 2); +#endif + NEED_OP(3); + t = 3; COPY_DICT(t,m_off) +#else +#if defined(LZO1Z) + t = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2); + m_pos = op - t; + last_m_off = t; +#else + m_pos = op - (1 + M2_MAX_OFFSET); + m_pos -= t >> 2; + m_pos -= *ip++ << 2; +#endif + TEST_LB(m_pos); NEED_OP(3); + *op++ = *m_pos++; *op++ = *m_pos++; *op++ = *m_pos; +#endif + goto match_done; + + do { +match: + if (t >= 64) + { +#if defined(COPY_DICT) +#if defined(LZO1X) + m_off = 1 + ((t >> 2) & 7) + (*ip++ << 3); + t = (t >> 5) - 1; +#elif defined(LZO1Y) + m_off = 1 + ((t >> 2) & 3) + (*ip++ << 2); + t = (t >> 4) - 3; +#elif defined(LZO1Z) + m_off = t & 0x1f; + if (m_off >= 0x1c) + m_off = last_m_off; + else + { + m_off = 1 + (m_off << 6) + (*ip++ >> 2); + last_m_off = m_off; + } + t = (t >> 5) - 1; +#endif +#else +#if defined(LZO1X) + m_pos = op - 1; + m_pos -= (t >> 2) & 7; + m_pos -= *ip++ << 3; + t = (t >> 5) - 1; +#elif defined(LZO1Y) + m_pos = op - 1; + m_pos -= (t >> 2) & 3; + m_pos -= *ip++ << 2; + t = (t >> 4) - 3; +#elif defined(LZO1Z) + { + lzo_uint off = t & 0x1f; + m_pos = op; + if (off >= 0x1c) + { + assert(last_m_off > 0); + m_pos -= last_m_off; + } + else + { + off = 1 + (off << 6) + (*ip++ >> 2); + m_pos -= off; + last_m_off = off; + } + } + t = (t >> 5) - 1; +#endif + TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1); + goto copy_match; +#endif + } + else if (t >= 32) + { + t &= 31; + if (t == 0) + { + NEED_IP(1); + while (*ip == 0) + { + t += 255; + ip++; + NEED_IP(1); + } + t += 31 + *ip++; + } +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off = 1 + (ip[0] << 6) + (ip[1] >> 2); + last_m_off = m_off; +#else + m_off = 1 + (ip[0] >> 2) + (ip[1] << 6); +#endif +#else +#if defined(LZO1Z) + { + lzo_uint off = 1 + (ip[0] << 6) + (ip[1] >> 2); + m_pos = op - off; + last_m_off = off; + } +#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN) + m_pos = op - 1; + m_pos -= UA_GET16(ip) >> 2; +#else + m_pos = op - 1; + m_pos -= (ip[0] >> 2) + (ip[1] << 6); +#endif +#endif + ip += 2; + } + else if (t >= 16) + { +#if defined(COPY_DICT) + m_off = (t & 8) << 11; +#else + m_pos = op; + m_pos -= (t & 8) << 11; +#endif + t &= 7; + if (t == 0) + { + NEED_IP(1); + while (*ip == 0) + { + t += 255; + ip++; + NEED_IP(1); + } + t += 7 + *ip++; + } +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off += (ip[0] << 6) + (ip[1] >> 2); +#else + m_off += (ip[0] >> 2) + (ip[1] << 6); +#endif + ip += 2; + if (m_off == 0) + goto eof_found; + m_off += 0x4000; +#if defined(LZO1Z) + last_m_off = m_off; +#endif +#else +#if defined(LZO1Z) + m_pos -= (ip[0] << 6) + (ip[1] >> 2); +#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN) + m_pos -= UA_GET16(ip) >> 2; +#else + m_pos -= (ip[0] >> 2) + (ip[1] << 6); +#endif + ip += 2; + if (m_pos == op) + goto eof_found; + m_pos -= 0x4000; +#if defined(LZO1Z) + last_m_off = pd((const lzo_bytep)op, m_pos); +#endif +#endif + } + else + { +#if defined(COPY_DICT) +#if defined(LZO1Z) + m_off = 1 + (t << 6) + (*ip++ >> 2); + last_m_off = m_off; +#else + m_off = 1 + (t >> 2) + (*ip++ << 2); +#endif + NEED_OP(2); + t = 2; COPY_DICT(t,m_off) +#else +#if defined(LZO1Z) + t = 1 + (t << 6) + (*ip++ >> 2); + m_pos = op - t; + last_m_off = t; +#else + m_pos = op - 1; + m_pos -= t >> 2; + m_pos -= *ip++ << 2; +#endif + TEST_LB(m_pos); NEED_OP(2); + *op++ = *m_pos++; *op++ = *m_pos; +#endif + goto match_done; + } + +#if defined(COPY_DICT) + + NEED_OP(t+3-1); + t += 3-1; COPY_DICT(t,m_off) + +#else + + TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1); +#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4) + if (op - m_pos >= 8) + { + t += (3 - 1); + if (t >= 8) do + { + UA_COPY64(op,m_pos); + op += 8; m_pos += 8; t -= 8; + } while (t >= 8); + if (t >= 4) + { + UA_COPY32(op,m_pos); + op += 4; m_pos += 4; t -= 4; + } + if (t > 0) + { + *op++ = m_pos[0]; + if (t > 1) { *op++ = m_pos[1]; if (t > 2) { *op++ = m_pos[2]; } } + } + } + else +#elif defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4) +#if !defined(LZO_UNALIGNED_OK_4) + if (t >= 2 * 4 - (3 - 1) && PTR_ALIGNED2_4(op,m_pos)) + { + assert((op - m_pos) >= 4); +#else + if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4) + { +#endif + UA_COPY32(op,m_pos); + op += 4; m_pos += 4; t -= 4 - (3 - 1); + do { + UA_COPY32(op,m_pos); + op += 4; m_pos += 4; t -= 4; + } while (t >= 4); + if (t > 0) do *op++ = *m_pos++; while (--t > 0); + } + else +#endif + { +copy_match: + *op++ = *m_pos++; *op++ = *m_pos++; + do *op++ = *m_pos++; while (--t > 0); + } + +#endif + +match_done: +#if defined(LZO1Z) + t = ip[-1] & 3; +#else + t = ip[-2] & 3; +#endif + if (t == 0) + break; + +match_next: + assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+1); +#if 0 + do *op++ = *ip++; while (--t > 0); +#else + *op++ = *ip++; + if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } } +#endif + t = *ip++; + } while (TEST_IP && TEST_OP); + } + +#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP) + *out_len = pd(op, out); + return LZO_E_EOF_NOT_FOUND; +#endif + +eof_found: + assert(t == 1); + *out_len = pd(op, out); + return (ip == ip_end ? LZO_E_OK : + (ip < ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN)); + +#if defined(HAVE_NEED_IP) +input_overrun: + *out_len = pd(op, out); + return LZO_E_INPUT_OVERRUN; +#endif + +#if defined(HAVE_NEED_OP) +output_overrun: + *out_len = pd(op, out); + return LZO_E_OUTPUT_OVERRUN; +#endif + +#if defined(LZO_TEST_OVERRUN_LOOKBEHIND) +lookbehind_overrun: + *out_len = pd(op, out); + return LZO_E_LOOKBEHIND_OVERRUN; +#endif +} + +#endif + +/***** End of minilzo.c *****/ + diff --git a/libmednahawk/src/compress/minilzo.h b/libmednahawk/src/compress/minilzo.h new file mode 100644 index 0000000000..cb6c556be0 --- /dev/null +++ b/libmednahawk/src/compress/minilzo.h @@ -0,0 +1,109 @@ +/* minilzo.h -- mini subset of the LZO real-time data compression library + + This file is part of the LZO real-time data compression library. + + Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer + All Rights Reserved. + + The LZO library is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + The LZO library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the LZO library; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Markus F.X.J. Oberhumer + + http://www.oberhumer.com/opensource/lzo/ + */ + +/* + * NOTE: + * the full LZO package can be found at + * http://www.oberhumer.com/opensource/lzo/ + */ + + +#ifndef __MINILZO_H +#define __MINILZO_H 1 + +#define MINILZO_VERSION 0x2060 + +#ifdef __LZOCONF_H +# error "you cannot use both LZO and miniLZO" +#endif + +#undef LZO_HAVE_CONFIG_H +#include "lzoconf.h" + +#if !defined(LZO_VERSION) || (LZO_VERSION != MINILZO_VERSION) +# error "version mismatch in header files" +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + + +/*********************************************************************** +// +************************************************************************/ + +/* Memory required for the wrkmem parameter. + * When the required size is 0, you can also pass a NULL pointer. + */ + +#define LZO1X_MEM_COMPRESS LZO1X_1_MEM_COMPRESS +#define LZO1X_1_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) +#define LZO1X_MEM_DECOMPRESS (0) + + +/* compression */ +LZO_EXTERN(int) +lzo1x_1_compress ( const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem ); + +/* decompression */ +LZO_EXTERN(int) +lzo1x_decompress ( const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem /* NOT USED */ ); + +/* safe decompression with overrun testing */ +LZO_EXTERN(int) +lzo1x_decompress_safe ( const lzo_bytep src, lzo_uint src_len, + lzo_bytep dst, lzo_uintp dst_len, + lzo_voidp wrkmem /* NOT USED */ ); + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* already included */ + diff --git a/libmednahawk/src/compress/quicklz.c b/libmednahawk/src/compress/quicklz.c new file mode 100644 index 0000000000..3834ac6b03 --- /dev/null +++ b/libmednahawk/src/compress/quicklz.c @@ -0,0 +1,888 @@ +// QuickLZ data compression library +// Copyright (C) 2006-2008 Lasse Mikkel Reinhold +// lar@quicklz.com +// +// QuickLZ can be used for free under the GPL-1 or GPL-2 license (where anything +// released into public must be open source) or under a commercial license if such +// has been acquired (see http://www.quicklz.com/order.html). The commercial license +// does not cover derived or ported versions created by third parties under GPL. + +#include "quicklz.h" + +int qlz_get_setting(int setting) +{ + switch (setting) + { + case 0: return COMPRESSION_LEVEL; + case 1: return SCRATCH_COMPRESS; + case 2: return SCRATCH_DECOMPRESS; + case 3: return STREAMING_MODE_VALUE; +#ifdef test_rle + case 4: return 1; +#else + case 4: return 0; +#endif +#ifdef speedup_incompressible + case 5: return 1; +#else + case 5: return 0; +#endif +#ifdef memory_safe + case 6: return 1; +#else + case 6: return 0; +#endif + case 7: return QLZ_VERSION_MAJOR; + case 8: return QLZ_VERSION_MINOR; + case 9: return QLZ_VERSION_REVISION; + } + return -1; +} + +__inline unsigned int hash_func(unsigned int i) +{ + return ((i >> 12) ^ i) & 0x0fff; +} + +__inline unsigned int fast_read(void const *src, unsigned int bytes) +{ +#ifndef X86X64 + unsigned char *p = (unsigned char*)src; + switch (bytes) + { + case 4: + return(*p | *(p + 1) << 8 | *(p + 2) << 16 | *(p + 3) << 24); + case 3: + return(*p | *(p + 1) << 8 | *(p + 2) << 16); + case 2: + return(*p | *(p + 1) << 8); + case 1: + return(*p); + } + return 0; +#else + if (bytes >= 1 && bytes <= 4) + return *((unsigned int*)src); + else + return 0; +#endif +} + +__inline void fast_write(unsigned int f, void *dst, unsigned int bytes) +{ +#ifndef X86X64 + unsigned char *p = (unsigned char*)dst; + + switch (bytes) + { + case 4: + *p = (unsigned char)f; + *(p + 1) = (unsigned char)(f >> 8); + *(p + 2) = (unsigned char)(f >> 16); + *(p + 3) = (unsigned char)(f >> 24); + return; + case 3: + *p = (unsigned char)f; + *(p + 1) = (unsigned char)(f >> 8); + *(p + 2) = (unsigned char)(f >> 16); + return; + case 2: + *p = (unsigned char)f; + *(p + 1) = (unsigned char)(f >> 8); + return; + case 1: + *p = (unsigned char)f; + return; + } +#else + switch (bytes) + { + case 4: + *((unsigned int*)dst) = f; + return; + case 3: + *((unsigned int*)dst) = f; + return; + case 2: +#if COMPRESSION_LEVEL == 0 +// 2 byte writes are common in level 0 + *((unsigned short int*)dst) = (unsigned short int)f; +#else + *((unsigned int*)dst) = f; +#endif + return; + case 1: + *((unsigned char*)dst) = (unsigned char)f; + return; + } +#endif +} + +__inline void memcpy_up(unsigned char *dst, const unsigned char *src, unsigned int n) +{ + // cannot be replaced by overlap handling of memmove() due to LZSS algorithm +#ifndef X86X64 + + if(n > 8 && src + n < dst) + memcpy(dst, src, n); + else + { + unsigned char *end = dst + n; + while(dst < end) + { + *dst = *src; + dst++; + src++; + } + } +#else + if (n < 5) + *((unsigned int*)dst) = *((unsigned int*)src); + else + { + unsigned char *end = dst + n; + while(dst < end) + { + *((unsigned int*)dst) = *((unsigned int*)src); + dst = dst + 4; + src = src + 4; + } + } +#endif +} + +__inline unsigned int fast_read_safe(void const *src, unsigned int bytes, const unsigned char *invalid) +{ +#ifdef memory_safe + if ((const unsigned char *)src + 4 > (const unsigned char *)invalid) + return 0xffffffff; +#endif + invalid = invalid; + return fast_read(src, bytes); +} + +unsigned int qlz_compress_core(const void *source, unsigned char *destination, unsigned int size, const unsigned char *hashtable[][AND + 1], const unsigned char *first_valid, unsigned char *hash_counter) +{ + const unsigned char *source_c = (const unsigned char*)source; + unsigned char *destination_c = (unsigned char*)destination; + const unsigned char *last_byte = source_c + size - 1; + const unsigned char *src = source_c; + unsigned char *cword_ptr = destination_c; + unsigned char *dst = destination_c + 4; + unsigned int cword_val = 1U << 31; + const unsigned char *guarantee_uncompressed = last_byte - 8; + +#ifdef speedup_incompressible + unsigned char *prev_dst = dst; + const unsigned char *prev_src = src; +#endif + + hash_counter = hash_counter; + first_valid = first_valid; + + // save first 4 bytes uncompressed + while(src < source_c + 4 && src < guarantee_uncompressed) + { + cword_val = (cword_val >> 1); + *dst = *src; + dst++; + src++; + } + + while(src < guarantee_uncompressed) + { + unsigned int fetch; + if ((cword_val & 1) == 1) + { + // check if destinationc pointer could exceed destination buffer + if (dst > destination_c + size) + return 0; + + // store control word + fast_write((cword_val >> 1) | (1U << 31), cword_ptr, 4); + cword_ptr = dst; + dst += 4; + cword_val = 1U << 31; + +#ifdef speedup_incompressible + // check if source chunk is compressible + if (dst - prev_dst > src - prev_src && src > source_c + 1000) + { + int q; + for(q = 0; q < 30 && src + 31 < guarantee_uncompressed && dst + 35 < destination_c + size; q++) + { + +#if(COMPRESSION_LEVEL == 0) + int w; + for(w = 0; w < 31; w++) + { + fetch = fast_read(src + w, 4); + *(unsigned int*)&hashtable[hash_func(fetch)][0] = fast_read(src + w, 4); + hashtable[hash_func(fetch)][1] = src + w; + } +#endif + fast_write((1U << 31), dst - 4, 4); + memcpy(dst, src, 31); + + dst += 4*8 - 1 + 4; + src += 4*8 - 1; + prev_src = src; + prev_dst = dst; + cword_ptr = dst - 4; + } + } +#endif + } +#ifdef test_rle + // check for rle sequence + if (fast_read(src, 4) == fast_read(src + 1, 4)) + { + const unsigned char *orig_src; + fetch = fast_read(src, 4); + orig_src = src; + do src = src + 4; while (src <= guarantee_uncompressed - 4 && fetch == fast_read(src, 4)); + if((src - orig_src) <= 2047) + { + fast_write(((fetch & 0xff) << 16) | (unsigned int)((src - orig_src) << 4) | 15, dst, 4); + dst = dst + 3; + } + else + { + fast_write(((fetch & 0xff) << 16) | 15, dst, 4); + fast_write((unsigned int)(src - orig_src), dst + 3, 4); + dst = dst + 7; + } + cword_val = (cword_val >> 1) | (1 << 31); + } + else +#endif + { + const unsigned char *o; + unsigned int hash, matchlen; + +#if(COMPRESSION_LEVEL < 2) + unsigned int cached; + + fetch = fast_read(src, 4); + hash = hash_func(fetch); + + cached = fetch ^ *(unsigned int*)&hashtable[hash][0]; + *(unsigned int*)&hashtable[hash][0] = fetch; + + o = hashtable[hash][1]; + hashtable[hash][1] = src; + +#else + unsigned char c; + unsigned int k, m; + const unsigned char *offset2 = 0; + + fetch = fast_read(src, 4); + hash = hash_func(fetch); + + matchlen = 0; + c = hash_counter[hash]; + for(k = 0; k < AND + 1; k++) + { + o = hashtable[hash][(c - k) & AND]; + if(o > first_valid && o < src - 3 && *(src + matchlen) == *(o + matchlen) && (fast_read(o, 3) & 0xffffff) == (fetch & 0xffffff) && src - o < 131071) + { + size_t remaining; + remaining = guarantee_uncompressed - src; + m = 3; + if (fast_read(o, 4) == fetch) + { + while(*(o + m) == *(src + m) && m < remaining) + m++; + } + if (m > matchlen) + { + matchlen = m; + offset2 = o; + } + } + } + o = offset2; + c = (hash_counter[hash] + 1) & AND; + hash_counter[hash] = c; + hashtable[hash][c] = src; +#endif + +#if(COMPRESSION_LEVEL == 0) + if (o != 0 && (cached & 0xffffff) == 0 && src - o > 3) +#elif(COMPRESSION_LEVEL == 1) + if ((cached & 0xffffff) == 0 && o > first_valid && o < src - 3 && ((fast_read(o, 3) ^ fast_read(src, 3)) & 0xffffff) == 0 && src - o < 131071) +#elif(COMPRESSION_LEVEL > 1) + if(matchlen == 3) +#endif + { + unsigned int offset; + offset = (unsigned int)(src - o); + +#if(COMPRESSION_LEVEL < 2) + if (cached & 0xffffffff) +#endif + { +#if (COMPRESSION_LEVEL > 2) + unsigned int u; + for(u = 1; u < 3; u++) + { + hash = hash_func(fast_read(src + u, 4)); + c = (hash_counter[hash] + 1) & AND; + hash_counter[hash] = c; + hashtable[hash][c] = src + u; + } +#endif + +#if (COMPRESSION_LEVEL == 0) + cword_val = (cword_val >> 1) | (1U << 31); + fast_write(3 | (hash << 4), dst, 2); + src += 3; + dst += 2; +#else + + if(offset <= 63) + { + // encode lz match + *dst = (unsigned char)(offset << 2); + cword_val = (cword_val >> 1) | (1U << 31); + src += 3; + dst++; + } + else if (offset <= 16383) + { + // encode lz match + unsigned int f = (offset << 2) | 1; + fast_write(f, dst, 2); + cword_val = (cword_val >> 1) | (1U << 31); + src += 3; + dst += 2; + } + else + { + // encode literal + *dst = *src; + src++; + dst++; + cword_val = (cword_val >> 1); + } +#endif + } +#if(COMPRESSION_LEVEL > 1) + } + else if(matchlen > 3) + { +#elif(COMPRESSION_LEVEL < 2) + else +#endif + { + // encode lz match + unsigned int offset; + +#if(COMPRESSION_LEVEL < 2) + const unsigned char *old_src = src; + offset = (unsigned int)(src - o); + cword_val = (cword_val >> 1) | (1U << 31); + + src += 3; + while(*(o + (src - old_src)) == *src && src < guarantee_uncompressed) + src++; + matchlen = (unsigned int)(src - old_src); +#else + unsigned int u; + offset = (unsigned int)(src - o); + cword_val = (cword_val >> 1) | (1U << 31); + +#if (COMPRESSION_LEVEL > 2) + for(u = 1; u < matchlen; u++) +#else + for(u = 1; u < matchlen && u < 5; u++) +#endif + { + hash = hash_func(fast_read(src + u, 4)); + c = (hash_counter[hash] + 1) & AND; + hash_counter[hash] = c; + hashtable[hash][c] = src + u; + } + src += matchlen; +#endif + +#if (COMPRESSION_LEVEL == 0) + if (matchlen < 15) + { + fast_write(matchlen | (hash << 4), dst, 2); + dst += 2; + } + else if (matchlen < 255) + { + fast_write(hash << 4, dst, 2); + *(dst + 2) = (unsigned char)matchlen; + dst += 3; + } + else + { + fast_write(hash << 4, dst, 2); + *(dst + 2) = 0; + fast_write(matchlen, dst + 3, 4); + dst += 7; + } +#else + if (matchlen <= 18 && offset <= 1023) + { + unsigned int f = ((matchlen - 3) << 2) | (offset << 6) | 2; + fast_write(f, dst, 2); + dst += 2; + } + + else if(matchlen <= 34 && offset <= 65535) + { + unsigned int f = ((matchlen - 3) << 3) | (offset << 8) | 3; + fast_write(f, dst, 3); + dst += 3; + } + else if (matchlen >= 3) + { + if (matchlen <= 2050) + { + unsigned int f = ((matchlen - 3) << 4) | (offset << 15) | 7; + fast_write(f, dst, 4); + dst += 4; + } + else + { + fast_write(7, dst, 4); + fast_write(matchlen, dst + 4, 4); + fast_write(offset, dst + 8, 4); + dst += 12; + } + } +#endif + } + } + + else + { + // encode literal + *dst = *src; + src++; + dst++; + cword_val = (cword_val >> 1); + } + } + } + +// save last source bytes as literals + while (src <= last_byte) + { + if ((cword_val & 1) == 1) + { + fast_write((cword_val >> 1) | (1U << 31), cword_ptr, 4); + cword_ptr = dst; + dst += 4; + cword_val = 1U << 31; + } + + if (src < last_byte - 2 && src > source_c + 3) + { + hashtable[hash_func(fast_read(src, 4))][1] = src; + *(unsigned int*)&hashtable[hash_func(fast_read(src, 4))][0] = fast_read(src, 4); + } + *dst = *src; + src++; + dst++; + + cword_val = (cword_val >> 1); + } + + while((cword_val & 1) != 1) + cword_val = (cword_val >> 1); + + fast_write((cword_val >> 1) | (1U << 31), cword_ptr, 4); + + // min. size must be 9 bytes so that the qlz_size functions can take 9 bytes as argument + if (dst - destination_c < 9) + return 9; + else + return (unsigned int)(dst - destination_c); +} + +size_t qlz_decompress_core(const unsigned char *source, void *destination, size_t size, size_t source_size, unsigned char *first_valid, const unsigned char *hashtable[]) +{ + const unsigned char *source_c = (const unsigned char*)source; + unsigned char *destination_c = (unsigned char*)destination; + const unsigned char *src = source_c; + unsigned char *dst = destination_c; + const unsigned char* last_byte_successor = destination_c + size; + unsigned int cword_val = 1; + const unsigned int bitlut[16] = {4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0}; + const unsigned char *guaranteed_uncompressed = last_byte_successor - 4; + unsigned char *last_hashed = destination_c + 3; + + first_valid = first_valid; + last_hashed = last_hashed; + hashtable = hashtable; + + // prevent spurious memory read on a source with size < 4 + if (dst >= guaranteed_uncompressed) + { + src += 4; + while(dst < last_byte_successor) + { + *dst = *src; + dst++; + src++; + } + + return (unsigned int)(dst - destination_c); + } + + + for(;;) + { + unsigned int fetch; + + if (cword_val == 1) + { + // fetch control word + cword_val = fast_read_safe(src, 4, source_c + source_size) | (1U << 31); + src += 4; + } + + fetch = fast_read_safe(src, 4, source_c + source_size); + + // check if we must decode lz match + if ((cword_val & 1) == 1) + { + unsigned int matchlen; + +#if(COMPRESSION_LEVEL == 0) + unsigned int hash; + const unsigned char *offset2; + + cword_val = cword_val >> 1; + + if((fetch & 0xf) != 15) + { + hash = (fetch >> 4) & 0xfff; + offset2 = hashtable[hash]; + + if((fetch & 0xf) != 0) + { + matchlen = (fetch & 0xf); + src += 2; + } + else if((fetch & 0x00ff0000) != 0) + { + matchlen = *(src + 2); + src += 3; + } + else + { + matchlen = fast_read(src + 3, 4); + src += 7; + } + memcpy_up(dst, offset2, matchlen); + while(last_hashed < dst) + { + last_hashed++; + hashtable[hash_func(fast_read(last_hashed, 4))] = last_hashed; + } + dst += matchlen; + last_hashed = dst - 1; + } + +#else + unsigned int offset; + cword_val = cword_val >> 1; + + if ((fetch & 3) == 0) + { + offset = (fetch & 0xff) >> 2; +#ifdef memory_safe + if (3 > (unsigned int)(guaranteed_uncompressed - dst) || offset > (unsigned int)(dst - first_valid)) + return 0; +#endif + memcpy_up(dst, dst - offset, 3); + dst += 3; + src++; + } + else if ((fetch & 2) == 0) + { + offset = (fetch & 0xffff) >> 2; +#ifdef memory_safe + if (3 > (unsigned int)(guaranteed_uncompressed - dst) || offset > (unsigned int)(dst - first_valid)) + return 0; +#endif + memcpy_up(dst, dst - offset, 3); + dst += 3; + src += 2; + } + else if ((fetch & 1) == 0) + { + offset = (fetch & 0xffff) >> 6; + matchlen = ((fetch >> 2) & 15) + 3; +#ifdef memory_safe + if (matchlen > (unsigned int)(guaranteed_uncompressed - dst) || offset > (unsigned int)(dst - first_valid)) + return 0; +#endif + memcpy_up(dst, dst - offset, matchlen); + src += 2; + dst += matchlen; + } + else if ((fetch & 4) == 0) + { + offset = (fetch & 0xffffff) >> 8; + matchlen = ((fetch >> 3) & 31) + 3; +#ifdef memory_safe + if (matchlen > (unsigned int)(guaranteed_uncompressed - dst) || offset > (unsigned int)(dst - first_valid)) + return 0; +#endif + memcpy_up(dst, dst - offset, matchlen); + src += 3; + dst += matchlen; + } + else if ((fetch & 8) == 0) + { + offset = (fetch >> 15); + if (offset != 0) + { + matchlen = ((fetch >> 4) & 2047) + 3; + src += 4; + } + else + { + matchlen = fast_read_safe(src + 4, 4, source_c + source_size); + offset = fast_read_safe(src + 8, 4, source_c + source_size); + src += 12; + } +#ifdef memory_safe + if (matchlen > (unsigned int)(guaranteed_uncompressed - dst) || offset > (unsigned int)(dst - first_valid)) + return 0; +#endif + memcpy_up(dst, dst - offset, matchlen); + dst += matchlen; + } +#endif + else + { + // decode rle sequence + unsigned char rle_char; + rle_char = (unsigned char)(fetch >> 16); + matchlen = ((fetch >> 4) & 0xfff); + + if(matchlen != 0) + src += 3; + else + { + matchlen = fast_read_safe(src + 3, 4, source_c + source_size); + src += 7; + } + +#ifdef memory_safe + if(matchlen > (unsigned int)(guaranteed_uncompressed - dst)) + return 0; +#endif + memset(dst, rle_char, matchlen); + +#if(COMPRESSION_LEVEL == 0) + while(last_hashed < dst - 1) + { + last_hashed++; + hashtable[hash_func(fast_read(last_hashed, 4))] = last_hashed; + } + last_hashed = dst - 1 + matchlen; +#endif + dst += matchlen; + } + } + else + { + // decode literal +#ifdef memory_safe + if (4 > destination_c + size - dst || src > source_c + source_size + 4) + return 0; +#endif + memcpy_up(dst, src, 4); + + dst += bitlut[cword_val & 0xf]; + src += bitlut[cword_val & 0xf]; + cword_val = cword_val >> (bitlut[cword_val & 0xf]); + +#if(COMPRESSION_LEVEL == 0) + while(last_hashed < dst - 3) + { + last_hashed++; + hashtable[hash_func(fast_read(last_hashed, 4))] = last_hashed; + } +#endif + if (dst >= guaranteed_uncompressed) + { + // decode last literals and exit + while(dst < last_byte_successor) + { + if (cword_val == 1) + { + src += 4; + cword_val = 1U << 31; + } + if (1 > destination_c + size - dst) + return 0; + + *dst = *src; + dst++; + src++; + cword_val = cword_val >> 1; + } + +#if(COMPRESSION_LEVEL == 0) + while(last_hashed < last_byte_successor - 4) + { + last_hashed++; + hashtable[hash_func(fast_read(last_hashed, 4))] = last_hashed; + } +#endif + if((src - 1) - source_c > 8) // 8 bytes comp. size excessive len is ok + return 0; + else if(dst - destination_c - size == 0) + return size; + else + return 0; + } + } + } +} + +size_t qlz_size_decompressed(const char *source) +{ + unsigned int n, r; + n = (((*source) & 2) == 2) ? 4 : 1; + r = fast_read(source + 1 + n, n); + r = r & (0xffffffff >> ((4 - n)*8)); + return r; +} + +size_t qlz_size_compressed(const char *source) +{ + unsigned int n, r; + n = (((*source) & 2) == 2) ? 4 : 1; + r = fast_read(source + 1, n); + r = r & (0xffffffff >> ((4 - n)*8)); + return r; +} + +size_t qlz_compress(const void *source, char *destination, size_t size, char *scratch) +{ + // 1-8 bytes for aligning (not 0-7!); 8 bytes for buffersize (padds on 32 bit cpu); HASH_SIZE hash table; STREAMING_MODE_ROUNDED bytes streambuffer; optional HASH_ENTRIES byte hash counter + unsigned char *buffer_aligned = (unsigned char *)scratch + 8 - (((size_t)scratch) % 8); + const unsigned char *(*hashtable)[AND + 1] = (const unsigned char *(*)[AND + 1])(buffer_aligned + 8); + size_t *buffersize = (size_t *)buffer_aligned; + unsigned char *streambuffer = buffer_aligned + 8 + HASH_SIZE; + unsigned int r; + unsigned int compressed, base; + unsigned char *hash_counter = streambuffer + STREAMING_MODE_ROUNDED; + + if(size == 0 || size > 0xffffffff) + return 0; + +#if (COMPRESSION_LEVEL == 0 && STREAMING_MODE_ROUNDED == 0) + memset((void *)hashtable, 0, HASH_SIZE); +#endif + + if(size < 216) + base = 3; + else + base = 9; + +// if not STREAMING_MODE, then STREAMING_MODE_ROUNDED == 0 and first case (streaming buffer full) is executed unconditionally, functioning as block comp. + if (*buffersize + size - 1 >= STREAMING_MODE_ROUNDED) + { +#if (COMPRESSION_LEVEL == 0 && STREAMING_MODE_ROUNDED != 0) + memset((void *)hashtable, 0, HASH_SIZE); +#endif + + r = base + qlz_compress_core(source, (unsigned char*)destination + base, (unsigned int)size, hashtable, (const unsigned char*)source, hash_counter); +#if (COMPRESSION_LEVEL == 0 && STREAMING_MODE_ROUNDED != 0) + memset((void *)hashtable, 0, HASH_SIZE); +#endif + + if(r == base) + { + memcpy(destination + base, source, size); + r = (unsigned int)size + base; + compressed = 0; + } + else + compressed = 1; + *buffersize = 0; + } + else + { + memcpy(streambuffer + *buffersize, source, size); + r = base + qlz_compress_core(streambuffer + *buffersize, (unsigned char*)destination + base, (unsigned int)size, hashtable, streambuffer, hash_counter); + + if(r == base) + { + memcpy(destination + base, streambuffer + *buffersize, size); + r = (unsigned int)size + base; + compressed = 0; + + memset((void*)hashtable, 0, HASH_SIZE); + } + else + compressed = 1; + *buffersize += size; + } + + if(base == 3) + { + *destination = (unsigned char)(0 | compressed); + *(destination + 1) = (unsigned char)r; + *(destination + 2) = (unsigned char)size; + } + else + { + *destination = (unsigned char)(2 | compressed); + fast_write(r, destination + 1, 4); + fast_write((unsigned int)size, destination + 5, 4); + } + +#if (COMPRESSION_LEVEL == 0) + *destination = (*destination) | 4; +#endif + + return (size_t)r; +} + + + +size_t qlz_decompress(const char *source, void *destination, char *scratch) +{ + // 1-8 bytes for aligning (not 0-7!); 8 bytes for buffersize (padds on 32bit cpu); STREAMING_MODE_ROUNDED streambuffer; HASH_SIZE hash table + unsigned char *buffer_aligned = (unsigned char *)scratch + 8 - (((size_t)scratch) % 8); + size_t *buffersize = (size_t *)buffer_aligned; + unsigned int headerlen = 2*((((*source) & 2) == 2) ? 4 : 1) + 1; // get header len + + unsigned char *streambuffer = buffer_aligned + 8; + const unsigned char **hashtable = (const unsigned char **)(streambuffer + STREAMING_MODE_ROUNDED); + + size_t dsiz = qlz_size_decompressed((char *)source); + size_t csiz = qlz_size_compressed((char *)source); + if (*buffersize + qlz_size_decompressed((char *)source) - 1 >= STREAMING_MODE_ROUNDED) + { + if((*source & 1) == 1) + qlz_decompress_core((const unsigned char *)source + headerlen, destination, dsiz, csiz, (unsigned char*)destination, hashtable); + else + memcpy(destination, source + headerlen, dsiz); + *buffersize = 0; + } + else + { + if((*source & 1) == 1) + qlz_decompress_core((const unsigned char *)source + headerlen, streambuffer + *buffersize, dsiz, csiz, streambuffer, hashtable); + else + memcpy(streambuffer + *buffersize, source + headerlen, dsiz); + memcpy(destination, streambuffer + *buffersize, dsiz); + *buffersize += dsiz; + } + return dsiz; +} diff --git a/libmednahawk/src/compress/quicklz.h b/libmednahawk/src/compress/quicklz.h new file mode 100644 index 0000000000..dbfeb0000c --- /dev/null +++ b/libmednahawk/src/compress/quicklz.h @@ -0,0 +1,82 @@ +#ifndef QLZ_HEADER +#define QLZ_HEADER + +// Version 1.31 final +#define QLZ_VERSION_MAJOR 1 +#define QLZ_VERSION_MINOR 3 +#define QLZ_VERSION_REVISION 1 + +// Set following flags according to the manual +#define COMPRESSION_LEVEL 0 +//#define STREAMING_MODE 2000000 +#define test_rle +#define speedup_incompressible +//#define memory_safe + +// Public functions of QuickLZ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +size_t qlz_decompress(const char *source, void *destination, char *scratch); +size_t qlz_compress(const void *source, char *destination, size_t size, char *scratch); +size_t qlz_size_decompressed(const char *source); +size_t qlz_size_compressed(const char *source); +int qlz_get_setting(int setting); + +#if (defined(__X86__) || defined(__i386__) || defined(i386) || defined(_M_IX86) || defined(__386__) || defined(__x86_64__) || defined(_M_X64)) + #define X86X64 +#endif + +// Compute SCRATCH_COMPRESS, SCRATCH_DECOMPRESS and constants used internally +#if COMPRESSION_LEVEL == 0 && defined(memory_safe) + #error memory_safe flag cannot be used with COMPRESSION_LEVEL 0 +#endif + +#define HASH_ENTRIES 4096 + +#if (COMPRESSION_LEVEL == 0 || COMPRESSION_LEVEL == 1 || COMPRESSION_LEVEL == 2) + #define AND 1 +#elif (COMPRESSION_LEVEL == 3) + #define AND 0x7 +#else + #error COMPRESSION_LEVEL must be 0, 1, 2 or 3 +#endif + +#define HASH_SIZE (AND + 1)*HASH_ENTRIES*sizeof(unsigned char *) + +#ifdef STREAMING_MODE + #define STREAMING_MODE_VALUE STREAMING_MODE +#else + #define STREAMING_MODE_VALUE 0 +#endif + +#define STREAMING_MODE_ROUNDED ((STREAMING_MODE_VALUE >> 3) << 3) + +#if (COMPRESSION_LEVEL > 1) + #define SCRATCH_COMPRESS HASH_SIZE + STREAMING_MODE_VALUE + 16 + HASH_ENTRIES +#else + #define SCRATCH_COMPRESS HASH_SIZE + STREAMING_MODE_VALUE + 16 +#endif + +#if (COMPRESSION_LEVEL == 0) + #define SCRATCH_DECOMPRESS HASH_ENTRIES*sizeof(unsigned char *) + 16 + STREAMING_MODE_VALUE +#else + #define SCRATCH_DECOMPRESS 16 + STREAMING_MODE_VALUE +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif + + + + + diff --git a/libmednahawk/src/compress/unzip.c b/libmednahawk/src/compress/unzip.c new file mode 100644 index 0000000000..707c3e36e1 --- /dev/null +++ b/libmednahawk/src/compress/unzip.c @@ -0,0 +1,1561 @@ +/* unzip.c -- IO for uncompress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + Read unzip.h for more info +*/ + +/* Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of +compatibility with older software. The following is from the original crypt.c. Code +woven in by Terry Thorsen 1/2003. +*/ +/* + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in zip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +/* + crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] + + The encryption/decryption parts of this source code (as opposed to the + non-echoing password parts) were originally written in Europe. The + whole source package can be freely distributed, including from the USA. + (Prior to January 2000, re-export from the US was a violation of US law.) + */ + +/* + This encryption code is a direct transcription of the algorithm from + Roger Schlafly, described by Phil Katz in the file appnote.txt. This + file (appnote.txt) is distributed with the PKZIP program (even in the + version without encryption capabilities). + */ + +/* Altered for use in Mednafen: + Removed encryption code. +*/ + +#include +#include +#include +#include "zlib.h" +#ifndef OF +#define OF(a) a +#endif +#include "unzip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else +# include +#endif + + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + + +#ifndef CASESENSITIVITYDEFAULT_NO +# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) +# define CASESENSITIVITYDEFAULT_NO +# endif +#endif + + +#ifndef UNZ_BUFSIZE +#define UNZ_BUFSIZE (16384) +#endif + +#ifndef UNZ_MAXFILENAMEINZIP +#define UNZ_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) + + + + +const char unz_copyright[] = + " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; + +/* unz_file_info_interntal contain internal info about a file in zipfile*/ +typedef struct unz_file_info_internal_s +{ + uLong offset_curfile;/* relative offset of local header 4 bytes */ +} unz_file_info_internal; + + +/* file_in_zip_read_info_s contain internal information about a file in zipfile, + when reading and decompress it */ +typedef struct +{ + char *read_buffer; /* internal buffer for compressed data */ + z_stream stream; /* zLib stream structure for inflate */ + + uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ + uLong stream_initialised; /* flag set if stream structure is initialised*/ + + uLong offset_local_extrafield;/* offset of the local extra field */ + uInt size_local_extrafield;/* size of the local extra field */ + uLong pos_local_extrafield; /* position in the local extra field in read*/ + + uLong crc32; /* crc32 of all data uncompressed */ + uLong crc32_wait; /* crc32 we must obtain after decompress all */ + uLong rest_read_compressed; /* number of byte to be decompressed */ + uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ + zlib_filefunc_def z_filefunc; + voidpf filestream; /* io structore of the zipfile */ + uLong compression_method; /* compression method (0==store) */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ + int raw; +} file_in_zip_read_info_s; + + +/* unz_s contain internal information about the zipfile +*/ +typedef struct +{ + zlib_filefunc_def z_filefunc; + voidpf filestream; /* io structore of the zipfile */ + unz_global_info gi; /* public global information */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ + uLong num_file; /* number of the current file in the zipfile*/ + uLong pos_in_central_dir; /* pos of the current file in the central dir*/ + uLong current_file_ok; /* flag about the usability of the current file*/ + uLong central_pos; /* position of the beginning of the central dir*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory with + respect to the starting disk number */ + + unz_file_info cur_file_info; /* public info about the current file in zip*/ + unz_file_info_internal cur_file_info_internal; /* private info about it*/ + file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current + file if we are decompressing it */ + int encrypted; +} unz_s; + +/* =========================================================================== + Read a byte from a gz_stream; update next_in and avail_in. Return EOF + for end of file. + IN assertion: the stream s has been sucessfully opened for reading. +*/ + + +local int unzlocal_getByte OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + int *pi)); + +local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi) + const zlib_filefunc_def* pzlib_filefunc_def; + voidpf filestream; + int *pi; +{ + unsigned char c; + int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); + if (err==1) + { + *pi = (int)c; + return UNZ_OK; + } + else + { + if (ZERROR(*pzlib_filefunc_def,filestream)) + return UNZ_ERRNO; + else + return UNZ_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int unzlocal_getShort OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX)); + +local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX) + const zlib_filefunc_def* pzlib_filefunc_def; + voidpf filestream; + uLong *pX; +{ + uLong x ; + int i; + int err; + + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int unzlocal_getLong OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX)); + +local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX) + const zlib_filefunc_def* pzlib_filefunc_def; + voidpf filestream; + uLong *pX; +{ + uLong x ; + int i; + int err; + + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<16; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<24; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + + +/* My own strcmpi / strcasecmp */ +local int strcmpcasenosensitive_internal (fileName1,fileName2) + const char* fileName1; + const char* fileName2; +{ + for (;;) + { + char c1=*(fileName1++); + char c2=*(fileName2++); + if ((c1>='a') && (c1<='z')) + c1 -= 0x20; + if ((c2>='a') && (c2<='z')) + c2 -= 0x20; + if (c1=='\0') + return ((c2=='\0') ? 0 : -1); + if (c2=='\0') + return 1; + if (c1c2) + return 1; + } +} + + +#ifdef CASESENSITIVITYDEFAULT_NO +#define CASESENSITIVITYDEFAULTVALUE 2 +#else +#define CASESENSITIVITYDEFAULTVALUE 1 +#endif + +#ifndef STRCMPCASENOSENTIVEFUNCTION +#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal +#endif + +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) + +*/ +extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) + const char* fileName1; + const char* fileName2; + int iCaseSensitivity; +{ + if (iCaseSensitivity==0) + iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; + + if (iCaseSensitivity==1) + return strcmp(fileName1,fileName2); + + return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); +} + +#ifndef BUFREADCOMMENT +#define BUFREADCOMMENT (0x400) +#endif + +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong unzlocal_SearchCentralDir OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream)); + +local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream) + const zlib_filefunc_def* pzlib_filefunc_def; + voidpf filestream; +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) + return 0; + + + uSizeFile = ZTELL(*pzlib_filefunc_def,filestream); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) + break; + + if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} + +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer + "zlib/zlib114.zip". + If the zipfile cannot be opened (file doesn't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ +extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def) + const char *path; + zlib_filefunc_def* pzlib_filefunc_def; +{ + unz_s us; + unz_s *s; + uLong central_pos,uL; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + + int err=UNZ_OK; + + if (unz_copyright[0]!=' ') + return NULL; + + if (pzlib_filefunc_def==NULL) + fill_fopen_filefunc(&us.z_filefunc); + else + us.z_filefunc = *pzlib_filefunc_def; + + us.filestream= (*(us.z_filefunc.zopen_file))(us.z_filefunc.opaque, + path, + ZLIB_FILEFUNC_MODE_READ | + ZLIB_FILEFUNC_MODE_EXISTING); + if (us.filestream==NULL) + return NULL; + + central_pos = unzlocal_SearchCentralDir(&us.z_filefunc,us.filestream); + if (central_pos==0) + err=UNZ_ERRNO; + + if (ZSEEK(us.z_filefunc, us.filestream, + central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) + err=UNZ_ERRNO; + + /* the signature, already checked */ + if (unzlocal_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of this disk */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of the disk with the start of the central directory */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((number_entry_CD!=us.gi.number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=UNZ_BADZIPFILE; + + /* size of the central directory */ + if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* zipfile comment length */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((central_pospfile_in_zip_read!=NULL) + unzCloseCurrentFile(file); + + ZCLOSE(s->z_filefunc, s->filestream); + TRYFREE(s); + return UNZ_OK; +} + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ +extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) + unzFile file; + unz_global_info *pglobal_info; +{ + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + *pglobal_info=s->gi; + return UNZ_OK; +} + + +/* + Translate date/time from Dos format to tm_unz (readable more easilty) +*/ +local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) + uLong ulDosDate; + tm_unz* ptm; +{ + uLong uDate; + uDate = (uLong)(ulDosDate>>16); + ptm->tm_mday = (uInt)(uDate&0x1f) ; + ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; + ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; + + ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); + ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; + ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; +} + +/* + Get Info about the current file in the zipfile, with internal only info +*/ +local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal + *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); + +local int unzlocal_GetCurrentFileInfoInternal (file, + pfile_info, + pfile_info_internal, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + unz_file_info_internal *pfile_info_internal; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + unz_s* s; + unz_file_info file_info; + unz_file_info_internal file_info_internal; + int err=UNZ_OK; + uLong uMagic; + long lSeek=0; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (ZSEEK(s->z_filefunc, s->filestream, + s->pos_in_central_dir+s->byte_before_the_zipfile, + ZLIB_FILEFUNC_SEEK_SET)!=0) + err=UNZ_ERRNO; + + + /* we check the magic */ + if (err==UNZ_OK) + { + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x02014b50) + err=UNZ_BADZIPFILE; + } + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) + err=UNZ_ERRNO; + + unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) + err=UNZ_ERRNO; + + lSeek+=file_info.size_filename; + if ((err==UNZ_OK) && (szFileName!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_filename0) && (fileNameBufferSize>0)) + if (ZREAD(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) + err=UNZ_ERRNO; + lSeek -= uSizeRead; + } + + + if ((err==UNZ_OK) && (extraField!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) + if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead) + err=UNZ_ERRNO; + lSeek += file_info.size_file_extra - uSizeRead; + } + else + lSeek+=file_info.size_file_extra; + + + if ((err==UNZ_OK) && (szComment!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + if ((file_info.size_file_comment>0) && (commentBufferSize>0)) + if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) + err=UNZ_ERRNO; + lSeek+=file_info.size_file_comment - uSizeRead; + } + else + lSeek+=file_info.size_file_comment; + + if ((err==UNZ_OK) && (pfile_info!=NULL)) + *pfile_info=file_info; + + if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) + *pfile_info_internal=file_info_internal; + + return err; +} + + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. +*/ +extern int ZEXPORT unzGetCurrentFileInfo (file, + pfile_info, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize) + unzFile file; + unz_file_info *pfile_info; + char *szFileName; + uLong fileNameBufferSize; + void *extraField; + uLong extraFieldBufferSize; + char *szComment; + uLong commentBufferSize; +{ + return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, + szFileName,fileNameBufferSize, + extraField,extraFieldBufferSize, + szComment,commentBufferSize); +} + +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ +extern int ZEXPORT unzGoToFirstFile (file) + unzFile file; +{ + int err=UNZ_OK; + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + s->pos_in_central_dir=s->offset_central_dir; + s->num_file=0; + err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ +extern int ZEXPORT unzGoToNextFile (file) + unzFile file; +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ + if (s->num_file+1==s->gi.number_entry) + return UNZ_END_OF_LIST_OF_FILE; + + s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; + s->num_file++; + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzipStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ +extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) + unzFile file; + const char *szFileName; + int iCaseSensitivity; +{ + unz_s* s; + int err; + + /* We remember the 'current' position in the file so that we can jump + * back there if we fail. + */ + unz_file_info cur_file_infoSaved; + unz_file_info_internal cur_file_info_internalSaved; + uLong num_fileSaved; + uLong pos_in_central_dirSaved; + + + if (file==NULL) + return UNZ_PARAMERROR; + + if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) + return UNZ_PARAMERROR; + + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + /* Save the current state */ + num_fileSaved = s->num_file; + pos_in_central_dirSaved = s->pos_in_central_dir; + cur_file_infoSaved = s->cur_file_info; + cur_file_info_internalSaved = s->cur_file_info_internal; + + err = unzGoToFirstFile(file); + + while (err == UNZ_OK) + { + char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; + err = unzGetCurrentFileInfo(file,NULL, + szCurrentFileName,sizeof(szCurrentFileName)-1, + NULL,0,NULL,0); + if (err == UNZ_OK) + { + if (unzStringFileNameCompare(szCurrentFileName, + szFileName,iCaseSensitivity)==0) + return UNZ_OK; + err = unzGoToNextFile(file); + } + } + + /* We failed, so restore the state of the 'current file' to where we + * were. + */ + s->num_file = num_fileSaved ; + s->pos_in_central_dir = pos_in_central_dirSaved ; + s->cur_file_info = cur_file_infoSaved; + s->cur_file_info_internal = cur_file_info_internalSaved; + return err; +} + + +/* +/////////////////////////////////////////// +// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) +// I need random access +// +// Further optimization could be realized by adding an ability +// to cache the directory in memory. The goal being a single +// comprehensive file read to put the file I need in a memory. +*/ + +/* +typedef struct unz_file_pos_s +{ + uLong pos_in_zip_directory; // offset in file + uLong num_of_file; // # of file +} unz_file_pos; +*/ + +extern int ZEXPORT unzGetFilePos(file, file_pos) + unzFile file; + unz_file_pos* file_pos; +{ + unz_s* s; + + if (file==NULL || file_pos==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + file_pos->pos_in_zip_directory = s->pos_in_central_dir; + file_pos->num_of_file = s->num_file; + + return UNZ_OK; +} + +extern int ZEXPORT unzGoToFilePos(file, file_pos) + unzFile file; + unz_file_pos* file_pos; +{ + unz_s* s; + int err; + + if (file==NULL || file_pos==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + /* jump to the right spot */ + s->pos_in_central_dir = file_pos->pos_in_zip_directory; + s->num_file = file_pos->num_of_file; + + /* set the current file */ + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + /* return results */ + s->current_file_ok = (err == UNZ_OK); + return err; +} + +/* +// Unzip Helper Functions - should be here? +/////////////////////////////////////////// +*/ + +/* + Read the local header of the current zipfile + Check the coherency of the local header and info in the end of central + directory about this file + store in *piSizeVar the size of extra info in local header + (filename and size of extra field data) +*/ +local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, + poffset_local_extrafield, + psize_local_extrafield) + unz_s* s; + uInt* piSizeVar; + uLong *poffset_local_extrafield; + uInt *psize_local_extrafield; +{ + uLong uMagic,uData,uFlags; + uLong size_filename; + uLong size_extra_field; + int err=UNZ_OK; + + *piSizeVar = 0; + *poffset_local_extrafield = 0; + *psize_local_extrafield = 0; + + if (ZSEEK(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + + s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + + + if (err==UNZ_OK) + { + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x04034b50) + err=UNZ_BADZIPFILE; + } + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) + err=UNZ_ERRNO; +/* + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) + err=UNZ_BADZIPFILE; +*/ + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) + err=UNZ_BADZIPFILE; + + if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) + err=UNZ_BADZIPFILE; + + *piSizeVar += (uInt)size_filename; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) + err=UNZ_ERRNO; + *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + + SIZEZIPLOCALHEADER + size_filename; + *psize_local_extrafield = (uInt)size_extra_field; + + *piSizeVar += (uInt)size_extra_field; + + return err; +} + +/* + Open for reading data the current file in the zipfile. + If there is no error and the file is opened, the return value is UNZ_OK. +*/ +extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password) + unzFile file; + int* method; + int* level; + int raw; + const char* password; +{ + int err=UNZ_OK; + uInt iSizeVar; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uLong offset_local_extrafield; /* offset of the local extra field */ + uInt size_local_extrafield; /* size of the local extra field */ + if (password != NULL) + return UNZ_PARAMERROR; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_PARAMERROR; + + if (s->pfile_in_zip_read != NULL) + unzCloseCurrentFile(file); + + if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, + &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) + return UNZ_BADZIPFILE; + + pfile_in_zip_read_info = (file_in_zip_read_info_s*) + ALLOC(sizeof(file_in_zip_read_info_s)); + if (pfile_in_zip_read_info==NULL) + return UNZ_INTERNALERROR; + + pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); + pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; + pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; + pfile_in_zip_read_info->pos_local_extrafield=0; + pfile_in_zip_read_info->raw=raw; + + if (pfile_in_zip_read_info->read_buffer==NULL) + { + TRYFREE(pfile_in_zip_read_info); + return UNZ_INTERNALERROR; + } + + pfile_in_zip_read_info->stream_initialised=0; + + if (method!=NULL) + *method = (int)s->cur_file_info.compression_method; + + if (level!=NULL) + { + *level = 6; + switch (s->cur_file_info.flag & 0x06) + { + case 6 : *level = 1; break; + case 4 : *level = 2; break; + case 2 : *level = 9; break; + } + } + + if ((s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; + pfile_in_zip_read_info->crc32=0; + pfile_in_zip_read_info->compression_method = + s->cur_file_info.compression_method; + pfile_in_zip_read_info->filestream=s->filestream; + pfile_in_zip_read_info->z_filefunc=s->z_filefunc; + pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; + + pfile_in_zip_read_info->stream.total_out = 0; + + if ((s->cur_file_info.compression_method==Z_DEFLATED) && + (!raw)) + { + pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; + pfile_in_zip_read_info->stream.zfree = (free_func)0; + pfile_in_zip_read_info->stream.opaque = (voidpf)0; + pfile_in_zip_read_info->stream.next_in = (voidpf)0; + pfile_in_zip_read_info->stream.avail_in = 0; + + err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); + if (err == Z_OK) + pfile_in_zip_read_info->stream_initialised=1; + else + { + TRYFREE(pfile_in_zip_read_info); + return err; + } + /* windowBits is passed < 0 to tell that there is no zlib header. + * Note that in this case inflate *requires* an extra "dummy" byte + * after the compressed stream in order to complete decompression and + * return Z_STREAM_END. + * In unzip, i don't wait absolutely Z_STREAM_END because I known the + * size of both compressed and uncompressed data + */ + } + pfile_in_zip_read_info->rest_read_compressed = + s->cur_file_info.compressed_size ; + pfile_in_zip_read_info->rest_read_uncompressed = + s->cur_file_info.uncompressed_size ; + + + pfile_in_zip_read_info->pos_in_zipfile = + s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + + iSizeVar; + + pfile_in_zip_read_info->stream.avail_in = (uInt)0; + + s->pfile_in_zip_read = pfile_in_zip_read_info; + + return UNZ_OK; +} + +extern int ZEXPORT unzOpenCurrentFile (file) + unzFile file; +{ + return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); +} + +extern int ZEXPORT unzOpenCurrentFilePassword (file, password) + unzFile file; + const char* password; +{ + return unzOpenCurrentFile3(file, NULL, NULL, 0, password); +} + +extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw) + unzFile file; + int* method; + int* level; + int raw; +{ + return unzOpenCurrentFile3(file, method, level, raw, NULL); +} + +/* + Read bytes from the current file. + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ +extern int ZEXPORT unzReadCurrentFile (file, buf, len) + unzFile file; + voidp buf; + unsigned len; +{ + int err=UNZ_OK; + uInt iRead = 0; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if ((pfile_in_zip_read_info->read_buffer == NULL)) + return UNZ_END_OF_LIST_OF_FILE; + if (len==0) + return 0; + + pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; + + pfile_in_zip_read_info->stream.avail_out = (uInt)len; + + if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && + (!(pfile_in_zip_read_info->raw))) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_uncompressed; + + if ((len>pfile_in_zip_read_info->rest_read_compressed+ + pfile_in_zip_read_info->stream.avail_in) && + (pfile_in_zip_read_info->raw)) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_compressed+ + pfile_in_zip_read_info->stream.avail_in; + + while (pfile_in_zip_read_info->stream.avail_out>0) + { + if ((pfile_in_zip_read_info->stream.avail_in==0) && + (pfile_in_zip_read_info->rest_read_compressed>0)) + { + uInt uReadThis = UNZ_BUFSIZE; + if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; + if (uReadThis == 0) + return UNZ_EOF; + if (ZSEEK(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + pfile_in_zip_read_info->pos_in_zipfile + + pfile_in_zip_read_info->byte_before_the_zipfile, + ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + if (ZREAD(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + pfile_in_zip_read_info->read_buffer, + uReadThis)!=uReadThis) + return UNZ_ERRNO; + + + pfile_in_zip_read_info->pos_in_zipfile += uReadThis; + + pfile_in_zip_read_info->rest_read_compressed-=uReadThis; + + pfile_in_zip_read_info->stream.next_in = + (Bytef*)pfile_in_zip_read_info->read_buffer; + pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; + } + + if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) + { + uInt uDoCopy,i ; + + if ((pfile_in_zip_read_info->stream.avail_in == 0) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + return (iRead==0) ? UNZ_EOF : iRead; + + if (pfile_in_zip_read_info->stream.avail_out < + pfile_in_zip_read_info->stream.avail_in) + uDoCopy = pfile_in_zip_read_info->stream.avail_out ; + else + uDoCopy = pfile_in_zip_read_info->stream.avail_in ; + + for (i=0;istream.next_out+i) = + *(pfile_in_zip_read_info->stream.next_in+i); + + pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, + pfile_in_zip_read_info->stream.next_out, + uDoCopy); + pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; + pfile_in_zip_read_info->stream.avail_in -= uDoCopy; + pfile_in_zip_read_info->stream.avail_out -= uDoCopy; + pfile_in_zip_read_info->stream.next_out += uDoCopy; + pfile_in_zip_read_info->stream.next_in += uDoCopy; + pfile_in_zip_read_info->stream.total_out += uDoCopy; + iRead += uDoCopy; + } + else + { + uLong uTotalOutBefore,uTotalOutAfter; + const Bytef *bufBefore; + uLong uOutThis; + int flush=Z_SYNC_FLUSH; + + uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; + bufBefore = pfile_in_zip_read_info->stream.next_out; + + /* + if ((pfile_in_zip_read_info->rest_read_uncompressed == + pfile_in_zip_read_info->stream.avail_out) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + flush = Z_FINISH; + */ + err=inflate(&pfile_in_zip_read_info->stream,flush); + + if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) + err = Z_DATA_ERROR; + + uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; + uOutThis = uTotalOutAfter-uTotalOutBefore; + + pfile_in_zip_read_info->crc32 = + crc32(pfile_in_zip_read_info->crc32,bufBefore, + (uInt)(uOutThis)); + + pfile_in_zip_read_info->rest_read_uncompressed -= + uOutThis; + + iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); + + if (err==Z_STREAM_END) + return (iRead==0) ? UNZ_EOF : iRead; + if (err!=Z_OK) + break; + } + } + + if (err==Z_OK) + return iRead; + return err; +} + + +/* + Give the current position in uncompressed data +*/ +extern z_off_t ZEXPORT unztell (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + return (z_off_t)pfile_in_zip_read_info->stream.total_out; +} + + +/* + return 1 if the end of file was reached, 0 elsewhere +*/ +extern int ZEXPORT unzeof (file) + unzFile file; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + return 1; + else + return 0; +} + + + +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field that can be read + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ +extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) + unzFile file; + voidp buf; + unsigned len; +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uInt read_now; + uLong size_to_read; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + size_to_read = (pfile_in_zip_read_info->size_local_extrafield - + pfile_in_zip_read_info->pos_local_extrafield); + + if (buf==NULL) + return (int)size_to_read; + + if (len>size_to_read) + read_now = (uInt)size_to_read; + else + read_now = (uInt)len ; + + if (read_now==0) + return 0; + + if (ZSEEK(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + pfile_in_zip_read_info->offset_local_extrafield + + pfile_in_zip_read_info->pos_local_extrafield, + ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + + if (ZREAD(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + buf,read_now)!=read_now) + return UNZ_ERRNO; + + return (int)read_now; +} + +/* + Close the file in zip opened with unzipOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ +extern int ZEXPORT unzCloseCurrentFile (file) + unzFile file; +{ + int err=UNZ_OK; + + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && + (!pfile_in_zip_read_info->raw)) + { + if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) + err=UNZ_CRCERROR; + } + + + TRYFREE(pfile_in_zip_read_info->read_buffer); + pfile_in_zip_read_info->read_buffer = NULL; + if (pfile_in_zip_read_info->stream_initialised) + inflateEnd(&pfile_in_zip_read_info->stream); + + pfile_in_zip_read_info->stream_initialised = 0; + TRYFREE(pfile_in_zip_read_info); + + s->pfile_in_zip_read=NULL; + + return err; +} + + +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ +extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) + unzFile file; + char *szComment; + uLong uSizeBuf; +{ + unz_s* s; + uLong uReadThis ; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + uReadThis = uSizeBuf; + if (uReadThis>s->gi.size_comment) + uReadThis = s->gi.size_comment; + + if (ZSEEK(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + + if (uReadThis>0) + { + *szComment='\0'; + if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) + return UNZ_ERRNO; + } + + if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) + *(szComment+s->gi.size_comment)='\0'; + return (int)uReadThis; +} + +/* Additions by RX '2004 */ +extern uLong ZEXPORT unzGetOffset (file) + unzFile file; +{ + unz_s* s; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return 0; + if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) + if (s->num_file==s->gi.number_entry) + return 0; + return s->pos_in_central_dir; +} + +extern int ZEXPORT unzSetOffset (file, pos) + unzFile file; + uLong pos; +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + s->pos_in_central_dir = pos; + s->num_file = s->gi.number_entry; /* hack */ + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} diff --git a/libmednahawk/src/compress/unzip.h b/libmednahawk/src/compress/unzip.h new file mode 100644 index 0000000000..521dc996af --- /dev/null +++ b/libmednahawk/src/compress/unzip.h @@ -0,0 +1,357 @@ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "zlib.h" +#ifndef OF +#define OF(a) a +#endif +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((const char *path)); +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer + "zlib/zlib113.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern unzFile ZEXPORT unzOpen2 OF((const char *path, + zlib_filefunc_def* pzlib_filefunc_def)); +/* + Open a Zip file, like unzOpen, but provide a set of file low level API + for read/write the zip file (see ioapi.h) +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +/* ****************************************** */ +/* Ryan supplied functions */ +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_pos_s +{ + uLong pos_in_zip_directory; /* offset in zip file directory */ + uLong num_of_file; /* # of file */ +} unz_file_pos; + +extern int ZEXPORT unzGetFilePos( + unzFile file, + unz_file_pos* file_pos); + +extern int ZEXPORT unzGoToFilePos( + unzFile file, + unz_file_pos* file_pos); + +/* ****************************************** */ + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, + const char* password)); +/* + Open for reading data the current file in the zipfile. + password is a crypting password + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, + int* method, + int* level, + int raw)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + +extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, + int* method, + int* level, + int raw, + const char* password)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +/***************************************************************************/ + +/* Get the current file offset */ +extern uLong ZEXPORT unzGetOffset (unzFile file); + +/* Set the current file offset */ +extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); + + + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff --git a/libmednahawk/src/cputest/Makefile.am.inc b/libmednahawk/src/cputest/Makefile.am.inc new file mode 100644 index 0000000000..a2489c8b52 --- /dev/null +++ b/libmednahawk/src/cputest/Makefile.am.inc @@ -0,0 +1,13 @@ +mednafen_SOURCES += cputest/cputest.c + +if ARCH_X86 +mednafen_SOURCES += cputest/x86_cpu.c +endif + +if ARCH_POWERPC +mednafen_SOURCES += cputest/ppc_cpu.c +endif + +#if ARCH_ARM +#mednafen_SOURCES += cputest/arm_cpu.c +#endif diff --git a/libmednahawk/src/cputest/README b/libmednahawk/src/cputest/README new file mode 100644 index 0000000000..4008e0b15e --- /dev/null +++ b/libmednahawk/src/cputest/README @@ -0,0 +1,3 @@ +modified slightly for usage in Mednafen + +ARM stuff not compiled in, for now. diff --git a/libmednahawk/src/cputest/arm_cpu.c b/libmednahawk/src/cputest/arm_cpu.c new file mode 100644 index 0000000000..3262ad788f --- /dev/null +++ b/libmednahawk/src/cputest/arm_cpu.c @@ -0,0 +1,29 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "cputest.h" +#ifdef HAVE_CONFIG_H +#include +#endif + +int ff_get_cpu_flags_arm(void) +{ + + return 0; + // return HAVE_IWMMXT * CPUTEST_FLAG_IWMMXT; +} diff --git a/libmednahawk/src/cputest/cputest.c b/libmednahawk/src/cputest/cputest.c new file mode 100644 index 0000000000..a354af50bf --- /dev/null +++ b/libmednahawk/src/cputest/cputest.c @@ -0,0 +1,86 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "cputest.h" +#ifdef HAVE_CONFIG_H +#include +#endif + +static int flags, checked = 0; + + +void cputest_force_flags(int arg) +{ + flags = arg; + checked = 1; +} + +int cputest_get_flags(void) +{ + if (checked) + return flags; + +// if (ARCH_ARM) flags = ff_get_cpu_flags_arm(); +#if ARCH_POWERPC + flags = ff_get_cpu_flags_ppc(); +#endif + +#if ARCH_X86 + flags = ff_get_cpu_flags_x86(); +#endif + + checked = 1; + return flags; +} + +#if 0 +//#ifdef TEST + +#undef printf +#include + +int main(void) +{ + int cpu_flags = av_get_cpu_flags(); + + printf("cpu_flags = 0x%08X\n", cpu_flags); + printf("cpu_flags = %s%s%s%s%s%s%s%s%s%s%s%s%s\n", +#if ARCH_ARM + cpu_flags & CPUTEST_FLAG_IWMMXT ? "IWMMXT " : "", +#elif ARCH_POWERPC + cpu_flags & CPUTEST_FLAG_ALTIVEC ? "ALTIVEC " : "", +#elif ARCH_X86 + cpu_flags & CPUTEST_FLAG_MMX ? "MMX " : "", + cpu_flags & CPUTEST_FLAG_MMX2 ? "MMX2 " : "", + cpu_flags & CPUTEST_FLAG_SSE ? "SSE " : "", + cpu_flags & CPUTEST_FLAG_SSE2 ? "SSE2 " : "", + cpu_flags & CPUTEST_FLAG_SSE2SLOW ? "SSE2(slow) " : "", + cpu_flags & CPUTEST_FLAG_SSE3 ? "SSE3 " : "", + cpu_flags & CPUTEST_FLAG_SSE3SLOW ? "SSE3(slow) " : "", + cpu_flags & CPUTEST_FLAG_SSSE3 ? "SSSE3 " : "", + cpu_flags & CPUTEST_FLAG_ATOM ? "Atom " : "", + cpu_flags & CPUTEST_FLAG_SSE4 ? "SSE4.1 " : "", + cpu_flags & CPUTEST_FLAG_SSE42 ? "SSE4.2 " : "", + cpu_flags & CPUTEST_FLAG_AVX ? "AVX " : "", + cpu_flags & CPUTEST_FLAG_3DNOW ? "3DNow " : "", + cpu_flags & CPUTEST_FLAG_3DNOWEXT ? "3DNowExt " : ""); +#endif + return 0; +} + +#endif diff --git a/libmednahawk/src/cputest/cputest.h b/libmednahawk/src/cputest/cputest.h new file mode 100644 index 0000000000..e0a94b7ce9 --- /dev/null +++ b/libmednahawk/src/cputest/cputest.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef AVUTIL_CPU_H +#define AVUTIL_CPU_H + +#define CPUTEST_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ + + /* lower 16 bits - CPU features */ +#define CPUTEST_FLAG_MMX 0x0001 ///< standard MMX +#define CPUTEST_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext +#define CPUTEST_FLAG_3DNOW 0x0004 ///< AMD 3DNOW +#define CPUTEST_FLAG_SSE 0x0008 ///< SSE functions +#define CPUTEST_FLAG_SSE2 0x0010 ///< PIV SSE2 functions +#define CPUTEST_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster +#define CPUTEST_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt +#define CPUTEST_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions +#define CPUTEST_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster +#define CPUTEST_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions +#define CPUTEST_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower +#define CPUTEST_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions +#define CPUTEST_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions +#define CPUTEST_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used +//#define CPUTEST_FLAG_IWMMXT 0x0100 ///< XScale IWMMXT +#define CPUTEST_FLAG_ALTIVEC 0x0001 ///< standard + +/** + * Return the flags which specify extensions supported by the CPU. + */ +int cputest_get_flags(void); + + +/** + * Disables cpu detection and forces the specified flags. + */ +void cputest_force_flags(int flags); + + +/* The following CPU-specific functions shall not be called directly. */ +int ff_get_cpu_flags_arm(void); +int ff_get_cpu_flags_ppc(void); +int ff_get_cpu_flags_x86(void); + +#endif /* AVUTIL_CPU_H */ + +#ifdef __cplusplus +} //extern "C" +#endif + diff --git a/libmednahawk/src/cputest/ppc_cpu.c b/libmednahawk/src/cputest/ppc_cpu.c new file mode 100644 index 0000000000..f836f069d7 --- /dev/null +++ b/libmednahawk/src/cputest/ppc_cpu.c @@ -0,0 +1,87 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef __APPLE__ +#include +#elif defined(__OpenBSD__) +#include +#include +#include +#elif defined(__AMIGAOS4__) +#include +#include +#include +#endif /* __APPLE__ */ + +#include "cputest.h" + +/** + * This function MAY rely on signal() or fork() in order to make sure AltiVec + * is present. + */ +int ff_get_cpu_flags_ppc(void) +{ +//#if HAVE_ALTIVEC +#if ARCH_POWERPC_ALTIVEC +#ifdef __AMIGAOS4__ + ULONG result = 0; + extern struct ExecIFace *IExec; + + IExec->GetCPUInfoTags(GCIT_VectorUnit, &result, TAG_DONE); + if (result == VECTORTYPE_ALTIVEC) + return CPUTEST_FLAG_ALTIVEC; + return 0; +#elif defined(__APPLE__) || defined(__OpenBSD__) +#ifdef __OpenBSD__ + int sels[2] = {CTL_MACHDEP, CPU_ALTIVEC}; +#else + int sels[2] = {CTL_HW, HW_VECTORUNIT}; +#endif + int has_vu = 0; + size_t len = sizeof(has_vu); + int err; + + err = sysctl(sels, 2, &has_vu, &len, NULL, 0); + + if (err == 0) + return has_vu ? CPUTEST_FLAG_ALTIVEC : 0; + return 0; +#elif CONFIG_RUNTIME_CPUDETECT + int proc_ver; + // Support of mfspr PVR emulation added in Linux 2.6.17. + __asm__ volatile("mfspr %0, 287" : "=r" (proc_ver)); + proc_ver >>= 16; + if (proc_ver & 0x8000 || + proc_ver == 0x000c || + proc_ver == 0x0039 || proc_ver == 0x003c || + proc_ver == 0x0044 || proc_ver == 0x0045 || + proc_ver == 0x0070) + return CPUTEST_FLAG_ALTIVEC; + return 0; +#else + // Since we were compiled for AltiVec, just assume we have it + // until someone comes up with a proper way (not involving signal hacks). + return CPUTEST_FLAG_ALTIVEC; +#endif /* __AMIGAOS4__ */ +#endif /* HAVE_ALTIVEC */ + return 0; +} diff --git a/libmednahawk/src/cputest/x86_cpu.c b/libmednahawk/src/cputest/x86_cpu.c new file mode 100644 index 0000000000..4ba6730bff --- /dev/null +++ b/libmednahawk/src/cputest/x86_cpu.c @@ -0,0 +1,159 @@ +/* + * CPU detection code, extracted from mmx.h + * (c)1997-99 by H. Dietz and R. Fisher + * Converted to C and improved by Fabrice Bellard. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include "x86_cpu.h" +#include "cputest.h" + +/* ebx saving is necessary for PIC. gcc seems unable to see it alone */ +#define cpuid(index,eax,ebx,ecx,edx)\ + __asm__ volatile\ + ("mov %%"REG_b", %%"REG_S"\n\t"\ + "cpuid\n\t"\ + "xchg %%"REG_b", %%"REG_S\ + : "=a" (eax), "=S" (ebx),\ + "=c" (ecx), "=d" (edx)\ + : "0" (index)); + +#define xgetbv(index,eax,edx) \ + __asm__ (".byte 0x0f, 0x01, 0xd0" : "=a"(eax), "=d"(edx) : "c" (index)) + +/* Function to test if multimedia instructions are supported... */ +int ff_get_cpu_flags_x86(void) +{ + int rval = 0; + int eax, ebx, ecx, edx; + int max_std_level, max_ext_level, std_caps=0, ext_caps=0; + int family=0, model=0; + union { int i[3]; char c[12]; } vendor; + +#if ARCH_X86_32 + x86_reg a, c; + __asm__ volatile ( + /* See if CPUID instruction is supported ... */ + /* ... Get copies of EFLAGS into eax and ecx */ + "pushfl\n\t" + "pop %0\n\t" + "mov %0, %1\n\t" + + /* ... Toggle the ID bit in one copy and store */ + /* to the EFLAGS reg */ + "xor $0x200000, %0\n\t" + "push %0\n\t" + "popfl\n\t" + + /* ... Get the (hopefully modified) EFLAGS */ + "pushfl\n\t" + "pop %0\n\t" + : "=a" (a), "=c" (c) + : + : "cc" + ); + + if (a == c) + return 0; /* CPUID not supported */ +#endif + + cpuid(0, max_std_level, vendor.i[0], vendor.i[2], vendor.i[1]); + + if(max_std_level >= 1){ + cpuid(1, eax, ebx, ecx, std_caps); + family = ((eax>>8)&0xf) + ((eax>>20)&0xff); + model = ((eax>>4)&0xf) + ((eax>>12)&0xf0); + if (std_caps & (1<<23)) + rval |= CPUTEST_FLAG_MMX; + if (std_caps & (1<<25)) + rval |= CPUTEST_FLAG_MMX2 +//#if HAVE_SSE + | CPUTEST_FLAG_SSE; + if (std_caps & (1<<26)) + rval |= CPUTEST_FLAG_SSE2; + if (ecx & 1) + rval |= CPUTEST_FLAG_SSE3; + if (ecx & 0x00000200 ) + rval |= CPUTEST_FLAG_SSSE3; + if (ecx & 0x00080000 ) + rval |= CPUTEST_FLAG_SSE4; + if (ecx & 0x00100000 ) + rval |= CPUTEST_FLAG_SSE42; +//#if HAVE_AVX + /* Check OXSAVE and AVX bits */ + if ((ecx & 0x18000000) == 0x18000000) { + /* Check for OS support */ + xgetbv(0, eax, edx); + if ((eax & 0x6) == 0x6) + rval |= CPUTEST_FLAG_AVX; + } +//#endif +//#endif + ; + } + + cpuid(0x80000000, max_ext_level, ebx, ecx, edx); + + if(max_ext_level >= 0x80000001){ + cpuid(0x80000001, eax, ebx, ecx, ext_caps); + if (ext_caps & (1<<31)) + rval |= CPUTEST_FLAG_3DNOW; + if (ext_caps & (1<<30)) + rval |= CPUTEST_FLAG_3DNOWEXT; + if (ext_caps & (1<<23)) + rval |= CPUTEST_FLAG_MMX; + if (ext_caps & (1<<22)) + rval |= CPUTEST_FLAG_MMX2; + + /* Allow for selectively disabling SSE2 functions on AMD processors + with SSE2 support but not SSE4a. This includes Athlon64, some + Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster + than SSE2 often enough to utilize this special-case flag. + CPUTEST_FLAG_SSE2 and CPUTEST_FLAG_SSE2SLOW are both set in this case + so that SSE2 is used unless explicitly disabled by checking + CPUTEST_FLAG_SSE2SLOW. */ + if (!strncmp(vendor.c, "AuthenticAMD", 12) && + rval & CPUTEST_FLAG_SSE2 && !(ecx & 0x00000040)) { + rval |= CPUTEST_FLAG_SSE2SLOW; + } + } + + if (!strncmp(vendor.c, "GenuineIntel", 12)) { + if (family == 6 && (model == 9 || model == 13 || model == 14)) { + /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and 6/14 (core1 "yonah") + * theoretically support sse2, but it's usually slower than mmx, + * so let's just pretend they don't. CPUTEST_FLAG_SSE2 is disabled and + * CPUTEST_FLAG_SSE2SLOW is enabled so that SSE2 is not used unless + * explicitly enabled by checking CPUTEST_FLAG_SSE2SLOW. The same + * situation applies for CPUTEST_FLAG_SSE3 and CPUTEST_FLAG_SSE3SLOW. */ + if (rval & CPUTEST_FLAG_SSE2) rval ^= CPUTEST_FLAG_SSE2SLOW|CPUTEST_FLAG_SSE2; + if (rval & CPUTEST_FLAG_SSE3) rval ^= CPUTEST_FLAG_SSE3SLOW|CPUTEST_FLAG_SSE3; + } + /* The Atom processor has SSSE3 support, which is useful in many cases, + * but sometimes the SSSE3 version is slower than the SSE2 equivalent + * on the Atom, but is generally faster on other processors supporting + * SSSE3. This flag allows for selectively disabling certain SSSE3 + * functions on the Atom. */ + if (family == 6 && model == 28) + rval |= CPUTEST_FLAG_ATOM; + } + + return rval; +} diff --git a/libmednahawk/src/cputest/x86_cpu.h b/libmednahawk/src/cputest/x86_cpu.h new file mode 100644 index 0000000000..7c87b0ae41 --- /dev/null +++ b/libmednahawk/src/cputest/x86_cpu.h @@ -0,0 +1,101 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_X86_CPU_H +#define AVUTIL_X86_CPU_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#if ARCH_X86_64 +# define OPSIZE "q" +# define REG_a "rax" +# define REG_b "rbx" +# define REG_c "rcx" +# define REG_d "rdx" +# define REG_D "rdi" +# define REG_S "rsi" +# define PTR_SIZE "8" +typedef int64_t x86_reg; + +# define REG_SP "rsp" +# define REG_BP "rbp" +# define REGBP rbp +# define REGa rax +# define REGb rbx +# define REGc rcx +# define REGd rdx +# define REGSP rsp + +#elif ARCH_X86_32 + +# define OPSIZE "l" +# define REG_a "eax" +# define REG_b "ebx" +# define REG_c "ecx" +# define REG_d "edx" +# define REG_D "edi" +# define REG_S "esi" +# define PTR_SIZE "4" +typedef int32_t x86_reg; + +# define REG_SP "esp" +# define REG_BP "ebp" +# define REGBP ebp +# define REGa eax +# define REGb ebx +# define REGc ecx +# define REGd edx +# define REGSP esp +#else +typedef int x86_reg; +#endif + +#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE)) +#define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE)) + +#if ARCH_X86_64 && defined(PIC) +# define BROKEN_RELOCATIONS 1 +#endif + +/* + * If gcc is not set to support sse (-msse) it will not accept xmm registers + * in the clobber list for inline asm. XMM_CLOBBERS takes a list of xmm + * registers to be marked as clobbered and evaluates to nothing if they are + * not supported, or to the list itself if they are supported. Since a clobber + * list may not be empty, XMM_CLOBBERS_ONLY should be used if the xmm + * registers are the only in the clobber list. + * For example a list with "eax" and "xmm0" as clobbers should become: + * : XMM_CLOBBERS("xmm0",) "eax" + * and a list with only "xmm0" should become: + * XMM_CLOBBERS_ONLY("xmm0") + */ +#if HAVE_XMM_CLOBBERS +# define XMM_CLOBBERS(...) __VA_ARGS__ +# define XMM_CLOBBERS_ONLY(...) : __VA_ARGS__ +#else +# define XMM_CLOBBERS(...) +# define XMM_CLOBBERS_ONLY(...) +#endif + +#endif /* AVUTIL_X86_CPU_H */ diff --git a/libmednahawk/src/debug.cpp b/libmednahawk/src/debug.cpp new file mode 100644 index 0000000000..d2bf4c96e0 --- /dev/null +++ b/libmednahawk/src/debug.cpp @@ -0,0 +1,237 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Support functions for the emulated system code-side of the debugger. */ +#include "mednafen.h" + +#ifdef WANT_DEBUGGER + +static std::vector AddressSpaces; +static std::vector RegGroups; + +// Currently only called on emulator startup, not game load... +void MDFNDBG_Init(void) +{ + AddressSpaces.clear(); + RegGroups.clear(); +} + +void MDFNDBG_PostGameLoad(void) +{ + if(MDFNGameInfo->Debugger) + { + MDFNGameInfo->Debugger->AddressSpaces = &AddressSpaces; + MDFNGameInfo->Debugger->RegGroups = &RegGroups; + } +} + +// Called on game close. +void MDFNDBG_Kill(void) +{ + for(unsigned int x = 0; x < AddressSpaces.size(); x++) + { + if(AddressSpaces[x].name) + free(AddressSpaces[x].name); + if(AddressSpaces[x].long_name) + free(AddressSpaces[x].long_name); + } + AddressSpaces.clear(); + RegGroups.clear(); +} + +int ASpace_Add(void (*gasb)(const char *name, uint32 Address, uint32 Length, uint8 *Buffer), + void (*pasb)(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer), const char *name, const char *long_name, + uint32 TotalBits, uint32 NP2Size, bool IsSegmented, uint32 SegmentBits, uint32 OffsetBits, uint32 BitsOverlapped) +{ + AddressSpaceType newt; + + memset(&newt, 0, sizeof(newt)); + + newt.GetAddressSpaceBytes = gasb; + newt.PutAddressSpaceBytes = pasb; + + newt.name = strdup(name); + newt.long_name = strdup(long_name); + newt.TotalBits = TotalBits; + newt.NP2Size = NP2Size; + newt.IsSegmented = IsSegmented; + newt.SegmentBits = SegmentBits; + newt.OffsetBits = OffsetBits; + newt.BitsOverlapped = BitsOverlapped; + AddressSpaces.push_back(newt); + + return(AddressSpaces.size() - 1); +} + +int ASpace_Add(const AddressSpaceType &newt) +{ + AddressSpaces.push_back(newt); + return(AddressSpaces.size() - 1); +} + +// Returns number of new bytes allocated. +static INLINE uint64 IncUsageMap(uint64 *****UsageMap, const uint32 address) +{ + uint64 ret = 0; + + if(!(*UsageMap)) + { + (*UsageMap) = (uint64 ****)MDFN_calloc(sizeof(uint64 ***), 256, "Usage map"); + ret += sizeof(uint64 ***) * 256; + } + + if(!(*UsageMap)[address >> 24]) + { + (*UsageMap)[address >> 24] = (uint64 ***)MDFN_calloc(sizeof(uint64 **), 256, "Usage map"); + ret += sizeof(uint64 **) * 256; + } + + if(!(*UsageMap)[address >> 24][(address >> 16) & 0xFF]) + { + (*UsageMap)[address >> 24][(address >> 16) & 0xFF] = (uint64 **)MDFN_calloc(sizeof(uint64 *), 256, "Usage map"); + ret += sizeof(uint64 *) * 256; + } + + if(!(*UsageMap)[address >> 24][(address >> 16) & 0xFF][(address >> 8) & 0xFF]) + { + (*UsageMap)[address >> 24][(address >> 16) & 0xFF][(address >> 8) & 0xFF] = (uint64 *)MDFN_calloc(sizeof(uint64), 256, "Usage map"); + ret += sizeof(uint64) * 256; + } + + (*UsageMap)[address >> 24][(address >> 16) & 0xFF][(address >> 8) & 0xFF][address & 0xFF]++; + + return(ret); +} + +bool ASpace_Read(const int id, const uint32 address, const unsigned int size, const bool pre_bpoint) +{ + AddressSpaceType *as; + + assert(id > 0 && (const unsigned int)id < AddressSpaces.size()); + + as = &AddressSpaces[id]; + + if(pre_bpoint) + return(FALSE); + else + { + as->UsageReadMemUsed += IncUsageMap(&as->UsageMapRead, address); + } + return(FALSE); +} + +bool ASpace_Write(const int id, const uint32 address, const uint32 value, const unsigned int size, const bool pre_bpoint) +{ + AddressSpaceType *as; + + assert(id > 0 && (const unsigned int)id < AddressSpaces.size()); + + as = &AddressSpaces[id]; + + if(pre_bpoint) + return(FALSE); + else + { + as->UsageWriteMemUsed += IncUsageMap(&as->UsageMapWrite, address); + return(FALSE); + } +} + +static INLINE void ClearUsageMap(uint64 *****UsageMap) +{ + // Maybe we should use an alloced memory vector to speed this up... + if((*UsageMap)) + { + for(int a = 0; a < 256; a++) + { + if((*UsageMap)[a]) + { + for(int b = 0; b < 256; b++) + { + if((*UsageMap)[a][b]) + { + for(int c = 0; c < 256; c++) + { + if((*UsageMap)[a][b][c]) + { + MDFN_free((*UsageMap)[a][b][c]); + (*UsageMap)[a][b][c] = NULL; + } + } + MDFN_free((*UsageMap)[a][b]); + (*UsageMap)[a][b] = NULL; + } + } + + MDFN_free((*UsageMap)[a]); + (*UsageMap)[a] = NULL; + } + } + + MDFN_free((*UsageMap)); + (*UsageMap) = NULL; + } +} + +void ASpace_ClearReadMap(const int id) +{ + AddressSpaceType *as; + + assert(id > 0 && (const unsigned int)id < AddressSpaces.size()); + + as = &AddressSpaces[id]; + + ClearUsageMap(&as->UsageMapRead); + + as->UsageReadMemUsed = 0; +} + +void ASpace_ClearWriteMap(const int id) +{ + AddressSpaceType *as; + + assert(id > 0 && (const unsigned int)id < AddressSpaces.size()); + + as = &AddressSpaces[id]; + + ClearUsageMap(&as->UsageMapWrite); + + as->UsageWriteMemUsed = 0; +} + +void MDFNDBG_ResetRegGroupsInfo(void) +{ + RegGroups.clear(); +} + +void MDFNDBG_AddRegGroup(RegGroupType *groupie) +{ + RegGroups.push_back(groupie); +} + +void ASpace_Reset(void) +{ + AddressSpaces.clear(); +} + + +RegType::~RegType() +{ + +} + +#endif diff --git a/libmednahawk/src/debug.h b/libmednahawk/src/debug.h new file mode 100644 index 0000000000..6ab5c4d3c3 --- /dev/null +++ b/libmednahawk/src/debug.h @@ -0,0 +1,221 @@ +#ifndef __MDFN_DEBUG_H +#define __MDFN_DEBUG_H + +#ifdef WANT_DEBUGGER + +enum +{ + BPOINT_READ = 1, + BPOINT_WRITE, + BPOINT_PC, + BPOINT_IO_READ, + BPOINT_IO_WRITE, + BPOINT_AUX_READ, + BPOINT_AUX_WRITE, + BPOINT_OP // Opcode +}; + +struct RegType +{ + ~RegType(); + const unsigned int id; + std::string name; + std::string long_name; + unsigned int bsize; // Byte size, 1, 2, 4 +}; + +typedef struct +{ + const char *name; + RegType *Regs; + + // GetRegister() should modify the string at special if special is non-NULL to provide + // more details about the register. + uint32 (*GetRegister)(const unsigned int id, char *special, const uint32 special_len); + void (*SetRegister)(const unsigned int id, uint32 value); + + // Used if SetRegister and GetRegister are both NULL. Deprecated. + uint32 (*OLDGetRegister)(const std::string &name, std::string *special); + void (*OLDSetRegister)(const std::string &name, uint32 value); +} RegGroupType; + +typedef enum +{ + ASPACE_WFMT_UNSIGNED = 0, // Unsigned, wooo. + ASPACE_WFMT_SIGNED, // Signed two's complement + ASPACE_WMFT_SIGNED_MAG_0NEG, // Signed/magnitude. 0 in the sign bit means negative. + ASPACE_WFMT_SIGNED_MAG_1NEG, // Sign/magnitude style. 1 in the sign bit means negative. + ASPACE_WFMT_SIGNED_ONES, // Signed one's complement +} ASpace_WFMT; + +// Visible to CPU, physical, RAM, ROM, ADPCM RAM, etc etc. +typedef struct +{ + // The short name, all lowercase, 0-9 a-z _ + char *name; + + // The longer, descriptive name for this address space. + char *long_name; + + // The number of address bits for this address space. + uint32 TotalBits; + + // (Segmentation bits TODO) + bool IsSegmented; + uint32 SegmentBits; + uint32 OffsetBits; + uint32 BitsOverlapped; // For future use, maybe. + + // Non-power-of-2 size. Normally 0, unless the size of the address space isn't a power of 2! + uint32 NP2Size; + + bool IsWave; + ASpace_WFMT WaveFormat; // TODO + uint32 WaveBits; // Total number of bits(including sign) per waveform sample. Only <= 8 for now... + + void (*GetAddressSpaceBytes)(const char *name, uint32 Address, uint32 Length, uint8 *Buffer); + void (*PutAddressSpaceBytes)(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer); + + void *private_data; + + // Internal use... + void (*EnableUsageMap)(bool); + + uint64 ****UsageMapRead; // [a.24:31][a.16:23][a.8:15][a.0:7], pointer tables allocated as needed. + uint64 ****UsageMapWrite; // (same) + + uint64 UsageReadMemUsed; // Keep track of how much memory we've allocated for UsageMap, so we don't go kaka-kookoo and use up an // excessive amount of RAM. + uint64 UsageWriteMemUsed; +} AddressSpaceType; + +// TODO: newer branch trace interface not implemented yet. +struct BranchTraceResult +{ +#if 0 + // Segment stuff is only to be hackishly implemented, for WonderSwan debugger support. + uint32 from; + uint32 to; + uint16 from_segment; + uint16 to_segment; + + bool from_valid; + bool segment_valid; +#endif + char from[32]; + char to[32]; + char code[16]; + + uint32 count; +}; + +#if 0 +struct DGD_Source +{ + int id; + const char *name; + + unsigned width; + unsigned height; + + unsigned pb_bpp; // Palette bank bits-per-pixel +}; +#endif + +typedef struct +{ + const char *DefaultCharEnc; // Default(or most common) internal character encoding for text for the system. + + uint32 MaxInstructionSize; // Maximum instruction size in bytes + uint32 InstructionAlignment; // Required instruction alignment, in bytes(frequently 1 on CISC, and other powers of 2 on RISC, but not always ;)). + uint32 LogAddrBits; // Logical address bits + uint32 PhysAddrBits; // Physical address bits + + uint32 DefaultWatchAddr; + + uint32 ZPAddr; // Set to ~0U to disable + + // If logical is true, then do the peek/poke on logical address A, else do the + // peek/poke on physical address A. For now, this distinction only exists + // on CPUs with built-in bank-switching, like the HuC6280. + + // If hl is true, do not cause any change in the underlying hardware state. + uint32 (*MemPeek)(uint32 A, unsigned int bsize, bool hl, bool logical); + + // Disassemble one instruction at logical address A, and increment A to point to the next instruction. + // TextBuf should point to at least 256 bytes of space! + void (*Disassemble)(uint32 &A, uint32 SpecialA, char *TextBuf); + + // Toggle syntax mode(example: for WonderSwan x86 decoding, Intel or AT&T) + void (*ToggleSyntax)(void); + + // Force an IRQ at the desired level(IRQ0, IRQ1, or whatever). Pass -1 to cause an NMI, if available. + // Note that this should cause an interrupt regardless of any flag settings or interrupt status. + void (*IRQ)(int level); + + // Get the vector for the specified IRQ level. -1 is NMI(if available), and -2 is RESET. + uint32 (*GetVector)(int level); + + void (*FlushBreakPoints)(int type); + + void (*AddBreakPoint)(int type, unsigned int A1, unsigned int A2, bool logical); + + void (*SetCPUCallback)(void (*callb)(uint32 PC)); + + void (*SetBPCallback)(void (*callb)(uint32 PC)); + + std::vector (*GetBranchTrace)(void); + + // If surface is NULL, disable decoding. + // If line is -1, do decoding instantaneously, before this function returns. + // "which" is the same index as passed to MDFNI_ToggleLayer() + void (*SetGraphicsDecode)(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn); + + void (*SetLogFunc)(void (*logfunc)(const char *type, const char *text)); + + // Game emulation code shouldn't touch these directly. + std::vector *AddressSpaces; + std::vector *RegGroups; +} DebuggerInfoStruct; + +// ASpace_Add() functions return an ID that should be used with with MDFNDBG_ASpace_Read() +// and ASpace_Write() functions. The ID is guaranteed to be 0 for the first address space, +// and increment by 1 for each address space added thereafter. +// An address space should only be added during Load() or LoadCD(). +int ASpace_Add(void (*gasb)(const char *name, uint32 Address, uint32 Length, uint8 *Buffer), + void (*pasb)(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer), const char *name, const char *long_name, + uint32 TotalBits, uint32 NP2Size = 0, bool IsSegmented = 0, uint32 SegmentBits = 0, uint32 OffsetBits = 0, uint32 BitsOverlapped = 0); + +int ASpace_Add(const AddressSpaceType &); + +// Removes all registered address spaces. +void ASpace_Reset(void); + +// pre_bpoint should be TRUE if these are "estimated" read/writes that will occur when the current instruction +// is actually executed/committed. +// size is the size of the read/write(ex: 1 byte, 2 bytes, 4 bytes), defaulting to 1 byte. +// +// The return value is always FALSE if pre_bpoint is FALSE. If pre_bpoint is TRUE, the return value will be +// TRUE if the "estimated" read/write matches a registered breakpoint. +bool ASpace_Read(const int id, const uint32 address, const unsigned int size = 1, const bool pre_bpoint = FALSE); +bool ASpace_Write(const int id, const uint32 address, const uint32 value, const unsigned int size = 1, const bool pre_bpoint = FALSE); + +// Clears read/write usage maps. +void ASpace_ClearReadMap(const int id); +void ASpace_ClearWriteMap(const int id); + + +void ASpace_AddBreakPoint(const int id, const int type, const uint32 A1, const uint32 A2, const bool logical); +void ASpace_FlushBreakPoints(const int id); + + +void MDFNDBG_ResetRegGroupsInfo(void); +void MDFNDBG_AddRegGroup(RegGroupType *groupie); + + +void MDFNDBG_Init(void); +void MDFNDBG_PostGameLoad(void); +void MDFNDBG_Kill(void); + +#endif + +#endif diff --git a/libmednahawk/src/demo/Makefile.am b/libmednahawk/src/demo/Makefile.am new file mode 100644 index 0000000000..5556fa2f1d --- /dev/null +++ b/libmednahawk/src/demo/Makefile.am @@ -0,0 +1,7 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl + +noinst_LIBRARIES = libdemo.a + +libdemo_a_SOURCES = demo.cpp diff --git a/libmednahawk/src/demo/Makefile.in b/libmednahawk/src/demo/Makefile.in new file mode 100644 index 0000000000..363b9c7d4d --- /dev/null +++ b/libmednahawk/src/demo/Makefile.in @@ -0,0 +1,596 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/demo +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libdemo_a_AR = $(AR) $(ARFLAGS) +libdemo_a_LIBADD = +am_libdemo_a_OBJECTS = demo.$(OBJEXT) +libdemo_a_OBJECTS = $(am_libdemo_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libdemo_a_SOURCES) +DIST_SOURCES = $(libdemo_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl +noinst_LIBRARIES = libdemo.a +libdemo_a_SOURCES = demo.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/demo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/demo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libdemo.a: $(libdemo_a_OBJECTS) $(libdemo_a_DEPENDENCIES) + $(AM_V_at)-rm -f libdemo.a + $(AM_V_AR)$(libdemo_a_AR) libdemo.a $(libdemo_a_OBJECTS) $(libdemo_a_LIBADD) + $(AM_V_at)$(RANLIB) libdemo.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/demo/demo.cpp b/libmednahawk/src/demo/demo.cpp new file mode 100644 index 0000000000..47eb15a934 --- /dev/null +++ b/libmednahawk/src/demo/demo.cpp @@ -0,0 +1,41 @@ +#include "../mednafen.h" + +#if 0 + +MDFNGI EmulatedDEMO = +{ + "demo", + "Mednafen Demo/Example Module", + KnownExtensions, + MODPRIO_INTERNAL_LOW, + NULL, // Debugger + &SNESInputInfo, + Load, + NULL, + NULL, + NULL, + CloseGame, + SetLayerEnableMask, + "Background\0Sprites\0", + NULL, + NULL, + NULL, //InstallReadPatch, + NULL, //RemoveReadPatches, + NULL, //MemRead, + false, + NULL, //StateAction, + Emulate, + SetInput, + SetSoundRate, + DoSimpleCommand, + SNESSettings, + 0, + 0, + FALSE, // Multires + 320, // Nominal width + 240, // Nominal height + 512, // Framebuffer width + 256, // Framebuffer height +}; + +#endif diff --git a/libmednahawk/src/desa68/Makefile.am b/libmednahawk/src/desa68/Makefile.am new file mode 100644 index 0000000000..c57e3f3158 --- /dev/null +++ b/libmednahawk/src/desa68/Makefile.am @@ -0,0 +1,13 @@ +#lib_LTLIBRARIES = libdesa68.la +#libdesa68_la_SOURCES = desa68.c desa68.h +#libdesa68_la_LDFLAGS = -version-info 2:0:0 -release @VERSION@ +#libdesa68_la_CFLAGS = -Wno-multichar $(AM_CFLAGS) +##EXTRA_DIST = desa68.vcproj + +AUTOMAKE_OPTIONS = subdir-objects +AM_CFLAGS = @AM_CFLAGS@ -Wno-multichar +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl + +noinst_LIBRARIES = libdesa68.a +libdesa68_a_SOURCES = desa68.c diff --git a/libmednahawk/src/desa68/Makefile.in b/libmednahawk/src/desa68/Makefile.in new file mode 100644 index 0000000000..037ec9c0cf --- /dev/null +++ b/libmednahawk/src/desa68/Makefile.in @@ -0,0 +1,601 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#lib_LTLIBRARIES = libdesa68.la +#libdesa68_la_SOURCES = desa68.c desa68.h +#libdesa68_la_LDFLAGS = -version-info 2:0:0 -release @VERSION@ +#libdesa68_la_CFLAGS = -Wno-multichar $(AM_CFLAGS) + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/desa68 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libdesa68_a_AR = $(AR) $(ARFLAGS) +libdesa68_a_LIBADD = +am_libdesa68_a_OBJECTS = desa68.$(OBJEXT) +libdesa68_a_OBJECTS = $(am_libdesa68_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libdesa68_a_SOURCES) +DIST_SOURCES = $(libdesa68_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ -Wno-multichar +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl +noinst_LIBRARIES = libdesa68.a +libdesa68_a_SOURCES = desa68.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/desa68/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/desa68/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libdesa68.a: $(libdesa68_a_OBJECTS) $(libdesa68_a_DEPENDENCIES) + $(AM_V_at)-rm -f libdesa68.a + $(AM_V_AR)$(libdesa68_a_AR) libdesa68.a $(libdesa68_a_OBJECTS) $(libdesa68_a_LIBADD) + $(AM_V_at)$(RANLIB) libdesa68.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/desa68.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/desa68/desa68.c b/libmednahawk/src/desa68/desa68.c new file mode 100644 index 0000000000..91d9e49e82 --- /dev/null +++ b/libmednahawk/src/desa68/desa68.c @@ -0,0 +1,1572 @@ +/* + * sc68 - 68000 disassembler + * Copyright (C) 2001 Benjamin Gerard + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/* $Id: desa68.c,v 2.3 2003/09/25 01:00:05 benjihan Exp $ */ + +/* Modified for usage in Mednafen */ + +/* #include */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef _TEST_DESA68_ +# include +# include +# include +#endif + +#include "desa68/desa68.h" + +/********************************************************** + * Defines my types : * + * Should be OK without configure, since 32-bit and 16-bit * + * are not really needed. * + **********************************************************/ +typedef signed char s8; +typedef unsigned char u8; +typedef int s32; +typedef unsigned int u32; +typedef unsigned short u16; +typedef short s16; + +#define REG0(W) (((W))&7) +#define REG9(W) (((W)>>9)&7) +#define OPSZ(W) (((W)>>6)&3) +#define LINE(W) (((W)>>12)&15) +#define MODE3(W) (((W)>>3)&7) +#define MODE6(W) (((W)>>6)&7) + +/***************************** + * Disassembler string tables * + *****************************/ + +enum adressingword + { + MODE_DN=0, + MODE_AN, + MODE_iAN, + MODE_ANp, + MODE_pAN, + MODE_dAN, + MODE_dANXI, + MODE_ABSW, + MODE_ABSL, + MODE_dPC, + MODE_dPCXI, + MODE_IMM + }; + +static char Thex[16] = { + '0','1','2','3','4','5','6','7', + '8','9','A','B','C','D','E','F' }; + +/* Condition Code String Tables */ +static u16 bcc_ascii[] = + { + 'RA','SR','HI','LS', + 'CC','CS','NE','EQ', + 'VC','VS','PL','MI', + 'GE','LT','GT','LE' + }; + +static u16 scc_ascii[] = + { + 'T','F','HI','LS', + 'CC','CS','NE','EQ', + 'VC','VS','PL','MI', + 'GE','LT','GT','LE' + }; + +static u16 dbcc_ascii[] = + { + 'RA','F','HI','LS', + 'CC','CS','NE','EQ', + 'VC','VS','PL','MI', + 'GE','LT','GT','LE' + }; + +DESA68parm_t d; + +/* instruction operand size */ +/*static char sz_str[4][4] = { ".B", ".W", ".L", ".?" };*/ + +/******************* + * String functions * + *******************/ + +/* Add a char to disassembly string */ +#if 0 +static void desa_char(const unsigned char c) +{ + *d.s++ = c; +} +#else +# define desa_char(C) (*d.s++ = (C)) +#endif + +/* Add a string to disassembly string */ +static void desa_str(char *str) +{ + char c; + while(c=*str++, c) + desa_char(c); +} + +/* Add a string to disassembly string */ +static void desa_ascii(unsigned int n) +{ + int shift; + for(shift=(sizeof(int)-1)*8; shift>=0; shift-=8) + { + u8 c; + c = (u8)(n>>shift); + if(c) desa_char(c); + } +} + +#if 0 +/* Count signifiant hexa digit */ +static int nuhexadigit(unsigned int n) +{ + int ct; + for(ct=1, n>>=4; n; ct++, n>>=4); + return ct; +} + +/* Count significatif hexa digit */ +static int nhexadigit(int n) +{ + return nuhexadigit(n<0?-n:n); +} +#endif + +/* Add a N-ndigit digit unsigned hexa number with header char to disassembly string */ +static void desa_uhexacat(unsigned int n, int ndigit, int header_char) +{ + int shf; + desa_char(header_char); + for(shf=(ndigit-1)*4; shf>=0; shf-=4) { + desa_char(Thex[(n>>shf)&15] ); + } +} + +#if 0 +/* Add a N-ndigit digit signed hexa number with heading '$' to disassembly string */ +void desa_hexacat(int n, int ndigit) +{ + if(n<0) + { + desa_char('-' ); + n = -n; + } + desa_uhexacat(n, ndigit, '$'); +} +#endif + +/* Add a signifiant digit only unsigned hexa number + * with heading '$' to disassembly string + */ +static void desa_usignifiant(unsigned int n) +{ + int shf; + desa_char('$'); + for(shf=(sizeof(int)*2-1)*4; shf>=0 && !(n>>shf); shf-=4); + if(shf<0) shf=0; + for(; shf>=0; shf-=4) + desa_char(Thex[(n>>shf)&15] ); +} + +/* idem desa_usignifiant, except it is signed */ +static void desa_signifiant(int n) +{ + if(n<0) + { + desa_char('-'); + n = -n; + } + desa_usignifiant(n); +} + +static int desa_isascii(u8 c) +{ + return c=='_' || c==' ' + || (c>='a' && c<='z') + || (c>='A' && c<='Z') + || (c>='0' && c<='9'); +} + +/******************************* + * General disassembly function * + *******************************/ + +/* Get addressing mode number at bit #6 [0..14], only [0..11] are valid */ +/*static u32 getmode_6(u32 w) + { + u32 mode; + mode = ((w>>6)&7); + if(mode==7) + mode += (w>>9)&7; + return mode; + }*/ + +/* Read next word , increment pc */ +static int read_pc(void) +{ + unsigned int pc = d.pc; + +/* + d.w = (s8)d.mem[pc++&d.memmsk]<<8; + d.w += d.mem[pc++&d.memmsk]; +*/ + + d.w = d.mem_callb(pc & d.memmsk, d.private_data); + pc += 2; + + d.pc = pc; + return d.w; +} + +static s32 immB(void) +{ + return (s32)(s8)read_pc(); +} + +#if 0 +static s32 immW(void) +{ + read_pc(); + return d.w; +} +#else +# define immW read_pc +#endif + +static s32 immL(void) +{ + return (read_pc()<<16) | (read_pc()&0xffff ); +} + +static s32 adrL(void) +{ + return immL()/* & d.memmsk*/ ; /* Problem with hardware reg ! */ +} + +#if 0 +static s32 adrW(void) +{ + read_pc(); + return d.w; +} +#else +# define adrW immW +#endif + +static s32 relPC(void) +{ + read_pc(); + return (d.pc + d.w - 2) & d.memmsk; +} + +/* return [AD][0-7][d][WL] : SZ='W'/'L' XI = hexa value for reg ($D0) */ +static s32 indAnXi() +{ + s32 v; + read_pc(); + v = (d.w&0x8000)? ('A'<<24) : ('D'<<24); + v |= ('0'+((d.w>>12)&7)) << 16; + v |= (u8)d.w<<8; + v |= ((d.w&(1<<11))? 'L' : 'W'); + return v; +} + +static void desa_dcw(void) +{ + desa_str("DC.W"); + desa_char (' '); + desa_uhexacat((u16)d.w, 4, '$'); + d.status = 0; +} + +static void update_ea(unsigned int v) +{ + v &= 0xFFFFFF; + if (d.ea_src == -1) { + d.ea_src = v; + } else if (d.ea_dst == -1) { + d.ea_dst = v; + } +} + +static void desa_label(unsigned int v) +{ + desa_uhexacat(v, 6, 'L'); +} + +static void desa_immL(int v) +{ + unsigned int v2 = v; + desa_char('#'); + if ((d.flags&DESA68_SYMBOL_FLAG) && v2>=d.immsym_min && v2>8) && desa_isascii(v2>>16) && desa_isascii(v2>>24)) { + desa_char ('\''); + desa_ascii((u32)v2); + desa_char ('\''); + } else { + desa_signifiant(v); + } + } +} + +static void desa_absL(int v) +{ + unsigned int v2 = v & 0xFFFFFF; + + if ((d.flags&DESA68_SYMBOL_FLAG) && v2>=d.immsym_min && v2>8); + desa_signifiant((s8)(v>>8)); + desa_ascii('(A0,'+(reg<<8)); + v = (v&0xFFFF00FF)+('.'<<8); + desa_ascii(v); + desa_char(')'); + break; + case MODE_ABSW: + d.ea = v = adrW(); + desa_usignifiant(v); + desa_ascii('.W'); + break; + case MODE_ABSL: + d.ea = v = adrL(); + update_ea(v); + desa_absL(v); + break; + case MODE_dPC: + d.ea = v = relPC(); + update_ea(v); + if (d.flags & DESA68_SYMBOL_FLAG) { + desa_label(v); + } else { + desa_usignifiant(v); + } + desa_str("(PC)"); + break; + case MODE_dPCXI: + v = indAnXi(); + d.ea = d.pc-2+(s8)(v>>8); + update_ea(d.ea); + if (d.flags & DESA68_SYMBOL_FLAG) { + desa_label(d.ea); + } else { + desa_usignifiant(d.ea); + } + desa_str("(PC,"); + v = (v&0xFFFF00FF)+('.'<<8); + desa_ascii(v); + desa_char(')'); + break; + case MODE_IMM: + switch(sz ) + { + case 1: + case 'B': + v = (s8)immB(); + desa_immL(v); + break; + case 2: + case 'W': + v = (s16)immW(); + desa_immL(v); + break; + case 4: + case 'L': + v = (u32)immL(); + desa_immL(v); + return; + default: + desa_str("#"); + /*BREAKPOINT68;*/ + break; + } + break; + default: + desa_char('?'); + desa_usignifiant(mode); + desa_char('?'); + break; + } +} + +/* Get move operand + * bit : 0/6 -> src/dest + * w : current opcode + */ +static void get_ea_move(int bit, s32 w, u32 easz) +{ + u32 ea = (w>>bit)&63; + + if(bit) + get_ea_2(ea&7,ea>>3, easz); + else if(bit==0) + get_ea_2(ea>>3,ea&7, easz); +} + +static void desa_reg(int reg) +{ + desa_ascii(((reg&8)? 'A0':'D0') + (reg&7)); +} + +/* Used with ABCD, SBCD, ADDX, SUBX */ +static void desa_ry_rx(int inst, int size) +{ + desa_ascii(inst); + desa_ascii(size); + desa_char(' '); + if(d.mode3&1) /* -(Ay),-(Ax) */ + { + desa_ascii('-(A0'+d.reg0); + desa_ascii('),-('); + desa_ascii('A0)' + (d.reg9<<8)); + } + else /* Dy,Dx */ + { + desa_reg(d.reg0); + desa_char(','); + desa_reg(d.reg9); + } +} + +static void desa_dn_ae(int name) +{ + desa_ascii(name); + desa_ascii(d.szchar); + desa_char (' '); + /* dn, */ + if(d.w&0400) + { + desa_ascii('D0,' + (d.reg9<<8)); + get_ea_2(d.mode3, d.reg0, d.szchar); + } + + /* ,dn */ + else + { + get_ea_2(d.mode3, d.reg0, d.szchar); + desa_ascii(',D0'+d.reg9); + } +} + +/************** + * + * LINE 0 : + * -Immediat operations + * -SR & CCR operations + * -Bit operations + * -Movep + * + ***************/ + +static int check_desa_bitop(void) +{ + static u32 fn[] = { 'BTST', 'BCHG', 'BCLR', 'BSET'}; + int modemsk = 00775; + unsigned int inst; + + if(!(modemsk&(1<*/ + if(!(d.w&0400)) + { + if((d.w&0xF00)!=0x800) + return 0; + desa_ascii(inst); + desa_ascii(' #'); + read_pc(); + desa_usignifiant((u8)d.w); + } + else + /* B... dn,*/ + { + desa_ascii(inst); + desa_ascii(' D0'+d.reg9); + } + desa_char(','); + get_ea_2(d.mode3, d.reg0, 'B'); + + return 1; +} + +static int check_desa_IMM_SR(void) +{ + u32 modemsk = 1 + (1<<2) + (1<<10); + int mode = (d.w>>8)&15, inst='ORI'; + + if((d.w&0677)!=0074 || !(modemsk&(1<> ((w&(3<<12))>>(12-3))); + desa_ascii('MOVE'); + desa_ascii(((d.adrmode6==MODE_AN)? ('A'<<24) : 0) + ('.'<<16) + ' ' + (movsz<<8) ); + get_ea_move(0,w,movsz); + desa_char(','); + get_ea_move(6,w,movsz); +} + +/* Check and disassemble a valid move + * return TRUE if valid move + */ +static int check_desa_move() +{ + u32 srcmsk = 0xFFF; + u32 destmsk = 0x1FF; + /* Remove An source & destination addressing mode for byte access */ + if(d.line==0x1) + { + srcmsk &= ~(1< reg */ + if(w&02000) + { + get_ea_2(mode3, reg0, 0); + desa_char(','); + get_movemreg(regmsk,0); + } + /* -> mem */ + else + { + get_movemreg(regmsk, (mode3==MODE_pAN) ? 15 : 0); + desa_char(','); + get_ea_2(mode3, reg0, 0); + } + return 1; +} + +static int check_desa_jmp() +{ + int modemsk = 03744; + if((d.w&07600) != 07200) { + return 0; + } + /* JMP / JSR */ + if(modemsk & (1<>8)&15]); + desa_ascii(' D0,' + (d.reg0<<8)); + get_ea_2(MODE_ABSW, MODE_dPC-MODE_ABSW, 0); + /* $$$ hack : remove (PC) at the end */ + d.s[-4] = 0; + d.branch = d.ea; + d.status = DESA68_INST | DESA68_BRA | DESA68_BSR; +} + +static void desa_Scc() +{ + desa_ascii(('S'<<24) + ' ' + scc_ascii[(d.w>>8)&15]*256); + get_ea_2(d.mode3, d.reg0, d.szchar); +} + +static void desa_line5(void) +{ + if((d.w&0370)==0310) { + desa_Dcc(); + } else if(d.opsz==3) { + desa_Scc(); + } else { + desa_addq_subq(); + } +} + +/************** + * + * LINE 6 : + * -Bcc + * + * Format 0110 COND OFFSET08 [OFFSET16 if OFFSET08==0] + * !!! COND=0001(false) => BSR + ***************/ + +static void desa_line6(void) +{ + s32 a; + int cond = (d.w>>8) & 0xF; + desa_ascii(('B'<<16) + bcc_ascii[cond]); + /* Bcc.S */ + if(d.w&255) + { + desa_ascii('.S'); + a = (s32)(s8)d.w; + a += (s32)d.pc; + } + /* Bcc.W */ + else a = relPC(); + desa_char(' '); + + desa_absL(a&d.memmsk); + + d.status = DESA68_INST | DESA68_BRA | (-(cond!=0) & DESA68_BSR ); + d.branch = a; +} + +/************** + * + * LINE 7 : + * -MOVEQ + * + * Format : 01111 REG 0 XXXXXXXX + * + ***************/ +static void desa_line7(void) +{ + if(d.w&0400) { + desa_dcw(); + } else { + desa_str("MOVEQ #"); + desa_signifiant((int)(s8)d.w); + desa_ascii(',D0'+d.reg9); + } +} + + +/************** + * + * LINE B : + * -CMP + * -CMPM + * -EOR + * + ***************/ + +static int check_desa_cmpa() +{ + int modemsk = 07777; + if(d.opsz!=3 || !(modemsk&(1<>8)); + desa_char (','); + desa_reg(d.reg0 + (reg&8)); + return 1; +} + +static int check_desa_mul_div(void) +{ + int modemsk = 0xFFD; + if((d.w&0300)!=0300 || !(modemsk&(1<>3)&3; + desa_ascii (shf_ascii[type]); + desa_char ((d.w&0400) ? 'L' :'R'); + if(type==2) desa_char('X'); + desa_ascii(d.szchar); + /* dn,dn */ + if(d.w&(1<<5)) + desa_ascii(' D0'+d.reg9); + /* #x,dn */ + else + desa_ascii(' #1'+((d.reg9-1)&7)); + desa_ascii(',D0'+d.reg0); + } +} + +/************** + * + * LINE A : + * -LineA + * LINE F : + * -LineF + * + * Format : LINE XXXX XXXX XXXX + * + ***************/ + +static void desa_linAF(void) +{ + desa_ascii('LINE'); + desa_ascii('A '+((d.line-0xA)<<8)); + desa_uhexacat(d.w, 3, '$'); +} + +static void (*desa_line[16])(void) = +{ + desa_line0, desa_li123, desa_li123, desa_li123, + desa_line4, desa_line5, desa_line6, desa_line7, + desa_lin8C, desa_lin9D, desa_linAF, desa_lineB, + desa_lin8C, desa_lin9D, desa_lineE, desa_linAF, +}; + +void desa68(DESA68parm_t *dparm) +{ + char tmp[64]; + dparm->ea = dparm->branch = d.memmsk+1; + dparm->status = DESA68_INST; /* Assume valid instruction */ + d = *dparm; + d.s = d.str; + if (!d.s) { + d.s = tmp; + d.strmax = sizeof(tmp); + } + d.s[0]=0; + read_pc(); + + d.reg0 = REG0(d.w); + d.reg9 = REG9(d.w); + d.mode3 = MODE3(d.w); + d.mode6 = MODE6(d.w); + d.line = LINE(d.w); + d.opsz = OPSZ(d.w); + d.adrmode0 = d.mode3 + ((d.mode3==MODE_ABSW)?d.reg0 : 0); + d.adrmode6 = d.mode6 + ((d.mode6==MODE_ABSW)?d.reg9 : 0); + d.szchar = ('.'<<8)|(u8)('?LWB'>>(d.opsz*8)); + + d.ea_src = d.ea_dst = -1; + + (desa_line[d.line])(); + desa_char(0); + /* Restore current status to caller struct */ + dparm->pc = d.pc; + dparm->status = d.status; + dparm->branch = d.branch; + dparm->ea_src = d.ea_src; + dparm->ea_dst = d.ea_dst; +} + +#ifdef _TEST_DESA68_ + +static void message(void ) +{ + printf("Desa68 -- Built-in test\n(c) BeN / SasHipA - Dev\n"); +} + + +int main(int na, char **a) +{ + FILE *f; + u8 *b; + int l,i,nline=50; + static char s[256]; + + DESA68parm_t d; + + message(); + + if(na<2) + { + perror("No input file\n"); + return 1; + } + + if(f=fopen(a[1],"rb"), f==NULL) + { + perror("Can't open input file\n"); + return 2; + } + + fseek(f,0L,SEEK_END); + l = (int)ftell(f); + fseek(f,0L,SEEK_SET); + if(b=malloc(l), b==NULL) + { + fclose(f); + perror("Can't alloc memory\n"); + return 3; + } + + if(fread(b,l,1,f)!=1) + { + fclose(f); + free(b); + perror("Read error\n"); + return 4; + } + + if (na > 2) { + int n = atoi (a[2]); + if (n > 0) { + nline = n; + } + } + + fclose(f); + + + + { +#if 0 + char b[1024]; + /* + b[0] = 0x4e; + b[1] = 0xf6; + b[2] = 0x12; + b[3] = 0x32; + */ + /* + b[0] = 0x4a; + b[1] = 0x87; + b[2] = 0x12; + b[3] = 0x32; + */ + b[0] = 0x08; + b[1] = 0xb9; + b[2] = 0x00; + b[3] = 0x05; + b[4] = 0x00; + b[5] = 0xff; + b[6] = 0xfa; + b[7] = 0x11; +#endif + + d.mem = b; + d.memmsk = 0xFFFFFF; + d.pc = 0; + d.str = s; + + for(i=0; i + * @date 17/03/1999 + * @brief Motorola 68K disassembler + * + * $Id: desa68.h,v 2.3 2003/08/26 23:14:02 benjihan Exp $ + */ + +/* + * sc68 - 68000 disassembler + * Copyright (C) 2001-2003 Benjamin Gerard + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/* Modified for usage in Mednafen */ + +#ifndef _DESA68_H_ +#define _DESA68_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef EMU68DEBUG +#define EMU68DEBUG +#endif + +/** @defgroup desa68_devel desa68 library documentation. + * + * @author Benjamin Gerard + * + * desa68 library is a 68000 disassembler with enhanced features that help to + * trace branch instructions. + * + * Optionnally the disassembler may disassemble with symbol instead of + * absolute address or long immediat. A supplemental control is available + * to choose the range of address that must be disassembled as symbol. + * + * A good sample is may be found in the sourcer68 directory. This library + * is also used by debug68 programs. + * + * @{ + */ + +/** @name Disassembly option flags. + * @anchor desa68_opt_flags + * + * Use bitwise OR operation with these values to set the + * the DESA68parm_t::flags in order to configure the disassembler. + * + * @{ + */ + +/** Disassemble with symbol. + * + * If the DESA68_SYMBOL_FLAG is set in the DESA68parm_t::flags + * and the value of absolute long addressing mode or an immediat long + * is in greater or equal to DESA68parm_t::immsym_min and less than + * DESA68parm_t::immsym_max + * then the disassembler replaces the value by a named symbol. + * The named symbol constist on the value transformed to an 6 hexadecimal + * digit number with a prefixed 'L'. + */ +#define DESA68_SYMBOL_FLAG (1<<0) + +/**@}*/ + +/** @name Instruction type flags. + * @anchor desa68_inst_flags + * + * These flags are setted in the DESA68parm_t::status field by desa68() + * function. It allow to determine the type of the dissassembled instruction. + * + * @{ + */ + +/** Valid instruction. */ +#define DESA68_INST (1<<0) + +/** Branch always instruction (bra/jmp/dbcc). */ +#define DESA68_BRA (1<<1) + +/** Subroutine (bsr/jsr)/ Conditionnal branch instruction (bcc/dbcc). */ +#define DESA68_BSR (1<<2) + +/** Return from subroutine/Interruption instruction (rts/rte). */ +#define DESA68_RTS (1<<3) + +/** Software interrupt instruction (trap/chk). */ +#define DESA68_INT (1<<4) + +/** nop instruction. */ +#define DESA68_NOP (1<<5) + +/**@}*/ + + +/** 68K disassemble pass parameters. + * + * The DESA68parm_t data structure contains the information necessary to + * disassemble 68K instructions. + * + * There are 3 categories of fields in this structure. + * - Input parameters; Must be set before calling the desa68() function. + * - Output parameters; Information on disassembled instruction + * filled by desa68() function. + * - Miscellaneous internal fields. + * + * @note The DESA68parm_t::pc field is both input and output since it is use + * to set the address of the instruction to decode and returns with + * the value of the next one. + */ +typedef struct +{ + + /** @name Input parameters. + * + * These parameters must be set before calling the desa68() functions. + * + * @{ + */ + + uint16_t (*mem_callb)(uint32_t address, void *private_data); + void *private_data; + + /*unsigned char *mem; */ /**< Base of 68K memory. */ + + unsigned int memmsk; /**< Size of memory - 1 (mask). */ + /** Address (Offset in mem) of instruction to disassemble; Returns + * with the address of the next instruction. + */ + unsigned int pc; + int flags; /**< @ref desa68_opt_flags "Disassemble options" */ + char *str; /**< Destination string. */ + int strmax; /**< Destination string buffer size. + @warning Unused */ + /** Minimum value to interpret long immediat or absolute long as symbol. + * @see DESA68_SYMBOL_FLAG for more details + * @see immsym_max + */ + unsigned int immsym_min; + /** Maximum value to interpret long immediat or absolute long as symbol. + * @see DESA68_SYMBOL_FLAG for more details + * @see immsym_min + */ + unsigned int immsym_max; + + /**@}*/ + + + /** @name Output parameters. + * + * These parameters are setted by the desa68() functions. + * @{ + */ + + /** Effective address of source operand (-1:not a memory operand). */ + unsigned int ea_src; + /** Effective address of destiantion operand (-1:not a memory operand). */ + unsigned int ea_dst; /**< Effective address of destination operand */ + /** @ref desa68_inst_flags "disassembly instruction flags" */ + unsigned int status; + /** Branch or interrupt vector address. + * + * If the dissassembled instruction was a branch a call or a sotfware + * interrupt the DESA68parm_t::branch is set to the jump address or + * the interrupt vector involved. + * + * @see status for more information on instruction type. + */ + unsigned int branch; + /** Last decoded word (16 bit sign extended). */ + int w; + /** Pointer to current destination char. */ + char *s; + + /**@}*/ + + + /** @name Miscellaneous internal variables. + * @internal + * @{ + */ + + /** Intermediat opcode decoding. */ + int reg0; + int reg9; + int mode3; + int mode6; + int opsz; + int line; + int adrmode0; + int adrmode6; + int szchar; + unsigned int ea; + + /**@}*/ + +} DESA68parm_t; + + +/** Disassemble a single 68000 instruction. + * + * param d Pointer to disassemble pass parameter structure. + */ +void desa68(DESA68parm_t *d); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef _DESA68_H_ */ diff --git a/libmednahawk/src/dis6280.cpp b/libmednahawk/src/dis6280.cpp new file mode 100644 index 0000000000..95258dff8b --- /dev/null +++ b/libmednahawk/src/dis6280.cpp @@ -0,0 +1,470 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "dis6280.h" + +Dis6280::Dis6280(void) +{ + +} + +Dis6280::~Dis6280() +{ + +} + +uint8 Dis6280::Read(uint16 A) +{ + return(0); +} + +uint8 Dis6280::GetX(void) +{ + return(0); +} + +uint8 Dis6280::GetY(void) +{ + return(0); +} + + +static const char *fstrings[20]= +{ + "#$%02X", // immediate + "$%04X", // RELATIVE(jump) + "$%02X", // Z + "$%02X,X", // Z,x + "$%02X,Y", // Z,y + "$%04X", //ABS + "$%04X,X", // ABS,x + "$%04X,Y", // ABS,y + "($%02X)", // IND + "($%02X,X)", // INX + "($%02X),Y", // INY + "", // IMP + + // Here come the really fubar(as far as 6502-goes) modes: + "$%04X, $%04X, $%04X", // BMT + "#$%02X, $%02X", // IMM ZP + "#$%02X, $%02X, X", // IMM ZP, X + "#$%02X, $%04X", // IMM ABS + "#$%02X, $%04X, X", // IMM ABS, X + "$%02X, $%04X", // ZP REL + + + "($%04X)", // JMP indirect + "($%04X, X)", // JMP indirect X +}; + +static const int flengths[20]={1,1,1,1,1,2,2,2,1,1,1,0, 6, 2, 2, 3, 3, 2, 2, 2}; + +#define IMD(x) ((0<<16)|x) +#define REL(x) ((1<<16)|x) +#define ZP(x) ((2<<16)|x) +#define ZPX(x) ((3<<16)|x) +#define ZPY(x) ((4<<16)|x) +#define ABS(x) ((5<<16)|x) +#define ABX(x) ((6<<16)|x) +#define ABY(x) ((7<<16)|x) +#define IND(x) ((8<<16)|x) +#define INX(x) ((9<<16)|x) +#define INY(x) ((10<<16)|x) +#define IMP(x) ((11<<16)|x) +#define BMT(x) ((12<<16)|x) +#define IMDZP(x) ((13 << 16)|x) +#define IMDZPX(x) ((14 << 16)|x) +#define IMDABS(x) ((15 << 16)|x) +#define IMDABX(x) ((16 << 16)|x) +#define ZPREL(x) ((17 << 16)|x) +#define JMPIND(x) ((18 << 16)|x) +#define JMPINDX(x) ((19 << 16)|x) + +typedef struct { + const char *name; + int type; /* 1 for read, 2 for write, 3 for r then write. */ + int32 modes[11]; +} OPS; + +#define NUMOPS 117 +static OPS optable[NUMOPS]= +{ + {"TST",1,{IMDZP(0x83),IMDZPX(0xA3),IMDABS(0x93),IMDABX(0xb3),-1}}, + + {"BRK",0,{IMP(0x00),-1}}, + {"RTI",0,{IMP(0x40),-1}}, + {"RTS",0,{IMP(0x60),-1}}, + + {"PHA",2,{IMP(0x48),-1}}, + {"PHP",2,{IMP(0x08),-1}}, + {"PHX",2,{IMP(0xDA),-1}}, + {"PHY",2,{IMP(0x5A),-1}}, + + {"PLA",1,{IMP(0x68),-1}}, + {"PLP",1,{IMP(0x28),-1}}, + {"PLX",1,{IMP(0xFA),-1}}, + {"PLY",1,{IMP(0x7A),-1}}, + + {"JMP",0,{ABS(0x4C),JMPIND(0x6C),JMPINDX(0x7C),-1}}, + {"JSR",0,{ABS(0x20),-1}}, + + {"SAX",0,{IMP(0x22),-1}}, + {"SAY",0,{IMP(0x42),-1}}, + {"SXY",0,{IMP(0x02),-1}}, + + {"TAX",0,{IMP(0xAA),-1}}, + {"TXA",0,{IMP(0x8A),-1}}, + {"TAY",0,{IMP(0xA8),-1}}, + {"TYA",0,{IMP(0x98),-1}}, + {"TSX",0,{IMP(0xBA),-1}}, + {"TXS",0,{IMP(0x9A),-1}}, + + {"TMA",0,{IMD(0x43),-1}}, + {"TAM",0,{IMD(0x53),-1}}, + + {"ST0",0,{IMD(0x03),-1}}, + {"ST1",0,{IMD(0x13),-1}}, + {"ST2",0,{IMD(0x23),-1}}, + + {"TII",3,{BMT(0x73),-1}}, + {"TDD",3,{BMT(0xC3),-1}}, + {"TIN",3,{BMT(0xD3),-1}}, + {"TIA",3,{BMT(0xE3),-1}}, + {"TAI",3,{BMT(0xF3),-1}}, + + {"DEX",0,{IMP(0xCA),-1}}, + {"DEY",0,{IMP(0x88),-1}}, + {"INX",0,{IMP(0xE8),-1}}, + {"INY",0,{IMP(0xC8),-1}}, + {"CLC",0,{IMP(0x18),-1}}, + {"CLD",0,{IMP(0xD8),-1}}, + {"CLI",0,{IMP(0x58),-1}}, + {"CLV",0,{IMP(0xB8),-1}}, + {"SEC",0,{IMP(0x38),-1}}, + {"SED",0,{IMP(0xF8),-1}}, + {"SEI",0,{IMP(0x78),-1}}, + {"NOP",0,{IMP(0xEA),-1}}, + {"SET",0,{IMP(0xF4),-1}}, + + + {"ASL",1,{IMP(0x0a),ZP(0x06),ZPX(0x16),ABS(0x0E),ABX(0x1E),-1}}, + + {"DEC",3,{IMP(0x3A), ZP(0xc6),ZPX(0xd6),ABS(0xcE),ABX(0xdE),-1}}, + + {"INC",3,{IMP(0x1A),ZP(0xe6),ZPX(0xf6),ABS(0xeE),ABX(0xfE),-1}}, + + {"LSR",3,{IMP(0x4a),ZP(0x46),ZPX(0x56),ABS(0x4E),ABX(0x5E),-1}}, + + {"ROL",3,{IMP(0x2a),ZP(0x26),ZPX(0x36),ABS(0x2E),ABX(0x3E),-1}}, + + {"ROR",3,{IMP(0x6a),ZP(0x66),ZPX(0x76),ABS(0x6E),ABX(0x7E),-1}}, + + {"ADC",1,{IMD(0x69),ZP(0x65),ZPX(0x75),ABS(0x6D),ABX(0x7d),ABY(0x79), + IND(0x72), INX(0x61),INY(0x71),-1}}, + + {"AND",1,{IMD(0x29),ZP(0x25),ZPX(0x35),ABS(0x2D),ABX(0x3d),ABY(0x39), + IND(0x32), INX(0x21),INY(0x31),-1}}, + + {"BIT",1,{IMD(0x89),ZP(0x24),ZPX(0x34),ABS(0x2c),ABX(0x3C),-1}}, + + {"CMP",1,{IMD(0xc9),ZP(0xc5),ZPX(0xd5),ABS(0xcD),ABX(0xdd),ABY(0xd9), + IND(0xD2), INX(0xc1),INY(0xd1),-1}}, + + {"CPX",1,{IMD(0xe0),ZP(0xe4),ABS(0xec),-1}}, + + {"CPY",1,{IMD(0xc0),ZP(0xc4),ABS(0xcc),-1}}, + + {"EOR",1,{IMD(0x49),ZP(0x45),ZPX(0x55),ABS(0x4D),ABX(0x5d),ABY(0x59), + IND(0x52), INX(0x41),INY(0x51),-1}}, + + {"LDA",1,{IMD(0xa9),ZP(0xa5),ZPX(0xb5),ABS(0xaD),ABX(0xbd),ABY(0xb9), + IND(0xb2), INX(0xa1),INY(0xb1),-1}}, + + {"LDX",1,{IMD(0xa2),ZP(0xa6),ZPY(0xB6),ABS(0xae),ABY(0xbe),-1}}, + + {"LDY",1,{IMD(0xa0),ZP(0xa4),ZPX(0xB4),ABS(0xac),ABX(0xbc),-1}}, + + {"ORA",1,{IMD(0x09),ZP(0x05),ZPX(0x15),ABS(0x0D),ABX(0x1d),ABY(0x19), + IND(0x12),INX(0x01),INY(0x11),-1}}, + + {"SBC",1,{IMD(0xe9),ZP(0xe5),ZPX(0xf5),ABS(0xeD),ABX(0xfd),ABY(0xf9), + IND(0xf2),INX(0xe1),INY(0xf1),-1}}, + + {"STA",2,{ZP(0x85),ZPX(0x95),ABS(0x8D),ABX(0x9d),ABY(0x99), + IND(0x92),INX(0x81),INY(0x91),-1}}, + + {"STX",2,{ZP(0x86),ZPY(0x96),ABS(0x8E),-1}}, + + {"STY",2,{ZP(0x84),ZPX(0x94),ABS(0x8C),-1}}, + + + {"STZ",2,{ZP(0x64),ZPX(0x74),ABS(0x9C),ABX(0x9E),-1}}, + + {"TRB",3,{ZP(0x14),ABS(0x1C),-1}}, + + {"TSB",3,{ZP(0x04),ABS(0x0c),-1}}, + + {"BBR0",1,{ZPREL(0x0F), -1}}, + {"BBR1",1,{ZPREL(0x1F), -1}}, + {"BBR2",1,{ZPREL(0x2F), -1}}, + {"BBR3",1,{ZPREL(0x3F), -1}}, + {"BBR4",1,{ZPREL(0x4F), -1}}, + {"BBR5",1,{ZPREL(0x5F), -1}}, + {"BBR6",1,{ZPREL(0x6F), -1}}, + {"BBR7",1,{ZPREL(0x7F), -1}}, + + {"BBS0",1,{ZPREL(0x8F), -1}}, + {"BBS1",1,{ZPREL(0x9F), -1}}, + {"BBS2",1,{ZPREL(0xAF), -1}}, + {"BBS3",1,{ZPREL(0xBF), -1}}, + {"BBS4",1,{ZPREL(0xCF), -1}}, + {"BBS5",1,{ZPREL(0xDF), -1}}, + {"BBS6",1,{ZPREL(0xEF), -1}}, + {"BBS7",1,{ZPREL(0xFF), -1}}, + + {"CLA",1,{IMP(0x62),-1}}, + {"CLX",1,{IMP(0x82),-1}}, + {"CLY",1,{IMP(0xC2),-1}}, + + {"CSL",1,{IMP(0x54),-1}}, + {"CSH",1,{IMP(0xD4),-1}}, + + {"RMB0",3,{ZP(0x07), -1}}, + {"RMB1",3,{ZP(0x17), -1}}, + {"RMB2",3,{ZP(0x27), -1}}, + {"RMB3",3,{ZP(0x37), -1}}, + {"RMB4",3,{ZP(0x47), -1}}, + {"RMB5",3,{ZP(0x57), -1}}, + {"RMB6",3,{ZP(0x67), -1}}, + {"RMB7",3,{ZP(0x77), -1}}, + + {"SMB0",3,{ZP(0x87), -1}}, + {"SMB1",3,{ZP(0x97), -1}}, + {"SMB2",3,{ZP(0xa7), -1}}, + {"SMB3",3,{ZP(0xb7), -1}}, + {"SMB4",3,{ZP(0xc7), -1}}, + {"SMB5",3,{ZP(0xd7), -1}}, + {"SMB6",3,{ZP(0xe7), -1}}, + {"SMB7",3,{ZP(0xf7), -1}}, + + {"BRA",1,{REL(0x80),-1}}, + + {"BSR",1,{REL(0x44),-1}}, + + {"BCC",1,{REL(0x90),-1}}, + + {"BCS",1,{REL(0xb0),-1}}, + + {"BEQ",1,{REL(0xf0),-1}}, + + {"BNE",1,{REL(0xd0),-1}}, + + {"BMI",1,{REL(0x30),-1}}, + + {"BPL",1,{REL(0x10),-1}}, + + {"BVC",1,{REL(0x50),-1}}, + + {"BVS",1,{REL(0x70),-1}}, + +}; + +void Dis6280::Disassemble(uint16 &a, uint16 SpecialA, char *stringo) +{ + uint8 buf; + uint64 arg; + int32 info; + int op_index; + int y; + + info=-1; + + buf=Read(a); + a++; + + for(op_index=0; op_index < NUMOPS; op_index++) + { + y=0; + while(optable[op_index].modes[y]>=0) + { + if((optable[op_index].modes[y]&0xFF)==buf) + { + info=optable[op_index].modes[y]; + goto endy; + } + y++; + } + } + + endy: + stringo[0] = 0; + if(info>=0) + { + int z=flengths[(info>>16)]; + bool borked = 0; + int pow = 0; + uint64 arg_orig; + + arg_orig = arg = 0; + + if(z) + { + for(pow = 0; pow < z; pow++) + { + if(a == SpecialA) + { + borked = 1; + break; + } + uint8 rb = Read(a); + arg |= (uint64)rb << (pow * 8); + a++; + } + arg_orig = arg; + if((info>>16)==1) /* Relative branch */ + arg = (a + (char)arg) & 0xFFFF; + + if(borked) + strcat(stringo, "--------"); + else + { + sprintf(stringo+strlen(stringo),"%s ",optable[op_index].name); + + if((info>>16) < 12 || (info >> 16) == 18 || (info >> 16) == 19) // ...or JMP indirect + sprintf(stringo+strlen(stringo), fstrings[info>>16], (unsigned int)arg); + + //"$04X, $04X, $04X", // BMT + //"#$02X, $%02X", // IMM ZP + //"#$02X, $%02X, X", // IMM ZP, X + //"#$02X, $%04X", // IMM ABS + //"#$02X, $%04X, X", // IMM ABS, X + //"$02X, #$%02X", // ZP REL + + //#define BMT(x) ((12<<16)|x) + //#define IMDZP(x) ((13 << 16)|x) + //#define IMDZPX(x) ((14 << 16)|x) + //#define IMDABS(x) ((15 << 16)|x) + //#define IMDABX(x) ((16 << 16)|x) + //#define ZPREL(x) ((17 << 16)|x) + + unsigned int tmp; + switch(info>>16) + { + case 12: + sprintf(stringo + strlen(stringo), fstrings[info >> 16], (unsigned int)(arg & 0xFFFF), (unsigned int)((arg >> 16) & 0xFFFF), + (unsigned int)((arg >> 32) & 0xFFFF)); + break; + case 16: + case 15: + case 14: + case 13: + sprintf(stringo + strlen(stringo), fstrings[info >> 16], (unsigned int)(arg & 0xFF), (unsigned int)((arg >> 8) & 0xFFFF)); + break; + case 17: + sprintf(stringo + strlen(stringo), fstrings[info >> 16], (unsigned int)(arg & 0xFF), (a + (char)((arg >> 8) & 0xFF)) & 0xFFFF); + sprintf(stringo + strlen(stringo), " @ $%04X = $%02X", (unsigned int)(arg & 0xFF) + 0x2000, Read((arg & 0xFF) + 0x2000)); + break; + case 2:tmp = arg + 0x2000; + if(optable[op_index].type&1) + { + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + } + break; + case 3:tmp=0x2000 + ((arg+GetX())&0xff); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 4:tmp=0x2000 + ((arg+GetY())&0xff); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 5:tmp=arg; + if(optable[op_index].type&1) + { + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + } + break; + case 6:tmp=(arg+GetX())&0xffff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 7:tmp=(arg+GetY())&0xffff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 8: // Indirect + tmp = (arg&0xFF); + tmp=Read(0x2000 + tmp) | (Read(0x2000 + ((tmp+1)&0xFF))<<8); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 18: // JMP indirect + tmp=Read(arg)|(Read((arg+1)&0xffff)<<8); + sprintf(stringo+strlen(stringo)," $%04X",tmp); + break; + case 19: // JMP indirect, X + { + uint16 tmp_addr = arg + GetX(); + + tmp = Read(tmp_addr) | (Read((tmp_addr + 1) & 0xFFFF) << 8); + sprintf(stringo+strlen(stringo)," $%04X",tmp); + } + break; + case 9:tmp = ((arg+GetX())&0xFF); + tmp=Read(0x2000 + tmp) | (Read(0x2000 + ((tmp+1)&0xFF))<<8); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 10: + tmp = Read(0x2000 + arg) | (Read(0x2000 + ((arg+1)&0xFF))<<8); + tmp=(tmp+GetY())&0xFFFF; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + + } + } + } + else + { + strcat(stringo,optable[op_index].name); + } + + for(int x = strlen(stringo); x < 30; x++) + { + stringo[x] = ' '; + stringo[x + 1] = 0; + } + sprintf(stringo+strlen(stringo),";%02X ", buf); + + for(int x = 0; x < pow; x++) + sprintf(stringo + strlen(stringo), (pow > 4) ? "%02X" : "%02X ", (unsigned int)((arg_orig >> x * 8) & 0xFF)); + } + else + sprintf(stringo+strlen(stringo),".db $%02X ;%02X", buf, buf); + +} diff --git a/libmednahawk/src/dis6280.h b/libmednahawk/src/dis6280.h new file mode 100644 index 0000000000..aa9f7f5231 --- /dev/null +++ b/libmednahawk/src/dis6280.h @@ -0,0 +1,14 @@ +class Dis6280 +{ + public: + Dis6280(void); + ~Dis6280(); + + virtual uint8 Read(uint16 A); + virtual uint8 GetX(void); + virtual uint8 GetY(void); + + void Disassemble(uint16 &a, uint16 SpecialA, char *); + + private: +}; diff --git a/libmednahawk/src/dis6502.cpp b/libmednahawk/src/dis6502.cpp new file mode 100644 index 0000000000..60b91fda56 --- /dev/null +++ b/libmednahawk/src/dis6502.cpp @@ -0,0 +1,313 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "dis6502.h" + +Dis6502::Dis6502(bool is_cmos) +{ + IsCMOS = is_cmos; + +} + +Dis6502::~Dis6502() +{ + +} + +uint8 Dis6502::Read(uint16 A) +{ + return(0); +} + +uint8 Dis6502::GetX(void) +{ + return(0); +} + +uint8 Dis6502::GetY(void) +{ + return(0); +} + + +static const char *fstrings[12]= +{ + "#$%02X", // immediate + "$%04X", // RELATIVE(jump) + "$%02X", // Z + "$%02X,X", // Z,x + "$%02X,Y", // Z,y + "$%04X", //ABS + "$%04X,X", // ABS,x + "$%04X,Y", // ABS,y + "($%04X)", // IND + "($%02X,X)", // INX + "($%02X),Y", // INY + "" +}; +static const int flengths[12]={1,1,1,1,1,2,2,2,2,1,1,0}; + +#define IMD(x) ((0<<16)|x) +#define REL(x) ((1<<16)|x) +#define ZP(x) ((2<<16)|x) +#define ZPX(x) ((3<<16)|x) +#define ZPY(x) ((4<<16)|x) +#define ABS(x) ((5<<16)|x) +#define ABX(x) ((6<<16)|x) +#define ABY(x) ((7<<16)|x) +#define IND(x) ((8<<16)|x) +#define INX(x) ((9<<16)|x) +#define INY(x) ((10<<16)|x) +#define IMP(x) ((11<<16)|x) + +typedef struct { + const char *name; + int type; /* 1 for read, 2 for write, 3 for r then write. */ + int32 modes[10]; +} OPS; + +#define NUMOPS 56 +static OPS optable[NUMOPS]= +{ + {"BRK",0,{IMP(0x00),-1}}, + {"RTI",0,{IMP(0x40),-1}}, + {"RTS",0,{IMP(0x60),-1}}, + {"PHA",2,{IMP(0x48),-1}}, + {"PHP",2,{IMP(0x08),-1}}, + {"PLA",1,{IMP(0x68),-1}}, + {"PLP",1,{IMP(0x28),-1}}, + {"JMP",0,{ABS(0x4C),IND(0x6C),-1}}, + {"JSR",0,{ABS(0x20),-1}}, + {"TAX",0,{IMP(0xAA),-1}}, + {"TXA",0,{IMP(0x8A),-1}}, + {"TAY",0,{IMP(0xA8),-1}}, + {"TYA",0,{IMP(0x98),-1}}, + {"TSX",0,{IMP(0xBA),-1}}, + {"TXS",0,{IMP(0x9A),-1}}, + {"DEX",0,{IMP(0xCA),-1}}, + {"DEY",0,{IMP(0x88),-1}}, + {"INX",0,{IMP(0xE8),-1}}, + {"INY",0,{IMP(0xC8),-1}}, + {"CLC",0,{IMP(0x18),-1}}, + {"CLD",0,{IMP(0xD8),-1}}, + {"CLI",0,{IMP(0x58),-1}}, + {"CLV",0,{IMP(0xB8),-1}}, + {"SEC",0,{IMP(0x38),-1}}, + {"SED",0,{IMP(0xF8),-1}}, + {"SEI",0,{IMP(0x78),-1}}, + {"NOP",0,{IMP(0xEA),-1}}, + {"ASL",1,{IMP(0x0a),ZP(0x06),ZPX(0x16),ABS(0x0E),ABX(0x1E),-1}}, + {"DEC",3,{ZP(0xc6),ZPX(0xd6),ABS(0xcE),ABX(0xdE),-1}}, + {"INC",3,{ZP(0xe6),ZPX(0xf6),ABS(0xeE),ABX(0xfE),-1}}, + {"LSR",3,{IMP(0x4a),ZP(0x46),ZPX(0x56),ABS(0x4E),ABX(0x5E),-1}}, + {"ROL",3,{IMP(0x2a),ZP(0x26),ZPX(0x36),ABS(0x2E),ABX(0x3E),-1}}, + {"ROR",3,{IMP(0x6a),ZP(0x66),ZPX(0x76),ABS(0x6E),ABX(0x7E),-1}}, + {"ADC",1,{IMD(0x69),ZP(0x65),ZPX(0x75),ABS(0x6D),ABX(0x7d),ABY(0x79), + INX(0x61),INY(0x71),-1}}, + {"AND",1,{IMD(0x29),ZP(0x25),ZPX(0x35),ABS(0x2D),ABX(0x3d),ABY(0x39), + INX(0x21),INY(0x31),-1}}, + {"BIT",1,{ZP(0x24),ABS(0x2c),-1}}, + {"CMP",1,{IMD(0xc9),ZP(0xc5),ZPX(0xd5),ABS(0xcD),ABX(0xdd),ABY(0xd9), + INX(0xc1),INY(0xd1),-1}}, + {"CPX",1,{IMD(0xe0),ZP(0xe4),ABS(0xec),-1}}, + {"CPY",1,{IMD(0xc0),ZP(0xc4),ABS(0xcc),-1}}, + {"EOR",1,{IMD(0x49),ZP(0x45),ZPX(0x55),ABS(0x4D),ABX(0x5d),ABY(0x59), + INX(0x41),INY(0x51),-1}}, + {"LDA",1,{IMD(0xa9),ZP(0xa5),ZPX(0xb5),ABS(0xaD),ABX(0xbd),ABY(0xb9), + INX(0xa1),INY(0xb1),-1}}, + {"LDX",1,{IMD(0xa2),ZP(0xa6),ZPY(0xB6),ABS(0xae),ABY(0xbe),-1}}, + {"LDY",1,{IMD(0xa0),ZP(0xa4),ZPX(0xB4),ABS(0xac),ABX(0xbc),-1}}, + {"ORA",1,{IMD(0x09),ZP(0x05),ZPX(0x15),ABS(0x0D),ABX(0x1d),ABY(0x19), + INX(0x01),INY(0x11),-1}}, + {"SBC",1,{IMD(0xEB),IMD(0xe9),ZP(0xe5),ZPX(0xf5),ABS(0xeD),ABX(0xfd),ABY(0xf9), + INX(0xe1),INY(0xf1),-1}}, + {"STA",2,{ZP(0x85),ZPX(0x95),ABS(0x8D),ABX(0x9d),ABY(0x99), + INX(0x81),INY(0x91),-1}}, + {"STX",2,{ZP(0x86),ZPY(0x96),ABS(0x8E),-1}}, + {"STY",2,{ZP(0x84),ZPX(0x94),ABS(0x8C),-1}}, + {"BCC",1,{REL(0x90),-1}}, + {"BCS",1,{REL(0xb0),-1}}, + {"BEQ",1,{REL(0xf0),-1}}, + {"BNE",1,{REL(0xd0),-1}}, + {"BMI",1,{REL(0x30),-1}}, + {"BPL",1,{REL(0x10),-1}}, + {"BVC",1,{REL(0x50),-1}}, + {"BVS",1,{REL(0x70),-1}}, +}; + +void Dis6502::Disassemble(uint16 &a, uint16 SpecialA, char *stringo) +{ + uint8 buf; + unsigned int arg; + int32 info; + int x; + int y; + + info=-1; + + buf=Read(a); + a++; + + for(x=0;x=0) + { + if((optable[x].modes[y]&0xFF)==buf) + { + info=optable[x].modes[y]; + goto endy; + } + y++; + } + } + + endy: + sprintf(stringo,"%02X ",buf); + if(info>=0) + { + int z=flengths[(info>>16)]; + bool borked = 0; + + if(z) + { + arg=Read(a); + + if(a == SpecialA) + borked = 1; + + if(z == 2 && ((a + 1) & 0xFFFF) == SpecialA) + { + if(!borked) + { + sprintf(stringo+strlen(stringo),"%02X ", Read(a)); + a++; + } + borked = 1; + } + if(!borked) + { + sprintf(stringo+strlen(stringo),"%02X ",arg); + + a++; + if(z == 2) + { + arg|=Read(a)<<8; + sprintf(stringo+strlen(stringo),"%02X ",arg>>8); + a++; + } + else + strcat(stringo," "); + if((info>>16)==1) /* Relative branch */ + arg=(a+(char)arg) & 0xFFFF; + } + + if(borked) + strcat(stringo, "--------"); + else + { + sprintf(stringo+strlen(stringo),"%s ",optable[x].name); + sprintf(stringo+strlen(stringo),fstrings[info>>16],arg); + } +/* + 0 "#$%02X", // immediate + 1 "$%04X", // RELATIVE(jump) + 2 "$%02X", // Z + 3 "$%02X,X", // Z,x + 4 "$%02X,Y", // Z,y + 5 "$%04X", //ABS + 6 "$%04X,X", // ABS,x + 7 "$%04X,Y", // ABS,y + 8 "($%04X)", // IND + 9 "($%02X,X)", // INX + 10 "($%02X),Y", // INY + 11 #define IMP(x) ((11<<16)|x) +*/ + if(!borked) + { + unsigned int tmp; + switch(info>>16) + { + case 2:tmp=arg; + if(optable[x].type&1) + { + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + } + break; + case 3:tmp=(arg+GetX())&0xff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[x].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 4:tmp=(arg+GetY())&0xff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[x].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 5:tmp=arg; + if(optable[x].type&1) + { + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + } + break; + case 6:tmp=(arg+GetX())&0xffff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[x].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 7:tmp=(arg+GetY())&0xffff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[x].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 8: + if(IsCMOS) + tmp=Read(arg)|(Read((arg+1)&0xffff)<<8); + else + tmp=Read(arg)|(Read( ((arg+1)&0x00ff) | (arg & 0xFF00))<<8); + sprintf(stringo+strlen(stringo)," $%04X",tmp); + break; + case 9:tmp=(arg+GetX())&0xFF; + tmp=Read(tmp) | (Read((tmp+1)&0xFF)<<8); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[x].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 10:tmp=Read(arg) | (Read((arg+1)&0xFF)<<8); + tmp=(tmp+GetY())&0xFFFF; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[x].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + + } + } + + + } + else + { + strcat(stringo," "); + strcat(stringo,optable[x].name); + } + } + else + sprintf(stringo+strlen(stringo)," .db $%02X",buf); +} diff --git a/libmednahawk/src/dis6502.h b/libmednahawk/src/dis6502.h new file mode 100644 index 0000000000..f51d216426 --- /dev/null +++ b/libmednahawk/src/dis6502.h @@ -0,0 +1,15 @@ +class Dis6502 +{ + public: + Dis6502(bool); + virtual ~Dis6502(); + + virtual uint8 Read(uint16 A); + virtual uint8 GetX(void); + virtual uint8 GetY(void); + + void Disassemble(uint16 &a, uint16 SpecialA, char *); + + private: + bool IsCMOS; +}; diff --git a/libmednahawk/src/driver.h b/libmednahawk/src/driver.h new file mode 100644 index 0000000000..a295790570 --- /dev/null +++ b/libmednahawk/src/driver.h @@ -0,0 +1,15 @@ +#ifndef _MDFN_DRIVERH +#define _MDFN_DRIVERH + +#include "types.h" +#include // REMOVE ME eventually +#include "git.h" +#include "settings-driver.h" +#include "mednafen-driver.h" +#include "netplay-driver.h" +#include "state-driver.h" +#include "movie-driver.h" +#include "mempatcher-driver.h" +#include "video-driver.h" + +#endif diff --git a/libmednahawk/src/drivers/2xSaI.cpp b/libmednahawk/src/drivers/2xSaI.cpp new file mode 100644 index 0000000000..3b0fb88718 --- /dev/null +++ b/libmednahawk/src/drivers/2xSaI.cpp @@ -0,0 +1,1347 @@ +/* 2xSaI + * Copyright (c) Derek Liauw Kie Fa, 1999-2002 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* http://lists.fedoraproject.org/pipermail/legal/2009-October/000928.html */ + +#include "2xSaI.h" + +//#include "System.h" +#include "main.h" +//#include "../gba/Port.h" + +#if defined(__GNUC__) && defined(__i386__) + #define MMX 1 +#else + #undef MMX +#endif + +#undef MMX // Remove when we have a system for compiling 32-bit x86 standalone assembly files. + +extern "C" +{ +#ifdef MMX + void _2xSaILine (sai_uint8 *srcPtr, sai_uint8 *deltaPtr, sai_uint32 srcPitch, + sai_uint32 width, sai_uint8 *dstPtr, sai_uint32 dstPitch); + void _2xSaISuperEagleLine (sai_uint8 *srcPtr, sai_uint8 *deltaPtr, + sai_uint32 srcPitch, sai_uint32 width, + sai_uint8 *dstPtr, sai_uint32 dstPitch); + void _2xSaISuper2xSaILine (sai_uint8 *srcPtr, sai_uint8 *deltaPtr, + sai_uint32 srcPitch, sai_uint32 width, + sai_uint8 *dstPtr, sai_uint32 dstPitch); + void Init_2xSaIMMX (sai_uint32 BitFormat); + + bool cpu_mmx = 1; +#endif +} +static sai_uint32 colorMask = 0xF7DEF7DE; +static sai_uint32 lowPixelMask = 0x08210821; +static sai_uint32 qcolorMask = 0xE79CE79C; +static sai_uint32 qlowpixelMask = 0x18631863; +static sai_uint32 redblueMask = 0xF81F; +static sai_uint32 greenMask = 0x7E0; + +sai_uint32 qRGB_COLOR_MASK[2] = { 0xF7DEF7DE, 0xF7DEF7DE }; + +//extern void hq2x_init(unsigned); + +int Init_2xSaI(sai_uint32 systemColorDepth, sai_uint32 BitFormat) +{ + if(systemColorDepth == 16) { + if (BitFormat == 565) { + colorMask = 0xF7DEF7DE; + lowPixelMask = 0x08210821; + qcolorMask = 0xE79CE79C; + qlowpixelMask = 0x18631863; + redblueMask = 0xF81F; + greenMask = 0x7E0; + qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0xF7DEF7DE; + //hq2x_init(16); + } else if (BitFormat == 555) { + colorMask = 0x7BDE7BDE; + lowPixelMask = 0x04210421; + qcolorMask = 0x739C739C; + qlowpixelMask = 0x0C630C63; + redblueMask = 0x7C1F; + greenMask = 0x3E0; + qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0x7BDE7BDE; + //hq2x_init(15); + } else { + return 0; + } + } else if(systemColorDepth == 32) { + colorMask = 0xfefefefe; + lowPixelMask = 0x01010101; + qcolorMask = 0xfcfcfcfc; + qlowpixelMask = 0x03030303; + qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0xfefefefe; + //hq2x_init(32); + } else + return 0; + +#ifdef MMX + Init_2xSaIMMX (BitFormat); +#endif + + return 1; +} + +static inline int GetResult1 (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D, + sai_uint32 /* E */) +{ + int x = 0; + int y = 0; + int r = 0; + + if (A == C) + x += 1; + else if (B == C) + y += 1; + if (A == D) + x += 1; + else if (B == D) + y += 1; + if (x <= 1) + r += 1; + if (y <= 1) + r -= 1; + return r; +} + +static inline int GetResult2 (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D, + sai_uint32 /* E */) +{ + int x = 0; + int y = 0; + int r = 0; + + if (A == C) + x += 1; + else if (B == C) + y += 1; + if (A == D) + x += 1; + else if (B == D) + y += 1; + if (x <= 1) + r -= 1; + if (y <= 1) + r += 1; + return r; +} + +static inline int GetResult (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D) +{ + int x = 0; + int y = 0; + int r = 0; + + if (A == C) + x += 1; + else if (B == C) + y += 1; + if (A == D) + x += 1; + else if (B == D) + y += 1; + if (x <= 1) + r += 1; + if (y <= 1) + r -= 1; + return r; +} + +static inline sai_uint32 INTERPOLATE (sai_uint32 A, sai_uint32 B) +{ + if (A != B) { + return (((A & colorMask) >> 1) + ((B & colorMask) >> 1) + + (A & B & lowPixelMask)); + } else + return A; +} + +static inline sai_uint32 Q_INTERPOLATE (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D) +{ + register sai_uint32 x = ((A & qcolorMask) >> 2) + + ((B & qcolorMask) >> 2) + + ((C & qcolorMask) >> 2) + ((D & qcolorMask) >> 2); + register sai_uint32 y = (A & qlowpixelMask) + + (B & qlowpixelMask) + (C & qlowpixelMask) + (D & qlowpixelMask); + + y = (y >> 2) & qlowpixelMask; + return x + y; +} + +static inline int GetResult1_32 (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D, + sai_uint32 /* E */) +{ + int x = 0; + int y = 0; + int r = 0; + + if (A == C) + x += 1; + else if (B == C) + y += 1; + if (A == D) + x += 1; + else if (B == D) + y += 1; + if (x <= 1) + r += 1; + if (y <= 1) + r -= 1; + return r; +} + +static inline int GetResult2_32 (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D, + sai_uint32 /* E */) +{ + int x = 0; + int y = 0; + int r = 0; + + if (A == C) + x += 1; + else if (B == C) + y += 1; + if (A == D) + x += 1; + else if (B == D) + y += 1; + if (x <= 1) + r -= 1; + if (y <= 1) + r += 1; + return r; +} + +void Super2xSaI (sai_uint8 *srcPtr, sai_uint32 srcPitch, + sai_uint8 *deltaPtr, sai_uint8 *dstPtr, sai_uint32 dstPitch, + int width, int height) +{ + sai_uint16 *bP; + sai_uint8 *dP; + sai_uint32 inc_bP; + sai_uint32 Nextline = srcPitch >> 1; +#ifdef MMX + if (cpu_mmx) { + for (; height; height--) { + _2xSaISuper2xSaILine (srcPtr, deltaPtr, srcPitch, width, + dstPtr, dstPitch); + srcPtr += srcPitch; + dstPtr += dstPitch * 2; + deltaPtr += srcPitch; + } + } else +#endif + { + inc_bP = 1; + + for (; height; height--) { + bP = (sai_uint16 *) srcPtr; + dP = (sai_uint8 *) dstPtr; + + for (sai_uint32 finish = width; finish; finish -= inc_bP) { + sai_uint32 color4, color5, color6; + sai_uint32 color1, color2, color3; + sai_uint32 colorA0, colorA1, colorA2, colorA3, + colorB0, colorB1, colorB2, colorB3, colorS1, colorS2; + sai_uint32 product1a, product1b, product2a, product2b; + + //--------------------------------------- B1 B2 + // 4 5 6 S2 + // 1 2 3 S1 + // A1 A2 + + colorB0 = *(bP - Nextline - 1); + colorB1 = *(bP - Nextline); + colorB2 = *(bP - Nextline + 1); + colorB3 = *(bP - Nextline + 2); + + color4 = *(bP - 1); + color5 = *(bP); + color6 = *(bP + 1); + colorS2 = *(bP + 2); + + color1 = *(bP + Nextline - 1); + color2 = *(bP + Nextline); + color3 = *(bP + Nextline + 1); + colorS1 = *(bP + Nextline + 2); + + colorA0 = *(bP + Nextline + Nextline - 1); + colorA1 = *(bP + Nextline + Nextline); + colorA2 = *(bP + Nextline + Nextline + 1); + colorA3 = *(bP + Nextline + Nextline + 2); + + //-------------------------------------- + if (color2 == color6 && color5 != color3) { + product2b = product1b = color2; + } else if (color5 == color3 && color2 != color6) { + product2b = product1b = color5; + } else if (color5 == color3 && color2 == color6) { + register int r = 0; + + r += GetResult (color6, color5, color1, colorA1); + r += GetResult (color6, color5, color4, colorB1); + r += GetResult (color6, color5, colorA2, colorS1); + r += GetResult (color6, color5, colorB2, colorS2); + + if (r > 0) + product2b = product1b = color6; + else if (r < 0) + product2b = product1b = color5; + else { + product2b = product1b = INTERPOLATE (color5, color6); + } + } else { + if (color6 == color3 && color3 == colorA1 + && color2 != colorA2 && color3 != colorA0) + product2b = + Q_INTERPOLATE (color3, color3, color3, color2); + else if (color5 == color2 && color2 == colorA2 + && colorA1 != color3 && color2 != colorA3) + product2b = + Q_INTERPOLATE (color2, color2, color2, color3); + else + product2b = INTERPOLATE (color2, color3); + + if (color6 == color3 && color6 == colorB1 + && color5 != colorB2 && color6 != colorB0) + product1b = + Q_INTERPOLATE (color6, color6, color6, color5); + else if (color5 == color2 && color5 == colorB2 + && colorB1 != color6 && color5 != colorB3) + product1b = + Q_INTERPOLATE (color6, color5, color5, color5); + else + product1b = INTERPOLATE (color5, color6); + } + + if (color5 == color3 && color2 != color6 && color4 == color5 + && color5 != colorA2) + product2a = INTERPOLATE (color2, color5); + else + if (color5 == color1 && color6 == color5 + && color4 != color2 && color5 != colorA0) + product2a = INTERPOLATE (color2, color5); + else + product2a = color2; + + if (color2 == color6 && color5 != color3 && color1 == color2 + && color2 != colorB2) + product1a = INTERPOLATE (color2, color5); + else + if (color4 == color2 && color3 == color2 + && color1 != color5 && color2 != colorB0) + product1a = INTERPOLATE (color2, color5); + else + product1a = color5; + +#ifdef WORDS_BIGENDIAN + product1a = (product1a << 16) | product1b; + product2a = (product2a << 16) | product2b; +#else + product1a = product1a | (product1b << 16); + product2a = product2a | (product2b << 16); +#endif + + *((sai_uint32 *) dP) = product1a; + *((sai_uint32 *) (dP + dstPitch)) = product2a; + + bP += inc_bP; + dP += sizeof (sai_uint32); + } // end of for ( finish= width etc..) + + srcPtr += srcPitch; + dstPtr += dstPitch << 1; + deltaPtr += srcPitch; + } // endof: for (; height; height--) + } +} + +void Super2xSaI32 (sai_uint8 *srcPtr, sai_uint32 srcPitch, + sai_uint8 *dstPtr, sai_uint32 dstPitch, + int width, int height) +{ + sai_uint32 *bP; + sai_uint32 *dP; + sai_uint32 inc_bP; + sai_uint32 Nextline = srcPitch >> 2; + inc_bP = 1; + + for (; height; height--) { + bP = (sai_uint32 *) srcPtr; + dP = (sai_uint32 *) dstPtr; + + for (sai_uint32 finish = width; finish; finish -= inc_bP) { + sai_uint32 color4, color5, color6; + sai_uint32 color1, color2, color3; + sai_uint32 colorA0, colorA1, colorA2, colorA3, + colorB0, colorB1, colorB2, colorB3, colorS1, colorS2; + sai_uint32 product1a, product1b, product2a, product2b; + + //--------------------------------------- B1 B2 + // 4 5 6 S2 + // 1 2 3 S1 + // A1 A2 + + colorB0 = *(bP - Nextline - 1); + colorB1 = *(bP - Nextline); + colorB2 = *(bP - Nextline + 1); + colorB3 = *(bP - Nextline + 2); + + color4 = *(bP - 1); + color5 = *(bP); + color6 = *(bP + 1); + colorS2 = *(bP + 2); + + color1 = *(bP + Nextline - 1); + color2 = *(bP + Nextline); + color3 = *(bP + Nextline + 1); + colorS1 = *(bP + Nextline + 2); + + colorA0 = *(bP + Nextline + Nextline - 1); + colorA1 = *(bP + Nextline + Nextline); + colorA2 = *(bP + Nextline + Nextline + 1); + colorA3 = *(bP + Nextline + Nextline + 2); + + //-------------------------------------- + if (color2 == color6 && color5 != color3) { + product2b = product1b = color2; + } else if (color5 == color3 && color2 != color6) { + product2b = product1b = color5; + } else if (color5 == color3 && color2 == color6) { + register int r = 0; + + r += GetResult (color6, color5, color1, colorA1); + r += GetResult (color6, color5, color4, colorB1); + r += GetResult (color6, color5, colorA2, colorS1); + r += GetResult (color6, color5, colorB2, colorS2); + + if (r > 0) + product2b = product1b = color6; + else if (r < 0) + product2b = product1b = color5; + else { + product2b = product1b = INTERPOLATE (color5, color6); + } + } else { + if (color6 == color3 && color3 == colorA1 + && color2 != colorA2 && color3 != colorA0) + product2b = + Q_INTERPOLATE (color3, color3, color3, color2); + else if (color5 == color2 && color2 == colorA2 + && colorA1 != color3 && color2 != colorA3) + product2b = + Q_INTERPOLATE (color2, color2, color2, color3); + else + product2b = INTERPOLATE (color2, color3); + + if (color6 == color3 && color6 == colorB1 + && color5 != colorB2 && color6 != colorB0) + product1b = + Q_INTERPOLATE (color6, color6, color6, color5); + else if (color5 == color2 && color5 == colorB2 + && colorB1 != color6 && color5 != colorB3) + product1b = + Q_INTERPOLATE (color6, color5, color5, color5); + else + product1b = INTERPOLATE (color5, color6); + } + + if (color5 == color3 && color2 != color6 && color4 == color5 + && color5 != colorA2) + product2a = INTERPOLATE (color2, color5); + else + if (color5 == color1 && color6 == color5 + && color4 != color2 && color5 != colorA0) + product2a = INTERPOLATE (color2, color5); + else + product2a = color2; + + if (color2 == color6 && color5 != color3 && color1 == color2 + && color2 != colorB2) + product1a = INTERPOLATE (color2, color5); + else + if (color4 == color2 && color3 == color2 + && color1 != color5 && color2 != colorB0) + product1a = INTERPOLATE (color2, color5); + else + product1a = color5; + *(dP) = product1a; + *(dP+1) = product1b; + *(dP + (dstPitch >> 2)) = product2a; + *(dP + (dstPitch >> 2) + 1) = product2b; + + bP += inc_bP; + dP += 2; + } // end of for ( finish= width etc..) + + srcPtr += srcPitch; + dstPtr += dstPitch << 1; + // deltaPtr += srcPitch; + } // endof: for (; height; height--) +} + +void SuperEagle (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *deltaPtr, + sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height) +{ + sai_uint8 *dP; + sai_uint16 *bP; + sai_uint16 *xP; + sai_uint32 inc_bP; + +#ifdef MMX + if (cpu_mmx) { + for (; height; height--) { + _2xSaISuperEagleLine (srcPtr, deltaPtr, srcPitch, width, + dstPtr, dstPitch); + srcPtr += srcPitch; + dstPtr += dstPitch * 2; + deltaPtr += srcPitch; + } + } else +#endif + { + inc_bP = 1; + + sai_uint32 Nextline = srcPitch >> 1; + + for (; height; height--) { + bP = (sai_uint16 *) srcPtr; + xP = (sai_uint16 *) deltaPtr; + dP = dstPtr; + for (sai_uint32 finish = width; finish; finish -= inc_bP) { + sai_uint32 color4, color5, color6; + sai_uint32 color1, color2, color3; + sai_uint32 colorA1, colorA2, colorB1, colorB2, colorS1, colorS2; + sai_uint32 product1a, product1b, product2a, product2b; + + colorB1 = *(bP - Nextline); + colorB2 = *(bP - Nextline + 1); + + color4 = *(bP - 1); + color5 = *(bP); + color6 = *(bP + 1); + colorS2 = *(bP + 2); + + color1 = *(bP + Nextline - 1); + color2 = *(bP + Nextline); + color3 = *(bP + Nextline + 1); + colorS1 = *(bP + Nextline + 2); + + colorA1 = *(bP + Nextline + Nextline); + colorA2 = *(bP + Nextline + Nextline + 1); + + // -------------------------------------- + if (color2 == color6 && color5 != color3) { + product1b = product2a = color2; + if ((color1 == color2) || (color6 == colorB2)) { + product1a = INTERPOLATE (color2, color5); + product1a = INTERPOLATE (color2, product1a); + // product1a = color2; + } else { + product1a = INTERPOLATE (color5, color6); + } + + if ((color6 == colorS2) || (color2 == colorA1)) { + product2b = INTERPOLATE (color2, color3); + product2b = INTERPOLATE (color2, product2b); + // product2b = color2; + } else { + product2b = INTERPOLATE (color2, color3); + } + } else if (color5 == color3 && color2 != color6) { + product2b = product1a = color5; + + if ((colorB1 == color5) || (color3 == colorS1)) { + product1b = INTERPOLATE (color5, color6); + product1b = INTERPOLATE (color5, product1b); + // product1b = color5; + } else { + product1b = INTERPOLATE (color5, color6); + } + + if ((color3 == colorA2) || (color4 == color5)) { + product2a = INTERPOLATE (color5, color2); + product2a = INTERPOLATE (color5, product2a); + // product2a = color5; + } else { + product2a = INTERPOLATE (color2, color3); + } + + } else if (color5 == color3 && color2 == color6) { + register int r = 0; + + r += GetResult (color6, color5, color1, colorA1); + r += GetResult (color6, color5, color4, colorB1); + r += GetResult (color6, color5, colorA2, colorS1); + r += GetResult (color6, color5, colorB2, colorS2); + + if (r > 0) { + product1b = product2a = color2; + product1a = product2b = INTERPOLATE (color5, color6); + } else if (r < 0) { + product2b = product1a = color5; + product1b = product2a = INTERPOLATE (color5, color6); + } else { + product2b = product1a = color5; + product1b = product2a = color2; + } + } else { + product2b = product1a = INTERPOLATE (color2, color6); + product2b = + Q_INTERPOLATE (color3, color3, color3, product2b); + product1a = + Q_INTERPOLATE (color5, color5, color5, product1a); + + product2a = product1b = INTERPOLATE (color5, color3); + product2a = + Q_INTERPOLATE (color2, color2, color2, product2a); + product1b = + Q_INTERPOLATE (color6, color6, color6, product1b); + + // product1a = color5; + // product1b = color6; + // product2a = color2; + // product2b = color3; + } +#ifdef WORDS_BIGENDIAN + product1a = (product1a << 16) | product1b; + product2a = (product2a << 16) | product2b; +#else + product1a = product1a | (product1b << 16); + product2a = product2a | (product2b << 16); +#endif + + *((sai_uint32 *) dP) = product1a; + *((sai_uint32 *) (dP + dstPitch)) = product2a; + *xP = color5; + + bP += inc_bP; + xP += inc_bP; + dP += sizeof (sai_uint32); + } // end of for ( finish= width etc..) + + srcPtr += srcPitch; + dstPtr += dstPitch << 1; + deltaPtr += srcPitch; + } // endof: for (height; height; height--) + } +} + +void SuperEagle32 (sai_uint8 *srcPtr, sai_uint32 srcPitch, + sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height) +{ + sai_uint32 *dP; + sai_uint32 *bP; + sai_uint32 inc_bP; + + inc_bP = 1; + + sai_uint32 Nextline = srcPitch >> 2; + + for (; height; height--) { + bP = (sai_uint32 *) srcPtr; + dP = (sai_uint32 *)dstPtr; + for (sai_uint32 finish = width; finish; finish -= inc_bP) { + sai_uint32 color4, color5, color6; + sai_uint32 color1, color2, color3; + sai_uint32 colorA1, colorA2, colorB1, colorB2, colorS1, colorS2; + sai_uint32 product1a, product1b, product2a, product2b; + + colorB1 = *(bP - Nextline); + colorB2 = *(bP - Nextline + 1); + + color4 = *(bP - 1); + color5 = *(bP); + color6 = *(bP + 1); + colorS2 = *(bP + 2); + + color1 = *(bP + Nextline - 1); + color2 = *(bP + Nextline); + color3 = *(bP + Nextline + 1); + colorS1 = *(bP + Nextline + 2); + + colorA1 = *(bP + Nextline + Nextline); + colorA2 = *(bP + Nextline + Nextline + 1); + + // -------------------------------------- + if (color2 == color6 && color5 != color3) { + product1b = product2a = color2; + if ((color1 == color2) || (color6 == colorB2)) { + product1a = INTERPOLATE (color2, color5); + product1a = INTERPOLATE (color2, product1a); + // product1a = color2; + } else { + product1a = INTERPOLATE (color5, color6); + } + + if ((color6 == colorS2) || (color2 == colorA1)) { + product2b = INTERPOLATE (color2, color3); + product2b = INTERPOLATE (color2, product2b); + // product2b = color2; + } else { + product2b = INTERPOLATE (color2, color3); + } + } else if (color5 == color3 && color2 != color6) { + product2b = product1a = color5; + + if ((colorB1 == color5) || (color3 == colorS1)) { + product1b = INTERPOLATE (color5, color6); + product1b = INTERPOLATE (color5, product1b); + // product1b = color5; + } else { + product1b = INTERPOLATE (color5, color6); + } + + if ((color3 == colorA2) || (color4 == color5)) { + product2a = INTERPOLATE (color5, color2); + product2a = INTERPOLATE (color5, product2a); + // product2a = color5; + } else { + product2a = INTERPOLATE (color2, color3); + } + + } else if (color5 == color3 && color2 == color6) { + register int r = 0; + + r += GetResult (color6, color5, color1, colorA1); + r += GetResult (color6, color5, color4, colorB1); + r += GetResult (color6, color5, colorA2, colorS1); + r += GetResult (color6, color5, colorB2, colorS2); + + if (r > 0) { + product1b = product2a = color2; + product1a = product2b = INTERPOLATE (color5, color6); + } else if (r < 0) { + product2b = product1a = color5; + product1b = product2a = INTERPOLATE (color5, color6); + } else { + product2b = product1a = color5; + product1b = product2a = color2; + } + } else { + product2b = product1a = INTERPOLATE (color2, color6); + product2b = + Q_INTERPOLATE (color3, color3, color3, product2b); + product1a = + Q_INTERPOLATE (color5, color5, color5, product1a); + + product2a = product1b = INTERPOLATE (color5, color3); + product2a = + Q_INTERPOLATE (color2, color2, color2, product2a); + product1b = + Q_INTERPOLATE (color6, color6, color6, product1b); + + // product1a = color5; + // product1b = color6; + // product2a = color2; + // product2b = color3; + } + *(dP) = product1a; + *(dP+1) = product1b; + *(dP + (dstPitch >> 2)) = product2a; + *(dP + (dstPitch >> 2) +1) = product2b; + + bP += inc_bP; + dP += 2; + } // end of for ( finish= width etc..) + + srcPtr += srcPitch; + dstPtr += dstPitch << 1; + } // endof: for (height; height; height--) +} + +void _2xSaI (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *deltaPtr, + sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height) +{ + sai_uint8 *dP; + sai_uint16 *bP; + sai_uint32 inc_bP; + +#ifdef MMX + if (cpu_mmx) { + for (; height; height -= 1) { + _2xSaILine (srcPtr, deltaPtr, srcPitch, width, dstPtr, dstPitch); + srcPtr += srcPitch; + dstPtr += dstPitch * 2; + deltaPtr += srcPitch; + } + } else +#endif + { + inc_bP = 1; + + sai_uint32 Nextline = srcPitch >> 1; + + for (; height; height--) { + bP = (sai_uint16 *) srcPtr; + dP = dstPtr; + + for (sai_uint32 finish = width; finish; finish -= inc_bP) { + + register sai_uint32 colorA, colorB; + sai_uint32 colorC, colorD, + colorE, colorF, colorG, colorH, + colorI, colorJ, colorK, colorL, + + colorM, colorN, colorO, colorP; + sai_uint32 product, product1, product2; + + //--------------------------------------- + // Map of the pixels: I|E F|J + // G|A B|K + // H|C D|L + // M|N O|P + colorI = *(bP - Nextline - 1); + colorE = *(bP - Nextline); + colorF = *(bP - Nextline + 1); + colorJ = *(bP - Nextline + 2); + + colorG = *(bP - 1); + colorA = *(bP); + colorB = *(bP + 1); + colorK = *(bP + 2); + + colorH = *(bP + Nextline - 1); + colorC = *(bP + Nextline); + colorD = *(bP + Nextline + 1); + colorL = *(bP + Nextline + 2); + + colorM = *(bP + Nextline + Nextline - 1); + colorN = *(bP + Nextline + Nextline); + colorO = *(bP + Nextline + Nextline + 1); + colorP = *(bP + Nextline + Nextline + 2); + + if ((colorA == colorD) && (colorB != colorC)) { + if (((colorA == colorE) && (colorB == colorL)) || + ((colorA == colorC) && (colorA == colorF) + && (colorB != colorE) && (colorB == colorJ))) { + product = colorA; + } else { + product = INTERPOLATE (colorA, colorB); + } + + if (((colorA == colorG) && (colorC == colorO)) || + ((colorA == colorB) && (colorA == colorH) + && (colorG != colorC) && (colorC == colorM))) { + product1 = colorA; + } else { + product1 = INTERPOLATE (colorA, colorC); + } + product2 = colorA; + } else if ((colorB == colorC) && (colorA != colorD)) { + if (((colorB == colorF) && (colorA == colorH)) || + ((colorB == colorE) && (colorB == colorD) + && (colorA != colorF) && (colorA == colorI))) { + product = colorB; + } else { + product = INTERPOLATE (colorA, colorB); + } + + if (((colorC == colorH) && (colorA == colorF)) || + ((colorC == colorG) && (colorC == colorD) + && (colorA != colorH) && (colorA == colorI))) { + product1 = colorC; + } else { + product1 = INTERPOLATE (colorA, colorC); + } + product2 = colorB; + } else if ((colorA == colorD) && (colorB == colorC)) { + if (colorA == colorB) { + product = colorA; + product1 = colorA; + product2 = colorA; + } else { + register int r = 0; + + product1 = INTERPOLATE (colorA, colorC); + product = INTERPOLATE (colorA, colorB); + + r += + GetResult1 (colorA, colorB, colorG, colorE, + colorI); + r += + GetResult2 (colorB, colorA, colorK, colorF, + colorJ); + r += + GetResult2 (colorB, colorA, colorH, colorN, + colorM); + r += + GetResult1 (colorA, colorB, colorL, colorO, + colorP); + + if (r > 0) + product2 = colorA; + else if (r < 0) + product2 = colorB; + else { + product2 = + Q_INTERPOLATE (colorA, colorB, colorC, + colorD); + } + } + } else { + product2 = Q_INTERPOLATE (colorA, colorB, colorC, colorD); + + if ((colorA == colorC) && (colorA == colorF) + && (colorB != colorE) && (colorB == colorJ)) { + product = colorA; + } else if ((colorB == colorE) && (colorB == colorD) + && (colorA != colorF) && (colorA == colorI)) { + product = colorB; + } else { + product = INTERPOLATE (colorA, colorB); + } + + if ((colorA == colorB) && (colorA == colorH) + && (colorG != colorC) && (colorC == colorM)) { + product1 = colorA; + } else if ((colorC == colorG) && (colorC == colorD) + && (colorA != colorH) && (colorA == colorI)) { + product1 = colorC; + } else { + product1 = INTERPOLATE (colorA, colorC); + } + } + +#ifdef WORDS_BIGENDIAN + product = (colorA << 16) | product ; + product1 = (product1 << 16) | product2 ; +#else + product = colorA | (product << 16); + product1 = product1 | (product2 << 16); +#endif + *((int *) dP) = product; + *((sai_uint32 *) (dP + dstPitch)) = product1; + + bP += inc_bP; + dP += sizeof (sai_uint32); + } // end of for ( finish= width etc..) + + srcPtr += srcPitch; + dstPtr += dstPitch << 1; + deltaPtr += srcPitch; + } // endof: for (height; height; height--) + } +} + +void _2xSaI32 (sai_uint8 *srcPtr, sai_uint32 srcPitch, + sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height) +{ + sai_uint32 *dP; + sai_uint32 *bP; + sai_uint32 inc_bP = 1; + + sai_uint32 Nextline = srcPitch >> 2; + + for (; height; height--) { + bP = (sai_uint32 *) srcPtr; + dP = (sai_uint32 *) dstPtr; + + for (sai_uint32 finish = width; finish; finish -= inc_bP) { + register sai_uint32 colorA, colorB; + sai_uint32 colorC, colorD, + colorE, colorF, colorG, colorH, + colorI, colorJ, colorK, colorL, + + colorM, colorN, colorO, colorP; + sai_uint32 product, product1, product2; + + //--------------------------------------- + // Map of the pixels: I|E F|J + // G|A B|K + // H|C D|L + // M|N O|P + colorI = *(bP - Nextline - 1); + colorE = *(bP - Nextline); + colorF = *(bP - Nextline + 1); + colorJ = *(bP - Nextline + 2); + + colorG = *(bP - 1); + colorA = *(bP); + colorB = *(bP + 1); + colorK = *(bP + 2); + + colorH = *(bP + Nextline - 1); + colorC = *(bP + Nextline); + colorD = *(bP + Nextline + 1); + colorL = *(bP + Nextline + 2); + + colorM = *(bP + Nextline + Nextline - 1); + colorN = *(bP + Nextline + Nextline); + colorO = *(bP + Nextline + Nextline + 1); + colorP = *(bP + Nextline + Nextline + 2); + + if ((colorA == colorD) && (colorB != colorC)) { + if (((colorA == colorE) && (colorB == colorL)) || + ((colorA == colorC) && (colorA == colorF) + && (colorB != colorE) && (colorB == colorJ))) { + product = colorA; + } else { + product = INTERPOLATE (colorA, colorB); + } + + if (((colorA == colorG) && (colorC == colorO)) || + ((colorA == colorB) && (colorA == colorH) + && (colorG != colorC) && (colorC == colorM))) { + product1 = colorA; + } else { + product1 = INTERPOLATE (colorA, colorC); + } + product2 = colorA; + } else if ((colorB == colorC) && (colorA != colorD)) { + if (((colorB == colorF) && (colorA == colorH)) || + ((colorB == colorE) && (colorB == colorD) + && (colorA != colorF) && (colorA == colorI))) { + product = colorB; + } else { + product = INTERPOLATE (colorA, colorB); + } + + if (((colorC == colorH) && (colorA == colorF)) || + ((colorC == colorG) && (colorC == colorD) + && (colorA != colorH) && (colorA == colorI))) { + product1 = colorC; + } else { + product1 = INTERPOLATE (colorA, colorC); + } + product2 = colorB; + } else if ((colorA == colorD) && (colorB == colorC)) { + if (colorA == colorB) { + product = colorA; + product1 = colorA; + product2 = colorA; + } else { + register int r = 0; + + product1 = INTERPOLATE (colorA, colorC); + product = INTERPOLATE (colorA, colorB); + + r += + GetResult1 (colorA, colorB, colorG, colorE, + colorI); + r += + GetResult2 (colorB, colorA, colorK, colorF, + colorJ); + r += + GetResult2 (colorB, colorA, colorH, colorN, + colorM); + r += + GetResult1 (colorA, colorB, colorL, colorO, + colorP); + + if (r > 0) + product2 = colorA; + else if (r < 0) + product2 = colorB; + else { + product2 = + Q_INTERPOLATE (colorA, colorB, colorC, + colorD); + } + } + } else { + product2 = Q_INTERPOLATE (colorA, colorB, colorC, colorD); + + if ((colorA == colorC) && (colorA == colorF) + && (colorB != colorE) && (colorB == colorJ)) { + product = colorA; + } else if ((colorB == colorE) && (colorB == colorD) + && (colorA != colorF) && (colorA == colorI)) { + product = colorB; + } else { + product = INTERPOLATE (colorA, colorB); + } + + if ((colorA == colorB) && (colorA == colorH) + && (colorG != colorC) && (colorC == colorM)) { + product1 = colorA; + } else if ((colorC == colorG) && (colorC == colorD) + && (colorA != colorH) && (colorA == colorI)) { + product1 = colorC; + } else { + product1 = INTERPOLATE (colorA, colorC); + } + } + *(dP) = colorA; + *(dP + 1) = product; + *(dP + (dstPitch >> 2)) = product1; + *(dP + (dstPitch >> 2) + 1) = product2; + + bP += inc_bP; + dP += 2; + } // end of for ( finish= width etc..) + + srcPtr += srcPitch; + dstPtr += dstPitch << 1; + // deltaPtr += srcPitch; + } // endof: for (height; height; height--) +} + +static sai_uint32 Bilinear (sai_uint32 A, sai_uint32 B, sai_uint32 x) +{ + unsigned long areaA, areaB; + unsigned long result; + + if (A == B) + return A; + + areaB = (x >> 11) & 0x1f; // reduce 16 bit fraction to 5 bits + areaA = 0x20 - areaB; + + A = (A & redblueMask) | ((A & greenMask) << 16); + B = (B & redblueMask) | ((B & greenMask) << 16); + + result = ((areaA * A) + (areaB * B)) >> 5; + + return (result & redblueMask) | ((result >> 16) & greenMask); +} + +static sai_uint32 Bilinear4 (sai_uint32 A, sai_uint32 B, sai_uint32 C, sai_uint32 D, sai_uint32 x, + sai_uint32 y) +{ + unsigned long areaA, areaB, areaC, areaD; + unsigned long result, xy; + + x = (x >> 11) & 0x1f; + y = (y >> 11) & 0x1f; + xy = (x * y) >> 5; + + A = (A & redblueMask) | ((A & greenMask) << 16); + B = (B & redblueMask) | ((B & greenMask) << 16); + C = (C & redblueMask) | ((C & greenMask) << 16); + D = (D & redblueMask) | ((D & greenMask) << 16); + + areaA = 0x20 + xy - x - y; + areaB = x - xy; + areaC = y - xy; + areaD = xy; + + result = ((areaA * A) + (areaB * B) + (areaC * C) + (areaD * D)) >> 5; + + return (result & redblueMask) | ((result >> 16) & greenMask); +} + +void Scale_2xSaI (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 * /* deltaPtr */, + sai_uint8 *dstPtr, sai_uint32 dstPitch, + sai_uint32 dstWidth, sai_uint32 dstHeight, int width, int height) +{ + sai_uint8 *dP; + sai_uint16 *bP; + + sai_uint32 w; + sai_uint32 h; + sai_uint32 dw; + sai_uint32 dh; + sai_uint32 hfinish; + sai_uint32 wfinish; + + sai_uint32 Nextline = srcPitch >> 1; + + wfinish = (width - 1) << 16; // convert to fixed point + dw = wfinish / (dstWidth - 1); + hfinish = (height - 1) << 16; // convert to fixed point + dh = hfinish / (dstHeight - 1); + + for (h = 0; h < hfinish; h += dh) { + sai_uint32 y1, y2; + + y1 = h & 0xffff; // fraction part of fixed point + bP = (sai_uint16 *) (srcPtr + ((h >> 16) * srcPitch)); + dP = dstPtr; + y2 = 0x10000 - y1; + + w = 0; + + for (; w < wfinish;) { + sai_uint32 A, B, C, D; + sai_uint32 E, F, G, H; + sai_uint32 I, J, K, L; + sai_uint32 x1, x2, a1, f1, f2; + sai_uint32 position, product1; + + position = w >> 16; + A = bP[position]; // current pixel + B = bP[position + 1]; // next pixel + C = bP[position + Nextline]; + D = bP[position + Nextline + 1]; + E = bP[position - Nextline]; + F = bP[position - Nextline + 1]; + G = bP[position - 1]; + H = bP[position + Nextline - 1]; + I = bP[position + 2]; + J = bP[position + Nextline + 2]; + K = bP[position + Nextline + Nextline]; + L = bP[position + Nextline + Nextline + 1]; + + x1 = w & 0xffff; // fraction part of fixed point + x2 = 0x10000 - x1; + + /*0*/ + if (A == B && C == D && A == C) + product1 = A; + else /*1*/ if (A == D && B != C) { + f1 = (x1 >> 1) + (0x10000 >> 2); + f2 = (y1 >> 1) + (0x10000 >> 2); + if (y1 <= f1 && A == J && A != E) // close to B + { + a1 = f1 - y1; + product1 = Bilinear (A, B, a1); + } else if (y1 >= f1 && A == G && A != L) // close to C + { + a1 = y1 - f1; + product1 = Bilinear (A, C, a1); + } + else if (x1 >= f2 && A == E && A != J) // close to B + { + a1 = x1 - f2; + product1 = Bilinear (A, B, a1); + } + else if (x1 <= f2 && A == L && A != G) // close to C + { + a1 = f2 - x1; + product1 = Bilinear (A, C, a1); + } + else if (y1 >= x1) // close to C + { + a1 = y1 - x1; + product1 = Bilinear (A, C, a1); + } + else if (y1 <= x1) // close to B + { + a1 = x1 - y1; + product1 = Bilinear (A, B, a1); + } + } + else + /*2*/ + if (B == C && A != D) + { + f1 = (x1 >> 1) + (0x10000 >> 2); + f2 = (y1 >> 1) + (0x10000 >> 2); + if (y2 >= f1 && B == H && B != F) // close to A + { + a1 = y2 - f1; + product1 = Bilinear (B, A, a1); + } + else if (y2 <= f1 && B == I && B != K) // close to D + { + a1 = f1 - y2; + product1 = Bilinear (B, D, a1); + } + else if (x2 >= f2 && B == F && B != H) // close to A + { + a1 = x2 - f2; + product1 = Bilinear (B, A, a1); + } + else if (x2 <= f2 && B == K && B != I) // close to D + { + a1 = f2 - x2; + product1 = Bilinear (B, D, a1); + } + else if (y2 >= x1) // close to A + { + a1 = y2 - x1; + product1 = Bilinear (B, A, a1); + } + else if (y2 <= x1) // close to D + { + a1 = x1 - y2; + product1 = Bilinear (B, D, a1); + } + } + /*3*/ + else + { + product1 = Bilinear4 (A, B, C, D, x1, y1); + } + + //end First Pixel + *(sai_uint32 *) dP = product1; + dP += 2; + w += dw; + } + dstPtr += dstPitch; + } +} +/* +int Init_2xSaI(sai_uint32 BitFormat) { + // Store some stuff +// push ebp +// mov ebp, esp +// push edx + + __asm__ __volatile__( + //"movq 0(%1), %%mm0\n" + "mov eax, (%1)\n" //PixelFormat + "cmp eax, 555\n" + "jz Bits555\n" + "cmp eax, 565\n" + "jz Bits565\n" +"end2:\n" + "mov eax, 1\n" + "jmp end3\n" +"Bits555:\n" + "mov edx, 0x7BDE7BDE\n" + "mov eax, colorMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov edx, 0x04210421\n" + "mov eax, lowPixelMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov edx, 0x739C739C\n" + "mov eax, qcolorMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov edx, 0x0C630C63\n" + "mov eax, qlowpixelMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov eax, 0\n" + "jmp end3\n" +"Bits565:\n" + "mov edx, 0xF7DEF7DE\n" + "mov eax, colorMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov edx, 0x08210821\n" + "mov eax, lowPixelMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov edx, 0xE79CE79C\n" + "mov eax, qcolorMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov edx, 0x18631863\n" + "mov eax, qlowpixelMask\n" + "mov [eax], edx\n" + "mov [eax+4], edx\n" + "mov eax, 0\n" + "jmp end3\n" +"end3:\n" +// "pop edx\n" +// "mov esp, ebp\n" +// "pop ebp\n" +// "ret\n" + : "+r" (BitFormat) + : + : "cc" + ); +}*/ diff --git a/libmednahawk/src/drivers/2xSaI.h b/libmednahawk/src/drivers/2xSaI.h new file mode 100644 index 0000000000..f49dfb0d7c --- /dev/null +++ b/libmednahawk/src/drivers/2xSaI.h @@ -0,0 +1,53 @@ +/* 2xSaI + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* http://lists.fedoraproject.org/pipermail/legal/2009-October/000928.html */ + +//#include "System.h" +//#include "main.h" +//#include "../gba/Port.h" + +//#if defined(__GNUC__) && defined(__i386__) +// #define 2XSAI_MMX 1 +//#else +// #undef 2XSAI_MMX +//#endif + +#ifndef __2XSAI_H +#define __2XSAI_H + +typedef unsigned char sai_uint8; +typedef unsigned short sai_uint16; +typedef unsigned sai_uint32; + +//#define BLUE_MASK565 0x001F001F +//#define RED_MASK565 0xF800F800 +//#define GREEN_MASK565 0x07E007E0 + +//#define BLUE_MASK555 0x001F001F +//#define RED_MASK555 0x7C007C00 +//#define GREEN_MASK555 0x03E003E0 + +int Init_2xSaI(sai_uint32 systemColorDepth, sai_uint32 BitFormat); +void Super2xSaI (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *deltaPtr, sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height); +void Super2xSaI32 (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height); +void SuperEagle (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *deltaPtr, sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height); +void SuperEagle32 (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height); +void _2xSaI (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *deltaPtr, sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height); +void _2xSaI32 (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 *dstPtr, sai_uint32 dstPitch, int width, int height); +void Scale_2xSaI (sai_uint8 *srcPtr, sai_uint32 srcPitch, sai_uint8 * /* deltaPtr */, sai_uint8 *dstPtr, sai_uint32 dstPitch, sai_uint32 dstWidth, sai_uint32 dstHeight, int width, int height); + +#endif diff --git a/libmednahawk/src/drivers/Joystick_DOS_Standard.cpp b/libmednahawk/src/drivers/Joystick_DOS_Standard.cpp new file mode 100644 index 0000000000..b2af717462 --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_DOS_Standard.cpp @@ -0,0 +1,142 @@ +// UNFINISHED + +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "input.h" +#include "Joystick.h" +#include "Joystick_DOS_Standard.h" + +#ifdef DOS + #include +#else + // For Linux testing - Don't try this at home, kids. + #include +#endif + +class Joystick_DOS_Standard : public Joystick +{ + public: + + Joystick_DOS_Standard(unsigned port_arg); + ~Joystick_DOS_Standard(); + + static bool Detect(unsigned port); + + void UpdateInternal(void); + + private: + int port; + int jsdev_fd; + int evdev_fd; +}; + +Joystick_DOS_Standard::Joystick_DOS_Standard(unsigned port_arg) +{ + port = port_arg; + #ifndef DOS + ioperm(port, TRUE); + #endif + + num_axes = 4; + num_buttons = 4; + num_rel_axes = 0; + + id = port; +} + +Joystick_DOS_Standard::~Joystick_DOS_Standard() +{ + +} + +bool Joystick_DOS_Standard::Detect(unsigned port) +{ + + +} + +void Joystick_DOS_Standard::UpdateInternal(void) +{ + uint32 start_time; + uint64 end_time[4] = { 0, 0, 0, 0 }; + uint8 buttons; + uint8 axes; + + buttons = inb(port) & 0xF0; + outb(0, port); + start_time = _rdtsc(); + + do + { + uint64 curtime = _rdtsc(); + axes = inb(port) & 0x0F; + end_time[0] |= end_time + } while(axes); +} + +class JoystickDriver_DOS_Standard : public JoystickDriver +{ + public: + + JoystickDriver_DOS_Standard(); + virtual ~JoystickDriver_DOS_Standard(); + + virtual unsigned NumJoysticks(); // Cached internally on JoystickDriver instantiation. + virtual Joystick *GetJoystick(unsigned index); + virtual void UpdateJoysticks(void); + + private: + std::vector joys; +}; + +JoystickDriver_DOS_Standard::JoystickDriver_DOS_Standard() +{ + +} + +JoystickDriver_DOS_Standard::~JoystickDriver_DOS_Standard() +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + delete joys[n]; + } +} + +unsigned JoystickDriver_DOS_Standard::NumJoysticks(void) +{ + return joys.size(); +} + +Joystick *JoystickDriver_DOS_Standard::GetJoystick(unsigned index) +{ + return joys[index]; +} + +void JoystickDriver_DOS_Standard::UpdateJoysticks(void) +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + joys[n]->UpdateInternal(); + } +} + +JoystickDriver *JoystickDriver_DOS_Standard_New(void) +{ + return new JoystickDriver_DOS_Standard(); +} diff --git a/libmednahawk/src/drivers/Joystick_DOS_Standard.h b/libmednahawk/src/drivers/Joystick_DOS_Standard.h new file mode 100644 index 0000000000..535f7d3076 --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_DOS_Standard.h @@ -0,0 +1,5 @@ +#ifndef __MDFN_DRIVERS_JOYSTICK_DOS_STANDARD_H +#define __MDFN_DRIVERS_JOYSTICK_DOS_STANDARD_H + + +#endif diff --git a/libmednahawk/src/drivers/Joystick_DX5.cpp b/libmednahawk/src/drivers/Joystick_DX5.cpp new file mode 100644 index 0000000000..d33114b176 --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_DX5.cpp @@ -0,0 +1,431 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "input.h" +#include "Joystick.h" +#include "Joystick_DX5.h" +#include "../md5.h" + +#define DIRECTINPUT_VERSION 0x0800 //zero 29-oct-2012 - change to dinput8 +#define _WIN32_WINNT 0x0501 //zero 29-oct-2012 - this file demands XP featureset +#include +#include +#include + +#include +#include + +struct di_axis_info +{ + int32 minimum, maximum; + uint32 jd_logical_offset; +}; + +class Joystick_DX5 : public Joystick +{ + public: + + Joystick_DX5(LPDIRECTINPUT dii, DIDEVICEINSTANCE *ddi); + virtual ~Joystick_DX5(); + virtual unsigned HatToAxisCompat(unsigned hat); + virtual void SetRumble(uint8 weak_intensity, uint8 strong_intensity); + + void UpdateInternal(void); + + private: + LPDIRECTINPUTDEVICE2 dev; + DIDEVCAPS DevCaps; + std::vector DIAxisInfo; + int have_exclusive_access; + void RequestExclusive(bool value); +}; + +#define REQUIRE_DI_CALL(code) { HRESULT hres = (code); if(hres != DI_OK) { throw MDFN_Error(0, "\"" #code "\"" "failed: %u", (unsigned)hres); } } + +void Joystick_DX5::RequestExclusive(bool value) +{ + if(value != have_exclusive_access) + { + if(value && SUCCEEDED(dev->SetCooperativeLevel(GetDesktopWindow(), DISCL_BACKGROUND | DISCL_EXCLUSIVE)) && SUCCEEDED(dev->Acquire())) + have_exclusive_access = true; + else + { + have_exclusive_access = false; + dev->SetCooperativeLevel(GetDesktopWindow(), DISCL_BACKGROUND | DISCL_NONEXCLUSIVE); + dev->Acquire(); + } + } +} + +Joystick_DX5::Joystick_DX5(LPDIRECTINPUT dii, DIDEVICEINSTANCE *ddi) : dev(NULL), have_exclusive_access(-1) +{ + LPDIRECTINPUTDEVICE tmp_dev = NULL; + + try + { + REQUIRE_DI_CALL( dii->CreateDevice(ddi->guidInstance, &tmp_dev, NULL) ); + REQUIRE_DI_CALL( tmp_dev->QueryInterface(IID_IDirectInputDevice2, (LPVOID *)&dev) ); + REQUIRE_DI_CALL( dev->SetDataFormat(&c_dfDIJoystick2) ); + DevCaps.dwSize = sizeof(DevCaps); + REQUIRE_DI_CALL( dev->GetCapabilities(&DevCaps) ); + + for(unsigned rax = 0; rax < 8; rax++) + { + DIPROPRANGE diprg; + HRESULT hres; + + diprg.diph.dwSize = sizeof(diprg); + diprg.diph.dwHeaderSize = sizeof(diprg.diph); + diprg.diph.dwObj = rax * sizeof(LONG); + diprg.diph.dwHow = DIPH_BYOFFSET; + + // TODO: Handle DIPROPRANGE_NOMIN and DIPROPRANGE_NOMAX + hres = dev->GetProperty(DIPROP_RANGE, &diprg.diph); + if(hres == DI_OK) + { + if(diprg.lMin < diprg.lMax) + { + di_axis_info dai; + + dai.jd_logical_offset = rax; + dai.minimum = diprg.lMin; + dai.maximum = diprg.lMax; + + DIAxisInfo.push_back(dai); + } + } + //else if(hres != DIERR_OBJECTNOTFOUND) + } + + num_rel_axes = 0; + num_axes = DIAxisInfo.size() + DevCaps.dwPOVs * 2; + num_buttons = DevCaps.dwButtons; + axis_state.resize(num_axes); + rel_axis_state.resize(num_rel_axes); + button_state.resize(num_buttons); + // id, guidinstance, etc. + + // + // + // +#if 0 + { + DIEFFECTINFO eff_inf; + + eff_inf.dwSize = sizeof(eff_inf); + if(dev->GetEffectInfo(&eff_inf, GUID_Square) == DI_OK || dev->GetEffectInfo(&eff_inf, GUID_Sine) == DI_OK) + { + + } + } +#endif + RequestExclusive(false); + + CalcOldStyleID(DIAxisInfo.size(), 0, DevCaps.dwPOVs, DevCaps.dwButtons); + snprintf(name, sizeof(name), "%s", ddi->tszProductName); + } + catch(...) + { + if(tmp_dev != NULL) + tmp_dev->Release(); + + if(dev != NULL) + dev->Release(); + + throw; + } +} + +Joystick_DX5::~Joystick_DX5() +{ + if(dev != NULL) + { + dev->Unacquire(); + dev->Release(); + dev = NULL; + } +} + +unsigned Joystick_DX5::HatToAxisCompat(unsigned hat) +{ + return(DIAxisInfo.size() + (hat * 2)); +} + +// TODO: RequestExclusive(false) when SetRumble() hasn't been called for several seconds. +void Joystick_DX5::UpdateInternal(void) +{ + DIJOYSTATE2 js; + HRESULT hres; + + if(DevCaps.dwFlags & (DIDC_POLLEDDEVICE | DIDC_POLLEDDATAFORMAT)) + { + do { /* */ hres = dev->Poll(); /* */ } while((hres == DIERR_INPUTLOST) && ((hres = dev->Acquire()) == DI_OK)); + if(hres != DI_OK) + return; + } + + do { /* */ hres = dev->GetDeviceState(sizeof(js), &js); /* */ } while((hres == DIERR_INPUTLOST) && ((hres = dev->Acquire()) == DI_OK)); + if(hres != DI_OK) + return; + + for(unsigned button = 0; button < DevCaps.dwButtons; button++) + { + button_state[button] = (bool)(js.rgbButtons[button] & 0x80); + } + + for(unsigned axis = 0; axis < DIAxisInfo.size(); axis++) + { + int64 rv = (&js.lX)[DIAxisInfo[axis].jd_logical_offset]; + + rv = (((rv - DIAxisInfo[axis].minimum) * 32767 * 2) / (DIAxisInfo[axis].maximum - DIAxisInfo[axis].minimum)) - 32767; + if(rv < -32767) + rv = -32767; + + if(rv > 32767) + rv = 32767; + axis_state[axis] = rv; + } + + for(unsigned hat = 0; hat < DevCaps.dwPOVs; hat++) + { + DWORD hat_val = js.rgdwPOV[hat]; + + //if((uint16)hat_val == 0xFFFF) // Reportedly some drivers report 0xFFFF instead of 0xFFFFFFFF? (comment from byuu) + if(hat_val >= 36000) + { + axis_state[(DIAxisInfo.size() + hat * 2) + 0] = 0; + axis_state[(DIAxisInfo.size() + hat * 2) + 1] = 0; + } + else + { + int32 x, y; + + //axis_state[(DIAxisInfo.size() + hat * 2) + 0] = 32767 * sin((double)M_PI * 2 * hat_val / 36000); // x + //axis_state[(DIAxisInfo.size() + hat * 2) + 1] = 32767 * -cos((double)M_PI * 2 * hat_val / 36000); // y + unsigned octant = (hat_val / 4500) & 0x7; + signed octant_doff = hat_val % 4500; + + switch(octant) + { + case 0: x = octant_doff * 32767 / 4500; y = -32767; break; + case 1: x = 32767; y = (-4500 + octant_doff) * 32767 / 4500; break; + + case 2: x = 32767; y = octant_doff * 32767 / 4500; break; + case 3: x = (4500 - octant_doff) * 32767 / 4500; y = 32767; break; + + case 4: x = (-octant_doff) * 32767 / 4500; y = 32767; break; + case 5: x = -32767; y = (4500 - octant_doff) * 32767 / 4500; break; + + case 6: x = -32767; y = (-octant_doff) * 32767 / 4500; break; + case 7: x = (-4500 + octant_doff) * 32767 / 4500; y = -32767; break; + } + + axis_state[(DIAxisInfo.size() + hat * 2) + 0] = x; + axis_state[(DIAxisInfo.size() + hat * 2) + 1] = y; + } + } +} + +void Joystick_DX5::SetRumble(uint8 weak_intensity, uint8 strong_intensity) +{ + //if((weak_intensity || strong_intensity) && rumble_supported) + // RequestExclusive(true); +} + +class JoystickDriver_DX5 : public JoystickDriver +{ + public: + + JoystickDriver_DX5(bool exclude_xinput); + virtual ~JoystickDriver_DX5(); + + virtual unsigned NumJoysticks(); // Cached internally on JoystickDriver instantiation. + virtual Joystick *GetJoystick(unsigned index); + virtual void UpdateJoysticks(void); + + private: + std::vector joys; + LPDIRECTINPUT dii; +}; + +static INLINE std::set GetXInputVidPid(void) +{ + HMODULE us32 = NULL; + UINT (WINAPI *p_GetRawInputDeviceList)(PRAWINPUTDEVICELIST, PUINT, UINT) = NULL; //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + UINT (WINAPI *p_GetRawInputDeviceInfo)(HANDLE, UINT, LPVOID, PUINT) = NULL; //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + std::set exclude_vps; + + if((us32 = LoadLibrary("user32.dll")) == NULL) + return exclude_vps; + + p_GetRawInputDeviceList = (UINT ( WINAPI*)(PRAWINPUTDEVICELIST, PUINT, UINT))GetProcAddress(us32, "GetRawInputDeviceList"); //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + p_GetRawInputDeviceInfo = (UINT (WINAPI*)(HANDLE, UINT, LPVOID, PUINT))GetProcAddress(us32, "GetRawInputDeviceInfoA"); //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + + if(p_GetRawInputDeviceList && p_GetRawInputDeviceInfo) + { + std::vector ridl; + unsigned int alloc_num_devices = 0; + unsigned int num_devices = 0; + + p_GetRawInputDeviceList(NULL, &alloc_num_devices, sizeof(RAWINPUTDEVICELIST)); //zero 29-oct-2012 - added sizeof parameter to end + ridl.resize(alloc_num_devices); + + if((num_devices = p_GetRawInputDeviceList(&ridl[0], &alloc_num_devices, sizeof(RAWINPUTDEVICELIST))) > 0) + { + for(unsigned i = 0; i < num_devices; i++) + { + if(ridl[i].dwType != RIM_TYPEHID) + continue; + + RID_DEVICE_INFO devinfo; + std::vector devname; + unsigned int sizepar; + + memset(&devinfo, 0, sizeof(devinfo)); + devinfo.cbSize = sizeof(RID_DEVICE_INFO); + sizepar = sizeof(RID_DEVICE_INFO); + if(p_GetRawInputDeviceInfo(ridl[i].hDevice, RIDI_DEVICEINFO, &devinfo, &sizepar) != sizeof(RID_DEVICE_INFO)) + continue; + + sizepar = 0; + p_GetRawInputDeviceInfo(ridl[i].hDevice, RIDI_DEVICENAME, NULL, &sizepar); + devname.resize(sizepar + 1); + p_GetRawInputDeviceInfo(ridl[i].hDevice, RIDI_DEVICENAME, &devname[0], &sizepar); + + //printf("MOOCOW: %s\n", devname); + if(!strncmp(&devname[0], "IG_", 3) || strstr(&devname[0], "&IG_") != NULL) + { + exclude_vps.insert(MAKELONG(devinfo.hid.dwVendorId, devinfo.hid.dwProductId)); + } + } + } + } + + FreeLibrary(us32); + + return exclude_vps; +} + + +struct enum_device_list +{ + enum_device_list() : valid_count(0) { ddi.resize(max_count); } + static const unsigned max_count = 256; + std::vector ddi; + unsigned valid_count; +}; + +static BOOL CALLBACK GLOB_EnumJoysticksProc(LPCDIDEVICEINSTANCE ddi, LPVOID private_data) +{ + enum_device_list *edl = (enum_device_list*)private_data; + + //printf("%08x\n", (unsigned int)ddi->guidInstance.Data1); + + if((ddi->dwDevType & 0xFF) != DI8DEVCLASS_GAMECTRL)//zero 29-oct-2012 - change DIDEVTYPE_JOYSTICK to DI8DEVCLASS_GAMECTRL + return DIENUM_CONTINUE; + + if(edl->valid_count < edl->max_count) + { + memcpy(&edl->ddi[edl->valid_count], ddi, sizeof(DIDEVICEINSTANCE)); + edl->valid_count++; + } + + return DIENUM_CONTINUE; +} + +JoystickDriver_DX5::JoystickDriver_DX5(bool exclude_xinput) : dii(NULL) +{ + enum_device_list edl; + std::set exclude_vps; + + try + { + REQUIRE_DI_CALL( DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&dii, NULL) ); //zero 29-oct-2012 - change to use dinput8 and add void** cast + REQUIRE_DI_CALL( dii->EnumDevices(DI8DEVCLASS_GAMECTRL, GLOB_EnumJoysticksProc, &edl, DIEDFL_ATTACHEDONLY) ); //zero 29-oct-2012 - change DIDEVTYPE_JOYSTICK to DI8DEVCLASS_GAMECTRL + + if(exclude_xinput) + { + exclude_vps = GetXInputVidPid(); + } + + for(unsigned i = 0; i < edl.valid_count; i++) + { + Joystick_DX5 *jdx5 = NULL; + + if(edl.ddi[i].guidProduct.Data1 && exclude_vps.count(edl.ddi[i].guidProduct.Data1)) + continue; + + try + { + jdx5 = new Joystick_DX5(dii, &edl.ddi[i]); + joys.push_back(jdx5); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + if(jdx5 != NULL) + { + delete jdx5; + jdx5 = NULL; + } + } + } + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + } +} + +JoystickDriver_DX5::~JoystickDriver_DX5() +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + delete joys[n]; + } + + if(dii != NULL) + { + dii->Release(); + dii = NULL; + } +} + +unsigned JoystickDriver_DX5::NumJoysticks(void) +{ + return joys.size(); +} + +Joystick *JoystickDriver_DX5::GetJoystick(unsigned index) +{ + return joys[index]; +} + +void JoystickDriver_DX5::UpdateJoysticks(void) +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + joys[n]->UpdateInternal(); + } +} + +JoystickDriver *JoystickDriver_DX5_New(bool exclude_xinput) +{ + return new JoystickDriver_DX5(exclude_xinput); +} + diff --git a/libmednahawk/src/drivers/Joystick_DX5.h b/libmednahawk/src/drivers/Joystick_DX5.h new file mode 100644 index 0000000000..83577929c9 --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_DX5.h @@ -0,0 +1,6 @@ +#ifndef __MDFN_DRIVERS_JOYSTICK_DX5_H +#define __MDFN_DRIVERS_JOYSTICK_DX5_H + +JoystickDriver *JoystickDriver_DX5_New(bool exclude_xinput); + +#endif diff --git a/libmednahawk/src/drivers/Joystick_Linux.cpp b/libmednahawk/src/drivers/Joystick_Linux.cpp new file mode 100644 index 0000000000..d809dc58aa --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_Linux.cpp @@ -0,0 +1,573 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "input.h" +#include "Joystick.h" +#include "Joystick_Linux.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +class Joystick_Linux : public Joystick +{ + public: + + Joystick_Linux(const char *jsdev_path, const char *evdev_path); + ~Joystick_Linux(); + + virtual unsigned HatToAxisCompat(unsigned hat); + + void UpdateInternal(void); + + void SetRumble(uint8 weak_intensity, uint8 strong_intensity); + + private: + + void InitFF(void); + + int jsdev_fd; + int evdev_fd; + + unsigned compat_hat_offs; + //unsigned ev_num_buttons; + //unsigned ev_num_axes; + //unsigned ev_button_map[KEY_CNT]; + + bool rumble_supported; + struct ff_effect current_rumble; +}; + +unsigned Joystick_Linux::HatToAxisCompat(unsigned hat) +{ + if(compat_hat_offs == ~0U) + return(~0U); + else + return(compat_hat_offs + (hat * 2)); +} + +static bool TestEVBit(uint8 *data, unsigned bit_offset) +{ + return (bool)(data[(bit_offset >> 3)] & (1U << (bit_offset & 0x7))); +} + +Joystick_Linux::Joystick_Linux(const char *jsdev_path, const char *evdev_path) : jsdev_fd(-1), evdev_fd(-1) +{ + unsigned char tmp; + + //printf("%s %s\n", jsdev_path, evdev_path); + + jsdev_fd = open(jsdev_path, O_RDONLY); + if(jsdev_fd == -1) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("Error opening joystick device \"%s\": %s"), jsdev_path, ene.StrError()); + } + + fcntl(jsdev_fd, F_SETFL, fcntl(jsdev_fd, F_GETFL) | O_NONBLOCK); + + if(evdev_path != NULL) + { + evdev_fd = open(evdev_path, O_RDWR); + if(evdev_fd == -1) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("Error opening event device \"%s\": %s"), evdev_path, ene.StrError()); + } + else + fcntl(evdev_fd, F_SETFL, fcntl(evdev_fd, F_GETFL) | O_NONBLOCK); + } + + num_rel_axes = 0; + + if(ioctl(jsdev_fd, JSIOCGAXES, &tmp) == -1) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("Failed to get number of axes: %s"), ene.StrError()); + } + else + num_axes = tmp; + + if(ioctl(jsdev_fd, JSIOCGBUTTONS, &tmp) == -1) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("Failed to get number of buttons: %s"), ene.StrError()); + } + else + num_buttons = tmp; + + axis_state.resize(num_axes); + button_state.resize(num_buttons); + + memset(name, 0, sizeof(name)); + ioctl(jsdev_fd, JSIOCGNAME(sizeof(name) - 1), name); + if(name[0] == 0) + snprintf(name, sizeof(name), _("%u-button, %u-axis controller"), num_buttons, num_axes); + + compat_hat_offs = ~0U; + CalcOldStyleID(num_axes, 0, 0, num_buttons); + if(evdev_fd != -1) + { +#if 0 + uint8 keybits[(KEY_CNT + 7) / 8]; + unsigned ev_button_count = 0; + + memset(keybits, 0, sizeof(keybits)); + ioctl(evdev_fd, EVIOCGBIT(EV_KEY, sizeof(keybits)), keybits); + + for(unsigned kbt = 0; kbt < KEY_CNT; kbt++) + { + if(keybits[kbt >> 3] & (1 << (kbt & 0x7))) + { + ev_button_count++; + } + } + printf("moo: %u\n", ev_button_count); +#endif + uint8 absaxbits[(ABS_CNT + 7) / 8]; + unsigned ev_abs_count = 0; + unsigned ev_hat_count = 0; + + memset(absaxbits, 0, sizeof(absaxbits)); + ioctl(evdev_fd, EVIOCGBIT(EV_ABS, sizeof(absaxbits)), absaxbits); + for(unsigned aat = 0; aat < ABS_CNT; aat++) + { + if(TestEVBit(absaxbits, aat)) + { + if(aat >= ABS_HAT0X && aat <= ABS_HAT3Y) + { + if(compat_hat_offs == ~0U) + compat_hat_offs = ev_abs_count; + ev_hat_count++; + } + ev_abs_count++; + } + } + //printf("%u\n", compat_hat_offs); + CalcOldStyleID(ev_abs_count - ev_hat_count, 0, ev_hat_count / 2, num_buttons); + } + +#if 0 + uint8 keybits[(KEY_CNT + 7) / 8]; + unsigned ev_button_count = 0; + + memset(keybits, 0, sizeof(keybits)); + ioctl(evdev_fd, EVIOCGBIT(EV_KEY, sizeof(keybits)), keybits); + hashie.update(keybits, sizeof(keybits)); + + for(unsigned kbt = 0; kbt < KEY_CNT; kbt++) + { + if(keybits[kbt >> 3] & (1 << (kbt & 0x7))) + { + ev_button_count++; + } + } + printf("moo: %u\n", ev_button_count); + } +#endif + + rumble_supported = false; + if(evdev_fd != -1) + InitFF(); +} + +void Joystick_Linux::InitFF(void) +{ + uint8 features[(FF_CNT + 7) / 8]; + + if(ioctl(evdev_fd, EVIOCGBIT(EV_FF, sizeof(features)), features) != -1) + { + if(TestEVBit((uint8 *)features, FF_RUMBLE)) + { + rumble_supported = true; + memset(¤t_rumble, 0, sizeof(current_rumble)); + current_rumble.id = -1; + current_rumble.type = FF_RUMBLE; + current_rumble.replay.length = 3000; + current_rumble.replay.delay = 0; + + //SetRumble(0xFF, 0x00); + //for(;;) + //{ + // SetRumble(0xFF, 0x00); + //} + } + } +} + +Joystick_Linux::~Joystick_Linux() +{ + if(jsdev_fd != -1) + { + close(jsdev_fd); + jsdev_fd = -1; + } + + if(evdev_fd != -1) + { + close(evdev_fd); + evdev_fd = -1; + } +} + +void Joystick_Linux::SetRumble(uint8 weak_intensity, uint8 strong_intensity) +{ +// "Type 0" can cause the rumble motors to be off when they really shouldn't be and can make the rumble effect less stable. +// So we'll go with "type 1", and resolve any possible bug reports on a case-by-case basis. +// (Note that "type 0" and "type 1" have no greater meaning, they're just names I use in Mednafen for the different upload and play strategies here ;)) +#define RUMBLIES_UPDATE_TYPE 1 + + if(rumble_supported) + { + uint32 scaled_weak = weak_intensity * 65535 /*32767*/ / 255; + uint32 scaled_strong = strong_intensity * 65535/*32767*/ / 255; + struct ff_effect old_rumble; +#if RUMBLIES_UPDATE_TYPE == 0 + input_event stop_play[2]; +#else + input_event play; +#endif + + memcpy(&old_rumble, ¤t_rumble, sizeof(ff_effect)); + current_rumble.id = -1; + current_rumble.u.rumble.weak_magnitude = scaled_weak; + current_rumble.u.rumble.strong_magnitude = scaled_strong; + + if(ioctl(evdev_fd, EVIOCSFF, ¤t_rumble) == -1) + { + // Restore. + printf("EEK: %m\n"); + memcpy(¤t_rumble, &old_rumble, sizeof(ff_effect)); + return; + } + +#if RUMBLIES_UPDATE_TYPE == 0 + stop_play[0].type = EV_FF; + stop_play[0].code = old_rumble.id; + stop_play[0].value = 0; + + stop_play[1].type = EV_FF; + stop_play[1].code = current_rumble.id; + stop_play[1].value = 1; + + if(old_rumble.id == -1) + { + write(evdev_fd, (const void *)&stop_play[1], sizeof(stop_play[1])); + } + else + { + write(evdev_fd, (const void *)&stop_play, sizeof(stop_play)); + ioctl(evdev_fd, EVIOCRMFF, (void *)old_rumble.id); + } +#else + play.type = EV_FF; + play.code = current_rumble.id; + play.value = 1; + write(evdev_fd, (const void *)&play, sizeof(play)); + + if(old_rumble.id != -1) + ioctl(evdev_fd, EVIOCRMFF, (void *)old_rumble.id); +#endif + } +} + + +void Joystick_Linux::UpdateInternal(void) +{ + // Axis movement generates a LOT of events very quickly(especially if you hack the kernel to poll USB HID game devices every 1ms instead of 8ms ;)), so read multiple events at once. + union // Save a bit of stack space. + { + struct js_event jse[32]; + struct input_event eve[32]; + }; + ssize_t read_count; + + while((read_count = read(jsdev_fd, &jse[0], sizeof(jse))) > 0) + { + for(unsigned i = 0; i < ((size_t)read_count / sizeof(jse[0])); i++) + { + //printf("JLinux: (%u) %u %u %d\n", i, jse[i].type, jse[i].number, jse[i].value); + switch(jse[i].type & ~JS_EVENT_INIT) + { + default: break; + case JS_EVENT_BUTTON: + button_state[jse[i].number] = jse[i].value; + break; + + case JS_EVENT_AXIS: + axis_state[jse[i].number] = jse[i].value; + break; + } + } + } + + if(evdev_fd != -1) + { + while((read_count = read(evdev_fd, &eve[0], sizeof(eve))) > 0) + { + //for(unsigned i = 0; i < ((size_t)read_count / sizeof(eve[0])); i++) + //{ + //} + //puts("YAY"); + } + } +} + +class JoystickDriver_Linux : public JoystickDriver +{ + public: + + JoystickDriver_Linux(); + virtual ~JoystickDriver_Linux(); + + virtual unsigned NumJoysticks(); // Cached internally on JoystickDriver instantiation. + virtual Joystick *GetJoystick(unsigned index); + virtual void UpdateJoysticks(void); + + private: + std::vector joys; +}; + +static void FreeNamelist(struct dirent **namelist, int namelist_num) +{ + if(namelist_num > 0) + { + for(int i = 0; i < namelist_num; i++) + { + free(namelist[i]); + } + } + + if(namelist) + { + free(namelist); + } +} + +static int evdev_filter(const struct dirent *de) +{ + unsigned num; + int ccount = 0; + + if(sscanf(de->d_name, "event%u%n", &num, &ccount) >= 1 && de->d_name[ccount] == 0) + { + return(1); + } + + return(0); +} + + +std::string FindEVDevFullPathByJSDev(const char *jsdev_name) +{ + char search_dir[512]; + struct dirent **namelist = NULL; + int namelist_num = 0; + std::string ret = ""; + + snprintf(search_dir, sizeof(search_dir), "/sys/class/input/%s/device", jsdev_name); + + namelist_num = scandir(search_dir, &namelist, evdev_filter, alphasort); + if(namelist_num > 0) + { + ret = std::string("/dev/input") + std::string("/") + std::string(namelist[0]->d_name); + } + FreeNamelist(namelist, namelist_num); + namelist = NULL; + + // Alternate matching, but a bit too complicated. +#if 0 + if(ret == "") + { + snprintf(search_dir, sizeof(search_dir), "/dev/input/by-id"); + + namelist_num = scandir(search_dir, &namelist, NULL, alphasort); + if(namelist_num > 0) + { + for(int i = 0; i < namelist_num; i++) + { + char link_buf[256 + 1]; + std::string tmp_path; + + memset(link_buf, 0, sizeof(link_buf)); + tmp_path = std::string("/dev/input/by-id/") + std::string(namelist[i]->d_name); + if(readlink(tmp_path.c_str(), link_buf, sizeof(link_buf) - 1) > 0) + { + std::string link_str = std::string(link_buf); + size_t spos; + std::string fstr = std::string("/") + std::string(jsdev_name); + + //printf("TP: %s, LS: %s, FS: %s\n", tmp_path.c_str(), link_str.c_str(), fstr.c_str()); + + spos = link_str.find(fstr); + if(spos != std::string::npos && ((link_str.size() - spos) == fstr.size())) + { + std::string jsuffix = std::string("-joystick"); + std::string repsuffix = std::string("-event-joystick"); + std::string new_path = tmp_path; + size_t jpos; + + jpos = new_path.find(jsuffix); + if(jpos != std::string::npos && ((new_path.size() - jpos) == jsuffix.size())) + { + struct stat stat_buf; + new_path.replace(jpos, jsuffix.size(), repsuffix); + + if(stat(new_path.c_str(), &stat_buf) != -1) + { + ret = new_path; + //printf("POO: %s\n", new_path.c_str()); + break; + } + } + } + } + } + } + FreeNamelist(namelist, namelist_num); + namelist_num = NULL; + } +#endif + + return ret; +} + +static int jsdev_filter(const struct dirent *de) +{ + unsigned num; + int ccount = 0; + + if(sscanf(de->d_name, "js%u%n", &num, &ccount) >= 1 && de->d_name[ccount] == 0) + { + return(1); + } + + return(0); +} + +JoystickDriver_Linux::JoystickDriver_Linux() +{ + struct dirent **inputdir_namelist = NULL; + struct dirent **basedir_namelist = NULL; + struct dirent **namelist = NULL; + int inputdir_namelist_num = 0; + int basedir_namelist_num = 0; + int namelist_num = 0; + const char *base_path; + + inputdir_namelist_num = scandir("/dev/input", &inputdir_namelist, jsdev_filter, alphasort); + basedir_namelist_num = scandir("/dev", &basedir_namelist, jsdev_filter, alphasort); + + if(basedir_namelist_num > inputdir_namelist_num) + { + namelist_num = basedir_namelist_num; + namelist = basedir_namelist; + base_path = "/dev"; + } + else + { + namelist_num = inputdir_namelist_num; + namelist = inputdir_namelist; + base_path = "/dev/input"; + } + + if(namelist_num > 0) + { + for(int i = 0; i < namelist_num; i++) + { + char jsdev_path[256]; + Joystick_Linux *jslin = NULL; + + snprintf(jsdev_path, sizeof(jsdev_path), "%s/%s", base_path, namelist[i]->d_name); + + try + { + std::string evdev_path; + + evdev_path = FindEVDevFullPathByJSDev(namelist[i]->d_name); + + jslin = new Joystick_Linux(jsdev_path, (evdev_path.size() > 0) ? evdev_path.c_str() : NULL ); + joys.push_back(jslin); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + if(jslin) + { + delete jslin; + jslin = NULL; + } + } + } + } + + namelist = NULL; + if(inputdir_namelist) + { + FreeNamelist(inputdir_namelist, inputdir_namelist_num); + inputdir_namelist = NULL; + } + + if(basedir_namelist) + { + FreeNamelist(basedir_namelist, basedir_namelist_num); + basedir_namelist = NULL; + } +} + +JoystickDriver_Linux::~JoystickDriver_Linux() +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + delete joys[n]; + } +} + +unsigned JoystickDriver_Linux::NumJoysticks(void) +{ + return joys.size(); +} + +Joystick *JoystickDriver_Linux::GetJoystick(unsigned index) +{ + return joys[index]; +} + +void JoystickDriver_Linux::UpdateJoysticks(void) +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + joys[n]->UpdateInternal(); + } +} + +JoystickDriver *JoystickDriver_Linux_New(void) +{ + return new JoystickDriver_Linux(); +} diff --git a/libmednahawk/src/drivers/Joystick_Linux.h b/libmednahawk/src/drivers/Joystick_Linux.h new file mode 100644 index 0000000000..812f17ee6e --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_Linux.h @@ -0,0 +1,4 @@ +#ifndef __MDFN_DRIVERS_JOYSTICK_LINUX_H +#define __MDFN_DRIVERS_JOYSTICK_LINUX_H +JoystickDriver *JoystickDriver_Linux_New(void); +#endif diff --git a/libmednahawk/src/drivers/Joystick_SDL.cpp b/libmednahawk/src/drivers/Joystick_SDL.cpp new file mode 100644 index 0000000000..c832b063bd --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_SDL.cpp @@ -0,0 +1,188 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "input.h" +#include "Joystick.h" +#include "Joystick_SDL.h" +#include "../md5.h" + +#include + +class Joystick_SDL : public Joystick +{ + public: + + Joystick_SDL(unsigned index); + ~Joystick_SDL(); + + void UpdateInternal(void); + + virtual unsigned HatToButtonCompat(unsigned hat); + + private: + SDL_Joystick *sdl_joy; + unsigned sdl_num_axes; + unsigned sdl_num_hats; + unsigned sdl_num_balls; + unsigned sdl_num_buttons; +}; + +unsigned Joystick_SDL::HatToButtonCompat(unsigned hat) +{ + return(sdl_num_buttons + (hat * 4)); +} + +Joystick_SDL::Joystick_SDL(unsigned index) : sdl_joy(NULL) +{ + sdl_joy = SDL_JoystickOpen(index); + if(sdl_joy == NULL) + { + throw MDFN_Error(0, "SDL_JoystickOpen(%u) failed: %s", index, SDL_GetError()); + } + + strncpy(name, SDL_JoystickName(index), sizeof(name)); + name[sizeof(name) - 1] = 0; + + sdl_num_axes = SDL_JoystickNumAxes(sdl_joy); + sdl_num_balls = SDL_JoystickNumBalls(sdl_joy); + sdl_num_buttons = SDL_JoystickNumButtons(sdl_joy); + sdl_num_hats = SDL_JoystickNumHats(sdl_joy); + + CalcOldStyleID(sdl_num_axes, sdl_num_balls, sdl_num_hats, sdl_num_buttons); + + num_axes = sdl_num_axes; + num_rel_axes = sdl_num_balls * 2; + num_buttons = sdl_num_buttons + (sdl_num_hats * 4); + + axis_state.resize(num_axes); + rel_axis_state.resize(num_rel_axes); + button_state.resize(num_buttons); +} + +Joystick_SDL::~Joystick_SDL() +{ + if(sdl_joy) + { + SDL_JoystickClose(sdl_joy); + sdl_joy = NULL; + } +} + +void Joystick_SDL::UpdateInternal(void) +{ + for(unsigned i = 0; i < sdl_num_axes; i++) + { + axis_state[i] = SDL_JoystickGetAxis(sdl_joy, i); + if(axis_state[i] < -32767) + axis_state[i] = -32767; + } + + for(unsigned i = 0; i < sdl_num_balls; i++) + { + int dx, dy; + + SDL_JoystickGetBall(sdl_joy, i, &dx, &dy); + + rel_axis_state[i * 2 + 0] = dx; + rel_axis_state[i * 2 + 1] = dy; + } + + for(unsigned i = 0; i < sdl_num_buttons; i++) + { + button_state[i] = SDL_JoystickGetButton(sdl_joy, i); + } + + for(unsigned i = 0; i < sdl_num_hats; i++) + { + uint8 hs = SDL_JoystickGetHat(sdl_joy, i); + + button_state[sdl_num_buttons + (i * 4) + 0] = (bool)(hs & SDL_HAT_UP); + button_state[sdl_num_buttons + (i * 4) + 1] = (bool)(hs & SDL_HAT_RIGHT); + button_state[sdl_num_buttons + (i * 4) + 2] = (bool)(hs & SDL_HAT_DOWN); + button_state[sdl_num_buttons + (i * 4) + 3] = (bool)(hs & SDL_HAT_LEFT); + } +} + +class JoystickDriver_SDL : public JoystickDriver +{ + public: + + JoystickDriver_SDL(); + virtual ~JoystickDriver_SDL(); + + virtual unsigned NumJoysticks(); // Cached internally on JoystickDriver instantiation. + virtual Joystick *GetJoystick(unsigned index); + virtual void UpdateJoysticks(void); + + private: + std::vector joys; +}; + + +JoystickDriver_SDL::JoystickDriver_SDL() +{ + SDL_InitSubSystem(SDL_INIT_JOYSTICK); + + for(int n = 0; n < SDL_NumJoysticks(); n++) + { + try + { + Joystick_SDL *jsdl = new Joystick_SDL(n); + joys.push_back(jsdl); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + } + } +} + +JoystickDriver_SDL::~JoystickDriver_SDL() +{ + for(unsigned int n = 0; n < joys.size(); n++) + { + delete joys[n]; + } + + SDL_QuitSubSystem(SDL_INIT_JOYSTICK); +} + +unsigned JoystickDriver_SDL::NumJoysticks(void) +{ + return joys.size(); +} + +Joystick *JoystickDriver_SDL::GetJoystick(unsigned index) +{ + return joys[index]; +} + +void JoystickDriver_SDL::UpdateJoysticks(void) +{ + SDL_JoystickUpdate(); + + for(unsigned int n = 0; n < joys.size(); n++) + { + joys[n]->UpdateInternal(); + } +} + +JoystickDriver *JoystickDriver_SDL_New(void) +{ + return new JoystickDriver_SDL(); +} diff --git a/libmednahawk/src/drivers/Joystick_SDL.h b/libmednahawk/src/drivers/Joystick_SDL.h new file mode 100644 index 0000000000..889abd774c --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_SDL.h @@ -0,0 +1,4 @@ +#ifndef __MDFN_DRIVERS_JOYSTICK_SDL_H +#define __MDFN_DRIVERS_JOYSTICK_SDL_H +JoystickDriver *JoystickDriver_SDL_New(void); +#endif diff --git a/libmednahawk/src/drivers/Joystick_XInput.cpp b/libmednahawk/src/drivers/Joystick_XInput.cpp new file mode 100644 index 0000000000..e1348bf98d --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_XInput.cpp @@ -0,0 +1,263 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "input.h" +#include "Joystick.h" +#include "Joystick_XInput.h" + +#include +#include +#include + +#include +#include + +struct XInputFuncPointers +{ + void (WINAPI *p_XInputEnable)(BOOL); //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + DWORD (WINAPI *p_XInputSetState)(DWORD, XINPUT_VIBRATION*); //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + DWORD (WINAPI *p_XInputGetState)(DWORD, XINPUT_STATE*); //zero 29-oct-2012 - change location of WINAPI to make compile in msvc + DWORD (WINAPI *p_XInputGetCapabilities)(DWORD, DWORD, XINPUT_CAPABILITIES*); //zero 29-oct-2012 - change location of WINAPI to make compile in msvc +}; + +class Joystick_XInput : public Joystick +{ + public: + + Joystick_XInput(unsigned index, const XINPUT_CAPABILITIES &caps_in, const XInputFuncPointers* xfps_in); + ~Joystick_XInput(); + + virtual void SetRumble(uint8 weak_intensity, uint8 strong_intensity); + virtual bool IsAxisButton(unsigned axis); + void UpdateInternal(void); + + private: + const unsigned joy_index; + const XINPUT_CAPABILITIES caps; + const XInputFuncPointers *xfps; +}; + +Joystick_XInput::Joystick_XInput(unsigned index, const XINPUT_CAPABILITIES &caps_in, const XInputFuncPointers* xfps_in) : joy_index(index), caps(caps_in), xfps(xfps_in) +{ + num_buttons = sizeof(((XINPUT_GAMEPAD*)0)->wButtons) * 8; + num_axes = 6; + num_rel_axes = 0; + + button_state.resize(num_buttons); + axis_state.resize(num_axes); + + id = (caps.Type << 24) | (caps.SubType << 16); // Don't include the XInput index in the id, it'll just cause problems, especially when multiple different subtypes of controllers are connected. | (index << 8); + + snprintf(name, sizeof(name), "XInput Unknown Controller"); + if(caps.Type == XINPUT_DEVTYPE_GAMEPAD) + { + switch(caps.SubType) + { + default: break; + case XINPUT_DEVSUBTYPE_GAMEPAD: snprintf(name, sizeof(name), "XInput Gamepad"); break; + case XINPUT_DEVSUBTYPE_WHEEL: snprintf(name, sizeof(name), "XInput Wheel"); break; + case XINPUT_DEVSUBTYPE_ARCADE_STICK: snprintf(name, sizeof(name), "XInput Arcade Stick"); break; +#ifdef XINPUT_DEVSUBTYPE_FLIGHT_STICK + case XINPUT_DEVSUBTYPE_FLIGHT_STICK: snprintf(name, sizeof(name), "XInput Flight Stick"); break; +#endif + case XINPUT_DEVSUBTYPE_DANCE_PAD: snprintf(name, sizeof(name), "XInput Dance Pad"); break; + +#ifdef XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE + case XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE: +#endif +#ifdef XINPUT_DEVSUBTYPE_GUITAR_BASS + case XINPUT_DEVSUBTYPE_GUITAR_BASS: +#endif + case XINPUT_DEVSUBTYPE_GUITAR: snprintf(name, sizeof(name), "XInput Guitar"); break; + + case XINPUT_DEVSUBTYPE_DRUM_KIT: snprintf(name, sizeof(name), "XInput Drum Kit"); break; +#ifdef XINPUT_DEVSUBTYPE_ARCADE_PAD + case XINPUT_DEVSUBTYPE_ARCADE_PAD: snprintf(name, sizeof(name), "XInput Arcade Pad"); break; +#endif + } + } +} + + +Joystick_XInput::~Joystick_XInput() +{ + +} + +bool Joystick_XInput::IsAxisButton(unsigned axis) +{ + if(axis >= 4) + return(true); + + return(false); +} + +void Joystick_XInput::UpdateInternal(void) +{ + XINPUT_STATE joy_state; + memset(&joy_state, 0, sizeof(XINPUT_STATE)); + + xfps->p_XInputGetState(joy_index, &joy_state); + + for(unsigned b = 0; b < num_buttons; b++) + button_state[b] = (joy_state.Gamepad.wButtons >> b) & 1; + + axis_state[0] = std::max(-32767, joy_state.Gamepad.sThumbLX); + axis_state[1] = std::max(-32767, joy_state.Gamepad.sThumbLY); + axis_state[2] = std::max(-32767, joy_state.Gamepad.sThumbRX); + axis_state[3] = std::max(-32767, joy_state.Gamepad.sThumbRY); + + axis_state[4] = (((unsigned)joy_state.Gamepad.bLeftTrigger * 32767) + 127) / 255; + axis_state[5] = (((unsigned)joy_state.Gamepad.bRightTrigger * 32767) + 127) / 255; +} + +void Joystick_XInput::SetRumble(uint8 weak_intensity, uint8 strong_intensity) +{ + XINPUT_VIBRATION vib; + + memset(&vib, 0, sizeof(XINPUT_VIBRATION)); + vib.wLeftMotorSpeed = (((unsigned int)strong_intensity * 65535) + 127) / 255; + vib.wRightMotorSpeed = (((unsigned int)weak_intensity * 65535) + 127) / 255; + xfps->p_XInputSetState(joy_index, &vib); +} + +class JoystickDriver_XInput : public JoystickDriver +{ + public: + + JoystickDriver_XInput(); + virtual ~JoystickDriver_XInput(); + + virtual unsigned NumJoysticks(); // Cached internally on JoystickDriver instantiation. + virtual Joystick *GetJoystick(unsigned index); + virtual void UpdateJoysticks(void); + + private: + Joystick_XInput *joys[XUSER_MAX_COUNT]; + unsigned joy_count; + + + HMODULE dll_handle; + XInputFuncPointers xfps; +}; + +template +bool GetXIPA(HMODULE dll_handle, T& pf, const char *name) +{ + pf = (T)GetProcAddress(dll_handle, name); + return(pf != NULL); +} + +JoystickDriver_XInput::JoystickDriver_XInput() : joy_count(0), dll_handle(NULL) +{ + if((dll_handle = LoadLibrary("xinput1_3.dll")) == NULL) + { + if((dll_handle = LoadLibrary("xinput1_4.dll")) == NULL) + { + if((dll_handle = LoadLibrary("xinput9_1_0.dll")) == NULL) + { + return; + } + } + } + + // 9.1.0 supposedly lacks XInputEnable() + xfps.p_XInputEnable = NULL; + GetXIPA(dll_handle, xfps.p_XInputEnable, "XInputEnable"); + + if(!GetXIPA(dll_handle, xfps.p_XInputSetState, "XInputSetState") || + !GetXIPA(dll_handle, xfps.p_XInputGetState, "XInputGetState") || + !GetXIPA(dll_handle, xfps.p_XInputGetCapabilities, "XInputGetCapabilities")) + { + FreeLibrary(dll_handle); + return; + } + + if(xfps.p_XInputEnable) + xfps.p_XInputEnable(TRUE); + + for(unsigned i = 0; i < XUSER_MAX_COUNT; i++) + { + joys[i] = NULL; + try + { + XINPUT_CAPABILITIES caps; + + if(xfps.p_XInputGetCapabilities(i, XINPUT_FLAG_GAMEPAD, &caps) == ERROR_SUCCESS) + { + joys[joy_count] = new Joystick_XInput(i, caps, &xfps); + joy_count++; // joys[joy_count++] would not be exception-safe. + } + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + } + } +} + +JoystickDriver_XInput::~JoystickDriver_XInput() +{ + if(xfps.p_XInputEnable) + xfps.p_XInputEnable(FALSE); + + for(unsigned i = 0; i < joy_count; i++) + { + if(joys[i]) + { + delete joys[i]; + joys[i] = NULL; + } + } + + joy_count = 0; + if(dll_handle != NULL) + { + FreeLibrary(dll_handle); + dll_handle = NULL; + } +} + +unsigned JoystickDriver_XInput::NumJoysticks(void) +{ + return joy_count; +} + +Joystick *JoystickDriver_XInput::GetJoystick(unsigned index) +{ + return joys[index]; +} + +void JoystickDriver_XInput::UpdateJoysticks(void) +{ + for(unsigned i = 0; i < joy_count; i++) + joys[i]->UpdateInternal(); +} + +JoystickDriver *JoystickDriver_XInput_New(void) +{ + JoystickDriver_XInput* jdxi = new JoystickDriver_XInput(); + + if(!jdxi->NumJoysticks()) + { + delete jdxi; + jdxi = NULL; + } + + return(jdxi); +} diff --git a/libmednahawk/src/drivers/Joystick_XInput.h b/libmednahawk/src/drivers/Joystick_XInput.h new file mode 100644 index 0000000000..f5a99c18ab --- /dev/null +++ b/libmednahawk/src/drivers/Joystick_XInput.h @@ -0,0 +1,5 @@ +#ifndef __MDFN_DRIVERS_JOYSTICK_XINPUT_H +#define __MDFN_DRIVERS_JOYSTICK_XINPUT_H +// Returns NULL if XInput is not available, or if no attached XInput controllers were found. +JoystickDriver *JoystickDriver_XInput_New(void); +#endif diff --git a/libmednahawk/src/drivers/Keyboard.h b/libmednahawk/src/drivers/Keyboard.h new file mode 100644 index 0000000000..83895524a0 --- /dev/null +++ b/libmednahawk/src/drivers/Keyboard.h @@ -0,0 +1,89 @@ +// TODO WIP EXPERIMENTAL + +enum +{ + MDFNKEY_ESCAPE, + MDFNKEY_F1, + MDFNKEY_F2, + MDFNKEY_F3, + MDFNKEY_F4, + MDFNKEY_F5, + MDFNKEY_F6, + MDFNKEY_F7, + MDFNKEY_F8, + MDFNKEY_F9, + MDFNKEY_F10, + MDFNKEY_F11, + MDFNKEY_F12, + + MDFNKEY_PRINTSCREEN, + MDFNKEY_SCROLLLOCK, + MDFNKEY_PAUSE, + + MDFNKEY_GRAVE, + MDFNKEY_0, + MDFNKEY_1, + MDFNKEY_2, + MDFNKEY_3, + MDFNKEY_4, + MDFNKEY_5, + MDFNKEY_6, + MDFNKEY_7, + MDFNKEY_8, + MDFNKEY_9, + MDFNKEY_MINUS, + MDFNKEY_EQUAL, + MDFNKEY_BACKSPACE + + + MDFNKEY_INSERT, + MDFNKEY_HOME, + MDFNKEY_PAGEUP, + MDFNKEY_PAGEDOWN, + MDFNKEY_DELETE, + MDFNKEY_END, + + MDFNKEY_UP, + MDFNKEY_DOWN, + MDFNKEY_LEFT, + MDFNKEY_RIGHT +}; + +#define MDFNKEYMOD_LSHIFT 0x0001 +#define MDFNKEYMOD_RSHIFT 0x0002 +#define MDFNKEYMOD_LCTRL 0x0004 +#define MDFNKEYMOD_RCTRL 0x0008 +#define MDFNKEYMOD_LALT 0x0010 +#define MDFNKEYMOD_RALT 0x0020 + +struct MDFN_KeyEvent +{ + enum { PressEvent = 1, ReleaseEvent = 2 }; + uint8 type; + uint8 device; + uint8 keycode; // MDFNKEY_* (a select few scancodes translated into common key codes for default hotkey/input configuration) + uint16 modifier; // MDFNKEYMOD_* + uint16 scancode; // Rawish keyboard scancode. Used for custom input configurations. + uint32 unicode; // Unicode glyph(0 if not applicable), based on scancode, modifier, and MAYBE DRAGONS. For text entry. +}; + +class KeyboardManager +{ + public: + + KeyboardManager(); + ~KeyboardManager(); + + void Reset_BC_ChangeCheck(void); + bool Do_BC_ChangeCheck(ButtConfig *bc); + + void UpdateKeyboards(std::vector *event_queue = NULL); // Maybe use a fixed-size queue/FIFO instead to eliminate memory allocs? + + //unsigned GetIndexByUniqueID(uint64 unique_id); // Returns ~0U if joystick was not found. + //unsigned GetUniqueIDByIndex(unsigned index); + + private: + std::vector JoystickDrivers; + std::vector JoystickCache; + ButtConfig BCPending; +}; diff --git a/libmednahawk/src/drivers/Makefile.am b/libmednahawk/src/drivers/Makefile.am new file mode 100644 index 0000000000..5a7dc2b175 --- /dev/null +++ b/libmednahawk/src/drivers/Makefile.am @@ -0,0 +1,33 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ @SDL_CFLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) + +noinst_LIBRARIES = libmdfnsdl.a + +#libmdfnsdl_a_CXXFLAGS = @SDL_CFLAGS@ +libmdfnsdl_a_SOURCES = input.cpp opengl.cpp main.cpp ers.cpp sound.cpp video.cpp netplay.cpp input-config.cpp +libmdfnsdl_a_SOURCES += hqxx-common.cpp hq2x.cpp hq3x.cpp hq4x.cpp scale2x.c scale3x.c scalebit.c 2xSaI.cpp +libmdfnsdl_a_SOURCES += args.cpp nnx.cpp nongl.cpp overlay.cpp console.cpp cheat.cpp fps.cpp +libmdfnsdl_a_SOURCES += help.cpp video-state.cpp shader.cpp remote.cpp + +libmdfnsdl_a_SOURCES += Joystick.cpp Joystick_SDL.cpp + +if HAVE_LINUX_JOYSTICK +libmdfnsdl_a_SOURCES += Joystick_Linux.cpp +endif + +if HAVE_POSIX_SOCKETS +libmdfnsdl_a_SOURCES += NetClient_POSIX.cpp +endif + +if WIN32 +libmdfnsdl_a_SOURCES += Joystick_XInput.cpp +libmdfnsdl_a_SOURCES += Joystick_DX5.cpp +libmdfnsdl_a_SOURCES += NetClient_WS2.cpp +endif + +# libmdfnsdl_a_SOURCES += netconnection.cpp netconnection_sdlnet.cpp + +if WANT_DEBUGGER +libmdfnsdl_a_SOURCES += debugger.cpp gfxdebugger.cpp memdebugger.cpp logdebugger.cpp prompt.cpp +endif diff --git a/libmednahawk/src/drivers/Makefile.in b/libmednahawk/src/drivers/Makefile.in new file mode 100644 index 0000000000..23a767f70a --- /dev/null +++ b/libmednahawk/src/drivers/Makefile.in @@ -0,0 +1,718 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@HAVE_LINUX_JOYSTICK_TRUE@am__append_1 = Joystick_Linux.cpp +@HAVE_POSIX_SOCKETS_TRUE@am__append_2 = NetClient_POSIX.cpp +@WIN32_TRUE@am__append_3 = Joystick_XInput.cpp Joystick_DX5.cpp \ +@WIN32_TRUE@ NetClient_WS2.cpp + +# libmdfnsdl_a_SOURCES += netconnection.cpp netconnection_sdlnet.cpp +@WANT_DEBUGGER_TRUE@am__append_4 = debugger.cpp gfxdebugger.cpp memdebugger.cpp logdebugger.cpp prompt.cpp +subdir = src/drivers +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libmdfnsdl_a_AR = $(AR) $(ARFLAGS) +libmdfnsdl_a_LIBADD = +am__libmdfnsdl_a_SOURCES_DIST = input.cpp opengl.cpp main.cpp ers.cpp \ + sound.cpp video.cpp netplay.cpp input-config.cpp \ + hqxx-common.cpp hq2x.cpp hq3x.cpp hq4x.cpp scale2x.c scale3x.c \ + scalebit.c 2xSaI.cpp args.cpp nnx.cpp nongl.cpp overlay.cpp \ + console.cpp cheat.cpp fps.cpp help.cpp video-state.cpp \ + shader.cpp remote.cpp Joystick.cpp Joystick_SDL.cpp \ + Joystick_Linux.cpp NetClient_POSIX.cpp Joystick_XInput.cpp \ + Joystick_DX5.cpp NetClient_WS2.cpp debugger.cpp \ + gfxdebugger.cpp memdebugger.cpp logdebugger.cpp prompt.cpp +@HAVE_LINUX_JOYSTICK_TRUE@am__objects_1 = Joystick_Linux.$(OBJEXT) +@HAVE_POSIX_SOCKETS_TRUE@am__objects_2 = NetClient_POSIX.$(OBJEXT) +@WIN32_TRUE@am__objects_3 = Joystick_XInput.$(OBJEXT) \ +@WIN32_TRUE@ Joystick_DX5.$(OBJEXT) NetClient_WS2.$(OBJEXT) +@WANT_DEBUGGER_TRUE@am__objects_4 = debugger.$(OBJEXT) \ +@WANT_DEBUGGER_TRUE@ gfxdebugger.$(OBJEXT) \ +@WANT_DEBUGGER_TRUE@ memdebugger.$(OBJEXT) \ +@WANT_DEBUGGER_TRUE@ logdebugger.$(OBJEXT) prompt.$(OBJEXT) +am_libmdfnsdl_a_OBJECTS = input.$(OBJEXT) opengl.$(OBJEXT) \ + main.$(OBJEXT) ers.$(OBJEXT) sound.$(OBJEXT) video.$(OBJEXT) \ + netplay.$(OBJEXT) input-config.$(OBJEXT) hqxx-common.$(OBJEXT) \ + hq2x.$(OBJEXT) hq3x.$(OBJEXT) hq4x.$(OBJEXT) scale2x.$(OBJEXT) \ + scale3x.$(OBJEXT) scalebit.$(OBJEXT) 2xSaI.$(OBJEXT) \ + args.$(OBJEXT) nnx.$(OBJEXT) nongl.$(OBJEXT) overlay.$(OBJEXT) \ + console.$(OBJEXT) cheat.$(OBJEXT) fps.$(OBJEXT) help.$(OBJEXT) \ + video-state.$(OBJEXT) shader.$(OBJEXT) remote.$(OBJEXT) \ + Joystick.$(OBJEXT) Joystick_SDL.$(OBJEXT) $(am__objects_1) \ + $(am__objects_2) $(am__objects_3) $(am__objects_4) +libmdfnsdl_a_OBJECTS = $(am_libmdfnsdl_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libmdfnsdl_a_SOURCES) +DIST_SOURCES = $(am__libmdfnsdl_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ @SDL_CFLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) +noinst_LIBRARIES = libmdfnsdl.a + +#libmdfnsdl_a_CXXFLAGS = @SDL_CFLAGS@ +libmdfnsdl_a_SOURCES = input.cpp opengl.cpp main.cpp ers.cpp sound.cpp \ + video.cpp netplay.cpp input-config.cpp hqxx-common.cpp \ + hq2x.cpp hq3x.cpp hq4x.cpp scale2x.c scale3x.c scalebit.c \ + 2xSaI.cpp args.cpp nnx.cpp nongl.cpp overlay.cpp console.cpp \ + cheat.cpp fps.cpp help.cpp video-state.cpp shader.cpp \ + remote.cpp Joystick.cpp Joystick_SDL.cpp $(am__append_1) \ + $(am__append_2) $(am__append_3) $(am__append_4) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/drivers/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/drivers/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libmdfnsdl.a: $(libmdfnsdl_a_OBJECTS) $(libmdfnsdl_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmdfnsdl.a + $(AM_V_AR)$(libmdfnsdl_a_AR) libmdfnsdl.a $(libmdfnsdl_a_OBJECTS) $(libmdfnsdl_a_LIBADD) + $(AM_V_at)$(RANLIB) libmdfnsdl.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/2xSaI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_DX5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_Linux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_SDL.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_XInput.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetClient_POSIX.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetClient_WS2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/args.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cheat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debugger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfxdebugger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq2x.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq3x.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq4x.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hqxx-common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input-config.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logdebugger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memdebugger.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netplay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nnx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nongl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opengl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/overlay.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prompt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale2x.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale3x.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalebit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video-state.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/drivers/NetClient.h b/libmednahawk/src/drivers/NetClient.h new file mode 100644 index 0000000000..85a5a268a1 --- /dev/null +++ b/libmednahawk/src/drivers/NetClient.h @@ -0,0 +1,26 @@ +#ifndef __MDFN_DRIVERS_NETCLIENT_H +#define __MDFN_DRIVERS_NETCLIENT_H + +#include "../mednafen.h" + +class NetClient +{ + public: + + //NetClient(); //const char *host); + virtual ~NetClient() { }; + + virtual void Connect(const char *host, unsigned int port) = 0; + + virtual void Disconnect(void) = 0; + + virtual bool IsConnected(void) = 0; + + virtual bool CanSend(int32 timeout = 0) = 0; // Returns 'true' if at least 1 byte can be sent. + virtual bool CanReceive(int32 timeout = 0) = 0; // Returns 'true' if at least 1 byte is ready to be read. + + virtual uint32 Send(const void *data, uint32 len) = 0; // Non-blocking + virtual uint32 Receive(void *data, uint32 len) = 0; // Non-blocking +}; + +#endif diff --git a/libmednahawk/src/drivers/NetClient_BSD.cpp b/libmednahawk/src/drivers/NetClient_BSD.cpp new file mode 100644 index 0000000000..dfc642f145 --- /dev/null +++ b/libmednahawk/src/drivers/NetClient_BSD.cpp @@ -0,0 +1,81 @@ +// UNFINISHED + +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "NetClient_BSD.h" + +#include +#include + +NetClient_BSD::NetClient_BSD() +{ + fd = -1; +} + +~NetClient_BSD::NetClient_BSD() +{ + +} + +void NetClient_BSD::Connect(const char *host, unsigned int port) +{ + struct sockaddr addr; + + fd = socket(AF_INET, SOCK_STREAM, 0); + if(fd == -1) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), ene.StrError())); + } + + if(connect(fd, &addr, sizeof(struct sockaddr)) == -1) + { + ErrnoHolder ene(errno); + + throw(MDFN_Error(ene.Errno(), ene.StrError())); + } +} + +void Disconnect(void) +{ + + +} + +bool NetClient_BSD::IsConnected(void) +{ + if(fd == -1) + return(false); + + + return(true); +} + +uint32 NetClient_BSD::Send(const void *data, uint32 len, uint32 timeout = 0) +{ + + +} + +uint32 NetClient_BSD::Receive(void *data, uint32 len, uint32 timeout = 0) +{ + + +} + diff --git a/libmednahawk/src/drivers/NetClient_BSD.h b/libmednahawk/src/drivers/NetClient_BSD.h new file mode 100644 index 0000000000..919d465ed6 --- /dev/null +++ b/libmednahawk/src/drivers/NetClient_BSD.h @@ -0,0 +1,28 @@ +#ifndef __MDFN_DRIVERS_NETCLIENT_BSD_H +#define __MDFN_DRIVERS_NETCLIENT_BSD_H + +#include "NetClient.h" + +class NetClient_BSD : public NetClient +{ + public: + + NetClient_BSD(); //const char *host); + virtual ~NetClient_BSD(); + + virtual void Connect(const char *host, unsigned int port); + + virtual void Disconnect(void); + + virtual bool IsConnected(void); + + virtual uint32 Send(const void *data, uint32 len, uint32 timeout = 0); + + virtual uint32 Receive(void *data, uint32 len, uint32 timeout = 0); + + private: + + int fd; +} + +#endif diff --git a/libmednahawk/src/drivers/NetClient_POSIX.cpp b/libmednahawk/src/drivers/NetClient_POSIX.cpp new file mode 100644 index 0000000000..74da27eb8b --- /dev/null +++ b/libmednahawk/src/drivers/NetClient_POSIX.cpp @@ -0,0 +1,264 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "NetClient_POSIX.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef SOL_TCP + #define SOL_TCP IPPROTO_TCP +#endif + +NetClient_POSIX::NetClient_POSIX() : fd(-1) +{ + +} + +NetClient_POSIX::~NetClient_POSIX() +{ + Disconnect(); +} + +void NetClient_POSIX::Connect(const char *host, unsigned int port) +{ + { + struct addrinfo hints; + struct addrinfo *result; + int rv; + char service[64]; + + fd = -1; + + snprintf(service, sizeof(service), "%u", port); + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; +#ifdef AI_ADDRCONFIG + hints.ai_flags = AI_ADDRCONFIG; +#else + hints.ai_flags = 0; +#endif + hints.ai_protocol = 0; + + if((rv = getaddrinfo(host, service, &hints, &result)) != 0) + { + if(rv == EAI_SYSTEM) + { + ErrnoHolder ene(errno); + throw MDFN_Error(ene.Errno(), _("getaddrinfo() failed: %s"), ene.StrError()); + } + else + throw MDFN_Error(0, _("getaddrinfo() failed: %s"), gai_strerror(rv)); + } + + for(int tryit = 0; tryit < 2; tryit++) // Quick hackish way to "sort" IPv4 ahead of everything else. + { + for(struct addrinfo *rp = result; rp != NULL; rp = rp->ai_next) + { + //printf("%u\n", rp->ai_family); + if(tryit == 0 && rp->ai_family != AF_INET) + continue; + + fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + if(fd == -1) + { + ErrnoHolder ene(errno); + + freeaddrinfo(result); + + throw(MDFN_Error(ene.Errno(), _("socket() failed: %s"), ene.StrError())); + } + + if(connect(fd, rp->ai_addr, rp->ai_addrlen) == -1) + { + ErrnoHolder ene(errno); + + freeaddrinfo(result); + close(fd); + fd = -1; + + throw(MDFN_Error(ene.Errno(), _("connect() failed: %s"), ene.StrError())); + } + goto BreakOut; + } + } + + BreakOut: ; + + freeaddrinfo(result); + result = NULL; + + if(fd == -1) + { + throw MDFN_Error(0, "BOOGA BOOGA"); + } + } + + fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); + { + int tcpopt = 1; + if(setsockopt(fd, SOL_TCP, TCP_NODELAY, &tcpopt, sizeof(int)) == -1) + { + ErrnoHolder ene(errno); + + close(fd); + fd = -1; + + throw(MDFN_Error(ene.Errno(), _("setsockopt() failed: %s"), ene.StrError())); + } + } + + #ifdef SO_NOSIGPIPE + { + int opt = 1; + + if(setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof(opt)) == -1) + { + ErrnoHolder ene(errno); + + close(fd); + fd = -1; + + throw(MDFN_Error(ene.Errno(), _("setsockopt() failed: %s"), ene.StrError())); + } + } + #endif +} + +void NetClient_POSIX::Disconnect(void) +{ + if(fd != -1) + { + //shutdown(fd, SHUT_RDWR); // TODO: investigate usage scenarios + close(fd); + fd = -1; + } +} + +bool NetClient_POSIX::IsConnected(void) +{ + if(fd == -1) + return(false); + + + return(true); +} + +bool NetClient_POSIX::CanSend(int32 timeout) +{ + int rv; + fd_set wfds; + struct timeval tv; + + FD_ZERO(&wfds); + FD_SET(fd, &wfds); + + tv.tv_sec = timeout / (1000 * 1000); + tv.tv_usec = timeout % (1000 * 1000); + + rv = select(fd + 1, NULL, &wfds, NULL, &tv); + + if(rv == -1) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("select() failed: %s"), ene.StrError()); + } + + return (bool)rv; +} + +bool NetClient_POSIX::CanReceive(int32 timeout) +{ + int rv; + fd_set rfds; + struct timeval tv; + + FD_ZERO(&rfds); + FD_SET(fd, &rfds); + + tv.tv_sec = timeout / (1000 * 1000); + tv.tv_usec = timeout % (1000 * 1000); + + rv = select(fd + 1, &rfds, NULL, NULL, (timeout == -1) ? NULL : &tv); + + if(rv == -1) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("select() failed: %s"), ene.StrError()); + } + + return (bool)rv; +} + +uint32 NetClient_POSIX::Send(const void *data, uint32 len) +{ + ssize_t rv; + + #ifdef MSG_NOSIGNAL + rv = send(fd, data, len, MSG_NOSIGNAL); + #else + rv = send(fd, data, len, 0); + #endif + + if(rv < 0) + { + if(errno != EAGAIN && errno != EWOULDBLOCK && errno != EINTR) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("send() failed: %s"), ene.StrError()); + } + return(0); + } + + return rv; +} + +uint32 NetClient_POSIX::Receive(void *data, uint32 len) +{ + ssize_t rv; + + rv = recv(fd, data, len, 0); + + if(rv < 0) + { + if(errno != EAGAIN && errno != EWOULDBLOCK && errno != EINTR) + { + ErrnoHolder ene(errno); + + throw MDFN_Error(ene.Errno(), _("recv() failed: %s"), ene.StrError()); + } + return(0); + } + else if(rv == 0) + { + throw MDFN_Error(0, _("recv() failed: peer has closed connection")); + } + return rv; +} + diff --git a/libmednahawk/src/drivers/NetClient_POSIX.h b/libmednahawk/src/drivers/NetClient_POSIX.h new file mode 100644 index 0000000000..ae5029bcad --- /dev/null +++ b/libmednahawk/src/drivers/NetClient_POSIX.h @@ -0,0 +1,31 @@ +#ifndef __MDFN_DRIVERS_NETCLIENT_POSIX_H +#define __MDFN_DRIVERS_NETCLIENT_POSIX_H + +#include "NetClient.h" + +class NetClient_POSIX : public NetClient +{ + public: + + NetClient_POSIX(); //const char *host); + virtual ~NetClient_POSIX(); + + virtual void Connect(const char *host, unsigned int port); + + virtual void Disconnect(void); + + virtual bool IsConnected(void); + + virtual bool CanSend(int32 timeout = 0); + virtual bool CanReceive(int32 timeout = 0); + + virtual uint32 Send(const void *data, uint32 len); + + virtual uint32 Receive(void *data, uint32 len); + + private: + + int fd; +}; + +#endif diff --git a/libmednahawk/src/drivers/NetClient_WS2.cpp b/libmednahawk/src/drivers/NetClient_WS2.cpp new file mode 100644 index 0000000000..f31b4501a6 --- /dev/null +++ b/libmednahawk/src/drivers/NetClient_WS2.cpp @@ -0,0 +1,303 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "NetClient_WS2.h" + +#include +#include +#include +#include +#include +#include + +#ifndef AI_ADDRCONFIG + #define AI_ADDRCONFIG 0x0400 +#endif + +#include + +static std::string ErrCodeToString(int errcode) +{ + std::string ret; + void *msg_buffer; + unsigned int tchar_count; + + tchar_count = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, errcode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&msg_buffer, 0, NULL); + + if(tchar_count == 0) + { + return std::string("Error Error"); + } + + //{ + // TCHAR trim_chars[] = TEXT("\r\n\t "); + // + // StrTrim((PTSTR)msg_buffer, trim_chars); + //} + + #ifdef UNICODE + #warning "UNICODE TODO" + ret = ""; + #else + ret = std::string((char *)msg_buffer); + #endif + LocalFree(msg_buffer); + + return(ret); +} + +NetClient_WS2::NetClient_WS2() +{ + WORD requested_version; + WSADATA wsa_data; + + requested_version = MAKEWORD(2, 2); + + if(WSAStartup(requested_version, &wsa_data) != 0) + { + int errcode = WSAGetLastError(); + + throw MDFN_Error(0, _("WSAStartup() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + + if(wsa_data.wVersion < 0x202) + { + WSACleanup(); + throw MDFN_Error(0, _("Suitable version of Winsock not found.")); + } + + sd = new SOCKET; + *(SOCKET*)sd = INVALID_SOCKET; +} + +NetClient_WS2::~NetClient_WS2() +{ + Disconnect(); + delete (SOCKET*)sd; + + WSACleanup(); +} + +void NetClient_WS2::Connect(const char *host, unsigned int port) +{ + { + struct addrinfo hints; + struct addrinfo *result; + int rv; + char service[64]; + + *(SOCKET*)sd = INVALID_SOCKET; + + snprintf(service, sizeof(service), "%u", port); + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_ADDRCONFIG; + hints.ai_protocol = 0; + + if((rv = getaddrinfo(host, service, &hints, &result)) != 0) + { + int errcode = WSAGetLastError(); + + throw MDFN_Error(0, _("getaddrinfo() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + + for(int tryit = 0; tryit < 2; tryit++) // Quick hackish way to "sort" IPv4 ahead of everything else. + { + for(struct addrinfo *rp = result; rp != NULL; rp = rp->ai_next) + { + //printf("%u\n", rp->ai_family); + if(tryit == 0 && rp->ai_family != AF_INET) + continue; + + *(SOCKET *)sd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + if(*(SOCKET *)sd == INVALID_SOCKET) + { + int errcode = WSAGetLastError(); + + freeaddrinfo(result); + + throw MDFN_Error(0, _("socket() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + + if(connect(*(SOCKET*)sd, rp->ai_addr, rp->ai_addrlen) != 0) + { + int errcode = WSAGetLastError(); + + freeaddrinfo(result); + + closesocket(*(SOCKET *)sd); + *(SOCKET *)sd = INVALID_SOCKET; + + throw MDFN_Error(0, _("connect() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + goto BreakOut; + } + } + + BreakOut: ; + + freeaddrinfo(result); + result = NULL; + + if(*(SOCKET *)sd == INVALID_SOCKET) + { + throw MDFN_Error(0, "BOOGA BOOGA"); + } + } + + { + BOOL tcpopt = 1; + if(setsockopt(*(SOCKET*)sd, IPPROTO_TCP, TCP_NODELAY, (char*)&tcpopt, sizeof(BOOL)) == SOCKET_ERROR) + { + int errcode = WSAGetLastError(); + + closesocket(*(SOCKET *)sd); + *(SOCKET *)sd = INVALID_SOCKET; + + throw MDFN_Error(0, _("setsockopt() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + } + + { + unsigned long nbv = 1; + DWORD numbytesout = 0; + + if(WSAIoctl(*(SOCKET*)sd, FIONBIO, &nbv, sizeof(nbv), NULL, 0, &numbytesout, NULL, NULL) == SOCKET_ERROR) + { + int errcode = WSAGetLastError(); + + closesocket(*(SOCKET *)sd); + *(SOCKET *)sd = INVALID_SOCKET; + + throw MDFN_Error(0, _("WSAIoctl() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + } +} + +void NetClient_WS2::Disconnect(void) +{ + if(*(SOCKET *)sd != INVALID_SOCKET) + { + //shutdown(*(SOCKET*)sd, SHUT_RDWR); // TODO: investigate usage scenarios + closesocket(*(SOCKET *)sd); + *(SOCKET *)sd = INVALID_SOCKET; + } +} + +bool NetClient_WS2::IsConnected(void) +{ + if(*(SOCKET *)sd == INVALID_SOCKET) + return(false); + + return(true); +} + +bool NetClient_WS2::CanSend(int32 timeout) +{ + int rv; + fd_set wfds; + struct timeval tv; + + FD_ZERO(&wfds); + FD_SET(*(SOCKET*)sd, &wfds); + + tv.tv_sec = timeout / (1000 * 1000); + tv.tv_usec = timeout % (1000 * 1000); + + rv = select(-1, NULL, &wfds, NULL, &tv); + + if(rv == -1) + { + int errcode = WSAGetLastError(); + + throw MDFN_Error(0, _("select() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + + return (bool)rv; +} + +bool NetClient_WS2::CanReceive(int32 timeout) +{ + int rv; + fd_set rfds; + struct timeval tv; + + FD_ZERO(&rfds); + FD_SET(*(SOCKET*)sd, &rfds); + + tv.tv_sec = timeout / (1000 * 1000); + tv.tv_usec = timeout % (1000 * 1000); + + rv = select(-1, &rfds, NULL, NULL, (timeout == -1) ? NULL : &tv); + + if(rv == -1) + { + int errcode = WSAGetLastError(); + + throw MDFN_Error(0, _("select() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + + return (bool)rv; +} + +uint32 NetClient_WS2::Send(const void *data, uint32 len) +{ + int rv; + + rv = send(*(SOCKET*)sd, (const char *)data, len, 0); + + if(rv < 0) + { + int errcode = WSAGetLastError(); + if(errcode != WSAEWOULDBLOCK && errcode != WSAEINTR) + { + throw MDFN_Error(0, _("send() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + return(0); + } + + return rv; +} + +uint32 NetClient_WS2::Receive(void *data, uint32 len) +{ + int rv; + + rv = recv(*(SOCKET*)sd, (char *)data, len, 0); + + if(rv < 0) + { + int errcode = WSAGetLastError(); + if(errcode != WSAEWOULDBLOCK && errcode != WSAEINTR) + { + throw MDFN_Error(0, _("recv() failed: %d %s"), errcode, ErrCodeToString(errcode).c_str()); + } + return(0); + } + else if(rv == 0) + { + throw MDFN_Error(0, _("recv() failed: peer has closed connection")); + } + + return rv; +} + diff --git a/libmednahawk/src/drivers/NetClient_WS2.h b/libmednahawk/src/drivers/NetClient_WS2.h new file mode 100644 index 0000000000..7fb697d980 --- /dev/null +++ b/libmednahawk/src/drivers/NetClient_WS2.h @@ -0,0 +1,31 @@ +#ifndef __MDFN_DRIVERS_NETCLIENT_WS2_H +#define __MDFN_DRIVERS_NETCLIENT_WS2_H + +#include "NetClient.h" + +class NetClient_WS2 : public NetClient +{ + public: + + NetClient_WS2(); + virtual ~NetClient_WS2(); + + virtual void Connect(const char *host, unsigned int port); + + virtual void Disconnect(void); + + virtual bool IsConnected(void); + + virtual bool CanSend(int32 timeout = 0); + virtual bool CanReceive(int32 timeout = 0); + + virtual uint32 Send(const void *data, uint32 len); + + virtual uint32 Receive(void *data, uint32 len); + + private: + + void *sd; +}; + +#endif diff --git a/libmednahawk/src/drivers/args.cpp b/libmednahawk/src/drivers/args.cpp new file mode 100644 index 0000000000..46ca9d43a8 --- /dev/null +++ b/libmednahawk/src/drivers/args.cpp @@ -0,0 +1,186 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/****************************************************************/ +/* Mednafen */ +/* */ +/* This file contains code for parsing command-line */ +/* options. */ +/* */ +/****************************************************************/ + +#include "../types.h" + +#include +#include +#include + +#include "args.h" + +static int ParseEA(int x, int argc, char *argv[], ARGPSTRUCT *argsps) +{ + int y=0; + int ret = 0; + + do + { + if(!argsps[y].name) + { + int tmpie = ParseEA(x,argc,argv,(ARGPSTRUCT*)argsps[y].var); + if(-1 == tmpie) return(-1); + ret += tmpie; + y++; + if(ret) + return(ret); + continue; + } + if((argv[x][0] == '-' && argv[x][1] == '-' && !strcmp(argv[x]+2,argsps[y].name)) || + (argv[x][0] == '-' && !strcmp(argv[x]+1, argsps[y].name)) ) // A match. + { + ret++; + + if(argsps[y].subs) + { + if((x+1)>=argc) + // || argv[x+1][0] == '-') // Breaks negative numbers! + { + printf("Argument %s requires a parameter!\n", argsps[y].name); + return(-1); + } + + if(argsps[y].substype&0x2000) // Function + { + int funcretval = ((int (*)(const char *, const char *))argsps[y].subs)(argsps[y].name, argv[x+1]); + if(!funcretval) + { + //printf("Invalid parameter \"%s\" to argument \"%s\"!\n", argv[x+1], argsps[y].name); + return(-1); + } + } + + ret++; + + if(argsps[y].substype&0x8000) // Bool + { + *(int *)argsps[y].subs&=~(argsps[y].substype&(~0x8000)); + *(int *)argsps[y].subs|=atoi(argv[x+1])?(argsps[y].substype&(~0x8000)):0; + } + else // Value + switch(argsps[y].substype&(~0x4000)) + { + case SUBSTYPE_INTEGER: + { + char *endptr = NULL; + *(int *)argsps[y].subs = strtol(argv[x+1], &endptr, 10); + if(endptr == argv[x+1] || endptr[0] != 0) + { + printf("Argument %s requires a valid integer, not: %s\n", argv[x], argv[x+1]); + return(-1); + } + } + break; + + case SUBSTYPE_DOUBLE: + { + char *endptr = NULL; + *(double *)argsps[y].subs = strtod(argv[x+1], &endptr); + if(endptr == argv[x+1] || endptr[0] != 0) + { + printf("Argument %s requires a valid decimal number, not: %s\n", argv[x], argv[x+1]); + return(-1); + } + } + break; + + case SUBSTYPE_STRING: // String + if(argsps[y].substype&0x4000) + { + if(*(char **)argsps[y].subs) + free(*(char **)argsps[y].subs); + if(!( *(char **)argsps[y].subs=(char*)malloc(strlen(argv[x+1])+1) )) + break; + } + strcpy(*(char **)argsps[y].subs,argv[x+1]); + break; + } + } + if(argsps[y].var) + *argsps[y].var=1; + return(ret); + } + y++; + } while(argsps[y].var || argsps[y].subs); + + return(0); +} + +int ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps, char **first_not) +{ + int x = 0; + + while(xvar || argsps->subs) + { + if(!argsps->name) + { + if(show_linked) + ShowArgumentsHelpSub((ARGPSTRUCT *)argsps->var, show_linked); + } + else + { + if(argsps->subs) + printf(" -%s \n\t%s\n", argsps->name, argsps->description); + else + printf(" -%s\n\t%s\n", argsps->name, argsps->description); + } + argsps++; + } + +} + +int ShowArgumentsHelp(ARGPSTRUCT *argsps, bool show_linked) +{ + printf("\nOptions:\n\n"); + + ShowArgumentsHelpSub(argsps, show_linked); + + return(1); +} diff --git a/libmednahawk/src/drivers/args.h b/libmednahawk/src/drivers/args.h new file mode 100644 index 0000000000..14a777ae70 --- /dev/null +++ b/libmednahawk/src/drivers/args.h @@ -0,0 +1,27 @@ +#ifndef _DRIVERS_ARGH + +enum +{ + SUBSTYPE_INTEGER = 0, + SUBSTYPE_STRING = 1, + SUBSTYPE_DOUBLE = 2, + + SUBSTYPE_FUNCTION = 0x2000, + + SUBSTYPE_STRING_ALLOC = 0x4001, +}; + +typedef struct { + const char *name; + const char *description; + int *var; + + void *subs; + int substype; +} ARGPSTRUCT; + +int ParseArguments(int argc, char *argv[], ARGPSTRUCT *argsps, char **); +int ShowArgumentsHelp(ARGPSTRUCT *argsps, bool show_linked = true); + +#define _DRIVERS_ARGH +#endif diff --git a/libmednahawk/src/drivers/cheat.cpp b/libmednahawk/src/drivers/cheat.cpp new file mode 100644 index 0000000000..2a315be6b2 --- /dev/null +++ b/libmednahawk/src/drivers/cheat.cpp @@ -0,0 +1,749 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include +#include +#include "console.h" + + +static SDL_Thread *CheatThread = NULL; +static SDL_mutex *CheatMutex = NULL; +static bool isactive = 0; +static char * volatile pending_text = NULL; + +class CheatConsoleT : public MDFNConsole +{ + public: + + CheatConsoleT(void) + { + SetShellStyle(1); + SetSmallFont(0); + } + + virtual bool TextHook(UTF8 *text) + { + SDL_mutexP(CheatMutex); + pending_text = strdup((char *)text); + SDL_mutexV(CheatMutex); + return(1); + } + void Draw(MDFN_Surface *surface, const MDFN_Rect *src_rect) + { + SDL_mutexP(CheatMutex); + MDFNConsole::Draw(surface, src_rect); + SDL_mutexV(CheatMutex); + } + void WriteLine(UTF8 *text) + { + SDL_mutexP(CheatMutex); + MDFNConsole::WriteLine(text); + SDL_mutexV(CheatMutex); + } + void AppendLastLine(UTF8 *text) + { + SDL_mutexP(CheatMutex); + MDFNConsole::AppendLastLine(text); + SDL_mutexV(CheatMutex); + } +}; + +static CheatConsoleT CheatConsole; + + +static void CHEAT_printf(const char *format, ...) +{ + char temp[2048]; + + va_list ap; + + va_start(ap, format); + trio_vsnprintf(temp, 2048, format, ap); + + CheatConsole.WriteLine((UTF8*) temp); + //MDFND_PrintError(temp); + + va_end(ap); +} + +static void CHEAT_puts(const char *string) +{ + CheatConsole.WriteLine((UTF8 *)string); +} + +static void CHEAT_gets(char *s, int size) +{ + SDL_mutexP(CheatMutex); + while(!pending_text) + { + SDL_mutexV(CheatMutex); + SDL_Delay(5); + SDL_mutexP(CheatMutex); + } + strncpy(s, pending_text, size - 1); + s[size - 1] = 0; + free(pending_text); + pending_text = NULL; + CheatConsole.AppendLastLine((UTF8*)s); + SDL_mutexV(CheatMutex); +} + +static char CHEAT_getchar(char def) +{ + uint8 buf[2]; + + CHEAT_gets((char *)buf, 2); + if(buf[0] == 0) + return(def); + return(buf[0]); +} + +static void GetString(char *s, int max) +{ + CHEAT_gets(s,max); +} + +static uint64 GetUI(uint64 def) +{ + char buf[64]; + + memset(buf, 0, sizeof(buf)); + + CHEAT_gets(buf,64); + + if(!buf[0]) + return(def); + + if(buf[0] == '$') + trio_sscanf(buf + 1, "%llx", &def); // $0FCE + else if(buf[0] == '0' && tolower(buf[1]) == 'x') + trio_sscanf(buf + 2, "%llx", &def); // 0x0FCE + else if(tolower(buf[strlen(buf) - 1]) == 'h') // 0FCEh + trio_sscanf(buf, "%llx", &def); + else + trio_sscanf(buf,"%lld", &def); + + return def; +} + + +static int GetYN(int def) +{ + char buf[32]; + CHEAT_printf("(Y/N)[%s]: ",def?"Y":"N"); + CHEAT_gets(buf,32); + if(buf[0]=='y' || buf[0]=='Y') + return(1); + if(buf[0]=='n' || buf[0]=='N') + return(0); + return(def); +} + +/* +** Begin list code. +** +*/ +static int listcount; +static int listids[10]; +static int listsel; +static int mordoe; + +void BeginListShow(void) +{ + listcount=0; + listsel=-1; + mordoe=0; +} + +/* Hmm =0 for in list choices, hmm=1 for end of list choices. */ +/* Return equals 0 to continue, -1 to stop, otherwise a number. */ +int ListChoice(int hmm) +{ + char buf[32]; + + if(!hmm) + { + int num=0; + + tryagain: + CHEAT_printf(" <'Enter' to continue, (S)top, or #> "); + CHEAT_gets(buf,32); + + if(buf[0]=='s' || buf[0]=='S') return(-1); + if(!buf[0]) return(0); + if(!trio_sscanf(buf,"%d",&num)) + return(0); + if(num<1) goto tryagain; + return(num); + } + else + { + int num=0; + + tryagain2: + CHEAT_printf(" <'Enter' to make no selection, or #> "); + CHEAT_gets(buf,32); + if(!buf[0]) return(0); + if(!trio_sscanf(buf,"%d",&num)) + return(0); + if(num<1) goto tryagain2; + return(num); + } +} + +int EndListShow(void) +{ + if(mordoe) + { + int r=ListChoice(1); + if(r>0 && r<=listcount) + listsel=listids[r-1]; + } + return(listsel); +} + +/* Returns 0 to stop listing, 1 to continue. */ +int AddToList(char *text, uint32 id) +{ + if(listcount==10) + { + int t=ListChoice(0); + mordoe=0; + + if(t==-1) return(0); // Stop listing. + else if(t>0 && t<11) + { + listsel=listids[t-1]; + return(0); + } + listcount=0; + } + mordoe=1; + listids[listcount]=id; + CHEAT_printf("%2d) %s",listcount+1,text); + listcount++; + return(1); +} + +/* +** +** End list code. +**/ + +typedef struct MENU { + const char *text; + void (*func_action)(void); + struct MENU *menu_action; +} MENU; + +static void SetOC(void) +{ + MDFNI_CheatSearchSetCurrentAsOriginal(); +} + +static void UnhideEx(void) +{ + MDFNI_CheatSearchShowExcluded(); +} + +static void ToggleCheat(int num) +{ + CHEAT_printf("Cheat %d %sabled.",1+num, + MDFNI_ToggleCheat(num)?"en":"dis"); +} + +static void ModifyCheat(int num) +{ + char *name; + char buf[256]; + uint32 A; + uint64 V; + uint64 compare; + char type; + int status; + unsigned int bytelen; + bool bigendian; + + MDFNI_GetCheat(num, &name, &A, &V, &compare, &status, &type, &bytelen, &bigendian); + + CHEAT_printf("Name [%s]: ",name); + GetString(buf,256); + + /* This obviously doesn't allow for cheats with no names. Bah. Who wants + nameless cheats anyway... + */ + + if(buf[0]) + name=buf; // Change name when MDFNI_SetCheat() is called. + else + name=0; // Don't change name when MDFNI_SetCheat() is called. + + CHEAT_printf("Address [$%08x]: ",(unsigned int)A); + A=GetUI(A); + + CHEAT_printf("Byte length [%d]: ", bytelen); + bytelen = GetUI(bytelen); + + if(bytelen > 1) + { + CHEAT_printf("Big endian? [%c]: ", bigendian ? 'Y' : 'N'); + bigendian = GetYN(bigendian); + } + else + bigendian = 0; + + CHEAT_printf("Value [%03lld]: ",(unsigned int)V); + V=GetUI(V); + + + do + { + CHEAT_printf("Type('R'=replace,'S'=Read Substitute(or 'C' with compare)) [%c]: ",type); + type = toupper(CHEAT_getchar(type)); + } while(type != 'R' && type !='S' && type !='C'); + + if(type == 'C') + { + CHEAT_printf("Compare [%03lld]: ",compare); + compare = GetUI(compare); + } + + CHEAT_printf("Enable? "); + status = GetYN(status); + + MDFNI_SetCheat(num, name, A, V, compare, status, type, bytelen, bigendian); +} + +bool MDFNI_DecodeGBGG(const char *str, uint32 *a, uint8 *v, uint8 *c, char *type); +static void AddCheatGGPAR(int which) +{ + uint32 A; + uint8 V; + uint8 C; + char type; + char name[256],code[256]; + + CHEAT_printf("Name: "); + GetString(name,256); + + CHEAT_printf("Code: "); + GetString(code,256); + + CHEAT_printf("Add cheat \"%s\" for code \"%s\"?",name,code); + if(GetYN(0)) + { + if(which) + { + if(!MDFNI_DecodePAR(code,&A,&V,&C,&type)) + { + CHEAT_puts("Invalid Game Genie code."); + return; + } + } + else + { + if(!strcmp(CurGame->shortname, "gb")) + { + if(!MDFNI_DecodeGBGG(code, &A, &V, &C, &type)) + { + CHEAT_puts("Invalid Game Genie code."); + return; + } + } + else + { + if(!MDFNI_DecodeGG(code,&A,&V,&C, &type)) + { + CHEAT_puts("Invalid Game Genie code."); + return; + } + } + } + + if(MDFNI_AddCheat(name,A,V,C,type, 1, 0)) + CHEAT_puts("Cheat added."); + else + CHEAT_puts("Error adding cheat."); + } +} + +static void AddCheatGG(void) +{ + AddCheatGGPAR(0); +} + +static void AddCheatPAR(void) +{ + AddCheatGGPAR(1); +} + +static void AddCheatParam(uint32 A, uint64 V, unsigned int bytelen, bool bigendian) +{ + char name[256]; + + CHEAT_printf("Name: "); + GetString(name,256); + + CHEAT_printf("Address [$%08x]: ", A); + A=GetUI(A); + + CHEAT_printf("Byte length [%d]: ", bytelen); + bytelen = GetUI(bytelen); + + if(bytelen > 1) + { + CHEAT_printf("Big endian? [%c]: ", bigendian ? 'Y' : 'N'); + bigendian = GetYN(bigendian); + } + else + bigendian = 0; + + CHEAT_printf("Value [%llu]: ", V); + V=GetUI(V); + + CHEAT_printf("Add cheat \"%s\" for address $%08x with value %llu?",name,(unsigned int)A,(unsigned long long)V); + if(GetYN(0)) + { + if(MDFNI_AddCheat(name,A,V,0, 'R', bytelen, bigendian)) + CHEAT_puts("Cheat added."); + else + CHEAT_puts("Error adding cheat."); + } +} + +static void AddCheat(void) +{ + AddCheatParam(0, 0, 1, 0); +} + +static int lid; +static int clistcallb(char *name, uint32 a, uint64 v, uint64 compare, int s, char type, unsigned int length, bool bigendian, void *data) +{ + char tmp[512]; + int ret; + + if(type == 'C') + trio_snprintf(tmp, 512, "%s $%08x:%03lld:%03lld - %s",s?"*":" ",a,v,compare,name); + else + trio_snprintf(tmp, 512, "%s $%08x:%03lld - %s",s?"*":" ",a,v,name); + + if(type != 'R') + tmp[2]='S'; + + ret = AddToList(tmp,lid); + lid++; + return(ret); +} + +static void ListCheats(void) +{ + int which; + lid=0; + + BeginListShow(); + MDFNI_ListCheats(clistcallb,0); + which=EndListShow(); + if(which>=0) + { + char tmp[32]; + CHEAT_printf(" <(T)oggle status, (M)odify, or (D)elete this cheat.> "); + CHEAT_gets(tmp,32); + switch(tolower(tmp[0])) + { + case 't':ToggleCheat(which); + break; + case 'd':if(!MDFNI_DelCheat(which)) + CHEAT_puts("Error deleting cheat!"); + else + CHEAT_puts("Cheat has been deleted."); + break; + case 'm':ModifyCheat(which); + break; + } + } +} + +static void ResetSearch(void) +{ + MDFNI_CheatSearchBegin(); + CHEAT_puts("Done."); +} + +static unsigned int searchbytelen = 1; +static bool searchbigendian = 0; + +static int srescallb(uint32 a, uint64 last, uint64 current, void *data) +{ + char tmp[256]; + + if(searchbytelen == 8) + trio_snprintf(tmp, 256, "$%08x:%020llu:%020llu",(unsigned int)a,(unsigned long long)last,(unsigned long long)current); + if(searchbytelen == 7) + trio_snprintf(tmp, 256, "$%08x:%017llu:%017llu",(unsigned int)a,(unsigned long long)last,(unsigned long long)current); + if(searchbytelen == 6) + trio_snprintf(tmp, 256, "$%08x:%015llu:%015llu",(unsigned int)a,(unsigned long long)last,(unsigned long long)current); + if(searchbytelen == 5) + trio_snprintf(tmp, 256, "$%08x:%013llu:%013llu",(unsigned int)a,(unsigned long long)last,(unsigned long long)current); + if(searchbytelen == 4) + trio_snprintf(tmp, 256, "$%08x:%10u:%10u",(unsigned int)a,(unsigned int)last,(unsigned int)current); + else if(searchbytelen == 3) + trio_snprintf(tmp, 256, "$%08x:%08u:%08u",(unsigned int)a,(unsigned int)last,(unsigned int)current); + else if(searchbytelen == 2) + trio_snprintf(tmp, 256, "$%08x:%05u:%05u",(unsigned int)a,(unsigned int)last,(unsigned int)current); + else if(searchbytelen == 1) + trio_snprintf(tmp, 256, "$%08x:%03u:%03u",(unsigned int)a,(unsigned int)last,(unsigned int)current); + else // > 4 + trio_snprintf(tmp, 256, "$%08x:%020llu:%020llu",(unsigned int)a,(unsigned long long)last,(unsigned long long)current); + return(AddToList(tmp,a)); +} + +static void ShowRes(void) +{ + int n=MDFNI_CheatSearchGetCount(); + CHEAT_printf(" %d results:",n); + if(n) + { + int which; + BeginListShow(); + MDFNI_CheatSearchGet(srescallb, 0); + which=EndListShow(); + if(which>=0) + AddCheatParam(which,0, searchbytelen, searchbigendian); + } +} + +static int ShowShortList(const char *moe[], unsigned int n, int def) +{ + unsigned int x; + int c; + unsigned int baa; + char tmp[256]; + + red: + for(x=0;x ",def+1); + CHEAT_gets(tmp,256); + if(!tmp[0]) + return def; + c=tolower(tmp[0]); + baa=c-'1'; + + if(baa 1) + { + CHEAT_printf("Big endian? [%c]: ", searchbigendian ? 'Y' : 'N'); + searchbigendian = GetYN(searchbigendian); + } + else + searchbigendian = 0; + + MDFNI_CheatSearchEnd(method, v1, v2, searchbytelen, searchbigendian); + CHEAT_puts("Search completed."); +} + +static void DoMenu(MENU *men, bool topmost = 0) +{ + bool MenuLoop = TRUE; + + while(MenuLoop) + { + int x = 0; + + CHEAT_puts(""); + + while(men[x].text) + { + CHEAT_printf("%d) %s",x+1,men[x].text); + x++; + } + + CHEAT_puts("D) Display Menu"); + + if(!topmost) + CHEAT_puts("X) Return to Previous"); + + bool CommandLoop = TRUE; + + while(CommandLoop) + { + char buf[32]; + int c, c_numeral; + + CHEAT_printf("Command> "); + CHEAT_gets(buf,32); + + c = tolower(buf[0]); + if(c == 0) + continue; + else if(c == 'd') + { + CommandLoop = FALSE; + } + else if(c == 'x' && !topmost) + { + CommandLoop = FALSE; + MenuLoop = FALSE; + } + else if(trio_sscanf(buf, "%d", &c_numeral) == 1 && c_numeral <= x && c_numeral >= 1) + { + assert(!(men[c_numeral - 1].func_action && men[c_numeral - 1].menu_action)); + + if(men[c_numeral - 1].func_action) + men[c_numeral - 1].func_action(); + else if(men[c_numeral - 1].menu_action) + DoMenu(men[c_numeral - 1].menu_action); /* Mmm...recursivey goodness. */ + + CommandLoop = FALSE; + } + else + { + CHEAT_puts("Invalid command."); + } + } // while(CommandLoop) + } // while(MenuLoop) +} + +int CheatLoop(void *arg) +{ + MENU NewCheatsMenuNES[] = + { + { "Add Cheat", AddCheat, NULL }, + { "Reset Search", ResetSearch, NULL }, + { "Do Search", DoSearch, NULL }, + { "Set Original to Current", SetOC, NULL }, + { "Unhide Excluded", UnhideEx, NULL }, + { "Show Results", ShowRes, NULL }, + { "Add Game Genie Cheat", AddCheatGG, NULL }, + { "Add PAR Cheat", AddCheatPAR, NULL }, + { NULL } + }; + + MENU NewCheatsMenuGB[] = + { + { "Add Cheat", AddCheat, NULL }, + { "Reset Search", ResetSearch, NULL }, + { "Do Search", DoSearch, NULL }, + { "Set Original to Current", SetOC, NULL }, + { "Unhide Excluded", UnhideEx, NULL }, + { "Show Results", ShowRes, NULL }, + { "Add Game Genie Cheat", AddCheatGG, NULL }, + { NULL } + }; + + MENU NewCheatsMenu[] = + { + { "Add Cheat", AddCheat, NULL }, + { "Reset Search", ResetSearch, NULL }, + { "Do Search", DoSearch, NULL }, + { "Set Original to Current", SetOC, NULL }, + { "Unhide Excluded", UnhideEx, NULL }, + { "Show Results", ShowRes, NULL }, + { NULL } + }; + + MENU *thenewcm = NewCheatsMenu; + + if(!strcmp(CurGame->shortname, "nes")) + thenewcm = NewCheatsMenuNES; + else if(!strcmp(CurGame->shortname, "gb")) + thenewcm = NewCheatsMenuGB; + + MENU MainMenu[] = { + { "List Cheats", ListCheats, NULL }, + { "New Cheats...", NULL, thenewcm }, + { NULL } + }; + + DoMenu(MainMenu, 1); + + return(1); +} + +void ShowConsoleCheatConfig(bool show) +{ + if(!CheatMutex) + CheatMutex = SDL_CreateMutex(); + + PauseGameLoop(show); + if(show) + { + if(!CheatThread) + CheatThread = SDL_CreateThread(CheatLoop, NULL); + } + isactive = show; +} + +bool IsConsoleCheatConfigActive(void) +{ + return(isactive); +} + +void DrawCheatConsole(MDFN_Surface *surface, const MDFN_Rect *src_rect) +{ + if(!isactive) return; + CheatConsole.Draw(surface, src_rect); +} + +int CheatEventHook(const SDL_Event *event) +{ + if(!isactive) return(1); + + return(CheatConsole.Event(event)); +} + diff --git a/libmednahawk/src/drivers/cheat.h b/libmednahawk/src/drivers/cheat.h new file mode 100644 index 0000000000..e959299c76 --- /dev/null +++ b/libmednahawk/src/drivers/cheat.h @@ -0,0 +1,5 @@ +void ShowConsoleCheatConfig(bool show); +bool IsConsoleCheatConfigActive(void); +void DrawCheatConsole(MDFN_Surface *surface, const MDFN_Rect *src_rect); +int CheatEventHook(const SDL_Event *event); + diff --git a/libmednahawk/src/drivers/console.cpp b/libmednahawk/src/drivers/console.cpp new file mode 100644 index 0000000000..28d88f1d21 --- /dev/null +++ b/libmednahawk/src/drivers/console.cpp @@ -0,0 +1,307 @@ +#include "main.h" +#include "console.h" +#include +#include "nongl.h" + +MDFNConsole::MDFNConsole(bool setshellstyle, bool setsmallfont) +{ + prompt_visible = TRUE; + shellstyle = setshellstyle; + Scrolled = 0; + SmallFont = setsmallfont; +} + +MDFNConsole::~MDFNConsole() +{ + kb_cursor_pos = 0; +} + +bool MDFNConsole::TextHook(UTF8 *text) +{ + WriteLine(text); + free((char *)text); + return(1); +} + +void MDFNConsole::Scroll(int32 amount, bool SetPos) +{ + if(SetPos) + { + // Scroll to the beginning + if(amount == 0) + { + //Scrolled = + } + else // Scroll to the end + { + Scrolled = 0; + } + } + else + { + int64 ts = Scrolled; + ts += amount; + + if(ts < 0) + ts = 0; + Scrolled = ts; + } +} + +#include "../string/ConvertUTF.h" +int MDFNConsole::Event(const SDL_Event *event) +{ + switch(event->type) + { + case SDL_KEYDOWN: + if(event->key.keysym.mod & KMOD_ALT) + break; + switch(event->key.keysym.sym) + { + case SDLK_HOME: + if(event->key.keysym.mod & KMOD_SHIFT) + { + Scroll(0, TRUE); // Scroll to the beginning + } + else + kb_cursor_pos = 0; + break; + case SDLK_END: + if(event->key.keysym.mod & KMOD_SHIFT) + { + Scroll(-1, TRUE); // Scroll to the end + } + else + kb_cursor_pos = kb_buffer.size(); + break; + case SDLK_LEFT: + if(kb_cursor_pos) + kb_cursor_pos--; + break; + case SDLK_RIGHT: + if(kb_cursor_pos < kb_buffer.size()) + kb_cursor_pos++; + break; + + case SDLK_UP: + if(event->key.keysym.mod & KMOD_SHIFT) + Scroll(1); + else + { + + } + break; + case SDLK_DOWN: + if(event->key.keysym.mod & KMOD_SHIFT) + { + Scroll(-1); + } + else + { + + } + break; + + case SDLK_RETURN: + { + std::string concat_str; + for(unsigned int i = 0; i < kb_buffer.size(); i++) + concat_str += kb_buffer[i]; + + TextHook((UTF8*)strdup(concat_str.c_str())); + kb_buffer.clear(); + kb_cursor_pos = 0; + } + break; + case SDLK_BACKSPACE: + if(kb_buffer.size() && kb_cursor_pos) + { + kb_buffer.erase(kb_buffer.begin() + kb_cursor_pos - 1, kb_buffer.begin() + kb_cursor_pos); + kb_cursor_pos--; + } + break; + case SDLK_DELETE: + if(kb_buffer.size() && kb_cursor_pos < kb_buffer.size()) + { + kb_buffer.erase(kb_buffer.begin() + kb_cursor_pos, kb_buffer.begin() + kb_cursor_pos + 1); + } + break; + default: + if(event->key.keysym.unicode >= 0x20) + { + uint8 utf8_buffer[8]; + UTF8 *dest_ptr = utf8_buffer; + memset(utf8_buffer, 0, sizeof(utf8_buffer)); + const UTF16 *start_utf16 = &event->key.keysym.unicode; + ConvertUTF16toUTF8(&start_utf16, (UTF16 *)&event->key.keysym.unicode + 1, &dest_ptr, &utf8_buffer[8], lenientConversion); + kb_buffer.insert(kb_buffer.begin() + kb_cursor_pos, std::string((char *)utf8_buffer)); + kb_cursor_pos++; + } + break; + } + break; + } + return(1); +} + +#define MK_COLOR_A(r,g,b,a) (pf_cache.MakeColor(r,g,b,a)) + +void MDFNConsole::Draw(MDFN_Surface *surface, const MDFN_Rect *src_rect) +{ + const MDFN_PixelFormat pf_cache = surface->format; + uint32 pitch32 = surface->pitchinpix; + uint32 w = src_rect->w; + uint32 h = src_rect->h; + uint32 *pixels = surface->pixels + src_rect->x + src_rect->y * pitch32; + unsigned int font_width; + unsigned int font_height; + + if(SmallFont) + { + font_width = 5; + font_height = 7; + } + else + { + font_width = 9; + font_height = 18; + } + + MDFN_Surface *tmp_surface = new MDFN_Surface(NULL, 1024, font_height + 1, 1024, surface->format); + + for(unsigned int y = 0; y < h; y++) + { + uint32 *row = pixels + y * pitch32; + for(unsigned int x = 0; x < w; x++) + { + //printf("%d %d %d\n", y, x, pixels); + row[x] = MK_COLOR_A(0, 0, 0, 0xc0); + //row[x] = MK_COLOR_A(0x00, 0x00, 0x00, 0x7F); + } + } + int32 destline; + int32 vec_index = TextLog.size() - 1; + + if(vec_index > 0) + { + vec_index -= Scrolled; + } + + destline = ((h - font_height) / font_height) - 1; + + if(shellstyle) + vec_index--; + else if(!prompt_visible) + { + destline = (h / font_height) - 1; + //vec_index--; + } + + while(destline >= 0 && vec_index >= 0) + { + int32 pw = GetTextPixLength((UTF8 *)TextLog[vec_index].c_str(), SmallFont ? MDFN_FONT_5x7 : MDFN_FONT_9x18_18x18) + 1; + + if(pw > tmp_surface->w) + { + delete tmp_surface; + tmp_surface = new MDFN_Surface(NULL, pw, font_height + 1, 1024, surface->format); + } + + tmp_surface->Fill(0, 0, 0, 0xC0); + DrawTextTransShadow(tmp_surface->pixels, tmp_surface->pitchinpix << 2, tmp_surface->w, (UTF8 *)TextLog[vec_index].c_str(), MK_COLOR_A(0xff, 0xff, 0xff, 0xFF), MK_COLOR_A(0x00, 0x00, 0x01, 0xFF), 0, SmallFont); + int32 numlines = (uint32)ceil((double)pw / w); + + while(numlines > 0 && destline >= 0) + { + int32 offs = (numlines - 1) * w; + MDFN_Rect tmp_rect, dest_rect; + tmp_rect.x = offs; + tmp_rect.y = 0; + tmp_rect.h = font_height; + tmp_rect.w = (pw - offs) > (int32)w ? w : pw - offs; + + dest_rect.x = src_rect->x; + dest_rect.y = src_rect->y + destline * font_height; + dest_rect.w = tmp_rect.w; + dest_rect.h = tmp_rect.h; + + MDFN_StretchBlitSurface(tmp_surface, &tmp_rect, surface, &dest_rect); + numlines--; + destline--; + } + vec_index--; + } + delete tmp_surface; + + if(prompt_visible) + { + std::string concat_str; + + if(shellstyle) + { + int t = TextLog.size() - 1; + if(t >= 0) + concat_str = TextLog[t]; + else + concat_str = ""; + } + else + concat_str = "#>"; + for(unsigned int i = 0; i < kb_buffer.size(); i++) + { + if(i == kb_cursor_pos && (SDL_GetTicks() & 0x100)) + concat_str += "â–‰"; + else + concat_str += kb_buffer[i]; + } + + if(kb_cursor_pos == kb_buffer.size()) + { + if(SDL_GetTicks() & 0x100) + concat_str += "â–‰"; + else + concat_str += " "; + } + + { + uint32 nw = GetTextPixLength((UTF8*)concat_str.c_str()) + 1; + tmp_surface = new MDFN_Surface(NULL, nw, font_height + 1, nw, surface->format); + tmp_surface->Fill(0, 0, 0, 0xC0); + } + + MDFN_Rect tmp_rect, dest_rect; + + tmp_rect.w = DrawTextTransShadow(tmp_surface->pixels, tmp_surface->pitchinpix << 2, tmp_surface->w, (UTF8*)concat_str.c_str(),MK_COLOR_A(0xff, 0xff, 0xff, 0xff), MK_COLOR_A(0x00, 0x00, 0x01, 0xFF), 0, SmallFont); + tmp_rect.h = dest_rect.h = font_height; + tmp_rect.x = 0; + tmp_rect.y = 0; + + if(tmp_rect.w >= w) + { + tmp_rect.x = tmp_rect.w - w; + tmp_rect.w -= tmp_rect.x; + } + dest_rect.w = tmp_rect.w; + dest_rect.x = src_rect->x; + dest_rect.y = src_rect->y + h - (font_height + 1); + + MDFN_StretchBlitSurface(tmp_surface, &tmp_rect, surface, &dest_rect); + delete tmp_surface; + } +} + +void MDFNConsole::WriteLine(UTF8 *text) +{ + TextLog.push_back(std::string((char *)text)); +} + +void MDFNConsole::AppendLastLine(UTF8 *text) +{ + if(TextLog.size()) // Should we throw an exception if this isn't true? + TextLog[TextLog.size() - 1] += std::string((char*)text); +} + +void MDFNConsole::ShowPrompt(bool shown) +{ + prompt_visible = shown; +} diff --git a/libmednahawk/src/drivers/console.h b/libmednahawk/src/drivers/console.h new file mode 100644 index 0000000000..1a30dffb34 --- /dev/null +++ b/libmednahawk/src/drivers/console.h @@ -0,0 +1,27 @@ +#include + +class MDFNConsole +{ + public: + MDFNConsole(bool shellstyle = 0, bool SmallFont = 0); + ~MDFNConsole(); + + void ShowPrompt(bool shown); + void Draw(MDFN_Surface *surface, const MDFN_Rect *src_rect); + int Event(const SDL_Event *event); + void WriteLine(UTF8 *text); + void AppendLastLine(UTF8 *text); + virtual bool TextHook(UTF8 *text); // Handler must free(text); + + void SetSmallFont(bool newsmallfont) { SmallFont = newsmallfont; } + void SetShellStyle(bool newsetting) { shellstyle = newsetting; } + void Scroll(int32 amount, bool SetPos = FALSE); + private: + std::vector TextLog; + std::vector kb_buffer; + unsigned int kb_cursor_pos; + bool shellstyle; + bool prompt_visible; + uint32 Scrolled; + bool SmallFont; +}; diff --git a/libmednahawk/src/drivers/debugger.cpp b/libmednahawk/src/drivers/debugger.cpp new file mode 100644 index 0000000000..9f0003469b --- /dev/null +++ b/libmednahawk/src/drivers/debugger.cpp @@ -0,0 +1,1691 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include +#include +#include +#include "gfxdebugger.h" +#include "memdebugger.h" +#include "logdebugger.h" +#include "prompt.h" + +static FILE *TraceLog = NULL; +static std::string TraceLogSpec; +static int64 TraceLogEnd; + +static bool NeedInit = 1; +static bool NeedHooksInstalled = TRUE; +static bool WatchLogical = 1; // Watch logical memory addresses, not physical +static bool IsActive = 0; +static bool CompactMode = FALSE; + +static unsigned int WhichMode = 0; // 0 = normal, 1 = gfx, 2 = memory + +static std::string ReadBreakpoints, IOReadBreakpoints, AuxReadBreakpoints; +static std::string WriteBreakpoints, IOWriteBreakpoints, AuxWriteBreakpoints; +static std::string OpBreakpoints; +static int DebuggerOpacity; + +typedef std::vector DisComment; + +static std::map Comments; // Lower 32 bits == address, upper 32 bits == 4 bytes data match + +static uint32 GetPC(void) +{ + RegGroupType *rg = (*CurGame->Debugger->RegGroups)[0]; + + if(rg->GetRegister) + return rg->GetRegister(rg->Regs[0].id, NULL, 0); // FIXME + else + return rg->OLDGetRegister(rg->Regs[0].name, NULL); // FIXME +} + +static void MemPoke(uint32 A, uint32 V, uint32 Size, bool hl, bool logical) +{ + AddressSpaceType *found = NULL; + + if(logical) + { + for(unsigned int x = 0; x < CurGame->Debugger->AddressSpaces->size(); x++) + if(!strcasecmp((*CurGame->Debugger->AddressSpaces)[x].name, "logical")) + { + found = &(*CurGame->Debugger->AddressSpaces)[x]; + break; + } + } + else + { + for(unsigned int x = 0; x < CurGame->Debugger->AddressSpaces->size(); x++) + if(!strcasecmp((*CurGame->Debugger->AddressSpaces)[x].name, "physical")) + { + found = &(*CurGame->Debugger->AddressSpaces)[x]; + break; + } + } + + if(!found) + { + for(unsigned int x = 0; x < CurGame->Debugger->AddressSpaces->size(); x++) + if(!strcasecmp((*CurGame->Debugger->AddressSpaces)[x].name, "cpu")) + { + found = &(*CurGame->Debugger->AddressSpaces)[x]; + break; + } + } + + if(found) + { + uint8 tmp_buffer[4]; + + // FIXME if we ever add a non-LSB-first system! + tmp_buffer[0] = V; + tmp_buffer[1] = V >> 8; + tmp_buffer[2] = V >> 16; + tmp_buffer[3] = V >> 24; + found->PutAddressSpaceBytes(found->name, A, Size, Size, hl, tmp_buffer); + } + else + puts("Error"); +} + +static uint32 ParsePhysAddr(const char *za) +{ + uint32 ret = 0; + + if(strchr(za, ':')) + { + unsigned int bank = 0, offset = 0; + + if(!strcasecmp(CurGame->shortname, "wswan")) + { + trio_sscanf(za, "%04x:%04x", &bank, &offset); + ret = ((bank << 4) + offset) & 0xFFFFF; + } + else + { + trio_sscanf(za, "%02x:%04x", &bank, &offset); + ret = (bank * 8192) | (offset & 0x1FFF); + } + } + else + trio_sscanf(za, "%08x", &ret); + + return(ret); +} + +static void ParseBreakpoints(const std::string &Breakpoints, int type) +{ + LockGameMutex(1); + + size_t len = Breakpoints.size(); + const char *zestring = Breakpoints.c_str(); + unsigned int last_x, x; + bool two_parter = 0; + bool logical = 1; + + CurGame->Debugger->FlushBreakPoints(type); + + for(last_x = x = 0; x < len; x++) + { + if(zestring[x] == '-') + two_parter = 1; + else if(zestring[x] == '*') + { + logical = 0; + last_x++; + } + else if(zestring[x] == ' ' || x == len - 1) + { + uint32 A1, A2; + + if(two_parter) + { + char sa1[64], sa2[64]; + + if(!logical) + { + if(trio_sscanf(zestring + last_x, "%63[^-]%*[-]%63s", sa1, sa2) < 2) continue; + + //printf("%s %s\n", sa1, sa2); + A1 = ParsePhysAddr(sa1); + A2 = ParsePhysAddr(sa2); + } + else + if(trio_sscanf(zestring + last_x, "%08x%*[-]%08x", &A1, &A2) < 2) continue; + + two_parter = 0; + } + else + { + if(!logical) + { + char sa1[64]; + + trio_sscanf(zestring + last_x, "%s", sa1); + + A1 = ParsePhysAddr(sa1); + } + else + if(trio_sscanf(zestring + last_x, "%08x", &A1) != 1) continue; + + A2 = A1; + } + //printf("%04x %04x %d\n", A1, A2, logical); + CurGame->Debugger->AddBreakPoint(type, A1, A2, logical); + last_x = x + 1; + logical = 1; + } + } + LockGameMutex(0); +} + +static unsigned int RegsPos = 0; +static uint32 InRegs = 0; +static uint32 RegsCols = 0; +static uint32 RegsColsCounts[16]; // FIXME[5]; +static uint32 RegsColsPixOffset[16]; //[5]; +static uint32 RegsWhichFont[16]; //[5]; +static uint32 RegsTotalWidth; + +#define MK_COLOR_A(r,g,b,a) (pf_cache.MakeColor(r, g, b, a)) + +static int DIS_ENTRIES = 58; +static int DisFont = MDFN_FONT_5x7; +static int DisFontHeight = 7; + +static std::vector PCBreakPoints; +static void RedoPCBreakPoints(void) +{ + LockGameMutex(1); + CurGame->Debugger->FlushBreakPoints(BPOINT_PC); + + for(unsigned int x = 0; x < PCBreakPoints.size(); x++) + { + CurGame->Debugger->AddBreakPoint(BPOINT_PC, PCBreakPoints[x], PCBreakPoints[x], 1); + } + LockGameMutex(0); +} + +static INLINE bool IsPCBreakPoint(uint32 A) +{ + unsigned int max = PCBreakPoints.size(); + + for(unsigned int x = 0; x < max; x++) + if(PCBreakPoints[x] == A) + return(1); + return(0); +} + +static void TogglePCBreakPoint(uint32 A) +{ + for(unsigned int x = 0; x < PCBreakPoints.size(); x++) + { + if(PCBreakPoints[x] == A) + { + PCBreakPoints.erase(PCBreakPoints.begin() + x); + RedoPCBreakPoints(); + return; + } + } + PCBreakPoints.push_back(A); + RedoPCBreakPoints(); +} + + +static uint32 WatchAddr = 0x0000, WatchAddrPhys = 0x0000; +static uint32 DisAddr = 0x0000; +static uint32 DisCOffs = 0xFFFFFFFF; +static int NeedDisAddrChange = 0; + +static bool NeedPCBPToggle = 0; +static int volatile NeedStep = 0; +static int volatile NeedRun = 0; +static bool NeedBreak = 0; +bool volatile InSteppingMode = 0; // R/W in game thread, read in main thread(only when GameMutex is held!) + +static std::string CurRegLongName; +static std::string CurRegDetails; + +static void DrawRegs(RegGroupType *rg, MDFN_Surface *surface, uint32 *pixels, int highlight, uint32 which_font) +{ + const MDFN_PixelFormat pf_cache = surface->format; + uint32 pitch32 = surface->pitchinpix; + uint32 *row = pixels; + unsigned int meowcow = 0; + RegType *rec = rg->Regs; + + while(rec->bsize) + { + char nubuf[256]; + uint32 color = MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF); + uint32 rname_color = MK_COLOR_A(0xE0, 0xFF, 0xFF, 0xFF); + + std::string *details_ptr = NULL; + char details_string[256]; + uint32 details_string_len = sizeof(details_string); + + details_string[0] = 0; + + if(highlight != -1) + { + if((unsigned int)highlight == meowcow) + { + CurRegLongName = rec->long_name; + rname_color = color = MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF); + details_ptr = &CurRegDetails; + } + } + int prew = DrawTextTrans(row, surface->pitchinpix << 2, 128, (UTF8*)rec->name.c_str(), rname_color, 0, which_font); + + if(rec->bsize != 0xFFFF) + { + uint32 regval; + + if(rg->GetRegister || rg->SetRegister) + regval = rg->GetRegister(rec->id, details_ptr ? details_string : NULL, details_string_len); + else + regval = rg->OLDGetRegister(rec->name, details_ptr); + + if(rec->bsize & 0x100) + { + char fstring[7] = ": %08X"; + int nib_size = ((rec->bsize & 0xFF) + 3) / 4; + + fstring[3] = '0' + (nib_size / 10); + fstring[4] = '0' + (nib_size % 10); + + trio_snprintf(nubuf, 256, fstring, regval); + } + else + { + if(rec->bsize == 4) + trio_snprintf(nubuf, 256, ": %08X", regval); + else if(rec->bsize == 3) + trio_snprintf(nubuf, 256, ": %06X", regval); + else if(rec->bsize == 2) + trio_snprintf(nubuf, 256, ": %04X", regval); + else if(rec->bsize == 1) + trio_snprintf(nubuf, 256, ": %02X", regval); + } + + if(details_ptr && details_string[0]) + *details_ptr = std::string(details_string); + + DrawTextTrans(row + prew, surface->pitchinpix << 2, 64, (UTF8*)nubuf, color, 0, which_font); + } + + if(which_font == MDFN_FONT_5x7) + row += 7 * pitch32; + else if(which_font == MDFN_FONT_4x5) + row += 6 * pitch32; + else + row += 18 * pitch32; + + rec++; + meowcow++; + } +} + +static void DrawZP(MDFN_Surface *surface, uint32 *pixels) +{ + const MDFN_PixelFormat pf_cache = surface->format; + uint32 addr = CurGame->Debugger->ZPAddr; + + for(int y = -1; y < 17; y++) + for(int x = -1; x < 17; x++) + { + uint8 zebyte = CurGame->Debugger->MemPeek(addr, 1, 1, TRUE); + char tbuf[32]; + int r, g, b; + bool NeedInc = FALSE; + + if((y == -1 || y == 16) && (x == -1 || x == 16)) continue; + + if(y == -1 || y == 16) + { + r = 0x00; + g = 0xE0; + b = 0x00; + trio_snprintf(tbuf, 32, "x%1X", x); + } + else if(x == -1 || x == 16) + { + r = 0x00; + g = 0xE0; + b = 0x00; + trio_snprintf(tbuf, 32, "%1Xx", y); + } + else + { + trio_snprintf(tbuf, 32, "%02X", zebyte); + + r = 0x00; + g = 0x00; + b = 0x00; + + if(x & 4) { r += 0xeF; } + if(y & 4) { b += 0xFF; g += 0x80; } + if(!(x & 4) && !(y & 4)) + r = g = b = 0xE0; + NeedInc = TRUE; + } + + DrawTextTrans(pixels + (x + 1) * 13 + (y + 1) * 10 * surface->pitchinpix, surface->pitchinpix << 2, 1024, (UTF8 *)tbuf, MK_COLOR_A(r, g, b, 0xFF), FALSE, MDFN_FONT_5x7); + if(NeedInc) + addr++; + } + +} + +typedef enum +{ + None = 0, + DisGoto, + WatchGoto, + EditRegs, + PokeMe, + PokeMeHL, + ReadBPS, + WriteBPS, + IOReadBPS, + IOWriteBPS, + AuxReadBPS, + AuxWriteBPS, + OpBPS, + ForceInt, + TraceLogPrompt +} PromptType; + +// FIXME, cleanup, less spaghetti: +static PromptType InPrompt = None; +static RegType *CurRegIP; +static RegGroupType *CurRegGroupIP; + +class DebuggerPrompt : public HappyPrompt +{ + public: + + DebuggerPrompt(const std::string &ptext, const std::string &zestring) : HappyPrompt(ptext, zestring) + { + + } + ~DebuggerPrompt() + { + + } + private: + + void TheEnd(const std::string &pstring) + { + char *tmp_c_str = strdup(pstring.c_str()); + + if(InPrompt == DisGoto) + { + trio_sscanf(tmp_c_str, "%08X", &DisAddr); + DisAddr &= ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + DisAddr &= ~(CurGame->Debugger->InstructionAlignment - 1); + DisCOffs = 0xFFFFFFFF; + } + else if(InPrompt == ReadBPS) + { + ReadBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(ReadBreakpoints, BPOINT_READ); + } + else if(InPrompt == WriteBPS) + { + WriteBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(WriteBreakpoints, BPOINT_WRITE); + } + else if(InPrompt == IOReadBPS) + { + IOReadBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(IOReadBreakpoints, BPOINT_IO_READ); + } + else if(InPrompt == IOWriteBPS) + { + IOWriteBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(IOWriteBreakpoints, BPOINT_IO_WRITE); + } + else if(InPrompt == AuxReadBPS) + { + AuxReadBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(AuxReadBreakpoints, BPOINT_AUX_READ); + } + else if(InPrompt == AuxWriteBPS) + { + AuxWriteBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(AuxWriteBreakpoints, BPOINT_AUX_WRITE); + } + else if(InPrompt == OpBPS) + { + OpBreakpoints = std::string(tmp_c_str); + ParseBreakpoints(OpBreakpoints, BPOINT_OP); + } + else if(InPrompt == TraceLogPrompt) + { + LockGameMutex(1); + + if(pstring != TraceLogSpec) + { + TraceLogSpec = pstring; + + if(TraceLog) + { + fclose(TraceLog); + TraceLog = NULL; + } + + unsigned int endpc; + char tmpfn[256]; + int num = trio_sscanf(tmp_c_str, "%.255s %08x", tmpfn, &endpc); + if(num >= 1) + { + if((TraceLog = fopen(tmpfn, "ab"))) + { + time_t lovelytime; + lovelytime = time(NULL); + trio_fprintf(TraceLog, "Tracing began: %s\n", asctime(gmtime(&lovelytime))); + if(num == 1) + TraceLogEnd = -1; + else + TraceLogEnd = endpc; + } + } + } + LockGameMutex(0); + } + else if(InPrompt == ForceInt) + { + LockGameMutex(1); + CurGame->Debugger->IRQ(atoi(tmp_c_str)); + LockGameMutex(0); + } + else if(InPrompt == PokeMe) + { + uint32 A = 0,V = 0,S = 1; + bool logical = 1; + + char *meow_str = tmp_c_str; + + if(meow_str[0] == '*') + { + meow_str++; + logical = 0; + } + + int ssf_ret; + + if(logical) + ssf_ret = trio_sscanf(tmp_c_str, "%08X %08X %d", &A, &V, &S); + else + { + char sa[64]; + + ssf_ret = trio_sscanf(tmp_c_str, "%63s %08X %d", sa, &V, &S); + + A = ParsePhysAddr(sa); + } + + if(ssf_ret >= 2) // Allow size to be omitted, implicit as '1' + { + A &= ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + if(S < 1) S = 1; + if(S > 4) S = 4; + + LockGameMutex(1); + MemPoke(A, V, S, 0, logical); + //CurGame->Debugger->MemPoke(A, V, S, 0, logical); + LockGameMutex(0); + } + } + else if(InPrompt == PokeMeHL) + { + uint32 A = 0,V = 0,S = 1; + bool logical = 1; + + char *meow_str = tmp_c_str; + + if(meow_str[0] == '*') + { + meow_str++; + logical = 0; + } + + if(trio_sscanf(meow_str, "%08X %08X %d", &A, &V, &S) >= 2) // Allow size to be omitted, implicit as '1' + { + A &= ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + + if(S < 1) S = 1; + if(S > 4) S = 4; + + LockGameMutex(1); + MemPoke(A, V, S, 1, logical); +// CurGame->Debugger->MemPoke(A, V, S, 1, logical); + LockGameMutex(0); + } + } + else if(InPrompt == EditRegs) + { + uint32 RegValue = 0; + + trio_sscanf(tmp_c_str, "%08X", &RegValue); + LockGameMutex(1); + + if(CurRegGroupIP->SetRegister || CurRegGroupIP->GetRegister) + { + if(CurRegGroupIP->SetRegister) + CurRegGroupIP->SetRegister(CurRegIP->id, RegValue); + else + puts("Null SetRegister!"); + } + else + { + if(CurRegGroupIP->OLDSetRegister) + CurRegGroupIP->OLDSetRegister(CurRegIP->name, RegValue); + else + puts("Null (OLD)SetRegister!"); + } + + LockGameMutex(0); + } + else if(InPrompt == WatchGoto) + { + if(WatchLogical) + { + trio_sscanf(tmp_c_str, "%08X", &WatchAddr); + WatchAddr &= 0xFFF0; + } + else + { + trio_sscanf(tmp_c_str, "%08X", &WatchAddrPhys); + WatchAddrPhys &= (((uint64)1 << CurGame->Debugger->PhysAddrBits) - 1); + WatchAddrPhys &= ~0xF; + } + } + free(tmp_c_str); + InPrompt = None; + + } +}; + +struct DisasmEntry +{ + std::string text; + uint32 A; + uint32 COffs; + bool ForcedResync; +}; + + +static DebuggerPrompt *myprompt = NULL; + +// Call this function from the main thread +void Debugger_Draw(MDFN_Surface *surface, MDFN_Rect *rect, const MDFN_Rect *screen_rect) +{ + if(!IsActive) return; + + if(WhichMode == 1) + { + surface->Fill(0, 0, 0, 0); + + GfxDebugger_Draw(surface, rect, screen_rect); + return; + } + else if(WhichMode == 2) + { + surface->Fill(0, 0, 0, DebuggerOpacity); + + //zero 29-oct-2012 - memdebugger not supported + //MemDebugger_Draw(surface, rect, screen_rect); + return; + } + else if(WhichMode == 3) + { + surface->Fill(0, 0, 0, DebuggerOpacity); + + LogDebugger_Draw(surface, rect, screen_rect); + return; + } + + const MDFN_PixelFormat pf_cache = surface->format; + uint32 *pixels = surface->pixels; + uint32 pitch32 = surface->pitchinpix; + + surface->Fill(0, 0, 0, DebuggerOpacity); +#if 0 + for(int y = 0; y < rect->h; y++) + { + uint32 *row = pixels + y * pitch32; + for(int x = 0; x < rect->w; x++) + { + //printf("%d %d %d\n", y, x, pixels); + row[x] = MK_COLOR_A(0, 0, 0, DebuggerOpacity); + //row[x] = MK_COLOR_A(0x00, 0x00, 0x00, 0x7F); + } + } +#endif + + LockGameMutex(1); + + // We need to disassemble (maximum_instruction_size * (DIS_ENTRIES / 2) * 3) + // bytes to make sure we can center our desired DisAddr, and + // that we have enough disassembled datums for displayaling and + // worshipping cactus mules. + + + int PreBytes = CurGame->Debugger->MaxInstructionSize * (DIS_ENTRIES / 2) * 2; + int DisBytes = CurGame->Debugger->MaxInstructionSize * (DIS_ENTRIES / 2) * 3; + + uint32 A = (DisAddr - PreBytes) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + + std::vector DisBuffer; + int indexcow = -1; + const uint32 PC = GetPC(); + + while(DisBytes > 0) + { + DisasmEntry NewEntry; + uint32 lastA = A; + char dis_text_buf[256]; + uint32 ResyncAddr; + + // Handling resynch address ->0 wrapping is a bit more complex... + { + const uint32 da_distance = (DisAddr - A - 1) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + const uint32 pc_distance = (PC - A - 1) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + uint32 distance; + + distance = da_distance; + ResyncAddr = DisAddr; + + if(pc_distance < distance) + { + distance = pc_distance; + ResyncAddr = PC; + } + + // Handle comment forced resynchronizations + { + std::map::const_iterator it; + + for(it = Comments.begin(); it != Comments.end(); it++) + { + uint32 comment_distance = ((uint32)it->first - A - 1) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + + if(comment_distance < distance) + { + // FIXME: data byte validation + + distance = comment_distance; + ResyncAddr = (uint32)it->first; + } + } + } + + } + + //printf("%08x %08x\n", A, DisAddr); + CurGame->Debugger->Disassemble(A, ResyncAddr, dis_text_buf); // A is passed by reference to Disassemble() + + const uint64 compare_A = (A < lastA) ? ((1ULL << CurGame->Debugger->LogAddrBits) + A) : A; + + NewEntry.A = lastA; + NewEntry.text = std::string(dis_text_buf); + NewEntry.COffs = 0xFFFFFFFF; + + if(compare_A > ResyncAddr && lastA < ResyncAddr) // Err, oops, resynch if necessary + { + A = ResyncAddr; + NewEntry.ForcedResync = true; + } + else + NewEntry.ForcedResync = false; + + DisBytes -= compare_A - lastA; + + + { + std::map::const_iterator it = Comments.find(lastA); + + if(it != Comments.end()) + { + //const std::string &rawstring = it->second; + const DisComment &zec = it->second; + DisasmEntry CommentEntry; + + CommentEntry.A = lastA; + CommentEntry.ForcedResync = false; + + for(uint32 i = 0; i < zec.size(); i++) + { + CommentEntry.COffs = i; + CommentEntry.text = zec[i]; + + if(CommentEntry.A == DisAddr && CommentEntry.COffs == DisCOffs) + indexcow = DisBuffer.size(); + + DisBuffer.push_back(CommentEntry); + } + } + } + + if(NewEntry.A == DisAddr && (NewEntry.COffs == DisCOffs || indexcow == -1)) // Also handles case where comments disappear out from underneath us. + indexcow = DisBuffer.size(); + + DisBuffer.push_back(NewEntry); + } + + char addr_text_fs[64]; // Format string. + + trio_snprintf(addr_text_fs, 64, " %%0%0dX%%s", (CurGame->Debugger->LogAddrBits + 3) / 4); + + for(int x = 0; x < DIS_ENTRIES; x++) + { + int32 dbi = indexcow - (DIS_ENTRIES / 2) + x; + + if(dbi < 0 || dbi >= (int32)DisBuffer.size()) + { + puts("Disassembly error!"); + break; + } + + if(DisBuffer[dbi].COffs != 0xFFFFFFFF) // Comment + { + uint32 color = MK_COLOR_A(0xFF, 0xA5, 0x00, 0xFF); + uint32 cursor_color = MK_COLOR_A(0xFF, 0x80, 0xE0, 0xFF); + //char textbuf[256]; + + //trio_snprintf(textbuf, sizeof(textbuf), "// %s", DisBuffer[dbi].text.c_str()); + + if(DisBuffer[dbi].A == DisAddr && DisBuffer[dbi].COffs == DisCOffs) + DrawTextTrans(pixels + x * DisFontHeight * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)">", cursor_color, 0, DisFont); + + DrawTextTrans(pixels + 5 + x * DisFontHeight * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)DisBuffer[dbi].text.c_str(), color, 0, DisFont); + } + else // Disassembly + { + std::string dis_str = DisBuffer[dbi].text; + uint32 dis_A = DisBuffer[dbi].A; + + char addr_text[64]; + uint32 color = MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF); + uint32 addr_color = MK_COLOR_A(0xa0, 0xa0, 0xFF, 0xFF); + + trio_snprintf(addr_text, 256, addr_text_fs, dis_A, (DisBuffer[dbi].ForcedResync ? "!!" : ": ")); + + if(dis_A == DisAddr && DisBuffer[dbi].COffs == DisCOffs) + { + addr_text[0] = '>'; + if(!InRegs) + { + if(dis_A == PC) + addr_color = color = MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF); + else + addr_color = color = MK_COLOR_A(0xFF, 0x80, 0xE0, 0xFF); + } + + if(NeedPCBPToggle) + { + if(DisCOffs == 0xFFFFFFFF) + TogglePCBreakPoint(dis_A); + NeedPCBPToggle = 0; + } + } + + if(dis_A == PC && (dis_A != DisAddr || InRegs)) + addr_color = color = MK_COLOR_A(0x00, 0xFF, 0x00, 0xFF); + + if(IsPCBreakPoint(dis_A)) + addr_text[0] = addr_text[0] == '>' ? '#' : '*'; + + int addrpixlen; + + addrpixlen = DrawTextTrans(pixels + x * DisFontHeight * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)addr_text, addr_color, 0, DisFont); + DrawTextTrans(pixels + x * DisFontHeight * pitch32 + addrpixlen, surface->pitchinpix << 2, rect->w - strlen(addr_text) * 5, (UTF8*)dis_str.c_str(), color, 0, DisFont); + } + } + + if(NeedDisAddrChange) + { + if((indexcow + NeedDisAddrChange) >= (int32)DisBuffer.size()) + { + puts("Error, gack!"); + } + else + { + DisAddr = DisBuffer[indexcow + NeedDisAddrChange].A; + DisCOffs = DisBuffer[indexcow + NeedDisAddrChange].COffs; + NeedDisAddrChange = 0; + } + } + + CurRegLongName = ""; + CurRegDetails = ""; + + for(unsigned int rp = 0; rp < CurGame->Debugger->RegGroups->size(); rp++) + DrawRegs((*CurGame->Debugger->RegGroups)[rp], surface, pixels + rect->w - RegsTotalWidth + RegsColsPixOffset[rp], (InRegs == rp + 1) ? (int)RegsPos : -1, RegsWhichFont[rp]); // 175 + + if(CurGame->Debugger->ZPAddr != (uint32)~0UL) + DrawZP(surface, pixels + 324 + 224 * pitch32); + + int moo = 8; + + if(CompactMode) + moo = 16; + + if(InRegs) + { + DrawTextTrans(pixels + (rect->h - (moo + 2) * 7) * pitch32, surface->pitchinpix << 2, surface->w, (UTF8*)CurRegLongName.c_str(), MK_COLOR_A(0xa0, 0xa0, 0xFF, 0xFF), TRUE, 1); + DrawTextTrans(pixels + (rect->h - (moo + 1) * 7) * pitch32, surface->pitchinpix << 2, surface->w, (UTF8*)CurRegDetails.c_str(), MK_COLOR_A(0x60, 0xb0, 0xFF, 0xFF), TRUE, 1); + } + else if(CurGame->Debugger->GetBranchTrace) + { + const int btrace_rows = 4; + const int btrace_cols = 96; + std::vector btrace = CurGame->Debugger->GetBranchTrace(); + uint32 *btpixels = pixels + (rect->h - (moo + 2) * 7) * pitch32 + 7; // + ((128 - btrace_cols) / 2) * 5; + int draw_position = btrace_rows * btrace_cols; + bool color_osc = false; + const uint32 hcolors[2] = { MK_COLOR_A(0x60, 0xb0, 0xfF, 0xFF), MK_COLOR_A(0xb0, 0x70, 0xfF, 0xFF) }; + + for(int i = (int)btrace.size() - 1; i >= 0; i--) + { + char strbuf[4][256]; // [0] = from, [1] = arrow/special, [2] = to, [3] = ... + int strbuf_len; + int new_draw_position; + int col, row; + uint32 *pix_tmp; + + trio_snprintf(strbuf[0], 256, "%s", btrace[i].from); + + if(btrace[i].code[0]) + trio_snprintf(strbuf[1], 256, "[%s‣]", btrace[i].code); + else + trio_snprintf(strbuf[1], 256, "‣"); + + if(btrace[i].count > 1) + trio_snprintf(strbuf[2], 256, "%s(*%d)", btrace[i].to, btrace[i].count); + else + trio_snprintf(strbuf[2], 256, "%s", btrace[i].to); + + if(i == ((int)btrace.size() - 1)) + strbuf[3][0] = 0; + else + snprintf(strbuf[3], 256, "…"); + +//trio_snprintf(tmp, sizeof(tmp), "%04X%s%04X(*%d)", bt->from, arrow, bt->to, bt->branch_count); + + strbuf_len = (GetTextPixLength((UTF8*)strbuf[0], MDFN_FONT_5x7) + + GetTextPixLength((UTF8*)strbuf[1], MDFN_FONT_5x7) + + GetTextPixLength((UTF8*)strbuf[2], MDFN_FONT_5x7) + 5 + GetTextPixLength((UTF8*)strbuf[3], MDFN_FONT_5x7) + 4) / 5; + new_draw_position = draw_position - strbuf_len; + + if(new_draw_position < 0) + break; + + if(((draw_position - 1) / btrace_cols) > (new_draw_position / btrace_cols)) + new_draw_position = ((new_draw_position / btrace_cols) + 1) * btrace_cols - strbuf_len; + + col = new_draw_position % btrace_cols; + row = new_draw_position / btrace_cols; + + pix_tmp = btpixels + col * 5 + row * 10 * pitch32; + pix_tmp += DrawTextTrans(pix_tmp, surface->pitchinpix << 2, rect->w, (UTF8*)strbuf[0], (btrace[i].count > 1) ? MK_COLOR_A(0xe0, 0xe0, 0x00, 0xFF) : hcolors[color_osc], false, MDFN_FONT_5x7); + pix_tmp += DrawTextTrans(pix_tmp, surface->pitchinpix << 2, rect->w, (UTF8*)strbuf[1], btrace[i].code[0] ? MK_COLOR_A(0xb0, 0xFF, 0xff, 0xFF) : MK_COLOR_A(0xb0, 0xb0, 0xff, 0xFF), false, MDFN_FONT_5x7); + + color_osc = !color_osc; + + pix_tmp += DrawTextTrans(pix_tmp, surface->pitchinpix << 2, rect->w, (UTF8*)strbuf[2], (btrace[i].count > 1) ? MK_COLOR_A(0xe0, 0xe0, 0x00, 0xFF) : hcolors[color_osc], false, MDFN_FONT_5x7); + pix_tmp += 2; + pix_tmp += DrawTextTrans(pix_tmp, surface->pitchinpix << 2, rect->w, (UTF8*)strbuf[3], MK_COLOR_A(0x60, 0x70, 0x80, 0xFF), false, MDFN_FONT_5x7); + pix_tmp += 3; + draw_position = new_draw_position; + } + +#if 0 + for(int bt_row = 0; bt_row < btrace_rows; bt_row++) + { + strbuf[0] = 0; + strbuf_len = 0; + for(unsigned int y = 0; y < (btrace.size() + btrace_rows - 1) / btrace_rows && btrace_index < btrace.size(); y++) + { + strbuf_len += trio_snprintf(strbuf + strbuf_len, 256 - strbuf_len, /*"%s→"*/ "%s ", btrace[btrace_index].c_str()); + btrace_index++; + } + + strbuf[strbuf_len - 1] = 0; // Get rid of the trailing space + + DrawTextTrans(btpixels + bt_row * 8 * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)strbuf, MK_COLOR_A(0x60, 0xb0, 0xfF, 0xFF), TRUE, MDFN_FONT_5x7); + } +#endif + } + + // Draw memory watch section + { + uint32 *watchpixels = pixels + (rect->h - moo * 7 + (InRegs ? 0 : 4) * 7) * pitch32; + int mw_rows = InRegs ? 8 : 4; + int bytes_per_row = 32; + + if(CompactMode) + mw_rows = 16; + + if(CompactMode) + bytes_per_row = 16; + + for(int y = 0; y < mw_rows; y++) + { + uint32 *row = watchpixels + y * pitch32 * 7; + char tbuf[256]; + char asciistr[32 + 1]; + uint32 ewa; + uint32 ewa_bits; + uint32 ewa_mask; + + asciistr[32] = 0; + + if(WatchLogical) + { + ewa_bits = CurGame->Debugger->LogAddrBits; + ewa = WatchAddr; + } + else + { + ewa_bits = CurGame->Debugger->PhysAddrBits; + ewa = WatchAddrPhys; + } + + ewa_mask = ((uint64)1 << ewa_bits) - 1; + + if(InRegs) + ewa = (ewa - 0x80) & ewa_mask; + + if(ewa_bits <= 16) + trio_snprintf(tbuf, 256, "%04X: ", (ewa + y * bytes_per_row) & ewa_mask); + else if(ewa_bits <= 20) + trio_snprintf(tbuf, 256, "%05X: ", (ewa + y * bytes_per_row) & ewa_mask); + else if(ewa_bits <= 24) + trio_snprintf(tbuf, 256, "%06X: ", (ewa + y * bytes_per_row) & ewa_mask); + else + trio_snprintf(tbuf, 256, "%08X: ", (ewa + y * bytes_per_row) & ewa_mask); + + row += DrawTextTrans(row, surface->pitchinpix << 2, rect->w, (UTF8 *)tbuf, MK_COLOR_A(0xa0, 0xa0, 0xFF, 0xFF), FALSE, MDFN_FONT_5x7); + for(int x = 0; x < bytes_per_row; x++) + { + uint8 zebyte = CurGame->Debugger->MemPeek((ewa + y * bytes_per_row + x) & ewa_mask, 1, 1, WatchLogical); + uint32 bcolor = MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF); + + if(x & 1) + bcolor = MK_COLOR_A(0xD0, 0xFF, 0xF0, 0xFF); + if(!(x & 0x7)) + bcolor = MK_COLOR_A(0xFF, 0x80, 0xFF, 0xFF); + asciistr[x] = zebyte; + if(zebyte & 0x80 || !zebyte) + asciistr[x] = '.'; + + if(x == 16) row += 7; + + trio_snprintf(tbuf, 256, "%02X", zebyte); + row += DrawTextTrans(row, surface->pitchinpix << 2, rect->w, (UTF8*)tbuf, bcolor, 0, 1) + 2; + } + DrawTextTrans(row + 5, surface->pitchinpix << 2, rect->w, (UTF8 *)asciistr, MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, MDFN_FONT_5x7); + } + } + + if(InPrompt) + myprompt->Draw(surface, rect); + else if(myprompt) + { + delete myprompt; + myprompt = NULL; + } + LockGameMutex(0); +} + +static const char HexLUT[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + +// Function called from game thread +static void CPUCallback(uint32 PC) +{ + if((NeedStep == 2 && !InSteppingMode) || NeedBreak) + { + DisAddr = PC; + DisCOffs = 0xFFFFFFFF; + NeedStep = 0; + InSteppingMode = 1; + NeedBreak = 0; + } + + if(NeedStep == 1) + { + DisAddr = PC; + DisCOffs = 0xFFFFFFFF; + NeedStep = 0; + } + + if(TraceLog) + { + uint32 trace_PC = PC; + char dis_text_buf[256 + 32]; + char *distbp = dis_text_buf; + + if(CurGame->Debugger->LogAddrBits == 32) + { + + } + else + { + *distbp++ = HexLUT[(trace_PC >> 12) & 0xF]; + *distbp++ = HexLUT[(trace_PC >> 8) & 0xF]; + *distbp++ = HexLUT[(trace_PC >> 4) & 0xF]; + *distbp++ = HexLUT[(trace_PC >> 0) & 0xF]; + } + *distbp++ = ':'; + *distbp++ = ' '; + + CurGame->Debugger->Disassemble(trace_PC, trace_PC, distbp); + + fputs(dis_text_buf, TraceLog); + fputc('\n', TraceLog); + + if(TraceLogEnd >= 0 && (uint32)TraceLogEnd == PC) + { + fclose(TraceLog); + TraceLog = 0; + } + } + + while(InSteppingMode && GameThreadRun) + { + DebuggerFudge(); + if(NeedStep == 2) + { + NeedStep--; + break; + } + if(NeedRun) + { + NeedStep = 0; + NeedRun = 0; + InSteppingMode = 0; + } + } + if(NeedRun) NeedRun = 0; +} + +// Function called from game thread +static void BPCallback(uint32 PC) +{ + NeedBreak = 1; + IsActive = 1; +} + +// Function called from game thread, input driver code. +void Debugger_ForceStepIfStepping(void) +{ + if(InSteppingMode) + NeedStep = 2; +} + +void Debugger_ForceSteppingMode(void) +{ + if(!InSteppingMode) + NeedStep = 2; +} + +// Call this function from any thread: +// Only call with w or h non-NULL in main thread +bool Debugger_IsActive(unsigned int *w, unsigned int *h) +{ + switch(WhichMode) + { + default: + case 0: if(w) *w = CompactMode ? 512 : 640; if(h) *h = CompactMode ? 448 : 480; break; + case 1: if(w) *w = 384; if(h) *h = 320; break; + case 2: if(w) *w = 320; if(h) *h = 240; break; + case 3: if(w) *w = 512; if(h) *h = 448; break; + } + + return(IsActive); +} + + +// Call this function from the game thread: +bool Debugger_Toggle(void) +{ + if(CurGame->Debugger) + { + IsActive = !IsActive; + + if(IsActive) + { + if(NeedInit) + { + std::string des_disfont = MDFN_GetSettingS(std::string(std::string(CurGame->shortname) + "." + std::string("debugger.disfontsize")).c_str()); + DebuggerOpacity = 0xC0; + + // Debug remove me +#if 0 + { + DisComment comment; + + comment.push_back("// Hi!"); + comment.push_back("// We welcome you to the wonderful world"); + comment.push_back("// of tomorrow...TODAY!"); + comment.push_back("//"); + comment.push_back("// Warning: Beware of deathbots."); + + Comments[0x8001] = comment; + } +#endif + // End debug remove me + + + //if(!strcasecmp(CurGame->shortname, "nes") || !strcasecmp(CurGame->shortname, "pce")) + if(des_disfont == "xsmall") + { + DisFont = MDFN_FONT_4x5; + DisFontHeight = 6; + } + else if(des_disfont == "medium") + { + DisFont = MDFN_FONT_6x13_12x13; + DisFontHeight = 12; + } + else if(des_disfont == "large") + { + DisFont = MDFN_FONT_9x18_18x18; + DisFontHeight = 17; + } + else // small + { + DisFont = MDFN_FONT_5x7; + DisFontHeight = 7; + } + + DIS_ENTRIES = 406 / DisFontHeight; + + //DIS_ENTRIES = CompactMode ? 46 : 58; + + NeedInit = FALSE; + WatchAddr = CurGame->Debugger->DefaultWatchAddr; + + DisAddr = GetPC(); + DisCOffs = 0xFFFFFFFF; + //if((*CurGame->Debugger->RegGroups)[0]->GetRegister) + // DisAddr = (*CurGame->Debugger->RegGroups)[0]->GetRegister(/*PC*/0, NULL, 0); // FIXME + // else + // DisAddr = (*CurGame->Debugger->RegGroups)[0]->OLDGetRegister("PC", NULL); // FIXME + + RegsCols = 0; + RegsTotalWidth = 0; + + memset(RegsColsCounts, 0, sizeof(RegsColsCounts)); + + int pw_offset = 0; + for(unsigned int r = 0; r < CurGame->Debugger->RegGroups->size(); r++) + { + uint32 pw = 0; + int x; + + for(x = 0; (*CurGame->Debugger->RegGroups)[r]->Regs[x].bsize; x++) + { + if((*CurGame->Debugger->RegGroups)[r]->Regs[x].bsize != 0xFFFF) + { + uint32 tmp_pw = strlen((*CurGame->Debugger->RegGroups)[r]->Regs[x].name.c_str()); + unsigned int bsize = (*CurGame->Debugger->RegGroups)[r]->Regs[x].bsize; + + if(bsize & 0x100) + tmp_pw += ((bsize & 0xFF) + 3) / 4 + 2 + 2; + else + tmp_pw += bsize * 2 + 2 + 2; + + if(tmp_pw > pw) + pw = tmp_pw; + } + + RegsColsCounts[r]++; + } + + if(r == (CurGame->Debugger->RegGroups->size() - 1)) + pw -= 2; + + if(x * 7 > (DIS_ENTRIES * DisFontHeight)) + { + pw *= 4; + RegsWhichFont[r] = MDFN_FONT_4x5; + } + else + { + pw *= 5; + RegsWhichFont[r] = MDFN_FONT_5x7; + } + + RegsCols++; + RegsColsPixOffset[r] = pw_offset; + + //printf("Column %d, Offset %d\n", r, pw_offset); + + pw_offset += pw; + } + RegsTotalWidth = pw_offset; + NeedHooksInstalled = TRUE; + } + + if(NeedHooksInstalled) + { + NeedHooksInstalled = FALSE; + CurGame->Debugger->SetCPUCallback(CPUCallback); + CurGame->Debugger->SetBPCallback(BPCallback); + ParseBreakpoints(ReadBreakpoints, BPOINT_READ); + ParseBreakpoints(WriteBreakpoints, BPOINT_WRITE); + ParseBreakpoints(IOReadBreakpoints, BPOINT_IO_READ); + ParseBreakpoints(IOWriteBreakpoints, BPOINT_IO_WRITE); + ParseBreakpoints(AuxReadBreakpoints, BPOINT_AUX_READ); + ParseBreakpoints(AuxReadBreakpoints, BPOINT_AUX_READ); + + if(WhichMode == 1) + GfxDebugger_SetActive(TRUE); + //else if(WhichMode == 2) + // MemDebugger_SetActive(TRUE); //zero 07-feb-2012 - no memdebugger now + else if(WhichMode == 3) + LogDebugger_SetActive(TRUE); + } + } + else // Disabled, yahyahyah + { + // Only uninstall our hooks if we don't have any active breakpoints, and trace log is off. + if(!PCBreakPoints.size() && !ReadBreakpoints.size() && !WriteBreakpoints.size() && !IOReadBreakpoints.size() && + !IOWriteBreakpoints.size() && !AuxReadBreakpoints.size() && !AuxWriteBreakpoints.size() && !OpBreakpoints.size() + && !TraceLog) + { + NeedHooksInstalled = TRUE; + CurGame->Debugger->SetCPUCallback(FALSE); + CurGame->Debugger->SetBPCallback(FALSE); + GfxDebugger_SetActive(FALSE); +// MemDebugger_SetActive(FALSE); //zero 07-feb-2012 - no memdebugger now + LogDebugger_SetActive(FALSE); + } + } + SDL_MDFN_ShowCursor(IsActive); + } + return(IsActive); +} + +void Debugger_ModOpacity(int deltalove) +{ + DebuggerOpacity += deltalove; + if(DebuggerOpacity < 0) DebuggerOpacity = 0; + if(DebuggerOpacity > 0xFF) DebuggerOpacity = 0xFF; +} + +// Called from the main thread +void Debugger_Event(const SDL_Event *event) +{ + if(event->type == SDL_KEYDOWN) + { + if(event->key.keysym.mod & KMOD_ALT) + { + switch(event->key.keysym.sym) + { + case SDLK_1: WhichMode = 0; + GfxDebugger_SetActive(FALSE); + //MemDebugger_SetActive(FALSE); //zero 07-feb-2012 - no memdebugger now + LogDebugger_SetActive(FALSE); + break; + case SDLK_2: WhichMode = 1; + GfxDebugger_SetActive(TRUE); +// MemDebugger_SetActive(FALSE); //zero 07-feb-2012 - no memdebugger now + LogDebugger_SetActive(FALSE); + break; + case SDLK_3: if(CurGame->Debugger->AddressSpaces->size()) + { + WhichMode = 2; + GfxDebugger_SetActive(FALSE); +// MemDebugger_SetActive(TRUE); //zero 07-feb-2012 - no memdebugger now + LogDebugger_SetActive(FALSE); + } + break; + case SDLK_4: if(CurGame->Debugger->SetLogFunc) + { + WhichMode = 3; + GfxDebugger_SetActive(FALSE); +// MemDebugger_SetActive(FALSE); //zero 07-feb-2012 - no memdebugger now + LogDebugger_SetActive(TRUE); + } + break; + + default: break; + } + } + } + + if(WhichMode == 1) + { + GfxDebugger_Event(event); + return; + } + else if(WhichMode == 2) + { +// MemDebugger_Event(event); //zero 07-feb-2012 - no memdebugger now + return; + } + else if(WhichMode == 3) + { + LogDebugger_Event(event); + return; + } + + switch(event->type) + { + case SDL_KEYDOWN: + if(event->key.keysym.mod & KMOD_ALT) + break; + + if(InPrompt) + { + myprompt->Event(event); + + if(event->key.keysym.sym == SDLK_ESCAPE) + { + delete myprompt; + myprompt = NULL; + InPrompt = None; + } + } + else switch(event->key.keysym.sym) + { + default: break; + case SDLK_MINUS: Debugger_ModOpacity(-8); + break; + case SDLK_EQUALS: Debugger_ModOpacity(8); + break; + + case SDLK_HOME: + if(event->key.keysym.mod & KMOD_SHIFT) + { + if(WatchLogical) + WatchAddr = 0; + else + WatchAddrPhys = 0; + } + else + { + DisAddr = 0x0000; + DisCOffs = 0xFFFFFFFF; + } + break; + case SDLK_END: + if(event->key.keysym.mod & KMOD_SHIFT) + { + if(WatchLogical) + WatchAddr = ((1ULL << CurGame->Debugger->LogAddrBits) - 1) & ~0x7F; + else + WatchAddrPhys = (((uint64)1 << CurGame->Debugger->PhysAddrBits) - 1) & ~0x7F; + } + else + { + DisAddr = ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + DisAddr &= ~(CurGame->Debugger->InstructionAlignment - 1); + DisCOffs = 0xFFFFFFFF; + } + break; + + case SDLK_PAGEUP: + if(event->key.keysym.mod & KMOD_SHIFT) + { + int change = 0x80; //InRegs ? 0x100 : 0x80; + + if(WatchLogical) + WatchAddr = (WatchAddr - change) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + else + WatchAddrPhys = (WatchAddrPhys - change) & (((uint64)1 << CurGame->Debugger->PhysAddrBits) - 1); + } + else + NeedDisAddrChange = -11; + break; + case SDLK_PAGEDOWN: + if(event->key.keysym.mod & KMOD_SHIFT) + { + int change = 0x80; //InRegs ? 0x100 : 0x80; + + if(WatchLogical) + WatchAddr = (WatchAddr + change) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + else + WatchAddrPhys = (WatchAddrPhys + change) & (((uint64)1 << CurGame->Debugger->PhysAddrBits) - 1); + } + else + NeedDisAddrChange = 11; + break; + + case SDLK_m: + WatchLogical = !WatchLogical; + break; + + case SDLK_LEFT: + if(!InRegs) + InRegs = RegsCols; + else + InRegs = InRegs - 1; + + if(InRegs && RegsPos >= RegsColsCounts[InRegs - 1]) + RegsPos = RegsColsCounts[InRegs - 1] - 1; + + break; + case SDLK_RIGHT: + InRegs = (InRegs + 1) % (RegsCols + 1); + if(InRegs && RegsPos >= RegsColsCounts[InRegs - 1]) + RegsPos = RegsColsCounts[InRegs - 1] - 1; + break; + case SDLK_UP: + if(InRegs) + { + if(RegsPos) + RegsPos--; + } + else + { + if(event->key.keysym.mod & KMOD_SHIFT) + { + if(WatchLogical) + WatchAddr = (WatchAddr - 0x10) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + else + WatchAddrPhys = (WatchAddrPhys - 0x10) & (((uint64)1 << CurGame->Debugger->PhysAddrBits) - 1); + } + else + { + NeedDisAddrChange = -1; + } + } + break; + case SDLK_DOWN: + if(InRegs) + { + if(RegsPos < (RegsColsCounts[InRegs - 1] - 1)) + RegsPos++; + } + else + { + if(event->key.keysym.mod & KMOD_SHIFT) + { + if(WatchLogical) + WatchAddr = (WatchAddr + 0x10) & ((1ULL << CurGame->Debugger->LogAddrBits) - 1); + else + WatchAddrPhys = (WatchAddrPhys + 0x10) & (((uint64)1 << CurGame->Debugger->PhysAddrBits) - 1); + } + else + { + NeedDisAddrChange = 1; + } + } + break; + + case SDLK_t: + if(CurGame->Debugger->ToggleSyntax) + { + LockGameMutex(1); + CurGame->Debugger->ToggleSyntax(); + LockGameMutex(0); + } + break; + + case SDLK_SPACE: + NeedPCBPToggle = 1; + break; + case SDLK_s: + LockGameMutex(1); + NeedStep = 2; + LockGameMutex(0); + break; + case SDLK_w: + if(event->key.keysym.mod & KMOD_SHIFT) + { + if(event->key.keysym.mod & KMOD_CTRL) + { + InPrompt = IOWriteBPS; + myprompt = new DebuggerPrompt("I/O Write Breakpoints", IOWriteBreakpoints); + } + else + { + InPrompt = WriteBPS; + myprompt = new DebuggerPrompt("Write Breakpoints", WriteBreakpoints); + } + } + else if(event->key.keysym.mod & KMOD_CTRL) + { + InPrompt = AuxWriteBPS; + myprompt = new DebuggerPrompt("Aux Write Breakpoints", AuxWriteBreakpoints); + } + break; + + case SDLK_o: + if(event->key.keysym.mod & KMOD_SHIFT) + { + InPrompt = OpBPS; + myprompt = new DebuggerPrompt("Opcode Breakpoints", OpBreakpoints); + } + break; + case SDLK_r: + if(event->key.keysym.mod & KMOD_SHIFT) + { + if(event->key.keysym.mod & KMOD_CTRL) + { + InPrompt = IOReadBPS; + myprompt = new DebuggerPrompt("I/O Read Breakpoints", IOReadBreakpoints); + } + else + { + InPrompt = ReadBPS; + myprompt = new DebuggerPrompt("Read Breakpoints", ReadBreakpoints); + } + } + else if(event->key.keysym.mod & KMOD_CTRL) + { + InPrompt = AuxReadBPS; + myprompt = new DebuggerPrompt("Aux Read Breakpoints", AuxReadBreakpoints); + } + else + NeedRun = 1; + break; + + case SDLK_l: + if(!InPrompt) + { + InPrompt = TraceLogPrompt; + myprompt = new DebuggerPrompt("Trace Log(filename end_pc)", TraceLogSpec); + } + case SDLK_i: + if(!InPrompt && CurGame->Debugger->IRQ) + { + InPrompt = ForceInt; + myprompt = new DebuggerPrompt("Force Interrupt", ""); + } + break; + case SDLK_p: + if(!InPrompt) + { + if(event->key.keysym.mod & KMOD_SHIFT) + { + InPrompt = PokeMeHL; + myprompt = new DebuggerPrompt("HL Poke(address value size)", ""); + } + else + { + InPrompt = PokeMe; + myprompt = new DebuggerPrompt("Poke(address value size)", ""); + } + } + break; + + case SDLK_RETURN: + { + char buf[64]; + std::string ptext; + + if(event->key.keysym.mod & KMOD_SHIFT) + { + InPrompt = WatchGoto; + ptext = "Watch Address"; + trio_snprintf(buf, 64, "%08X", WatchLogical ? WatchAddr : WatchAddrPhys); + } + else + { + if(InRegs) + { + if((*CurGame->Debugger->RegGroups)[InRegs - 1]->Regs[RegsPos].bsize == 0xFFFF) + break; + + InPrompt = (PromptType)(EditRegs); + CurRegIP = &(*CurGame->Debugger->RegGroups)[InRegs - 1]->Regs[RegsPos]; + CurRegGroupIP = (*CurGame->Debugger->RegGroups)[InRegs - 1]; + + ptext = CurRegIP->name; + int len = CurRegIP->bsize; + + LockGameMutex(1); + uint32 RegValue; + + if(CurRegGroupIP->GetRegister) + RegValue = CurRegGroupIP->GetRegister(CurRegIP->id, NULL, 0); + else + RegValue = CurRegGroupIP->OLDGetRegister(CurRegIP->name, NULL); + + LockGameMutex(0); + + if(len == 1) + trio_snprintf(buf, 64, "%02X", RegValue); + else if(len == 2) + trio_snprintf(buf, 64, "%04X", RegValue); + else + trio_snprintf(buf, 64, "%08X", RegValue); + } + else + { + InPrompt = DisGoto; + ptext = "Disassembly Address"; + trio_snprintf(buf, 64, "%04X", DisAddr); + } + } + + myprompt = new DebuggerPrompt(ptext, buf); + } + break; + } + break; + } +} + diff --git a/libmednahawk/src/drivers/debugger.h b/libmednahawk/src/drivers/debugger.h new file mode 100644 index 0000000000..e8f9e9a202 --- /dev/null +++ b/libmednahawk/src/drivers/debugger.h @@ -0,0 +1,29 @@ +#ifndef __MDFN_DRIVERS_DEBUGGER_H +#define __MDFN_DRIVERS_DEBUGGER_H + +#ifdef WANT_DEBUGGER +void Debugger_Draw(MDFN_Surface *surface, MDFN_Rect *rect, const MDFN_Rect *screen_rect); +void Debugger_ModOpacity(int deltalove); + +void Debugger_ForceStepIfStepping(); // For synchronizations with save state loading and reset/power toggles. Should be called from game thread only. + +bool Debugger_IsActive(unsigned int *w = NULL, unsigned int *h = NULL); +void Debugger_Event(const SDL_Event *event); +bool Debugger_Toggle(void); +void Debugger_ForceSteppingMode(void); + +extern volatile bool InSteppingMode; +#else + +#define Debugger_Event(a) +#define Debugger_Draw(a, b, c) +#define Debugger_ForceStepIfStepping() +//#define Debugger_IsActive(a, b) 0 +#define Debugger_IsActive(...) 0 +#define Debugger_Toggle() +#define Debugger_ForceSteppingMode() +#define InSteppingMode 0 + +#endif + +#endif diff --git a/libmednahawk/src/drivers/ers.cpp b/libmednahawk/src/drivers/ers.cpp new file mode 100644 index 0000000000..e9ce34e3e6 --- /dev/null +++ b/libmednahawk/src/drivers/ers.cpp @@ -0,0 +1,102 @@ +#include "main.h" +#include "ers.h" + + +// Typical call sequence(example not done completely): +// NeedFrameSkip() +// (Emulate frame) +// AddEmuTime() +// Sync() or SetETtoRT() as appropriate if using another timebase too. +// (repeat) + +EmuRealSyncher::EmuRealSyncher() +{ + EmuClock = 0; +} + +void EmuRealSyncher::SetEmuClock(int64 EmuClock_arg) +{ + EmuClock = EmuClock_arg; + + NoFrameSkipTH = 50 * EmuClock / 1000; + ForcedCatchupTH = 75 * EmuClock / 1000; + + // This is overwritten in the auto-frame-rate detection code. + FrameSkipTH = 25 * EmuClock / 1000; + SetETtoRT(); + + AvgTimePerFrame = 0; + tmp_frame_accumtime = 0; +} + + +bool EmuRealSyncher::NeedFrameSkip(void) +{ + int64 RealTime = (int64)SDL_GetTicks() * EmuClock / 1000; + + // If emulation time has fallen behind real time a bit(due to Mednafen not getting enough host CPU time), + // indicate a frameskip condition in an effort to reduce Mednafen's host CPU usage so emulation time can catch up + // to real time. + if((RealTime - EmuTime) >= FrameSkipTH) + { + if((RealTime - LastNoFrameSkipTime) < NoFrameSkipTH) + return(true); + } + + LastNoFrameSkipTime = RealTime; + return(false); +} + +void EmuRealSyncher::AddEmuTime(const int64 zetime, bool frame_end) +{ + EmuTime += zetime; + + tmp_frame_accumtime += zetime; + + if(frame_end) + { + if(!AvgTimePerFrame) + AvgTimePerFrame = tmp_frame_accumtime << 8; + else + AvgTimePerFrame += ((tmp_frame_accumtime << 8) - AvgTimePerFrame) >> 2; + + FrameSkipTH = 1.5 * (AvgTimePerFrame >> 8); + + //printf("%lld\n", AvgTimePerFrame >> 8); + tmp_frame_accumtime = 0; + } +} + +void EmuRealSyncher::SetETtoRT(void) +{ + int64 RealTime = (int64)SDL_GetTicks() * EmuClock / 1000; + + EmuTime = RealTime; +} + +void EmuRealSyncher::Sync(void) +{ + int64 RealTime; + + do + { + int64 SleepTime; + + RealTime = (int64)SDL_GetTicks() * EmuClock / 1000; + + // If emulation time has fallen behind real time too far(due to Mednafen not getting enough host CPU time), + // do a forced catchup, to prevent running way too fast for an excessive period of time(which makes the game as unplayable + // as it would be when emulation was running way too slow for an excessive period of time) + if((RealTime - EmuTime) >= ForcedCatchupTH) + { + EmuTime = RealTime; + } + + SleepTime = ((EmuTime - RealTime) * 1000 / EmuClock) - 1; + + if(SleepTime >= 0) + SDL_Delay(SleepTime); + + } while(RealTime < EmuTime); +} + diff --git a/libmednahawk/src/drivers/ers.h b/libmednahawk/src/drivers/ers.h new file mode 100644 index 0000000000..5271378d10 --- /dev/null +++ b/libmednahawk/src/drivers/ers.h @@ -0,0 +1,33 @@ +class EmuRealSyncher +{ + public: + EmuRealSyncher(); + ~EmuRealSyncher() + { + + } + + void SetEmuClock(int64 EmuClock_arg); + + bool NeedFrameSkip(void); + void Sync(); + void AddEmuTime(const int64 zetime, bool frame_end = true); + + void SetETtoRT(void); + + private: + int64 EmuClock; + + int64 EmuTime; + + int64 ForcedCatchupTH; + int64 FrameSkipTH; + int64 NoFrameSkipTH; + + int64 LastNoFrameSkipTime; + + int64 AvgTimePerFrame; // 56.8 + + int64 tmp_frame_accumtime; +}; + diff --git a/libmednahawk/src/drivers/fps.cpp b/libmednahawk/src/drivers/fps.cpp new file mode 100644 index 0000000000..ea520ff217 --- /dev/null +++ b/libmednahawk/src/drivers/fps.cpp @@ -0,0 +1,185 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "video.h" +#include + +static uint32 VirtualTime[128], DrawnTime[128], BlittedTime[128]; +static uint32 VirtualIndex, DrawnIndex, BlittedIndex; +static MDFN_Surface *FPSSurface = NULL; +static MDFN_Rect FPSRect; + +void FPS_Init(void) +{ + VirtualIndex = 0; + DrawnIndex = 0; + BlittedIndex = 0; + + memset(VirtualTime, 0, sizeof(VirtualTime)); + memset(DrawnTime, 0, sizeof(DrawnTime)); + memset(BlittedTime, 0, sizeof(BlittedTime)); +} + +void FPS_IncVirtual(void) +{ + VirtualTime[VirtualIndex] = SDL_GetTicks(); + VirtualIndex = (VirtualIndex + 1) & 127; +} + +void FPS_IncDrawn(void) +{ + DrawnTime[DrawnIndex] = SDL_GetTicks(); + DrawnIndex = (DrawnIndex + 1) & 127; +} + +void FPS_IncBlitted(void) +{ + BlittedTime[BlittedIndex] = SDL_GetTicks(); + BlittedIndex = (BlittedIndex + 1) & 127; +} + +static bool isactive = 0; + +void FPS_ToggleView(void) +{ + isactive ^= 1; +} + +const int box_width = 6 * 5; +const int box_height = 3 * 7; + +bool FPS_IsActive(int *w, int *h) +{ + if(!isactive) + return(FALSE); + + if(w) + *w = box_width; + + if(h) + *h = box_height; + + return(TRUE); +} + +static void CalcFramerates(char *virtfps, char *drawnfps, char *blitfps, size_t maxlen) +{ + uint32 curtime = SDL_GetTicks(); + uint32 vt_frames_drawn = 0, dt_frames_drawn = 0, bt_frames_drawn = 0; + uint32 vt_mintime, dt_mintime, bt_mintime; + + vt_mintime = dt_mintime = bt_mintime = curtime; + + for(int x = 0; x < 128; x++) + { + uint32 vt = VirtualTime[x]; + uint32 dt = DrawnTime[x]; + uint32 bt = BlittedTime[x]; + + if(vt >= (curtime - 1000)) + { + if(vt < vt_mintime) vt_mintime = vt; + vt_frames_drawn++; + } + + if(dt >= (curtime - 1000)) + { + if(dt < dt_mintime) dt_mintime = dt; + dt_frames_drawn++; + } + + if(bt >= (curtime - 1000)) + { + if(bt < bt_mintime) bt_mintime = bt; + bt_frames_drawn++; + } + } + + if(curtime - vt_mintime) + trio_snprintf(virtfps, maxlen, "%f", (double)vt_frames_drawn * 1000 / (curtime - vt_mintime)); + else + trio_snprintf(virtfps, maxlen, "?"); + + if(curtime - dt_mintime) + trio_snprintf(drawnfps, maxlen, "%f", (double)dt_frames_drawn * 1000 / (curtime - dt_mintime)); + else + trio_snprintf(drawnfps, maxlen, "?"); + + if(curtime - bt_mintime) + trio_snprintf(blitfps, maxlen, "%f", (double)bt_frames_drawn * 1000 / (curtime - bt_mintime)); + else + trio_snprintf(blitfps, maxlen, "?"); +} + +void FPS_Draw(MDFN_Surface *target, const int xpos, const int ypos) +{ + if(!isactive) + return; + + const uint32 bg_color = target->MakeColor(0, 0, 0); + const uint32 text_color = target->MakeColor(0xFF, 0xFF, 0xFF); + char virtfps[64], drawnfps[64], blitfps[64]; + + CalcFramerates(virtfps, drawnfps, blitfps, 64); + + MDFN_DrawRectangleFill(target->pixels, target->pitch32, xpos, ypos, bg_color, bg_color, box_width, box_height); + + DrawTextTrans(target->pixels + xpos + ypos * target->pitch32, target->pitch32 << 2, box_width, (UTF8*)virtfps, text_color, FALSE, TRUE); + DrawTextTrans(target->pixels + xpos + (ypos + 7) * target->pitch32, target->pitch32 << 2, box_width, (UTF8*)drawnfps, text_color, FALSE, TRUE); + DrawTextTrans(target->pixels + xpos + (ypos + 7 * 2) * target->pitch32, target->pitch32 << 2, box_width, (UTF8*)blitfps, text_color, FALSE, TRUE); +} + +#define MK_COLOR_A(surface, r,g,b,a) ( surface->MakeColor(r, g, b, a)) +void FPS_DrawToScreen(SDL_Surface *screen, int rs, int gs, int bs, int as) +{ + if(!isactive) + { + if(FPSSurface) + { + delete FPSSurface; + FPSSurface = NULL; + } + return; + } + + if(!FPSSurface) + { + FPSSurface = new MDFN_Surface(NULL, box_width, box_height, box_width, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, rs, gs, bs, as)); + FPSRect.w = box_width; + FPSRect.h = box_height; + FPSRect.x = FPSRect.y = 0; + } + + char virtfps[64], drawnfps[64], blitfps[64]; + + CalcFramerates(virtfps, drawnfps, blitfps, 64); + + FPSSurface->Fill(0, 0, 0, 0x80); + + DrawTextTrans(FPSSurface->pixels, FPSSurface->pitchinpix << 2, FPSSurface->w, (UTF8*)virtfps, MK_COLOR_A(FPSSurface, 0xFF, 0xFF, 0xFF, 0xFF), FALSE, TRUE); + DrawTextTrans(FPSSurface->pixels + 7 * FPSSurface->pitchinpix, FPSSurface->pitchinpix << 2, FPSSurface->w, (UTF8*)drawnfps, MK_COLOR_A(FPSSurface, 0xFF, 0xFF, 0xFF, 0xFF), FALSE, TRUE); + DrawTextTrans(FPSSurface->pixels + 7 * 2 * FPSSurface->pitchinpix, FPSSurface->pitchinpix << 2, FPSSurface->w, (UTF8*)blitfps, MK_COLOR_A(FPSSurface, 0xFF, 0xFF, 0xFF, 0xFF), FALSE, TRUE); + + MDFN_Rect drect; + drect.x = 0; + drect.y = 0; + drect.w = FPSRect.w; + drect.h = FPSRect.h; + + BlitRaw(FPSSurface, &FPSRect, &drect, -1); +} diff --git a/libmednahawk/src/drivers/fps.h b/libmednahawk/src/drivers/fps.h new file mode 100644 index 0000000000..ad78b7b18b --- /dev/null +++ b/libmednahawk/src/drivers/fps.h @@ -0,0 +1,13 @@ +#ifndef __MDFN_DRIVERS_FPS_H +#define __MDFN_DRIVERS_FPS_H + +void FPS_IncVirtual(void); +void FPS_IncDrawn(void); +void FPS_IncBlitted(void); +void FPS_Init(void); +void FPS_Draw(MDFN_Surface *target, const int xpos, const int ypos); +void FPS_DrawToScreen(SDL_Surface *screen, int rs, int gs, int bs, int as); +bool FPS_IsActive(int *w, int *h); +void FPS_ToggleView(void); + +#endif diff --git a/libmednahawk/src/drivers/gfxdebugger.cpp b/libmednahawk/src/drivers/gfxdebugger.cpp new file mode 100644 index 0000000000..9deede6167 --- /dev/null +++ b/libmednahawk/src/drivers/gfxdebugger.cpp @@ -0,0 +1,263 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "gfxdebugger.h" +#include "debugger.h" +#include + +static MDFN_Surface *gd_surface = NULL; +static bool IsActive = 0; +static const char *LayerNames[16]; +static int LayerScanline[16] = { 0 }; +static int LayerScroll[16] = { 0 }; +static int LayerPBN[16] = { 0 }; +static int LayerCount = 0; +static int CurLayer = 0; + +static void RedoSGD(bool instant = 0) +{ + CurGame->Debugger->SetGraphicsDecode(gd_surface, instant ? -1 : LayerScanline[CurLayer], CurLayer, 0, LayerScroll[CurLayer], LayerPBN[CurLayer]); +} + +// Call this function from either thread. +void GfxDebugger_SetActive(bool newia) +{ + if(CurGame->Debugger && CurGame->Debugger->SetGraphicsDecode) + { + LockGameMutex(1); + + IsActive = newia; + + if(IsActive && !LayerCount) + { + LayerCount = 0; + + int clen; + const char *lnp = CurGame->LayerNames; + while((clen = strlen(lnp))) + { + LayerNames[LayerCount] = lnp; + LayerCount++; + lnp += clen + 1; + } + } + + if(!IsActive) + { + if(gd_surface) + { + delete gd_surface; + gd_surface = NULL; + } + } + else if(IsActive) + { + if(!gd_surface) + gd_surface = new MDFN_Surface(NULL, 128, 128, 128 * 3, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, 0, 8, 16, 24)); + } + RedoSGD(); + LockGameMutex(0); + } +} + +#define MK_COLOR_A(r,g,b,a) (pf_cache.MakeColor(r, g, b, a)) + +// Call this function from the main thread +void GfxDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect) +{ + if(!IsActive) + return; + + const MDFN_PixelFormat pf_cache = surface->format; + uint32 *src_pixels; + uint32 * pixels = surface->pixels; + uint32 pitch32 = surface->pitchinpix; + bool ism; + + LockGameMutex(1); + + ism = InSteppingMode; + + if(ism) + { + RedoSGD(TRUE); + } + + if(gd_surface->format.Rshift != surface->format.Rshift || gd_surface->format.Gshift != surface->format.Gshift || + gd_surface->format.Bshift != surface->format.Bshift || gd_surface->format.Ashift != surface->format.Ashift || + gd_surface->format.colorspace != surface->format.colorspace) + { + //puts("Convert Meow"); + gd_surface->SetFormat(surface->format, TRUE); + } + + src_pixels = gd_surface->pixels; + + if(!src_pixels) + { + LockGameMutex(0); + return; + } + + for(unsigned int y = 0; y < 128; y++) + { + uint32 *row = pixels + ((rect->w - 256) / 2) + y * pitch32 * 2; + for(unsigned int x = 0; x < 128; x++) + { + //printf("%d %d %d\n", y, x, pixels); + row[x*2] = row[x*2 + 1] = row[pitch32 + x*2] = row[pitch32 + x*2 + 1] = src_pixels[x + y * 128 * 3]; + //row[x] = MK_COLOR_A(0, 0, 0, 0xc0); + //row[x] = MK_COLOR_A(0x00, 0x00, 0x00, 0x7F); + } + } + + + // Draw layer name + { + for(unsigned int y = 256; y < 256 + 18; y++) + for(unsigned int x = 0; x < rect->w; x++) + { + pixels[y * pitch32 + x] = MK_COLOR_A(0x00, 0x00, 0x00, 0xC0); + } + char buf[256]; + + if(ism) + trio_snprintf(buf, 256, "%s, PBN: %d, Scroll: %d, Instant", LayerNames[CurLayer], LayerPBN[CurLayer], LayerScroll[CurLayer]); + else + trio_snprintf(buf, 256, "%s, PBN: %d, Scroll: %d, Line: %d", LayerNames[CurLayer], LayerPBN[CurLayer], LayerScroll[CurLayer], LayerScanline[CurLayer]); + DrawTextTransShadow(pixels + 256 * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)buf, MK_COLOR_A(0xF0, 0xF0, 0xF0, 0xFF), MK_COLOR_A(0, 0, 0, 0xFF), 1, FALSE); + } + + int mousex, mousey; + SDL_GetMouseState(&mousex, &mousey); + int vx, vy; + + vx = (mousex - screen_rect->x) * rect->w / screen_rect->w - ((rect->w - 256) / 2); + vy = (mousey - screen_rect->y) * rect->h / screen_rect->h; + + vx /= 2; + vy /= 2; + + if(vx < 128 && vy < 128 && vx >= 0 && vy >= 0) + { + if(src_pixels[vx + vy * 128 * 3] & (0xFF << surface->format.Ashift)) + { + for(unsigned int y = 278; y < 278 + 18; y++) + for(unsigned int x = 0; x < rect->w; x++) + { + pixels[y * pitch32 + x] = MK_COLOR_A(0x00, 0x00, 0x00, 0xC0); + } + char buf[256]; + + trio_snprintf(buf, 256, "Tile: %08x, Address: %08x", src_pixels[128 + vx + vy * 128 * 3], src_pixels[256 + vx + vy * 128 * 3]); + + DrawTextTransShadow(pixels + 278 * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)buf, MK_COLOR_A(0xF0, 0xF0, 0xF0, 0xFF), MK_COLOR_A(0, 0, 0, 0xFF), 1, FALSE); + } + } + + LockGameMutex(0); +} + +// Call this from the main thread +int GfxDebugger_Event(const SDL_Event *event) +{ + switch(event->type) + { + case SDL_KEYDOWN: + switch(event->key.keysym.sym) + { + default: break; + + case SDLK_MINUS: + LockGameMutex(1); + if(LayerScanline[CurLayer]) + { + LayerScanline[CurLayer]--; + RedoSGD(); + } + LockGameMutex(0); + break; + case SDLK_EQUALS: + LockGameMutex(1); + LayerScanline[CurLayer]++; + RedoSGD(); + LockGameMutex(0); + break; + case SDLK_UP: LockGameMutex(1); + if(LayerScroll[CurLayer]) + { + LayerScroll[CurLayer]--; + RedoSGD(); + } + LockGameMutex(0); + break; + + case SDLK_PAGEUP: + LockGameMutex(1); + LayerScroll[CurLayer] -= 8; + if(LayerScroll[CurLayer] < 0) + LayerScroll[CurLayer] = 0; + RedoSGD(); + LockGameMutex(0); + break; + + case SDLK_PAGEDOWN: + LockGameMutex(1); + LayerScroll[CurLayer] += 8; + RedoSGD(); + LockGameMutex(0); + break; + case SDLK_DOWN: LockGameMutex(1); + LayerScroll[CurLayer]++; + RedoSGD(); + LockGameMutex(0); + break; + case SDLK_LEFT: LockGameMutex(1); + CurLayer = (CurLayer - 1); + + if(CurLayer < 0) CurLayer = LayerCount - 1; + + RedoSGD(); + LockGameMutex(0); + break; + case SDLK_RIGHT: LockGameMutex(1); + CurLayer = (CurLayer + 1) % LayerCount; + RedoSGD(); + LockGameMutex(0); + break; + + + case SDLK_COMMA: LockGameMutex(1); + if(LayerPBN[CurLayer] >= 0) + LayerPBN[CurLayer]--; + RedoSGD(); + LockGameMutex(0); + break; + + case SDLK_PERIOD: + LockGameMutex(1); + LayerPBN[CurLayer]++; + RedoSGD(); + LockGameMutex(0); + break; + } + break; + } + return(1); +} + diff --git a/libmednahawk/src/drivers/gfxdebugger.h b/libmednahawk/src/drivers/gfxdebugger.h new file mode 100644 index 0000000000..554b07d559 --- /dev/null +++ b/libmednahawk/src/drivers/gfxdebugger.h @@ -0,0 +1,8 @@ +#ifndef __MDFN_DRIVERS_GFXDEBUGGER_H +#define __MDFN_DRIVERS_GFXDEBUGGER_H + +void GfxDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect); +int GfxDebugger_Event(const SDL_Event *event); +void GfxDebugger_SetActive(bool newia); + +#endif diff --git a/libmednahawk/src/drivers/help.cpp b/libmednahawk/src/drivers/help.cpp new file mode 100644 index 0000000000..6142fc334a --- /dev/null +++ b/libmednahawk/src/drivers/help.cpp @@ -0,0 +1,121 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" + +#include + +static bool IsActive; + +void Help_Draw(MDFN_Surface *surface, const MDFN_Rect *rect) +{ + if(!IsActive) return; + + uint32 bgcolor = surface->MakeColor(0, 0, 0, 0xFF); + uint32 *pixels = surface->pixels; + uint32 pitch32 = surface->pitch32; + + for(int y = 0; y < rect->h; y++) + { + uint32 *row = pixels + y * pitch32; + + for(int x = 0; x < rect->w; x++) + row[x] = bgcolor; + } + + static const char *HelpStrings[][2] = { + { "F1", gettext_noop("Toggle Help") }, + { "-", NULL }, + { "F2", gettext_noop("Configure Command Key") }, + { "SHIFT + F2", gettext_noop("Configure Command Key, for logical AND mode") }, + { "ALT + SHIFT + [n]", gettext_noop("Configure buttons on port n(1-5)") }, + { "CTRL + SHIFT + [n]", gettext_noop("Select device on port n") }, + { "Scroll Lock", gettext_noop("Toggle input grabbing(for emulated mice)") }, + { "-", NULL }, + { "ALT + O", gettext_noop("Rotate Screen") }, + { "ALT + ENTER", gettext_noop("Toggle Fullscreen Mode") }, + { "F9", gettext_noop("Take Screen Snapshot") }, + { "-", NULL }, + { "ALT + S", gettext_noop("Enable state rewinding") }, + { "BACKSPACE", gettext_noop("Rewind") }, + { "F5", gettext_noop("Save State") }, + { "F7", gettext_noop("Load State") }, + { "F6", gettext_noop("Select Disk") }, + { "F8", gettext_noop("Insert coin; Insert/Eject disk") }, + { "-", NULL }, + { "F10", gettext_noop("(Soft) Reset, if available on emulated system.") }, + { "F11", gettext_noop("Power Toggle/Hard Reset") }, + { "F12", gettext_noop("Exit") }, +}; + + unsigned y = 0; + + DrawTextTrans(pixels + pitch32 * y, surface->pitch32 << 2, rect->w, (UTF8 *)_("Default key assignments:"), surface->MakeColor(0x00,0xFF,0x00,0xFF), false, MDFN_FONT_9x18_18x18); + y += 18; + + for(unsigned int i = 0; i < sizeof(HelpStrings) / sizeof(HelpStrings[0]); i++) + { + if((int)(y + 18) > rect->h) + break; + + unsigned x = 0; + if(HelpStrings[i][0][0] == '-') + { + y -= 4; + DrawTextTrans(pixels + pitch32 * y, surface->pitch32 << 2, rect->w, (UTF8*)" -------------------------------------------------------", surface->MakeColor(0x60,0x60,0x60,0xFF), FALSE, MDFN_FONT_9x18_18x18); + y += 14; + } + else + { + x += 9; + + x += DrawTextTrans(pixels + pitch32 * y + x, surface->pitch32 << 2, rect->w - x, (UTF8*)HelpStrings[i][0], + surface->MakeColor(0x40,0xDF,0x40,0xFF), FALSE, MDFN_FONT_9x18_18x18); + + x += DrawTextTrans(pixels + pitch32 * y + x, surface->pitch32 << 2, rect->w - x, (UTF8*)" - ", + surface->MakeColor(0x40,0x40,0x40,0xFF), FALSE, MDFN_FONT_9x18_18x18); + + x += DrawTextTrans(pixels + pitch32 * y + x, surface->pitch32 << 2, rect->w - x, (UTF8*)_(HelpStrings[i][1]), + surface->MakeColor(0xC0,0xC0,0xC0,0xFF), FALSE, MDFN_FONT_9x18_18x18); + + y += 18; + } + + } +} + +bool Help_IsActive(void) +{ + + return(IsActive); +} + +bool Help_Toggle(void) +{ + IsActive = !IsActive; + return(IsActive); +} + +void Help_Init(void) +{ + IsActive = false; +} + +void Help_Close(void) +{ + +} diff --git a/libmednahawk/src/drivers/help.h b/libmednahawk/src/drivers/help.h new file mode 100644 index 0000000000..ba5cc51cd6 --- /dev/null +++ b/libmednahawk/src/drivers/help.h @@ -0,0 +1,10 @@ +#ifndef __MDFN_DRIVERS_HELP_H +#define __MDFN_DRIVERS_HELP_H + +void Help_Draw(MDFN_Surface *surface, const MDFN_Rect *rect); +bool Help_IsActive(void); +bool Help_Toggle(void); +void Help_Init(void); +void Help_Close(void); + +#endif diff --git a/libmednahawk/src/drivers/hq2x.cpp b/libmednahawk/src/drivers/hq2x.cpp new file mode 100644 index 0000000000..b978c9a937 --- /dev/null +++ b/libmednahawk/src/drivers/hq2x.cpp @@ -0,0 +1,2860 @@ +//hq2x filter demo program +//---------------------------------------------------------- +//Copyright (C) 2003 MaxSt ( maxst@hiend3d.com ) + +//This program is free software; you can redistribute it and/or +//modify it under the terms of the GNU Lesser General Public +//License as published by the Free Software Foundation; either +//version 2.1 of the License, or (at your option) any later version. +// +//This program is distributed in the hope that it will be useful, +//but WITHOUT ANY WARRANTY; without even the implied warranty of +//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +//Lesser General Public License for more details. +// +//You should have received a copy of the GNU Lesser General Public +//License along with this program; if not, write to the Free Software +//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +/* Modified for usage in Mednafen */ + +#include "main.h" +#include + +#define HQXX_INTERNAL +#include "hqxx-common.h" + +static inline void Interp1(unsigned char * pc, int c1, int c2) +{ + *((int*)pc) = (c1*3+c2) >> 2; +} + +static inline void Interp2(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = (c1*2+c2+c3) >> 2; +} + +static inline void Interp5(unsigned char * pc, int c1, int c2) +{ + *((int*)pc) = (c1+c2) >> 1; +} + +static inline void Interp6(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = ((((c1 & 0x00FF00)*5 + (c2 & 0x00FF00)*2 + (c3 & 0x00FF00) ) & 0x0007F800) + + (((c1 & 0xFF00FF)*5 + (c2 & 0xFF00FF)*2 + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3; +} + +static inline void Interp7(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = ((((c1 & 0x00FF00)*6 + (c2 & 0x00FF00) + (c3 & 0x00FF00) ) & 0x0007F800) + + (((c1 & 0xFF00FF)*6 + (c2 & 0xFF00FF) + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3; +} + +static inline void Interp9(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = ((((c1 & 0x00FF00)*2 + ((c2 & 0x00FF00) + (c3 & 0x00FF00))*3 ) & 0x0007F800) + + (((c1 & 0xFF00FF)*2 + ((c2 & 0xFF00FF) + (c3 & 0xFF00FF))*3 ) & 0x07F807F8)) >> 3; +} + +static inline void Interp10(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = ((((c1 & 0x00FF00)*14 + (c2 & 0x00FF00) + (c3 & 0x00FF00) ) & 0x000FF000) + + (((c1 & 0xFF00FF)*14 + (c2 & 0xFF00FF) + (c3 & 0xFF00FF) ) & 0x0FF00FF0)) >> 4; +} + + +#define PIXEL00_0 *((int*)(pOut)) = w[5]; +#define PIXEL00_10 Interp1(pOut, w[5], w[1]); +#define PIXEL00_11 Interp1(pOut, w[5], w[4]); +#define PIXEL00_12 Interp1(pOut, w[5], w[2]); +#define PIXEL00_20 Interp2(pOut, w[5], w[4], w[2]); +#define PIXEL00_21 Interp2(pOut, w[5], w[1], w[2]); +#define PIXEL00_22 Interp2(pOut, w[5], w[1], w[4]); +#define PIXEL00_60 Interp6(pOut, w[5], w[2], w[4]); +#define PIXEL00_61 Interp6(pOut, w[5], w[4], w[2]); +#define PIXEL00_70 Interp7(pOut, w[5], w[4], w[2]); +#define PIXEL00_90 Interp9(pOut, w[5], w[4], w[2]); +#define PIXEL00_100 Interp10(pOut, w[5], w[4], w[2]); +#define PIXEL01_0 *((int*)(pOut+4)) = w[5]; +#define PIXEL01_10 Interp1(pOut+4, w[5], w[3]); +#define PIXEL01_11 Interp1(pOut+4, w[5], w[2]); +#define PIXEL01_12 Interp1(pOut+4, w[5], w[6]); +#define PIXEL01_20 Interp2(pOut+4, w[5], w[2], w[6]); +#define PIXEL01_21 Interp2(pOut+4, w[5], w[3], w[6]); +#define PIXEL01_22 Interp2(pOut+4, w[5], w[3], w[2]); +#define PIXEL01_60 Interp6(pOut+4, w[5], w[6], w[2]); +#define PIXEL01_61 Interp6(pOut+4, w[5], w[2], w[6]); +#define PIXEL01_70 Interp7(pOut+4, w[5], w[2], w[6]); +#define PIXEL01_90 Interp9(pOut+4, w[5], w[2], w[6]); +#define PIXEL01_100 Interp10(pOut+4, w[5], w[2], w[6]); +#define PIXEL10_0 *((int*)(pOut+BpL)) = w[5]; +#define PIXEL10_10 Interp1(pOut+BpL, w[5], w[7]); +#define PIXEL10_11 Interp1(pOut+BpL, w[5], w[8]); +#define PIXEL10_12 Interp1(pOut+BpL, w[5], w[4]); +#define PIXEL10_20 Interp2(pOut+BpL, w[5], w[8], w[4]); +#define PIXEL10_21 Interp2(pOut+BpL, w[5], w[7], w[4]); +#define PIXEL10_22 Interp2(pOut+BpL, w[5], w[7], w[8]); +#define PIXEL10_60 Interp6(pOut+BpL, w[5], w[4], w[8]); +#define PIXEL10_61 Interp6(pOut+BpL, w[5], w[8], w[4]); +#define PIXEL10_70 Interp7(pOut+BpL, w[5], w[8], w[4]); +#define PIXEL10_90 Interp9(pOut+BpL, w[5], w[8], w[4]); +#define PIXEL10_100 Interp10(pOut+BpL, w[5], w[8], w[4]); +#define PIXEL11_0 *((int*)(pOut+BpL+4)) = w[5]; +#define PIXEL11_10 Interp1(pOut+BpL+4, w[5], w[9]); +#define PIXEL11_11 Interp1(pOut+BpL+4, w[5], w[6]); +#define PIXEL11_12 Interp1(pOut+BpL+4, w[5], w[8]); +#define PIXEL11_20 Interp2(pOut+BpL+4, w[5], w[6], w[8]); +#define PIXEL11_21 Interp2(pOut+BpL+4, w[5], w[9], w[8]); +#define PIXEL11_22 Interp2(pOut+BpL+4, w[5], w[9], w[6]); +#define PIXEL11_60 Interp6(pOut+BpL+4, w[5], w[8], w[6]); +#define PIXEL11_61 Interp6(pOut+BpL+4, w[5], w[6], w[8]); +#define PIXEL11_70 Interp7(pOut+BpL+4, w[5], w[6], w[8]); +#define PIXEL11_90 Interp9(pOut+BpL+4, w[5], w[6], w[8]); +#define PIXEL11_100 Interp10(pOut+BpL+4, w[5], w[6], w[8]); + +static inline int Diff(unsigned int w1, unsigned int w2) +{ + int YUV1; + int YUV2; + + YUV1 = hqxx_RGB_to_YUV(w1); + YUV2 = hqxx_RGB_to_YUV(w2); + + return ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) || + ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) || + ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) ); +} + +void hq2x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int srcBpL, int BpL ) +{ + int i, j, k; + int prevline, nextline; + unsigned int w[10]; + + // +----+----+----+ + // | | | | + // | w1 | w2 | w3 | + // +----+----+----+ + // | | | | + // | w4 | w5 | w6 | + // +----+----+----+ + // | | | | + // | w7 | w8 | w9 | + // +----+----+----+ + + for (j=0; j0) prevline = -srcBpL; else prevline = 0; + if (j0) + { + w[1] = *((unsigned int*)(pIn + prevline - sizeof(uint32))) & 0xFCFCFC; + w[4] = *((unsigned int*)(pIn - sizeof(uint32))) & 0xFCFCFC; + w[7] = *((unsigned int*)(pIn + nextline - sizeof(uint32))) & 0xFCFCFC; + } + else + { + w[1] = w[2]; + w[4] = w[5]; + w[7] = w[8]; + } + + if (i trY ) || + ( abs(YUV1U - (YUV2 & Umask)) > trU ) || + ( abs(YUV1V - (YUV2 & Vmask)) > trV ) ) + pattern |= flag; + } + flag <<= 1; + } + + switch (pattern) + { + case 0: + case 1: + case 4: + case 32: + case 128: + case 5: + case 132: + case 160: + case 33: + case 129: + case 36: + case 133: + case 164: + case 161: + case 37: + case 165: + { + PIXEL00_20 + PIXEL01_20 + PIXEL10_20 + PIXEL11_20 + break; + } + case 2: + case 34: + case 130: + case 162: + { + PIXEL00_22 + PIXEL01_21 + PIXEL10_20 + PIXEL11_20 + break; + } + case 16: + case 17: + case 48: + case 49: + { + PIXEL00_20 + PIXEL01_22 + PIXEL10_20 + PIXEL11_21 + break; + } + case 64: + case 65: + case 68: + case 69: + { + PIXEL00_20 + PIXEL01_20 + PIXEL10_21 + PIXEL11_22 + break; + } + case 8: + case 12: + case 136: + case 140: + { + PIXEL00_21 + PIXEL01_20 + PIXEL10_22 + PIXEL11_20 + break; + } + case 3: + case 35: + case 131: + case 163: + { + PIXEL00_11 + PIXEL01_21 + PIXEL10_20 + PIXEL11_20 + break; + } + case 6: + case 38: + case 134: + case 166: + { + PIXEL00_22 + PIXEL01_12 + PIXEL10_20 + PIXEL11_20 + break; + } + case 20: + case 21: + case 52: + case 53: + { + PIXEL00_20 + PIXEL01_11 + PIXEL10_20 + PIXEL11_21 + break; + } + case 144: + case 145: + case 176: + case 177: + { + PIXEL00_20 + PIXEL01_22 + PIXEL10_20 + PIXEL11_12 + break; + } + case 192: + case 193: + case 196: + case 197: + { + PIXEL00_20 + PIXEL01_20 + PIXEL10_21 + PIXEL11_11 + break; + } + case 96: + case 97: + case 100: + case 101: + { + PIXEL00_20 + PIXEL01_20 + PIXEL10_12 + PIXEL11_22 + break; + } + case 40: + case 44: + case 168: + case 172: + { + PIXEL00_21 + PIXEL01_20 + PIXEL10_11 + PIXEL11_20 + break; + } + case 9: + case 13: + case 137: + case 141: + { + PIXEL00_12 + PIXEL01_20 + PIXEL10_22 + PIXEL11_20 + break; + } + case 18: + case 50: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_20 + } + PIXEL10_20 + PIXEL11_21 + break; + } + case 80: + case 81: + { + PIXEL00_20 + PIXEL01_22 + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_20 + } + break; + } + case 72: + case 76: + { + PIXEL00_21 + PIXEL01_20 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_20 + } + PIXEL11_22 + break; + } + case 10: + case 138: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_20 + } + PIXEL01_21 + PIXEL10_22 + PIXEL11_20 + break; + } + case 66: + { + PIXEL00_22 + PIXEL01_21 + PIXEL10_21 + PIXEL11_22 + break; + } + case 24: + { + PIXEL00_21 + PIXEL01_22 + PIXEL10_22 + PIXEL11_21 + break; + } + case 7: + case 39: + case 135: + { + PIXEL00_11 + PIXEL01_12 + PIXEL10_20 + PIXEL11_20 + break; + } + case 148: + case 149: + case 180: + { + PIXEL00_20 + PIXEL01_11 + PIXEL10_20 + PIXEL11_12 + break; + } + case 224: + case 228: + case 225: + { + PIXEL00_20 + PIXEL01_20 + PIXEL10_12 + PIXEL11_11 + break; + } + case 41: + case 169: + case 45: + { + PIXEL00_12 + PIXEL01_20 + PIXEL10_11 + PIXEL11_20 + break; + } + case 22: + case 54: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_20 + PIXEL11_21 + break; + } + case 208: + case 209: + { + PIXEL00_20 + PIXEL01_22 + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 104: + case 108: + { + PIXEL00_21 + PIXEL01_20 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_22 + break; + } + case 11: + case 139: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_21 + PIXEL10_22 + PIXEL11_20 + break; + } + case 19: + case 51: + { + if (Diff(w[2], w[6])) + { + PIXEL00_11 + PIXEL01_10 + } + else + { + PIXEL00_60 + PIXEL01_90 + } + PIXEL10_20 + PIXEL11_21 + break; + } + case 146: + case 178: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + PIXEL11_12 + } + else + { + PIXEL01_90 + PIXEL11_61 + } + PIXEL10_20 + break; + } + case 84: + case 85: + { + PIXEL00_20 + if (Diff(w[6], w[8])) + { + PIXEL01_11 + PIXEL11_10 + } + else + { + PIXEL01_60 + PIXEL11_90 + } + PIXEL10_21 + break; + } + case 112: + case 113: + { + PIXEL00_20 + PIXEL01_22 + if (Diff(w[6], w[8])) + { + PIXEL10_12 + PIXEL11_10 + } + else + { + PIXEL10_61 + PIXEL11_90 + } + break; + } + case 200: + case 204: + { + PIXEL00_21 + PIXEL01_20 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + PIXEL11_11 + } + else + { + PIXEL10_90 + PIXEL11_60 + } + break; + } + case 73: + case 77: + { + if (Diff(w[8], w[4])) + { + PIXEL00_12 + PIXEL10_10 + } + else + { + PIXEL00_61 + PIXEL10_90 + } + PIXEL01_20 + PIXEL11_22 + break; + } + case 42: + case 170: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + PIXEL10_11 + } + else + { + PIXEL00_90 + PIXEL10_60 + } + PIXEL01_21 + PIXEL11_20 + break; + } + case 14: + case 142: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + PIXEL01_12 + } + else + { + PIXEL00_90 + PIXEL01_61 + } + PIXEL10_22 + PIXEL11_20 + break; + } + case 67: + { + PIXEL00_11 + PIXEL01_21 + PIXEL10_21 + PIXEL11_22 + break; + } + case 70: + { + PIXEL00_22 + PIXEL01_12 + PIXEL10_21 + PIXEL11_22 + break; + } + case 28: + { + PIXEL00_21 + PIXEL01_11 + PIXEL10_22 + PIXEL11_21 + break; + } + case 152: + { + PIXEL00_21 + PIXEL01_22 + PIXEL10_22 + PIXEL11_12 + break; + } + case 194: + { + PIXEL00_22 + PIXEL01_21 + PIXEL10_21 + PIXEL11_11 + break; + } + case 98: + { + PIXEL00_22 + PIXEL01_21 + PIXEL10_12 + PIXEL11_22 + break; + } + case 56: + { + PIXEL00_21 + PIXEL01_22 + PIXEL10_11 + PIXEL11_21 + break; + } + case 25: + { + PIXEL00_12 + PIXEL01_22 + PIXEL10_22 + PIXEL11_21 + break; + } + case 26: + case 31: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_22 + PIXEL11_21 + break; + } + case 82: + case 214: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 88: + case 248: + { + PIXEL00_21 + PIXEL01_22 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 74: + case 107: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_21 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_22 + break; + } + case 27: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_10 + PIXEL10_22 + PIXEL11_21 + break; + } + case 86: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_21 + PIXEL11_10 + break; + } + case 216: + { + PIXEL00_21 + PIXEL01_22 + PIXEL10_10 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 106: + { + PIXEL00_10 + PIXEL01_21 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_22 + break; + } + case 30: + { + PIXEL00_10 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_22 + PIXEL11_21 + break; + } + case 210: + { + PIXEL00_22 + PIXEL01_10 + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 120: + { + PIXEL00_21 + PIXEL01_22 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_10 + break; + } + case 75: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_21 + PIXEL10_10 + PIXEL11_22 + break; + } + case 29: + { + PIXEL00_12 + PIXEL01_11 + PIXEL10_22 + PIXEL11_21 + break; + } + case 198: + { + PIXEL00_22 + PIXEL01_12 + PIXEL10_21 + PIXEL11_11 + break; + } + case 184: + { + PIXEL00_21 + PIXEL01_22 + PIXEL10_11 + PIXEL11_12 + break; + } + case 99: + { + PIXEL00_11 + PIXEL01_21 + PIXEL10_12 + PIXEL11_22 + break; + } + case 57: + { + PIXEL00_12 + PIXEL01_22 + PIXEL10_11 + PIXEL11_21 + break; + } + case 71: + { + PIXEL00_11 + PIXEL01_12 + PIXEL10_21 + PIXEL11_22 + break; + } + case 156: + { + PIXEL00_21 + PIXEL01_11 + PIXEL10_22 + PIXEL11_12 + break; + } + case 226: + { + PIXEL00_22 + PIXEL01_21 + PIXEL10_12 + PIXEL11_11 + break; + } + case 60: + { + PIXEL00_21 + PIXEL01_11 + PIXEL10_11 + PIXEL11_21 + break; + } + case 195: + { + PIXEL00_11 + PIXEL01_21 + PIXEL10_21 + PIXEL11_11 + break; + } + case 102: + { + PIXEL00_22 + PIXEL01_12 + PIXEL10_12 + PIXEL11_22 + break; + } + case 153: + { + PIXEL00_12 + PIXEL01_22 + PIXEL10_22 + PIXEL11_12 + break; + } + case 58: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_11 + PIXEL11_21 + break; + } + case 83: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 92: + { + PIXEL00_21 + PIXEL01_11 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 202: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + PIXEL01_21 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + PIXEL11_11 + break; + } + case 78: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + PIXEL11_22 + break; + } + case 154: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_22 + PIXEL11_12 + break; + } + case 114: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 89: + { + PIXEL00_12 + PIXEL01_22 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 90: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 55: + case 23: + { + if (Diff(w[2], w[6])) + { + PIXEL00_11 + PIXEL01_0 + } + else + { + PIXEL00_60 + PIXEL01_90 + } + PIXEL10_20 + PIXEL11_21 + break; + } + case 182: + case 150: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + PIXEL11_12 + } + else + { + PIXEL01_90 + PIXEL11_61 + } + PIXEL10_20 + break; + } + case 213: + case 212: + { + PIXEL00_20 + if (Diff(w[6], w[8])) + { + PIXEL01_11 + PIXEL11_0 + } + else + { + PIXEL01_60 + PIXEL11_90 + } + PIXEL10_21 + break; + } + case 241: + case 240: + { + PIXEL00_20 + PIXEL01_22 + if (Diff(w[6], w[8])) + { + PIXEL10_12 + PIXEL11_0 + } + else + { + PIXEL10_61 + PIXEL11_90 + } + break; + } + case 236: + case 232: + { + PIXEL00_21 + PIXEL01_20 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + PIXEL11_11 + } + else + { + PIXEL10_90 + PIXEL11_60 + } + break; + } + case 109: + case 105: + { + if (Diff(w[8], w[4])) + { + PIXEL00_12 + PIXEL10_0 + } + else + { + PIXEL00_61 + PIXEL10_90 + } + PIXEL01_20 + PIXEL11_22 + break; + } + case 171: + case 43: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL10_11 + } + else + { + PIXEL00_90 + PIXEL10_60 + } + PIXEL01_21 + PIXEL11_20 + break; + } + case 143: + case 15: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_12 + } + else + { + PIXEL00_90 + PIXEL01_61 + } + PIXEL10_22 + PIXEL11_20 + break; + } + case 124: + { + PIXEL00_21 + PIXEL01_11 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_10 + break; + } + case 203: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_21 + PIXEL10_10 + PIXEL11_11 + break; + } + case 62: + { + PIXEL00_10 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_11 + PIXEL11_21 + break; + } + case 211: + { + PIXEL00_11 + PIXEL01_10 + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 118: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_12 + PIXEL11_10 + break; + } + case 217: + { + PIXEL00_12 + PIXEL01_22 + PIXEL10_10 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 110: + { + PIXEL00_10 + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_22 + break; + } + case 155: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_10 + PIXEL10_22 + PIXEL11_12 + break; + } + case 188: + { + PIXEL00_21 + PIXEL01_11 + PIXEL10_11 + PIXEL11_12 + break; + } + case 185: + { + PIXEL00_12 + PIXEL01_22 + PIXEL10_11 + PIXEL11_12 + break; + } + case 61: + { + PIXEL00_12 + PIXEL01_11 + PIXEL10_11 + PIXEL11_21 + break; + } + case 157: + { + PIXEL00_12 + PIXEL01_11 + PIXEL10_22 + PIXEL11_12 + break; + } + case 103: + { + PIXEL00_11 + PIXEL01_12 + PIXEL10_12 + PIXEL11_22 + break; + } + case 227: + { + PIXEL00_11 + PIXEL01_21 + PIXEL10_12 + PIXEL11_11 + break; + } + case 230: + { + PIXEL00_22 + PIXEL01_12 + PIXEL10_12 + PIXEL11_11 + break; + } + case 199: + { + PIXEL00_11 + PIXEL01_12 + PIXEL10_21 + PIXEL11_11 + break; + } + case 220: + { + PIXEL00_21 + PIXEL01_11 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 158: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_22 + PIXEL11_12 + break; + } + case 234: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + PIXEL01_21 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_11 + break; + } + case 242: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 59: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_11 + PIXEL11_21 + break; + } + case 121: + { + PIXEL00_12 + PIXEL01_22 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 87: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 79: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + PIXEL11_22 + break; + } + case 122: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 94: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 218: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 91: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 229: + { + PIXEL00_20 + PIXEL01_20 + PIXEL10_12 + PIXEL11_11 + break; + } + case 167: + { + PIXEL00_11 + PIXEL01_12 + PIXEL10_20 + PIXEL11_20 + break; + } + case 173: + { + PIXEL00_12 + PIXEL01_20 + PIXEL10_11 + PIXEL11_20 + break; + } + case 181: + { + PIXEL00_20 + PIXEL01_11 + PIXEL10_20 + PIXEL11_12 + break; + } + case 186: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_11 + PIXEL11_12 + break; + } + case 115: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 93: + { + PIXEL00_12 + PIXEL01_11 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 206: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + PIXEL11_11 + break; + } + case 205: + case 201: + { + PIXEL00_12 + PIXEL01_20 + if (Diff(w[8], w[4])) + { + PIXEL10_10 + } + else + { + PIXEL10_70 + } + PIXEL11_11 + break; + } + case 174: + case 46: + { + if (Diff(w[4], w[2])) + { + PIXEL00_10 + } + else + { + PIXEL00_70 + } + PIXEL01_12 + PIXEL10_11 + PIXEL11_20 + break; + } + case 179: + case 147: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_10 + } + else + { + PIXEL01_70 + } + PIXEL10_20 + PIXEL11_12 + break; + } + case 117: + case 116: + { + PIXEL00_20 + PIXEL01_11 + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_10 + } + else + { + PIXEL11_70 + } + break; + } + case 189: + { + PIXEL00_12 + PIXEL01_11 + PIXEL10_11 + PIXEL11_12 + break; + } + case 231: + { + PIXEL00_11 + PIXEL01_12 + PIXEL10_12 + PIXEL11_11 + break; + } + case 126: + { + PIXEL00_10 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_10 + break; + } + case 219: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_10 + PIXEL10_10 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 125: + { + if (Diff(w[8], w[4])) + { + PIXEL00_12 + PIXEL10_0 + } + else + { + PIXEL00_61 + PIXEL10_90 + } + PIXEL01_11 + PIXEL11_10 + break; + } + case 221: + { + PIXEL00_12 + if (Diff(w[6], w[8])) + { + PIXEL01_11 + PIXEL11_0 + } + else + { + PIXEL01_60 + PIXEL11_90 + } + PIXEL10_10 + break; + } + case 207: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_12 + } + else + { + PIXEL00_90 + PIXEL01_61 + } + PIXEL10_10 + PIXEL11_11 + break; + } + case 238: + { + PIXEL00_10 + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + PIXEL11_11 + } + else + { + PIXEL10_90 + PIXEL11_60 + } + break; + } + case 190: + { + PIXEL00_10 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + PIXEL11_12 + } + else + { + PIXEL01_90 + PIXEL11_61 + } + PIXEL10_11 + break; + } + case 187: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL10_11 + } + else + { + PIXEL00_90 + PIXEL10_60 + } + PIXEL01_10 + PIXEL11_12 + break; + } + case 243: + { + PIXEL00_11 + PIXEL01_10 + if (Diff(w[6], w[8])) + { + PIXEL10_12 + PIXEL11_0 + } + else + { + PIXEL10_61 + PIXEL11_90 + } + break; + } + case 119: + { + if (Diff(w[2], w[6])) + { + PIXEL00_11 + PIXEL01_0 + } + else + { + PIXEL00_60 + PIXEL01_90 + } + PIXEL10_12 + PIXEL11_10 + break; + } + case 237: + case 233: + { + PIXEL00_12 + PIXEL01_20 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + PIXEL11_11 + break; + } + case 175: + case 47: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + PIXEL01_12 + PIXEL10_11 + PIXEL11_20 + break; + } + case 183: + case 151: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + PIXEL10_20 + PIXEL11_12 + break; + } + case 245: + case 244: + { + PIXEL00_20 + PIXEL01_11 + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + case 250: + { + PIXEL00_10 + PIXEL01_10 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 123: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_10 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_10 + break; + } + case 95: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_10 + PIXEL11_10 + break; + } + case 222: + { + PIXEL00_10 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_10 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 252: + { + PIXEL00_21 + PIXEL01_11 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + case 249: + { + PIXEL00_12 + PIXEL01_22 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 235: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_21 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + PIXEL11_11 + break; + } + case 111: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_22 + break; + } + case 63: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_11 + PIXEL11_21 + break; + } + case 159: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + PIXEL10_22 + PIXEL11_12 + break; + } + case 215: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + PIXEL10_21 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 246: + { + PIXEL00_22 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + case 254: + { + PIXEL00_10 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + case 253: + { + PIXEL00_12 + PIXEL01_11 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + case 251: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_10 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 239: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + PIXEL01_12 + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + PIXEL11_11 + break; + } + case 127: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_20 + } + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_20 + } + PIXEL11_10 + break; + } + case 191: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + PIXEL10_11 + PIXEL11_12 + break; + } + case 223: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + PIXEL10_10 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_20 + } + break; + } + case 247: + { + PIXEL00_11 + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + PIXEL10_12 + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + case 255: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_100 + } + if (Diff(w[2], w[6])) + { + PIXEL01_0 + } + else + { + PIXEL01_100 + } + if (Diff(w[8], w[4])) + { + PIXEL10_0 + } + else + { + PIXEL10_100 + } + if (Diff(w[6], w[8])) + { + PIXEL11_0 + } + else + { + PIXEL11_100 + } + break; + } + } + pIn += sizeof(uint32); + pOut += sizeof(uint32) * 2; + } + pOut += BpL + (BpL - Xres * 2 * sizeof(uint32)); + pIn += srcBpL - Xres * sizeof(uint32); + } +} diff --git a/libmednahawk/src/drivers/hq3x.cpp b/libmednahawk/src/drivers/hq3x.cpp new file mode 100644 index 0000000000..2135aa5ae1 --- /dev/null +++ b/libmednahawk/src/drivers/hq3x.cpp @@ -0,0 +1,3828 @@ +//hq3x filter demo program +//---------------------------------------------------------- +//Copyright (C) 2003 MaxSt ( maxst@hiend3d.com ) + +//This program is free software; you can redistribute it and/or +//modify it under the terms of the GNU Lesser General Public +//License as published by the Free Software Foundation; either +//version 2.1 of the License, or (at your option) any later version. +// +//This program is distributed in the hope that it will be useful, +//but WITHOUT ANY WARRANTY; without even the implied warranty of +//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +//Lesser General Public License for more details. +// +//You should have received a copy of the GNU Lesser General Public +//License along with this program; if not, write to the Free Software +//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +/* Modified for usage in Mednafen */ + +#include "main.h" + +#define HQXX_INTERNAL +#include "hqxx-common.h" + +inline void Interp1(unsigned char * pc, int c1, int c2) +{ + *((int*)pc) = (c1*3+c2) >> 2; +} + +inline void Interp2(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = (c1*2+c2+c3) >> 2; +} + +inline void Interp3(unsigned char * pc, int c1, int c2) +{ + //*((int*)pc) = (c1*7+c2)/8; + + *((int*)pc) = ((((c1 & 0x00FF00)*7 + (c2 & 0x00FF00) ) & 0x0007F800) + + (((c1 & 0xFF00FF)*7 + (c2 & 0xFF00FF) ) & 0x07F807F8)) >> 3; +} + +inline void Interp4(unsigned char * pc, int c1, int c2, int c3) +{ + //*((int*)pc) = (c1*2+(c2+c3)*7)/16; + + *((int*)pc) = ((((c1 & 0x00FF00)*2 + ((c2 & 0x00FF00) + (c3 & 0x00FF00))*7 ) & 0x000FF000) + + (((c1 & 0xFF00FF)*2 + ((c2 & 0xFF00FF) + (c3 & 0xFF00FF))*7 ) & 0x0FF00FF0)) >> 4; +} + +inline void Interp5(unsigned char * pc, int c1, int c2) +{ + *((int*)pc) = (c1+c2) >> 1; +} + +#define PIXEL00_1M Interp1(pOut, w[5], w[1]); +#define PIXEL00_1U Interp1(pOut, w[5], w[2]); +#define PIXEL00_1L Interp1(pOut, w[5], w[4]); +#define PIXEL00_2 Interp2(pOut, w[5], w[4], w[2]); +#define PIXEL00_4 Interp4(pOut, w[5], w[4], w[2]); +#define PIXEL00_5 Interp5(pOut, w[4], w[2]); +#define PIXEL00_C *((int*)(pOut)) = w[5]; + +#define PIXEL01_1 Interp1(pOut+4, w[5], w[2]); +#define PIXEL01_3 Interp3(pOut+4, w[5], w[2]); +#define PIXEL01_6 Interp1(pOut+4, w[2], w[5]); +#define PIXEL01_C *((int*)(pOut+4)) = w[5]; + +#define PIXEL02_1M Interp1(pOut+8, w[5], w[3]); +#define PIXEL02_1U Interp1(pOut+8, w[5], w[2]); +#define PIXEL02_1R Interp1(pOut+8, w[5], w[6]); +#define PIXEL02_2 Interp2(pOut+8, w[5], w[2], w[6]); +#define PIXEL02_4 Interp4(pOut+8, w[5], w[2], w[6]); +#define PIXEL02_5 Interp5(pOut+8, w[2], w[6]); +#define PIXEL02_C *((int*)(pOut+8)) = w[5]; + +#define PIXEL10_1 Interp1(pOut+BpL, w[5], w[4]); +#define PIXEL10_3 Interp3(pOut+BpL, w[5], w[4]); +#define PIXEL10_6 Interp1(pOut+BpL, w[4], w[5]); +#define PIXEL10_C *((int*)(pOut+BpL)) = w[5]; + +#define PIXEL11 *((int*)(pOut+BpL+4)) = w[5]; + +#define PIXEL12_1 Interp1(pOut+BpL+8, w[5], w[6]); +#define PIXEL12_3 Interp3(pOut+BpL+8, w[5], w[6]); +#define PIXEL12_6 Interp1(pOut+BpL+8, w[6], w[5]); +#define PIXEL12_C *((int*)(pOut+BpL+8)) = w[5]; + +#define PIXEL20_1M Interp1(pOut+BpL+BpL, w[5], w[7]); +#define PIXEL20_1D Interp1(pOut+BpL+BpL, w[5], w[8]); +#define PIXEL20_1L Interp1(pOut+BpL+BpL, w[5], w[4]); +#define PIXEL20_2 Interp2(pOut+BpL+BpL, w[5], w[8], w[4]); +#define PIXEL20_4 Interp4(pOut+BpL+BpL, w[5], w[8], w[4]); +#define PIXEL20_5 Interp5(pOut+BpL+BpL, w[8], w[4]); +#define PIXEL20_C *((int*)(pOut+BpL+BpL)) = w[5]; + +#define PIXEL21_1 Interp1(pOut+BpL+BpL+4, w[5], w[8]); +#define PIXEL21_3 Interp3(pOut+BpL+BpL+4, w[5], w[8]); +#define PIXEL21_6 Interp1(pOut+BpL+BpL+4, w[8], w[5]); +#define PIXEL21_C *((int*)(pOut+BpL+BpL+4)) = w[5]; + +#define PIXEL22_1M Interp1(pOut+BpL+BpL+8, w[5], w[9]); +#define PIXEL22_1D Interp1(pOut+BpL+BpL+8, w[5], w[8]); +#define PIXEL22_1R Interp1(pOut+BpL+BpL+8, w[5], w[6]); +#define PIXEL22_2 Interp2(pOut+BpL+BpL+8, w[5], w[6], w[8]); +#define PIXEL22_4 Interp4(pOut+BpL+BpL+8, w[5], w[6], w[8]); +#define PIXEL22_5 Interp5(pOut+BpL+BpL+8, w[6], w[8]); +#define PIXEL22_C *((int*)(pOut+BpL+BpL+8)) = w[5]; + +static inline int Diff(unsigned int w1, unsigned int w2) +{ + int YUV1; + int YUV2; + + YUV1 = hqxx_RGB_to_YUV(w1); + YUV2 = hqxx_RGB_to_YUV(w2); + return ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) || + ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) || + ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) ); +} + +void hq3x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int srcBpL, int BpL ) +{ + int i, j, k; + int prevline, nextline; + int w[10]; + + // +----+----+----+ + // | | | | + // | w1 | w2 | w3 | + // +----+----+----+ + // | | | | + // | w4 | w5 | w6 | + // +----+----+----+ + // | | | | + // | w7 | w8 | w9 | + // +----+----+----+ + + for (j=0; j0) prevline = -srcBpL; else prevline = 0; + if (j0) + { + w[1] = *((unsigned int*)(pIn + prevline - sizeof(uint32))) & 0xFCFCFC; + w[4] = *((unsigned int*)(pIn - sizeof(uint32))) & 0xFCFCFC; + w[7] = *((unsigned int*)(pIn + nextline - sizeof(uint32))) & 0xFCFCFC; + } + else + { + w[1] = w[2]; + w[4] = w[5]; + w[7] = w[8]; + } + + if (i trY ) || + ( abs(YUV1U - (YUV2 & Umask)) > trU ) || + ( abs(YUV1V - (YUV2 & Vmask)) > trV ) ) + pattern |= flag; + } + flag <<= 1; + } + + switch (pattern) + { + case 0: + case 1: + case 4: + case 32: + case 128: + case 5: + case 132: + case 160: + case 33: + case 129: + case 36: + case 133: + case 164: + case 161: + case 37: + case 165: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_2 + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_2 + PIXEL21_1 + PIXEL22_2 + break; + } + case 2: + case 34: + case 130: + case 162: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_2 + PIXEL21_1 + PIXEL22_2 + break; + } + case 16: + case 17: + case 48: + case 49: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1M + break; + } + case 64: + case 65: + case 68: + case 69: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_2 + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 8: + case 12: + case 136: + case 140: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_1 + PIXEL22_2 + break; + } + case 3: + case 35: + case 131: + case 163: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_2 + PIXEL21_1 + PIXEL22_2 + break; + } + case 6: + case 38: + case 134: + case 166: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_2 + PIXEL21_1 + PIXEL22_2 + break; + } + case 20: + case 21: + case 52: + case 53: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1U + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1M + break; + } + case 144: + case 145: + case 176: + case 177: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1D + break; + } + case 192: + case 193: + case 196: + case 197: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_2 + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 96: + case 97: + case 100: + case 101: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_2 + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 40: + case 44: + case 168: + case 172: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1D + PIXEL21_1 + PIXEL22_2 + break; + } + case 9: + case 13: + case 137: + case 141: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_1 + PIXEL22_2 + break; + } + case 18: + case 50: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_1M + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_1 + PIXEL11 + PIXEL20_2 + PIXEL21_1 + PIXEL22_1M + break; + } + case 80: + case 81: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_1M + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 72: + case 76: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_2 + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_1M + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 10: + case 138: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_1 + PIXEL22_2 + break; + } + case 66: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 24: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 7: + case 39: + case 135: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_2 + PIXEL21_1 + PIXEL22_2 + break; + } + case 148: + case 149: + case 180: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1U + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1D + break; + } + case 224: + case 228: + case 225: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_2 + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1R + break; + } + case 41: + case 169: + case 45: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1D + PIXEL21_1 + PIXEL22_2 + break; + } + case 22: + case 54: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_1 + PIXEL11 + PIXEL20_2 + PIXEL21_1 + PIXEL22_1M + break; + } + case 208: + case 209: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 104: + case 108: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_2 + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 11: + case 139: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_1 + PIXEL22_2 + break; + } + case 19: + case 51: + { + if (Diff(w[2], w[6])) + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL12_C + } + else + { + PIXEL00_2 + PIXEL01_6 + PIXEL02_5 + PIXEL12_1 + } + PIXEL10_1 + PIXEL11 + PIXEL20_2 + PIXEL21_1 + PIXEL22_1M + break; + } + case 146: + case 178: + { + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_1M + PIXEL12_C + PIXEL22_1D + } + else + { + PIXEL01_1 + PIXEL02_5 + PIXEL12_6 + PIXEL22_2 + } + PIXEL00_1M + PIXEL10_1 + PIXEL11 + PIXEL20_2 + PIXEL21_1 + break; + } + case 84: + case 85: + { + if (Diff(w[6], w[8])) + { + PIXEL02_1U + PIXEL12_C + PIXEL21_C + PIXEL22_1M + } + else + { + PIXEL02_2 + PIXEL12_6 + PIXEL21_1 + PIXEL22_5 + } + PIXEL00_2 + PIXEL01_1 + PIXEL10_1 + PIXEL11 + PIXEL20_1M + break; + } + case 112: + case 113: + { + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + } + else + { + PIXEL12_1 + PIXEL20_2 + PIXEL21_6 + PIXEL22_5 + } + PIXEL00_2 + PIXEL01_1 + PIXEL02_1M + PIXEL10_1 + PIXEL11 + break; + } + case 200: + case 204: + { + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + } + else + { + PIXEL10_1 + PIXEL20_5 + PIXEL21_6 + PIXEL22_2 + } + PIXEL00_1M + PIXEL01_1 + PIXEL02_2 + PIXEL11 + PIXEL12_1 + break; + } + case 73: + case 77: + { + if (Diff(w[8], w[4])) + { + PIXEL00_1U + PIXEL10_C + PIXEL20_1M + PIXEL21_C + } + else + { + PIXEL00_2 + PIXEL10_6 + PIXEL20_5 + PIXEL21_1 + } + PIXEL01_1 + PIXEL02_2 + PIXEL11 + PIXEL12_1 + PIXEL22_1M + break; + } + case 42: + case 170: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + PIXEL01_C + PIXEL10_C + PIXEL20_1D + } + else + { + PIXEL00_5 + PIXEL01_1 + PIXEL10_6 + PIXEL20_2 + } + PIXEL02_1M + PIXEL11 + PIXEL12_1 + PIXEL21_1 + PIXEL22_2 + break; + } + case 14: + case 142: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL10_C + } + else + { + PIXEL00_5 + PIXEL01_6 + PIXEL02_2 + PIXEL10_1 + } + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_1 + PIXEL22_2 + break; + } + case 67: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 70: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 28: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 152: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 194: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 98: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 56: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 25: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 26: + case 31: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL10_3 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL02_4 + PIXEL12_3 + } + PIXEL11 + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 82: + case 214: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + } + else + { + PIXEL01_3 + PIXEL02_4 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 88: + case 248: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + } + else + { + PIXEL10_3 + PIXEL20_4 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL22_4 + } + break; + } + case 74: + case 107: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + } + else + { + PIXEL00_4 + PIXEL01_3 + } + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 27: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 86: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_1 + PIXEL11 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 216: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 106: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 30: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_C + PIXEL11 + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 210: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 120: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 75: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 29: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1M + break; + } + case 198: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 184: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1D + break; + } + case 99: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 57: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 71: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 156: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 226: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1R + break; + } + case 60: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 195: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 102: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 153: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 58: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 83: + { + PIXEL00_1L + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 92: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 202: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1R + break; + } + case 78: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1R + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1M + break; + } + case 154: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 114: + { + PIXEL00_1M + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1L + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 89: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 90: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 55: + case 23: + { + if (Diff(w[2], w[6])) + { + PIXEL00_1L + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL00_2 + PIXEL01_6 + PIXEL02_5 + PIXEL12_1 + } + PIXEL10_1 + PIXEL11 + PIXEL20_2 + PIXEL21_1 + PIXEL22_1M + break; + } + case 182: + case 150: + { + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + PIXEL22_1D + } + else + { + PIXEL01_1 + PIXEL02_5 + PIXEL12_6 + PIXEL22_2 + } + PIXEL00_1M + PIXEL10_1 + PIXEL11 + PIXEL20_2 + PIXEL21_1 + break; + } + case 213: + case 212: + { + if (Diff(w[6], w[8])) + { + PIXEL02_1U + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL02_2 + PIXEL12_6 + PIXEL21_1 + PIXEL22_5 + } + PIXEL00_2 + PIXEL01_1 + PIXEL10_1 + PIXEL11 + PIXEL20_1M + break; + } + case 241: + case 240: + { + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL20_1L + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_1 + PIXEL20_2 + PIXEL21_6 + PIXEL22_5 + } + PIXEL00_2 + PIXEL01_1 + PIXEL02_1M + PIXEL10_1 + PIXEL11 + break; + } + case 236: + case 232: + { + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + PIXEL22_1R + } + else + { + PIXEL10_1 + PIXEL20_5 + PIXEL21_6 + PIXEL22_2 + } + PIXEL00_1M + PIXEL01_1 + PIXEL02_2 + PIXEL11 + PIXEL12_1 + break; + } + case 109: + case 105: + { + if (Diff(w[8], w[4])) + { + PIXEL00_1U + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL00_2 + PIXEL10_6 + PIXEL20_5 + PIXEL21_1 + } + PIXEL01_1 + PIXEL02_2 + PIXEL11 + PIXEL12_1 + PIXEL22_1M + break; + } + case 171: + case 43: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + PIXEL20_1D + } + else + { + PIXEL00_5 + PIXEL01_1 + PIXEL10_6 + PIXEL20_2 + } + PIXEL02_1M + PIXEL11 + PIXEL12_1 + PIXEL21_1 + PIXEL22_2 + break; + } + case 143: + case 15: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL02_1R + PIXEL10_C + } + else + { + PIXEL00_5 + PIXEL01_6 + PIXEL02_2 + PIXEL10_1 + } + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_1 + PIXEL22_2 + break; + } + case 124: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 203: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 62: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_C + PIXEL11 + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 211: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 118: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_1 + PIXEL11 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 217: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 110: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 155: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 188: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1D + break; + } + case 185: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1D + break; + } + case 61: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 157: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 103: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 227: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1R + break; + } + case 230: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1R + break; + } + case 199: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 220: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 158: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_C + PIXEL11 + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 234: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1M + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1R + break; + } + case 242: + { + PIXEL00_1M + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL20_1L + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 59: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 121: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 87: + { + PIXEL00_1L + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_1 + PIXEL11 + PIXEL20_1M + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 79: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1R + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1M + break; + } + case 122: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 94: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_C + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 218: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 91: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 229: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_2 + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1R + break; + } + case 167: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_2 + PIXEL21_1 + PIXEL22_2 + break; + } + case 173: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1D + PIXEL21_1 + PIXEL22_2 + break; + } + case 181: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1U + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1D + break; + } + case 186: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1D + break; + } + case 115: + { + PIXEL00_1L + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1L + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 93: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 206: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1R + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1R + break; + } + case 205: + case 201: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_1M + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1R + break; + } + case 174: + case 46: + { + if (Diff(w[4], w[2])) + { + PIXEL00_1M + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1R + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1D + PIXEL21_1 + PIXEL22_2 + break; + } + case 179: + case 147: + { + PIXEL00_1L + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_1M + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1D + break; + } + case 117: + case 116: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1U + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1L + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_1M + } + else + { + PIXEL22_2 + } + break; + } + case 189: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1D + break; + } + case 231: + { + PIXEL00_1L + PIXEL01_C + PIXEL02_1R + PIXEL10_1 + PIXEL11 + PIXEL12_1 + PIXEL20_1L + PIXEL21_C + PIXEL22_1R + break; + } + case 126: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_4 + PIXEL12_3 + } + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 219: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL01_3 + PIXEL10_3 + } + PIXEL02_1M + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 125: + { + if (Diff(w[8], w[4])) + { + PIXEL00_1U + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL00_2 + PIXEL10_6 + PIXEL20_5 + PIXEL21_1 + } + PIXEL01_1 + PIXEL02_1U + PIXEL11 + PIXEL12_C + PIXEL22_1M + break; + } + case 221: + { + if (Diff(w[6], w[8])) + { + PIXEL02_1U + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL02_2 + PIXEL12_6 + PIXEL21_1 + PIXEL22_5 + } + PIXEL00_1U + PIXEL01_1 + PIXEL10_C + PIXEL11 + PIXEL20_1M + break; + } + case 207: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL02_1R + PIXEL10_C + } + else + { + PIXEL00_5 + PIXEL01_6 + PIXEL02_2 + PIXEL10_1 + } + PIXEL11 + PIXEL12_1 + PIXEL20_1M + PIXEL21_C + PIXEL22_1R + break; + } + case 238: + { + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + PIXEL22_1R + } + else + { + PIXEL10_1 + PIXEL20_5 + PIXEL21_6 + PIXEL22_2 + } + PIXEL00_1M + PIXEL01_C + PIXEL02_1R + PIXEL11 + PIXEL12_1 + break; + } + case 190: + { + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + PIXEL22_1D + } + else + { + PIXEL01_1 + PIXEL02_5 + PIXEL12_6 + PIXEL22_2 + } + PIXEL00_1M + PIXEL10_C + PIXEL11 + PIXEL20_1D + PIXEL21_1 + break; + } + case 187: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + PIXEL20_1D + } + else + { + PIXEL00_5 + PIXEL01_1 + PIXEL10_6 + PIXEL20_2 + } + PIXEL02_1M + PIXEL11 + PIXEL12_C + PIXEL21_1 + PIXEL22_1D + break; + } + case 243: + { + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL20_1L + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_1 + PIXEL20_2 + PIXEL21_6 + PIXEL22_5 + } + PIXEL00_1L + PIXEL01_C + PIXEL02_1M + PIXEL10_1 + PIXEL11 + break; + } + case 119: + { + if (Diff(w[2], w[6])) + { + PIXEL00_1L + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL00_2 + PIXEL01_6 + PIXEL02_5 + PIXEL12_1 + } + PIXEL10_1 + PIXEL11 + PIXEL20_1L + PIXEL21_C + PIXEL22_1M + break; + } + case 237: + case 233: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_2 + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_C + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1R + break; + } + case 175: + case 47: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1R + PIXEL10_C + PIXEL11 + PIXEL12_1 + PIXEL20_1D + PIXEL21_1 + PIXEL22_2 + break; + } + case 183: + case 151: + { + PIXEL00_1L + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_2 + PIXEL21_1 + PIXEL22_1D + break; + } + case 245: + case 244: + { + PIXEL00_2 + PIXEL01_1 + PIXEL02_1U + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1L + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_C + } + else + { + PIXEL22_2 + } + break; + } + case 250: + { + PIXEL00_1M + PIXEL01_C + PIXEL02_1M + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + } + else + { + PIXEL10_3 + PIXEL20_4 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL22_4 + } + break; + } + case 123: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + } + else + { + PIXEL00_4 + PIXEL01_3 + } + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 95: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL10_3 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL02_4 + PIXEL12_3 + } + PIXEL11 + PIXEL20_1M + PIXEL21_C + PIXEL22_1M + break; + } + case 222: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + } + else + { + PIXEL01_3 + PIXEL02_4 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 252: + { + PIXEL00_1M + PIXEL01_1 + PIXEL02_1U + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + } + else + { + PIXEL10_3 + PIXEL20_4 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_C + } + else + { + PIXEL22_2 + } + break; + } + case 249: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1M + PIXEL10_C + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL20_C + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL22_4 + } + break; + } + case 235: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + } + else + { + PIXEL00_4 + PIXEL01_3 + } + PIXEL02_1M + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_C + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1R + break; + } + case 111: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1R + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 63: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL02_4 + PIXEL12_3 + } + PIXEL10_C + PIXEL11 + PIXEL20_1D + PIXEL21_1 + PIXEL22_1M + break; + } + case 159: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL10_3 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + } + else + { + PIXEL02_2 + } + PIXEL11 + PIXEL12_C + PIXEL20_1M + PIXEL21_1 + PIXEL22_1D + break; + } + case 215: + { + PIXEL00_1L + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 246: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + } + else + { + PIXEL01_3 + PIXEL02_4 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1L + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_C + } + else + { + PIXEL22_2 + } + break; + } + case 254: + { + PIXEL00_1M + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + } + else + { + PIXEL01_3 + PIXEL02_4 + } + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + } + else + { + PIXEL10_3 + PIXEL20_4 + } + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL21_3 + PIXEL22_2 + } + break; + } + case 253: + { + PIXEL00_1U + PIXEL01_1 + PIXEL02_1U + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_C + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_C + } + else + { + PIXEL22_2 + } + break; + } + case 251: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + } + else + { + PIXEL00_4 + PIXEL01_3 + } + PIXEL02_1M + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL10_C + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL10_3 + PIXEL20_2 + PIXEL21_3 + } + if (Diff(w[6], w[8])) + { + PIXEL12_C + PIXEL22_C + } + else + { + PIXEL12_3 + PIXEL22_4 + } + break; + } + case 239: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + } + else + { + PIXEL00_2 + } + PIXEL01_C + PIXEL02_1R + PIXEL10_C + PIXEL11 + PIXEL12_1 + if (Diff(w[8], w[4])) + { + PIXEL20_C + } + else + { + PIXEL20_2 + } + PIXEL21_C + PIXEL22_1R + break; + } + case 127: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL01_C + PIXEL10_C + } + else + { + PIXEL00_2 + PIXEL01_3 + PIXEL10_3 + } + if (Diff(w[2], w[6])) + { + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL02_4 + PIXEL12_3 + } + PIXEL11 + if (Diff(w[8], w[4])) + { + PIXEL20_C + PIXEL21_C + } + else + { + PIXEL20_4 + PIXEL21_3 + } + PIXEL22_1M + break; + } + case 191: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + PIXEL20_1D + PIXEL21_1 + PIXEL22_1D + break; + } + case 223: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + PIXEL10_C + } + else + { + PIXEL00_4 + PIXEL10_3 + } + if (Diff(w[2], w[6])) + { + PIXEL01_C + PIXEL02_C + PIXEL12_C + } + else + { + PIXEL01_3 + PIXEL02_2 + PIXEL12_3 + } + PIXEL11 + PIXEL20_1M + if (Diff(w[6], w[8])) + { + PIXEL21_C + PIXEL22_C + } + else + { + PIXEL21_3 + PIXEL22_4 + } + break; + } + case 247: + { + PIXEL00_1L + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + } + else + { + PIXEL02_2 + } + PIXEL10_1 + PIXEL11 + PIXEL12_C + PIXEL20_1L + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_C + } + else + { + PIXEL22_2 + } + break; + } + case 255: + { + if (Diff(w[4], w[2])) + { + PIXEL00_C + } + else + { + PIXEL00_2 + } + PIXEL01_C + if (Diff(w[2], w[6])) + { + PIXEL02_C + } + else + { + PIXEL02_2 + } + PIXEL10_C + PIXEL11 + PIXEL12_C + if (Diff(w[8], w[4])) + { + PIXEL20_C + } + else + { + PIXEL20_2 + } + PIXEL21_C + if (Diff(w[6], w[8])) + { + PIXEL22_C + } + else + { + PIXEL22_2 + } + break; + } + } + pIn += sizeof(uint32); + pOut+=12; + } + pOut += BpL * 3 - Xres * 3 * sizeof(uint32); + pIn += srcBpL - Xres * sizeof(uint32); + } +} diff --git a/libmednahawk/src/drivers/hq4x.cpp b/libmednahawk/src/drivers/hq4x.cpp new file mode 100644 index 0000000000..c5915e12ce --- /dev/null +++ b/libmednahawk/src/drivers/hq4x.cpp @@ -0,0 +1,5281 @@ +//hq4x filter demo program +//---------------------------------------------------------- +//Copyright (C) 2003 MaxSt ( maxst@hiend3d.com ) + +//This program is free software; you can redistribute it and/or +//modify it under the terms of the GNU Lesser General Public +//License as published by the Free Software Foundation; either +//version 2.1 of the License, or (at your option) any later version. +// +//This program is distributed in the hope that it will be useful, +//but WITHOUT ANY WARRANTY; without even the implied warranty of +//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +//Lesser General Public License for more details. +// +//You should have received a copy of the GNU Lesser General Public +//License along with this program; if not, write to the Free Software +//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +/* Modified for usage in Mednafen */ + +#include "main.h" + +#define HQXX_INTERNAL +#include "hqxx-common.h" + +static int YUV1, YUV2; + +inline void Interp1(unsigned char * pc, int c1, int c2) +{ + *((int*)pc) = (c1*3+c2) >> 2; +} + +inline void Interp2(unsigned char * pc, int c1, int c2, int c3) +{ + *((int*)pc) = (c1*2+c2+c3) >> 2; +} + +inline void Interp3(unsigned char * pc, int c1, int c2) +{ + //*((int*)pc) = (c1*7+c2)/8; + + *((int*)pc) = ((((c1 & 0x00FF00)*7 + (c2 & 0x00FF00) ) & 0x0007F800) + + (((c1 & 0xFF00FF)*7 + (c2 & 0xFF00FF) ) & 0x07F807F8)) >> 3; +} + +inline void Interp5(unsigned char * pc, int c1, int c2) +{ + *((int*)pc) = (c1+c2) >> 1; +} + +inline void Interp6(unsigned char * pc, int c1, int c2, int c3) +{ + //*((int*)pc) = (c1*5+c2*2+c3)/8; + + *((int*)pc) = ((((c1 & 0x00FF00)*5 + (c2 & 0x00FF00)*2 + (c3 & 0x00FF00) ) & 0x0007F800) + + (((c1 & 0xFF00FF)*5 + (c2 & 0xFF00FF)*2 + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3; +} + +inline void Interp7(unsigned char * pc, int c1, int c2, int c3) +{ + //*((int*)pc) = (c1*6+c2+c3)/8; + + *((int*)pc) = ((((c1 & 0x00FF00)*6 + (c2 & 0x00FF00) + (c3 & 0x00FF00) ) & 0x0007F800) + + (((c1 & 0xFF00FF)*6 + (c2 & 0xFF00FF) + (c3 & 0xFF00FF) ) & 0x07F807F8)) >> 3; +} + +inline void Interp8(unsigned char * pc, int c1, int c2) +{ + //*((int*)pc) = (c1*5+c2*3)/8; + + *((int*)pc) = ((((c1 & 0x00FF00)*5 + (c2 & 0x00FF00)*3 ) & 0x0007F800) + + (((c1 & 0xFF00FF)*5 + (c2 & 0xFF00FF)*3 ) & 0x07F807F8)) >> 3; +} + +#define PIXEL00_0 *((int*)(pOut)) = w[5]; +#define PIXEL00_11 Interp1(pOut, w[5], w[4]); +#define PIXEL00_12 Interp1(pOut, w[5], w[2]); +#define PIXEL00_20 Interp2(pOut, w[5], w[2], w[4]); +#define PIXEL00_50 Interp5(pOut, w[2], w[4]); +#define PIXEL00_80 Interp8(pOut, w[5], w[1]); +#define PIXEL00_81 Interp8(pOut, w[5], w[4]); +#define PIXEL00_82 Interp8(pOut, w[5], w[2]); +#define PIXEL01_0 *((int*)(pOut+4)) = w[5]; +#define PIXEL01_10 Interp1(pOut+4, w[5], w[1]); +#define PIXEL01_12 Interp1(pOut+4, w[5], w[2]); +#define PIXEL01_14 Interp1(pOut+4, w[2], w[5]); +#define PIXEL01_21 Interp2(pOut+4, w[2], w[5], w[4]); +#define PIXEL01_31 Interp3(pOut+4, w[5], w[4]); +#define PIXEL01_50 Interp5(pOut+4, w[2], w[5]); +#define PIXEL01_60 Interp6(pOut+4, w[5], w[2], w[4]); +#define PIXEL01_61 Interp6(pOut+4, w[5], w[2], w[1]); +#define PIXEL01_82 Interp8(pOut+4, w[5], w[2]); +#define PIXEL01_83 Interp8(pOut+4, w[2], w[4]); +#define PIXEL02_0 *((int*)(pOut+8)) = w[5]; +#define PIXEL02_10 Interp1(pOut+8, w[5], w[3]); +#define PIXEL02_11 Interp1(pOut+8, w[5], w[2]); +#define PIXEL02_13 Interp1(pOut+8, w[2], w[5]); +#define PIXEL02_21 Interp2(pOut+8, w[2], w[5], w[6]); +#define PIXEL02_32 Interp3(pOut+8, w[5], w[6]); +#define PIXEL02_50 Interp5(pOut+8, w[2], w[5]); +#define PIXEL02_60 Interp6(pOut+8, w[5], w[2], w[6]); +#define PIXEL02_61 Interp6(pOut+8, w[5], w[2], w[3]); +#define PIXEL02_81 Interp8(pOut+8, w[5], w[2]); +#define PIXEL02_83 Interp8(pOut+8, w[2], w[6]); +#define PIXEL03_0 *((int*)(pOut+12)) = w[5]; +#define PIXEL03_11 Interp1(pOut+12, w[5], w[2]); +#define PIXEL03_12 Interp1(pOut+12, w[5], w[6]); +#define PIXEL03_20 Interp2(pOut+12, w[5], w[2], w[6]); +#define PIXEL03_50 Interp5(pOut+12, w[2], w[6]); +#define PIXEL03_80 Interp8(pOut+12, w[5], w[3]); +#define PIXEL03_81 Interp8(pOut+12, w[5], w[2]); +#define PIXEL03_82 Interp8(pOut+12, w[5], w[6]); +#define PIXEL10_0 *((int*)(pOut+BpL)) = w[5]; +#define PIXEL10_10 Interp1(pOut+BpL, w[5], w[1]); +#define PIXEL10_11 Interp1(pOut+BpL, w[5], w[4]); +#define PIXEL10_13 Interp1(pOut+BpL, w[4], w[5]); +#define PIXEL10_21 Interp2(pOut+BpL, w[4], w[5], w[2]); +#define PIXEL10_32 Interp3(pOut+BpL, w[5], w[2]); +#define PIXEL10_50 Interp5(pOut+BpL, w[4], w[5]); +#define PIXEL10_60 Interp6(pOut+BpL, w[5], w[4], w[2]); +#define PIXEL10_61 Interp6(pOut+BpL, w[5], w[4], w[1]); +#define PIXEL10_81 Interp8(pOut+BpL, w[5], w[4]); +#define PIXEL10_83 Interp8(pOut+BpL, w[4], w[2]); +#define PIXEL11_0 *((int*)(pOut+BpL+4)) = w[5]; +#define PIXEL11_30 Interp3(pOut+BpL+4, w[5], w[1]); +#define PIXEL11_31 Interp3(pOut+BpL+4, w[5], w[4]); +#define PIXEL11_32 Interp3(pOut+BpL+4, w[5], w[2]); +#define PIXEL11_70 Interp7(pOut+BpL+4, w[5], w[4], w[2]); +#define PIXEL12_0 *((int*)(pOut+BpL+8)) = w[5]; +#define PIXEL12_30 Interp3(pOut+BpL+8, w[5], w[3]); +#define PIXEL12_31 Interp3(pOut+BpL+8, w[5], w[2]); +#define PIXEL12_32 Interp3(pOut+BpL+8, w[5], w[6]); +#define PIXEL12_70 Interp7(pOut+BpL+8, w[5], w[6], w[2]); +#define PIXEL13_0 *((int*)(pOut+BpL+12)) = w[5]; +#define PIXEL13_10 Interp1(pOut+BpL+12, w[5], w[3]); +#define PIXEL13_12 Interp1(pOut+BpL+12, w[5], w[6]); +#define PIXEL13_14 Interp1(pOut+BpL+12, w[6], w[5]); +#define PIXEL13_21 Interp2(pOut+BpL+12, w[6], w[5], w[2]); +#define PIXEL13_31 Interp3(pOut+BpL+12, w[5], w[2]); +#define PIXEL13_50 Interp5(pOut+BpL+12, w[6], w[5]); +#define PIXEL13_60 Interp6(pOut+BpL+12, w[5], w[6], w[2]); +#define PIXEL13_61 Interp6(pOut+BpL+12, w[5], w[6], w[3]); +#define PIXEL13_82 Interp8(pOut+BpL+12, w[5], w[6]); +#define PIXEL13_83 Interp8(pOut+BpL+12, w[6], w[2]); +#define PIXEL20_0 *((int*)(pOut+BpL+BpL)) = w[5]; +#define PIXEL20_10 Interp1(pOut+BpL+BpL, w[5], w[7]); +#define PIXEL20_12 Interp1(pOut+BpL+BpL, w[5], w[4]); +#define PIXEL20_14 Interp1(pOut+BpL+BpL, w[4], w[5]); +#define PIXEL20_21 Interp2(pOut+BpL+BpL, w[4], w[5], w[8]); +#define PIXEL20_31 Interp3(pOut+BpL+BpL, w[5], w[8]); +#define PIXEL20_50 Interp5(pOut+BpL+BpL, w[4], w[5]); +#define PIXEL20_60 Interp6(pOut+BpL+BpL, w[5], w[4], w[8]); +#define PIXEL20_61 Interp6(pOut+BpL+BpL, w[5], w[4], w[7]); +#define PIXEL20_82 Interp8(pOut+BpL+BpL, w[5], w[4]); +#define PIXEL20_83 Interp8(pOut+BpL+BpL, w[4], w[8]); +#define PIXEL21_0 *((int*)(pOut+BpL+BpL+4)) = w[5]; +#define PIXEL21_30 Interp3(pOut+BpL+BpL+4, w[5], w[7]); +#define PIXEL21_31 Interp3(pOut+BpL+BpL+4, w[5], w[8]); +#define PIXEL21_32 Interp3(pOut+BpL+BpL+4, w[5], w[4]); +#define PIXEL21_70 Interp7(pOut+BpL+BpL+4, w[5], w[4], w[8]); +#define PIXEL22_0 *((int*)(pOut+BpL+BpL+8)) = w[5]; +#define PIXEL22_30 Interp3(pOut+BpL+BpL+8, w[5], w[9]); +#define PIXEL22_31 Interp3(pOut+BpL+BpL+8, w[5], w[6]); +#define PIXEL22_32 Interp3(pOut+BpL+BpL+8, w[5], w[8]); +#define PIXEL22_70 Interp7(pOut+BpL+BpL+8, w[5], w[6], w[8]); +#define PIXEL23_0 *((int*)(pOut+BpL+BpL+12)) = w[5]; +#define PIXEL23_10 Interp1(pOut+BpL+BpL+12, w[5], w[9]); +#define PIXEL23_11 Interp1(pOut+BpL+BpL+12, w[5], w[6]); +#define PIXEL23_13 Interp1(pOut+BpL+BpL+12, w[6], w[5]); +#define PIXEL23_21 Interp2(pOut+BpL+BpL+12, w[6], w[5], w[8]); +#define PIXEL23_32 Interp3(pOut+BpL+BpL+12, w[5], w[8]); +#define PIXEL23_50 Interp5(pOut+BpL+BpL+12, w[6], w[5]); +#define PIXEL23_60 Interp6(pOut+BpL+BpL+12, w[5], w[6], w[8]); +#define PIXEL23_61 Interp6(pOut+BpL+BpL+12, w[5], w[6], w[9]); +#define PIXEL23_81 Interp8(pOut+BpL+BpL+12, w[5], w[6]); +#define PIXEL23_83 Interp8(pOut+BpL+BpL+12, w[6], w[8]); +#define PIXEL30_0 *((int*)(pOut+BpL+BpL+BpL)) = w[5]; +#define PIXEL30_11 Interp1(pOut+BpL+BpL+BpL, w[5], w[8]); +#define PIXEL30_12 Interp1(pOut+BpL+BpL+BpL, w[5], w[4]); +#define PIXEL30_20 Interp2(pOut+BpL+BpL+BpL, w[5], w[8], w[4]); +#define PIXEL30_50 Interp5(pOut+BpL+BpL+BpL, w[8], w[4]); +#define PIXEL30_80 Interp8(pOut+BpL+BpL+BpL, w[5], w[7]); +#define PIXEL30_81 Interp8(pOut+BpL+BpL+BpL, w[5], w[8]); +#define PIXEL30_82 Interp8(pOut+BpL+BpL+BpL, w[5], w[4]); +#define PIXEL31_0 *((int*)(pOut+BpL+BpL+BpL+4)) = w[5]; +#define PIXEL31_10 Interp1(pOut+BpL+BpL+BpL+4, w[5], w[7]); +#define PIXEL31_11 Interp1(pOut+BpL+BpL+BpL+4, w[5], w[8]); +#define PIXEL31_13 Interp1(pOut+BpL+BpL+BpL+4, w[8], w[5]); +#define PIXEL31_21 Interp2(pOut+BpL+BpL+BpL+4, w[8], w[5], w[4]); +#define PIXEL31_32 Interp3(pOut+BpL+BpL+BpL+4, w[5], w[4]); +#define PIXEL31_50 Interp5(pOut+BpL+BpL+BpL+4, w[8], w[5]); +#define PIXEL31_60 Interp6(pOut+BpL+BpL+BpL+4, w[5], w[8], w[4]); +#define PIXEL31_61 Interp6(pOut+BpL+BpL+BpL+4, w[5], w[8], w[7]); +#define PIXEL31_81 Interp8(pOut+BpL+BpL+BpL+4, w[5], w[8]); +#define PIXEL31_83 Interp8(pOut+BpL+BpL+BpL+4, w[8], w[4]); +#define PIXEL32_0 *((int*)(pOut+BpL+BpL+BpL+8)) = w[5]; +#define PIXEL32_10 Interp1(pOut+BpL+BpL+BpL+8, w[5], w[9]); +#define PIXEL32_12 Interp1(pOut+BpL+BpL+BpL+8, w[5], w[8]); +#define PIXEL32_14 Interp1(pOut+BpL+BpL+BpL+8, w[8], w[5]); +#define PIXEL32_21 Interp2(pOut+BpL+BpL+BpL+8, w[8], w[5], w[6]); +#define PIXEL32_31 Interp3(pOut+BpL+BpL+BpL+8, w[5], w[6]); +#define PIXEL32_50 Interp5(pOut+BpL+BpL+BpL+8, w[8], w[5]); +#define PIXEL32_60 Interp6(pOut+BpL+BpL+BpL+8, w[5], w[8], w[6]); +#define PIXEL32_61 Interp6(pOut+BpL+BpL+BpL+8, w[5], w[8], w[9]); +#define PIXEL32_82 Interp8(pOut+BpL+BpL+BpL+8, w[5], w[8]); +#define PIXEL32_83 Interp8(pOut+BpL+BpL+BpL+8, w[8], w[6]); +#define PIXEL33_0 *((int*)(pOut+BpL+BpL+BpL+12)) = w[5]; +#define PIXEL33_11 Interp1(pOut+BpL+BpL+BpL+12, w[5], w[6]); +#define PIXEL33_12 Interp1(pOut+BpL+BpL+BpL+12, w[5], w[8]); +#define PIXEL33_20 Interp2(pOut+BpL+BpL+BpL+12, w[5], w[8], w[6]); +#define PIXEL33_50 Interp5(pOut+BpL+BpL+BpL+12, w[8], w[6]); +#define PIXEL33_80 Interp8(pOut+BpL+BpL+BpL+12, w[5], w[9]); +#define PIXEL33_81 Interp8(pOut+BpL+BpL+BpL+12, w[5], w[6]); +#define PIXEL33_82 Interp8(pOut+BpL+BpL+BpL+12, w[5], w[8]); + + +inline bool Diff(unsigned int w1, unsigned int w2) +{ + YUV1 = hqxx_RGB_to_YUV(w1); + YUV2 = hqxx_RGB_to_YUV(w2); + return ( ( abs((YUV1 & Ymask) - (YUV2 & Ymask)) > trY ) || + ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) || + ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) ); +} + +void hq4x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int srcBpL, int BpL) +{ + int i, j, k; + int prevline, nextline; + int w[10]; + + // +----+----+----+ + // | | | | + // | w1 | w2 | w3 | + // +----+----+----+ + // | | | | + // | w4 | w5 | w6 | + // +----+----+----+ + // | | | | + // | w7 | w8 | w9 | + // +----+----+----+ + + for (j=0; j0) prevline = -srcBpL; else prevline = 0; + if (j0) + { + w[1] = *((unsigned int*)(pIn + prevline - sizeof(uint32))) & 0xFCFCFC; + w[4] = *((unsigned int*)(pIn - sizeof(uint32))) & 0xFCFCFC; + w[7] = *((unsigned int*)(pIn + nextline - sizeof(uint32))) & 0xFCFCFC; + } + else + { + w[1] = w[2]; + w[4] = w[5]; + w[7] = w[8]; + } + + if (i trY ) || + ( abs((YUV1 & Umask) - (YUV2 & Umask)) > trU ) || + ( abs((YUV1 & Vmask) - (YUV2 & Vmask)) > trV ) ) + pattern |= flag; + } + flag <<= 1; + } + + switch (pattern) + { + case 0: + case 1: + case 4: + case 32: + case 128: + case 5: + case 132: + case 160: + case 33: + case 129: + case 36: + case 133: + case 164: + case 161: + case 37: + case 165: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_60 + PIXEL03_20 + PIXEL10_60 + PIXEL11_70 + PIXEL12_70 + PIXEL13_60 + PIXEL20_60 + PIXEL21_70 + PIXEL22_70 + PIXEL23_60 + PIXEL30_20 + PIXEL31_60 + PIXEL32_60 + PIXEL33_20 + break; + } + case 2: + case 34: + case 130: + case 162: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_61 + PIXEL11_30 + PIXEL12_30 + PIXEL13_61 + PIXEL20_60 + PIXEL21_70 + PIXEL22_70 + PIXEL23_60 + PIXEL30_20 + PIXEL31_60 + PIXEL32_60 + PIXEL33_20 + break; + } + case 16: + case 17: + case 48: + case 49: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_61 + PIXEL03_80 + PIXEL10_60 + PIXEL11_70 + PIXEL12_30 + PIXEL13_10 + PIXEL20_60 + PIXEL21_70 + PIXEL22_30 + PIXEL23_10 + PIXEL30_20 + PIXEL31_60 + PIXEL32_61 + PIXEL33_80 + break; + } + case 64: + case 65: + case 68: + case 69: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_60 + PIXEL03_20 + PIXEL10_60 + PIXEL11_70 + PIXEL12_70 + PIXEL13_60 + PIXEL20_61 + PIXEL21_30 + PIXEL22_30 + PIXEL23_61 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 8: + case 12: + case 136: + case 140: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_60 + PIXEL03_20 + PIXEL10_10 + PIXEL11_30 + PIXEL12_70 + PIXEL13_60 + PIXEL20_10 + PIXEL21_30 + PIXEL22_70 + PIXEL23_60 + PIXEL30_80 + PIXEL31_61 + PIXEL32_60 + PIXEL33_20 + break; + } + case 3: + case 35: + case 131: + case 163: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_61 + PIXEL20_60 + PIXEL21_70 + PIXEL22_70 + PIXEL23_60 + PIXEL30_20 + PIXEL31_60 + PIXEL32_60 + PIXEL33_20 + break; + } + case 6: + case 38: + case 134: + case 166: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_61 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + PIXEL20_60 + PIXEL21_70 + PIXEL22_70 + PIXEL23_60 + PIXEL30_20 + PIXEL31_60 + PIXEL32_60 + PIXEL33_20 + break; + } + case 20: + case 21: + case 52: + case 53: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + PIXEL03_81 + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL13_31 + PIXEL20_60 + PIXEL21_70 + PIXEL22_30 + PIXEL23_10 + PIXEL30_20 + PIXEL31_60 + PIXEL32_61 + PIXEL33_80 + break; + } + case 144: + case 145: + case 176: + case 177: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_61 + PIXEL03_80 + PIXEL10_60 + PIXEL11_70 + PIXEL12_30 + PIXEL13_10 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL23_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + PIXEL33_82 + break; + } + case 192: + case 193: + case 196: + case 197: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_60 + PIXEL03_20 + PIXEL10_60 + PIXEL11_70 + PIXEL12_70 + PIXEL13_60 + PIXEL20_61 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 96: + case 97: + case 100: + case 101: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_60 + PIXEL03_20 + PIXEL10_60 + PIXEL11_70 + PIXEL12_70 + PIXEL13_60 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_61 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 40: + case 44: + case 168: + case 172: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_60 + PIXEL03_20 + PIXEL10_10 + PIXEL11_30 + PIXEL12_70 + PIXEL13_60 + PIXEL20_31 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL30_81 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 9: + case 13: + case 137: + case 141: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL10_32 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + PIXEL20_10 + PIXEL21_30 + PIXEL22_70 + PIXEL23_60 + PIXEL30_80 + PIXEL31_61 + PIXEL32_60 + PIXEL33_20 + break; + } + case 18: + case 50: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL12_0 + PIXEL13_50 + } + PIXEL10_61 + PIXEL11_30 + PIXEL20_60 + PIXEL21_70 + PIXEL22_30 + PIXEL23_10 + PIXEL30_20 + PIXEL31_60 + PIXEL32_61 + PIXEL33_80 + break; + } + case 80: + case 81: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_61 + PIXEL03_80 + PIXEL10_60 + PIXEL11_70 + PIXEL12_30 + PIXEL13_10 + PIXEL20_61 + PIXEL21_30 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 72: + case 76: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_60 + PIXEL03_20 + PIXEL10_10 + PIXEL11_30 + PIXEL12_70 + PIXEL13_60 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_50 + PIXEL21_0 + PIXEL30_50 + PIXEL31_50 + } + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 10: + case 138: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + PIXEL11_0 + } + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_61 + PIXEL20_10 + PIXEL21_30 + PIXEL22_70 + PIXEL23_60 + PIXEL30_80 + PIXEL31_61 + PIXEL32_60 + PIXEL33_20 + break; + } + case 66: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_61 + PIXEL11_30 + PIXEL12_30 + PIXEL13_61 + PIXEL20_61 + PIXEL21_30 + PIXEL22_30 + PIXEL23_61 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 24: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 7: + case 39: + case 135: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_32 + PIXEL03_82 + PIXEL10_81 + PIXEL11_31 + PIXEL12_32 + PIXEL13_82 + PIXEL20_60 + PIXEL21_70 + PIXEL22_70 + PIXEL23_60 + PIXEL30_20 + PIXEL31_60 + PIXEL32_60 + PIXEL33_20 + break; + } + case 148: + case 149: + case 180: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + PIXEL03_81 + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL13_31 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL23_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + PIXEL33_82 + break; + } + case 224: + case 228: + case 225: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_60 + PIXEL03_20 + PIXEL10_60 + PIXEL11_70 + PIXEL12_70 + PIXEL13_60 + PIXEL20_82 + PIXEL21_32 + PIXEL22_31 + PIXEL23_81 + PIXEL30_82 + PIXEL31_32 + PIXEL32_31 + PIXEL33_81 + break; + } + case 41: + case 169: + case 45: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL10_32 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + PIXEL20_31 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL30_81 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 22: + case 54: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_61 + PIXEL11_30 + PIXEL12_0 + PIXEL20_60 + PIXEL21_70 + PIXEL22_30 + PIXEL23_10 + PIXEL30_20 + PIXEL31_60 + PIXEL32_61 + PIXEL33_80 + break; + } + case 208: + case 209: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_61 + PIXEL03_80 + PIXEL10_60 + PIXEL11_70 + PIXEL12_30 + PIXEL13_10 + PIXEL20_61 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 104: + case 108: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_60 + PIXEL03_20 + PIXEL10_10 + PIXEL11_30 + PIXEL12_70 + PIXEL13_60 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 11: + case 139: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_61 + PIXEL20_10 + PIXEL21_30 + PIXEL22_70 + PIXEL23_60 + PIXEL30_80 + PIXEL31_61 + PIXEL32_60 + PIXEL33_20 + break; + } + case 19: + case 51: + { + if (Diff(w[2], w[6])) + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL00_12 + PIXEL01_14 + PIXEL02_83 + PIXEL03_50 + PIXEL12_70 + PIXEL13_21 + } + PIXEL10_81 + PIXEL11_31 + PIXEL20_60 + PIXEL21_70 + PIXEL22_30 + PIXEL23_10 + PIXEL30_20 + PIXEL31_60 + PIXEL32_61 + PIXEL33_80 + break; + } + case 146: + case 178: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + PIXEL23_32 + PIXEL33_82 + } + else + { + PIXEL02_21 + PIXEL03_50 + PIXEL12_70 + PIXEL13_83 + PIXEL23_13 + PIXEL33_11 + } + PIXEL10_61 + PIXEL11_30 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + break; + } + case 84: + case 85: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + if (Diff(w[6], w[8])) + { + PIXEL03_81 + PIXEL13_31 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL03_12 + PIXEL13_14 + PIXEL22_70 + PIXEL23_83 + PIXEL32_21 + PIXEL33_50 + } + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL20_61 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + break; + } + case 112: + case 113: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_61 + PIXEL03_80 + PIXEL10_60 + PIXEL11_70 + PIXEL12_30 + PIXEL13_10 + PIXEL20_82 + PIXEL21_32 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_70 + PIXEL23_21 + PIXEL30_11 + PIXEL31_13 + PIXEL32_83 + PIXEL33_50 + } + break; + } + case 200: + case 204: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_60 + PIXEL03_20 + PIXEL10_10 + PIXEL11_30 + PIXEL12_70 + PIXEL13_60 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + } + else + { + PIXEL20_21 + PIXEL21_70 + PIXEL30_50 + PIXEL31_83 + PIXEL32_14 + PIXEL33_12 + } + PIXEL22_31 + PIXEL23_81 + break; + } + case 73: + case 77: + { + if (Diff(w[8], w[4])) + { + PIXEL00_82 + PIXEL10_32 + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL00_11 + PIXEL10_13 + PIXEL20_83 + PIXEL21_70 + PIXEL30_50 + PIXEL31_21 + } + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 42: + case 170: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + PIXEL20_31 + PIXEL30_81 + } + else + { + PIXEL00_50 + PIXEL01_21 + PIXEL10_83 + PIXEL11_70 + PIXEL20_14 + PIXEL30_12 + } + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_61 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 14: + case 142: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_50 + PIXEL01_83 + PIXEL02_13 + PIXEL03_11 + PIXEL10_21 + PIXEL11_70 + } + PIXEL12_32 + PIXEL13_82 + PIXEL20_10 + PIXEL21_30 + PIXEL22_70 + PIXEL23_60 + PIXEL30_80 + PIXEL31_61 + PIXEL32_60 + PIXEL33_20 + break; + } + case 67: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_61 + PIXEL20_61 + PIXEL21_30 + PIXEL22_30 + PIXEL23_61 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 70: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_61 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + PIXEL20_61 + PIXEL21_30 + PIXEL22_30 + PIXEL23_61 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 28: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 152: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 194: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_61 + PIXEL11_30 + PIXEL12_30 + PIXEL13_61 + PIXEL20_61 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 98: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_61 + PIXEL11_30 + PIXEL12_30 + PIXEL13_61 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_61 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 56: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 25: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 26: + case 31: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL11_0 + PIXEL12_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 82: + case 214: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_61 + PIXEL11_30 + PIXEL12_0 + PIXEL20_61 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 88: + case 248: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + break; + } + case 74: + case 107: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_61 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 27: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 86: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_61 + PIXEL11_30 + PIXEL12_0 + PIXEL20_61 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 216: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 106: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_61 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 30: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_10 + PIXEL11_30 + PIXEL12_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 210: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_61 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + PIXEL20_61 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 120: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 75: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_61 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_61 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 29: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_61 + PIXEL32_61 + PIXEL33_80 + break; + } + case 198: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_61 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + PIXEL20_61 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 184: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_61 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 99: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_61 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_61 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 57: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 71: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_32 + PIXEL03_82 + PIXEL10_81 + PIXEL11_31 + PIXEL12_32 + PIXEL13_82 + PIXEL20_61 + PIXEL21_30 + PIXEL22_30 + PIXEL23_61 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 156: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 226: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_61 + PIXEL11_30 + PIXEL12_30 + PIXEL13_61 + PIXEL20_82 + PIXEL21_32 + PIXEL22_31 + PIXEL23_81 + PIXEL30_82 + PIXEL31_32 + PIXEL32_31 + PIXEL33_81 + break; + } + case 60: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 195: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_61 + PIXEL20_61 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 102: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_61 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_61 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 153: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 58: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 83: + { + PIXEL00_81 + PIXEL01_31 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL10_81 + PIXEL11_31 + PIXEL20_61 + PIXEL21_30 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 92: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 202: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_61 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_31 + PIXEL23_81 + PIXEL32_31 + PIXEL33_81 + break; + } + case 78: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + PIXEL02_32 + PIXEL03_82 + PIXEL12_32 + PIXEL13_82 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 154: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 114: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL10_61 + PIXEL11_30 + PIXEL20_82 + PIXEL21_32 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + PIXEL30_82 + PIXEL31_32 + break; + } + case 89: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 90: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 55: + case 23: + { + if (Diff(w[2], w[6])) + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_0 + PIXEL03_0 + PIXEL12_0 + PIXEL13_0 + } + else + { + PIXEL00_12 + PIXEL01_14 + PIXEL02_83 + PIXEL03_50 + PIXEL12_70 + PIXEL13_21 + } + PIXEL10_81 + PIXEL11_31 + PIXEL20_60 + PIXEL21_70 + PIXEL22_30 + PIXEL23_10 + PIXEL30_20 + PIXEL31_60 + PIXEL32_61 + PIXEL33_80 + break; + } + case 182: + case 150: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL12_0 + PIXEL13_0 + PIXEL23_32 + PIXEL33_82 + } + else + { + PIXEL02_21 + PIXEL03_50 + PIXEL12_70 + PIXEL13_83 + PIXEL23_13 + PIXEL33_11 + } + PIXEL10_61 + PIXEL11_30 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + break; + } + case 213: + case 212: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + if (Diff(w[6], w[8])) + { + PIXEL03_81 + PIXEL13_31 + PIXEL22_0 + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL03_12 + PIXEL13_14 + PIXEL22_70 + PIXEL23_83 + PIXEL32_21 + PIXEL33_50 + } + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL20_61 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + break; + } + case 241: + case 240: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_61 + PIXEL03_80 + PIXEL10_60 + PIXEL11_70 + PIXEL12_30 + PIXEL13_10 + PIXEL20_82 + PIXEL21_32 + if (Diff(w[6], w[8])) + { + PIXEL22_0 + PIXEL23_0 + PIXEL30_82 + PIXEL31_32 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL22_70 + PIXEL23_21 + PIXEL30_11 + PIXEL31_13 + PIXEL32_83 + PIXEL33_50 + } + break; + } + case 236: + case 232: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_60 + PIXEL03_20 + PIXEL10_10 + PIXEL11_30 + PIXEL12_70 + PIXEL13_60 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL21_0 + PIXEL30_0 + PIXEL31_0 + PIXEL32_31 + PIXEL33_81 + } + else + { + PIXEL20_21 + PIXEL21_70 + PIXEL30_50 + PIXEL31_83 + PIXEL32_14 + PIXEL33_12 + } + PIXEL22_31 + PIXEL23_81 + break; + } + case 109: + case 105: + { + if (Diff(w[8], w[4])) + { + PIXEL00_82 + PIXEL10_32 + PIXEL20_0 + PIXEL21_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL00_11 + PIXEL10_13 + PIXEL20_83 + PIXEL21_70 + PIXEL30_50 + PIXEL31_21 + } + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 171: + case 43: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + PIXEL11_0 + PIXEL20_31 + PIXEL30_81 + } + else + { + PIXEL00_50 + PIXEL01_21 + PIXEL10_83 + PIXEL11_70 + PIXEL20_14 + PIXEL30_12 + } + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_61 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 143: + case 15: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL02_32 + PIXEL03_82 + PIXEL10_0 + PIXEL11_0 + } + else + { + PIXEL00_50 + PIXEL01_83 + PIXEL02_13 + PIXEL03_11 + PIXEL10_21 + PIXEL11_70 + } + PIXEL12_32 + PIXEL13_82 + PIXEL20_10 + PIXEL21_30 + PIXEL22_70 + PIXEL23_60 + PIXEL30_80 + PIXEL31_61 + PIXEL32_60 + PIXEL33_20 + break; + } + case 124: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 203: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_61 + PIXEL20_10 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 62: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_10 + PIXEL11_30 + PIXEL12_0 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 211: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_10 + PIXEL20_61 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 118: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_61 + PIXEL11_30 + PIXEL12_0 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_10 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 217: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 110: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_10 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 155: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 188: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 185: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 61: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 157: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 103: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_32 + PIXEL03_82 + PIXEL10_81 + PIXEL11_31 + PIXEL12_32 + PIXEL13_82 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_61 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 227: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_61 + PIXEL20_82 + PIXEL21_32 + PIXEL22_31 + PIXEL23_81 + PIXEL30_82 + PIXEL31_32 + PIXEL32_31 + PIXEL33_81 + break; + } + case 230: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_61 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + PIXEL20_82 + PIXEL21_32 + PIXEL22_31 + PIXEL23_81 + PIXEL30_82 + PIXEL31_32 + PIXEL32_31 + PIXEL33_81 + break; + } + case 199: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_32 + PIXEL03_82 + PIXEL10_81 + PIXEL11_31 + PIXEL12_32 + PIXEL13_82 + PIXEL20_61 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 220: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + break; + } + case 158: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL12_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 234: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_61 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_31 + PIXEL23_81 + PIXEL32_31 + PIXEL33_81 + break; + } + case 242: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL10_61 + PIXEL11_30 + PIXEL20_82 + PIXEL21_32 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_82 + PIXEL31_32 + break; + } + case 59: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL11_0 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 121: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 87: + { + PIXEL00_81 + PIXEL01_31 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_81 + PIXEL11_31 + PIXEL12_0 + PIXEL20_61 + PIXEL21_30 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 79: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_32 + PIXEL03_82 + PIXEL11_0 + PIXEL12_32 + PIXEL13_82 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 122: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 94: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL12_0 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 218: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + break; + } + case 91: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL11_0 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 229: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_60 + PIXEL03_20 + PIXEL10_60 + PIXEL11_70 + PIXEL12_70 + PIXEL13_60 + PIXEL20_82 + PIXEL21_32 + PIXEL22_31 + PIXEL23_81 + PIXEL30_82 + PIXEL31_32 + PIXEL32_31 + PIXEL33_81 + break; + } + case 167: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_32 + PIXEL03_82 + PIXEL10_81 + PIXEL11_31 + PIXEL12_32 + PIXEL13_82 + PIXEL20_60 + PIXEL21_70 + PIXEL22_70 + PIXEL23_60 + PIXEL30_20 + PIXEL31_60 + PIXEL32_60 + PIXEL33_20 + break; + } + case 173: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL10_32 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + PIXEL20_31 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL30_81 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 181: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + PIXEL03_81 + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL13_31 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL23_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + PIXEL33_82 + break; + } + case 186: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 115: + { + PIXEL00_81 + PIXEL01_31 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL10_81 + PIXEL11_31 + PIXEL20_82 + PIXEL21_32 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + PIXEL30_82 + PIXEL31_32 + break; + } + case 93: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + break; + } + case 206: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + PIXEL02_32 + PIXEL03_82 + PIXEL12_32 + PIXEL13_82 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_31 + PIXEL23_81 + PIXEL32_31 + PIXEL33_81 + break; + } + case 205: + case 201: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL10_32 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + if (Diff(w[8], w[4])) + { + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + } + else + { + PIXEL20_12 + PIXEL21_0 + PIXEL30_20 + PIXEL31_11 + } + PIXEL22_31 + PIXEL23_81 + PIXEL32_31 + PIXEL33_81 + break; + } + case 174: + case 46: + { + if (Diff(w[4], w[2])) + { + PIXEL00_80 + PIXEL01_10 + PIXEL10_10 + PIXEL11_30 + } + else + { + PIXEL00_20 + PIXEL01_12 + PIXEL10_11 + PIXEL11_0 + } + PIXEL02_32 + PIXEL03_82 + PIXEL12_32 + PIXEL13_82 + PIXEL20_31 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL30_81 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 179: + case 147: + { + PIXEL00_81 + PIXEL01_31 + if (Diff(w[2], w[6])) + { + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + } + else + { + PIXEL02_11 + PIXEL03_20 + PIXEL12_0 + PIXEL13_12 + } + PIXEL10_81 + PIXEL11_31 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL23_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + PIXEL33_82 + break; + } + case 117: + case 116: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + PIXEL03_81 + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL13_31 + PIXEL20_82 + PIXEL21_32 + if (Diff(w[6], w[8])) + { + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + } + else + { + PIXEL22_0 + PIXEL23_11 + PIXEL32_12 + PIXEL33_20 + } + PIXEL30_82 + PIXEL31_32 + break; + } + case 189: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 231: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_32 + PIXEL03_82 + PIXEL10_81 + PIXEL11_31 + PIXEL12_32 + PIXEL13_82 + PIXEL20_82 + PIXEL21_32 + PIXEL22_31 + PIXEL23_81 + PIXEL30_82 + PIXEL31_32 + PIXEL32_31 + PIXEL33_81 + break; + } + case 126: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_10 + PIXEL11_30 + PIXEL12_0 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 219: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_10 + PIXEL20_10 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 125: + { + if (Diff(w[8], w[4])) + { + PIXEL00_82 + PIXEL10_32 + PIXEL20_0 + PIXEL21_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL00_11 + PIXEL10_13 + PIXEL20_83 + PIXEL21_70 + PIXEL30_50 + PIXEL31_21 + } + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 221: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + if (Diff(w[6], w[8])) + { + PIXEL03_81 + PIXEL13_31 + PIXEL22_0 + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL03_12 + PIXEL13_14 + PIXEL22_70 + PIXEL23_83 + PIXEL32_21 + PIXEL33_50 + } + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL20_10 + PIXEL21_30 + PIXEL30_80 + PIXEL31_10 + break; + } + case 207: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL02_32 + PIXEL03_82 + PIXEL10_0 + PIXEL11_0 + } + else + { + PIXEL00_50 + PIXEL01_83 + PIXEL02_13 + PIXEL03_11 + PIXEL10_21 + PIXEL11_70 + } + PIXEL12_32 + PIXEL13_82 + PIXEL20_10 + PIXEL21_30 + PIXEL22_31 + PIXEL23_81 + PIXEL30_80 + PIXEL31_10 + PIXEL32_31 + PIXEL33_81 + break; + } + case 238: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_32 + PIXEL03_82 + PIXEL10_10 + PIXEL11_30 + PIXEL12_32 + PIXEL13_82 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL21_0 + PIXEL30_0 + PIXEL31_0 + PIXEL32_31 + PIXEL33_81 + } + else + { + PIXEL20_21 + PIXEL21_70 + PIXEL30_50 + PIXEL31_83 + PIXEL32_14 + PIXEL33_12 + } + PIXEL22_31 + PIXEL23_81 + break; + } + case 190: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL12_0 + PIXEL13_0 + PIXEL23_32 + PIXEL33_82 + } + else + { + PIXEL02_21 + PIXEL03_50 + PIXEL12_70 + PIXEL13_83 + PIXEL23_13 + PIXEL33_11 + } + PIXEL10_10 + PIXEL11_30 + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + break; + } + case 187: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + PIXEL11_0 + PIXEL20_31 + PIXEL30_81 + } + else + { + PIXEL00_50 + PIXEL01_21 + PIXEL10_83 + PIXEL11_70 + PIXEL20_14 + PIXEL30_12 + } + PIXEL02_10 + PIXEL03_80 + PIXEL12_30 + PIXEL13_10 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 243: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_10 + PIXEL03_80 + PIXEL10_81 + PIXEL11_31 + PIXEL12_30 + PIXEL13_10 + PIXEL20_82 + PIXEL21_32 + if (Diff(w[6], w[8])) + { + PIXEL22_0 + PIXEL23_0 + PIXEL30_82 + PIXEL31_32 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL22_70 + PIXEL23_21 + PIXEL30_11 + PIXEL31_13 + PIXEL32_83 + PIXEL33_50 + } + break; + } + case 119: + { + if (Diff(w[2], w[6])) + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_0 + PIXEL03_0 + PIXEL12_0 + PIXEL13_0 + } + else + { + PIXEL00_12 + PIXEL01_14 + PIXEL02_83 + PIXEL03_50 + PIXEL12_70 + PIXEL13_21 + } + PIXEL10_81 + PIXEL11_31 + PIXEL20_82 + PIXEL21_32 + PIXEL22_30 + PIXEL23_10 + PIXEL30_82 + PIXEL31_32 + PIXEL32_10 + PIXEL33_80 + break; + } + case 237: + case 233: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_60 + PIXEL03_20 + PIXEL10_32 + PIXEL11_32 + PIXEL12_70 + PIXEL13_60 + PIXEL20_0 + PIXEL21_0 + PIXEL22_31 + PIXEL23_81 + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + PIXEL32_31 + PIXEL33_81 + break; + } + case 175: + case 47: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + PIXEL02_32 + PIXEL03_82 + PIXEL10_0 + PIXEL11_0 + PIXEL12_32 + PIXEL13_82 + PIXEL20_31 + PIXEL21_31 + PIXEL22_70 + PIXEL23_60 + PIXEL30_81 + PIXEL31_81 + PIXEL32_60 + PIXEL33_20 + break; + } + case 183: + case 151: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL10_81 + PIXEL11_31 + PIXEL12_0 + PIXEL13_0 + PIXEL20_60 + PIXEL21_70 + PIXEL22_32 + PIXEL23_32 + PIXEL30_20 + PIXEL31_60 + PIXEL32_82 + PIXEL33_82 + break; + } + case 245: + case 244: + { + PIXEL00_20 + PIXEL01_60 + PIXEL02_81 + PIXEL03_81 + PIXEL10_60 + PIXEL11_70 + PIXEL12_31 + PIXEL13_31 + PIXEL20_82 + PIXEL21_32 + PIXEL22_0 + PIXEL23_0 + PIXEL30_82 + PIXEL31_32 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + case 250: + { + PIXEL00_80 + PIXEL01_10 + PIXEL02_10 + PIXEL03_80 + PIXEL10_10 + PIXEL11_30 + PIXEL12_30 + PIXEL13_10 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + break; + } + case 123: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_10 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 95: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL11_0 + PIXEL12_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_30 + PIXEL23_10 + PIXEL30_80 + PIXEL31_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 222: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_10 + PIXEL11_30 + PIXEL12_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 252: + { + PIXEL00_80 + PIXEL01_61 + PIXEL02_81 + PIXEL03_81 + PIXEL10_10 + PIXEL11_30 + PIXEL12_31 + PIXEL13_31 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_0 + PIXEL23_0 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + case 249: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_61 + PIXEL03_80 + PIXEL10_32 + PIXEL11_32 + PIXEL12_30 + PIXEL13_10 + PIXEL20_0 + PIXEL21_0 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + break; + } + case 235: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_61 + PIXEL20_0 + PIXEL21_0 + PIXEL22_31 + PIXEL23_81 + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + PIXEL32_31 + PIXEL33_81 + break; + } + case 111: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + PIXEL02_32 + PIXEL03_82 + PIXEL10_0 + PIXEL11_0 + PIXEL12_32 + PIXEL13_82 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_61 + PIXEL32_10 + PIXEL33_80 + break; + } + case 63: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_0 + PIXEL11_0 + PIXEL12_0 + PIXEL20_31 + PIXEL21_31 + PIXEL22_30 + PIXEL23_10 + PIXEL30_81 + PIXEL31_81 + PIXEL32_61 + PIXEL33_80 + break; + } + case 159: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL11_0 + PIXEL12_0 + PIXEL13_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_32 + PIXEL23_32 + PIXEL30_80 + PIXEL31_61 + PIXEL32_82 + PIXEL33_82 + break; + } + case 215: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL10_81 + PIXEL11_31 + PIXEL12_0 + PIXEL13_0 + PIXEL20_61 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 246: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_61 + PIXEL11_30 + PIXEL12_0 + PIXEL20_82 + PIXEL21_32 + PIXEL22_0 + PIXEL23_0 + PIXEL30_82 + PIXEL31_32 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + case 254: + { + PIXEL00_80 + PIXEL01_10 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_10 + PIXEL11_30 + PIXEL12_0 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_0 + PIXEL23_0 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + case 253: + { + PIXEL00_82 + PIXEL01_82 + PIXEL02_81 + PIXEL03_81 + PIXEL10_32 + PIXEL11_32 + PIXEL12_31 + PIXEL13_31 + PIXEL20_0 + PIXEL21_0 + PIXEL22_0 + PIXEL23_0 + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + case 251: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_10 + PIXEL03_80 + PIXEL11_0 + PIXEL12_30 + PIXEL13_10 + PIXEL20_0 + PIXEL21_0 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + break; + } + case 239: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + PIXEL02_32 + PIXEL03_82 + PIXEL10_0 + PIXEL11_0 + PIXEL12_32 + PIXEL13_82 + PIXEL20_0 + PIXEL21_0 + PIXEL22_31 + PIXEL23_81 + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + PIXEL32_31 + PIXEL33_81 + break; + } + case 127: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + if (Diff(w[2], w[6])) + { + PIXEL02_0 + PIXEL03_0 + PIXEL13_0 + } + else + { + PIXEL02_50 + PIXEL03_50 + PIXEL13_50 + } + PIXEL10_0 + PIXEL11_0 + PIXEL12_0 + if (Diff(w[8], w[4])) + { + PIXEL20_0 + PIXEL30_0 + PIXEL31_0 + } + else + { + PIXEL20_50 + PIXEL30_50 + PIXEL31_50 + } + PIXEL21_0 + PIXEL22_30 + PIXEL23_10 + PIXEL32_10 + PIXEL33_80 + break; + } + case 191: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL10_0 + PIXEL11_0 + PIXEL12_0 + PIXEL13_0 + PIXEL20_31 + PIXEL21_31 + PIXEL22_32 + PIXEL23_32 + PIXEL30_81 + PIXEL31_81 + PIXEL32_82 + PIXEL33_82 + break; + } + case 223: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + PIXEL01_0 + PIXEL10_0 + } + else + { + PIXEL00_50 + PIXEL01_50 + PIXEL10_50 + } + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL11_0 + PIXEL12_0 + PIXEL13_0 + PIXEL20_10 + PIXEL21_30 + PIXEL22_0 + if (Diff(w[6], w[8])) + { + PIXEL23_0 + PIXEL32_0 + PIXEL33_0 + } + else + { + PIXEL23_50 + PIXEL32_50 + PIXEL33_50 + } + PIXEL30_80 + PIXEL31_10 + break; + } + case 247: + { + PIXEL00_81 + PIXEL01_31 + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL10_81 + PIXEL11_31 + PIXEL12_0 + PIXEL13_0 + PIXEL20_82 + PIXEL21_32 + PIXEL22_0 + PIXEL23_0 + PIXEL30_82 + PIXEL31_32 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + case 255: + { + if (Diff(w[4], w[2])) + { + PIXEL00_0 + } + else + { + PIXEL00_20 + } + PIXEL01_0 + PIXEL02_0 + if (Diff(w[2], w[6])) + { + PIXEL03_0 + } + else + { + PIXEL03_20 + } + PIXEL10_0 + PIXEL11_0 + PIXEL12_0 + PIXEL13_0 + PIXEL20_0 + PIXEL21_0 + PIXEL22_0 + PIXEL23_0 + if (Diff(w[8], w[4])) + { + PIXEL30_0 + } + else + { + PIXEL30_20 + } + PIXEL31_0 + PIXEL32_0 + if (Diff(w[6], w[8])) + { + PIXEL33_0 + } + else + { + PIXEL33_20 + } + break; + } + } + pIn += sizeof(uint32); + pOut+=16; + } + pOut += BpL * 4 - Xres * 4 * sizeof(uint32); + pIn += srcBpL - Xres * sizeof(uint32); + } +} diff --git a/libmednahawk/src/drivers/hqxx-common.cpp b/libmednahawk/src/drivers/hqxx-common.cpp new file mode 100644 index 0000000000..27bcb6c3e9 --- /dev/null +++ b/libmednahawk/src/drivers/hqxx-common.cpp @@ -0,0 +1,3 @@ +#include "main.h" + +#include "hqxx-common.h" diff --git a/libmednahawk/src/drivers/hqxx-common.h b/libmednahawk/src/drivers/hqxx-common.h new file mode 100644 index 0000000000..e2028285ee --- /dev/null +++ b/libmednahawk/src/drivers/hqxx-common.h @@ -0,0 +1,39 @@ +void hq4x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int srcBpL, int BpL); +void hq3x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int srcBpL, int BpL); +void hq2x_32( unsigned char * pIn, unsigned char * pOut, int Xres, int Yres, int srcBpL, int BpL); + +#ifdef HQXX_INTERNAL + +static const int Ymask = 0x00FF0000; +static const int Umask = 0x0000FF00; +static const int Vmask = 0x000000FF; +static const int trY = 0x00300000; +static const int trU = 0x00000700; +static const int trV = 0x00000006; + +static inline unsigned int hqxx_RGB_to_YUV(unsigned int value) +{ + int r,g,b; + int Y, u, v; + +#if 0 + r = (value >> 0) & 0xF8; + g = (value >> 8) & 0xFC; + b = (value >> 16) & 0xF8; + + Y = (r + g + b) >> 2; + u = 128 + ((r - b) >> 2); + v = 128 + ((-r + 2*g - b) >> 3); +#endif + + r = (value >> (16 + 2)) & 0x3E; + g = (value >> ( 8 + 2)) & 0x3F; + b = (value >> ( 0 + 2)) & 0x3E; + + Y = (r + g + b); + u = 128 + (r - b); + v = 128 + ((-r + 2*g - b) >> 1); + + return((Y<<16) + (u<<8) + v); +} +#endif diff --git a/libmednahawk/src/drivers/icon.h b/libmednahawk/src/drivers/icon.h new file mode 100644 index 0000000000..d4f7ef6ac8 --- /dev/null +++ b/libmednahawk/src/drivers/icon.h @@ -0,0 +1,2264 @@ +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + uint8 pixel_data[32 * 32 * 4 + 1]; +} mednafen_playicon = { + 32, 32, 4, + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\0\0\0\0\0\0\0\0\34\0\0\0\262\0\0\0\352\0\0" + "\0\305\0\0\0\253\0\0\0\236\0\0\0""4\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0""3'\1\244\235{\4\377_B\3\260\0\0\0\10\0\0\0\0\0\0\0\14" + "\0\0\0y\0\0\0o\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\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\256\242\15" + "\264\366\347\23\377\236s\3\377\0\0\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\0\0" + "\0q\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\2\0\0\0^\0\0\0\205\0\0\0\215\0\0\0\255\16\11\0\337\6\4\0m\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^T\7n\261\224\10\377Q7" + "\2\355\0\0\0\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0\0\0M\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\16\0\0\0\206\0\0\0,\0" + "\0\0\0\0\0\0\0;&\1\222\326\260\11\377\242\217\11\371\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\32\0\0\0`\27\20\0\225H<\0\364uj\1\341\225\213" + "\7\317\232\217\10\306\222\210\7\256yn\2\21293\0Y\0\0\0\33\0\0\0\221\0\0\0" + "\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\206\0\0\0\13\0" + "\0\0\0\0\0\0\0\0\0\0\0'\31\1\233\272\223\6\377\237\221\14\323\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0=\2\1\0\2709*\1\375jV\1\377\177k\1\377\212r\2\377\231x" + "\2\377\247\203\2\377\300\240\6\377\353\324\14\377\370\354\24\377\370\354" + "\24\377\314\300\15\376\215\202\5\342\21\17\0\255\0\0\0\30\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3" + "\0\0\0@\0\0\0\30\0\0\0\0\0\0\0\5\0\0\0\226\30\21\0\376\253\220\1\377\351" + "\323\3\377\366\351\21\377\374\361\30\377\374\362\30\377\373\360\27\377\367" + "\351\22\377\341\312\12\377\253\210\2\377\222l\2\377\313\253\6\377\363\342" + "\20\377\374\361\27\377}w\13\377\216\203\4\371g]\0\236\1\1\0#\0\0\0\0\0\0" + "\0B\0\0\0T\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\237\24\15\0\377\271\216\3\377\345\313\1\377\353\326\4\377" + "\367\351\22\377\372\357\26\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\364\344\16\377\333\273\1\377R9\1\377E0\1\377\240\177\3\377" + "\276\231\5\377[N\3\377\323\257\2\377\252\217\1\372NE\0\220\0\0\0\226\0\0" + "\0\1\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""2\0\0\0\377|Q\3\377\323\244\3\377\340\300\2\377\343\306\1\377\344\311" + "\1\377\346\315\0\377\351\323\2\377\355\332\6\377\366\350\20\377\357\335\11" + "\377\347\317\2\377\326\260\2\377lH\2\377+\36\1\377hW\5\377\214t\6\377G8\3" + "\377\210l\5\377\221p\5\377tY\3\37790\3\345\7\6\0J\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\377\244j\3\377\307" + "\214\3\377\337\275\2\377\337\276\2\377\337\276\2\377\337\276\2\377\340\300" + "\2\377\345\313\1\377\346\315\0\377\335\273\2\377\216l\2\377oN\2\377\256\210" + "\5\377\212r\6\377D4\2\377\30\20\0\377\24\15\0\377\31\21\1\377*\33\1\377\23" + "\14\0\377\33\24\1\377\15\13\0\376\0\0\0\217\0\0\0\5\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\3772\40\1\377\240h\3\377\310\216" + "\3\377\333\265\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\277\2" + "\377\324\256\2\377kJ\2\377\246t\3\377yY\2\377\20\13\0\3773!\1\377\201_\2" + "\377\276\223\3\377\326\254\2\377\272\234\2\377\333\266\3\377\274\233\2\377" + "\314\237\3\377\231r\2\377A,\1\377\4\3\0\325\10\5\0""8\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0c@d\0\377\0\1\0\377\2\1\0\377A*\1\377\230d\3\377" + "\315\232\3\377\334\270\2\377\337\276\2\377\332\264\2\377fE\2\377\260s\4\377" + "@+\1\377\37\24\1\377\235p\3\377\331\262\2\377\337\276\2\377\341\301\2\377" + "\351\323\1\377\362\342\14\377\374\362\30\377\373\360\26\377\366\350\21\377" + "|~\6\377^\225\12\377o\260\13\377s\253\5\372Bh\12X\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\34$8\0\366Lt\0\3774T\0\377\1\1\0\377\0\0\0\377+\34\1\377{" + "R\2\377\306\223\3\377\235p\3\377~R\3\377@*\1\377\7\14\1\377Zt\6\377d\225" + "\6\377s\240\6\377\214\210\5\377\337\276\2\377\350\321\1\377\361\336\16\377" + "\374\361\30\377\374\361\30\377\374\362\30\377Qs\14\377v\273\11\377\206\315" + "\2\377\224\336\1\377Y\214\13\353B+\1\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0J3M\0\323m\252\0\377\221\336\0\377/M\0\377\21\33\0\377\0\0\0\377\14\10" + "\0\3771\40\1\3776#\1\377\6\4\0\377Z\220\12\377x\275\11\377\201\310\4\377" + "w\273\4\377Fu\13\377\320\261\2\377\337\276\2\377\343\305\5\377\353\325\7" + "\377\366\350\21\377\374\362\30\377\255\254\21\377O~\7\377^\234\1\377J\203" + "\1\377'C\6\377\0\0\0\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\5" + "\10\0\371Mu\0\371e\237\0\377\236\362\0\377@h\0\377Fk\0\377\32*\0\377\12\20" + "\0\377L1\2\377N}\13\377q\263\0\377n\257\0\377J\203\1\377Yc\4\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\343\306\1\377\365\346\20\377\374\362\30" + "\377\374\362\30\377\315\272\21\377\216Y)\377\224Y%\3771\36\3\374\0\0\0\20" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12\0\0\0\231\0\0\0~\0\0\0$\0\0\0v\3\4\0\366" + "(=\0\350S\202\0\376\211\320\0\377\216\336\0\377Y\221\0\377jE\2\377\234\210" + "\3\377Ti\3\377Ib\2\377s`\21\377\327\246\22\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\345\313\1\377\372\356\25\377\370\353\23\377\357\334\10\377" + "\350\271\23\377\356tS\377\271>W\3776\16\37\255\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\237\0\0\0K\0\0\0\37\0\0\0\266\0\0\0a\0\0\0\27\0\0\0v\0\0\0\357" + "\0\0\0\255>^\0\335<\\\0\365\35\23\1\370\267\203\3\377\343\227'\377\371X{" + "\377\370[w\377\351\230/\377\337\276\2\377\337\276\2\377\332\275\1\377\347" + "\320\1\377\323\220\25\377\304\251\2\377\340\301\2\377\325\252\3\377|W\2\377" + "\12\6\0\302\0\0\0\265\0\0\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\311\0\0\0\2\0" + "\0\0\313\0\0\0-\0\0\0/\0\0\0\312\0\0\0a\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0""1\25\15\0\332nE\6\377\271}\10\377\316\234\3\377\324\247\3\377\327" + "\256\2\377\331\262\2\377\322\254\2\377\2653.\377\353\0Y\377\263U\31\377\205" + "]\2\377-\35\1\364\0\0\0\320\0\0\0""9\0\0\0""2\0\0\0\231\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0G\0\0\0)\0\0\0\260\0\0\0\20\0\0\0\340\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\6\0\0\0[\4\2\0\261(\32\1\355C+\1\377" + "R5\2\377T7\2\377O4\2\377H\26\21\377\231\0?\363\11\2\3\277\0\0\0r\0\0\0\23" + "\0\0\0T\0\0\0N\0\0\0\0\0\0\0\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21" + "\0\0\0N\0\0\0_\0\0\0\245\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\0\0\0\0\0\0\0\0\24\0\0\0&\0\0\0*\0\0\0#\0" + "\0\0\23\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21\0\0\0\12\0\0\0\0\0\0\0R" + "\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\0c\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0", +}; + +#ifndef _MSC_VER //zero 07-feb-2012 - cant handle this in msvc +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + uint8 pixel_data[128 * 128 * 4 + 1]; +} mednafen_playicon128 = { + 128, 128, 4, + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\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\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\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\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\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\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\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\2\0\0\0\31\0\0\0I\0\0\0r\0\0\0\223" + "\0\0\0\254\0\0\0\274\0\0\0\301\0\0\0\301\0\0\0\274\0\0\0\247\0\0\0\207\0" + "\0\0Y\0\0\0\36\0\0\0\1\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\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\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\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\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\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\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\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0@\0\0\0\224\0\0\0\332" + "\0\0\0\375\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0\310\0\0" + "\0_\0\0\0\4\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\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\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\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\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\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\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\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\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\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\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" + "\4\0\0\0[\0\0\0\324\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\316\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\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\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\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\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\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\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\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\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\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\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""5\0\0\0\312\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\373\0\0\0\316\0\0\0\222\0\0\0g\0\0\0K\0\0\0A\0\0\0A" + "\0\0\0S\0\0\0r\0\0\0\237\0\0\0\333\0\0\0\375\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\352\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\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\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\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\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\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\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0" + "\0\0\202\0\0\0\372\0\0\0\377\0\0\0\377\0\0\0\335\0\0\0u\0\0\0\35\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\1" + "\0\0\0(\0\0\0}\0\0\0\353\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\323\0\0\0\10\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\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\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\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\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\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\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\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\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" + "\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\0\0\0\0\0\0\0\0\0\26\0\0\0\276\0\0\0\377\0\0\0\377\0\0\0\342\0\0\0" + "b\0\0\0\6\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\0\0\0\0\0\0\0\0\0\0\0\0\40\2\1\0\253A*\1\375\212Y\3\377\241" + "h\3\377\212Y\3\377?)\1\377\1\1\0\377\0\0\0\377\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\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\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\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\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\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\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\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\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\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\0\0\0\0\0\0\0\0)\0\0\0\334\0\0\0\377\0" + "\0\0\374\0\0\0\223\0\0\0\16\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0G\2\1\0\355" + "rJ\2\377\277|\4\377\300}\4\377\310\217\3\377\316\232\3\377\310\220\3\377" + "pI\2\377\1\0\0\377\0\0\0\263\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\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\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\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\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\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\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\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\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\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\0""5\0\0\0\352\0\0\0\377\0\0\0\353\0\0\0J\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\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;\0\0\0\366L1\2\377\277|\4\377\326\250\13" + "\377\364\342\24\377\342\303\4\377\337\276\2\377\337\276\2\377\330\257\2\377" + "E/\1\377\0\0\0\343\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\2\0\0\0%\0\0\0Z\0\0\0~\0\0\0\227\0\0\0\243\0\0\0\246\0\0\0\233\0\0\0\214" + "\0\0\0s\0\0\0T\0\0\0-\0\0\0\12\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\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\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\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\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\0\0\0\0\0\0" + "\0\0""7\0\0\0\356\0\0\0\377\0\0\0\324\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\5\0\0\0\325\2\1\0\377\245k\3\377\277|\4\377\346\311\20" + "\377\374\362\30\377\347\314\10\377\355\327\14\377\361\337\20\377\350\317" + "\11\377\255\213\2\377\1\0\0\366\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\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\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\0\0\0\0\0\0\0\0\0\0\11\0" + "\0\0r\0\0\0\326\0\0\0\376\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\362\0\0\0\305\0" + "\0\0\204\0\0\0""5\0\0\0\1\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\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\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\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\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\352\0\0\0\377\0\0\0\307\0\0\0\23\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\0\0\0\377\34\22\1\377" + "\276{\4\377\300~\4\377\340\300\4\377\350\316\11\377\363\343\21\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\344\313\12\377\20\14\0\361\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\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\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\0\0\0\0\0\0)\0\0\0\327\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\372\0\0\0\345\0\0\0\326\0\0\0\322\0" + "\0\0\336\0\0\0\357\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\323\0\0" + "\0a\0\0\0\6\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\36\0\0\0" + "\342\0\0\0\377\0\0\0\305\0\0\0\16\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\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\0p\0\0\0\377.\36\1\377\277|\4\377\303\205\4\377\337" + "\276\2\377\344\307\6\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\366\350\24\377\40\33\0\331\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\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\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\0\0\25\0\0\0\341" + "\0\0\0\377\0\0\0\377\10\5\0\377\7\5\0\377\0\0\0\377\0\0\0\271\0\0\0i\0\0" + "\0""2\0\0\0\14\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\6\0\0\0\37\0\0\0T\0" + "\0\0\232\0\0\0\347\0\0\0\377\0\0\0\377\0\0\0\327\0\0\0I\0\0\0\1\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\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\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\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\0\0\0\16\0\0\0\317\0\0\0\377\0\0\0\321\0\0\0\21\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\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\0n\0\0\0\377!" + "\25\1\377\277|\4\377\302\202\4\377\337\276\2\377\347\314\10\377\374\362\30" + "\377\374\362\30\377\374\362\30\377\374\362\30\377\363\347\25\377\24\21\0" + "\265\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\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\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\0\0\211\0\0\0\3776#\1\377\225a\3\377\267w\4\377\266" + "v\4\377\216\\\3\377/\36\1\350\0\0\0i\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\10\0\0\0W\0\0\0\315\0" + "\0\0\377\0\0\0\375\0\0\0\237\0\0\0\16\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\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\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\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\3\0\0\0\255\0\0\0\377" + "\0\0\0\343\0\0\0\36\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\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\377\5\3\0\377\256q\4\377\277|\4\377\331\261" + "\2\377\341\302\4\377\373\360\27\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\277\262\20\377\1\1\0\177\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\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\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\0\0\334G2\1\377\322\245" + "\3\377\335\273\2\377\335\272\2\377\333\263\10\377\322\240\12\377\272y\4\377" + "3!\1\377\0\0\0\256\0\0\0\11\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\0\0\0\0\1\0\0\0W\0\0\0\342\0\0\0\377\0\0" + "\0\331\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\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\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\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\0z\0\0\0\377\0\0\0\366\0\0\0""7\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\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\0\5\0\0\0\331" + "\0\0\0\377^=\2\377\277|\4\377\307\214\3\377\336\273\2\377\352\322\12\377" + "\373\360\27\377\374\362\30\377\364\344\24\377D8\3\376\0\0\0""6\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\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\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\12\7\0\375\312\251\4\377\355\327\15\377\357\334\16\377\346\312\7\377" + "\365\346\23\377\367\350\26\377\300~\4\377\242i\3\377\2\1\0\377\0\0\0\223" + "\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\0\0\0\0\0\0\0\0\0\0\0\0\21\0\0\0\242\0\0\0\376\0\0\0\360\0\0\0I\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\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\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\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\372\0" + "\0\0\376\0\0\0e\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\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\0\0\0\0\0\0\0\0\0M\0\0\0\376\5\4\0\377\211Y\3" + "\377\277|\4\377\306\212\4\377\325\251\3\377\334\266\4\377\330\257\6\377m" + "O\2\377\1\0\0\314\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\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\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\1\377\365\346\23\377\374\362\30" + "\377\374\362\30\377\373\361\27\377\351\321\12\377\344\307\6\377\306\212\4" + "\377\277|\4\377\35\23\1\377\0\0\0\370\0\0\0\23\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\0\0\0\0\0\0\0\0\0\0" + "\0\0\1\0\0\0f\0\0\0\370\0\0\0\370\0\0\0Y\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\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\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\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\23\0\0\0\341\0\0\0\377\0\0\0\245\0\0\0\1\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\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\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\177\0\0\0\376\4\3\0\377T7\2\377\230c\3\377\253o\4\377" + "\216\\\3\377>(\1\377\1\0\0\375\0\0\0C\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\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\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\0\0\0OG\4\351\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\357\333\16\377\337" + "\276\2\377\310\217\3\377\277|\4\377$\27\1\377\0\0\0\377\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\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0C\0\0\0\361\0\0\0\373\0\0\0Z\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" + "\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\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\0\0\0\0\0\0\1\0\0\0\250\0\0\0\377\0\0\0\337\0\0\0\20\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\0\0\0\357\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\373\0\0\0n\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\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\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\0\0\0\0\0\0\0" + "\"\36\2\274\364\350\26\377\374\362\30\377\374\362\30\377\374\362\30\377\352" + "\322\13\377\335\273\2\377\302\201\4\377\264u\4\377\10\5\0\377\0\0\0\373\0" + "\0\0\27\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""7\0\0\0\356" + "\0\0\0\372\0\0\0Q\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\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\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\0\0U\0\0\0\376\0\0\0\375\0\0\0C\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" + "\0\0\0\0\0\0\0\0\2\0\0\0\16\0\0\0+\0\0\0H\0\0\0c\0\0\0{\0\0\0\217\0\0\0\237" + "\0\0\0\254\0\0\0\266\0\0\0\275\0\0\0\302\0\0\0\302\0\0\0\267\0\0\0\261\0" + "\0\0\274\0\0\0\373\0\0\0\377\0\0\0\377\0\0\0\344\0\0\0d\0\0\0\17\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\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\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\0\0\0\0\0\0p\201m\7\377\366\347\24\377\371\355\26\377" + "\357\332\16\377\337\275\2\377\313\224\3\377\277|\4\377Y:\2\377\0\0\0\377" + "\0\0\0\251\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\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\365\0\0\0\365\0\0\0""9\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\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\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\24\0\0\0\350\0\0\0\377\0\0\0" + "\232\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\4\0\0" + "\0/\0\0\0`\0\0\0\217\0\0\0\273\0\0\0\341\0\0\0\372\23\21\0\377*&\0\377@9" + "\0\377SK\0\377`V\0\377ka\0\377od\0\377ym\0\377th\0\377nc\0\377f[\0\377XO" + "\0\377G@\0\3771,\0\377\30\25\0\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\373\0\0\0\341\0\0\0\267\0\0\0\206\0\0\0R\0\0\0\31\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\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\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\20\4\3\0\346pO\2\377" + "\307\224\3\377\314\227\3\377\303\204\4\377\267w\4\377^=\2\377\1\1\0\377\0" + "\0\0\331\0\0\0\27\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\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\0S\0\0\0\373\0\0\0\350\0\0\0\40\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\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\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\236\0\0\0\377\0\0\0\347" + "\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15\0\0\0D\0\0\0\203\0\0\0\277\2\2" + "\0\363\32\30\0\377F?\0\377qf\0\377\231\211\0\377\275\252\0\377\336\311\2" + "\377\353\327\5\377\356\333\7\377\360\335\11\377\361\337\12\377\362\341\14" + "\377\363\343\15\377\364\344\16\377\364\345\17\377\365\346\17\377\365\346" + "\17\377\363\344\16\377\360\336\11\377\352\325\3\377\350\321\0\377\347\320" + "\0\377\335\307\0\377\273\251\0\377\221\203\0\377bX\0\377.'\0\377\6\4\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\376\0\0\0\330\0\0\0\224\0\0\0L\0\0\0" + "\14\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\0\0\0\360\23\14\0\3779" + "%\1\3777#\1\377\17\12\0\377\0\0\0\376\0\0\0\264\0\0\0\30\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\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\0\0" + "\0\0\0|\0\0\0\377\0\0\0\312\0\0\0\12\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\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\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0>\0\0\0\374\0\0\0\377\0\0\0^\0\0\0\2\0\0\0&\0\0\0q\0\0" + "\0\273\3\3\0\363'#\0\377cY\0\377\232\213\0\377\316\271\0\377\351\324\4\377" + "\357\335\11\377\363\343\15\377\367\351\22\377\372\357\26\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\373\361\27\377\367\351\22\377\362\341\13\377\354\330\5\377" + "\351\322\1\377\347\316\0\377\341\302\1\377\331\262\1\377\322\244\2\377\313" + "\227\3\377\272\205\3\377\230i\3\377{S\2\377cB\2\377@)\1\377\12\7\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\361\0\0" + "\0\251\0\0\0O\0\0\0\7\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\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\0\0\0\0\0\0\0\0\0\40\0\0\0\214\0\0\0\300" + "\0\0\0\300\0\0\0\223\0\0\0=\0\0\0\1\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\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\0\0\0\0\0\0\0\0\0\2\0\0\0" + "\263\0\0\0\377\0\0\0\230\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5" + "\0\0\0\316\0\0\0\377\0\0\0\345\0\0\0\205\0\0\0\323\13\12\0\376IA\0\377\216" + "\177\0\377\315\270\0\377\353\326\4\377\361\340\13\377\366\350\21\377\372" + "\357\26\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\371" + "\354\24\377\363\343\15\377\355\332\7\377\351\323\1\377\346\315\0\377\335" + "\272\1\377\322\244\2\377\311\220\3\377\274}\4\377\224`\3\377hC\2\377>(\1" + "\377\31\20\0\377\2\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\346\0\0\0\210\0\0\0\37\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\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\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\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" + "\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\25\0\0\0\344\0\0\0\376\0\0\0T\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\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\0\0\0\0\0\0\0\0\0\0\0\0" + "\0h\0\0\0\377\0\0\0\377\13\12\0\377ME\0\377\235\216\0\377\335\307\0\377\352" + "\325\3\377\361\340\13\377\370\354\24\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\373\360\27\377\366\350\21\377\360\336\12\377\352" + "\325\3\377\350\321\0\377\342\304\1\377\326\253\2\377\312\223\3\377\277~\4" + "\377\241h\3\377kE\2\3777#\1\377\17\12\0\377\33\21\1\3777#\1\377P5\2\377f" + "F\2\377yT\2\377\207a\2\377\217g\2\377\226l\2\377\222h\2\377\213a\2\377~V" + "\2\377kG\2\377U7\2\3779%\1\377\31\20\0\377\3\2\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\372\0\0\0\243\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\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\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\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\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\0K\0\0\0\375\0\0\0\352\0\0\0\32\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\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\4\0\0\0I\0\0\0\257\0\0\0\371\0" + "\0\0\377F?\0\377\330\303\0\377\351\322\1\377\356\334\10\377\366\350\21\377" + "\373\361\27\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\361\30\377" + "\366\351\21\377\357\335\10\377\351\323\1\377\350\320\0\377\341\302\1\377" + "\323\246\2\377\306\213\3\377\275{\4\377\223`\3\377W9\2\377/\37\1\377B+\1" + "\377pN\2\377\237v\2\377\304\227\3\377\326\254\2\377\334\270\2\377\340\301" + "\1\377\343\306\1\377\344\310\1\377\344\311\1\377\345\312\1\377\345\312\1" + "\377\344\311\1\377\344\311\1\377\343\307\1\377\341\302\1\377\334\270\2\377" + "\325\252\2\377\315\233\3\377\264\200\3\377\200U\3\377I0\1\377\17\12\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\372\0\0\0\241\0\0\0\35\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\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\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\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\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\240\0\0\0\377\0\0\0\256\0\0\0\1\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\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0p\0\0\0\333\16\15\0\377\26\24\0\377\0\0" + "\0\377\5\4\0\377\307\266\4\377\363\343\15\377\372\357\26\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\371\356\25\377\362\341\14\377" + "\352\325\3\377\350\321\0\377\343\306\0\377\324\251\2\377\306\213\3\377\276" + "{\4\377\226b\3\377V8\2\377='\1\377cB\2\377\244y\2\377\321\244\2\377\336\273" + "\1\377\344\311\1\377\346\315\0\377\350\320\0\377\352\324\2\377\355\331\6" + "\377\357\335\11\377\362\341\13\377\363\343\15\377\364\344\16\377\364\344" + "\16\377\363\344\16\377\362\341\14\377\357\335\11\377\353\326\4\377\350\321" + "\0\377\350\321\0\377\350\321\0\377\347\317\0\377\345\313\1\377\340\301\1" + "\377\324\247\2\377\276\210\3\377[;\2\377\6\4\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\362\0\0\0v\0\0\0\5\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\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\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\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\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\0\0\0\353\0\0\0\376\0\0\0T\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\0\213\0\0\0\357\40\35\0\377\203" + "v\0\377\307\263\0\377\16\14\0\377\0\0\0\377_[\11\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\361\30\377\366\350\21\377\356\332" + "\7\377\350\321\0\377\346\315\0\377\331\262\1\377\311\221\3\377\277}\4\377" + "\245k\3\377a?\2\3775\"\1\377`?\2\377\253{\3\377\323\247\3\377\341\301\1\377" + "\345\314\0\377\350\322\1\377\355\332\6\377\362\342\14\377\367\351\22\377" + "\372\357\26\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\371\355\24\377\361\341\13\377\352\324\2\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\320\0\377\345\313\1\377\333" + "\265\2\377\250{\3\377*\33\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\313\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\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\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\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\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\0f\0\0\0\377\0\0\0\343\0\0\0\15\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\0\0\0\0!\0\0\0" + "\226\0\0\0\366*&\0\377\230\211\0\377\342\314\0\377\350\322\0\377pf\2\377" + "\0\0\0\377\6\6\1\377\331\320\25\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\373\360" + "\26\377\363\343\15\377\353\326\3\377\350\321\0\377\340\301\1\377\320\237" + "\2\377\302\202\4\377\270w\4\377{P\3\3773!\1\3770\37\1\377\204X\3\377\310" + "\225\3\377\333\266\2\377\343\310\1\377\347\317\0\377\354\330\5\377\364\345" + "\17\377\373\360\26\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\373\360\27\377\362\342" + "\14\377\351\322\1\377\350\321\0\377\350\321\0\377\350\321\0\377\347\317\0" + "\377\340\301\2\377\320\245\2\377\\>\2\377\2\1\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\361\0\0\0Z\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\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\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\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\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\315\0\0\0\377\0\0\0\206\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\34\0\0\0\225\0\0\0" + "\370.*\0\377\237\220\0\377\347\320\0\377\350\321\0\377\355\331\6\377\346" + "\332\22\377\17\16\1\377\0\0\0\377]Y\11\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\371\356\25\377" + "\361\337\13\377\351\323\1\377\347\316\0\377\331\262\1\377\310\217\3\377\277" + "|\4\377\235f\3\377S6\2\377\16\11\0\377-\35\1\377\220_\3\377\315\231\3\377" + "\335\273\2\377\345\312\1\377\350\321\0\377\355\331\6\377\367\352\22\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\370\353\23\377\351\323\1\377\350\321\0\377\350" + "\321\0\377\350\321\0\377\346\315\0\377\337\277\2\377\331\261\2\377\206[\2" + "\377\12\7\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\376\0\0\0\203" + "\0\0\0\1\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\0\0\0\376" + "\0\0\0\365\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\21\0\0\0" + "\207\0\0\0\364%!\0\377\232\213\0\377\345\317\0\377\350\321\0\377\353\326" + "\3\377\365\347\20\377\374\362\30\377\201|\14\377\0\0\0\377\3\2\0\377\323" + "\313\24\377\374\362\30\377\374\362\30\377\374\362\30\377\373\361\27\377\366" + "\351\21\377\357\334\10\377\351\322\1\377\343\307\0\377\323\245\2\377\303" + "\204\4\377\270x\4\377|P\3\377.\36\1\377\2\1\0\377\23\14\0\377}Q\3\377\310" + "\221\3\377\333\266\2\377\343\307\1\377\350\320\0\377\351\322\1\377\364\344" + "\16\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\361\340\13\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321" + "\0\377\343\306\1\377\337\276\2\377\327\256\2\377\230d\3\377\22\13\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\225\0\0\0\3\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" + "\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\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\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\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\272\0\0\0\377\0\0\0\237" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0j\0\0\0\350\25\23\0\377\211{\0\377" + "\342\314\0\377\350\321\0\377\350\321\0\377\350\322\0\377\357\334\10\377\360" + "\336\12\377\351\330\12\377\27\26\2\377\0\0\0\377KE\3\377\363\343\15\377\362" + "\342\14\377\361\337\12\377\355\332\7\377\351\323\2\377\350\320\0\377\336" + "\275\1\377\315\232\3\377\300~\4\377\250m\3\377[;\2\377\22\14\0\377\0\0\0" + "\377\0\0\0\377;&\1\377\263y\3\377\325\252\3\377\337\277\2\377\346\314\0\377" + "\350\321\0\377\351\322\1\377\367\352\22\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\361\337\12\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\346\315\0\377\337" + "\276\2\377\337\276\2\377\315\232\3\377\235f\3\377\21\13\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\212\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\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\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\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" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0\0\377\0\0\0\372\0\0\0(\0\0\0\0\0\0\0" + "A\0\0\0\321\10\7\0\377ka\0\377\333\305\0\377\350\321\0\377\350\321\0\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\220" + "\202\0\377\0\0\0\377\1\1\0\377\261\237\0\377\345\313\0\377\342\305\1\377" + "\335\272\1\377\326\254\2\377\315\232\2\377\303\205\4\377\275{\4\377\216\\" + "\3\377<'\1\377\3\2\0\377\0\0\0\377\0\0\0\377\0\0\0\377V8\2\377\302\204\4" + "\377\335\271\2\377\337\276\2\377\345\314\0\377\350\321\0\377\350\321\0\377" + "\363\343\15\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\365\347\20\377\350\322\1\377\350\321\0\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\337\276\2\377\337" + "\276\2\377\334\271\2\377\300~\4\377\227b\3\377\11\6\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\376\0\0\0c\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\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\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\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\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\272\0\0\0\377\0\0\0\256\0\0\0\244\1\1\0\375B<\0\377" + "\304\261\0\377\350\321\0\377\347\316\0\377\340\300\1\377\330\260\2\377\322" + "\243\2\377\315\231\3\377\312\222\3\377\310\216\3\377\305\213\3\377+\40\0" + "\377\0\0\0\377*\33\1\377\300\177\4\377\300~\4\377\277|\4\377\277|\4\377\277" + "|\4\377\261s\4\377qI\2\377\"\26\1\377\1\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377K0\1\377\276{\4\377\322\244\3\377\337\276\2\377\341\303\1\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\371\356\25\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\373\361\27\377\371\355\24\377\364\345\17\377\355\332\6\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350" + "\321\0\377\347\317\0\377\337\276\2\377\337\276\2\377\337\276\2\377\311\220" + "\3\377\277|\4\377|Q\2\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\364\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\0\0\0\376" + "\0\0\0\377\31\26\0\377\233\214\0\377\343\311\0\377\330\257\2\377\313\226" + "\3\377\302\201\4\377\272y\4\377\242i\3\377\213[\3\377yN\3\377kE\2\377`>\2" + "\377P4\2\377\1\0\0\377\0\0\0\3775\"\1\377kF\2\377rJ\2\377oH\2\377[;\2\377" + "4\"\1\377\10\5\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\16\11\0\377\264u\4\377\277|\4\377\326\254\3\377\337\276\2\377\342" + "\304\1\377\350\321\0\377\350\321\0\377\350\321\0\377\362\341\14\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\373\360\26\377\370\353\23\377\365\347\20\377\363\343\15\377\357\335" + "\11\377\354\327\4\377\351\322\1\377\350\321\0\377\350\321\0\377\350\321\0" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377" + "\350\321\0\377\342\305\1\377\337\276\2\377\337\276\2\377\337\276\2\377\317" + "\236\3\377\277|\4\377\277|\4\377H/\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\277\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\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\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\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\0\0\0\"\0\0" + "\0\274\0\0\0\377\0\0\0\377aO\1\377\303\216\3\377\224a\3\377hC\2\377@*\1\377" + "\35\23\1\377\3\2\0\377\10\5\0\377\22\14\0\377\32\21\1\377\37\24\1\377'\31" + "\1\377\12\7\0\377\0\0\0\377\5\3\0\377\14\10\0\377\2\1\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\3770\37\1\377\277|\4\377\277|\4\377\315\230\3\377\337" + "\276\2\377\337\277\2\377\346\316\0\377\350\321\0\377\350\321\0\377\350\321" + "\0\377\353\326\3\377\361\337\12\377\365\347\20\377\372\357\26\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\372\357\26\377\365\347\20\377\361\340\13\377\355\331" + "\6\377\352\324\2\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\320\0\377\345" + "\313\1\377\341\302\1\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\322\243\3\377\277|\4\377\277|\4\377\260s\4\377\20\12\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0L\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\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\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\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\2\0\0\0f\0\0" + "\0\361\35\23\1\377K0\1\377\0\0\0\377\7\5\0\377\33\22\0\3777%\1\377_D\1\377" + "\203b\2\377\244~\4\377\301\230\6\377\320\250\10\377\331\262\11\377\336\271" + "\12\377\337\274\13\377\330\264\12\377\21\15\0\377\0\0\0\377iU\3\377\313\233" + "\4\377\277\216\3\377\251y\3\377\213`\2\377kG\2\377I0\1\377%\30\1\377\6\4" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\16\11\0\377\255" + "p\4\377\277|\4\377\300}\4\377\326\254\2\377\337\276\2\377\340\300\2\377\345" + "\314\1\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321" + "\0\377\351\322\1\377\357\335\10\377\371\354\24\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\367\352\22\377\355\332\7\377\350\322\1\377\350\321" + "\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377" + "\350\321\0\377\350\321\0\377\347\320\0\377\346\315\0\377\344\311\1\377\342" + "\304\1\377\340\277\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\321\241\3\377\277|\4\377\277|\4\377\277" + "|\4\377gC\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\273" + "\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\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\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\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\27\0\0\0\263\0\0\0\377\16\11\0\3771\40\1\377C4\1\377\26\23\1\377\0" + "\0\0\377\225\203\10\377\355\330\16\377\355\330\16\377\352\320\16\377\346" + "\311\15\377\342\301\13\377\337\273\12\377\335\267\11\377\333\265\10\377\335" + "\270\11\377\242\212\7\377\0\0\0\377\3\2\0\377\320\274\13\377\361\336\20\377" + "\363\342\21\377\365\345\22\377\362\341\21\377\354\324\15\377\341\300\11\377" + "\324\247\5\377\277\213\3\377\221b\3\377]=\2\377(\32\1\377\2\1\0\377\0\0\0" + "\377\0\0\0\377\36\23\1\377\204V\3\377\275z\4\377\300\177\4\377\323\246\3" + "\377\337\276\2\377\337\276\2\377\342\303\1\377\346\314\0\377\350\321\0\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\322\1\377\361" + "\340\13\377\373\361\27\377\364\345\17\377\350\321\0\377\350\321\0\377\350" + "\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321" + "\0\377\350\321\0\377\350\321\0\377\350\321\0\377\347\316\0\377\345\312\1" + "\377\343\306\1\377\341\302\1\377\340\300\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\314\227\3\377\277|\4" + "\377\277|\4\377\277|\4\377\261s\4\377\7\5\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\374\0\0\0\26\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\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\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\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0J\0\0\0\347\5\5\0\377HA\3\377\234\217\11\377\337\307" + "\14\377\346\310\16\377r\\\5\377\0\0\0\3778(\1\377\241l\3\377\220^\3\377\205" + "V\3\377{P\3\377sK\2\377oH\2\377oH\2\377oH\2\377rJ\2\3777$\1\377\0\0\0\377" + "&\31\1\377\242i\3\377\264y\3\377\305\212\3\377\314\226\3\377\325\250\6\377" + "\341\300\12\377\355\327\16\377\366\347\23\377\367\351\24\377\360\334\17\377" + "\340\276\11\377\317\235\4\377\260x\3\377pI\2\377.\36\1\377\3\2\0\377\0\0" + "\0\377\27\17\0\377gC\2\377\262t\4\377\312\223\3\377\333\267\2\377\337\276" + "\2\377\337\276\2\377\341\301\2\377\344\311\1\377\347\320\0\377\350\321\0" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\354\330\5\377\352\325\3\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350" + "\321\0\377\350\321\0\377\347\317\0\377\344\311\1\377\342\304\1\377\340\300" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\303\205\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\3777$\1" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0R\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\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" + "\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\213\0\0\0\374\0\0\0\377-%\0\377" + "ua\3\377]G\2\377B,\1\377,\35\1\377\23\14\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\4\3\0\377\20\13\0\377" + "*\33\1\377J0\2\377mG\2\377\226c\3\377\276\205\3\377\320\237\5\377\340\276" + "\11\377\357\333\17\377\366\350\24\377\357\333\17\377\334\267\7\377\312\222" + "\3\377\244l\3\377[;\2\377\22\14\0\377\0\0\0\377\15\10\0\377_>\2\377\264w" + "\4\377\316\234\3\377\335\271\2\377\337\276\2\377\337\276\2\377\337\277\2" + "\377\342\305\1\377\346\315\0\377\350\321\0\377\350\321\0\377\350\321\0\377" + "\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350" + "\321\0\377\345\313\0\377\341\303\1\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\327\255\2\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277" + "|\4\377^=\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0v" + "\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\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\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\0\0\0\0\0\0\0\0\0\0\35\0\0\0\303\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\11\6\0\3772" + "\40\1\377gC\2\377\242m\3\377\313\225\3\377\334\267\7\377\356\330\16\377\361" + "\336\17\377\343\305\11\377\315\231\3\377\271z\4\377uL\2\377\35\23\1\377\0" + "\0\0\377\20\12\0\377mG\2\377\275~\4\377\316\233\3\377\335\272\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\342\304\1\377\347\316\0\377\350\321\0" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\350\321\0\377\347\317\0\377" + "\341\303\1\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\275\2\377\307\214\3\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377" + "\277|\4\377hD\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\204\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\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\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\0\0\0\0\0\0C\0\0\0\350\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\4\3\0\377\11\6\0\377\14\10\0\377" + "\15\10\0\377\11\6\0\377\5\3\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\1\0\0\377\40\25\1\377eB\2\377\254t\3\377\316" + "\234\3\377\341\300\7\377\352\322\12\377\341\301\7\377\313\224\3\377\275{" + "\4\377yN\2\377\32\21\0\377\0\0\0\377#\26\1\377\223_\3\377\302\203\4\377\325" + "\251\3\377\337\276\2\377\337\276\2\377\337\276\2\377\337\277\2\377\344\311" + "\1\377\350\321\0\377\350\321\0\377\350\321\0\377\346\315\0\377\340\300\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\322\243\3\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377" + "\277|\4\377X9\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0q\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\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\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\3\0\0\0q\0\0\0\372\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\11\6\0\377+\34\1\377N2\2\377lF\2" + "\377\26\16\0\377.\36\1\377\253o\4\377\263t\4\377\267w\4\377\272y\4\377\272" + "y\4\377\267w\4\377\264u\4\377\\<\2\377\1\1\0\377vL\2\377qJ\2\377U7\2\377" + "5\"\1\377\22\14\0\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\5\3\0\377?)\1\377\225b\3" + "\377\310\220\3\377\330\260\3\377\342\303\4\377\330\260\3\377\304\207\4\377" + "\270w\4\377eB\2\377\11\6\0\377\3\2\0\377V8\2\377\271x\4\377\315\230\3\377" + "\336\274\2\377\337\276\2\377\337\276\2\377\337\276\2\377\343\306\1\377\350" + "\321\0\377\347\320\0\377\340\300\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\326\253\2\377\300~\4\377\277|\4\377" + "\277|\4\377\277|\4\377\277|\4\377\277|\4\377\274z\4\377\37\24\1\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0F\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\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\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\312\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\5\3\0\3772!\1\377" + "gC\2\377\230b\3\377\272y\4\377\277|\4\377\277|\4\377\277|\4\377\\<\2\377" + "/\36\1\377\300\177\4\377\302\203\4\377\304\206\4\377\305\211\4\377\305\211" + "\4\377\305\211\4\377\305\211\4\377Z>\2\377'\33\1\377\277~\4\377\277|\4\377" + "\277|\4\377\277|\4\377\276{\4\377\246l\3\377zO\3\377J0\2\377\27\17\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\1\0\0\3774\"\1\377\225a\3\377\307\214\3\377\326\254\2\377\336\274" + "\2\377\316\232\3\377\277}\4\377\247l\3\3777$\1\377\0\0\0\377%\30\1\377\242" + "i\3\377\307\213\3\377\334\270\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\343\306\1\377\343\307\1\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\322\244\3\377\300~\4\377\277|\4\377\277" + "|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377b?\2\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\376\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\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\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\23\0\0\0\241\0\0\0\375\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\4\2\0\3774\"\1\377xN\2\377\262s\4\377\277" + "|\4\377\277|\4\377\300\177\4\377\305\211\4\377\313\225\3\377\321\240\3\377" + "\325\252\3\377\267\227\2\377[N\1\377\336\275\2\377\337\275\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\200m\1\377" + "{i\1\377\336\275\2\377\335\271\2\377\331\261\2\377\324\250\3\377\317\235" + "\3\377\311\220\3\377\302\203\4\377\277|\4\377\275{\4\377\232d\3\377]=\2\377" + "\34\22\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\2\1\0\377C+\1\377\251n\3\377\307\215\3\377\331\261\2\377\326\253" + "\2\377\302\201\4\377\276{\4\377qI\2\377\10\5\0\377\15\10\0\377\207X\3\377" + "\303\205\4\377\332\264\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\277\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\334\270\2\377\312" + "\222\3\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4" + "\377\255q\4\377F-\1\377\1\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0j\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0wM\2\0" + "\7\5\0A\0\0\0\341\0\0\0\377\0\0\0\377\0\0\0\377\13\7\0\377\20\12\0\377Z:" + "\2\377\245k\3\377\277|\4\377\300~\4\377\307\214\3\377\320\237\3\377\330\257" + "\2\377\336\273\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\277\2" + "\377\337\300\2\377\330\274\1\377\342\305\1\377\343\306\1\377\343\307\1\377" + "\343\307\1\377\343\306\1\377\342\305\1\377\342\304\1\377\324\267\1\377\312" + "\255\1\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\275\2\377\332\263\2\377\321\241\3\377\307\214\3" + "\377\277}\4\377\275z\4\377\222_\3\377F-\1\377\7\4\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\13\7\0\377rJ\2\377\276|\4\377\314" + "\226\3\377\330\260\2\377\305\207\4\377\277|\4\377\231d\3\377\31\20\0\377" + "\4\2\0\377rJ\2\377\302\202\4\377\331\262\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\324\247\3\377\302\202\4\377" + "\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\270x\4\377hD\2\377" + "\15\11\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\234\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\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\0\0\0\0\0\0\0\0\0\0\270w\3\7," + "\34\1\213\2\2\0\374\0\0\0\377\0\0\0\377\0\0\0\377\1\0\0\3770\37\1\377J0\2" + "\377nG\2\377\234i\3\377\317\241\3\377\334\271\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\340\301\2\377\343\306\1\377\345\312\1\377\347\316\0" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\351\322\1\377\352\325\3\377" + "\353\327\4\377\355\330\5\377\355\330\6\377\355\330\6\377\353\327\4\377\352" + "\324\2\377\350\321\0\377\347\317\0\377\346\315\0\377\344\311\1\377\342\305" + "\1\377\341\302\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\333\266\2\377\317\236\3\377\303\204\4\377\277|\4\377\255" + "p\4\377]=\2\377\16\11\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\3778$\1\377\256q\4\377\302\202\4\377\322\242\3\377\307\214\3\377" + "\277|\4\377\256q\4\377)\33\1\377\1\1\0\377fB\2\377\302\201\4\377\331\262" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\331\262\2\377\310\216\3\377\277|\4" + "\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\272y\4\377tK\2\377\26\16" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\270\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\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\0\0\0\0\0\0Q4\1" + "\26""9%\1\301\5\7\1\377\32-\5\3771S\11\377@m\14\377H{\16\377K\200\17\377" + "Gy\16\377;e\13\377(D\10\377\16\26\2\377\37\32\0\377|i\1\377\330\271\2\377" + "\343\307\1\377\346\316\0\377\350\321\0\377\350\321\0\377\351\323\2\377\356" + "\332\7\377\362\342\14\377\366\350\21\377\371\355\25\377\373\361\27\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\361\30\377\371\355\24\377\354\330\5\377\350\321\0\377\350" + "\321\0\377\350\321\0\377\350\321\0\377\347\316\0\377\343\306\1\377\340\277" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\336\274\2" + "\377\323\244\3\377\303\205\4\377\277|\4\377\263t\4\377^=\2\377\13\7\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\26\16\0\377\225a\3\377" + "\277|\4\377\311\220\3\377\306\212\3\377\277|\4\377\265u\4\3770\37\1\377\1" + "\1\0\377oH\2\377\302\202\4\377\332\263\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\334\270\2\377\314\230\3\377\300}\4\377" + "\277|\4\377\277|\4\377\277|\4\377\277|\4\377\271x\4\377tK\2\377\31\21\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\12\20\0\377Nz\0\377\0\0\0\377\0\0\0\377\0\0\0\274\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\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\0" + "\0\0\0\0'\7\13\1\3501T\11\377Z\226\20\377|\303\13\377\222\334\6\377\235\351" + "\4\377\236\353\4\377\226\342\5\377\206\317\11\377m\261\16\377]\236\22\377" + "\\\234\22\377?k\14\377\14\24\2\377'#\0\377\307\263\0\377\352\324\2\377\361" + "\340\13\377\367\352\22\377\373\361\27\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\361\30\377\364\345\16\377\353" + "\325\3\377\350\321\0\377\350\321\0\377\350\321\0\377\346\314\0\377\342\304" + "\1\377\337\277\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\336\274\2\377" + "\320\237\3\377\300\177\4\377\277|\4\377\253o\4\377F.\1\377\1\1\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\10\5\0\377\177R\3\377\277|\4\377\302" + "\203\4\377\301\201\4\377\277|\4\377\263t\4\377$\27\1\377\3\2\0\377\206W\3" + "\377\303\205\4\377\334\270\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\336\273\2\377\317\236" + "\3\377\301\200\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\266v\4\377" + "kE\2\377\27\17\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\26$\0\377l\257\0\377\223\336\0\377" + "\1\1\0\377\0\0\0\377\0\0\0\251\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\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(\31\1\12\33-\5\317S\215\20\377w\275" + "\14\377\247\366\2\377\255\375\0\377\226\341\5\377q\266\15\377k\257\17\377" + "t\272\15\377\207\320\11\377\242\360\3\377\233\347\4\377n\262\16\377]\236" + "\22\377U\221\21\377\22\37\4\377\40\35\1\377\353\341\26\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\367\352\22\377\353\327\4\377\350\321\0\377\350\321\0\377" + "\350\321\0\377\347\316\0\377\341\303\1\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\333\265\2\377\307\213\3\377\277|\4\377\277|\4\377~R\3\377\12\6\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\2\0\377pI\2\377\277|\4\377\277" + "|\4\377\277|\4\377\277|\4\377\247l\3\377\16\11\0\377\15\11\0\377\246l\3\377" + "\306\213\3\377\336\274\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\336\273\2\377\321\241\3\377\302\202\4\377\277|\4\377\277|\4\377\277" + "|\4\377\277|\4\377\255p\4\377^=\2\377\16\11\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377Eq\0\377\203\323\0\377\227\345\0\377\2\3\0\377\0\0\0\377\0" + "\0\0\203\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\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\277|\4\0>H\6\223X\226\21\377|\302\13\377\237\354\3\377\256\375\0" + "\377\257\377\0\377\257\377\0\377\241\357\3\377c\245\21\377^\237\22\377_\241" + "\21\377_\240\22\377v\274\14\377\237\355\3\377z\301\13\377]\236\22\377P\210" + "\17\377\3\5\1\377\202}\14\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\373\361\27\377\362\342\14\377" + "\351\323\1\377\350\321\0\377\351\323\0\377\372\365\0\377\375\373\0\377\351" + "\323\1\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\336\275\2\377\333\271\2\377" + "\315\231\3\377\277|\4\377\277|\4\377\233d\3\377\26\16\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\1\1\0\377oH\2\377\277|\4\377\277|\4\377\277|\4" + "\377\277|\4\377zO\2\377\0\0\0\3773!\1\377\276{\4\377\315\230\3\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\336\273\2\377\321\241\3\377\302\203\4\377\277|\4\377\277" + "|\4\377\277|\4\377\277|\4\377\236f\3\377K1\2\377\10\5\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\7\13\0\377\0\0\0\377\0\0\0\377%=\0\377\217\341\0\377\213\324" + "\0\377\0\0\0\377\0\0\0\377\0\0\0K\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\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\205W\3/Q\177\16\374j\256\17\377\212\324" + "\10\377\205\315\11\377\257\377\0\377\257\377\0\377\257\377\0\377\257\377" + "\0\377\215\327\7\377}\304\13\377\200\310\12\377}\305\13\377r\270\15\377c" + "\245\21\377\210\321\10\377l\257\17\377]\236\22\377\36""3\6\377EB\7\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374" + "\362\30\377\374\362\30\377\374\362\30\377\370\353\23\377\347\320\1\377\351" + "\322\1\377\377\377\0\377\377\377\0\377\365\353\1\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\336\276\2\377\267\234\2\377we\1\377G=\1\377(\"\0\377\27" + "\23\0\377\22\20\0\377\32\26\0\377)\33\1\377I/\1\377xN\2\377\233e\3\377\34" + "\22\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\1\0\377wM\2\377\277|" + "\4\377\277|\4\377\277|\4\377\275{\4\377%\30\1\377\0\0\0\377\203U\3\377\277" + "}\4\377\327\255\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\335\273\2\377\321\240\3\377\302\203\4\377\277|\4\377\277|\4\377\277" + "|\4\377\275{\4\377\210X\3\3775\"\1\377\2\2\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\3\5\0\377Bh\0\377\210\320\0\377\4\6\0\377\0\0\0\377\"7\0\377\234\361" + "\0\377f\233\0\377\0\0\0\377\0\0\0\363\0\0\0\13\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\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\0ZJ\4\240]\236\22\377z\300\13" + "\377]\235\21\377\204\313\4\377\257\377\0\377\257\377\0\377\257\377\0\377" + "\257\377\0\377\222\334\0\377w\274\2\377{\301\5\377\177\307\11\377\200\310" + "\12\377z\301\13\377^\240\22\377c\245\21\377]\236\22\377\":\7\377DA\6\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\352\322\12\377" + "\341\301\2\377\367\357\0\377\374\371\0\377\351\322\1\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\234\205\1\377/*\1\377\32,\5\3773W\12\377Ds\15\377S\212\15\377b\235" + "\14\377`\231\12\377R\204\12\377:a\12\377%?\7\377\17\31\3\377\11\6\0\377:" + "&\1\377\3\2\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\4\2\0\377\212Z" + "\3\377\277|\4\377\277|\4\377\277|\4\377qJ\2\377\0\0\0\377+\34\1\377\276|" + "\4\377\306\212\4\377\337\276\2\377\337\276\2\377\334\270\2\377\317\234\3" + "\377\301\201\4\377\277|\4\377\277|\4\377\277|\4\377\262s\4\377lF\2\377\35" + "\23\1\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377&>\0\377i\254\0\377" + "\222\345\0\377\250\377\0\377\24\36\0\377\0\0\0\377*E\0\377\235\360\0\377" + ")>\0\377\0\0\0\377\0\0\0\236\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\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\273y\4\6@A\5\352^\237\22\377b\244\21\377P\214" + "\6\377]\233\0\377\254\373\0\377\257\377\0\377\257\377\0\377\255\374\0\377" + "\177\304\0\377u\270\0\377u\270\0\377v\271\1\377{\301\5\377\200\310\12\377" + "i\255\17\377]\236\22\377]\236\22\377\21\36\3\377wr\13\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\356\332\16\377\337\276\2\377" + "\337\276\2\377\340\277\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\332\272\2\377YK\1\377\33-\5\377Q\212" + "\20\377^\237\22\377x\277\14\377\235\351\4\377\255\375\0\377\254\374\1\377" + "\233\347\4\377\241\356\3\377\250\366\2\377\227\343\5\377x\275\14\377N\204" + "\16\377%>\7\377\3\4\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\16\11\0\377\243i\3\377\277|\4\377\277|\4\377\237h\3\377\0\0\0\377\2\1\0" + "\377\252n\3\377\277|\4\377\327\255\2\377\313\225\3\377\300\177\4\377\277" + "|\4\377\277|\4\377\276{\4\377\232d\3\377M2\2\377\12\7\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377S\207\0\377}\313\0\377}\314\0" + "\377\223\346\0\377\250\377\0\377\24\36\0\377\0\0\0\377\20\33\0\377\32(\0" + "\377\0\0\0\377\0\0\0\371\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\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""3!\1\35\20\26\2\377]\236\22\377\\\235\21" + "\377J\203\1\377I\202\0\377a\240\0\377\213\323\0\377\220\330\0\377\202\310" + "\0\377u\270\0\377u\270\0\377u\270\0\377u\270\0\377u\270\0\377{\301\6\377" + "l\260\17\377]\236\22\377Hz\16\377\4\4\0\377\323\313\24\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\370\353\23\377\367\352\22\377\374\362\30\377\374\362\30\377" + "\374\362\30\377\374\362\30\377\374\362\30\377\352\322\12\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377dU\1\377\23!\4\377Y\230\21\377a\242" + "\21\377\220\333\7\377\236\353\4\377\257\377\0\377\257\377\0\377\257\377\0" + "\377\200\310\12\377]\236\22\377b\243\21\377w\275\14\377\232\347\4\377\241" + "\357\3\377r\267\15\377N\204\17\377\24#\4\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377$\27\1\377\267w\4\377\277|\4\377\264u\4\377\5\3\0\377" + "\0\0\0\377\215\\\3\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\266v\4" + "\377vL\2\377+\34\1\377\1\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\4\6\0\377\0\0\0\377\0\0\0\377U\213\0\377}\314\0\377}\314\0\377\236" + "\363\0\377\244\370\0\377\12\20\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\212\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\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\0O\0\0\0\377O\207\17\377\\\234\21\377I\202\0\377" + "I\202\0\377I\202\0\377I\202\0\377M\206\0\377r\264\0\377u\270\0\377u\270\0" + "\377u\270\0\377u\270\0\377u\270\0\377z\300\6\377b\244\21\377X\226\21\377" + "\20\33\3\377d`\11\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\356\333" + "\7\377\355\331\6\377\373\361\27\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\366\347\23\377\340\300\3\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\305\250\2\377\4\3\0\377Hz\16\377^\237\22\377\200\310\12\377f\251\20" + "\377\217\331\7\377\257\377\0\377\257\377\0\377\257\377\0\377\235\352\4\377" + "]\236\22\377]\236\22\377^\237\22\377]\236\22\377u\272\15\377\244\362\2\377" + "\204\314\11\377[\232\21\377\37""5\6\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377O3\2\377\277|\4\377\270w\4\377\12\6\0\377\0\0\0\377\231c" + "\3\377\277|\4\377\275{\4\377\222_\3\377K1\1\377\12\7\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\1\1\0\377\40""4\0\377l\250\0\377\241\365" + "\0\377Eh\0\377\0\0\0\377Q\205\0\377}\314\0\377\211\333\0\377\250\377\0\377" + "\211\317\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\275\0\0\0\7" + "\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\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\0y\0\0\0\377&@\7\377]\235\22\377K\205\2\377I\202\0\377I\202" + "\0\377I\202\0\377I\202\0\377T\217\0\377p\262\0\377u\270\0\377u\270\0\377" + "u\270\0\377t\267\2\377g\252\17\377W\224\21\377\30(\5\377$#\3\377\355\344" + "\27\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\372\357\26\377\350\322\0\377\350\321" + "\0\377\354\327\5\377\363\343\17\377\364\343\22\377\355\330\15\377\341\301" + "\3\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\216y\1\377\11" + "\17\2\377\\\234\22\377b\244\21\377_\240\22\377]\236\22\377\203\313\12\377" + "\257\377\0\377\257\377\0\377\257\377\0\377\231\345\5\377v\274\14\377}\305" + "\13\377~\306\12\377{\302\13\377q\266\15\377h\253\17\377\231\345\5\377\202" + "\312\12\377Y\227\21\377\12\22\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\1\1\0\377\212Z\3\377\264u\4\377\5\4\0\377!\26\1\377\222^\3\377[;\2\377\33" + "\21\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\3\5\0" + "\377*D\0\377b\237\0\377~\315\0\377\244\373\0\377\250\377\0\377\245\372\0" + "\377!3\0\377W\215\0\377\202\322\0\377\244\372\0\377\250\377\0\377Jp\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\267\0\0\0\16\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\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\0\0\0\0\0\221" + "\0\0\0\377\1\2\0\377@l\14\377T\221\12\377I\202\0\377I\202\0\377I\202\0\377" + "I\202\0\377I\202\0\377K\204\0\377V\222\0\377Z\227\0\377Z\227\3\377]\235\20" + "\377Hz\16\377\16\30\3\377\31\30\2\377\323\313\24\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\365\347\20\377\350\321\0\377\350\321\0\377\350\321" + "\0\377\342\304\1\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\207s\1\377\13\23\2\377]\236\22" + "\377]\236\22\377W\225\14\377P\214\6\377P\213\3\377\207\316\0\377\244\362" + "\0\377\235\351\0\377{\277\1\377w\273\2\377y\275\3\377{\301\5\377~\305\10" + "\377\200\310\12\377~\305\13\377g\252\20\377\224\337\6\377i\254\17\377/I\10" + "\377\13\7\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\26\16\0\377b?\2\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\3771O\0\377}\314\0\377}\314\0\377\206\327" + "\0\377\250\377\0\377\250\377\0\377\250\377\0\377Cf\0\377k\256\0\377\241\366" + "\0\377\250\377\0\377\211\317\0\377\5\10\0\377\0\0\0\322\0\0\0\237\0\0\0f" + "\0\0\0\5\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\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\0\0\0\0\0\0\0\0\0\225\0\0\0\377\0\0\0\377\3\5\0\377" + "3X\12\377P\213\10\377I\203\0\377I\202\0\377I\202\0\377I\202\0\377I\202\0" + "\377K\205\2\377S\217\11\377Hz\15\377\37""4\6\377\1\2\0\377*(\4\377\325\315" + "\24\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\362\342" + "\14\377\350\321\0\377\350\321\0\377\347\320\0\377\337\277\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\254\222\1\377\2\4\0\377T\216\20\377V\224\14\377I\202\0\377I\202" + "\0\377I\202\0\377I\202\0\377R\215\0\377u\270\0\377u\270\0\377u\270\0\377" + "u\270\0\377u\270\0\377u\270\0\377x\274\2\377~\305\10\377z\301\13\377`\241" + "\21\377q\266\16\3775Y\12\377O3\2\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\1\2\0\377!5\0\377h\236\0\377Nw\0\377\0\0\0\377#:\0\377}\314\0\377" + "}\314\0\377\215\337\0\377\250\377\0\377\250\377\0\377\250\376\0\3770J\0\377" + "\217\341\0\377\250\377\0\377\177\300\0\377\21\31\0\377\0\0\0\357\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\205\0\0\0\377\0\0\0" + "\377P4\2\3772\40\1\377\14\24\2\377%@\5\3772X\3\3777b\3\3777`\4\3772V\6\377" + "%?\7\377\15\27\3\377\0\1\0\377\14\13\1\377wr\13\377\361\347\27\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\361\340" + "\13\377\350\321\0\377\350\321\0\377\346\314\0\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\334\273\2\377\33\27\0\377/P\11\377V\225\14\377I\202\0\377I\202" + "\0\377I\202\0\377I\202\0\377[\230\0\377u\270\0\377u\270\0\377u\270\0\377" + "u\270\0\377u\270\0\377u\270\0\377u\270\0\377v\271\1\377~\306\10\377_\240" + "\22\377]\236\22\3772T\12\377\203U\3\377\25\16\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\20\32" + "\0\377\215\377\377B\225\377\377B\225\377\377B\225\377\377B\225\377" + "\377B\225\377\377B\225\377\377B\225\377\377C\223\377\370fn\377\353\301\21" + "\377\350\321\0\377\350\321\0\377\350\321\0\377\356\334\10\377\371\355\24" + "\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362\30\377\374\362" + "\30\377\374\362\30\377\374\362\30\377\374\362\30\377\357\334\10\377\350\321" + "\0\377\350\321\0\377\341\302\1\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\311\254\2\377@6\0\377\0\1\0\377\24" + "#\4\377:d\10\377L\205\5\377J\204\1\377I\202\0\377I\202\0\377J\203\1\377M" + "\210\4\377S\217\13\377\2" + "\377\273z\4\377\277|\4\377\311\221\3\377\333\265\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\261\227" + "\1\377\264\235\1\377\344\312\1\377\347\317\0\377\350\321\0\377\302\256\0" + "\377\224~\3\377\332\305\0\377\350\321\0\377\350\321\0\377\350\321\0\377\350" + "\321\0\377\350\321\0\377\334\276\1\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\342\264\16\377" + "\360zR\377\375J\213\377\377B\225\377\377B\225\377\377B\225\377\377B\225\377" + "\377B\225\377\377B\225\377\377B\225\377\374N\207\377\351\230/\377\337\276" + "\2\377\336\274\2\377\317\236\3\377\300~\4\377\277|\4\377\267w\4\377.\36\1" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\2\3\0\377$7\0\3772L\0\377'<" + "\0\377\20\30\0\377\0\0\0\377\0\0\0\377\0\0\0\350\0\0\0\254\0\0\0\365\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\373\0\0\0\260\0\0\0" + "A\0\0\0\1\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\14\0\0\0" + "\207\0\0\0\371\0\0\0\377\0\0\0\377\0\0\0\341\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\16\0\0\0\340\0\0\0\377\0\0\0\377\0\0\0\264\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""5\0\0\0\373\0\0\0\377" + "\0\0\0\371\0\0\0""3\0\0\0\0\0\0\0\0\0\0\0&\0\0\0\330\0\0\0\377\0\0\0\377" + "\0\0\0\377+\34\1\377\235f\3\377\277|\4\377\300~\4\377\315\230\3\377\333\266" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377sb\1\377\202o\1\377\241\211\1\377~I\17\377\273\4B\377\360\0V\377\224" + "A\33\377\345\316\0\377\350\321\0\377\350\321\0\377\350\321\0\377\345\316" + "\0\377\235\215\0\377\341\303\1\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\341" + "\270\12\377\353\2217\377\365if\377\375J\213\377\377B\225\377\377B\225\377" + "\377B\225\377\377B\225\377\377B\225\377\376D\222\377\330\225\27\377\303\204" + "\4\377\277|\4\377\277|\4\377\256q\4\377-\35\1\377\0\0\0\377\0\0\0\377\0\0" + "\0\372\0\0\0\356\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\372\0\0\0" + "\350\0\0\0\267\0\0\0e\0\0\0\15\0\0\0\0\0\0\0\25\0\0\0k\0\0\0\307\0\0\0\374" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\376\0\0\0\301\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\344\0\0\0" + "\377\0\0\0\377\0\0\0\357\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\0a\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0""3\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\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\266\0\0\0\377\0\0\0\377\0\0\0\224\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\23\0\0\0\301\0\0\0\377\0\0\0\377\0\0\0\377\5\3\0\377U" + "7\2\377\262s\4\377\277|\4\377\300~\4\377\312\223\3\377\327\255\2\377\337" + "\275\2\377\337\276\2\377\337\276\2\377\333\272\2\377y\16&\377\326\0M\377" + "\372\0Z\377\377\0\\\377\377\0\\\377\350\0T\377~M\16\377\324\265\2\377\340" + "\301\2\377\336\300\1\377|l\0\377\307\253\1\377\340\300\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\340\272\6" + "\377\345\245\37\377\353\216;\377\360|O\377\354f[\377\345ZZ\377\333cB\377" + "\301{\7\377\277|\4\377\277|\4\377\220]\3\377\30\17\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\376\0\0\0m\0\0\0\12\0\0\0-\0\0\0""3\0\0\0""3\0\0\0&\0\0\0\25\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" + "\0y\0\0\0\321\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0\247" + "\0\0\0\31\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\341" + "\0\0\0\377\0\0\0\377\0\0\0\354\0\0\0&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\10\0\0\0\345\0\0\0\377\0\0\0\377\0\0\0\215\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\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0(\0\0\0\376\0\0\0\377\0\0\0\372\0\0\0\34\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\260\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0" + "\0\377\15\11\0\377a?\2\377\262s\4\377\277|\4\377\277|\4\377\302\203\4\377" + "\315\230\3\377\326\254\2\377\336\273\2\377k-\24\377\377\0\\\377\377\0\\\377" + "\377\0\\\377\377\0\\\377\377\0\\\377\365\0X\377\250\13""8\377\2170\40\377" + "V;\6\377\302\245\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377" + "\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\335\271\2\377\325" + "\252\3\377\314\230\3\377\303\204\4\377\277|\4\377\277|\4\377\277|\4\377\277" + "|\4\377\252n\4\377J0\1\377\1\1\0\377\0\0\0\377\0\0\0\377\0\0\0\370\0\0\0" + "d\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\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\221\0\0\0\361\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\353\0\0\0" + "P\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\363\0\0\0" + "\377\0\0\0\377\0\0\0\315\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213" + "\0\0\0\377\0\0\0\377\0\0\0\313\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200" + "\0\0\0\377\0\0\0\377\0\0\0\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\1\0\0\0\354\0\0\0\377\0\0\0\377\0\0\0\300\0\0\0\376\0\0\0\377\0\0\0" + "\377\0\0\0\377\14\10\0\377U7\2\377\244j\3\377\277|\4\377\277|\4\377\277|" + "\4\377\300\177\4\377[9\4\377\357\0V\377\377\0\\\377\366\0Z\377\351\0X\377" + "\344\0X\377\347\0X\377\361\0Z\377\341\0Q\377\203i\4\377\337\276\2\377\337" + "\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276" + "\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2\377\337\276\2" + "\377\337\276\2\377\336\275\2\377\334\270\2\377\327\256\2\377\321\242\3\377" + "\313\225\3\377\305\210\4\377\300~\4\377\277|\4\377\277|\4\377\277|\4\377" + "\277|\4\377\277|\4\377\245k\3\377R5\2\377\11\6\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\343\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\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\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\246\0\0" + "\0\376\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0\177\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\0s\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0q\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""7\0\0\0\377\0\0\0\377\0\0\0\361\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\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\307\0\0\0\377\0\0\0\377\0\0\0Z\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\33\0\0\0\376\0\0\0\377\0\0\0\340\0\0\0" + "\3\0\0\0E\0\0\0\312\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\3\2\0\3774\"" + "\1\377yN\2\377\263t\4\377\277|\4\377{P\2\377\267\0C\377\334\0V\377\316\0" + "T\377\316\0T\377\316\0T\377\316\0T\377\316\0T\377h\5'\377\273\216\3\377\322" + "\243\3\377\324\247\3\377\324\250\3\377\325\252\3\377\325\252\3\377\324\250" + "\3\377\324\247\3\377\322\244\3\377\320\240\3\377\316\233\3\377\314\226\3" + "\377\310\217\3\377\305\210\4\377\301\201\4\377\277|\4\377\277|\4\377\277" + "|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\265v\4\377" + "{P\2\3775\"\1\377\3\2\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0" + "\242\0\0\0\25\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\\\0\0" + "\0\365\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\223\0\0\0\2\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\7\0\0\0\335\0\0\0\377\0\0\0\377\0\0\0\345\0\0\0\7\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\347\0\0\0\377\0\0\0\377\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\0\0\0" + "\0\0\0\0\0\0\0\0\0\12\0\0\0\362\0\0\0\377\0\0\0\370\0\0\0\25\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""7\0\0\0\377\0\0\0\377\0\0\0\244\0\0\0" + "\0\0\0\0\0\0\0\0\1\0\0\0J\0\0\0\301\0\0\0\376\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\5\3\0\3774\"\1\377Y:\2\377c\0(\377\316\0T\377\316\0T\377\316\0" + "T\377\316\0T\377\316\0T\377\271\0K\377e;\6\377\277|\4\377\277|\4\377\277" + "|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377" + "\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4" + "\377\277|\4\377\277|\4\377\277|\4\377\274z\4\377\241h\3\377pH\2\3778$\1\377" + "\6\4\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\376\0\0\0\276\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\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\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""9\0\0\0\356\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\206\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0p\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\301\0\0\0\377\0\0\0\355\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\0\0" + "\0\0\0\0\0\0\0\0\0\0\40\0\0\0\377\0\0\0\377\0\0\0\313\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\0H\0\0\0\377\0\0\0\377\0\0\0k\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0""6\0\0\0\241\0\0\0\365\0\0\0\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\35\0\14\377\313\0S\377\316\0T\377\316" + "\0T\377\316\0T\377\315\0T\377Z\12\36\377\236g\3\377\264u\4\377\271x\4\377" + "\274z\4\377\275{\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4\377\277|\4" + "\377\277|\4\377\277|\4\377\276{\4\377\273z\4\377\267w\4\377\250m\4\377\222" + "_\3\377xN\2\377Y:\2\3777$\1\377\22\13\0\377\1\1\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\367\0\0\0\247\0\0\0;\0\0\0\1\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\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\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\0\0D\0\0\0\371\0\0\0\377\0\0\0\377\0\0\0\376\0\0\0R\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\0\0\0\370\0\0\0\377\0\0\0\377\0\0\0\213\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\303\0\0\0\377\0\0\0\233\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\0\0\0" + "\0\0\0\0\0\0\0\0\0""9\0\0\0\377\0\0\0\377\0\0\0\217\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\0G\0\0\0\377\0\0\0\377\0\0\0""8\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\23\0\0\0e\0\0\0\272" + "\0\0\0\371\0\0\0\377\0\0\0\377\0\0\0\377y\0""1\377\316\0T\377\316\0T\377" + "\316\0T\377{\0""2\377\1\0\0\377\0\0\0\377\0\0\0\377\11\6\0\377\17\12\0\377" + "\24\15\0\377\31\20\1\377\40\25\1\377\"\26\1\377\"\26\1\377\"\26\1\377\"\26" + "\1\377\36\23\1\377\27\17\0\377\16\11\0\377\3\2\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0" + "\0\0\374\0\0\0\277\0\0\0k\0\0\0\26\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\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\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\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0~\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\347\0\0\0\23\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\267\0\0\0\377\0\0\0\377\0\0\0\265\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\0\0\0W\0\0\0\11\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\0\0\0\0\0\0\0\0\0" + "\0\0\0A\0\0\0\377\0\0\0\377\0\0\0X\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\377\0\0\0\377\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\0\0\0\0\20\0\0\0R\0" + "\0\0\224\0\0\0\316\4\0\2\366X\0$\377\207\0""7\377N\0\40\377\2\0\1\377\0\0" + "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" + "\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\374\0" + "\0\0\335\0\0\0\243\0\0\0^\0\0\0\27\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\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\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\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\6\0\0\0\331\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\207\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\377\0\0" + "\0\377\0\0\0\310\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\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\0""6\0\0\0\377\0\0\0\377\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\4\0\0\0\342\0\0\0\377\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15\0\0\0""1\0\0\0\\\0\0\0" + "\177\0\0\0\236\0\0\0\270\0\0\0\317\0\0\0\342\0\0\0\361\0\0\0\370\0\0\0\371" + "\0\0\0\373\0\0\0\375\0\0\0\375\0\0\0\377\0\0\0\377\0\0\0\375\0\0\0\375\0" + "\0\0\372\0\0\0\370\0\0\0\353\0\0\0\325\0\0\0\271\0\0\0\231\0\0\0s\0\0\0H" + "\0\0\0\33\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\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\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\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\0\0\0\0\0\0\0]\0\0\0\377\0\0\0\377" + "\0\0\0\377\0\0\0\354\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0*\0\0\0\377\0" + "\0\0\377\0\0\0\303\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\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\0\23\0\0\0\370\0\0\0\377\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\0i\0\0\0\3\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\16\0\0\0\24\0\0\0\33" + "\0\0\0\36\0\0\0$\0\0\0$\0\0\0\36\0\0\0\32\0\0\0\21\0\0\0\6\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\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\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\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\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\10\0\0\0\345\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0N\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0""0\0\0\0\377\0\0\0\377\0\0\0\221\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\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\0\0" + "\0\0\0\222\0\0\0\350\0\0\0\36\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\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\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\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\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\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\214\0\0\0\377" + "\0\0\0\377\0\0\0\377\0\0\0\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\0\0\0\305" + "\0\0\0\300\0\0\0\33\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\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\0\0\0\0\0\1\0\0\0\6\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\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\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\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\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\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\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\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\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\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""5\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\265\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\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\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\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\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\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\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\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\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\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\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\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\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\4\0\0\0\342\0\0\0\377\0\0\0\377" + "\0\0\0\317\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\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\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\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\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\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\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\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\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\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\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\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\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" + "\235\0\0\0\377\0\0\0\377\0\0\0\320\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\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\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\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\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\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\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\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\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\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\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\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\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\215\0\0\0\377\0\0\0\377\0\0\0\261\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\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\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\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\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\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\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\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\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\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\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\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\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\225\0\0\0\377\0\0\0\376" + "\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\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\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\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\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\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\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\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\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\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\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\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" + "\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\213\0\0\0`\0\0\0\1\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\0\0\0\0\0", +}; +#endif \ No newline at end of file diff --git a/libmednahawk/src/drivers/input-config.cpp b/libmednahawk/src/drivers/input-config.cpp new file mode 100644 index 0000000000..1ae842f737 --- /dev/null +++ b/libmednahawk/src/drivers/input-config.cpp @@ -0,0 +1,229 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" + +#include + +#include "input.h" +#include "input-config.h" +#include "video.h" +#include "Joystick.h" + +extern JoystickManager *joy_manager; + +static bool DTestButtonMouse(const ButtConfig &bc, const uint32 *MouseData) +{ + if(bc.ButtonNum & 0x8000) + { + if(bc.ButtonNum&1) // Y + { + if(bc.ButtonNum & 0x4000) + { + if(MouseData[1] < 128) + return(true); + } + else + { + if(MouseData[1] >= 128) + return(true); + } + } + else // X + { + if(bc.ButtonNum & 0x4000) + { + if(MouseData[0] < 128) + return(true); + } + else + { + if(MouseData[0] >= 128) + return(true); + } + } + } + else + { + if(MouseData[2] & (1 << SDL_BUTTON(bc.ButtonNum))) + return(true); + } + return(false); +} + +int DTestButton(std::vector &bc, const char *KeyState, const uint32 *MouseData, bool analog) +{ + const int maxv = analog ? 32767 : 1; + int32 ret = 0; // Will obviously break if 10s of thousands of physical buttons are assigned to one emulated analog button. ;) + + for(unsigned int x = 0; x < bc.size(); x++) + { + if(bc[x].ButtType == BUTTC_KEYBOARD) + { + if(KeyState[bc[x].ButtonNum]) + ret += maxv; + } + else if(bc[x].ButtType == BUTTC_JOYSTICK) + { + if(analog) + ret += joy_manager->TestAnalogButton(bc[x]); + else if(joy_manager->TestButton(bc[x])) + ret += maxv; + } + else if(bc[x].ButtType == BUTTC_MOUSE) + { + if(DTestButtonMouse(bc[x], MouseData)) + ret += maxv; + } + } + + if(ret > maxv) + ret = maxv; + + return(ret); +} + +int DTestButton(ButtConfig &bc, const char *KeyState, const uint32 *MouseData, bool analog) +{ + std::vector neobc; + neobc.push_back(bc); + + return(DTestButton(neobc, KeyState, MouseData, analog)); +} + + +#define ICSS_ALT 1 +#define ICSS_SHIFT 2 +#define ICSS_CTRL 4 + +/* Used for command keys */ +int DTestButtonCombo(std::vector &bc, const char *KeyState, const uint32 *MouseData, bool AND_Mode) +{ + unsigned int x; + unsigned int ss = 0; + unsigned match_count = 0; + + if(KeyState[MKK(LALT)] || KeyState[MKK(RALT)]) ss |= ICSS_ALT; + if(KeyState[MKK(LSHIFT)] || KeyState[MKK(RSHIFT)]) ss |= ICSS_SHIFT; + if(KeyState[MKK(LCTRL)] || KeyState[MKK(RCTRL)]) ss |= ICSS_CTRL; + + for(x = 0; x < bc.size(); x++) + { + if(bc[x].ButtType == BUTTC_KEYBOARD) + { + uint32 b = bc[x].ButtonNum; + + if(KeyState[b & 0xFFFF] && ((b >> 24) == ss)) + match_count++; + } + else if(bc[x].ButtType == BUTTC_JOYSTICK) + { + if(joy_manager->TestButton(bc[x])) + match_count++; + } + else if(bc[x].ButtType == BUTTC_MOUSE) + { + if(DTestButtonMouse(bc[x], MouseData)) + match_count++; + } + } + + if(match_count > 0) + { + if(!AND_Mode || match_count == bc.size()) + return(1); + } + + return(0); +} + +int DTestButtonCombo(ButtConfig &bc, const char *KeyState, const uint32 *MouseData, bool AND_Mode) +{ + std::vector neobc; + neobc.push_back(bc); + + return(DTestButtonCombo(neobc, KeyState, MouseData, AND_Mode)); +} + + +static ButtConfig efbc; +static int volatile efbcdone; +static int volatile efck; + +static int LastMouseX; +static int LastMouseY; + +static int EventFilter(const SDL_Event *event) +{ + if(efbcdone) + return(1); + + switch(event->type) + { + case SDL_KEYDOWN: if(!efck || (event->key.keysym.sym != MKK(LALT) && event->key.keysym.sym != MKK(RALT) && + event->key.keysym.sym != MKK(LSHIFT) && event->key.keysym.sym != MKK(RSHIFT) && + event->key.keysym.sym != MKK(LCTRL) && event->key.keysym.sym != MKK(RCTRL))) + { + efbc.ButtType = BUTTC_KEYBOARD; + efbc.DeviceNum = 0; + efbc.ButtonNum = event->key.keysym.sym; + if(efck) + efbc.ButtonNum |= ((event->key.keysym.mod & KMOD_ALT) ? (ICSS_ALT<<24):0) | ((event->key.keysym.mod & KMOD_SHIFT) ? (ICSS_SHIFT<<24):0) | ((event->key.keysym.mod & KMOD_CTRL) ? (ICSS_CTRL<<24):0); + efbcdone = 1; + return(1); + } + break; + + case SDL_MOUSEBUTTONDOWN: efbc.ButtType = BUTTC_MOUSE; + efbc.DeviceNum = 0; + efbc.ButtonNum = event->button.button - SDL_BUTTON_LEFT; + efbcdone = 1; + return(1); + + } + + return(1); +} + + +int DTryButtonBegin(ButtConfig *bc, int commandkey) +{ + memcpy(&efbc, bc, sizeof(ButtConfig)); + efck = commandkey; + efbcdone = 0; + + //SDL_MDFN_ShowCursor(1); + SDL_GetMouseState(&LastMouseX, &LastMouseY); + + MainSetEventHook(EventFilter); + //SDL_SetEventFilter(EventFilter); + return(1); +} + +int DTryButton(void) +{ + return(efbcdone); +} + +int DTryButtonEnd(ButtConfig *bc) +{ + MainSetEventHook(EventFilter); + memcpy(bc, &efbc, sizeof(ButtConfig)); + + return(1); +} + diff --git a/libmednahawk/src/drivers/input-config.h b/libmednahawk/src/drivers/input-config.h new file mode 100644 index 0000000000..5ac9b9f6c3 --- /dev/null +++ b/libmednahawk/src/drivers/input-config.h @@ -0,0 +1,14 @@ +#ifndef __MDFN_DRIVERS_INPUT_CONFIG_H +#define __MDFN_DRIVERS_INPUT_CONFIG_H + +int DTestButton(std::vector &bc, const char *KeyState, const uint32* MouseData, bool analog = false); +int DTestButton(ButtConfig &bc, const char *KeyState, const uint32 *MouseData, bool analog = false); + +int DTestButtonCombo(std::vector &bc, const char *KeyState, const uint32 *MouseData, bool AND_Mode = false); +int DTestButtonCombo(ButtConfig &bc, const char *KeyState, const uint32 *MouseData, bool AND_Mode = false); + +int DTryButtonBegin(ButtConfig *bc, int commandkey); +int DTryButton(void); +int DTryButtonEnd(ButtConfig *bc); + +#endif diff --git a/libmednahawk/src/drivers/input-default-buttons.h b/libmednahawk/src/drivers/input-default-buttons.h new file mode 100644 index 0000000000..336e7dc56e --- /dev/null +++ b/libmednahawk/src/drivers/input-default-buttons.h @@ -0,0 +1,591 @@ +// This file should only be included *ONCE* from drivers/input.cpp!!! + + +#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ()} +static const ButtConfig NESGamePadConfig[4][8]={ + /* Gamepad 1 */ + { + MK(KP3), MK(KP2), MK(TAB), MK(RETURN), MK(w),MK(s), + MK(a), MK(d) + }, + + /* Gamepad 2 */ + GPZ(), + + /* Gamepad 3 */ + GPZ(), + + /* Gamepad 4 */ + GPZ() +}; +#undef GPZ + +static const ButtConfig GBPadConfig[8] = +{ + MK(KP3), MK(KP2), MK(TAB), MK(RETURN), MK(d),MK(a), + MK(w), MK(s) +}; + +static const ButtConfig GBAPadConfig[10] = +{ + MK(KP3), MK(KP2), MK(TAB), MK(RETURN), MK(d),MK(a), + MK(w), MK(s), MK(KP6), MK(KP5) +}; + +#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ()} +static const ButtConfig PCFXPadConfig[2][15]= +{ + /* Gamepad 1 */ + { + MK(KP3), MK(KP2), MK(KP1), MK(KP4), MK(KP5), MK(KP6), MK(TAB), MK(RETURN), + MK(w), MK(d), MK(s), MK(a), + MK(KP8), MK(KP9), + }, + + /* Gamepad 2 */ + GPZ(), +}; +#undef GPZ + +#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ()} +static const ButtConfig PCEPadConfig[5][13]={ + /* Gamepad 1 */ + { + MK(KP3), MK(KP2), MK(TAB), MK(RETURN), MK(w), MK(d), MK(s), MK(a), + + // Extra 4 buttons on 6-button pad + MK(KP1), MK(KP4), MK(KP5), MK(KP6), + + // ..and special 2/6 mode select + MK(m), + }, + + /* Gamepad 2 */ + GPZ(), + + /* Gamepad 3 */ + GPZ(), + + /* Gamepad 4 */ + GPZ(), + + /* Gamepad 5 */ + GPZ() +}; +#undef GPZ + +static const ButtConfig LynxPadConfig[9] = +{ + // A, B, Option 2, Option 1, Left, Right, Up, Down, Pause + MK(KP3), MK(KP2), MK(KP1), MK(KP7), MK(a),MK(d), + MK(w), MK(s), MK(RETURN) +}; + +static const ButtConfig NGPPadConfig[7 + 2] = +{ + // Up, down, left, right, a(inner), b(outer), option + MK(w), MK(s), MK(a), MK(d), MK(KP2), MK(KP3), MK(RETURN), MK(KP5), MK(KP6) +}; + +static const ButtConfig WSwanPadConfig[12] = +{ + // Up, right, down, left, + // up-y, right-y, down-y, left-y, + // start, a(outer), b(inner), option + MK(w), MK(d), MK(s), MK(a), + MK(UP), MK(RIGHT), MK(DOWN), MK(LEFT), + MK(RETURN), MK(KP3), MK(KP2), MK(RETURN) +}; + + +static const ButtConfig powerpadsc[2][12]={ + { + MK(o),MK(p),MK(LEFTBRACKET),MK(RIGHTBRACKET), + MK(k),MK(l),MK(SEMICOLON),MK(QUOTE), + MK(m),MK(COMMA),MK(PERIOD),MK(SLASH) + }, + { + MK(o),MK(p),MK(LEFTBRACKET),MK(RIGHTBRACKET), + MK(k),MK(l),MK(SEMICOLON),MK(QUOTE), + MK(m),MK(COMMA),MK(PERIOD),MK(SLASH) + } + }; + +static const ButtConfig fkbmap[0x48]= +{ + MK(F1),MK(F2),MK(F3),MK(F4),MK(F5),MK(F6),MK(F7),MK(F8), + MK(1),MK(2),MK(3),MK(4),MK(5),MK(6),MK(7),MK(8),MK(9),MK(0),MK(MINUS),MK(EQUALS),MK(BACKSLASH),MK(BACKSPACE), + MK(ESCAPE),MK(q),MK(w),MK(e),MK(r),MK(t),MK(y),MK(u),MK(i),MK(o),MK(p),MK(BACKQUOTE),MK(LEFTBRACKET),MK(RETURN), + MK(LCTRL),MK(a),MK(s),MK(d),MK(f),MK(g),MK(h),MK(j),MK(k),MK(l),MK(SEMICOLON),MK(QUOTE),MK(RIGHTBRACKET),MK(INSERT), + MK(LSHIFT),MK(z),MK(x),MK(c),MK(v),MK(b),MK(n),MK(m),MK(COMMA),MK(PERIOD),MK(SLASH),MK(RALT),MK(RSHIFT),MK(LALT),MK(SPACE), + MK(DELETE),MK(END),MK(PAGEDOWN),MK(UP),MK(LEFT),MK(RIGHT),MK(DOWN) +}; + +static const ButtConfig HyperShotButtons[4]= +{ + MK(q),MK(w),MK(e),MK(r) +}; + +static const ButtConfig MahjongButtons[21]= +{ + MK(q),MK(w),MK(e),MK(r),MK(t), + MK(a),MK(s),MK(d),MK(f),MK(g),MK(h),MK(j),MK(k),MK(l), + MK(z),MK(x),MK(c),MK(v),MK(b),MK(n),MK(m) +}; + +static const ButtConfig PartyTapButtons[6]= +{ + MK(q),MK(w),MK(e),MK(r),MK(t),MK(y) +}; + +static const ButtConfig FTrainerButtons[12]= +{ + MK(o),MK(p),MK(LEFTBRACKET), + MK(RIGHTBRACKET),MK(k),MK(l),MK(SEMICOLON), + MK(QUOTE), + MK(m),MK(COMMA),MK(PERIOD),MK(SLASH) +}; + +static ButtConfig OekaKidsConfig[1] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, +}; + +static ButtConfig ArkanoidConfig[1] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, +}; + +static ButtConfig NESZapperConfig[2] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, + { BUTTC_MOUSE, 0, 2, 0 }, +}; + +static ButtConfig PCEMouseConfig[4] = +{ + { BUTTC_MOUSE, 0, 2, 0 }, + { BUTTC_MOUSE, 0, 0, 0 }, + MK(TAB), + MK(RETURN) +}; + +static ButtConfig PCFXMouseConfig[2] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, + { BUTTC_MOUSE, 0, 2, 0 }, +}; + +static const ButtConfig SMSPadConfig[2][12]= +{ + /* Gamepad 1 */ + { + MK(w), MK(s), MK(a), MK(d), MK(KP2), MK(KP3), MK(RETURN) + }, + + /* Gamepad 2 */ + {MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ()} +}; + +static const ButtConfig GGPadConfig[12]= +{ + MK(w), MK(s), MK(a), MK(d), MK(KP2), MK(KP3), MK(RETURN) +}; + +static const ButtConfig TsushinKBConfig[0x80]= +{ + // 0 + MK(KP0), + MK(KP1), + MK(KP2), + MK(KP3), + MK(KP4), + MK(KP5), + MK(KP6), + +// 1 + MK(KP8), + MK(KP9), + MK(KP_MULTIPLY), // Keypad Multiply + MK(KP_PLUS), // Keypad Plus + MK(KP_EQUALS), // Keypad Equals + MK(UNKNOWN), // KP_COMMA // Keypad Comma + MK(KP_PERIOD), // Keypad Period + +// 2 + MK(BACKQUOTE), // @ + MK(a), + MK(b), + MK(c), + MK(d), + MK(e), + MK(f), + +// 3 + MK(h), + MK(i), + MK(j), + MK(k), + MK(l), + MK(m), + MK(n), + +// 4 + MK(p), + MK(q), + MK(r), + MK(s), + MK(t), + MK(u), + MK(v), + +// 5 + MK(x), + MK(y), + MK(z), + MK(LEFTBRACKET), // Left bracket + MK(PLUS), // Yen + MK(RIGHTBRACKET), // Right bracket + MK(EQUALS), // Caret + +// 6 + MK(0), + MK(1), + MK(2), + MK(3), + MK(4), + MK(5), + MK(6), + +// 7 + MK(8), + MK(9), + MK(QUOTE), // Colon + MK(SEMICOLON), // Semicolon + MK(COMMA), // Comma + MK(PERIOD), // Period + MK(SLASH), // Slash + +// 8 + MK(HOME), // HOME CLEAR + MK(UP), + MK(RIGHT), + //MK(UNKNOWN), + MK(UNKNOWN), // GRPH + MK(LSUPER), // カナ + //MK(UNKNOWN), + +// 9 + MK(BREAK), // STOP + MK(F1), + MK(F2), + MK(F3), + MK(F4), + MK(F5), + MK(SPACE), + + // A + MK(TAB), + MK(DOWN), + MK(LEFT), + MK(END), // HELP + MK(PRINT), // COPY + MK(KP_MINUS), + MK(KP_DIVIDE), + +// B + MK(PAGEDOWN), // ROLL DOWN + MK(PAGEUP), // ROLL UP + //MK(UNKNOWN), + //MK(UNKNOWN), + MK(o), + MK(UNKNOWN), // TODO: Underscore + MK(g), + +// C + MK(F6), + MK(F7), + MK(F8), + MK(F9), + MK(F10), + MK(BACKSPACE), + MK(INSERT), + +// D + MK(RALT), // å¤‰æ› + MK(LALT), // 決定 + MK(RSUPER), // PC + MK(RCTRL), // å¤‰æ› + MK(LCTRL), // CTRL + MK(KP7), + MK(w), + +// E + MK(RETURN), + MK(KP_ENTER), + MK(LSHIFT), + MK(RSHIFT), + MK(CAPSLOCK), + MK(DELETE), + MK(ESCAPE), + +// F + //MK(UNKNOWN), + //MK(UNKNOWN), + //MK(UNKNOWN), + //MK(UNKNOWN), + //MK(UNKNOWN), + MK(MINUS), // Minus + MK(7), // 7 +}; + + +static const ButtConfig MMPlayInputConfig[] = +{ + MK(p), + MK(LEFT), + MK(RIGHT), + MK(DOWN), + MK(UP), +}; + +static const ButtConfig CDPlayInputConfig[] = +{ + MK(SPACE), + MK(RETURN), + MK(RIGHT), + MK(LEFT), + MK(UP), + MK(DOWN), + MK(PAGEUP), + MK(PAGEDOWN), +}; + + +static const ButtConfig MDPad3Config[2][8] = +{ + { MK(w), MK(s), MK(a), MK(d), MK(KP1), MK(KP2), MK(KP3), MK(RETURN) }, + { MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ(), MKZ() }, + +}; + +static const ButtConfig SNESPadConfig[12] = +{ + MK(KP2), + MK(KP4), + MK(TAB), + MK(RETURN), + MK(w), + MK(s), + MK(a), + MK(d), + MK(KP6), + MK(KP8), + MK(KP7), + MK(KP9), +}; + + +static ButtConfig SNESMouseConfig[2] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, + { BUTTC_MOUSE, 0, 2, 0 }, +}; + + +/* + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + { "start", "START", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + + { "l2", "L2 (rear left shoulder)", 11, IDIT_BUTTON, NULL }, + { "r2", "R2 (rear right shoulder)", 13, IDIT_BUTTON, NULL }, + { "l1", "L1 (front left shoulder)", 10, IDIT_BUTTON, NULL }, + { "r1", "R1 (front right shoulder)", 12, IDIT_BUTTON, NULL }, + + { "triangle", "â–³ (upper)", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "circle", "â—‹ (right)", 9, IDIT_BUTTON_CAN_RAPID, NULL }, + { "cross", "x (lower)", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "square", "â–¡ (left)", 8, IDIT_BUTTON_CAN_RAPID, NULL }, +*/ +static const ButtConfig PSXPadConfig[14] = +{ + MK(TAB), + MK(RETURN), + MK(w), + MK(d), + MK(s), + MK(a), + + MK(KP7), + MK(KP9), + MK(KP1), + MK(KP3), + + MK(KP8), + MK(KP6), + MK(KP2), + MK(KP4), +}; + +static const ButtConfig PSXDancePadConfig[10] = +{ + MK(KP_DIVIDE), + MK(KP_MULTIPLY), + MK(KP8), + MK(KP6), + MK(KP2), + MK(KP4), + + MK(KP1), + MK(KP9), + MK(KP7), + MK(KP3), +}; + +static ButtConfig PSXMouseConfig[2] = +{ + { BUTTC_MOUSE, 0, 2, 0 }, + { BUTTC_MOUSE, 0, 0, 0 }, +}; + +static ButtConfig PSXGunConConfig[4] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, + { BUTTC_MOUSE, 0, 2, 0 }, + { BUTTC_MOUSE, 0, 1, 0 }, + MK(SPACE) +}; + +static ButtConfig PSXJustifierConfig[4] = +{ + { BUTTC_MOUSE, 0, 0, 0 }, + { BUTTC_MOUSE, 0, 2, 0 }, + { BUTTC_MOUSE, 0, 1, 0 }, + MK(SPACE) +}; + +typedef struct +{ + const char *base_name; + const ButtConfig *bc; + int num; +} DefaultSettingsMeow; + +static DefaultSettingsMeow defset[] = +{ + { "nes.input.port1.gamepad", NESGamePadConfig[0], sizeof(NESGamePadConfig[0]) / sizeof(ButtConfig) }, + { "nes.input.port2.gamepad", NESGamePadConfig[1], sizeof(NESGamePadConfig[1]) / sizeof(ButtConfig) }, + { "nes.input.port3.gamepad", NESGamePadConfig[2], sizeof(NESGamePadConfig[2]) / sizeof(ButtConfig) }, + { "nes.input.port4.gamepad", NESGamePadConfig[3], sizeof(NESGamePadConfig[3]) / sizeof(ButtConfig) }, + + + { "nes.input.port1.powerpada", powerpadsc[0], sizeof(powerpadsc[0]) / sizeof(ButtConfig) }, + { "nes.input.port2.powerpada", powerpadsc[1], sizeof(powerpadsc[1]) / sizeof(ButtConfig) }, + { "nes.input.port3.powerpadb", powerpadsc[0], sizeof(powerpadsc[0]) / sizeof(ButtConfig) }, + { "nes.input.port4.powerpadb", powerpadsc[1], sizeof(powerpadsc[1]) / sizeof(ButtConfig) }, + + { "nes.input.port1.zapper", NESZapperConfig, sizeof(NESZapperConfig) / sizeof(ButtConfig) }, + { "nes.input.port2.zapper", NESZapperConfig, sizeof(NESZapperConfig) / sizeof(ButtConfig) }, + + { "nes.input.fcexp.fkb", fkbmap, sizeof(fkbmap) / sizeof(ButtConfig) }, + { "nes.input.fcexp.mahjong", MahjongButtons, sizeof(MahjongButtons) / sizeof(ButtConfig) }, + { "nes.input.fcexp.ftrainera", FTrainerButtons, sizeof(FTrainerButtons) / sizeof(ButtConfig) }, + { "nes.input.fcexp.ftrainerb", FTrainerButtons, sizeof(FTrainerButtons) / sizeof(ButtConfig) }, + + { "nes.input.fcexp.hypershot", HyperShotButtons, sizeof(HyperShotButtons) / sizeof(ButtConfig) }, + { "nes.input.fcexp.partytap", PartyTapButtons, sizeof(PartyTapButtons) / sizeof(ButtConfig) }, + + { "nes.input.fcexp.oekakids", OekaKidsConfig, sizeof(OekaKidsConfig) / sizeof(ButtConfig) }, + + { "nes.input.port1.arkanoid", ArkanoidConfig, sizeof(ArkanoidConfig) / sizeof(ArkanoidConfig) }, + { "nes.input.port2.arkanoid", ArkanoidConfig, sizeof(ArkanoidConfig) / sizeof(ArkanoidConfig) }, + { "nes.input.port3.arkanoid", ArkanoidConfig, sizeof(ArkanoidConfig) / sizeof(ArkanoidConfig) }, + { "nes.input.port4.arkanoid", ArkanoidConfig, sizeof(ArkanoidConfig) / sizeof(ArkanoidConfig) }, + { "nes.input.fcexp.arkanoid", ArkanoidConfig, sizeof(ArkanoidConfig) / sizeof(ArkanoidConfig) }, + { "lynx.input.builtin.gamepad", LynxPadConfig, sizeof(LynxPadConfig) / sizeof(ButtConfig) }, + { "gb.input.builtin.gamepad", GBPadConfig, sizeof(GBPadConfig) / sizeof(ButtConfig) }, + { "gba.input.builtin.gamepad", GBAPadConfig, sizeof(GBAPadConfig) / sizeof(ButtConfig) }, + { "ngp.input.builtin.gamepad", NGPPadConfig, sizeof(NGPPadConfig) / sizeof(ButtConfig) }, + { "wswan.input.builtin.gamepad", WSwanPadConfig, sizeof(WSwanPadConfig) / sizeof(ButtConfig) }, + + { "pce.input.port1.gamepad", PCEPadConfig[0], sizeof(PCEPadConfig[0]) / sizeof(ButtConfig) }, + { "pce.input.port2.gamepad", PCEPadConfig[1], sizeof(PCEPadConfig[1]) / sizeof(ButtConfig) }, + { "pce.input.port3.gamepad", PCEPadConfig[2], sizeof(PCEPadConfig[2]) / sizeof(ButtConfig) }, + { "pce.input.port4.gamepad", PCEPadConfig[3], sizeof(PCEPadConfig[3]) / sizeof(ButtConfig) }, + { "pce.input.port5.gamepad", PCEPadConfig[4], sizeof(PCEPadConfig[4]) / sizeof(ButtConfig) }, + + { "pce.input.port1.mouse", PCEMouseConfig, sizeof(PCEMouseConfig) / sizeof(ButtConfig) }, + { "pce.input.port2.mouse", PCEMouseConfig, sizeof(PCEMouseConfig) / sizeof(ButtConfig) }, + { "pce.input.port3.mouse", PCEMouseConfig, sizeof(PCEMouseConfig) / sizeof(ButtConfig) }, + { "pce.input.port4.mouse", PCEMouseConfig, sizeof(PCEMouseConfig) / sizeof(ButtConfig) }, + { "pce.input.port5.mouse", PCEMouseConfig, sizeof(PCEMouseConfig) / sizeof(ButtConfig) }, + + { "pce.input.port1.tsushinkb", TsushinKBConfig, sizeof(TsushinKBConfig) / sizeof(ButtConfig) }, + + { "pcfx.input.port1.gamepad", PCFXPadConfig[0], sizeof(PCFXPadConfig[0]) / sizeof(ButtConfig) }, + { "pcfx.input.port2.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + { "pcfx.input.port3.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + { "pcfx.input.port4.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + { "pcfx.input.port5.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + { "pcfx.input.port6.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + { "pcfx.input.port7.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + { "pcfx.input.port8.gamepad", PCFXPadConfig[1], sizeof(PCFXPadConfig[1]) / sizeof(ButtConfig) }, + + + { "pcfx.input.port1.mouse", PCFXMouseConfig, sizeof(PCFXMouseConfig) / sizeof(ButtConfig) }, + { "pcfx.input.port2.mouse", PCFXMouseConfig, sizeof(PCFXMouseConfig) / sizeof(ButtConfig) }, + + { "sms.input.port1.gamepad", SMSPadConfig[0], sizeof(SMSPadConfig[0]) / sizeof(ButtConfig) }, + { "sms.input.port1.gamepad", SMSPadConfig[0], sizeof(SMSPadConfig[0]) / sizeof(ButtConfig) }, + { "gg.input.builtin.gamepad", GGPadConfig, sizeof(GGPadConfig) / sizeof(ButtConfig) }, + + + { "md.input.port1.gamepad", MDPad3Config[0], sizeof(MDPad3Config[0]) / sizeof(ButtConfig) }, + { "md.input.port2.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + { "md.input.port3.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + { "md.input.port4.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + { "md.input.port5.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + { "md.input.port6.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + { "md.input.port7.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + { "md.input.port8.gamepad", MDPad3Config[1], sizeof(MDPad3Config[1]) / sizeof(ButtConfig) }, + + { "snes.input.port1.gamepad", SNESPadConfig, sizeof(SNESPadConfig) / sizeof(ButtConfig) }, + { "snes.input.port1.mouse", SNESMouseConfig, sizeof(SNESMouseConfig) / sizeof(ButtConfig) }, + { "snes.input.port2.mouse", SNESMouseConfig, sizeof(SNESMouseConfig) / sizeof(ButtConfig) }, + + { "psx.input.port1.gamepad", PSXPadConfig, sizeof(PSXPadConfig) / sizeof(ButtConfig) }, + + { "psx.input.port1.dancepad", PSXDancePadConfig, sizeof(PSXDancePadConfig) / sizeof(ButtConfig) }, + + { "psx.input.port1.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port2.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port3.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port4.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port5.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port6.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port7.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + { "psx.input.port8.mouse", PSXMouseConfig, sizeof(PSXMouseConfig) / sizeof(ButtConfig) }, + + { "psx.input.port1.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port2.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port3.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port4.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port5.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port6.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port7.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + { "psx.input.port8.guncon", PSXGunConConfig, sizeof(PSXGunConConfig) / sizeof(ButtConfig) }, + + { "psx.input.port1.justifier", PSXJustifierConfig, sizeof(PSXJustifierConfig) / sizeof(ButtConfig) }, + { "psx.input.port2.justifier", PSXJustifierConfig, sizeof(PSXJustifierConfig) / sizeof(ButtConfig) }, + + { "mmplay.input.builtin.controller", MMPlayInputConfig, sizeof(MMPlayInputConfig) / sizeof(ButtConfig) }, + { "cdplay.input.builtin.controller", CDPlayInputConfig, sizeof(CDPlayInputConfig) / sizeof(ButtConfig) }, + +}; + diff --git a/libmednahawk/src/drivers/input.cpp b/libmednahawk/src/drivers/input.cpp new file mode 100644 index 0000000000..07d320c4bf --- /dev/null +++ b/libmednahawk/src/drivers/input.cpp @@ -0,0 +1,1974 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" + +#include +#include +#include +#include + +#include "input.h" +#include "input-config.h" +#include "sound.h" +#include "video.h" +#include "Joystick.h" +#include "netplay.h" +#include "cheat.h" +#include "fps.h" +#include "debugger.h" +#include "help.h" + + +#include + + +extern JoystickManager *joy_manager; + +static bool RewindState = false; +static uint32 MouseData[3]; +static double MouseDataRel[2]; + +static unsigned int autofirefreq; +static unsigned int ckdelay; + +static bool fftoggle_setting; +static bool sftoggle_setting; + +int ConfigDevice(int arg); +static void ConfigDeviceBegin(void); + +static void subcon_begin(std::vector &bc); +static int subcon(const char *text, std::vector &bc, int commandkey); + +static char keys[MKK_COUNT]; + +bool DNeedRewind = FALSE; + +static std::string BCToString(const ButtConfig &bc) +{ + std::string string = ""; + char tmp[256]; + + if(bc.ButtType == BUTTC_KEYBOARD) + { + trio_snprintf(tmp, 256, "keyboard %d", bc.ButtonNum & 0xFFFF); + + string = string + std::string(tmp); + + if(bc.ButtonNum & (4 << 24)) + string = string + "+ctrl"; + if(bc.ButtonNum & (1 << 24)) + string = string + "+alt"; + if(bc.ButtonNum & (2 << 24)) + string = string + "+shift"; + } + else if(bc.ButtType == BUTTC_JOYSTICK) + { + trio_snprintf(tmp, 256, "joystick %016llx %08x", bc.DeviceID, bc.ButtonNum); + + string = string + std::string(tmp); + } + else if(bc.ButtType == BUTTC_MOUSE) + { + trio_snprintf(tmp, 256, "mouse %d", bc.ButtonNum); + + string = string + std::string(tmp); + } + return(string); +} + +static std::string BCsToString(const ButtConfig *bc, unsigned int n) +{ + std::string ret = ""; + + for(unsigned int x = 0; x < n; x++) + { + if(bc[x].ButtType) + { + if(x) ret += "~"; + ret += BCToString(bc[x]); + } + } + + return(ret); +} + +static std::string BCsToString(const std::vector &bc, const bool AND_Mode = false) +{ + std::string ret = ""; + + if(AND_Mode) + ret += "/&&\\ "; + + for(unsigned int x = 0; x < bc.size(); x++) + { + if(x) ret += "~"; + ret += BCToString(bc[x]); + } + + return(ret); +} + + +static bool StringToBC(const char *string, std::vector &bc) +{ + bool AND_Mode = false; + char device_name[64]; + char extra[256]; + ButtConfig tmp_bc; + + while(*string && *string <= 0x20) string++; + + if(!strncmp(string, "/&&\\", 4)) + { + AND_Mode = true; + string += 4; + } + + while(*string && *string <= 0x20) string++; + + do + { + if(trio_sscanf(string, "%.63s %.255[^~]", device_name, extra) == 2) + { + if(!strcasecmp(device_name, "keyboard")) + { + uint32 bnum = atoi(extra); + + if(strstr(extra, "+shift")) + bnum |= 2 << 24; + if(strstr(extra, "+alt")) + bnum |= 1 << 24; + if(strstr(extra, "+ctrl")) + bnum |= 4 << 24; + + tmp_bc.ButtType = BUTTC_KEYBOARD; + tmp_bc.DeviceNum = 0; + tmp_bc.ButtonNum = bnum; + tmp_bc.DeviceID = 0; + + bc.push_back(tmp_bc); + } + else if(!strcasecmp(device_name, "joystick")) + { + tmp_bc.ButtType = BUTTC_JOYSTICK; + tmp_bc.DeviceNum = 0; + tmp_bc.ButtonNum = 0; + tmp_bc.DeviceID = 0; + + trio_sscanf(extra, "%016llx %08x", &tmp_bc.DeviceID, &tmp_bc.ButtonNum); + + tmp_bc.DeviceNum = joy_manager->GetIndexByUniqueID(tmp_bc.DeviceID); + bc.push_back(tmp_bc); + } + else if(!strcasecmp(device_name, "mouse")) + { + tmp_bc.ButtType = BUTTC_MOUSE; + tmp_bc.DeviceNum = 0; + tmp_bc.ButtonNum = 0; + tmp_bc.DeviceID = 0; + + trio_sscanf(extra, "%d", &tmp_bc.ButtonNum); + bc.push_back(tmp_bc); + } + } + string = strchr(string, '~'); + if(string) string++; + } while(string); + + return(AND_Mode); +} + +static char *CleanSettingName(char *string) +{ + size_t x = 0; + + while(string[x]) + { + if(string[x] == ' ') + string[x] = '_'; + else if(string[x] >= 'A' && string[x] <= 'Z') + string[x] = 'a' + string[x] - 'A'; + x++; + } + return string; +} + + +// We have a hardcoded limit of 16 ports here for simplicity. +static unsigned int NumPorts; + +//static std::vector PortPossibleDevices[MDFN_EMULATED_SYSTEM_COUNT][16]; +//typedef std::vector[16] +// An unpacked list of possible devices for each port. + +typedef std::vector SnugglyWuggly; +static std::map PortPossibleDevices; + +static unsigned int PortCurrentDeviceIndex[16]; // index into PortPossibleDevices +static void *PortData[16]; +static uint32 PortDataSize[16]; // In bytes, not bits! + +static const InputDeviceInfoStruct *PortDevice[16]; +static std::vectorPortButtons[16]; + +static std::vector > PortButtConfig[16]; +static std::vector PortButtConfigOffsets[16]; +static std::vector PortButtConfigPrettyPrio[16]; + +static std::vector PortBitOffsets[16]; // within PortData, mask with 0x80000000 for rapid buttons +static std::vector PortButtBitOffsets[16]; +static std::vector PortButtIsAnalog[16]; + +typedef struct +{ + uint32 rotate[3]; +} RotateOffsets_t; + +static std::vector PortButtRotateOffsets[16]; + + +static std::vector PortButtExclusionBitOffsets[16]; // 0xFFFFFFFF represents none +static std::vector PortButtSettingNames[16]; + +static void KillPortInfo(unsigned int port) +{ + if(PortData[port]) + free(PortData[port]); + PortData[port] = NULL; + PortDataSize[port] = 0; + PortDevice[port] = NULL; + + for(unsigned int x = 0; x < PortButtons[port].size(); x++) + free(PortButtons[port][x]); + + PortButtons[port].clear(); + PortButtConfig[port].clear(); + PortButtConfigOffsets[port].clear(); + PortButtConfigPrettyPrio[port].clear(); + + PortBitOffsets[port].clear(); + PortButtBitOffsets[port].clear(); + PortButtRotateOffsets[port].clear(); + PortButtExclusionBitOffsets[port].clear(); + PortButtIsAnalog[port].clear(); + + for(unsigned int x = 0; x < PortButtSettingNames[port].size(); x++) + free(PortButtSettingNames[port][x]); + + PortButtSettingNames[port].clear(); +} + +static void KillPortsInfo(void) // Murder it!! +{ + for(unsigned int port = 0; port < NumPorts; port++) + KillPortInfo(port); + + NumPorts = 0; +} + + +static void BuildPortInfo(MDFNGI *gi, const unsigned int port) +{ + const RotateOffsets_t NullRotate = { { ~0U, ~0U, ~0U } }; + const InputDeviceInfoStruct *zedevice = NULL; + char *port_device_name; + unsigned int device; + + + if(PortPossibleDevices[gi->shortname][port].size() > 1) + { + if(CurGame->DesiredInput.size() > port && CurGame->DesiredInput[port]) + { + port_device_name = strdup(CurGame->DesiredInput[port]); + } + else + { + char tmp_setting_name[512]; + trio_snprintf(tmp_setting_name, 512, "%s.input.%s", gi->shortname, gi->InputInfo->Types[port].ShortName); + port_device_name = strdup(MDFN_GetSettingS(tmp_setting_name).c_str()); + } + } + else + { + port_device_name = strdup(PortPossibleDevices[gi->shortname][port][0]->ShortName); + } + + for(device = 0; device < PortPossibleDevices[gi->shortname][port].size(); device++) + { + //printf("Port: %d, Dev: %d, Meow: %s\n", port, device, PortPossibleDevices[gi->shortname][port][device]->ShortName); + if(!strcasecmp(PortPossibleDevices[gi->shortname][port][device]->ShortName, port_device_name)) + { + zedevice = PortPossibleDevices[gi->shortname][port][device]; + break; + } + } + free(port_device_name); port_device_name = NULL; + + PortCurrentDeviceIndex[port] = device; + + assert(zedevice); + + PortDevice[port] = zedevice; + + // Figure out how much data should be allocated for each port + int bit_offset = 0; + int buttconfig_offset = 0; + + if(!zedevice->PortExpanderDeviceInfo) + for(int x = 0; x < zedevice->NumInputs; x++) + { + // Handle dummy/padding button entries(the setting name will be NULL in such cases) + if(NULL == zedevice->IDII[x].SettingName) + { + //printf("%s Dummy: %s, %u\n", zedevice->FullName, zedevice->IDII[x].Name, zedevice->IDII[x].Type); + switch(zedevice->IDII[x].Type) + { + default: bit_offset = ((bit_offset + 31) &~ 31) + 32; + break; + + case IDIT_BUTTON: + case IDIT_BUTTON_CAN_RAPID: bit_offset += 1; + break; + + case IDIT_BUTTON_BYTE: bit_offset = ((bit_offset + 7) & ~7) + 8; + break; + + + case IDIT_BYTE_SPECIAL: bit_offset += 8; + break; + } + continue; + } // End of handling dummy/padding entries + + + if(zedevice->IDII[x].Type == IDIT_BUTTON || zedevice->IDII[x].Type == IDIT_BUTTON_CAN_RAPID || zedevice->IDII[x].Type == IDIT_BUTTON_BYTE + || zedevice->IDII[x].Type == IDIT_BUTTON_ANALOG) + { + if(zedevice->IDII[x].Type == IDIT_BUTTON_ANALOG) + bit_offset = (bit_offset + 31) &~ 31; // Align to a 32-bit boundary + else if(zedevice->IDII[x].Type == IDIT_BUTTON_BYTE) + bit_offset = (bit_offset + 7) &~ 7; // Align to an 8-bit boundary + + std::vector buttc; + char buttsn[512]; + + trio_snprintf(buttsn, 512, "%s.input.%s.%s.%s", gi->shortname, gi->InputInfo->Types[port].ShortName, zedevice->ShortName, zedevice->IDII[x].SettingName); + CleanSettingName(buttsn); + + //printf("Buttsn: %s, %s\n", buttsn, MDFN_GetSettingS(buttsn).c_str()); + PortButtSettingNames[port].push_back(strdup(buttsn)); + StringToBC(MDFN_GetSettingS(buttsn).c_str(), buttc); + + PortButtConfig[port].push_back(buttc); + PortBitOffsets[port].push_back(bit_offset); + PortButtBitOffsets[port].push_back(bit_offset); + PortButtIsAnalog[port].push_back(zedevice->IDII[x].Type == IDIT_BUTTON_ANALOG); + + PortButtons[port].push_back(strdup(zedevice->IDII[x].Name)); + PortButtConfigOffsets[port].push_back(buttconfig_offset); + + PortButtConfigPrettyPrio[port].push_back(zedevice->IDII[x].ConfigOrder); + buttconfig_offset++; + + if(zedevice->IDII[x].Type == IDIT_BUTTON_CAN_RAPID) + { + buttc.clear(); + + trio_snprintf(buttsn, 512, "%s.input.%s.%s.rapid_%s", gi->shortname, gi->InputInfo->Types[port].ShortName, zedevice->ShortName, zedevice->IDII[x].SettingName); + CleanSettingName(buttsn); + PortButtSettingNames[port].push_back(strdup(buttsn)); + StringToBC(MDFN_GetSettingS(buttsn).c_str(), buttc); + + PortButtConfig[port].push_back(buttc); + //WRONG: PortBitOffsets[port].push_back(bit_offset | 0x80000000); + PortButtBitOffsets[port].push_back(bit_offset | 0x80000000); + PortButtIsAnalog[port].push_back(false); + + PortButtons[port].push_back(trio_aprintf("Rapid %s", zedevice->IDII[x].Name)); + PortButtConfigOffsets[port].push_back(buttconfig_offset); + + PortButtConfigPrettyPrio[port].push_back(zedevice->IDII[x].ConfigOrder); + buttconfig_offset++; + } + + if(zedevice->IDII[x].Type == IDIT_BUTTON_ANALOG) + { + bit_offset += 32; + } + else if(zedevice->IDII[x].Type == IDIT_BUTTON_BYTE) + { + bit_offset += 8; + } + else + { + bit_offset += 1; + } + } + else if(zedevice->IDII[x].Type == IDIT_BYTE_SPECIAL) + { + PortBitOffsets[port].push_back(bit_offset); + bit_offset += 8; + } + else // axis and misc, uint32! + { + bit_offset = (bit_offset + 31) &~ 31; // Align it to a 32-bit boundary + + PortBitOffsets[port].push_back(bit_offset); + bit_offset += 32; + } + } + //printf("Love: %d %d %d %s\n", port, bit_offset, zedevice->NumInputs, zedevice->ShortName); + + for(unsigned int x = 0; x < PortButtConfigPrettyPrio[port].size(); x++) + { + int this_prio = PortButtConfigPrettyPrio[port][x]; + + if(this_prio >= 0) + { + bool FooFound = FALSE; + + // First, see if any duplicate priorities come after this one! or something + for(unsigned int i = x + 1; i < PortButtConfigPrettyPrio[port].size(); i++) + if(PortButtConfigPrettyPrio[port][i] == this_prio) + { + FooFound = TRUE; + break; + } + + // Now adjust all priorities >= this_prio except for 'x' by +1 + if(FooFound) + { + for(unsigned int i = 0; i < PortButtConfigPrettyPrio[port].size(); i++) + if(i != x && PortButtConfigPrettyPrio[port][i] >= this_prio) + PortButtConfigPrettyPrio[port][i]++; + } + + } + } + + PortDataSize[port] = (bit_offset + 7) / 8; + + if(!PortDataSize[port]) + PortData[port] = NULL; + else + { + PortData[port] = malloc(PortDataSize[port]); + memset(PortData[port], 0, PortDataSize[port]); + } + + // Now, search for exclusion buttons and rotated inputs. + if(!zedevice->PortExpanderDeviceInfo) + { + for(int x = 0; x < zedevice->NumInputs; x++) + { + if(NULL == zedevice->IDII[x].SettingName) + continue; + + if(zedevice->IDII[x].Type == IDIT_BUTTON || zedevice->IDII[x].Type == IDIT_BUTTON_CAN_RAPID || zedevice->IDII[x].Type == IDIT_BUTTON_ANALOG) + { + if(zedevice->IDII[x].ExcludeName) + { + int bo = 0xFFFFFFFF; + + for(unsigned int sub_x = 0; sub_x < PortButtSettingNames[port].size(); sub_x++) + { + if(!strcasecmp(zedevice->IDII[x].ExcludeName, strrchr(PortButtSettingNames[port][sub_x], '.') + 1 )) + bo = PortButtBitOffsets[port][sub_x]; + } + //printf("%s %s %d\n", zedevice->IDII[x].SettingName, zedevice->IDII[x].ExcludeName, bo); + PortButtExclusionBitOffsets[port].push_back(bo); + } + else + PortButtExclusionBitOffsets[port].push_back(0xFFFFFFFF); + + if(zedevice->IDII[x].RotateName[0]) + { + RotateOffsets_t RotoCat = NullRotate; + + for(int rodir = 0; rodir < 3; rodir++) + { + for(unsigned int sub_x = 0; sub_x < PortButtSettingNames[port].size(); sub_x++) + { + if(!strcasecmp(zedevice->IDII[x].RotateName[rodir], strrchr(PortButtSettingNames[port][sub_x], '.') + 1 )) + { + RotoCat.rotate[rodir] = PortButtBitOffsets[port][sub_x]; + break; + } + } + //printf("%s %s %d\n", zedevice->IDII[x].SettingName, zedevice->IDII[x].ExcludeName, bo); + } + PortButtRotateOffsets[port].push_back(RotoCat); + } + else + PortButtRotateOffsets[port].push_back(NullRotate); + + if(zedevice->IDII[x].Type == IDIT_BUTTON_CAN_RAPID) // FIXME in the future, but I doubt we'll ever have rapid-fire directional buttons! + { + PortButtExclusionBitOffsets[port].push_back(0xFFFFFFFF); + PortButtRotateOffsets[port].push_back(NullRotate); + } + } + else if(zedevice->IDII[x].Type == IDIT_BUTTON_BYTE) + { + PortButtExclusionBitOffsets[port].push_back(0xFFFFFFFF); + PortButtRotateOffsets[port].push_back(NullRotate); + } + } + } // End search for exclusion buttons and rotated inputs. + + assert(PortButtExclusionBitOffsets[port].size() == PortButtBitOffsets[port].size()); + assert(PortButtRotateOffsets[port].size() == PortButtBitOffsets[port].size()); + assert(PortButtBitOffsets[port].size() == PortButtIsAnalog[port].size()); + + MDFNI_SetInput(port, zedevice->ShortName, PortData[port], PortDataSize[port]); +} + +void BuildPortsInfo(MDFNGI *gi) //zero 03-nov-2012 un-static +{ + NumPorts = 0; + while(PortPossibleDevices[gi->shortname][NumPorts].size()) + { + BuildPortInfo(gi, NumPorts); + NumPorts++; + } +} + +static void IncSelectedDevice(unsigned int port) +{ + //zero 07-feb-2012 - no netplay + //if(MDFNDnetplay) + //{ + // MDFN_DispMessage(_("Cannot change input device during netplay.")); + //} + //else + if(RewindState) + { + MDFN_DispMessage(_("Cannot change input device while state rewinding is active.")); + } + else if(PortPossibleDevices[CurGame->shortname][port].size() > 1) + { + char tmp_setting_name[512]; + + if(CurGame->DesiredInput.size() > port) + CurGame->DesiredInput[port] = NULL; + + trio_snprintf(tmp_setting_name, 512, "%s.input.%s", CurGame->shortname, CurGame->InputInfo->Types[port].ShortName); + + PortCurrentDeviceIndex[port] = (PortCurrentDeviceIndex[port] + 1) % PortPossibleDevices[CurGame->shortname][port].size(); + + const char *devname = PortPossibleDevices[CurGame->shortname][port][PortCurrentDeviceIndex[port]]->ShortName; + + ResyncGameInputSettings(); + KillPortInfo(port); + MDFNI_SetSetting(tmp_setting_name, devname); + BuildPortInfo(CurGame, port); + + MDFN_DispMessage(_("%s selected on port %d"), PortPossibleDevices[CurGame->shortname][port][PortCurrentDeviceIndex[port]]->FullName, port + 1); + } +} + +#define MK(x) { BUTTC_KEYBOARD, 0, MKK(x) } + +#define MK_CK(x) { { BUTTC_KEYBOARD, 0, MKK(x) }, { 0, 0, 0 } } +#define MK_CK2(x,y) { { BUTTC_KEYBOARD, 0, MKK(x) }, { BUTTC_KEYBOARD, 0, MKK(y) } } + +#define MK_CK_SHIFT(x) { { BUTTC_KEYBOARD, 0, MKK(x) | (2<<24) }, { 0, 0, 0 } } +#define MK_CK_ALT(x) { { BUTTC_KEYBOARD, 0, MKK(x) | (1<<24) }, { 0, 0, 0 } } +#define MK_CK_ALT_SHIFT(x) { { BUTTC_KEYBOARD, 0, MKK(x) | (3<<24) }, { 0, 0, 0 } } +#define MK_CK_CTRL(x) { { BUTTC_KEYBOARD, 0, MKK(x) | (4 << 24) }, { 0, 0, 0 } } +#define MK_CK_CTRL_SHIFT(x) { { BUTTC_KEYBOARD, 0, MKK(x) | (6 << 24) }, { 0, 0, 0 } } + +#define MKZ() {0, 0, 0} + +typedef enum { + _CK_FIRST = 0, + CK_SAVE_STATE = 0, + CK_LOAD_STATE, + CK_SAVE_MOVIE, + CK_LOAD_MOVIE, + CK_STATE_REWIND_TOGGLE, + CK_0,CK_1,CK_2,CK_3,CK_4,CK_5,CK_6,CK_7,CK_8,CK_9, + CK_M0,CK_M1,CK_M2,CK_M3,CK_M4,CK_M5,CK_M6,CK_M7,CK_M8,CK_M9, + CK_TL1, CK_TL2, CK_TL3, CK_TL4, CK_TL5, CK_TL6, CK_TL7, CK_TL8, CK_TL9, + CK_TAKE_SNAPSHOT, + CK_TOGGLE_FS, + CK_FAST_FORWARD, + CK_SLOW_FORWARD, + + CK_INSERT_COIN, + CK_TOGGLE_DIPVIEW, + CK_SELECT_DISK, + CK_INSERTEJECT_DISK, + CK_ACTIVATE_BARCODE, + + CK_TOGGLE_GRAB_INPUT, + CK_TOGGLE_CDISABLE, + CK_INPUT_CONFIG1, + CK_INPUT_CONFIG2, + CK_INPUT_CONFIG3, + CK_INPUT_CONFIG4, + CK_INPUT_CONFIG5, + CK_INPUT_CONFIG6, + CK_INPUT_CONFIG7, + CK_INPUT_CONFIG8, + CK_INPUT_CONFIGC, + CK_INPUT_CONFIGC_AM, + CK_INPUT_CONFIG_ABD, + + CK_RESET, + CK_POWER, + CK_EXIT, + CK_STATE_REWIND, + CK_ROTATESCREEN, + CK_TOGGLENETVIEW, + CK_ADVANCE_FRAME, + CK_RUN_NORMAL, + CK_TOGGLECHEATVIEW, + CK_TOGGLE_CHEAT_ACTIVE, + CK_TOGGLE_FPS_VIEW, + CK_TOGGLE_DEBUGGER, + CK_STATE_SLOT_DEC, + CK_STATE_SLOT_INC, + CK_TOGGLE_HELP, + CK_DEVICE_SELECT1, + CK_DEVICE_SELECT2, + CK_DEVICE_SELECT3, + CK_DEVICE_SELECT4, + CK_DEVICE_SELECT5, + CK_DEVICE_SELECT6, + CK_DEVICE_SELECT7, + CK_DEVICE_SELECT8, + + _CK_COUNT +} CommandKey; + +typedef struct __COKE +{ + ButtConfig bc[2]; + const char *text; + unsigned int system; + bool SkipCKDelay; + const char *description; +} COKE; + +static const COKE CKeys[_CK_COUNT] = +{ + { MK_CK(F5), "save_state", ~0U, 1, gettext_noop("Save state") }, + { MK_CK(F7), "load_state", ~0U, 0, gettext_noop("Load state") }, + { MK_CK_SHIFT(F5), "save_movie", ~0U, 1, gettext_noop("Save movie") }, + { MK_CK_SHIFT(F7), "load_movie", ~0U, 0, gettext_noop("Load movie") }, + { MK_CK_ALT(s), "toggle_state_rewind", ~0U, 1, gettext_noop("Toggle state rewind functionality") }, + + { MK_CK(0), "0", ~0U, 1, gettext_noop("Save state 0 select")}, + { MK_CK(1), "1", ~0U, 1, gettext_noop("Save state 1 select")}, + { MK_CK(2), "2", ~0U, 1, gettext_noop("Save state 2 select")}, + { MK_CK(3), "3", ~0U, 1, gettext_noop("Save state 3 select")}, + { MK_CK(4), "4", ~0U, 1, gettext_noop("Save state 4 select")}, + { MK_CK(5), "5", ~0U, 1, gettext_noop("Save state 5 select")}, + { MK_CK(6), "6", ~0U, 1, gettext_noop("Save state 6 select")}, + { MK_CK(7), "7", ~0U, 1, gettext_noop("Save state 7 select")}, + { MK_CK(8), "8", ~0U, 1, gettext_noop("Save state 8 select")}, + { MK_CK(9), "9", ~0U, 1, gettext_noop("Save state 9 select")}, + + { MK_CK_SHIFT(0), "m0", ~0U, 1, gettext_noop("Movie 0 select") }, + { MK_CK_SHIFT(1), "m1", ~0U, 1, gettext_noop("Movie 1 select") }, + { MK_CK_SHIFT(2), "m2", ~0U, 1, gettext_noop("Movie 2 select") }, + { MK_CK_SHIFT(3), "m3", ~0U, 1, gettext_noop("Movie 3 select") }, + { MK_CK_SHIFT(4), "m4", ~0U, 1, gettext_noop("Movie 4 select") }, + { MK_CK_SHIFT(5), "m5", ~0U, 1, gettext_noop("Movie 5 select") }, + { MK_CK_SHIFT(6), "m6", ~0U, 1, gettext_noop("Movie 6 select") }, + { MK_CK_SHIFT(7), "m7", ~0U, 1, gettext_noop("Movie 7 select") }, + { MK_CK_SHIFT(8), "m8", ~0U, 1, gettext_noop("Movie 8 select") }, + { MK_CK_SHIFT(9), "m9", ~0U, 1, gettext_noop("Movie 9 select") }, + + { MK_CK_CTRL(1), "tl1", ~0U, 1, gettext_noop("Toggle graphics layer 1") }, + { MK_CK_CTRL(2), "tl2", ~0U, 1, gettext_noop("Toggle graphics layer 2") }, + { MK_CK_CTRL(3), "tl3", ~0U, 1, gettext_noop("Toggle graphics layer 3") }, + { MK_CK_CTRL(4), "tl4", ~0U, 1, gettext_noop("Toggle graphics layer 4") }, + { MK_CK_CTRL(5), "tl5", ~0U, 1, gettext_noop("Toggle graphics layer 5") }, + { MK_CK_CTRL(6), "tl6", ~0U, 1, gettext_noop("Toggle graphics layer 6") }, + { MK_CK_CTRL(7), "tl7", ~0U, 1, gettext_noop("Toggle graphics layer 7") }, + { MK_CK_CTRL(8), "tl8", ~0U, 1, gettext_noop("Toggle graphics layer 8") }, + { MK_CK_CTRL(9), "tl9", ~0U, 1, gettext_noop("Toggle graphics layer 9") }, + + { MK_CK(F9), "take_snapshot", ~0U, 1, gettext_noop("Take screen snapshot") }, + { MK_CK_ALT(RETURN), "toggle_fs", ~0U, 1, gettext_noop("Toggle fullscreen mode") }, + { MK_CK(BACKQUOTE), "fast_forward", ~0U, 1, gettext_noop("Fast-forward") }, + { MK_CK(BACKSLASH), "slow_forward", ~0U, 1, gettext_noop("Slow-forward") }, + + { MK_CK(F8), "insert_coin", ~0U, 1, gettext_noop("Insert coin") }, + { MK_CK(F6), "toggle_dipview", ~0U, 1, gettext_noop("Toggle DIP switch view") }, + { MK_CK(F6), "select_disk", ~0U, 1, gettext_noop("Select disk/disc") }, + { MK_CK(F8), "insert_eject_disk", ~0U, 1, gettext_noop("Insert/Eject disk/disc") }, + { MK_CK(F8), "activate_barcode", ~0U, 1, gettext_noop("Activate barcode(for Famicom)") }, + { MK_CK(SCROLLOCK), "toggle_grab_input", ~0U, 1, gettext_noop("Grab input") }, + { MK_CK_SHIFT(SCROLLOCK), "toggle_cidisable", ~0U, 1, gettext_noop("Grab input and disable commands") }, + { MK_CK_ALT_SHIFT(1), "input_config1", ~0U, 0, gettext_noop("Configure buttons on virtual port 1") }, + { MK_CK_ALT_SHIFT(2), "input_config2", ~0U, 0, gettext_noop("Configure buttons on virtual port 2") }, + { MK_CK_ALT_SHIFT(3), "input_config3", ~0U, 0, gettext_noop("Configure buttons on virtual port 3") }, + { MK_CK_ALT_SHIFT(4), "input_config4", ~0U, 0, gettext_noop("Configure buttons on virtual port 4") }, + { MK_CK_ALT_SHIFT(5), "input_config5", ~0U, 0, gettext_noop("Configure buttons on virtual port 5") }, + { MK_CK_ALT_SHIFT(6), "input_config6", ~0U, 0, gettext_noop("Configure buttons on virtual port 6") }, + { MK_CK_ALT_SHIFT(7), "input_config7", ~0U, 0, gettext_noop("Configure buttons on virtual port 7") }, + { MK_CK_ALT_SHIFT(8), "input_config8", ~0U, 0, gettext_noop("Configure buttons on virtual port 8") }, + { MK_CK(F2), "input_configc", ~0U, 0, gettext_noop("Configure command key") }, + { MK_CK_SHIFT(F2), "input_configc_am", ~0U, 0, gettext_noop("Configure command key, for all-pressed-to-trigger mode") }, + + { MK_CK(F3), "input_config_abd", ~0U, 0, gettext_noop("Detect analog buttons on physical joysticks/gamepads(for use with the input configuration process).") }, + + { MK_CK(F10), "reset", ~0U, 0, gettext_noop("Reset") }, + { MK_CK(F11), "power", ~0U, 0, gettext_noop("Power toggle") }, + { MK_CK2(F12, ESCAPE), "exit", ~0U, 0, gettext_noop("Exit") }, + { MK_CK(BACKSPACE), "state_rewind", ~0U, 1, gettext_noop("Rewind") }, + { MK_CK_ALT(o), "rotate_screen", ~0U, 1, gettext_noop("Rotate screen") }, + + { MK_CK(t), "togglenetview", ~0U, 1, gettext_noop("Toggle netplay console")}, + { MK_CK_ALT(a), "advance_frame", ~0U, 1, gettext_noop("Advance frame") }, + { MK_CK_ALT(r), "run_normal", ~0U, 1, gettext_noop("Return to normal mode after advancing frames") }, + { MK_CK_ALT(c), "togglecheatview", ~0U, 1, gettext_noop("Toggle cheat console") }, + { MK_CK_ALT(t), "togglecheatactive", ~0U, 1, gettext_noop("Enable/Disable cheats") }, + { MK_CK_SHIFT(F1), "toggle_fps_view", ~0U, 1, gettext_noop("Toggle frames-per-second display") }, + { MK_CK_ALT(d), "toggle_debugger", ~0U, 1, gettext_noop("Toggle debugger") }, + { MK_CK(MINUS), "state_slot_dec", ~0U, 1, gettext_noop("Decrease selected save state slot by 1") }, + { MK_CK(EQUALS), "state_slot_inc", ~0U, 1, gettext_noop("Increase selected save state slot by 1") }, + { MK_CK(F1), "toggle_help", ~0U, 1, gettext_noop("Toggle help screen") }, + { MK_CK_CTRL_SHIFT(1), "device_select1", ~0U, 1, gettext_noop("Select virtual device on virtual input port 1") }, + { MK_CK_CTRL_SHIFT(2), "device_select2", ~0U, 1, gettext_noop("Select virtual device on virtual input port 2") }, + { MK_CK_CTRL_SHIFT(3), "device_select3", ~0U, 1, gettext_noop("Select virtual device on virtual input port 3") }, + { MK_CK_CTRL_SHIFT(4), "device_select4", ~0U, 1, gettext_noop("Select virtual device on virtual input port 4") }, + { MK_CK_CTRL_SHIFT(5), "device_select5", ~0U, 1, gettext_noop("Select virtual device on virtual input port 5") }, + { MK_CK_CTRL_SHIFT(6), "device_select6", ~0U, 1, gettext_noop("Select virtual device on virtual input port 6") }, + { MK_CK_CTRL_SHIFT(7), "device_select7", ~0U, 1, gettext_noop("Select virtual device on virtual input port 7") }, + { MK_CK_CTRL_SHIFT(8), "device_select8", ~0U, 1, gettext_noop("Select virtual device on virtual input port 8") }, +}; + +static const char *CKeysSettingName[_CK_COUNT]; + +struct CKeyConfig +{ + bool AND_Mode; + std::vector bc; +}; + +static CKeyConfig CKeysConfig[_CK_COUNT]; +static int CKeysLastState[_CK_COUNT]; +static uint32 CKeysPressTime[_CK_COUNT]; +static uint32 CurTicks = 0; // Optimization, SDL_GetTicks() might be slow on some platforms? + +static int CK_Check(CommandKey which) +{ + int last = CKeysLastState[which]; + int tmp_ckdelay = ckdelay; + + if(CKeys[which].SkipCKDelay) + tmp_ckdelay = 0; + + if((CKeysLastState[which] = DTestButtonCombo(CKeysConfig[which].bc, keys, MouseData, CKeysConfig[which].AND_Mode))) + { + if(!last) + CKeysPressTime[which] = CurTicks; + } + else + CKeysPressTime[which] = 0xFFFFFFFF; + + if(CurTicks >= ((int64)CKeysPressTime[which] + tmp_ckdelay)) + { + CKeysPressTime[which] = 0xFFFFFFFF; + return(1); + } + return(0); +} + +static int CK_CheckActive(CommandKey which) +{ + return(DTestButtonCombo(CKeysConfig[which].bc, keys, MouseData, CKeysConfig[which].AND_Mode)); +} + +int NoWaiting = 0; + +static bool ViewDIPSwitches = false; + +#define KEY(__a) keys[MKK(__a)] + +static int cidisabled=0; + +static bool inff = 0; +static bool insf = 0; + +typedef enum +{ + none, + Port1, + Port2, + Port3, + Port4, + Port5, + Port6, + Port7, + Port8, + Command, + CommandAM +} ICType; + +static ICType IConfig = none; +static int ICLatch; +static uint32 ICDeadDelay = 0; + +static struct __MouseState +{ + int x, y; + int xrel_accum; + int yrel_accum; + + uint32 button; + uint32 button_realstate; + uint32 button_prevsent; +} MouseState = { 0, 0, 0, 0, 0, 0, 0 }; + +//#include "InputConfigurator.inc" +//static InputConfigurator *IConfigurator = NULL; +static int (*EventHook)(const SDL_Event *event) = NULL; +void MainSetEventHook(int (*eh)(const SDL_Event *event)) +{ + EventHook = eh; +} + +void Input_Event(const SDL_Event *event) +{ + switch(event->type) + { + case SDL_MOUSEBUTTONDOWN: + if(event->button.state == SDL_PRESSED) + { + MouseState.button |= 1 << (event->button.button - 1); + MouseState.button_realstate |= 1 << (event->button.button - 1); + } + break; + + case SDL_MOUSEBUTTONUP: + if(event->button.state == SDL_RELEASED) + { + MouseState.button_realstate &= ~(1 << (event->button.button - 1)); + } + break; + + case SDL_MOUSEMOTION: + MouseState.x = event->motion.x; + MouseState.y = event->motion.y; + MouseState.xrel_accum += event->motion.xrel; + MouseState.yrel_accum += event->motion.yrel; + break; + } + + if(EventHook) + EventHook(event); +} + +/* + The mouse button handling convolutedness is to make sure that extremely quick mouse button press and release + still register as pressed for 1 emulated frame, and without otherwise increasing the lag of a mouse button release(which + is what the button_prevsent is for). +*/ +static void UpdatePhysicalDeviceState(void) +{ + const bool clearify_mdr = true; + int mouse_x = MouseState.x, mouse_y = MouseState.y; + + //printf("%08x -- %08x %08x\n", MouseState.button & (MouseState.button_realstate | ~MouseState.button_prevsent), MouseState.button, MouseState.button_realstate); + + PtoV(mouse_x, mouse_y, (int32*)&MouseData[0], (int32*)&MouseData[1]); + MouseData[2] = MouseState.button & (MouseState.button_realstate | ~MouseState.button_prevsent); + + if(clearify_mdr) + { + MouseState.button_prevsent = MouseData[2]; + MouseState.button &= MouseState.button_realstate; + MouseDataRel[0] -= (int32)MouseDataRel[0]; //floor(MouseDataRel[0]); + MouseDataRel[1] -= (int32)MouseDataRel[1]; //floor(MouseDataRel[1]); + } + + MouseDataRel[0] += CurGame->mouse_sensitivity * MouseState.xrel_accum; + MouseDataRel[1] += CurGame->mouse_sensitivity * MouseState.yrel_accum; + + // + // + // + MouseState.xrel_accum = 0; + MouseState.yrel_accum = 0; + // + // + // + + + memcpy(keys, SDL_GetKeyState(0), MKK_COUNT); + + if(MDFNDHaveFocus || MDFN_GetSettingB("input.joystick.global_focus")) + joy_manager->UpdateJoysticks(); + + CurTicks = SDL_GetTicks(); +} + +static void RedoFFSF(void) +{ + if(inff) + RefreshThrottleFPS(MDFN_GetSettingF("ffspeed")); + else if(insf) + RefreshThrottleFPS(MDFN_GetSettingF("sfspeed")); + else + RefreshThrottleFPS(1); +} + + +static void ToggleLayer(int which) +{ + static uint64 le_mask = ~0ULL; // FIXME/TODO: Init to ~0ULL on game load. + + if(CurGame && CurGame->LayerNames) + { + const char *goodies = CurGame->LayerNames; + int x = 0; + + while(x != which) + { + while(*goodies) + goodies++; + goodies++; + if(!*goodies) return; // ack, this layer doesn't exist. + x++; + } + + le_mask ^= (1ULL << which); + MDFNI_SetLayerEnableMask(le_mask); + + if(le_mask & (1ULL << which)) + MDFN_DispMessage(_("%s enabled."), _(goodies)); + else + MDFN_DispMessage(_("%s disabled."), _(goodies)); + } +} + + +// TODO: Remove this in the future when digit-string input devices are better abstracted. +static uint8 BarcodeWorldData[1 + 13]; + +static void DoKeyStateZeroing(void) +{ + if(IConfig == none && !(cidisabled & 0x1)) // Match the statement in CheckCommandKeys for when DoKeyStateZeroing() + // is called insterad of CheckCommandKeys + { + //zero 07-feb-2012 - no netplay + if(/*Netplay_IsTextInput() || */IsConsoleCheatConfigActive()) + { + memset(keys, 0, sizeof(keys)); // This effectively disables keyboard input, but still + // allows physical joystick input when in the chat mode. + } + + if(Debugger_IsActive()) + { + static char keys_backup[MKK_COUNT]; + memcpy(keys_backup, keys, MKK_COUNT); + memset(keys, 0, sizeof(keys)); + + keys[SDLK_F1] = keys_backup[SDLK_F1]; + keys[SDLK_F2] = keys_backup[SDLK_F2]; + keys[SDLK_F3] = keys_backup[SDLK_F3]; + keys[SDLK_F4] = keys_backup[SDLK_F4]; + keys[SDLK_F5] = keys_backup[SDLK_F5]; + keys[SDLK_F6] = keys_backup[SDLK_F6]; + keys[SDLK_F7] = keys_backup[SDLK_F7]; + keys[SDLK_F8] = keys_backup[SDLK_F8]; + keys[SDLK_F9] = keys_backup[SDLK_F9]; + keys[SDLK_F10] = keys_backup[SDLK_F10]; + keys[SDLK_F11] = keys_backup[SDLK_F11]; + keys[SDLK_F12] = keys_backup[SDLK_F12]; + keys[SDLK_F13] = keys_backup[SDLK_F13]; + keys[SDLK_F14] = keys_backup[SDLK_F14]; + keys[SDLK_F15] = keys_backup[SDLK_F15]; + } + } +} + +static void CheckCommandKeys(void) +{ + if(IConfig == none && !(cidisabled & 0x1)) + { + if(CK_Check(CK_TOGGLE_HELP)) + Help_Toggle(); + + //zero 07-feb-2012 - no netplay + if(!IsConsoleCheatConfigActive() /*&& !MDFNDnetplay*/) + { + if(CK_Check(CK_TOGGLE_DEBUGGER)) + { + Debugger_Toggle(); + } + } + //zero 07-feb-2012 - no netplay + if(!Debugger_IsActive()/* && !MDFNDnetplay*/) + if(CK_Check(CK_TOGGLECHEATVIEW)) + { + ShowConsoleCheatConfig(!IsConsoleCheatConfigActive()); + } + + if(!(cidisabled & 1)) + { + if(CK_Check(CK_EXIT)) + { + SendCEvent(CEVT_WANT_EXIT, NULL, NULL); + } + } + + DoKeyStateZeroing(); + + if(!IsConsoleCheatConfigActive() && !Debugger_IsActive()) + if(CK_Check(CK_TOGGLENETVIEW)) + { + //zero 07-feb-2012 - no netplay + //Netplay_ToggleTextView(); + } + } + + for(int i = 0; i < 8; i++) + { + if(IConfig == Port1 + i) + { + if(CK_Check((CommandKey)(CK_INPUT_CONFIG1 + i))) + { + IConfig = none; + //SetJoyReadMode(1); + MDFNI_DispMessage(_("Configuration interrupted.")); + } + else if(ConfigDevice(i)) + { + ICDeadDelay = CurTicks + 300; + IConfig = none; + //SetJoyReadMode(1); + } + break; + } + } + + if(IConfig == Command || IConfig == CommandAM) + { + if(ICLatch != -1) + { + if(subcon(CKeys[ICLatch].text, CKeysConfig[ICLatch].bc, 1)) + { + MDFNI_DispMessage(_("Configuration finished.")); + ICDeadDelay = CurTicks + 300; + IConfig = none; + //SetJoyReadMode(1); + CKeysLastState[ICLatch] = 1; // We don't want to accidentally + return; // trigger the command. :b + } + } + else + { + int x; + MDFNI_DispMessage(_("Press command key to remap now%s..."), (IConfig == CommandAM) ? _("(AND Mode)") : ""); + for(x = (int)_CK_FIRST; x < (int)_CK_COUNT; x++) + if(CK_Check((CommandKey)x)) + { + ICLatch = x; + CKeysConfig[ICLatch].AND_Mode = (IConfig == CommandAM); + subcon_begin(CKeysConfig[ICLatch].bc); + break; + } + } + } + + if(CK_Check(CK_TOGGLE_GRAB_INPUT)) + { + cidisabled ^= 2; + + if(cidisabled & 0x2) + MDFNI_DispMessage(_("Input grabbing enabled.")); + else + MDFNI_DispMessage(_("Input grabbing disabled.")); + + SDL_Event evt; + evt.user.type = SDL_USEREVENT; + evt.user.code = CEVT_SET_GRAB_INPUT; + evt.user.data1 = malloc(1); + + *(int *)evt.user.data1 = cidisabled & 0x2; + SDL_PushEvent(&evt); + } + + if(CK_Check(CK_TOGGLE_CDISABLE)) + { + cidisabled = cidisabled ? 0 : 0x3; + + if(cidisabled) + MDFNI_DispMessage(_("Command processing disabled.")); + else + MDFNI_DispMessage(_("Command processing enabled.")); + + SDL_Event evt; + evt.user.type = SDL_USEREVENT; + evt.user.code = CEVT_SET_GRAB_INPUT; + evt.user.data1 = malloc(1); + + *(int *)evt.user.data1 = cidisabled; + SDL_PushEvent(&evt); + } + + if(cidisabled & 0x1) return; + + if(IConfig != none) + return; + + if(CK_Check(CK_TOGGLE_CHEAT_ACTIVE)) + { + bool isactive = MDFN_GetSettingB("cheats"); + + isactive = !isactive; + + MDFNI_SetSettingB("cheats", isactive); + + if(isactive) + MDFNI_DispMessage(_("Application of cheats enabled.")); + else + MDFNI_DispMessage(_("Application of cheats disabled.")); + } + + if(CK_Check(CK_TOGGLE_FPS_VIEW)) + FPS_ToggleView(); + + if(CK_Check(CK_TOGGLE_FS)) + { + GT_ToggleFS(); + } + + if(!CurGame) + return; + + //zero 07-feb-2012 - no netplay + //if(!MDFNDnetplay) + { + if(CK_Check(CK_ADVANCE_FRAME)) + DoFrameAdvance(); + + if(CK_Check(CK_RUN_NORMAL)) + DoRunNormal(); + } + + if(!Debugger_IsActive()) // We don't want to start button configuration when the debugger is active! + { + for(int i = 0; i < 8; i++) + { + if(CK_Check((CommandKey)(CK_INPUT_CONFIG1 + i))) + { + if(!PortButtConfig[i].size()) + { + MDFN_DispMessage(_("No buttons to configure for input port %u!"), i + 1); + } + else + { + //SetJoyReadMode(0); + ConfigDeviceBegin(); + IConfig = (ICType)(Port1 + i); + } + } + } + + if(CK_Check(CK_INPUT_CONFIGC)) + { + //SetJoyReadMode(0); + ConfigDeviceBegin(); + ICLatch = -1; + IConfig = Command; + } + + if(CK_Check(CK_INPUT_CONFIGC_AM)) + { + //SetJoyReadMode(0); + ConfigDeviceBegin(); + ICLatch = -1; + IConfig = CommandAM; + } + + if(CK_Check(CK_INPUT_CONFIG_ABD)) + { + MDFN_DispMessage("%u joystick/gamepad analog button(s) detected.", joy_manager->DetectAnalogButtonsForChangeCheck()); + } + } + + if(CK_Check(CK_ROTATESCREEN)) + { + if(CurGame->rotated == MDFN_ROTATE0) + CurGame->rotated = MDFN_ROTATE90; + else if(CurGame->rotated == MDFN_ROTATE90) + CurGame->rotated = MDFN_ROTATE270; + else if(CurGame->rotated == MDFN_ROTATE270) + CurGame->rotated = MDFN_ROTATE0; + + GT_ReinitVideo(); + } + + if(CK_CheckActive(CK_STATE_REWIND)) + DNeedRewind = TRUE; + else + DNeedRewind = FALSE; + + if(CK_Check(CK_STATE_REWIND_TOGGLE)) + { + RewindState = !RewindState; + MDFNI_EnableStateRewind(RewindState); + + MDFNI_DispMessage(RewindState ? _("State rewinding functionality enabled.") : _("State rewinding functionality disabled.")); + } + + { + bool previous_ff = inff; + bool previous_sf = insf; + + if(fftoggle_setting) + inff ^= CK_Check(CK_FAST_FORWARD); + else + inff = CK_CheckActive(CK_FAST_FORWARD); + + if(sftoggle_setting) + insf ^= CK_Check(CK_SLOW_FORWARD); + else + insf = CK_CheckActive(CK_SLOW_FORWARD); + + if(previous_ff != inff || previous_sf != insf) + RedoFFSF(); + } + + if(CurGame->GameType == GMT_DISK || CurGame->GameType == GMT_CDROM) + { + if(CK_Check(CK_SELECT_DISK)) + { + LockGameMutex(1); + MDFNI_DiskSelect(); + LockGameMutex(0); + } + if(CK_Check(CK_INSERTEJECT_DISK)) + { + LockGameMutex(1); + MDFNI_DiskInsert(); + LockGameMutex(0); + } + } + + if(CurGame->GameType != GMT_PLAYER) + { + for(int i = 0; i < 8; i++) + { + if(CK_Check((CommandKey)(CK_DEVICE_SELECT1 + i))) + IncSelectedDevice(i); + } + } + + if(CK_Check(CK_TAKE_SNAPSHOT)) + pending_snapshot = 1; + +// if(CurGame->GameType != GMT_PLAYER) + { + if(CK_Check(CK_SAVE_STATE)) + pending_save_state = 1; + + if(CK_Check(CK_SAVE_MOVIE)) + pending_save_movie = 1; + + if(CK_Check(CK_LOAD_STATE)) + { + LockGameMutex(1); + MDFNI_LoadState(NULL, NULL); + Debugger_ForceStepIfStepping(); + LockGameMutex(0); + } + + if(CK_Check(CK_LOAD_MOVIE)) + { + LockGameMutex(1); + MDFNI_LoadMovie(NULL); + Debugger_ForceStepIfStepping(); + LockGameMutex(0); + } + + if(CK_Check(CK_TL1)) + ToggleLayer(0); + if(CK_Check(CK_TL2)) + ToggleLayer(1); + if(CK_Check(CK_TL3)) + ToggleLayer(2); + if(CK_Check(CK_TL4)) + ToggleLayer(3); + if(CK_Check(CK_TL5)) + ToggleLayer(4); + if(CK_Check(CK_TL6)) + ToggleLayer(5); + if(CK_Check(CK_TL7)) + ToggleLayer(6); + if(CK_Check(CK_TL8)) + ToggleLayer(7); + if(CK_Check(CK_TL9)) + ToggleLayer(8); + + if(CK_Check(CK_STATE_SLOT_INC)) + { + MDFNI_SelectState(666 + 1); + } + + if(CK_Check(CK_STATE_SLOT_DEC)) + { + MDFNI_SelectState(666 - 1); + } + } + + if(CK_Check(CK_RESET)) + { + LockGameMutex(1); + MDFNI_Reset(); + LockGameMutex(0); + Debugger_ForceStepIfStepping(); + } + + if(CK_Check(CK_POWER)) + { + LockGameMutex(1); + MDFNI_Power(); + LockGameMutex(0); + Debugger_ForceStepIfStepping(); + } + + if(CurGame->GameType == GMT_ARCADE) + { + if(CK_Check(CK_INSERT_COIN)) + MDFNI_InsertCoin(); + + if(CK_Check(CK_TOGGLE_DIPVIEW)) + { + ViewDIPSwitches = !ViewDIPSwitches; + MDFNI_ToggleDIPView(); + } + + if(!ViewDIPSwitches) + goto DIPSless; + + if(CK_Check(CK_1)) MDFNI_ToggleDIP(0); + if(CK_Check(CK_2)) MDFNI_ToggleDIP(1); + if(CK_Check(CK_3)) MDFNI_ToggleDIP(2); + if(CK_Check(CK_4)) MDFNI_ToggleDIP(3); + if(CK_Check(CK_5)) MDFNI_ToggleDIP(4); + if(CK_Check(CK_6)) MDFNI_ToggleDIP(5); + if(CK_Check(CK_7)) MDFNI_ToggleDIP(6); + if(CK_Check(CK_8)) MDFNI_ToggleDIP(7); + } + else + { + #ifdef WANT_NES_EMU + static uint8 bbuf[32]; + static int bbuft; + static int barcoder = 0; + + if(!strcmp(CurGame->shortname, "nes") && (!strcmp(PortDevice[4]->ShortName, "bworld") || (CurGame->cspecial && !strcasecmp(CurGame->cspecial, "datach")))) + { + if(CK_Check(CK_ACTIVATE_BARCODE)) + { + barcoder ^= 1; + if(!barcoder) + { + if(!strcmp(PortDevice[4]->ShortName, "bworld")) + { + BarcodeWorldData[0] = 1; + memset(BarcodeWorldData + 1, 0, 13); + + strncpy((char *)BarcodeWorldData + 1, (char *)bbuf, 13); + } + else + MDFNI_DatachSet(bbuf); + MDFNI_DispMessage(_("Barcode Entered")); + } + else { bbuft = 0; MDFNI_DispMessage(_("Enter Barcode"));} + } + } + else + barcoder = 0; + + #define SSM(x) { if(bbuft < 13) {bbuf[bbuft++] = '0' + x; bbuf[bbuft] = 0;} MDFNI_DispMessage(_("Barcode: %s"),bbuf); } + + DIPSless: + + if(barcoder) + { + if(CK_Check(CK_0)) SSM(0); + if(CK_Check(CK_1)) SSM(1); + if(CK_Check(CK_2)) SSM(2); + if(CK_Check(CK_3)) SSM(3); + if(CK_Check(CK_4)) SSM(4); + if(CK_Check(CK_5)) SSM(5); + if(CK_Check(CK_6)) SSM(6); + if(CK_Check(CK_7)) SSM(7); + if(CK_Check(CK_8)) SSM(8); + if(CK_Check(CK_9)) SSM(9); + } + else + #else + DIPSless: ; + #endif + { + //if(CurGame->GameType != GMT_PLAYER) + { + if(CK_Check(CK_0)) MDFNI_SelectState(0); + if(CK_Check(CK_1)) MDFNI_SelectState(1); + if(CK_Check(CK_2)) MDFNI_SelectState(2); + if(CK_Check(CK_3)) MDFNI_SelectState(3); + if(CK_Check(CK_4)) MDFNI_SelectState(4); + if(CK_Check(CK_5)) MDFNI_SelectState(5); + if(CK_Check(CK_6)) MDFNI_SelectState(6); + if(CK_Check(CK_7)) MDFNI_SelectState(7); + if(CK_Check(CK_8)) MDFNI_SelectState(8); + if(CK_Check(CK_9)) MDFNI_SelectState(9); + + if(CK_Check(CK_M0)) MDFNI_SelectMovie(0); + if(CK_Check(CK_M1)) MDFNI_SelectMovie(1); + if(CK_Check(CK_M2)) MDFNI_SelectMovie(2); + if(CK_Check(CK_M3)) MDFNI_SelectMovie(3); + if(CK_Check(CK_M4)) MDFNI_SelectMovie(4); + if(CK_Check(CK_M5)) MDFNI_SelectMovie(5); + if(CK_Check(CK_M6)) MDFNI_SelectMovie(6); + if(CK_Check(CK_M7)) MDFNI_SelectMovie(7); + if(CK_Check(CK_M8)) MDFNI_SelectMovie(8); + if(CK_Check(CK_M9)) MDFNI_SelectMovie(9); + } + } + #undef SSM + } +} + +void MDFND_UpdateInput(bool VirtualDevicesOnly, bool UpdateRapidFire) +{ + static unsigned int rapid=0; + + UpdatePhysicalDeviceState(); + + // + // Check command keys/buttons. CheckCommandKeys() may modify(such as memset to 0) the state of the "keys" array + // under certain circumstances. + // + if(VirtualDevicesOnly) + DoKeyStateZeroing(); // Normally called from CheckCommandKeys(), but since we're not calling CheckCommandKeys() here... + else + CheckCommandKeys(); + + if(UpdateRapidFire) + rapid = (rapid + 1) % (autofirefreq + 1); + + int RotateInput = -1; + + // Do stuff here + for(unsigned int x = 0; x < NumPorts; x++) + { + if(!PortData[x]) + continue; + + // Handle rumbles before we wipe the port data(FIXME: Do we want rumble to work in frame advance mode too?)! + for(int tmi = 0; tmi < PortDevice[x]->NumInputs; tmi++) + { + switch(PortDevice[x]->IDII[tmi].Type) + { + default: + break; + + case IDIT_RUMBLE: + { + uint32 rumble_data = MDFN_de32lsb(((uint8 *)PortData[x] + PortBitOffsets[x][tmi] / 8)); + uint8 weak = (rumble_data >> 0) & 0xFF; + uint8 strong = (rumble_data >> 8) & 0xFF; + + joy_manager->SetRumble(PortButtConfig[x][PortButtConfig[x].size() - 1], weak, strong); + + //printf("Weak: %02x, Strong: %02x\n", weak, strong); + } + break; + } + } + + memset(PortData[x], 0, PortDataSize[x]); + + if(IConfig != none) + continue; + + if(ICDeadDelay > CurTicks) + continue; + else + ICDeadDelay = 0; + + // First, handle buttons + for(unsigned int butt = 0; butt < PortButtConfig[x].size(); butt++) + { + if(CurGame->rotated && PortButtRotateOffsets[x][butt].rotate[CurGame->rotated - 1] != 0xFFFFFFFF) + { + if(RotateInput < 0) + { + char tmp_setting_name[512]; + + trio_snprintf(tmp_setting_name, 512, "%s.rotateinput", CurGame->shortname); + RotateInput = MDFN_GetSettingB(tmp_setting_name); + } + } + + // + // Analog button + // + if(PortButtIsAnalog[x][butt]) + { + uint8 *tptr = (uint8 *)PortData[x]; + uint32 bo = PortButtBitOffsets[x][butt]; + uint32 tv; + + if(CurGame->rotated && PortButtRotateOffsets[x][butt].rotate[CurGame->rotated - 1] != 0xFFFFFFFF) + { + if(RotateInput) + bo = PortButtRotateOffsets[x][butt].rotate[CurGame->rotated - 1]; + } + + tv = std::min(MDFN_de32lsb(&tptr[(bo & 0x7FFFFFFF) / 8]) + DTestButton(PortButtConfig[x][butt], keys, MouseData, true), 32767); + + MDFN_en32lsb(&tptr[(bo & 0x7FFFFFFF) / 8], tv); + } + else if(DTestButton(PortButtConfig[x][butt], keys, MouseData)) // boolean button + { + uint8 *tptr = (uint8 *)PortData[x]; + uint32 bo = PortButtBitOffsets[x][butt]; + + if(CurGame->rotated && PortButtRotateOffsets[x][butt].rotate[CurGame->rotated - 1] != 0xFFFFFFFF) + { + if(RotateInput) + bo = PortButtRotateOffsets[x][butt].rotate[CurGame->rotated - 1]; + } + if(!(bo & 0x80000000) || rapid >= (autofirefreq + 1) / 2) + tptr[(bo & 0x7FFFFFFF) / 8] |= 1 << (bo & 7); + } + } + + // Handle button exclusion! + for(unsigned int butt = 0; butt < PortButtConfig[x].size(); butt++) + { + uint32 bo[2]; + uint8 *tptr = (uint8 *)PortData[x]; + + bo[0] = PortButtBitOffsets[x][butt]; + bo[1] = PortButtExclusionBitOffsets[x][butt]; + + if(bo[1] != 0xFFFFFFFF) + { + //printf("%08x %08x\n", bo[0], bo[1]); + if( (tptr[(bo[0] & 0x7FFFFFFF) / 8] & (1 << (bo[0] & 7))) && (tptr[(bo[1] & 0x7FFFFFFF) / 8] & (1 << (bo[1] & 7))) ) + { + tptr[(bo[0] & 0x7FFFFFFF) / 8] &= ~(1 << (bo[0] & 7)); + tptr[(bo[1] & 0x7FFFFFFF) / 8] &= ~(1 << (bo[1] & 7)); + } + } + } + + // Now, axis and misc data... + for(int tmi = 0; tmi < PortDevice[x]->NumInputs; tmi++) + { + switch(PortDevice[x]->IDII[tmi].Type) + { + default: break; + + case IDIT_BYTE_SPECIAL: + assert(tmi < 13 + 1); + ((uint8 *)PortData[x])[tmi] = BarcodeWorldData[tmi]; + break; + + case IDIT_X_AXIS_REL: + case IDIT_Y_AXIS_REL: + MDFN_en32lsb(((uint8 *)PortData[x] + PortBitOffsets[x][tmi] / 8), (uint32)((PortDevice[x]->IDII[tmi].Type == IDIT_Y_AXIS_REL) ? MouseDataRel[1] : MouseDataRel[0])); + break; + case IDIT_X_AXIS: + case IDIT_Y_AXIS: + { + MDFN_en32lsb(((uint8 *)PortData[x] + PortBitOffsets[x][tmi] / 8), (uint32)((PortDevice[x]->IDII[tmi].Type == IDIT_Y_AXIS) ? MouseData[1] : MouseData[0])); + } + break; + } + } + } + + memset(BarcodeWorldData, 0, sizeof(BarcodeWorldData)); +} + +void InitGameInput(MDFNGI *gi) +{ + autofirefreq = MDFN_GetSettingUI("autofirefreq"); + fftoggle_setting = MDFN_GetSettingB("fftoggle"); + sftoggle_setting = MDFN_GetSettingB("sftoggle"); + + ckdelay = MDFN_GetSettingUI("ckdelay"); + + memset(CKeysPressTime, 0xff, sizeof(CKeysPressTime)); + memset(CKeysLastState, 0, sizeof(CKeysLastState)); + + //SetJoyReadMode(1); // Disable joystick event handling, and allow manual state updates. + + BuildPortsInfo(gi); +} + + +// Resync butt configs to setting strings +void ResyncGameInputSettings(void) +{ + for(unsigned int port = 0; port < NumPorts; port++) + { + for(unsigned int x = 0; x < PortButtSettingNames[port].size(); x++) + MDFNI_SetSetting(PortButtSettingNames[port][x], BCsToString( PortButtConfig[port][x] ).c_str()); + } +} + + +static ButtConfig subcon_bc; +static int subcon_tb; +static int subcon_wc; + +static void subcon_begin(std::vector &bc) +{ + bc.clear(); + + memset(&subcon_bc, 0, sizeof(subcon_bc)); + subcon_tb = -1; + subcon_wc = 0; +} + +/* Configures an individual virtual button. */ +static int subcon(const char *text, std::vector &bc, int commandkey) +{ + while(1) + { + MDFNI_DispMessage("%s (%d)", text, subcon_wc + 1); + + if(subcon_tb != subcon_wc) + { + joy_manager->Reset_BC_ChangeCheck(); + DTryButtonBegin(&subcon_bc, commandkey); + subcon_tb = subcon_wc; + } + + if(DTryButton()) + { + DTryButtonEnd(&subcon_bc); + } + else if(joy_manager->Do_BC_ChangeCheck(&subcon_bc)) + { + + } + else + return(0); + + if(subcon_wc && !memcmp(&subcon_bc, &bc[subcon_wc - 1], sizeof(ButtConfig))) + break; + + bc.push_back(subcon_bc); + subcon_wc++; + } + + //puts("DONE"); + return(1); +} + +static int cd_x; +static int cd_lx = -1; +static void ConfigDeviceBegin(void) +{ + cd_x = 0; + cd_lx = -1; +} + +int ConfigDevice(int arg) +{ + char buf[512]; + + //for(int i = 0; i < PortButtons[arg].size(); i++) + // printf("%d\n", PortButtConfigPrettyPrio[arg][i]); + //exit(1); + + for(;cd_x < (int)PortButtons[arg].size(); cd_x++) + { + int snooty = 0; + + for(unsigned int i = 0; i < PortButtons[arg].size(); i++) + if(PortButtConfigPrettyPrio[arg][i] == cd_x) + snooty = i; + + // For Lynx, GB, GBA, NGP, WonderSwan(especially wonderswan!) + //if(!strcasecmp(PortDevice[arg]->ShortName, "builtin")) // && !arg) + if(NumPorts == 1 && PortPossibleDevices[CurGame->shortname][0].size() == 1) + trio_snprintf(buf, 512, "%s", PortButtons[arg][snooty]); + else + trio_snprintf(buf, 512, "%s %d: %s", PortDevice[arg]->FullName, arg + 1, PortButtons[arg][snooty]); + + if(cd_x != cd_lx) + { + cd_lx = cd_x; + subcon_begin(PortButtConfig[arg][snooty]); + } + if(!subcon(buf, PortButtConfig[arg][snooty], 0)) + return(0); + } + + MDFNI_DispMessage(_("Configuration finished.")); + + return(1); +} + +#include "input-default-buttons.h" +struct cstrcomp +{ + bool operator()(const char * const &a, const char * const &b) const + { + return(strcmp(a, b) < 0); + } +}; + +static std::map DefaultButtonSettingsMap; +static std::vector PendingGarbage; + +static void MakeSettingsForDevice(std::vector &settings, const MDFNGI *system, const int w, const InputDeviceInfoStruct *info) +{ + const ButtConfig *def_bc = NULL; + char setting_def_search[512]; + + PortPossibleDevices[system->shortname][w].push_back(info); + + trio_snprintf(setting_def_search, 512, "%s.input.%s.%s", system->shortname, system->InputInfo->Types[w].ShortName, info->ShortName); + CleanSettingName(setting_def_search); + + { + std::map::iterator fit = DefaultButtonSettingsMap.find(setting_def_search); + if(fit != DefaultButtonSettingsMap.end()) + def_bc = fit->second->bc; + } + + //for(unsigned int d = 0; d < sizeof(defset) / sizeof(DefaultSettingsMeow); d++) + //{ + // if(!strcasecmp(setting_def_search, defset[d].base_name)) + // { + // def_bc = defset[d].bc; + // break; + // } + //} + + int butti = 0; + + for(int x = 0; x < info->NumInputs; x++) + { + if(info->IDII[x].Type != IDIT_BUTTON && info->IDII[x].Type != IDIT_BUTTON_CAN_RAPID && info->IDII[x].Type != IDIT_BUTTON_BYTE && info->IDII[x].Type != IDIT_BUTTON_ANALOG) + continue; + + if(NULL == info->IDII[x].SettingName) + continue; + + MDFNSetting tmp_setting; + + const char *default_value = ""; + + if(def_bc) + PendingGarbage.push_back((void *)(default_value = strdup(BCToString(def_bc[butti]).c_str()) )); + + //printf("Maketset: %s %s\n", setting_name, default_value); + + memset(&tmp_setting, 0, sizeof(tmp_setting)); + + PendingGarbage.push_back((void *)(tmp_setting.name = CleanSettingName(trio_aprintf("%s.input.%s.%s.%s", system->shortname, system->InputInfo->Types[w].ShortName, info->ShortName, info->IDII[x].SettingName)) )); + PendingGarbage.push_back((void *)(tmp_setting.description = trio_aprintf("%s, %s, %s: %s", system->shortname, system->InputInfo->Types[w].FullName, info->FullName, info->IDII[x].Name) )); + tmp_setting.type = MDFNST_STRING; + tmp_setting.default_value = default_value; + + tmp_setting.flags = MDFNSF_SUPPRESS_DOC; + tmp_setting.description_extra = NULL; + + settings.push_back(tmp_setting); + + // Now make a rapid butt-on-stick-on-watermelon + if(info->IDII[x].Type == IDIT_BUTTON_CAN_RAPID) + { + memset(&tmp_setting, 0, sizeof(tmp_setting)); + + PendingGarbage.push_back((void *)( tmp_setting.name = CleanSettingName(trio_aprintf("%s.input.%s.%s.rapid_%s", system->shortname, system->InputInfo->Types[w].ShortName, info->ShortName, info->IDII[x].SettingName)) )); + PendingGarbage.push_back((void *)( tmp_setting.description = trio_aprintf("%s, %s, %s: Rapid %s", system->shortname, system->InputInfo->Types[w].FullName, info->FullName, info->IDII[x].Name) )); + tmp_setting.type = MDFNST_STRING; + + tmp_setting.default_value = ""; + + tmp_setting.flags = MDFNSF_SUPPRESS_DOC; + tmp_setting.description_extra = NULL; + + settings.push_back(tmp_setting); + } + butti++; + } +} + + +static void MakeSettingsForPort(std::vector &settings, const MDFNGI *system, const int w, const InputPortInfoStruct *info) +{ +#if 1 + if(info->NumTypes > 1) + { + MDFNSetting tmp_setting; + MDFNSetting_EnumList *EnumList; + + memset(&tmp_setting, 0, sizeof(MDFNSetting)); + + EnumList = (MDFNSetting_EnumList *)calloc(sizeof(MDFNSetting_EnumList), info->NumTypes + 1); + + for(int device = 0; device < info->NumTypes; device++) + { + const InputDeviceInfoStruct *dinfo = &info->DeviceInfo[device]; + + EnumList[device].string = strdup(dinfo->ShortName); + EnumList[device].number = device; + EnumList[device].description = strdup(info->DeviceInfo[device].FullName); + EnumList[device].description_extra = info->DeviceInfo[device].Description ? strdup(info->DeviceInfo[device].Description) : NULL; + + PendingGarbage.push_back((void *)EnumList[device].string); + PendingGarbage.push_back((void *)EnumList[device].description); + } + + PendingGarbage.push_back(EnumList); + + tmp_setting.name = trio_aprintf("%s.input.%s", system->shortname, info->ShortName); + PendingGarbage.push_back((void *)tmp_setting.name); + + tmp_setting.description = trio_aprintf("Input device for %s", info->FullName); + PendingGarbage.push_back((void *)tmp_setting.description); + + tmp_setting.type = MDFNST_ENUM; + tmp_setting.default_value = info->DefaultDevice; + + assert(info->DefaultDevice); + + tmp_setting.flags = MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE; + tmp_setting.description_extra = NULL; + tmp_setting.enum_list = EnumList; + + settings.push_back(tmp_setting); + } +#endif + + for(int device = 0; device < info->NumTypes; device++) + { + const InputDeviceInfoStruct *dinfo = &info->DeviceInfo[device]; + + if(dinfo->PortExpanderDeviceInfo) + { + fprintf(stderr, "PortExpanderDeviceInfo support is incomplete."); + abort(); + + const InputPortInfoStruct *sub_ports = (const InputPortInfoStruct *)dinfo->PortExpanderDeviceInfo; + const int sub_port_count = dinfo->NumInputs; + + PortPossibleDevices[system->shortname][w].push_back(&info->DeviceInfo[device]); + + for(int sub_port = 0; sub_port < sub_port_count; sub_port++) + { + MakeSettingsForPort(settings, system, w + sub_port, &sub_ports[sub_port]); + } + //for(int sub_device = 0; sub_device < dinfo->PortExp + } + else + { + MakeSettingsForDevice(settings, system, w, &info->DeviceInfo[device]); + } + } +} + +// Called on emulator startup +void MakeInputSettings(std::vector &settings) +{ + // Construct default button group map + for(unsigned int d = 0; d < sizeof(defset) / sizeof(DefaultSettingsMeow); d++) + DefaultButtonSettingsMap[defset[d].base_name] = &defset[d]; + + // First, build system settings + for(unsigned int x = 0; x < MDFNSystems.size(); x++) + { + if(MDFNSystems[x]->InputInfo) + { + PortPossibleDevices[MDFNSystems[x]->shortname] = new SnugglyWuggly[16]; + + assert(MDFNSystems[x]->InputInfo->InputPorts <= 16); + + for(int port = 0; port < MDFNSystems[x]->InputInfo->InputPorts; port++) + MakeSettingsForPort(settings, MDFNSystems[x], port, &MDFNSystems[x]->InputInfo->Types[port]); + } + } + DefaultButtonSettingsMap.clear(); + + // Now build command key settings + for(int x = 0; x < _CK_COUNT; x++) + { + MDFNSetting tmp_setting; + + memset(&tmp_setting, 0, sizeof(MDFNSetting)); + + CKeysSettingName[x] = trio_aprintf("command.%s", CKeys[x].text); + tmp_setting.name = CKeysSettingName[x]; + PendingGarbage.push_back((void *)( CKeysSettingName[x] )); + + tmp_setting.description = CKeys[x].description; + tmp_setting.type = MDFNST_STRING; + + tmp_setting.flags = MDFNSF_SUPPRESS_DOC; + tmp_setting.description_extra = NULL; + + PendingGarbage.push_back((void *)( tmp_setting.default_value = strdup(BCsToString(CKeys[x].bc, 2).c_str()) )); + settings.push_back(tmp_setting); + } +} + +void KillGameInput(void) +{ + ResyncGameInputSettings(); + KillPortsInfo(); +} + +bool InitCommandInput(void) +{ + // Load the command key mappings from settings + for(int x = 0; x < _CK_COUNT; x++) + { + CKeysConfig[x].AND_Mode = StringToBC(MDFN_GetSettingS(CKeysSettingName[x]).c_str(), CKeysConfig[x].bc); + } + return(1); +} + +void KillCommandInput(void) +{ + // Save the command key mappings to settings + for(int x = 0; x < _CK_COUNT; x++) + { + MDFNI_SetSetting(CKeysSettingName[x], BCsToString(CKeysConfig[x].bc, CKeysConfig[x].AND_Mode).c_str()); + } +} + +void KillInputSettings(void) +{ + for(unsigned int x = 0; x < PendingGarbage.size(); x++) + free(PendingGarbage[x]); + + PendingGarbage.clear(); +} + diff --git a/libmednahawk/src/drivers/input.h b/libmednahawk/src/drivers/input.h new file mode 100644 index 0000000000..5616d6cf4b --- /dev/null +++ b/libmednahawk/src/drivers/input.h @@ -0,0 +1,41 @@ +#ifndef _MDFN_DRIVERS_INPUT_H +#define _MDFN_DRIVERS_INPUT_H + +typedef struct { + uint8 ButtType; + uint8 DeviceNum; + uint32 ButtonNum; + uint64 DeviceID; +} ButtConfig; + +#define BUTTC_NONE 0x00 +#define BUTTC_KEYBOARD 0x01 +#define BUTTC_JOYSTICK 0x02 +#define BUTTC_MOUSE 0x03 + +#define MKK(k) SDLK_##k +#define MKK_COUNT (SDLK_LAST+1) + +void Input_Event(const SDL_Event *event); +void MainSetEventHook(int (*eh)(const SDL_Event *event)); // TODO: factor out eventually. + +// Called after a game is loaded. +void InitGameInput(MDFNGI *GI); + +// Called to synch +void ResyncGameInputSettings(void); + +// Called when a game is closed. +void KillGameInput(void); + +void MDFND_UpdateInput(bool VirtualDevicesOnly = false, bool UpdateRapidFire = true); + +void MakeInputSettings(std::vector &settings); +void KillInputSettings(void); // Called after MDFNI_Kill() is called + +extern bool DNeedRewind; // Only read/write in game thread. + +bool InitCommandInput(void); +void KillCommandInput(void); + +#endif diff --git a/libmednahawk/src/drivers/joystick.cpp b/libmednahawk/src/drivers/joystick.cpp new file mode 100644 index 0000000000..ac70da809f --- /dev/null +++ b/libmednahawk/src/drivers/joystick.cpp @@ -0,0 +1,585 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* + The joystick driver configuration priority system should be considered as last-resort protection for multiple-API platforms(such as DirectInput + XInput on Windows), in the + event that all reasonable attempts at preventing the same physical device from being opened via multiple APIs fail. (The configuration priority system generally should + work ok as long as the user isn't extremely unlucky, doesn't try to configure too quickly(or too slowly ;)), and the controller is well-behaved; but it is still + inherently race-conditiony). +*/ +#include "main.h" +#include "input.h" +#include "../md5.h" +#include "../math_ops.h" + +#include "Joystick.h" + +#ifdef HAVE_SDL + #include "Joystick_SDL.h" +#endif + +#ifdef HAVE_LINUX_JOYSTICK + #include "Joystick_Linux.h" +#endif + +#ifdef WIN32 +#ifndef HEADLESS + #include "Joystick_DX5.h" + #include "Joystick_XInput.h" +#endif +#endif + +#ifdef DOS + #include "Joystick_DOS_Standard.h" + //#include "Joystick_DOS_SideWinder.h" +#endif + +Joystick::Joystick() : num_axes(0), num_rel_axes(0), num_buttons(0), id(0) +{ + name[0] = 0; +} + +Joystick::~Joystick() +{ + +} + +void Joystick::CalcOldStyleID(unsigned arg_num_axes, unsigned arg_num_balls, unsigned arg_num_hats, unsigned arg_num_buttons) +{ + uint8 digest[16]; + int tohash[4]; + md5_context hashie; + uint64 ret = 0; + + //printf("%u %u %u %u\n", arg_num_axes, arg_num_balls, arg_num_hats, arg_num_buttons); + + tohash[0] = arg_num_axes; + tohash[1] = arg_num_balls; + tohash[2] = arg_num_hats; + tohash[3] = arg_num_buttons; + + hashie.starts(); + hashie.update((uint8 *)tohash, sizeof(tohash)); + hashie.finish(digest); + + for(int x = 0; x < 16; x++) + { + ret ^= (uint64)digest[x] << ((x & 7) * 8); + } + + id = ret; +} + +void Joystick::SetRumble(uint8 weak_intensity, uint8 strong_intensity) +{ + + +} + +bool Joystick::IsAxisButton(unsigned axis) +{ + return(false); +} + +unsigned Joystick::HatToAxisCompat(unsigned hat) +{ + return(~0U); +} + +unsigned Joystick::HatToButtonCompat(unsigned hat) +{ + return(~0U); +} + +JoystickDriver::JoystickDriver() +{ + +} + +JoystickDriver::~JoystickDriver() +{ + +} + +unsigned JoystickDriver::NumJoysticks() +{ + return 0; +} + +Joystick *JoystickDriver::GetJoystick(unsigned index) +{ + return NULL; +} + +void JoystickDriver::UpdateJoysticks(void) +{ + +} + +JoystickManager::JoystickManager() +{ + JoystickDriver *main_driver = NULL; + JoystickDriver *hicp_driver = NULL; + + MDFNI_printf(_("Initializing joysticks...\n")); + MDFN_indent(1); + + try + { + #ifdef HAVE_LINUX_JOYSTICK + main_driver = JoystickDriver_Linux_New(); + #elif defined(WIN32) && !defined(HEADLESS) + { + hicp_driver = JoystickDriver_XInput_New(); + main_driver = JoystickDriver_DX5_New(hicp_driver != NULL && hicp_driver->NumJoysticks() > 0); + } + #elif defined(HAVE_SDL) + main_driver = JoystickDriver_SDL_New(); + #endif + + if(hicp_driver != NULL) + { + JoystickDrivers.push_back(hicp_driver); + } + + if(main_driver != NULL) + { + JoystickDrivers.push_back(main_driver); + } + + for(unsigned jd = 0; jd < JoystickDrivers.size(); jd++) + { + for(unsigned i = 0; i < JoystickDrivers[jd]->NumJoysticks(); i++) + { + JoystickManager_Cache ce; + + ce.joystick = JoystickDrivers[jd]->GetJoystick(i); + ce.UniqueID = ce.joystick->ID(); + ce.config_prio = (JoystickDrivers[jd] == hicp_driver) ? 1 : 0; + + TryAgain: + for(unsigned nji = 0; nji < JoystickCache.size(); nji++) + { + if(JoystickCache[nji].UniqueID == ce.UniqueID) + { + ce.UniqueID++; + goto TryAgain; + } + } + + MDFN_printf(_("Joystick %u - %s - Unique ID: %016llx\n"), (unsigned)JoystickCache.size(), ce.joystick->Name(), (unsigned long long)ce.UniqueID); + + ce.axis_config_type.resize(ce.joystick->NumAxes()); + ce.prev_state_valid = false; + ce.prev_axis_state.resize(ce.joystick->NumAxes()); + ce.axis_hysterical_ax_murderer.resize(ce.joystick->NumAxes()); + ce.prev_button_state.resize(ce.joystick->NumButtons()); + ce.rel_axis_accum_state.resize(ce.joystick->NumRelAxes()); + + JoystickCache.push_back(ce); + } + } + + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + if(main_driver != NULL) + { + delete main_driver; + main_driver = NULL; + } + if(hicp_driver != NULL) + { + delete hicp_driver; + hicp_driver = NULL; + } + } + MDFN_indent(-1); +} + +void JoystickManager::SetAnalogThreshold(double thresh) +{ + AnalogThreshold = thresh * 32767; +} + +JoystickManager::~JoystickManager() +{ + for(unsigned i = 0; i < JoystickDrivers.size(); i++) + delete JoystickDrivers[i]; +} + +unsigned JoystickManager::DetectAnalogButtonsForChangeCheck(void) +{ + unsigned ret = 0; + + for(unsigned i = 0; i < JoystickCache.size(); i++) + { + for(unsigned axis = 0; axis < JoystickCache[i].joystick->NumAxes(); axis++) + { + JoystickCache[i].axis_config_type[axis] = JoystickManager_Cache::AXIS_CONFIG_TYPE_GENERIC; + + if(JoystickCache[i].joystick->IsAxisButton(axis)) + ret++; + else + { + int pos = JoystickCache[i].joystick->GetAxis(axis); + + if(abs(pos) >= 31000) + { + if(pos < 0) + JoystickCache[i].axis_config_type[axis] = JoystickManager_Cache::AXIS_CONFIG_TYPE_ANABUTTON_POSPRESS; + else + JoystickCache[i].axis_config_type[axis] = JoystickManager_Cache::AXIS_CONFIG_TYPE_ANABUTTON_NEGPRESS; + + printf("SPOON -- joystick=%u, axis=%u, type=%u\n", i, axis, JoystickCache[i].axis_config_type[axis]); + ret++; + } + } + } + } + return ret; +} + +void JoystickManager::Reset_BC_ChangeCheck(void) +{ + for(unsigned i = 0; i < JoystickCache.size(); i++) + JoystickCache[i].prev_state_valid = false; + + BCPending.ButtType = BUTTC_NONE; + BCPending_Prio = -1; + BCPending_CCCC = 0; +} + +bool JoystickManager::Do_BC_ChangeCheck(ButtConfig *bc) //, bool hint_analog) +{ + if(BCPending.ButtType != BUTTC_NONE) + { + if((BCPending_Time + 150) <= MDFND_GetTime() && BCPending_CCCC >= 5) //(int32)(MDFND_GetTime() - BCPending_Time) >= 150) + { + *bc = BCPending; + BCPending.ButtType = BUTTC_NONE; + BCPending_Prio = -1; + BCPending_CCCC = 0; + return(true); + } + + int SaveAT = AnalogThreshold; // Begin Kludge + AnalogThreshold = ((JoystickCache[BCPending.DeviceNum].config_prio > 0) ? 25000 : 26000); + if(!TestButton(BCPending)) + { + BCPending.ButtType = BUTTC_NONE; + BCPending_Prio = -1; + BCPending_CCCC = 0; + } + else + BCPending_CCCC++; + AnalogThreshold = SaveAT; // End Kludge. + } + + for(unsigned i = 0; i < JoystickCache.size(); i++) + { + JoystickManager_Cache *const jsc = &JoystickCache[i]; + Joystick *const js = jsc->joystick; + const int ana_low_thresh = ((jsc->config_prio > 0) ? 6000 : 5000); + const int ana_high_thresh = ((jsc->config_prio > 0) ? 25000 : 26000); + + // Search buttons first, then axes? + for(unsigned button = 0; button < js->NumButtons(); button++) + { + bool button_state = js->GetButton(button); + + if(jsc->prev_state_valid && (button_state != jsc->prev_button_state[button]) && button_state) + { + ButtConfig bctmp; + + bctmp.ButtType = BUTTC_JOYSTICK; + bctmp.DeviceNum = i; + bctmp.ButtonNum = button; + bctmp.DeviceID = jsc->UniqueID; + + if(jsc->config_prio >= 0 && (jsc->config_prio > BCPending_Prio || 0)) // TODO: add axis/button priority logic(replace || 0) for gamepads that send axis and button events for analog button presses. + { + BCPending = bctmp; + BCPending_Prio = jsc->config_prio; + BCPending_Time = MDFND_GetTime(); + BCPending_CCCC = 0; + } + } + jsc->prev_button_state[button] = button_state; + } + + for(unsigned axis = 0; axis < js->NumAxes(); axis++) + { + int16 axis_state = js->GetAxis(axis); + + if(jsc->axis_config_type[axis] == JoystickManager_Cache::AXIS_CONFIG_TYPE_ANABUTTON_POSPRESS) + { + if(axis_state < -32767) + axis_state = -32767; + + axis_state = (axis_state + 32767) >> 1; + //printf("%u: %u\n", axis, axis_state); + } + else if(jsc->axis_config_type[axis] == JoystickManager_Cache::AXIS_CONFIG_TYPE_ANABUTTON_NEGPRESS) + { + if(axis_state < -32767) + axis_state = -32767; + + axis_state = -axis_state; + + axis_state = (axis_state + 32767) >> 1; + //printf("%u: %u\n", axis, axis_state); + } + + if(jsc->prev_state_valid) + { + if(jsc->axis_hysterical_ax_murderer[axis] && abs(axis_state) >= ana_high_thresh) + { + ButtConfig bctmp; + + bctmp.ButtType = BUTTC_JOYSTICK; + bctmp.DeviceNum = i; + + if(jsc->axis_config_type[axis] == JoystickManager_Cache::AXIS_CONFIG_TYPE_ANABUTTON_POSPRESS) + bctmp.ButtonNum = (1 << 16) | axis; + else if(jsc->axis_config_type[axis] == JoystickManager_Cache::AXIS_CONFIG_TYPE_ANABUTTON_NEGPRESS) + bctmp.ButtonNum = (1 << 16) | (1 << 17) | axis; + else + bctmp.ButtonNum = 0x8000 | axis | ((axis_state < 0) ? 0x4000 : 0); + + bctmp.DeviceID = jsc->UniqueID; + + if(jsc->config_prio >= 0 && (jsc->config_prio > BCPending_Prio || 0)) // TODO: add axis/button priority logic(replace || 0) for gamepads that send axis and button events for analog button presses. + { + BCPending = bctmp; + BCPending_Prio = jsc->config_prio; + BCPending_Time = MDFND_GetTime(); + BCPending_CCCC = 0; + } + } + else if(!jsc->axis_hysterical_ax_murderer[axis] && abs(axis_state) < ana_low_thresh) + { + jsc->axis_hysterical_ax_murderer[axis] = 1; + } + } + else + { + if(abs(axis_state) >= ana_low_thresh) + jsc->axis_hysterical_ax_murderer[axis] = 0; + else + jsc->axis_hysterical_ax_murderer[axis] = 1; + } + + jsc->prev_axis_state[axis] = axis_state; + } + // + // + jsc->prev_state_valid = true; + } + + return(false); +} + +void JoystickManager::SetRumble(const std::vector &bc, uint8 weak_intensity, uint8 strong_intensity) +{ + for(unsigned i = 0; i < bc.size(); i++) + { + if(bc[i].ButtType != BUTTC_JOYSTICK) + continue; + + if(bc[i].DeviceNum >= JoystickCache.size()) + continue; + + Joystick *joy = JoystickCache[bc[i].DeviceNum].joystick; + joy->SetRumble(weak_intensity, strong_intensity); + } +} + +void JoystickManager::TestRumble(void) +{ + uint8 weak, strong; + //uint32 cur_time = MDFND_GetTime(); + + strong = 255; + weak = 0; + for(unsigned i = 0; i < JoystickCache.size(); i++) + { + Joystick *joy = JoystickCache[i].joystick; + joy->SetRumble(weak, strong); + } +} + +void JoystickManager::UpdateJoysticks(void) +{ + //TestRumble(); + for(unsigned i = 0; i < JoystickDrivers.size(); i++) + { + JoystickDrivers[i]->UpdateJoysticks(); + } +} + +bool JoystickManager::TestButton(const ButtConfig &bc) +{ + if(bc.DeviceNum >= JoystickCache.size()) + return(0); + + //printf("%u\n", AnalogThreshold); + + Joystick *joy = JoystickCache[bc.DeviceNum].joystick; + + if(bc.ButtonNum & (0x8000 | 0x2000)) /* Axis "button" (| 0x2000 for backwards-compat hat translation)*/ + { + bool neg_req = (bool)(bc.ButtonNum & 0x4000); + unsigned axis = bc.ButtonNum & 0x3FFF; + int pos; + + if(bc.ButtonNum & 0x2000) + { + axis = joy->HatToAxisCompat((bc.ButtonNum >> 8) & 0x1F); + if(axis == ~0U) // Not-implemented case. See if implemented for buttons. + { + unsigned button = joy->HatToButtonCompat((bc.ButtonNum >> 8) & 0x1F); + + if(button != ~0U) + { + button += uilog2(bc.ButtonNum & 0xF); + + if(button >= joy->NumButtons()) + return(0); + + return joy->GetButton(button); + } + return(0); + } + + if(bc.ButtonNum & 0x05) + axis++; + + neg_req = bc.ButtonNum & 0x09; + } + + if(axis >= joy->NumAxes()) + return(0); + + pos = joy->GetAxis(axis); + + if(neg_req && (pos <= -AnalogThreshold)) + return(1); + else if(!neg_req && (pos >= AnalogThreshold)) + return(1); + } + else if(bc.ButtonNum & (1 << 16)) // Analog button axis. + { + unsigned axis = bc.ButtonNum & 0x3FFF; + int pos; + + if(axis >= joy->NumAxes()) + return(0); + + pos = joy->GetAxis(axis); + if(pos < -32767) + pos = -32767; + + if(bc.ButtonNum & (1 << 17)) + pos = -pos; + + pos += 32767; + pos >>= 1; + + if(pos >= AnalogThreshold) + return(1); + } + else + { + unsigned button = bc.ButtonNum; + + if(button >= joy->NumButtons()) + return(0); + + return joy->GetButton(button); + } + + return(0); +} + +int JoystickManager::TestAnalogButton(const ButtConfig &bc) +{ + if(bc.DeviceNum >= JoystickCache.size()) + return(0); + + Joystick *joy = JoystickCache[bc.DeviceNum].joystick; + + if(bc.ButtonNum & 0x8000) /* Axis "button" */ + { + unsigned axis = bc.ButtonNum & 0x3FFF; + int pos; + + if(axis >= joy->NumAxes()) + return(0); + pos = joy->GetAxis(axis); + + if((bc.ButtonNum & 0x4000) && pos < 0) + return(std::min(-pos, 32767)); + else if (!(bc.ButtonNum & 0x4000) && pos > 0) + return(pos); + } + else if(bc.ButtonNum & (1 << 16)) // Analog button axis. + { + unsigned axis = bc.ButtonNum & 0x3FFF; + int pos; + + if(axis >= joy->NumAxes()) + return(0); + + pos = joy->GetAxis(axis); + if(pos < -32767) + pos = -32767; + + if(bc.ButtonNum & (1 << 17)) + pos = -pos; + + pos += 32767; + pos >>= 1; + + return(pos); + } + else + { + return(TestButton(bc) ? 32767 : 0); + } + + return(0); +} + +unsigned JoystickManager::GetIndexByUniqueID(uint64 unique_id) +{ + for(unsigned i = 0; i < JoystickCache.size(); i++) + { + if(JoystickCache[i].UniqueID == unique_id) + { + //printf("%16llx %u\n", unique_id, i); + return(i); + } + } + + return(~0U); +} + +unsigned JoystickManager::GetUniqueIDByIndex(unsigned index) +{ + return JoystickCache[index].UniqueID; +} diff --git a/libmednahawk/src/drivers/joystick.h b/libmednahawk/src/drivers/joystick.h new file mode 100644 index 0000000000..c9aa844e3a --- /dev/null +++ b/libmednahawk/src/drivers/joystick.h @@ -0,0 +1,118 @@ +#ifndef __MDFN_DRIVERS_N_JOYSTICK_H +#define __MDFN_DRIVERS_N_JOYSTICK_H + +#include +#include +#include + +class Joystick +{ + public: + + Joystick(); + virtual ~Joystick(); + + INLINE uint64 ID(void) { return id; } // Should be guaranteed unique if at all possible, but if it's not, JoystickManager will handle clashes. + INLINE const char *Name(void) { return name; } + INLINE unsigned NumAxes(void) { return num_axes; } + INLINE unsigned NumRelAxes(void) { return num_rel_axes; } + INLINE unsigned NumButtons(void) { return num_buttons; } + + INLINE int16 GetAxis(unsigned axis) { return axis_state[axis]; } // return value should be -32767 through 32767 for stick-type axes, and 0 through 32767 + // for analog buttons(if that information is even available, which it is commonly not). + // If an axis is an analog button and the value returned will be 0 through 32767, then you must + // also implement the IsAxisButton() method. + INLINE int GetRelAxis(unsigned rel_axis) { return rel_axis_state[rel_axis]; } + INLINE bool GetButton(unsigned button) { return button_state[button]; } + + virtual bool IsAxisButton(unsigned axis); + virtual void SetRumble(uint8 weak_intensity, uint8 strong_intensity); + virtual unsigned HatToAxisCompat(unsigned hat); + virtual unsigned HatToButtonCompat(unsigned hat); + + protected: + + void CalcOldStyleID(unsigned num_axes, unsigned num_balls, unsigned num_hats, unsigned num_buttons); + + char name[256]; + unsigned num_axes; + unsigned num_rel_axes; + unsigned num_buttons; + uint64 id; + + std::vector axis_state; + std::vector rel_axis_state; + std::vector button_state; +}; + + +class JoystickDriver +{ + public: + + JoystickDriver(); + virtual ~JoystickDriver(); + + virtual unsigned NumJoysticks(); // Cached internally on JoystickDriver instantiation. + virtual Joystick *GetJoystick(unsigned index); + virtual void UpdateJoysticks(void); +}; + +struct JoystickManager_Cache +{ + Joystick *joystick; + uint64 UniqueID; + + enum + { + AXIS_CONFIG_TYPE_GENERIC = 0, + AXIS_CONFIG_TYPE_ANABUTTON_POSPRESS, + AXIS_CONFIG_TYPE_ANABUTTON_NEGPRESS + }; + + // Helpers for input configuration(may have semantics that differ from what the names would suggest)! + int config_prio; // Set to -1 to exclude this joystick instance from configuration, 0 is normal, 1 is SPECIALSAUCEWITHBACON. + std::vector axis_config_type; + bool prev_state_valid; + std::vector prev_axis_state; + std::vector axis_hysterical_ax_murderer; + std::vector prev_button_state; + std::vector rel_axis_accum_state; +}; + +class JoystickManager +{ + public: + + JoystickManager(); + ~JoystickManager(); + + unsigned DetectAnalogButtonsForChangeCheck(void); + void Reset_BC_ChangeCheck(void); + bool Do_BC_ChangeCheck(ButtConfig *bc); // TODO: , bool hint_analog); // hint_analog = true if the emulated button is an analog button/axis/whatever, false if it's digital(binary 0/1). + // affects sort order if multiple events come in during the debouncey time period. + void SetAnalogThreshold(double thresh); // 0.0..-1.0... + + void UpdateJoysticks(void); + + void SetRumble(const std::vector &bc, uint8 weak_intensity, uint8 strong_intensity); + bool TestButton(const ButtConfig &bc); + int TestAnalogButton(const ButtConfig &bc); + + unsigned GetIndexByUniqueID(uint64 unique_id); // Returns ~0U if joystick was not found. + unsigned GetUniqueIDByIndex(unsigned index); + + void TestRumble(void); + + private: + int AnalogThreshold; + + std::vector JoystickDrivers; + std::vector JoystickCache; + ButtConfig BCPending; + int BCPending_Prio; + uint32 BCPending_Time; + uint32 BCPending_CCCC; +}; + +#endif diff --git a/libmednahawk/src/drivers/logdebugger.cpp b/libmednahawk/src/drivers/logdebugger.cpp new file mode 100644 index 0000000000..5547b5fa65 --- /dev/null +++ b/libmednahawk/src/drivers/logdebugger.cpp @@ -0,0 +1,287 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO: horizontal scrolling + +#include "main.h" +#include "logdebugger.h" +#include "debugger.h" +#include "prompt.h" + +#include +#include +#include +#include + +typedef struct +{ + char *type; + char *text; +} LogEntry; + +class LogInstance +{ + public: + + LogInstance() + { + entries.clear(); + LogScroll = 0; + HScroll = 0; + MaxWidth = 0; + } + + ~LogInstance() + { + + } + + std::vector entries; + uint32 LogScroll; + uint32 HScroll; + uint32 MaxWidth; +}; + +static bool IsActive = FALSE; +static bool LoggingActive = FALSE; + +//static std::vector DeathLog; + +static std::map NeoDeathLog; + +static LogInstance *WhichLog = NULL; + +// Called from the game thread. +static void TheLogger(const char *type, const char *text) +{ + LogEntry nle; + + nle.type = strdup(type); + nle.text = strdup(text); + + NeoDeathLog["All"].entries.push_back(nle); + NeoDeathLog[std::string(type)].entries.push_back(nle); + + if((WhichLog->entries.size() - WhichLog->LogScroll) == 33) + WhichLog->LogScroll++; +} + + +// Call this function from either thread. +void LogDebugger_SetActive(bool newia) +{ + if(CurGame->Debugger) + { + LockGameMutex(1); + + IsActive = newia; + if(newia) + { + if(!WhichLog) + { + WhichLog = &NeoDeathLog["All"]; + } + } + else + { + //InEditMode = FALSE; + //LowNib = FALSE; + } + LockGameMutex(0); + } +} + +#define MK_COLOR_A(r,g,b,a) ( pf_cache.MakeColor(r, g, b, a) ) + +// Call this function from the main thread +void LogDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect) +{ + if(!IsActive) return; + + LockGameMutex(1); + + const MDFN_PixelFormat pf_cache = surface->format; + uint32 * pixels = surface->pixels; + uint32 pitch32 = surface->pitchinpix; + char logmessage[256]; + + trio_snprintf(logmessage, 256, "%s (%d messages)", LoggingActive ? (UTF8*)"Logging Enabled" : (UTF8*)"Logging Disabled", (int)WhichLog->entries.size()); + DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)logmessage, MK_COLOR_A(0x20, 0xFF, 0x20, 0xFF), 1, MDFN_FONT_6x13_12x13); + pixels += 13 * pitch32; + + std::map::iterator dl_iter; + uint32 *groups_line = pixels; + + for(dl_iter = NeoDeathLog.begin(); dl_iter != NeoDeathLog.end(); dl_iter++) + { + uint32 group_color = MK_COLOR_A(0x80, 0x80, 0x80, 0xFF); + char group_string[256]; + + trio_snprintf(group_string, 256, "%s(%d)", dl_iter->first.c_str(), (int)dl_iter->second.entries.size()); + + if(&dl_iter->second == WhichLog) + group_color = MK_COLOR_A(0xFF, 0x80, 0x80, 0xFF); + + groups_line += 6 + DrawTextTrans(groups_line, surface->pitchinpix << 2, rect->w, (UTF8*)group_string, group_color, 0, MDFN_FONT_6x13_12x13); + +// printf("%s\n", dl_iter->first.c_str()); + } + + //DrawTextTrans(pixels, surface->pitch, rect->w, (UTF8*)logmessage, MK_COLOR_A(0x20, 0xFF, 0x20, 0xFF), 1, MDFN_FONT_6x13_12x13); + pixels += 13 * pitch32; + + + for(uint32 i = WhichLog->LogScroll; i < (WhichLog->LogScroll + 32) && i < WhichLog->entries.size(); i++) + { + uint32 typelen; + static const uint32 lifecolors[4] = { MK_COLOR_A(0xe0, 0xd0, 0xd0, 0xFF), MK_COLOR_A(0xd0, 0xe0, 0xd0, 0xFF), + MK_COLOR_A(0xd0, 0xd0, 0xEF, 0xFF), MK_COLOR_A(0xd4, 0xd4, 0xd4, 0xFF) + }; + char tmpbuf[64]; + + trio_snprintf(tmpbuf, 64, "%d", i); + typelen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)tmpbuf, MK_COLOR_A(0x80, 0x80, 0xD0, 0xFF), FALSE, MDFN_FONT_5x7); + typelen += 1; + + typelen += DrawTextTrans(pixels + typelen, surface->pitchinpix << 2, rect->w - typelen, (UTF8*)WhichLog->entries[i].type, MK_COLOR_A(0xFF, 0x40, 0x40, 0xFF), FALSE, MDFN_FONT_6x13_12x13); + typelen += 5; + DrawTextTrans(pixels + typelen, surface->pitchinpix << 2, rect->w - typelen, (UTF8*)WhichLog->entries[i].text, lifecolors[i & 3], FALSE, MDFN_FONT_6x13_12x13); + pixels += pitch32 * 13; + } + LockGameMutex(0); +} + +static void ChangePos(int64 delta) +{ + int64 NewScroll = (int64)WhichLog->LogScroll + delta; + + if(NewScroll > ((int64)WhichLog->entries.size() - 32)) + { + NewScroll = (int64)WhichLog->entries.size() - 32; + } + + if(NewScroll < 0) + { + NewScroll = 0; + } + + WhichLog->LogScroll = NewScroll; +} + +// Warning: Will only work with +1/-1 deltas for now +static void LogGroupSelect(int delta) +{ + std::map::iterator dl_iter; + std::vector acorn_eaters; + int which = 0; + int newt; + + for(dl_iter = NeoDeathLog.begin(); dl_iter != NeoDeathLog.end(); dl_iter++) + { + if(WhichLog == &dl_iter->second) + which = acorn_eaters.size(); + + acorn_eaters.push_back(&dl_iter->second); + } + + newt = which + delta; + + if(newt < 0) + { + newt += acorn_eaters.size(); + } + else + newt %= acorn_eaters.size(); + + WhichLog = acorn_eaters[newt]; + +} + + +// Call this from the main thread +int LogDebugger_Event(const SDL_Event *event) +{ + switch(event->type) + { + case SDL_KEYDOWN: + switch(event->key.keysym.sym) + { + default: break; + + case SDLK_MINUS: Debugger_ModOpacity(-8); + break; + case SDLK_EQUALS: Debugger_ModOpacity(8); + break; + + + case SDLK_HOME: LockGameMutex(1); + WhichLog->LogScroll = 0; + LockGameMutex(0); + break; + + case SDLK_END: LockGameMutex(1); + ChangePos(1 << 30); + LockGameMutex(0); + break; + + case SDLK_LEFT: + case SDLK_COMMA: LockGameMutex(1); + LogGroupSelect(-1); + LockGameMutex(0); + break; + case SDLK_RIGHT: + case SDLK_PERIOD: LockGameMutex(1); + LogGroupSelect(1); + LockGameMutex(0); + break; + + case SDLK_UP: LockGameMutex(1); + ChangePos(-1); + LockGameMutex(0); + break; + + case SDLK_DOWN: LockGameMutex(1); + ChangePos(1); + LockGameMutex(0); + break; + + case SDLK_PAGEUP: LockGameMutex(1); + ChangePos(-32); + LockGameMutex(0); + break; + + case SDLK_PAGEDOWN: LockGameMutex(1); + ChangePos(32); + LockGameMutex(0); + break; + + case SDLK_t: + LockGameMutex(1); + LoggingActive = !LoggingActive; + if(CurGame->Debugger->SetLogFunc) + CurGame->Debugger->SetLogFunc(LoggingActive ? TheLogger : NULL); + LockGameMutex(0); + break; + + + } + break; + + } + return(1); +} + diff --git a/libmednahawk/src/drivers/logdebugger.h b/libmednahawk/src/drivers/logdebugger.h new file mode 100644 index 0000000000..28e40edb3d --- /dev/null +++ b/libmednahawk/src/drivers/logdebugger.h @@ -0,0 +1,9 @@ +#ifndef __MDFN_DRIVERS_LOGDEBUGGER_H +#define __MDFN_DRIVERS_LOGDEBUGGER_H + +void LogDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect); +int LogDebugger_Event(const SDL_Event *event); +void LogDebugger_SetActive(bool newia); + +#endif + diff --git a/libmednahawk/src/drivers/main.cpp b/libmednahawk/src/drivers/main.cpp new file mode 100644 index 0000000000..9a9cbf627b --- /dev/null +++ b/libmednahawk/src/drivers/main.cpp @@ -0,0 +1,2014 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" + +#ifdef WIN32 +#include +#endif + +//#include //zero 07-feb-2012 +#include +#include +//#include //zero 07-feb-2012 +#include //zero 07-feb-2012 +#include +//#include //zero 07-feb-2012 +#include +//#include //zero 07-feb-2012 +#include +#include +#include + +#ifdef HAVE_GETPWUID +#include +#endif + +#ifdef HAVE_LIBCDIO +#include +#endif + +#include "input.h" +#include "Joystick.h" +#include "video.h" +#include "opengl.h" +#include "shader.h" +#include "sound.h" +#include "netplay.h" +#include "cheat.h" +#include "fps.h" +#include "debugger.h" +#include "memdebugger.h" +#include "help.h" +#include "video-state.h" +#include "remote.h" +#include "ers.h" +#include "../qtrecord.h" +#include + +JoystickManager *joy_manager = NULL; +bool MDFNDHaveFocus; +static bool RemoteOn = FALSE; +bool pending_save_state, pending_snapshot, pending_save_movie; +static Uint32 volatile MainThreadID = 0; +static bool ffnosound; + +static const char *CSD_xres = gettext_noop("Full-screen horizontal resolution."); +static const char *CSD_yres = gettext_noop("Full-screen vertical resolution."); +static const char *CSDE_xres = gettext_noop("A value of \"0\" will cause the desktop horizontal resolution to be used."); +static const char *CSDE_yres = gettext_noop("A value of \"0\" will cause the desktop vertical resolution to be used."); + +static const char *CSD_xscale = gettext_noop("Scaling factor for the X axis."); +static const char *CSD_yscale = gettext_noop("Scaling factor for the Y axis."); + +static const char *CSD_xscalefs = gettext_noop("Scaling factor for the X axis in fullscreen mode."); +static const char *CSD_yscalefs = gettext_noop("Scaling factor for the Y axis in fullscreen mode."); +static const char *CSDE_xyscalefs = gettext_noop("For this settings to have any effect, the \".stretch\" setting must be set to \"0\"."); + +static const char *CSD_scanlines = gettext_noop("Enable scanlines with specified opacity."); +static const char *CSDE_scanlines = gettext_noop("Opacity is specified in %; IE a value of \"100\" will give entirely black scanlines."); + +static const char *CSD_stretch = gettext_noop("Stretch to fill screen."); +static const char *CSD_videoip = gettext_noop("Enable (bi)linear interpolation."); + + +static const char *CSD_special = gettext_noop("Enable specified special video scaler."); +static const char *CSDE_special = gettext_noop("The destination rectangle is NOT altered by this setting, so if you have xscale and yscale set to \"2\", and try to use a 3x scaling filter like hq3x, the image is not going to look that great. The nearest-neighbor scalers are intended for use with bilinear interpolation enabled, at high resolutions(such as 1280x1024; nn2x(or nny2x) + bilinear interpolation + fullscreen stretching at this resolution looks quite nice)."); + +static const char *CSD_pixshader = gettext_noop("Enable specified OpenGL pixel shader."); +static const char *CSDE_pixshader = gettext_noop("Obviously, this will only work with the OpenGL \"video.driver\" setting, and only on cards and OpenGL implementations that support pixel shaders, otherwise you will get a black screen, or Mednafen may display an error message when starting up. Bilinear interpolation is disabled with pixel shaders, and any interpolation, if present, will be noted in the description of each pixel shader."); + +static MDFNSetting_EnumList VDriver_List[] = +{ + // Legacy: + { "0", VDRIVER_OPENGL }, + { "1", VDRIVER_SOFTSDL }, + + + { "opengl", VDRIVER_OPENGL, "OpenGL + SDL", gettext_noop("This output method is preferred, as all features are available with it.") }, + { "sdl", VDRIVER_SOFTSDL, "SDL Surface", gettext_noop("Slower with lower-quality scaling than OpenGL, but if you don't have hardware-accelerated OpenGL rendering, it will be faster than software OpenGL rendering. Bilinear interpolation not available. Pixel shaders do not work with this output method, of course.") }, + { "overlay", VDRIVER_OVERLAY, "SDL Overlay", gettext_noop("As fast as OpenGL, perhaps faster in some situations, *if* it's hardware-accelerated. Scanline effects are not available. hq2x, hq3x, hq4x are not available. The OSD may be missing or glitchy. Bilinear interpolation can't be turned off. Harsh chroma subsampling blurring in some picture types. If you use this output method, it is strongly recommended to use a special scaler with it, such as nn2x.") }, + + { NULL, 0 }, +}; + +static MDFNSetting_EnumList SDriver_List[] = +{ + { "default", -1, "Default", gettext_noop("Default sound driver.") }, + + { "alsa", -1, "ALSA", gettext_noop("A recommended driver, and the default for Linux(if available).") }, + { "oss", -1, "Open Sound System", gettext_noop("A recommended driver, and the default for non-Linux UN*X/POSIX/BSD systems, or anywhere ALSA is unavailable. If the ALSA driver gives you problems, you can try using this one instead.\n\nIf you are using OSSv4 or newer, you should edit \"/usr/lib/oss/conf/osscore.conf\", uncomment the max_intrate= line, and change the value from 100(default) to 1000(or higher if you know what you're doing), and restart OSS. Otherwise, performance will be poor, and the sound buffer size in Mednafen will be orders of magnitude larger than specified.\n\nIf the sound buffer size is still excessively larger than what is specified via the \"sound.buffer_time\" setting, you can try setting \"sound.period_time\" to 2666, and as a last resort, 5333, to work around a design flaw/limitation/choice in the OSS API and OSS implementation.") }, + { "dsound", -1, "DirectSound", gettext_noop("A recommended driver, and the default for Microsoft Windows.") }, + { "sdl", -1, "Simple Directmedia Layer", gettext_noop("This driver is not recommended, but it serves as a backup driver if the others aren't available. Its performance is generally sub-par, requiring higher latency or faster CPUs/SMP for glitch-free playback, except where the OS provides a sound callback API itself, such as with Mac OS X and BeOS.") }, + { "jack", -1, "JACK", gettext_noop("Somewhat experimental driver, unusably buggy until Mednafen 0.8.C. The \"sound.buffer_time\" setting controls the size of the local sound buffer, not the server's sound buffer, and the latency reported during startup is for the local sound buffer only. Please note that video card drivers(in the kernel or X), and hardware-accelerated OpenGL, may interfere with jackd's ability to effectively run with realtime response.") }, + + { NULL, 0 }, +}; + +static MDFNSetting_EnumList Special_List[] = +{ + { "0", -1 }, + { "none", -1, "None/Disabled" }, + { "hq2x", -1, "hq2x" }, + { "hq3x", -1, "hq3x" }, + { "hq4x", -1, "hq4x" }, + { "scale2x",-1, "scale2x" }, + { "scale3x",-1, "scale3x" }, + { "scale4x",-1, "scale4x" }, + + { "2xsai", -1, "2xSaI" }, + { "super2xsai", -1, "Super 2xSaI" }, + { "supereagle", -1, "Super Eagle" }, + { "nn2x", -1, "Nearest-neighbor 2x" }, + { "nn3x", -1, "Nearest-neighbor 3x" }, + { "nn4x", -1, "Nearest-neighbor 4x" }, + { "nny2x", -1, "Nearest-neighbor 2x, y axis only" }, + { "nny3x", -1, "Nearest-neighbor 3x, y axis only" }, + { "nny4x", -1, "Nearest-neighbor 4x, y axis only" }, + { NULL, 0 }, +}; + +static MDFNSetting_EnumList Pixshader_List[] = +{ + { "none", SHADER_NONE, "None/Disabled" }, + { "autoip", SHADER_AUTOIP, "Auto Interpolation", gettext_noop("Will automatically interpolate on each axis if the corresponding effective scaling factor is not an integer.") }, + { "autoipsharper", SHADER_AUTOIPSHARPER, "Sharper Auto Interpolation", gettext_noop("Same as \"autoip\", but when interpolation is done, it is done in a manner that will reduce blurriness if possible.") }, + { "scale2x", SHADER_SCALE2X, "Scale2x" }, + + { "ipsharper", SHADER_IPSHARPER, "Sharper bilinear interpolation." }, + { "ipxnoty", SHADER_IPXNOTY, "Linear interpolation on X axis only." }, + { "ipynotx", SHADER_IPYNOTX, "Linear interpolation on Y axis only." }, + { "ipxnotysharper", SHADER_IPXNOTYSHARPER, "Sharper version of \"ipxnoty\"." }, + { "ipynotxsharper", SHADER_IPYNOTXSHARPER, "Sharper version of \"ipynotx\"." }, + + { NULL, 0 }, +}; + +static std::vector NeoDriverSettings; +static MDFNSetting DriverSettings[] = +{ + { "input.joystick.global_focus", MDFNSF_NOFLAGS, gettext_noop("Update physical joystick(s) internal state in Mednafen even when Mednafen lacks OS focus."), NULL, MDFNST_BOOL, "1" }, + { "input.joystick.axis_threshold", MDFNSF_NOFLAGS, gettext_noop("Analog axis binary press detection threshold."), gettext_noop("Threshold for detecting a digital-like \"button\" press on analog axis, in percent."), MDFNST_FLOAT, "75", "0", "100" }, + { "input.autofirefreq", MDFNSF_NOFLAGS, gettext_noop("Auto-fire frequency."), gettext_noop("Auto-fire frequency = GameSystemFrameRateHz / (value + 1)"), MDFNST_UINT, "3", "0", "1000" }, + { "input.ckdelay", MDFNSF_NOFLAGS, gettext_noop("Dangerous key action delay."), gettext_noop("The length of time, in milliseconds, that a button/key corresponding to a \"dangerous\" command like power, reset, exit, etc. must be pressed before the command is executed."), MDFNST_UINT, "0", "0", "99999" }, + + { "netplay.host", MDFNSF_NOFLAGS, gettext_noop("Server hostname."), NULL, MDFNST_STRING, "netplay.fobby.net" }, + { "netplay.port", MDFNSF_NOFLAGS, gettext_noop("Server port."), NULL, MDFNST_UINT, "4046", "1", "65535" }, + { "netplay.password", MDFNSF_NOFLAGS, gettext_noop("Server password."), gettext_noop("Password to connect to the netplay server."), MDFNST_STRING, "" }, + { "netplay.localplayers", MDFNSF_NOFLAGS, gettext_noop("Local player count."), gettext_noop("Number of local players for network play. This number is advisory to the server, and the server may assign fewer players if the number of players requested is higher than the number of controllers currently available."), MDFNST_UINT, "1", "0", "16" }, + { "netplay.nick", MDFNSF_NOFLAGS, gettext_noop("Nickname."), gettext_noop("Nickname to use for network play chat."), MDFNST_STRING, "" }, + { "netplay.gamekey", MDFNSF_NOFLAGS, gettext_noop("Key to hash with the MD5 hash of the game."), NULL, MDFNST_STRING, "" }, + { "netplay.smallfont", MDFNSF_NOFLAGS, gettext_noop("Use small(tiny!) font for netplay chat console."), NULL, MDFNST_BOOL, "0" }, + + { "video.fs", MDFNSF_NOFLAGS, gettext_noop("Enable fullscreen mode."), NULL, MDFNST_BOOL, "0", }, + { "video.driver", MDFNSF_NOFLAGS, gettext_noop("Select video driver, \"opengl\" or \"sdl\"."), NULL, MDFNST_ENUM, "opengl", NULL, NULL, NULL,NULL, VDriver_List }, + { "video.glvsync", MDFNSF_NOFLAGS, gettext_noop("Attempt to synchronize OpenGL page flips to vertical retrace period."), + gettext_noop("Note: Additionally, if the environment variable \"__GL_SYNC_TO_VBLANK\" does not exist, then it will be created and set to the value specified for this setting. This has the effect of forcibly enabling or disabling vblank synchronization when running under Linux with NVidia's drivers."), + MDFNST_BOOL, "1" }, + + { "video.frameskip", MDFNSF_NOFLAGS, gettext_noop("Enable frameskip during emulation rendering."), + gettext_noop("Disable for rendering code performance testing."), MDFNST_BOOL, "1" }, + + { "video.blit_timesync", MDFNSF_NOFLAGS, gettext_noop("Enable time synchronization(waiting) for frame blitting."), + gettext_noop("Disable to reduce latency, at the cost of potentially increased video \"juddering\", with the maximum reduction in latency being about 1 video frame's time.\nWill work best with emulated systems that are not very computationally expensive to emulate, combined with running on a relatively fast CPU."), + MDFNST_BOOL, "1" }, + + { "ffspeed", MDFNSF_NOFLAGS, gettext_noop("Fast-forwarding speed multiplier."), NULL, MDFNST_FLOAT, "4", "1", "15" }, + { "fftoggle", MDFNSF_NOFLAGS, gettext_noop("Treat the fast-forward button as a toggle."), NULL, MDFNST_BOOL, "0" }, + { "ffnosound", MDFNSF_NOFLAGS, gettext_noop("Silence sound output when fast-forwarding."), NULL, MDFNST_BOOL, "0" }, + + { "sfspeed", MDFNSF_NOFLAGS, gettext_noop("SLOW-forwarding speed multiplier."), NULL, MDFNST_FLOAT, "0.75", "0.25", "1" }, + { "sftoggle", MDFNSF_NOFLAGS, gettext_noop("Treat the SLOW-forward button as a toggle."), NULL, MDFNST_BOOL, "0" }, + + { "nothrottle", MDFNSF_NOFLAGS, gettext_noop("Disable speed throttling when sound is disabled."), NULL, MDFNST_BOOL, "0"}, + { "autosave", MDFNSF_NOFLAGS, gettext_noop("Automatic load/save state on game load/save."), gettext_noop("Automatically save and load save states when a game is closed or loaded, respectively."), MDFNST_BOOL, "0"}, + { "sound.driver", MDFNSF_NOFLAGS, gettext_noop("Select sound driver."), gettext_noop("The following choices are possible, sorted by preference, high to low, when \"default\" driver is used, but dependent on being compiled in."), MDFNST_ENUM, "default", NULL, NULL, NULL, NULL, SDriver_List }, + { "sound.device", MDFNSF_NOFLAGS, gettext_noop("Select sound output device."), gettext_noop("When using ALSA sound output under Linux, the \"sound.device\" setting \"default\" is Mednafen's default, IE \"hw:0\", not ALSA's \"default\". If you want to use ALSA's \"default\", use \"sexyal-literal-default\"."), MDFNST_STRING, "default", NULL, NULL }, + { "sound.volume", MDFNSF_NOFLAGS, gettext_noop("Sound volume level, in percent."), NULL, MDFNST_UINT, "100", "0", "150" }, + { "sound", MDFNSF_NOFLAGS, gettext_noop("Enable sound output."), NULL, MDFNST_BOOL, "1" }, + { "sound.period_time", MDFNSF_NOFLAGS, gettext_noop("Desired period size in microseconds."), gettext_noop("Currently only affects OSS and ALSA output. A value of 0 defers to the default in the driver code in SexyAL.\n\nNote: This is not the \"sound buffer size\" setting, that would be \"sound.buffer_time\"."), MDFNST_UINT, "0", "0", "100000" }, + { "sound.buffer_time", MDFNSF_NOFLAGS, gettext_noop("Desired total buffer size in milliseconds."), NULL, MDFNST_UINT, + #ifdef WIN32 + "52" + #else + "32" + #endif + ,"1", "1000" }, + { "sound.rate", MDFNSF_NOFLAGS, gettext_noop("Specifies the sound playback rate, in sound frames per second(\"Hz\")."), NULL, MDFNST_UINT, "48000", "22050", "1048576"}, + + #ifdef WANT_DEBUGGER + { "debugger.autostepmode", MDFNSF_NOFLAGS, gettext_noop("Automatically go into the debugger's step mode after a game is loaded."), NULL, MDFNST_BOOL, "0" }, + #endif + + { "osd.state_display_time", MDFNSF_NOFLAGS, gettext_noop("The length of time, in milliseconds, to display the save state or the movie selector after selecting a state or movie."), NULL, MDFNST_UINT, "2000", "0", "15000" }, + { "osd.alpha_blend", MDFNSF_NOFLAGS, gettext_noop("Enable alpha blending for OSD elements."), NULL, MDFNST_BOOL, "1" }, +}; + +static void BuildSystemSetting(MDFNSetting *setting, const char *system_name, const char *name, const char *description, const char *description_extra, MDFNSettingType type, + const char *default_value, const char *minimum = NULL, const char *maximum = NULL, + bool (*validate_func)(const char *name, const char *value) = NULL, void (*ChangeNotification)(const char *name) = NULL, + const MDFNSetting_EnumList *enum_list = NULL) +{ + char setting_name[256]; + + memset(setting, 0, sizeof(MDFNSetting)); + + trio_snprintf(setting_name, 256, "%s.%s", system_name, name); + + setting->name = strdup(setting_name); + setting->flags = MDFNSF_COMMON_TEMPLATE; + setting->description = description; + setting->description_extra = description_extra; + setting->type = type; + setting->default_value = default_value; + setting->minimum = minimum; + setting->maximum = maximum; + setting->validate_func = validate_func; + setting->ChangeNotification = ChangeNotification; + setting->enum_list = enum_list; +} + +// TODO: Actual enum values +static const MDFNSetting_EnumList DisFontSize_List[] = +{ + { "xsmall", -1, gettext_noop("4x5") }, + { "small", -1, gettext_noop("5x7") }, + { "medium", -1, gettext_noop("6x13") }, + { "large", -1, gettext_noop("9x18") }, + { NULL, 0 }, +}; + +static const MDFNSetting_EnumList StretchMode_List[] = +{ + { "0", 0, gettext_noop("Disabled") }, + { "off", 0 }, + + { "1", 1 }, + { "full", 1, gettext_noop("Full"), gettext_noop("Full-screen stretch, disregarding aspect ratio.") }, + + { "2", 2 }, + { "aspect", 2, gettext_noop("Aspect Preserve"), gettext_noop("Full-screen stretch as far as the aspect ratio(in this sense, the equivalent xscalefs == yscalefs) can be maintained.") }, + + { "aspect_int", 3, gettext_noop("Aspect Preserve + Integer Scale"), gettext_noop("Full-screen stretch, same as \"aspect\" except that the equivalent xscalefs and yscalefs are rounded down to the nearest integer.") }, + { "aspect_mult2", 4, gettext_noop("Aspect Preserve + Integer Multiple-of-2 Scale"), gettext_noop("Full-screen stretch, same as \"aspect_int\", but rounds down to the nearest multiple of 2.") }, + + { NULL, 0 }, +}; + +static const MDFNSetting_EnumList VideoIP_List[] = +{ + { "0", VIDEOIP_OFF, gettext_noop("Disabled") }, + + { "1", VIDEOIP_BILINEAR, gettext_noop("Bilinear") }, + + // Disabled until a fix can be made for rotation. + { "x", VIDEOIP_LINEAR_X, gettext_noop("Linear (X)"), gettext_noop("Interpolation only on the X axis.") }, + { "y", VIDEOIP_LINEAR_Y, gettext_noop("Linear (Y)"), gettext_noop("Interpolation only on the Y axis.") }, + + { NULL, 0 }, +}; + +void MakeDebugSettings(std::vector &settings) +{ + #ifdef WANT_DEBUGGER + for(unsigned int i = 0; i < MDFNSystems.size(); i++) + { + const DebuggerInfoStruct *dbg = MDFNSystems[i]->Debugger; + MDFNSetting setting; + const char *sysname = MDFNSystems[i]->shortname; + + if(!dbg) + continue; + + BuildSystemSetting(&setting, sysname, "debugger.disfontsize", gettext_noop("Disassembly font size."), gettext_noop("Note: Setting the font size to larger than the default may cause text overlap in the debugger."), MDFNST_ENUM, "small", NULL, NULL, NULL, NULL, DisFontSize_List); + settings.push_back(setting); + + BuildSystemSetting(&setting, sysname, "debugger.memcharenc", gettext_noop("Character encoding for the debugger's memory editor."), NULL, MDFNST_STRING, dbg->DefaultCharEnc); + settings.push_back(setting); + } + #endif +} + +void MakeVideoSettings(std::vector &settings) +{ + for(unsigned int i = 0; i < MDFNSystems.size() + 1; i++) + { + int nominal_width; + int nominal_height; + bool multires; + const char *sysname; + char default_value[256]; + MDFNSetting setting; + const int default_xres = 0, default_yres = 0; + const double default_scalefs = 1.0; + double default_scale; + + if(i == MDFNSystems.size()) + { + nominal_width = 384; + nominal_height = 240; + multires = FALSE; + sysname = "player"; + } + else + { + nominal_width = MDFNSystems[i]->nominal_width; + nominal_height = MDFNSystems[i]->nominal_height; + multires = MDFNSystems[i]->multires; + sysname = (const char *)MDFNSystems[i]->shortname; + } + + if(multires) + default_scale = ceilf(1024 / nominal_width); //zero 07-feb-2012 - changed to ceilf + else + default_scale = ceilf(768 / nominal_width); //zero 07-feb-2012 - changed to ceilf + + if(default_scale * nominal_width > 1024) + default_scale--; + + if(!default_scale) + default_scale = 1; + + trio_snprintf(default_value, 256, "%d", default_xres); + BuildSystemSetting(&setting, sysname, "xres", CSD_xres, CSDE_xres, MDFNST_UINT, strdup(default_value), "0", "65536"); + settings.push_back(setting); + + trio_snprintf(default_value, 256, "%d", default_yres); + BuildSystemSetting(&setting, sysname, "yres", CSD_yres, CSDE_yres, MDFNST_UINT, strdup(default_value), "0", "65536"); + settings.push_back(setting); + + trio_snprintf(default_value, 256, "%f", default_scale); + BuildSystemSetting(&setting, sysname, "xscale", CSD_xscale, NULL, MDFNST_FLOAT, strdup(default_value), "0.01", "256"); + settings.push_back(setting); + BuildSystemSetting(&setting, sysname, "yscale", CSD_yscale, NULL, MDFNST_FLOAT, strdup(default_value), "0.01", "256"); + settings.push_back(setting); + + trio_snprintf(default_value, 256, "%f", default_scalefs); + BuildSystemSetting(&setting, sysname, "xscalefs", CSD_xscalefs, CSDE_xyscalefs, MDFNST_FLOAT, strdup(default_value), "0.01", "256"); + settings.push_back(setting); + BuildSystemSetting(&setting, sysname, "yscalefs", CSD_yscalefs, CSDE_xyscalefs, MDFNST_FLOAT, strdup(default_value), "0.01", "256"); + settings.push_back(setting); + + BuildSystemSetting(&setting, sysname, "scanlines", CSD_scanlines, CSDE_scanlines, MDFNST_UINT, "0", "0", "100"); + settings.push_back(setting); + + BuildSystemSetting(&setting, sysname, "stretch", CSD_stretch, NULL, MDFNST_ENUM, "aspect_mult2", NULL, NULL, NULL, NULL, StretchMode_List); + settings.push_back(setting); + + BuildSystemSetting(&setting, sysname, "videoip", CSD_videoip, NULL, MDFNST_ENUM, multires ? "1" : "0", NULL, NULL, NULL, NULL, VideoIP_List); + settings.push_back(setting); + + BuildSystemSetting(&setting, sysname, "special", CSD_special, CSDE_special, MDFNST_ENUM, "none", NULL, NULL, NULL, NULL, Special_List); + settings.push_back(setting); + + BuildSystemSetting(&setting, sysname, "pixshader", CSD_pixshader, CSDE_pixshader, MDFNST_ENUM, "none", NULL, NULL, NULL, NULL, Pixshader_List); + settings.push_back(setting); + } + +} + +static SDL_Thread *GameThread; +static MDFN_Surface *VTBuffer[2] = { NULL, NULL }; +static MDFN_Rect *VTLineWidths[2] = { NULL, NULL }; + +static int volatile VTBackBuffer = 0; +static SDL_mutex *VTMutex = NULL, *EVMutex = NULL, *GameMutex = NULL; +static SDL_mutex *StdoutMutex = NULL; + +static MDFN_Surface * volatile VTReady; +static MDFN_Rect * volatile VTLWReady; +static MDFN_Rect * volatile VTDRReady; +static MDFN_Rect VTDisplayRects[2]; +static bool sc_blit_timesync; + +void LockGameMutex(bool lock) +{ + if(lock) + SDL_mutexP(GameMutex); + else + SDL_mutexV(GameMutex); +} + +static char *soundrecfn=0; /* File name of sound recording. */ + +static char *qtrecfn = NULL; + +static char *DrBaseDirectory; + +MDFNGI *CurGame=NULL; + +void MDFND_PrintError(const char *s) +{ + if(RemoteOn) + Remote_SendErrorMessage(s); + else + { + if(StdoutMutex) + SDL_mutexP(StdoutMutex); + + puts(s); + fflush(stdout); + +#if 0 + #ifdef WIN32 + MessageBox(0, s, "Mednafen Error", MB_ICONERROR | MB_OK | MB_SETFOREGROUND | MB_TOPMOST); + #endif +#endif + + if(StdoutMutex) + SDL_mutexV(StdoutMutex); + } +} + +void MDFND_Message(const char *s) +{ + if(RemoteOn) + Remote_SendStatusMessage(s); + else + { + if(StdoutMutex) + SDL_mutexP(StdoutMutex); + + fputs(s,stdout); + fflush(stdout); + + if(StdoutMutex) + SDL_mutexV(StdoutMutex); + } +} + +// CreateDirs should make sure errno is intact after calling mkdir() if it fails. +static bool CreateDirs(void) +{ + const char *subs[7] = { "mcs", "mcm", "snaps", "palettes", "sav", "cheats", "firmware" }; + char *tdir; + + if(MDFN_mkdir(DrBaseDirectory, S_IRWXU) == -1 && errno != EEXIST) + { + return(FALSE); + } + + for(unsigned int x = 0; x < sizeof(subs) / sizeof(const char *); x++) + { + tdir = trio_aprintf("%s"PSS"%s",DrBaseDirectory,subs[x]); + if(MDFN_mkdir(tdir, S_IRWXU) == -1 && errno != EEXIST) + { + free(tdir); + return(FALSE); + } + free(tdir); + } + + return(TRUE); +} + +#if defined(HAVE_SIGNAL) || defined(HAVE_SIGACTION) + +static const char *SiginfoString = NULL; +static bool volatile SignalSafeExitWanted = false; +typedef struct +{ + int number; + const char *name; + const char *message; + const char *translated; // Needed since gettext() can potentially deadlock when used in a signal handler. + const bool SafeTryExit; +} SignalInfo; + +static SignalInfo SignalDefs[] = +{ + #ifdef SIGINT + { SIGINT, "SIGINT", gettext_noop("How DARE you interrupt me!\n"), NULL, TRUE }, + #endif + + #ifdef SIGTERM + { SIGTERM, "SIGTERM", gettext_noop("MUST TERMINATE ALL HUMANS\n"), NULL, TRUE }, + #endif + + #ifdef SIGHUP + { SIGHUP, "SIGHUP", gettext_noop("Reach out and hang-up on someone.\n"), NULL, FALSE }, + #endif + + #ifdef SIGSEGV + { SIGSEGV, "SIGSEGV", gettext_noop("Iyeeeeeeeee!!! A segmentation fault has occurred. Have a fluffy day.\n"), NULL, FALSE }, + #endif + + #ifdef SIGPIPE + { SIGPIPE, "SIGPIPE", gettext_noop("The pipe has broken! Better watch out for floods...\n"), NULL, FALSE }, + #endif + + #if defined(SIGBUS) && SIGBUS != SIGSEGV + /* SIGBUS can == SIGSEGV on some platforms */ + { SIGBUS, "SIGBUS", gettext_noop("I told you to be nice to the driver.\n"), NULL, FALSE }, + #endif + + #ifdef SIGFPE + { SIGFPE, "SIGFPE", gettext_noop("Those darn floating points. Ne'er know when they'll bite!\n"), NULL, FALSE }, + #endif + + #ifdef SIGALRM + { SIGALRM, "SIGALRM", gettext_noop("Don't throw your clock at the meowing cats!\n"), NULL, TRUE }, + #endif + + #ifdef SIGABRT + { SIGABRT, "SIGABRT", gettext_noop("Abort, Retry, Ignore, Fail?\n"), NULL, FALSE }, + #endif + + #ifdef SIGUSR1 + { SIGUSR1, "SIGUSR1", gettext_noop("Killing your processes is not nice.\n"), NULL, TRUE }, + #endif + + #ifdef SIGUSR2 + { SIGUSR2, "SIGUSR2", gettext_noop("Killing your processes is not nice.\n"), NULL, TRUE }, + #endif +}; + +static volatile int SignalSTDOUT; + +static void SetSignals(void (*t)(int)) +{ + SignalSTDOUT = fileno(stdout); + + SiginfoString = _("\nSignal has been caught and dealt with: "); + for(unsigned int x = 0; x < sizeof(SignalDefs) / sizeof(SignalInfo); x++) + { + if(!SignalDefs[x].translated) + SignalDefs[x].translated = _(SignalDefs[x].message); + + #ifdef HAVE_SIGACTION + struct sigaction act; + + memset(&act, 0, sizeof(struct sigaction)); + + act.sa_handler = t; + act.sa_flags = SA_RESTART; + + sigaction(SignalDefs[x].number, &act, NULL); + #else + signal(SignalDefs[x].number, t); + #endif + } +} + +static void SignalPutString(const char *string) +{ + size_t count = 0; + + while(string[count]) { count++; } + + write(SignalSTDOUT, string, count); +} + +static void CloseStuff(int signum) +{ + const int save_errno = errno; + const char *name = "unknown"; + const char *translated = NULL; + bool safetryexit = false; + + for(unsigned int x = 0; x < sizeof(SignalDefs) / sizeof(SignalInfo); x++) + { + if(SignalDefs[x].number == signum) + { + name = SignalDefs[x].name; + translated = SignalDefs[x].translated; + safetryexit = SignalDefs[x].SafeTryExit; + break; + } + } + + SignalPutString(SiginfoString); + SignalPutString(name); + SignalPutString("\n"); + SignalPutString(translated); + + if(safetryexit) + { + SignalSafeExitWanted = safetryexit; + errno = save_errno; + return; + } + + _exit(1); +} +#endif + +static ARGPSTRUCT *MDFN_Internal_Args = NULL; + +static int HokeyPokeyFallDown(const char *name, const char *value) +{ + if(!MDFNI_SetSetting(name, value)) + return(0); + return(1); +} + +static void DeleteInternalArgs(void) +{ + if(!MDFN_Internal_Args) return; + ARGPSTRUCT *argptr = MDFN_Internal_Args; + + do + { + free((void*)argptr->name); + argptr++; + } while(argptr->name || argptr->var || argptr->subs); + free(MDFN_Internal_Args); + MDFN_Internal_Args = NULL; +} + +static void MakeMednafenArgsStruct(void) +{ + const std::multimap *settings; + std::multimap ::const_iterator sit; + + settings = MDFNI_GetSettings(); + + MDFN_Internal_Args = (ARGPSTRUCT *)malloc(sizeof(ARGPSTRUCT) * (1 + settings->size())); + + unsigned int x = 0; + + for(sit = settings->begin(); sit != settings->end(); sit++) + { + MDFN_Internal_Args[x].name = strdup(sit->second.name); + MDFN_Internal_Args[x].description = _(sit->second.desc->description); + MDFN_Internal_Args[x].var = NULL; + MDFN_Internal_Args[x].subs = (void *)HokeyPokeyFallDown; + MDFN_Internal_Args[x].substype = SUBSTYPE_FUNCTION; + x++; + } + MDFN_Internal_Args[x].name = NULL; + MDFN_Internal_Args[x].var = NULL; + MDFN_Internal_Args[x].subs = NULL; +} + +static int netconnect = 0; +static char * loadcd = NULL; +static char * force_module_arg = NULL; +static int DoArgs(int argc, char *argv[], char **filename) +{ + int ShowCLHelp = 0; + int DoSetRemote = 0; + + char *dsfn = NULL; + char *dmfn = NULL; + + ARGPSTRUCT MDFNArgs[] = + { + { "help", _("Show help!"), &ShowCLHelp, 0, 0 }, + { "remote", _("Enable remote mode(EXPERIMENTAL AND INCOMPLETE)."), &DoSetRemote, 0, 0 }, + + { "loadcd", _("Load and boot a CD for the specified system."), 0, &loadcd, SUBSTYPE_STRING_ALLOC }, + + { "force_module", _("Force usage of specified emulation module."), 0, &force_module_arg, SUBSTYPE_STRING_ALLOC }, + + { "soundrecord", _("Record sound output to the specified filename in the MS WAV format."), 0,&soundrecfn, SUBSTYPE_STRING_ALLOC }, + { "qtrecord", _("Record video and audio output to the specified filename in the QuickTime format."), 0, &qtrecfn, SUBSTYPE_STRING_ALLOC }, // TODOC: Video recording done without filtering applied. + + { "dump_settings_def", _("Dump settings definition data to specified file."), 0, &dsfn, SUBSTYPE_STRING_ALLOC }, + { "dump_modules_def", _("Dump modules definition data to specified file."), 0, &dmfn, SUBSTYPE_STRING_ALLOC }, + + { 0, NULL, (int *)MDFN_Internal_Args, 0, 0}, + + { "connect", _("Connect to the remote server and start network play."), &netconnect, 0, 0 }, + + { 0, 0, 0, 0 } + }; + + const char *usage_string = _("Usage: %s [OPTION]... [FILE]\n"); + if(argc <= 1) + { + printf(_("No command-line arguments specified.\n\n")); + printf(usage_string, argv[0]); + printf(_("\tPlease refer to the documentation for option parameters and usage.\n\n")); + return(0); + } + else + { + if(!ParseArguments(argc - 1, &argv[1], MDFNArgs, filename)) + return(0); + + if(ShowCLHelp) + { + printf(usage_string, argv[0]); + ShowArgumentsHelp(MDFNArgs, false); + printf("\n"); + printf(_("Each setting(listed in the documentation) can also be passed as an argument by prefixing the name with a hyphen,\nand specifying the value to change the setting to as the next argument.\n\n")); + printf(_("For example:\n\t%s -pce.xres 1680 -pce.yres 1050 -pce.stretch aspect -pce.pixshader autoipsharper \"Hyper Bonk Soldier.pce\"\n\n"), argv[0]); + printf(_("Settings specified in this manner are automatically saved to the configuration file, hence they\ndo not need to be passed to future invocations of the Mednafen executable.\n")); + printf("\n"); + return(0); + } + + if(dsfn) + MDFNI_DumpSettingsDef(dsfn); + + if(dmfn) + MDFNI_DumpModulesDef(dmfn); + + if(dsfn || dmfn) + return(0); + + if(*filename == NULL && loadcd == NULL) + { + puts(_("No game filename specified!")); + return(0); + } + } + return(1); +} + +static int volatile NeedVideoChange = 0; +int GameLoop(void *arg); +int volatile GameThreadRun = 0; +void MDFND_Update(MDFN_Surface *surface, int16 *Buffer, int Count); + +bool sound_active; // true if sound is enabled and initialized + + +static EmuRealSyncher ers; + +static int LoadGame(const char *force_module, const char *path) +{ + MDFNGI *tmp; + + CloseGame(); + + pending_save_state = 0; + pending_save_movie = 0; + pending_snapshot = 0; + + if(loadcd) + { + const char *system = loadcd; + + if(!system) + system = force_module; + + if(!(tmp = MDFNI_LoadCD(system, path))) + return(0); + } + else + { + if(!(tmp=MDFNI_LoadGame(force_module, path))) + return 0; + } + CurGame = tmp; + InitGameInput(tmp); + + RefreshThrottleFPS(1); + + SDL_mutexP(VTMutex); + NeedVideoChange = -1; + SDL_mutexV(VTMutex); + + if(SDL_ThreadID() != MainThreadID) + while(NeedVideoChange) + { + SDL_Delay(1); + } + sound_active = 0; + + sc_blit_timesync = MDFN_GetSettingB("video.blit_timesync"); + + if(MDFN_GetSettingB("sound")) + sound_active = InitSound(tmp); + + if(MDFN_GetSettingB("autosave")) + MDFNI_LoadState(NULL, "mcq"); + + //zero 07-feb-2012 - no netplay + //if(netconnect) + // MDFND_NetworkConnect(); + + ers.SetEmuClock(CurGame->MasterClock >> 32); + + GameThreadRun = 1; + GameThread = SDL_CreateThread(GameLoop, NULL); + + ffnosound = MDFN_GetSettingB("ffnosound"); + + + if(qtrecfn) + { + // MDFNI_StartAVRecord() needs to be called after MDFNI_Load(Game/CD) + if(!MDFNI_StartAVRecord(qtrecfn, GetSoundRate())) + { + free(qtrecfn); + qtrecfn = NULL; + + return(0); + } + } + + if(soundrecfn) + { + if(!MDFNI_StartWAVRecord(soundrecfn, GetSoundRate())) + { + free(soundrecfn); + soundrecfn = NULL; + + return(0); + } + } + + return 1; +} + +/* Closes a game and frees memory. */ +int CloseGame(void) +{ + if(!CurGame) return(0); + + GameThreadRun = 0; + + SDL_WaitThread(GameThread, NULL); + + if(qtrecfn) // Needs to be before MDFNI_Closegame() for now + MDFNI_StopAVRecord(); + + if(soundrecfn) + MDFNI_StopWAVRecord(); + + if(MDFN_GetSettingB("autosave")) + MDFNI_SaveState(NULL, "mcq", NULL, NULL, NULL); + + MDFND_NetworkClose(); + + MDFNI_CloseGame(); + + KillGameInput(); + KillSound(); + + CurGame = NULL; + + return(1); +} + +static void GameThread_HandleEvents(void); +static int volatile NeedExitNow = 0; +double CurGameSpeed = 1; + +void MainRequestExit(void) +{ + NeedExitNow = 1; +} + +static bool InFrameAdvance = 0; +static bool NeedFrameAdvance = 0; + +void DoRunNormal(void) +{ + InFrameAdvance = 0; +} + +void DoFrameAdvance(void) +{ + InFrameAdvance = 1; + NeedFrameAdvance = 1; +} + +static int GameLoopPaused = 0; + +void DebuggerFudge(void) +{ + LockGameMutex(0); + + int MeowCowHowFlown = VTBackBuffer; + + // FIXME. + if(!VTDisplayRects[VTBackBuffer].h) + VTDisplayRects[VTBackBuffer].h = 10; + if(!VTDisplayRects[VTBackBuffer].w) + VTDisplayRects[VTBackBuffer].w = 10; + + MDFND_Update((MDFN_Surface *)VTBuffer[VTBackBuffer], NULL, 0); + VTBackBuffer = MeowCowHowFlown; + + if(sound_active) + WriteSoundSilence(10); + else + SDL_Delay(10); + + LockGameMutex(1); +} + +int64 Time64(void) +{ + static bool cgt_fail_warning = 0; + + #if HAVE_CLOCK_GETTIME && ( _POSIX_MONOTONIC_CLOCK > 0 || defined(CLOCK_MONOTONIC)) + struct timespec tp; + + if(clock_gettime(CLOCK_MONOTONIC, &tp) == -1) + { + if(!cgt_fail_warning) + printf("clock_gettime() failed: %s\n", strerror(errno)); + cgt_fail_warning = 1; + } + else + return((int64)tp.tv_sec * 1000000 + tp.tv_nsec / 1000); + + #else + #pragma message "clock_gettime() with CLOCK_MONOTONIC not available" //zero 07-feb-2012 + #endif + + + #if HAVE_GETTIMEOFDAY + // Warning: gettimeofday() is not guaranteed to be monotonic!! + struct timeval tv; + + if(gettimeofday(&tv, NULL) == -1) + { + puts("gettimeofday() error"); + return(0); + } + + return((int64)tv.tv_sec * 1000000 + tv.tv_usec); + #else + #pragma message "gettimeofday() not available!!!" //zero 07-feb-2012 + #endif + + //zero 07-feb-2012 - critical fix for msvc mednafen build to be useful +#ifdef _MSC_VER + return SDL_GetTicks()*1000; +#endif + + // Yeaaah, this isn't going to work so well. + return((int64)time(NULL) * 1000000); +} + +int GameLoop(void *arg) +{ + while(GameThreadRun) + { + int16 *sound; + int32 ssize; + int fskip; + + /* If we requested a new video mode, wait until it's set before calling the emulation code again. + */ + while(NeedVideoChange) + { + if(!GameThreadRun) return(1); // Might happen if video initialization failed + SDL_Delay(1); + } + do + { + if(InFrameAdvance && !NeedFrameAdvance) + { + SDL_Delay(10); + } + } while(InFrameAdvance && !NeedFrameAdvance); + + //zero 07-feb-2012 - no netplay + //if(MDFNDnetplay && !(NoWaiting & 0x2)) // TODO: Hacky, clean up. + // ers.SetETtoRT(); + + fskip = ers.NeedFrameSkip(); + + if(!MDFN_GetSettingB("video.frameskip")) + fskip = 0; + + if(pending_snapshot || pending_save_state || pending_save_movie || NeedFrameAdvance) + fskip = 0; + + NeedFrameAdvance = 0; + + if(NoWaiting) + fskip = 1; + + VTLineWidths[VTBackBuffer][0].w = ~0; + + int ThisBackBuffer = VTBackBuffer; + + LockGameMutex(1); + { + EmulateSpecStruct espec; + memset(&espec, 0, sizeof(EmulateSpecStruct)); + + espec.surface = (MDFN_Surface *)VTBuffer[VTBackBuffer]; + espec.LineWidths = (MDFN_Rect *)VTLineWidths[VTBackBuffer]; + espec.skip = fskip; + espec.soundmultiplier = CurGameSpeed; + espec.NeedRewind = DNeedRewind; + + espec.SoundRate = GetSoundRate(); + espec.SoundBuf = GetEmuModSoundBuffer(&espec.SoundBufMaxSize); + espec.SoundVolume = (double)MDFN_GetSettingUI("sound.volume") / 100; + + int64 before_time = Time64(); + int64 after_time; + + static double average_time = 0; + + MDFNI_Emulate(&espec); + + after_time = Time64(); + + average_time += ((after_time - before_time) - average_time) * 0.10; + + assert(espec.MasterCycles); + ers.AddEmuTime((espec.MasterCycles - espec.MasterCyclesALMS) / CurGameSpeed); + + //printf("%lld %f\n", (long long)(after_time - before_time), average_time); + + VTDisplayRects[VTBackBuffer] = espec.DisplayRect; + + sound = espec.SoundBuf + (espec.SoundBufSizeALMS * CurGame->soundchan); + ssize = espec.SoundBufSize - espec.SoundBufSizeALMS; + } + LockGameMutex(0); + FPS_IncVirtual(); + if(!fskip) + FPS_IncDrawn(); + + do + { + VTBackBuffer = ThisBackBuffer; + MDFND_Update(fskip ? NULL : (MDFN_Surface *)VTBuffer[ThisBackBuffer], sound, ssize); + if((InFrameAdvance && !NeedFrameAdvance) || GameLoopPaused) + { + if(ssize) + for(int x = 0; x < CurGame->soundchan * ssize; x++) + sound[x] = 0; + } + } while(((InFrameAdvance && !NeedFrameAdvance) || GameLoopPaused) && GameThreadRun); + } + return(1); +} + +char *GetBaseDirectory(void) +{ + //zero 07-feb-2012 - not acceptable behaviour + //respect PWD for emulation + return "."; + + //char *ol; + //char *ret; + + //ol = getenv("MEDNAFEN_HOME"); + //if(ol != NULL && ol[0] != 0) + //{ + // ret = strdup(ol); + // return(ret); + //} + + //ol = getenv("HOME"); + + //if(ol) + //{ + // ret=(char *)malloc(strlen(ol)+1+strlen("/.mednafen")); + // strcpy(ret,ol); + // strcat(ret,"/.mednafen"); + // return(ret); + //} + + //#if defined(HAVE_GETUID) && defined(HAVE_GETPWUID) + //{ + // struct passwd *psw; + + // psw = getpwuid(getuid()); + + // if(psw != NULL && psw->pw_dir[0] != 0 && strcmp(psw->pw_dir, "/dev/null")) + // { + // ret = (char *)malloc(strlen(psw->pw_dir) + 1 + strlen("/.mednafen")); + // strcpy(ret, psw->pw_dir); + // strcat(ret, "/.mednafen"); + // return(ret); + // } + //} + //#endif + + //#ifdef WIN32 + //{ + // char *sa; + + // ret=(char *)malloc(MAX_PATH+1); + // GetModuleFileName(NULL,ret,MAX_PATH+1); + + // sa=strrchr(ret,'\\'); + // if(sa) + // *sa = 0; + // return(ret); + //} + //#endif + + //ret = (char *)malloc(1); + //ret[0] = 0; + //return(ret); +} + +static const int gtevents_size = 2048; // Must be a power of 2. +static volatile SDL_Event gtevents[gtevents_size]; +static volatile int gte_read = 0; +static volatile int gte_write = 0; + +/* This function may also be called by the main thread if a game is not loaded. */ +static void GameThread_HandleEvents(void) +{ + SDL_Event gtevents_temp[gtevents_size]; + unsigned int numevents = 0; + + SDL_mutexP(EVMutex); + while(gte_read != gte_write) + { + memcpy(>events_temp[numevents], (void *)>events[gte_read], sizeof(SDL_Event)); + + numevents++; + gte_read = (gte_read + 1) & (gtevents_size - 1); + } + SDL_mutexV(EVMutex); + + for(unsigned int i = 0; i < numevents; i++) + { + SDL_Event *event = >events_temp[i]; + + switch(event->type) + { + case SDL_USEREVENT: + switch(event->user.code) + { + case CEVT_SET_INPUT_FOCUS: + MDFNDHaveFocus = (bool)((char*)event->user.data1 - (char*)0); + //printf("%u\n", MDFNDHaveFocus); + break; + } + break; + } + + + Input_Event(event); + //NetplayEventHook_GT(event); //zero 07-feb-2012 - no netplay + } + SDL_mutexV(EVMutex); +} + +void PauseGameLoop(bool p) +{ + GameLoopPaused = p; +} + + +void SendCEvent(unsigned int code, void *data1, void *data2) +{ + SDL_Event evt; + evt.user.type = SDL_USEREVENT; + evt.user.code = code; + evt.user.data1 = data1; + evt.user.data2 = data2; + SDL_PushEvent(&evt); +} + +void SendCEvent_to_GT(unsigned int code, void *data1, void *data2) +{ + SDL_Event evt; + evt.user.type = SDL_USEREVENT; + evt.user.code = code; + evt.user.data1 = data1; + evt.user.data2 = data2; + + SDL_mutexP(EVMutex); + memcpy((void *)>events[gte_write], &evt, sizeof(SDL_Event)); + gte_write = (gte_write + 1) & (gtevents_size - 1); + SDL_mutexV(EVMutex); +} + +void SDL_MDFN_ShowCursor(int toggle) +{ + int *toog = (int *)malloc(sizeof(int)); + *toog = toggle; + + SDL_Event evt; + evt.user.type = SDL_USEREVENT; + evt.user.code = CEVT_SHOWCURSOR; + evt.user.data1 = toog; + SDL_PushEvent(&evt); + +} + +void GT_ToggleFS(void) +{ + SDL_mutexP(VTMutex); + NeedVideoChange = 1; + SDL_mutexV(VTMutex); + + if(SDL_ThreadID() != MainThreadID) + while(NeedVideoChange) + { + SDL_Delay(1); + } +} + +void GT_ReinitVideo(void) +{ + SDL_mutexP(VTMutex); + NeedVideoChange = -1; + SDL_mutexV(VTMutex); + + if(SDL_ThreadID() != MainThreadID) + { + while(NeedVideoChange) + { + SDL_Delay(1); + } + } +} + +static bool krepeat = 0; +void PumpWrap(void) +{ + SDL_Event event; + SDL_Event gtevents_temp[gtevents_size]; + int numevents = 0; + + bool NITI; + + //zero 07-feb-2012 - no netplay + //NITI = Netplay_IsTextInput(); + NITI = false; + + if(Debugger_IsActive() || NITI || IsConsoleCheatConfigActive() || Help_IsActive()) + { + if(!krepeat) + SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); + krepeat = 1; + } + else + { + if(krepeat) + SDL_EnableKeyRepeat(0, 0); + krepeat = 0; + } + + #if defined(HAVE_SIGNAL) || defined(HAVE_SIGACTION) + if(SignalSafeExitWanted) + NeedExitNow = true; + #endif + + while(SDL_PollEvent(&event)) + { + if(Debugger_IsActive()) + Debugger_Event(&event); + else + if(IsConsoleCheatConfigActive()) + CheatEventHook(&event); + + //NetplayEventHook(&event); //zero 07-feb-2012 - no netplay + + /* Handle the event, and THEN hand it over to the GUI. Order is important due to global variable mayhem(CEVT_TOGGLEFS. */ + switch(event.type) + { + case SDL_ACTIVEEVENT: + if(event.active.state & SDL_APPINPUTFOCUS) + { + SendCEvent_to_GT(CEVT_SET_INPUT_FOCUS, (char*)0 + (bool)event.active.gain, NULL); + } + break; + + case SDL_SYSWMEVENT: break; + //case SDL_VIDEORESIZE: //if(VideoResize(event.resize.w, event.resize.h)) + // NeedVideoChange = -1; + // break; + + case SDL_VIDEOEXPOSE: break; + case SDL_QUIT: NeedExitNow = 1;break; + case SDL_USEREVENT: + switch(event.user.code) + { + case CEVT_SET_STATE_STATUS: MT_SetStateStatus((StateStatusStruct *)event.user.data1); break; + case CEVT_SET_MOVIE_STATUS: MT_SetMovieStatus((StateStatusStruct *)event.user.data1); break; + case CEVT_WANT_EXIT: + //if(!Netplay_TryTextExit()) //zero 07-feb-2012 - no netplay + { + SDL_Event evt; + evt.quit.type = SDL_QUIT; + SDL_PushEvent(&evt); + } + break; + case CEVT_SET_GRAB_INPUT: + SDL_WM_GrabInput(*(int *)event.user.data1 ? SDL_GRAB_ON : SDL_GRAB_OFF); + free(event.user.data1); + break; + //case CEVT_TOGGLEFS: NeedVideoChange = 1; break; + //case CEVT_VIDEOSYNC: NeedVideoChange = -1; break; + case CEVT_SHOWCURSOR: SDL_ShowCursor(*(int *)event.user.data1); free(event.user.data1); break; + case CEVT_DISP_MESSAGE: VideoShowMessage((UTF8*)event.user.data1); break; + default: + if(numevents < gtevents_size) + { + memcpy(>events_temp[numevents], &event, sizeof(SDL_Event)); + numevents++; + } + break; + } + break; + default: + if(numevents < gtevents_size) + { + memcpy(>events_temp[numevents], &event, sizeof(SDL_Event)); + numevents++; + } + break; + } + } + + SDL_mutexP(EVMutex); + for(int i = 0; i < numevents; i++) + { + memcpy((void *)>events[gte_write], >events_temp[i], sizeof(SDL_Event)); + gte_write = (gte_write + 1) & (gtevents_size - 1); + } + SDL_mutexV(EVMutex); + + if(!CurGame) + GameThread_HandleEvents(); +} + +bool MT_FromRemote_SoundSync(void) +{ + bool ret = TRUE; + + GameThreadRun = 0; + SDL_WaitThread(GameThread, NULL); + + KillSound(); + sound_active = 0; + + if(MDFN_GetSettingB("sound")) + { + sound_active = InitSound(CurGame); + if(!sound_active) + ret = FALSE; + } + GameThreadRun = 1; + GameThread = SDL_CreateThread(GameLoop, NULL); + + return(ret); +} + +bool MT_FromRemote_VideoSync(void) +{ + KillVideo(); + + //memset(VTBuffer[0], 0, CurGame->pitch * CurGame->fb_height); + //memset(VTBuffer[1], 0, CurGame->pitch * CurGame->fb_height); + + if(!InitVideo(CurGame)) + return(0); + return(1); +} + +void RefreshThrottleFPS(double multiplier) +{ + CurGameSpeed = multiplier; +} + +void PrintCompilerVersion(void) +{ + #if defined(__GNUC__) + MDFN_printf(_("Compiled with gcc %s\n"), __VERSION__); + #endif +} + +void PrintSDLVersion(void) +{ + const SDL_version *sver = SDL_Linked_Version(); + + MDFN_printf(_("Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n"), SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL, sver->major, sver->minor, sver->patch); +} + +#ifdef HAVE_LIBSNDFILE + #include +#endif + +void PrintLIBSNDFILEVersion(void) +{ + #ifdef HAVE_LIBSNDFILE + MDFN_printf(_("Running with %s\n"), sf_version_string()); + #endif +} + +void PrintZLIBVersion(void) +{ + #ifdef ZLIB_VERSION + MDFN_printf(_("Compiled against zlib %s, running with zlib %s\n"), ZLIB_VERSION, zlibVersion()); + #endif +} + +void PrintLIBCDIOVersion(void) +{ + #ifdef HAVE_LIBCDIO + #if LIBCDIO_VERSION_NUM < 83 + const char *cdio_version_string = "(unknown)"; + #endif + + MDFN_printf(_("Compiled against libcdio %s, running with libcdio %s\n"), CDIO_VERSION, cdio_version_string); + #endif +} + +int sdlhaveogl = 0; + +//#include + +#if 0//#ifdef WIN32 +char *GetFileDialog(void) +{ + OPENFILENAME ofn; + char returned_fn[2048]; + std::string filter; + bool first_extension = true; + + filter = std::string("Recognized files"); + filter.push_back(0); + + for(unsigned int i = 0; i < MDFNSystems.size(); i++) + { + if(MDFNSystems[i]->FileExtensions) + { + const FileExtensionSpecStruct *fesc = MDFNSystems[i]->FileExtensions; + + while(fesc->extension && fesc->description) + { + if(!first_extension) + filter.push_back(';'); + + filter.push_back('*'); + filter += std::string(fesc->extension); + + first_extension = false; + fesc++; + } + } + } + + filter.push_back(0); + filter.push_back(0); + + //fwrite(filter.data(), 1, filter.size(), stdout); + + memset(&ofn, 0, sizeof(ofn)); + + ofn.lStructSize = sizeof(ofn); + ofn.lpstrTitle = "Mednafen Open File"; + ofn.lpstrFilter = filter.data(); + + ofn.nMaxFile = sizeof(returned_fn); + ofn.lpstrFile = returned_fn; + + ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; + + if(GetOpenFileName(&ofn)) + return(strdup(returned_fn)); + + return(NULL); +} +#endif + + +void _killprocess(){ ExitProcess(0); } //zero 07-feb-2012 - dont let sdl crash when closing the console window +int main(int argc, char *argv[]) +{ + atexit(&_killprocess); //zero 07-feb-2012 - dont let sdl crash when closing the console window + + //struct sched_param sp; + + //sp.sched_priority = 25; + + //if(sched_setscheduler(getpid(), SCHED_RR, &sp)) + //{ + // printf("%m\n"); + // return(-1); + //} + + std::vector ExternalSystems; + int ret; + char *needie = NULL; + + MDFNDHaveFocus = false; + + DrBaseDirectory=GetBaseDirectory(); + + MDFNI_printf(_("Starting Mednafen %s\n"), MEDNAFEN_VERSION); + MDFN_indent(1); + + MDFN_printf(_("Build information:\n")); + MDFN_indent(2); + PrintCompilerVersion(); + PrintZLIBVersion(); + PrintSDLVersion(); + PrintLIBSNDFILEVersion(); + PrintLIBCDIOVersion(); + MDFN_indent(-2); + + MDFN_printf(_("Base directory: %s\n"), DrBaseDirectory); + + #ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + + #ifdef WIN32 + bindtextdomain(PACKAGE, DrBaseDirectory); + #else + bindtextdomain(PACKAGE, LOCALEDIR); + #endif + + bind_textdomain_codeset(PACKAGE, "UTF-8"); + textdomain(PACKAGE); + #endif + + if(SDL_Init(SDL_INIT_VIDEO)) /* SDL_INIT_VIDEO Needed for (joystick config) event processing? */ + { + fprintf(stderr, "Could not initialize SDL: %s\n", SDL_GetError()); + MDFNI_Kill(); + return(-1); + } + SDL_JoystickEventState(SDL_IGNORE); + + if(!(StdoutMutex = SDL_CreateMutex())) + { + MDFN_PrintError(_("Could not create mutex: %s\n"), SDL_GetError()); + MDFNI_Kill(); + return(-1); + } + + MainThreadID = SDL_ThreadID(); + + // Look for external emulation modules here. + + if(!MDFNI_InitializeModules(ExternalSystems)) + return(-1); + + if(argc >= 2 && (!strcasecmp(argv[1], "-remote") || !strcasecmp(argv[1], "--remote"))) + RemoteOn = TRUE; + + if(RemoteOn) + InitSTDIOInterface(); + + for(unsigned int x = 0; x < sizeof(DriverSettings) / sizeof(MDFNSetting); x++) + NeoDriverSettings.push_back(DriverSettings[x]); + + MakeDebugSettings(NeoDriverSettings); + MakeVideoSettings(NeoDriverSettings); + MakeInputSettings(NeoDriverSettings); + + if(!(ret=MDFNI_Initialize(DrBaseDirectory, NeoDriverSettings))) + return(-1); + + SDL_EnableUNICODE(1); + + #if defined(HAVE_SIGNAL) || defined(HAVE_SIGACTION) + SetSignals(CloseStuff); + #endif + + if(!CreateDirs()) + { + ErrnoHolder ene(errno); // TODO: Maybe we should have CreateDirs() return this instead? + + MDFN_PrintError(_("Error creating directories: %s\n"), ene.StrError()); + MDFNI_Kill(); + return(-1); + } + + MakeMednafenArgsStruct(); + + #if 0 //def WIN32 + if(argc > 1 || !(needie = GetFileDialog())) + #endif + if(!DoArgs(argc,argv, &needie)) + { + MDFNI_Kill(); + DeleteInternalArgs(); + KillInputSettings(); + return(-1); + } + + if(!getenv("__GL_SYNC_TO_VBLANK")) + { + if(MDFN_GetSettingB("video.glvsync")) + { + #if HAVE_PUTENV + static char gl_pe_string[] = "__GL_SYNC_TO_VBLANK=1"; + putenv(gl_pe_string); + #elif HAVE_SETENV + setenv("__GL_SYNC_TO_VBLANK", "1", 0); + #endif + } + else + { + #if HAVE_PUTENV + static char gl_pe_string[] = "__GL_SYNC_TO_VBLANK=0"; + putenv(gl_pe_string); + #elif HAVE_SETENV + setenv("__GL_SYNC_TO_VBLANK", "0", 0); + #endif + } + } + + /* Now the fun begins! */ + /* Run the video and event pumping in the main thread, and create a + secondary thread to run the game in(and do sound output, since we use + separate sound code which should be thread safe(?)). + */ + + //InitVideo(NULL); + + VTMutex = SDL_CreateMutex(); + EVMutex = SDL_CreateMutex(); + GameMutex = SDL_CreateMutex(); + + VTReady = NULL; + VTDRReady = NULL; + VTLWReady = NULL; + + NeedVideoChange = -1; + + joy_manager = new JoystickManager(); + joy_manager->SetAnalogThreshold(MDFN_GetSettingF("analogthreshold") / 100); + InitCommandInput(); + + NeedExitNow = 0; + + #if 0 + { + long start_ticks = SDL_GetTicks(); + + for(int i = 0; i < 65536; i++) + MDFN_GetSettingB("gg.forcemono"); + + printf("%ld\n", SDL_GetTicks() - start_ticks); + } + #endif + + + if(LoadGame(force_module_arg, needie)) + { + uint32 pitch32 = CurGame->fb_width; + //uint32 pitch32 = round_up_pow2(CurGame->fb_width); + MDFN_PixelFormat nf(MDFN_COLORSPACE_RGB, 0, 8, 16, 24); + + VTBuffer[0] = new MDFN_Surface(NULL, CurGame->fb_width, CurGame->fb_height, pitch32, nf); + VTBuffer[1] = new MDFN_Surface(NULL, CurGame->fb_width, CurGame->fb_height, pitch32, nf); + VTLineWidths[0] = (MDFN_Rect *)calloc(CurGame->fb_height, sizeof(MDFN_Rect)); + VTLineWidths[1] = (MDFN_Rect *)calloc(CurGame->fb_height, sizeof(MDFN_Rect)); + NeedVideoChange = -1; + FPS_Init(); + + #ifdef WANT_DEBUGGER + //MemDebugger_Init(); //zero 07-feb-2012 - no memdebugger now + if(MDFN_GetSettingB("debugger.autostepmode")) + { + Debugger_Toggle(); + Debugger_ForceSteppingMode(); + } + #endif + } + else + NeedExitNow = 1; + + while(!NeedExitNow) + { + bool DidVideoChange = false; + + if(RemoteOn) + CheckForSTDIOMessages(); + + SDL_mutexP(VTMutex); /* Lock mutex */ + + if(NeedVideoChange) + { + KillVideo(); + + for(int i = 0; i < 2; i++) + ((MDFN_Surface *)VTBuffer[i])->Fill(0, 0, 0, 0); + + if(NeedVideoChange == -1) + { + if(!InitVideo(CurGame)) + { + NeedExitNow = 1; + break; + } + } + else + { + MDFNI_SetSettingB("video.fs", !MDFN_GetSettingB("video.fs")); + + if(!InitVideo(CurGame)) + { + MDFNI_SetSettingB("video.fs", !MDFN_GetSettingB("video.fs")); + InitVideo(CurGame); + } + } + + DidVideoChange = true; + NeedVideoChange = 0; + } + + if(VTReady) + { + //static int last_time; + //int curtime; + + BlitScreen(VTReady, VTDRReady, VTLWReady); + + //curtime = SDL_GetTicks(); + //printf("%d\n", curtime - last_time); + //last_time = curtime; + + VTReady = NULL; + } + + PumpWrap(); + if(DidVideoChange) // Do it after PumpWrap() in case there are stale SDL_ActiveEvent in the SDL event queue. + SendCEvent_to_GT(CEVT_SET_INPUT_FOCUS, (char*)0 + (bool)(SDL_GetAppState() & SDL_APPINPUTFOCUS), NULL); + + SDL_mutexV(VTMutex); /* Unlock mutex */ + SDL_Delay(1); + } + + CloseGame(); + + SDL_DestroyMutex(VTMutex); + SDL_DestroyMutex(EVMutex); + + for(int x = 0; x < 2; x++) + { + if(VTBuffer[x]) + { + delete VTBuffer[x]; + VTBuffer[x] = NULL; + } + + if(VTLineWidths[x]) + { + free(VTLineWidths[x]); + VTLineWidths[x] = NULL; + } + } + + #if defined(HAVE_SIGNAL) || defined(HAVE_SIGACTION) + SetSignals(SIG_IGN); + #endif + + KillCommandInput(); + + MDFNI_Kill(); + + delete joy_manager; + joy_manager = NULL; + + KillVideo(); + + SDL_Quit(); + + DeleteInternalArgs(); + KillInputSettings(); + + return(0); +} + + + +static uint32 last_btime = 0; +static void UpdateSoundSync(int16 *Buffer, int Count) +{ + if(Count) + { + if(ffnosound && CurGameSpeed != 1) + { + for(int x = 0; x < Count * CurGame->soundchan; x++) + Buffer[x] = 0; + } + int32 max = GetWriteSound(); + if(Count > max) + { + if(NoWaiting) + Count = max; + } + if(Count >= (max * 0.95)) + { + ers.SetETtoRT(); + } + + WriteSound(Buffer, Count); + + //zero 07-feb-2012 - no netplay + if(/*MDFNDnetplay && */GetWriteSound() >= Count * 1.00) // Cheap code to fix sound buffer underruns due to accumulation of timer error during netplay. + { + int16 zbuf[128 * 2]; + for(int x = 0; x < 128 * 2; x++) zbuf[x] = 0; + int t = GetWriteSound(); + t /= CurGame->soundchan; + while(t > 0) + { + WriteSound(zbuf, (t > 128 ? 128 : t)); + t -= 128; + } + ers.SetETtoRT(); + } + } + else + { + bool nothrottle = MDFN_GetSettingB("nothrottle"); + + //zero 07-feb-2012 - no netplay + if(!NoWaiting && !nothrottle && GameThreadRun/* && !MDFNDnetplay*/) + ers.Sync(); + } +} + +void MDFND_MidSync(const EmulateSpecStruct *espec) +{ + ers.AddEmuTime((espec->MasterCycles - espec->MasterCyclesALMS) / CurGameSpeed, false); + + UpdateSoundSync(espec->SoundBuf + (espec->SoundBufSizeALMS * CurGame->soundchan), espec->SoundBufSize - espec->SoundBufSizeALMS); + + // TODO(once we can ensure it's safe): GameThread_HandleEvents(); + MDFND_UpdateInput(true, false); +} + +static void PassBlit(MDFN_Surface *surface) +{ + /* If it's been >= 100ms since the last blit, assume that the blit + thread is being time-slice starved, and let it run. This is especially necessary + for fast-forwarding to respond well(since keyboard updates are + handled in the main thread) on slower systems or when using a higher fast-forwarding speed ratio. + */ + if(surface) + { + if((last_btime + 100) < SDL_GetTicks()) + { + //puts("Eep"); + while(VTReady && GameThreadRun) SDL_Delay(1); + } + + if(!VTReady) + { + VTLWReady = VTLineWidths[VTBackBuffer]; + VTDRReady = &VTDisplayRects[VTBackBuffer]; + VTReady = VTBuffer[VTBackBuffer]; + + VTBackBuffer ^= 1; + last_btime = SDL_GetTicks(); + FPS_IncBlitted(); + } + } + else if(IsConsoleCheatConfigActive() && !VTReady) + { + VTBackBuffer ^= 1; + VTLWReady = VTLineWidths[VTBackBuffer]; + VTReady = VTBuffer[VTBackBuffer]; + VTBackBuffer ^= 1; + } +} + + +void MDFND_Update(MDFN_Surface *surface, int16 *Buffer, int Count) +{ + if(false == sc_blit_timesync) + { + //puts("ABBYNORMAL"); + PassBlit(surface); + } + + UpdateSoundSync(Buffer, Count); + + GameThread_HandleEvents(); + MDFND_UpdateInput(); + + if(surface) + { + if(pending_snapshot) + MDFNI_SaveSnapshot(surface, (MDFN_Rect *)&VTDisplayRects[VTBackBuffer], (MDFN_Rect *)VTLineWidths[VTBackBuffer]); + + if(pending_save_state || pending_save_movie) + LockGameMutex(1); + + if(pending_save_state) + MDFNI_SaveState(NULL, NULL, surface, (MDFN_Rect *)&VTDisplayRects[VTBackBuffer], (MDFN_Rect *)VTLineWidths[VTBackBuffer]); + if(pending_save_movie) + MDFNI_SaveMovie(NULL, surface, (MDFN_Rect *)&VTDisplayRects[VTBackBuffer], (MDFN_Rect *)VTLineWidths[VTBackBuffer]); + + if(pending_save_state || pending_save_movie) + LockGameMutex(0); + + pending_save_movie = pending_snapshot = pending_save_state = 0; + } + + if(true == sc_blit_timesync) + { + //puts("NORMAL"); + PassBlit(surface); + } +} + +void MDFND_DispMessage(UTF8 *text) +{ + SendCEvent(CEVT_DISP_MESSAGE, text, NULL); +} + +void MDFND_SetStateStatus(StateStatusStruct *status) +{ + SendCEvent(CEVT_SET_STATE_STATUS, status, NULL); +} + +void MDFND_SetMovieStatus(StateStatusStruct *status) +{ + SendCEvent(CEVT_SET_MOVIE_STATUS, status, NULL); +} + +uint32 MDFND_GetTime(void) +{ + return(SDL_GetTicks()); +} + +void MDFND_Sleep(uint32 ms) +{ + SDL_Delay(ms); +} + +struct MDFN_Thread +{ + SDL_Thread *sdl_thread; +}; + +struct MDFN_Mutex +{ + SDL_mutex *sdl_mutex; +}; + +MDFN_Thread *MDFND_CreateThread(int (*fn)(void *), void *data) +{ + MDFN_Thread *thread; + + if(!(thread = (MDFN_Thread *)calloc(1, sizeof(MDFN_Thread)))) + return(NULL); + + if(!(thread->sdl_thread = SDL_CreateThread(fn, data))) + { + free(thread); + return(NULL); + } + + return(thread); +} + +void MDFND_WaitThread(MDFN_Thread *thread, int *status) +{ + SDL_WaitThread(thread->sdl_thread, status); + thread->sdl_thread = NULL; // To make accidental use-after-free() more apparent. + free(thread); +} + +void MDFND_KillThread(MDFN_Thread *thread) +{ + SDL_KillThread(thread->sdl_thread); + thread->sdl_thread = NULL; + free(thread); +} + +MDFN_Mutex *MDFND_CreateMutex(void) +{ + MDFN_Mutex *mutex; + + if(!(mutex = (MDFN_Mutex *)calloc(1, sizeof(MDFN_Mutex)))) + return(NULL); + + if(!(mutex->sdl_mutex = SDL_CreateMutex())) + { + free(mutex); + return(NULL); + } + + return(mutex); +} + +void MDFND_DestroyMutex(MDFN_Mutex *mutex) +{ + SDL_DestroyMutex(mutex->sdl_mutex); + free(mutex); +} + +int MDFND_LockMutex(MDFN_Mutex *mutex) +{ + return SDL_mutexP(mutex->sdl_mutex); +} + +int MDFND_UnlockMutex(MDFN_Mutex *mutex) +{ + return SDL_mutexV(mutex->sdl_mutex); +} + diff --git a/libmednahawk/src/drivers/main.h b/libmednahawk/src/drivers/main.h new file mode 100644 index 0000000000..d8aff263d3 --- /dev/null +++ b/libmednahawk/src/drivers/main.h @@ -0,0 +1,88 @@ +#ifndef _DRIVERS_MAIN_H +#define _DRIVERS_MAIN_H + +#include "../driver.h" +#include "../mednafen.h" +#include "../settings.h" +#include "config.h" +#include "args.h" + +#include +#include + +#include "../gettext.h" + +#ifndef _ +#define _(String) gettext(String) +#endif + +#define CEVT_TOGGLEGUI 1 +#define CEVT_TOGGLEFS 2 +#define CEVT_VIDEOSYNC 5 +#define CEVT_SHOWCURSOR 0x0c +#define CEVT_CHEATTOGGLEVIEW 0x10 + + +#define CEVT_DISP_MESSAGE 0x11 + +#define CEVT_SET_GRAB_INPUT 0x20 + +#define CEVT_SET_STATE_STATUS 0x40 +#define CEVT_SET_MOVIE_STATUS 0x41 + +#define CEVT_WANT_EXIT 0x80 // Emulator exit or GUI exit or bust! + + +#define CEVT_NP_TEXT_TO_SERVER 0x100 +#define CEVT_NP_DISPLAY_TEXT 0x101 +#define CEVT_NP_TOGGLE_VIEWABLE 0x102 +#define CEVT_NP_TOGGLE_TT 0x103 +#define CEVT_NP_CONNECT 0x104 +#define CEVT_NP_SETNICK 0x105 +#define CEVT_NP_PING 0x106 +#define CEVT_NP_INTEGRITY 0x107 +#define CEVT_NP_DISCONNECT 0x108 +#define CEVT_NP_SWAP 0x109 +#define CEVT_NP_LIST 0x10A +#define CEVT_NP_DUPE 0x10B +#define CEVT_NP_DROP 0x10C +#define CEVT_NP_TAKE 0x10D + +#define CEVT_SET_INPUT_FOCUS 0x1000 // Main thread to game thread. + +void SendCEvent(unsigned int code, void *data1, void *data2); + +void PauseGameLoop(bool p); + +void SDL_MDFN_ShowCursor(int toggle); + +extern int NoWaiting; +extern bool MDFNDHaveFocus; + +extern MDFNGI *CurGame; +int CloseGame(void); + +void RefreshThrottleFPS(double); +void PumpWrap(void); +void MainRequestExit(void); + +extern bool pending_save_state, pending_snapshot, pending_save_movie; + +void DoRunNormal(void); +void DoFrameAdvance(void); + + +void LockGameMutex(bool lock); +void DebuggerFudge(void); + +extern volatile int GameThreadRun; + +extern int sdlhaveogl; + +bool MT_FromRemote_VideoSync(void); +bool MT_FromRemote_SoundSync(void); + +void GT_ToggleFS(void); +void GT_ReinitVideo(void); + +#endif diff --git a/libmednahawk/src/drivers/memdebugger.cpp b/libmednahawk/src/drivers/memdebugger.cpp new file mode 100644 index 0000000000..6e61d8a41a --- /dev/null +++ b/libmednahawk/src/drivers/memdebugger.cpp @@ -0,0 +1,1108 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "memdebugger.h" +#include "debugger.h" +#include "prompt.h" + +#include +#include +#include + +//#include //mbg 07-feb-2012 + +// Local cache variable set after game load to reduce dereferences and make the code nicer. +// (the game structure's debugger info struct doesn't change during emulation, so this is safe) +static const std::vector *AddressSpaces; +static const AddressSpaceType *ASpace; // Current address space + +static bool IsActive = 0; +static uint32 *ASpacePos = NULL; +static uint64 *SizeCache = NULL; +static uint64 *GoGoPowerDD = NULL; + +static int CurASpace; // Current address space number + +static bool LowNib = FALSE; +static bool InEditMode = FALSE; +static bool InTextArea = FALSE; // Right side text vs left side numbers, selected via TAB +static bool InMarkMode = FALSE; +static uint32 MarkModeBegin; + +static std::string BSS_String, RS_String, TS_String; +static char *error_string; +static uint32 error_time; + +typedef enum +{ + None = 0, + Goto, + GotoDD, + ByteStringSearch, + RelSearch, + TextSearch, + DumpMem, + LoadMem, + SetCharset, +} PromptType; + +//static iconv_t ict = (iconv_t)-1; +//static iconv_t ict_to_utf8 = (iconv_t)-1; + +//static iconv_t ict_utf16_to_game = (iconv_t)-1; + +static char *GameCode = NULL; +// +//static bool ICV_Init(const char *newcode) +//{ +// if((size_t)ict != (size_t)-1) +// { +// iconv_close(ict); +// ict = (iconv_t)-1; +// } +// +// if((size_t)ict_to_utf8 != (size_t)-1) +// { +// iconv_close(ict_to_utf8); +// ict_to_utf8 = (iconv_t)-1; +// } +// +// if((size_t)ict_utf16_to_game != (size_t)-1) +// { +// iconv_close(ict_utf16_to_game); +// ict_utf16_to_game = (iconv_t)-1; +// } +// +// ict = iconv_open(newcode, "UTF-8"); +// if((size_t)ict == (size_t)-1) +// { +// error_string = trio_aprintf("iconv_open() error: %m", errno); +// error_time = SDL_GetTicks(); +// return(0); +// } +// +// ict_to_utf8 = iconv_open("UTF-8", newcode); +// if((size_t)ict_to_utf8 == (size_t)-1) +// { +// error_string = trio_aprintf("iconv_open() error: %m", errno); +// error_time = SDL_GetTicks(); +// return(0); +// } +// +// ict_utf16_to_game = iconv_open(newcode, "UTF-16"); +// if((size_t)ict_utf16_to_game == (size_t)-1) +// { +// error_string = trio_aprintf("iconv_open() error: %m", errno); +// error_time = SDL_GetTicks(); +// return(0); +// } +// +// +// if(GameCode) +// free(GameCode); +// +// GameCode = strdup(newcode); +// return(1); +//} + +static PromptType InPrompt = None; + +class MemDebuggerPrompt : public HappyPrompt +{ + public: + + MemDebuggerPrompt(const std::string &ptext, const std::string &zestring) : HappyPrompt(ptext, zestring) + { + + } + ~MemDebuggerPrompt() + { + + } + + private: + + bool DoBSSearch(uint32 byte_count, uint8 *thebytes); + bool DoRSearch(uint32 byte_count, uint8 *the_bytes); + uint8 *TextToBS(const char *text, size_t *TheCount); + void TheEnd(const std::string &pstring); +}; + +bool MemDebuggerPrompt::DoBSSearch(uint32 byte_count, uint8 *thebytes) +{ + const uint64 zemod = SizeCache[CurASpace]; + const uint32 start_a = ASpacePos[CurASpace] % zemod; + uint32 a = start_a; + bool found = FALSE; + uint8 *bbuffer = (uint8 *)calloc(1, byte_count); + + LockGameMutex(1); + do + { + ASpace->GetAddressSpaceBytes(ASpace->name, a, byte_count, bbuffer); + if(!memcmp(bbuffer, thebytes, byte_count)) + { + ASpacePos[CurASpace] = a; + found = TRUE; + break; + } + a = (a + 1) % zemod; + } while(a != start_a); + LockGameMutex(0); + + free(bbuffer); + return(found); +} + +bool MemDebuggerPrompt::DoRSearch(uint32 byte_count, uint8 *the_bytes) +{ + const uint64 zemod = SizeCache[CurASpace]; + const uint32 start_a = (ASpacePos[CurASpace] - 1) % zemod; + uint32 a = start_a; + bool found = FALSE; + uint8 *bbuffer = (uint8 *)calloc(1, byte_count); + + LockGameMutex(1); + do + { + ASpace->GetAddressSpaceBytes(ASpace->name, a, byte_count + 1, bbuffer); + bool match = TRUE; + + for(uint32 i = 1; i <= byte_count; i++) + { + if(((bbuffer[i] - bbuffer[i - 1]) & 0xFF) != the_bytes[i - 1]) + { + match = FALSE; + break; + } + } + if(match) + { + found = TRUE; + ASpacePos[CurASpace] = (a + 1) % zemod; + break; + } + a = (a + 1) % zemod; + } while(a != start_a); + LockGameMutex(0); + free(bbuffer); + + return(found); +} + +uint8 *MemDebuggerPrompt::TextToBS(const char *text, size_t *TheCount) +{ + size_t byte_count; + uint8 *thebytes = NULL; + size_t text_len = strlen(text); + size_t nib_count; + + thebytes = (uint8 *)calloc(1, text_len / 2); + + nib_count = 0; + for(size_t x = 0; x < text_len; x++) + { + int c = tolower(text[x]); + if(c >= '0' && c <= '9') + c -= '0'; + else if(c >= 'a' && c <= 'f') + { + c = c - 'a' + 0xa; + } + else if(c == ' ') + { + continue; + } + else + { + error_string = trio_aprintf("Invalid character '%c' in bytestring.", c); + error_time = SDL_GetTicks(); + InPrompt = None; + free(thebytes); + return(NULL); + } + thebytes[nib_count >> 1] |= c << ((nib_count & 1) ? 0 : 4); + nib_count++; + } + + if(nib_count & 1) + { + error_string = trio_aprintf("Invalid number of characters in bytestring."); + error_time = SDL_GetTicks(); + InPrompt = None; + free(thebytes); + return(NULL);; + } + + byte_count = nib_count >> 1; + *TheCount = byte_count; + return(thebytes); +} + +void MemDebuggerPrompt::TheEnd(const std::string &pstring) +{ + if(error_string) + { + free(error_string); + error_string = NULL; + } + if(InPrompt == Goto || InPrompt == GotoDD) + { + unsigned long NewAddie; + + if(trio_sscanf(pstring.c_str(), "%08lx", &NewAddie) == 1) + { + ASpacePos[CurASpace] = NewAddie; + LowNib = FALSE; + if(InPrompt == GotoDD) + GoGoPowerDD[CurASpace] = NewAddie; + } + } + else if(InPrompt == SetCharset) + { + if(ICV_Init(pstring.c_str())) + { + LockGameMutex(1); + MDFNI_SetSetting(std::string(std::string(CurGame->shortname) + "." + std::string("debugger.memcharenc")).c_str(), pstring.c_str()); + LockGameMutex(0); + } + } + else if(InPrompt == DumpMem) + { + uint32 A1, A2, tmpsize; + char fname[256]; + bool acceptable = FALSE; + + + if(trio_sscanf(pstring.c_str(), "%08x %08x %255[^\r\n]", &A1, &A2, fname) == 3) + acceptable = TRUE; + else if(trio_sscanf(pstring.c_str(), "%08x +%08x %255[^\r\n]", &A1, &tmpsize, fname) == 3) + { + acceptable = TRUE; + A2 = A1 + tmpsize - 1; + } + if(acceptable) + { + FILE *fp = fopen(fname, "wb"); + if(fp) + { + uint8 write_buffer[256]; + uint64 a = A1; + //printf("%08x %08x\n", A1, A2); + + LockGameMutex(1); + while(a <= A2) + { + size_t to_write; + to_write = A2 - a + 1; + if(to_write > 256) to_write = 256; + + ASpace->GetAddressSpaceBytes(ASpace->name, a, to_write, write_buffer); + + if(fwrite(write_buffer, 1, to_write, fp) != to_write) + { + error_string = trio_aprintf("File write error: %m", errno); + error_time = SDL_GetTicks(); + break; + } + a += to_write; + } + LockGameMutex(0); + fclose(fp); + } + else + { + error_string = trio_aprintf("File open error: %m", errno); + error_time = SDL_GetTicks(); + } + } + } + else if(InPrompt == LoadMem) + { + uint32 A1, A2, tmpsize; + char fname[256]; + bool acceptable = FALSE; + + + if(trio_sscanf(pstring.c_str(), "%08x %08x %255[^\r\n]", &A1, &A2, fname) == 3) + acceptable = TRUE; + else if(trio_sscanf(pstring.c_str(), "%08x +%08x %255[^\r\n]", &A1, &tmpsize, fname) == 3) + { + acceptable = TRUE; + A2 = A1 + tmpsize - 1; + } + if(acceptable) + { + FILE *fp = fopen(fname, "rb"); + if(fp) + { + LockGameMutex(1); + + uint8 read_buffer[256]; + uint64 a = A1; + + while(a <= A2) + { + size_t to_read; + size_t read_len; + + to_read = A2 - a + 1; + if(to_read > 256) to_read = 256; + + read_len = fread(read_buffer, 1, to_read, fp); + + if(read_len > 0) + ASpace->PutAddressSpaceBytes(ASpace->name, a, read_len, 1, TRUE, read_buffer); + + a += read_len; + + if(read_len != to_read) + { + if(ferror(fp)) + { + error_string = trio_aprintf("File read error: %m", errno); + error_time = SDL_GetTicks(); + } + else if(feof(fp)) + { + error_string = trio_aprintf("Warning: unexpected EOF(short by %08x byte(s))", A2 - a + 1); + error_time = SDL_GetTicks(); + } + break; + } + } + LockGameMutex(0); + fclose(fp); + } + else + { + error_string = trio_aprintf("File open error: %m", errno); + error_time = SDL_GetTicks(); + } + } + } + else if(InPrompt == TextSearch) + { + uint8 *thebytes; + uint32 bcount; + + TS_String = pstring; + + char *inbuf, *outbuf; + char *utf8_string; + size_t ibl, obl, obl_start; + size_t result; + + utf8_string = strdup(pstring.c_str()); + + ibl = strlen(utf8_string); + obl_start = obl = (ibl + 1) * 8; // Hehe, ugly maximum estimation! + thebytes = (uint8 *)calloc(1, obl_start); + + inbuf = utf8_string; + outbuf = (char*)thebytes; + + result = iconv(ict, (ICONV_CONST char **)&inbuf, &ibl, &outbuf, &obl); + + if(result == (size_t)-1) + { + error_string = trio_aprintf("iconv() error: %m", errno); + error_time = SDL_GetTicks(); + InPrompt = None; + free(utf8_string); + free(thebytes); + return; + } + bcount = obl_start - obl; + free(utf8_string); + + if(!DoBSSearch(bcount, thebytes)) + { + error_string = trio_aprintf("String not found."); + error_time = SDL_GetTicks(); + InPrompt = None; + } + free(thebytes); + } + else if(InPrompt == ByteStringSearch) + { + size_t byte_count; + uint8 *the_bytes; + BSS_String = pstring; + + if(!(the_bytes = TextToBS(pstring.c_str(), &byte_count))) + return; + + if(!DoBSSearch(byte_count, the_bytes)) + { + free(the_bytes); + error_string = trio_aprintf("Bytestring \"%s\" not found.", pstring.c_str()); + error_time = SDL_GetTicks(); + InPrompt = None; + return; + } + free(the_bytes); + } + else if(InPrompt == RelSearch) + { + size_t byte_count; + uint8 *the_bytes; + RS_String = pstring; + + if(!(the_bytes = TextToBS(pstring.c_str(), &byte_count))) + return; + + if(!DoRSearch(byte_count, the_bytes)) + { + free(the_bytes); + error_string = trio_aprintf("Bytestring \"%s\" not found.", pstring.c_str()); + error_time = SDL_GetTicks(); + InPrompt = None; + return; + } + free(the_bytes); + } + InPrompt = None; +} + +static MemDebuggerPrompt *myprompt = NULL; + +// Call this function from either thread. +void MemDebugger_SetActive(bool newia) +{ + if(CurGame->Debugger) + { + LockGameMutex(1); + + IsActive = newia; + if(!newia) + { + InEditMode = FALSE; + LowNib = FALSE; + } + LockGameMutex(0); + } +} + +#define MK_COLOR_A(r,g,b,a) (pf_cache.MakeColor(r, g, b, a)) + +// Call this function from the main thread +void MemDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect) +{ + if(!IsActive) return; + + const MDFN_PixelFormat pf_cache = surface->format; + uint32 *pixels = surface->pixels; + uint32 pitch32 = surface->pitchinpix; + const uint64 zemod = SizeCache[CurASpace]; + + LockGameMutex(1); + + DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)ASpace->long_name, MK_COLOR_A(0x20, 0xFF, 0x20, 0xFF), 1, 1); + pixels += 10 * pitch32; + + uint32 A; + uint32 Ameow; // A meow for a cat + + if(ASpacePos[CurASpace] < 128) + A = (SizeCache[CurASpace] - 128 + ASpacePos[CurASpace]) % SizeCache[CurASpace]; + else + A = ASpacePos[CurASpace] - 128; + + Ameow = A &~ 0xF; + + int numrows = zemod / 16; + + if(numrows > 16) + numrows = 16; + else if(numrows < 4) + numrows = 4; + + for(int y = 0; y < numrows; y++) + { + uint8 byte_buffer[16]; + char abuf[32]; + + Ameow %= zemod; + + ASpace->GetAddressSpaceBytes(ASpace->name, Ameow, 16, byte_buffer); + + if(zemod <= (1 << 16)) + trio_snprintf(abuf, 32, "%04X:", Ameow); + else if(zemod <= (1 << 24)) + trio_snprintf(abuf, 32, "%06X:", Ameow); + else + trio_snprintf(abuf, 32, "%08X:", Ameow); + + uint32 alen; + uint32 addr_color = MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF); + + if(Ameow == (ASpacePos[CurASpace] & ~0xF)) + addr_color = MK_COLOR_A(0x80, 0xB0, 0xFF, 0xFF); + + alen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)abuf, addr_color, 0, 1); + alen += 3; + + for(int x = 0; x < 16; x++) + { + uint32 bcolor = MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF); + uint32 acolor = MK_COLOR_A(0xA0, 0xA0, 0xA0, 0xFF); + + char quickbuf[16]; + uint32 test_match_pos; + uint8 ascii_str[2]; + + ascii_str[1] = 0; + ascii_str[0] = byte_buffer[x]; + + if(ascii_str[0] < 0x20 || ascii_str[0] >= 128) + ascii_str[0] = '.'; + + trio_snprintf(quickbuf, 16, "%02X", byte_buffer[x]); + + test_match_pos = ASpacePos[CurASpace] % zemod; + + if(InMarkMode) + { + if(MarkModeBegin < test_match_pos && Ameow < test_match_pos && Ameow >= MarkModeBegin) + { + if(InTextArea) + { + acolor = MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF); + bcolor = MK_COLOR_A(0xFF, 0x80, 0x80, 0xFF); + } + else + { + acolor = MK_COLOR_A(0xFF, 0x80, 0x80, 0xFF); + bcolor = MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF); + } + } + } + if(Ameow == test_match_pos) + { + if(InEditMode) + if(SDL_GetTicks() & 0x80) + { + int pix_offset = alen; + + if(InTextArea) + pix_offset += 16 * 12 + x * 5; + else + pix_offset += (LowNib ? 5 : 0) + x * 12; + + DrawTextTrans(pixels + pix_offset, surface->pitchinpix << 2, rect->w, (UTF8*)"â–‰", MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + } + if(InTextArea) + { + acolor = MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF); + bcolor = MK_COLOR_A(0xFF, 0x80, 0x80, 0xFF); + } + else + { + acolor = MK_COLOR_A(0xFF, 0x80, 0x80, 0xFF); + bcolor = MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF); + } + } + + // hex display + DrawTextTrans(pixels + alen + x * 12, surface->pitchinpix << 2, rect->w, (UTF8*)quickbuf, bcolor, 0, 1); + + // ASCII display + DrawTextTrans(pixels + alen + 16 * 12 + x * 5, surface->pitchinpix << 2, rect->w, (UTF8 *)ascii_str, acolor, 0, 1); + Ameow++; + } + pixels += 9 * pitch32; + } + + { + char cpstr[32]; + uint32 curpos = ASpacePos[CurASpace]; + uint8 zebytes[4]; + uint32 tmpval; + + curpos %= zemod; + + ASpace->GetAddressSpaceBytes(ASpace->name, curpos, 4, zebytes); + + pixels += 8 + 5 * pitch32; + + if(zemod <= (1 << 16)) + trio_snprintf(cpstr, 32, "%04X", curpos); + else if(zemod <= (1 << 24)) + trio_snprintf(cpstr, 32, "%06X", curpos); + else + trio_snprintf(cpstr, 32, "%08X", curpos); + + uint32 cpplen; + uint32 cplen; + + cpplen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)"Cursor position: ", MK_COLOR_A(0xa0, 0xa0, 0xFF, 0xFF), 0, 1); + cplen = DrawTextTrans(pixels + cpplen, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr , MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + if(GoGoPowerDD[CurASpace]) + { + char ggddstr[32]; + + if(zemod <= (1 << 16)) + trio_snprintf(ggddstr, 32, "%04X", curpos - GoGoPowerDD[CurASpace]); + else if(zemod <= (1 << 24)) + trio_snprintf(ggddstr, 32, "%06X", curpos - GoGoPowerDD[CurASpace]); + else + trio_snprintf(ggddstr, 32, "%08X", curpos - GoGoPowerDD[CurASpace]); + + DrawTextTrans(pixels + cpplen + cplen + 8, surface->pitchinpix << 2, rect->w, (UTF8*)ggddstr, MK_COLOR_A(0xFF, 0x80, 0x80, 0xFF), 0, 1); + } + pixels += 5 + 10 * pitch32; + + tmpval = zebytes[0]; + trio_snprintf(cpstr, 32, "%02x(%u, %d)", tmpval, (uint8)tmpval, (int8)tmpval); + cpplen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)"1-byte value: ", MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, 1); + DrawTextTrans(pixels + cpplen, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr , MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + + pixels += 10 * pitch32; + + + if(ASpace->IsWave && SizeCache[CurASpace] <= 128 && ASpace->WaveBits <= 6) + { + const int32 wf_size = SizeCache[CurASpace]; + uint8 waveform[wf_size]; + const int32 pcm_max = (1 << ASpace->WaveBits) - 1; + + DrawTextTrans(pixels - 5, surface->pitchinpix << 2, rect->w, (UTF8 *)"Full waveform:", MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, 1); + pixels += 9 * pitch32; + MDFN_DrawRectangleFill(pixels, surface->pitchinpix, 0, 0, MK_COLOR_A(0xA0,0xA0,0xA0,0xFF), MK_COLOR_A(0,0,0,0xFF), 2 + wf_size * 2 + 2, 2 + (pcm_max + 1) + 2); + + ASpace->GetAddressSpaceBytes(ASpace->name, 0, wf_size, waveform); + + for(int i = 0; i < wf_size; i++) + { + int32 delta; + int32 current; + int32 previous; + + current = waveform[i]; + previous = waveform[(i + wf_size - 1) % wf_size]; + + delta = current - previous; + + for(int y = previous; y != current; y += delta / abs(delta)) + pixels[2 + i * 2 + 0 + (2 + (pcm_max - y)) * surface->pitchinpix] = MK_COLOR_A(0x00,0xA0,0x00,0xFF); + + pixels[2 + i * 2 + 0 + (2 + (pcm_max - current)) * surface->pitchinpix] = MK_COLOR_A(0x00,0xA0,0x00,0xFF); + pixels[2 + i * 2 + 1 + (2 + (pcm_max - current)) * surface->pitchinpix] = MK_COLOR_A(0x00,0xA0,0x00,0xFF); + } + } + else + { + tmpval = zebytes[0] | (zebytes[1] << 8); + trio_snprintf(cpstr, 32, "%04x(%u, %d)", tmpval, (uint16)tmpval, (int16)tmpval); + cpplen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)"2-byte value(LSB): ", MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, 1); + DrawTextTrans(pixels + cpplen, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr , MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + + pixels += 10 * pitch32; + tmpval = zebytes[0] | (zebytes[1] << 8) | (zebytes[2] << 16) | (zebytes[3] << 24); + trio_snprintf(cpstr, 32, "%08x(%u, %d)", tmpval, (uint32)tmpval, (int32)tmpval); + cpplen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)"4-byte value(LSB): ", MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, 1); + DrawTextTrans(pixels + cpplen, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr , MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + + pixels += 10 * pitch32; + tmpval = zebytes[1] | (zebytes[0] << 8); + trio_snprintf(cpstr, 32, "%04x(%u, %d)", tmpval, (uint16)tmpval, (int16)tmpval); + cpplen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)"2-byte value(MSB): ", MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, 1); + DrawTextTrans(pixels + cpplen, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr , MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + + pixels += 10 * pitch32; + tmpval = zebytes[3] | (zebytes[2] << 8) | (zebytes[1] << 16) | (zebytes[0] << 24); + trio_snprintf(cpstr, 32, "%08x(%u, %d)", tmpval, (uint32)tmpval, (int32)tmpval); + cpplen = DrawTextTrans(pixels, surface->pitchinpix << 2, rect->w, (UTF8*)"4-byte value(MSB): ", MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, 1); + DrawTextTrans(pixels + cpplen, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr , MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, 1); + + trio_snprintf(cpstr, 32, "%s text: ", GameCode); + cpplen = DrawTextTrans(pixels + 10 * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)cpstr, MK_COLOR_A(0xA0, 0xA0, 0xFF, 0xFF), 0, MDFN_FONT_5x7); + + { + char rawbuf[64]; + char textbuf[256]; + + ASpace->GetAddressSpaceBytes(ASpace->name, curpos, 64, (uint8*)rawbuf); + + size_t ibl, obl, obl_start; + char *inbuf, *outbuf; + ibl = 64; + obl_start = obl = 255; // Hehe, ugly maximum estimation! + inbuf = rawbuf; + outbuf = textbuf; + + iconv(ict_to_utf8, (ICONV_CONST char **)&inbuf, &ibl, &outbuf, &obl); + textbuf[obl_start - obl] = 0; + + DrawTextTrans(pixels + 8 * pitch32 + cpplen, surface->pitchinpix << 2, rect->w - cpplen - 13, (UTF8*)textbuf, MK_COLOR_A(0xFF, 0xFF, 0xFF, 0xFF), 0, MDFN_FONT_9x18_18x18); + } + + } + + } + LockGameMutex(0); + + if(InPrompt) + myprompt->Draw(surface, rect); + else if(myprompt) + { + delete myprompt; + myprompt = NULL; + } + + if(error_string) + { + if(SDL_GetTicks() >= (error_time + 4000)) + { + free(error_string); + error_string = NULL; + } + else + { + DrawTextTrans((uint32*)surface->pixels + (rect->h - 7) * pitch32, surface->pitchinpix << 2, rect->w, (UTF8*)error_string, MK_COLOR_A(0xFF, 0x00, 0x00, 0xFF), 1, 1); + } + } +} + +static void ChangePos(int64 delta) +{ + int64 prevpos = ASpacePos[CurASpace]; + int64 newpos; + + newpos = prevpos + delta; + + while(newpos < 0) + newpos += SizeCache[CurASpace]; + + newpos %= SizeCache[CurASpace]; + ASpacePos[CurASpace] = newpos; + + LowNib = FALSE; +} + +static void DoCrazy(void) +{ + LockGameMutex(1); + + uint32 start = ASpacePos[CurASpace]; + uint32 A = ASpacePos[CurASpace]; + + for(;;) + { + uint8 zebyte; + + ASpace->GetAddressSpaceBytes(ASpace->name, A, 1, &zebyte); + + // Simple control codes + if(zebyte < 0x20) + { + switch(zebyte) + { + default: printf("UNKNOWN GAHGAHGAH: %02x\n", zebyte); + return; + + case 0x00: goto GetOut; // Crazy escape + case 0x05: goto GetOut; // Pause+close text box + + // Print numbers, 3 arguments + case 0x06: + case 0x07: + case 0x08: A += 3; break; + + // Transfer control, 4 arguments + case 0x12: A += 4; break; + + case 0x0C: break; // Clear text box + case 0x0D: break; // New line + case 0x0F: goto GetOut; // Pause+close text box + + case 0x10: break; // Prompt for button to continue + case 0x11: goto GetOut; // Binary selection magic + case 0x14: A += 1; break; // Set draw speed, 1 argument + case 0x17: A += 1; break; // Delay, 1 argument + } + } + else if(zebyte <= 0x7F) // ASCII + { + + } + else if(zebyte < 0xEB) // 2-byte SJIS + { + A += 1; + } + else + { + printf("UNKNOWN GAHGAHGAH: %02x\n", zebyte); + return; + } + A++; + } + + GetOut: + + ASpacePos[CurASpace] = A; + printf("%08x\n", A); + FILE *fp = fopen("markers.txt", "ab"); + fprintf(fp, "%08x %08x\n", start, ASpacePos[CurASpace]); + fclose(fp); + + LockGameMutex(0); +} + +// Call this from the main thread +int MemDebugger_Event(const SDL_Event *event) +{ + if(!InPrompt && myprompt) + { + delete myprompt; + myprompt = NULL; + } + unsigned int keysym = event->key.keysym.sym; + + switch(event->type) + { + case SDL_KEYDOWN: + if(event->key.keysym.mod & KMOD_ALT) + break; + + if(InPrompt) + { + myprompt->Event(event); + } + else if(InEditMode && InTextArea && keysym != SDLK_TAB && keysym != SDLK_INSERT && keysym != SDLK_UP && keysym != SDLK_DOWN && keysym != SDLK_LEFT + && keysym != SDLK_RIGHT && (event->key.keysym.unicode >= 0x20)) + { + uint8 to_write[16]; + int to_write_len; + + size_t ibl, obl, obl_start; + char *inbuf, *outbuf; + + ibl = 2; + obl_start = obl = 16; + + inbuf = (char *)&event->key.keysym.unicode; + outbuf = (char*)to_write; + + size_t result = iconv(ict_utf16_to_game, (ICONV_CONST char **)&inbuf, &ibl, &outbuf, &obl); + if(result != (size_t)-1) + { + to_write_len = 16 - obl; + + LockGameMutex(1); + ASpace->PutAddressSpaceBytes(ASpace->name, ASpacePos[CurASpace], to_write_len, 1, TRUE, to_write); + LockGameMutex(0); + + LowNib = 0; + ChangePos(to_write_len); + } + } + else if(InEditMode && ((event->key.keysym.sym >= SDLK_0 && event->key.keysym.sym <= SDLK_9) || + (event->key.keysym.sym >= SDLK_a && event->key.keysym.sym <= SDLK_f))) + { + uint8 tc = 0; + uint8 meowbyte = 0; + + if(event->key.keysym.sym >= SDLK_0 && event->key.keysym.sym <= SDLK_9) + tc = 0x0 + event->key.keysym.sym - SDLK_0; + else if(event->key.keysym.sym >= SDLK_a && event->key.keysym.sym <= SDLK_f) + tc = 0xA + event->key.keysym.sym - SDLK_a; + + LockGameMutex(1); + ASpace->GetAddressSpaceBytes(ASpace->name, ASpacePos[CurASpace], 1, &meowbyte); + meowbyte &= 0xF << ((LowNib) * 4); + meowbyte |= tc << ((!LowNib) * 4); + ASpace->PutAddressSpaceBytes(ASpace->name, ASpacePos[CurASpace], 1, 1, TRUE, &meowbyte); + LockGameMutex(0); + + LowNib = !LowNib; + if(!LowNib) + ChangePos(1); + } + else switch(event->key.keysym.sym) + { + default: break; + + case SDLK_MINUS: Debugger_ModOpacity(-8); + break; + case SDLK_EQUALS: Debugger_ModOpacity(8); + break; + + case SDLK_TAB: + InTextArea = !InTextArea; + LowNib = FALSE; + break; + + case SDLK_d: + InPrompt = DumpMem; + myprompt = new MemDebuggerPrompt("Dump Memory(start end filename)", ""); + break; + case SDLK_l: + InPrompt = LoadMem; + myprompt = new MemDebuggerPrompt("Load Memory(start end filename)", ""); + break; + case SDLK_s: + if(SizeCache[CurASpace] > (1 << 24)) + { + error_string = trio_aprintf("Address space is too large to search!"); + error_time = SDL_GetTicks(); + } + else + { + InPrompt = ByteStringSearch; + myprompt = new MemDebuggerPrompt("Byte String Search", BSS_String); + } + break; + case SDLK_r: + if(SizeCache[CurASpace] > (1 << 24)) + { + error_string = trio_aprintf("Address space is too large to search!"); + error_time = SDL_GetTicks(); + } + else + { + InPrompt = RelSearch; + myprompt = new MemDebuggerPrompt("Byte String Relative/Delta Search", RS_String); + } + break; + + case SDLK_c: + InPrompt = SetCharset; + myprompt = new MemDebuggerPrompt("Charset", GameCode); + break; + + case SDLK_t: + if(ASpace->TotalBits > 24) + { + error_string = trio_aprintf("Address space is too large to search!"); + error_time = SDL_GetTicks(); + } + else + { + InPrompt = TextSearch; + myprompt = new MemDebuggerPrompt("Text Search", TS_String); + } + break; + + case SDLK_g: + if(event->key.keysym.mod & KMOD_SHIFT) + { + InPrompt = GotoDD; + myprompt = new MemDebuggerPrompt("Goto Address(DD)", ""); + } + else + { + InPrompt = Goto; + myprompt = new MemDebuggerPrompt("Goto Address", ""); + } + break; + + case SDLK_INSERT: + InEditMode = !InEditMode; + LowNib = FALSE; + break; + + case SDLK_END: ASpacePos[CurASpace] = (SizeCache[CurASpace] - 128) % SizeCache[CurASpace]; + LowNib = FALSE; + break; + + case SDLK_HOME: ASpacePos[CurASpace] = 0; + LowNib = FALSE; + break; + + + case SDLK_PAGEUP: ChangePos(-16 * 16); break; + case SDLK_PAGEDOWN: ChangePos(16 * 16); break; + case SDLK_UP: ChangePos(-16); break; + case SDLK_DOWN: ChangePos(16); break; + case SDLK_LEFT: ChangePos(-1); break; + case SDLK_RIGHT: ChangePos(1); break; + + case SDLK_COMMA: + if(CurASpace) + CurASpace--; + else + CurASpace = AddressSpaces->size() - 1; + + ASpace = &(*AddressSpaces)[CurASpace]; + + LowNib = FALSE; + break; + case SDLK_PERIOD: + CurASpace = (CurASpace + 1) % AddressSpaces->size(); + ASpace = &(*AddressSpaces)[CurASpace]; + + LowNib = FALSE; + break; + + case SDLK_b: //InMarkMode = !InMarkMode; + //if(InMarkMode) + // MarkModeBegin = ASpacePos[CurASpace]; + DoCrazy(); + break; + + case SDLK_e: if(InMarkMode) + { + FILE *fp = fopen("markers.txt", "ab"); + fprintf(fp, "%08x %08x\n", MarkModeBegin, ASpacePos[CurASpace]); + fclose(fp); + InMarkMode = FALSE; + } + break; + } + break; + } + return(1); +} + + +// Called after a game is loaded. +bool MemDebugger_Init(void) +{ + if(CurGame->Debugger) + { + AddressSpaces = CurGame->Debugger->AddressSpaces; + + CurASpace = 0; + ASpace = &(*AddressSpaces)[CurASpace]; + + size_t num = AddressSpaces->size(); + + ASpacePos = (uint32 *)calloc(sizeof(uint32), num); + SizeCache = (uint64 *)calloc(sizeof(uint64), num); + GoGoPowerDD = (uint64 *)calloc(sizeof(uint64), num); + + for(size_t i = 0; i < num; i++) + { + uint64 tmpsize; + + tmpsize = (*AddressSpaces)[i].NP2Size; + + if(!tmpsize) + tmpsize = (uint64)1 << (*AddressSpaces)[i].TotalBits; + + SizeCache[i] = tmpsize; + } + + ICV_Init( MDFN_GetSettingS(std::string(std::string(CurGame->shortname) + "." + std::string("debugger.memcharenc")).c_str()).c_str() ); + } + else + AddressSpaces = NULL; + return(TRUE); +} diff --git a/libmednahawk/src/drivers/memdebugger.h b/libmednahawk/src/drivers/memdebugger.h new file mode 100644 index 0000000000..c9f2765122 --- /dev/null +++ b/libmednahawk/src/drivers/memdebugger.h @@ -0,0 +1,10 @@ +#ifndef __MDFN_DRIVERS_MEMDEBUGGER_H +#define __MDFN_DRIVERS_MEMDEBUGGER_H + +void MemDebugger_Draw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *screen_rect); +int MemDebugger_Event(const SDL_Event *event); +void MemDebugger_SetActive(bool newia); + +bool MemDebugger_Init(void); + +#endif diff --git a/libmednahawk/src/drivers/netplay.cpp b/libmednahawk/src/drivers/netplay.cpp new file mode 100644 index 0000000000..07e9ace5ad --- /dev/null +++ b/libmednahawk/src/drivers/netplay.cpp @@ -0,0 +1,717 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// FIXME: Minor memory leaks may occur on errors(strdup'd, malloc'd, and new'd memory used in inter-thread messages) + +#ifdef HAVE_CONFIG_H +#include +#endif +#include "main.h" +#include + +#include +#include +#include "netplay.h" +#include "console.h" +#include "../md5.h" +#include "../general.h" + +#include + +#include "NetClient.h" + +#ifdef HAVE_POSIX_SOCKETS +#include "NetClient_POSIX.h" +#endif + +#ifdef WIN32 +#include "NetClient_WS2.h" +#endif + +static NetClient *Connection = NULL; + + +class NetplayConsole : public MDFNConsole +{ + public: + NetplayConsole(void); + + private: + virtual bool TextHook(UTF8 *text); +}; + +static NetplayConsole NetConsole; + +// All command functions are called in the main(video blitting) thread. +typedef struct +{ + const char *name; + bool (*func)(const UTF8 *arg); + const char *help_args; + const char *help_desc; +} CommandEntry; + +static bool CC_server(const UTF8 *arg); +static bool CC_quit(const UTF8 *arg); +static bool CC_help(const UTF8 *arg); +static bool CC_nick(const UTF8 *arg); +static bool CC_ping(const UTF8 *arg); +static bool CC_integrity(const UTF8 *arg); +static bool CC_gamekey(const UTF8 *arg); +static bool CC_swap(const UTF8 *arg); +static bool CC_dupe(const UTF8 *arg); +static bool CC_drop(const UTF8 *arg); +static bool CC_take(const UTF8 *arg); +static bool CC_list(const UTF8 *arg); + +static CommandEntry ConsoleCommands[] = +{ + { "/server", CC_server, "[REMOTE_HOST] [PORT]", "Connects to REMOTE_HOST(IP address or FQDN), on PORT." }, + + { "/connect", CC_server, NULL, NULL }, + + //{ "/gamekey", CC_gamekey, "GAMEKEY", "Changes the game key to the specified GAMEKEY." }, + + { "/quit", CC_quit, "[MESSAGE]", "Disconnects from the netplay server." }, + + { "/help", CC_help, "", "Help, I'm drowning in a sea of cliche metaphors!" }, + + { "/nick", CC_nick, "NICKNAME", "Changes your nickname to the specified NICKNAME." }, + + { "/swap", CC_swap, "A B", "Swap/Exchange all instances of controllers A and B(numbered from 1)." }, + + { "/dupe", CC_dupe, "[A] [...]", "Duplicate and take instances of specified controller(s)." }, + { "/drop", CC_drop, "[A] [...]", "Drop all instances of specified controller(s)." }, + { "/take", CC_take, "[A] [...]", "Take all instances of specified controller(s)." }, + + //{ "/list", CC_list, "", "List players in game." }, + + { "/ping", CC_ping, "", "Pings the server." }, + + //{ "/integrity", CC_integrity, "", "Starts netplay integrity check sequence." }, + + { NULL, NULL }, +}; + +static const int PopupTime = 3750; +static const int PopupFadeStartTime = 3250; + +static int volatile inputable = 0; +static int volatile viewable = 0; +static int64 LastTextTime = -1; + +int MDFNDnetplay = 0; // Only write/read this global variable in the game thread. + +static bool CC_server(const UTF8 *arg) +{ + UTF8 server[300]; + unsigned int *port; + + server[0] = 0; + + port = (unsigned int *)malloc(sizeof(unsigned int)); + + switch(trio_sscanf((char*)arg, "%.299s %u", (char*)server, port)) + { + default: + case 0: + free(port); + port = NULL; + SendCEvent(CEVT_NP_CONNECT, NULL, NULL); + break; + + case 1: + free(port); + port = NULL; + SendCEvent(CEVT_NP_CONNECT, strdup((char*)server), NULL); + break; + + case 2: + SendCEvent(CEVT_NP_CONNECT, strdup((char*)server), port); + break; + } + + return(false); +} + +static bool CC_gamekey(const UTF8 *arg) +{ +// SendCEvent(CEVT_NP_SETGAMEKEY, strdup(arg), NULL); + return(FALSE); +} + +static bool CC_quit(const UTF8 *arg) +{ + SendCEvent(CEVT_NP_DISCONNECT, strdup((const char *)arg), NULL); + return(FALSE); +} + +static bool CC_list(const UTF8 *arg) +{ + SendCEvent(CEVT_NP_LIST, NULL, NULL); + return(false); +} + +static bool CC_swap(const UTF8 *arg) +{ + int a = 0, b = 0; + + sscanf((const char *)arg, "%u %u", &a, &b); + + if(a && b) + { + uint32 *sc = new uint32; + + *sc = ((a - 1) & 0xFF) | (((b - 1) & 0xFF) << 8); + + SendCEvent(CEVT_NP_SWAP, sc, NULL); + } + + return(false); +} + +static bool CC_dupe(const UTF8 *arg) +{ + int tmp[32]; + int count; + + + memset(tmp, 0, sizeof(tmp)); + count = sscanf((const char *)arg, "%u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u", + &tmp[0x00], &tmp[0x01], &tmp[0x02], &tmp[0x03], &tmp[0x04], &tmp[0x05], &tmp[0x06], &tmp[0x07], + &tmp[0x08], &tmp[0x09], &tmp[0x0A], &tmp[0x0B], &tmp[0x0C], &tmp[0x0D], &tmp[0x0E], &tmp[0x0F], + &tmp[0x00], &tmp[0x01], &tmp[0x02], &tmp[0x03], &tmp[0x04], &tmp[0x05], &tmp[0x06], &tmp[0x07], + &tmp[0x08], &tmp[0x09], &tmp[0x0A], &tmp[0x0B], &tmp[0x0C], &tmp[0x0D], &tmp[0x0E], &tmp[0x0F]); + + if(count > 0) + { + uint32 *mask = new uint32; + + *mask = 0; + for(int i = 0; i < 32; i++) + { + if(tmp[i] > 0) + *mask |= 1U << (unsigned)(tmp[i] - 1); + } + SendCEvent(CEVT_NP_DUPE, mask, NULL); + } + + return(false); +} + +static bool CC_drop(const UTF8 *arg) +{ + int tmp[32]; + int count; + + + memset(tmp, 0, sizeof(tmp)); + count = sscanf((const char *)arg, "%u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u", + &tmp[0x00], &tmp[0x01], &tmp[0x02], &tmp[0x03], &tmp[0x04], &tmp[0x05], &tmp[0x06], &tmp[0x07], + &tmp[0x08], &tmp[0x09], &tmp[0x0A], &tmp[0x0B], &tmp[0x0C], &tmp[0x0D], &tmp[0x0E], &tmp[0x0F], + &tmp[0x00], &tmp[0x01], &tmp[0x02], &tmp[0x03], &tmp[0x04], &tmp[0x05], &tmp[0x06], &tmp[0x07], + &tmp[0x08], &tmp[0x09], &tmp[0x0A], &tmp[0x0B], &tmp[0x0C], &tmp[0x0D], &tmp[0x0E], &tmp[0x0F]); + + if(count > 0) + { + uint32 *mask = new uint32; + + *mask = 0; + for(int i = 0; i < 32; i++) + { + if(tmp[i] > 0) + *mask |= 1U << (unsigned)(tmp[i] - 1); + } + SendCEvent(CEVT_NP_DROP, mask, NULL); + } + + return(false); +} + +static bool CC_take(const UTF8 *arg) +{ + int tmp[32]; + int count; + + + memset(tmp, 0, sizeof(tmp)); + count = sscanf((const char *)arg, "%u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u", + &tmp[0x00], &tmp[0x01], &tmp[0x02], &tmp[0x03], &tmp[0x04], &tmp[0x05], &tmp[0x06], &tmp[0x07], + &tmp[0x08], &tmp[0x09], &tmp[0x0A], &tmp[0x0B], &tmp[0x0C], &tmp[0x0D], &tmp[0x0E], &tmp[0x0F], + &tmp[0x00], &tmp[0x01], &tmp[0x02], &tmp[0x03], &tmp[0x04], &tmp[0x05], &tmp[0x06], &tmp[0x07], + &tmp[0x08], &tmp[0x09], &tmp[0x0A], &tmp[0x0B], &tmp[0x0C], &tmp[0x0D], &tmp[0x0E], &tmp[0x0F]); + + if(count > 0) + { + uint32 *mask = new uint32; + + *mask = 0; + for(int i = 0; i < 32; i++) + { + if(tmp[i] > 0) + *mask |= 1U << (unsigned)(tmp[i] - 1); + } + SendCEvent(CEVT_NP_TAKE, mask, NULL); + } + + return(false); +} + +static bool CC_ping(const UTF8 *arg) +{ + SendCEvent(CEVT_NP_PING, NULL, NULL); + return(false); +} + +static bool CC_integrity(const UTF8 *arg) +{ + SendCEvent(CEVT_NP_INTEGRITY, NULL, NULL); + return(FALSE); +} + +static bool CC_help(const UTF8 *arg) +{ + for(unsigned int x = 0; ConsoleCommands[x].name; x++) + { + if(ConsoleCommands[x].help_desc) + { + char help_buf[256]; + trio_snprintf(help_buf, 256, "%s %s - %s", ConsoleCommands[x].name, ConsoleCommands[x].help_args, ConsoleCommands[x].help_desc); + NetConsole.WriteLine((UTF8*)help_buf); + } + } + return(true); +} + +static bool CC_nick(const UTF8 *arg) +{ + SendCEvent(CEVT_NP_SETNICK, strdup((char *)arg), NULL); + return(true); +} + + +NetplayConsole::NetplayConsole(void) +{ + //SetSmallFont(1); +} + +// Called from main thread +bool NetplayConsole::TextHook(UTF8 *text) +{ + inputable = viewable = false; + LastTextTime = -1; + + for(unsigned int x = 0; ConsoleCommands[x].name; x++) + { + if(!strncasecmp(ConsoleCommands[x].name, (char*)text, strlen(ConsoleCommands[x].name)) && text[strlen(ConsoleCommands[x].name)] <= 0x20) + { + MDFN_trim((char*)&text[strlen(ConsoleCommands[x].name)]); + inputable = viewable = ConsoleCommands[x].func(&text[strlen(ConsoleCommands[x].name)]); + + free(text); + text = NULL; + break; + } + } + + if(text) + { + if(text[0] != 0) // Is non-empty line? + { + SendCEvent(CEVT_NP_TEXT_TO_SERVER, text, NULL); + text = NULL; + viewable = true; + } + else + { + free(text); + text = NULL; + } + } + + if(viewable) + LastTextTime = SDL_GetTicks(); + + return(1); +} + +// Call from game thread +static void PrintNetStatus(const char *s) +{ + MDFND_NetplayText((uint8 *)s, FALSE); +} + +// Call from game thread +static void PrintNetError(const char *format, ...) +{ + char *temp; + + va_list ap; + + va_start(ap, format); + + temp = trio_vaprintf(format, ap); + MDFND_NetplayText((uint8 *)temp, FALSE); + free(temp); + + va_end(ap); +} + +// Called from game thread +int MDFND_NetworkConnect(void) +{ + std::string nickname = MDFN_GetSettingS("netplay.nick"); + std::string remote_host = MDFN_GetSettingS("netplay.host"); + unsigned int remote_port = MDFN_GetSettingUI("netplay.port"); + std::string game_key = MDFN_GetSettingS("netplay.gamekey"); + + if(Connection) + { + MDFND_NetworkClose(); + } + + try + { + #ifdef HAVE_POSIX_SOCKETS + Connection = new NetClient_POSIX(); + #elif defined(WIN32) + Connection = new NetClient_WS2(); + #else + throw MDFN_Error(0, _("Networking system API support not compiled in.")); + #endif + Connection->Connect(remote_host.c_str(), remote_port); + } + catch(std::exception &e) + { + PrintNetError("%s", e.what()); + return(0); + } + + PrintNetStatus(_("*** Sending initialization data to server.")); + + MDFNDnetplay = 1; + if(!MDFNI_NetplayStart(MDFN_GetSettingUI("netplay.localplayers"), nickname, game_key, MDFN_GetSettingS("netplay.password"))) + { + MDFNDnetplay = 0; + return(0); + } + PrintNetStatus(_("*** Connection established.")); + + return(1); +} + +// Called from game thread +void MDFND_SendData(const void *data, uint32 len) +{ + do + { + int32 sent = Connection->Send(data, len); + assert(sent >= 0); + + data = (uint8*)data + sent; + len -= sent; + + if(len) + { + // TODO: Possibility to break out? + Connection->CanSend(50000); + } + } while(len); +} + +void MDFND_RecvData(void *data, uint32 len) +{ + NoWaiting &= ~2; + + do + { + int32 received = Connection->Receive(data, len); + assert(received >= 0); + + data = (uint8*)data + received; + len -= received; + + if(len) + { + // TODO: Possibility to break out? + Connection->CanReceive(50000); + } + } while(len); + + if(Connection->CanReceive()) + NoWaiting |= 2; +} + +// Called from the game thread +void MDFND_NetworkClose(void) +{ + NoWaiting &= ~2; + + if(Connection) + { + delete Connection; + Connection = NULL; + } + + if(MDFNDnetplay) + { + MDFNI_NetplayStop(); + MDFNDnetplay = 0; + PrintNetStatus(_("*** Disconnected")); + } +} + +// Called from the game thread +void MDFND_NetplayText(const uint8 *text, bool NetEcho) +{ + uint8 *tot = (uint8 *)strdup((char *)text); + uint8 *tmp; + + tmp = tot; + + while(*tmp) + { + if((uint8)*tmp < 0x20) *tmp = ' '; + tmp++; + } + + SendCEvent(CEVT_NP_DISPLAY_TEXT, tot, (void*)NetEcho); +} + +// Called from the game thread +void Netplay_ToggleTextView(void) +{ + SendCEvent(CEVT_NP_TOGGLE_TT, NULL, NULL); +} + +// Called from main thread +int Netplay_GetTextView(void) +{ + return(viewable); +} + +// Called from main thread and game thread +bool Netplay_IsTextInput(void) +{ + return(inputable); +} + +// Called from the main thread +bool Netplay_TryTextExit(void) +{ + if(viewable || inputable) + { + viewable = FALSE; + inputable = FALSE; + LastTextTime = -1; + return(TRUE); + } + else if(LastTextTime > 0 && (int64)SDL_GetTicks() < (LastTextTime + PopupTime + 500)) // Allow some extra time if a user tries to escape away an auto popup box but misses + { + return(TRUE); + } + else + { + return(FALSE); + } +} + +// Called from main thread +void DrawNetplayTextBuffer(MDFN_Surface *surface, const MDFN_Rect *src_rect) +{ + if(!viewable) + { + return; + } + if(!inputable) + { + if((int64)SDL_GetTicks() >= (LastTextTime + PopupTime)) + { + viewable = 0; + return; + } + } + NetConsole.ShowPrompt(inputable); + NetConsole.Draw(surface, src_rect); +} + +// Called from main thread +int NetplayEventHook(const SDL_Event *event) +{ + if(event->type == SDL_USEREVENT) + switch(event->user.code) + { + case CEVT_NP_TOGGLE_TT: + NetConsole.SetSmallFont(MDFN_GetSettingB("netplay.smallfont")); // FIXME: Setting manager mutex needed example! + if(viewable && !inputable) + { + inputable = TRUE; + } + else + { + viewable = !viewable; + inputable = viewable; + } + break; + + case CEVT_NP_DISPLAY_TEXT: + NetConsole.WriteLine((UTF8*)event->user.data1); + free(event->user.data1); + + if(!(bool)event->user.data2) + { + viewable = 1; + LastTextTime = SDL_GetTicks(); + } + break; + } + + if(!inputable) + return(1); + + return(NetConsole.Event(event)); +} + +// Called from game thread +int NetplayEventHook_GT(const SDL_Event *event) +{ + if(event->type == SDL_USEREVENT) + switch(event->user.code) + { + case CEVT_NP_TEXT_TO_SERVER: + if(MDFNDnetplay) + { + MDFNI_NetplayText((const UTF8*)event->user.data1); + free(event->user.data1); + } + else + PrintNetError(_("*** Not connected!")); + break; + + case CEVT_NP_INTEGRITY: + if(MDFNDnetplay) + MDFNI_NetplayIntegrity(); + else + PrintNetError(_("*** Not connected!")); + break; + + case CEVT_NP_SWAP: + if(MDFNDnetplay) + { + uint32 sc = *(uint32 *)event->user.data1; + + MDFNI_NetplaySwap((sc >> 0) & 0xFF, (sc >> 8) & 0xFF); + } + else + PrintNetError(_("*** Not connected!")); + + delete (uint32*)event->user.data1; + break; + + case CEVT_NP_DUPE: + if(MDFNDnetplay) + { + uint32 mask = *(uint32 *)event->user.data1; + + MDFNI_NetplayDupe(mask); + } + else + PrintNetError(_("*** Not connected!")); + + delete (uint32*)event->user.data1; + break; + + case CEVT_NP_DROP: + if(MDFNDnetplay) + { + uint32 mask = *(uint32 *)event->user.data1; + + MDFNI_NetplayDrop(mask); + } + else + PrintNetError(_("*** Not connected!")); + + delete (uint32*)event->user.data1; + break; + + case CEVT_NP_TAKE: + if(MDFNDnetplay) + { + uint32 mask = *(uint32 *)event->user.data1; + + MDFNI_NetplayTake(mask); + } + else + PrintNetError(_("*** Not connected!")); + + delete (uint32*)event->user.data1; + break; + + case CEVT_NP_PING: + if(MDFNDnetplay) + MDFNI_NetplayPing(); + else + PrintNetError(_("*** Not connected!")); + break; + + case CEVT_NP_LIST: + if(MDFNDnetplay) + MDFNI_NetplayList(); + else + PrintNetError(_("*** Not connected!")); + break; + + + case CEVT_NP_SETNICK: + MDFNI_SetSetting("netplay.nick", (char*)event->user.data1); + + if(MDFNDnetplay) + MDFNI_NetplayChangeNick((UTF8*)event->user.data1); + + free(event->user.data1); + break; + + case CEVT_NP_CONNECT: + if(event->user.data1) // Connect! + { + MDFNI_SetSetting("netplay.host", (char*)event->user.data1); + if(event->user.data2) + { + MDFNI_SetSettingUI("netplay.port", *(unsigned int *)event->user.data2); + free(event->user.data2); + } + free(event->user.data1); + } + MDFND_NetworkConnect(); + break; + + case CEVT_NP_DISCONNECT: + if(MDFNDnetplay) + { + MDFNI_NetplayQuit((const char *)event->user.data1); + MDFND_NetworkClose(); + free(event->user.data1); + } + else + PrintNetError(_("*** Not connected!")); + break; + } + + return(1); +} + + diff --git a/libmednahawk/src/drivers/netplay.h b/libmednahawk/src/drivers/netplay.h new file mode 100644 index 0000000000..5c3f8b0867 --- /dev/null +++ b/libmednahawk/src/drivers/netplay.h @@ -0,0 +1,13 @@ +int MDFND_NetworkConnect(void); +void DrawNetplayTextBuffer(MDFN_Surface *surface, const MDFN_Rect *src_rect); +void NetplayText_InMainThread(uint8 *text, bool NetEcho); + +int NetplayEventHook(const SDL_Event *event); +int NetplayEventHook_GT(const SDL_Event *event); + +void Netplay_ToggleTextView(void); +int Netplay_GetTextView(void); +bool Netplay_IsTextInput(void); +bool Netplay_TryTextExit(void); + +extern int MDFNDnetplay; diff --git a/libmednahawk/src/drivers/nnx.cpp b/libmednahawk/src/drivers/nnx.cpp new file mode 100644 index 0000000000..8f2c242c2d --- /dev/null +++ b/libmednahawk/src/drivers/nnx.cpp @@ -0,0 +1,206 @@ +/* Nearest-neighbor simple scalers */ +// FIXME: non-32bpp scaling not working yet. + +#include "main.h" +#include "nnx.h" + +template +static void t_nnx(int factor, MDFN_Surface *src, MDFN_Rect *src_rect, MDFN_Surface *dest, MDFN_Rect *dest_rect) +{ + T *source_pixies = src->pixels + src_rect->y * src->pitchinpix; + source_pixies += src_rect->x; + int source_pitch = src->pitchinpix; + int source_pitch_diff = source_pitch - src_rect->w; + + T *dest_pixies = dest->pixels + dest_rect->y * dest->pitchinpix; + dest_pixies += dest_rect->x; + int dest_pitch = dest->pitchinpix; + int dest_pitch_diff = dest_pitch - dest_rect->w + dest_pitch * (factor - 1); + + int max_x = src_rect->w; + + switch(factor) + { + case 2: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + dest_pixies[0] = dest_pixies[1] = dest_pixies[dest_pitch] = dest_pixies[dest_pitch + 1] = *source_pixies; + source_pixies++; + dest_pixies += 2; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + case 3: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + dest_pixies[0] = dest_pixies[1] = dest_pixies[2] = + dest_pixies[dest_pitch] = dest_pixies[dest_pitch + 1] = dest_pixies[dest_pitch + 2] = + dest_pixies[dest_pitch << 1] = dest_pixies[(dest_pitch << 1) + 1] = dest_pixies[(dest_pitch << 1) + 2] = *source_pixies; + source_pixies++; + dest_pixies += 3; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + case 4: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + dest_pixies[0] = dest_pixies[1] = dest_pixies[2] = dest_pixies[3] = + dest_pixies[dest_pitch] = dest_pixies[dest_pitch + 1] = dest_pixies[dest_pitch + 2] = dest_pixies[dest_pitch + 3] = + dest_pixies[dest_pitch << 1] = dest_pixies[(dest_pitch << 1) + 1] = dest_pixies[(dest_pitch << 1) + 2] = dest_pixies[(dest_pitch << 1) + 3] = + dest_pixies[(dest_pitch << 1) + dest_pitch] = dest_pixies[(dest_pitch << 1) + dest_pitch + 1] = dest_pixies[(dest_pitch << 1) + dest_pitch + 2] = dest_pixies[(dest_pitch << 1) + dest_pitch + 3] = *source_pixies; + source_pixies++; + dest_pixies += 4; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + case 5: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + // Line 0 + dest_pixies[0] = dest_pixies[1] = dest_pixies[2] = dest_pixies[3] = dest_pixies[4] = + + // Line 1 + dest_pixies[dest_pitch] = dest_pixies[dest_pitch + 1] = dest_pixies[dest_pitch + 2] = dest_pixies[dest_pitch + 3] = dest_pixies[dest_pitch + 4] = + + // Line 2 + dest_pixies[dest_pitch << 1] = dest_pixies[(dest_pitch << 1) + 1] = dest_pixies[(dest_pitch << 1) + 2] = dest_pixies[(dest_pitch << 1) + 3] = dest_pixies[(dest_pitch << 1) + 4] = + + // Line 3 + dest_pixies[(dest_pitch << 1) + dest_pitch] = dest_pixies[(dest_pitch << 1) + dest_pitch + 1] = dest_pixies[(dest_pitch << 1) + dest_pitch + 2] = dest_pixies[(dest_pitch << 1) + dest_pitch + 3] = dest_pixies[(dest_pitch << 1) + dest_pitch + 4] = *source_pixies; + + // Line 4 + dest_pixies[(dest_pitch << 2)] = dest_pixies[(dest_pitch << 2) + 1] = dest_pixies[(dest_pitch << 2) + 2] = dest_pixies[(dest_pitch << 2) + 3] = dest_pixies[(dest_pitch << 2) + 4] = *source_pixies; + + source_pixies++; + dest_pixies += 5; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + } +} + +template +static void t_nnyx(int factor, MDFN_Surface *src, MDFN_Rect *src_rect, MDFN_Surface *dest, MDFN_Rect *dest_rect) +{ + T *source_pixies = src->pixels + src_rect->y * src->pitchinpix; + source_pixies += src_rect->x; + int source_pitch = src->pitchinpix; + int source_pitch_diff = source_pitch - src_rect->w; + + T *dest_pixies = dest->pixels + dest_rect->y * dest->pitchinpix; + dest_pixies += dest_rect->x; + int dest_pitch = dest->pitchinpix; + int dest_pitch_diff = dest_pitch - dest_rect->w + dest_pitch * (factor - 1); + + int max_x = src_rect->w; + + switch(factor) + { + case 2: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + dest_pixies[0] = dest_pixies[dest_pitch] = *source_pixies; + source_pixies++; + dest_pixies ++; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + case 3: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + dest_pixies[0] = + dest_pixies[dest_pitch] = + dest_pixies[dest_pitch << 1] = *source_pixies; + source_pixies++; + dest_pixies ++; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + case 4: + for(int y = src_rect->h; y; y--) + { + for(int x = max_x; x; x--) + { + dest_pixies[0] = + dest_pixies[dest_pitch] = + dest_pixies[dest_pitch << 1] = + dest_pixies[(dest_pitch << 1) + dest_pitch] = *source_pixies; + source_pixies++; + dest_pixies ++; + } + dest_pixies += dest_pitch_diff; + source_pixies += source_pitch_diff; + } + break; + + } +} + +void nnx(int factor, MDFN_Surface *src, MDFN_Rect *src_rect, MDFN_Surface *dest, MDFN_Rect *dest_rect) +{ + switch(src->format.bpp) + { +#if 0 + case 8: + t_nnx(factor, src, src_rect, dest, dest_rect); + break; + + case 16: + t_nnx(factor, src, src_rect, dest, dest_rect); + break; +#endif + case 32: + t_nnx(factor, src, src_rect, dest, dest_rect); + break; + } +} + +void nnyx(int factor, MDFN_Surface *src, MDFN_Rect *src_rect, MDFN_Surface *dest, MDFN_Rect *dest_rect) +{ + switch(src->format.bpp) + { +#if 0 + case 8: + t_nnyx(factor, src, src_rect, dest, dest_rect); + break; + + case 16: + t_nnyx(factor, src, src_rect, dest, dest_rect); + break; +#endif + case 32: + t_nnyx(factor, src, src_rect, dest, dest_rect); + break; + } +} + diff --git a/libmednahawk/src/drivers/nnx.h b/libmednahawk/src/drivers/nnx.h new file mode 100644 index 0000000000..2d03248279 --- /dev/null +++ b/libmednahawk/src/drivers/nnx.h @@ -0,0 +1,7 @@ +#ifndef __MDFN_DRIVERS_NNX_H +#define __MDFN_DRIVERS_NNX_H + +void nnx(int factor, MDFN_Surface *src, MDFN_Rect *src_rect, MDFN_Surface *dest, MDFN_Rect *dest_rect); +void nnyx(int factor, MDFN_Surface *src, MDFN_Rect *src_rect, MDFN_Surface *dest, MDFN_Rect *dest_rect); + +#endif diff --git a/libmednahawk/src/drivers/nongl.cpp b/libmednahawk/src/drivers/nongl.cpp new file mode 100644 index 0000000000..cf505f0b0d --- /dev/null +++ b/libmednahawk/src/drivers/nongl.cpp @@ -0,0 +1,457 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "video.h" +#include "nongl.h" +#include "nnx.h" + +#include +#include + +// +// Source rectangle sanity checking(more strict than dest rectangle sanity checking). */ +// +// true if it's ok, false if it's "bad" and we shouldn't blit. +static INLINE bool CheckSourceRect(const MDFN_Surface *src_surface, const MDFN_Rect *src_rect) +{ + if((src_rect->w <= 0) || (src_rect->h <= 0)) + return(false); + + if((src_rect->x < 0) || (src_rect->y < 0)) + return(false); + + if(((int64)src_rect->x + src_rect->w) > src_surface->w) + return(false); + + if(((int64)src_rect->y + src_rect->h) > src_surface->h) + return(false); + + return(true); +} + +// +// Dest rectangle sanity checking. +// +static INLINE bool CheckDestRect(const MDFN_Surface *dest_surface, const MDFN_Rect *dest_rect) +{ + if((dest_rect->w <= 0) || (dest_rect->h <= 0)) + return(false); + + if(dest_rect->x >= dest_surface->w) + return(false); + + if(dest_rect->y >= dest_surface->h) + return(false); + + if(((int64)dest_rect->x + dest_rect->w) <= 0) + return(false); + + if(((int64)dest_rect->y + dest_rect->h) <= 0) + return(false); + + return(true); +} + +// +// true if blitting needs to be done with some sort of clipping, false if not. +// +static INLINE bool CheckDRNeedsClipping(const MDFN_Surface *dest_surface, const MDFN_Rect *dest_rect) +{ + if(dest_rect->x < 0 || dest_rect->y < 0) + return(true); + + if(((int64)dest_rect->x + dest_rect->w) > dest_surface->w) + return(true); + + if(((int64)dest_rect->y + dest_rect->h) > dest_surface->h) + return(true); + + return(false); +} + +#define SFTBLT_SETUP(T) \ + /* dr_* should only be used in the actual blitting functions for ratio calculations. */ \ + const int32 sr_w = src_rect->w; \ + const int32 sr_h = src_rect->h; \ + const int32 dr_w = dest_rect->w; \ + const int32 dr_h = dest_rect->h; \ + const int32 iter_w = std::min(std::max(0, dest_surface->w - std::max(0, dest_rect->x)), std::max(0, dr_w + std::min(0, dest_rect->x))); \ + const int32 iter_h = std::min(std::max(0, dest_surface->h - std::max(0, dest_rect->y)), std::max(0, dr_h + std::min(0, dest_rect->y))); \ + const uint32 src_pitchinpix = src_surface->pitchinpix; \ + const uint32 dest_pitchinpix = dest_surface->pitchinpix; \ + const int32 dest_pixels_fudge_x = -std::min(0, dest_rect->x); \ + const int32 dest_pixels_fudge_y = -std::min(0, dest_rect->y); \ + const T* src_pixels = src_surface->pixels + src_rect->x + (src_rect->y * src_pitchinpix); \ + T* dest_pixels = dest_surface->pixels + std::max(0, dest_rect->x) + (std::max(0, dest_rect->y) * dest_pitchinpix); + + +// const int32 src_pixels_fudge_x = (int64)(-std::min(0, dest_rect->x)) * sr_w / dr_w; +// const int32 src_pixels_fudge_y = (int64)(-std::min(0, dest_rect->y)) * sr_h / dr_h; +// const T* src_pixels = src_surface->pixels + src_rect->x + src_pixels_fudge_x + ((src_rect->y + src_pixels_fudge_y) * src_pitchinpix); + +// Write pixel source-alpha-eval +template +static INLINE void WPSAE(T &back_pix_ref, const T fore_pix) +{ + if(sizeof(T) == 4 && alpha_shift < 31) + { + const T back_pix = back_pix_ref; + const uint32 alpha = (((fore_pix >> alpha_shift) & 0xFF) * 129) >> 7; //65921) >> 16; + const uint32 alpha_negoo = 256 - alpha; + T new_pix; + + new_pix = 0; + new_pix |= ((((back_pix & 0xFF00FF) * alpha_negoo) + ((fore_pix & 0xFF00FF) * alpha)) >> 8) & 0x00FF00FF; + new_pix |= (((((back_pix >> 8) & 0xFF00FF) * alpha_negoo) + (((fore_pix >> 8) & 0xFF00FF) * alpha))) & 0xFF00FF00; + back_pix_ref = new_pix; + } + else + back_pix_ref = fore_pix; +} + +template +static void BlitStraight(const MDFN_Surface *src_surface, const MDFN_Rect *src_rect, MDFN_Surface *dest_surface, const MDFN_Rect *dest_rect) +{ + SFTBLT_SETUP(T); + + (void)sr_w; + (void)sr_h; + + //puts("Straight"); + + src_pixels += dest_pixels_fudge_x + (dest_pixels_fudge_y * src_pitchinpix); + + for(int32 y = 0; y < iter_h; y++) + { + if(alpha_shift >= 0) + { + for(int32 x = 0; x < iter_w; x++) + { + WPSAE(dest_pixels[x], src_pixels[x]); + } + } + else + memcpy(dest_pixels, src_pixels, iter_w * sizeof(T)); + + src_pixels += src_pitchinpix; + dest_pixels += dest_pitchinpix; + } +} + +template +static void BlitIScale(const MDFN_Surface *src_surface, const MDFN_Rect &sr, MDFN_Surface *dest_surface, const MDFN_Rect &dr, int xscale, int yscale) +{ + //puts("IScale"); + const uint32 src_pitchinpix = src_surface->pitchinpix; + int32 dpitch_diff; + + T *src_row, *dest_row; + + src_row = src_surface->pixels + src_surface->pitchinpix * sr.y + sr.x; + dest_row = dest_surface->pixels + dest_surface->pitchinpix * dr.y + dr.x; + + dpitch_diff = dest_surface->pitchinpix - (sr.w * xscale); + + //printf("%f %f, %d %d\n", dw_to_sw_ratio, dh_to_sh_ratio, xscale, yscale); + + for(int y = sr.h; y; y--) + { + for(int ys = yscale; ys; ys--) + { + uint32 *src_pixels = src_row; + + for(int x = sr.w; x; x--) + { + uint32 tmp_pixel = *src_pixels; + + for(int xs = xscale; xs; xs--) + WPSAE(*dest_row++, tmp_pixel); + + src_pixels++; + } + dest_row += dpitch_diff; + } + src_row += src_pitchinpix; + } +} + +template +static void BlitSScale(const MDFN_Surface *src_surface, const MDFN_Rect *src_rect, MDFN_Surface *dest_surface, const MDFN_Rect *dest_rect, const MDFN_Rect *original_src_rect, unsigned scanlines = 0, unsigned rotation = 0) +{ + SFTBLT_SETUP(T); + + //puts("SScale"); +// printf("%d %d\n", iter_w, iter_h); + + static const unsigned fract_bits = 18; // 2**(32 - 18) == 16384 + + uint32 src_x, src_y; + uint32 src_x_inc, src_y_inc; + + // Extra vars for scanlines + const int32 o_sr_h = original_src_rect->h; + uint32 sl_mult; + uint32 sl; + uint32 sl_inc; + uint32 sl_init; // For scanlines+rotation!! + + // Extra vars for rotation. + uint32 src_x_init; + uint32 src_y_init; + + if(rotation_on) + { + if(rotation == MDFN_ROTATE90) + { + src_x_inc = ((sr_h << fract_bits) + dr_w - 1) / dr_w; + src_y_inc = -((sr_w << fract_bits) + dr_h - 1) / dr_h; + } + else //if(rotated == MDFN_ROTATE270) + { + src_x_inc = -((sr_h << fract_bits) + dr_w - 1) / dr_w; + src_y_inc = ((sr_w << fract_bits) + dr_h - 1) / dr_h; + } + + // + // + // + if((((int64)abs((int32)src_x_inc) * (iter_w + dest_pixels_fudge_x - 1)) >> fract_bits) >= sr_h) + { + printf("Rot %u Prec-round BUG X\n", rotation); + if((int32)src_x_inc < 0) + src_x_inc++; + else + src_x_inc--; + } + + if((((int64)abs((int32)src_y_inc) * (iter_h + dest_pixels_fudge_y - 1)) >> fract_bits) >= sr_w) + { + printf("Rot %u Prec-round BUG Y\n", rotation); + if((int32)src_y_inc < 0) + src_y_inc++; + else + src_y_inc--; + } + // + // + // + + if(rotation == MDFN_ROTATE90) + { + src_x_init = dest_pixels_fudge_x * src_x_inc; + src_y_init = (iter_h + dest_pixels_fudge_y - 1) * -src_y_inc; + } + else //if(rotated == MDFN_ROTATE270) + { + src_x_init = (iter_w + dest_pixels_fudge_x - 1) * -src_x_inc; + src_y_init = dest_pixels_fudge_y * src_y_inc; + //printf("%d %08x\n", dest_pixels_fudge_x, dest_pixels_fudge_y * src_y_inc); + } + } + else + { + src_x_inc = ((sr_w << fract_bits) + dr_w - 1) / dr_w; + src_y_inc = ((sr_h << fract_bits) + dr_h - 1) / dr_h; + + if((((int64)src_x_inc * (iter_w + dest_pixels_fudge_x - 1)) >> fract_bits) >= sr_w) + { + puts("Prec-round BUG X"); + src_x_inc--; + } + + if((((int64)src_y_inc * (iter_h + dest_pixels_fudge_y - 1)) >> fract_bits) >= sr_h) + { + puts("Prec-round BUG Y"); + src_y_inc--; + } + + src_pixels += ((int64)dest_pixels_fudge_x * src_x_inc) >> fract_bits; + src_pixels += (((int64)dest_pixels_fudge_y * src_y_inc) >> fract_bits) * src_pitchinpix; + } + +#if 0 + printf("%lld, %lld\n", ((long long)src_y + src_y_inc * (dr.h - 1)) >> fract_bits, ((long long)src_y + src_y_inc * (dr.h - (dr.h / sr.h) - 1)) >> fract_bits); +#endif + + if(scanlines_on) + { + sl_mult = 256 - 256 * scanlines / 100; + + if(rotation_on) + { + if(rotation == MDFN_ROTATE90) + { + sl_inc = ((o_sr_h << fract_bits) + dr_w - 1) / dr_w * 2; + sl_init = dest_pixels_fudge_x * sl_inc; + } + else + { + sl_inc = -((o_sr_h << fract_bits) + dr_w - 1) / dr_w * 2; + sl_init = (iter_w + dest_pixels_fudge_x - 1) * -sl_inc; + } + } + else + { + sl_inc = ((o_sr_h << fract_bits) + dr_h - 1) / dr_h * 2; + sl_init = 0; + } + if(!rotation_on) + sl = sl_init; + //printf("%08x, %d\n", sl_init, sl_init >> fract_bits); + } + + if(rotation_on) + src_y = src_y_init; + else + src_y = 0; + + for(int y = 0; y < iter_h; y++) + { + T *dest_row_ptr = dest_pixels + (y * dest_pitchinpix); + const T *src_row_ptr; + const T *src_col_ptr; + + if(rotation_on) + { + src_x = src_x_init; + src_col_ptr = src_surface->pixels + (src_y >> fract_bits); + if(scanlines_on) + sl = sl_init; + } + else + { + src_x = 0; + src_row_ptr = src_pixels + (src_y >> fract_bits) * src_pitchinpix; + } + + if(scanlines_on && (rotation_on || (sl & (1U << fract_bits)))) + { + for(int x = 0; x < iter_w; x++) + { + T pixel = rotation_on ? src_col_ptr[(src_x >> fract_bits) * src_pitchinpix] : src_row_ptr[(src_x >> fract_bits)]; + + if(!rotation_on || (sl & (1U << fract_bits))) + pixel = ((((pixel & 0xFF00FF) * sl_mult) >> 8) & 0x00FF00FF) | ((((pixel >> 8) & 0xFF00FF) * sl_mult) & 0xFF00FF00); + + WPSAE(dest_row_ptr[x], pixel); + src_x += src_x_inc; + if(rotation_on) + sl += sl_inc; + } + } + else + { + for(int x = 0; x < iter_w; x++) + { + T pixel = rotation_on ? src_col_ptr[(src_x >> fract_bits) * src_pitchinpix] : src_row_ptr[(src_x >> fract_bits)]; + + WPSAE(dest_row_ptr[x], pixel); + src_x += src_x_inc; + } + } + + src_y += src_y_inc; + if(scanlines_on && !rotation_on) + sl += sl_inc; + } +} + +void MDFN_StretchBlitSurface(MDFN_Surface *src_surface, const MDFN_Rect *src_rect, MDFN_Surface *dest_surface, const MDFN_Rect *dest_rect, bool source_alpha, int scanlines, const MDFN_Rect *original_src_rect, int rotated) +{ + if(!CheckSourceRect(src_surface, src_rect)) + return; + + if(!CheckDestRect(dest_surface, dest_rect)) + return; + + const bool NeedClipping = CheckDRNeedsClipping(dest_surface, dest_rect); + + + if(original_src_rect == NULL) + original_src_rect = src_rect; + + MDFN_Rect sr, dr, o_sr; + + sr = *src_rect; + o_sr = *original_src_rect; + dr = *dest_rect; + + //printf("%d:%d, %d:%d, %d:%d\n", sr.x, sr.w, sr.y, sr.h, src_surface->w, src_surface->h); + + if(rotated != MDFN_ROTATE0) + { + if(scanlines) + BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect, scanlines, rotated); + else + BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect, 0, rotated); + + return; + } + + if(sr.w == dr.w && sr.h == dr.h && (!scanlines || (sr.w == o_sr.w && sr.h == o_sr.h))) + { + switch(source_alpha ? (int)src_surface->format.Ashift : -1) + { + case -1: BlitStraight(src_surface, &sr, dest_surface, &dr); break; + case 0: BlitStraight(src_surface, &sr, dest_surface, &dr); break; + case 8: BlitStraight(src_surface, &sr, dest_surface, &dr); break; + case 16: BlitStraight(src_surface, &sr, dest_surface, &dr); break; + case 24: BlitStraight(src_surface, &sr, dest_surface, &dr); break; + } + //BlitStraight(src_surface, &sr, dest_surface, &dr); + //SDL_BlitSurface(src_surface, &sr, dest_surface, &dr); + return; + } + + //printf("%d\n", dr.x); + + double dw_to_sw_ratio = (double)dr.w / sr.w; + double dh_to_sh_ratio = (double)dr.h / sr.h; + + if(!scanlines && !NeedClipping && floor(dw_to_sw_ratio) == dw_to_sw_ratio && floor(dh_to_sh_ratio) == dh_to_sh_ratio) + { + switch(source_alpha ? (int)src_surface->format.Ashift : -1) + { + case -1: if((dw_to_sw_ratio == dh_to_sh_ratio) && dw_to_sw_ratio <= 5) + nnx(dw_to_sw_ratio, src_surface, &sr, dest_surface, &dr); + else + BlitIScale(src_surface, sr, dest_surface, dr, dw_to_sw_ratio, dh_to_sh_ratio); + break; + + case 0: BlitIScale(src_surface, sr, dest_surface, dr, dw_to_sw_ratio, dh_to_sh_ratio); break; + case 8: BlitIScale(src_surface, sr, dest_surface, dr, dw_to_sw_ratio, dh_to_sh_ratio); break; + case 16: BlitIScale(src_surface, sr, dest_surface, dr, dw_to_sw_ratio, dh_to_sh_ratio); break; + case 24: BlitIScale(src_surface, sr, dest_surface, dr, dw_to_sw_ratio, dh_to_sh_ratio); break; + } + } + else + { + if(scanlines) + { + BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect, scanlines); + } + else switch(source_alpha ? (int)src_surface->format.Ashift : -1) + { + case -1: BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect); break; + case 0: BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect); break; + case 8: BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect); break; + case 16: BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect); break; + case 24: BlitSScale(src_surface, src_rect, dest_surface, dest_rect, original_src_rect); break; + } + } +} diff --git a/libmednahawk/src/drivers/nongl.h b/libmednahawk/src/drivers/nongl.h new file mode 100644 index 0000000000..a8390eb637 --- /dev/null +++ b/libmednahawk/src/drivers/nongl.h @@ -0,0 +1,8 @@ +#ifndef __MDFN_DRIVERS_NONGL_H +#define __MDFN_DRIVERS_NONGL_H + +// This function DOES NOT handle format conversions; IE the src_surface and dest_surface should be in the same color formats. +// Also, clipping is...sketchy. Just don't pass negative coordinates in the rects, and it should be ok. +void MDFN_StretchBlitSurface(MDFN_Surface *src_surface, const MDFN_Rect *src_rect, MDFN_Surface *dest_surface, const MDFN_Rect *dest_rect, bool source_alpha = false, int scanlines = 0, const MDFN_Rect *original_src_rect = NULL, int rotated = MDFN_ROTATE0); + +#endif diff --git a/libmednahawk/src/drivers/opengl.cpp b/libmednahawk/src/drivers/opengl.cpp new file mode 100644 index 0000000000..3638a002fe --- /dev/null +++ b/libmednahawk/src/drivers/opengl.cpp @@ -0,0 +1,858 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" + +#include +#include + +#include "video.h" +#include "opengl.h" +#include "shader.h" + +glGetError_Func p_glGetError; +glBindTexture_Func p_glBindTexture; +glColorTableEXT_Func p_glColorTableEXT; +glTexImage2D_Func p_glTexImage2D; +glBegin_Func p_glBegin; +glVertex2f_Func p_glVertex2f; +glTexCoord2f_Func p_glTexCoord2f; +glEnd_Func p_glEnd; +glEnable_Func p_glEnable; +glBlendFunc_Func p_glBlendFunc; +glGetString_Func p_glGetString; +glViewport_Func p_glViewport; +glGenTextures_Func p_glGenTextures; +glDeleteTextures_Func p_glDeleteTextures; +glTexParameteri_Func p_glTexParameteri; +glClearColor_Func p_glClearColor; +glLoadIdentity_Func p_glLoadIdentity; +glClear_Func p_glClear; +glMatrixMode_Func p_glMatrixMode; +glDisable_Func p_glDisable; +glPixelStorei_Func p_glPixelStorei; +glTexSubImage2D_Func p_glTexSubImage2D; +glFinish_Func p_glFinish; +glOrtho_Func p_glOrtho; +glPixelTransferf_Func p_glPixelTransferf; +glColorMask_Func p_glColorMask; +glTexEnvf_Func p_glTexEnvf; +glGetIntegerv_Func p_glGetIntegerv; +glTexGend_Func p_glTexGend; +glDrawPixels_Func p_glDrawPixels; +glRasterPos2i_Func p_glRasterPos2i; +glPixelZoom_Func p_glPixelZoom; +glGetTexLevelParameteriv_Func p_glGetTexLevelParameteriv; +glAccum_Func p_glAccum; +glClearAccum_Func p_glClearAccum; +glPushMatrix_Func p_glPushMatrix; +glPopMatrix_Func p_glPopMatrix; +glRotated_Func p_glRotated; + +#if MDFN_WANT_OPENGL_SHADERS +glCreateShaderObjectARB_Func p_glCreateShaderObjectARB; +glShaderSourceARB_Func p_glShaderSourceARB; +glCompileShaderARB_Func p_glCompileShaderARB; +glCreateProgramObjectARB_Func p_glCreateProgramObjectARB; +glAttachObjectARB_Func p_glAttachObjectARB; +glLinkProgramARB_Func p_glLinkProgramARB; +glUseProgramObjectARB_Func p_glUseProgramObjectARB; +glUniform1fARB_Func p_glUniform1fARB; +glUniform2fARB_Func p_glUniform2fARB; +glUniform3fARB_Func p_glUniform3fARB; +glUniform1iARB_Func p_glUniform1iARB; +glUniform2iARB_Func p_glUniform2iARB; +glUniform3iARB_Func p_glUniform3iARB; +glActiveTextureARB_Func p_glActiveTextureARB; +glGetInfoLogARB_Func p_glGetInfoLogARB; +glGetUniformLocationARB_Func p_glGetUniformLocationARB; +glDeleteObjectARB_Func p_glDeleteObjectARB; +glDetachObjectARB_Func p_glDetachObjectARB; +glGetObjectParameterivARB_Func p_glGetObjectParameterivARB; +#endif + +static uint32 MaxTextureSize; // Maximum power-of-2 texture width/height(we assume they're the same, and if they're not, this is set to the lower value of the two) +static bool SupportNPOT; // True if the OpenGL implementation supports non-power-of-2-sized textures +static GLenum PixelFormat; // For glTexSubImage2D() +static GLenum PixelType; // For glTexSubImage2D() + +static SDL_Surface *gl_screen = NULL; +static GLuint textures[4] = {0, 0, 0, 0}; // emulated fb, scanlines, osd, raw(netplay) +static GLuint rgb_mask = 0; // TODO: RGB mask texture for LCD RGB triad simulation + +static bool using_scanlines = 0; +static unsigned int last_w, last_h; + +static uint32 OSDLastWidth, OSDLastHeight; + +static bool UsingShader = FALSE; // TRUE if we're using a pixel shader. +static int UsingIP; // See VIDEOIP_* enums defined in video.h + +static uint32 *DummyBlack = NULL; // Black/Zeroed image data for cleaning textures +static uint32 DummyBlackSize; + +void BlitOpenGLRaw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *dest_rect, const bool source_alpha) +{ + unsigned int tmpwidth; + unsigned int tmpheight; + + if(SupportNPOT) + { + tmpwidth = rect->w; + tmpheight = rect->h; + } + else + { + tmpwidth = round_up_pow2(rect->w); + tmpheight = round_up_pow2(rect->h); + } + + if(tmpwidth > MaxTextureSize || tmpheight > MaxTextureSize) + { + MDFN_Rect neo_rect; + MDFN_Rect neo_dest_rect; + + for(int32 xseg = 0; xseg < rect->w; xseg += MaxTextureSize) + { + for(int32 yseg = 0; yseg < rect->h; yseg += MaxTextureSize) + { + neo_rect.x = rect->x + xseg; + neo_rect.w = rect->w - xseg; + + if(neo_rect.w > MaxTextureSize) + neo_rect.w = MaxTextureSize; + + neo_rect.y = rect->y + yseg; + neo_rect.h = rect->h - yseg; + + if(neo_rect.h > MaxTextureSize) + neo_rect.h = MaxTextureSize; + + neo_dest_rect.x = dest_rect->x + xseg * dest_rect->w / rect->w; + neo_dest_rect.y = dest_rect->y + yseg * dest_rect->h / rect->h; + neo_dest_rect.w = neo_rect.w * dest_rect->w / rect->w; + neo_dest_rect.h = neo_rect.h * dest_rect->h / rect->h; + BlitOpenGLRaw(surface, &neo_rect, &neo_dest_rect, source_alpha); + } + } + } + else + { + // Don't move the source_alpha stuff out of this else { }, otherwise it will break the recursion necessary to work around maximum texture size limits. + if(source_alpha) + { + p_glEnable(GL_BLEND); + p_glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } + + p_glBindTexture(GL_TEXTURE_2D, textures[3]); + p_glPixelStorei(GL_UNPACK_ROW_LENGTH, surface->pitchinpix); + + p_glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tmpwidth, tmpheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + p_glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rect->w, rect->h, PixelFormat, PixelType, surface->pixels + rect->x + rect->y * surface->pitchinpix); + + p_glBegin(GL_QUADS); + + p_glTexCoord2f(0.0f, 1.0f * rect->h / tmpheight); // Bottom left of our picture. + p_glVertex2f(dest_rect->x, dest_rect->y + dest_rect->h); + + p_glTexCoord2f((float)rect->w / tmpwidth, 1.0f * rect->h / tmpheight); // Bottom right of our picture. + p_glVertex2f(dest_rect->x + dest_rect->w, dest_rect->y + dest_rect->h); + + p_glTexCoord2f((float)rect->w / tmpwidth, 0.0f); // Top right of our picture. + p_glVertex2f(dest_rect->x + dest_rect->w, dest_rect->y); + + p_glTexCoord2f(0.0f, 0.0f); // Top left of our picture. + p_glVertex2f(dest_rect->x, dest_rect->y); + + p_glEnd(); + + if(source_alpha) + { + p_glDisable(GL_BLEND); + } + } +} + +static INLINE void MakeSourceCoords(const MDFN_Rect *src_rect, float sc[4][2], const int32 tmpwidth, const int32 tmpheight) +{ + // Upper left + sc[0][0] = (float)src_rect->x / tmpwidth; // X + sc[0][1] = (float)src_rect->y / tmpheight; // Y + + // Upper right + sc[1][0] = (float)(src_rect->x + src_rect->w) / tmpwidth; // X + sc[1][1] = (float)(src_rect->y) / tmpheight; // Y + + // Lower right + sc[2][0] = (float)(src_rect->x + src_rect->w) / tmpwidth; // X + sc[2][1] = (float)(src_rect->y + src_rect->h) / tmpheight; // Y + + // Lower left + sc[3][0] = (float)src_rect->x / tmpwidth; // X + sc[3][1] = (float)(src_rect->y + src_rect->h) / tmpheight; // Y +} + +static INLINE void MakeDestCoords(const MDFN_Rect *dest_rect, int dest_coords[4][2]) +{ + signed dco = 0; + + if(CurGame->rotated == MDFN_ROTATE90) + dco = 1; + else if(CurGame->rotated == MDFN_ROTATE270) + dco = 3; + else if(CurGame->rotated == MDFN_ROTATE180) + dco = 2; + + // Upper left + dest_coords[dco][0] = dest_rect->x; + dest_coords[dco][1] = dest_rect->y; + dco = (dco + 1) & 3; + + // Upper Right + dest_coords[dco][0] = dest_rect->x + dest_rect->w; + dest_coords[dco][1] = dest_rect->y; + dco = (dco + 1) & 3; + + // Lower right + dest_coords[dco][0] = dest_rect->x + dest_rect->w; + dest_coords[dco][1] = dest_rect->y + dest_rect->h; + dco = (dco + 1) & 3; + + // Lower left + dest_coords[dco][0] = dest_rect->x; + dest_coords[dco][1] = dest_rect->y + dest_rect->h; + dco = (dco + 1) & 3; + + //printf("%f:%f %f:%f %f:%f %f:%f\n", dest_coords[0][0], dest_coords[0][1], dest_coords[1][0], dest_coords[1][1], dest_coords[2][0], + // dest_coords[2][1], dest_coords[3][0], dest_coords[3][1]); +} + +static INLINE void DrawQuad(float src_coords[4][2], int dest_coords[4][2]) +{ + // Lower left + p_glTexCoord2f(src_coords[3][0], src_coords[3][1]); + p_glVertex2f(dest_coords[3][0], dest_coords[3][1]); + + // Lower right + p_glTexCoord2f(src_coords[2][0], src_coords[2][1]); + p_glVertex2f(dest_coords[2][0], dest_coords[2][1]); + + // Upper right + p_glTexCoord2f(src_coords[1][0], src_coords[1][1]); + p_glVertex2f(dest_coords[1][0], dest_coords[1][1]); + + // Upper left + p_glTexCoord2f(src_coords[0][0], src_coords[0][1]); + p_glVertex2f(dest_coords[0][0], dest_coords[0][1]); +} + +void DrawLinearIP(const unsigned UsingIP, const unsigned rotated, const MDFN_Rect *tex_src_rect, const MDFN_Rect *dest_rect, const uint32 tmpwidth, const uint32 tmpheight) +{ + MDFN_Rect tmp_sr = *tex_src_rect; + MDFN_Rect tmp_dr = *dest_rect; + float tmp_sc[4][2]; + int tmp_dc[4][2]; + + int32 start_pos; + int32 bound_pos; + bool rotate_side = (rotated == MDFN_ROTATE90 || rotated == MDFN_ROTATE270); + bool reversi; + bool dr_y; + bool sr_y; + + if((UsingIP == VIDEOIP_LINEAR_Y) ^ rotate_side) + { + start_pos = dest_rect->x; + bound_pos = dest_rect->x + dest_rect->w; + dr_y = false; + sr_y = rotate_side; + } + else + { + start_pos = dest_rect->y; + bound_pos = dest_rect->y + dest_rect->h; + dr_y = true; + sr_y = !rotate_side; + } + + reversi = (rotated == MDFN_ROTATE270 && UsingIP == VIDEOIP_LINEAR_X) || (rotated == MDFN_ROTATE90 && UsingIP == VIDEOIP_LINEAR_Y); + + for(int i = start_pos; i < bound_pos; i++) + { + int sr_goon = i - start_pos; + + if(dr_y) + { + tmp_dr.y = i; + tmp_dr.h = 1; + } + else + { + tmp_dr.x = i; + tmp_dr.w = 1; + } + + if(reversi) + sr_goon = (bound_pos - start_pos) - 1 - sr_goon; + + if(sr_y) + { + tmp_sr.y = sr_goon * (rotate_side ? tex_src_rect->w : tex_src_rect->h) / dest_rect->h; + tmp_sr.h = 1; + } + else + { + tmp_sr.x = sr_goon * (rotate_side ? tex_src_rect->h : tex_src_rect->w) / dest_rect->w; + tmp_sr.w = 1; + } + + MakeSourceCoords(&tmp_sr, tmp_sc, tmpwidth, tmpheight); + MakeDestCoords(&tmp_dr, tmp_dc); + + DrawQuad(tmp_sc, tmp_dc); + } +} + +void BlitOpenGL(MDFN_Surface *src_surface, const MDFN_Rect *src_rect, const MDFN_Rect *dest_rect, const MDFN_Rect *original_src_rect) +{ + MDFN_Rect tex_src_rect = *src_rect; + float src_coords[4][2]; + int dest_coords[4][2]; + unsigned int tmpwidth; + unsigned int tmpheight; + uint32 *src_pixies; + + src_pixies = src_surface->pixels + tex_src_rect.x + tex_src_rect.y * src_surface->pitchinpix; + tex_src_rect.x = 0; + tex_src_rect.y = 0; + + MakeDestCoords(dest_rect, dest_coords); + + p_glBindTexture(GL_TEXTURE_2D, textures[0]); + + if(SupportNPOT) + { + tmpwidth = src_rect->w; + tmpheight = src_rect->h; + + if(tmpwidth != last_w || tmpheight != last_h) + { + p_glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tmpwidth, tmpheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + last_w = tmpwidth; + last_h = tmpheight; + } + } + else + { + bool ImageSizeChange = FALSE; + + tmpwidth = round_up_pow2(src_rect->w); + tmpheight = round_up_pow2(src_rect->h); + + // If the required GL texture size has changed, resize the texture! :b + if(tmpwidth != round_up_pow2(last_w) || tmpheight != round_up_pow2(last_h)) + { + p_glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tmpwidth, tmpheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + ImageSizeChange = TRUE; + } + + // If the dimensions of our image stored in the texture have changed... + if(src_rect->w != last_w || src_rect->h != last_h) + ImageSizeChange = TRUE; + + // Only clean up if we're using pixel shaders and/or bilinear interpolation + if(ImageSizeChange && (UsingShader || UsingIP)) + { + uint32 neo_dbs = DummyBlackSize; + + if(src_rect->w != tmpwidth && neo_dbs < src_rect->h) + neo_dbs = src_rect->h; + + if(src_rect->h != tmpheight && neo_dbs < src_rect->w) + neo_dbs = src_rect->w; + + if(neo_dbs != DummyBlackSize) + { + //printf("Realloc: %d\n", neo_dbs); + if(DummyBlack) + MDFN_free(DummyBlack); + + if((DummyBlack = (uint32 *)MDFN_calloc(neo_dbs, sizeof(uint32), _("OpenGL dummy black texture data")))) + DummyBlackSize = neo_dbs; + else + DummyBlackSize = 0; + } + + //printf("Cleanup: %d %d, %d %d\n", src_rect->w, src_rect->h, tmpwidth, tmpheight); + + if(DummyBlack) // If memory allocation failed for some reason, don't clean the texture. :( + { + if(src_rect->w < tmpwidth) + { + //puts("X"); + p_glPixelStorei(GL_UNPACK_ROW_LENGTH, 1); + p_glTexSubImage2D(GL_TEXTURE_2D, 0, src_rect->w, 0, 1, src_rect->h, GL_RGBA, GL_UNSIGNED_BYTE, DummyBlack); + } + if(src_rect->h < tmpheight) + { + //puts("Y"); + p_glPixelStorei(GL_UNPACK_ROW_LENGTH, src_rect->w); + p_glTexSubImage2D(GL_TEXTURE_2D, 0, 0, src_rect->h, src_rect->w, 1, GL_RGBA, GL_UNSIGNED_BYTE, DummyBlack); + } + } // end if(DummyBlack) + + } + + last_w = src_rect->w; + last_h = src_rect->h; + } + + MakeSourceCoords(&tex_src_rect, src_coords, tmpwidth, tmpheight); + + #if MDFN_WANT_OPENGL_SHADERS + if(UsingShader) + ShaderBegin(src_rect, dest_rect, tmpwidth, tmpheight); + #endif + + p_glPixelStorei(GL_UNPACK_ROW_LENGTH, src_surface->pitchinpix); + + p_glTexSubImage2D(GL_TEXTURE_2D, 0, tex_src_rect.x, tex_src_rect.y, tex_src_rect.w, tex_src_rect.h, PixelFormat, PixelType, src_pixies); + + // + // Draw texture + // + p_glBegin(GL_QUADS); + + if(UsingIP == VIDEOIP_LINEAR_X || UsingIP == VIDEOIP_LINEAR_Y) // Linear interpolation, on one axis + { + DrawLinearIP(UsingIP, CurGame->rotated, &tex_src_rect, dest_rect, tmpwidth, tmpheight); + } + else // Regular bilinear or no interpolation. + { + DrawQuad(src_coords, dest_coords); + } + + p_glEnd(); + + #if MDFN_WANT_OPENGL_SHADERS + if(UsingShader) + ShaderEnd(); + #endif + + if(using_scanlines) + { + p_glEnable(GL_BLEND); + + p_glBindTexture(GL_TEXTURE_2D, textures[1]); + p_glBlendFunc(GL_DST_COLOR, GL_SRC_ALPHA); + + p_glBegin(GL_QUADS); + + p_glTexCoord2f(0.0f, 1.0f * original_src_rect->h / 256); // Bottom left of our picture. + p_glVertex2f((signed)dest_coords[3][0], (signed)dest_coords[3][1]); + + p_glTexCoord2f(1.0f, 1.0f * original_src_rect->h / 256); // Bottom right of our picture. + p_glVertex2f((signed)dest_coords[2][0], (signed)dest_coords[2][1]); + + p_glTexCoord2f(1.0f, 0.0f); // Top right of our picture. + p_glVertex2f((signed)dest_coords[1][0], (signed)dest_coords[1][1]); + + p_glTexCoord2f(0.0f, 0.0f); // Top left of our picture. + p_glVertex2f((signed)dest_coords[0][0], (signed)dest_coords[0][1]); + + p_glEnd(); + p_glDisable(GL_BLEND); + } + + //if(1) + //{ + // p_glAccum(GL_MULT, 0.99); + // p_glAccum(GL_ACCUM, 1 - 0.99); + // p_glAccum(GL_RETURN, 1.0); + //} +} + +void FlipOpenGL(void) +{ + PumpWrap(); + SDL_GL_SwapBuffers(); +} + +void KillOpenGL(void) +{ + if(textures[0]) + p_glDeleteTextures(4, &textures[0]); + + textures[0] = textures[1] = textures[2] = textures[3] = 0; + + if(rgb_mask) + { + p_glDeleteTextures(1, &rgb_mask); + rgb_mask = 0; + } + + if(DummyBlack) + { + MDFN_free(DummyBlack); + DummyBlack = NULL; + } + DummyBlackSize = 0; + + #if MDFN_WANT_OPENGL_SHADERS + if(UsingShader) + { + KillShader(); + UsingShader = FALSE; + } + #endif +} + +static bool CheckExtension(const char *extensions, const char *testval) +{ + const char *extparse = extensions; + const size_t testval_len = strlen(testval); + + while((extparse = strstr(extparse, testval))) + { + if(extparse == extensions || *(extparse - 1) == ' ') + { + if(extparse[testval_len] == ' ' || extparse[testval_len] == 0) + { + return(TRUE); + } + } + extparse += testval_len; + } + return(FALSE); +} + +static bool CheckAlternateFormat(const uint32 version_h) +{ + if(version_h >= 0x0102) // >= 1.2 + { + #if defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64) || defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386) + return(true); + #endif + } + return(false); +} + +/* Rectangle, left, right(not inclusive), top, bottom(not inclusive). */ +int InitOpenGL(int ipolate, int scanlines, ShaderType pixshader, SDL_Surface *screen, int *rs, int *gs, int *bs, int *as) +{ + const char *extensions; + const char *vendor; + const char *renderer; + const char *version; + uint32 version_h; + + #define LFG(x) if(!(p_##x = (x##_Func) SDL_GL_GetProcAddress(#x))) { MDFN_PrintError(_("Error getting proc address for: %s\n"), #x); return(0); } + #define LFGN(x) p_##x = (x##_Func) SDL_GL_GetProcAddress(#x) + + LFG(glGetError); + LFG(glBindTexture); + LFGN(glColorTableEXT); + LFG(glTexImage2D); + LFG(glBegin); + LFG(glVertex2f); + LFG(glTexCoord2f); + LFG(glEnd); + LFG(glEnable); + LFG(glBlendFunc); + LFG(glGetString); + LFG(glViewport); + LFG(glGenTextures); + LFG(glDeleteTextures); + LFG(glTexParameteri); + LFG(glClearColor); + LFG(glLoadIdentity); + LFG(glClear); + LFG(glMatrixMode); + LFG(glDisable); + LFG(glPixelStorei); + LFG(glTexSubImage2D); + LFG(glFinish); + LFG(glOrtho); + LFG(glPixelTransferf); + LFG(glColorMask); + LFG(glTexEnvf); + LFG(glGetIntegerv); + LFG(glTexGend); + LFG(glRasterPos2i); + LFG(glDrawPixels); + LFG(glPixelZoom); + LFG(glAccum); + LFG(glClearAccum); + LFG(glGetTexLevelParameteriv); + LFG(glPushMatrix); + LFG(glPopMatrix); + LFG(glRotated); + + gl_screen = screen; + + vendor = (const char *)p_glGetString(GL_VENDOR); + renderer = (const char *)p_glGetString(GL_RENDERER); + version = (const char *)p_glGetString(GL_VERSION); + + { + int major = 0, minor = 0; + trio_sscanf(version, "%d.%d", &major, &minor); + if(minor < 0) minor = 0; + if(minor > 255) minor = 255; + + version_h = (major << 8) | minor; + //printf("%08x\n", version_h); + } + + MDFN_printf(_("OpenGL Implementation: %s %s %s\n"), vendor, renderer, version); + + extensions = (const char*)p_glGetString(GL_EXTENSIONS); + + MDFN_printf(_("Checking extensions:\n")); + MDFN_indent(1); + + SupportNPOT = FALSE; + + if(CheckExtension(extensions, "GL_ARB_texture_non_power_of_two")) + { + MDFN_printf(_("GL_ARB_texture_non_power_of_two found.\n")); + SupportNPOT = TRUE; + } + MDFN_indent(-1); + + p_glViewport(0, 0, screen->w, screen->h); + + p_glGenTextures(4, &textures[0]); + p_glGenTextures(1, &rgb_mask); + using_scanlines = 0; + + UsingShader = FALSE; + + #if MDFN_WANT_OPENGL_SHADERS + if(pixshader != SHADER_NONE) + { + LFG(glCreateShaderObjectARB); + LFG(glShaderSourceARB); + LFG(glCompileShaderARB); + LFG(glCreateProgramObjectARB); + LFG(glAttachObjectARB); + LFG(glLinkProgramARB); + LFG(glUseProgramObjectARB); + LFG(glUniform1fARB); + LFG(glUniform2fARB); + LFG(glUniform3fARB); + LFG(glUniform1iARB); + LFG(glUniform2iARB); + LFG(glUniform3iARB); + LFG(glActiveTextureARB); + LFG(glGetInfoLogARB); + LFG(glGetUniformLocationARB); + LFG(glDeleteObjectARB); + LFG(glDetachObjectARB); + + LFG(glGetObjectParameterivARB); + + if(!InitShader(pixshader)) + { + return(0); + } + UsingShader = TRUE; + ipolate = VIDEOIP_OFF; // Disable texture interpolation, otherwise our pixel shaders won't work right. + SupportNPOT = 0; // Our pixel shaders don't work right with NPOT textures: FIXME + p_glActiveTextureARB(GL_TEXTURE0_ARB); + } + #endif + + // printf here because pixel shader code will set SupportNPOT to 0 + + if(SupportNPOT) + MDFN_printf(_("Using non-power-of-2 sized textures.\n")); + else + MDFN_printf(_("Using power-of-2 sized textures.\n")); + + if(scanlines) // Check for scanlines, and disable them if vertical scaling isn't large enough. + { + int slcount; + + using_scanlines = scanlines; + + p_glBindTexture(GL_TEXTURE_2D, textures[1]); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + + uint8 *buf=(uint8*)malloc(64 * (256 * 2) * 4); + + slcount = 0; + for(int y=0;y<(256 * 2);y++) + { + for(int x=0;x<64;x++) + { + int sl_alpha; + + if(slcount) + sl_alpha = 0xFF - (0xFF * scanlines / 100); + else + sl_alpha = 0xFF; + + buf[y*64*4+x*4]=0; + buf[y*64*4+x*4+1]=0; + buf[y*64*4+x*4+2]=0; + buf[y*64*4+x*4+3] = sl_alpha; + //buf[y*256+x]=(y&1)?0x00:0xFF; + } + slcount ^= 1; + } + p_glPixelStorei(GL_UNPACK_ROW_LENGTH, 64); + p_glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 64, 256 * 2, 0, GL_RGBA,GL_UNSIGNED_BYTE,buf); + free(buf); + } + p_glBindTexture(GL_TEXTURE_2D, textures[3]); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); + + + p_glBindTexture(GL_TEXTURE_2D, textures[0]); + + UsingIP = ipolate; + + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); + p_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, UsingIP ? GL_LINEAR : GL_NEAREST); + p_glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, UsingIP ? GL_LINEAR : GL_NEAREST); + + p_glBindTexture(GL_TEXTURE_2D, textures[2]); + + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); + p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); + + p_glEnable(GL_TEXTURE_2D); + p_glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Background color to black. + p_glMatrixMode(GL_MODELVIEW); + + p_glLoadIdentity(); + p_glFinish(); + + p_glDisable(GL_TEXTURE_1D); + p_glDisable(GL_FOG); + p_glDisable(GL_LIGHTING); + p_glDisable(GL_LOGIC_OP); + p_glDisable(GL_DITHER); + p_glDisable(GL_COLOR_MATERIAL); + p_glDisable(GL_NORMALIZE); + p_glDisable(GL_SCISSOR_TEST); + p_glDisable(GL_STENCIL_TEST); + p_glDisable(GL_ALPHA_TEST); + p_glDisable(GL_DEPTH_TEST); + + p_glPixelTransferf(GL_RED_BIAS, 0); + p_glPixelTransferf(GL_GREEN_BIAS, 0); + p_glPixelTransferf(GL_BLUE_BIAS, 0); + p_glPixelTransferf(GL_ALPHA_BIAS, 0); + + p_glPixelTransferf(GL_RED_SCALE, 1); + p_glPixelTransferf(GL_GREEN_SCALE, 1); + p_glPixelTransferf(GL_BLUE_SCALE, 1); + p_glPixelTransferf(GL_ALPHA_SCALE, 1); + + p_glPixelTransferf(GL_MAP_COLOR, GL_FALSE); + + p_glOrtho(0.0, screen->w, screen->h, 0, -1.0, 1.0); + + last_w = 0; + last_h = 0; + + OSDLastWidth = OSDLastHeight = 0; + + + MDFN_printf(_("Checking maximum texture size...\n")); + MDFN_indent(1); + p_glBindTexture(GL_TEXTURE_2D, textures[0]); + // Assume maximum texture width is the same as maximum texture height to greatly simplify things + MaxTextureSize = 32768; + + while(MaxTextureSize) + { + GLint width_test = 0; + + p_glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA, MaxTextureSize, MaxTextureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + p_glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width_test); + + if((unsigned int)width_test == MaxTextureSize) + break; + + MaxTextureSize >>= 1; + } + MDFN_printf(_("Apparently it is at least: %d x %d\n"), MaxTextureSize, MaxTextureSize); + + if(MaxTextureSize < 256) + { + MDFN_printf(_("Warning: Maximum texture size is reported as being less than 256, but we can't handle that.\n")); + MaxTextureSize = 256; + } + + DummyBlack = NULL; + DummyBlackSize = 0; + + MDFN_indent(-1); + + if(!CheckAlternateFormat(version_h)) + { + #ifdef LSB_FIRST + *rs = 0; + *gs = 8; + *bs = 16; + *as = 24; + #else + *rs = 24; + *gs = 16; + *bs = 8; + *as = 0; + #endif + PixelFormat = GL_RGBA; + PixelType = GL_UNSIGNED_BYTE; + MDFN_printf(_("Using GL_RGBA, GL_UNSIGNED_BYTE for texture source data.\n")); + } + else + { + *as = 24; + *rs = 16; + *gs = 8; + *bs = 0; + PixelFormat = GL_BGRA; + PixelType = GL_UNSIGNED_INT_8_8_8_8_REV; + MDFN_printf(_("Using GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV for texture source data.\n")); + } + + return(1); +} + +void ClearBackBufferOpenGL(void) +{ + //if(1) + //{ + // p_glClearAccum(0.0, 0.0, 0.0, 1.0); + // p_glClear(GL_COLOR_BUFFER_BIT | GL_ACCUM_BUFFER_BIT); + //} + //else + //{ + p_glClear(GL_COLOR_BUFFER_BIT); + //} +} + diff --git a/libmednahawk/src/drivers/opengl.h b/libmednahawk/src/drivers/opengl.h new file mode 100644 index 0000000000..a2c50b19a9 --- /dev/null +++ b/libmednahawk/src/drivers/opengl.h @@ -0,0 +1,185 @@ +#ifndef __DRIVERS_OPENGL_H +#define __DRIVERS_OPENGL_H + +//#define GL_GLEXT_LEGACY +//#ifdef HAVE_APPLE_OPENGL_FRAMEWORK +//#include +//#include +//#include +//#else +//#include +//#include +//#include +//#endif + +#include + + +#ifndef GLAPIENTRY + #ifdef APIENTRY + #define GLAPIENTRY APIENTRY + #else + #define GLAPIENTRY + #endif +#endif + +#if GL_VERSION_1_3 && GL_ARB_vertex_program && GL_ARB_fragment_program +#define MDFN_WANT_OPENGL_SHADERS 1 +#else + +#endif + +#define MDFN_GL_TRY(x, ...) { x; GLenum errcode = p_glGetError(); if(errcode != GL_NO_ERROR) { __VA_ARGS__; throw(errcode); } } + +//zero 07-feb-2012 - these GLAPIENTRY need to be in a different location +typedef GLenum (GLAPIENTRY*glGetError_Func)(void); + +typedef void (GLAPIENTRY*glBindTexture_Func)(GLenum target,GLuint texture); +typedef void (GLAPIENTRY*glColorTableEXT_Func)(GLenum target, + GLenum internalformat, GLsizei width, GLenum format, GLenum type, + const GLvoid *table); +typedef void (GLAPIENTRY*glTexImage2D_Func)(GLenum target, GLint level, + GLint internalFormat, + GLsizei width, GLsizei height, GLint border, + GLenum format, GLenum type, + const GLvoid *pixels); +typedef void (GLAPIENTRY*glBegin_Func)(GLenum mode); +typedef void (GLAPIENTRY*glVertex2f_Func)(GLfloat x, GLfloat y); +typedef void (GLAPIENTRY*glTexCoord2f_Func)(GLfloat s, GLfloat t); +typedef void (GLAPIENTRY*glEnd_Func)(void); +typedef void (GLAPIENTRY*glEnable_Func)(GLenum cap); +typedef void (GLAPIENTRY*glBlendFunc_Func)(GLenum sfactor, GLenum dfactor); +typedef const GLubyte* (GLAPIENTRY*glGetString_Func)(GLenum name); +typedef void (GLAPIENTRY*glViewport_Func)(GLint x, GLint y,GLsizei width, + GLsizei height); +typedef void (GLAPIENTRY*glGenTextures_Func)(GLsizei n, GLuint *textures); +typedef void (GLAPIENTRY*glDeleteTextures_Func)(GLsizei n, + const GLuint *textures); +typedef void (GLAPIENTRY*glTexParameteri_Func)(GLenum target, GLenum pname, + GLint param); +typedef void (GLAPIENTRY*glClearColor_Func)(GLclampf red, GLclampf green, + GLclampf blue, GLclampf alpha); +typedef void (GLAPIENTRY*glLoadIdentity_Func)(void); +typedef void (GLAPIENTRY*glClear_Func)(GLbitfield mask); +typedef void (GLAPIENTRY*glMatrixMode_Func)(GLenum mode); +typedef void (GLAPIENTRY*glDisable_Func)(GLenum cap); + +typedef void (GLAPIENTRY*glPixelStorei_Func)(GLenum pname, GLint param); +typedef void (GLAPIENTRY*glTexSubImage2D_Func)(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels); +typedef void (GLAPIENTRY*glFinish_Func)(void); +typedef void (GLAPIENTRY*glOrtho_Func)(GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, + GLdouble near_val, GLdouble far_val); +typedef void (GLAPIENTRY*glPixelTransferf_Func)(GLenum pname, GLfloat param); +typedef void (GLAPIENTRY*glColorMask_Func)(GLboolean, GLboolean, GLboolean, GLboolean); +typedef void (GLAPIENTRY*glTexEnvf_Func)(GLenum, GLenum, GLfloat); +typedef void (GLAPIENTRY*glGetIntegerv_Func)(GLenum, GLint *); +typedef void (GLAPIENTRY*glTexGend_Func)(GLenum, GLenum, GLdouble); +typedef void (GLAPIENTRY*glRasterPos2i_Func)(GLint x, GLint y); +typedef void (GLAPIENTRY*glDrawPixels_Func)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +typedef void (GLAPIENTRY*glPixelZoom_Func)(GLfloat, GLfloat); +typedef void (GLAPIENTRY*glGetTexLevelParameteriv_Func)(GLenum target, GLint level, GLenum pname, GLint *params); +typedef void (GLAPIENTRY*glAccum_Func)(GLenum, GLfloat); +typedef void (GLAPIENTRY*glClearAccum_Func)(GLfloat, GLfloat, GLfloat, GLfloat); +typedef void (GLAPIENTRY*glPushMatrix_Func)(void); +typedef void (GLAPIENTRY*glPopMatrix_Func)(void); +typedef void (GLAPIENTRY*glRotated_Func)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + +#if MDFN_WANT_OPENGL_SHADERS +typedef GLhandleARB (GLAPIENTRY*glCreateShaderObjectARB_Func)(GLenum); +typedef void (GLAPIENTRY*glShaderSourceARB_Func)(GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); +typedef void (GLAPIENTRY*glCompileShaderARB_Func)(GLhandleARB); +typedef GLhandleARB (GLAPIENTRY*glCreateProgramObjectARB_Func)(void); +typedef void (GLAPIENTRY*glAttachObjectARB_Func)(GLhandleARB, GLhandleARB); +typedef void (GLAPIENTRY*glLinkProgramARB_Func)(GLhandleARB); +typedef void (GLAPIENTRY*glUseProgramObjectARB_Func)(GLhandleARB); +typedef void (GLAPIENTRY*glUniform1fARB_Func)(GLint, GLfloat); +typedef void (GLAPIENTRY*glUniform2fARB_Func)(GLint, GLfloat, GLfloat); +typedef void (GLAPIENTRY*glUniform3fARB_Func)(GLint, GLfloat, GLfloat, GLfloat); +typedef void (GLAPIENTRY*glUniform1iARB_Func)(GLint, GLint); +typedef void (GLAPIENTRY*glUniform2iARB_Func)(GLint, GLint, GLint); +typedef void (GLAPIENTRY*glUniform3iARB_Func)(GLint, GLint, GLint, GLint); +typedef void (GLAPIENTRY*glActiveTextureARB_Func)(GLenum); +typedef void (GLAPIENTRY*glGetInfoLogARB_Func)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); +typedef GLint (GLAPIENTRY*glGetUniformLocationARB_Func)(GLhandleARB, const GLcharARB *); +typedef void (GLAPIENTRY*glDeleteObjectARB_Func)(GLhandleARB); +typedef void (GLAPIENTRY*glDetachObjectARB_Func)(GLhandleARB, GLhandleARB); + +typedef void (GLAPIENTRY*glGetObjectParameterivARB_Func)(GLhandleARB, GLenum, GLint *); +#endif + +extern glGetError_Func p_glGetError; + +extern glBindTexture_Func p_glBindTexture; +extern glColorTableEXT_Func p_glColorTableEXT; +extern glTexImage2D_Func p_glTexImage2D; +extern glBegin_Func p_glBegin; +extern glVertex2f_Func p_glVertex2f; +extern glTexCoord2f_Func p_glTexCoord2f; +extern glEnd_Func p_glEnd; +extern glEnable_Func p_glEnable; +extern glBlendFunc_Func p_glBlendFunc; +extern glGetString_Func p_glGetString; +extern glViewport_Func p_glViewport; +extern glGenTextures_Func p_glGenTextures; +extern glDeleteTextures_Func p_glDeleteTextures; +extern glTexParameteri_Func p_glTexParameteri; +extern glClearColor_Func p_glClearColor; +extern glLoadIdentity_Func p_glLoadIdentity; +extern glClear_Func p_glClear; +extern glMatrixMode_Func p_glMatrixMode; +extern glDisable_Func p_glDisable; + +extern glPixelStorei_Func p_glPixelStorei; +extern glTexSubImage2D_Func p_glTexSubImage2D; +extern glFinish_Func p_glFinish; +extern glOrtho_Func p_glOrtho; +extern glPixelTransferf_Func p_glPixelTransferf; +extern glColorMask_Func p_glColorMask; +extern glTexEnvf_Func p_glTexEnvf; +extern glGetIntegerv_Func p_glGetIntegerv; +extern glTexGend_Func p_glTexGend; +extern glGetTexLevelParameteriv_Func p_glGetTexLevelParameteriv; +extern glAccum_Func p_glAccum; +extern glClearAccum_Func p_glClearAccum; +extern glPushMatrix_Func p_glPushMatrix; +extern glPopMatrix_Func p_glPopMatrix; +extern glRotated_Func p_glRotated; + +#if MDFN_WANT_OPENGL_SHADERS +extern glCreateShaderObjectARB_Func p_glCreateShaderObjectARB; +extern glShaderSourceARB_Func p_glShaderSourceARB; +extern glCompileShaderARB_Func p_glCompileShaderARB; +extern glCreateProgramObjectARB_Func p_glCreateProgramObjectARB; +extern glAttachObjectARB_Func p_glAttachObjectARB; +extern glLinkProgramARB_Func p_glLinkProgramARB; +extern glUseProgramObjectARB_Func p_glUseProgramObjectARB; +extern glUniform1fARB_Func p_glUniform1fARB; +extern glUniform2fARB_Func p_glUniform2fARB; +extern glUniform3fARB_Func p_glUniform3fARB; +extern glUniform1iARB_Func p_glUniform1iARB; +extern glUniform2iARB_Func p_glUniform2iARB; +extern glUniform3iARB_Func p_glUniform3iARB; +extern glActiveTextureARB_Func p_glActiveTextureARB; +extern glGetInfoLogARB_Func p_glGetInfoLogARB; +extern glGetUniformLocationARB_Func p_glGetUniformLocationARB; +extern glDeleteObjectARB_Func p_glDeleteObjectARB; +extern glDetachObjectARB_Func p_glDetachObjectARB; + +extern glGetObjectParameterivARB_Func p_glGetObjectParameterivARB; +#endif + +#include "shader.h" + +void BlitOpenGLRaw(MDFN_Surface *surface, const MDFN_Rect *rect, const MDFN_Rect *dest_rect, const bool source_alpha); +void BlitOpenGL(MDFN_Surface *src_surface, const MDFN_Rect *src_rect, const MDFN_Rect *dest_rect, const MDFN_Rect *original_src_rect); +void KillOpenGL(void); +int InitOpenGL(int ipolate, int scanlines, ShaderType pixshader, SDL_Surface *screen, int *rs, int *gs, int *bs, int *as); +void ClearBackBufferOpenGL(void); +void FlipOpenGL(void); + +#endif diff --git a/libmednahawk/src/drivers/overlay.cpp b/libmednahawk/src/drivers/overlay.cpp new file mode 100644 index 0000000000..c064878412 --- /dev/null +++ b/libmednahawk/src/drivers/overlay.cpp @@ -0,0 +1,304 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#include "main.h" +#include "video.h" +#include "overlay.h" +#include "nnx.h" +#include + +static SDL_Overlay *ov = NULL; + + +void OV_Blit(MDFN_Surface *src_surface, const MDFN_Rect *src_rect, const MDFN_Rect *original_src_rect, + const SDL_Rect *dest_rect, SDL_Surface *dest_surface, int softscale, int scanlines, int rotated) +{ + const uint32 spitch32 = src_surface->pitchinpix; + SDL_Rect drect = *dest_rect; + uint16 *dpixels; + uint32 dpitch16; + int32 need_w, need_h; + + if(softscale < 1) + softscale = 1; + + if(!rotated) + { + need_w = src_rect->w; + need_h = src_rect->h; + } + else + { + need_w = src_rect->h; + need_h = src_rect->w; + } + + need_w *= softscale; + need_h *= softscale; + + need_w = (need_w + 1) & ~1; + + if(!ov || ov->w != need_w || ov->h != need_h) + { + if(ov) + { + SDL_FreeYUVOverlay(ov); + ov = NULL; + } + if(!(ov = SDL_CreateYUVOverlay(need_w, need_h, SDL_YUY2_OVERLAY, dest_surface))) + { + puts("Overlay creation failure"); + return; + } + printf("Overlay Created: %d %d %d\n", ov->hw_overlay, ov->w, ov->h); + } + + if(SDL_LockYUVOverlay(ov) != 0) + { + puts("Lock failure"); + return; + } + dpixels = (uint16 *)ov->pixels[0]; + + assert(!(ov->pitches[0] & 1)); + + dpitch16 = ov->pitches[0] >> 1; + + if(rotated == MDFN_ROTATE90) + { + uint16 *drow = &dpixels[(need_h - 1) * dpitch16]; + + for(int y = 0; y < src_rect->w; y++) + { + uint32 *scol = src_surface->pixels + (src_rect->y * src_surface->pitchinpix) + src_rect->x + y; + + for(int x = 0; x < src_rect->h; x += 2) + { + unsigned int cb, cr; + + cb = ((scol[0] & 0x00FF00) + (scol[spitch32] & 0x00FF00)) >> 9; + cr = ((scol[0] & 0xFF0000) + (scol[spitch32] & 0xFF0000)) >> 17; + + drow[x + 0] = (scol[0] & 0xFF) | (cb << 8); + drow[x + 1] = (scol[spitch32] & 0xFF) | (cr << 8); + + scol += spitch32 * 2; + } + drow -= dpitch16; + } + } + else if(rotated == MDFN_ROTATE270) + { + uint16 *drow = &dpixels[0]; + + for(int y = 0; y < src_rect->w; y++) + { + uint32 *scol = src_surface->pixels + (src_rect->y * src_surface->pitchinpix) + src_rect->x + y; + + scol += spitch32 * (need_w - 1); + + for(int x = 0; x < src_rect->h; x += 2) + { + unsigned int cb, cr; + + cb = ((scol[0] & 0x00FF00) + (scol[-(int)spitch32] & 0x00FF00)) >> 9; + cr = ((scol[0] & 0xFF0000) + (scol[-(int)spitch32] & 0xFF0000)) >> 17; + + drow[x + 0] = (scol[0] & 0xFF) | (cb << 8); + drow[x + 1] = (scol[-(int)spitch32] & 0xFF) | (cr << 8); + + scol -= spitch32 * 2; + } + drow += dpitch16; + } + } + else // Plain copy + { + //uint32 dest_pitch_diff = dpitch16 - (((src_rect->w + 1) & ~1) * softscale) + dpitch16 * (softscale - 1); + uint32 dest_pitch_diff = dpitch16 - (src_rect->w * softscale) + dpitch16 * (softscale - 1); + uint32 src_pitch_diff = src_surface->pitchinpix; + uint16 *drow = dpixels; + uint32 *srow = src_surface->pixels + (src_rect->y * src_surface->pitchinpix) + src_rect->x; + + // Dest pointer is always incremented by 2. + dest_pitch_diff &= ~1; + + if(softscale == 2) + { + for(int y = 0; y < src_rect->h; y++) + { + for(int x = 0; x < src_rect->w; x++) + { + const unsigned int cb = (srow[x] & 0x00FF00) >> 8; + const unsigned int cr = (srow[x] & 0xFF0000) >> 16; + const unsigned int tmp0 = (srow[x] & 0xFF) | (cb << 8); + const unsigned int tmp1 = (srow[x] & 0xFF) | (cr << 8); + + drow[0] = tmp0; + drow[1] = tmp1; + drow[dpitch16 + 0] = tmp0; + drow[dpitch16 + 1] = tmp1; + + drow += 2; + } + srow += src_pitch_diff; + drow += dest_pitch_diff; + } + } + else if(softscale == 3) + { + unsigned int weasel_cb = 0, weasel_cr = 0; + + for(int y = 0; y < src_rect->h; y++) + { + for(int x = 0; x < src_rect->w; x++) + { + const unsigned int cb = (srow[x] & 0x00FF00); + const unsigned int cr = (srow[x] & 0xFF0000) >> 8; + const unsigned int y_c = srow[x] & 0xFF; + unsigned int tmp0, tmp1, tmp2; + + tmp0 = y_c; + tmp1 = y_c; + tmp2 = y_c; + + if(x & 1) + { + tmp0 |= weasel_cr; + tmp1 |= cb; + tmp2 |= cr; + } + else + { + const unsigned int cb_next = (srow[x + 1] & 0x00FF00); + const unsigned int cr_next = (srow[x + 1] & 0xFF0000) >> 8; + + weasel_cb = ((cb + cb_next) >> 1) & 0xFF00; + weasel_cr = ((cr + cr_next) >> 1) & 0xFF00; + + tmp0 |= cb; + tmp1 |= cr; + tmp2 |= weasel_cb; + } + + drow[0] = tmp0; + drow[1] = tmp1; + drow[2] = tmp2; + + drow[dpitch16 + 0] = tmp0; + drow[dpitch16 + 1] = tmp1; + drow[dpitch16 + 2] = tmp2; + + drow[(dpitch16 << 1) + 0] = tmp0; + drow[(dpitch16 << 1) + 1] = tmp1; + drow[(dpitch16 << 1) + 2] = tmp2; + + drow += 3; + } + srow += src_pitch_diff; + drow += dest_pitch_diff; + } + } + else if(softscale == 4) + { + for(int y = 0; y < src_rect->h; y++) + { + for(int x = 0; x < src_rect->w; x++) + { + const unsigned int cb = (srow[x] & 0x00FF00) >> 8; + const unsigned int cr = (srow[x] & 0xFF0000) >> 16; + const unsigned int tmp0 = (srow[x] & 0xFF) | (cb << 8); + const unsigned int tmp1 = (srow[x] & 0xFF) | (cr << 8); + + + drow[0] = tmp0; + drow[1] = tmp1; + drow[2] = tmp0; + drow[3] = tmp1; + drow[dpitch16 + 0] = tmp0; + drow[dpitch16 + 1] = tmp1; + drow[dpitch16 + 2] = tmp0; + drow[dpitch16 + 3] = tmp1; + drow[(dpitch16 << 1) + 0] = tmp0; + drow[(dpitch16 << 1) + 1] = tmp1; + drow[(dpitch16 << 1) + 2] = tmp0; + drow[(dpitch16 << 1) + 3] = tmp1; + drow[(dpitch16 << 1) + dpitch16 + 0] = tmp0; + drow[(dpitch16 << 1) + dpitch16 + 1] = tmp1; + drow[(dpitch16 << 1) + dpitch16 + 2] = tmp0; + drow[(dpitch16 << 1) + dpitch16 + 3] = tmp1; + + drow += 4; + } + srow += src_pitch_diff; + drow += dest_pitch_diff; + } + } + else + { + //static bool room = 0; + //room ^= 1; //rand() & 1; + //printf("%d %d %d %d\n", src_rect->w, dpitch16, src_pitch_diff, dest_pitch_diff); + + for(int y = 0; y < src_rect->h; y++) + { + uint32 lastpixcow = srow[0]; //0x808000; + + for(int x = 0; x < src_rect->w; x += 2) + { + //unsigned int cb = ((srow[x + 0] & 0x00FF00) + (srow[x + 1] & 0x00FF00)) >> 9; + //unsigned int cr = ((srow[x + 0] & 0xFF0000) + (srow[x + 1] & 0xFF0000)) >> 17; + //if(room) + //{ + // cb = ((srow[x - 1] & 0x00FF00) + (srow[x + 0] & 0x00FF00)) >> 9; + // cr = ((srow[x - 1] & 0xFF0000) + (srow[x + 0] & 0xFF0000)) >> 17; + //} + // cb = (((srow[x + 0] >> 8) & 0xFF)*2 + ((srow[x + 1] >> 8) & 0xFF) + ((srow[x - 1] >> 8) & 0xFF) ) / 4; + // cr = (((srow[x + 0] >> 16) & 0xFF)*2 + ((srow[x + 1] >> 16) & 0xFF) + ((srow[x - 1] >> 16) & 0xFF) ) / 4; + unsigned int cb = ((lastpixcow & 0x00FF00) + ((srow[x + 0] & 0x00FF00) << 1) + (srow[x + 1] & 0x00FF00)) >> 10; + unsigned int cr = ((lastpixcow & 0xFF0000) + ((srow[x + 0] & 0xFF0000) << 1) + (srow[x + 1] & 0xFF0000)) >> 18; + + + drow[0] = (srow[x + 0] & 0xFF) | (cb << 8); + drow[1] = (srow[x + 1] & 0xFF) | (cr << 8); + + lastpixcow = srow[x + 1]; + + drow += 2; + } + srow += src_pitch_diff; + drow += dest_pitch_diff; + } + } // End else to softscale + } + SDL_UnlockYUVOverlay(ov); + + if(SDL_DisplayYUVOverlay(ov, &drect) != 0) + { + puts("Blit error"); + } +} + +void OV_Kill(void) +{ + if(ov) + { + SDL_FreeYUVOverlay(ov); + ov = NULL; + } +} diff --git a/libmednahawk/src/drivers/overlay.h b/libmednahawk/src/drivers/overlay.h new file mode 100644 index 0000000000..96d8eda352 --- /dev/null +++ b/libmednahawk/src/drivers/overlay.h @@ -0,0 +1,9 @@ +#ifndef __MDFN_DRIVERS_OVERLAY_H +#define __MDFN_DRIVERS_OVERLAY_H + +void OV_Blit(MDFN_Surface *src_surface, const MDFN_Rect *src_rect, const MDFN_Rect *original_src_rect, + const SDL_Rect *dest_rect, SDL_Surface *dest_surface, int softscale, int scanlines, int rotated); + +void OV_Kill(void); + +#endif diff --git a/libmednahawk/src/drivers/prompt.cpp b/libmednahawk/src/drivers/prompt.cpp new file mode 100644 index 0000000000..028fadfcba --- /dev/null +++ b/libmednahawk/src/drivers/prompt.cpp @@ -0,0 +1,209 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include +#include "prompt.h" +#include "../string/ConvertUTF.h" + +HappyPrompt::HappyPrompt(void) +{ + PromptText = ""; + kb_buffer.clear(); + kb_cursor_pos = 0; +} + +HappyPrompt::HappyPrompt(const std::string &ptext, const std::string &zestring) +{ + PromptText = ""; + kb_buffer.clear(); + kb_cursor_pos = 0; + SetText(ptext); + SetKBB(zestring); +} + +HappyPrompt::~HappyPrompt() +{ + +} + +void HappyPrompt::TheEnd(const std::string &pstring) +{ + + +} + +void HappyPrompt::SetText(const std::string &ptext) +{ + PromptText = ptext; +} + +void HappyPrompt::SetKBB(const std::string &zestring) +{ + UTF8 *utf8_buffer = (UTF8*)strdup(zestring.c_str()); + UTF32 *utf32_buffer; + const UTF8 *sourceStart = utf8_buffer, *sourceEnd = utf8_buffer + zestring.size(); + UTF32 *targetStart, *targetEnd; + + utf32_buffer = (UTF32 *)calloc(1, zestring.size() * 4); + targetStart = utf32_buffer; + targetEnd = utf32_buffer + zestring.size() * 4; + + + if(ConvertUTF8toUTF32(&sourceStart, sourceEnd, &targetStart, targetEnd,lenientConversion) == conversionOK) + { + size_t meow_count = targetStart - utf32_buffer; + + for(unsigned int x = 0; x < meow_count; x++) + { + kb_buffer.push_back(utf32_buffer[x]); + kb_cursor_pos++; + } + } + + free(utf32_buffer); +} + +#define MK_COLOR_A(r,g,b,a) (surface->MakeColor(r, g, b, a)) + +void HappyPrompt::Draw(MDFN_Surface *surface, const MDFN_Rect *rect) +{ + std::vector PromptAnswer; + std::vector PromptAnswerOffsets; + std::vector PromptAnswerWidths; + uint32 offset_accum = 0; + + PromptAnswerOffsets.clear(); + PromptAnswerWidths.clear(); + + for(unsigned int i = 0; i < kb_buffer.size(); i++) + { + uint32 gw; + UTF32 tmp_str[2]; + + PromptAnswer.push_back(kb_buffer[i]); + PromptAnswerOffsets.push_back(offset_accum); + + tmp_str[0] = kb_buffer[i]; + tmp_str[1] = 0; + + gw = GetTextPixLength(tmp_str, MDFN_FONT_6x13_12x13); + + offset_accum += gw; + PromptAnswerWidths.push_back(gw); + } + PromptAnswer.push_back(0); + PromptAnswerOffsets.push_back(offset_accum); + +/* +****************************** +* PC * +* F00F * +****************************** +*/ + uint32 *pixels = surface->pixels; + uint32 pitch32 = surface->pitchinpix; + + pixels += ((rect->h / 2) - (4 * 13 / 2)) * pitch32; + pixels += ((rect->w / 2) - (6 * 39 / 2)); + + for(unsigned int y = 0; y < 4 * 13; y++) + { + uint32 *row = pixels + y * pitch32; + for(unsigned int x = 0; x < 39 * 6; x++) + row[x] = MK_COLOR_A(0x00, 0x00, 0x00, 0xFF); + } + + DrawTextTrans(pixels, surface->pitchinpix << 2, 39 * 6, (UTF8 *) "╭────────────────────────────────────╮", MK_COLOR_A(0xFF,0xFF,0xFF,0xFF), 0, MDFN_FONT_6x13_12x13); + DrawTextTrans(pixels + 13 * 1 * pitch32, surface->pitchinpix << 2, 39 * 6, (UTF8 *)"│ │", MK_COLOR_A(0xFF,0xFF,0xFF,0xFF), 0, MDFN_FONT_6x13_12x13); + DrawTextTrans(pixels + 13 * 2 * pitch32, surface->pitchinpix << 2, 39 * 6, (UTF8 *)"│ │", MK_COLOR_A(0xFF,0xFF,0xFF,0xFF), 0, MDFN_FONT_6x13_12x13); + DrawTextTrans(pixels + 13 * 3 * pitch32, surface->pitchinpix << 2, 39 * 6, (UTF8 *)"╰────────────────────────────────────╯", MK_COLOR_A(0xFF,0xFF,0xFF,0xFF), 0, MDFN_FONT_6x13_12x13); + + DrawTextTrans(pixels + 13 * 1 * pitch32 + 2 * 6, surface->pitchinpix << 2, (39 - 4) * 6, (UTF8 *)PromptText.c_str(), MK_COLOR_A(0xFF, 0x00, 0xFF, 0xFF), 0, MDFN_FONT_6x13_12x13); + DrawTextTrans(pixels + (13 * 2 + 2) * pitch32 + 2 * 6, surface->pitchinpix << 2, (39 - 4) * 6, &PromptAnswer[0], MK_COLOR_A(0x00, 0xFF, 0x00, 0xFF), 0, MDFN_FONT_6x13_12x13); + + if(SDL_GetTicks() & 0x80) + { + uint32 xpos; + + xpos = PromptAnswerOffsets[kb_cursor_pos]; + if(xpos < ((39 - 4) * 6)) + { + UTF8 *blinky_thingy = (UTF8*)"â–‰"; + if(PromptAnswerWidths.size() > kb_cursor_pos && PromptAnswerWidths[kb_cursor_pos] == 12) + blinky_thingy = (UTF8*)"▉▉"; + DrawTextTrans(pixels + (13 * 2 + 2) * pitch32 + 2 * 6 + xpos, surface->pitchinpix << 2, 9, blinky_thingy, MK_COLOR_A(0x00, 0xFF, 0x00, 0xFF), 0, MDFN_FONT_6x13_12x13); + } + } +} + +void HappyPrompt::Event(const SDL_Event *event) +{ + if(event->type == SDL_KEYDOWN) + { + switch(event->key.keysym.sym) + { + case SDLK_HOME: + kb_cursor_pos = 0; + break; + case SDLK_END: + kb_cursor_pos = kb_buffer.size(); + break; + case SDLK_LEFT: + if(kb_cursor_pos) + kb_cursor_pos--; + break; + case SDLK_RIGHT: + if(kb_cursor_pos < kb_buffer.size()) + kb_cursor_pos++; + break; + case SDLK_RETURN: + { + std::string concat_str; + + for(unsigned int i = 0; i < kb_buffer.size(); i++) + concat_str += kb_buffer[i]; + + TheEnd(concat_str); + kb_buffer.clear(); + kb_cursor_pos = 0; + } + break; + + case SDLK_BACKSPACE: + if(kb_buffer.size() && kb_cursor_pos) + { + kb_buffer.erase(kb_buffer.begin() + kb_cursor_pos - 1, kb_buffer.begin() + kb_cursor_pos); + kb_cursor_pos--; + } + break; + case SDLK_DELETE: + if(kb_buffer.size() && kb_cursor_pos < kb_buffer.size()) + { + kb_buffer.erase(kb_buffer.begin() + kb_cursor_pos, kb_buffer.begin() + kb_cursor_pos + 1); + } + break; + default: + if(event->key.keysym.unicode) + { + kb_buffer.insert(kb_buffer.begin() + kb_cursor_pos, event->key.keysym.unicode); + kb_cursor_pos++; + } + break; + } + } +} diff --git a/libmednahawk/src/drivers/prompt.h b/libmednahawk/src/drivers/prompt.h new file mode 100644 index 0000000000..adedf1589d --- /dev/null +++ b/libmednahawk/src/drivers/prompt.h @@ -0,0 +1,30 @@ +#ifndef __MDFN_DRIVERS_PROMPT_H +#define __MDFN_DRIVERS_PROMPT_H + +class HappyPrompt +{ + public: + HappyPrompt(const std::string &ptext, const std::string &zestring); + HappyPrompt(); + + virtual ~HappyPrompt(); + + void Draw(MDFN_Surface *surface, const MDFN_Rect *rect); + void Event(const SDL_Event *event); + void Init(const std::string &ptext, const std::string &zestring); + void SetText(const std::string &ptext); + void SetKBB(const std::string &zestring); + + virtual void TheEnd(const std::string &pstring); + + + protected: + std::string PromptText; + + private: + + std::vector kb_buffer; + unsigned int kb_cursor_pos; +}; + +#endif diff --git a/libmednahawk/src/drivers/remote.cpp b/libmednahawk/src/drivers/remote.cpp new file mode 100644 index 0000000000..8da72fd9f3 --- /dev/null +++ b/libmednahawk/src/drivers/remote.cpp @@ -0,0 +1,290 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "../string/escape.h" + +#if defined(HAVE_FCNTL) && defined(HAVE_FCNTL_H) +#include +#include +#include +#include + +// Code for the stdio emulator interface. +static char *InputBuffer; +static int64 InputBufferLen; +static int64 InputBufferOffset; + +// This kludge gives me nightmares. +//static bool CaptureErrorMessages = FALSE; +static std::string CapturedError; + +static void Remote_SendCommand(const char *command, int nargs, ...) +{ + va_list ap; + va_start(ap, nargs); + + printf("%s ", command); + + for(int i = 0; i < nargs; i++) + { + char *escaped_string = escape_string(va_arg(ap, char *)); + + fputc('"', stdout); + fputs(escaped_string, stdout); + fputc('"', stdout); + fputc(' ', stdout); + + free(escaped_string); + } + printf("\n"); + va_end(ap); +} + +static void ParseSTDIOCommand(char *buf) +{ + char *arguments[8]; + int which_argument = 0; + size_t blen = strlen(buf); + bool InQuote = 0; + char *InBegin = NULL; + char last_char = 0; + + memset(arguments, 0, sizeof(arguments)); + + for(size_t x = 0; x <= blen; x++) + { + if((buf[x] == ' ' || buf[x] == 0) && last_char != '\\' && !InQuote && InBegin) + { + buf[x] = 0; + + unescape_string(InBegin); + arguments[which_argument] = InBegin; + which_argument++; + if(which_argument == 8) + { + break; + } + InBegin = NULL; + } + else if(buf[x] != ' ' && buf[x] != '\t' && buf[x] != '"' && last_char != '\\' && !InQuote && !InBegin) + { + InBegin = &buf[x]; + } + else if(buf[x] == '"' && last_char != '\\') + { + if(InBegin) + { + buf[x] = 0; + unescape_string(InBegin); + arguments[which_argument] = InBegin; + which_argument++; + if(which_argument == 8) + { + break; + } + InQuote = 0; + InBegin = NULL; + } + else + { + InQuote = TRUE; + InBegin = &buf[x + 1]; + } + } + last_char = buf[x]; + } + + int numargs = which_argument; // numargs count includes the command. Misleading, yes! + bool success = 0; + bool suppress_success = 0; + + if(numargs) + { + if(!strcasecmp(arguments[0], "exit")) + { + MainRequestExit(); + suppress_success = TRUE; + } + else if(!strcasecmp(arguments[0], "sync_video")) + { + success = MT_FromRemote_VideoSync(); + } + else if(!strcasecmp(arguments[0], "sync_sound")) + { + success = MT_FromRemote_SoundSync(); + } + else if(!strcasecmp(arguments[0], "get_setting")) + { + if(numargs == 2) + { + std::string sval; + + LockGameMutex(TRUE); + + sval = MDFN_GetSettingS(arguments[1]); + success = TRUE; + + LockGameMutex(FALSE); + + Remote_SendCommand("return", 2, "success", sval.c_str()); + return; + } + else + puts("Invalid number of arguments"); + } + else if(!strcasecmp(arguments[0], "set_setting")) + { + if(numargs == 3) + { + LockGameMutex(TRUE); + success = MDFNI_SetSetting(arguments[1], arguments[2]); + LockGameMutex(FALSE); + } + else + puts("Invalid number of arguments"); + } + else if(!strcasecmp(arguments[0], "get_known_fileexts")) + { + uint32 count = 0; + char count_string[64]; + + // TODO: Move to core + for(unsigned int i = 0; i < MDFNSystems.size(); i++) + { + const FileExtensionSpecStruct *FileExtensions = MDFNSystems[i]->FileExtensions; + if(FileExtensions) + while(FileExtensions->extension) + { + count++; + FileExtensions++; + } + } + trio_snprintf(count_string, 64, "%u", count); + Remote_SendCommand("result_count", 1, count_string); + + for(unsigned int i = 0; i < MDFNSystems.size(); i++) + { + const FileExtensionSpecStruct *FileExtensions = MDFNSystems[i]->FileExtensions; + if(FileExtensions) + while(FileExtensions->extension) + { + Remote_SendCommand("result", 3, MDFNSystems[i]->shortname, FileExtensions->extension, FileExtensions->description); + FileExtensions++; + } + } + success = TRUE; + } + else + { + puts("Unknown command!"); + } + } + + if(!suppress_success) + { + if(success) + { + Remote_SendCommand("return", 1, "success"); + } + else + { + Remote_SendCommand("return", 1, "failure"); + } + } + //printf("%s %s %s %s %s %s\n", arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); +} + +// Called from the main thread. +void CheckForSTDIOMessages(void) +{ + char inval; + + while(read(fileno(stdin), &inval, 1) == 1) + { + if(InputBufferOffset == InputBufferLen) + { + InputBufferLen += 256; + InputBuffer = (char*)realloc(InputBuffer, InputBufferLen); + } + + if(inval == '\n') + { + InputBuffer[InputBufferOffset] = 0; + + for(int64 x = 0; x < InputBufferOffset; x++) + if(InputBuffer[x] == '\r') + InputBuffer[x] = 0; + + ParseSTDIOCommand(InputBuffer); + InputBufferOffset = 0; + } + else + InputBuffer[InputBufferOffset++] = inval; + + } +} + +bool InitSTDIOInterface(void) +{ + if(fcntl(fileno(stdin), F_SETFL, O_NONBLOCK | O_RDONLY)) + { + puts("fcntl error"); + return(0); + } + + InputBuffer = NULL; + InputBufferLen = 0; + InputBufferOffset = 0; + + return(TRUE); +} + +void Remote_SendStatusMessage(const char *message) +{ + Remote_SendCommand("status_message", 1, message); +} + +void Remote_SendErrorMessage(const char *message) +{ + Remote_SendCommand("error_message", 1, message); +} + + +#else + +void CheckForSTDIOMessages(void) +{ + +} + +bool InitSTDIOInterface(void) +{ + return(0); +} + +void Remote_SendStatusMessage(const char *message) +{ + +} + +void Remote_SendErrorMessage(const char *message) +{ + +} + +#endif diff --git a/libmednahawk/src/drivers/remote.h b/libmednahawk/src/drivers/remote.h new file mode 100644 index 0000000000..70e2a10f8d --- /dev/null +++ b/libmednahawk/src/drivers/remote.h @@ -0,0 +1,9 @@ +#ifndef __MDFN_DRIVERS_REMOTE_H +#define __MDFN_DRIVERS_REMOTE_H + +void CheckForSTDIOMessages(void); +bool InitSTDIOInterface(void); +void Remote_SendStatusMessage(const char *message); +void Remote_SendErrorMessage(const char *message); + +#endif diff --git a/libmednahawk/src/drivers/scale2x.c b/libmednahawk/src/drivers/scale2x.c new file mode 100644 index 0000000000..714204f58c --- /dev/null +++ b/libmednahawk/src/drivers/scale2x.c @@ -0,0 +1,926 @@ +/* + * This file is part of the Scale2x project. + * + * Copyright (C) 2001, 2002, 2003, 2004 Andrea Mazzoleni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This file contains a C and MMX implementation of the Scale2x effect. + * + * You can find an high level description of the effect at : + * + * http://scale2x.sourceforge.net/ + * + * Alternatively at the previous license terms, you are allowed to use this + * code in your program with these conditions: + * - the program is not used in commercial activities. + * - the whole source code of the program is released with the binary. + * - derivative works of the program are allowed. + */ + +#include "scale2x.h" + +#include + +#define inline //zero 07-feb-2012 +#define __restrict__ //zero 07-feb-2012 + +/***************************************************************************/ +/* Scale2x C implementation */ + +static inline void scale2x_8_def_single(scale2x_uint8* __restrict__ dst, const scale2x_uint8* __restrict__ src0, const scale2x_uint8* __restrict__ src1, const scale2x_uint8* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + if (src1[1] == src0[0] && src2[0] != src0[0]) + dst[1] = src0[0]; + else + dst[1] = src1[0]; + ++src0; + ++src1; + ++src2; + dst += 2; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; + dst[1] = src1[1] == src0[0] ? src0[0] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 2; + --count; + } + + /* last pixel */ + if (src1[-1] == src0[0] && src2[0] != src0[0]) + dst[0] = src0[0]; + else + dst[0] = src1[0]; + dst[1] = src1[0]; +} + +static inline void scale2x_16_def_single(scale2x_uint16* __restrict__ dst, const scale2x_uint16* __restrict__ src0, const scale2x_uint16* __restrict__ src1, const scale2x_uint16* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + if (src1[1] == src0[0] && src2[0] != src0[0]) + dst[1] = src0[0]; + else + dst[1] = src1[0]; + ++src0; + ++src1; + ++src2; + dst += 2; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; + dst[1] = src1[1] == src0[0] ? src0[0] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 2; + --count; + } + + /* last pixel */ + if (src1[-1] == src0[0] && src2[0] != src0[0]) + dst[0] = src0[0]; + else + dst[0] = src1[0]; + dst[1] = src1[0]; +} + +static inline void scale2x_32_def_single(scale2x_uint32* __restrict__ dst, const scale2x_uint32* __restrict__ src0, const scale2x_uint32* __restrict__ src1, const scale2x_uint32* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + if (src1[1] == src0[0] && src2[0] != src0[0]) + dst[1] = src0[0]; + else + dst[1] = src1[0]; + ++src0; + ++src1; + ++src2; + dst += 2; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; + dst[1] = src1[1] == src0[0] ? src0[0] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 2; + --count; + } + + /* last pixel */ + if (src1[-1] == src0[0] && src2[0] != src0[0]) + dst[0] = src0[0]; + else + dst[0] = src1[0]; + dst[1] = src1[0]; +} + +/** + * Scale by a factor of 2 a row of pixels of 8 bits. + * The function is implemented in C. + * The pixels over the left and right borders are assumed of the same color of + * the pixels on the border. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. + * It must be at least 2. + * \param dst0 First destination row, double length in pixels. + * \param dst1 Second destination row, double length in pixels. + */ +void scale2x_8_def(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) +{ + assert(count >= 2); + + scale2x_8_def_single(dst0, src0, src1, src2, count); + scale2x_8_def_single(dst1, src2, src1, src0, count); +} + +/** + * Scale by a factor of 2 a row of pixels of 16 bits. + * This function operates like scale2x_8_def() but for 16 bits pixels. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. + * It must be at least 2. + * \param dst0 First destination row, double length in pixels. + * \param dst1 Second destination row, double length in pixels. + */ +void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) +{ + assert(count >= 2); + + scale2x_16_def_single(dst0, src0, src1, src2, count); + scale2x_16_def_single(dst1, src2, src1, src0, count); +} + +/** + * Scale by a factor of 2 a row of pixels of 32 bits. + * This function operates like scale2x_8_def() but for 32 bits pixels. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. + * It must be at least 2. + * \param dst0 First destination row, double length in pixels. + * \param dst1 Second destination row, double length in pixels. + */ +void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) +{ + assert(count >= 2); + + scale2x_32_def_single(dst0, src0, src1, src2, count); + scale2x_32_def_single(dst1, src2, src1, src0, count); +} + +/***************************************************************************/ +/* Scale2x MMX implementation */ + +#if defined(__GNUC__) && defined(__i386__) + +/* + * Apply the Scale2x effect at a single row. + * This function must be called only by the other scale2x functions. + * + * Considering the pixel map : + * + * ABC (src0) + * DEF (src1) + * GHI (src2) + * + * this functions compute 2 new pixels in substitution of the source pixel E + * like this map : + * + * ab (dst) + * + * with these variables : + * + * ¤t -> E + * ¤t_left -> D + * ¤t_right -> F + * ¤t_upper -> B + * ¤t_lower -> H + * + * %0 -> current_upper + * %1 -> current + * %2 -> current_lower + * %3 -> dst + * %4 -> counter + * + * %mm0 -> *current_left + * %mm1 -> *current_next + * %mm2 -> tmp0 + * %mm3 -> tmp1 + * %mm4 -> tmp2 + * %mm5 -> tmp3 + * %mm6 -> *current_upper + * %mm7 -> *current + */ +static inline void scale2x_8_mmx_single(scale2x_uint8* dst, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) +{ + assert(count >= 16); + assert(count % 8 == 0); + + /* always do the first and last run */ + count -= 2*8; + + __asm__ __volatile__( +/* first run */ + /* set the current, current_pre, current_next registers */ + "movq 0(%1), %%mm0\n" + "movq 0(%1), %%mm7\n" + "movq 8(%1), %%mm1\n" + "psllq $56, %%mm0\n" + "psllq $56, %%mm1\n" + "psrlq $56, %%mm0\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $8, %%mm2\n" + "psrlq $8, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqb %%mm6, %%mm2\n" + "pcmpeqb %%mm6, %%mm4\n" + "pcmpeqb (%2), %%mm3\n" + "pcmpeqb (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqb %%mm1, %%mm2\n" + "pcmpeqb %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpcklbw %%mm4, %%mm2\n" + "punpckhbw %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + /* next */ + "addl $8, %0\n" + "addl $8, %1\n" + "addl $8, %2\n" + "addl $16, %3\n" + +/* central runs */ + "shrl $3, %4\n" + "jz 1f\n" + + "0:\n" + + /* set the current, current_pre, current_next registers */ + "movq -8(%1), %%mm0\n" + "movq (%1), %%mm7\n" + "movq 8(%1), %%mm1\n" + "psrlq $56, %%mm0\n" + "psllq $56, %%mm1\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $8, %%mm2\n" + "psrlq $8, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqb %%mm6, %%mm2\n" + "pcmpeqb %%mm6, %%mm4\n" + "pcmpeqb (%2), %%mm3\n" + "pcmpeqb (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqb %%mm1, %%mm2\n" + "pcmpeqb %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpcklbw %%mm4, %%mm2\n" + "punpckhbw %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + /* next */ + "addl $8, %0\n" + "addl $8, %1\n" + "addl $8, %2\n" + "addl $16, %3\n" + + "decl %4\n" + "jnz 0b\n" + "1:\n" + +/* final run */ + /* set the current, current_pre, current_next registers */ + "movq (%1), %%mm1\n" + "movq (%1), %%mm7\n" + "movq -8(%1), %%mm0\n" + "psrlq $56, %%mm1\n" + "psrlq $56, %%mm0\n" + "psllq $56, %%mm1\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $8, %%mm2\n" + "psrlq $8, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqb %%mm6, %%mm2\n" + "pcmpeqb %%mm6, %%mm4\n" + "pcmpeqb (%2), %%mm3\n" + "pcmpeqb (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqb %%mm1, %%mm2\n" + "pcmpeqb %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpcklbw %%mm4, %%mm2\n" + "punpckhbw %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + : "+r" (src0), "+r" (src1), "+r" (src2), "+r" (dst), "+r" (count) + : + : "cc" + ); +} + +static inline void scale2x_16_mmx_single(scale2x_uint16* dst, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) +{ + assert(count >= 8); + assert(count % 4 == 0); + + /* always do the first and last run */ + count -= 2*4; + + __asm__ __volatile__( +/* first run */ + /* set the current, current_pre, current_next registers */ + "movq 0(%1), %%mm0\n" + "movq 0(%1), %%mm7\n" + "movq 8(%1), %%mm1\n" + "psllq $48, %%mm0\n" + "psllq $48, %%mm1\n" + "psrlq $48, %%mm0\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $16, %%mm2\n" + "psrlq $16, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqw %%mm6, %%mm2\n" + "pcmpeqw %%mm6, %%mm4\n" + "pcmpeqw (%2), %%mm3\n" + "pcmpeqw (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqw %%mm1, %%mm2\n" + "pcmpeqw %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpcklwd %%mm4, %%mm2\n" + "punpckhwd %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + /* next */ + "addl $8, %0\n" + "addl $8, %1\n" + "addl $8, %2\n" + "addl $16, %3\n" + +/* central runs */ + "shrl $2, %4\n" + "jz 1f\n" + + "0:\n" + + /* set the current, current_pre, current_next registers */ + "movq -8(%1), %%mm0\n" + "movq (%1), %%mm7\n" + "movq 8(%1), %%mm1\n" + "psrlq $48, %%mm0\n" + "psllq $48, %%mm1\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $16, %%mm2\n" + "psrlq $16, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqw %%mm6, %%mm2\n" + "pcmpeqw %%mm6, %%mm4\n" + "pcmpeqw (%2), %%mm3\n" + "pcmpeqw (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqw %%mm1, %%mm2\n" + "pcmpeqw %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpcklwd %%mm4, %%mm2\n" + "punpckhwd %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + /* next */ + "addl $8, %0\n" + "addl $8, %1\n" + "addl $8, %2\n" + "addl $16, %3\n" + + "decl %4\n" + "jnz 0b\n" + "1:\n" + +/* final run */ + /* set the current, current_pre, current_next registers */ + "movq (%1), %%mm1\n" + "movq (%1), %%mm7\n" + "movq -8(%1), %%mm0\n" + "psrlq $48, %%mm1\n" + "psrlq $48, %%mm0\n" + "psllq $48, %%mm1\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $16, %%mm2\n" + "psrlq $16, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqw %%mm6, %%mm2\n" + "pcmpeqw %%mm6, %%mm4\n" + "pcmpeqw (%2), %%mm3\n" + "pcmpeqw (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqw %%mm1, %%mm2\n" + "pcmpeqw %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpcklwd %%mm4, %%mm2\n" + "punpckhwd %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + : "+r" (src0), "+r" (src1), "+r" (src2), "+r" (dst), "+r" (count) + : + : "cc" + ); +} + +static inline void scale2x_32_mmx_single(scale2x_uint32* dst, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) +{ + assert(count >= 4); + assert(count % 2 == 0); + + /* always do the first and last run */ + count -= 2*2; + + __asm__ __volatile__( +/* first run */ + /* set the current, current_pre, current_next registers */ + "movq 0(%1), %%mm0\n" + "movq 0(%1), %%mm7\n" + "movq 8(%1), %%mm1\n" + "psllq $32, %%mm0\n" + "psllq $32, %%mm1\n" + "psrlq $32, %%mm0\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $32, %%mm2\n" + "psrlq $32, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqd %%mm6, %%mm2\n" + "pcmpeqd %%mm6, %%mm4\n" + "pcmpeqd (%2), %%mm3\n" + "pcmpeqd (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqd %%mm1, %%mm2\n" + "pcmpeqd %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpckldq %%mm4, %%mm2\n" + "punpckhdq %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + /* next */ + "addl $8, %0\n" + "addl $8, %1\n" + "addl $8, %2\n" + "addl $16, %3\n" + +/* central runs */ + "shrl $1, %4\n" + "jz 1f\n" + + "0:\n" + + /* set the current, current_pre, current_next registers */ + "movq -8(%1), %%mm0\n" + "movq (%1), %%mm7\n" + "movq 8(%1), %%mm1\n" + "psrlq $32, %%mm0\n" + "psllq $32, %%mm1\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $32, %%mm2\n" + "psrlq $32, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqd %%mm6, %%mm2\n" + "pcmpeqd %%mm6, %%mm4\n" + "pcmpeqd (%2), %%mm3\n" + "pcmpeqd (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqd %%mm1, %%mm2\n" + "pcmpeqd %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpckldq %%mm4, %%mm2\n" + "punpckhdq %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + /* next */ + "addl $8, %0\n" + "addl $8, %1\n" + "addl $8, %2\n" + "addl $16, %3\n" + + "decl %4\n" + "jnz 0b\n" + "1:\n" + +/* final run */ + /* set the current, current_pre, current_next registers */ + "movq (%1), %%mm1\n" + "movq (%1), %%mm7\n" + "movq -8(%1), %%mm0\n" + "psrlq $32, %%mm1\n" + "psrlq $32, %%mm0\n" + "psllq $32, %%mm1\n" + "movq %%mm7, %%mm2\n" + "movq %%mm7, %%mm3\n" + "psllq $32, %%mm2\n" + "psrlq $32, %%mm3\n" + "por %%mm2, %%mm0\n" + "por %%mm3, %%mm1\n" + + /* current_upper */ + "movq (%0), %%mm6\n" + + /* compute the upper-left pixel for dst on %%mm2 */ + /* compute the upper-right pixel for dst on %%mm4 */ + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "movq %%mm0, %%mm3\n" + "movq %%mm1, %%mm5\n" + "pcmpeqd %%mm6, %%mm2\n" + "pcmpeqd %%mm6, %%mm4\n" + "pcmpeqd (%2), %%mm3\n" + "pcmpeqd (%2), %%mm5\n" + "pandn %%mm2, %%mm3\n" + "pandn %%mm4, %%mm5\n" + "movq %%mm0, %%mm2\n" + "movq %%mm1, %%mm4\n" + "pcmpeqd %%mm1, %%mm2\n" + "pcmpeqd %%mm0, %%mm4\n" + "pandn %%mm3, %%mm2\n" + "pandn %%mm5, %%mm4\n" + "movq %%mm2, %%mm3\n" + "movq %%mm4, %%mm5\n" + "pand %%mm6, %%mm2\n" + "pand %%mm6, %%mm4\n" + "pandn %%mm7, %%mm3\n" + "pandn %%mm7, %%mm5\n" + "por %%mm3, %%mm2\n" + "por %%mm5, %%mm4\n" + + /* set *dst */ + "movq %%mm2, %%mm3\n" + "punpckldq %%mm4, %%mm2\n" + "punpckhdq %%mm4, %%mm3\n" + "movq %%mm2, (%3)\n" + "movq %%mm3, 8(%3)\n" + + : "+r" (src0), "+r" (src1), "+r" (src2), "+r" (dst), "+r" (count) + : + : "cc" + ); +} + +/** + * Scale by a factor of 2 a row of pixels of 8 bits. + * This is a very fast MMX implementation. + * The implementation uses a combination of cmp/and/not operations to + * completly remove the need of conditional jumps. This trick give the + * major speed improvement. + * Also, using the 8 bytes MMX registers more than one pixel are computed + * at the same time. + * Before calling this function you must ensure that the currenct CPU supports + * the MMX instruction set. After calling it you must be sure to call the EMMS + * instruction before any floating-point operation. + * The pixels over the left and right borders are assumed of the same color of + * the pixels on the border. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. It must + * be at least 16 and a multiple of 8. + * \param dst0 First destination row, double length in pixels. + * \param dst1 Second destination row, double length in pixels. + */ +void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) +{ + if (count % 8 != 0 || count < 16) { + scale2x_8_def(dst0, dst1, src0, src1, src2, count); + } else { + assert(count >= 16); + assert(count % 8 == 0); + + scale2x_8_mmx_single(dst0, src0, src1, src2, count); + scale2x_8_mmx_single(dst1, src2, src1, src0, count); + } +} + +/** + * Scale by a factor of 2 a row of pixels of 16 bits. + * This function operates like scale2x_8_mmx() but for 16 bits pixels. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. It must + * be at least 8 and a multiple of 4. + * \param dst0 First destination row, double length in pixels. + * \param dst1 Second destination row, double length in pixels. + */ +void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) +{ + if (count % 4 != 0 || count < 8) { + scale2x_16_def(dst0, dst1, src0, src1, src2, count); + } else { + assert(count >= 8); + assert(count % 4 == 0); + + scale2x_16_mmx_single(dst0, src0, src1, src2, count); + scale2x_16_mmx_single(dst1, src2, src1, src0, count); + } +} + +/** + * Scale by a factor of 2 a row of pixels of 32 bits. + * This function operates like scale2x_8_mmx() but for 32 bits pixels. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. It must + * be at least 4 and a multiple of 2. + * \param dst0 First destination row, double length in pixels. + * \param dst1 Second destination row, double length in pixels. + */ +void scale2x_32_mmx(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) +{ + if (count % 2 != 0 || count < 4) { + scale2x_32_def(dst0, dst1, src0, src1, src2, count); + } else { + assert(count >= 4); + assert(count % 2 == 0); + + scale2x_32_mmx_single(dst0, src0, src1, src2, count); + scale2x_32_mmx_single(dst1, src2, src1, src0, count); + } +} + +#endif + diff --git a/libmednahawk/src/drivers/scale2x.h b/libmednahawk/src/drivers/scale2x.h new file mode 100644 index 0000000000..fa6d152ebb --- /dev/null +++ b/libmednahawk/src/drivers/scale2x.h @@ -0,0 +1,52 @@ +/* + * This file is part of the Scale2x project. + * + * Copyright (C) 2001, 2002, 2003, 2004 Andrea Mazzoleni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __SCALE2X_H +#define __SCALE2X_H + +typedef unsigned char scale2x_uint8; +typedef unsigned short scale2x_uint16; +typedef unsigned scale2x_uint32; + +void scale2x_8_def(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count); +void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count); +void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count); + +#if defined(__GNUC__) && defined(__i386__) + +void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count); +void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count); +void scale2x_32_mmx(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count); + +/** + * End the use of the MMX instructions. + * This function must be called before using any floating-point operations. + */ +static inline void scale2x_mmx_emms(void) +{ + __asm__ __volatile__ ( + "emms" + ); +} + +#endif + +#endif + diff --git a/libmednahawk/src/drivers/scale3x.c b/libmednahawk/src/drivers/scale3x.c new file mode 100644 index 0000000000..0054a51603 --- /dev/null +++ b/libmednahawk/src/drivers/scale3x.c @@ -0,0 +1,385 @@ +/* + * This file is part of the Scale2x project. + * + * Copyright (C) 2001, 2002, 2003, 2004 Andrea Mazzoleni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This file contains a C and MMX implementation of the Scale2x effect. + * + * You can find an high level description of the effect at : + * + * http://scale2x.sourceforge.net/ + * + * Alternatively at the previous license terms, you are allowed to use this + * code in your program with these conditions: + * - the program is not used in commercial activities. + * - the whole source code of the program is released with the binary. + * - derivative works of the program are allowed. + */ + +#include "scale3x.h" + +#include + +#define inline //zero 07-feb-2012 +#define __restrict__ //zero 07-feb-2012 + +/***************************************************************************/ +/* Scale3x C implementation */ + +static inline void scale3x_8_def_border(scale3x_uint8* __restrict__ dst, const scale3x_uint8* __restrict__ src0, const scale3x_uint8* __restrict__ src1, const scale3x_uint8* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + dst[1] = src1[0]; + if (src1[1] == src0[0] && src2[0] != src0[0]) + dst[2] = src0[0]; + else + dst[2] = src1[0]; + ++src0; + ++src1; + ++src2; + dst += 3; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; + dst[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; + dst[2] = src1[1] == src0[0] ? src1[1] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 3; + --count; + } + + /* last pixel */ + if (src1[-1] == src0[0] && src2[0] != src0[0]) + dst[0] = src0[0]; + else + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; +} + +static inline void scale3x_8_def_center(scale3x_uint8* __restrict__ dst, const scale3x_uint8* __restrict__ src0, const scale3x_uint8* __restrict__ src1, const scale3x_uint8* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + dst[1] = src1[0]; + if (src0[0] != src2[0]) { + dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + } else { + dst[2] = src1[0]; + } + ++src0; + ++src1; + ++src2; + dst += 3; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + dst[1] = src1[0]; + dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 3; + --count; + } + + /* last pixel */ + if (src0[0] != src2[0]) { + dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + } else { + dst[0] = src1[0]; + } + dst[1] = src1[0]; + dst[2] = src1[0]; +} + +static inline void scale3x_16_def_border(scale3x_uint16* __restrict__ dst, const scale3x_uint16* __restrict__ src0, const scale3x_uint16* __restrict__ src1, const scale3x_uint16* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + dst[1] = src1[0]; + if (src1[1] == src0[0] && src2[0] != src0[0]) + dst[2] = src0[0]; + else + dst[2] = src1[0]; + ++src0; + ++src1; + ++src2; + dst += 3; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; + dst[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; + dst[2] = src1[1] == src0[0] ? src1[1] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 3; + --count; + } + + /* last pixel */ + if (src1[-1] == src0[0] && src2[0] != src0[0]) + dst[0] = src0[0]; + else + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; +} + +static inline void scale3x_16_def_center(scale3x_uint16* __restrict__ dst, const scale3x_uint16* __restrict__ src0, const scale3x_uint16* __restrict__ src1, const scale3x_uint16* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + dst[1] = src1[0]; + if (src0[0] != src2[0]) { + dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + } else { + dst[2] = src1[0]; + } + ++src0; + ++src1; + ++src2; + dst += 3; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + dst[1] = src1[0]; + dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 3; + --count; + } + + /* last pixel */ + if (src0[0] != src2[0]) { + dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + } else { + dst[0] = src1[0]; + } + dst[1] = src1[0]; + dst[2] = src1[0]; +} + +static inline void scale3x_32_def_border(scale3x_uint32* __restrict__ dst, const scale3x_uint32* __restrict__ src0, const scale3x_uint32* __restrict__ src1, const scale3x_uint32* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + dst[1] = src1[0]; + if (src1[1] == src0[0] && src2[0] != src0[0]) + dst[2] = src0[0]; + else + dst[2] = src1[0]; + ++src0; + ++src1; + ++src2; + dst += 3; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; + dst[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; + dst[2] = src1[1] == src0[0] ? src1[1] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 3; + --count; + } + + /* last pixel */ + if (src1[-1] == src0[0] && src2[0] != src0[0]) + dst[0] = src0[0]; + else + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; +} + +static inline void scale3x_32_def_center(scale3x_uint32* __restrict__ dst, const scale3x_uint32* __restrict__ src0, const scale3x_uint32* __restrict__ src1, const scale3x_uint32* __restrict__ src2, unsigned count) +{ + assert(count >= 2); + + /* first pixel */ + dst[0] = src1[0]; + dst[1] = src1[0]; + if (src0[0] != src2[0]) { + dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + } else { + dst[2] = src1[0]; + } + ++src0; + ++src1; + ++src2; + dst += 3; + + /* central pixels */ + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + dst[1] = src1[0]; + dst[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + } else { + dst[0] = src1[0]; + dst[1] = src1[0]; + dst[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst += 3; + --count; + } + + /* last pixel */ + if (src0[0] != src2[0]) { + dst[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + } else { + dst[0] = src1[0]; + } + dst[1] = src1[0]; + dst[2] = src1[0]; +} + +/** + * Scale by a factor of 3 a row of pixels of 8 bits. + * The function is implemented in C. + * The pixels over the left and right borders are assumed of the same color of + * the pixels on the border. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. + * It must be at least 2. + * \param dst0 First destination row, triple length in pixels. + * \param dst1 Second destination row, triple length in pixels. + * \param dst2 Third destination row, triple length in pixels. + */ +void scale3x_8_def(scale3x_uint8* dst0, scale3x_uint8* dst1, scale3x_uint8* dst2, const scale3x_uint8* src0, const scale3x_uint8* src1, const scale3x_uint8* src2, unsigned count) +{ + assert(count >= 2); + + scale3x_8_def_border(dst0, src0, src1, src2, count); + scale3x_8_def_center(dst1, src0, src1, src2, count); + scale3x_8_def_border(dst2, src2, src1, src0, count); +} + +/** + * Scale by a factor of 3 a row of pixels of 16 bits. + * This function operates like scale3x_8_def() but for 16 bits pixels. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. + * It must be at least 2. + * \param dst0 First destination row, triple length in pixels. + * \param dst1 Second destination row, triple length in pixels. + * \param dst2 Third destination row, triple length in pixels. + */ +void scale3x_16_def(scale3x_uint16* dst0, scale3x_uint16* dst1, scale3x_uint16* dst2, const scale3x_uint16* src0, const scale3x_uint16* src1, const scale3x_uint16* src2, unsigned count) +{ + assert(count >= 2); + + scale3x_16_def_border(dst0, src0, src1, src2, count); + scale3x_16_def_center(dst1, src0, src1, src2, count); + scale3x_16_def_border(dst2, src2, src1, src0, count); +} + +/** + * Scale by a factor of 3 a row of pixels of 32 bits. + * This function operates like scale3x_8_def() but for 32 bits pixels. + * \param src0 Pointer at the first pixel of the previous row. + * \param src1 Pointer at the first pixel of the current row. + * \param src2 Pointer at the first pixel of the next row. + * \param count Length in pixels of the src0, src1 and src2 rows. + * It must be at least 2. + * \param dst0 First destination row, triple length in pixels. + * \param dst1 Second destination row, triple length in pixels. + * \param dst2 Third destination row, triple length in pixels. + */ +void scale3x_32_def(scale3x_uint32* dst0, scale3x_uint32* dst1, scale3x_uint32* dst2, const scale3x_uint32* src0, const scale3x_uint32* src1, const scale3x_uint32* src2, unsigned count) +{ + assert(count >= 2); + + scale3x_32_def_border(dst0, src0, src1, src2, count); + scale3x_32_def_center(dst1, src0, src1, src2, count); + scale3x_32_def_border(dst2, src2, src1, src0, count); +} + diff --git a/libmednahawk/src/drivers/scale3x.h b/libmednahawk/src/drivers/scale3x.h new file mode 100644 index 0000000000..cb108ee706 --- /dev/null +++ b/libmednahawk/src/drivers/scale3x.h @@ -0,0 +1,33 @@ +/* + * This file is part of the Scale2x project. + * + * Copyright (C) 2001, 2002, 2003, 2004 Andrea Mazzoleni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __SCALE3X_H +#define __SCALE3X_H + +typedef unsigned char scale3x_uint8; +typedef unsigned short scale3x_uint16; +typedef unsigned scale3x_uint32; + +void scale3x_8_def(scale3x_uint8* dst0, scale3x_uint8* dst1, scale3x_uint8* dst2, const scale3x_uint8* src0, const scale3x_uint8* src1, const scale3x_uint8* src2, unsigned count); +void scale3x_16_def(scale3x_uint16* dst0, scale3x_uint16* dst1, scale3x_uint16* dst2, const scale3x_uint16* src0, const scale3x_uint16* src1, const scale3x_uint16* src2, unsigned count); +void scale3x_32_def(scale3x_uint32* dst0, scale3x_uint32* dst1, scale3x_uint32* dst2, const scale3x_uint32* src0, const scale3x_uint32* src1, const scale3x_uint32* src2, unsigned count); + +#endif + diff --git a/libmednahawk/src/drivers/scalebit.c b/libmednahawk/src/drivers/scalebit.c new file mode 100644 index 0000000000..e9883da5a7 --- /dev/null +++ b/libmednahawk/src/drivers/scalebit.c @@ -0,0 +1,387 @@ +/* + * This file is part of the Scale2x project. + * + * Copyright (C) 2003 Andrea Mazzoleni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This file contains an example implementation of the Scale effect + * applyed to a generic bitmap. + * + * You can find an high level description of the effect at : + * + * http://scale2x.sourceforge.net/ + * + * Alternatively at the previous license terms, you are allowed to use this + * code in your program with these conditions: + * - the program is not used in commercial activities. + * - the whole source code of the program is released with the binary. + * - derivative works of the program are allowed. + */ + +#if HAVE_CONFIG_H +#include +#endif + +#include "scale2x.h" +#include "scale3x.h" + +#if HAVE_ALLOCA_H +#include +#endif + +#include +#include + +#define inline //zero 07-feb-2012 + +/** + * Apply the Scale2x effect on a group of rows. Used internally. + */ +static inline void stage_scale2x(void* dst0, void* dst1, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row) +{ + switch (pixel) { +#if defined(__GNUC__) && defined(__i386__) + case 1 : scale2x_8_mmx(dst0, dst1, src0, src1, src2, pixel_per_row); break; + case 2 : scale2x_16_mmx(dst0, dst1, src0, src1, src2, pixel_per_row); break; + case 4 : scale2x_32_mmx(dst0, dst1, src0, src1, src2, pixel_per_row); break; +#else + case 1 : scale2x_8_def(dst0, dst1, src0, src1, src2, pixel_per_row); break; + case 2 : scale2x_16_def(dst0, dst1, src0, src1, src2, pixel_per_row); break; + case 4 : scale2x_32_def(dst0, dst1, src0, src1, src2, pixel_per_row); break; +#endif + } +} + +/** + * Apply the Scale3x effect on a group of rows. Used internally. + */ +static inline void stage_scale3x(void* dst0, void* dst1, void* dst2, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row) +{ + switch (pixel) { + case 1 : scale3x_8_def(dst0, dst1, dst2, src0, src1, src2, pixel_per_row); break; + case 2 : scale3x_16_def(dst0, dst1, dst2, src0, src1, src2, pixel_per_row); break; + case 4 : scale3x_32_def(dst0, dst1, dst2, src0, src1, src2, pixel_per_row); break; + } +} + +/** + * Apply the Scale4x effect on a group of rows. Used internally. + */ +static inline void stage_scale4x(void* dst0, void* dst1, void* dst2, void* dst3, const void* src0, const void* src1, const void* src2, const void* src3, unsigned pixel, unsigned pixel_per_row) +{ + stage_scale2x(dst0, dst1, src0, src1, src2, pixel, 2 * pixel_per_row); + stage_scale2x(dst2, dst3, src1, src2, src3, pixel, 2 * pixel_per_row); +} + +#define SCDST(i) (dst+(i)*dst_slice) +#define SCSRC(i) (src+(i)*src_slice) +#define SCMID(i) (mid[(i)]) + +/** + * Apply the Scale2x effect on a bitmap. + * The destination bitmap is filled with the scaled version of the source bitmap. + * The source bitmap isn't modified. + * The destination bitmap must be manually allocated before calling the function, + * note that the resulting size is exactly 2x2 times the size of the source bitmap. + * \param void_dst Pointer at the first pixel of the destination bitmap. + * \param dst_slice Size in bytes of a destination bitmap row. + * \param void_src Pointer at the first pixel of the source bitmap. + * \param src_slice Size in bytes of a source bitmap row. + * \param pixel Bytes per pixel of the source and destination bitmap. + * \param width Horizontal size in pixels of the source bitmap. + * \param height Vertical size in pixels of the source bitmap. + */ +static void scale2x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) +{ + unsigned char* dst = (unsigned char*)void_dst; + const unsigned char* src = (unsigned char*)void_src; + unsigned count; + + assert(height >= 2); + + count = height; + + stage_scale2x(SCDST(0), SCDST(1), SCSRC(0), SCSRC(0), SCSRC(1), pixel, width); + + dst = SCDST(2); + + count -= 2; + while (count) { + stage_scale2x(SCDST(0), SCDST(1), SCSRC(0), SCSRC(1), SCSRC(2), pixel, width); + + dst = SCDST(2); + src = SCSRC(1); + + --count; + } + + stage_scale2x(SCDST(0), SCDST(1), SCSRC(1-1), SCSRC(2-1), SCSRC(2-1), pixel, width); + +#if defined(__GNUC__) && defined(__i386__) + scale2x_mmx_emms(); +#endif +} + +/** + * Apply the Scale32x effect on a bitmap. + * The destination bitmap is filled with the scaled version of the source bitmap. + * The source bitmap isn't modified. + * The destination bitmap must be manually allocated before calling the function, + * note that the resulting size is exactly 3x3 times the size of the source bitmap. + * \param void_dst Pointer at the first pixel of the destination bitmap. + * \param dst_slice Size in bytes of a destination bitmap row. + * \param void_src Pointer at the first pixel of the source bitmap. + * \param src_slice Size in bytes of a source bitmap row. + * \param pixel Bytes per pixel of the source and destination bitmap. + * \param width Horizontal size in pixels of the source bitmap. + * \param height Vertical size in pixels of the source bitmap. + */ +static void scale3x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) +{ + unsigned char* dst = (unsigned char*)void_dst; + const unsigned char* src = (unsigned char*)void_src; + unsigned count; + + assert(height >= 2); + + count = height; + + stage_scale3x(SCDST(0), SCDST(1), SCDST(2), SCSRC(0), SCSRC(0), SCSRC(1), pixel, width); + + dst = SCDST(3); + + count -= 2; + while (count) { + stage_scale3x(SCDST(0), SCDST(1), SCDST(2), SCSRC(0), SCSRC(1), SCSRC(2), pixel, width); + + dst = SCDST(3); + src = SCSRC(1); + + --count; + } + + stage_scale3x(SCDST(0), SCDST(1), SCDST(2), SCSRC(1-1), SCSRC(2-1), SCSRC(2-1), pixel, width); +} + +/** + * Apply the Scale4x effect on a bitmap. + * The destination bitmap is filled with the scaled version of the source bitmap. + * The source bitmap isn't modified. + * The destination bitmap must be manually allocated before calling the function, + * note that the resulting size is exactly 4x4 times the size of the source bitmap. + * \note This function requires also a small buffer bitmap used internally to store + * intermediate results. This bitmap must have at least an horizontal size in bytes of 2*width*pixel, + * and a vertical size of 6 rows. The memory of this buffer must not be allocated + * in video memory because it's also read and not only written. Generally + * a heap (malloc) or a stack (alloca) buffer is the best choices. + * \param void_dst Pointer at the first pixel of the destination bitmap. + * \param dst_slice Size in bytes of a destination bitmap row. + * \param void_mid Pointer at the first pixel of the buffer bitmap. + * \param mid_slice Size in bytes of a buffer bitmap row. + * \param void_src Pointer at the first pixel of the source bitmap. + * \param src_slice Size in bytes of a source bitmap row. + * \param pixel Bytes per pixel of the source and destination bitmap. + * \param width Horizontal size in pixels of the source bitmap. + * \param height Vertical size in pixels of the source bitmap. + */ +static void scale4x_buf(void* void_dst, unsigned dst_slice, void* void_mid, unsigned mid_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) +{ + unsigned char* dst = (unsigned char*)void_dst; + const unsigned char* src = (unsigned char*)void_src; + unsigned count; + unsigned char* mid[6]; + + assert(height >= 4); + + count = height; + + /* set the 6 buffer pointers */ + mid[0] = (unsigned char*)void_mid; + mid[1] = mid[0] + mid_slice; + mid[2] = mid[1] + mid_slice; + mid[3] = mid[2] + mid_slice; + mid[4] = mid[3] + mid_slice; + mid[5] = mid[4] + mid_slice; + + stage_scale2x(SCMID(-2+6), SCMID(-1+6), SCSRC(0), SCSRC(0), SCSRC(1), pixel, width); + stage_scale2x(SCMID(0), SCMID(1), SCSRC(0), SCSRC(1), SCSRC(2), pixel, width); + stage_scale2x(SCMID(2), SCMID(3), SCSRC(1), SCSRC(2), SCSRC(3), pixel, width); + stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(-2+6), SCMID(-2+6), SCMID(-1+6), SCMID(0), pixel, width); + + dst = SCDST(4); + + stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(-1+6), SCMID(0), SCMID(1), SCMID(2), pixel, width); + + dst = SCDST(4); + + count -= 4; + while (count) { + unsigned char* tmp; + + stage_scale2x(SCMID(4), SCMID(5), SCSRC(2), SCSRC(3), SCSRC(4), pixel, width); + stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(1), SCMID(2), SCMID(3), SCMID(4), pixel, width); + + dst = SCDST(4); + src = SCSRC(1); + + tmp = SCMID(0); /* shift by 2 position */ + SCMID(0) = SCMID(2); + SCMID(2) = SCMID(4); + SCMID(4) = tmp; + tmp = SCMID(1); + SCMID(1) = SCMID(3); + SCMID(3) = SCMID(5); + SCMID(5) = tmp; + + --count; + } + + stage_scale2x(SCMID(4), SCMID(5), SCSRC(2), SCSRC(3), SCSRC(3), pixel, width); + stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(1), SCMID(2), SCMID(3), SCMID(4), pixel, width); + + dst = SCDST(4); + + stage_scale4x(SCDST(0), SCDST(1), SCDST(2), SCDST(3), SCMID(3), SCMID(4), SCMID(5), SCMID(5), pixel, width); + +#if defined(__GNUC__) && defined(__i386__) + scale2x_mmx_emms(); +#endif +} + +/** + * Apply the Scale4x effect on a bitmap. + * The destination bitmap is filled with the scaled version of the source bitmap. + * The source bitmap isn't modified. + * The destination bitmap must be manually allocated before calling the function, + * note that the resulting size is exactly 4x4 times the size of the source bitmap. + * \note This function operates like ::scale4x_buf() but the intermediate buffer is + * automatically allocated in the stack. + * \param void_dst Pointer at the first pixel of the destination bitmap. + * \param dst_slice Size in bytes of a destination bitmap row. + * \param void_src Pointer at the first pixel of the source bitmap. + * \param src_slice Size in bytes of a source bitmap row. + * \param pixel Bytes per pixel of the source and destination bitmap. + * \param width Horizontal size in pixels of the source bitmap. + * \param height Vertical size in pixels of the source bitmap. + */ +static void scale4x(void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) +{ + unsigned mid_slice; + void* mid; + + mid_slice = 2 * pixel * width; /* required space for 1 row buffer */ + + mid_slice = (mid_slice + 0x7) & ~0x7; /* align to 8 bytes */ + +#if HAVE_ALLOCA + mid = alloca(6 * mid_slice); /* allocate space for 6 row buffers */ + + assert(mid != 0); /* alloca should never fails */ +#else + mid = malloc(6 * mid_slice); /* allocate space for 6 row buffers */ + + if (!mid) + return; +#endif + + scale4x_buf(void_dst, dst_slice, mid, mid_slice, void_src, src_slice, pixel, width, height); + +#if !HAVE_ALLOCA + free(mid); +#endif +} + +/** + * Check if the scale implementation is applicable at the given arguments. + * \param scale Scale factor. 2, 3 or 4. + * \param pixel Bytes per pixel of the source and destination bitmap. + * \param width Horizontal size in pixels of the source bitmap. + * \param height Vertical size in pixels of the source bitmap. + * \return + * - -1 on precondition violated. + * - 0 on success. + */ +int scale_precondition(unsigned scale, unsigned pixel, unsigned width, unsigned height) +{ + if (scale != 2 && scale != 3 && scale != 4) + return -1; + + if (pixel != 1 && pixel != 2 && pixel != 4) + return -1; + + switch (scale) { + case 2 : + case 3 : + if (height < 2) + return -1; + break; + case 4 : + if (height < 4) + return -1; + break; + } + +#if defined(__GNUC__) && defined(__i386__) + switch (scale) { + case 2 : + case 4 : + if (width < (16 / pixel)) + return -1; + if (width % (8 / pixel) != 0) + return -1; + break; + case 3 : + if (width < 2) + return -1; + break; + } +#else + if (width < 2) + return -1; +#endif + + return 0; +} + +/** + * Apply the Scale effect on a bitmap. + * This function is simply a common interface for ::scale2x(), ::scale3x() and ::scale4x(). + * \param scale Scale factor. 2, 3 or 4. + * \param void_dst Pointer at the first pixel of the destination bitmap. + * \param dst_slice Size in bytes of a destination bitmap row. + * \param void_src Pointer at the first pixel of the source bitmap. + * \param src_slice Size in bytes of a source bitmap row. + * \param pixel Bytes per pixel of the source and destination bitmap. + * \param width Horizontal size in pixels of the source bitmap. + * \param height Vertical size in pixels of the source bitmap. + */ +void scale(unsigned scale_factor, void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height) +{ + switch (scale_factor) { + case 2 : + scale2x(void_dst, dst_slice, void_src, src_slice, pixel, width, height); + break; + case 3 : + scale3x(void_dst, dst_slice, void_src, src_slice, pixel, width, height); + break; + case 4 : + scale4x(void_dst, dst_slice, void_src, src_slice, pixel, width, height); + break; + } +} + diff --git a/libmednahawk/src/drivers/scalebit.h b/libmednahawk/src/drivers/scalebit.h new file mode 100644 index 0000000000..ca144c4fae --- /dev/null +++ b/libmednahawk/src/drivers/scalebit.h @@ -0,0 +1,51 @@ +/* + * This file is part of the Scale2x project. + * + * Copyright (C) 2003 Andrea Mazzoleni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * This file contains an example implementation of the Scale effect + * applyed to a generic bitmap. + * + * You can find an high level description of the effect at : + * + * http://scale2x.sourceforge.net/ + * + * Alternatively at the previous license terms, you are allowed to use this + * code in your program with these conditions: + * - the program is not used in commercial activities. + * - the whole source code of the program is released with the binary. + * - derivative works of the program are allowed. + */ + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifndef __SCALEBIT_H +#define __SCALEBIT_H + +int scale_precondition(unsigned scale, unsigned pixel, unsigned width, unsigned height); +void scale(unsigned scale, void* void_dst, unsigned dst_slice, const void* void_src, unsigned src_slice, unsigned pixel, unsigned width, unsigned height); + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/drivers/shader.cpp b/libmednahawk/src/drivers/shader.cpp new file mode 100644 index 0000000000..d15f069e30 --- /dev/null +++ b/libmednahawk/src/drivers/shader.cpp @@ -0,0 +1,396 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Scale2x GLslang shader - ported by Pete Bernert + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include "opengl.h" +#include "shader.h" + +#include +#include +#include +//#include //zero 07-feb-2012 +#include + +#if MDFN_WANT_OPENGL_SHADERS + +static ShaderType OurType; + +struct CompiledShader +{ + GLhandleARB v, f, p; + bool v_valid, f_valid, p_valid; +}; + +#define CSP_COUNT 8 +static CompiledShader CSP[CSP_COUNT] = { { 0, 0, 0, false, false, false }, { 0, 0, 0, false, false, false }, { 0, 0, 0, false, false, false }, { 0, 0, 0, false, false, false }, + { 0, 0, 0, false, false, false }, { 0, 0, 0, false, false, false }, { 0, 0, 0, false, false, false }, { 0, 0, 0, false, false, false } }; +static const char *vertexProg = "void main(void)\n{\ngl_Position = ftransform();\ngl_TexCoord[0] = gl_MultiTexCoord0;\n}"; + +static std::string MakeProgIpolate(unsigned ipolate_axis) // X & 1, Y & 2, sharp & 4 +{ + std::string ret; + + ret = std::string("\n\ + uniform sampler2D Tex0;\n\ + uniform vec2 TexSize;\n\ + uniform vec2 TexSizeInverse;\n\ + uniform float XSharp;\n\ + uniform float YSharp;\n\ + void main(void)\n\ + {\n\ + vec2 texelIndex = vec2(gl_TexCoord[0]) * TexSize - float(0.5);\n\ + vec2 texelFract = fract(texelIndex);\n\ + texelIndex -= texelFract;\n\ + texelIndex += float(0.5);\n\ + texelIndex *= TexSizeInverse;\n\ + vec3 texel[4];\n\ + texel[0] = texture2D(Tex0, texelIndex).rgb;\n\ + texel[1] = texture2D(Tex0, texelIndex + vec2(0, TexSizeInverse.t)).rgb;\n\ + texel[2] = texture2D(Tex0, texelIndex + TexSizeInverse).rgb;\n\ + texel[3] = texture2D(Tex0, texelIndex + vec2(TexSizeInverse.s, 0)).rgb;\n\ + "); + + switch(ipolate_axis & 3) + { + case 0: + ret += std::string("gl_FragColor = texture2D(Tex0, vec2(gl_TexCoord[0]));\n"); + break; + + case 1: + if(ipolate_axis & 4) + { + ret += std::string("\n\ + float w0 = (texelFract.s - float(0.5)) * XSharp + float(0.5);\n\ + w0 = clamp(w0, float(0), float(1.0));\n\ + gl_FragColor = vec4( (texel[0] * (1.0 - w0) + texel[3] * w0), 1.0);\n\ + "); + } + else + { + ret += std::string("\n\ + gl_FragColor = vec4( (texel[0] * (1.0 - texelFract.s) + texel[3] * texelFract.s), 1.0);\n\ + "); + } + break; + + case 2: + if(ipolate_axis & 4) + { + ret += std::string("\n\ + float w1 = (texelFract.t - float(0.5)) * YSharp + float(0.5);\n\ + w1 = clamp(w1, float(0), float(1.0));\n\ + gl_FragColor = vec4( texel[0] * (1.0 - w1) + texel[1] * w1, 1.0);\n\ + "); + } + else + { + ret += std::string("\n\ + gl_FragColor = vec4( texel[0] * (1.0 - texelFract.t) + texel[1] * texelFract.t, 1.0);\n\ + "); + } + break; + + case 3: + if(ipolate_axis & 4) + { + ret += std::string("\n\ + float w0 = (texelFract.s - float(0.5)) * XSharp + float(0.5);\n\ + float w1 = (texelFract.t - float(0.5)) * YSharp + float(0.5);\n\ + w0 = clamp(w0, float(0), float(1.0));\n\ + w1 = clamp(w1, float(0), float(1.0));\n\ + "); + } + else + { + ret += std::string("\n\ + float w0 = texelFract.s;\n\ + float w1 = texelFract.t;\n\ + "); + } + + ret += std::string("\n\ + gl_FragColor = vec4( (texel[0] * (1.0 - w0) + texel[3] * w0) * (1.0 - w1) + (texel[1] * (1.0 - w0) + texel[2] * w0) * w1, 1);\n\ + "); + break; + + } + + ret += std::string("}"); + + //if(ipolate_axis == 2) + // puts(ret.c_str()); + + return ret; +} + +static const char *fragScale2X = +"uniform vec2 TexSize;\n\ +uniform vec2 TexSizeInverse;\n\ +uniform sampler2D Tex0;\n\ +void main()\n\ +{\n\ + vec4 colD,colF,colB,colH,col,tmp;\n\ + vec2 sel;\n\ + vec4 chewx = vec4(TexSizeInverse.x, 0, 0, 0);\n\ + vec4 chewy = vec4(0, TexSizeInverse.y, 0, 0);\n\ + vec4 MeowCoord = gl_TexCoord[0];\n\ + col = texture2DProj(Tex0, MeowCoord); \n\ + colD = texture2DProj(Tex0, MeowCoord - chewx); \n\ + colF = texture2DProj(Tex0, MeowCoord + chewx); \n\ + colB = texture2DProj(Tex0, MeowCoord - chewy); \n\ + colH = texture2DProj(Tex0, MeowCoord + chewy); \n\ + sel=fract(gl_TexCoord[0].xy * TexSize.xy); \n\ + if(sel.y>=0.5) {tmp=colB;colB=colH;colH=tmp;} \n\ + if(sel.x>=0.5) {tmp=colF;colF=colD;colD=tmp;} \n\ + if(colB == colD && colB != colF && colD!=colH) \n\ + col=colD;\n\ + gl_FragColor = col;\n\ +}"; + + +static void SLP(GLhandleARB moe) +{ + char buf[1000]; + GLsizei buflen = 0; + + p_glGetInfoLogARB(moe, 999, &buflen, buf); + buf[buflen] = 0; + + if(buflen) + MDFN_PrintError("%s\n", buf); +} + +static void CompileShader(CompiledShader &s, const char *vertex_prog, const char *frag_prog) +{ + int opi; + + p_glEnable(GL_FRAGMENT_PROGRAM_ARB); + + MDFN_GL_TRY(s.v = p_glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB)); + s.v_valid = true; + + MDFN_GL_TRY(s.f = p_glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB)); + s.f_valid = true; + + MDFN_GL_TRY(p_glShaderSourceARB(s.v, 1, &vertex_prog, NULL), SLP(s.v)); + MDFN_GL_TRY(p_glShaderSourceARB(s.f, 1, &frag_prog, NULL), SLP(s.f)); + + MDFN_GL_TRY(p_glCompileShaderARB(s.v), SLP(s.v)); + MDFN_GL_TRY(p_glGetObjectParameterivARB(s.v, GL_OBJECT_COMPILE_STATUS_ARB, &opi)); + if(GL_FALSE == opi) + { + SLP(s.v); + throw((void *)NULL); + } + + MDFN_GL_TRY(p_glCompileShaderARB(s.f), SLP(s.f)); + MDFN_GL_TRY(p_glGetObjectParameterivARB(s.f, GL_OBJECT_COMPILE_STATUS_ARB, &opi)); + if(GL_FALSE == opi) + { + SLP(s.f); + throw((void *)NULL); + } + + MDFN_GL_TRY(s.p = p_glCreateProgramObjectARB(), SLP(s.p)); + s.p_valid = true; + + MDFN_GL_TRY(p_glAttachObjectARB(s.p, s.v)); + MDFN_GL_TRY(p_glAttachObjectARB(s.p, s.f)); + + MDFN_GL_TRY(p_glLinkProgramARB(s.p), SLP(s.p)); + + MDFN_GL_TRY(p_glDisable(GL_FRAGMENT_PROGRAM_ARB)); +} + +bool InitShader(ShaderType shader_type) +{ + OurType = shader_type; + + try + { + switch(OurType) + { + case SHADER_SCALE2X: + CompileShader(CSP[0], vertexProg, fragScale2X); + break; + + default: + for(unsigned i = 0; i < 8; i++) + { + CompileShader(CSP[i], vertexProg, MakeProgIpolate(i).c_str()); + } + break; + } + } + catch(GLenum errcode) + { + MDFN_PrintError("OpenGL Error: %d\n", (int)(long long)errcode); // FIXME: Print an error string and not an arcane number. + KillShader(); + return(0); + } + catch(void *) + { + KillShader(); + return(0); + } + return(1); +} + +bool ShaderBegin(const MDFN_Rect *rect, const MDFN_Rect *dest_rect, int tw, int th) +{ + p_glEnable(GL_FRAGMENT_PROGRAM_ARB); + + //printf("%f\n", (double)dest_rect->w / rect->w); + //printf("%f\n", (double)dest_rect->h / rect->h); + if(OurType == SHADER_SCALE2X) + { + p_glUseProgramObjectARB(CSP[0].p); + + p_glUniform1iARB(p_glGetUniformLocationARB(CSP[0].p, "Tex0"), 0); + p_glUniform2fARB(p_glGetUniformLocationARB(CSP[0].p, "TexSize"), tw, th); + p_glUniform2fARB(p_glGetUniformLocationARB(CSP[0].p, "TexSizeInverse"), (float)1 / tw, (float) 1 / th); + } + else + { + unsigned csi; + float sharpness = 2.0; + float xsh; + float ysh; + unsigned ip_x; + unsigned ip_y; + + ip_x = 1; + ip_y = 1; + + if(OurType == SHADER_AUTOIP) + { + xsh = 1; + ysh = 1; + } + else + { + xsh = (float)dest_rect->w / rect->w / sharpness; + ysh = (float)dest_rect->h / rect->h / sharpness; + } + + if(OurType == SHADER_IPXNOTY || OurType == SHADER_IPXNOTYSHARPER) + { + if(OurType == SHADER_IPXNOTY) + { + xsh = 0; + } + ysh = 0; + ip_x = 1; + ip_y = 0; + } + else if(OurType == SHADER_IPYNOTX || OurType == SHADER_IPYNOTXSHARPER) + { + if(OurType == SHADER_IPYNOTX) + { + ysh = 0; + } + xsh = 0; + ip_x = 0; + ip_y = 1; + } + else if(OurType == SHADER_IPSHARPER) + { + ip_x = true; + ip_y = true; + } + else + { + // Scaling X by an integer? + if(floor((double)dest_rect->w / rect->w) == (double)dest_rect->w / rect->w) + { + xsh = 0; + ip_x = 0; + } + + // Scaling Y by an integer? + if(floor((double)dest_rect->h / rect->h) == (double)dest_rect->h / rect->h) + { + ysh = 0; + ip_y = 0; + } + } + + if(xsh < 1) + xsh = 1; + + if(ysh < 1) + ysh = 1; + + csi = (ip_y << 1) | ip_x; + if(xsh > 1 && ip_x) + csi |= 4; + if(ysh > 1 && ip_y) + csi |= 4; + + p_glUseProgramObjectARB(CSP[csi].p); + +// printf("%d:%d, %d\n", ip_x, ip_y, csi); + + p_glUniform1iARB(p_glGetUniformLocationARB(CSP[csi].p, "Tex0"), 0); + p_glUniform2fARB(p_glGetUniformLocationARB(CSP[csi].p, "TexSize"), tw, th); + p_glUniform2fARB(p_glGetUniformLocationARB(CSP[csi].p, "TexSizeInverse"), (float)1 / tw, (float) 1 / th); + + p_glUniform1fARB(p_glGetUniformLocationARB(CSP[csi].p, "XSharp"), xsh); + p_glUniform1fARB(p_glGetUniformLocationARB(CSP[csi].p, "YSharp"), ysh); + } + return(1); +} + +bool ShaderEnd(void) +{ + p_glUseProgramObjectARB(0); + p_glDisable(GL_FRAGMENT_PROGRAM_ARB); + return(1); +} + +bool KillShader(void) +{ + p_glUseProgramObjectARB(0); + + for(unsigned i = 0; i < CSP_COUNT; i++) + { + if(CSP[i].p_valid) + { + if(CSP[i].f_valid) + p_glDetachObjectARB(CSP[i].p, CSP[i].f); + if(CSP[i].v_valid) + p_glDetachObjectARB(CSP[i].p, CSP[i].v); + } + if(CSP[i].f_valid) + p_glDeleteObjectARB(CSP[i].f); + if(CSP[i].v_valid) + p_glDeleteObjectARB(CSP[i].v); + if(CSP[i].p_valid) + p_glDeleteObjectARB(CSP[i].p); + + CSP[i].f_valid = CSP[i].v_valid = CSP[i].p_valid = false; + } + + p_glDisable(GL_FRAGMENT_PROGRAM_ARB); + + return(1); +} + +#endif diff --git a/libmednahawk/src/drivers/shader.h b/libmednahawk/src/drivers/shader.h new file mode 100644 index 0000000000..b556f0641a --- /dev/null +++ b/libmednahawk/src/drivers/shader.h @@ -0,0 +1,22 @@ +#ifndef __DRIVERS_SHADER_H +#define __DRIVERS_SHADER_H + +typedef enum { + SHADER_NONE = 0, + SHADER_SCALE2X, + SHADER_AUTOIP, + SHADER_AUTOIPSHARPER, + SHADER_IPSHARPER, + SHADER_IPXNOTY, + SHADER_IPXNOTYSHARPER, + SHADER_IPYNOTX, + SHADER_IPYNOTXSHARPER, +} ShaderType; + + +bool InitShader(ShaderType pixshader); +bool ShaderBegin(const MDFN_Rect *rect, const MDFN_Rect *dest_rect, int tw, int th); +bool ShaderEnd(void); +bool KillShader(void); + +#endif diff --git a/libmednahawk/src/drivers/sound.cpp b/libmednahawk/src/drivers/sound.cpp new file mode 100644 index 0000000000..b80f813568 --- /dev/null +++ b/libmednahawk/src/drivers/sound.cpp @@ -0,0 +1,361 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include +#include +#include + +#include "sound.h" + +#include "../sexyal/sexyal.h" + +static SexyAL *Interface = NULL; +static SexyAL_device *Output = NULL; +static SexyAL_format format; +static SexyAL_buffering buffering; +static SexyAL_enumtype *DriverTypes = NULL; +static int CurDriverIndex = 0; + +static int16 *EmuModBuffer = NULL; +static int32 EmuModBufferSize = 0; // In frames. + +static double SoundRate = 0; + +double GetSoundRate(void) +{ + return(SoundRate); +} + +uint32 GetMaxSound(void) +{ + if(!Output) + return(0); + + return(buffering.buffer_size); +} + +uint32 GetWriteSound(void) +{ + if(!Output) return(0); + return(Output->CanWrite(Output)); +} + +void WriteSound(int16 *Buffer, int Count) +{ + if(!Output) + return; + + if(!Output->Write(Output, Buffer, Count)) + { + //printf("Output->Write failure? %d\n", Count); + } +} + +void WriteSoundSilence(int ms) +{ + unsigned int frames = (uint64)format.rate * ms / 1000; + int sizeof_SBuffer = frames * format.channels*2; + int16 *SBuffer = new int16[sizeof_SBuffer / 2]; + + memset(SBuffer, 0, sizeof_SBuffer); + Output->Write(Output, SBuffer, frames); + delete[] SBuffer; +} + +#if 0 +static bool RunSexyALTest(SexyAL *interface, SexyAL_buffering *buffering, const char *device, int driver_type) +{ + static const int to_format[9] = + { + SEXYAL_FMT_PCMU8, + SEXYAL_FMT_PCMS8, + SEXYAL_FMT_PCMU16, + SEXYAL_FMT_PCMS16, + + SEXYAL_FMT_PCMU24, + SEXYAL_FMT_PCMS24, + SEXYAL_FMT_PCMU32, + SEXYAL_FMT_PCMS32, + + SEXYAL_FMT_PCMFLOAT + }; + + static const char *to_format_name[9] = + { + "8-bit unsigned", + "8-bit signed", + "16-bit unsigned", + "16-bit signed", + "24-bit unsigned", + "24-bit signed", + "32-bit unsigned", + "32-bit signed", + "float" + }; + + // TODO: byte order format conversion. + // TODO: source format. + const int rate = 48000; + const int numframes = (rate / 2 + 1) &~ 1; + + for(int src_channels = 1; src_channels <= 2; src_channels++) + { + for(int dest_channels = 1; dest_channels <= 2; dest_channels++) + { + //for(int src_format = 0; src_format < 9; src_format++) + int src_format = 3; + { + for(int dest_format = 0; dest_format < 9; dest_format++) + { + printf("Source Format: %s, Source Channels: %d --- Dest Format: %s, Dest Channels: %d\n\n", to_format_name[src_format], src_channels, to_format_name[dest_format], dest_channels); + + memset(&format,0,sizeof(format)); + + Interface = (SexyAL *)SexyAL_Init(0); + DriverTypes = Interface->EnumerateTypes(Interface); + + format.sampformat = to_format[dest_format]; + format.channels = dest_channels; + format.revbyteorder = 0; + format.rate = rate; + + buffering->buffer_size = 0; + buffering->period_size = 0; + buffering->latency = 0; + + if(!(Output=Interface->Open(Interface, device, &format, buffering, driver_type))) + { + MDFND_PrintError(_("Error opening a sound device.")); + Interface->Destroy(Interface); + Interface=0; + return(0); + } + + if(format.sampformat != to_format[dest_format]) + printf("Warning: Could not set desired device format.\n"); + + if(format.channels != dest_channels) + printf("Warning: Could not set desired device channel count.\n"); + + if(format.rate != rate) + printf("Warning: Could not set desired device rate.\n"); + + format.sampformat = to_format[src_format]; + format.channels = src_channels; + format.revbyteorder = 0; + format.rate = rate; + + Output->SetConvert(Output, &format); + + if(to_format[src_format] == SEXYAL_FMT_PCMS16) + { + int16 samples[numframes * src_channels]; + + for(int i = 0; i < numframes; i++) + { + int16 sval = 4095 * sin((double)i * 440 * M_PI * 2 / rate); + + for(int ch = 0; ch < src_channels; ch++) + samples[i * src_channels + ch] = sval; + } + // Write half in one go, the rest in small chunks. + if(!Output->Write(Output, samples, numframes / 2)) + printf("Write count error 0\n"); + + for(int i = numframes / 2; i < numframes; i += 100) + { + int32 towrite = numframes - i; + + if(towrite > 100) + towrite = 100; + + if(!Output->Write(Output, samples + i * src_channels, towrite)) + printf("Write count error 1\n"); + } + } + Output->Close(Output); + Interface->Destroy(Interface); + sleep(1); + } + } + } + } +} +#endif + +bool InitSound(MDFNGI *gi) +{ + SoundRate = 0; + + memset(&format,0,sizeof(format)); + memset(&buffering,0,sizeof(buffering)); + + Interface = (SexyAL *)SexyAL_Init(0); + DriverTypes = Interface->EnumerateTypes(Interface); + + format.sampformat = SEXYAL_FMT_PCMS16; + + assert(gi->soundchan); + format.channels = gi->soundchan; + + format.revbyteorder = 0; + + format.rate = gi->soundrate ? gi->soundrate : MDFN_GetSettingUI("sound.rate"); + + buffering.ms = MDFN_GetSettingUI("sound.buffer_time"); + buffering.period_us = MDFN_GetSettingUI("sound.period_time"); + + std::string zedevice = MDFN_GetSettingS("sound.device"); + std::string zedriver = MDFN_GetSettingS("sound.driver"); + + CurDriverIndex = -1; + + if(!strcasecmp(zedriver.c_str(), "default")) + CurDriverIndex = 0; + else + { + for(int x = 0; DriverTypes[x].short_name; x++) + { + if(!strcasecmp(zedriver.c_str(), DriverTypes[x].short_name)) + { + CurDriverIndex = x; + break; + } + } + } + + MDFNI_printf(_("\nInitializing sound...\n")); + MDFN_indent(1); + + if(CurDriverIndex == -1) + { + MDFN_printf(_("\nUnknown sound driver \"%s\". Supported sound drivers:\n"), zedriver.c_str()); + + MDFN_indent(2); + for(int x = 0; DriverTypes[x].short_name; x++) + { + MDFN_printf("%s\n", DriverTypes[x].short_name); + } + MDFN_indent(-2); + MDFN_printf("\n"); + Interface->Destroy(Interface); + Interface = NULL; + MDFN_indent(-1); + return(FALSE); + } + + if(!strcasecmp(zedevice.c_str(), "default")) + MDFNI_printf(_("Using \"%s\" audio driver with SexyAL's default device selection."), DriverTypes[CurDriverIndex].name); + else + MDFNI_printf(_("Using \"%s\" audio driver with device \"%s\":"), DriverTypes[CurDriverIndex].name, zedevice.c_str()); + MDFN_indent(1); + + //RunSexyALTest(Interface, &buffering, zedevice.c_str(), DriverTypes[CurDriverIndex].type); + //exit(1); + if(!(Output=Interface->Open(Interface, zedevice.c_str(), &format, &buffering, DriverTypes[CurDriverIndex].type))) + { + MDFND_PrintError(_("Error opening a sound device.")); + Interface->Destroy(Interface); + Interface=0; + MDFN_indent(-2); + return(FALSE); + } + + if(format.rate < 22050 || format.rate > 1048576) + { + MDFND_PrintError(_("Set rate is out of range [22050-1048576]")); + KillSound(); + MDFN_indent(-2); + return(FALSE); + } + MDFNI_printf(_("\nBits: %u\nRate: %u\nChannels: %u\nByte order: CPU %s\nBuffer size: %u sample frames(%f ms)\n"), (format.sampformat>>4)*8,format.rate,format.channels,format.revbyteorder?"Reversed":"Native", buffering.buffer_size, (double)buffering.buffer_size * 1000 / format.rate); + MDFNI_printf(_("Latency: %u sample frames(%f ms)\n"), buffering.latency, (double)buffering.latency * 1000 / format.rate); + + if(buffering.period_size) + { + int64_t pt_test_result = ((int64_t)buffering.period_size * (1000 * 1000) / format.rate); + + MDFNI_printf(_("Period size: %u sample frames(%f ms)\n"), buffering.period_size, (double)buffering.period_size * 1000 / format.rate); + + if(pt_test_result > 5333) + { + MDFN_indent(1); + MDFN_printf(_("Warning: Period time is too large(it should be <= ~5.333ms). Video will appear very jerky.\n")); + MDFN_indent(-1); + } + } + format.sampformat=SEXYAL_FMT_PCMS16; + format.channels=gi->soundchan?gi->soundchan:1; + format.revbyteorder=0; + + //format.rate=gi->soundrate?gi->soundrate:soundrate; + + Output->SetConvert(Output, &format); + + EmuModBufferSize = (500 * format.rate + 999) / 1000; + EmuModBuffer = (int16 *)calloc(sizeof(int16) * format.channels, EmuModBufferSize); + + SoundRate = format.rate; + MDFN_indent(-2); + + return(1); +} + +void SilenceSound(int n) +{ + +} + +bool KillSound(void) +{ + SoundRate = 0; + + if(EmuModBuffer) + { + free(EmuModBuffer); + EmuModBuffer = NULL; + + EmuModBufferSize = 0; + } + + if(Output) + Output->Close(Output); + + if(Interface) + Interface->Destroy(Interface); + + Interface = NULL; + + if(!Output) + return(FALSE); + + Output = NULL; + + return(TRUE); +} + + +int16 *GetEmuModSoundBuffer(int32 *max_size_bytes) +{ + *max_size_bytes = EmuModBufferSize; + + return(EmuModBuffer); +} diff --git a/libmednahawk/src/drivers/sound.h b/libmednahawk/src/drivers/sound.h new file mode 100644 index 0000000000..4a152b6993 --- /dev/null +++ b/libmednahawk/src/drivers/sound.h @@ -0,0 +1,16 @@ +#ifndef __MDFN_DRIVERS_SOUND_H +#define __MDFN_DRIVERS_SOUND_H + +bool InitSound(MDFNGI *gi); +void WriteSound(int16 *Buffer, int Count); +void WriteSoundSilence(int ms); +bool KillSound(void); +uint32 GetMaxSound(void); +uint32 GetWriteSound(void); +void SilenceSound(int s); + +int16 *GetEmuModSoundBuffer(int32 *max_size); + +double GetSoundRate(void); + +#endif diff --git a/libmednahawk/src/drivers/video-state.cpp b/libmednahawk/src/drivers/video-state.cpp new file mode 100644 index 0000000000..3f9daf25cf --- /dev/null +++ b/libmednahawk/src/drivers/video-state.cpp @@ -0,0 +1,229 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// Code for drawing save states and mooovies +// all functions should be called from the main thread +#include "main.h" +#include "video.h" +#include +#include + +#define MK_COLOR_A(tmp_surface, r,g,b,a) (tmp_surface->MakeColor(r, g, b, a)) + +static MDFN_Surface *PreviewSurface = NULL, *TextSurface = NULL; +static MDFN_Rect PreviewRect, TextRect; + +static StateStatusStruct *StateStatus; +static uint32 StateShow; +static bool IsMovie; + +void DrawStateMovieRow(MDFN_Surface *surface, int *nstatus, int cur, int recently_saved, uint8 *text) +{ + uint32 *XBuf = surface->pixels; + uint32 pitch32 = surface->pitchinpix; + int x, y; + + for(y=0; y<40; y++) + for(x=0;x<230;x++) + XBuf[x + y * pitch32] = MK_COLOR_A(surface, 0x00, 0x00, 0x00, 170); + + // nstatus + for(int i = 1; i < 11; i++) + { + char stringie[2]; + uint32 bordercol; + + if(cur == (i % 10)) + bordercol = MK_COLOR_A(surface, 0x60, 0x20, 0xb0, 0xFF); + else + bordercol = MK_COLOR_A(surface, 0, 0, 0, 0xFF); + + stringie[0] = '0' + (i % 10); + stringie[1] = 0; + + //if(nstatus[i % 10]) + { + uint32 rect_bg_color = MK_COLOR_A(surface, 0x00, 0x00, 0x00, 0xFF); + + if(nstatus[i % 10]) + { + rect_bg_color = MK_COLOR_A(surface, 0x00, 0x38, 0x28, 0xFF); + + if(recently_saved == (i % 10)) + rect_bg_color = MK_COLOR_A(surface, 0x48, 0x00, 0x34, 0xFF); + } + MDFN_DrawRectangleFill(XBuf, pitch32, (i - 1) * 23, 0, bordercol, rect_bg_color, 23, 18 + 1); + } + //else + // MDFN_DrawRectangle(XBuf, pitch32, (i - 1) * 23, 0, bordercol, 23, 18 + 1); + + DrawTextTransShadow(XBuf + (i - 1) * 23 + 7, pitch32 << 2, 230, (UTF8*)stringie, MK_COLOR_A(surface, 0xE0, 0xFF, 0xE0, 0xFF), MK_COLOR_A(surface, 0x00, 0x00, 0x00, 0xFF), FALSE); + } + DrawTextTransShadow(XBuf + 20 * pitch32, pitch32 << 2, 230, text, MK_COLOR_A(surface, 0xE0, 0xFF, 0xE0, 0xFF), MK_COLOR_A(surface, 0x00, 0x00, 0x00, 0xFF), TRUE); +} + + +bool SaveStatesActive(void) +{ + return(StateStatus); +} + +static void SSCleanup(void) +{ + if(PreviewSurface) + { + delete PreviewSurface; + PreviewSurface = NULL; + } + + if(TextSurface) + { + delete TextSurface; + TextSurface = NULL; + } + + if(StateStatus) + { + if(StateStatus->gfx) + free(StateStatus->gfx); + free(StateStatus); + StateStatus = NULL; + } +} + +void DrawSaveStates(SDL_Surface *screen, double exs, double eys, int rs, int gs, int bs, int as) +{ + if(StateShow < MDFND_GetTime()) + { + SSCleanup(); + } + + if(StateStatus) + { + if(!PreviewSurface) + { + PreviewSurface = new MDFN_Surface(NULL, StateStatus->w + 2, StateStatus->h + 2, StateStatus->w + 2, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, rs, gs, bs, as)); + + if(!PreviewSurface) + { + printf("Iyee: %d %d\n", StateStatus->w, StateStatus->h); + return; + } + + PreviewRect.x = PreviewRect.y = 0; + PreviewRect.w = StateStatus->w + 2; + PreviewRect.h = StateStatus->h + 2; + MDFN_DrawRectangleAlpha(PreviewSurface->pixels, PreviewSurface->pitchinpix, 0, 0, MK_COLOR_A(PreviewSurface, 0x00, 0x00, 0x9F, 0xFF), MK_COLOR_A(PreviewSurface, 0x00, 0x00, 0x00, 0x80), StateStatus->w + 2, StateStatus->h + 2); + + uint32 *psp = PreviewSurface->pixels; + + psp += PreviewSurface->pitchinpix; + psp++; + + if(StateStatus->gfx) + { + for(uint32 y = 0; y < StateStatus->h; y++) + { + uint8 *src_row = StateStatus->gfx + y * StateStatus->w * 3; + + for(uint32 x = 0; x < StateStatus->w; x++) + { + psp[x] = MK_COLOR_A(PreviewSurface, src_row[0], src_row[1], src_row[2], 0xFF); + src_row += 3; + } + psp += PreviewSurface->pitchinpix; + } + } + + if(!TextSurface) + { + TextSurface = new MDFN_Surface(NULL, 230, 40, 230, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, rs, gs, bs, as)); + + TextRect.x = TextRect.y = 0; + TextRect.w = 230; + TextRect.h = 40; + } + + if(IsMovie) + { + UTF8 text[256]; + + if(StateStatus->current_movie > 0) + trio_snprintf((char *)text, 256, _("-recording movie %d-"), StateStatus->current_movie-1); + else if (StateStatus->current_movie < 0) + trio_snprintf((char *)text, 256, _("-playing movie %d-"),-1 - StateStatus->current_movie); + else + trio_snprintf((char *)text, 256, _("-select movie-")); + + DrawStateMovieRow(TextSurface, StateStatus->status, StateStatus->current, StateStatus->recently_saved, text); + } + else + DrawStateMovieRow(TextSurface, StateStatus->status, StateStatus->current, StateStatus->recently_saved, (UTF8 *)_("-select state-")); + } + } // end if(StateStatus) + + if(PreviewSurface) + { + MDFN_Rect tdrect, drect; + + int meow = ((screen->w / CurGame->nominal_width) + 1) / 2; + if(!meow) meow = 1; + + tdrect.w = TextRect.w * meow; + tdrect.h = TextRect.h * meow; + tdrect.x = (screen->w - tdrect.w) / 2; + tdrect.y = screen->h - tdrect.h; + + BlitRaw(TextSurface, &TextRect, &tdrect); + + drect.w = PreviewRect.w * meow; + drect.h = PreviewRect.h * meow; + drect.x = (screen->w - drect.w) / 2; + drect.y = screen->h - drect.h - tdrect.h - 4; + + BlitRaw(PreviewSurface, &PreviewRect, &drect); + + } + +} + +void MT_SetStateStatus(StateStatusStruct *status) +{ + SSCleanup(); + + IsMovie = FALSE; + StateStatus = status; + + if(status) + StateShow = MDFND_GetTime() + MDFN_GetSettingUI("osd.state_display_time"); + else + StateShow = 0; +} + +void MT_SetMovieStatus(StateStatusStruct *status) +{ + SSCleanup(); + + IsMovie = TRUE; + StateStatus = status; + + if(status) + StateShow = MDFND_GetTime() + MDFN_GetSettingUI("osd.state_display_time"); + else + StateShow = 0; +} + diff --git a/libmednahawk/src/drivers/video-state.h b/libmednahawk/src/drivers/video-state.h new file mode 100644 index 0000000000..98f1f33b92 --- /dev/null +++ b/libmednahawk/src/drivers/video-state.h @@ -0,0 +1,10 @@ +#ifndef __MDFN_DRIVERS_VIDEO_STATE_H +#define __MDFN_DRIVERS_VIDEO_STATE_H + +void DrawSaveStates(SDL_Surface *screen, double, double, int, int, int, int); +bool SaveStatesActive(void); + +void MT_SetStateStatus(StateStatusStruct *status); +void MT_SetMovieStatus(StateStatusStruct *status); + +#endif diff --git a/libmednahawk/src/drivers/video.cpp b/libmednahawk/src/drivers/video.cpp new file mode 100644 index 0000000000..806480c90a --- /dev/null +++ b/libmednahawk/src/drivers/video.cpp @@ -0,0 +1,1299 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "main.h" +#include +#include +#include + +#include "video.h" +#include "opengl.h" +#include "shader.h" +#include "nongl.h" +#include "overlay.h" + +#include "icon.h" +#include "netplay.h" +#include "cheat.h" + +#include "scalebit.h" +#include "hqxx-common.h" +#include "nnx.h" +#include "debugger.h" +#include "fps.h" +#include "help.h" +#include "video-state.h" +#include "../video/selblur.h" + +#include "2xSaI.h" + +typedef struct +{ + int xres; + int yres; + double xscale, xscalefs; + double yscale, yscalefs; + int videoip; + int stretch; + int special; + int scanlines; + ShaderType pixshader; +} CommonVS; + +static CommonVS _video; +static int _fullscreen; + +static bool osd_alpha_blend; +static unsigned int vdriver = VDRIVER_OPENGL; + +typedef struct +{ + const char *name; + int id; + int xscale; + int yscale; +} ScalerDefinition; + +static ScalerDefinition Scalers[] = +{ + + {"hq2x", NTVB_HQ2X, 2, 2 }, + {"hq3x", NTVB_HQ3X, 3, 3 }, + {"hq4x", NTVB_HQ4X, 4, 4 }, + + {"scale2x", NTVB_SCALE2X, 2, 2 }, + {"scale3x", NTVB_SCALE3X, 3, 3 }, + {"scale4x", NTVB_SCALE4X, 4, 4 }, + + {"nn2x", NTVB_NN2X, 2, 2 }, + {"nn3x", NTVB_NN3X, 3, 3 }, + {"nn4x", NTVB_NN4X, 4, 4 }, + + {"nny2x", NTVB_NNY2X, 1, 2 }, + {"nny3x", NTVB_NNY3X, 1, 3 }, + {"nny4x", NTVB_NNY4X, 1, 4 }, + + {"2xsai", NTVB_2XSAI, 2, 2 }, + {"super2xsai", NTVB_SUPER2XSAI, 2, 2 }, + {"supereagle", NTVB_SUPEREAGLE, 2, 2 }, + { 0 } +}; + +static MDFNGI *VideoGI; + +static int best_xres = 0, best_yres = 0; + +static int cur_xres, cur_yres, cur_flags; + +static ScalerDefinition *CurrentScaler = NULL; + +static SDL_Surface *screen = NULL; +static SDL_Surface *IconSurface=NULL; + +static MDFN_Rect screen_dest_rect; + +static MDFN_Surface *DebuggerSurface = NULL; +static MDFN_Rect DebuggerRect; + +static MDFN_Surface *NetSurface = NULL; +static MDFN_Rect NetRect; + +static MDFN_Surface *CheatSurface = NULL; +static MDFN_Rect CheatRect; + +static MDFN_Surface *HelpSurface = NULL; +static MDFN_Rect HelpRect; + +static MDFN_Surface *SMSurface = NULL; +static MDFN_Rect SMRect; +static MDFN_Rect SMDRect; + +static int curbpp; + +static double exs,eys; +static int evideoip; + +static int NeedClear = 0; + +static MDFN_PixelFormat pf_overlay, pf_normal; + +void ClearBackBuffer(void) +{ + if(cur_flags & SDL_OPENGL) + { + ClearBackBufferOpenGL(); + } + else + { + SDL_FillRect(screen, NULL, 0); + } +} + +/* Return 1 if video was killed, 0 otherwise(video wasn't initialized). */ +void KillVideo(void) +{ + if(IconSurface) + { + SDL_FreeSurface(IconSurface); + IconSurface = NULL; + } + + if(DebuggerSurface) + { + delete DebuggerSurface; + DebuggerSurface = NULL; + } + + if(SMSurface) + { + delete SMSurface; + SMSurface = NULL; + } + + if(CheatSurface) + { + delete CheatSurface; + CheatSurface = NULL; + } + + if(HelpSurface) + { + delete HelpSurface; + HelpSurface = NULL; + } + + if(NetSurface) + { + delete NetSurface; + NetSurface = NULL; + } + + if(cur_flags & SDL_OPENGL) + KillOpenGL(); + + if(vdriver == VDRIVER_OVERLAY) + OV_Kill(); + + VideoGI = NULL; + cur_flags = 0; +} + +static void GenerateDestRect(void) +{ + if(_video.stretch && _fullscreen) + { + int nom_width, nom_height; + + if(VideoGI->rotated) + { + nom_width = VideoGI->nominal_height; + nom_height = VideoGI->nominal_width; + } + else + { + nom_width = VideoGI->nominal_width; + nom_height = VideoGI->nominal_height; + } + + if (_video.stretch == 2 || _video.stretch == 3 || _video.stretch == 4) // Aspect-preserve stretch + { + exs = (double)cur_xres / nom_width; + eys = (double)cur_yres / nom_height; + + if(_video.stretch == 3 || _video.stretch == 4) // Round down to nearest int. + { + exs = floor(exs); + eys = floor(eys); + + if(_video.stretch == 4) // Round down to nearest multiple of 2. + { + exs = (int)exs & ~1; + eys = (int)eys & ~1; + + if(!exs) exs = 1; + if(!eys) eys = 1; + } + } + + // Check if we are constrained horizontally or vertically + if (exs > eys) + { + // Too tall for screen, fill vertically + exs = eys; + } + else + { + // Too wide for screen, fill horizontally + eys = exs; + } + + //printf("%f %f\n", exs, eys); + + screen_dest_rect.w = (int)(exs*nom_width + 0.5); // +0.5 for rounding + screen_dest_rect.h = (int)(eys*nom_height + 0.5); // +0.5 for rounding + + // Centering: + int nx = (int)((cur_xres - screen_dest_rect.w) / 2); + if(nx < 0) nx = 0; + screen_dest_rect.x = nx; + + int ny = (int)((cur_yres - screen_dest_rect.h) / 2); + if(ny < 0) ny = 0; + screen_dest_rect.y = ny; + } + else // Full-stretch + { + screen_dest_rect.x = 0; + screen_dest_rect.w = cur_xres; + + screen_dest_rect.y = 0; + screen_dest_rect.h = cur_yres; + + exs = (double)cur_xres / nom_width; + eys = (double)cur_yres / nom_height; + } + } + else + { + if(VideoGI->rotated) + { + int32 ny = (int)((cur_yres - VideoGI->nominal_width * exs) / 2); + int32 nx = (int)((cur_xres - VideoGI->nominal_height * eys) / 2); + + //if(ny < 0) ny = 0; + //if(nx < 0) nx = 0; + + screen_dest_rect.x = _fullscreen ? nx : 0; + screen_dest_rect.y = _fullscreen ? ny : 0; + screen_dest_rect.w = (Uint16)(VideoGI->nominal_height * eys); + screen_dest_rect.h = (Uint16)(VideoGI->nominal_width * exs); + } + else + { + int nx = (int)((cur_xres - VideoGI->nominal_width * exs) / 2); + int ny = (int)((cur_yres - VideoGI->nominal_height * eys) / 2); + + // Don't check to see if the coordinates go off screen here, offscreen coordinates are valid(though weird that the user would want them...) + // in OpenGL mode, and are clipped to valid coordinates in SDL blit mode code. + //if(nx < 0) + // nx = 0; + //if(ny < 0) + // ny = 0; + + screen_dest_rect.x = _fullscreen ? nx : 0; + screen_dest_rect.y = _fullscreen ? ny : 0; + + //printf("%.64f %d, %f, %d\n", exs, VideoGI->nominal_width, exs * VideoGI->nominal_width, (int)(exs * VideoGI->nominal_width)); + // FIXME, stupid floating point + screen_dest_rect.w = (Uint16)(VideoGI->nominal_width * exs + 0.000000001); + screen_dest_rect.h = (Uint16)(VideoGI->nominal_height * eys + 0.000000001); + } + } + + // Quick and dirty kludge for VB's "hli" and "vli" 3D modes. + screen_dest_rect.x &= ~1; + screen_dest_rect.y &= ~1; + //printf("%d %d\n", screen_dest_rect.x & 1, screen_dest_rect.y & 1); +} + +// Argh, lots of thread safety and crashy problems with this, need to re-engineer code elsewhere. +#if 0 +int VideoResize(int nw, int nh) +{ + double xs, ys; + char buf[256]; + + if(VideoGI && !_fullscreen) + { + std::string sn = std::string(VideoGI->shortname); + + xs = (double)nw / VideoGI->nominal_width; + ys = (double)nh / VideoGI->nominal_height; + + trio_snprintf(buf, 256, "%.30f", xs); +// MDFNI_SetSetting(std::string(sn + "." + std::string("xscale")).c_str(), buf); + + trio_snprintf(buf, 256, "%.30f", ys); +// MDFNI_SetSetting(std::string(sn + "." + std::string("yscale")).c_str(), buf); + + printf("%s, %d %d, %f %f\n", std::string(sn + "." + std::string("xscale")).c_str(), nw, nh, xs, ys); + return(1); + } + + return(0); +} +#endif + +int GetSpecialScalerID(const std::string &special_string) +{ + int ret = -1; + + if(special_string == "" || !strcasecmp(special_string.c_str(), "none") || special_string == "0") + ret = 0; + else + { + ScalerDefinition *scaler = Scalers; + + while(scaler->name) + { + char tmpstr[16]; + + sprintf(tmpstr, "%d", scaler->id); + + if(!strcasecmp(scaler->name, special_string.c_str()) || tmpstr == special_string) + { + ret = scaler->id; + break; + } + scaler++; + } + } + return(ret); +} + + +static uint32 real_rs, real_gs, real_bs, real_as; + +int InitVideo(MDFNGI *gi) +{ + const SDL_VideoInfo *vinf; + int flags = 0; //SDL_RESIZABLE; + int desbpp; + + VideoGI = gi; + + MDFNI_printf(_("Initializing video...\n")); + MDFN_indent(1); + + osd_alpha_blend = MDFN_GetSettingB("osd.alpha_blend"); + + std::string sn = std::string(gi->shortname); + + if(gi->GameType == GMT_PLAYER) + sn = "player"; + + std::string special_string = MDFN_GetSettingS(std::string(sn + "." + std::string("special")).c_str()); + + _fullscreen = MDFN_GetSettingB("video.fs"); + _video.xres = MDFN_GetSettingUI(std::string(sn + "." + std::string("xres")).c_str()); + _video.yres = MDFN_GetSettingUI(std::string(sn + "." + std::string("yres")).c_str()); + _video.xscale = MDFN_GetSettingF(std::string(sn + "." + std::string("xscale")).c_str()); + _video.yscale = MDFN_GetSettingF(std::string(sn + "." + std::string("yscale")).c_str()); + _video.xscalefs = MDFN_GetSettingF(std::string(sn + "." + std::string("xscalefs")).c_str()); + _video.yscalefs = MDFN_GetSettingF(std::string(sn + "." + std::string("yscalefs")).c_str()); + _video.videoip = MDFN_GetSettingI(std::string(sn + "." + std::string("videoip")).c_str()); + _video.stretch = MDFN_GetSettingUI(std::string(sn + "." + std::string("stretch")).c_str()); + _video.scanlines = MDFN_GetSettingUI(std::string(sn + "." + std::string("scanlines")).c_str()); + + _video.special = GetSpecialScalerID(special_string); + + #ifdef MDFN_WANT_OPENGL_SHADERS + _video.pixshader = (ShaderType)MDFN_GetSettingI(std::string(sn + "." + std::string("pixshader")).c_str()); + #else + _video.pixshader = SHADER_NONE; + #endif + + CurrentScaler = _video.special ? &Scalers[_video.special - 1] : NULL; + + vinf=SDL_GetVideoInfo(); + + if(!best_xres) + { + best_xres = vinf->current_w; + best_yres = vinf->current_h; + + if(!best_xres || !best_yres) + { + best_xres = 640; + best_yres = 480; + } + } + + + if(vinf->hw_available) + flags|=SDL_HWSURFACE; + + if(_fullscreen) + flags|=SDL_FULLSCREEN; + + vdriver = MDFN_GetSettingI("video.driver"); + + if(vdriver == VDRIVER_OPENGL) + { + if(!sdlhaveogl) + { + // SDL_GL_LoadLibrary returns 0 on success, -1 on failure + if(SDL_GL_LoadLibrary(NULL) == 0) + sdlhaveogl = 1; + else + sdlhaveogl = 0; + } + + if(sdlhaveogl) + flags |= SDL_OPENGL; + else + { + MDFN_PrintError(_("Could not load OpenGL library, disabling OpenGL usage!")); + vdriver = 0; + } + + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1 ); + + #if SDL_VERSION_ATLEAST(1, 2, 10) + SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, MDFN_GetSettingB("video.glvsync")); + #endif + } + else if(vdriver == VDRIVER_SOFTSDL) + flags |= SDL_DOUBLEBUF; + else if(vdriver == VDRIVER_OVERLAY) + { + //flags |= SDL_ + } + + exs = _fullscreen ? _video.xscalefs : _video.xscale; + eys = _fullscreen ? _video.yscalefs : _video.yscale; + evideoip = _video.videoip; + + desbpp = 32; + + if(!_video.stretch || !_fullscreen) + { + if(exs > 50) + { + MDFND_PrintError(_("Eep! Effective X scale setting is way too high. Correcting.")); + exs = 50; + } + + if(eys > 50) + { + MDFND_PrintError(_("Eep! Effective Y scale setting is way too high. Correcting.")); + eys = 50; + } + } + + GenerateDestRect(); + + if(_fullscreen) + { + if(!screen || cur_xres != _video.xres || cur_yres != _video.yres || cur_flags != flags || curbpp != desbpp) + { + if(!(screen = SDL_SetVideoMode(_video.xres ? _video.xres : best_xres, _video.yres ? _video.yres : best_yres, desbpp, flags))) + { + MDFND_PrintError(SDL_GetError()); + MDFN_indent(-1); + return(0); + } + } + } + else + { + if(!screen || cur_xres != screen_dest_rect.w || cur_yres != screen_dest_rect.h || cur_flags != flags || curbpp != desbpp) + { + if(!(screen = SDL_SetVideoMode(screen_dest_rect.w, screen_dest_rect.h, desbpp, flags))) + { + MDFND_PrintError(SDL_GetError()); + MDFN_indent(-1); + return(0); + } + } + } + + cur_xres = screen->w; + cur_yres = screen->h; + cur_flags = flags; + curbpp = screen->format->BitsPerPixel; + + GenerateDestRect(); + + MDFN_printf(_("Video Driver: %s\n"), (cur_flags & SDL_OPENGL) ? _("OpenGL") : (vdriver == VDRIVER_OVERLAY ? _("Overlay") :_("Software SDL") ) ); + + MDFN_printf(_("Video Mode: %d x %d x %d bpp\n"),screen->w,screen->h,screen->format->BitsPerPixel); + if(curbpp!=16 && curbpp!=24 && curbpp!=32) + { + MDFN_printf(_("Sorry, %dbpp modes are not supported by Mednafen. Supported bit depths are 16bpp, 24bpp, and 32bpp.\n"),curbpp); + KillVideo(); + MDFN_indent(-1); + return(0); + } + + //MDFN_printf(_("OpenGL: %s\n"), (cur_flags & SDL_OPENGL) ? _("Yes") : _("No")); + + if(cur_flags & SDL_OPENGL) + { + MDFN_indent(1); + MDFN_printf(_("Pixel shader: %s\n"), MDFN_GetSettingS(std::string(sn + "." + std::string("pixshader")).c_str()).c_str()); + MDFN_indent(-1); + } + + MDFN_printf(_("Fullscreen: %s\n"), _fullscreen ? _("Yes") : _("No")); + MDFN_printf(_("Special Scaler: %s\n"), _video.special ? Scalers[_video.special - 1].name : _("None")); + + if(!_video.scanlines) + MDFN_printf(_("Scanlines: Off\n")); + else + MDFN_printf(_("Scanlines: %d%% opacity\n"), _video.scanlines); + + MDFN_printf(_("Destination Rectangle: X=%d, Y=%d, W=%d, H=%d\n"), screen_dest_rect.x, screen_dest_rect.y, screen_dest_rect.w, screen_dest_rect.h); + if(screen_dest_rect.x < 0 || screen_dest_rect.y < 0 || (screen_dest_rect.x + screen_dest_rect.w) > screen->w || (screen_dest_rect.y + screen_dest_rect.h) > screen->h) + { + MDFN_indent(1); + MDFN_printf(_("Warning: Destination rectangle exceeds screen dimensions. This is ok if you really do want the clipping...\n")); + MDFN_indent(-1); + } + if(gi && gi->name) + SDL_WM_SetCaption((char *)gi->name,(char *)gi->name); + else + SDL_WM_SetCaption("Mednafen","Mednafen"); + + #ifdef WIN32 + #ifdef LSB_FIRST + IconSurface=SDL_CreateRGBSurfaceFrom((void *)mednafen_playicon.pixel_data,32,32,32,32*4,0xFF,0xFF00,0xFF0000,0xFF000000); + #else + IconSurface=SDL_CreateRGBSurfaceFrom((void *)mednafen_playicon.pixel_data,32,32,32,32*4,0xFF000000,0xFF0000,0xFF00,0xFF); + #endif + #else + #ifdef LSB_FIRST + IconSurface=SDL_CreateRGBSurfaceFrom((void *)mednafen_playicon128.pixel_data,128,128,32,128*4,0xFF,0xFF00,0xFF0000,0xFF000000); + #else + IconSurface=SDL_CreateRGBSurfaceFrom((void *)mednafen_playicon128.pixel_data,128,128,32,128*4,0xFF000000,0xFF0000,0xFF00,0xFF); + #endif + #endif + SDL_WM_SetIcon(IconSurface,0); + + int rs, gs, bs, as; + + if(cur_flags & SDL_OPENGL) + { + if(!InitOpenGL(evideoip, _video.scanlines, _video.pixshader, screen, &rs, &gs, &bs, &as)) + { + KillVideo(); + MDFN_indent(-1); + return(0); + } + } + else + { + rs = screen->format->Rshift; + gs = screen->format->Gshift; + bs = screen->format->Bshift; + + as = 0; + while(as == rs || as == gs || as == bs) // Find unused 8-bits to use as our alpha channel + as += 8; + } + + //printf("%d %d %d %d\n", rs, gs, bs, as); + + MDFN_indent(-1); + SDL_ShowCursor(0); + + real_rs = rs; + real_gs = gs; + real_bs = bs; + real_as = as; + + /* HQXX only supports this pixel format, sadly, and other pixel formats + can't be easily supported without rewriting the filters. + We do conversion to the real screen format in the blitting function. + */ + if(CurrentScaler) { + if(CurrentScaler->id == NTVB_HQ2X || CurrentScaler->id == NTVB_HQ3X || CurrentScaler->id == NTVB_HQ4X) + { + rs = 16; + gs = 8; + bs = 0; + as = 24; + } + else if(CurrentScaler->id == NTVB_2XSAI || CurrentScaler->id == NTVB_SUPER2XSAI || CurrentScaler->id == NTVB_SUPEREAGLE) + { + Init_2xSaI(screen->format->BitsPerPixel, 555); // systemColorDepth, BitFormat + } + } + + NetSurface = new MDFN_Surface(NULL, screen->w, 18 * 5, screen->w, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, real_rs, real_gs, real_bs, real_as)); + + NetRect.w = screen->w; + NetRect.h = 18 * 5; + NetRect.x = 0; + NetRect.y = 0; + + + { + int xmu = 1; + int ymu = 1; + + if(screen->w >= 768) + xmu = screen->w / 384; + if(screen->h >= 576) + ymu = screen->h / 288; + + SMRect.h = 18 + 2; + SMRect.x = 0; + SMRect.y = 0; + SMRect.w = screen->w; + + SMDRect.w = SMRect.w * xmu; + SMDRect.h = SMRect.h * ymu; + SMDRect.x = (screen->w - SMDRect.w) / 2; + SMDRect.y = screen->h - SMDRect.h; + + if(SMDRect.x < 0) + { + SMRect.w += SMDRect.x * 2 / xmu; + SMDRect.w = SMRect.w * xmu; + SMDRect.x = 0; + } + SMSurface = new MDFN_Surface(NULL, SMRect.w, SMRect.h, SMRect.w, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, real_rs, real_gs, real_bs, real_as)); + } + + //MDFNI_SetPixelFormat(rs, gs, bs, as); + memset(&pf_normal, 0, sizeof(pf_normal)); + memset(&pf_overlay, 0, sizeof(pf_overlay)); + + pf_normal.bpp = 32; + pf_normal.colorspace = MDFN_COLORSPACE_RGB; + pf_normal.Rshift = rs; + pf_normal.Gshift = gs; + pf_normal.Bshift = bs; + pf_normal.Ashift = as; + + if(vdriver == VDRIVER_OVERLAY) + { + pf_overlay.bpp = 32; + pf_overlay.colorspace = MDFN_COLORSPACE_YCbCr; + pf_overlay.Yshift = 0; + pf_overlay.Ushift = 8; + pf_overlay.Vshift = 16; + pf_overlay.Ashift = 24; + } + + //SetPixelFormatHax((vdriver == VDRIVER_OVERLAY) ? pf_overlay : pf_normal); //rs, gs, bs, as); + + for(int i = 0; i < 2; i++) + { + ClearBackBuffer(); + + if(cur_flags & SDL_OPENGL) + FlipOpenGL(); + else + SDL_Flip(screen); + } + + return 1; +} + +static uint32 howlong = 0; +static UTF8 *CurrentMessage = NULL; + +void VideoShowMessage(UTF8 *text) +{ + if(text) + howlong = MDFND_GetTime() + 2500; + else + howlong = 0; + + if(CurrentMessage) + { + free(CurrentMessage); + CurrentMessage = NULL; + } + + CurrentMessage = text; +} + +void BlitRaw(MDFN_Surface *src, const MDFN_Rect *src_rect, const MDFN_Rect *dest_rect, int source_alpha) +{ + if(cur_flags & SDL_OPENGL) + BlitOpenGLRaw(src, src_rect, dest_rect, (source_alpha != 0) && osd_alpha_blend); + else + { + SDL_to_MDFN_Surface_Wrapper m_surface(screen); + + //MDFN_SrcAlphaBlitSurface(src, src_rect, &m_surface, dest_rect); + MDFN_StretchBlitSurface(src, src_rect, &m_surface, dest_rect, (source_alpha > 0) && osd_alpha_blend); + } + + //if((dest_rect->x < screen_dest_rect.x) || (dest_rect->y < screen_dest_rect.y) || + // ((dest_rect->x + dest_rect->w) > (screen_dest_rect.x + screen_dest_rect.w)) || ((dest_rect->y + dest_rect->h) > (screen_dest_rect.y + screen_dest_rect.h)) ) + { + //puts("Need clear"); + NeedClear = 2; + } +} + +static bool IsInternalMessageActive(void) +{ + return(howlong >= MDFND_GetTime()); +} + +static bool BlitInternalMessage(void) +{ + if(howlong < MDFND_GetTime()) + { + if(CurrentMessage) + { + free(CurrentMessage); + CurrentMessage = NULL; + } + return(0); + } + + if(CurrentMessage) + { + SMSurface->Fill(0x00, 0x00, 0x00, 0xC0); + + DrawTextTransShadow(SMSurface->pixels + (1 * SMSurface->pitch32), SMSurface->pitch32 << 2, SMRect.w, CurrentMessage, + SMSurface->MakeColor(0xFF, 0xFF, 0xFF, 0xFF), SMSurface->MakeColor(0x00, 0x00, 0x00, 0xFF), TRUE); + free(CurrentMessage); + CurrentMessage = NULL; + } + + BlitRaw(SMSurface, &SMRect, &SMDRect); + return(1); +} + +static bool OverlayOK; // Set to TRUE when vdriver == "overlay", and it's safe to use an overlay format + // "Safe" is equal to OSD being off, and not using a special scaler that + // requires an RGB pixel format(HQnx) + // Otherwise, set to FALSE. + // (Set in the BlitScreen function before any calls to SubBlit()) + +static void SubBlit(MDFN_Surface *source_surface, const MDFN_Rect &src_rect, const MDFN_Rect &dest_rect) +{ + MDFN_Surface *eff_source_surface = source_surface; + MDFN_Rect eff_src_rect = src_rect; + MDFN_Surface *tmp_blur_surface = NULL; + int overlay_softscale = 0; + + if(!(src_rect.w > 0 && src_rect.w <= 32767) || !(src_rect.h > 0 && src_rect.h <= 32767)) + { + //fprintf(stderr, "BUG: Source rect out of range; w=%d, h=%d\n", src_rect.w, src_rect.h); + return; + } +//#if 0 +// assert(src_rect.w > 0 && src_rect.w <= 32767); +// assert(src_rect.h > 0 && src_rect.h <= 32767); +//#endif + + assert(dest_rect.w > 0); + assert(dest_rect.h > 0); + + // Handle selective blur first + if(0) + { + SelBlurImage sb_spec; + + tmp_blur_surface = new MDFN_Surface(NULL, src_rect.w, src_rect.h, src_rect.w, source_surface->format); + + sb_spec.red_threshold = 8; + sb_spec.green_threshold = 7; + sb_spec.blue_threshold = 10; + sb_spec.radius = 3; + sb_spec.source = source_surface->pixels + eff_src_rect.x + eff_src_rect.y * source_surface->pitchinpix; + sb_spec.source_pitch32 = source_surface->pitchinpix; + sb_spec.dest = tmp_blur_surface->pixels; + sb_spec.dest_pitch32 = tmp_blur_surface->pitchinpix; + sb_spec.width = eff_src_rect.w; + sb_spec.height = eff_src_rect.h; + sb_spec.red_shift = source_surface->format.Rshift; + sb_spec.green_shift = source_surface->format.Gshift; + sb_spec.blue_shift = source_surface->format.Bshift; + + MDFN_SelBlur(&sb_spec); + + eff_source_surface = tmp_blur_surface; + eff_src_rect.x = 0; + eff_src_rect.y = 0; + } + + if(OverlayOK && CurrentScaler && !CurGame->rotated) + { + if(CurrentScaler->id == NTVB_NN2X || CurrentScaler->id == NTVB_NN3X || CurrentScaler->id == NTVB_NN4X) + overlay_softscale = CurrentScaler->id - NTVB_NN2X + 2; + } + + if(CurrentScaler && !overlay_softscale) + { + uint8 *screen_pixies; + uint32 screen_pitch; + MDFN_Surface *bah_surface = NULL; + MDFN_Rect boohoo_rect = eff_src_rect; + + boohoo_rect.x = boohoo_rect.y = 0; + boohoo_rect.w *= CurrentScaler->xscale; + boohoo_rect.h *= CurrentScaler->yscale; + + bah_surface = new MDFN_Surface(NULL, boohoo_rect.w, boohoo_rect.h, boohoo_rect.w, eff_source_surface->format); + + screen_pixies = (uint8 *)bah_surface->pixels; + screen_pitch = bah_surface->pitch32 << 2; + + if(CurrentScaler->id == NTVB_SCALE4X || CurrentScaler->id == NTVB_SCALE3X || CurrentScaler->id == NTVB_SCALE2X) + { + // scale2x and scale3x apparently can't handle source heights less than 2. + // scale4x, it's less than 4 + if(eff_src_rect.h < 2 || (CurrentScaler->id == NTVB_SCALE4X && eff_src_rect.h < 4)) + { + nnx(CurrentScaler->id - NTVB_SCALE2X + 2, eff_source_surface, &eff_src_rect, bah_surface, &boohoo_rect); + } + else + { + uint8 *source_pixies = (uint8 *)eff_source_surface->pixels + eff_src_rect.x * sizeof(uint32) + eff_src_rect.y * eff_source_surface->pitchinpix * sizeof(uint32); + scale((CurrentScaler->id == NTVB_SCALE2X)?2:(CurrentScaler->id == NTVB_SCALE4X)?4:3, screen_pixies, screen_pitch, source_pixies, eff_source_surface->pitchinpix * sizeof(uint32), sizeof(uint32), eff_src_rect.w, eff_src_rect.h); + } + } + else if(CurrentScaler->id == NTVB_NN2X || CurrentScaler->id == NTVB_NN3X || CurrentScaler->id == NTVB_NN4X) + { + nnx(CurrentScaler->id - NTVB_NN2X + 2, eff_source_surface, &eff_src_rect, bah_surface, &boohoo_rect); + } + else if(CurrentScaler->id == NTVB_NNY2X || CurrentScaler->id == NTVB_NNY3X || CurrentScaler->id == NTVB_NNY4X) + { + nnyx(CurrentScaler->id - NTVB_NNY2X + 2, eff_source_surface, &eff_src_rect, bah_surface, &boohoo_rect); + } + else + { + uint8 *source_pixies = (uint8 *)(eff_source_surface->pixels + eff_src_rect.x + eff_src_rect.y * eff_source_surface->pitchinpix); + + if(CurrentScaler->id == NTVB_HQ2X) + hq2x_32(source_pixies, screen_pixies, eff_src_rect.w, eff_src_rect.h, eff_source_surface->pitchinpix * sizeof(uint32), screen_pitch); + else if(CurrentScaler->id == NTVB_HQ3X) + hq3x_32(source_pixies, screen_pixies, eff_src_rect.w, eff_src_rect.h, eff_source_surface->pitchinpix * sizeof(uint32), screen_pitch); + else if(CurrentScaler->id == NTVB_HQ4X) + hq4x_32(source_pixies, screen_pixies, eff_src_rect.w, eff_src_rect.h, eff_source_surface->pitchinpix * sizeof(uint32), screen_pitch); + else if(CurrentScaler->id == NTVB_2XSAI || CurrentScaler->id == NTVB_SUPER2XSAI || CurrentScaler->id == NTVB_SUPEREAGLE) + { + MDFN_Surface *saisrc = NULL; + + saisrc = new MDFN_Surface(NULL, eff_src_rect.w + 4, eff_src_rect.h + 4, eff_src_rect.w + 4, eff_source_surface->format); + + for(int y = 0; y < 2; y++) + { + memcpy(saisrc->pixels + (y * saisrc->pitchinpix) + 2, (uint32 *)source_pixies, eff_src_rect.w * sizeof(uint32)); + memcpy(saisrc->pixels + ((2 + y + eff_src_rect.h) * saisrc->pitchinpix) + 2, (uint32 *)source_pixies + (eff_src_rect.h - 1) * eff_source_surface->pitchinpix, eff_src_rect.w * sizeof(uint32)); + } + + for(int y = 0; y < eff_src_rect.h; y++) + { + memcpy(saisrc->pixels + ((2 + y) * saisrc->pitchinpix) + 2, (uint32*)source_pixies + y * eff_source_surface->pitchinpix, eff_src_rect.w * sizeof(uint32)); + memcpy(saisrc->pixels + ((2 + y) * saisrc->pitchinpix) + (2 + eff_src_rect.w), + saisrc->pixels + ((2 + y) * saisrc->pitchinpix) + (2 + eff_src_rect.w - 1), sizeof(uint32)); + } + + { + uint8 *saipix = (uint8 *)(saisrc->pixels + 2 * saisrc->pitchinpix + 2); + uint32 saipitch = saisrc->pitchinpix << 2; + + if(CurrentScaler->id == NTVB_2XSAI) + _2xSaI32(saipix, saipitch, screen_pixies, screen_pitch, eff_src_rect.w, eff_src_rect.h); + else if(CurrentScaler->id == NTVB_SUPER2XSAI) + Super2xSaI32(saipix, saipitch, screen_pixies, screen_pitch, eff_src_rect.w, eff_src_rect.h); + else if(CurrentScaler->id == NTVB_SUPEREAGLE) + SuperEagle32(saipix, saipitch, screen_pixies, screen_pitch, eff_src_rect.w, eff_src_rect.h); + } + + delete saisrc; + } + + if(bah_surface->format.Rshift != real_rs || bah_surface->format.Gshift != real_gs || bah_surface->format.Bshift != real_bs) + { + uint32 *lineptr = bah_surface->pixels; + + unsigned int srs = bah_surface->format.Rshift; + unsigned int sgs = bah_surface->format.Gshift; + unsigned int sbs = bah_surface->format.Bshift; + unsigned int drs = real_rs; + unsigned int dgs = real_gs; + unsigned int dbs = real_bs; + + for(int y = 0; y < boohoo_rect.h; y++) + { + for(int x = 0; x < boohoo_rect.w; x++) + { + uint32 pixel = lineptr[x]; + lineptr[x] = (((pixel >> srs) & 0xFF) << drs) | (((pixel >> sgs) & 0xFF) << dgs) | (((pixel >> sbs) & 0xFF) << dbs); + } + lineptr += bah_surface->pitchinpix; + } + } + } + + if(cur_flags & SDL_OPENGL) + BlitOpenGL(bah_surface, &boohoo_rect, &dest_rect, &eff_src_rect); + else + { + if(OverlayOK) + { + SDL_Rect tr; + + tr.x = dest_rect.x; + tr.y = dest_rect.y; + tr.w = dest_rect.w; + tr.h = dest_rect.h; + + OV_Blit(bah_surface, &boohoo_rect, &eff_src_rect, &tr, screen, 0, _video.scanlines, CurGame->rotated); + } + else + { + SDL_to_MDFN_Surface_Wrapper m_surface(screen); + + MDFN_StretchBlitSurface(bah_surface, &boohoo_rect, &m_surface, &dest_rect, false, _video.scanlines, &eff_src_rect, CurGame->rotated); + } + } + delete bah_surface; + } + else // No special scaler: + { + if(cur_flags & SDL_OPENGL) + BlitOpenGL(eff_source_surface, &eff_src_rect, &dest_rect, &eff_src_rect); + else + { + if(OverlayOK) + { + SDL_Rect tr; + + tr.x = dest_rect.x; + tr.y = dest_rect.y; + tr.w = dest_rect.w; + tr.h = dest_rect.h; + + OV_Blit(eff_source_surface, &eff_src_rect, &eff_src_rect, &tr, screen, overlay_softscale, _video.scanlines, CurGame->rotated); + } + else + { + SDL_to_MDFN_Surface_Wrapper m_surface(screen); + + MDFN_StretchBlitSurface(eff_source_surface, &eff_src_rect, &m_surface, &dest_rect, false, _video.scanlines, &eff_src_rect, CurGame->rotated); + } + } + } + + if(tmp_blur_surface) + { + delete tmp_blur_surface; + tmp_blur_surface = NULL; + } +} + +void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths) +{ + MDFN_Rect src_rect; + const MDFN_PixelFormat *pf_needed = &pf_normal; + + if(!screen) return; + + if(NeedClear) + { + NeedClear--; + ClearBackBuffer(); + } + + if(vdriver == VDRIVER_OVERLAY) + { + bool osd_active = Help_IsActive() || SaveStatesActive() || IsConsoleCheatConfigActive() || + //Netplay_GetTextView() || //zero 07-feb-2012 - no netplay + IsInternalMessageActive() || Debugger_IsActive(NULL, NULL); + + OverlayOK = (vdriver == VDRIVER_OVERLAY) && !osd_active && (!CurrentScaler || (CurrentScaler->id != NTVB_HQ2X && CurrentScaler->id != NTVB_HQ3X && + CurrentScaler->id != NTVB_HQ4X)); + + if(OverlayOK && LineWidths[0].w != ~0) + { + MDFN_Rect first_rect = LineWidths[DisplayRect->y]; + + for(int suby = DisplayRect->y; suby < DisplayRect->y + DisplayRect->h; suby++) + { + if(LineWidths[suby].w != first_rect.w || LineWidths[suby].x != first_rect.x) + { + puts("Skippidy"); + OverlayOK = FALSE; + break; + } + } + } + + if(OverlayOK) + pf_needed = &pf_overlay; + } + + msurface->SetFormat(*pf_needed, TRUE); + + src_rect.x = DisplayRect->x; + src_rect.w = DisplayRect->w; + src_rect.y = DisplayRect->y; + src_rect.h = DisplayRect->h; + + if(OverlayOK) + { + int fps_w, fps_h; + + if(FPS_IsActive(&fps_w, &fps_h)) + { + int fps_xpos = DisplayRect->x; + int fps_ypos = DisplayRect->y; + int w_bound = DisplayRect->w; + int h_bound = DisplayRect->h; + + if(LineWidths[0].w != ~0) + { + fps_xpos = LineWidths[DisplayRect->y].x; + w_bound = LineWidths[DisplayRect->y].w; + } + + if((fps_xpos + fps_w) > w_bound || (fps_ypos + fps_h) > h_bound) + { + puts("FPS draw error"); + } + else + { + FPS_Draw(msurface, fps_xpos, DisplayRect->y); + } + + } + } + + + if(LineWidths[0].w == ~0) // Skip multi line widths code? + { + SubBlit(msurface, src_rect, screen_dest_rect); + } + else + { + int y; + int last_y = src_rect.y; + int last_x = LineWidths[src_rect.y].x; + int last_width = LineWidths[src_rect.y].w; + + MDFN_Rect sub_src_rect; + MDFN_Rect sub_dest_rect; + + for(y = src_rect.y; y < (src_rect.y + src_rect.h + 1); y++) + { + if(y == (src_rect.y + src_rect.h) || LineWidths[y].x != last_x || LineWidths[y].w != last_width) + { + sub_src_rect.x = last_x; + sub_src_rect.w = last_width; + sub_src_rect.y = last_y; + sub_src_rect.h = y - last_y; + + sub_dest_rect.x = screen_dest_rect.x; + sub_dest_rect.w = screen_dest_rect.w; + + sub_dest_rect.y = screen_dest_rect.y + (last_y - src_rect.y) * screen_dest_rect.h / src_rect.h; + sub_dest_rect.h = sub_src_rect.h * screen_dest_rect.h / src_rect.h; + + if(!sub_dest_rect.h) // May occur with small yscale values in certain cases, so prevent triggering an assert() + sub_dest_rect.h = 1; + + // Blit here! + SubBlit(msurface, sub_src_rect, sub_dest_rect); + + last_y = y; + + if(y != (src_rect.y + src_rect.h)) + { + last_width = LineWidths[y].w; + last_x = LineWidths[y].x; + } + + } + } + } + + unsigned int debw, debh; + + if(Debugger_IsActive(&debw, &debh)) + { + if(!DebuggerSurface) + { + DebuggerSurface = new MDFN_Surface(NULL, 640, 480, 640, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, real_rs, real_gs, real_bs, real_as)); + } + DebuggerRect.w = debw; + DebuggerRect.h = debh; + DebuggerRect.x = 0; + DebuggerRect.y = 0; + + MDFN_Rect zederect; + + int xm = screen->w / DebuggerRect.w; + int ym = screen->h / DebuggerRect.h; + + if(xm < 1) xm = 1; + if(ym < 1) ym = 1; + + //if(xm > ym) xm = ym; + //if(ym > xm) ym = xm; + + // Allow it to be compacted horizontally, but don't stretch it out, as it's hard(IMHO) to read. + if(xm > ym) xm = ym; + if(ym > (2 * xm)) ym = 2 * xm; + + zederect.w = DebuggerRect.w * xm; + zederect.h = DebuggerRect.h * ym; + + zederect.x = (screen->w - zederect.w) / 2; + zederect.y = (screen->h - zederect.h) / 2; + + Debugger_Draw(DebuggerSurface, &DebuggerRect, &zederect); + + BlitRaw(DebuggerSurface, &DebuggerRect, &zederect); + } +#if 0 + if(CKGUI_IsActive()) + { + if(!CKGUISurface) + { + CKGUIRect.w = screen->w; + CKGUIRect.h = screen->h; + + CKGUISurface = SDL_CreateRGBSurface(SDL_SWSURFACE | SDL_SRCALPHA, CKGUIRect.w, CKGUIRect.h, 32, 0xFF << real_rs, 0xFF << real_gs, 0xFF << real_bs, 0xFF << real_as); + SDL_SetColorKey(CKGUISurface, SDL_SRCCOLORKEY, 0); + SDL_SetAlpha(CKGUISurface, SDL_SRCALPHA, 0); + } + MDFN_Rect zederect = CKGUIRect; + CKGUI_Draw(CKGUISurface, &CKGUIRect); + BlitRaw(CKGUISurface, &CKGUIRect, &zederect); + } + else if(CKGUISurface) + { + SDL_FreeSurface(CKGUISurface); + CKGUISurface = NULL; + } +#endif + + if(Help_IsActive()) + { + if(!HelpSurface) + { + HelpRect.w = std::min(512, screen->w); + HelpRect.h = std::min(384, screen->h); + + HelpSurface = new MDFN_Surface(NULL, 512, 384, 512, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, real_rs, real_gs, real_bs, real_as)); +/* + HelpSurface = SDL_CreateRGBSurface(SDL_SWSURFACE | SDL_SRCALPHA, 512, 384, 32, 0xFF << real_rs, 0xFF << real_gs, 0xFF << real_bs, 0xFF << real_as); + SDL_SetColorKey(HelpSurface, SDL_SRCCOLORKEY, 0); + SDL_SetAlpha(HelpSurface, SDL_SRCALPHA, 0); +*/ + Help_Draw(HelpSurface, &HelpRect); + } + + MDFN_Rect zederect; + + zederect.w = HelpRect.w * (screen->w / HelpRect.w); + zederect.h = HelpRect.h * (screen->h / HelpRect.h); + + zederect.x = (screen->w - zederect.w) / 2; + zederect.y = (screen->h - zederect.h) / 2; + + BlitRaw(HelpSurface, &HelpRect, &zederect, 0); + } + else if(HelpSurface) + { + delete HelpSurface; + HelpSurface = NULL; + } + + DrawSaveStates(screen, exs, eys, real_rs, real_gs, real_bs, real_as); + + if(IsConsoleCheatConfigActive()) + { + if(!CheatSurface) + { + CheatRect.w = screen->w; + CheatRect.h = screen->h; + + CheatSurface = new MDFN_Surface(NULL, CheatRect.w, CheatRect.h, CheatRect.w, MDFN_PixelFormat(MDFN_COLORSPACE_RGB, real_rs, real_gs, real_bs, real_as)); + } + MDFN_Rect zederect; + + zederect.x = CheatRect.x; + zederect.y = CheatRect.y; + zederect.w = CheatRect.w; + zederect.h = CheatRect.h; + + DrawCheatConsole(CheatSurface, &CheatRect); + BlitRaw(CheatSurface, &CheatRect, &zederect); + } + else if(CheatSurface) + { + delete CheatSurface; + CheatSurface = NULL; + } + + //zero 07-feb-2012 - no netplay + //if(Netplay_GetTextView()) + //{ + //if(Netplay_GetTextView()) + //{ + // DrawNetplayTextBuffer(NetSurface, &NetRect); + + { + MDFN_Rect zederect; + + // zederect.x = 0; + // zederect.y = screen->h - NetRect.h; + // zederect.w = NetRect.w; + // zederect.h = NetRect.h; + + // BlitRaw(NetSurface, &NetRect, &zederect); + // } + // if(SDL_MUSTLOCK(NetSurface)) + // SDL_UnlockSurface(NetSurface); + //} + // BlitRaw(NetSurface, &NetRect, &zederect); + // } + } + + BlitInternalMessage(); + + if(!OverlayOK) + FPS_DrawToScreen(screen, real_rs, real_gs, real_bs, real_as); + + if(!(cur_flags & SDL_OPENGL)) + { + if(!OverlayOK) + SDL_Flip(screen); + } + else + FlipOpenGL(); +} + +void PtoV(const int in_x, const int in_y, int32 *out_x, int32 *out_y) +{ + assert(VideoGI); + if(VideoGI->rotated) + { + double tmp_x, tmp_y; + + // Swap X and Y + tmp_x = ((double)(in_y - screen_dest_rect.y) / eys); + tmp_y = ((double)(in_x - screen_dest_rect.x) / exs); + + // Correct position(and movement) + if(VideoGI->rotated == MDFN_ROTATE90) + tmp_x = VideoGI->nominal_width - 1 - tmp_x; + else if(VideoGI->rotated == MDFN_ROTATE270) + tmp_y = VideoGI->nominal_height - 1 - tmp_y; + + *out_x = (int32)round(65536 * tmp_x); + *out_y = (int32)round(65536 * tmp_y); + } + else + { + *out_x = (int32)round(65536 * (double)(in_x - screen_dest_rect.x) / exs); + *out_y = (int32)round(65536 * (double)(in_y - screen_dest_rect.y) / eys); + } +} diff --git a/libmednahawk/src/drivers/video.h b/libmednahawk/src/drivers/video.h new file mode 100644 index 0000000000..83273c8270 --- /dev/null +++ b/libmednahawk/src/drivers/video.h @@ -0,0 +1,127 @@ +#ifndef __MDFN_DRIVERS_VIDEO_H +#define __MDFN_DRIVERS_VIDEO_H + +enum +{ + VDRIVER_OPENGL = 0, + VDRIVER_SOFTSDL = 1, + VDRIVER_OVERLAY = 2 +}; + +enum +{ + VIDEOIP_OFF = 0, // Off should always be 0 here. + VIDEOIP_BILINEAR, + VIDEOIP_LINEAR_X, + VIDEOIP_LINEAR_Y +}; + +void PtoV(const int in_x, const int in_y, int32 *out_x, int32 *out_y); +int InitVideo(MDFNGI *gi); +void KillVideo(void); +void BlitScreen(MDFN_Surface *, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths); +void ToggleFS(); +void ClearVideoSurfaces(void); + +#define NTVB_HQ2X 1 +#define NTVB_HQ3X 2 +#define NTVB_HQ4X 3 + +#define NTVB_SCALE2X 4 +#define NTVB_SCALE3X 5 +#define NTVB_SCALE4X 6 + +#define NTVB_NN2X 7 +#define NTVB_NN3X 8 +#define NTVB_NN4X 9 + +#define NTVB_NNY2X 10 +#define NTVB_NNY3X 11 +#define NTVB_NNY4X 12 + +#define NTVB_2XSAI 13 +#define NTVB_SUPER2XSAI 14 +#define NTVB_SUPEREAGLE 15 + +int VideoResize(int nw, int nh); + +void VideoShowMessage(UTF8 *text); + +// source_alpha = 0 (disabled) +// = 1 (enabled) +// = -1 (enabled only if it will be hardware-accelerated, IE via OpenGL) +void BlitRaw(MDFN_Surface *src, const MDFN_Rect *src_rect, const MDFN_Rect *dest_rect, int source_alpha = 1); + +// Called from the main thread +bool Video_Init(MDFNGI *gi); + +// Called from the main thread +void Video_Kill(void); + +// Called from the game thread +void Video_GetInternalBB(uint32 **XBuf, MDFN_Rect **LineWidths); + +// Called from the game thread +void Video_SetInternalBBReady(const MDFN_Rect &DisplayRect); + +// Called from the main thread. +bool Video_ScreenBlitReady(void); + +// Called from the main thread. +void Video_BlitToScreen(void); + + +class SDL_to_MDFN_Surface_Wrapper : public MDFN_Surface +{ + public: + INLINE SDL_to_MDFN_Surface_Wrapper(SDL_Surface *sdl_surface) : ss(sdl_surface) + { + // Locking should be first thing. + if(SDL_MUSTLOCK(ss)) + SDL_LockSurface(ss); + + format.bpp = ss->format->BitsPerPixel; + format.colorspace = MDFN_COLORSPACE_RGB; + format.Rshift = ss->format->Rshift; + format.Gshift = ss->format->Gshift; + format.Bshift = ss->format->Bshift; + format.Ashift = ss->format->Ashift; + + format.Rprec = 8 - ss->format->Rloss; + format.Gprec = 8 - ss->format->Gloss; + format.Bprec = 8 - ss->format->Bloss; + format.Aprec = 8 - ss->format->Aloss; + + pixels_is_external = true; + + pixels16 = NULL; + pixels = NULL; + + if(ss->format->BitsPerPixel == 16) + { + pixels16 = (uint16*)ss->pixels; + pitchinpix = ss->pitch >> 1; + } + else + { + pixels = (uint32*)ss->pixels; + pitchinpix = ss->pitch >> 2; + } + + format = MDFN_PixelFormat(MDFN_COLORSPACE_RGB, sdl_surface->format->Rshift, sdl_surface->format->Gshift, sdl_surface->format->Bshift, sdl_surface->format->Ashift); + + w = ss->w; + h = ss->h; + } + + INLINE ~SDL_to_MDFN_Surface_Wrapper() + { + if(SDL_MUSTLOCK(ss)) + SDL_UnlockSurface(ss); + ss = NULL; + } + private: + SDL_Surface *ss; +}; + +#endif diff --git a/libmednahawk/src/endian.cpp b/libmednahawk/src/endian.cpp new file mode 100644 index 0000000000..ab5abca573 --- /dev/null +++ b/libmednahawk/src/endian.cpp @@ -0,0 +1,245 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "endian.h" + +void Endian_A16_Swap(void *src, uint32 nelements) +{ + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 tmp = nsrc[i * 2]; + + nsrc[i * 2] = nsrc[i * 2 + 1]; + nsrc[i * 2 + 1] = tmp; + } +} + +void Endian_A32_Swap(void *src, uint32 nelements) +{ + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 tmp1 = nsrc[i * 4]; + uint8 tmp2 = nsrc[i * 4 + 1]; + + nsrc[i * 4] = nsrc[i * 4 + 3]; + nsrc[i * 4 + 1] = nsrc[i * 4 + 2]; + + nsrc[i * 4 + 2] = tmp2; + nsrc[i * 4 + 3] = tmp1; + } +} + +void Endian_A64_Swap(void *src, uint32 nelements) +{ + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 *base = &nsrc[i * 8]; + + for(int z = 0; z < 4; z++) + { + uint8 tmp = base[z]; + + base[z] = base[7 - z]; + base[7 - z] = tmp; + } + } +} + +void Endian_A16_NE_to_LE(void *src, uint32 nelements) +{ + #ifdef MSB_FIRST + Endian_A16_Swap(src, nelements); + #endif +} + +void Endian_A32_NE_to_LE(void *src, uint32 nelements) +{ + #ifdef MSB_FIRST + Endian_A32_Swap(src, nelements); + #endif +} + +void Endian_A64_NE_to_LE(void *src, uint32 nelements) +{ + #ifdef MSB_FIRST + Endian_A64_Swap(src, nelements); + #endif +} + + +void Endian_A16_LE_to_NE(void *src, uint32 nelements) +{ + #ifdef MSB_FIRST + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 tmp = nsrc[i * 2]; + + nsrc[i * 2] = nsrc[i * 2 + 1]; + nsrc[i * 2 + 1] = tmp; + } + #endif +} + +void Endian_A16_BE_to_NE(void *src, uint32 nelements) +{ + #ifdef LSB_FIRST + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 tmp = nsrc[i * 2]; + + nsrc[i * 2] = nsrc[i * 2 + 1]; + nsrc[i * 2 + 1] = tmp; + } + #endif +} + + +void Endian_A32_LE_to_NE(void *src, uint32 nelements) +{ + #ifdef MSB_FIRST + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 tmp1 = nsrc[i * 4]; + uint8 tmp2 = nsrc[i * 4 + 1]; + + nsrc[i * 4] = nsrc[i * 4 + 3]; + nsrc[i * 4 + 1] = nsrc[i * 4 + 2]; + + nsrc[i * 4 + 2] = tmp2; + nsrc[i * 4 + 3] = tmp1; + } + #endif +} + +void Endian_A64_LE_to_NE(void *src, uint32 nelements) +{ + #ifdef MSB_FIRST + uint32 i; + uint8 *nsrc = (uint8 *)src; + + for(i = 0; i < nelements; i++) + { + uint8 *base = &nsrc[i * 8]; + + for(int z = 0; z < 4; z++) + { + uint8 tmp = base[z]; + + base[z] = base[7 - z]; + base[7 - z] = tmp; + } + } + #endif +} + +void FlipByteOrder(uint8 *src, uint32 count) +{ + uint8 *start=src; + uint8 *end=src+count-1; + + if((count&1) || !count) return; /* This shouldn't happen. */ + + count >>= 1; + + while(count--) + { + uint8 tmp; + + tmp=*end; + *end=*start; + *start=tmp; + end--; + start++; + } +} + +void Endian_V_LE_to_NE(void *src, uint32 bytesize) +{ + #ifdef MSB_FIRST + FlipByteOrder((uint8 *)src, bytesize); + #endif +} + +void Endian_V_NE_to_LE(void *src, uint32 bytesize) +{ + #ifdef MSB_FIRST + FlipByteOrder((uint8 *)src, bytesize); + #endif +} + +int write16le(uint16 b, FILE *fp) +{ + uint8 s[2]; + s[0]=b; + s[1]=b>>8; + return((fwrite(s,1,2,fp)<2)?0:2); +} + +int write32le(uint32 b, FILE *fp) +{ + uint8 s[4]; + s[0]=b; + s[1]=b>>8; + s[2]=b>>16; + s[3]=b>>24; + return((fwrite(s,1,4,fp)<4)?0:4); +} + +int read32le(uint32 *Bufo, FILE *fp) +{ + uint32 buf; + if(fread(&buf,1,4,fp)<4) + return 0; + #ifdef LSB_FIRST + *(uint32*)Bufo=buf; + #else + *(uint32*)Bufo=((buf&0xFF)<<24)|((buf&0xFF00)<<8)|((buf&0xFF0000)>>8)|((buf&0xFF000000)>>24); + #endif + return 1; +} + +int read16le(char *d, FILE *fp) +{ + #ifdef LSB_FIRST + return((fread(d,1,2,fp)<2)?0:2); + #else + int ret; + ret=fread(d+1,1,1,fp); + ret+=fread(d,1,1,fp); + return ret<2?0:2; + #endif +} + diff --git a/libmednahawk/src/endian.h b/libmednahawk/src/endian.h new file mode 100644 index 0000000000..17d9f32a55 --- /dev/null +++ b/libmednahawk/src/endian.h @@ -0,0 +1,207 @@ +#ifndef __MDFN_ENDIAN_H +#define __MDFN_ENDIAN_H + +#ifdef MSB_FIRST + #ifdef LSB_FIRST + #error Only define one of LSB_FIRST and MSB_FIRST + #endif + + #ifndef le32toh + #define le32toh(l) ((((l)>>24) & 0xff) | (((l)>>8) & 0xff00) \ + | (((l)<<8) & 0xff0000) | (((l)<<24) & 0xff000000)) + #endif + #ifndef le16toh + #define le16toh(l) ((((l)>>8) & 0xff) | (((l)<<8) & 0xff00)) + #endif +#else + #ifndef le32toh + #define le32toh(l) (l) + #endif + #ifndef le16toh + #define le16toh(l) (l) + #endif +#endif + +#ifndef htole32 +#define htole32 le32toh +#endif + +#ifndef htole16 +#define htole16 le16toh +#endif + + +int write16le(uint16 b, FILE *fp); +int write32le(uint32 b, FILE *fp); +int read32le(uint32 *Bufo, FILE *fp); + +void Endian_A16_Swap(void *src, uint32 nelements); +void Endian_A32_Swap(void *src, uint32 nelements); +void Endian_A64_Swap(void *src, uint32 nelements); + +void Endian_A16_NE_to_LE(void *src, uint32 nelements); +void Endian_A32_NE_to_LE(void *src, uint32 nelements); +void Endian_A64_NE_to_LE(void *src, uint32 nelements); + +void Endian_A16_LE_to_NE(void *src, uint32 nelements); +void Endian_A16_BE_to_NE(void *src, uint32 nelements); +void Endian_A32_LE_to_NE(void *src, uint32 nelements); +void Endian_A64_LE_to_NE(void *src, uint32 nelements); + +void Endian_V_LE_to_NE(void *src, uint32 bytesize); +void Endian_V_NE_to_LE(void *src, uint32 bytesize); + +void FlipByteOrder(uint8 *src, uint32 count); + +// The following functions can encode/decode to unaligned addresses. + +static INLINE void MDFN_en16lsb(uint8 *buf, uint16 morp) +{ + buf[0]=morp; + buf[1]=morp>>8; +} + +static INLINE void MDFN_en24lsb(uint8 *buf, uint32 morp) +{ + buf[0]=morp; + buf[1]=morp>>8; + buf[2]=morp>>16; +} + + +static INLINE void MDFN_en32lsb(uint8 *buf, uint32 morp) +{ + buf[0]=morp; + buf[1]=morp>>8; + buf[2]=morp>>16; + buf[3]=morp>>24; +} + +static INLINE void MDFN_en64lsb(uint8 *buf, uint64 morp) +{ + buf[0]=morp >> 0; + buf[1]=morp >> 8; + buf[2]=morp >> 16; + buf[3]=morp >> 24; + buf[4]=morp >> 32; + buf[5]=morp >> 40; + buf[6]=morp >> 48; + buf[7]=morp >> 56; +} + + +static INLINE void MDFN_en16msb(uint8 *buf, uint16 morp) +{ + buf[0] = morp >> 8; + buf[1] = morp; +} + +static INLINE void MDFN_en24msb(uint8 *buf, uint32 morp) +{ + buf[0] = morp >> 16; + buf[1] = morp >> 8; + buf[2] = morp; +} + +static INLINE void MDFN_en32msb(uint8 *buf, uint32 morp) +{ + buf[0] = morp >> 24; + buf[1] = morp >> 16; + buf[2] = morp >> 8; + buf[3] = morp; +} + +static INLINE void MDFN_en64msb(uint8 *buf, uint64 morp) +{ + buf[0] = morp >> 56; + buf[1] = morp >> 48; + buf[2] = morp >> 40; + buf[3] = morp >> 32; + buf[4] = morp >> 24; + buf[5] = morp >> 16; + buf[6] = morp >> 8; + buf[7] = morp >> 0; +} + + +// Overloaded functions, yay. +static INLINE void MDFN_enlsb(uint16 * buf, uint16 value) +{ + MDFN_en16lsb((uint8 *)buf, value); +} + +static INLINE void MDFN_enlsb(uint32 * buf, uint32 value) +{ + MDFN_en32lsb((uint8 *)buf, value); +} + +static INLINE void MDFN_enlsb(uint64 * buf, uint64 value) +{ + MDFN_en64lsb((uint8 *)buf, value); +} + + +static INLINE uint16 MDFN_de16lsb(const uint8 *morp) +{ + return(morp[0] | (morp[1] << 8)); +} + + +static INLINE uint32 MDFN_de24lsb(const uint8 *morp) +{ + return(morp[0]|(morp[1]<<8)|(morp[2]<<16)); +} + +static INLINE uint32 MDFN_de32lsb(const uint8 *morp) +{ + return(morp[0]|(morp[1]<<8)|(morp[2]<<16)|(morp[3]<<24)); +} + +static INLINE uint64 MDFN_de64lsb(const uint8 *morp) +{ + uint64 ret = 0; + + ret |= (uint64)morp[0]; + ret |= (uint64)morp[1] << 8; + ret |= (uint64)morp[2] << 16; + ret |= (uint64)morp[3] << 24; + ret |= (uint64)morp[4] << 32; + ret |= (uint64)morp[5] << 40; + ret |= (uint64)morp[6] << 48; + ret |= (uint64)morp[7] << 56; + + return(ret); +} + +static INLINE uint16 MDFN_delsb(const uint16 *buf) +{ + return(MDFN_de16lsb((uint8 *)buf)); +} + +static INLINE uint32 MDFN_delsb(const uint32 *buf) +{ + return(MDFN_de32lsb((uint8 *)buf)); +} + +static INLINE uint64 MDFN_delsb(const uint64 *buf) +{ + return(MDFN_de64lsb((uint8 *)buf)); +} + +static INLINE uint16 MDFN_de16msb(const uint8 *morp) +{ + return(morp[1] | (morp[0] << 8)); +} + +static INLINE uint32 MDFN_de24msb(const uint8 *morp) +{ + return((morp[2]<<0)|(morp[1]<<8)|(morp[0]<<16)); +} + + +static INLINE uint32 MDFN_de32msb(const uint8 *morp) +{ + return(morp[3]|(morp[2]<<8)|(morp[1]<<16)|(morp[0]<<24)); +} + +#endif diff --git a/libmednahawk/src/error.cpp b/libmednahawk/src/error.cpp new file mode 100644 index 0000000000..817e4bfe0c --- /dev/null +++ b/libmednahawk/src/error.cpp @@ -0,0 +1,136 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "error.h" +#include +#include +#include + +MDFN_Error::MDFN_Error() throw() +{ + abort(); +} + +MDFN_Error::MDFN_Error(int errno_code_new, const char *format, ...) throw() +{ + errno_code = errno_code_new; + + va_list ap; + va_start(ap, format); + error_message = trio_vaprintf(format, ap); + va_end(ap); +} + + +MDFN_Error::MDFN_Error(const ErrnoHolder &enh) +{ + errno_code = enh.Errno(); + + error_message = trio_aprintf("%s", enh.StrError()); +} + + +MDFN_Error::~MDFN_Error() throw() +{ + if(error_message) + { + free(error_message); + error_message = NULL; + } +} + +MDFN_Error::MDFN_Error(const MDFN_Error &ze_error) throw() +{ + if(ze_error.error_message) + error_message = strdup(ze_error.error_message); + else + error_message = NULL; + + errno_code = ze_error.errno_code; +} + +MDFN_Error& MDFN_Error::operator=(const MDFN_Error &ze_error) throw() +{ + char *new_error_message = ze_error.error_message ? strdup(ze_error.error_message) : NULL; + int new_errno_code = ze_error.errno_code; + + if(error_message) + free(error_message); + + error_message = new_error_message; + errno_code = new_errno_code; + + return(*this); +} + + +const char * MDFN_Error::what(void) const throw() +{ + if(!error_message) + return("Error allocating memory for the error message!"); + + return(error_message); +} + +int MDFN_Error::GetErrno(void) const throw() +{ + return(errno_code); +} + +static const char *srr_wrap(int ret, const char *local_strerror) +{ + if(ret == -1) + return("ERROR IN strerror_r()!!!"); + + return(local_strerror); +} + +static const char *srr_wrap(const char *ret, const char *local_strerror) +{ + if(ret == NULL) + return("ERROR IN strerror_r()!!!"); + + return(ret); +} + +void ErrnoHolder::SetErrno(int the_errno) +{ + local_errno = the_errno; + + if(the_errno == 0) + local_strerror[0] = 0; + else + { + #ifdef HAVE_STRERROR_R + const char *retv; + + retv = srr_wrap(strerror_r(the_errno, local_strerror, 256), local_strerror); + + if(retv != local_strerror) + strncpy(local_strerror, retv, 255); + + #else // No strerror_r :( + + strncpy(local_strerror, strerror(the_errno), 255); + + #endif + + local_strerror[255] = 0; + } +} + diff --git a/libmednahawk/src/error.h b/libmednahawk/src/error.h new file mode 100644 index 0000000000..2b43042fe9 --- /dev/null +++ b/libmednahawk/src/error.h @@ -0,0 +1,75 @@ +#ifndef __MDFN_ERROR_H +#define __MDFN_ERROR_H + +#include +#include +#include + +#ifdef __cplusplus + +class ErrnoHolder; +class MDFN_Error : public std::exception +{ + public: + + MDFN_Error() throw(); + + MDFN_Error(int errno_code_new, const char *format, ...) throw(); + MDFN_Error(const ErrnoHolder &enh); + + ~MDFN_Error() throw(); + + MDFN_Error(const MDFN_Error &ze_error) throw(); + MDFN_Error & operator=(const MDFN_Error &ze_error) throw(); + + virtual const char *what(void) const throw(); + int GetErrno(void) const throw(); + + private: + + int errno_code; + char *error_message; +}; + +class ErrnoHolder +{ + public: + + ErrnoHolder() + { + //SetErrno(0); + local_errno = 0; + local_strerror[0] = 0; + } + + ErrnoHolder(int the_errno) + { + SetErrno(the_errno); + } + + inline int Errno(void) const + { + return(local_errno); + } + + const char *StrError(void) const + { + return(local_strerror); + } + + void operator=(int the_errno) + { + SetErrno(the_errno); + } + + private: + + void SetErrno(int the_errno); + + int local_errno; + char local_strerror[256]; +}; + +#endif + +#endif diff --git a/libmednahawk/src/file.cpp b/libmednahawk/src/file.cpp new file mode 100644 index 0000000000..6edcb5b178 --- /dev/null +++ b/libmednahawk/src/file.cpp @@ -0,0 +1,796 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include +#include +#include +#include +//#include //zero 07-feb-2012 +#include +#include + +#ifdef HAVE_MMAP +#include +#include +#include +#include +#endif + + +#include +#include "compress/unzip.h" + +#include "file.h" +#include "general.h" + +#ifndef __GNUC__ + #define strcasecmp strcmp +#endif + +static const int64 MaxROMImageSize = (int64)1 << 26; // 2 ^ 26 = 64MiB + +enum +{ + MDFN_FILETYPE_PLAIN = 0, + MDFN_FILETYPE_GZIP = 1, + MDFN_FILETYPE_ZIP = 2, +}; + +static const char *unzErrorString(int error_code) +{ + if(error_code == UNZ_OK) + return("ZIP OK"); + else if(error_code == UNZ_END_OF_LIST_OF_FILE) + return("ZIP End of file list"); + else if(error_code == UNZ_EOF) + return("ZIP EOF"); + else if(error_code == UNZ_PARAMERROR) + return("ZIP Parameter error"); + else if(error_code == UNZ_BADZIPFILE) + return("ZIP file bad"); + else if(error_code == UNZ_INTERNALERROR) + return("ZIP Internal error"); + else if(error_code == UNZ_CRCERROR) + return("ZIP CRC error"); + else if(error_code == UNZ_ERRNO) + return(strerror(errno)); + else + return("ZIP Unknown"); +} + +bool MDFNFILE::ApplyIPS(FILE *ips) +{ + uint8 header[5]; + uint32 count = 0; + + //MDFN_printf(_("Applying IPS file \"%s\"...\n"), path); + + MDFN_indent(1); + if(::fread(header, 1, 5, ips) != 5) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error reading IPS file header: %s"), ene.StrError()); + MDFN_indent(-1); + return(0); + } + + if(memcmp(header, "PATCH", 5)) + { + MDFN_PrintError(_("IPS file header is invalid.")); + MDFN_indent(-1); + return(0); + } + + #ifdef HAVE_MMAP + // If the file is mmap()'d, move it to malloc()'d RAM + if(is_mmap) + { + void *tmp_ptr = MDFN_malloc(f_size, _("file read buffer")); + if(!tmp_ptr) + { + //Close(); + //fclose(ipsfile); + return(0); + } + memcpy(tmp_ptr, f_data, f_size); + + munmap(f_data, f_size); + + is_mmap = FALSE; + f_data = (uint8 *)tmp_ptr; + } + #endif + + while(::fread(header, 1, 3, ips) == 3) + { + uint32 offset = (header[0] << 16) | (header[1] << 8) | header[2]; + uint8 patch_size_raw[2]; + uint32 patch_size; + bool rle = false; + + if(!memcmp(header, "EOF", 3)) + { + MDFN_printf(_("IPS EOF: Did %d patches\n\n"), count); + MDFN_indent(-1); + return(1); + } + + if(::fread(patch_size_raw, 1, 2, ips) != 2) + { + ErrnoHolder ene(errno); + MDFN_PrintError(_("Error reading IPS patch length: %s"), ene.StrError()); + return(0); + } + + patch_size = MDFN_de16msb(patch_size_raw); + + if(!patch_size) /* RLE */ + { + if(::fread(patch_size_raw, 1, 2, ips) != 2) + { + ErrnoHolder ene(errno); + MDFN_PrintError(_("Error reading IPS RLE patch length: %s"), ene.StrError()); + return(0); + } + + patch_size = MDFN_de16msb(patch_size_raw); + + // Is this right? + if(!patch_size) + patch_size = 65536; + + rle = true; + //MDFN_printf(" Offset: %8d Size: %5d RLE\n",offset, patch_size); + } + + if((offset + patch_size) > f_size) + { + uint8 *tmp; + + //printf("%d\n", offset + patch_size, f_size); + + if((offset + patch_size) > MaxROMImageSize) + { + MDFN_PrintError(_("ROM image will be too large after IPS patch; maximum size allowed is %llu bytes."), (unsigned long long)MaxROMImageSize); + return(0); + } + + if(!(tmp = (uint8 *)MDFN_realloc(f_data, offset + patch_size, _("file read buffer")))) + return(0); + + // Zero newly-allocated memory + memset(tmp + f_size, 0, (offset + patch_size) - f_size); + + f_size = offset + patch_size; + f_data = tmp; + } + + + if(rle) + { + const int b = ::fgetc(ips); + uint8 *start = f_data + offset; + + if(EOF == b) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error reading IPS RLE patch byte: %s"), ene.StrError()); + + return(0); + } + + while(patch_size--) + { + *start=b; + start++; + } + + } + else /* Normal patch */ + { + //MDFN_printf(" Offset: %8d Size: %5d\n", offset, patch_size); + if(::fread(f_data + offset, 1, patch_size, ips) != patch_size) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error reading IPS patch: %s"), ene.StrError()); + return(0); + } + } + count++; + } + ErrnoHolder ene(errno); + + //MDFN_printf(_("Warning: IPS ended without an EOF chunk.\n")); + //MDFN_printf(_("IPS EOF: Did %d patches\n\n"), count); + MDFN_indent(-1); + + MDFN_PrintError(_("Error reading IPS patch header: %s"), ene.StrError()); + return(0); + + //return(1); +} + +// This function should ALWAYS close the system file "descriptor"(gzip library, zip library, or FILE *) it's given, +// even if it errors out. +bool MDFNFILE::MakeMemWrapAndClose(void *tz, int type) +{ + bool ret = FALSE; + + #ifdef HAVE_MMAP + is_mmap = FALSE; + #endif + location = 0; + + if(type == MDFN_FILETYPE_PLAIN) + { + ::fseek((FILE *)tz, 0, SEEK_END); + f_size = ::ftell((FILE *)tz); + ::fseek((FILE *)tz, 0, SEEK_SET); + + if(size > MaxROMImageSize) + { + MDFN_PrintError(_("ROM image is too large; maximum size allowed is %llu bytes."), (unsigned long long)MaxROMImageSize); + goto doret; + } + + #ifdef HAVE_MMAP + if((void *)-1 != (f_data = (uint8 *)mmap(NULL, size, PROT_READ, MAP_SHARED, fileno((FILE *)tz), 0))) + { + //puts("mmap'ed"); + is_mmap = TRUE; + #ifdef HAVE_MADVISE + if(0 == madvise(f_data, size, MADV_SEQUENTIAL | MADV_WILLNEED)) + { + //puts("madvised"); + } + #endif + } + else + { + #endif + if(!(f_data = (uint8*)MDFN_malloc(size, _("file read buffer")))) + { + goto doret; + } + if((int64)::fread(f_data, 1, size, (FILE *)tz) != size) + { + ErrnoHolder ene(errno); + MDFN_PrintError(_("Error reading file: %s"), ene.StrError()); + + free(f_data); + goto doret; + } + #ifdef HAVE_MMAP + } + #endif + } + else if(type == MDFN_FILETYPE_GZIP) + { + uint32_t cur_size = 0; + uint32_t cur_alloced = 65536; + int howmany; + + if(!(f_data = (uint8*)MDFN_malloc(cur_alloced, _("file read buffer")))) + { + goto doret; + } + + while((howmany = gzread((gzFile)tz, f_data + cur_size, cur_alloced - cur_size)) > 0) + { + cur_size += howmany; + cur_alloced <<= 1; + + if(cur_size > MaxROMImageSize) + { + MDFN_PrintError(_("ROM image is too large; maximum size allowed is %llu bytes."), (unsigned long long)MaxROMImageSize); + goto doret; + } + + if(!(f_data = (uint8 *)MDFN_realloc(f_data, cur_alloced, _("file read buffer")))) + { + goto doret; + } + } + + if(!(f_data = (uint8 *)MDFN_realloc(f_data, cur_size, _("file read buffer")))) + { + goto doret; + } + + f_size = cur_size; + + { + int gzerrnum = 0; + const char *gzerrstring; + if((gzerrstring = gzerror((gzFile)tz, &gzerrnum)) && gzerrnum != Z_OK && gzerrnum != Z_STREAM_END) + { + if(gzerrnum != Z_ERRNO) + { + MDFN_PrintError(_("Error reading file: zlib error: %s"), gzerrstring); + } + else + { + ErrnoHolder ene(errno); + MDFN_PrintError(_("Error reading file: %s"), ene.StrError()); + } + goto doret; + } + } + } + else if(type == MDFN_FILETYPE_ZIP) + { + unz_file_info ufo; + unzGetCurrentFileInfo((unzFile)tz, &ufo, 0, 0, 0, 0, 0, 0); + + f_size = ufo.uncompressed_size; + + if(size > MaxROMImageSize) + { + MDFN_PrintError(_("ROM image is too large; maximum size allowed is %llu bytes."), (unsigned long long)MaxROMImageSize); + goto doret; + } + + if(!(f_data=(uint8 *)MDFN_malloc(ufo.uncompressed_size, _("file read buffer")))) + { + goto doret; + } + + unzReadCurrentFile((unzFile)tz, f_data, ufo.uncompressed_size); + } + + ret = TRUE; + + doret: + if(type == MDFN_FILETYPE_PLAIN) + { + fclose((FILE *)tz); + } + else if(type == MDFN_FILETYPE_GZIP) + { + gzclose((gzFile)tz); + } + else if(type == MDFN_FILETYPE_ZIP) + { + unzCloseCurrentFile((unzFile)tz); + unzClose((unzFile)tz); + } + + return(ret); +} + +MDFNFILE::MDFNFILE() : size(f_size), data((const uint8* const &)f_data), ext((const char * const &)f_ext) +{ + f_data = NULL; + f_size = 0; + f_ext = NULL; + + location = 0; + + #ifdef HAVE_MMAP + is_mmap = 0; + #endif +} + +MDFNFILE::MDFNFILE(const char *path, const FileExtensionSpecStruct *known_ext, const char *purpose) : size(f_size), data((const uint8* const &)f_data), ext((const char * const &)f_ext) +{ + if(!Open(path, known_ext, purpose, false)) + { + throw(MDFN_Error(0, "TODO ERROR")); + } +} + + +MDFNFILE::~MDFNFILE() +{ + Close(); +} + + +bool MDFNFILE::Open(const char *path, const FileExtensionSpecStruct *known_ext, const char *purpose, const bool suppress_notfound_pe) +{ + unzFile tz; + + local_errno = 0; + error_code = MDFNFILE_EC_OTHER; // Set to 0 at the end if the function succeeds. + + //f_data = (uint8 *)0xDEADBEEF; + + // Try opening it as a zip file first + if((tz = unzOpen(path))) + { + char tempu[1024]; + int errcode; + + if((errcode = unzGoToFirstFile(tz)) != UNZ_OK) + { + MDFN_PrintError(_("Could not seek to first file in ZIP archive: %s"), unzErrorString(errcode)); + unzClose(tz); + + return(NULL); + } + + if(known_ext) + { + bool FileFound = FALSE; + while(!FileFound) + { + size_t tempu_strlen; + const FileExtensionSpecStruct *ext_search = known_ext; + + if((errcode = unzGetCurrentFileInfo(tz, 0, tempu, 1024, 0, 0, 0, 0)) != UNZ_OK) + { + MDFN_PrintError(_("Could not get file information in ZIP archive: %s"), unzErrorString(errcode)); + unzClose(tz); + + return(NULL); + } + + tempu[1023] = 0; + tempu_strlen = strlen(tempu); + + while(ext_search->extension && !FileFound) + { + size_t ttmeow = strlen(ext_search->extension); + if(tempu_strlen >= ttmeow) + { + if(!strcasecmp(tempu + tempu_strlen - ttmeow, ext_search->extension)) + FileFound = TRUE; + } + ext_search++; + } + + if(FileFound) + break; + + if((errcode = unzGoToNextFile(tz)) != UNZ_OK) + { + if(errcode != UNZ_END_OF_LIST_OF_FILE) + { + MDFN_PrintError(_("Error seeking to next file in ZIP archive: %s"), unzErrorString(errcode)); + unzClose(tz); + return(NULL); + } + + if((errcode = unzGoToFirstFile(tz)) != UNZ_OK) + { + MDFN_PrintError(_("Could not seek to first file in ZIP archive: %s"), unzErrorString(errcode)); + unzClose(tz); + return(NULL); + } + break; + } + + } // end to while(!FileFound) + } // end to if(ext) + + if((errcode = unzOpenCurrentFile(tz)) != UNZ_OK) + { + MDFN_PrintError(_("Could not open file in ZIP archive: %s"), unzErrorString(errcode)); + unzClose(tz); + return(NULL); + } + + if(!MakeMemWrapAndClose(tz, MDFN_FILETYPE_ZIP)) + return(0); + + char *ld = strrchr(tempu, '.'); + + f_ext = strdup(ld ? ld + 1 : ""); + } + else // If it's not a zip file, handle it as...another type of file! + { + FILE *fp; + + if(!(fp = fopen(path, "rb"))) + { + ErrnoHolder ene(errno); + local_errno = ene.Errno(); + + if(ene.Errno() == ENOENT) + { + local_errno = ene.Errno(); + error_code = MDFNFILE_EC_NOTFOUND; + } + + if(ene.Errno() != ENOENT || !suppress_notfound_pe) + MDFN_PrintError(_("Error opening \"%s\": %s"), path, ene.StrError()); + + return(0); + } + + uint32 gzmagic; + + gzmagic = ::fgetc(fp); + gzmagic |= ::fgetc(fp) << 8; + gzmagic |= ::fgetc(fp) << 16; + + if(gzmagic != 0x088b1f) /* Not gzip... */ + { + ::fseek(fp, 0, SEEK_SET); + + if(!MakeMemWrapAndClose(fp, MDFN_FILETYPE_PLAIN)) + return(0); + + const char *ld = strrchr(path, '.'); + f_ext = strdup(ld ? ld + 1 : ""); + } + else /* Probably gzip */ + { + gzFile gzp; + + fclose(fp); + + // Clear errno so we can see if the error occurred within zlib or the C lib + errno = 0; + if(!(gzp = gzopen(path, "rb"))) + { + if(errno != 0) + { + ErrnoHolder ene(errno); + local_errno = ene.Errno(); + + if(ene.Errno() == ENOENT) + { + local_errno = ene.Errno(); + error_code = MDFNFILE_EC_NOTFOUND; + } + + if(ene.Errno() != ENOENT || !suppress_notfound_pe) + MDFN_PrintError(_("Error opening \"%s\": %s"), path, ene.StrError()); + } + else + MDFN_PrintError(_("Error opening \"%s\": %s"), path, _("zlib error")); + + return(0); + } + + if(!MakeMemWrapAndClose(gzp, MDFN_FILETYPE_GZIP)) + return(0); + + char *tmp_path = strdup(path); + char *ld = strrchr(tmp_path, '.'); + + if(ld && ld > tmp_path) + { + char *last_ld = ld; + *ld = 0; + ld = strrchr(tmp_path, '.'); + if(!ld) { *last_ld = '.'; ld = last_ld; } + } + f_ext = strdup(ld ? ld + 1 : ""); + free(tmp_path); + } // End gzip handling + } // End normal and gzip file handling else to zip + + // FIXME: Handle extension fixing for cases where loaded filename is like "moo.moo/lalala" + + error_code = 0; + + return(TRUE); +} + +bool MDFNFILE::Close(void) +{ + if(f_ext) + { + free(f_ext); + f_ext = NULL; + } + + if(f_data) + { + #if HAVE_MMAP + if(is_mmap) + munmap(f_data, size); + else + #endif + free(f_data); + f_data = NULL; + } + + return(1); +} + +uint64 MDFNFILE::fread(void *ptr, size_t element_size, size_t nmemb) +{ + uint32 total = element_size * nmemb; + + if(location >= f_size) + return 0; + + if((location + total) > f_size) + { + int64 ak = f_size - location; + + memcpy((uint8*)ptr, f_data + location, ak); + + location = f_size; + + return(ak / element_size); + } + else + { + memcpy((uint8*)ptr, f_data + location, total); + + location += total; + + return nmemb; + } +} + +int MDFNFILE::fseek(int64 offset, int whence) +{ + switch(whence) + { + case SEEK_SET:if(offset >= f_size) + return(-1); + location = offset; + break; + + case SEEK_CUR:if((offset + location) > f_size) + return(-1); + + location += offset; + break; + } + return 0; +} + +int MDFNFILE::read16le(uint16 *val) +{ + if((location + 2) > size) + return 0; + + *val = MDFN_de16lsb(data + location); + + location += 2; + + return(1); +} + +int MDFNFILE::read32le(uint32 *val) +{ + if((location + 4) > size) + return 0; + + *val = MDFN_de32lsb(data + location); + + location += 4; + + return(1); +} + +char *MDFNFILE::fgets(char *s, int buffer_size) +{ + int pos = 0; + + if(!buffer_size) + return(NULL); + + if(location >= buffer_size) + return(NULL); + + while(pos < (buffer_size - 1) && location < buffer_size) + { + int v = data[location]; + s[pos] = v; + location++; + pos++; + if(v == '\n') break; + } + + if(buffer_size) + s[pos] = 0; + + return(s); +} + +static INLINE bool MDFN_DumpToFileReal(const char *filename, int compress, const std::vector &pearpairs) +{ + if(MDFN_GetSettingB("filesys.disablesavegz")) + compress = 0; + + if(compress) + { + char mode[64]; + gzFile gp; + + trio_snprintf(mode, 64, "wb%d", compress); + + gp = gzopen(filename, mode); + + if(!gp) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error opening \"%s\": %s"), filename, ene.StrError()); + return(0); + } + + for(unsigned int i = 0; i < pearpairs.size(); i++) + { + const void *data = pearpairs[i].GetData(); + const int64 length = pearpairs[i].GetLength(); + + if(gzwrite(gp, data, length) != length) + { + int errnum; + + MDFN_PrintError(_("Error writing to \"%s\": %s"), filename, gzerror(gp, &errnum)); + gzclose(gp); + return(0); + } + } + + if(gzclose(gp) != Z_OK) // FIXME: Huhm, how should we handle this? + { + MDFN_PrintError(_("Error closing \"%s\""), filename); + return(0); + } + } + else + { + FILE *fp = fopen(filename, "wb"); + if(!fp) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error opening \"%s\": %s"), filename, ene.StrError()); + return(0); + } + + for(unsigned int i = 0; i < pearpairs.size(); i++) + { + const void *data = pearpairs[i].GetData(); + const uint64 length = pearpairs[i].GetLength(); + + if(fwrite(data, 1, length, fp) != length) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error writing to \"%s\": %s"), filename, ene.StrError()); + fclose(fp); + return(0); + } + } + + if(fclose(fp) == EOF) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error closing \"%s\": %s"), filename, ene.StrError()); + return(0); + } + } + return(1); +} + +bool MDFN_DumpToFile(const char *filename, int compress, const std::vector &pearpairs) +{ + return(MDFN_DumpToFileReal(filename, compress, pearpairs)); +} + +bool MDFN_DumpToFile(const char *filename, int compress, const void *data, uint64 length) +{ + std::vector tmp_pairs; + tmp_pairs.push_back(PtrLengthPair(data, length)); + return(MDFN_DumpToFileReal(filename, compress, tmp_pairs)); +} diff --git a/libmednahawk/src/file.h b/libmednahawk/src/file.h new file mode 100644 index 0000000000..649014a750 --- /dev/null +++ b/libmednahawk/src/file.h @@ -0,0 +1,156 @@ +#ifndef MDFN_FILE_H +#define MDFN_FILE_H + +#include + +#define MDFNFILE_EC_NOTFOUND 1 +#define MDFNFILE_EC_OTHER 2 + +class MDFNFILE +{ + public: + + MDFNFILE(); + // WIP constructors: + MDFNFILE(const char *path, const FileExtensionSpecStruct *known_ext, const char *purpose = NULL); + + ~MDFNFILE(); + + bool Open(const char *path, const FileExtensionSpecStruct *known_ext, const char *purpose = NULL, const bool suppress_notfound_pe = FALSE); + INLINE bool Open(const std::string &path, const FileExtensionSpecStruct *known_ext, const char *purpose = NULL, const bool suppress_notfound_pe = FALSE) + { + return(Open(path.c_str(), known_ext, purpose, suppress_notfound_pe)); + } + + bool ApplyIPS(FILE *); + bool Close(void); + + const int64 &size; + const uint8 * const &data; + const char * const &ext; + + // Currently, only valid with Open() + inline int GetErrorCode(int *get_errno = NULL) + { + if(get_errno) + *get_errno = local_errno; + + return(error_code); + } + + inline int64 Size(void) + { + return(f_size); + } + + inline const uint8 *Data(void) + { + return(f_data); + } + + uint64 fread(void *ptr, size_t size, size_t nmemb); + int fseek(int64 offset, int whence); + + inline uint64 ftell(void) + { + return(location); + } + + inline void rewind(void) + { + location = 0; + } + + int read32le(uint32 *Bufo); + int read16le(uint16 *Bufo); + + inline int fgetc(void) + { + if(location < f_size) + return f_data[location++]; + + return EOF; + } + + inline int fisarchive(void) + { + return(0); + } + + char *fgets(char *s, int size); + + private: + + uint8 *f_data; + int64 f_size; + char *f_ext; + + int error_code; + int local_errno; + + int64 location; + + #ifdef HAVE_MMAP + bool is_mmap; + #endif + + bool MakeMemWrapAndClose(void *tz, int type); +}; + +#if 0 +MDFNFILE *MDFN_fopen(const char *path, const char *ipsfn, const char *mode, const FileExtensionSpecStruct *known_ext); +int MDFN_fclose(MDFNFILE*); +uint64 MDFN_fread(void *ptr, size_t size, size_t nmemb, MDFNFILE*); +uint64 MDFN_fwrite(void *ptr, size_t size, size_t nmemb, MDFNFILE*); +int MDFN_fseek(MDFNFILE*, int64 offset, int whence); +uint64 MDFN_ftell(MDFNFILE*); +void MDFN_rewind(MDFNFILE*); +int MDFN_read32le(uint32 *Bufo, MDFNFILE*); +int MDFN_read16le(uint16 *Bufo, MDFNFILE*); +int MDFN_fgetc(MDFNFILE*); +uint64 MDFN_fgetsize(MDFNFILE*); +int MDFN_fisarchive(MDFNFILE*); +char *MDFN_fgets(char *s, int size, MDFNFILE *); +#endif + +class PtrLengthPair +{ + public: + + inline PtrLengthPair(const void *new_data, const uint64 new_length) + { + data = new_data; + length = new_length; + } + + ~PtrLengthPair() + { + + } + + INLINE const void *GetData(void) const + { + return(data); + } + + INLINE uint64 GetLength(void) const + { + return(length); + } + + private: + const void *data; + uint64 length; +}; + +#include + +// These functions should be used for data like save states and non-volatile backup memory. +// Until(if, even) we add LoadFromFile functions, for reading the files these functions generate, just use gzopen(), gzread(), etc. +// "compress" is set to the zlib compression level. 0 disables compression entirely, and dumps the file without a gzip header or footer. +// (Note: There is a setting that will force compress to 0 in the internal DumpToFile logic, for hackers who don't want to ungzip save files.) + +bool MDFN_DumpToFile(const char *filename, int compress, const void *data, const uint64 length); +bool MDFN_DumpToFile(const char *filename, int compress, const std::vector &pearpairs); + +#endif diff --git a/libmednahawk/src/gb/Makefile.am b/libmednahawk/src/gb/Makefile.am new file mode 100644 index 0000000000..52a91de4bd --- /dev/null +++ b/libmednahawk/src/gb/Makefile.am @@ -0,0 +1,8 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip -I$(top_srcdir)/src/hw_sound + +noinst_LIBRARIES = libgb.a +gb_SOURCES = gb.cpp gfx.cpp gbGlobals.cpp memory.cpp sound.cpp z80.cpp + +libgb_a_SOURCES = $(gb_SOURCES) diff --git a/libmednahawk/src/gb/Makefile.in b/libmednahawk/src/gb/Makefile.in new file mode 100644 index 0000000000..acf4f0d667 --- /dev/null +++ b/libmednahawk/src/gb/Makefile.in @@ -0,0 +1,604 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/gb +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libgb_a_AR = $(AR) $(ARFLAGS) +libgb_a_LIBADD = +am__objects_1 = gb.$(OBJEXT) gfx.$(OBJEXT) gbGlobals.$(OBJEXT) \ + memory.$(OBJEXT) sound.$(OBJEXT) z80.$(OBJEXT) +am_libgb_a_OBJECTS = $(am__objects_1) +libgb_a_OBJECTS = $(am_libgb_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libgb_a_SOURCES) +DIST_SOURCES = $(libgb_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip -I$(top_srcdir)/src/hw_sound +noinst_LIBRARIES = libgb.a +gb_SOURCES = gb.cpp gfx.cpp gbGlobals.cpp memory.cpp sound.cpp z80.cpp +libgb_a_SOURCES = $(gb_SOURCES) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/gb/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/gb/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libgb.a: $(libgb_a_OBJECTS) $(libgb_a_DEPENDENCIES) + $(AM_V_at)-rm -f libgb.a + $(AM_V_AR)$(libgb_a_AR) libgb.a $(libgb_a_OBJECTS) $(libgb_a_LIBADD) + $(AM_V_at)$(RANLIB) libgb.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbGlobals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/z80.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/gb/gb.cpp b/libmednahawk/src/gb/gb.cpp new file mode 100644 index 0000000000..6d6a7970bd --- /dev/null +++ b/libmednahawk/src/gb/gb.cpp @@ -0,0 +1,2779 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "../mednafen.h" +#include "../file.h" +#include "../general.h" +#include "../state.h" +#include "../movie.h" +#include "../mempatcher.h" +#include "../md5.h" + +#include +#include +#include + +#include "gb.h" +#include "gbGlobals.h" +#include "memory.h" +#include "sound.h" +#include "z80.h" + +namespace MDFN_IEN_GB +{ + +static uint32 *gbColorFilter = NULL; //[32768]; +static uint32 gbMonoColorMap[8 + 1]; // Mono color map(+1 = LCD off color)! + +static bool gbUpdateSizes(); +static int32 SoundTS = 0; +extern uint16 gbLineMix[160]; + +// mappers +void (*mapper)(uint16,uint8) = NULL; +void (*mapperRAM)(uint16,uint8) = NULL; +uint8 (*mapperReadRAM)(uint16) = NULL; + +static uint8 HRAM[0x80]; +uint8 gbOAM[0xA0]; + +// 0xff00 +uint8 register_P1 = 0; + +// 0xff01 +uint8 register_SB = 0; +// 0xff02 +uint8 register_SC = 0; +// 0xff04 +uint8 register_DIV = 0; +// 0xff05 +uint8 register_TIMA = 0; +// 0xff06 +uint8 register_TMA = 0; +// 0xff07 +uint8 register_TAC = 0; +// 0xff0f +uint8 register_IF = 0; +// 0xff40 +uint8 register_LCDC = 0; +// 0xff41 +uint8 register_STAT = 0; +// 0xff42 +uint8 register_SCY = 0; +// 0xff43 +uint8 register_SCX = 0; +// 0xff44 +uint8 register_LY = 0; +// 0xff45 +uint8 register_LYC = 0; +// 0xff46 +uint8 register_DMA = 0; +// 0xff4a +uint8 register_WY = 0; +// 0xff4b +uint8 register_WX = 0; +// 0xff4d +uint8 register_KEY1 = 0; +// 0xff4f +uint8 register_VBK = 0; +// 0xff51 +uint8 register_HDMA1 = 0; +// 0xff52 +uint8 register_HDMA2 = 0; +// 0xff53 +uint8 register_HDMA3 = 0; +// 0xff54 +uint8 register_HDMA4 = 0; +// 0xff55 +uint8 register_HDMA5 = 0; + +// 0xff56 +uint8 register_RP = 0; + +// 0xff68 +uint8 register_BCPS = 0; +// 0xff69 +uint8 register_BCPD = 0; +// 0xff6a +uint8 register_OCPS = 0; +// 0xff6b +uint8 register_OCPD = 0; + +// 0xff6c +uint8 register_FF6C = 0; +// 0xff72 +uint8 register_FF72 = 0; +// 0xff73 +uint8 register_FF73 = 0; +// 0xff74 +uint8 register_FF74 = 0; +// 0xff75 +uint8 register_FF75 = 0; + +// 0xff70 +uint8 register_SVBK = 0; +// 0xffff +uint8 register_IE = 0; + +// ticks definition +static int GBDIV_CLOCK_TICKS = 64; +static int GBLCD_MODE_0_CLOCK_TICKS = 51; +static int GBLCD_MODE_1_CLOCK_TICKS = 1140; +static int GBLCD_MODE_2_CLOCK_TICKS = 20; +static int GBLCD_MODE_3_CLOCK_TICKS = 43; +static int GBLY_INCREMENT_CLOCK_TICKS = 114; +static int GBTIMER_MODE_0_CLOCK_TICKS = 256; +static int GBTIMER_MODE_1_CLOCK_TICKS = 4; +static int GBTIMER_MODE_2_CLOCK_TICKS = 16; +static int GBTIMER_MODE_3_CLOCK_TICKS = 64; +static int GBSERIAL_CLOCK_TICKS = 128; +static int GBSYNCHRONIZE_CLOCK_TICKS = 52920; + +// state variables +static int32 snooze; +static int32 PadInterruptDelay; + +// serial +static int gbSerialOn; +static int gbSerialTicks; +static int gbSerialBits; +// timer +static int gbTimerOn; +static int gbTimerTicks; +static int gbTimerClockTicks; +static int gbTimerMode; + + +enum +{ + GBLCDM_HBLANK = 0, + GBLCDM_VBLANK = 1, + GBLCDM_OAM = 2, + GBLCDM_OAM_VRAM = 3, +}; + +// lcd +int gbLcdMode = GBLCDM_OAM; +int gbLcdTicks = GBLCD_MODE_2_CLOCK_TICKS; +int gbLcdLYIncrementTicks = 0; +// div +int gbDivTicks = GBDIV_CLOCK_TICKS; +// cgb +int gbVramBank = 0; +int gbWramBank = 1; +int gbHdmaSource = 0x0000; +int gbHdmaDestination = 0x8000; +int gbHdmaBytes = 0x0000; +int gbHdmaOn = 0; +int gbSpeed = 0; + +// timing +int gbSynchronizeTicks = GBSYNCHRONIZE_CLOCK_TICKS; + +// emulator features +int gbBattery = 0; + +static uint8 gbJoymask; + +static const int gbRomSizes[] = { 0x00008000, // 32K + 0x00010000, // 64K + 0x00020000, // 128K + 0x00040000, // 256K + 0x00080000, // 512K + 0x00100000, // 1024K + 0x00200000, // 2048K + 0x00400000, // 4096K + 0x00800000 // 8192K +}; + +static const int gbRomSizesMasks[] = { 0x00007fff, + 0x0000ffff, + 0x0001ffff, + 0x0003ffff, + 0x0007ffff, + 0x000fffff, + 0x001fffff, + 0x003fffff, + 0x007fffff +}; + +static const int gbRamSizes[6] = { 0x00000000, // 0K + 0x00000800, // 2K + 0x00002000, // 8K + 0x00008000, // 32K + 0x00020000, // 128K + 0x00010000 // 64K +}; + +static const int gbRamSizesMasks[6] = { 0x00000000, + 0x000007ff, + 0x00001fff, + 0x00007fff, + 0x0001ffff, + 0x0000ffff +}; + +static uint8 *Custom_GB_ColorMap = NULL; +static uint8 *Custom_GBC_ColorMap = NULL; + +static void gbGenFilter(const MDFN_PixelFormat &format) //int rs, int gs, int bs) +{ + for(int r = 0; r < 32; r++) + for(int g = 0; g < 32; g++) + for(int b = 0; b < 32; b++) + { + int nr = r * 226 + g * 29 + b * 0; + int ng = r * 29 + g * 197 + b * 29; + int nb = r * 30 + g * 73 + b * 152; + + nr /= 31; + ng /= 31; + nb /= 31; + + if(Custom_GBC_ColorMap) + { + nr = Custom_GBC_ColorMap[((b << 10) | (g << 5) | r) * 3 + 0]; + ng = Custom_GBC_ColorMap[((b << 10) | (g << 5) | r) * 3 + 1]; + nb = Custom_GBC_ColorMap[((b << 10) | (g << 5) | r) * 3 + 2]; + } + + gbColorFilter[(b << 10) | (g << 5) | r] = format.MakeColor(nr, ng, nb); + } + + for(int i = 0; i < 4; i++) + { + int r,g,b; + + r = (3 - (i & 3)) * 48 + 32; + g = (3 - (i & 3)) * 48 + 32; + b = (3 - (i & 3)) * 48 + 32; + + if(Custom_GB_ColorMap) + { + r = Custom_GB_ColorMap[i * 3 + 0]; + g = Custom_GB_ColorMap[i * 3 + 1]; + b = Custom_GB_ColorMap[i * 3 + 2]; + } + + gbMonoColorMap[i] = gbMonoColorMap[i + 4] = format.MakeColor(r, g, b); + } + + gbMonoColorMap[8] = gbMonoColorMap[0]; +} + +static bool LoadCPalette(const char *syspalname, uint8 **ptr, uint32 num_entries) +{ + std::string colormap_fn = MDFN_MakeFName(MDFNMKF_PALETTE, 0, syspalname).c_str(); + FILE *fp; + + MDFN_printf(_("Loading custom palette from \"%s\"...\n"), colormap_fn.c_str()); + MDFN_indent(1); + + if(!(fp = fopen(colormap_fn.c_str(), "rb"))) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error opening file: %s\n"), ene.StrError()); + + MDFN_indent(-1); + + return(ene.Errno() == ENOENT); // Return fatal error if it's an error other than the file not being found. + } + + if(!(*ptr = (uint8 *)MDFN_malloc(num_entries * 3, _("custom color map")))) + { + MDFN_indent(-1); + + fclose(fp); + return(false); + } + + if(fread(*ptr, 1, num_entries * 3, fp) != (num_entries * 3)) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error reading file: %s\n"), feof(fp) ? "EOF" : ene.StrError()); + MDFN_indent(-1); + + MDFN_free(*ptr); + *ptr = NULL; + fclose(fp); + + return(false); + } + + // Print a warning message about unused trailing data + { + int64 rs; + + fseek(fp, 0, SEEK_END); + if((rs = ftell(fp)) > (num_entries * 3)) + { + MDFN_printf(_("Warning: %lld byte(s) of trailing unused data.\n"), (long long)(rs - (num_entries * 3))); + } + } + + fclose(fp); + + MDFN_indent(-1); + + return(true); +} + + +void gbCopyMemory(uint16 d, uint16 s, int count) +{ + while(count) + { + gbWriteMemory(d, gbReadMemory(s)); + s++; + d++; + count--; + } +} + +void gbDoHdma() +{ + gbCopyMemory(gbHdmaDestination, + gbHdmaSource, + 0x10); + + gbHdmaDestination += 0x10; + gbHdmaSource += 0x10; + + register_HDMA2 += 0x10; + if(register_HDMA2 == 0x00) + register_HDMA1++; + + register_HDMA4 += 0x10; + if(register_HDMA4 == 0x00) + register_HDMA3++; + + if(gbHdmaDestination == 0x96b0) + gbHdmaBytes = gbHdmaBytes; + gbHdmaBytes -= 0x10; + register_HDMA5--; + if(register_HDMA5 == 0xff) + gbHdmaOn = 0; +} + +// fix for Harley and Lego Racers +void gbCompareLYToLYC() +{ + if(register_LY == register_LYC) + { + // mark that we have a match + register_STAT |= 4; + + // check if we need an interrupt + if(register_STAT & 0x40) + register_IF |= 2; + } + else // no match + register_STAT &= 0xfb; +} + +static void ClockTIMA(void) +{ + register_TIMA++; + + if(register_TIMA == 0) + { + // timer overflow! + + // reload timer modulo + register_TIMA = register_TMA; + + // flag interrupt + register_IF |= 4; + } +} + +void gbWriteMemory(uint16 address, uint8 value) +{ + if(address < 0x8000) { + if(mapper) + (*mapper)(address, value); + return; + } + + if(address < 0xa000) { + gbMemoryMap[address>>12][address&0x0fff] = value; + return; + } + + if(address < 0xc000) + { + if(mapper) + (*mapperRAM)(address, value); + return; + } + + if(address < 0xfe00) { + unsigned int page = (address >> 12); + if(page >= 0xE) page -= 2; + gbMemoryMap[page][address & 0x0fff] = value; + return; + } + + if(address < 0xff00) { + if(address < 0xFEA0) + gbOAM[address & 0xFF] = value; + return; + } + //printf("Write: %04x %02x, %d\n", address, value, register_LY); + switch(address & 0x00ff) + { + case 0x00: + register_P1 = ((register_P1 & 0xcf) | (value & 0x30)); + return; + + case 0x01: { + register_SB = value; + return; + } + + // serial control + case 0x02: { + gbSerialOn = (value & 0x80); + register_SC = value; + if(gbSerialOn) { + gbSerialTicks = GBSERIAL_CLOCK_TICKS; +#ifdef LINK_EMULATION + if(linkConnected) { + if(value & 1) { + linkSendByte(0x100|register_SB); + Sleep(5); + } + } +#endif + } + + gbSerialBits = 0; + return; + } + + // DIV register resets on any write + case 0x04: { + register_DIV = 0; + gbDivTicks = GBDIV_CLOCK_TICKS; + // Another weird timer 'bug' : + // Writing to DIV register resets the internal timer, + // and can also increase TIMA/trigger an interrupt + // in some cases... + //if (gbTimerOn && !(gbInternalTimer & (gbTimerClockTicks>>1))) + //{ + // ClockTIMA(); + //} + return; + } + case 0x05: + register_TIMA = value; + return; + + case 0x06: + register_TMA = value; + return; + + // TIMER control + case 0x07: { + register_TAC = value; + gbTimerOn = (value & 4); + gbTimerMode = value & 3; + // register_TIMA = register_TMA; + switch(gbTimerMode) { + case 0: + gbTimerClockTicks = gbTimerTicks = GBTIMER_MODE_0_CLOCK_TICKS; + break; + case 1: + gbTimerClockTicks = gbTimerTicks = GBTIMER_MODE_1_CLOCK_TICKS; + break; + case 2: + gbTimerClockTicks = gbTimerTicks = GBTIMER_MODE_2_CLOCK_TICKS; + break; + case 3: + gbTimerClockTicks = gbTimerTicks = GBTIMER_MODE_3_CLOCK_TICKS; + break; + } + return; + } + + case 0x0f: + { + register_IF = value; + return; + } + + case 0x10 ... 0x3f: + { + MDFNGBSOUND_Write(SoundTS, address, value); + return; + } + case 0x40: { + int lcdChange = (register_LCDC & 0x80) ^ (value & 0x80); + + if(lcdChange) { + if(value & 0x80) { + gbLcdTicks = GBLCD_MODE_1_CLOCK_TICKS; + gbLcdMode = GBLCDM_HBLANK; + register_STAT &= 0xfc; + register_LY = 0x00; + } else { + gbLcdTicks = 0; + gbLcdMode = GBLCDM_HBLANK; + register_STAT &= 0xfc; + register_LY = 0x00; + } + // compareLYToLYC(); + } + // don't draw the window if it was not enabled and not being drawn before + if(!(register_LCDC & 0x20) && (value & 0x20) && gbWindowLine == -1 && + register_LY > register_WY) + gbWindowLine = 144; + + register_LCDC = value; + + return; + } + + // STAT + case 0x41: { + //register_STAT = (register_STAT & 0x87) | + // (value & 0x7c); + register_STAT = (value & 0xf8) | (register_STAT & 0x07); // fix ? + // GB bug from Devrs FAQ + if(!gbCgbMode && (register_LCDC & 0x80) && gbLcdMode < 2) + register_IF |= 2; + return; + } + + // SCY + case 0x42: { + register_SCY = value; + return; + } + + // SCX + case 0x43: { + register_SCX = value; + return; + } + + // LY + case 0x44: { + // read only + return; + } + + // LYC + case 0x45: { + register_LYC = value; + if((register_LCDC & 0x80)) { + gbCompareLYToLYC(); + } + return; + } + + // DMA! + case 0x46: { + int source = value * 0x0100; + + gbCopyMemory(0xfe00, + source, + 0xa0); + register_DMA = value; + return; + } + + // BGP + case 0x47: { + gbBgp[0] = value & 0x03; + gbBgp[1] = (value & 0x0c)>>2; + gbBgp[2] = (value & 0x30)>>4; + gbBgp[3] = (value & 0xc0)>>6; + return; + } + + // OBP0 + case 0x48: { + gbObp0[0] = value & 0x03; + gbObp0[1] = (value & 0x0c)>>2; + gbObp0[2] = (value & 0x30)>>4; + gbObp0[3] = (value & 0xc0)>>6; + return; + } + + // OBP1 + case 0x49: { + gbObp1[0] = value & 0x03; + gbObp1[1] = (value & 0x0c)>>2; + gbObp1[2] = (value & 0x30)>>4; + gbObp1[3] = (value & 0xc0)>>6; + return; + } + + case 0x4a: + register_WY = value; + return; + + case 0x4b: + register_WX = value; + return; + + // KEY1 + case 0x4d: { + if(gbCgbMode) { + register_KEY1 = (register_KEY1 & 0x80) | (value & 1); + return; + } + } + break; + + // VBK + case 0x4f: { + if(gbCgbMode) { + value = value & 1; + if(value == gbVramBank) + return; + + int vramAddress = value * 0x2000; + gbMemoryMap[0x08] = &gbVram[vramAddress]; + gbMemoryMap[0x09] = &gbVram[vramAddress + 0x1000]; + + gbVramBank = value; + register_VBK = value; + } + return; + } + break; + + // HDMA1 + case 0x51: { + if(gbCgbMode) { + if(value > 0x7f && value < 0xa0) + value = 0; + + gbHdmaSource = (value << 8) | (register_HDMA2 & 0xf0); + + register_HDMA1 = value; + return; + } + } + break; + + // HDMA2 + case 0x52: { + if(gbCgbMode) { + value = value & 0xf0; + + gbHdmaSource = (register_HDMA1 << 8) | (value); + + register_HDMA2 = value; + return; + } + } + break; + + // HDMA3 + case 0x53: { + if(gbCgbMode) { + value = value & 0x1f; + gbHdmaDestination = (value << 8) | (register_HDMA4 & 0xf0); + gbHdmaDestination += 0x8000; + register_HDMA3 = value; + return; + } + } + break; + + // HDMA4 + case 0x54: { + if(gbCgbMode) { + value = value & 0xf0; + gbHdmaDestination = ((register_HDMA3 & 0x1f) << 8) | value; + gbHdmaDestination += 0x8000; + register_HDMA4 = value; + return; + } + } + break; + + // HDMA5 + case 0x55: { + if(gbCgbMode) { + gbHdmaBytes = 16 + (value & 0x7f) * 16; + if(gbHdmaOn) { + if(value & 0x80) { + register_HDMA5 = (value & 0x7f); + } else { + register_HDMA5 = 0xff; + gbHdmaOn = 0; + } + } else { + if(value & 0x80) { + gbHdmaOn = 1; + register_HDMA5 = value & 0x7f; + if(gbLcdMode == GBLCDM_HBLANK) + gbDoHdma(); + } else { + // we need to take the time it takes to complete the transfer into + // account... according to GB DEV FAQs, the setup time is the same + // for single and double speed, but the actual transfer takes the + // same time + //if(gbSpeed) + // gbDmaTicks = 231 + 16 * (value & 0x7f); + //else + // gbDmaTicks = 231 + 8 * (value & 0x7f); + gbDmaTicks = 231; + gbCopyMemory(gbHdmaDestination, + gbHdmaSource, + gbHdmaBytes); + gbHdmaDestination += gbHdmaBytes; + gbHdmaSource += gbHdmaBytes; + + register_HDMA3 = ((gbHdmaDestination - 0x8000) >> 8) & 0x1f; + register_HDMA4 = gbHdmaDestination & 0xf0; + register_HDMA1 = (gbHdmaSource >> 8) & 0xff; + register_HDMA2 = gbHdmaSource & 0xf0; + } + } + return; + } + } + break; + + + case 0x56: + register_RP = value & 0xC1; + break; + + // BCPS + case 0x68: { + if(gbCgbMode) { + int paletteIndex = (value & 0x3f) >> 1; + int paletteHiLo = (value & 0x01); + + register_BCPS = value; + register_BCPD = (paletteHiLo ? + (gbPalette[paletteIndex] >> 8) : + (gbPalette[paletteIndex] & 0x00ff)); + return; + } + } + break; + + // BCPD + case 0x69: { + if(gbCgbMode) { + int v = register_BCPS; + int paletteIndex = (v & 0x3f) >> 1; + int paletteHiLo = (v & 0x01); + register_BCPD = value; + gbPalette[paletteIndex] = (paletteHiLo ? + ((value << 8) | (gbPalette[paletteIndex] & 0xff)) : + ((gbPalette[paletteIndex] & 0xff00) | (value))) & 0x7fff; + + if(register_BCPS & 0x80) { + int index = ((register_BCPS & 0x3f) + 1) & 0x3f; + + register_BCPS = (register_BCPS & 0x80) | index; + + register_BCPD = (index & 1 ? + (gbPalette[index>>1] >> 8) : + (gbPalette[index>>1] & 0x00ff)); + + } + return; + } + } + break; + + // OCPS + case 0x6a: { + if(gbCgbMode) { + int paletteIndex = (value & 0x3f) >> 1; + int paletteHiLo = (value & 0x01); + + paletteIndex += 32; + + register_OCPS = value; + register_OCPD = (paletteHiLo ? + (gbPalette[paletteIndex] >> 8) : + (gbPalette[paletteIndex] & 0x00ff)); + return; + } + } + break; + + // OCPD + case 0x6b: { + if(gbCgbMode) { + int v = register_OCPS; + int paletteIndex = (v & 0x3f) >> 1; + int paletteHiLo = (v & 0x01); + + paletteIndex += 32; + + register_OCPD = value; + gbPalette[paletteIndex] = (paletteHiLo ? + ((value << 8) | (gbPalette[paletteIndex] & 0xff)) : + ((gbPalette[paletteIndex] & 0xff00) | (value))) & 0x7fff; + if(register_OCPS & 0x80) { + int index = ((register_OCPS & 0x3f) + 1) & 0x3f; + + register_OCPS = (register_OCPS & 0x80) | index; + + register_OCPD = (index & 1 ? + (gbPalette[(index>>1) + 32] >> 8) : + (gbPalette[(index>>1) + 32] & 0x00ff)); + + } + return; + } + } + break; + + case 0x6c: + register_FF6C = value & 1; + break; + + // SVBK + case 0x70: { + if(gbCgbMode) { + value = value & 7; + + int bank = value; + if(value == 0) + bank = 1; + + if(bank == gbWramBank) + return; + + int wramAddress = bank * 0x1000; + gbMemoryMap[0x0d] = &gbWram[wramAddress]; + + MDFNMP_AddRAM(0x1000, 0xD000, &gbWram[wramAddress]); + + gbWramBank = bank; + register_SVBK = value; + return; + } + } + break; + + case 0x80 ... 0xFE: + HRAM[address & 0x7F] = value; + return; + + case 0xff: + register_IE = value; + return; + } + + //printf("%04x\n", address); + //gbMemory[address - 0x8000] = value; +} + +uint8 gbReadMemory(uint16 address) +{ + uint8 retval = 0xFF; + + if(address < 0xa000) + retval = gbMemoryMap[address>>12][address&0x0fff]; + else if(address < 0xc000) + { + if(mapperReadRAM) + retval = mapperReadRAM(address); + else if(mapper && gbMemoryMap[address >> 12]) + retval = gbMemoryMap[address >> 12][address & 0x0fff & gbRamSizeMask]; + } + else if(address < 0xfe00) + { + unsigned int page = (address >> 12); + if(page >= 0xE) page -= 2; + retval = gbMemoryMap[page][address & 0x0fff]; + } + else if(address < 0xfea0) + retval = gbOAM[address & 0xFF]; + else if(address >= 0xff00) + { + switch(address & 0x00ff) + { + case 0x00: + { + int b = register_P1; + + if((b & 0x30) == 0x20) { + b &= 0xf0; + + b |= ((gbJoymask >> 4) & 0xF) ^ 0xF; + + register_P1 = b; + } else if((b & 0x30) == 0x10) { + b &= 0xf0; + + b |= ((gbJoymask >> 0) & 0xF) ^ 0xF; + + register_P1 = b; + } else { + register_P1 = 0xff; + } + } + retval = register_P1; + break; + case 0x01: + retval = register_SB; + break; + case 0x02: + retval = register_SC; + break; + case 0x04: + retval = register_DIV; + break; + case 0x05: + retval = register_TIMA; + break; + case 0x06: + retval = register_TMA; + break; + case 0x07: + retval = 0xf8 | register_TAC; + break; + case 0x0f: + retval = 0xe0 | register_IF; + break; + case 0x10 ... 0x3f: + retval = MDFNGBSOUND_Read(SoundTS, address); + break; + case 0x40: + retval = register_LCDC; + break; + case 0x41: + retval = 0x80 | register_STAT; + break; + case 0x42: + retval = register_SCY; + break; + case 0x43: + retval = register_SCX; + break; + case 0x44: + retval = register_LY; + break; + case 0x45: + retval = register_LYC; + break; + case 0x46: + retval = register_DMA; + break; + case 0x47: + retval = gbBgp[0] | (gbBgp[1] << 2) | (gbBgp[2] << 4) | (gbBgp[3] << 6); + break; + case 0x48: + retval = gbObp0[0] | (gbObp0[1] << 2) | (gbObp0[2] << 4) | (gbObp0[3] << 6); + break; + case 0x49: + retval = gbObp1[0] | (gbObp1[1] << 2) | (gbObp1[2] << 4) | (gbObp1[3] << 6); + break; + case 0x4a: + retval = register_WY; + break; + case 0x4b: + retval = register_WX; + break; + case 0x4d: + retval = register_KEY1; + break; + case 0x4f: + retval = 0xfe | register_VBK; + break; + case 0x51: + retval = register_HDMA1; + break; + case 0x52: + retval = register_HDMA2; + break; + case 0x53: + retval = register_HDMA3; + break; + case 0x54: + retval = register_HDMA4; + break; + case 0x55: + retval = register_HDMA5; + break; + case 0x56: + retval = register_RP; + break; + case 0x68: + retval = register_BCPS; + break; + case 0x69: + retval = register_BCPD; + break; + case 0x6a: + retval = register_OCPS; + break; + case 0x6b: + retval = register_OCPD; + break; + case 0x6c: + retval = (register_FF6C & 1) | 0xFE; + break; + case 0x70: + retval = (0xf8 | register_SVBK); + break; + case 0x72: + retval = gbCgbMode ? register_FF72 : 0xFF; + break; + case 0x73: + retval = gbCgbMode ? register_FF73 : 0xFF; + break; + case 0x74: + retval = gbCgbMode ? register_FF74 : 0xFF; + break; + case 0x75: + retval = gbCgbMode ? ((register_FF75 &~0x8F) | 0x8F) : 0xFF; + break; + case 0x76: + retval = gbCgbMode ? 0x00 : 0xFF; + break; + case 0x77: + retval = gbCgbMode ? 0x00 : 0xFF; + break; + case 0x80 ... 0xFE: + retval = HRAM[address & 0x7F]; + break; + case 0xff: + retval = register_IE; + break; + } + } + + if(SubCheatsOn) + { + std::vector::iterator chit; + + for(chit = SubCheats[address & 0x7].begin(); chit != SubCheats[address & 0x7].end(); chit++) + { + if(address == chit->addr) + { + //printf("%02x %02x %02x\n", retval, chit->value, chit->compare); + if(chit->compare == -1 || chit->compare == retval) + { + retval = chit->value; + } + } + } + } + + return(retval); + //printf("Unknown read: %04x\n", address); + //return(0xFF); + //return gbMemoryMap[address>>12][address & 0x0fff]; +} + +void gbSpeedSwitch() +{ + if(gbSpeed == 0) { + gbSpeed = 1; + GBLCD_MODE_0_CLOCK_TICKS = 51 * 2; //127; //51 * 2; + GBLCD_MODE_1_CLOCK_TICKS = 1140 * 2; + GBLCD_MODE_2_CLOCK_TICKS = 20 * 2; //52; //20 * 2; + GBLCD_MODE_3_CLOCK_TICKS = 43 * 2; //99; //43 * 2; + GBDIV_CLOCK_TICKS = 64 * 2; + GBLY_INCREMENT_CLOCK_TICKS = 114 * 2; + GBTIMER_MODE_0_CLOCK_TICKS = 256; //256*2; + GBTIMER_MODE_1_CLOCK_TICKS = 4; //4*2; + GBTIMER_MODE_2_CLOCK_TICKS = 16; //16*2; + GBTIMER_MODE_3_CLOCK_TICKS = 64; //64*2; + GBSERIAL_CLOCK_TICKS = 128 * 2; + gbDivTicks *= 2; + gbLcdTicks *= 2; + gbLcdLYIncrementTicks *= 2; + // timerTicks *= 2; + // timerClockTicks *= 2; + gbSerialTicks *= 2; + // synchronizeTicks *= 2; + // SYNCHRONIZE_CLOCK_TICKS *= 2; + } else { + gbSpeed = 0; + GBLCD_MODE_0_CLOCK_TICKS = 51; + GBLCD_MODE_1_CLOCK_TICKS = 1140; + GBLCD_MODE_2_CLOCK_TICKS = 20; + GBLCD_MODE_3_CLOCK_TICKS = 43; + GBDIV_CLOCK_TICKS = 64; + GBLY_INCREMENT_CLOCK_TICKS = 114; + GBTIMER_MODE_0_CLOCK_TICKS = 256; + GBTIMER_MODE_1_CLOCK_TICKS = 4; + GBTIMER_MODE_2_CLOCK_TICKS = 16; + GBTIMER_MODE_3_CLOCK_TICKS = 64; + GBSERIAL_CLOCK_TICKS = 128; + gbDivTicks /= 2; + gbLcdTicks /= 2; + gbLcdLYIncrementTicks /= 2; + // timerTicks /= 2; + // timerClockTicks /= 2; + gbSerialTicks /= 2; + // synchronizeTicks /= 2; + // SYNCHRONIZE_CLOCK_TICKS /= 2; + } +} + +void gbReset() +{ + GBZ80_Reset(); + + register_DIV = 0; + register_TIMA = 0; + register_TMA = 0; + register_TAC = 0; + register_IF = 1; + register_LCDC = 0x91; + register_STAT = 0; + register_SCY = 0; + register_SCX = 0; + register_LY = 0; + register_LYC = 0; + register_DMA = 0; + register_WY = 0; + register_WX = 0; + register_VBK = 0; + register_HDMA1 = 0; + register_HDMA2 = 0; + register_HDMA3 = 0; + register_HDMA4 = 0; + register_HDMA5 = 0; + register_SVBK = 0; + register_IE = 0; + + if(gbCgbMode) + { + register_HDMA5 = 0xff; + register_BCPS = 0xc0; + register_OCPS = 0xc0; + } + else + { + for(int i = 0; i < 8; i++) + { + int fun = 3 - (i & 3); + fun *= 6; + fun += 4; + gbPalette[i] = fun | (fun << 5) | (fun << 10); + } + } + + if(gbSpeed) { + gbSpeedSwitch(); + register_KEY1 = 0; + } + + gbDivTicks = GBDIV_CLOCK_TICKS; + gbLcdMode = GBLCDM_OAM; + gbLcdTicks = GBLCD_MODE_2_CLOCK_TICKS; + gbLcdLYIncrementTicks = 0; + gbTimerTicks = 0; + gbTimerClockTicks = 0; + gbSerialTicks = 0; + gbSerialBits = 0; + gbSerialOn = 0; + gbWindowLine = -1; + gbTimerOn = 0; + gbTimerMode = 0; + // gbSynchronizeTicks = GBSYNCHRONIZE_CLOCK_TICKS; + gbSpeed = 0; + gbJoymask = 0; + + if(gbCgbMode) { + gbSpeed = 0; + gbHdmaOn = 0; + gbHdmaSource = 0x0000; + gbHdmaDestination = 0x8000; + gbVramBank = 0; + gbWramBank = 1; + register_LY = 0x90; + gbLcdMode = GBLCDM_VBLANK; + for(int i = 0; i < 64; i++) + gbPalette[i] = 0x7fff; + } + + for(int i =0; i < 4; i++) + gbBgp[i] = gbObp0[i] = gbObp1[i] = i; + + memset(&gbDataMBC1,0, sizeof(gbDataMBC1)); + gbDataMBC1.mapperROMBank = 1; + + gbDataMBC2.mapperRAMEnable = 0; + gbDataMBC2.mapperROMBank = 1; + + memset(&gbDataMBC3,0, 6 * sizeof(int)); + gbDataMBC3.mapperROMBank = 1; + + memset(&gbDataMBC5, 0, sizeof(gbDataMBC5)); + gbDataMBC5.mapperROMBank = 1; + + memset(&gbDataHuC1, 0, sizeof(gbDataHuC1)); + gbDataHuC1.mapperROMBank = 1; + + memset(&gbDataHuC3, 0, sizeof(gbDataHuC3)); + gbDataHuC3.mapperROMBank = 1; + + gbMemoryMap[0x00] = &gbRom[0x0000]; + gbMemoryMap[0x01] = &gbRom[0x1000]; + gbMemoryMap[0x02] = &gbRom[0x2000]; + gbMemoryMap[0x03] = &gbRom[0x3000]; + gbMemoryMap[0x04] = &gbRom[0x4000]; + gbMemoryMap[0x05] = &gbRom[0x5000]; + gbMemoryMap[0x06] = &gbRom[0x6000]; + gbMemoryMap[0x07] = &gbRom[0x7000]; + gbMemoryMap[0x08] = &gbVram[0x0000]; + gbMemoryMap[0x09] = &gbVram[0x1000]; + gbMemoryMap[0x0a] = NULL; + gbMemoryMap[0x0b] = NULL; + gbMemoryMap[0x0c] = &gbWram[0x0000]; + gbMemoryMap[0x0d] = &gbWram[0x1000]; + gbMemoryMap[0x0e] = NULL; + gbMemoryMap[0x0f] = NULL; + + if(gbRam) + { + gbMemoryMap[0x0a] = &gbRam[0x0000]; + + if(gbRamSize > 0x1000) + gbMemoryMap[0x0b] = &gbRam[0x1000]; + else + gbMemoryMap[0x0b] = gbMemoryMap[0x0a]; + } + + MDFNGBSOUND_Reset(); + + // BIOS simulate + MDFNGBSOUND_Write(0, 0xFF26, 0x80); + MDFNGBSOUND_Write(0, 0xFF11, 0x80); + MDFNGBSOUND_Write(0, 0xFF12, 0xF3); + MDFNGBSOUND_Write(0, 0xFF25, 0xF3); + MDFNGBSOUND_Write(0, 0xFF24, 0x77); +} + +static void gbPower(void) +{ + snooze = 0; + PadInterruptDelay = 0; + + if(gbCgbMode) + { + memset(gbWram,0,0x8000); + memset(gbVram, 0, 0x4000); + } + else + { + memset(gbWram, 0x00, 0x2000); + memset(gbVram, 0x00, 0x2000); + } + memset(gbOAM, 0x00, 0xA0); + memset(HRAM, 0x00, 0x80); + + if(gbRam && !gbBattery) + memset(gbRam, 0xFF, gbRamSize); + + gbReset(); +} + +void gbWriteSaveMBC1(const char * name) +{ + MDFN_DumpToFile(name, 6, gbRam, gbRamSize); +} + +void gbWriteSaveMBC2(const char * name) +{ + MDFN_DumpToFile(name, 6, gbRam, 256 * 2); +} + +void gbWriteSaveMBC3(const char * name, bool extendedSave) +{ + std::vector EvilRams; + uint8 time_buffer[10 * 4 + 8]; // 10 uint32, 1 uint64 + + EvilRams.push_back(PtrLengthPair(gbRam, gbRamSize)); + + if(extendedSave) + { + MDFN_en32lsb(time_buffer + 0, gbDataMBC3.mapperSeconds); + MDFN_en32lsb(time_buffer + 4, gbDataMBC3.mapperMinutes); + MDFN_en32lsb(time_buffer + 8, gbDataMBC3.mapperHours); + MDFN_en32lsb(time_buffer + 12, gbDataMBC3.mapperDays); + MDFN_en32lsb(time_buffer + 16, gbDataMBC3.mapperControl); + MDFN_en32lsb(time_buffer + 20, gbDataMBC3.mapperLSeconds); + MDFN_en32lsb(time_buffer + 24, gbDataMBC3.mapperLMinutes); + MDFN_en32lsb(time_buffer + 28, gbDataMBC3.mapperLHours); + MDFN_en32lsb(time_buffer + 32, gbDataMBC3.mapperLDays); + MDFN_en32lsb(time_buffer + 36, gbDataMBC3.mapperLControl); + MDFN_en64lsb(time_buffer + 40, gbDataMBC3.mapperLastTime); + + EvilRams.push_back(PtrLengthPair(time_buffer, sizeof(time_buffer))); + } + + MDFN_DumpToFile(name, 6, EvilRams); +} + +void gbWriteSaveMBC5(const char * name) +{ + MDFN_DumpToFile(name, 6, gbRam, gbRamSize); +} + +void gbWriteSaveMBC7(const char * name) +{ + MDFN_DumpToFile(name, 6, gbRam, 256); +} + +bool gbReadSaveMBC1(const char * name) +{ + gzFile file = gzopen(name, "rb"); + + if(file == NULL) { + return false; + } + + int read = gzread(file, gbRam, gbRamSize); + + if(read != gbRamSize) { + gzclose(file); + return false; + } + + gzclose(file); + return true; +} + +bool gbReadSaveMBC2(const char * name) +{ + gzFile file = gzopen(name, "rb"); + + if(file == NULL) { + return false; + } + + int read = gzread(file, gbRam, 256 * 2); + if(read != 256 * 2) { + gzclose(file); + return false; + } + gzclose(file); + return true; +} + +bool gbReadSaveMBC3(const char * name) +{ + gzFile file = gzopen(name, "rb"); + + if(file == NULL) { + return false; + } + + int read = gzread(file, gbRam, gbRamSize); + + bool res = true; + + if(read != gbRamSize) + { + + } + else + { + uint8 time_buffer[10 * 4 + 8]; // 10 uint32, 1 uint64 + + read = gzread(file, time_buffer, sizeof(time_buffer)); + if(read == sizeof(time_buffer)) + { + gbDataMBC3.mapperSeconds = MDFN_de32lsb(time_buffer + 0); + gbDataMBC3.mapperMinutes = MDFN_de32lsb(time_buffer + 4); + gbDataMBC3.mapperHours = MDFN_de32lsb(time_buffer + 8); + gbDataMBC3.mapperDays = MDFN_de32lsb(time_buffer + 12); + gbDataMBC3.mapperControl = MDFN_de32lsb(time_buffer + 16); + gbDataMBC3.mapperLSeconds = MDFN_de32lsb(time_buffer + 20); + gbDataMBC3.mapperLMinutes = MDFN_de32lsb(time_buffer + 24); + gbDataMBC3.mapperLHours = MDFN_de32lsb(time_buffer + 28); + gbDataMBC3.mapperLDays = MDFN_de32lsb(time_buffer + 32); + gbDataMBC3.mapperLControl = MDFN_de32lsb(time_buffer + 36); + gbDataMBC3.mapperLastTime = MDFN_de64lsb(time_buffer + 40); + } + else if(read != 0) + { + res = false; + } + } + + gzclose(file); + return res; +} + +bool gbReadSaveMBC5(const char * name) +{ + gzFile file = gzopen(name, "rb"); + + if(file == NULL) { + return false; + } + + int read = gzread(file, gbRam, gbRamSize); + + if(read != gbRamSize) { + gzclose(file); + return false; + } + + gzclose(file); + return true; +} + +bool gbReadSaveMBC7(const char * name) +{ + gzFile file = gzopen(name, "rb"); + + if(file == NULL) { + return false; + } + + int read = gzread(file, gbRam, 256); + + if(read != 256) { + gzclose(file); + return false; + } + + gzclose(file); + return true; +} + +bool gbWriteBatteryFile(const char *file, bool extendedSave) +{ + if(gbBattery) { + int type = gbRom[0x147]; + + switch(type) { + case 0x03: + gbWriteSaveMBC1(file); + break; + case 0x06: + gbWriteSaveMBC2(file); + break; + case 0x0f: + case 0x10: + case 0x13: + gbWriteSaveMBC3(file, extendedSave); + break; + case 0x1b: + case 0x1e: + gbWriteSaveMBC5(file); + break; + case 0x22: + gbWriteSaveMBC7(file); + break; + case 0xff: + gbWriteSaveMBC1(file); + break; + } + } + return true; +} + +bool gbWriteBatteryFile(const char *file) +{ + gbWriteBatteryFile(file, true); + return true; +} + +bool gbReadBatteryFile(const char *file) +{ + bool res = false; + if(gbBattery) { + int type = gbRom[0x147]; + + switch(type) { + case 0x03: + res = gbReadSaveMBC1(file); + break; + case 0x06: + res = gbReadSaveMBC2(file); + break; + case 0x0f: + case 0x10: + case 0x13: + if(!gbReadSaveMBC3(file)) + { + time_t tmp; + + time(&tmp); + gbDataMBC3.mapperLastTime = tmp; + struct tm *lt; + lt = localtime(&tmp); + gbDataMBC3.mapperSeconds = lt->tm_sec; + gbDataMBC3.mapperMinutes = lt->tm_min; + gbDataMBC3.mapperHours = lt->tm_hour; + gbDataMBC3.mapperDays = lt->tm_yday & 255; + gbDataMBC3.mapperControl = (gbDataMBC3.mapperControl & 0xfe) | + (lt->tm_yday > 255 ? 1: 0); + res = false; + break; + } + res = true; + break; + case 0x1b: + case 0x1e: + res = gbReadSaveMBC5(file); + break; + case 0x22: + res = gbReadSaveMBC7(file); + case 0xff: + res = gbReadSaveMBC1(file); + break; + } + } + return res; +} + +bool gbReadGSASnapshot(const char *fileName) +{ + FILE *file = fopen(fileName, "rb"); + + if(!file) { + return false; + } + + // long size = ftell(file); + if(fseek(file, 0x4, SEEK_SET)) + { + fclose(file); + return(false); + } + + char buffer[16]; + char buffer2[16]; + + if(fread(buffer, 1, 15, file) != 15) + { + fclose(file); + return(false); + } + + buffer[15] = 0; + memcpy(buffer2, &gbRom[0x134], 15); + buffer2[15] = 0; + if(memcmp(buffer, buffer2, 15)) { + fclose(file); + return false; + } + + if(fseek(file, 0x13, SEEK_SET)) + { + fclose(file); + return(false); + } + + int read = 0; + int toRead = 0; + switch(gbRom[0x147]) + { + case 0x03: + case 0x0f: + case 0x10: + case 0x13: + case 0x1b: + case 0x1e: + case 0xff: + read = fread(gbRam, 1, gbRamSize, file); + toRead = gbRamSize; + break; + + case 0x06: + case 0x22: + read = fread(gbRam,1,256,file); + toRead = 256; + break; + + default: + fclose(file); + return false; + } + fclose(file); + + if(read != toRead) + { + + } + + gbReset(); + return true; +} + +static SFORMAT Joy_StateRegs[] = +{ + SFVAR(gbJoymask), + SFEND +}; + +static SFORMAT MBC1_StateRegs[] = +{ + SFVARN(gbDataMBC1.mapperRAMEnable, "RAME"), + SFVARN(gbDataMBC1.mapperROMBank, "ROMB"), + SFVARN(gbDataMBC1.mapperRAMBank,"RAMB"), + SFVARN(gbDataMBC1.mapperMemoryModel, "MEMM"), + SFEND +}; + +static SFORMAT MBC2_StateRegs[] = +{ + SFVARN(gbDataMBC2.mapperRAMEnable, "RAME"), + SFVARN(gbDataMBC2.mapperROMBank, "ROMB"), + SFEND +}; + +static SFORMAT MBC3_StateRegs[] = +{ + SFVARN(gbDataMBC3.mapperRAMEnable, "RAME"), + SFVARN(gbDataMBC3.mapperROMBank, "ROMB"), + SFVARN(gbDataMBC3.mapperRAMBank, "RAMB"), + SFVARN(gbDataMBC3.mapperRAMAddress, "RAMA"), + SFVARN(gbDataMBC3.mapperClockLatch, "CLKL"), + SFVARN(gbDataMBC3.mapperClockRegister, "CLKR"), + SFVARN(gbDataMBC3.mapperSeconds, "SEC"), + SFVARN(gbDataMBC3.mapperHours, "HOUR"), + SFVARN(gbDataMBC3.mapperDays, "DAY"), + SFVARN(gbDataMBC3.mapperControl, "CTRL"), + + SFVARN(gbDataMBC3.mapperLSeconds, "LSEC"), + SFVARN(gbDataMBC3.mapperLHours, "LHUR"), + SFVARN(gbDataMBC3.mapperLDays, "LDAY"), + SFVARN(gbDataMBC3.mapperLControl, "LCTR"), + SFVARN(gbDataMBC3.mapperLastTime, "LTIM"), + SFEND +}; + +static SFORMAT MBC5_StateRegs[] = +{ + SFVAR(gbDataMBC5.mapperRAMEnable), + SFVAR(gbDataMBC5.mapperROMBank), + SFVAR(gbDataMBC5.mapperRAMBank), + SFVAR(gbDataMBC5.mapperROMHighAddress), + SFVAR(gbDataMBC5.mapperRAMAddress), + SFVAR(gbDataMBC5.isRumbleCartridge), + SFEND +}; + +static SFORMAT MBC7_StateRegs[] = +{ + SFVARN(gbDataMBC7.mapperRAMEnable, "RAME"), + SFVARN(gbDataMBC7.mapperROMBank, "ROMB"), + SFVARN(gbDataMBC7.mapperRAMBank, "RAMB"), + SFVARN(gbDataMBC7.mapperRAMAddress, "RAMA"), + SFVARN(gbDataMBC7.cs, "CS"), + SFVARN(gbDataMBC7.sk, "SK"), + SFVARN(gbDataMBC7.state, "STTE"), + SFVARN(gbDataMBC7.buffer, "BUF"), + SFVARN(gbDataMBC7.idle, "IDLE"), + SFVARN(gbDataMBC7.count, "CONT"), + SFVARN(gbDataMBC7.code, "CODE"), + SFVARN(gbDataMBC7.address, "ADDR"), + SFVARN(gbDataMBC7.writeEnable, "WRE"), + SFVARN(gbDataMBC7.value, "VALU"), + SFEND +}; + +static SFORMAT HuC1_StateRegs[] = +{ + SFVARN(gbDataHuC1.mapperRAMEnable, "RAME"), + SFVARN(gbDataHuC1.mapperROMBank, "ROMB"), + SFVARN(gbDataHuC1.mapperRAMBank, "RAMB"), + SFVARN(gbDataHuC1.mapperMemoryModel, "MEMM"), + SFVARN(gbDataHuC1.mapperROMHighAddress, "ROMH"), + SFVARN(gbDataHuC1.mapperRAMAddress, "RAMA"), + SFEND +}; + +static SFORMAT HuC3_StateRegs[] = +{ + SFVARN(gbDataHuC3.mapperRAMEnable, "RAME"), + SFVARN(gbDataHuC3.mapperROMBank, "ROMB"), + SFVARN(gbDataHuC3.mapperRAMBank, "RAMB"), + SFVARN(gbDataHuC3.mapperRAMAddress, "RAMA"), + SFVARN(gbDataHuC3.mapperAddress, "ADDR"), + SFVARN(gbDataHuC3.mapperRAMFlag, "RAMF"), + SFVARN(gbDataHuC3.mapperRAMValue, "RAMV"), + SFVARN(gbDataHuC3.mapperRegister1, "REG1"), + SFVARN(gbDataHuC3.mapperRegister2, "REG2"), + SFVARN(gbDataHuC3.mapperRegister3, "REG3"), + SFVARN(gbDataHuC3.mapperRegister4, "REG4"), + SFVARN(gbDataHuC3.mapperRegister5, "REG5"), + SFVARN(gbDataHuC3.mapperRegister6, "REG6"), + SFVARN(gbDataHuC3.mapperRegister7, "REG7"), + SFVARN(gbDataHuC3.mapperRegister8, "REG8"), + + SFEND +}; + + +static SFORMAT gbSaveGameStruct[] = +{ + SFVAR(GBLCD_MODE_0_CLOCK_TICKS), + SFVAR(GBLCD_MODE_1_CLOCK_TICKS), + SFVAR(GBLCD_MODE_2_CLOCK_TICKS), + SFVAR(GBLCD_MODE_3_CLOCK_TICKS), + SFVAR(GBDIV_CLOCK_TICKS), + SFVAR(GBLY_INCREMENT_CLOCK_TICKS), + SFVAR(GBTIMER_MODE_0_CLOCK_TICKS), + SFVAR(GBTIMER_MODE_1_CLOCK_TICKS), + SFVAR(GBTIMER_MODE_2_CLOCK_TICKS), + SFVAR(GBTIMER_MODE_3_CLOCK_TICKS), + SFVAR(GBSERIAL_CLOCK_TICKS), + SFVAR(GBSYNCHRONIZE_CLOCK_TICKS), + + SFVAR(snooze), + SFVAR(PadInterruptDelay), + + SFVAR(gbDivTicks), + SFVAR(gbLcdMode), + SFVAR(gbLcdTicks), + SFVAR(gbLcdLYIncrementTicks), + SFVAR(gbTimerTicks), + SFVAR(gbTimerClockTicks), + SFVAR(gbSerialTicks), + SFVAR(gbSerialBits), + SFVAR(gbSynchronizeTicks), + SFVAR(gbTimerOn), + SFVAR(gbTimerMode), + SFVAR(gbSerialOn), + SFVAR(gbWindowLine), + //SFVAR(gbCgbMode), + SFVAR(gbVramBank), + SFVAR(gbWramBank), + SFVAR(gbHdmaSource), + SFVAR(gbHdmaDestination), + SFVAR(gbHdmaBytes), + SFVAR(gbHdmaOn), + SFVAR(gbSpeed), + SFVAR(gbDmaTicks), + SFVAR(register_P1), + SFVAR(register_SB), + SFVAR(register_SC), + SFVAR(register_DIV), + SFVAR(register_TIMA), + SFVAR(register_TMA), + SFVAR(register_TAC), + SFVAR(register_IF), + SFVAR(register_LCDC), + SFVAR(register_STAT), + SFVAR(register_SCY), + SFVAR(register_SCX), + SFVAR(register_LY), + SFVAR(register_LYC), + SFVAR(register_DMA), + SFVAR(register_WY), + SFVAR(register_WX), + SFVAR(register_VBK), + SFVAR(register_HDMA1), + SFVAR(register_HDMA2), + SFVAR(register_HDMA3), + SFVAR(register_HDMA4), + SFVAR(register_HDMA5), + SFVAR(register_RP), + SFVAR(register_FF6C), + SFVAR(register_SVBK), + SFVAR(register_FF72), + SFVAR(register_FF73), + SFVAR(register_FF74), + SFVAR(register_FF75), + SFVAR(register_IE), + SFARRAYN(gbBgp, 4, "BGP"), + SFARRAYN(gbObp0, 4, "OBP0"), + SFARRAYN(gbObp1, 4, "OBP1"), + SFEND +}; + +static void CloseGame(void) +{ + gbWriteBatteryFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str()); + + if(gbRam != NULL) + { + free(gbRam); + gbRam = NULL; + } + + if(gbRom != NULL) + { + free(gbRom); + gbRom = NULL; + } + + if(gbLineBuffer != NULL) + { + free(gbLineBuffer); + gbLineBuffer = NULL; + } + + if(gbVram != NULL) + { + free(gbVram); + gbVram = NULL; + } + + if(gbWram != NULL) + { + free(gbWram); + gbWram = NULL; + } + + if(gbColorFilter) + { + free(gbColorFilter); + gbColorFilter = NULL; + } + + if(Custom_GB_ColorMap) + { + MDFN_free(Custom_GB_ColorMap); + Custom_GB_ColorMap = NULL; + } + + if(Custom_GBC_ColorMap) + { + MDFN_free(Custom_GBC_ColorMap); + Custom_GBC_ColorMap = NULL; + } +} + +static void StateRest(int version) +{ + register_SVBK &= 7; + register_VBK &= 1; + + gbMemoryMap[0x00] = &gbRom[0x0000]; + gbMemoryMap[0x01] = &gbRom[0x1000]; + gbMemoryMap[0x02] = &gbRom[0x2000]; + gbMemoryMap[0x03] = &gbRom[0x3000]; + gbMemoryMap[0x04] = &gbRom[0x4000]; + gbMemoryMap[0x05] = &gbRom[0x5000]; + gbMemoryMap[0x06] = &gbRom[0x6000]; + gbMemoryMap[0x07] = &gbRom[0x7000]; + gbMemoryMap[0x08] = &gbVram[0x0000]; + gbMemoryMap[0x09] = &gbVram[0x1000]; + gbMemoryMap[0x0a] = NULL; + gbMemoryMap[0x0b] = NULL; + gbMemoryMap[0x0c] = &gbWram[0x0000]; + gbMemoryMap[0x0d] = &gbWram[0x1000]; + gbMemoryMap[0x0e] = NULL; + gbMemoryMap[0x0f] = NULL; + + if(gbRam) + { + gbMemoryMap[0x0a] = &gbRam[0x0000]; + + if(gbRamSize > 0x1000) + gbMemoryMap[0x0b] = &gbRam[0x1000]; + else + gbMemoryMap[0x0b] = gbMemoryMap[0x0a]; + } + + int type = gbRom[0x147]; + + switch(type) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + // MBC 1 + memoryUpdateMapMBC1(); + break; + case 0x05: + case 0x06: + // MBC2 + memoryUpdateMapMBC2(); + break; + case 0x0f: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + // MBC 3 + memoryUpdateMapMBC3(); + break; + case 0x19: + case 0x1a: + case 0x1b: + // MBC5 + memoryUpdateMapMBC5(); + break; + case 0x1c: + case 0x1d: + case 0x1e: + // MBC 5 Rumble + memoryUpdateMapMBC5(); + break; + case 0x22: + // MBC 7 + memoryUpdateMapMBC7(); + break; + case 0xfe: + // HuC3 + memoryUpdateMapHuC3(); + break; + case 0xff: + // HuC1 + memoryUpdateMapHuC1(); + break; + } + + if(gbCgbMode) + { + int value = register_SVBK; + if(value == 0) + value = 1; + + gbMemoryMap[0x08] = &gbVram[register_VBK * 0x2000]; + gbMemoryMap[0x09] = &gbVram[register_VBK * 0x2000 + 0x1000]; + gbMemoryMap[0x0d] = &gbWram[value * 0x1000]; + + gbVramBank = register_VBK; + gbWramBank = value; + } + +} + +uint32 gblayerSettings; + +static const char *GetGBRAMSizeString(uint8 t) +{ + const char *type = _("Unknown"); + + switch(t) + { + case 0: + type = _("None"); + break; + case 1: + type = "2K"; + break; + case 2: + type = "8K"; + break; + case 3: + type = "32K"; + break; + case 4: + type = "128K"; + break; + case 5: + type = "64K"; + break; + } + + return(type); +} + + +static const char *GetGBTypeString(uint8 t) +{ + const char *type = _("Unknown"); + + switch(t) + { + case 0x00: + type = "ROM"; + break; + case 0x01: + type = "ROM+MBC1"; + break; + case 0x02: + type = "ROM+MBC1+RAM"; + break; + case 0x03: + type = "ROM+MBC1+RAM+BATT"; + break; + case 0x05: + type = "ROM+MBC2"; + break; + case 0x06: + type = "ROM+MBC2+BATT"; + break; + case 0x0f: + type = "ROM+MBC3+TIMER+BATT"; + break; + case 0x10: + type = "ROM+MBC3+TIMER+RAM+BATT"; + break; + case 0x11: + type = "ROM+MBC3"; + break; + case 0x12: + type = "ROM+MBC3+RAM"; + break; + case 0x13: + type = "ROM+MBC3+RAM+BATT"; + break; + case 0x19: + type = "ROM+MBC5"; + break; + case 0x1a: + type = "ROM+MBC5+RAM"; + break; + case 0x1b: + type = "ROM+MBC5+RAM+BATT"; + break; + case 0x1c: + type = "ROM+MBC5+RUMBLE"; + break; + case 0x1d: + type = "ROM+MBC5+RUMBLE+RAM"; + break; + case 0x1e: + type = "ROM+MBC5+RUMBLE+RAM+BATT"; + break; + case 0x22: + type = "ROM+MBC7+BATT"; + break; + case 0xfe: + type = "ROM+HuC-3"; + break; + case 0xff: + type = "ROM+HuC-1"; + break; + } + + return(type); +} + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + static const uint8 GBMagic[8] = { 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B }; + + if(fp->size < 0x10C || memcmp(fp->data + 0x104, GBMagic, 8)) + return(FALSE); + + if(fp->size < 0x200) + return(false); + + return(TRUE); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + if(!(gbColorFilter = (uint32 *)MDFN_malloc(32768 * sizeof(uint32), _("GB Color Map")))) + { + return(0); + } + + if(fp->size < 0x200) + { + MDFN_PrintError(_("GameBoy (Color) ROM image is too small: %llu bytes(at least 512 is required)"), (unsigned long long)fp->size); + return(0); + } + + gbEmulatorType = MDFN_GetSettingI("gb.system_type"); + + gbRom = (uint8 *)malloc(fp->size); + memcpy(gbRom, fp->data, fp->size); + gbRomSize = fp->size; + + md5_context md5; + md5.starts(); + md5.update(gbRom, gbRomSize); + md5.finish(MDFNGameInfo->MD5); + + MDFNGameInfo->GameSetMD5Valid = FALSE; + + MDFN_printf(_("ROM: %dKiB\n"), (gbRomSize + 1023) / 1024); + MDFN_printf(_("ROM CRC32: 0x%08x\n"), (unsigned int)crc32(0, gbRom, gbRomSize)); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + MDFN_printf(_("Type: 0x%02x(%s)\n"), gbRom[0x147], GetGBTypeString(gbRom[0x147])); + MDFN_printf(_("RAM Size: 0x%02x(%s)\n"), gbRom[0x149], GetGBRAMSizeString(gbRom[0x149])); + MDFN_printf(_("Version: 0x%02x\n"), gbRom[0x14C]); + + MDFNMP_Init(128, (65536 + 32768) / 128); // + 32768 for GBC WRAM for supported GameShark cheats with RAM page numbers + + MDFNGBSOUND_Init(); + + if(!gbUpdateSizes()) + { + return(0); + } + + gbReadBatteryFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str()); + gblayerSettings = 0xFF; + + // Custom palettes + if(gbCgbMode) + { + if(!LoadCPalette("gbc", &Custom_GBC_ColorMap, 32768)) + return(0); + } + else + { + if(!LoadCPalette("gb", &Custom_GB_ColorMap, 4)) + return(0); + } + + return(1); +} + +static bool gbUpdateSizes() +{ + if(gbRom[0x148] > 8) + { + MDFN_PrintError(_("Invalid ROM size")); + return false; + } + + //MDFN_printf("ROM Size: %d\n", gbRomSizes[gbRom[0x148]]); + + if(gbRomSize < gbRomSizes[gbRom[0x148]]) { + gbRom = (uint8 *)realloc(gbRom, gbRomSizes[gbRom[0x148]]); + } + gbRomSize = gbRomSizes[gbRom[0x148]]; + gbRomSizeMask = gbRomSizesMasks[gbRom[0x148]]; + + if(gbRom[0x149] > 5) + { + MDFN_PrintError(_("Invalid RAM size")); + return false; + } + + gbRamSize = gbRamSizes[gbRom[0x149]]; + gbRamSizeMask = gbRamSizesMasks[gbRom[0x149]]; + + int type = gbRom[0x147]; + + mapperReadRAM = NULL; + + switch(type) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + // MBC 1 + mapper = mapperMBC1ROM; + mapperRAM = mapperMBC1RAM; + break; + case 0x05: + case 0x06: + // MBC2 + mapper = mapperMBC2ROM; + mapperRAM = mapperMBC2RAM; + gbRamSize = 0x200; + gbRamSizeMask = 0x1ff; + break; + case 0x0f: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + // MBC 3 + mapper = mapperMBC3ROM; + mapperRAM = mapperMBC3RAM; + mapperReadRAM = mapperMBC3ReadRAM; + break; + case 0x19: + case 0x1a: + case 0x1b: + // MBC5 + mapper = mapperMBC5ROM; + mapperRAM = mapperMBC5RAM; + break; + case 0x1c: + case 0x1d: + case 0x1e: + // MBC 5 Rumble + mapper = mapperMBC5ROM; + mapperRAM = mapperMBC5RAM; + break; + case 0x22: + // MBC 7 + mapper = mapperMBC7ROM; + mapperRAM = mapperMBC7RAM; + mapperReadRAM = mapperMBC7ReadRAM; + break; + case 0xfe: + // HuC3 + mapper = mapperHuC3ROM; + mapperRAM = mapperHuC3RAM; + mapperReadRAM = mapperHuC3ReadRAM; + break; + case 0xff: + // HuC1 + mapper = mapperHuC1ROM; + mapperRAM = mapperHuC1RAM; + break; + default: + return false; + } + + switch(type) { + case 0x03: + case 0x06: + case 0x0f: + case 0x10: + case 0x13: + case 0x1b: + case 0x1d: + case 0x1e: + case 0x22: + case 0xff: + gbBattery = 1; + break; + } + + if(gbRamSize) { + gbRam = (uint8 *)malloc(gbRamSize); + memset(gbRam, 0xFF, gbRamSize); + } + + // CGB bit + if(gbRom[0x143] & 0x80) + { + if(gbEmulatorType == 0 || + gbEmulatorType == 1 || + gbEmulatorType == 4 || + gbEmulatorType == 5) { + gbCgbMode = 1; + memset(gbPalette,0, 2*128); + } else { + gbCgbMode = 0; + } + } + else + gbCgbMode = 0; + + if(gbCgbMode) + { + gbWram = (uint8 *)malloc(0x8000); + memset(gbWram,0,0x8000); + MDFNMP_AddRAM(0x8000, 0x10000, gbWram); + + gbVram = (uint8 *)malloc(0x4000); + memset(gbVram, 0, 0x4000); + } + else + { + gbWram = (uint8 *)malloc(0x2000); + memset(gbWram,0,0x2000); + gbVram = (uint8 *)malloc(0x2000); + memset(gbVram, 0, 0x2000); + } + + MDFNMP_AddRAM(0x80, 0xFF80, HRAM); + MDFNMP_AddRAM(0x2000, 0xC000, gbWram); + + if(gbRam) + MDFNMP_AddRAM(gbRamSize > 8192 ? 8192 : gbRamSize, 0xA000, gbRam); + + gbLineBuffer = (uint16 *)malloc(160 * sizeof(uint16)); + + switch(type) { + case 0x1c: + case 0x1d: + case 0x1e: + gbDataMBC5.isRumbleCartridge = 1; + } + + gbPower(); + + return true; +} + +static uint8 *paddie; + +static void MDFNGB_SetInput(int port, const char *type, void *ptr) +{ + paddie = (uint8*)ptr; +} + +static void Emulate(EmulateSpecStruct *espec) +{ + bool linedrawn[144]; + + if(espec->VideoFormatChanged) + gbGenFilter(espec->surface->format); //.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + + if(espec->SoundFormatChanged) + MDFNGB_SetSoundRate(espec->SoundRate); + + + + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + espec->DisplayRect.w = 160; + espec->DisplayRect.h = 144; + + memset(linedrawn, 0, sizeof(linedrawn)); + + //if(gbRom[0x147] == 0x22) + //{ + // systemUpdateMotionSensor(); + //} + + if(*paddie != gbJoymask) + { + PadInterruptDelay = 20; + } + + MDFNMP_ApplyPeriodicCheats(); + int clockTicks = 0; + int doret = 0; + + while(!doret && SoundTS < 72000) + { + if(gbDmaTicks) + { + clockTicks = 4; + gbDmaTicks -= 4; + if(gbDmaTicks < 0) { clockTicks += gbDmaTicks; gbDmaTicks = 0; } + } + else + clockTicks = GBZ80_RunOp(); + + SoundTS += clockTicks << (2 - gbSpeed); + + gbDivTicks -= clockTicks; + while(gbDivTicks <= 0) + { + register_DIV++; + gbDivTicks += GBDIV_CLOCK_TICKS; + } + + if(PadInterruptDelay > 0) + { + PadInterruptDelay -= clockTicks; + if(PadInterruptDelay <= 0) + { + gbJoymask = *paddie; + register_IF |= 0x10; + } + } + + if(snooze > 0) + { + snooze -= clockTicks; + if(snooze <= 0) + { + register_IF |= 1; // V-Blank interrupt + if(register_STAT & 0x10) + register_IF |= 2; + } + } + + + if(register_LCDC & 0x80) + { + // LCD stuff + gbLcdTicks -= clockTicks; + if(gbLcdMode == GBLCDM_VBLANK) + { + // during V-BLANK,we need to increment LY at the same rate! + gbLcdLYIncrementTicks -= clockTicks; + while(gbLcdLYIncrementTicks <= 0) + { + gbLcdLYIncrementTicks += GBLY_INCREMENT_CLOCK_TICKS; + + if(register_LY < 153) + { + register_LY++; + gbCompareLYToLYC(); + + if(register_LY >= 153) + gbLcdLYIncrementTicks = 6; + } + else + { + register_LY = 0x00; + // reset the window line + gbWindowLine = -1; + gbLcdLYIncrementTicks = GBLY_INCREMENT_CLOCK_TICKS * 2; + gbCompareLYToLYC(); + } + } + } + + // our counter is off, see what we need to do + while(gbLcdTicks <= 0) + { + switch(gbLcdMode) + { + case GBLCDM_HBLANK: + // H-Blank + register_LY++; + gbCompareLYToLYC(); + + // check if we reached the V-Blank period + if(register_LY == 144) + { + doret = 1; + // Yes, V-Blank + // set the LY increment counter + gbLcdLYIncrementTicks = gbLcdTicks + GBLY_INCREMENT_CLOCK_TICKS; + gbLcdTicks += GBLCD_MODE_1_CLOCK_TICKS; + gbLcdMode = 1; + + if(register_LCDC & 0x80) + { + snooze = 6; + //register_IF |= 1; // V-Blank interrupt + //if(register_STAT & 0x10) + // register_IF |= 2; + } + } else { + // go the the OAM being accessed mode + gbLcdTicks += GBLCD_MODE_2_CLOCK_TICKS; + gbLcdMode = 2; + + // only one LCD interrupt per line. may need to generalize... + if(!(register_STAT & 0x40) || + (register_LY != register_LYC)) { + if((register_STAT & 0x28) == 0x20) + register_IF |= 2; + } + } + break; + + case GBLCDM_VBLANK: + // V-Blank + // next mode is OAM being accessed mode + gbLcdTicks += GBLCD_MODE_2_CLOCK_TICKS; + gbLcdMode = GBLCDM_OAM; + if(!(register_STAT & 0x40) || + (register_LY != register_LYC)) { + if((register_STAT & 0x28) == 0x20) + register_IF |= 2; + } + break; + + case GBLCDM_OAM: + // OAM being accessed mode + + // next mode is OAM and VRAM in use + gbLcdTicks += GBLCD_MODE_3_CLOCK_TICKS; + gbLcdMode = GBLCDM_OAM_VRAM; + break; + + case GBLCDM_OAM_VRAM: + // OAM and VRAM in use + // next mode is H-Blank + if(register_LY < 144) + { + uint32 *dest = (uint32 *)espec->surface->pixels + register_LY * espec->surface->pitch32; + + linedrawn[register_LY] = 1; + gbRenderLine(); + gbDrawSprites(); + + if(gbCgbMode) + { + for(int x = 0; x < 160;) + { + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + *dest++ = gbColorFilter[gbLineMix[x++]]; + } + } + else // to if(gbCgbMode) + { + for(int x = 0; x < 160; x++) + dest[x] = gbMonoColorMap[gbLineMix[x]]; + } + } + gbLcdMode = GBLCDM_HBLANK; + // only one LCD interrupt per line. may need to generalize... + if(!(register_STAT & 0x40) || (register_LY != register_LYC)) + { + if(register_STAT & 0x08) + register_IF |= 2; + } + if(gbHdmaOn) + { + gbDoHdma(); + } + else + { + gbLcdTicks += GBLCD_MODE_0_CLOCK_TICKS; + } + break; + } + // mark the correct lcd mode on STAT register + register_STAT = (register_STAT & 0xfc) | gbLcdMode; + } + } + + // serial emulation + if(gbSerialOn) { +#ifdef LINK_EMULATION + if(linkConnected) { + gbSerialTicks -= clockTicks; + + while(gbSerialTicks <= 0) { + // increment number of shifted bits + gbSerialBits++; + linkProc(); + if(gbSerialOn && (register_SC & 1)) { + if(gbSerialBits == 8) { + gbSerialBits = 0; + register_SB = 0xff; + register_SC &= 0x7f; + gbSerialOn = 0; + register_IF |= 8; + gbSerialTicks = 0; + } + } + gbSerialTicks += GBSERIAL_CLOCK_TICKS; + } + } else { +#endif + if(register_SC & 1) { + gbSerialTicks -= clockTicks; + + // overflow + while(gbSerialTicks <= 0) { + // shift serial byte to right and put a 1 bit in its place + // register_SB = 0x80 | (register_SB>>1); + // increment number of shifted bits + gbSerialBits++; + if(gbSerialBits == 8) { + // end of transmission + if(gbSerialFunction) // external device + register_SB = gbSerialFunction(register_SB); + else + register_SB = 0xff; + gbSerialTicks = 0; + register_SC &= 0x7f; + gbSerialOn = 0; + register_IF |= 8; + gbSerialBits = 0; + } else + gbSerialTicks += GBSERIAL_CLOCK_TICKS; + } + } +#ifdef LINK_EMULATION + } +#endif + } + + // timer emulation + if(gbTimerOn) { + gbTimerTicks -= clockTicks; + while(gbTimerTicks <= 0) { + ClockTIMA(); + gbTimerTicks += gbTimerClockTicks; + } + } + } + + //printf("%d %d\n", register_LY, SoundTS); + for(int y = 0; y < 144; y++) + { + if(!linedrawn[y]) + { + uint32 * dest = (uint32 *)espec->surface->pixels + y * espec->surface->pitch32; + uint32 fill_color = gbCgbMode ? gbColorFilter[gbPalette[0]] : gbMonoColorMap[8]; + + MDFN_FastU32MemsetM8(dest, fill_color, 160); + } + } + + espec->MasterCycles = SoundTS; + + espec->SoundBufSize = MDFNGBSOUND_Flush(SoundTS, espec->SoundBuf, espec->SoundBufMaxSize); + SoundTS = 0; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT RAMDesc[] = + { + SFARRAYN(gbOAM, 0xA0, "OAM"), + SFARRAYN(HRAM, 0x80, "HRAM"), + SFARRAYN(gbRam, gbRamSize, "RAM"), + SFARRAYN(gbVram, gbCgbMode ? 0x4000 : 0x2000, "VRAM"), + SFARRAYN(gbWram, gbCgbMode ? 0x8000 : 0x2000, "WRAM"), + SFARRAY16(gbPalette, (gbCgbMode ? 128 : 0)), + SFEND, + }; + + std::vector love; + + love.push_back(SSDescriptor(gbSaveGameStruct, "MAIN")); + love.push_back(SSDescriptor(Joy_StateRegs, "JOY")); + love.push_back(SSDescriptor(MBC1_StateRegs, "MBC1")); + love.push_back(SSDescriptor(MBC2_StateRegs, "MBC2")); + love.push_back(SSDescriptor(MBC3_StateRegs, "MBC3")); + love.push_back(SSDescriptor(MBC5_StateRegs, "MBC5")); + love.push_back(SSDescriptor(MBC7_StateRegs, "MBC7")); + love.push_back(SSDescriptor(HuC1_StateRegs, "HuC1")); + love.push_back(SSDescriptor(HuC3_StateRegs, "HuC3")); + love.push_back(SSDescriptor(RAMDesc, "RAM")); + + int ret = MDFNSS_StateAction(sm, load, data_only, love); + + ret &= GBZ80_StateAction(sm, load, data_only); + + if(load) + StateRest(load); + + if(!MDFNGBSOUND_StateAction(sm, load, data_only)) + return(0); + + return(ret); +} + +static void SetLayerEnableMask(uint64 mask) +{ + gblayerSettings = mask; +} + +static void DoSimpleCommand(int cmd) +{ + if(cmd == MDFN_MSC_POWER || cmd == MDFN_MSC_RESET) + { + gbPower(); + } +} + +static const MDFNSetting_EnumList SystemType_List[] = +{ + { "auto", 0, gettext_noop("Auto"), gettext_noop("Automatic detection based on headers.") }, + { "dmg", 3, gettext_noop("DMG"), gettext_noop("Original GameBoy Monochrome.") }, + { "cgb", 1, gettext_noop("CGB"), gettext_noop("GameBoy Color.\n\nThis option is not fully implemented in regards to handling of DMG games.") }, + { "agb", 4, gettext_noop("AGB"), gettext_noop("GameBoy Advance.\n\nThis option is not fully implemented in regards to handling of DMG games.") }, + { NULL, 0 }, +}; + +static MDFNSetting GBSettings[] = +{ + { "gb.system_type", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulated GB type."), NULL, MDFNST_ENUM, "auto", NULL, NULL, NULL, NULL, SystemType_List }, + { NULL } +}; + +static const InputDeviceInputInfoStruct IDII[] = +{ + { "a", "A", /*VIRTB_1,*/ 7, IDIT_BUTTON_CAN_RAPID, NULL }, + + { "b", "B", /*VIRTB_0,*/ 6, IDIT_BUTTON_CAN_RAPID, NULL }, + + { "select", "SELECT", /*VIRTB_SELECT,*/ 4, IDIT_BUTTON, NULL }, + + { "start", "START", /*VIRTB_START,*/ 5, IDIT_BUTTON, NULL }, + + { "right", "RIGHT →", /*VIRTB_DP0_R,*/ 3, IDIT_BUTTON, "left" }, + + { "left", "LEFT â†", /*VIRTB_DP0_L,*/ 2, IDIT_BUTTON, "right" }, + + { "up", "UP ↑", /*VIRTB_DP0_U,*/ 0, IDIT_BUTTON, "down" }, + + { "down", "DOWN ↓", /*VIRTB_DP0_D,*/ 1, IDIT_BUTTON, "up" }, +}; + +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), + IDII, + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" } +}; + +static InputInfoStruct InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".gb", gettext_noop("GameBoy ROM Image") }, + { ".gbc", gettext_noop("GameBoy Color ROM Image") }, + { ".cgb", gettext_noop("GameBoy Color ROM Image") }, + { NULL, NULL } +}; + +} + +using namespace MDFN_IEN_GB; + +MDFNGI EmulatedGB = +{ + "gb", + "GameBoy (Color)", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + NULL, + &InputInfo, + Load, + TestMagic, + NULL, + NULL, + CloseGame, + SetLayerEnableMask, + "Background\0Sprites\0Window\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + MDFNGB_SetInput, + DoSimpleCommand, + GBSettings, + MDFN_MASTERCLOCK_FIXED(4194304), + (uint32)((double)4194304 / 70224 * 65536 * 256), + FALSE, // Multires possible? + + 160, // lcm_width + 144, // lcm_height + NULL, // Dummy + + 160, // Nominal width + 144, // Nominal height + + 160, // Framebuffer width + 144, // Framebuffer height + + 2, // Number of output sound channels +}; diff --git a/libmednahawk/src/gb/gb.h b/libmednahawk/src/gb/gb.h new file mode 100644 index 0000000000..567b6df509 --- /dev/null +++ b/libmednahawk/src/gb/gb.h @@ -0,0 +1,70 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_GB_GB_H +#define VBA_GB_GB_H + +namespace MDFN_IEN_GB +{ + +#define C_FLAG 0x10 +#define H_FLAG 0x20 +#define N_FLAG 0x40 +#define Z_FLAG 0x80 + +typedef union { + struct { +#ifndef LSB_FIRST + uint8 B1, B0; +#else + uint8 B0,B1; +#endif + } B; + uint16 W; +} gbRegister; + +extern uint8 gbOAM[0xA0]; +extern uint8 register_IF, register_IE, register_KEY1; + +extern void gbEmulate(int); +extern void gbSoundReset(); +extern void gbReset(); +extern void gbCleanUp(); +extern bool gbWriteBatteryFile(const char *); +extern bool gbWriteBatteryFile(const char *, bool); +extern bool gbReadBatteryFile(const char *); +extern bool gbWriteSaveState(const char *); +extern bool gbWriteMemSaveState(char *, int); +extern bool gbReadSaveState(const char *); +extern bool gbReadMemSaveState(char *, int); +extern void gbSgbRenderBorder(); +extern bool gbWritePNGFile(const char *); +extern bool gbWriteBMPFile(const char *); +extern bool gbReadGSASnapshot(const char *); + +extern struct EmulatedSystem GBSystem; + + +void gbWriteMemory(uint16 address, uint8 value); +uint8 gbReadMemory(uint16 address); +void gbSpeedSwitch(); + +} + +#endif diff --git a/libmednahawk/src/gb/gbCodes.h b/libmednahawk/src/gb/gbCodes.h new file mode 100644 index 0000000000..d55838a946 --- /dev/null +++ b/libmednahawk/src/gb/gbCodes.h @@ -0,0 +1,1388 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + default: + case 0x00: + // NOP + break; + case 0x01: + // LD BC, NNNN + BC.B.B0=gbReadMemory(PC.W++); + BC.B.B1=gbReadMemory(PC.W++); + break; + case 0x02: + // LD (BC),A + gbWriteMemory(BC.W,AF.B.B1); + break; + case 0x03: + // INC BC + BC.W++; + break; + case 0x04: + // INC B + BC.B.B1++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[BC.B.B1]| (BC.B.B1&0x0F? 0:H_FLAG); + break; + case 0x05: + // DEC B + BC.B.B1--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[BC.B.B1]| + ((BC.B.B1&0x0F)==0x0F? H_FLAG:0); + break; + case 0x06: + // LD B, NN + BC.B.B1=gbReadMemory(PC.W++); + break; + case 0x07: + // RLCA + tempValue=AF.B.B1&0x80? C_FLAG:0; + AF.B.B1=(AF.B.B1<<1)|(AF.B.B1>>7); + AF.B.B0=tempValue; + break; + case 0x08: + // LD (NNNN), SP + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(tempRegister.W++,SP.B.B0); + gbWriteMemory(tempRegister.W,SP.B.B1); + break; + case 0x09: + // ADD HL,BC + tempRegister.W=(HL.W+BC.W)&0xFFFF; + AF.B.B0= (AF.B.B0 & Z_FLAG)| ((HL.W^BC.W^tempRegister.W)&0x1000? H_FLAG:0)| + (((long)HL.W+(long)BC.W)&0x10000? C_FLAG:0); + HL.W=tempRegister.W; + break; + case 0x0a: + // LD A,(BC) + AF.B.B1=gbReadMemory(BC.W); + break; + case 0x0b: + // DEC BC + BC.W--; + break; + case 0x0c: + // INC C + BC.B.B0++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[BC.B.B0]| (BC.B.B0&0x0F? 0:H_FLAG); + break; + case 0x0d: + // DEC C + BC.B.B0--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[BC.B.B0]| + ((BC.B.B0&0x0F)==0x0F? H_FLAG:0); + break; + case 0x0e: + // LD C, NN + BC.B.B0=gbReadMemory(PC.W++); + break; + case 0x0f: + // RRCA + tempValue=AF.B.B1&0x01; + AF.B.B1=(AF.B.B1>>1)|(tempValue? 0x80:0); + AF.B.B0=(tempValue<<4); + break; + case 0x10: + // STOP + opcode = gbReadMemory(PC.W++); + if(gbCgbMode) { + if(register_KEY1 & 1) { + gbSpeedSwitch(); + + if(gbSpeed == 0) + register_KEY1 = 0x00; + else + register_KEY1 = 0x80; + } + } + break; + case 0x11: + // LD DE, NNNN + DE.B.B0=gbReadMemory(PC.W++); + DE.B.B1=gbReadMemory(PC.W++); + break; + case 0x12: + // LD (DE),A + gbWriteMemory(DE.W,AF.B.B1); + break; + case 0x13: + // INC DE + DE.W++; + break; + case 0x14: + // INC D + DE.B.B1++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[DE.B.B1]| (DE.B.B1&0x0F? 0:H_FLAG); + break; + case 0x15: + // DEC D + DE.B.B1--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[DE.B.B1]| + ((DE.B.B1&0x0F)==0x0F? H_FLAG:0); + break; + case 0x16: + // LD D,NN + DE.B.B1=gbReadMemory(PC.W++); + break; + case 0x17: + // RLA + tempValue=AF.B.B1&0x80? C_FLAG:0; + AF.B.B1=(AF.B.B1<<1)|((AF.B.B0&C_FLAG)>>4); + AF.B.B0=tempValue; + break; + case 0x18: + // JR NN + PC.W+=(int8)gbReadMemory(PC.W)+1; + break; + case 0x19: + // ADD HL,DE + tempRegister.W=(HL.W+DE.W)&0xFFFF; + AF.B.B0= (AF.B.B0 & Z_FLAG)| ((HL.W^DE.W^tempRegister.W)&0x1000? H_FLAG:0)| + (((long)HL.W+(long)DE.W)&0x10000? C_FLAG:0); + HL.W=tempRegister.W; + break; + case 0x1a: + // LD A,(DE) + AF.B.B1=gbReadMemory(DE.W); + break; + case 0x1b: + // DEC DE + DE.W--; + break; + case 0x1c: + // INC E + DE.B.B0++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[DE.B.B0]| (DE.B.B0&0x0F? 0:H_FLAG); + break; + case 0x1d: + // DEC E + DE.B.B0--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[DE.B.B0]| + ((DE.B.B0&0x0F)==0x0F? H_FLAG:0); + break; + case 0x1e: + // LD E,NN + DE.B.B0=gbReadMemory(PC.W++); + break; + case 0x1f: + // RRA + tempValue=AF.B.B1&0x01; + AF.B.B1=(AF.B.B1>>1)|(AF.B.B0&C_FLAG? 0x80:0); + AF.B.B0=(tempValue<<4); + break; + case 0x20: + // JR NZ,NN + if(AF.B.B0&Z_FLAG) + PC.W++; + else { + PC.W+=(int8)gbReadMemory(PC.W)+1; + clockTicks++; + } + break; + case 0x21: + // LD HL,NNNN + HL.B.B0=gbReadMemory(PC.W++); + HL.B.B1=gbReadMemory(PC.W++); + break; + case 0x22: + // LDI (HL),A + gbWriteMemory(HL.W++,AF.B.B1); + break; + case 0x23: + // INC HL + HL.W++; + break; + case 0x24: + // INC H + HL.B.B1++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[HL.B.B1]| (HL.B.B1&0x0F? 0:H_FLAG); + break; + case 0x25: + // DEC H + HL.B.B1--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[HL.B.B1]| + ((HL.B.B1&0x0F)==0x0F? H_FLAG:0); + break; + case 0x26: + // LD H,NN + HL.B.B1=gbReadMemory(PC.W++); + break; + case 0x27: + // DAA + tempRegister.W=AF.B.B1; + tempRegister.W|=(AF.B.B0&(C_FLAG|H_FLAG|N_FLAG))<<4; + AF.W=DAATable[tempRegister.W]; + break; + case 0x28: + // JR Z,NN + if(AF.B.B0&Z_FLAG) { + PC.W+=(int8)gbReadMemory(PC.W)+1; + clockTicks++; + } else + PC.W++; + break; + case 0x29: + // ADD HL,HL + tempRegister.W=(HL.W+HL.W)&0xFFFF; AF.B.B0= (AF.B.B0 & Z_FLAG)| + ((HL.W^HL.W^tempRegister.W)&0x1000? H_FLAG:0)| + (((long)HL.W+(long)HL.W)&0x10000? C_FLAG:0); + HL.W=tempRegister.W; + break; + case 0x2a: + // LDI A,(HL) + AF.B.B1 = gbReadMemory(HL.W++); + break; + case 0x2b: + // DEC HL + HL.W--; + break; + case 0x2c: + // INC L + HL.B.B0++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[HL.B.B0]| (HL.B.B0&0x0F? 0:H_FLAG); + break; + case 0x2d: + // DEC L + HL.B.B0--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[HL.B.B0]| + ((HL.B.B0&0x0F)==0x0F? H_FLAG:0); + break; + case 0x2e: + // LD L,NN + HL.B.B0=gbReadMemory(PC.W++); + break; + case 0x2f: + // CPL + AF.B.B1 ^= 255; + AF.B.B0|=N_FLAG|H_FLAG; + break; + case 0x30: + // JR NC,NN + if(AF.B.B0&C_FLAG) + PC.W++; + else { + PC.W+=(int8)gbReadMemory(PC.W)+1; + clockTicks++; + } + break; + case 0x31: + // LD SP,NNNN + SP.B.B0=gbReadMemory(PC.W++); + SP.B.B1=gbReadMemory(PC.W++); + break; + case 0x32: + // LDD (HL),A + gbWriteMemory(HL.W--,AF.B.B1); + break; + case 0x33: + // INC SP + SP.W++; + break; + case 0x34: + // INC (HL) + tempValue=gbReadMemory(HL.W)+1; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[tempValue]| (tempValue&0x0F? 0:H_FLAG); + gbWriteMemory(HL.W,tempValue); + break; + case 0x35: + // DEC (HL) + tempValue=gbReadMemory(HL.W)-1; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[tempValue]| + ((tempValue&0x0F)==0x0F? H_FLAG:0);gbWriteMemory(HL.W,tempValue); + break; + case 0x36: + // LD (HL),NN + gbWriteMemory(HL.W,gbReadMemory(PC.W++)); + break; + case 0x37: + // SCF + AF.B.B0 = (AF.B.B0 & Z_FLAG) | C_FLAG; + break; +case 0x38: + // JR C,NN + if(AF.B.B0&C_FLAG) { + PC.W+=(int8)gbReadMemory(PC.W)+1; + clockTicks ++; + } else + PC.W++; + break; + case 0x39: + // ADD HL,SP + tempRegister.W=(HL.W+SP.W)&0xFFFF; + AF.B.B0= (AF.B.B0 & Z_FLAG)| ((HL.W^SP.W^tempRegister.W)&0x1000? H_FLAG:0)| + (((long)HL.W+(long)SP.W)&0x10000? C_FLAG:0); + HL.W=tempRegister.W; + break; + case 0x3a: + // LDD A,(HL) + AF.B.B1 = gbReadMemory(HL.W--); + break; + case 0x3b: + // DEC SP + SP.W--; + break; + case 0x3c: + // INC A + AF.B.B1++; + AF.B.B0= (AF.B.B0 & C_FLAG)|ZeroTable[AF.B.B1]| (AF.B.B1&0x0F? 0:H_FLAG); + break; + case 0x3d: + // DEC A + AF.B.B1--; + AF.B.B0= N_FLAG|(AF.B.B0 & C_FLAG)|ZeroTable[AF.B.B1]| + ((AF.B.B1&0x0F)==0x0F? H_FLAG:0); + break; + case 0x3e: + // LD A,NN + AF.B.B1=gbReadMemory(PC.W++); + break; + case 0x3f: + // CCF + AF.B.B0^=C_FLAG;AF.B.B0&=~(N_FLAG|H_FLAG); + break; + case 0x40: + // LD B,B + BC.B.B1=BC.B.B1; + break; + case 0x41: + // LD B,C + BC.B.B1=BC.B.B0; + break; + case 0x42: + // LD B,D + BC.B.B1=DE.B.B1; + break; + case 0x43: + // LD B,E + BC.B.B1=DE.B.B0; + break; + case 0x44: + // LD B,H + BC.B.B1=HL.B.B1; + break; + case 0x45: + // LD B,L + BC.B.B1=HL.B.B0; + break; + case 0x46: + // LD B,(HL) + BC.B.B1=gbReadMemory(HL.W); + break; + case 0x47: + // LD B,A + BC.B.B1=AF.B.B1; + break; + case 0x48: + // LD C,B + BC.B.B0=BC.B.B1; + break; + case 0x49: + // LD C,C + BC.B.B0=BC.B.B0; + break; + case 0x4a: + // LD C,D + BC.B.B0=DE.B.B1; + break; + case 0x4b: + // LD C,E + BC.B.B0=DE.B.B0; + break; + case 0x4c: + // LD C,H + BC.B.B0=HL.B.B1; + break; + case 0x4d: + // LD C,L + BC.B.B0=HL.B.B0; + break; + case 0x4e: + // LD C,(HL) + BC.B.B0=gbReadMemory(HL.W); + break; + case 0x4f: + // LD C,A + BC.B.B0=AF.B.B1; + break; + case 0x50: + // LD D,B + DE.B.B1=BC.B.B1; + break; + case 0x51: + // LD D,C + DE.B.B1=BC.B.B0; + break; + case 0x52: + // LD D,D + DE.B.B1=DE.B.B1; + break; + case 0x53: + // LD D,E + DE.B.B1=DE.B.B0; + break; + case 0x54: + // LD D,H + DE.B.B1=HL.B.B1; + break; + case 0x55: + // LD D,L + DE.B.B1=HL.B.B0; + break; + case 0x56: + // LD D,(HL) + DE.B.B1=gbReadMemory(HL.W); + break; + case 0x57: + // LD D,A + DE.B.B1=AF.B.B1; + break; + case 0x58: + // LD E,B + DE.B.B0=BC.B.B1; + break; + case 0x59: + // LD E,C + DE.B.B0=BC.B.B0; + break; + case 0x5a: + // LD E,D + DE.B.B0=DE.B.B1; + break; + case 0x5b: + // LD E,E + DE.B.B0=DE.B.B0; + break; + case 0x5c: + // LD E,H + DE.B.B0=HL.B.B1; + break; + case 0x5d: + // LD E,L + DE.B.B0=HL.B.B0; + break; + case 0x5e: + // LD E,(HL) + DE.B.B0=gbReadMemory(HL.W); + break; + case 0x5f: + // LD E,A + DE.B.B0=AF.B.B1; + break; + case 0x60: + // LD H,B + HL.B.B1=BC.B.B1; + break; + case 0x61: + // LD H,C + HL.B.B1=BC.B.B0; + break; + case 0x62: + // LD H,D + HL.B.B1=DE.B.B1; + break; + case 0x63: + // LD H,E + HL.B.B1=DE.B.B0; + break; + case 0x64: + // LD H,H + HL.B.B1=HL.B.B1; + break; + case 0x65: + // LD H,L + HL.B.B1=HL.B.B0; + break; + case 0x66: + // LD H,(HL) + HL.B.B1=gbReadMemory(HL.W); + break; + case 0x67: + // LD H,A + HL.B.B1=AF.B.B1; + break; + case 0x68: + // LD L,B + HL.B.B0=BC.B.B1; + break; + case 0x69: + // LD L,C + HL.B.B0=BC.B.B0; + break; + case 0x6a: + // LD L,D + HL.B.B0=DE.B.B1; + break; + case 0x6b: + // LD L,E + HL.B.B0=DE.B.B0; + break; + case 0x6c: + // LD L,H + HL.B.B0=HL.B.B1; + break; + case 0x6d: + // LD L,L + HL.B.B0=HL.B.B0; + break; + case 0x6e: + // LD L,(HL) + HL.B.B0=gbReadMemory(HL.W); + break; + case 0x6f: + // LD L,A + HL.B.B0=AF.B.B1; + break; + case 0x70: + // LD (HL),B + gbWriteMemory(HL.W,BC.B.B1); + break; + case 0x71: + // LD (HL),C + gbWriteMemory(HL.W,BC.B.B0); + break; + case 0x72: + // LD (HL),D + gbWriteMemory(HL.W,DE.B.B1); + break; + case 0x73: + // LD (HL),E + gbWriteMemory(HL.W,DE.B.B0); + break; + case 0x74: + // LD (HL),H + gbWriteMemory(HL.W,HL.B.B1); + break; + case 0x75: + // LD (HL),L + gbWriteMemory(HL.W,HL.B.B0); + break; + case 0x76: + // HALT + if(IFF) + { + InHALT = TRUE; + } + else + { + InHALT = TRUE; + if(!gbCgbMode) + RepeatNextByte = TRUE; + } + break; + case 0x77: + // LD (HL),A + gbWriteMemory(HL.W,AF.B.B1); + break; + case 0x78: + // LD A,B + AF.B.B1=BC.B.B1; + break; + case 0x79: + // LD A,C + AF.B.B1=BC.B.B0; + break; + case 0x7a: + // LD A,D + AF.B.B1=DE.B.B1; + break; + case 0x7b: + // LD A,E + AF.B.B1=DE.B.B0; + break; + case 0x7c: + // LD A,H + AF.B.B1=HL.B.B1; + break; + case 0x7d: + // LD A,L + AF.B.B1=HL.B.B0; + break; + case 0x7e: + // LD A,(HL) + AF.B.B1=gbReadMemory(HL.W); + break; + case 0x7f: + // LD A,A + AF.B.B1=AF.B.B1; + break; + case 0x80: + // ADD B + tempRegister.W=AF.B.B1+BC.B.B1; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B1^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x81: + // ADD C + tempRegister.W=AF.B.B1+BC.B.B0; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B0^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x82: + // ADD D + tempRegister.W=AF.B.B1+DE.B.B1; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B1^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x83: + // ADD E + tempRegister.W=AF.B.B1+DE.B.B0; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B0^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x84: + // ADD H + tempRegister.W=AF.B.B1+HL.B.B1; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B1^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x85: + // ADD L + tempRegister.W=AF.B.B1+HL.B.B0; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B0^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x86: + // ADD (HL) + tempValue=gbReadMemory(HL.W); + tempRegister.W=AF.B.B1+tempValue; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x87: + // ADD A + tempRegister.W=AF.B.B1+AF.B.B1; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^AF.B.B1^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x88: + // ADC B: + tempRegister.W=AF.B.B1+BC.B.B1+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x89: + // ADC C + tempRegister.W=AF.B.B1+BC.B.B0+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x8a: + // ADC D + tempRegister.W=AF.B.B1+DE.B.B1+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x8b: + // ADC E + tempRegister.W=AF.B.B1+DE.B.B0+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x8c: + // ADC H + tempRegister.W=AF.B.B1+HL.B.B1+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); AF.B.B1=tempRegister.B.B0; + break; + case 0x8d: + // ADC L + tempRegister.W=AF.B.B1+HL.B.B0+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x8e: + // ADC (HL) + tempValue=gbReadMemory(HL.W); + tempRegister.W=AF.B.B1+tempValue+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x8f: + // ADC A + tempRegister.W=AF.B.B1+AF.B.B1+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^AF.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x90: + // SUB B + tempRegister.W=AF.B.B1-BC.B.B1; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x91: + // SUB C + tempRegister.W=AF.B.B1-BC.B.B0; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x92: + // SUB D + tempRegister.W=AF.B.B1-DE.B.B1; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x93: + // SUB E + tempRegister.W=AF.B.B1-DE.B.B0; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x94: + // SUB H + tempRegister.W=AF.B.B1-HL.B.B1; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x95: + // SUB L + tempRegister.W=AF.B.B1-HL.B.B0; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x96: + // SUB (HL) + tempValue=gbReadMemory(HL.W); + tempRegister.W=AF.B.B1-tempValue; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x97: + // SUB A + AF.B.B1=0; + AF.B.B0=N_FLAG|Z_FLAG; + break; + case 0x98: + // SBC B + tempRegister.W=AF.B.B1-BC.B.B1-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x99: + // SBC C + tempRegister.W=AF.B.B1-BC.B.B0-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x9a: + // SBC D + tempRegister.W=AF.B.B1-DE.B.B1-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x9b: + // SBC E + tempRegister.W=AF.B.B1-DE.B.B0-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x9c: + // SBC H + tempRegister.W=AF.B.B1-HL.B.B1-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x9d: + // SBC L + tempRegister.W=AF.B.B1-HL.B.B0-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x9e: + // SBC (HL) + tempValue=gbReadMemory(HL.W); + tempRegister.W=AF.B.B1-tempValue-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0x9f: + // SBC A + tempRegister.W=AF.B.B1-AF.B.B1-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^AF.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0xa0: + // AND B + AF.B.B1&=BC.B.B1; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa1: + // AND C + AF.B.B1&=BC.B.B0; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa2: + // AND_D + AF.B.B1&=DE.B.B1; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa3: + // AND E + AF.B.B1&=DE.B.B0; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa4: + // AND H + AF.B.B1&=HL.B.B1; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa5: + // AND L + AF.B.B1&=HL.B.B0; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa6: + // AND (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B1&=tempValue; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa7: + // AND A + AF.B.B1&=AF.B.B1; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xa8: + // XOR B + AF.B.B1^=BC.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xa9: + // XOR C + AF.B.B1^=BC.B.B0; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xaa: + // XOR D + AF.B.B1^=DE.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xab: + // XOR E + AF.B.B1^=DE.B.B0; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xac: + // XOR H + AF.B.B1^=HL.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xad: + // XOR L + AF.B.B1^=HL.B.B0; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xae: + // XOR (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B1^=tempValue; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xaf: + // XOR A + AF.B.B1=0; + AF.B.B0=Z_FLAG; + break; + case 0xb0: + // OR B + AF.B.B1|=BC.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb1: + // OR C + AF.B.B1|=BC.B.B0; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb2: + // OR D + AF.B.B1|=DE.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb3: + // OR E + AF.B.B1|=DE.B.B0; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb4: + // OR H + AF.B.B1|=HL.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb5: + // OR L + AF.B.B1|=HL.B.B0; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb6: + // OR (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B1|=tempValue; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb7: + // OR A + AF.B.B1|=AF.B.B1; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xb8: + // CP B: + tempRegister.W=AF.B.B1-BC.B.B1; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xb9: + // CP C + tempRegister.W=AF.B.B1-BC.B.B0; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^BC.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xba: + // CP D + tempRegister.W=AF.B.B1-DE.B.B1; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xbb: + // CP E + tempRegister.W=AF.B.B1-DE.B.B0; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^DE.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xbc: + // CP H + tempRegister.W=AF.B.B1-HL.B.B1; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B1^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xbd: + // CP L + tempRegister.W=AF.B.B1-HL.B.B0; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^HL.B.B0^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xbe: + // CP (HL) + tempValue=gbReadMemory(HL.W); + tempRegister.W=AF.B.B1-tempValue; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xbf: + // CP A + AF.B.B0=N_FLAG|Z_FLAG; + break; + case 0xc0: + // RET NZ + if(!(AF.B.B0&Z_FLAG)) { + PC.B.B0=gbReadMemory(SP.W++); + PC.B.B1=gbReadMemory(SP.W++); + clockTicks += 3; + } + break; + case 0xc1: + // POP BC + BC.B.B0=gbReadMemory(SP.W++); + BC.B.B1=gbReadMemory(SP.W++); + break; + case 0xc2: + // JP NZ,NNNN + if(AF.B.B0&Z_FLAG) + PC.W+=2; + else { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W); + PC.W=tempRegister.W; + clockTicks++; + } + break; + case 0xc3: + // JP NNNN + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W); + PC.W=tempRegister.W; + break; + case 0xc4: + // CALL NZ,NNNN + if(AF.B.B0&Z_FLAG) + PC.W+=2; + else { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=tempRegister.W; + clockTicks += 3; + } + break; + case 0xc5: + // PUSH BC + gbWriteMemory(--SP.W,BC.B.B1); + gbWriteMemory(--SP.W,BC.B.B0); + break; + case 0xc6: + // ADD NN + tempValue=gbReadMemory(PC.W++); + tempRegister.W=AF.B.B1+tempValue; + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10 ? H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0xc7: + // RST 00 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0000; + break; + case 0xc8: + // RET Z + if(AF.B.B0&Z_FLAG) { + PC.B.B0=gbReadMemory(SP.W++); + PC.B.B1=gbReadMemory(SP.W++); + clockTicks += 3; + } + break; + case 0xc9: + // RET + PC.B.B0=gbReadMemory(SP.W++); + PC.B.B1=gbReadMemory(SP.W++); + break; + case 0xca: + // JP Z,NNNN + if(AF.B.B0&Z_FLAG) { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W); + PC.W=tempRegister.W; + clockTicks++; + } else + PC.W+=2; + break; + // CB done outside + case 0xcc: + // CALL Z,NNNN + if(AF.B.B0&Z_FLAG) { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=tempRegister.W; + clockTicks += 3; + } else + PC.W+=2; + break; + case 0xcd: + // CALL NNNN + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=tempRegister.W; + break; + case 0xce: + // ADC NN + tempValue=gbReadMemory(PC.W++); + tempRegister.W=AF.B.B1+tempValue+(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= (tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0xcf: + // RST 08 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0008; + break; + case 0xd0: + // RET NC + if(!(AF.B.B0&C_FLAG)) { + PC.B.B0=gbReadMemory(SP.W++); + PC.B.B1=gbReadMemory(SP.W++); + clockTicks += 3; + } + break; + case 0xd1: + // POP DE + DE.B.B0=gbReadMemory(SP.W++); + DE.B.B1=gbReadMemory(SP.W++); + break; + case 0xd2: + // JP NC,NNNN + if(AF.B.B0&C_FLAG) + PC.W+=2; + else { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W); + PC.W=tempRegister.W; + clockTicks++; + } + break; + // D3 illegal + case 0xd4: + // CALL NC,NNNN + if(AF.B.B0&C_FLAG) + PC.W+=2; + else { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=tempRegister.W; + clockTicks += 3; + } + break; + case 0xd5: + // PUSH DE + gbWriteMemory(--SP.W,DE.B.B1); + gbWriteMemory(--SP.W,DE.B.B0); + break; + case 0xd6: + // SUB NN + tempValue=gbReadMemory(PC.W++); + tempRegister.W=AF.B.B1-tempValue; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0xd7: + // RST 10 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0010; + break; + case 0xd8: + // RET C + if(AF.B.B0&C_FLAG) { + PC.B.B0=gbReadMemory(SP.W++); + PC.B.B1=gbReadMemory(SP.W++); + clockTicks += 3; + } + break; + case 0xd9: + // RETI + PC.B.B0=gbReadMemory(SP.W++); + PC.B.B1=gbReadMemory(SP.W++); + IFF = TRUE; + break; + case 0xda: + // JP C,NNNN + if(AF.B.B0&C_FLAG) { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W); + PC.W=tempRegister.W; + clockTicks++; + } else + PC.W+=2; + break; + // DB illegal + case 0xdc: + // CALL C,NNNN + if(AF.B.B0&C_FLAG) { + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=tempRegister.W; + clockTicks += 3; + } else + PC.W+=2; + break; + // DD illegal + case 0xde: + // SBC NN + tempValue=gbReadMemory(PC.W++); + tempRegister.W=AF.B.B1-tempValue-(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + AF.B.B1=tempRegister.B.B0; + break; + case 0xdf: + // RST 18 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0018; + break; + case 0xe0: + // LD (FF00+NN),A + gbWriteMemory(0xff00 + gbReadMemory(PC.W++),AF.B.B1); + break; + case 0xe1: + // POP HL + HL.B.B0=gbReadMemory(SP.W++); + HL.B.B1=gbReadMemory(SP.W++); + break; + case 0xe2: + // LD (FF00+C),A + gbWriteMemory(0xff00 + BC.B.B0,AF.B.B1); + break; + // E3 illegal + // E4 illegal + case 0xe5: + // PUSH HL + gbWriteMemory(--SP.W,HL.B.B1); + gbWriteMemory(--SP.W,HL.B.B0); + break; + case 0xe6: + // AND NN + tempValue=gbReadMemory(PC.W++); + AF.B.B1&=tempValue; + AF.B.B0=H_FLAG|ZeroTable[AF.B.B1]; + break; + case 0xe7: + // RST 20 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0020; + break; + case 0xe8: + // ADD SP,NN + offset = (int8)gbReadMemory(PC.W++); + tempRegister.W = SP.W + offset; + AF.B.B0 = ((SP.W^offset^tempRegister.W)&0x100? C_FLAG : 0) | + ((SP.W^offset^tempRegister.W)& 0x10? H_FLAG : 0); + SP.W = tempRegister.W; + break; + + case 0xe9: + // LD PC,HL + PC.W=HL.W; + break; + case 0xea: + // LD (NNNN),A + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + gbWriteMemory(tempRegister.W,AF.B.B1); + break; + // EB illegal + // EC illegal + // ED illegal + case 0xee: + // XOR NN + tempValue=gbReadMemory(PC.W++); + AF.B.B1^=tempValue; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xef: + // RST 28 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0028; + break; + case 0xf0: + // LD A,(FF00+NN) + AF.B.B1 = gbReadMemory(0xff00+gbReadMemory(PC.W++)); + break; + case 0xf1: + // POP AF + AF.B.B0=gbReadMemory(SP.W++)&0xF0; + AF.B.B1=gbReadMemory(SP.W++); + break; + case 0xf2: + // LD A,(FF00+C) + AF.B.B1 = gbReadMemory(0xff00+BC.B.B0); + break; + + case 0xf3: // DI + IFF = FALSE; + EI_Delayed = FALSE; + break; + + // F4 illegal + case 0xf5: + // PUSH AF + gbWriteMemory(--SP.W,AF.B.B1); + gbWriteMemory(--SP.W,AF.B.B0); + break; + case 0xf6: + // OR NN + tempValue=gbReadMemory(PC.W++); + AF.B.B1|=tempValue; + AF.B.B0=ZeroTable[AF.B.B1]; + break; + case 0xf7: + // RST 30 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0030; + break; + case 0xf8: + // LD HL,SP+NN + offset = (int8)gbReadMemory(PC.W++); + tempRegister.W = SP.W + offset; + AF.B.B0 = ((SP.W^offset^tempRegister.W)&0x100? C_FLAG : 0) | + ((SP.W^offset^tempRegister.W)& 0x10? H_FLAG : 0); + HL.W = tempRegister.W; + break; + case 0xf9: + // LD SP,HL + SP.W=HL.W; + break; + case 0xfa: + // LD A,(NNNN) + tempRegister.B.B0=gbReadMemory(PC.W++); + tempRegister.B.B1=gbReadMemory(PC.W++); + AF.B.B1=gbReadMemory(tempRegister.W); + break; + + case 0xfb: + EI_Delayed = TRUE; + break; + + // FC illegal + // FD illegal + case 0xfe: + // CP NN + tempValue=gbReadMemory(PC.W++); + tempRegister.W=AF.B.B1-tempValue; + AF.B.B0= N_FLAG|(tempRegister.B.B1?C_FLAG:0)|ZeroTable[tempRegister.B.B0]| + ((AF.B.B1^tempValue^tempRegister.B.B0)&0x10?H_FLAG:0); + break; + case 0xff: + // RST 38 + gbWriteMemory(--SP.W,PC.B.B1); + gbWriteMemory(--SP.W,PC.B.B0); + PC.W=0x0038; + break; diff --git a/libmednahawk/src/gb/gbCodesCB.h b/libmednahawk/src/gb/gbCodesCB.h new file mode 100644 index 0000000000..3e3843df46 --- /dev/null +++ b/libmednahawk/src/gb/gbCodesCB.h @@ -0,0 +1,1284 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + default: + case 0x00: + // RLC B + AF.B.B0 = (BC.B.B1 & 0x80)?C_FLAG:0; + BC.B.B1 = (BC.B.B1<<1) | (BC.B.B1>>7); + AF.B.B0 |= ZeroTable[BC.B.B1]; + break; + case 0x01: + // RLC C + AF.B.B0 = (BC.B.B0 & 0x80)?C_FLAG:0; + BC.B.B0 = (BC.B.B0<<1) | (BC.B.B0>>7); + AF.B.B0 |= ZeroTable[BC.B.B0]; + break; + case 0x02: + // RLC D + AF.B.B0 = (DE.B.B1 & 0x80)?C_FLAG:0; + DE.B.B1 = (DE.B.B1<<1) | (DE.B.B1>>7); + AF.B.B0 |= ZeroTable[DE.B.B1]; + break; + case 0x03: + // RLC E + AF.B.B0 = (DE.B.B0 & 0x80)?C_FLAG:0; + DE.B.B0 = (DE.B.B0<<1) | (DE.B.B0>>7); + AF.B.B0 |= ZeroTable[DE.B.B0]; + break; + case 0x04: + // RLC H + AF.B.B0 = (HL.B.B1 & 0x80)?C_FLAG:0; + HL.B.B1 = (HL.B.B1<<1) | (HL.B.B1>>7); + AF.B.B0 |= ZeroTable[HL.B.B1]; + break; + case 0x05: + // RLC L + AF.B.B0 = (HL.B.B0 & 0x80)?C_FLAG:0; + HL.B.B0 = (HL.B.B0<<1) | (HL.B.B0>>7); + AF.B.B0 |= ZeroTable[HL.B.B0]; + break; + case 0x06: + // RLC (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0 = (tempValue & 0x80)?C_FLAG:0; + tempValue = (tempValue<<1) | (tempValue>>7); + AF.B.B0 |= ZeroTable[tempValue]; + gbWriteMemory(HL.W,tempValue); + break; + case 0x07: + // RLC A + AF.B.B0 = (AF.B.B1 & 0x80)?C_FLAG:0; + AF.B.B1 = (AF.B.B1<<1) | (AF.B.B1>>7); + AF.B.B0 |= ZeroTable[AF.B.B1]; + break; + case 0x08: + // RRC B + AF.B.B0=(BC.B.B1&0x01 ? C_FLAG : 0); + BC.B.B1=(BC.B.B1>>1)|(BC.B.B1<<7); + AF.B.B0|=ZeroTable[BC.B.B1]; + break; + case 0x09: + // RRC C + AF.B.B0=(BC.B.B0&0x01 ? C_FLAG : 0); + BC.B.B0=(BC.B.B0>>1)|(BC.B.B0<<7); + AF.B.B0|=ZeroTable[BC.B.B0]; + break; + case 0x0a: + // RRC D + AF.B.B0=(DE.B.B1&0x01 ? C_FLAG : 0); + DE.B.B1=(DE.B.B1>>1)|(DE.B.B1<<7); + AF.B.B0|=ZeroTable[DE.B.B1]; + break; + case 0x0b: + // RRC E + AF.B.B0=(DE.B.B0&0x01 ? C_FLAG : 0); + DE.B.B0=(DE.B.B0>>1)|(DE.B.B0<<7); + AF.B.B0|=ZeroTable[DE.B.B0]; + break; + case 0x0c: + // RRC H + AF.B.B0=(HL.B.B1&0x01 ? C_FLAG : 0); + HL.B.B1=(HL.B.B1>>1)|(HL.B.B1<<7); + AF.B.B0|=ZeroTable[HL.B.B1]; + break; + case 0x0d: + // RRC L + AF.B.B0=(HL.B.B0&0x01 ? C_FLAG : 0); + HL.B.B0=(HL.B.B0>>1)|(HL.B.B0<<7); + AF.B.B0|=ZeroTable[HL.B.B0]; + break; + case 0x0e: + // RRC (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(tempValue&0x01 ? C_FLAG : 0); + tempValue=(tempValue>>1)|(tempValue<<7); + AF.B.B0|=ZeroTable[tempValue]; + gbWriteMemory(HL.W,tempValue); + break; + case 0x0f: + // RRC A + AF.B.B0=(AF.B.B1&0x01 ? C_FLAG : 0); + AF.B.B1=(AF.B.B1>>1)|(AF.B.B1<<7); + AF.B.B0|=ZeroTable[AF.B.B1]; + break; + case 0x10: + // RL B + if(BC.B.B1&0x80) { + BC.B.B1=(BC.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[BC.B.B1]|C_FLAG; + } else { + BC.B.B1=(BC.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[BC.B.B1]; + } + break; + case 0x11: + // RL C + if(BC.B.B0&0x80) { + BC.B.B0=(BC.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[BC.B.B0]|C_FLAG; + } else { + BC.B.B0=(BC.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[BC.B.B0]; + } + break; + case 0x12: + // RL D + if(DE.B.B1&0x80) { + DE.B.B1=(DE.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[DE.B.B1]|C_FLAG; + } else { + DE.B.B1=(DE.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[DE.B.B1]; + } + break; + case 0x13: + // RL E + if(DE.B.B0&0x80) { + DE.B.B0=(DE.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[DE.B.B0]|C_FLAG; + } else { + DE.B.B0=(DE.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[DE.B.B0]; + } + break; + case 0x14: + // RL H + if(HL.B.B1&0x80) { + HL.B.B1=(HL.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[HL.B.B1]|C_FLAG; + } else { + HL.B.B1=(HL.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[HL.B.B1]; + } + break; + case 0x15: + // RL L + if(HL.B.B0&0x80) { + HL.B.B0=(HL.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[HL.B.B0]|C_FLAG; + } else { + HL.B.B0=(HL.B.B0<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[HL.B.B0]; + } + break; + case 0x16: + // RL (HL) + tempValue=gbReadMemory(HL.W); + if(tempValue&0x80) { + tempValue=(tempValue<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[tempValue]|C_FLAG; + } else { + tempValue=(tempValue<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[tempValue]; + } + gbWriteMemory(HL.W,tempValue); + break; + case 0x17: + // RL A + if(AF.B.B1&0x80) { + AF.B.B1=(AF.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[AF.B.B1]|C_FLAG; + } else { + AF.B.B1=(AF.B.B1<<1)|(AF.B.B0&C_FLAG ? 1 : 0); + AF.B.B0=ZeroTable[AF.B.B1]; + } + break; + case 0x18: + // RR B + if(BC.B.B1&0x01) { + BC.B.B1=(BC.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[BC.B.B1]|C_FLAG; + } else { + BC.B.B1=(BC.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[BC.B.B1]; + } + break; + case 0x19: + // RR C + if(BC.B.B0&0x01) { + BC.B.B0=(BC.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[BC.B.B0]|C_FLAG; + } else { + BC.B.B0=(BC.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[BC.B.B0]; + } + break; + case 0x1a: + // RR D + if(DE.B.B1&0x01) { + DE.B.B1=(DE.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[DE.B.B1]|C_FLAG; + } else { + DE.B.B1=(DE.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[DE.B.B1]; + } + break; + case 0x1b: + // RR E + if(DE.B.B0&0x01) { + DE.B.B0=(DE.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[DE.B.B0]|C_FLAG; + } else { + DE.B.B0=(DE.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[DE.B.B0]; + } + break; + case 0x1c: + // RR H + if(HL.B.B1&0x01) { + HL.B.B1=(HL.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[HL.B.B1]|C_FLAG; + } else { + HL.B.B1=(HL.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[HL.B.B1]; + } + break; + case 0x1d: + // RR L + if(HL.B.B0&0x01) { + HL.B.B0=(HL.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[HL.B.B0]|C_FLAG; + } else { + HL.B.B0=(HL.B.B0>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[HL.B.B0]; + } + break; + case 0x1e: + // RR (HL) + tempValue=gbReadMemory(HL.W); + if(tempValue&0x01) { + tempValue=(tempValue>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[tempValue]|C_FLAG; + } else { + tempValue=(tempValue>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[tempValue]; + } + gbWriteMemory(HL.W,tempValue); + break; + case 0x1f: + // RR A + if(AF.B.B1&0x01) { + AF.B.B1=(AF.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[AF.B.B1]|C_FLAG; + } else { + AF.B.B1=(AF.B.B1>>1)|(AF.B.B0 & C_FLAG ? 0x80:0); + AF.B.B0=ZeroTable[AF.B.B1]; + } + break; + case 0x20: + // SLA B + AF.B.B0=(BC.B.B1&0x80?C_FLAG : 0); + BC.B.B1<<=1; + AF.B.B0|=ZeroTable[BC.B.B1]; + break; + case 0x21: + // SLA C + AF.B.B0=(BC.B.B0&0x80?C_FLAG : 0); + BC.B.B0<<=1; + AF.B.B0|=ZeroTable[BC.B.B0]; + break; + case 0x22: + // SLA D + AF.B.B0=(DE.B.B1&0x80?C_FLAG : 0); + DE.B.B1<<=1; + AF.B.B0|=ZeroTable[DE.B.B1]; + break; + case 0x23: + // SLA E + AF.B.B0=(DE.B.B0&0x80?C_FLAG : 0); + DE.B.B0<<=1; + AF.B.B0|=ZeroTable[DE.B.B0]; + break; + case 0x24: + // SLA H + AF.B.B0=(HL.B.B1&0x80?C_FLAG : 0); + HL.B.B1<<=1; + AF.B.B0|=ZeroTable[HL.B.B1]; + break; + case 0x25: + // SLA L + AF.B.B0=(HL.B.B0&0x80?C_FLAG : 0); + HL.B.B0<<=1; + AF.B.B0|=ZeroTable[HL.B.B0]; + break; + case 0x26: + // SLA (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(tempValue&0x80?C_FLAG : 0); + tempValue<<=1; + AF.B.B0|=ZeroTable[tempValue]; + gbWriteMemory(HL.W,tempValue); + break; + case 0x27: + // SLA A + AF.B.B0=(AF.B.B1&0x80?C_FLAG : 0); + AF.B.B1<<=1; + AF.B.B0|=ZeroTable[AF.B.B1]; + break; + case 0x28: + // SRA B + AF.B.B0=(BC.B.B1&0x01 ? C_FLAG: 0); + BC.B.B1=(BC.B.B1>>1)|(BC.B.B1&0x80); + AF.B.B0|=ZeroTable[BC.B.B1]; + break; + case 0x29: + // SRA C + AF.B.B0=(BC.B.B0&0x01 ? C_FLAG: 0); + BC.B.B0=(BC.B.B0>>1)|(BC.B.B0&0x80); + AF.B.B0|=ZeroTable[BC.B.B0]; + break; + case 0x2a: + // SRA D + AF.B.B0=(DE.B.B1&0x01 ? C_FLAG: 0); + DE.B.B1=(DE.B.B1>>1)|(DE.B.B1&0x80); + AF.B.B0|=ZeroTable[DE.B.B1]; + break; + case 0x2b: + // SRA E + AF.B.B0=(DE.B.B0&0x01 ? C_FLAG: 0); + DE.B.B0=(DE.B.B0>>1)|(DE.B.B0&0x80); + AF.B.B0|=ZeroTable[DE.B.B0]; + break; + case 0x2c: + // SRA H + AF.B.B0=(HL.B.B1&0x01 ? C_FLAG: 0); + HL.B.B1=(HL.B.B1>>1)|(HL.B.B1&0x80); + AF.B.B0|=ZeroTable[HL.B.B1]; + break; + case 0x2d: + // SRA L + AF.B.B0=(HL.B.B0&0x01 ? C_FLAG: 0); + HL.B.B0=(HL.B.B0>>1)|(HL.B.B0&0x80); + AF.B.B0|=ZeroTable[HL.B.B0]; + break; + case 0x2e: + // SRA (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(tempValue&0x01 ? C_FLAG: 0); + tempValue=(tempValue>>1)|(tempValue&0x80); + AF.B.B0|=ZeroTable[tempValue]; + gbWriteMemory(HL.W,tempValue); + break; + case 0x2f: + // SRA A + AF.B.B0=(AF.B.B1&0x01 ? C_FLAG: 0); + AF.B.B1=(AF.B.B1>>1)|(AF.B.B1&0x80); + AF.B.B0|=ZeroTable[AF.B.B1]; + break; + case 0x30: + // SWAP B + BC.B.B1 = (BC.B.B1&0xf0)>>4 | (BC.B.B1&0x0f)<<4; + AF.B.B0 = ZeroTable[BC.B.B1]; + break; + case 0x31: + // SWAP C + BC.B.B0 = (BC.B.B0&0xf0)>>4 | (BC.B.B0&0x0f)<<4; + AF.B.B0 = ZeroTable[BC.B.B0]; + break; + case 0x32: + // SWAP D + DE.B.B1 = (DE.B.B1&0xf0)>>4 | (DE.B.B1&0x0f)<<4; + AF.B.B0 = ZeroTable[DE.B.B1]; + break; + case 0x33: + // SWAP E + DE.B.B0 = (DE.B.B0&0xf0)>>4 | (DE.B.B0&0x0f)<<4; + AF.B.B0 = ZeroTable[DE.B.B0]; + break; + case 0x34: + // SWAP H + HL.B.B1 = (HL.B.B1&0xf0)>>4 | (HL.B.B1&0x0f)<<4; + AF.B.B0 = ZeroTable[HL.B.B1]; + break; + case 0x35: + // SWAP L + HL.B.B0 = (HL.B.B0&0xf0)>>4 | (HL.B.B0&0x0f)<<4; + AF.B.B0 = ZeroTable[HL.B.B0]; + break; + case 0x36: + // SWAP (HL) + tempValue=gbReadMemory(HL.W); + tempValue = (tempValue&0xf0)>>4 | (tempValue&0x0f)<<4; + AF.B.B0 = ZeroTable[tempValue]; + gbWriteMemory(HL.W,tempValue); + break; + case 0x37: + // SWAP A + AF.B.B1 = (AF.B.B1&0xf0)>>4 | (AF.B.B1&0x0f)<<4; + AF.B.B0 = ZeroTable[AF.B.B1]; + break; + case 0x38: + // SRL B + AF.B.B0=(BC.B.B1&0x01)?C_FLAG:0; + BC.B.B1>>=1; + AF.B.B0|=ZeroTable[BC.B.B1]; + break; + case 0x39: + // SRL C + AF.B.B0=(BC.B.B0&0x01)?C_FLAG:0; + BC.B.B0>>=1; + AF.B.B0|=ZeroTable[BC.B.B0]; + break; + case 0x3a: + // SRL D + AF.B.B0=(DE.B.B1&0x01)?C_FLAG:0; + DE.B.B1>>=1; + AF.B.B0|=ZeroTable[DE.B.B1]; + break; + case 0x3b: + // SRL E + AF.B.B0=(DE.B.B0&0x01)?C_FLAG:0; + DE.B.B0>>=1; + AF.B.B0|=ZeroTable[DE.B.B0]; + break; + case 0x3c: + // SRL H + AF.B.B0=(HL.B.B1&0x01)?C_FLAG:0; + HL.B.B1>>=1; + AF.B.B0|=ZeroTable[HL.B.B1]; + break; + case 0x3d: + // SRL L + AF.B.B0=(HL.B.B0&0x01)?C_FLAG:0; + HL.B.B0>>=1; + AF.B.B0|=ZeroTable[HL.B.B0]; + break; + case 0x3e: + // SRL (HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(tempValue&0x01)?C_FLAG:0; + tempValue>>=1; + AF.B.B0|=ZeroTable[tempValue]; + gbWriteMemory(HL.W,tempValue); + break; + case 0x3f: + // SRL A + AF.B.B0=(AF.B.B1&0x01)?C_FLAG:0; + AF.B.B1>>=1; + AF.B.B0|=ZeroTable[AF.B.B1]; + break; + case 0x40: + // BIT 0,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<0)? 0:Z_FLAG); + break; + case 0x41: + // BIT 0,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<0)? 0:Z_FLAG); + break; + case 0x42: + // BIT 0,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<0)? 0:Z_FLAG); + break; + case 0x43: + // BIT 0,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<0)? 0:Z_FLAG); + break; + case 0x44: + // BIT 0,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<0)? 0:Z_FLAG); + break; + case 0x45: + // BIT 0,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<0)? 0:Z_FLAG); + break; + case 0x46: + // BIT 0,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<0)? 0:Z_FLAG); + break; + case 0x47: + // BIT 0,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<0)? 0:Z_FLAG); + break; + case 0x48: + // BIT 1,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<1)? 0:Z_FLAG); + break; + case 0x49: + // BIT 1,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<1)? 0:Z_FLAG); + break; + case 0x4a: + // BIT 1,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<1)? 0:Z_FLAG); + break; + case 0x4b: + // BIT 1,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<1)? 0:Z_FLAG); + break; + case 0x4c: + // BIT 1,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<1)? 0:Z_FLAG); + break; + case 0x4d: + // BIT 1,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<1)? 0:Z_FLAG); + break; + case 0x4e: + // BIT 1,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<1)? 0:Z_FLAG); + break; + case 0x4f: + // BIT 1,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<1)? 0:Z_FLAG); + break; + case 0x50: + // BIT 2,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<2)? 0:Z_FLAG); + break; + case 0x51: + // BIT 2,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<2)? 0:Z_FLAG); + break; + case 0x52: + // BIT 2,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<2)? 0:Z_FLAG); + break; + case 0x53: + // BIT 2,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<2)? 0:Z_FLAG); + break; + case 0x54: + // BIT 2,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<2)? 0:Z_FLAG); + break; + case 0x55: + // BIT 2,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<2)? 0:Z_FLAG); + break; + case 0x56: + // BIT 2,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<2)? 0:Z_FLAG); + break; + case 0x57: + // BIT 2,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<2)? 0:Z_FLAG); + break; + case 0x58: + // BIT 3,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<3)? 0:Z_FLAG); + break; + case 0x59: + // BIT 3,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<3)? 0:Z_FLAG); + break; + case 0x5a: + // BIT 3,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<3)? 0:Z_FLAG); + break; + case 0x5b: + // BIT 3,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<3)? 0:Z_FLAG); + break; + case 0x5c: + // BIT 3,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<3)? 0:Z_FLAG); + break; + case 0x5d: + // BIT 3,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<3)? 0:Z_FLAG); + break; + case 0x5e: + // BIT 3,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<3)? 0:Z_FLAG); + break; + case 0x5f: + // BIT 3,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<3)? 0:Z_FLAG); + break; + case 0x60: + // BIT 4,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<4)? 0:Z_FLAG); + break; + case 0x61: + // BIT 4,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<4)? 0:Z_FLAG); + break; + case 0x62: + // BIT 4,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<4)? 0:Z_FLAG); + break; + case 0x63: + // BIT 4,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<4)? 0:Z_FLAG); + break; + case 0x64: + // BIT 4,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<4)? 0:Z_FLAG); + break; + case 0x65: + // BIT 4,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<4)? 0:Z_FLAG); + break; + case 0x66: + // BIT 4,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<4)? 0:Z_FLAG); + break; + case 0x67: + // BIT 4,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<4)? 0:Z_FLAG); + break; + case 0x68: + // BIT 5,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<5)? 0:Z_FLAG); + break; + case 0x69: + // BIT 5,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<5)? 0:Z_FLAG); + break; + case 0x6a: + // BIT 5,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<5)? 0:Z_FLAG); + break; + case 0x6b: + // BIT 5,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<5)? 0:Z_FLAG); + break; + case 0x6c: + // BIT 5,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<5)? 0:Z_FLAG); + break; + case 0x6d: + // BIT 5,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<5)? 0:Z_FLAG); + break; + case 0x6e: + // BIT 5,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<5)? 0:Z_FLAG); + break; + case 0x6f: + // BIT 5,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<5)? 0:Z_FLAG); + break; + case 0x70: + // BIT 6,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<6)? 0:Z_FLAG); + break; + case 0x71: + // BIT 6,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<6)? 0:Z_FLAG); + break; + case 0x72: + // BIT 6,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<6)? 0:Z_FLAG); + break; + case 0x73: + // BIT 6,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<6)? 0:Z_FLAG); + break; + case 0x74: + // BIT 6,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<6)? 0:Z_FLAG); + break; + case 0x75: + // BIT 6,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<6)? 0:Z_FLAG); + break; + case 0x76: + // BIT 6,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<6)? 0:Z_FLAG); + break; + case 0x77: + // BIT 6,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<6)? 0:Z_FLAG); + break; + case 0x78: + // BIT 7,B + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B1&(1<<7)? 0:Z_FLAG); + break; + case 0x79: + // BIT 7,C + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(BC.B.B0&(1<<7)? 0:Z_FLAG); + break; + case 0x7a: + // BIT 7,D + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B1&(1<<7)? 0:Z_FLAG); + break; + case 0x7b: + // BIT 7,E + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(DE.B.B0&(1<<7)? 0:Z_FLAG); + break; + case 0x7c: + // BIT 7,H + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B1&(1<<7)? 0:Z_FLAG); + break; + case 0x7d: + // BIT 7,L + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(HL.B.B0&(1<<7)? 0:Z_FLAG); + break; + case 0x7e: + // BIT 7,(HL) + tempValue=gbReadMemory(HL.W); + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(tempValue&(1<<7)? 0:Z_FLAG); + break; + case 0x7f: + // BIT 7,A + AF.B.B0=(AF.B.B0&C_FLAG)|H_FLAG|(AF.B.B1&(1<<7)? 0:Z_FLAG); + break; + case 0x80: + // RES 0,B + BC.B.B1&=~(1<<0); + break; + case 0x81: + // RES 0,C + BC.B.B0&=~(1<<0); + break; + case 0x82: + // RES 0,D + DE.B.B1&=~(1<<0); + break; + case 0x83: + // RES 0,E + DE.B.B0&=~(1<<0); + break; + case 0x84: + // RES 0,H + HL.B.B1&=~(1<<0); + break; + case 0x85: + // RES 0,L + HL.B.B0&=~(1<<0); + break; + case 0x86: + // RES 0,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<0); + gbWriteMemory(HL.W,tempValue); + break; + case 0x87: + // RES 0,A + AF.B.B1&=~(1<<0); + break; + case 0x88: + // RES 1,B + BC.B.B1&=~(1<<1); + break; + case 0x89: + // RES 1,C + BC.B.B0&=~(1<<1); + break; + case 0x8a: + // RES 1,D + DE.B.B1&=~(1<<1); + break; + case 0x8b: + // RES 1,E + DE.B.B0&=~(1<<1); + break; + case 0x8c: + // RES 1,H + HL.B.B1&=~(1<<1); + break; + case 0x8d: + // RES 1,L + HL.B.B0&=~(1<<1); + break; + case 0x8e: + // RES 1,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<1); + gbWriteMemory(HL.W,tempValue); + break; + case 0x8f: + // RES 1,A + AF.B.B1&=~(1<<1); + break; + case 0x90: + // RES 2,B + BC.B.B1&=~(1<<2); + break; + case 0x91: + // RES 2,C + BC.B.B0&=~(1<<2); + break; + case 0x92: + // RES 2,D + DE.B.B1&=~(1<<2); + break; + case 0x93: + // RES 2,E + DE.B.B0&=~(1<<2); + break; + case 0x94: + // RES 2,H + HL.B.B1&=~(1<<2); + break; + case 0x95: + // RES 2,L + HL.B.B0&=~(1<<2); + break; + case 0x96: + // RES 2,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<2); + gbWriteMemory(HL.W,tempValue); + break; + case 0x97: + // RES 2,A + AF.B.B1&=~(1<<2); + break; + case 0x98: + // RES 3,B + BC.B.B1&=~(1<<3); + break; + case 0x99: + // RES 3,C + BC.B.B0&=~(1<<3); + break; + case 0x9a: + // RES 3,D + DE.B.B1&=~(1<<3); + break; + case 0x9b: + // RES 3,E + DE.B.B0&=~(1<<3); + break; + case 0x9c: + // RES 3,H + HL.B.B1&=~(1<<3); + break; + case 0x9d: + // RES 3,L + HL.B.B0&=~(1<<3); + break; + case 0x9e: + // RES 3,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<3); + gbWriteMemory(HL.W,tempValue); + break; + case 0x9f: + // RES 3,A + AF.B.B1&=~(1<<3); + break; + case 0xa0: + // RES 4,B + BC.B.B1&=~(1<<4); + break; + case 0xa1: + // RES 4,C + BC.B.B0&=~(1<<4); + break; + case 0xa2: + // RES 4,D + DE.B.B1&=~(1<<4); + break; + case 0xa3: + // RES 4,E + DE.B.B0&=~(1<<4); + break; + case 0xa4: + // RES 4,H + HL.B.B1&=~(1<<4); + break; + case 0xa5: + // RES 4,L + HL.B.B0&=~(1<<4); + break; + case 0xa6: + // RES 4,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<4); + gbWriteMemory(HL.W,tempValue); + break; + case 0xa7: + // RES 4,A + AF.B.B1&=~(1<<4); + break; + case 0xa8: + // RES 5,B + BC.B.B1&=~(1<<5); + break; + case 0xa9: + // RES 5,C + BC.B.B0&=~(1<<5); + break; + case 0xaa: + // RES 5,D + DE.B.B1&=~(1<<5); + break; + case 0xab: + // RES 5,E + DE.B.B0&=~(1<<5); + break; + case 0xac: + // RES 5,H + HL.B.B1&=~(1<<5); + break; + case 0xad: + // RES 5,L + HL.B.B0&=~(1<<5); + break; + case 0xae: + // RES 5,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<5); + gbWriteMemory(HL.W,tempValue); + break; + case 0xaf: + // RES 5,A + AF.B.B1&=~(1<<5); + break; + case 0xb0: + // RES 6,B + BC.B.B1&=~(1<<6); + break; + case 0xb1: + // RES 6,C + BC.B.B0&=~(1<<6); + break; + case 0xb2: + // RES 6,D + DE.B.B1&=~(1<<6); + break; + case 0xb3: + // RES 6,E + DE.B.B0&=~(1<<6); + break; + case 0xb4: + // RES 6,H + HL.B.B1&=~(1<<6); + break; + case 0xb5: + // RES 6,L + HL.B.B0&=~(1<<6); + break; + case 0xb6: + // RES 6,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<6); + gbWriteMemory(HL.W,tempValue); + break; + case 0xb7: + // RES 6,A + AF.B.B1&=~(1<<6); + break; + case 0xb8: + // RES 7,B + BC.B.B1&=~(1<<7); + break; + case 0xb9: + // RES 7,C + BC.B.B0&=~(1<<7); + break; + case 0xba: + // RES 7,D + DE.B.B1&=~(1<<7); + break; + case 0xbb: + // RES 7,E + DE.B.B0&=~(1<<7); + break; + case 0xbc: + // RES 7,H + HL.B.B1&=~(1<<7); + break; + case 0xbd: + // RES 7,L + HL.B.B0&=~(1<<7); + break; + case 0xbe: + // RES 7,(HL) + tempValue=gbReadMemory(HL.W); + tempValue&=~(1<<7); + gbWriteMemory(HL.W,tempValue); + break; + case 0xbf: + // RES 7,A + AF.B.B1&=~(1<<7); + break; + case 0xc0: + // SET 0,B + BC.B.B1|=1<<0; + break; + case 0xc1: + // SET 0,C + BC.B.B0|=1<<0; + break; + case 0xc2: + // SET 0,D + DE.B.B1|=1<<0; + break; + case 0xc3: + // SET 0,E + DE.B.B0|=1<<0; + break; + case 0xc4: + // SET 0,H + HL.B.B1|=1<<0; + break; + case 0xc5: + // SET 0,L + HL.B.B0|=1<<0; + break; + case 0xc6: + // SET 0,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<0; + gbWriteMemory(HL.W,tempValue); + break; + case 0xc7: + // SET 0,A + AF.B.B1|=1<<0; + break; + case 0xc8: + // SET 1,B + BC.B.B1|=1<<1; + break; + case 0xc9: + // SET 1,C + BC.B.B0|=1<<1; + break; + case 0xca: + // SET 1,D + DE.B.B1|=1<<1; + break; + case 0xcb: + // SET 1,E + DE.B.B0|=1<<1; + break; + case 0xcc: + // SET 1,H + HL.B.B1|=1<<1; + break; + case 0xcd: + // SET 1,L + HL.B.B0|=1<<1; + break; + case 0xce: + // SET 1,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<1; + gbWriteMemory(HL.W,tempValue); + break; + case 0xcf: + // SET 1,A + AF.B.B1|=1<<1; + break; + case 0xd0: + // SET 2,B + BC.B.B1|=1<<2; + break; + case 0xd1: + // SET 2,C + BC.B.B0|=1<<2; + break; + case 0xd2: + // SET 2,D + DE.B.B1|=1<<2; + break; + case 0xd3: + // SET 2,E + DE.B.B0|=1<<2; + break; + case 0xd4: + // SET 2,H + HL.B.B1|=1<<2; + break; + case 0xd5: + // SET 2,L + HL.B.B0|=1<<2; + break; + case 0xd6: + // SET 2,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<2; + gbWriteMemory(HL.W,tempValue); + break; + case 0xd7: + // SET 2,A + AF.B.B1|=1<<2; + break; + case 0xd8: + // SET 3,B + BC.B.B1|=1<<3; + break; + case 0xd9: + // SET 3,C + BC.B.B0|=1<<3; + break; + case 0xda: + // SET 3,D + DE.B.B1|=1<<3; + break; + case 0xdb: + // SET 3,E + DE.B.B0|=1<<3; + break; + case 0xdc: + // SET 3,H + HL.B.B1|=1<<3; + break; + case 0xdd: + // SET 3,L + HL.B.B0|=1<<3; + break; + case 0xde: + // SET 3,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<3; + gbWriteMemory(HL.W,tempValue); + break; + case 0xdf: + // SET 3,A + AF.B.B1|=1<<3; + break; + case 0xe0: + // SET 4,B + BC.B.B1|=1<<4; + break; + case 0xe1: + // SET 4,C + BC.B.B0|=1<<4; + break; + case 0xe2: + // SET 4,D + DE.B.B1|=1<<4; + break; + case 0xe3: + // SET 4,E + DE.B.B0|=1<<4; + break; + case 0xe4: + // SET 4,H + HL.B.B1|=1<<4; + break; + case 0xe5: + // SET 4,L + HL.B.B0|=1<<4; + break; + case 0xe6: + // SET 4,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<4; + gbWriteMemory(HL.W,tempValue); + break; + case 0xe7: + // SET 4,A + AF.B.B1|=1<<4; + break; + case 0xe8: + // SET 5,B + BC.B.B1|=1<<5; + break; + case 0xe9: + // SET 5,C + BC.B.B0|=1<<5; + break; + case 0xea: + // SET 5,D + DE.B.B1|=1<<5; + break; + case 0xeb: + // SET 5,E + DE.B.B0|=1<<5; + break; + case 0xec: + // SET 5,H + HL.B.B1|=1<<5; + break; + case 0xed: + // SET 5,L + HL.B.B0|=1<<5; + break; + case 0xee: + // SET 5,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<5; + gbWriteMemory(HL.W,tempValue); + break; + case 0xef: + // SET 5,A + AF.B.B1|=1<<5; + break; + case 0xf0: + // SET 6,B + BC.B.B1|=1<<6; + break; + case 0xf1: + // SET 6,C + BC.B.B0|=1<<6; + break; + case 0xf2: + // SET 6,D + DE.B.B1|=1<<6; + break; + case 0xf3: + // SET 6,E + DE.B.B0|=1<<6; + break; + case 0xf4: + // SET 6,H + HL.B.B1|=1<<6; + break; + case 0xf5: + // SET 6,L + HL.B.B0|=1<<6; + break; + case 0xf6: + // SET 6,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<6; + gbWriteMemory(HL.W,tempValue); + break; + case 0xf7: + // SET 6,A + AF.B.B1|=1<<6; + break; + case 0xf8: + // SET 7,B + BC.B.B1|=1<<7; + break; + case 0xf9: + // SET 7,C + BC.B.B0|=1<<7; + break; + case 0xfa: + // SET 7,D + DE.B.B1|=1<<7; + break; + case 0xfb: + // SET 7,E + DE.B.B0|=1<<7; + break; + case 0xfc: + // SET 7,H + HL.B.B1|=1<<7; + break; + case 0xfd: + // SET 7,L + HL.B.B0|=1<<7; + break; + case 0xfe: + // SET 7,(HL) + tempValue=gbReadMemory(HL.W); + tempValue|=1<<7; + gbWriteMemory(HL.W,tempValue); + break; + case 0xff: + // SET 7,A + AF.B.B1|=1<<7; + break; diff --git a/libmednahawk/src/gb/gbGlobals.cpp b/libmednahawk/src/gb/gbGlobals.cpp new file mode 100644 index 0000000000..58cd78fbe9 --- /dev/null +++ b/libmednahawk/src/gb/gbGlobals.cpp @@ -0,0 +1,51 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "../mednafen.h" + +namespace MDFN_IEN_GB +{ + +uint8 *gbMemoryMap[16]; + +int gbRomSizeMask = 0; +int gbRomSize = 0; +int gbRamSizeMask = 0; +int gbRamSize = 0; + +uint8 *gbVram = NULL; +uint8 *gbRom = NULL; +uint8 *gbRam = NULL; +uint8 *gbWram = NULL; +uint16 *gbLineBuffer = NULL; + +uint16 gbPalette[128]; +uint8 gbBgp[4] = { 0, 1, 2, 3}; +uint8 gbObp0[4] = { 0, 1, 2, 3}; +uint8 gbObp1[4] = { 0, 1, 2, 3}; +int gbWindowLine = -1; + +int gbCgbMode = 0; + +int gbPaletteOption = 0; +int gbEmulatorType = 0; +int gbDmaTicks = 0; + +uint8 (*gbSerialFunction)(uint8) = NULL; + +} diff --git a/libmednahawk/src/gb/gbGlobals.h b/libmednahawk/src/gb/gbGlobals.h new file mode 100644 index 0000000000..5ba4b040e4 --- /dev/null +++ b/libmednahawk/src/gb/gbGlobals.h @@ -0,0 +1,66 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +namespace MDFN_IEN_GB +{ + +extern int gbRomSizeMask; +extern int gbRomSize; +extern int gbRamSize; +extern int gbRamSizeMask; + +extern uint8 *gbRom; +extern uint8 *gbRam; +extern uint8 *gbVram; +extern uint8 *gbWram; +extern uint16 *gbLineBuffer; + +extern uint8 *gbMemoryMap[16]; + +extern int gbFrameSkip; +extern int gbPaletteOption; +extern int gbEmulatorType; +extern int gbCgbMode; +extern int gbSgbMode; +extern int gbWindowLine; +extern int gbSpeed; +extern uint8 gbBgp[4]; +extern uint8 gbObp0[4]; +extern uint8 gbObp1[4]; +extern uint16 gbPalette[128]; + +extern uint8 register_LCDC; +extern uint8 register_LY; +extern uint8 register_SCY; +extern uint8 register_SCX; +extern uint8 register_WY; +extern uint8 register_WX; +extern uint8 register_VBK; + +extern int emulating; + +extern int gbDmaTicks; + +extern void gbRenderLine(); +extern void gbDrawSprites(); + +extern uint32 gblayerSettings; +extern uint8 (*gbSerialFunction)(uint8); + +} diff --git a/libmednahawk/src/gb/gfx.cpp b/libmednahawk/src/gb/gfx.cpp new file mode 100644 index 0000000000..176d715aeb --- /dev/null +++ b/libmednahawk/src/gb/gfx.cpp @@ -0,0 +1,479 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "../mednafen.h" +#include + +#include "gbGlobals.h" +#include "gb.h" + +namespace MDFN_IEN_GB +{ + +static const uint8 gbInvertTab[256] = +{ + 0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0, + 0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0, + 0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8, + 0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8, + 0x04,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4, + 0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4, + 0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec, + 0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc, + 0x02,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2, + 0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2, + 0x0a,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea, + 0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa, + 0x06,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6, + 0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6, + 0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee, + 0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe, + 0x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1, + 0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1, + 0x09,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9, + 0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9, + 0x05,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5, + 0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5, + 0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed, + 0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd, + 0x03,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3, + 0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3, + 0x0b,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb, + 0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb, + 0x07,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7, + 0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7, + 0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef, + 0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff +}; + +uint16 gbLineMix[160]; + +void gbRenderLine() +{ + uint8 * bank0; + uint8 * bank1; + + if(gbCgbMode) { + bank0 = &gbVram[0x0000]; + bank1 = &gbVram[0x2000]; + } else { + bank0 = &gbVram[0x0000]; + bank1 = NULL; + } + + int tile_map = 0x1800; + if((register_LCDC & 8) != 0) + tile_map = 0x1c00; + + int tile_pattern = 0x0800; + + if((register_LCDC & 16) != 0) + tile_pattern = 0x0000; + + int x = 0; + int y = register_LY; + + if(y >= 144) + return; + + int sx = register_SCX; + int sy = register_SCY; + + sy+=y; + + sy &= 255; + + int tx = sx >> 3; + int ty = sy >> 3; + + int bx = 1 << (7 - (sx & 7)); + int by = sy & 7; + + int tile_map_line_y = tile_map + ty * 32; + + int tile_map_address = tile_map_line_y + tx; + + uint8 attrs = 0; + if(bank1 != NULL) + attrs = bank1[tile_map_address]; + + uint8 tile = bank0[tile_map_address]; + + tile_map_address++; + + if((register_LCDC & 16) == 0) { + if(tile < 128) tile += 128; + else tile -= 128; + } + + int tile_pattern_address = tile_pattern + tile * 16 + by*2; + + if(register_LCDC & 0x80) + { + if((register_LCDC & 0x01 || gbCgbMode) && (gblayerSettings & 0x01)) + { + while(x < 160) { + uint8 tile_a = 0; + uint8 tile_b = 0; + + if(attrs & 0x40) { + tile_pattern_address = tile_pattern + tile * 16 + (7-by)*2; + } + + if(attrs & 0x08) { + tile_a = bank1[tile_pattern_address++]; + tile_b = bank1[tile_pattern_address]; + } else { + tile_a = bank0[tile_pattern_address++]; + tile_b = bank0[tile_pattern_address]; + } + + if(attrs & 0x20) { + tile_a = gbInvertTab[tile_a]; + tile_b = gbInvertTab[tile_b]; + } + + while(bx > 0) { + uint8 c = (tile_a & bx) ? 1 : 0; + c += ((tile_b & bx) ? 2 : 0); + + gbLineBuffer[x] = c; // mark the gbLineBuffer color + + if(attrs & 0x80) + gbLineBuffer[x] |= 0x300; + + if(gbCgbMode) + { + c = c + (attrs & 7)*4; + gbLineMix[x] = gbPalette[c]; + } + else + { + gbLineMix[x] = gbBgp[c]; + } + + x++; + if(x >= 160) + break; + bx >>= 1; + } + tx++; + if(tx == 32) + tx = 0; + bx = 128; + + if(bank1) + attrs = bank1[tile_map_line_y + tx]; + + tile = bank0[tile_map_line_y + tx]; + + if((register_LCDC & 16) == 0) { + if(tile < 128) tile += 128; + else tile -= 128; + } + tile_pattern_address = tile_pattern + tile * 16 + by * 2; + } + } + else + { + int fill_color = gbCgbMode ? gbPalette[0] : 0; + + for(int i = 0; i < 160; i++) + { + gbLineMix[i] = fill_color; + gbLineBuffer[i] = 0; + } + } + + // do the window display + if((register_LCDC & 0x20) && (gblayerSettings & 0x02)) { + int wy = register_WY; + + if(y >= wy) { + int wx = register_WX; + wx -= 7; + + if( wx <= 159 && gbWindowLine <= 143) { + + tile_map = 0x1800; + + if((register_LCDC & 0x40) != 0) + tile_map = 0x1c00; + + if(gbWindowLine == -1) { + gbWindowLine = 0; + } + + tx = 0; + ty = gbWindowLine >> 3; + + bx = 128; + by = gbWindowLine & 7; + + if(wx < 0) { + bx >>= (-wx); + wx = 0; + } + + tile_map_line_y = tile_map + ty * 32; + + tile_map_address = tile_map_line_y + tx; + + x = wx; + + tile = bank0[tile_map_address]; + + attrs = 0; + + if(bank1) + attrs = bank1[tile_map_address]; + tile_map_address++; + + if((register_LCDC & 16) == 0) { + if(tile < 128) tile += 128; + else tile -= 128; + } + + tile_pattern_address = tile_pattern + tile * 16 + by*2; + + while(x < 160) { + uint8 tile_a = 0; + uint8 tile_b = 0; + + if(attrs & 0x40) { + tile_pattern_address = tile_pattern + tile * 16 + (7-by)*2; + } + + if(attrs & 0x08) { + tile_a = bank1[tile_pattern_address++]; + tile_b = bank1[tile_pattern_address]; + } else { + tile_a = bank0[tile_pattern_address++]; + tile_b = bank0[tile_pattern_address]; + } + + if(attrs & 0x20) { + tile_a = gbInvertTab[tile_a]; + tile_b = gbInvertTab[tile_b]; + } + + while(bx > 0) { + uint8 c = (tile_a & bx) != 0 ? 1 : 0; + c += ((tile_b & bx) != 0 ? 2 : 0); + + if(attrs & 0x80) + gbLineBuffer[x] = 0x300 + c; + else + gbLineBuffer[x] = 0x100 + c; + + if(gbCgbMode) + { + c = c + (attrs & 7) * 4; + gbLineMix[x] = gbPalette[c]; + } + else + { + gbLineMix[x] = gbBgp[c]; + } + + x++; + if(x >= 160) + break; + bx >>= 1; + } + tx++; + if(tx == 32) + tx = 0; + bx = 128; + tile = bank0[tile_map_line_y + tx]; + if(bank1) + attrs = bank1[tile_map_line_y + tx]; + + if((register_LCDC & 16) == 0) { + if(tile < 128) tile += 128; + else tile -= 128; + } + tile_pattern_address = tile_pattern + tile * 16 + by * 2; + } + gbWindowLine++; + } + } + } + } + else + { + int fill_color = gbCgbMode ? gbPalette[0] : 8; + + for(int i = 0; i < 160; i++) + { + gbLineMix[i] = fill_color; + gbLineBuffer[i] = 0; + } + } +} + +void gbDrawSpriteTile(int tile, int x,int y,int t, int flags, + int size,int spriteNumber) +{ + uint8 * bank0; + uint8 * bank1; + if(gbCgbMode) { + if(register_VBK & 1) { + bank0 = &gbVram[0x0000]; + bank1 = &gbVram[0x2000]; + } else { + bank0 = &gbVram[0x0000]; + bank1 = &gbVram[0x2000]; + } + } else { + bank0 = &gbVram[0x0000]; + bank1 = NULL; + } + + int init = 0x0000; + + uint8 *pal = gbObp0; + + int flipx = (flags & 0x20); + int flipy = (flags & 0x40); + + if((flags & 0x10)) + pal = gbObp1; + + if(flipy) { + t = (size ? 15 : 7) - t; + } + + int prio = flags & 0x80; + + int address = init + tile * 16 + 2*t; + int a = 0; + int b = 0; + + if(gbCgbMode && flags & 0x08) { + a = bank1[address++]; + b = bank1[address++]; + } else { + a = bank0[address++]; + b = bank0[address++]; + } + + for(int xx = 0; xx < 8; xx++) { + uint8 mask = 1 << (7-xx); + uint8 c = 0; + if( (a & mask)) + c++; + if( (b & mask)) + c+=2; + + if(c==0) continue; + + int xxx = xx+x; + if(flipx) + xxx = (7-xx+x); + + if(xxx < 0 || xxx > 159) + continue; + + uint16 color = gbLineBuffer[xxx]; + + if(prio) { + if(color < 0x200 && ((color & 0xFF) != 0)) + continue; + } + if(color >= 0x300 && color != 0x300) + continue; + else if(color >= 0x200 && color < 0x300) { + int sprite = color & 0xff; + + int spriteX = gbOAM[4 * sprite + 1] - 8; + + if(spriteX == x) { + if(sprite < spriteNumber) + continue; + } else { + if(gbCgbMode) { + if(sprite < spriteNumber) + continue; + } else { + if(spriteX < x+8) + continue; + } + } + } + + + gbLineBuffer[xxx] = 0x200 + spriteNumber; + + // make sure that sprites will work even in CGB mode + if(gbCgbMode) + { + c = c + (flags & 0x07)*4 + 32; + gbLineMix[xxx] = gbPalette[c]; + } + else + { + c = pal[c]; + c += 4; + gbLineMix[xxx] = c; + } + } +} + +void gbDrawSprites() +{ + int x = 0; + int y = 0; + int count = 0; + + int size = (register_LCDC & 4); + + if(!(register_LCDC & 0x80)) + return; + + if((register_LCDC & 2) && (gblayerSettings & 0x04)) { + int yc = register_LY; + + int address = 0; + for(int i = 0; i < 40; i++) { + y = gbOAM[address++]; + x = gbOAM[address++]; + int tile = gbOAM[address++]; + if(size) + tile &= 254; + int flags = gbOAM[address++]; + + if(x > 0 && y > 0 && x < 168 && y < 160) { + // check if sprite intersects current line + int t = yc -y + 16; + if(size && t >=0 && t < 16) { + gbDrawSpriteTile(tile,x-8,yc,t,flags,size,i); + count++; + } else if(!size && t >= 0 && t < 8) { + gbDrawSpriteTile(tile, x-8, yc, t, flags,size,i); + count++; + } + } + // sprite limit reached! + if(count >= 10) + break; + } + } +} + +} diff --git a/libmednahawk/src/gb/memory.cpp b/libmednahawk/src/gb/memory.cpp new file mode 100644 index 0000000000..2bc3aa14a3 --- /dev/null +++ b/libmednahawk/src/gb/memory.cpp @@ -0,0 +1,952 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "../mednafen.h" +#include "../mempatcher.h" +#include "gbGlobals.h" +#include "memory.h" + +namespace MDFN_IEN_GB +{ + +mapperMBC1 gbDataMBC1 = { + 0, // RAM enable + 1, // ROM bank + 0, // RAM bank or high address + 0, // memory model +}; + +void memoryUpdateMapMBC1() +{ + int tmpAddress = gbDataMBC1.mapperROMBank << 14; + + // check current model + if(gbDataMBC1.mapperMemoryModel == 0) { + // model is 16/8, so we have a high address in use + tmpAddress |= gbDataMBC1.mapperRAMBank << 19; + } + + gbMemoryMap[0x0a] = &gbRam[0]; + gbMemoryMap[0x0b] = &gbRam[0x1000]; + + tmpAddress &= gbRomSizeMask; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + if((gbRamSize) && (gbDataMBC1.mapperMemoryModel == 1)) + { + tmpAddress = gbDataMBC1.mapperRAMBank << 13; + tmpAddress &= gbRamSizeMask; + + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + } + else + MDFNMP_AddRAM(8192, 0xA000, gbRam); + +} + +// MBC1 ROM write registers +void mapperMBC1ROM(uint16 address, uint8 value) +{ + switch(address & 0x6000) + { + case 0x0000: // RAM enable register + gbDataMBC1.mapperRAMEnable = ( ( value & 0x0a) == 0x0a ? 1 : 0); + break; + + case 0x2000: // ROM bank select + // value = value & 0x1f; + if((value & 0x1f) == 0) + value++; + + gbDataMBC1.mapperROMBank = value; + memoryUpdateMapMBC1(); + break; + + case 0x4000: // RAM bank select + gbDataMBC1.mapperRAMBank = value & 0x03; + memoryUpdateMapMBC1(); + break; + + case 0x6000: // memory model select + gbDataMBC1.mapperMemoryModel = value & 1; + memoryUpdateMapMBC1(); + break; + } +} + +// MBC1 RAM write +void mapperMBC1RAM(uint16 address, uint8 value) +{ + if(gbDataMBC1.mapperRAMEnable) { + if(gbRamSize) { + gbMemoryMap[address >> 12][address & 0x0fff & gbRamSizeMask] = value; + } + } +} + +mapperMBC2 gbDataMBC2 = { + 0, // RAM enable + 1 // ROM bank +}; + +// MBC2 ROM write registers +void mapperMBC2ROM(uint16 address, uint8 value) +{ + switch(address & 0x6000) { + case 0x0000: // RAM enable + if(!(address & 0x0100)) { + gbDataMBC2.mapperRAMEnable = (value & 0x0f) == 0x0a; + } + break; + case 0x2000: // ROM bank select + if(address & 0x0100) { + value &= 0x0f; + + if(value == 0) + value = 1; + if(gbDataMBC2.mapperROMBank != value) { + gbDataMBC2.mapperROMBank = value; + + int tmpAddress = value << 14; + + tmpAddress &= gbRomSizeMask; + + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + } + } + break; + } +} + +// MBC2 RAM write +void mapperMBC2RAM(uint16 address, uint8 value) +{ + if(gbDataMBC2.mapperRAMEnable) { + if(gbRamSize && address < 0xa200) { + gbMemoryMap[address >> 12][address & 0x0fff & gbRamSizeMask] = value; + } + } +} + +void memoryUpdateMapMBC2() +{ + int tmpAddress = gbDataMBC2.mapperROMBank << 14; + + tmpAddress &= gbRomSizeMask; + + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; +} + +mapperMBC3 gbDataMBC3 = { + 0, // RAM enable + 1, // ROM bank + 0, // RAM bank + 0, // RAM address + 0, // timer clock latch + 0, // timer clock register + 0, // timer seconds + 0, // timer minutes + 0, // timer hours + 0, // timer days + 0, // timer control + 0, // timer latched seconds + 0, // timer latched minutes + 0, // timer latched hours + 0, // timer latched days + 0, // timer latched control + ~0ULL // last time +}; + +void memoryUpdateMBC3Clock() +{ + time_t now = time(NULL); + time_t diff = now - gbDataMBC3.mapperLastTime; + if(diff > 0) { + // update the clock according to the last update time + gbDataMBC3.mapperSeconds += diff % 60; + if(gbDataMBC3.mapperSeconds > 59) { + gbDataMBC3.mapperSeconds -= 60; + gbDataMBC3.mapperMinutes++; + } + + diff /= 60; + + gbDataMBC3.mapperMinutes += diff % 60; + if(gbDataMBC3.mapperMinutes > 60) { + gbDataMBC3.mapperMinutes -= 60; + gbDataMBC3.mapperHours++; + } + + diff /= 60; + + gbDataMBC3.mapperHours += diff % 24; + if(gbDataMBC3.mapperHours > 24) { + gbDataMBC3.mapperHours -= 24; + gbDataMBC3.mapperDays++; + } + diff /= 24; + + gbDataMBC3.mapperDays += diff; + if(gbDataMBC3.mapperDays > 255) { + if(gbDataMBC3.mapperDays > 511) { + gbDataMBC3.mapperDays %= 512; + gbDataMBC3.mapperControl |= 0x80; + } + gbDataMBC3.mapperControl = (gbDataMBC3.mapperControl & 0xfe) | + (gbDataMBC3.mapperDays>255 ? 1 : 0); + } + } + gbDataMBC3.mapperLastTime = now; +} + +// MBC3 ROM write registers +void mapperMBC3ROM(uint16 address, uint8 value) +{ + int tmpAddress = 0; + + switch(address & 0x6000) { + case 0x0000: // RAM enable register + gbDataMBC3.mapperRAMEnable = ( ( value & 0x0a) == 0x0a ? 1 : 0); + break; + case 0x2000: // ROM bank select + value = value & 0x7f; + if(value == 0) + value = 1; + if(value == gbDataMBC3.mapperROMBank) + break; + + tmpAddress = value << 14; + + tmpAddress &= gbRomSizeMask; + gbDataMBC3.mapperROMBank = value; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + break; + case 0x4000: // RAM bank select + if(value < 8) { + if(value == gbDataMBC3.mapperRAMBank) + break; + tmpAddress = value << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + gbDataMBC3.mapperRAMBank = value; + gbDataMBC3.mapperRAMAddress = tmpAddress; + } else { + if(gbDataMBC3.mapperRAMEnable) { + gbDataMBC3.mapperRAMBank = -1; + + gbDataMBC3.mapperClockRegister = value; + } + } + break; + case 0x6000: // clock latch + if(gbDataMBC3.mapperClockLatch == 0 && value == 1) { + memoryUpdateMBC3Clock(); + gbDataMBC3.mapperLSeconds = gbDataMBC3.mapperSeconds; + gbDataMBC3.mapperLMinutes = gbDataMBC3.mapperMinutes; + gbDataMBC3.mapperLHours = gbDataMBC3.mapperHours; + gbDataMBC3.mapperLDays = gbDataMBC3.mapperDays; + gbDataMBC3.mapperLControl = gbDataMBC3.mapperControl; + } + if(value == 0x00 || value == 0x01) + gbDataMBC3.mapperClockLatch = value; + break; + } +} + +// MBC3 RAM write +void mapperMBC3RAM(uint16 address, uint8 value) +{ + if(gbDataMBC3.mapperRAMEnable) { + if(gbDataMBC3.mapperRAMBank != -1) { + if(gbRamSize) { + gbMemoryMap[address>>12][address & 0x0fff & gbRamSizeMask] = value; + } + } else { + time_t tmp; + time(&tmp); + + gbDataMBC3.mapperLastTime = tmp; + switch(gbDataMBC3.mapperClockRegister) { + case 0x08: + gbDataMBC3.mapperSeconds = value; + break; + case 0x09: + gbDataMBC3.mapperMinutes = value; + break; + case 0x0a: + gbDataMBC3.mapperHours = value; + break; + case 0x0b: + gbDataMBC3.mapperDays = value; + break; + case 0x0c: + if(gbDataMBC3.mapperControl & 0x80) + gbDataMBC3.mapperControl = 0x80 | value; + else + gbDataMBC3.mapperControl = value; + break; + } + } + } +} + +// MBC3 read RAM +uint8 mapperMBC3ReadRAM(uint16 address) +{ + if(gbDataMBC3.mapperRAMEnable) { + if(gbDataMBC3.mapperRAMBank != -1) { + return gbMemoryMap[address>>12][address & 0x0fff]; + } + + switch(gbDataMBC3.mapperClockRegister) { + case 0x08: + return gbDataMBC3.mapperLSeconds; + break; + case 0x09: + return gbDataMBC3.mapperLMinutes; + break; + case 0x0a: + return gbDataMBC3.mapperLHours; + break; + case 0x0b: + return gbDataMBC3.mapperLDays; + break; + case 0x0c: + return gbDataMBC3.mapperLControl; + } + } + return 0; +} + +void memoryUpdateMapMBC3() +{ + int tmpAddress = gbDataMBC3.mapperROMBank << 14; + + tmpAddress &= gbRomSizeMask; + + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + if(gbDataMBC3.mapperRAMBank >= 0 && gbRamSize) { + tmpAddress = gbDataMBC3.mapperRAMBank << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + } +} + +mapperMBC5 gbDataMBC5 = { + 0, // RAM enable + 1, // ROM bank + 0, // RAM bank + 0, // ROM high address + 0, // RAM address + 0 // is rumble cartridge? +}; + +// MBC5 ROM write registers +void mapperMBC5ROM(uint16 address, uint8 value) +{ + int tmpAddress = 0; + + switch(address & 0x6000) { + case 0x0000: // RAM enable register + gbDataMBC5.mapperRAMEnable = ( ( value & 0x0a) == 0x0a ? 1 : 0); + break; + case 0x2000: // ROM bank select + if(address < 0x3000) { + value = value & 0xff; + if(value == gbDataMBC5.mapperROMBank) + break; + + tmpAddress = (value << 14) | (gbDataMBC5.mapperROMHighAddress << 22) ; + + tmpAddress &= gbRomSizeMask; + gbDataMBC5.mapperROMBank = value; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + } else { + value = value & 1; + if(value == gbDataMBC5.mapperROMHighAddress) + break; + + tmpAddress = (gbDataMBC5.mapperROMBank << 14) | (value << 22); + + tmpAddress &= gbRomSizeMask; + gbDataMBC5.mapperROMHighAddress = value; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + } + break; + case 0x4000: // RAM bank select + if(gbDataMBC5.isRumbleCartridge) + value &= 0x07; + else + value &= 0x0f; + if(value == gbDataMBC5.mapperRAMBank) + break; + tmpAddress = value << 13; + tmpAddress &= gbRamSizeMask; + if(gbRamSize) { + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + + gbDataMBC5.mapperRAMBank = value; + gbDataMBC5.mapperRAMAddress = tmpAddress; + } + break; + } +} + +// MBC5 RAM write +void mapperMBC5RAM(uint16 address, uint8 value) +{ + if(gbDataMBC5.mapperRAMEnable) { + if(gbRamSize) { + gbMemoryMap[address >> 12][address & 0x0fff & gbRamSizeMask] = value; + } + } +} + +void memoryUpdateMapMBC5() +{ + int tmpAddress = (gbDataMBC5.mapperROMBank << 14) | + (gbDataMBC5.mapperROMHighAddress << 22) ; + + tmpAddress &= gbRomSizeMask; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + if(gbRamSize) { + tmpAddress = gbDataMBC5.mapperRAMBank << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + } +} + +mapperMBC7 gbDataMBC7 = { + 0, // RAM enable + 1, // ROM bank + 0, // RAM bank + 0, // RAM address + 0, // chip select + 0, // ?? + 0, // mapper state + 0, // buffer for receiving serial data + 0, // idle state + 0, // count of bits received + 0, // command received + 0, // address received + 0, // write enable + 0, // value to return on ram +}; + +// MBC7 ROM write registers +void mapperMBC7ROM(uint16 address, uint8 value) +{ + int tmpAddress = 0; + + switch(address & 0x6000) { + case 0x0000: + break; + case 0x2000: // ROM bank select + value = value & 0x7f; + if(value == 0) + value = 1; + + if(value == gbDataMBC7.mapperROMBank) + break; + + tmpAddress = (value << 14); + + tmpAddress &= gbRomSizeMask; + gbDataMBC7.mapperROMBank = value; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + break; + case 0x4000: // RAM bank select/enable + if(value < 8) { + tmpAddress = (value&3) << 13; + tmpAddress &= gbRamSizeMask; + gbMemoryMap[0x0a] = &gbRam[0x0000]; + gbMemoryMap[0x0b] = &gbRam[0x1000]; + + gbDataMBC7.mapperRAMBank = value; + gbDataMBC7.mapperRAMAddress = tmpAddress; + gbDataMBC7.mapperRAMEnable = 0; + } else { + gbDataMBC7.mapperRAMEnable = 0; + } + break; + } +} + +// MBC7 read RAM +uint8 mapperMBC7ReadRAM(uint16 address) +{ + switch(address & 0xa0f0) { + case 0xa000: + case 0xa010: + case 0xa060: + case 0xa070: + return 0; + case 0xa020: + // sensor X low byte + //return systemGetSensorX() & 255; + case 0xa030: + // sensor X high byte + //return systemGetSensorX() >> 8; + case 0xa040: + // sensor Y low byte + //return systemGetSensorY() & 255; + case 0xa050: + // sensor Y high byte + //return systemGetSensorY() >> 8; + case 0xa080: + return gbDataMBC7.value; + } + return 0xff; +} + +// MBC7 RAM write +void mapperMBC7RAM(uint16 address, uint8 value) +{ + if(address == 0xa080) { + // special processing needed + int oldCs = gbDataMBC7.cs,oldSk=gbDataMBC7.sk; + + gbDataMBC7.cs=value>>7; + gbDataMBC7.sk=(value>>6)&1; + + if(!oldCs && gbDataMBC7.cs) { + if(gbDataMBC7.state==5) { + if(gbDataMBC7.writeEnable) { + gbRam[gbDataMBC7.address*2]=gbDataMBC7.buffer>>8; + gbRam[gbDataMBC7.address*2+1]=gbDataMBC7.buffer&0xff; + } + gbDataMBC7.state=0; + gbDataMBC7.value=1; + } else { + gbDataMBC7.idle=true; + gbDataMBC7.state=0; + } + } + + if(!oldSk && gbDataMBC7.sk) { + if(gbDataMBC7.idle) { + if(value & 0x02) { + gbDataMBC7.idle=false; + gbDataMBC7.count=0; + gbDataMBC7.state=1; + } + } else { + switch(gbDataMBC7.state) { + case 1: + // receiving command + gbDataMBC7.buffer <<= 1; + gbDataMBC7.buffer |= (value & 0x02)?1:0; + gbDataMBC7.count++; + if(gbDataMBC7.count==2) { + // finished receiving command + gbDataMBC7.state=2; + gbDataMBC7.count=0; + gbDataMBC7.code=gbDataMBC7.buffer & 3; + } + break; + case 2: + // receive address + gbDataMBC7.buffer <<= 1; + gbDataMBC7.buffer |= (value&0x02)?1:0; + gbDataMBC7.count++; + if(gbDataMBC7.count==8) { + // finish receiving + gbDataMBC7.state=3; + gbDataMBC7.count=0; + gbDataMBC7.address=gbDataMBC7.buffer&0xff; + if(gbDataMBC7.code==0) { + if((gbDataMBC7.address>>6)==0) { + gbDataMBC7.writeEnable=0; + gbDataMBC7.state=0; + } else if((gbDataMBC7.address>>6) == 3) { + gbDataMBC7.writeEnable=1; + gbDataMBC7.state=0; + } + } + } + break; + case 3: + gbDataMBC7.buffer <<= 1; + gbDataMBC7.buffer |= (value&0x02)?1:0; + gbDataMBC7.count++; + + switch(gbDataMBC7.code) { + case 0: + if(gbDataMBC7.count==16) { + if((gbDataMBC7.address>>6)==0) { + gbDataMBC7.writeEnable = 0; + gbDataMBC7.state=0; + } else if((gbDataMBC7.address>>6)==1) { + if (gbDataMBC7.writeEnable) { + for(int i=0;i<256;i++) { + gbRam[i*2] = gbDataMBC7.buffer >> 8; + gbRam[i*2+1] = gbDataMBC7.buffer & 0xff; + } + } + gbDataMBC7.state=5; + } else if((gbDataMBC7.address>>6) == 2) { + if (gbDataMBC7.writeEnable) { + for(int i=0;i<256;i++) + *((uint16 *)&gbRam[i*2]) = 0xffff; + } + gbDataMBC7.state=5; + } else if((gbDataMBC7.address>>6)==3) { + gbDataMBC7.writeEnable = 1; + gbDataMBC7.state=0; + } + gbDataMBC7.count=0; + } + break; + case 1: + if(gbDataMBC7.count==16) { + gbDataMBC7.count=0; + gbDataMBC7.state=5; + gbDataMBC7.value=0; + } + break; + case 2: + if(gbDataMBC7.count==1) { + gbDataMBC7.state=4; + gbDataMBC7.count=0; + gbDataMBC7.buffer = (gbRam[gbDataMBC7.address*2]<<8)| + (gbRam[gbDataMBC7.address*2+1]); + } + break; + case 3: + if(gbDataMBC7.count==16) { + gbDataMBC7.count=0; + gbDataMBC7.state=5; + gbDataMBC7.value=0; + gbDataMBC7.buffer=0xffff; + } + break; + } + break; + } + } + } + + if (oldSk && !gbDataMBC7.sk) { + if (gbDataMBC7.state==4) { + gbDataMBC7.value = (gbDataMBC7.buffer & 0x8000)?1:0; + gbDataMBC7.buffer <<= 1; + gbDataMBC7.count++; + if (gbDataMBC7.count==16) { + gbDataMBC7.count=0; + gbDataMBC7.state=0; + } + } + } + } +} + +void memoryUpdateMapMBC7() +{ + int tmpAddress = (gbDataMBC5.mapperROMBank << 14); + + tmpAddress &= gbRomSizeMask; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; +} + +mapperHuC1 gbDataHuC1 = { + 0, // RAM enable + 1, // ROM bank + 0, // RAM bank + 0, // memory model + 0, // ROM high address + 0 // RAM address +}; + +// HuC1 ROM write registers +void mapperHuC1ROM(uint16 address, uint8 value) +{ + int tmpAddress = 0; + + switch(address & 0x6000) { + case 0x0000: // RAM enable register + gbDataHuC1.mapperRAMEnable = ( ( value & 0x0a) == 0x0a ? 1 : 0); + break; + case 0x2000: // ROM bank select + value = value & 0x3f; + if(value == 0) + value = 1; + if(value == gbDataHuC1.mapperROMBank) + break; + + tmpAddress = value << 14; + + tmpAddress &= gbRomSizeMask; + gbDataHuC1.mapperROMBank = value; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + break; + case 0x4000: // RAM bank select + if(gbDataHuC1.mapperMemoryModel == 1) { + // 4/32 model, RAM bank switching provided + value = value & 0x03; + if(value == gbDataHuC1.mapperRAMBank) + break; + tmpAddress = value << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + gbDataHuC1.mapperRAMBank = value; + gbDataHuC1.mapperRAMAddress = tmpAddress; + } else { + // 16/8, set the high address + gbDataHuC1.mapperROMHighAddress = value & 0x03; + tmpAddress = gbDataHuC1.mapperROMBank << 14; + tmpAddress |= (gbDataHuC1.mapperROMHighAddress) << 19; + tmpAddress &= gbRomSizeMask; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + } + break; + case 0x6000: // memory model select + gbDataHuC1.mapperMemoryModel = value & 1; + break; + } +} + +// HuC1 RAM write +void mapperHuC1RAM(uint16 address, uint8 value) +{ + if(gbDataHuC1.mapperRAMEnable) { + if(gbRamSize) { + gbMemoryMap[address >> 12][address & 0x0fff] = value; + } + } +} + +void memoryUpdateMapHuC1() +{ + int tmpAddress = gbDataHuC1.mapperROMBank << 14; + + tmpAddress &= gbRomSizeMask; + + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + if(gbRamSize) { + tmpAddress = gbDataHuC1.mapperRAMBank << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + } +} + +mapperHuC3 gbDataHuC3 = { + 0, // RAM enable + 1, // ROM bank + 0, // RAM bank + 0, // RAM address + 0, // RAM flag + 0 // RAM read value +}; + + +// HuC3 ROM write registers +void mapperHuC3ROM(uint16 address, uint8 value) +{ + int tmpAddress = 0; + + switch(address & 0x6000) { + case 0x0000: // RAM enable register + gbDataHuC3.mapperRAMEnable = ( value == 0x0a ? 1 : 0); + gbDataHuC3.mapperRAMFlag = value; + if(gbDataHuC3.mapperRAMFlag != 0x0a) + gbDataHuC3.mapperRAMBank = -1; + break; + case 0x2000: // ROM bank select + value = value & 0x7f; + if(value == 0) + value = 1; + if(value == gbDataHuC3.mapperROMBank) + break; + + tmpAddress = value << 14; + + tmpAddress &= gbRomSizeMask; + gbDataHuC3.mapperROMBank = value; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + break; + case 0x4000: // RAM bank select + value = value & 0x03; + if(value == gbDataHuC3.mapperRAMBank) + break; + tmpAddress = value << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + gbDataHuC3.mapperRAMBank = value; + gbDataHuC3.mapperRAMAddress = tmpAddress; + break; + case 0x6000: // nothing to do! + break; + } +} + +// HuC3 read RAM +uint8 mapperHuC3ReadRAM(uint16 address) +{ + if(gbDataHuC3.mapperRAMFlag > 0x0b && + gbDataHuC3.mapperRAMFlag < 0x0e) { + if(gbDataHuC3.mapperRAMFlag != 0x0c) + return 1; + return gbDataHuC3.mapperRAMValue; + } else + return gbMemoryMap[address >> 12][address & 0x0fff]; +} + +// HuC3 RAM write +void mapperHuC3RAM(uint16 address, uint8 value) +{ + int *p; + + if(gbDataHuC3.mapperRAMFlag < 0x0b || + gbDataHuC3.mapperRAMFlag > 0x0e) { + if(gbDataHuC3.mapperRAMEnable) { + if(gbRamSize) { + gbMemoryMap[address >> 12][address & 0x0fff] = value; + } + } + } else { + if(gbDataHuC3.mapperRAMFlag == 0x0b) { + if(value == 0x62) { + gbDataHuC3.mapperRAMValue = 1; + } else { + switch(value & 0xf0) { + case 0x10: + p = &gbDataHuC3.mapperRegister2; + gbDataHuC3.mapperRAMValue = *(p+gbDataHuC3.mapperRegister1++); + if(gbDataHuC3.mapperRegister1 > 6) + gbDataHuC3.mapperRegister1 = 0; + break; + case 0x30: + p = &gbDataHuC3.mapperRegister2; + *(p+gbDataHuC3.mapperRegister1++) = value & 0x0f; + if(gbDataHuC3.mapperRegister1 > 6) + gbDataHuC3.mapperRegister1 = 0; + gbDataHuC3.mapperAddress = + (gbDataHuC3.mapperRegister6 << 24) | + (gbDataHuC3.mapperRegister5 << 16) | + (gbDataHuC3.mapperRegister4 << 8) | + (gbDataHuC3.mapperRegister3 << 4) | + (gbDataHuC3.mapperRegister2); + break; + case 0x40: + gbDataHuC3.mapperRegister1 = (gbDataHuC3.mapperRegister1 & 0xf0) | + (value & 0x0f); + gbDataHuC3.mapperRegister2 = (gbDataHuC3.mapperAddress & 0x0f); + gbDataHuC3.mapperRegister3 = ((gbDataHuC3.mapperAddress>>4)&0x0f); + gbDataHuC3.mapperRegister4 = ((gbDataHuC3.mapperAddress>>8)&0x0f); + gbDataHuC3.mapperRegister5 = ((gbDataHuC3.mapperAddress>>16)&0x0f); + gbDataHuC3.mapperRegister6 = ((gbDataHuC3.mapperAddress>>24)&0x0f); + gbDataHuC3.mapperRegister7 = 0; + gbDataHuC3.mapperRegister8 = 0; + gbDataHuC3.mapperRAMValue = 0; + break; + case 0x50: + gbDataHuC3.mapperRegister1 = (gbDataHuC3.mapperRegister1 & 0x0f) | + ((value << 4)&0x0f); + break; + default: + gbDataHuC3.mapperRAMValue = 1; + break; + } + } + } + } +} + +void memoryUpdateMapHuC3() +{ + int tmpAddress = gbDataHuC3.mapperROMBank << 14; + + tmpAddress &= gbRomSizeMask; + gbMemoryMap[0x04] = &gbRom[tmpAddress]; + gbMemoryMap[0x05] = &gbRom[tmpAddress + 0x1000]; + gbMemoryMap[0x06] = &gbRom[tmpAddress + 0x2000]; + gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; + + if(gbRamSize) { + tmpAddress = gbDataHuC3.mapperRAMBank << 13; + tmpAddress &= gbRamSizeMask; + MDFNMP_AddRAM(8192, 0xA000, &gbRam[tmpAddress]); + gbMemoryMap[0x0a] = &gbRam[tmpAddress]; + gbMemoryMap[0x0b] = &gbRam[tmpAddress + 0x1000]; + } +} + +} diff --git a/libmednahawk/src/gb/memory.h b/libmednahawk/src/gb/memory.h new file mode 100644 index 0000000000..cec4a3a22f --- /dev/null +++ b/libmednahawk/src/gb/memory.h @@ -0,0 +1,149 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include + +namespace MDFN_IEN_GB +{ + +struct mapperMBC1 { + int mapperRAMEnable; + int mapperROMBank; + int mapperRAMBank; + int mapperMemoryModel; +}; + +struct mapperMBC2 { + int mapperRAMEnable; + int mapperROMBank; +}; + +struct mapperMBC3 { + int mapperRAMEnable; + int mapperROMBank; + int mapperRAMBank; + int mapperRAMAddress; + int mapperClockLatch; + int mapperClockRegister; + int mapperSeconds; + int mapperMinutes; + int mapperHours; + int mapperDays; + int mapperControl; + int mapperLSeconds; + int mapperLMinutes; + int mapperLHours; + int mapperLDays; + int mapperLControl; + uint64 mapperLastTime; +}; + +struct mapperMBC5 { + int mapperRAMEnable; + int mapperROMBank; + int mapperRAMBank; + int mapperROMHighAddress; + int mapperRAMAddress; + int isRumbleCartridge; +}; + +struct mapperMBC7 { + int mapperRAMEnable; + int mapperROMBank; + int mapperRAMBank; + int mapperRAMAddress; + int cs; + int sk; + int state; + int buffer; + int idle; + int count; + int code; + int address; + int writeEnable; + int value; +}; + +struct mapperHuC1 { + int mapperRAMEnable; + int mapperROMBank; + int mapperRAMBank; + int mapperMemoryModel; + int mapperROMHighAddress; + int mapperRAMAddress; +}; + +struct mapperHuC3 { + int mapperRAMEnable; + int mapperROMBank; + int mapperRAMBank; + int mapperRAMAddress; + int mapperAddress; + int mapperRAMFlag; + int mapperRAMValue; + int mapperRegister1; + int mapperRegister2; + int mapperRegister3; + int mapperRegister4; + int mapperRegister5; + int mapperRegister6; + int mapperRegister7; + int mapperRegister8; +}; + +extern mapperMBC1 gbDataMBC1; +extern mapperMBC2 gbDataMBC2; +extern mapperMBC3 gbDataMBC3; +extern mapperMBC5 gbDataMBC5; +extern mapperMBC7 gbDataMBC7; + +extern mapperHuC1 gbDataHuC1; +extern mapperHuC3 gbDataHuC3; + +void mapperMBC1ROM(uint16,uint8); +void mapperMBC1RAM(uint16,uint8); +void mapperMBC2ROM(uint16,uint8); +void mapperMBC2RAM(uint16,uint8); +void mapperMBC3ROM(uint16,uint8); +void mapperMBC3RAM(uint16,uint8); +uint8 mapperMBC3ReadRAM(uint16); +void mapperMBC5ROM(uint16,uint8); +void mapperMBC5RAM(uint16,uint8); +void mapperMBC7ROM(uint16,uint8); +void mapperMBC7RAM(uint16,uint8); +uint8 mapperMBC7ReadRAM(uint16); +void mapperHuC1ROM(uint16,uint8); +void mapperHuC1RAM(uint16,uint8); +void mapperHuC3ROM(uint16,uint8); +void mapperHuC3RAM(uint16,uint8); +uint8 mapperHuC3ReadRAM(uint16); + +//extern void (*mapper)(uint16,uint8); +//extern void (*mapperRAM)(uint16,uint8); +//extern uint8 (*mapperReadRAM)(uint16); + +extern void memoryUpdateMapMBC1(); +extern void memoryUpdateMapMBC2(); +extern void memoryUpdateMapMBC3(); +extern void memoryUpdateMapMBC5(); +extern void memoryUpdateMapMBC7(); +extern void memoryUpdateMapHuC1(); +extern void memoryUpdateMapHuC3(); + +} diff --git a/libmednahawk/src/gb/sound.cpp b/libmednahawk/src/gb/sound.cpp new file mode 100644 index 0000000000..b9f4c5761d --- /dev/null +++ b/libmednahawk/src/gb/sound.cpp @@ -0,0 +1,152 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "../state.h" +#include "gb.h" +#include "gbGlobals.h" +#include "sound.h" +#include "gb_apu/Gb_Apu.h" +#include + +namespace MDFN_IEN_GB +{ + +static Gb_Apu gb_apu; +static Stereo_Buffer *gb_buf = NULL; + +void MDFNGBSOUND_Reset(void) +{ + Gb_Apu::mode_t gbmode = Gb_Apu::mode_cgb; + + if(gbEmulatorType == 4) + gbmode = Gb_Apu::mode_agb; + else if(gbEmulatorType == 3) + gbmode = Gb_Apu::mode_dmg; + else if(gbEmulatorType == 1) + gbmode = Gb_Apu::mode_cgb; + else if(gbEmulatorType == 0) + { + if(gbCgbMode) + gbmode = Gb_Apu::mode_cgb; + else + gbmode = Gb_Apu::mode_dmg; + } + + //printf("%d -- %d\n", (int)gbmode, (int)Gb_Apu::mode_cgb); + gb_apu.reset(gbmode); +} + +uint32 MDFNGBSOUND_Read(int ts, uint32 addr) +{ + uint32 ret; + + ret = gb_apu.read_register(ts*GB_APU_OVERCLOCK, addr); + + return(ret); +} + +void MDFNGBSOUND_Write(int ts, uint32 addr, uint8 val) +{ + //if(addr == 0xFF26) + // printf("%04x %02x\n", addr, val); + gb_apu.write_register(ts * GB_APU_OVERCLOCK, addr, val); +} + +static bool RedoBuffer(uint32 rate) +{ + if(gb_buf) + { + delete gb_buf; + gb_buf = NULL; + } + + gb_apu.set_output(NULL, NULL, NULL); + + if(rate) + { + gb_buf = new Stereo_Buffer(); + + gb_buf->set_sample_rate(rate, 40); + gb_buf->clock_rate((long)(4194304 * GB_APU_OVERCLOCK * 1)); + + gb_apu.set_output(gb_buf->center(), gb_buf->left(), gb_buf->right()); + } + + return(TRUE); +} + +bool MDFNGB_SetSoundRate(uint32 rate) +{ + RedoBuffer(rate); + + return(TRUE); +} + +int MDFNGBSOUND_StateAction(StateMem *sm, int load, int data_only) +{ + gb_apu_state_t gb_state; + int ret = 1; + + //if(!load) // always save state, in case there is none to load + { + gb_apu.save_state(&gb_state); + } + + SFORMAT StateRegs[] = + { + SFVARN(gb_state, "apu_state"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "APU")) + ret = 0; + else if(load) + { + // TODO: set hardware mode to mode_dmg, mode_cgb, or mode_agb + // (latter if you're running classic GB game on Game Boy Advance) + gb_apu.reset(); + gb_apu.load_state(gb_state); + } + return(ret); +} + +void MDFNGBSOUND_Init(void) +{ + gb_apu.volume(0.5); + + RedoBuffer(0); +} + +int32 MDFNGBSOUND_Flush(int ts, int16 *SoundBuf, const int32 MaxSoundFrames) +{ + int32 SoundFrames = 0; + + gb_apu.end_frame(ts * GB_APU_OVERCLOCK); + + if(SoundBuf && gb_buf) + { + gb_buf->end_frame(ts * GB_APU_OVERCLOCK); + SoundFrames = gb_buf->read_samples(SoundBuf, MaxSoundFrames * 2) / 2; + } + else if(gb_buf) + exit(1); + + return(SoundFrames); +} + +} diff --git a/libmednahawk/src/gb/sound.h b/libmednahawk/src/gb/sound.h new file mode 100644 index 0000000000..093731435b --- /dev/null +++ b/libmednahawk/src/gb/sound.h @@ -0,0 +1,21 @@ +#ifndef __MDFN_GB_SOUND_H +#define __MDFN_GB_SOUND_H + +namespace MDFN_IEN_GB +{ + +uint32 MDFNGBSOUND_Read(int ts, uint32_t addr); +void MDFNGBSOUND_Write(int ts, uint32 addr, uint8 val); + +int32 MDFNGBSOUND_Flush(int ts, int16 *SoundBuf, const int32 MaxSoundFrames); +void MDFNGBSOUND_Init(void); +void MDFNGBSOUND_Reset(void); +int MDFNGBSOUND_StateAction(StateMem *sm, int load, int data_only); + +void MDFNGB_SetSoundVolume(uint32 volume); +bool MDFNGB_SetSoundRate(uint32 rate); + +} + +#endif + diff --git a/libmednahawk/src/gb/z80.cpp b/libmednahawk/src/gb/z80.cpp new file mode 100644 index 0000000000..7249677d06 --- /dev/null +++ b/libmednahawk/src/gb/z80.cpp @@ -0,0 +1,481 @@ +#include "../mednafen.h" +#include "../state.h" +#include "gb.h" +#include "z80.h" +#include "gbGlobals.h" +#include "memory.h" + +namespace MDFN_IEN_GB +{ + +// GameBoy Z80-clone emulation + +static const uint16 DAATable[] = { + 0x0080,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700, + 0x0800,0x0900,0x1000,0x1100,0x1200,0x1300,0x1400,0x1500, + 0x1000,0x1100,0x1200,0x1300,0x1400,0x1500,0x1600,0x1700, + 0x1800,0x1900,0x2000,0x2100,0x2200,0x2300,0x2400,0x2500, + 0x2000,0x2100,0x2200,0x2300,0x2400,0x2500,0x2600,0x2700, + 0x2800,0x2900,0x3000,0x3100,0x3200,0x3300,0x3400,0x3500, + 0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700, + 0x3800,0x3900,0x4000,0x4100,0x4200,0x4300,0x4400,0x4500, + 0x4000,0x4100,0x4200,0x4300,0x4400,0x4500,0x4600,0x4700, + 0x4800,0x4900,0x5000,0x5100,0x5200,0x5300,0x5400,0x5500, + 0x5000,0x5100,0x5200,0x5300,0x5400,0x5500,0x5600,0x5700, + 0x5800,0x5900,0x6000,0x6100,0x6200,0x6300,0x6400,0x6500, + 0x6000,0x6100,0x6200,0x6300,0x6400,0x6500,0x6600,0x6700, + 0x6800,0x6900,0x7000,0x7100,0x7200,0x7300,0x7400,0x7500, + 0x7000,0x7100,0x7200,0x7300,0x7400,0x7500,0x7600,0x7700, + 0x7800,0x7900,0x8000,0x8100,0x8200,0x8300,0x8400,0x8500, + 0x8000,0x8100,0x8200,0x8300,0x8400,0x8500,0x8600,0x8700, + 0x8800,0x8900,0x9000,0x9100,0x9200,0x9300,0x9400,0x9500, + 0x9000,0x9100,0x9200,0x9300,0x9400,0x9500,0x9600,0x9700, + 0x9800,0x9900,0x0090,0x0110,0x0210,0x0310,0x0410,0x0510, + 0x0090,0x0110,0x0210,0x0310,0x0410,0x0510,0x0610,0x0710, + 0x0810,0x0910,0x1010,0x1110,0x1210,0x1310,0x1410,0x1510, + 0x1010,0x1110,0x1210,0x1310,0x1410,0x1510,0x1610,0x1710, + 0x1810,0x1910,0x2010,0x2110,0x2210,0x2310,0x2410,0x2510, + 0x2010,0x2110,0x2210,0x2310,0x2410,0x2510,0x2610,0x2710, + 0x2810,0x2910,0x3010,0x3110,0x3210,0x3310,0x3410,0x3510, + 0x3010,0x3110,0x3210,0x3310,0x3410,0x3510,0x3610,0x3710, + 0x3810,0x3910,0x4010,0x4110,0x4210,0x4310,0x4410,0x4510, + 0x4010,0x4110,0x4210,0x4310,0x4410,0x4510,0x4610,0x4710, + 0x4810,0x4910,0x5010,0x5110,0x5210,0x5310,0x5410,0x5510, + 0x5010,0x5110,0x5210,0x5310,0x5410,0x5510,0x5610,0x5710, + 0x5810,0x5910,0x6010,0x6110,0x6210,0x6310,0x6410,0x6510, + 0x6010,0x6110,0x6210,0x6310,0x6410,0x6510,0x6610,0x6710, + 0x6810,0x6910,0x7010,0x7110,0x7210,0x7310,0x7410,0x7510, + 0x7010,0x7110,0x7210,0x7310,0x7410,0x7510,0x7610,0x7710, + 0x7810,0x7910,0x8010,0x8110,0x8210,0x8310,0x8410,0x8510, + 0x8010,0x8110,0x8210,0x8310,0x8410,0x8510,0x8610,0x8710, + 0x8810,0x8910,0x9010,0x9110,0x9210,0x9310,0x9410,0x9510, + 0x9010,0x9110,0x9210,0x9310,0x9410,0x9510,0x9610,0x9710, + 0x9810,0x9910,0xA010,0xA110,0xA210,0xA310,0xA410,0xA510, + 0xA010,0xA110,0xA210,0xA310,0xA410,0xA510,0xA610,0xA710, + 0xA810,0xA910,0xB010,0xB110,0xB210,0xB310,0xB410,0xB510, + 0xB010,0xB110,0xB210,0xB310,0xB410,0xB510,0xB610,0xB710, + 0xB810,0xB910,0xC010,0xC110,0xC210,0xC310,0xC410,0xC510, + 0xC010,0xC110,0xC210,0xC310,0xC410,0xC510,0xC610,0xC710, + 0xC810,0xC910,0xD010,0xD110,0xD210,0xD310,0xD410,0xD510, + 0xD010,0xD110,0xD210,0xD310,0xD410,0xD510,0xD610,0xD710, + 0xD810,0xD910,0xE010,0xE110,0xE210,0xE310,0xE410,0xE510, + 0xE010,0xE110,0xE210,0xE310,0xE410,0xE510,0xE610,0xE710, + 0xE810,0xE910,0xF010,0xF110,0xF210,0xF310,0xF410,0xF510, + 0xF010,0xF110,0xF210,0xF310,0xF410,0xF510,0xF610,0xF710, + 0xF810,0xF910,0x0090,0x0110,0x0210,0x0310,0x0410,0x0510, + 0x0090,0x0110,0x0210,0x0310,0x0410,0x0510,0x0610,0x0710, + 0x0810,0x0910,0x1010,0x1110,0x1210,0x1310,0x1410,0x1510, + 0x1010,0x1110,0x1210,0x1310,0x1410,0x1510,0x1610,0x1710, + 0x1810,0x1910,0x2010,0x2110,0x2210,0x2310,0x2410,0x2510, + 0x2010,0x2110,0x2210,0x2310,0x2410,0x2510,0x2610,0x2710, + 0x2810,0x2910,0x3010,0x3110,0x3210,0x3310,0x3410,0x3510, + 0x3010,0x3110,0x3210,0x3310,0x3410,0x3510,0x3610,0x3710, + 0x3810,0x3910,0x4010,0x4110,0x4210,0x4310,0x4410,0x4510, + 0x4010,0x4110,0x4210,0x4310,0x4410,0x4510,0x4610,0x4710, + 0x4810,0x4910,0x5010,0x5110,0x5210,0x5310,0x5410,0x5510, + 0x5010,0x5110,0x5210,0x5310,0x5410,0x5510,0x5610,0x5710, + 0x5810,0x5910,0x6010,0x6110,0x6210,0x6310,0x6410,0x6510, + 0x0600,0x0700,0x0800,0x0900,0x0A00,0x0B00,0x0C00,0x0D00, + 0x0E00,0x0F00,0x1000,0x1100,0x1200,0x1300,0x1400,0x1500, + 0x1600,0x1700,0x1800,0x1900,0x1A00,0x1B00,0x1C00,0x1D00, + 0x1E00,0x1F00,0x2000,0x2100,0x2200,0x2300,0x2400,0x2500, + 0x2600,0x2700,0x2800,0x2900,0x2A00,0x2B00,0x2C00,0x2D00, + 0x2E00,0x2F00,0x3000,0x3100,0x3200,0x3300,0x3400,0x3500, + 0x3600,0x3700,0x3800,0x3900,0x3A00,0x3B00,0x3C00,0x3D00, + 0x3E00,0x3F00,0x4000,0x4100,0x4200,0x4300,0x4400,0x4500, + 0x4600,0x4700,0x4800,0x4900,0x4A00,0x4B00,0x4C00,0x4D00, + 0x4E00,0x4F00,0x5000,0x5100,0x5200,0x5300,0x5400,0x5500, + 0x5600,0x5700,0x5800,0x5900,0x5A00,0x5B00,0x5C00,0x5D00, + 0x5E00,0x5F00,0x6000,0x6100,0x6200,0x6300,0x6400,0x6500, + 0x6600,0x6700,0x6800,0x6900,0x6A00,0x6B00,0x6C00,0x6D00, + 0x6E00,0x6F00,0x7000,0x7100,0x7200,0x7300,0x7400,0x7500, + 0x7600,0x7700,0x7800,0x7900,0x7A00,0x7B00,0x7C00,0x7D00, + 0x7E00,0x7F00,0x8000,0x8100,0x8200,0x8300,0x8400,0x8500, + 0x8600,0x8700,0x8800,0x8900,0x8A00,0x8B00,0x8C00,0x8D00, + 0x8E00,0x8F00,0x9000,0x9100,0x9200,0x9300,0x9400,0x9500, + 0x9600,0x9700,0x9800,0x9900,0x9A00,0x9B00,0x9C00,0x9D00, + 0x9E00,0x9F00,0x0090,0x0110,0x0210,0x0310,0x0410,0x0510, + 0x0610,0x0710,0x0810,0x0910,0x0A10,0x0B10,0x0C10,0x0D10, + 0x0E10,0x0F10,0x1010,0x1110,0x1210,0x1310,0x1410,0x1510, + 0x1610,0x1710,0x1810,0x1910,0x1A10,0x1B10,0x1C10,0x1D10, + 0x1E10,0x1F10,0x2010,0x2110,0x2210,0x2310,0x2410,0x2510, + 0x2610,0x2710,0x2810,0x2910,0x2A10,0x2B10,0x2C10,0x2D10, + 0x2E10,0x2F10,0x3010,0x3110,0x3210,0x3310,0x3410,0x3510, + 0x3610,0x3710,0x3810,0x3910,0x3A10,0x3B10,0x3C10,0x3D10, + 0x3E10,0x3F10,0x4010,0x4110,0x4210,0x4310,0x4410,0x4510, + 0x4610,0x4710,0x4810,0x4910,0x4A10,0x4B10,0x4C10,0x4D10, + 0x4E10,0x4F10,0x5010,0x5110,0x5210,0x5310,0x5410,0x5510, + 0x5610,0x5710,0x5810,0x5910,0x5A10,0x5B10,0x5C10,0x5D10, + 0x5E10,0x5F10,0x6010,0x6110,0x6210,0x6310,0x6410,0x6510, + 0x6610,0x6710,0x6810,0x6910,0x6A10,0x6B10,0x6C10,0x6D10, + 0x6E10,0x6F10,0x7010,0x7110,0x7210,0x7310,0x7410,0x7510, + 0x7610,0x7710,0x7810,0x7910,0x7A10,0x7B10,0x7C10,0x7D10, + 0x7E10,0x7F10,0x8010,0x8110,0x8210,0x8310,0x8410,0x8510, + 0x8610,0x8710,0x8810,0x8910,0x8A10,0x8B10,0x8C10,0x8D10, + 0x8E10,0x8F10,0x9010,0x9110,0x9210,0x9310,0x9410,0x9510, + 0x9610,0x9710,0x9810,0x9910,0x9A10,0x9B10,0x9C10,0x9D10, + 0x9E10,0x9F10,0xA010,0xA110,0xA210,0xA310,0xA410,0xA510, + 0xA610,0xA710,0xA810,0xA910,0xAA10,0xAB10,0xAC10,0xAD10, + 0xAE10,0xAF10,0xB010,0xB110,0xB210,0xB310,0xB410,0xB510, + 0xB610,0xB710,0xB810,0xB910,0xBA10,0xBB10,0xBC10,0xBD10, + 0xBE10,0xBF10,0xC010,0xC110,0xC210,0xC310,0xC410,0xC510, + 0xC610,0xC710,0xC810,0xC910,0xCA10,0xCB10,0xCC10,0xCD10, + 0xCE10,0xCF10,0xD010,0xD110,0xD210,0xD310,0xD410,0xD510, + 0xD610,0xD710,0xD810,0xD910,0xDA10,0xDB10,0xDC10,0xDD10, + 0xDE10,0xDF10,0xE010,0xE110,0xE210,0xE310,0xE410,0xE510, + 0xE610,0xE710,0xE810,0xE910,0xEA10,0xEB10,0xEC10,0xED10, + 0xEE10,0xEF10,0xF010,0xF110,0xF210,0xF310,0xF410,0xF510, + 0xF610,0xF710,0xF810,0xF910,0xFA10,0xFB10,0xFC10,0xFD10, + 0xFE10,0xFF10,0x0090,0x0110,0x0210,0x0310,0x0410,0x0510, + 0x0610,0x0710,0x0810,0x0910,0x0A10,0x0B10,0x0C10,0x0D10, + 0x0E10,0x0F10,0x1010,0x1110,0x1210,0x1310,0x1410,0x1510, + 0x1610,0x1710,0x1810,0x1910,0x1A10,0x1B10,0x1C10,0x1D10, + 0x1E10,0x1F10,0x2010,0x2110,0x2210,0x2310,0x2410,0x2510, + 0x2610,0x2710,0x2810,0x2910,0x2A10,0x2B10,0x2C10,0x2D10, + 0x2E10,0x2F10,0x3010,0x3110,0x3210,0x3310,0x3410,0x3510, + 0x3610,0x3710,0x3810,0x3910,0x3A10,0x3B10,0x3C10,0x3D10, + 0x3E10,0x3F10,0x4010,0x4110,0x4210,0x4310,0x4410,0x4510, + 0x4610,0x4710,0x4810,0x4910,0x4A10,0x4B10,0x4C10,0x4D10, + 0x4E10,0x4F10,0x5010,0x5110,0x5210,0x5310,0x5410,0x5510, + 0x5610,0x5710,0x5810,0x5910,0x5A10,0x5B10,0x5C10,0x5D10, + 0x5E10,0x5F10,0x6010,0x6110,0x6210,0x6310,0x6410,0x6510, + 0x00C0,0x0140,0x0240,0x0340,0x0440,0x0540,0x0640,0x0740, + 0x0840,0x0940,0x0A40,0x0B40,0x0C40,0x0D40,0x0E40,0x0F40, + 0x1040,0x1140,0x1240,0x1340,0x1440,0x1540,0x1640,0x1740, + 0x1840,0x1940,0x1A40,0x1B40,0x1C40,0x1D40,0x1E40,0x1F40, + 0x2040,0x2140,0x2240,0x2340,0x2440,0x2540,0x2640,0x2740, + 0x2840,0x2940,0x2A40,0x2B40,0x2C40,0x2D40,0x2E40,0x2F40, + 0x3040,0x3140,0x3240,0x3340,0x3440,0x3540,0x3640,0x3740, + 0x3840,0x3940,0x3A40,0x3B40,0x3C40,0x3D40,0x3E40,0x3F40, + 0x4040,0x4140,0x4240,0x4340,0x4440,0x4540,0x4640,0x4740, + 0x4840,0x4940,0x4A40,0x4B40,0x4C40,0x4D40,0x4E40,0x4F40, + 0x5040,0x5140,0x5240,0x5340,0x5440,0x5540,0x5640,0x5740, + 0x5840,0x5940,0x5A40,0x5B40,0x5C40,0x5D40,0x5E40,0x5F40, + 0x6040,0x6140,0x6240,0x6340,0x6440,0x6540,0x6640,0x6740, + 0x6840,0x6940,0x6A40,0x6B40,0x6C40,0x6D40,0x6E40,0x6F40, + 0x7040,0x7140,0x7240,0x7340,0x7440,0x7540,0x7640,0x7740, + 0x7840,0x7940,0x7A40,0x7B40,0x7C40,0x7D40,0x7E40,0x7F40, + 0x8040,0x8140,0x8240,0x8340,0x8440,0x8540,0x8640,0x8740, + 0x8840,0x8940,0x8A40,0x8B40,0x8C40,0x8D40,0x8E40,0x8F40, + 0x9040,0x9140,0x9240,0x9340,0x9440,0x9540,0x9640,0x9740, + 0x9840,0x9940,0x9A40,0x9B40,0x9C40,0x9D40,0x9E40,0x9F40, + 0xA040,0xA140,0xA240,0xA340,0xA440,0xA540,0xA640,0xA740, + 0xA840,0xA940,0xAA40,0xAB40,0xAC40,0xAD40,0xAE40,0xAF40, + 0xB040,0xB140,0xB240,0xB340,0xB440,0xB540,0xB640,0xB740, + 0xB840,0xB940,0xBA40,0xBB40,0xBC40,0xBD40,0xBE40,0xBF40, + 0xC040,0xC140,0xC240,0xC340,0xC440,0xC540,0xC640,0xC740, + 0xC840,0xC940,0xCA40,0xCB40,0xCC40,0xCD40,0xCE40,0xCF40, + 0xD040,0xD140,0xD240,0xD340,0xD440,0xD540,0xD640,0xD740, + 0xD840,0xD940,0xDA40,0xDB40,0xDC40,0xDD40,0xDE40,0xDF40, + 0xE040,0xE140,0xE240,0xE340,0xE440,0xE540,0xE640,0xE740, + 0xE840,0xE940,0xEA40,0xEB40,0xEC40,0xED40,0xEE40,0xEF40, + 0xF040,0xF140,0xF240,0xF340,0xF440,0xF540,0xF640,0xF740, + 0xF840,0xF940,0xFA40,0xFB40,0xFC40,0xFD40,0xFE40,0xFF40, + 0xA050,0xA150,0xA250,0xA350,0xA450,0xA550,0xA650,0xA750, + 0xA850,0xA950,0xAA50,0xAB50,0xAC50,0xAD50,0xAE50,0xAF50, + 0xB050,0xB150,0xB250,0xB350,0xB450,0xB550,0xB650,0xB750, + 0xB850,0xB950,0xBA50,0xBB50,0xBC50,0xBD50,0xBE50,0xBF50, + 0xC050,0xC150,0xC250,0xC350,0xC450,0xC550,0xC650,0xC750, + 0xC850,0xC950,0xCA50,0xCB50,0xCC50,0xCD50,0xCE50,0xCF50, + 0xD050,0xD150,0xD250,0xD350,0xD450,0xD550,0xD650,0xD750, + 0xD850,0xD950,0xDA50,0xDB50,0xDC50,0xDD50,0xDE50,0xDF50, + 0xE050,0xE150,0xE250,0xE350,0xE450,0xE550,0xE650,0xE750, + 0xE850,0xE950,0xEA50,0xEB50,0xEC50,0xED50,0xEE50,0xEF50, + 0xF050,0xF150,0xF250,0xF350,0xF450,0xF550,0xF650,0xF750, + 0xF850,0xF950,0xFA50,0xFB50,0xFC50,0xFD50,0xFE50,0xFF50, + 0x00D0,0x0150,0x0250,0x0350,0x0450,0x0550,0x0650,0x0750, + 0x0850,0x0950,0x0A50,0x0B50,0x0C50,0x0D50,0x0E50,0x0F50, + 0x1050,0x1150,0x1250,0x1350,0x1450,0x1550,0x1650,0x1750, + 0x1850,0x1950,0x1A50,0x1B50,0x1C50,0x1D50,0x1E50,0x1F50, + 0x2050,0x2150,0x2250,0x2350,0x2450,0x2550,0x2650,0x2750, + 0x2850,0x2950,0x2A50,0x2B50,0x2C50,0x2D50,0x2E50,0x2F50, + 0x3050,0x3150,0x3250,0x3350,0x3450,0x3550,0x3650,0x3750, + 0x3850,0x3950,0x3A50,0x3B50,0x3C50,0x3D50,0x3E50,0x3F50, + 0x4050,0x4150,0x4250,0x4350,0x4450,0x4550,0x4650,0x4750, + 0x4850,0x4950,0x4A50,0x4B50,0x4C50,0x4D50,0x4E50,0x4F50, + 0x5050,0x5150,0x5250,0x5350,0x5450,0x5550,0x5650,0x5750, + 0x5850,0x5950,0x5A50,0x5B50,0x5C50,0x5D50,0x5E50,0x5F50, + 0x6050,0x6150,0x6250,0x6350,0x6450,0x6550,0x6650,0x6750, + 0x6850,0x6950,0x6A50,0x6B50,0x6C50,0x6D50,0x6E50,0x6F50, + 0x7050,0x7150,0x7250,0x7350,0x7450,0x7550,0x7650,0x7750, + 0x7850,0x7950,0x7A50,0x7B50,0x7C50,0x7D50,0x7E50,0x7F50, + 0x8050,0x8150,0x8250,0x8350,0x8450,0x8550,0x8650,0x8750, + 0x8850,0x8950,0x8A50,0x8B50,0x8C50,0x8D50,0x8E50,0x8F50, + 0x9050,0x9150,0x9250,0x9350,0x9450,0x9550,0x9650,0x9750, + 0x9850,0x9950,0x9A50,0x9B50,0x9C50,0x9D50,0x9E50,0x9F50, + 0xFA40,0xFB40,0xFC40,0xFD40,0xFE40,0xFF40,0x00C0,0x0140, + 0x0240,0x0340,0x0440,0x0540,0x0640,0x0740,0x0840,0x0940, + 0x0A40,0x0B40,0x0C40,0x0D40,0x0E40,0x0F40,0x1040,0x1140, + 0x1240,0x1340,0x1440,0x1540,0x1640,0x1740,0x1840,0x1940, + 0x1A40,0x1B40,0x1C40,0x1D40,0x1E40,0x1F40,0x2040,0x2140, + 0x2240,0x2340,0x2440,0x2540,0x2640,0x2740,0x2840,0x2940, + 0x2A40,0x2B40,0x2C40,0x2D40,0x2E40,0x2F40,0x3040,0x3140, + 0x3240,0x3340,0x3440,0x3540,0x3640,0x3740,0x3840,0x3940, + 0x3A40,0x3B40,0x3C40,0x3D40,0x3E40,0x3F40,0x4040,0x4140, + 0x4240,0x4340,0x4440,0x4540,0x4640,0x4740,0x4840,0x4940, + 0x4A40,0x4B40,0x4C40,0x4D40,0x4E40,0x4F40,0x5040,0x5140, + 0x5240,0x5340,0x5440,0x5540,0x5640,0x5740,0x5840,0x5940, + 0x5A40,0x5B40,0x5C40,0x5D40,0x5E40,0x5F40,0x6040,0x6140, + 0x6240,0x6340,0x6440,0x6540,0x6640,0x6740,0x6840,0x6940, + 0x6A40,0x6B40,0x6C40,0x6D40,0x6E40,0x6F40,0x7040,0x7140, + 0x7240,0x7340,0x7440,0x7540,0x7640,0x7740,0x7840,0x7940, + 0x7A40,0x7B40,0x7C40,0x7D40,0x7E40,0x7F40,0x8040,0x8140, + 0x8240,0x8340,0x8440,0x8540,0x8640,0x8740,0x8840,0x8940, + 0x8A40,0x8B40,0x8C40,0x8D40,0x8E40,0x8F40,0x9040,0x9140, + 0x9240,0x9340,0x9440,0x9540,0x9640,0x9740,0x9840,0x9940, + 0x9A40,0x9B40,0x9C40,0x9D40,0x9E40,0x9F40,0xA040,0xA140, + 0xA240,0xA340,0xA440,0xA540,0xA640,0xA740,0xA840,0xA940, + 0xAA40,0xAB40,0xAC40,0xAD40,0xAE40,0xAF40,0xB040,0xB140, + 0xB240,0xB340,0xB440,0xB540,0xB640,0xB740,0xB840,0xB940, + 0xBA40,0xBB40,0xBC40,0xBD40,0xBE40,0xBF40,0xC040,0xC140, + 0xC240,0xC340,0xC440,0xC540,0xC640,0xC740,0xC840,0xC940, + 0xCA40,0xCB40,0xCC40,0xCD40,0xCE40,0xCF40,0xD040,0xD140, + 0xD240,0xD340,0xD440,0xD540,0xD640,0xD740,0xD840,0xD940, + 0xDA40,0xDB40,0xDC40,0xDD40,0xDE40,0xDF40,0xE040,0xE140, + 0xE240,0xE340,0xE440,0xE540,0xE640,0xE740,0xE840,0xE940, + 0xEA40,0xEB40,0xEC40,0xED40,0xEE40,0xEF40,0xF040,0xF140, + 0xF240,0xF340,0xF440,0xF540,0xF640,0xF740,0xF840,0xF940, + 0x9A50,0x9B50,0x9C50,0x9D50,0x9E50,0x9F50,0xA050,0xA150, + 0xA250,0xA350,0xA450,0xA550,0xA650,0xA750,0xA850,0xA950, + 0xAA50,0xAB50,0xAC50,0xAD50,0xAE50,0xAF50,0xB050,0xB150, + 0xB250,0xB350,0xB450,0xB550,0xB650,0xB750,0xB850,0xB950, + 0xBA50,0xBB50,0xBC50,0xBD50,0xBE50,0xBF50,0xC050,0xC150, + 0xC250,0xC350,0xC450,0xC550,0xC650,0xC750,0xC850,0xC950, + 0xCA50,0xCB50,0xCC50,0xCD50,0xCE50,0xCF50,0xD050,0xD150, + 0xD250,0xD350,0xD450,0xD550,0xD650,0xD750,0xD850,0xD950, + 0xDA50,0xDB50,0xDC50,0xDD50,0xDE50,0xDF50,0xE050,0xE150, + 0xE250,0xE350,0xE450,0xE550,0xE650,0xE750,0xE850,0xE950, + 0xEA50,0xEB50,0xEC50,0xED50,0xEE50,0xEF50,0xF050,0xF150, + 0xF250,0xF350,0xF450,0xF550,0xF650,0xF750,0xF850,0xF950, + 0xFA50,0xFB50,0xFC50,0xFD50,0xFE50,0xFF50,0x00D0,0x0150, + 0x0250,0x0350,0x0450,0x0550,0x0650,0x0750,0x0850,0x0950, + 0x0A50,0x0B50,0x0C50,0x0D50,0x0E50,0x0F50,0x1050,0x1150, + 0x1250,0x1350,0x1450,0x1550,0x1650,0x1750,0x1850,0x1950, + 0x1A50,0x1B50,0x1C50,0x1D50,0x1E50,0x1F50,0x2050,0x2150, + 0x2250,0x2350,0x2450,0x2550,0x2650,0x2750,0x2850,0x2950, + 0x2A50,0x2B50,0x2C50,0x2D50,0x2E50,0x2F50,0x3050,0x3150, + 0x3250,0x3350,0x3450,0x3550,0x3650,0x3750,0x3850,0x3950, + 0x3A50,0x3B50,0x3C50,0x3D50,0x3E50,0x3F50,0x4050,0x4150, + 0x4250,0x4350,0x4450,0x4550,0x4650,0x4750,0x4850,0x4950, + 0x4A50,0x4B50,0x4C50,0x4D50,0x4E50,0x4F50,0x5050,0x5150, + 0x5250,0x5350,0x5450,0x5550,0x5650,0x5750,0x5850,0x5950, + 0x5A50,0x5B50,0x5C50,0x5D50,0x5E50,0x5F50,0x6050,0x6150, + 0x6250,0x6350,0x6450,0x6550,0x6650,0x6750,0x6850,0x6950, + 0x6A50,0x6B50,0x6C50,0x6D50,0x6E50,0x6F50,0x7050,0x7150, + 0x7250,0x7350,0x7450,0x7550,0x7650,0x7750,0x7850,0x7950, + 0x7A50,0x7B50,0x7C50,0x7D50,0x7E50,0x7F50,0x8050,0x8150, + 0x8250,0x8350,0x8450,0x8550,0x8650,0x8750,0x8850,0x8950, + 0x8A50,0x8B50,0x8C50,0x8D50,0x8E50,0x8F50,0x9050,0x9150, + 0x9250,0x9350,0x9450,0x9550,0x9650,0x9750,0x9850,0x9950, +}; + +static const int gbCycles[] = { +// 0 1 2 3 4 5 6 7 8 9 a b c d e f + 1, 3, 2, 2, 1, 1, 2, 1, 5, 2, 2, 2, 1, 1, 2, 1, // 0 + 1, 3, 2, 2, 1, 1, 2, 1, 3, 2, 2, 2, 1, 1, 2, 1, // 1 + 2, 3, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, // 2 + 2, 3, 2, 2, 3, 3, 3, 1, 2, 2, 2, 2, 1, 1, 2, 1, // 3 + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // 4 + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // 5 + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // 6 + 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, // 7 + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // 8 + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // 9 + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // a + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, // b + 2, 3, 3, 4, 3, 4, 2, 4, 2, 4, 3, 2, 3, 6, 2, 4, // c + 2, 3, 3, 0, 3, 4, 2, 4, 2, 4, 3, 0, 3, 0, 2, 4, // d + 3, 3, 2, 0, 0, 4, 2, 4, 4, 1, 4, 0, 0, 0, 2, 4, // e + 3, 3, 2, 1, 0, 4, 2, 4, 3, 2, 4, 1, 0, 0, 2, 4 // f +}; + +static const int gbCyclesCB[] = { +// 0 1 2 3 4 5 6 7 8 9 a b c d e f + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // 0 + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // 1 + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // 2 + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // 3 + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, // 4 + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, // 5 + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, // 6 + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, // 7 + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // 8 + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // 9 + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // a + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // b + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // c + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // d + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, // e + 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2 // f +}; + +static const uint8 ZeroTable[256] = { + 0x80,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,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,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,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,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,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,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0 +}; + + + +// registers +static gbRegister PC; +static gbRegister SP; +static gbRegister AF; +static gbRegister BC; +static gbRegister DE; +static gbRegister HL; +static uint8 IFF; +static bool InHALT; +static bool RepeatNextByte; +static bool EI_Delayed; + +void GBZ80_Interrupt(int which) +{ + IFF = FALSE; + EI_Delayed = FALSE; + + register_IF &= ~(1 << which); + + gbWriteMemory(--SP.W, PC.B.B1); + gbWriteMemory(--SP.W, PC.B.B0); + PC.W = 0x40 + (which << 3); +} + +void GBZ80_Reset(void) +{ + SP.W = 0xfffe; + AF.W = 0x01b0; + BC.W = 0x0013; + DE.W = 0x00d8; + HL.W = 0x014d; + PC.W = 0x0100; + IFF = FALSE; + + EI_Delayed = FALSE; + RepeatNextByte = FALSE; + InHALT = FALSE; + + if(gbCgbMode) + { + AF.W = 0x11b0; + BC.W = 0x0000; + DE.W = 0xff56; + HL.W = 0x000d; + if(gbEmulatorType == 4) + BC.B.B1 |= 0x01; + } +} + +// Returns the number of cycles this instruction took +int GBZ80_RunOp(void) +{ + int clockTicks; + uint8 opcode; + gbRegister tempRegister; + uint8 tempValue; + int8 offset; + + + // HALT will be exited even when interrupts are disabled by IFF + if(register_IF & register_IE) + InHALT = FALSE; + + if(IFF) + { + if(register_IF & register_IE & 0x01) + GBZ80_Interrupt(0); + else if(register_IF & register_IE & 0x02) + GBZ80_Interrupt(1); + else if(register_IF & register_IE & 0x04) + GBZ80_Interrupt(2); + else if(register_IF & register_IE & 0x08) + GBZ80_Interrupt(3); + else if(register_IF & register_IE & 0x10) + GBZ80_Interrupt(4); + } + + if(EI_Delayed) + { + IFF = TRUE; + EI_Delayed = FALSE; + } + + if(InHALT) + return(4); + + opcode = gbReadMemory(PC.W++); + + if(RepeatNextByte) + { + RepeatNextByte = FALSE; + PC.W--; + } + + clockTicks = gbCycles[opcode]; + + switch(opcode) + { + case 0xCB: + // extended opcode + opcode = gbReadMemory(PC.W++); + clockTicks = gbCyclesCB[opcode]; + switch(opcode) + { + #include "gbCodesCB.h" + } + break; + + #include "gbCodes.h" + } + + return(clockTicks); +} + +int GBZ80_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(PC.W), + SFVAR(SP.W), + SFVAR(AF.W), + SFVAR(BC.W), + SFVAR(DE.W), + SFVAR(HL.W), + SFVAR(IFF), + SFVAR(InHALT), + SFVAR(RepeatNextByte), + SFVAR(EI_Delayed), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "CPU"); + + if(load) + { + + } + + return(ret); +} + +} diff --git a/libmednahawk/src/gb/z80.h b/libmednahawk/src/gb/z80.h new file mode 100644 index 0000000000..44143766e8 --- /dev/null +++ b/libmednahawk/src/gb/z80.h @@ -0,0 +1,13 @@ +#ifndef __GB_Z80_H +#define __GB_Z80_H + +namespace MDFN_IEN_GB +{ + +int GBZ80_RunOp(void); +void GBZ80_Reset(void); +void GBZ80_Interrupt(int which); +int GBZ80_StateAction(StateMem *sm, int load, int data_only); + +} +#endif diff --git a/libmednahawk/src/gba/GBA.cpp b/libmednahawk/src/gba/GBA.cpp new file mode 100644 index 0000000000..8f16ef9941 --- /dev/null +++ b/libmednahawk/src/gba/GBA.cpp @@ -0,0 +1,3434 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "../general.h" +#include "../player.h" +#include "../file.h" +#include "../state.h" +#include "../movie.h" +#include "../mempatcher.h" +#include "../md5.h" +#include "GBAinline.h" +#include "Globals.h" +#include "Gfx.h" +#include "eeprom.h" +#include "flash.h" +#include "Sound.h" +#include "sram.h" +#include "bios.h" +#include "Port.h" + +#include "arm.h" +#include "thumb.h" + +#include +#include +#include +#include +#include + +#include "../PSFLoader.h" + +namespace MDFN_IEN_GBA +{ + +class GSFLoader : public PSFLoader +{ + public: + + GSFLoader(MDFNFILE *fp); + virtual ~GSFLoader(); + + virtual void HandleEXE(const uint8 *data, uint32 len, bool ignore_pcsp = false); + + PSFTags tags; +}; + +static GSFLoader *gsf_loader = NULL; + + +static bool CPUInit(const std::string bios_fn); +static void CPUReset(void); + +#define UPDATE_REG(address, value)\ + {\ + WRITE16LE(((uint16 *)&ioMem[address]),value);\ + }\ + +#ifdef __GNUC__ +#define _stricmp strcasecmp +#endif + +RTC *GBA_RTC = NULL; + +int SWITicks = 0; +int IRQTicks = 0; + +int layerEnableDelay = 0; +bool busPrefetch = false; +bool busPrefetchEnable = false; +uint32 busPrefetchCount = 0; +int cpuDmaTicksToUpdate = 0; +int cpuDmaCount = 0; +bool cpuDmaHack = false; +uint32 cpuDmaLast = 0; +int dummyAddress = 0; + +bool cpuBreakLoop = false; +int cpuNextEvent = 0; + +static bool intState = false; +static bool stopState = false; +static bool holdState = false; +static int holdType = 0; + +static bool FlashSizeSet; // Set to TRUE if explicitly set by the user +bool cpuSramEnabled; +bool cpuFlashEnabled; +bool cpuEEPROMEnabled; +bool cpuEEPROMSensorEnabled; + +uint32 cpuPrefetch[2]; + +int cpuTotalTicks = 0; +static int lcdTicks; +uint8 timerOnOffDelay = 0; + +GBATimer timers[4]; + +uint32 dmaSource[4] = {0}; +uint32 dmaDest[4] = {0}; +void (*renderLine)() = mode0RenderLine; +bool fxOn = false; +bool windowOn = false; + +static const int TIMER_TICKS[4] = +{ + 0, + 6, + 8, + 10 +}; + +const uint32 objTilesAddress [3] = {0x010000, 0x014000, 0x014000}; +const uint8 gamepakRamWaitState[4] = { 4, 3, 2, 8 }; +const uint8 gamepakWaitState[4] = { 4, 3, 2, 8 }; +const uint8 gamepakWaitState0[2] = { 2, 1 }; +const uint8 gamepakWaitState1[2] = { 4, 1 }; +const uint8 gamepakWaitState2[2] = { 8, 1 }; +const bool isInRom [16]= + { false, false, false, false, false, false, false, false, + true, true, true, true, true, true, false, false }; + +uint8 memoryWait[16] = + { 0, 0, 2, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0 }; +uint8 memoryWait32[16] = + { 0, 0, 5, 0, 0, 1, 1, 0, 7, 7, 9, 9, 13, 13, 4, 0 }; +uint8 memoryWaitSeq[16] = + { 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 4, 4, 8, 8, 4, 0 }; +uint8 memoryWaitSeq32[16] = + { 0, 0, 5, 0, 0, 1, 1, 0, 5, 5, 9, 9, 17, 17, 4, 0 }; + +// The videoMemoryWait constants are used to add some waitstates +// if the opcode access video memory data outside of vblank/hblank +// It seems to happen on only one ticks for each pixel. +// Not used for now (too problematic with current code). +//const uint8 videoMemoryWait[16] = +// {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + + +uint8 biosProtected[4]; + +static const uint32 myROM[] = +{ + #include "myrom.h" +}; + +static uint32 *systemColorMap32 = NULL; // 65536 +static uint8 *CustomColorMap = NULL; // 32768 * 3 +static int romSize = 0x2000000; + +static INLINE int CPUUpdateTicks() +{ + int cpuLoopTicks = lcdTicks; + + if(timers[0].On && (timers[0].Ticks < cpuLoopTicks)) { + cpuLoopTicks = timers[0].Ticks; + } + if(timers[1].On && !(timers[1].CNT & 4) && (timers[1].Ticks < cpuLoopTicks)) { + cpuLoopTicks = timers[1].Ticks; + } + if(timers[2].On && !(timers[2].CNT & 4) && (timers[2].Ticks < cpuLoopTicks)) { + cpuLoopTicks = timers[2].Ticks; + } + if(timers[3].On && !(timers[3].CNT & 4) && (timers[3].Ticks < cpuLoopTicks)) { + cpuLoopTicks = timers[3].Ticks; + } + + if (SWITicks) { + if (SWITicks < cpuLoopTicks) + cpuLoopTicks = SWITicks; + } + + if (IRQTicks) { + if (IRQTicks < cpuLoopTicks) + cpuLoopTicks = IRQTicks; + } + return cpuLoopTicks; +} + +void CPUUpdateWindow0() +{ + int x00 = WIN0H>>8; + int x01 = WIN0H & 255; + + if(x00 <= x01) { + for(int i = 0; i < 240; i++) { + gfxInWin0[i] = (i >= x00 && i < x01); + } + } else { + for(int i = 0; i < 240; i++) { + gfxInWin0[i] = (i >= x00 || i < x01); + } + } +} + +void CPUUpdateWindow1() +{ + int x00 = WIN1H>>8; + int x01 = WIN1H & 255; + + if(x00 <= x01) { + for(int i = 0; i < 240; i++) { + gfxInWin1[i] = (i >= x00 && i < x01); + } + } else { + for(int i = 0; i < 240; i++) { + gfxInWin1[i] = (i >= x00 || i < x01); + } + } +} + +#define CLEAR_ARRAY(a) \ + {\ + uint32 *array = (a);\ + for(int i = 0; i < 240; i++) {\ + *array++ = 0x80000000;\ + }\ + }\ + +void CPUUpdateRenderBuffers(bool force) +{ + if(!(layerEnable & 0x0100) || force) { + CLEAR_ARRAY(line0); + } + if(!(layerEnable & 0x0200) || force) { + CLEAR_ARRAY(line1); + } + if(!(layerEnable & 0x0400) || force) { + CLEAR_ARRAY(line2); + } + if(!(layerEnable & 0x0800) || force) { + CLEAR_ARRAY(line3); + } +} + +extern SFORMAT eepromSaveData[]; + +static uint16 padbufblah; +static SFORMAT Joy_StateRegs[] = +{ + SFVAR( padbufblah), + SFEND +}; + +static int StateAction(StateMem *sm, int load, int data_only) +{ + int ret = 1; + + SFORMAT StateRegs[] = + { + // Type-cast to uint32* so the macro will work(they really are 32-bit elements, just wrapped up in a union) + SFARRAY32N((uint32 *)reg, sizeof(reg) / sizeof(reg_pair), "reg"), + + SFVAR(busPrefetch), + SFVAR(busPrefetchEnable), + SFVAR(busPrefetchCount), + SFVAR(cpuDmaHack), + SFVAR(cpuDmaLast), + SFVAR(cpuDmaTicksToUpdate), + SFVAR(cpuDmaCount), + SFVAR(stopState), + SFVAR(intState), + SFVAR(DISPCNT), + SFVAR(DISPSTAT), + SFVAR(VCOUNT), + SFVAR(BG0CNT), + SFVAR(BG1CNT), + SFVAR(BG2CNT), + SFVAR(BG3CNT), + + + SFARRAY16(BGHOFS, 4), + SFARRAY16(BGVOFS, 4), + + SFVAR(BG2PA), + SFVAR(BG2PB), + SFVAR(BG2PC), + SFVAR(BG2PD), + SFVAR(BG2X_L), + SFVAR(BG2X_H), + SFVAR(BG2Y_L), + SFVAR(BG2Y_H), + + SFVAR(BG3PA), + SFVAR(BG3PB), + SFVAR(BG3PC), + SFVAR(BG3PD), + SFVAR(BG3X_L), + SFVAR(BG3X_H), + SFVAR(BG3Y_L), + SFVAR(BG3Y_H), + SFVAR(WIN0H), + SFVAR(WIN1H), + SFVAR(WIN0V), + SFVAR(WIN1V), + SFVAR(WININ), + SFVAR(WINOUT), + SFVAR(MOSAIC), + SFVAR(BLDMOD), + SFVAR(COLEV), + SFVAR(COLY), + + SFARRAY16(DMSAD_L, 4), + SFARRAY16(DMSAD_H, 4), + SFARRAY16(DMDAD_L, 4), + SFARRAY16(DMDAD_H, 4), + SFARRAY16(DMCNT_L, 4), + SFARRAY16(DMCNT_H, 4), + + SFVAR(timers[0].D), + SFVAR(timers[0].CNT), + SFVAR(timers[1].D), + SFVAR(timers[1].CNT), + SFVAR(timers[2].D), + SFVAR(timers[2].CNT), + SFVAR(timers[3].D), + SFVAR(timers[3].CNT), + + SFVAR(P1), + SFVAR(IE), + SFVAR(IF), + SFVAR(IME), + + SFVAR(holdState), + SFVAR(holdType), + SFVAR(lcdTicks), + + SFVAR(timers[0].On), + SFVAR(timers[0].Ticks), + SFVAR(timers[0].Reload), + SFVAR(timers[0].ClockReload), + + SFVAR(timers[1].On), + SFVAR(timers[1].Ticks), + SFVAR(timers[1].Reload), + SFVAR(timers[1].ClockReload), + + SFVAR(timers[2].On), + SFVAR(timers[2].Ticks), + SFVAR(timers[2].Reload), + SFVAR(timers[2].ClockReload), + + SFVAR(timers[3].On), + SFVAR(timers[3].Ticks), + SFVAR(timers[3].Reload), + SFVAR(timers[3].ClockReload), + + SFARRAY32(dmaSource, 4), + SFARRAY32(dmaDest, 4), + + SFVAR(fxOn), + SFVAR(windowOn), + + SFVAR(N_FLAG), + SFVAR(C_FLAG), + SFVAR(Z_FLAG), + SFVAR(V_FLAG), + SFVAR(armState), + SFVAR(armIrqEnable), + SFVAR(armNextPC), + SFVAR(armMode), + + SFVAR(cpuSramEnabled), + SFVAR(cpuFlashEnabled), + SFVAR(cpuEEPROMEnabled), + SFVAR(cpuEEPROMSensorEnabled), + + SFEND + }; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + + SFORMAT RAMState[] = + { + SFARRAY(internalRAM, 0x8000), + SFARRAY(paletteRAM, 0x400), + SFARRAY(workRAM, 0x40000), + SFARRAY(vram, 0x20000), + SFARRAY(oam, 0x400), + SFARRAY(ioMem, 0x400), + SFEND + }; + + ret &= MDFNSS_StateAction(sm, load, data_only, RAMState, "RAM"); + + if(cpuEEPROMEnabled) + ret &= MDFNSS_StateAction(sm, load, data_only, eepromSaveData, "EEPR"); + + ret &= GBA_Flash_StateAction(sm, load, data_only); + + if(GBA_RTC) + ret &= GBA_RTC->StateAction(sm, load, data_only); + + ret &= MDFNSS_StateAction(sm, load, data_only, Joy_StateRegs, "JOY"); + ret &= MDFNGBASOUND_StateAction(sm, load, data_only); + + if(load) + { + // set pointers! + layerEnable = layerSettings & DISPCNT; + + CPUUpdateRender(); + CPUUpdateRenderBuffers(true); + CPUUpdateWindow0(); + CPUUpdateWindow1(); + + if(armState) { + ARM_PREFETCH; + } else { + THUMB_PREFETCH; + } + CPUUpdateRegister(0x204, CPUReadHalfWordQuick(0x4000204)); + } + return(ret); +} + +bool CPUWriteBatteryFile(const char *filename) +{ + if(cpuSramEnabled || cpuFlashEnabled) + { + if(cpuSramEnabled) + { + if(!MDFN_DumpToFile(filename, 6, flashSaveMemory, 0x10000)) + return(0); + } + else if(cpuFlashEnabled) + { + if(!MDFN_DumpToFile(filename, 6, flashSaveMemory, flashSize)) + return(0); + } + return(TRUE); + } + return(FALSE); +} + +bool CPUReadBatteryFile(const char *filename) +{ + gzFile gp = gzopen(filename, "rb"); + long size; + + if(!gp) + return(FALSE); + + size = 0; + while(gzgetc(gp) != EOF) + size++; + + if(size == 512 || size == 0x2000) // Load the file as EEPROM for Mednafen < 0.8.2 + { + gzclose(gp); + + if(cpuEEPROMEnabled) + { + puts("note: Loading sav file as eeprom data"); + GBA_EEPROM_LoadFile(filename); + } + return(FALSE); + } + + gzseek(gp, 0, SEEK_SET); + + if(size == 0x20000) + { + if(gzread(gp, flashSaveMemory, 0x20000) != 0x20000) + { + gzclose(gp); + return(FALSE); + } + if(!FlashSizeSet) + { + flashSetSize(0x20000); + FlashSizeSet = TRUE; + } + } + else + { + if(gzread(gp, flashSaveMemory, 0x10000) != 0x10000) + { + gzclose(gp); + return(FALSE); + } + if(!FlashSizeSet) + { + flashSetSize(0x10000); + FlashSizeSet = TRUE; + } + } + gzclose(gp); + return(TRUE); +} + +void CPUCleanUp() +{ + if(rom) + { + MDFN_free(rom); + rom = NULL; + } + + if(vram) + { + MDFN_free(vram); + vram = NULL; + } + + if(paletteRAM) + { + MDFN_free(paletteRAM); + paletteRAM = NULL; + } + + if(internalRAM) + { + MDFN_free(internalRAM); + internalRAM = NULL; + } + + if(workRAM) + { + MDFN_free(workRAM); + workRAM = NULL; + } + + if(bios) + { + MDFN_free(bios); + bios = NULL; + } + + if(pix) + { + MDFN_free(pix); + pix = NULL; + } + + if(oam) + { + MDFN_free(oam); + oam = NULL; + } + + if(ioMem) + { + MDFN_free(ioMem); + ioMem = NULL; + } + + if(systemColorMap32) + { + MDFN_free(systemColorMap32); + systemColorMap32 = NULL; + } + + GBA_Flash_Kill(); + + if(GBA_RTC) + { + delete GBA_RTC; + GBA_RTC = NULL; + } +} + +static void CloseGame(void) +{ + if(!gsf_loader) + { + GBA_EEPROM_SaveFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "eep").c_str()); + CPUWriteBatteryFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str()); + } + + // Call CPUCleanUp() to deallocate memory AFTER the backup memory is saved. + CPUCleanUp(); + + if(gsf_loader) + { + delete gsf_loader; + gsf_loader = NULL; + } +} + +GSFLoader::GSFLoader(MDFNFILE *fp) +{ + tags = Load(0x22, 1024 * 1024 * 32 + 12, fp); +} + +GSFLoader::~GSFLoader() +{ + +} + +void GSFLoader::HandleEXE(const uint8 *data, uint32 size, bool ignore_pcsp) +{ + uint32 entry_point, gsf_offset, copy_size; + + if(size < 12) + throw(MDFN_Error(0, "GSF program section is too small.")); + + entry_point = MDFN_de32lsb(data + 0); + gsf_offset = MDFN_de32lsb(data + 4); + copy_size = MDFN_de32lsb(data + 8); + + //printf("0x%08x\n", entry_point); + + if(copy_size > (size - 12)) + throw(MDFN_Error(0, "GSF program section size header specifies more data than is available.")); + + if(gsf_offset >= 0x8000000 && gsf_offset < (0x8000000 + 0x2000000)) // ROM region + { + if((gsf_offset + copy_size - 0x8000000) > 0x2000000) + throw(MDFN_Error(0, "GSF program section offset+size exceeds region bounds.")); + else + memcpy(rom + gsf_offset - 0x8000000, data + 12, copy_size); + } + else if(gsf_offset >= 0x2000000 && gsf_offset < (0x2000000 + 0x40000)) // Multiboot/RAM region + { + if((gsf_offset + copy_size - 0x2000000) > 0x40000) + throw(MDFN_Error(0, "GSF program section offset+size exceeds region bounds.")); + else + memcpy(workRAM + gsf_offset - 0x2000000, data + 12, copy_size); + } + else + throw(MDFN_Error(0, "GSF program section offset specifies an unknown/unsupported region.")); +} + + +static void RedoColorMap(const MDFN_PixelFormat &format) //int rshift, int gshift, int bshift) +{ + if(CustomColorMap) + { + for(int x = 0; x < 65536; x++) + { + int r = CustomColorMap[(x & 0x7FFF) * 3 + 0]; + int g = CustomColorMap[(x & 0x7FFF) * 3 + 1]; + int b = CustomColorMap[(x & 0x7FFF) * 3 + 2]; + + systemColorMap32[x] = format.MakeColor(r, g, b); + } + } + else + { + for(int x = 0; x < 65536; x++) + { + int r, g, b; + + r = (x & 0x1F) << 3; + g = ((x & 0x3E0) >> 5) << 3; + b = ((x & 0x7C00) >> 10) << 3; + + systemColorMap32[x] = format.MakeColor(r, g, b); + } + } +} + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(!memcmp(fp->data, "PSF\x22", 4)) + return(TRUE); + + if(!strcasecmp(fp->ext, "gba") || !strcasecmp(fp->ext, "agb")) + return(TRUE); + + if(fp->size >= 192 && !strcasecmp(fp->ext, "bin")) + { + if((fp->data[0xb2] == 0x96 && fp->data[0xb3] == 0x00) || (fp->data[0] == 0x2E && fp->data[3] == 0xEA)) + return(TRUE); + } + + return(FALSE); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + layerSettings = 0xFF00; + + if(!(rom = (uint8 *)MDFN_malloc(0x2000000, _("ROM")))) + return(0); + + memset(rom, 0xFF, 0x2000000); + + if(!(workRAM = (uint8 *)MDFN_calloc(1, 0x40000, _("Work RAM")))) + { + MDFN_free(rom); + return(0); + } + + + if(!memcmp(fp->data, "PSF\x22", 4)) + { + try + { + gsf_loader = new GSFLoader(fp); + + std::vector SongNames; + + SongNames.push_back(gsf_loader->tags.GetTag("title")); + + Player_Init(1, gsf_loader->tags.GetTag("game"), gsf_loader->tags.GetTag("artist"), gsf_loader->tags.GetTag("copyright"), SongNames); + } + catch(std::exception &e) + { + MDFN_PrintError("%s\n", e.what()); + MDFN_free(workRAM); + MDFN_free(rom); + return(0); + } + } + else + { + uint32 size = fp->size; + uint8 *whereToLoad; + + if(cpuIsMultiBoot) + { + whereToLoad = workRAM; + if(size > 0x40000) + size = 0x40000; + } + else + { + whereToLoad = rom; + if(size > 0x2000000) + size = 0x2000000; + } + + memcpy(whereToLoad, fp->data, size); + + md5_context md5; + md5.starts(); + md5.update(fp->data, size); + md5.finish(MDFNGameInfo->MD5); + + MDFN_printf(_("ROM: %dKiB\n"), (size + 1023) / 1024); + MDFN_printf(_("ROM CRC32: 0x%08x\n"), (unsigned int)crc32(0, fp->data, size)); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + uint16 *temp = (uint16 *)(rom+((size+1)&~1)); + int i; + + for(i = (size+1)&~1; i < 0x2000000; i+=2) + { + WRITE16LE(temp, (i >> 1) & 0xFFFF); + temp++; + } + } + + if(!(bios = (uint8 *)MDFN_calloc(1, 0x4000, _("BIOS ROM")))) + { + CPUCleanUp(); + return 0; + } + + if(!(internalRAM = (uint8 *)MDFN_calloc(1, 0x8000, _("Internal RAM")))) + { + CPUCleanUp(); + return 0; + } + + if(!(paletteRAM = (uint8 *)MDFN_calloc(1, 0x400, _("Palette RAM")))) + { + CPUCleanUp(); + return 0; + } + + if(!(vram = (uint8 *)MDFN_calloc(1, 0x20000, _("VRAM")))) + { + CPUCleanUp(); + return 0; + } + + if(!(oam = (uint8 *)MDFN_calloc(1, 0x400, _("OAM")))) + { + CPUCleanUp(); + return 0; + } + + if(!(ioMem = (uint8 *)MDFN_calloc(1, 0x400, _("IO")))) + { + CPUCleanUp(); + return 0; + } + + if(!(systemColorMap32 = (uint32*)MDFN_malloc(65536 * sizeof(uint32), _("GBA Color Map")))) + { + CPUCleanUp(); + return(0); + } + + CPUUpdateRenderBuffers(true); + + MDFNGameInfo->GameSetMD5Valid = FALSE; + + MDFNGBASOUND_Init(); + + if(!gsf_loader) + { + MDFNMP_Init(0x8000, (1 << 28) / 0x8000); + + MDFNMP_AddRAM(0x40000, 0x2 << 24, workRAM); + MDFNMP_AddRAM(0x08000, 0x3 << 24, internalRAM); + } + + if(!CPUInit(gsf_loader ? std::string("") : MDFN_GetSettingS("gba.bios"))) + { + CPUCleanUp(); + return(0); + } + CPUReset(); + + GBA_Flash_Init(); + eepromInit(); + + if(!gsf_loader) + { + // EEPROM might be loaded from within CPUReadBatteryFile for support for Mednafen < 0.8.2, so call before GBA_EEPROM_LoadFile(), which + // is more specific...kinda. + if(cpuSramEnabled || cpuFlashEnabled) + CPUReadBatteryFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str()); + + if(cpuEEPROMEnabled) + GBA_EEPROM_LoadFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "eep").c_str()); + } + + std::string colormap_fn = MDFN_MakeFName(MDFNMKF_PALETTE, 0, NULL).c_str(); + + { + MDFN_printf(_("Loading custom palette from \"%s\"...\n"), colormap_fn.c_str()); + MDFN_indent(1); + gzFile gp = gzopen(colormap_fn.c_str(), "rb"); + if(!gp) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error opening file: %s\n"), ene.StrError()); // FIXME, zlib and errno... + MDFN_indent(-1); + + if(ene.Errno() != ENOENT) + { + CPUCleanUp(); + return(0); + } + } + else if((CustomColorMap = (uint8*)MDFN_malloc(32768 * 3, _("custom color map")))) + { + if(gzread(gp, CustomColorMap, 32768 * 3) != 32768 * 3) + { + MDFN_printf(_("Error reading file\n")); + MDFN_indent(-1); + MDFN_free(CustomColorMap); + CustomColorMap = NULL; + CPUCleanUp(); + return(0); + } + else + { + + } + } + MDFN_indent(-1); + } + + return(1); +} + +void doMirroring (bool b) +{ + uint32 mirroredRomSize = (((romSize)>>20) & 0x3F)<<20; + uint32 mirroredRomAddress = romSize; + if ((mirroredRomSize <=0x800000) && (b)) + { + mirroredRomAddress = mirroredRomSize; + if (mirroredRomSize==0) + mirroredRomSize=0x100000; + while (mirroredRomAddress<0x01000000) + { + memcpy ((uint16 *)(rom+mirroredRomAddress), (uint16 *)(rom), mirroredRomSize); + mirroredRomAddress+=mirroredRomSize; + } + } +} + +void CPUUpdateRender() +{ + switch(DISPCNT & 7) { + case 0: + if((!fxOn && !windowOn && !(layerEnable & 0x8000)) || + cpuDisableSfx) + renderLine = mode0RenderLine; + else if(fxOn && !windowOn && !(layerEnable & 0x8000)) + renderLine = mode0RenderLineNoWindow; + else + renderLine = mode0RenderLineAll; + break; + case 1: + if((!fxOn && !windowOn && !(layerEnable & 0x8000)) || + cpuDisableSfx) + renderLine = mode1RenderLine; + else if(fxOn && !windowOn && !(layerEnable & 0x8000)) + renderLine = mode1RenderLineNoWindow; + else + renderLine = mode1RenderLineAll; + break; + case 2: + if((!fxOn && !windowOn && !(layerEnable & 0x8000)) || + cpuDisableSfx) + renderLine = mode2RenderLine; + else if(fxOn && !windowOn && !(layerEnable & 0x8000)) + renderLine = mode2RenderLineNoWindow; + else + renderLine = mode2RenderLineAll; + break; + case 3: + if((!fxOn && !windowOn && !(layerEnable & 0x8000)) || + cpuDisableSfx) + renderLine = mode3RenderLine; + else if(fxOn && !windowOn && !(layerEnable & 0x8000)) + renderLine = mode3RenderLineNoWindow; + else + renderLine = mode3RenderLineAll; + break; + case 4: + if((!fxOn && !windowOn && !(layerEnable & 0x8000)) || + cpuDisableSfx) + renderLine = mode4RenderLine; + else if(fxOn && !windowOn && !(layerEnable & 0x8000)) + renderLine = mode4RenderLineNoWindow; + else + renderLine = mode4RenderLineAll; + break; + case 5: + if((!fxOn && !windowOn && !(layerEnable & 0x8000)) || + cpuDisableSfx) + renderLine = mode5RenderLine; + else if(fxOn && !windowOn && !(layerEnable & 0x8000)) + renderLine = mode5RenderLineNoWindow; + else + renderLine = mode5RenderLineAll; + default: + break; + } +} + +void CPUUpdateCPSR() +{ + uint32 CPSR = reg[16].I & 0x40; + if(N_FLAG) + CPSR |= 0x80000000; + if(Z_FLAG) + CPSR |= 0x40000000; + if(C_FLAG) + CPSR |= 0x20000000; + if(V_FLAG) + CPSR |= 0x10000000; + if(!armState) + CPSR |= 0x00000020; + if(!armIrqEnable) + CPSR |= 0x80; + CPSR |= (armMode & 0x1F); + reg[16].I = CPSR; +} + +void CPUUpdateFlags(bool breakLoop) +{ + uint32 CPSR = reg[16].I; + + N_FLAG = (CPSR & 0x80000000) ? true: false; + Z_FLAG = (CPSR & 0x40000000) ? true: false; + C_FLAG = (CPSR & 0x20000000) ? true: false; + V_FLAG = (CPSR & 0x10000000) ? true: false; + armState = (CPSR & 0x20) ? false : true; + armIrqEnable = (CPSR & 0x80) ? false : true; + if(breakLoop) { + if (armIrqEnable && (IF & IE) && (IME & 1)) + cpuNextEvent = cpuTotalTicks; + } +} + +void CPUUpdateFlags() +{ + CPUUpdateFlags(true); +} + +#ifndef LSB_FIRST +static void CPUSwap(volatile uint32 *a, volatile uint32 *b) +{ + volatile uint32 c = *b; + *b = *a; + *a = c; +} +#else +static void CPUSwap(uint32 *a, uint32 *b) +{ + uint32 c = *b; + *b = *a; + *a = c; +} +#endif + +void CPUSwitchMode(int mode, bool saveState, bool breakLoop) +{ + // if(armMode == mode) + // return; + + CPUUpdateCPSR(); + + switch(armMode) { + case 0x10: + case 0x1F: + reg[R13_USR].I = reg[13].I; + reg[R14_USR].I = reg[14].I; + reg[17].I = reg[16].I; + break; + case 0x11: + CPUSwap(®[R8_FIQ].I, ®[8].I); + CPUSwap(®[R9_FIQ].I, ®[9].I); + CPUSwap(®[R10_FIQ].I, ®[10].I); + CPUSwap(®[R11_FIQ].I, ®[11].I); + CPUSwap(®[R12_FIQ].I, ®[12].I); + reg[R13_FIQ].I = reg[13].I; + reg[R14_FIQ].I = reg[14].I; + reg[SPSR_FIQ].I = reg[17].I; + break; + case 0x12: + reg[R13_IRQ].I = reg[13].I; + reg[R14_IRQ].I = reg[14].I; + reg[SPSR_IRQ].I = reg[17].I; + break; + case 0x13: + reg[R13_SVC].I = reg[13].I; + reg[R14_SVC].I = reg[14].I; + reg[SPSR_SVC].I = reg[17].I; + break; + case 0x17: + reg[R13_ABT].I = reg[13].I; + reg[R14_ABT].I = reg[14].I; + reg[SPSR_ABT].I = reg[17].I; + break; + case 0x1b: + reg[R13_UND].I = reg[13].I; + reg[R14_UND].I = reg[14].I; + reg[SPSR_UND].I = reg[17].I; + break; + } + + uint32 CPSR = reg[16].I; + uint32 SPSR = reg[17].I; + + switch(mode) { + case 0x10: + case 0x1F: + reg[13].I = reg[R13_USR].I; + reg[14].I = reg[R14_USR].I; + reg[16].I = SPSR; + break; + case 0x11: + CPUSwap(®[8].I, ®[R8_FIQ].I); + CPUSwap(®[9].I, ®[R9_FIQ].I); + CPUSwap(®[10].I, ®[R10_FIQ].I); + CPUSwap(®[11].I, ®[R11_FIQ].I); + CPUSwap(®[12].I, ®[R12_FIQ].I); + reg[13].I = reg[R13_FIQ].I; + reg[14].I = reg[R14_FIQ].I; + if(saveState) + reg[17].I = CPSR; + else + reg[17].I = reg[SPSR_FIQ].I; + break; + case 0x12: + reg[13].I = reg[R13_IRQ].I; + reg[14].I = reg[R14_IRQ].I; + reg[16].I = SPSR; + if(saveState) + reg[17].I = CPSR; + else + reg[17].I = reg[SPSR_IRQ].I; + break; + case 0x13: + reg[13].I = reg[R13_SVC].I; + reg[14].I = reg[R14_SVC].I; + reg[16].I = SPSR; + if(saveState) + reg[17].I = CPSR; + else + reg[17].I = reg[SPSR_SVC].I; + break; + case 0x17: + reg[13].I = reg[R13_ABT].I; + reg[14].I = reg[R14_ABT].I; + reg[16].I = SPSR; + if(saveState) + reg[17].I = CPSR; + else + reg[17].I = reg[SPSR_ABT].I; + break; + case 0x1b: + reg[13].I = reg[R13_UND].I; + reg[14].I = reg[R14_UND].I; + reg[16].I = SPSR; + if(saveState) + reg[17].I = CPSR; + else + reg[17].I = reg[SPSR_UND].I; + break; + default: + //systemMessage(MSG_UNSUPPORTED_ARM_MODE, N_("Unsupported ARM mode %02x"), mode); + break; + } + armMode = mode; + CPUUpdateFlags(breakLoop); + CPUUpdateCPSR(); +} + +void CPUSwitchMode(int mode, bool saveState) +{ + CPUSwitchMode(mode, saveState, true); +} + +void CPUUndefinedException() +{ + uint32 PC = reg[15].I; + bool savedArmState = armState; + CPUSwitchMode(0x1b, true, false); + reg[14].I = PC - (savedArmState ? 4 : 2); + reg[15].I = 0x04; + armState = true; + armIrqEnable = false; + armNextPC = 0x04; + ARM_PREFETCH; + reg[15].I += 4; +} + +void CPUSoftwareInterrupt() +{ + uint32 PC = reg[15].I; + bool savedArmState = armState; + CPUSwitchMode(0x13, true, false); + reg[14].I = PC - (savedArmState ? 4 : 2); + reg[15].I = 0x08; + armState = true; + armIrqEnable = false; + armNextPC = 0x08; + ARM_PREFETCH; + reg[15].I += 4; +} + +void CPUSoftwareInterrupt(int comment) +{ + static bool disableMessage = false; + if(armState) comment >>= 16; + if(comment == 0xfa) { + return; + } + if(useBios) { + CPUSoftwareInterrupt(); + return; + } + // This would be correct, but it causes problems if uncommented + // else { + // biosProtected = 0xe3a02004; + // } + + switch(comment) { + case 0x00: + BIOS_SoftReset(); + ARM_PREFETCH; + break; + case 0x01: + BIOS_RegisterRamReset(); + break; + case 0x02: + holdState = true; + holdType = -1; + cpuNextEvent = cpuTotalTicks; + break; + case 0x03: + holdState = true; + holdType = -1; + stopState = true; + cpuNextEvent = cpuTotalTicks; + break; + case 0x04: + CPUSoftwareInterrupt(); + break; + case 0x05: + CPUSoftwareInterrupt(); + break; + case 0x06: + CPUSoftwareInterrupt(); + break; + case 0x07: + CPUSoftwareInterrupt(); + break; + case 0x08: + BIOS_Sqrt(); + break; + case 0x09: + BIOS_ArcTan(); + break; + case 0x0A: + BIOS_ArcTan2(); + break; + case 0x0B: + { + int len = (reg[2].I & 0x1FFFFF) >>1; + if (!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + len) & 0xe000000) == 0)) + { + if ((reg[2].I >> 24) & 1) + { + if ((reg[2].I >> 26) & 1) + SWITicks = (7 + memoryWait32[(reg[1].I>>24) & 0xF]) * (len>>1); + else + SWITicks = (8 + memoryWait[(reg[1].I>>24) & 0xF]) * (len); + } + else + { + if ((reg[2].I >> 26) & 1) + SWITicks = (10 + memoryWait32[(reg[0].I>>24) & 0xF] + + memoryWait32[(reg[1].I>>24) & 0xF]) * (len>>1); + else + SWITicks = (11 + memoryWait[(reg[0].I>>24) & 0xF] + + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + } + } + BIOS_CpuSet(); + break; + case 0x0C: + { + int len = (reg[2].I & 0x1FFFFF) >>5; + if (!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + len) & 0xe000000) == 0)) + { + if ((reg[2].I >> 24) & 1) + SWITicks = (6 + memoryWait32[(reg[1].I>>24) & 0xF] + + 7 * (memoryWaitSeq32[(reg[1].I>>24) & 0xF] + 1)) * len; + else + SWITicks = (9 + memoryWait32[(reg[0].I>>24) & 0xF] + + memoryWait32[(reg[1].I>>24) & 0xF] + + 7 * (memoryWaitSeq32[(reg[0].I>>24) & 0xF] + + memoryWaitSeq32[(reg[1].I>>24) & 0xF] + 2)) * len; + } + } + BIOS_CpuFastSet(); + break; + case 0x0E: + BIOS_BgAffineSet(); + break; + case 0x0F: + BIOS_ObjAffineSet(); + break; + case 0x10: + { + int len = CPUReadHalfWord(reg[2].I); + if (!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + len) & 0xe000000) == 0)) + SWITicks = (32 + memoryWait[(reg[0].I>>24) & 0xF]) * len; + } + BIOS_BitUnPack(); + break; + case 0x11: + { + uint32 len = CPUReadMemory(reg[0].I) >> 8; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (9 + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_LZ77UnCompWram(); + break; + case 0x12: + { + uint32 len = CPUReadMemory(reg[0].I) >> 8; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (19 + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_LZ77UnCompVram(); + break; + case 0x13: + { + uint32 len = CPUReadMemory(reg[0].I) >> 8; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (29 + (memoryWait[(reg[0].I>>24) & 0xF]<<1)) * len; + } + BIOS_HuffUnComp(); + break; + case 0x14: + { + uint32 len = CPUReadMemory(reg[0].I) >> 8; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (11 + memoryWait[(reg[0].I>>24) & 0xF] + + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_RLUnCompWram(); + break; + case 0x15: + { + uint32 len = CPUReadMemory(reg[0].I) >> 9; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (34 + (memoryWait[(reg[0].I>>24) & 0xF] << 1) + + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_RLUnCompVram(); + break; + case 0x16: + { + uint32 len = CPUReadMemory(reg[0].I) >> 8; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (13 + memoryWait[(reg[0].I>>24) & 0xF] + + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_Diff8bitUnFilterWram(); + break; + case 0x17: + { + uint32 len = CPUReadMemory(reg[0].I) >> 9; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (39 + (memoryWait[(reg[0].I>>24) & 0xF]<<1) + + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_Diff8bitUnFilterVram(); + break; + case 0x18: + { + uint32 len = CPUReadMemory(reg[0].I) >> 9; + if(!(((reg[0].I & 0xe000000) == 0) || + ((reg[0].I + (len & 0x1fffff)) & 0xe000000) == 0)) + SWITicks = (13 + memoryWait[(reg[0].I>>24) & 0xF] + + memoryWait[(reg[1].I>>24) & 0xF]) * len; + } + BIOS_Diff16bitUnFilter(); + break; + case 0x19: + //if(reg[0].I) + // systemSoundPause(); + //else + // systemSoundResume(); + break; + case 0x1F: + BIOS_MidiKey2Freq(); + break; + case 0x2A: + BIOS_SndDriverJmpTableCopy(); + // let it go, because we don't really emulate this function + default: + if(!disableMessage) { + MDFN_PrintError(_("Unsupported BIOS function %02x called from %08x. A BIOS file is needed in order to get correct behaviour."), + comment, + armMode ? armNextPC - 4: armNextPC - 2); + disableMessage = true; + } + break; + } +} + +void CPUCompareVCOUNT() +{ + if(VCOUNT == (DISPSTAT >> 8)) { + DISPSTAT |= 4; + UPDATE_REG(0x04, DISPSTAT); + + if(DISPSTAT & 0x20) { + IF |= 4; + UPDATE_REG(0x202, IF); + } + } else { + DISPSTAT &= 0xFFFB; + UPDATE_REG(0x4, DISPSTAT); + } + if (layerEnableDelay>0) + { + layerEnableDelay--; + if (layerEnableDelay==1) + layerEnable = layerSettings & DISPCNT; + } + +} + +#define doDMA(s, d, _si, _di, _c, _transfer32) \ +{ \ + uint32 si = _si; \ + uint32 di = _di; \ + uint32 c = _c; \ + int sm = s >> 24; \ + int dm = d >> 24; \ + int sw = 0; \ + int dw = 0; \ + int sc = c; \ + cpuDmaCount = c; \ + if (sm>15) \ + sm=15; \ + if (dm>15) \ + dm=15; \ + if(_transfer32) { \ + s &= 0xFFFFFFFC; \ + if(s < 0x02000000 && (reg[15].I >> 24)) { \ + while(c != 0) { \ + CPUWriteMemory(d, 0); \ + d += di; \ + c--; \ + } \ + } else { \ + while(c != 0) { \ + cpuDmaLast = CPUReadMemory(s); \ + CPUWriteMemory(d, cpuDmaLast); \ + d += di; \ + s += si; \ + c--; \ + } \ + } \ + } else { \ + s &= 0xFFFFFFFE; \ + si = (int)si >> 1; \ + di = (int)di >> 1; \ + if(s < 0x02000000 && (reg[15].I >> 24)) { \ + while(c != 0) { \ + CPUWriteHalfWord(d, 0); \ + d += di; \ + c--; \ + } \ + } else { \ + while(c != 0) { \ + cpuDmaLast = CPUReadHalfWord(s); \ + CPUWriteHalfWord(d, cpuDmaLast); \ + cpuDmaLast |= (cpuDmaLast<<16); \ + d += di; \ + s += si; \ + c--; \ + } \ + } \ + } \ + cpuDmaCount = 0; \ + int totalTicks = 0; \ + if(_transfer32) { \ + sw =1+memoryWaitSeq32[sm & 15]; \ + dw =1+memoryWaitSeq32[dm & 15]; \ + totalTicks = (sw+dw)*(sc-1) + 6 + memoryWait32[sm & 15] + \ + memoryWaitSeq32[dm & 15]; \ + } \ + else \ + { \ + sw = 1+memoryWaitSeq[sm & 15]; \ + dw = 1+memoryWaitSeq[dm & 15]; \ + totalTicks = (sw+dw)*(sc-1) + 6 + memoryWait[sm & 15] + \ + memoryWaitSeq[dm & 15]; \ + } \ + cpuDmaTicksToUpdate += totalTicks; \ +} + +void CPUCheckDMA(int reason, int dmamask) +{ + // DMA 0 + if((DMCNT_H[0] & 0x8000) && (dmamask & 1)) { + if(((DMCNT_H[0] >> 12) & 3) == reason) { + uint32 sourceIncrement = 4; + uint32 destIncrement = 4; + switch((DMCNT_H[0] >> 7) & 3) { + case 0: + break; + case 1: + sourceIncrement = (uint32)-4; + break; + case 2: + sourceIncrement = 0; + break; + } + switch((DMCNT_H[0] >> 5) & 3) { + case 0: + break; + case 1: + destIncrement = (uint32)-4; + break; + case 2: + destIncrement = 0; + break; + } + doDMA(dmaSource[0], dmaDest[0], sourceIncrement, destIncrement, + DMCNT_L[0] ? DMCNT_L[0] : 0x4000, + DMCNT_H[0] & 0x0400); + cpuDmaHack = true; + + if(DMCNT_H[0] & 0x4000) { + IF |= 0x0100; + UPDATE_REG(0x202, IF); + cpuNextEvent = cpuTotalTicks; + } + + if(((DMCNT_H[0] >> 5) & 3) == 3) { + dmaDest[0] = DMDAD_L[0] | (DMDAD_H[0] << 16); + } + + if(!(DMCNT_H[0] & 0x0200) || (reason == 0)) { + DMCNT_H[0] &= 0x7FFF; + UPDATE_REG(0xBA, DMCNT_H[0]); + } + } + } + + // DMA 1 + if((DMCNT_H[1] & 0x8000) && (dmamask & 2)) { + if(((DMCNT_H[1] >> 12) & 3) == reason) { + uint32 sourceIncrement = 4; + uint32 destIncrement = 4; + switch((DMCNT_H[1] >> 7) & 3) { + case 0: + break; + case 1: + sourceIncrement = (uint32)-4; + break; + case 2: + sourceIncrement = 0; + break; + } + switch((DMCNT_H[1] >> 5) & 3) { + case 0: + break; + case 1: + destIncrement = (uint32)-4; + break; + case 2: + destIncrement = 0; + break; + } + if(reason == 3) { + doDMA(dmaSource[1], dmaDest[1], sourceIncrement, 0, 4, + 0x0400); + } else { + doDMA(dmaSource[1], dmaDest[1], sourceIncrement, destIncrement, + DMCNT_L[1] ? DMCNT_L[1] : 0x4000, + DMCNT_H[1] & 0x0400); + } + cpuDmaHack = true; + + if(DMCNT_H[1] & 0x4000) { + IF |= 0x0200; + UPDATE_REG(0x202, IF); + cpuNextEvent = cpuTotalTicks; + } + + if(((DMCNT_H[1] >> 5) & 3) == 3) { + dmaDest[1] = DMDAD_L[1] | (DMDAD_H[1] << 16); + } + + if(!(DMCNT_H[1] & 0x0200) || (reason == 0)) { + DMCNT_H[1] &= 0x7FFF; + UPDATE_REG(0xC6, DMCNT_H[1]); + } + } + } + + // DMA 2 + if((DMCNT_H[2] & 0x8000) && (dmamask & 4)) { + if(((DMCNT_H[2] >> 12) & 3) == reason) { + uint32 sourceIncrement = 4; + uint32 destIncrement = 4; + switch((DMCNT_H[2] >> 7) & 3) { + case 0: + break; + case 1: + sourceIncrement = (uint32)-4; + break; + case 2: + sourceIncrement = 0; + break; + } + switch((DMCNT_H[2] >> 5) & 3) { + case 0: + break; + case 1: + destIncrement = (uint32)-4; + break; + case 2: + destIncrement = 0; + break; + } + if(reason == 3) { + doDMA(dmaSource[2], dmaDest[2], sourceIncrement, 0, 4, + 0x0400); + } else { + doDMA(dmaSource[2], dmaDest[2], sourceIncrement, destIncrement, + DMCNT_L[2] ? DMCNT_L[2] : 0x4000, + DMCNT_H[2] & 0x0400); + } + cpuDmaHack = true; + + if(DMCNT_H[2] & 0x4000) { + IF |= 0x0400; + UPDATE_REG(0x202, IF); + cpuNextEvent = cpuTotalTicks; + } + + if(((DMCNT_H[2] >> 5) & 3) == 3) { + dmaDest[2] = DMDAD_L[2] | (DMDAD_H[2] << 16); + } + + if(!(DMCNT_H[2] & 0x0200) || (reason == 0)) { + DMCNT_H[2] &= 0x7FFF; + UPDATE_REG(0xD2, DMCNT_H[2]); + } + } + } + + // DMA 3 + if((DMCNT_H[3] & 0x8000) && (dmamask & 8)) { + if(((DMCNT_H[3] >> 12) & 3) == reason) { + uint32 sourceIncrement = 4; + uint32 destIncrement = 4; + switch((DMCNT_H[3] >> 7) & 3) { + case 0: + break; + case 1: + sourceIncrement = (uint32)-4; + break; + case 2: + sourceIncrement = 0; + break; + } + switch((DMCNT_H[3] >> 5) & 3) { + case 0: + break; + case 1: + destIncrement = (uint32)-4; + break; + case 2: + destIncrement = 0; + break; + } + doDMA(dmaSource[3], dmaDest[3], sourceIncrement, destIncrement, + DMCNT_L[3] ? DMCNT_L[3] : 0x10000, + DMCNT_H[3] & 0x0400); + if(DMCNT_H[3] & 0x4000) { + IF |= 0x0800; + UPDATE_REG(0x202, IF); + cpuNextEvent = cpuTotalTicks; + } + + if(((DMCNT_H[3] >> 5) & 3) == 3) { + dmaDest[3] = DMDAD_L[3] | (DMDAD_H[3] << 16); + } + + if(!(DMCNT_H[3] & 0x0200) || (reason == 0)) { + DMCNT_H[3] &= 0x7FFF; + UPDATE_REG(0xDE, DMCNT_H[3]); + } + } + } +} + +void CPUUpdateRegister(uint32 address, uint16 value) +{ + switch(address) + { + case 0x00: + { + if ((value & 7) >5) + DISPCNT = (value &7); + bool change = ((DISPCNT ^ value) & 0x80) ? true : false; + bool changeBG = ((DISPCNT ^ value) & 0x0F00) ? true : false; + uint16 changeBGon = (((~DISPCNT) & value) & 0x0F00); + DISPCNT = (value & 0xFFF7); + UPDATE_REG(0x00, DISPCNT); + + if (changeBGon) + { + layerEnableDelay=4; + layerEnable = layerSettings & value & (~changeBGon); + } + else + layerEnable = layerSettings & value; + // CPUUpdateTicks(); + + windowOn = (layerEnable & 0x6000) ? true : false; + if(change && !((value & 0x80))) { + if(!(DISPSTAT & 1)) { + lcdTicks = 1008; + // VCOUNT = 0; + // UPDATE_REG(0x06, VCOUNT); + DISPSTAT &= 0xFFFC; + UPDATE_REG(0x04, DISPSTAT); + CPUCompareVCOUNT(); + } + // (*renderLine)(); + } + CPUUpdateRender(); + // we only care about changes in BG0-BG3 + if(changeBG) + CPUUpdateRenderBuffers(false); + } + break; + case 0x04: + DISPSTAT = (value & 0xFF38) | (DISPSTAT & 7); + UPDATE_REG(0x04, DISPSTAT); + break; + case 0x06: + // not writable + break; + case 0x08: + BG0CNT = (value & 0xDFCF); + UPDATE_REG(0x08, BG0CNT); + break; + case 0x0A: + BG1CNT = (value & 0xDFCF); + UPDATE_REG(0x0A, BG1CNT); + break; + case 0x0C: + BG2CNT = (value & 0xFFCF); + UPDATE_REG(0x0C, BG2CNT); + break; + case 0x0E: + BG3CNT = (value & 0xFFCF); + UPDATE_REG(0x0E, BG3CNT); + break; + case 0x10: + BGHOFS[0] = value & 511; + UPDATE_REG(0x10, BGHOFS[0]); + break; + case 0x12: + BGVOFS[0] = value & 511; + UPDATE_REG(0x12, BGVOFS[0]); + break; + case 0x14: + BGHOFS[1] = value & 511; + UPDATE_REG(0x14, BGHOFS[1]); + break; + case 0x16: + BGVOFS[1] = value & 511; + UPDATE_REG(0x16, BGVOFS[1]); + break; + case 0x18: + BGHOFS[2] = value & 511; + UPDATE_REG(0x18, BGHOFS[2]); + break; + case 0x1A: + BGVOFS[2] = value & 511; + UPDATE_REG(0x1A, BGVOFS[2]); + break; + case 0x1C: + BGHOFS[3] = value & 511; + UPDATE_REG(0x1C, BGHOFS[3]); + break; + case 0x1E: + BGVOFS[3] = value & 511; + UPDATE_REG(0x1E, BGVOFS[3]); + break; + case 0x20: + BG2PA = value; + UPDATE_REG(0x20, BG2PA); + break; + case 0x22: + BG2PB = value; + UPDATE_REG(0x22, BG2PB); + break; + case 0x24: + BG2PC = value; + UPDATE_REG(0x24, BG2PC); + break; + case 0x26: + BG2PD = value; + UPDATE_REG(0x26, BG2PD); + break; + case 0x28: + BG2X_L = value; + UPDATE_REG(0x28, BG2X_L); + gfxBG2Changed |= 1; + break; + case 0x2A: + BG2X_H = (value & 0xFFF); + UPDATE_REG(0x2A, BG2X_H); + gfxBG2Changed |= 1; + break; + case 0x2C: + BG2Y_L = value; + UPDATE_REG(0x2C, BG2Y_L); + gfxBG2Changed |= 2; + break; + case 0x2E: + BG2Y_H = value & 0xFFF; + UPDATE_REG(0x2E, BG2Y_H); + gfxBG2Changed |= 2; + break; + case 0x30: + BG3PA = value; + UPDATE_REG(0x30, BG3PA); + break; + case 0x32: + BG3PB = value; + UPDATE_REG(0x32, BG3PB); + break; + case 0x34: + BG3PC = value; + UPDATE_REG(0x34, BG3PC); + break; + case 0x36: + BG3PD = value; + UPDATE_REG(0x36, BG3PD); + break; + case 0x38: + BG3X_L = value; + UPDATE_REG(0x38, BG3X_L); + gfxBG3Changed |= 1; + break; + case 0x3A: + BG3X_H = value & 0xFFF; + UPDATE_REG(0x3A, BG3X_H); + gfxBG3Changed |= 1; + break; + case 0x3C: + BG3Y_L = value; + UPDATE_REG(0x3C, BG3Y_L); + gfxBG3Changed |= 2; + break; + case 0x3E: + BG3Y_H = value & 0xFFF; + UPDATE_REG(0x3E, BG3Y_H); + gfxBG3Changed |= 2; + break; + case 0x40: + WIN0H = value; + UPDATE_REG(0x40, WIN0H); + CPUUpdateWindow0(); + break; + case 0x42: + WIN1H = value; + UPDATE_REG(0x42, WIN1H); + CPUUpdateWindow1(); + break; + case 0x44: + WIN0V = value; + UPDATE_REG(0x44, WIN0V); + break; + case 0x46: + WIN1V = value; + UPDATE_REG(0x46, WIN1V); + break; + case 0x48: + WININ = value & 0x3F3F; + UPDATE_REG(0x48, WININ); + break; + case 0x4A: + WINOUT = value & 0x3F3F; + UPDATE_REG(0x4A, WINOUT); + break; + case 0x4C: + MOSAIC = value; + UPDATE_REG(0x4C, MOSAIC); + break; + case 0x50: + BLDMOD = value & 0x3FFF; + UPDATE_REG(0x50, BLDMOD); + fxOn = ((BLDMOD>>6)&3) != 0; + CPUUpdateRender(); + break; + case 0x52: + COLEV = value & 0x1F1F; + UPDATE_REG(0x52, COLEV); + break; + case 0x54: + COLY = value & 0x1F; + UPDATE_REG(0x54, COLY); + break; + case 0x60: + case 0x62: + case 0x64: + case 0x68: + case 0x6c: + case 0x70: + case 0x72: + case 0x74: + case 0x78: + case 0x7c: + case 0x80: + case 0x84: + soundEvent(address&0xFF, (uint8)(value & 0xFF)); + soundEvent((address&0xFF)+1, (uint8)(value>>8)); + break; + case 0x82: + case 0x88: + case 0xa0: + case 0xa2: + case 0xa4: + case 0xa6: + case 0x90: + case 0x92: + case 0x94: + case 0x96: + case 0x98: + case 0x9a: + case 0x9c: + case 0x9e: + soundEvent(address&0xFF, value); + break; + case 0xB0: + DMSAD_L[0] = value; + UPDATE_REG(0xB0, DMSAD_L[0]); + break; + case 0xB2: + DMSAD_H[0] = value & 0x07FF; + UPDATE_REG(0xB2, DMSAD_H[0]); + break; + case 0xB4: + DMDAD_L[0] = value; + UPDATE_REG(0xB4, DMDAD_L[0]); + break; + case 0xB6: + DMDAD_H[0] = value & 0x07FF; + UPDATE_REG(0xB6, DMDAD_H[0]); + break; + case 0xB8: + DMCNT_L[0] = value & 0x3FFF; + UPDATE_REG(0xB8, 0); + break; + case 0xBA: + { + bool start = ((DMCNT_H[0] ^ value) & 0x8000) ? true : false; + value &= 0xF7E0; + + DMCNT_H[0] = value; + UPDATE_REG(0xBA, DMCNT_H[0]); + + if(start && (value & 0x8000)) { + dmaSource[0] = DMSAD_L[0] | (DMSAD_H[0] << 16); + dmaDest[0] = DMDAD_L[0] | (DMDAD_H[0] << 16); + CPUCheckDMA(0, 1); + } + } + break; + case 0xBC: + DMSAD_L[1] = value; + UPDATE_REG(0xBC, DMSAD_L[1]); + break; + case 0xBE: + DMSAD_H[1] = value & 0x0FFF; + UPDATE_REG(0xBE, DMSAD_H[1]); + break; + case 0xC0: + DMDAD_L[1] = value; + UPDATE_REG(0xC0, DMDAD_L[1]); + break; + case 0xC2: + DMDAD_H[1] = value & 0x07FF; + UPDATE_REG(0xC2, DMDAD_H[1]); + break; + case 0xC4: + DMCNT_L[1] = value & 0x3FFF; + UPDATE_REG(0xC4, 0); + break; + case 0xC6: + { + bool start = ((DMCNT_H[1] ^ value) & 0x8000) ? true : false; + value &= 0xF7E0; + + DMCNT_H[1] = value; + UPDATE_REG(0xC6, DMCNT_H[1]); + + if(start && (value & 0x8000)) { + dmaSource[1] = DMSAD_L[1] | (DMSAD_H[1] << 16); + dmaDest[1] = DMDAD_L[1] | (DMDAD_H[1] << 16); + CPUCheckDMA(0, 2); + } + } + break; + case 0xC8: + DMSAD_L[2] = value; + UPDATE_REG(0xC8, DMSAD_L[2]); + break; + case 0xCA: + DMSAD_H[2] = value & 0x0FFF; + UPDATE_REG(0xCA, DMSAD_H[2]); + break; + case 0xCC: + DMDAD_L[2] = value; + UPDATE_REG(0xCC, DMDAD_L[2]); + break; + case 0xCE: + DMDAD_H[2] = value & 0x07FF; + UPDATE_REG(0xCE, DMDAD_H[2]); + break; + case 0xD0: + DMCNT_L[2] = value & 0x3FFF; + UPDATE_REG(0xD0, 0); + break; + case 0xD2: + { + bool start = ((DMCNT_H[2] ^ value) & 0x8000) ? true : false; + + value &= 0xF7E0; + + DMCNT_H[2] = value; + UPDATE_REG(0xD2, DMCNT_H[2]); + + if(start && (value & 0x8000)) { + dmaSource[2] = DMSAD_L[2] | (DMSAD_H[2] << 16); + dmaDest[2] = DMDAD_L[2] | (DMDAD_H[2] << 16); + + CPUCheckDMA(0, 4); + } + } + break; + case 0xD4: + DMSAD_L[3] = value; + UPDATE_REG(0xD4, DMSAD_L[3]); + break; + case 0xD6: + DMSAD_H[3] = value & 0x0FFF; + UPDATE_REG(0xD6, DMSAD_H[3]); + break; + case 0xD8: + DMDAD_L[3] = value; + UPDATE_REG(0xD8, DMDAD_L[3]); + break; + case 0xDA: + DMDAD_H[3] = value & 0x0FFF; + UPDATE_REG(0xDA, DMDAD_H[3]); + break; + case 0xDC: + DMCNT_L[3] = value; + UPDATE_REG(0xDC, 0); + break; + case 0xDE: + { + bool start = ((DMCNT_H[3] ^ value) & 0x8000) ? true : false; + + value &= 0xFFE0; + + DMCNT_H[3] = value; + UPDATE_REG(0xDE, DMCNT_H[3]); + + if(start && (value & 0x8000)) { + dmaSource[3] = DMSAD_L[3] | (DMSAD_H[3] << 16); + dmaDest[3] = DMDAD_L[3] | (DMDAD_H[3] << 16); + CPUCheckDMA(0,8); + } + } + break; + case 0x100: + timers[0].Reload = value; + break; + case 0x102: + timers[0].Value = value; + timerOnOffDelay|=1; + cpuNextEvent = cpuTotalTicks; + break; + case 0x104: + timers[1].Reload = value; + break; + case 0x106: + timers[1].Value = value; + timerOnOffDelay|=2; + cpuNextEvent = cpuTotalTicks; + break; + case 0x108: + timers[2].Reload = value; + break; + case 0x10A: + timers[2].Value = value; + timerOnOffDelay|=4; + cpuNextEvent = cpuTotalTicks; + break; + case 0x10C: + timers[3].Reload = value; + break; + case 0x10E: + timers[3].Value = value; + timerOnOffDelay|=8; + cpuNextEvent = cpuTotalTicks; + break; + case 0x128: + if(value & 0x80) { + value &= 0xff7f; + if(value & 1 && (value & 0x4000)) { + UPDATE_REG(0x12a, 0xFF); + IF |= 0x80; + UPDATE_REG(0x202, IF); + value &= 0x7f7f; + } + } + UPDATE_REG(0x128, value); + break; + case 0x130: + P1 |= (value & 0x3FF); + UPDATE_REG(0x130, P1); + break; + case 0x132: + UPDATE_REG(0x132, value & 0xC3FF); + break; + case 0x200: + IE = value & 0x3FFF; + UPDATE_REG(0x200, IE); + if ((IME & 1) && (IF & IE) && armIrqEnable) + cpuNextEvent = cpuTotalTicks; + break; + case 0x202: + IF ^= (value & IF); + UPDATE_REG(0x202, IF); + break; + case 0x204: + { + memoryWait[0x0e] = memoryWaitSeq[0x0e] = gamepakRamWaitState[value & 3]; + + memoryWait[0x08] = memoryWait[0x09] = gamepakWaitState[(value >> 2) & 3]; + memoryWaitSeq[0x08] = memoryWaitSeq[0x09] = + gamepakWaitState0[(value >> 4) & 1]; + + memoryWait[0x0a] = memoryWait[0x0b] = gamepakWaitState[(value >> 5) & 3]; + memoryWaitSeq[0x0a] = memoryWaitSeq[0x0b] = + gamepakWaitState1[(value >> 7) & 1]; + + memoryWait[0x0c] = memoryWait[0x0d] = gamepakWaitState[(value >> 8) & 3]; + memoryWaitSeq[0x0c] = memoryWaitSeq[0x0d] = + gamepakWaitState2[(value >> 10) & 1]; + + for(int i = 8; i < 15; i++) { + memoryWait32[i] = memoryWait[i] + memoryWaitSeq[i] + 1; + memoryWaitSeq32[i] = memoryWaitSeq[i]*2 + 1; + } + + if((value & 0x4000) == 0x4000) { + busPrefetchEnable = true; + busPrefetch = false; + busPrefetchCount = 0; + } else { + busPrefetchEnable = false; + busPrefetch = false; + busPrefetchCount = 0; + } + UPDATE_REG(0x204, value & 0x7FFF); + + } + break; + case 0x208: + IME = value & 1; + UPDATE_REG(0x208, IME); + if ((IME & 1) && (IF & IE) && armIrqEnable) + cpuNextEvent = cpuTotalTicks; + break; + case 0x300: + if(value != 0) + value &= 0xFFFE; + UPDATE_REG(0x300, value); + break; + default: + UPDATE_REG(address&0x3FE, value); + break; + } +} + +void applyTimer () +{ + if (timerOnOffDelay & 1) + { + timers[0].ClockReload = TIMER_TICKS[timers[0].Value & 3]; + if(!timers[0].On && (timers[0].Value & 0x80)) { + // reload the counter + timers[0].D = timers[0].Reload; + timers[0].Ticks = (0x10000 - timers[0].D) << timers[0].ClockReload; + UPDATE_REG(0x100, timers[0].D); + } + timers[0].On = timers[0].Value & 0x80 ? true : false; + timers[0].CNT = timers[0].Value & 0xC7; + UPDATE_REG(0x102, timers[0].CNT); + // CPUUpdateTicks(); + } + if (timerOnOffDelay & 2) + { + timers[1].ClockReload = TIMER_TICKS[timers[1].Value & 3]; + if(!timers[1].On && (timers[1].Value & 0x80)) { + // reload the counter + timers[1].D = timers[1].Reload; + timers[1].Ticks = (0x10000 - timers[1].D) << timers[1].ClockReload; + UPDATE_REG(0x104, timers[1].D); + } + timers[1].On = timers[1].Value & 0x80 ? true : false; + timers[1].CNT = timers[1].Value & 0xC7; + UPDATE_REG(0x106, timers[1].CNT); + } + if (timerOnOffDelay & 4) + { + timers[2].ClockReload = TIMER_TICKS[timers[2].Value & 3]; + if(!timers[2].On && (timers[2].Value & 0x80)) { + // reload the counter + timers[2].D = timers[2].Reload; + timers[2].Ticks = (0x10000 - timers[2].D) << timers[2].ClockReload; + UPDATE_REG(0x108, timers[2].D); + } + timers[2].On = timers[2].Value & 0x80 ? true : false; + timers[2].CNT = timers[2].Value & 0xC7; + UPDATE_REG(0x10A, timers[2].CNT); + } + if (timerOnOffDelay & 8) + { + timers[3].ClockReload = TIMER_TICKS[timers[3].Value & 3]; + if(!timers[3].On && (timers[3].Value & 0x80)) { + // reload the counter + timers[3].D = timers[3].Reload; + timers[3].Ticks = (0x10000 - timers[3].D) << timers[3].ClockReload; + UPDATE_REG(0x10C, timers[3].D); + } + timers[3].On = timers[3].Value & 0x80 ? true : false; + timers[3].CNT = timers[3].Value & 0xC7; + UPDATE_REG(0x10E, timers[3].CNT); + } + cpuNextEvent = CPUUpdateTicks(); + timerOnOffDelay = 0; +} + +static void FLASH_SRAM_Write(uint32 A, uint32 V) +{ +// printf("%08x %08x\n", A, V); + + if(cpuFlashEnabled && cpuSramEnabled) + { + if((A & 0xFFFF) == 0x5555 && (V & 0xFF) == 0xAA) + cpuSramEnabled = FALSE; + else if((A & 0xFFFF) != 0x2AAA) + cpuFlashEnabled = FALSE; + + if(!cpuFlashEnabled || !cpuSramEnabled) + printf("%s emulation disabled by write to: %08x %08x\n", cpuSramEnabled ? "FLASH" : "SRAM", A, V); + } + + if(cpuSramEnabled) + sramWrite(A, V); + + if(cpuFlashEnabled) + flashWrite(A, V); +} + +void CPUWriteMemory(uint32 address, uint32 value) +{ + switch(address >> 24) + { + case 0x02: + WRITE32LE(((uint32 *)&workRAM[address & 0x3FFFC]), value); + break; \ + case 0x03: \ + WRITE32LE(((uint32 *)&internalRAM[address & 0x7ffC]), value); \ + break; \ + case 0x04: \ + if(address < 0x4000400) { \ + CPUUpdateRegister((address & 0x3FC), value & 0xFFFF); \ + CPUUpdateRegister((address & 0x3FC) + 2, (value >> 16)); \ + } \ + break; \ + case 0x05: \ + WRITE32LE(((uint32 *)&paletteRAM[address & 0x3FC]), value); \ + break; \ + case 0x06: \ + address = (address & 0x1fffc); + if (((DISPCNT & 7) >2) && ((address & 0x1C000) == 0x18000)) + return; + if ((address & 0x18000) == 0x18000) + address &= 0x17fff; + WRITE32LE(((uint32 *)&vram[address]), value); + break; \ + + case 0x07: + WRITE32LE(((uint32 *)&oam[address & 0x3fc]), value); + break; + + case 0x0D: + if(cpuEEPROMEnabled) + { + eepromWrite(address, value); + break; + } + break; + + case 0x0E: + FLASH_SRAM_Write(address, value); + break; + + default: break; + } +} + +void CPUWriteHalfWord(uint32 address, uint16 value) +{ + switch(address >> 24) + { + case 2: + WRITE16LE(((uint16 *)&workRAM[address & 0x3FFFE]),value); + break; + case 3: + WRITE16LE(((uint16 *)&internalRAM[address & 0x7ffe]), value); + break; + case 4: + if(address < 0x4000400) + CPUUpdateRegister(address & 0x3fe, value); + else goto unwritable; + break; + case 5: + WRITE16LE(((uint16 *)&paletteRAM[address & 0x3fe]), value); + break; + case 6: + address = (address & 0x1fffe); + if (((DISPCNT & 7) >2) && ((address & 0x1C000) == 0x18000)) + return; + if ((address & 0x18000) == 0x18000) + address &= 0x17fff; + WRITE16LE(((uint16 *)&vram[address]), value); + break; + case 7: + WRITE16LE(((uint16 *)&oam[address & 0x3fe]), value); + break; + case 8: + case 9: + if(GBA_RTC && (address == 0x80000c4 || address == 0x80000c6 || address == 0x80000c8)) + GBA_RTC->Write(address, value); + else + goto unwritable; + break; + case 13: + if(cpuEEPROMEnabled) + { + eepromWrite(address, (uint8)value); + break; + } + goto unwritable; + + case 0x0E: + FLASH_SRAM_Write(address, value); + break; + + default: + unwritable: + break; + } +} + +void CPUWriteByte(uint32 address, uint8 b) +{ + switch(address >> 24) + { + case 2: + workRAM[address & 0x3FFFF] = b; + break; + + case 3: + internalRAM[address & 0x7fff] = b; + break; + + case 4: + if(address < 0x4000400) + { + switch(address & 0x3FF) + { + case 0x301: + if(b == 0x80) + stopState = true; + holdState = 1; + holdType = -1; + cpuNextEvent = cpuTotalTicks; + break; + + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x68: + case 0x69: + case 0x6c: + case 0x6d: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x78: + case 0x79: + case 0x7c: + case 0x7d: + case 0x80: + case 0x81: + case 0x84: + case 0x85: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9a: + case 0x9b: + case 0x9c: + case 0x9d: + case 0x9e: + case 0x9f: + soundEvent(address&0xFF, b); + break; + default: + if(address & 1) + CPUUpdateRegister(address & 0x3fe, + ((READ16LE(((uint16 *)&ioMem[address & 0x3fe]))) + & 0x00FF) | + b<<8); + else + CPUUpdateRegister(address & 0x3fe, + ((READ16LE(((uint16 *)&ioMem[address & 0x3fe])) & 0xFF00) | b)); + } + break; + } else goto unwritable; + break; + case 5: + // no need to switch + *((uint16 *)&paletteRAM[address & 0x3FE]) = (b << 8) | b; + break; + case 6: + address = (address & 0x1fffe); + if (((DISPCNT & 7) >2) && ((address & 0x1C000) == 0x18000)) + return; + if ((address & 0x18000) == 0x18000) + address &= 0x17fff; + // no need to switch + // byte writes to OBJ VRAM are ignored + if ((address) < objTilesAddress[((DISPCNT&7)+1)>>2]) + *((uint16 *)&vram[address]) = (b << 8) | b; + break; + case 7: + // no need to switch + // byte writes to OAM are ignored + // *((uint16 *)&oam[address & 0x3FE]) = (b << 8) | b; + break; + + case 0xD: + if(cpuEEPROMEnabled) { + eepromWrite(address, b); + break; + } + goto unwritable; + + case 0xE: + FLASH_SRAM_Write(address, b); + break; + + // default + default: + unwritable: + break; + } +} + +uint8 cpuBitsSet[256]; +uint8 cpuLowestBitSet[256]; + +static bool CPUInit(const std::string bios_fn) +{ + FILE *memfp; + + FlashSizeSet = FALSE; + + memfp = fopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "type").c_str(), "rb"); + if(memfp) + { + char linebuffer[256]; + + cpuSramEnabled = FALSE; + cpuFlashEnabled = FALSE; + cpuEEPROMEnabled = FALSE; + cpuEEPROMSensorEnabled = FALSE; + + while(fgets(linebuffer, 256, memfp)) + { + char args[2][256]; + int acount = trio_sscanf(linebuffer, "%.255s %.255s", args[0], args[1]); + + if(acount < 1) + continue; + + //MDFN_printf(_("Backup memory type override: %s %s\n"), linebuffer, (acount > 1) ? args[1] : ""); + + if(!strcasecmp(args[0], "sram")) + { + cpuSramEnabled = TRUE; + } + else if(!strcasecmp(args[0], "flash")) + { + cpuFlashEnabled = TRUE; + if(acount == 2) + { + int size_temp = atoi(args[1]); + + if(size_temp == 0x10000 || size_temp == 0x20000) + { + flashSetSize(size_temp); + FlashSizeSet = TRUE; + } + else if(size_temp == 64 || size_temp == 128) + { + flashSetSize(size_temp * 1024); + FlashSizeSet = TRUE; + } + else + puts("Flash size error"); + } + } + else if(!strcasecmp(args[0], "eeprom")) + cpuEEPROMEnabled = TRUE; + else if(!strcasecmp(args[0], "sensor")) + cpuEEPROMSensorEnabled = TRUE; + else if(!strcasecmp(args[0], "rtc")) + GBA_RTC = new RTC(); + } + fclose(memfp); + } + else + { + cpuSramEnabled = true; + cpuFlashEnabled = true; + cpuEEPROMEnabled = true; + cpuEEPROMSensorEnabled = true; + } + + useBios = false; + + if(bios_fn != "" && bios_fn != "0" && bios_fn != "none") + { + static const FileExtensionSpecStruct KnownBIOSExtensions[] = + { + { ".gba", gettext_noop("GameBoy Advance ROM Image") }, + { ".agb", gettext_noop("GameBoy Advance ROM Image") }, + { ".bin", gettext_noop("GameBoy Advance ROM Image") }, + { ".bios", gettext_noop("BIOS Image") }, + { NULL, NULL } + }; + + MDFNFILE bios_fp; + + if(!bios_fp.Open(MDFN_MakeFName(MDFNMKF_FIRMWARE, 0, bios_fn.c_str()), KnownBIOSExtensions, _("GBA BIOS"))) + { + return(0); + } + + if(bios_fp.Size() != 0x4000) + { + MDFN_PrintError(_("Invalid BIOS file size")); + bios_fp.Close(); + return(0); + } + + memcpy(bios, bios_fp.Data(), 0x4000); + + bios_fp.Close(); + useBios = true; + } + + if(!useBios) + { + memcpy(bios, myROM, sizeof(myROM)); + Endian_A32_NE_to_LE(bios, sizeof(myROM) / 4); + } + + int i = 0; + + biosProtected[0] = 0x00; + biosProtected[1] = 0xf0; + biosProtected[2] = 0x29; + biosProtected[3] = 0xe1; + + for(i = 0; i < 256; i++) { + int count = 0; + int j; + for(j = 0; j < 8; j++) + if(i & (1 << j)) + count++; + cpuBitsSet[i] = count; + + for(j = 0; j < 8; j++) + if(i & (1 << j)) + break; + cpuLowestBitSet[i] = j; + } + + for(i = 0; i < 0x400; i++) + ioReadable[i] = true; + for(i = 0x10; i < 0x48; i++) + ioReadable[i] = false; + for(i = 0x4c; i < 0x50; i++) + ioReadable[i] = false; + for(i = 0x54; i < 0x60; i++) + ioReadable[i] = false; + for(i = 0x8c; i < 0x90; i++) + ioReadable[i] = false; + for(i = 0xa0; i < 0xb8; i++) + ioReadable[i] = false; + for(i = 0xbc; i < 0xc4; i++) + ioReadable[i] = false; + for(i = 0xc8; i < 0xd0; i++) + ioReadable[i] = false; + for(i = 0xd4; i < 0xdc; i++) + ioReadable[i] = false; + for(i = 0xe0; i < 0x100; i++) + ioReadable[i] = false; + for(i = 0x110; i < 0x120; i++) + ioReadable[i] = false; + for(i = 0x12c; i < 0x130; i++) + ioReadable[i] = false; + for(i = 0x138; i < 0x140; i++) + ioReadable[i] = false; + for(i = 0x144; i < 0x150; i++) + ioReadable[i] = false; + for(i = 0x15c; i < 0x200; i++) + ioReadable[i] = false; + for(i = 0x20c; i < 0x300; i++) + ioReadable[i] = false; + for(i = 0x304; i < 0x400; i++) + ioReadable[i] = false; + + if(romSize < 0x1fe2000) { + *((uint16 *)&rom[0x1fe209c]) = 0xdffa; // SWI 0xFA + *((uint16 *)&rom[0x1fe209e]) = 0x4770; // BX LR + } else { + + } + return(1); +} + +static void CPUReset() +{ + if(GBA_RTC) + GBA_RTC->Reset(); + + // clean registers + memset(®[0], 0, sizeof(reg)); + // clean OAM + memset(oam, 0, 0x400); + // clean palette + memset(paletteRAM, 0, 0x400); + // clean vram + memset(vram, 0, 0x20000); + // clean io memory + memset(ioMem, 0, 0x400); + + DISPCNT = 0x0080; + DISPSTAT = 0x0000; + VCOUNT = (useBios && !skipBios) ? 0 :0x007E; + BG0CNT = 0x0000; + BG1CNT = 0x0000; + BG2CNT = 0x0000; + BG3CNT = 0x0000; + + for(int i = 0; i < 4; i++) + { + BGHOFS[i] = 0; + BGVOFS[i] = 0; + } + + BG2PA = 0x0100; + BG2PB = 0x0000; + BG2PC = 0x0000; + BG2PD = 0x0100; + BG2X_L = 0x0000; + BG2X_H = 0x0000; + BG2Y_L = 0x0000; + BG2Y_H = 0x0000; + BG3PA = 0x0100; + BG3PB = 0x0000; + BG3PC = 0x0000; + BG3PD = 0x0100; + BG3X_L = 0x0000; + BG3X_H = 0x0000; + BG3Y_L = 0x0000; + BG3Y_H = 0x0000; + WIN0H = 0x0000; + WIN1H = 0x0000; + WIN0V = 0x0000; + WIN1V = 0x0000; + WININ = 0x0000; + WINOUT = 0x0000; + MOSAIC = 0x0000; + BLDMOD = 0x0000; + COLEV = 0x0000; + COLY = 0x0000; + + for(int i = 0; i < 4; i++) + DMSAD_L[i] = DMSAD_H[i] = 0; + + for(int i = 0; i < 4; i++) + { + timers[i].D = 0; + timers[i].CNT = 0; + } + + P1 = 0x03FF; + IE = 0x0000; + IF = 0x0000; + IME = 0x0000; + + armMode = 0x1F; + + if(cpuIsMultiBoot) { + reg[13].I = 0x03007F00; + reg[15].I = 0x02000000; + reg[16].I = 0x00000000; + reg[R13_IRQ].I = 0x03007FA0; + reg[R13_SVC].I = 0x03007FE0; + armIrqEnable = true; + } else { + if(useBios && !skipBios) { + reg[15].I = 0x00000000; + armMode = 0x13; + armIrqEnable = false; + } else { + reg[13].I = 0x03007F00; + reg[15].I = 0x08000000; + reg[16].I = 0x00000000; + reg[R13_IRQ].I = 0x03007FA0; + reg[R13_SVC].I = 0x03007FE0; + armIrqEnable = true; + } + } + armState = true; + C_FLAG = false; + V_FLAG = false; + N_FLAG = false; + Z_FLAG = false; + + UPDATE_REG(0x00, DISPCNT); + UPDATE_REG(0x06, VCOUNT); + UPDATE_REG(0x20, BG2PA); + UPDATE_REG(0x26, BG2PD); + UPDATE_REG(0x30, BG3PA); + UPDATE_REG(0x36, BG3PD); + UPDATE_REG(0x130, P1); + UPDATE_REG(0x88, 0x200); + + // disable FIQ + reg[16].I |= 0x40; + + CPUUpdateCPSR(); + + armNextPC = reg[15].I; + reg[15].I += 4; + + // reset internal state + holdState = false; + holdType = 0; + + biosProtected[0] = 0x00; + biosProtected[1] = 0xf0; + biosProtected[2] = 0x29; + biosProtected[3] = 0xe1; + + lcdTicks = (useBios && !skipBios) ? 1008 : 208; + + for(int i = 0; i < 4; i++) + { + timers[i].On = false; + timers[i].Ticks = 0; + timers[i].Reload = 0; + timers[i].ClockReload = 0; + } + + dmaSource[0] = 0; + dmaDest[0] = 0; + dmaSource[1] = 0; + dmaDest[1] = 0; + dmaSource[2] = 0; + dmaDest[2] = 0; + dmaSource[3] = 0; + dmaDest[3] = 0; + + renderLine = mode0RenderLine; + fxOn = false; + windowOn = false; + saveType = 0; + layerEnable = DISPCNT & layerSettings; + + CPUUpdateRenderBuffers(true); + + for(int i = 0; i < 256; i++) { + map[i].address = (uint8 *)&dummyAddress; + map[i].mask = 0; + } + + map[0].address = bios; + map[0].mask = 0x3FFF; + map[2].address = workRAM; + map[2].mask = 0x3FFFF; + map[3].address = internalRAM; + map[3].mask = 0x7FFF; + map[4].address = ioMem; + map[4].mask = 0x3FF; + map[5].address = paletteRAM; + map[5].mask = 0x3FF; + map[6].address = vram; + map[6].mask = 0x1FFFF; + map[7].address = oam; + map[7].mask = 0x3FF; + map[8].address = rom; + map[8].mask = 0x1FFFFFF; + map[9].address = rom; + map[9].mask = 0x1FFFFFF; + map[10].address = rom; + map[10].mask = 0x1FFFFFF; + map[12].address = rom; + map[12].mask = 0x1FFFFFF; + map[14].address = flashSaveMemory; + map[14].mask = 0xFFFF; + + eepromReset(); + GBA_Flash_Reset(); + + soundReset(); + + CPUUpdateWindow0(); + CPUUpdateWindow1(); + + // make sure registers are correctly initialized if not using BIOS + if(!useBios) { + if(cpuIsMultiBoot) + BIOS_RegisterRamReset(0xfe); + else + BIOS_RegisterRamReset(0xff); + } else { + if(cpuIsMultiBoot) + BIOS_RegisterRamReset(0xfe); + } + + ARM_PREFETCH; + + cpuDmaHack = false; + + SWITicks = 0; +} + +void CPUInterrupt() +{ + uint32 PC = reg[15].I; + bool savedState = armState; + CPUSwitchMode(0x12, true, false); + reg[14].I = PC; + if(!savedState) + reg[14].I += 2; + reg[15].I = 0x18; + armState = true; + armIrqEnable = false; + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + + // if(!holdState) + biosProtected[0] = 0x02; + biosProtected[1] = 0xc0; + biosProtected[2] = 0x5e; + biosProtected[3] = 0xe5; +} + +int32 soundTS = 0; +static uint8 *padq; + +void MDFNGBA_SetInput(int port, const char *type, void *ptr) +{ + padq = (uint8*)ptr; +} + +int32 MDFNGBA_GetTimerPeriod(int which) +{ + int32 ret = ((0x10000 - timers[which].Reload) << timers[which].ClockReload); +// printf("%d, %08x\n", ret, timers[which].Reload); + return(ret); +} + +static int frameready; +static int HelloSkipper; + +void CPULoop(MDFN_Surface *surface, int ticks) +{ + int clockTicks; + int timerOverflow = 0; + // variable used by the CPU core + cpuTotalTicks = 0; + cpuBreakLoop = false; + cpuNextEvent = CPUUpdateTicks(); + if(cpuNextEvent > ticks) + cpuNextEvent = ticks; + + + for(;;) { + if(!holdState && !SWITicks) { + if(armState) { + clockTicks = RunARM(); + } else { + clockTicks = RunTHUMB(); + } + } else + clockTicks = CPUUpdateTicks(); + + cpuTotalTicks += clockTicks; + + if(cpuTotalTicks >= cpuNextEvent) { + int remainingTicks = cpuTotalTicks - cpuNextEvent; + + if (SWITicks) + { + SWITicks-=clockTicks; + if (SWITicks<0) + SWITicks = 0; + } + + clockTicks = cpuNextEvent; + cpuTotalTicks = 0; + cpuDmaHack = false; + + updateLoop: + + if (IRQTicks) + { + IRQTicks -= clockTicks; + if (IRQTicks<0) + IRQTicks = 0; + } + soundTS += clockTicks; + lcdTicks -= clockTicks; + + + if(lcdTicks <= 0) { + if(DISPSTAT & 1) { // V-BLANK + // if in V-Blank mode, keep computing... + if(DISPSTAT & 2) { + lcdTicks += 1008; + VCOUNT++; + UPDATE_REG(0x06, VCOUNT); + DISPSTAT &= 0xFFFD; + UPDATE_REG(0x04, DISPSTAT); + CPUCompareVCOUNT(); + } else { + lcdTicks += 224; + DISPSTAT |= 2; + UPDATE_REG(0x04, DISPSTAT); + if(DISPSTAT & 16) { + IF |= 2; + UPDATE_REG(0x202, IF); + } + } + + if(VCOUNT >= 228) { //Reaching last line + DISPSTAT &= 0xFFFC; + UPDATE_REG(0x04, DISPSTAT); + VCOUNT = 0; + UPDATE_REG(0x06, VCOUNT); + CPUCompareVCOUNT(); + } + } else { + if(DISPSTAT & 2) { + // if in H-Blank, leave it and move to drawing mode + VCOUNT++; + UPDATE_REG(0x06, VCOUNT); + + lcdTicks += 1008; + DISPSTAT &= 0xFFFD; + if(VCOUNT == 160) + { + //ticks = 0; + //puts("VBlank"); + uint32 joy = padbufblah; + P1 = 0x03FF ^ (joy & 0x3FF); + //if(cpuEEPROMSensorEnabled) + //systemUpdateMotionSensor(); + UPDATE_REG(0x130, P1); + uint16 P1CNT = READ16LE(((uint16 *)&ioMem[0x132])); + // this seems wrong, but there are cases where the game + // can enter the stop state without requesting an IRQ from + // the joypad. + if((P1CNT & 0x4000) || stopState) { + uint16 p1 = (0x3FF ^ P1) & 0x3FF; + if(P1CNT & 0x8000) { + if(p1 == (P1CNT & 0x3FF)) { + IF |= 0x1000; + UPDATE_REG(0x202, IF); + } + } else { + if(p1 & P1CNT) { + IF |= 0x1000; + UPDATE_REG(0x202, IF); + } + } + } + + + DISPSTAT |= 1; + DISPSTAT &= 0xFFFD; + UPDATE_REG(0x04, DISPSTAT); + if(DISPSTAT & 0x0008) { + IF |= 1; + UPDATE_REG(0x202, IF); + } + CPUCheckDMA(1, 0x0f); + } + + UPDATE_REG(0x04, DISPSTAT); + CPUCompareVCOUNT(); + + } else { + if(!HelloSkipper) + { + //printf("RL: %d\n", VCOUNT); + uint32 *dest = surface->pixels + VCOUNT * surface->pitch32; + uint32 *src = lineMix; + (*renderLine)(); + for(int x = 120; x; x--) + { + *dest = systemColorMap32[*src & 0xFFFF]; + dest++; + src++; + *dest = systemColorMap32[*src & 0xFFFF]; + dest++; + src++; + } + } + // entering H-Blank + DISPSTAT |= 2; + UPDATE_REG(0x04, DISPSTAT); + lcdTicks += 224; + CPUCheckDMA(2, 0x0f); + if(DISPSTAT & 16) { + IF |= 2; + UPDATE_REG(0x202, IF); + } + if(VCOUNT == 159) + { + frameready = 1; + cpuBreakLoop = 1; + } + } + } + } + + if(!stopState) { + if(timers[0].On) { + timers[0].Ticks -= clockTicks; + if(timers[0].Ticks <= 0) { + timers[0].Ticks += (0x10000 - timers[0].Reload) << timers[0].ClockReload; + timerOverflow |= 1; + soundTimerOverflow(0); + if(timers[0].CNT & 0x40) { + IF |= 0x08; + UPDATE_REG(0x202, IF); + } + } + timers[0].D = 0xFFFF - (timers[0].Ticks >> timers[0].ClockReload); + UPDATE_REG(0x100, timers[0].D); + } + + if(timers[1].On) { + if(timers[1].CNT & 4) { + if(timerOverflow & 1) { + timers[1].D++; + if(timers[1].D == 0) { + timers[1].D += timers[1].Reload; + timerOverflow |= 2; + soundTimerOverflow(1); + if(timers[1].CNT & 0x40) { + IF |= 0x10; + UPDATE_REG(0x202, IF); + } + } + UPDATE_REG(0x104, timers[1].D); + } + } else { + timers[1].Ticks -= clockTicks; + if(timers[1].Ticks <= 0) { + timers[1].Ticks += (0x10000 - timers[1].Reload) << timers[1].ClockReload; + timerOverflow |= 2; + soundTimerOverflow(1); + if(timers[1].CNT & 0x40) { + IF |= 0x10; + UPDATE_REG(0x202, IF); + } + } + timers[1].D = 0xFFFF - (timers[1].Ticks >> timers[1].ClockReload); + UPDATE_REG(0x104, timers[1].D); + } + } + + if(timers[2].On) { + if(timers[2].CNT & 4) { + if(timerOverflow & 2) { + timers[2].D++; + if(timers[2].D == 0) { + timers[2].D += timers[2].Reload; + timerOverflow |= 4; + if(timers[2].CNT & 0x40) { + IF |= 0x20; + UPDATE_REG(0x202, IF); + } + } + UPDATE_REG(0x108, timers[2].D); + } + } else { + timers[2].Ticks -= clockTicks; + if(timers[2].Ticks <= 0) { + timers[2].Ticks += (0x10000 - timers[2].Reload) << timers[2].ClockReload; + timerOverflow |= 4; + if(timers[2].CNT & 0x40) { + IF |= 0x20; + UPDATE_REG(0x202, IF); + } + } + timers[2].D = 0xFFFF - (timers[2].Ticks >> timers[2].ClockReload); + UPDATE_REG(0x108, timers[2].D); + } + } + + if(timers[3].On) { + if(timers[3].CNT & 4) { + if(timerOverflow & 4) { + timers[3].D++; + if(timers[3].D == 0) { + timers[3].D += timers[3].Reload; + if(timers[3].CNT & 0x40) { + IF |= 0x40; + UPDATE_REG(0x202, IF); + } + } + UPDATE_REG(0x10C, timers[3].D); + } + } else { + timers[3].Ticks -= clockTicks; + if(timers[3].Ticks <= 0) { + timers[3].Ticks += (0x10000 - timers[3].Reload) << timers[3].ClockReload; + if(timers[3].CNT & 0x40) { + IF |= 0x40; + UPDATE_REG(0x202, IF); + } + } + timers[3].D = 0xFFFF - (timers[3].Ticks >> timers[3].ClockReload); + UPDATE_REG(0x10C, timers[3].D); + } + } + } + + timerOverflow = 0; + + ticks -= clockTicks; + + cpuNextEvent = CPUUpdateTicks(); + + if(cpuDmaTicksToUpdate > 0) { + if(cpuDmaTicksToUpdate > cpuNextEvent) + clockTicks = cpuNextEvent; + else + clockTicks = cpuDmaTicksToUpdate; + cpuDmaTicksToUpdate -= clockTicks; + if(cpuDmaTicksToUpdate < 0) + cpuDmaTicksToUpdate = 0; + cpuDmaHack = true; + goto updateLoop; + } + + if(IF && (IME & 1) && armIrqEnable) { + int res = IF & IE; + if(stopState) + res &= 0x3080; + if(res) { + if (intState) + { + if (!IRQTicks) + { + CPUInterrupt(); + intState = false; + holdState = false; + stopState = false; + holdType = 0; + } + } + else + { + if (!holdState) + { + intState = true; + IRQTicks=7; + if (cpuNextEvent> IRQTicks) + cpuNextEvent = IRQTicks; + } + else + { + CPUInterrupt(); + holdState = false; + stopState = false; + holdType = 0; + } + } + + // Stops the SWI Ticks emulation if an IRQ is executed + //(to avoid problems with nested IRQ/SWI) + if (SWITicks) + SWITicks = 0; + } + } + + if(remainingTicks > 0) { + if(remainingTicks > cpuNextEvent) + clockTicks = cpuNextEvent; + else + clockTicks = remainingTicks; + remainingTicks -= clockTicks; + if(remainingTicks < 0) + remainingTicks = 0; + goto updateLoop; + } + + if (timerOnOffDelay) + applyTimer(); + + if(cpuNextEvent > ticks) + cpuNextEvent = ticks; + + if(ticks <= 0 || cpuBreakLoop) + break; + + } + } +} + +static void Emulate(EmulateSpecStruct *espec) +{ + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + espec->DisplayRect.w = 240; + espec->DisplayRect.h = 160; + + if(espec->VideoFormatChanged) + RedoColorMap(espec->surface->format); //espec->surface->format.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + + if(espec->SoundFormatChanged) + MDFNGBA_SetSoundRate(espec->SoundRate); + + #if 0 + int cursong = workRAM[0x2020c96- (0x2 << 24)]; + static int last_song = 0; + + if(cursong != last_song) + { + if(last_song == 250) + { + MDFNI_EndWaveRecord(); + exit(1); + } + else + { + char wavepath[256]; + if(last_song != 0) + MDFNI_EndWaveRecord(); + snprintf(wavepath, 256, "/meow/mother3-%d.wav", cursong); + MDFNI_BeginWaveRecord(FSettings.SndRate, 2, wavepath); + } + last_song = cursong; + } + #endif + + padbufblah = padq[0] | (padq[1] << 8); + + frameready = 0; + + HelloSkipper = espec->skip; + + if(gsf_loader) + HelloSkipper = 1; + + if(!gsf_loader) + MDFNMP_ApplyPeriodicCheats(); + + while(!frameready && (soundTS < 300000)) + CPULoop(espec->surface, 300000); + + if(GBA_RTC) + GBA_RTC->AddTime(soundTS); + + espec->MasterCycles = soundTS; + + espec->SoundBufSize = MDFNGBASOUND_Flush(espec->SoundBuf, espec->SoundBufMaxSize); + + if(gsf_loader) + Player_Draw(espec->surface, &espec->DisplayRect, 0, espec->SoundBuf, espec->SoundBufSize); +} + +static void SetLayerEnableMask(uint64 mask) +{ + layerSettings = mask << 8; + layerEnable = layerSettings & DISPCNT; + + CPUUpdateRender(); + CPUUpdateRenderBuffers(true); + CPUUpdateWindow0(); + CPUUpdateWindow1(); +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_POWER: + case MDFN_MSC_RESET: CPUReset(); break; + } +} + +static MDFNSetting GBASettings[] = +{ + { "gba.bios", MDFNSF_EMU_STATE, gettext_noop("Path to optional GBA BIOS ROM image."), NULL, MDFNST_STRING, "" }, + { NULL } +}; + +static const InputDeviceInputInfoStruct IDII[] = +{ + { "a", "A", /*VIRTB_1,*/ 7, IDIT_BUTTON_CAN_RAPID, NULL }, + + { "b", "B", /*VIRTB_0,*/ 6, IDIT_BUTTON_CAN_RAPID, NULL }, + + { "select", "SELECT", /*VIRTB_SELECT,*/ 4, IDIT_BUTTON, NULL }, + + { "start", "START", /*VIRTB_START,*/ 5, IDIT_BUTTON, NULL }, + + { "right", "RIGHT →", /*VIRTB_DP0_R,*/ 3, IDIT_BUTTON, "left" }, + + { "left", "LEFT â†", /*VIRTB_DP0_L,*/ 2, IDIT_BUTTON, "right" }, + + { "up", "UP ↑", /*VIRTB_DP0_U,*/ 0, IDIT_BUTTON, "down" }, + + { "down", "DOWN ↓", /*VIRTB_DP0_D,*/ 1, IDIT_BUTTON, "up" }, + + { "shoulder_r", "SHOULDER R", /*VIRTB_SHLDR_L,*/ 9, IDIT_BUTTON, NULL }, + + { "shoulder_l", "SHOULDER L", /*VIRTB_SHLDR_R,*/ 8, IDIT_BUTTON, NULL }, +}; + +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), + IDII, + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" } +}; + +static InputInfoStruct InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".gsf", gettext_noop("GSF Rip") }, + { ".minigsf", gettext_noop("MiniGSF Rip") }, + { ".gba", gettext_noop("GameBoy Advance ROM Image") }, + { ".agb", gettext_noop("GameBoy Advance ROM Image") }, + { ".bin", gettext_noop("GameBoy Advance ROM Image") }, + { NULL, NULL } +}; + +} + +using namespace MDFN_IEN_GBA; + +MDFNGI EmulatedGBA = +{ + "gba", + "GameBoy Advance", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + NULL, + &InputInfo, + Load, + TestMagic, + NULL, + NULL, + CloseGame, + SetLayerEnableMask, + "BG0\0BG1\0BG2\0BG3\0OBJ\0WIN 0\0WIN 1\0OBJ WIN\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + MDFNGBA_SetInput, + DoSimpleCommand, + GBASettings, + MDFN_MASTERCLOCK_FIXED(16777216), + (uint32)((double)4194304 / 70224 * 65536 * 256), + + false, // Multires possible? + + 240, // lcm_width + 160, // lcm_height + NULL, // Dummy + + 240, // Nominal width + 160, // Nominal height + + 240, // Framebuffer width + 160, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/gba/GBA.h b/libmednahawk/src/gba/GBA.h new file mode 100644 index 0000000000..5b80ba66d9 --- /dev/null +++ b/libmednahawk/src/gba/GBA.h @@ -0,0 +1,162 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_GBA_H +#define VBA_GBA_H + +#include "../mednafen.h" +#include + +namespace MDFN_IEN_GBA +{ + +typedef struct { + uint8 *address; + uint32 mask; +} memoryMap; + +typedef union { + struct { +#ifdef MSB_FIRST + uint8 B3; + uint8 B2; + uint8 B1; + uint8 B0; +#else + uint8 B0; + uint8 B1; + uint8 B2; + uint8 B3; +#endif + } B; + struct { +#ifdef MSB_FIRST + uint16 W1; + uint16 W0; +#else + uint16 W0; + uint16 W1; +#endif + } W; +#ifdef MSB_FIRST + volatile uint32 I; +#else + uint32 I; +#endif +} reg_pair; + +#ifndef NO_GBA_MAP +extern memoryMap map[256]; +#endif + +extern bool busPrefetch; +extern bool busPrefetchEnable; +extern uint32 busPrefetchCount; +extern uint32 cpuPrefetch[2]; + + +extern uint8 memoryWait[16]; +extern uint8 memoryWait32[16]; +extern uint8 memoryWaitSeq[16]; +extern uint8 memoryWaitSeq32[16]; + +extern reg_pair reg[45]; +extern uint8 biosProtected[4]; + +extern uint32 N_FLAG; +extern bool Z_FLAG; +extern bool C_FLAG; +extern bool V_FLAG; +extern bool armIrqEnable; +extern bool armState; +extern int armMode; +extern void (*cpuSaveGameFunc)(uint32,uint8); + +extern bool CPUWriteBatteryFile(const char *); +extern bool CPUReadBatteryFile(const char *); + +extern void CPUCleanUp(); +extern void CPUUpdateRender(); +extern void doMirroring(bool); +extern void CPUUpdateRegister(uint32, uint16); +extern void applyTimer (); + +void CPUWriteMemory(uint32 address, uint32 value); +void CPUWriteHalfWord(uint32, uint16); +void CPUWriteByte(uint32, uint8); + +extern void CPULoop(int); +extern void CPUCheckDMA(int,int); + +extern void CPUSwitchMode(int mode, bool saveState, bool breakLoop); +extern void CPUSwitchMode(int mode, bool saveState); +extern void CPUUndefinedException(); +extern void CPUSoftwareInterrupt(); +extern void CPUSoftwareInterrupt(int comment); +extern void CPUCompareVCOUNT(); +extern void CPUUpdateCPSR(); +extern void CPUUpdateFlags(bool breakLoop); +extern void CPUUpdateFlags(); + + +extern uint8 cpuBitsSet[256]; +extern uint8 cpuLowestBitSet[256]; + +extern struct EmulatedSystem GBASystem; + +int32 MDFNGBA_GetTimerPeriod(int which); + + +#define R13_IRQ 18 +#define R14_IRQ 19 +#define SPSR_IRQ 20 +#define R13_USR 26 +#define R14_USR 27 +#define R13_SVC 28 +#define R14_SVC 29 +#define SPSR_SVC 30 +#define R13_ABT 31 +#define R14_ABT 32 +#define SPSR_ABT 33 +#define R13_UND 34 +#define R14_UND 35 +#define SPSR_UND 36 +#define R8_FIQ 37 +#define R9_FIQ 38 +#define R10_FIQ 39 +#define R11_FIQ 40 +#define R12_FIQ 41 +#define R13_FIQ 42 +#define R14_FIQ 43 +#define SPSR_FIQ 44 +} + +#include "Globals.h" +#include "eeprom.h" +#include "flash.h" +#include "RTC.h" + +namespace MDFN_IEN_GBA +{ + +extern RTC *GBA_RTC; + +} + +#endif //VBA_GBA_H diff --git a/libmednahawk/src/gba/GBAinline.cpp b/libmednahawk/src/gba/GBAinline.cpp new file mode 100644 index 0000000000..cf1b73fcfb --- /dev/null +++ b/libmednahawk/src/gba/GBAinline.cpp @@ -0,0 +1,285 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Port.h" +#include "RTC.h" +#include "GBAinline.h" + +namespace MDFN_IEN_GBA +{ + +uint32 CPUReadMemory(uint32 address) +{ + uint32 value; + + switch(address >> 24) + { + case 0: + if(reg[15].I >> 24) + { + if(address < 0x4000) + { + value = READ32LE(((uint32 *)&biosProtected)); + } + else goto unreadable; + } + else + value = READ32LE(((uint32 *)&bios[address & 0x3FFC])); + break; + case 2: + value = READ32LE(((uint32 *)&workRAM[address & 0x3FFFC])); + break; + case 3: + value = READ32LE(((uint32 *)&internalRAM[address & 0x7ffC])); + break; + case 4: + if((address < 0x4000400) && ioReadable[address & 0x3fc]) { + if(ioReadable[(address & 0x3fc) + 2]) + value = READ32LE(((uint32 *)&ioMem[address & 0x3fC])); + else + value = READ16LE(((uint16 *)&ioMem[address & 0x3fc])); + } else goto unreadable; + break; + case 5: + value = READ32LE(((uint32 *)&paletteRAM[address & 0x3fC])); + break; + case 6: + address = (address & 0x1fffc); + if (((DISPCNT & 7) >2) && ((address & 0x1C000) == 0x18000)) + { + value = 0; + break; + } + if ((address & 0x18000) == 0x18000) + address &= 0x17fff; + value = READ32LE(((uint32 *)&vram[address])); + break; + case 7: + value = READ32LE(((uint32 *)&oam[address & 0x3FC])); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + value = READ32LE(((uint32 *)&rom[address&0x1FFFFFC])); + break; + case 13: + if(cpuEEPROMEnabled) + // no need to swap this + return eepromRead(address); + goto unreadable; + case 14: + if(cpuFlashEnabled | cpuSramEnabled) + // no need to swap this + return flashRead(address); + // default + + default: + unreadable: + if(cpuDmaHack) { + value = cpuDmaLast; + } else { + if(armState) { + value = CPUReadMemoryQuick(reg[15].I); + } else { + value = CPUReadHalfWordQuick(reg[15].I) | + CPUReadHalfWordQuick(reg[15].I) << 16; + } + } + } + + if(address & 3) { + int shift = (address & 3) << 3; + value = (value >> shift) | (value << (32 - shift)); + } + return value; +} + +uint32 CPUReadHalfWord(uint32 address) +{ + uint32 value; + + switch(address >> 24) { + case 0: + if (reg[15].I >> 24) { + if(address < 0x4000) { + value = READ16LE(((uint16 *)&biosProtected[address&2])); + } else goto unreadable; + } else + value = READ16LE(((uint16 *)&bios[address & 0x3FFE])); + break; + case 2: + value = READ16LE(((uint16 *)&workRAM[address & 0x3FFFE])); + break; + case 3: + value = READ16LE(((uint16 *)&internalRAM[address & 0x7ffe])); + break; + case 4: + if((address < 0x4000400) && ioReadable[address & 0x3fe]) + { + value = READ16LE(((uint16 *)&ioMem[address & 0x3fe])); + if (((address & 0x3fe)>0xFF) && ((address & 0x3fe)<0x10E)) + { + if (((address & 0x3fe) == 0x100) && timers[0].On) + value = 0xFFFF - ((timers[0].Ticks-cpuTotalTicks) >> timers[0].ClockReload); + else + if (((address & 0x3fe) == 0x104) && timers[1].On && !(timers[1].CNT & 4)) + value = 0xFFFF - ((timers[1].Ticks-cpuTotalTicks) >> timers[1].ClockReload); + else + if (((address & 0x3fe) == 0x108) && timers[2].On && !(timers[2].CNT & 4)) + value = 0xFFFF - ((timers[2].Ticks-cpuTotalTicks) >> timers[2].ClockReload); + else + if (((address & 0x3fe) == 0x10C) && timers[3].On && !(timers[3].CNT & 4)) + value = 0xFFFF - ((timers[3].Ticks-cpuTotalTicks) >> timers[3].ClockReload); + } + } + else goto unreadable; + break; + case 5: + value = READ16LE(((uint16 *)&paletteRAM[address & 0x3fe])); + break; + case 6: + address = (address & 0x1fffe); + if (((DISPCNT & 7) >2) && ((address & 0x1C000) == 0x18000)) + { + value = 0; + break; + } + if ((address & 0x18000) == 0x18000) + address &= 0x17fff; + value = READ16LE(((uint16 *)&vram[address])); + break; + case 7: + value = READ16LE(((uint16 *)&oam[address & 0x3fe])); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + if(GBA_RTC && (address == 0x80000c4 || address == 0x80000c6 || address == 0x80000c8)) + value = GBA_RTC->Read(address); + else + value = READ16LE(((uint16 *)&rom[address & 0x1FFFFFE])); + break; + case 13: + if(cpuEEPROMEnabled) + // no need to swap this + return eepromRead(address); + goto unreadable; + case 14: + if(cpuFlashEnabled | cpuSramEnabled) + // no need to swap this + return flashRead(address); + // default + default: + unreadable: + if(cpuDmaHack) { + value = cpuDmaLast & 0xFFFF; + } else { + if(armState) { + value = CPUReadHalfWordQuick(reg[15].I + (address & 2)); + } else { + value = CPUReadHalfWordQuick(reg[15].I); + } + } + break; + } + + if(address & 1) { + value = (value >> 8) | (value << 24); + } + + return value; +} + +uint8 CPUReadByte(uint32 address) +{ + switch(address >> 24) { + case 0: + if (reg[15].I >> 24) { + if(address < 0x4000) { + return biosProtected[address & 3]; + } else goto unreadable; + } + return bios[address & 0x3FFF]; + case 2: + return workRAM[address & 0x3FFFF]; + case 3: + return internalRAM[address & 0x7fff]; + case 4: + if((address < 0x4000400) && ioReadable[address & 0x3ff]) + return ioMem[address & 0x3ff]; + else goto unreadable; + case 5: + return paletteRAM[address & 0x3ff]; + case 6: + address = (address & 0x1ffff); + if (((DISPCNT & 7) >2) && ((address & 0x1C000) == 0x18000)) + return 0; + if ((address & 0x18000) == 0x18000) + address &= 0x17fff; + return vram[address]; + case 7: + return oam[address & 0x3ff]; + case 8: + case 9: + case 10: + case 11: + case 12: + return rom[address & 0x1FFFFFF]; + case 13: + if(cpuEEPROMEnabled) + return eepromRead(address); + goto unreadable; + case 14: + if(cpuSramEnabled | cpuFlashEnabled) + return flashRead(address); + if(cpuEEPROMSensorEnabled) { + switch(address & 0x00008f00) { + case 0x8200: + //return systemGetSensorX() & 255; + case 0x8300: + //return (systemGetSensorX() >> 8)|0x80; + case 0x8400: + //return systemGetSensorY() & 255; + case 0x8500: + //return systemGetSensorY() >> 8; + return(0); + } + } + // default + default: + unreadable: + if(cpuDmaHack) { + return cpuDmaLast & 0xFF; + } else { + if(armState) { + return CPUReadByteQuick(reg[15].I+(address & 3)); + } else { + return CPUReadByteQuick(reg[15].I+(address & 1)); + } + } + break; + } +} + +} diff --git a/libmednahawk/src/gba/GBAinline.h b/libmednahawk/src/gba/GBAinline.h new file mode 100644 index 0000000000..c98200a507 --- /dev/null +++ b/libmednahawk/src/gba/GBAinline.h @@ -0,0 +1,315 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_GBAinline_H +#define VBA_GBAinline_H + +#include "Port.h" +#include "RTC.h" +#include "sram.h" + +namespace MDFN_IEN_GBA +{ + +#ifdef INCED_FROM_ARM_CPP +#define EXCLUDE_ARM_FROM_INLINE +#else +#define EXCLUDE_ARM_FROM_INLINE INLINE +#endif + +extern bool cpuSramEnabled; +extern bool cpuFlashEnabled; +extern bool cpuEEPROMEnabled; +extern bool cpuEEPROMSensorEnabled; +extern bool cpuDmaHack; +extern uint32 cpuDmaLast; + +typedef struct +{ + uint16 Value; + bool On; + int32 Ticks; + int32 Reload; + int32 ClockReload; + uint16 D; + uint16 CNT; +} GBATimer; + +extern GBATimer timers[4]; + +extern int cpuTotalTicks; + +#define ARM_PREFETCH \ + {\ + cpuPrefetch[0] = CPUReadMemoryQuick(armNextPC);\ + cpuPrefetch[1] = CPUReadMemoryQuick(armNextPC+4);\ + } + +#define THUMB_PREFETCH \ + {\ + cpuPrefetch[0] = CPUReadHalfWordQuick(armNextPC);\ + cpuPrefetch[1] = CPUReadHalfWordQuick(armNextPC+2);\ + } + +#define ARM_PREFETCH_NEXT \ + cpuPrefetch[1] = CPUReadMemoryQuick(armNextPC+4); + +#define THUMB_PREFETCH_NEXT\ + cpuPrefetch[1] = CPUReadHalfWordQuick(armNextPC+2); + +#define CPUReadByteQuick(addr) \ + map[(addr)>>24].address[(addr) & map[(addr)>>24].mask] + +#define CPUReadHalfWordQuick(addr) \ + READ16LE(((uint16*)&map[(addr)>>24].address[(addr) & map[(addr)>>24].mask])) + +#define CPUReadMemoryQuick(addr) \ + READ32LE(((uint32*)&map[(addr)>>24].address[(addr) & map[(addr)>>24].mask])) + +uint32 CPUReadMemory(uint32 address); + +uint32 CPUReadHalfWord(uint32 address); + +static INLINE uint16 CPUReadHalfWordSigned(uint32 address) +{ + uint16 value = CPUReadHalfWord(address); + if((address & 1)) + value = (int8)value; + return value; +} + +uint8 CPUReadByte(uint32 address); + +// Waitstates when accessing data +static EXCLUDE_ARM_FROM_INLINE int dataTicksAccesint16(uint32 address) // DATA 8/16bits NON SEQ +{ + int addr = (address>>24)&15; + int value = memoryWait[addr]; + + if (addr>=0x08) + { + busPrefetchCount=0; + busPrefetch=false; + } + else if (busPrefetch) + { + int waitState = value; + if (waitState>0) + waitState--; + waitState++; + busPrefetchCount = (busPrefetchCount<>(8-waitState)); + } + + return value; +} + +static EXCLUDE_ARM_FROM_INLINE int dataTicksAccesint32(uint32 address) // DATA 32bits NON SEQ +{ + int addr = (address>>24)&15; + int value = memoryWait32[addr]; + + if (addr>=0x08) + { + busPrefetchCount=0; + busPrefetch=false; + } + else if (busPrefetch) + { + int waitState = value; + if (waitState>0) + waitState--; + waitState++; + busPrefetchCount = (busPrefetchCount<>(8-waitState)); + } + + return value; +} + +static EXCLUDE_ARM_FROM_INLINE int dataTicksAccessSeq16(uint32 address)// DATA 8/16bits SEQ +{ + int addr = (address>>24)&15; + int value = memoryWaitSeq[addr]; + + if (addr>=0x08) + { + busPrefetchCount=0; + busPrefetch=false; + } + else if (busPrefetch) + { + int waitState = value; + if (waitState>0) + waitState--; + waitState++; + busPrefetchCount = (busPrefetchCount<>(8-waitState)); + } + + return value; +} + +static EXCLUDE_ARM_FROM_INLINE int dataTicksAccessSeq32(uint32 address)// DATA 32bits SEQ +{ + int addr = (address>>24)&15; + int value = memoryWaitSeq32[addr]; + + if (addr>=0x08) + { + busPrefetchCount=0; + busPrefetch=false; + } + else if (busPrefetch) + { + int waitState = value; + if (waitState>0) + waitState--; + waitState++; + busPrefetchCount = (busPrefetchCount<>(8-waitState)); + } + + return value; +} + +// Waitstates when executing opcode +static EXCLUDE_ARM_FROM_INLINE int codeTicksAccesint16(uint32 address) // THUMB NON SEQ +{ + int addr = (address>>24)&15; + + if ((addr>=0x08) && (addr<=0x0D)) + { + if ((busPrefetchCount&0x3) == 3) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + return 0; + } + else + if (busPrefetchCount&0x1) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + return memoryWaitSeq[addr]-1; + } + else + { + busPrefetchCount=0; + return memoryWait[addr]; + } + } + else + { + busPrefetchCount = 0; + return memoryWait[addr]; + } +} + +static EXCLUDE_ARM_FROM_INLINE int codeTicksAccesint32(uint32 address) // ARM NON SEQ +{ + int addr = (address>>24)&15; + + if ((addr>=0x08) && (addr<=0x0D)) + { + if (busPrefetchCount&0x1) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + if (busPrefetchCount&0x1) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + return 0; + } + else + { + busPrefetchCount = 0; + return memoryWaitSeq[addr]; + } + + } + else + { + busPrefetchCount = 0; + return memoryWait32[addr]; + } + } + else + { + busPrefetchCount = 0; + return memoryWait32[addr]; + } +} + +static EXCLUDE_ARM_FROM_INLINE int codeTicksAccessSeq16(uint32 address) // THUMB SEQ +{ + int addr = (address>>24)&15; + + if ((addr>=0x08) && (addr<=0x0D)) + { + if (busPrefetchCount&0x1) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + return 0; + } + else + if (busPrefetchCount>0xFF) + { + busPrefetchCount=0; + return memoryWait[addr]; + } + else + return memoryWaitSeq[addr]; + } + else + { + busPrefetchCount = 0; + return memoryWaitSeq[addr]; + } +} + +static EXCLUDE_ARM_FROM_INLINE int codeTicksAccessSeq32(uint32 address) // ARM SEQ +{ + int addr = (address>>24)&15; + + if ((addr>=0x08) && (addr<=0x0D)) + { + if (busPrefetchCount&0x1) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + if (busPrefetchCount&0x1) + { + busPrefetchCount=((busPrefetchCount&0xFF)>>1) | (busPrefetchCount&0xFFFFFF00); + return 0; + } + else + return memoryWaitSeq[addr]; + + } + else + if (busPrefetchCount>0xFF) + { + busPrefetchCount=0; + return memoryWait32[addr]; + } + else + return memoryWaitSeq32[addr]; + } + else + { + return memoryWaitSeq32[addr]; + } +} + +} + +#endif //VBA_GBAinline_H diff --git a/libmednahawk/src/gba/Gfx.cpp b/libmednahawk/src/gba/Gfx.cpp new file mode 100644 index 0000000000..c9b5ab922c --- /dev/null +++ b/libmednahawk/src/gba/Gfx.cpp @@ -0,0 +1,1409 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "../mednafen.h" + +#include "Gfx.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +int all_coeff[32] = +{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 +}; + +uint32 AlphaClampLUT[64] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F +}; + + +MDFN_ALIGN(16) uint32 line0[512]; +MDFN_ALIGN(16) uint32 line1[512]; +MDFN_ALIGN(16) uint32 line2[512]; +MDFN_ALIGN(16) uint32 line3[512]; +MDFN_ALIGN(16) uint32 lineOBJ[512]; +MDFN_ALIGN(16) uint32 lineOBJWin[512]; +MDFN_ALIGN(16) uint32 lineMix[512]; + +bool gfxInWin0[512]; +bool gfxInWin1[512]; + +int gfxBG2Changed = 0; +int gfxBG3Changed = 0; + +int gfxBG2X = 0; +int gfxBG2Y = 0; +int gfxBG2LastX = 0; +int gfxBG2LastY = 0; +int gfxBG3X = 0; +int gfxBG3Y = 0; +int gfxBG3LastX = 0; +int gfxBG3LastY = 0; +int gfxLastVCOUNT = 0; + +void gfxDrawTextScreen(uint16 control, uint16 hofs, uint16 vofs, + uint32 *line) +{ + uint16 *palette = (uint16 *)paletteRAM; + uint8 *charBase = &vram[((control >> 2) & 0x03) * 0x4000]; + uint16 *screenBase = (uint16 *)&vram[((control >> 8) & 0x1f) * 0x800]; + uint32 prio = ((control & 3)<<25) + 0x1000000; + int sizeX = 256; + int sizeY = 256; + switch((control >> 14) & 3) { + case 0: + break; + case 1: + sizeX = 512; + break; + case 2: + sizeY = 512; + break; + case 3: + sizeX = 512; + sizeY = 512; + break; + } + + int maskX = sizeX-1; + int maskY = sizeY-1; + + bool mosaicOn = (control & 0x40) ? true : false; + + int xxx = hofs & maskX; + int yyy = (vofs + VCOUNT) & maskY; + int mosaicX = (MOSAIC & 0x000F)+1; + int mosaicY = ((MOSAIC & 0x00F0)>>4)+1; + + if(mosaicOn) { + if((VCOUNT % mosaicY) != 0) { + mosaicY = (VCOUNT / mosaicY) * mosaicY; + yyy = (vofs + mosaicY) & maskY; + } + } + + if(yyy > 255 && sizeY > 256) { + yyy &= 255; + screenBase += 0x400; + if(sizeX > 256) + screenBase += 0x400; + } + + int yshift = ((yyy>>3)<<5); + if((control) & 0x80) + { + uint16 *screenSource = screenBase + 0x400 * (xxx>>8) + ((xxx & 255)>>3) + yshift; + for(int x = 0; x < 240; x++) { + uint16 data = READ16LE(screenSource); + + int tile = data & 0x3FF; + int tileX = (xxx & 7); + int tileY = yyy & 7; + + if(data & 0x0400) + tileX = 7 - tileX; + if(data & 0x0800) + tileY = 7 - tileY; + + uint8 color = charBase[tile * 64 + tileY * 8 + tileX]; + + line[x] = color ? (READ16LE(&palette[color]) | prio): 0x80000000; + + if(data & 0x0400) { + if(tileX == 0) + screenSource++; + } else if(tileX == 7) + screenSource++; + xxx++; + if(xxx == 256) { + if(sizeX > 256) + screenSource = screenBase + 0x400 + yshift; + else { + screenSource = screenBase + yshift; + xxx = 0; + } + } else if(xxx >= sizeX) { + xxx = 0; + screenSource = screenBase + yshift; + } + } + } + else + { + uint16 *screenSource = screenBase + 0x400*(xxx>>8)+((xxx&255)>>3) + yshift; + uint16 data = READ16LE(screenSource); + int tile = data & 0x3FF; + int pal = (READ16LE(screenSource)>>8) & 0xF0; + int tileXmatch = (data & 0x0400) ? 0 : 7; + + for(int x = 0; x < 240; x++) + { + int tileX = (xxx & 7); + int tileY = yyy & 7; + + if(data & 0x0400) + tileX = 7 - tileX; + if(data & 0x0800) + tileY = 7 - tileY; + + uint8 color = charBase[(tile<<5) + (tileY<<2) + (tileX>>1)]; + + if(tileX & 1) { + color = (color >> 4); + } else { + color &= 0x0F; + } + + line[x] = color ? (READ16LE(&palette[pal + color])|prio): 0x80000000; + + if(tileX == tileXmatch) + { + screenSource++; + data = READ16LE(screenSource); + tile = data & 0x3FF; + pal = (READ16LE(screenSource)>>8) & 0xF0; + tileXmatch = (data & 0x0400) ? 0 : 7; + } + xxx++; + if(xxx == 256) + { + if(sizeX > 256) + screenSource = screenBase + 0x400 + yshift; + else + { + screenSource = screenBase + yshift; + xxx = 0; + } + data = READ16LE(screenSource); + tile = data & 0x3FF; + pal = (READ16LE(screenSource)>>8) & 0xF0; + tileXmatch = (data & 0x0400) ? 0 : 7; + } + else if(xxx >= sizeX) + { + xxx = 0; + screenSource = screenBase + yshift; + data = READ16LE(screenSource); + tile = data & 0x3FF; + pal = (READ16LE(screenSource)>>8) & 0xF0; + tileXmatch = (data & 0x0400) ? 0 : 7; + } + } + } + if(mosaicOn) + { + if(mosaicX > 1) + { + int m = 1; + for(int i = 0; i < 239; i++) + { + line[i+1] = line[i]; + m++; + if(m == mosaicX) + { + m = 1; + i++; + } + } + } + } +} + +void gfxDrawRotScreen(uint16 control, + uint16 x_l, uint16 x_h, + uint16 y_l, uint16 y_h, + uint16 pa, uint16 pb, + uint16 pc, uint16 pd, + int& currentX, int& currentY, + int changed, + uint32 *line) +{ + uint16 *palette = (uint16 *)paletteRAM; + uint8 *charBase = &vram[((control >> 2) & 0x03) * 0x4000]; + uint8 *screenBase = (uint8 *)&vram[((control >> 8) & 0x1f) * 0x800]; + int prio = ((control & 3) << 25) + 0x1000000; + + int sizeX = 128; + int sizeY = 128; + switch((control >> 14) & 3) { + case 0: + break; + case 1: + sizeX = sizeY = 256; + break; + case 2: + sizeX = sizeY = 512; + break; + case 3: + sizeX = sizeY = 1024; + break; + } + + int dx = pa & 0x7FFF; + if(pa & 0x8000) + dx |= 0xFFFF8000; + int dmx = pb & 0x7FFF; + if(pb & 0x8000) + dmx |= 0xFFFF8000; + int dy = pc & 0x7FFF; + if(pc & 0x8000) + dy |= 0xFFFF8000; + int dmy = pd & 0x7FFF; + if(pd & 0x8000) + dmy |= 0xFFFF8000; + + if(VCOUNT == 0) + changed = 3; + + if(changed & 1) { + currentX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + currentX |= 0xF8000000; + } else { + currentX += dmx; + } + + if(changed & 2) { + currentY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + currentY |= 0xF8000000; + } else { + currentY += dmy; + } + + int realX = currentX; + int realY = currentY; + + if(control & 0x40) { + int mosaicY = ((MOSAIC & 0xF0)>>4) + 1; + int y = (VCOUNT % mosaicY); + realX -= y*dmx; + realY -= y*dmy; + } + + int xxx = (realX >> 8); + int yyy = (realY >> 8); + + if(control & 0x2000) { + xxx %= sizeX; + yyy %= sizeY; + if(xxx < 0) + xxx += sizeX; + if(yyy < 0) + yyy += sizeY; + } + + if(control & 0x80) { + for(int x = 0; x < 240; x++) { + if(xxx < 0 || + yyy < 0 || + xxx >= sizeX || + yyy >= sizeY) { + line[x] = 0x80000000; + } else { + int tile = screenBase[(xxx>>3) + (yyy>>3)*(sizeX>>3)]; + + int tileX = (xxx & 7); + int tileY = yyy & 7; + + uint8 color = charBase[(tile<<6) + (tileY<<3) + tileX]; + + line[x] = color ? (READ16LE(&palette[color])|prio): 0x80000000; + } + realX += dx; + realY += dy; + + xxx = (realX >> 8); + yyy = (realY >> 8); + + if(control & 0x2000) { + xxx %= sizeX; + yyy %= sizeY; + if(xxx < 0) + xxx += sizeX; + if(yyy < 0) + yyy += sizeY; + } + } + } else { + for(int x = 0; x < 240; x++) { + if(xxx < 0 || + yyy < 0 || + xxx >= sizeX || + yyy >= sizeY) { + line[x] = 0x80000000; + } else { + int tile = screenBase[(xxx>>3) + (yyy>>3)*(sizeX>>3)]; + + int tileX = (xxx & 7); + int tileY = yyy & 7; + + uint8 color = charBase[(tile<<6) + (tileY<<3) + tileX]; + + line[x] = color ? (READ16LE(&palette[color])|prio): 0x80000000; + } + realX += dx; + realY += dy; + + xxx = (realX >> 8); + yyy = (realY >> 8); + + if(control & 0x2000) { + xxx %= sizeX; + yyy %= sizeY; + if(xxx < 0) + xxx += sizeX; + if(yyy < 0) + yyy += sizeY; + } + } + } + + if(control & 0x40) { + int mosaicX = (MOSAIC & 0xF) + 1; + if(mosaicX > 1) { + int m = 1; + for(int i = 0; i < 239; i++) { + line[i+1] = line[i]; + m++; + if(m == mosaicX) { + m = 1; + i++; + } + } + } + } +} + +void gfxDrawRotScreen16Bit(uint16 control, + uint16 x_l, uint16 x_h, + uint16 y_l, uint16 y_h, + uint16 pa, uint16 pb, + uint16 pc, uint16 pd, + int& currentX, int& currentY, + int changed, + uint32 *line) +{ + uint16 *screenBase = (uint16 *)&vram[0]; + int prio = ((control & 3) << 25) + 0x1000000; + int sizeX = 240; + int sizeY = 160; + + int startX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + startX |= 0xF8000000; + int startY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + startY |= 0xF8000000; + + int dx = pa & 0x7FFF; + if(pa & 0x8000) + dx |= 0xFFFF8000; + int dmx = pb & 0x7FFF; + if(pb & 0x8000) + dmx |= 0xFFFF8000; + int dy = pc & 0x7FFF; + if(pc & 0x8000) + dy |= 0xFFFF8000; + int dmy = pd & 0x7FFF; + if(pd & 0x8000) + dmy |= 0xFFFF8000; + + if(VCOUNT == 0) + changed = 3; + + if(changed & 1) { + currentX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + currentX |= 0xF8000000; + } else + currentX += dmx; + + if(changed & 2) { + currentY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + currentY |= 0xF8000000; + } else { + currentY += dmy; + } + + int realX = currentX; + int realY = currentY; + + if(control & 0x40) { + int mosaicY = ((MOSAIC & 0xF0)>>4) + 1; + int y = (VCOUNT % mosaicY); + realX -= y*dmx; + realY -= y*dmy; + } + + int xxx = (realX >> 8); + int yyy = (realY >> 8); + + for(int x = 0; x < 240; x++) { + if(xxx < 0 || + yyy < 0 || + xxx >= sizeX || + yyy >= sizeY) { + line[x] = 0x80000000; + } else { + line[x] = (READ16LE(&screenBase[yyy * sizeX + xxx]) | prio); + } + realX += dx; + realY += dy; + + xxx = (realX >> 8); + yyy = (realY >> 8); + } + + if(control & 0x40) { + int mosaicX = (MOSAIC & 0xF) + 1; + if(mosaicX > 1) { + int m = 1; + for(int i = 0; i < 239; i++) { + line[i+1] = line[i]; + m++; + if(m == mosaicX) { + m = 1; + i++; + } + } + } + } +} + +void gfxDrawRotScreen256(uint16 control, + uint16 x_l, uint16 x_h, + uint16 y_l, uint16 y_h, + uint16 pa, uint16 pb, + uint16 pc, uint16 pd, + int ¤tX, int& currentY, + int changed, + uint32 *line) +{ + uint16 *palette = (uint16 *)paletteRAM; + uint8 *screenBase = (DISPCNT & 0x0010) ? &vram[0xA000] : &vram[0x0000]; + int prio = ((control & 3) << 25) + 0x1000000; + int sizeX = 240; + int sizeY = 160; + + int startX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + startX |= 0xF8000000; + int startY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + startY |= 0xF8000000; + + int dx = pa & 0x7FFF; + if(pa & 0x8000) + dx |= 0xFFFF8000; + int dmx = pb & 0x7FFF; + if(pb & 0x8000) + dmx |= 0xFFFF8000; + int dy = pc & 0x7FFF; + if(pc & 0x8000) + dy |= 0xFFFF8000; + int dmy = pd & 0x7FFF; + if(pd & 0x8000) + dmy |= 0xFFFF8000; + + if(VCOUNT == 0) + changed = 3; + + if(changed & 1) { + currentX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + currentX |= 0xF8000000; + } else { + currentX += dmx; + } + + if(changed & 2) { + currentY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + currentY |= 0xF8000000; + } else { + currentY += dmy; + } + + int realX = currentX; + int realY = currentY; + + if(control & 0x40) { + int mosaicY = ((MOSAIC & 0xF0)>>4) + 1; + int y = (VCOUNT / mosaicY) * mosaicY; + realX = startX + y*dmx; + realY = startY + y*dmy; + } + + int xxx = (realX >> 8); + int yyy = (realY >> 8); + + for(int x = 0; x < 240; x++) { + if(xxx < 0 || + yyy < 0 || + xxx >= sizeX || + yyy >= sizeY) { + line[x] = 0x80000000; + } else { + uint8 color = screenBase[yyy * 240 + xxx]; + + line[x] = color ? (READ16LE(&palette[color])|prio): 0x80000000; + } + realX += dx; + realY += dy; + + xxx = (realX >> 8); + yyy = (realY >> 8); + } + + if(control & 0x40) { + int mosaicX = (MOSAIC & 0xF) + 1; + if(mosaicX > 1) { + int m = 1; + for(int i = 0; i < 239; i++) { + line[i+1] = line[i]; + m++; + if(m == mosaicX) { + m = 1; + i++; + } + } + } + } +} + +void gfxDrawRotScreen16Bit160(uint16 control, + uint16 x_l, uint16 x_h, + uint16 y_l, uint16 y_h, + uint16 pa, uint16 pb, + uint16 pc, uint16 pd, + int& currentX, int& currentY, + int changed, + uint32 *line) +{ + uint16 *screenBase = (DISPCNT & 0x0010) ? (uint16 *)&vram[0xa000] : + (uint16 *)&vram[0]; + int prio = ((control & 3) << 25) + 0x1000000; + int sizeX = 160; + int sizeY = 128; + + int startX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + startX |= 0xF8000000; + int startY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + startY |= 0xF8000000; + + int dx = pa & 0x7FFF; + if(pa & 0x8000) + dx |= 0xFFFF8000; + int dmx = pb & 0x7FFF; + if(pb & 0x8000) + dmx |= 0xFFFF8000; + int dy = pc & 0x7FFF; + if(pc & 0x8000) + dy |= 0xFFFF8000; + int dmy = pd & 0x7FFF; + if(pd & 0x8000) + dmy |= 0xFFFF8000; + + if(VCOUNT == 0) + changed = 3; + + if(changed & 1) { + currentX = (x_l) | ((x_h & 0x07FF)<<16); + if(x_h & 0x0800) + currentX |= 0xF8000000; + } else { + currentX += dmx; + } + + if(changed & 2) { + currentY = (y_l) | ((y_h & 0x07FF)<<16); + if(y_h & 0x0800) + currentY |= 0xF8000000; + } else { + currentY += dmy; + } + + int realX = currentX; + int realY = currentY; + + if(control & 0x40) { + int mosaicY = ((MOSAIC & 0xF0)>>4) + 1; + int y = (VCOUNT / mosaicY) * mosaicY; + realX = startX + y*dmx; + realY = startY + y*dmy; + } + + int xxx = (realX >> 8); + int yyy = (realY >> 8); + + for(int x = 0; x < 240; x++) { + if(xxx < 0 || + yyy < 0 || + xxx >= sizeX || + yyy >= sizeY) { + line[x] = 0x80000000; + } else { + line[x] = (READ16LE(&screenBase[yyy * sizeX + xxx]) | prio); + } + realX += dx; + realY += dy; + + xxx = (realX >> 8); + yyy = (realY >> 8); + } + + if(control & 0x40) { + int mosaicX = (MOSAIC & 0xF) + 1; + if(mosaicX > 1) { + int m = 1; + for(int i = 0; i < 239; i++) { + line[i+1] = line[i]; + m++; + if(m == mosaicX) { + m = 1; + i++; + } + } + } + } +} + +void gfxDrawSprites(void) +{ + int m=0; + gfxClearArray(lineOBJ); + if(layerEnable & 0x1000) { + uint16 *sprites = (uint16 *)oam; + uint16 *spritePalette = &((uint16 *)paletteRAM)[256]; + int mosaicY = ((MOSAIC & 0xF000)>>12) + 1; + int mosaicX = ((MOSAIC & 0xF00)>>8) + 1; + + for(int i = 0; i < 128 ; i++) { + + uint16 a0 = READ16LE(sprites++); + uint16 a1 = READ16LE(sprites++); + uint16 a2 = READ16LE(sprites++); + sprites++; + + // ignore OBJ-WIN + if((a0 & 0x0c00) == 0x0800) + continue; + + int sizeY = 8; + int sizeX = 8; + + switch(((a0 >>12) & 0x0c)|(a1>>14)) { + case 0: + break; + case 1: + sizeX = sizeY = 16; + break; + case 2: + sizeX = sizeY = 32; + break; + case 3: + sizeX = sizeY = 64; + break; + case 4: + sizeX = 16; + break; + case 5: + sizeX = 32; + break; + case 6: + sizeX = 32; + sizeY = 16; + break; + case 7: + sizeX = 64; + sizeY = 32; + break; + case 8: + sizeY = 16; + break; + case 9: + sizeY = 32; + break; + case 10: + sizeX = 16; + sizeY = 32; + break; + case 11: + sizeX = 32; + sizeY = 64; + break; + default: + continue; + } + +#ifdef SPRITE_DEBUG + int maskX = sizeX-1; + int maskY = sizeY-1; +#endif + + int sy = (a0 & 255); + + if(sy > 160) + sy -= 256; + + if(a0 & 0x0100) { + int fieldX = sizeX; + int fieldY = sizeY; + if(a0 & 0x0200) { + fieldX <<= 1; + fieldY <<= 1; + } + + int t = VCOUNT - sy; + if((t >= 0) && (t < fieldY)) { + int sx = (a1 & 0x1FF); + if((sx < 240) || (((sx + fieldX) & 511) < 240)) { + // int t2 = t - (fieldY >> 1); + int rot = (a1 >> 9) & 0x1F; + uint16 *OAM = (uint16 *)oam; + int dx = READ16LE(&OAM[3 + (rot << 4)]); + if(dx & 0x8000) + dx |= 0xFFFF8000; + int dmx = READ16LE(&OAM[7 + (rot << 4)]); + if(dmx & 0x8000) + dmx |= 0xFFFF8000; + int dy = READ16LE(&OAM[11 + (rot << 4)]); + if(dy & 0x8000) + dy |= 0xFFFF8000; + int dmy = READ16LE(&OAM[15 + (rot << 4)]); + if(dmy & 0x8000) + dmy |= 0xFFFF8000; + + if(a0 & 0x1000) { + t -= (t % mosaicY); + } + + int realX = ((sizeX) << 7) - (fieldX >> 1)*dx - (fieldY>>1)*dmx + + t * dmx; + int realY = ((sizeY) << 7) - (fieldX >> 1)*dy - (fieldY>>1)*dmy + + t * dmy; + + uint32 prio = (((a2 >> 10) & 3) << 25) | ((a0 & 0x0c00)<<6); + + if(a0 & 0x2000) { + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + int inc = 32; + if(DISPCNT & 0x40) + inc = sizeX >> 2; + else + c &= 0x3FE; + for(int x = 0; x < fieldX; x++) { + int xxx = realX >> 8; + int yyy = realY >> 8; + + if(xxx < 0 || xxx >= sizeX || + yyy < 0 || yyy >= sizeY || + sx >= 240); + else { + uint32 color = vram[0x10000 + ((((c + (yyy>>3) * inc)<<5) + + ((yyy & 7)<<3) + ((xxx >> 3)<<6) + + (xxx & 7))&0x7FFF)]; + if ((color==0) && (((prio >> 25)&3) < + ((lineOBJ[sx]>>25)&3))) { + lineOBJ[sx] = (lineOBJ[sx] & 0xF9FFFFFF) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } else if((color) && (prio < (lineOBJ[sx]&0xFF000000))) { + lineOBJ[sx] = READ16LE(&spritePalette[color]) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } + + if (a0 & 0x1000) { + m++; + if (m==mosaicX) + m=0; + } +#ifdef SPRITE_DEBUG + if(t == 0 || t == maskY || x == 0 || x == maskX) + lineOBJ[sx] = 0x001F; +#endif + } + sx = (sx+1)&511;; + realX += dx; + realY += dy; + } + } else { + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + + int inc = 32; + if(DISPCNT & 0x40) + inc = sizeX >> 3; + int palette = (a2 >> 8) & 0xF0; + for(int x = 0; x < fieldX; x++) { + int xxx = realX >> 8; + int yyy = realY >> 8; + if(xxx < 0 || xxx >= sizeX || + yyy < 0 || yyy >= sizeY || + sx >= 240); + else { + uint32 color = vram[0x10000 + ((((c + (yyy>>3) * inc)<<5) + + ((yyy & 7)<<2) + ((xxx >> 3)<<5) + + ((xxx & 7)>>1))&0x7FFF)]; + if(xxx & 1) + color >>= 4; + else + color &= 0x0F; + + if ((color==0) && (((prio >> 25)&3) < + ((lineOBJ[sx]>>25)&3))) { + lineOBJ[sx] = (lineOBJ[sx] & 0xF9FFFFFF) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } else if((color) && (prio < (lineOBJ[sx]&0xFF000000))) { + lineOBJ[sx] = READ16LE(&spritePalette[palette+color]) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } + } + if((a0 & 0x1000) && m) { + m++; + if (m==mosaicX) + m=0; + } + +#ifdef SPRITE_DEBUG + if(t == 0 || t == maskY || x == 0 || x == maskX) + lineOBJ[sx] = 0x001F; +#endif + sx = (sx+1)&511;; + realX += dx; + realY += dy; + + } + } + } + } + } else { + int t = VCOUNT - sy; + if((t >= 0) && (t < sizeY)) { + int sx = (a1 & 0x1FF); + if(((sx < 240)||(((sx+sizeX)&511)<240)) && !(a0 & 0x0200)) { + if(a0 & 0x2000) { + if(a1 & 0x2000) + t = sizeY - t - 1; + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + + int inc = 32; + if(DISPCNT & 0x40) { + inc = sizeX >> 2; + } else { + c &= 0x3FE; + } + int xxx = 0; + if(a1 & 0x1000) + xxx = sizeX-1; + + if(a0 & 0x1000) { + t -= (t % mosaicY); + } + + int address = 0x10000 + ((((c+ (t>>3) * inc) << 5) + + ((t & 7) << 3) + ((xxx>>3)<<6) + (xxx & 7)) & 0x7FFF); + + if(a1 & 0x1000) + xxx = 7; + uint32 prio = (((a2 >> 10) & 3) << 25) | ((a0 & 0x0c00)<<6); + + for(int xx = 0; xx < sizeX; xx++) { + if(sx < 240) { + uint8 color = vram[address]; + if ((color==0) && (((prio >> 25)&3) < + ((lineOBJ[sx]>>25)&3))) { + lineOBJ[sx] = (lineOBJ[sx] & 0xF9FFFFFF) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } else if((color) && (prio < (lineOBJ[sx]&0xFF000000))) { + lineOBJ[sx] = READ16LE(&spritePalette[color]) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } + + if (a0 & 0x1000) { + m++; + if (m==mosaicX) + m=0; + } + +#ifdef SPRITE_DEBUG + if(t == 0 || t == maskY || xx == 0 || xx == maskX) + lineOBJ[sx] = 0x001F; +#endif + } + + sx = (sx+1) & 511; + if(a1 & 0x1000) { + xxx--; + address--; + if(xxx == -1) { + address -= 56; + xxx = 7; + } + if(address < 0x10000) + address += 0x8000; + } else { + xxx++; + address++; + if(xxx == 8) { + address += 56; + xxx = 0; + } + if(address > 0x17fff) + address -= 0x8000; + } + } + } else { + if(a1 & 0x2000) + t = sizeY - t - 1; + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + + int inc = 32; + if(DISPCNT & 0x40) { + inc = sizeX >> 3; + } + int xxx = 0; + if(a1 & 0x1000) + xxx = sizeX - 1; + + if(a0 & 0x1000) { + t -= (t % mosaicY); + } + + int address = 0x10000 + ((((c + (t>>3) * inc)<<5) + + ((t & 7)<<2) + ((xxx>>3)<<5) + ((xxx & 7) >> 1))&0x7FFF); + uint32 prio = (((a2 >> 10) & 3) << 25) | ((a0 & 0x0c00)<<6); + int palette = (a2 >> 8) & 0xF0; + if(a1 & 0x1000) { + xxx = 7; + for(int xx = sizeX - 1; xx >= 0; xx--) { + if(sx < 240) { + uint8 color = vram[address]; + if(xx & 1) { + color = (color >> 4); + } else + color &= 0x0F; + + if ((color==0) && (((prio >> 25)&3) < + ((lineOBJ[sx]>>25)&3))) { + lineOBJ[sx] = (lineOBJ[sx] & 0xF9FFFFFF) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } else if((color) && (prio < (lineOBJ[sx]&0xFF000000))) { + lineOBJ[sx] = READ16LE(&spritePalette[palette + color]) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } + } + if (a0 & 0x1000) { + m++; + if (m==mosaicX) + m=0; + } +#ifdef SPRITE_DEBUG + if(t == 0 || t == maskY || xx == 0 || xx == maskX) + lineOBJ[sx] = 0x001F; +#endif + sx = (sx+1) & 511; + xxx--; + if(!(xx & 1)) + address--; + if(xxx == -1) { + xxx = 7; + address -= 28; + } + if(address < 0x10000) + address += 0x8000; + } + } else { + for(int xx = 0; xx < sizeX; xx++) { + if(sx < 240) { + uint8 color = vram[address]; + if(xx & 1) { + color = (color >> 4); + } else + color &= 0x0F; + + if ((color==0) && (((prio >> 25)&3) < + ((lineOBJ[sx]>>25)&3))) { + lineOBJ[sx] = (lineOBJ[sx] & 0xF9FFFFFF) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + } else if((color) && (prio < (lineOBJ[sx]&0xFF000000))) { + lineOBJ[sx] = READ16LE(&spritePalette[palette + color]) | prio; + if((a0 & 0x1000) && m) + lineOBJ[sx]=(lineOBJ[sx-1] & 0xF9FFFFFF) | prio; + + } + } + if (a0 & 0x1000) { + m++; + if (m==mosaicX) + m=0; + } +#ifdef SPRITE_DEBUG + if(t == 0 || t == maskY || xx == 0 || xx == maskX) + lineOBJ[sx] = 0x001F; +#endif + sx = (sx+1) & 511; + xxx++; + if(xx & 1) + address++; + if(xxx == 8) { + address += 28; + xxx = 0; + } + if(address > 0x17fff) + address -= 0x8000; + } + } + } + } + } + } + } + } +} + +void gfxDrawOBJWin(void) +{ + gfxClearArray(lineOBJWin); + if(layerEnable & 0x8000) { + uint16 *sprites = (uint16 *)oam; + // uint16 *spritePalette = &((uint16 *)paletteRAM)[256]; + for(int i = 0; i < 128 ; i++) { + uint16 a0 = READ16LE(sprites++); + uint16 a1 = READ16LE(sprites++); + uint16 a2 = READ16LE(sprites++); + sprites++; + + // ignore non OBJ-WIN + if((a0 & 0x0c00) != 0x0800) + continue; + + int sizeY = 8; + int sizeX = 8; + + switch(((a0 >>12) & 0x0c)|(a1>>14)) { + case 0: + break; + case 1: + sizeX = sizeY = 16; + break; + case 2: + sizeX = sizeY = 32; + break; + case 3: + sizeX = sizeY = 64; + break; + case 4: + sizeX = 16; + break; + case 5: + sizeX = 32; + break; + case 6: + sizeX = 32; + sizeY = 16; + break; + case 7: + sizeX = 64; + sizeY = 32; + break; + case 8: + sizeY = 16; + break; + case 9: + sizeY = 32; + break; + case 10: + sizeX = 16; + sizeY = 32; + break; + case 11: + sizeX = 32; + sizeY = 64; + break; + default: + continue; + } + + int sy = (a0 & 255); + + if(sy > 160) + sy -= 256; + + if(a0 & 0x0100) { + int fieldX = sizeX; + int fieldY = sizeY; + if(a0 & 0x0200) { + fieldX <<= 1; + fieldY <<= 1; + } + + int t = VCOUNT - sy; + if((t >= 0) && (t < fieldY)) { + int sx = (a1 & 0x1FF); + if((sx < 240) || (((sx + fieldX) & 511) < 240)) { + // int t2 = t - (fieldY >> 1); + int rot = (a1 >> 9) & 0x1F; + uint16 *OAM = (uint16 *)oam; + int dx = READ16LE(&OAM[3 + (rot << 4)]); + if(dx & 0x8000) + dx |= 0xFFFF8000; + int dmx = READ16LE(&OAM[7 + (rot << 4)]); + if(dmx & 0x8000) + dmx |= 0xFFFF8000; + int dy = READ16LE(&OAM[11 + (rot << 4)]); + if(dy & 0x8000) + dy |= 0xFFFF8000; + int dmy = READ16LE(&OAM[15 + (rot << 4)]); + if(dmy & 0x8000) + dmy |= 0xFFFF8000; + + int realX = ((sizeX) << 7) - (fieldX >> 1)*dx - (fieldY>>1)*dmx + + t * dmx; + int realY = ((sizeY) << 7) - (fieldX >> 1)*dy - (fieldY>>1)*dmy + + t * dmy; + + // uint32 prio = (((a2 >> 10) & 3) << 25) | ((a0 & 0x0c00)<<6); + + if(a0 & 0x2000) { + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + int inc = 32; + if(DISPCNT & 0x40) + inc = sizeX >> 2; + else + c &= 0x3FE; + for(int x = 0; x < fieldX; x++) { + int xxx = realX >> 8; + int yyy = realY >> 8; + + if(xxx < 0 || xxx >= sizeX || + yyy < 0 || yyy >= sizeY || + sx >= 240) { + } else { + uint32 color = vram[0x10000 + ((((c + (yyy>>3) * inc)<<5) + + ((yyy & 7)<<3) + ((xxx >> 3)<<6) + + (xxx & 7))&0x7fff)]; + if(color) { + lineOBJWin[sx] = 1; + } + } + sx = (sx+1)&511;; + realX += dx; + realY += dy; + } + } else { + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + + int inc = 32; + if(DISPCNT & 0x40) + inc = sizeX >> 3; + // int palette = (a2 >> 8) & 0xF0; + for(int x = 0; x < fieldX; x++) { + int xxx = realX >> 8; + int yyy = realY >> 8; + + // if(x == 0 || x == (sizeX-1) || + // t == 0 || t == (sizeY-1)) { + // lineOBJ[sx] = 0x001F | prio; + // } else { + if(xxx < 0 || xxx >= sizeX || + yyy < 0 || yyy >= sizeY || + sx >= 240){ + } else { + uint32 color = vram[0x10000 + ((((c + (yyy>>3) * inc)<<5) + + ((yyy & 7)<<2) + ((xxx >> 3)<<5) + + ((xxx & 7)>>1))&0x7fff)]; + if(xxx & 1) + color >>= 4; + else + color &= 0x0F; + + if(color) { + lineOBJWin[sx] = 1; + } + } + // } + sx = (sx+1)&511;; + realX += dx; + realY += dy; + } + } + } + } + } else { + int t = VCOUNT - sy; + if((t >= 0) && (t < sizeY)) { + int sx = (a1 & 0x1FF); + if(((sx < 240)||(((sx+sizeX)&511)<240)) && !(a0 & 0x0200)) { + if(a0 & 0x2000) { + if(a1 & 0x2000) + t = sizeY - t - 1; + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + + int inc = 32; + if(DISPCNT & 0x40) { + inc = sizeX >> 2; + } else { + c &= 0x3FE; + } + int xxx = 0; + if(a1 & 0x1000) + xxx = sizeX-1; + int address = 0x10000 + ((((c+ (t>>3) * inc) << 5) + + ((t & 7) << 3) + ((xxx>>3)<<6) + (xxx & 7))&0x7fff); + if(a1 & 0x1000) + xxx = 7; + // uint32 prio = (((a2 >> 10) & 3) << 25) | ((a0 & 0x0c00)<<6); + for(int xx = 0; xx < sizeX; xx++) { + if(sx < 240) { + uint8 color = vram[address]; + if(color) { + lineOBJWin[sx] = 1; + } + } + + sx = (sx+1) & 511; + if(a1 & 0x1000) { + xxx--; + address--; + if(xxx == -1) { + address -= 56; + xxx = 7; + } + if(address < 0x10000) + address += 0x8000; + } else { + xxx++; + address++; + if(xxx == 8) { + address += 56; + xxx = 0; + } + if(address > 0x17fff) + address -= 0x8000; + } + } + } else { + if(a1 & 0x2000) + t = sizeY - t - 1; + int c = (a2 & 0x3FF); + if((DISPCNT & 7) > 2 && (c < 512)) + continue; + + int inc = 32; + if(DISPCNT & 0x40) { + inc = sizeX >> 3; + } + int xxx = 0; + if(a1 & 0x1000) + xxx = sizeX - 1; + int address = 0x10000 + ((((c + (t>>3) * inc)<<5) + + ((t & 7)<<2) + ((xxx>>3)<<5) + ((xxx & 7) >> 1))&0x7fff); + // uint32 prio = (((a2 >> 10) & 3) << 25) | ((a0 & 0x0c00)<<6); + // int palette = (a2 >> 8) & 0xF0; + if(a1 & 0x1000) { + xxx = 7; + for(int xx = sizeX - 1; xx >= 0; xx--) { + if(sx < 240) { + uint8 color = vram[address]; + if(xx & 1) { + color = (color >> 4); + } else + color &= 0x0F; + + if(color) { + lineOBJWin[sx] = 1; + } + } + sx = (sx+1) & 511; + xxx--; + if(!(xx & 1)) + address--; + if(xxx == -1) { + xxx = 7; + address -= 28; + } + if(address < 0x10000) + address += 0x8000; + } + } else { + for(int xx = 0; xx < sizeX; xx++) { + if(sx < 240) { + uint8 color = vram[address]; + if(xx & 1) { + color = (color >> 4); + } else + color &= 0x0F; + + if(color) { + lineOBJWin[sx] = 1; + } + } + sx = (sx+1) & 511; + xxx++; + if(xx & 1) + address++; + if(xxx == 8) { + address += 28; + xxx = 0; + } + if(address > 0x17fff) + address -= 0x8000; + } + } + } + } + } + } + } + } +} + +} diff --git a/libmednahawk/src/gba/Gfx.h b/libmednahawk/src/gba/Gfx.h new file mode 100644 index 0000000000..9095e1a6be --- /dev/null +++ b/libmednahawk/src/gba/Gfx.h @@ -0,0 +1,85 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_GFX_H +#define VBA_GFX_H + +#include "GBA.h" +#include "Gfx.h" +#include "Globals.h" + +#include "Port.h" + +namespace MDFN_IEN_GBA +{ + +//#define SPRITE_DEBUG + +void mode0RenderLine(); +void mode0RenderLineNoWindow(); +void mode0RenderLineAll(); + +void mode1RenderLine(); +void mode1RenderLineNoWindow(); +void mode1RenderLineAll(); + +void mode2RenderLine(); +void mode2RenderLineNoWindow(); +void mode2RenderLineAll(); + +void mode3RenderLine(); +void mode3RenderLineNoWindow(); +void mode3RenderLineAll(); + +void mode4RenderLine(); +void mode4RenderLineNoWindow(); +void mode4RenderLineAll(); + +void mode5RenderLine(); +void mode5RenderLineNoWindow(); +void mode5RenderLineAll(); + +extern int all_coeff[32]; +extern uint32 AlphaClampLUT[64]; +extern MDFN_ALIGN(16) uint32 line0[512]; +extern MDFN_ALIGN(16) uint32 line1[512]; +extern MDFN_ALIGN(16) uint32 line2[512]; +extern MDFN_ALIGN(16) uint32 line3[512]; +extern MDFN_ALIGN(16) uint32 lineOBJ[512]; +extern MDFN_ALIGN(16) uint32 lineOBJWin[512]; +extern MDFN_ALIGN(16) uint32 lineMix[512]; +extern bool gfxInWin0[512]; +extern bool gfxInWin1[512]; + +extern int gfxBG2Changed; +extern int gfxBG3Changed; + +extern int gfxBG2X; +extern int gfxBG2Y; +extern int gfxBG2LastX; +extern int gfxBG2LastY; +extern int gfxBG3X; +extern int gfxBG3Y; +extern int gfxBG3LastX; +extern int gfxBG3LastY; +extern int gfxLastVCOUNT; + +} + +#endif // VBA_GFX_H diff --git a/libmednahawk/src/gba/Globals.cpp b/libmednahawk/src/gba/Globals.cpp new file mode 100644 index 0000000000..37c42f44ae --- /dev/null +++ b/libmednahawk/src/gba/Globals.cpp @@ -0,0 +1,110 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" + +namespace MDFN_IEN_GBA +{ + +reg_pair reg[45]; +memoryMap map[256]; +bool ioReadable[0x400]; + +uint32 N_FLAG = 0; +bool C_FLAG = 0; +bool Z_FLAG = 0; +bool V_FLAG = 0; + +bool armState = true; +bool armIrqEnable = true; +uint32 armNextPC = 0x00000000; +int armMode = 0x1f; +uint32 stop = 0x08000568; +int saveType = 0; +bool useBios = false; +bool skipBios = false; +int frameSkip = 1; +bool speedup = false; +bool synchronize = true; +bool cpuDisableSfx = false; +bool cpuIsMultiBoot = false; +bool parseDebug = true; +int layerSettings = 0xff00; +int layerEnable = 0xff00; + +uint8 *bios = NULL; +uint8 *rom = NULL; +uint8 *internalRAM = NULL; +uint8 *workRAM = NULL; +uint8 *paletteRAM = NULL; +uint8 *vram = NULL; +uint8 *pix = NULL; +uint8 *oam = NULL; +uint8 *ioMem = NULL; + +uint16 DISPCNT = 0x0080; +uint16 DISPSTAT = 0x0000; +uint16 VCOUNT = 0x0000; +uint16 BG0CNT = 0x0000; +uint16 BG1CNT = 0x0000; +uint16 BG2CNT = 0x0000; +uint16 BG3CNT = 0x0000; + +uint16 BGHOFS[4]; +uint16 BGVOFS[4]; + +uint16 BG2PA = 0x0100; +uint16 BG2PB = 0x0000; +uint16 BG2PC = 0x0000; +uint16 BG2PD = 0x0100; +uint16 BG2X_L = 0x0000; +uint16 BG2X_H = 0x0000; +uint16 BG2Y_L = 0x0000; +uint16 BG2Y_H = 0x0000; +uint16 BG3PA = 0x0100; +uint16 BG3PB = 0x0000; +uint16 BG3PC = 0x0000; +uint16 BG3PD = 0x0100; +uint16 BG3X_L = 0x0000; +uint16 BG3X_H = 0x0000; +uint16 BG3Y_L = 0x0000; +uint16 BG3Y_H = 0x0000; +uint16 WIN0H = 0x0000; +uint16 WIN1H = 0x0000; +uint16 WIN0V = 0x0000; +uint16 WIN1V = 0x0000; +uint16 WININ = 0x0000; +uint16 WINOUT = 0x0000; +uint16 MOSAIC = 0x0000; +uint16 BLDMOD = 0x0000; +uint16 COLEV = 0x0000; +uint16 COLY = 0x0000; + +uint16 DMSAD_L[4] = {0}; +uint16 DMSAD_H[4] = {0}; +uint16 DMDAD_L[4] = {0}; +uint16 DMDAD_H[4] = {0}; +uint16 DMCNT_L[4] = {0}; +uint16 DMCNT_H[4] = {0}; + +uint16 P1 = 0xFFFF; +uint16 IE = 0x0000; +uint16 IF = 0x0000; +uint16 IME = 0x0000; + +} diff --git a/libmednahawk/src/gba/Globals.h b/libmednahawk/src/gba/Globals.h new file mode 100644 index 0000000000..74fa8c182b --- /dev/null +++ b/libmednahawk/src/gba/Globals.h @@ -0,0 +1,132 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_GLOBALS_H +#define VBA_GLOBALS_H + +namespace MDFN_IEN_GBA +{ + +#define VERBOSE_SWI 1 +#define VERBOSE_UNALIGNED_MEMORY 2 +#define VERBOSE_ILLEGAL_WRITE 4 +#define VERBOSE_ILLEGAL_READ 8 +#define VERBOSE_DMA0 16 +#define VERBOSE_DMA1 32 +#define VERBOSE_DMA2 64 +#define VERBOSE_DMA3 128 +#define VERBOSE_UNDEFINED 256 +#define VERBOSE_AGBPRINT 512 + +extern reg_pair reg[45]; +extern bool ioReadable[0x400]; + +extern uint32 N_FLAG; +extern bool C_FLAG; +extern bool Z_FLAG; +extern bool V_FLAG; + +extern bool armState; +extern bool armIrqEnable; +extern uint32 armNextPC; +extern int armMode; +extern uint32 stop; +extern int saveType; +extern bool useBios; +extern bool skipBios; +extern int frameSkip; +extern bool speedup; +extern bool synchronize; +extern bool cpuDisableSfx; +extern bool cpuIsMultiBoot; +extern bool parseDebug; +extern int layerSettings; +extern int layerEnable; + +extern uint8 *bios; +extern uint8 *rom; +extern uint8 *internalRAM; +extern uint8 *workRAM; +extern uint8 *paletteRAM; +extern uint8 *vram; +extern uint8 *pix; +extern uint8 *oam; +extern uint8 *ioMem; + +extern uint16 DISPCNT; +extern uint16 DISPSTAT; +extern uint16 VCOUNT; +extern uint16 BG0CNT; +extern uint16 BG1CNT; +extern uint16 BG2CNT; +extern uint16 BG3CNT; + +extern uint16 BGHOFS[4]; +extern uint16 BGVOFS[4]; + +extern uint16 BG2PA; +extern uint16 BG2PB; +extern uint16 BG2PC; +extern uint16 BG2PD; +extern uint16 BG2X_L; +extern uint16 BG2X_H; +extern uint16 BG2Y_L; +extern uint16 BG2Y_H; +extern uint16 BG3PA; +extern uint16 BG3PB; +extern uint16 BG3PC; +extern uint16 BG3PD; +extern uint16 BG3X_L; +extern uint16 BG3X_H; +extern uint16 BG3Y_L; +extern uint16 BG3Y_H; +extern uint16 WIN0H; +extern uint16 WIN1H; +extern uint16 WIN0V; +extern uint16 WIN1V; +extern uint16 WININ; +extern uint16 WINOUT; +extern uint16 MOSAIC; +extern uint16 BLDMOD; +extern uint16 COLEV; +extern uint16 COLY; + +extern uint16 DMSAD_L[4]; +extern uint16 DMSAD_H[4]; +extern uint16 DMDAD_L[4]; +extern uint16 DMDAD_H[4]; +extern uint16 DMCNT_L[4]; +extern uint16 DMCNT_H[4]; + +extern uint16 TM0D; +extern uint16 TM0CNT; +extern uint16 TM1D; +extern uint16 TM1CNT; +extern uint16 TM2D; +extern uint16 TM2CNT; +extern uint16 TM3D; +extern uint16 TM3CNT; +extern uint16 P1; +extern uint16 IE; +extern uint16 IF; +extern uint16 IME; + +} + +#endif // VBA_GLOBALS_H diff --git a/libmednahawk/src/gba/Makefile.am b/libmednahawk/src/gba/Makefile.am new file mode 100644 index 0000000000..824f82f7fa --- /dev/null +++ b/libmednahawk/src/gba/Makefile.am @@ -0,0 +1,6 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @GBA_EXTRA_FLAGS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip -I$(top_srcdir)/src/hw_sound -I$(top_srcdir) + +noinst_LIBRARIES = libgba.a +libgba_a_SOURCES = GBAinline.cpp arm.cpp thumb.cpp bios.cpp eeprom.cpp flash.cpp GBA.cpp Gfx.cpp Globals.cpp Mode0.cpp Mode1.cpp Mode2.cpp Mode3.cpp Mode4.cpp Mode5.cpp RTC.cpp Sound.cpp sram.cpp diff --git a/libmednahawk/src/gba/Makefile.in b/libmednahawk/src/gba/Makefile.in new file mode 100644 index 0000000000..d7890b64f7 --- /dev/null +++ b/libmednahawk/src/gba/Makefile.in @@ -0,0 +1,618 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/gba +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libgba_a_AR = $(AR) $(ARFLAGS) +libgba_a_LIBADD = +am_libgba_a_OBJECTS = GBAinline.$(OBJEXT) arm.$(OBJEXT) \ + thumb.$(OBJEXT) bios.$(OBJEXT) eeprom.$(OBJEXT) \ + flash.$(OBJEXT) GBA.$(OBJEXT) Gfx.$(OBJEXT) Globals.$(OBJEXT) \ + Mode0.$(OBJEXT) Mode1.$(OBJEXT) Mode2.$(OBJEXT) \ + Mode3.$(OBJEXT) Mode4.$(OBJEXT) Mode5.$(OBJEXT) RTC.$(OBJEXT) \ + Sound.$(OBJEXT) sram.$(OBJEXT) +libgba_a_OBJECTS = $(am_libgba_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libgba_a_SOURCES) +DIST_SOURCES = $(libgba_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @GBA_EXTRA_FLAGS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip -I$(top_srcdir)/src/hw_sound -I$(top_srcdir) +noinst_LIBRARIES = libgba.a +libgba_a_SOURCES = GBAinline.cpp arm.cpp thumb.cpp bios.cpp eeprom.cpp flash.cpp GBA.cpp Gfx.cpp Globals.cpp Mode0.cpp Mode1.cpp Mode2.cpp Mode3.cpp Mode4.cpp Mode5.cpp RTC.cpp Sound.cpp sram.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/gba/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/gba/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libgba.a: $(libgba_a_OBJECTS) $(libgba_a_DEPENDENCIES) + $(AM_V_at)-rm -f libgba.a + $(AM_V_AR)$(libgba_a_AR) libgba.a $(libgba_a_OBJECTS) $(libgba_a_LIBADD) + $(AM_V_at)$(RANLIB) libgba.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GBA.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GBAinline.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gfx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Globals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mode0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mode1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mode2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mode3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mode4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mode5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RTC.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bios.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eeprom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flash.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sram.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thumb.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/gba/Mode0.cpp b/libmednahawk/src/gba/Mode0.cpp new file mode 100644 index 0000000000..a35ee5b27c --- /dev/null +++ b/libmednahawk/src/gba/Mode0.cpp @@ -0,0 +1,558 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "Gfx.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +void mode0RenderLine() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + return; + } + + if(layerEnable & 0x0100) { + gfxDrawTextScreen(BG0CNT, BGHOFS[0], BGVOFS[0], line0); + } + + if(layerEnable & 0x0200) { + gfxDrawTextScreen(BG1CNT, BGHOFS[1], BGVOFS[1], line1); + } + + if(layerEnable & 0x0400) { + gfxDrawTextScreen(BG2CNT, BGHOFS[2], BGVOFS[2], line2); + } + + if(layerEnable & 0x0800) { + gfxDrawTextScreen(BG3CNT, BGHOFS[3], BGVOFS[3], line3); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + if(line0[x] < color) { + color = line0[x]; + top = 0x01; + } + + if(line1[x] < (color & 0xFF000000)) { + color = line1[x]; + top = 0x02; + } + + if(line2[x] < (color & 0xFF000000)) { + color = line2[x]; + top = 0x04; + } + + if(line3[x] < (color & 0xFF000000)) { + color = line3[x]; + top = 0x08; + } + + if(lineOBJ[x] < (color & 0xFF000000)) { + color = lineOBJ[x]; + top = 0x10; + } + + if((top & 0x10) && (color & 0x00010000)) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line0[x] < (back & 0xFF000000)) { + back = line0[x]; + top2 = 0x01; + } + + if(line1[x] < (back & 0xFF000000)) { + back = line1[x]; + top2 = 0x02; + } + + if(line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(line3[x] < (back & 0xFF000000)) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } +} + +void mode0RenderLineNoWindow() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + return; + } + + if(layerEnable & 0x0100) { + gfxDrawTextScreen(BG0CNT, BGHOFS[0], BGVOFS[0], line0); + } + + if(layerEnable & 0x0200) { + gfxDrawTextScreen(BG1CNT, BGHOFS[1], BGVOFS[1], line1); + } + + if(layerEnable & 0x0400) { + gfxDrawTextScreen(BG2CNT, BGHOFS[2], BGVOFS[2], line2); + } + + if(layerEnable & 0x0800) { + gfxDrawTextScreen(BG3CNT, BGHOFS[3], BGVOFS[3], line3); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + int effect = (BLDMOD >> 6) & 3; + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + if(line0[x] < color) { + color = line0[x]; + top = 0x01; + } + + if(line1[x] < (color & 0xFF000000)) { + color = line1[x]; + top = 0x02; + } + + if(line2[x] < (color & 0xFF000000)) { + color = line2[x]; + top = 0x04; + } + + if(line3[x] < (color & 0xFF000000)) { + color = line3[x]; + top = 0x08; + } + + if(lineOBJ[x] < (color & 0xFF000000)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(!(color & 0x00010000)) { + switch(effect) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + if(line0[x] < back) { + if(top != 0x01) { + back = line0[x]; + top2 = 0x01; + } + } + + if(line1[x] < (back & 0xFF000000)) { + if(top != 0x02) { + back = line1[x]; + top2 = 0x02; + } + } + + if(line2[x] < (back & 0xFF000000)) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if(line3[x] < (back & 0xFF000000)) { + if(top != 0x08) { + back = line3[x]; + top2 = 0x08; + } + } + + if(lineOBJ[x] < (back & 0xFF000000)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line0[x] < back) { + back = line0[x]; + top2 = 0x01; + } + + if(line1[x] < (back & 0xFF000000)) { + back = line1[x]; + top2 = 0x02; + } + + if(line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(line3[x] < (back & 0xFF000000)) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } +} + +void mode0RenderLineAll() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + return; + } + + bool inWindow0 = false; + bool inWindow1 = false; + + if(layerEnable & 0x2000) { + uint8 v0 = WIN0V >> 8; + uint8 v1 = WIN0V & 255; + inWindow0 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow0 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow0 |= (VCOUNT >= v0 || VCOUNT < v1); + } + if(layerEnable & 0x4000) { + uint8 v0 = WIN1V >> 8; + uint8 v1 = WIN1V & 255; + inWindow1 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow1 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow1 |= (VCOUNT >= v0 || VCOUNT < v1); + } + + if((layerEnable & 0x0100)) { + gfxDrawTextScreen(BG0CNT, BGHOFS[0], BGVOFS[0], line0); + } + + if((layerEnable & 0x0200)) { + gfxDrawTextScreen(BG1CNT, BGHOFS[1], BGVOFS[1], line1); + } + + if((layerEnable & 0x0400)) { + gfxDrawTextScreen(BG2CNT, BGHOFS[2], BGVOFS[2], line2); + } + + if((layerEnable & 0x0800)) { + gfxDrawTextScreen(BG3CNT, BGHOFS[3], BGVOFS[3], line3); + } + + gfxDrawSprites(); + gfxDrawOBJWin(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + uint8 inWin0Mask = WININ & 0xFF; + uint8 inWin1Mask = WININ >> 8; + uint8 outMask = WINOUT & 0xFF; + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + uint8 mask = outMask; + + if(!(lineOBJWin[x] & 0x80000000)) { + mask = WINOUT >> 8; + } + + if(inWindow1) { + if(gfxInWin1[x]) + mask = inWin1Mask; + } + + if(inWindow0) { + if(gfxInWin0[x]) { + mask = inWin0Mask; + } + } + + if((mask & 1) && (line0[x] < color)) { + color = line0[x]; + top = 0x01; + } + + if((mask & 2) && (line1[x] < (color & 0xFF000000))) { + color = line1[x]; + top = 0x02; + } + + if((mask & 4) && (line2[x] < (color & 0xFF000000))) { + color = line2[x]; + top = 0x04; + } + + if((mask & 8) && (line3[x] < (color & 0xFF000000))) { + color = line3[x]; + top = 0x08; + } + + if((mask & 16) && (lineOBJ[x] < (color & 0xFF000000))) { + color = lineOBJ[x]; + top = 0x10; + } + + // special FX on in the window + if(mask & 32) { + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + if((mask & 1) && line0[x] < (back & 0xFF000000)) { + if(top != 0x01) { + back = line0[x]; + top2 = 0x01; + } + } + + if((mask & 2) && line1[x] < (back & 0xFF000000)) { + if(top != 0x02) { + back = line1[x]; + top2 = 0x02; + } + } + + if((mask & 4) && line2[x] < (back & 0xFF000000)) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((mask & 8) && line3[x] < (back & 0xFF000000)) { + if(top != 0x08) { + back = line3[x]; + top2 = 0x08; + } + } + + if((mask & 16) && lineOBJ[x] < (back & 0xFF000000)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 1) && (line0[x] < (back & 0xFF000000))) { + back = line0[x]; + top2 = 0x01; + } + + if((mask & 2) && (line1[x] < (back & 0xFF000000))) { + back = line1[x]; + top2 = 0x02; + } + + if((mask & 4) && (line2[x] < (back & 0xFF000000))) { + back = line2[x]; + top2 = 0x04; + } + + if((mask & 8) && (line3[x] < (back & 0xFF000000))) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + } else if(color & 0x00010000) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 1) && (line0[x] < (back & 0xFF000000))) { + back = line0[x]; + top2 = 0x01; + } + + if((mask & 2) && (line1[x] < (back & 0xFF000000))) { + back = line1[x]; + top2 = 0x02; + } + + if((mask & 4) && (line2[x] < (back & 0xFF000000))) { + back = line2[x]; + top2 = 0x04; + } + + if((mask & 8) && (line3[x] < (back & 0xFF000000))) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } +} + +} diff --git a/libmednahawk/src/gba/Mode1.cpp b/libmednahawk/src/gba/Mode1.cpp new file mode 100644 index 0000000000..22a94211cf --- /dev/null +++ b/libmednahawk/src/gba/Mode1.cpp @@ -0,0 +1,519 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "Gfx.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +void mode1RenderLine() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x0100) { + gfxDrawTextScreen(BG0CNT, BGHOFS[0], BGVOFS[0], line0); + } + + if(layerEnable & 0x0200) { + gfxDrawTextScreen(BG1CNT, BGHOFS[1], BGVOFS[1], line1); + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + gfxDrawRotScreen(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, line2); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + if(line0[x] < color) { + color = line0[x]; + top = 0x01; + } + + if(line1[x] < (color & 0xFF000000)) { + color = line1[x]; + top = 0x02; + } + + if(line2[x] < (color & 0xFF000000)) { + color = line2[x]; + top = 0x04; + } + + if(lineOBJ[x] < (color & 0xFF000000)) { + color = lineOBJ[x]; + top = 0x10; + } + + if((top & 0x10) && (color & 0x00010000)) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line0[x] < (back & 0xFF000000)) { + back = line0[x]; + top2 = 0x01; + } + + if(line1[x] < (back & 0xFF000000)) { + back = line1[x]; + top2 = 0x02; + } + + if(line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode1RenderLineNoWindow() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x0100) { + gfxDrawTextScreen(BG0CNT, BGHOFS[0], BGVOFS[0], line0); + } + + + if(layerEnable & 0x0200) { + gfxDrawTextScreen(BG1CNT, BGHOFS[1], BGVOFS[1], line1); + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + gfxDrawRotScreen(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, line2); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + if(line0[x] < color) { + color = line0[x]; + top = 0x01; + } + + if(line1[x] < (color & 0xFF000000)) { + color = line1[x]; + top = 0x02; + } + + if(line2[x] < (color & 0xFF000000)) { + color = line2[x]; + top = 0x04; + } + + if(lineOBJ[x] < (color & 0xFF000000)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + if(line0[x] < (back & 0xFF000000)) { + if(top != 0x01) { + back = line0[x]; + top2 = 0x01; + } + } + + if(line1[x] < (back & 0xFF000000)) { + if(top != 0x02) { + back = line1[x]; + top2 = 0x02; + } + } + + if(line2[x] < (back & 0xFF000000)) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if(lineOBJ[x] < (back & 0xFF000000)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line0[x] < (back & 0xFF000000)) { + back = line0[x]; + top2 = 0x01; + } + + if(line1[x] < (back & 0xFF000000)) { + back = line1[x]; + top2 = 0x02; + } + + if(line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode1RenderLineAll() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + bool inWindow0 = false; + bool inWindow1 = false; + + if(layerEnable & 0x2000) { + uint8 v0 = WIN0V >> 8; + uint8 v1 = WIN0V & 255; + inWindow0 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow0 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow0 |= (VCOUNT >= v0 || VCOUNT < v1); + } + if(layerEnable & 0x4000) { + uint8 v0 = WIN1V >> 8; + uint8 v1 = WIN1V & 255; + inWindow1 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow1 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow1 |= (VCOUNT >= v0 || VCOUNT < v1); + } + + if(layerEnable & 0x0100) { + gfxDrawTextScreen(BG0CNT, BGHOFS[0], BGVOFS[0], line0); + } + + if(layerEnable & 0x0200) { + gfxDrawTextScreen(BG1CNT, BGHOFS[1], BGVOFS[1], line1); + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + gfxDrawRotScreen(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, line2); + } + + gfxDrawSprites(); + gfxDrawOBJWin(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + uint8 inWin0Mask = WININ & 0xFF; + uint8 inWin1Mask = WININ >> 8; + uint8 outMask = WINOUT & 0xFF; + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + uint8 mask = outMask; + + if(!(lineOBJWin[x] & 0x80000000)) { + mask = WINOUT >> 8; + } + + if(inWindow1) { + if(gfxInWin1[x]) + mask = inWin1Mask; + } + + if(inWindow0) { + if(gfxInWin0[x]) { + mask = inWin0Mask; + } + } + + if(line0[x] < color && (mask & 1)) { + color = line0[x]; + top = 0x01; + } + + if(line1[x] < (color & 0xFF000000) && (mask & 2)) { + color = line1[x]; + top = 0x02; + } + + if(line2[x] < (color & 0xFF000000) && (mask & 4)) { + color = line2[x]; + top = 0x04; + } + + if(lineOBJ[x] < (color & 0xFF000000) && (mask & 16)) { + color = lineOBJ[x]; + top = 0x10; + } + + // special FX on the window + if(mask & 32) { + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + if((mask & 1) && line0[x] < (back & 0xFF000000)) { + if(top != 0x01) { + back = line0[x]; + top2 = 0x01; + } + } + + if((mask & 2) && line1[x] < (back & 0xFF000000)) { + if(top != 0x02) { + back = line1[x]; + top2 = 0x02; + } + } + + if((mask & 4) && line2[x] < (back & 0xFF000000)) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((mask & 16) && lineOBJ[x] < (back & 0xFF000000)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 1) && line0[x] < (back & 0xFF000000)) { + back = line0[x]; + top2 = 0x01; + } + + if((mask & 2) && line1[x] < (back & 0xFF000000)) { + back = line1[x]; + top2 = 0x02; + } + + if((mask & 4) && line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + } else if(color & 0x00010000) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 1) && line0[x] < (back & 0xFF000000)) { + back = line0[x]; + top2 = 0x01; + } + + if((mask & 2) && line1[x] < (back & 0xFF000000)) { + back = line1[x]; + top2 = 0x02; + } + + if((mask & 4) && line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +} diff --git a/libmednahawk/src/gba/Mode2.cpp b/libmednahawk/src/gba/Mode2.cpp new file mode 100644 index 0000000000..41c0c9c123 --- /dev/null +++ b/libmednahawk/src/gba/Mode2.cpp @@ -0,0 +1,484 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "Gfx.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +void mode2RenderLine() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, gfxBG2X, gfxBG2Y, + changed, line2); + } + + if(layerEnable & 0x0800) { + int changed = gfxBG3Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen(BG3CNT, BG3X_L, BG3X_H, BG3Y_L, BG3Y_H, + BG3PA, BG3PB, BG3PC, BG3PD, gfxBG3X, gfxBG3Y, + changed, line3); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + + if(line2[x] < (color & 0xFF000000)) { + color = line2[x]; + top = 0x04; + } + + if(line3[x] < (color & 0xFF000000)) { + color = line3[x]; + top = 0x08; + } + + if(lineOBJ[x] < (color & 0xFF000000)) { + color = lineOBJ[x]; + top = 0x10; + } + + if((top & 0x10) && (color & 0x00010000)) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(line3[x] < (back & 0xFF000000)) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxBG3Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode2RenderLineNoWindow() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, gfxBG2X, gfxBG2Y, + changed, line2); + } + + if(layerEnable & 0x0800) { + int changed = gfxBG3Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen(BG3CNT, BG3X_L, BG3X_H, BG3Y_L, BG3Y_H, + BG3PA, BG3PB, BG3PC, BG3PD, gfxBG3X, gfxBG3Y, + changed, line3); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + + if(line2[x] < (color & 0xFF000000)) { + color = line2[x]; + top = 0x04; + } + + if(line3[x] < (color & 0xFF000000)) { + color = line3[x]; + top = 0x08; + } + + if(lineOBJ[x] < (color & 0xFF000000)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line2[x] < (back & 0xFF000000)) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if(line3[x] < (back & 0xFF000000)) { + if(top != 0x08) { + back = line3[x]; + top2 = 0x08; + } + } + + if(lineOBJ[x] < (back & 0xFF000000)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line2[x] < (back & 0xFF000000)) { + back = line2[x]; + top2 = 0x04; + } + + if(line3[x] < (back & 0xFF000000)) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxBG3Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode2RenderLineAll() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + bool inWindow0 = false; + bool inWindow1 = false; + + if(layerEnable & 0x2000) { + uint8 v0 = WIN0V >> 8; + uint8 v1 = WIN0V & 255; + inWindow0 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow0 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow0 |= (VCOUNT >= v0 || VCOUNT < v1); + } + if(layerEnable & 0x4000) { + uint8 v0 = WIN1V >> 8; + uint8 v1 = WIN1V & 255; + inWindow1 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow1 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow1 |= (VCOUNT >= v0 || VCOUNT < v1); + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, gfxBG2X, gfxBG2Y, + changed, line2); + } + + if(layerEnable & 0x0800) { + int changed = gfxBG3Changed; + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen(BG3CNT, BG3X_L, BG3X_H, BG3Y_L, BG3Y_H, + BG3PA, BG3PB, BG3PC, BG3PD, gfxBG3X, gfxBG3Y, + changed, line3); + } + + gfxDrawSprites(); + gfxDrawOBJWin(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + uint8 inWin0Mask = WININ & 0xFF; + uint8 inWin1Mask = WININ >> 8; + uint8 outMask = WINOUT & 0xFF; + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + uint8 mask = outMask; + + if(!(lineOBJWin[x] & 0x80000000)) { + mask = WINOUT >> 8; + } + + if(inWindow1) { + if(gfxInWin1[x]) + mask = inWin1Mask; + } + + if(inWindow0) { + if(gfxInWin0[x]) { + mask = inWin0Mask; + } + } + + if(line2[x] < color && (mask & 4)) { + color = line2[x]; + top = 0x04; + } + + if(line3[x] < (color & 0xFF000000) && (mask & 8)) { + color = line3[x]; + top = 0x08; + } + + if(lineOBJ[x] < (color & 0xFF000000) && (mask & 16)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(mask & 32) { + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((mask & 8) && line3[x] < (back & 0xFF000000)) { + if(top != 0x08) { + back = line3[x]; + top2 = 0x08; + } + } + + if((mask & 16) && lineOBJ[x] < (back & 0xFF000000)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if((mask & 8) && line3[x] < (back & 0xFF000000)) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + } else if(color & 0x00010000) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if((mask & 8) && line3[x] < (back & 0xFF000000)) { + back = line3[x]; + top2 = 0x08; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxBG3Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +} diff --git a/libmednahawk/src/gba/Mode3.cpp b/libmednahawk/src/gba/Mode3.cpp new file mode 100644 index 0000000000..49472b6f0e --- /dev/null +++ b/libmednahawk/src/gba/Mode3.cpp @@ -0,0 +1,411 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "Gfx.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +void mode3RenderLine() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen16Bit(BG2CNT, BG2X_L, BG2X_H, + BG2Y_L, BG2Y_H, BG2PA, BG2PB, + BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + + uint32 background = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = background; + uint8 top = 0x20; + + if(line2[x] < color) { + color = line2[x]; + top = 0x04; + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24)) { + color = lineOBJ[x]; + top = 0x10; + } + + if((top & 0x10) && (color & 0x00010000)) { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if(line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode3RenderLineNoWindow() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen16Bit(BG2CNT, BG2X_L, BG2X_H, + BG2Y_L, BG2Y_H, BG2PA, BG2PB, + BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + + uint32 background = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = background; + uint8 top = 0x20; + + if(line2[x] < color) { + color = line2[x]; + top = 0x04; + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = background; + uint8 top2 = 0x20; + + if(line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(back >> 24)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if(line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode3RenderLineAll() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x80) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + bool inWindow0 = false; + bool inWindow1 = false; + + if(layerEnable & 0x2000) { + uint8 v0 = WIN0V >> 8; + uint8 v1 = WIN0V & 255; + inWindow0 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow0 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow0 |= (VCOUNT >= v0 || VCOUNT < v1); + } + if(layerEnable & 0x4000) { + uint8 v0 = WIN1V >> 8; + uint8 v1 = WIN1V & 255; + inWindow1 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow1 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow1 |= (VCOUNT >= v0 || VCOUNT < v1); + } + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen16Bit(BG2CNT, BG2X_L, BG2X_H, + BG2Y_L, BG2Y_H, BG2PA, BG2PB, + BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + gfxDrawOBJWin(); + + uint8 inWin0Mask = WININ & 0xFF; + uint8 inWin1Mask = WININ >> 8; + uint8 outMask = WINOUT & 0xFF; + + uint32 background = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = background; + uint8 top = 0x20; + uint8 mask = outMask; + + if(!(lineOBJWin[x] & 0x80000000)) { + mask = WINOUT >> 8; + } + + if(inWindow1) { + if(gfxInWin1[x]) + mask = inWin1Mask; + } + + if(inWindow0) { + if(gfxInWin0[x]) { + mask = inWin0Mask; + } + } + + if((mask & 4) && (line2[x] < color)) { + color = line2[x]; + top = 0x04; + } + + if((mask & 16) && ((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24))) { + color = lineOBJ[x]; + top = 0x10; + } + + if(mask & 32) { + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = background; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((mask & 16) && (uint8)(lineOBJ[x]>>24) < (uint8)(back >> 24)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + } else if(color & 0x00010000) { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +} diff --git a/libmednahawk/src/gba/Mode4.cpp b/libmednahawk/src/gba/Mode4.cpp new file mode 100644 index 0000000000..2ebc29dba2 --- /dev/null +++ b/libmednahawk/src/gba/Mode4.cpp @@ -0,0 +1,407 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Gfx.h" +#include "Globals.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +void mode4RenderLine() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x0080) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + gfxDrawRotScreen256(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + if(line2[x] < color) { + color = line2[x]; + top = 0x04; + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(color >> 24)) { + color = lineOBJ[x]; + top = 0x10; + } + + if((top & 0x10) && (color & 0x00010000)) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode4RenderLineNoWindow() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x0080) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + if(layerEnable & 0x400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen256(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + + if(line2[x] < color) { + color = line2[x]; + top = 0x04; + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(color >> 24)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(back >> 24)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if(line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode4RenderLineAll() +{ + uint16 *palette = (uint16 *)paletteRAM; + + if(DISPCNT & 0x0080) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + bool inWindow0 = false; + bool inWindow1 = false; + + if(layerEnable & 0x2000) { + uint8 v0 = WIN0V >> 8; + uint8 v1 = WIN0V & 255; + inWindow0 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow0 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow0 |= (VCOUNT >= v0 || VCOUNT < v1); + } + if(layerEnable & 0x4000) { + uint8 v0 = WIN1V >> 8; + uint8 v1 = WIN1V & 255; + inWindow1 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow1 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow1 |= (VCOUNT >= v0 || VCOUNT < v1); + } + + if(layerEnable & 0x400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen256(BG2CNT, BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, + BG2PA, BG2PB, BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + gfxDrawOBJWin(); + + uint32 backdrop = (READ16LE(&palette[0]) | 0x30000000); + + uint8 inWin0Mask = WININ & 0xFF; + uint8 inWin1Mask = WININ >> 8; + uint8 outMask = WINOUT & 0xFF; + + for(int x = 0; x < 240; x++) { + uint32 color = backdrop; + uint8 top = 0x20; + uint8 mask = outMask; + + if(!(lineOBJWin[x] & 0x80000000)) { + mask = WINOUT >> 8; + } + + if(inWindow1) { + if(gfxInWin1[x]) + mask = inWin1Mask; + } + + if(inWindow0) { + if(gfxInWin0[x]) { + mask = inWin0Mask; + } + } + + if((mask & 4) && (line2[x] < color)) { + color = line2[x]; + top = 0x04; + } + + if((mask & 16) && ((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24))) { + color = lineOBJ[x]; + top = 0x10; + } + + if(mask & 32) { + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((mask & 16) && (uint8)(lineOBJ[x]>>24) < (uint8)(back >> 24)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + } else if(color & 0x00010000) { + // semi-transparent OBJ + uint32 back = backdrop; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +} diff --git a/libmednahawk/src/gba/Mode5.cpp b/libmednahawk/src/gba/Mode5.cpp new file mode 100644 index 0000000000..eb40af6fe1 --- /dev/null +++ b/libmednahawk/src/gba/Mode5.cpp @@ -0,0 +1,411 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "Gfx.h" +#include "gfx-draw.h" + +namespace MDFN_IEN_GBA +{ + +void mode5RenderLine() +{ + if(DISPCNT & 0x0080) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + uint16 *palette = (uint16 *)paletteRAM; + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen16Bit160(BG2CNT, BG2X_L, BG2X_H, + BG2Y_L, BG2Y_H, BG2PA, BG2PB, + BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + + uint32 background = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = background; + uint8 top = 0x20; + + if(line2[x] < color) { + color = line2[x]; + top = 0x04; + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24)) { + color = lineOBJ[x]; + top = 0x10; + } + + if((top & 0x10) && (color & 0x00010000)) { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if(line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode5RenderLineNoWindow() +{ + if(DISPCNT & 0x0080) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + uint16 *palette = (uint16 *)paletteRAM; + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen16Bit160(BG2CNT, BG2X_L, BG2X_H, + BG2Y_L, BG2Y_H, BG2PA, BG2PB, + BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + + uint32 background = ( READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = background; + uint8 top = 0x20; + + if(line2[x] < color) { + color = line2[x]; + top = 0x04; + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24)) { + color = lineOBJ[x]; + top = 0x10; + } + + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = background; + uint8 top2 = 0x20; + + if(line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((uint8)(lineOBJ[x]>>24) < (uint8)(back >> 24)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if(line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +void mode5RenderLineAll() +{ + if(DISPCNT & 0x0080) { + for(int x = 0; x < 240; x++) { + lineMix[x] = 0x7fff; + } + gfxLastVCOUNT = VCOUNT; + return; + } + + uint16 *palette = (uint16 *)paletteRAM; + + if(layerEnable & 0x0400) { + int changed = gfxBG2Changed; + + if(gfxLastVCOUNT > VCOUNT) + changed = 3; + + gfxDrawRotScreen16Bit160(BG2CNT, BG2X_L, BG2X_H, + BG2Y_L, BG2Y_H, BG2PA, BG2PB, + BG2PC, BG2PD, + gfxBG2X, gfxBG2Y, changed, + line2); + } + + gfxDrawSprites(); + gfxDrawOBJWin(); + + bool inWindow0 = false; + bool inWindow1 = false; + + if(layerEnable & 0x2000) { + uint8 v0 = WIN0V >> 8; + uint8 v1 = WIN0V & 255; + inWindow0 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow0 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow0 |= (VCOUNT >= v0 || VCOUNT < v1); + } + if(layerEnable & 0x4000) { + uint8 v0 = WIN1V >> 8; + uint8 v1 = WIN1V & 255; + inWindow1 = ((v0 == v1) && (v0 >= 0xe8)); + if(v1 >= v0) + inWindow1 |= (VCOUNT >= v0 && VCOUNT < v1); + else + inWindow1 |= (VCOUNT >= v0 || VCOUNT < v1); + } + + uint8 inWin0Mask = WININ & 0xFF; + uint8 inWin1Mask = WININ >> 8; + uint8 outMask = WINOUT & 0xFF; + + uint32 background = (READ16LE(&palette[0]) | 0x30000000); + + for(int x = 0; x < 240; x++) { + uint32 color = background; + uint8 top = 0x20; + uint8 mask = outMask; + + if(!(lineOBJWin[x] & 0x80000000)) { + mask = WINOUT >> 8; + } + + if(inWindow1) { + if(gfxInWin1[x]) + mask = inWin1Mask; + } + + if(inWindow0) { + if(gfxInWin0[x]) { + mask = inWin0Mask; + } + } + + if((mask & 4) && (line2[x] < color)) { + color = line2[x]; + top = 0x04; + } + + if((mask & 16) && ((uint8)(lineOBJ[x]>>24) < (uint8)(color >>24))) { + color = lineOBJ[x]; + top = 0x10; + } + + if(mask & 32) { + if(!(color & 0x00010000)) { + switch((BLDMOD >> 6) & 3) { + case 0: + break; + case 1: + { + if(top & BLDMOD) { + uint32 back = background; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + if(top != 0x04) { + back = line2[x]; + top2 = 0x04; + } + } + + if((mask & 16) && (uint8)(lineOBJ[x]>>24) < (uint8)(back >> 24)) { + if(top != 0x10) { + back = lineOBJ[x]; + top2 = 0x10; + } + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + + } + } + break; + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } else { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + } else if(color & 0x00010000) { + // semi-transparent OBJ + uint32 back = background; + uint8 top2 = 0x20; + + if((mask & 4) && line2[x] < back) { + back = line2[x]; + top2 = 0x04; + } + + if(top2 & (BLDMOD>>8)) + color = gfxAlphaBlend(color, back, + all_coeff[COLEV & 0x1F], + all_coeff[(COLEV >> 8) & 0x1F]); + else { + switch((BLDMOD >> 6) & 3) { + case 2: + if(BLDMOD & top) + color = gfxIncreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + case 3: + if(BLDMOD & top) + color = gfxDecreaseBrightness(color, all_coeff[COLY & 0x1F]); + break; + } + } + } + + lineMix[x] = color; + } + gfxBG2Changed = 0; + gfxLastVCOUNT = VCOUNT; +} + +} diff --git a/libmednahawk/src/gba/Port.h b/libmednahawk/src/gba/Port.h new file mode 100644 index 0000000000..0b9dcf7e81 --- /dev/null +++ b/libmednahawk/src/gba/Port.h @@ -0,0 +1,31 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_PORT_H +#define VBA_PORT_H + +#include + +#define READ16LE(base) LoadU16_LE(base) +#define READ32LE(base) LoadU32_LE(base) + +#define WRITE16LE(x,v) StoreU16_LE(x,v) +#define WRITE32LE(x,v) StoreU32_LE(x,v) + +#endif diff --git a/libmednahawk/src/gba/RTC.cpp b/libmednahawk/src/gba/RTC.cpp new file mode 100644 index 0000000000..b1e35fa360 --- /dev/null +++ b/libmednahawk/src/gba/RTC.cpp @@ -0,0 +1,229 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "../mednafen.h" +#include "GBA.h" +#include "Globals.h" +#include "Port.h" + +#include +#include + +namespace MDFN_IEN_GBA +{ + +RTC::RTC() +{ + InitTime(); + Reset(); +} + +RTC::~RTC() +{ + +} + +void RTC::InitTime(void) +{ + time_t long_time; + + time( &long_time ); /* Get time as long integer. */ + + curtime = (int64)long_time * 16777216; +} + +void RTC::AddTime(int32 amount) +{ + curtime += amount; +} + +uint16 RTC::Read(uint32 address) +{ + if(address == 0x80000c8) + return byte2; + else if(address == 0x80000c6) + return byte1; + else if(address == 0x80000c4) + return byte0; + + abort(); +} + +static uint8 toBCD(uint8 value) +{ + value = value % 100; + int l = value % 10; + int h = value / 10; + return h * 16 + l; +} + +void RTC::Write(uint32 address, uint16 value) +{ + if(address == 0x80000c8) { + byte2 = (uint8)value; // enable ? + } else if(address == 0x80000c6) { + byte1 = (uint8)value; // read/write + } else if(address == 0x80000c4) { + if(byte2 & 1) { + if(state == IDLE && byte0 == 1 && value == 5) { + state = COMMAND; + bits = 0; + command = 0; + } else if(!(byte0 & 1) && (value & 1)) { // bit transfer + byte0 = (uint8)value; + switch(state) { + case COMMAND: + command |= ((value & 2) >> 1) << (7-bits); + bits++; + if(bits == 8) { + bits = 0; + switch(command) { + case 0x60: + // not sure what this command does but it doesn't take parameters + // maybe it is a reset or stop + state = IDLE; + bits = 0; + break; + case 0x62: + // this sets the control state but not sure what those values are + state = READDATA; + dataLen = 1; + break; + case 0x63: + dataLen = 1; + data[0] = 0x40; + state = DATA; + break; + case 0x64: + break; + case 0x65: + { + struct tm *newtime; + time_t long_time; + + long_time = curtime / 16777216; + newtime = localtime( &long_time ); /* Convert to local time. */ + + dataLen = 7; + data[0] = toBCD(newtime->tm_year); + data[1] = toBCD(newtime->tm_mon+1); + data[2] = toBCD(newtime->tm_mday); + data[3] = toBCD(newtime->tm_wday); + data[4] = toBCD(newtime->tm_hour); + data[5] = toBCD(newtime->tm_min); + data[6] = toBCD(newtime->tm_sec); + state = DATA; + } + break; + case 0x67: + { + struct tm *newtime; + time_t long_time; + + long_time = curtime / 16777216; + newtime = localtime( &long_time ); /* Convert to local time. */ + + dataLen = 3; + data[0] = toBCD(newtime->tm_hour); + data[1] = toBCD(newtime->tm_min); + data[2] = toBCD(newtime->tm_sec); + state = DATA; + } + break; + default: + //systemMessage(0, N_("Unknown RTC command %02x"), command); + state = IDLE; + break; + } + } + break; + case DATA: + if(byte1 & 2) { + } else { + byte0 = (byte0 & ~2) | + ((data[bits >> 3] >> + (bits & 7)) & 1)*2; + bits++; + if(bits == 8*dataLen) { + bits = 0; + state = IDLE; + } + } + break; + case READDATA: + if(!(byte1 & 2)) { + } else { + data[bits >> 3] = + (data[bits >> 3] >> 1) | + ((value << 6) & 128); + bits++; + if(bits == 8*dataLen) { + bits = 0; + state = IDLE; + } + } + break; + default: + break; + } + } else + byte0 = (uint8)value; + } + } +} + +void RTC::Reset(void) +{ + byte0 = 0; + byte1 = 0; + byte2 = 0; + command = 0; + dataLen = 0; + bits = 0; + state = IDLE; + + memset(data, 0, sizeof(data)); +} + +int RTC::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(byte0), + SFVAR(byte1), + SFVAR(byte2), + SFVAR(command), + SFVAR(dataLen), + SFVAR(bits), + SFVAR(state), + SFARRAY(data, 12), + SFEND + }; + + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "RTC"); + + if(load) + { + + } + + return(ret); +} + +} diff --git a/libmednahawk/src/gba/RTC.h b/libmednahawk/src/gba/RTC.h new file mode 100644 index 0000000000..f49d0991ff --- /dev/null +++ b/libmednahawk/src/gba/RTC.h @@ -0,0 +1,62 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_RTC_H +#define VBA_RTC_H + +namespace MDFN_IEN_GBA +{ + +class RTC +{ + public: + + RTC(); + ~RTC(); + + void InitTime(void); + + uint16 Read(uint32 address); + void Write(uint32 address, uint16 value); + void Reset(void); + + void AddTime(int32 amount); + + int StateAction(StateMem *sm, int load, int data_only); + + private: + + enum RTCSTATE { IDLE, COMMAND, DATA, READDATA }; + + uint8 byte0; + uint8 byte1; + uint8 byte2; + uint8 command; + int dataLen; + int bits; + RTCSTATE state; + uint8 data[12]; + + int64 curtime; // GBA CPU cycles since the Epoch, in local time. + +}; + +} + +#endif diff --git a/libmednahawk/src/gba/Sound.cpp b/libmednahawk/src/gba/Sound.cpp new file mode 100644 index 0000000000..82cc26a39a --- /dev/null +++ b/libmednahawk/src/gba/Sound.cpp @@ -0,0 +1,451 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "Sound.h" +#include "Port.h" + +#include +#include + +#include +#include "gb_apu/Gb_Apu.h" + +#include + +namespace MDFN_IEN_GBA +{ + +typedef Blip_Synth Synth; + +static Synth synth; + +static Gb_Apu gba_apu; +static Stereo_Buffer gba_buf; + +extern uint32 soundTS; + +static int lleft = 0, lright = 0; + +int soundControl = 0; + +typedef struct +{ + int32 FifoIndex; + int32 FifoCount; + int32 FifoWriteIndex; + bool Enabled; + int32 Timer; + uint8 Fifo[32]; + uint8 Value; +} GBADigiSound; + +GBADigiSound DSChans[2]; // Digital sound channels, not Nintendo DS :b + +#define soundDSFifoAIndex DSChans[0].FifoIndex +#define soundDSFifoACount DSChans[0].FifoCount +#define soundDSFifoAWriteIndex DSChans[0].FifoWriteIndex +#define soundDSAEnabled DSChans[0].Enabled +#define soundDSATimer DSChans[0].Timer +#define soundDSFifoA DSChans[0].Fifo +#define soundDSAValue DSChans[0].Value + +#define soundDSFifoBIndex DSChans[1].FifoIndex +#define soundDSFifoBCount DSChans[1].FifoCount +#define soundDSFifoBWriteIndex DSChans[1].FifoWriteIndex +#define soundDSBEnabled DSChans[1].Enabled +#define soundDSBTimer DSChans[1].Timer +#define soundDSFifoB DSChans[1].Fifo +#define soundDSBValue DSChans[1].Value + +#include "../state.h" + +int MDFNGBASOUND_StateAction(StateMem *sm, int load, int data_only) +{ + gb_apu_state_t apu_state; + + //if(!load) // always save state, in case there is none to load + gba_apu.save_state( &apu_state ); + + SFORMAT StateRegs[] = + { + SFVAR(soundControl), + SFVAR(soundDSFifoAIndex), + SFVAR(soundDSFifoACount), + SFVAR(soundDSFifoAWriteIndex), + SFVAR(soundDSAEnabled), + SFVAR(soundDSATimer), + SFARRAYN(soundDSFifoA, sizeof(soundDSFifoA), "soundDSFifoA"), + SFVAR(soundDSAValue), + SFVAR(soundDSFifoBIndex), + SFVAR(soundDSFifoBCount), + SFVAR(soundDSFifoBWriteIndex), + SFVAR(soundDSBEnabled), + SFVAR(soundDSBTimer), + SFARRAYN(soundDSFifoB, sizeof(soundDSFifoB), "soundDSFifoB"), + SFVAR(soundDSBValue), + + SFVARN(apu_state, "apu_state"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "SND"); + if(ret && load) + { + gba_apu.reset( gba_apu.mode_agb, true ); + (void) gba_apu.load_state( apu_state ); // TODO: warn if this returns error + } + return(ret); +} + +uint8 soundRead(uint32 address) +{ + if(address == 0x80) + return(gba_apu.read_register(soundTS, 0xff24)); + else if(address == 0x81) + return(gba_apu.read_register(soundTS, 0xff25)); + else if(address == 0x84) + return(gba_apu.read_register(soundTS, 0xff26)); + else if(address >= 0x90 && address <= 0x9f) + { + return(gba_apu.read_register(soundTS, address - 0x90 + 0xff30)); + } + return(ioMem[address]); +} + +void soundEvent(uint32 address, uint8 data) +{ + uint32 origa = address; + address &= 0xFF; + + if(address == 0x60) + address = 0xff10; + else if(address == 0x62) + address = 0xff11; + else if(address == 0x63) + address = 0xff12; + else if(address == 0x64) + address = 0xff13; + else if(address == 0x65) + address = 0xff14; + + else if(address == 0x68) + address = 0xff16; + else if(address == 0x69) + address = 0xff17; + else if(address == 0x6c) + address = 0xff18; + else if(address == 0x6d) + address = 0xff19; + + else if(address == 0x70) + address = 0xff1a; + else if(address == 0x72) + address = 0xff1b; + else if(address == 0x73) + address = 0xff1c; + else if(address == 0x74) + address = 0xff1d; + else if(address == 0x75) + address = 0xff1e; + + else if(address == 0x78) + address = 0xff20; + else if(address == 0x79) + address = 0xff21; + else if(address == 0x7c) + address = 0xff22; + else if(address == 0x7d) + address = 0xff23; + + else if(address == 0x80) + address = 0xff24; + else if(address == 0x81) + address = 0xff25; + else if(address == 0x84) + address = 0xff26; + else if(address >= 0x90 && address <= 0x9f) + { + address += 0xff30 - 0x90; + } + else + { + ioMem[origa] = data; + return; + } + ioMem[origa] = data; + + gba_apu.write_register(soundTS, address, data); +} + +void soundEvent(uint32 address, uint16 data) +{ + switch(address) { + case SGCNT0_H: + data &= 0xFF0F; + soundControl = data & 0x770F;; + if(data & 0x0800) { + soundDSFifoAWriteIndex = 0; + soundDSFifoAIndex = 0; + soundDSFifoACount = 0; + soundDSAValue = 0; + memset(soundDSFifoA, 0, 32); + } + soundDSAEnabled = (data & 0x0300) ? true : false; + soundDSATimer = (data & 0x0400) ? 1 : 0; + if(data & 0x8000) { + soundDSFifoBWriteIndex = 0; + soundDSFifoBIndex = 0; + soundDSFifoBCount = 0; + soundDSBValue = 0; + memset(soundDSFifoB, 0, 32); + } + soundDSBEnabled = (data & 0x3000) ? true : false; + soundDSBTimer = (data & 0x4000) ? 1 : 0; + WRITE16LE(((uint16 *)&ioMem[address]), data); + break; + case FIFOA_L: + case FIFOA_H: + soundDSFifoA[soundDSFifoAWriteIndex++] = data & 0xFF; + soundDSFifoA[soundDSFifoAWriteIndex++] = data >> 8; + soundDSFifoACount += 2; + soundDSFifoAWriteIndex &= 31; + WRITE16LE(((uint16 *)&ioMem[address]), data); + break; + case FIFOB_L: + case FIFOB_H: + soundDSFifoB[soundDSFifoBWriteIndex++] = data & 0xFF; + soundDSFifoB[soundDSFifoBWriteIndex++] = data >> 8; + soundDSFifoBCount += 2; + soundDSFifoBWriteIndex &= 31; + WRITE16LE(((uint16 *)&ioMem[address]), data); + break; + case 0x88: + data &= 0xC3FF; + WRITE16LE(((uint16 *)&ioMem[address]), data); + break; + case 0x90: + case 0x92: + case 0x94: + case 0x96: + case 0x98: + case 0x9a: + case 0x9c: + case 0x9e: + //printf("Yay: %04x: %04x\n", 0xFF30 + (address & 0xF), data); + gba_apu.write_register(soundTS, 0xFF30 + (address & 0xF), data & 0xFF); + gba_apu.write_register(soundTS, 0xFF30 + (address & 0xF) + 1, data >> 8); + //*((uint16 *)&sound3WaveRam[(sound3Bank*0x10)^0x10+(address&14)]) = data; + //WRITE16LE(((uint16 *)&ioMem[address]), data); + break; + } +} + +#ifndef max +#define max(a,b) (a)<(b)?(b):(a) +#endif + +static inline void soundMix(int &left, int &right) +{ + int res = 0; + int dsaRatio = ioMem[0x82] & 4; + int dsbRatio = ioMem[0x82] & 8; + + if(soundControl & 0x0200) + { + if(!dsaRatio) + { + res = (int8)soundDSAValue >> 1; + } + else + res = (int8)soundDSAValue; + } + + if(soundControl & 0x2000) + { + if(!dsbRatio) + { + res += (int8)soundDSBValue >> 1; + } + else + res += (int8)soundDSBValue; + } + + left = res; + + res = 0; + + if(soundControl & 0x0100) + { + if(!dsaRatio) + res = (int8)soundDSAValue >> 1; + else + res = (int8)soundDSAValue; + } + + if(soundControl & 0x1000) + { + if(!dsbRatio) + res += (int8)soundDSAValue >> 1; + else + res += (int8)soundDSBValue; + } + right = res; +} + +int meow = 0; + +static inline void soundLick(void) +{ + int left, right; + + left = right = 0; + + soundMix(left, right); + + if(left != lleft) + synth.offset_inline(soundTS, left - lleft, gba_buf.left()); + + if(right != lright) + synth.offset_inline(soundTS, right - lright, gba_buf.right()); + + lleft = left; + lright = right; +} + +static void DSTimer(int which, int dmamask) +{ + if(DSChans[which].Enabled) + { + if(DSChans[which].FifoCount <= 16) + { + CPUCheckDMA(3, dmamask); + } + + if(DSChans[which].FifoCount > 16) + { + DSChans[which].Value = (DSChans[which].Fifo[DSChans[which].FifoIndex]); + DSChans[which].FifoIndex = (DSChans[which].FifoIndex + 1) & 0x1F; + DSChans[which].FifoCount--; + } + } + else + { + DSChans[which].Value = 0; + } +} + +void soundTimerOverflow(int timer) +{ + bool NeedLick = FALSE; + + if(soundDSAEnabled && (soundDSATimer == timer)) + { + DSTimer(0, 2); + NeedLick = TRUE; + } + + if(soundDSBEnabled && (soundDSBTimer == timer)) + { + DSTimer(1, 4); + NeedLick = TRUE; + } + + if(NeedLick) + soundLick(); +} + +int32 MDFNGBASOUND_Flush(int16 *SoundBuf, const int32 MaxSoundFrames) +{ + const int ratio = ioMem[0x82] & 3; + static const int rat_table[4] = { 2, 1, 0, 2 }; + int32 FrameCount = 0; + + gba_apu.volume(0.333 * (double)(4 >> rat_table[ratio]) / 4); + + gba_apu.end_frame(soundTS); + + gba_buf.end_frame(soundTS); + + if(SoundBuf) + FrameCount = gba_buf.read_samples(SoundBuf, MaxSoundFrames * 2) / 2; + else + gba_buf.clear(); + + soundTS = 0; + + +#if 0 + if(SoundBuf) + { + unsigned long long crf = (unsigned long long)gba_buf.left()->clock_rate_factor(gba_buf.left()->clock_rate()); + double real_rate = (double)crf * gba_buf.left()->clock_rate() / (1ULL << BLIP_BUFFER_ACCURACY); + + printf("%f\n", real_rate); + } +#endif + + return(FrameCount); +} + +void MDFNGBASOUND_Init(void) +{ + MDFNGBA_SetSoundRate(0); + + gba_buf.clock_rate((long)(4194304 * 4)); + + gba_apu.set_output(gba_buf.center(), gba_buf.left(), gba_buf.right()); + + gba_apu.reset( gba_apu.mode_agb, true ); + + gba_apu.volume(0.333); + synth.volume(0.666); + + gba_buf.bass_freq(20); +} + +void soundReset() +{ + for(int ch = 0; ch < 2; ch++) + { + DSChans[ch].FifoIndex = 0; + DSChans[ch].FifoCount = 0; + DSChans[ch].FifoWriteIndex = 0; + DSChans[ch].Enabled = false; + DSChans[ch].Timer = 0; + memset(DSChans[ch].Fifo, 0, 32); + DSChans[ch].Value = 0; + } + + for(int addr = 0x90; addr < 0xA0;) + { + ioMem[addr++] = 0x00; + ioMem[addr++] = 0xff; + } + + gba_apu.reset( gba_apu.mode_agb, true ); +} + +bool MDFNGBA_SetSoundRate(uint32 rate) +{ + gba_buf.set_sample_rate(rate?rate:44100, 60); + return(TRUE); +} + +} diff --git a/libmednahawk/src/gba/Sound.h b/libmednahawk/src/gba/Sound.h new file mode 100644 index 0000000000..fe356fa88c --- /dev/null +++ b/libmednahawk/src/gba/Sound.h @@ -0,0 +1,69 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_SOUND_H +#define VBA_SOUND_H + +namespace MDFN_IEN_GBA +{ + +#define NR10 0x60 +#define NR11 0x62 +#define NR12 0x63 +#define NR13 0x64 +#define NR14 0x65 +#define NR21 0x68 +#define NR22 0x69 +#define NR23 0x6c +#define NR24 0x6d +#define NR30 0x70 +#define NR31 0x72 +#define NR32 0x73 +#define NR33 0x74 +#define NR34 0x75 +#define NR41 0x78 +#define NR42 0x79 +#define NR43 0x7c +#define NR44 0x7d +#define NR50 0x80 +#define NR51 0x81 +#define NR52 0x84 +#define SGCNT0_H 0x82 +#define FIFOA_L 0xa0 +#define FIFOA_H 0xa2 +#define FIFOB_L 0xa4 +#define FIFOB_H 0xa6 + +extern void soundReset(); +extern void soundEvent(uint32, uint8); +extern void soundEvent(uint32, uint16); +extern void soundTimerOverflow(int); + +int32 MDFNGBASOUND_Flush(int16 *SoundBuf, const int32 MaxSoundFrames); +void MDFNGBASOUND_Init(void); + +uint8 soundRead(uint32 address); + +void MDFNGBA_SetSoundVolume(uint32 volume); +bool MDFNGBA_SetSoundRate(uint32 rate); +int MDFNGBASOUND_StateAction(StateMem *sm, int load, int data_only); + +} + +#endif // VBA_SOUND_H diff --git a/libmednahawk/src/gba/arm.cpp b/libmednahawk/src/gba/arm.cpp new file mode 100644 index 0000000000..074dfe89db --- /dev/null +++ b/libmednahawk/src/gba/arm.cpp @@ -0,0 +1,7952 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#define INCED_FROM_ARM_CPP + +#include "GBA.h" +#include "GBAinline.h" +#include "Globals.h" + +namespace MDFN_IEN_GBA +{ + +unsigned int RunARM(void) +{ + unsigned int clockTicks; + +#define OP_AND \ + reg[dest].I = reg[(opcode>>16)&15].I & value; + +#define OP_ANDS \ + reg[dest].I = reg[(opcode>>16)&15].I & value;\ + \ + N_FLAG = (reg[dest].I & 0x80000000) ? true : false;\ + Z_FLAG = (reg[dest].I) ? false : true;\ + C_FLAG = C_OUT; + +#define OP_EOR \ + reg[dest].I = reg[(opcode>>16)&15].I ^ value; + +#define OP_EORS \ + reg[dest].I = reg[(opcode>>16)&15].I ^ value;\ + \ + N_FLAG = (reg[dest].I & 0x80000000) ? true : false;\ + Z_FLAG = (reg[dest].I) ? false : true;\ + C_FLAG = C_OUT; + +#define NEG(i) ((i) >> 31) +#define POS(i) ((~(i)) >> 31) +#define ADDCARRY(a, b, c) \ + C_FLAG = ((NEG(a) & NEG(b)) |\ + (NEG(a) & POS(c)) |\ + (NEG(b) & POS(c))) ? true : false; +#define ADDOVERFLOW(a, b, c) \ + V_FLAG = ((NEG(a) & NEG(b) & POS(c)) |\ + (POS(a) & POS(b) & NEG(c))) ? true : false; +#define SUBCARRY(a, b, c) \ + C_FLAG = ((NEG(a) & POS(b)) |\ + (NEG(a) & POS(c)) |\ + (POS(b) & POS(c))) ? true : false; +#define SUBOVERFLOW(a, b, c)\ + V_FLAG = ((NEG(a) & POS(b) & POS(c)) |\ + (POS(a) & NEG(b) & NEG(c))) ? true : false; +#define OP_SUB \ + {\ + reg[dest].I = reg[base].I - value;\ + } +#define OP_SUBS \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define OP_RSB \ + {\ + reg[dest].I = value - reg[base].I;\ + } +#define OP_RSBS \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = rhs - lhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(rhs, lhs, res);\ + SUBOVERFLOW(rhs, lhs, res);\ + } +#define OP_ADD \ + {\ + reg[dest].I = reg[base].I + value;\ + } +#define OP_ADDS \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define OP_ADC \ + {\ + reg[dest].I = reg[base].I + value + (uint32)C_FLAG;\ + } +#define OP_ADCS \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs + (uint32)C_FLAG;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define OP_SBC \ + {\ + reg[dest].I = reg[base].I - value - !((uint32)C_FLAG);\ + } +#define OP_SBCS \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs - !((uint32)C_FLAG);\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define OP_RSC \ + {\ + reg[dest].I = value - reg[base].I - !((uint32)C_FLAG);\ + } +#define OP_RSCS \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = rhs - lhs - !((uint32)C_FLAG);\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(rhs, lhs, res);\ + SUBOVERFLOW(rhs, lhs, res);\ + } +#define OP_CMP \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define OP_CMN \ + {\ + uint32 lhs = reg[base].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } + +#define LOGICAL_LSL_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + C_OUT = (v >> (32 - shift)) & 1 ? true : false;\ + value = v << shift;\ + } +#define LOGICAL_LSR_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + C_OUT = (v >> (shift - 1)) & 1 ? true : false;\ + value = v >> shift;\ + } +#define LOGICAL_ASR_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + C_OUT = ((int32)v >> (int)(shift - 1)) & 1 ? true : false;\ + value = (int32)v >> (int)shift;\ + } +#define LOGICAL_ROR_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + C_OUT = (v >> (shift - 1)) & 1 ? true : false;\ + value = ((v << (32 - shift)) |\ + (v >> shift));\ + } +#define LOGICAL_RRX_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + shift = (int)C_FLAG;\ + C_OUT = (v & 1) ? true : false;\ + value = ((v >> 1) |\ + (shift << 31));\ + } +#define LOGICAL_ROR_IMM \ + {\ + uint32 v = opcode & 0xff;\ + C_OUT = (v >> (shift - 1)) & 1 ? true : false;\ + value = ((v << (32 - shift)) |\ + (v >> shift));\ + } +#define ARITHMETIC_LSL_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + value = v << shift;\ + } +#define ARITHMETIC_LSR_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + value = v >> shift;\ + } +#define ARITHMETIC_ASR_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + value = (int32)v >> (int)shift;\ + } +#define ARITHMETIC_ROR_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + value = ((v << (32 - shift)) |\ + (v >> shift));\ + } +#define ARITHMETIC_RRX_REG \ + {\ + uint32 v = reg[opcode & 0x0f].I;\ + shift = (int)C_FLAG;\ + value = ((v >> 1) |\ + (shift << 31));\ + } +#define ARITHMETIC_ROR_IMM \ + {\ + uint32 v = opcode & 0xff;\ + value = ((v << (32 - shift)) |\ + (v >> shift));\ + } +#define ROR_IMM_MSR \ + {\ + uint32 v = opcode & 0xff;\ + value = ((v << (32 - shift)) |\ + (v >> shift));\ + } +#define ROR_VALUE \ + {\ + value = ((value << (32 - shift)) |\ + (value >> shift));\ + } +#define RCR_VALUE \ + {\ + shift = (int)C_FLAG;\ + value = ((value >> 1) |\ + (shift << 31));\ + } + +#define OP_TST \ + uint32 res = reg[base].I & value;\ + N_FLAG = (res & 0x80000000) ? true : false;\ + Z_FLAG = (res) ? false : true;\ + C_FLAG = C_OUT; + +#define OP_TEQ \ + uint32 res = reg[base].I ^ value;\ + N_FLAG = (res & 0x80000000) ? true : false;\ + Z_FLAG = (res) ? false : true;\ + C_FLAG = C_OUT; + +#define OP_ORR \ + reg[dest].I = reg[base].I | value; + +#define OP_ORRS \ + reg[dest].I = reg[base].I | value;\ + N_FLAG = (reg[dest].I & 0x80000000) ? true : false;\ + Z_FLAG = (reg[dest].I) ? false : true;\ + C_FLAG = C_OUT; + +#define OP_MOV \ + reg[dest].I = value; + +#define OP_MOVS \ + reg[dest].I = value;\ + N_FLAG = (reg[dest].I & 0x80000000) ? true : false;\ + Z_FLAG = (reg[dest].I) ? false : true;\ + C_FLAG = C_OUT; + +#define OP_BIC \ + reg[dest].I = reg[base].I & (~value); + +#define OP_BICS \ + reg[dest].I = reg[base].I & (~value);\ + N_FLAG = (reg[dest].I & 0x80000000) ? true : false;\ + Z_FLAG = (reg[dest].I) ? false : true;\ + C_FLAG = C_OUT; + +#define OP_MVN \ + reg[dest].I = ~value; + +#define OP_MVNS \ + reg[dest].I = ~value; \ + N_FLAG = (reg[dest].I & 0x80000000) ? true : false;\ + Z_FLAG = (reg[dest].I) ? false : true;\ + C_FLAG = C_OUT; + +#define CASE_16(BASE) \ + case BASE:\ + case BASE+1:\ + case BASE+2:\ + case BASE+3:\ + case BASE+4:\ + case BASE+5:\ + case BASE+6:\ + case BASE+7:\ + case BASE+8:\ + case BASE+9:\ + case BASE+10:\ + case BASE+11:\ + case BASE+12:\ + case BASE+13:\ + case BASE+14:\ + case BASE+15: + +#define CASE_256(BASE) \ + CASE_16(BASE)\ + CASE_16(BASE+0x10)\ + CASE_16(BASE+0x20)\ + CASE_16(BASE+0x30)\ + CASE_16(BASE+0x40)\ + CASE_16(BASE+0x50)\ + CASE_16(BASE+0x60)\ + CASE_16(BASE+0x70)\ + CASE_16(BASE+0x80)\ + CASE_16(BASE+0x90)\ + CASE_16(BASE+0xa0)\ + CASE_16(BASE+0xb0)\ + CASE_16(BASE+0xc0)\ + CASE_16(BASE+0xd0)\ + CASE_16(BASE+0xe0)\ + CASE_16(BASE+0xf0) + +#define LOGICAL_DATA_OPCODE(OPCODE, OPCODE2, BASE) \ + case BASE: \ + case BASE+8:\ + {\ + /* OP Rd,Rb,Rm LSL # */ \ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + \ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_LSL_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+2:\ + case BASE+10:\ + {\ + /* OP Rd,Rb,Rm LSR # */ \ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_LSR_REG\ + } else {\ + value = 0;\ + C_OUT = (reg[opcode & 0x0F].I & 0x80000000) ? true : false;\ + }\ + \ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+4:\ + case BASE+12:\ + {\ + /* OP Rd,Rb,Rm ASR # */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_ASR_REG\ + } else {\ + if(reg[opcode & 0x0F].I & 0x80000000){\ + value = 0xFFFFFFFF;\ + C_OUT = true;\ + } else {\ + value = 0;\ + C_OUT = false;\ + } \ + }\ + \ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+6:\ + case BASE+14:\ + {\ + /* OP Rd,Rb,Rm ROR # */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_ROR_REG\ + } else {\ + LOGICAL_RRX_REG\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+1:\ + {\ + /* OP Rd,Rb,Rm LSL Rs */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + if(shift == 32) {\ + value = 0;\ + C_OUT = (reg[opcode & 0x0F].I & 1 ? true : false);\ + } else if(shift < 32) {\ + LOGICAL_LSL_REG\ + } else {\ + value = 0;\ + C_OUT = false;\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+3:\ + {\ + /* OP Rd,Rb,Rm LSR Rs */ \ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + if(shift == 32) {\ + value = 0;\ + C_OUT = (reg[opcode & 0x0F].I & 0x80000000 ? true : false);\ + } else if(shift < 32) {\ + LOGICAL_LSR_REG\ + } else {\ + value = 0;\ + C_OUT = false;\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+5:\ + {\ + /* OP Rd,Rb,Rm ASR Rs */ \ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift < 32) {\ + if(shift) {\ + LOGICAL_ASR_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + } else {\ + if(reg[opcode & 0x0F].I & 0x80000000){\ + value = 0xFFFFFFFF;\ + C_OUT = true;\ + } else {\ + value = 0;\ + C_OUT = false;\ + }\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+7:\ + {\ + /* OP Rd,Rb,Rm ROR Rs */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + shift &= 0x1f;\ + if(shift) {\ + LOGICAL_ROR_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + C_OUT = (value & 0x80000000 ? true : false);\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + C_OUT = (value & 0x80000000 ? true : false);\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+0x200:\ + case BASE+0x201:\ + case BASE+0x202:\ + case BASE+0x203:\ + case BASE+0x204:\ + case BASE+0x205:\ + case BASE+0x206:\ + case BASE+0x207:\ + case BASE+0x208:\ + case BASE+0x209:\ + case BASE+0x20a:\ + case BASE+0x20b:\ + case BASE+0x20c:\ + case BASE+0x20d:\ + case BASE+0x20e:\ + case BASE+0x20f:\ + {\ + int shift = (opcode & 0xF00) >> 7;\ + int base = (opcode >> 16) & 0x0F;\ + int dest = (opcode >> 12) & 0x0F;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_ROR_IMM\ + } else {\ + value = opcode & 0xff;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break; + +#define LOGICAL_DATA_OPCODE_WITHOUT_base(OPCODE, OPCODE2, BASE) \ + case BASE: \ + case BASE+8:\ + {\ + /* OP Rd,Rb,Rm LSL # */ \ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + \ + if(shift) {\ + LOGICAL_LSL_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+2:\ + case BASE+10:\ + {\ + /* OP Rd,Rb,Rm LSR # */ \ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_LSR_REG\ + } else {\ + value = 0;\ + C_OUT = (reg[opcode & 0x0F].I & 0x80000000) ? true : false;\ + }\ + \ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+4:\ + case BASE+12:\ + {\ + /* OP Rd,Rb,Rm ASR # */\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_ASR_REG\ + } else {\ + if(reg[opcode & 0x0F].I & 0x80000000){\ + value = 0xFFFFFFFF;\ + C_OUT = true;\ + } else {\ + value = 0;\ + C_OUT = false;\ + } \ + }\ + \ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+6:\ + case BASE+14:\ + {\ + /* OP Rd,Rb,Rm ROR # */\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_ROR_REG\ + } else {\ + LOGICAL_RRX_REG\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+1:\ + {\ + /* OP Rd,Rb,Rm LSL Rs */\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + if(shift == 32) {\ + value = 0;\ + C_OUT = (reg[opcode & 0x0F].I & 1 ? true : false);\ + } else if(shift < 32) {\ + LOGICAL_LSL_REG\ + } else {\ + value = 0;\ + C_OUT = false;\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+3:\ + {\ + /* OP Rd,Rb,Rm LSR Rs */ \ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + if(shift == 32) {\ + value = 0;\ + C_OUT = (reg[opcode & 0x0F].I & 0x80000000 ? true : false);\ + } else if(shift < 32) {\ + LOGICAL_LSR_REG\ + } else {\ + value = 0;\ + C_OUT = false;\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+5:\ + {\ + /* OP Rd,Rb,Rm ASR Rs */ \ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift < 32) {\ + if(shift) {\ + LOGICAL_ASR_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + } else {\ + if(reg[opcode & 0x0F].I & 0x80000000){\ + value = 0xFFFFFFFF;\ + C_OUT = true;\ + } else {\ + value = 0;\ + C_OUT = false;\ + }\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+7:\ + {\ + /* OP Rd,Rb,Rm ROR Rs */\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + shift &= 0x1f;\ + if(shift) {\ + LOGICAL_ROR_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + C_OUT = (value & 0x80000000 ? true : false);\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + C_OUT = (value & 0x80000000 ? true : false);\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+0x200:\ + case BASE+0x201:\ + case BASE+0x202:\ + case BASE+0x203:\ + case BASE+0x204:\ + case BASE+0x205:\ + case BASE+0x206:\ + case BASE+0x207:\ + case BASE+0x208:\ + case BASE+0x209:\ + case BASE+0x20a:\ + case BASE+0x20b:\ + case BASE+0x20c:\ + case BASE+0x20d:\ + case BASE+0x20e:\ + case BASE+0x20f:\ + {\ + int shift = (opcode & 0xF00) >> 7;\ + int dest = (opcode >> 12) & 0x0F;\ + bool C_OUT = C_FLAG;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + LOGICAL_ROR_IMM\ + } else {\ + value = opcode & 0xff;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break; + +#define ARITHMETIC_DATA_OPCODE(OPCODE, OPCODE2, BASE) \ + case BASE:\ + case BASE+8:\ + {\ + /* OP Rd,Rb,Rm LSL # */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + ARITHMETIC_LSL_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+2:\ + case BASE+10:\ + {\ + /* OP Rd,Rb,Rm LSR # */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + ARITHMETIC_LSR_REG\ + } else {\ + value = 0;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+4:\ + case BASE+12:\ + {\ + /* OP Rd,Rb,Rm ASR # */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + ARITHMETIC_ASR_REG\ + } else {\ + if(reg[opcode & 0x0F].I & 0x80000000){\ + value = 0xFFFFFFFF;\ + } else value = 0;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+6:\ + case BASE+14:\ + {\ + /* OP Rd,Rb,Rm ROR # */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = (opcode >> 7) & 0x1F;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + ARITHMETIC_ROR_REG\ + } else {\ + ARITHMETIC_RRX_REG\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+1:\ + {\ + /* OP Rd,Rb,Rm LSL Rs */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + if(shift == 32) {\ + value = 0;\ + } else if(shift < 32) {\ + ARITHMETIC_LSL_REG\ + } else value = 0;\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+3:\ + {\ + /* OP Rd,Rb,Rm LSR Rs */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + if(shift == 32) {\ + value = 0;\ + } else if(shift < 32) {\ + ARITHMETIC_LSR_REG\ + } else value = 0;\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+5:\ + {\ + /* OP Rd,Rb,Rm ASR Rs */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift < 32) {\ + if(shift) {\ + ARITHMETIC_ASR_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + } else {\ + if(reg[opcode & 0x0F].I & 0x80000000){\ + value = 0xFFFFFFFF;\ + } else value = 0;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+7:\ + {\ + /* OP Rd,Rb,Rm ROR Rs */\ + int base = (opcode >> 16) & 0x0F;\ + int shift = reg[(opcode >> 8)&15].B.B0;\ + int dest = (opcode>>12) & 15;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + if(shift) {\ + shift &= 0x1f;\ + if(shift) {\ + ARITHMETIC_ROR_REG\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + } else {\ + value = reg[opcode & 0x0F].I;\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break;\ + case BASE+0x200:\ + case BASE+0x201:\ + case BASE+0x202:\ + case BASE+0x203:\ + case BASE+0x204:\ + case BASE+0x205:\ + case BASE+0x206:\ + case BASE+0x207:\ + case BASE+0x208:\ + case BASE+0x209:\ + case BASE+0x20a:\ + case BASE+0x20b:\ + case BASE+0x20c:\ + case BASE+0x20d:\ + case BASE+0x20e:\ + case BASE+0x20f:\ + {\ + int shift = (opcode & 0xF00) >> 7;\ + int base = (opcode >> 16) & 0x0F;\ + int dest = (opcode >> 12) & 0x0F;\ + uint32 value;\ + if ((dest == 15)||((opcode & 0x02000010)==0x10))\ + {\ + clockTicks = 1+codeTicksAccesint32(armNextPC);\ + if ((opcode & 0x02000010)==0x10)\ + clockTicks++;\ + }\ + {\ + ARITHMETIC_ROR_IMM\ + }\ + if(dest == 15) {\ + clockTicks+=2+codeTicksAccessSeq32(armNextPC)+codeTicksAccessSeq32(armNextPC);\ + OPCODE2\ + /* todo */\ + if(opcode & 0x00100000) {\ + CPUSwitchMode(reg[17].I & 0x1f, false);\ + }\ + if(armState) {\ + reg[15].I &= 0xFFFFFFFC;\ + armNextPC = reg[15].I;\ + reg[15].I += 4;\ + ARM_PREFETCH;\ + } else {\ + reg[15].I &= 0xFFFFFFFE;\ + armNextPC = reg[15].I;\ + reg[15].I += 2;\ + THUMB_PREFETCH;\ + }\ + } else {\ + OPCODE \ + }\ + }\ + break; + + uint32 opcode = cpuPrefetch[0]; + cpuPrefetch[0] = cpuPrefetch[1]; + + busPrefetch = false; + if (busPrefetchCount & 0xFFFFFE00) + busPrefetchCount = 0x100 | (busPrefetchCount & 0xFF); + + + clockTicks = 0;//codeTicksAccessSeq32(armNextPC)+1; + int oldArmNextPC = armNextPC; + +#ifndef FINAL_VERSION + if(armNextPC == stop) { + armNextPC++; + } +#endif + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH_NEXT; + + int cond = opcode >> 28; + // suggested optimization for frequent cases + bool cond_res; + if(cond == 0x0e) { + cond_res = true; + } else { + switch(cond) { + case 0x00: // EQ + cond_res = Z_FLAG; + break; + case 0x01: // NE + cond_res = !Z_FLAG; + break; + case 0x02: // CS + cond_res = C_FLAG; + break; + case 0x03: // CC + cond_res = !C_FLAG; + break; + case 0x04: // MI + cond_res = N_FLAG; + break; + case 0x05: // PL + cond_res = !N_FLAG; + break; + case 0x06: // VS + cond_res = V_FLAG; + break; + case 0x07: // VC + cond_res = !V_FLAG; + break; + case 0x08: // HI + cond_res = C_FLAG && !Z_FLAG; + break; + case 0x09: // LS + cond_res = !C_FLAG || Z_FLAG; + break; + case 0x0A: // GE + cond_res = N_FLAG == V_FLAG; + break; + case 0x0B: // LT + cond_res = N_FLAG != V_FLAG; + break; + case 0x0C: // GT + cond_res = !Z_FLAG &&(N_FLAG == V_FLAG); + break; + case 0x0D: // LE + cond_res = Z_FLAG || (N_FLAG != V_FLAG); + break; + case 0x0E: + cond_res = true; + break; + case 0x0F: + default: + // ??? + cond_res = false; + break; + } + } + +if(cond_res) { + switch(((opcode>>16)&0xFF0) | ((opcode>>4)&0x0F)) { + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_AND, OP_AND, 0x000); + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_ANDS, OP_AND, 0x010); + case 0x009: + { + // MUL Rd, Rm, Rs + int dest = (opcode >> 16) & 0x0F; + int mult = (opcode & 0x0F); + clockTicks = 1; + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + reg[dest].I = reg[mult].I * rs; + if(((int32)rs)<0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + + } + break; + case 0x019: + { + // MULS Rd, Rm, Rs + int dest = (opcode >> 16) & 0x0F; + int mult = (opcode & 0x0F); + clockTicks = 1; + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + reg[dest].I = reg[mult].I * rs; + N_FLAG = (reg[dest].I & 0x80000000) ? true : false; + Z_FLAG = (reg[dest].I) ? false : true; + if(((int32)rs)<0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + case 0x00b: + case 0x02b: + { + // STRH Rd, [Rn], -Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + address -= offset; + reg[base].I = address; + } + break; + case 0x04b: + case 0x06b: + { + // STRH Rd, [Rn], #-offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + address -= offset; + reg[base].I = address; + } + break; + case 0x08b: + case 0x0ab: + { + // STRH Rd, [Rn], Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + address += offset; + reg[base].I = address; + } + break; + case 0x0cb: + case 0x0eb: + { + // STRH Rd, [Rn], #offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + address += offset; + reg[base].I = address; + } + break; + case 0x10b: + { + // STRH Rd, [Rn, -Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + } + break; + case 0x12b: + { + // STRH Rd, [Rn, -Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + reg[base].I = address; + } + break; + case 0x14b: + { + // STRH Rd, [Rn, -#offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + } + break; + case 0x16b: + { + // STRH Rd, [Rn, -#offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + reg[base].I = address; + } + break; + case 0x18b: + { + // STRH Rd, [Rn, Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + } + break; + case 0x1ab: + { + // STRH Rd, [Rn, Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + reg[base].I = address; + } + break; + case 0x1cb: + { + // STRH Rd, [Rn, #offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + } + break; + case 0x1eb: + { + // STRH Rd, [Rn, #offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + CPUWriteHalfWord(address, reg[dest].W.W0); + reg[base].I = address; + } + break; + case 0x01b: + case 0x03b: + { + // LDRH Rd, [Rn], -Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) { + address -= offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x05b: + case 0x07b: + { + // LDRH Rd, [Rn], #-offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) { + address -= offset; + reg[base].I = address; + } + clockTicks=0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x09b: + case 0x0bb: + { + // LDRH Rd, [Rn], Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) { + address += offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x0db: + case 0x0fb: + { + // LDRH Rd, [Rn], #offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) { + address += offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x11b: + { + // LDRH Rd, [Rn, -Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + reg[dest].I = CPUReadHalfWord(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x13b: + { + // LDRH Rd, [Rn, -Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x15b: + { + // LDRH Rd, [Rn, -#offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = CPUReadHalfWord(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x17b: + { + // LDRH Rd, [Rn, -#offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x19b: + { + // LDRH Rd, [Rn, Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + reg[dest].I = CPUReadHalfWord(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1bb: + { + // LDRH Rd, [Rn, Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1db: + { + // LDRH Rd, [Rn, #offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = CPUReadHalfWord(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1fb: + { + // LDRH Rd, [Rn, #offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = CPUReadHalfWord(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x01d: + case 0x03d: + { + // LDRSB Rd, [Rn], -Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) { + address -= offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x05d: + case 0x07d: + { + // LDRSB Rd, [Rn], #-offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) { + address -= offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x09d: + case 0x0bd: + { + // LDRSB Rd, [Rn], Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) { + address += offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x0dd: + case 0x0fd: + { + // LDRSB Rd, [Rn], #offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) { + address += offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x11d: + { + // LDRSB Rd, [Rn, -Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + reg[dest].I = (int8)CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x13d: + { + // LDRSB Rd, [Rn, -Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x15d: + { + // LDRSB Rd, [Rn, -#offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int8)CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x17d: + { + // LDRSB Rd, [Rn, -#offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x19d: + { + // LDRSB Rd, [Rn, Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + reg[dest].I = (int8)CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1bd: + { + // LDRSB Rd, [Rn, Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1dd: + { + // LDRSB Rd, [Rn, #offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int8)CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1fd: + { + // LDRSB Rd, [Rn, #offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int8)CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x01f: + case 0x03f: + { + // LDRSH Rd, [Rn], -Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) { + address -= offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x05f: + case 0x07f: + { + // LDRSH Rd, [Rn], #-offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) { + address -= offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x09f: + case 0x0bf: + { + // LDRSH Rd, [Rn], Rm + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = reg[opcode & 0x0F].I; + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) { + address += offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x0df: + case 0x0ff: + { + // LDRSH Rd, [Rn], #offset + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I; + int offset = (opcode & 0x0F) | ((opcode >> 4) & 0xF0); + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) { + address += offset; + reg[base].I = address; + } + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x11f: + { + // LDRSH Rd, [Rn, -Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x13f: + { + // LDRSH Rd, [Rn, -Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - reg[opcode & 0x0F].I; + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x15f: + { + // LDRSH Rd, [Rn, -#offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x17f: + { + // LDRSH Rd, [Rn, -#offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I - ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x19f: + { + // LDRSH Rd, [Rn, Rm] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1bf: + { + // LDRSH Rd, [Rn, Rm]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + reg[opcode & 0x0F].I; + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1df: + { + // LDRSH Rd, [Rn, #offset] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x1ff: + { + // LDRSH Rd, [Rn, #offset]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode >> 16) & 0x0F; + int dest = (opcode >> 12) & 0x0F; + uint32 address = reg[base].I + ((opcode & 0x0F)|((opcode>>4)&0xF0)); + reg[dest].I = (int16)CPUReadHalfWordSigned(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_EOR, OP_EOR, 0x020); + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_EORS, OP_EOR, 0x030); + case 0x029: + { + // MLA Rd, Rm, Rs, Rn + clockTicks = 2; + int dest = (opcode >> 16) & 0x0F; + int mult = (opcode & 0x0F); + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + reg[dest].I = reg[mult].I * rs + reg[(opcode>>12)&0x0f].I; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + case 0x039: + { + // MLAS Rd, Rm, Rs, Rn + clockTicks = 2; + int dest = (opcode >> 16) & 0x0F; + int mult = (opcode & 0x0F); + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + reg[dest].I = reg[mult].I * rs + reg[(opcode>>12)&0x0f].I; + N_FLAG = (reg[dest].I & 0x80000000) ? true : false; + Z_FLAG = (reg[dest].I) ? false : true; + if(((int32)rs)<0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + ARITHMETIC_DATA_OPCODE(OP_SUB, OP_SUB, 0x040); + ARITHMETIC_DATA_OPCODE(OP_SUBS, OP_SUB, 0x050); + ARITHMETIC_DATA_OPCODE(OP_RSB, OP_RSB, 0x060); + ARITHMETIC_DATA_OPCODE(OP_RSBS, OP_RSB, 0x070); + ARITHMETIC_DATA_OPCODE(OP_ADD, OP_ADD, 0x080); + ARITHMETIC_DATA_OPCODE(OP_ADDS, OP_ADD, 0x090); + case 0x089: + { + // UMULL RdLo, RdHi, Rn, Rs + clockTicks = 2; + uint32 umult = reg[(opcode & 0x0F)].I; + uint32 usource = reg[(opcode >> 8) & 0x0F].I; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint64 uTemp = ((uint64)umult)*((uint64)usource); + reg[destLo].I = (uint32)uTemp; + reg[destHi].I = (uint32)(uTemp >> 32); + if ((usource & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((usource & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((usource & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + case 0x099: + { + // UMULLS RdLo, RdHi, Rn, Rs + clockTicks = 2; + uint32 umult = reg[(opcode & 0x0F)].I; + uint32 usource = reg[(opcode >> 8) & 0x0F].I; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint64 uTemp = ((uint64)umult)*((uint64)usource); + reg[destLo].I = (uint32)uTemp; + reg[destHi].I = (uint32)(uTemp >> 32); + Z_FLAG = (uTemp) ? false : true; + N_FLAG = (reg[destHi].I & 0x80000000) ? true : false; + if ((usource & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((usource & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((usource & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + ARITHMETIC_DATA_OPCODE(OP_ADC, OP_ADC, 0x0a0); + ARITHMETIC_DATA_OPCODE(OP_ADCS, OP_ADC, 0x0b0); + case 0x0a9: + { + // UMLAL RdLo, RdHi, Rn, Rs + clockTicks = 3; + uint32 umult = reg[(opcode & 0x0F)].I; + uint32 usource = reg[(opcode >> 8) & 0x0F].I; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint64 uTemp = (uint64)reg[destHi].I; + uTemp <<= 32; + uTemp |= (uint64)reg[destLo].I; + uTemp += ((uint64)umult)*((uint64)usource); + reg[destLo].I = (uint32)uTemp; + reg[destHi].I = (uint32)(uTemp >> 32); + if ((usource & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((usource & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((usource & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + case 0x0b9: + { + // UMLALS RdLo, RdHi, Rn, Rs + clockTicks = 3; + uint32 umult = reg[(opcode & 0x0F)].I; + uint32 usource = reg[(opcode >> 8) & 0x0F].I; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint64 uTemp = (uint64)reg[destHi].I; + uTemp <<= 32; + uTemp |= (uint64)reg[destLo].I; + uTemp += ((uint64)umult)*((uint64)usource); + reg[destLo].I = (uint32)uTemp; + reg[destHi].I = (uint32)(uTemp >> 32); + Z_FLAG = (uTemp) ? false : true; + N_FLAG = (reg[destHi].I & 0x80000000) ? true : false; + if ((usource & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((usource & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((usource & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + ARITHMETIC_DATA_OPCODE(OP_SBC, OP_SBC, 0x0c0); + ARITHMETIC_DATA_OPCODE(OP_SBCS, OP_SBC, 0x0d0); + case 0x0c9: + { + // SMULL RdLo, RdHi, Rm, Rs + clockTicks = 2; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + int64 m = (int32)reg[(opcode & 0x0F)].I; + int64 s = (int32)rs; + int64 sTemp = m*s; + reg[destLo].I = (uint32)sTemp; + reg[destHi].I = (uint32)(sTemp >> 32); + if(((int32)rs) < 0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + case 0x0d9: + { + // SMULLS RdLo, RdHi, Rm, Rs + clockTicks = 2; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + int64 m = (int32)reg[(opcode & 0x0F)].I; + int64 s = (int32)rs; + int64 sTemp = m*s; + reg[destLo].I = (uint32)sTemp; + reg[destHi].I = (uint32)(sTemp >> 32); + Z_FLAG = (sTemp) ? false : true; + N_FLAG = (sTemp < 0) ? true : false; + if(((int32)rs) < 0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + clockTicks += codeTicksAccesint32(armNextPC) + 1; + } + break; + ARITHMETIC_DATA_OPCODE(OP_RSC, OP_RSC, 0x0e0); + ARITHMETIC_DATA_OPCODE(OP_RSCS, OP_RSC, 0x0f0); + case 0x0e9: + { + // SMLAL RdLo, RdHi, Rm, Rs + clockTicks = codeTicksAccesint32(armNextPC) + 4; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + int64 m = (int32)reg[(opcode & 0x0F)].I; + int64 s = (int32)rs; + int64 sTemp = (uint64)reg[destHi].I; + sTemp <<= 32; + sTemp |= (uint64)reg[destLo].I; + sTemp += m*s; + reg[destLo].I = (uint32)sTemp; + reg[destHi].I = (uint32)(sTemp >> 32); + if(((int32)rs) < 0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + } + break; + case 0x0f9: + { + // SMLALS RdLo, RdHi, Rm, Rs + clockTicks = codeTicksAccesint32(armNextPC) + 4; + int destLo = (opcode >> 12) & 0x0F; + int destHi = (opcode >> 16) & 0x0F; + uint32 rs = reg[(opcode >> 8) & 0x0F].I; + int64 m = (int32)reg[(opcode & 0x0F)].I; + int64 s = (int32)rs; + int64 sTemp = (uint64)reg[destHi].I; + sTemp <<= 32; + sTemp |= (uint64)reg[destLo].I; + sTemp += m*s; + reg[destLo].I = (uint32)sTemp; + reg[destHi].I = (uint32)(sTemp >> 32); + Z_FLAG = (sTemp) ? false : true; + N_FLAG = (sTemp < 0) ? true : false; + if(((int32)rs) < 0) + rs = ~rs; + if((rs & 0xFFFFFF00) == 0) + clockTicks += 0; + else if((rs & 0xFFFF0000) == 0) + clockTicks += 1; + else if((rs & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + if (busPrefetchCount==0) + busPrefetchCount = (busPrefetchCount<>(8-clockTicks)); + } + break; + LOGICAL_DATA_OPCODE(OP_TST, OP_TST, 0x110); + case 0x100: + // MRS Rd, CPSR + // TODO: check if right instruction.... + CPUUpdateCPSR(); + reg[(opcode >> 12) & 0x0F].I = reg[16].I; + break; + case 0x109: + { + // SWP Rd, Rm, [Rn] + uint32 address = reg[(opcode >> 16) & 15].I; + uint32 temp = CPUReadMemory(address); + CPUWriteMemory(address, reg[opcode&15].I); + reg[(opcode >> 12) & 15].I = temp; + clockTicks = 4 + dataTicksAccesint32(address) + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + LOGICAL_DATA_OPCODE(OP_TEQ, OP_TEQ, 0x130); + case 0x120: + { + // MSR CPSR_fields, Rm + CPUUpdateCPSR(); + uint32 value = reg[opcode & 15].I; + uint32 newValue = reg[16].I; + if(armMode > 0x10) { + if(opcode & 0x00010000) + newValue = (newValue & 0xFFFFFF00) | (value & 0x000000FF); + if(opcode & 0x00020000) + newValue = (newValue & 0xFFFF00FF) | (value & 0x0000FF00); + if(opcode & 0x00040000) + newValue = (newValue & 0xFF00FFFF) | (value & 0x00FF0000); + } + if(opcode & 0x00080000) + newValue = (newValue & 0x00FFFFFF) | (value & 0xFF000000); + newValue |= 0x10; + CPUSwitchMode(newValue & 0x1f, false); + reg[16].I = newValue; + CPUUpdateFlags(); + if(!armState) { // this should not be allowed, but it seems to work + THUMB_PREFETCH; + reg[15].I = armNextPC + 2; + } + } + break; + case 0x121: + { + // BX Rm + // TODO: check if right instruction... + int base = opcode & 0x0F; + busPrefetchCount=0; + armState = reg[base].I & 1 ? false : true; + if(armState) { + reg[15].I = reg[base].I & 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks = codeTicksAccessSeq32(armNextPC) + + codeTicksAccessSeq32(armNextPC) + codeTicksAccesint32(armNextPC) + 3; + } else { + reg[15].I = reg[base].I & 0xFFFFFFFE; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + clockTicks = codeTicksAccessSeq16(armNextPC) + + codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC) + 3; + } + } + break; + ARITHMETIC_DATA_OPCODE(OP_CMP, OP_CMP, 0x150); + case 0x140: + // MRS Rd, SPSR + // TODO: check if right instruction... + reg[(opcode >> 12) & 0x0F].I = reg[17].I; + break; + case 0x149: + { + // SWPB Rd, Rm, [Rn] + uint32 address = reg[(opcode >> 16) & 15].I; + uint32 temp = CPUReadByte(address); + CPUWriteByte(address, reg[opcode&15].B.B0); + reg[(opcode>>12)&15].I = temp; + clockTicks = 4 + dataTicksAccesint32(address) + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + ARITHMETIC_DATA_OPCODE(OP_CMN, OP_CMN, 0x170); + case 0x160: + { + // MSR SPSR_fields, Rm + uint32 value = reg[opcode & 15].I; + if(armMode > 0x10 && armMode < 0x1f) { + if(opcode & 0x00010000) + reg[17].I = (reg[17].I & 0xFFFFFF00) | (value & 0x000000FF); + if(opcode & 0x00020000) + reg[17].I = (reg[17].I & 0xFFFF00FF) | (value & 0x0000FF00); + if(opcode & 0x00040000) + reg[17].I = (reg[17].I & 0xFF00FFFF) | (value & 0x00FF0000); + if(opcode & 0x00080000) + reg[17].I = (reg[17].I & 0x00FFFFFF) | (value & 0xFF000000); + } + } + break; + LOGICAL_DATA_OPCODE (OP_ORR, OP_ORR, 0x180); + LOGICAL_DATA_OPCODE (OP_ORRS, OP_ORR, 0x190); + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_MOV, OP_MOV, 0x1a0); + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_MOVS, OP_MOV, 0x1b0); + LOGICAL_DATA_OPCODE (OP_BIC, OP_BIC, 0x1c0); + LOGICAL_DATA_OPCODE (OP_BICS, OP_BIC, 0x1d0); + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_MVN, OP_MVN, 0x1e0); + LOGICAL_DATA_OPCODE_WITHOUT_base(OP_MVNS, OP_MVN, 0x1f0); +#ifdef BKPT_SUPPORT + case 0x127: + case 0x7ff: // for GDB support + extern void (*dbgSignal)(int,int); + reg[15].I -= 4; + armNextPC -= 4; + dbgSignal(5, (opcode & 0x0f)|((opcode>>4) & 0xfff0)); + return; +#endif + case 0x320: + case 0x321: + case 0x322: + case 0x323: + case 0x324: + case 0x325: + case 0x326: + case 0x327: + case 0x328: + case 0x329: + case 0x32a: + case 0x32b: + case 0x32c: + case 0x32d: + case 0x32e: + case 0x32f: + { + // MSR CPSR_fields, # + CPUUpdateCPSR(); + uint32 value = opcode & 0xFF; + int shift = (opcode & 0xF00) >> 7; + if(shift) { + ROR_IMM_MSR; + } + uint32 newValue = reg[16].I; + if(armMode > 0x10) { + if(opcode & 0x00010000) + newValue = (newValue & 0xFFFFFF00) | (value & 0x000000FF); + if(opcode & 0x00020000) + newValue = (newValue & 0xFFFF00FF) | (value & 0x0000FF00); + if(opcode & 0x00040000) + newValue = (newValue & 0xFF00FFFF) | (value & 0x00FF0000); + } + if(opcode & 0x00080000) + newValue = (newValue & 0x00FFFFFF) | (value & 0xFF000000); + + newValue |= 0x10; + + CPUSwitchMode(newValue & 0x1f, false); + reg[16].I = newValue; + CPUUpdateFlags(); + if(!armState) { // this should not be allowed, but it seems to work + THUMB_PREFETCH; + reg[15].I = armNextPC + 2; + } + } + break; + case 0x360: + case 0x361: + case 0x362: + case 0x363: + case 0x364: + case 0x365: + case 0x366: + case 0x367: + case 0x368: + case 0x369: + case 0x36a: + case 0x36b: + case 0x36c: + case 0x36d: + case 0x36e: + case 0x36f: + { + // MSR SPSR_fields, # + if(armMode > 0x10 && armMode < 0x1f) { + uint32 value = opcode & 0xFF; + int shift = (opcode & 0xF00) >> 7; + if(shift) { + ROR_IMM_MSR; + } + if(opcode & 0x00010000) + reg[17].I = (reg[17].I & 0xFFFFFF00) | (value & 0x000000FF); + if(opcode & 0x00020000) + reg[17].I = (reg[17].I & 0xFFFF00FF) | (value & 0x0000FF00); + if(opcode & 0x00040000) + reg[17].I = (reg[17].I & 0xFF00FFFF) | (value & 0x00FF0000); + if(opcode & 0x00080000) + reg[17].I = (reg[17].I & 0x00FFFFFF) | (value & 0xFF000000); + } + } + break; + CASE_16(0x400) + // T versions shouldn't be different on GBA + CASE_16(0x420) + { + // STR Rd, [Rn], -# + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x480) + // T versions shouldn't be different on GBA + CASE_16(0x4a0) + { + // STR Rd, [Rn], # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x500) + { + // STR Rd, [Rn, -#] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x520) + { + // STR Rd, [Rn, -#]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x580) + { + // STR Rd, [Rn, #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x5a0) + { + // STR Rd, [Rn, #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x410) + { + // LDR Rd, [Rn], -# + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I -= offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x430) + { + // LDRT Rd, [Rn], -# + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I -= offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x490) + { + // LDR Rd, [Rn], # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I += offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x4b0) + { + // LDRT Rd, [Rn], # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I += offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x510) + { + // LDR Rd, [Rn, -#] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x530) + { + // LDR Rd, [Rn, -#]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x590) + { + // LDR Rd, [Rn, #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x5b0) + { + // LDR Rd, [Rn, #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x440) + // T versions shouldn't be different on GBA + CASE_16(0x460) + { + // STRB Rd, [Rn], -# + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x4c0) + // T versions shouldn't be different on GBA + CASE_16(0x4e0) + { + // STRB Rd, [Rn], # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x540) + { + // STRB Rd, [Rn, -#] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x560) + { + // STRB Rd, [Rn, -#]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x5c0) + { + // STRB Rd, [Rn, #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x5e0) + { + // STRB Rd, [Rn, #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x450) + // T versions shouldn't be different + CASE_16(0x470) + { + // LDRB Rd, [Rn], -# + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I -= offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x4d0) + CASE_16(0x4f0) // T versions should not be different + { + // LDRB Rd, [Rn], # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I += offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x550) + { + // LDRB Rd, [Rn, -#] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x570) + { + // LDRB Rd, [Rn, -#]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x5d0) + { + // LDRB Rd, [Rn, #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x5f0) + { + // LDRB Rd, [Rn, #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = opcode & 0xFFF; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x600: + case 0x608: + // T versions are the same + case 0x620: + case 0x628: + { + // STR Rd, [Rn], -Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x602: + case 0x60a: + // T versions are the same + case 0x622: + case 0x62a: + { + // STR Rd, [Rn], -Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x604: + case 0x60c: + // T versions are the same + case 0x624: + case 0x62c: + { + // STR Rd, [Rn], -Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x606: + case 0x60e: + // T versions are the same + case 0x626: + case 0x62e: + { + // STR Rd, [Rn], -Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address - value; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x680: + case 0x688: + // T versions are the same + case 0x6a0: + case 0x6a8: + { + // STR Rd, [Rn], Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x682: + case 0x68a: + // T versions are the same + case 0x6a2: + case 0x6aa: + { + // STR Rd, [Rn], Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x684: + case 0x68c: + // T versions are the same + case 0x6a4: + case 0x6ac: + { + // STR Rd, [Rn], Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x686: + case 0x68e: + // T versions are the same + case 0x6a6: + case 0x6ae: + { + // STR Rd, [Rn], Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteMemory(address, reg[dest].I); + reg[base].I = address + value; + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x700: + case 0x708: + { + // STR Rd, [Rn, -Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x702: + case 0x70a: + { + // STR Rd, [Rn, -Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x704: + case 0x70c: + { + // STR Rd, [Rn, -Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x706: + case 0x70e: + { + // STR Rd, [Rn, -Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x720: + case 0x728: + { + // STR Rd, [Rn, -Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x722: + case 0x72a: + { + // STR Rd, [Rn, -Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x724: + case 0x72c: + { + // STR Rd, [Rn, -Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x726: + case 0x72e: + { + // STR Rd, [Rn, -Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x780: + case 0x788: + { + // STR Rd, [Rn, Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x782: + case 0x78a: + { + // STR Rd, [Rn, Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x784: + case 0x78c: + { + // STR Rd, [Rn, Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x786: + case 0x78e: + { + // STR Rd, [Rn, Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7a0: + case 0x7a8: + { + // STR Rd, [Rn, Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7a2: + case 0x7aa: + { + // STR Rd, [Rn, Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7a4: + case 0x7ac: + { + // STR Rd, [Rn, Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7a6: + case 0x7ae: + { + // STR Rd, [Rn, Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + reg[base].I = address; + CPUWriteMemory(address, reg[dest].I); + clockTicks = 2 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x610: + case 0x618: + // T versions are the same + case 0x630: + case 0x638: + { + // LDR Rd, [Rn], -Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address - offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x612: + case 0x61a: + // T versions are the same + case 0x632: + case 0x63a: + { + // LDR Rd, [Rn], -Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address - offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x614: + case 0x61c: + // T versions are the same + case 0x634: + case 0x63c: + { + // LDR Rd, [Rn], -Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address - offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x616: + case 0x61e: + // T versions are the same + case 0x636: + case 0x63e: + { + // LDR Rd, [Rn], -Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address - value; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x690: + case 0x698: + // T versions are the same + case 0x6b0: + case 0x6b8: + { + // LDR Rd, [Rn], Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address + offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x692: + case 0x69a: + // T versions are the same + case 0x6b2: + case 0x6ba: + { + // LDR Rd, [Rn], Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address + offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x694: + case 0x69c: + // T versions are the same + case 0x6b4: + case 0x6bc: + { + // LDR Rd, [Rn], Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address + offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x696: + case 0x69e: + // T versions are the same + case 0x6b6: + case 0x6be: + { + // LDR Rd, [Rn], Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address + value; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x710: + case 0x718: + { + // LDR Rd, [Rn, -Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x712: + case 0x71a: + { + // LDR Rd, [Rn, -Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x714: + case 0x71c: + { + // LDR Rd, [Rn, -Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x716: + case 0x71e: + { + // LDR Rd, [Rn, -Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x730: + case 0x738: + { + // LDR Rd, [Rn, -Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x732: + case 0x73a: + { + // LDR Rd, [Rn, -Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x734: + case 0x73c: + { + // LDR Rd, [Rn, -Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x736: + case 0x73e: + { + // LDR Rd, [Rn, -Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x790: + case 0x798: + { + // LDR Rd, [Rn, Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x792: + case 0x79a: + { + // LDR Rd, [Rn, Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x794: + case 0x79c: + { + // LDR Rd, [Rn, Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x796: + case 0x79e: + { + // LDR Rd, [Rn, Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + reg[dest].I = CPUReadMemory(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7b0: + case 0x7b8: + { + // LDR Rd, [Rn, Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7b2: + case 0x7ba: + { + // LDR Rd, [Rn, Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7b4: + case 0x7bc: + { + // LDR Rd, [Rn, Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7b6: + case 0x7be: + { + // LDR Rd, [Rn, Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + reg[dest].I = CPUReadMemory(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint32(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x640: + case 0x648: + // T versions are the same + case 0x660: + case 0x668: + { + // STRB Rd, [Rn], -Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x642: + case 0x64a: + // T versions are the same + case 0x662: + case 0x66a: + { + // STRB Rd, [Rn], -Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x644: + case 0x64c: + // T versions are the same + case 0x664: + case 0x66c: + { + // STRB Rd, [Rn], -Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address - offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x646: + case 0x64e: + // T versions are the same + case 0x666: + case 0x66e: + { + // STRB Rd, [Rn], -Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address - value; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6c0: + case 0x6c8: + // T versions are the same + case 0x6e0: + case 0x6e8: + { + // STRB Rd, [Rn], Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6c2: + case 0x6ca: + // T versions are the same + case 0x6e2: + case 0x6ea: + { + // STRB Rd, [Rn], Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6c4: + case 0x6cc: + // T versions are the same + case 0x6e4: + case 0x6ec: + { + // STRB Rd, [Rn], Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address + offset; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6c6: + case 0x6ce: + // T versions are the same + case 0x6e6: + case 0x6ee: + { + // STRB Rd, [Rn], Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + CPUWriteByte(address, reg[dest].B.B0); + reg[base].I = address + value; + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x740: + case 0x748: + { + // STRB Rd, [Rn, -Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x742: + case 0x74a: + { + // STRB Rd, [Rn, -Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x744: + case 0x74c: + { + // STRB Rd, [Rn, -Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x746: + case 0x74e: + { + // STRB Rd, [Rn, -Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x760: + case 0x768: + { + // STRB Rd, [Rn, -Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x762: + case 0x76a: + { + // STRB Rd, [Rn, -Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x764: + case 0x76c: + { + // STRB Rd, [Rn, -Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x766: + case 0x76e: + { + // STRB Rd, [Rn, -Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7c0: + case 0x7c8: + { + // STRB Rd, [Rn, Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7c2: + case 0x7ca: + { + // STRB Rd, [Rn, Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7c4: + case 0x7cc: + { + // STRB Rd, [Rn, Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7c6: + case 0x7ce: + { + // STRB Rd, [Rn, Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7e0: + case 0x7e8: + { + // STRB Rd, [Rn, Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7e2: + case 0x7ea: + { + // STRB Rd, [Rn, Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7e4: + case 0x7ec: + { + // STRB Rd, [Rn, Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7e6: + case 0x7ee: + { + // STRB Rd, [Rn, Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + reg[base].I = address; + CPUWriteByte(address, reg[dest].B.B0); + clockTicks = 2 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x650: + case 0x658: + // T versions are the same + case 0x670: + case 0x678: + { + // LDRB Rd, [Rn], -Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address - offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x652: + case 0x65a: + // T versions are the same + case 0x672: + case 0x67a: + { + // LDRB Rd, [Rn], -Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address - offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x654: + case 0x65c: + // T versions are the same + case 0x674: + case 0x67c: + { + // LDRB Rd, [Rn], -Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address - offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x656: + case 0x65e: + // T versions are the same + case 0x676: + case 0x67e: + { + // LDRB Rd, [Rn], -Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address - value; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6d0: + case 0x6d8: + // T versions are the same + case 0x6f0: + case 0x6f8: + { + // LDRB Rd, [Rn], Rm, LSL # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address + offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6d2: + case 0x6da: + // T versions are the same + case 0x6f2: + case 0x6fa: + { + // LDRB Rd, [Rn], Rm, LSR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address + offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6d4: + case 0x6dc: + // T versions are the same + case 0x6f4: + case 0x6fc: + { + // LDRB Rd, [Rn], Rm, ASR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address + offset; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x6d6: + case 0x6de: + // T versions are the same + case 0x6f6: + case 0x6fe: + { + // LDRB Rd, [Rn], Rm, ROR # + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address + value; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x750: + case 0x758: + { + // LDRB Rd, [Rn, -Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x752: + case 0x75a: + { + // LDRB Rd, [Rn, -Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x754: + case 0x75c: + { + // LDRB Rd, [Rn, -Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x756: + case 0x75e: + { + // LDRB Rd, [Rn, -Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x770: + case 0x778: + { + // LDRB Rd, [Rn, -Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x772: + case 0x77a: + { + // LDRB Rd, [Rn, -Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x774: + case 0x77c: + { + // LDRB Rd, [Rn, -Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x776: + case 0x77e: + { + // LDRB Rd, [Rn, -Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I - value; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7d0: + case 0x7d8: + { + // LDRB Rd, [Rn, Rm, LSL #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7d2: + case 0x7da: + { + // LDRB Rd, [Rn, Rm, LSR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7d4: + case 0x7dc: + { + // LDRB Rd, [Rn, Rm, ASR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7d6: + case 0x7de: + { + // LDRB Rd, [Rn, Rm, ROR #] + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + reg[dest].I = CPUReadByte(address); + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7f0: + case 0x7f8: + { + // LDRB Rd, [Rn, Rm, LSL #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int offset = reg[opcode & 15].I << ((opcode>>7)& 31); + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7f2: + case 0x7fa: + { + // LDRB Rd, [Rn, Rm, LSR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset = shift ? reg[opcode & 15].I >> shift : 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7f4: + case 0x7fc: + { + // LDRB Rd, [Rn, Rm, ASR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + int offset; + if(shift) + offset = (int)((int32)reg[opcode & 15].I >> shift); + else if(reg[opcode & 15].I & 0x80000000) + offset = 0xFFFFFFFF; + else + offset = 0; + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + offset; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; + case 0x7f6: + case 0x7fe: + { + // LDRB Rd, [Rn, Rm, ROR #]! + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int shift = (opcode >> 7) & 31; + uint32 value = reg[opcode & 15].I; + if(shift) { + ROR_VALUE; + } else { + RCR_VALUE; + } + int dest = (opcode >> 12) & 15; + int base = (opcode >> 16) & 15; + uint32 address = reg[base].I + value; + reg[dest].I = CPUReadByte(address); + if(dest != base) + reg[base].I = address; + clockTicks = 0; + if(dest == 15) { + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks += 2 + dataTicksAccessSeq32(address) + dataTicksAccessSeq32(address); + } + clockTicks += 3 + dataTicksAccesint16(address) + + codeTicksAccesint32(armNextPC); + } + break; +#define STMW_REG(val,num) \ + if(opcode & (val)) {\ + CPUWriteMemory(address, reg[(num)].I);\ + if(!offset) {\ + reg[base].I = temp;\ + clockTicks += 1 + dataTicksAccesint32(address);\ + offset = 1;\ + } else {\ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + }\ + address += 4;\ + } +#define STM_REG(val,num) \ + if(opcode & (val)) {\ + CPUWriteMemory(address, reg[(num)].I);\ + if(!offset) {\ + clockTicks += 1 + dataTicksAccesint32(address);\ + offset = 1;\ + } else {\ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + }\ + address += 4;\ + } + + CASE_16(0x800) + { + // STMDA Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp + 4) & 0xFFFFFFFC; + int offset = 0; + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + STM_REG(8192, 13); + STM_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x820) + { + // STMDA Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp+4) & 0xFFFFFFFC; + int offset = 0; + + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + STMW_REG(8192, 13); + STMW_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + reg[base].I = temp; + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x840) + { + // STMDA Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp+4) & 0xFFFFFFFC; + int offset = 0; + + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + + if(armMode == 0x11) { + STM_REG(256, R8_FIQ); + STM_REG(512, R9_FIQ); + STM_REG(1024, R10_FIQ); + STM_REG(2048, R11_FIQ); + STM_REG(4096, R12_FIQ); + } else { + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + STM_REG(8192, R13_USR); + STM_REG(16384, R14_USR); + } else { + STM_REG(8192, 13); + STM_REG(16384, 14); + } + + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x860) + { + // STMDA Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp+4) & 0xFFFFFFFC; + int offset = 0; + + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + + if(armMode == 0x11) { + STMW_REG(256, R8_FIQ); + STMW_REG(512, R9_FIQ); + STMW_REG(1024, R10_FIQ); + STMW_REG(2048, R11_FIQ); + STMW_REG(4096, R12_FIQ); + } else { + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + STMW_REG(8192, R13_USR); + STMW_REG(16384, R14_USR); + } else { + STMW_REG(8192, 13); + STMW_REG(16384, 14); + } + + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + reg[base].I = temp; + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + + CASE_16(0x880) + { + // STMIA Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = reg[base].I & 0xFFFFFFFC; + int offset = 0; + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + STM_REG(8192, 13); + STM_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x8a0) + { + // STMIA Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = reg[base].I & 0xFFFFFFFC; + int offset = 0; + uint32 temp = reg[base].I + 4*(cpuBitsSet[opcode & 0xFF] + + cpuBitsSet[(opcode >> 8) & 255]); + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + STMW_REG(8192, 13); + STMW_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) { + reg[base].I = temp; + clockTicks += 1 + dataTicksAccesint32(address); + } else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x8c0) + { + // STMIA Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = reg[base].I & 0xFFFFFFFC; + int offset = 0; + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + if(armMode == 0x11) { + STM_REG(256, R8_FIQ); + STM_REG(512, R9_FIQ); + STM_REG(1024, R10_FIQ); + STM_REG(2048, R11_FIQ); + STM_REG(4096, R12_FIQ); + } else { + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + } + if(armMode != 0x10 && armMode != 0x1f) { + STM_REG(8192, R13_USR); + STM_REG(16384, R14_USR); + } else { + STM_REG(8192, 13); + STM_REG(16384, 14); + } + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x8e0) + { + // STMIA Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = reg[base].I & 0xFFFFFFFC; + int offset = 0; + uint32 temp = reg[base].I + 4*(cpuBitsSet[opcode & 0xFF] + + cpuBitsSet[(opcode >> 8) & 255]); + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + if(armMode == 0x11) { + STMW_REG(256, R8_FIQ); + STMW_REG(512, R9_FIQ); + STMW_REG(1024, R10_FIQ); + STMW_REG(2048, R11_FIQ); + STMW_REG(4096, R12_FIQ); + } else { + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + } + if(armMode != 0x10 && armMode != 0x1f) { + STMW_REG(8192, R13_USR); + STMW_REG(16384, R14_USR); + } else { + STMW_REG(8192, 13); + STMW_REG(16384, 14); + } + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) { + reg[base].I = temp; + clockTicks += 1 + dataTicksAccesint32(address); + } else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + + CASE_16(0x900) + { + // STMDB Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + int offset = 0; + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + STM_REG(8192, 13); + STM_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x920) + { + // STMDB Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + int offset = 0; + + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + STMW_REG(8192, 13); + STMW_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + reg[base].I = temp; + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x940) + { + // STMDB Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + int offset = 0; + + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + + if(armMode == 0x11) { + STM_REG(256, R8_FIQ); + STM_REG(512, R9_FIQ); + STM_REG(1024, R10_FIQ); + STM_REG(2048, R11_FIQ); + STM_REG(4096, R12_FIQ); + } else { + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + STM_REG(8192, R13_USR); + STM_REG(16384, R14_USR); + } else { + STM_REG(8192, 13); + STM_REG(16384, 14); + } + + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x960) + { + // STMDB Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + int offset = 0; + + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + + if(armMode == 0x11) { + STMW_REG(256, R8_FIQ); + STMW_REG(512, R9_FIQ); + STMW_REG(1024, R10_FIQ); + STMW_REG(2048, R11_FIQ); + STMW_REG(4096, R12_FIQ); + } else { + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + STMW_REG(8192, R13_USR); + STMW_REG(16384, R14_USR); + } else { + STMW_REG(8192, 13); + STMW_REG(16384, 14); + } + + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + reg[base].I = temp; + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + + CASE_16(0x980) + { + // STMIB Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + int offset = 0; + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + STM_REG(8192, 13); + STM_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x9a0) + { + // STMIB Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + int offset = 0; + uint32 temp = reg[base].I + 4*(cpuBitsSet[opcode & 0xFF] + + cpuBitsSet[(opcode >> 8) & 255]); + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + STMW_REG(8192, 13); + STMW_REG(16384, 14); + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) { + reg[base].I = temp; + clockTicks += 1 + dataTicksAccesint32(address); + } else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x9c0) + { + // STMIB Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + int offset = 0; + STM_REG(1, 0); + STM_REG(2, 1); + STM_REG(4, 2); + STM_REG(8, 3); + STM_REG(16, 4); + STM_REG(32, 5); + STM_REG(64, 6); + STM_REG(128, 7); + if(armMode == 0x11) { + STM_REG(256, R8_FIQ); + STM_REG(512, R9_FIQ); + STM_REG(1024, R10_FIQ); + STM_REG(2048, R11_FIQ); + STM_REG(4096, R12_FIQ); + } else { + STM_REG(256, 8); + STM_REG(512, 9); + STM_REG(1024, 10); + STM_REG(2048, 11); + STM_REG(4096, 12); + } + if(armMode != 0x10 && armMode != 0x1f) { + STM_REG(8192, R13_USR); + STM_REG(16384, R14_USR); + } else { + STM_REG(8192, 13); + STM_REG(16384, 14); + } + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x9e0) + { + // STMIB Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + int offset = 0; + uint32 temp = reg[base].I + 4*(cpuBitsSet[opcode & 0xFF] + + cpuBitsSet[(opcode >> 8) & 255]); + STMW_REG(1, 0); + STMW_REG(2, 1); + STMW_REG(4, 2); + STMW_REG(8, 3); + STMW_REG(16, 4); + STMW_REG(32, 5); + STMW_REG(64, 6); + STMW_REG(128, 7); + if(armMode == 0x11) { + STMW_REG(256, R8_FIQ); + STMW_REG(512, R9_FIQ); + STMW_REG(1024, R10_FIQ); + STMW_REG(2048, R11_FIQ); + STMW_REG(4096, R12_FIQ); + } else { + STMW_REG(256, 8); + STMW_REG(512, 9); + STMW_REG(1024, 10); + STMW_REG(2048, 11); + STMW_REG(4096, 12); + } + if(armMode != 0x10 && armMode != 0x1f) { + STMW_REG(8192, R13_USR); + STMW_REG(16384, R14_USR); + } else { + STMW_REG(8192, 13); + STMW_REG(16384, 14); + } + if(opcode & 32768) { + CPUWriteMemory(address, reg[15].I+4); + if(!offset) { + reg[base].I = temp; + clockTicks += 1 + dataTicksAccesint32(address); + } else + clockTicks += 1 + dataTicksAccessSeq32(address); + } + clockTicks += 1 + codeTicksAccesint32(armNextPC); + } + break; + +#define LDM_REG(val,num) \ + if(opcode & (val)) {\ + reg[(num)].I = CPUReadMemory(address);\ + if(offset)\ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + else {\ + clockTicks += 1 + dataTicksAccesint32(address);\ + offset = 1;\ + }\ + address += 4;\ + } + + CASE_16(0x810) + { + // LDMDA Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp + 4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x830) + { + // LDMDA Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp + 4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + if(!(opcode & (1 << base))) + reg[base].I = temp; + } + break; + CASE_16(0x850) + { + // LDMDA Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp + 4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x870) + { + // LDMDA Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (temp + 4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + if(!(opcode & (1 << base))) + reg[base].I = temp; + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + + if(!(opcode & (1 << base))) + reg[base].I = temp; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + + CASE_16(0x890) + { + // LDMIA Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = reg[base].I & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x8b0) + { + // LDMIA Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I + + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = reg[base].I & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + if(!(opcode & (1 << base))) + reg[base].I = temp; + } + break; + CASE_16(0x8d0) + { + // LDMIA Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = reg[base].I & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x8f0) + { + // LDMIA Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I + + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = reg[base].I & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + if(!(opcode & (1 << base))) + reg[base].I = temp; + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + + if(!(opcode & (1 << base))) + reg[base].I = temp; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + + CASE_16(0x910) + { + // LDMDB Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x930) + { + // LDMDB Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + if(!(opcode & (1 << base))) + reg[base].I = temp; + } + break; + CASE_16(0x950) + { + // LDMDB Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x970) + { + // LDMDB Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I - + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = temp & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + if(!(opcode & (1 << base))) + reg[base].I = temp; + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + + if(!(opcode & (1 << base))) + reg[base].I = temp; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + + CASE_16(0x990) + { + // LDMIB Rn, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x9b0) + { + // LDMIB Rn!, {Rlist} + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I + + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + if(opcode & 32768) { + reg[15].I = CPUReadMemory(address); + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + dataTicksAccessSeq32(address); + + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + if(!(opcode & (1 << base))) + reg[base].I = temp; + } + break; + CASE_16(0x9d0) + { + // LDMIB Rn, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_16(0x9f0) + { + // LDMIB Rn!, {Rlist}^ + if (busPrefetchCount==0) + busPrefetch = busPrefetchEnable; + int base = (opcode & 0x000F0000) >> 16; + uint32 temp = reg[base].I + + 4 * (cpuBitsSet[opcode & 255] + cpuBitsSet[(opcode >> 8) & 255]); + uint32 address = (reg[base].I+4) & 0xFFFFFFFC; + clockTicks = 0; + int offset = 0; + if(opcode & 0x8000) { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + LDM_REG(8192, 13); + LDM_REG(16384, 14); + + reg[15].I = CPUReadMemory(address); + + if(!(opcode & (1 << base))) + reg[base].I = temp; + + CPUSwitchMode(reg[17].I & 0x1f, false); + if(armState) { + armNextPC = reg[15].I & 0xFFFFFFFC; + reg[15].I = armNextPC + 4; + ARM_PREFETCH; + } else { + armNextPC = reg[15].I & 0xFFFFFFFE; + reg[15].I = armNextPC + 2; + THUMB_PREFETCH; + } + } else { + LDM_REG(1, 0); + LDM_REG(2, 1); + LDM_REG(4, 2); + LDM_REG(8, 3); + LDM_REG(16, 4); + LDM_REG(32, 5); + LDM_REG(64, 6); + LDM_REG(128, 7); + + if(armMode == 0x11) { + LDM_REG(256, R8_FIQ); + LDM_REG(512, R9_FIQ); + LDM_REG(1024, R10_FIQ); + LDM_REG(2048, R11_FIQ); + LDM_REG(4096, R12_FIQ); + } else { + LDM_REG(256, 8); + LDM_REG(512, 9); + LDM_REG(1024, 10); + LDM_REG(2048, 11); + LDM_REG(4096, 12); + } + + if(armMode != 0x10 && armMode != 0x1f) { + LDM_REG(8192, R13_USR); + LDM_REG(16384, R14_USR); + } else { + LDM_REG(8192, 13); + LDM_REG(16384, 14); + } + + if(!(opcode & (1 << base))) + reg[base].I = temp; + if (!offset) + clockTicks += 1 + dataTicksAccesint32(address); + else + clockTicks += 1 + dataTicksAccessSeq32(address); + clockTicks += 1 + codeTicksAccessSeq32(armNextPC); + } + clockTicks += 2 + codeTicksAccesint32(armNextPC); + } + break; + CASE_256(0xa00) + { + // B + int offset = opcode & 0x00FFFFFF; + if(offset & 0x00800000) { + offset |= 0xFF000000; + } + offset <<= 2; + reg[15].I += offset; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks = codeTicksAccessSeq32(armNextPC) + 1; + clockTicks += 2 + codeTicksAccesint32(armNextPC) + + codeTicksAccessSeq32(armNextPC); + busPrefetchCount=0; + } + break; + CASE_256(0xb00) + { + // BL + int offset = opcode & 0x00FFFFFF; + if(offset & 0x00800000) { + offset |= 0xFF000000; + } + offset <<= 2; + reg[14].I = reg[15].I - 4; + reg[15].I += offset; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + clockTicks = codeTicksAccessSeq32(armNextPC) + 1; + clockTicks += 2 + codeTicksAccesint32(armNextPC) + + codeTicksAccessSeq32(armNextPC); + busPrefetchCount=0; + } + break; + CASE_256(0xf00) + // SWI + clockTicks = codeTicksAccessSeq32(armNextPC) + 1; + clockTicks += 2 + codeTicksAccesint32(armNextPC) + + codeTicksAccessSeq32(armNextPC); + busPrefetchCount=0; + CPUSoftwareInterrupt(opcode & 0x00FFFFFF); + + break; +#ifdef GP_SUPPORT + case 0xe11: + case 0xe13: + case 0xe15: + case 0xe17: + case 0xe19: + case 0xe1b: + case 0xe1d: + case 0xe1f: + // MRC + break; + case 0xe01: + case 0xe03: + case 0xe05: + case 0xe07: + case 0xe09: + case 0xe0b: + case 0xe0d: + case 0xe0f: + // MRC + break; +#endif + default: + CPUUndefinedException(); + break; + // END + } +} + + if (clockTicks == 0) + clockTicks = codeTicksAccessSeq32(oldArmNextPC) + 1; + + return(clockTicks); +} + +} diff --git a/libmednahawk/src/gba/arm.h b/libmednahawk/src/gba/arm.h new file mode 100644 index 0000000000..8b6a1f6743 --- /dev/null +++ b/libmednahawk/src/gba/arm.h @@ -0,0 +1,6 @@ +namespace MDFN_IEN_GBA +{ + +unsigned int RunARM(void); + +} diff --git a/libmednahawk/src/gba/bios.cpp b/libmednahawk/src/gba/bios.cpp new file mode 100644 index 0000000000..7c6735d1dd --- /dev/null +++ b/libmednahawk/src/gba/bios.cpp @@ -0,0 +1,1165 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "bios.h" +#include "GBAinline.h" +#include "Globals.h" + +#include +#include + +namespace MDFN_IEN_GBA +{ + +int16 sineTable[256] = { + (int16)0x0000, (int16)0x0192, (int16)0x0323, (int16)0x04B5, (int16)0x0645, (int16)0x07D5, (int16)0x0964, (int16)0x0AF1, + (int16)0x0C7C, (int16)0x0E05, (int16)0x0F8C, (int16)0x1111, (int16)0x1294, (int16)0x1413, (int16)0x158F, (int16)0x1708, + (int16)0x187D, (int16)0x19EF, (int16)0x1B5D, (int16)0x1CC6, (int16)0x1E2B, (int16)0x1F8B, (int16)0x20E7, (int16)0x223D, + (int16)0x238E, (int16)0x24DA, (int16)0x261F, (int16)0x275F, (int16)0x2899, (int16)0x29CD, (int16)0x2AFA, (int16)0x2C21, + (int16)0x2D41, (int16)0x2E5A, (int16)0x2F6B, (int16)0x3076, (int16)0x3179, (int16)0x3274, (int16)0x3367, (int16)0x3453, + (int16)0x3536, (int16)0x3612, (int16)0x36E5, (int16)0x37AF, (int16)0x3871, (int16)0x392A, (int16)0x39DA, (int16)0x3A82, + (int16)0x3B20, (int16)0x3BB6, (int16)0x3C42, (int16)0x3CC5, (int16)0x3D3E, (int16)0x3DAE, (int16)0x3E14, (int16)0x3E71, + (int16)0x3EC5, (int16)0x3F0E, (int16)0x3F4E, (int16)0x3F84, (int16)0x3FB1, (int16)0x3FD3, (int16)0x3FEC, (int16)0x3FFB, + (int16)0x4000, (int16)0x3FFB, (int16)0x3FEC, (int16)0x3FD3, (int16)0x3FB1, (int16)0x3F84, (int16)0x3F4E, (int16)0x3F0E, + (int16)0x3EC5, (int16)0x3E71, (int16)0x3E14, (int16)0x3DAE, (int16)0x3D3E, (int16)0x3CC5, (int16)0x3C42, (int16)0x3BB6, + (int16)0x3B20, (int16)0x3A82, (int16)0x39DA, (int16)0x392A, (int16)0x3871, (int16)0x37AF, (int16)0x36E5, (int16)0x3612, + (int16)0x3536, (int16)0x3453, (int16)0x3367, (int16)0x3274, (int16)0x3179, (int16)0x3076, (int16)0x2F6B, (int16)0x2E5A, + (int16)0x2D41, (int16)0x2C21, (int16)0x2AFA, (int16)0x29CD, (int16)0x2899, (int16)0x275F, (int16)0x261F, (int16)0x24DA, + (int16)0x238E, (int16)0x223D, (int16)0x20E7, (int16)0x1F8B, (int16)0x1E2B, (int16)0x1CC6, (int16)0x1B5D, (int16)0x19EF, + (int16)0x187D, (int16)0x1708, (int16)0x158F, (int16)0x1413, (int16)0x1294, (int16)0x1111, (int16)0x0F8C, (int16)0x0E05, + (int16)0x0C7C, (int16)0x0AF1, (int16)0x0964, (int16)0x07D5, (int16)0x0645, (int16)0x04B5, (int16)0x0323, (int16)0x0192, + (int16)0x0000, (int16)0xFE6E, (int16)0xFCDD, (int16)0xFB4B, (int16)0xF9BB, (int16)0xF82B, (int16)0xF69C, (int16)0xF50F, + (int16)0xF384, (int16)0xF1FB, (int16)0xF074, (int16)0xEEEF, (int16)0xED6C, (int16)0xEBED, (int16)0xEA71, (int16)0xE8F8, + (int16)0xE783, (int16)0xE611, (int16)0xE4A3, (int16)0xE33A, (int16)0xE1D5, (int16)0xE075, (int16)0xDF19, (int16)0xDDC3, + (int16)0xDC72, (int16)0xDB26, (int16)0xD9E1, (int16)0xD8A1, (int16)0xD767, (int16)0xD633, (int16)0xD506, (int16)0xD3DF, + (int16)0xD2BF, (int16)0xD1A6, (int16)0xD095, (int16)0xCF8A, (int16)0xCE87, (int16)0xCD8C, (int16)0xCC99, (int16)0xCBAD, + (int16)0xCACA, (int16)0xC9EE, (int16)0xC91B, (int16)0xC851, (int16)0xC78F, (int16)0xC6D6, (int16)0xC626, (int16)0xC57E, + (int16)0xC4E0, (int16)0xC44A, (int16)0xC3BE, (int16)0xC33B, (int16)0xC2C2, (int16)0xC252, (int16)0xC1EC, (int16)0xC18F, + (int16)0xC13B, (int16)0xC0F2, (int16)0xC0B2, (int16)0xC07C, (int16)0xC04F, (int16)0xC02D, (int16)0xC014, (int16)0xC005, + (int16)0xC000, (int16)0xC005, (int16)0xC014, (int16)0xC02D, (int16)0xC04F, (int16)0xC07C, (int16)0xC0B2, (int16)0xC0F2, + (int16)0xC13B, (int16)0xC18F, (int16)0xC1EC, (int16)0xC252, (int16)0xC2C2, (int16)0xC33B, (int16)0xC3BE, (int16)0xC44A, + (int16)0xC4E0, (int16)0xC57E, (int16)0xC626, (int16)0xC6D6, (int16)0xC78F, (int16)0xC851, (int16)0xC91B, (int16)0xC9EE, + (int16)0xCACA, (int16)0xCBAD, (int16)0xCC99, (int16)0xCD8C, (int16)0xCE87, (int16)0xCF8A, (int16)0xD095, (int16)0xD1A6, + (int16)0xD2BF, (int16)0xD3DF, (int16)0xD506, (int16)0xD633, (int16)0xD767, (int16)0xD8A1, (int16)0xD9E1, (int16)0xDB26, + (int16)0xDC72, (int16)0xDDC3, (int16)0xDF19, (int16)0xE075, (int16)0xE1D5, (int16)0xE33A, (int16)0xE4A3, (int16)0xE611, + (int16)0xE783, (int16)0xE8F8, (int16)0xEA71, (int16)0xEBED, (int16)0xED6C, (int16)0xEEEF, (int16)0xF074, (int16)0xF1FB, + (int16)0xF384, (int16)0xF50F, (int16)0xF69C, (int16)0xF82B, (int16)0xF9BB, (int16)0xFB4B, (int16)0xFCDD, (int16)0xFE6E +}; + +void BIOS_ArcTan() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("ArcTan: %08x (VCOUNT=%2d)\n", + reg[0].I, + VCOUNT); + } +#endif + + int32 a = -(((int32)(reg[0].I*reg[0].I)) >> 14); + int32 b = ((0xA9 * a) >> 14) + 0x390; + b = ((b * a) >> 14) + 0x91C; + b = ((b * a) >> 14) + 0xFB6; + b = ((b * a) >> 14) + 0x16AA; + b = ((b * a) >> 14) + 0x2081; + b = ((b * a) >> 14) + 0x3651; + b = ((b * a) >> 14) + 0xA2F9; + a = ((int32)reg[0].I * b) >> 16; + reg[0].I = a; + +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("ArcTan: return=%08x\n", + reg[0].I); + } +#endif +} + +void BIOS_ArcTan2() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("ArcTan2: %08x,%08x (VCOUNT=%2d)\n", + reg[0].I, + reg[1].I, + VCOUNT); + } +#endif + + int32 x = reg[0].I; + int32 y = reg[1].I; + uint32 res = 0; + if (y == 0) { + res = ((x>>16) & 0x8000); + } else { + if (x == 0) { + res = ((y>>16) & 0x8000) + 0x4000; + } else { + if ((abs(x) > abs(y)) || ((abs(x) == abs(y)) && (!((x<0) && (y<0))))) { + reg[1].I = x; + reg[0].I = y << 14; + BIOS_Div(); + BIOS_ArcTan(); + if (x < 0) + res = 0x8000 + reg[0].I; + else + res = (((y>>16) & 0x8000)<<1) + reg[0].I; + } else { + reg[0].I = x << 14; + BIOS_Div(); + BIOS_ArcTan(); + res = (0x4000 + ((y>>16) & 0x8000)) - reg[0].I; + } + } + } + reg[0].I = res; + +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("ArcTan2: return=%08x\n", + reg[0].I); + } +#endif +} + +void BIOS_BitUnPack() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("BitUnPack: %08x,%08x,%08x (VCOUNT=%2d)\n", + reg[0].I, + reg[1].I, + reg[2].I, + VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + uint32 header = reg[2].I; + + int len = CPUReadHalfWord(header); + // check address + if(((source & 0xe000000) == 0) || ((source + len) & 0xe000000) == 0) + return; + int bits = CPUReadByte(header+2); + int revbits = 8 - bits; + // uint32 value = 0; + uint32 base = CPUReadMemory(header+4); + bool addBase = (base & 0x80000000) ? true : false; + base &= 0x7fffffff; + int dataSize = CPUReadByte(header+3); + + int data = 0; + int bitwritecount = 0; + while(1) { + len -= 1; + if(len < 0) + break; + int mask = 0xff >> revbits; + uint8 b = CPUReadByte(source); + source++; + int bitcount = 0; + while(1) { + if(bitcount >= 8) + break; + uint32 d = b & mask; + uint32 temp = d >> bitcount; + if(d || addBase) { + temp += base; + } + data |= temp << bitwritecount; + bitwritecount += dataSize; + if(bitwritecount >= 32) { + CPUWriteMemory(dest, data); + dest += 4; + data = 0; + bitwritecount = 0; + } + mask <<= bits; + bitcount += bits; + } + } +} + +void BIOS_BgAffineSet() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("BgAffineSet: %08x,%08x,%08x (VCOUNT=%2d)\n", + reg[0].I, + reg[1].I, + reg[2].I, + VCOUNT); + } +#endif + + uint32 src = reg[0].I; + uint32 dest = reg[1].I; + int num = reg[2].I; + + for(int i = 0; i < num; i++) { + int32 cx = CPUReadMemory(src); + src+=4; + int32 cy = CPUReadMemory(src); + src+=4; + int16 dispx = CPUReadHalfWord(src); + src+=2; + int16 dispy = CPUReadHalfWord(src); + src+=2; + int16 rx = CPUReadHalfWord(src); + src+=2; + int16 ry = CPUReadHalfWord(src); + src+=2; + uint16 theta = CPUReadHalfWord(src)>>8; + src+=4; // keep structure alignment + int32 a = sineTable[(theta+0x40)&255]; + int32 b = sineTable[theta]; + + int16 dx = (rx * a)>>14; + int16 dmx = (rx * b)>>14; + int16 dy = (ry * b)>>14; + int16 dmy = (ry * a)>>14; + + CPUWriteHalfWord(dest, dx); + dest += 2; + CPUWriteHalfWord(dest, -dmx); + dest += 2; + CPUWriteHalfWord(dest, dy); + dest += 2; + CPUWriteHalfWord(dest, dmy); + dest += 2; + + int32 startx = cx - dx * dispx + dmx * dispy; + int32 starty = cy - dy * dispx - dmy * dispy; + + CPUWriteMemory(dest, startx); + dest += 4; + CPUWriteMemory(dest, starty); + dest += 4; + } +} + +void BIOS_CpuSet() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("CpuSet: 0x%08x,0x%08x,0x%08x (VCOUNT=%d)\n", reg[0].I, reg[1].I, + reg[2].I, VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + uint32 cnt = reg[2].I; + + if(((source & 0xe000000) == 0) || + ((source + (((cnt << 11)>>9) & 0x1fffff)) & 0xe000000) == 0) + return; + + int count = cnt & 0x1FFFFF; + + // 32-bit ? + if((cnt >> 26) & 1) { + // needed for 32-bit mode! + source &= 0xFFFFFFFC; + dest &= 0xFFFFFFFC; + // fill ? + if((cnt >> 24) & 1) { + uint32 value = (source>0x0EFFFFFF ? 0x1CAD1CAD : CPUReadMemory(source)); + while(count) { + CPUWriteMemory(dest, value); + dest += 4; + count--; + } + } else { + // copy + while(count) { + CPUWriteMemory(dest, (source>0x0EFFFFFF ? 0x1CAD1CAD : CPUReadMemory(source))); + source += 4; + dest += 4; + count--; + } + } + } else { + // 16-bit fill? + if((cnt >> 24) & 1) { + uint16 value = (source>0x0EFFFFFF ? 0x1CAD : CPUReadHalfWord(source)); + while(count) { + CPUWriteHalfWord(dest, value); + dest += 2; + count--; + } + } else { + // copy + while(count) { + CPUWriteHalfWord(dest, (source>0x0EFFFFFF ? 0x1CAD : CPUReadHalfWord(source))); + source += 2; + dest += 2; + count--; + } + } + } +} + +void BIOS_CpuFastSet() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("CpuFastSet: 0x%08x,0x%08x,0x%08x (VCOUNT=%d)\n", reg[0].I, reg[1].I, + reg[2].I, VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + uint32 cnt = reg[2].I; + + if(((source & 0xe000000) == 0) || + ((source + (((cnt << 11)>>9) & 0x1fffff)) & 0xe000000) == 0) + return; + + // needed for 32-bit mode! + source &= 0xFFFFFFFC; + dest &= 0xFFFFFFFC; + + int count = cnt & 0x1FFFFF; + + // fill? + if((cnt >> 24) & 1) { + while(count > 0) { + // BIOS always transfers 32 bytes at a time + uint32 value = (source>0x0EFFFFFF ? 0xBAFFFFFB : CPUReadMemory(source)); + for(int i = 0; i < 8; i++) { + CPUWriteMemory(dest, value); + dest += 4; + } + count -= 8; + } + } else { + // copy + while(count > 0) { + // BIOS always transfers 32 bytes at a time + for(int i = 0; i < 8; i++) { + CPUWriteMemory(dest, (source>0x0EFFFFFF ? 0xBAFFFFFB :CPUReadMemory(source))); + source += 4; + dest += 4; + } + count -= 8; + } + } +} + +void BIOS_Diff8bitUnFilterWram() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Diff8bitUnFilterWram: 0x%08x,0x%08x (VCOUNT=%d)\n", reg[0].I, + reg[1].I, VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source); + source += 4; + + if(((source & 0xe000000) == 0) || + (((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0)) + return; + + int len = header >> 8; + + uint8 data = CPUReadByte(source++); + CPUWriteByte(dest++, data); + len--; + + while(len > 0) { + uint8 diff = CPUReadByte(source++); + data += diff; + CPUWriteByte(dest++, data); + len--; + } +} + +void BIOS_Diff8bitUnFilterVram() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Diff8bitUnFilterVram: 0x%08x,0x%08x (VCOUNT=%d)\n", reg[0].I, + reg[1].I, VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + int len = header >> 8; + + uint8 data = CPUReadByte(source++); + uint16 writeData = data; + int shift = 8; + int bytes = 1; + + while(len >= 2) { + uint8 diff = CPUReadByte(source++); + data += diff; + writeData |= (data << shift); + bytes++; + shift += 8; + if(bytes == 2) { + CPUWriteHalfWord(dest, writeData); + dest += 2; + len -= 2; + bytes = 0; + writeData = 0; + shift = 0; + } + } +} + +void BIOS_Diff16bitUnFilter() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Diff16bitUnFilter: 0x%08x,0x%08x (VCOUNT=%d)\n", reg[0].I, + reg[1].I, VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + int len = header >> 8; + + uint16 data = CPUReadHalfWord(source); + source += 2; + CPUWriteHalfWord(dest, data); + dest += 2; + len -= 2; + + while(len >= 2) { + uint16 diff = CPUReadHalfWord(source); + source += 2; + data += diff; + CPUWriteHalfWord(dest, data); + dest += 2; + len -= 2; + } +} + +void BIOS_Div() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Div: 0x%08x,0x%08x (VCOUNT=%d)\n", + reg[0].I, + reg[1].I, + VCOUNT); + } +#endif + + int number = reg[0].I; + int denom = reg[1].I; + + if(denom != 0) { + reg[0].I = number / denom; + reg[1].I = number % denom; + int32 temp = (int32)reg[0].I; + reg[3].I = temp < 0 ? (uint32)-temp : (uint32)temp; + } +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Div: return=0x%08x,0x%08x,0x%08x\n", + reg[0].I, + reg[1].I, + reg[3].I); + } +#endif +} + +void BIOS_DivARM() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("DivARM: 0x%08x, (VCOUNT=%d)\n", + reg[0].I, + VCOUNT); + } +#endif + + uint32 temp = reg[0].I; + reg[0].I = reg[1].I; + reg[1].I = temp; + BIOS_Div(); +} + +void BIOS_HuffUnComp() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("HuffUnComp: 0x%08x,0x%08x (VCOUNT=%d)\n", + reg[0].I, + reg[1].I, + VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + uint8 treeSize = CPUReadByte(source++); + + uint32 treeStart = source; + + source += ((treeSize+1)<<1)-1; // minus because we already skipped one byte + + int len = header >> 8; + + uint32 mask = 0x80000000; + uint32 data = CPUReadMemory(source); + source += 4; + + int pos = 0; + uint8 rootNode = CPUReadByte(treeStart); + uint8 currentNode = rootNode; + bool writeData = false; + int byteShift = 0; + int byteCount = 0; + uint32 writeValue = 0; + + if((header & 0x0F) == 8) { + while(len > 0) { + // take left + if(pos == 0) + pos++; + else + pos += (((currentNode & 0x3F)+1)<<1); + + if(data & mask) { + // right + if(currentNode & 0x40) + writeData = true; + currentNode = CPUReadByte(treeStart+pos+1); + } else { + // left + if(currentNode & 0x80) + writeData = true; + currentNode = CPUReadByte(treeStart+pos); + } + + if(writeData) { + writeValue |= (currentNode << byteShift); + byteCount++; + byteShift += 8; + + pos = 0; + currentNode = rootNode; + writeData = false; + + if(byteCount == 4) { + byteCount = 0; + byteShift = 0; + CPUWriteMemory(dest, writeValue); + writeValue = 0; + dest += 4; + len -= 4; + } + } + mask >>= 1; + if(mask == 0) { + mask = 0x80000000; + data = CPUReadMemory(source); + source += 4; + } + } + } else { + int halfLen = 0; + int value = 0; + while(len > 0) { + // take left + if(pos == 0) + pos++; + else + pos += (((currentNode & 0x3F)+1)<<1); + + if((data & mask)) { + // right + if(currentNode & 0x40) + writeData = true; + currentNode = CPUReadByte(treeStart+pos+1); + } else { + // left + if(currentNode & 0x80) + writeData = true; + currentNode = CPUReadByte(treeStart+pos); + } + + if(writeData) { + if(halfLen == 0) + value |= currentNode; + else + value |= (currentNode<<4); + + halfLen += 4; + if(halfLen == 8) { + writeValue |= (value << byteShift); + byteCount++; + byteShift += 8; + + halfLen = 0; + value = 0; + + if(byteCount == 4) { + byteCount = 0; + byteShift = 0; + CPUWriteMemory(dest, writeValue); + dest += 4; + writeValue = 0; + len -= 4; + } + } + pos = 0; + currentNode = rootNode; + writeData = false; + } + mask >>= 1; + if(mask == 0) { + mask = 0x80000000; + data = CPUReadMemory(source); + source += 4; + } + } + } +} + +void BIOS_LZ77UnCompVram() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("LZ77UnCompVram: 0x%08x,0x%08x (VCOUNT=%d)\n", + reg[0].I, + reg[1].I, + VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + int byteCount = 0; + int byteShift = 0; + uint32 writeValue = 0; + + int len = header >> 8; + + while(len > 0) { + uint8 d = CPUReadByte(source++); + + if(d) { + for(int i = 0; i < 8; i++) { + if(d & 0x80) { + uint16 data = CPUReadByte(source++) << 8; + data |= CPUReadByte(source++); + int length = (data >> 12) + 3; + int offset = (data & 0x0FFF); + uint32 windowOffset = dest + byteCount - offset - 1; + + for(int j = 0; j < length; j++) { + writeValue |= (CPUReadByte(windowOffset++) << byteShift); + byteShift += 8; + byteCount++; + + if(byteCount == 2) { + CPUWriteHalfWord(dest, writeValue); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + len--; + if(len == 0) + return; + } + } else { + writeValue |= (CPUReadByte(source++) << byteShift); + byteShift += 8; + byteCount++; + if(byteCount == 2) { + CPUWriteHalfWord(dest, writeValue); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + len--; + if(len == 0) + return; + } + d <<= 1; + } + } else { + for(int i = 0; i < 8; i++) { + writeValue |= (CPUReadByte(source++) << byteShift); + byteShift += 8; + byteCount++; + if(byteCount == 2) { + CPUWriteHalfWord(dest, writeValue); + dest += 2; + byteShift = 0; + byteCount = 0; + writeValue = 0; + } + len--; + if(len == 0) + return; + } + } + } +} + +void BIOS_LZ77UnCompWram() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("LZ77UnCompWram: 0x%08x,0x%08x (VCOUNT=%d)\n", reg[0].I, reg[1].I, + VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + int len = header >> 8; + + while(len > 0) { + uint8 d = CPUReadByte(source++); + + if(d) { + for(int i = 0; i < 8; i++) { + if(d & 0x80) { + uint16 data = CPUReadByte(source++) << 8; + data |= CPUReadByte(source++); + int length = (data >> 12) + 3; + int offset = (data & 0x0FFF); + uint32 windowOffset = dest - offset - 1; + for(int j = 0; j < length; j++) { + CPUWriteByte(dest++, CPUReadByte(windowOffset++)); + len--; + if(len == 0) + return; + } + } else { + CPUWriteByte(dest++, CPUReadByte(source++)); + len--; + if(len == 0) + return; + } + d <<= 1; + } + } else { + for(int i = 0; i < 8; i++) { + CPUWriteByte(dest++, CPUReadByte(source++)); + len--; + if(len == 0) + return; + } + } + } +} + +void BIOS_ObjAffineSet() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("ObjAffineSet: 0x%08x,0x%08x,0x%08x,0x%08x (VCOUNT=%d)\n", + reg[0].I, + reg[1].I, + reg[2].I, + reg[3].I, + VCOUNT); + } +#endif + + uint32 src = reg[0].I; + uint32 dest = reg[1].I; + int num = reg[2].I; + int offset = reg[3].I; + + for(int i = 0; i < num; i++) { + int16 rx = CPUReadHalfWord(src); + src+=2; + int16 ry = CPUReadHalfWord(src); + src+=2; + uint16 theta = CPUReadHalfWord(src)>>8; + src+=4; // keep structure alignment + + int32 a = (int32)sineTable[(theta+0x40)&255]; + int32 b = (int32)sineTable[theta]; + + int16 dx = ((int32)rx * a)>>14; + int16 dmx = ((int32)rx * b)>>14; + int16 dy = ((int32)ry * b)>>14; + int16 dmy = ((int32)ry * a)>>14; + + CPUWriteHalfWord(dest, dx); + dest += offset; + CPUWriteHalfWord(dest, -dmx); + dest += offset; + CPUWriteHalfWord(dest, dy); + dest += offset; + CPUWriteHalfWord(dest, dmy); + dest += offset; + } +} + +void BIOS_RegisterRamReset(uint32 flags) +{ + // no need to trace here. this is only called directly from GBA.cpp + // to emulate bios initialization + + CPUUpdateRegister(0x0, 0x80); + + if(flags) { + if(flags & 0x01) { + // clear work RAM + memset(workRAM, 0, 0x40000); + } + if(flags & 0x02) { + // clear internal RAM + memset(internalRAM, 0, 0x7e00); // don't clear 0x7e00-0x7fff + } + if(flags & 0x04) { + // clear palette RAM + memset(paletteRAM, 0, 0x400); + } + if(flags & 0x08) { + // clear VRAM + memset(vram, 0, 0x18000); + } + if(flags & 0x10) { + // clean OAM + memset(oam, 0, 0x400); + } + + if(flags & 0x80) { + int i; + for(i = 0; i < 0x10; i++) + CPUUpdateRegister(0x200+i*2, 0); + + for(i = 0; i < 0xF; i++) + CPUUpdateRegister(0x4+i*2, 0); + + for(i = 0; i < 0x20; i++) + CPUUpdateRegister(0x20+i*2, 0); + + for(i = 0; i < 0x18; i++) + CPUUpdateRegister(0xb0+i*2, 0); + + CPUUpdateRegister(0x130, 0); + CPUUpdateRegister(0x20, 0x100); + CPUUpdateRegister(0x30, 0x100); + CPUUpdateRegister(0x26, 0x100); + CPUUpdateRegister(0x36, 0x100); + } + + if(flags & 0x20) { + int i; + for(i = 0; i < 8; i++) + CPUUpdateRegister(0x110+i*2, 0); + CPUUpdateRegister(0x134, 0x8000); + for(i = 0; i < 7; i++) + CPUUpdateRegister(0x140+i*2, 0); + } + + if(flags & 0x40) { + int i; + CPUWriteByte(0x4000084, 0); + CPUWriteByte(0x4000084, 0x80); + CPUWriteMemory(0x4000080, 0x880e0000); + CPUUpdateRegister(0x88, CPUReadHalfWord(0x4000088)&0x3ff); + CPUWriteByte(0x4000070, 0x70); + for(i = 0; i < 8; i++) + CPUUpdateRegister(0x90+i*2, 0); + CPUWriteByte(0x4000070, 0); + for(i = 0; i < 8; i++) + CPUUpdateRegister(0x90+i*2, 0); + CPUWriteByte(0x4000084, 0); + } + } +} + +void BIOS_RegisterRamReset() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("RegisterRamReset: 0x%08x (VCOUNT=%d)\n", + reg[0].I, + VCOUNT); + } +#endif + + BIOS_RegisterRamReset(reg[0].I); +} + +void BIOS_RLUnCompVram() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("RLUnCompVram: 0x%08x,0x%08x (VCOUNT=%d)\n", + reg[0].I, + reg[1].I, + VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source & 0xFFFFFFFC); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + int len = header >> 8; + int byteCount = 0; + int byteShift = 0; + uint32 writeValue = 0; + + while(len > 0) { + uint8 d = CPUReadByte(source++); + int l = d & 0x7F; + if(d & 0x80) { + uint8 data = CPUReadByte(source++); + l += 3; + for(int i = 0;i < l; i++) { + writeValue |= (data << byteShift); + byteShift += 8; + byteCount++; + + if(byteCount == 2) { + CPUWriteHalfWord(dest, writeValue); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + len--; + if(len == 0) + return; + } + } else { + l++; + for(int i = 0; i < l; i++) { + writeValue |= (CPUReadByte(source++) << byteShift); + byteShift += 8; + byteCount++; + if(byteCount == 2) { + CPUWriteHalfWord(dest, writeValue); + dest += 2; + byteCount = 0; + byteShift = 0; + writeValue = 0; + } + len--; + if(len == 0) + return; + } + } + } +} + +void BIOS_RLUnCompWram() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("RLUnCompWram: 0x%08x,0x%08x (VCOUNT=%d)\n", + reg[0].I, + reg[1].I, + VCOUNT); + } +#endif + + uint32 source = reg[0].I; + uint32 dest = reg[1].I; + + uint32 header = CPUReadMemory(source & 0xFFFFFFFC); + source += 4; + + if(((source & 0xe000000) == 0) || + ((source + ((header >> 8) & 0x1fffff)) & 0xe000000) == 0) + return; + + int len = header >> 8; + + while(len > 0) { + uint8 d = CPUReadByte(source++); + int l = d & 0x7F; + if(d & 0x80) { + uint8 data = CPUReadByte(source++); + l += 3; + for(int i = 0;i < l; i++) { + CPUWriteByte(dest++, data); + len--; + if(len == 0) + return; + } + } else { + l++; + for(int i = 0; i < l; i++) { + CPUWriteByte(dest++, CPUReadByte(source++)); + len--; + if(len == 0) + return; + } + } + } +} + +void BIOS_SoftReset() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("SoftReset: (VCOUNT=%d)\n", VCOUNT); + } +#endif + + armState = true; + armMode = 0x1F; + armIrqEnable = false; + C_FLAG = V_FLAG = Z_FLAG = false; + N_FLAG = 0; + + reg[13].I = 0x03007F00; + reg[14].I = 0x00000000; + reg[16].I = 0x00000000; + reg[R13_IRQ].I = 0x03007FA0; + reg[R14_IRQ].I = 0x00000000; + reg[SPSR_IRQ].I = 0x00000000; + reg[R13_SVC].I = 0x03007FE0; + reg[R14_SVC].I = 0x00000000; + reg[SPSR_SVC].I = 0x00000000; + uint8 b = internalRAM[0x7ffa]; + + memset(&internalRAM[0x7e00], 0, 0x200); + + if(b) { + armNextPC = 0x02000000; + reg[15].I = 0x02000004; + } else { + armNextPC = 0x08000000; + reg[15].I = 0x08000004; + } +} + +void BIOS_Sqrt() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Sqrt: %08x (VCOUNT=%2d)\n", + reg[0].I, + VCOUNT); + } +#endif + reg[0].I = (uint32)sqrt((double)reg[0].I); +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("Sqrt: return=%08x\n", + reg[0].I); + } +#endif +} + +void BIOS_MidiKey2Freq() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("MidiKey2Freq: WaveData=%08x mk=%08x fp=%08x\n", + reg[0].I, + reg[1].I, + reg[2].I); + } +#endif + int freq = CPUReadMemory(reg[0].I+4); + double tmp; + tmp = ((double)(180 - reg[1].I)) - ((double)reg[2].I / 256.f); + tmp = pow((double)2.f, tmp / 12.f); + reg[0].I = (int)((double)freq / tmp); + +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("MidiKey2Freq: return %08x\n", + reg[0].I); + } +#endif +} + +void BIOS_SndDriverJmpTableCopy() +{ +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_SWI) { + log("SndDriverJmpTableCopy: dest=%08x\n", + reg[0].I); + } +#endif + for(int i = 0; i < 0x24; i++) { + CPUWriteMemory(reg[0].I, 0x9c); + reg[0].I += 4; + } +} + +} diff --git a/libmednahawk/src/gba/bios.h b/libmednahawk/src/gba/bios.h new file mode 100644 index 0000000000..3dda04ea97 --- /dev/null +++ b/libmednahawk/src/gba/bios.h @@ -0,0 +1,52 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_BIOS_H +#define VBA_BIOS_H + +namespace MDFN_IEN_GBA +{ + +extern void BIOS_ArcTan(); +extern void BIOS_ArcTan2(); +extern void BIOS_BitUnPack(); +extern void BIOS_BgAffineSet(); +extern void BIOS_CpuSet(); +extern void BIOS_CpuFastSet(); +extern void BIOS_Diff8bitUnFilterWram(); +extern void BIOS_Diff8bitUnFilterVram(); +extern void BIOS_Diff16bitUnFilter(); +extern void BIOS_Div(); +extern void BIOS_DivARM(); +extern void BIOS_HuffUnComp(); +extern void BIOS_LZ77UnCompVram(); +extern void BIOS_LZ77UnCompWram(); +extern void BIOS_ObjAffineSet(); +extern void BIOS_RegisterRamReset(); +extern void BIOS_RegisterRamReset(uint32); +extern void BIOS_RLUnCompVram(); +extern void BIOS_RLUnCompWram(); +extern void BIOS_SoftReset(); +extern void BIOS_Sqrt(); +extern void BIOS_MidiKey2Freq(); +extern void BIOS_SndDriverJmpTableCopy(); + +} + +#endif // VBA_BIOS_H diff --git a/libmednahawk/src/gba/eeprom.cpp b/libmednahawk/src/gba/eeprom.cpp new file mode 100644 index 0000000000..64aa47197f --- /dev/null +++ b/libmednahawk/src/gba/eeprom.cpp @@ -0,0 +1,223 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include +#include "eeprom.h" + +namespace MDFN_IEN_GBA +{ + +extern int cpuDmaCount; + +int eepromMode = EEPROM_IDLE; +int eepromByte = 0; +int eepromBits = 0; +int eepromAddress = 0; +uint8 eepromData[0x2000]; +static uint8 eepromBuffer[16]; +bool eepromInUse = false; +int eepromSize = 512; + +#include "../state.h" + +SFORMAT eepromSaveData[] = +{ + SFVAR(eepromMode), + SFVAR(eepromByte), + SFVAR(eepromBits), + SFVAR(eepromAddress), + SFVAR(eepromInUse), + SFVAR(eepromSize), + SFARRAYN(eepromData, 0x2000, "eepromData"), + SFARRAYN(eepromBuffer, 16, "eepromBuffer"), + SFEND +}; + +bool GBA_EEPROM_SaveFile(const char *filename) +{ + if(eepromInUse) + { + if(!MDFN_DumpToFile(filename, 0, eepromData, eepromSize)) + return(0); + } + + return(1); +} + +bool GBA_EEPROM_LoadFile(const char *filename) +{ + FILE *fp = fopen(filename, "rb"); + + if(fp) + { + long size; + + fseek(fp, 0, SEEK_END); + size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + if(size == 512 || size == 0x2000) + { + if((long)fread(eepromData, 1, size, fp) == size) + { + eepromInUse = TRUE; + eepromSize = size; + fclose(fp); + return(1); + } + } + fclose(fp); + } + + return(0); +} + + +void eepromInit() +{ + memset(eepromData, 0xFF, sizeof(eepromData)); +} + +void eepromReset() +{ + eepromMode = EEPROM_IDLE; + eepromByte = 0; + eepromBits = 0; + eepromAddress = 0; + eepromInUse = false; + eepromSize = 512; +} + +int eepromRead(uint32 /* address */) +{ + switch(eepromMode) { + case EEPROM_IDLE: + case EEPROM_READADDRESS: + case EEPROM_WRITEDATA: + return 1; + case EEPROM_READDATA: + { + eepromBits++; + if(eepromBits == 4) { + eepromMode = EEPROM_READDATA2; + eepromBits = 0; + eepromByte = 0; + } + return 0; + } + case EEPROM_READDATA2: + { + int data = 0; + int address = eepromAddress << 3; + int mask = 1 << (7 - (eepromBits & 7)); + data = (eepromData[address+eepromByte] & mask) ? 1 : 0; + eepromBits++; + if((eepromBits & 7) == 0) + eepromByte++; + if(eepromBits == 0x40) + eepromMode = EEPROM_IDLE; + return data; + } + default: + return 0; + } + return 1; +} + +void eepromWrite(uint32 /* address */, uint8 value) +{ + if(cpuDmaCount == 0) + return; + int bit = value & 1; + switch(eepromMode) { + case EEPROM_IDLE: + eepromByte = 0; + eepromBits = 1; + eepromBuffer[eepromByte] = bit; + eepromMode = EEPROM_READADDRESS; + break; + case EEPROM_READADDRESS: + eepromBuffer[eepromByte] <<= 1; + eepromBuffer[eepromByte] |= bit; + eepromBits++; + if((eepromBits & 7) == 0) { + eepromByte++; + } + if(cpuDmaCount == 0x11 || cpuDmaCount == 0x51) { + if(eepromBits == 0x11) { + eepromInUse = true; + eepromSize = 0x2000; + eepromAddress = ((eepromBuffer[0] & 0x3F) << 8) | + ((eepromBuffer[1] & 0xFF)); + if(!(eepromBuffer[0] & 0x40)) { + eepromBuffer[0] = bit; + eepromBits = 1; + eepromByte = 0; + eepromMode = EEPROM_WRITEDATA; + } else { + eepromMode = EEPROM_READDATA; + eepromByte = 0; + eepromBits = 0; + } + } + } else { + if(eepromBits == 9) { + eepromInUse = true; + eepromAddress = (eepromBuffer[0] & 0x3F); + if(!(eepromBuffer[0] & 0x40)) { + eepromBuffer[0] = bit; + eepromBits = 1; + eepromByte = 0; + eepromMode = EEPROM_WRITEDATA; + } else { + eepromMode = EEPROM_READDATA; + eepromByte = 0; + eepromBits = 0; + } + } + } + break; + case EEPROM_READDATA: + case EEPROM_READDATA2: + // should we reset here? + eepromMode = EEPROM_IDLE; + break; + case EEPROM_WRITEDATA: + eepromBuffer[eepromByte] <<= 1; + eepromBuffer[eepromByte] |= bit; + eepromBits++; + if((eepromBits & 7) == 0) { + eepromByte++; + } + if(eepromBits == 0x40) { + eepromInUse = true; + // write data; + for(int i = 0; i < 8; i++) { + eepromData[(eepromAddress << 3) + i] = eepromBuffer[i]; + } + } else if(eepromBits == 0x41) { + eepromMode = EEPROM_IDLE; + eepromByte = 0; + eepromBits = 0; + } + break; + } +} + +} diff --git a/libmednahawk/src/gba/eeprom.h b/libmednahawk/src/gba/eeprom.h new file mode 100644 index 0000000000..ee0f93f2a2 --- /dev/null +++ b/libmednahawk/src/gba/eeprom.h @@ -0,0 +1,46 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_EEPROM_H +#define VBA_EEPROM_H + +namespace MDFN_IEN_GBA +{ + +bool GBA_EEPROM_SaveFile(const char *filename); +bool GBA_EEPROM_LoadFile(const char *filename); + + +extern int eepromRead(uint32 address); +extern void eepromWrite(uint32 address, uint8 value); +extern void eepromInit(); +extern void eepromReset(); +extern bool eepromInUse; +extern int eepromSize; +extern uint8 eepromData[0x2000]; + +#define EEPROM_IDLE 0 +#define EEPROM_READADDRESS 1 +#define EEPROM_READDATA 2 +#define EEPROM_READDATA2 3 +#define EEPROM_WRITEDATA 4 + +} + +#endif // VBA_EEPROM_H diff --git a/libmednahawk/src/gba/flash.cpp b/libmednahawk/src/gba/flash.cpp new file mode 100644 index 0000000000..9ddffa14de --- /dev/null +++ b/libmednahawk/src/gba/flash.cpp @@ -0,0 +1,229 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "flash.h" +#include "sram.h" + +#include + +namespace MDFN_IEN_GBA +{ + +#define FLASH_READ_ARRAY 0 +#define FLASH_CMD_1 1 +#define FLASH_CMD_2 2 +#define FLASH_AUTOSELECT 3 +#define FLASH_CMD_3 4 +#define FLASH_CMD_4 5 +#define FLASH_CMD_5 6 +#define FLASH_ERASE_COMPLETE 7 +#define FLASH_PROGRAM 8 +#define FLASH_SETBANK 9 + +uint8 *flashSaveMemory = NULL; +int flashState = FLASH_READ_ARRAY; +int flashReadState = FLASH_READ_ARRAY; +int flashSize = 0x10000; +static int flashDeviceID = 0x1b; +static int flashManufacturerID = 0x32; +static int flashBank = 0; + +int GBA_Flash_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT flashSaveData[] = + { + SFVAR(flashState), + SFVAR(flashReadState), + SFVAR(flashSize), + SFVAR(flashBank), + SFARRAYN(flashSaveMemory, 0x20000, "flashSaveMemory"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, flashSaveData, "FLSH"); + + return(ret); +}; + +bool GBA_Flash_Init(void) +{ + if(!(flashSaveMemory = (uint8 *)MDFN_malloc(0x20000, _("flash memory")))) + return(0); + + memset(flashSaveMemory, 0x00, 0x20000); + return(1); +} + +void GBA_Flash_Kill(void) +{ + if(flashSaveMemory) + { + free(flashSaveMemory); + flashSaveMemory = NULL; + } +} + +void GBA_Flash_Reset(void) +{ + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + flashBank = 0; +} + +void flashSetSize(int size) +{ + //printf("Setting flash size to %d\n", size); + flashSize = size; + if(size == 0x10000) { + flashDeviceID = 0x1b; + flashManufacturerID = 0x32; + } else { + flashDeviceID = 0x13; //0x09; + flashManufacturerID = 0x62; //0xc2; + } +} + +uint8 flashRead(uint32 address) +{ + // log("Reading %08x from %08x\n", address, reg[15].I); + // log("Current read state is %d\n", flashReadState); + address &= 0xFFFF; + + //printf("Read: %04x\n", address); + switch(flashReadState) { + case FLASH_READ_ARRAY: + return flashSaveMemory[(flashBank << 16) + address]; + case FLASH_AUTOSELECT: + switch(address & 0xFF) { + case 0: + // manufacturer ID + return flashManufacturerID; + case 1: + // device ID + return flashDeviceID; + } + break; + case FLASH_ERASE_COMPLETE: + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + return 0xFF; + }; + return 0; +} + +void flashWrite(uint32 address, uint8 byte) +{ + + //printf("Writing %02x at %08x\n", byte, address); + // log("Current state is %d\n", flashState); + address &= 0xFFFF; + switch(flashState) { + case FLASH_READ_ARRAY: + if(address == 0x5555 && byte == 0xAA) + flashState = FLASH_CMD_1; + break; + case FLASH_CMD_1: + if(address == 0x2AAA && byte == 0x55) + flashState = FLASH_CMD_2; + else + flashState = FLASH_READ_ARRAY; + break; + case FLASH_CMD_2: + if(address == 0x5555) { + if(byte == 0x90) { + flashState = FLASH_AUTOSELECT; + flashReadState = FLASH_AUTOSELECT; + } else if(byte == 0x80) { + flashState = FLASH_CMD_3; + } else if(byte == 0xF0) { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } else if(byte == 0xA0) { + flashState = FLASH_PROGRAM; + } else if(byte == 0xB0 && flashSize == 0x20000) { + flashState = FLASH_SETBANK; + } else { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } + } else { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } + break; + case FLASH_CMD_3: + if(address == 0x5555 && byte == 0xAA) { + flashState = FLASH_CMD_4; + } else { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } + break; + case FLASH_CMD_4: + if(address == 0x2AAA && byte == 0x55) { + flashState = FLASH_CMD_5; + } else { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } + break; + case FLASH_CMD_5: + if(byte == 0x30) { + // SECTOR ERASE + memset(&flashSaveMemory[(flashBank << 16) + (address & 0xF000)], + 0x00, + 0x1000); + flashReadState = FLASH_ERASE_COMPLETE; + } else if(byte == 0x10) { + // CHIP ERASE + memset(flashSaveMemory, 0, flashSize); + flashReadState = FLASH_ERASE_COMPLETE; + } else { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } + break; + case FLASH_AUTOSELECT: + if(byte == 0xF0) { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } else if(address == 0x5555 && byte == 0xAA) + flashState = FLASH_CMD_1; + else { + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + } + break; + case FLASH_PROGRAM: + flashSaveMemory[(flashBank<<16)+address] = byte; + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + break; + case FLASH_SETBANK: + if(address == 0) { + flashBank = (byte & 1); + } + flashState = FLASH_READ_ARRAY; + flashReadState = FLASH_READ_ARRAY; + break; + } +} + +} diff --git a/libmednahawk/src/gba/flash.h b/libmednahawk/src/gba/flash.h new file mode 100644 index 0000000000..2409e822c0 --- /dev/null +++ b/libmednahawk/src/gba/flash.h @@ -0,0 +1,43 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_FLASH_H +#define VBA_FLASH_H + +namespace MDFN_IEN_GBA +{ + +bool GBA_Flash_Init(void); +void GBA_Flash_Kill(void); +void GBA_Flash_Reset(void); + +extern void flashSaveGame(gzFile gzFile); +extern void flashReadGame(gzFile gzFile, int version); +extern uint8 flashRead(uint32 address); +extern void flashWrite(uint32 address, uint8 byte); +extern uint8 *flashSaveMemory; +extern void flashSetSize(int size); + +extern int flashSize; + +int GBA_Flash_StateAction(StateMem *sm, int load, int data_only); + +} + +#endif // VBA_FLASH_H diff --git a/libmednahawk/src/gba/gfx-draw.h b/libmednahawk/src/gba/gfx-draw.h new file mode 100644 index 0000000000..6101703e66 --- /dev/null +++ b/libmednahawk/src/gba/gfx-draw.h @@ -0,0 +1,233 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_GFX_DRAW_H +#define VBA_GFX_DRAW_H + +#include "Gfx.h" + +namespace MDFN_IEN_GBA +{ + +//#define SPRITE_DEBUG + +void gfxDrawTextScreen(uint16, uint16, uint16, uint32 *); +void gfxDrawRotScreen(uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + int&, int&, + int, + uint32*); +void gfxDrawRotScreen16Bit(uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + int&, int&, + int, + uint32*); +void gfxDrawRotScreen256(uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + int&, int&, + int, + uint32*); +void gfxDrawRotScreen16Bit160(uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + uint16, uint16, + int&, int&, + int, + uint32*); +void gfxDrawSprites(void); + +void gfxDrawOBJWin(void); + + + +//void gfxIncreaseBrightness(uint32 *line, int coeff); +//void gfxDecreaseBrightness(uint32 *line, int coeff); +//void gfxAlphaBlend(uint32 *ta, uint32 *tb, int ca, int cb); + +extern uint32 AlphaClampLUT[64]; +extern MDFN_ALIGN(16) uint32 line0[512]; +extern MDFN_ALIGN(16) uint32 line1[512]; +extern MDFN_ALIGN(16) uint32 line2[512]; +extern MDFN_ALIGN(16) uint32 line3[512]; +extern MDFN_ALIGN(16) uint32 lineOBJ[512]; +extern MDFN_ALIGN(16) uint32 lineOBJWin[512]; +extern MDFN_ALIGN(16) uint32 lineMix[512]; +extern bool gfxInWin0[512]; +extern bool gfxInWin1[512]; + +extern int gfxBG2Changed; +extern int gfxBG3Changed; + +extern int gfxBG2X; +extern int gfxBG2Y; +extern int gfxBG2LastX; +extern int gfxBG2LastY; +extern int gfxBG3X; +extern int gfxBG3Y; +extern int gfxBG3LastX; +extern int gfxBG3LastY; +extern int gfxLastVCOUNT; + +static INLINE void gfxClearArray(uint32 *array) +{ + MDFN_FastU32MemsetM8(array, 0x80000000, 240); + // for(int i = 0; i < 240; i++) { + // *array++ = 0x80000000; + // } +} + +// Max coefficient is 16, so... +static INLINE uint32 gfxIncreaseBrightness(uint32 color, int coeff) +{ + int r = (color & 0x1F); + int g = ((color >> 5) & 0x1F); + int b = ((color >> 10) & 0x1F); + + r = r + (((31 - r) * coeff) >> 4); + g = g + (((31 - g) * coeff) >> 4); + b = b + (((31 - b) * coeff) >> 4); + //if(r > 31) + // r = 31; + //if(g > 31) + // g = 31; + //if(b > 31) + // b = 31; + color = (color & 0xFFFF0000) | (b << 10) | (g << 5) | r; + return color; +} + +static INLINE void gfxIncreaseBrightness(uint32 *line, int coeff) +{ + for(int x = 0; x < 240; x++) { + uint32 color = *line; + int r = (color & 0x1F); + int g = ((color >> 5) & 0x1F); + int b = ((color >> 10) & 0x1F); + + r = r + (((31 - r) * coeff) >> 4); + g = g + (((31 - g) * coeff) >> 4); + b = b + (((31 - b) * coeff) >> 4); + //if(r > 31) + // r = 31; + //if(g > 31) + // g = 31; + //if(b > 31) + // b = 31; + *line++ = (color & 0xFFFF0000) | (b << 10) | (g << 5) | r; + } +} + +static INLINE uint32 gfxDecreaseBrightness(uint32 color, int coeff) +{ + int r = (color & 0x1F); + int g = ((color >> 5) & 0x1F); + int b = ((color >> 10) & 0x1F); + + r = r - ((r * coeff) >> 4); + g = g - ((g * coeff) >> 4); + b = b - ((b * coeff) >> 4); + //if(r < 0) + // r = 0; + //if(g < 0) + // g = 0; + //if(b < 0) + // b = 0; + color = (color & 0xFFFF0000) | (b << 10) | (g << 5) | r; + + return color; +} + +static INLINE void gfxDecreaseBrightness(uint32 *line, int coeff) +{ + for(int x = 0; x < 240; x++) { + uint32 color = *line; + int r = (color & 0x1F); + int g = ((color >> 5) & 0x1F); + int b = ((color >> 10) & 0x1F); + + r = r - ((r * coeff) >> 4); + g = g - ((g * coeff) >> 4); + b = b - ((b * coeff) >> 4); + //if(r < 0) + // r = 0; + //if(g < 0) + // g = 0; + //if(b < 0) + // b = 0; + *line++ = (color & 0xFFFF0000) | (b << 10) | (g << 5) | r; + } +} + +static INLINE uint32 gfxAlphaBlend(uint32 color, uint32 color2, int ca, int cb) +{ + if(color < 0x80000000) { + int r = (color & 0x1F); + int g = ((color >> 5) & 0x1F); + int b = ((color >> 10) & 0x1F); + int r0 = (color2 & 0x1F); + int g0 = ((color2 >> 5) & 0x1F); + int b0 = ((color2 >> 10) & 0x1F); + + r = AlphaClampLUT[((r * ca) >> 4) + ((r0 * cb) >> 4)]; + g = AlphaClampLUT[((g * ca) >> 4) + ((g0 * cb) >> 4)]; + b = AlphaClampLUT[((b * ca) >> 4) + ((b0 * cb) >> 4)]; + + return (color & 0xFFFF0000) | (b << 10) | (g << 5) | r; + } + return color; +} + +static INLINE void gfxAlphaBlend(uint32 *ta, uint32 *tb, int ca, int cb) +{ + for(int x = 0; x < 240; x++) { + uint32 color = *ta; + if(color < 0x80000000) { + int r = (color & 0x1F); + int g = ((color >> 5) & 0x1F); + int b = ((color >> 10) & 0x1F); + uint32 color2 = (*tb++); + int r0 = (color2 & 0x1F); + int g0 = ((color2 >> 5) & 0x1F); + int b0 = ((color2 >> 10) & 0x1F); + + r = AlphaClampLUT[((r * ca) >> 4) + ((r0 * cb) >> 4)]; + g = AlphaClampLUT[((g * ca) >> 4) + ((g0 * cb) >> 4)]; + b = AlphaClampLUT[((b * ca) >> 4) + ((b0 * cb) >> 4)]; + + *ta++ = (color & 0xFFFF0000) | (b << 10) | (g << 5) | r; + } else { + ta++; + tb++; + } + } +} + +} + +#endif // VBA_GFX_DRAW_H diff --git a/libmednahawk/src/gba/myrom.h b/libmednahawk/src/gba/myrom.h new file mode 100644 index 0000000000..5bf75c8da6 --- /dev/null +++ b/libmednahawk/src/gba/myrom.h @@ -0,0 +1,174 @@ +0xEA000006, +0xEA000093, +0xEA000006, +0x00000000, +0x00000000, +0x00000000, +0xEA000088, +0x00000000, +0xE3A00302, +0xE1A0F000, +0xE92D5800, +0xE55EC002, +0xE28FB03C, +0xE79BC10C, +0xE14FB000, +0xE92D0800, +0xE20BB080, +0xE38BB01F, +0xE129F00B, +0xE92D4004, +0xE1A0E00F, +0xE12FFF1C, +0xE8BD4004, +0xE3A0C0D3, +0xE129F00C, +0xE8BD0800, +0xE169F00B, +0xE8BD5800, +0xE1B0F00E, +0x0000009C, +0x0000009C, +0x0000009C, +0x0000009C, +0x000001F8, +0x000001F0, +0x000000AC, +0x000000A0, +0x000000FC, +0x00000168, +0xE12FFF1E, +0xE1A03000, +0xE1A00001, +0xE1A01003, +0xE2113102, +0x42611000, +0xE033C040, +0x22600000, +0xE1B02001, +0xE15200A0, +0x91A02082, +0x3AFFFFFC, +0xE1500002, +0xE0A33003, +0x20400002, +0xE1320001, +0x11A020A2, +0x1AFFFFF9, +0xE1A01000, +0xE1A00003, +0xE1B0C08C, +0x22600000, +0x42611000, +0xE12FFF1E, +0xE92D0010, +0xE1A0C000, +0xE3A01001, +0xE1500001, +0x81A000A0, +0x81A01081, +0x8AFFFFFB, +0xE1A0000C, +0xE1A04001, +0xE3A03000, +0xE1A02001, +0xE15200A0, +0x91A02082, +0x3AFFFFFC, +0xE1500002, +0xE0A33003, +0x20400002, +0xE1320001, +0x11A020A2, +0x1AFFFFF9, +0xE0811003, +0xE1B010A1, +0xE1510004, +0x3AFFFFEE, +0xE1A00004, +0xE8BD0010, +0xE12FFF1E, +0xE0010090, +0xE1A01741, +0xE2611000, +0xE3A030A9, +0xE0030391, +0xE1A03743, +0xE2833E39, +0xE0030391, +0xE1A03743, +0xE2833C09, +0xE283301C, +0xE0030391, +0xE1A03743, +0xE2833C0F, +0xE28330B6, +0xE0030391, +0xE1A03743, +0xE2833C16, +0xE28330AA, +0xE0030391, +0xE1A03743, +0xE2833A02, +0xE2833081, +0xE0030391, +0xE1A03743, +0xE2833C36, +0xE2833051, +0xE0030391, +0xE1A03743, +0xE2833CA2, +0xE28330F9, +0xE0000093, +0xE1A00840, +0xE12FFF1E, +0xE3A00001, +0xE3A01001, +0xE92D4010, +0xE3A03000, +0xE3A04001, +0xE3500000, +0x1B000004, +0xE5CC3301, +0xEB000002, +0x0AFFFFFC, +0xE8BD4010, +0xE12FFF1E, +0xE3A0C301, +0xE5CC3208, +0xE15C20B8, +0xE0110002, +0x10222000, +0x114C20B8, +0xE5CC4208, +0xE12FFF1E, +0xE92D500F, +0xE3A00301, +0xE1A0E00F, +0xE510F004, +0xE8BD500F, +0xE25EF004, +0xE59FD044, +0xE92D5000, +0xE14FC000, +0xE10FE000, +0xE92D5000, +0xE3A0C302, +0xE5DCE09C, +0xE35E00A5, +0x1A000004, +0x05DCE0B4, +0x021EE080, +0xE28FE004, +0x159FF018, +0x059FF018, +0xE59FD018, +0xE8BD5000, +0xE169F00C, +0xE8BD5000, +0xE25EF004, +0x03007FF0, +0x09FE2000, +0x09FFC000, +0x03007FE0 + diff --git a/libmednahawk/src/gba/sram.cpp b/libmednahawk/src/gba/sram.cpp new file mode 100644 index 0000000000..da490cccbc --- /dev/null +++ b/libmednahawk/src/gba/sram.cpp @@ -0,0 +1,37 @@ +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "Globals.h" +#include "flash.h" +#include "sram.h" + +namespace MDFN_IEN_GBA +{ + +uint8 sramRead(uint32 address) +{ + return flashSaveMemory[address & 0xFFFF]; +} + +void sramWrite(uint32 address, uint8 byte) +{ + flashSaveMemory[address & 0xFFFF] = byte; +} + +} diff --git a/libmednahawk/src/gba/sram.h b/libmednahawk/src/gba/sram.h new file mode 100644 index 0000000000..c0acb5b9b3 --- /dev/null +++ b/libmednahawk/src/gba/sram.h @@ -0,0 +1,31 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2004 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef VBA_SRAM_H +#define VBA_SRAM_H + +namespace MDFN_IEN_GBA +{ + +extern uint8 sramRead(uint32 address); +extern void sramWrite(uint32 address, uint8 byte); + +} + +#endif // VBA_SRAM_H diff --git a/libmednahawk/src/gba/thumb.cpp b/libmednahawk/src/gba/thumb.cpp new file mode 100644 index 0000000000..db3efe34e9 --- /dev/null +++ b/libmednahawk/src/gba/thumb.cpp @@ -0,0 +1,2115 @@ +// -*- C++ -*- +// VisualBoyAdvance - Nintendo Gameboy/GameboyAdvance (TM) emulator. +// Copyright (C) 1999-2003 Forgotten +// Copyright (C) 2005 Forgotten and the VBA development team + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2, or(at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "GBA.h" +#include "GBAinline.h" +#include "Globals.h" + +namespace MDFN_IEN_GBA +{ + +unsigned int RunTHUMB(void) +{ +#define NEG(i) ((i) >> 31) +#define POS(i) ((~(i)) >> 31) +#define ADDCARRY(a, b, c) \ + C_FLAG = ((NEG(a) & NEG(b)) |\ + (NEG(a) & POS(c)) |\ + (NEG(b) & POS(c))) ? true : false; +#define ADDOVERFLOW(a, b, c) \ + V_FLAG = ((NEG(a) & NEG(b) & POS(c)) |\ + (POS(a) & POS(b) & NEG(c))) ? true : false; +#define SUBCARRY(a, b, c) \ + C_FLAG = ((NEG(a) & POS(b)) |\ + (NEG(a) & POS(c)) |\ + (POS(b) & POS(c))) ? true : false; +#define SUBOVERFLOW(a, b, c)\ + V_FLAG = ((NEG(a) & POS(b) & POS(c)) |\ + (POS(a) & NEG(b) & NEG(c))) ? true : false; +#define ADD_RD_RS_RN \ + {\ + uint32 lhs = reg[source].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define ADD_RD_RS_O3 \ + {\ + uint32 lhs = reg[source].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define ADD_RN_O8(d) \ + {\ + uint32 lhs = reg[(d)].I;\ + uint32 rhs = (opcode & 255);\ + uint32 res = lhs + rhs;\ + reg[(d)].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define CMN_RD_RS \ + {\ + uint32 lhs = reg[dest].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define ADC_RD_RS \ + {\ + uint32 lhs = reg[dest].I;\ + uint32 rhs = value;\ + uint32 res = lhs + rhs + (uint32)C_FLAG;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + ADDCARRY(lhs, rhs, res);\ + ADDOVERFLOW(lhs, rhs, res);\ + } +#define SUB_RD_RS_RN \ + {\ + uint32 lhs = reg[source].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define SUB_RD_RS_O3 \ + {\ + uint32 lhs = reg[source].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define SUB_RN_O8(d) \ + {\ + uint32 lhs = reg[(d)].I;\ + uint32 rhs = (opcode & 255);\ + uint32 res = lhs - rhs;\ + reg[(d)].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define CMP_RN_O8(d) \ + {\ + uint32 lhs = reg[(d)].I;\ + uint32 rhs = (opcode & 255);\ + uint32 res = lhs - rhs;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define SBC_RD_RS \ + {\ + uint32 lhs = reg[dest].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs - !((uint32)C_FLAG);\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } +#define LSL_RD_RM_I5 \ + {\ + C_FLAG = (reg[source].I >> (32 - shift)) & 1 ? true : false;\ + value = reg[source].I << shift;\ + } +#define LSL_RD_RS \ + {\ + C_FLAG = (reg[dest].I >> (32 - value)) & 1 ? true : false;\ + value = reg[dest].I << value;\ + } +#define LSR_RD_RM_I5 \ + {\ + C_FLAG = (reg[source].I >> (shift - 1)) & 1 ? true : false;\ + value = reg[source].I >> shift;\ + } +#define LSR_RD_RS \ + {\ + C_FLAG = (reg[dest].I >> (value - 1)) & 1 ? true : false;\ + value = reg[dest].I >> value;\ + } +#define ASR_RD_RM_I5 \ + {\ + C_FLAG = ((int32)reg[source].I >> (int)(shift - 1)) & 1 ? true : false;\ + value = (int32)reg[source].I >> (int)shift;\ + } +#define ASR_RD_RS \ + {\ + C_FLAG = ((int32)reg[dest].I >> (int)(value - 1)) & 1 ? true : false;\ + value = (int32)reg[dest].I >> (int)value;\ + } +#define ROR_RD_RS \ + {\ + C_FLAG = (reg[dest].I >> (value - 1)) & 1 ? true : false;\ + value = ((reg[dest].I << (32 - value)) |\ + (reg[dest].I >> value));\ + } +#define NEG_RD_RS \ + {\ + uint32 lhs = reg[source].I;\ + uint32 rhs = 0;\ + uint32 res = rhs - lhs;\ + reg[dest].I = res;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(rhs, lhs, res);\ + SUBOVERFLOW(rhs, lhs, res);\ + } +#define CMP_RD_RS \ + {\ + uint32 lhs = reg[dest].I;\ + uint32 rhs = value;\ + uint32 res = lhs - rhs;\ + Z_FLAG = (res == 0) ? true : false;\ + N_FLAG = NEG(res) ? true : false;\ + SUBCARRY(lhs, rhs, res);\ + SUBOVERFLOW(lhs, rhs, res);\ + } + +uint32 opcode = cpuPrefetch[0]; +cpuPrefetch[0] = cpuPrefetch[1]; + +busPrefetch = false; + if (busPrefetchCount<0) + busPrefetchCount=0; + if (busPrefetchCount>16) + busPrefetchCount=8; + +unsigned int clockTicks = codeTicksAccessSeq16(armNextPC)+1; + +armNextPC = reg[15].I; +reg[15].I += 2; +THUMB_PREFETCH_NEXT; + +switch(opcode >> 8) { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + { + // LSL Rd, Rm, #Imm 5 + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + int shift = (opcode >> 6) & 0x1f; + uint32 value; + + if(shift) { + LSL_RD_RM_I5; + } else { + value = reg[source].I; + } + reg[dest].I = value; + // C_FLAG set above + N_FLAG = (value & 0x80000000 ? true : false); + Z_FLAG = (value ? false : true); + } + break; + case 0x08: + case 0x09: + case 0x0a: + case 0x0b: + case 0x0c: + case 0x0d: + case 0x0e: + case 0x0f: + { + // LSR Rd, Rm, #Imm 5 + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + int shift = (opcode >> 6) & 0x1f; + uint32 value; + + if(shift) { + LSR_RD_RM_I5; + } else { + C_FLAG = reg[source].I & 0x80000000 ? true : false; + value = 0; + } + reg[dest].I = value; + // C_FLAG set above + N_FLAG = (value & 0x80000000 ? true : false); + Z_FLAG = (value ? false : true); + } + break; + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + { + // ASR Rd, Rm, #Imm 5 + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + int shift = (opcode >> 6) & 0x1f; + uint32 value; + + if(shift) { + ASR_RD_RM_I5; + } else { + if(reg[source].I & 0x80000000) { + value = 0xFFFFFFFF; + C_FLAG = true; + } else { + value = 0; + C_FLAG = false; + } + } + reg[dest].I = value; + // C_FLAG set above + N_FLAG = (value & 0x80000000 ? true : false); + Z_FLAG = (value ? false :true); + } + break; + case 0x18: + case 0x19: + { + // ADD Rd, Rs, Rn + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + uint32 value = reg[(opcode>>6)& 0x07].I; + ADD_RD_RS_RN; + } + break; + case 0x1a: + case 0x1b: + { + // SUB Rd, Rs, Rn + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + uint32 value = reg[(opcode>>6)& 0x07].I; + SUB_RD_RS_RN; + } + break; + case 0x1c: + case 0x1d: + { + // ADD Rd, Rs, #Offset3 + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + uint32 value = (opcode >> 6) & 7; + ADD_RD_RS_O3; + } + break; + case 0x1e: + case 0x1f: + { + // SUB Rd, Rs, #Offset3 + int dest = opcode & 0x07; + int source = (opcode >> 3) & 0x07; + uint32 value = (opcode >> 6) & 7; + SUB_RD_RS_O3; + } + break; + case 0x20: + // MOV R0, #Offset8 + reg[0].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[0].I ? false : true); + break; + case 0x21: + // MOV R1, #Offset8 + reg[1].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[1].I ? false : true); + break; + case 0x22: + // MOV R2, #Offset8 + reg[2].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[2].I ? false : true); + break; + case 0x23: + // MOV R3, #Offset8 + reg[3].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[3].I ? false : true); + break; + case 0x24: + // MOV R4, #Offset8 + reg[4].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[4].I ? false : true); + break; + case 0x25: + // MOV R5, #Offset8 + reg[5].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[5].I ? false : true); + break; + case 0x26: + // MOV R6, #Offset8 + reg[6].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[6].I ? false : true); + break; + case 0x27: + // MOV R7, #Offset8 + reg[7].I = opcode & 255; + N_FLAG = false; + Z_FLAG = (reg[7].I ? false : true); + break; + case 0x28: + // CMP R0, #Offset8 + CMP_RN_O8(0); + break; + case 0x29: + // CMP R1, #Offset8 + CMP_RN_O8(1); + break; + case 0x2a: + // CMP R2, #Offset8 + CMP_RN_O8(2); + break; + case 0x2b: + // CMP R3, #Offset8 + CMP_RN_O8(3); + break; + case 0x2c: + // CMP R4, #Offset8 + CMP_RN_O8(4); + break; + case 0x2d: + // CMP R5, #Offset8 + CMP_RN_O8(5); + break; + case 0x2e: + // CMP R6, #Offset8 + CMP_RN_O8(6); + break; + case 0x2f: + // CMP R7, #Offset8 + CMP_RN_O8(7); + break; + case 0x30: + // ADD R0,#Offset8 + ADD_RN_O8(0); + break; + case 0x31: + // ADD R1,#Offset8 + ADD_RN_O8(1); + break; + case 0x32: + // ADD R2,#Offset8 + ADD_RN_O8(2); + break; + case 0x33: + // ADD R3,#Offset8 + ADD_RN_O8(3); + break; + case 0x34: + // ADD R4,#Offset8 + ADD_RN_O8(4); + break; + case 0x35: + // ADD R5,#Offset8 + ADD_RN_O8(5); + break; + case 0x36: + // ADD R6,#Offset8 + ADD_RN_O8(6); + break; + case 0x37: + // ADD R7,#Offset8 + ADD_RN_O8(7); + break; + case 0x38: + // SUB R0,#Offset8 + SUB_RN_O8(0); + break; + case 0x39: + // SUB R1,#Offset8 + SUB_RN_O8(1); + break; + case 0x3a: + // SUB R2,#Offset8 + SUB_RN_O8(2); + break; + case 0x3b: + // SUB R3,#Offset8 + SUB_RN_O8(3); + break; + case 0x3c: + // SUB R4,#Offset8 + SUB_RN_O8(4); + break; + case 0x3d: + // SUB R5,#Offset8 + SUB_RN_O8(5); + break; + case 0x3e: + // SUB R6,#Offset8 + SUB_RN_O8(6); + break; + case 0x3f: + // SUB R7,#Offset8 + SUB_RN_O8(7); + break; + case 0x40: + switch((opcode >> 6) & 3) { + case 0x00: + { + // AND Rd, Rs + int dest = opcode & 7; + reg[dest].I &= reg[(opcode >> 3)&7].I; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + Z_FLAG = reg[dest].I ? false : true; +#ifdef BKPT_SUPPORT +#define THUMB_CONSOLE_OUTPUT(a,b) \ + if((opcode == 0x4000) && (reg[0].I == 0xC0DED00D)) {\ + extern void (*dbgOutput)(char *, uint32);\ + dbgOutput((a), (b));\ + } +#else +#define THUMB_CONSOLE_OUTPUT(a,b) +#endif + THUMB_CONSOLE_OUTPUT(NULL, reg[2].I); + } + break; + case 0x01: + // EOR Rd, Rs + { + int dest = opcode & 7; + reg[dest].I ^= reg[(opcode >> 3)&7].I; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + Z_FLAG = reg[dest].I ? false : true; + } + break; + case 0x02: + // LSL Rd, Rs + { + int dest = opcode & 7; + uint32 value = reg[(opcode >> 3)&7].B.B0; + if(value) { + if(value == 32) { + value = 0; + C_FLAG = (reg[dest].I & 1 ? true : false); + } else if(value < 32) { + LSL_RD_RS; + } else { + value = 0; + C_FLAG = false; + } + reg[dest].I = value; + } + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + Z_FLAG = reg[dest].I ? false : true; + clockTicks = codeTicksAccesint16(armNextPC)+2; + } + break; + case 0x03: + { + // LSR Rd, Rs + int dest = opcode & 7; + uint32 value = reg[(opcode >> 3)&7].B.B0; + if(value) { + if(value == 32) { + value = 0; + C_FLAG = (reg[dest].I & 0x80000000 ? true : false); + } else if(value < 32) { + LSR_RD_RS; + } else { + value = 0; + C_FLAG = false; + } + reg[dest].I = value; + } + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + Z_FLAG = reg[dest].I ? false : true; + clockTicks = codeTicksAccesint16(armNextPC)+2; + } + break; + } + break; + case 0x41: + switch((opcode >> 6) & 3) { + case 0x00: + { + // ASR Rd, Rs + int dest = opcode & 7; + uint32 value = reg[(opcode >> 3)&7].B.B0; + // ASR + if(value) { + if(value < 32) { + ASR_RD_RS; + reg[dest].I = value; + } else { + if(reg[dest].I & 0x80000000){ + reg[dest].I = 0xFFFFFFFF; + C_FLAG = true; + } else { + reg[dest].I = 0x00000000; + C_FLAG = false; + } + } + } + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + Z_FLAG = reg[dest].I ? false : true; + clockTicks = codeTicksAccesint16(armNextPC)+2; + } + break; + case 0x01: + { + // ADC Rd, Rs + int dest = opcode & 0x07; + uint32 value = reg[(opcode >> 3)&7].I; + // ADC + ADC_RD_RS; + } + break; + case 0x02: + { + // SBC Rd, Rs + int dest = opcode & 0x07; + uint32 value = reg[(opcode >> 3)&7].I; + + // SBC + SBC_RD_RS; + } + break; + case 0x03: + // ROR Rd, Rs + { + int dest = opcode & 7; + uint32 value = reg[(opcode >> 3)&7].B.B0; + + if(value) { + value = value & 0x1f; + if(value == 0) { + C_FLAG = (reg[dest].I & 0x80000000 ? true : false); + } else { + ROR_RD_RS; + reg[dest].I = value; + } + } + clockTicks = codeTicksAccesint16(armNextPC)+2; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + Z_FLAG = reg[dest].I ? false : true; + } + break; + } + break; + case 0x42: + switch((opcode >> 6) & 3) { + case 0x00: + { + // TST Rd, Rs + uint32 value = reg[opcode & 7].I & reg[(opcode >> 3) & 7].I; + N_FLAG = value & 0x80000000 ? true : false; + Z_FLAG = value ? false : true; + } + break; + case 0x01: + { + // NEG Rd, Rs + int dest = opcode & 7; + int source = (opcode >> 3) & 7; + NEG_RD_RS; + } + break; + case 0x02: + { + // CMP Rd, Rs + int dest = opcode & 7; + uint32 value = reg[(opcode >> 3)&7].I; + CMP_RD_RS; + } + break; + case 0x03: + { + // CMN Rd, Rs + int dest = opcode & 7; + uint32 value = reg[(opcode >> 3)&7].I; + // CMN + CMN_RD_RS; + } + break; + } + break; + case 0x43: + switch((opcode >> 6) & 3) { + case 0x00: + { + // ORR Rd, Rs + int dest = opcode & 7; + reg[dest].I |= reg[(opcode >> 3) & 7].I; + Z_FLAG = reg[dest].I ? false : true; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + } + break; + case 0x01: + { + // MUL Rd, Rs + clockTicks = codeTicksAccesint16(armNextPC)+2; + int dest = opcode & 7; + uint32 rm = reg[dest].I; + reg[dest].I = reg[(opcode >> 3) & 7].I * rm; + if (((int32)rm) < 0) + rm = ~rm; + if ((rm & 0xFFFFFF00) == 0) + clockTicks += 0; + else if ((rm & 0xFFFF0000) == 0) + clockTicks += 1; + else if ((rm & 0xFF000000) == 0) + clockTicks += 2; + else + clockTicks += 3; + busPrefetchCount += clockTicks - codeTicksAccesint16(armNextPC) -1; + Z_FLAG = reg[dest].I ? false : true; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + } + break; + case 0x02: + { + // BIC Rd, Rs + int dest = opcode & 7; + reg[dest].I &= (~reg[(opcode >> 3) & 7].I); + Z_FLAG = reg[dest].I ? false : true; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + } + break; + case 0x03: + { + // MVN Rd, Rs + int dest = opcode & 7; + reg[dest].I = ~reg[(opcode >> 3) & 7].I; + Z_FLAG = reg[dest].I ? false : true; + N_FLAG = reg[dest].I & 0x80000000 ? true : false; + } + break; + } + break; + case 0x44: + { + int dest = opcode & 7; + int base = (opcode >> 3) & 7; + switch((opcode >> 6)& 3) { + default: + goto unknown_thumb; + case 1: + // ADD Rd, Hs + reg[dest].I += reg[base+8].I; + break; + case 2: + // ADD Hd, Rs + reg[dest+8].I += reg[base].I; + if(dest == 7) { + reg[15].I &= 0xFFFFFFFE; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + clockTicks += clockTicks+codeTicksAccesint16(armNextPC)+1; + } + break; + case 3: + // ADD Hd, Hs + reg[dest+8].I += reg[base+8].I; + if(dest == 7) { + reg[15].I &= 0xFFFFFFFE; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + clockTicks += clockTicks+codeTicksAccesint16(armNextPC)+1; + } + break; + } + } + break; + case 0x45: + { + int dest = opcode & 7; + int base = (opcode >> 3) & 7; + uint32 value; + switch((opcode >> 6) & 3) { + case 0: + // CMP Rd, Hs + value = reg[base].I; + CMP_RD_RS; + break; + case 1: + // CMP Rd, Hs + value = reg[base+8].I; + CMP_RD_RS; + break; + case 2: + // CMP Hd, Rs + value = reg[base].I; + dest += 8; + CMP_RD_RS; + break; + case 3: + // CMP Hd, Hs + value = reg[base+8].I; + dest += 8; + CMP_RD_RS; + break; + } + } + break; + case 0x46: + { + int dest = opcode & 7; + int base = (opcode >> 3) & 7; + switch((opcode >> 6) & 3) { + case 0: + // this form should not be used... + // MOV Rd, Rs + reg[dest].I = reg[base].I; + break; + case 1: + // MOV Rd, Hs + reg[dest].I = reg[base+8].I; + break; + case 2: + // MOV Hd, Rs + reg[dest+8].I = reg[base].I; + if(dest == 7) { + reg[15].I &= 0xFFFFFFFE; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + clockTicks += clockTicks+codeTicksAccesint16(armNextPC)+1; + } + break; + case 3: + // MOV Hd, Hs + reg[dest+8].I = reg[base+8].I; + if(dest == 7) { + reg[15].I &= 0xFFFFFFFE; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + clockTicks += clockTicks+codeTicksAccesint16(armNextPC)+1; + } + break; + } + } + break; + case 0x47: + { + int base = (opcode >> 3) & 7; + switch((opcode >>6) & 3) { + case 0: + // BX Rs + reg[15].I = (reg[base].I) & 0xFFFFFFFE; + if(reg[base].I & 1) { + armState = false; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + } else { + armState = true; + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + } + busPrefetchCount=0; + clockTicks += clockTicks+codeTicksAccesint16(armNextPC)+1; + break; + case 1: + // BX Hs + reg[15].I = (reg[8+base].I) & 0xFFFFFFFE; + if(reg[8+base].I & 1) { + armState = false; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + } else { + armState = true; + reg[15].I &= 0xFFFFFFFC; + armNextPC = reg[15].I; + reg[15].I += 4; + ARM_PREFETCH; + } + busPrefetchCount=0; + clockTicks += clockTicks+codeTicksAccesint16(armNextPC)+1; + break; + default: + goto unknown_thumb; + } + } + break; + case 0x48: + // LDR R0,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[0].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x49: + // LDR R1,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[1].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x4a: + // LDR R2,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[2].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x4b: + // LDR R3,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[3].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x4c: + // LDR R4,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[4].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x4d: + // LDR R5,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[5].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x4e: + // LDR R6,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[6].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x4f: + // LDR R7,[PC, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = (reg[15].I & 0xFFFFFFFC) + ((opcode & 0xFF) << 2); + reg[7].I = CPUReadMemoryQuick(address); + busPrefetchCount=0; + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x50: + case 0x51: + // STR Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + CPUWriteMemory(address, + reg[opcode & 7].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address) +2; + } + break; + case 0x52: + case 0x53: + // STRH Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + CPUWriteHalfWord(address, + reg[opcode&7].W.W0); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint16(address) +2; + } + break; + case 0x54: + case 0x55: + // STRB Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode >>6)&7].I; + CPUWriteByte(address, + reg[opcode & 7].B.B0); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint16(address) +2; + } + break; + case 0x56: + case 0x57: + // LDSB Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + reg[opcode&7].I = (int8)CPUReadByte(address); + clockTicks = 3 + dataTicksAccesint16(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x58: + case 0x59: + // LDR Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + reg[opcode&7].I = CPUReadMemory(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x5a: + case 0x5b: + // LDRH Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + reg[opcode&7].I = CPUReadHalfWord(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x5c: + case 0x5d: + // LDRB Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + reg[opcode&7].I = CPUReadByte(address); + clockTicks = 3 + dataTicksAccesint16(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x5e: + case 0x5f: + // LDSH Rd, [Rs, Rn] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + reg[(opcode>>6)&7].I; + reg[opcode&7].I = (int16)CPUReadHalfWordSigned(address); + clockTicks = 3 + dataTicksAccesint16(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + // STR Rd, [Rs, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + (((opcode>>6)&31)<<2); + CPUWriteMemory(address, + reg[opcode&7].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x68: + case 0x69: + case 0x6a: + case 0x6b: + case 0x6c: + case 0x6d: + case 0x6e: + case 0x6f: + // LDR Rd, [Rs, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + (((opcode>>6)&31)<<2); + reg[opcode&7].I = CPUReadMemory(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + // STRB Rd, [Rs, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + (((opcode>>6)&31)); + CPUWriteByte(address, + reg[opcode&7].B.B0); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint16(address)+2; + } + break; + case 0x78: + case 0x79: + case 0x7a: + case 0x7b: + case 0x7c: + case 0x7d: + case 0x7e: + case 0x7f: + // LDRB Rd, [Rs, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + (((opcode>>6)&31)); + reg[opcode&7].I = CPUReadByte(address); + clockTicks = 3 + dataTicksAccesint16(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + // STRH Rd, [Rs, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + (((opcode>>6)&31)<<1); + CPUWriteHalfWord(address, + reg[opcode&7].W.W0); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint16(address)+2; + } + break; + case 0x88: + case 0x89: + case 0x8a: + case 0x8b: + case 0x8c: + case 0x8d: + case 0x8e: + case 0x8f: + // LDRH Rd, [Rs, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[(opcode>>3)&7].I + (((opcode>>6)&31)<<1); + reg[opcode&7].I = CPUReadHalfWord(address); + clockTicks = 3 + dataTicksAccesint16(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x90: + // STR R0, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[0].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x91: + // STR R1, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[1].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x92: + // STR R2, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[2].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x93: + // STR R3, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[3].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x94: + // STR R4, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[4].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x95: + // STR R5, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[5].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x96: + // STR R6, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[6].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x97: + // STR R7, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + CPUWriteMemory(address, reg[7].I); + clockTicks = codeTicksAccesint16(armNextPC) + + dataTicksAccesint32(address)+2; + } + break; + case 0x98: + // LDR R0, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[0].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x99: + // LDR R1, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[1].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x9a: + // LDR R2, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[2].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x9b: + // LDR R3, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[3].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x9c: + // LDR R4, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[4].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x9d: + // LDR R5, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[5].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x9e: + // LDR R6, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[6].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0x9f: + // LDR R7, [SP, #Imm] + { + busPrefetch = busPrefetchEnable; + uint32 address = reg[13].I + ((opcode&255)<<2); + reg[7].I = CPUReadMemoryQuick(address); + clockTicks = 3 + dataTicksAccesint32(address) + + codeTicksAccesint16(armNextPC); + } + break; + case 0xa0: + // ADD R0, PC, Imm + reg[0].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa1: + // ADD R1, PC, Imm + reg[1].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa2: + // ADD R2, PC, Imm + reg[2].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa3: + // ADD R3, PC, Imm + reg[3].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa4: + // ADD R4, PC, Imm + reg[4].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa5: + // ADD R5, PC, Imm + reg[5].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa6: + // ADD R6, PC, Imm + reg[6].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa7: + // ADD R7, PC, Imm + reg[7].I = (reg[15].I & 0xFFFFFFFC) + ((opcode&255)<<2); + break; + case 0xa8: + // ADD R0, SP, Imm + reg[0].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xa9: + // ADD R1, SP, Imm + reg[1].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xaa: + // ADD R2, SP, Imm + reg[2].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xab: + // ADD R3, SP, Imm + reg[3].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xac: + // ADD R4, SP, Imm + reg[4].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xad: + // ADD R5, SP, Imm + reg[5].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xae: + // ADD R6, SP, Imm + reg[6].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xaf: + // ADD R7, SP, Imm + reg[7].I = reg[13].I + ((opcode&255)<<2); + break; + case 0xb0: + { + // ADD SP, Imm + int offset = (opcode & 127) << 2; + if(opcode & 0x80) + offset = -offset; + reg[13].I += offset; + } + break; +#define PUSH_REG(val, r) \ + if(opcode & (val)) {\ + CPUWriteMemory(address, reg[(r)].I);\ + if(offset)\ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + else\ + clockTicks += 1 + dataTicksAccesint32(address);\ + offset = 1;\ + address += 4;\ + } + case 0xb4: + // PUSH {Rlist} + { + busPrefetch = busPrefetchEnable; + int offset = 0; + uint32 temp = reg[13].I - 4 * cpuBitsSet[opcode & 0xff]; + uint32 address = temp & 0xFFFFFFFC; + clockTicks = codeTicksAccesint16(armNextPC)+1; + PUSH_REG(1, 0); + PUSH_REG(2, 1); + PUSH_REG(4, 2); + PUSH_REG(8, 3); + PUSH_REG(16, 4); + PUSH_REG(32, 5); + PUSH_REG(64, 6); + PUSH_REG(128, 7); + reg[13].I = temp; + } + break; + case 0xb5: + // PUSH {Rlist, LR} + { + busPrefetch = busPrefetchEnable; + int offset = 0; + uint32 temp = reg[13].I - 4 - 4 * cpuBitsSet[opcode & 0xff]; + uint32 address = temp & 0xFFFFFFFC; + clockTicks = codeTicksAccesint16(armNextPC)+1; + PUSH_REG(1, 0); + PUSH_REG(2, 1); + PUSH_REG(4, 2); + PUSH_REG(8, 3); + PUSH_REG(16, 4); + PUSH_REG(32, 5); + PUSH_REG(64, 6); + PUSH_REG(128, 7); + PUSH_REG(256, 14); + reg[13].I = temp; + } + break; +#define POP_REG(val, r) \ + if(opcode & (val)) {\ + reg[(r)].I = CPUReadMemory(address);\ + if(offset)\ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + else\ + clockTicks += 1 + dataTicksAccesint32(address);\ + offset = 1;\ + address += 4;\ + } + case 0xbc: + // POP {Rlist} + { + busPrefetch = busPrefetchEnable; + int offset = 0; + uint32 address = reg[13].I & 0xFFFFFFFC; + uint32 temp = reg[13].I + 4*cpuBitsSet[opcode & 0xFF]; + clockTicks = 0; + POP_REG(1, 0); + POP_REG(2, 1); + POP_REG(4, 2); + POP_REG(8, 3); + POP_REG(16, 4); + POP_REG(32, 5); + POP_REG(64, 6); + POP_REG(128, 7); + reg[13].I = temp; + clockTicks += codeTicksAccesint16(armNextPC)+2; + } + break; + case 0xbd: + // POP {Rlist, PC} + { + busPrefetch = busPrefetchEnable; + int offset = 0; + uint32 address = reg[13].I & 0xFFFFFFFC; + uint32 temp = reg[13].I + 4 + 4*cpuBitsSet[opcode & 0xFF]; + clockTicks = 0; + POP_REG(1, 0); + POP_REG(2, 1); + POP_REG(4, 2); + POP_REG(8, 3); + POP_REG(16, 4); + POP_REG(32, 5); + POP_REG(64, 6); + POP_REG(128, 7); + reg[15].I = (CPUReadMemory(address) & 0xFFFFFFFE); + if(offset) + clockTicks += 1 + dataTicksAccessSeq32(address); + else + clockTicks += 1 + dataTicksAccesint32(address); + armNextPC = reg[15].I; + reg[15].I += 2; + reg[13].I = temp; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks += 2*(codeTicksAccesint16(armNextPC))+3; + } + break; +#define THUMB_STM_REG(val,r,b) \ + if(opcode & (val)) {\ + CPUWriteMemory(address, reg[(r)].I);\ + if(!offset) {\ + reg[(b)].I = temp;\ + clockTicks += 1 + dataTicksAccesint32(address);\ + } else \ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + offset = 1;\ + address += 4;\ + } + case 0xc0: + { + // STM R0!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[0].I & 0xFFFFFFFC; + uint32 temp = reg[0].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 0); + THUMB_STM_REG(2, 1, 0); + THUMB_STM_REG(4, 2, 0); + THUMB_STM_REG(8, 3, 0); + THUMB_STM_REG(16, 4, 0); + THUMB_STM_REG(32, 5, 0); + THUMB_STM_REG(64, 6, 0); + THUMB_STM_REG(128, 7, 0); + } + break; + case 0xc1: + { + // STM R1!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[1].I & 0xFFFFFFFC; + uint32 temp = reg[1].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 1); + THUMB_STM_REG(2, 1, 1); + THUMB_STM_REG(4, 2, 1); + THUMB_STM_REG(8, 3, 1); + THUMB_STM_REG(16, 4, 1); + THUMB_STM_REG(32, 5, 1); + THUMB_STM_REG(64, 6, 1); + THUMB_STM_REG(128, 7, 1); + } + break; + case 0xc2: + { + // STM R2!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[2].I & 0xFFFFFFFC; + uint32 temp = reg[2].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 2); + THUMB_STM_REG(2, 1, 2); + THUMB_STM_REG(4, 2, 2); + THUMB_STM_REG(8, 3, 2); + THUMB_STM_REG(16, 4, 2); + THUMB_STM_REG(32, 5, 2); + THUMB_STM_REG(64, 6, 2); + THUMB_STM_REG(128, 7, 2); + } + break; + case 0xc3: + { + // STM R3!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[3].I & 0xFFFFFFFC; + uint32 temp = reg[3].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 3); + THUMB_STM_REG(2, 1, 3); + THUMB_STM_REG(4, 2, 3); + THUMB_STM_REG(8, 3, 3); + THUMB_STM_REG(16, 4, 3); + THUMB_STM_REG(32, 5, 3); + THUMB_STM_REG(64, 6, 3); + THUMB_STM_REG(128, 7, 3); + } + break; + case 0xc4: + { + // STM R4!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[4].I & 0xFFFFFFFC; + uint32 temp = reg[4].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 4); + THUMB_STM_REG(2, 1, 4); + THUMB_STM_REG(4, 2, 4); + THUMB_STM_REG(8, 3, 4); + THUMB_STM_REG(16, 4, 4); + THUMB_STM_REG(32, 5, 4); + THUMB_STM_REG(64, 6, 4); + THUMB_STM_REG(128, 7, 4); + } + break; + case 0xc5: + { + // STM R5!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[5].I & 0xFFFFFFFC; + uint32 temp = reg[5].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 5); + THUMB_STM_REG(2, 1, 5); + THUMB_STM_REG(4, 2, 5); + THUMB_STM_REG(8, 3, 5); + THUMB_STM_REG(16, 4, 5); + THUMB_STM_REG(32, 5, 5); + THUMB_STM_REG(64, 6, 5); + THUMB_STM_REG(128, 7, 5); + } + break; + case 0xc6: + { + // STM R6!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[6].I & 0xFFFFFFFC; + uint32 temp = reg[6].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 6); + THUMB_STM_REG(2, 1, 6); + THUMB_STM_REG(4, 2, 6); + THUMB_STM_REG(8, 3, 6); + THUMB_STM_REG(16, 4, 6); + THUMB_STM_REG(32, 5, 6); + THUMB_STM_REG(64, 6, 6); + THUMB_STM_REG(128, 7, 6); + } + break; + case 0xc7: + { + // STM R7!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[7].I & 0xFFFFFFFC; + uint32 temp = reg[7].I + 4*cpuBitsSet[opcode & 0xff]; + int offset = 0; + clockTicks = codeTicksAccesint16(armNextPC)+1; + // store + THUMB_STM_REG(1, 0, 7); + THUMB_STM_REG(2, 1, 7); + THUMB_STM_REG(4, 2, 7); + THUMB_STM_REG(8, 3, 7); + THUMB_STM_REG(16, 4, 7); + THUMB_STM_REG(32, 5, 7); + THUMB_STM_REG(64, 6, 7); + THUMB_STM_REG(128, 7, 7); + } + break; +#define THUMB_LDM_REG(val,r) \ + if(opcode & (val)) {\ + reg[(r)].I = CPUReadMemory(address);\ + if(offset)\ + clockTicks += 1 + dataTicksAccessSeq32(address);\ + else \ + clockTicks += 1 + dataTicksAccesint32(address);\ + offset = 1;\ + address += 4;\ + } + case 0xc8: + { + // LDM R0!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[0].I & 0xFFFFFFFC; + uint32 temp = reg[0].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 1)) + reg[0].I = temp; + } + break; + case 0xc9: + { + // LDM R1!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[1].I & 0xFFFFFFFC; + uint32 temp = reg[1].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 2)) + reg[1].I = temp; + } + break; + case 0xca: + { + // LDM R2!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[2].I & 0xFFFFFFFC; + uint32 temp = reg[2].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 4)) + reg[2].I = temp; + } + break; + case 0xcb: + { + // LDM R3!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[3].I & 0xFFFFFFFC; + uint32 temp = reg[3].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 8)) + reg[3].I = temp; + } + break; + case 0xcc: + { + // LDM R4!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[4].I & 0xFFFFFFFC; + uint32 temp = reg[4].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 16)) + reg[4].I = temp; + } + break; + case 0xcd: + { + // LDM R5!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[5].I & 0xFFFFFFFC; + uint32 temp = reg[5].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 32)) + reg[5].I = temp; + } + break; + case 0xce: + { + // LDM R6!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[6].I & 0xFFFFFFFC; + uint32 temp = reg[6].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 64)) + reg[6].I = temp; + } + break; + case 0xcf: + { + // LDM R7!, {Rlist} + busPrefetch = busPrefetchEnable; + uint32 address = reg[7].I & 0xFFFFFFFC; + uint32 temp = reg[7].I + 4*cpuBitsSet[opcode & 0xFF]; + int offset = 0; + clockTicks = 0; + // load + THUMB_LDM_REG(1, 0); + THUMB_LDM_REG(2, 1); + THUMB_LDM_REG(4, 2); + THUMB_LDM_REG(8, 3); + THUMB_LDM_REG(16, 4); + THUMB_LDM_REG(32, 5); + THUMB_LDM_REG(64, 6); + THUMB_LDM_REG(128, 7); + clockTicks += codeTicksAccesint16(armNextPC)+2; + if(!(opcode & 128)) + reg[7].I = temp; + } + break; + case 0xd0: + // BEQ offset + if(Z_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd1: + // BNE offset + if(!Z_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd2: + // BCS offset + if(C_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd3: + // BCC offset + if(!C_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd4: + // BMI offset + if(N_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd5: + // BPL offset + if(!N_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd6: + // BVS offset + if(V_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd7: + // BVC offset + if(!V_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd8: + // BHI offset + if(C_FLAG && !Z_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xd9: + // BLS offset + if(!C_FLAG || Z_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xda: + // BGE offset + if(N_FLAG == V_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xdb: + // BLT offset + if(N_FLAG != V_FLAG) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xdc: + // BGT offset + if(!Z_FLAG && (N_FLAG == V_FLAG)) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xdd: + // BLE offset + if(Z_FLAG || (N_FLAG != V_FLAG)) { + reg[15].I += ((int8)(opcode & 0xFF)) << 1; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; + case 0xdf: + { + // SWI #comment + uint32 address = 0; + busPrefetchCount=0; + clockTicks = 2*codeTicksAccessSeq16(address) + codeTicksAccesint16(address)+3; + CPUSoftwareInterrupt(opcode & 0xFF); + break; + } + case 0xe0: + case 0xe1: + case 0xe2: + case 0xe3: + case 0xe4: + case 0xe5: + case 0xe6: + case 0xe7: + { + // B offset + int offset = (opcode & 0x3FF) << 1; + if(opcode & 0x0400) + offset |= 0xFFFFF800; + reg[15].I += offset; + armNextPC = reg[15].I; + reg[15].I += 2; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks += clockTicks + codeTicksAccesint16(armNextPC)+1; + } + break; + case 0xf0: + case 0xf1: + case 0xf2: + case 0xf3: + { + // BLL #offset + int offset = (opcode & 0x7FF); + reg[14].I = reg[15].I + (offset << 12); + } + break; + case 0xf4: + case 0xf5: + case 0xf6: + case 0xf7: + { + // BLL #offset + int offset = (opcode & 0x7FF); + reg[14].I = reg[15].I + ((offset << 12) | 0xFF800000); + } + break; + case 0xf8: + case 0xf9: + case 0xfa: + case 0xfb: + case 0xfc: + case 0xfd: + case 0xfe: + case 0xff: + { + // BLH #offset + int offset = (opcode & 0x7FF); + uint32 temp = reg[15].I-2; + reg[15].I = (reg[14].I + (offset<<1))&0xFFFFFFFE; + armNextPC = reg[15].I; + reg[15].I += 2; + reg[14].I = temp|1; + THUMB_PREFETCH; + busPrefetchCount=0; + clockTicks += 2*codeTicksAccessSeq16(armNextPC) + codeTicksAccesint16(armNextPC)+3; + } + break; +#ifdef BKPT_SUPPORT + case 0xbe: + // BKPT #comment + extern void (*dbgSignal)(int,int); + reg[15].I -= 2; + armNextPC -= 2; + dbgSignal(5, opcode & 255); + return; +#endif + case 0xb1: + case 0xb2: + case 0xb3: + case 0xb6: + case 0xb7: + case 0xb8: + case 0xb9: + case 0xba: + case 0xbb: +#ifndef BKPT_SUPPORT + case 0xbe: +#endif + case 0xbf: + case 0xde: + default: + unknown_thumb: +#ifdef DEV_VERSION + if(systemVerbose & VERBOSE_UNDEFINED) + log("Undefined THUMB instruction %04x at %08x\n", opcode, armNextPC-2); +#endif + CPUUndefinedException(); + break; +} + return(clockTicks); +} + +} diff --git a/libmednahawk/src/gba/thumb.h b/libmednahawk/src/gba/thumb.h new file mode 100644 index 0000000000..63645cb967 --- /dev/null +++ b/libmednahawk/src/gba/thumb.h @@ -0,0 +1,6 @@ +namespace MDFN_IEN_GBA +{ + +unsigned int RunTHUMB(void); + +} diff --git a/libmednahawk/src/general.cpp b/libmednahawk/src/general.cpp new file mode 100644 index 0000000000..471ab03710 --- /dev/null +++ b/libmednahawk/src/general.cpp @@ -0,0 +1,595 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" + +#include +#include + +#include +#include +//#include //zero 07-feb-2012 + +#include +#include +#include + +#include "general.h" +#include "state.h" +#include "movie.h" + +#include "md5.h" + +using namespace std; + +static string BaseDirectory; +static string FileBase; +static string FileExt; /* Includes the . character, as in ".nes" */ +static string FileBaseDirectory; + +void MDFNI_SetBaseDirectory(const char *dir) +{ + BaseDirectory = string(dir); +} + +// Really dumb, maybe we should use boost? +static bool IsAbsolutePath(const char *path) +{ + #if PSS_STYLE==4 + if(path[0] == ':') + #elif PSS_STYLE==1 + if(path[0] == '/') + #else + if(path[0] == '\\' + #if PSS_STYLE!=3 + || path[0] == '/' + #endif + ) + #endif + { + return(TRUE); + } + + #if defined(WIN32) || defined(DOS) + if((path[0] >= 'a' && path[0] <= 'z') || (path[0] >= 'A' && path[0] <= 'Z')) + { + if(path[1] == ':') + { + return(TRUE); + } + } + #endif + + return(FALSE); +} + +static bool IsAbsolutePath(const std::string &path) +{ + return(IsAbsolutePath(path.c_str())); +} + +bool MDFN_IsFIROPSafe(const std::string &path) +{ + // We could make this more OS-specific, but it shouldn't hurt to try to weed out usage of characters that are path + // separators in one OS but not in another, and we'd also run more of a risk of missing a special path separator case + // in some OS. + + if(!MDFN_GetSettingB("filesys.untrusted_fip_check")) + return(true); + + if(path.find('\0') != string::npos) + return(false); + + if(path.find(':') != string::npos) + return(false); + + if(path.find('\\') != string::npos) + return(false); + + if(path.find('/') != string::npos) + return(false); + + return(true); +} + +void MDFN_GetFilePathComponents(const std::string &file_path, std::string *dir_path_out, std::string *file_base_out, std::string *file_ext_out) +{ + size_t final_ds; // in file_path + string file_name; + size_t fn_final_dot; // in local var file_name + // Temporary output: + string dir_path, file_base, file_ext; + +#if PSS_STYLE==4 + final_ds = file_path.find_last_of(':'); +#elif PSS_STYLE==1 + final_ds = file_path.find_last_of('/'); +#else + final_ds = file_path.find_last_of('\\'); + + #if PSS_STYLE!=3 + { + size_t alt_final_ds = file_path.find_last_of('/'); + + if(final_ds == string::npos || (alt_final_ds != string::npos && alt_final_ds > final_ds)) + final_ds = alt_final_ds; + } + #endif +#endif + + if(final_ds == string::npos) + { + dir_path = string("."); + file_name = file_path; + } + else + { + dir_path = file_path.substr(0, final_ds); + file_name = file_path.substr(final_ds + 1); + } + + fn_final_dot = file_name.find_last_of('.'); + + if(fn_final_dot != string::npos) + { + file_base = file_name.substr(0, fn_final_dot); + file_ext = file_name.substr(fn_final_dot); + } + else + { + file_base = file_name; + file_ext = string(""); + } + + if(dir_path_out) + *dir_path_out = dir_path; + + if(file_base_out) + *file_base_out = file_base; + + if(file_ext_out) + *file_ext_out = file_ext; +} + +std::string MDFN_EvalFIP(const std::string &dir_path, const std::string &rel_path, bool skip_safety_check) +{ + if(!skip_safety_check && !MDFN_IsFIROPSafe(rel_path)) + throw MDFN_Error(0, _("Referenced path \"%s\" is potentially unsafe. See \"filesys.untrusted_fip_check\" setting.\n"), rel_path.c_str()); + + if(IsAbsolutePath(rel_path.c_str())) + return(rel_path); + else + { + return(dir_path + std::string(PSS) + rel_path); + } +} + + +typedef std::map FSMap; + +static std::string EvalPathFS(const std::string &fstring, /*const (won't work because entry created if char doesn't exist) */ FSMap &fmap) +{ + std::string ret = ""; + const char *str = fstring.c_str(); + bool in_spec = false; + + while(*str) + { + int c = *str; + + if(!in_spec && c == '%') + in_spec = true; + else if(in_spec == true) + { + if(c == '%') + ret = ret + std::string("%"); + else + ret = ret + fmap[(char)c]; + in_spec = false; + } + else + { + char ct[2]; + ct[0] = c; + ct[1] = 0; + ret += std::string(ct); + } + + str++; + } + + return(ret); +} + +#if 0 +static void CreateMissingDirs(const char *path) +{ + const char *s = path; + bool first_psep = true; + char last_char = 0; + const char char_test1 = '/', char_test2 = '/'; + + + while(*s) + { + if(*s == char_test1 || *s == char_test2) + { + if(last_char != *s) //char_test1 && last_char != char_test2) + { + if(!first_psep) + { + char tmpbuf[(s - path) + 1]; + tmpbuf[s - path] = 0; + strncpy(tmpbuf, path, s - path); + + puts(tmpbuf); + //MDFN_mkdir(tmpbuf, S_IRWXU); + } + } + + first_psep = false; + } + last_char = *s; + s++; + } +} +#endif + +std::string MDFN_MakeFName(MakeFName_Type type, int id1, const char *cd1) +{ + char tmp_path[4096]; + char numtmp[64]; + struct stat tmpstat; + string eff_dir; + FSMap fmap; + + fmap['b'] = BaseDirectory; + fmap['z'] = std::string(PSS); + + if(MDFNGameInfo) + { + fmap['d'] = FileBaseDirectory; + fmap['f'] = FileBase; + fmap['F'] = FileBase; // If game is a CD, and the CD is recognized as being part of a multi-CD set, then this + // will be replaced with MDFNGameInfo->shortname + + fmap['m'] = md5_context::asciistr(MDFNGameInfo->MD5, 0); // MD5 hash of the currently loaded game ONLY. + + fmap['M'] = ""; // One with this empty, if file not found, then fill with MD5 hash of the currently loaded game, + // or the MD5 gameset hash for certain CD games, followed by a period and go with that result. + // Note: The MD5-less result is skipped if the CD is part of a recognized multi-CD set. + fmap['e'] = FileExt; + fmap['s'] = MDFNGameInfo->shortname; + + fmap['p'] = ""; + + + fmap['x'] = ""; // Default extension(without period) + fmap['X'] = ""; // A merging of x and p + + if(MDFNGameInfo->GameSetMD5Valid) + { + fmap['M'] = md5_context::asciistr(MDFNGameInfo->GameSetMD5, 0) + std::string("."); + fmap['F'] = MDFNGameInfo->shortname; + } + } + + + + + //printf("%s\n", EvalPathFS(std::string("%f.%m.sav"), fmap).c_str()); + + switch(type) + { + default: tmp_path[0] = 0; + break; + + case MDFNMKF_MOVIE: + case MDFNMKF_STATE: + case MDFNMKF_SAV: + { + std::string dir, fstring, fpath; + + if(type == MDFNMKF_MOVIE) + { + dir = MDFN_GetSettingS("filesys.path_movie"); + fstring = MDFN_GetSettingS("filesys.fname_movie"); + fmap['x'] = "mcm"; + } + else if(type == MDFNMKF_STATE) + { + dir = MDFN_GetSettingS("filesys.path_state"); + fstring = MDFN_GetSettingS("filesys.fname_state"); + fmap['x'] = "mcs"; + } + else if(type == MDFNMKF_SAV) + { + dir = MDFN_GetSettingS("filesys.path_sav"); + fstring = MDFN_GetSettingS("filesys.fname_sav"); + fmap['x'] = std::string(cd1); + } + + fmap['X'] = fmap['x']; + + if(type != MDFNMKF_SAV) + { + snprintf(numtmp, sizeof(numtmp), "%d", id1); + fmap['p'] = std::string(numtmp); + } + + if(fmap['X'].size() > 1 && fmap['p'].size()) + fmap['X'] = fmap['X'].erase(fmap['X'].size() - 1) + fmap['p']; + + for(int i = 0; i < 2; i++) + { + fpath = EvalPathFS(fstring, fmap); + + if(!IsAbsolutePath(fpath)) + { + if(!IsAbsolutePath(dir)) + dir = BaseDirectory + std::string(PSS) + dir; + + fpath = dir + std::string(PSS) + fpath; + } + + if(stat(fpath.c_str(), &tmpstat) == -1) + fmap['M'] = md5_context::asciistr(MDFNGameInfo->MD5, 0) + std::string("."); + else + break; + } + + return(fpath); + } + + case MDFNMKF_SNAP_DAT: + case MDFNMKF_SNAP: + { + std::string dir = MDFN_GetSettingS("filesys.path_snap"); + std::string fstring = MDFN_GetSettingS("filesys.fname_snap"); + std::string fpath; + + snprintf(numtmp, sizeof(numtmp), "%04d", id1); + + fmap['p'] = std::string(numtmp); + + if(cd1) + fmap['x'] = std::string(cd1); + + if(type == MDFNMKF_SNAP_DAT) + { + fmap['p'] = std::string("counter"); + fmap['x'] = std::string("txt"); + } + fpath = EvalPathFS(fstring, fmap); + if(!IsAbsolutePath(fpath)) + { + if(!IsAbsolutePath(dir)) + dir = BaseDirectory + std::string(PSS) + dir; + + fpath = dir + std::string(PSS) + fpath; + } + return(fpath); + } + break; + + case MDFNMKF_CHEAT_TMP: + case MDFNMKF_CHEAT: + { + std::string overpath = MDFN_GetSettingS("filesys.path_cheat"); + + if(IsAbsolutePath(overpath)) + trio_snprintf(tmp_path, 4096, "%s" PSS "%s.%scht",overpath.c_str(), MDFNGameInfo->shortname, (type == MDFNMKF_CHEAT_TMP) ? "tmp" : ""); + else + trio_snprintf(tmp_path, 4096, "%s" PSS "%s" PSS "%s.%scht", BaseDirectory.c_str(), overpath.c_str(), MDFNGameInfo->shortname, (type == MDFNMKF_CHEAT_TMP) ? "tmp" : ""); + } + break; + + case MDFNMKF_AUX: if(IsAbsolutePath(cd1)) + trio_snprintf(tmp_path, 4096, "%s", (char *)cd1); + else + trio_snprintf(tmp_path, 4096, "%s" PSS "%s", FileBaseDirectory.c_str(), (char *)cd1); + break; + + case MDFNMKF_IPS: trio_snprintf(tmp_path, 4096, "%s" PSS "%s%s.ips", FileBaseDirectory.c_str(), FileBase.c_str(), FileExt.c_str()); + break; + + case MDFNMKF_FIRMWARE: + { + std::string overpath = MDFN_GetSettingS("filesys.path_firmware"); + +#ifdef HEADLESS + trio_snprintf(tmp_path, 4096, "%s" PSS "%s" PSS "%s", BaseDirectory.c_str(), overpath.c_str(), cd1); +#else + if(IsAbsolutePath(cd1)) + { + trio_snprintf(tmp_path, 4096, "%s", cd1); + } + else + { + if(IsAbsolutePath(overpath)) + trio_snprintf(tmp_path, 4096, "%s" PSS "%s",overpath.c_str(), cd1); + else + { + trio_snprintf(tmp_path, 4096, "%s" PSS "%s" PSS "%s", BaseDirectory.c_str(), overpath.c_str(), cd1); + + // For backwards-compatibility with < 0.9.0 + if(stat(tmp_path,&tmpstat) == -1) + trio_snprintf(tmp_path, 4096, "%s" PSS "%s", BaseDirectory.c_str(), cd1); + } + } +#endif + } + break; + + case MDFNMKF_PALETTE: + { + std::string overpath = MDFN_GetSettingS("filesys.path_palette"); + + if(IsAbsolutePath(overpath)) + eff_dir = overpath; + else + eff_dir = std::string(BaseDirectory) + std::string(PSS) + overpath; + + trio_snprintf(tmp_path, 4096, "%s" PSS "%s.pal", eff_dir.c_str(), FileBase.c_str()); + + if(stat(tmp_path,&tmpstat) == -1 && errno == ENOENT) + { + trio_snprintf(tmp_path, 4096, "%s" PSS "%s.%s.pal", eff_dir.c_str(), FileBase.c_str(), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + if(stat(tmp_path, &tmpstat) == -1 && errno == ENOENT) + trio_snprintf(tmp_path, 4096, "%s" PSS "%s.pal", eff_dir.c_str(), cd1 ? cd1 : MDFNGameInfo->shortname); + } + } + break; + } + return(tmp_path); +} + +const char * GetFNComponent(const char *str) +{ + const char *tp1; + + #if PSS_STYLE==4 + tp1=((char *)strrchr(str,':')); + #elif PSS_STYLE==1 + tp1=((char *)strrchr(str,'/')); + #else + tp1=((char *)strrchr(str,'\\')); + #if PSS_STYLE!=3 + { + const char *tp3; + tp3=((char *)strrchr(str,'/')); + if(tp1tp1)) + { + char *tmpbase = new char[tp3 - tp1 + 1]; //zero 07-feb-2012 - removed dynamic stack buffer + + memcpy(tmpbase,tp1,tp3-tp1); + tmpbase[tp3-tp1]=0; + FileBase = string(tmpbase); + FileExt = string(tp3); + delete[] tmpbase; + } + else + { + FileBase = string(tp1); + FileExt = ""; + } +} + +char *MDFN_RemoveControlChars(char *str) +{ + char *orig = str; + if(str) + while(*str) + { + if(*str < 0x20) *str = 0x20; + str++; + } + return(orig); +} + +// Remove whitespace from beginning of string +void MDFN_ltrim(char *string) +{ + int32 di, si; + bool InWhitespace = TRUE; + + di = si = 0; + + while(string[si]) + { + if(InWhitespace && (string[si] == ' ' || string[si] == '\r' || string[si] == '\n' || string[si] == '\t' || string[si] == 0x0b)) + { + + } + else + { + InWhitespace = FALSE; + string[di] = string[si]; + di++; + } + si++; + } + string[di] = 0; +} + +// Remove whitespace from end of string +void MDFN_rtrim(char *string) +{ + int32 len = strlen(string); + + if(len) + { + for(int32 x = len - 1; x >= 0; x--) + { + if(string[x] == ' ' || string[x] == '\r' || string[x] == '\n' || string[x] == '\t' || string[x] == 0x0b) + string[x] = 0; + else + break; + } + } + +} + +void MDFN_trim(char *string) +{ + MDFN_rtrim(string); + MDFN_ltrim(string); +} diff --git a/libmednahawk/src/general.h b/libmednahawk/src/general.h new file mode 100644 index 0000000000..6ca78783e7 --- /dev/null +++ b/libmednahawk/src/general.h @@ -0,0 +1,41 @@ +#ifndef _GENERAL_H +#define _GENERAL_H + +#include + +extern uint32 MDFN_RoundUpPow2(uint32); + +void GetFileBase(const char *f); + +// File-inclusion for-read-only path, for PSF and CUE/TOC sheet usage. +bool MDFN_IsFIROPSafe(const std::string &path); + +std::string MDFN_MakeFName(int type, int id1, const char *cd1); +char *MDFN_RemoveControlChars(char *str); + +void MDFN_ltrim(char *string); +void MDFN_rtrim(char *string); +void MDFN_trim(char *string); + +typedef enum +{ + MDFNMKF_STATE = 0, + MDFNMKF_SNAP, + MDFNMKF_SAV, + MDFNMKF_CHEAT, + MDFNMKF_PALETTE, + MDFNMKF_IPS, + MDFNMKF_MOVIE, + MDFNMKF_AUX, + MDFNMKF_SNAP_DAT, + MDFNMKF_CHEAT_TMP, + MDFNMKF_FIRMWARE +} MakeFName_Type; + +std::string MDFN_MakeFName(MakeFName_Type type, int id1, const char *cd1); + +const char * GetFNComponent(const char *str); + +void MDFN_GetFilePathComponents(const std::string &file_path, std::string *dir_path_out, std::string *file_base_out = NULL, std::string *file_ext_out = NULL); +std::string MDFN_EvalFIP(const std::string &dir_path, const std::string &rel_path, bool skip_safety_check = false); +#endif diff --git a/libmednahawk/src/gettext.h b/libmednahawk/src/gettext.h new file mode 100644 index 0000000000..1938e0e0e7 --- /dev/null +++ b/libmednahawk/src/gettext.h @@ -0,0 +1,79 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000-2002, 2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of a NOP. We don't include + as well because people using "gettext.h" will not include , + and also including would fail on SunOS 4, whereas + is OK. */ +#if defined(__sun) +# include +#endif + +/* Many header files from the libstdc++ coming with g++ 3.3 or newer include + , which chokes if dcgettext is defined as a macro. So include + it now, to make later inclusions of a NOP. */ +#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) +# include +# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H +# include +# endif +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) +# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define textdomain(Domainname) ((const char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +#endif /* _LIBGETTEXT_H */ diff --git a/libmednahawk/src/git-virtb.h b/libmednahawk/src/git-virtb.h new file mode 100644 index 0000000000..e36e2882e5 --- /dev/null +++ b/libmednahawk/src/git-virtb.h @@ -0,0 +1,365 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + This file includes parts(thus is modified from) of SDL_keysym.h, whose file header is shown below: + + Everything from VIRTB_KB_UNKNOWN to VIRTB_KB_UNDO should map to SDLK_UNKNOWN to SDLK_KB_UNDO, so the driver + side can use the raw VIRTB_KB_* values for SDLK_* if less than VIRTB_KB_LAST if using SDL 1.2(if not SDL 1.3), + but probably really should have a translation table. +*/ + +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef __MDFN_GIT_VIRTB_H +#define __MDFN_GIT_VIRTB_H + +/* What we really want is a mapping of every raw key on the keyboard. + To support international keyboards, we use the range 0xA1 - 0xFF + as international virtual keycodes. We'll follow in the footsteps of X11... + The names of the keys + */ + +typedef enum { + VIRTB_UNKNOWN = 0, + + /* The keyboard syms have been cleverly chosen to map to ASCII */ + VIRTB_KB_UNKNOWN = 0, + VIRTB_KB_FIRST = 0, + VIRTB_KB_BACKSPACE = 8, + VIRTB_KB_TAB = 9, + VIRTB_KB_CLEAR = 12, + VIRTB_KB_RETURN = 13, + VIRTB_KB_PAUSE = 19, + VIRTB_KB_ESCAPE = 27, + VIRTB_KB_SPACE = 32, + VIRTB_KB_EXCLAIM = 33, + VIRTB_KB_QUOTEDBL = 34, + VIRTB_KB_HASH = 35, + VIRTB_KB_DOLLAR = 36, + VIRTB_KB_AMPERSAND = 38, + VIRTB_KB_QUOTE = 39, + VIRTB_KB_LEFTPAREN = 40, + VIRTB_KB_RIGHTPAREN = 41, + VIRTB_KB_ASTERISK = 42, + VIRTB_KB_PLUS = 43, + VIRTB_KB_COMMA = 44, + VIRTB_KB_MINUS = 45, + VIRTB_KB_PERIOD = 46, + VIRTB_KB_SLASH = 47, + VIRTB_KB_0 = 48, + VIRTB_KB_1 = 49, + VIRTB_KB_2 = 50, + VIRTB_KB_3 = 51, + VIRTB_KB_4 = 52, + VIRTB_KB_5 = 53, + VIRTB_KB_6 = 54, + VIRTB_KB_7 = 55, + VIRTB_KB_8 = 56, + VIRTB_KB_9 = 57, + VIRTB_KB_COLON = 58, + VIRTB_KB_SEMICOLON = 59, + VIRTB_KB_LESS = 60, + VIRTB_KB_EQUALS = 61, + VIRTB_KB_GREATER = 62, + VIRTB_KB_QUESTION = 63, + VIRTB_KB_AT = 64, + /* + Skip uppercase letters + */ + VIRTB_KB_LEFTBRACKET = 91, + VIRTB_KB_BACKSLASH = 92, + VIRTB_KB_RIGHTBRACKET = 93, + VIRTB_KB_CARET = 94, + VIRTB_KB_UNDERSCORE = 95, + VIRTB_KB_BACKQUOTE = 96, + VIRTB_KB_a = 97, + VIRTB_KB_b = 98, + VIRTB_KB_c = 99, + VIRTB_KB_d = 100, + VIRTB_KB_e = 101, + VIRTB_KB_f = 102, + VIRTB_KB_g = 103, + VIRTB_KB_h = 104, + VIRTB_KB_i = 105, + VIRTB_KB_j = 106, + VIRTB_KB_k = 107, + VIRTB_KB_l = 108, + VIRTB_KB_m = 109, + VIRTB_KB_n = 110, + VIRTB_KB_o = 111, + VIRTB_KB_p = 112, + VIRTB_KB_q = 113, + VIRTB_KB_r = 114, + VIRTB_KB_s = 115, + VIRTB_KB_t = 116, + VIRTB_KB_u = 117, + VIRTB_KB_v = 118, + VIRTB_KB_w = 119, + VIRTB_KB_x = 120, + VIRTB_KB_y = 121, + VIRTB_KB_z = 122, + VIRTB_KB_DELETE = 127, + /* End of ASCII mapped keysyms */ + + /* International keyboard syms */ + VIRTB_KB_WORLD_0 = 160, /* 0xA0 */ + VIRTB_KB_WORLD_1 = 161, + VIRTB_KB_WORLD_2 = 162, + VIRTB_KB_WORLD_3 = 163, + VIRTB_KB_WORLD_4 = 164, + VIRTB_KB_WORLD_5 = 165, + VIRTB_KB_WORLD_6 = 166, + VIRTB_KB_WORLD_7 = 167, + VIRTB_KB_WORLD_8 = 168, + VIRTB_KB_WORLD_9 = 169, + VIRTB_KB_WORLD_10 = 170, + VIRTB_KB_WORLD_11 = 171, + VIRTB_KB_WORLD_12 = 172, + VIRTB_KB_WORLD_13 = 173, + VIRTB_KB_WORLD_14 = 174, + VIRTB_KB_WORLD_15 = 175, + VIRTB_KB_WORLD_16 = 176, + VIRTB_KB_WORLD_17 = 177, + VIRTB_KB_WORLD_18 = 178, + VIRTB_KB_WORLD_19 = 179, + VIRTB_KB_WORLD_20 = 180, + VIRTB_KB_WORLD_21 = 181, + VIRTB_KB_WORLD_22 = 182, + VIRTB_KB_WORLD_23 = 183, + VIRTB_KB_WORLD_24 = 184, + VIRTB_KB_WORLD_25 = 185, + VIRTB_KB_WORLD_26 = 186, + VIRTB_KB_WORLD_27 = 187, + VIRTB_KB_WORLD_28 = 188, + VIRTB_KB_WORLD_29 = 189, + VIRTB_KB_WORLD_30 = 190, + VIRTB_KB_WORLD_31 = 191, + VIRTB_KB_WORLD_32 = 192, + VIRTB_KB_WORLD_33 = 193, + VIRTB_KB_WORLD_34 = 194, + VIRTB_KB_WORLD_35 = 195, + VIRTB_KB_WORLD_36 = 196, + VIRTB_KB_WORLD_37 = 197, + VIRTB_KB_WORLD_38 = 198, + VIRTB_KB_WORLD_39 = 199, + VIRTB_KB_WORLD_40 = 200, + VIRTB_KB_WORLD_41 = 201, + VIRTB_KB_WORLD_42 = 202, + VIRTB_KB_WORLD_43 = 203, + VIRTB_KB_WORLD_44 = 204, + VIRTB_KB_WORLD_45 = 205, + VIRTB_KB_WORLD_46 = 206, + VIRTB_KB_WORLD_47 = 207, + VIRTB_KB_WORLD_48 = 208, + VIRTB_KB_WORLD_49 = 209, + VIRTB_KB_WORLD_50 = 210, + VIRTB_KB_WORLD_51 = 211, + VIRTB_KB_WORLD_52 = 212, + VIRTB_KB_WORLD_53 = 213, + VIRTB_KB_WORLD_54 = 214, + VIRTB_KB_WORLD_55 = 215, + VIRTB_KB_WORLD_56 = 216, + VIRTB_KB_WORLD_57 = 217, + VIRTB_KB_WORLD_58 = 218, + VIRTB_KB_WORLD_59 = 219, + VIRTB_KB_WORLD_60 = 220, + VIRTB_KB_WORLD_61 = 221, + VIRTB_KB_WORLD_62 = 222, + VIRTB_KB_WORLD_63 = 223, + VIRTB_KB_WORLD_64 = 224, + VIRTB_KB_WORLD_65 = 225, + VIRTB_KB_WORLD_66 = 226, + VIRTB_KB_WORLD_67 = 227, + VIRTB_KB_WORLD_68 = 228, + VIRTB_KB_WORLD_69 = 229, + VIRTB_KB_WORLD_70 = 230, + VIRTB_KB_WORLD_71 = 231, + VIRTB_KB_WORLD_72 = 232, + VIRTB_KB_WORLD_73 = 233, + VIRTB_KB_WORLD_74 = 234, + VIRTB_KB_WORLD_75 = 235, + VIRTB_KB_WORLD_76 = 236, + VIRTB_KB_WORLD_77 = 237, + VIRTB_KB_WORLD_78 = 238, + VIRTB_KB_WORLD_79 = 239, + VIRTB_KB_WORLD_80 = 240, + VIRTB_KB_WORLD_81 = 241, + VIRTB_KB_WORLD_82 = 242, + VIRTB_KB_WORLD_83 = 243, + VIRTB_KB_WORLD_84 = 244, + VIRTB_KB_WORLD_85 = 245, + VIRTB_KB_WORLD_86 = 246, + VIRTB_KB_WORLD_87 = 247, + VIRTB_KB_WORLD_88 = 248, + VIRTB_KB_WORLD_89 = 249, + VIRTB_KB_WORLD_90 = 250, + VIRTB_KB_WORLD_91 = 251, + VIRTB_KB_WORLD_92 = 252, + VIRTB_KB_WORLD_93 = 253, + VIRTB_KB_WORLD_94 = 254, + VIRTB_KB_WORLD_95 = 255, /* 0xFF */ + + /* Numeric keypad */ + VIRTB_KB_KP0 = 256, + VIRTB_KB_KP1 = 257, + VIRTB_KB_KP2 = 258, + VIRTB_KB_KP3 = 259, + VIRTB_KB_KP4 = 260, + VIRTB_KB_KP5 = 261, + VIRTB_KB_KP6 = 262, + VIRTB_KB_KP7 = 263, + VIRTB_KB_KP8 = 264, + VIRTB_KB_KP9 = 265, + VIRTB_KB_KP_PERIOD = 266, + VIRTB_KB_KP_DIVIDE = 267, + VIRTB_KB_KP_MULTIPLY = 268, + VIRTB_KB_KP_MINUS = 269, + VIRTB_KB_KP_PLUS = 270, + VIRTB_KB_KP_ENTER = 271, + VIRTB_KB_KP_EQUALS = 272, + + /* Arrows + Home/End pad */ + VIRTB_KB_UP = 273, + VIRTB_KB_DOWN = 274, + VIRTB_KB_RIGHT = 275, + VIRTB_KB_LEFT = 276, + VIRTB_KB_INSERT = 277, + VIRTB_KB_HOME = 278, + VIRTB_KB_END = 279, + VIRTB_KB_PAGEUP = 280, + VIRTB_KB_PAGEDOWN = 281, + + /* Function keys */ + VIRTB_KB_F1 = 282, + VIRTB_KB_F2 = 283, + VIRTB_KB_F3 = 284, + VIRTB_KB_F4 = 285, + VIRTB_KB_F5 = 286, + VIRTB_KB_F6 = 287, + VIRTB_KB_F7 = 288, + VIRTB_KB_F8 = 289, + VIRTB_KB_F9 = 290, + VIRTB_KB_F10 = 291, + VIRTB_KB_F11 = 292, + VIRTB_KB_F12 = 293, + VIRTB_KB_F13 = 294, + VIRTB_KB_F14 = 295, + VIRTB_KB_F15 = 296, + + /* Key state modifier keys */ + VIRTB_KB_NUMLOCK = 300, + VIRTB_KB_CAPSLOCK = 301, + VIRTB_KB_SCROLLOCK = 302, + VIRTB_KB_RSHIFT = 303, + VIRTB_KB_LSHIFT = 304, + VIRTB_KB_RCTRL = 305, + VIRTB_KB_LCTRL = 306, + VIRTB_KB_RALT = 307, + VIRTB_KB_LALT = 308, + VIRTB_KB_RMETA = 309, + VIRTB_KB_LMETA = 310, + VIRTB_KB_LSUPER = 311, /* Left "Windows" key */ + VIRTB_KB_RSUPER = 312, /* Right "Windows" key */ + VIRTB_KB_MODE = 313, /* "Alt Gr" key */ + VIRTB_KB_COMPOSE = 314, /* Multi-key compose key */ + + /* Miscellaneous function keys */ + VIRTB_KB_HELP = 315, + VIRTB_KB_PRINT = 316, + VIRTB_KB_SYSREQ = 317, + VIRTB_KB_BREAK = 318, + VIRTB_KB_MENU = 319, + VIRTB_KB_POWER = 320, /* Power Macintosh power key */ + VIRTB_KB_EURO = 321, /* Some european keyboards */ + VIRTB_KB_UNDO = 322, /* Atari keyboard has Undo */ + + /* Add any other keys here */ + + VIRTB_KB_LAST, + + /* Mednafen-specific virtual buttons */ + + // D-pad 0 + VIRTB_DP0_U = 0x1000, + VIRTB_DP0_D, + VIRTB_DP0_L, + VIRTB_DP0_R, + + // D-pad 1 + VIRTB_DP1_U = 0x1100, + VIRTB_DP1_D, + VIRTB_DP1_L, + VIRTB_DP1_R, + + // Single row of buttons. Don't use if VIRTB_TOP_* or VIRTB_BOTTOM_* virtual buttons are also used with the device. + // This is for simple devices with one row of action buttons. + VIRTB_0 = 0x2000, + VIRTB_1, + VIRTB_2, + VIRTB_3, + + // Top row of buttons, left to right. + VIRTB_TOP_0 = 0x2100, + VIRTB_TOP_1, + VIRTB_TOP_2, + VIRTB_TOP_3, + + // Bottom row of buttons. + VIRTB_BOT_0 = 0x2200, + VIRTB_BOT_1, + VIRTB_BOT_2, + VIRTB_BOT_3, + + VIRTB_SELECT = 0x2800, + VIRTB_START, + + // Diamond-shaped button arrangement + VIRTB_DMD_L = VIRTB_BOT_0, /*0x3000*/ // Treated equivalent to VIRTB_BOT_0 for now. + VIRTB_DMD_R = VIRTB_TOP_1, // Treated equivalent to VIRTB_TOP_1, for now. + VIRTB_DMD_U = VIRTB_TOP_0, // Treated equivalent to VIRTB_TOP_0, for now. + VIRTB_DMD_D = VIRTB_BOT_1, // Treated equivalent to VIRTB_BOT_1, for now. + + // Shoulder buttons + + VIRTB_SHLDR_L = 0x3100, + VIRTB_SHLDR_R, + + VIRTB_LAST +} InputDeviceInputVB; + +#endif diff --git a/libmednahawk/src/git.h b/libmednahawk/src/git.h new file mode 100644 index 0000000000..8b414eca34 --- /dev/null +++ b/libmednahawk/src/git.h @@ -0,0 +1,386 @@ +#ifndef _GIT_H +#define _GIT_H + +#include + +#include "video.h" + +typedef struct +{ + const char *extension; // Example ".nes" + const char *description; // Example "iNES Format ROM Image" +} FileExtensionSpecStruct; + +#include "file.h" + +enum +{ + MDFN_ROTATE0 = 0, + MDFN_ROTATE90, + MDFN_ROTATE180, + MDFN_ROTATE270 +}; + +typedef enum +{ + VIDSYS_NONE, // Can be used internally in system emulation code, but it is an error condition to let it continue to be + // after the Load() or LoadCD() function returns! + VIDSYS_PAL, + VIDSYS_PAL_M, // Same timing as NTSC, but uses PAL-style colour encoding + VIDSYS_NTSC, + VIDSYS_SECAM +} VideoSystems; + +typedef enum +{ + GMT_CART, // Self-explanatory! + GMT_ARCADE, // VS Unisystem, PC-10... + GMT_DISK, // Famicom Disk System, mostly + GMT_CDROM, // PC Engine CD, PC-FX + GMT_PLAYER // Music player(NSF, HES, GSF) +} GameMediumTypes; + +#include "state.h" +#include "settings-common.h" + +#ifdef WANT_DEBUGGER +// #ifdef WANT_DEBUGGER +// typedef struct DebuggerInfoStruct; +// #else +#include "debug.h" + +#endif + +typedef enum +{ + IDIT_BUTTON, // 1-bit + IDIT_BUTTON_CAN_RAPID, // 1-bit + IDIT_BUTTON_BYTE, // 8-bits, Button as a byte instead of a bit. + IDIT_X_AXIS, // (mouse) 32-bits, signed, fixed-point: 1.15.16 - in-screen/window range: [0.0, nominal_width) + IDIT_Y_AXIS, // (mouse) 32-bits, signed, fixed-point: 1.15.16 - in-screen/window range: [0.0, nominal_height) + IDIT_X_AXIS_REL, // (mouse) 32-bits, signed + IDIT_Y_AXIS_REL, // (mouse) 32-bits, signed + IDIT_BYTE_SPECIAL, + IDIT_BUTTON_ANALOG, // 32-bits, 0 - 32767 + IDIT_RUMBLE, // 32-bits, lower 8 bits are weak rumble(0-255), next 8 bits are strong rumble(0-255), 0=no rumble, 255=max rumble. Somewhat subjective, too... + // May extend to 16-bit each in the future. + // It's also rather a special case of game module->driver code communication. +} InputDeviceInputType; + +#include "git-virtb.h" + +typedef struct +{ + const char *SettingName; // No spaces, shouldbe all a-z0-9 and _. Definitely no ~! + const char *Name; + /*const InputDeviceInputVB VirtButton;*/ + const int ConfigOrder; // Configuration order during in-game config process, -1 for no config. + const InputDeviceInputType Type; + const char *ExcludeName; // SettingName of a button that can't be pressed at the same time as this button + // due to physical limitations. + + const char *RotateName[3]; // 90, 180, 270 + //const char *Rotate180Name; + //const char *Rotate270Name; +} InputDeviceInputInfoStruct; + +typedef struct +{ + const char *ShortName; + const char *FullName; + const char *Description; + + //struct InputPortInfoStruct *PortExpanderDeviceInfo; + const void *PortExpanderDeviceInfo; // DON'T USE, IT'S NOT IMPLEMENTED PROPERLY CURRENTLY. + int NumInputs; // Usually just the number of buttons....OR if PortExpanderDeviceInfo is non-NULL, it's the number of input + // ports this port expander device provides. + const InputDeviceInputInfoStruct *IDII; +} InputDeviceInfoStruct; + +typedef struct +{ + const char *ShortName; + const char *FullName; + int NumTypes; // Number of unique input devices available for this input port + InputDeviceInfoStruct *DeviceInfo; + const char *DefaultDevice; // Default device for this port. +} InputPortInfoStruct; + +typedef struct +{ + int InputPorts; + const InputPortInfoStruct *Types; +} InputInfoStruct; + + +// Miscellaneous system/simple commands(power, reset, dip switch toggles, coin insert, etc.) +// (for DoSimpleCommand() ) +enum +{ + MDFN_MSC_RESET = 0x01, + MDFN_MSC_POWER = 0x02, + + MDFN_MSC_INSERT_COIN = 0x07, + + // If we ever support arcade systems, we'll abstract DIP switches differently...maybe. + MDFN_MSC_TOGGLE_DIP0 = 0x10, + MDFN_MSC_TOGGLE_DIP1, + MDFN_MSC_TOGGLE_DIP2, + MDFN_MSC_TOGGLE_DIP3, + MDFN_MSC_TOGGLE_DIP4, + MDFN_MSC_TOGGLE_DIP5, + MDFN_MSC_TOGGLE_DIP6, + MDFN_MSC_TOGGLE_DIP7, + MDFN_MSC_TOGGLE_DIP8, + MDFN_MSC_TOGGLE_DIP9, + MDFN_MSC_TOGGLE_DIP10, + MDFN_MSC_TOGGLE_DIP11, + MDFN_MSC_TOGGLE_DIP12, + MDFN_MSC_TOGGLE_DIP13, + MDFN_MSC_TOGGLE_DIP14, + MDFN_MSC_TOGGLE_DIP15, + + + // n of DISKn translates to is emulation module specific. + MDFN_MSC_INSERT_DISK0 = 0x20, + MDFN_MSC_INSERT_DISK1, + MDFN_MSC_INSERT_DISK2, + MDFN_MSC_INSERT_DISK3, + MDFN_MSC_INSERT_DISK4, + MDFN_MSC_INSERT_DISK5, + MDFN_MSC_INSERT_DISK6, + MDFN_MSC_INSERT_DISK7, + MDFN_MSC_INSERT_DISK8, + MDFN_MSC_INSERT_DISK9, + MDFN_MSC_INSERT_DISK10, + MDFN_MSC_INSERT_DISK11, + MDFN_MSC_INSERT_DISK12, + MDFN_MSC_INSERT_DISK13, + MDFN_MSC_INSERT_DISK14, + MDFN_MSC_INSERT_DISK15, + + MDFN_MSC_INSERT_DISK = 0x30, + MDFN_MSC_EJECT_DISK = 0x31, + + // This command should select the next disk or disk side in the set and use MDFN_DispMessage() to show which disk is selected. + // (If it's only allowed while a disk is ejected, or not, is emulation module specific. + MDFN_MSC_SELECT_DISK = 0x32, + + MDFN_MSC__LAST = 0x3F // WARNING: Increasing(or having the enum'd value of a command greater than this :b) this will necessitate a change to the netplay protocol. +}; + +typedef struct +{ + // Pitch(32-bit) must be equal to width and >= the "fb_width" specified in the MDFNGI struct for the emulated system. + // Height must be >= to the "fb_height" specified in the MDFNGI struct for the emulated system. + // The framebuffer pointed to by surface->pixels is written to by the system emulation code. + MDFN_Surface *surface; + + // Will be set to TRUE if the video pixel format has changed since the last call to Emulate(), FALSE otherwise. + // Will be set to TRUE on the first call to the Emulate() function/method + bool VideoFormatChanged; + + // Set by the system emulation code every frame, to denote the horizontal and vertical offsets of the image, and the size + // of the image. If the emulated system sets the elements of LineWidths, then the horizontal offset(x) and width(w) of this structure + // are ignored while drawing the image. + MDFN_Rect DisplayRect; + + // Pointer to an array of MDFN_Rect, number of elements = fb_height, set by the driver code. Individual MDFN_Rect structs written + // to by system emulation code. If the emulated system doesn't support multiple screen widths per frame, or if you handle + // such a situation by outputting at a constant width-per-frame that is the least-common-multiple of the screen widths, then + // you can ignore this. If you do wish to use this, you must set all elements every frame. + MDFN_Rect *LineWidths; + + // TODO + bool *IsFMV; + + // Set(optionally) by emulation code. If InterlaceOn is true, then assume field height is 1/2 DisplayRect.h, and + // only every other line in surface (with the start line defined by InterlacedField) has valid data + // (it's up to internal Mednafen code to deinterlace it). + bool InterlaceOn; + bool InterlaceField; + + // Skip rendering this frame if true. Set by the driver code. + int skip; + + // + // If sound is disabled, the driver code must set SoundRate to false, SoundBuf to NULL, SoundBufMaxSize to 0. + + // Will be set to TRUE if the sound format(only rate for now, at least) has changed since the last call to Emulate(), FALSE otherwise. + // Will be set to TRUE on the first call to the Emulate() function/method + bool SoundFormatChanged; + + // Sound rate. Set by driver side. + double SoundRate; + + // Pointer to sound buffer, set by the driver code, that the emulation code should render sound to. + // Guaranteed to be at least 500ms in length, but emulation code really shouldn't exceed 40ms or so. Additionally, if emulation code + // generates >= 100ms, + // DEPRECATED: Emulation code may set this pointer to a sound buffer internal to the emulation module. + int16 *SoundBuf; + + // Maximum size of the sound buffer, in frames. Set by the driver code. + int32 SoundBufMaxSize; + + // Number of frames currently in internal sound buffer. Set by the system emulation code, to be read by the driver code. + int32 SoundBufSize; + int32 SoundBufSizeALMS; // SoundBufSize value at last MidSync(), 0 + // if mid sync isn't implemented for the emulation module in use. + + // Number of cycles that this frame consumed, using MDFNGI::MasterClock as a time base. + // Set by emulation code. + int64 MasterCycles; + int64 MasterCyclesALMS; // MasterCycles value at last MidSync(), 0 + // if mid sync isn't implemented for the emulation module in use. + + // Current sound volume(0.000...<=volume<=1.000...). If, after calling Emulate(), it is still != 1, Mednafen will handle it internally. + // Emulation modules can handle volume themselves if they like, for speed reasons. If they do, afterwards, they should set its value to 1. + double SoundVolume; + + // Current sound speed multiplier. Set by the driver code. If, after calling Emulate(), it is still != 1, Mednafen will handle it internally + // by resampling the audio. This means that emulation modules can handle(and set the value to 1 after handling it) it if they want to get the most + // performance possible. HOWEVER, emulation modules must make sure the value is in a range(with minimum and maximum) that their code can handle + // before they try to handle it. + double soundmultiplier; + + // True if we want to rewind one frame. Set by the driver code. + bool NeedRewind; + + // Sound reversal during state rewinding is normally done in mednafen.cpp, but + // individual system emulation code can also do it if this is set, and clear it after it's done. + // (Also, the driver code shouldn't touch this variable) + bool NeedSoundReverse; + +} EmulateSpecStruct; + +typedef enum +{ + MODPRIO_INTERNAL_EXTRA_LOW = 0, // For "cdplay" module, mostly. + + MODPRIO_INTERNAL_LOW = 10, + MODPRIO_EXTERNAL_LOW = 20, + MODPRIO_INTERNAL_HIGH = 30, + MODPRIO_EXTERNAL_HIGH = 40 +} ModPrio; + +class CDIF; + +typedef struct +{ + /* Private functions to Mednafen. Do not call directly + from the driver code, or else bad things shall happen. Maybe. Probably not, but don't + do it(yet)! + */ + // Short system name, lowercase a-z, 0-9, and _ are the only allowable characters! + const char *shortname; + + // Full system name. Preferably English letters, but can be UTF8 + const char *fullname; + + // Pointer to an array of FileExtensionSpecStruct, with the last entry being { NULL, NULL } to terminate the list. + // This list is used to make best-guess choices, when calling the TestMagic*() functions would be unreasonable, such + // as when scanning a ZIP archive for a file to load. The list may also be used in the future for GUI file open windows. + const FileExtensionSpecStruct *FileExtensions; + + ModPrio ModulePriority; + + #ifdef WANT_DEBUGGER + DebuggerInfoStruct *Debugger; + #else + void *Debugger; + #endif + InputInfoStruct *InputInfo; + + // Returns 1 on successful load, 0 on fatal error(deprecated: -1 on unrecognized format) + int (*Load)(const char *name, MDFNFILE *fp); + + // Return TRUE if the file is a recognized type, FALSE if not. + bool (*TestMagic)(const char *name, MDFNFILE *fp); + + // + // (*CDInterfaces).size() is guaranteed to be >= 1. + int (*LoadCD)(std::vector *CDInterfaces); + bool (*TestMagicCD)(std::vector *CDInterfaces); + + void (*CloseGame)(void); + + void (*SetLayerEnableMask)(uint64 mask); // Video + const char *LayerNames; + + void (*SetChanEnableMask)(uint64 mask); // Audio(TODO, placeholder) + const char *ChanNames; + + void (*InstallReadPatch)(uint32 address); + void (*RemoveReadPatches)(void); + uint8 (*MemRead)(uint32 addr); + + bool SaveStateAltersState; // true for bsnes and some libco-style emulators, false otherwise. + // Main save state routine, called by the save state code in state.cpp. + // When saving, load is set to 0. When loading, load is set to the version field of the save state being loaded. + // data_only is true when the save state data is temporary, such as being saved into memory for state rewinding. + int (*StateAction)(StateMem *sm, int load, int data_only); + + void (*Emulate)(EmulateSpecStruct *espec); + void (*SetInput)(int port, const char *type, void *ptr); + + void (*DoSimpleCommand)(int cmd); + + const MDFNSetting *Settings; + + // Time base for EmulateSpecStruct::MasterCycles + #define MDFN_MASTERCLOCK_FIXED(n) ((int64)((double)(n) * (1LL << 32))) + int64 MasterClock; + + uint32 fps; // frames per second * 65536 * 256, truncated + + // multires is a hint that, if set, indicates that the system has fairly programmable video modes(particularly, the ability + // to display multiple horizontal resolutions, such as the PCE, PC-FX, or Genesis). In practice, it will cause the driver + // code to set the linear interpolation on by default. + // + // lcm_width and lcm_height are the least common multiples of all possible + // resolutions in the frame buffer as specified by DisplayRect/LineWidths(Ex for PCE: widths of 256, 341.333333, 512, + // lcm = 1024) + // + // nominal_width and nominal_height specify the resolution that Mednafen should display + // the framebuffer image in at 1x scaling, scaled from the dimensions of DisplayRect, and optionally the LineWidths array + // passed through espec to the Emulate() function. + // + bool multires; + + int lcm_width; + int lcm_height; + + void *dummy_separator; // + + int nominal_width; + int nominal_height; + + int fb_width; // Width of the framebuffer(not necessarily width of the image). MDFN_Surface width should be >= this. + int fb_height; // Height of the framebuffer passed to the Emulate() function(not necessarily height of the image) + + int soundchan; // Number of output sound channels. + + + int rotated; + + uint8 *name; /* Game name, UTF8 encoding */ + uint8 MD5[16]; + uint8 GameSetMD5[16]; /* A unique ID for the game set this CD belongs to, only used in PC-FX emulation. */ + bool GameSetMD5Valid; /* True if GameSetMD5 is valid. */ + + + int soundrate; /* For Ogg Vorbis expansion sound wacky support. 0 for default. */ + + VideoSystems VideoSystem; + GameMediumTypes GameType; + + //int DiskLogicalCount; // A single double-sided disk would be 2 here. + //const char *DiskNames; // Null-terminated. + + const char *cspecial; /* Special cart expansion: DIP switches, barcode reader, etc. */ + + std::vectorDesiredInput; // Desired input device for the input ports, NULL for don't care + + double mouse_sensitivity; +} MDFNGI; +#endif diff --git a/libmednahawk/src/hw_cpu/.Tpo b/libmednahawk/src/hw_cpu/.Tpo new file mode 100644 index 0000000000..10c945f725 --- /dev/null +++ b/libmednahawk/src/hw_cpu/.Tpo @@ -0,0 +1,389 @@ +v810/v810_cpu.o: v810/v810_cpu.cpp ../../mednafen/mednafen.h \ + ../../mednafen/types.h ../../include/config.h /usr/include/assert.h \ + /usr/include/features.h /usr/include/bits/predefs.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/include/inttypes.h /usr/include/stdint.h /usr/include/bits/wchar.h \ + ../../mednafen/error.h /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/stddef.h \ + /usr/include/xlocale.h /usr/include/bits/string3.h \ + /usr/include/c++/4.4/exception \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/stdio.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/bits/stdio2.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib.h ../../mednafen/gettext.h \ + /usr/include/libintl.h ../../mednafen/math_ops.h ../../mednafen/git.h \ + /usr/include/c++/4.4/string /usr/include/c++/4.4/bits/stringfwd.h \ + /usr/include/c++/4.4/bits/char_traits.h \ + /usr/include/c++/4.4/bits/stl_algobase.h /usr/include/c++/4.4/cstddef \ + /usr/include/c++/4.4/bits/functexcept.h \ + /usr/include/c++/4.4/exception_defines.h \ + /usr/include/c++/4.4/bits/cpp_type_traits.h \ + /usr/include/c++/4.4/ext/type_traits.h \ + /usr/include/c++/4.4/ext/numeric_traits.h \ + /usr/include/c++/4.4/bits/stl_pair.h /usr/include/c++/4.4/bits/move.h \ + /usr/include/c++/4.4/bits/concept_check.h \ + /usr/include/c++/4.4/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.4/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.4/bits/stl_iterator.h \ + /usr/include/c++/4.4/debug/debug.h /usr/include/c++/4.4/bits/postypes.h \ + /usr/include/c++/4.4/cwchar /usr/include/bits/wchar2.h \ + /usr/include/c++/4.4/bits/allocator.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.4/ext/new_allocator.h /usr/include/c++/4.4/new \ + /usr/include/c++/4.4/bits/localefwd.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.4/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.4/iosfwd \ + /usr/include/c++/4.4/cctype /usr/include/ctype.h \ + /usr/include/c++/4.4/bits/ostream_insert.h \ + /usr/include/c++/4.4/cxxabi-forced.h \ + /usr/include/c++/4.4/bits/stl_function.h \ + /usr/include/c++/4.4/backward/binders.h \ + /usr/include/c++/4.4/bits/basic_string.h \ + /usr/include/c++/4.4/ext/atomicity.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + /usr/include/bits/unistd.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.4/initializer_list \ + /usr/include/c++/4.4/bits/basic_string.tcc ../../mednafen/video.h \ + ../../mednafen/video/surface.h /usr/include/c++/4.4/vector \ + /usr/include/c++/4.4/bits/stl_construct.h \ + /usr/include/c++/4.4/bits/stl_uninitialized.h \ + /usr/include/c++/4.4/bits/stl_vector.h \ + /usr/include/c++/4.4/bits/stl_bvector.h \ + /usr/include/c++/4.4/bits/vector.tcc ../../mednafen/video/primitives.h \ + ../../mednafen/video/text.h /usr/include/c++/4.4/algorithm \ + /usr/include/c++/4.4/bits/stl_algo.h /usr/include/c++/4.4/cstdlib \ + /usr/include/c++/4.4/bits/algorithmfwd.h \ + /usr/include/c++/4.4/bits/stl_heap.h \ + /usr/include/c++/4.4/bits/stl_tempbuf.h ../../mednafen/sound.h \ + ../../mednafen/file.h ../../mednafen/state.h /usr/include/zlib.h \ + /usr/include/zconf.h /usr/include/zlibdefs.h \ + ../../mednafen/state-common.h ../../mednafen/settings-common.h \ + ../../mednafen/debug.h ../../mednafen/git-virtb.h \ + ../../mednafen/settings.h ../../mednafen/mednafen-driver.h \ + ../../mednafen/endian.h ../../mednafen/memory.h v810/v810_opt.h \ + v810/v810_cpu.h v810/fpu-new/softfloat.h v810/v810_cpuD.h \ + v810/v810_oploop.inc v810/v810_op_table.inc v810/v810_do_am.h + +../../mednafen/mednafen.h: + +../../mednafen/types.h: + +../../include/config.h: + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/inttypes.h: + +/usr/include/stdint.h: + +/usr/include/bits/wchar.h: + +../../mednafen/error.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string3.h: + +/usr/include/c++/4.4/exception: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/stdio.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.4.3/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib.h: + +../../mednafen/gettext.h: + +/usr/include/libintl.h: + +../../mednafen/math_ops.h: + +../../mednafen/git.h: + +/usr/include/c++/4.4/string: + +/usr/include/c++/4.4/bits/stringfwd.h: + +/usr/include/c++/4.4/bits/char_traits.h: + +/usr/include/c++/4.4/bits/stl_algobase.h: + +/usr/include/c++/4.4/cstddef: + +/usr/include/c++/4.4/bits/functexcept.h: + +/usr/include/c++/4.4/exception_defines.h: + +/usr/include/c++/4.4/bits/cpp_type_traits.h: + +/usr/include/c++/4.4/ext/type_traits.h: + +/usr/include/c++/4.4/ext/numeric_traits.h: + +/usr/include/c++/4.4/bits/stl_pair.h: + +/usr/include/c++/4.4/bits/move.h: + +/usr/include/c++/4.4/bits/concept_check.h: + +/usr/include/c++/4.4/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.4/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.4/bits/stl_iterator.h: + +/usr/include/c++/4.4/debug/debug.h: + +/usr/include/c++/4.4/bits/postypes.h: + +/usr/include/c++/4.4/cwchar: + +/usr/include/bits/wchar2.h: + +/usr/include/c++/4.4/bits/allocator.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.4/ext/new_allocator.h: + +/usr/include/c++/4.4/new: + +/usr/include/c++/4.4/bits/localefwd.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.4/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.4/iosfwd: + +/usr/include/c++/4.4/cctype: + +/usr/include/ctype.h: + +/usr/include/c++/4.4/bits/ostream_insert.h: + +/usr/include/c++/4.4/cxxabi-forced.h: + +/usr/include/c++/4.4/bits/stl_function.h: + +/usr/include/c++/4.4/backward/binders.h: + +/usr/include/c++/4.4/bits/basic_string.h: + +/usr/include/c++/4.4/ext/atomicity.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/signal.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/bits/unistd.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.4/initializer_list: + +/usr/include/c++/4.4/bits/basic_string.tcc: + +../../mednafen/video.h: + +../../mednafen/video/surface.h: + +/usr/include/c++/4.4/vector: + +/usr/include/c++/4.4/bits/stl_construct.h: + +/usr/include/c++/4.4/bits/stl_uninitialized.h: + +/usr/include/c++/4.4/bits/stl_vector.h: + +/usr/include/c++/4.4/bits/stl_bvector.h: + +/usr/include/c++/4.4/bits/vector.tcc: + +../../mednafen/video/primitives.h: + +../../mednafen/video/text.h: + +/usr/include/c++/4.4/algorithm: + +/usr/include/c++/4.4/bits/stl_algo.h: + +/usr/include/c++/4.4/cstdlib: + +/usr/include/c++/4.4/bits/algorithmfwd.h: + +/usr/include/c++/4.4/bits/stl_heap.h: + +/usr/include/c++/4.4/bits/stl_tempbuf.h: + +../../mednafen/sound.h: + +../../mednafen/file.h: + +../../mednafen/state.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +/usr/include/zlibdefs.h: + +../../mednafen/state-common.h: + +../../mednafen/settings-common.h: + +../../mednafen/debug.h: + +../../mednafen/git-virtb.h: + +../../mednafen/settings.h: + +../../mednafen/mednafen-driver.h: + +../../mednafen/endian.h: + +../../mednafen/memory.h: + +v810/v810_opt.h: + +v810/v810_cpu.h: + +v810/fpu-new/softfloat.h: + +v810/v810_cpuD.h: + +v810/v810_oploop.inc: + +v810/v810_op_table.inc: + +v810/v810_do_am.h: diff --git a/libmednahawk/src/hw_cpu/Makefile.am b/libmednahawk/src/hw_cpu/Makefile.am new file mode 100644 index 0000000000..45c244ba07 --- /dev/null +++ b/libmednahawk/src/hw_cpu/Makefile.am @@ -0,0 +1,33 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip -I$(top_srcdir) + +noinst_LIBRARIES = libmdfnhwcpu.a + +#SUBDIRS = c68k +#libmdfnhwcpu_a_DEPENDENCIES = c68k/ + +#SUBDIRS = c68k +#libmdfnhwcpu_a_DEPENDENCIES = c68k/ + +noinst_PROGRAMS = gen68k +gen68k_SOURCES = c68k/c68kexec.c c68k/c68k.c c68k/gen68k.c +gen68k_CFLAGS = -DC68K_GEN +gen68k_LDFLAGS = -DC68K_GEN +nodist_pkgdata_DATA = c68k/c68k_op0.inc +c68k/c68k_op0.inc: gen68k$(EXEEXT) + cd c68k && ../gen68k$(EXEEXT) + + +libmdfnhwcpu_a_SOURCES = c68k/c68kexec.c c68k/c68k.c + +libmdfnhwcpu_a_SOURCES += z80-fuse/z80.cpp z80-fuse/z80_ops.cpp + +libmdfnhwcpu_a_SOURCES += v810/v810_cpu.cpp v810/v810_cpuD.cpp v810/fpu-new/softfloat.c + +libmdfnhwcpu_a_SOURCES += huc6280/huc6280.cpp + +if WANT_DEBUGGER +libmdfnhwcpu_a_SOURCES += huc6280/dis6280.cpp +endif + diff --git a/libmednahawk/src/hw_cpu/Makefile.in b/libmednahawk/src/hw_cpu/Makefile.in new file mode 100644 index 0000000000..798e13952c --- /dev/null +++ b/libmednahawk/src/hw_cpu/Makefile.in @@ -0,0 +1,864 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +noinst_PROGRAMS = gen68k$(EXEEXT) +@WANT_DEBUGGER_TRUE@am__append_1 = huc6280/dis6280.cpp +subdir = src/hw_cpu +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libmdfnhwcpu_a_AR = $(AR) $(ARFLAGS) +libmdfnhwcpu_a_LIBADD = +am__libmdfnhwcpu_a_SOURCES_DIST = c68k/c68kexec.c c68k/c68k.c \ + z80-fuse/z80.cpp z80-fuse/z80_ops.cpp v810/v810_cpu.cpp \ + v810/v810_cpuD.cpp v810/fpu-new/softfloat.c \ + huc6280/huc6280.cpp huc6280/dis6280.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@WANT_DEBUGGER_TRUE@am__objects_1 = huc6280/dis6280.$(OBJEXT) +am_libmdfnhwcpu_a_OBJECTS = c68k/c68kexec.$(OBJEXT) \ + c68k/c68k.$(OBJEXT) z80-fuse/z80.$(OBJEXT) \ + z80-fuse/z80_ops.$(OBJEXT) v810/v810_cpu.$(OBJEXT) \ + v810/v810_cpuD.$(OBJEXT) v810/fpu-new/softfloat.$(OBJEXT) \ + huc6280/huc6280.$(OBJEXT) $(am__objects_1) +libmdfnhwcpu_a_OBJECTS = $(am_libmdfnhwcpu_a_OBJECTS) +PROGRAMS = $(noinst_PROGRAMS) +am_gen68k_OBJECTS = c68k/gen68k-c68kexec.$(OBJEXT) \ + c68k/gen68k-c68k.$(OBJEXT) c68k/gen68k-gen68k.$(OBJEXT) +gen68k_OBJECTS = $(am_gen68k_OBJECTS) +gen68k_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +gen68k_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gen68k_CFLAGS) $(CFLAGS) \ + $(gen68k_LDFLAGS) $(LDFLAGS) -o $@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libmdfnhwcpu_a_SOURCES) $(gen68k_SOURCES) +DIST_SOURCES = $(am__libmdfnhwcpu_a_SOURCES_DIST) $(gen68k_SOURCES) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(pkgdatadir)" +DATA = $(nodist_pkgdata_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip -I$(top_srcdir) +noinst_LIBRARIES = libmdfnhwcpu.a +gen68k_SOURCES = c68k/c68kexec.c c68k/c68k.c c68k/gen68k.c +gen68k_CFLAGS = -DC68K_GEN +gen68k_LDFLAGS = -DC68K_GEN +nodist_pkgdata_DATA = c68k/c68k_op0.inc +libmdfnhwcpu_a_SOURCES = c68k/c68kexec.c c68k/c68k.c z80-fuse/z80.cpp \ + z80-fuse/z80_ops.cpp v810/v810_cpu.cpp v810/v810_cpuD.cpp \ + v810/fpu-new/softfloat.c huc6280/huc6280.cpp $(am__append_1) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/hw_cpu/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/hw_cpu/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +c68k/$(am__dirstamp): + @$(MKDIR_P) c68k + @: > c68k/$(am__dirstamp) +c68k/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) c68k/$(DEPDIR) + @: > c68k/$(DEPDIR)/$(am__dirstamp) +c68k/c68kexec.$(OBJEXT): c68k/$(am__dirstamp) \ + c68k/$(DEPDIR)/$(am__dirstamp) +c68k/c68k.$(OBJEXT): c68k/$(am__dirstamp) \ + c68k/$(DEPDIR)/$(am__dirstamp) +z80-fuse/$(am__dirstamp): + @$(MKDIR_P) z80-fuse + @: > z80-fuse/$(am__dirstamp) +z80-fuse/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) z80-fuse/$(DEPDIR) + @: > z80-fuse/$(DEPDIR)/$(am__dirstamp) +z80-fuse/z80.$(OBJEXT): z80-fuse/$(am__dirstamp) \ + z80-fuse/$(DEPDIR)/$(am__dirstamp) +z80-fuse/z80_ops.$(OBJEXT): z80-fuse/$(am__dirstamp) \ + z80-fuse/$(DEPDIR)/$(am__dirstamp) +v810/$(am__dirstamp): + @$(MKDIR_P) v810 + @: > v810/$(am__dirstamp) +v810/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) v810/$(DEPDIR) + @: > v810/$(DEPDIR)/$(am__dirstamp) +v810/v810_cpu.$(OBJEXT): v810/$(am__dirstamp) \ + v810/$(DEPDIR)/$(am__dirstamp) +v810/v810_cpuD.$(OBJEXT): v810/$(am__dirstamp) \ + v810/$(DEPDIR)/$(am__dirstamp) +v810/fpu-new/$(am__dirstamp): + @$(MKDIR_P) v810/fpu-new + @: > v810/fpu-new/$(am__dirstamp) +v810/fpu-new/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) v810/fpu-new/$(DEPDIR) + @: > v810/fpu-new/$(DEPDIR)/$(am__dirstamp) +v810/fpu-new/softfloat.$(OBJEXT): v810/fpu-new/$(am__dirstamp) \ + v810/fpu-new/$(DEPDIR)/$(am__dirstamp) +huc6280/$(am__dirstamp): + @$(MKDIR_P) huc6280 + @: > huc6280/$(am__dirstamp) +huc6280/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) huc6280/$(DEPDIR) + @: > huc6280/$(DEPDIR)/$(am__dirstamp) +huc6280/huc6280.$(OBJEXT): huc6280/$(am__dirstamp) \ + huc6280/$(DEPDIR)/$(am__dirstamp) +huc6280/dis6280.$(OBJEXT): huc6280/$(am__dirstamp) \ + huc6280/$(DEPDIR)/$(am__dirstamp) +libmdfnhwcpu.a: $(libmdfnhwcpu_a_OBJECTS) $(libmdfnhwcpu_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmdfnhwcpu.a + $(AM_V_AR)$(libmdfnhwcpu_a_AR) libmdfnhwcpu.a $(libmdfnhwcpu_a_OBJECTS) $(libmdfnhwcpu_a_LIBADD) + $(AM_V_at)$(RANLIB) libmdfnhwcpu.a + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +c68k/gen68k-c68kexec.$(OBJEXT): c68k/$(am__dirstamp) \ + c68k/$(DEPDIR)/$(am__dirstamp) +c68k/gen68k-c68k.$(OBJEXT): c68k/$(am__dirstamp) \ + c68k/$(DEPDIR)/$(am__dirstamp) +c68k/gen68k-gen68k.$(OBJEXT): c68k/$(am__dirstamp) \ + c68k/$(DEPDIR)/$(am__dirstamp) +gen68k$(EXEEXT): $(gen68k_OBJECTS) $(gen68k_DEPENDENCIES) + @rm -f gen68k$(EXEEXT) + $(AM_V_CCLD)$(gen68k_LINK) $(gen68k_OBJECTS) $(gen68k_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f c68k/c68k.$(OBJEXT) + -rm -f c68k/c68kexec.$(OBJEXT) + -rm -f c68k/gen68k-c68k.$(OBJEXT) + -rm -f c68k/gen68k-c68kexec.$(OBJEXT) + -rm -f c68k/gen68k-gen68k.$(OBJEXT) + -rm -f huc6280/dis6280.$(OBJEXT) + -rm -f huc6280/huc6280.$(OBJEXT) + -rm -f v810/fpu-new/softfloat.$(OBJEXT) + -rm -f v810/v810_cpu.$(OBJEXT) + -rm -f v810/v810_cpuD.$(OBJEXT) + -rm -f z80-fuse/z80.$(OBJEXT) + -rm -f z80-fuse/z80_ops.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@c68k/$(DEPDIR)/c68k.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@c68k/$(DEPDIR)/c68kexec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@c68k/$(DEPDIR)/gen68k-c68k.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@c68k/$(DEPDIR)/gen68k-c68kexec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@c68k/$(DEPDIR)/gen68k-gen68k.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@huc6280/$(DEPDIR)/dis6280.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@huc6280/$(DEPDIR)/huc6280.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v810/$(DEPDIR)/v810_cpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v810/$(DEPDIR)/v810_cpuD.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v810/fpu-new/$(DEPDIR)/softfloat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@z80-fuse/$(DEPDIR)/z80.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@z80-fuse/$(DEPDIR)/z80_ops.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +c68k/gen68k-c68kexec.o: c68k/c68kexec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -MT c68k/gen68k-c68kexec.o -MD -MP -MF c68k/$(DEPDIR)/gen68k-c68kexec.Tpo -c -o c68k/gen68k-c68kexec.o `test -f 'c68k/c68kexec.c' || echo '$(srcdir)/'`c68k/c68kexec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) c68k/$(DEPDIR)/gen68k-c68kexec.Tpo c68k/$(DEPDIR)/gen68k-c68kexec.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='c68k/c68kexec.c' object='c68k/gen68k-c68kexec.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -c -o c68k/gen68k-c68kexec.o `test -f 'c68k/c68kexec.c' || echo '$(srcdir)/'`c68k/c68kexec.c + +c68k/gen68k-c68kexec.obj: c68k/c68kexec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -MT c68k/gen68k-c68kexec.obj -MD -MP -MF c68k/$(DEPDIR)/gen68k-c68kexec.Tpo -c -o c68k/gen68k-c68kexec.obj `if test -f 'c68k/c68kexec.c'; then $(CYGPATH_W) 'c68k/c68kexec.c'; else $(CYGPATH_W) '$(srcdir)/c68k/c68kexec.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) c68k/$(DEPDIR)/gen68k-c68kexec.Tpo c68k/$(DEPDIR)/gen68k-c68kexec.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='c68k/c68kexec.c' object='c68k/gen68k-c68kexec.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -c -o c68k/gen68k-c68kexec.obj `if test -f 'c68k/c68kexec.c'; then $(CYGPATH_W) 'c68k/c68kexec.c'; else $(CYGPATH_W) '$(srcdir)/c68k/c68kexec.c'; fi` + +c68k/gen68k-c68k.o: c68k/c68k.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -MT c68k/gen68k-c68k.o -MD -MP -MF c68k/$(DEPDIR)/gen68k-c68k.Tpo -c -o c68k/gen68k-c68k.o `test -f 'c68k/c68k.c' || echo '$(srcdir)/'`c68k/c68k.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) c68k/$(DEPDIR)/gen68k-c68k.Tpo c68k/$(DEPDIR)/gen68k-c68k.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='c68k/c68k.c' object='c68k/gen68k-c68k.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -c -o c68k/gen68k-c68k.o `test -f 'c68k/c68k.c' || echo '$(srcdir)/'`c68k/c68k.c + +c68k/gen68k-c68k.obj: c68k/c68k.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -MT c68k/gen68k-c68k.obj -MD -MP -MF c68k/$(DEPDIR)/gen68k-c68k.Tpo -c -o c68k/gen68k-c68k.obj `if test -f 'c68k/c68k.c'; then $(CYGPATH_W) 'c68k/c68k.c'; else $(CYGPATH_W) '$(srcdir)/c68k/c68k.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) c68k/$(DEPDIR)/gen68k-c68k.Tpo c68k/$(DEPDIR)/gen68k-c68k.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='c68k/c68k.c' object='c68k/gen68k-c68k.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -c -o c68k/gen68k-c68k.obj `if test -f 'c68k/c68k.c'; then $(CYGPATH_W) 'c68k/c68k.c'; else $(CYGPATH_W) '$(srcdir)/c68k/c68k.c'; fi` + +c68k/gen68k-gen68k.o: c68k/gen68k.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -MT c68k/gen68k-gen68k.o -MD -MP -MF c68k/$(DEPDIR)/gen68k-gen68k.Tpo -c -o c68k/gen68k-gen68k.o `test -f 'c68k/gen68k.c' || echo '$(srcdir)/'`c68k/gen68k.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) c68k/$(DEPDIR)/gen68k-gen68k.Tpo c68k/$(DEPDIR)/gen68k-gen68k.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='c68k/gen68k.c' object='c68k/gen68k-gen68k.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -c -o c68k/gen68k-gen68k.o `test -f 'c68k/gen68k.c' || echo '$(srcdir)/'`c68k/gen68k.c + +c68k/gen68k-gen68k.obj: c68k/gen68k.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -MT c68k/gen68k-gen68k.obj -MD -MP -MF c68k/$(DEPDIR)/gen68k-gen68k.Tpo -c -o c68k/gen68k-gen68k.obj `if test -f 'c68k/gen68k.c'; then $(CYGPATH_W) 'c68k/gen68k.c'; else $(CYGPATH_W) '$(srcdir)/c68k/gen68k.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) c68k/$(DEPDIR)/gen68k-gen68k.Tpo c68k/$(DEPDIR)/gen68k-gen68k.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='c68k/gen68k.c' object='c68k/gen68k-gen68k.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gen68k_CFLAGS) $(CFLAGS) -c -o c68k/gen68k-gen68k.obj `if test -f 'c68k/gen68k.c'; then $(CYGPATH_W) 'c68k/gen68k.c'; else $(CYGPATH_W) '$(srcdir)/c68k/gen68k.c'; fi` + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-nodist_pkgdataDATA: $(nodist_pkgdata_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" + @list='$(nodist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ + done + +uninstall-nodist_pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(pkgdatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f c68k/$(DEPDIR)/$(am__dirstamp) + -rm -f c68k/$(am__dirstamp) + -rm -f huc6280/$(DEPDIR)/$(am__dirstamp) + -rm -f huc6280/$(am__dirstamp) + -rm -f v810/$(DEPDIR)/$(am__dirstamp) + -rm -f v810/$(am__dirstamp) + -rm -f v810/fpu-new/$(DEPDIR)/$(am__dirstamp) + -rm -f v810/fpu-new/$(am__dirstamp) + -rm -f z80-fuse/$(DEPDIR)/$(am__dirstamp) + -rm -f z80-fuse/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf c68k/$(DEPDIR) huc6280/$(DEPDIR) v810/$(DEPDIR) v810/fpu-new/$(DEPDIR) z80-fuse/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-nodist_pkgdataDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf c68k/$(DEPDIR) huc6280/$(DEPDIR) v810/$(DEPDIR) v810/fpu-new/$(DEPDIR) z80-fuse/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-nodist_pkgdataDATA + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-nodist_pkgdataDATA \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-nodist_pkgdataDATA + +c68k/c68k_op0.inc: gen68k$(EXEEXT) + cd c68k && ../gen68k$(EXEEXT) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/hw_cpu/c68k/c68k.c b/libmednahawk/src/hw_cpu/c68k/c68k.c new file mode 100644 index 0000000000..41a5905d8a --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k.c @@ -0,0 +1,330 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/********************************************************************************* + * + * C68K (68000 CPU emulator) version 0.80 + * Compiled with Dev-C++ + * Copyright 2003-2004 Stephane Dallongeville + * + ********************************************************************************/ + +/* Modified heavily for usage in Mednafen: + + Made opcode fetches go through the external memory read function. + Added A-line and F-line emulation. + Added packed save state code. + Gutted the timing code. + Scrapped the goto table code. + Redid the C/X flag calculation on some 32-bit instructions. + + Other stuff I can't remember. + + If you want a more-or-less original version of C68k(which, in its original state, can be quite fast), + check out Yabause's code(though I think my A-line and F-line emulation improvements are in that tree now too). +*/ + +#include +#include + +#include "c68k.h" + +// shared global variable +////////////////////////// + +c68k_struc C68K; + +// include macro file +////////////////////// + +#include "c68kmac.inc" + +// prototype +///////////// + +u8 C68K_FASTCALL C68k_Read8_Dummy(const u32 adr); +u16 C68K_FASTCALL C68k_Read16_Dummy(const u32 adr); +void C68K_FASTCALL C68k_Write8_Dummy(const u32 adr, u8 data); +void C68K_FASTCALL C68k_Write16_Dummy(const u32 adr, u16 data); + +static u32 C68k_Read_Long(c68k_struc *cpu, u32 adr); + +s32 C68K_FASTCALL C68k_Interrupt_Ack_Dummy(s32 level); +void C68K_FASTCALL C68k_Reset_Dummy(void); + +// core main functions +/////////////////////// + +void C68k_Init(c68k_struc *cpu, C68K_INT_CALLBACK *int_cb) +{ + memset(cpu, 0, sizeof(c68k_struc)); + + C68k_Set_ReadB(cpu, C68k_Read8_Dummy); + C68k_Set_ReadW(cpu, C68k_Read16_Dummy); + + C68k_Set_WriteB(cpu, C68k_Write8_Dummy); + C68k_Set_WriteW(cpu, C68k_Write16_Dummy); + + C68k_Set_TAS_Hack(cpu, 0); + + //C68k_Set_Debug(cpu, NULL); + + if (int_cb) cpu->Interrupt_CallBack = int_cb; + else cpu->Interrupt_CallBack = C68k_Interrupt_Ack_Dummy; + cpu->Reset_CallBack = C68k_Reset_Dummy; +} + +s32 C68K_FASTCALL C68k_Reset(c68k_struc *cpu) +{ + //memset(cpu, 0, (u32)(&(cpu->dirty1)) - (u32)(&(cpu->D[0]))); + memset(cpu, 0, ((u8 *)&(cpu->dirty1)) - ((u8 *)&(cpu->D[0]))); + + cpu->flag_I = 7; + cpu->flag_S = C68K_SR_S; + + cpu->A[7] = C68k_Read_Long(cpu, 0); + C68k_Set_PC(cpu, C68k_Read_Long(cpu, 4)); + + return cpu->Status; +} + +void C68k_Set_TAS_Hack(c68k_struc *cpu, int value) +{ + cpu->TAS_Hack = value ? 1 : 0; +} + +///////////////////////////////// + +void C68K_FASTCALL C68k_Set_IRQ(c68k_struc *cpu, s32 level) +{ + cpu->IRQLine = level; + //cpu->Status &= ~(C68K_HALTED | C68K_WAITING); +} + +// Read / Write dummy functions +//////////////////////////////// + +u8 C68K_FASTCALL C68k_Read8_Dummy(const u32 adr) +{ + return 0; +} + +u16 C68K_FASTCALL C68k_Read16_Dummy(const u32 adr) +{ + return 0; +} + +void C68K_FASTCALL C68k_Write8_Dummy(const u32 adr, u8 data) +{ + +} + +void C68K_FASTCALL C68k_Write16_Dummy(const u32 adr, u16 data) +{ + +} + +s32 C68K_FASTCALL C68k_Interrupt_Ack_Dummy(s32 level) +{ + // return vector + return (C68K_INTERRUPT_AUTOVECTOR_EX + level); +} + +void C68K_FASTCALL C68k_Reset_Dummy(void) +{ + +} + +// Read / Write core functions +/////////////////////////////// + +static u32 C68k_Read_Long(c68k_struc *cpu, u32 adr) +{ + return (cpu->Read_Word(adr) << 16) | (cpu->Read_Word(adr + 2) & 0xFFFF); +} + +// setting core functions +////////////////////////// + +void C68k_Set_ReadB(c68k_struc *cpu, C68K_READ8 *Func) +{ + cpu->Read_Byte = Func; +} + +void C68k_Set_ReadW(c68k_struc *cpu, C68K_READ16 *Func) +{ + cpu->Read_Word = Func; +} + +void C68k_Set_WriteB(c68k_struc *cpu, C68K_WRITE8 *Func) +{ + cpu->Write_Byte = Func; +} + +void C68k_Set_WriteW(c68k_struc *cpu, C68K_WRITE16 *Func) +{ + cpu->Write_Word = Func; +} + +// externals main functions +//////////////////////////// + +u32 C68k_Get_DReg(c68k_struc *cpu, u32 num) +{ + return cpu->D[num]; +} + +u32 C68k_Get_AReg(c68k_struc *cpu, u32 num) +{ + return cpu->A[num]; +} + +u32 C68k_Get_PC(c68k_struc *cpu) +{ + return (cpu->PC); +} + +u32 C68k_Get_SR(c68k_struc *cpu) +{ + c68k_struc *CPU = cpu; + return GET_SR; +} + +u32 C68k_Get_USP(c68k_struc *cpu) +{ + if (cpu->flag_S) return cpu->USP; + else return cpu->A[7]; +} + +u32 C68k_Get_MSP(c68k_struc *cpu) +{ + if (cpu->flag_S) return cpu->A[7]; + else return cpu->USP; +} + +void C68k_Set_DReg(c68k_struc *cpu, u32 num, u32 val) +{ + cpu->D[num] = val; +} + +void C68k_Set_AReg(c68k_struc *cpu, u32 num, u32 val) +{ + cpu->A[num] = val; +} + +void C68k_Set_PC(c68k_struc *cpu, u32 val) +{ + cpu->PC = val; +} + +void C68k_Set_SR(c68k_struc *cpu, u32 val) +{ + c68k_struc *CPU = cpu; + SET_SR(val); +} + +void C68k_Set_USP(c68k_struc *cpu, u32 val) +{ + if (cpu->flag_S) cpu->USP = val; + else cpu->A[7] = val; +} + +void C68k_Set_MSP(c68k_struc *cpu, u32 val) +{ + if (cpu->flag_S) cpu->A[7] = val; + else cpu->USP = val; +} + + +unsigned int C68k_Get_State_Max_Len(void) +{ + //printf("loopie: %d\n", (int)sizeof(c68k_struc)); + return(512); +} + +#define PACK_U32(val) { u32 temp = (val); buffer[index++] = temp; buffer[index++] = temp >> 8; buffer[index++] = temp >> 16; buffer[index++] = temp >> 24; } +#define UNPACK_U32(target) { if(index >= length) goto BadBad; target = buffer[index] | (buffer[index + 1] << 8) | (buffer[index + 2] << 16) | (buffer[index + 3] << 24); index += 4; } + +void C68k_Save_State(c68k_struc *cpu, u8 *buffer) +{ + int index = 0; + int length = C68k_Get_State_Max_Len(); + int i; + + PACK_U32(0); //0xDEADBEEF); + + for(i = 0; i < 16; i++) + { + PACK_U32(cpu->DA[i]); + } + PACK_U32(cpu->flag_C); + PACK_U32(cpu->flag_V); + PACK_U32(cpu->flag_notZ); + PACK_U32(cpu->flag_N); + PACK_U32(cpu->flag_X); + PACK_U32(cpu->flag_I); + PACK_U32(cpu->flag_S); + + PACK_U32(cpu->USP); + PACK_U32(cpu->PC); + PACK_U32(cpu->Status); + PACK_U32(cpu->IRQLine); + + PACK_U32(0xDEADBEEF); + + //printf("Save: %d\n", index); +} + +void C68k_Load_State(c68k_struc *cpu, const u8 *buffer) +{ + int index = 0; + int length = C68k_Get_State_Max_Len(); + int version; + int i; + u32 footer_check; + + UNPACK_U32(version); + + for(i = 0; i < 16; i++) + { + UNPACK_U32(cpu->DA[i]); + } + UNPACK_U32(cpu->flag_C); + UNPACK_U32(cpu->flag_V); + UNPACK_U32(cpu->flag_notZ); + UNPACK_U32(cpu->flag_N); + UNPACK_U32(cpu->flag_X); + UNPACK_U32(cpu->flag_I); + UNPACK_U32(cpu->flag_S); + + UNPACK_U32(cpu->USP); + UNPACK_U32(cpu->PC); + UNPACK_U32(cpu->Status); + UNPACK_U32(cpu->IRQLine); + UNPACK_U32(footer_check); + + //printf("%08x\n", footer_check); + //printf("Load: %d\n", index); + + return; + BadBad: + puts("Very bad"); + + return; +} diff --git a/libmednahawk/src/hw_cpu/c68k/c68k.cpp b/libmednahawk/src/hw_cpu/c68k/c68k.cpp new file mode 100644 index 0000000000..45fbb9b0a0 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k.cpp @@ -0,0 +1,361 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/********************************************************************************* + * + * C68K (68000 CPU emulator) version 0.80 + * Compiled with Dev-C++ + * Copyright 2003-2004 Stephane Dallongeville + * + ********************************************************************************/ + +/* Modified heavily for usage in Mednafen: + + Made opcode fetches go through the external memory read function. + Added A-line and F-line emulation. + Added packed save state code. + Gutted the timing code. + Scrapped the goto table code. + Redid the C/X flag calculation on some 32-bit instructions. + + Other stuff I can't remember. + + If you want a more-or-less original version of C68k(which, in its original state, can be quite fast), + check out Yabause's code(though I think my A-line and F-line emulation improvements are in that tree now too). +*/ + +#include +#include + +#include "c68k.h" + +// shared global variable +////////////////////////// + +c68k_struc C68K; + +// include macro file +////////////////////// + +#include "c68kmac.inc" + +// prototype +///////////// + +u8 C68K_FASTCALL C68k_Read8_Dummy(const u32 adr); +u16 C68K_FASTCALL C68k_Read16_Dummy(const u32 adr); +void C68K_FASTCALL C68k_Write8_Dummy(const u32 adr, u8 data); +void C68K_FASTCALL C68k_Write16_Dummy(const u32 adr, u16 data); + +u32 C68k_Read_Byte(c68k_struc *cpu, u32 adr); +u32 C68k_Read_Word(c68k_struc *cpu, u32 adr); +u32 C68k_Read_Long(c68k_struc *cpu, u32 adr); +void C68k_Write_Byte(c68k_struc *cpu, u32 adr, u32 data); +void C68k_Write_Word(c68k_struc *cpu, u32 adr, u32 data); +void C68k_Write_Long(c68k_struc *cpu, u32 adr, u32 data); + +s32 C68K_FASTCALL C68k_Interrupt_Ack_Dummy(s32 level); +void C68K_FASTCALL C68k_Reset_Dummy(void); + +// core main functions +/////////////////////// + +void C68k_Init(c68k_struc *cpu, C68K_INT_CALLBACK *int_cb) +{ + memset(cpu, 0, sizeof(c68k_struc)); + + C68k_Set_ReadB(cpu, C68k_Read8_Dummy); + C68k_Set_ReadW(cpu, C68k_Read16_Dummy); + + C68k_Set_WriteB(cpu, C68k_Write8_Dummy); + C68k_Set_WriteW(cpu, C68k_Write16_Dummy); + + C68k_Set_TAS_Hack(cpu, 0); + + //C68k_Set_Debug(cpu, NULL); + + if (int_cb) cpu->Interrupt_CallBack = int_cb; + else cpu->Interrupt_CallBack = C68k_Interrupt_Ack_Dummy; + cpu->Reset_CallBack = C68k_Reset_Dummy; +} + +s32 C68K_FASTCALL C68k_Reset(c68k_struc *cpu) +{ + //memset(cpu, 0, (u32)(&(cpu->dirty1)) - (u32)(&(cpu->D[0]))); + memset(cpu, 0, ((u8 *)&(cpu->dirty1)) - ((u8 *)&(cpu->D[0]))); + + cpu->flag_I = 7; + cpu->flag_S = C68K_SR_S; + + cpu->A[7] = C68k_Read_Long(cpu, 0); + C68k_Set_PC(cpu, C68k_Read_Long(cpu, 4)); + + return cpu->Status; +} + +void C68k_Set_TAS_Hack(c68k_struc *cpu, int value) +{ + cpu->TAS_Hack = value ? 1 : 0; +} + +///////////////////////////////// + +void C68K_FASTCALL C68k_Set_IRQ(c68k_struc *cpu, s32 level) +{ + cpu->IRQLine = level; + //cpu->Status &= ~(C68K_HALTED | C68K_WAITING); +} + +// Read / Write dummy functions +//////////////////////////////// + +u8 C68K_FASTCALL C68k_Read8_Dummy(const u32 adr) +{ + return 0; +} + +u16 C68K_FASTCALL C68k_Read16_Dummy(const u32 adr) +{ + return 0; +} + +void C68K_FASTCALL C68k_Write8_Dummy(const u32 adr, u8 data) +{ + +} + +void C68K_FASTCALL C68k_Write16_Dummy(const u32 adr, u16 data) +{ + +} + +s32 C68K_FASTCALL C68k_Interrupt_Ack_Dummy(s32 level) +{ + // return vector + return (C68K_INTERRUPT_AUTOVECTOR_EX + level); +} + +void C68K_FASTCALL C68k_Reset_Dummy(void) +{ + +} + +// Read / Write core functions +/////////////////////////////// + +u32 C68k_Read_Byte(c68k_struc *cpu, u32 adr) +{ + return cpu->Read_Byte(adr); +} + +u32 C68k_Read_Word(c68k_struc *cpu, u32 adr) +{ + return cpu->Read_Word(adr); +} + +u32 C68k_Read_Long(c68k_struc *cpu, u32 adr) +{ + return (cpu->Read_Word(adr) << 16) | (cpu->Read_Word(adr + 2) & 0xFFFF); +} + +void C68k_Write_Byte(c68k_struc *cpu, u32 adr, u32 data) +{ + cpu->Write_Byte(adr, data); +} + +void C68k_Write_Word(c68k_struc *cpu, u32 adr, u32 data) +{ + cpu->Write_Word(adr, data); +} + +void C68k_Write_Long(c68k_struc *cpu, u32 adr, u32 data) +{ + cpu->Write_Word(adr, data >> 16); + cpu->Write_Word(adr + 2, data & 0xFFFF); +} + +// setting core functions +////////////////////////// + +void C68k_Set_ReadB(c68k_struc *cpu, C68K_READ8 *Func) +{ + cpu->Read_Byte = Func; +} + +void C68k_Set_ReadW(c68k_struc *cpu, C68K_READ16 *Func) +{ + cpu->Read_Word = Func; +} + +void C68k_Set_WriteB(c68k_struc *cpu, C68K_WRITE8 *Func) +{ + cpu->Write_Byte = Func; +} + +void C68k_Set_WriteW(c68k_struc *cpu, C68K_WRITE16 *Func) +{ + cpu->Write_Word = Func; +} + +// externals main functions +//////////////////////////// + +u32 C68k_Get_DReg(c68k_struc *cpu, u32 num) +{ + return cpu->D[num]; +} + +u32 C68k_Get_AReg(c68k_struc *cpu, u32 num) +{ + return cpu->A[num]; +} + +u32 C68k_Get_PC(c68k_struc *cpu) +{ + return (cpu->PC); +} + +u32 C68k_Get_SR(c68k_struc *cpu) +{ + c68k_struc *CPU = cpu; + return GET_SR; +} + +u32 C68k_Get_USP(c68k_struc *cpu) +{ + if (cpu->flag_S) return cpu->USP; + else return cpu->A[7]; +} + +u32 C68k_Get_MSP(c68k_struc *cpu) +{ + if (cpu->flag_S) return cpu->A[7]; + else return cpu->USP; +} + +void C68k_Set_DReg(c68k_struc *cpu, u32 num, u32 val) +{ + cpu->D[num] = val; +} + +void C68k_Set_AReg(c68k_struc *cpu, u32 num, u32 val) +{ + cpu->A[num] = val; +} + +void C68k_Set_PC(c68k_struc *cpu, u32 val) +{ + cpu->PC = val; +} + +void C68k_Set_SR(c68k_struc *cpu, u32 val) +{ + c68k_struc *CPU = cpu; + SET_SR(val); +} + +void C68k_Set_USP(c68k_struc *cpu, u32 val) +{ + if (cpu->flag_S) cpu->USP = val; + else cpu->A[7] = val; +} + +void C68k_Set_MSP(c68k_struc *cpu, u32 val) +{ + if (cpu->flag_S) cpu->A[7] = val; + else cpu->USP = val; +} + + +unsigned int C68k_Get_State_Max_Len(void) +{ + //printf("loopie: %d\n", (int)sizeof(c68k_struc)); + return(512); +} + +#define PACK_U32(val) { u32 temp = (val); buffer[index++] = temp; buffer[index++] = temp >> 8; buffer[index++] = temp >> 16; buffer[index++] = temp >> 24; } +#define UNPACK_U32(target) { if(index >= length) goto BadBad; target = buffer[index] | (buffer[index + 1] << 8) | (buffer[index + 2] << 16) | (buffer[index + 3] << 24); index += 4; } + +void C68k_Save_State(c68k_struc *cpu, u8 *buffer) +{ + int index = 0; + int length = C68k_Get_State_Max_Len(); + int i; + + PACK_U32(0); //0xDEADBEEF); + + for(i = 0; i < 16; i++) + { + PACK_U32(cpu->DA[i]); + } + PACK_U32(cpu->flag_C); + PACK_U32(cpu->flag_V); + PACK_U32(cpu->flag_notZ); + PACK_U32(cpu->flag_N); + PACK_U32(cpu->flag_X); + PACK_U32(cpu->flag_I); + PACK_U32(cpu->flag_S); + + PACK_U32(cpu->USP); + PACK_U32(cpu->PC); + PACK_U32(cpu->Status); + PACK_U32(cpu->IRQLine); + + PACK_U32(0xDEADBEEF); + + //printf("Save: %d\n", index); +} + +void C68k_Load_State(c68k_struc *cpu, const u8 *buffer) +{ + int index = 0; + int length = C68k_Get_State_Max_Len(); + int version; + int i; + u32 footer_check; + + UNPACK_U32(version); + + for(i = 0; i < 16; i++) + { + UNPACK_U32(cpu->DA[i]); + } + UNPACK_U32(cpu->flag_C); + UNPACK_U32(cpu->flag_V); + UNPACK_U32(cpu->flag_notZ); + UNPACK_U32(cpu->flag_N); + UNPACK_U32(cpu->flag_X); + UNPACK_U32(cpu->flag_I); + UNPACK_U32(cpu->flag_S); + + UNPACK_U32(cpu->USP); + UNPACK_U32(cpu->PC); + UNPACK_U32(cpu->Status); + UNPACK_U32(cpu->IRQLine); + UNPACK_U32(footer_check); + + //printf("%08x\n", footer_check); + //printf("Load: %d\n", index); + + return; + BadBad: + puts("Very bad"); + + return; +} diff --git a/libmednahawk/src/hw_cpu/c68k/c68k.h b/libmednahawk/src/hw_cpu/c68k/c68k.h new file mode 100644 index 0000000000..3766834feb --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k.h @@ -0,0 +1,233 @@ +/* Copyright 2003-2004 Stephane Dallongeville + Copyright 2004 Theo Berkau + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/********************************************************************************* + * C68K.H : + * + * C68K include file + * + ********************************************************************************/ + +#ifndef _C68K_H_ +#define _C68K_H_ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#define C68K_FASTCALL +#include + +typedef int64_t s64; +typedef uint64_t u64; + +typedef int32_t s32; +typedef uint32_t u32; + +typedef int16_t s16; +typedef uint16_t u16; + +typedef int8_t s8; +typedef uint8_t u8; + +#ifdef __cplusplus +extern "C" { +#endif + +// setting +/////////// + +//#define C68K_GEN + +#ifdef MSB_FIRST +#define C68K_BIG_ENDIAN +#endif + +#ifdef C68K_BIG_ENDIAN + #define BYTE_OFF 3 + #define WORD_OFF 1 +#else + #define BYTE_OFF 0 + #define WORD_OFF 0 +#endif + +#define C68K_NO_JUMP_TABLE +//#define C68K_CONST_JUMP_TABLE +//#define C68K_AUTOVECTOR_CALLBACK + +// 68K core types definitions +////////////////////////////// + +#define C68K_ADR_BITS 24 + +#define C68K_SR_C_SFT 8 +#define C68K_SR_V_SFT 7 +#define C68K_SR_Z_SFT 0 +#define C68K_SR_N_SFT 7 +#define C68K_SR_X_SFT 8 + +#define C68K_SR_S_SFT 13 + +#define C68K_SR_C (1 << C68K_SR_C_SFT) +#define C68K_SR_V (1 << C68K_SR_V_SFT) +#define C68K_SR_Z 0 +#define C68K_SR_N (1 << C68K_SR_N_SFT) +#define C68K_SR_X (1 << C68K_SR_X_SFT) + +#define C68K_SR_S (1 << C68K_SR_S_SFT) + +#define C68K_CCR_MASK 0x1F +#define C68K_SR_MASK (0x2700 | C68K_CCR_MASK) + +// exception defines taken from musashi core +#define C68K_RESET_EX 1 +#define C68K_BUS_ERROR_EX 2 +#define C68K_ADDRESS_ERROR_EX 3 +#define C68K_ILLEGAL_INSTRUCTION_EX 4 +#define C68K_ZERO_DIVIDE_EX 5 +#define C68K_CHK_EX 6 +#define C68K_TRAPV_EX 7 +#define C68K_PRIVILEGE_VIOLATION_EX 8 +#define C68K_TRACE_EX 9 +#define C68K_1010_EX 10 +#define C68K_1111_EX 11 +#define C68K_FORMAT_ERROR_EX 14 +#define C68K_UNINITIALIZED_INTERRUPT_EX 15 +#define C68K_SPURIOUS_INTERRUPT_EX 24 +#define C68K_INTERRUPT_AUTOVECTOR_EX 24 +#define C68K_TRAP_BASE_EX 32 + +#define C68K_INT_ACK_AUTOVECTOR -1 + +#define C68K_HALTED 0x02 +#define C68K_WAITING 0x04 +#define C68K_DISABLE 0x10 +#define C68K_FAULTED 0x40 + +typedef u8 C68K_FASTCALL C68K_READ8(const u32 adr); +typedef u16 C68K_FASTCALL C68K_READ16(const u32 adr); + +typedef void C68K_FASTCALL C68K_WRITE8(const u32 adr, u8 data); +typedef void C68K_FASTCALL C68K_WRITE16(const u32 adr, u16 data); + +typedef s32 C68K_FASTCALL C68K_INT_CALLBACK(s32 level); +typedef void C68K_FASTCALL C68K_RESET_CALLBACK(void); + +typedef struct +{ + union + { + struct + { + u32 D[8]; // 32 bytes aligned + u32 A[8]; // 16 bytes aligned + }; + u32 DA[16]; + }; + + u32 flag_C; // 32 bytes aligned + u32 flag_V; + u32 flag_notZ; + u32 flag_N; + + u32 flag_X; // 16 bytes aligned + u32 flag_I; + u32 flag_S; + + u32 USP; + + u32 PC; // 32 bytes aligned + u32 Status; + s32 IRQLine; + + s32 timestamp; + + u32 dirty1; + + C68K_READ8 *Read_Byte; // 32 bytes aligned + C68K_READ16 *Read_Word; + + C68K_WRITE8 *Write_Byte; + C68K_WRITE16 *Write_Word; + + C68K_INT_CALLBACK *Interrupt_CallBack; // 16 bytes aligned + C68K_RESET_CALLBACK *Reset_CallBack; + + int TAS_Hack; + +} c68k_struc; + + +// 68K core var declaration +//////////////////////////// + +extern c68k_struc C68K; + + +// 68K core function declaration +///////////////////////////////// + +void C68k_Init(c68k_struc *cpu, C68K_INT_CALLBACK *int_cb); +void C68k_Set_TAS_Hack(c68k_struc *cpu, int value); + +s32 C68K_FASTCALL C68k_Reset(c68k_struc *cpu); + +void C68K_FASTCALL C68k_Exec(c68k_struc *cpu); + +void C68K_FASTCALL C68k_Set_IRQ(c68k_struc *cpu, s32 level); + +void C68k_Set_ReadB(c68k_struc *cpu, C68K_READ8 *Func); +void C68k_Set_ReadW(c68k_struc *cpu, C68K_READ16 *Func); +void C68k_Set_WriteB(c68k_struc *cpu, C68K_WRITE8 *Func); +void C68k_Set_WriteW(c68k_struc *cpu, C68K_WRITE16 *Func); + +void C68k_Set_Debug(c68k_struc *cpu, void (*exec_hook)(u32 address, u16 opcode)); + +u32 C68k_Get_DReg(c68k_struc *cpu, u32 num); +u32 C68k_Get_AReg(c68k_struc *cpu, u32 num); +u32 C68k_Get_PC(c68k_struc *cpu); +u32 C68k_Get_SR(c68k_struc *cpu); +u32 C68k_Get_USP(c68k_struc *cpu); +u32 C68k_Get_MSP(c68k_struc *cpu); + +void C68k_Set_DReg(c68k_struc *cpu, u32 num, u32 val); +void C68k_Set_AReg(c68k_struc *cpu, u32 num, u32 val); +void C68k_Set_PC(c68k_struc *cpu, u32 val); +void C68k_Set_SR(c68k_struc *cpu, u32 val); +void C68k_Set_USP(c68k_struc *cpu, u32 val); +void C68k_Set_MSP(c68k_struc *cpu, u32 val); + +#include + +static inline void C68k_Copy_State(const c68k_struc *source, c68k_struc *dest) +{ + memcpy(&dest->D[0], &source->D[0], (&(source->dirty1)) - (&(source->D[0]))); +} + +unsigned int C68k_Get_State_Max_Len(void); +void C68k_Save_State(c68k_struc *cpu, u8 *buffer); +void C68k_Load_State(c68k_struc *cpu, const u8 *buffer); + +#ifdef __cplusplus +} +#endif + +#endif // _C68K_H_ + diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_ini.inc b/libmednahawk/src/hw_cpu/c68k/c68k_ini.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op0.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op0.inc new file mode 100644 index 0000000000..d86d8cd1a3 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op0.inc @@ -0,0 +1,8329 @@ +case 0x0001: +case 0x0002: +case 0x0003: +case 0x0004: +case 0x0005: +case 0x0006: +case 0x0007: + +// ORI +case 0x0000: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0011: +case 0x0012: +case 0x0013: +case 0x0014: +case 0x0015: +case 0x0016: +case 0x0017: + +// ORI +case 0x0010: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0019: +case 0x001A: +case 0x001B: +case 0x001C: +case 0x001D: +case 0x001E: + +// ORI +case 0x0018: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0021: +case 0x0022: +case 0x0023: +case 0x0024: +case 0x0025: +case 0x0026: + +// ORI +case 0x0020: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0029: +case 0x002A: +case 0x002B: +case 0x002C: +case 0x002D: +case 0x002E: +case 0x002F: + +// ORI +case 0x0028: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0031: +case 0x0032: +case 0x0033: +case 0x0034: +case 0x0035: +case 0x0036: +case 0x0037: + +// ORI +case 0x0030: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ORI +case 0x0038: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ORI +case 0x0039: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ORI +case 0x001F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ORI +case 0x0027: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0041: +case 0x0042: +case 0x0043: +case 0x0044: +case 0x0045: +case 0x0046: +case 0x0047: + +// ORI +case 0x0040: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0051: +case 0x0052: +case 0x0053: +case 0x0054: +case 0x0055: +case 0x0056: +case 0x0057: + +// ORI +case 0x0050: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0059: +case 0x005A: +case 0x005B: +case 0x005C: +case 0x005D: +case 0x005E: + +// ORI +case 0x0058: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0061: +case 0x0062: +case 0x0063: +case 0x0064: +case 0x0065: +case 0x0066: + +// ORI +case 0x0060: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0069: +case 0x006A: +case 0x006B: +case 0x006C: +case 0x006D: +case 0x006E: +case 0x006F: + +// ORI +case 0x0068: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0071: +case 0x0072: +case 0x0073: +case 0x0074: +case 0x0075: +case 0x0076: +case 0x0077: + +// ORI +case 0x0070: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ORI +case 0x0078: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ORI +case 0x0079: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ORI +case 0x005F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ORI +case 0x0067: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0081: +case 0x0082: +case 0x0083: +case 0x0084: +case 0x0085: +case 0x0086: +case 0x0087: + +// ORI +case 0x0080: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x0091: +case 0x0092: +case 0x0093: +case 0x0094: +case 0x0095: +case 0x0096: +case 0x0097: + +// ORI +case 0x0090: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0099: +case 0x009A: +case 0x009B: +case 0x009C: +case 0x009D: +case 0x009E: + +// ORI +case 0x0098: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x00A1: +case 0x00A2: +case 0x00A3: +case 0x00A4: +case 0x00A5: +case 0x00A6: + +// ORI +case 0x00A0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x00A9: +case 0x00AA: +case 0x00AB: +case 0x00AC: +case 0x00AD: +case 0x00AE: +case 0x00AF: + +// ORI +case 0x00A8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x00B1: +case 0x00B2: +case 0x00B3: +case 0x00B4: +case 0x00B5: +case 0x00B6: +case 0x00B7: + +// ORI +case 0x00B0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ORI +case 0x00B8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ORI +case 0x00B9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ORI +case 0x009F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ORI +case 0x00A7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ORICCR +case 0x003C: +{ + u32 res; + res = FETCH_BYTE & C68K_CCR_MASK; + PC += 2; + res |= GET_CCR; + SET_CCR(res) +} +RET(20) + +// ORISR +case 0x007C: +{ + u32 res; + if (CPU->flag_S) + { + res = FETCH_WORD & C68K_SR_MASK; + PC += 2; + res |= GET_SR; + SET_SR(res) + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 20; +goto C68k_Exec_End; +case 0x0201: +case 0x0202: +case 0x0203: +case 0x0204: +case 0x0205: +case 0x0206: +case 0x0207: + +// ANDI +case 0x0200: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0211: +case 0x0212: +case 0x0213: +case 0x0214: +case 0x0215: +case 0x0216: +case 0x0217: + +// ANDI +case 0x0210: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0219: +case 0x021A: +case 0x021B: +case 0x021C: +case 0x021D: +case 0x021E: + +// ANDI +case 0x0218: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0221: +case 0x0222: +case 0x0223: +case 0x0224: +case 0x0225: +case 0x0226: + +// ANDI +case 0x0220: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0229: +case 0x022A: +case 0x022B: +case 0x022C: +case 0x022D: +case 0x022E: +case 0x022F: + +// ANDI +case 0x0228: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0231: +case 0x0232: +case 0x0233: +case 0x0234: +case 0x0235: +case 0x0236: +case 0x0237: + +// ANDI +case 0x0230: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ANDI +case 0x0238: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ANDI +case 0x0239: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ANDI +case 0x021F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ANDI +case 0x0227: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0241: +case 0x0242: +case 0x0243: +case 0x0244: +case 0x0245: +case 0x0246: +case 0x0247: + +// ANDI +case 0x0240: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0251: +case 0x0252: +case 0x0253: +case 0x0254: +case 0x0255: +case 0x0256: +case 0x0257: + +// ANDI +case 0x0250: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0259: +case 0x025A: +case 0x025B: +case 0x025C: +case 0x025D: +case 0x025E: + +// ANDI +case 0x0258: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0261: +case 0x0262: +case 0x0263: +case 0x0264: +case 0x0265: +case 0x0266: + +// ANDI +case 0x0260: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0269: +case 0x026A: +case 0x026B: +case 0x026C: +case 0x026D: +case 0x026E: +case 0x026F: + +// ANDI +case 0x0268: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0271: +case 0x0272: +case 0x0273: +case 0x0274: +case 0x0275: +case 0x0276: +case 0x0277: + +// ANDI +case 0x0270: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ANDI +case 0x0278: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ANDI +case 0x0279: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ANDI +case 0x025F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ANDI +case 0x0267: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0281: +case 0x0282: +case 0x0283: +case 0x0284: +case 0x0285: +case 0x0286: +case 0x0287: + +// ANDI +case 0x0280: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x0291: +case 0x0292: +case 0x0293: +case 0x0294: +case 0x0295: +case 0x0296: +case 0x0297: + +// ANDI +case 0x0290: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0299: +case 0x029A: +case 0x029B: +case 0x029C: +case 0x029D: +case 0x029E: + +// ANDI +case 0x0298: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x02A1: +case 0x02A2: +case 0x02A3: +case 0x02A4: +case 0x02A5: +case 0x02A6: + +// ANDI +case 0x02A0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x02A9: +case 0x02AA: +case 0x02AB: +case 0x02AC: +case 0x02AD: +case 0x02AE: +case 0x02AF: + +// ANDI +case 0x02A8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x02B1: +case 0x02B2: +case 0x02B3: +case 0x02B4: +case 0x02B5: +case 0x02B6: +case 0x02B7: + +// ANDI +case 0x02B0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ANDI +case 0x02B8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ANDI +case 0x02B9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ANDI +case 0x029F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ANDI +case 0x02A7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ANDICCR +case 0x023C: +{ + u32 res; + res = FETCH_BYTE & C68K_CCR_MASK; + PC += 2; + res &= GET_CCR; + SET_CCR(res) +} +RET(20) + +// ANDISR +case 0x027C: +{ + u32 res; + if (CPU->flag_S) + { + res = FETCH_WORD & C68K_SR_MASK; + PC += 2; + res &= GET_SR; + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 20; +goto C68k_Exec_End; +case 0x0A01: +case 0x0A02: +case 0x0A03: +case 0x0A04: +case 0x0A05: +case 0x0A06: +case 0x0A07: + +// EORI +case 0x0A00: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0A11: +case 0x0A12: +case 0x0A13: +case 0x0A14: +case 0x0A15: +case 0x0A16: +case 0x0A17: + +// EORI +case 0x0A10: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0A19: +case 0x0A1A: +case 0x0A1B: +case 0x0A1C: +case 0x0A1D: +case 0x0A1E: + +// EORI +case 0x0A18: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0A21: +case 0x0A22: +case 0x0A23: +case 0x0A24: +case 0x0A25: +case 0x0A26: + +// EORI +case 0x0A20: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0A29: +case 0x0A2A: +case 0x0A2B: +case 0x0A2C: +case 0x0A2D: +case 0x0A2E: +case 0x0A2F: + +// EORI +case 0x0A28: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0A31: +case 0x0A32: +case 0x0A33: +case 0x0A34: +case 0x0A35: +case 0x0A36: +case 0x0A37: + +// EORI +case 0x0A30: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// EORI +case 0x0A38: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// EORI +case 0x0A39: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// EORI +case 0x0A1F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// EORI +case 0x0A27: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0A41: +case 0x0A42: +case 0x0A43: +case 0x0A44: +case 0x0A45: +case 0x0A46: +case 0x0A47: + +// EORI +case 0x0A40: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0A51: +case 0x0A52: +case 0x0A53: +case 0x0A54: +case 0x0A55: +case 0x0A56: +case 0x0A57: + +// EORI +case 0x0A50: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0A59: +case 0x0A5A: +case 0x0A5B: +case 0x0A5C: +case 0x0A5D: +case 0x0A5E: + +// EORI +case 0x0A58: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0A61: +case 0x0A62: +case 0x0A63: +case 0x0A64: +case 0x0A65: +case 0x0A66: + +// EORI +case 0x0A60: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0A69: +case 0x0A6A: +case 0x0A6B: +case 0x0A6C: +case 0x0A6D: +case 0x0A6E: +case 0x0A6F: + +// EORI +case 0x0A68: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0A71: +case 0x0A72: +case 0x0A73: +case 0x0A74: +case 0x0A75: +case 0x0A76: +case 0x0A77: + +// EORI +case 0x0A70: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// EORI +case 0x0A78: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// EORI +case 0x0A79: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// EORI +case 0x0A5F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// EORI +case 0x0A67: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0A81: +case 0x0A82: +case 0x0A83: +case 0x0A84: +case 0x0A85: +case 0x0A86: +case 0x0A87: + +// EORI +case 0x0A80: +{ + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x0A91: +case 0x0A92: +case 0x0A93: +case 0x0A94: +case 0x0A95: +case 0x0A96: +case 0x0A97: + +// EORI +case 0x0A90: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0A99: +case 0x0A9A: +case 0x0A9B: +case 0x0A9C: +case 0x0A9D: +case 0x0A9E: + +// EORI +case 0x0A98: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0AA1: +case 0x0AA2: +case 0x0AA3: +case 0x0AA4: +case 0x0AA5: +case 0x0AA6: + +// EORI +case 0x0AA0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0AA9: +case 0x0AAA: +case 0x0AAB: +case 0x0AAC: +case 0x0AAD: +case 0x0AAE: +case 0x0AAF: + +// EORI +case 0x0AA8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0AB1: +case 0x0AB2: +case 0x0AB3: +case 0x0AB4: +case 0x0AB5: +case 0x0AB6: +case 0x0AB7: + +// EORI +case 0x0AB0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// EORI +case 0x0AB8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// EORI +case 0x0AB9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// EORI +case 0x0A9F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// EORI +case 0x0AA7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// EORICCR +case 0x0A3C: +{ + u32 res; + res = FETCH_BYTE & C68K_CCR_MASK; + PC += 2; + res ^= GET_CCR; + SET_CCR(res) +} +RET(20) + +// EORISR +case 0x0A7C: +{ + u32 res; + if (CPU->flag_S) + { + res = FETCH_WORD & C68K_SR_MASK; + PC += 2; + res ^= GET_SR; + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 20; +goto C68k_Exec_End; +case 0x0401: +case 0x0402: +case 0x0403: +case 0x0404: +case 0x0405: +case 0x0406: +case 0x0407: + +// SUBI +case 0x0400: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + dst = (u8)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0411: +case 0x0412: +case 0x0413: +case 0x0414: +case 0x0415: +case 0x0416: +case 0x0417: + +// SUBI +case 0x0410: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0419: +case 0x041A: +case 0x041B: +case 0x041C: +case 0x041D: +case 0x041E: + +// SUBI +case 0x0418: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0421: +case 0x0422: +case 0x0423: +case 0x0424: +case 0x0425: +case 0x0426: + +// SUBI +case 0x0420: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0429: +case 0x042A: +case 0x042B: +case 0x042C: +case 0x042D: +case 0x042E: +case 0x042F: + +// SUBI +case 0x0428: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0431: +case 0x0432: +case 0x0433: +case 0x0434: +case 0x0435: +case 0x0436: +case 0x0437: + +// SUBI +case 0x0430: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// SUBI +case 0x0438: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// SUBI +case 0x0439: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// SUBI +case 0x041F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// SUBI +case 0x0427: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0441: +case 0x0442: +case 0x0443: +case 0x0444: +case 0x0445: +case 0x0446: +case 0x0447: + +// SUBI +case 0x0440: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + dst = (u16)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0451: +case 0x0452: +case 0x0453: +case 0x0454: +case 0x0455: +case 0x0456: +case 0x0457: + +// SUBI +case 0x0450: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0459: +case 0x045A: +case 0x045B: +case 0x045C: +case 0x045D: +case 0x045E: + +// SUBI +case 0x0458: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0461: +case 0x0462: +case 0x0463: +case 0x0464: +case 0x0465: +case 0x0466: + +// SUBI +case 0x0460: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0469: +case 0x046A: +case 0x046B: +case 0x046C: +case 0x046D: +case 0x046E: +case 0x046F: + +// SUBI +case 0x0468: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0471: +case 0x0472: +case 0x0473: +case 0x0474: +case 0x0475: +case 0x0476: +case 0x0477: + +// SUBI +case 0x0470: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// SUBI +case 0x0478: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// SUBI +case 0x0479: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// SUBI +case 0x045F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// SUBI +case 0x0467: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0481: +case 0x0482: +case 0x0483: +case 0x0484: +case 0x0485: +case 0x0486: +case 0x0487: + +// SUBI +case 0x0480: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + dst = (u32)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x0491: +case 0x0492: +case 0x0493: +case 0x0494: +case 0x0495: +case 0x0496: +case 0x0497: + +// SUBI +case 0x0490: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0499: +case 0x049A: +case 0x049B: +case 0x049C: +case 0x049D: +case 0x049E: + +// SUBI +case 0x0498: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x04A1: +case 0x04A2: +case 0x04A3: +case 0x04A4: +case 0x04A5: +case 0x04A6: + +// SUBI +case 0x04A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x04A9: +case 0x04AA: +case 0x04AB: +case 0x04AC: +case 0x04AD: +case 0x04AE: +case 0x04AF: + +// SUBI +case 0x04A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x04B1: +case 0x04B2: +case 0x04B3: +case 0x04B4: +case 0x04B5: +case 0x04B6: +case 0x04B7: + +// SUBI +case 0x04B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// SUBI +case 0x04B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// SUBI +case 0x04B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// SUBI +case 0x049F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// SUBI +case 0x04A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0601: +case 0x0602: +case 0x0603: +case 0x0604: +case 0x0605: +case 0x0606: +case 0x0607: + +// ADDI +case 0x0600: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + dst = (u8)CPU->D[(Opcode >> 0) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0611: +case 0x0612: +case 0x0613: +case 0x0614: +case 0x0615: +case 0x0616: +case 0x0617: + +// ADDI +case 0x0610: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0619: +case 0x061A: +case 0x061B: +case 0x061C: +case 0x061D: +case 0x061E: + +// ADDI +case 0x0618: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0621: +case 0x0622: +case 0x0623: +case 0x0624: +case 0x0625: +case 0x0626: + +// ADDI +case 0x0620: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0629: +case 0x062A: +case 0x062B: +case 0x062C: +case 0x062D: +case 0x062E: +case 0x062F: + +// ADDI +case 0x0628: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0631: +case 0x0632: +case 0x0633: +case 0x0634: +case 0x0635: +case 0x0636: +case 0x0637: + +// ADDI +case 0x0630: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ADDI +case 0x0638: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ADDI +case 0x0639: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ADDI +case 0x061F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// ADDI +case 0x0627: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x0641: +case 0x0642: +case 0x0643: +case 0x0644: +case 0x0645: +case 0x0646: +case 0x0647: + +// ADDI +case 0x0640: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + dst = (u16)CPU->D[(Opcode >> 0) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(0) +case 0x0651: +case 0x0652: +case 0x0653: +case 0x0654: +case 0x0655: +case 0x0656: +case 0x0657: + +// ADDI +case 0x0650: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0659: +case 0x065A: +case 0x065B: +case 0x065C: +case 0x065D: +case 0x065E: + +// ADDI +case 0x0658: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0661: +case 0x0662: +case 0x0663: +case 0x0664: +case 0x0665: +case 0x0666: + +// ADDI +case 0x0660: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0669: +case 0x066A: +case 0x066B: +case 0x066C: +case 0x066D: +case 0x066E: +case 0x066F: + +// ADDI +case 0x0668: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0671: +case 0x0672: +case 0x0673: +case 0x0674: +case 0x0675: +case 0x0676: +case 0x0677: + +// ADDI +case 0x0670: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ADDI +case 0x0678: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ADDI +case 0x0679: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ADDI +case 0x065F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// ADDI +case 0x0667: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x0681: +case 0x0682: +case 0x0683: +case 0x0684: +case 0x0685: +case 0x0686: +case 0x0687: + +// ADDI +case 0x0680: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + dst = (u32)CPU->D[(Opcode >> 0) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x0691: +case 0x0692: +case 0x0693: +case 0x0694: +case 0x0695: +case 0x0696: +case 0x0697: + +// ADDI +case 0x0690: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0699: +case 0x069A: +case 0x069B: +case 0x069C: +case 0x069D: +case 0x069E: + +// ADDI +case 0x0698: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x06A1: +case 0x06A2: +case 0x06A3: +case 0x06A4: +case 0x06A5: +case 0x06A6: + +// ADDI +case 0x06A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x06A9: +case 0x06AA: +case 0x06AB: +case 0x06AC: +case 0x06AD: +case 0x06AE: +case 0x06AF: + +// ADDI +case 0x06A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x06B1: +case 0x06B2: +case 0x06B3: +case 0x06B4: +case 0x06B5: +case 0x06B6: +case 0x06B7: + +// ADDI +case 0x06B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ADDI +case 0x06B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ADDI +case 0x06B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ADDI +case 0x069F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// ADDI +case 0x06A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x0C01: +case 0x0C02: +case 0x0C03: +case 0x0C04: +case 0x0C05: +case 0x0C06: +case 0x0C07: + +// CMPI +case 0x0C00: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + dst = (u8)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) +case 0x0C11: +case 0x0C12: +case 0x0C13: +case 0x0C14: +case 0x0C15: +case 0x0C16: +case 0x0C17: + +// CMPI +case 0x0C10: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) +case 0x0C19: +case 0x0C1A: +case 0x0C1B: +case 0x0C1C: +case 0x0C1D: +case 0x0C1E: + +// CMPI +case 0x0C18: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) +case 0x0C21: +case 0x0C22: +case 0x0C23: +case 0x0C24: +case 0x0C25: +case 0x0C26: + +// CMPI +case 0x0C20: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) +case 0x0C29: +case 0x0C2A: +case 0x0C2B: +case 0x0C2C: +case 0x0C2D: +case 0x0C2E: +case 0x0C2F: + +// CMPI +case 0x0C28: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) +case 0x0C31: +case 0x0C32: +case 0x0C33: +case 0x0C34: +case 0x0C35: +case 0x0C36: +case 0x0C37: + +// CMPI +case 0x0C30: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) + +// CMPI +case 0x0C38: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) + +// CMPI +case 0x0C39: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) + +// CMPI +case 0x0C1F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) + +// CMPI +case 0x0C27: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_BYTE; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(0) +case 0x0C41: +case 0x0C42: +case 0x0C43: +case 0x0C44: +case 0x0C45: +case 0x0C46: +case 0x0C47: + +// CMPI +case 0x0C40: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + dst = (u16)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) +case 0x0C51: +case 0x0C52: +case 0x0C53: +case 0x0C54: +case 0x0C55: +case 0x0C56: +case 0x0C57: + +// CMPI +case 0x0C50: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) +case 0x0C59: +case 0x0C5A: +case 0x0C5B: +case 0x0C5C: +case 0x0C5D: +case 0x0C5E: + +// CMPI +case 0x0C58: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) +case 0x0C61: +case 0x0C62: +case 0x0C63: +case 0x0C64: +case 0x0C65: +case 0x0C66: + +// CMPI +case 0x0C60: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) +case 0x0C69: +case 0x0C6A: +case 0x0C6B: +case 0x0C6C: +case 0x0C6D: +case 0x0C6E: +case 0x0C6F: + +// CMPI +case 0x0C68: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) +case 0x0C71: +case 0x0C72: +case 0x0C73: +case 0x0C74: +case 0x0C75: +case 0x0C76: +case 0x0C77: + +// CMPI +case 0x0C70: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) + +// CMPI +case 0x0C78: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) + +// CMPI +case 0x0C79: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) + +// CMPI +case 0x0C5F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) + +// CMPI +case 0x0C67: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_WORD; + PC += 2; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(0) +case 0x0C81: +case 0x0C82: +case 0x0C83: +case 0x0C84: +case 0x0C85: +case 0x0C86: +case 0x0C87: + +// CMPI +case 0x0C80: +{ + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + dst = (u32)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0x0C91: +case 0x0C92: +case 0x0C93: +case 0x0C94: +case 0x0C95: +case 0x0C96: +case 0x0C97: + +// CMPI +case 0x0C90: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x0C99: +case 0x0C9A: +case 0x0C9B: +case 0x0C9C: +case 0x0C9D: +case 0x0C9E: + +// CMPI +case 0x0C98: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x0CA1: +case 0x0CA2: +case 0x0CA3: +case 0x0CA4: +case 0x0CA5: +case 0x0CA6: + +// CMPI +case 0x0CA0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x0CA9: +case 0x0CAA: +case 0x0CAB: +case 0x0CAC: +case 0x0CAD: +case 0x0CAE: +case 0x0CAF: + +// CMPI +case 0x0CA8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x0CB1: +case 0x0CB2: +case 0x0CB3: +case 0x0CB4: +case 0x0CB5: +case 0x0CB6: +case 0x0CB7: + +// CMPI +case 0x0CB0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) + +// CMPI +case 0x0CB8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) + +// CMPI +case 0x0CB9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) + +// CMPI +case 0x0C9F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) + +// CMPI +case 0x0CA7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + timestamp += 8; + src = FETCH_LONG; + PC += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x0801: +case 0x0802: +case 0x0803: +case 0x0804: +case 0x0805: +case 0x0806: +case 0x0807: + +// BTSTn +case 0x0800: +{ + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; +} +RET(6) +case 0x0811: +case 0x0812: +case 0x0813: +case 0x0814: +case 0x0815: +case 0x0816: +case 0x0817: + +// BTSTn +case 0x0810: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0819: +case 0x081A: +case 0x081B: +case 0x081C: +case 0x081D: +case 0x081E: + +// BTSTn +case 0x0818: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0821: +case 0x0822: +case 0x0823: +case 0x0824: +case 0x0825: +case 0x0826: + +// BTSTn +case 0x0820: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0829: +case 0x082A: +case 0x082B: +case 0x082C: +case 0x082D: +case 0x082E: +case 0x082F: + +// BTSTn +case 0x0828: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0831: +case 0x0832: +case 0x0833: +case 0x0834: +case 0x0835: +case 0x0836: +case 0x0837: + +// BTSTn +case 0x0830: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) + +// BTSTn +case 0x0838: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) + +// BTSTn +case 0x0839: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) + +// BTSTn +case 0x083A: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) + +// BTSTn +case 0x083B: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = PC; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) + +// BTSTn +case 0x081F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) + +// BTSTn +case 0x0827: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0841: +case 0x0842: +case 0x0843: +case 0x0844: +case 0x0845: +case 0x0846: +case 0x0847: + +// BCHGn +case 0x0840: +{ + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; + res ^= src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x0851: +case 0x0852: +case 0x0853: +case 0x0854: +case 0x0855: +case 0x0856: +case 0x0857: + +// BCHGn +case 0x0850: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0859: +case 0x085A: +case 0x085B: +case 0x085C: +case 0x085D: +case 0x085E: + +// BCHGn +case 0x0858: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0861: +case 0x0862: +case 0x0863: +case 0x0864: +case 0x0865: +case 0x0866: + +// BCHGn +case 0x0860: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0869: +case 0x086A: +case 0x086B: +case 0x086C: +case 0x086D: +case 0x086E: +case 0x086F: + +// BCHGn +case 0x0868: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0871: +case 0x0872: +case 0x0873: +case 0x0874: +case 0x0875: +case 0x0876: +case 0x0877: + +// BCHGn +case 0x0870: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCHGn +case 0x0878: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCHGn +case 0x0879: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCHGn +case 0x085F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCHGn +case 0x0867: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0881: +case 0x0882: +case 0x0883: +case 0x0884: +case 0x0885: +case 0x0886: +case 0x0887: + +// BCLRn +case 0x0880: +{ + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; + res &= ~src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(10) +case 0x0891: +case 0x0892: +case 0x0893: +case 0x0894: +case 0x0895: +case 0x0896: +case 0x0897: + +// BCLRn +case 0x0890: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0899: +case 0x089A: +case 0x089B: +case 0x089C: +case 0x089D: +case 0x089E: + +// BCLRn +case 0x0898: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08A1: +case 0x08A2: +case 0x08A3: +case 0x08A4: +case 0x08A5: +case 0x08A6: + +// BCLRn +case 0x08A0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08A9: +case 0x08AA: +case 0x08AB: +case 0x08AC: +case 0x08AD: +case 0x08AE: +case 0x08AF: + +// BCLRn +case 0x08A8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08B1: +case 0x08B2: +case 0x08B3: +case 0x08B4: +case 0x08B5: +case 0x08B6: +case 0x08B7: + +// BCLRn +case 0x08B0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCLRn +case 0x08B8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCLRn +case 0x08B9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCLRn +case 0x089F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BCLRn +case 0x08A7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08C1: +case 0x08C2: +case 0x08C3: +case 0x08C4: +case 0x08C5: +case 0x08C6: +case 0x08C7: + +// BSETn +case 0x08C0: +{ + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; + res |= src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x08D1: +case 0x08D2: +case 0x08D3: +case 0x08D4: +case 0x08D5: +case 0x08D6: +case 0x08D7: + +// BSETn +case 0x08D0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08D9: +case 0x08DA: +case 0x08DB: +case 0x08DC: +case 0x08DD: +case 0x08DE: + +// BSETn +case 0x08D8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08E1: +case 0x08E2: +case 0x08E3: +case 0x08E4: +case 0x08E5: +case 0x08E6: + +// BSETn +case 0x08E0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08E9: +case 0x08EA: +case 0x08EB: +case 0x08EC: +case 0x08ED: +case 0x08EE: +case 0x08EF: + +// BSETn +case 0x08E8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x08F1: +case 0x08F2: +case 0x08F3: +case 0x08F4: +case 0x08F5: +case 0x08F6: +case 0x08F7: + +// BSETn +case 0x08F0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BSETn +case 0x08F8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BSETn +case 0x08F9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BSETn +case 0x08DF: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) + +// BSETn +case 0x08E7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = FETCH_BYTE; + PC += 2; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0300: +case 0x0500: +case 0x0700: +case 0x0900: +case 0x0B00: +case 0x0D00: +case 0x0F00: +case 0x0101: +case 0x0301: +case 0x0501: +case 0x0701: +case 0x0901: +case 0x0B01: +case 0x0D01: +case 0x0F01: +case 0x0102: +case 0x0302: +case 0x0502: +case 0x0702: +case 0x0902: +case 0x0B02: +case 0x0D02: +case 0x0F02: +case 0x0103: +case 0x0303: +case 0x0503: +case 0x0703: +case 0x0903: +case 0x0B03: +case 0x0D03: +case 0x0F03: +case 0x0104: +case 0x0304: +case 0x0504: +case 0x0704: +case 0x0904: +case 0x0B04: +case 0x0D04: +case 0x0F04: +case 0x0105: +case 0x0305: +case 0x0505: +case 0x0705: +case 0x0905: +case 0x0B05: +case 0x0D05: +case 0x0F05: +case 0x0106: +case 0x0306: +case 0x0506: +case 0x0706: +case 0x0906: +case 0x0B06: +case 0x0D06: +case 0x0F06: +case 0x0107: +case 0x0307: +case 0x0507: +case 0x0707: +case 0x0907: +case 0x0B07: +case 0x0D07: +case 0x0F07: + +// BTST +case 0x0100: +{ + u32 res; + u32 src; + timestamp += 4; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; +} +RET(2) +case 0x0310: +case 0x0510: +case 0x0710: +case 0x0910: +case 0x0B10: +case 0x0D10: +case 0x0F10: +case 0x0111: +case 0x0311: +case 0x0511: +case 0x0711: +case 0x0911: +case 0x0B11: +case 0x0D11: +case 0x0F11: +case 0x0112: +case 0x0312: +case 0x0512: +case 0x0712: +case 0x0912: +case 0x0B12: +case 0x0D12: +case 0x0F12: +case 0x0113: +case 0x0313: +case 0x0513: +case 0x0713: +case 0x0913: +case 0x0B13: +case 0x0D13: +case 0x0F13: +case 0x0114: +case 0x0314: +case 0x0514: +case 0x0714: +case 0x0914: +case 0x0B14: +case 0x0D14: +case 0x0F14: +case 0x0115: +case 0x0315: +case 0x0515: +case 0x0715: +case 0x0915: +case 0x0B15: +case 0x0D15: +case 0x0F15: +case 0x0116: +case 0x0316: +case 0x0516: +case 0x0716: +case 0x0916: +case 0x0B16: +case 0x0D16: +case 0x0F16: +case 0x0117: +case 0x0317: +case 0x0517: +case 0x0717: +case 0x0917: +case 0x0B17: +case 0x0D17: +case 0x0F17: + +// BTST +case 0x0110: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0318: +case 0x0518: +case 0x0718: +case 0x0918: +case 0x0B18: +case 0x0D18: +case 0x0F18: +case 0x0119: +case 0x0319: +case 0x0519: +case 0x0719: +case 0x0919: +case 0x0B19: +case 0x0D19: +case 0x0F19: +case 0x011A: +case 0x031A: +case 0x051A: +case 0x071A: +case 0x091A: +case 0x0B1A: +case 0x0D1A: +case 0x0F1A: +case 0x011B: +case 0x031B: +case 0x051B: +case 0x071B: +case 0x091B: +case 0x0B1B: +case 0x0D1B: +case 0x0F1B: +case 0x011C: +case 0x031C: +case 0x051C: +case 0x071C: +case 0x091C: +case 0x0B1C: +case 0x0D1C: +case 0x0F1C: +case 0x011D: +case 0x031D: +case 0x051D: +case 0x071D: +case 0x091D: +case 0x0B1D: +case 0x0D1D: +case 0x0F1D: +case 0x011E: +case 0x031E: +case 0x051E: +case 0x071E: +case 0x091E: +case 0x0B1E: +case 0x0D1E: +case 0x0F1E: + +// BTST +case 0x0118: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0320: +case 0x0520: +case 0x0720: +case 0x0920: +case 0x0B20: +case 0x0D20: +case 0x0F20: +case 0x0121: +case 0x0321: +case 0x0521: +case 0x0721: +case 0x0921: +case 0x0B21: +case 0x0D21: +case 0x0F21: +case 0x0122: +case 0x0322: +case 0x0522: +case 0x0722: +case 0x0922: +case 0x0B22: +case 0x0D22: +case 0x0F22: +case 0x0123: +case 0x0323: +case 0x0523: +case 0x0723: +case 0x0923: +case 0x0B23: +case 0x0D23: +case 0x0F23: +case 0x0124: +case 0x0324: +case 0x0524: +case 0x0724: +case 0x0924: +case 0x0B24: +case 0x0D24: +case 0x0F24: +case 0x0125: +case 0x0325: +case 0x0525: +case 0x0725: +case 0x0925: +case 0x0B25: +case 0x0D25: +case 0x0F25: +case 0x0126: +case 0x0326: +case 0x0526: +case 0x0726: +case 0x0926: +case 0x0B26: +case 0x0D26: +case 0x0F26: + +// BTST +case 0x0120: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0328: +case 0x0528: +case 0x0728: +case 0x0928: +case 0x0B28: +case 0x0D28: +case 0x0F28: +case 0x0129: +case 0x0329: +case 0x0529: +case 0x0729: +case 0x0929: +case 0x0B29: +case 0x0D29: +case 0x0F29: +case 0x012A: +case 0x032A: +case 0x052A: +case 0x072A: +case 0x092A: +case 0x0B2A: +case 0x0D2A: +case 0x0F2A: +case 0x012B: +case 0x032B: +case 0x052B: +case 0x072B: +case 0x092B: +case 0x0B2B: +case 0x0D2B: +case 0x0F2B: +case 0x012C: +case 0x032C: +case 0x052C: +case 0x072C: +case 0x092C: +case 0x0B2C: +case 0x0D2C: +case 0x0F2C: +case 0x012D: +case 0x032D: +case 0x052D: +case 0x072D: +case 0x092D: +case 0x0B2D: +case 0x0D2D: +case 0x0F2D: +case 0x012E: +case 0x032E: +case 0x052E: +case 0x072E: +case 0x092E: +case 0x0B2E: +case 0x0D2E: +case 0x0F2E: +case 0x012F: +case 0x032F: +case 0x052F: +case 0x072F: +case 0x092F: +case 0x0B2F: +case 0x0D2F: +case 0x0F2F: + +// BTST +case 0x0128: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0330: +case 0x0530: +case 0x0730: +case 0x0930: +case 0x0B30: +case 0x0D30: +case 0x0F30: +case 0x0131: +case 0x0331: +case 0x0531: +case 0x0731: +case 0x0931: +case 0x0B31: +case 0x0D31: +case 0x0F31: +case 0x0132: +case 0x0332: +case 0x0532: +case 0x0732: +case 0x0932: +case 0x0B32: +case 0x0D32: +case 0x0F32: +case 0x0133: +case 0x0333: +case 0x0533: +case 0x0733: +case 0x0933: +case 0x0B33: +case 0x0D33: +case 0x0F33: +case 0x0134: +case 0x0334: +case 0x0534: +case 0x0734: +case 0x0934: +case 0x0B34: +case 0x0D34: +case 0x0F34: +case 0x0135: +case 0x0335: +case 0x0535: +case 0x0735: +case 0x0935: +case 0x0B35: +case 0x0D35: +case 0x0F35: +case 0x0136: +case 0x0336: +case 0x0536: +case 0x0736: +case 0x0936: +case 0x0B36: +case 0x0D36: +case 0x0F36: +case 0x0137: +case 0x0337: +case 0x0537: +case 0x0737: +case 0x0937: +case 0x0B37: +case 0x0D37: +case 0x0F37: + +// BTST +case 0x0130: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0338: +case 0x0538: +case 0x0738: +case 0x0938: +case 0x0B38: +case 0x0D38: +case 0x0F38: + +// BTST +case 0x0138: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0339: +case 0x0539: +case 0x0739: +case 0x0939: +case 0x0B39: +case 0x0D39: +case 0x0F39: + +// BTST +case 0x0139: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x033A: +case 0x053A: +case 0x073A: +case 0x093A: +case 0x0B3A: +case 0x0D3A: +case 0x0F3A: + +// BTST +case 0x013A: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x033B: +case 0x053B: +case 0x073B: +case 0x093B: +case 0x0B3B: +case 0x0D3B: +case 0x0F3B: + +// BTST +case 0x013B: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x033C: +case 0x053C: +case 0x073C: +case 0x093C: +case 0x0B3C: +case 0x0D3C: +case 0x0F3C: + +// BTST +case 0x013C: +{ + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + res = FETCH_BYTE; + PC += 2; + CPU->flag_notZ = res & src; +} +RET(4) +case 0x031F: +case 0x051F: +case 0x071F: +case 0x091F: +case 0x0B1F: +case 0x0D1F: +case 0x0F1F: + +// BTST +case 0x011F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0327: +case 0x0527: +case 0x0727: +case 0x0927: +case 0x0B27: +case 0x0D27: +case 0x0F27: + +// BTST +case 0x0127: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; +} +RET(0) +case 0x0340: +case 0x0540: +case 0x0740: +case 0x0940: +case 0x0B40: +case 0x0D40: +case 0x0F40: +case 0x0141: +case 0x0341: +case 0x0541: +case 0x0741: +case 0x0941: +case 0x0B41: +case 0x0D41: +case 0x0F41: +case 0x0142: +case 0x0342: +case 0x0542: +case 0x0742: +case 0x0942: +case 0x0B42: +case 0x0D42: +case 0x0F42: +case 0x0143: +case 0x0343: +case 0x0543: +case 0x0743: +case 0x0943: +case 0x0B43: +case 0x0D43: +case 0x0F43: +case 0x0144: +case 0x0344: +case 0x0544: +case 0x0744: +case 0x0944: +case 0x0B44: +case 0x0D44: +case 0x0F44: +case 0x0145: +case 0x0345: +case 0x0545: +case 0x0745: +case 0x0945: +case 0x0B45: +case 0x0D45: +case 0x0F45: +case 0x0146: +case 0x0346: +case 0x0546: +case 0x0746: +case 0x0946: +case 0x0B46: +case 0x0D46: +case 0x0F46: +case 0x0147: +case 0x0347: +case 0x0547: +case 0x0747: +case 0x0947: +case 0x0B47: +case 0x0D47: +case 0x0F47: + +// BCHG +case 0x0140: +{ + u32 res; + u32 src; + timestamp += 4; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; + res ^= src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x0350: +case 0x0550: +case 0x0750: +case 0x0950: +case 0x0B50: +case 0x0D50: +case 0x0F50: +case 0x0151: +case 0x0351: +case 0x0551: +case 0x0751: +case 0x0951: +case 0x0B51: +case 0x0D51: +case 0x0F51: +case 0x0152: +case 0x0352: +case 0x0552: +case 0x0752: +case 0x0952: +case 0x0B52: +case 0x0D52: +case 0x0F52: +case 0x0153: +case 0x0353: +case 0x0553: +case 0x0753: +case 0x0953: +case 0x0B53: +case 0x0D53: +case 0x0F53: +case 0x0154: +case 0x0354: +case 0x0554: +case 0x0754: +case 0x0954: +case 0x0B54: +case 0x0D54: +case 0x0F54: +case 0x0155: +case 0x0355: +case 0x0555: +case 0x0755: +case 0x0955: +case 0x0B55: +case 0x0D55: +case 0x0F55: +case 0x0156: +case 0x0356: +case 0x0556: +case 0x0756: +case 0x0956: +case 0x0B56: +case 0x0D56: +case 0x0F56: +case 0x0157: +case 0x0357: +case 0x0557: +case 0x0757: +case 0x0957: +case 0x0B57: +case 0x0D57: +case 0x0F57: + +// BCHG +case 0x0150: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0358: +case 0x0558: +case 0x0758: +case 0x0958: +case 0x0B58: +case 0x0D58: +case 0x0F58: +case 0x0159: +case 0x0359: +case 0x0559: +case 0x0759: +case 0x0959: +case 0x0B59: +case 0x0D59: +case 0x0F59: +case 0x015A: +case 0x035A: +case 0x055A: +case 0x075A: +case 0x095A: +case 0x0B5A: +case 0x0D5A: +case 0x0F5A: +case 0x015B: +case 0x035B: +case 0x055B: +case 0x075B: +case 0x095B: +case 0x0B5B: +case 0x0D5B: +case 0x0F5B: +case 0x015C: +case 0x035C: +case 0x055C: +case 0x075C: +case 0x095C: +case 0x0B5C: +case 0x0D5C: +case 0x0F5C: +case 0x015D: +case 0x035D: +case 0x055D: +case 0x075D: +case 0x095D: +case 0x0B5D: +case 0x0D5D: +case 0x0F5D: +case 0x015E: +case 0x035E: +case 0x055E: +case 0x075E: +case 0x095E: +case 0x0B5E: +case 0x0D5E: +case 0x0F5E: + +// BCHG +case 0x0158: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0360: +case 0x0560: +case 0x0760: +case 0x0960: +case 0x0B60: +case 0x0D60: +case 0x0F60: +case 0x0161: +case 0x0361: +case 0x0561: +case 0x0761: +case 0x0961: +case 0x0B61: +case 0x0D61: +case 0x0F61: +case 0x0162: +case 0x0362: +case 0x0562: +case 0x0762: +case 0x0962: +case 0x0B62: +case 0x0D62: +case 0x0F62: +case 0x0163: +case 0x0363: +case 0x0563: +case 0x0763: +case 0x0963: +case 0x0B63: +case 0x0D63: +case 0x0F63: +case 0x0164: +case 0x0364: +case 0x0564: +case 0x0764: +case 0x0964: +case 0x0B64: +case 0x0D64: +case 0x0F64: +case 0x0165: +case 0x0365: +case 0x0565: +case 0x0765: +case 0x0965: +case 0x0B65: +case 0x0D65: +case 0x0F65: +case 0x0166: +case 0x0366: +case 0x0566: +case 0x0766: +case 0x0966: +case 0x0B66: +case 0x0D66: +case 0x0F66: + +// BCHG +case 0x0160: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0368: +case 0x0568: +case 0x0768: +case 0x0968: +case 0x0B68: +case 0x0D68: +case 0x0F68: +case 0x0169: +case 0x0369: +case 0x0569: +case 0x0769: +case 0x0969: +case 0x0B69: +case 0x0D69: +case 0x0F69: +case 0x016A: +case 0x036A: +case 0x056A: +case 0x076A: +case 0x096A: +case 0x0B6A: +case 0x0D6A: +case 0x0F6A: +case 0x016B: +case 0x036B: +case 0x056B: +case 0x076B: +case 0x096B: +case 0x0B6B: +case 0x0D6B: +case 0x0F6B: +case 0x016C: +case 0x036C: +case 0x056C: +case 0x076C: +case 0x096C: +case 0x0B6C: +case 0x0D6C: +case 0x0F6C: +case 0x016D: +case 0x036D: +case 0x056D: +case 0x076D: +case 0x096D: +case 0x0B6D: +case 0x0D6D: +case 0x0F6D: +case 0x016E: +case 0x036E: +case 0x056E: +case 0x076E: +case 0x096E: +case 0x0B6E: +case 0x0D6E: +case 0x0F6E: +case 0x016F: +case 0x036F: +case 0x056F: +case 0x076F: +case 0x096F: +case 0x0B6F: +case 0x0D6F: +case 0x0F6F: + +// BCHG +case 0x0168: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0370: +case 0x0570: +case 0x0770: +case 0x0970: +case 0x0B70: +case 0x0D70: +case 0x0F70: +case 0x0171: +case 0x0371: +case 0x0571: +case 0x0771: +case 0x0971: +case 0x0B71: +case 0x0D71: +case 0x0F71: +case 0x0172: +case 0x0372: +case 0x0572: +case 0x0772: +case 0x0972: +case 0x0B72: +case 0x0D72: +case 0x0F72: +case 0x0173: +case 0x0373: +case 0x0573: +case 0x0773: +case 0x0973: +case 0x0B73: +case 0x0D73: +case 0x0F73: +case 0x0174: +case 0x0374: +case 0x0574: +case 0x0774: +case 0x0974: +case 0x0B74: +case 0x0D74: +case 0x0F74: +case 0x0175: +case 0x0375: +case 0x0575: +case 0x0775: +case 0x0975: +case 0x0B75: +case 0x0D75: +case 0x0F75: +case 0x0176: +case 0x0376: +case 0x0576: +case 0x0776: +case 0x0976: +case 0x0B76: +case 0x0D76: +case 0x0F76: +case 0x0177: +case 0x0377: +case 0x0577: +case 0x0777: +case 0x0977: +case 0x0B77: +case 0x0D77: +case 0x0F77: + +// BCHG +case 0x0170: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0378: +case 0x0578: +case 0x0778: +case 0x0978: +case 0x0B78: +case 0x0D78: +case 0x0F78: + +// BCHG +case 0x0178: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0379: +case 0x0579: +case 0x0779: +case 0x0979: +case 0x0B79: +case 0x0D79: +case 0x0F79: + +// BCHG +case 0x0179: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x035F: +case 0x055F: +case 0x075F: +case 0x095F: +case 0x0B5F: +case 0x0D5F: +case 0x0F5F: + +// BCHG +case 0x015F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0367: +case 0x0567: +case 0x0767: +case 0x0967: +case 0x0B67: +case 0x0D67: +case 0x0F67: + +// BCHG +case 0x0167: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res ^= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0380: +case 0x0580: +case 0x0780: +case 0x0980: +case 0x0B80: +case 0x0D80: +case 0x0F80: +case 0x0181: +case 0x0381: +case 0x0581: +case 0x0781: +case 0x0981: +case 0x0B81: +case 0x0D81: +case 0x0F81: +case 0x0182: +case 0x0382: +case 0x0582: +case 0x0782: +case 0x0982: +case 0x0B82: +case 0x0D82: +case 0x0F82: +case 0x0183: +case 0x0383: +case 0x0583: +case 0x0783: +case 0x0983: +case 0x0B83: +case 0x0D83: +case 0x0F83: +case 0x0184: +case 0x0384: +case 0x0584: +case 0x0784: +case 0x0984: +case 0x0B84: +case 0x0D84: +case 0x0F84: +case 0x0185: +case 0x0385: +case 0x0585: +case 0x0785: +case 0x0985: +case 0x0B85: +case 0x0D85: +case 0x0F85: +case 0x0186: +case 0x0386: +case 0x0586: +case 0x0786: +case 0x0986: +case 0x0B86: +case 0x0D86: +case 0x0F86: +case 0x0187: +case 0x0387: +case 0x0587: +case 0x0787: +case 0x0987: +case 0x0B87: +case 0x0D87: +case 0x0F87: + +// BCLR +case 0x0180: +{ + u32 res; + u32 src; + timestamp += 4; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; + res &= ~src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0x0390: +case 0x0590: +case 0x0790: +case 0x0990: +case 0x0B90: +case 0x0D90: +case 0x0F90: +case 0x0191: +case 0x0391: +case 0x0591: +case 0x0791: +case 0x0991: +case 0x0B91: +case 0x0D91: +case 0x0F91: +case 0x0192: +case 0x0392: +case 0x0592: +case 0x0792: +case 0x0992: +case 0x0B92: +case 0x0D92: +case 0x0F92: +case 0x0193: +case 0x0393: +case 0x0593: +case 0x0793: +case 0x0993: +case 0x0B93: +case 0x0D93: +case 0x0F93: +case 0x0194: +case 0x0394: +case 0x0594: +case 0x0794: +case 0x0994: +case 0x0B94: +case 0x0D94: +case 0x0F94: +case 0x0195: +case 0x0395: +case 0x0595: +case 0x0795: +case 0x0995: +case 0x0B95: +case 0x0D95: +case 0x0F95: +case 0x0196: +case 0x0396: +case 0x0596: +case 0x0796: +case 0x0996: +case 0x0B96: +case 0x0D96: +case 0x0F96: +case 0x0197: +case 0x0397: +case 0x0597: +case 0x0797: +case 0x0997: +case 0x0B97: +case 0x0D97: +case 0x0F97: + +// BCLR +case 0x0190: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0398: +case 0x0598: +case 0x0798: +case 0x0998: +case 0x0B98: +case 0x0D98: +case 0x0F98: +case 0x0199: +case 0x0399: +case 0x0599: +case 0x0799: +case 0x0999: +case 0x0B99: +case 0x0D99: +case 0x0F99: +case 0x019A: +case 0x039A: +case 0x059A: +case 0x079A: +case 0x099A: +case 0x0B9A: +case 0x0D9A: +case 0x0F9A: +case 0x019B: +case 0x039B: +case 0x059B: +case 0x079B: +case 0x099B: +case 0x0B9B: +case 0x0D9B: +case 0x0F9B: +case 0x019C: +case 0x039C: +case 0x059C: +case 0x079C: +case 0x099C: +case 0x0B9C: +case 0x0D9C: +case 0x0F9C: +case 0x019D: +case 0x039D: +case 0x059D: +case 0x079D: +case 0x099D: +case 0x0B9D: +case 0x0D9D: +case 0x0F9D: +case 0x019E: +case 0x039E: +case 0x059E: +case 0x079E: +case 0x099E: +case 0x0B9E: +case 0x0D9E: +case 0x0F9E: + +// BCLR +case 0x0198: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03A0: +case 0x05A0: +case 0x07A0: +case 0x09A0: +case 0x0BA0: +case 0x0DA0: +case 0x0FA0: +case 0x01A1: +case 0x03A1: +case 0x05A1: +case 0x07A1: +case 0x09A1: +case 0x0BA1: +case 0x0DA1: +case 0x0FA1: +case 0x01A2: +case 0x03A2: +case 0x05A2: +case 0x07A2: +case 0x09A2: +case 0x0BA2: +case 0x0DA2: +case 0x0FA2: +case 0x01A3: +case 0x03A3: +case 0x05A3: +case 0x07A3: +case 0x09A3: +case 0x0BA3: +case 0x0DA3: +case 0x0FA3: +case 0x01A4: +case 0x03A4: +case 0x05A4: +case 0x07A4: +case 0x09A4: +case 0x0BA4: +case 0x0DA4: +case 0x0FA4: +case 0x01A5: +case 0x03A5: +case 0x05A5: +case 0x07A5: +case 0x09A5: +case 0x0BA5: +case 0x0DA5: +case 0x0FA5: +case 0x01A6: +case 0x03A6: +case 0x05A6: +case 0x07A6: +case 0x09A6: +case 0x0BA6: +case 0x0DA6: +case 0x0FA6: + +// BCLR +case 0x01A0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03A8: +case 0x05A8: +case 0x07A8: +case 0x09A8: +case 0x0BA8: +case 0x0DA8: +case 0x0FA8: +case 0x01A9: +case 0x03A9: +case 0x05A9: +case 0x07A9: +case 0x09A9: +case 0x0BA9: +case 0x0DA9: +case 0x0FA9: +case 0x01AA: +case 0x03AA: +case 0x05AA: +case 0x07AA: +case 0x09AA: +case 0x0BAA: +case 0x0DAA: +case 0x0FAA: +case 0x01AB: +case 0x03AB: +case 0x05AB: +case 0x07AB: +case 0x09AB: +case 0x0BAB: +case 0x0DAB: +case 0x0FAB: +case 0x01AC: +case 0x03AC: +case 0x05AC: +case 0x07AC: +case 0x09AC: +case 0x0BAC: +case 0x0DAC: +case 0x0FAC: +case 0x01AD: +case 0x03AD: +case 0x05AD: +case 0x07AD: +case 0x09AD: +case 0x0BAD: +case 0x0DAD: +case 0x0FAD: +case 0x01AE: +case 0x03AE: +case 0x05AE: +case 0x07AE: +case 0x09AE: +case 0x0BAE: +case 0x0DAE: +case 0x0FAE: +case 0x01AF: +case 0x03AF: +case 0x05AF: +case 0x07AF: +case 0x09AF: +case 0x0BAF: +case 0x0DAF: +case 0x0FAF: + +// BCLR +case 0x01A8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03B0: +case 0x05B0: +case 0x07B0: +case 0x09B0: +case 0x0BB0: +case 0x0DB0: +case 0x0FB0: +case 0x01B1: +case 0x03B1: +case 0x05B1: +case 0x07B1: +case 0x09B1: +case 0x0BB1: +case 0x0DB1: +case 0x0FB1: +case 0x01B2: +case 0x03B2: +case 0x05B2: +case 0x07B2: +case 0x09B2: +case 0x0BB2: +case 0x0DB2: +case 0x0FB2: +case 0x01B3: +case 0x03B3: +case 0x05B3: +case 0x07B3: +case 0x09B3: +case 0x0BB3: +case 0x0DB3: +case 0x0FB3: +case 0x01B4: +case 0x03B4: +case 0x05B4: +case 0x07B4: +case 0x09B4: +case 0x0BB4: +case 0x0DB4: +case 0x0FB4: +case 0x01B5: +case 0x03B5: +case 0x05B5: +case 0x07B5: +case 0x09B5: +case 0x0BB5: +case 0x0DB5: +case 0x0FB5: +case 0x01B6: +case 0x03B6: +case 0x05B6: +case 0x07B6: +case 0x09B6: +case 0x0BB6: +case 0x0DB6: +case 0x0FB6: +case 0x01B7: +case 0x03B7: +case 0x05B7: +case 0x07B7: +case 0x09B7: +case 0x0BB7: +case 0x0DB7: +case 0x0FB7: + +// BCLR +case 0x01B0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03B8: +case 0x05B8: +case 0x07B8: +case 0x09B8: +case 0x0BB8: +case 0x0DB8: +case 0x0FB8: + +// BCLR +case 0x01B8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03B9: +case 0x05B9: +case 0x07B9: +case 0x09B9: +case 0x0BB9: +case 0x0DB9: +case 0x0FB9: + +// BCLR +case 0x01B9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x039F: +case 0x059F: +case 0x079F: +case 0x099F: +case 0x0B9F: +case 0x0D9F: +case 0x0F9F: + +// BCLR +case 0x019F: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03A7: +case 0x05A7: +case 0x07A7: +case 0x09A7: +case 0x0BA7: +case 0x0DA7: +case 0x0FA7: + +// BCLR +case 0x01A7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res &= ~src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03C0: +case 0x05C0: +case 0x07C0: +case 0x09C0: +case 0x0BC0: +case 0x0DC0: +case 0x0FC0: +case 0x01C1: +case 0x03C1: +case 0x05C1: +case 0x07C1: +case 0x09C1: +case 0x0BC1: +case 0x0DC1: +case 0x0FC1: +case 0x01C2: +case 0x03C2: +case 0x05C2: +case 0x07C2: +case 0x09C2: +case 0x0BC2: +case 0x0DC2: +case 0x0FC2: +case 0x01C3: +case 0x03C3: +case 0x05C3: +case 0x07C3: +case 0x09C3: +case 0x0BC3: +case 0x0DC3: +case 0x0FC3: +case 0x01C4: +case 0x03C4: +case 0x05C4: +case 0x07C4: +case 0x09C4: +case 0x0BC4: +case 0x0DC4: +case 0x0FC4: +case 0x01C5: +case 0x03C5: +case 0x05C5: +case 0x07C5: +case 0x09C5: +case 0x0BC5: +case 0x0DC5: +case 0x0FC5: +case 0x01C6: +case 0x03C6: +case 0x05C6: +case 0x07C6: +case 0x09C6: +case 0x0BC6: +case 0x0DC6: +case 0x0FC6: +case 0x01C7: +case 0x03C7: +case 0x05C7: +case 0x07C7: +case 0x09C7: +case 0x0BC7: +case 0x0DC7: +case 0x0FC7: + +// BSET +case 0x01C0: +{ + u32 res; + u32 src; + timestamp += 4; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 31); + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_notZ = res & src; + res |= src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x03D0: +case 0x05D0: +case 0x07D0: +case 0x09D0: +case 0x0BD0: +case 0x0DD0: +case 0x0FD0: +case 0x01D1: +case 0x03D1: +case 0x05D1: +case 0x07D1: +case 0x09D1: +case 0x0BD1: +case 0x0DD1: +case 0x0FD1: +case 0x01D2: +case 0x03D2: +case 0x05D2: +case 0x07D2: +case 0x09D2: +case 0x0BD2: +case 0x0DD2: +case 0x0FD2: +case 0x01D3: +case 0x03D3: +case 0x05D3: +case 0x07D3: +case 0x09D3: +case 0x0BD3: +case 0x0DD3: +case 0x0FD3: +case 0x01D4: +case 0x03D4: +case 0x05D4: +case 0x07D4: +case 0x09D4: +case 0x0BD4: +case 0x0DD4: +case 0x0FD4: +case 0x01D5: +case 0x03D5: +case 0x05D5: +case 0x07D5: +case 0x09D5: +case 0x0BD5: +case 0x0DD5: +case 0x0FD5: +case 0x01D6: +case 0x03D6: +case 0x05D6: +case 0x07D6: +case 0x09D6: +case 0x0BD6: +case 0x0DD6: +case 0x0FD6: +case 0x01D7: +case 0x03D7: +case 0x05D7: +case 0x07D7: +case 0x09D7: +case 0x0BD7: +case 0x0DD7: +case 0x0FD7: + +// BSET +case 0x01D0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03D8: +case 0x05D8: +case 0x07D8: +case 0x09D8: +case 0x0BD8: +case 0x0DD8: +case 0x0FD8: +case 0x01D9: +case 0x03D9: +case 0x05D9: +case 0x07D9: +case 0x09D9: +case 0x0BD9: +case 0x0DD9: +case 0x0FD9: +case 0x01DA: +case 0x03DA: +case 0x05DA: +case 0x07DA: +case 0x09DA: +case 0x0BDA: +case 0x0DDA: +case 0x0FDA: +case 0x01DB: +case 0x03DB: +case 0x05DB: +case 0x07DB: +case 0x09DB: +case 0x0BDB: +case 0x0DDB: +case 0x0FDB: +case 0x01DC: +case 0x03DC: +case 0x05DC: +case 0x07DC: +case 0x09DC: +case 0x0BDC: +case 0x0DDC: +case 0x0FDC: +case 0x01DD: +case 0x03DD: +case 0x05DD: +case 0x07DD: +case 0x09DD: +case 0x0BDD: +case 0x0DDD: +case 0x0FDD: +case 0x01DE: +case 0x03DE: +case 0x05DE: +case 0x07DE: +case 0x09DE: +case 0x0BDE: +case 0x0DDE: +case 0x0FDE: + +// BSET +case 0x01D8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03E0: +case 0x05E0: +case 0x07E0: +case 0x09E0: +case 0x0BE0: +case 0x0DE0: +case 0x0FE0: +case 0x01E1: +case 0x03E1: +case 0x05E1: +case 0x07E1: +case 0x09E1: +case 0x0BE1: +case 0x0DE1: +case 0x0FE1: +case 0x01E2: +case 0x03E2: +case 0x05E2: +case 0x07E2: +case 0x09E2: +case 0x0BE2: +case 0x0DE2: +case 0x0FE2: +case 0x01E3: +case 0x03E3: +case 0x05E3: +case 0x07E3: +case 0x09E3: +case 0x0BE3: +case 0x0DE3: +case 0x0FE3: +case 0x01E4: +case 0x03E4: +case 0x05E4: +case 0x07E4: +case 0x09E4: +case 0x0BE4: +case 0x0DE4: +case 0x0FE4: +case 0x01E5: +case 0x03E5: +case 0x05E5: +case 0x07E5: +case 0x09E5: +case 0x0BE5: +case 0x0DE5: +case 0x0FE5: +case 0x01E6: +case 0x03E6: +case 0x05E6: +case 0x07E6: +case 0x09E6: +case 0x0BE6: +case 0x0DE6: +case 0x0FE6: + +// BSET +case 0x01E0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03E8: +case 0x05E8: +case 0x07E8: +case 0x09E8: +case 0x0BE8: +case 0x0DE8: +case 0x0FE8: +case 0x01E9: +case 0x03E9: +case 0x05E9: +case 0x07E9: +case 0x09E9: +case 0x0BE9: +case 0x0DE9: +case 0x0FE9: +case 0x01EA: +case 0x03EA: +case 0x05EA: +case 0x07EA: +case 0x09EA: +case 0x0BEA: +case 0x0DEA: +case 0x0FEA: +case 0x01EB: +case 0x03EB: +case 0x05EB: +case 0x07EB: +case 0x09EB: +case 0x0BEB: +case 0x0DEB: +case 0x0FEB: +case 0x01EC: +case 0x03EC: +case 0x05EC: +case 0x07EC: +case 0x09EC: +case 0x0BEC: +case 0x0DEC: +case 0x0FEC: +case 0x01ED: +case 0x03ED: +case 0x05ED: +case 0x07ED: +case 0x09ED: +case 0x0BED: +case 0x0DED: +case 0x0FED: +case 0x01EE: +case 0x03EE: +case 0x05EE: +case 0x07EE: +case 0x09EE: +case 0x0BEE: +case 0x0DEE: +case 0x0FEE: +case 0x01EF: +case 0x03EF: +case 0x05EF: +case 0x07EF: +case 0x09EF: +case 0x0BEF: +case 0x0DEF: +case 0x0FEF: + +// BSET +case 0x01E8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03F0: +case 0x05F0: +case 0x07F0: +case 0x09F0: +case 0x0BF0: +case 0x0DF0: +case 0x0FF0: +case 0x01F1: +case 0x03F1: +case 0x05F1: +case 0x07F1: +case 0x09F1: +case 0x0BF1: +case 0x0DF1: +case 0x0FF1: +case 0x01F2: +case 0x03F2: +case 0x05F2: +case 0x07F2: +case 0x09F2: +case 0x0BF2: +case 0x0DF2: +case 0x0FF2: +case 0x01F3: +case 0x03F3: +case 0x05F3: +case 0x07F3: +case 0x09F3: +case 0x0BF3: +case 0x0DF3: +case 0x0FF3: +case 0x01F4: +case 0x03F4: +case 0x05F4: +case 0x07F4: +case 0x09F4: +case 0x0BF4: +case 0x0DF4: +case 0x0FF4: +case 0x01F5: +case 0x03F5: +case 0x05F5: +case 0x07F5: +case 0x09F5: +case 0x0BF5: +case 0x0DF5: +case 0x0FF5: +case 0x01F6: +case 0x03F6: +case 0x05F6: +case 0x07F6: +case 0x09F6: +case 0x0BF6: +case 0x0DF6: +case 0x0FF6: +case 0x01F7: +case 0x03F7: +case 0x05F7: +case 0x07F7: +case 0x09F7: +case 0x0BF7: +case 0x0DF7: +case 0x0FF7: + +// BSET +case 0x01F0: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03F8: +case 0x05F8: +case 0x07F8: +case 0x09F8: +case 0x0BF8: +case 0x0DF8: +case 0x0FF8: + +// BSET +case 0x01F8: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03F9: +case 0x05F9: +case 0x07F9: +case 0x09F9: +case 0x0BF9: +case 0x0DF9: +case 0x0FF9: + +// BSET +case 0x01F9: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03DF: +case 0x05DF: +case 0x07DF: +case 0x09DF: +case 0x0BDF: +case 0x0DDF: +case 0x0FDF: + +// BSET +case 0x01DF: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x03E7: +case 0x05E7: +case 0x07E7: +case 0x09E7: +case 0x0BE7: +case 0x0DE7: +case 0x0FE7: + +// BSET +case 0x01E7: +{ + u32 adr; + u32 res; + u32 src; + timestamp += 4; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + src = 1 << (src & 7); + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_notZ = res & src; + res |= src; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x0308: +case 0x0508: +case 0x0708: +case 0x0908: +case 0x0B08: +case 0x0D08: +case 0x0F08: +case 0x0109: +case 0x0309: +case 0x0509: +case 0x0709: +case 0x0909: +case 0x0B09: +case 0x0D09: +case 0x0F09: +case 0x010A: +case 0x030A: +case 0x050A: +case 0x070A: +case 0x090A: +case 0x0B0A: +case 0x0D0A: +case 0x0F0A: +case 0x010B: +case 0x030B: +case 0x050B: +case 0x070B: +case 0x090B: +case 0x0B0B: +case 0x0D0B: +case 0x0F0B: +case 0x010C: +case 0x030C: +case 0x050C: +case 0x070C: +case 0x090C: +case 0x0B0C: +case 0x0D0C: +case 0x0F0C: +case 0x010D: +case 0x030D: +case 0x050D: +case 0x070D: +case 0x090D: +case 0x0B0D: +case 0x0D0D: +case 0x0F0D: +case 0x010E: +case 0x030E: +case 0x050E: +case 0x070E: +case 0x090E: +case 0x0B0E: +case 0x0D0E: +case 0x0F0E: +case 0x010F: +case 0x030F: +case 0x050F: +case 0x070F: +case 0x090F: +case 0x0B0F: +case 0x0D0F: +case 0x0F0F: + +// MOVEPWaD +case 0x0108: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr + 0, res) + READ_BYTE_F(adr + 2, src) + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = (res << 8) | src; +} +RET(16) +case 0x0348: +case 0x0548: +case 0x0748: +case 0x0948: +case 0x0B48: +case 0x0D48: +case 0x0F48: +case 0x0149: +case 0x0349: +case 0x0549: +case 0x0749: +case 0x0949: +case 0x0B49: +case 0x0D49: +case 0x0F49: +case 0x014A: +case 0x034A: +case 0x054A: +case 0x074A: +case 0x094A: +case 0x0B4A: +case 0x0D4A: +case 0x0F4A: +case 0x014B: +case 0x034B: +case 0x054B: +case 0x074B: +case 0x094B: +case 0x0B4B: +case 0x0D4B: +case 0x0F4B: +case 0x014C: +case 0x034C: +case 0x054C: +case 0x074C: +case 0x094C: +case 0x0B4C: +case 0x0D4C: +case 0x0F4C: +case 0x014D: +case 0x034D: +case 0x054D: +case 0x074D: +case 0x094D: +case 0x0B4D: +case 0x0D4D: +case 0x0F4D: +case 0x014E: +case 0x034E: +case 0x054E: +case 0x074E: +case 0x094E: +case 0x0B4E: +case 0x0D4E: +case 0x0F4E: +case 0x014F: +case 0x034F: +case 0x054F: +case 0x074F: +case 0x094F: +case 0x0B4F: +case 0x0D4F: +case 0x0F4F: + +// MOVEPLaD +case 0x0148: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res <<= 24; + adr += 2; + READ_BYTE_F(adr, src) + res |= src << 16; + adr += 2; + READ_BYTE_F(adr, src) + res |= src << 8; + adr += 2; + READ_BYTE_F(adr, src) + CPU->D[(Opcode >> 9) & 7] = res | src; +} +RET(24) +case 0x0388: +case 0x0588: +case 0x0788: +case 0x0988: +case 0x0B88: +case 0x0D88: +case 0x0F88: +case 0x0189: +case 0x0389: +case 0x0589: +case 0x0789: +case 0x0989: +case 0x0B89: +case 0x0D89: +case 0x0F89: +case 0x018A: +case 0x038A: +case 0x058A: +case 0x078A: +case 0x098A: +case 0x0B8A: +case 0x0D8A: +case 0x0F8A: +case 0x018B: +case 0x038B: +case 0x058B: +case 0x078B: +case 0x098B: +case 0x0B8B: +case 0x0D8B: +case 0x0F8B: +case 0x018C: +case 0x038C: +case 0x058C: +case 0x078C: +case 0x098C: +case 0x0B8C: +case 0x0D8C: +case 0x0F8C: +case 0x018D: +case 0x038D: +case 0x058D: +case 0x078D: +case 0x098D: +case 0x0B8D: +case 0x0D8D: +case 0x0F8D: +case 0x018E: +case 0x038E: +case 0x058E: +case 0x078E: +case 0x098E: +case 0x0B8E: +case 0x0D8E: +case 0x0F8E: +case 0x018F: +case 0x038F: +case 0x058F: +case 0x078F: +case 0x098F: +case 0x0B8F: +case 0x0D8F: +case 0x0F8F: + +// MOVEPWDa +case 0x0188: +{ + u32 adr; + u32 res; + res = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr + 0, res >> 8) + WRITE_BYTE_F(adr + 2, res >> 0) +} +RET(16) +case 0x03C8: +case 0x05C8: +case 0x07C8: +case 0x09C8: +case 0x0BC8: +case 0x0DC8: +case 0x0FC8: +case 0x01C9: +case 0x03C9: +case 0x05C9: +case 0x07C9: +case 0x09C9: +case 0x0BC9: +case 0x0DC9: +case 0x0FC9: +case 0x01CA: +case 0x03CA: +case 0x05CA: +case 0x07CA: +case 0x09CA: +case 0x0BCA: +case 0x0DCA: +case 0x0FCA: +case 0x01CB: +case 0x03CB: +case 0x05CB: +case 0x07CB: +case 0x09CB: +case 0x0BCB: +case 0x0DCB: +case 0x0FCB: +case 0x01CC: +case 0x03CC: +case 0x05CC: +case 0x07CC: +case 0x09CC: +case 0x0BCC: +case 0x0DCC: +case 0x0FCC: +case 0x01CD: +case 0x03CD: +case 0x05CD: +case 0x07CD: +case 0x09CD: +case 0x0BCD: +case 0x0DCD: +case 0x0FCD: +case 0x01CE: +case 0x03CE: +case 0x05CE: +case 0x07CE: +case 0x09CE: +case 0x0BCE: +case 0x0DCE: +case 0x0FCE: +case 0x01CF: +case 0x03CF: +case 0x05CF: +case 0x07CF: +case 0x09CF: +case 0x0BCF: +case 0x0DCF: +case 0x0FCF: + +// MOVEPLDa +case 0x01C8: +{ + u32 adr; + u32 res; + res = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res >> 24) + adr += 2; + WRITE_BYTE_F(adr, res >> 16) + adr += 2; + WRITE_BYTE_F(adr, res >> 8) + adr += 2; + WRITE_BYTE_F(adr, res >> 0) +} +RET(24) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op1.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op1.inc new file mode 100644 index 0000000000..d1a58fc23a --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op1.inc @@ -0,0 +1,5626 @@ +case 0x1200: +case 0x1400: +case 0x1600: +case 0x1800: +case 0x1A00: +case 0x1C00: +case 0x1E00: +case 0x1001: +case 0x1201: +case 0x1401: +case 0x1601: +case 0x1801: +case 0x1A01: +case 0x1C01: +case 0x1E01: +case 0x1002: +case 0x1202: +case 0x1402: +case 0x1602: +case 0x1802: +case 0x1A02: +case 0x1C02: +case 0x1E02: +case 0x1003: +case 0x1203: +case 0x1403: +case 0x1603: +case 0x1803: +case 0x1A03: +case 0x1C03: +case 0x1E03: +case 0x1004: +case 0x1204: +case 0x1404: +case 0x1604: +case 0x1804: +case 0x1A04: +case 0x1C04: +case 0x1E04: +case 0x1005: +case 0x1205: +case 0x1405: +case 0x1605: +case 0x1805: +case 0x1A05: +case 0x1C05: +case 0x1E05: +case 0x1006: +case 0x1206: +case 0x1406: +case 0x1606: +case 0x1806: +case 0x1A06: +case 0x1C06: +case 0x1E06: +case 0x1007: +case 0x1207: +case 0x1407: +case 0x1607: +case 0x1807: +case 0x1A07: +case 0x1C07: +case 0x1E07: + +// MOVEB +case 0x1000: +{ + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x1280: +case 0x1480: +case 0x1680: +case 0x1880: +case 0x1A80: +case 0x1C80: +case 0x1E80: +case 0x1081: +case 0x1281: +case 0x1481: +case 0x1681: +case 0x1881: +case 0x1A81: +case 0x1C81: +case 0x1E81: +case 0x1082: +case 0x1282: +case 0x1482: +case 0x1682: +case 0x1882: +case 0x1A82: +case 0x1C82: +case 0x1E82: +case 0x1083: +case 0x1283: +case 0x1483: +case 0x1683: +case 0x1883: +case 0x1A83: +case 0x1C83: +case 0x1E83: +case 0x1084: +case 0x1284: +case 0x1484: +case 0x1684: +case 0x1884: +case 0x1A84: +case 0x1C84: +case 0x1E84: +case 0x1085: +case 0x1285: +case 0x1485: +case 0x1685: +case 0x1885: +case 0x1A85: +case 0x1C85: +case 0x1E85: +case 0x1086: +case 0x1286: +case 0x1486: +case 0x1686: +case 0x1886: +case 0x1A86: +case 0x1C86: +case 0x1E86: +case 0x1087: +case 0x1287: +case 0x1487: +case 0x1687: +case 0x1887: +case 0x1A87: +case 0x1C87: +case 0x1E87: + +// MOVEB +case 0x1080: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12C0: +case 0x14C0: +case 0x16C0: +case 0x18C0: +case 0x1AC0: +case 0x1CC0: +case 0x10C1: +case 0x12C1: +case 0x14C1: +case 0x16C1: +case 0x18C1: +case 0x1AC1: +case 0x1CC1: +case 0x10C2: +case 0x12C2: +case 0x14C2: +case 0x16C2: +case 0x18C2: +case 0x1AC2: +case 0x1CC2: +case 0x10C3: +case 0x12C3: +case 0x14C3: +case 0x16C3: +case 0x18C3: +case 0x1AC3: +case 0x1CC3: +case 0x10C4: +case 0x12C4: +case 0x14C4: +case 0x16C4: +case 0x18C4: +case 0x1AC4: +case 0x1CC4: +case 0x10C5: +case 0x12C5: +case 0x14C5: +case 0x16C5: +case 0x18C5: +case 0x1AC5: +case 0x1CC5: +case 0x10C6: +case 0x12C6: +case 0x14C6: +case 0x16C6: +case 0x18C6: +case 0x1AC6: +case 0x1CC6: +case 0x10C7: +case 0x12C7: +case 0x14C7: +case 0x16C7: +case 0x18C7: +case 0x1AC7: +case 0x1CC7: + +// MOVEB +case 0x10C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1300: +case 0x1500: +case 0x1700: +case 0x1900: +case 0x1B00: +case 0x1D00: +case 0x1101: +case 0x1301: +case 0x1501: +case 0x1701: +case 0x1901: +case 0x1B01: +case 0x1D01: +case 0x1102: +case 0x1302: +case 0x1502: +case 0x1702: +case 0x1902: +case 0x1B02: +case 0x1D02: +case 0x1103: +case 0x1303: +case 0x1503: +case 0x1703: +case 0x1903: +case 0x1B03: +case 0x1D03: +case 0x1104: +case 0x1304: +case 0x1504: +case 0x1704: +case 0x1904: +case 0x1B04: +case 0x1D04: +case 0x1105: +case 0x1305: +case 0x1505: +case 0x1705: +case 0x1905: +case 0x1B05: +case 0x1D05: +case 0x1106: +case 0x1306: +case 0x1506: +case 0x1706: +case 0x1906: +case 0x1B06: +case 0x1D06: +case 0x1107: +case 0x1307: +case 0x1507: +case 0x1707: +case 0x1907: +case 0x1B07: +case 0x1D07: + +// MOVEB +case 0x1100: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1340: +case 0x1540: +case 0x1740: +case 0x1940: +case 0x1B40: +case 0x1D40: +case 0x1F40: +case 0x1141: +case 0x1341: +case 0x1541: +case 0x1741: +case 0x1941: +case 0x1B41: +case 0x1D41: +case 0x1F41: +case 0x1142: +case 0x1342: +case 0x1542: +case 0x1742: +case 0x1942: +case 0x1B42: +case 0x1D42: +case 0x1F42: +case 0x1143: +case 0x1343: +case 0x1543: +case 0x1743: +case 0x1943: +case 0x1B43: +case 0x1D43: +case 0x1F43: +case 0x1144: +case 0x1344: +case 0x1544: +case 0x1744: +case 0x1944: +case 0x1B44: +case 0x1D44: +case 0x1F44: +case 0x1145: +case 0x1345: +case 0x1545: +case 0x1745: +case 0x1945: +case 0x1B45: +case 0x1D45: +case 0x1F45: +case 0x1146: +case 0x1346: +case 0x1546: +case 0x1746: +case 0x1946: +case 0x1B46: +case 0x1D46: +case 0x1F46: +case 0x1147: +case 0x1347: +case 0x1547: +case 0x1747: +case 0x1947: +case 0x1B47: +case 0x1D47: +case 0x1F47: + +// MOVEB +case 0x1140: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1380: +case 0x1580: +case 0x1780: +case 0x1980: +case 0x1B80: +case 0x1D80: +case 0x1F80: +case 0x1181: +case 0x1381: +case 0x1581: +case 0x1781: +case 0x1981: +case 0x1B81: +case 0x1D81: +case 0x1F81: +case 0x1182: +case 0x1382: +case 0x1582: +case 0x1782: +case 0x1982: +case 0x1B82: +case 0x1D82: +case 0x1F82: +case 0x1183: +case 0x1383: +case 0x1583: +case 0x1783: +case 0x1983: +case 0x1B83: +case 0x1D83: +case 0x1F83: +case 0x1184: +case 0x1384: +case 0x1584: +case 0x1784: +case 0x1984: +case 0x1B84: +case 0x1D84: +case 0x1F84: +case 0x1185: +case 0x1385: +case 0x1585: +case 0x1785: +case 0x1985: +case 0x1B85: +case 0x1D85: +case 0x1F85: +case 0x1186: +case 0x1386: +case 0x1586: +case 0x1786: +case 0x1986: +case 0x1B86: +case 0x1D86: +case 0x1F86: +case 0x1187: +case 0x1387: +case 0x1587: +case 0x1787: +case 0x1987: +case 0x1B87: +case 0x1D87: +case 0x1F87: + +// MOVEB +case 0x1180: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11C1: +case 0x11C2: +case 0x11C3: +case 0x11C4: +case 0x11C5: +case 0x11C6: +case 0x11C7: + +// MOVEB +case 0x11C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13C1: +case 0x13C2: +case 0x13C3: +case 0x13C4: +case 0x13C5: +case 0x13C6: +case 0x13C7: + +// MOVEB +case 0x13C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1EC1: +case 0x1EC2: +case 0x1EC3: +case 0x1EC4: +case 0x1EC5: +case 0x1EC6: +case 0x1EC7: + +// MOVEB +case 0x1EC0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F01: +case 0x1F02: +case 0x1F03: +case 0x1F04: +case 0x1F05: +case 0x1F06: +case 0x1F07: + +// MOVEB +case 0x1F00: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1208: +case 0x1408: +case 0x1608: +case 0x1808: +case 0x1A08: +case 0x1C08: +case 0x1E08: +case 0x1009: +case 0x1209: +case 0x1409: +case 0x1609: +case 0x1809: +case 0x1A09: +case 0x1C09: +case 0x1E09: +case 0x100A: +case 0x120A: +case 0x140A: +case 0x160A: +case 0x180A: +case 0x1A0A: +case 0x1C0A: +case 0x1E0A: +case 0x100B: +case 0x120B: +case 0x140B: +case 0x160B: +case 0x180B: +case 0x1A0B: +case 0x1C0B: +case 0x1E0B: +case 0x100C: +case 0x120C: +case 0x140C: +case 0x160C: +case 0x180C: +case 0x1A0C: +case 0x1C0C: +case 0x1E0C: +case 0x100D: +case 0x120D: +case 0x140D: +case 0x160D: +case 0x180D: +case 0x1A0D: +case 0x1C0D: +case 0x1E0D: +case 0x100E: +case 0x120E: +case 0x140E: +case 0x160E: +case 0x180E: +case 0x1A0E: +case 0x1C0E: +case 0x1E0E: +case 0x100F: +case 0x120F: +case 0x140F: +case 0x160F: +case 0x180F: +case 0x1A0F: +case 0x1C0F: +case 0x1E0F: + +// MOVEB +case 0x1008: +{ + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x1288: +case 0x1488: +case 0x1688: +case 0x1888: +case 0x1A88: +case 0x1C88: +case 0x1E88: +case 0x1089: +case 0x1289: +case 0x1489: +case 0x1689: +case 0x1889: +case 0x1A89: +case 0x1C89: +case 0x1E89: +case 0x108A: +case 0x128A: +case 0x148A: +case 0x168A: +case 0x188A: +case 0x1A8A: +case 0x1C8A: +case 0x1E8A: +case 0x108B: +case 0x128B: +case 0x148B: +case 0x168B: +case 0x188B: +case 0x1A8B: +case 0x1C8B: +case 0x1E8B: +case 0x108C: +case 0x128C: +case 0x148C: +case 0x168C: +case 0x188C: +case 0x1A8C: +case 0x1C8C: +case 0x1E8C: +case 0x108D: +case 0x128D: +case 0x148D: +case 0x168D: +case 0x188D: +case 0x1A8D: +case 0x1C8D: +case 0x1E8D: +case 0x108E: +case 0x128E: +case 0x148E: +case 0x168E: +case 0x188E: +case 0x1A8E: +case 0x1C8E: +case 0x1E8E: +case 0x108F: +case 0x128F: +case 0x148F: +case 0x168F: +case 0x188F: +case 0x1A8F: +case 0x1C8F: +case 0x1E8F: + +// MOVEB +case 0x1088: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12C8: +case 0x14C8: +case 0x16C8: +case 0x18C8: +case 0x1AC8: +case 0x1CC8: +case 0x10C9: +case 0x12C9: +case 0x14C9: +case 0x16C9: +case 0x18C9: +case 0x1AC9: +case 0x1CC9: +case 0x10CA: +case 0x12CA: +case 0x14CA: +case 0x16CA: +case 0x18CA: +case 0x1ACA: +case 0x1CCA: +case 0x10CB: +case 0x12CB: +case 0x14CB: +case 0x16CB: +case 0x18CB: +case 0x1ACB: +case 0x1CCB: +case 0x10CC: +case 0x12CC: +case 0x14CC: +case 0x16CC: +case 0x18CC: +case 0x1ACC: +case 0x1CCC: +case 0x10CD: +case 0x12CD: +case 0x14CD: +case 0x16CD: +case 0x18CD: +case 0x1ACD: +case 0x1CCD: +case 0x10CE: +case 0x12CE: +case 0x14CE: +case 0x16CE: +case 0x18CE: +case 0x1ACE: +case 0x1CCE: +case 0x10CF: +case 0x12CF: +case 0x14CF: +case 0x16CF: +case 0x18CF: +case 0x1ACF: +case 0x1CCF: + +// MOVEB +case 0x10C8: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1308: +case 0x1508: +case 0x1708: +case 0x1908: +case 0x1B08: +case 0x1D08: +case 0x1109: +case 0x1309: +case 0x1509: +case 0x1709: +case 0x1909: +case 0x1B09: +case 0x1D09: +case 0x110A: +case 0x130A: +case 0x150A: +case 0x170A: +case 0x190A: +case 0x1B0A: +case 0x1D0A: +case 0x110B: +case 0x130B: +case 0x150B: +case 0x170B: +case 0x190B: +case 0x1B0B: +case 0x1D0B: +case 0x110C: +case 0x130C: +case 0x150C: +case 0x170C: +case 0x190C: +case 0x1B0C: +case 0x1D0C: +case 0x110D: +case 0x130D: +case 0x150D: +case 0x170D: +case 0x190D: +case 0x1B0D: +case 0x1D0D: +case 0x110E: +case 0x130E: +case 0x150E: +case 0x170E: +case 0x190E: +case 0x1B0E: +case 0x1D0E: +case 0x110F: +case 0x130F: +case 0x150F: +case 0x170F: +case 0x190F: +case 0x1B0F: +case 0x1D0F: + +// MOVEB +case 0x1108: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1348: +case 0x1548: +case 0x1748: +case 0x1948: +case 0x1B48: +case 0x1D48: +case 0x1F48: +case 0x1149: +case 0x1349: +case 0x1549: +case 0x1749: +case 0x1949: +case 0x1B49: +case 0x1D49: +case 0x1F49: +case 0x114A: +case 0x134A: +case 0x154A: +case 0x174A: +case 0x194A: +case 0x1B4A: +case 0x1D4A: +case 0x1F4A: +case 0x114B: +case 0x134B: +case 0x154B: +case 0x174B: +case 0x194B: +case 0x1B4B: +case 0x1D4B: +case 0x1F4B: +case 0x114C: +case 0x134C: +case 0x154C: +case 0x174C: +case 0x194C: +case 0x1B4C: +case 0x1D4C: +case 0x1F4C: +case 0x114D: +case 0x134D: +case 0x154D: +case 0x174D: +case 0x194D: +case 0x1B4D: +case 0x1D4D: +case 0x1F4D: +case 0x114E: +case 0x134E: +case 0x154E: +case 0x174E: +case 0x194E: +case 0x1B4E: +case 0x1D4E: +case 0x1F4E: +case 0x114F: +case 0x134F: +case 0x154F: +case 0x174F: +case 0x194F: +case 0x1B4F: +case 0x1D4F: +case 0x1F4F: + +// MOVEB +case 0x1148: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1388: +case 0x1588: +case 0x1788: +case 0x1988: +case 0x1B88: +case 0x1D88: +case 0x1F88: +case 0x1189: +case 0x1389: +case 0x1589: +case 0x1789: +case 0x1989: +case 0x1B89: +case 0x1D89: +case 0x1F89: +case 0x118A: +case 0x138A: +case 0x158A: +case 0x178A: +case 0x198A: +case 0x1B8A: +case 0x1D8A: +case 0x1F8A: +case 0x118B: +case 0x138B: +case 0x158B: +case 0x178B: +case 0x198B: +case 0x1B8B: +case 0x1D8B: +case 0x1F8B: +case 0x118C: +case 0x138C: +case 0x158C: +case 0x178C: +case 0x198C: +case 0x1B8C: +case 0x1D8C: +case 0x1F8C: +case 0x118D: +case 0x138D: +case 0x158D: +case 0x178D: +case 0x198D: +case 0x1B8D: +case 0x1D8D: +case 0x1F8D: +case 0x118E: +case 0x138E: +case 0x158E: +case 0x178E: +case 0x198E: +case 0x1B8E: +case 0x1D8E: +case 0x1F8E: +case 0x118F: +case 0x138F: +case 0x158F: +case 0x178F: +case 0x198F: +case 0x1B8F: +case 0x1D8F: +case 0x1F8F: + +// MOVEB +case 0x1188: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11C9: +case 0x11CA: +case 0x11CB: +case 0x11CC: +case 0x11CD: +case 0x11CE: +case 0x11CF: + +// MOVEB +case 0x11C8: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13C9: +case 0x13CA: +case 0x13CB: +case 0x13CC: +case 0x13CD: +case 0x13CE: +case 0x13CF: + +// MOVEB +case 0x13C8: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1EC9: +case 0x1ECA: +case 0x1ECB: +case 0x1ECC: +case 0x1ECD: +case 0x1ECE: +case 0x1ECF: + +// MOVEB +case 0x1EC8: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F09: +case 0x1F0A: +case 0x1F0B: +case 0x1F0C: +case 0x1F0D: +case 0x1F0E: +case 0x1F0F: + +// MOVEB +case 0x1F08: +{ + u32 adr; + u32 res; + timestamp += 4; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1210: +case 0x1410: +case 0x1610: +case 0x1810: +case 0x1A10: +case 0x1C10: +case 0x1E10: +case 0x1011: +case 0x1211: +case 0x1411: +case 0x1611: +case 0x1811: +case 0x1A11: +case 0x1C11: +case 0x1E11: +case 0x1012: +case 0x1212: +case 0x1412: +case 0x1612: +case 0x1812: +case 0x1A12: +case 0x1C12: +case 0x1E12: +case 0x1013: +case 0x1213: +case 0x1413: +case 0x1613: +case 0x1813: +case 0x1A13: +case 0x1C13: +case 0x1E13: +case 0x1014: +case 0x1214: +case 0x1414: +case 0x1614: +case 0x1814: +case 0x1A14: +case 0x1C14: +case 0x1E14: +case 0x1015: +case 0x1215: +case 0x1415: +case 0x1615: +case 0x1815: +case 0x1A15: +case 0x1C15: +case 0x1E15: +case 0x1016: +case 0x1216: +case 0x1416: +case 0x1616: +case 0x1816: +case 0x1A16: +case 0x1C16: +case 0x1E16: +case 0x1017: +case 0x1217: +case 0x1417: +case 0x1617: +case 0x1817: +case 0x1A17: +case 0x1C17: +case 0x1E17: + +// MOVEB +case 0x1010: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x1290: +case 0x1490: +case 0x1690: +case 0x1890: +case 0x1A90: +case 0x1C90: +case 0x1E90: +case 0x1091: +case 0x1291: +case 0x1491: +case 0x1691: +case 0x1891: +case 0x1A91: +case 0x1C91: +case 0x1E91: +case 0x1092: +case 0x1292: +case 0x1492: +case 0x1692: +case 0x1892: +case 0x1A92: +case 0x1C92: +case 0x1E92: +case 0x1093: +case 0x1293: +case 0x1493: +case 0x1693: +case 0x1893: +case 0x1A93: +case 0x1C93: +case 0x1E93: +case 0x1094: +case 0x1294: +case 0x1494: +case 0x1694: +case 0x1894: +case 0x1A94: +case 0x1C94: +case 0x1E94: +case 0x1095: +case 0x1295: +case 0x1495: +case 0x1695: +case 0x1895: +case 0x1A95: +case 0x1C95: +case 0x1E95: +case 0x1096: +case 0x1296: +case 0x1496: +case 0x1696: +case 0x1896: +case 0x1A96: +case 0x1C96: +case 0x1E96: +case 0x1097: +case 0x1297: +case 0x1497: +case 0x1697: +case 0x1897: +case 0x1A97: +case 0x1C97: +case 0x1E97: + +// MOVEB +case 0x1090: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12D0: +case 0x14D0: +case 0x16D0: +case 0x18D0: +case 0x1AD0: +case 0x1CD0: +case 0x10D1: +case 0x12D1: +case 0x14D1: +case 0x16D1: +case 0x18D1: +case 0x1AD1: +case 0x1CD1: +case 0x10D2: +case 0x12D2: +case 0x14D2: +case 0x16D2: +case 0x18D2: +case 0x1AD2: +case 0x1CD2: +case 0x10D3: +case 0x12D3: +case 0x14D3: +case 0x16D3: +case 0x18D3: +case 0x1AD3: +case 0x1CD3: +case 0x10D4: +case 0x12D4: +case 0x14D4: +case 0x16D4: +case 0x18D4: +case 0x1AD4: +case 0x1CD4: +case 0x10D5: +case 0x12D5: +case 0x14D5: +case 0x16D5: +case 0x18D5: +case 0x1AD5: +case 0x1CD5: +case 0x10D6: +case 0x12D6: +case 0x14D6: +case 0x16D6: +case 0x18D6: +case 0x1AD6: +case 0x1CD6: +case 0x10D7: +case 0x12D7: +case 0x14D7: +case 0x16D7: +case 0x18D7: +case 0x1AD7: +case 0x1CD7: + +// MOVEB +case 0x10D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1310: +case 0x1510: +case 0x1710: +case 0x1910: +case 0x1B10: +case 0x1D10: +case 0x1111: +case 0x1311: +case 0x1511: +case 0x1711: +case 0x1911: +case 0x1B11: +case 0x1D11: +case 0x1112: +case 0x1312: +case 0x1512: +case 0x1712: +case 0x1912: +case 0x1B12: +case 0x1D12: +case 0x1113: +case 0x1313: +case 0x1513: +case 0x1713: +case 0x1913: +case 0x1B13: +case 0x1D13: +case 0x1114: +case 0x1314: +case 0x1514: +case 0x1714: +case 0x1914: +case 0x1B14: +case 0x1D14: +case 0x1115: +case 0x1315: +case 0x1515: +case 0x1715: +case 0x1915: +case 0x1B15: +case 0x1D15: +case 0x1116: +case 0x1316: +case 0x1516: +case 0x1716: +case 0x1916: +case 0x1B16: +case 0x1D16: +case 0x1117: +case 0x1317: +case 0x1517: +case 0x1717: +case 0x1917: +case 0x1B17: +case 0x1D17: + +// MOVEB +case 0x1110: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1350: +case 0x1550: +case 0x1750: +case 0x1950: +case 0x1B50: +case 0x1D50: +case 0x1F50: +case 0x1151: +case 0x1351: +case 0x1551: +case 0x1751: +case 0x1951: +case 0x1B51: +case 0x1D51: +case 0x1F51: +case 0x1152: +case 0x1352: +case 0x1552: +case 0x1752: +case 0x1952: +case 0x1B52: +case 0x1D52: +case 0x1F52: +case 0x1153: +case 0x1353: +case 0x1553: +case 0x1753: +case 0x1953: +case 0x1B53: +case 0x1D53: +case 0x1F53: +case 0x1154: +case 0x1354: +case 0x1554: +case 0x1754: +case 0x1954: +case 0x1B54: +case 0x1D54: +case 0x1F54: +case 0x1155: +case 0x1355: +case 0x1555: +case 0x1755: +case 0x1955: +case 0x1B55: +case 0x1D55: +case 0x1F55: +case 0x1156: +case 0x1356: +case 0x1556: +case 0x1756: +case 0x1956: +case 0x1B56: +case 0x1D56: +case 0x1F56: +case 0x1157: +case 0x1357: +case 0x1557: +case 0x1757: +case 0x1957: +case 0x1B57: +case 0x1D57: +case 0x1F57: + +// MOVEB +case 0x1150: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1390: +case 0x1590: +case 0x1790: +case 0x1990: +case 0x1B90: +case 0x1D90: +case 0x1F90: +case 0x1191: +case 0x1391: +case 0x1591: +case 0x1791: +case 0x1991: +case 0x1B91: +case 0x1D91: +case 0x1F91: +case 0x1192: +case 0x1392: +case 0x1592: +case 0x1792: +case 0x1992: +case 0x1B92: +case 0x1D92: +case 0x1F92: +case 0x1193: +case 0x1393: +case 0x1593: +case 0x1793: +case 0x1993: +case 0x1B93: +case 0x1D93: +case 0x1F93: +case 0x1194: +case 0x1394: +case 0x1594: +case 0x1794: +case 0x1994: +case 0x1B94: +case 0x1D94: +case 0x1F94: +case 0x1195: +case 0x1395: +case 0x1595: +case 0x1795: +case 0x1995: +case 0x1B95: +case 0x1D95: +case 0x1F95: +case 0x1196: +case 0x1396: +case 0x1596: +case 0x1796: +case 0x1996: +case 0x1B96: +case 0x1D96: +case 0x1F96: +case 0x1197: +case 0x1397: +case 0x1597: +case 0x1797: +case 0x1997: +case 0x1B97: +case 0x1D97: +case 0x1F97: + +// MOVEB +case 0x1190: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11D1: +case 0x11D2: +case 0x11D3: +case 0x11D4: +case 0x11D5: +case 0x11D6: +case 0x11D7: + +// MOVEB +case 0x11D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13D1: +case 0x13D2: +case 0x13D3: +case 0x13D4: +case 0x13D5: +case 0x13D6: +case 0x13D7: + +// MOVEB +case 0x13D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1ED1: +case 0x1ED2: +case 0x1ED3: +case 0x1ED4: +case 0x1ED5: +case 0x1ED6: +case 0x1ED7: + +// MOVEB +case 0x1ED0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F11: +case 0x1F12: +case 0x1F13: +case 0x1F14: +case 0x1F15: +case 0x1F16: +case 0x1F17: + +// MOVEB +case 0x1F10: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1218: +case 0x1418: +case 0x1618: +case 0x1818: +case 0x1A18: +case 0x1C18: +case 0x1E18: +case 0x1019: +case 0x1219: +case 0x1419: +case 0x1619: +case 0x1819: +case 0x1A19: +case 0x1C19: +case 0x1E19: +case 0x101A: +case 0x121A: +case 0x141A: +case 0x161A: +case 0x181A: +case 0x1A1A: +case 0x1C1A: +case 0x1E1A: +case 0x101B: +case 0x121B: +case 0x141B: +case 0x161B: +case 0x181B: +case 0x1A1B: +case 0x1C1B: +case 0x1E1B: +case 0x101C: +case 0x121C: +case 0x141C: +case 0x161C: +case 0x181C: +case 0x1A1C: +case 0x1C1C: +case 0x1E1C: +case 0x101D: +case 0x121D: +case 0x141D: +case 0x161D: +case 0x181D: +case 0x1A1D: +case 0x1C1D: +case 0x1E1D: +case 0x101E: +case 0x121E: +case 0x141E: +case 0x161E: +case 0x181E: +case 0x1A1E: +case 0x1C1E: +case 0x1E1E: + +// MOVEB +case 0x1018: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x1298: +case 0x1498: +case 0x1698: +case 0x1898: +case 0x1A98: +case 0x1C98: +case 0x1E98: +case 0x1099: +case 0x1299: +case 0x1499: +case 0x1699: +case 0x1899: +case 0x1A99: +case 0x1C99: +case 0x1E99: +case 0x109A: +case 0x129A: +case 0x149A: +case 0x169A: +case 0x189A: +case 0x1A9A: +case 0x1C9A: +case 0x1E9A: +case 0x109B: +case 0x129B: +case 0x149B: +case 0x169B: +case 0x189B: +case 0x1A9B: +case 0x1C9B: +case 0x1E9B: +case 0x109C: +case 0x129C: +case 0x149C: +case 0x169C: +case 0x189C: +case 0x1A9C: +case 0x1C9C: +case 0x1E9C: +case 0x109D: +case 0x129D: +case 0x149D: +case 0x169D: +case 0x189D: +case 0x1A9D: +case 0x1C9D: +case 0x1E9D: +case 0x109E: +case 0x129E: +case 0x149E: +case 0x169E: +case 0x189E: +case 0x1A9E: +case 0x1C9E: +case 0x1E9E: + +// MOVEB +case 0x1098: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12D8: +case 0x14D8: +case 0x16D8: +case 0x18D8: +case 0x1AD8: +case 0x1CD8: +case 0x10D9: +case 0x12D9: +case 0x14D9: +case 0x16D9: +case 0x18D9: +case 0x1AD9: +case 0x1CD9: +case 0x10DA: +case 0x12DA: +case 0x14DA: +case 0x16DA: +case 0x18DA: +case 0x1ADA: +case 0x1CDA: +case 0x10DB: +case 0x12DB: +case 0x14DB: +case 0x16DB: +case 0x18DB: +case 0x1ADB: +case 0x1CDB: +case 0x10DC: +case 0x12DC: +case 0x14DC: +case 0x16DC: +case 0x18DC: +case 0x1ADC: +case 0x1CDC: +case 0x10DD: +case 0x12DD: +case 0x14DD: +case 0x16DD: +case 0x18DD: +case 0x1ADD: +case 0x1CDD: +case 0x10DE: +case 0x12DE: +case 0x14DE: +case 0x16DE: +case 0x18DE: +case 0x1ADE: +case 0x1CDE: + +// MOVEB +case 0x10D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1318: +case 0x1518: +case 0x1718: +case 0x1918: +case 0x1B18: +case 0x1D18: +case 0x1119: +case 0x1319: +case 0x1519: +case 0x1719: +case 0x1919: +case 0x1B19: +case 0x1D19: +case 0x111A: +case 0x131A: +case 0x151A: +case 0x171A: +case 0x191A: +case 0x1B1A: +case 0x1D1A: +case 0x111B: +case 0x131B: +case 0x151B: +case 0x171B: +case 0x191B: +case 0x1B1B: +case 0x1D1B: +case 0x111C: +case 0x131C: +case 0x151C: +case 0x171C: +case 0x191C: +case 0x1B1C: +case 0x1D1C: +case 0x111D: +case 0x131D: +case 0x151D: +case 0x171D: +case 0x191D: +case 0x1B1D: +case 0x1D1D: +case 0x111E: +case 0x131E: +case 0x151E: +case 0x171E: +case 0x191E: +case 0x1B1E: +case 0x1D1E: + +// MOVEB +case 0x1118: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1358: +case 0x1558: +case 0x1758: +case 0x1958: +case 0x1B58: +case 0x1D58: +case 0x1F58: +case 0x1159: +case 0x1359: +case 0x1559: +case 0x1759: +case 0x1959: +case 0x1B59: +case 0x1D59: +case 0x1F59: +case 0x115A: +case 0x135A: +case 0x155A: +case 0x175A: +case 0x195A: +case 0x1B5A: +case 0x1D5A: +case 0x1F5A: +case 0x115B: +case 0x135B: +case 0x155B: +case 0x175B: +case 0x195B: +case 0x1B5B: +case 0x1D5B: +case 0x1F5B: +case 0x115C: +case 0x135C: +case 0x155C: +case 0x175C: +case 0x195C: +case 0x1B5C: +case 0x1D5C: +case 0x1F5C: +case 0x115D: +case 0x135D: +case 0x155D: +case 0x175D: +case 0x195D: +case 0x1B5D: +case 0x1D5D: +case 0x1F5D: +case 0x115E: +case 0x135E: +case 0x155E: +case 0x175E: +case 0x195E: +case 0x1B5E: +case 0x1D5E: +case 0x1F5E: + +// MOVEB +case 0x1158: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1398: +case 0x1598: +case 0x1798: +case 0x1998: +case 0x1B98: +case 0x1D98: +case 0x1F98: +case 0x1199: +case 0x1399: +case 0x1599: +case 0x1799: +case 0x1999: +case 0x1B99: +case 0x1D99: +case 0x1F99: +case 0x119A: +case 0x139A: +case 0x159A: +case 0x179A: +case 0x199A: +case 0x1B9A: +case 0x1D9A: +case 0x1F9A: +case 0x119B: +case 0x139B: +case 0x159B: +case 0x179B: +case 0x199B: +case 0x1B9B: +case 0x1D9B: +case 0x1F9B: +case 0x119C: +case 0x139C: +case 0x159C: +case 0x179C: +case 0x199C: +case 0x1B9C: +case 0x1D9C: +case 0x1F9C: +case 0x119D: +case 0x139D: +case 0x159D: +case 0x179D: +case 0x199D: +case 0x1B9D: +case 0x1D9D: +case 0x1F9D: +case 0x119E: +case 0x139E: +case 0x159E: +case 0x179E: +case 0x199E: +case 0x1B9E: +case 0x1D9E: +case 0x1F9E: + +// MOVEB +case 0x1198: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11D9: +case 0x11DA: +case 0x11DB: +case 0x11DC: +case 0x11DD: +case 0x11DE: + +// MOVEB +case 0x11D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13D9: +case 0x13DA: +case 0x13DB: +case 0x13DC: +case 0x13DD: +case 0x13DE: + +// MOVEB +case 0x13D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1ED9: +case 0x1EDA: +case 0x1EDB: +case 0x1EDC: +case 0x1EDD: +case 0x1EDE: + +// MOVEB +case 0x1ED8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F19: +case 0x1F1A: +case 0x1F1B: +case 0x1F1C: +case 0x1F1D: +case 0x1F1E: + +// MOVEB +case 0x1F18: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1220: +case 0x1420: +case 0x1620: +case 0x1820: +case 0x1A20: +case 0x1C20: +case 0x1E20: +case 0x1021: +case 0x1221: +case 0x1421: +case 0x1621: +case 0x1821: +case 0x1A21: +case 0x1C21: +case 0x1E21: +case 0x1022: +case 0x1222: +case 0x1422: +case 0x1622: +case 0x1822: +case 0x1A22: +case 0x1C22: +case 0x1E22: +case 0x1023: +case 0x1223: +case 0x1423: +case 0x1623: +case 0x1823: +case 0x1A23: +case 0x1C23: +case 0x1E23: +case 0x1024: +case 0x1224: +case 0x1424: +case 0x1624: +case 0x1824: +case 0x1A24: +case 0x1C24: +case 0x1E24: +case 0x1025: +case 0x1225: +case 0x1425: +case 0x1625: +case 0x1825: +case 0x1A25: +case 0x1C25: +case 0x1E25: +case 0x1026: +case 0x1226: +case 0x1426: +case 0x1626: +case 0x1826: +case 0x1A26: +case 0x1C26: +case 0x1E26: + +// MOVEB +case 0x1020: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12A0: +case 0x14A0: +case 0x16A0: +case 0x18A0: +case 0x1AA0: +case 0x1CA0: +case 0x1EA0: +case 0x10A1: +case 0x12A1: +case 0x14A1: +case 0x16A1: +case 0x18A1: +case 0x1AA1: +case 0x1CA1: +case 0x1EA1: +case 0x10A2: +case 0x12A2: +case 0x14A2: +case 0x16A2: +case 0x18A2: +case 0x1AA2: +case 0x1CA2: +case 0x1EA2: +case 0x10A3: +case 0x12A3: +case 0x14A3: +case 0x16A3: +case 0x18A3: +case 0x1AA3: +case 0x1CA3: +case 0x1EA3: +case 0x10A4: +case 0x12A4: +case 0x14A4: +case 0x16A4: +case 0x18A4: +case 0x1AA4: +case 0x1CA4: +case 0x1EA4: +case 0x10A5: +case 0x12A5: +case 0x14A5: +case 0x16A5: +case 0x18A5: +case 0x1AA5: +case 0x1CA5: +case 0x1EA5: +case 0x10A6: +case 0x12A6: +case 0x14A6: +case 0x16A6: +case 0x18A6: +case 0x1AA6: +case 0x1CA6: +case 0x1EA6: + +// MOVEB +case 0x10A0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12E0: +case 0x14E0: +case 0x16E0: +case 0x18E0: +case 0x1AE0: +case 0x1CE0: +case 0x10E1: +case 0x12E1: +case 0x14E1: +case 0x16E1: +case 0x18E1: +case 0x1AE1: +case 0x1CE1: +case 0x10E2: +case 0x12E2: +case 0x14E2: +case 0x16E2: +case 0x18E2: +case 0x1AE2: +case 0x1CE2: +case 0x10E3: +case 0x12E3: +case 0x14E3: +case 0x16E3: +case 0x18E3: +case 0x1AE3: +case 0x1CE3: +case 0x10E4: +case 0x12E4: +case 0x14E4: +case 0x16E4: +case 0x18E4: +case 0x1AE4: +case 0x1CE4: +case 0x10E5: +case 0x12E5: +case 0x14E5: +case 0x16E5: +case 0x18E5: +case 0x1AE5: +case 0x1CE5: +case 0x10E6: +case 0x12E6: +case 0x14E6: +case 0x16E6: +case 0x18E6: +case 0x1AE6: +case 0x1CE6: + +// MOVEB +case 0x10E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1320: +case 0x1520: +case 0x1720: +case 0x1920: +case 0x1B20: +case 0x1D20: +case 0x1121: +case 0x1321: +case 0x1521: +case 0x1721: +case 0x1921: +case 0x1B21: +case 0x1D21: +case 0x1122: +case 0x1322: +case 0x1522: +case 0x1722: +case 0x1922: +case 0x1B22: +case 0x1D22: +case 0x1123: +case 0x1323: +case 0x1523: +case 0x1723: +case 0x1923: +case 0x1B23: +case 0x1D23: +case 0x1124: +case 0x1324: +case 0x1524: +case 0x1724: +case 0x1924: +case 0x1B24: +case 0x1D24: +case 0x1125: +case 0x1325: +case 0x1525: +case 0x1725: +case 0x1925: +case 0x1B25: +case 0x1D25: +case 0x1126: +case 0x1326: +case 0x1526: +case 0x1726: +case 0x1926: +case 0x1B26: +case 0x1D26: + +// MOVEB +case 0x1120: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1360: +case 0x1560: +case 0x1760: +case 0x1960: +case 0x1B60: +case 0x1D60: +case 0x1F60: +case 0x1161: +case 0x1361: +case 0x1561: +case 0x1761: +case 0x1961: +case 0x1B61: +case 0x1D61: +case 0x1F61: +case 0x1162: +case 0x1362: +case 0x1562: +case 0x1762: +case 0x1962: +case 0x1B62: +case 0x1D62: +case 0x1F62: +case 0x1163: +case 0x1363: +case 0x1563: +case 0x1763: +case 0x1963: +case 0x1B63: +case 0x1D63: +case 0x1F63: +case 0x1164: +case 0x1364: +case 0x1564: +case 0x1764: +case 0x1964: +case 0x1B64: +case 0x1D64: +case 0x1F64: +case 0x1165: +case 0x1365: +case 0x1565: +case 0x1765: +case 0x1965: +case 0x1B65: +case 0x1D65: +case 0x1F65: +case 0x1166: +case 0x1366: +case 0x1566: +case 0x1766: +case 0x1966: +case 0x1B66: +case 0x1D66: +case 0x1F66: + +// MOVEB +case 0x1160: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13A0: +case 0x15A0: +case 0x17A0: +case 0x19A0: +case 0x1BA0: +case 0x1DA0: +case 0x1FA0: +case 0x11A1: +case 0x13A1: +case 0x15A1: +case 0x17A1: +case 0x19A1: +case 0x1BA1: +case 0x1DA1: +case 0x1FA1: +case 0x11A2: +case 0x13A2: +case 0x15A2: +case 0x17A2: +case 0x19A2: +case 0x1BA2: +case 0x1DA2: +case 0x1FA2: +case 0x11A3: +case 0x13A3: +case 0x15A3: +case 0x17A3: +case 0x19A3: +case 0x1BA3: +case 0x1DA3: +case 0x1FA3: +case 0x11A4: +case 0x13A4: +case 0x15A4: +case 0x17A4: +case 0x19A4: +case 0x1BA4: +case 0x1DA4: +case 0x1FA4: +case 0x11A5: +case 0x13A5: +case 0x15A5: +case 0x17A5: +case 0x19A5: +case 0x1BA5: +case 0x1DA5: +case 0x1FA5: +case 0x11A6: +case 0x13A6: +case 0x15A6: +case 0x17A6: +case 0x19A6: +case 0x1BA6: +case 0x1DA6: +case 0x1FA6: + +// MOVEB +case 0x11A0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11E1: +case 0x11E2: +case 0x11E3: +case 0x11E4: +case 0x11E5: +case 0x11E6: + +// MOVEB +case 0x11E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13E1: +case 0x13E2: +case 0x13E3: +case 0x13E4: +case 0x13E5: +case 0x13E6: + +// MOVEB +case 0x13E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1EE1: +case 0x1EE2: +case 0x1EE3: +case 0x1EE4: +case 0x1EE5: +case 0x1EE6: + +// MOVEB +case 0x1EE0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F21: +case 0x1F22: +case 0x1F23: +case 0x1F24: +case 0x1F25: +case 0x1F26: + +// MOVEB +case 0x1F20: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1228: +case 0x1428: +case 0x1628: +case 0x1828: +case 0x1A28: +case 0x1C28: +case 0x1E28: +case 0x1029: +case 0x1229: +case 0x1429: +case 0x1629: +case 0x1829: +case 0x1A29: +case 0x1C29: +case 0x1E29: +case 0x102A: +case 0x122A: +case 0x142A: +case 0x162A: +case 0x182A: +case 0x1A2A: +case 0x1C2A: +case 0x1E2A: +case 0x102B: +case 0x122B: +case 0x142B: +case 0x162B: +case 0x182B: +case 0x1A2B: +case 0x1C2B: +case 0x1E2B: +case 0x102C: +case 0x122C: +case 0x142C: +case 0x162C: +case 0x182C: +case 0x1A2C: +case 0x1C2C: +case 0x1E2C: +case 0x102D: +case 0x122D: +case 0x142D: +case 0x162D: +case 0x182D: +case 0x1A2D: +case 0x1C2D: +case 0x1E2D: +case 0x102E: +case 0x122E: +case 0x142E: +case 0x162E: +case 0x182E: +case 0x1A2E: +case 0x1C2E: +case 0x1E2E: +case 0x102F: +case 0x122F: +case 0x142F: +case 0x162F: +case 0x182F: +case 0x1A2F: +case 0x1C2F: +case 0x1E2F: + +// MOVEB +case 0x1028: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12A8: +case 0x14A8: +case 0x16A8: +case 0x18A8: +case 0x1AA8: +case 0x1CA8: +case 0x1EA8: +case 0x10A9: +case 0x12A9: +case 0x14A9: +case 0x16A9: +case 0x18A9: +case 0x1AA9: +case 0x1CA9: +case 0x1EA9: +case 0x10AA: +case 0x12AA: +case 0x14AA: +case 0x16AA: +case 0x18AA: +case 0x1AAA: +case 0x1CAA: +case 0x1EAA: +case 0x10AB: +case 0x12AB: +case 0x14AB: +case 0x16AB: +case 0x18AB: +case 0x1AAB: +case 0x1CAB: +case 0x1EAB: +case 0x10AC: +case 0x12AC: +case 0x14AC: +case 0x16AC: +case 0x18AC: +case 0x1AAC: +case 0x1CAC: +case 0x1EAC: +case 0x10AD: +case 0x12AD: +case 0x14AD: +case 0x16AD: +case 0x18AD: +case 0x1AAD: +case 0x1CAD: +case 0x1EAD: +case 0x10AE: +case 0x12AE: +case 0x14AE: +case 0x16AE: +case 0x18AE: +case 0x1AAE: +case 0x1CAE: +case 0x1EAE: +case 0x10AF: +case 0x12AF: +case 0x14AF: +case 0x16AF: +case 0x18AF: +case 0x1AAF: +case 0x1CAF: +case 0x1EAF: + +// MOVEB +case 0x10A8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12E8: +case 0x14E8: +case 0x16E8: +case 0x18E8: +case 0x1AE8: +case 0x1CE8: +case 0x10E9: +case 0x12E9: +case 0x14E9: +case 0x16E9: +case 0x18E9: +case 0x1AE9: +case 0x1CE9: +case 0x10EA: +case 0x12EA: +case 0x14EA: +case 0x16EA: +case 0x18EA: +case 0x1AEA: +case 0x1CEA: +case 0x10EB: +case 0x12EB: +case 0x14EB: +case 0x16EB: +case 0x18EB: +case 0x1AEB: +case 0x1CEB: +case 0x10EC: +case 0x12EC: +case 0x14EC: +case 0x16EC: +case 0x18EC: +case 0x1AEC: +case 0x1CEC: +case 0x10ED: +case 0x12ED: +case 0x14ED: +case 0x16ED: +case 0x18ED: +case 0x1AED: +case 0x1CED: +case 0x10EE: +case 0x12EE: +case 0x14EE: +case 0x16EE: +case 0x18EE: +case 0x1AEE: +case 0x1CEE: +case 0x10EF: +case 0x12EF: +case 0x14EF: +case 0x16EF: +case 0x18EF: +case 0x1AEF: +case 0x1CEF: + +// MOVEB +case 0x10E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1328: +case 0x1528: +case 0x1728: +case 0x1928: +case 0x1B28: +case 0x1D28: +case 0x1129: +case 0x1329: +case 0x1529: +case 0x1729: +case 0x1929: +case 0x1B29: +case 0x1D29: +case 0x112A: +case 0x132A: +case 0x152A: +case 0x172A: +case 0x192A: +case 0x1B2A: +case 0x1D2A: +case 0x112B: +case 0x132B: +case 0x152B: +case 0x172B: +case 0x192B: +case 0x1B2B: +case 0x1D2B: +case 0x112C: +case 0x132C: +case 0x152C: +case 0x172C: +case 0x192C: +case 0x1B2C: +case 0x1D2C: +case 0x112D: +case 0x132D: +case 0x152D: +case 0x172D: +case 0x192D: +case 0x1B2D: +case 0x1D2D: +case 0x112E: +case 0x132E: +case 0x152E: +case 0x172E: +case 0x192E: +case 0x1B2E: +case 0x1D2E: +case 0x112F: +case 0x132F: +case 0x152F: +case 0x172F: +case 0x192F: +case 0x1B2F: +case 0x1D2F: + +// MOVEB +case 0x1128: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1368: +case 0x1568: +case 0x1768: +case 0x1968: +case 0x1B68: +case 0x1D68: +case 0x1F68: +case 0x1169: +case 0x1369: +case 0x1569: +case 0x1769: +case 0x1969: +case 0x1B69: +case 0x1D69: +case 0x1F69: +case 0x116A: +case 0x136A: +case 0x156A: +case 0x176A: +case 0x196A: +case 0x1B6A: +case 0x1D6A: +case 0x1F6A: +case 0x116B: +case 0x136B: +case 0x156B: +case 0x176B: +case 0x196B: +case 0x1B6B: +case 0x1D6B: +case 0x1F6B: +case 0x116C: +case 0x136C: +case 0x156C: +case 0x176C: +case 0x196C: +case 0x1B6C: +case 0x1D6C: +case 0x1F6C: +case 0x116D: +case 0x136D: +case 0x156D: +case 0x176D: +case 0x196D: +case 0x1B6D: +case 0x1D6D: +case 0x1F6D: +case 0x116E: +case 0x136E: +case 0x156E: +case 0x176E: +case 0x196E: +case 0x1B6E: +case 0x1D6E: +case 0x1F6E: +case 0x116F: +case 0x136F: +case 0x156F: +case 0x176F: +case 0x196F: +case 0x1B6F: +case 0x1D6F: +case 0x1F6F: + +// MOVEB +case 0x1168: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13A8: +case 0x15A8: +case 0x17A8: +case 0x19A8: +case 0x1BA8: +case 0x1DA8: +case 0x1FA8: +case 0x11A9: +case 0x13A9: +case 0x15A9: +case 0x17A9: +case 0x19A9: +case 0x1BA9: +case 0x1DA9: +case 0x1FA9: +case 0x11AA: +case 0x13AA: +case 0x15AA: +case 0x17AA: +case 0x19AA: +case 0x1BAA: +case 0x1DAA: +case 0x1FAA: +case 0x11AB: +case 0x13AB: +case 0x15AB: +case 0x17AB: +case 0x19AB: +case 0x1BAB: +case 0x1DAB: +case 0x1FAB: +case 0x11AC: +case 0x13AC: +case 0x15AC: +case 0x17AC: +case 0x19AC: +case 0x1BAC: +case 0x1DAC: +case 0x1FAC: +case 0x11AD: +case 0x13AD: +case 0x15AD: +case 0x17AD: +case 0x19AD: +case 0x1BAD: +case 0x1DAD: +case 0x1FAD: +case 0x11AE: +case 0x13AE: +case 0x15AE: +case 0x17AE: +case 0x19AE: +case 0x1BAE: +case 0x1DAE: +case 0x1FAE: +case 0x11AF: +case 0x13AF: +case 0x15AF: +case 0x17AF: +case 0x19AF: +case 0x1BAF: +case 0x1DAF: +case 0x1FAF: + +// MOVEB +case 0x11A8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11E9: +case 0x11EA: +case 0x11EB: +case 0x11EC: +case 0x11ED: +case 0x11EE: +case 0x11EF: + +// MOVEB +case 0x11E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13E9: +case 0x13EA: +case 0x13EB: +case 0x13EC: +case 0x13ED: +case 0x13EE: +case 0x13EF: + +// MOVEB +case 0x13E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1EE9: +case 0x1EEA: +case 0x1EEB: +case 0x1EEC: +case 0x1EED: +case 0x1EEE: +case 0x1EEF: + +// MOVEB +case 0x1EE8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F29: +case 0x1F2A: +case 0x1F2B: +case 0x1F2C: +case 0x1F2D: +case 0x1F2E: +case 0x1F2F: + +// MOVEB +case 0x1F28: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1230: +case 0x1430: +case 0x1630: +case 0x1830: +case 0x1A30: +case 0x1C30: +case 0x1E30: +case 0x1031: +case 0x1231: +case 0x1431: +case 0x1631: +case 0x1831: +case 0x1A31: +case 0x1C31: +case 0x1E31: +case 0x1032: +case 0x1232: +case 0x1432: +case 0x1632: +case 0x1832: +case 0x1A32: +case 0x1C32: +case 0x1E32: +case 0x1033: +case 0x1233: +case 0x1433: +case 0x1633: +case 0x1833: +case 0x1A33: +case 0x1C33: +case 0x1E33: +case 0x1034: +case 0x1234: +case 0x1434: +case 0x1634: +case 0x1834: +case 0x1A34: +case 0x1C34: +case 0x1E34: +case 0x1035: +case 0x1235: +case 0x1435: +case 0x1635: +case 0x1835: +case 0x1A35: +case 0x1C35: +case 0x1E35: +case 0x1036: +case 0x1236: +case 0x1436: +case 0x1636: +case 0x1836: +case 0x1A36: +case 0x1C36: +case 0x1E36: +case 0x1037: +case 0x1237: +case 0x1437: +case 0x1637: +case 0x1837: +case 0x1A37: +case 0x1C37: +case 0x1E37: + +// MOVEB +case 0x1030: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12B0: +case 0x14B0: +case 0x16B0: +case 0x18B0: +case 0x1AB0: +case 0x1CB0: +case 0x1EB0: +case 0x10B1: +case 0x12B1: +case 0x14B1: +case 0x16B1: +case 0x18B1: +case 0x1AB1: +case 0x1CB1: +case 0x1EB1: +case 0x10B2: +case 0x12B2: +case 0x14B2: +case 0x16B2: +case 0x18B2: +case 0x1AB2: +case 0x1CB2: +case 0x1EB2: +case 0x10B3: +case 0x12B3: +case 0x14B3: +case 0x16B3: +case 0x18B3: +case 0x1AB3: +case 0x1CB3: +case 0x1EB3: +case 0x10B4: +case 0x12B4: +case 0x14B4: +case 0x16B4: +case 0x18B4: +case 0x1AB4: +case 0x1CB4: +case 0x1EB4: +case 0x10B5: +case 0x12B5: +case 0x14B5: +case 0x16B5: +case 0x18B5: +case 0x1AB5: +case 0x1CB5: +case 0x1EB5: +case 0x10B6: +case 0x12B6: +case 0x14B6: +case 0x16B6: +case 0x18B6: +case 0x1AB6: +case 0x1CB6: +case 0x1EB6: +case 0x10B7: +case 0x12B7: +case 0x14B7: +case 0x16B7: +case 0x18B7: +case 0x1AB7: +case 0x1CB7: +case 0x1EB7: + +// MOVEB +case 0x10B0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12F0: +case 0x14F0: +case 0x16F0: +case 0x18F0: +case 0x1AF0: +case 0x1CF0: +case 0x10F1: +case 0x12F1: +case 0x14F1: +case 0x16F1: +case 0x18F1: +case 0x1AF1: +case 0x1CF1: +case 0x10F2: +case 0x12F2: +case 0x14F2: +case 0x16F2: +case 0x18F2: +case 0x1AF2: +case 0x1CF2: +case 0x10F3: +case 0x12F3: +case 0x14F3: +case 0x16F3: +case 0x18F3: +case 0x1AF3: +case 0x1CF3: +case 0x10F4: +case 0x12F4: +case 0x14F4: +case 0x16F4: +case 0x18F4: +case 0x1AF4: +case 0x1CF4: +case 0x10F5: +case 0x12F5: +case 0x14F5: +case 0x16F5: +case 0x18F5: +case 0x1AF5: +case 0x1CF5: +case 0x10F6: +case 0x12F6: +case 0x14F6: +case 0x16F6: +case 0x18F6: +case 0x1AF6: +case 0x1CF6: +case 0x10F7: +case 0x12F7: +case 0x14F7: +case 0x16F7: +case 0x18F7: +case 0x1AF7: +case 0x1CF7: + +// MOVEB +case 0x10F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1330: +case 0x1530: +case 0x1730: +case 0x1930: +case 0x1B30: +case 0x1D30: +case 0x1131: +case 0x1331: +case 0x1531: +case 0x1731: +case 0x1931: +case 0x1B31: +case 0x1D31: +case 0x1132: +case 0x1332: +case 0x1532: +case 0x1732: +case 0x1932: +case 0x1B32: +case 0x1D32: +case 0x1133: +case 0x1333: +case 0x1533: +case 0x1733: +case 0x1933: +case 0x1B33: +case 0x1D33: +case 0x1134: +case 0x1334: +case 0x1534: +case 0x1734: +case 0x1934: +case 0x1B34: +case 0x1D34: +case 0x1135: +case 0x1335: +case 0x1535: +case 0x1735: +case 0x1935: +case 0x1B35: +case 0x1D35: +case 0x1136: +case 0x1336: +case 0x1536: +case 0x1736: +case 0x1936: +case 0x1B36: +case 0x1D36: +case 0x1137: +case 0x1337: +case 0x1537: +case 0x1737: +case 0x1937: +case 0x1B37: +case 0x1D37: + +// MOVEB +case 0x1130: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1370: +case 0x1570: +case 0x1770: +case 0x1970: +case 0x1B70: +case 0x1D70: +case 0x1F70: +case 0x1171: +case 0x1371: +case 0x1571: +case 0x1771: +case 0x1971: +case 0x1B71: +case 0x1D71: +case 0x1F71: +case 0x1172: +case 0x1372: +case 0x1572: +case 0x1772: +case 0x1972: +case 0x1B72: +case 0x1D72: +case 0x1F72: +case 0x1173: +case 0x1373: +case 0x1573: +case 0x1773: +case 0x1973: +case 0x1B73: +case 0x1D73: +case 0x1F73: +case 0x1174: +case 0x1374: +case 0x1574: +case 0x1774: +case 0x1974: +case 0x1B74: +case 0x1D74: +case 0x1F74: +case 0x1175: +case 0x1375: +case 0x1575: +case 0x1775: +case 0x1975: +case 0x1B75: +case 0x1D75: +case 0x1F75: +case 0x1176: +case 0x1376: +case 0x1576: +case 0x1776: +case 0x1976: +case 0x1B76: +case 0x1D76: +case 0x1F76: +case 0x1177: +case 0x1377: +case 0x1577: +case 0x1777: +case 0x1977: +case 0x1B77: +case 0x1D77: +case 0x1F77: + +// MOVEB +case 0x1170: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13B0: +case 0x15B0: +case 0x17B0: +case 0x19B0: +case 0x1BB0: +case 0x1DB0: +case 0x1FB0: +case 0x11B1: +case 0x13B1: +case 0x15B1: +case 0x17B1: +case 0x19B1: +case 0x1BB1: +case 0x1DB1: +case 0x1FB1: +case 0x11B2: +case 0x13B2: +case 0x15B2: +case 0x17B2: +case 0x19B2: +case 0x1BB2: +case 0x1DB2: +case 0x1FB2: +case 0x11B3: +case 0x13B3: +case 0x15B3: +case 0x17B3: +case 0x19B3: +case 0x1BB3: +case 0x1DB3: +case 0x1FB3: +case 0x11B4: +case 0x13B4: +case 0x15B4: +case 0x17B4: +case 0x19B4: +case 0x1BB4: +case 0x1DB4: +case 0x1FB4: +case 0x11B5: +case 0x13B5: +case 0x15B5: +case 0x17B5: +case 0x19B5: +case 0x1BB5: +case 0x1DB5: +case 0x1FB5: +case 0x11B6: +case 0x13B6: +case 0x15B6: +case 0x17B6: +case 0x19B6: +case 0x1BB6: +case 0x1DB6: +case 0x1FB6: +case 0x11B7: +case 0x13B7: +case 0x15B7: +case 0x17B7: +case 0x19B7: +case 0x1BB7: +case 0x1DB7: +case 0x1FB7: + +// MOVEB +case 0x11B0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x11F1: +case 0x11F2: +case 0x11F3: +case 0x11F4: +case 0x11F5: +case 0x11F6: +case 0x11F7: + +// MOVEB +case 0x11F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13F1: +case 0x13F2: +case 0x13F3: +case 0x13F4: +case 0x13F5: +case 0x13F6: +case 0x13F7: + +// MOVEB +case 0x13F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1EF1: +case 0x1EF2: +case 0x1EF3: +case 0x1EF4: +case 0x1EF5: +case 0x1EF6: +case 0x1EF7: + +// MOVEB +case 0x1EF0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1F31: +case 0x1F32: +case 0x1F33: +case 0x1F34: +case 0x1F35: +case 0x1F36: +case 0x1F37: + +// MOVEB +case 0x1F30: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1238: +case 0x1438: +case 0x1638: +case 0x1838: +case 0x1A38: +case 0x1C38: +case 0x1E38: + +// MOVEB +case 0x1038: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12B8: +case 0x14B8: +case 0x16B8: +case 0x18B8: +case 0x1AB8: +case 0x1CB8: +case 0x1EB8: + +// MOVEB +case 0x10B8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12F8: +case 0x14F8: +case 0x16F8: +case 0x18F8: +case 0x1AF8: +case 0x1CF8: + +// MOVEB +case 0x10F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1338: +case 0x1538: +case 0x1738: +case 0x1938: +case 0x1B38: +case 0x1D38: + +// MOVEB +case 0x1138: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1378: +case 0x1578: +case 0x1778: +case 0x1978: +case 0x1B78: +case 0x1D78: +case 0x1F78: + +// MOVEB +case 0x1178: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13B8: +case 0x15B8: +case 0x17B8: +case 0x19B8: +case 0x1BB8: +case 0x1DB8: +case 0x1FB8: + +// MOVEB +case 0x11B8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EF8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F38: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1239: +case 0x1439: +case 0x1639: +case 0x1839: +case 0x1A39: +case 0x1C39: +case 0x1E39: + +// MOVEB +case 0x1039: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12B9: +case 0x14B9: +case 0x16B9: +case 0x18B9: +case 0x1AB9: +case 0x1CB9: +case 0x1EB9: + +// MOVEB +case 0x10B9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12F9: +case 0x14F9: +case 0x16F9: +case 0x18F9: +case 0x1AF9: +case 0x1CF9: + +// MOVEB +case 0x10F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1339: +case 0x1539: +case 0x1739: +case 0x1939: +case 0x1B39: +case 0x1D39: + +// MOVEB +case 0x1139: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1379: +case 0x1579: +case 0x1779: +case 0x1979: +case 0x1B79: +case 0x1D79: +case 0x1F79: + +// MOVEB +case 0x1179: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13B9: +case 0x15B9: +case 0x17B9: +case 0x19B9: +case 0x1BB9: +case 0x1DB9: +case 0x1FB9: + +// MOVEB +case 0x11B9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EF9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F39: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x123A: +case 0x143A: +case 0x163A: +case 0x183A: +case 0x1A3A: +case 0x1C3A: +case 0x1E3A: + +// MOVEB +case 0x103A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12BA: +case 0x14BA: +case 0x16BA: +case 0x18BA: +case 0x1ABA: +case 0x1CBA: +case 0x1EBA: + +// MOVEB +case 0x10BA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12FA: +case 0x14FA: +case 0x16FA: +case 0x18FA: +case 0x1AFA: +case 0x1CFA: + +// MOVEB +case 0x10FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x133A: +case 0x153A: +case 0x173A: +case 0x193A: +case 0x1B3A: +case 0x1D3A: + +// MOVEB +case 0x113A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x137A: +case 0x157A: +case 0x177A: +case 0x197A: +case 0x1B7A: +case 0x1D7A: +case 0x1F7A: + +// MOVEB +case 0x117A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13BA: +case 0x15BA: +case 0x17BA: +case 0x19BA: +case 0x1BBA: +case 0x1DBA: +case 0x1FBA: + +// MOVEB +case 0x11BA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EFA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F3A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x123B: +case 0x143B: +case 0x163B: +case 0x183B: +case 0x1A3B: +case 0x1C3B: +case 0x1E3B: + +// MOVEB +case 0x103B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12BB: +case 0x14BB: +case 0x16BB: +case 0x18BB: +case 0x1ABB: +case 0x1CBB: +case 0x1EBB: + +// MOVEB +case 0x10BB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12FB: +case 0x14FB: +case 0x16FB: +case 0x18FB: +case 0x1AFB: +case 0x1CFB: + +// MOVEB +case 0x10FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x133B: +case 0x153B: +case 0x173B: +case 0x193B: +case 0x1B3B: +case 0x1D3B: + +// MOVEB +case 0x113B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x137B: +case 0x157B: +case 0x177B: +case 0x197B: +case 0x1B7B: +case 0x1D7B: +case 0x1F7B: + +// MOVEB +case 0x117B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13BB: +case 0x15BB: +case 0x17BB: +case 0x19BB: +case 0x1BBB: +case 0x1DBB: +case 0x1FBB: + +// MOVEB +case 0x11BB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EFB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F3B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x123C: +case 0x143C: +case 0x163C: +case 0x183C: +case 0x1A3C: +case 0x1C3C: +case 0x1E3C: + +// MOVEB +case 0x103C: +{ + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x12BC: +case 0x14BC: +case 0x16BC: +case 0x18BC: +case 0x1ABC: +case 0x1CBC: +case 0x1EBC: + +// MOVEB +case 0x10BC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12FC: +case 0x14FC: +case 0x16FC: +case 0x18FC: +case 0x1AFC: +case 0x1CFC: + +// MOVEB +case 0x10FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x133C: +case 0x153C: +case 0x173C: +case 0x193C: +case 0x1B3C: +case 0x1D3C: + +// MOVEB +case 0x113C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x137C: +case 0x157C: +case 0x177C: +case 0x197C: +case 0x1B7C: +case 0x1D7C: +case 0x1F7C: + +// MOVEB +case 0x117C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13BC: +case 0x15BC: +case 0x17BC: +case 0x19BC: +case 0x1BBC: +case 0x1DBC: +case 0x1FBC: + +// MOVEB +case 0x11BC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 10; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EFC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F3C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_BYTE; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x121F: +case 0x141F: +case 0x161F: +case 0x181F: +case 0x1A1F: +case 0x1C1F: +case 0x1E1F: + +// MOVEB +case 0x101F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x129F: +case 0x149F: +case 0x169F: +case 0x189F: +case 0x1A9F: +case 0x1C9F: +case 0x1E9F: + +// MOVEB +case 0x109F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12DF: +case 0x14DF: +case 0x16DF: +case 0x18DF: +case 0x1ADF: +case 0x1CDF: + +// MOVEB +case 0x10DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x131F: +case 0x151F: +case 0x171F: +case 0x191F: +case 0x1B1F: +case 0x1D1F: + +// MOVEB +case 0x111F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x135F: +case 0x155F: +case 0x175F: +case 0x195F: +case 0x1B5F: +case 0x1D5F: +case 0x1F5F: + +// MOVEB +case 0x115F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x139F: +case 0x159F: +case 0x179F: +case 0x199F: +case 0x1B9F: +case 0x1D9F: +case 0x1F9F: + +// MOVEB +case 0x119F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EDF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F1F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1227: +case 0x1427: +case 0x1627: +case 0x1827: +case 0x1A27: +case 0x1C27: +case 0x1E27: + +// MOVEB +case 0x1027: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x12A7: +case 0x14A7: +case 0x16A7: +case 0x18A7: +case 0x1AA7: +case 0x1CA7: +case 0x1EA7: + +// MOVEB +case 0x10A7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x12E7: +case 0x14E7: +case 0x16E7: +case 0x18E7: +case 0x1AE7: +case 0x1CE7: + +// MOVEB +case 0x10E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1327: +case 0x1527: +case 0x1727: +case 0x1927: +case 0x1B27: +case 0x1D27: + +// MOVEB +case 0x1127: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x1367: +case 0x1567: +case 0x1767: +case 0x1967: +case 0x1B67: +case 0x1D67: +case 0x1F67: + +// MOVEB +case 0x1167: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x13A7: +case 0x15A7: +case 0x17A7: +case 0x19A7: +case 0x1BA7: +case 0x1DA7: +case 0x1FA7: + +// MOVEB +case 0x11A7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x11E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x13E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1EE7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_BYat_F(adr, res) +} +RET(0) + +// MOVEB +case 0x1F27: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_BYat_F(adr, res) +} +RET(0) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op2.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op2.inc new file mode 100644 index 0000000000..62d85f5068 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op2.inc @@ -0,0 +1,6247 @@ +case 0x2200: +case 0x2400: +case 0x2600: +case 0x2800: +case 0x2A00: +case 0x2C00: +case 0x2E00: +case 0x2001: +case 0x2201: +case 0x2401: +case 0x2601: +case 0x2801: +case 0x2A01: +case 0x2C01: +case 0x2E01: +case 0x2002: +case 0x2202: +case 0x2402: +case 0x2602: +case 0x2802: +case 0x2A02: +case 0x2C02: +case 0x2E02: +case 0x2003: +case 0x2203: +case 0x2403: +case 0x2603: +case 0x2803: +case 0x2A03: +case 0x2C03: +case 0x2E03: +case 0x2004: +case 0x2204: +case 0x2404: +case 0x2604: +case 0x2804: +case 0x2A04: +case 0x2C04: +case 0x2E04: +case 0x2005: +case 0x2205: +case 0x2405: +case 0x2605: +case 0x2805: +case 0x2A05: +case 0x2C05: +case 0x2E05: +case 0x2006: +case 0x2206: +case 0x2406: +case 0x2606: +case 0x2806: +case 0x2A06: +case 0x2C06: +case 0x2E06: +case 0x2007: +case 0x2207: +case 0x2407: +case 0x2607: +case 0x2807: +case 0x2A07: +case 0x2C07: +case 0x2E07: + +// MOVEL +case 0x2000: +{ + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x2280: +case 0x2480: +case 0x2680: +case 0x2880: +case 0x2A80: +case 0x2C80: +case 0x2E80: +case 0x2081: +case 0x2281: +case 0x2481: +case 0x2681: +case 0x2881: +case 0x2A81: +case 0x2C81: +case 0x2E81: +case 0x2082: +case 0x2282: +case 0x2482: +case 0x2682: +case 0x2882: +case 0x2A82: +case 0x2C82: +case 0x2E82: +case 0x2083: +case 0x2283: +case 0x2483: +case 0x2683: +case 0x2883: +case 0x2A83: +case 0x2C83: +case 0x2E83: +case 0x2084: +case 0x2284: +case 0x2484: +case 0x2684: +case 0x2884: +case 0x2A84: +case 0x2C84: +case 0x2E84: +case 0x2085: +case 0x2285: +case 0x2485: +case 0x2685: +case 0x2885: +case 0x2A85: +case 0x2C85: +case 0x2E85: +case 0x2086: +case 0x2286: +case 0x2486: +case 0x2686: +case 0x2886: +case 0x2A86: +case 0x2C86: +case 0x2E86: +case 0x2087: +case 0x2287: +case 0x2487: +case 0x2687: +case 0x2887: +case 0x2A87: +case 0x2C87: +case 0x2E87: + +// MOVEL +case 0x2080: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22C0: +case 0x24C0: +case 0x26C0: +case 0x28C0: +case 0x2AC0: +case 0x2CC0: +case 0x20C1: +case 0x22C1: +case 0x24C1: +case 0x26C1: +case 0x28C1: +case 0x2AC1: +case 0x2CC1: +case 0x20C2: +case 0x22C2: +case 0x24C2: +case 0x26C2: +case 0x28C2: +case 0x2AC2: +case 0x2CC2: +case 0x20C3: +case 0x22C3: +case 0x24C3: +case 0x26C3: +case 0x28C3: +case 0x2AC3: +case 0x2CC3: +case 0x20C4: +case 0x22C4: +case 0x24C4: +case 0x26C4: +case 0x28C4: +case 0x2AC4: +case 0x2CC4: +case 0x20C5: +case 0x22C5: +case 0x24C5: +case 0x26C5: +case 0x28C5: +case 0x2AC5: +case 0x2CC5: +case 0x20C6: +case 0x22C6: +case 0x24C6: +case 0x26C6: +case 0x28C6: +case 0x2AC6: +case 0x2CC6: +case 0x20C7: +case 0x22C7: +case 0x24C7: +case 0x26C7: +case 0x28C7: +case 0x2AC7: +case 0x2CC7: + +// MOVEL +case 0x20C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2300: +case 0x2500: +case 0x2700: +case 0x2900: +case 0x2B00: +case 0x2D00: +case 0x2101: +case 0x2301: +case 0x2501: +case 0x2701: +case 0x2901: +case 0x2B01: +case 0x2D01: +case 0x2102: +case 0x2302: +case 0x2502: +case 0x2702: +case 0x2902: +case 0x2B02: +case 0x2D02: +case 0x2103: +case 0x2303: +case 0x2503: +case 0x2703: +case 0x2903: +case 0x2B03: +case 0x2D03: +case 0x2104: +case 0x2304: +case 0x2504: +case 0x2704: +case 0x2904: +case 0x2B04: +case 0x2D04: +case 0x2105: +case 0x2305: +case 0x2505: +case 0x2705: +case 0x2905: +case 0x2B05: +case 0x2D05: +case 0x2106: +case 0x2306: +case 0x2506: +case 0x2706: +case 0x2906: +case 0x2B06: +case 0x2D06: +case 0x2107: +case 0x2307: +case 0x2507: +case 0x2707: +case 0x2907: +case 0x2B07: +case 0x2D07: + +// MOVEL +case 0x2100: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2340: +case 0x2540: +case 0x2740: +case 0x2940: +case 0x2B40: +case 0x2D40: +case 0x2F40: +case 0x2141: +case 0x2341: +case 0x2541: +case 0x2741: +case 0x2941: +case 0x2B41: +case 0x2D41: +case 0x2F41: +case 0x2142: +case 0x2342: +case 0x2542: +case 0x2742: +case 0x2942: +case 0x2B42: +case 0x2D42: +case 0x2F42: +case 0x2143: +case 0x2343: +case 0x2543: +case 0x2743: +case 0x2943: +case 0x2B43: +case 0x2D43: +case 0x2F43: +case 0x2144: +case 0x2344: +case 0x2544: +case 0x2744: +case 0x2944: +case 0x2B44: +case 0x2D44: +case 0x2F44: +case 0x2145: +case 0x2345: +case 0x2545: +case 0x2745: +case 0x2945: +case 0x2B45: +case 0x2D45: +case 0x2F45: +case 0x2146: +case 0x2346: +case 0x2546: +case 0x2746: +case 0x2946: +case 0x2B46: +case 0x2D46: +case 0x2F46: +case 0x2147: +case 0x2347: +case 0x2547: +case 0x2747: +case 0x2947: +case 0x2B47: +case 0x2D47: +case 0x2F47: + +// MOVEL +case 0x2140: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2380: +case 0x2580: +case 0x2780: +case 0x2980: +case 0x2B80: +case 0x2D80: +case 0x2F80: +case 0x2181: +case 0x2381: +case 0x2581: +case 0x2781: +case 0x2981: +case 0x2B81: +case 0x2D81: +case 0x2F81: +case 0x2182: +case 0x2382: +case 0x2582: +case 0x2782: +case 0x2982: +case 0x2B82: +case 0x2D82: +case 0x2F82: +case 0x2183: +case 0x2383: +case 0x2583: +case 0x2783: +case 0x2983: +case 0x2B83: +case 0x2D83: +case 0x2F83: +case 0x2184: +case 0x2384: +case 0x2584: +case 0x2784: +case 0x2984: +case 0x2B84: +case 0x2D84: +case 0x2F84: +case 0x2185: +case 0x2385: +case 0x2585: +case 0x2785: +case 0x2985: +case 0x2B85: +case 0x2D85: +case 0x2F85: +case 0x2186: +case 0x2386: +case 0x2586: +case 0x2786: +case 0x2986: +case 0x2B86: +case 0x2D86: +case 0x2F86: +case 0x2187: +case 0x2387: +case 0x2587: +case 0x2787: +case 0x2987: +case 0x2B87: +case 0x2D87: +case 0x2F87: + +// MOVEL +case 0x2180: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21C1: +case 0x21C2: +case 0x21C3: +case 0x21C4: +case 0x21C5: +case 0x21C6: +case 0x21C7: + +// MOVEL +case 0x21C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23C1: +case 0x23C2: +case 0x23C3: +case 0x23C4: +case 0x23C5: +case 0x23C6: +case 0x23C7: + +// MOVEL +case 0x23C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2EC1: +case 0x2EC2: +case 0x2EC3: +case 0x2EC4: +case 0x2EC5: +case 0x2EC6: +case 0x2EC7: + +// MOVEL +case 0x2EC0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F01: +case 0x2F02: +case 0x2F03: +case 0x2F04: +case 0x2F05: +case 0x2F06: +case 0x2F07: + +// MOVEL +case 0x2F00: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2208: +case 0x2408: +case 0x2608: +case 0x2808: +case 0x2A08: +case 0x2C08: +case 0x2E08: +case 0x2009: +case 0x2209: +case 0x2409: +case 0x2609: +case 0x2809: +case 0x2A09: +case 0x2C09: +case 0x2E09: +case 0x200A: +case 0x220A: +case 0x240A: +case 0x260A: +case 0x280A: +case 0x2A0A: +case 0x2C0A: +case 0x2E0A: +case 0x200B: +case 0x220B: +case 0x240B: +case 0x260B: +case 0x280B: +case 0x2A0B: +case 0x2C0B: +case 0x2E0B: +case 0x200C: +case 0x220C: +case 0x240C: +case 0x260C: +case 0x280C: +case 0x2A0C: +case 0x2C0C: +case 0x2E0C: +case 0x200D: +case 0x220D: +case 0x240D: +case 0x260D: +case 0x280D: +case 0x2A0D: +case 0x2C0D: +case 0x2E0D: +case 0x200E: +case 0x220E: +case 0x240E: +case 0x260E: +case 0x280E: +case 0x2A0E: +case 0x2C0E: +case 0x2E0E: +case 0x200F: +case 0x220F: +case 0x240F: +case 0x260F: +case 0x280F: +case 0x2A0F: +case 0x2C0F: +case 0x2E0F: + +// MOVEL +case 0x2008: +{ + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x2288: +case 0x2488: +case 0x2688: +case 0x2888: +case 0x2A88: +case 0x2C88: +case 0x2E88: +case 0x2089: +case 0x2289: +case 0x2489: +case 0x2689: +case 0x2889: +case 0x2A89: +case 0x2C89: +case 0x2E89: +case 0x208A: +case 0x228A: +case 0x248A: +case 0x268A: +case 0x288A: +case 0x2A8A: +case 0x2C8A: +case 0x2E8A: +case 0x208B: +case 0x228B: +case 0x248B: +case 0x268B: +case 0x288B: +case 0x2A8B: +case 0x2C8B: +case 0x2E8B: +case 0x208C: +case 0x228C: +case 0x248C: +case 0x268C: +case 0x288C: +case 0x2A8C: +case 0x2C8C: +case 0x2E8C: +case 0x208D: +case 0x228D: +case 0x248D: +case 0x268D: +case 0x288D: +case 0x2A8D: +case 0x2C8D: +case 0x2E8D: +case 0x208E: +case 0x228E: +case 0x248E: +case 0x268E: +case 0x288E: +case 0x2A8E: +case 0x2C8E: +case 0x2E8E: +case 0x208F: +case 0x228F: +case 0x248F: +case 0x268F: +case 0x288F: +case 0x2A8F: +case 0x2C8F: +case 0x2E8F: + +// MOVEL +case 0x2088: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22C8: +case 0x24C8: +case 0x26C8: +case 0x28C8: +case 0x2AC8: +case 0x2CC8: +case 0x20C9: +case 0x22C9: +case 0x24C9: +case 0x26C9: +case 0x28C9: +case 0x2AC9: +case 0x2CC9: +case 0x20CA: +case 0x22CA: +case 0x24CA: +case 0x26CA: +case 0x28CA: +case 0x2ACA: +case 0x2CCA: +case 0x20CB: +case 0x22CB: +case 0x24CB: +case 0x26CB: +case 0x28CB: +case 0x2ACB: +case 0x2CCB: +case 0x20CC: +case 0x22CC: +case 0x24CC: +case 0x26CC: +case 0x28CC: +case 0x2ACC: +case 0x2CCC: +case 0x20CD: +case 0x22CD: +case 0x24CD: +case 0x26CD: +case 0x28CD: +case 0x2ACD: +case 0x2CCD: +case 0x20CE: +case 0x22CE: +case 0x24CE: +case 0x26CE: +case 0x28CE: +case 0x2ACE: +case 0x2CCE: +case 0x20CF: +case 0x22CF: +case 0x24CF: +case 0x26CF: +case 0x28CF: +case 0x2ACF: +case 0x2CCF: + +// MOVEL +case 0x20C8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2308: +case 0x2508: +case 0x2708: +case 0x2908: +case 0x2B08: +case 0x2D08: +case 0x2109: +case 0x2309: +case 0x2509: +case 0x2709: +case 0x2909: +case 0x2B09: +case 0x2D09: +case 0x210A: +case 0x230A: +case 0x250A: +case 0x270A: +case 0x290A: +case 0x2B0A: +case 0x2D0A: +case 0x210B: +case 0x230B: +case 0x250B: +case 0x270B: +case 0x290B: +case 0x2B0B: +case 0x2D0B: +case 0x210C: +case 0x230C: +case 0x250C: +case 0x270C: +case 0x290C: +case 0x2B0C: +case 0x2D0C: +case 0x210D: +case 0x230D: +case 0x250D: +case 0x270D: +case 0x290D: +case 0x2B0D: +case 0x2D0D: +case 0x210E: +case 0x230E: +case 0x250E: +case 0x270E: +case 0x290E: +case 0x2B0E: +case 0x2D0E: +case 0x210F: +case 0x230F: +case 0x250F: +case 0x270F: +case 0x290F: +case 0x2B0F: +case 0x2D0F: + +// MOVEL +case 0x2108: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2348: +case 0x2548: +case 0x2748: +case 0x2948: +case 0x2B48: +case 0x2D48: +case 0x2F48: +case 0x2149: +case 0x2349: +case 0x2549: +case 0x2749: +case 0x2949: +case 0x2B49: +case 0x2D49: +case 0x2F49: +case 0x214A: +case 0x234A: +case 0x254A: +case 0x274A: +case 0x294A: +case 0x2B4A: +case 0x2D4A: +case 0x2F4A: +case 0x214B: +case 0x234B: +case 0x254B: +case 0x274B: +case 0x294B: +case 0x2B4B: +case 0x2D4B: +case 0x2F4B: +case 0x214C: +case 0x234C: +case 0x254C: +case 0x274C: +case 0x294C: +case 0x2B4C: +case 0x2D4C: +case 0x2F4C: +case 0x214D: +case 0x234D: +case 0x254D: +case 0x274D: +case 0x294D: +case 0x2B4D: +case 0x2D4D: +case 0x2F4D: +case 0x214E: +case 0x234E: +case 0x254E: +case 0x274E: +case 0x294E: +case 0x2B4E: +case 0x2D4E: +case 0x2F4E: +case 0x214F: +case 0x234F: +case 0x254F: +case 0x274F: +case 0x294F: +case 0x2B4F: +case 0x2D4F: +case 0x2F4F: + +// MOVEL +case 0x2148: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2388: +case 0x2588: +case 0x2788: +case 0x2988: +case 0x2B88: +case 0x2D88: +case 0x2F88: +case 0x2189: +case 0x2389: +case 0x2589: +case 0x2789: +case 0x2989: +case 0x2B89: +case 0x2D89: +case 0x2F89: +case 0x218A: +case 0x238A: +case 0x258A: +case 0x278A: +case 0x298A: +case 0x2B8A: +case 0x2D8A: +case 0x2F8A: +case 0x218B: +case 0x238B: +case 0x258B: +case 0x278B: +case 0x298B: +case 0x2B8B: +case 0x2D8B: +case 0x2F8B: +case 0x218C: +case 0x238C: +case 0x258C: +case 0x278C: +case 0x298C: +case 0x2B8C: +case 0x2D8C: +case 0x2F8C: +case 0x218D: +case 0x238D: +case 0x258D: +case 0x278D: +case 0x298D: +case 0x2B8D: +case 0x2D8D: +case 0x2F8D: +case 0x218E: +case 0x238E: +case 0x258E: +case 0x278E: +case 0x298E: +case 0x2B8E: +case 0x2D8E: +case 0x2F8E: +case 0x218F: +case 0x238F: +case 0x258F: +case 0x278F: +case 0x298F: +case 0x2B8F: +case 0x2D8F: +case 0x2F8F: + +// MOVEL +case 0x2188: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21C9: +case 0x21CA: +case 0x21CB: +case 0x21CC: +case 0x21CD: +case 0x21CE: +case 0x21CF: + +// MOVEL +case 0x21C8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23C9: +case 0x23CA: +case 0x23CB: +case 0x23CC: +case 0x23CD: +case 0x23CE: +case 0x23CF: + +// MOVEL +case 0x23C8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2EC9: +case 0x2ECA: +case 0x2ECB: +case 0x2ECC: +case 0x2ECD: +case 0x2ECE: +case 0x2ECF: + +// MOVEL +case 0x2EC8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F09: +case 0x2F0A: +case 0x2F0B: +case 0x2F0C: +case 0x2F0D: +case 0x2F0E: +case 0x2F0F: + +// MOVEL +case 0x2F08: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2210: +case 0x2410: +case 0x2610: +case 0x2810: +case 0x2A10: +case 0x2C10: +case 0x2E10: +case 0x2011: +case 0x2211: +case 0x2411: +case 0x2611: +case 0x2811: +case 0x2A11: +case 0x2C11: +case 0x2E11: +case 0x2012: +case 0x2212: +case 0x2412: +case 0x2612: +case 0x2812: +case 0x2A12: +case 0x2C12: +case 0x2E12: +case 0x2013: +case 0x2213: +case 0x2413: +case 0x2613: +case 0x2813: +case 0x2A13: +case 0x2C13: +case 0x2E13: +case 0x2014: +case 0x2214: +case 0x2414: +case 0x2614: +case 0x2814: +case 0x2A14: +case 0x2C14: +case 0x2E14: +case 0x2015: +case 0x2215: +case 0x2415: +case 0x2615: +case 0x2815: +case 0x2A15: +case 0x2C15: +case 0x2E15: +case 0x2016: +case 0x2216: +case 0x2416: +case 0x2616: +case 0x2816: +case 0x2A16: +case 0x2C16: +case 0x2E16: +case 0x2017: +case 0x2217: +case 0x2417: +case 0x2617: +case 0x2817: +case 0x2A17: +case 0x2C17: +case 0x2E17: + +// MOVEL +case 0x2010: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x2290: +case 0x2490: +case 0x2690: +case 0x2890: +case 0x2A90: +case 0x2C90: +case 0x2E90: +case 0x2091: +case 0x2291: +case 0x2491: +case 0x2691: +case 0x2891: +case 0x2A91: +case 0x2C91: +case 0x2E91: +case 0x2092: +case 0x2292: +case 0x2492: +case 0x2692: +case 0x2892: +case 0x2A92: +case 0x2C92: +case 0x2E92: +case 0x2093: +case 0x2293: +case 0x2493: +case 0x2693: +case 0x2893: +case 0x2A93: +case 0x2C93: +case 0x2E93: +case 0x2094: +case 0x2294: +case 0x2494: +case 0x2694: +case 0x2894: +case 0x2A94: +case 0x2C94: +case 0x2E94: +case 0x2095: +case 0x2295: +case 0x2495: +case 0x2695: +case 0x2895: +case 0x2A95: +case 0x2C95: +case 0x2E95: +case 0x2096: +case 0x2296: +case 0x2496: +case 0x2696: +case 0x2896: +case 0x2A96: +case 0x2C96: +case 0x2E96: +case 0x2097: +case 0x2297: +case 0x2497: +case 0x2697: +case 0x2897: +case 0x2A97: +case 0x2C97: +case 0x2E97: + +// MOVEL +case 0x2090: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22D0: +case 0x24D0: +case 0x26D0: +case 0x28D0: +case 0x2AD0: +case 0x2CD0: +case 0x20D1: +case 0x22D1: +case 0x24D1: +case 0x26D1: +case 0x28D1: +case 0x2AD1: +case 0x2CD1: +case 0x20D2: +case 0x22D2: +case 0x24D2: +case 0x26D2: +case 0x28D2: +case 0x2AD2: +case 0x2CD2: +case 0x20D3: +case 0x22D3: +case 0x24D3: +case 0x26D3: +case 0x28D3: +case 0x2AD3: +case 0x2CD3: +case 0x20D4: +case 0x22D4: +case 0x24D4: +case 0x26D4: +case 0x28D4: +case 0x2AD4: +case 0x2CD4: +case 0x20D5: +case 0x22D5: +case 0x24D5: +case 0x26D5: +case 0x28D5: +case 0x2AD5: +case 0x2CD5: +case 0x20D6: +case 0x22D6: +case 0x24D6: +case 0x26D6: +case 0x28D6: +case 0x2AD6: +case 0x2CD6: +case 0x20D7: +case 0x22D7: +case 0x24D7: +case 0x26D7: +case 0x28D7: +case 0x2AD7: +case 0x2CD7: + +// MOVEL +case 0x20D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2310: +case 0x2510: +case 0x2710: +case 0x2910: +case 0x2B10: +case 0x2D10: +case 0x2111: +case 0x2311: +case 0x2511: +case 0x2711: +case 0x2911: +case 0x2B11: +case 0x2D11: +case 0x2112: +case 0x2312: +case 0x2512: +case 0x2712: +case 0x2912: +case 0x2B12: +case 0x2D12: +case 0x2113: +case 0x2313: +case 0x2513: +case 0x2713: +case 0x2913: +case 0x2B13: +case 0x2D13: +case 0x2114: +case 0x2314: +case 0x2514: +case 0x2714: +case 0x2914: +case 0x2B14: +case 0x2D14: +case 0x2115: +case 0x2315: +case 0x2515: +case 0x2715: +case 0x2915: +case 0x2B15: +case 0x2D15: +case 0x2116: +case 0x2316: +case 0x2516: +case 0x2716: +case 0x2916: +case 0x2B16: +case 0x2D16: +case 0x2117: +case 0x2317: +case 0x2517: +case 0x2717: +case 0x2917: +case 0x2B17: +case 0x2D17: + +// MOVEL +case 0x2110: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2350: +case 0x2550: +case 0x2750: +case 0x2950: +case 0x2B50: +case 0x2D50: +case 0x2F50: +case 0x2151: +case 0x2351: +case 0x2551: +case 0x2751: +case 0x2951: +case 0x2B51: +case 0x2D51: +case 0x2F51: +case 0x2152: +case 0x2352: +case 0x2552: +case 0x2752: +case 0x2952: +case 0x2B52: +case 0x2D52: +case 0x2F52: +case 0x2153: +case 0x2353: +case 0x2553: +case 0x2753: +case 0x2953: +case 0x2B53: +case 0x2D53: +case 0x2F53: +case 0x2154: +case 0x2354: +case 0x2554: +case 0x2754: +case 0x2954: +case 0x2B54: +case 0x2D54: +case 0x2F54: +case 0x2155: +case 0x2355: +case 0x2555: +case 0x2755: +case 0x2955: +case 0x2B55: +case 0x2D55: +case 0x2F55: +case 0x2156: +case 0x2356: +case 0x2556: +case 0x2756: +case 0x2956: +case 0x2B56: +case 0x2D56: +case 0x2F56: +case 0x2157: +case 0x2357: +case 0x2557: +case 0x2757: +case 0x2957: +case 0x2B57: +case 0x2D57: +case 0x2F57: + +// MOVEL +case 0x2150: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2390: +case 0x2590: +case 0x2790: +case 0x2990: +case 0x2B90: +case 0x2D90: +case 0x2F90: +case 0x2191: +case 0x2391: +case 0x2591: +case 0x2791: +case 0x2991: +case 0x2B91: +case 0x2D91: +case 0x2F91: +case 0x2192: +case 0x2392: +case 0x2592: +case 0x2792: +case 0x2992: +case 0x2B92: +case 0x2D92: +case 0x2F92: +case 0x2193: +case 0x2393: +case 0x2593: +case 0x2793: +case 0x2993: +case 0x2B93: +case 0x2D93: +case 0x2F93: +case 0x2194: +case 0x2394: +case 0x2594: +case 0x2794: +case 0x2994: +case 0x2B94: +case 0x2D94: +case 0x2F94: +case 0x2195: +case 0x2395: +case 0x2595: +case 0x2795: +case 0x2995: +case 0x2B95: +case 0x2D95: +case 0x2F95: +case 0x2196: +case 0x2396: +case 0x2596: +case 0x2796: +case 0x2996: +case 0x2B96: +case 0x2D96: +case 0x2F96: +case 0x2197: +case 0x2397: +case 0x2597: +case 0x2797: +case 0x2997: +case 0x2B97: +case 0x2D97: +case 0x2F97: + +// MOVEL +case 0x2190: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21D1: +case 0x21D2: +case 0x21D3: +case 0x21D4: +case 0x21D5: +case 0x21D6: +case 0x21D7: + +// MOVEL +case 0x21D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23D1: +case 0x23D2: +case 0x23D3: +case 0x23D4: +case 0x23D5: +case 0x23D6: +case 0x23D7: + +// MOVEL +case 0x23D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2ED1: +case 0x2ED2: +case 0x2ED3: +case 0x2ED4: +case 0x2ED5: +case 0x2ED6: +case 0x2ED7: + +// MOVEL +case 0x2ED0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F11: +case 0x2F12: +case 0x2F13: +case 0x2F14: +case 0x2F15: +case 0x2F16: +case 0x2F17: + +// MOVEL +case 0x2F10: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2218: +case 0x2418: +case 0x2618: +case 0x2818: +case 0x2A18: +case 0x2C18: +case 0x2E18: +case 0x2019: +case 0x2219: +case 0x2419: +case 0x2619: +case 0x2819: +case 0x2A19: +case 0x2C19: +case 0x2E19: +case 0x201A: +case 0x221A: +case 0x241A: +case 0x261A: +case 0x281A: +case 0x2A1A: +case 0x2C1A: +case 0x2E1A: +case 0x201B: +case 0x221B: +case 0x241B: +case 0x261B: +case 0x281B: +case 0x2A1B: +case 0x2C1B: +case 0x2E1B: +case 0x201C: +case 0x221C: +case 0x241C: +case 0x261C: +case 0x281C: +case 0x2A1C: +case 0x2C1C: +case 0x2E1C: +case 0x201D: +case 0x221D: +case 0x241D: +case 0x261D: +case 0x281D: +case 0x2A1D: +case 0x2C1D: +case 0x2E1D: +case 0x201E: +case 0x221E: +case 0x241E: +case 0x261E: +case 0x281E: +case 0x2A1E: +case 0x2C1E: +case 0x2E1E: + +// MOVEL +case 0x2018: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x2298: +case 0x2498: +case 0x2698: +case 0x2898: +case 0x2A98: +case 0x2C98: +case 0x2E98: +case 0x2099: +case 0x2299: +case 0x2499: +case 0x2699: +case 0x2899: +case 0x2A99: +case 0x2C99: +case 0x2E99: +case 0x209A: +case 0x229A: +case 0x249A: +case 0x269A: +case 0x289A: +case 0x2A9A: +case 0x2C9A: +case 0x2E9A: +case 0x209B: +case 0x229B: +case 0x249B: +case 0x269B: +case 0x289B: +case 0x2A9B: +case 0x2C9B: +case 0x2E9B: +case 0x209C: +case 0x229C: +case 0x249C: +case 0x269C: +case 0x289C: +case 0x2A9C: +case 0x2C9C: +case 0x2E9C: +case 0x209D: +case 0x229D: +case 0x249D: +case 0x269D: +case 0x289D: +case 0x2A9D: +case 0x2C9D: +case 0x2E9D: +case 0x209E: +case 0x229E: +case 0x249E: +case 0x269E: +case 0x289E: +case 0x2A9E: +case 0x2C9E: +case 0x2E9E: + +// MOVEL +case 0x2098: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22D8: +case 0x24D8: +case 0x26D8: +case 0x28D8: +case 0x2AD8: +case 0x2CD8: +case 0x20D9: +case 0x22D9: +case 0x24D9: +case 0x26D9: +case 0x28D9: +case 0x2AD9: +case 0x2CD9: +case 0x20DA: +case 0x22DA: +case 0x24DA: +case 0x26DA: +case 0x28DA: +case 0x2ADA: +case 0x2CDA: +case 0x20DB: +case 0x22DB: +case 0x24DB: +case 0x26DB: +case 0x28DB: +case 0x2ADB: +case 0x2CDB: +case 0x20DC: +case 0x22DC: +case 0x24DC: +case 0x26DC: +case 0x28DC: +case 0x2ADC: +case 0x2CDC: +case 0x20DD: +case 0x22DD: +case 0x24DD: +case 0x26DD: +case 0x28DD: +case 0x2ADD: +case 0x2CDD: +case 0x20DE: +case 0x22DE: +case 0x24DE: +case 0x26DE: +case 0x28DE: +case 0x2ADE: +case 0x2CDE: + +// MOVEL +case 0x20D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2318: +case 0x2518: +case 0x2718: +case 0x2918: +case 0x2B18: +case 0x2D18: +case 0x2119: +case 0x2319: +case 0x2519: +case 0x2719: +case 0x2919: +case 0x2B19: +case 0x2D19: +case 0x211A: +case 0x231A: +case 0x251A: +case 0x271A: +case 0x291A: +case 0x2B1A: +case 0x2D1A: +case 0x211B: +case 0x231B: +case 0x251B: +case 0x271B: +case 0x291B: +case 0x2B1B: +case 0x2D1B: +case 0x211C: +case 0x231C: +case 0x251C: +case 0x271C: +case 0x291C: +case 0x2B1C: +case 0x2D1C: +case 0x211D: +case 0x231D: +case 0x251D: +case 0x271D: +case 0x291D: +case 0x2B1D: +case 0x2D1D: +case 0x211E: +case 0x231E: +case 0x251E: +case 0x271E: +case 0x291E: +case 0x2B1E: +case 0x2D1E: + +// MOVEL +case 0x2118: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2358: +case 0x2558: +case 0x2758: +case 0x2958: +case 0x2B58: +case 0x2D58: +case 0x2F58: +case 0x2159: +case 0x2359: +case 0x2559: +case 0x2759: +case 0x2959: +case 0x2B59: +case 0x2D59: +case 0x2F59: +case 0x215A: +case 0x235A: +case 0x255A: +case 0x275A: +case 0x295A: +case 0x2B5A: +case 0x2D5A: +case 0x2F5A: +case 0x215B: +case 0x235B: +case 0x255B: +case 0x275B: +case 0x295B: +case 0x2B5B: +case 0x2D5B: +case 0x2F5B: +case 0x215C: +case 0x235C: +case 0x255C: +case 0x275C: +case 0x295C: +case 0x2B5C: +case 0x2D5C: +case 0x2F5C: +case 0x215D: +case 0x235D: +case 0x255D: +case 0x275D: +case 0x295D: +case 0x2B5D: +case 0x2D5D: +case 0x2F5D: +case 0x215E: +case 0x235E: +case 0x255E: +case 0x275E: +case 0x295E: +case 0x2B5E: +case 0x2D5E: +case 0x2F5E: + +// MOVEL +case 0x2158: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2398: +case 0x2598: +case 0x2798: +case 0x2998: +case 0x2B98: +case 0x2D98: +case 0x2F98: +case 0x2199: +case 0x2399: +case 0x2599: +case 0x2799: +case 0x2999: +case 0x2B99: +case 0x2D99: +case 0x2F99: +case 0x219A: +case 0x239A: +case 0x259A: +case 0x279A: +case 0x299A: +case 0x2B9A: +case 0x2D9A: +case 0x2F9A: +case 0x219B: +case 0x239B: +case 0x259B: +case 0x279B: +case 0x299B: +case 0x2B9B: +case 0x2D9B: +case 0x2F9B: +case 0x219C: +case 0x239C: +case 0x259C: +case 0x279C: +case 0x299C: +case 0x2B9C: +case 0x2D9C: +case 0x2F9C: +case 0x219D: +case 0x239D: +case 0x259D: +case 0x279D: +case 0x299D: +case 0x2B9D: +case 0x2D9D: +case 0x2F9D: +case 0x219E: +case 0x239E: +case 0x259E: +case 0x279E: +case 0x299E: +case 0x2B9E: +case 0x2D9E: +case 0x2F9E: + +// MOVEL +case 0x2198: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21D9: +case 0x21DA: +case 0x21DB: +case 0x21DC: +case 0x21DD: +case 0x21DE: + +// MOVEL +case 0x21D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23D9: +case 0x23DA: +case 0x23DB: +case 0x23DC: +case 0x23DD: +case 0x23DE: + +// MOVEL +case 0x23D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2ED9: +case 0x2EDA: +case 0x2EDB: +case 0x2EDC: +case 0x2EDD: +case 0x2EDE: + +// MOVEL +case 0x2ED8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F19: +case 0x2F1A: +case 0x2F1B: +case 0x2F1C: +case 0x2F1D: +case 0x2F1E: + +// MOVEL +case 0x2F18: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2220: +case 0x2420: +case 0x2620: +case 0x2820: +case 0x2A20: +case 0x2C20: +case 0x2E20: +case 0x2021: +case 0x2221: +case 0x2421: +case 0x2621: +case 0x2821: +case 0x2A21: +case 0x2C21: +case 0x2E21: +case 0x2022: +case 0x2222: +case 0x2422: +case 0x2622: +case 0x2822: +case 0x2A22: +case 0x2C22: +case 0x2E22: +case 0x2023: +case 0x2223: +case 0x2423: +case 0x2623: +case 0x2823: +case 0x2A23: +case 0x2C23: +case 0x2E23: +case 0x2024: +case 0x2224: +case 0x2424: +case 0x2624: +case 0x2824: +case 0x2A24: +case 0x2C24: +case 0x2E24: +case 0x2025: +case 0x2225: +case 0x2425: +case 0x2625: +case 0x2825: +case 0x2A25: +case 0x2C25: +case 0x2E25: +case 0x2026: +case 0x2226: +case 0x2426: +case 0x2626: +case 0x2826: +case 0x2A26: +case 0x2C26: +case 0x2E26: + +// MOVEL +case 0x2020: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22A0: +case 0x24A0: +case 0x26A0: +case 0x28A0: +case 0x2AA0: +case 0x2CA0: +case 0x2EA0: +case 0x20A1: +case 0x22A1: +case 0x24A1: +case 0x26A1: +case 0x28A1: +case 0x2AA1: +case 0x2CA1: +case 0x2EA1: +case 0x20A2: +case 0x22A2: +case 0x24A2: +case 0x26A2: +case 0x28A2: +case 0x2AA2: +case 0x2CA2: +case 0x2EA2: +case 0x20A3: +case 0x22A3: +case 0x24A3: +case 0x26A3: +case 0x28A3: +case 0x2AA3: +case 0x2CA3: +case 0x2EA3: +case 0x20A4: +case 0x22A4: +case 0x24A4: +case 0x26A4: +case 0x28A4: +case 0x2AA4: +case 0x2CA4: +case 0x2EA4: +case 0x20A5: +case 0x22A5: +case 0x24A5: +case 0x26A5: +case 0x28A5: +case 0x2AA5: +case 0x2CA5: +case 0x2EA5: +case 0x20A6: +case 0x22A6: +case 0x24A6: +case 0x26A6: +case 0x28A6: +case 0x2AA6: +case 0x2CA6: +case 0x2EA6: + +// MOVEL +case 0x20A0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22E0: +case 0x24E0: +case 0x26E0: +case 0x28E0: +case 0x2AE0: +case 0x2CE0: +case 0x20E1: +case 0x22E1: +case 0x24E1: +case 0x26E1: +case 0x28E1: +case 0x2AE1: +case 0x2CE1: +case 0x20E2: +case 0x22E2: +case 0x24E2: +case 0x26E2: +case 0x28E2: +case 0x2AE2: +case 0x2CE2: +case 0x20E3: +case 0x22E3: +case 0x24E3: +case 0x26E3: +case 0x28E3: +case 0x2AE3: +case 0x2CE3: +case 0x20E4: +case 0x22E4: +case 0x24E4: +case 0x26E4: +case 0x28E4: +case 0x2AE4: +case 0x2CE4: +case 0x20E5: +case 0x22E5: +case 0x24E5: +case 0x26E5: +case 0x28E5: +case 0x2AE5: +case 0x2CE5: +case 0x20E6: +case 0x22E6: +case 0x24E6: +case 0x26E6: +case 0x28E6: +case 0x2AE6: +case 0x2CE6: + +// MOVEL +case 0x20E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2320: +case 0x2520: +case 0x2720: +case 0x2920: +case 0x2B20: +case 0x2D20: +case 0x2121: +case 0x2321: +case 0x2521: +case 0x2721: +case 0x2921: +case 0x2B21: +case 0x2D21: +case 0x2122: +case 0x2322: +case 0x2522: +case 0x2722: +case 0x2922: +case 0x2B22: +case 0x2D22: +case 0x2123: +case 0x2323: +case 0x2523: +case 0x2723: +case 0x2923: +case 0x2B23: +case 0x2D23: +case 0x2124: +case 0x2324: +case 0x2524: +case 0x2724: +case 0x2924: +case 0x2B24: +case 0x2D24: +case 0x2125: +case 0x2325: +case 0x2525: +case 0x2725: +case 0x2925: +case 0x2B25: +case 0x2D25: +case 0x2126: +case 0x2326: +case 0x2526: +case 0x2726: +case 0x2926: +case 0x2B26: +case 0x2D26: + +// MOVEL +case 0x2120: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2360: +case 0x2560: +case 0x2760: +case 0x2960: +case 0x2B60: +case 0x2D60: +case 0x2F60: +case 0x2161: +case 0x2361: +case 0x2561: +case 0x2761: +case 0x2961: +case 0x2B61: +case 0x2D61: +case 0x2F61: +case 0x2162: +case 0x2362: +case 0x2562: +case 0x2762: +case 0x2962: +case 0x2B62: +case 0x2D62: +case 0x2F62: +case 0x2163: +case 0x2363: +case 0x2563: +case 0x2763: +case 0x2963: +case 0x2B63: +case 0x2D63: +case 0x2F63: +case 0x2164: +case 0x2364: +case 0x2564: +case 0x2764: +case 0x2964: +case 0x2B64: +case 0x2D64: +case 0x2F64: +case 0x2165: +case 0x2365: +case 0x2565: +case 0x2765: +case 0x2965: +case 0x2B65: +case 0x2D65: +case 0x2F65: +case 0x2166: +case 0x2366: +case 0x2566: +case 0x2766: +case 0x2966: +case 0x2B66: +case 0x2D66: +case 0x2F66: + +// MOVEL +case 0x2160: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23A0: +case 0x25A0: +case 0x27A0: +case 0x29A0: +case 0x2BA0: +case 0x2DA0: +case 0x2FA0: +case 0x21A1: +case 0x23A1: +case 0x25A1: +case 0x27A1: +case 0x29A1: +case 0x2BA1: +case 0x2DA1: +case 0x2FA1: +case 0x21A2: +case 0x23A2: +case 0x25A2: +case 0x27A2: +case 0x29A2: +case 0x2BA2: +case 0x2DA2: +case 0x2FA2: +case 0x21A3: +case 0x23A3: +case 0x25A3: +case 0x27A3: +case 0x29A3: +case 0x2BA3: +case 0x2DA3: +case 0x2FA3: +case 0x21A4: +case 0x23A4: +case 0x25A4: +case 0x27A4: +case 0x29A4: +case 0x2BA4: +case 0x2DA4: +case 0x2FA4: +case 0x21A5: +case 0x23A5: +case 0x25A5: +case 0x27A5: +case 0x29A5: +case 0x2BA5: +case 0x2DA5: +case 0x2FA5: +case 0x21A6: +case 0x23A6: +case 0x25A6: +case 0x27A6: +case 0x29A6: +case 0x2BA6: +case 0x2DA6: +case 0x2FA6: + +// MOVEL +case 0x21A0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21E1: +case 0x21E2: +case 0x21E3: +case 0x21E4: +case 0x21E5: +case 0x21E6: + +// MOVEL +case 0x21E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23E1: +case 0x23E2: +case 0x23E3: +case 0x23E4: +case 0x23E5: +case 0x23E6: + +// MOVEL +case 0x23E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2EE1: +case 0x2EE2: +case 0x2EE3: +case 0x2EE4: +case 0x2EE5: +case 0x2EE6: + +// MOVEL +case 0x2EE0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F21: +case 0x2F22: +case 0x2F23: +case 0x2F24: +case 0x2F25: +case 0x2F26: + +// MOVEL +case 0x2F20: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2228: +case 0x2428: +case 0x2628: +case 0x2828: +case 0x2A28: +case 0x2C28: +case 0x2E28: +case 0x2029: +case 0x2229: +case 0x2429: +case 0x2629: +case 0x2829: +case 0x2A29: +case 0x2C29: +case 0x2E29: +case 0x202A: +case 0x222A: +case 0x242A: +case 0x262A: +case 0x282A: +case 0x2A2A: +case 0x2C2A: +case 0x2E2A: +case 0x202B: +case 0x222B: +case 0x242B: +case 0x262B: +case 0x282B: +case 0x2A2B: +case 0x2C2B: +case 0x2E2B: +case 0x202C: +case 0x222C: +case 0x242C: +case 0x262C: +case 0x282C: +case 0x2A2C: +case 0x2C2C: +case 0x2E2C: +case 0x202D: +case 0x222D: +case 0x242D: +case 0x262D: +case 0x282D: +case 0x2A2D: +case 0x2C2D: +case 0x2E2D: +case 0x202E: +case 0x222E: +case 0x242E: +case 0x262E: +case 0x282E: +case 0x2A2E: +case 0x2C2E: +case 0x2E2E: +case 0x202F: +case 0x222F: +case 0x242F: +case 0x262F: +case 0x282F: +case 0x2A2F: +case 0x2C2F: +case 0x2E2F: + +// MOVEL +case 0x2028: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22A8: +case 0x24A8: +case 0x26A8: +case 0x28A8: +case 0x2AA8: +case 0x2CA8: +case 0x2EA8: +case 0x20A9: +case 0x22A9: +case 0x24A9: +case 0x26A9: +case 0x28A9: +case 0x2AA9: +case 0x2CA9: +case 0x2EA9: +case 0x20AA: +case 0x22AA: +case 0x24AA: +case 0x26AA: +case 0x28AA: +case 0x2AAA: +case 0x2CAA: +case 0x2EAA: +case 0x20AB: +case 0x22AB: +case 0x24AB: +case 0x26AB: +case 0x28AB: +case 0x2AAB: +case 0x2CAB: +case 0x2EAB: +case 0x20AC: +case 0x22AC: +case 0x24AC: +case 0x26AC: +case 0x28AC: +case 0x2AAC: +case 0x2CAC: +case 0x2EAC: +case 0x20AD: +case 0x22AD: +case 0x24AD: +case 0x26AD: +case 0x28AD: +case 0x2AAD: +case 0x2CAD: +case 0x2EAD: +case 0x20AE: +case 0x22AE: +case 0x24AE: +case 0x26AE: +case 0x28AE: +case 0x2AAE: +case 0x2CAE: +case 0x2EAE: +case 0x20AF: +case 0x22AF: +case 0x24AF: +case 0x26AF: +case 0x28AF: +case 0x2AAF: +case 0x2CAF: +case 0x2EAF: + +// MOVEL +case 0x20A8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22E8: +case 0x24E8: +case 0x26E8: +case 0x28E8: +case 0x2AE8: +case 0x2CE8: +case 0x20E9: +case 0x22E9: +case 0x24E9: +case 0x26E9: +case 0x28E9: +case 0x2AE9: +case 0x2CE9: +case 0x20EA: +case 0x22EA: +case 0x24EA: +case 0x26EA: +case 0x28EA: +case 0x2AEA: +case 0x2CEA: +case 0x20EB: +case 0x22EB: +case 0x24EB: +case 0x26EB: +case 0x28EB: +case 0x2AEB: +case 0x2CEB: +case 0x20EC: +case 0x22EC: +case 0x24EC: +case 0x26EC: +case 0x28EC: +case 0x2AEC: +case 0x2CEC: +case 0x20ED: +case 0x22ED: +case 0x24ED: +case 0x26ED: +case 0x28ED: +case 0x2AED: +case 0x2CED: +case 0x20EE: +case 0x22EE: +case 0x24EE: +case 0x26EE: +case 0x28EE: +case 0x2AEE: +case 0x2CEE: +case 0x20EF: +case 0x22EF: +case 0x24EF: +case 0x26EF: +case 0x28EF: +case 0x2AEF: +case 0x2CEF: + +// MOVEL +case 0x20E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2328: +case 0x2528: +case 0x2728: +case 0x2928: +case 0x2B28: +case 0x2D28: +case 0x2129: +case 0x2329: +case 0x2529: +case 0x2729: +case 0x2929: +case 0x2B29: +case 0x2D29: +case 0x212A: +case 0x232A: +case 0x252A: +case 0x272A: +case 0x292A: +case 0x2B2A: +case 0x2D2A: +case 0x212B: +case 0x232B: +case 0x252B: +case 0x272B: +case 0x292B: +case 0x2B2B: +case 0x2D2B: +case 0x212C: +case 0x232C: +case 0x252C: +case 0x272C: +case 0x292C: +case 0x2B2C: +case 0x2D2C: +case 0x212D: +case 0x232D: +case 0x252D: +case 0x272D: +case 0x292D: +case 0x2B2D: +case 0x2D2D: +case 0x212E: +case 0x232E: +case 0x252E: +case 0x272E: +case 0x292E: +case 0x2B2E: +case 0x2D2E: +case 0x212F: +case 0x232F: +case 0x252F: +case 0x272F: +case 0x292F: +case 0x2B2F: +case 0x2D2F: + +// MOVEL +case 0x2128: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2368: +case 0x2568: +case 0x2768: +case 0x2968: +case 0x2B68: +case 0x2D68: +case 0x2F68: +case 0x2169: +case 0x2369: +case 0x2569: +case 0x2769: +case 0x2969: +case 0x2B69: +case 0x2D69: +case 0x2F69: +case 0x216A: +case 0x236A: +case 0x256A: +case 0x276A: +case 0x296A: +case 0x2B6A: +case 0x2D6A: +case 0x2F6A: +case 0x216B: +case 0x236B: +case 0x256B: +case 0x276B: +case 0x296B: +case 0x2B6B: +case 0x2D6B: +case 0x2F6B: +case 0x216C: +case 0x236C: +case 0x256C: +case 0x276C: +case 0x296C: +case 0x2B6C: +case 0x2D6C: +case 0x2F6C: +case 0x216D: +case 0x236D: +case 0x256D: +case 0x276D: +case 0x296D: +case 0x2B6D: +case 0x2D6D: +case 0x2F6D: +case 0x216E: +case 0x236E: +case 0x256E: +case 0x276E: +case 0x296E: +case 0x2B6E: +case 0x2D6E: +case 0x2F6E: +case 0x216F: +case 0x236F: +case 0x256F: +case 0x276F: +case 0x296F: +case 0x2B6F: +case 0x2D6F: +case 0x2F6F: + +// MOVEL +case 0x2168: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23A8: +case 0x25A8: +case 0x27A8: +case 0x29A8: +case 0x2BA8: +case 0x2DA8: +case 0x2FA8: +case 0x21A9: +case 0x23A9: +case 0x25A9: +case 0x27A9: +case 0x29A9: +case 0x2BA9: +case 0x2DA9: +case 0x2FA9: +case 0x21AA: +case 0x23AA: +case 0x25AA: +case 0x27AA: +case 0x29AA: +case 0x2BAA: +case 0x2DAA: +case 0x2FAA: +case 0x21AB: +case 0x23AB: +case 0x25AB: +case 0x27AB: +case 0x29AB: +case 0x2BAB: +case 0x2DAB: +case 0x2FAB: +case 0x21AC: +case 0x23AC: +case 0x25AC: +case 0x27AC: +case 0x29AC: +case 0x2BAC: +case 0x2DAC: +case 0x2FAC: +case 0x21AD: +case 0x23AD: +case 0x25AD: +case 0x27AD: +case 0x29AD: +case 0x2BAD: +case 0x2DAD: +case 0x2FAD: +case 0x21AE: +case 0x23AE: +case 0x25AE: +case 0x27AE: +case 0x29AE: +case 0x2BAE: +case 0x2DAE: +case 0x2FAE: +case 0x21AF: +case 0x23AF: +case 0x25AF: +case 0x27AF: +case 0x29AF: +case 0x2BAF: +case 0x2DAF: +case 0x2FAF: + +// MOVEL +case 0x21A8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21E9: +case 0x21EA: +case 0x21EB: +case 0x21EC: +case 0x21ED: +case 0x21EE: +case 0x21EF: + +// MOVEL +case 0x21E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23E9: +case 0x23EA: +case 0x23EB: +case 0x23EC: +case 0x23ED: +case 0x23EE: +case 0x23EF: + +// MOVEL +case 0x23E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2EE9: +case 0x2EEA: +case 0x2EEB: +case 0x2EEC: +case 0x2EED: +case 0x2EEE: +case 0x2EEF: + +// MOVEL +case 0x2EE8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F29: +case 0x2F2A: +case 0x2F2B: +case 0x2F2C: +case 0x2F2D: +case 0x2F2E: +case 0x2F2F: + +// MOVEL +case 0x2F28: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2230: +case 0x2430: +case 0x2630: +case 0x2830: +case 0x2A30: +case 0x2C30: +case 0x2E30: +case 0x2031: +case 0x2231: +case 0x2431: +case 0x2631: +case 0x2831: +case 0x2A31: +case 0x2C31: +case 0x2E31: +case 0x2032: +case 0x2232: +case 0x2432: +case 0x2632: +case 0x2832: +case 0x2A32: +case 0x2C32: +case 0x2E32: +case 0x2033: +case 0x2233: +case 0x2433: +case 0x2633: +case 0x2833: +case 0x2A33: +case 0x2C33: +case 0x2E33: +case 0x2034: +case 0x2234: +case 0x2434: +case 0x2634: +case 0x2834: +case 0x2A34: +case 0x2C34: +case 0x2E34: +case 0x2035: +case 0x2235: +case 0x2435: +case 0x2635: +case 0x2835: +case 0x2A35: +case 0x2C35: +case 0x2E35: +case 0x2036: +case 0x2236: +case 0x2436: +case 0x2636: +case 0x2836: +case 0x2A36: +case 0x2C36: +case 0x2E36: +case 0x2037: +case 0x2237: +case 0x2437: +case 0x2637: +case 0x2837: +case 0x2A37: +case 0x2C37: +case 0x2E37: + +// MOVEL +case 0x2030: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22B0: +case 0x24B0: +case 0x26B0: +case 0x28B0: +case 0x2AB0: +case 0x2CB0: +case 0x2EB0: +case 0x20B1: +case 0x22B1: +case 0x24B1: +case 0x26B1: +case 0x28B1: +case 0x2AB1: +case 0x2CB1: +case 0x2EB1: +case 0x20B2: +case 0x22B2: +case 0x24B2: +case 0x26B2: +case 0x28B2: +case 0x2AB2: +case 0x2CB2: +case 0x2EB2: +case 0x20B3: +case 0x22B3: +case 0x24B3: +case 0x26B3: +case 0x28B3: +case 0x2AB3: +case 0x2CB3: +case 0x2EB3: +case 0x20B4: +case 0x22B4: +case 0x24B4: +case 0x26B4: +case 0x28B4: +case 0x2AB4: +case 0x2CB4: +case 0x2EB4: +case 0x20B5: +case 0x22B5: +case 0x24B5: +case 0x26B5: +case 0x28B5: +case 0x2AB5: +case 0x2CB5: +case 0x2EB5: +case 0x20B6: +case 0x22B6: +case 0x24B6: +case 0x26B6: +case 0x28B6: +case 0x2AB6: +case 0x2CB6: +case 0x2EB6: +case 0x20B7: +case 0x22B7: +case 0x24B7: +case 0x26B7: +case 0x28B7: +case 0x2AB7: +case 0x2CB7: +case 0x2EB7: + +// MOVEL +case 0x20B0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22F0: +case 0x24F0: +case 0x26F0: +case 0x28F0: +case 0x2AF0: +case 0x2CF0: +case 0x20F1: +case 0x22F1: +case 0x24F1: +case 0x26F1: +case 0x28F1: +case 0x2AF1: +case 0x2CF1: +case 0x20F2: +case 0x22F2: +case 0x24F2: +case 0x26F2: +case 0x28F2: +case 0x2AF2: +case 0x2CF2: +case 0x20F3: +case 0x22F3: +case 0x24F3: +case 0x26F3: +case 0x28F3: +case 0x2AF3: +case 0x2CF3: +case 0x20F4: +case 0x22F4: +case 0x24F4: +case 0x26F4: +case 0x28F4: +case 0x2AF4: +case 0x2CF4: +case 0x20F5: +case 0x22F5: +case 0x24F5: +case 0x26F5: +case 0x28F5: +case 0x2AF5: +case 0x2CF5: +case 0x20F6: +case 0x22F6: +case 0x24F6: +case 0x26F6: +case 0x28F6: +case 0x2AF6: +case 0x2CF6: +case 0x20F7: +case 0x22F7: +case 0x24F7: +case 0x26F7: +case 0x28F7: +case 0x2AF7: +case 0x2CF7: + +// MOVEL +case 0x20F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2330: +case 0x2530: +case 0x2730: +case 0x2930: +case 0x2B30: +case 0x2D30: +case 0x2131: +case 0x2331: +case 0x2531: +case 0x2731: +case 0x2931: +case 0x2B31: +case 0x2D31: +case 0x2132: +case 0x2332: +case 0x2532: +case 0x2732: +case 0x2932: +case 0x2B32: +case 0x2D32: +case 0x2133: +case 0x2333: +case 0x2533: +case 0x2733: +case 0x2933: +case 0x2B33: +case 0x2D33: +case 0x2134: +case 0x2334: +case 0x2534: +case 0x2734: +case 0x2934: +case 0x2B34: +case 0x2D34: +case 0x2135: +case 0x2335: +case 0x2535: +case 0x2735: +case 0x2935: +case 0x2B35: +case 0x2D35: +case 0x2136: +case 0x2336: +case 0x2536: +case 0x2736: +case 0x2936: +case 0x2B36: +case 0x2D36: +case 0x2137: +case 0x2337: +case 0x2537: +case 0x2737: +case 0x2937: +case 0x2B37: +case 0x2D37: + +// MOVEL +case 0x2130: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2370: +case 0x2570: +case 0x2770: +case 0x2970: +case 0x2B70: +case 0x2D70: +case 0x2F70: +case 0x2171: +case 0x2371: +case 0x2571: +case 0x2771: +case 0x2971: +case 0x2B71: +case 0x2D71: +case 0x2F71: +case 0x2172: +case 0x2372: +case 0x2572: +case 0x2772: +case 0x2972: +case 0x2B72: +case 0x2D72: +case 0x2F72: +case 0x2173: +case 0x2373: +case 0x2573: +case 0x2773: +case 0x2973: +case 0x2B73: +case 0x2D73: +case 0x2F73: +case 0x2174: +case 0x2374: +case 0x2574: +case 0x2774: +case 0x2974: +case 0x2B74: +case 0x2D74: +case 0x2F74: +case 0x2175: +case 0x2375: +case 0x2575: +case 0x2775: +case 0x2975: +case 0x2B75: +case 0x2D75: +case 0x2F75: +case 0x2176: +case 0x2376: +case 0x2576: +case 0x2776: +case 0x2976: +case 0x2B76: +case 0x2D76: +case 0x2F76: +case 0x2177: +case 0x2377: +case 0x2577: +case 0x2777: +case 0x2977: +case 0x2B77: +case 0x2D77: +case 0x2F77: + +// MOVEL +case 0x2170: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23B0: +case 0x25B0: +case 0x27B0: +case 0x29B0: +case 0x2BB0: +case 0x2DB0: +case 0x2FB0: +case 0x21B1: +case 0x23B1: +case 0x25B1: +case 0x27B1: +case 0x29B1: +case 0x2BB1: +case 0x2DB1: +case 0x2FB1: +case 0x21B2: +case 0x23B2: +case 0x25B2: +case 0x27B2: +case 0x29B2: +case 0x2BB2: +case 0x2DB2: +case 0x2FB2: +case 0x21B3: +case 0x23B3: +case 0x25B3: +case 0x27B3: +case 0x29B3: +case 0x2BB3: +case 0x2DB3: +case 0x2FB3: +case 0x21B4: +case 0x23B4: +case 0x25B4: +case 0x27B4: +case 0x29B4: +case 0x2BB4: +case 0x2DB4: +case 0x2FB4: +case 0x21B5: +case 0x23B5: +case 0x25B5: +case 0x27B5: +case 0x29B5: +case 0x2BB5: +case 0x2DB5: +case 0x2FB5: +case 0x21B6: +case 0x23B6: +case 0x25B6: +case 0x27B6: +case 0x29B6: +case 0x2BB6: +case 0x2DB6: +case 0x2FB6: +case 0x21B7: +case 0x23B7: +case 0x25B7: +case 0x27B7: +case 0x29B7: +case 0x2BB7: +case 0x2DB7: +case 0x2FB7: + +// MOVEL +case 0x21B0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x21F1: +case 0x21F2: +case 0x21F3: +case 0x21F4: +case 0x21F5: +case 0x21F6: +case 0x21F7: + +// MOVEL +case 0x21F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23F1: +case 0x23F2: +case 0x23F3: +case 0x23F4: +case 0x23F5: +case 0x23F6: +case 0x23F7: + +// MOVEL +case 0x23F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2EF1: +case 0x2EF2: +case 0x2EF3: +case 0x2EF4: +case 0x2EF5: +case 0x2EF6: +case 0x2EF7: + +// MOVEL +case 0x2EF0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2F31: +case 0x2F32: +case 0x2F33: +case 0x2F34: +case 0x2F35: +case 0x2F36: +case 0x2F37: + +// MOVEL +case 0x2F30: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2238: +case 0x2438: +case 0x2638: +case 0x2838: +case 0x2A38: +case 0x2C38: +case 0x2E38: + +// MOVEL +case 0x2038: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22B8: +case 0x24B8: +case 0x26B8: +case 0x28B8: +case 0x2AB8: +case 0x2CB8: +case 0x2EB8: + +// MOVEL +case 0x20B8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22F8: +case 0x24F8: +case 0x26F8: +case 0x28F8: +case 0x2AF8: +case 0x2CF8: + +// MOVEL +case 0x20F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2338: +case 0x2538: +case 0x2738: +case 0x2938: +case 0x2B38: +case 0x2D38: + +// MOVEL +case 0x2138: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2378: +case 0x2578: +case 0x2778: +case 0x2978: +case 0x2B78: +case 0x2D78: +case 0x2F78: + +// MOVEL +case 0x2178: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23B8: +case 0x25B8: +case 0x27B8: +case 0x29B8: +case 0x2BB8: +case 0x2DB8: +case 0x2FB8: + +// MOVEL +case 0x21B8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EF8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F38: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2239: +case 0x2439: +case 0x2639: +case 0x2839: +case 0x2A39: +case 0x2C39: +case 0x2E39: + +// MOVEL +case 0x2039: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22B9: +case 0x24B9: +case 0x26B9: +case 0x28B9: +case 0x2AB9: +case 0x2CB9: +case 0x2EB9: + +// MOVEL +case 0x20B9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22F9: +case 0x24F9: +case 0x26F9: +case 0x28F9: +case 0x2AF9: +case 0x2CF9: + +// MOVEL +case 0x20F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2339: +case 0x2539: +case 0x2739: +case 0x2939: +case 0x2B39: +case 0x2D39: + +// MOVEL +case 0x2139: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2379: +case 0x2579: +case 0x2779: +case 0x2979: +case 0x2B79: +case 0x2D79: +case 0x2F79: + +// MOVEL +case 0x2179: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23B9: +case 0x25B9: +case 0x27B9: +case 0x29B9: +case 0x2BB9: +case 0x2DB9: +case 0x2FB9: + +// MOVEL +case 0x21B9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EF9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F39: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x223A: +case 0x243A: +case 0x263A: +case 0x283A: +case 0x2A3A: +case 0x2C3A: +case 0x2E3A: + +// MOVEL +case 0x203A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22BA: +case 0x24BA: +case 0x26BA: +case 0x28BA: +case 0x2ABA: +case 0x2CBA: +case 0x2EBA: + +// MOVEL +case 0x20BA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22FA: +case 0x24FA: +case 0x26FA: +case 0x28FA: +case 0x2AFA: +case 0x2CFA: + +// MOVEL +case 0x20FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x233A: +case 0x253A: +case 0x273A: +case 0x293A: +case 0x2B3A: +case 0x2D3A: + +// MOVEL +case 0x213A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x237A: +case 0x257A: +case 0x277A: +case 0x297A: +case 0x2B7A: +case 0x2D7A: +case 0x2F7A: + +// MOVEL +case 0x217A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23BA: +case 0x25BA: +case 0x27BA: +case 0x29BA: +case 0x2BBA: +case 0x2DBA: +case 0x2FBA: + +// MOVEL +case 0x21BA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EFA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F3A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x223B: +case 0x243B: +case 0x263B: +case 0x283B: +case 0x2A3B: +case 0x2C3B: +case 0x2E3B: + +// MOVEL +case 0x203B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22BB: +case 0x24BB: +case 0x26BB: +case 0x28BB: +case 0x2ABB: +case 0x2CBB: +case 0x2EBB: + +// MOVEL +case 0x20BB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22FB: +case 0x24FB: +case 0x26FB: +case 0x28FB: +case 0x2AFB: +case 0x2CFB: + +// MOVEL +case 0x20FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x233B: +case 0x253B: +case 0x273B: +case 0x293B: +case 0x2B3B: +case 0x2D3B: + +// MOVEL +case 0x213B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x237B: +case 0x257B: +case 0x277B: +case 0x297B: +case 0x2B7B: +case 0x2D7B: +case 0x2F7B: + +// MOVEL +case 0x217B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23BB: +case 0x25BB: +case 0x27BB: +case 0x29BB: +case 0x2BBB: +case 0x2DBB: +case 0x2FBB: + +// MOVEL +case 0x21BB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EFB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F3B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x223C: +case 0x243C: +case 0x263C: +case 0x283C: +case 0x2A3C: +case 0x2C3C: +case 0x2E3C: + +// MOVEL +case 0x203C: +{ + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0x22BC: +case 0x24BC: +case 0x26BC: +case 0x28BC: +case 0x2ABC: +case 0x2CBC: +case 0x2EBC: + +// MOVEL +case 0x20BC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22FC: +case 0x24FC: +case 0x26FC: +case 0x28FC: +case 0x2AFC: +case 0x2CFC: + +// MOVEL +case 0x20FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x233C: +case 0x253C: +case 0x273C: +case 0x293C: +case 0x2B3C: +case 0x2D3C: + +// MOVEL +case 0x213C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 8; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x237C: +case 0x257C: +case 0x277C: +case 0x297C: +case 0x2B7C: +case 0x2D7C: +case 0x2F7C: + +// MOVEL +case 0x217C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23BC: +case 0x25BC: +case 0x27BC: +case 0x29BC: +case 0x2BBC: +case 0x2DBC: +case 0x2FBC: + +// MOVEL +case 0x21BC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 14; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EFC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F3C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_LONG; + PC += 4; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 8; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x221F: +case 0x241F: +case 0x261F: +case 0x281F: +case 0x2A1F: +case 0x2C1F: +case 0x2E1F: + +// MOVEL +case 0x201F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x229F: +case 0x249F: +case 0x269F: +case 0x289F: +case 0x2A9F: +case 0x2C9F: +case 0x2E9F: + +// MOVEL +case 0x209F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22DF: +case 0x24DF: +case 0x26DF: +case 0x28DF: +case 0x2ADF: +case 0x2CDF: + +// MOVEL +case 0x20DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x231F: +case 0x251F: +case 0x271F: +case 0x291F: +case 0x2B1F: +case 0x2D1F: + +// MOVEL +case 0x211F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x235F: +case 0x255F: +case 0x275F: +case 0x295F: +case 0x2B5F: +case 0x2D5F: +case 0x2F5F: + +// MOVEL +case 0x215F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x239F: +case 0x259F: +case 0x279F: +case 0x299F: +case 0x2B9F: +case 0x2D9F: +case 0x2F9F: + +// MOVEL +case 0x219F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EDF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F1F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2227: +case 0x2427: +case 0x2627: +case 0x2827: +case 0x2A27: +case 0x2C27: +case 0x2E27: + +// MOVEL +case 0x2027: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x22A7: +case 0x24A7: +case 0x26A7: +case 0x28A7: +case 0x2AA7: +case 0x2CA7: +case 0x2EA7: + +// MOVEL +case 0x20A7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x22E7: +case 0x24E7: +case 0x26E7: +case 0x28E7: +case 0x2AE7: +case 0x2CE7: + +// MOVEL +case 0x20E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x2327: +case 0x2527: +case 0x2727: +case 0x2927: +case 0x2B27: +case 0x2D27: + +// MOVEL +case 0x2127: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2367: +case 0x2567: +case 0x2767: +case 0x2967: +case 0x2B67: +case 0x2D67: +case 0x2F67: + +// MOVEL +case 0x2167: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x23A7: +case 0x25A7: +case 0x27A7: +case 0x29A7: +case 0x2BA7: +case 0x2DA7: +case 0x2FA7: + +// MOVEL +case 0x21A7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x21E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x23E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2EE7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7]; + CPU->A[7] += 4; + WRITE_LOat_F(adr, res) +} +RET(0) + +// MOVEL +case 0x2F27: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + WRITE_LOat_DEC_F(adr, res) +} +RET(0) +case 0x2240: +case 0x2440: +case 0x2640: +case 0x2840: +case 0x2A40: +case 0x2C40: +case 0x2E40: +case 0x2041: +case 0x2241: +case 0x2441: +case 0x2641: +case 0x2841: +case 0x2A41: +case 0x2C41: +case 0x2E41: +case 0x2042: +case 0x2242: +case 0x2442: +case 0x2642: +case 0x2842: +case 0x2A42: +case 0x2C42: +case 0x2E42: +case 0x2043: +case 0x2243: +case 0x2443: +case 0x2643: +case 0x2843: +case 0x2A43: +case 0x2C43: +case 0x2E43: +case 0x2044: +case 0x2244: +case 0x2444: +case 0x2644: +case 0x2844: +case 0x2A44: +case 0x2C44: +case 0x2E44: +case 0x2045: +case 0x2245: +case 0x2445: +case 0x2645: +case 0x2845: +case 0x2A45: +case 0x2C45: +case 0x2E45: +case 0x2046: +case 0x2246: +case 0x2446: +case 0x2646: +case 0x2846: +case 0x2A46: +case 0x2C46: +case 0x2E46: +case 0x2047: +case 0x2247: +case 0x2447: +case 0x2647: +case 0x2847: +case 0x2A47: +case 0x2C47: +case 0x2E47: + +// MOVEAL +case 0x2040: +{ + u32 res; + res = (s32)(s32)CPU->D[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2248: +case 0x2448: +case 0x2648: +case 0x2848: +case 0x2A48: +case 0x2C48: +case 0x2E48: +case 0x2049: +case 0x2249: +case 0x2449: +case 0x2649: +case 0x2849: +case 0x2A49: +case 0x2C49: +case 0x2E49: +case 0x204A: +case 0x224A: +case 0x244A: +case 0x264A: +case 0x284A: +case 0x2A4A: +case 0x2C4A: +case 0x2E4A: +case 0x204B: +case 0x224B: +case 0x244B: +case 0x264B: +case 0x284B: +case 0x2A4B: +case 0x2C4B: +case 0x2E4B: +case 0x204C: +case 0x224C: +case 0x244C: +case 0x264C: +case 0x284C: +case 0x2A4C: +case 0x2C4C: +case 0x2E4C: +case 0x204D: +case 0x224D: +case 0x244D: +case 0x264D: +case 0x284D: +case 0x2A4D: +case 0x2C4D: +case 0x2E4D: +case 0x204E: +case 0x224E: +case 0x244E: +case 0x264E: +case 0x284E: +case 0x2A4E: +case 0x2C4E: +case 0x2E4E: +case 0x204F: +case 0x224F: +case 0x244F: +case 0x264F: +case 0x284F: +case 0x2A4F: +case 0x2C4F: +case 0x2E4F: + +// MOVEAL +case 0x2048: +{ + u32 res; + res = (s32)(s32)CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2250: +case 0x2450: +case 0x2650: +case 0x2850: +case 0x2A50: +case 0x2C50: +case 0x2E50: +case 0x2051: +case 0x2251: +case 0x2451: +case 0x2651: +case 0x2851: +case 0x2A51: +case 0x2C51: +case 0x2E51: +case 0x2052: +case 0x2252: +case 0x2452: +case 0x2652: +case 0x2852: +case 0x2A52: +case 0x2C52: +case 0x2E52: +case 0x2053: +case 0x2253: +case 0x2453: +case 0x2653: +case 0x2853: +case 0x2A53: +case 0x2C53: +case 0x2E53: +case 0x2054: +case 0x2254: +case 0x2454: +case 0x2654: +case 0x2854: +case 0x2A54: +case 0x2C54: +case 0x2E54: +case 0x2055: +case 0x2255: +case 0x2455: +case 0x2655: +case 0x2855: +case 0x2A55: +case 0x2C55: +case 0x2E55: +case 0x2056: +case 0x2256: +case 0x2456: +case 0x2656: +case 0x2856: +case 0x2A56: +case 0x2C56: +case 0x2E56: +case 0x2057: +case 0x2257: +case 0x2457: +case 0x2657: +case 0x2857: +case 0x2A57: +case 0x2C57: +case 0x2E57: + +// MOVEAL +case 0x2050: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2258: +case 0x2458: +case 0x2658: +case 0x2858: +case 0x2A58: +case 0x2C58: +case 0x2E58: +case 0x2059: +case 0x2259: +case 0x2459: +case 0x2659: +case 0x2859: +case 0x2A59: +case 0x2C59: +case 0x2E59: +case 0x205A: +case 0x225A: +case 0x245A: +case 0x265A: +case 0x285A: +case 0x2A5A: +case 0x2C5A: +case 0x2E5A: +case 0x205B: +case 0x225B: +case 0x245B: +case 0x265B: +case 0x285B: +case 0x2A5B: +case 0x2C5B: +case 0x2E5B: +case 0x205C: +case 0x225C: +case 0x245C: +case 0x265C: +case 0x285C: +case 0x2A5C: +case 0x2C5C: +case 0x2E5C: +case 0x205D: +case 0x225D: +case 0x245D: +case 0x265D: +case 0x285D: +case 0x2A5D: +case 0x2C5D: +case 0x2E5D: +case 0x205E: +case 0x225E: +case 0x245E: +case 0x265E: +case 0x285E: +case 0x2A5E: +case 0x2C5E: +case 0x2E5E: + +// MOVEAL +case 0x2058: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2260: +case 0x2460: +case 0x2660: +case 0x2860: +case 0x2A60: +case 0x2C60: +case 0x2E60: +case 0x2061: +case 0x2261: +case 0x2461: +case 0x2661: +case 0x2861: +case 0x2A61: +case 0x2C61: +case 0x2E61: +case 0x2062: +case 0x2262: +case 0x2462: +case 0x2662: +case 0x2862: +case 0x2A62: +case 0x2C62: +case 0x2E62: +case 0x2063: +case 0x2263: +case 0x2463: +case 0x2663: +case 0x2863: +case 0x2A63: +case 0x2C63: +case 0x2E63: +case 0x2064: +case 0x2264: +case 0x2464: +case 0x2664: +case 0x2864: +case 0x2A64: +case 0x2C64: +case 0x2E64: +case 0x2065: +case 0x2265: +case 0x2465: +case 0x2665: +case 0x2865: +case 0x2A65: +case 0x2C65: +case 0x2E65: +case 0x2066: +case 0x2266: +case 0x2466: +case 0x2666: +case 0x2866: +case 0x2A66: +case 0x2C66: +case 0x2E66: + +// MOVEAL +case 0x2060: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2268: +case 0x2468: +case 0x2668: +case 0x2868: +case 0x2A68: +case 0x2C68: +case 0x2E68: +case 0x2069: +case 0x2269: +case 0x2469: +case 0x2669: +case 0x2869: +case 0x2A69: +case 0x2C69: +case 0x2E69: +case 0x206A: +case 0x226A: +case 0x246A: +case 0x266A: +case 0x286A: +case 0x2A6A: +case 0x2C6A: +case 0x2E6A: +case 0x206B: +case 0x226B: +case 0x246B: +case 0x266B: +case 0x286B: +case 0x2A6B: +case 0x2C6B: +case 0x2E6B: +case 0x206C: +case 0x226C: +case 0x246C: +case 0x266C: +case 0x286C: +case 0x2A6C: +case 0x2C6C: +case 0x2E6C: +case 0x206D: +case 0x226D: +case 0x246D: +case 0x266D: +case 0x286D: +case 0x2A6D: +case 0x2C6D: +case 0x2E6D: +case 0x206E: +case 0x226E: +case 0x246E: +case 0x266E: +case 0x286E: +case 0x2A6E: +case 0x2C6E: +case 0x2E6E: +case 0x206F: +case 0x226F: +case 0x246F: +case 0x266F: +case 0x286F: +case 0x2A6F: +case 0x2C6F: +case 0x2E6F: + +// MOVEAL +case 0x2068: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2270: +case 0x2470: +case 0x2670: +case 0x2870: +case 0x2A70: +case 0x2C70: +case 0x2E70: +case 0x2071: +case 0x2271: +case 0x2471: +case 0x2671: +case 0x2871: +case 0x2A71: +case 0x2C71: +case 0x2E71: +case 0x2072: +case 0x2272: +case 0x2472: +case 0x2672: +case 0x2872: +case 0x2A72: +case 0x2C72: +case 0x2E72: +case 0x2073: +case 0x2273: +case 0x2473: +case 0x2673: +case 0x2873: +case 0x2A73: +case 0x2C73: +case 0x2E73: +case 0x2074: +case 0x2274: +case 0x2474: +case 0x2674: +case 0x2874: +case 0x2A74: +case 0x2C74: +case 0x2E74: +case 0x2075: +case 0x2275: +case 0x2475: +case 0x2675: +case 0x2875: +case 0x2A75: +case 0x2C75: +case 0x2E75: +case 0x2076: +case 0x2276: +case 0x2476: +case 0x2676: +case 0x2876: +case 0x2A76: +case 0x2C76: +case 0x2E76: +case 0x2077: +case 0x2277: +case 0x2477: +case 0x2677: +case 0x2877: +case 0x2A77: +case 0x2C77: +case 0x2E77: + +// MOVEAL +case 0x2070: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2278: +case 0x2478: +case 0x2678: +case 0x2878: +case 0x2A78: +case 0x2C78: +case 0x2E78: + +// MOVEAL +case 0x2078: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2279: +case 0x2479: +case 0x2679: +case 0x2879: +case 0x2A79: +case 0x2C79: +case 0x2E79: + +// MOVEAL +case 0x2079: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x227A: +case 0x247A: +case 0x267A: +case 0x287A: +case 0x2A7A: +case 0x2C7A: +case 0x2E7A: + +// MOVEAL +case 0x207A: +{ + u32 adr; + u32 res; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x227B: +case 0x247B: +case 0x267B: +case 0x287B: +case 0x2A7B: +case 0x2C7B: +case 0x2E7B: + +// MOVEAL +case 0x207B: +{ + u32 adr; + u32 res; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x227C: +case 0x247C: +case 0x267C: +case 0x287C: +case 0x2A7C: +case 0x2C7C: +case 0x2E7C: + +// MOVEAL +case 0x207C: +{ + u32 res; + res = (s32)(s32)FETCH_LONG; + PC += 4; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(12) +case 0x225F: +case 0x245F: +case 0x265F: +case 0x285F: +case 0x2A5F: +case 0x2C5F: +case 0x2E5F: + +// MOVEAL +case 0x205F: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 4; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x2267: +case 0x2467: +case 0x2667: +case 0x2867: +case 0x2A67: +case 0x2C67: +case 0x2E67: + +// MOVEAL +case 0x2067: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READSX_LOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op3.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op3.inc new file mode 100644 index 0000000000..1ebb5274e8 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op3.inc @@ -0,0 +1,6247 @@ +case 0x3200: +case 0x3400: +case 0x3600: +case 0x3800: +case 0x3A00: +case 0x3C00: +case 0x3E00: +case 0x3001: +case 0x3201: +case 0x3401: +case 0x3601: +case 0x3801: +case 0x3A01: +case 0x3C01: +case 0x3E01: +case 0x3002: +case 0x3202: +case 0x3402: +case 0x3602: +case 0x3802: +case 0x3A02: +case 0x3C02: +case 0x3E02: +case 0x3003: +case 0x3203: +case 0x3403: +case 0x3603: +case 0x3803: +case 0x3A03: +case 0x3C03: +case 0x3E03: +case 0x3004: +case 0x3204: +case 0x3404: +case 0x3604: +case 0x3804: +case 0x3A04: +case 0x3C04: +case 0x3E04: +case 0x3005: +case 0x3205: +case 0x3405: +case 0x3605: +case 0x3805: +case 0x3A05: +case 0x3C05: +case 0x3E05: +case 0x3006: +case 0x3206: +case 0x3406: +case 0x3606: +case 0x3806: +case 0x3A06: +case 0x3C06: +case 0x3E06: +case 0x3007: +case 0x3207: +case 0x3407: +case 0x3607: +case 0x3807: +case 0x3A07: +case 0x3C07: +case 0x3E07: + +// MOVEW +case 0x3000: +{ + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x3280: +case 0x3480: +case 0x3680: +case 0x3880: +case 0x3A80: +case 0x3C80: +case 0x3E80: +case 0x3081: +case 0x3281: +case 0x3481: +case 0x3681: +case 0x3881: +case 0x3A81: +case 0x3C81: +case 0x3E81: +case 0x3082: +case 0x3282: +case 0x3482: +case 0x3682: +case 0x3882: +case 0x3A82: +case 0x3C82: +case 0x3E82: +case 0x3083: +case 0x3283: +case 0x3483: +case 0x3683: +case 0x3883: +case 0x3A83: +case 0x3C83: +case 0x3E83: +case 0x3084: +case 0x3284: +case 0x3484: +case 0x3684: +case 0x3884: +case 0x3A84: +case 0x3C84: +case 0x3E84: +case 0x3085: +case 0x3285: +case 0x3485: +case 0x3685: +case 0x3885: +case 0x3A85: +case 0x3C85: +case 0x3E85: +case 0x3086: +case 0x3286: +case 0x3486: +case 0x3686: +case 0x3886: +case 0x3A86: +case 0x3C86: +case 0x3E86: +case 0x3087: +case 0x3287: +case 0x3487: +case 0x3687: +case 0x3887: +case 0x3A87: +case 0x3C87: +case 0x3E87: + +// MOVEW +case 0x3080: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32C0: +case 0x34C0: +case 0x36C0: +case 0x38C0: +case 0x3AC0: +case 0x3CC0: +case 0x30C1: +case 0x32C1: +case 0x34C1: +case 0x36C1: +case 0x38C1: +case 0x3AC1: +case 0x3CC1: +case 0x30C2: +case 0x32C2: +case 0x34C2: +case 0x36C2: +case 0x38C2: +case 0x3AC2: +case 0x3CC2: +case 0x30C3: +case 0x32C3: +case 0x34C3: +case 0x36C3: +case 0x38C3: +case 0x3AC3: +case 0x3CC3: +case 0x30C4: +case 0x32C4: +case 0x34C4: +case 0x36C4: +case 0x38C4: +case 0x3AC4: +case 0x3CC4: +case 0x30C5: +case 0x32C5: +case 0x34C5: +case 0x36C5: +case 0x38C5: +case 0x3AC5: +case 0x3CC5: +case 0x30C6: +case 0x32C6: +case 0x34C6: +case 0x36C6: +case 0x38C6: +case 0x3AC6: +case 0x3CC6: +case 0x30C7: +case 0x32C7: +case 0x34C7: +case 0x36C7: +case 0x38C7: +case 0x3AC7: +case 0x3CC7: + +// MOVEW +case 0x30C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3300: +case 0x3500: +case 0x3700: +case 0x3900: +case 0x3B00: +case 0x3D00: +case 0x3101: +case 0x3301: +case 0x3501: +case 0x3701: +case 0x3901: +case 0x3B01: +case 0x3D01: +case 0x3102: +case 0x3302: +case 0x3502: +case 0x3702: +case 0x3902: +case 0x3B02: +case 0x3D02: +case 0x3103: +case 0x3303: +case 0x3503: +case 0x3703: +case 0x3903: +case 0x3B03: +case 0x3D03: +case 0x3104: +case 0x3304: +case 0x3504: +case 0x3704: +case 0x3904: +case 0x3B04: +case 0x3D04: +case 0x3105: +case 0x3305: +case 0x3505: +case 0x3705: +case 0x3905: +case 0x3B05: +case 0x3D05: +case 0x3106: +case 0x3306: +case 0x3506: +case 0x3706: +case 0x3906: +case 0x3B06: +case 0x3D06: +case 0x3107: +case 0x3307: +case 0x3507: +case 0x3707: +case 0x3907: +case 0x3B07: +case 0x3D07: + +// MOVEW +case 0x3100: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3340: +case 0x3540: +case 0x3740: +case 0x3940: +case 0x3B40: +case 0x3D40: +case 0x3F40: +case 0x3141: +case 0x3341: +case 0x3541: +case 0x3741: +case 0x3941: +case 0x3B41: +case 0x3D41: +case 0x3F41: +case 0x3142: +case 0x3342: +case 0x3542: +case 0x3742: +case 0x3942: +case 0x3B42: +case 0x3D42: +case 0x3F42: +case 0x3143: +case 0x3343: +case 0x3543: +case 0x3743: +case 0x3943: +case 0x3B43: +case 0x3D43: +case 0x3F43: +case 0x3144: +case 0x3344: +case 0x3544: +case 0x3744: +case 0x3944: +case 0x3B44: +case 0x3D44: +case 0x3F44: +case 0x3145: +case 0x3345: +case 0x3545: +case 0x3745: +case 0x3945: +case 0x3B45: +case 0x3D45: +case 0x3F45: +case 0x3146: +case 0x3346: +case 0x3546: +case 0x3746: +case 0x3946: +case 0x3B46: +case 0x3D46: +case 0x3F46: +case 0x3147: +case 0x3347: +case 0x3547: +case 0x3747: +case 0x3947: +case 0x3B47: +case 0x3D47: +case 0x3F47: + +// MOVEW +case 0x3140: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3380: +case 0x3580: +case 0x3780: +case 0x3980: +case 0x3B80: +case 0x3D80: +case 0x3F80: +case 0x3181: +case 0x3381: +case 0x3581: +case 0x3781: +case 0x3981: +case 0x3B81: +case 0x3D81: +case 0x3F81: +case 0x3182: +case 0x3382: +case 0x3582: +case 0x3782: +case 0x3982: +case 0x3B82: +case 0x3D82: +case 0x3F82: +case 0x3183: +case 0x3383: +case 0x3583: +case 0x3783: +case 0x3983: +case 0x3B83: +case 0x3D83: +case 0x3F83: +case 0x3184: +case 0x3384: +case 0x3584: +case 0x3784: +case 0x3984: +case 0x3B84: +case 0x3D84: +case 0x3F84: +case 0x3185: +case 0x3385: +case 0x3585: +case 0x3785: +case 0x3985: +case 0x3B85: +case 0x3D85: +case 0x3F85: +case 0x3186: +case 0x3386: +case 0x3586: +case 0x3786: +case 0x3986: +case 0x3B86: +case 0x3D86: +case 0x3F86: +case 0x3187: +case 0x3387: +case 0x3587: +case 0x3787: +case 0x3987: +case 0x3B87: +case 0x3D87: +case 0x3F87: + +// MOVEW +case 0x3180: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31C1: +case 0x31C2: +case 0x31C3: +case 0x31C4: +case 0x31C5: +case 0x31C6: +case 0x31C7: + +// MOVEW +case 0x31C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33C1: +case 0x33C2: +case 0x33C3: +case 0x33C4: +case 0x33C5: +case 0x33C6: +case 0x33C7: + +// MOVEW +case 0x33C0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3EC1: +case 0x3EC2: +case 0x3EC3: +case 0x3EC4: +case 0x3EC5: +case 0x3EC6: +case 0x3EC7: + +// MOVEW +case 0x3EC0: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F01: +case 0x3F02: +case 0x3F03: +case 0x3F04: +case 0x3F05: +case 0x3F06: +case 0x3F07: + +// MOVEW +case 0x3F00: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3208: +case 0x3408: +case 0x3608: +case 0x3808: +case 0x3A08: +case 0x3C08: +case 0x3E08: +case 0x3009: +case 0x3209: +case 0x3409: +case 0x3609: +case 0x3809: +case 0x3A09: +case 0x3C09: +case 0x3E09: +case 0x300A: +case 0x320A: +case 0x340A: +case 0x360A: +case 0x380A: +case 0x3A0A: +case 0x3C0A: +case 0x3E0A: +case 0x300B: +case 0x320B: +case 0x340B: +case 0x360B: +case 0x380B: +case 0x3A0B: +case 0x3C0B: +case 0x3E0B: +case 0x300C: +case 0x320C: +case 0x340C: +case 0x360C: +case 0x380C: +case 0x3A0C: +case 0x3C0C: +case 0x3E0C: +case 0x300D: +case 0x320D: +case 0x340D: +case 0x360D: +case 0x380D: +case 0x3A0D: +case 0x3C0D: +case 0x3E0D: +case 0x300E: +case 0x320E: +case 0x340E: +case 0x360E: +case 0x380E: +case 0x3A0E: +case 0x3C0E: +case 0x3E0E: +case 0x300F: +case 0x320F: +case 0x340F: +case 0x360F: +case 0x380F: +case 0x3A0F: +case 0x3C0F: +case 0x3E0F: + +// MOVEW +case 0x3008: +{ + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x3288: +case 0x3488: +case 0x3688: +case 0x3888: +case 0x3A88: +case 0x3C88: +case 0x3E88: +case 0x3089: +case 0x3289: +case 0x3489: +case 0x3689: +case 0x3889: +case 0x3A89: +case 0x3C89: +case 0x3E89: +case 0x308A: +case 0x328A: +case 0x348A: +case 0x368A: +case 0x388A: +case 0x3A8A: +case 0x3C8A: +case 0x3E8A: +case 0x308B: +case 0x328B: +case 0x348B: +case 0x368B: +case 0x388B: +case 0x3A8B: +case 0x3C8B: +case 0x3E8B: +case 0x308C: +case 0x328C: +case 0x348C: +case 0x368C: +case 0x388C: +case 0x3A8C: +case 0x3C8C: +case 0x3E8C: +case 0x308D: +case 0x328D: +case 0x348D: +case 0x368D: +case 0x388D: +case 0x3A8D: +case 0x3C8D: +case 0x3E8D: +case 0x308E: +case 0x328E: +case 0x348E: +case 0x368E: +case 0x388E: +case 0x3A8E: +case 0x3C8E: +case 0x3E8E: +case 0x308F: +case 0x328F: +case 0x348F: +case 0x368F: +case 0x388F: +case 0x3A8F: +case 0x3C8F: +case 0x3E8F: + +// MOVEW +case 0x3088: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32C8: +case 0x34C8: +case 0x36C8: +case 0x38C8: +case 0x3AC8: +case 0x3CC8: +case 0x30C9: +case 0x32C9: +case 0x34C9: +case 0x36C9: +case 0x38C9: +case 0x3AC9: +case 0x3CC9: +case 0x30CA: +case 0x32CA: +case 0x34CA: +case 0x36CA: +case 0x38CA: +case 0x3ACA: +case 0x3CCA: +case 0x30CB: +case 0x32CB: +case 0x34CB: +case 0x36CB: +case 0x38CB: +case 0x3ACB: +case 0x3CCB: +case 0x30CC: +case 0x32CC: +case 0x34CC: +case 0x36CC: +case 0x38CC: +case 0x3ACC: +case 0x3CCC: +case 0x30CD: +case 0x32CD: +case 0x34CD: +case 0x36CD: +case 0x38CD: +case 0x3ACD: +case 0x3CCD: +case 0x30CE: +case 0x32CE: +case 0x34CE: +case 0x36CE: +case 0x38CE: +case 0x3ACE: +case 0x3CCE: +case 0x30CF: +case 0x32CF: +case 0x34CF: +case 0x36CF: +case 0x38CF: +case 0x3ACF: +case 0x3CCF: + +// MOVEW +case 0x30C8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3308: +case 0x3508: +case 0x3708: +case 0x3908: +case 0x3B08: +case 0x3D08: +case 0x3109: +case 0x3309: +case 0x3509: +case 0x3709: +case 0x3909: +case 0x3B09: +case 0x3D09: +case 0x310A: +case 0x330A: +case 0x350A: +case 0x370A: +case 0x390A: +case 0x3B0A: +case 0x3D0A: +case 0x310B: +case 0x330B: +case 0x350B: +case 0x370B: +case 0x390B: +case 0x3B0B: +case 0x3D0B: +case 0x310C: +case 0x330C: +case 0x350C: +case 0x370C: +case 0x390C: +case 0x3B0C: +case 0x3D0C: +case 0x310D: +case 0x330D: +case 0x350D: +case 0x370D: +case 0x390D: +case 0x3B0D: +case 0x3D0D: +case 0x310E: +case 0x330E: +case 0x350E: +case 0x370E: +case 0x390E: +case 0x3B0E: +case 0x3D0E: +case 0x310F: +case 0x330F: +case 0x350F: +case 0x370F: +case 0x390F: +case 0x3B0F: +case 0x3D0F: + +// MOVEW +case 0x3108: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3348: +case 0x3548: +case 0x3748: +case 0x3948: +case 0x3B48: +case 0x3D48: +case 0x3F48: +case 0x3149: +case 0x3349: +case 0x3549: +case 0x3749: +case 0x3949: +case 0x3B49: +case 0x3D49: +case 0x3F49: +case 0x314A: +case 0x334A: +case 0x354A: +case 0x374A: +case 0x394A: +case 0x3B4A: +case 0x3D4A: +case 0x3F4A: +case 0x314B: +case 0x334B: +case 0x354B: +case 0x374B: +case 0x394B: +case 0x3B4B: +case 0x3D4B: +case 0x3F4B: +case 0x314C: +case 0x334C: +case 0x354C: +case 0x374C: +case 0x394C: +case 0x3B4C: +case 0x3D4C: +case 0x3F4C: +case 0x314D: +case 0x334D: +case 0x354D: +case 0x374D: +case 0x394D: +case 0x3B4D: +case 0x3D4D: +case 0x3F4D: +case 0x314E: +case 0x334E: +case 0x354E: +case 0x374E: +case 0x394E: +case 0x3B4E: +case 0x3D4E: +case 0x3F4E: +case 0x314F: +case 0x334F: +case 0x354F: +case 0x374F: +case 0x394F: +case 0x3B4F: +case 0x3D4F: +case 0x3F4F: + +// MOVEW +case 0x3148: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3388: +case 0x3588: +case 0x3788: +case 0x3988: +case 0x3B88: +case 0x3D88: +case 0x3F88: +case 0x3189: +case 0x3389: +case 0x3589: +case 0x3789: +case 0x3989: +case 0x3B89: +case 0x3D89: +case 0x3F89: +case 0x318A: +case 0x338A: +case 0x358A: +case 0x378A: +case 0x398A: +case 0x3B8A: +case 0x3D8A: +case 0x3F8A: +case 0x318B: +case 0x338B: +case 0x358B: +case 0x378B: +case 0x398B: +case 0x3B8B: +case 0x3D8B: +case 0x3F8B: +case 0x318C: +case 0x338C: +case 0x358C: +case 0x378C: +case 0x398C: +case 0x3B8C: +case 0x3D8C: +case 0x3F8C: +case 0x318D: +case 0x338D: +case 0x358D: +case 0x378D: +case 0x398D: +case 0x3B8D: +case 0x3D8D: +case 0x3F8D: +case 0x318E: +case 0x338E: +case 0x358E: +case 0x378E: +case 0x398E: +case 0x3B8E: +case 0x3D8E: +case 0x3F8E: +case 0x318F: +case 0x338F: +case 0x358F: +case 0x378F: +case 0x398F: +case 0x3B8F: +case 0x3D8F: +case 0x3F8F: + +// MOVEW +case 0x3188: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31C9: +case 0x31CA: +case 0x31CB: +case 0x31CC: +case 0x31CD: +case 0x31CE: +case 0x31CF: + +// MOVEW +case 0x31C8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33C9: +case 0x33CA: +case 0x33CB: +case 0x33CC: +case 0x33CD: +case 0x33CE: +case 0x33CF: + +// MOVEW +case 0x33C8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3EC9: +case 0x3ECA: +case 0x3ECB: +case 0x3ECC: +case 0x3ECD: +case 0x3ECE: +case 0x3ECF: + +// MOVEW +case 0x3EC8: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F09: +case 0x3F0A: +case 0x3F0B: +case 0x3F0C: +case 0x3F0D: +case 0x3F0E: +case 0x3F0F: + +// MOVEW +case 0x3F08: +{ + u32 adr; + u32 res; + timestamp += 4; + res = (u16)CPU->A[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3210: +case 0x3410: +case 0x3610: +case 0x3810: +case 0x3A10: +case 0x3C10: +case 0x3E10: +case 0x3011: +case 0x3211: +case 0x3411: +case 0x3611: +case 0x3811: +case 0x3A11: +case 0x3C11: +case 0x3E11: +case 0x3012: +case 0x3212: +case 0x3412: +case 0x3612: +case 0x3812: +case 0x3A12: +case 0x3C12: +case 0x3E12: +case 0x3013: +case 0x3213: +case 0x3413: +case 0x3613: +case 0x3813: +case 0x3A13: +case 0x3C13: +case 0x3E13: +case 0x3014: +case 0x3214: +case 0x3414: +case 0x3614: +case 0x3814: +case 0x3A14: +case 0x3C14: +case 0x3E14: +case 0x3015: +case 0x3215: +case 0x3415: +case 0x3615: +case 0x3815: +case 0x3A15: +case 0x3C15: +case 0x3E15: +case 0x3016: +case 0x3216: +case 0x3416: +case 0x3616: +case 0x3816: +case 0x3A16: +case 0x3C16: +case 0x3E16: +case 0x3017: +case 0x3217: +case 0x3417: +case 0x3617: +case 0x3817: +case 0x3A17: +case 0x3C17: +case 0x3E17: + +// MOVEW +case 0x3010: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x3290: +case 0x3490: +case 0x3690: +case 0x3890: +case 0x3A90: +case 0x3C90: +case 0x3E90: +case 0x3091: +case 0x3291: +case 0x3491: +case 0x3691: +case 0x3891: +case 0x3A91: +case 0x3C91: +case 0x3E91: +case 0x3092: +case 0x3292: +case 0x3492: +case 0x3692: +case 0x3892: +case 0x3A92: +case 0x3C92: +case 0x3E92: +case 0x3093: +case 0x3293: +case 0x3493: +case 0x3693: +case 0x3893: +case 0x3A93: +case 0x3C93: +case 0x3E93: +case 0x3094: +case 0x3294: +case 0x3494: +case 0x3694: +case 0x3894: +case 0x3A94: +case 0x3C94: +case 0x3E94: +case 0x3095: +case 0x3295: +case 0x3495: +case 0x3695: +case 0x3895: +case 0x3A95: +case 0x3C95: +case 0x3E95: +case 0x3096: +case 0x3296: +case 0x3496: +case 0x3696: +case 0x3896: +case 0x3A96: +case 0x3C96: +case 0x3E96: +case 0x3097: +case 0x3297: +case 0x3497: +case 0x3697: +case 0x3897: +case 0x3A97: +case 0x3C97: +case 0x3E97: + +// MOVEW +case 0x3090: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32D0: +case 0x34D0: +case 0x36D0: +case 0x38D0: +case 0x3AD0: +case 0x3CD0: +case 0x30D1: +case 0x32D1: +case 0x34D1: +case 0x36D1: +case 0x38D1: +case 0x3AD1: +case 0x3CD1: +case 0x30D2: +case 0x32D2: +case 0x34D2: +case 0x36D2: +case 0x38D2: +case 0x3AD2: +case 0x3CD2: +case 0x30D3: +case 0x32D3: +case 0x34D3: +case 0x36D3: +case 0x38D3: +case 0x3AD3: +case 0x3CD3: +case 0x30D4: +case 0x32D4: +case 0x34D4: +case 0x36D4: +case 0x38D4: +case 0x3AD4: +case 0x3CD4: +case 0x30D5: +case 0x32D5: +case 0x34D5: +case 0x36D5: +case 0x38D5: +case 0x3AD5: +case 0x3CD5: +case 0x30D6: +case 0x32D6: +case 0x34D6: +case 0x36D6: +case 0x38D6: +case 0x3AD6: +case 0x3CD6: +case 0x30D7: +case 0x32D7: +case 0x34D7: +case 0x36D7: +case 0x38D7: +case 0x3AD7: +case 0x3CD7: + +// MOVEW +case 0x30D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3310: +case 0x3510: +case 0x3710: +case 0x3910: +case 0x3B10: +case 0x3D10: +case 0x3111: +case 0x3311: +case 0x3511: +case 0x3711: +case 0x3911: +case 0x3B11: +case 0x3D11: +case 0x3112: +case 0x3312: +case 0x3512: +case 0x3712: +case 0x3912: +case 0x3B12: +case 0x3D12: +case 0x3113: +case 0x3313: +case 0x3513: +case 0x3713: +case 0x3913: +case 0x3B13: +case 0x3D13: +case 0x3114: +case 0x3314: +case 0x3514: +case 0x3714: +case 0x3914: +case 0x3B14: +case 0x3D14: +case 0x3115: +case 0x3315: +case 0x3515: +case 0x3715: +case 0x3915: +case 0x3B15: +case 0x3D15: +case 0x3116: +case 0x3316: +case 0x3516: +case 0x3716: +case 0x3916: +case 0x3B16: +case 0x3D16: +case 0x3117: +case 0x3317: +case 0x3517: +case 0x3717: +case 0x3917: +case 0x3B17: +case 0x3D17: + +// MOVEW +case 0x3110: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3350: +case 0x3550: +case 0x3750: +case 0x3950: +case 0x3B50: +case 0x3D50: +case 0x3F50: +case 0x3151: +case 0x3351: +case 0x3551: +case 0x3751: +case 0x3951: +case 0x3B51: +case 0x3D51: +case 0x3F51: +case 0x3152: +case 0x3352: +case 0x3552: +case 0x3752: +case 0x3952: +case 0x3B52: +case 0x3D52: +case 0x3F52: +case 0x3153: +case 0x3353: +case 0x3553: +case 0x3753: +case 0x3953: +case 0x3B53: +case 0x3D53: +case 0x3F53: +case 0x3154: +case 0x3354: +case 0x3554: +case 0x3754: +case 0x3954: +case 0x3B54: +case 0x3D54: +case 0x3F54: +case 0x3155: +case 0x3355: +case 0x3555: +case 0x3755: +case 0x3955: +case 0x3B55: +case 0x3D55: +case 0x3F55: +case 0x3156: +case 0x3356: +case 0x3556: +case 0x3756: +case 0x3956: +case 0x3B56: +case 0x3D56: +case 0x3F56: +case 0x3157: +case 0x3357: +case 0x3557: +case 0x3757: +case 0x3957: +case 0x3B57: +case 0x3D57: +case 0x3F57: + +// MOVEW +case 0x3150: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3390: +case 0x3590: +case 0x3790: +case 0x3990: +case 0x3B90: +case 0x3D90: +case 0x3F90: +case 0x3191: +case 0x3391: +case 0x3591: +case 0x3791: +case 0x3991: +case 0x3B91: +case 0x3D91: +case 0x3F91: +case 0x3192: +case 0x3392: +case 0x3592: +case 0x3792: +case 0x3992: +case 0x3B92: +case 0x3D92: +case 0x3F92: +case 0x3193: +case 0x3393: +case 0x3593: +case 0x3793: +case 0x3993: +case 0x3B93: +case 0x3D93: +case 0x3F93: +case 0x3194: +case 0x3394: +case 0x3594: +case 0x3794: +case 0x3994: +case 0x3B94: +case 0x3D94: +case 0x3F94: +case 0x3195: +case 0x3395: +case 0x3595: +case 0x3795: +case 0x3995: +case 0x3B95: +case 0x3D95: +case 0x3F95: +case 0x3196: +case 0x3396: +case 0x3596: +case 0x3796: +case 0x3996: +case 0x3B96: +case 0x3D96: +case 0x3F96: +case 0x3197: +case 0x3397: +case 0x3597: +case 0x3797: +case 0x3997: +case 0x3B97: +case 0x3D97: +case 0x3F97: + +// MOVEW +case 0x3190: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31D1: +case 0x31D2: +case 0x31D3: +case 0x31D4: +case 0x31D5: +case 0x31D6: +case 0x31D7: + +// MOVEW +case 0x31D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33D1: +case 0x33D2: +case 0x33D3: +case 0x33D4: +case 0x33D5: +case 0x33D6: +case 0x33D7: + +// MOVEW +case 0x33D0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3ED1: +case 0x3ED2: +case 0x3ED3: +case 0x3ED4: +case 0x3ED5: +case 0x3ED6: +case 0x3ED7: + +// MOVEW +case 0x3ED0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F11: +case 0x3F12: +case 0x3F13: +case 0x3F14: +case 0x3F15: +case 0x3F16: +case 0x3F17: + +// MOVEW +case 0x3F10: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3218: +case 0x3418: +case 0x3618: +case 0x3818: +case 0x3A18: +case 0x3C18: +case 0x3E18: +case 0x3019: +case 0x3219: +case 0x3419: +case 0x3619: +case 0x3819: +case 0x3A19: +case 0x3C19: +case 0x3E19: +case 0x301A: +case 0x321A: +case 0x341A: +case 0x361A: +case 0x381A: +case 0x3A1A: +case 0x3C1A: +case 0x3E1A: +case 0x301B: +case 0x321B: +case 0x341B: +case 0x361B: +case 0x381B: +case 0x3A1B: +case 0x3C1B: +case 0x3E1B: +case 0x301C: +case 0x321C: +case 0x341C: +case 0x361C: +case 0x381C: +case 0x3A1C: +case 0x3C1C: +case 0x3E1C: +case 0x301D: +case 0x321D: +case 0x341D: +case 0x361D: +case 0x381D: +case 0x3A1D: +case 0x3C1D: +case 0x3E1D: +case 0x301E: +case 0x321E: +case 0x341E: +case 0x361E: +case 0x381E: +case 0x3A1E: +case 0x3C1E: +case 0x3E1E: + +// MOVEW +case 0x3018: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x3298: +case 0x3498: +case 0x3698: +case 0x3898: +case 0x3A98: +case 0x3C98: +case 0x3E98: +case 0x3099: +case 0x3299: +case 0x3499: +case 0x3699: +case 0x3899: +case 0x3A99: +case 0x3C99: +case 0x3E99: +case 0x309A: +case 0x329A: +case 0x349A: +case 0x369A: +case 0x389A: +case 0x3A9A: +case 0x3C9A: +case 0x3E9A: +case 0x309B: +case 0x329B: +case 0x349B: +case 0x369B: +case 0x389B: +case 0x3A9B: +case 0x3C9B: +case 0x3E9B: +case 0x309C: +case 0x329C: +case 0x349C: +case 0x369C: +case 0x389C: +case 0x3A9C: +case 0x3C9C: +case 0x3E9C: +case 0x309D: +case 0x329D: +case 0x349D: +case 0x369D: +case 0x389D: +case 0x3A9D: +case 0x3C9D: +case 0x3E9D: +case 0x309E: +case 0x329E: +case 0x349E: +case 0x369E: +case 0x389E: +case 0x3A9E: +case 0x3C9E: +case 0x3E9E: + +// MOVEW +case 0x3098: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32D8: +case 0x34D8: +case 0x36D8: +case 0x38D8: +case 0x3AD8: +case 0x3CD8: +case 0x30D9: +case 0x32D9: +case 0x34D9: +case 0x36D9: +case 0x38D9: +case 0x3AD9: +case 0x3CD9: +case 0x30DA: +case 0x32DA: +case 0x34DA: +case 0x36DA: +case 0x38DA: +case 0x3ADA: +case 0x3CDA: +case 0x30DB: +case 0x32DB: +case 0x34DB: +case 0x36DB: +case 0x38DB: +case 0x3ADB: +case 0x3CDB: +case 0x30DC: +case 0x32DC: +case 0x34DC: +case 0x36DC: +case 0x38DC: +case 0x3ADC: +case 0x3CDC: +case 0x30DD: +case 0x32DD: +case 0x34DD: +case 0x36DD: +case 0x38DD: +case 0x3ADD: +case 0x3CDD: +case 0x30DE: +case 0x32DE: +case 0x34DE: +case 0x36DE: +case 0x38DE: +case 0x3ADE: +case 0x3CDE: + +// MOVEW +case 0x30D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3318: +case 0x3518: +case 0x3718: +case 0x3918: +case 0x3B18: +case 0x3D18: +case 0x3119: +case 0x3319: +case 0x3519: +case 0x3719: +case 0x3919: +case 0x3B19: +case 0x3D19: +case 0x311A: +case 0x331A: +case 0x351A: +case 0x371A: +case 0x391A: +case 0x3B1A: +case 0x3D1A: +case 0x311B: +case 0x331B: +case 0x351B: +case 0x371B: +case 0x391B: +case 0x3B1B: +case 0x3D1B: +case 0x311C: +case 0x331C: +case 0x351C: +case 0x371C: +case 0x391C: +case 0x3B1C: +case 0x3D1C: +case 0x311D: +case 0x331D: +case 0x351D: +case 0x371D: +case 0x391D: +case 0x3B1D: +case 0x3D1D: +case 0x311E: +case 0x331E: +case 0x351E: +case 0x371E: +case 0x391E: +case 0x3B1E: +case 0x3D1E: + +// MOVEW +case 0x3118: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3358: +case 0x3558: +case 0x3758: +case 0x3958: +case 0x3B58: +case 0x3D58: +case 0x3F58: +case 0x3159: +case 0x3359: +case 0x3559: +case 0x3759: +case 0x3959: +case 0x3B59: +case 0x3D59: +case 0x3F59: +case 0x315A: +case 0x335A: +case 0x355A: +case 0x375A: +case 0x395A: +case 0x3B5A: +case 0x3D5A: +case 0x3F5A: +case 0x315B: +case 0x335B: +case 0x355B: +case 0x375B: +case 0x395B: +case 0x3B5B: +case 0x3D5B: +case 0x3F5B: +case 0x315C: +case 0x335C: +case 0x355C: +case 0x375C: +case 0x395C: +case 0x3B5C: +case 0x3D5C: +case 0x3F5C: +case 0x315D: +case 0x335D: +case 0x355D: +case 0x375D: +case 0x395D: +case 0x3B5D: +case 0x3D5D: +case 0x3F5D: +case 0x315E: +case 0x335E: +case 0x355E: +case 0x375E: +case 0x395E: +case 0x3B5E: +case 0x3D5E: +case 0x3F5E: + +// MOVEW +case 0x3158: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3398: +case 0x3598: +case 0x3798: +case 0x3998: +case 0x3B98: +case 0x3D98: +case 0x3F98: +case 0x3199: +case 0x3399: +case 0x3599: +case 0x3799: +case 0x3999: +case 0x3B99: +case 0x3D99: +case 0x3F99: +case 0x319A: +case 0x339A: +case 0x359A: +case 0x379A: +case 0x399A: +case 0x3B9A: +case 0x3D9A: +case 0x3F9A: +case 0x319B: +case 0x339B: +case 0x359B: +case 0x379B: +case 0x399B: +case 0x3B9B: +case 0x3D9B: +case 0x3F9B: +case 0x319C: +case 0x339C: +case 0x359C: +case 0x379C: +case 0x399C: +case 0x3B9C: +case 0x3D9C: +case 0x3F9C: +case 0x319D: +case 0x339D: +case 0x359D: +case 0x379D: +case 0x399D: +case 0x3B9D: +case 0x3D9D: +case 0x3F9D: +case 0x319E: +case 0x339E: +case 0x359E: +case 0x379E: +case 0x399E: +case 0x3B9E: +case 0x3D9E: +case 0x3F9E: + +// MOVEW +case 0x3198: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31D9: +case 0x31DA: +case 0x31DB: +case 0x31DC: +case 0x31DD: +case 0x31DE: + +// MOVEW +case 0x31D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33D9: +case 0x33DA: +case 0x33DB: +case 0x33DC: +case 0x33DD: +case 0x33DE: + +// MOVEW +case 0x33D8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3ED9: +case 0x3EDA: +case 0x3EDB: +case 0x3EDC: +case 0x3EDD: +case 0x3EDE: + +// MOVEW +case 0x3ED8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F19: +case 0x3F1A: +case 0x3F1B: +case 0x3F1C: +case 0x3F1D: +case 0x3F1E: + +// MOVEW +case 0x3F18: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3220: +case 0x3420: +case 0x3620: +case 0x3820: +case 0x3A20: +case 0x3C20: +case 0x3E20: +case 0x3021: +case 0x3221: +case 0x3421: +case 0x3621: +case 0x3821: +case 0x3A21: +case 0x3C21: +case 0x3E21: +case 0x3022: +case 0x3222: +case 0x3422: +case 0x3622: +case 0x3822: +case 0x3A22: +case 0x3C22: +case 0x3E22: +case 0x3023: +case 0x3223: +case 0x3423: +case 0x3623: +case 0x3823: +case 0x3A23: +case 0x3C23: +case 0x3E23: +case 0x3024: +case 0x3224: +case 0x3424: +case 0x3624: +case 0x3824: +case 0x3A24: +case 0x3C24: +case 0x3E24: +case 0x3025: +case 0x3225: +case 0x3425: +case 0x3625: +case 0x3825: +case 0x3A25: +case 0x3C25: +case 0x3E25: +case 0x3026: +case 0x3226: +case 0x3426: +case 0x3626: +case 0x3826: +case 0x3A26: +case 0x3C26: +case 0x3E26: + +// MOVEW +case 0x3020: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32A0: +case 0x34A0: +case 0x36A0: +case 0x38A0: +case 0x3AA0: +case 0x3CA0: +case 0x3EA0: +case 0x30A1: +case 0x32A1: +case 0x34A1: +case 0x36A1: +case 0x38A1: +case 0x3AA1: +case 0x3CA1: +case 0x3EA1: +case 0x30A2: +case 0x32A2: +case 0x34A2: +case 0x36A2: +case 0x38A2: +case 0x3AA2: +case 0x3CA2: +case 0x3EA2: +case 0x30A3: +case 0x32A3: +case 0x34A3: +case 0x36A3: +case 0x38A3: +case 0x3AA3: +case 0x3CA3: +case 0x3EA3: +case 0x30A4: +case 0x32A4: +case 0x34A4: +case 0x36A4: +case 0x38A4: +case 0x3AA4: +case 0x3CA4: +case 0x3EA4: +case 0x30A5: +case 0x32A5: +case 0x34A5: +case 0x36A5: +case 0x38A5: +case 0x3AA5: +case 0x3CA5: +case 0x3EA5: +case 0x30A6: +case 0x32A6: +case 0x34A6: +case 0x36A6: +case 0x38A6: +case 0x3AA6: +case 0x3CA6: +case 0x3EA6: + +// MOVEW +case 0x30A0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32E0: +case 0x34E0: +case 0x36E0: +case 0x38E0: +case 0x3AE0: +case 0x3CE0: +case 0x30E1: +case 0x32E1: +case 0x34E1: +case 0x36E1: +case 0x38E1: +case 0x3AE1: +case 0x3CE1: +case 0x30E2: +case 0x32E2: +case 0x34E2: +case 0x36E2: +case 0x38E2: +case 0x3AE2: +case 0x3CE2: +case 0x30E3: +case 0x32E3: +case 0x34E3: +case 0x36E3: +case 0x38E3: +case 0x3AE3: +case 0x3CE3: +case 0x30E4: +case 0x32E4: +case 0x34E4: +case 0x36E4: +case 0x38E4: +case 0x3AE4: +case 0x3CE4: +case 0x30E5: +case 0x32E5: +case 0x34E5: +case 0x36E5: +case 0x38E5: +case 0x3AE5: +case 0x3CE5: +case 0x30E6: +case 0x32E6: +case 0x34E6: +case 0x36E6: +case 0x38E6: +case 0x3AE6: +case 0x3CE6: + +// MOVEW +case 0x30E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3320: +case 0x3520: +case 0x3720: +case 0x3920: +case 0x3B20: +case 0x3D20: +case 0x3121: +case 0x3321: +case 0x3521: +case 0x3721: +case 0x3921: +case 0x3B21: +case 0x3D21: +case 0x3122: +case 0x3322: +case 0x3522: +case 0x3722: +case 0x3922: +case 0x3B22: +case 0x3D22: +case 0x3123: +case 0x3323: +case 0x3523: +case 0x3723: +case 0x3923: +case 0x3B23: +case 0x3D23: +case 0x3124: +case 0x3324: +case 0x3524: +case 0x3724: +case 0x3924: +case 0x3B24: +case 0x3D24: +case 0x3125: +case 0x3325: +case 0x3525: +case 0x3725: +case 0x3925: +case 0x3B25: +case 0x3D25: +case 0x3126: +case 0x3326: +case 0x3526: +case 0x3726: +case 0x3926: +case 0x3B26: +case 0x3D26: + +// MOVEW +case 0x3120: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3360: +case 0x3560: +case 0x3760: +case 0x3960: +case 0x3B60: +case 0x3D60: +case 0x3F60: +case 0x3161: +case 0x3361: +case 0x3561: +case 0x3761: +case 0x3961: +case 0x3B61: +case 0x3D61: +case 0x3F61: +case 0x3162: +case 0x3362: +case 0x3562: +case 0x3762: +case 0x3962: +case 0x3B62: +case 0x3D62: +case 0x3F62: +case 0x3163: +case 0x3363: +case 0x3563: +case 0x3763: +case 0x3963: +case 0x3B63: +case 0x3D63: +case 0x3F63: +case 0x3164: +case 0x3364: +case 0x3564: +case 0x3764: +case 0x3964: +case 0x3B64: +case 0x3D64: +case 0x3F64: +case 0x3165: +case 0x3365: +case 0x3565: +case 0x3765: +case 0x3965: +case 0x3B65: +case 0x3D65: +case 0x3F65: +case 0x3166: +case 0x3366: +case 0x3566: +case 0x3766: +case 0x3966: +case 0x3B66: +case 0x3D66: +case 0x3F66: + +// MOVEW +case 0x3160: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33A0: +case 0x35A0: +case 0x37A0: +case 0x39A0: +case 0x3BA0: +case 0x3DA0: +case 0x3FA0: +case 0x31A1: +case 0x33A1: +case 0x35A1: +case 0x37A1: +case 0x39A1: +case 0x3BA1: +case 0x3DA1: +case 0x3FA1: +case 0x31A2: +case 0x33A2: +case 0x35A2: +case 0x37A2: +case 0x39A2: +case 0x3BA2: +case 0x3DA2: +case 0x3FA2: +case 0x31A3: +case 0x33A3: +case 0x35A3: +case 0x37A3: +case 0x39A3: +case 0x3BA3: +case 0x3DA3: +case 0x3FA3: +case 0x31A4: +case 0x33A4: +case 0x35A4: +case 0x37A4: +case 0x39A4: +case 0x3BA4: +case 0x3DA4: +case 0x3FA4: +case 0x31A5: +case 0x33A5: +case 0x35A5: +case 0x37A5: +case 0x39A5: +case 0x3BA5: +case 0x3DA5: +case 0x3FA5: +case 0x31A6: +case 0x33A6: +case 0x35A6: +case 0x37A6: +case 0x39A6: +case 0x3BA6: +case 0x3DA6: +case 0x3FA6: + +// MOVEW +case 0x31A0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31E1: +case 0x31E2: +case 0x31E3: +case 0x31E4: +case 0x31E5: +case 0x31E6: + +// MOVEW +case 0x31E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33E1: +case 0x33E2: +case 0x33E3: +case 0x33E4: +case 0x33E5: +case 0x33E6: + +// MOVEW +case 0x33E0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3EE1: +case 0x3EE2: +case 0x3EE3: +case 0x3EE4: +case 0x3EE5: +case 0x3EE6: + +// MOVEW +case 0x3EE0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F21: +case 0x3F22: +case 0x3F23: +case 0x3F24: +case 0x3F25: +case 0x3F26: + +// MOVEW +case 0x3F20: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3228: +case 0x3428: +case 0x3628: +case 0x3828: +case 0x3A28: +case 0x3C28: +case 0x3E28: +case 0x3029: +case 0x3229: +case 0x3429: +case 0x3629: +case 0x3829: +case 0x3A29: +case 0x3C29: +case 0x3E29: +case 0x302A: +case 0x322A: +case 0x342A: +case 0x362A: +case 0x382A: +case 0x3A2A: +case 0x3C2A: +case 0x3E2A: +case 0x302B: +case 0x322B: +case 0x342B: +case 0x362B: +case 0x382B: +case 0x3A2B: +case 0x3C2B: +case 0x3E2B: +case 0x302C: +case 0x322C: +case 0x342C: +case 0x362C: +case 0x382C: +case 0x3A2C: +case 0x3C2C: +case 0x3E2C: +case 0x302D: +case 0x322D: +case 0x342D: +case 0x362D: +case 0x382D: +case 0x3A2D: +case 0x3C2D: +case 0x3E2D: +case 0x302E: +case 0x322E: +case 0x342E: +case 0x362E: +case 0x382E: +case 0x3A2E: +case 0x3C2E: +case 0x3E2E: +case 0x302F: +case 0x322F: +case 0x342F: +case 0x362F: +case 0x382F: +case 0x3A2F: +case 0x3C2F: +case 0x3E2F: + +// MOVEW +case 0x3028: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32A8: +case 0x34A8: +case 0x36A8: +case 0x38A8: +case 0x3AA8: +case 0x3CA8: +case 0x3EA8: +case 0x30A9: +case 0x32A9: +case 0x34A9: +case 0x36A9: +case 0x38A9: +case 0x3AA9: +case 0x3CA9: +case 0x3EA9: +case 0x30AA: +case 0x32AA: +case 0x34AA: +case 0x36AA: +case 0x38AA: +case 0x3AAA: +case 0x3CAA: +case 0x3EAA: +case 0x30AB: +case 0x32AB: +case 0x34AB: +case 0x36AB: +case 0x38AB: +case 0x3AAB: +case 0x3CAB: +case 0x3EAB: +case 0x30AC: +case 0x32AC: +case 0x34AC: +case 0x36AC: +case 0x38AC: +case 0x3AAC: +case 0x3CAC: +case 0x3EAC: +case 0x30AD: +case 0x32AD: +case 0x34AD: +case 0x36AD: +case 0x38AD: +case 0x3AAD: +case 0x3CAD: +case 0x3EAD: +case 0x30AE: +case 0x32AE: +case 0x34AE: +case 0x36AE: +case 0x38AE: +case 0x3AAE: +case 0x3CAE: +case 0x3EAE: +case 0x30AF: +case 0x32AF: +case 0x34AF: +case 0x36AF: +case 0x38AF: +case 0x3AAF: +case 0x3CAF: +case 0x3EAF: + +// MOVEW +case 0x30A8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32E8: +case 0x34E8: +case 0x36E8: +case 0x38E8: +case 0x3AE8: +case 0x3CE8: +case 0x30E9: +case 0x32E9: +case 0x34E9: +case 0x36E9: +case 0x38E9: +case 0x3AE9: +case 0x3CE9: +case 0x30EA: +case 0x32EA: +case 0x34EA: +case 0x36EA: +case 0x38EA: +case 0x3AEA: +case 0x3CEA: +case 0x30EB: +case 0x32EB: +case 0x34EB: +case 0x36EB: +case 0x38EB: +case 0x3AEB: +case 0x3CEB: +case 0x30EC: +case 0x32EC: +case 0x34EC: +case 0x36EC: +case 0x38EC: +case 0x3AEC: +case 0x3CEC: +case 0x30ED: +case 0x32ED: +case 0x34ED: +case 0x36ED: +case 0x38ED: +case 0x3AED: +case 0x3CED: +case 0x30EE: +case 0x32EE: +case 0x34EE: +case 0x36EE: +case 0x38EE: +case 0x3AEE: +case 0x3CEE: +case 0x30EF: +case 0x32EF: +case 0x34EF: +case 0x36EF: +case 0x38EF: +case 0x3AEF: +case 0x3CEF: + +// MOVEW +case 0x30E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3328: +case 0x3528: +case 0x3728: +case 0x3928: +case 0x3B28: +case 0x3D28: +case 0x3129: +case 0x3329: +case 0x3529: +case 0x3729: +case 0x3929: +case 0x3B29: +case 0x3D29: +case 0x312A: +case 0x332A: +case 0x352A: +case 0x372A: +case 0x392A: +case 0x3B2A: +case 0x3D2A: +case 0x312B: +case 0x332B: +case 0x352B: +case 0x372B: +case 0x392B: +case 0x3B2B: +case 0x3D2B: +case 0x312C: +case 0x332C: +case 0x352C: +case 0x372C: +case 0x392C: +case 0x3B2C: +case 0x3D2C: +case 0x312D: +case 0x332D: +case 0x352D: +case 0x372D: +case 0x392D: +case 0x3B2D: +case 0x3D2D: +case 0x312E: +case 0x332E: +case 0x352E: +case 0x372E: +case 0x392E: +case 0x3B2E: +case 0x3D2E: +case 0x312F: +case 0x332F: +case 0x352F: +case 0x372F: +case 0x392F: +case 0x3B2F: +case 0x3D2F: + +// MOVEW +case 0x3128: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3368: +case 0x3568: +case 0x3768: +case 0x3968: +case 0x3B68: +case 0x3D68: +case 0x3F68: +case 0x3169: +case 0x3369: +case 0x3569: +case 0x3769: +case 0x3969: +case 0x3B69: +case 0x3D69: +case 0x3F69: +case 0x316A: +case 0x336A: +case 0x356A: +case 0x376A: +case 0x396A: +case 0x3B6A: +case 0x3D6A: +case 0x3F6A: +case 0x316B: +case 0x336B: +case 0x356B: +case 0x376B: +case 0x396B: +case 0x3B6B: +case 0x3D6B: +case 0x3F6B: +case 0x316C: +case 0x336C: +case 0x356C: +case 0x376C: +case 0x396C: +case 0x3B6C: +case 0x3D6C: +case 0x3F6C: +case 0x316D: +case 0x336D: +case 0x356D: +case 0x376D: +case 0x396D: +case 0x3B6D: +case 0x3D6D: +case 0x3F6D: +case 0x316E: +case 0x336E: +case 0x356E: +case 0x376E: +case 0x396E: +case 0x3B6E: +case 0x3D6E: +case 0x3F6E: +case 0x316F: +case 0x336F: +case 0x356F: +case 0x376F: +case 0x396F: +case 0x3B6F: +case 0x3D6F: +case 0x3F6F: + +// MOVEW +case 0x3168: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33A8: +case 0x35A8: +case 0x37A8: +case 0x39A8: +case 0x3BA8: +case 0x3DA8: +case 0x3FA8: +case 0x31A9: +case 0x33A9: +case 0x35A9: +case 0x37A9: +case 0x39A9: +case 0x3BA9: +case 0x3DA9: +case 0x3FA9: +case 0x31AA: +case 0x33AA: +case 0x35AA: +case 0x37AA: +case 0x39AA: +case 0x3BAA: +case 0x3DAA: +case 0x3FAA: +case 0x31AB: +case 0x33AB: +case 0x35AB: +case 0x37AB: +case 0x39AB: +case 0x3BAB: +case 0x3DAB: +case 0x3FAB: +case 0x31AC: +case 0x33AC: +case 0x35AC: +case 0x37AC: +case 0x39AC: +case 0x3BAC: +case 0x3DAC: +case 0x3FAC: +case 0x31AD: +case 0x33AD: +case 0x35AD: +case 0x37AD: +case 0x39AD: +case 0x3BAD: +case 0x3DAD: +case 0x3FAD: +case 0x31AE: +case 0x33AE: +case 0x35AE: +case 0x37AE: +case 0x39AE: +case 0x3BAE: +case 0x3DAE: +case 0x3FAE: +case 0x31AF: +case 0x33AF: +case 0x35AF: +case 0x37AF: +case 0x39AF: +case 0x3BAF: +case 0x3DAF: +case 0x3FAF: + +// MOVEW +case 0x31A8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31E9: +case 0x31EA: +case 0x31EB: +case 0x31EC: +case 0x31ED: +case 0x31EE: +case 0x31EF: + +// MOVEW +case 0x31E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33E9: +case 0x33EA: +case 0x33EB: +case 0x33EC: +case 0x33ED: +case 0x33EE: +case 0x33EF: + +// MOVEW +case 0x33E8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3EE9: +case 0x3EEA: +case 0x3EEB: +case 0x3EEC: +case 0x3EED: +case 0x3EEE: +case 0x3EEF: + +// MOVEW +case 0x3EE8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F29: +case 0x3F2A: +case 0x3F2B: +case 0x3F2C: +case 0x3F2D: +case 0x3F2E: +case 0x3F2F: + +// MOVEW +case 0x3F28: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3230: +case 0x3430: +case 0x3630: +case 0x3830: +case 0x3A30: +case 0x3C30: +case 0x3E30: +case 0x3031: +case 0x3231: +case 0x3431: +case 0x3631: +case 0x3831: +case 0x3A31: +case 0x3C31: +case 0x3E31: +case 0x3032: +case 0x3232: +case 0x3432: +case 0x3632: +case 0x3832: +case 0x3A32: +case 0x3C32: +case 0x3E32: +case 0x3033: +case 0x3233: +case 0x3433: +case 0x3633: +case 0x3833: +case 0x3A33: +case 0x3C33: +case 0x3E33: +case 0x3034: +case 0x3234: +case 0x3434: +case 0x3634: +case 0x3834: +case 0x3A34: +case 0x3C34: +case 0x3E34: +case 0x3035: +case 0x3235: +case 0x3435: +case 0x3635: +case 0x3835: +case 0x3A35: +case 0x3C35: +case 0x3E35: +case 0x3036: +case 0x3236: +case 0x3436: +case 0x3636: +case 0x3836: +case 0x3A36: +case 0x3C36: +case 0x3E36: +case 0x3037: +case 0x3237: +case 0x3437: +case 0x3637: +case 0x3837: +case 0x3A37: +case 0x3C37: +case 0x3E37: + +// MOVEW +case 0x3030: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32B0: +case 0x34B0: +case 0x36B0: +case 0x38B0: +case 0x3AB0: +case 0x3CB0: +case 0x3EB0: +case 0x30B1: +case 0x32B1: +case 0x34B1: +case 0x36B1: +case 0x38B1: +case 0x3AB1: +case 0x3CB1: +case 0x3EB1: +case 0x30B2: +case 0x32B2: +case 0x34B2: +case 0x36B2: +case 0x38B2: +case 0x3AB2: +case 0x3CB2: +case 0x3EB2: +case 0x30B3: +case 0x32B3: +case 0x34B3: +case 0x36B3: +case 0x38B3: +case 0x3AB3: +case 0x3CB3: +case 0x3EB3: +case 0x30B4: +case 0x32B4: +case 0x34B4: +case 0x36B4: +case 0x38B4: +case 0x3AB4: +case 0x3CB4: +case 0x3EB4: +case 0x30B5: +case 0x32B5: +case 0x34B5: +case 0x36B5: +case 0x38B5: +case 0x3AB5: +case 0x3CB5: +case 0x3EB5: +case 0x30B6: +case 0x32B6: +case 0x34B6: +case 0x36B6: +case 0x38B6: +case 0x3AB6: +case 0x3CB6: +case 0x3EB6: +case 0x30B7: +case 0x32B7: +case 0x34B7: +case 0x36B7: +case 0x38B7: +case 0x3AB7: +case 0x3CB7: +case 0x3EB7: + +// MOVEW +case 0x30B0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32F0: +case 0x34F0: +case 0x36F0: +case 0x38F0: +case 0x3AF0: +case 0x3CF0: +case 0x30F1: +case 0x32F1: +case 0x34F1: +case 0x36F1: +case 0x38F1: +case 0x3AF1: +case 0x3CF1: +case 0x30F2: +case 0x32F2: +case 0x34F2: +case 0x36F2: +case 0x38F2: +case 0x3AF2: +case 0x3CF2: +case 0x30F3: +case 0x32F3: +case 0x34F3: +case 0x36F3: +case 0x38F3: +case 0x3AF3: +case 0x3CF3: +case 0x30F4: +case 0x32F4: +case 0x34F4: +case 0x36F4: +case 0x38F4: +case 0x3AF4: +case 0x3CF4: +case 0x30F5: +case 0x32F5: +case 0x34F5: +case 0x36F5: +case 0x38F5: +case 0x3AF5: +case 0x3CF5: +case 0x30F6: +case 0x32F6: +case 0x34F6: +case 0x36F6: +case 0x38F6: +case 0x3AF6: +case 0x3CF6: +case 0x30F7: +case 0x32F7: +case 0x34F7: +case 0x36F7: +case 0x38F7: +case 0x3AF7: +case 0x3CF7: + +// MOVEW +case 0x30F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3330: +case 0x3530: +case 0x3730: +case 0x3930: +case 0x3B30: +case 0x3D30: +case 0x3131: +case 0x3331: +case 0x3531: +case 0x3731: +case 0x3931: +case 0x3B31: +case 0x3D31: +case 0x3132: +case 0x3332: +case 0x3532: +case 0x3732: +case 0x3932: +case 0x3B32: +case 0x3D32: +case 0x3133: +case 0x3333: +case 0x3533: +case 0x3733: +case 0x3933: +case 0x3B33: +case 0x3D33: +case 0x3134: +case 0x3334: +case 0x3534: +case 0x3734: +case 0x3934: +case 0x3B34: +case 0x3D34: +case 0x3135: +case 0x3335: +case 0x3535: +case 0x3735: +case 0x3935: +case 0x3B35: +case 0x3D35: +case 0x3136: +case 0x3336: +case 0x3536: +case 0x3736: +case 0x3936: +case 0x3B36: +case 0x3D36: +case 0x3137: +case 0x3337: +case 0x3537: +case 0x3737: +case 0x3937: +case 0x3B37: +case 0x3D37: + +// MOVEW +case 0x3130: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3370: +case 0x3570: +case 0x3770: +case 0x3970: +case 0x3B70: +case 0x3D70: +case 0x3F70: +case 0x3171: +case 0x3371: +case 0x3571: +case 0x3771: +case 0x3971: +case 0x3B71: +case 0x3D71: +case 0x3F71: +case 0x3172: +case 0x3372: +case 0x3572: +case 0x3772: +case 0x3972: +case 0x3B72: +case 0x3D72: +case 0x3F72: +case 0x3173: +case 0x3373: +case 0x3573: +case 0x3773: +case 0x3973: +case 0x3B73: +case 0x3D73: +case 0x3F73: +case 0x3174: +case 0x3374: +case 0x3574: +case 0x3774: +case 0x3974: +case 0x3B74: +case 0x3D74: +case 0x3F74: +case 0x3175: +case 0x3375: +case 0x3575: +case 0x3775: +case 0x3975: +case 0x3B75: +case 0x3D75: +case 0x3F75: +case 0x3176: +case 0x3376: +case 0x3576: +case 0x3776: +case 0x3976: +case 0x3B76: +case 0x3D76: +case 0x3F76: +case 0x3177: +case 0x3377: +case 0x3577: +case 0x3777: +case 0x3977: +case 0x3B77: +case 0x3D77: +case 0x3F77: + +// MOVEW +case 0x3170: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33B0: +case 0x35B0: +case 0x37B0: +case 0x39B0: +case 0x3BB0: +case 0x3DB0: +case 0x3FB0: +case 0x31B1: +case 0x33B1: +case 0x35B1: +case 0x37B1: +case 0x39B1: +case 0x3BB1: +case 0x3DB1: +case 0x3FB1: +case 0x31B2: +case 0x33B2: +case 0x35B2: +case 0x37B2: +case 0x39B2: +case 0x3BB2: +case 0x3DB2: +case 0x3FB2: +case 0x31B3: +case 0x33B3: +case 0x35B3: +case 0x37B3: +case 0x39B3: +case 0x3BB3: +case 0x3DB3: +case 0x3FB3: +case 0x31B4: +case 0x33B4: +case 0x35B4: +case 0x37B4: +case 0x39B4: +case 0x3BB4: +case 0x3DB4: +case 0x3FB4: +case 0x31B5: +case 0x33B5: +case 0x35B5: +case 0x37B5: +case 0x39B5: +case 0x3BB5: +case 0x3DB5: +case 0x3FB5: +case 0x31B6: +case 0x33B6: +case 0x35B6: +case 0x37B6: +case 0x39B6: +case 0x3BB6: +case 0x3DB6: +case 0x3FB6: +case 0x31B7: +case 0x33B7: +case 0x35B7: +case 0x37B7: +case 0x39B7: +case 0x3BB7: +case 0x3DB7: +case 0x3FB7: + +// MOVEW +case 0x31B0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x31F1: +case 0x31F2: +case 0x31F3: +case 0x31F4: +case 0x31F5: +case 0x31F6: +case 0x31F7: + +// MOVEW +case 0x31F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33F1: +case 0x33F2: +case 0x33F3: +case 0x33F4: +case 0x33F5: +case 0x33F6: +case 0x33F7: + +// MOVEW +case 0x33F0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3EF1: +case 0x3EF2: +case 0x3EF3: +case 0x3EF4: +case 0x3EF5: +case 0x3EF6: +case 0x3EF7: + +// MOVEW +case 0x3EF0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3F31: +case 0x3F32: +case 0x3F33: +case 0x3F34: +case 0x3F35: +case 0x3F36: +case 0x3F37: + +// MOVEW +case 0x3F30: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3238: +case 0x3438: +case 0x3638: +case 0x3838: +case 0x3A38: +case 0x3C38: +case 0x3E38: + +// MOVEW +case 0x3038: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32B8: +case 0x34B8: +case 0x36B8: +case 0x38B8: +case 0x3AB8: +case 0x3CB8: +case 0x3EB8: + +// MOVEW +case 0x30B8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32F8: +case 0x34F8: +case 0x36F8: +case 0x38F8: +case 0x3AF8: +case 0x3CF8: + +// MOVEW +case 0x30F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3338: +case 0x3538: +case 0x3738: +case 0x3938: +case 0x3B38: +case 0x3D38: + +// MOVEW +case 0x3138: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3378: +case 0x3578: +case 0x3778: +case 0x3978: +case 0x3B78: +case 0x3D78: +case 0x3F78: + +// MOVEW +case 0x3178: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33B8: +case 0x35B8: +case 0x37B8: +case 0x39B8: +case 0x3BB8: +case 0x3DB8: +case 0x3FB8: + +// MOVEW +case 0x31B8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33F8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EF8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F38: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3239: +case 0x3439: +case 0x3639: +case 0x3839: +case 0x3A39: +case 0x3C39: +case 0x3E39: + +// MOVEW +case 0x3039: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32B9: +case 0x34B9: +case 0x36B9: +case 0x38B9: +case 0x3AB9: +case 0x3CB9: +case 0x3EB9: + +// MOVEW +case 0x30B9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32F9: +case 0x34F9: +case 0x36F9: +case 0x38F9: +case 0x3AF9: +case 0x3CF9: + +// MOVEW +case 0x30F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3339: +case 0x3539: +case 0x3739: +case 0x3939: +case 0x3B39: +case 0x3D39: + +// MOVEW +case 0x3139: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3379: +case 0x3579: +case 0x3779: +case 0x3979: +case 0x3B79: +case 0x3D79: +case 0x3F79: + +// MOVEW +case 0x3179: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33B9: +case 0x35B9: +case 0x37B9: +case 0x39B9: +case 0x3BB9: +case 0x3DB9: +case 0x3FB9: + +// MOVEW +case 0x31B9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33F9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EF9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F39: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x323A: +case 0x343A: +case 0x363A: +case 0x383A: +case 0x3A3A: +case 0x3C3A: +case 0x3E3A: + +// MOVEW +case 0x303A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32BA: +case 0x34BA: +case 0x36BA: +case 0x38BA: +case 0x3ABA: +case 0x3CBA: +case 0x3EBA: + +// MOVEW +case 0x30BA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32FA: +case 0x34FA: +case 0x36FA: +case 0x38FA: +case 0x3AFA: +case 0x3CFA: + +// MOVEW +case 0x30FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x333A: +case 0x353A: +case 0x373A: +case 0x393A: +case 0x3B3A: +case 0x3D3A: + +// MOVEW +case 0x313A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x337A: +case 0x357A: +case 0x377A: +case 0x397A: +case 0x3B7A: +case 0x3D7A: +case 0x3F7A: + +// MOVEW +case 0x317A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33BA: +case 0x35BA: +case 0x37BA: +case 0x39BA: +case 0x3BBA: +case 0x3DBA: +case 0x3FBA: + +// MOVEW +case 0x31BA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33FA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EFA: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F3A: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x323B: +case 0x343B: +case 0x363B: +case 0x383B: +case 0x3A3B: +case 0x3C3B: +case 0x3E3B: + +// MOVEW +case 0x303B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32BB: +case 0x34BB: +case 0x36BB: +case 0x38BB: +case 0x3ABB: +case 0x3CBB: +case 0x3EBB: + +// MOVEW +case 0x30BB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32FB: +case 0x34FB: +case 0x36FB: +case 0x38FB: +case 0x3AFB: +case 0x3CFB: + +// MOVEW +case 0x30FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x333B: +case 0x353B: +case 0x373B: +case 0x393B: +case 0x3B3B: +case 0x3D3B: + +// MOVEW +case 0x313B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x337B: +case 0x357B: +case 0x377B: +case 0x397B: +case 0x3B7B: +case 0x3D7B: +case 0x3F7B: + +// MOVEW +case 0x317B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33BB: +case 0x35BB: +case 0x37BB: +case 0x39BB: +case 0x3BBB: +case 0x3DBB: +case 0x3FBB: + +// MOVEW +case 0x31BB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33FB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EFB: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F3B: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x323C: +case 0x343C: +case 0x363C: +case 0x383C: +case 0x3A3C: +case 0x3C3C: +case 0x3E3C: + +// MOVEW +case 0x303C: +{ + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x32BC: +case 0x34BC: +case 0x36BC: +case 0x38BC: +case 0x3ABC: +case 0x3CBC: +case 0x3EBC: + +// MOVEW +case 0x30BC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32FC: +case 0x34FC: +case 0x36FC: +case 0x38FC: +case 0x3AFC: +case 0x3CFC: + +// MOVEW +case 0x30FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x333C: +case 0x353C: +case 0x373C: +case 0x393C: +case 0x3B3C: +case 0x3D3C: + +// MOVEW +case 0x313C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x337C: +case 0x357C: +case 0x377C: +case 0x397C: +case 0x3B7C: +case 0x3D7C: +case 0x3F7C: + +// MOVEW +case 0x317C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33BC: +case 0x35BC: +case 0x37BC: +case 0x39BC: +case 0x3BBC: +case 0x3DBC: +case 0x3FBC: + +// MOVEW +case 0x31BC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 10; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33FC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EFC: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F3C: +{ + u32 adr; + u32 res; + timestamp += 4; + res = FETCH_WORD; + PC += 2; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x321F: +case 0x341F: +case 0x361F: +case 0x381F: +case 0x3A1F: +case 0x3C1F: +case 0x3E1F: + +// MOVEW +case 0x301F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x329F: +case 0x349F: +case 0x369F: +case 0x389F: +case 0x3A9F: +case 0x3C9F: +case 0x3E9F: + +// MOVEW +case 0x309F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32DF: +case 0x34DF: +case 0x36DF: +case 0x38DF: +case 0x3ADF: +case 0x3CDF: + +// MOVEW +case 0x30DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x331F: +case 0x351F: +case 0x371F: +case 0x391F: +case 0x3B1F: +case 0x3D1F: + +// MOVEW +case 0x311F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x335F: +case 0x355F: +case 0x375F: +case 0x395F: +case 0x3B5F: +case 0x3D5F: +case 0x3F5F: + +// MOVEW +case 0x315F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x339F: +case 0x359F: +case 0x379F: +case 0x399F: +case 0x3B9F: +case 0x3D9F: +case 0x3F9F: + +// MOVEW +case 0x319F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33DF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EDF: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F1F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3227: +case 0x3427: +case 0x3627: +case 0x3827: +case 0x3A27: +case 0x3C27: +case 0x3E27: + +// MOVEW +case 0x3027: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(0) +case 0x32A7: +case 0x34A7: +case 0x36A7: +case 0x38A7: +case 0x3AA7: +case 0x3CA7: +case 0x3EA7: + +// MOVEW +case 0x30A7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x32E7: +case 0x34E7: +case 0x36E7: +case 0x38E7: +case 0x3AE7: +case 0x3CE7: + +// MOVEW +case 0x30E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3327: +case 0x3527: +case 0x3727: +case 0x3927: +case 0x3B27: +case 0x3D27: + +// MOVEW +case 0x3127: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3367: +case 0x3567: +case 0x3767: +case 0x3967: +case 0x3B67: +case 0x3D67: +case 0x3F67: + +// MOVEW +case 0x3167: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x33A7: +case 0x35A7: +case 0x37A7: +case 0x39A7: +case 0x3BA7: +case 0x3DA7: +case 0x3FA7: + +// MOVEW +case 0x31A7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[(Opcode >> 9) & 7]; + DECODE_EXT_WORD + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x31E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x33E7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3EE7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7]; + CPU->A[7] += 2; + WRITE_WOat_F(adr, res) +} +RET(0) + +// MOVEW +case 0x3F27: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x3240: +case 0x3440: +case 0x3640: +case 0x3840: +case 0x3A40: +case 0x3C40: +case 0x3E40: +case 0x3041: +case 0x3241: +case 0x3441: +case 0x3641: +case 0x3841: +case 0x3A41: +case 0x3C41: +case 0x3E41: +case 0x3042: +case 0x3242: +case 0x3442: +case 0x3642: +case 0x3842: +case 0x3A42: +case 0x3C42: +case 0x3E42: +case 0x3043: +case 0x3243: +case 0x3443: +case 0x3643: +case 0x3843: +case 0x3A43: +case 0x3C43: +case 0x3E43: +case 0x3044: +case 0x3244: +case 0x3444: +case 0x3644: +case 0x3844: +case 0x3A44: +case 0x3C44: +case 0x3E44: +case 0x3045: +case 0x3245: +case 0x3445: +case 0x3645: +case 0x3845: +case 0x3A45: +case 0x3C45: +case 0x3E45: +case 0x3046: +case 0x3246: +case 0x3446: +case 0x3646: +case 0x3846: +case 0x3A46: +case 0x3C46: +case 0x3E46: +case 0x3047: +case 0x3247: +case 0x3447: +case 0x3647: +case 0x3847: +case 0x3A47: +case 0x3C47: +case 0x3E47: + +// MOVEAW +case 0x3040: +{ + u32 res; + res = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3248: +case 0x3448: +case 0x3648: +case 0x3848: +case 0x3A48: +case 0x3C48: +case 0x3E48: +case 0x3049: +case 0x3249: +case 0x3449: +case 0x3649: +case 0x3849: +case 0x3A49: +case 0x3C49: +case 0x3E49: +case 0x304A: +case 0x324A: +case 0x344A: +case 0x364A: +case 0x384A: +case 0x3A4A: +case 0x3C4A: +case 0x3E4A: +case 0x304B: +case 0x324B: +case 0x344B: +case 0x364B: +case 0x384B: +case 0x3A4B: +case 0x3C4B: +case 0x3E4B: +case 0x304C: +case 0x324C: +case 0x344C: +case 0x364C: +case 0x384C: +case 0x3A4C: +case 0x3C4C: +case 0x3E4C: +case 0x304D: +case 0x324D: +case 0x344D: +case 0x364D: +case 0x384D: +case 0x3A4D: +case 0x3C4D: +case 0x3E4D: +case 0x304E: +case 0x324E: +case 0x344E: +case 0x364E: +case 0x384E: +case 0x3A4E: +case 0x3C4E: +case 0x3E4E: +case 0x304F: +case 0x324F: +case 0x344F: +case 0x364F: +case 0x384F: +case 0x3A4F: +case 0x3C4F: +case 0x3E4F: + +// MOVEAW +case 0x3048: +{ + u32 res; + res = (s32)(s16)CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3250: +case 0x3450: +case 0x3650: +case 0x3850: +case 0x3A50: +case 0x3C50: +case 0x3E50: +case 0x3051: +case 0x3251: +case 0x3451: +case 0x3651: +case 0x3851: +case 0x3A51: +case 0x3C51: +case 0x3E51: +case 0x3052: +case 0x3252: +case 0x3452: +case 0x3652: +case 0x3852: +case 0x3A52: +case 0x3C52: +case 0x3E52: +case 0x3053: +case 0x3253: +case 0x3453: +case 0x3653: +case 0x3853: +case 0x3A53: +case 0x3C53: +case 0x3E53: +case 0x3054: +case 0x3254: +case 0x3454: +case 0x3654: +case 0x3854: +case 0x3A54: +case 0x3C54: +case 0x3E54: +case 0x3055: +case 0x3255: +case 0x3455: +case 0x3655: +case 0x3855: +case 0x3A55: +case 0x3C55: +case 0x3E55: +case 0x3056: +case 0x3256: +case 0x3456: +case 0x3656: +case 0x3856: +case 0x3A56: +case 0x3C56: +case 0x3E56: +case 0x3057: +case 0x3257: +case 0x3457: +case 0x3657: +case 0x3857: +case 0x3A57: +case 0x3C57: +case 0x3E57: + +// MOVEAW +case 0x3050: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3258: +case 0x3458: +case 0x3658: +case 0x3858: +case 0x3A58: +case 0x3C58: +case 0x3E58: +case 0x3059: +case 0x3259: +case 0x3459: +case 0x3659: +case 0x3859: +case 0x3A59: +case 0x3C59: +case 0x3E59: +case 0x305A: +case 0x325A: +case 0x345A: +case 0x365A: +case 0x385A: +case 0x3A5A: +case 0x3C5A: +case 0x3E5A: +case 0x305B: +case 0x325B: +case 0x345B: +case 0x365B: +case 0x385B: +case 0x3A5B: +case 0x3C5B: +case 0x3E5B: +case 0x305C: +case 0x325C: +case 0x345C: +case 0x365C: +case 0x385C: +case 0x3A5C: +case 0x3C5C: +case 0x3E5C: +case 0x305D: +case 0x325D: +case 0x345D: +case 0x365D: +case 0x385D: +case 0x3A5D: +case 0x3C5D: +case 0x3E5D: +case 0x305E: +case 0x325E: +case 0x345E: +case 0x365E: +case 0x385E: +case 0x3A5E: +case 0x3C5E: +case 0x3E5E: + +// MOVEAW +case 0x3058: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3260: +case 0x3460: +case 0x3660: +case 0x3860: +case 0x3A60: +case 0x3C60: +case 0x3E60: +case 0x3061: +case 0x3261: +case 0x3461: +case 0x3661: +case 0x3861: +case 0x3A61: +case 0x3C61: +case 0x3E61: +case 0x3062: +case 0x3262: +case 0x3462: +case 0x3662: +case 0x3862: +case 0x3A62: +case 0x3C62: +case 0x3E62: +case 0x3063: +case 0x3263: +case 0x3463: +case 0x3663: +case 0x3863: +case 0x3A63: +case 0x3C63: +case 0x3E63: +case 0x3064: +case 0x3264: +case 0x3464: +case 0x3664: +case 0x3864: +case 0x3A64: +case 0x3C64: +case 0x3E64: +case 0x3065: +case 0x3265: +case 0x3465: +case 0x3665: +case 0x3865: +case 0x3A65: +case 0x3C65: +case 0x3E65: +case 0x3066: +case 0x3266: +case 0x3466: +case 0x3666: +case 0x3866: +case 0x3A66: +case 0x3C66: +case 0x3E66: + +// MOVEAW +case 0x3060: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3268: +case 0x3468: +case 0x3668: +case 0x3868: +case 0x3A68: +case 0x3C68: +case 0x3E68: +case 0x3069: +case 0x3269: +case 0x3469: +case 0x3669: +case 0x3869: +case 0x3A69: +case 0x3C69: +case 0x3E69: +case 0x306A: +case 0x326A: +case 0x346A: +case 0x366A: +case 0x386A: +case 0x3A6A: +case 0x3C6A: +case 0x3E6A: +case 0x306B: +case 0x326B: +case 0x346B: +case 0x366B: +case 0x386B: +case 0x3A6B: +case 0x3C6B: +case 0x3E6B: +case 0x306C: +case 0x326C: +case 0x346C: +case 0x366C: +case 0x386C: +case 0x3A6C: +case 0x3C6C: +case 0x3E6C: +case 0x306D: +case 0x326D: +case 0x346D: +case 0x366D: +case 0x386D: +case 0x3A6D: +case 0x3C6D: +case 0x3E6D: +case 0x306E: +case 0x326E: +case 0x346E: +case 0x366E: +case 0x386E: +case 0x3A6E: +case 0x3C6E: +case 0x3E6E: +case 0x306F: +case 0x326F: +case 0x346F: +case 0x366F: +case 0x386F: +case 0x3A6F: +case 0x3C6F: +case 0x3E6F: + +// MOVEAW +case 0x3068: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3270: +case 0x3470: +case 0x3670: +case 0x3870: +case 0x3A70: +case 0x3C70: +case 0x3E70: +case 0x3071: +case 0x3271: +case 0x3471: +case 0x3671: +case 0x3871: +case 0x3A71: +case 0x3C71: +case 0x3E71: +case 0x3072: +case 0x3272: +case 0x3472: +case 0x3672: +case 0x3872: +case 0x3A72: +case 0x3C72: +case 0x3E72: +case 0x3073: +case 0x3273: +case 0x3473: +case 0x3673: +case 0x3873: +case 0x3A73: +case 0x3C73: +case 0x3E73: +case 0x3074: +case 0x3274: +case 0x3474: +case 0x3674: +case 0x3874: +case 0x3A74: +case 0x3C74: +case 0x3E74: +case 0x3075: +case 0x3275: +case 0x3475: +case 0x3675: +case 0x3875: +case 0x3A75: +case 0x3C75: +case 0x3E75: +case 0x3076: +case 0x3276: +case 0x3476: +case 0x3676: +case 0x3876: +case 0x3A76: +case 0x3C76: +case 0x3E76: +case 0x3077: +case 0x3277: +case 0x3477: +case 0x3677: +case 0x3877: +case 0x3A77: +case 0x3C77: +case 0x3E77: + +// MOVEAW +case 0x3070: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3278: +case 0x3478: +case 0x3678: +case 0x3878: +case 0x3A78: +case 0x3C78: +case 0x3E78: + +// MOVEAW +case 0x3078: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3279: +case 0x3479: +case 0x3679: +case 0x3879: +case 0x3A79: +case 0x3C79: +case 0x3E79: + +// MOVEAW +case 0x3079: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x327A: +case 0x347A: +case 0x367A: +case 0x387A: +case 0x3A7A: +case 0x3C7A: +case 0x3E7A: + +// MOVEAW +case 0x307A: +{ + u32 adr; + u32 res; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x327B: +case 0x347B: +case 0x367B: +case 0x387B: +case 0x3A7B: +case 0x3C7B: +case 0x3E7B: + +// MOVEAW +case 0x307B: +{ + u32 adr; + u32 res; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x327C: +case 0x347C: +case 0x367C: +case 0x387C: +case 0x3A7C: +case 0x3C7C: +case 0x3E7C: + +// MOVEAW +case 0x307C: +{ + u32 res; + res = (s32)(s16)FETCH_WORD; + PC += 2; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0x325F: +case 0x345F: +case 0x365F: +case 0x385F: +case 0x3A5F: +case 0x3C5F: +case 0x3E5F: + +// MOVEAW +case 0x305F: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x3267: +case 0x3467: +case 0x3667: +case 0x3867: +case 0x3A67: +case 0x3C67: +case 0x3E67: + +// MOVEAW +case 0x3067: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READSX_WOat_F(adr, res) + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op4.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op4.inc new file mode 100644 index 0000000000..87a37abe70 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op4.inc @@ -0,0 +1,7141 @@ +case 0x4001: +case 0x4002: +case 0x4003: +case 0x4004: +case 0x4005: +case 0x4006: +case 0x4007: + +// NEGX +case 0x4000: +{ + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4011: +case 0x4012: +case 0x4013: +case 0x4014: +case 0x4015: +case 0x4016: +case 0x4017: + +// NEGX +case 0x4010: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4019: +case 0x401A: +case 0x401B: +case 0x401C: +case 0x401D: +case 0x401E: + +// NEGX +case 0x4018: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 8; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4021: +case 0x4022: +case 0x4023: +case 0x4024: +case 0x4025: +case 0x4026: + +// NEGX +case 0x4020: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4029: +case 0x402A: +case 0x402B: +case 0x402C: +case 0x402D: +case 0x402E: +case 0x402F: + +// NEGX +case 0x4028: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4031: +case 0x4032: +case 0x4033: +case 0x4034: +case 0x4035: +case 0x4036: +case 0x4037: + +// NEGX +case 0x4030: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEGX +case 0x4038: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEGX +case 0x4039: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEGX +case 0x401F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 8; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEGX +case 0x4027: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 10; + READ_BYat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4041: +case 0x4042: +case 0x4043: +case 0x4044: +case 0x4045: +case 0x4046: +case 0x4047: + +// NEGX +case 0x4040: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4051: +case 0x4052: +case 0x4053: +case 0x4054: +case 0x4055: +case 0x4056: +case 0x4057: + +// NEGX +case 0x4050: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4059: +case 0x405A: +case 0x405B: +case 0x405C: +case 0x405D: +case 0x405E: + +// NEGX +case 0x4058: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 8; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4061: +case 0x4062: +case 0x4063: +case 0x4064: +case 0x4065: +case 0x4066: + +// NEGX +case 0x4060: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4069: +case 0x406A: +case 0x406B: +case 0x406C: +case 0x406D: +case 0x406E: +case 0x406F: + +// NEGX +case 0x4068: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4071: +case 0x4072: +case 0x4073: +case 0x4074: +case 0x4075: +case 0x4076: +case 0x4077: + +// NEGX +case 0x4070: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEGX +case 0x4078: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEGX +case 0x4079: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEGX +case 0x405F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 8; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEGX +case 0x4067: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 10; + READ_WOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4081: +case 0x4082: +case 0x4083: +case 0x4084: +case 0x4085: +case 0x4086: +case 0x4087: + +// NEGX +case 0x4080: +{ + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0x4091: +case 0x4092: +case 0x4093: +case 0x4094: +case 0x4095: +case 0x4096: +case 0x4097: + +// NEGX +case 0x4090: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x4099: +case 0x409A: +case 0x409B: +case 0x409C: +case 0x409D: +case 0x409E: + +// NEGX +case 0x4098: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x40A1: +case 0x40A2: +case 0x40A3: +case 0x40A4: +case 0x40A5: +case 0x40A6: + +// NEGX +case 0x40A0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x40A9: +case 0x40AA: +case 0x40AB: +case 0x40AC: +case 0x40AD: +case 0x40AE: +case 0x40AF: + +// NEGX +case 0x40A8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x40B1: +case 0x40B2: +case 0x40B3: +case 0x40B4: +case 0x40B5: +case 0x40B6: +case 0x40B7: + +// NEGX +case 0x40B0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEGX +case 0x40B8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEGX +case 0x40B9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEGX +case 0x409F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEGX +case 0x40A7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, src) + res = -src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x4201: +case 0x4202: +case 0x4203: +case 0x4204: +case 0x4205: +case 0x4206: +case 0x4207: + +// CLR +case 0x4200: +{ + u32 res; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4211: +case 0x4212: +case 0x4213: +case 0x4214: +case 0x4215: +case 0x4216: +case 0x4217: + +// CLR +case 0x4210: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x4219: +case 0x421A: +case 0x421B: +case 0x421C: +case 0x421D: +case 0x421E: + +// CLR +case 0x4218: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x4221: +case 0x4222: +case 0x4223: +case 0x4224: +case 0x4225: +case 0x4226: + +// CLR +case 0x4220: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 10; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x4229: +case 0x422A: +case 0x422B: +case 0x422C: +case 0x422D: +case 0x422E: +case 0x422F: + +// CLR +case 0x4228: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x4231: +case 0x4232: +case 0x4233: +case 0x4234: +case 0x4235: +case 0x4236: +case 0x4237: + +// CLR +case 0x4230: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 14; + WRITE_BYat_F(adr, res) +} +RET(0) + +// CLR +case 0x4238: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_BYat_F(adr, res) +} +RET(0) + +// CLR +case 0x4239: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 16; + WRITE_BYat_F(adr, res) +} +RET(0) + +// CLR +case 0x421F: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 8; + WRITE_BYat_F(adr, res) +} +RET(0) + +// CLR +case 0x4227: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 10; + WRITE_BYat_F(adr, res) +} +RET(0) +case 0x4241: +case 0x4242: +case 0x4243: +case 0x4244: +case 0x4245: +case 0x4246: +case 0x4247: + +// CLR +case 0x4240: +{ + u32 res; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4251: +case 0x4252: +case 0x4253: +case 0x4254: +case 0x4255: +case 0x4256: +case 0x4257: + +// CLR +case 0x4250: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x4259: +case 0x425A: +case 0x425B: +case 0x425C: +case 0x425D: +case 0x425E: + +// CLR +case 0x4258: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x4261: +case 0x4262: +case 0x4263: +case 0x4264: +case 0x4265: +case 0x4266: + +// CLR +case 0x4260: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 10; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x4269: +case 0x426A: +case 0x426B: +case 0x426C: +case 0x426D: +case 0x426E: +case 0x426F: + +// CLR +case 0x4268: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x4271: +case 0x4272: +case 0x4273: +case 0x4274: +case 0x4275: +case 0x4276: +case 0x4277: + +// CLR +case 0x4270: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 14; + WRITE_WOat_F(adr, res) +} +RET(0) + +// CLR +case 0x4278: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_WOat_F(adr, res) +} +RET(0) + +// CLR +case 0x4279: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 16; + WRITE_WOat_F(adr, res) +} +RET(0) + +// CLR +case 0x425F: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(0) + +// CLR +case 0x4267: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 10; + WRITE_WOat_F(adr, res) +} +RET(0) +case 0x4281: +case 0x4282: +case 0x4283: +case 0x4284: +case 0x4285: +case 0x4286: +case 0x4287: + +// CLR +case 0x4280: +{ + u32 res; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0x4291: +case 0x4292: +case 0x4293: +case 0x4294: +case 0x4295: +case 0x4296: +case 0x4297: + +// CLR +case 0x4290: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x4299: +case 0x429A: +case 0x429B: +case 0x429C: +case 0x429D: +case 0x429E: + +// CLR +case 0x4298: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x42A1: +case 0x42A2: +case 0x42A3: +case 0x42A4: +case 0x42A5: +case 0x42A6: + +// CLR +case 0x42A0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 14; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x42A9: +case 0x42AA: +case 0x42AB: +case 0x42AC: +case 0x42AD: +case 0x42AE: +case 0x42AF: + +// CLR +case 0x42A8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 16; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x42B1: +case 0x42B2: +case 0x42B3: +case 0x42B4: +case 0x42B5: +case 0x42B6: +case 0x42B7: + +// CLR +case 0x42B0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 18; + WRITE_LOat_F(adr, res) +} +RET(0) + +// CLR +case 0x42B8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 16; + WRITE_LOat_F(adr, res) +} +RET(0) + +// CLR +case 0x42B9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 20; + WRITE_LOat_F(adr, res) +} +RET(0) + +// CLR +case 0x429F: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 4; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 12; + WRITE_LOat_F(adr, res) +} +RET(0) + +// CLR +case 0x42A7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + res = 0; + CPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0; + timestamp += 14; + WRITE_LOat_F(adr, res) +} +RET(0) +case 0x4401: +case 0x4402: +case 0x4403: +case 0x4404: +case 0x4405: +case 0x4406: +case 0x4407: + +// NEG +case 0x4400: +{ + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4411: +case 0x4412: +case 0x4413: +case 0x4414: +case 0x4415: +case 0x4416: +case 0x4417: + +// NEG +case 0x4410: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4419: +case 0x441A: +case 0x441B: +case 0x441C: +case 0x441D: +case 0x441E: + +// NEG +case 0x4418: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 8; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4421: +case 0x4422: +case 0x4423: +case 0x4424: +case 0x4425: +case 0x4426: + +// NEG +case 0x4420: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4429: +case 0x442A: +case 0x442B: +case 0x442C: +case 0x442D: +case 0x442E: +case 0x442F: + +// NEG +case 0x4428: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4431: +case 0x4432: +case 0x4433: +case 0x4434: +case 0x4435: +case 0x4436: +case 0x4437: + +// NEG +case 0x4430: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEG +case 0x4438: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEG +case 0x4439: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEG +case 0x441F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 8; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NEG +case 0x4427: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 10; + READ_BYat_F(adr, src) + res = -src; + CPU->flag_V = res & src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4441: +case 0x4442: +case 0x4443: +case 0x4444: +case 0x4445: +case 0x4446: +case 0x4447: + +// NEG +case 0x4440: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4451: +case 0x4452: +case 0x4453: +case 0x4454: +case 0x4455: +case 0x4456: +case 0x4457: + +// NEG +case 0x4450: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4459: +case 0x445A: +case 0x445B: +case 0x445C: +case 0x445D: +case 0x445E: + +// NEG +case 0x4458: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 8; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4461: +case 0x4462: +case 0x4463: +case 0x4464: +case 0x4465: +case 0x4466: + +// NEG +case 0x4460: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4469: +case 0x446A: +case 0x446B: +case 0x446C: +case 0x446D: +case 0x446E: +case 0x446F: + +// NEG +case 0x4468: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4471: +case 0x4472: +case 0x4473: +case 0x4474: +case 0x4475: +case 0x4476: +case 0x4477: + +// NEG +case 0x4470: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEG +case 0x4478: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEG +case 0x4479: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEG +case 0x445F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 8; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NEG +case 0x4467: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 10; + READ_WOat_F(adr, src) + res = -src; + CPU->flag_V = (res & src) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4481: +case 0x4482: +case 0x4483: +case 0x4484: +case 0x4485: +case 0x4486: +case 0x4487: + +// NEG +case 0x4480: +{ + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0x4491: +case 0x4492: +case 0x4493: +case 0x4494: +case 0x4495: +case 0x4496: +case 0x4497: + +// NEG +case 0x4490: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x4499: +case 0x449A: +case 0x449B: +case 0x449C: +case 0x449D: +case 0x449E: + +// NEG +case 0x4498: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x44A1: +case 0x44A2: +case 0x44A3: +case 0x44A4: +case 0x44A5: +case 0x44A6: + +// NEG +case 0x44A0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x44A9: +case 0x44AA: +case 0x44AB: +case 0x44AC: +case 0x44AD: +case 0x44AE: +case 0x44AF: + +// NEG +case 0x44A8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x44B1: +case 0x44B2: +case 0x44B3: +case 0x44B4: +case 0x44B5: +case 0x44B6: +case 0x44B7: + +// NEG +case 0x44B0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEG +case 0x44B8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEG +case 0x44B9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEG +case 0x449F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NEG +case 0x44A7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, src) + res = -src; + CPU->flag_notZ = res; + CPU->flag_V = (res & src) >> 24; + CPU->flag_X = CPU->flag_C = (src | res) >> 23; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x4601: +case 0x4602: +case 0x4603: +case 0x4604: +case 0x4605: +case 0x4606: +case 0x4607: + +// NOT +case 0x4600: +{ + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4611: +case 0x4612: +case 0x4613: +case 0x4614: +case 0x4615: +case 0x4616: +case 0x4617: + +// NOT +case 0x4610: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4619: +case 0x461A: +case 0x461B: +case 0x461C: +case 0x461D: +case 0x461E: + +// NOT +case 0x4618: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 8; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4621: +case 0x4622: +case 0x4623: +case 0x4624: +case 0x4625: +case 0x4626: + +// NOT +case 0x4620: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4629: +case 0x462A: +case 0x462B: +case 0x462C: +case 0x462D: +case 0x462E: +case 0x462F: + +// NOT +case 0x4628: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4631: +case 0x4632: +case 0x4633: +case 0x4634: +case 0x4635: +case 0x4636: +case 0x4637: + +// NOT +case 0x4630: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NOT +case 0x4638: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NOT +case 0x4639: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NOT +case 0x461F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 8; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) + +// NOT +case 0x4627: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 10; + READ_BYat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_N = res; + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(0) +case 0x4641: +case 0x4642: +case 0x4643: +case 0x4644: +case 0x4645: +case 0x4646: +case 0x4647: + +// NOT +case 0x4640: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4651: +case 0x4652: +case 0x4653: +case 0x4654: +case 0x4655: +case 0x4656: +case 0x4657: + +// NOT +case 0x4650: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4659: +case 0x465A: +case 0x465B: +case 0x465C: +case 0x465D: +case 0x465E: + +// NOT +case 0x4658: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 8; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4661: +case 0x4662: +case 0x4663: +case 0x4664: +case 0x4665: +case 0x4666: + +// NOT +case 0x4660: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4669: +case 0x466A: +case 0x466B: +case 0x466C: +case 0x466D: +case 0x466E: +case 0x466F: + +// NOT +case 0x4668: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4671: +case 0x4672: +case 0x4673: +case 0x4674: +case 0x4675: +case 0x4676: +case 0x4677: + +// NOT +case 0x4670: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NOT +case 0x4678: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NOT +case 0x4679: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NOT +case 0x465F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 8; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) + +// NOT +case 0x4667: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 10; + READ_WOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res & 0xFFFF; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(0) +case 0x4681: +case 0x4682: +case 0x4683: +case 0x4684: +case 0x4685: +case 0x4686: +case 0x4687: + +// NOT +case 0x4680: +{ + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0x4691: +case 0x4692: +case 0x4693: +case 0x4694: +case 0x4695: +case 0x4696: +case 0x4697: + +// NOT +case 0x4690: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 12; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x4699: +case 0x469A: +case 0x469B: +case 0x469C: +case 0x469D: +case 0x469E: + +// NOT +case 0x4698: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x46A1: +case 0x46A2: +case 0x46A3: +case 0x46A4: +case 0x46A5: +case 0x46A6: + +// NOT +case 0x46A0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 14; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x46A9: +case 0x46AA: +case 0x46AB: +case 0x46AC: +case 0x46AD: +case 0x46AE: +case 0x46AF: + +// NOT +case 0x46A8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x46B1: +case 0x46B2: +case 0x46B3: +case 0x46B4: +case 0x46B5: +case 0x46B6: +case 0x46B7: + +// NOT +case 0x46B0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 18; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NOT +case 0x46B8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 16; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NOT +case 0x46B9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 20; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NOT +case 0x469F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) + +// NOT +case 0x46A7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 14; + READ_LOat_F(adr, src) + res = ~src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(0) +case 0x40C1: +case 0x40C2: +case 0x40C3: +case 0x40C4: +case 0x40C5: +case 0x40C6: +case 0x40C7: + +// MOVESRa +case 0x40C0: +{ + u32 res; + res = GET_SR; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0x40D1: +case 0x40D2: +case 0x40D3: +case 0x40D4: +case 0x40D5: +case 0x40D6: +case 0x40D7: + +// MOVESRa +case 0x40D0: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 2; + WRITE_WOat_F(adr, res) +} +RET(6) +case 0x40D9: +case 0x40DA: +case 0x40DB: +case 0x40DC: +case 0x40DD: +case 0x40DE: + +// MOVESRa +case 0x40D8: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 2; + WRITE_WOat_F(adr, res) +} +RET(6) +case 0x40E1: +case 0x40E2: +case 0x40E3: +case 0x40E4: +case 0x40E5: +case 0x40E6: + +// MOVESRa +case 0x40E0: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(6) +case 0x40E9: +case 0x40EA: +case 0x40EB: +case 0x40EC: +case 0x40ED: +case 0x40EE: +case 0x40EF: + +// MOVESRa +case 0x40E8: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(6) +case 0x40F1: +case 0x40F2: +case 0x40F3: +case 0x40F4: +case 0x40F5: +case 0x40F6: +case 0x40F7: + +// MOVESRa +case 0x40F0: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 8; + WRITE_WOat_F(adr, res) +} +RET(6) + +// MOVESRa +case 0x40F8: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + WRITE_WOat_F(adr, res) +} +RET(6) + +// MOVESRa +case 0x40F9: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 10; + WRITE_WOat_F(adr, res) +} +RET(6) + +// MOVESRa +case 0x40DF: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 2; + WRITE_WOat_F(adr, res) +} +RET(6) + +// MOVESRa +case 0x40E7: +{ + u32 adr; + u32 res; + res = GET_SR; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 4; + WRITE_WOat_F(adr, res) +} +RET(6) +case 0x44C1: +case 0x44C2: +case 0x44C3: +case 0x44C4: +case 0x44C5: +case 0x44C6: +case 0x44C7: + +// MOVEaCCR +case 0x44C0: +{ + u32 res; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + SET_CCR(res) +} +RET(12) +case 0x44D1: +case 0x44D2: +case 0x44D3: +case 0x44D4: +case 0x44D5: +case 0x44D6: +case 0x44D7: + +// MOVEaCCR +case 0x44D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) +case 0x44D9: +case 0x44DA: +case 0x44DB: +case 0x44DC: +case 0x44DD: +case 0x44DE: + +// MOVEaCCR +case 0x44D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) +case 0x44E1: +case 0x44E2: +case 0x44E3: +case 0x44E4: +case 0x44E5: +case 0x44E6: + +// MOVEaCCR +case 0x44E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) +case 0x44E9: +case 0x44EA: +case 0x44EB: +case 0x44EC: +case 0x44ED: +case 0x44EE: +case 0x44EF: + +// MOVEaCCR +case 0x44E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) +case 0x44F1: +case 0x44F2: +case 0x44F3: +case 0x44F4: +case 0x44F5: +case 0x44F6: +case 0x44F7: + +// MOVEaCCR +case 0x44F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) + +// MOVEaCCR +case 0x44F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) + +// MOVEaCCR +case 0x44F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) + +// MOVEaCCR +case 0x44FA: +{ + u32 adr; + u32 res; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) + +// MOVEaCCR +case 0x44FB: +{ + u32 adr; + u32 res; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) + +// MOVEaCCR +case 0x44FC: +{ + u32 res; + res = FETCH_WORD; + PC += 2; + SET_CCR(res) +} +RET(16) + +// MOVEaCCR +case 0x44DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) + +// MOVEaCCR +case 0x44E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + SET_CCR(res) +} +RET(12) +case 0x46C1: +case 0x46C2: +case 0x46C3: +case 0x46C4: +case 0x46C5: +case 0x46C6: +case 0x46C7: + +// MOVEaSR +case 0x46C0: +{ + u32 res; + if (CPU->flag_S) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; +case 0x46D1: +case 0x46D2: +case 0x46D3: +case 0x46D4: +case 0x46D5: +case 0x46D6: +case 0x46D7: + +// MOVEaSR +case 0x46D0: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; +case 0x46D9: +case 0x46DA: +case 0x46DB: +case 0x46DC: +case 0x46DD: +case 0x46DE: + +// MOVEaSR +case 0x46D8: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; +case 0x46E1: +case 0x46E2: +case 0x46E3: +case 0x46E4: +case 0x46E5: +case 0x46E6: + +// MOVEaSR +case 0x46E0: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; +case 0x46E9: +case 0x46EA: +case 0x46EB: +case 0x46EC: +case 0x46ED: +case 0x46EE: +case 0x46EF: + +// MOVEaSR +case 0x46E8: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; +case 0x46F1: +case 0x46F2: +case 0x46F3: +case 0x46F4: +case 0x46F5: +case 0x46F6: +case 0x46F7: + +// MOVEaSR +case 0x46F0: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46F8: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46F9: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46FA: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46FB: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46FC: +{ + u32 res; + if (CPU->flag_S) + { + res = FETCH_WORD; + PC += 2; + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 16; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46DF: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; + +// MOVEaSR +case 0x46E7: +{ + u32 adr; + u32 res; + if (CPU->flag_S) + { + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + } + else + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +timestamp += 12; +goto C68k_Exec_End; +case 0x4801: +case 0x4802: +case 0x4803: +case 0x4804: +case 0x4805: +case 0x4806: +case 0x4807: + +// NBCD +case 0x4800: +{ + u32 res; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) +case 0x4811: +case 0x4812: +case 0x4813: +case 0x4814: +case 0x4815: +case 0x4816: +case 0x4817: + +// NBCD +case 0x4810: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 2; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) +case 0x4819: +case 0x481A: +case 0x481B: +case 0x481C: +case 0x481D: +case 0x481E: + +// NBCD +case 0x4818: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 2; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) +case 0x4821: +case 0x4822: +case 0x4823: +case 0x4824: +case 0x4825: +case 0x4826: + +// NBCD +case 0x4820: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 4; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) +case 0x4829: +case 0x482A: +case 0x482B: +case 0x482C: +case 0x482D: +case 0x482E: +case 0x482F: + +// NBCD +case 0x4828: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) +case 0x4831: +case 0x4832: +case 0x4833: +case 0x4834: +case 0x4835: +case 0x4836: +case 0x4837: + +// NBCD +case 0x4830: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 8; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) + +// NBCD +case 0x4838: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) + +// NBCD +case 0x4839: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 10; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) + +// NBCD +case 0x481F: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 2; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) + +// NBCD +case 0x4827: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 4; + READ_BYat_F(adr, res) + res = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + + if (res != 0x9a) + { + if ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10; + res &= 0xFF; + WRITE_BYTE_F(adr, res) + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = res; +} +RET(6) +case 0x4851: +case 0x4852: +case 0x4853: +case 0x4854: +case 0x4855: +case 0x4856: +case 0x4857: + +// PEA +case 0x4850: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7]; + PUSH_32_F(adr) +} +RET(12) +case 0x4869: +case 0x486A: +case 0x486B: +case 0x486C: +case 0x486D: +case 0x486E: +case 0x486F: + +// PEA +case 0x4868: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + PUSH_32_F(adr) +} +RET(16) +case 0x4871: +case 0x4872: +case 0x4873: +case 0x4874: +case 0x4875: +case 0x4876: +case 0x4877: + +// PEA +case 0x4870: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + PUSH_32_F(adr) +} +RET(20) + +// PEA +case 0x4878: +{ + u32 adr; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + PUSH_32_F(adr) +} +RET(16) + +// PEA +case 0x4879: +{ + u32 adr; + adr = (s32)FETCH_LONG; + PC += 4; + PUSH_32_F(adr) +} +RET(20) + +// PEA +case 0x487A: +{ + u32 adr; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + PUSH_32_F(adr) +} +RET(16) + +// PEA +case 0x487B: +{ + u32 adr; + adr = PC; + DECODE_EXT_WORD + PUSH_32_F(adr) +} +RET(20) +case 0x4841: +case 0x4842: +case 0x4843: +case 0x4844: +case 0x4845: +case 0x4846: +case 0x4847: + +// SWAP +case 0x4840: +{ + u32 res; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + res = (res >> 16) | (res << 16); + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4891: +case 0x4892: +case 0x4893: +case 0x4894: +case 0x4895: +case 0x4896: +case 0x4897: + +// MOVEMRa +case 0x4890: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(12) +case 0x48A1: +case 0x48A2: +case 0x48A3: +case 0x48A4: +case 0x48A5: +case 0x48A6: + +// MOVEMRa +case 0x48A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 15; + dst = adr; + do + { + if (res & 1) + { + adr -= 2; + WRITE_WOat_F(adr, CPU->DA[src]) + } + src --; + } while (res >>= 1); + CPU->A[(Opcode >> 0) & 7] = adr; +} +RET(8) +case 0x48A9: +case 0x48AA: +case 0x48AB: +case 0x48AC: +case 0x48AD: +case 0x48AE: +case 0x48AF: + +// MOVEMRa +case 0x48A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(20) +case 0x48B1: +case 0x48B2: +case 0x48B3: +case 0x48B4: +case 0x48B5: +case 0x48B6: +case 0x48B7: + +// MOVEMRa +case 0x48B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(24) + +// MOVEMRa +case 0x48B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(20) + +// MOVEMRa +case 0x48B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(28) + +// MOVEMRa +case 0x48A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + src = 15; + dst = adr; + do + { + if (res & 1) + { + adr -= 2; + WRITE_WOat_F(adr, CPU->DA[src]) + } + src --; + } while (res >>= 1); + CPU->A[7] = adr; +} +RET(8) +case 0x48D1: +case 0x48D2: +case 0x48D3: +case 0x48D4: +case 0x48D5: +case 0x48D6: +case 0x48D7: + +// MOVEMRa +case 0x48D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(16) +case 0x48E1: +case 0x48E2: +case 0x48E3: +case 0x48E4: +case 0x48E5: +case 0x48E6: + +// MOVEMRa +case 0x48E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 15; + dst = adr; + do + { + if (res & 1) + { + adr -= 4; + WRITE_LOat_DEC_F(adr, CPU->DA[src]) + } + src --; + } while (res >>= 1); + CPU->A[(Opcode >> 0) & 7] = adr; +} +RET(8) +case 0x48E9: +case 0x48EA: +case 0x48EB: +case 0x48EC: +case 0x48ED: +case 0x48EE: +case 0x48EF: + +// MOVEMRa +case 0x48E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(24) +case 0x48F1: +case 0x48F2: +case 0x48F3: +case 0x48F4: +case 0x48F5: +case 0x48F6: +case 0x48F7: + +// MOVEMRa +case 0x48F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(28) + +// MOVEMRa +case 0x48F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(24) + +// MOVEMRa +case 0x48F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + src = 0; + dst = adr; + do + { + if (res & 1) + { + WRITE_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(32) + +// MOVEMRa +case 0x48E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + src = 15; + dst = adr; + do + { + if (res & 1) + { + adr -= 4; + WRITE_LOat_DEC_F(adr, CPU->DA[src]) + } + src --; + } while (res >>= 1); + CPU->A[7] = adr; +} +RET(8) +case 0x4881: +case 0x4882: +case 0x4883: +case 0x4884: +case 0x4885: +case 0x4886: +case 0x4887: + +// EXT +case 0x4880: +{ + u32 res; + res = (s32)(s8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x48C1: +case 0x48C2: +case 0x48C3: +case 0x48C4: +case 0x48C5: +case 0x48C6: +case 0x48C7: + +// EXT +case 0x48C0: +{ + u32 res; + res = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4A01: +case 0x4A02: +case 0x4A03: +case 0x4A04: +case 0x4A05: +case 0x4A06: +case 0x4A07: + +// TST +case 0x4A00: +{ + u32 res; + timestamp += 4; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) +case 0x4A11: +case 0x4A12: +case 0x4A13: +case 0x4A14: +case 0x4A15: +case 0x4A16: +case 0x4A17: + +// TST +case 0x4A10: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) +case 0x4A19: +case 0x4A1A: +case 0x4A1B: +case 0x4A1C: +case 0x4A1D: +case 0x4A1E: + +// TST +case 0x4A18: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) +case 0x4A21: +case 0x4A22: +case 0x4A23: +case 0x4A24: +case 0x4A25: +case 0x4A26: + +// TST +case 0x4A20: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) +case 0x4A29: +case 0x4A2A: +case 0x4A2B: +case 0x4A2C: +case 0x4A2D: +case 0x4A2E: +case 0x4A2F: + +// TST +case 0x4A28: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) +case 0x4A31: +case 0x4A32: +case 0x4A33: +case 0x4A34: +case 0x4A35: +case 0x4A36: +case 0x4A37: + +// TST +case 0x4A30: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) + +// TST +case 0x4A38: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) + +// TST +case 0x4A39: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) + +// TST +case 0x4A1F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) + +// TST +case 0x4A27: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +} +RET(0) +case 0x4A41: +case 0x4A42: +case 0x4A43: +case 0x4A44: +case 0x4A45: +case 0x4A46: +case 0x4A47: + +// TST +case 0x4A40: +{ + u32 res; + timestamp += 4; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) +case 0x4A51: +case 0x4A52: +case 0x4A53: +case 0x4A54: +case 0x4A55: +case 0x4A56: +case 0x4A57: + +// TST +case 0x4A50: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) +case 0x4A59: +case 0x4A5A: +case 0x4A5B: +case 0x4A5C: +case 0x4A5D: +case 0x4A5E: + +// TST +case 0x4A58: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) +case 0x4A61: +case 0x4A62: +case 0x4A63: +case 0x4A64: +case 0x4A65: +case 0x4A66: + +// TST +case 0x4A60: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) +case 0x4A69: +case 0x4A6A: +case 0x4A6B: +case 0x4A6C: +case 0x4A6D: +case 0x4A6E: +case 0x4A6F: + +// TST +case 0x4A68: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) +case 0x4A71: +case 0x4A72: +case 0x4A73: +case 0x4A74: +case 0x4A75: +case 0x4A76: +case 0x4A77: + +// TST +case 0x4A70: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) + +// TST +case 0x4A78: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) + +// TST +case 0x4A79: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) + +// TST +case 0x4A5F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) + +// TST +case 0x4A67: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; +} +RET(0) +case 0x4A81: +case 0x4A82: +case 0x4A83: +case 0x4A84: +case 0x4A85: +case 0x4A86: +case 0x4A87: + +// TST +case 0x4A80: +{ + u32 res; + timestamp += 4; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x4A91: +case 0x4A92: +case 0x4A93: +case 0x4A94: +case 0x4A95: +case 0x4A96: +case 0x4A97: + +// TST +case 0x4A90: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x4A99: +case 0x4A9A: +case 0x4A9B: +case 0x4A9C: +case 0x4A9D: +case 0x4A9E: + +// TST +case 0x4A98: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x4AA1: +case 0x4AA2: +case 0x4AA3: +case 0x4AA4: +case 0x4AA5: +case 0x4AA6: + +// TST +case 0x4AA0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x4AA9: +case 0x4AAA: +case 0x4AAB: +case 0x4AAC: +case 0x4AAD: +case 0x4AAE: +case 0x4AAF: + +// TST +case 0x4AA8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x4AB1: +case 0x4AB2: +case 0x4AB3: +case 0x4AB4: +case 0x4AB5: +case 0x4AB6: +case 0x4AB7: + +// TST +case 0x4AB0: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) + +// TST +case 0x4AB8: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) + +// TST +case 0x4AB9: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) + +// TST +case 0x4A9F: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) + +// TST +case 0x4AA7: +{ + u32 adr; + u32 res; + timestamp += 4; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; +} +RET(0) +case 0x4AC1: +case 0x4AC2: +case 0x4AC3: +case 0x4AC4: +case 0x4AC5: +case 0x4AC6: +case 0x4AC7: + +// TAS +case 0x4AC0: +{ + u32 res; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + res |= 0x80; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x4AD1: +case 0x4AD2: +case 0x4AD3: +case 0x4AD4: +case 0x4AD5: +case 0x4AD6: +case 0x4AD7: + +// TAS +case 0x4AD0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) +case 0x4AD9: +case 0x4ADA: +case 0x4ADB: +case 0x4ADC: +case 0x4ADD: +case 0x4ADE: + +// TAS +case 0x4AD8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) +case 0x4AE1: +case 0x4AE2: +case 0x4AE3: +case 0x4AE4: +case 0x4AE5: +case 0x4AE6: + +// TAS +case 0x4AE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) +case 0x4AE9: +case 0x4AEA: +case 0x4AEB: +case 0x4AEC: +case 0x4AED: +case 0x4AEE: +case 0x4AEF: + +// TAS +case 0x4AE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) +case 0x4AF1: +case 0x4AF2: +case 0x4AF3: +case 0x4AF4: +case 0x4AF5: +case 0x4AF6: +case 0x4AF7: + +// TAS +case 0x4AF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) + +// TAS +case 0x4AF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) + +// TAS +case 0x4AF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) + +// TAS +case 0x4ADF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) + +// TAS +case 0x4AE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; +if(!CPU->TAS_Hack) +{ + res |= 0x80; + WRITE_BYTE_F(adr, res) +} +} +RET(4) +default: + +// ILLEGAL +case 0x4AFC: +{ + u32 res; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ILLEGAL_INSTRUCTION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) +} +RET(4) +case 0x4C91: +case 0x4C92: +case 0x4C93: +case 0x4C94: +case 0x4C95: +case 0x4C96: +case 0x4C97: + +// MOVEMaR +case 0x4C90: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(16) +case 0x4C99: +case 0x4C9A: +case 0x4C9B: +case 0x4C9C: +case 0x4C9D: +case 0x4C9E: + +// MOVEMaR +case 0x4C98: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); + CPU->A[(Opcode >> 0) & 7] = adr; +} +RET(12) +case 0x4CA9: +case 0x4CAA: +case 0x4CAB: +case 0x4CAC: +case 0x4CAD: +case 0x4CAE: +case 0x4CAF: + +// MOVEMaR +case 0x4CA8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(24) +case 0x4CB1: +case 0x4CB2: +case 0x4CB3: +case 0x4CB4: +case 0x4CB5: +case 0x4CB6: +case 0x4CB7: + +// MOVEMaR +case 0x4CB0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(28) + +// MOVEMaR +case 0x4CB8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(24) + +// MOVEMaR +case 0x4CB9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(32) + +// MOVEMaR +case 0x4CBA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(24) + +// MOVEMaR +case 0x4CBB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = PC; + DECODE_EXT_WORD + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); +} +RET(28) + +// MOVEMaR +case 0x4C9F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READSX_WOat_F(adr, CPU->DA[src]) + adr += 2; + } + src ++; + } while (res >>= 1); + CPU->A[7] = adr; +} +RET(12) +case 0x4CD1: +case 0x4CD2: +case 0x4CD3: +case 0x4CD4: +case 0x4CD5: +case 0x4CD6: +case 0x4CD7: + +// MOVEMaR +case 0x4CD0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(20) +case 0x4CD9: +case 0x4CDA: +case 0x4CDB: +case 0x4CDC: +case 0x4CDD: +case 0x4CDE: + +// MOVEMaR +case 0x4CD8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); + CPU->A[(Opcode >> 0) & 7] = adr; +} +RET(12) +case 0x4CE9: +case 0x4CEA: +case 0x4CEB: +case 0x4CEC: +case 0x4CED: +case 0x4CEE: +case 0x4CEF: + +// MOVEMaR +case 0x4CE8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(28) +case 0x4CF1: +case 0x4CF2: +case 0x4CF3: +case 0x4CF4: +case 0x4CF5: +case 0x4CF6: +case 0x4CF7: + +// MOVEMaR +case 0x4CF0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(32) + +// MOVEMaR +case 0x4CF8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(28) + +// MOVEMaR +case 0x4CF9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = (s32)FETCH_LONG; + PC += 4; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(36) + +// MOVEMaR +case 0x4CFA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(28) + +// MOVEMaR +case 0x4CFB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = PC; + DECODE_EXT_WORD + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); +} +RET(32) + +// MOVEMaR +case 0x4CDF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + res = FETCH_WORD; + PC += 2; + adr = CPU->A[7]; + src = 0; + dst = adr; + do + { + if (res & 1) + { + READ_LOat_F(adr, CPU->DA[src]) + adr += 4; + } + src ++; + } while (res >>= 1); + CPU->A[7] = adr; +} +RET(12) +case 0x4E41: +case 0x4E42: +case 0x4E43: +case 0x4E44: +case 0x4E45: +case 0x4E46: +case 0x4E47: +case 0x4E48: +case 0x4E49: +case 0x4E4A: +case 0x4E4B: +case 0x4E4C: +case 0x4E4D: +case 0x4E4E: +case 0x4E4F: + +// TRAP +case 0x4E40: +{ + u32 res; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_TRAP_BASE_EX + (Opcode & 0xF); + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) +} +RET(4) +case 0x4E51: +case 0x4E52: +case 0x4E53: +case 0x4E54: +case 0x4E55: +case 0x4E56: + +// LINK +case 0x4E50: +{ + u32 res; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + PUSH_32_F(res) + res = CPU->A[7]; + CPU->A[(Opcode >> 0) & 7] = res; + CPU->A[7] += (s32)(s16)FETCH_WORD; + PC += 2; +} +RET(16) + +// LINKA7 +case 0x4E57: +{ + CPU->A[7] -= 4; + WRITE_LONG_DEC_F(CPU->A[7], CPU->A[7]) + CPU->A[7] += (s32)(s16)FETCH_WORD; + PC += 2; +} +RET(16) +case 0x4E59: +case 0x4E5A: +case 0x4E5B: +case 0x4E5C: +case 0x4E5D: +case 0x4E5E: + +// ULNK +case 0x4E58: +{ + u32 res; + u32 src; + src = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->A[7] = src + 4; + READ_LONG_F(src, res) + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(12) + +// ULNKA7 +case 0x4E5F: +{ + READ_LONG_F(CPU->A[7], CPU->A[7]) +} +RET(12) +case 0x4E61: +case 0x4E62: +case 0x4E63: +case 0x4E64: +case 0x4E65: +case 0x4E66: +case 0x4E67: + +// MOVEAUSP +case 0x4E60: +{ + u32 res; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(4) + } + res = (u32)CPU->A[(Opcode >> 0) & 7]; + CPU->USP = res; +} +RET(4) +case 0x4E69: +case 0x4E6A: +case 0x4E6B: +case 0x4E6C: +case 0x4E6D: +case 0x4E6E: +case 0x4E6F: + +// MOVEUSPA +case 0x4E68: +{ + u32 res; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(4) + } + res = CPU->USP; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(4) + +// RESET +case 0x4E70: +{ + u32 res; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(4) + } + CPU->Reset_CallBack(); +} +RET(132) + +// NOP +case 0x4E71: +{ +} +RET(4) + +// STOP +case 0x4E72: +{ + u32 res; + if (!CPU->flag_S) + { + PC += 2; + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(4) + } + res = FETCH_WORD & C68K_SR_MASK; + PC += 2; + SET_SR(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } + CPU->Status |= C68K_HALTED; +} +timestamp += 4; +goto C68k_Exec_End; + +// RTE +case 0x4E73: +{ + u32 res; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + res = C68K_PRIVILEGE_VIOLATION_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(4) + } + POP_16_F(res) + SET_SR(res) + POP_32_F(res) + SET_PC(res) + if (!CPU->flag_S) + { + res = CPU->A[7]; + CPU->A[7] = CPU->USP; + CPU->USP = res; + } +} +timestamp += 20; +goto C68k_Exec_End; + +// RTS +case 0x4E75: +{ + u32 res; + POP_32_F(res) + SET_PC(res) +} +RET(16) + +// TRAPV +case 0x4E76: +{ + u32 res; + if (CPU->flag_V & 0x80) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_TRAPV_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(4) + +// RTR +case 0x4E77: +{ + u32 res; + POP_16_F(res) + SET_CCR(res) + POP_32_F(res) + SET_PC(res) +} +RET(20) +case 0x4E91: +case 0x4E92: +case 0x4E93: +case 0x4E94: +case 0x4E95: +case 0x4E96: +case 0x4E97: + +// JSR +case 0x4E90: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7]; + PUSH_32_F(PC) + SET_PC(adr) +} +RET(16) +case 0x4EA9: +case 0x4EAA: +case 0x4EAB: +case 0x4EAC: +case 0x4EAD: +case 0x4EAE: +case 0x4EAF: + +// JSR +case 0x4EA8: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + PUSH_32_F(PC) + SET_PC(adr) +} +RET(18) +case 0x4EB1: +case 0x4EB2: +case 0x4EB3: +case 0x4EB4: +case 0x4EB5: +case 0x4EB6: +case 0x4EB7: + +// JSR +case 0x4EB0: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + PUSH_32_F(PC) + SET_PC(adr) +} +RET(22) + +// JSR +case 0x4EB8: +{ + u32 adr; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + PUSH_32_F(PC) + SET_PC(adr) +} +RET(18) + +// JSR +case 0x4EB9: +{ + u32 adr; + adr = (s32)FETCH_LONG; + PC += 4; + PUSH_32_F(PC) + SET_PC(adr) +} +RET(20) + +// JSR +case 0x4EBA: +{ + u32 adr; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + PUSH_32_F(PC) + SET_PC(adr) +} +RET(18) + +// JSR +case 0x4EBB: +{ + u32 adr; + adr = PC; + DECODE_EXT_WORD + PUSH_32_F(PC) + SET_PC(adr) +} +RET(22) +case 0x4ED1: +case 0x4ED2: +case 0x4ED3: +case 0x4ED4: +case 0x4ED5: +case 0x4ED6: +case 0x4ED7: + +// JMP +case 0x4ED0: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7]; + SET_PC(adr) +} +RET(8) +case 0x4EE9: +case 0x4EEA: +case 0x4EEB: +case 0x4EEC: +case 0x4EED: +case 0x4EEE: +case 0x4EEF: + +// JMP +case 0x4EE8: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + SET_PC(adr) +} +RET(10) +case 0x4EF1: +case 0x4EF2: +case 0x4EF3: +case 0x4EF4: +case 0x4EF5: +case 0x4EF6: +case 0x4EF7: + +// JMP +case 0x4EF0: +{ + u32 adr; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + SET_PC(adr) +} +RET(14) + +// JMP +case 0x4EF8: +{ + u32 adr; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + SET_PC(adr) +} +RET(10) + +// JMP +case 0x4EF9: +{ + u32 adr; + adr = (s32)FETCH_LONG; + PC += 4; + SET_PC(adr) +} +RET(12) + +// JMP +case 0x4EFA: +{ + u32 adr; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + SET_PC(adr) +} +RET(10) + +// JMP +case 0x4EFB: +{ + u32 adr; + adr = PC; + DECODE_EXT_WORD + SET_PC(adr) +} +RET(14) +case 0x4380: +case 0x4580: +case 0x4780: +case 0x4980: +case 0x4B80: +case 0x4D80: +case 0x4F80: +case 0x4181: +case 0x4381: +case 0x4581: +case 0x4781: +case 0x4981: +case 0x4B81: +case 0x4D81: +case 0x4F81: +case 0x4182: +case 0x4382: +case 0x4582: +case 0x4782: +case 0x4982: +case 0x4B82: +case 0x4D82: +case 0x4F82: +case 0x4183: +case 0x4383: +case 0x4583: +case 0x4783: +case 0x4983: +case 0x4B83: +case 0x4D83: +case 0x4F83: +case 0x4184: +case 0x4384: +case 0x4584: +case 0x4784: +case 0x4984: +case 0x4B84: +case 0x4D84: +case 0x4F84: +case 0x4185: +case 0x4385: +case 0x4585: +case 0x4785: +case 0x4985: +case 0x4B85: +case 0x4D85: +case 0x4F85: +case 0x4186: +case 0x4386: +case 0x4586: +case 0x4786: +case 0x4986: +case 0x4B86: +case 0x4D86: +case 0x4F86: +case 0x4187: +case 0x4387: +case 0x4587: +case 0x4787: +case 0x4987: +case 0x4B87: +case 0x4D87: +case 0x4F87: + +// CHK +case 0x4180: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x4390: +case 0x4590: +case 0x4790: +case 0x4990: +case 0x4B90: +case 0x4D90: +case 0x4F90: +case 0x4191: +case 0x4391: +case 0x4591: +case 0x4791: +case 0x4991: +case 0x4B91: +case 0x4D91: +case 0x4F91: +case 0x4192: +case 0x4392: +case 0x4592: +case 0x4792: +case 0x4992: +case 0x4B92: +case 0x4D92: +case 0x4F92: +case 0x4193: +case 0x4393: +case 0x4593: +case 0x4793: +case 0x4993: +case 0x4B93: +case 0x4D93: +case 0x4F93: +case 0x4194: +case 0x4394: +case 0x4594: +case 0x4794: +case 0x4994: +case 0x4B94: +case 0x4D94: +case 0x4F94: +case 0x4195: +case 0x4395: +case 0x4595: +case 0x4795: +case 0x4995: +case 0x4B95: +case 0x4D95: +case 0x4F95: +case 0x4196: +case 0x4396: +case 0x4596: +case 0x4796: +case 0x4996: +case 0x4B96: +case 0x4D96: +case 0x4F96: +case 0x4197: +case 0x4397: +case 0x4597: +case 0x4797: +case 0x4997: +case 0x4B97: +case 0x4D97: +case 0x4F97: + +// CHK +case 0x4190: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x4398: +case 0x4598: +case 0x4798: +case 0x4998: +case 0x4B98: +case 0x4D98: +case 0x4F98: +case 0x4199: +case 0x4399: +case 0x4599: +case 0x4799: +case 0x4999: +case 0x4B99: +case 0x4D99: +case 0x4F99: +case 0x419A: +case 0x439A: +case 0x459A: +case 0x479A: +case 0x499A: +case 0x4B9A: +case 0x4D9A: +case 0x4F9A: +case 0x419B: +case 0x439B: +case 0x459B: +case 0x479B: +case 0x499B: +case 0x4B9B: +case 0x4D9B: +case 0x4F9B: +case 0x419C: +case 0x439C: +case 0x459C: +case 0x479C: +case 0x499C: +case 0x4B9C: +case 0x4D9C: +case 0x4F9C: +case 0x419D: +case 0x439D: +case 0x459D: +case 0x479D: +case 0x499D: +case 0x4B9D: +case 0x4D9D: +case 0x4F9D: +case 0x419E: +case 0x439E: +case 0x459E: +case 0x479E: +case 0x499E: +case 0x4B9E: +case 0x4D9E: +case 0x4F9E: + +// CHK +case 0x4198: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43A0: +case 0x45A0: +case 0x47A0: +case 0x49A0: +case 0x4BA0: +case 0x4DA0: +case 0x4FA0: +case 0x41A1: +case 0x43A1: +case 0x45A1: +case 0x47A1: +case 0x49A1: +case 0x4BA1: +case 0x4DA1: +case 0x4FA1: +case 0x41A2: +case 0x43A2: +case 0x45A2: +case 0x47A2: +case 0x49A2: +case 0x4BA2: +case 0x4DA2: +case 0x4FA2: +case 0x41A3: +case 0x43A3: +case 0x45A3: +case 0x47A3: +case 0x49A3: +case 0x4BA3: +case 0x4DA3: +case 0x4FA3: +case 0x41A4: +case 0x43A4: +case 0x45A4: +case 0x47A4: +case 0x49A4: +case 0x4BA4: +case 0x4DA4: +case 0x4FA4: +case 0x41A5: +case 0x43A5: +case 0x45A5: +case 0x47A5: +case 0x49A5: +case 0x4BA5: +case 0x4DA5: +case 0x4FA5: +case 0x41A6: +case 0x43A6: +case 0x45A6: +case 0x47A6: +case 0x49A6: +case 0x4BA6: +case 0x4DA6: +case 0x4FA6: + +// CHK +case 0x41A0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43A8: +case 0x45A8: +case 0x47A8: +case 0x49A8: +case 0x4BA8: +case 0x4DA8: +case 0x4FA8: +case 0x41A9: +case 0x43A9: +case 0x45A9: +case 0x47A9: +case 0x49A9: +case 0x4BA9: +case 0x4DA9: +case 0x4FA9: +case 0x41AA: +case 0x43AA: +case 0x45AA: +case 0x47AA: +case 0x49AA: +case 0x4BAA: +case 0x4DAA: +case 0x4FAA: +case 0x41AB: +case 0x43AB: +case 0x45AB: +case 0x47AB: +case 0x49AB: +case 0x4BAB: +case 0x4DAB: +case 0x4FAB: +case 0x41AC: +case 0x43AC: +case 0x45AC: +case 0x47AC: +case 0x49AC: +case 0x4BAC: +case 0x4DAC: +case 0x4FAC: +case 0x41AD: +case 0x43AD: +case 0x45AD: +case 0x47AD: +case 0x49AD: +case 0x4BAD: +case 0x4DAD: +case 0x4FAD: +case 0x41AE: +case 0x43AE: +case 0x45AE: +case 0x47AE: +case 0x49AE: +case 0x4BAE: +case 0x4DAE: +case 0x4FAE: +case 0x41AF: +case 0x43AF: +case 0x45AF: +case 0x47AF: +case 0x49AF: +case 0x4BAF: +case 0x4DAF: +case 0x4FAF: + +// CHK +case 0x41A8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43B0: +case 0x45B0: +case 0x47B0: +case 0x49B0: +case 0x4BB0: +case 0x4DB0: +case 0x4FB0: +case 0x41B1: +case 0x43B1: +case 0x45B1: +case 0x47B1: +case 0x49B1: +case 0x4BB1: +case 0x4DB1: +case 0x4FB1: +case 0x41B2: +case 0x43B2: +case 0x45B2: +case 0x47B2: +case 0x49B2: +case 0x4BB2: +case 0x4DB2: +case 0x4FB2: +case 0x41B3: +case 0x43B3: +case 0x45B3: +case 0x47B3: +case 0x49B3: +case 0x4BB3: +case 0x4DB3: +case 0x4FB3: +case 0x41B4: +case 0x43B4: +case 0x45B4: +case 0x47B4: +case 0x49B4: +case 0x4BB4: +case 0x4DB4: +case 0x4FB4: +case 0x41B5: +case 0x43B5: +case 0x45B5: +case 0x47B5: +case 0x49B5: +case 0x4BB5: +case 0x4DB5: +case 0x4FB5: +case 0x41B6: +case 0x43B6: +case 0x45B6: +case 0x47B6: +case 0x49B6: +case 0x4BB6: +case 0x4DB6: +case 0x4FB6: +case 0x41B7: +case 0x43B7: +case 0x45B7: +case 0x47B7: +case 0x49B7: +case 0x4BB7: +case 0x4DB7: +case 0x4FB7: + +// CHK +case 0x41B0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43B8: +case 0x45B8: +case 0x47B8: +case 0x49B8: +case 0x4BB8: +case 0x4DB8: +case 0x4FB8: + +// CHK +case 0x41B8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43B9: +case 0x45B9: +case 0x47B9: +case 0x49B9: +case 0x4BB9: +case 0x4DB9: +case 0x4FB9: + +// CHK +case 0x41B9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43BA: +case 0x45BA: +case 0x47BA: +case 0x49BA: +case 0x4BBA: +case 0x4DBA: +case 0x4FBA: + +// CHK +case 0x41BA: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43BB: +case 0x45BB: +case 0x47BB: +case 0x49BB: +case 0x4BBB: +case 0x4DBB: +case 0x4FBB: + +// CHK +case 0x41BB: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43BC: +case 0x45BC: +case 0x47BC: +case 0x49BC: +case 0x4BBC: +case 0x4DBC: +case 0x4FBC: + +// CHK +case 0x41BC: +{ + u32 res; + u32 src; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(14) +case 0x439F: +case 0x459F: +case 0x479F: +case 0x499F: +case 0x4B9F: +case 0x4D9F: +case 0x4F9F: + +// CHK +case 0x419F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43A7: +case 0x45A7: +case 0x47A7: +case 0x49A7: +case 0x4BA7: +case 0x4DA7: +case 0x4FA7: + +// CHK +case 0x41A7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + if (((s32)res < 0) || (res > src)) + { + CPU->flag_N = res >> 8; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_CHK_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + } +} +RET(10) +case 0x43D0: +case 0x45D0: +case 0x47D0: +case 0x49D0: +case 0x4BD0: +case 0x4DD0: +case 0x4FD0: +case 0x41D1: +case 0x43D1: +case 0x45D1: +case 0x47D1: +case 0x49D1: +case 0x4BD1: +case 0x4DD1: +case 0x4FD1: +case 0x41D2: +case 0x43D2: +case 0x45D2: +case 0x47D2: +case 0x49D2: +case 0x4BD2: +case 0x4DD2: +case 0x4FD2: +case 0x41D3: +case 0x43D3: +case 0x45D3: +case 0x47D3: +case 0x49D3: +case 0x4BD3: +case 0x4DD3: +case 0x4FD3: +case 0x41D4: +case 0x43D4: +case 0x45D4: +case 0x47D4: +case 0x49D4: +case 0x4BD4: +case 0x4DD4: +case 0x4FD4: +case 0x41D5: +case 0x43D5: +case 0x45D5: +case 0x47D5: +case 0x49D5: +case 0x4BD5: +case 0x4DD5: +case 0x4FD5: +case 0x41D6: +case 0x43D6: +case 0x45D6: +case 0x47D6: +case 0x49D6: +case 0x4BD6: +case 0x4DD6: +case 0x4FD6: +case 0x41D7: +case 0x43D7: +case 0x45D7: +case 0x47D7: +case 0x49D7: +case 0x4BD7: +case 0x4DD7: +case 0x4FD7: + +// LEA +case 0x41D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(4) +case 0x43E8: +case 0x45E8: +case 0x47E8: +case 0x49E8: +case 0x4BE8: +case 0x4DE8: +case 0x4FE8: +case 0x41E9: +case 0x43E9: +case 0x45E9: +case 0x47E9: +case 0x49E9: +case 0x4BE9: +case 0x4DE9: +case 0x4FE9: +case 0x41EA: +case 0x43EA: +case 0x45EA: +case 0x47EA: +case 0x49EA: +case 0x4BEA: +case 0x4DEA: +case 0x4FEA: +case 0x41EB: +case 0x43EB: +case 0x45EB: +case 0x47EB: +case 0x49EB: +case 0x4BEB: +case 0x4DEB: +case 0x4FEB: +case 0x41EC: +case 0x43EC: +case 0x45EC: +case 0x47EC: +case 0x49EC: +case 0x4BEC: +case 0x4DEC: +case 0x4FEC: +case 0x41ED: +case 0x43ED: +case 0x45ED: +case 0x47ED: +case 0x49ED: +case 0x4BED: +case 0x4DED: +case 0x4FED: +case 0x41EE: +case 0x43EE: +case 0x45EE: +case 0x47EE: +case 0x49EE: +case 0x4BEE: +case 0x4DEE: +case 0x4FEE: +case 0x41EF: +case 0x43EF: +case 0x45EF: +case 0x47EF: +case 0x49EF: +case 0x4BEF: +case 0x4DEF: +case 0x4FEF: + +// LEA +case 0x41E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0x43F0: +case 0x45F0: +case 0x47F0: +case 0x49F0: +case 0x4BF0: +case 0x4DF0: +case 0x4FF0: +case 0x41F1: +case 0x43F1: +case 0x45F1: +case 0x47F1: +case 0x49F1: +case 0x4BF1: +case 0x4DF1: +case 0x4FF1: +case 0x41F2: +case 0x43F2: +case 0x45F2: +case 0x47F2: +case 0x49F2: +case 0x4BF2: +case 0x4DF2: +case 0x4FF2: +case 0x41F3: +case 0x43F3: +case 0x45F3: +case 0x47F3: +case 0x49F3: +case 0x4BF3: +case 0x4DF3: +case 0x4FF3: +case 0x41F4: +case 0x43F4: +case 0x45F4: +case 0x47F4: +case 0x49F4: +case 0x4BF4: +case 0x4DF4: +case 0x4FF4: +case 0x41F5: +case 0x43F5: +case 0x45F5: +case 0x47F5: +case 0x49F5: +case 0x4BF5: +case 0x4DF5: +case 0x4FF5: +case 0x41F6: +case 0x43F6: +case 0x45F6: +case 0x47F6: +case 0x49F6: +case 0x4BF6: +case 0x4DF6: +case 0x4FF6: +case 0x41F7: +case 0x43F7: +case 0x45F7: +case 0x47F7: +case 0x49F7: +case 0x4BF7: +case 0x4DF7: +case 0x4FF7: + +// LEA +case 0x41F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(12) +case 0x43F8: +case 0x45F8: +case 0x47F8: +case 0x49F8: +case 0x4BF8: +case 0x4DF8: +case 0x4FF8: + +// LEA +case 0x41F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0x43F9: +case 0x45F9: +case 0x47F9: +case 0x49F9: +case 0x4BF9: +case 0x4DF9: +case 0x4FF9: + +// LEA +case 0x41F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(12) +case 0x43FA: +case 0x45FA: +case 0x47FA: +case 0x49FA: +case 0x4BFA: +case 0x4DFA: +case 0x4FFA: + +// LEA +case 0x41FA: +{ + u32 adr; + u32 res; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0x43FB: +case 0x45FB: +case 0x47FB: +case 0x49FB: +case 0x4BFB: +case 0x4DFB: +case 0x4FFB: + +// LEA +case 0x41FB: +{ + u32 adr; + u32 res; + adr = PC; + DECODE_EXT_WORD + res = adr; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(12) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op5.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op5.inc new file mode 100644 index 0000000000..09f7c07982 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op5.inc @@ -0,0 +1,7801 @@ +case 0x50C1: +case 0x50C2: +case 0x50C3: +case 0x50C4: +case 0x50C5: +case 0x50C6: +case 0x50C7: + +// STCC +case 0x50C0: +{ + u32 res; + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) +} +case 0x51C1: +case 0x51C2: +case 0x51C3: +case 0x51C4: +case 0x51C5: +case 0x51C6: +case 0x51C7: + +// STCC +case 0x51C0: +{ + u32 res; + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x52C1: +case 0x52C2: +case 0x52C3: +case 0x52C4: +case 0x52C5: +case 0x52C6: +case 0x52C7: + +// STCC +case 0x52C0: +{ + u32 res; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x53C1: +case 0x53C2: +case 0x53C3: +case 0x53C4: +case 0x53C5: +case 0x53C6: +case 0x53C7: + +// STCC +case 0x53C0: +{ + u32 res; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x54C1: +case 0x54C2: +case 0x54C3: +case 0x54C4: +case 0x54C5: +case 0x54C6: +case 0x54C7: + +// STCC +case 0x54C0: +{ + u32 res; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x55C1: +case 0x55C2: +case 0x55C3: +case 0x55C4: +case 0x55C5: +case 0x55C6: +case 0x55C7: + +// STCC +case 0x55C0: +{ + u32 res; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x56C1: +case 0x56C2: +case 0x56C3: +case 0x56C4: +case 0x56C5: +case 0x56C6: +case 0x56C7: + +// STCC +case 0x56C0: +{ + u32 res; + if (CPU->flag_notZ) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x57C1: +case 0x57C2: +case 0x57C3: +case 0x57C4: +case 0x57C5: +case 0x57C6: +case 0x57C7: + +// STCC +case 0x57C0: +{ + u32 res; + if (!CPU->flag_notZ) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x58C1: +case 0x58C2: +case 0x58C3: +case 0x58C4: +case 0x58C5: +case 0x58C6: +case 0x58C7: + +// STCC +case 0x58C0: +{ + u32 res; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x59C1: +case 0x59C2: +case 0x59C3: +case 0x59C4: +case 0x59C5: +case 0x59C6: +case 0x59C7: + +// STCC +case 0x59C0: +{ + u32 res; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x5AC1: +case 0x5AC2: +case 0x5AC3: +case 0x5AC4: +case 0x5AC5: +case 0x5AC6: +case 0x5AC7: + +// STCC +case 0x5AC0: +{ + u32 res; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x5BC1: +case 0x5BC2: +case 0x5BC3: +case 0x5BC4: +case 0x5BC5: +case 0x5BC6: +case 0x5BC7: + +// STCC +case 0x5BC0: +{ + u32 res; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x5CC1: +case 0x5CC2: +case 0x5CC3: +case 0x5CC4: +case 0x5CC5: +case 0x5CC6: +case 0x5CC7: + +// STCC +case 0x5CC0: +{ + u32 res; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x5DC1: +case 0x5DC2: +case 0x5DC3: +case 0x5DC4: +case 0x5DC5: +case 0x5DC6: +case 0x5DC7: + +// STCC +case 0x5DC0: +{ + u32 res; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x5EC1: +case 0x5EC2: +case 0x5EC3: +case 0x5EC4: +case 0x5EC5: +case 0x5EC6: +case 0x5EC7: + +// STCC +case 0x5EC0: +{ + u32 res; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x5FC1: +case 0x5FC2: +case 0x5FC3: +case 0x5FC4: +case 0x5FC5: +case 0x5FC6: +case 0x5FC7: + +// STCC +case 0x5FC0: +{ + u32 res; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(4) +} +case 0x50D1: +case 0x50D2: +case 0x50D3: +case 0x50D4: +case 0x50D5: +case 0x50D6: +case 0x50D7: + +// STCC +case 0x50D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x51D1: +case 0x51D2: +case 0x51D3: +case 0x51D4: +case 0x51D5: +case 0x51D6: +case 0x51D7: + +// STCC +case 0x51D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + res = 0; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x52D1: +case 0x52D2: +case 0x52D3: +case 0x52D4: +case 0x52D5: +case 0x52D6: +case 0x52D7: + +// STCC +case 0x52D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x53D1: +case 0x53D2: +case 0x53D3: +case 0x53D4: +case 0x53D5: +case 0x53D6: +case 0x53D7: + +// STCC +case 0x53D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x54D1: +case 0x54D2: +case 0x54D3: +case 0x54D4: +case 0x54D5: +case 0x54D6: +case 0x54D7: + +// STCC +case 0x54D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x55D1: +case 0x55D2: +case 0x55D3: +case 0x55D4: +case 0x55D5: +case 0x55D6: +case 0x55D7: + +// STCC +case 0x55D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x56D1: +case 0x56D2: +case 0x56D3: +case 0x56D4: +case 0x56D5: +case 0x56D6: +case 0x56D7: + +// STCC +case 0x56D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x57D1: +case 0x57D2: +case 0x57D3: +case 0x57D4: +case 0x57D5: +case 0x57D6: +case 0x57D7: + +// STCC +case 0x57D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x58D1: +case 0x58D2: +case 0x58D3: +case 0x58D4: +case 0x58D5: +case 0x58D6: +case 0x58D7: + +// STCC +case 0x58D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x59D1: +case 0x59D2: +case 0x59D3: +case 0x59D4: +case 0x59D5: +case 0x59D6: +case 0x59D7: + +// STCC +case 0x59D0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5AD1: +case 0x5AD2: +case 0x5AD3: +case 0x5AD4: +case 0x5AD5: +case 0x5AD6: +case 0x5AD7: + +// STCC +case 0x5AD0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5BD1: +case 0x5BD2: +case 0x5BD3: +case 0x5BD4: +case 0x5BD5: +case 0x5BD6: +case 0x5BD7: + +// STCC +case 0x5BD0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5CD1: +case 0x5CD2: +case 0x5CD3: +case 0x5CD4: +case 0x5CD5: +case 0x5CD6: +case 0x5CD7: + +// STCC +case 0x5CD0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5DD1: +case 0x5DD2: +case 0x5DD3: +case 0x5DD4: +case 0x5DD5: +case 0x5DD6: +case 0x5DD7: + +// STCC +case 0x5DD0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5ED1: +case 0x5ED2: +case 0x5ED3: +case 0x5ED4: +case 0x5ED5: +case 0x5ED6: +case 0x5ED7: + +// STCC +case 0x5ED0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5FD1: +case 0x5FD2: +case 0x5FD3: +case 0x5FD4: +case 0x5FD5: +case 0x5FD6: +case 0x5FD7: + +// STCC +case 0x5FD0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x50D9: +case 0x50DA: +case 0x50DB: +case 0x50DC: +case 0x50DD: +case 0x50DE: + +// STCC +case 0x50D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x51D9: +case 0x51DA: +case 0x51DB: +case 0x51DC: +case 0x51DD: +case 0x51DE: + +// STCC +case 0x51D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + res = 0; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x52D9: +case 0x52DA: +case 0x52DB: +case 0x52DC: +case 0x52DD: +case 0x52DE: + +// STCC +case 0x52D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x53D9: +case 0x53DA: +case 0x53DB: +case 0x53DC: +case 0x53DD: +case 0x53DE: + +// STCC +case 0x53D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x54D9: +case 0x54DA: +case 0x54DB: +case 0x54DC: +case 0x54DD: +case 0x54DE: + +// STCC +case 0x54D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x55D9: +case 0x55DA: +case 0x55DB: +case 0x55DC: +case 0x55DD: +case 0x55DE: + +// STCC +case 0x55D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x56D9: +case 0x56DA: +case 0x56DB: +case 0x56DC: +case 0x56DD: +case 0x56DE: + +// STCC +case 0x56D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x57D9: +case 0x57DA: +case 0x57DB: +case 0x57DC: +case 0x57DD: +case 0x57DE: + +// STCC +case 0x57D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x58D9: +case 0x58DA: +case 0x58DB: +case 0x58DC: +case 0x58DD: +case 0x58DE: + +// STCC +case 0x58D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x59D9: +case 0x59DA: +case 0x59DB: +case 0x59DC: +case 0x59DD: +case 0x59DE: + +// STCC +case 0x59D8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5AD9: +case 0x5ADA: +case 0x5ADB: +case 0x5ADC: +case 0x5ADD: +case 0x5ADE: + +// STCC +case 0x5AD8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5BD9: +case 0x5BDA: +case 0x5BDB: +case 0x5BDC: +case 0x5BDD: +case 0x5BDE: + +// STCC +case 0x5BD8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5CD9: +case 0x5CDA: +case 0x5CDB: +case 0x5CDC: +case 0x5CDD: +case 0x5CDE: + +// STCC +case 0x5CD8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5DD9: +case 0x5DDA: +case 0x5DDB: +case 0x5DDC: +case 0x5DDD: +case 0x5DDE: + +// STCC +case 0x5DD8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5ED9: +case 0x5EDA: +case 0x5EDB: +case 0x5EDC: +case 0x5EDD: +case 0x5EDE: + +// STCC +case 0x5ED8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5FD9: +case 0x5FDA: +case 0x5FDB: +case 0x5FDC: +case 0x5FDD: +case 0x5FDE: + +// STCC +case 0x5FD8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x50E1: +case 0x50E2: +case 0x50E3: +case 0x50E4: +case 0x50E5: +case 0x50E6: + +// STCC +case 0x50E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x51E1: +case 0x51E2: +case 0x51E3: +case 0x51E4: +case 0x51E5: +case 0x51E6: + +// STCC +case 0x51E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + res = 0; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x52E1: +case 0x52E2: +case 0x52E3: +case 0x52E4: +case 0x52E5: +case 0x52E6: + +// STCC +case 0x52E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x53E1: +case 0x53E2: +case 0x53E3: +case 0x53E4: +case 0x53E5: +case 0x53E6: + +// STCC +case 0x53E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x54E1: +case 0x54E2: +case 0x54E3: +case 0x54E4: +case 0x54E5: +case 0x54E6: + +// STCC +case 0x54E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x55E1: +case 0x55E2: +case 0x55E3: +case 0x55E4: +case 0x55E5: +case 0x55E6: + +// STCC +case 0x55E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x56E1: +case 0x56E2: +case 0x56E3: +case 0x56E4: +case 0x56E5: +case 0x56E6: + +// STCC +case 0x56E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x57E1: +case 0x57E2: +case 0x57E3: +case 0x57E4: +case 0x57E5: +case 0x57E6: + +// STCC +case 0x57E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x58E1: +case 0x58E2: +case 0x58E3: +case 0x58E4: +case 0x58E5: +case 0x58E6: + +// STCC +case 0x58E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x59E1: +case 0x59E2: +case 0x59E3: +case 0x59E4: +case 0x59E5: +case 0x59E6: + +// STCC +case 0x59E0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5AE1: +case 0x5AE2: +case 0x5AE3: +case 0x5AE4: +case 0x5AE5: +case 0x5AE6: + +// STCC +case 0x5AE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5BE1: +case 0x5BE2: +case 0x5BE3: +case 0x5BE4: +case 0x5BE5: +case 0x5BE6: + +// STCC +case 0x5BE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5CE1: +case 0x5CE2: +case 0x5CE3: +case 0x5CE4: +case 0x5CE5: +case 0x5CE6: + +// STCC +case 0x5CE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5DE1: +case 0x5DE2: +case 0x5DE3: +case 0x5DE4: +case 0x5DE5: +case 0x5DE6: + +// STCC +case 0x5DE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5EE1: +case 0x5EE2: +case 0x5EE3: +case 0x5EE4: +case 0x5EE5: +case 0x5EE6: + +// STCC +case 0x5EE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5FE1: +case 0x5FE2: +case 0x5FE3: +case 0x5FE4: +case 0x5FE5: +case 0x5FE6: + +// STCC +case 0x5FE0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x50E9: +case 0x50EA: +case 0x50EB: +case 0x50EC: +case 0x50ED: +case 0x50EE: +case 0x50EF: + +// STCC +case 0x50E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x51E9: +case 0x51EA: +case 0x51EB: +case 0x51EC: +case 0x51ED: +case 0x51EE: +case 0x51EF: + +// STCC +case 0x51E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x52E9: +case 0x52EA: +case 0x52EB: +case 0x52EC: +case 0x52ED: +case 0x52EE: +case 0x52EF: + +// STCC +case 0x52E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x53E9: +case 0x53EA: +case 0x53EB: +case 0x53EC: +case 0x53ED: +case 0x53EE: +case 0x53EF: + +// STCC +case 0x53E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x54E9: +case 0x54EA: +case 0x54EB: +case 0x54EC: +case 0x54ED: +case 0x54EE: +case 0x54EF: + +// STCC +case 0x54E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x55E9: +case 0x55EA: +case 0x55EB: +case 0x55EC: +case 0x55ED: +case 0x55EE: +case 0x55EF: + +// STCC +case 0x55E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x56E9: +case 0x56EA: +case 0x56EB: +case 0x56EC: +case 0x56ED: +case 0x56EE: +case 0x56EF: + +// STCC +case 0x56E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x57E9: +case 0x57EA: +case 0x57EB: +case 0x57EC: +case 0x57ED: +case 0x57EE: +case 0x57EF: + +// STCC +case 0x57E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x58E9: +case 0x58EA: +case 0x58EB: +case 0x58EC: +case 0x58ED: +case 0x58EE: +case 0x58EF: + +// STCC +case 0x58E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x59E9: +case 0x59EA: +case 0x59EB: +case 0x59EC: +case 0x59ED: +case 0x59EE: +case 0x59EF: + +// STCC +case 0x59E8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5AE9: +case 0x5AEA: +case 0x5AEB: +case 0x5AEC: +case 0x5AED: +case 0x5AEE: +case 0x5AEF: + +// STCC +case 0x5AE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5BE9: +case 0x5BEA: +case 0x5BEB: +case 0x5BEC: +case 0x5BED: +case 0x5BEE: +case 0x5BEF: + +// STCC +case 0x5BE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5CE9: +case 0x5CEA: +case 0x5CEB: +case 0x5CEC: +case 0x5CED: +case 0x5CEE: +case 0x5CEF: + +// STCC +case 0x5CE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5DE9: +case 0x5DEA: +case 0x5DEB: +case 0x5DEC: +case 0x5DED: +case 0x5DEE: +case 0x5DEF: + +// STCC +case 0x5DE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5EE9: +case 0x5EEA: +case 0x5EEB: +case 0x5EEC: +case 0x5EED: +case 0x5EEE: +case 0x5EEF: + +// STCC +case 0x5EE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5FE9: +case 0x5FEA: +case 0x5FEB: +case 0x5FEC: +case 0x5FED: +case 0x5FEE: +case 0x5FEF: + +// STCC +case 0x5FE8: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x50F1: +case 0x50F2: +case 0x50F3: +case 0x50F4: +case 0x50F5: +case 0x50F6: +case 0x50F7: + +// STCC +case 0x50F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x51F1: +case 0x51F2: +case 0x51F3: +case 0x51F4: +case 0x51F5: +case 0x51F6: +case 0x51F7: + +// STCC +case 0x51F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + res = 0; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) +} +case 0x52F1: +case 0x52F2: +case 0x52F3: +case 0x52F4: +case 0x52F5: +case 0x52F6: +case 0x52F7: + +// STCC +case 0x52F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x53F1: +case 0x53F2: +case 0x53F3: +case 0x53F4: +case 0x53F5: +case 0x53F6: +case 0x53F7: + +// STCC +case 0x53F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x54F1: +case 0x54F2: +case 0x54F3: +case 0x54F4: +case 0x54F5: +case 0x54F6: +case 0x54F7: + +// STCC +case 0x54F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x55F1: +case 0x55F2: +case 0x55F3: +case 0x55F4: +case 0x55F5: +case 0x55F6: +case 0x55F7: + +// STCC +case 0x55F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x56F1: +case 0x56F2: +case 0x56F3: +case 0x56F4: +case 0x56F5: +case 0x56F6: +case 0x56F7: + +// STCC +case 0x56F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x57F1: +case 0x57F2: +case 0x57F3: +case 0x57F4: +case 0x57F5: +case 0x57F6: +case 0x57F7: + +// STCC +case 0x57F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x58F1: +case 0x58F2: +case 0x58F3: +case 0x58F4: +case 0x58F5: +case 0x58F6: +case 0x58F7: + +// STCC +case 0x58F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x59F1: +case 0x59F2: +case 0x59F3: +case 0x59F4: +case 0x59F5: +case 0x59F6: +case 0x59F7: + +// STCC +case 0x59F0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5AF1: +case 0x5AF2: +case 0x5AF3: +case 0x5AF4: +case 0x5AF5: +case 0x5AF6: +case 0x5AF7: + +// STCC +case 0x5AF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5BF1: +case 0x5BF2: +case 0x5BF3: +case 0x5BF4: +case 0x5BF5: +case 0x5BF6: +case 0x5BF7: + +// STCC +case 0x5BF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5CF1: +case 0x5CF2: +case 0x5CF3: +case 0x5CF4: +case 0x5CF5: +case 0x5CF6: +case 0x5CF7: + +// STCC +case 0x5CF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5DF1: +case 0x5DF2: +case 0x5DF3: +case 0x5DF4: +case 0x5DF5: +case 0x5DF6: +case 0x5DF7: + +// STCC +case 0x5DF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5EF1: +case 0x5EF2: +case 0x5EF3: +case 0x5EF4: +case 0x5EF5: +case 0x5EF6: +case 0x5EF7: + +// STCC +case 0x5EF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x5FF1: +case 0x5FF2: +case 0x5FF3: +case 0x5FF4: +case 0x5FF5: +case 0x5FF6: +case 0x5FF7: + +// STCC +case 0x5FF0: +{ + u32 adr; + u32 res; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 10; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x50F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x51F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + res = 0; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x52F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x53F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x54F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x55F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x56F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x57F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x58F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x59F8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5AF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5BF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5CF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5DF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5EF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5FF8: +{ + u32 adr; + u32 res; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 8; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x50F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x51F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + res = 0; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x52F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x53F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x54F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x55F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x56F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x57F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x58F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x59F9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5AF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5BF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5CF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5DF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5EF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5FF9: +{ + u32 adr; + u32 res; + adr = (s32)FETCH_LONG; + PC += 4; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 12; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x50DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x51DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + res = 0; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x52DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x53DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x54DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x55DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x56DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x57DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x58DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x59DF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5ADF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5BDF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5CDF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5DDF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5EDF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5FDF: +{ + u32 adr; + u32 res; + adr = CPU->A[7]; + CPU->A[7] += 2; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 4; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x50E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x51E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + res = 0; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) +} + +// STCC +case 0x52E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x53E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x54E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (!(CPU->flag_C & 0x100)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x55E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (CPU->flag_C & 0x100) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x56E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (CPU->flag_notZ) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x57E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (!CPU->flag_notZ) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x58E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (!(CPU->flag_V & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x59E7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (CPU->flag_V & 0x80) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5AE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (!(CPU->flag_N & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5BE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (CPU->flag_N & 0x80) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5CE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5DE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5EE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} + +// STCC +case 0x5FE7: +{ + u32 adr; + u32 res; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = 0xFF; + timestamp += 6; + WRITE_BYat_F(adr, res) + RET(4) + } + res = 0; + WRITE_BYTE_F(adr, res) + RET(4) +} +case 0x50C9: +case 0x50CA: +case 0x50CB: +case 0x50CC: +case 0x50CD: +case 0x50CE: +case 0x50CF: + +// DBCC +case 0x50C8: +{ + u32 res; + PC += 2; +} +RET(12) +case 0x51C9: +case 0x51CA: +case 0x51CB: +case 0x51CC: +case 0x51CD: +case 0x51CE: +case 0x51CF: + +// DBCC +case 0x51C8: +{ + u32 res; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(14) +case 0x52C9: +case 0x52CA: +case 0x52CB: +case 0x52CC: +case 0x52CD: +case 0x52CE: +case 0x52CF: + +// DBCC +case 0x52C8: +{ + u32 res; + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x53C9: +case 0x53CA: +case 0x53CB: +case 0x53CC: +case 0x53CD: +case 0x53CE: +case 0x53CF: + +// DBCC +case 0x53C8: +{ + u32 res; + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x54C9: +case 0x54CA: +case 0x54CB: +case 0x54CC: +case 0x54CD: +case 0x54CE: +case 0x54CF: + +// DBCC +case 0x54C8: +{ + u32 res; + if (CPU->flag_C & 0x100) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x55C9: +case 0x55CA: +case 0x55CB: +case 0x55CC: +case 0x55CD: +case 0x55CE: +case 0x55CF: + +// DBCC +case 0x55C8: +{ + u32 res; + if (!(CPU->flag_C & 0x100)) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x56C9: +case 0x56CA: +case 0x56CB: +case 0x56CC: +case 0x56CD: +case 0x56CE: +case 0x56CF: + +// DBCC +case 0x56C8: +{ + u32 res; + if (!CPU->flag_notZ) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x57C9: +case 0x57CA: +case 0x57CB: +case 0x57CC: +case 0x57CD: +case 0x57CE: +case 0x57CF: + +// DBCC +case 0x57C8: +{ + u32 res; + if (CPU->flag_notZ) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x58C9: +case 0x58CA: +case 0x58CB: +case 0x58CC: +case 0x58CD: +case 0x58CE: +case 0x58CF: + +// DBCC +case 0x58C8: +{ + u32 res; + if (CPU->flag_V & 0x80) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x59C9: +case 0x59CA: +case 0x59CB: +case 0x59CC: +case 0x59CD: +case 0x59CE: +case 0x59CF: + +// DBCC +case 0x59C8: +{ + u32 res; + if (!(CPU->flag_V & 0x80)) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5AC9: +case 0x5ACA: +case 0x5ACB: +case 0x5ACC: +case 0x5ACD: +case 0x5ACE: +case 0x5ACF: + +// DBCC +case 0x5AC8: +{ + u32 res; + if (CPU->flag_N & 0x80) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5BC9: +case 0x5BCA: +case 0x5BCB: +case 0x5BCC: +case 0x5BCD: +case 0x5BCE: +case 0x5BCF: + +// DBCC +case 0x5BC8: +{ + u32 res; + if (!(CPU->flag_N & 0x80)) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5CC9: +case 0x5CCA: +case 0x5CCB: +case 0x5CCC: +case 0x5CCD: +case 0x5CCE: +case 0x5CCF: + +// DBCC +case 0x5CC8: +{ + u32 res; + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5DC9: +case 0x5DCA: +case 0x5DCB: +case 0x5DCC: +case 0x5DCD: +case 0x5DCE: +case 0x5DCF: + +// DBCC +case 0x5DC8: +{ + u32 res; + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5EC9: +case 0x5ECA: +case 0x5ECB: +case 0x5ECC: +case 0x5ECD: +case 0x5ECE: +case 0x5ECF: + +// DBCC +case 0x5EC8: +{ + u32 res; + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5FC9: +case 0x5FCA: +case 0x5FCB: +case 0x5FCC: +case 0x5FCD: +case 0x5FCE: +case 0x5FCF: + +// DBCC +case 0x5FC8: +{ + u32 res; + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res--; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + if ((s32)res != -1) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + } + else + { + PC += 2; + RET(12) + } + PC += 2; +} +RET(14) +case 0x5200: +case 0x5400: +case 0x5600: +case 0x5800: +case 0x5A00: +case 0x5C00: +case 0x5E00: +case 0x5001: +case 0x5201: +case 0x5401: +case 0x5601: +case 0x5801: +case 0x5A01: +case 0x5C01: +case 0x5E01: +case 0x5002: +case 0x5202: +case 0x5402: +case 0x5602: +case 0x5802: +case 0x5A02: +case 0x5C02: +case 0x5E02: +case 0x5003: +case 0x5203: +case 0x5403: +case 0x5603: +case 0x5803: +case 0x5A03: +case 0x5C03: +case 0x5E03: +case 0x5004: +case 0x5204: +case 0x5404: +case 0x5604: +case 0x5804: +case 0x5A04: +case 0x5C04: +case 0x5E04: +case 0x5005: +case 0x5205: +case 0x5405: +case 0x5605: +case 0x5805: +case 0x5A05: +case 0x5C05: +case 0x5E05: +case 0x5006: +case 0x5206: +case 0x5406: +case 0x5606: +case 0x5806: +case 0x5A06: +case 0x5C06: +case 0x5E06: +case 0x5007: +case 0x5207: +case 0x5407: +case 0x5607: +case 0x5807: +case 0x5A07: +case 0x5C07: +case 0x5E07: + +// ADDQ +case 0x5000: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u8)CPU->D[(Opcode >> 0) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x5210: +case 0x5410: +case 0x5610: +case 0x5810: +case 0x5A10: +case 0x5C10: +case 0x5E10: +case 0x5011: +case 0x5211: +case 0x5411: +case 0x5611: +case 0x5811: +case 0x5A11: +case 0x5C11: +case 0x5E11: +case 0x5012: +case 0x5212: +case 0x5412: +case 0x5612: +case 0x5812: +case 0x5A12: +case 0x5C12: +case 0x5E12: +case 0x5013: +case 0x5213: +case 0x5413: +case 0x5613: +case 0x5813: +case 0x5A13: +case 0x5C13: +case 0x5E13: +case 0x5014: +case 0x5214: +case 0x5414: +case 0x5614: +case 0x5814: +case 0x5A14: +case 0x5C14: +case 0x5E14: +case 0x5015: +case 0x5215: +case 0x5415: +case 0x5615: +case 0x5815: +case 0x5A15: +case 0x5C15: +case 0x5E15: +case 0x5016: +case 0x5216: +case 0x5416: +case 0x5616: +case 0x5816: +case 0x5A16: +case 0x5C16: +case 0x5E16: +case 0x5017: +case 0x5217: +case 0x5417: +case 0x5617: +case 0x5817: +case 0x5A17: +case 0x5C17: +case 0x5E17: + +// ADDQ +case 0x5010: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5218: +case 0x5418: +case 0x5618: +case 0x5818: +case 0x5A18: +case 0x5C18: +case 0x5E18: +case 0x5019: +case 0x5219: +case 0x5419: +case 0x5619: +case 0x5819: +case 0x5A19: +case 0x5C19: +case 0x5E19: +case 0x501A: +case 0x521A: +case 0x541A: +case 0x561A: +case 0x581A: +case 0x5A1A: +case 0x5C1A: +case 0x5E1A: +case 0x501B: +case 0x521B: +case 0x541B: +case 0x561B: +case 0x581B: +case 0x5A1B: +case 0x5C1B: +case 0x5E1B: +case 0x501C: +case 0x521C: +case 0x541C: +case 0x561C: +case 0x581C: +case 0x5A1C: +case 0x5C1C: +case 0x5E1C: +case 0x501D: +case 0x521D: +case 0x541D: +case 0x561D: +case 0x581D: +case 0x5A1D: +case 0x5C1D: +case 0x5E1D: +case 0x501E: +case 0x521E: +case 0x541E: +case 0x561E: +case 0x581E: +case 0x5A1E: +case 0x5C1E: +case 0x5E1E: + +// ADDQ +case 0x5018: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5220: +case 0x5420: +case 0x5620: +case 0x5820: +case 0x5A20: +case 0x5C20: +case 0x5E20: +case 0x5021: +case 0x5221: +case 0x5421: +case 0x5621: +case 0x5821: +case 0x5A21: +case 0x5C21: +case 0x5E21: +case 0x5022: +case 0x5222: +case 0x5422: +case 0x5622: +case 0x5822: +case 0x5A22: +case 0x5C22: +case 0x5E22: +case 0x5023: +case 0x5223: +case 0x5423: +case 0x5623: +case 0x5823: +case 0x5A23: +case 0x5C23: +case 0x5E23: +case 0x5024: +case 0x5224: +case 0x5424: +case 0x5624: +case 0x5824: +case 0x5A24: +case 0x5C24: +case 0x5E24: +case 0x5025: +case 0x5225: +case 0x5425: +case 0x5625: +case 0x5825: +case 0x5A25: +case 0x5C25: +case 0x5E25: +case 0x5026: +case 0x5226: +case 0x5426: +case 0x5626: +case 0x5826: +case 0x5A26: +case 0x5C26: +case 0x5E26: + +// ADDQ +case 0x5020: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5228: +case 0x5428: +case 0x5628: +case 0x5828: +case 0x5A28: +case 0x5C28: +case 0x5E28: +case 0x5029: +case 0x5229: +case 0x5429: +case 0x5629: +case 0x5829: +case 0x5A29: +case 0x5C29: +case 0x5E29: +case 0x502A: +case 0x522A: +case 0x542A: +case 0x562A: +case 0x582A: +case 0x5A2A: +case 0x5C2A: +case 0x5E2A: +case 0x502B: +case 0x522B: +case 0x542B: +case 0x562B: +case 0x582B: +case 0x5A2B: +case 0x5C2B: +case 0x5E2B: +case 0x502C: +case 0x522C: +case 0x542C: +case 0x562C: +case 0x582C: +case 0x5A2C: +case 0x5C2C: +case 0x5E2C: +case 0x502D: +case 0x522D: +case 0x542D: +case 0x562D: +case 0x582D: +case 0x5A2D: +case 0x5C2D: +case 0x5E2D: +case 0x502E: +case 0x522E: +case 0x542E: +case 0x562E: +case 0x582E: +case 0x5A2E: +case 0x5C2E: +case 0x5E2E: +case 0x502F: +case 0x522F: +case 0x542F: +case 0x562F: +case 0x582F: +case 0x5A2F: +case 0x5C2F: +case 0x5E2F: + +// ADDQ +case 0x5028: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5230: +case 0x5430: +case 0x5630: +case 0x5830: +case 0x5A30: +case 0x5C30: +case 0x5E30: +case 0x5031: +case 0x5231: +case 0x5431: +case 0x5631: +case 0x5831: +case 0x5A31: +case 0x5C31: +case 0x5E31: +case 0x5032: +case 0x5232: +case 0x5432: +case 0x5632: +case 0x5832: +case 0x5A32: +case 0x5C32: +case 0x5E32: +case 0x5033: +case 0x5233: +case 0x5433: +case 0x5633: +case 0x5833: +case 0x5A33: +case 0x5C33: +case 0x5E33: +case 0x5034: +case 0x5234: +case 0x5434: +case 0x5634: +case 0x5834: +case 0x5A34: +case 0x5C34: +case 0x5E34: +case 0x5035: +case 0x5235: +case 0x5435: +case 0x5635: +case 0x5835: +case 0x5A35: +case 0x5C35: +case 0x5E35: +case 0x5036: +case 0x5236: +case 0x5436: +case 0x5636: +case 0x5836: +case 0x5A36: +case 0x5C36: +case 0x5E36: +case 0x5037: +case 0x5237: +case 0x5437: +case 0x5637: +case 0x5837: +case 0x5A37: +case 0x5C37: +case 0x5E37: + +// ADDQ +case 0x5030: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5238: +case 0x5438: +case 0x5638: +case 0x5838: +case 0x5A38: +case 0x5C38: +case 0x5E38: + +// ADDQ +case 0x5038: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5239: +case 0x5439: +case 0x5639: +case 0x5839: +case 0x5A39: +case 0x5C39: +case 0x5E39: + +// ADDQ +case 0x5039: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x521F: +case 0x541F: +case 0x561F: +case 0x581F: +case 0x5A1F: +case 0x5C1F: +case 0x5E1F: + +// ADDQ +case 0x501F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5227: +case 0x5427: +case 0x5627: +case 0x5827: +case 0x5A27: +case 0x5C27: +case 0x5E27: + +// ADDQ +case 0x5027: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5240: +case 0x5440: +case 0x5640: +case 0x5840: +case 0x5A40: +case 0x5C40: +case 0x5E40: +case 0x5041: +case 0x5241: +case 0x5441: +case 0x5641: +case 0x5841: +case 0x5A41: +case 0x5C41: +case 0x5E41: +case 0x5042: +case 0x5242: +case 0x5442: +case 0x5642: +case 0x5842: +case 0x5A42: +case 0x5C42: +case 0x5E42: +case 0x5043: +case 0x5243: +case 0x5443: +case 0x5643: +case 0x5843: +case 0x5A43: +case 0x5C43: +case 0x5E43: +case 0x5044: +case 0x5244: +case 0x5444: +case 0x5644: +case 0x5844: +case 0x5A44: +case 0x5C44: +case 0x5E44: +case 0x5045: +case 0x5245: +case 0x5445: +case 0x5645: +case 0x5845: +case 0x5A45: +case 0x5C45: +case 0x5E45: +case 0x5046: +case 0x5246: +case 0x5446: +case 0x5646: +case 0x5846: +case 0x5A46: +case 0x5C46: +case 0x5E46: +case 0x5047: +case 0x5247: +case 0x5447: +case 0x5647: +case 0x5847: +case 0x5A47: +case 0x5C47: +case 0x5E47: + +// ADDQ +case 0x5040: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u16)CPU->D[(Opcode >> 0) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x5248: +case 0x5448: +case 0x5648: +case 0x5848: +case 0x5A48: +case 0x5C48: +case 0x5E48: +case 0x5049: +case 0x5249: +case 0x5449: +case 0x5649: +case 0x5849: +case 0x5A49: +case 0x5C49: +case 0x5E49: +case 0x504A: +case 0x524A: +case 0x544A: +case 0x564A: +case 0x584A: +case 0x5A4A: +case 0x5C4A: +case 0x5E4A: +case 0x504B: +case 0x524B: +case 0x544B: +case 0x564B: +case 0x584B: +case 0x5A4B: +case 0x5C4B: +case 0x5E4B: +case 0x504C: +case 0x524C: +case 0x544C: +case 0x564C: +case 0x584C: +case 0x5A4C: +case 0x5C4C: +case 0x5E4C: +case 0x504D: +case 0x524D: +case 0x544D: +case 0x564D: +case 0x584D: +case 0x5A4D: +case 0x5C4D: +case 0x5E4D: +case 0x504E: +case 0x524E: +case 0x544E: +case 0x564E: +case 0x584E: +case 0x5A4E: +case 0x5C4E: +case 0x5E4E: +case 0x504F: +case 0x524F: +case 0x544F: +case 0x564F: +case 0x584F: +case 0x5A4F: +case 0x5C4F: +case 0x5E4F: + +// ADDQ +case 0x5048: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u32)CPU->A[(Opcode >> 0) & 7]; + res = dst + src; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(8) +case 0x5250: +case 0x5450: +case 0x5650: +case 0x5850: +case 0x5A50: +case 0x5C50: +case 0x5E50: +case 0x5051: +case 0x5251: +case 0x5451: +case 0x5651: +case 0x5851: +case 0x5A51: +case 0x5C51: +case 0x5E51: +case 0x5052: +case 0x5252: +case 0x5452: +case 0x5652: +case 0x5852: +case 0x5A52: +case 0x5C52: +case 0x5E52: +case 0x5053: +case 0x5253: +case 0x5453: +case 0x5653: +case 0x5853: +case 0x5A53: +case 0x5C53: +case 0x5E53: +case 0x5054: +case 0x5254: +case 0x5454: +case 0x5654: +case 0x5854: +case 0x5A54: +case 0x5C54: +case 0x5E54: +case 0x5055: +case 0x5255: +case 0x5455: +case 0x5655: +case 0x5855: +case 0x5A55: +case 0x5C55: +case 0x5E55: +case 0x5056: +case 0x5256: +case 0x5456: +case 0x5656: +case 0x5856: +case 0x5A56: +case 0x5C56: +case 0x5E56: +case 0x5057: +case 0x5257: +case 0x5457: +case 0x5657: +case 0x5857: +case 0x5A57: +case 0x5C57: +case 0x5E57: + +// ADDQ +case 0x5050: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5258: +case 0x5458: +case 0x5658: +case 0x5858: +case 0x5A58: +case 0x5C58: +case 0x5E58: +case 0x5059: +case 0x5259: +case 0x5459: +case 0x5659: +case 0x5859: +case 0x5A59: +case 0x5C59: +case 0x5E59: +case 0x505A: +case 0x525A: +case 0x545A: +case 0x565A: +case 0x585A: +case 0x5A5A: +case 0x5C5A: +case 0x5E5A: +case 0x505B: +case 0x525B: +case 0x545B: +case 0x565B: +case 0x585B: +case 0x5A5B: +case 0x5C5B: +case 0x5E5B: +case 0x505C: +case 0x525C: +case 0x545C: +case 0x565C: +case 0x585C: +case 0x5A5C: +case 0x5C5C: +case 0x5E5C: +case 0x505D: +case 0x525D: +case 0x545D: +case 0x565D: +case 0x585D: +case 0x5A5D: +case 0x5C5D: +case 0x5E5D: +case 0x505E: +case 0x525E: +case 0x545E: +case 0x565E: +case 0x585E: +case 0x5A5E: +case 0x5C5E: +case 0x5E5E: + +// ADDQ +case 0x5058: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5260: +case 0x5460: +case 0x5660: +case 0x5860: +case 0x5A60: +case 0x5C60: +case 0x5E60: +case 0x5061: +case 0x5261: +case 0x5461: +case 0x5661: +case 0x5861: +case 0x5A61: +case 0x5C61: +case 0x5E61: +case 0x5062: +case 0x5262: +case 0x5462: +case 0x5662: +case 0x5862: +case 0x5A62: +case 0x5C62: +case 0x5E62: +case 0x5063: +case 0x5263: +case 0x5463: +case 0x5663: +case 0x5863: +case 0x5A63: +case 0x5C63: +case 0x5E63: +case 0x5064: +case 0x5264: +case 0x5464: +case 0x5664: +case 0x5864: +case 0x5A64: +case 0x5C64: +case 0x5E64: +case 0x5065: +case 0x5265: +case 0x5465: +case 0x5665: +case 0x5865: +case 0x5A65: +case 0x5C65: +case 0x5E65: +case 0x5066: +case 0x5266: +case 0x5466: +case 0x5666: +case 0x5866: +case 0x5A66: +case 0x5C66: +case 0x5E66: + +// ADDQ +case 0x5060: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5268: +case 0x5468: +case 0x5668: +case 0x5868: +case 0x5A68: +case 0x5C68: +case 0x5E68: +case 0x5069: +case 0x5269: +case 0x5469: +case 0x5669: +case 0x5869: +case 0x5A69: +case 0x5C69: +case 0x5E69: +case 0x506A: +case 0x526A: +case 0x546A: +case 0x566A: +case 0x586A: +case 0x5A6A: +case 0x5C6A: +case 0x5E6A: +case 0x506B: +case 0x526B: +case 0x546B: +case 0x566B: +case 0x586B: +case 0x5A6B: +case 0x5C6B: +case 0x5E6B: +case 0x506C: +case 0x526C: +case 0x546C: +case 0x566C: +case 0x586C: +case 0x5A6C: +case 0x5C6C: +case 0x5E6C: +case 0x506D: +case 0x526D: +case 0x546D: +case 0x566D: +case 0x586D: +case 0x5A6D: +case 0x5C6D: +case 0x5E6D: +case 0x506E: +case 0x526E: +case 0x546E: +case 0x566E: +case 0x586E: +case 0x5A6E: +case 0x5C6E: +case 0x5E6E: +case 0x506F: +case 0x526F: +case 0x546F: +case 0x566F: +case 0x586F: +case 0x5A6F: +case 0x5C6F: +case 0x5E6F: + +// ADDQ +case 0x5068: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5270: +case 0x5470: +case 0x5670: +case 0x5870: +case 0x5A70: +case 0x5C70: +case 0x5E70: +case 0x5071: +case 0x5271: +case 0x5471: +case 0x5671: +case 0x5871: +case 0x5A71: +case 0x5C71: +case 0x5E71: +case 0x5072: +case 0x5272: +case 0x5472: +case 0x5672: +case 0x5872: +case 0x5A72: +case 0x5C72: +case 0x5E72: +case 0x5073: +case 0x5273: +case 0x5473: +case 0x5673: +case 0x5873: +case 0x5A73: +case 0x5C73: +case 0x5E73: +case 0x5074: +case 0x5274: +case 0x5474: +case 0x5674: +case 0x5874: +case 0x5A74: +case 0x5C74: +case 0x5E74: +case 0x5075: +case 0x5275: +case 0x5475: +case 0x5675: +case 0x5875: +case 0x5A75: +case 0x5C75: +case 0x5E75: +case 0x5076: +case 0x5276: +case 0x5476: +case 0x5676: +case 0x5876: +case 0x5A76: +case 0x5C76: +case 0x5E76: +case 0x5077: +case 0x5277: +case 0x5477: +case 0x5677: +case 0x5877: +case 0x5A77: +case 0x5C77: +case 0x5E77: + +// ADDQ +case 0x5070: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5278: +case 0x5478: +case 0x5678: +case 0x5878: +case 0x5A78: +case 0x5C78: +case 0x5E78: + +// ADDQ +case 0x5078: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5279: +case 0x5479: +case 0x5679: +case 0x5879: +case 0x5A79: +case 0x5C79: +case 0x5E79: + +// ADDQ +case 0x5079: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x525F: +case 0x545F: +case 0x565F: +case 0x585F: +case 0x5A5F: +case 0x5C5F: +case 0x5E5F: + +// ADDQ +case 0x505F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5267: +case 0x5467: +case 0x5667: +case 0x5867: +case 0x5A67: +case 0x5C67: +case 0x5E67: + +// ADDQ +case 0x5067: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5280: +case 0x5480: +case 0x5680: +case 0x5880: +case 0x5A80: +case 0x5C80: +case 0x5E80: +case 0x5081: +case 0x5281: +case 0x5481: +case 0x5681: +case 0x5881: +case 0x5A81: +case 0x5C81: +case 0x5E81: +case 0x5082: +case 0x5282: +case 0x5482: +case 0x5682: +case 0x5882: +case 0x5A82: +case 0x5C82: +case 0x5E82: +case 0x5083: +case 0x5283: +case 0x5483: +case 0x5683: +case 0x5883: +case 0x5A83: +case 0x5C83: +case 0x5E83: +case 0x5084: +case 0x5284: +case 0x5484: +case 0x5684: +case 0x5884: +case 0x5A84: +case 0x5C84: +case 0x5E84: +case 0x5085: +case 0x5285: +case 0x5485: +case 0x5685: +case 0x5885: +case 0x5A85: +case 0x5C85: +case 0x5E85: +case 0x5086: +case 0x5286: +case 0x5486: +case 0x5686: +case 0x5886: +case 0x5A86: +case 0x5C86: +case 0x5E86: +case 0x5087: +case 0x5287: +case 0x5487: +case 0x5687: +case 0x5887: +case 0x5A87: +case 0x5C87: +case 0x5E87: + +// ADDQ +case 0x5080: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u32)CPU->D[(Opcode >> 0) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x5288: +case 0x5488: +case 0x5688: +case 0x5888: +case 0x5A88: +case 0x5C88: +case 0x5E88: +case 0x5089: +case 0x5289: +case 0x5489: +case 0x5689: +case 0x5889: +case 0x5A89: +case 0x5C89: +case 0x5E89: +case 0x508A: +case 0x528A: +case 0x548A: +case 0x568A: +case 0x588A: +case 0x5A8A: +case 0x5C8A: +case 0x5E8A: +case 0x508B: +case 0x528B: +case 0x548B: +case 0x568B: +case 0x588B: +case 0x5A8B: +case 0x5C8B: +case 0x5E8B: +case 0x508C: +case 0x528C: +case 0x548C: +case 0x568C: +case 0x588C: +case 0x5A8C: +case 0x5C8C: +case 0x5E8C: +case 0x508D: +case 0x528D: +case 0x548D: +case 0x568D: +case 0x588D: +case 0x5A8D: +case 0x5C8D: +case 0x5E8D: +case 0x508E: +case 0x528E: +case 0x548E: +case 0x568E: +case 0x588E: +case 0x5A8E: +case 0x5C8E: +case 0x5E8E: +case 0x508F: +case 0x528F: +case 0x548F: +case 0x568F: +case 0x588F: +case 0x5A8F: +case 0x5C8F: +case 0x5E8F: + +// ADDQ +case 0x5088: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u32)CPU->A[(Opcode >> 0) & 7]; + res = dst + src; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(8) +case 0x5290: +case 0x5490: +case 0x5690: +case 0x5890: +case 0x5A90: +case 0x5C90: +case 0x5E90: +case 0x5091: +case 0x5291: +case 0x5491: +case 0x5691: +case 0x5891: +case 0x5A91: +case 0x5C91: +case 0x5E91: +case 0x5092: +case 0x5292: +case 0x5492: +case 0x5692: +case 0x5892: +case 0x5A92: +case 0x5C92: +case 0x5E92: +case 0x5093: +case 0x5293: +case 0x5493: +case 0x5693: +case 0x5893: +case 0x5A93: +case 0x5C93: +case 0x5E93: +case 0x5094: +case 0x5294: +case 0x5494: +case 0x5694: +case 0x5894: +case 0x5A94: +case 0x5C94: +case 0x5E94: +case 0x5095: +case 0x5295: +case 0x5495: +case 0x5695: +case 0x5895: +case 0x5A95: +case 0x5C95: +case 0x5E95: +case 0x5096: +case 0x5296: +case 0x5496: +case 0x5696: +case 0x5896: +case 0x5A96: +case 0x5C96: +case 0x5E96: +case 0x5097: +case 0x5297: +case 0x5497: +case 0x5697: +case 0x5897: +case 0x5A97: +case 0x5C97: +case 0x5E97: + +// ADDQ +case 0x5090: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x5298: +case 0x5498: +case 0x5698: +case 0x5898: +case 0x5A98: +case 0x5C98: +case 0x5E98: +case 0x5099: +case 0x5299: +case 0x5499: +case 0x5699: +case 0x5899: +case 0x5A99: +case 0x5C99: +case 0x5E99: +case 0x509A: +case 0x529A: +case 0x549A: +case 0x569A: +case 0x589A: +case 0x5A9A: +case 0x5C9A: +case 0x5E9A: +case 0x509B: +case 0x529B: +case 0x549B: +case 0x569B: +case 0x589B: +case 0x5A9B: +case 0x5C9B: +case 0x5E9B: +case 0x509C: +case 0x529C: +case 0x549C: +case 0x569C: +case 0x589C: +case 0x5A9C: +case 0x5C9C: +case 0x5E9C: +case 0x509D: +case 0x529D: +case 0x549D: +case 0x569D: +case 0x589D: +case 0x5A9D: +case 0x5C9D: +case 0x5E9D: +case 0x509E: +case 0x529E: +case 0x549E: +case 0x569E: +case 0x589E: +case 0x5A9E: +case 0x5C9E: +case 0x5E9E: + +// ADDQ +case 0x5098: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x52A0: +case 0x54A0: +case 0x56A0: +case 0x58A0: +case 0x5AA0: +case 0x5CA0: +case 0x5EA0: +case 0x50A1: +case 0x52A1: +case 0x54A1: +case 0x56A1: +case 0x58A1: +case 0x5AA1: +case 0x5CA1: +case 0x5EA1: +case 0x50A2: +case 0x52A2: +case 0x54A2: +case 0x56A2: +case 0x58A2: +case 0x5AA2: +case 0x5CA2: +case 0x5EA2: +case 0x50A3: +case 0x52A3: +case 0x54A3: +case 0x56A3: +case 0x58A3: +case 0x5AA3: +case 0x5CA3: +case 0x5EA3: +case 0x50A4: +case 0x52A4: +case 0x54A4: +case 0x56A4: +case 0x58A4: +case 0x5AA4: +case 0x5CA4: +case 0x5EA4: +case 0x50A5: +case 0x52A5: +case 0x54A5: +case 0x56A5: +case 0x58A5: +case 0x5AA5: +case 0x5CA5: +case 0x5EA5: +case 0x50A6: +case 0x52A6: +case 0x54A6: +case 0x56A6: +case 0x58A6: +case 0x5AA6: +case 0x5CA6: +case 0x5EA6: + +// ADDQ +case 0x50A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x52A8: +case 0x54A8: +case 0x56A8: +case 0x58A8: +case 0x5AA8: +case 0x5CA8: +case 0x5EA8: +case 0x50A9: +case 0x52A9: +case 0x54A9: +case 0x56A9: +case 0x58A9: +case 0x5AA9: +case 0x5CA9: +case 0x5EA9: +case 0x50AA: +case 0x52AA: +case 0x54AA: +case 0x56AA: +case 0x58AA: +case 0x5AAA: +case 0x5CAA: +case 0x5EAA: +case 0x50AB: +case 0x52AB: +case 0x54AB: +case 0x56AB: +case 0x58AB: +case 0x5AAB: +case 0x5CAB: +case 0x5EAB: +case 0x50AC: +case 0x52AC: +case 0x54AC: +case 0x56AC: +case 0x58AC: +case 0x5AAC: +case 0x5CAC: +case 0x5EAC: +case 0x50AD: +case 0x52AD: +case 0x54AD: +case 0x56AD: +case 0x58AD: +case 0x5AAD: +case 0x5CAD: +case 0x5EAD: +case 0x50AE: +case 0x52AE: +case 0x54AE: +case 0x56AE: +case 0x58AE: +case 0x5AAE: +case 0x5CAE: +case 0x5EAE: +case 0x50AF: +case 0x52AF: +case 0x54AF: +case 0x56AF: +case 0x58AF: +case 0x5AAF: +case 0x5CAF: +case 0x5EAF: + +// ADDQ +case 0x50A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x52B0: +case 0x54B0: +case 0x56B0: +case 0x58B0: +case 0x5AB0: +case 0x5CB0: +case 0x5EB0: +case 0x50B1: +case 0x52B1: +case 0x54B1: +case 0x56B1: +case 0x58B1: +case 0x5AB1: +case 0x5CB1: +case 0x5EB1: +case 0x50B2: +case 0x52B2: +case 0x54B2: +case 0x56B2: +case 0x58B2: +case 0x5AB2: +case 0x5CB2: +case 0x5EB2: +case 0x50B3: +case 0x52B3: +case 0x54B3: +case 0x56B3: +case 0x58B3: +case 0x5AB3: +case 0x5CB3: +case 0x5EB3: +case 0x50B4: +case 0x52B4: +case 0x54B4: +case 0x56B4: +case 0x58B4: +case 0x5AB4: +case 0x5CB4: +case 0x5EB4: +case 0x50B5: +case 0x52B5: +case 0x54B5: +case 0x56B5: +case 0x58B5: +case 0x5AB5: +case 0x5CB5: +case 0x5EB5: +case 0x50B6: +case 0x52B6: +case 0x54B6: +case 0x56B6: +case 0x58B6: +case 0x5AB6: +case 0x5CB6: +case 0x5EB6: +case 0x50B7: +case 0x52B7: +case 0x54B7: +case 0x56B7: +case 0x58B7: +case 0x5AB7: +case 0x5CB7: +case 0x5EB7: + +// ADDQ +case 0x50B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x52B8: +case 0x54B8: +case 0x56B8: +case 0x58B8: +case 0x5AB8: +case 0x5CB8: +case 0x5EB8: + +// ADDQ +case 0x50B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x52B9: +case 0x54B9: +case 0x56B9: +case 0x58B9: +case 0x5AB9: +case 0x5CB9: +case 0x5EB9: + +// ADDQ +case 0x50B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x529F: +case 0x549F: +case 0x569F: +case 0x589F: +case 0x5A9F: +case 0x5C9F: +case 0x5E9F: + +// ADDQ +case 0x509F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x52A7: +case 0x54A7: +case 0x56A7: +case 0x58A7: +case 0x5AA7: +case 0x5CA7: +case 0x5EA7: + +// ADDQ +case 0x50A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x5300: +case 0x5500: +case 0x5700: +case 0x5900: +case 0x5B00: +case 0x5D00: +case 0x5F00: +case 0x5101: +case 0x5301: +case 0x5501: +case 0x5701: +case 0x5901: +case 0x5B01: +case 0x5D01: +case 0x5F01: +case 0x5102: +case 0x5302: +case 0x5502: +case 0x5702: +case 0x5902: +case 0x5B02: +case 0x5D02: +case 0x5F02: +case 0x5103: +case 0x5303: +case 0x5503: +case 0x5703: +case 0x5903: +case 0x5B03: +case 0x5D03: +case 0x5F03: +case 0x5104: +case 0x5304: +case 0x5504: +case 0x5704: +case 0x5904: +case 0x5B04: +case 0x5D04: +case 0x5F04: +case 0x5105: +case 0x5305: +case 0x5505: +case 0x5705: +case 0x5905: +case 0x5B05: +case 0x5D05: +case 0x5F05: +case 0x5106: +case 0x5306: +case 0x5506: +case 0x5706: +case 0x5906: +case 0x5B06: +case 0x5D06: +case 0x5F06: +case 0x5107: +case 0x5307: +case 0x5507: +case 0x5707: +case 0x5907: +case 0x5B07: +case 0x5D07: +case 0x5F07: + +// SUBQ +case 0x5100: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u8)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x5310: +case 0x5510: +case 0x5710: +case 0x5910: +case 0x5B10: +case 0x5D10: +case 0x5F10: +case 0x5111: +case 0x5311: +case 0x5511: +case 0x5711: +case 0x5911: +case 0x5B11: +case 0x5D11: +case 0x5F11: +case 0x5112: +case 0x5312: +case 0x5512: +case 0x5712: +case 0x5912: +case 0x5B12: +case 0x5D12: +case 0x5F12: +case 0x5113: +case 0x5313: +case 0x5513: +case 0x5713: +case 0x5913: +case 0x5B13: +case 0x5D13: +case 0x5F13: +case 0x5114: +case 0x5314: +case 0x5514: +case 0x5714: +case 0x5914: +case 0x5B14: +case 0x5D14: +case 0x5F14: +case 0x5115: +case 0x5315: +case 0x5515: +case 0x5715: +case 0x5915: +case 0x5B15: +case 0x5D15: +case 0x5F15: +case 0x5116: +case 0x5316: +case 0x5516: +case 0x5716: +case 0x5916: +case 0x5B16: +case 0x5D16: +case 0x5F16: +case 0x5117: +case 0x5317: +case 0x5517: +case 0x5717: +case 0x5917: +case 0x5B17: +case 0x5D17: +case 0x5F17: + +// SUBQ +case 0x5110: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5318: +case 0x5518: +case 0x5718: +case 0x5918: +case 0x5B18: +case 0x5D18: +case 0x5F18: +case 0x5119: +case 0x5319: +case 0x5519: +case 0x5719: +case 0x5919: +case 0x5B19: +case 0x5D19: +case 0x5F19: +case 0x511A: +case 0x531A: +case 0x551A: +case 0x571A: +case 0x591A: +case 0x5B1A: +case 0x5D1A: +case 0x5F1A: +case 0x511B: +case 0x531B: +case 0x551B: +case 0x571B: +case 0x591B: +case 0x5B1B: +case 0x5D1B: +case 0x5F1B: +case 0x511C: +case 0x531C: +case 0x551C: +case 0x571C: +case 0x591C: +case 0x5B1C: +case 0x5D1C: +case 0x5F1C: +case 0x511D: +case 0x531D: +case 0x551D: +case 0x571D: +case 0x591D: +case 0x5B1D: +case 0x5D1D: +case 0x5F1D: +case 0x511E: +case 0x531E: +case 0x551E: +case 0x571E: +case 0x591E: +case 0x5B1E: +case 0x5D1E: +case 0x5F1E: + +// SUBQ +case 0x5118: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5320: +case 0x5520: +case 0x5720: +case 0x5920: +case 0x5B20: +case 0x5D20: +case 0x5F20: +case 0x5121: +case 0x5321: +case 0x5521: +case 0x5721: +case 0x5921: +case 0x5B21: +case 0x5D21: +case 0x5F21: +case 0x5122: +case 0x5322: +case 0x5522: +case 0x5722: +case 0x5922: +case 0x5B22: +case 0x5D22: +case 0x5F22: +case 0x5123: +case 0x5323: +case 0x5523: +case 0x5723: +case 0x5923: +case 0x5B23: +case 0x5D23: +case 0x5F23: +case 0x5124: +case 0x5324: +case 0x5524: +case 0x5724: +case 0x5924: +case 0x5B24: +case 0x5D24: +case 0x5F24: +case 0x5125: +case 0x5325: +case 0x5525: +case 0x5725: +case 0x5925: +case 0x5B25: +case 0x5D25: +case 0x5F25: +case 0x5126: +case 0x5326: +case 0x5526: +case 0x5726: +case 0x5926: +case 0x5B26: +case 0x5D26: +case 0x5F26: + +// SUBQ +case 0x5120: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5328: +case 0x5528: +case 0x5728: +case 0x5928: +case 0x5B28: +case 0x5D28: +case 0x5F28: +case 0x5129: +case 0x5329: +case 0x5529: +case 0x5729: +case 0x5929: +case 0x5B29: +case 0x5D29: +case 0x5F29: +case 0x512A: +case 0x532A: +case 0x552A: +case 0x572A: +case 0x592A: +case 0x5B2A: +case 0x5D2A: +case 0x5F2A: +case 0x512B: +case 0x532B: +case 0x552B: +case 0x572B: +case 0x592B: +case 0x5B2B: +case 0x5D2B: +case 0x5F2B: +case 0x512C: +case 0x532C: +case 0x552C: +case 0x572C: +case 0x592C: +case 0x5B2C: +case 0x5D2C: +case 0x5F2C: +case 0x512D: +case 0x532D: +case 0x552D: +case 0x572D: +case 0x592D: +case 0x5B2D: +case 0x5D2D: +case 0x5F2D: +case 0x512E: +case 0x532E: +case 0x552E: +case 0x572E: +case 0x592E: +case 0x5B2E: +case 0x5D2E: +case 0x5F2E: +case 0x512F: +case 0x532F: +case 0x552F: +case 0x572F: +case 0x592F: +case 0x5B2F: +case 0x5D2F: +case 0x5F2F: + +// SUBQ +case 0x5128: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5330: +case 0x5530: +case 0x5730: +case 0x5930: +case 0x5B30: +case 0x5D30: +case 0x5F30: +case 0x5131: +case 0x5331: +case 0x5531: +case 0x5731: +case 0x5931: +case 0x5B31: +case 0x5D31: +case 0x5F31: +case 0x5132: +case 0x5332: +case 0x5532: +case 0x5732: +case 0x5932: +case 0x5B32: +case 0x5D32: +case 0x5F32: +case 0x5133: +case 0x5333: +case 0x5533: +case 0x5733: +case 0x5933: +case 0x5B33: +case 0x5D33: +case 0x5F33: +case 0x5134: +case 0x5334: +case 0x5534: +case 0x5734: +case 0x5934: +case 0x5B34: +case 0x5D34: +case 0x5F34: +case 0x5135: +case 0x5335: +case 0x5535: +case 0x5735: +case 0x5935: +case 0x5B35: +case 0x5D35: +case 0x5F35: +case 0x5136: +case 0x5336: +case 0x5536: +case 0x5736: +case 0x5936: +case 0x5B36: +case 0x5D36: +case 0x5F36: +case 0x5137: +case 0x5337: +case 0x5537: +case 0x5737: +case 0x5937: +case 0x5B37: +case 0x5D37: +case 0x5F37: + +// SUBQ +case 0x5130: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5338: +case 0x5538: +case 0x5738: +case 0x5938: +case 0x5B38: +case 0x5D38: +case 0x5F38: + +// SUBQ +case 0x5138: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5339: +case 0x5539: +case 0x5739: +case 0x5939: +case 0x5B39: +case 0x5D39: +case 0x5F39: + +// SUBQ +case 0x5139: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x531F: +case 0x551F: +case 0x571F: +case 0x591F: +case 0x5B1F: +case 0x5D1F: +case 0x5F1F: + +// SUBQ +case 0x511F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5327: +case 0x5527: +case 0x5727: +case 0x5927: +case 0x5B27: +case 0x5D27: +case 0x5F27: + +// SUBQ +case 0x5127: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(4) +case 0x5340: +case 0x5540: +case 0x5740: +case 0x5940: +case 0x5B40: +case 0x5D40: +case 0x5F40: +case 0x5141: +case 0x5341: +case 0x5541: +case 0x5741: +case 0x5941: +case 0x5B41: +case 0x5D41: +case 0x5F41: +case 0x5142: +case 0x5342: +case 0x5542: +case 0x5742: +case 0x5942: +case 0x5B42: +case 0x5D42: +case 0x5F42: +case 0x5143: +case 0x5343: +case 0x5543: +case 0x5743: +case 0x5943: +case 0x5B43: +case 0x5D43: +case 0x5F43: +case 0x5144: +case 0x5344: +case 0x5544: +case 0x5744: +case 0x5944: +case 0x5B44: +case 0x5D44: +case 0x5F44: +case 0x5145: +case 0x5345: +case 0x5545: +case 0x5745: +case 0x5945: +case 0x5B45: +case 0x5D45: +case 0x5F45: +case 0x5146: +case 0x5346: +case 0x5546: +case 0x5746: +case 0x5946: +case 0x5B46: +case 0x5D46: +case 0x5F46: +case 0x5147: +case 0x5347: +case 0x5547: +case 0x5747: +case 0x5947: +case 0x5B47: +case 0x5D47: +case 0x5F47: + +// SUBQ +case 0x5140: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u16)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0x5348: +case 0x5548: +case 0x5748: +case 0x5948: +case 0x5B48: +case 0x5D48: +case 0x5F48: +case 0x5149: +case 0x5349: +case 0x5549: +case 0x5749: +case 0x5949: +case 0x5B49: +case 0x5D49: +case 0x5F49: +case 0x514A: +case 0x534A: +case 0x554A: +case 0x574A: +case 0x594A: +case 0x5B4A: +case 0x5D4A: +case 0x5F4A: +case 0x514B: +case 0x534B: +case 0x554B: +case 0x574B: +case 0x594B: +case 0x5B4B: +case 0x5D4B: +case 0x5F4B: +case 0x514C: +case 0x534C: +case 0x554C: +case 0x574C: +case 0x594C: +case 0x5B4C: +case 0x5D4C: +case 0x5F4C: +case 0x514D: +case 0x534D: +case 0x554D: +case 0x574D: +case 0x594D: +case 0x5B4D: +case 0x5D4D: +case 0x5F4D: +case 0x514E: +case 0x534E: +case 0x554E: +case 0x574E: +case 0x594E: +case 0x5B4E: +case 0x5D4E: +case 0x5F4E: +case 0x514F: +case 0x534F: +case 0x554F: +case 0x574F: +case 0x594F: +case 0x5B4F: +case 0x5D4F: +case 0x5F4F: + +// SUBQ +case 0x5148: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u32)CPU->A[(Opcode >> 0) & 7]; + res = dst - src; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(8) +case 0x5350: +case 0x5550: +case 0x5750: +case 0x5950: +case 0x5B50: +case 0x5D50: +case 0x5F50: +case 0x5151: +case 0x5351: +case 0x5551: +case 0x5751: +case 0x5951: +case 0x5B51: +case 0x5D51: +case 0x5F51: +case 0x5152: +case 0x5352: +case 0x5552: +case 0x5752: +case 0x5952: +case 0x5B52: +case 0x5D52: +case 0x5F52: +case 0x5153: +case 0x5353: +case 0x5553: +case 0x5753: +case 0x5953: +case 0x5B53: +case 0x5D53: +case 0x5F53: +case 0x5154: +case 0x5354: +case 0x5554: +case 0x5754: +case 0x5954: +case 0x5B54: +case 0x5D54: +case 0x5F54: +case 0x5155: +case 0x5355: +case 0x5555: +case 0x5755: +case 0x5955: +case 0x5B55: +case 0x5D55: +case 0x5F55: +case 0x5156: +case 0x5356: +case 0x5556: +case 0x5756: +case 0x5956: +case 0x5B56: +case 0x5D56: +case 0x5F56: +case 0x5157: +case 0x5357: +case 0x5557: +case 0x5757: +case 0x5957: +case 0x5B57: +case 0x5D57: +case 0x5F57: + +// SUBQ +case 0x5150: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5358: +case 0x5558: +case 0x5758: +case 0x5958: +case 0x5B58: +case 0x5D58: +case 0x5F58: +case 0x5159: +case 0x5359: +case 0x5559: +case 0x5759: +case 0x5959: +case 0x5B59: +case 0x5D59: +case 0x5F59: +case 0x515A: +case 0x535A: +case 0x555A: +case 0x575A: +case 0x595A: +case 0x5B5A: +case 0x5D5A: +case 0x5F5A: +case 0x515B: +case 0x535B: +case 0x555B: +case 0x575B: +case 0x595B: +case 0x5B5B: +case 0x5D5B: +case 0x5F5B: +case 0x515C: +case 0x535C: +case 0x555C: +case 0x575C: +case 0x595C: +case 0x5B5C: +case 0x5D5C: +case 0x5F5C: +case 0x515D: +case 0x535D: +case 0x555D: +case 0x575D: +case 0x595D: +case 0x5B5D: +case 0x5D5D: +case 0x5F5D: +case 0x515E: +case 0x535E: +case 0x555E: +case 0x575E: +case 0x595E: +case 0x5B5E: +case 0x5D5E: +case 0x5F5E: + +// SUBQ +case 0x5158: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5360: +case 0x5560: +case 0x5760: +case 0x5960: +case 0x5B60: +case 0x5D60: +case 0x5F60: +case 0x5161: +case 0x5361: +case 0x5561: +case 0x5761: +case 0x5961: +case 0x5B61: +case 0x5D61: +case 0x5F61: +case 0x5162: +case 0x5362: +case 0x5562: +case 0x5762: +case 0x5962: +case 0x5B62: +case 0x5D62: +case 0x5F62: +case 0x5163: +case 0x5363: +case 0x5563: +case 0x5763: +case 0x5963: +case 0x5B63: +case 0x5D63: +case 0x5F63: +case 0x5164: +case 0x5364: +case 0x5564: +case 0x5764: +case 0x5964: +case 0x5B64: +case 0x5D64: +case 0x5F64: +case 0x5165: +case 0x5365: +case 0x5565: +case 0x5765: +case 0x5965: +case 0x5B65: +case 0x5D65: +case 0x5F65: +case 0x5166: +case 0x5366: +case 0x5566: +case 0x5766: +case 0x5966: +case 0x5B66: +case 0x5D66: +case 0x5F66: + +// SUBQ +case 0x5160: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5368: +case 0x5568: +case 0x5768: +case 0x5968: +case 0x5B68: +case 0x5D68: +case 0x5F68: +case 0x5169: +case 0x5369: +case 0x5569: +case 0x5769: +case 0x5969: +case 0x5B69: +case 0x5D69: +case 0x5F69: +case 0x516A: +case 0x536A: +case 0x556A: +case 0x576A: +case 0x596A: +case 0x5B6A: +case 0x5D6A: +case 0x5F6A: +case 0x516B: +case 0x536B: +case 0x556B: +case 0x576B: +case 0x596B: +case 0x5B6B: +case 0x5D6B: +case 0x5F6B: +case 0x516C: +case 0x536C: +case 0x556C: +case 0x576C: +case 0x596C: +case 0x5B6C: +case 0x5D6C: +case 0x5F6C: +case 0x516D: +case 0x536D: +case 0x556D: +case 0x576D: +case 0x596D: +case 0x5B6D: +case 0x5D6D: +case 0x5F6D: +case 0x516E: +case 0x536E: +case 0x556E: +case 0x576E: +case 0x596E: +case 0x5B6E: +case 0x5D6E: +case 0x5F6E: +case 0x516F: +case 0x536F: +case 0x556F: +case 0x576F: +case 0x596F: +case 0x5B6F: +case 0x5D6F: +case 0x5F6F: + +// SUBQ +case 0x5168: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5370: +case 0x5570: +case 0x5770: +case 0x5970: +case 0x5B70: +case 0x5D70: +case 0x5F70: +case 0x5171: +case 0x5371: +case 0x5571: +case 0x5771: +case 0x5971: +case 0x5B71: +case 0x5D71: +case 0x5F71: +case 0x5172: +case 0x5372: +case 0x5572: +case 0x5772: +case 0x5972: +case 0x5B72: +case 0x5D72: +case 0x5F72: +case 0x5173: +case 0x5373: +case 0x5573: +case 0x5773: +case 0x5973: +case 0x5B73: +case 0x5D73: +case 0x5F73: +case 0x5174: +case 0x5374: +case 0x5574: +case 0x5774: +case 0x5974: +case 0x5B74: +case 0x5D74: +case 0x5F74: +case 0x5175: +case 0x5375: +case 0x5575: +case 0x5775: +case 0x5975: +case 0x5B75: +case 0x5D75: +case 0x5F75: +case 0x5176: +case 0x5376: +case 0x5576: +case 0x5776: +case 0x5976: +case 0x5B76: +case 0x5D76: +case 0x5F76: +case 0x5177: +case 0x5377: +case 0x5577: +case 0x5777: +case 0x5977: +case 0x5B77: +case 0x5D77: +case 0x5F77: + +// SUBQ +case 0x5170: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5378: +case 0x5578: +case 0x5778: +case 0x5978: +case 0x5B78: +case 0x5D78: +case 0x5F78: + +// SUBQ +case 0x5178: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5379: +case 0x5579: +case 0x5779: +case 0x5979: +case 0x5B79: +case 0x5D79: +case 0x5F79: + +// SUBQ +case 0x5179: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x535F: +case 0x555F: +case 0x575F: +case 0x595F: +case 0x5B5F: +case 0x5D5F: +case 0x5F5F: + +// SUBQ +case 0x515F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5367: +case 0x5567: +case 0x5767: +case 0x5967: +case 0x5B67: +case 0x5D67: +case 0x5F67: + +// SUBQ +case 0x5167: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(4) +case 0x5380: +case 0x5580: +case 0x5780: +case 0x5980: +case 0x5B80: +case 0x5D80: +case 0x5F80: +case 0x5181: +case 0x5381: +case 0x5581: +case 0x5781: +case 0x5981: +case 0x5B81: +case 0x5D81: +case 0x5F81: +case 0x5182: +case 0x5382: +case 0x5582: +case 0x5782: +case 0x5982: +case 0x5B82: +case 0x5D82: +case 0x5F82: +case 0x5183: +case 0x5383: +case 0x5583: +case 0x5783: +case 0x5983: +case 0x5B83: +case 0x5D83: +case 0x5F83: +case 0x5184: +case 0x5384: +case 0x5584: +case 0x5784: +case 0x5984: +case 0x5B84: +case 0x5D84: +case 0x5F84: +case 0x5185: +case 0x5385: +case 0x5585: +case 0x5785: +case 0x5985: +case 0x5B85: +case 0x5D85: +case 0x5F85: +case 0x5186: +case 0x5386: +case 0x5586: +case 0x5786: +case 0x5986: +case 0x5B86: +case 0x5D86: +case 0x5F86: +case 0x5187: +case 0x5387: +case 0x5587: +case 0x5787: +case 0x5987: +case 0x5B87: +case 0x5D87: +case 0x5F87: + +// SUBQ +case 0x5180: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u32)CPU->D[(Opcode >> 0) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0x5388: +case 0x5588: +case 0x5788: +case 0x5988: +case 0x5B88: +case 0x5D88: +case 0x5F88: +case 0x5189: +case 0x5389: +case 0x5589: +case 0x5789: +case 0x5989: +case 0x5B89: +case 0x5D89: +case 0x5F89: +case 0x518A: +case 0x538A: +case 0x558A: +case 0x578A: +case 0x598A: +case 0x5B8A: +case 0x5D8A: +case 0x5F8A: +case 0x518B: +case 0x538B: +case 0x558B: +case 0x578B: +case 0x598B: +case 0x5B8B: +case 0x5D8B: +case 0x5F8B: +case 0x518C: +case 0x538C: +case 0x558C: +case 0x578C: +case 0x598C: +case 0x5B8C: +case 0x5D8C: +case 0x5F8C: +case 0x518D: +case 0x538D: +case 0x558D: +case 0x578D: +case 0x598D: +case 0x5B8D: +case 0x5D8D: +case 0x5F8D: +case 0x518E: +case 0x538E: +case 0x558E: +case 0x578E: +case 0x598E: +case 0x5B8E: +case 0x5D8E: +case 0x5F8E: +case 0x518F: +case 0x538F: +case 0x558F: +case 0x578F: +case 0x598F: +case 0x5B8F: +case 0x5D8F: +case 0x5F8F: + +// SUBQ +case 0x5188: +{ + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + dst = (u32)CPU->A[(Opcode >> 0) & 7]; + res = dst - src; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(8) +case 0x5390: +case 0x5590: +case 0x5790: +case 0x5990: +case 0x5B90: +case 0x5D90: +case 0x5F90: +case 0x5191: +case 0x5391: +case 0x5591: +case 0x5791: +case 0x5991: +case 0x5B91: +case 0x5D91: +case 0x5F91: +case 0x5192: +case 0x5392: +case 0x5592: +case 0x5792: +case 0x5992: +case 0x5B92: +case 0x5D92: +case 0x5F92: +case 0x5193: +case 0x5393: +case 0x5593: +case 0x5793: +case 0x5993: +case 0x5B93: +case 0x5D93: +case 0x5F93: +case 0x5194: +case 0x5394: +case 0x5594: +case 0x5794: +case 0x5994: +case 0x5B94: +case 0x5D94: +case 0x5F94: +case 0x5195: +case 0x5395: +case 0x5595: +case 0x5795: +case 0x5995: +case 0x5B95: +case 0x5D95: +case 0x5F95: +case 0x5196: +case 0x5396: +case 0x5596: +case 0x5796: +case 0x5996: +case 0x5B96: +case 0x5D96: +case 0x5F96: +case 0x5197: +case 0x5397: +case 0x5597: +case 0x5797: +case 0x5997: +case 0x5B97: +case 0x5D97: +case 0x5F97: + +// SUBQ +case 0x5190: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x5398: +case 0x5598: +case 0x5798: +case 0x5998: +case 0x5B98: +case 0x5D98: +case 0x5F98: +case 0x5199: +case 0x5399: +case 0x5599: +case 0x5799: +case 0x5999: +case 0x5B99: +case 0x5D99: +case 0x5F99: +case 0x519A: +case 0x539A: +case 0x559A: +case 0x579A: +case 0x599A: +case 0x5B9A: +case 0x5D9A: +case 0x5F9A: +case 0x519B: +case 0x539B: +case 0x559B: +case 0x579B: +case 0x599B: +case 0x5B9B: +case 0x5D9B: +case 0x5F9B: +case 0x519C: +case 0x539C: +case 0x559C: +case 0x579C: +case 0x599C: +case 0x5B9C: +case 0x5D9C: +case 0x5F9C: +case 0x519D: +case 0x539D: +case 0x559D: +case 0x579D: +case 0x599D: +case 0x5B9D: +case 0x5D9D: +case 0x5F9D: +case 0x519E: +case 0x539E: +case 0x559E: +case 0x579E: +case 0x599E: +case 0x5B9E: +case 0x5D9E: +case 0x5F9E: + +// SUBQ +case 0x5198: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x53A0: +case 0x55A0: +case 0x57A0: +case 0x59A0: +case 0x5BA0: +case 0x5DA0: +case 0x5FA0: +case 0x51A1: +case 0x53A1: +case 0x55A1: +case 0x57A1: +case 0x59A1: +case 0x5BA1: +case 0x5DA1: +case 0x5FA1: +case 0x51A2: +case 0x53A2: +case 0x55A2: +case 0x57A2: +case 0x59A2: +case 0x5BA2: +case 0x5DA2: +case 0x5FA2: +case 0x51A3: +case 0x53A3: +case 0x55A3: +case 0x57A3: +case 0x59A3: +case 0x5BA3: +case 0x5DA3: +case 0x5FA3: +case 0x51A4: +case 0x53A4: +case 0x55A4: +case 0x57A4: +case 0x59A4: +case 0x5BA4: +case 0x5DA4: +case 0x5FA4: +case 0x51A5: +case 0x53A5: +case 0x55A5: +case 0x57A5: +case 0x59A5: +case 0x5BA5: +case 0x5DA5: +case 0x5FA5: +case 0x51A6: +case 0x53A6: +case 0x55A6: +case 0x57A6: +case 0x59A6: +case 0x5BA6: +case 0x5DA6: +case 0x5FA6: + +// SUBQ +case 0x51A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x53A8: +case 0x55A8: +case 0x57A8: +case 0x59A8: +case 0x5BA8: +case 0x5DA8: +case 0x5FA8: +case 0x51A9: +case 0x53A9: +case 0x55A9: +case 0x57A9: +case 0x59A9: +case 0x5BA9: +case 0x5DA9: +case 0x5FA9: +case 0x51AA: +case 0x53AA: +case 0x55AA: +case 0x57AA: +case 0x59AA: +case 0x5BAA: +case 0x5DAA: +case 0x5FAA: +case 0x51AB: +case 0x53AB: +case 0x55AB: +case 0x57AB: +case 0x59AB: +case 0x5BAB: +case 0x5DAB: +case 0x5FAB: +case 0x51AC: +case 0x53AC: +case 0x55AC: +case 0x57AC: +case 0x59AC: +case 0x5BAC: +case 0x5DAC: +case 0x5FAC: +case 0x51AD: +case 0x53AD: +case 0x55AD: +case 0x57AD: +case 0x59AD: +case 0x5BAD: +case 0x5DAD: +case 0x5FAD: +case 0x51AE: +case 0x53AE: +case 0x55AE: +case 0x57AE: +case 0x59AE: +case 0x5BAE: +case 0x5DAE: +case 0x5FAE: +case 0x51AF: +case 0x53AF: +case 0x55AF: +case 0x57AF: +case 0x59AF: +case 0x5BAF: +case 0x5DAF: +case 0x5FAF: + +// SUBQ +case 0x51A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x53B0: +case 0x55B0: +case 0x57B0: +case 0x59B0: +case 0x5BB0: +case 0x5DB0: +case 0x5FB0: +case 0x51B1: +case 0x53B1: +case 0x55B1: +case 0x57B1: +case 0x59B1: +case 0x5BB1: +case 0x5DB1: +case 0x5FB1: +case 0x51B2: +case 0x53B2: +case 0x55B2: +case 0x57B2: +case 0x59B2: +case 0x5BB2: +case 0x5DB2: +case 0x5FB2: +case 0x51B3: +case 0x53B3: +case 0x55B3: +case 0x57B3: +case 0x59B3: +case 0x5BB3: +case 0x5DB3: +case 0x5FB3: +case 0x51B4: +case 0x53B4: +case 0x55B4: +case 0x57B4: +case 0x59B4: +case 0x5BB4: +case 0x5DB4: +case 0x5FB4: +case 0x51B5: +case 0x53B5: +case 0x55B5: +case 0x57B5: +case 0x59B5: +case 0x5BB5: +case 0x5DB5: +case 0x5FB5: +case 0x51B6: +case 0x53B6: +case 0x55B6: +case 0x57B6: +case 0x59B6: +case 0x5BB6: +case 0x5DB6: +case 0x5FB6: +case 0x51B7: +case 0x53B7: +case 0x55B7: +case 0x57B7: +case 0x59B7: +case 0x5BB7: +case 0x5DB7: +case 0x5FB7: + +// SUBQ +case 0x51B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 14; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x53B8: +case 0x55B8: +case 0x57B8: +case 0x59B8: +case 0x5BB8: +case 0x5DB8: +case 0x5FB8: + +// SUBQ +case 0x51B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x53B9: +case 0x55B9: +case 0x57B9: +case 0x59B9: +case 0x5BB9: +case 0x5DB9: +case 0x5FB9: + +// SUBQ +case 0x51B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 16; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x539F: +case 0x559F: +case 0x579F: +case 0x599F: +case 0x5B9F: +case 0x5D9F: +case 0x5F9F: + +// SUBQ +case 0x519F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) +case 0x53A7: +case 0x55A7: +case 0x57A7: +case 0x59A7: +case 0x5BA7: +case 0x5DA7: +case 0x5FA7: + +// SUBQ +case 0x51A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (((Opcode >> 9) - 1) & 7) + 1; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(4) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op6.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op6.inc new file mode 100644 index 0000000000..393b91e470 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op6.inc @@ -0,0 +1,4434 @@ +case 0x6202: +case 0x6203: +case 0x6204: +case 0x6205: +case 0x6206: +case 0x6207: +case 0x6208: +case 0x6209: +case 0x620A: +case 0x620B: +case 0x620C: +case 0x620D: +case 0x620E: +case 0x620F: +case 0x6210: +case 0x6211: +case 0x6212: +case 0x6213: +case 0x6214: +case 0x6215: +case 0x6216: +case 0x6217: +case 0x6218: +case 0x6219: +case 0x621A: +case 0x621B: +case 0x621C: +case 0x621D: +case 0x621E: +case 0x621F: +case 0x6220: +case 0x6221: +case 0x6222: +case 0x6223: +case 0x6224: +case 0x6225: +case 0x6226: +case 0x6227: +case 0x6228: +case 0x6229: +case 0x622A: +case 0x622B: +case 0x622C: +case 0x622D: +case 0x622E: +case 0x622F: +case 0x6230: +case 0x6231: +case 0x6232: +case 0x6233: +case 0x6234: +case 0x6235: +case 0x6236: +case 0x6237: +case 0x6238: +case 0x6239: +case 0x623A: +case 0x623B: +case 0x623C: +case 0x623D: +case 0x623E: +case 0x623F: +case 0x6240: +case 0x6241: +case 0x6242: +case 0x6243: +case 0x6244: +case 0x6245: +case 0x6246: +case 0x6247: +case 0x6248: +case 0x6249: +case 0x624A: +case 0x624B: +case 0x624C: +case 0x624D: +case 0x624E: +case 0x624F: +case 0x6250: +case 0x6251: +case 0x6252: +case 0x6253: +case 0x6254: +case 0x6255: +case 0x6256: +case 0x6257: +case 0x6258: +case 0x6259: +case 0x625A: +case 0x625B: +case 0x625C: +case 0x625D: +case 0x625E: +case 0x625F: +case 0x6260: +case 0x6261: +case 0x6262: +case 0x6263: +case 0x6264: +case 0x6265: +case 0x6266: +case 0x6267: +case 0x6268: +case 0x6269: +case 0x626A: +case 0x626B: +case 0x626C: +case 0x626D: +case 0x626E: +case 0x626F: +case 0x6270: +case 0x6271: +case 0x6272: +case 0x6273: +case 0x6274: +case 0x6275: +case 0x6276: +case 0x6277: +case 0x6278: +case 0x6279: +case 0x627A: +case 0x627B: +case 0x627C: +case 0x627D: +case 0x627E: +case 0x627F: +case 0x6280: +case 0x6281: +case 0x6282: +case 0x6283: +case 0x6284: +case 0x6285: +case 0x6286: +case 0x6287: +case 0x6288: +case 0x6289: +case 0x628A: +case 0x628B: +case 0x628C: +case 0x628D: +case 0x628E: +case 0x628F: +case 0x6290: +case 0x6291: +case 0x6292: +case 0x6293: +case 0x6294: +case 0x6295: +case 0x6296: +case 0x6297: +case 0x6298: +case 0x6299: +case 0x629A: +case 0x629B: +case 0x629C: +case 0x629D: +case 0x629E: +case 0x629F: +case 0x62A0: +case 0x62A1: +case 0x62A2: +case 0x62A3: +case 0x62A4: +case 0x62A5: +case 0x62A6: +case 0x62A7: +case 0x62A8: +case 0x62A9: +case 0x62AA: +case 0x62AB: +case 0x62AC: +case 0x62AD: +case 0x62AE: +case 0x62AF: +case 0x62B0: +case 0x62B1: +case 0x62B2: +case 0x62B3: +case 0x62B4: +case 0x62B5: +case 0x62B6: +case 0x62B7: +case 0x62B8: +case 0x62B9: +case 0x62BA: +case 0x62BB: +case 0x62BC: +case 0x62BD: +case 0x62BE: +case 0x62BF: +case 0x62C0: +case 0x62C1: +case 0x62C2: +case 0x62C3: +case 0x62C4: +case 0x62C5: +case 0x62C6: +case 0x62C7: +case 0x62C8: +case 0x62C9: +case 0x62CA: +case 0x62CB: +case 0x62CC: +case 0x62CD: +case 0x62CE: +case 0x62CF: +case 0x62D0: +case 0x62D1: +case 0x62D2: +case 0x62D3: +case 0x62D4: +case 0x62D5: +case 0x62D6: +case 0x62D7: +case 0x62D8: +case 0x62D9: +case 0x62DA: +case 0x62DB: +case 0x62DC: +case 0x62DD: +case 0x62DE: +case 0x62DF: +case 0x62E0: +case 0x62E1: +case 0x62E2: +case 0x62E3: +case 0x62E4: +case 0x62E5: +case 0x62E6: +case 0x62E7: +case 0x62E8: +case 0x62E9: +case 0x62EA: +case 0x62EB: +case 0x62EC: +case 0x62ED: +case 0x62EE: +case 0x62EF: +case 0x62F0: +case 0x62F1: +case 0x62F2: +case 0x62F3: +case 0x62F4: +case 0x62F5: +case 0x62F6: +case 0x62F7: +case 0x62F8: +case 0x62F9: +case 0x62FA: +case 0x62FB: +case 0x62FC: +case 0x62FD: +case 0x62FE: +case 0x62FF: + +// BCC +case 0x6201: +{ + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6302: +case 0x6303: +case 0x6304: +case 0x6305: +case 0x6306: +case 0x6307: +case 0x6308: +case 0x6309: +case 0x630A: +case 0x630B: +case 0x630C: +case 0x630D: +case 0x630E: +case 0x630F: +case 0x6310: +case 0x6311: +case 0x6312: +case 0x6313: +case 0x6314: +case 0x6315: +case 0x6316: +case 0x6317: +case 0x6318: +case 0x6319: +case 0x631A: +case 0x631B: +case 0x631C: +case 0x631D: +case 0x631E: +case 0x631F: +case 0x6320: +case 0x6321: +case 0x6322: +case 0x6323: +case 0x6324: +case 0x6325: +case 0x6326: +case 0x6327: +case 0x6328: +case 0x6329: +case 0x632A: +case 0x632B: +case 0x632C: +case 0x632D: +case 0x632E: +case 0x632F: +case 0x6330: +case 0x6331: +case 0x6332: +case 0x6333: +case 0x6334: +case 0x6335: +case 0x6336: +case 0x6337: +case 0x6338: +case 0x6339: +case 0x633A: +case 0x633B: +case 0x633C: +case 0x633D: +case 0x633E: +case 0x633F: +case 0x6340: +case 0x6341: +case 0x6342: +case 0x6343: +case 0x6344: +case 0x6345: +case 0x6346: +case 0x6347: +case 0x6348: +case 0x6349: +case 0x634A: +case 0x634B: +case 0x634C: +case 0x634D: +case 0x634E: +case 0x634F: +case 0x6350: +case 0x6351: +case 0x6352: +case 0x6353: +case 0x6354: +case 0x6355: +case 0x6356: +case 0x6357: +case 0x6358: +case 0x6359: +case 0x635A: +case 0x635B: +case 0x635C: +case 0x635D: +case 0x635E: +case 0x635F: +case 0x6360: +case 0x6361: +case 0x6362: +case 0x6363: +case 0x6364: +case 0x6365: +case 0x6366: +case 0x6367: +case 0x6368: +case 0x6369: +case 0x636A: +case 0x636B: +case 0x636C: +case 0x636D: +case 0x636E: +case 0x636F: +case 0x6370: +case 0x6371: +case 0x6372: +case 0x6373: +case 0x6374: +case 0x6375: +case 0x6376: +case 0x6377: +case 0x6378: +case 0x6379: +case 0x637A: +case 0x637B: +case 0x637C: +case 0x637D: +case 0x637E: +case 0x637F: +case 0x6380: +case 0x6381: +case 0x6382: +case 0x6383: +case 0x6384: +case 0x6385: +case 0x6386: +case 0x6387: +case 0x6388: +case 0x6389: +case 0x638A: +case 0x638B: +case 0x638C: +case 0x638D: +case 0x638E: +case 0x638F: +case 0x6390: +case 0x6391: +case 0x6392: +case 0x6393: +case 0x6394: +case 0x6395: +case 0x6396: +case 0x6397: +case 0x6398: +case 0x6399: +case 0x639A: +case 0x639B: +case 0x639C: +case 0x639D: +case 0x639E: +case 0x639F: +case 0x63A0: +case 0x63A1: +case 0x63A2: +case 0x63A3: +case 0x63A4: +case 0x63A5: +case 0x63A6: +case 0x63A7: +case 0x63A8: +case 0x63A9: +case 0x63AA: +case 0x63AB: +case 0x63AC: +case 0x63AD: +case 0x63AE: +case 0x63AF: +case 0x63B0: +case 0x63B1: +case 0x63B2: +case 0x63B3: +case 0x63B4: +case 0x63B5: +case 0x63B6: +case 0x63B7: +case 0x63B8: +case 0x63B9: +case 0x63BA: +case 0x63BB: +case 0x63BC: +case 0x63BD: +case 0x63BE: +case 0x63BF: +case 0x63C0: +case 0x63C1: +case 0x63C2: +case 0x63C3: +case 0x63C4: +case 0x63C5: +case 0x63C6: +case 0x63C7: +case 0x63C8: +case 0x63C9: +case 0x63CA: +case 0x63CB: +case 0x63CC: +case 0x63CD: +case 0x63CE: +case 0x63CF: +case 0x63D0: +case 0x63D1: +case 0x63D2: +case 0x63D3: +case 0x63D4: +case 0x63D5: +case 0x63D6: +case 0x63D7: +case 0x63D8: +case 0x63D9: +case 0x63DA: +case 0x63DB: +case 0x63DC: +case 0x63DD: +case 0x63DE: +case 0x63DF: +case 0x63E0: +case 0x63E1: +case 0x63E2: +case 0x63E3: +case 0x63E4: +case 0x63E5: +case 0x63E6: +case 0x63E7: +case 0x63E8: +case 0x63E9: +case 0x63EA: +case 0x63EB: +case 0x63EC: +case 0x63ED: +case 0x63EE: +case 0x63EF: +case 0x63F0: +case 0x63F1: +case 0x63F2: +case 0x63F3: +case 0x63F4: +case 0x63F5: +case 0x63F6: +case 0x63F7: +case 0x63F8: +case 0x63F9: +case 0x63FA: +case 0x63FB: +case 0x63FC: +case 0x63FD: +case 0x63FE: +case 0x63FF: + +// BCC +case 0x6301: +{ + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6402: +case 0x6403: +case 0x6404: +case 0x6405: +case 0x6406: +case 0x6407: +case 0x6408: +case 0x6409: +case 0x640A: +case 0x640B: +case 0x640C: +case 0x640D: +case 0x640E: +case 0x640F: +case 0x6410: +case 0x6411: +case 0x6412: +case 0x6413: +case 0x6414: +case 0x6415: +case 0x6416: +case 0x6417: +case 0x6418: +case 0x6419: +case 0x641A: +case 0x641B: +case 0x641C: +case 0x641D: +case 0x641E: +case 0x641F: +case 0x6420: +case 0x6421: +case 0x6422: +case 0x6423: +case 0x6424: +case 0x6425: +case 0x6426: +case 0x6427: +case 0x6428: +case 0x6429: +case 0x642A: +case 0x642B: +case 0x642C: +case 0x642D: +case 0x642E: +case 0x642F: +case 0x6430: +case 0x6431: +case 0x6432: +case 0x6433: +case 0x6434: +case 0x6435: +case 0x6436: +case 0x6437: +case 0x6438: +case 0x6439: +case 0x643A: +case 0x643B: +case 0x643C: +case 0x643D: +case 0x643E: +case 0x643F: +case 0x6440: +case 0x6441: +case 0x6442: +case 0x6443: +case 0x6444: +case 0x6445: +case 0x6446: +case 0x6447: +case 0x6448: +case 0x6449: +case 0x644A: +case 0x644B: +case 0x644C: +case 0x644D: +case 0x644E: +case 0x644F: +case 0x6450: +case 0x6451: +case 0x6452: +case 0x6453: +case 0x6454: +case 0x6455: +case 0x6456: +case 0x6457: +case 0x6458: +case 0x6459: +case 0x645A: +case 0x645B: +case 0x645C: +case 0x645D: +case 0x645E: +case 0x645F: +case 0x6460: +case 0x6461: +case 0x6462: +case 0x6463: +case 0x6464: +case 0x6465: +case 0x6466: +case 0x6467: +case 0x6468: +case 0x6469: +case 0x646A: +case 0x646B: +case 0x646C: +case 0x646D: +case 0x646E: +case 0x646F: +case 0x6470: +case 0x6471: +case 0x6472: +case 0x6473: +case 0x6474: +case 0x6475: +case 0x6476: +case 0x6477: +case 0x6478: +case 0x6479: +case 0x647A: +case 0x647B: +case 0x647C: +case 0x647D: +case 0x647E: +case 0x647F: +case 0x6480: +case 0x6481: +case 0x6482: +case 0x6483: +case 0x6484: +case 0x6485: +case 0x6486: +case 0x6487: +case 0x6488: +case 0x6489: +case 0x648A: +case 0x648B: +case 0x648C: +case 0x648D: +case 0x648E: +case 0x648F: +case 0x6490: +case 0x6491: +case 0x6492: +case 0x6493: +case 0x6494: +case 0x6495: +case 0x6496: +case 0x6497: +case 0x6498: +case 0x6499: +case 0x649A: +case 0x649B: +case 0x649C: +case 0x649D: +case 0x649E: +case 0x649F: +case 0x64A0: +case 0x64A1: +case 0x64A2: +case 0x64A3: +case 0x64A4: +case 0x64A5: +case 0x64A6: +case 0x64A7: +case 0x64A8: +case 0x64A9: +case 0x64AA: +case 0x64AB: +case 0x64AC: +case 0x64AD: +case 0x64AE: +case 0x64AF: +case 0x64B0: +case 0x64B1: +case 0x64B2: +case 0x64B3: +case 0x64B4: +case 0x64B5: +case 0x64B6: +case 0x64B7: +case 0x64B8: +case 0x64B9: +case 0x64BA: +case 0x64BB: +case 0x64BC: +case 0x64BD: +case 0x64BE: +case 0x64BF: +case 0x64C0: +case 0x64C1: +case 0x64C2: +case 0x64C3: +case 0x64C4: +case 0x64C5: +case 0x64C6: +case 0x64C7: +case 0x64C8: +case 0x64C9: +case 0x64CA: +case 0x64CB: +case 0x64CC: +case 0x64CD: +case 0x64CE: +case 0x64CF: +case 0x64D0: +case 0x64D1: +case 0x64D2: +case 0x64D3: +case 0x64D4: +case 0x64D5: +case 0x64D6: +case 0x64D7: +case 0x64D8: +case 0x64D9: +case 0x64DA: +case 0x64DB: +case 0x64DC: +case 0x64DD: +case 0x64DE: +case 0x64DF: +case 0x64E0: +case 0x64E1: +case 0x64E2: +case 0x64E3: +case 0x64E4: +case 0x64E5: +case 0x64E6: +case 0x64E7: +case 0x64E8: +case 0x64E9: +case 0x64EA: +case 0x64EB: +case 0x64EC: +case 0x64ED: +case 0x64EE: +case 0x64EF: +case 0x64F0: +case 0x64F1: +case 0x64F2: +case 0x64F3: +case 0x64F4: +case 0x64F5: +case 0x64F6: +case 0x64F7: +case 0x64F8: +case 0x64F9: +case 0x64FA: +case 0x64FB: +case 0x64FC: +case 0x64FD: +case 0x64FE: +case 0x64FF: + +// BCC +case 0x6401: +{ + if (!(CPU->flag_C & 0x100)) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6502: +case 0x6503: +case 0x6504: +case 0x6505: +case 0x6506: +case 0x6507: +case 0x6508: +case 0x6509: +case 0x650A: +case 0x650B: +case 0x650C: +case 0x650D: +case 0x650E: +case 0x650F: +case 0x6510: +case 0x6511: +case 0x6512: +case 0x6513: +case 0x6514: +case 0x6515: +case 0x6516: +case 0x6517: +case 0x6518: +case 0x6519: +case 0x651A: +case 0x651B: +case 0x651C: +case 0x651D: +case 0x651E: +case 0x651F: +case 0x6520: +case 0x6521: +case 0x6522: +case 0x6523: +case 0x6524: +case 0x6525: +case 0x6526: +case 0x6527: +case 0x6528: +case 0x6529: +case 0x652A: +case 0x652B: +case 0x652C: +case 0x652D: +case 0x652E: +case 0x652F: +case 0x6530: +case 0x6531: +case 0x6532: +case 0x6533: +case 0x6534: +case 0x6535: +case 0x6536: +case 0x6537: +case 0x6538: +case 0x6539: +case 0x653A: +case 0x653B: +case 0x653C: +case 0x653D: +case 0x653E: +case 0x653F: +case 0x6540: +case 0x6541: +case 0x6542: +case 0x6543: +case 0x6544: +case 0x6545: +case 0x6546: +case 0x6547: +case 0x6548: +case 0x6549: +case 0x654A: +case 0x654B: +case 0x654C: +case 0x654D: +case 0x654E: +case 0x654F: +case 0x6550: +case 0x6551: +case 0x6552: +case 0x6553: +case 0x6554: +case 0x6555: +case 0x6556: +case 0x6557: +case 0x6558: +case 0x6559: +case 0x655A: +case 0x655B: +case 0x655C: +case 0x655D: +case 0x655E: +case 0x655F: +case 0x6560: +case 0x6561: +case 0x6562: +case 0x6563: +case 0x6564: +case 0x6565: +case 0x6566: +case 0x6567: +case 0x6568: +case 0x6569: +case 0x656A: +case 0x656B: +case 0x656C: +case 0x656D: +case 0x656E: +case 0x656F: +case 0x6570: +case 0x6571: +case 0x6572: +case 0x6573: +case 0x6574: +case 0x6575: +case 0x6576: +case 0x6577: +case 0x6578: +case 0x6579: +case 0x657A: +case 0x657B: +case 0x657C: +case 0x657D: +case 0x657E: +case 0x657F: +case 0x6580: +case 0x6581: +case 0x6582: +case 0x6583: +case 0x6584: +case 0x6585: +case 0x6586: +case 0x6587: +case 0x6588: +case 0x6589: +case 0x658A: +case 0x658B: +case 0x658C: +case 0x658D: +case 0x658E: +case 0x658F: +case 0x6590: +case 0x6591: +case 0x6592: +case 0x6593: +case 0x6594: +case 0x6595: +case 0x6596: +case 0x6597: +case 0x6598: +case 0x6599: +case 0x659A: +case 0x659B: +case 0x659C: +case 0x659D: +case 0x659E: +case 0x659F: +case 0x65A0: +case 0x65A1: +case 0x65A2: +case 0x65A3: +case 0x65A4: +case 0x65A5: +case 0x65A6: +case 0x65A7: +case 0x65A8: +case 0x65A9: +case 0x65AA: +case 0x65AB: +case 0x65AC: +case 0x65AD: +case 0x65AE: +case 0x65AF: +case 0x65B0: +case 0x65B1: +case 0x65B2: +case 0x65B3: +case 0x65B4: +case 0x65B5: +case 0x65B6: +case 0x65B7: +case 0x65B8: +case 0x65B9: +case 0x65BA: +case 0x65BB: +case 0x65BC: +case 0x65BD: +case 0x65BE: +case 0x65BF: +case 0x65C0: +case 0x65C1: +case 0x65C2: +case 0x65C3: +case 0x65C4: +case 0x65C5: +case 0x65C6: +case 0x65C7: +case 0x65C8: +case 0x65C9: +case 0x65CA: +case 0x65CB: +case 0x65CC: +case 0x65CD: +case 0x65CE: +case 0x65CF: +case 0x65D0: +case 0x65D1: +case 0x65D2: +case 0x65D3: +case 0x65D4: +case 0x65D5: +case 0x65D6: +case 0x65D7: +case 0x65D8: +case 0x65D9: +case 0x65DA: +case 0x65DB: +case 0x65DC: +case 0x65DD: +case 0x65DE: +case 0x65DF: +case 0x65E0: +case 0x65E1: +case 0x65E2: +case 0x65E3: +case 0x65E4: +case 0x65E5: +case 0x65E6: +case 0x65E7: +case 0x65E8: +case 0x65E9: +case 0x65EA: +case 0x65EB: +case 0x65EC: +case 0x65ED: +case 0x65EE: +case 0x65EF: +case 0x65F0: +case 0x65F1: +case 0x65F2: +case 0x65F3: +case 0x65F4: +case 0x65F5: +case 0x65F6: +case 0x65F7: +case 0x65F8: +case 0x65F9: +case 0x65FA: +case 0x65FB: +case 0x65FC: +case 0x65FD: +case 0x65FE: +case 0x65FF: + +// BCC +case 0x6501: +{ + if (CPU->flag_C & 0x100) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6602: +case 0x6603: +case 0x6604: +case 0x6605: +case 0x6606: +case 0x6607: +case 0x6608: +case 0x6609: +case 0x660A: +case 0x660B: +case 0x660C: +case 0x660D: +case 0x660E: +case 0x660F: +case 0x6610: +case 0x6611: +case 0x6612: +case 0x6613: +case 0x6614: +case 0x6615: +case 0x6616: +case 0x6617: +case 0x6618: +case 0x6619: +case 0x661A: +case 0x661B: +case 0x661C: +case 0x661D: +case 0x661E: +case 0x661F: +case 0x6620: +case 0x6621: +case 0x6622: +case 0x6623: +case 0x6624: +case 0x6625: +case 0x6626: +case 0x6627: +case 0x6628: +case 0x6629: +case 0x662A: +case 0x662B: +case 0x662C: +case 0x662D: +case 0x662E: +case 0x662F: +case 0x6630: +case 0x6631: +case 0x6632: +case 0x6633: +case 0x6634: +case 0x6635: +case 0x6636: +case 0x6637: +case 0x6638: +case 0x6639: +case 0x663A: +case 0x663B: +case 0x663C: +case 0x663D: +case 0x663E: +case 0x663F: +case 0x6640: +case 0x6641: +case 0x6642: +case 0x6643: +case 0x6644: +case 0x6645: +case 0x6646: +case 0x6647: +case 0x6648: +case 0x6649: +case 0x664A: +case 0x664B: +case 0x664C: +case 0x664D: +case 0x664E: +case 0x664F: +case 0x6650: +case 0x6651: +case 0x6652: +case 0x6653: +case 0x6654: +case 0x6655: +case 0x6656: +case 0x6657: +case 0x6658: +case 0x6659: +case 0x665A: +case 0x665B: +case 0x665C: +case 0x665D: +case 0x665E: +case 0x665F: +case 0x6660: +case 0x6661: +case 0x6662: +case 0x6663: +case 0x6664: +case 0x6665: +case 0x6666: +case 0x6667: +case 0x6668: +case 0x6669: +case 0x666A: +case 0x666B: +case 0x666C: +case 0x666D: +case 0x666E: +case 0x666F: +case 0x6670: +case 0x6671: +case 0x6672: +case 0x6673: +case 0x6674: +case 0x6675: +case 0x6676: +case 0x6677: +case 0x6678: +case 0x6679: +case 0x667A: +case 0x667B: +case 0x667C: +case 0x667D: +case 0x667E: +case 0x667F: +case 0x6680: +case 0x6681: +case 0x6682: +case 0x6683: +case 0x6684: +case 0x6685: +case 0x6686: +case 0x6687: +case 0x6688: +case 0x6689: +case 0x668A: +case 0x668B: +case 0x668C: +case 0x668D: +case 0x668E: +case 0x668F: +case 0x6690: +case 0x6691: +case 0x6692: +case 0x6693: +case 0x6694: +case 0x6695: +case 0x6696: +case 0x6697: +case 0x6698: +case 0x6699: +case 0x669A: +case 0x669B: +case 0x669C: +case 0x669D: +case 0x669E: +case 0x669F: +case 0x66A0: +case 0x66A1: +case 0x66A2: +case 0x66A3: +case 0x66A4: +case 0x66A5: +case 0x66A6: +case 0x66A7: +case 0x66A8: +case 0x66A9: +case 0x66AA: +case 0x66AB: +case 0x66AC: +case 0x66AD: +case 0x66AE: +case 0x66AF: +case 0x66B0: +case 0x66B1: +case 0x66B2: +case 0x66B3: +case 0x66B4: +case 0x66B5: +case 0x66B6: +case 0x66B7: +case 0x66B8: +case 0x66B9: +case 0x66BA: +case 0x66BB: +case 0x66BC: +case 0x66BD: +case 0x66BE: +case 0x66BF: +case 0x66C0: +case 0x66C1: +case 0x66C2: +case 0x66C3: +case 0x66C4: +case 0x66C5: +case 0x66C6: +case 0x66C7: +case 0x66C8: +case 0x66C9: +case 0x66CA: +case 0x66CB: +case 0x66CC: +case 0x66CD: +case 0x66CE: +case 0x66CF: +case 0x66D0: +case 0x66D1: +case 0x66D2: +case 0x66D3: +case 0x66D4: +case 0x66D5: +case 0x66D6: +case 0x66D7: +case 0x66D8: +case 0x66D9: +case 0x66DA: +case 0x66DB: +case 0x66DC: +case 0x66DD: +case 0x66DE: +case 0x66DF: +case 0x66E0: +case 0x66E1: +case 0x66E2: +case 0x66E3: +case 0x66E4: +case 0x66E5: +case 0x66E6: +case 0x66E7: +case 0x66E8: +case 0x66E9: +case 0x66EA: +case 0x66EB: +case 0x66EC: +case 0x66ED: +case 0x66EE: +case 0x66EF: +case 0x66F0: +case 0x66F1: +case 0x66F2: +case 0x66F3: +case 0x66F4: +case 0x66F5: +case 0x66F6: +case 0x66F7: +case 0x66F8: +case 0x66F9: +case 0x66FA: +case 0x66FB: +case 0x66FC: +case 0x66FD: +case 0x66FE: +case 0x66FF: + +// BCC +case 0x6601: +{ + if (CPU->flag_notZ) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6702: +case 0x6703: +case 0x6704: +case 0x6705: +case 0x6706: +case 0x6707: +case 0x6708: +case 0x6709: +case 0x670A: +case 0x670B: +case 0x670C: +case 0x670D: +case 0x670E: +case 0x670F: +case 0x6710: +case 0x6711: +case 0x6712: +case 0x6713: +case 0x6714: +case 0x6715: +case 0x6716: +case 0x6717: +case 0x6718: +case 0x6719: +case 0x671A: +case 0x671B: +case 0x671C: +case 0x671D: +case 0x671E: +case 0x671F: +case 0x6720: +case 0x6721: +case 0x6722: +case 0x6723: +case 0x6724: +case 0x6725: +case 0x6726: +case 0x6727: +case 0x6728: +case 0x6729: +case 0x672A: +case 0x672B: +case 0x672C: +case 0x672D: +case 0x672E: +case 0x672F: +case 0x6730: +case 0x6731: +case 0x6732: +case 0x6733: +case 0x6734: +case 0x6735: +case 0x6736: +case 0x6737: +case 0x6738: +case 0x6739: +case 0x673A: +case 0x673B: +case 0x673C: +case 0x673D: +case 0x673E: +case 0x673F: +case 0x6740: +case 0x6741: +case 0x6742: +case 0x6743: +case 0x6744: +case 0x6745: +case 0x6746: +case 0x6747: +case 0x6748: +case 0x6749: +case 0x674A: +case 0x674B: +case 0x674C: +case 0x674D: +case 0x674E: +case 0x674F: +case 0x6750: +case 0x6751: +case 0x6752: +case 0x6753: +case 0x6754: +case 0x6755: +case 0x6756: +case 0x6757: +case 0x6758: +case 0x6759: +case 0x675A: +case 0x675B: +case 0x675C: +case 0x675D: +case 0x675E: +case 0x675F: +case 0x6760: +case 0x6761: +case 0x6762: +case 0x6763: +case 0x6764: +case 0x6765: +case 0x6766: +case 0x6767: +case 0x6768: +case 0x6769: +case 0x676A: +case 0x676B: +case 0x676C: +case 0x676D: +case 0x676E: +case 0x676F: +case 0x6770: +case 0x6771: +case 0x6772: +case 0x6773: +case 0x6774: +case 0x6775: +case 0x6776: +case 0x6777: +case 0x6778: +case 0x6779: +case 0x677A: +case 0x677B: +case 0x677C: +case 0x677D: +case 0x677E: +case 0x677F: +case 0x6780: +case 0x6781: +case 0x6782: +case 0x6783: +case 0x6784: +case 0x6785: +case 0x6786: +case 0x6787: +case 0x6788: +case 0x6789: +case 0x678A: +case 0x678B: +case 0x678C: +case 0x678D: +case 0x678E: +case 0x678F: +case 0x6790: +case 0x6791: +case 0x6792: +case 0x6793: +case 0x6794: +case 0x6795: +case 0x6796: +case 0x6797: +case 0x6798: +case 0x6799: +case 0x679A: +case 0x679B: +case 0x679C: +case 0x679D: +case 0x679E: +case 0x679F: +case 0x67A0: +case 0x67A1: +case 0x67A2: +case 0x67A3: +case 0x67A4: +case 0x67A5: +case 0x67A6: +case 0x67A7: +case 0x67A8: +case 0x67A9: +case 0x67AA: +case 0x67AB: +case 0x67AC: +case 0x67AD: +case 0x67AE: +case 0x67AF: +case 0x67B0: +case 0x67B1: +case 0x67B2: +case 0x67B3: +case 0x67B4: +case 0x67B5: +case 0x67B6: +case 0x67B7: +case 0x67B8: +case 0x67B9: +case 0x67BA: +case 0x67BB: +case 0x67BC: +case 0x67BD: +case 0x67BE: +case 0x67BF: +case 0x67C0: +case 0x67C1: +case 0x67C2: +case 0x67C3: +case 0x67C4: +case 0x67C5: +case 0x67C6: +case 0x67C7: +case 0x67C8: +case 0x67C9: +case 0x67CA: +case 0x67CB: +case 0x67CC: +case 0x67CD: +case 0x67CE: +case 0x67CF: +case 0x67D0: +case 0x67D1: +case 0x67D2: +case 0x67D3: +case 0x67D4: +case 0x67D5: +case 0x67D6: +case 0x67D7: +case 0x67D8: +case 0x67D9: +case 0x67DA: +case 0x67DB: +case 0x67DC: +case 0x67DD: +case 0x67DE: +case 0x67DF: +case 0x67E0: +case 0x67E1: +case 0x67E2: +case 0x67E3: +case 0x67E4: +case 0x67E5: +case 0x67E6: +case 0x67E7: +case 0x67E8: +case 0x67E9: +case 0x67EA: +case 0x67EB: +case 0x67EC: +case 0x67ED: +case 0x67EE: +case 0x67EF: +case 0x67F0: +case 0x67F1: +case 0x67F2: +case 0x67F3: +case 0x67F4: +case 0x67F5: +case 0x67F6: +case 0x67F7: +case 0x67F8: +case 0x67F9: +case 0x67FA: +case 0x67FB: +case 0x67FC: +case 0x67FD: +case 0x67FE: +case 0x67FF: + +// BCC +case 0x6701: +{ + if (!CPU->flag_notZ) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6802: +case 0x6803: +case 0x6804: +case 0x6805: +case 0x6806: +case 0x6807: +case 0x6808: +case 0x6809: +case 0x680A: +case 0x680B: +case 0x680C: +case 0x680D: +case 0x680E: +case 0x680F: +case 0x6810: +case 0x6811: +case 0x6812: +case 0x6813: +case 0x6814: +case 0x6815: +case 0x6816: +case 0x6817: +case 0x6818: +case 0x6819: +case 0x681A: +case 0x681B: +case 0x681C: +case 0x681D: +case 0x681E: +case 0x681F: +case 0x6820: +case 0x6821: +case 0x6822: +case 0x6823: +case 0x6824: +case 0x6825: +case 0x6826: +case 0x6827: +case 0x6828: +case 0x6829: +case 0x682A: +case 0x682B: +case 0x682C: +case 0x682D: +case 0x682E: +case 0x682F: +case 0x6830: +case 0x6831: +case 0x6832: +case 0x6833: +case 0x6834: +case 0x6835: +case 0x6836: +case 0x6837: +case 0x6838: +case 0x6839: +case 0x683A: +case 0x683B: +case 0x683C: +case 0x683D: +case 0x683E: +case 0x683F: +case 0x6840: +case 0x6841: +case 0x6842: +case 0x6843: +case 0x6844: +case 0x6845: +case 0x6846: +case 0x6847: +case 0x6848: +case 0x6849: +case 0x684A: +case 0x684B: +case 0x684C: +case 0x684D: +case 0x684E: +case 0x684F: +case 0x6850: +case 0x6851: +case 0x6852: +case 0x6853: +case 0x6854: +case 0x6855: +case 0x6856: +case 0x6857: +case 0x6858: +case 0x6859: +case 0x685A: +case 0x685B: +case 0x685C: +case 0x685D: +case 0x685E: +case 0x685F: +case 0x6860: +case 0x6861: +case 0x6862: +case 0x6863: +case 0x6864: +case 0x6865: +case 0x6866: +case 0x6867: +case 0x6868: +case 0x6869: +case 0x686A: +case 0x686B: +case 0x686C: +case 0x686D: +case 0x686E: +case 0x686F: +case 0x6870: +case 0x6871: +case 0x6872: +case 0x6873: +case 0x6874: +case 0x6875: +case 0x6876: +case 0x6877: +case 0x6878: +case 0x6879: +case 0x687A: +case 0x687B: +case 0x687C: +case 0x687D: +case 0x687E: +case 0x687F: +case 0x6880: +case 0x6881: +case 0x6882: +case 0x6883: +case 0x6884: +case 0x6885: +case 0x6886: +case 0x6887: +case 0x6888: +case 0x6889: +case 0x688A: +case 0x688B: +case 0x688C: +case 0x688D: +case 0x688E: +case 0x688F: +case 0x6890: +case 0x6891: +case 0x6892: +case 0x6893: +case 0x6894: +case 0x6895: +case 0x6896: +case 0x6897: +case 0x6898: +case 0x6899: +case 0x689A: +case 0x689B: +case 0x689C: +case 0x689D: +case 0x689E: +case 0x689F: +case 0x68A0: +case 0x68A1: +case 0x68A2: +case 0x68A3: +case 0x68A4: +case 0x68A5: +case 0x68A6: +case 0x68A7: +case 0x68A8: +case 0x68A9: +case 0x68AA: +case 0x68AB: +case 0x68AC: +case 0x68AD: +case 0x68AE: +case 0x68AF: +case 0x68B0: +case 0x68B1: +case 0x68B2: +case 0x68B3: +case 0x68B4: +case 0x68B5: +case 0x68B6: +case 0x68B7: +case 0x68B8: +case 0x68B9: +case 0x68BA: +case 0x68BB: +case 0x68BC: +case 0x68BD: +case 0x68BE: +case 0x68BF: +case 0x68C0: +case 0x68C1: +case 0x68C2: +case 0x68C3: +case 0x68C4: +case 0x68C5: +case 0x68C6: +case 0x68C7: +case 0x68C8: +case 0x68C9: +case 0x68CA: +case 0x68CB: +case 0x68CC: +case 0x68CD: +case 0x68CE: +case 0x68CF: +case 0x68D0: +case 0x68D1: +case 0x68D2: +case 0x68D3: +case 0x68D4: +case 0x68D5: +case 0x68D6: +case 0x68D7: +case 0x68D8: +case 0x68D9: +case 0x68DA: +case 0x68DB: +case 0x68DC: +case 0x68DD: +case 0x68DE: +case 0x68DF: +case 0x68E0: +case 0x68E1: +case 0x68E2: +case 0x68E3: +case 0x68E4: +case 0x68E5: +case 0x68E6: +case 0x68E7: +case 0x68E8: +case 0x68E9: +case 0x68EA: +case 0x68EB: +case 0x68EC: +case 0x68ED: +case 0x68EE: +case 0x68EF: +case 0x68F0: +case 0x68F1: +case 0x68F2: +case 0x68F3: +case 0x68F4: +case 0x68F5: +case 0x68F6: +case 0x68F7: +case 0x68F8: +case 0x68F9: +case 0x68FA: +case 0x68FB: +case 0x68FC: +case 0x68FD: +case 0x68FE: +case 0x68FF: + +// BCC +case 0x6801: +{ + if (!(CPU->flag_V & 0x80)) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6902: +case 0x6903: +case 0x6904: +case 0x6905: +case 0x6906: +case 0x6907: +case 0x6908: +case 0x6909: +case 0x690A: +case 0x690B: +case 0x690C: +case 0x690D: +case 0x690E: +case 0x690F: +case 0x6910: +case 0x6911: +case 0x6912: +case 0x6913: +case 0x6914: +case 0x6915: +case 0x6916: +case 0x6917: +case 0x6918: +case 0x6919: +case 0x691A: +case 0x691B: +case 0x691C: +case 0x691D: +case 0x691E: +case 0x691F: +case 0x6920: +case 0x6921: +case 0x6922: +case 0x6923: +case 0x6924: +case 0x6925: +case 0x6926: +case 0x6927: +case 0x6928: +case 0x6929: +case 0x692A: +case 0x692B: +case 0x692C: +case 0x692D: +case 0x692E: +case 0x692F: +case 0x6930: +case 0x6931: +case 0x6932: +case 0x6933: +case 0x6934: +case 0x6935: +case 0x6936: +case 0x6937: +case 0x6938: +case 0x6939: +case 0x693A: +case 0x693B: +case 0x693C: +case 0x693D: +case 0x693E: +case 0x693F: +case 0x6940: +case 0x6941: +case 0x6942: +case 0x6943: +case 0x6944: +case 0x6945: +case 0x6946: +case 0x6947: +case 0x6948: +case 0x6949: +case 0x694A: +case 0x694B: +case 0x694C: +case 0x694D: +case 0x694E: +case 0x694F: +case 0x6950: +case 0x6951: +case 0x6952: +case 0x6953: +case 0x6954: +case 0x6955: +case 0x6956: +case 0x6957: +case 0x6958: +case 0x6959: +case 0x695A: +case 0x695B: +case 0x695C: +case 0x695D: +case 0x695E: +case 0x695F: +case 0x6960: +case 0x6961: +case 0x6962: +case 0x6963: +case 0x6964: +case 0x6965: +case 0x6966: +case 0x6967: +case 0x6968: +case 0x6969: +case 0x696A: +case 0x696B: +case 0x696C: +case 0x696D: +case 0x696E: +case 0x696F: +case 0x6970: +case 0x6971: +case 0x6972: +case 0x6973: +case 0x6974: +case 0x6975: +case 0x6976: +case 0x6977: +case 0x6978: +case 0x6979: +case 0x697A: +case 0x697B: +case 0x697C: +case 0x697D: +case 0x697E: +case 0x697F: +case 0x6980: +case 0x6981: +case 0x6982: +case 0x6983: +case 0x6984: +case 0x6985: +case 0x6986: +case 0x6987: +case 0x6988: +case 0x6989: +case 0x698A: +case 0x698B: +case 0x698C: +case 0x698D: +case 0x698E: +case 0x698F: +case 0x6990: +case 0x6991: +case 0x6992: +case 0x6993: +case 0x6994: +case 0x6995: +case 0x6996: +case 0x6997: +case 0x6998: +case 0x6999: +case 0x699A: +case 0x699B: +case 0x699C: +case 0x699D: +case 0x699E: +case 0x699F: +case 0x69A0: +case 0x69A1: +case 0x69A2: +case 0x69A3: +case 0x69A4: +case 0x69A5: +case 0x69A6: +case 0x69A7: +case 0x69A8: +case 0x69A9: +case 0x69AA: +case 0x69AB: +case 0x69AC: +case 0x69AD: +case 0x69AE: +case 0x69AF: +case 0x69B0: +case 0x69B1: +case 0x69B2: +case 0x69B3: +case 0x69B4: +case 0x69B5: +case 0x69B6: +case 0x69B7: +case 0x69B8: +case 0x69B9: +case 0x69BA: +case 0x69BB: +case 0x69BC: +case 0x69BD: +case 0x69BE: +case 0x69BF: +case 0x69C0: +case 0x69C1: +case 0x69C2: +case 0x69C3: +case 0x69C4: +case 0x69C5: +case 0x69C6: +case 0x69C7: +case 0x69C8: +case 0x69C9: +case 0x69CA: +case 0x69CB: +case 0x69CC: +case 0x69CD: +case 0x69CE: +case 0x69CF: +case 0x69D0: +case 0x69D1: +case 0x69D2: +case 0x69D3: +case 0x69D4: +case 0x69D5: +case 0x69D6: +case 0x69D7: +case 0x69D8: +case 0x69D9: +case 0x69DA: +case 0x69DB: +case 0x69DC: +case 0x69DD: +case 0x69DE: +case 0x69DF: +case 0x69E0: +case 0x69E1: +case 0x69E2: +case 0x69E3: +case 0x69E4: +case 0x69E5: +case 0x69E6: +case 0x69E7: +case 0x69E8: +case 0x69E9: +case 0x69EA: +case 0x69EB: +case 0x69EC: +case 0x69ED: +case 0x69EE: +case 0x69EF: +case 0x69F0: +case 0x69F1: +case 0x69F2: +case 0x69F3: +case 0x69F4: +case 0x69F5: +case 0x69F6: +case 0x69F7: +case 0x69F8: +case 0x69F9: +case 0x69FA: +case 0x69FB: +case 0x69FC: +case 0x69FD: +case 0x69FE: +case 0x69FF: + +// BCC +case 0x6901: +{ + if (CPU->flag_V & 0x80) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6A02: +case 0x6A03: +case 0x6A04: +case 0x6A05: +case 0x6A06: +case 0x6A07: +case 0x6A08: +case 0x6A09: +case 0x6A0A: +case 0x6A0B: +case 0x6A0C: +case 0x6A0D: +case 0x6A0E: +case 0x6A0F: +case 0x6A10: +case 0x6A11: +case 0x6A12: +case 0x6A13: +case 0x6A14: +case 0x6A15: +case 0x6A16: +case 0x6A17: +case 0x6A18: +case 0x6A19: +case 0x6A1A: +case 0x6A1B: +case 0x6A1C: +case 0x6A1D: +case 0x6A1E: +case 0x6A1F: +case 0x6A20: +case 0x6A21: +case 0x6A22: +case 0x6A23: +case 0x6A24: +case 0x6A25: +case 0x6A26: +case 0x6A27: +case 0x6A28: +case 0x6A29: +case 0x6A2A: +case 0x6A2B: +case 0x6A2C: +case 0x6A2D: +case 0x6A2E: +case 0x6A2F: +case 0x6A30: +case 0x6A31: +case 0x6A32: +case 0x6A33: +case 0x6A34: +case 0x6A35: +case 0x6A36: +case 0x6A37: +case 0x6A38: +case 0x6A39: +case 0x6A3A: +case 0x6A3B: +case 0x6A3C: +case 0x6A3D: +case 0x6A3E: +case 0x6A3F: +case 0x6A40: +case 0x6A41: +case 0x6A42: +case 0x6A43: +case 0x6A44: +case 0x6A45: +case 0x6A46: +case 0x6A47: +case 0x6A48: +case 0x6A49: +case 0x6A4A: +case 0x6A4B: +case 0x6A4C: +case 0x6A4D: +case 0x6A4E: +case 0x6A4F: +case 0x6A50: +case 0x6A51: +case 0x6A52: +case 0x6A53: +case 0x6A54: +case 0x6A55: +case 0x6A56: +case 0x6A57: +case 0x6A58: +case 0x6A59: +case 0x6A5A: +case 0x6A5B: +case 0x6A5C: +case 0x6A5D: +case 0x6A5E: +case 0x6A5F: +case 0x6A60: +case 0x6A61: +case 0x6A62: +case 0x6A63: +case 0x6A64: +case 0x6A65: +case 0x6A66: +case 0x6A67: +case 0x6A68: +case 0x6A69: +case 0x6A6A: +case 0x6A6B: +case 0x6A6C: +case 0x6A6D: +case 0x6A6E: +case 0x6A6F: +case 0x6A70: +case 0x6A71: +case 0x6A72: +case 0x6A73: +case 0x6A74: +case 0x6A75: +case 0x6A76: +case 0x6A77: +case 0x6A78: +case 0x6A79: +case 0x6A7A: +case 0x6A7B: +case 0x6A7C: +case 0x6A7D: +case 0x6A7E: +case 0x6A7F: +case 0x6A80: +case 0x6A81: +case 0x6A82: +case 0x6A83: +case 0x6A84: +case 0x6A85: +case 0x6A86: +case 0x6A87: +case 0x6A88: +case 0x6A89: +case 0x6A8A: +case 0x6A8B: +case 0x6A8C: +case 0x6A8D: +case 0x6A8E: +case 0x6A8F: +case 0x6A90: +case 0x6A91: +case 0x6A92: +case 0x6A93: +case 0x6A94: +case 0x6A95: +case 0x6A96: +case 0x6A97: +case 0x6A98: +case 0x6A99: +case 0x6A9A: +case 0x6A9B: +case 0x6A9C: +case 0x6A9D: +case 0x6A9E: +case 0x6A9F: +case 0x6AA0: +case 0x6AA1: +case 0x6AA2: +case 0x6AA3: +case 0x6AA4: +case 0x6AA5: +case 0x6AA6: +case 0x6AA7: +case 0x6AA8: +case 0x6AA9: +case 0x6AAA: +case 0x6AAB: +case 0x6AAC: +case 0x6AAD: +case 0x6AAE: +case 0x6AAF: +case 0x6AB0: +case 0x6AB1: +case 0x6AB2: +case 0x6AB3: +case 0x6AB4: +case 0x6AB5: +case 0x6AB6: +case 0x6AB7: +case 0x6AB8: +case 0x6AB9: +case 0x6ABA: +case 0x6ABB: +case 0x6ABC: +case 0x6ABD: +case 0x6ABE: +case 0x6ABF: +case 0x6AC0: +case 0x6AC1: +case 0x6AC2: +case 0x6AC3: +case 0x6AC4: +case 0x6AC5: +case 0x6AC6: +case 0x6AC7: +case 0x6AC8: +case 0x6AC9: +case 0x6ACA: +case 0x6ACB: +case 0x6ACC: +case 0x6ACD: +case 0x6ACE: +case 0x6ACF: +case 0x6AD0: +case 0x6AD1: +case 0x6AD2: +case 0x6AD3: +case 0x6AD4: +case 0x6AD5: +case 0x6AD6: +case 0x6AD7: +case 0x6AD8: +case 0x6AD9: +case 0x6ADA: +case 0x6ADB: +case 0x6ADC: +case 0x6ADD: +case 0x6ADE: +case 0x6ADF: +case 0x6AE0: +case 0x6AE1: +case 0x6AE2: +case 0x6AE3: +case 0x6AE4: +case 0x6AE5: +case 0x6AE6: +case 0x6AE7: +case 0x6AE8: +case 0x6AE9: +case 0x6AEA: +case 0x6AEB: +case 0x6AEC: +case 0x6AED: +case 0x6AEE: +case 0x6AEF: +case 0x6AF0: +case 0x6AF1: +case 0x6AF2: +case 0x6AF3: +case 0x6AF4: +case 0x6AF5: +case 0x6AF6: +case 0x6AF7: +case 0x6AF8: +case 0x6AF9: +case 0x6AFA: +case 0x6AFB: +case 0x6AFC: +case 0x6AFD: +case 0x6AFE: +case 0x6AFF: + +// BCC +case 0x6A01: +{ + if (!(CPU->flag_N & 0x80)) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6B02: +case 0x6B03: +case 0x6B04: +case 0x6B05: +case 0x6B06: +case 0x6B07: +case 0x6B08: +case 0x6B09: +case 0x6B0A: +case 0x6B0B: +case 0x6B0C: +case 0x6B0D: +case 0x6B0E: +case 0x6B0F: +case 0x6B10: +case 0x6B11: +case 0x6B12: +case 0x6B13: +case 0x6B14: +case 0x6B15: +case 0x6B16: +case 0x6B17: +case 0x6B18: +case 0x6B19: +case 0x6B1A: +case 0x6B1B: +case 0x6B1C: +case 0x6B1D: +case 0x6B1E: +case 0x6B1F: +case 0x6B20: +case 0x6B21: +case 0x6B22: +case 0x6B23: +case 0x6B24: +case 0x6B25: +case 0x6B26: +case 0x6B27: +case 0x6B28: +case 0x6B29: +case 0x6B2A: +case 0x6B2B: +case 0x6B2C: +case 0x6B2D: +case 0x6B2E: +case 0x6B2F: +case 0x6B30: +case 0x6B31: +case 0x6B32: +case 0x6B33: +case 0x6B34: +case 0x6B35: +case 0x6B36: +case 0x6B37: +case 0x6B38: +case 0x6B39: +case 0x6B3A: +case 0x6B3B: +case 0x6B3C: +case 0x6B3D: +case 0x6B3E: +case 0x6B3F: +case 0x6B40: +case 0x6B41: +case 0x6B42: +case 0x6B43: +case 0x6B44: +case 0x6B45: +case 0x6B46: +case 0x6B47: +case 0x6B48: +case 0x6B49: +case 0x6B4A: +case 0x6B4B: +case 0x6B4C: +case 0x6B4D: +case 0x6B4E: +case 0x6B4F: +case 0x6B50: +case 0x6B51: +case 0x6B52: +case 0x6B53: +case 0x6B54: +case 0x6B55: +case 0x6B56: +case 0x6B57: +case 0x6B58: +case 0x6B59: +case 0x6B5A: +case 0x6B5B: +case 0x6B5C: +case 0x6B5D: +case 0x6B5E: +case 0x6B5F: +case 0x6B60: +case 0x6B61: +case 0x6B62: +case 0x6B63: +case 0x6B64: +case 0x6B65: +case 0x6B66: +case 0x6B67: +case 0x6B68: +case 0x6B69: +case 0x6B6A: +case 0x6B6B: +case 0x6B6C: +case 0x6B6D: +case 0x6B6E: +case 0x6B6F: +case 0x6B70: +case 0x6B71: +case 0x6B72: +case 0x6B73: +case 0x6B74: +case 0x6B75: +case 0x6B76: +case 0x6B77: +case 0x6B78: +case 0x6B79: +case 0x6B7A: +case 0x6B7B: +case 0x6B7C: +case 0x6B7D: +case 0x6B7E: +case 0x6B7F: +case 0x6B80: +case 0x6B81: +case 0x6B82: +case 0x6B83: +case 0x6B84: +case 0x6B85: +case 0x6B86: +case 0x6B87: +case 0x6B88: +case 0x6B89: +case 0x6B8A: +case 0x6B8B: +case 0x6B8C: +case 0x6B8D: +case 0x6B8E: +case 0x6B8F: +case 0x6B90: +case 0x6B91: +case 0x6B92: +case 0x6B93: +case 0x6B94: +case 0x6B95: +case 0x6B96: +case 0x6B97: +case 0x6B98: +case 0x6B99: +case 0x6B9A: +case 0x6B9B: +case 0x6B9C: +case 0x6B9D: +case 0x6B9E: +case 0x6B9F: +case 0x6BA0: +case 0x6BA1: +case 0x6BA2: +case 0x6BA3: +case 0x6BA4: +case 0x6BA5: +case 0x6BA6: +case 0x6BA7: +case 0x6BA8: +case 0x6BA9: +case 0x6BAA: +case 0x6BAB: +case 0x6BAC: +case 0x6BAD: +case 0x6BAE: +case 0x6BAF: +case 0x6BB0: +case 0x6BB1: +case 0x6BB2: +case 0x6BB3: +case 0x6BB4: +case 0x6BB5: +case 0x6BB6: +case 0x6BB7: +case 0x6BB8: +case 0x6BB9: +case 0x6BBA: +case 0x6BBB: +case 0x6BBC: +case 0x6BBD: +case 0x6BBE: +case 0x6BBF: +case 0x6BC0: +case 0x6BC1: +case 0x6BC2: +case 0x6BC3: +case 0x6BC4: +case 0x6BC5: +case 0x6BC6: +case 0x6BC7: +case 0x6BC8: +case 0x6BC9: +case 0x6BCA: +case 0x6BCB: +case 0x6BCC: +case 0x6BCD: +case 0x6BCE: +case 0x6BCF: +case 0x6BD0: +case 0x6BD1: +case 0x6BD2: +case 0x6BD3: +case 0x6BD4: +case 0x6BD5: +case 0x6BD6: +case 0x6BD7: +case 0x6BD8: +case 0x6BD9: +case 0x6BDA: +case 0x6BDB: +case 0x6BDC: +case 0x6BDD: +case 0x6BDE: +case 0x6BDF: +case 0x6BE0: +case 0x6BE1: +case 0x6BE2: +case 0x6BE3: +case 0x6BE4: +case 0x6BE5: +case 0x6BE6: +case 0x6BE7: +case 0x6BE8: +case 0x6BE9: +case 0x6BEA: +case 0x6BEB: +case 0x6BEC: +case 0x6BED: +case 0x6BEE: +case 0x6BEF: +case 0x6BF0: +case 0x6BF1: +case 0x6BF2: +case 0x6BF3: +case 0x6BF4: +case 0x6BF5: +case 0x6BF6: +case 0x6BF7: +case 0x6BF8: +case 0x6BF9: +case 0x6BFA: +case 0x6BFB: +case 0x6BFC: +case 0x6BFD: +case 0x6BFE: +case 0x6BFF: + +// BCC +case 0x6B01: +{ + if (CPU->flag_N & 0x80) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6C02: +case 0x6C03: +case 0x6C04: +case 0x6C05: +case 0x6C06: +case 0x6C07: +case 0x6C08: +case 0x6C09: +case 0x6C0A: +case 0x6C0B: +case 0x6C0C: +case 0x6C0D: +case 0x6C0E: +case 0x6C0F: +case 0x6C10: +case 0x6C11: +case 0x6C12: +case 0x6C13: +case 0x6C14: +case 0x6C15: +case 0x6C16: +case 0x6C17: +case 0x6C18: +case 0x6C19: +case 0x6C1A: +case 0x6C1B: +case 0x6C1C: +case 0x6C1D: +case 0x6C1E: +case 0x6C1F: +case 0x6C20: +case 0x6C21: +case 0x6C22: +case 0x6C23: +case 0x6C24: +case 0x6C25: +case 0x6C26: +case 0x6C27: +case 0x6C28: +case 0x6C29: +case 0x6C2A: +case 0x6C2B: +case 0x6C2C: +case 0x6C2D: +case 0x6C2E: +case 0x6C2F: +case 0x6C30: +case 0x6C31: +case 0x6C32: +case 0x6C33: +case 0x6C34: +case 0x6C35: +case 0x6C36: +case 0x6C37: +case 0x6C38: +case 0x6C39: +case 0x6C3A: +case 0x6C3B: +case 0x6C3C: +case 0x6C3D: +case 0x6C3E: +case 0x6C3F: +case 0x6C40: +case 0x6C41: +case 0x6C42: +case 0x6C43: +case 0x6C44: +case 0x6C45: +case 0x6C46: +case 0x6C47: +case 0x6C48: +case 0x6C49: +case 0x6C4A: +case 0x6C4B: +case 0x6C4C: +case 0x6C4D: +case 0x6C4E: +case 0x6C4F: +case 0x6C50: +case 0x6C51: +case 0x6C52: +case 0x6C53: +case 0x6C54: +case 0x6C55: +case 0x6C56: +case 0x6C57: +case 0x6C58: +case 0x6C59: +case 0x6C5A: +case 0x6C5B: +case 0x6C5C: +case 0x6C5D: +case 0x6C5E: +case 0x6C5F: +case 0x6C60: +case 0x6C61: +case 0x6C62: +case 0x6C63: +case 0x6C64: +case 0x6C65: +case 0x6C66: +case 0x6C67: +case 0x6C68: +case 0x6C69: +case 0x6C6A: +case 0x6C6B: +case 0x6C6C: +case 0x6C6D: +case 0x6C6E: +case 0x6C6F: +case 0x6C70: +case 0x6C71: +case 0x6C72: +case 0x6C73: +case 0x6C74: +case 0x6C75: +case 0x6C76: +case 0x6C77: +case 0x6C78: +case 0x6C79: +case 0x6C7A: +case 0x6C7B: +case 0x6C7C: +case 0x6C7D: +case 0x6C7E: +case 0x6C7F: +case 0x6C80: +case 0x6C81: +case 0x6C82: +case 0x6C83: +case 0x6C84: +case 0x6C85: +case 0x6C86: +case 0x6C87: +case 0x6C88: +case 0x6C89: +case 0x6C8A: +case 0x6C8B: +case 0x6C8C: +case 0x6C8D: +case 0x6C8E: +case 0x6C8F: +case 0x6C90: +case 0x6C91: +case 0x6C92: +case 0x6C93: +case 0x6C94: +case 0x6C95: +case 0x6C96: +case 0x6C97: +case 0x6C98: +case 0x6C99: +case 0x6C9A: +case 0x6C9B: +case 0x6C9C: +case 0x6C9D: +case 0x6C9E: +case 0x6C9F: +case 0x6CA0: +case 0x6CA1: +case 0x6CA2: +case 0x6CA3: +case 0x6CA4: +case 0x6CA5: +case 0x6CA6: +case 0x6CA7: +case 0x6CA8: +case 0x6CA9: +case 0x6CAA: +case 0x6CAB: +case 0x6CAC: +case 0x6CAD: +case 0x6CAE: +case 0x6CAF: +case 0x6CB0: +case 0x6CB1: +case 0x6CB2: +case 0x6CB3: +case 0x6CB4: +case 0x6CB5: +case 0x6CB6: +case 0x6CB7: +case 0x6CB8: +case 0x6CB9: +case 0x6CBA: +case 0x6CBB: +case 0x6CBC: +case 0x6CBD: +case 0x6CBE: +case 0x6CBF: +case 0x6CC0: +case 0x6CC1: +case 0x6CC2: +case 0x6CC3: +case 0x6CC4: +case 0x6CC5: +case 0x6CC6: +case 0x6CC7: +case 0x6CC8: +case 0x6CC9: +case 0x6CCA: +case 0x6CCB: +case 0x6CCC: +case 0x6CCD: +case 0x6CCE: +case 0x6CCF: +case 0x6CD0: +case 0x6CD1: +case 0x6CD2: +case 0x6CD3: +case 0x6CD4: +case 0x6CD5: +case 0x6CD6: +case 0x6CD7: +case 0x6CD8: +case 0x6CD9: +case 0x6CDA: +case 0x6CDB: +case 0x6CDC: +case 0x6CDD: +case 0x6CDE: +case 0x6CDF: +case 0x6CE0: +case 0x6CE1: +case 0x6CE2: +case 0x6CE3: +case 0x6CE4: +case 0x6CE5: +case 0x6CE6: +case 0x6CE7: +case 0x6CE8: +case 0x6CE9: +case 0x6CEA: +case 0x6CEB: +case 0x6CEC: +case 0x6CED: +case 0x6CEE: +case 0x6CEF: +case 0x6CF0: +case 0x6CF1: +case 0x6CF2: +case 0x6CF3: +case 0x6CF4: +case 0x6CF5: +case 0x6CF6: +case 0x6CF7: +case 0x6CF8: +case 0x6CF9: +case 0x6CFA: +case 0x6CFB: +case 0x6CFC: +case 0x6CFD: +case 0x6CFE: +case 0x6CFF: + +// BCC +case 0x6C01: +{ + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6D02: +case 0x6D03: +case 0x6D04: +case 0x6D05: +case 0x6D06: +case 0x6D07: +case 0x6D08: +case 0x6D09: +case 0x6D0A: +case 0x6D0B: +case 0x6D0C: +case 0x6D0D: +case 0x6D0E: +case 0x6D0F: +case 0x6D10: +case 0x6D11: +case 0x6D12: +case 0x6D13: +case 0x6D14: +case 0x6D15: +case 0x6D16: +case 0x6D17: +case 0x6D18: +case 0x6D19: +case 0x6D1A: +case 0x6D1B: +case 0x6D1C: +case 0x6D1D: +case 0x6D1E: +case 0x6D1F: +case 0x6D20: +case 0x6D21: +case 0x6D22: +case 0x6D23: +case 0x6D24: +case 0x6D25: +case 0x6D26: +case 0x6D27: +case 0x6D28: +case 0x6D29: +case 0x6D2A: +case 0x6D2B: +case 0x6D2C: +case 0x6D2D: +case 0x6D2E: +case 0x6D2F: +case 0x6D30: +case 0x6D31: +case 0x6D32: +case 0x6D33: +case 0x6D34: +case 0x6D35: +case 0x6D36: +case 0x6D37: +case 0x6D38: +case 0x6D39: +case 0x6D3A: +case 0x6D3B: +case 0x6D3C: +case 0x6D3D: +case 0x6D3E: +case 0x6D3F: +case 0x6D40: +case 0x6D41: +case 0x6D42: +case 0x6D43: +case 0x6D44: +case 0x6D45: +case 0x6D46: +case 0x6D47: +case 0x6D48: +case 0x6D49: +case 0x6D4A: +case 0x6D4B: +case 0x6D4C: +case 0x6D4D: +case 0x6D4E: +case 0x6D4F: +case 0x6D50: +case 0x6D51: +case 0x6D52: +case 0x6D53: +case 0x6D54: +case 0x6D55: +case 0x6D56: +case 0x6D57: +case 0x6D58: +case 0x6D59: +case 0x6D5A: +case 0x6D5B: +case 0x6D5C: +case 0x6D5D: +case 0x6D5E: +case 0x6D5F: +case 0x6D60: +case 0x6D61: +case 0x6D62: +case 0x6D63: +case 0x6D64: +case 0x6D65: +case 0x6D66: +case 0x6D67: +case 0x6D68: +case 0x6D69: +case 0x6D6A: +case 0x6D6B: +case 0x6D6C: +case 0x6D6D: +case 0x6D6E: +case 0x6D6F: +case 0x6D70: +case 0x6D71: +case 0x6D72: +case 0x6D73: +case 0x6D74: +case 0x6D75: +case 0x6D76: +case 0x6D77: +case 0x6D78: +case 0x6D79: +case 0x6D7A: +case 0x6D7B: +case 0x6D7C: +case 0x6D7D: +case 0x6D7E: +case 0x6D7F: +case 0x6D80: +case 0x6D81: +case 0x6D82: +case 0x6D83: +case 0x6D84: +case 0x6D85: +case 0x6D86: +case 0x6D87: +case 0x6D88: +case 0x6D89: +case 0x6D8A: +case 0x6D8B: +case 0x6D8C: +case 0x6D8D: +case 0x6D8E: +case 0x6D8F: +case 0x6D90: +case 0x6D91: +case 0x6D92: +case 0x6D93: +case 0x6D94: +case 0x6D95: +case 0x6D96: +case 0x6D97: +case 0x6D98: +case 0x6D99: +case 0x6D9A: +case 0x6D9B: +case 0x6D9C: +case 0x6D9D: +case 0x6D9E: +case 0x6D9F: +case 0x6DA0: +case 0x6DA1: +case 0x6DA2: +case 0x6DA3: +case 0x6DA4: +case 0x6DA5: +case 0x6DA6: +case 0x6DA7: +case 0x6DA8: +case 0x6DA9: +case 0x6DAA: +case 0x6DAB: +case 0x6DAC: +case 0x6DAD: +case 0x6DAE: +case 0x6DAF: +case 0x6DB0: +case 0x6DB1: +case 0x6DB2: +case 0x6DB3: +case 0x6DB4: +case 0x6DB5: +case 0x6DB6: +case 0x6DB7: +case 0x6DB8: +case 0x6DB9: +case 0x6DBA: +case 0x6DBB: +case 0x6DBC: +case 0x6DBD: +case 0x6DBE: +case 0x6DBF: +case 0x6DC0: +case 0x6DC1: +case 0x6DC2: +case 0x6DC3: +case 0x6DC4: +case 0x6DC5: +case 0x6DC6: +case 0x6DC7: +case 0x6DC8: +case 0x6DC9: +case 0x6DCA: +case 0x6DCB: +case 0x6DCC: +case 0x6DCD: +case 0x6DCE: +case 0x6DCF: +case 0x6DD0: +case 0x6DD1: +case 0x6DD2: +case 0x6DD3: +case 0x6DD4: +case 0x6DD5: +case 0x6DD6: +case 0x6DD7: +case 0x6DD8: +case 0x6DD9: +case 0x6DDA: +case 0x6DDB: +case 0x6DDC: +case 0x6DDD: +case 0x6DDE: +case 0x6DDF: +case 0x6DE0: +case 0x6DE1: +case 0x6DE2: +case 0x6DE3: +case 0x6DE4: +case 0x6DE5: +case 0x6DE6: +case 0x6DE7: +case 0x6DE8: +case 0x6DE9: +case 0x6DEA: +case 0x6DEB: +case 0x6DEC: +case 0x6DED: +case 0x6DEE: +case 0x6DEF: +case 0x6DF0: +case 0x6DF1: +case 0x6DF2: +case 0x6DF3: +case 0x6DF4: +case 0x6DF5: +case 0x6DF6: +case 0x6DF7: +case 0x6DF8: +case 0x6DF9: +case 0x6DFA: +case 0x6DFB: +case 0x6DFC: +case 0x6DFD: +case 0x6DFE: +case 0x6DFF: + +// BCC +case 0x6D01: +{ + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6E02: +case 0x6E03: +case 0x6E04: +case 0x6E05: +case 0x6E06: +case 0x6E07: +case 0x6E08: +case 0x6E09: +case 0x6E0A: +case 0x6E0B: +case 0x6E0C: +case 0x6E0D: +case 0x6E0E: +case 0x6E0F: +case 0x6E10: +case 0x6E11: +case 0x6E12: +case 0x6E13: +case 0x6E14: +case 0x6E15: +case 0x6E16: +case 0x6E17: +case 0x6E18: +case 0x6E19: +case 0x6E1A: +case 0x6E1B: +case 0x6E1C: +case 0x6E1D: +case 0x6E1E: +case 0x6E1F: +case 0x6E20: +case 0x6E21: +case 0x6E22: +case 0x6E23: +case 0x6E24: +case 0x6E25: +case 0x6E26: +case 0x6E27: +case 0x6E28: +case 0x6E29: +case 0x6E2A: +case 0x6E2B: +case 0x6E2C: +case 0x6E2D: +case 0x6E2E: +case 0x6E2F: +case 0x6E30: +case 0x6E31: +case 0x6E32: +case 0x6E33: +case 0x6E34: +case 0x6E35: +case 0x6E36: +case 0x6E37: +case 0x6E38: +case 0x6E39: +case 0x6E3A: +case 0x6E3B: +case 0x6E3C: +case 0x6E3D: +case 0x6E3E: +case 0x6E3F: +case 0x6E40: +case 0x6E41: +case 0x6E42: +case 0x6E43: +case 0x6E44: +case 0x6E45: +case 0x6E46: +case 0x6E47: +case 0x6E48: +case 0x6E49: +case 0x6E4A: +case 0x6E4B: +case 0x6E4C: +case 0x6E4D: +case 0x6E4E: +case 0x6E4F: +case 0x6E50: +case 0x6E51: +case 0x6E52: +case 0x6E53: +case 0x6E54: +case 0x6E55: +case 0x6E56: +case 0x6E57: +case 0x6E58: +case 0x6E59: +case 0x6E5A: +case 0x6E5B: +case 0x6E5C: +case 0x6E5D: +case 0x6E5E: +case 0x6E5F: +case 0x6E60: +case 0x6E61: +case 0x6E62: +case 0x6E63: +case 0x6E64: +case 0x6E65: +case 0x6E66: +case 0x6E67: +case 0x6E68: +case 0x6E69: +case 0x6E6A: +case 0x6E6B: +case 0x6E6C: +case 0x6E6D: +case 0x6E6E: +case 0x6E6F: +case 0x6E70: +case 0x6E71: +case 0x6E72: +case 0x6E73: +case 0x6E74: +case 0x6E75: +case 0x6E76: +case 0x6E77: +case 0x6E78: +case 0x6E79: +case 0x6E7A: +case 0x6E7B: +case 0x6E7C: +case 0x6E7D: +case 0x6E7E: +case 0x6E7F: +case 0x6E80: +case 0x6E81: +case 0x6E82: +case 0x6E83: +case 0x6E84: +case 0x6E85: +case 0x6E86: +case 0x6E87: +case 0x6E88: +case 0x6E89: +case 0x6E8A: +case 0x6E8B: +case 0x6E8C: +case 0x6E8D: +case 0x6E8E: +case 0x6E8F: +case 0x6E90: +case 0x6E91: +case 0x6E92: +case 0x6E93: +case 0x6E94: +case 0x6E95: +case 0x6E96: +case 0x6E97: +case 0x6E98: +case 0x6E99: +case 0x6E9A: +case 0x6E9B: +case 0x6E9C: +case 0x6E9D: +case 0x6E9E: +case 0x6E9F: +case 0x6EA0: +case 0x6EA1: +case 0x6EA2: +case 0x6EA3: +case 0x6EA4: +case 0x6EA5: +case 0x6EA6: +case 0x6EA7: +case 0x6EA8: +case 0x6EA9: +case 0x6EAA: +case 0x6EAB: +case 0x6EAC: +case 0x6EAD: +case 0x6EAE: +case 0x6EAF: +case 0x6EB0: +case 0x6EB1: +case 0x6EB2: +case 0x6EB3: +case 0x6EB4: +case 0x6EB5: +case 0x6EB6: +case 0x6EB7: +case 0x6EB8: +case 0x6EB9: +case 0x6EBA: +case 0x6EBB: +case 0x6EBC: +case 0x6EBD: +case 0x6EBE: +case 0x6EBF: +case 0x6EC0: +case 0x6EC1: +case 0x6EC2: +case 0x6EC3: +case 0x6EC4: +case 0x6EC5: +case 0x6EC6: +case 0x6EC7: +case 0x6EC8: +case 0x6EC9: +case 0x6ECA: +case 0x6ECB: +case 0x6ECC: +case 0x6ECD: +case 0x6ECE: +case 0x6ECF: +case 0x6ED0: +case 0x6ED1: +case 0x6ED2: +case 0x6ED3: +case 0x6ED4: +case 0x6ED5: +case 0x6ED6: +case 0x6ED7: +case 0x6ED8: +case 0x6ED9: +case 0x6EDA: +case 0x6EDB: +case 0x6EDC: +case 0x6EDD: +case 0x6EDE: +case 0x6EDF: +case 0x6EE0: +case 0x6EE1: +case 0x6EE2: +case 0x6EE3: +case 0x6EE4: +case 0x6EE5: +case 0x6EE6: +case 0x6EE7: +case 0x6EE8: +case 0x6EE9: +case 0x6EEA: +case 0x6EEB: +case 0x6EEC: +case 0x6EED: +case 0x6EEE: +case 0x6EEF: +case 0x6EF0: +case 0x6EF1: +case 0x6EF2: +case 0x6EF3: +case 0x6EF4: +case 0x6EF5: +case 0x6EF6: +case 0x6EF7: +case 0x6EF8: +case 0x6EF9: +case 0x6EFA: +case 0x6EFB: +case 0x6EFC: +case 0x6EFD: +case 0x6EFE: +case 0x6EFF: + +// BCC +case 0x6E01: +{ + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) +case 0x6F02: +case 0x6F03: +case 0x6F04: +case 0x6F05: +case 0x6F06: +case 0x6F07: +case 0x6F08: +case 0x6F09: +case 0x6F0A: +case 0x6F0B: +case 0x6F0C: +case 0x6F0D: +case 0x6F0E: +case 0x6F0F: +case 0x6F10: +case 0x6F11: +case 0x6F12: +case 0x6F13: +case 0x6F14: +case 0x6F15: +case 0x6F16: +case 0x6F17: +case 0x6F18: +case 0x6F19: +case 0x6F1A: +case 0x6F1B: +case 0x6F1C: +case 0x6F1D: +case 0x6F1E: +case 0x6F1F: +case 0x6F20: +case 0x6F21: +case 0x6F22: +case 0x6F23: +case 0x6F24: +case 0x6F25: +case 0x6F26: +case 0x6F27: +case 0x6F28: +case 0x6F29: +case 0x6F2A: +case 0x6F2B: +case 0x6F2C: +case 0x6F2D: +case 0x6F2E: +case 0x6F2F: +case 0x6F30: +case 0x6F31: +case 0x6F32: +case 0x6F33: +case 0x6F34: +case 0x6F35: +case 0x6F36: +case 0x6F37: +case 0x6F38: +case 0x6F39: +case 0x6F3A: +case 0x6F3B: +case 0x6F3C: +case 0x6F3D: +case 0x6F3E: +case 0x6F3F: +case 0x6F40: +case 0x6F41: +case 0x6F42: +case 0x6F43: +case 0x6F44: +case 0x6F45: +case 0x6F46: +case 0x6F47: +case 0x6F48: +case 0x6F49: +case 0x6F4A: +case 0x6F4B: +case 0x6F4C: +case 0x6F4D: +case 0x6F4E: +case 0x6F4F: +case 0x6F50: +case 0x6F51: +case 0x6F52: +case 0x6F53: +case 0x6F54: +case 0x6F55: +case 0x6F56: +case 0x6F57: +case 0x6F58: +case 0x6F59: +case 0x6F5A: +case 0x6F5B: +case 0x6F5C: +case 0x6F5D: +case 0x6F5E: +case 0x6F5F: +case 0x6F60: +case 0x6F61: +case 0x6F62: +case 0x6F63: +case 0x6F64: +case 0x6F65: +case 0x6F66: +case 0x6F67: +case 0x6F68: +case 0x6F69: +case 0x6F6A: +case 0x6F6B: +case 0x6F6C: +case 0x6F6D: +case 0x6F6E: +case 0x6F6F: +case 0x6F70: +case 0x6F71: +case 0x6F72: +case 0x6F73: +case 0x6F74: +case 0x6F75: +case 0x6F76: +case 0x6F77: +case 0x6F78: +case 0x6F79: +case 0x6F7A: +case 0x6F7B: +case 0x6F7C: +case 0x6F7D: +case 0x6F7E: +case 0x6F7F: +case 0x6F80: +case 0x6F81: +case 0x6F82: +case 0x6F83: +case 0x6F84: +case 0x6F85: +case 0x6F86: +case 0x6F87: +case 0x6F88: +case 0x6F89: +case 0x6F8A: +case 0x6F8B: +case 0x6F8C: +case 0x6F8D: +case 0x6F8E: +case 0x6F8F: +case 0x6F90: +case 0x6F91: +case 0x6F92: +case 0x6F93: +case 0x6F94: +case 0x6F95: +case 0x6F96: +case 0x6F97: +case 0x6F98: +case 0x6F99: +case 0x6F9A: +case 0x6F9B: +case 0x6F9C: +case 0x6F9D: +case 0x6F9E: +case 0x6F9F: +case 0x6FA0: +case 0x6FA1: +case 0x6FA2: +case 0x6FA3: +case 0x6FA4: +case 0x6FA5: +case 0x6FA6: +case 0x6FA7: +case 0x6FA8: +case 0x6FA9: +case 0x6FAA: +case 0x6FAB: +case 0x6FAC: +case 0x6FAD: +case 0x6FAE: +case 0x6FAF: +case 0x6FB0: +case 0x6FB1: +case 0x6FB2: +case 0x6FB3: +case 0x6FB4: +case 0x6FB5: +case 0x6FB6: +case 0x6FB7: +case 0x6FB8: +case 0x6FB9: +case 0x6FBA: +case 0x6FBB: +case 0x6FBC: +case 0x6FBD: +case 0x6FBE: +case 0x6FBF: +case 0x6FC0: +case 0x6FC1: +case 0x6FC2: +case 0x6FC3: +case 0x6FC4: +case 0x6FC5: +case 0x6FC6: +case 0x6FC7: +case 0x6FC8: +case 0x6FC9: +case 0x6FCA: +case 0x6FCB: +case 0x6FCC: +case 0x6FCD: +case 0x6FCE: +case 0x6FCF: +case 0x6FD0: +case 0x6FD1: +case 0x6FD2: +case 0x6FD3: +case 0x6FD4: +case 0x6FD5: +case 0x6FD6: +case 0x6FD7: +case 0x6FD8: +case 0x6FD9: +case 0x6FDA: +case 0x6FDB: +case 0x6FDC: +case 0x6FDD: +case 0x6FDE: +case 0x6FDF: +case 0x6FE0: +case 0x6FE1: +case 0x6FE2: +case 0x6FE3: +case 0x6FE4: +case 0x6FE5: +case 0x6FE6: +case 0x6FE7: +case 0x6FE8: +case 0x6FE9: +case 0x6FEA: +case 0x6FEB: +case 0x6FEC: +case 0x6FED: +case 0x6FEE: +case 0x6FEF: +case 0x6FF0: +case 0x6FF1: +case 0x6FF2: +case 0x6FF3: +case 0x6FF4: +case 0x6FF5: +case 0x6FF6: +case 0x6FF7: +case 0x6FF8: +case 0x6FF9: +case 0x6FFA: +case 0x6FFB: +case 0x6FFC: +case 0x6FFD: +case 0x6FFE: +case 0x6FFF: + +// BCC +case 0x6F01: +{ + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + PC += (s32)(s8)Opcode; + timestamp += 2; + } +} +RET(8) + +// BCC16 +case 0x6200: +{ + if (CPU->flag_notZ && (!(CPU->flag_C & 0x100))) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6300: +{ + if ((!CPU->flag_notZ) || (CPU->flag_C & 0x100)) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6400: +{ + if (!(CPU->flag_C & 0x100)) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6500: +{ + if (CPU->flag_C & 0x100) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6600: +{ + if (CPU->flag_notZ) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6700: +{ + if (!CPU->flag_notZ) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6800: +{ + if (!(CPU->flag_V & 0x80)) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6900: +{ + if (CPU->flag_V & 0x80) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6A00: +{ + if (!(CPU->flag_N & 0x80)) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6B00: +{ + if (CPU->flag_N & 0x80) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6C00: +{ + if (!((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6D00: +{ + if ((CPU->flag_N ^ CPU->flag_V) & 0x80) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6E00: +{ + if (CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80))) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) + +// BCC16 +case 0x6F00: +{ + if ((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80)) + { + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); + RET(10) + } + PC += 2; +} +RET(12) +case 0x6002: +case 0x6003: +case 0x6004: +case 0x6005: +case 0x6006: +case 0x6007: +case 0x6008: +case 0x6009: +case 0x600A: +case 0x600B: +case 0x600C: +case 0x600D: +case 0x600E: +case 0x600F: +case 0x6010: +case 0x6011: +case 0x6012: +case 0x6013: +case 0x6014: +case 0x6015: +case 0x6016: +case 0x6017: +case 0x6018: +case 0x6019: +case 0x601A: +case 0x601B: +case 0x601C: +case 0x601D: +case 0x601E: +case 0x601F: +case 0x6020: +case 0x6021: +case 0x6022: +case 0x6023: +case 0x6024: +case 0x6025: +case 0x6026: +case 0x6027: +case 0x6028: +case 0x6029: +case 0x602A: +case 0x602B: +case 0x602C: +case 0x602D: +case 0x602E: +case 0x602F: +case 0x6030: +case 0x6031: +case 0x6032: +case 0x6033: +case 0x6034: +case 0x6035: +case 0x6036: +case 0x6037: +case 0x6038: +case 0x6039: +case 0x603A: +case 0x603B: +case 0x603C: +case 0x603D: +case 0x603E: +case 0x603F: +case 0x6040: +case 0x6041: +case 0x6042: +case 0x6043: +case 0x6044: +case 0x6045: +case 0x6046: +case 0x6047: +case 0x6048: +case 0x6049: +case 0x604A: +case 0x604B: +case 0x604C: +case 0x604D: +case 0x604E: +case 0x604F: +case 0x6050: +case 0x6051: +case 0x6052: +case 0x6053: +case 0x6054: +case 0x6055: +case 0x6056: +case 0x6057: +case 0x6058: +case 0x6059: +case 0x605A: +case 0x605B: +case 0x605C: +case 0x605D: +case 0x605E: +case 0x605F: +case 0x6060: +case 0x6061: +case 0x6062: +case 0x6063: +case 0x6064: +case 0x6065: +case 0x6066: +case 0x6067: +case 0x6068: +case 0x6069: +case 0x606A: +case 0x606B: +case 0x606C: +case 0x606D: +case 0x606E: +case 0x606F: +case 0x6070: +case 0x6071: +case 0x6072: +case 0x6073: +case 0x6074: +case 0x6075: +case 0x6076: +case 0x6077: +case 0x6078: +case 0x6079: +case 0x607A: +case 0x607B: +case 0x607C: +case 0x607D: +case 0x607E: +case 0x607F: +case 0x6080: +case 0x6081: +case 0x6082: +case 0x6083: +case 0x6084: +case 0x6085: +case 0x6086: +case 0x6087: +case 0x6088: +case 0x6089: +case 0x608A: +case 0x608B: +case 0x608C: +case 0x608D: +case 0x608E: +case 0x608F: +case 0x6090: +case 0x6091: +case 0x6092: +case 0x6093: +case 0x6094: +case 0x6095: +case 0x6096: +case 0x6097: +case 0x6098: +case 0x6099: +case 0x609A: +case 0x609B: +case 0x609C: +case 0x609D: +case 0x609E: +case 0x609F: +case 0x60A0: +case 0x60A1: +case 0x60A2: +case 0x60A3: +case 0x60A4: +case 0x60A5: +case 0x60A6: +case 0x60A7: +case 0x60A8: +case 0x60A9: +case 0x60AA: +case 0x60AB: +case 0x60AC: +case 0x60AD: +case 0x60AE: +case 0x60AF: +case 0x60B0: +case 0x60B1: +case 0x60B2: +case 0x60B3: +case 0x60B4: +case 0x60B5: +case 0x60B6: +case 0x60B7: +case 0x60B8: +case 0x60B9: +case 0x60BA: +case 0x60BB: +case 0x60BC: +case 0x60BD: +case 0x60BE: +case 0x60BF: +case 0x60C0: +case 0x60C1: +case 0x60C2: +case 0x60C3: +case 0x60C4: +case 0x60C5: +case 0x60C6: +case 0x60C7: +case 0x60C8: +case 0x60C9: +case 0x60CA: +case 0x60CB: +case 0x60CC: +case 0x60CD: +case 0x60CE: +case 0x60CF: +case 0x60D0: +case 0x60D1: +case 0x60D2: +case 0x60D3: +case 0x60D4: +case 0x60D5: +case 0x60D6: +case 0x60D7: +case 0x60D8: +case 0x60D9: +case 0x60DA: +case 0x60DB: +case 0x60DC: +case 0x60DD: +case 0x60DE: +case 0x60DF: +case 0x60E0: +case 0x60E1: +case 0x60E2: +case 0x60E3: +case 0x60E4: +case 0x60E5: +case 0x60E6: +case 0x60E7: +case 0x60E8: +case 0x60E9: +case 0x60EA: +case 0x60EB: +case 0x60EC: +case 0x60ED: +case 0x60EE: +case 0x60EF: +case 0x60F0: +case 0x60F1: +case 0x60F2: +case 0x60F3: +case 0x60F4: +case 0x60F5: +case 0x60F6: +case 0x60F7: +case 0x60F8: +case 0x60F9: +case 0x60FA: +case 0x60FB: +case 0x60FC: +case 0x60FD: +case 0x60FE: +case 0x60FF: + +// BRA +case 0x6001: +{ + PC += (s32)(s8)Opcode; +} +RET(10) + +// BRA16 +case 0x6000: +{ + PC += (s32)(s16)FETCH_WORD; + SET_PC(PC); +} +RET(10) +case 0x6102: +case 0x6103: +case 0x6104: +case 0x6105: +case 0x6106: +case 0x6107: +case 0x6108: +case 0x6109: +case 0x610A: +case 0x610B: +case 0x610C: +case 0x610D: +case 0x610E: +case 0x610F: +case 0x6110: +case 0x6111: +case 0x6112: +case 0x6113: +case 0x6114: +case 0x6115: +case 0x6116: +case 0x6117: +case 0x6118: +case 0x6119: +case 0x611A: +case 0x611B: +case 0x611C: +case 0x611D: +case 0x611E: +case 0x611F: +case 0x6120: +case 0x6121: +case 0x6122: +case 0x6123: +case 0x6124: +case 0x6125: +case 0x6126: +case 0x6127: +case 0x6128: +case 0x6129: +case 0x612A: +case 0x612B: +case 0x612C: +case 0x612D: +case 0x612E: +case 0x612F: +case 0x6130: +case 0x6131: +case 0x6132: +case 0x6133: +case 0x6134: +case 0x6135: +case 0x6136: +case 0x6137: +case 0x6138: +case 0x6139: +case 0x613A: +case 0x613B: +case 0x613C: +case 0x613D: +case 0x613E: +case 0x613F: +case 0x6140: +case 0x6141: +case 0x6142: +case 0x6143: +case 0x6144: +case 0x6145: +case 0x6146: +case 0x6147: +case 0x6148: +case 0x6149: +case 0x614A: +case 0x614B: +case 0x614C: +case 0x614D: +case 0x614E: +case 0x614F: +case 0x6150: +case 0x6151: +case 0x6152: +case 0x6153: +case 0x6154: +case 0x6155: +case 0x6156: +case 0x6157: +case 0x6158: +case 0x6159: +case 0x615A: +case 0x615B: +case 0x615C: +case 0x615D: +case 0x615E: +case 0x615F: +case 0x6160: +case 0x6161: +case 0x6162: +case 0x6163: +case 0x6164: +case 0x6165: +case 0x6166: +case 0x6167: +case 0x6168: +case 0x6169: +case 0x616A: +case 0x616B: +case 0x616C: +case 0x616D: +case 0x616E: +case 0x616F: +case 0x6170: +case 0x6171: +case 0x6172: +case 0x6173: +case 0x6174: +case 0x6175: +case 0x6176: +case 0x6177: +case 0x6178: +case 0x6179: +case 0x617A: +case 0x617B: +case 0x617C: +case 0x617D: +case 0x617E: +case 0x617F: +case 0x6180: +case 0x6181: +case 0x6182: +case 0x6183: +case 0x6184: +case 0x6185: +case 0x6186: +case 0x6187: +case 0x6188: +case 0x6189: +case 0x618A: +case 0x618B: +case 0x618C: +case 0x618D: +case 0x618E: +case 0x618F: +case 0x6190: +case 0x6191: +case 0x6192: +case 0x6193: +case 0x6194: +case 0x6195: +case 0x6196: +case 0x6197: +case 0x6198: +case 0x6199: +case 0x619A: +case 0x619B: +case 0x619C: +case 0x619D: +case 0x619E: +case 0x619F: +case 0x61A0: +case 0x61A1: +case 0x61A2: +case 0x61A3: +case 0x61A4: +case 0x61A5: +case 0x61A6: +case 0x61A7: +case 0x61A8: +case 0x61A9: +case 0x61AA: +case 0x61AB: +case 0x61AC: +case 0x61AD: +case 0x61AE: +case 0x61AF: +case 0x61B0: +case 0x61B1: +case 0x61B2: +case 0x61B3: +case 0x61B4: +case 0x61B5: +case 0x61B6: +case 0x61B7: +case 0x61B8: +case 0x61B9: +case 0x61BA: +case 0x61BB: +case 0x61BC: +case 0x61BD: +case 0x61BE: +case 0x61BF: +case 0x61C0: +case 0x61C1: +case 0x61C2: +case 0x61C3: +case 0x61C4: +case 0x61C5: +case 0x61C6: +case 0x61C7: +case 0x61C8: +case 0x61C9: +case 0x61CA: +case 0x61CB: +case 0x61CC: +case 0x61CD: +case 0x61CE: +case 0x61CF: +case 0x61D0: +case 0x61D1: +case 0x61D2: +case 0x61D3: +case 0x61D4: +case 0x61D5: +case 0x61D6: +case 0x61D7: +case 0x61D8: +case 0x61D9: +case 0x61DA: +case 0x61DB: +case 0x61DC: +case 0x61DD: +case 0x61DE: +case 0x61DF: +case 0x61E0: +case 0x61E1: +case 0x61E2: +case 0x61E3: +case 0x61E4: +case 0x61E5: +case 0x61E6: +case 0x61E7: +case 0x61E8: +case 0x61E9: +case 0x61EA: +case 0x61EB: +case 0x61EC: +case 0x61ED: +case 0x61EE: +case 0x61EF: +case 0x61F0: +case 0x61F1: +case 0x61F2: +case 0x61F3: +case 0x61F4: +case 0x61F5: +case 0x61F6: +case 0x61F7: +case 0x61F8: +case 0x61F9: +case 0x61FA: +case 0x61FB: +case 0x61FC: +case 0x61FD: +case 0x61FE: +case 0x61FF: + +// BSR +case 0x6101: +{ + PUSH_32_F(PC) + PC += (s32)(s8)Opcode; +} +RET(18) + +// BSR16 +case 0x6100: +{ + u32 res; + res = (s32)(s16)FETCH_WORD; + PUSH_32_F(PC + 2) + PC += (s32) res; + SET_PC(PC); +} +RET(18) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op7.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op7.inc new file mode 100644 index 0000000000..ba0b48ba31 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op7.inc @@ -0,0 +1,2058 @@ +case 0x7001: +case 0x7002: +case 0x7003: +case 0x7004: +case 0x7005: +case 0x7006: +case 0x7007: +case 0x7008: +case 0x7009: +case 0x700A: +case 0x700B: +case 0x700C: +case 0x700D: +case 0x700E: +case 0x700F: +case 0x7010: +case 0x7011: +case 0x7012: +case 0x7013: +case 0x7014: +case 0x7015: +case 0x7016: +case 0x7017: +case 0x7018: +case 0x7019: +case 0x701A: +case 0x701B: +case 0x701C: +case 0x701D: +case 0x701E: +case 0x701F: +case 0x7020: +case 0x7021: +case 0x7022: +case 0x7023: +case 0x7024: +case 0x7025: +case 0x7026: +case 0x7027: +case 0x7028: +case 0x7029: +case 0x702A: +case 0x702B: +case 0x702C: +case 0x702D: +case 0x702E: +case 0x702F: +case 0x7030: +case 0x7031: +case 0x7032: +case 0x7033: +case 0x7034: +case 0x7035: +case 0x7036: +case 0x7037: +case 0x7038: +case 0x7039: +case 0x703A: +case 0x703B: +case 0x703C: +case 0x703D: +case 0x703E: +case 0x703F: +case 0x7040: +case 0x7041: +case 0x7042: +case 0x7043: +case 0x7044: +case 0x7045: +case 0x7046: +case 0x7047: +case 0x7048: +case 0x7049: +case 0x704A: +case 0x704B: +case 0x704C: +case 0x704D: +case 0x704E: +case 0x704F: +case 0x7050: +case 0x7051: +case 0x7052: +case 0x7053: +case 0x7054: +case 0x7055: +case 0x7056: +case 0x7057: +case 0x7058: +case 0x7059: +case 0x705A: +case 0x705B: +case 0x705C: +case 0x705D: +case 0x705E: +case 0x705F: +case 0x7060: +case 0x7061: +case 0x7062: +case 0x7063: +case 0x7064: +case 0x7065: +case 0x7066: +case 0x7067: +case 0x7068: +case 0x7069: +case 0x706A: +case 0x706B: +case 0x706C: +case 0x706D: +case 0x706E: +case 0x706F: +case 0x7070: +case 0x7071: +case 0x7072: +case 0x7073: +case 0x7074: +case 0x7075: +case 0x7076: +case 0x7077: +case 0x7078: +case 0x7079: +case 0x707A: +case 0x707B: +case 0x707C: +case 0x707D: +case 0x707E: +case 0x707F: +case 0x7080: +case 0x7081: +case 0x7082: +case 0x7083: +case 0x7084: +case 0x7085: +case 0x7086: +case 0x7087: +case 0x7088: +case 0x7089: +case 0x708A: +case 0x708B: +case 0x708C: +case 0x708D: +case 0x708E: +case 0x708F: +case 0x7090: +case 0x7091: +case 0x7092: +case 0x7093: +case 0x7094: +case 0x7095: +case 0x7096: +case 0x7097: +case 0x7098: +case 0x7099: +case 0x709A: +case 0x709B: +case 0x709C: +case 0x709D: +case 0x709E: +case 0x709F: +case 0x70A0: +case 0x70A1: +case 0x70A2: +case 0x70A3: +case 0x70A4: +case 0x70A5: +case 0x70A6: +case 0x70A7: +case 0x70A8: +case 0x70A9: +case 0x70AA: +case 0x70AB: +case 0x70AC: +case 0x70AD: +case 0x70AE: +case 0x70AF: +case 0x70B0: +case 0x70B1: +case 0x70B2: +case 0x70B3: +case 0x70B4: +case 0x70B5: +case 0x70B6: +case 0x70B7: +case 0x70B8: +case 0x70B9: +case 0x70BA: +case 0x70BB: +case 0x70BC: +case 0x70BD: +case 0x70BE: +case 0x70BF: +case 0x70C0: +case 0x70C1: +case 0x70C2: +case 0x70C3: +case 0x70C4: +case 0x70C5: +case 0x70C6: +case 0x70C7: +case 0x70C8: +case 0x70C9: +case 0x70CA: +case 0x70CB: +case 0x70CC: +case 0x70CD: +case 0x70CE: +case 0x70CF: +case 0x70D0: +case 0x70D1: +case 0x70D2: +case 0x70D3: +case 0x70D4: +case 0x70D5: +case 0x70D6: +case 0x70D7: +case 0x70D8: +case 0x70D9: +case 0x70DA: +case 0x70DB: +case 0x70DC: +case 0x70DD: +case 0x70DE: +case 0x70DF: +case 0x70E0: +case 0x70E1: +case 0x70E2: +case 0x70E3: +case 0x70E4: +case 0x70E5: +case 0x70E6: +case 0x70E7: +case 0x70E8: +case 0x70E9: +case 0x70EA: +case 0x70EB: +case 0x70EC: +case 0x70ED: +case 0x70EE: +case 0x70EF: +case 0x70F0: +case 0x70F1: +case 0x70F2: +case 0x70F3: +case 0x70F4: +case 0x70F5: +case 0x70F6: +case 0x70F7: +case 0x70F8: +case 0x70F9: +case 0x70FA: +case 0x70FB: +case 0x70FC: +case 0x70FD: +case 0x70FE: +case 0x70FF: +case 0x7200: +case 0x7201: +case 0x7202: +case 0x7203: +case 0x7204: +case 0x7205: +case 0x7206: +case 0x7207: +case 0x7208: +case 0x7209: +case 0x720A: +case 0x720B: +case 0x720C: +case 0x720D: +case 0x720E: +case 0x720F: +case 0x7210: +case 0x7211: +case 0x7212: +case 0x7213: +case 0x7214: +case 0x7215: +case 0x7216: +case 0x7217: +case 0x7218: +case 0x7219: +case 0x721A: +case 0x721B: +case 0x721C: +case 0x721D: +case 0x721E: +case 0x721F: +case 0x7220: +case 0x7221: +case 0x7222: +case 0x7223: +case 0x7224: +case 0x7225: +case 0x7226: +case 0x7227: +case 0x7228: +case 0x7229: +case 0x722A: +case 0x722B: +case 0x722C: +case 0x722D: +case 0x722E: +case 0x722F: +case 0x7230: +case 0x7231: +case 0x7232: +case 0x7233: +case 0x7234: +case 0x7235: +case 0x7236: +case 0x7237: +case 0x7238: +case 0x7239: +case 0x723A: +case 0x723B: +case 0x723C: +case 0x723D: +case 0x723E: +case 0x723F: +case 0x7240: +case 0x7241: +case 0x7242: +case 0x7243: +case 0x7244: +case 0x7245: +case 0x7246: +case 0x7247: +case 0x7248: +case 0x7249: +case 0x724A: +case 0x724B: +case 0x724C: +case 0x724D: +case 0x724E: +case 0x724F: +case 0x7250: +case 0x7251: +case 0x7252: +case 0x7253: +case 0x7254: +case 0x7255: +case 0x7256: +case 0x7257: +case 0x7258: +case 0x7259: +case 0x725A: +case 0x725B: +case 0x725C: +case 0x725D: +case 0x725E: +case 0x725F: +case 0x7260: +case 0x7261: +case 0x7262: +case 0x7263: +case 0x7264: +case 0x7265: +case 0x7266: +case 0x7267: +case 0x7268: +case 0x7269: +case 0x726A: +case 0x726B: +case 0x726C: +case 0x726D: +case 0x726E: +case 0x726F: +case 0x7270: +case 0x7271: +case 0x7272: +case 0x7273: +case 0x7274: +case 0x7275: +case 0x7276: +case 0x7277: +case 0x7278: +case 0x7279: +case 0x727A: +case 0x727B: +case 0x727C: +case 0x727D: +case 0x727E: +case 0x727F: +case 0x7280: +case 0x7281: +case 0x7282: +case 0x7283: +case 0x7284: +case 0x7285: +case 0x7286: +case 0x7287: +case 0x7288: +case 0x7289: +case 0x728A: +case 0x728B: +case 0x728C: +case 0x728D: +case 0x728E: +case 0x728F: +case 0x7290: +case 0x7291: +case 0x7292: +case 0x7293: +case 0x7294: +case 0x7295: +case 0x7296: +case 0x7297: +case 0x7298: +case 0x7299: +case 0x729A: +case 0x729B: +case 0x729C: +case 0x729D: +case 0x729E: +case 0x729F: +case 0x72A0: +case 0x72A1: +case 0x72A2: +case 0x72A3: +case 0x72A4: +case 0x72A5: +case 0x72A6: +case 0x72A7: +case 0x72A8: +case 0x72A9: +case 0x72AA: +case 0x72AB: +case 0x72AC: +case 0x72AD: +case 0x72AE: +case 0x72AF: +case 0x72B0: +case 0x72B1: +case 0x72B2: +case 0x72B3: +case 0x72B4: +case 0x72B5: +case 0x72B6: +case 0x72B7: +case 0x72B8: +case 0x72B9: +case 0x72BA: +case 0x72BB: +case 0x72BC: +case 0x72BD: +case 0x72BE: +case 0x72BF: +case 0x72C0: +case 0x72C1: +case 0x72C2: +case 0x72C3: +case 0x72C4: +case 0x72C5: +case 0x72C6: +case 0x72C7: +case 0x72C8: +case 0x72C9: +case 0x72CA: +case 0x72CB: +case 0x72CC: +case 0x72CD: +case 0x72CE: +case 0x72CF: +case 0x72D0: +case 0x72D1: +case 0x72D2: +case 0x72D3: +case 0x72D4: +case 0x72D5: +case 0x72D6: +case 0x72D7: +case 0x72D8: +case 0x72D9: +case 0x72DA: +case 0x72DB: +case 0x72DC: +case 0x72DD: +case 0x72DE: +case 0x72DF: +case 0x72E0: +case 0x72E1: +case 0x72E2: +case 0x72E3: +case 0x72E4: +case 0x72E5: +case 0x72E6: +case 0x72E7: +case 0x72E8: +case 0x72E9: +case 0x72EA: +case 0x72EB: +case 0x72EC: +case 0x72ED: +case 0x72EE: +case 0x72EF: +case 0x72F0: +case 0x72F1: +case 0x72F2: +case 0x72F3: +case 0x72F4: +case 0x72F5: +case 0x72F6: +case 0x72F7: +case 0x72F8: +case 0x72F9: +case 0x72FA: +case 0x72FB: +case 0x72FC: +case 0x72FD: +case 0x72FE: +case 0x72FF: +case 0x7400: +case 0x7401: +case 0x7402: +case 0x7403: +case 0x7404: +case 0x7405: +case 0x7406: +case 0x7407: +case 0x7408: +case 0x7409: +case 0x740A: +case 0x740B: +case 0x740C: +case 0x740D: +case 0x740E: +case 0x740F: +case 0x7410: +case 0x7411: +case 0x7412: +case 0x7413: +case 0x7414: +case 0x7415: +case 0x7416: +case 0x7417: +case 0x7418: +case 0x7419: +case 0x741A: +case 0x741B: +case 0x741C: +case 0x741D: +case 0x741E: +case 0x741F: +case 0x7420: +case 0x7421: +case 0x7422: +case 0x7423: +case 0x7424: +case 0x7425: +case 0x7426: +case 0x7427: +case 0x7428: +case 0x7429: +case 0x742A: +case 0x742B: +case 0x742C: +case 0x742D: +case 0x742E: +case 0x742F: +case 0x7430: +case 0x7431: +case 0x7432: +case 0x7433: +case 0x7434: +case 0x7435: +case 0x7436: +case 0x7437: +case 0x7438: +case 0x7439: +case 0x743A: +case 0x743B: +case 0x743C: +case 0x743D: +case 0x743E: +case 0x743F: +case 0x7440: +case 0x7441: +case 0x7442: +case 0x7443: +case 0x7444: +case 0x7445: +case 0x7446: +case 0x7447: +case 0x7448: +case 0x7449: +case 0x744A: +case 0x744B: +case 0x744C: +case 0x744D: +case 0x744E: +case 0x744F: +case 0x7450: +case 0x7451: +case 0x7452: +case 0x7453: +case 0x7454: +case 0x7455: +case 0x7456: +case 0x7457: +case 0x7458: +case 0x7459: +case 0x745A: +case 0x745B: +case 0x745C: +case 0x745D: +case 0x745E: +case 0x745F: +case 0x7460: +case 0x7461: +case 0x7462: +case 0x7463: +case 0x7464: +case 0x7465: +case 0x7466: +case 0x7467: +case 0x7468: +case 0x7469: +case 0x746A: +case 0x746B: +case 0x746C: +case 0x746D: +case 0x746E: +case 0x746F: +case 0x7470: +case 0x7471: +case 0x7472: +case 0x7473: +case 0x7474: +case 0x7475: +case 0x7476: +case 0x7477: +case 0x7478: +case 0x7479: +case 0x747A: +case 0x747B: +case 0x747C: +case 0x747D: +case 0x747E: +case 0x747F: +case 0x7480: +case 0x7481: +case 0x7482: +case 0x7483: +case 0x7484: +case 0x7485: +case 0x7486: +case 0x7487: +case 0x7488: +case 0x7489: +case 0x748A: +case 0x748B: +case 0x748C: +case 0x748D: +case 0x748E: +case 0x748F: +case 0x7490: +case 0x7491: +case 0x7492: +case 0x7493: +case 0x7494: +case 0x7495: +case 0x7496: +case 0x7497: +case 0x7498: +case 0x7499: +case 0x749A: +case 0x749B: +case 0x749C: +case 0x749D: +case 0x749E: +case 0x749F: +case 0x74A0: +case 0x74A1: +case 0x74A2: +case 0x74A3: +case 0x74A4: +case 0x74A5: +case 0x74A6: +case 0x74A7: +case 0x74A8: +case 0x74A9: +case 0x74AA: +case 0x74AB: +case 0x74AC: +case 0x74AD: +case 0x74AE: +case 0x74AF: +case 0x74B0: +case 0x74B1: +case 0x74B2: +case 0x74B3: +case 0x74B4: +case 0x74B5: +case 0x74B6: +case 0x74B7: +case 0x74B8: +case 0x74B9: +case 0x74BA: +case 0x74BB: +case 0x74BC: +case 0x74BD: +case 0x74BE: +case 0x74BF: +case 0x74C0: +case 0x74C1: +case 0x74C2: +case 0x74C3: +case 0x74C4: +case 0x74C5: +case 0x74C6: +case 0x74C7: +case 0x74C8: +case 0x74C9: +case 0x74CA: +case 0x74CB: +case 0x74CC: +case 0x74CD: +case 0x74CE: +case 0x74CF: +case 0x74D0: +case 0x74D1: +case 0x74D2: +case 0x74D3: +case 0x74D4: +case 0x74D5: +case 0x74D6: +case 0x74D7: +case 0x74D8: +case 0x74D9: +case 0x74DA: +case 0x74DB: +case 0x74DC: +case 0x74DD: +case 0x74DE: +case 0x74DF: +case 0x74E0: +case 0x74E1: +case 0x74E2: +case 0x74E3: +case 0x74E4: +case 0x74E5: +case 0x74E6: +case 0x74E7: +case 0x74E8: +case 0x74E9: +case 0x74EA: +case 0x74EB: +case 0x74EC: +case 0x74ED: +case 0x74EE: +case 0x74EF: +case 0x74F0: +case 0x74F1: +case 0x74F2: +case 0x74F3: +case 0x74F4: +case 0x74F5: +case 0x74F6: +case 0x74F7: +case 0x74F8: +case 0x74F9: +case 0x74FA: +case 0x74FB: +case 0x74FC: +case 0x74FD: +case 0x74FE: +case 0x74FF: +case 0x7600: +case 0x7601: +case 0x7602: +case 0x7603: +case 0x7604: +case 0x7605: +case 0x7606: +case 0x7607: +case 0x7608: +case 0x7609: +case 0x760A: +case 0x760B: +case 0x760C: +case 0x760D: +case 0x760E: +case 0x760F: +case 0x7610: +case 0x7611: +case 0x7612: +case 0x7613: +case 0x7614: +case 0x7615: +case 0x7616: +case 0x7617: +case 0x7618: +case 0x7619: +case 0x761A: +case 0x761B: +case 0x761C: +case 0x761D: +case 0x761E: +case 0x761F: +case 0x7620: +case 0x7621: +case 0x7622: +case 0x7623: +case 0x7624: +case 0x7625: +case 0x7626: +case 0x7627: +case 0x7628: +case 0x7629: +case 0x762A: +case 0x762B: +case 0x762C: +case 0x762D: +case 0x762E: +case 0x762F: +case 0x7630: +case 0x7631: +case 0x7632: +case 0x7633: +case 0x7634: +case 0x7635: +case 0x7636: +case 0x7637: +case 0x7638: +case 0x7639: +case 0x763A: +case 0x763B: +case 0x763C: +case 0x763D: +case 0x763E: +case 0x763F: +case 0x7640: +case 0x7641: +case 0x7642: +case 0x7643: +case 0x7644: +case 0x7645: +case 0x7646: +case 0x7647: +case 0x7648: +case 0x7649: +case 0x764A: +case 0x764B: +case 0x764C: +case 0x764D: +case 0x764E: +case 0x764F: +case 0x7650: +case 0x7651: +case 0x7652: +case 0x7653: +case 0x7654: +case 0x7655: +case 0x7656: +case 0x7657: +case 0x7658: +case 0x7659: +case 0x765A: +case 0x765B: +case 0x765C: +case 0x765D: +case 0x765E: +case 0x765F: +case 0x7660: +case 0x7661: +case 0x7662: +case 0x7663: +case 0x7664: +case 0x7665: +case 0x7666: +case 0x7667: +case 0x7668: +case 0x7669: +case 0x766A: +case 0x766B: +case 0x766C: +case 0x766D: +case 0x766E: +case 0x766F: +case 0x7670: +case 0x7671: +case 0x7672: +case 0x7673: +case 0x7674: +case 0x7675: +case 0x7676: +case 0x7677: +case 0x7678: +case 0x7679: +case 0x767A: +case 0x767B: +case 0x767C: +case 0x767D: +case 0x767E: +case 0x767F: +case 0x7680: +case 0x7681: +case 0x7682: +case 0x7683: +case 0x7684: +case 0x7685: +case 0x7686: +case 0x7687: +case 0x7688: +case 0x7689: +case 0x768A: +case 0x768B: +case 0x768C: +case 0x768D: +case 0x768E: +case 0x768F: +case 0x7690: +case 0x7691: +case 0x7692: +case 0x7693: +case 0x7694: +case 0x7695: +case 0x7696: +case 0x7697: +case 0x7698: +case 0x7699: +case 0x769A: +case 0x769B: +case 0x769C: +case 0x769D: +case 0x769E: +case 0x769F: +case 0x76A0: +case 0x76A1: +case 0x76A2: +case 0x76A3: +case 0x76A4: +case 0x76A5: +case 0x76A6: +case 0x76A7: +case 0x76A8: +case 0x76A9: +case 0x76AA: +case 0x76AB: +case 0x76AC: +case 0x76AD: +case 0x76AE: +case 0x76AF: +case 0x76B0: +case 0x76B1: +case 0x76B2: +case 0x76B3: +case 0x76B4: +case 0x76B5: +case 0x76B6: +case 0x76B7: +case 0x76B8: +case 0x76B9: +case 0x76BA: +case 0x76BB: +case 0x76BC: +case 0x76BD: +case 0x76BE: +case 0x76BF: +case 0x76C0: +case 0x76C1: +case 0x76C2: +case 0x76C3: +case 0x76C4: +case 0x76C5: +case 0x76C6: +case 0x76C7: +case 0x76C8: +case 0x76C9: +case 0x76CA: +case 0x76CB: +case 0x76CC: +case 0x76CD: +case 0x76CE: +case 0x76CF: +case 0x76D0: +case 0x76D1: +case 0x76D2: +case 0x76D3: +case 0x76D4: +case 0x76D5: +case 0x76D6: +case 0x76D7: +case 0x76D8: +case 0x76D9: +case 0x76DA: +case 0x76DB: +case 0x76DC: +case 0x76DD: +case 0x76DE: +case 0x76DF: +case 0x76E0: +case 0x76E1: +case 0x76E2: +case 0x76E3: +case 0x76E4: +case 0x76E5: +case 0x76E6: +case 0x76E7: +case 0x76E8: +case 0x76E9: +case 0x76EA: +case 0x76EB: +case 0x76EC: +case 0x76ED: +case 0x76EE: +case 0x76EF: +case 0x76F0: +case 0x76F1: +case 0x76F2: +case 0x76F3: +case 0x76F4: +case 0x76F5: +case 0x76F6: +case 0x76F7: +case 0x76F8: +case 0x76F9: +case 0x76FA: +case 0x76FB: +case 0x76FC: +case 0x76FD: +case 0x76FE: +case 0x76FF: +case 0x7800: +case 0x7801: +case 0x7802: +case 0x7803: +case 0x7804: +case 0x7805: +case 0x7806: +case 0x7807: +case 0x7808: +case 0x7809: +case 0x780A: +case 0x780B: +case 0x780C: +case 0x780D: +case 0x780E: +case 0x780F: +case 0x7810: +case 0x7811: +case 0x7812: +case 0x7813: +case 0x7814: +case 0x7815: +case 0x7816: +case 0x7817: +case 0x7818: +case 0x7819: +case 0x781A: +case 0x781B: +case 0x781C: +case 0x781D: +case 0x781E: +case 0x781F: +case 0x7820: +case 0x7821: +case 0x7822: +case 0x7823: +case 0x7824: +case 0x7825: +case 0x7826: +case 0x7827: +case 0x7828: +case 0x7829: +case 0x782A: +case 0x782B: +case 0x782C: +case 0x782D: +case 0x782E: +case 0x782F: +case 0x7830: +case 0x7831: +case 0x7832: +case 0x7833: +case 0x7834: +case 0x7835: +case 0x7836: +case 0x7837: +case 0x7838: +case 0x7839: +case 0x783A: +case 0x783B: +case 0x783C: +case 0x783D: +case 0x783E: +case 0x783F: +case 0x7840: +case 0x7841: +case 0x7842: +case 0x7843: +case 0x7844: +case 0x7845: +case 0x7846: +case 0x7847: +case 0x7848: +case 0x7849: +case 0x784A: +case 0x784B: +case 0x784C: +case 0x784D: +case 0x784E: +case 0x784F: +case 0x7850: +case 0x7851: +case 0x7852: +case 0x7853: +case 0x7854: +case 0x7855: +case 0x7856: +case 0x7857: +case 0x7858: +case 0x7859: +case 0x785A: +case 0x785B: +case 0x785C: +case 0x785D: +case 0x785E: +case 0x785F: +case 0x7860: +case 0x7861: +case 0x7862: +case 0x7863: +case 0x7864: +case 0x7865: +case 0x7866: +case 0x7867: +case 0x7868: +case 0x7869: +case 0x786A: +case 0x786B: +case 0x786C: +case 0x786D: +case 0x786E: +case 0x786F: +case 0x7870: +case 0x7871: +case 0x7872: +case 0x7873: +case 0x7874: +case 0x7875: +case 0x7876: +case 0x7877: +case 0x7878: +case 0x7879: +case 0x787A: +case 0x787B: +case 0x787C: +case 0x787D: +case 0x787E: +case 0x787F: +case 0x7880: +case 0x7881: +case 0x7882: +case 0x7883: +case 0x7884: +case 0x7885: +case 0x7886: +case 0x7887: +case 0x7888: +case 0x7889: +case 0x788A: +case 0x788B: +case 0x788C: +case 0x788D: +case 0x788E: +case 0x788F: +case 0x7890: +case 0x7891: +case 0x7892: +case 0x7893: +case 0x7894: +case 0x7895: +case 0x7896: +case 0x7897: +case 0x7898: +case 0x7899: +case 0x789A: +case 0x789B: +case 0x789C: +case 0x789D: +case 0x789E: +case 0x789F: +case 0x78A0: +case 0x78A1: +case 0x78A2: +case 0x78A3: +case 0x78A4: +case 0x78A5: +case 0x78A6: +case 0x78A7: +case 0x78A8: +case 0x78A9: +case 0x78AA: +case 0x78AB: +case 0x78AC: +case 0x78AD: +case 0x78AE: +case 0x78AF: +case 0x78B0: +case 0x78B1: +case 0x78B2: +case 0x78B3: +case 0x78B4: +case 0x78B5: +case 0x78B6: +case 0x78B7: +case 0x78B8: +case 0x78B9: +case 0x78BA: +case 0x78BB: +case 0x78BC: +case 0x78BD: +case 0x78BE: +case 0x78BF: +case 0x78C0: +case 0x78C1: +case 0x78C2: +case 0x78C3: +case 0x78C4: +case 0x78C5: +case 0x78C6: +case 0x78C7: +case 0x78C8: +case 0x78C9: +case 0x78CA: +case 0x78CB: +case 0x78CC: +case 0x78CD: +case 0x78CE: +case 0x78CF: +case 0x78D0: +case 0x78D1: +case 0x78D2: +case 0x78D3: +case 0x78D4: +case 0x78D5: +case 0x78D6: +case 0x78D7: +case 0x78D8: +case 0x78D9: +case 0x78DA: +case 0x78DB: +case 0x78DC: +case 0x78DD: +case 0x78DE: +case 0x78DF: +case 0x78E0: +case 0x78E1: +case 0x78E2: +case 0x78E3: +case 0x78E4: +case 0x78E5: +case 0x78E6: +case 0x78E7: +case 0x78E8: +case 0x78E9: +case 0x78EA: +case 0x78EB: +case 0x78EC: +case 0x78ED: +case 0x78EE: +case 0x78EF: +case 0x78F0: +case 0x78F1: +case 0x78F2: +case 0x78F3: +case 0x78F4: +case 0x78F5: +case 0x78F6: +case 0x78F7: +case 0x78F8: +case 0x78F9: +case 0x78FA: +case 0x78FB: +case 0x78FC: +case 0x78FD: +case 0x78FE: +case 0x78FF: +case 0x7A00: +case 0x7A01: +case 0x7A02: +case 0x7A03: +case 0x7A04: +case 0x7A05: +case 0x7A06: +case 0x7A07: +case 0x7A08: +case 0x7A09: +case 0x7A0A: +case 0x7A0B: +case 0x7A0C: +case 0x7A0D: +case 0x7A0E: +case 0x7A0F: +case 0x7A10: +case 0x7A11: +case 0x7A12: +case 0x7A13: +case 0x7A14: +case 0x7A15: +case 0x7A16: +case 0x7A17: +case 0x7A18: +case 0x7A19: +case 0x7A1A: +case 0x7A1B: +case 0x7A1C: +case 0x7A1D: +case 0x7A1E: +case 0x7A1F: +case 0x7A20: +case 0x7A21: +case 0x7A22: +case 0x7A23: +case 0x7A24: +case 0x7A25: +case 0x7A26: +case 0x7A27: +case 0x7A28: +case 0x7A29: +case 0x7A2A: +case 0x7A2B: +case 0x7A2C: +case 0x7A2D: +case 0x7A2E: +case 0x7A2F: +case 0x7A30: +case 0x7A31: +case 0x7A32: +case 0x7A33: +case 0x7A34: +case 0x7A35: +case 0x7A36: +case 0x7A37: +case 0x7A38: +case 0x7A39: +case 0x7A3A: +case 0x7A3B: +case 0x7A3C: +case 0x7A3D: +case 0x7A3E: +case 0x7A3F: +case 0x7A40: +case 0x7A41: +case 0x7A42: +case 0x7A43: +case 0x7A44: +case 0x7A45: +case 0x7A46: +case 0x7A47: +case 0x7A48: +case 0x7A49: +case 0x7A4A: +case 0x7A4B: +case 0x7A4C: +case 0x7A4D: +case 0x7A4E: +case 0x7A4F: +case 0x7A50: +case 0x7A51: +case 0x7A52: +case 0x7A53: +case 0x7A54: +case 0x7A55: +case 0x7A56: +case 0x7A57: +case 0x7A58: +case 0x7A59: +case 0x7A5A: +case 0x7A5B: +case 0x7A5C: +case 0x7A5D: +case 0x7A5E: +case 0x7A5F: +case 0x7A60: +case 0x7A61: +case 0x7A62: +case 0x7A63: +case 0x7A64: +case 0x7A65: +case 0x7A66: +case 0x7A67: +case 0x7A68: +case 0x7A69: +case 0x7A6A: +case 0x7A6B: +case 0x7A6C: +case 0x7A6D: +case 0x7A6E: +case 0x7A6F: +case 0x7A70: +case 0x7A71: +case 0x7A72: +case 0x7A73: +case 0x7A74: +case 0x7A75: +case 0x7A76: +case 0x7A77: +case 0x7A78: +case 0x7A79: +case 0x7A7A: +case 0x7A7B: +case 0x7A7C: +case 0x7A7D: +case 0x7A7E: +case 0x7A7F: +case 0x7A80: +case 0x7A81: +case 0x7A82: +case 0x7A83: +case 0x7A84: +case 0x7A85: +case 0x7A86: +case 0x7A87: +case 0x7A88: +case 0x7A89: +case 0x7A8A: +case 0x7A8B: +case 0x7A8C: +case 0x7A8D: +case 0x7A8E: +case 0x7A8F: +case 0x7A90: +case 0x7A91: +case 0x7A92: +case 0x7A93: +case 0x7A94: +case 0x7A95: +case 0x7A96: +case 0x7A97: +case 0x7A98: +case 0x7A99: +case 0x7A9A: +case 0x7A9B: +case 0x7A9C: +case 0x7A9D: +case 0x7A9E: +case 0x7A9F: +case 0x7AA0: +case 0x7AA1: +case 0x7AA2: +case 0x7AA3: +case 0x7AA4: +case 0x7AA5: +case 0x7AA6: +case 0x7AA7: +case 0x7AA8: +case 0x7AA9: +case 0x7AAA: +case 0x7AAB: +case 0x7AAC: +case 0x7AAD: +case 0x7AAE: +case 0x7AAF: +case 0x7AB0: +case 0x7AB1: +case 0x7AB2: +case 0x7AB3: +case 0x7AB4: +case 0x7AB5: +case 0x7AB6: +case 0x7AB7: +case 0x7AB8: +case 0x7AB9: +case 0x7ABA: +case 0x7ABB: +case 0x7ABC: +case 0x7ABD: +case 0x7ABE: +case 0x7ABF: +case 0x7AC0: +case 0x7AC1: +case 0x7AC2: +case 0x7AC3: +case 0x7AC4: +case 0x7AC5: +case 0x7AC6: +case 0x7AC7: +case 0x7AC8: +case 0x7AC9: +case 0x7ACA: +case 0x7ACB: +case 0x7ACC: +case 0x7ACD: +case 0x7ACE: +case 0x7ACF: +case 0x7AD0: +case 0x7AD1: +case 0x7AD2: +case 0x7AD3: +case 0x7AD4: +case 0x7AD5: +case 0x7AD6: +case 0x7AD7: +case 0x7AD8: +case 0x7AD9: +case 0x7ADA: +case 0x7ADB: +case 0x7ADC: +case 0x7ADD: +case 0x7ADE: +case 0x7ADF: +case 0x7AE0: +case 0x7AE1: +case 0x7AE2: +case 0x7AE3: +case 0x7AE4: +case 0x7AE5: +case 0x7AE6: +case 0x7AE7: +case 0x7AE8: +case 0x7AE9: +case 0x7AEA: +case 0x7AEB: +case 0x7AEC: +case 0x7AED: +case 0x7AEE: +case 0x7AEF: +case 0x7AF0: +case 0x7AF1: +case 0x7AF2: +case 0x7AF3: +case 0x7AF4: +case 0x7AF5: +case 0x7AF6: +case 0x7AF7: +case 0x7AF8: +case 0x7AF9: +case 0x7AFA: +case 0x7AFB: +case 0x7AFC: +case 0x7AFD: +case 0x7AFE: +case 0x7AFF: +case 0x7C00: +case 0x7C01: +case 0x7C02: +case 0x7C03: +case 0x7C04: +case 0x7C05: +case 0x7C06: +case 0x7C07: +case 0x7C08: +case 0x7C09: +case 0x7C0A: +case 0x7C0B: +case 0x7C0C: +case 0x7C0D: +case 0x7C0E: +case 0x7C0F: +case 0x7C10: +case 0x7C11: +case 0x7C12: +case 0x7C13: +case 0x7C14: +case 0x7C15: +case 0x7C16: +case 0x7C17: +case 0x7C18: +case 0x7C19: +case 0x7C1A: +case 0x7C1B: +case 0x7C1C: +case 0x7C1D: +case 0x7C1E: +case 0x7C1F: +case 0x7C20: +case 0x7C21: +case 0x7C22: +case 0x7C23: +case 0x7C24: +case 0x7C25: +case 0x7C26: +case 0x7C27: +case 0x7C28: +case 0x7C29: +case 0x7C2A: +case 0x7C2B: +case 0x7C2C: +case 0x7C2D: +case 0x7C2E: +case 0x7C2F: +case 0x7C30: +case 0x7C31: +case 0x7C32: +case 0x7C33: +case 0x7C34: +case 0x7C35: +case 0x7C36: +case 0x7C37: +case 0x7C38: +case 0x7C39: +case 0x7C3A: +case 0x7C3B: +case 0x7C3C: +case 0x7C3D: +case 0x7C3E: +case 0x7C3F: +case 0x7C40: +case 0x7C41: +case 0x7C42: +case 0x7C43: +case 0x7C44: +case 0x7C45: +case 0x7C46: +case 0x7C47: +case 0x7C48: +case 0x7C49: +case 0x7C4A: +case 0x7C4B: +case 0x7C4C: +case 0x7C4D: +case 0x7C4E: +case 0x7C4F: +case 0x7C50: +case 0x7C51: +case 0x7C52: +case 0x7C53: +case 0x7C54: +case 0x7C55: +case 0x7C56: +case 0x7C57: +case 0x7C58: +case 0x7C59: +case 0x7C5A: +case 0x7C5B: +case 0x7C5C: +case 0x7C5D: +case 0x7C5E: +case 0x7C5F: +case 0x7C60: +case 0x7C61: +case 0x7C62: +case 0x7C63: +case 0x7C64: +case 0x7C65: +case 0x7C66: +case 0x7C67: +case 0x7C68: +case 0x7C69: +case 0x7C6A: +case 0x7C6B: +case 0x7C6C: +case 0x7C6D: +case 0x7C6E: +case 0x7C6F: +case 0x7C70: +case 0x7C71: +case 0x7C72: +case 0x7C73: +case 0x7C74: +case 0x7C75: +case 0x7C76: +case 0x7C77: +case 0x7C78: +case 0x7C79: +case 0x7C7A: +case 0x7C7B: +case 0x7C7C: +case 0x7C7D: +case 0x7C7E: +case 0x7C7F: +case 0x7C80: +case 0x7C81: +case 0x7C82: +case 0x7C83: +case 0x7C84: +case 0x7C85: +case 0x7C86: +case 0x7C87: +case 0x7C88: +case 0x7C89: +case 0x7C8A: +case 0x7C8B: +case 0x7C8C: +case 0x7C8D: +case 0x7C8E: +case 0x7C8F: +case 0x7C90: +case 0x7C91: +case 0x7C92: +case 0x7C93: +case 0x7C94: +case 0x7C95: +case 0x7C96: +case 0x7C97: +case 0x7C98: +case 0x7C99: +case 0x7C9A: +case 0x7C9B: +case 0x7C9C: +case 0x7C9D: +case 0x7C9E: +case 0x7C9F: +case 0x7CA0: +case 0x7CA1: +case 0x7CA2: +case 0x7CA3: +case 0x7CA4: +case 0x7CA5: +case 0x7CA6: +case 0x7CA7: +case 0x7CA8: +case 0x7CA9: +case 0x7CAA: +case 0x7CAB: +case 0x7CAC: +case 0x7CAD: +case 0x7CAE: +case 0x7CAF: +case 0x7CB0: +case 0x7CB1: +case 0x7CB2: +case 0x7CB3: +case 0x7CB4: +case 0x7CB5: +case 0x7CB6: +case 0x7CB7: +case 0x7CB8: +case 0x7CB9: +case 0x7CBA: +case 0x7CBB: +case 0x7CBC: +case 0x7CBD: +case 0x7CBE: +case 0x7CBF: +case 0x7CC0: +case 0x7CC1: +case 0x7CC2: +case 0x7CC3: +case 0x7CC4: +case 0x7CC5: +case 0x7CC6: +case 0x7CC7: +case 0x7CC8: +case 0x7CC9: +case 0x7CCA: +case 0x7CCB: +case 0x7CCC: +case 0x7CCD: +case 0x7CCE: +case 0x7CCF: +case 0x7CD0: +case 0x7CD1: +case 0x7CD2: +case 0x7CD3: +case 0x7CD4: +case 0x7CD5: +case 0x7CD6: +case 0x7CD7: +case 0x7CD8: +case 0x7CD9: +case 0x7CDA: +case 0x7CDB: +case 0x7CDC: +case 0x7CDD: +case 0x7CDE: +case 0x7CDF: +case 0x7CE0: +case 0x7CE1: +case 0x7CE2: +case 0x7CE3: +case 0x7CE4: +case 0x7CE5: +case 0x7CE6: +case 0x7CE7: +case 0x7CE8: +case 0x7CE9: +case 0x7CEA: +case 0x7CEB: +case 0x7CEC: +case 0x7CED: +case 0x7CEE: +case 0x7CEF: +case 0x7CF0: +case 0x7CF1: +case 0x7CF2: +case 0x7CF3: +case 0x7CF4: +case 0x7CF5: +case 0x7CF6: +case 0x7CF7: +case 0x7CF8: +case 0x7CF9: +case 0x7CFA: +case 0x7CFB: +case 0x7CFC: +case 0x7CFD: +case 0x7CFE: +case 0x7CFF: +case 0x7E00: +case 0x7E01: +case 0x7E02: +case 0x7E03: +case 0x7E04: +case 0x7E05: +case 0x7E06: +case 0x7E07: +case 0x7E08: +case 0x7E09: +case 0x7E0A: +case 0x7E0B: +case 0x7E0C: +case 0x7E0D: +case 0x7E0E: +case 0x7E0F: +case 0x7E10: +case 0x7E11: +case 0x7E12: +case 0x7E13: +case 0x7E14: +case 0x7E15: +case 0x7E16: +case 0x7E17: +case 0x7E18: +case 0x7E19: +case 0x7E1A: +case 0x7E1B: +case 0x7E1C: +case 0x7E1D: +case 0x7E1E: +case 0x7E1F: +case 0x7E20: +case 0x7E21: +case 0x7E22: +case 0x7E23: +case 0x7E24: +case 0x7E25: +case 0x7E26: +case 0x7E27: +case 0x7E28: +case 0x7E29: +case 0x7E2A: +case 0x7E2B: +case 0x7E2C: +case 0x7E2D: +case 0x7E2E: +case 0x7E2F: +case 0x7E30: +case 0x7E31: +case 0x7E32: +case 0x7E33: +case 0x7E34: +case 0x7E35: +case 0x7E36: +case 0x7E37: +case 0x7E38: +case 0x7E39: +case 0x7E3A: +case 0x7E3B: +case 0x7E3C: +case 0x7E3D: +case 0x7E3E: +case 0x7E3F: +case 0x7E40: +case 0x7E41: +case 0x7E42: +case 0x7E43: +case 0x7E44: +case 0x7E45: +case 0x7E46: +case 0x7E47: +case 0x7E48: +case 0x7E49: +case 0x7E4A: +case 0x7E4B: +case 0x7E4C: +case 0x7E4D: +case 0x7E4E: +case 0x7E4F: +case 0x7E50: +case 0x7E51: +case 0x7E52: +case 0x7E53: +case 0x7E54: +case 0x7E55: +case 0x7E56: +case 0x7E57: +case 0x7E58: +case 0x7E59: +case 0x7E5A: +case 0x7E5B: +case 0x7E5C: +case 0x7E5D: +case 0x7E5E: +case 0x7E5F: +case 0x7E60: +case 0x7E61: +case 0x7E62: +case 0x7E63: +case 0x7E64: +case 0x7E65: +case 0x7E66: +case 0x7E67: +case 0x7E68: +case 0x7E69: +case 0x7E6A: +case 0x7E6B: +case 0x7E6C: +case 0x7E6D: +case 0x7E6E: +case 0x7E6F: +case 0x7E70: +case 0x7E71: +case 0x7E72: +case 0x7E73: +case 0x7E74: +case 0x7E75: +case 0x7E76: +case 0x7E77: +case 0x7E78: +case 0x7E79: +case 0x7E7A: +case 0x7E7B: +case 0x7E7C: +case 0x7E7D: +case 0x7E7E: +case 0x7E7F: +case 0x7E80: +case 0x7E81: +case 0x7E82: +case 0x7E83: +case 0x7E84: +case 0x7E85: +case 0x7E86: +case 0x7E87: +case 0x7E88: +case 0x7E89: +case 0x7E8A: +case 0x7E8B: +case 0x7E8C: +case 0x7E8D: +case 0x7E8E: +case 0x7E8F: +case 0x7E90: +case 0x7E91: +case 0x7E92: +case 0x7E93: +case 0x7E94: +case 0x7E95: +case 0x7E96: +case 0x7E97: +case 0x7E98: +case 0x7E99: +case 0x7E9A: +case 0x7E9B: +case 0x7E9C: +case 0x7E9D: +case 0x7E9E: +case 0x7E9F: +case 0x7EA0: +case 0x7EA1: +case 0x7EA2: +case 0x7EA3: +case 0x7EA4: +case 0x7EA5: +case 0x7EA6: +case 0x7EA7: +case 0x7EA8: +case 0x7EA9: +case 0x7EAA: +case 0x7EAB: +case 0x7EAC: +case 0x7EAD: +case 0x7EAE: +case 0x7EAF: +case 0x7EB0: +case 0x7EB1: +case 0x7EB2: +case 0x7EB3: +case 0x7EB4: +case 0x7EB5: +case 0x7EB6: +case 0x7EB7: +case 0x7EB8: +case 0x7EB9: +case 0x7EBA: +case 0x7EBB: +case 0x7EBC: +case 0x7EBD: +case 0x7EBE: +case 0x7EBF: +case 0x7EC0: +case 0x7EC1: +case 0x7EC2: +case 0x7EC3: +case 0x7EC4: +case 0x7EC5: +case 0x7EC6: +case 0x7EC7: +case 0x7EC8: +case 0x7EC9: +case 0x7ECA: +case 0x7ECB: +case 0x7ECC: +case 0x7ECD: +case 0x7ECE: +case 0x7ECF: +case 0x7ED0: +case 0x7ED1: +case 0x7ED2: +case 0x7ED3: +case 0x7ED4: +case 0x7ED5: +case 0x7ED6: +case 0x7ED7: +case 0x7ED8: +case 0x7ED9: +case 0x7EDA: +case 0x7EDB: +case 0x7EDC: +case 0x7EDD: +case 0x7EDE: +case 0x7EDF: +case 0x7EE0: +case 0x7EE1: +case 0x7EE2: +case 0x7EE3: +case 0x7EE4: +case 0x7EE5: +case 0x7EE6: +case 0x7EE7: +case 0x7EE8: +case 0x7EE9: +case 0x7EEA: +case 0x7EEB: +case 0x7EEC: +case 0x7EED: +case 0x7EEE: +case 0x7EEF: +case 0x7EF0: +case 0x7EF1: +case 0x7EF2: +case 0x7EF3: +case 0x7EF4: +case 0x7EF5: +case 0x7EF6: +case 0x7EF7: +case 0x7EF8: +case 0x7EF9: +case 0x7EFA: +case 0x7EFB: +case 0x7EFC: +case 0x7EFD: +case 0x7EFE: +case 0x7EFF: + +// MOVEQ +case 0x7000: +{ + u32 res; + res = (s32)(s8)Opcode; + CPU->flag_C = CPU->flag_V = 0; + CPU->flag_N = CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op8.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op8.inc new file mode 100644 index 0000000000..8e2a8a2eeb --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op8.inc @@ -0,0 +1,5965 @@ +case 0x8200: +case 0x8400: +case 0x8600: +case 0x8800: +case 0x8A00: +case 0x8C00: +case 0x8E00: +case 0x8001: +case 0x8201: +case 0x8401: +case 0x8601: +case 0x8801: +case 0x8A01: +case 0x8C01: +case 0x8E01: +case 0x8002: +case 0x8202: +case 0x8402: +case 0x8602: +case 0x8802: +case 0x8A02: +case 0x8C02: +case 0x8E02: +case 0x8003: +case 0x8203: +case 0x8403: +case 0x8603: +case 0x8803: +case 0x8A03: +case 0x8C03: +case 0x8E03: +case 0x8004: +case 0x8204: +case 0x8404: +case 0x8604: +case 0x8804: +case 0x8A04: +case 0x8C04: +case 0x8E04: +case 0x8005: +case 0x8205: +case 0x8405: +case 0x8605: +case 0x8805: +case 0x8A05: +case 0x8C05: +case 0x8E05: +case 0x8006: +case 0x8206: +case 0x8406: +case 0x8606: +case 0x8806: +case 0x8A06: +case 0x8C06: +case 0x8E06: +case 0x8007: +case 0x8207: +case 0x8407: +case 0x8607: +case 0x8807: +case 0x8A07: +case 0x8C07: +case 0x8E07: + +// ORaD +case 0x8000: +{ + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8210: +case 0x8410: +case 0x8610: +case 0x8810: +case 0x8A10: +case 0x8C10: +case 0x8E10: +case 0x8011: +case 0x8211: +case 0x8411: +case 0x8611: +case 0x8811: +case 0x8A11: +case 0x8C11: +case 0x8E11: +case 0x8012: +case 0x8212: +case 0x8412: +case 0x8612: +case 0x8812: +case 0x8A12: +case 0x8C12: +case 0x8E12: +case 0x8013: +case 0x8213: +case 0x8413: +case 0x8613: +case 0x8813: +case 0x8A13: +case 0x8C13: +case 0x8E13: +case 0x8014: +case 0x8214: +case 0x8414: +case 0x8614: +case 0x8814: +case 0x8A14: +case 0x8C14: +case 0x8E14: +case 0x8015: +case 0x8215: +case 0x8415: +case 0x8615: +case 0x8815: +case 0x8A15: +case 0x8C15: +case 0x8E15: +case 0x8016: +case 0x8216: +case 0x8416: +case 0x8616: +case 0x8816: +case 0x8A16: +case 0x8C16: +case 0x8E16: +case 0x8017: +case 0x8217: +case 0x8417: +case 0x8617: +case 0x8817: +case 0x8A17: +case 0x8C17: +case 0x8E17: + +// ORaD +case 0x8010: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8218: +case 0x8418: +case 0x8618: +case 0x8818: +case 0x8A18: +case 0x8C18: +case 0x8E18: +case 0x8019: +case 0x8219: +case 0x8419: +case 0x8619: +case 0x8819: +case 0x8A19: +case 0x8C19: +case 0x8E19: +case 0x801A: +case 0x821A: +case 0x841A: +case 0x861A: +case 0x881A: +case 0x8A1A: +case 0x8C1A: +case 0x8E1A: +case 0x801B: +case 0x821B: +case 0x841B: +case 0x861B: +case 0x881B: +case 0x8A1B: +case 0x8C1B: +case 0x8E1B: +case 0x801C: +case 0x821C: +case 0x841C: +case 0x861C: +case 0x881C: +case 0x8A1C: +case 0x8C1C: +case 0x8E1C: +case 0x801D: +case 0x821D: +case 0x841D: +case 0x861D: +case 0x881D: +case 0x8A1D: +case 0x8C1D: +case 0x8E1D: +case 0x801E: +case 0x821E: +case 0x841E: +case 0x861E: +case 0x881E: +case 0x8A1E: +case 0x8C1E: +case 0x8E1E: + +// ORaD +case 0x8018: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8220: +case 0x8420: +case 0x8620: +case 0x8820: +case 0x8A20: +case 0x8C20: +case 0x8E20: +case 0x8021: +case 0x8221: +case 0x8421: +case 0x8621: +case 0x8821: +case 0x8A21: +case 0x8C21: +case 0x8E21: +case 0x8022: +case 0x8222: +case 0x8422: +case 0x8622: +case 0x8822: +case 0x8A22: +case 0x8C22: +case 0x8E22: +case 0x8023: +case 0x8223: +case 0x8423: +case 0x8623: +case 0x8823: +case 0x8A23: +case 0x8C23: +case 0x8E23: +case 0x8024: +case 0x8224: +case 0x8424: +case 0x8624: +case 0x8824: +case 0x8A24: +case 0x8C24: +case 0x8E24: +case 0x8025: +case 0x8225: +case 0x8425: +case 0x8625: +case 0x8825: +case 0x8A25: +case 0x8C25: +case 0x8E25: +case 0x8026: +case 0x8226: +case 0x8426: +case 0x8626: +case 0x8826: +case 0x8A26: +case 0x8C26: +case 0x8E26: + +// ORaD +case 0x8020: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8228: +case 0x8428: +case 0x8628: +case 0x8828: +case 0x8A28: +case 0x8C28: +case 0x8E28: +case 0x8029: +case 0x8229: +case 0x8429: +case 0x8629: +case 0x8829: +case 0x8A29: +case 0x8C29: +case 0x8E29: +case 0x802A: +case 0x822A: +case 0x842A: +case 0x862A: +case 0x882A: +case 0x8A2A: +case 0x8C2A: +case 0x8E2A: +case 0x802B: +case 0x822B: +case 0x842B: +case 0x862B: +case 0x882B: +case 0x8A2B: +case 0x8C2B: +case 0x8E2B: +case 0x802C: +case 0x822C: +case 0x842C: +case 0x862C: +case 0x882C: +case 0x8A2C: +case 0x8C2C: +case 0x8E2C: +case 0x802D: +case 0x822D: +case 0x842D: +case 0x862D: +case 0x882D: +case 0x8A2D: +case 0x8C2D: +case 0x8E2D: +case 0x802E: +case 0x822E: +case 0x842E: +case 0x862E: +case 0x882E: +case 0x8A2E: +case 0x8C2E: +case 0x8E2E: +case 0x802F: +case 0x822F: +case 0x842F: +case 0x862F: +case 0x882F: +case 0x8A2F: +case 0x8C2F: +case 0x8E2F: + +// ORaD +case 0x8028: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8230: +case 0x8430: +case 0x8630: +case 0x8830: +case 0x8A30: +case 0x8C30: +case 0x8E30: +case 0x8031: +case 0x8231: +case 0x8431: +case 0x8631: +case 0x8831: +case 0x8A31: +case 0x8C31: +case 0x8E31: +case 0x8032: +case 0x8232: +case 0x8432: +case 0x8632: +case 0x8832: +case 0x8A32: +case 0x8C32: +case 0x8E32: +case 0x8033: +case 0x8233: +case 0x8433: +case 0x8633: +case 0x8833: +case 0x8A33: +case 0x8C33: +case 0x8E33: +case 0x8034: +case 0x8234: +case 0x8434: +case 0x8634: +case 0x8834: +case 0x8A34: +case 0x8C34: +case 0x8E34: +case 0x8035: +case 0x8235: +case 0x8435: +case 0x8635: +case 0x8835: +case 0x8A35: +case 0x8C35: +case 0x8E35: +case 0x8036: +case 0x8236: +case 0x8436: +case 0x8636: +case 0x8836: +case 0x8A36: +case 0x8C36: +case 0x8E36: +case 0x8037: +case 0x8237: +case 0x8437: +case 0x8637: +case 0x8837: +case 0x8A37: +case 0x8C37: +case 0x8E37: + +// ORaD +case 0x8030: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8238: +case 0x8438: +case 0x8638: +case 0x8838: +case 0x8A38: +case 0x8C38: +case 0x8E38: + +// ORaD +case 0x8038: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8239: +case 0x8439: +case 0x8639: +case 0x8839: +case 0x8A39: +case 0x8C39: +case 0x8E39: + +// ORaD +case 0x8039: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x823A: +case 0x843A: +case 0x863A: +case 0x883A: +case 0x8A3A: +case 0x8C3A: +case 0x8E3A: + +// ORaD +case 0x803A: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x823B: +case 0x843B: +case 0x863B: +case 0x883B: +case 0x8A3B: +case 0x8C3B: +case 0x8E3B: + +// ORaD +case 0x803B: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x823C: +case 0x843C: +case 0x863C: +case 0x883C: +case 0x8A3C: +case 0x8C3C: +case 0x8E3C: + +// ORaD +case 0x803C: +{ + u32 res; + u32 src; + src = FETCH_BYTE; + PC += 2; + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0x821F: +case 0x841F: +case 0x861F: +case 0x881F: +case 0x8A1F: +case 0x8C1F: +case 0x8E1F: + +// ORaD +case 0x801F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8227: +case 0x8427: +case 0x8627: +case 0x8827: +case 0x8A27: +case 0x8C27: +case 0x8E27: + +// ORaD +case 0x8027: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8240: +case 0x8440: +case 0x8640: +case 0x8840: +case 0x8A40: +case 0x8C40: +case 0x8E40: +case 0x8041: +case 0x8241: +case 0x8441: +case 0x8641: +case 0x8841: +case 0x8A41: +case 0x8C41: +case 0x8E41: +case 0x8042: +case 0x8242: +case 0x8442: +case 0x8642: +case 0x8842: +case 0x8A42: +case 0x8C42: +case 0x8E42: +case 0x8043: +case 0x8243: +case 0x8443: +case 0x8643: +case 0x8843: +case 0x8A43: +case 0x8C43: +case 0x8E43: +case 0x8044: +case 0x8244: +case 0x8444: +case 0x8644: +case 0x8844: +case 0x8A44: +case 0x8C44: +case 0x8E44: +case 0x8045: +case 0x8245: +case 0x8445: +case 0x8645: +case 0x8845: +case 0x8A45: +case 0x8C45: +case 0x8E45: +case 0x8046: +case 0x8246: +case 0x8446: +case 0x8646: +case 0x8846: +case 0x8A46: +case 0x8C46: +case 0x8E46: +case 0x8047: +case 0x8247: +case 0x8447: +case 0x8647: +case 0x8847: +case 0x8A47: +case 0x8C47: +case 0x8E47: + +// ORaD +case 0x8040: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8250: +case 0x8450: +case 0x8650: +case 0x8850: +case 0x8A50: +case 0x8C50: +case 0x8E50: +case 0x8051: +case 0x8251: +case 0x8451: +case 0x8651: +case 0x8851: +case 0x8A51: +case 0x8C51: +case 0x8E51: +case 0x8052: +case 0x8252: +case 0x8452: +case 0x8652: +case 0x8852: +case 0x8A52: +case 0x8C52: +case 0x8E52: +case 0x8053: +case 0x8253: +case 0x8453: +case 0x8653: +case 0x8853: +case 0x8A53: +case 0x8C53: +case 0x8E53: +case 0x8054: +case 0x8254: +case 0x8454: +case 0x8654: +case 0x8854: +case 0x8A54: +case 0x8C54: +case 0x8E54: +case 0x8055: +case 0x8255: +case 0x8455: +case 0x8655: +case 0x8855: +case 0x8A55: +case 0x8C55: +case 0x8E55: +case 0x8056: +case 0x8256: +case 0x8456: +case 0x8656: +case 0x8856: +case 0x8A56: +case 0x8C56: +case 0x8E56: +case 0x8057: +case 0x8257: +case 0x8457: +case 0x8657: +case 0x8857: +case 0x8A57: +case 0x8C57: +case 0x8E57: + +// ORaD +case 0x8050: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8258: +case 0x8458: +case 0x8658: +case 0x8858: +case 0x8A58: +case 0x8C58: +case 0x8E58: +case 0x8059: +case 0x8259: +case 0x8459: +case 0x8659: +case 0x8859: +case 0x8A59: +case 0x8C59: +case 0x8E59: +case 0x805A: +case 0x825A: +case 0x845A: +case 0x865A: +case 0x885A: +case 0x8A5A: +case 0x8C5A: +case 0x8E5A: +case 0x805B: +case 0x825B: +case 0x845B: +case 0x865B: +case 0x885B: +case 0x8A5B: +case 0x8C5B: +case 0x8E5B: +case 0x805C: +case 0x825C: +case 0x845C: +case 0x865C: +case 0x885C: +case 0x8A5C: +case 0x8C5C: +case 0x8E5C: +case 0x805D: +case 0x825D: +case 0x845D: +case 0x865D: +case 0x885D: +case 0x8A5D: +case 0x8C5D: +case 0x8E5D: +case 0x805E: +case 0x825E: +case 0x845E: +case 0x865E: +case 0x885E: +case 0x8A5E: +case 0x8C5E: +case 0x8E5E: + +// ORaD +case 0x8058: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8260: +case 0x8460: +case 0x8660: +case 0x8860: +case 0x8A60: +case 0x8C60: +case 0x8E60: +case 0x8061: +case 0x8261: +case 0x8461: +case 0x8661: +case 0x8861: +case 0x8A61: +case 0x8C61: +case 0x8E61: +case 0x8062: +case 0x8262: +case 0x8462: +case 0x8662: +case 0x8862: +case 0x8A62: +case 0x8C62: +case 0x8E62: +case 0x8063: +case 0x8263: +case 0x8463: +case 0x8663: +case 0x8863: +case 0x8A63: +case 0x8C63: +case 0x8E63: +case 0x8064: +case 0x8264: +case 0x8464: +case 0x8664: +case 0x8864: +case 0x8A64: +case 0x8C64: +case 0x8E64: +case 0x8065: +case 0x8265: +case 0x8465: +case 0x8665: +case 0x8865: +case 0x8A65: +case 0x8C65: +case 0x8E65: +case 0x8066: +case 0x8266: +case 0x8466: +case 0x8666: +case 0x8866: +case 0x8A66: +case 0x8C66: +case 0x8E66: + +// ORaD +case 0x8060: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8268: +case 0x8468: +case 0x8668: +case 0x8868: +case 0x8A68: +case 0x8C68: +case 0x8E68: +case 0x8069: +case 0x8269: +case 0x8469: +case 0x8669: +case 0x8869: +case 0x8A69: +case 0x8C69: +case 0x8E69: +case 0x806A: +case 0x826A: +case 0x846A: +case 0x866A: +case 0x886A: +case 0x8A6A: +case 0x8C6A: +case 0x8E6A: +case 0x806B: +case 0x826B: +case 0x846B: +case 0x866B: +case 0x886B: +case 0x8A6B: +case 0x8C6B: +case 0x8E6B: +case 0x806C: +case 0x826C: +case 0x846C: +case 0x866C: +case 0x886C: +case 0x8A6C: +case 0x8C6C: +case 0x8E6C: +case 0x806D: +case 0x826D: +case 0x846D: +case 0x866D: +case 0x886D: +case 0x8A6D: +case 0x8C6D: +case 0x8E6D: +case 0x806E: +case 0x826E: +case 0x846E: +case 0x866E: +case 0x886E: +case 0x8A6E: +case 0x8C6E: +case 0x8E6E: +case 0x806F: +case 0x826F: +case 0x846F: +case 0x866F: +case 0x886F: +case 0x8A6F: +case 0x8C6F: +case 0x8E6F: + +// ORaD +case 0x8068: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8270: +case 0x8470: +case 0x8670: +case 0x8870: +case 0x8A70: +case 0x8C70: +case 0x8E70: +case 0x8071: +case 0x8271: +case 0x8471: +case 0x8671: +case 0x8871: +case 0x8A71: +case 0x8C71: +case 0x8E71: +case 0x8072: +case 0x8272: +case 0x8472: +case 0x8672: +case 0x8872: +case 0x8A72: +case 0x8C72: +case 0x8E72: +case 0x8073: +case 0x8273: +case 0x8473: +case 0x8673: +case 0x8873: +case 0x8A73: +case 0x8C73: +case 0x8E73: +case 0x8074: +case 0x8274: +case 0x8474: +case 0x8674: +case 0x8874: +case 0x8A74: +case 0x8C74: +case 0x8E74: +case 0x8075: +case 0x8275: +case 0x8475: +case 0x8675: +case 0x8875: +case 0x8A75: +case 0x8C75: +case 0x8E75: +case 0x8076: +case 0x8276: +case 0x8476: +case 0x8676: +case 0x8876: +case 0x8A76: +case 0x8C76: +case 0x8E76: +case 0x8077: +case 0x8277: +case 0x8477: +case 0x8677: +case 0x8877: +case 0x8A77: +case 0x8C77: +case 0x8E77: + +// ORaD +case 0x8070: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8278: +case 0x8478: +case 0x8678: +case 0x8878: +case 0x8A78: +case 0x8C78: +case 0x8E78: + +// ORaD +case 0x8078: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8279: +case 0x8479: +case 0x8679: +case 0x8879: +case 0x8A79: +case 0x8C79: +case 0x8E79: + +// ORaD +case 0x8079: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x827A: +case 0x847A: +case 0x867A: +case 0x887A: +case 0x8A7A: +case 0x8C7A: +case 0x8E7A: + +// ORaD +case 0x807A: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x827B: +case 0x847B: +case 0x867B: +case 0x887B: +case 0x8A7B: +case 0x8C7B: +case 0x8E7B: + +// ORaD +case 0x807B: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x827C: +case 0x847C: +case 0x867C: +case 0x887C: +case 0x8A7C: +case 0x8C7C: +case 0x8E7C: + +// ORaD +case 0x807C: +{ + u32 res; + u32 src; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0x825F: +case 0x845F: +case 0x865F: +case 0x885F: +case 0x8A5F: +case 0x8C5F: +case 0x8E5F: + +// ORaD +case 0x805F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8267: +case 0x8467: +case 0x8667: +case 0x8867: +case 0x8A67: +case 0x8C67: +case 0x8E67: + +// ORaD +case 0x8067: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8280: +case 0x8480: +case 0x8680: +case 0x8880: +case 0x8A80: +case 0x8C80: +case 0x8E80: +case 0x8081: +case 0x8281: +case 0x8481: +case 0x8681: +case 0x8881: +case 0x8A81: +case 0x8C81: +case 0x8E81: +case 0x8082: +case 0x8282: +case 0x8482: +case 0x8682: +case 0x8882: +case 0x8A82: +case 0x8C82: +case 0x8E82: +case 0x8083: +case 0x8283: +case 0x8483: +case 0x8683: +case 0x8883: +case 0x8A83: +case 0x8C83: +case 0x8E83: +case 0x8084: +case 0x8284: +case 0x8484: +case 0x8684: +case 0x8884: +case 0x8A84: +case 0x8C84: +case 0x8E84: +case 0x8085: +case 0x8285: +case 0x8485: +case 0x8685: +case 0x8885: +case 0x8A85: +case 0x8C85: +case 0x8E85: +case 0x8086: +case 0x8286: +case 0x8486: +case 0x8686: +case 0x8886: +case 0x8A86: +case 0x8C86: +case 0x8E86: +case 0x8087: +case 0x8287: +case 0x8487: +case 0x8687: +case 0x8887: +case 0x8A87: +case 0x8C87: +case 0x8E87: + +// ORaD +case 0x8080: +{ + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0x8290: +case 0x8490: +case 0x8690: +case 0x8890: +case 0x8A90: +case 0x8C90: +case 0x8E90: +case 0x8091: +case 0x8291: +case 0x8491: +case 0x8691: +case 0x8891: +case 0x8A91: +case 0x8C91: +case 0x8E91: +case 0x8092: +case 0x8292: +case 0x8492: +case 0x8692: +case 0x8892: +case 0x8A92: +case 0x8C92: +case 0x8E92: +case 0x8093: +case 0x8293: +case 0x8493: +case 0x8693: +case 0x8893: +case 0x8A93: +case 0x8C93: +case 0x8E93: +case 0x8094: +case 0x8294: +case 0x8494: +case 0x8694: +case 0x8894: +case 0x8A94: +case 0x8C94: +case 0x8E94: +case 0x8095: +case 0x8295: +case 0x8495: +case 0x8695: +case 0x8895: +case 0x8A95: +case 0x8C95: +case 0x8E95: +case 0x8096: +case 0x8296: +case 0x8496: +case 0x8696: +case 0x8896: +case 0x8A96: +case 0x8C96: +case 0x8E96: +case 0x8097: +case 0x8297: +case 0x8497: +case 0x8697: +case 0x8897: +case 0x8A97: +case 0x8C97: +case 0x8E97: + +// ORaD +case 0x8090: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8298: +case 0x8498: +case 0x8698: +case 0x8898: +case 0x8A98: +case 0x8C98: +case 0x8E98: +case 0x8099: +case 0x8299: +case 0x8499: +case 0x8699: +case 0x8899: +case 0x8A99: +case 0x8C99: +case 0x8E99: +case 0x809A: +case 0x829A: +case 0x849A: +case 0x869A: +case 0x889A: +case 0x8A9A: +case 0x8C9A: +case 0x8E9A: +case 0x809B: +case 0x829B: +case 0x849B: +case 0x869B: +case 0x889B: +case 0x8A9B: +case 0x8C9B: +case 0x8E9B: +case 0x809C: +case 0x829C: +case 0x849C: +case 0x869C: +case 0x889C: +case 0x8A9C: +case 0x8C9C: +case 0x8E9C: +case 0x809D: +case 0x829D: +case 0x849D: +case 0x869D: +case 0x889D: +case 0x8A9D: +case 0x8C9D: +case 0x8E9D: +case 0x809E: +case 0x829E: +case 0x849E: +case 0x869E: +case 0x889E: +case 0x8A9E: +case 0x8C9E: +case 0x8E9E: + +// ORaD +case 0x8098: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82A0: +case 0x84A0: +case 0x86A0: +case 0x88A0: +case 0x8AA0: +case 0x8CA0: +case 0x8EA0: +case 0x80A1: +case 0x82A1: +case 0x84A1: +case 0x86A1: +case 0x88A1: +case 0x8AA1: +case 0x8CA1: +case 0x8EA1: +case 0x80A2: +case 0x82A2: +case 0x84A2: +case 0x86A2: +case 0x88A2: +case 0x8AA2: +case 0x8CA2: +case 0x8EA2: +case 0x80A3: +case 0x82A3: +case 0x84A3: +case 0x86A3: +case 0x88A3: +case 0x8AA3: +case 0x8CA3: +case 0x8EA3: +case 0x80A4: +case 0x82A4: +case 0x84A4: +case 0x86A4: +case 0x88A4: +case 0x8AA4: +case 0x8CA4: +case 0x8EA4: +case 0x80A5: +case 0x82A5: +case 0x84A5: +case 0x86A5: +case 0x88A5: +case 0x8AA5: +case 0x8CA5: +case 0x8EA5: +case 0x80A6: +case 0x82A6: +case 0x84A6: +case 0x86A6: +case 0x88A6: +case 0x8AA6: +case 0x8CA6: +case 0x8EA6: + +// ORaD +case 0x80A0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82A8: +case 0x84A8: +case 0x86A8: +case 0x88A8: +case 0x8AA8: +case 0x8CA8: +case 0x8EA8: +case 0x80A9: +case 0x82A9: +case 0x84A9: +case 0x86A9: +case 0x88A9: +case 0x8AA9: +case 0x8CA9: +case 0x8EA9: +case 0x80AA: +case 0x82AA: +case 0x84AA: +case 0x86AA: +case 0x88AA: +case 0x8AAA: +case 0x8CAA: +case 0x8EAA: +case 0x80AB: +case 0x82AB: +case 0x84AB: +case 0x86AB: +case 0x88AB: +case 0x8AAB: +case 0x8CAB: +case 0x8EAB: +case 0x80AC: +case 0x82AC: +case 0x84AC: +case 0x86AC: +case 0x88AC: +case 0x8AAC: +case 0x8CAC: +case 0x8EAC: +case 0x80AD: +case 0x82AD: +case 0x84AD: +case 0x86AD: +case 0x88AD: +case 0x8AAD: +case 0x8CAD: +case 0x8EAD: +case 0x80AE: +case 0x82AE: +case 0x84AE: +case 0x86AE: +case 0x88AE: +case 0x8AAE: +case 0x8CAE: +case 0x8EAE: +case 0x80AF: +case 0x82AF: +case 0x84AF: +case 0x86AF: +case 0x88AF: +case 0x8AAF: +case 0x8CAF: +case 0x8EAF: + +// ORaD +case 0x80A8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82B0: +case 0x84B0: +case 0x86B0: +case 0x88B0: +case 0x8AB0: +case 0x8CB0: +case 0x8EB0: +case 0x80B1: +case 0x82B1: +case 0x84B1: +case 0x86B1: +case 0x88B1: +case 0x8AB1: +case 0x8CB1: +case 0x8EB1: +case 0x80B2: +case 0x82B2: +case 0x84B2: +case 0x86B2: +case 0x88B2: +case 0x8AB2: +case 0x8CB2: +case 0x8EB2: +case 0x80B3: +case 0x82B3: +case 0x84B3: +case 0x86B3: +case 0x88B3: +case 0x8AB3: +case 0x8CB3: +case 0x8EB3: +case 0x80B4: +case 0x82B4: +case 0x84B4: +case 0x86B4: +case 0x88B4: +case 0x8AB4: +case 0x8CB4: +case 0x8EB4: +case 0x80B5: +case 0x82B5: +case 0x84B5: +case 0x86B5: +case 0x88B5: +case 0x8AB5: +case 0x8CB5: +case 0x8EB5: +case 0x80B6: +case 0x82B6: +case 0x84B6: +case 0x86B6: +case 0x88B6: +case 0x8AB6: +case 0x8CB6: +case 0x8EB6: +case 0x80B7: +case 0x82B7: +case 0x84B7: +case 0x86B7: +case 0x88B7: +case 0x8AB7: +case 0x8CB7: +case 0x8EB7: + +// ORaD +case 0x80B0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82B8: +case 0x84B8: +case 0x86B8: +case 0x88B8: +case 0x8AB8: +case 0x8CB8: +case 0x8EB8: + +// ORaD +case 0x80B8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82B9: +case 0x84B9: +case 0x86B9: +case 0x88B9: +case 0x8AB9: +case 0x8CB9: +case 0x8EB9: + +// ORaD +case 0x80B9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82BA: +case 0x84BA: +case 0x86BA: +case 0x88BA: +case 0x8ABA: +case 0x8CBA: +case 0x8EBA: + +// ORaD +case 0x80BA: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82BB: +case 0x84BB: +case 0x86BB: +case 0x88BB: +case 0x8ABB: +case 0x8CBB: +case 0x8EBB: + +// ORaD +case 0x80BB: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82BC: +case 0x84BC: +case 0x86BC: +case 0x88BC: +case 0x8ABC: +case 0x8CBC: +case 0x8EBC: + +// ORaD +case 0x80BC: +{ + u32 res; + u32 src; + src = FETCH_LONG; + PC += 4; + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(14) +case 0x829F: +case 0x849F: +case 0x869F: +case 0x889F: +case 0x8A9F: +case 0x8C9F: +case 0x8E9F: + +// ORaD +case 0x809F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x82A7: +case 0x84A7: +case 0x86A7: +case 0x88A7: +case 0x8AA7: +case 0x8CA7: +case 0x8EA7: + +// ORaD +case 0x80A7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x8310: +case 0x8510: +case 0x8710: +case 0x8910: +case 0x8B10: +case 0x8D10: +case 0x8F10: +case 0x8111: +case 0x8311: +case 0x8511: +case 0x8711: +case 0x8911: +case 0x8B11: +case 0x8D11: +case 0x8F11: +case 0x8112: +case 0x8312: +case 0x8512: +case 0x8712: +case 0x8912: +case 0x8B12: +case 0x8D12: +case 0x8F12: +case 0x8113: +case 0x8313: +case 0x8513: +case 0x8713: +case 0x8913: +case 0x8B13: +case 0x8D13: +case 0x8F13: +case 0x8114: +case 0x8314: +case 0x8514: +case 0x8714: +case 0x8914: +case 0x8B14: +case 0x8D14: +case 0x8F14: +case 0x8115: +case 0x8315: +case 0x8515: +case 0x8715: +case 0x8915: +case 0x8B15: +case 0x8D15: +case 0x8F15: +case 0x8116: +case 0x8316: +case 0x8516: +case 0x8716: +case 0x8916: +case 0x8B16: +case 0x8D16: +case 0x8F16: +case 0x8117: +case 0x8317: +case 0x8517: +case 0x8717: +case 0x8917: +case 0x8B17: +case 0x8D17: +case 0x8F17: + +// ORDa +case 0x8110: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8318: +case 0x8518: +case 0x8718: +case 0x8918: +case 0x8B18: +case 0x8D18: +case 0x8F18: +case 0x8119: +case 0x8319: +case 0x8519: +case 0x8719: +case 0x8919: +case 0x8B19: +case 0x8D19: +case 0x8F19: +case 0x811A: +case 0x831A: +case 0x851A: +case 0x871A: +case 0x891A: +case 0x8B1A: +case 0x8D1A: +case 0x8F1A: +case 0x811B: +case 0x831B: +case 0x851B: +case 0x871B: +case 0x891B: +case 0x8B1B: +case 0x8D1B: +case 0x8F1B: +case 0x811C: +case 0x831C: +case 0x851C: +case 0x871C: +case 0x891C: +case 0x8B1C: +case 0x8D1C: +case 0x8F1C: +case 0x811D: +case 0x831D: +case 0x851D: +case 0x871D: +case 0x891D: +case 0x8B1D: +case 0x8D1D: +case 0x8F1D: +case 0x811E: +case 0x831E: +case 0x851E: +case 0x871E: +case 0x891E: +case 0x8B1E: +case 0x8D1E: +case 0x8F1E: + +// ORDa +case 0x8118: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8320: +case 0x8520: +case 0x8720: +case 0x8920: +case 0x8B20: +case 0x8D20: +case 0x8F20: +case 0x8121: +case 0x8321: +case 0x8521: +case 0x8721: +case 0x8921: +case 0x8B21: +case 0x8D21: +case 0x8F21: +case 0x8122: +case 0x8322: +case 0x8522: +case 0x8722: +case 0x8922: +case 0x8B22: +case 0x8D22: +case 0x8F22: +case 0x8123: +case 0x8323: +case 0x8523: +case 0x8723: +case 0x8923: +case 0x8B23: +case 0x8D23: +case 0x8F23: +case 0x8124: +case 0x8324: +case 0x8524: +case 0x8724: +case 0x8924: +case 0x8B24: +case 0x8D24: +case 0x8F24: +case 0x8125: +case 0x8325: +case 0x8525: +case 0x8725: +case 0x8925: +case 0x8B25: +case 0x8D25: +case 0x8F25: +case 0x8126: +case 0x8326: +case 0x8526: +case 0x8726: +case 0x8926: +case 0x8B26: +case 0x8D26: +case 0x8F26: + +// ORDa +case 0x8120: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8328: +case 0x8528: +case 0x8728: +case 0x8928: +case 0x8B28: +case 0x8D28: +case 0x8F28: +case 0x8129: +case 0x8329: +case 0x8529: +case 0x8729: +case 0x8929: +case 0x8B29: +case 0x8D29: +case 0x8F29: +case 0x812A: +case 0x832A: +case 0x852A: +case 0x872A: +case 0x892A: +case 0x8B2A: +case 0x8D2A: +case 0x8F2A: +case 0x812B: +case 0x832B: +case 0x852B: +case 0x872B: +case 0x892B: +case 0x8B2B: +case 0x8D2B: +case 0x8F2B: +case 0x812C: +case 0x832C: +case 0x852C: +case 0x872C: +case 0x892C: +case 0x8B2C: +case 0x8D2C: +case 0x8F2C: +case 0x812D: +case 0x832D: +case 0x852D: +case 0x872D: +case 0x892D: +case 0x8B2D: +case 0x8D2D: +case 0x8F2D: +case 0x812E: +case 0x832E: +case 0x852E: +case 0x872E: +case 0x892E: +case 0x8B2E: +case 0x8D2E: +case 0x8F2E: +case 0x812F: +case 0x832F: +case 0x852F: +case 0x872F: +case 0x892F: +case 0x8B2F: +case 0x8D2F: +case 0x8F2F: + +// ORDa +case 0x8128: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8330: +case 0x8530: +case 0x8730: +case 0x8930: +case 0x8B30: +case 0x8D30: +case 0x8F30: +case 0x8131: +case 0x8331: +case 0x8531: +case 0x8731: +case 0x8931: +case 0x8B31: +case 0x8D31: +case 0x8F31: +case 0x8132: +case 0x8332: +case 0x8532: +case 0x8732: +case 0x8932: +case 0x8B32: +case 0x8D32: +case 0x8F32: +case 0x8133: +case 0x8333: +case 0x8533: +case 0x8733: +case 0x8933: +case 0x8B33: +case 0x8D33: +case 0x8F33: +case 0x8134: +case 0x8334: +case 0x8534: +case 0x8734: +case 0x8934: +case 0x8B34: +case 0x8D34: +case 0x8F34: +case 0x8135: +case 0x8335: +case 0x8535: +case 0x8735: +case 0x8935: +case 0x8B35: +case 0x8D35: +case 0x8F35: +case 0x8136: +case 0x8336: +case 0x8536: +case 0x8736: +case 0x8936: +case 0x8B36: +case 0x8D36: +case 0x8F36: +case 0x8137: +case 0x8337: +case 0x8537: +case 0x8737: +case 0x8937: +case 0x8B37: +case 0x8D37: +case 0x8F37: + +// ORDa +case 0x8130: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8338: +case 0x8538: +case 0x8738: +case 0x8938: +case 0x8B38: +case 0x8D38: +case 0x8F38: + +// ORDa +case 0x8138: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8339: +case 0x8539: +case 0x8739: +case 0x8939: +case 0x8B39: +case 0x8D39: +case 0x8F39: + +// ORDa +case 0x8139: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x831F: +case 0x851F: +case 0x871F: +case 0x891F: +case 0x8B1F: +case 0x8D1F: +case 0x8F1F: + +// ORDa +case 0x811F: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8327: +case 0x8527: +case 0x8727: +case 0x8927: +case 0x8B27: +case 0x8D27: +case 0x8F27: + +// ORDa +case 0x8127: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x8350: +case 0x8550: +case 0x8750: +case 0x8950: +case 0x8B50: +case 0x8D50: +case 0x8F50: +case 0x8151: +case 0x8351: +case 0x8551: +case 0x8751: +case 0x8951: +case 0x8B51: +case 0x8D51: +case 0x8F51: +case 0x8152: +case 0x8352: +case 0x8552: +case 0x8752: +case 0x8952: +case 0x8B52: +case 0x8D52: +case 0x8F52: +case 0x8153: +case 0x8353: +case 0x8553: +case 0x8753: +case 0x8953: +case 0x8B53: +case 0x8D53: +case 0x8F53: +case 0x8154: +case 0x8354: +case 0x8554: +case 0x8754: +case 0x8954: +case 0x8B54: +case 0x8D54: +case 0x8F54: +case 0x8155: +case 0x8355: +case 0x8555: +case 0x8755: +case 0x8955: +case 0x8B55: +case 0x8D55: +case 0x8F55: +case 0x8156: +case 0x8356: +case 0x8556: +case 0x8756: +case 0x8956: +case 0x8B56: +case 0x8D56: +case 0x8F56: +case 0x8157: +case 0x8357: +case 0x8557: +case 0x8757: +case 0x8957: +case 0x8B57: +case 0x8D57: +case 0x8F57: + +// ORDa +case 0x8150: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8358: +case 0x8558: +case 0x8758: +case 0x8958: +case 0x8B58: +case 0x8D58: +case 0x8F58: +case 0x8159: +case 0x8359: +case 0x8559: +case 0x8759: +case 0x8959: +case 0x8B59: +case 0x8D59: +case 0x8F59: +case 0x815A: +case 0x835A: +case 0x855A: +case 0x875A: +case 0x895A: +case 0x8B5A: +case 0x8D5A: +case 0x8F5A: +case 0x815B: +case 0x835B: +case 0x855B: +case 0x875B: +case 0x895B: +case 0x8B5B: +case 0x8D5B: +case 0x8F5B: +case 0x815C: +case 0x835C: +case 0x855C: +case 0x875C: +case 0x895C: +case 0x8B5C: +case 0x8D5C: +case 0x8F5C: +case 0x815D: +case 0x835D: +case 0x855D: +case 0x875D: +case 0x895D: +case 0x8B5D: +case 0x8D5D: +case 0x8F5D: +case 0x815E: +case 0x835E: +case 0x855E: +case 0x875E: +case 0x895E: +case 0x8B5E: +case 0x8D5E: +case 0x8F5E: + +// ORDa +case 0x8158: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8360: +case 0x8560: +case 0x8760: +case 0x8960: +case 0x8B60: +case 0x8D60: +case 0x8F60: +case 0x8161: +case 0x8361: +case 0x8561: +case 0x8761: +case 0x8961: +case 0x8B61: +case 0x8D61: +case 0x8F61: +case 0x8162: +case 0x8362: +case 0x8562: +case 0x8762: +case 0x8962: +case 0x8B62: +case 0x8D62: +case 0x8F62: +case 0x8163: +case 0x8363: +case 0x8563: +case 0x8763: +case 0x8963: +case 0x8B63: +case 0x8D63: +case 0x8F63: +case 0x8164: +case 0x8364: +case 0x8564: +case 0x8764: +case 0x8964: +case 0x8B64: +case 0x8D64: +case 0x8F64: +case 0x8165: +case 0x8365: +case 0x8565: +case 0x8765: +case 0x8965: +case 0x8B65: +case 0x8D65: +case 0x8F65: +case 0x8166: +case 0x8366: +case 0x8566: +case 0x8766: +case 0x8966: +case 0x8B66: +case 0x8D66: +case 0x8F66: + +// ORDa +case 0x8160: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8368: +case 0x8568: +case 0x8768: +case 0x8968: +case 0x8B68: +case 0x8D68: +case 0x8F68: +case 0x8169: +case 0x8369: +case 0x8569: +case 0x8769: +case 0x8969: +case 0x8B69: +case 0x8D69: +case 0x8F69: +case 0x816A: +case 0x836A: +case 0x856A: +case 0x876A: +case 0x896A: +case 0x8B6A: +case 0x8D6A: +case 0x8F6A: +case 0x816B: +case 0x836B: +case 0x856B: +case 0x876B: +case 0x896B: +case 0x8B6B: +case 0x8D6B: +case 0x8F6B: +case 0x816C: +case 0x836C: +case 0x856C: +case 0x876C: +case 0x896C: +case 0x8B6C: +case 0x8D6C: +case 0x8F6C: +case 0x816D: +case 0x836D: +case 0x856D: +case 0x876D: +case 0x896D: +case 0x8B6D: +case 0x8D6D: +case 0x8F6D: +case 0x816E: +case 0x836E: +case 0x856E: +case 0x876E: +case 0x896E: +case 0x8B6E: +case 0x8D6E: +case 0x8F6E: +case 0x816F: +case 0x836F: +case 0x856F: +case 0x876F: +case 0x896F: +case 0x8B6F: +case 0x8D6F: +case 0x8F6F: + +// ORDa +case 0x8168: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8370: +case 0x8570: +case 0x8770: +case 0x8970: +case 0x8B70: +case 0x8D70: +case 0x8F70: +case 0x8171: +case 0x8371: +case 0x8571: +case 0x8771: +case 0x8971: +case 0x8B71: +case 0x8D71: +case 0x8F71: +case 0x8172: +case 0x8372: +case 0x8572: +case 0x8772: +case 0x8972: +case 0x8B72: +case 0x8D72: +case 0x8F72: +case 0x8173: +case 0x8373: +case 0x8573: +case 0x8773: +case 0x8973: +case 0x8B73: +case 0x8D73: +case 0x8F73: +case 0x8174: +case 0x8374: +case 0x8574: +case 0x8774: +case 0x8974: +case 0x8B74: +case 0x8D74: +case 0x8F74: +case 0x8175: +case 0x8375: +case 0x8575: +case 0x8775: +case 0x8975: +case 0x8B75: +case 0x8D75: +case 0x8F75: +case 0x8176: +case 0x8376: +case 0x8576: +case 0x8776: +case 0x8976: +case 0x8B76: +case 0x8D76: +case 0x8F76: +case 0x8177: +case 0x8377: +case 0x8577: +case 0x8777: +case 0x8977: +case 0x8B77: +case 0x8D77: +case 0x8F77: + +// ORDa +case 0x8170: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8378: +case 0x8578: +case 0x8778: +case 0x8978: +case 0x8B78: +case 0x8D78: +case 0x8F78: + +// ORDa +case 0x8178: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8379: +case 0x8579: +case 0x8779: +case 0x8979: +case 0x8B79: +case 0x8D79: +case 0x8F79: + +// ORDa +case 0x8179: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x835F: +case 0x855F: +case 0x875F: +case 0x895F: +case 0x8B5F: +case 0x8D5F: +case 0x8F5F: + +// ORDa +case 0x815F: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8367: +case 0x8567: +case 0x8767: +case 0x8967: +case 0x8B67: +case 0x8D67: +case 0x8F67: + +// ORDa +case 0x8167: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x8390: +case 0x8590: +case 0x8790: +case 0x8990: +case 0x8B90: +case 0x8D90: +case 0x8F90: +case 0x8191: +case 0x8391: +case 0x8591: +case 0x8791: +case 0x8991: +case 0x8B91: +case 0x8D91: +case 0x8F91: +case 0x8192: +case 0x8392: +case 0x8592: +case 0x8792: +case 0x8992: +case 0x8B92: +case 0x8D92: +case 0x8F92: +case 0x8193: +case 0x8393: +case 0x8593: +case 0x8793: +case 0x8993: +case 0x8B93: +case 0x8D93: +case 0x8F93: +case 0x8194: +case 0x8394: +case 0x8594: +case 0x8794: +case 0x8994: +case 0x8B94: +case 0x8D94: +case 0x8F94: +case 0x8195: +case 0x8395: +case 0x8595: +case 0x8795: +case 0x8995: +case 0x8B95: +case 0x8D95: +case 0x8F95: +case 0x8196: +case 0x8396: +case 0x8596: +case 0x8796: +case 0x8996: +case 0x8B96: +case 0x8D96: +case 0x8F96: +case 0x8197: +case 0x8397: +case 0x8597: +case 0x8797: +case 0x8997: +case 0x8B97: +case 0x8D97: +case 0x8F97: + +// ORDa +case 0x8190: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x8398: +case 0x8598: +case 0x8798: +case 0x8998: +case 0x8B98: +case 0x8D98: +case 0x8F98: +case 0x8199: +case 0x8399: +case 0x8599: +case 0x8799: +case 0x8999: +case 0x8B99: +case 0x8D99: +case 0x8F99: +case 0x819A: +case 0x839A: +case 0x859A: +case 0x879A: +case 0x899A: +case 0x8B9A: +case 0x8D9A: +case 0x8F9A: +case 0x819B: +case 0x839B: +case 0x859B: +case 0x879B: +case 0x899B: +case 0x8B9B: +case 0x8D9B: +case 0x8F9B: +case 0x819C: +case 0x839C: +case 0x859C: +case 0x879C: +case 0x899C: +case 0x8B9C: +case 0x8D9C: +case 0x8F9C: +case 0x819D: +case 0x839D: +case 0x859D: +case 0x879D: +case 0x899D: +case 0x8B9D: +case 0x8D9D: +case 0x8F9D: +case 0x819E: +case 0x839E: +case 0x859E: +case 0x879E: +case 0x899E: +case 0x8B9E: +case 0x8D9E: +case 0x8F9E: + +// ORDa +case 0x8198: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x83A0: +case 0x85A0: +case 0x87A0: +case 0x89A0: +case 0x8BA0: +case 0x8DA0: +case 0x8FA0: +case 0x81A1: +case 0x83A1: +case 0x85A1: +case 0x87A1: +case 0x89A1: +case 0x8BA1: +case 0x8DA1: +case 0x8FA1: +case 0x81A2: +case 0x83A2: +case 0x85A2: +case 0x87A2: +case 0x89A2: +case 0x8BA2: +case 0x8DA2: +case 0x8FA2: +case 0x81A3: +case 0x83A3: +case 0x85A3: +case 0x87A3: +case 0x89A3: +case 0x8BA3: +case 0x8DA3: +case 0x8FA3: +case 0x81A4: +case 0x83A4: +case 0x85A4: +case 0x87A4: +case 0x89A4: +case 0x8BA4: +case 0x8DA4: +case 0x8FA4: +case 0x81A5: +case 0x83A5: +case 0x85A5: +case 0x87A5: +case 0x89A5: +case 0x8BA5: +case 0x8DA5: +case 0x8FA5: +case 0x81A6: +case 0x83A6: +case 0x85A6: +case 0x87A6: +case 0x89A6: +case 0x8BA6: +case 0x8DA6: +case 0x8FA6: + +// ORDa +case 0x81A0: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x83A8: +case 0x85A8: +case 0x87A8: +case 0x89A8: +case 0x8BA8: +case 0x8DA8: +case 0x8FA8: +case 0x81A9: +case 0x83A9: +case 0x85A9: +case 0x87A9: +case 0x89A9: +case 0x8BA9: +case 0x8DA9: +case 0x8FA9: +case 0x81AA: +case 0x83AA: +case 0x85AA: +case 0x87AA: +case 0x89AA: +case 0x8BAA: +case 0x8DAA: +case 0x8FAA: +case 0x81AB: +case 0x83AB: +case 0x85AB: +case 0x87AB: +case 0x89AB: +case 0x8BAB: +case 0x8DAB: +case 0x8FAB: +case 0x81AC: +case 0x83AC: +case 0x85AC: +case 0x87AC: +case 0x89AC: +case 0x8BAC: +case 0x8DAC: +case 0x8FAC: +case 0x81AD: +case 0x83AD: +case 0x85AD: +case 0x87AD: +case 0x89AD: +case 0x8BAD: +case 0x8DAD: +case 0x8FAD: +case 0x81AE: +case 0x83AE: +case 0x85AE: +case 0x87AE: +case 0x89AE: +case 0x8BAE: +case 0x8DAE: +case 0x8FAE: +case 0x81AF: +case 0x83AF: +case 0x85AF: +case 0x87AF: +case 0x89AF: +case 0x8BAF: +case 0x8DAF: +case 0x8FAF: + +// ORDa +case 0x81A8: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x83B0: +case 0x85B0: +case 0x87B0: +case 0x89B0: +case 0x8BB0: +case 0x8DB0: +case 0x8FB0: +case 0x81B1: +case 0x83B1: +case 0x85B1: +case 0x87B1: +case 0x89B1: +case 0x8BB1: +case 0x8DB1: +case 0x8FB1: +case 0x81B2: +case 0x83B2: +case 0x85B2: +case 0x87B2: +case 0x89B2: +case 0x8BB2: +case 0x8DB2: +case 0x8FB2: +case 0x81B3: +case 0x83B3: +case 0x85B3: +case 0x87B3: +case 0x89B3: +case 0x8BB3: +case 0x8DB3: +case 0x8FB3: +case 0x81B4: +case 0x83B4: +case 0x85B4: +case 0x87B4: +case 0x89B4: +case 0x8BB4: +case 0x8DB4: +case 0x8FB4: +case 0x81B5: +case 0x83B5: +case 0x85B5: +case 0x87B5: +case 0x89B5: +case 0x8BB5: +case 0x8DB5: +case 0x8FB5: +case 0x81B6: +case 0x83B6: +case 0x85B6: +case 0x87B6: +case 0x89B6: +case 0x8BB6: +case 0x8DB6: +case 0x8FB6: +case 0x81B7: +case 0x83B7: +case 0x85B7: +case 0x87B7: +case 0x89B7: +case 0x8BB7: +case 0x8DB7: +case 0x8FB7: + +// ORDa +case 0x81B0: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x83B8: +case 0x85B8: +case 0x87B8: +case 0x89B8: +case 0x8BB8: +case 0x8DB8: +case 0x8FB8: + +// ORDa +case 0x81B8: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x83B9: +case 0x85B9: +case 0x87B9: +case 0x89B9: +case 0x8BB9: +case 0x8DB9: +case 0x8FB9: + +// ORDa +case 0x81B9: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x839F: +case 0x859F: +case 0x879F: +case 0x899F: +case 0x8B9F: +case 0x8D9F: +case 0x8F9F: + +// ORDa +case 0x819F: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x83A7: +case 0x85A7: +case 0x87A7: +case 0x89A7: +case 0x8BA7: +case 0x8DA7: +case 0x8FA7: + +// ORDa +case 0x81A7: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, res) + res |= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x8300: +case 0x8500: +case 0x8700: +case 0x8900: +case 0x8B00: +case 0x8D00: +case 0x8F00: +case 0x8101: +case 0x8301: +case 0x8501: +case 0x8701: +case 0x8901: +case 0x8B01: +case 0x8D01: +case 0x8F01: +case 0x8102: +case 0x8302: +case 0x8502: +case 0x8702: +case 0x8902: +case 0x8B02: +case 0x8D02: +case 0x8F02: +case 0x8103: +case 0x8303: +case 0x8503: +case 0x8703: +case 0x8903: +case 0x8B03: +case 0x8D03: +case 0x8F03: +case 0x8104: +case 0x8304: +case 0x8504: +case 0x8704: +case 0x8904: +case 0x8B04: +case 0x8D04: +case 0x8F04: +case 0x8105: +case 0x8305: +case 0x8505: +case 0x8705: +case 0x8905: +case 0x8B05: +case 0x8D05: +case 0x8F05: +case 0x8106: +case 0x8306: +case 0x8506: +case 0x8706: +case 0x8906: +case 0x8B06: +case 0x8D06: +case 0x8F06: +case 0x8107: +case 0x8307: +case 0x8507: +case 0x8707: +case 0x8907: +case 0x8B07: +case 0x8D07: +case 0x8F07: + +// SBCD +case 0x8100: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = (dst & 0xF) - (src & 0xF) - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0x8308: +case 0x8508: +case 0x8708: +case 0x8908: +case 0x8B08: +case 0x8D08: +case 0x8109: +case 0x8309: +case 0x8509: +case 0x8709: +case 0x8909: +case 0x8B09: +case 0x8D09: +case 0x810A: +case 0x830A: +case 0x850A: +case 0x870A: +case 0x890A: +case 0x8B0A: +case 0x8D0A: +case 0x810B: +case 0x830B: +case 0x850B: +case 0x870B: +case 0x890B: +case 0x8B0B: +case 0x8D0B: +case 0x810C: +case 0x830C: +case 0x850C: +case 0x870C: +case 0x890C: +case 0x8B0C: +case 0x8D0C: +case 0x810D: +case 0x830D: +case 0x850D: +case 0x870D: +case 0x890D: +case 0x8B0D: +case 0x8D0D: +case 0x810E: +case 0x830E: +case 0x850E: +case 0x870E: +case 0x890E: +case 0x8B0E: +case 0x8D0E: + +// SBCDM +case 0x8108: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0x830F: +case 0x850F: +case 0x870F: +case 0x890F: +case 0x8B0F: +case 0x8D0F: + +// SBCD7M +case 0x810F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0x8F09: +case 0x8F0A: +case 0x8F0B: +case 0x8F0C: +case 0x8F0D: +case 0x8F0E: + +// SBCDM7 +case 0x8F08: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) + +// SBCD7M7 +case 0x8F0F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) - (src & 0xF) - ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res -= 6; + res += (dst & 0xF0) - (src & 0xF0); + if (res > 0x99) + { + res += 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0x82C0: +case 0x84C0: +case 0x86C0: +case 0x88C0: +case 0x8AC0: +case 0x8CC0: +case 0x8EC0: +case 0x80C1: +case 0x82C1: +case 0x84C1: +case 0x86C1: +case 0x88C1: +case 0x8AC1: +case 0x8CC1: +case 0x8EC1: +case 0x80C2: +case 0x82C2: +case 0x84C2: +case 0x86C2: +case 0x88C2: +case 0x8AC2: +case 0x8CC2: +case 0x8EC2: +case 0x80C3: +case 0x82C3: +case 0x84C3: +case 0x86C3: +case 0x88C3: +case 0x8AC3: +case 0x8CC3: +case 0x8EC3: +case 0x80C4: +case 0x82C4: +case 0x84C4: +case 0x86C4: +case 0x88C4: +case 0x8AC4: +case 0x8CC4: +case 0x8EC4: +case 0x80C5: +case 0x82C5: +case 0x84C5: +case 0x86C5: +case 0x88C5: +case 0x8AC5: +case 0x8CC5: +case 0x8EC5: +case 0x80C6: +case 0x82C6: +case 0x84C6: +case 0x86C6: +case 0x88C6: +case 0x8AC6: +case 0x8CC6: +case 0x8EC6: +case 0x80C7: +case 0x82C7: +case 0x84C7: +case 0x86C7: +case 0x88C7: +case 0x8AC7: +case 0x8CC7: +case 0x8EC7: + +// DIVU +case 0x80C0: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82D0: +case 0x84D0: +case 0x86D0: +case 0x88D0: +case 0x8AD0: +case 0x8CD0: +case 0x8ED0: +case 0x80D1: +case 0x82D1: +case 0x84D1: +case 0x86D1: +case 0x88D1: +case 0x8AD1: +case 0x8CD1: +case 0x8ED1: +case 0x80D2: +case 0x82D2: +case 0x84D2: +case 0x86D2: +case 0x88D2: +case 0x8AD2: +case 0x8CD2: +case 0x8ED2: +case 0x80D3: +case 0x82D3: +case 0x84D3: +case 0x86D3: +case 0x88D3: +case 0x8AD3: +case 0x8CD3: +case 0x8ED3: +case 0x80D4: +case 0x82D4: +case 0x84D4: +case 0x86D4: +case 0x88D4: +case 0x8AD4: +case 0x8CD4: +case 0x8ED4: +case 0x80D5: +case 0x82D5: +case 0x84D5: +case 0x86D5: +case 0x88D5: +case 0x8AD5: +case 0x8CD5: +case 0x8ED5: +case 0x80D6: +case 0x82D6: +case 0x84D6: +case 0x86D6: +case 0x88D6: +case 0x8AD6: +case 0x8CD6: +case 0x8ED6: +case 0x80D7: +case 0x82D7: +case 0x84D7: +case 0x86D7: +case 0x88D7: +case 0x8AD7: +case 0x8CD7: +case 0x8ED7: + +// DIVU +case 0x80D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82D8: +case 0x84D8: +case 0x86D8: +case 0x88D8: +case 0x8AD8: +case 0x8CD8: +case 0x8ED8: +case 0x80D9: +case 0x82D9: +case 0x84D9: +case 0x86D9: +case 0x88D9: +case 0x8AD9: +case 0x8CD9: +case 0x8ED9: +case 0x80DA: +case 0x82DA: +case 0x84DA: +case 0x86DA: +case 0x88DA: +case 0x8ADA: +case 0x8CDA: +case 0x8EDA: +case 0x80DB: +case 0x82DB: +case 0x84DB: +case 0x86DB: +case 0x88DB: +case 0x8ADB: +case 0x8CDB: +case 0x8EDB: +case 0x80DC: +case 0x82DC: +case 0x84DC: +case 0x86DC: +case 0x88DC: +case 0x8ADC: +case 0x8CDC: +case 0x8EDC: +case 0x80DD: +case 0x82DD: +case 0x84DD: +case 0x86DD: +case 0x88DD: +case 0x8ADD: +case 0x8CDD: +case 0x8EDD: +case 0x80DE: +case 0x82DE: +case 0x84DE: +case 0x86DE: +case 0x88DE: +case 0x8ADE: +case 0x8CDE: +case 0x8EDE: + +// DIVU +case 0x80D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82E0: +case 0x84E0: +case 0x86E0: +case 0x88E0: +case 0x8AE0: +case 0x8CE0: +case 0x8EE0: +case 0x80E1: +case 0x82E1: +case 0x84E1: +case 0x86E1: +case 0x88E1: +case 0x8AE1: +case 0x8CE1: +case 0x8EE1: +case 0x80E2: +case 0x82E2: +case 0x84E2: +case 0x86E2: +case 0x88E2: +case 0x8AE2: +case 0x8CE2: +case 0x8EE2: +case 0x80E3: +case 0x82E3: +case 0x84E3: +case 0x86E3: +case 0x88E3: +case 0x8AE3: +case 0x8CE3: +case 0x8EE3: +case 0x80E4: +case 0x82E4: +case 0x84E4: +case 0x86E4: +case 0x88E4: +case 0x8AE4: +case 0x8CE4: +case 0x8EE4: +case 0x80E5: +case 0x82E5: +case 0x84E5: +case 0x86E5: +case 0x88E5: +case 0x8AE5: +case 0x8CE5: +case 0x8EE5: +case 0x80E6: +case 0x82E6: +case 0x84E6: +case 0x86E6: +case 0x88E6: +case 0x8AE6: +case 0x8CE6: +case 0x8EE6: + +// DIVU +case 0x80E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82E8: +case 0x84E8: +case 0x86E8: +case 0x88E8: +case 0x8AE8: +case 0x8CE8: +case 0x8EE8: +case 0x80E9: +case 0x82E9: +case 0x84E9: +case 0x86E9: +case 0x88E9: +case 0x8AE9: +case 0x8CE9: +case 0x8EE9: +case 0x80EA: +case 0x82EA: +case 0x84EA: +case 0x86EA: +case 0x88EA: +case 0x8AEA: +case 0x8CEA: +case 0x8EEA: +case 0x80EB: +case 0x82EB: +case 0x84EB: +case 0x86EB: +case 0x88EB: +case 0x8AEB: +case 0x8CEB: +case 0x8EEB: +case 0x80EC: +case 0x82EC: +case 0x84EC: +case 0x86EC: +case 0x88EC: +case 0x8AEC: +case 0x8CEC: +case 0x8EEC: +case 0x80ED: +case 0x82ED: +case 0x84ED: +case 0x86ED: +case 0x88ED: +case 0x8AED: +case 0x8CED: +case 0x8EED: +case 0x80EE: +case 0x82EE: +case 0x84EE: +case 0x86EE: +case 0x88EE: +case 0x8AEE: +case 0x8CEE: +case 0x8EEE: +case 0x80EF: +case 0x82EF: +case 0x84EF: +case 0x86EF: +case 0x88EF: +case 0x8AEF: +case 0x8CEF: +case 0x8EEF: + +// DIVU +case 0x80E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82F0: +case 0x84F0: +case 0x86F0: +case 0x88F0: +case 0x8AF0: +case 0x8CF0: +case 0x8EF0: +case 0x80F1: +case 0x82F1: +case 0x84F1: +case 0x86F1: +case 0x88F1: +case 0x8AF1: +case 0x8CF1: +case 0x8EF1: +case 0x80F2: +case 0x82F2: +case 0x84F2: +case 0x86F2: +case 0x88F2: +case 0x8AF2: +case 0x8CF2: +case 0x8EF2: +case 0x80F3: +case 0x82F3: +case 0x84F3: +case 0x86F3: +case 0x88F3: +case 0x8AF3: +case 0x8CF3: +case 0x8EF3: +case 0x80F4: +case 0x82F4: +case 0x84F4: +case 0x86F4: +case 0x88F4: +case 0x8AF4: +case 0x8CF4: +case 0x8EF4: +case 0x80F5: +case 0x82F5: +case 0x84F5: +case 0x86F5: +case 0x88F5: +case 0x8AF5: +case 0x8CF5: +case 0x8EF5: +case 0x80F6: +case 0x82F6: +case 0x84F6: +case 0x86F6: +case 0x88F6: +case 0x8AF6: +case 0x8CF6: +case 0x8EF6: +case 0x80F7: +case 0x82F7: +case 0x84F7: +case 0x86F7: +case 0x88F7: +case 0x8AF7: +case 0x8CF7: +case 0x8EF7: + +// DIVU +case 0x80F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82F8: +case 0x84F8: +case 0x86F8: +case 0x88F8: +case 0x8AF8: +case 0x8CF8: +case 0x8EF8: + +// DIVU +case 0x80F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82F9: +case 0x84F9: +case 0x86F9: +case 0x88F9: +case 0x8AF9: +case 0x8CF9: +case 0x8EF9: + +// DIVU +case 0x80F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82FA: +case 0x84FA: +case 0x86FA: +case 0x88FA: +case 0x8AFA: +case 0x8CFA: +case 0x8EFA: + +// DIVU +case 0x80FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82FB: +case 0x84FB: +case 0x86FB: +case 0x88FB: +case 0x8AFB: +case 0x8CFB: +case 0x8EFB: + +// DIVU +case 0x80FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82FC: +case 0x84FC: +case 0x86FC: +case 0x88FC: +case 0x8AFC: +case 0x8CFC: +case 0x8EFC: + +// DIVU +case 0x80FC: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_WORD; + PC += 2; + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(14) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(74) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(94) +case 0x82DF: +case 0x84DF: +case 0x86DF: +case 0x88DF: +case 0x8ADF: +case 0x8CDF: +case 0x8EDF: + +// DIVU +case 0x80DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x82E7: +case 0x84E7: +case 0x86E7: +case 0x88E7: +case 0x8AE7: +case 0x8CE7: +case 0x8EE7: + +// DIVU +case 0x80E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + { + u32 q, r; + + q = dst / src; + r = dst % src; + + if (q & 0xFFFF0000) + { + CPU->flag_V = C68K_SR_V; + RET(70) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(90) +case 0x83C0: +case 0x85C0: +case 0x87C0: +case 0x89C0: +case 0x8BC0: +case 0x8DC0: +case 0x8FC0: +case 0x81C1: +case 0x83C1: +case 0x85C1: +case 0x87C1: +case 0x89C1: +case 0x8BC1: +case 0x8DC1: +case 0x8FC1: +case 0x81C2: +case 0x83C2: +case 0x85C2: +case 0x87C2: +case 0x89C2: +case 0x8BC2: +case 0x8DC2: +case 0x8FC2: +case 0x81C3: +case 0x83C3: +case 0x85C3: +case 0x87C3: +case 0x89C3: +case 0x8BC3: +case 0x8DC3: +case 0x8FC3: +case 0x81C4: +case 0x83C4: +case 0x85C4: +case 0x87C4: +case 0x89C4: +case 0x8BC4: +case 0x8DC4: +case 0x8FC4: +case 0x81C5: +case 0x83C5: +case 0x85C5: +case 0x87C5: +case 0x89C5: +case 0x8BC5: +case 0x8DC5: +case 0x8FC5: +case 0x81C6: +case 0x83C6: +case 0x85C6: +case 0x87C6: +case 0x89C6: +case 0x8BC6: +case 0x8DC6: +case 0x8FC6: +case 0x81C7: +case 0x83C7: +case 0x85C7: +case 0x87C7: +case 0x89C7: +case 0x8BC7: +case 0x8DC7: +case 0x8FC7: + +// DIVS +case 0x81C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83D0: +case 0x85D0: +case 0x87D0: +case 0x89D0: +case 0x8BD0: +case 0x8DD0: +case 0x8FD0: +case 0x81D1: +case 0x83D1: +case 0x85D1: +case 0x87D1: +case 0x89D1: +case 0x8BD1: +case 0x8DD1: +case 0x8FD1: +case 0x81D2: +case 0x83D2: +case 0x85D2: +case 0x87D2: +case 0x89D2: +case 0x8BD2: +case 0x8DD2: +case 0x8FD2: +case 0x81D3: +case 0x83D3: +case 0x85D3: +case 0x87D3: +case 0x89D3: +case 0x8BD3: +case 0x8DD3: +case 0x8FD3: +case 0x81D4: +case 0x83D4: +case 0x85D4: +case 0x87D4: +case 0x89D4: +case 0x8BD4: +case 0x8DD4: +case 0x8FD4: +case 0x81D5: +case 0x83D5: +case 0x85D5: +case 0x87D5: +case 0x89D5: +case 0x8BD5: +case 0x8DD5: +case 0x8FD5: +case 0x81D6: +case 0x83D6: +case 0x85D6: +case 0x87D6: +case 0x89D6: +case 0x8BD6: +case 0x8DD6: +case 0x8FD6: +case 0x81D7: +case 0x83D7: +case 0x85D7: +case 0x87D7: +case 0x89D7: +case 0x8BD7: +case 0x8DD7: +case 0x8FD7: + +// DIVS +case 0x81D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83D8: +case 0x85D8: +case 0x87D8: +case 0x89D8: +case 0x8BD8: +case 0x8DD8: +case 0x8FD8: +case 0x81D9: +case 0x83D9: +case 0x85D9: +case 0x87D9: +case 0x89D9: +case 0x8BD9: +case 0x8DD9: +case 0x8FD9: +case 0x81DA: +case 0x83DA: +case 0x85DA: +case 0x87DA: +case 0x89DA: +case 0x8BDA: +case 0x8DDA: +case 0x8FDA: +case 0x81DB: +case 0x83DB: +case 0x85DB: +case 0x87DB: +case 0x89DB: +case 0x8BDB: +case 0x8DDB: +case 0x8FDB: +case 0x81DC: +case 0x83DC: +case 0x85DC: +case 0x87DC: +case 0x89DC: +case 0x8BDC: +case 0x8DDC: +case 0x8FDC: +case 0x81DD: +case 0x83DD: +case 0x85DD: +case 0x87DD: +case 0x89DD: +case 0x8BDD: +case 0x8DDD: +case 0x8FDD: +case 0x81DE: +case 0x83DE: +case 0x85DE: +case 0x87DE: +case 0x89DE: +case 0x8BDE: +case 0x8DDE: +case 0x8FDE: + +// DIVS +case 0x81D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83E0: +case 0x85E0: +case 0x87E0: +case 0x89E0: +case 0x8BE0: +case 0x8DE0: +case 0x8FE0: +case 0x81E1: +case 0x83E1: +case 0x85E1: +case 0x87E1: +case 0x89E1: +case 0x8BE1: +case 0x8DE1: +case 0x8FE1: +case 0x81E2: +case 0x83E2: +case 0x85E2: +case 0x87E2: +case 0x89E2: +case 0x8BE2: +case 0x8DE2: +case 0x8FE2: +case 0x81E3: +case 0x83E3: +case 0x85E3: +case 0x87E3: +case 0x89E3: +case 0x8BE3: +case 0x8DE3: +case 0x8FE3: +case 0x81E4: +case 0x83E4: +case 0x85E4: +case 0x87E4: +case 0x89E4: +case 0x8BE4: +case 0x8DE4: +case 0x8FE4: +case 0x81E5: +case 0x83E5: +case 0x85E5: +case 0x87E5: +case 0x89E5: +case 0x8BE5: +case 0x8DE5: +case 0x8FE5: +case 0x81E6: +case 0x83E6: +case 0x85E6: +case 0x87E6: +case 0x89E6: +case 0x8BE6: +case 0x8DE6: +case 0x8FE6: + +// DIVS +case 0x81E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83E8: +case 0x85E8: +case 0x87E8: +case 0x89E8: +case 0x8BE8: +case 0x8DE8: +case 0x8FE8: +case 0x81E9: +case 0x83E9: +case 0x85E9: +case 0x87E9: +case 0x89E9: +case 0x8BE9: +case 0x8DE9: +case 0x8FE9: +case 0x81EA: +case 0x83EA: +case 0x85EA: +case 0x87EA: +case 0x89EA: +case 0x8BEA: +case 0x8DEA: +case 0x8FEA: +case 0x81EB: +case 0x83EB: +case 0x85EB: +case 0x87EB: +case 0x89EB: +case 0x8BEB: +case 0x8DEB: +case 0x8FEB: +case 0x81EC: +case 0x83EC: +case 0x85EC: +case 0x87EC: +case 0x89EC: +case 0x8BEC: +case 0x8DEC: +case 0x8FEC: +case 0x81ED: +case 0x83ED: +case 0x85ED: +case 0x87ED: +case 0x89ED: +case 0x8BED: +case 0x8DED: +case 0x8FED: +case 0x81EE: +case 0x83EE: +case 0x85EE: +case 0x87EE: +case 0x89EE: +case 0x8BEE: +case 0x8DEE: +case 0x8FEE: +case 0x81EF: +case 0x83EF: +case 0x85EF: +case 0x87EF: +case 0x89EF: +case 0x8BEF: +case 0x8DEF: +case 0x8FEF: + +// DIVS +case 0x81E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83F0: +case 0x85F0: +case 0x87F0: +case 0x89F0: +case 0x8BF0: +case 0x8DF0: +case 0x8FF0: +case 0x81F1: +case 0x83F1: +case 0x85F1: +case 0x87F1: +case 0x89F1: +case 0x8BF1: +case 0x8DF1: +case 0x8FF1: +case 0x81F2: +case 0x83F2: +case 0x85F2: +case 0x87F2: +case 0x89F2: +case 0x8BF2: +case 0x8DF2: +case 0x8FF2: +case 0x81F3: +case 0x83F3: +case 0x85F3: +case 0x87F3: +case 0x89F3: +case 0x8BF3: +case 0x8DF3: +case 0x8FF3: +case 0x81F4: +case 0x83F4: +case 0x85F4: +case 0x87F4: +case 0x89F4: +case 0x8BF4: +case 0x8DF4: +case 0x8FF4: +case 0x81F5: +case 0x83F5: +case 0x85F5: +case 0x87F5: +case 0x89F5: +case 0x8BF5: +case 0x8DF5: +case 0x8FF5: +case 0x81F6: +case 0x83F6: +case 0x85F6: +case 0x87F6: +case 0x89F6: +case 0x8BF6: +case 0x8DF6: +case 0x8FF6: +case 0x81F7: +case 0x83F7: +case 0x85F7: +case 0x87F7: +case 0x89F7: +case 0x8BF7: +case 0x8DF7: +case 0x8FF7: + +// DIVS +case 0x81F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83F8: +case 0x85F8: +case 0x87F8: +case 0x89F8: +case 0x8BF8: +case 0x8DF8: +case 0x8FF8: + +// DIVS +case 0x81F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83F9: +case 0x85F9: +case 0x87F9: +case 0x89F9: +case 0x8BF9: +case 0x8DF9: +case 0x8FF9: + +// DIVS +case 0x81F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83FA: +case 0x85FA: +case 0x87FA: +case 0x89FA: +case 0x8BFA: +case 0x8DFA: +case 0x8FFA: + +// DIVS +case 0x81FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83FB: +case 0x85FB: +case 0x87FB: +case 0x89FB: +case 0x8BFB: +case 0x8DFB: +case 0x8FFB: + +// DIVS +case 0x81FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83FC: +case 0x85FC: +case 0x87FC: +case 0x89FC: +case 0x8BFC: +case 0x8DFC: +case 0x8FFC: + +// DIVS +case 0x81FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)FETCH_WORD; + PC += 2; + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(14) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(54) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(84) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(112) +case 0x83DF: +case 0x85DF: +case 0x87DF: +case 0x89DF: +case 0x8BDF: +case 0x8DDF: +case 0x8FDF: + +// DIVS +case 0x81DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) +case 0x83E7: +case 0x85E7: +case 0x87E7: +case 0x89E7: +case 0x8BE7: +case 0x8DE7: +case 0x8FE7: + +// DIVS +case 0x81E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READSX_WOat_F(adr, src) + if (src == 0) + { + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_ZERO_DIVIDE_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) + RET(10) + } + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + if ((dst == 0x80000000) && (src == -1)) + { + CPU->flag_notZ = CPU->flag_N = 0; + CPU->flag_V = CPU->flag_C = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + RET(50) + } + { + s32 q, r; + + q = (s32)dst / (s32)src; + r = (s32)dst % (s32)src; + + if ((q > 0x7FFF) || (q < -0x8000)) + { + CPU->flag_V = C68K_SR_V; + RET(80) + } + q &= 0x0000FFFF; + CPU->flag_notZ = q; + CPU->flag_N = q >> 8; + CPU->flag_V = CPU->flag_C = 0; + res = q | (r << 16); + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + } +} +RET(108) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_op9.inc b/libmednahawk/src/hw_cpu/c68k/c68k_op9.inc new file mode 100644 index 0000000000..99eaf128df --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_op9.inc @@ -0,0 +1,5855 @@ +case 0x9200: +case 0x9400: +case 0x9600: +case 0x9800: +case 0x9A00: +case 0x9C00: +case 0x9E00: +case 0x9001: +case 0x9201: +case 0x9401: +case 0x9601: +case 0x9801: +case 0x9A01: +case 0x9C01: +case 0x9E01: +case 0x9002: +case 0x9202: +case 0x9402: +case 0x9602: +case 0x9802: +case 0x9A02: +case 0x9C02: +case 0x9E02: +case 0x9003: +case 0x9203: +case 0x9403: +case 0x9603: +case 0x9803: +case 0x9A03: +case 0x9C03: +case 0x9E03: +case 0x9004: +case 0x9204: +case 0x9404: +case 0x9604: +case 0x9804: +case 0x9A04: +case 0x9C04: +case 0x9E04: +case 0x9005: +case 0x9205: +case 0x9405: +case 0x9605: +case 0x9805: +case 0x9A05: +case 0x9C05: +case 0x9E05: +case 0x9006: +case 0x9206: +case 0x9406: +case 0x9606: +case 0x9806: +case 0x9A06: +case 0x9C06: +case 0x9E06: +case 0x9007: +case 0x9207: +case 0x9407: +case 0x9607: +case 0x9807: +case 0x9A07: +case 0x9C07: +case 0x9E07: + +// SUBaD +case 0x9000: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9208: +case 0x9408: +case 0x9608: +case 0x9808: +case 0x9A08: +case 0x9C08: +case 0x9E08: +case 0x9009: +case 0x9209: +case 0x9409: +case 0x9609: +case 0x9809: +case 0x9A09: +case 0x9C09: +case 0x9E09: +case 0x900A: +case 0x920A: +case 0x940A: +case 0x960A: +case 0x980A: +case 0x9A0A: +case 0x9C0A: +case 0x9E0A: +case 0x900B: +case 0x920B: +case 0x940B: +case 0x960B: +case 0x980B: +case 0x9A0B: +case 0x9C0B: +case 0x9E0B: +case 0x900C: +case 0x920C: +case 0x940C: +case 0x960C: +case 0x980C: +case 0x9A0C: +case 0x9C0C: +case 0x9E0C: +case 0x900D: +case 0x920D: +case 0x940D: +case 0x960D: +case 0x980D: +case 0x9A0D: +case 0x9C0D: +case 0x9E0D: +case 0x900E: +case 0x920E: +case 0x940E: +case 0x960E: +case 0x980E: +case 0x9A0E: +case 0x9C0E: +case 0x9E0E: +case 0x900F: +case 0x920F: +case 0x940F: +case 0x960F: +case 0x980F: +case 0x9A0F: +case 0x9C0F: +case 0x9E0F: + +// SUBaD +case 0x9008: +{ + u32 res; + u32 dst; + u32 src; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9210: +case 0x9410: +case 0x9610: +case 0x9810: +case 0x9A10: +case 0x9C10: +case 0x9E10: +case 0x9011: +case 0x9211: +case 0x9411: +case 0x9611: +case 0x9811: +case 0x9A11: +case 0x9C11: +case 0x9E11: +case 0x9012: +case 0x9212: +case 0x9412: +case 0x9612: +case 0x9812: +case 0x9A12: +case 0x9C12: +case 0x9E12: +case 0x9013: +case 0x9213: +case 0x9413: +case 0x9613: +case 0x9813: +case 0x9A13: +case 0x9C13: +case 0x9E13: +case 0x9014: +case 0x9214: +case 0x9414: +case 0x9614: +case 0x9814: +case 0x9A14: +case 0x9C14: +case 0x9E14: +case 0x9015: +case 0x9215: +case 0x9415: +case 0x9615: +case 0x9815: +case 0x9A15: +case 0x9C15: +case 0x9E15: +case 0x9016: +case 0x9216: +case 0x9416: +case 0x9616: +case 0x9816: +case 0x9A16: +case 0x9C16: +case 0x9E16: +case 0x9017: +case 0x9217: +case 0x9417: +case 0x9617: +case 0x9817: +case 0x9A17: +case 0x9C17: +case 0x9E17: + +// SUBaD +case 0x9010: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9218: +case 0x9418: +case 0x9618: +case 0x9818: +case 0x9A18: +case 0x9C18: +case 0x9E18: +case 0x9019: +case 0x9219: +case 0x9419: +case 0x9619: +case 0x9819: +case 0x9A19: +case 0x9C19: +case 0x9E19: +case 0x901A: +case 0x921A: +case 0x941A: +case 0x961A: +case 0x981A: +case 0x9A1A: +case 0x9C1A: +case 0x9E1A: +case 0x901B: +case 0x921B: +case 0x941B: +case 0x961B: +case 0x981B: +case 0x9A1B: +case 0x9C1B: +case 0x9E1B: +case 0x901C: +case 0x921C: +case 0x941C: +case 0x961C: +case 0x981C: +case 0x9A1C: +case 0x9C1C: +case 0x9E1C: +case 0x901D: +case 0x921D: +case 0x941D: +case 0x961D: +case 0x981D: +case 0x9A1D: +case 0x9C1D: +case 0x9E1D: +case 0x901E: +case 0x921E: +case 0x941E: +case 0x961E: +case 0x981E: +case 0x9A1E: +case 0x9C1E: +case 0x9E1E: + +// SUBaD +case 0x9018: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9220: +case 0x9420: +case 0x9620: +case 0x9820: +case 0x9A20: +case 0x9C20: +case 0x9E20: +case 0x9021: +case 0x9221: +case 0x9421: +case 0x9621: +case 0x9821: +case 0x9A21: +case 0x9C21: +case 0x9E21: +case 0x9022: +case 0x9222: +case 0x9422: +case 0x9622: +case 0x9822: +case 0x9A22: +case 0x9C22: +case 0x9E22: +case 0x9023: +case 0x9223: +case 0x9423: +case 0x9623: +case 0x9823: +case 0x9A23: +case 0x9C23: +case 0x9E23: +case 0x9024: +case 0x9224: +case 0x9424: +case 0x9624: +case 0x9824: +case 0x9A24: +case 0x9C24: +case 0x9E24: +case 0x9025: +case 0x9225: +case 0x9425: +case 0x9625: +case 0x9825: +case 0x9A25: +case 0x9C25: +case 0x9E25: +case 0x9026: +case 0x9226: +case 0x9426: +case 0x9626: +case 0x9826: +case 0x9A26: +case 0x9C26: +case 0x9E26: + +// SUBaD +case 0x9020: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9228: +case 0x9428: +case 0x9628: +case 0x9828: +case 0x9A28: +case 0x9C28: +case 0x9E28: +case 0x9029: +case 0x9229: +case 0x9429: +case 0x9629: +case 0x9829: +case 0x9A29: +case 0x9C29: +case 0x9E29: +case 0x902A: +case 0x922A: +case 0x942A: +case 0x962A: +case 0x982A: +case 0x9A2A: +case 0x9C2A: +case 0x9E2A: +case 0x902B: +case 0x922B: +case 0x942B: +case 0x962B: +case 0x982B: +case 0x9A2B: +case 0x9C2B: +case 0x9E2B: +case 0x902C: +case 0x922C: +case 0x942C: +case 0x962C: +case 0x982C: +case 0x9A2C: +case 0x9C2C: +case 0x9E2C: +case 0x902D: +case 0x922D: +case 0x942D: +case 0x962D: +case 0x982D: +case 0x9A2D: +case 0x9C2D: +case 0x9E2D: +case 0x902E: +case 0x922E: +case 0x942E: +case 0x962E: +case 0x982E: +case 0x9A2E: +case 0x9C2E: +case 0x9E2E: +case 0x902F: +case 0x922F: +case 0x942F: +case 0x962F: +case 0x982F: +case 0x9A2F: +case 0x9C2F: +case 0x9E2F: + +// SUBaD +case 0x9028: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9230: +case 0x9430: +case 0x9630: +case 0x9830: +case 0x9A30: +case 0x9C30: +case 0x9E30: +case 0x9031: +case 0x9231: +case 0x9431: +case 0x9631: +case 0x9831: +case 0x9A31: +case 0x9C31: +case 0x9E31: +case 0x9032: +case 0x9232: +case 0x9432: +case 0x9632: +case 0x9832: +case 0x9A32: +case 0x9C32: +case 0x9E32: +case 0x9033: +case 0x9233: +case 0x9433: +case 0x9633: +case 0x9833: +case 0x9A33: +case 0x9C33: +case 0x9E33: +case 0x9034: +case 0x9234: +case 0x9434: +case 0x9634: +case 0x9834: +case 0x9A34: +case 0x9C34: +case 0x9E34: +case 0x9035: +case 0x9235: +case 0x9435: +case 0x9635: +case 0x9835: +case 0x9A35: +case 0x9C35: +case 0x9E35: +case 0x9036: +case 0x9236: +case 0x9436: +case 0x9636: +case 0x9836: +case 0x9A36: +case 0x9C36: +case 0x9E36: +case 0x9037: +case 0x9237: +case 0x9437: +case 0x9637: +case 0x9837: +case 0x9A37: +case 0x9C37: +case 0x9E37: + +// SUBaD +case 0x9030: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9238: +case 0x9438: +case 0x9638: +case 0x9838: +case 0x9A38: +case 0x9C38: +case 0x9E38: + +// SUBaD +case 0x9038: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9239: +case 0x9439: +case 0x9639: +case 0x9839: +case 0x9A39: +case 0x9C39: +case 0x9E39: + +// SUBaD +case 0x9039: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x923A: +case 0x943A: +case 0x963A: +case 0x983A: +case 0x9A3A: +case 0x9C3A: +case 0x9E3A: + +// SUBaD +case 0x903A: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x923B: +case 0x943B: +case 0x963B: +case 0x983B: +case 0x9A3B: +case 0x9C3B: +case 0x9E3B: + +// SUBaD +case 0x903B: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x923C: +case 0x943C: +case 0x963C: +case 0x983C: +case 0x9A3C: +case 0x9C3C: +case 0x9E3C: + +// SUBaD +case 0x903C: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_BYTE; + PC += 2; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0x921F: +case 0x941F: +case 0x961F: +case 0x981F: +case 0x9A1F: +case 0x9C1F: +case 0x9E1F: + +// SUBaD +case 0x901F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9227: +case 0x9427: +case 0x9627: +case 0x9827: +case 0x9A27: +case 0x9C27: +case 0x9E27: + +// SUBaD +case 0x9027: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9240: +case 0x9440: +case 0x9640: +case 0x9840: +case 0x9A40: +case 0x9C40: +case 0x9E40: +case 0x9041: +case 0x9241: +case 0x9441: +case 0x9641: +case 0x9841: +case 0x9A41: +case 0x9C41: +case 0x9E41: +case 0x9042: +case 0x9242: +case 0x9442: +case 0x9642: +case 0x9842: +case 0x9A42: +case 0x9C42: +case 0x9E42: +case 0x9043: +case 0x9243: +case 0x9443: +case 0x9643: +case 0x9843: +case 0x9A43: +case 0x9C43: +case 0x9E43: +case 0x9044: +case 0x9244: +case 0x9444: +case 0x9644: +case 0x9844: +case 0x9A44: +case 0x9C44: +case 0x9E44: +case 0x9045: +case 0x9245: +case 0x9445: +case 0x9645: +case 0x9845: +case 0x9A45: +case 0x9C45: +case 0x9E45: +case 0x9046: +case 0x9246: +case 0x9446: +case 0x9646: +case 0x9846: +case 0x9A46: +case 0x9C46: +case 0x9E46: +case 0x9047: +case 0x9247: +case 0x9447: +case 0x9647: +case 0x9847: +case 0x9A47: +case 0x9C47: +case 0x9E47: + +// SUBaD +case 0x9040: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9248: +case 0x9448: +case 0x9648: +case 0x9848: +case 0x9A48: +case 0x9C48: +case 0x9E48: +case 0x9049: +case 0x9249: +case 0x9449: +case 0x9649: +case 0x9849: +case 0x9A49: +case 0x9C49: +case 0x9E49: +case 0x904A: +case 0x924A: +case 0x944A: +case 0x964A: +case 0x984A: +case 0x9A4A: +case 0x9C4A: +case 0x9E4A: +case 0x904B: +case 0x924B: +case 0x944B: +case 0x964B: +case 0x984B: +case 0x9A4B: +case 0x9C4B: +case 0x9E4B: +case 0x904C: +case 0x924C: +case 0x944C: +case 0x964C: +case 0x984C: +case 0x9A4C: +case 0x9C4C: +case 0x9E4C: +case 0x904D: +case 0x924D: +case 0x944D: +case 0x964D: +case 0x984D: +case 0x9A4D: +case 0x9C4D: +case 0x9E4D: +case 0x904E: +case 0x924E: +case 0x944E: +case 0x964E: +case 0x984E: +case 0x9A4E: +case 0x9C4E: +case 0x9E4E: +case 0x904F: +case 0x924F: +case 0x944F: +case 0x964F: +case 0x984F: +case 0x9A4F: +case 0x9C4F: +case 0x9E4F: + +// SUBaD +case 0x9048: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->A[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9250: +case 0x9450: +case 0x9650: +case 0x9850: +case 0x9A50: +case 0x9C50: +case 0x9E50: +case 0x9051: +case 0x9251: +case 0x9451: +case 0x9651: +case 0x9851: +case 0x9A51: +case 0x9C51: +case 0x9E51: +case 0x9052: +case 0x9252: +case 0x9452: +case 0x9652: +case 0x9852: +case 0x9A52: +case 0x9C52: +case 0x9E52: +case 0x9053: +case 0x9253: +case 0x9453: +case 0x9653: +case 0x9853: +case 0x9A53: +case 0x9C53: +case 0x9E53: +case 0x9054: +case 0x9254: +case 0x9454: +case 0x9654: +case 0x9854: +case 0x9A54: +case 0x9C54: +case 0x9E54: +case 0x9055: +case 0x9255: +case 0x9455: +case 0x9655: +case 0x9855: +case 0x9A55: +case 0x9C55: +case 0x9E55: +case 0x9056: +case 0x9256: +case 0x9456: +case 0x9656: +case 0x9856: +case 0x9A56: +case 0x9C56: +case 0x9E56: +case 0x9057: +case 0x9257: +case 0x9457: +case 0x9657: +case 0x9857: +case 0x9A57: +case 0x9C57: +case 0x9E57: + +// SUBaD +case 0x9050: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9258: +case 0x9458: +case 0x9658: +case 0x9858: +case 0x9A58: +case 0x9C58: +case 0x9E58: +case 0x9059: +case 0x9259: +case 0x9459: +case 0x9659: +case 0x9859: +case 0x9A59: +case 0x9C59: +case 0x9E59: +case 0x905A: +case 0x925A: +case 0x945A: +case 0x965A: +case 0x985A: +case 0x9A5A: +case 0x9C5A: +case 0x9E5A: +case 0x905B: +case 0x925B: +case 0x945B: +case 0x965B: +case 0x985B: +case 0x9A5B: +case 0x9C5B: +case 0x9E5B: +case 0x905C: +case 0x925C: +case 0x945C: +case 0x965C: +case 0x985C: +case 0x9A5C: +case 0x9C5C: +case 0x9E5C: +case 0x905D: +case 0x925D: +case 0x945D: +case 0x965D: +case 0x985D: +case 0x9A5D: +case 0x9C5D: +case 0x9E5D: +case 0x905E: +case 0x925E: +case 0x945E: +case 0x965E: +case 0x985E: +case 0x9A5E: +case 0x9C5E: +case 0x9E5E: + +// SUBaD +case 0x9058: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9260: +case 0x9460: +case 0x9660: +case 0x9860: +case 0x9A60: +case 0x9C60: +case 0x9E60: +case 0x9061: +case 0x9261: +case 0x9461: +case 0x9661: +case 0x9861: +case 0x9A61: +case 0x9C61: +case 0x9E61: +case 0x9062: +case 0x9262: +case 0x9462: +case 0x9662: +case 0x9862: +case 0x9A62: +case 0x9C62: +case 0x9E62: +case 0x9063: +case 0x9263: +case 0x9463: +case 0x9663: +case 0x9863: +case 0x9A63: +case 0x9C63: +case 0x9E63: +case 0x9064: +case 0x9264: +case 0x9464: +case 0x9664: +case 0x9864: +case 0x9A64: +case 0x9C64: +case 0x9E64: +case 0x9065: +case 0x9265: +case 0x9465: +case 0x9665: +case 0x9865: +case 0x9A65: +case 0x9C65: +case 0x9E65: +case 0x9066: +case 0x9266: +case 0x9466: +case 0x9666: +case 0x9866: +case 0x9A66: +case 0x9C66: +case 0x9E66: + +// SUBaD +case 0x9060: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9268: +case 0x9468: +case 0x9668: +case 0x9868: +case 0x9A68: +case 0x9C68: +case 0x9E68: +case 0x9069: +case 0x9269: +case 0x9469: +case 0x9669: +case 0x9869: +case 0x9A69: +case 0x9C69: +case 0x9E69: +case 0x906A: +case 0x926A: +case 0x946A: +case 0x966A: +case 0x986A: +case 0x9A6A: +case 0x9C6A: +case 0x9E6A: +case 0x906B: +case 0x926B: +case 0x946B: +case 0x966B: +case 0x986B: +case 0x9A6B: +case 0x9C6B: +case 0x9E6B: +case 0x906C: +case 0x926C: +case 0x946C: +case 0x966C: +case 0x986C: +case 0x9A6C: +case 0x9C6C: +case 0x9E6C: +case 0x906D: +case 0x926D: +case 0x946D: +case 0x966D: +case 0x986D: +case 0x9A6D: +case 0x9C6D: +case 0x9E6D: +case 0x906E: +case 0x926E: +case 0x946E: +case 0x966E: +case 0x986E: +case 0x9A6E: +case 0x9C6E: +case 0x9E6E: +case 0x906F: +case 0x926F: +case 0x946F: +case 0x966F: +case 0x986F: +case 0x9A6F: +case 0x9C6F: +case 0x9E6F: + +// SUBaD +case 0x9068: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9270: +case 0x9470: +case 0x9670: +case 0x9870: +case 0x9A70: +case 0x9C70: +case 0x9E70: +case 0x9071: +case 0x9271: +case 0x9471: +case 0x9671: +case 0x9871: +case 0x9A71: +case 0x9C71: +case 0x9E71: +case 0x9072: +case 0x9272: +case 0x9472: +case 0x9672: +case 0x9872: +case 0x9A72: +case 0x9C72: +case 0x9E72: +case 0x9073: +case 0x9273: +case 0x9473: +case 0x9673: +case 0x9873: +case 0x9A73: +case 0x9C73: +case 0x9E73: +case 0x9074: +case 0x9274: +case 0x9474: +case 0x9674: +case 0x9874: +case 0x9A74: +case 0x9C74: +case 0x9E74: +case 0x9075: +case 0x9275: +case 0x9475: +case 0x9675: +case 0x9875: +case 0x9A75: +case 0x9C75: +case 0x9E75: +case 0x9076: +case 0x9276: +case 0x9476: +case 0x9676: +case 0x9876: +case 0x9A76: +case 0x9C76: +case 0x9E76: +case 0x9077: +case 0x9277: +case 0x9477: +case 0x9677: +case 0x9877: +case 0x9A77: +case 0x9C77: +case 0x9E77: + +// SUBaD +case 0x9070: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9278: +case 0x9478: +case 0x9678: +case 0x9878: +case 0x9A78: +case 0x9C78: +case 0x9E78: + +// SUBaD +case 0x9078: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9279: +case 0x9479: +case 0x9679: +case 0x9879: +case 0x9A79: +case 0x9C79: +case 0x9E79: + +// SUBaD +case 0x9079: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x927A: +case 0x947A: +case 0x967A: +case 0x987A: +case 0x9A7A: +case 0x9C7A: +case 0x9E7A: + +// SUBaD +case 0x907A: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x927B: +case 0x947B: +case 0x967B: +case 0x987B: +case 0x9A7B: +case 0x9C7B: +case 0x9E7B: + +// SUBaD +case 0x907B: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x927C: +case 0x947C: +case 0x967C: +case 0x987C: +case 0x9A7C: +case 0x9C7C: +case 0x9E7C: + +// SUBaD +case 0x907C: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_WORD; + PC += 2; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0x925F: +case 0x945F: +case 0x965F: +case 0x985F: +case 0x9A5F: +case 0x9C5F: +case 0x9E5F: + +// SUBaD +case 0x905F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9267: +case 0x9467: +case 0x9667: +case 0x9867: +case 0x9A67: +case 0x9C67: +case 0x9E67: + +// SUBaD +case 0x9067: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9280: +case 0x9480: +case 0x9680: +case 0x9880: +case 0x9A80: +case 0x9C80: +case 0x9E80: +case 0x9081: +case 0x9281: +case 0x9481: +case 0x9681: +case 0x9881: +case 0x9A81: +case 0x9C81: +case 0x9E81: +case 0x9082: +case 0x9282: +case 0x9482: +case 0x9682: +case 0x9882: +case 0x9A82: +case 0x9C82: +case 0x9E82: +case 0x9083: +case 0x9283: +case 0x9483: +case 0x9683: +case 0x9883: +case 0x9A83: +case 0x9C83: +case 0x9E83: +case 0x9084: +case 0x9284: +case 0x9484: +case 0x9684: +case 0x9884: +case 0x9A84: +case 0x9C84: +case 0x9E84: +case 0x9085: +case 0x9285: +case 0x9485: +case 0x9685: +case 0x9885: +case 0x9A85: +case 0x9C85: +case 0x9E85: +case 0x9086: +case 0x9286: +case 0x9486: +case 0x9686: +case 0x9886: +case 0x9A86: +case 0x9C86: +case 0x9E86: +case 0x9087: +case 0x9287: +case 0x9487: +case 0x9687: +case 0x9887: +case 0x9A87: +case 0x9C87: +case 0x9E87: + +// SUBaD +case 0x9080: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0x9288: +case 0x9488: +case 0x9688: +case 0x9888: +case 0x9A88: +case 0x9C88: +case 0x9E88: +case 0x9089: +case 0x9289: +case 0x9489: +case 0x9689: +case 0x9889: +case 0x9A89: +case 0x9C89: +case 0x9E89: +case 0x908A: +case 0x928A: +case 0x948A: +case 0x968A: +case 0x988A: +case 0x9A8A: +case 0x9C8A: +case 0x9E8A: +case 0x908B: +case 0x928B: +case 0x948B: +case 0x968B: +case 0x988B: +case 0x9A8B: +case 0x9C8B: +case 0x9E8B: +case 0x908C: +case 0x928C: +case 0x948C: +case 0x968C: +case 0x988C: +case 0x9A8C: +case 0x9C8C: +case 0x9E8C: +case 0x908D: +case 0x928D: +case 0x948D: +case 0x968D: +case 0x988D: +case 0x9A8D: +case 0x9C8D: +case 0x9E8D: +case 0x908E: +case 0x928E: +case 0x948E: +case 0x968E: +case 0x988E: +case 0x9A8E: +case 0x9C8E: +case 0x9E8E: +case 0x908F: +case 0x928F: +case 0x948F: +case 0x968F: +case 0x988F: +case 0x9A8F: +case 0x9C8F: +case 0x9E8F: + +// SUBaD +case 0x9088: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0x9290: +case 0x9490: +case 0x9690: +case 0x9890: +case 0x9A90: +case 0x9C90: +case 0x9E90: +case 0x9091: +case 0x9291: +case 0x9491: +case 0x9691: +case 0x9891: +case 0x9A91: +case 0x9C91: +case 0x9E91: +case 0x9092: +case 0x9292: +case 0x9492: +case 0x9692: +case 0x9892: +case 0x9A92: +case 0x9C92: +case 0x9E92: +case 0x9093: +case 0x9293: +case 0x9493: +case 0x9693: +case 0x9893: +case 0x9A93: +case 0x9C93: +case 0x9E93: +case 0x9094: +case 0x9294: +case 0x9494: +case 0x9694: +case 0x9894: +case 0x9A94: +case 0x9C94: +case 0x9E94: +case 0x9095: +case 0x9295: +case 0x9495: +case 0x9695: +case 0x9895: +case 0x9A95: +case 0x9C95: +case 0x9E95: +case 0x9096: +case 0x9296: +case 0x9496: +case 0x9696: +case 0x9896: +case 0x9A96: +case 0x9C96: +case 0x9E96: +case 0x9097: +case 0x9297: +case 0x9497: +case 0x9697: +case 0x9897: +case 0x9A97: +case 0x9C97: +case 0x9E97: + +// SUBaD +case 0x9090: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9298: +case 0x9498: +case 0x9698: +case 0x9898: +case 0x9A98: +case 0x9C98: +case 0x9E98: +case 0x9099: +case 0x9299: +case 0x9499: +case 0x9699: +case 0x9899: +case 0x9A99: +case 0x9C99: +case 0x9E99: +case 0x909A: +case 0x929A: +case 0x949A: +case 0x969A: +case 0x989A: +case 0x9A9A: +case 0x9C9A: +case 0x9E9A: +case 0x909B: +case 0x929B: +case 0x949B: +case 0x969B: +case 0x989B: +case 0x9A9B: +case 0x9C9B: +case 0x9E9B: +case 0x909C: +case 0x929C: +case 0x949C: +case 0x969C: +case 0x989C: +case 0x9A9C: +case 0x9C9C: +case 0x9E9C: +case 0x909D: +case 0x929D: +case 0x949D: +case 0x969D: +case 0x989D: +case 0x9A9D: +case 0x9C9D: +case 0x9E9D: +case 0x909E: +case 0x929E: +case 0x949E: +case 0x969E: +case 0x989E: +case 0x9A9E: +case 0x9C9E: +case 0x9E9E: + +// SUBaD +case 0x9098: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92A0: +case 0x94A0: +case 0x96A0: +case 0x98A0: +case 0x9AA0: +case 0x9CA0: +case 0x9EA0: +case 0x90A1: +case 0x92A1: +case 0x94A1: +case 0x96A1: +case 0x98A1: +case 0x9AA1: +case 0x9CA1: +case 0x9EA1: +case 0x90A2: +case 0x92A2: +case 0x94A2: +case 0x96A2: +case 0x98A2: +case 0x9AA2: +case 0x9CA2: +case 0x9EA2: +case 0x90A3: +case 0x92A3: +case 0x94A3: +case 0x96A3: +case 0x98A3: +case 0x9AA3: +case 0x9CA3: +case 0x9EA3: +case 0x90A4: +case 0x92A4: +case 0x94A4: +case 0x96A4: +case 0x98A4: +case 0x9AA4: +case 0x9CA4: +case 0x9EA4: +case 0x90A5: +case 0x92A5: +case 0x94A5: +case 0x96A5: +case 0x98A5: +case 0x9AA5: +case 0x9CA5: +case 0x9EA5: +case 0x90A6: +case 0x92A6: +case 0x94A6: +case 0x96A6: +case 0x98A6: +case 0x9AA6: +case 0x9CA6: +case 0x9EA6: + +// SUBaD +case 0x90A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92A8: +case 0x94A8: +case 0x96A8: +case 0x98A8: +case 0x9AA8: +case 0x9CA8: +case 0x9EA8: +case 0x90A9: +case 0x92A9: +case 0x94A9: +case 0x96A9: +case 0x98A9: +case 0x9AA9: +case 0x9CA9: +case 0x9EA9: +case 0x90AA: +case 0x92AA: +case 0x94AA: +case 0x96AA: +case 0x98AA: +case 0x9AAA: +case 0x9CAA: +case 0x9EAA: +case 0x90AB: +case 0x92AB: +case 0x94AB: +case 0x96AB: +case 0x98AB: +case 0x9AAB: +case 0x9CAB: +case 0x9EAB: +case 0x90AC: +case 0x92AC: +case 0x94AC: +case 0x96AC: +case 0x98AC: +case 0x9AAC: +case 0x9CAC: +case 0x9EAC: +case 0x90AD: +case 0x92AD: +case 0x94AD: +case 0x96AD: +case 0x98AD: +case 0x9AAD: +case 0x9CAD: +case 0x9EAD: +case 0x90AE: +case 0x92AE: +case 0x94AE: +case 0x96AE: +case 0x98AE: +case 0x9AAE: +case 0x9CAE: +case 0x9EAE: +case 0x90AF: +case 0x92AF: +case 0x94AF: +case 0x96AF: +case 0x98AF: +case 0x9AAF: +case 0x9CAF: +case 0x9EAF: + +// SUBaD +case 0x90A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92B0: +case 0x94B0: +case 0x96B0: +case 0x98B0: +case 0x9AB0: +case 0x9CB0: +case 0x9EB0: +case 0x90B1: +case 0x92B1: +case 0x94B1: +case 0x96B1: +case 0x98B1: +case 0x9AB1: +case 0x9CB1: +case 0x9EB1: +case 0x90B2: +case 0x92B2: +case 0x94B2: +case 0x96B2: +case 0x98B2: +case 0x9AB2: +case 0x9CB2: +case 0x9EB2: +case 0x90B3: +case 0x92B3: +case 0x94B3: +case 0x96B3: +case 0x98B3: +case 0x9AB3: +case 0x9CB3: +case 0x9EB3: +case 0x90B4: +case 0x92B4: +case 0x94B4: +case 0x96B4: +case 0x98B4: +case 0x9AB4: +case 0x9CB4: +case 0x9EB4: +case 0x90B5: +case 0x92B5: +case 0x94B5: +case 0x96B5: +case 0x98B5: +case 0x9AB5: +case 0x9CB5: +case 0x9EB5: +case 0x90B6: +case 0x92B6: +case 0x94B6: +case 0x96B6: +case 0x98B6: +case 0x9AB6: +case 0x9CB6: +case 0x9EB6: +case 0x90B7: +case 0x92B7: +case 0x94B7: +case 0x96B7: +case 0x98B7: +case 0x9AB7: +case 0x9CB7: +case 0x9EB7: + +// SUBaD +case 0x90B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92B8: +case 0x94B8: +case 0x96B8: +case 0x98B8: +case 0x9AB8: +case 0x9CB8: +case 0x9EB8: + +// SUBaD +case 0x90B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92B9: +case 0x94B9: +case 0x96B9: +case 0x98B9: +case 0x9AB9: +case 0x9CB9: +case 0x9EB9: + +// SUBaD +case 0x90B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92BA: +case 0x94BA: +case 0x96BA: +case 0x98BA: +case 0x9ABA: +case 0x9CBA: +case 0x9EBA: + +// SUBaD +case 0x90BA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92BB: +case 0x94BB: +case 0x96BB: +case 0x98BB: +case 0x9ABB: +case 0x9CBB: +case 0x9EBB: + +// SUBaD +case 0x90BB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92BC: +case 0x94BC: +case 0x96BC: +case 0x98BC: +case 0x9ABC: +case 0x9CBC: +case 0x9EBC: + +// SUBaD +case 0x90BC: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_LONG; + PC += 4; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(14) +case 0x929F: +case 0x949F: +case 0x969F: +case 0x989F: +case 0x9A9F: +case 0x9C9F: +case 0x9E9F: + +// SUBaD +case 0x909F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x92A7: +case 0x94A7: +case 0x96A7: +case 0x98A7: +case 0x9AA7: +case 0x9CA7: +case 0x9EA7: + +// SUBaD +case 0x90A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9310: +case 0x9510: +case 0x9710: +case 0x9910: +case 0x9B10: +case 0x9D10: +case 0x9F10: +case 0x9111: +case 0x9311: +case 0x9511: +case 0x9711: +case 0x9911: +case 0x9B11: +case 0x9D11: +case 0x9F11: +case 0x9112: +case 0x9312: +case 0x9512: +case 0x9712: +case 0x9912: +case 0x9B12: +case 0x9D12: +case 0x9F12: +case 0x9113: +case 0x9313: +case 0x9513: +case 0x9713: +case 0x9913: +case 0x9B13: +case 0x9D13: +case 0x9F13: +case 0x9114: +case 0x9314: +case 0x9514: +case 0x9714: +case 0x9914: +case 0x9B14: +case 0x9D14: +case 0x9F14: +case 0x9115: +case 0x9315: +case 0x9515: +case 0x9715: +case 0x9915: +case 0x9B15: +case 0x9D15: +case 0x9F15: +case 0x9116: +case 0x9316: +case 0x9516: +case 0x9716: +case 0x9916: +case 0x9B16: +case 0x9D16: +case 0x9F16: +case 0x9117: +case 0x9317: +case 0x9517: +case 0x9717: +case 0x9917: +case 0x9B17: +case 0x9D17: +case 0x9F17: + +// SUBDa +case 0x9110: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9318: +case 0x9518: +case 0x9718: +case 0x9918: +case 0x9B18: +case 0x9D18: +case 0x9F18: +case 0x9119: +case 0x9319: +case 0x9519: +case 0x9719: +case 0x9919: +case 0x9B19: +case 0x9D19: +case 0x9F19: +case 0x911A: +case 0x931A: +case 0x951A: +case 0x971A: +case 0x991A: +case 0x9B1A: +case 0x9D1A: +case 0x9F1A: +case 0x911B: +case 0x931B: +case 0x951B: +case 0x971B: +case 0x991B: +case 0x9B1B: +case 0x9D1B: +case 0x9F1B: +case 0x911C: +case 0x931C: +case 0x951C: +case 0x971C: +case 0x991C: +case 0x9B1C: +case 0x9D1C: +case 0x9F1C: +case 0x911D: +case 0x931D: +case 0x951D: +case 0x971D: +case 0x991D: +case 0x9B1D: +case 0x9D1D: +case 0x9F1D: +case 0x911E: +case 0x931E: +case 0x951E: +case 0x971E: +case 0x991E: +case 0x9B1E: +case 0x9D1E: +case 0x9F1E: + +// SUBDa +case 0x9118: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9320: +case 0x9520: +case 0x9720: +case 0x9920: +case 0x9B20: +case 0x9D20: +case 0x9F20: +case 0x9121: +case 0x9321: +case 0x9521: +case 0x9721: +case 0x9921: +case 0x9B21: +case 0x9D21: +case 0x9F21: +case 0x9122: +case 0x9322: +case 0x9522: +case 0x9722: +case 0x9922: +case 0x9B22: +case 0x9D22: +case 0x9F22: +case 0x9123: +case 0x9323: +case 0x9523: +case 0x9723: +case 0x9923: +case 0x9B23: +case 0x9D23: +case 0x9F23: +case 0x9124: +case 0x9324: +case 0x9524: +case 0x9724: +case 0x9924: +case 0x9B24: +case 0x9D24: +case 0x9F24: +case 0x9125: +case 0x9325: +case 0x9525: +case 0x9725: +case 0x9925: +case 0x9B25: +case 0x9D25: +case 0x9F25: +case 0x9126: +case 0x9326: +case 0x9526: +case 0x9726: +case 0x9926: +case 0x9B26: +case 0x9D26: +case 0x9F26: + +// SUBDa +case 0x9120: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9328: +case 0x9528: +case 0x9728: +case 0x9928: +case 0x9B28: +case 0x9D28: +case 0x9F28: +case 0x9129: +case 0x9329: +case 0x9529: +case 0x9729: +case 0x9929: +case 0x9B29: +case 0x9D29: +case 0x9F29: +case 0x912A: +case 0x932A: +case 0x952A: +case 0x972A: +case 0x992A: +case 0x9B2A: +case 0x9D2A: +case 0x9F2A: +case 0x912B: +case 0x932B: +case 0x952B: +case 0x972B: +case 0x992B: +case 0x9B2B: +case 0x9D2B: +case 0x9F2B: +case 0x912C: +case 0x932C: +case 0x952C: +case 0x972C: +case 0x992C: +case 0x9B2C: +case 0x9D2C: +case 0x9F2C: +case 0x912D: +case 0x932D: +case 0x952D: +case 0x972D: +case 0x992D: +case 0x9B2D: +case 0x9D2D: +case 0x9F2D: +case 0x912E: +case 0x932E: +case 0x952E: +case 0x972E: +case 0x992E: +case 0x9B2E: +case 0x9D2E: +case 0x9F2E: +case 0x912F: +case 0x932F: +case 0x952F: +case 0x972F: +case 0x992F: +case 0x9B2F: +case 0x9D2F: +case 0x9F2F: + +// SUBDa +case 0x9128: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9330: +case 0x9530: +case 0x9730: +case 0x9930: +case 0x9B30: +case 0x9D30: +case 0x9F30: +case 0x9131: +case 0x9331: +case 0x9531: +case 0x9731: +case 0x9931: +case 0x9B31: +case 0x9D31: +case 0x9F31: +case 0x9132: +case 0x9332: +case 0x9532: +case 0x9732: +case 0x9932: +case 0x9B32: +case 0x9D32: +case 0x9F32: +case 0x9133: +case 0x9333: +case 0x9533: +case 0x9733: +case 0x9933: +case 0x9B33: +case 0x9D33: +case 0x9F33: +case 0x9134: +case 0x9334: +case 0x9534: +case 0x9734: +case 0x9934: +case 0x9B34: +case 0x9D34: +case 0x9F34: +case 0x9135: +case 0x9335: +case 0x9535: +case 0x9735: +case 0x9935: +case 0x9B35: +case 0x9D35: +case 0x9F35: +case 0x9136: +case 0x9336: +case 0x9536: +case 0x9736: +case 0x9936: +case 0x9B36: +case 0x9D36: +case 0x9F36: +case 0x9137: +case 0x9337: +case 0x9537: +case 0x9737: +case 0x9937: +case 0x9B37: +case 0x9D37: +case 0x9F37: + +// SUBDa +case 0x9130: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9338: +case 0x9538: +case 0x9738: +case 0x9938: +case 0x9B38: +case 0x9D38: +case 0x9F38: + +// SUBDa +case 0x9138: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9339: +case 0x9539: +case 0x9739: +case 0x9939: +case 0x9B39: +case 0x9D39: +case 0x9F39: + +// SUBDa +case 0x9139: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x931F: +case 0x951F: +case 0x971F: +case 0x991F: +case 0x9B1F: +case 0x9D1F: +case 0x9F1F: + +// SUBDa +case 0x911F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9327: +case 0x9527: +case 0x9727: +case 0x9927: +case 0x9B27: +case 0x9D27: +case 0x9F27: + +// SUBDa +case 0x9127: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0x9350: +case 0x9550: +case 0x9750: +case 0x9950: +case 0x9B50: +case 0x9D50: +case 0x9F50: +case 0x9151: +case 0x9351: +case 0x9551: +case 0x9751: +case 0x9951: +case 0x9B51: +case 0x9D51: +case 0x9F51: +case 0x9152: +case 0x9352: +case 0x9552: +case 0x9752: +case 0x9952: +case 0x9B52: +case 0x9D52: +case 0x9F52: +case 0x9153: +case 0x9353: +case 0x9553: +case 0x9753: +case 0x9953: +case 0x9B53: +case 0x9D53: +case 0x9F53: +case 0x9154: +case 0x9354: +case 0x9554: +case 0x9754: +case 0x9954: +case 0x9B54: +case 0x9D54: +case 0x9F54: +case 0x9155: +case 0x9355: +case 0x9555: +case 0x9755: +case 0x9955: +case 0x9B55: +case 0x9D55: +case 0x9F55: +case 0x9156: +case 0x9356: +case 0x9556: +case 0x9756: +case 0x9956: +case 0x9B56: +case 0x9D56: +case 0x9F56: +case 0x9157: +case 0x9357: +case 0x9557: +case 0x9757: +case 0x9957: +case 0x9B57: +case 0x9D57: +case 0x9F57: + +// SUBDa +case 0x9150: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9358: +case 0x9558: +case 0x9758: +case 0x9958: +case 0x9B58: +case 0x9D58: +case 0x9F58: +case 0x9159: +case 0x9359: +case 0x9559: +case 0x9759: +case 0x9959: +case 0x9B59: +case 0x9D59: +case 0x9F59: +case 0x915A: +case 0x935A: +case 0x955A: +case 0x975A: +case 0x995A: +case 0x9B5A: +case 0x9D5A: +case 0x9F5A: +case 0x915B: +case 0x935B: +case 0x955B: +case 0x975B: +case 0x995B: +case 0x9B5B: +case 0x9D5B: +case 0x9F5B: +case 0x915C: +case 0x935C: +case 0x955C: +case 0x975C: +case 0x995C: +case 0x9B5C: +case 0x9D5C: +case 0x9F5C: +case 0x915D: +case 0x935D: +case 0x955D: +case 0x975D: +case 0x995D: +case 0x9B5D: +case 0x9D5D: +case 0x9F5D: +case 0x915E: +case 0x935E: +case 0x955E: +case 0x975E: +case 0x995E: +case 0x9B5E: +case 0x9D5E: +case 0x9F5E: + +// SUBDa +case 0x9158: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9360: +case 0x9560: +case 0x9760: +case 0x9960: +case 0x9B60: +case 0x9D60: +case 0x9F60: +case 0x9161: +case 0x9361: +case 0x9561: +case 0x9761: +case 0x9961: +case 0x9B61: +case 0x9D61: +case 0x9F61: +case 0x9162: +case 0x9362: +case 0x9562: +case 0x9762: +case 0x9962: +case 0x9B62: +case 0x9D62: +case 0x9F62: +case 0x9163: +case 0x9363: +case 0x9563: +case 0x9763: +case 0x9963: +case 0x9B63: +case 0x9D63: +case 0x9F63: +case 0x9164: +case 0x9364: +case 0x9564: +case 0x9764: +case 0x9964: +case 0x9B64: +case 0x9D64: +case 0x9F64: +case 0x9165: +case 0x9365: +case 0x9565: +case 0x9765: +case 0x9965: +case 0x9B65: +case 0x9D65: +case 0x9F65: +case 0x9166: +case 0x9366: +case 0x9566: +case 0x9766: +case 0x9966: +case 0x9B66: +case 0x9D66: +case 0x9F66: + +// SUBDa +case 0x9160: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9368: +case 0x9568: +case 0x9768: +case 0x9968: +case 0x9B68: +case 0x9D68: +case 0x9F68: +case 0x9169: +case 0x9369: +case 0x9569: +case 0x9769: +case 0x9969: +case 0x9B69: +case 0x9D69: +case 0x9F69: +case 0x916A: +case 0x936A: +case 0x956A: +case 0x976A: +case 0x996A: +case 0x9B6A: +case 0x9D6A: +case 0x9F6A: +case 0x916B: +case 0x936B: +case 0x956B: +case 0x976B: +case 0x996B: +case 0x9B6B: +case 0x9D6B: +case 0x9F6B: +case 0x916C: +case 0x936C: +case 0x956C: +case 0x976C: +case 0x996C: +case 0x9B6C: +case 0x9D6C: +case 0x9F6C: +case 0x916D: +case 0x936D: +case 0x956D: +case 0x976D: +case 0x996D: +case 0x9B6D: +case 0x9D6D: +case 0x9F6D: +case 0x916E: +case 0x936E: +case 0x956E: +case 0x976E: +case 0x996E: +case 0x9B6E: +case 0x9D6E: +case 0x9F6E: +case 0x916F: +case 0x936F: +case 0x956F: +case 0x976F: +case 0x996F: +case 0x9B6F: +case 0x9D6F: +case 0x9F6F: + +// SUBDa +case 0x9168: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9370: +case 0x9570: +case 0x9770: +case 0x9970: +case 0x9B70: +case 0x9D70: +case 0x9F70: +case 0x9171: +case 0x9371: +case 0x9571: +case 0x9771: +case 0x9971: +case 0x9B71: +case 0x9D71: +case 0x9F71: +case 0x9172: +case 0x9372: +case 0x9572: +case 0x9772: +case 0x9972: +case 0x9B72: +case 0x9D72: +case 0x9F72: +case 0x9173: +case 0x9373: +case 0x9573: +case 0x9773: +case 0x9973: +case 0x9B73: +case 0x9D73: +case 0x9F73: +case 0x9174: +case 0x9374: +case 0x9574: +case 0x9774: +case 0x9974: +case 0x9B74: +case 0x9D74: +case 0x9F74: +case 0x9175: +case 0x9375: +case 0x9575: +case 0x9775: +case 0x9975: +case 0x9B75: +case 0x9D75: +case 0x9F75: +case 0x9176: +case 0x9376: +case 0x9576: +case 0x9776: +case 0x9976: +case 0x9B76: +case 0x9D76: +case 0x9F76: +case 0x9177: +case 0x9377: +case 0x9577: +case 0x9777: +case 0x9977: +case 0x9B77: +case 0x9D77: +case 0x9F77: + +// SUBDa +case 0x9170: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9378: +case 0x9578: +case 0x9778: +case 0x9978: +case 0x9B78: +case 0x9D78: +case 0x9F78: + +// SUBDa +case 0x9178: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9379: +case 0x9579: +case 0x9779: +case 0x9979: +case 0x9B79: +case 0x9D79: +case 0x9F79: + +// SUBDa +case 0x9179: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x935F: +case 0x955F: +case 0x975F: +case 0x995F: +case 0x9B5F: +case 0x9D5F: +case 0x9F5F: + +// SUBDa +case 0x915F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9367: +case 0x9567: +case 0x9767: +case 0x9967: +case 0x9B67: +case 0x9D67: +case 0x9F67: + +// SUBDa +case 0x9167: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0x9390: +case 0x9590: +case 0x9790: +case 0x9990: +case 0x9B90: +case 0x9D90: +case 0x9F90: +case 0x9191: +case 0x9391: +case 0x9591: +case 0x9791: +case 0x9991: +case 0x9B91: +case 0x9D91: +case 0x9F91: +case 0x9192: +case 0x9392: +case 0x9592: +case 0x9792: +case 0x9992: +case 0x9B92: +case 0x9D92: +case 0x9F92: +case 0x9193: +case 0x9393: +case 0x9593: +case 0x9793: +case 0x9993: +case 0x9B93: +case 0x9D93: +case 0x9F93: +case 0x9194: +case 0x9394: +case 0x9594: +case 0x9794: +case 0x9994: +case 0x9B94: +case 0x9D94: +case 0x9F94: +case 0x9195: +case 0x9395: +case 0x9595: +case 0x9795: +case 0x9995: +case 0x9B95: +case 0x9D95: +case 0x9F95: +case 0x9196: +case 0x9396: +case 0x9596: +case 0x9796: +case 0x9996: +case 0x9B96: +case 0x9D96: +case 0x9F96: +case 0x9197: +case 0x9397: +case 0x9597: +case 0x9797: +case 0x9997: +case 0x9B97: +case 0x9D97: +case 0x9F97: + +// SUBDa +case 0x9190: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x9398: +case 0x9598: +case 0x9798: +case 0x9998: +case 0x9B98: +case 0x9D98: +case 0x9F98: +case 0x9199: +case 0x9399: +case 0x9599: +case 0x9799: +case 0x9999: +case 0x9B99: +case 0x9D99: +case 0x9F99: +case 0x919A: +case 0x939A: +case 0x959A: +case 0x979A: +case 0x999A: +case 0x9B9A: +case 0x9D9A: +case 0x9F9A: +case 0x919B: +case 0x939B: +case 0x959B: +case 0x979B: +case 0x999B: +case 0x9B9B: +case 0x9D9B: +case 0x9F9B: +case 0x919C: +case 0x939C: +case 0x959C: +case 0x979C: +case 0x999C: +case 0x9B9C: +case 0x9D9C: +case 0x9F9C: +case 0x919D: +case 0x939D: +case 0x959D: +case 0x979D: +case 0x999D: +case 0x9B9D: +case 0x9D9D: +case 0x9F9D: +case 0x919E: +case 0x939E: +case 0x959E: +case 0x979E: +case 0x999E: +case 0x9B9E: +case 0x9D9E: +case 0x9F9E: + +// SUBDa +case 0x9198: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x93A0: +case 0x95A0: +case 0x97A0: +case 0x99A0: +case 0x9BA0: +case 0x9DA0: +case 0x9FA0: +case 0x91A1: +case 0x93A1: +case 0x95A1: +case 0x97A1: +case 0x99A1: +case 0x9BA1: +case 0x9DA1: +case 0x9FA1: +case 0x91A2: +case 0x93A2: +case 0x95A2: +case 0x97A2: +case 0x99A2: +case 0x9BA2: +case 0x9DA2: +case 0x9FA2: +case 0x91A3: +case 0x93A3: +case 0x95A3: +case 0x97A3: +case 0x99A3: +case 0x9BA3: +case 0x9DA3: +case 0x9FA3: +case 0x91A4: +case 0x93A4: +case 0x95A4: +case 0x97A4: +case 0x99A4: +case 0x9BA4: +case 0x9DA4: +case 0x9FA4: +case 0x91A5: +case 0x93A5: +case 0x95A5: +case 0x97A5: +case 0x99A5: +case 0x9BA5: +case 0x9DA5: +case 0x9FA5: +case 0x91A6: +case 0x93A6: +case 0x95A6: +case 0x97A6: +case 0x99A6: +case 0x9BA6: +case 0x9DA6: +case 0x9FA6: + +// SUBDa +case 0x91A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x93A8: +case 0x95A8: +case 0x97A8: +case 0x99A8: +case 0x9BA8: +case 0x9DA8: +case 0x9FA8: +case 0x91A9: +case 0x93A9: +case 0x95A9: +case 0x97A9: +case 0x99A9: +case 0x9BA9: +case 0x9DA9: +case 0x9FA9: +case 0x91AA: +case 0x93AA: +case 0x95AA: +case 0x97AA: +case 0x99AA: +case 0x9BAA: +case 0x9DAA: +case 0x9FAA: +case 0x91AB: +case 0x93AB: +case 0x95AB: +case 0x97AB: +case 0x99AB: +case 0x9BAB: +case 0x9DAB: +case 0x9FAB: +case 0x91AC: +case 0x93AC: +case 0x95AC: +case 0x97AC: +case 0x99AC: +case 0x9BAC: +case 0x9DAC: +case 0x9FAC: +case 0x91AD: +case 0x93AD: +case 0x95AD: +case 0x97AD: +case 0x99AD: +case 0x9BAD: +case 0x9DAD: +case 0x9FAD: +case 0x91AE: +case 0x93AE: +case 0x95AE: +case 0x97AE: +case 0x99AE: +case 0x9BAE: +case 0x9DAE: +case 0x9FAE: +case 0x91AF: +case 0x93AF: +case 0x95AF: +case 0x97AF: +case 0x99AF: +case 0x9BAF: +case 0x9DAF: +case 0x9FAF: + +// SUBDa +case 0x91A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x93B0: +case 0x95B0: +case 0x97B0: +case 0x99B0: +case 0x9BB0: +case 0x9DB0: +case 0x9FB0: +case 0x91B1: +case 0x93B1: +case 0x95B1: +case 0x97B1: +case 0x99B1: +case 0x9BB1: +case 0x9DB1: +case 0x9FB1: +case 0x91B2: +case 0x93B2: +case 0x95B2: +case 0x97B2: +case 0x99B2: +case 0x9BB2: +case 0x9DB2: +case 0x9FB2: +case 0x91B3: +case 0x93B3: +case 0x95B3: +case 0x97B3: +case 0x99B3: +case 0x9BB3: +case 0x9DB3: +case 0x9FB3: +case 0x91B4: +case 0x93B4: +case 0x95B4: +case 0x97B4: +case 0x99B4: +case 0x9BB4: +case 0x9DB4: +case 0x9FB4: +case 0x91B5: +case 0x93B5: +case 0x95B5: +case 0x97B5: +case 0x99B5: +case 0x9BB5: +case 0x9DB5: +case 0x9FB5: +case 0x91B6: +case 0x93B6: +case 0x95B6: +case 0x97B6: +case 0x99B6: +case 0x9BB6: +case 0x9DB6: +case 0x9FB6: +case 0x91B7: +case 0x93B7: +case 0x95B7: +case 0x97B7: +case 0x99B7: +case 0x9BB7: +case 0x9DB7: +case 0x9FB7: + +// SUBDa +case 0x91B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x93B8: +case 0x95B8: +case 0x97B8: +case 0x99B8: +case 0x9BB8: +case 0x9DB8: +case 0x9FB8: + +// SUBDa +case 0x91B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x93B9: +case 0x95B9: +case 0x97B9: +case 0x99B9: +case 0x9BB9: +case 0x9DB9: +case 0x9FB9: + +// SUBDa +case 0x91B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x939F: +case 0x959F: +case 0x979F: +case 0x999F: +case 0x9B9F: +case 0x9D9F: +case 0x9F9F: + +// SUBDa +case 0x919F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x93A7: +case 0x95A7: +case 0x97A7: +case 0x99A7: +case 0x9BA7: +case 0x9DA7: +case 0x9FA7: + +// SUBDa +case 0x91A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0x9300: +case 0x9500: +case 0x9700: +case 0x9900: +case 0x9B00: +case 0x9D00: +case 0x9F00: +case 0x9101: +case 0x9301: +case 0x9501: +case 0x9701: +case 0x9901: +case 0x9B01: +case 0x9D01: +case 0x9F01: +case 0x9102: +case 0x9302: +case 0x9502: +case 0x9702: +case 0x9902: +case 0x9B02: +case 0x9D02: +case 0x9F02: +case 0x9103: +case 0x9303: +case 0x9503: +case 0x9703: +case 0x9903: +case 0x9B03: +case 0x9D03: +case 0x9F03: +case 0x9104: +case 0x9304: +case 0x9504: +case 0x9704: +case 0x9904: +case 0x9B04: +case 0x9D04: +case 0x9F04: +case 0x9105: +case 0x9305: +case 0x9505: +case 0x9705: +case 0x9905: +case 0x9B05: +case 0x9D05: +case 0x9F05: +case 0x9106: +case 0x9306: +case 0x9506: +case 0x9706: +case 0x9906: +case 0x9B06: +case 0x9D06: +case 0x9F06: +case 0x9107: +case 0x9307: +case 0x9507: +case 0x9707: +case 0x9907: +case 0x9B07: +case 0x9D07: +case 0x9F07: + +// SUBX +case 0x9100: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ |= res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9340: +case 0x9540: +case 0x9740: +case 0x9940: +case 0x9B40: +case 0x9D40: +case 0x9F40: +case 0x9141: +case 0x9341: +case 0x9541: +case 0x9741: +case 0x9941: +case 0x9B41: +case 0x9D41: +case 0x9F41: +case 0x9142: +case 0x9342: +case 0x9542: +case 0x9742: +case 0x9942: +case 0x9B42: +case 0x9D42: +case 0x9F42: +case 0x9143: +case 0x9343: +case 0x9543: +case 0x9743: +case 0x9943: +case 0x9B43: +case 0x9D43: +case 0x9F43: +case 0x9144: +case 0x9344: +case 0x9544: +case 0x9744: +case 0x9944: +case 0x9B44: +case 0x9D44: +case 0x9F44: +case 0x9145: +case 0x9345: +case 0x9545: +case 0x9745: +case 0x9945: +case 0x9B45: +case 0x9D45: +case 0x9F45: +case 0x9146: +case 0x9346: +case 0x9546: +case 0x9746: +case 0x9946: +case 0x9B46: +case 0x9D46: +case 0x9F46: +case 0x9147: +case 0x9347: +case 0x9547: +case 0x9747: +case 0x9947: +case 0x9B47: +case 0x9D47: +case 0x9F47: + +// SUBX +case 0x9140: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0x9380: +case 0x9580: +case 0x9780: +case 0x9980: +case 0x9B80: +case 0x9D80: +case 0x9F80: +case 0x9181: +case 0x9381: +case 0x9581: +case 0x9781: +case 0x9981: +case 0x9B81: +case 0x9D81: +case 0x9F81: +case 0x9182: +case 0x9382: +case 0x9582: +case 0x9782: +case 0x9982: +case 0x9B82: +case 0x9D82: +case 0x9F82: +case 0x9183: +case 0x9383: +case 0x9583: +case 0x9783: +case 0x9983: +case 0x9B83: +case 0x9D83: +case 0x9F83: +case 0x9184: +case 0x9384: +case 0x9584: +case 0x9784: +case 0x9984: +case 0x9B84: +case 0x9D84: +case 0x9F84: +case 0x9185: +case 0x9385: +case 0x9585: +case 0x9785: +case 0x9985: +case 0x9B85: +case 0x9D85: +case 0x9F85: +case 0x9186: +case 0x9386: +case 0x9586: +case 0x9786: +case 0x9986: +case 0x9B86: +case 0x9D86: +case 0x9F86: +case 0x9187: +case 0x9387: +case 0x9587: +case 0x9787: +case 0x9987: +case 0x9B87: +case 0x9D87: +case 0x9F87: + +// SUBX +case 0x9180: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0x9308: +case 0x9508: +case 0x9708: +case 0x9908: +case 0x9B08: +case 0x9D08: +case 0x9109: +case 0x9309: +case 0x9509: +case 0x9709: +case 0x9909: +case 0x9B09: +case 0x9D09: +case 0x910A: +case 0x930A: +case 0x950A: +case 0x970A: +case 0x990A: +case 0x9B0A: +case 0x9D0A: +case 0x910B: +case 0x930B: +case 0x950B: +case 0x970B: +case 0x990B: +case 0x9B0B: +case 0x9D0B: +case 0x910C: +case 0x930C: +case 0x950C: +case 0x970C: +case 0x990C: +case 0x9B0C: +case 0x9D0C: +case 0x910D: +case 0x930D: +case 0x950D: +case 0x970D: +case 0x990D: +case 0x9B0D: +case 0x9D0D: +case 0x910E: +case 0x930E: +case 0x950E: +case 0x970E: +case 0x990E: +case 0x9B0E: +case 0x9D0E: + +// SUBXM +case 0x9108: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0x9348: +case 0x9548: +case 0x9748: +case 0x9948: +case 0x9B48: +case 0x9D48: +case 0x9149: +case 0x9349: +case 0x9549: +case 0x9749: +case 0x9949: +case 0x9B49: +case 0x9D49: +case 0x914A: +case 0x934A: +case 0x954A: +case 0x974A: +case 0x994A: +case 0x9B4A: +case 0x9D4A: +case 0x914B: +case 0x934B: +case 0x954B: +case 0x974B: +case 0x994B: +case 0x9B4B: +case 0x9D4B: +case 0x914C: +case 0x934C: +case 0x954C: +case 0x974C: +case 0x994C: +case 0x9B4C: +case 0x9D4C: +case 0x914D: +case 0x934D: +case 0x954D: +case 0x974D: +case 0x994D: +case 0x9B4D: +case 0x9D4D: +case 0x914E: +case 0x934E: +case 0x954E: +case 0x974E: +case 0x994E: +case 0x9B4E: +case 0x9D4E: + +// SUBXM +case 0x9148: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) +case 0x9388: +case 0x9588: +case 0x9788: +case 0x9988: +case 0x9B88: +case 0x9D88: +case 0x9189: +case 0x9389: +case 0x9589: +case 0x9789: +case 0x9989: +case 0x9B89: +case 0x9D89: +case 0x918A: +case 0x938A: +case 0x958A: +case 0x978A: +case 0x998A: +case 0x9B8A: +case 0x9D8A: +case 0x918B: +case 0x938B: +case 0x958B: +case 0x978B: +case 0x998B: +case 0x9B8B: +case 0x9D8B: +case 0x918C: +case 0x938C: +case 0x958C: +case 0x978C: +case 0x998C: +case 0x9B8C: +case 0x9D8C: +case 0x918D: +case 0x938D: +case 0x958D: +case 0x978D: +case 0x998D: +case 0x9B8D: +case 0x9D8D: +case 0x918E: +case 0x938E: +case 0x958E: +case 0x978E: +case 0x998E: +case 0x9B8E: +case 0x9D8E: + +// SUBXM +case 0x9188: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) +case 0x930F: +case 0x950F: +case 0x970F: +case 0x990F: +case 0x9B0F: +case 0x9D0F: + +// SUBX7M +case 0x910F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0x934F: +case 0x954F: +case 0x974F: +case 0x994F: +case 0x9B4F: +case 0x9D4F: + +// SUBX7M +case 0x914F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) +case 0x938F: +case 0x958F: +case 0x978F: +case 0x998F: +case 0x9B8F: +case 0x9D8F: + +// SUBX7M +case 0x918F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) +case 0x9F09: +case 0x9F0A: +case 0x9F0B: +case 0x9F0C: +case 0x9F0D: +case 0x9F0E: + +// SUBXM7 +case 0x9F08: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0x9F49: +case 0x9F4A: +case 0x9F4B: +case 0x9F4C: +case 0x9F4D: +case 0x9F4E: + +// SUBXM7 +case 0x9F48: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) +case 0x9F89: +case 0x9F8A: +case 0x9F8B: +case 0x9F8C: +case 0x9F8D: +case 0x9F8E: + +// SUBXM7 +case 0x9F88: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) + +// SUBX7M7 +case 0x9F0F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) + +// SUBX7M7 +case 0x9F4F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) + +// SUBX7M7 +case 0x9F8F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst - src - ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) +case 0x92C0: +case 0x94C0: +case 0x96C0: +case 0x98C0: +case 0x9AC0: +case 0x9CC0: +case 0x9EC0: +case 0x90C1: +case 0x92C1: +case 0x94C1: +case 0x96C1: +case 0x98C1: +case 0x9AC1: +case 0x9CC1: +case 0x9EC1: +case 0x90C2: +case 0x92C2: +case 0x94C2: +case 0x96C2: +case 0x98C2: +case 0x9AC2: +case 0x9CC2: +case 0x9EC2: +case 0x90C3: +case 0x92C3: +case 0x94C3: +case 0x96C3: +case 0x98C3: +case 0x9AC3: +case 0x9CC3: +case 0x9EC3: +case 0x90C4: +case 0x92C4: +case 0x94C4: +case 0x96C4: +case 0x98C4: +case 0x9AC4: +case 0x9CC4: +case 0x9EC4: +case 0x90C5: +case 0x92C5: +case 0x94C5: +case 0x96C5: +case 0x98C5: +case 0x9AC5: +case 0x9CC5: +case 0x9EC5: +case 0x90C6: +case 0x92C6: +case 0x94C6: +case 0x96C6: +case 0x98C6: +case 0x9AC6: +case 0x9CC6: +case 0x9EC6: +case 0x90C7: +case 0x92C7: +case 0x94C7: +case 0x96C7: +case 0x98C7: +case 0x9AC7: +case 0x9CC7: +case 0x9EC7: + +// SUBA +case 0x90C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0x92C8: +case 0x94C8: +case 0x96C8: +case 0x98C8: +case 0x9AC8: +case 0x9CC8: +case 0x9EC8: +case 0x90C9: +case 0x92C9: +case 0x94C9: +case 0x96C9: +case 0x98C9: +case 0x9AC9: +case 0x9CC9: +case 0x9EC9: +case 0x90CA: +case 0x92CA: +case 0x94CA: +case 0x96CA: +case 0x98CA: +case 0x9ACA: +case 0x9CCA: +case 0x9ECA: +case 0x90CB: +case 0x92CB: +case 0x94CB: +case 0x96CB: +case 0x98CB: +case 0x9ACB: +case 0x9CCB: +case 0x9ECB: +case 0x90CC: +case 0x92CC: +case 0x94CC: +case 0x96CC: +case 0x98CC: +case 0x9ACC: +case 0x9CCC: +case 0x9ECC: +case 0x90CD: +case 0x92CD: +case 0x94CD: +case 0x96CD: +case 0x98CD: +case 0x9ACD: +case 0x9CCD: +case 0x9ECD: +case 0x90CE: +case 0x92CE: +case 0x94CE: +case 0x96CE: +case 0x98CE: +case 0x9ACE: +case 0x9CCE: +case 0x9ECE: +case 0x90CF: +case 0x92CF: +case 0x94CF: +case 0x96CF: +case 0x98CF: +case 0x9ACF: +case 0x9CCF: +case 0x9ECF: + +// SUBA +case 0x90C8: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0x92D0: +case 0x94D0: +case 0x96D0: +case 0x98D0: +case 0x9AD0: +case 0x9CD0: +case 0x9ED0: +case 0x90D1: +case 0x92D1: +case 0x94D1: +case 0x96D1: +case 0x98D1: +case 0x9AD1: +case 0x9CD1: +case 0x9ED1: +case 0x90D2: +case 0x92D2: +case 0x94D2: +case 0x96D2: +case 0x98D2: +case 0x9AD2: +case 0x9CD2: +case 0x9ED2: +case 0x90D3: +case 0x92D3: +case 0x94D3: +case 0x96D3: +case 0x98D3: +case 0x9AD3: +case 0x9CD3: +case 0x9ED3: +case 0x90D4: +case 0x92D4: +case 0x94D4: +case 0x96D4: +case 0x98D4: +case 0x9AD4: +case 0x9CD4: +case 0x9ED4: +case 0x90D5: +case 0x92D5: +case 0x94D5: +case 0x96D5: +case 0x98D5: +case 0x9AD5: +case 0x9CD5: +case 0x9ED5: +case 0x90D6: +case 0x92D6: +case 0x94D6: +case 0x96D6: +case 0x98D6: +case 0x9AD6: +case 0x9CD6: +case 0x9ED6: +case 0x90D7: +case 0x92D7: +case 0x94D7: +case 0x96D7: +case 0x98D7: +case 0x9AD7: +case 0x9CD7: +case 0x9ED7: + +// SUBA +case 0x90D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92D8: +case 0x94D8: +case 0x96D8: +case 0x98D8: +case 0x9AD8: +case 0x9CD8: +case 0x9ED8: +case 0x90D9: +case 0x92D9: +case 0x94D9: +case 0x96D9: +case 0x98D9: +case 0x9AD9: +case 0x9CD9: +case 0x9ED9: +case 0x90DA: +case 0x92DA: +case 0x94DA: +case 0x96DA: +case 0x98DA: +case 0x9ADA: +case 0x9CDA: +case 0x9EDA: +case 0x90DB: +case 0x92DB: +case 0x94DB: +case 0x96DB: +case 0x98DB: +case 0x9ADB: +case 0x9CDB: +case 0x9EDB: +case 0x90DC: +case 0x92DC: +case 0x94DC: +case 0x96DC: +case 0x98DC: +case 0x9ADC: +case 0x9CDC: +case 0x9EDC: +case 0x90DD: +case 0x92DD: +case 0x94DD: +case 0x96DD: +case 0x98DD: +case 0x9ADD: +case 0x9CDD: +case 0x9EDD: +case 0x90DE: +case 0x92DE: +case 0x94DE: +case 0x96DE: +case 0x98DE: +case 0x9ADE: +case 0x9CDE: +case 0x9EDE: + +// SUBA +case 0x90D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92E0: +case 0x94E0: +case 0x96E0: +case 0x98E0: +case 0x9AE0: +case 0x9CE0: +case 0x9EE0: +case 0x90E1: +case 0x92E1: +case 0x94E1: +case 0x96E1: +case 0x98E1: +case 0x9AE1: +case 0x9CE1: +case 0x9EE1: +case 0x90E2: +case 0x92E2: +case 0x94E2: +case 0x96E2: +case 0x98E2: +case 0x9AE2: +case 0x9CE2: +case 0x9EE2: +case 0x90E3: +case 0x92E3: +case 0x94E3: +case 0x96E3: +case 0x98E3: +case 0x9AE3: +case 0x9CE3: +case 0x9EE3: +case 0x90E4: +case 0x92E4: +case 0x94E4: +case 0x96E4: +case 0x98E4: +case 0x9AE4: +case 0x9CE4: +case 0x9EE4: +case 0x90E5: +case 0x92E5: +case 0x94E5: +case 0x96E5: +case 0x98E5: +case 0x9AE5: +case 0x9CE5: +case 0x9EE5: +case 0x90E6: +case 0x92E6: +case 0x94E6: +case 0x96E6: +case 0x98E6: +case 0x9AE6: +case 0x9CE6: +case 0x9EE6: + +// SUBA +case 0x90E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92E8: +case 0x94E8: +case 0x96E8: +case 0x98E8: +case 0x9AE8: +case 0x9CE8: +case 0x9EE8: +case 0x90E9: +case 0x92E9: +case 0x94E9: +case 0x96E9: +case 0x98E9: +case 0x9AE9: +case 0x9CE9: +case 0x9EE9: +case 0x90EA: +case 0x92EA: +case 0x94EA: +case 0x96EA: +case 0x98EA: +case 0x9AEA: +case 0x9CEA: +case 0x9EEA: +case 0x90EB: +case 0x92EB: +case 0x94EB: +case 0x96EB: +case 0x98EB: +case 0x9AEB: +case 0x9CEB: +case 0x9EEB: +case 0x90EC: +case 0x92EC: +case 0x94EC: +case 0x96EC: +case 0x98EC: +case 0x9AEC: +case 0x9CEC: +case 0x9EEC: +case 0x90ED: +case 0x92ED: +case 0x94ED: +case 0x96ED: +case 0x98ED: +case 0x9AED: +case 0x9CED: +case 0x9EED: +case 0x90EE: +case 0x92EE: +case 0x94EE: +case 0x96EE: +case 0x98EE: +case 0x9AEE: +case 0x9CEE: +case 0x9EEE: +case 0x90EF: +case 0x92EF: +case 0x94EF: +case 0x96EF: +case 0x98EF: +case 0x9AEF: +case 0x9CEF: +case 0x9EEF: + +// SUBA +case 0x90E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92F0: +case 0x94F0: +case 0x96F0: +case 0x98F0: +case 0x9AF0: +case 0x9CF0: +case 0x9EF0: +case 0x90F1: +case 0x92F1: +case 0x94F1: +case 0x96F1: +case 0x98F1: +case 0x9AF1: +case 0x9CF1: +case 0x9EF1: +case 0x90F2: +case 0x92F2: +case 0x94F2: +case 0x96F2: +case 0x98F2: +case 0x9AF2: +case 0x9CF2: +case 0x9EF2: +case 0x90F3: +case 0x92F3: +case 0x94F3: +case 0x96F3: +case 0x98F3: +case 0x9AF3: +case 0x9CF3: +case 0x9EF3: +case 0x90F4: +case 0x92F4: +case 0x94F4: +case 0x96F4: +case 0x98F4: +case 0x9AF4: +case 0x9CF4: +case 0x9EF4: +case 0x90F5: +case 0x92F5: +case 0x94F5: +case 0x96F5: +case 0x98F5: +case 0x9AF5: +case 0x9CF5: +case 0x9EF5: +case 0x90F6: +case 0x92F6: +case 0x94F6: +case 0x96F6: +case 0x98F6: +case 0x9AF6: +case 0x9CF6: +case 0x9EF6: +case 0x90F7: +case 0x92F7: +case 0x94F7: +case 0x96F7: +case 0x98F7: +case 0x9AF7: +case 0x9CF7: +case 0x9EF7: + +// SUBA +case 0x90F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 8; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92F8: +case 0x94F8: +case 0x96F8: +case 0x98F8: +case 0x9AF8: +case 0x9CF8: +case 0x9EF8: + +// SUBA +case 0x90F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92F9: +case 0x94F9: +case 0x96F9: +case 0x98F9: +case 0x9AF9: +case 0x9CF9: +case 0x9EF9: + +// SUBA +case 0x90F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 10; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92FA: +case 0x94FA: +case 0x96FA: +case 0x98FA: +case 0x9AFA: +case 0x9CFA: +case 0x9EFA: + +// SUBA +case 0x90FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92FB: +case 0x94FB: +case 0x96FB: +case 0x98FB: +case 0x9AFB: +case 0x9CFB: +case 0x9EFB: + +// SUBA +case 0x90FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 8; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92FC: +case 0x94FC: +case 0x96FC: +case 0x98FC: +case 0x9AFC: +case 0x9CFC: +case 0x9EFC: + +// SUBA +case 0x90FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)FETCH_WORD; + PC += 2; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(12) +case 0x92DF: +case 0x94DF: +case 0x96DF: +case 0x98DF: +case 0x9ADF: +case 0x9CDF: +case 0x9EDF: + +// SUBA +case 0x90DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x92E7: +case 0x94E7: +case 0x96E7: +case 0x98E7: +case 0x9AE7: +case 0x9CE7: +case 0x9EE7: + +// SUBA +case 0x90E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93C0: +case 0x95C0: +case 0x97C0: +case 0x99C0: +case 0x9BC0: +case 0x9DC0: +case 0x9FC0: +case 0x91C1: +case 0x93C1: +case 0x95C1: +case 0x97C1: +case 0x99C1: +case 0x9BC1: +case 0x9DC1: +case 0x9FC1: +case 0x91C2: +case 0x93C2: +case 0x95C2: +case 0x97C2: +case 0x99C2: +case 0x9BC2: +case 0x9DC2: +case 0x9FC2: +case 0x91C3: +case 0x93C3: +case 0x95C3: +case 0x97C3: +case 0x99C3: +case 0x9BC3: +case 0x9DC3: +case 0x9FC3: +case 0x91C4: +case 0x93C4: +case 0x95C4: +case 0x97C4: +case 0x99C4: +case 0x9BC4: +case 0x9DC4: +case 0x9FC4: +case 0x91C5: +case 0x93C5: +case 0x95C5: +case 0x97C5: +case 0x99C5: +case 0x9BC5: +case 0x9DC5: +case 0x9FC5: +case 0x91C6: +case 0x93C6: +case 0x95C6: +case 0x97C6: +case 0x99C6: +case 0x9BC6: +case 0x9DC6: +case 0x9FC6: +case 0x91C7: +case 0x93C7: +case 0x95C7: +case 0x97C7: +case 0x99C7: +case 0x9BC7: +case 0x9DC7: +case 0x9FC7: + +// SUBA +case 0x91C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93C8: +case 0x95C8: +case 0x97C8: +case 0x99C8: +case 0x9BC8: +case 0x9DC8: +case 0x9FC8: +case 0x91C9: +case 0x93C9: +case 0x95C9: +case 0x97C9: +case 0x99C9: +case 0x9BC9: +case 0x9DC9: +case 0x9FC9: +case 0x91CA: +case 0x93CA: +case 0x95CA: +case 0x97CA: +case 0x99CA: +case 0x9BCA: +case 0x9DCA: +case 0x9FCA: +case 0x91CB: +case 0x93CB: +case 0x95CB: +case 0x97CB: +case 0x99CB: +case 0x9BCB: +case 0x9DCB: +case 0x9FCB: +case 0x91CC: +case 0x93CC: +case 0x95CC: +case 0x97CC: +case 0x99CC: +case 0x9BCC: +case 0x9DCC: +case 0x9FCC: +case 0x91CD: +case 0x93CD: +case 0x95CD: +case 0x97CD: +case 0x99CD: +case 0x9BCD: +case 0x9DCD: +case 0x9FCD: +case 0x91CE: +case 0x93CE: +case 0x95CE: +case 0x97CE: +case 0x99CE: +case 0x9BCE: +case 0x9DCE: +case 0x9FCE: +case 0x91CF: +case 0x93CF: +case 0x95CF: +case 0x97CF: +case 0x99CF: +case 0x9BCF: +case 0x9DCF: +case 0x9FCF: + +// SUBA +case 0x91C8: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93D0: +case 0x95D0: +case 0x97D0: +case 0x99D0: +case 0x9BD0: +case 0x9DD0: +case 0x9FD0: +case 0x91D1: +case 0x93D1: +case 0x95D1: +case 0x97D1: +case 0x99D1: +case 0x9BD1: +case 0x9DD1: +case 0x9FD1: +case 0x91D2: +case 0x93D2: +case 0x95D2: +case 0x97D2: +case 0x99D2: +case 0x9BD2: +case 0x9DD2: +case 0x9FD2: +case 0x91D3: +case 0x93D3: +case 0x95D3: +case 0x97D3: +case 0x99D3: +case 0x9BD3: +case 0x9DD3: +case 0x9FD3: +case 0x91D4: +case 0x93D4: +case 0x95D4: +case 0x97D4: +case 0x99D4: +case 0x9BD4: +case 0x9DD4: +case 0x9FD4: +case 0x91D5: +case 0x93D5: +case 0x95D5: +case 0x97D5: +case 0x99D5: +case 0x9BD5: +case 0x9DD5: +case 0x9FD5: +case 0x91D6: +case 0x93D6: +case 0x95D6: +case 0x97D6: +case 0x99D6: +case 0x9BD6: +case 0x9DD6: +case 0x9FD6: +case 0x91D7: +case 0x93D7: +case 0x95D7: +case 0x97D7: +case 0x99D7: +case 0x9BD7: +case 0x9DD7: +case 0x9FD7: + +// SUBA +case 0x91D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93D8: +case 0x95D8: +case 0x97D8: +case 0x99D8: +case 0x9BD8: +case 0x9DD8: +case 0x9FD8: +case 0x91D9: +case 0x93D9: +case 0x95D9: +case 0x97D9: +case 0x99D9: +case 0x9BD9: +case 0x9DD9: +case 0x9FD9: +case 0x91DA: +case 0x93DA: +case 0x95DA: +case 0x97DA: +case 0x99DA: +case 0x9BDA: +case 0x9DDA: +case 0x9FDA: +case 0x91DB: +case 0x93DB: +case 0x95DB: +case 0x97DB: +case 0x99DB: +case 0x9BDB: +case 0x9DDB: +case 0x9FDB: +case 0x91DC: +case 0x93DC: +case 0x95DC: +case 0x97DC: +case 0x99DC: +case 0x9BDC: +case 0x9DDC: +case 0x9FDC: +case 0x91DD: +case 0x93DD: +case 0x95DD: +case 0x97DD: +case 0x99DD: +case 0x9BDD: +case 0x9DDD: +case 0x9FDD: +case 0x91DE: +case 0x93DE: +case 0x95DE: +case 0x97DE: +case 0x99DE: +case 0x9BDE: +case 0x9DDE: +case 0x9FDE: + +// SUBA +case 0x91D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93E0: +case 0x95E0: +case 0x97E0: +case 0x99E0: +case 0x9BE0: +case 0x9DE0: +case 0x9FE0: +case 0x91E1: +case 0x93E1: +case 0x95E1: +case 0x97E1: +case 0x99E1: +case 0x9BE1: +case 0x9DE1: +case 0x9FE1: +case 0x91E2: +case 0x93E2: +case 0x95E2: +case 0x97E2: +case 0x99E2: +case 0x9BE2: +case 0x9DE2: +case 0x9FE2: +case 0x91E3: +case 0x93E3: +case 0x95E3: +case 0x97E3: +case 0x99E3: +case 0x9BE3: +case 0x9DE3: +case 0x9FE3: +case 0x91E4: +case 0x93E4: +case 0x95E4: +case 0x97E4: +case 0x99E4: +case 0x9BE4: +case 0x9DE4: +case 0x9FE4: +case 0x91E5: +case 0x93E5: +case 0x95E5: +case 0x97E5: +case 0x99E5: +case 0x9BE5: +case 0x9DE5: +case 0x9FE5: +case 0x91E6: +case 0x93E6: +case 0x95E6: +case 0x97E6: +case 0x99E6: +case 0x9BE6: +case 0x9DE6: +case 0x9FE6: + +// SUBA +case 0x91E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93E8: +case 0x95E8: +case 0x97E8: +case 0x99E8: +case 0x9BE8: +case 0x9DE8: +case 0x9FE8: +case 0x91E9: +case 0x93E9: +case 0x95E9: +case 0x97E9: +case 0x99E9: +case 0x9BE9: +case 0x9DE9: +case 0x9FE9: +case 0x91EA: +case 0x93EA: +case 0x95EA: +case 0x97EA: +case 0x99EA: +case 0x9BEA: +case 0x9DEA: +case 0x9FEA: +case 0x91EB: +case 0x93EB: +case 0x95EB: +case 0x97EB: +case 0x99EB: +case 0x9BEB: +case 0x9DEB: +case 0x9FEB: +case 0x91EC: +case 0x93EC: +case 0x95EC: +case 0x97EC: +case 0x99EC: +case 0x9BEC: +case 0x9DEC: +case 0x9FEC: +case 0x91ED: +case 0x93ED: +case 0x95ED: +case 0x97ED: +case 0x99ED: +case 0x9BED: +case 0x9DED: +case 0x9FED: +case 0x91EE: +case 0x93EE: +case 0x95EE: +case 0x97EE: +case 0x99EE: +case 0x9BEE: +case 0x9DEE: +case 0x9FEE: +case 0x91EF: +case 0x93EF: +case 0x95EF: +case 0x97EF: +case 0x99EF: +case 0x9BEF: +case 0x9DEF: +case 0x9FEF: + +// SUBA +case 0x91E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93F0: +case 0x95F0: +case 0x97F0: +case 0x99F0: +case 0x9BF0: +case 0x9DF0: +case 0x9FF0: +case 0x91F1: +case 0x93F1: +case 0x95F1: +case 0x97F1: +case 0x99F1: +case 0x9BF1: +case 0x9DF1: +case 0x9FF1: +case 0x91F2: +case 0x93F2: +case 0x95F2: +case 0x97F2: +case 0x99F2: +case 0x9BF2: +case 0x9DF2: +case 0x9FF2: +case 0x91F3: +case 0x93F3: +case 0x95F3: +case 0x97F3: +case 0x99F3: +case 0x9BF3: +case 0x9DF3: +case 0x9FF3: +case 0x91F4: +case 0x93F4: +case 0x95F4: +case 0x97F4: +case 0x99F4: +case 0x9BF4: +case 0x9DF4: +case 0x9FF4: +case 0x91F5: +case 0x93F5: +case 0x95F5: +case 0x97F5: +case 0x99F5: +case 0x9BF5: +case 0x9DF5: +case 0x9FF5: +case 0x91F6: +case 0x93F6: +case 0x95F6: +case 0x97F6: +case 0x99F6: +case 0x9BF6: +case 0x9DF6: +case 0x9FF6: +case 0x91F7: +case 0x93F7: +case 0x95F7: +case 0x97F7: +case 0x99F7: +case 0x9BF7: +case 0x9DF7: +case 0x9FF7: + +// SUBA +case 0x91F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 8; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93F8: +case 0x95F8: +case 0x97F8: +case 0x99F8: +case 0x9BF8: +case 0x9DF8: +case 0x9FF8: + +// SUBA +case 0x91F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93F9: +case 0x95F9: +case 0x97F9: +case 0x99F9: +case 0x9BF9: +case 0x9DF9: +case 0x9FF9: + +// SUBA +case 0x91F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 10; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93FA: +case 0x95FA: +case 0x97FA: +case 0x99FA: +case 0x9BFA: +case 0x9DFA: +case 0x9FFA: + +// SUBA +case 0x91FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93FB: +case 0x95FB: +case 0x97FB: +case 0x99FB: +case 0x9BFB: +case 0x9DFB: +case 0x9FFB: + +// SUBA +case 0x91FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 8; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93FC: +case 0x95FC: +case 0x97FC: +case 0x99FC: +case 0x9BFC: +case 0x9DFC: +case 0x9FFC: + +// SUBA +case 0x91FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)FETCH_LONG; + PC += 4; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(14) +case 0x93DF: +case 0x95DF: +case 0x97DF: +case 0x99DF: +case 0x9BDF: +case 0x9DDF: +case 0x9FDF: + +// SUBA +case 0x91DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0x93E7: +case 0x95E7: +case 0x97E7: +case 0x99E7: +case 0x9BE7: +case 0x9DE7: +case 0x9FE7: + +// SUBA +case 0x91E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_opA.inc b/libmednahawk/src/hw_cpu/c68k/c68k_opA.inc new file mode 100644 index 0000000000..b3e20aaa88 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_opA.inc @@ -0,0 +1,4116 @@ +case 0xA001: +case 0xA002: +case 0xA003: +case 0xA004: +case 0xA005: +case 0xA006: +case 0xA007: +case 0xA008: +case 0xA009: +case 0xA00A: +case 0xA00B: +case 0xA00C: +case 0xA00D: +case 0xA00E: +case 0xA00F: +case 0xA010: +case 0xA011: +case 0xA012: +case 0xA013: +case 0xA014: +case 0xA015: +case 0xA016: +case 0xA017: +case 0xA018: +case 0xA019: +case 0xA01A: +case 0xA01B: +case 0xA01C: +case 0xA01D: +case 0xA01E: +case 0xA01F: +case 0xA020: +case 0xA021: +case 0xA022: +case 0xA023: +case 0xA024: +case 0xA025: +case 0xA026: +case 0xA027: +case 0xA028: +case 0xA029: +case 0xA02A: +case 0xA02B: +case 0xA02C: +case 0xA02D: +case 0xA02E: +case 0xA02F: +case 0xA030: +case 0xA031: +case 0xA032: +case 0xA033: +case 0xA034: +case 0xA035: +case 0xA036: +case 0xA037: +case 0xA038: +case 0xA039: +case 0xA03A: +case 0xA03B: +case 0xA03C: +case 0xA03D: +case 0xA03E: +case 0xA03F: +case 0xA040: +case 0xA041: +case 0xA042: +case 0xA043: +case 0xA044: +case 0xA045: +case 0xA046: +case 0xA047: +case 0xA048: +case 0xA049: +case 0xA04A: +case 0xA04B: +case 0xA04C: +case 0xA04D: +case 0xA04E: +case 0xA04F: +case 0xA050: +case 0xA051: +case 0xA052: +case 0xA053: +case 0xA054: +case 0xA055: +case 0xA056: +case 0xA057: +case 0xA058: +case 0xA059: +case 0xA05A: +case 0xA05B: +case 0xA05C: +case 0xA05D: +case 0xA05E: +case 0xA05F: +case 0xA060: +case 0xA061: +case 0xA062: +case 0xA063: +case 0xA064: +case 0xA065: +case 0xA066: +case 0xA067: +case 0xA068: +case 0xA069: +case 0xA06A: +case 0xA06B: +case 0xA06C: +case 0xA06D: +case 0xA06E: +case 0xA06F: +case 0xA070: +case 0xA071: +case 0xA072: +case 0xA073: +case 0xA074: +case 0xA075: +case 0xA076: +case 0xA077: +case 0xA078: +case 0xA079: +case 0xA07A: +case 0xA07B: +case 0xA07C: +case 0xA07D: +case 0xA07E: +case 0xA07F: +case 0xA080: +case 0xA081: +case 0xA082: +case 0xA083: +case 0xA084: +case 0xA085: +case 0xA086: +case 0xA087: +case 0xA088: +case 0xA089: +case 0xA08A: +case 0xA08B: +case 0xA08C: +case 0xA08D: +case 0xA08E: +case 0xA08F: +case 0xA090: +case 0xA091: +case 0xA092: +case 0xA093: +case 0xA094: +case 0xA095: +case 0xA096: +case 0xA097: +case 0xA098: +case 0xA099: +case 0xA09A: +case 0xA09B: +case 0xA09C: +case 0xA09D: +case 0xA09E: +case 0xA09F: +case 0xA0A0: +case 0xA0A1: +case 0xA0A2: +case 0xA0A3: +case 0xA0A4: +case 0xA0A5: +case 0xA0A6: +case 0xA0A7: +case 0xA0A8: +case 0xA0A9: +case 0xA0AA: +case 0xA0AB: +case 0xA0AC: +case 0xA0AD: +case 0xA0AE: +case 0xA0AF: +case 0xA0B0: +case 0xA0B1: +case 0xA0B2: +case 0xA0B3: +case 0xA0B4: +case 0xA0B5: +case 0xA0B6: +case 0xA0B7: +case 0xA0B8: +case 0xA0B9: +case 0xA0BA: +case 0xA0BB: +case 0xA0BC: +case 0xA0BD: +case 0xA0BE: +case 0xA0BF: +case 0xA0C0: +case 0xA0C1: +case 0xA0C2: +case 0xA0C3: +case 0xA0C4: +case 0xA0C5: +case 0xA0C6: +case 0xA0C7: +case 0xA0C8: +case 0xA0C9: +case 0xA0CA: +case 0xA0CB: +case 0xA0CC: +case 0xA0CD: +case 0xA0CE: +case 0xA0CF: +case 0xA0D0: +case 0xA0D1: +case 0xA0D2: +case 0xA0D3: +case 0xA0D4: +case 0xA0D5: +case 0xA0D6: +case 0xA0D7: +case 0xA0D8: +case 0xA0D9: +case 0xA0DA: +case 0xA0DB: +case 0xA0DC: +case 0xA0DD: +case 0xA0DE: +case 0xA0DF: +case 0xA0E0: +case 0xA0E1: +case 0xA0E2: +case 0xA0E3: +case 0xA0E4: +case 0xA0E5: +case 0xA0E6: +case 0xA0E7: +case 0xA0E8: +case 0xA0E9: +case 0xA0EA: +case 0xA0EB: +case 0xA0EC: +case 0xA0ED: +case 0xA0EE: +case 0xA0EF: +case 0xA0F0: +case 0xA0F1: +case 0xA0F2: +case 0xA0F3: +case 0xA0F4: +case 0xA0F5: +case 0xA0F6: +case 0xA0F7: +case 0xA0F8: +case 0xA0F9: +case 0xA0FA: +case 0xA0FB: +case 0xA0FC: +case 0xA0FD: +case 0xA0FE: +case 0xA0FF: +case 0xA100: +case 0xA101: +case 0xA102: +case 0xA103: +case 0xA104: +case 0xA105: +case 0xA106: +case 0xA107: +case 0xA108: +case 0xA109: +case 0xA10A: +case 0xA10B: +case 0xA10C: +case 0xA10D: +case 0xA10E: +case 0xA10F: +case 0xA110: +case 0xA111: +case 0xA112: +case 0xA113: +case 0xA114: +case 0xA115: +case 0xA116: +case 0xA117: +case 0xA118: +case 0xA119: +case 0xA11A: +case 0xA11B: +case 0xA11C: +case 0xA11D: +case 0xA11E: +case 0xA11F: +case 0xA120: +case 0xA121: +case 0xA122: +case 0xA123: +case 0xA124: +case 0xA125: +case 0xA126: +case 0xA127: +case 0xA128: +case 0xA129: +case 0xA12A: +case 0xA12B: +case 0xA12C: +case 0xA12D: +case 0xA12E: +case 0xA12F: +case 0xA130: +case 0xA131: +case 0xA132: +case 0xA133: +case 0xA134: +case 0xA135: +case 0xA136: +case 0xA137: +case 0xA138: +case 0xA139: +case 0xA13A: +case 0xA13B: +case 0xA13C: +case 0xA13D: +case 0xA13E: +case 0xA13F: +case 0xA140: +case 0xA141: +case 0xA142: +case 0xA143: +case 0xA144: +case 0xA145: +case 0xA146: +case 0xA147: +case 0xA148: +case 0xA149: +case 0xA14A: +case 0xA14B: +case 0xA14C: +case 0xA14D: +case 0xA14E: +case 0xA14F: +case 0xA150: +case 0xA151: +case 0xA152: +case 0xA153: +case 0xA154: +case 0xA155: +case 0xA156: +case 0xA157: +case 0xA158: +case 0xA159: +case 0xA15A: +case 0xA15B: +case 0xA15C: +case 0xA15D: +case 0xA15E: +case 0xA15F: +case 0xA160: +case 0xA161: +case 0xA162: +case 0xA163: +case 0xA164: +case 0xA165: +case 0xA166: +case 0xA167: +case 0xA168: +case 0xA169: +case 0xA16A: +case 0xA16B: +case 0xA16C: +case 0xA16D: +case 0xA16E: +case 0xA16F: +case 0xA170: +case 0xA171: +case 0xA172: +case 0xA173: +case 0xA174: +case 0xA175: +case 0xA176: +case 0xA177: +case 0xA178: +case 0xA179: +case 0xA17A: +case 0xA17B: +case 0xA17C: +case 0xA17D: +case 0xA17E: +case 0xA17F: +case 0xA180: +case 0xA181: +case 0xA182: +case 0xA183: +case 0xA184: +case 0xA185: +case 0xA186: +case 0xA187: +case 0xA188: +case 0xA189: +case 0xA18A: +case 0xA18B: +case 0xA18C: +case 0xA18D: +case 0xA18E: +case 0xA18F: +case 0xA190: +case 0xA191: +case 0xA192: +case 0xA193: +case 0xA194: +case 0xA195: +case 0xA196: +case 0xA197: +case 0xA198: +case 0xA199: +case 0xA19A: +case 0xA19B: +case 0xA19C: +case 0xA19D: +case 0xA19E: +case 0xA19F: +case 0xA1A0: +case 0xA1A1: +case 0xA1A2: +case 0xA1A3: +case 0xA1A4: +case 0xA1A5: +case 0xA1A6: +case 0xA1A7: +case 0xA1A8: +case 0xA1A9: +case 0xA1AA: +case 0xA1AB: +case 0xA1AC: +case 0xA1AD: +case 0xA1AE: +case 0xA1AF: +case 0xA1B0: +case 0xA1B1: +case 0xA1B2: +case 0xA1B3: +case 0xA1B4: +case 0xA1B5: +case 0xA1B6: +case 0xA1B7: +case 0xA1B8: +case 0xA1B9: +case 0xA1BA: +case 0xA1BB: +case 0xA1BC: +case 0xA1BD: +case 0xA1BE: +case 0xA1BF: +case 0xA1C0: +case 0xA1C1: +case 0xA1C2: +case 0xA1C3: +case 0xA1C4: +case 0xA1C5: +case 0xA1C6: +case 0xA1C7: +case 0xA1C8: +case 0xA1C9: +case 0xA1CA: +case 0xA1CB: +case 0xA1CC: +case 0xA1CD: +case 0xA1CE: +case 0xA1CF: +case 0xA1D0: +case 0xA1D1: +case 0xA1D2: +case 0xA1D3: +case 0xA1D4: +case 0xA1D5: +case 0xA1D6: +case 0xA1D7: +case 0xA1D8: +case 0xA1D9: +case 0xA1DA: +case 0xA1DB: +case 0xA1DC: +case 0xA1DD: +case 0xA1DE: +case 0xA1DF: +case 0xA1E0: +case 0xA1E1: +case 0xA1E2: +case 0xA1E3: +case 0xA1E4: +case 0xA1E5: +case 0xA1E6: +case 0xA1E7: +case 0xA1E8: +case 0xA1E9: +case 0xA1EA: +case 0xA1EB: +case 0xA1EC: +case 0xA1ED: +case 0xA1EE: +case 0xA1EF: +case 0xA1F0: +case 0xA1F1: +case 0xA1F2: +case 0xA1F3: +case 0xA1F4: +case 0xA1F5: +case 0xA1F6: +case 0xA1F7: +case 0xA1F8: +case 0xA1F9: +case 0xA1FA: +case 0xA1FB: +case 0xA1FC: +case 0xA1FD: +case 0xA1FE: +case 0xA1FF: +case 0xA200: +case 0xA201: +case 0xA202: +case 0xA203: +case 0xA204: +case 0xA205: +case 0xA206: +case 0xA207: +case 0xA208: +case 0xA209: +case 0xA20A: +case 0xA20B: +case 0xA20C: +case 0xA20D: +case 0xA20E: +case 0xA20F: +case 0xA210: +case 0xA211: +case 0xA212: +case 0xA213: +case 0xA214: +case 0xA215: +case 0xA216: +case 0xA217: +case 0xA218: +case 0xA219: +case 0xA21A: +case 0xA21B: +case 0xA21C: +case 0xA21D: +case 0xA21E: +case 0xA21F: +case 0xA220: +case 0xA221: +case 0xA222: +case 0xA223: +case 0xA224: +case 0xA225: +case 0xA226: +case 0xA227: +case 0xA228: +case 0xA229: +case 0xA22A: +case 0xA22B: +case 0xA22C: +case 0xA22D: +case 0xA22E: +case 0xA22F: +case 0xA230: +case 0xA231: +case 0xA232: +case 0xA233: +case 0xA234: +case 0xA235: +case 0xA236: +case 0xA237: +case 0xA238: +case 0xA239: +case 0xA23A: +case 0xA23B: +case 0xA23C: +case 0xA23D: +case 0xA23E: +case 0xA23F: +case 0xA240: +case 0xA241: +case 0xA242: +case 0xA243: +case 0xA244: +case 0xA245: +case 0xA246: +case 0xA247: +case 0xA248: +case 0xA249: +case 0xA24A: +case 0xA24B: +case 0xA24C: +case 0xA24D: +case 0xA24E: +case 0xA24F: +case 0xA250: +case 0xA251: +case 0xA252: +case 0xA253: +case 0xA254: +case 0xA255: +case 0xA256: +case 0xA257: +case 0xA258: +case 0xA259: +case 0xA25A: +case 0xA25B: +case 0xA25C: +case 0xA25D: +case 0xA25E: +case 0xA25F: +case 0xA260: +case 0xA261: +case 0xA262: +case 0xA263: +case 0xA264: +case 0xA265: +case 0xA266: +case 0xA267: +case 0xA268: +case 0xA269: +case 0xA26A: +case 0xA26B: +case 0xA26C: +case 0xA26D: +case 0xA26E: +case 0xA26F: +case 0xA270: +case 0xA271: +case 0xA272: +case 0xA273: +case 0xA274: +case 0xA275: +case 0xA276: +case 0xA277: +case 0xA278: +case 0xA279: +case 0xA27A: +case 0xA27B: +case 0xA27C: +case 0xA27D: +case 0xA27E: +case 0xA27F: +case 0xA280: +case 0xA281: +case 0xA282: +case 0xA283: +case 0xA284: +case 0xA285: +case 0xA286: +case 0xA287: +case 0xA288: +case 0xA289: +case 0xA28A: +case 0xA28B: +case 0xA28C: +case 0xA28D: +case 0xA28E: +case 0xA28F: +case 0xA290: +case 0xA291: +case 0xA292: +case 0xA293: +case 0xA294: +case 0xA295: +case 0xA296: +case 0xA297: +case 0xA298: +case 0xA299: +case 0xA29A: +case 0xA29B: +case 0xA29C: +case 0xA29D: +case 0xA29E: +case 0xA29F: +case 0xA2A0: +case 0xA2A1: +case 0xA2A2: +case 0xA2A3: +case 0xA2A4: +case 0xA2A5: +case 0xA2A6: +case 0xA2A7: +case 0xA2A8: +case 0xA2A9: +case 0xA2AA: +case 0xA2AB: +case 0xA2AC: +case 0xA2AD: +case 0xA2AE: +case 0xA2AF: +case 0xA2B0: +case 0xA2B1: +case 0xA2B2: +case 0xA2B3: +case 0xA2B4: +case 0xA2B5: +case 0xA2B6: +case 0xA2B7: +case 0xA2B8: +case 0xA2B9: +case 0xA2BA: +case 0xA2BB: +case 0xA2BC: +case 0xA2BD: +case 0xA2BE: +case 0xA2BF: +case 0xA2C0: +case 0xA2C1: +case 0xA2C2: +case 0xA2C3: +case 0xA2C4: +case 0xA2C5: +case 0xA2C6: +case 0xA2C7: +case 0xA2C8: +case 0xA2C9: +case 0xA2CA: +case 0xA2CB: +case 0xA2CC: +case 0xA2CD: +case 0xA2CE: +case 0xA2CF: +case 0xA2D0: +case 0xA2D1: +case 0xA2D2: +case 0xA2D3: +case 0xA2D4: +case 0xA2D5: +case 0xA2D6: +case 0xA2D7: +case 0xA2D8: +case 0xA2D9: +case 0xA2DA: +case 0xA2DB: +case 0xA2DC: +case 0xA2DD: +case 0xA2DE: +case 0xA2DF: +case 0xA2E0: +case 0xA2E1: +case 0xA2E2: +case 0xA2E3: +case 0xA2E4: +case 0xA2E5: +case 0xA2E6: +case 0xA2E7: +case 0xA2E8: +case 0xA2E9: +case 0xA2EA: +case 0xA2EB: +case 0xA2EC: +case 0xA2ED: +case 0xA2EE: +case 0xA2EF: +case 0xA2F0: +case 0xA2F1: +case 0xA2F2: +case 0xA2F3: +case 0xA2F4: +case 0xA2F5: +case 0xA2F6: +case 0xA2F7: +case 0xA2F8: +case 0xA2F9: +case 0xA2FA: +case 0xA2FB: +case 0xA2FC: +case 0xA2FD: +case 0xA2FE: +case 0xA2FF: +case 0xA300: +case 0xA301: +case 0xA302: +case 0xA303: +case 0xA304: +case 0xA305: +case 0xA306: +case 0xA307: +case 0xA308: +case 0xA309: +case 0xA30A: +case 0xA30B: +case 0xA30C: +case 0xA30D: +case 0xA30E: +case 0xA30F: +case 0xA310: +case 0xA311: +case 0xA312: +case 0xA313: +case 0xA314: +case 0xA315: +case 0xA316: +case 0xA317: +case 0xA318: +case 0xA319: +case 0xA31A: +case 0xA31B: +case 0xA31C: +case 0xA31D: +case 0xA31E: +case 0xA31F: +case 0xA320: +case 0xA321: +case 0xA322: +case 0xA323: +case 0xA324: +case 0xA325: +case 0xA326: +case 0xA327: +case 0xA328: +case 0xA329: +case 0xA32A: +case 0xA32B: +case 0xA32C: +case 0xA32D: +case 0xA32E: +case 0xA32F: +case 0xA330: +case 0xA331: +case 0xA332: +case 0xA333: +case 0xA334: +case 0xA335: +case 0xA336: +case 0xA337: +case 0xA338: +case 0xA339: +case 0xA33A: +case 0xA33B: +case 0xA33C: +case 0xA33D: +case 0xA33E: +case 0xA33F: +case 0xA340: +case 0xA341: +case 0xA342: +case 0xA343: +case 0xA344: +case 0xA345: +case 0xA346: +case 0xA347: +case 0xA348: +case 0xA349: +case 0xA34A: +case 0xA34B: +case 0xA34C: +case 0xA34D: +case 0xA34E: +case 0xA34F: +case 0xA350: +case 0xA351: +case 0xA352: +case 0xA353: +case 0xA354: +case 0xA355: +case 0xA356: +case 0xA357: +case 0xA358: +case 0xA359: +case 0xA35A: +case 0xA35B: +case 0xA35C: +case 0xA35D: +case 0xA35E: +case 0xA35F: +case 0xA360: +case 0xA361: +case 0xA362: +case 0xA363: +case 0xA364: +case 0xA365: +case 0xA366: +case 0xA367: +case 0xA368: +case 0xA369: +case 0xA36A: +case 0xA36B: +case 0xA36C: +case 0xA36D: +case 0xA36E: +case 0xA36F: +case 0xA370: +case 0xA371: +case 0xA372: +case 0xA373: +case 0xA374: +case 0xA375: +case 0xA376: +case 0xA377: +case 0xA378: +case 0xA379: +case 0xA37A: +case 0xA37B: +case 0xA37C: +case 0xA37D: +case 0xA37E: +case 0xA37F: +case 0xA380: +case 0xA381: +case 0xA382: +case 0xA383: +case 0xA384: +case 0xA385: +case 0xA386: +case 0xA387: +case 0xA388: +case 0xA389: +case 0xA38A: +case 0xA38B: +case 0xA38C: +case 0xA38D: +case 0xA38E: +case 0xA38F: +case 0xA390: +case 0xA391: +case 0xA392: +case 0xA393: +case 0xA394: +case 0xA395: +case 0xA396: +case 0xA397: +case 0xA398: +case 0xA399: +case 0xA39A: +case 0xA39B: +case 0xA39C: +case 0xA39D: +case 0xA39E: +case 0xA39F: +case 0xA3A0: +case 0xA3A1: +case 0xA3A2: +case 0xA3A3: +case 0xA3A4: +case 0xA3A5: +case 0xA3A6: +case 0xA3A7: +case 0xA3A8: +case 0xA3A9: +case 0xA3AA: +case 0xA3AB: +case 0xA3AC: +case 0xA3AD: +case 0xA3AE: +case 0xA3AF: +case 0xA3B0: +case 0xA3B1: +case 0xA3B2: +case 0xA3B3: +case 0xA3B4: +case 0xA3B5: +case 0xA3B6: +case 0xA3B7: +case 0xA3B8: +case 0xA3B9: +case 0xA3BA: +case 0xA3BB: +case 0xA3BC: +case 0xA3BD: +case 0xA3BE: +case 0xA3BF: +case 0xA3C0: +case 0xA3C1: +case 0xA3C2: +case 0xA3C3: +case 0xA3C4: +case 0xA3C5: +case 0xA3C6: +case 0xA3C7: +case 0xA3C8: +case 0xA3C9: +case 0xA3CA: +case 0xA3CB: +case 0xA3CC: +case 0xA3CD: +case 0xA3CE: +case 0xA3CF: +case 0xA3D0: +case 0xA3D1: +case 0xA3D2: +case 0xA3D3: +case 0xA3D4: +case 0xA3D5: +case 0xA3D6: +case 0xA3D7: +case 0xA3D8: +case 0xA3D9: +case 0xA3DA: +case 0xA3DB: +case 0xA3DC: +case 0xA3DD: +case 0xA3DE: +case 0xA3DF: +case 0xA3E0: +case 0xA3E1: +case 0xA3E2: +case 0xA3E3: +case 0xA3E4: +case 0xA3E5: +case 0xA3E6: +case 0xA3E7: +case 0xA3E8: +case 0xA3E9: +case 0xA3EA: +case 0xA3EB: +case 0xA3EC: +case 0xA3ED: +case 0xA3EE: +case 0xA3EF: +case 0xA3F0: +case 0xA3F1: +case 0xA3F2: +case 0xA3F3: +case 0xA3F4: +case 0xA3F5: +case 0xA3F6: +case 0xA3F7: +case 0xA3F8: +case 0xA3F9: +case 0xA3FA: +case 0xA3FB: +case 0xA3FC: +case 0xA3FD: +case 0xA3FE: +case 0xA3FF: +case 0xA400: +case 0xA401: +case 0xA402: +case 0xA403: +case 0xA404: +case 0xA405: +case 0xA406: +case 0xA407: +case 0xA408: +case 0xA409: +case 0xA40A: +case 0xA40B: +case 0xA40C: +case 0xA40D: +case 0xA40E: +case 0xA40F: +case 0xA410: +case 0xA411: +case 0xA412: +case 0xA413: +case 0xA414: +case 0xA415: +case 0xA416: +case 0xA417: +case 0xA418: +case 0xA419: +case 0xA41A: +case 0xA41B: +case 0xA41C: +case 0xA41D: +case 0xA41E: +case 0xA41F: +case 0xA420: +case 0xA421: +case 0xA422: +case 0xA423: +case 0xA424: +case 0xA425: +case 0xA426: +case 0xA427: +case 0xA428: +case 0xA429: +case 0xA42A: +case 0xA42B: +case 0xA42C: +case 0xA42D: +case 0xA42E: +case 0xA42F: +case 0xA430: +case 0xA431: +case 0xA432: +case 0xA433: +case 0xA434: +case 0xA435: +case 0xA436: +case 0xA437: +case 0xA438: +case 0xA439: +case 0xA43A: +case 0xA43B: +case 0xA43C: +case 0xA43D: +case 0xA43E: +case 0xA43F: +case 0xA440: +case 0xA441: +case 0xA442: +case 0xA443: +case 0xA444: +case 0xA445: +case 0xA446: +case 0xA447: +case 0xA448: +case 0xA449: +case 0xA44A: +case 0xA44B: +case 0xA44C: +case 0xA44D: +case 0xA44E: +case 0xA44F: +case 0xA450: +case 0xA451: +case 0xA452: +case 0xA453: +case 0xA454: +case 0xA455: +case 0xA456: +case 0xA457: +case 0xA458: +case 0xA459: +case 0xA45A: +case 0xA45B: +case 0xA45C: +case 0xA45D: +case 0xA45E: +case 0xA45F: +case 0xA460: +case 0xA461: +case 0xA462: +case 0xA463: +case 0xA464: +case 0xA465: +case 0xA466: +case 0xA467: +case 0xA468: +case 0xA469: +case 0xA46A: +case 0xA46B: +case 0xA46C: +case 0xA46D: +case 0xA46E: +case 0xA46F: +case 0xA470: +case 0xA471: +case 0xA472: +case 0xA473: +case 0xA474: +case 0xA475: +case 0xA476: +case 0xA477: +case 0xA478: +case 0xA479: +case 0xA47A: +case 0xA47B: +case 0xA47C: +case 0xA47D: +case 0xA47E: +case 0xA47F: +case 0xA480: +case 0xA481: +case 0xA482: +case 0xA483: +case 0xA484: +case 0xA485: +case 0xA486: +case 0xA487: +case 0xA488: +case 0xA489: +case 0xA48A: +case 0xA48B: +case 0xA48C: +case 0xA48D: +case 0xA48E: +case 0xA48F: +case 0xA490: +case 0xA491: +case 0xA492: +case 0xA493: +case 0xA494: +case 0xA495: +case 0xA496: +case 0xA497: +case 0xA498: +case 0xA499: +case 0xA49A: +case 0xA49B: +case 0xA49C: +case 0xA49D: +case 0xA49E: +case 0xA49F: +case 0xA4A0: +case 0xA4A1: +case 0xA4A2: +case 0xA4A3: +case 0xA4A4: +case 0xA4A5: +case 0xA4A6: +case 0xA4A7: +case 0xA4A8: +case 0xA4A9: +case 0xA4AA: +case 0xA4AB: +case 0xA4AC: +case 0xA4AD: +case 0xA4AE: +case 0xA4AF: +case 0xA4B0: +case 0xA4B1: +case 0xA4B2: +case 0xA4B3: +case 0xA4B4: +case 0xA4B5: +case 0xA4B6: +case 0xA4B7: +case 0xA4B8: +case 0xA4B9: +case 0xA4BA: +case 0xA4BB: +case 0xA4BC: +case 0xA4BD: +case 0xA4BE: +case 0xA4BF: +case 0xA4C0: +case 0xA4C1: +case 0xA4C2: +case 0xA4C3: +case 0xA4C4: +case 0xA4C5: +case 0xA4C6: +case 0xA4C7: +case 0xA4C8: +case 0xA4C9: +case 0xA4CA: +case 0xA4CB: +case 0xA4CC: +case 0xA4CD: +case 0xA4CE: +case 0xA4CF: +case 0xA4D0: +case 0xA4D1: +case 0xA4D2: +case 0xA4D3: +case 0xA4D4: +case 0xA4D5: +case 0xA4D6: +case 0xA4D7: +case 0xA4D8: +case 0xA4D9: +case 0xA4DA: +case 0xA4DB: +case 0xA4DC: +case 0xA4DD: +case 0xA4DE: +case 0xA4DF: +case 0xA4E0: +case 0xA4E1: +case 0xA4E2: +case 0xA4E3: +case 0xA4E4: +case 0xA4E5: +case 0xA4E6: +case 0xA4E7: +case 0xA4E8: +case 0xA4E9: +case 0xA4EA: +case 0xA4EB: +case 0xA4EC: +case 0xA4ED: +case 0xA4EE: +case 0xA4EF: +case 0xA4F0: +case 0xA4F1: +case 0xA4F2: +case 0xA4F3: +case 0xA4F4: +case 0xA4F5: +case 0xA4F6: +case 0xA4F7: +case 0xA4F8: +case 0xA4F9: +case 0xA4FA: +case 0xA4FB: +case 0xA4FC: +case 0xA4FD: +case 0xA4FE: +case 0xA4FF: +case 0xA500: +case 0xA501: +case 0xA502: +case 0xA503: +case 0xA504: +case 0xA505: +case 0xA506: +case 0xA507: +case 0xA508: +case 0xA509: +case 0xA50A: +case 0xA50B: +case 0xA50C: +case 0xA50D: +case 0xA50E: +case 0xA50F: +case 0xA510: +case 0xA511: +case 0xA512: +case 0xA513: +case 0xA514: +case 0xA515: +case 0xA516: +case 0xA517: +case 0xA518: +case 0xA519: +case 0xA51A: +case 0xA51B: +case 0xA51C: +case 0xA51D: +case 0xA51E: +case 0xA51F: +case 0xA520: +case 0xA521: +case 0xA522: +case 0xA523: +case 0xA524: +case 0xA525: +case 0xA526: +case 0xA527: +case 0xA528: +case 0xA529: +case 0xA52A: +case 0xA52B: +case 0xA52C: +case 0xA52D: +case 0xA52E: +case 0xA52F: +case 0xA530: +case 0xA531: +case 0xA532: +case 0xA533: +case 0xA534: +case 0xA535: +case 0xA536: +case 0xA537: +case 0xA538: +case 0xA539: +case 0xA53A: +case 0xA53B: +case 0xA53C: +case 0xA53D: +case 0xA53E: +case 0xA53F: +case 0xA540: +case 0xA541: +case 0xA542: +case 0xA543: +case 0xA544: +case 0xA545: +case 0xA546: +case 0xA547: +case 0xA548: +case 0xA549: +case 0xA54A: +case 0xA54B: +case 0xA54C: +case 0xA54D: +case 0xA54E: +case 0xA54F: +case 0xA550: +case 0xA551: +case 0xA552: +case 0xA553: +case 0xA554: +case 0xA555: +case 0xA556: +case 0xA557: +case 0xA558: +case 0xA559: +case 0xA55A: +case 0xA55B: +case 0xA55C: +case 0xA55D: +case 0xA55E: +case 0xA55F: +case 0xA560: +case 0xA561: +case 0xA562: +case 0xA563: +case 0xA564: +case 0xA565: +case 0xA566: +case 0xA567: +case 0xA568: +case 0xA569: +case 0xA56A: +case 0xA56B: +case 0xA56C: +case 0xA56D: +case 0xA56E: +case 0xA56F: +case 0xA570: +case 0xA571: +case 0xA572: +case 0xA573: +case 0xA574: +case 0xA575: +case 0xA576: +case 0xA577: +case 0xA578: +case 0xA579: +case 0xA57A: +case 0xA57B: +case 0xA57C: +case 0xA57D: +case 0xA57E: +case 0xA57F: +case 0xA580: +case 0xA581: +case 0xA582: +case 0xA583: +case 0xA584: +case 0xA585: +case 0xA586: +case 0xA587: +case 0xA588: +case 0xA589: +case 0xA58A: +case 0xA58B: +case 0xA58C: +case 0xA58D: +case 0xA58E: +case 0xA58F: +case 0xA590: +case 0xA591: +case 0xA592: +case 0xA593: +case 0xA594: +case 0xA595: +case 0xA596: +case 0xA597: +case 0xA598: +case 0xA599: +case 0xA59A: +case 0xA59B: +case 0xA59C: +case 0xA59D: +case 0xA59E: +case 0xA59F: +case 0xA5A0: +case 0xA5A1: +case 0xA5A2: +case 0xA5A3: +case 0xA5A4: +case 0xA5A5: +case 0xA5A6: +case 0xA5A7: +case 0xA5A8: +case 0xA5A9: +case 0xA5AA: +case 0xA5AB: +case 0xA5AC: +case 0xA5AD: +case 0xA5AE: +case 0xA5AF: +case 0xA5B0: +case 0xA5B1: +case 0xA5B2: +case 0xA5B3: +case 0xA5B4: +case 0xA5B5: +case 0xA5B6: +case 0xA5B7: +case 0xA5B8: +case 0xA5B9: +case 0xA5BA: +case 0xA5BB: +case 0xA5BC: +case 0xA5BD: +case 0xA5BE: +case 0xA5BF: +case 0xA5C0: +case 0xA5C1: +case 0xA5C2: +case 0xA5C3: +case 0xA5C4: +case 0xA5C5: +case 0xA5C6: +case 0xA5C7: +case 0xA5C8: +case 0xA5C9: +case 0xA5CA: +case 0xA5CB: +case 0xA5CC: +case 0xA5CD: +case 0xA5CE: +case 0xA5CF: +case 0xA5D0: +case 0xA5D1: +case 0xA5D2: +case 0xA5D3: +case 0xA5D4: +case 0xA5D5: +case 0xA5D6: +case 0xA5D7: +case 0xA5D8: +case 0xA5D9: +case 0xA5DA: +case 0xA5DB: +case 0xA5DC: +case 0xA5DD: +case 0xA5DE: +case 0xA5DF: +case 0xA5E0: +case 0xA5E1: +case 0xA5E2: +case 0xA5E3: +case 0xA5E4: +case 0xA5E5: +case 0xA5E6: +case 0xA5E7: +case 0xA5E8: +case 0xA5E9: +case 0xA5EA: +case 0xA5EB: +case 0xA5EC: +case 0xA5ED: +case 0xA5EE: +case 0xA5EF: +case 0xA5F0: +case 0xA5F1: +case 0xA5F2: +case 0xA5F3: +case 0xA5F4: +case 0xA5F5: +case 0xA5F6: +case 0xA5F7: +case 0xA5F8: +case 0xA5F9: +case 0xA5FA: +case 0xA5FB: +case 0xA5FC: +case 0xA5FD: +case 0xA5FE: +case 0xA5FF: +case 0xA600: +case 0xA601: +case 0xA602: +case 0xA603: +case 0xA604: +case 0xA605: +case 0xA606: +case 0xA607: +case 0xA608: +case 0xA609: +case 0xA60A: +case 0xA60B: +case 0xA60C: +case 0xA60D: +case 0xA60E: +case 0xA60F: +case 0xA610: +case 0xA611: +case 0xA612: +case 0xA613: +case 0xA614: +case 0xA615: +case 0xA616: +case 0xA617: +case 0xA618: +case 0xA619: +case 0xA61A: +case 0xA61B: +case 0xA61C: +case 0xA61D: +case 0xA61E: +case 0xA61F: +case 0xA620: +case 0xA621: +case 0xA622: +case 0xA623: +case 0xA624: +case 0xA625: +case 0xA626: +case 0xA627: +case 0xA628: +case 0xA629: +case 0xA62A: +case 0xA62B: +case 0xA62C: +case 0xA62D: +case 0xA62E: +case 0xA62F: +case 0xA630: +case 0xA631: +case 0xA632: +case 0xA633: +case 0xA634: +case 0xA635: +case 0xA636: +case 0xA637: +case 0xA638: +case 0xA639: +case 0xA63A: +case 0xA63B: +case 0xA63C: +case 0xA63D: +case 0xA63E: +case 0xA63F: +case 0xA640: +case 0xA641: +case 0xA642: +case 0xA643: +case 0xA644: +case 0xA645: +case 0xA646: +case 0xA647: +case 0xA648: +case 0xA649: +case 0xA64A: +case 0xA64B: +case 0xA64C: +case 0xA64D: +case 0xA64E: +case 0xA64F: +case 0xA650: +case 0xA651: +case 0xA652: +case 0xA653: +case 0xA654: +case 0xA655: +case 0xA656: +case 0xA657: +case 0xA658: +case 0xA659: +case 0xA65A: +case 0xA65B: +case 0xA65C: +case 0xA65D: +case 0xA65E: +case 0xA65F: +case 0xA660: +case 0xA661: +case 0xA662: +case 0xA663: +case 0xA664: +case 0xA665: +case 0xA666: +case 0xA667: +case 0xA668: +case 0xA669: +case 0xA66A: +case 0xA66B: +case 0xA66C: +case 0xA66D: +case 0xA66E: +case 0xA66F: +case 0xA670: +case 0xA671: +case 0xA672: +case 0xA673: +case 0xA674: +case 0xA675: +case 0xA676: +case 0xA677: +case 0xA678: +case 0xA679: +case 0xA67A: +case 0xA67B: +case 0xA67C: +case 0xA67D: +case 0xA67E: +case 0xA67F: +case 0xA680: +case 0xA681: +case 0xA682: +case 0xA683: +case 0xA684: +case 0xA685: +case 0xA686: +case 0xA687: +case 0xA688: +case 0xA689: +case 0xA68A: +case 0xA68B: +case 0xA68C: +case 0xA68D: +case 0xA68E: +case 0xA68F: +case 0xA690: +case 0xA691: +case 0xA692: +case 0xA693: +case 0xA694: +case 0xA695: +case 0xA696: +case 0xA697: +case 0xA698: +case 0xA699: +case 0xA69A: +case 0xA69B: +case 0xA69C: +case 0xA69D: +case 0xA69E: +case 0xA69F: +case 0xA6A0: +case 0xA6A1: +case 0xA6A2: +case 0xA6A3: +case 0xA6A4: +case 0xA6A5: +case 0xA6A6: +case 0xA6A7: +case 0xA6A8: +case 0xA6A9: +case 0xA6AA: +case 0xA6AB: +case 0xA6AC: +case 0xA6AD: +case 0xA6AE: +case 0xA6AF: +case 0xA6B0: +case 0xA6B1: +case 0xA6B2: +case 0xA6B3: +case 0xA6B4: +case 0xA6B5: +case 0xA6B6: +case 0xA6B7: +case 0xA6B8: +case 0xA6B9: +case 0xA6BA: +case 0xA6BB: +case 0xA6BC: +case 0xA6BD: +case 0xA6BE: +case 0xA6BF: +case 0xA6C0: +case 0xA6C1: +case 0xA6C2: +case 0xA6C3: +case 0xA6C4: +case 0xA6C5: +case 0xA6C6: +case 0xA6C7: +case 0xA6C8: +case 0xA6C9: +case 0xA6CA: +case 0xA6CB: +case 0xA6CC: +case 0xA6CD: +case 0xA6CE: +case 0xA6CF: +case 0xA6D0: +case 0xA6D1: +case 0xA6D2: +case 0xA6D3: +case 0xA6D4: +case 0xA6D5: +case 0xA6D6: +case 0xA6D7: +case 0xA6D8: +case 0xA6D9: +case 0xA6DA: +case 0xA6DB: +case 0xA6DC: +case 0xA6DD: +case 0xA6DE: +case 0xA6DF: +case 0xA6E0: +case 0xA6E1: +case 0xA6E2: +case 0xA6E3: +case 0xA6E4: +case 0xA6E5: +case 0xA6E6: +case 0xA6E7: +case 0xA6E8: +case 0xA6E9: +case 0xA6EA: +case 0xA6EB: +case 0xA6EC: +case 0xA6ED: +case 0xA6EE: +case 0xA6EF: +case 0xA6F0: +case 0xA6F1: +case 0xA6F2: +case 0xA6F3: +case 0xA6F4: +case 0xA6F5: +case 0xA6F6: +case 0xA6F7: +case 0xA6F8: +case 0xA6F9: +case 0xA6FA: +case 0xA6FB: +case 0xA6FC: +case 0xA6FD: +case 0xA6FE: +case 0xA6FF: +case 0xA700: +case 0xA701: +case 0xA702: +case 0xA703: +case 0xA704: +case 0xA705: +case 0xA706: +case 0xA707: +case 0xA708: +case 0xA709: +case 0xA70A: +case 0xA70B: +case 0xA70C: +case 0xA70D: +case 0xA70E: +case 0xA70F: +case 0xA710: +case 0xA711: +case 0xA712: +case 0xA713: +case 0xA714: +case 0xA715: +case 0xA716: +case 0xA717: +case 0xA718: +case 0xA719: +case 0xA71A: +case 0xA71B: +case 0xA71C: +case 0xA71D: +case 0xA71E: +case 0xA71F: +case 0xA720: +case 0xA721: +case 0xA722: +case 0xA723: +case 0xA724: +case 0xA725: +case 0xA726: +case 0xA727: +case 0xA728: +case 0xA729: +case 0xA72A: +case 0xA72B: +case 0xA72C: +case 0xA72D: +case 0xA72E: +case 0xA72F: +case 0xA730: +case 0xA731: +case 0xA732: +case 0xA733: +case 0xA734: +case 0xA735: +case 0xA736: +case 0xA737: +case 0xA738: +case 0xA739: +case 0xA73A: +case 0xA73B: +case 0xA73C: +case 0xA73D: +case 0xA73E: +case 0xA73F: +case 0xA740: +case 0xA741: +case 0xA742: +case 0xA743: +case 0xA744: +case 0xA745: +case 0xA746: +case 0xA747: +case 0xA748: +case 0xA749: +case 0xA74A: +case 0xA74B: +case 0xA74C: +case 0xA74D: +case 0xA74E: +case 0xA74F: +case 0xA750: +case 0xA751: +case 0xA752: +case 0xA753: +case 0xA754: +case 0xA755: +case 0xA756: +case 0xA757: +case 0xA758: +case 0xA759: +case 0xA75A: +case 0xA75B: +case 0xA75C: +case 0xA75D: +case 0xA75E: +case 0xA75F: +case 0xA760: +case 0xA761: +case 0xA762: +case 0xA763: +case 0xA764: +case 0xA765: +case 0xA766: +case 0xA767: +case 0xA768: +case 0xA769: +case 0xA76A: +case 0xA76B: +case 0xA76C: +case 0xA76D: +case 0xA76E: +case 0xA76F: +case 0xA770: +case 0xA771: +case 0xA772: +case 0xA773: +case 0xA774: +case 0xA775: +case 0xA776: +case 0xA777: +case 0xA778: +case 0xA779: +case 0xA77A: +case 0xA77B: +case 0xA77C: +case 0xA77D: +case 0xA77E: +case 0xA77F: +case 0xA780: +case 0xA781: +case 0xA782: +case 0xA783: +case 0xA784: +case 0xA785: +case 0xA786: +case 0xA787: +case 0xA788: +case 0xA789: +case 0xA78A: +case 0xA78B: +case 0xA78C: +case 0xA78D: +case 0xA78E: +case 0xA78F: +case 0xA790: +case 0xA791: +case 0xA792: +case 0xA793: +case 0xA794: +case 0xA795: +case 0xA796: +case 0xA797: +case 0xA798: +case 0xA799: +case 0xA79A: +case 0xA79B: +case 0xA79C: +case 0xA79D: +case 0xA79E: +case 0xA79F: +case 0xA7A0: +case 0xA7A1: +case 0xA7A2: +case 0xA7A3: +case 0xA7A4: +case 0xA7A5: +case 0xA7A6: +case 0xA7A7: +case 0xA7A8: +case 0xA7A9: +case 0xA7AA: +case 0xA7AB: +case 0xA7AC: +case 0xA7AD: +case 0xA7AE: +case 0xA7AF: +case 0xA7B0: +case 0xA7B1: +case 0xA7B2: +case 0xA7B3: +case 0xA7B4: +case 0xA7B5: +case 0xA7B6: +case 0xA7B7: +case 0xA7B8: +case 0xA7B9: +case 0xA7BA: +case 0xA7BB: +case 0xA7BC: +case 0xA7BD: +case 0xA7BE: +case 0xA7BF: +case 0xA7C0: +case 0xA7C1: +case 0xA7C2: +case 0xA7C3: +case 0xA7C4: +case 0xA7C5: +case 0xA7C6: +case 0xA7C7: +case 0xA7C8: +case 0xA7C9: +case 0xA7CA: +case 0xA7CB: +case 0xA7CC: +case 0xA7CD: +case 0xA7CE: +case 0xA7CF: +case 0xA7D0: +case 0xA7D1: +case 0xA7D2: +case 0xA7D3: +case 0xA7D4: +case 0xA7D5: +case 0xA7D6: +case 0xA7D7: +case 0xA7D8: +case 0xA7D9: +case 0xA7DA: +case 0xA7DB: +case 0xA7DC: +case 0xA7DD: +case 0xA7DE: +case 0xA7DF: +case 0xA7E0: +case 0xA7E1: +case 0xA7E2: +case 0xA7E3: +case 0xA7E4: +case 0xA7E5: +case 0xA7E6: +case 0xA7E7: +case 0xA7E8: +case 0xA7E9: +case 0xA7EA: +case 0xA7EB: +case 0xA7EC: +case 0xA7ED: +case 0xA7EE: +case 0xA7EF: +case 0xA7F0: +case 0xA7F1: +case 0xA7F2: +case 0xA7F3: +case 0xA7F4: +case 0xA7F5: +case 0xA7F6: +case 0xA7F7: +case 0xA7F8: +case 0xA7F9: +case 0xA7FA: +case 0xA7FB: +case 0xA7FC: +case 0xA7FD: +case 0xA7FE: +case 0xA7FF: +case 0xA800: +case 0xA801: +case 0xA802: +case 0xA803: +case 0xA804: +case 0xA805: +case 0xA806: +case 0xA807: +case 0xA808: +case 0xA809: +case 0xA80A: +case 0xA80B: +case 0xA80C: +case 0xA80D: +case 0xA80E: +case 0xA80F: +case 0xA810: +case 0xA811: +case 0xA812: +case 0xA813: +case 0xA814: +case 0xA815: +case 0xA816: +case 0xA817: +case 0xA818: +case 0xA819: +case 0xA81A: +case 0xA81B: +case 0xA81C: +case 0xA81D: +case 0xA81E: +case 0xA81F: +case 0xA820: +case 0xA821: +case 0xA822: +case 0xA823: +case 0xA824: +case 0xA825: +case 0xA826: +case 0xA827: +case 0xA828: +case 0xA829: +case 0xA82A: +case 0xA82B: +case 0xA82C: +case 0xA82D: +case 0xA82E: +case 0xA82F: +case 0xA830: +case 0xA831: +case 0xA832: +case 0xA833: +case 0xA834: +case 0xA835: +case 0xA836: +case 0xA837: +case 0xA838: +case 0xA839: +case 0xA83A: +case 0xA83B: +case 0xA83C: +case 0xA83D: +case 0xA83E: +case 0xA83F: +case 0xA840: +case 0xA841: +case 0xA842: +case 0xA843: +case 0xA844: +case 0xA845: +case 0xA846: +case 0xA847: +case 0xA848: +case 0xA849: +case 0xA84A: +case 0xA84B: +case 0xA84C: +case 0xA84D: +case 0xA84E: +case 0xA84F: +case 0xA850: +case 0xA851: +case 0xA852: +case 0xA853: +case 0xA854: +case 0xA855: +case 0xA856: +case 0xA857: +case 0xA858: +case 0xA859: +case 0xA85A: +case 0xA85B: +case 0xA85C: +case 0xA85D: +case 0xA85E: +case 0xA85F: +case 0xA860: +case 0xA861: +case 0xA862: +case 0xA863: +case 0xA864: +case 0xA865: +case 0xA866: +case 0xA867: +case 0xA868: +case 0xA869: +case 0xA86A: +case 0xA86B: +case 0xA86C: +case 0xA86D: +case 0xA86E: +case 0xA86F: +case 0xA870: +case 0xA871: +case 0xA872: +case 0xA873: +case 0xA874: +case 0xA875: +case 0xA876: +case 0xA877: +case 0xA878: +case 0xA879: +case 0xA87A: +case 0xA87B: +case 0xA87C: +case 0xA87D: +case 0xA87E: +case 0xA87F: +case 0xA880: +case 0xA881: +case 0xA882: +case 0xA883: +case 0xA884: +case 0xA885: +case 0xA886: +case 0xA887: +case 0xA888: +case 0xA889: +case 0xA88A: +case 0xA88B: +case 0xA88C: +case 0xA88D: +case 0xA88E: +case 0xA88F: +case 0xA890: +case 0xA891: +case 0xA892: +case 0xA893: +case 0xA894: +case 0xA895: +case 0xA896: +case 0xA897: +case 0xA898: +case 0xA899: +case 0xA89A: +case 0xA89B: +case 0xA89C: +case 0xA89D: +case 0xA89E: +case 0xA89F: +case 0xA8A0: +case 0xA8A1: +case 0xA8A2: +case 0xA8A3: +case 0xA8A4: +case 0xA8A5: +case 0xA8A6: +case 0xA8A7: +case 0xA8A8: +case 0xA8A9: +case 0xA8AA: +case 0xA8AB: +case 0xA8AC: +case 0xA8AD: +case 0xA8AE: +case 0xA8AF: +case 0xA8B0: +case 0xA8B1: +case 0xA8B2: +case 0xA8B3: +case 0xA8B4: +case 0xA8B5: +case 0xA8B6: +case 0xA8B7: +case 0xA8B8: +case 0xA8B9: +case 0xA8BA: +case 0xA8BB: +case 0xA8BC: +case 0xA8BD: +case 0xA8BE: +case 0xA8BF: +case 0xA8C0: +case 0xA8C1: +case 0xA8C2: +case 0xA8C3: +case 0xA8C4: +case 0xA8C5: +case 0xA8C6: +case 0xA8C7: +case 0xA8C8: +case 0xA8C9: +case 0xA8CA: +case 0xA8CB: +case 0xA8CC: +case 0xA8CD: +case 0xA8CE: +case 0xA8CF: +case 0xA8D0: +case 0xA8D1: +case 0xA8D2: +case 0xA8D3: +case 0xA8D4: +case 0xA8D5: +case 0xA8D6: +case 0xA8D7: +case 0xA8D8: +case 0xA8D9: +case 0xA8DA: +case 0xA8DB: +case 0xA8DC: +case 0xA8DD: +case 0xA8DE: +case 0xA8DF: +case 0xA8E0: +case 0xA8E1: +case 0xA8E2: +case 0xA8E3: +case 0xA8E4: +case 0xA8E5: +case 0xA8E6: +case 0xA8E7: +case 0xA8E8: +case 0xA8E9: +case 0xA8EA: +case 0xA8EB: +case 0xA8EC: +case 0xA8ED: +case 0xA8EE: +case 0xA8EF: +case 0xA8F0: +case 0xA8F1: +case 0xA8F2: +case 0xA8F3: +case 0xA8F4: +case 0xA8F5: +case 0xA8F6: +case 0xA8F7: +case 0xA8F8: +case 0xA8F9: +case 0xA8FA: +case 0xA8FB: +case 0xA8FC: +case 0xA8FD: +case 0xA8FE: +case 0xA8FF: +case 0xA900: +case 0xA901: +case 0xA902: +case 0xA903: +case 0xA904: +case 0xA905: +case 0xA906: +case 0xA907: +case 0xA908: +case 0xA909: +case 0xA90A: +case 0xA90B: +case 0xA90C: +case 0xA90D: +case 0xA90E: +case 0xA90F: +case 0xA910: +case 0xA911: +case 0xA912: +case 0xA913: +case 0xA914: +case 0xA915: +case 0xA916: +case 0xA917: +case 0xA918: +case 0xA919: +case 0xA91A: +case 0xA91B: +case 0xA91C: +case 0xA91D: +case 0xA91E: +case 0xA91F: +case 0xA920: +case 0xA921: +case 0xA922: +case 0xA923: +case 0xA924: +case 0xA925: +case 0xA926: +case 0xA927: +case 0xA928: +case 0xA929: +case 0xA92A: +case 0xA92B: +case 0xA92C: +case 0xA92D: +case 0xA92E: +case 0xA92F: +case 0xA930: +case 0xA931: +case 0xA932: +case 0xA933: +case 0xA934: +case 0xA935: +case 0xA936: +case 0xA937: +case 0xA938: +case 0xA939: +case 0xA93A: +case 0xA93B: +case 0xA93C: +case 0xA93D: +case 0xA93E: +case 0xA93F: +case 0xA940: +case 0xA941: +case 0xA942: +case 0xA943: +case 0xA944: +case 0xA945: +case 0xA946: +case 0xA947: +case 0xA948: +case 0xA949: +case 0xA94A: +case 0xA94B: +case 0xA94C: +case 0xA94D: +case 0xA94E: +case 0xA94F: +case 0xA950: +case 0xA951: +case 0xA952: +case 0xA953: +case 0xA954: +case 0xA955: +case 0xA956: +case 0xA957: +case 0xA958: +case 0xA959: +case 0xA95A: +case 0xA95B: +case 0xA95C: +case 0xA95D: +case 0xA95E: +case 0xA95F: +case 0xA960: +case 0xA961: +case 0xA962: +case 0xA963: +case 0xA964: +case 0xA965: +case 0xA966: +case 0xA967: +case 0xA968: +case 0xA969: +case 0xA96A: +case 0xA96B: +case 0xA96C: +case 0xA96D: +case 0xA96E: +case 0xA96F: +case 0xA970: +case 0xA971: +case 0xA972: +case 0xA973: +case 0xA974: +case 0xA975: +case 0xA976: +case 0xA977: +case 0xA978: +case 0xA979: +case 0xA97A: +case 0xA97B: +case 0xA97C: +case 0xA97D: +case 0xA97E: +case 0xA97F: +case 0xA980: +case 0xA981: +case 0xA982: +case 0xA983: +case 0xA984: +case 0xA985: +case 0xA986: +case 0xA987: +case 0xA988: +case 0xA989: +case 0xA98A: +case 0xA98B: +case 0xA98C: +case 0xA98D: +case 0xA98E: +case 0xA98F: +case 0xA990: +case 0xA991: +case 0xA992: +case 0xA993: +case 0xA994: +case 0xA995: +case 0xA996: +case 0xA997: +case 0xA998: +case 0xA999: +case 0xA99A: +case 0xA99B: +case 0xA99C: +case 0xA99D: +case 0xA99E: +case 0xA99F: +case 0xA9A0: +case 0xA9A1: +case 0xA9A2: +case 0xA9A3: +case 0xA9A4: +case 0xA9A5: +case 0xA9A6: +case 0xA9A7: +case 0xA9A8: +case 0xA9A9: +case 0xA9AA: +case 0xA9AB: +case 0xA9AC: +case 0xA9AD: +case 0xA9AE: +case 0xA9AF: +case 0xA9B0: +case 0xA9B1: +case 0xA9B2: +case 0xA9B3: +case 0xA9B4: +case 0xA9B5: +case 0xA9B6: +case 0xA9B7: +case 0xA9B8: +case 0xA9B9: +case 0xA9BA: +case 0xA9BB: +case 0xA9BC: +case 0xA9BD: +case 0xA9BE: +case 0xA9BF: +case 0xA9C0: +case 0xA9C1: +case 0xA9C2: +case 0xA9C3: +case 0xA9C4: +case 0xA9C5: +case 0xA9C6: +case 0xA9C7: +case 0xA9C8: +case 0xA9C9: +case 0xA9CA: +case 0xA9CB: +case 0xA9CC: +case 0xA9CD: +case 0xA9CE: +case 0xA9CF: +case 0xA9D0: +case 0xA9D1: +case 0xA9D2: +case 0xA9D3: +case 0xA9D4: +case 0xA9D5: +case 0xA9D6: +case 0xA9D7: +case 0xA9D8: +case 0xA9D9: +case 0xA9DA: +case 0xA9DB: +case 0xA9DC: +case 0xA9DD: +case 0xA9DE: +case 0xA9DF: +case 0xA9E0: +case 0xA9E1: +case 0xA9E2: +case 0xA9E3: +case 0xA9E4: +case 0xA9E5: +case 0xA9E6: +case 0xA9E7: +case 0xA9E8: +case 0xA9E9: +case 0xA9EA: +case 0xA9EB: +case 0xA9EC: +case 0xA9ED: +case 0xA9EE: +case 0xA9EF: +case 0xA9F0: +case 0xA9F1: +case 0xA9F2: +case 0xA9F3: +case 0xA9F4: +case 0xA9F5: +case 0xA9F6: +case 0xA9F7: +case 0xA9F8: +case 0xA9F9: +case 0xA9FA: +case 0xA9FB: +case 0xA9FC: +case 0xA9FD: +case 0xA9FE: +case 0xA9FF: +case 0xAA00: +case 0xAA01: +case 0xAA02: +case 0xAA03: +case 0xAA04: +case 0xAA05: +case 0xAA06: +case 0xAA07: +case 0xAA08: +case 0xAA09: +case 0xAA0A: +case 0xAA0B: +case 0xAA0C: +case 0xAA0D: +case 0xAA0E: +case 0xAA0F: +case 0xAA10: +case 0xAA11: +case 0xAA12: +case 0xAA13: +case 0xAA14: +case 0xAA15: +case 0xAA16: +case 0xAA17: +case 0xAA18: +case 0xAA19: +case 0xAA1A: +case 0xAA1B: +case 0xAA1C: +case 0xAA1D: +case 0xAA1E: +case 0xAA1F: +case 0xAA20: +case 0xAA21: +case 0xAA22: +case 0xAA23: +case 0xAA24: +case 0xAA25: +case 0xAA26: +case 0xAA27: +case 0xAA28: +case 0xAA29: +case 0xAA2A: +case 0xAA2B: +case 0xAA2C: +case 0xAA2D: +case 0xAA2E: +case 0xAA2F: +case 0xAA30: +case 0xAA31: +case 0xAA32: +case 0xAA33: +case 0xAA34: +case 0xAA35: +case 0xAA36: +case 0xAA37: +case 0xAA38: +case 0xAA39: +case 0xAA3A: +case 0xAA3B: +case 0xAA3C: +case 0xAA3D: +case 0xAA3E: +case 0xAA3F: +case 0xAA40: +case 0xAA41: +case 0xAA42: +case 0xAA43: +case 0xAA44: +case 0xAA45: +case 0xAA46: +case 0xAA47: +case 0xAA48: +case 0xAA49: +case 0xAA4A: +case 0xAA4B: +case 0xAA4C: +case 0xAA4D: +case 0xAA4E: +case 0xAA4F: +case 0xAA50: +case 0xAA51: +case 0xAA52: +case 0xAA53: +case 0xAA54: +case 0xAA55: +case 0xAA56: +case 0xAA57: +case 0xAA58: +case 0xAA59: +case 0xAA5A: +case 0xAA5B: +case 0xAA5C: +case 0xAA5D: +case 0xAA5E: +case 0xAA5F: +case 0xAA60: +case 0xAA61: +case 0xAA62: +case 0xAA63: +case 0xAA64: +case 0xAA65: +case 0xAA66: +case 0xAA67: +case 0xAA68: +case 0xAA69: +case 0xAA6A: +case 0xAA6B: +case 0xAA6C: +case 0xAA6D: +case 0xAA6E: +case 0xAA6F: +case 0xAA70: +case 0xAA71: +case 0xAA72: +case 0xAA73: +case 0xAA74: +case 0xAA75: +case 0xAA76: +case 0xAA77: +case 0xAA78: +case 0xAA79: +case 0xAA7A: +case 0xAA7B: +case 0xAA7C: +case 0xAA7D: +case 0xAA7E: +case 0xAA7F: +case 0xAA80: +case 0xAA81: +case 0xAA82: +case 0xAA83: +case 0xAA84: +case 0xAA85: +case 0xAA86: +case 0xAA87: +case 0xAA88: +case 0xAA89: +case 0xAA8A: +case 0xAA8B: +case 0xAA8C: +case 0xAA8D: +case 0xAA8E: +case 0xAA8F: +case 0xAA90: +case 0xAA91: +case 0xAA92: +case 0xAA93: +case 0xAA94: +case 0xAA95: +case 0xAA96: +case 0xAA97: +case 0xAA98: +case 0xAA99: +case 0xAA9A: +case 0xAA9B: +case 0xAA9C: +case 0xAA9D: +case 0xAA9E: +case 0xAA9F: +case 0xAAA0: +case 0xAAA1: +case 0xAAA2: +case 0xAAA3: +case 0xAAA4: +case 0xAAA5: +case 0xAAA6: +case 0xAAA7: +case 0xAAA8: +case 0xAAA9: +case 0xAAAA: +case 0xAAAB: +case 0xAAAC: +case 0xAAAD: +case 0xAAAE: +case 0xAAAF: +case 0xAAB0: +case 0xAAB1: +case 0xAAB2: +case 0xAAB3: +case 0xAAB4: +case 0xAAB5: +case 0xAAB6: +case 0xAAB7: +case 0xAAB8: +case 0xAAB9: +case 0xAABA: +case 0xAABB: +case 0xAABC: +case 0xAABD: +case 0xAABE: +case 0xAABF: +case 0xAAC0: +case 0xAAC1: +case 0xAAC2: +case 0xAAC3: +case 0xAAC4: +case 0xAAC5: +case 0xAAC6: +case 0xAAC7: +case 0xAAC8: +case 0xAAC9: +case 0xAACA: +case 0xAACB: +case 0xAACC: +case 0xAACD: +case 0xAACE: +case 0xAACF: +case 0xAAD0: +case 0xAAD1: +case 0xAAD2: +case 0xAAD3: +case 0xAAD4: +case 0xAAD5: +case 0xAAD6: +case 0xAAD7: +case 0xAAD8: +case 0xAAD9: +case 0xAADA: +case 0xAADB: +case 0xAADC: +case 0xAADD: +case 0xAADE: +case 0xAADF: +case 0xAAE0: +case 0xAAE1: +case 0xAAE2: +case 0xAAE3: +case 0xAAE4: +case 0xAAE5: +case 0xAAE6: +case 0xAAE7: +case 0xAAE8: +case 0xAAE9: +case 0xAAEA: +case 0xAAEB: +case 0xAAEC: +case 0xAAED: +case 0xAAEE: +case 0xAAEF: +case 0xAAF0: +case 0xAAF1: +case 0xAAF2: +case 0xAAF3: +case 0xAAF4: +case 0xAAF5: +case 0xAAF6: +case 0xAAF7: +case 0xAAF8: +case 0xAAF9: +case 0xAAFA: +case 0xAAFB: +case 0xAAFC: +case 0xAAFD: +case 0xAAFE: +case 0xAAFF: +case 0xAB00: +case 0xAB01: +case 0xAB02: +case 0xAB03: +case 0xAB04: +case 0xAB05: +case 0xAB06: +case 0xAB07: +case 0xAB08: +case 0xAB09: +case 0xAB0A: +case 0xAB0B: +case 0xAB0C: +case 0xAB0D: +case 0xAB0E: +case 0xAB0F: +case 0xAB10: +case 0xAB11: +case 0xAB12: +case 0xAB13: +case 0xAB14: +case 0xAB15: +case 0xAB16: +case 0xAB17: +case 0xAB18: +case 0xAB19: +case 0xAB1A: +case 0xAB1B: +case 0xAB1C: +case 0xAB1D: +case 0xAB1E: +case 0xAB1F: +case 0xAB20: +case 0xAB21: +case 0xAB22: +case 0xAB23: +case 0xAB24: +case 0xAB25: +case 0xAB26: +case 0xAB27: +case 0xAB28: +case 0xAB29: +case 0xAB2A: +case 0xAB2B: +case 0xAB2C: +case 0xAB2D: +case 0xAB2E: +case 0xAB2F: +case 0xAB30: +case 0xAB31: +case 0xAB32: +case 0xAB33: +case 0xAB34: +case 0xAB35: +case 0xAB36: +case 0xAB37: +case 0xAB38: +case 0xAB39: +case 0xAB3A: +case 0xAB3B: +case 0xAB3C: +case 0xAB3D: +case 0xAB3E: +case 0xAB3F: +case 0xAB40: +case 0xAB41: +case 0xAB42: +case 0xAB43: +case 0xAB44: +case 0xAB45: +case 0xAB46: +case 0xAB47: +case 0xAB48: +case 0xAB49: +case 0xAB4A: +case 0xAB4B: +case 0xAB4C: +case 0xAB4D: +case 0xAB4E: +case 0xAB4F: +case 0xAB50: +case 0xAB51: +case 0xAB52: +case 0xAB53: +case 0xAB54: +case 0xAB55: +case 0xAB56: +case 0xAB57: +case 0xAB58: +case 0xAB59: +case 0xAB5A: +case 0xAB5B: +case 0xAB5C: +case 0xAB5D: +case 0xAB5E: +case 0xAB5F: +case 0xAB60: +case 0xAB61: +case 0xAB62: +case 0xAB63: +case 0xAB64: +case 0xAB65: +case 0xAB66: +case 0xAB67: +case 0xAB68: +case 0xAB69: +case 0xAB6A: +case 0xAB6B: +case 0xAB6C: +case 0xAB6D: +case 0xAB6E: +case 0xAB6F: +case 0xAB70: +case 0xAB71: +case 0xAB72: +case 0xAB73: +case 0xAB74: +case 0xAB75: +case 0xAB76: +case 0xAB77: +case 0xAB78: +case 0xAB79: +case 0xAB7A: +case 0xAB7B: +case 0xAB7C: +case 0xAB7D: +case 0xAB7E: +case 0xAB7F: +case 0xAB80: +case 0xAB81: +case 0xAB82: +case 0xAB83: +case 0xAB84: +case 0xAB85: +case 0xAB86: +case 0xAB87: +case 0xAB88: +case 0xAB89: +case 0xAB8A: +case 0xAB8B: +case 0xAB8C: +case 0xAB8D: +case 0xAB8E: +case 0xAB8F: +case 0xAB90: +case 0xAB91: +case 0xAB92: +case 0xAB93: +case 0xAB94: +case 0xAB95: +case 0xAB96: +case 0xAB97: +case 0xAB98: +case 0xAB99: +case 0xAB9A: +case 0xAB9B: +case 0xAB9C: +case 0xAB9D: +case 0xAB9E: +case 0xAB9F: +case 0xABA0: +case 0xABA1: +case 0xABA2: +case 0xABA3: +case 0xABA4: +case 0xABA5: +case 0xABA6: +case 0xABA7: +case 0xABA8: +case 0xABA9: +case 0xABAA: +case 0xABAB: +case 0xABAC: +case 0xABAD: +case 0xABAE: +case 0xABAF: +case 0xABB0: +case 0xABB1: +case 0xABB2: +case 0xABB3: +case 0xABB4: +case 0xABB5: +case 0xABB6: +case 0xABB7: +case 0xABB8: +case 0xABB9: +case 0xABBA: +case 0xABBB: +case 0xABBC: +case 0xABBD: +case 0xABBE: +case 0xABBF: +case 0xABC0: +case 0xABC1: +case 0xABC2: +case 0xABC3: +case 0xABC4: +case 0xABC5: +case 0xABC6: +case 0xABC7: +case 0xABC8: +case 0xABC9: +case 0xABCA: +case 0xABCB: +case 0xABCC: +case 0xABCD: +case 0xABCE: +case 0xABCF: +case 0xABD0: +case 0xABD1: +case 0xABD2: +case 0xABD3: +case 0xABD4: +case 0xABD5: +case 0xABD6: +case 0xABD7: +case 0xABD8: +case 0xABD9: +case 0xABDA: +case 0xABDB: +case 0xABDC: +case 0xABDD: +case 0xABDE: +case 0xABDF: +case 0xABE0: +case 0xABE1: +case 0xABE2: +case 0xABE3: +case 0xABE4: +case 0xABE5: +case 0xABE6: +case 0xABE7: +case 0xABE8: +case 0xABE9: +case 0xABEA: +case 0xABEB: +case 0xABEC: +case 0xABED: +case 0xABEE: +case 0xABEF: +case 0xABF0: +case 0xABF1: +case 0xABF2: +case 0xABF3: +case 0xABF4: +case 0xABF5: +case 0xABF6: +case 0xABF7: +case 0xABF8: +case 0xABF9: +case 0xABFA: +case 0xABFB: +case 0xABFC: +case 0xABFD: +case 0xABFE: +case 0xABFF: +case 0xAC00: +case 0xAC01: +case 0xAC02: +case 0xAC03: +case 0xAC04: +case 0xAC05: +case 0xAC06: +case 0xAC07: +case 0xAC08: +case 0xAC09: +case 0xAC0A: +case 0xAC0B: +case 0xAC0C: +case 0xAC0D: +case 0xAC0E: +case 0xAC0F: +case 0xAC10: +case 0xAC11: +case 0xAC12: +case 0xAC13: +case 0xAC14: +case 0xAC15: +case 0xAC16: +case 0xAC17: +case 0xAC18: +case 0xAC19: +case 0xAC1A: +case 0xAC1B: +case 0xAC1C: +case 0xAC1D: +case 0xAC1E: +case 0xAC1F: +case 0xAC20: +case 0xAC21: +case 0xAC22: +case 0xAC23: +case 0xAC24: +case 0xAC25: +case 0xAC26: +case 0xAC27: +case 0xAC28: +case 0xAC29: +case 0xAC2A: +case 0xAC2B: +case 0xAC2C: +case 0xAC2D: +case 0xAC2E: +case 0xAC2F: +case 0xAC30: +case 0xAC31: +case 0xAC32: +case 0xAC33: +case 0xAC34: +case 0xAC35: +case 0xAC36: +case 0xAC37: +case 0xAC38: +case 0xAC39: +case 0xAC3A: +case 0xAC3B: +case 0xAC3C: +case 0xAC3D: +case 0xAC3E: +case 0xAC3F: +case 0xAC40: +case 0xAC41: +case 0xAC42: +case 0xAC43: +case 0xAC44: +case 0xAC45: +case 0xAC46: +case 0xAC47: +case 0xAC48: +case 0xAC49: +case 0xAC4A: +case 0xAC4B: +case 0xAC4C: +case 0xAC4D: +case 0xAC4E: +case 0xAC4F: +case 0xAC50: +case 0xAC51: +case 0xAC52: +case 0xAC53: +case 0xAC54: +case 0xAC55: +case 0xAC56: +case 0xAC57: +case 0xAC58: +case 0xAC59: +case 0xAC5A: +case 0xAC5B: +case 0xAC5C: +case 0xAC5D: +case 0xAC5E: +case 0xAC5F: +case 0xAC60: +case 0xAC61: +case 0xAC62: +case 0xAC63: +case 0xAC64: +case 0xAC65: +case 0xAC66: +case 0xAC67: +case 0xAC68: +case 0xAC69: +case 0xAC6A: +case 0xAC6B: +case 0xAC6C: +case 0xAC6D: +case 0xAC6E: +case 0xAC6F: +case 0xAC70: +case 0xAC71: +case 0xAC72: +case 0xAC73: +case 0xAC74: +case 0xAC75: +case 0xAC76: +case 0xAC77: +case 0xAC78: +case 0xAC79: +case 0xAC7A: +case 0xAC7B: +case 0xAC7C: +case 0xAC7D: +case 0xAC7E: +case 0xAC7F: +case 0xAC80: +case 0xAC81: +case 0xAC82: +case 0xAC83: +case 0xAC84: +case 0xAC85: +case 0xAC86: +case 0xAC87: +case 0xAC88: +case 0xAC89: +case 0xAC8A: +case 0xAC8B: +case 0xAC8C: +case 0xAC8D: +case 0xAC8E: +case 0xAC8F: +case 0xAC90: +case 0xAC91: +case 0xAC92: +case 0xAC93: +case 0xAC94: +case 0xAC95: +case 0xAC96: +case 0xAC97: +case 0xAC98: +case 0xAC99: +case 0xAC9A: +case 0xAC9B: +case 0xAC9C: +case 0xAC9D: +case 0xAC9E: +case 0xAC9F: +case 0xACA0: +case 0xACA1: +case 0xACA2: +case 0xACA3: +case 0xACA4: +case 0xACA5: +case 0xACA6: +case 0xACA7: +case 0xACA8: +case 0xACA9: +case 0xACAA: +case 0xACAB: +case 0xACAC: +case 0xACAD: +case 0xACAE: +case 0xACAF: +case 0xACB0: +case 0xACB1: +case 0xACB2: +case 0xACB3: +case 0xACB4: +case 0xACB5: +case 0xACB6: +case 0xACB7: +case 0xACB8: +case 0xACB9: +case 0xACBA: +case 0xACBB: +case 0xACBC: +case 0xACBD: +case 0xACBE: +case 0xACBF: +case 0xACC0: +case 0xACC1: +case 0xACC2: +case 0xACC3: +case 0xACC4: +case 0xACC5: +case 0xACC6: +case 0xACC7: +case 0xACC8: +case 0xACC9: +case 0xACCA: +case 0xACCB: +case 0xACCC: +case 0xACCD: +case 0xACCE: +case 0xACCF: +case 0xACD0: +case 0xACD1: +case 0xACD2: +case 0xACD3: +case 0xACD4: +case 0xACD5: +case 0xACD6: +case 0xACD7: +case 0xACD8: +case 0xACD9: +case 0xACDA: +case 0xACDB: +case 0xACDC: +case 0xACDD: +case 0xACDE: +case 0xACDF: +case 0xACE0: +case 0xACE1: +case 0xACE2: +case 0xACE3: +case 0xACE4: +case 0xACE5: +case 0xACE6: +case 0xACE7: +case 0xACE8: +case 0xACE9: +case 0xACEA: +case 0xACEB: +case 0xACEC: +case 0xACED: +case 0xACEE: +case 0xACEF: +case 0xACF0: +case 0xACF1: +case 0xACF2: +case 0xACF3: +case 0xACF4: +case 0xACF5: +case 0xACF6: +case 0xACF7: +case 0xACF8: +case 0xACF9: +case 0xACFA: +case 0xACFB: +case 0xACFC: +case 0xACFD: +case 0xACFE: +case 0xACFF: +case 0xAD00: +case 0xAD01: +case 0xAD02: +case 0xAD03: +case 0xAD04: +case 0xAD05: +case 0xAD06: +case 0xAD07: +case 0xAD08: +case 0xAD09: +case 0xAD0A: +case 0xAD0B: +case 0xAD0C: +case 0xAD0D: +case 0xAD0E: +case 0xAD0F: +case 0xAD10: +case 0xAD11: +case 0xAD12: +case 0xAD13: +case 0xAD14: +case 0xAD15: +case 0xAD16: +case 0xAD17: +case 0xAD18: +case 0xAD19: +case 0xAD1A: +case 0xAD1B: +case 0xAD1C: +case 0xAD1D: +case 0xAD1E: +case 0xAD1F: +case 0xAD20: +case 0xAD21: +case 0xAD22: +case 0xAD23: +case 0xAD24: +case 0xAD25: +case 0xAD26: +case 0xAD27: +case 0xAD28: +case 0xAD29: +case 0xAD2A: +case 0xAD2B: +case 0xAD2C: +case 0xAD2D: +case 0xAD2E: +case 0xAD2F: +case 0xAD30: +case 0xAD31: +case 0xAD32: +case 0xAD33: +case 0xAD34: +case 0xAD35: +case 0xAD36: +case 0xAD37: +case 0xAD38: +case 0xAD39: +case 0xAD3A: +case 0xAD3B: +case 0xAD3C: +case 0xAD3D: +case 0xAD3E: +case 0xAD3F: +case 0xAD40: +case 0xAD41: +case 0xAD42: +case 0xAD43: +case 0xAD44: +case 0xAD45: +case 0xAD46: +case 0xAD47: +case 0xAD48: +case 0xAD49: +case 0xAD4A: +case 0xAD4B: +case 0xAD4C: +case 0xAD4D: +case 0xAD4E: +case 0xAD4F: +case 0xAD50: +case 0xAD51: +case 0xAD52: +case 0xAD53: +case 0xAD54: +case 0xAD55: +case 0xAD56: +case 0xAD57: +case 0xAD58: +case 0xAD59: +case 0xAD5A: +case 0xAD5B: +case 0xAD5C: +case 0xAD5D: +case 0xAD5E: +case 0xAD5F: +case 0xAD60: +case 0xAD61: +case 0xAD62: +case 0xAD63: +case 0xAD64: +case 0xAD65: +case 0xAD66: +case 0xAD67: +case 0xAD68: +case 0xAD69: +case 0xAD6A: +case 0xAD6B: +case 0xAD6C: +case 0xAD6D: +case 0xAD6E: +case 0xAD6F: +case 0xAD70: +case 0xAD71: +case 0xAD72: +case 0xAD73: +case 0xAD74: +case 0xAD75: +case 0xAD76: +case 0xAD77: +case 0xAD78: +case 0xAD79: +case 0xAD7A: +case 0xAD7B: +case 0xAD7C: +case 0xAD7D: +case 0xAD7E: +case 0xAD7F: +case 0xAD80: +case 0xAD81: +case 0xAD82: +case 0xAD83: +case 0xAD84: +case 0xAD85: +case 0xAD86: +case 0xAD87: +case 0xAD88: +case 0xAD89: +case 0xAD8A: +case 0xAD8B: +case 0xAD8C: +case 0xAD8D: +case 0xAD8E: +case 0xAD8F: +case 0xAD90: +case 0xAD91: +case 0xAD92: +case 0xAD93: +case 0xAD94: +case 0xAD95: +case 0xAD96: +case 0xAD97: +case 0xAD98: +case 0xAD99: +case 0xAD9A: +case 0xAD9B: +case 0xAD9C: +case 0xAD9D: +case 0xAD9E: +case 0xAD9F: +case 0xADA0: +case 0xADA1: +case 0xADA2: +case 0xADA3: +case 0xADA4: +case 0xADA5: +case 0xADA6: +case 0xADA7: +case 0xADA8: +case 0xADA9: +case 0xADAA: +case 0xADAB: +case 0xADAC: +case 0xADAD: +case 0xADAE: +case 0xADAF: +case 0xADB0: +case 0xADB1: +case 0xADB2: +case 0xADB3: +case 0xADB4: +case 0xADB5: +case 0xADB6: +case 0xADB7: +case 0xADB8: +case 0xADB9: +case 0xADBA: +case 0xADBB: +case 0xADBC: +case 0xADBD: +case 0xADBE: +case 0xADBF: +case 0xADC0: +case 0xADC1: +case 0xADC2: +case 0xADC3: +case 0xADC4: +case 0xADC5: +case 0xADC6: +case 0xADC7: +case 0xADC8: +case 0xADC9: +case 0xADCA: +case 0xADCB: +case 0xADCC: +case 0xADCD: +case 0xADCE: +case 0xADCF: +case 0xADD0: +case 0xADD1: +case 0xADD2: +case 0xADD3: +case 0xADD4: +case 0xADD5: +case 0xADD6: +case 0xADD7: +case 0xADD8: +case 0xADD9: +case 0xADDA: +case 0xADDB: +case 0xADDC: +case 0xADDD: +case 0xADDE: +case 0xADDF: +case 0xADE0: +case 0xADE1: +case 0xADE2: +case 0xADE3: +case 0xADE4: +case 0xADE5: +case 0xADE6: +case 0xADE7: +case 0xADE8: +case 0xADE9: +case 0xADEA: +case 0xADEB: +case 0xADEC: +case 0xADED: +case 0xADEE: +case 0xADEF: +case 0xADF0: +case 0xADF1: +case 0xADF2: +case 0xADF3: +case 0xADF4: +case 0xADF5: +case 0xADF6: +case 0xADF7: +case 0xADF8: +case 0xADF9: +case 0xADFA: +case 0xADFB: +case 0xADFC: +case 0xADFD: +case 0xADFE: +case 0xADFF: +case 0xAE00: +case 0xAE01: +case 0xAE02: +case 0xAE03: +case 0xAE04: +case 0xAE05: +case 0xAE06: +case 0xAE07: +case 0xAE08: +case 0xAE09: +case 0xAE0A: +case 0xAE0B: +case 0xAE0C: +case 0xAE0D: +case 0xAE0E: +case 0xAE0F: +case 0xAE10: +case 0xAE11: +case 0xAE12: +case 0xAE13: +case 0xAE14: +case 0xAE15: +case 0xAE16: +case 0xAE17: +case 0xAE18: +case 0xAE19: +case 0xAE1A: +case 0xAE1B: +case 0xAE1C: +case 0xAE1D: +case 0xAE1E: +case 0xAE1F: +case 0xAE20: +case 0xAE21: +case 0xAE22: +case 0xAE23: +case 0xAE24: +case 0xAE25: +case 0xAE26: +case 0xAE27: +case 0xAE28: +case 0xAE29: +case 0xAE2A: +case 0xAE2B: +case 0xAE2C: +case 0xAE2D: +case 0xAE2E: +case 0xAE2F: +case 0xAE30: +case 0xAE31: +case 0xAE32: +case 0xAE33: +case 0xAE34: +case 0xAE35: +case 0xAE36: +case 0xAE37: +case 0xAE38: +case 0xAE39: +case 0xAE3A: +case 0xAE3B: +case 0xAE3C: +case 0xAE3D: +case 0xAE3E: +case 0xAE3F: +case 0xAE40: +case 0xAE41: +case 0xAE42: +case 0xAE43: +case 0xAE44: +case 0xAE45: +case 0xAE46: +case 0xAE47: +case 0xAE48: +case 0xAE49: +case 0xAE4A: +case 0xAE4B: +case 0xAE4C: +case 0xAE4D: +case 0xAE4E: +case 0xAE4F: +case 0xAE50: +case 0xAE51: +case 0xAE52: +case 0xAE53: +case 0xAE54: +case 0xAE55: +case 0xAE56: +case 0xAE57: +case 0xAE58: +case 0xAE59: +case 0xAE5A: +case 0xAE5B: +case 0xAE5C: +case 0xAE5D: +case 0xAE5E: +case 0xAE5F: +case 0xAE60: +case 0xAE61: +case 0xAE62: +case 0xAE63: +case 0xAE64: +case 0xAE65: +case 0xAE66: +case 0xAE67: +case 0xAE68: +case 0xAE69: +case 0xAE6A: +case 0xAE6B: +case 0xAE6C: +case 0xAE6D: +case 0xAE6E: +case 0xAE6F: +case 0xAE70: +case 0xAE71: +case 0xAE72: +case 0xAE73: +case 0xAE74: +case 0xAE75: +case 0xAE76: +case 0xAE77: +case 0xAE78: +case 0xAE79: +case 0xAE7A: +case 0xAE7B: +case 0xAE7C: +case 0xAE7D: +case 0xAE7E: +case 0xAE7F: +case 0xAE80: +case 0xAE81: +case 0xAE82: +case 0xAE83: +case 0xAE84: +case 0xAE85: +case 0xAE86: +case 0xAE87: +case 0xAE88: +case 0xAE89: +case 0xAE8A: +case 0xAE8B: +case 0xAE8C: +case 0xAE8D: +case 0xAE8E: +case 0xAE8F: +case 0xAE90: +case 0xAE91: +case 0xAE92: +case 0xAE93: +case 0xAE94: +case 0xAE95: +case 0xAE96: +case 0xAE97: +case 0xAE98: +case 0xAE99: +case 0xAE9A: +case 0xAE9B: +case 0xAE9C: +case 0xAE9D: +case 0xAE9E: +case 0xAE9F: +case 0xAEA0: +case 0xAEA1: +case 0xAEA2: +case 0xAEA3: +case 0xAEA4: +case 0xAEA5: +case 0xAEA6: +case 0xAEA7: +case 0xAEA8: +case 0xAEA9: +case 0xAEAA: +case 0xAEAB: +case 0xAEAC: +case 0xAEAD: +case 0xAEAE: +case 0xAEAF: +case 0xAEB0: +case 0xAEB1: +case 0xAEB2: +case 0xAEB3: +case 0xAEB4: +case 0xAEB5: +case 0xAEB6: +case 0xAEB7: +case 0xAEB8: +case 0xAEB9: +case 0xAEBA: +case 0xAEBB: +case 0xAEBC: +case 0xAEBD: +case 0xAEBE: +case 0xAEBF: +case 0xAEC0: +case 0xAEC1: +case 0xAEC2: +case 0xAEC3: +case 0xAEC4: +case 0xAEC5: +case 0xAEC6: +case 0xAEC7: +case 0xAEC8: +case 0xAEC9: +case 0xAECA: +case 0xAECB: +case 0xAECC: +case 0xAECD: +case 0xAECE: +case 0xAECF: +case 0xAED0: +case 0xAED1: +case 0xAED2: +case 0xAED3: +case 0xAED4: +case 0xAED5: +case 0xAED6: +case 0xAED7: +case 0xAED8: +case 0xAED9: +case 0xAEDA: +case 0xAEDB: +case 0xAEDC: +case 0xAEDD: +case 0xAEDE: +case 0xAEDF: +case 0xAEE0: +case 0xAEE1: +case 0xAEE2: +case 0xAEE3: +case 0xAEE4: +case 0xAEE5: +case 0xAEE6: +case 0xAEE7: +case 0xAEE8: +case 0xAEE9: +case 0xAEEA: +case 0xAEEB: +case 0xAEEC: +case 0xAEED: +case 0xAEEE: +case 0xAEEF: +case 0xAEF0: +case 0xAEF1: +case 0xAEF2: +case 0xAEF3: +case 0xAEF4: +case 0xAEF5: +case 0xAEF6: +case 0xAEF7: +case 0xAEF8: +case 0xAEF9: +case 0xAEFA: +case 0xAEFB: +case 0xAEFC: +case 0xAEFD: +case 0xAEFE: +case 0xAEFF: +case 0xAF00: +case 0xAF01: +case 0xAF02: +case 0xAF03: +case 0xAF04: +case 0xAF05: +case 0xAF06: +case 0xAF07: +case 0xAF08: +case 0xAF09: +case 0xAF0A: +case 0xAF0B: +case 0xAF0C: +case 0xAF0D: +case 0xAF0E: +case 0xAF0F: +case 0xAF10: +case 0xAF11: +case 0xAF12: +case 0xAF13: +case 0xAF14: +case 0xAF15: +case 0xAF16: +case 0xAF17: +case 0xAF18: +case 0xAF19: +case 0xAF1A: +case 0xAF1B: +case 0xAF1C: +case 0xAF1D: +case 0xAF1E: +case 0xAF1F: +case 0xAF20: +case 0xAF21: +case 0xAF22: +case 0xAF23: +case 0xAF24: +case 0xAF25: +case 0xAF26: +case 0xAF27: +case 0xAF28: +case 0xAF29: +case 0xAF2A: +case 0xAF2B: +case 0xAF2C: +case 0xAF2D: +case 0xAF2E: +case 0xAF2F: +case 0xAF30: +case 0xAF31: +case 0xAF32: +case 0xAF33: +case 0xAF34: +case 0xAF35: +case 0xAF36: +case 0xAF37: +case 0xAF38: +case 0xAF39: +case 0xAF3A: +case 0xAF3B: +case 0xAF3C: +case 0xAF3D: +case 0xAF3E: +case 0xAF3F: +case 0xAF40: +case 0xAF41: +case 0xAF42: +case 0xAF43: +case 0xAF44: +case 0xAF45: +case 0xAF46: +case 0xAF47: +case 0xAF48: +case 0xAF49: +case 0xAF4A: +case 0xAF4B: +case 0xAF4C: +case 0xAF4D: +case 0xAF4E: +case 0xAF4F: +case 0xAF50: +case 0xAF51: +case 0xAF52: +case 0xAF53: +case 0xAF54: +case 0xAF55: +case 0xAF56: +case 0xAF57: +case 0xAF58: +case 0xAF59: +case 0xAF5A: +case 0xAF5B: +case 0xAF5C: +case 0xAF5D: +case 0xAF5E: +case 0xAF5F: +case 0xAF60: +case 0xAF61: +case 0xAF62: +case 0xAF63: +case 0xAF64: +case 0xAF65: +case 0xAF66: +case 0xAF67: +case 0xAF68: +case 0xAF69: +case 0xAF6A: +case 0xAF6B: +case 0xAF6C: +case 0xAF6D: +case 0xAF6E: +case 0xAF6F: +case 0xAF70: +case 0xAF71: +case 0xAF72: +case 0xAF73: +case 0xAF74: +case 0xAF75: +case 0xAF76: +case 0xAF77: +case 0xAF78: +case 0xAF79: +case 0xAF7A: +case 0xAF7B: +case 0xAF7C: +case 0xAF7D: +case 0xAF7E: +case 0xAF7F: +case 0xAF80: +case 0xAF81: +case 0xAF82: +case 0xAF83: +case 0xAF84: +case 0xAF85: +case 0xAF86: +case 0xAF87: +case 0xAF88: +case 0xAF89: +case 0xAF8A: +case 0xAF8B: +case 0xAF8C: +case 0xAF8D: +case 0xAF8E: +case 0xAF8F: +case 0xAF90: +case 0xAF91: +case 0xAF92: +case 0xAF93: +case 0xAF94: +case 0xAF95: +case 0xAF96: +case 0xAF97: +case 0xAF98: +case 0xAF99: +case 0xAF9A: +case 0xAF9B: +case 0xAF9C: +case 0xAF9D: +case 0xAF9E: +case 0xAF9F: +case 0xAFA0: +case 0xAFA1: +case 0xAFA2: +case 0xAFA3: +case 0xAFA4: +case 0xAFA5: +case 0xAFA6: +case 0xAFA7: +case 0xAFA8: +case 0xAFA9: +case 0xAFAA: +case 0xAFAB: +case 0xAFAC: +case 0xAFAD: +case 0xAFAE: +case 0xAFAF: +case 0xAFB0: +case 0xAFB1: +case 0xAFB2: +case 0xAFB3: +case 0xAFB4: +case 0xAFB5: +case 0xAFB6: +case 0xAFB7: +case 0xAFB8: +case 0xAFB9: +case 0xAFBA: +case 0xAFBB: +case 0xAFBC: +case 0xAFBD: +case 0xAFBE: +case 0xAFBF: +case 0xAFC0: +case 0xAFC1: +case 0xAFC2: +case 0xAFC3: +case 0xAFC4: +case 0xAFC5: +case 0xAFC6: +case 0xAFC7: +case 0xAFC8: +case 0xAFC9: +case 0xAFCA: +case 0xAFCB: +case 0xAFCC: +case 0xAFCD: +case 0xAFCE: +case 0xAFCF: +case 0xAFD0: +case 0xAFD1: +case 0xAFD2: +case 0xAFD3: +case 0xAFD4: +case 0xAFD5: +case 0xAFD6: +case 0xAFD7: +case 0xAFD8: +case 0xAFD9: +case 0xAFDA: +case 0xAFDB: +case 0xAFDC: +case 0xAFDD: +case 0xAFDE: +case 0xAFDF: +case 0xAFE0: +case 0xAFE1: +case 0xAFE2: +case 0xAFE3: +case 0xAFE4: +case 0xAFE5: +case 0xAFE6: +case 0xAFE7: +case 0xAFE8: +case 0xAFE9: +case 0xAFEA: +case 0xAFEB: +case 0xAFEC: +case 0xAFED: +case 0xAFEE: +case 0xAFEF: +case 0xAFF0: +case 0xAFF1: +case 0xAFF2: +case 0xAFF3: +case 0xAFF4: +case 0xAFF5: +case 0xAFF6: +case 0xAFF7: +case 0xAFF8: +case 0xAFF9: +case 0xAFFA: +case 0xAFFB: +case 0xAFFC: +case 0xAFFD: +case 0xAFFE: +case 0xAFFF: + +// 1010 +case 0xA000: +{ + u32 res; + PC -= 2; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_1010_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) +} +RET(4) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_opB.inc b/libmednahawk/src/hw_cpu/c68k/c68k_opB.inc new file mode 100644 index 0000000000..71bbef6021 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_opB.inc @@ -0,0 +1,5845 @@ +case 0xB200: +case 0xB400: +case 0xB600: +case 0xB800: +case 0xBA00: +case 0xBC00: +case 0xBE00: +case 0xB001: +case 0xB201: +case 0xB401: +case 0xB601: +case 0xB801: +case 0xBA01: +case 0xBC01: +case 0xBE01: +case 0xB002: +case 0xB202: +case 0xB402: +case 0xB602: +case 0xB802: +case 0xBA02: +case 0xBC02: +case 0xBE02: +case 0xB003: +case 0xB203: +case 0xB403: +case 0xB603: +case 0xB803: +case 0xBA03: +case 0xBC03: +case 0xBE03: +case 0xB004: +case 0xB204: +case 0xB404: +case 0xB604: +case 0xB804: +case 0xBA04: +case 0xBC04: +case 0xBE04: +case 0xB005: +case 0xB205: +case 0xB405: +case 0xB605: +case 0xB805: +case 0xBA05: +case 0xBC05: +case 0xBE05: +case 0xB006: +case 0xB206: +case 0xB406: +case 0xB606: +case 0xB806: +case 0xBA06: +case 0xBC06: +case 0xBE06: +case 0xB007: +case 0xB207: +case 0xB407: +case 0xB607: +case 0xB807: +case 0xBA07: +case 0xBC07: +case 0xBE07: + +// CMP +case 0xB000: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB208: +case 0xB408: +case 0xB608: +case 0xB808: +case 0xBA08: +case 0xBC08: +case 0xBE08: +case 0xB009: +case 0xB209: +case 0xB409: +case 0xB609: +case 0xB809: +case 0xBA09: +case 0xBC09: +case 0xBE09: +case 0xB00A: +case 0xB20A: +case 0xB40A: +case 0xB60A: +case 0xB80A: +case 0xBA0A: +case 0xBC0A: +case 0xBE0A: +case 0xB00B: +case 0xB20B: +case 0xB40B: +case 0xB60B: +case 0xB80B: +case 0xBA0B: +case 0xBC0B: +case 0xBE0B: +case 0xB00C: +case 0xB20C: +case 0xB40C: +case 0xB60C: +case 0xB80C: +case 0xBA0C: +case 0xBC0C: +case 0xBE0C: +case 0xB00D: +case 0xB20D: +case 0xB40D: +case 0xB60D: +case 0xB80D: +case 0xBA0D: +case 0xBC0D: +case 0xBE0D: +case 0xB00E: +case 0xB20E: +case 0xB40E: +case 0xB60E: +case 0xB80E: +case 0xBA0E: +case 0xBC0E: +case 0xBE0E: +case 0xB00F: +case 0xB20F: +case 0xB40F: +case 0xB60F: +case 0xB80F: +case 0xBA0F: +case 0xBC0F: +case 0xBE0F: + +// CMP +case 0xB008: +{ + u32 res; + u32 dst; + u32 src; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB210: +case 0xB410: +case 0xB610: +case 0xB810: +case 0xBA10: +case 0xBC10: +case 0xBE10: +case 0xB011: +case 0xB211: +case 0xB411: +case 0xB611: +case 0xB811: +case 0xBA11: +case 0xBC11: +case 0xBE11: +case 0xB012: +case 0xB212: +case 0xB412: +case 0xB612: +case 0xB812: +case 0xBA12: +case 0xBC12: +case 0xBE12: +case 0xB013: +case 0xB213: +case 0xB413: +case 0xB613: +case 0xB813: +case 0xBA13: +case 0xBC13: +case 0xBE13: +case 0xB014: +case 0xB214: +case 0xB414: +case 0xB614: +case 0xB814: +case 0xBA14: +case 0xBC14: +case 0xBE14: +case 0xB015: +case 0xB215: +case 0xB415: +case 0xB615: +case 0xB815: +case 0xBA15: +case 0xBC15: +case 0xBE15: +case 0xB016: +case 0xB216: +case 0xB416: +case 0xB616: +case 0xB816: +case 0xBA16: +case 0xBC16: +case 0xBE16: +case 0xB017: +case 0xB217: +case 0xB417: +case 0xB617: +case 0xB817: +case 0xBA17: +case 0xBC17: +case 0xBE17: + +// CMP +case 0xB010: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB218: +case 0xB418: +case 0xB618: +case 0xB818: +case 0xBA18: +case 0xBC18: +case 0xBE18: +case 0xB019: +case 0xB219: +case 0xB419: +case 0xB619: +case 0xB819: +case 0xBA19: +case 0xBC19: +case 0xBE19: +case 0xB01A: +case 0xB21A: +case 0xB41A: +case 0xB61A: +case 0xB81A: +case 0xBA1A: +case 0xBC1A: +case 0xBE1A: +case 0xB01B: +case 0xB21B: +case 0xB41B: +case 0xB61B: +case 0xB81B: +case 0xBA1B: +case 0xBC1B: +case 0xBE1B: +case 0xB01C: +case 0xB21C: +case 0xB41C: +case 0xB61C: +case 0xB81C: +case 0xBA1C: +case 0xBC1C: +case 0xBE1C: +case 0xB01D: +case 0xB21D: +case 0xB41D: +case 0xB61D: +case 0xB81D: +case 0xBA1D: +case 0xBC1D: +case 0xBE1D: +case 0xB01E: +case 0xB21E: +case 0xB41E: +case 0xB61E: +case 0xB81E: +case 0xBA1E: +case 0xBC1E: +case 0xBE1E: + +// CMP +case 0xB018: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB220: +case 0xB420: +case 0xB620: +case 0xB820: +case 0xBA20: +case 0xBC20: +case 0xBE20: +case 0xB021: +case 0xB221: +case 0xB421: +case 0xB621: +case 0xB821: +case 0xBA21: +case 0xBC21: +case 0xBE21: +case 0xB022: +case 0xB222: +case 0xB422: +case 0xB622: +case 0xB822: +case 0xBA22: +case 0xBC22: +case 0xBE22: +case 0xB023: +case 0xB223: +case 0xB423: +case 0xB623: +case 0xB823: +case 0xBA23: +case 0xBC23: +case 0xBE23: +case 0xB024: +case 0xB224: +case 0xB424: +case 0xB624: +case 0xB824: +case 0xBA24: +case 0xBC24: +case 0xBE24: +case 0xB025: +case 0xB225: +case 0xB425: +case 0xB625: +case 0xB825: +case 0xBA25: +case 0xBC25: +case 0xBE25: +case 0xB026: +case 0xB226: +case 0xB426: +case 0xB626: +case 0xB826: +case 0xBA26: +case 0xBC26: +case 0xBE26: + +// CMP +case 0xB020: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB228: +case 0xB428: +case 0xB628: +case 0xB828: +case 0xBA28: +case 0xBC28: +case 0xBE28: +case 0xB029: +case 0xB229: +case 0xB429: +case 0xB629: +case 0xB829: +case 0xBA29: +case 0xBC29: +case 0xBE29: +case 0xB02A: +case 0xB22A: +case 0xB42A: +case 0xB62A: +case 0xB82A: +case 0xBA2A: +case 0xBC2A: +case 0xBE2A: +case 0xB02B: +case 0xB22B: +case 0xB42B: +case 0xB62B: +case 0xB82B: +case 0xBA2B: +case 0xBC2B: +case 0xBE2B: +case 0xB02C: +case 0xB22C: +case 0xB42C: +case 0xB62C: +case 0xB82C: +case 0xBA2C: +case 0xBC2C: +case 0xBE2C: +case 0xB02D: +case 0xB22D: +case 0xB42D: +case 0xB62D: +case 0xB82D: +case 0xBA2D: +case 0xBC2D: +case 0xBE2D: +case 0xB02E: +case 0xB22E: +case 0xB42E: +case 0xB62E: +case 0xB82E: +case 0xBA2E: +case 0xBC2E: +case 0xBE2E: +case 0xB02F: +case 0xB22F: +case 0xB42F: +case 0xB62F: +case 0xB82F: +case 0xBA2F: +case 0xBC2F: +case 0xBE2F: + +// CMP +case 0xB028: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB230: +case 0xB430: +case 0xB630: +case 0xB830: +case 0xBA30: +case 0xBC30: +case 0xBE30: +case 0xB031: +case 0xB231: +case 0xB431: +case 0xB631: +case 0xB831: +case 0xBA31: +case 0xBC31: +case 0xBE31: +case 0xB032: +case 0xB232: +case 0xB432: +case 0xB632: +case 0xB832: +case 0xBA32: +case 0xBC32: +case 0xBE32: +case 0xB033: +case 0xB233: +case 0xB433: +case 0xB633: +case 0xB833: +case 0xBA33: +case 0xBC33: +case 0xBE33: +case 0xB034: +case 0xB234: +case 0xB434: +case 0xB634: +case 0xB834: +case 0xBA34: +case 0xBC34: +case 0xBE34: +case 0xB035: +case 0xB235: +case 0xB435: +case 0xB635: +case 0xB835: +case 0xBA35: +case 0xBC35: +case 0xBE35: +case 0xB036: +case 0xB236: +case 0xB436: +case 0xB636: +case 0xB836: +case 0xBA36: +case 0xBC36: +case 0xBE36: +case 0xB037: +case 0xB237: +case 0xB437: +case 0xB637: +case 0xB837: +case 0xBA37: +case 0xBC37: +case 0xBE37: + +// CMP +case 0xB030: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB238: +case 0xB438: +case 0xB638: +case 0xB838: +case 0xBA38: +case 0xBC38: +case 0xBE38: + +// CMP +case 0xB038: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB239: +case 0xB439: +case 0xB639: +case 0xB839: +case 0xBA39: +case 0xBC39: +case 0xBE39: + +// CMP +case 0xB039: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB23A: +case 0xB43A: +case 0xB63A: +case 0xB83A: +case 0xBA3A: +case 0xBC3A: +case 0xBE3A: + +// CMP +case 0xB03A: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB23B: +case 0xB43B: +case 0xB63B: +case 0xB83B: +case 0xBA3B: +case 0xBC3B: +case 0xBE3B: + +// CMP +case 0xB03B: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB23C: +case 0xB43C: +case 0xB63C: +case 0xB83C: +case 0xBA3C: +case 0xBC3C: +case 0xBE3C: + +// CMP +case 0xB03C: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_BYTE; + PC += 2; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(8) +case 0xB21F: +case 0xB41F: +case 0xB61F: +case 0xB81F: +case 0xBA1F: +case 0xBC1F: +case 0xBE1F: + +// CMP +case 0xB01F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB227: +case 0xB427: +case 0xB627: +case 0xB827: +case 0xBA27: +case 0xBC27: +case 0xBE27: + +// CMP +case 0xB027: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB240: +case 0xB440: +case 0xB640: +case 0xB840: +case 0xBA40: +case 0xBC40: +case 0xBE40: +case 0xB041: +case 0xB241: +case 0xB441: +case 0xB641: +case 0xB841: +case 0xBA41: +case 0xBC41: +case 0xBE41: +case 0xB042: +case 0xB242: +case 0xB442: +case 0xB642: +case 0xB842: +case 0xBA42: +case 0xBC42: +case 0xBE42: +case 0xB043: +case 0xB243: +case 0xB443: +case 0xB643: +case 0xB843: +case 0xBA43: +case 0xBC43: +case 0xBE43: +case 0xB044: +case 0xB244: +case 0xB444: +case 0xB644: +case 0xB844: +case 0xBA44: +case 0xBC44: +case 0xBE44: +case 0xB045: +case 0xB245: +case 0xB445: +case 0xB645: +case 0xB845: +case 0xBA45: +case 0xBC45: +case 0xBE45: +case 0xB046: +case 0xB246: +case 0xB446: +case 0xB646: +case 0xB846: +case 0xBA46: +case 0xBC46: +case 0xBE46: +case 0xB047: +case 0xB247: +case 0xB447: +case 0xB647: +case 0xB847: +case 0xBA47: +case 0xBC47: +case 0xBE47: + +// CMP +case 0xB040: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB248: +case 0xB448: +case 0xB648: +case 0xB848: +case 0xBA48: +case 0xBC48: +case 0xBE48: +case 0xB049: +case 0xB249: +case 0xB449: +case 0xB649: +case 0xB849: +case 0xBA49: +case 0xBC49: +case 0xBE49: +case 0xB04A: +case 0xB24A: +case 0xB44A: +case 0xB64A: +case 0xB84A: +case 0xBA4A: +case 0xBC4A: +case 0xBE4A: +case 0xB04B: +case 0xB24B: +case 0xB44B: +case 0xB64B: +case 0xB84B: +case 0xBA4B: +case 0xBC4B: +case 0xBE4B: +case 0xB04C: +case 0xB24C: +case 0xB44C: +case 0xB64C: +case 0xB84C: +case 0xBA4C: +case 0xBC4C: +case 0xBE4C: +case 0xB04D: +case 0xB24D: +case 0xB44D: +case 0xB64D: +case 0xB84D: +case 0xBA4D: +case 0xBC4D: +case 0xBE4D: +case 0xB04E: +case 0xB24E: +case 0xB44E: +case 0xB64E: +case 0xB84E: +case 0xBA4E: +case 0xBC4E: +case 0xBE4E: +case 0xB04F: +case 0xB24F: +case 0xB44F: +case 0xB64F: +case 0xB84F: +case 0xBA4F: +case 0xBC4F: +case 0xBE4F: + +// CMP +case 0xB048: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->A[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB250: +case 0xB450: +case 0xB650: +case 0xB850: +case 0xBA50: +case 0xBC50: +case 0xBE50: +case 0xB051: +case 0xB251: +case 0xB451: +case 0xB651: +case 0xB851: +case 0xBA51: +case 0xBC51: +case 0xBE51: +case 0xB052: +case 0xB252: +case 0xB452: +case 0xB652: +case 0xB852: +case 0xBA52: +case 0xBC52: +case 0xBE52: +case 0xB053: +case 0xB253: +case 0xB453: +case 0xB653: +case 0xB853: +case 0xBA53: +case 0xBC53: +case 0xBE53: +case 0xB054: +case 0xB254: +case 0xB454: +case 0xB654: +case 0xB854: +case 0xBA54: +case 0xBC54: +case 0xBE54: +case 0xB055: +case 0xB255: +case 0xB455: +case 0xB655: +case 0xB855: +case 0xBA55: +case 0xBC55: +case 0xBE55: +case 0xB056: +case 0xB256: +case 0xB456: +case 0xB656: +case 0xB856: +case 0xBA56: +case 0xBC56: +case 0xBE56: +case 0xB057: +case 0xB257: +case 0xB457: +case 0xB657: +case 0xB857: +case 0xBA57: +case 0xBC57: +case 0xBE57: + +// CMP +case 0xB050: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB258: +case 0xB458: +case 0xB658: +case 0xB858: +case 0xBA58: +case 0xBC58: +case 0xBE58: +case 0xB059: +case 0xB259: +case 0xB459: +case 0xB659: +case 0xB859: +case 0xBA59: +case 0xBC59: +case 0xBE59: +case 0xB05A: +case 0xB25A: +case 0xB45A: +case 0xB65A: +case 0xB85A: +case 0xBA5A: +case 0xBC5A: +case 0xBE5A: +case 0xB05B: +case 0xB25B: +case 0xB45B: +case 0xB65B: +case 0xB85B: +case 0xBA5B: +case 0xBC5B: +case 0xBE5B: +case 0xB05C: +case 0xB25C: +case 0xB45C: +case 0xB65C: +case 0xB85C: +case 0xBA5C: +case 0xBC5C: +case 0xBE5C: +case 0xB05D: +case 0xB25D: +case 0xB45D: +case 0xB65D: +case 0xB85D: +case 0xBA5D: +case 0xBC5D: +case 0xBE5D: +case 0xB05E: +case 0xB25E: +case 0xB45E: +case 0xB65E: +case 0xB85E: +case 0xBA5E: +case 0xBC5E: +case 0xBE5E: + +// CMP +case 0xB058: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB260: +case 0xB460: +case 0xB660: +case 0xB860: +case 0xBA60: +case 0xBC60: +case 0xBE60: +case 0xB061: +case 0xB261: +case 0xB461: +case 0xB661: +case 0xB861: +case 0xBA61: +case 0xBC61: +case 0xBE61: +case 0xB062: +case 0xB262: +case 0xB462: +case 0xB662: +case 0xB862: +case 0xBA62: +case 0xBC62: +case 0xBE62: +case 0xB063: +case 0xB263: +case 0xB463: +case 0xB663: +case 0xB863: +case 0xBA63: +case 0xBC63: +case 0xBE63: +case 0xB064: +case 0xB264: +case 0xB464: +case 0xB664: +case 0xB864: +case 0xBA64: +case 0xBC64: +case 0xBE64: +case 0xB065: +case 0xB265: +case 0xB465: +case 0xB665: +case 0xB865: +case 0xBA65: +case 0xBC65: +case 0xBE65: +case 0xB066: +case 0xB266: +case 0xB466: +case 0xB666: +case 0xB866: +case 0xBA66: +case 0xBC66: +case 0xBE66: + +// CMP +case 0xB060: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB268: +case 0xB468: +case 0xB668: +case 0xB868: +case 0xBA68: +case 0xBC68: +case 0xBE68: +case 0xB069: +case 0xB269: +case 0xB469: +case 0xB669: +case 0xB869: +case 0xBA69: +case 0xBC69: +case 0xBE69: +case 0xB06A: +case 0xB26A: +case 0xB46A: +case 0xB66A: +case 0xB86A: +case 0xBA6A: +case 0xBC6A: +case 0xBE6A: +case 0xB06B: +case 0xB26B: +case 0xB46B: +case 0xB66B: +case 0xB86B: +case 0xBA6B: +case 0xBC6B: +case 0xBE6B: +case 0xB06C: +case 0xB26C: +case 0xB46C: +case 0xB66C: +case 0xB86C: +case 0xBA6C: +case 0xBC6C: +case 0xBE6C: +case 0xB06D: +case 0xB26D: +case 0xB46D: +case 0xB66D: +case 0xB86D: +case 0xBA6D: +case 0xBC6D: +case 0xBE6D: +case 0xB06E: +case 0xB26E: +case 0xB46E: +case 0xB66E: +case 0xB86E: +case 0xBA6E: +case 0xBC6E: +case 0xBE6E: +case 0xB06F: +case 0xB26F: +case 0xB46F: +case 0xB66F: +case 0xB86F: +case 0xBA6F: +case 0xBC6F: +case 0xBE6F: + +// CMP +case 0xB068: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB270: +case 0xB470: +case 0xB670: +case 0xB870: +case 0xBA70: +case 0xBC70: +case 0xBE70: +case 0xB071: +case 0xB271: +case 0xB471: +case 0xB671: +case 0xB871: +case 0xBA71: +case 0xBC71: +case 0xBE71: +case 0xB072: +case 0xB272: +case 0xB472: +case 0xB672: +case 0xB872: +case 0xBA72: +case 0xBC72: +case 0xBE72: +case 0xB073: +case 0xB273: +case 0xB473: +case 0xB673: +case 0xB873: +case 0xBA73: +case 0xBC73: +case 0xBE73: +case 0xB074: +case 0xB274: +case 0xB474: +case 0xB674: +case 0xB874: +case 0xBA74: +case 0xBC74: +case 0xBE74: +case 0xB075: +case 0xB275: +case 0xB475: +case 0xB675: +case 0xB875: +case 0xBA75: +case 0xBC75: +case 0xBE75: +case 0xB076: +case 0xB276: +case 0xB476: +case 0xB676: +case 0xB876: +case 0xBA76: +case 0xBC76: +case 0xBE76: +case 0xB077: +case 0xB277: +case 0xB477: +case 0xB677: +case 0xB877: +case 0xBA77: +case 0xBC77: +case 0xBE77: + +// CMP +case 0xB070: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB278: +case 0xB478: +case 0xB678: +case 0xB878: +case 0xBA78: +case 0xBC78: +case 0xBE78: + +// CMP +case 0xB078: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB279: +case 0xB479: +case 0xB679: +case 0xB879: +case 0xBA79: +case 0xBC79: +case 0xBE79: + +// CMP +case 0xB079: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB27A: +case 0xB47A: +case 0xB67A: +case 0xB87A: +case 0xBA7A: +case 0xBC7A: +case 0xBE7A: + +// CMP +case 0xB07A: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB27B: +case 0xB47B: +case 0xB67B: +case 0xB87B: +case 0xBA7B: +case 0xBC7B: +case 0xBE7B: + +// CMP +case 0xB07B: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB27C: +case 0xB47C: +case 0xB67C: +case 0xB87C: +case 0xBA7C: +case 0xBC7C: +case 0xBE7C: + +// CMP +case 0xB07C: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_WORD; + PC += 2; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(8) +case 0xB25F: +case 0xB45F: +case 0xB65F: +case 0xB85F: +case 0xBA5F: +case 0xBC5F: +case 0xBE5F: + +// CMP +case 0xB05F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB267: +case 0xB467: +case 0xB667: +case 0xB867: +case 0xBA67: +case 0xBC67: +case 0xBE67: + +// CMP +case 0xB067: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB280: +case 0xB480: +case 0xB680: +case 0xB880: +case 0xBA80: +case 0xBC80: +case 0xBE80: +case 0xB081: +case 0xB281: +case 0xB481: +case 0xB681: +case 0xB881: +case 0xBA81: +case 0xBC81: +case 0xBE81: +case 0xB082: +case 0xB282: +case 0xB482: +case 0xB682: +case 0xB882: +case 0xBA82: +case 0xBC82: +case 0xBE82: +case 0xB083: +case 0xB283: +case 0xB483: +case 0xB683: +case 0xB883: +case 0xBA83: +case 0xBC83: +case 0xBE83: +case 0xB084: +case 0xB284: +case 0xB484: +case 0xB684: +case 0xB884: +case 0xBA84: +case 0xBC84: +case 0xBE84: +case 0xB085: +case 0xB285: +case 0xB485: +case 0xB685: +case 0xB885: +case 0xBA85: +case 0xBC85: +case 0xBE85: +case 0xB086: +case 0xB286: +case 0xB486: +case 0xB686: +case 0xB886: +case 0xBA86: +case 0xBC86: +case 0xBE86: +case 0xB087: +case 0xB287: +case 0xB487: +case 0xB687: +case 0xB887: +case 0xBA87: +case 0xBC87: +case 0xBE87: + +// CMP +case 0xB080: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB288: +case 0xB488: +case 0xB688: +case 0xB888: +case 0xBA88: +case 0xBC88: +case 0xBE88: +case 0xB089: +case 0xB289: +case 0xB489: +case 0xB689: +case 0xB889: +case 0xBA89: +case 0xBC89: +case 0xBE89: +case 0xB08A: +case 0xB28A: +case 0xB48A: +case 0xB68A: +case 0xB88A: +case 0xBA8A: +case 0xBC8A: +case 0xBE8A: +case 0xB08B: +case 0xB28B: +case 0xB48B: +case 0xB68B: +case 0xB88B: +case 0xBA8B: +case 0xBC8B: +case 0xBE8B: +case 0xB08C: +case 0xB28C: +case 0xB48C: +case 0xB68C: +case 0xB88C: +case 0xBA8C: +case 0xBC8C: +case 0xBE8C: +case 0xB08D: +case 0xB28D: +case 0xB48D: +case 0xB68D: +case 0xB88D: +case 0xBA8D: +case 0xBC8D: +case 0xBE8D: +case 0xB08E: +case 0xB28E: +case 0xB48E: +case 0xB68E: +case 0xB88E: +case 0xBA8E: +case 0xBC8E: +case 0xBE8E: +case 0xB08F: +case 0xB28F: +case 0xB48F: +case 0xB68F: +case 0xB88F: +case 0xBA8F: +case 0xBC8F: +case 0xBE8F: + +// CMP +case 0xB088: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB290: +case 0xB490: +case 0xB690: +case 0xB890: +case 0xBA90: +case 0xBC90: +case 0xBE90: +case 0xB091: +case 0xB291: +case 0xB491: +case 0xB691: +case 0xB891: +case 0xBA91: +case 0xBC91: +case 0xBE91: +case 0xB092: +case 0xB292: +case 0xB492: +case 0xB692: +case 0xB892: +case 0xBA92: +case 0xBC92: +case 0xBE92: +case 0xB093: +case 0xB293: +case 0xB493: +case 0xB693: +case 0xB893: +case 0xBA93: +case 0xBC93: +case 0xBE93: +case 0xB094: +case 0xB294: +case 0xB494: +case 0xB694: +case 0xB894: +case 0xBA94: +case 0xBC94: +case 0xBE94: +case 0xB095: +case 0xB295: +case 0xB495: +case 0xB695: +case 0xB895: +case 0xBA95: +case 0xBC95: +case 0xBE95: +case 0xB096: +case 0xB296: +case 0xB496: +case 0xB696: +case 0xB896: +case 0xBA96: +case 0xBC96: +case 0xBE96: +case 0xB097: +case 0xB297: +case 0xB497: +case 0xB697: +case 0xB897: +case 0xBA97: +case 0xBC97: +case 0xBE97: + +// CMP +case 0xB090: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB298: +case 0xB498: +case 0xB698: +case 0xB898: +case 0xBA98: +case 0xBC98: +case 0xBE98: +case 0xB099: +case 0xB299: +case 0xB499: +case 0xB699: +case 0xB899: +case 0xBA99: +case 0xBC99: +case 0xBE99: +case 0xB09A: +case 0xB29A: +case 0xB49A: +case 0xB69A: +case 0xB89A: +case 0xBA9A: +case 0xBC9A: +case 0xBE9A: +case 0xB09B: +case 0xB29B: +case 0xB49B: +case 0xB69B: +case 0xB89B: +case 0xBA9B: +case 0xBC9B: +case 0xBE9B: +case 0xB09C: +case 0xB29C: +case 0xB49C: +case 0xB69C: +case 0xB89C: +case 0xBA9C: +case 0xBC9C: +case 0xBE9C: +case 0xB09D: +case 0xB29D: +case 0xB49D: +case 0xB69D: +case 0xB89D: +case 0xBA9D: +case 0xBC9D: +case 0xBE9D: +case 0xB09E: +case 0xB29E: +case 0xB49E: +case 0xB69E: +case 0xB89E: +case 0xBA9E: +case 0xBC9E: +case 0xBE9E: + +// CMP +case 0xB098: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2A0: +case 0xB4A0: +case 0xB6A0: +case 0xB8A0: +case 0xBAA0: +case 0xBCA0: +case 0xBEA0: +case 0xB0A1: +case 0xB2A1: +case 0xB4A1: +case 0xB6A1: +case 0xB8A1: +case 0xBAA1: +case 0xBCA1: +case 0xBEA1: +case 0xB0A2: +case 0xB2A2: +case 0xB4A2: +case 0xB6A2: +case 0xB8A2: +case 0xBAA2: +case 0xBCA2: +case 0xBEA2: +case 0xB0A3: +case 0xB2A3: +case 0xB4A3: +case 0xB6A3: +case 0xB8A3: +case 0xBAA3: +case 0xBCA3: +case 0xBEA3: +case 0xB0A4: +case 0xB2A4: +case 0xB4A4: +case 0xB6A4: +case 0xB8A4: +case 0xBAA4: +case 0xBCA4: +case 0xBEA4: +case 0xB0A5: +case 0xB2A5: +case 0xB4A5: +case 0xB6A5: +case 0xB8A5: +case 0xBAA5: +case 0xBCA5: +case 0xBEA5: +case 0xB0A6: +case 0xB2A6: +case 0xB4A6: +case 0xB6A6: +case 0xB8A6: +case 0xBAA6: +case 0xBCA6: +case 0xBEA6: + +// CMP +case 0xB0A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2A8: +case 0xB4A8: +case 0xB6A8: +case 0xB8A8: +case 0xBAA8: +case 0xBCA8: +case 0xBEA8: +case 0xB0A9: +case 0xB2A9: +case 0xB4A9: +case 0xB6A9: +case 0xB8A9: +case 0xBAA9: +case 0xBCA9: +case 0xBEA9: +case 0xB0AA: +case 0xB2AA: +case 0xB4AA: +case 0xB6AA: +case 0xB8AA: +case 0xBAAA: +case 0xBCAA: +case 0xBEAA: +case 0xB0AB: +case 0xB2AB: +case 0xB4AB: +case 0xB6AB: +case 0xB8AB: +case 0xBAAB: +case 0xBCAB: +case 0xBEAB: +case 0xB0AC: +case 0xB2AC: +case 0xB4AC: +case 0xB6AC: +case 0xB8AC: +case 0xBAAC: +case 0xBCAC: +case 0xBEAC: +case 0xB0AD: +case 0xB2AD: +case 0xB4AD: +case 0xB6AD: +case 0xB8AD: +case 0xBAAD: +case 0xBCAD: +case 0xBEAD: +case 0xB0AE: +case 0xB2AE: +case 0xB4AE: +case 0xB6AE: +case 0xB8AE: +case 0xBAAE: +case 0xBCAE: +case 0xBEAE: +case 0xB0AF: +case 0xB2AF: +case 0xB4AF: +case 0xB6AF: +case 0xB8AF: +case 0xBAAF: +case 0xBCAF: +case 0xBEAF: + +// CMP +case 0xB0A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2B0: +case 0xB4B0: +case 0xB6B0: +case 0xB8B0: +case 0xBAB0: +case 0xBCB0: +case 0xBEB0: +case 0xB0B1: +case 0xB2B1: +case 0xB4B1: +case 0xB6B1: +case 0xB8B1: +case 0xBAB1: +case 0xBCB1: +case 0xBEB1: +case 0xB0B2: +case 0xB2B2: +case 0xB4B2: +case 0xB6B2: +case 0xB8B2: +case 0xBAB2: +case 0xBCB2: +case 0xBEB2: +case 0xB0B3: +case 0xB2B3: +case 0xB4B3: +case 0xB6B3: +case 0xB8B3: +case 0xBAB3: +case 0xBCB3: +case 0xBEB3: +case 0xB0B4: +case 0xB2B4: +case 0xB4B4: +case 0xB6B4: +case 0xB8B4: +case 0xBAB4: +case 0xBCB4: +case 0xBEB4: +case 0xB0B5: +case 0xB2B5: +case 0xB4B5: +case 0xB6B5: +case 0xB8B5: +case 0xBAB5: +case 0xBCB5: +case 0xBEB5: +case 0xB0B6: +case 0xB2B6: +case 0xB4B6: +case 0xB6B6: +case 0xB8B6: +case 0xBAB6: +case 0xBCB6: +case 0xBEB6: +case 0xB0B7: +case 0xB2B7: +case 0xB4B7: +case 0xB6B7: +case 0xB8B7: +case 0xBAB7: +case 0xBCB7: +case 0xBEB7: + +// CMP +case 0xB0B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2B8: +case 0xB4B8: +case 0xB6B8: +case 0xB8B8: +case 0xBAB8: +case 0xBCB8: +case 0xBEB8: + +// CMP +case 0xB0B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2B9: +case 0xB4B9: +case 0xB6B9: +case 0xB8B9: +case 0xBAB9: +case 0xBCB9: +case 0xBEB9: + +// CMP +case 0xB0B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2BA: +case 0xB4BA: +case 0xB6BA: +case 0xB8BA: +case 0xBABA: +case 0xBCBA: +case 0xBEBA: + +// CMP +case 0xB0BA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2BB: +case 0xB4BB: +case 0xB6BB: +case 0xB8BB: +case 0xBABB: +case 0xBCBB: +case 0xBEBB: + +// CMP +case 0xB0BB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2BC: +case 0xB4BC: +case 0xB6BC: +case 0xB8BC: +case 0xBABC: +case 0xBCBC: +case 0xBEBC: + +// CMP +case 0xB0BC: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_LONG; + PC += 4; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(14) +case 0xB29F: +case 0xB49F: +case 0xB69F: +case 0xB89F: +case 0xBA9F: +case 0xBC9F: +case 0xBE9F: + +// CMP +case 0xB09F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB2A7: +case 0xB4A7: +case 0xB6A7: +case 0xB8A7: +case 0xBAA7: +case 0xBCA7: +case 0xBEA7: + +// CMP +case 0xB0A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB308: +case 0xB508: +case 0xB708: +case 0xB908: +case 0xBB08: +case 0xBD08: +case 0xB109: +case 0xB309: +case 0xB509: +case 0xB709: +case 0xB909: +case 0xBB09: +case 0xBD09: +case 0xB10A: +case 0xB30A: +case 0xB50A: +case 0xB70A: +case 0xB90A: +case 0xBB0A: +case 0xBD0A: +case 0xB10B: +case 0xB30B: +case 0xB50B: +case 0xB70B: +case 0xB90B: +case 0xBB0B: +case 0xBD0B: +case 0xB10C: +case 0xB30C: +case 0xB50C: +case 0xB70C: +case 0xB90C: +case 0xBB0C: +case 0xBD0C: +case 0xB10D: +case 0xB30D: +case 0xB50D: +case 0xB70D: +case 0xB90D: +case 0xBB0D: +case 0xBD0D: +case 0xB10E: +case 0xB30E: +case 0xB50E: +case 0xB70E: +case 0xB90E: +case 0xBB0E: +case 0xBD0E: + +// CMPM +case 0xB108: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB348: +case 0xB548: +case 0xB748: +case 0xB948: +case 0xBB48: +case 0xBD48: +case 0xB149: +case 0xB349: +case 0xB549: +case 0xB749: +case 0xB949: +case 0xBB49: +case 0xBD49: +case 0xB14A: +case 0xB34A: +case 0xB54A: +case 0xB74A: +case 0xB94A: +case 0xBB4A: +case 0xBD4A: +case 0xB14B: +case 0xB34B: +case 0xB54B: +case 0xB74B: +case 0xB94B: +case 0xBB4B: +case 0xBD4B: +case 0xB14C: +case 0xB34C: +case 0xB54C: +case 0xB74C: +case 0xB94C: +case 0xBB4C: +case 0xBD4C: +case 0xB14D: +case 0xB34D: +case 0xB54D: +case 0xB74D: +case 0xB94D: +case 0xBB4D: +case 0xBD4D: +case 0xB14E: +case 0xB34E: +case 0xB54E: +case 0xB74E: +case 0xB94E: +case 0xBB4E: +case 0xBD4E: + +// CMPM +case 0xB148: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB388: +case 0xB588: +case 0xB788: +case 0xB988: +case 0xBB88: +case 0xBD88: +case 0xB189: +case 0xB389: +case 0xB589: +case 0xB789: +case 0xB989: +case 0xBB89: +case 0xBD89: +case 0xB18A: +case 0xB38A: +case 0xB58A: +case 0xB78A: +case 0xB98A: +case 0xBB8A: +case 0xBD8A: +case 0xB18B: +case 0xB38B: +case 0xB58B: +case 0xB78B: +case 0xB98B: +case 0xBB8B: +case 0xBD8B: +case 0xB18C: +case 0xB38C: +case 0xB58C: +case 0xB78C: +case 0xB98C: +case 0xBB8C: +case 0xBD8C: +case 0xB18D: +case 0xB38D: +case 0xB58D: +case 0xB78D: +case 0xB98D: +case 0xBB8D: +case 0xBD8D: +case 0xB18E: +case 0xB38E: +case 0xB58E: +case 0xB78E: +case 0xB98E: +case 0xBB8E: +case 0xBD8E: + +// CMPM +case 0xB188: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB30F: +case 0xB50F: +case 0xB70F: +case 0xB90F: +case 0xBB0F: +case 0xBD0F: + +// CMP7M +case 0xB10F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 1; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xB34F: +case 0xB54F: +case 0xB74F: +case 0xB94F: +case 0xBB4F: +case 0xBD4F: + +// CMP7M +case 0xB14F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xB38F: +case 0xB58F: +case 0xB78F: +case 0xB98F: +case 0xBB8F: +case 0xBD8F: + +// CMP7M +case 0xB18F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xBF09: +case 0xBF0A: +case 0xBF0B: +case 0xBF0C: +case 0xBF0D: +case 0xBF0E: + +// CMPM7 +case 0xBF08: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) +case 0xBF49: +case 0xBF4A: +case 0xBF4B: +case 0xBF4C: +case 0xBF4D: +case 0xBF4E: + +// CMPM7 +case 0xBF48: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) +case 0xBF89: +case 0xBF8A: +case 0xBF8B: +case 0xBF8C: +case 0xBF8D: +case 0xBF8E: + +// CMPM7 +case 0xBF88: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READ_LOat_F(adr, src) + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) + +// CMP7M7 +case 0xBF0F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, dst) + res = dst - src; + CPU->flag_N = CPU->flag_C = res; + CPU->flag_V = (src ^ dst) & (res ^ dst); + CPU->flag_notZ = res & 0xFF; +} +RET(4) + +// CMP7M7 +case 0xBF4F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, dst) + res = dst - src; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8; + CPU->flag_N = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; +} +RET(4) + +// CMP7M7 +case 0xBF8F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, src) + adr = CPU->A[7]; + CPU->A[7] += 4; + READ_LOat_F(adr, dst) + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(4) +case 0xB300: +case 0xB500: +case 0xB700: +case 0xB900: +case 0xBB00: +case 0xBD00: +case 0xBF00: +case 0xB101: +case 0xB301: +case 0xB501: +case 0xB701: +case 0xB901: +case 0xBB01: +case 0xBD01: +case 0xBF01: +case 0xB102: +case 0xB302: +case 0xB502: +case 0xB702: +case 0xB902: +case 0xBB02: +case 0xBD02: +case 0xBF02: +case 0xB103: +case 0xB303: +case 0xB503: +case 0xB703: +case 0xB903: +case 0xBB03: +case 0xBD03: +case 0xBF03: +case 0xB104: +case 0xB304: +case 0xB504: +case 0xB704: +case 0xB904: +case 0xBB04: +case 0xBD04: +case 0xBF04: +case 0xB105: +case 0xB305: +case 0xB505: +case 0xB705: +case 0xB905: +case 0xBB05: +case 0xBD05: +case 0xBF05: +case 0xB106: +case 0xB306: +case 0xB506: +case 0xB706: +case 0xB906: +case 0xBB06: +case 0xBD06: +case 0xBF06: +case 0xB107: +case 0xB307: +case 0xB507: +case 0xB707: +case 0xB907: +case 0xBB07: +case 0xBD07: +case 0xBF07: + +// EORDa +case 0xB100: +{ + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + res = (u8)CPU->D[(Opcode >> 0) & 7]; + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0xB310: +case 0xB510: +case 0xB710: +case 0xB910: +case 0xBB10: +case 0xBD10: +case 0xBF10: +case 0xB111: +case 0xB311: +case 0xB511: +case 0xB711: +case 0xB911: +case 0xBB11: +case 0xBD11: +case 0xBF11: +case 0xB112: +case 0xB312: +case 0xB512: +case 0xB712: +case 0xB912: +case 0xBB12: +case 0xBD12: +case 0xBF12: +case 0xB113: +case 0xB313: +case 0xB513: +case 0xB713: +case 0xB913: +case 0xBB13: +case 0xBD13: +case 0xBF13: +case 0xB114: +case 0xB314: +case 0xB514: +case 0xB714: +case 0xB914: +case 0xBB14: +case 0xBD14: +case 0xBF14: +case 0xB115: +case 0xB315: +case 0xB515: +case 0xB715: +case 0xB915: +case 0xBB15: +case 0xBD15: +case 0xBF15: +case 0xB116: +case 0xB316: +case 0xB516: +case 0xB716: +case 0xB916: +case 0xBB16: +case 0xBD16: +case 0xBF16: +case 0xB117: +case 0xB317: +case 0xB517: +case 0xB717: +case 0xB917: +case 0xBB17: +case 0xBD17: +case 0xBF17: + +// EORDa +case 0xB110: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB318: +case 0xB518: +case 0xB718: +case 0xB918: +case 0xBB18: +case 0xBD18: +case 0xBF18: +case 0xB119: +case 0xB319: +case 0xB519: +case 0xB719: +case 0xB919: +case 0xBB19: +case 0xBD19: +case 0xBF19: +case 0xB11A: +case 0xB31A: +case 0xB51A: +case 0xB71A: +case 0xB91A: +case 0xBB1A: +case 0xBD1A: +case 0xBF1A: +case 0xB11B: +case 0xB31B: +case 0xB51B: +case 0xB71B: +case 0xB91B: +case 0xBB1B: +case 0xBD1B: +case 0xBF1B: +case 0xB11C: +case 0xB31C: +case 0xB51C: +case 0xB71C: +case 0xB91C: +case 0xBB1C: +case 0xBD1C: +case 0xBF1C: +case 0xB11D: +case 0xB31D: +case 0xB51D: +case 0xB71D: +case 0xB91D: +case 0xBB1D: +case 0xBD1D: +case 0xBF1D: +case 0xB11E: +case 0xB31E: +case 0xB51E: +case 0xB71E: +case 0xB91E: +case 0xBB1E: +case 0xBD1E: +case 0xBF1E: + +// EORDa +case 0xB118: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB320: +case 0xB520: +case 0xB720: +case 0xB920: +case 0xBB20: +case 0xBD20: +case 0xBF20: +case 0xB121: +case 0xB321: +case 0xB521: +case 0xB721: +case 0xB921: +case 0xBB21: +case 0xBD21: +case 0xBF21: +case 0xB122: +case 0xB322: +case 0xB522: +case 0xB722: +case 0xB922: +case 0xBB22: +case 0xBD22: +case 0xBF22: +case 0xB123: +case 0xB323: +case 0xB523: +case 0xB723: +case 0xB923: +case 0xBB23: +case 0xBD23: +case 0xBF23: +case 0xB124: +case 0xB324: +case 0xB524: +case 0xB724: +case 0xB924: +case 0xBB24: +case 0xBD24: +case 0xBF24: +case 0xB125: +case 0xB325: +case 0xB525: +case 0xB725: +case 0xB925: +case 0xBB25: +case 0xBD25: +case 0xBF25: +case 0xB126: +case 0xB326: +case 0xB526: +case 0xB726: +case 0xB926: +case 0xBB26: +case 0xBD26: +case 0xBF26: + +// EORDa +case 0xB120: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB328: +case 0xB528: +case 0xB728: +case 0xB928: +case 0xBB28: +case 0xBD28: +case 0xBF28: +case 0xB129: +case 0xB329: +case 0xB529: +case 0xB729: +case 0xB929: +case 0xBB29: +case 0xBD29: +case 0xBF29: +case 0xB12A: +case 0xB32A: +case 0xB52A: +case 0xB72A: +case 0xB92A: +case 0xBB2A: +case 0xBD2A: +case 0xBF2A: +case 0xB12B: +case 0xB32B: +case 0xB52B: +case 0xB72B: +case 0xB92B: +case 0xBB2B: +case 0xBD2B: +case 0xBF2B: +case 0xB12C: +case 0xB32C: +case 0xB52C: +case 0xB72C: +case 0xB92C: +case 0xBB2C: +case 0xBD2C: +case 0xBF2C: +case 0xB12D: +case 0xB32D: +case 0xB52D: +case 0xB72D: +case 0xB92D: +case 0xBB2D: +case 0xBD2D: +case 0xBF2D: +case 0xB12E: +case 0xB32E: +case 0xB52E: +case 0xB72E: +case 0xB92E: +case 0xBB2E: +case 0xBD2E: +case 0xBF2E: +case 0xB12F: +case 0xB32F: +case 0xB52F: +case 0xB72F: +case 0xB92F: +case 0xBB2F: +case 0xBD2F: +case 0xBF2F: + +// EORDa +case 0xB128: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB330: +case 0xB530: +case 0xB730: +case 0xB930: +case 0xBB30: +case 0xBD30: +case 0xBF30: +case 0xB131: +case 0xB331: +case 0xB531: +case 0xB731: +case 0xB931: +case 0xBB31: +case 0xBD31: +case 0xBF31: +case 0xB132: +case 0xB332: +case 0xB532: +case 0xB732: +case 0xB932: +case 0xBB32: +case 0xBD32: +case 0xBF32: +case 0xB133: +case 0xB333: +case 0xB533: +case 0xB733: +case 0xB933: +case 0xBB33: +case 0xBD33: +case 0xBF33: +case 0xB134: +case 0xB334: +case 0xB534: +case 0xB734: +case 0xB934: +case 0xBB34: +case 0xBD34: +case 0xBF34: +case 0xB135: +case 0xB335: +case 0xB535: +case 0xB735: +case 0xB935: +case 0xBB35: +case 0xBD35: +case 0xBF35: +case 0xB136: +case 0xB336: +case 0xB536: +case 0xB736: +case 0xB936: +case 0xBB36: +case 0xBD36: +case 0xBF36: +case 0xB137: +case 0xB337: +case 0xB537: +case 0xB737: +case 0xB937: +case 0xBB37: +case 0xBD37: +case 0xBF37: + +// EORDa +case 0xB130: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB338: +case 0xB538: +case 0xB738: +case 0xB938: +case 0xBB38: +case 0xBD38: +case 0xBF38: + +// EORDa +case 0xB138: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB339: +case 0xB539: +case 0xB739: +case 0xB939: +case 0xBB39: +case 0xBD39: +case 0xBF39: + +// EORDa +case 0xB139: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB31F: +case 0xB51F: +case 0xB71F: +case 0xB91F: +case 0xBB1F: +case 0xBD1F: +case 0xBF1F: + +// EORDa +case 0xB11F: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB327: +case 0xB527: +case 0xB727: +case 0xB927: +case 0xBB27: +case 0xBD27: +case 0xBF27: + +// EORDa +case 0xB127: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xB340: +case 0xB540: +case 0xB740: +case 0xB940: +case 0xBB40: +case 0xBD40: +case 0xBF40: +case 0xB141: +case 0xB341: +case 0xB541: +case 0xB741: +case 0xB941: +case 0xBB41: +case 0xBD41: +case 0xBF41: +case 0xB142: +case 0xB342: +case 0xB542: +case 0xB742: +case 0xB942: +case 0xBB42: +case 0xBD42: +case 0xBF42: +case 0xB143: +case 0xB343: +case 0xB543: +case 0xB743: +case 0xB943: +case 0xBB43: +case 0xBD43: +case 0xBF43: +case 0xB144: +case 0xB344: +case 0xB544: +case 0xB744: +case 0xB944: +case 0xBB44: +case 0xBD44: +case 0xBF44: +case 0xB145: +case 0xB345: +case 0xB545: +case 0xB745: +case 0xB945: +case 0xBB45: +case 0xBD45: +case 0xBF45: +case 0xB146: +case 0xB346: +case 0xB546: +case 0xB746: +case 0xB946: +case 0xBB46: +case 0xBD46: +case 0xBF46: +case 0xB147: +case 0xB347: +case 0xB547: +case 0xB747: +case 0xB947: +case 0xBB47: +case 0xBD47: +case 0xBF47: + +// EORDa +case 0xB140: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + res = (u16)CPU->D[(Opcode >> 0) & 7]; + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(4) +case 0xB350: +case 0xB550: +case 0xB750: +case 0xB950: +case 0xBB50: +case 0xBD50: +case 0xBF50: +case 0xB151: +case 0xB351: +case 0xB551: +case 0xB751: +case 0xB951: +case 0xBB51: +case 0xBD51: +case 0xBF51: +case 0xB152: +case 0xB352: +case 0xB552: +case 0xB752: +case 0xB952: +case 0xBB52: +case 0xBD52: +case 0xBF52: +case 0xB153: +case 0xB353: +case 0xB553: +case 0xB753: +case 0xB953: +case 0xBB53: +case 0xBD53: +case 0xBF53: +case 0xB154: +case 0xB354: +case 0xB554: +case 0xB754: +case 0xB954: +case 0xBB54: +case 0xBD54: +case 0xBF54: +case 0xB155: +case 0xB355: +case 0xB555: +case 0xB755: +case 0xB955: +case 0xBB55: +case 0xBD55: +case 0xBF55: +case 0xB156: +case 0xB356: +case 0xB556: +case 0xB756: +case 0xB956: +case 0xBB56: +case 0xBD56: +case 0xBF56: +case 0xB157: +case 0xB357: +case 0xB557: +case 0xB757: +case 0xB957: +case 0xBB57: +case 0xBD57: +case 0xBF57: + +// EORDa +case 0xB150: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB358: +case 0xB558: +case 0xB758: +case 0xB958: +case 0xBB58: +case 0xBD58: +case 0xBF58: +case 0xB159: +case 0xB359: +case 0xB559: +case 0xB759: +case 0xB959: +case 0xBB59: +case 0xBD59: +case 0xBF59: +case 0xB15A: +case 0xB35A: +case 0xB55A: +case 0xB75A: +case 0xB95A: +case 0xBB5A: +case 0xBD5A: +case 0xBF5A: +case 0xB15B: +case 0xB35B: +case 0xB55B: +case 0xB75B: +case 0xB95B: +case 0xBB5B: +case 0xBD5B: +case 0xBF5B: +case 0xB15C: +case 0xB35C: +case 0xB55C: +case 0xB75C: +case 0xB95C: +case 0xBB5C: +case 0xBD5C: +case 0xBF5C: +case 0xB15D: +case 0xB35D: +case 0xB55D: +case 0xB75D: +case 0xB95D: +case 0xBB5D: +case 0xBD5D: +case 0xBF5D: +case 0xB15E: +case 0xB35E: +case 0xB55E: +case 0xB75E: +case 0xB95E: +case 0xBB5E: +case 0xBD5E: +case 0xBF5E: + +// EORDa +case 0xB158: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB360: +case 0xB560: +case 0xB760: +case 0xB960: +case 0xBB60: +case 0xBD60: +case 0xBF60: +case 0xB161: +case 0xB361: +case 0xB561: +case 0xB761: +case 0xB961: +case 0xBB61: +case 0xBD61: +case 0xBF61: +case 0xB162: +case 0xB362: +case 0xB562: +case 0xB762: +case 0xB962: +case 0xBB62: +case 0xBD62: +case 0xBF62: +case 0xB163: +case 0xB363: +case 0xB563: +case 0xB763: +case 0xB963: +case 0xBB63: +case 0xBD63: +case 0xBF63: +case 0xB164: +case 0xB364: +case 0xB564: +case 0xB764: +case 0xB964: +case 0xBB64: +case 0xBD64: +case 0xBF64: +case 0xB165: +case 0xB365: +case 0xB565: +case 0xB765: +case 0xB965: +case 0xBB65: +case 0xBD65: +case 0xBF65: +case 0xB166: +case 0xB366: +case 0xB566: +case 0xB766: +case 0xB966: +case 0xBB66: +case 0xBD66: +case 0xBF66: + +// EORDa +case 0xB160: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB368: +case 0xB568: +case 0xB768: +case 0xB968: +case 0xBB68: +case 0xBD68: +case 0xBF68: +case 0xB169: +case 0xB369: +case 0xB569: +case 0xB769: +case 0xB969: +case 0xBB69: +case 0xBD69: +case 0xBF69: +case 0xB16A: +case 0xB36A: +case 0xB56A: +case 0xB76A: +case 0xB96A: +case 0xBB6A: +case 0xBD6A: +case 0xBF6A: +case 0xB16B: +case 0xB36B: +case 0xB56B: +case 0xB76B: +case 0xB96B: +case 0xBB6B: +case 0xBD6B: +case 0xBF6B: +case 0xB16C: +case 0xB36C: +case 0xB56C: +case 0xB76C: +case 0xB96C: +case 0xBB6C: +case 0xBD6C: +case 0xBF6C: +case 0xB16D: +case 0xB36D: +case 0xB56D: +case 0xB76D: +case 0xB96D: +case 0xBB6D: +case 0xBD6D: +case 0xBF6D: +case 0xB16E: +case 0xB36E: +case 0xB56E: +case 0xB76E: +case 0xB96E: +case 0xBB6E: +case 0xBD6E: +case 0xBF6E: +case 0xB16F: +case 0xB36F: +case 0xB56F: +case 0xB76F: +case 0xB96F: +case 0xBB6F: +case 0xBD6F: +case 0xBF6F: + +// EORDa +case 0xB168: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB370: +case 0xB570: +case 0xB770: +case 0xB970: +case 0xBB70: +case 0xBD70: +case 0xBF70: +case 0xB171: +case 0xB371: +case 0xB571: +case 0xB771: +case 0xB971: +case 0xBB71: +case 0xBD71: +case 0xBF71: +case 0xB172: +case 0xB372: +case 0xB572: +case 0xB772: +case 0xB972: +case 0xBB72: +case 0xBD72: +case 0xBF72: +case 0xB173: +case 0xB373: +case 0xB573: +case 0xB773: +case 0xB973: +case 0xBB73: +case 0xBD73: +case 0xBF73: +case 0xB174: +case 0xB374: +case 0xB574: +case 0xB774: +case 0xB974: +case 0xBB74: +case 0xBD74: +case 0xBF74: +case 0xB175: +case 0xB375: +case 0xB575: +case 0xB775: +case 0xB975: +case 0xBB75: +case 0xBD75: +case 0xBF75: +case 0xB176: +case 0xB376: +case 0xB576: +case 0xB776: +case 0xB976: +case 0xBB76: +case 0xBD76: +case 0xBF76: +case 0xB177: +case 0xB377: +case 0xB577: +case 0xB777: +case 0xB977: +case 0xBB77: +case 0xBD77: +case 0xBF77: + +// EORDa +case 0xB170: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB378: +case 0xB578: +case 0xB778: +case 0xB978: +case 0xBB78: +case 0xBD78: +case 0xBF78: + +// EORDa +case 0xB178: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB379: +case 0xB579: +case 0xB779: +case 0xB979: +case 0xBB79: +case 0xBD79: +case 0xBF79: + +// EORDa +case 0xB179: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB35F: +case 0xB55F: +case 0xB75F: +case 0xB95F: +case 0xBB5F: +case 0xBD5F: +case 0xBF5F: + +// EORDa +case 0xB15F: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB367: +case 0xB567: +case 0xB767: +case 0xB967: +case 0xBB67: +case 0xBD67: +case 0xBF67: + +// EORDa +case 0xB167: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xB380: +case 0xB580: +case 0xB780: +case 0xB980: +case 0xBB80: +case 0xBD80: +case 0xBF80: +case 0xB181: +case 0xB381: +case 0xB581: +case 0xB781: +case 0xB981: +case 0xBB81: +case 0xBD81: +case 0xBF81: +case 0xB182: +case 0xB382: +case 0xB582: +case 0xB782: +case 0xB982: +case 0xBB82: +case 0xBD82: +case 0xBF82: +case 0xB183: +case 0xB383: +case 0xB583: +case 0xB783: +case 0xB983: +case 0xBB83: +case 0xBD83: +case 0xBF83: +case 0xB184: +case 0xB384: +case 0xB584: +case 0xB784: +case 0xB984: +case 0xBB84: +case 0xBD84: +case 0xBF84: +case 0xB185: +case 0xB385: +case 0xB585: +case 0xB785: +case 0xB985: +case 0xBB85: +case 0xBD85: +case 0xBF85: +case 0xB186: +case 0xB386: +case 0xB586: +case 0xB786: +case 0xB986: +case 0xBB86: +case 0xBD86: +case 0xBF86: +case 0xB187: +case 0xB387: +case 0xB587: +case 0xB787: +case 0xB987: +case 0xBB87: +case 0xBD87: +case 0xBF87: + +// EORDa +case 0xB180: +{ + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xB390: +case 0xB590: +case 0xB790: +case 0xB990: +case 0xBB90: +case 0xBD90: +case 0xBF90: +case 0xB191: +case 0xB391: +case 0xB591: +case 0xB791: +case 0xB991: +case 0xBB91: +case 0xBD91: +case 0xBF91: +case 0xB192: +case 0xB392: +case 0xB592: +case 0xB792: +case 0xB992: +case 0xBB92: +case 0xBD92: +case 0xBF92: +case 0xB193: +case 0xB393: +case 0xB593: +case 0xB793: +case 0xB993: +case 0xBB93: +case 0xBD93: +case 0xBF93: +case 0xB194: +case 0xB394: +case 0xB594: +case 0xB794: +case 0xB994: +case 0xBB94: +case 0xBD94: +case 0xBF94: +case 0xB195: +case 0xB395: +case 0xB595: +case 0xB795: +case 0xB995: +case 0xBB95: +case 0xBD95: +case 0xBF95: +case 0xB196: +case 0xB396: +case 0xB596: +case 0xB796: +case 0xB996: +case 0xBB96: +case 0xBD96: +case 0xBF96: +case 0xB197: +case 0xB397: +case 0xB597: +case 0xB797: +case 0xB997: +case 0xBB97: +case 0xBD97: +case 0xBF97: + +// EORDa +case 0xB190: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB398: +case 0xB598: +case 0xB798: +case 0xB998: +case 0xBB98: +case 0xBD98: +case 0xBF98: +case 0xB199: +case 0xB399: +case 0xB599: +case 0xB799: +case 0xB999: +case 0xBB99: +case 0xBD99: +case 0xBF99: +case 0xB19A: +case 0xB39A: +case 0xB59A: +case 0xB79A: +case 0xB99A: +case 0xBB9A: +case 0xBD9A: +case 0xBF9A: +case 0xB19B: +case 0xB39B: +case 0xB59B: +case 0xB79B: +case 0xB99B: +case 0xBB9B: +case 0xBD9B: +case 0xBF9B: +case 0xB19C: +case 0xB39C: +case 0xB59C: +case 0xB79C: +case 0xB99C: +case 0xBB9C: +case 0xBD9C: +case 0xBF9C: +case 0xB19D: +case 0xB39D: +case 0xB59D: +case 0xB79D: +case 0xB99D: +case 0xBB9D: +case 0xBD9D: +case 0xBF9D: +case 0xB19E: +case 0xB39E: +case 0xB59E: +case 0xB79E: +case 0xB99E: +case 0xBB9E: +case 0xBD9E: +case 0xBF9E: + +// EORDa +case 0xB198: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB3A0: +case 0xB5A0: +case 0xB7A0: +case 0xB9A0: +case 0xBBA0: +case 0xBDA0: +case 0xBFA0: +case 0xB1A1: +case 0xB3A1: +case 0xB5A1: +case 0xB7A1: +case 0xB9A1: +case 0xBBA1: +case 0xBDA1: +case 0xBFA1: +case 0xB1A2: +case 0xB3A2: +case 0xB5A2: +case 0xB7A2: +case 0xB9A2: +case 0xBBA2: +case 0xBDA2: +case 0xBFA2: +case 0xB1A3: +case 0xB3A3: +case 0xB5A3: +case 0xB7A3: +case 0xB9A3: +case 0xBBA3: +case 0xBDA3: +case 0xBFA3: +case 0xB1A4: +case 0xB3A4: +case 0xB5A4: +case 0xB7A4: +case 0xB9A4: +case 0xBBA4: +case 0xBDA4: +case 0xBFA4: +case 0xB1A5: +case 0xB3A5: +case 0xB5A5: +case 0xB7A5: +case 0xB9A5: +case 0xBBA5: +case 0xBDA5: +case 0xBFA5: +case 0xB1A6: +case 0xB3A6: +case 0xB5A6: +case 0xB7A6: +case 0xB9A6: +case 0xBBA6: +case 0xBDA6: +case 0xBFA6: + +// EORDa +case 0xB1A0: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB3A8: +case 0xB5A8: +case 0xB7A8: +case 0xB9A8: +case 0xBBA8: +case 0xBDA8: +case 0xBFA8: +case 0xB1A9: +case 0xB3A9: +case 0xB5A9: +case 0xB7A9: +case 0xB9A9: +case 0xBBA9: +case 0xBDA9: +case 0xBFA9: +case 0xB1AA: +case 0xB3AA: +case 0xB5AA: +case 0xB7AA: +case 0xB9AA: +case 0xBBAA: +case 0xBDAA: +case 0xBFAA: +case 0xB1AB: +case 0xB3AB: +case 0xB5AB: +case 0xB7AB: +case 0xB9AB: +case 0xBBAB: +case 0xBDAB: +case 0xBFAB: +case 0xB1AC: +case 0xB3AC: +case 0xB5AC: +case 0xB7AC: +case 0xB9AC: +case 0xBBAC: +case 0xBDAC: +case 0xBFAC: +case 0xB1AD: +case 0xB3AD: +case 0xB5AD: +case 0xB7AD: +case 0xB9AD: +case 0xBBAD: +case 0xBDAD: +case 0xBFAD: +case 0xB1AE: +case 0xB3AE: +case 0xB5AE: +case 0xB7AE: +case 0xB9AE: +case 0xBBAE: +case 0xBDAE: +case 0xBFAE: +case 0xB1AF: +case 0xB3AF: +case 0xB5AF: +case 0xB7AF: +case 0xB9AF: +case 0xBBAF: +case 0xBDAF: +case 0xBFAF: + +// EORDa +case 0xB1A8: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB3B0: +case 0xB5B0: +case 0xB7B0: +case 0xB9B0: +case 0xBBB0: +case 0xBDB0: +case 0xBFB0: +case 0xB1B1: +case 0xB3B1: +case 0xB5B1: +case 0xB7B1: +case 0xB9B1: +case 0xBBB1: +case 0xBDB1: +case 0xBFB1: +case 0xB1B2: +case 0xB3B2: +case 0xB5B2: +case 0xB7B2: +case 0xB9B2: +case 0xBBB2: +case 0xBDB2: +case 0xBFB2: +case 0xB1B3: +case 0xB3B3: +case 0xB5B3: +case 0xB7B3: +case 0xB9B3: +case 0xBBB3: +case 0xBDB3: +case 0xBFB3: +case 0xB1B4: +case 0xB3B4: +case 0xB5B4: +case 0xB7B4: +case 0xB9B4: +case 0xBBB4: +case 0xBDB4: +case 0xBFB4: +case 0xB1B5: +case 0xB3B5: +case 0xB5B5: +case 0xB7B5: +case 0xB9B5: +case 0xBBB5: +case 0xBDB5: +case 0xBFB5: +case 0xB1B6: +case 0xB3B6: +case 0xB5B6: +case 0xB7B6: +case 0xB9B6: +case 0xBBB6: +case 0xBDB6: +case 0xBFB6: +case 0xB1B7: +case 0xB3B7: +case 0xB5B7: +case 0xB7B7: +case 0xB9B7: +case 0xBBB7: +case 0xBDB7: +case 0xBFB7: + +// EORDa +case 0xB1B0: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB3B8: +case 0xB5B8: +case 0xB7B8: +case 0xB9B8: +case 0xBBB8: +case 0xBDB8: +case 0xBFB8: + +// EORDa +case 0xB1B8: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB3B9: +case 0xB5B9: +case 0xB7B9: +case 0xB9B9: +case 0xBBB9: +case 0xBDB9: +case 0xBFB9: + +// EORDa +case 0xB1B9: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB39F: +case 0xB59F: +case 0xB79F: +case 0xB99F: +case 0xBB9F: +case 0xBD9F: +case 0xBF9F: + +// EORDa +case 0xB19F: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB3A7: +case 0xB5A7: +case 0xB7A7: +case 0xB9A7: +case 0xBBA7: +case 0xBDA7: +case 0xBFA7: + +// EORDa +case 0xB1A7: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, res) + res ^= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xB2C0: +case 0xB4C0: +case 0xB6C0: +case 0xB8C0: +case 0xBAC0: +case 0xBCC0: +case 0xBEC0: +case 0xB0C1: +case 0xB2C1: +case 0xB4C1: +case 0xB6C1: +case 0xB8C1: +case 0xBAC1: +case 0xBCC1: +case 0xBEC1: +case 0xB0C2: +case 0xB2C2: +case 0xB4C2: +case 0xB6C2: +case 0xB8C2: +case 0xBAC2: +case 0xBCC2: +case 0xBEC2: +case 0xB0C3: +case 0xB2C3: +case 0xB4C3: +case 0xB6C3: +case 0xB8C3: +case 0xBAC3: +case 0xBCC3: +case 0xBEC3: +case 0xB0C4: +case 0xB2C4: +case 0xB4C4: +case 0xB6C4: +case 0xB8C4: +case 0xBAC4: +case 0xBCC4: +case 0xBEC4: +case 0xB0C5: +case 0xB2C5: +case 0xB4C5: +case 0xB6C5: +case 0xB8C5: +case 0xBAC5: +case 0xBCC5: +case 0xBEC5: +case 0xB0C6: +case 0xB2C6: +case 0xB4C6: +case 0xB6C6: +case 0xB8C6: +case 0xBAC6: +case 0xBCC6: +case 0xBEC6: +case 0xB0C7: +case 0xB2C7: +case 0xB4C7: +case 0xB6C7: +case 0xB8C7: +case 0xBAC7: +case 0xBCC7: +case 0xBEC7: + +// CMPA +case 0xB0C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2C8: +case 0xB4C8: +case 0xB6C8: +case 0xB8C8: +case 0xBAC8: +case 0xBCC8: +case 0xBEC8: +case 0xB0C9: +case 0xB2C9: +case 0xB4C9: +case 0xB6C9: +case 0xB8C9: +case 0xBAC9: +case 0xBCC9: +case 0xBEC9: +case 0xB0CA: +case 0xB2CA: +case 0xB4CA: +case 0xB6CA: +case 0xB8CA: +case 0xBACA: +case 0xBCCA: +case 0xBECA: +case 0xB0CB: +case 0xB2CB: +case 0xB4CB: +case 0xB6CB: +case 0xB8CB: +case 0xBACB: +case 0xBCCB: +case 0xBECB: +case 0xB0CC: +case 0xB2CC: +case 0xB4CC: +case 0xB6CC: +case 0xB8CC: +case 0xBACC: +case 0xBCCC: +case 0xBECC: +case 0xB0CD: +case 0xB2CD: +case 0xB4CD: +case 0xB6CD: +case 0xB8CD: +case 0xBACD: +case 0xBCCD: +case 0xBECD: +case 0xB0CE: +case 0xB2CE: +case 0xB4CE: +case 0xB6CE: +case 0xB8CE: +case 0xBACE: +case 0xBCCE: +case 0xBECE: +case 0xB0CF: +case 0xB2CF: +case 0xB4CF: +case 0xB6CF: +case 0xB8CF: +case 0xBACF: +case 0xBCCF: +case 0xBECF: + +// CMPA +case 0xB0C8: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2D0: +case 0xB4D0: +case 0xB6D0: +case 0xB8D0: +case 0xBAD0: +case 0xBCD0: +case 0xBED0: +case 0xB0D1: +case 0xB2D1: +case 0xB4D1: +case 0xB6D1: +case 0xB8D1: +case 0xBAD1: +case 0xBCD1: +case 0xBED1: +case 0xB0D2: +case 0xB2D2: +case 0xB4D2: +case 0xB6D2: +case 0xB8D2: +case 0xBAD2: +case 0xBCD2: +case 0xBED2: +case 0xB0D3: +case 0xB2D3: +case 0xB4D3: +case 0xB6D3: +case 0xB8D3: +case 0xBAD3: +case 0xBCD3: +case 0xBED3: +case 0xB0D4: +case 0xB2D4: +case 0xB4D4: +case 0xB6D4: +case 0xB8D4: +case 0xBAD4: +case 0xBCD4: +case 0xBED4: +case 0xB0D5: +case 0xB2D5: +case 0xB4D5: +case 0xB6D5: +case 0xB8D5: +case 0xBAD5: +case 0xBCD5: +case 0xBED5: +case 0xB0D6: +case 0xB2D6: +case 0xB4D6: +case 0xB6D6: +case 0xB8D6: +case 0xBAD6: +case 0xBCD6: +case 0xBED6: +case 0xB0D7: +case 0xB2D7: +case 0xB4D7: +case 0xB6D7: +case 0xB8D7: +case 0xBAD7: +case 0xBCD7: +case 0xBED7: + +// CMPA +case 0xB0D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2D8: +case 0xB4D8: +case 0xB6D8: +case 0xB8D8: +case 0xBAD8: +case 0xBCD8: +case 0xBED8: +case 0xB0D9: +case 0xB2D9: +case 0xB4D9: +case 0xB6D9: +case 0xB8D9: +case 0xBAD9: +case 0xBCD9: +case 0xBED9: +case 0xB0DA: +case 0xB2DA: +case 0xB4DA: +case 0xB6DA: +case 0xB8DA: +case 0xBADA: +case 0xBCDA: +case 0xBEDA: +case 0xB0DB: +case 0xB2DB: +case 0xB4DB: +case 0xB6DB: +case 0xB8DB: +case 0xBADB: +case 0xBCDB: +case 0xBEDB: +case 0xB0DC: +case 0xB2DC: +case 0xB4DC: +case 0xB6DC: +case 0xB8DC: +case 0xBADC: +case 0xBCDC: +case 0xBEDC: +case 0xB0DD: +case 0xB2DD: +case 0xB4DD: +case 0xB6DD: +case 0xB8DD: +case 0xBADD: +case 0xBCDD: +case 0xBEDD: +case 0xB0DE: +case 0xB2DE: +case 0xB4DE: +case 0xB6DE: +case 0xB8DE: +case 0xBADE: +case 0xBCDE: +case 0xBEDE: + +// CMPA +case 0xB0D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2E0: +case 0xB4E0: +case 0xB6E0: +case 0xB8E0: +case 0xBAE0: +case 0xBCE0: +case 0xBEE0: +case 0xB0E1: +case 0xB2E1: +case 0xB4E1: +case 0xB6E1: +case 0xB8E1: +case 0xBAE1: +case 0xBCE1: +case 0xBEE1: +case 0xB0E2: +case 0xB2E2: +case 0xB4E2: +case 0xB6E2: +case 0xB8E2: +case 0xBAE2: +case 0xBCE2: +case 0xBEE2: +case 0xB0E3: +case 0xB2E3: +case 0xB4E3: +case 0xB6E3: +case 0xB8E3: +case 0xBAE3: +case 0xBCE3: +case 0xBEE3: +case 0xB0E4: +case 0xB2E4: +case 0xB4E4: +case 0xB6E4: +case 0xB8E4: +case 0xBAE4: +case 0xBCE4: +case 0xBEE4: +case 0xB0E5: +case 0xB2E5: +case 0xB4E5: +case 0xB6E5: +case 0xB8E5: +case 0xBAE5: +case 0xBCE5: +case 0xBEE5: +case 0xB0E6: +case 0xB2E6: +case 0xB4E6: +case 0xB6E6: +case 0xB8E6: +case 0xBAE6: +case 0xBCE6: +case 0xBEE6: + +// CMPA +case 0xB0E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2E8: +case 0xB4E8: +case 0xB6E8: +case 0xB8E8: +case 0xBAE8: +case 0xBCE8: +case 0xBEE8: +case 0xB0E9: +case 0xB2E9: +case 0xB4E9: +case 0xB6E9: +case 0xB8E9: +case 0xBAE9: +case 0xBCE9: +case 0xBEE9: +case 0xB0EA: +case 0xB2EA: +case 0xB4EA: +case 0xB6EA: +case 0xB8EA: +case 0xBAEA: +case 0xBCEA: +case 0xBEEA: +case 0xB0EB: +case 0xB2EB: +case 0xB4EB: +case 0xB6EB: +case 0xB8EB: +case 0xBAEB: +case 0xBCEB: +case 0xBEEB: +case 0xB0EC: +case 0xB2EC: +case 0xB4EC: +case 0xB6EC: +case 0xB8EC: +case 0xBAEC: +case 0xBCEC: +case 0xBEEC: +case 0xB0ED: +case 0xB2ED: +case 0xB4ED: +case 0xB6ED: +case 0xB8ED: +case 0xBAED: +case 0xBCED: +case 0xBEED: +case 0xB0EE: +case 0xB2EE: +case 0xB4EE: +case 0xB6EE: +case 0xB8EE: +case 0xBAEE: +case 0xBCEE: +case 0xBEEE: +case 0xB0EF: +case 0xB2EF: +case 0xB4EF: +case 0xB6EF: +case 0xB8EF: +case 0xBAEF: +case 0xBCEF: +case 0xBEEF: + +// CMPA +case 0xB0E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2F0: +case 0xB4F0: +case 0xB6F0: +case 0xB8F0: +case 0xBAF0: +case 0xBCF0: +case 0xBEF0: +case 0xB0F1: +case 0xB2F1: +case 0xB4F1: +case 0xB6F1: +case 0xB8F1: +case 0xBAF1: +case 0xBCF1: +case 0xBEF1: +case 0xB0F2: +case 0xB2F2: +case 0xB4F2: +case 0xB6F2: +case 0xB8F2: +case 0xBAF2: +case 0xBCF2: +case 0xBEF2: +case 0xB0F3: +case 0xB2F3: +case 0xB4F3: +case 0xB6F3: +case 0xB8F3: +case 0xBAF3: +case 0xBCF3: +case 0xBEF3: +case 0xB0F4: +case 0xB2F4: +case 0xB4F4: +case 0xB6F4: +case 0xB8F4: +case 0xBAF4: +case 0xBCF4: +case 0xBEF4: +case 0xB0F5: +case 0xB2F5: +case 0xB4F5: +case 0xB6F5: +case 0xB8F5: +case 0xBAF5: +case 0xBCF5: +case 0xBEF5: +case 0xB0F6: +case 0xB2F6: +case 0xB4F6: +case 0xB6F6: +case 0xB8F6: +case 0xBAF6: +case 0xBCF6: +case 0xBEF6: +case 0xB0F7: +case 0xB2F7: +case 0xB4F7: +case 0xB6F7: +case 0xB8F7: +case 0xBAF7: +case 0xBCF7: +case 0xBEF7: + +// CMPA +case 0xB0F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2F8: +case 0xB4F8: +case 0xB6F8: +case 0xB8F8: +case 0xBAF8: +case 0xBCF8: +case 0xBEF8: + +// CMPA +case 0xB0F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2F9: +case 0xB4F9: +case 0xB6F9: +case 0xB8F9: +case 0xBAF9: +case 0xBCF9: +case 0xBEF9: + +// CMPA +case 0xB0F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2FA: +case 0xB4FA: +case 0xB6FA: +case 0xB8FA: +case 0xBAFA: +case 0xBCFA: +case 0xBEFA: + +// CMPA +case 0xB0FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2FB: +case 0xB4FB: +case 0xB6FB: +case 0xB8FB: +case 0xBAFB: +case 0xBCFB: +case 0xBEFB: + +// CMPA +case 0xB0FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2FC: +case 0xB4FC: +case 0xB6FC: +case 0xB8FC: +case 0xBAFC: +case 0xBCFC: +case 0xBEFC: + +// CMPA +case 0xB0FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)FETCH_WORD; + PC += 2; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(10) +case 0xB2DF: +case 0xB4DF: +case 0xB6DF: +case 0xB8DF: +case 0xBADF: +case 0xBCDF: +case 0xBEDF: + +// CMPA +case 0xB0DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB2E7: +case 0xB4E7: +case 0xB6E7: +case 0xB8E7: +case 0xBAE7: +case 0xBCE7: +case 0xBEE7: + +// CMPA +case 0xB0E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3C0: +case 0xB5C0: +case 0xB7C0: +case 0xB9C0: +case 0xBBC0: +case 0xBDC0: +case 0xBFC0: +case 0xB1C1: +case 0xB3C1: +case 0xB5C1: +case 0xB7C1: +case 0xB9C1: +case 0xBBC1: +case 0xBDC1: +case 0xBFC1: +case 0xB1C2: +case 0xB3C2: +case 0xB5C2: +case 0xB7C2: +case 0xB9C2: +case 0xBBC2: +case 0xBDC2: +case 0xBFC2: +case 0xB1C3: +case 0xB3C3: +case 0xB5C3: +case 0xB7C3: +case 0xB9C3: +case 0xBBC3: +case 0xBDC3: +case 0xBFC3: +case 0xB1C4: +case 0xB3C4: +case 0xB5C4: +case 0xB7C4: +case 0xB9C4: +case 0xBBC4: +case 0xBDC4: +case 0xBFC4: +case 0xB1C5: +case 0xB3C5: +case 0xB5C5: +case 0xB7C5: +case 0xB9C5: +case 0xBBC5: +case 0xBDC5: +case 0xBFC5: +case 0xB1C6: +case 0xB3C6: +case 0xB5C6: +case 0xB7C6: +case 0xB9C6: +case 0xBBC6: +case 0xBDC6: +case 0xBFC6: +case 0xB1C7: +case 0xB3C7: +case 0xB5C7: +case 0xB7C7: +case 0xB9C7: +case 0xBBC7: +case 0xBDC7: +case 0xBFC7: + +// CMPA +case 0xB1C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3C8: +case 0xB5C8: +case 0xB7C8: +case 0xB9C8: +case 0xBBC8: +case 0xBDC8: +case 0xBFC8: +case 0xB1C9: +case 0xB3C9: +case 0xB5C9: +case 0xB7C9: +case 0xB9C9: +case 0xBBC9: +case 0xBDC9: +case 0xBFC9: +case 0xB1CA: +case 0xB3CA: +case 0xB5CA: +case 0xB7CA: +case 0xB9CA: +case 0xBBCA: +case 0xBDCA: +case 0xBFCA: +case 0xB1CB: +case 0xB3CB: +case 0xB5CB: +case 0xB7CB: +case 0xB9CB: +case 0xBBCB: +case 0xBDCB: +case 0xBFCB: +case 0xB1CC: +case 0xB3CC: +case 0xB5CC: +case 0xB7CC: +case 0xB9CC: +case 0xBBCC: +case 0xBDCC: +case 0xBFCC: +case 0xB1CD: +case 0xB3CD: +case 0xB5CD: +case 0xB7CD: +case 0xB9CD: +case 0xBBCD: +case 0xBDCD: +case 0xBFCD: +case 0xB1CE: +case 0xB3CE: +case 0xB5CE: +case 0xB7CE: +case 0xB9CE: +case 0xBBCE: +case 0xBDCE: +case 0xBFCE: +case 0xB1CF: +case 0xB3CF: +case 0xB5CF: +case 0xB7CF: +case 0xB9CF: +case 0xBBCF: +case 0xBDCF: +case 0xBFCF: + +// CMPA +case 0xB1C8: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3D0: +case 0xB5D0: +case 0xB7D0: +case 0xB9D0: +case 0xBBD0: +case 0xBDD0: +case 0xBFD0: +case 0xB1D1: +case 0xB3D1: +case 0xB5D1: +case 0xB7D1: +case 0xB9D1: +case 0xBBD1: +case 0xBDD1: +case 0xBFD1: +case 0xB1D2: +case 0xB3D2: +case 0xB5D2: +case 0xB7D2: +case 0xB9D2: +case 0xBBD2: +case 0xBDD2: +case 0xBFD2: +case 0xB1D3: +case 0xB3D3: +case 0xB5D3: +case 0xB7D3: +case 0xB9D3: +case 0xBBD3: +case 0xBDD3: +case 0xBFD3: +case 0xB1D4: +case 0xB3D4: +case 0xB5D4: +case 0xB7D4: +case 0xB9D4: +case 0xBBD4: +case 0xBDD4: +case 0xBFD4: +case 0xB1D5: +case 0xB3D5: +case 0xB5D5: +case 0xB7D5: +case 0xB9D5: +case 0xBBD5: +case 0xBDD5: +case 0xBFD5: +case 0xB1D6: +case 0xB3D6: +case 0xB5D6: +case 0xB7D6: +case 0xB9D6: +case 0xBBD6: +case 0xBDD6: +case 0xBFD6: +case 0xB1D7: +case 0xB3D7: +case 0xB5D7: +case 0xB7D7: +case 0xB9D7: +case 0xBBD7: +case 0xBDD7: +case 0xBFD7: + +// CMPA +case 0xB1D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3D8: +case 0xB5D8: +case 0xB7D8: +case 0xB9D8: +case 0xBBD8: +case 0xBDD8: +case 0xBFD8: +case 0xB1D9: +case 0xB3D9: +case 0xB5D9: +case 0xB7D9: +case 0xB9D9: +case 0xBBD9: +case 0xBDD9: +case 0xBFD9: +case 0xB1DA: +case 0xB3DA: +case 0xB5DA: +case 0xB7DA: +case 0xB9DA: +case 0xBBDA: +case 0xBDDA: +case 0xBFDA: +case 0xB1DB: +case 0xB3DB: +case 0xB5DB: +case 0xB7DB: +case 0xB9DB: +case 0xBBDB: +case 0xBDDB: +case 0xBFDB: +case 0xB1DC: +case 0xB3DC: +case 0xB5DC: +case 0xB7DC: +case 0xB9DC: +case 0xBBDC: +case 0xBDDC: +case 0xBFDC: +case 0xB1DD: +case 0xB3DD: +case 0xB5DD: +case 0xB7DD: +case 0xB9DD: +case 0xBBDD: +case 0xBDDD: +case 0xBFDD: +case 0xB1DE: +case 0xB3DE: +case 0xB5DE: +case 0xB7DE: +case 0xB9DE: +case 0xBBDE: +case 0xBDDE: +case 0xBFDE: + +// CMPA +case 0xB1D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3E0: +case 0xB5E0: +case 0xB7E0: +case 0xB9E0: +case 0xBBE0: +case 0xBDE0: +case 0xBFE0: +case 0xB1E1: +case 0xB3E1: +case 0xB5E1: +case 0xB7E1: +case 0xB9E1: +case 0xBBE1: +case 0xBDE1: +case 0xBFE1: +case 0xB1E2: +case 0xB3E2: +case 0xB5E2: +case 0xB7E2: +case 0xB9E2: +case 0xBBE2: +case 0xBDE2: +case 0xBFE2: +case 0xB1E3: +case 0xB3E3: +case 0xB5E3: +case 0xB7E3: +case 0xB9E3: +case 0xBBE3: +case 0xBDE3: +case 0xBFE3: +case 0xB1E4: +case 0xB3E4: +case 0xB5E4: +case 0xB7E4: +case 0xB9E4: +case 0xBBE4: +case 0xBDE4: +case 0xBFE4: +case 0xB1E5: +case 0xB3E5: +case 0xB5E5: +case 0xB7E5: +case 0xB9E5: +case 0xBBE5: +case 0xBDE5: +case 0xBFE5: +case 0xB1E6: +case 0xB3E6: +case 0xB5E6: +case 0xB7E6: +case 0xB9E6: +case 0xBBE6: +case 0xBDE6: +case 0xBFE6: + +// CMPA +case 0xB1E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3E8: +case 0xB5E8: +case 0xB7E8: +case 0xB9E8: +case 0xBBE8: +case 0xBDE8: +case 0xBFE8: +case 0xB1E9: +case 0xB3E9: +case 0xB5E9: +case 0xB7E9: +case 0xB9E9: +case 0xBBE9: +case 0xBDE9: +case 0xBFE9: +case 0xB1EA: +case 0xB3EA: +case 0xB5EA: +case 0xB7EA: +case 0xB9EA: +case 0xBBEA: +case 0xBDEA: +case 0xBFEA: +case 0xB1EB: +case 0xB3EB: +case 0xB5EB: +case 0xB7EB: +case 0xB9EB: +case 0xBBEB: +case 0xBDEB: +case 0xBFEB: +case 0xB1EC: +case 0xB3EC: +case 0xB5EC: +case 0xB7EC: +case 0xB9EC: +case 0xBBEC: +case 0xBDEC: +case 0xBFEC: +case 0xB1ED: +case 0xB3ED: +case 0xB5ED: +case 0xB7ED: +case 0xB9ED: +case 0xBBED: +case 0xBDED: +case 0xBFED: +case 0xB1EE: +case 0xB3EE: +case 0xB5EE: +case 0xB7EE: +case 0xB9EE: +case 0xBBEE: +case 0xBDEE: +case 0xBFEE: +case 0xB1EF: +case 0xB3EF: +case 0xB5EF: +case 0xB7EF: +case 0xB9EF: +case 0xBBEF: +case 0xBDEF: +case 0xBFEF: + +// CMPA +case 0xB1E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3F0: +case 0xB5F0: +case 0xB7F0: +case 0xB9F0: +case 0xBBF0: +case 0xBDF0: +case 0xBFF0: +case 0xB1F1: +case 0xB3F1: +case 0xB5F1: +case 0xB7F1: +case 0xB9F1: +case 0xBBF1: +case 0xBDF1: +case 0xBFF1: +case 0xB1F2: +case 0xB3F2: +case 0xB5F2: +case 0xB7F2: +case 0xB9F2: +case 0xBBF2: +case 0xBDF2: +case 0xBFF2: +case 0xB1F3: +case 0xB3F3: +case 0xB5F3: +case 0xB7F3: +case 0xB9F3: +case 0xBBF3: +case 0xBDF3: +case 0xBFF3: +case 0xB1F4: +case 0xB3F4: +case 0xB5F4: +case 0xB7F4: +case 0xB9F4: +case 0xBBF4: +case 0xBDF4: +case 0xBFF4: +case 0xB1F5: +case 0xB3F5: +case 0xB5F5: +case 0xB7F5: +case 0xB9F5: +case 0xBBF5: +case 0xBDF5: +case 0xBFF5: +case 0xB1F6: +case 0xB3F6: +case 0xB5F6: +case 0xB7F6: +case 0xB9F6: +case 0xBBF6: +case 0xBDF6: +case 0xBFF6: +case 0xB1F7: +case 0xB3F7: +case 0xB5F7: +case 0xB7F7: +case 0xB9F7: +case 0xBBF7: +case 0xBDF7: +case 0xBFF7: + +// CMPA +case 0xB1F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3F8: +case 0xB5F8: +case 0xB7F8: +case 0xB9F8: +case 0xBBF8: +case 0xBDF8: +case 0xBFF8: + +// CMPA +case 0xB1F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3F9: +case 0xB5F9: +case 0xB7F9: +case 0xB9F9: +case 0xBBF9: +case 0xBDF9: +case 0xBFF9: + +// CMPA +case 0xB1F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3FA: +case 0xB5FA: +case 0xB7FA: +case 0xB9FA: +case 0xBBFA: +case 0xBDFA: +case 0xBFFA: + +// CMPA +case 0xB1FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3FB: +case 0xB5FB: +case 0xB7FB: +case 0xB9FB: +case 0xBBFB: +case 0xBDFB: +case 0xBFFB: + +// CMPA +case 0xB1FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3FC: +case 0xB5FC: +case 0xB7FC: +case 0xB9FC: +case 0xBBFC: +case 0xBDFC: +case 0xBFFC: + +// CMPA +case 0xB1FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)FETCH_LONG; + PC += 4; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(14) +case 0xB3DF: +case 0xB5DF: +case 0xB7DF: +case 0xB9DF: +case 0xBBDF: +case 0xBDDF: +case 0xBFDF: + +// CMPA +case 0xB1DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) +case 0xB3E7: +case 0xB5E7: +case 0xB7E7: +case 0xB9E7: +case 0xBBE7: +case 0xBDE7: +case 0xBFE7: + +// CMPA +case 0xB1E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst - src; + CPU->flag_notZ = res; + CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23; + CPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24; + CPU->flag_N = res >> 24; +} +RET(6) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_opC.inc b/libmednahawk/src/hw_cpu/c68k/c68k_opC.inc new file mode 100644 index 0000000000..d7f7d498e3 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_opC.inc @@ -0,0 +1,5283 @@ +case 0xC200: +case 0xC400: +case 0xC600: +case 0xC800: +case 0xCA00: +case 0xCC00: +case 0xCE00: +case 0xC001: +case 0xC201: +case 0xC401: +case 0xC601: +case 0xC801: +case 0xCA01: +case 0xCC01: +case 0xCE01: +case 0xC002: +case 0xC202: +case 0xC402: +case 0xC602: +case 0xC802: +case 0xCA02: +case 0xCC02: +case 0xCE02: +case 0xC003: +case 0xC203: +case 0xC403: +case 0xC603: +case 0xC803: +case 0xCA03: +case 0xCC03: +case 0xCE03: +case 0xC004: +case 0xC204: +case 0xC404: +case 0xC604: +case 0xC804: +case 0xCA04: +case 0xCC04: +case 0xCE04: +case 0xC005: +case 0xC205: +case 0xC405: +case 0xC605: +case 0xC805: +case 0xCA05: +case 0xCC05: +case 0xCE05: +case 0xC006: +case 0xC206: +case 0xC406: +case 0xC606: +case 0xC806: +case 0xCA06: +case 0xCC06: +case 0xCE06: +case 0xC007: +case 0xC207: +case 0xC407: +case 0xC607: +case 0xC807: +case 0xCA07: +case 0xCC07: +case 0xCE07: + +// ANDaD +case 0xC000: +{ + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC210: +case 0xC410: +case 0xC610: +case 0xC810: +case 0xCA10: +case 0xCC10: +case 0xCE10: +case 0xC011: +case 0xC211: +case 0xC411: +case 0xC611: +case 0xC811: +case 0xCA11: +case 0xCC11: +case 0xCE11: +case 0xC012: +case 0xC212: +case 0xC412: +case 0xC612: +case 0xC812: +case 0xCA12: +case 0xCC12: +case 0xCE12: +case 0xC013: +case 0xC213: +case 0xC413: +case 0xC613: +case 0xC813: +case 0xCA13: +case 0xCC13: +case 0xCE13: +case 0xC014: +case 0xC214: +case 0xC414: +case 0xC614: +case 0xC814: +case 0xCA14: +case 0xCC14: +case 0xCE14: +case 0xC015: +case 0xC215: +case 0xC415: +case 0xC615: +case 0xC815: +case 0xCA15: +case 0xCC15: +case 0xCE15: +case 0xC016: +case 0xC216: +case 0xC416: +case 0xC616: +case 0xC816: +case 0xCA16: +case 0xCC16: +case 0xCE16: +case 0xC017: +case 0xC217: +case 0xC417: +case 0xC617: +case 0xC817: +case 0xCA17: +case 0xCC17: +case 0xCE17: + +// ANDaD +case 0xC010: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC218: +case 0xC418: +case 0xC618: +case 0xC818: +case 0xCA18: +case 0xCC18: +case 0xCE18: +case 0xC019: +case 0xC219: +case 0xC419: +case 0xC619: +case 0xC819: +case 0xCA19: +case 0xCC19: +case 0xCE19: +case 0xC01A: +case 0xC21A: +case 0xC41A: +case 0xC61A: +case 0xC81A: +case 0xCA1A: +case 0xCC1A: +case 0xCE1A: +case 0xC01B: +case 0xC21B: +case 0xC41B: +case 0xC61B: +case 0xC81B: +case 0xCA1B: +case 0xCC1B: +case 0xCE1B: +case 0xC01C: +case 0xC21C: +case 0xC41C: +case 0xC61C: +case 0xC81C: +case 0xCA1C: +case 0xCC1C: +case 0xCE1C: +case 0xC01D: +case 0xC21D: +case 0xC41D: +case 0xC61D: +case 0xC81D: +case 0xCA1D: +case 0xCC1D: +case 0xCE1D: +case 0xC01E: +case 0xC21E: +case 0xC41E: +case 0xC61E: +case 0xC81E: +case 0xCA1E: +case 0xCC1E: +case 0xCE1E: + +// ANDaD +case 0xC018: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC220: +case 0xC420: +case 0xC620: +case 0xC820: +case 0xCA20: +case 0xCC20: +case 0xCE20: +case 0xC021: +case 0xC221: +case 0xC421: +case 0xC621: +case 0xC821: +case 0xCA21: +case 0xCC21: +case 0xCE21: +case 0xC022: +case 0xC222: +case 0xC422: +case 0xC622: +case 0xC822: +case 0xCA22: +case 0xCC22: +case 0xCE22: +case 0xC023: +case 0xC223: +case 0xC423: +case 0xC623: +case 0xC823: +case 0xCA23: +case 0xCC23: +case 0xCE23: +case 0xC024: +case 0xC224: +case 0xC424: +case 0xC624: +case 0xC824: +case 0xCA24: +case 0xCC24: +case 0xCE24: +case 0xC025: +case 0xC225: +case 0xC425: +case 0xC625: +case 0xC825: +case 0xCA25: +case 0xCC25: +case 0xCE25: +case 0xC026: +case 0xC226: +case 0xC426: +case 0xC626: +case 0xC826: +case 0xCA26: +case 0xCC26: +case 0xCE26: + +// ANDaD +case 0xC020: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC228: +case 0xC428: +case 0xC628: +case 0xC828: +case 0xCA28: +case 0xCC28: +case 0xCE28: +case 0xC029: +case 0xC229: +case 0xC429: +case 0xC629: +case 0xC829: +case 0xCA29: +case 0xCC29: +case 0xCE29: +case 0xC02A: +case 0xC22A: +case 0xC42A: +case 0xC62A: +case 0xC82A: +case 0xCA2A: +case 0xCC2A: +case 0xCE2A: +case 0xC02B: +case 0xC22B: +case 0xC42B: +case 0xC62B: +case 0xC82B: +case 0xCA2B: +case 0xCC2B: +case 0xCE2B: +case 0xC02C: +case 0xC22C: +case 0xC42C: +case 0xC62C: +case 0xC82C: +case 0xCA2C: +case 0xCC2C: +case 0xCE2C: +case 0xC02D: +case 0xC22D: +case 0xC42D: +case 0xC62D: +case 0xC82D: +case 0xCA2D: +case 0xCC2D: +case 0xCE2D: +case 0xC02E: +case 0xC22E: +case 0xC42E: +case 0xC62E: +case 0xC82E: +case 0xCA2E: +case 0xCC2E: +case 0xCE2E: +case 0xC02F: +case 0xC22F: +case 0xC42F: +case 0xC62F: +case 0xC82F: +case 0xCA2F: +case 0xCC2F: +case 0xCE2F: + +// ANDaD +case 0xC028: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC230: +case 0xC430: +case 0xC630: +case 0xC830: +case 0xCA30: +case 0xCC30: +case 0xCE30: +case 0xC031: +case 0xC231: +case 0xC431: +case 0xC631: +case 0xC831: +case 0xCA31: +case 0xCC31: +case 0xCE31: +case 0xC032: +case 0xC232: +case 0xC432: +case 0xC632: +case 0xC832: +case 0xCA32: +case 0xCC32: +case 0xCE32: +case 0xC033: +case 0xC233: +case 0xC433: +case 0xC633: +case 0xC833: +case 0xCA33: +case 0xCC33: +case 0xCE33: +case 0xC034: +case 0xC234: +case 0xC434: +case 0xC634: +case 0xC834: +case 0xCA34: +case 0xCC34: +case 0xCE34: +case 0xC035: +case 0xC235: +case 0xC435: +case 0xC635: +case 0xC835: +case 0xCA35: +case 0xCC35: +case 0xCE35: +case 0xC036: +case 0xC236: +case 0xC436: +case 0xC636: +case 0xC836: +case 0xCA36: +case 0xCC36: +case 0xCE36: +case 0xC037: +case 0xC237: +case 0xC437: +case 0xC637: +case 0xC837: +case 0xCA37: +case 0xCC37: +case 0xCE37: + +// ANDaD +case 0xC030: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC238: +case 0xC438: +case 0xC638: +case 0xC838: +case 0xCA38: +case 0xCC38: +case 0xCE38: + +// ANDaD +case 0xC038: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC239: +case 0xC439: +case 0xC639: +case 0xC839: +case 0xCA39: +case 0xCC39: +case 0xCE39: + +// ANDaD +case 0xC039: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC23A: +case 0xC43A: +case 0xC63A: +case 0xC83A: +case 0xCA3A: +case 0xCC3A: +case 0xCE3A: + +// ANDaD +case 0xC03A: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC23B: +case 0xC43B: +case 0xC63B: +case 0xC83B: +case 0xCA3B: +case 0xCC3B: +case 0xCE3B: + +// ANDaD +case 0xC03B: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC23C: +case 0xC43C: +case 0xC63C: +case 0xC83C: +case 0xCA3C: +case 0xCC3C: +case 0xCE3C: + +// ANDaD +case 0xC03C: +{ + u32 res; + u32 src; + src = FETCH_BYTE; + PC += 2; + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0xC21F: +case 0xC41F: +case 0xC61F: +case 0xC81F: +case 0xCA1F: +case 0xCC1F: +case 0xCE1F: + +// ANDaD +case 0xC01F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC227: +case 0xC427: +case 0xC627: +case 0xC827: +case 0xCA27: +case 0xCC27: +case 0xCE27: + +// ANDaD +case 0xC027: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + res = (u8)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC240: +case 0xC440: +case 0xC640: +case 0xC840: +case 0xCA40: +case 0xCC40: +case 0xCE40: +case 0xC041: +case 0xC241: +case 0xC441: +case 0xC641: +case 0xC841: +case 0xCA41: +case 0xCC41: +case 0xCE41: +case 0xC042: +case 0xC242: +case 0xC442: +case 0xC642: +case 0xC842: +case 0xCA42: +case 0xCC42: +case 0xCE42: +case 0xC043: +case 0xC243: +case 0xC443: +case 0xC643: +case 0xC843: +case 0xCA43: +case 0xCC43: +case 0xCE43: +case 0xC044: +case 0xC244: +case 0xC444: +case 0xC644: +case 0xC844: +case 0xCA44: +case 0xCC44: +case 0xCE44: +case 0xC045: +case 0xC245: +case 0xC445: +case 0xC645: +case 0xC845: +case 0xCA45: +case 0xCC45: +case 0xCE45: +case 0xC046: +case 0xC246: +case 0xC446: +case 0xC646: +case 0xC846: +case 0xCA46: +case 0xCC46: +case 0xCE46: +case 0xC047: +case 0xC247: +case 0xC447: +case 0xC647: +case 0xC847: +case 0xCA47: +case 0xCC47: +case 0xCE47: + +// ANDaD +case 0xC040: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC250: +case 0xC450: +case 0xC650: +case 0xC850: +case 0xCA50: +case 0xCC50: +case 0xCE50: +case 0xC051: +case 0xC251: +case 0xC451: +case 0xC651: +case 0xC851: +case 0xCA51: +case 0xCC51: +case 0xCE51: +case 0xC052: +case 0xC252: +case 0xC452: +case 0xC652: +case 0xC852: +case 0xCA52: +case 0xCC52: +case 0xCE52: +case 0xC053: +case 0xC253: +case 0xC453: +case 0xC653: +case 0xC853: +case 0xCA53: +case 0xCC53: +case 0xCE53: +case 0xC054: +case 0xC254: +case 0xC454: +case 0xC654: +case 0xC854: +case 0xCA54: +case 0xCC54: +case 0xCE54: +case 0xC055: +case 0xC255: +case 0xC455: +case 0xC655: +case 0xC855: +case 0xCA55: +case 0xCC55: +case 0xCE55: +case 0xC056: +case 0xC256: +case 0xC456: +case 0xC656: +case 0xC856: +case 0xCA56: +case 0xCC56: +case 0xCE56: +case 0xC057: +case 0xC257: +case 0xC457: +case 0xC657: +case 0xC857: +case 0xCA57: +case 0xCC57: +case 0xCE57: + +// ANDaD +case 0xC050: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC258: +case 0xC458: +case 0xC658: +case 0xC858: +case 0xCA58: +case 0xCC58: +case 0xCE58: +case 0xC059: +case 0xC259: +case 0xC459: +case 0xC659: +case 0xC859: +case 0xCA59: +case 0xCC59: +case 0xCE59: +case 0xC05A: +case 0xC25A: +case 0xC45A: +case 0xC65A: +case 0xC85A: +case 0xCA5A: +case 0xCC5A: +case 0xCE5A: +case 0xC05B: +case 0xC25B: +case 0xC45B: +case 0xC65B: +case 0xC85B: +case 0xCA5B: +case 0xCC5B: +case 0xCE5B: +case 0xC05C: +case 0xC25C: +case 0xC45C: +case 0xC65C: +case 0xC85C: +case 0xCA5C: +case 0xCC5C: +case 0xCE5C: +case 0xC05D: +case 0xC25D: +case 0xC45D: +case 0xC65D: +case 0xC85D: +case 0xCA5D: +case 0xCC5D: +case 0xCE5D: +case 0xC05E: +case 0xC25E: +case 0xC45E: +case 0xC65E: +case 0xC85E: +case 0xCA5E: +case 0xCC5E: +case 0xCE5E: + +// ANDaD +case 0xC058: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC260: +case 0xC460: +case 0xC660: +case 0xC860: +case 0xCA60: +case 0xCC60: +case 0xCE60: +case 0xC061: +case 0xC261: +case 0xC461: +case 0xC661: +case 0xC861: +case 0xCA61: +case 0xCC61: +case 0xCE61: +case 0xC062: +case 0xC262: +case 0xC462: +case 0xC662: +case 0xC862: +case 0xCA62: +case 0xCC62: +case 0xCE62: +case 0xC063: +case 0xC263: +case 0xC463: +case 0xC663: +case 0xC863: +case 0xCA63: +case 0xCC63: +case 0xCE63: +case 0xC064: +case 0xC264: +case 0xC464: +case 0xC664: +case 0xC864: +case 0xCA64: +case 0xCC64: +case 0xCE64: +case 0xC065: +case 0xC265: +case 0xC465: +case 0xC665: +case 0xC865: +case 0xCA65: +case 0xCC65: +case 0xCE65: +case 0xC066: +case 0xC266: +case 0xC466: +case 0xC666: +case 0xC866: +case 0xCA66: +case 0xCC66: +case 0xCE66: + +// ANDaD +case 0xC060: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC268: +case 0xC468: +case 0xC668: +case 0xC868: +case 0xCA68: +case 0xCC68: +case 0xCE68: +case 0xC069: +case 0xC269: +case 0xC469: +case 0xC669: +case 0xC869: +case 0xCA69: +case 0xCC69: +case 0xCE69: +case 0xC06A: +case 0xC26A: +case 0xC46A: +case 0xC66A: +case 0xC86A: +case 0xCA6A: +case 0xCC6A: +case 0xCE6A: +case 0xC06B: +case 0xC26B: +case 0xC46B: +case 0xC66B: +case 0xC86B: +case 0xCA6B: +case 0xCC6B: +case 0xCE6B: +case 0xC06C: +case 0xC26C: +case 0xC46C: +case 0xC66C: +case 0xC86C: +case 0xCA6C: +case 0xCC6C: +case 0xCE6C: +case 0xC06D: +case 0xC26D: +case 0xC46D: +case 0xC66D: +case 0xC86D: +case 0xCA6D: +case 0xCC6D: +case 0xCE6D: +case 0xC06E: +case 0xC26E: +case 0xC46E: +case 0xC66E: +case 0xC86E: +case 0xCA6E: +case 0xCC6E: +case 0xCE6E: +case 0xC06F: +case 0xC26F: +case 0xC46F: +case 0xC66F: +case 0xC86F: +case 0xCA6F: +case 0xCC6F: +case 0xCE6F: + +// ANDaD +case 0xC068: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC270: +case 0xC470: +case 0xC670: +case 0xC870: +case 0xCA70: +case 0xCC70: +case 0xCE70: +case 0xC071: +case 0xC271: +case 0xC471: +case 0xC671: +case 0xC871: +case 0xCA71: +case 0xCC71: +case 0xCE71: +case 0xC072: +case 0xC272: +case 0xC472: +case 0xC672: +case 0xC872: +case 0xCA72: +case 0xCC72: +case 0xCE72: +case 0xC073: +case 0xC273: +case 0xC473: +case 0xC673: +case 0xC873: +case 0xCA73: +case 0xCC73: +case 0xCE73: +case 0xC074: +case 0xC274: +case 0xC474: +case 0xC674: +case 0xC874: +case 0xCA74: +case 0xCC74: +case 0xCE74: +case 0xC075: +case 0xC275: +case 0xC475: +case 0xC675: +case 0xC875: +case 0xCA75: +case 0xCC75: +case 0xCE75: +case 0xC076: +case 0xC276: +case 0xC476: +case 0xC676: +case 0xC876: +case 0xCA76: +case 0xCC76: +case 0xCE76: +case 0xC077: +case 0xC277: +case 0xC477: +case 0xC677: +case 0xC877: +case 0xCA77: +case 0xCC77: +case 0xCE77: + +// ANDaD +case 0xC070: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC278: +case 0xC478: +case 0xC678: +case 0xC878: +case 0xCA78: +case 0xCC78: +case 0xCE78: + +// ANDaD +case 0xC078: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC279: +case 0xC479: +case 0xC679: +case 0xC879: +case 0xCA79: +case 0xCC79: +case 0xCE79: + +// ANDaD +case 0xC079: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC27A: +case 0xC47A: +case 0xC67A: +case 0xC87A: +case 0xCA7A: +case 0xCC7A: +case 0xCE7A: + +// ANDaD +case 0xC07A: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC27B: +case 0xC47B: +case 0xC67B: +case 0xC87B: +case 0xCA7B: +case 0xCC7B: +case 0xCE7B: + +// ANDaD +case 0xC07B: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC27C: +case 0xC47C: +case 0xC67C: +case 0xC87C: +case 0xCA7C: +case 0xCC7C: +case 0xCE7C: + +// ANDaD +case 0xC07C: +{ + u32 res; + u32 src; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0xC25F: +case 0xC45F: +case 0xC65F: +case 0xC85F: +case 0xCA5F: +case 0xCC5F: +case 0xCE5F: + +// ANDaD +case 0xC05F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC267: +case 0xC467: +case 0xC667: +case 0xC867: +case 0xCA67: +case 0xCC67: +case 0xCE67: + +// ANDaD +case 0xC067: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC280: +case 0xC480: +case 0xC680: +case 0xC880: +case 0xCA80: +case 0xCC80: +case 0xCE80: +case 0xC081: +case 0xC281: +case 0xC481: +case 0xC681: +case 0xC881: +case 0xCA81: +case 0xCC81: +case 0xCE81: +case 0xC082: +case 0xC282: +case 0xC482: +case 0xC682: +case 0xC882: +case 0xCA82: +case 0xCC82: +case 0xCE82: +case 0xC083: +case 0xC283: +case 0xC483: +case 0xC683: +case 0xC883: +case 0xCA83: +case 0xCC83: +case 0xCE83: +case 0xC084: +case 0xC284: +case 0xC484: +case 0xC684: +case 0xC884: +case 0xCA84: +case 0xCC84: +case 0xCE84: +case 0xC085: +case 0xC285: +case 0xC485: +case 0xC685: +case 0xC885: +case 0xCA85: +case 0xCC85: +case 0xCE85: +case 0xC086: +case 0xC286: +case 0xC486: +case 0xC686: +case 0xC886: +case 0xCA86: +case 0xCC86: +case 0xCE86: +case 0xC087: +case 0xC287: +case 0xC487: +case 0xC687: +case 0xC887: +case 0xCA87: +case 0xCC87: +case 0xCE87: + +// ANDaD +case 0xC080: +{ + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0xC290: +case 0xC490: +case 0xC690: +case 0xC890: +case 0xCA90: +case 0xCC90: +case 0xCE90: +case 0xC091: +case 0xC291: +case 0xC491: +case 0xC691: +case 0xC891: +case 0xCA91: +case 0xCC91: +case 0xCE91: +case 0xC092: +case 0xC292: +case 0xC492: +case 0xC692: +case 0xC892: +case 0xCA92: +case 0xCC92: +case 0xCE92: +case 0xC093: +case 0xC293: +case 0xC493: +case 0xC693: +case 0xC893: +case 0xCA93: +case 0xCC93: +case 0xCE93: +case 0xC094: +case 0xC294: +case 0xC494: +case 0xC694: +case 0xC894: +case 0xCA94: +case 0xCC94: +case 0xCE94: +case 0xC095: +case 0xC295: +case 0xC495: +case 0xC695: +case 0xC895: +case 0xCA95: +case 0xCC95: +case 0xCE95: +case 0xC096: +case 0xC296: +case 0xC496: +case 0xC696: +case 0xC896: +case 0xCA96: +case 0xCC96: +case 0xCE96: +case 0xC097: +case 0xC297: +case 0xC497: +case 0xC697: +case 0xC897: +case 0xCA97: +case 0xCC97: +case 0xCE97: + +// ANDaD +case 0xC090: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC298: +case 0xC498: +case 0xC698: +case 0xC898: +case 0xCA98: +case 0xCC98: +case 0xCE98: +case 0xC099: +case 0xC299: +case 0xC499: +case 0xC699: +case 0xC899: +case 0xCA99: +case 0xCC99: +case 0xCE99: +case 0xC09A: +case 0xC29A: +case 0xC49A: +case 0xC69A: +case 0xC89A: +case 0xCA9A: +case 0xCC9A: +case 0xCE9A: +case 0xC09B: +case 0xC29B: +case 0xC49B: +case 0xC69B: +case 0xC89B: +case 0xCA9B: +case 0xCC9B: +case 0xCE9B: +case 0xC09C: +case 0xC29C: +case 0xC49C: +case 0xC69C: +case 0xC89C: +case 0xCA9C: +case 0xCC9C: +case 0xCE9C: +case 0xC09D: +case 0xC29D: +case 0xC49D: +case 0xC69D: +case 0xC89D: +case 0xCA9D: +case 0xCC9D: +case 0xCE9D: +case 0xC09E: +case 0xC29E: +case 0xC49E: +case 0xC69E: +case 0xC89E: +case 0xCA9E: +case 0xCC9E: +case 0xCE9E: + +// ANDaD +case 0xC098: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2A0: +case 0xC4A0: +case 0xC6A0: +case 0xC8A0: +case 0xCAA0: +case 0xCCA0: +case 0xCEA0: +case 0xC0A1: +case 0xC2A1: +case 0xC4A1: +case 0xC6A1: +case 0xC8A1: +case 0xCAA1: +case 0xCCA1: +case 0xCEA1: +case 0xC0A2: +case 0xC2A2: +case 0xC4A2: +case 0xC6A2: +case 0xC8A2: +case 0xCAA2: +case 0xCCA2: +case 0xCEA2: +case 0xC0A3: +case 0xC2A3: +case 0xC4A3: +case 0xC6A3: +case 0xC8A3: +case 0xCAA3: +case 0xCCA3: +case 0xCEA3: +case 0xC0A4: +case 0xC2A4: +case 0xC4A4: +case 0xC6A4: +case 0xC8A4: +case 0xCAA4: +case 0xCCA4: +case 0xCEA4: +case 0xC0A5: +case 0xC2A5: +case 0xC4A5: +case 0xC6A5: +case 0xC8A5: +case 0xCAA5: +case 0xCCA5: +case 0xCEA5: +case 0xC0A6: +case 0xC2A6: +case 0xC4A6: +case 0xC6A6: +case 0xC8A6: +case 0xCAA6: +case 0xCCA6: +case 0xCEA6: + +// ANDaD +case 0xC0A0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2A8: +case 0xC4A8: +case 0xC6A8: +case 0xC8A8: +case 0xCAA8: +case 0xCCA8: +case 0xCEA8: +case 0xC0A9: +case 0xC2A9: +case 0xC4A9: +case 0xC6A9: +case 0xC8A9: +case 0xCAA9: +case 0xCCA9: +case 0xCEA9: +case 0xC0AA: +case 0xC2AA: +case 0xC4AA: +case 0xC6AA: +case 0xC8AA: +case 0xCAAA: +case 0xCCAA: +case 0xCEAA: +case 0xC0AB: +case 0xC2AB: +case 0xC4AB: +case 0xC6AB: +case 0xC8AB: +case 0xCAAB: +case 0xCCAB: +case 0xCEAB: +case 0xC0AC: +case 0xC2AC: +case 0xC4AC: +case 0xC6AC: +case 0xC8AC: +case 0xCAAC: +case 0xCCAC: +case 0xCEAC: +case 0xC0AD: +case 0xC2AD: +case 0xC4AD: +case 0xC6AD: +case 0xC8AD: +case 0xCAAD: +case 0xCCAD: +case 0xCEAD: +case 0xC0AE: +case 0xC2AE: +case 0xC4AE: +case 0xC6AE: +case 0xC8AE: +case 0xCAAE: +case 0xCCAE: +case 0xCEAE: +case 0xC0AF: +case 0xC2AF: +case 0xC4AF: +case 0xC6AF: +case 0xC8AF: +case 0xCAAF: +case 0xCCAF: +case 0xCEAF: + +// ANDaD +case 0xC0A8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2B0: +case 0xC4B0: +case 0xC6B0: +case 0xC8B0: +case 0xCAB0: +case 0xCCB0: +case 0xCEB0: +case 0xC0B1: +case 0xC2B1: +case 0xC4B1: +case 0xC6B1: +case 0xC8B1: +case 0xCAB1: +case 0xCCB1: +case 0xCEB1: +case 0xC0B2: +case 0xC2B2: +case 0xC4B2: +case 0xC6B2: +case 0xC8B2: +case 0xCAB2: +case 0xCCB2: +case 0xCEB2: +case 0xC0B3: +case 0xC2B3: +case 0xC4B3: +case 0xC6B3: +case 0xC8B3: +case 0xCAB3: +case 0xCCB3: +case 0xCEB3: +case 0xC0B4: +case 0xC2B4: +case 0xC4B4: +case 0xC6B4: +case 0xC8B4: +case 0xCAB4: +case 0xCCB4: +case 0xCEB4: +case 0xC0B5: +case 0xC2B5: +case 0xC4B5: +case 0xC6B5: +case 0xC8B5: +case 0xCAB5: +case 0xCCB5: +case 0xCEB5: +case 0xC0B6: +case 0xC2B6: +case 0xC4B6: +case 0xC6B6: +case 0xC8B6: +case 0xCAB6: +case 0xCCB6: +case 0xCEB6: +case 0xC0B7: +case 0xC2B7: +case 0xC4B7: +case 0xC6B7: +case 0xC8B7: +case 0xCAB7: +case 0xCCB7: +case 0xCEB7: + +// ANDaD +case 0xC0B0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2B8: +case 0xC4B8: +case 0xC6B8: +case 0xC8B8: +case 0xCAB8: +case 0xCCB8: +case 0xCEB8: + +// ANDaD +case 0xC0B8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2B9: +case 0xC4B9: +case 0xC6B9: +case 0xC8B9: +case 0xCAB9: +case 0xCCB9: +case 0xCEB9: + +// ANDaD +case 0xC0B9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2BA: +case 0xC4BA: +case 0xC6BA: +case 0xC8BA: +case 0xCABA: +case 0xCCBA: +case 0xCEBA: + +// ANDaD +case 0xC0BA: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2BB: +case 0xC4BB: +case 0xC6BB: +case 0xC8BB: +case 0xCABB: +case 0xCCBB: +case 0xCEBB: + +// ANDaD +case 0xC0BB: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2BC: +case 0xC4BC: +case 0xC6BC: +case 0xC8BC: +case 0xCABC: +case 0xCCBC: +case 0xCEBC: + +// ANDaD +case 0xC0BC: +{ + u32 res; + u32 src; + src = FETCH_LONG; + PC += 4; + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(14) +case 0xC29F: +case 0xC49F: +case 0xC69F: +case 0xC89F: +case 0xCA9F: +case 0xCC9F: +case 0xCE9F: + +// ANDaD +case 0xC09F: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC2A7: +case 0xC4A7: +case 0xC6A7: +case 0xC8A7: +case 0xCAA7: +case 0xCCA7: +case 0xCEA7: + +// ANDaD +case 0xC0A7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + res = (u32)CPU->D[(Opcode >> 9) & 7]; + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xC310: +case 0xC510: +case 0xC710: +case 0xC910: +case 0xCB10: +case 0xCD10: +case 0xCF10: +case 0xC111: +case 0xC311: +case 0xC511: +case 0xC711: +case 0xC911: +case 0xCB11: +case 0xCD11: +case 0xCF11: +case 0xC112: +case 0xC312: +case 0xC512: +case 0xC712: +case 0xC912: +case 0xCB12: +case 0xCD12: +case 0xCF12: +case 0xC113: +case 0xC313: +case 0xC513: +case 0xC713: +case 0xC913: +case 0xCB13: +case 0xCD13: +case 0xCF13: +case 0xC114: +case 0xC314: +case 0xC514: +case 0xC714: +case 0xC914: +case 0xCB14: +case 0xCD14: +case 0xCF14: +case 0xC115: +case 0xC315: +case 0xC515: +case 0xC715: +case 0xC915: +case 0xCB15: +case 0xCD15: +case 0xCF15: +case 0xC116: +case 0xC316: +case 0xC516: +case 0xC716: +case 0xC916: +case 0xCB16: +case 0xCD16: +case 0xCF16: +case 0xC117: +case 0xC317: +case 0xC517: +case 0xC717: +case 0xC917: +case 0xCB17: +case 0xCD17: +case 0xCF17: + +// ANDDa +case 0xC110: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC318: +case 0xC518: +case 0xC718: +case 0xC918: +case 0xCB18: +case 0xCD18: +case 0xCF18: +case 0xC119: +case 0xC319: +case 0xC519: +case 0xC719: +case 0xC919: +case 0xCB19: +case 0xCD19: +case 0xCF19: +case 0xC11A: +case 0xC31A: +case 0xC51A: +case 0xC71A: +case 0xC91A: +case 0xCB1A: +case 0xCD1A: +case 0xCF1A: +case 0xC11B: +case 0xC31B: +case 0xC51B: +case 0xC71B: +case 0xC91B: +case 0xCB1B: +case 0xCD1B: +case 0xCF1B: +case 0xC11C: +case 0xC31C: +case 0xC51C: +case 0xC71C: +case 0xC91C: +case 0xCB1C: +case 0xCD1C: +case 0xCF1C: +case 0xC11D: +case 0xC31D: +case 0xC51D: +case 0xC71D: +case 0xC91D: +case 0xCB1D: +case 0xCD1D: +case 0xCF1D: +case 0xC11E: +case 0xC31E: +case 0xC51E: +case 0xC71E: +case 0xC91E: +case 0xCB1E: +case 0xCD1E: +case 0xCF1E: + +// ANDDa +case 0xC118: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC320: +case 0xC520: +case 0xC720: +case 0xC920: +case 0xCB20: +case 0xCD20: +case 0xCF20: +case 0xC121: +case 0xC321: +case 0xC521: +case 0xC721: +case 0xC921: +case 0xCB21: +case 0xCD21: +case 0xCF21: +case 0xC122: +case 0xC322: +case 0xC522: +case 0xC722: +case 0xC922: +case 0xCB22: +case 0xCD22: +case 0xCF22: +case 0xC123: +case 0xC323: +case 0xC523: +case 0xC723: +case 0xC923: +case 0xCB23: +case 0xCD23: +case 0xCF23: +case 0xC124: +case 0xC324: +case 0xC524: +case 0xC724: +case 0xC924: +case 0xCB24: +case 0xCD24: +case 0xCF24: +case 0xC125: +case 0xC325: +case 0xC525: +case 0xC725: +case 0xC925: +case 0xCB25: +case 0xCD25: +case 0xCF25: +case 0xC126: +case 0xC326: +case 0xC526: +case 0xC726: +case 0xC926: +case 0xCB26: +case 0xCD26: +case 0xCF26: + +// ANDDa +case 0xC120: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC328: +case 0xC528: +case 0xC728: +case 0xC928: +case 0xCB28: +case 0xCD28: +case 0xCF28: +case 0xC129: +case 0xC329: +case 0xC529: +case 0xC729: +case 0xC929: +case 0xCB29: +case 0xCD29: +case 0xCF29: +case 0xC12A: +case 0xC32A: +case 0xC52A: +case 0xC72A: +case 0xC92A: +case 0xCB2A: +case 0xCD2A: +case 0xCF2A: +case 0xC12B: +case 0xC32B: +case 0xC52B: +case 0xC72B: +case 0xC92B: +case 0xCB2B: +case 0xCD2B: +case 0xCF2B: +case 0xC12C: +case 0xC32C: +case 0xC52C: +case 0xC72C: +case 0xC92C: +case 0xCB2C: +case 0xCD2C: +case 0xCF2C: +case 0xC12D: +case 0xC32D: +case 0xC52D: +case 0xC72D: +case 0xC92D: +case 0xCB2D: +case 0xCD2D: +case 0xCF2D: +case 0xC12E: +case 0xC32E: +case 0xC52E: +case 0xC72E: +case 0xC92E: +case 0xCB2E: +case 0xCD2E: +case 0xCF2E: +case 0xC12F: +case 0xC32F: +case 0xC52F: +case 0xC72F: +case 0xC92F: +case 0xCB2F: +case 0xCD2F: +case 0xCF2F: + +// ANDDa +case 0xC128: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC330: +case 0xC530: +case 0xC730: +case 0xC930: +case 0xCB30: +case 0xCD30: +case 0xCF30: +case 0xC131: +case 0xC331: +case 0xC531: +case 0xC731: +case 0xC931: +case 0xCB31: +case 0xCD31: +case 0xCF31: +case 0xC132: +case 0xC332: +case 0xC532: +case 0xC732: +case 0xC932: +case 0xCB32: +case 0xCD32: +case 0xCF32: +case 0xC133: +case 0xC333: +case 0xC533: +case 0xC733: +case 0xC933: +case 0xCB33: +case 0xCD33: +case 0xCF33: +case 0xC134: +case 0xC334: +case 0xC534: +case 0xC734: +case 0xC934: +case 0xCB34: +case 0xCD34: +case 0xCF34: +case 0xC135: +case 0xC335: +case 0xC535: +case 0xC735: +case 0xC935: +case 0xCB35: +case 0xCD35: +case 0xCF35: +case 0xC136: +case 0xC336: +case 0xC536: +case 0xC736: +case 0xC936: +case 0xCB36: +case 0xCD36: +case 0xCF36: +case 0xC137: +case 0xC337: +case 0xC537: +case 0xC737: +case 0xC937: +case 0xCB37: +case 0xCD37: +case 0xCF37: + +// ANDDa +case 0xC130: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC338: +case 0xC538: +case 0xC738: +case 0xC938: +case 0xCB38: +case 0xCD38: +case 0xCF38: + +// ANDDa +case 0xC138: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC339: +case 0xC539: +case 0xC739: +case 0xC939: +case 0xCB39: +case 0xCD39: +case 0xCF39: + +// ANDDa +case 0xC139: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC31F: +case 0xC51F: +case 0xC71F: +case 0xC91F: +case 0xCB1F: +case 0xCD1F: +case 0xCF1F: + +// ANDDa +case 0xC11F: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC327: +case 0xC527: +case 0xC727: +case 0xC927: +case 0xCB27: +case 0xCD27: +case 0xCF27: + +// ANDDa +case 0xC127: +{ + u32 adr; + u32 res; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xC350: +case 0xC550: +case 0xC750: +case 0xC950: +case 0xCB50: +case 0xCD50: +case 0xCF50: +case 0xC151: +case 0xC351: +case 0xC551: +case 0xC751: +case 0xC951: +case 0xCB51: +case 0xCD51: +case 0xCF51: +case 0xC152: +case 0xC352: +case 0xC552: +case 0xC752: +case 0xC952: +case 0xCB52: +case 0xCD52: +case 0xCF52: +case 0xC153: +case 0xC353: +case 0xC553: +case 0xC753: +case 0xC953: +case 0xCB53: +case 0xCD53: +case 0xCF53: +case 0xC154: +case 0xC354: +case 0xC554: +case 0xC754: +case 0xC954: +case 0xCB54: +case 0xCD54: +case 0xCF54: +case 0xC155: +case 0xC355: +case 0xC555: +case 0xC755: +case 0xC955: +case 0xCB55: +case 0xCD55: +case 0xCF55: +case 0xC156: +case 0xC356: +case 0xC556: +case 0xC756: +case 0xC956: +case 0xCB56: +case 0xCD56: +case 0xCF56: +case 0xC157: +case 0xC357: +case 0xC557: +case 0xC757: +case 0xC957: +case 0xCB57: +case 0xCD57: +case 0xCF57: + +// ANDDa +case 0xC150: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC358: +case 0xC558: +case 0xC758: +case 0xC958: +case 0xCB58: +case 0xCD58: +case 0xCF58: +case 0xC159: +case 0xC359: +case 0xC559: +case 0xC759: +case 0xC959: +case 0xCB59: +case 0xCD59: +case 0xCF59: +case 0xC15A: +case 0xC35A: +case 0xC55A: +case 0xC75A: +case 0xC95A: +case 0xCB5A: +case 0xCD5A: +case 0xCF5A: +case 0xC15B: +case 0xC35B: +case 0xC55B: +case 0xC75B: +case 0xC95B: +case 0xCB5B: +case 0xCD5B: +case 0xCF5B: +case 0xC15C: +case 0xC35C: +case 0xC55C: +case 0xC75C: +case 0xC95C: +case 0xCB5C: +case 0xCD5C: +case 0xCF5C: +case 0xC15D: +case 0xC35D: +case 0xC55D: +case 0xC75D: +case 0xC95D: +case 0xCB5D: +case 0xCD5D: +case 0xCF5D: +case 0xC15E: +case 0xC35E: +case 0xC55E: +case 0xC75E: +case 0xC95E: +case 0xCB5E: +case 0xCD5E: +case 0xCF5E: + +// ANDDa +case 0xC158: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC360: +case 0xC560: +case 0xC760: +case 0xC960: +case 0xCB60: +case 0xCD60: +case 0xCF60: +case 0xC161: +case 0xC361: +case 0xC561: +case 0xC761: +case 0xC961: +case 0xCB61: +case 0xCD61: +case 0xCF61: +case 0xC162: +case 0xC362: +case 0xC562: +case 0xC762: +case 0xC962: +case 0xCB62: +case 0xCD62: +case 0xCF62: +case 0xC163: +case 0xC363: +case 0xC563: +case 0xC763: +case 0xC963: +case 0xCB63: +case 0xCD63: +case 0xCF63: +case 0xC164: +case 0xC364: +case 0xC564: +case 0xC764: +case 0xC964: +case 0xCB64: +case 0xCD64: +case 0xCF64: +case 0xC165: +case 0xC365: +case 0xC565: +case 0xC765: +case 0xC965: +case 0xCB65: +case 0xCD65: +case 0xCF65: +case 0xC166: +case 0xC366: +case 0xC566: +case 0xC766: +case 0xC966: +case 0xCB66: +case 0xCD66: +case 0xCF66: + +// ANDDa +case 0xC160: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC368: +case 0xC568: +case 0xC768: +case 0xC968: +case 0xCB68: +case 0xCD68: +case 0xCF68: +case 0xC169: +case 0xC369: +case 0xC569: +case 0xC769: +case 0xC969: +case 0xCB69: +case 0xCD69: +case 0xCF69: +case 0xC16A: +case 0xC36A: +case 0xC56A: +case 0xC76A: +case 0xC96A: +case 0xCB6A: +case 0xCD6A: +case 0xCF6A: +case 0xC16B: +case 0xC36B: +case 0xC56B: +case 0xC76B: +case 0xC96B: +case 0xCB6B: +case 0xCD6B: +case 0xCF6B: +case 0xC16C: +case 0xC36C: +case 0xC56C: +case 0xC76C: +case 0xC96C: +case 0xCB6C: +case 0xCD6C: +case 0xCF6C: +case 0xC16D: +case 0xC36D: +case 0xC56D: +case 0xC76D: +case 0xC96D: +case 0xCB6D: +case 0xCD6D: +case 0xCF6D: +case 0xC16E: +case 0xC36E: +case 0xC56E: +case 0xC76E: +case 0xC96E: +case 0xCB6E: +case 0xCD6E: +case 0xCF6E: +case 0xC16F: +case 0xC36F: +case 0xC56F: +case 0xC76F: +case 0xC96F: +case 0xCB6F: +case 0xCD6F: +case 0xCF6F: + +// ANDDa +case 0xC168: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC370: +case 0xC570: +case 0xC770: +case 0xC970: +case 0xCB70: +case 0xCD70: +case 0xCF70: +case 0xC171: +case 0xC371: +case 0xC571: +case 0xC771: +case 0xC971: +case 0xCB71: +case 0xCD71: +case 0xCF71: +case 0xC172: +case 0xC372: +case 0xC572: +case 0xC772: +case 0xC972: +case 0xCB72: +case 0xCD72: +case 0xCF72: +case 0xC173: +case 0xC373: +case 0xC573: +case 0xC773: +case 0xC973: +case 0xCB73: +case 0xCD73: +case 0xCF73: +case 0xC174: +case 0xC374: +case 0xC574: +case 0xC774: +case 0xC974: +case 0xCB74: +case 0xCD74: +case 0xCF74: +case 0xC175: +case 0xC375: +case 0xC575: +case 0xC775: +case 0xC975: +case 0xCB75: +case 0xCD75: +case 0xCF75: +case 0xC176: +case 0xC376: +case 0xC576: +case 0xC776: +case 0xC976: +case 0xCB76: +case 0xCD76: +case 0xCF76: +case 0xC177: +case 0xC377: +case 0xC577: +case 0xC777: +case 0xC977: +case 0xCB77: +case 0xCD77: +case 0xCF77: + +// ANDDa +case 0xC170: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC378: +case 0xC578: +case 0xC778: +case 0xC978: +case 0xCB78: +case 0xCD78: +case 0xCF78: + +// ANDDa +case 0xC178: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC379: +case 0xC579: +case 0xC779: +case 0xC979: +case 0xCB79: +case 0xCD79: +case 0xCF79: + +// ANDDa +case 0xC179: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC35F: +case 0xC55F: +case 0xC75F: +case 0xC95F: +case 0xCB5F: +case 0xCD5F: +case 0xCF5F: + +// ANDDa +case 0xC15F: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC367: +case 0xC567: +case 0xC767: +case 0xC967: +case 0xCB67: +case 0xCD67: +case 0xCF67: + +// ANDDa +case 0xC167: +{ + u32 adr; + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 8; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xC390: +case 0xC590: +case 0xC790: +case 0xC990: +case 0xCB90: +case 0xCD90: +case 0xCF90: +case 0xC191: +case 0xC391: +case 0xC591: +case 0xC791: +case 0xC991: +case 0xCB91: +case 0xCD91: +case 0xCF91: +case 0xC192: +case 0xC392: +case 0xC592: +case 0xC792: +case 0xC992: +case 0xCB92: +case 0xCD92: +case 0xCF92: +case 0xC193: +case 0xC393: +case 0xC593: +case 0xC793: +case 0xC993: +case 0xCB93: +case 0xCD93: +case 0xCF93: +case 0xC194: +case 0xC394: +case 0xC594: +case 0xC794: +case 0xC994: +case 0xCB94: +case 0xCD94: +case 0xCF94: +case 0xC195: +case 0xC395: +case 0xC595: +case 0xC795: +case 0xC995: +case 0xCB95: +case 0xCD95: +case 0xCF95: +case 0xC196: +case 0xC396: +case 0xC596: +case 0xC796: +case 0xC996: +case 0xCB96: +case 0xCD96: +case 0xCF96: +case 0xC197: +case 0xC397: +case 0xC597: +case 0xC797: +case 0xC997: +case 0xCB97: +case 0xCD97: +case 0xCF97: + +// ANDDa +case 0xC190: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC398: +case 0xC598: +case 0xC798: +case 0xC998: +case 0xCB98: +case 0xCD98: +case 0xCF98: +case 0xC199: +case 0xC399: +case 0xC599: +case 0xC799: +case 0xC999: +case 0xCB99: +case 0xCD99: +case 0xCF99: +case 0xC19A: +case 0xC39A: +case 0xC59A: +case 0xC79A: +case 0xC99A: +case 0xCB9A: +case 0xCD9A: +case 0xCF9A: +case 0xC19B: +case 0xC39B: +case 0xC59B: +case 0xC79B: +case 0xC99B: +case 0xCB9B: +case 0xCD9B: +case 0xCF9B: +case 0xC19C: +case 0xC39C: +case 0xC59C: +case 0xC79C: +case 0xC99C: +case 0xCB9C: +case 0xCD9C: +case 0xCF9C: +case 0xC19D: +case 0xC39D: +case 0xC59D: +case 0xC79D: +case 0xC99D: +case 0xCB9D: +case 0xCD9D: +case 0xCF9D: +case 0xC19E: +case 0xC39E: +case 0xC59E: +case 0xC79E: +case 0xC99E: +case 0xCB9E: +case 0xCD9E: +case 0xCF9E: + +// ANDDa +case 0xC198: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC3A0: +case 0xC5A0: +case 0xC7A0: +case 0xC9A0: +case 0xCBA0: +case 0xCDA0: +case 0xCFA0: +case 0xC1A1: +case 0xC3A1: +case 0xC5A1: +case 0xC7A1: +case 0xC9A1: +case 0xCBA1: +case 0xCDA1: +case 0xCFA1: +case 0xC1A2: +case 0xC3A2: +case 0xC5A2: +case 0xC7A2: +case 0xC9A2: +case 0xCBA2: +case 0xCDA2: +case 0xCFA2: +case 0xC1A3: +case 0xC3A3: +case 0xC5A3: +case 0xC7A3: +case 0xC9A3: +case 0xCBA3: +case 0xCDA3: +case 0xCFA3: +case 0xC1A4: +case 0xC3A4: +case 0xC5A4: +case 0xC7A4: +case 0xC9A4: +case 0xCBA4: +case 0xCDA4: +case 0xCFA4: +case 0xC1A5: +case 0xC3A5: +case 0xC5A5: +case 0xC7A5: +case 0xC9A5: +case 0xCBA5: +case 0xCDA5: +case 0xCFA5: +case 0xC1A6: +case 0xC3A6: +case 0xC5A6: +case 0xC7A6: +case 0xC9A6: +case 0xCBA6: +case 0xCDA6: +case 0xCFA6: + +// ANDDa +case 0xC1A0: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC3A8: +case 0xC5A8: +case 0xC7A8: +case 0xC9A8: +case 0xCBA8: +case 0xCDA8: +case 0xCFA8: +case 0xC1A9: +case 0xC3A9: +case 0xC5A9: +case 0xC7A9: +case 0xC9A9: +case 0xCBA9: +case 0xCDA9: +case 0xCFA9: +case 0xC1AA: +case 0xC3AA: +case 0xC5AA: +case 0xC7AA: +case 0xC9AA: +case 0xCBAA: +case 0xCDAA: +case 0xCFAA: +case 0xC1AB: +case 0xC3AB: +case 0xC5AB: +case 0xC7AB: +case 0xC9AB: +case 0xCBAB: +case 0xCDAB: +case 0xCFAB: +case 0xC1AC: +case 0xC3AC: +case 0xC5AC: +case 0xC7AC: +case 0xC9AC: +case 0xCBAC: +case 0xCDAC: +case 0xCFAC: +case 0xC1AD: +case 0xC3AD: +case 0xC5AD: +case 0xC7AD: +case 0xC9AD: +case 0xCBAD: +case 0xCDAD: +case 0xCFAD: +case 0xC1AE: +case 0xC3AE: +case 0xC5AE: +case 0xC7AE: +case 0xC9AE: +case 0xCBAE: +case 0xCDAE: +case 0xCFAE: +case 0xC1AF: +case 0xC3AF: +case 0xC5AF: +case 0xC7AF: +case 0xC9AF: +case 0xCBAF: +case 0xCDAF: +case 0xCFAF: + +// ANDDa +case 0xC1A8: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC3B0: +case 0xC5B0: +case 0xC7B0: +case 0xC9B0: +case 0xCBB0: +case 0xCDB0: +case 0xCFB0: +case 0xC1B1: +case 0xC3B1: +case 0xC5B1: +case 0xC7B1: +case 0xC9B1: +case 0xCBB1: +case 0xCDB1: +case 0xCFB1: +case 0xC1B2: +case 0xC3B2: +case 0xC5B2: +case 0xC7B2: +case 0xC9B2: +case 0xCBB2: +case 0xCDB2: +case 0xCFB2: +case 0xC1B3: +case 0xC3B3: +case 0xC5B3: +case 0xC7B3: +case 0xC9B3: +case 0xCBB3: +case 0xCDB3: +case 0xCFB3: +case 0xC1B4: +case 0xC3B4: +case 0xC5B4: +case 0xC7B4: +case 0xC9B4: +case 0xCBB4: +case 0xCDB4: +case 0xCFB4: +case 0xC1B5: +case 0xC3B5: +case 0xC5B5: +case 0xC7B5: +case 0xC9B5: +case 0xCBB5: +case 0xCDB5: +case 0xCFB5: +case 0xC1B6: +case 0xC3B6: +case 0xC5B6: +case 0xC7B6: +case 0xC9B6: +case 0xCBB6: +case 0xCDB6: +case 0xCFB6: +case 0xC1B7: +case 0xC3B7: +case 0xC5B7: +case 0xC7B7: +case 0xC9B7: +case 0xCBB7: +case 0xCDB7: +case 0xCFB7: + +// ANDDa +case 0xC1B0: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC3B8: +case 0xC5B8: +case 0xC7B8: +case 0xC9B8: +case 0xCBB8: +case 0xCDB8: +case 0xCFB8: + +// ANDDa +case 0xC1B8: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC3B9: +case 0xC5B9: +case 0xC7B9: +case 0xC9B9: +case 0xCBB9: +case 0xCDB9: +case 0xCFB9: + +// ANDDa +case 0xC1B9: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC39F: +case 0xC59F: +case 0xC79F: +case 0xC99F: +case 0xCB9F: +case 0xCD9F: +case 0xCF9F: + +// ANDDa +case 0xC19F: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC3A7: +case 0xC5A7: +case 0xC7A7: +case 0xC9A7: +case 0xCBA7: +case 0xCDA7: +case 0xCFA7: + +// ANDDa +case 0xC1A7: +{ + u32 adr; + u32 res; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, res) + res &= src; + CPU->flag_C = 0; + CPU->flag_V = 0; + CPU->flag_notZ = res; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xC300: +case 0xC500: +case 0xC700: +case 0xC900: +case 0xCB00: +case 0xCD00: +case 0xCF00: +case 0xC101: +case 0xC301: +case 0xC501: +case 0xC701: +case 0xC901: +case 0xCB01: +case 0xCD01: +case 0xCF01: +case 0xC102: +case 0xC302: +case 0xC502: +case 0xC702: +case 0xC902: +case 0xCB02: +case 0xCD02: +case 0xCF02: +case 0xC103: +case 0xC303: +case 0xC503: +case 0xC703: +case 0xC903: +case 0xCB03: +case 0xCD03: +case 0xCF03: +case 0xC104: +case 0xC304: +case 0xC504: +case 0xC704: +case 0xC904: +case 0xCB04: +case 0xCD04: +case 0xCF04: +case 0xC105: +case 0xC305: +case 0xC505: +case 0xC705: +case 0xC905: +case 0xCB05: +case 0xCD05: +case 0xCF05: +case 0xC106: +case 0xC306: +case 0xC506: +case 0xC706: +case 0xC906: +case 0xCB06: +case 0xCD06: +case 0xCF06: +case 0xC107: +case 0xC307: +case 0xC507: +case 0xC707: +case 0xC907: +case 0xCB07: +case 0xCD07: +case 0xCF07: + +// ABCD +case 0xC100: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = (dst & 0xF) + (src & 0xF) + ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0xC308: +case 0xC508: +case 0xC708: +case 0xC908: +case 0xCB08: +case 0xCD08: +case 0xC109: +case 0xC309: +case 0xC509: +case 0xC709: +case 0xC909: +case 0xCB09: +case 0xCD09: +case 0xC10A: +case 0xC30A: +case 0xC50A: +case 0xC70A: +case 0xC90A: +case 0xCB0A: +case 0xCD0A: +case 0xC10B: +case 0xC30B: +case 0xC50B: +case 0xC70B: +case 0xC90B: +case 0xCB0B: +case 0xCD0B: +case 0xC10C: +case 0xC30C: +case 0xC50C: +case 0xC70C: +case 0xC90C: +case 0xCB0C: +case 0xCD0C: +case 0xC10D: +case 0xC30D: +case 0xC50D: +case 0xC70D: +case 0xC90D: +case 0xCB0D: +case 0xCD0D: +case 0xC10E: +case 0xC30E: +case 0xC50E: +case 0xC70E: +case 0xC90E: +case 0xCB0E: +case 0xCD0E: + +// ABCDM +case 0xC108: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0xC30F: +case 0xC50F: +case 0xC70F: +case 0xC90F: +case 0xCB0F: +case 0xCD0F: + +// ABCD7M +case 0xC10F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0xCF09: +case 0xCF0A: +case 0xCF0B: +case 0xCF0C: +case 0xCF0D: +case 0xCF0E: + +// ABCDM7 +case 0xCF08: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) + +// ABCD7M7 +case 0xCF0F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = (dst & 0xF) + (src & 0xF) + ((CPU->flag_X >> C68K_SR_X_SFT) & 1); + if (res > 9) res += 6; + res += (dst & 0xF0) + (src & 0xF0); + if (res > 0x99) + { + res -= 0xA0; + CPU->flag_X = CPU->flag_C = C68K_SR_C; + } + else CPU->flag_X = CPU->flag_C = 0; + CPU->flag_notZ |= res & 0xFF; + CPU->flag_N = res; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0xC2C0: +case 0xC4C0: +case 0xC6C0: +case 0xC8C0: +case 0xCAC0: +case 0xCCC0: +case 0xCEC0: +case 0xC0C1: +case 0xC2C1: +case 0xC4C1: +case 0xC6C1: +case 0xC8C1: +case 0xCAC1: +case 0xCCC1: +case 0xCEC1: +case 0xC0C2: +case 0xC2C2: +case 0xC4C2: +case 0xC6C2: +case 0xC8C2: +case 0xCAC2: +case 0xCCC2: +case 0xCEC2: +case 0xC0C3: +case 0xC2C3: +case 0xC4C3: +case 0xC6C3: +case 0xC8C3: +case 0xCAC3: +case 0xCCC3: +case 0xCEC3: +case 0xC0C4: +case 0xC2C4: +case 0xC4C4: +case 0xC6C4: +case 0xC8C4: +case 0xCAC4: +case 0xCCC4: +case 0xCEC4: +case 0xC0C5: +case 0xC2C5: +case 0xC4C5: +case 0xC6C5: +case 0xC8C5: +case 0xCAC5: +case 0xCCC5: +case 0xCEC5: +case 0xC0C6: +case 0xC2C6: +case 0xC4C6: +case 0xC6C6: +case 0xC8C6: +case 0xCAC6: +case 0xCCC6: +case 0xCEC6: +case 0xC0C7: +case 0xC2C7: +case 0xC4C7: +case 0xC6C7: +case 0xC8C7: +case 0xCAC7: +case 0xCCC7: +case 0xCEC7: + +// MULU +case 0xC0C0: +{ + u32 res; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2D0: +case 0xC4D0: +case 0xC6D0: +case 0xC8D0: +case 0xCAD0: +case 0xCCD0: +case 0xCED0: +case 0xC0D1: +case 0xC2D1: +case 0xC4D1: +case 0xC6D1: +case 0xC8D1: +case 0xCAD1: +case 0xCCD1: +case 0xCED1: +case 0xC0D2: +case 0xC2D2: +case 0xC4D2: +case 0xC6D2: +case 0xC8D2: +case 0xCAD2: +case 0xCCD2: +case 0xCED2: +case 0xC0D3: +case 0xC2D3: +case 0xC4D3: +case 0xC6D3: +case 0xC8D3: +case 0xCAD3: +case 0xCCD3: +case 0xCED3: +case 0xC0D4: +case 0xC2D4: +case 0xC4D4: +case 0xC6D4: +case 0xC8D4: +case 0xCAD4: +case 0xCCD4: +case 0xCED4: +case 0xC0D5: +case 0xC2D5: +case 0xC4D5: +case 0xC6D5: +case 0xC8D5: +case 0xCAD5: +case 0xCCD5: +case 0xCED5: +case 0xC0D6: +case 0xC2D6: +case 0xC4D6: +case 0xC6D6: +case 0xC8D6: +case 0xCAD6: +case 0xCCD6: +case 0xCED6: +case 0xC0D7: +case 0xC2D7: +case 0xC4D7: +case 0xC6D7: +case 0xC8D7: +case 0xCAD7: +case 0xCCD7: +case 0xCED7: + +// MULU +case 0xC0D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2D8: +case 0xC4D8: +case 0xC6D8: +case 0xC8D8: +case 0xCAD8: +case 0xCCD8: +case 0xCED8: +case 0xC0D9: +case 0xC2D9: +case 0xC4D9: +case 0xC6D9: +case 0xC8D9: +case 0xCAD9: +case 0xCCD9: +case 0xCED9: +case 0xC0DA: +case 0xC2DA: +case 0xC4DA: +case 0xC6DA: +case 0xC8DA: +case 0xCADA: +case 0xCCDA: +case 0xCEDA: +case 0xC0DB: +case 0xC2DB: +case 0xC4DB: +case 0xC6DB: +case 0xC8DB: +case 0xCADB: +case 0xCCDB: +case 0xCEDB: +case 0xC0DC: +case 0xC2DC: +case 0xC4DC: +case 0xC6DC: +case 0xC8DC: +case 0xCADC: +case 0xCCDC: +case 0xCEDC: +case 0xC0DD: +case 0xC2DD: +case 0xC4DD: +case 0xC6DD: +case 0xC8DD: +case 0xCADD: +case 0xCCDD: +case 0xCEDD: +case 0xC0DE: +case 0xC2DE: +case 0xC4DE: +case 0xC6DE: +case 0xC8DE: +case 0xCADE: +case 0xCCDE: +case 0xCEDE: + +// MULU +case 0xC0D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2E0: +case 0xC4E0: +case 0xC6E0: +case 0xC8E0: +case 0xCAE0: +case 0xCCE0: +case 0xCEE0: +case 0xC0E1: +case 0xC2E1: +case 0xC4E1: +case 0xC6E1: +case 0xC8E1: +case 0xCAE1: +case 0xCCE1: +case 0xCEE1: +case 0xC0E2: +case 0xC2E2: +case 0xC4E2: +case 0xC6E2: +case 0xC8E2: +case 0xCAE2: +case 0xCCE2: +case 0xCEE2: +case 0xC0E3: +case 0xC2E3: +case 0xC4E3: +case 0xC6E3: +case 0xC8E3: +case 0xCAE3: +case 0xCCE3: +case 0xCEE3: +case 0xC0E4: +case 0xC2E4: +case 0xC4E4: +case 0xC6E4: +case 0xC8E4: +case 0xCAE4: +case 0xCCE4: +case 0xCEE4: +case 0xC0E5: +case 0xC2E5: +case 0xC4E5: +case 0xC6E5: +case 0xC8E5: +case 0xCAE5: +case 0xCCE5: +case 0xCEE5: +case 0xC0E6: +case 0xC2E6: +case 0xC4E6: +case 0xC6E6: +case 0xC8E6: +case 0xCAE6: +case 0xCCE6: +case 0xCEE6: + +// MULU +case 0xC0E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2E8: +case 0xC4E8: +case 0xC6E8: +case 0xC8E8: +case 0xCAE8: +case 0xCCE8: +case 0xCEE8: +case 0xC0E9: +case 0xC2E9: +case 0xC4E9: +case 0xC6E9: +case 0xC8E9: +case 0xCAE9: +case 0xCCE9: +case 0xCEE9: +case 0xC0EA: +case 0xC2EA: +case 0xC4EA: +case 0xC6EA: +case 0xC8EA: +case 0xCAEA: +case 0xCCEA: +case 0xCEEA: +case 0xC0EB: +case 0xC2EB: +case 0xC4EB: +case 0xC6EB: +case 0xC8EB: +case 0xCAEB: +case 0xCCEB: +case 0xCEEB: +case 0xC0EC: +case 0xC2EC: +case 0xC4EC: +case 0xC6EC: +case 0xC8EC: +case 0xCAEC: +case 0xCCEC: +case 0xCEEC: +case 0xC0ED: +case 0xC2ED: +case 0xC4ED: +case 0xC6ED: +case 0xC8ED: +case 0xCAED: +case 0xCCED: +case 0xCEED: +case 0xC0EE: +case 0xC2EE: +case 0xC4EE: +case 0xC6EE: +case 0xC8EE: +case 0xCAEE: +case 0xCCEE: +case 0xCEEE: +case 0xC0EF: +case 0xC2EF: +case 0xC4EF: +case 0xC6EF: +case 0xC8EF: +case 0xCAEF: +case 0xCCEF: +case 0xCEEF: + +// MULU +case 0xC0E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2F0: +case 0xC4F0: +case 0xC6F0: +case 0xC8F0: +case 0xCAF0: +case 0xCCF0: +case 0xCEF0: +case 0xC0F1: +case 0xC2F1: +case 0xC4F1: +case 0xC6F1: +case 0xC8F1: +case 0xCAF1: +case 0xCCF1: +case 0xCEF1: +case 0xC0F2: +case 0xC2F2: +case 0xC4F2: +case 0xC6F2: +case 0xC8F2: +case 0xCAF2: +case 0xCCF2: +case 0xCEF2: +case 0xC0F3: +case 0xC2F3: +case 0xC4F3: +case 0xC6F3: +case 0xC8F3: +case 0xCAF3: +case 0xCCF3: +case 0xCEF3: +case 0xC0F4: +case 0xC2F4: +case 0xC4F4: +case 0xC6F4: +case 0xC8F4: +case 0xCAF4: +case 0xCCF4: +case 0xCEF4: +case 0xC0F5: +case 0xC2F5: +case 0xC4F5: +case 0xC6F5: +case 0xC8F5: +case 0xCAF5: +case 0xCCF5: +case 0xCEF5: +case 0xC0F6: +case 0xC2F6: +case 0xC4F6: +case 0xC6F6: +case 0xC8F6: +case 0xCAF6: +case 0xCCF6: +case 0xCEF6: +case 0xC0F7: +case 0xC2F7: +case 0xC4F7: +case 0xC6F7: +case 0xC8F7: +case 0xCAF7: +case 0xCCF7: +case 0xCEF7: + +// MULU +case 0xC0F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2F8: +case 0xC4F8: +case 0xC6F8: +case 0xC8F8: +case 0xCAF8: +case 0xCCF8: +case 0xCEF8: + +// MULU +case 0xC0F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2F9: +case 0xC4F9: +case 0xC6F9: +case 0xC8F9: +case 0xCAF9: +case 0xCCF9: +case 0xCEF9: + +// MULU +case 0xC0F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2FA: +case 0xC4FA: +case 0xC6FA: +case 0xC8FA: +case 0xCAFA: +case 0xCCFA: +case 0xCEFA: + +// MULU +case 0xC0FA: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2FB: +case 0xC4FB: +case 0xC6FB: +case 0xC8FB: +case 0xCAFB: +case 0xCCFB: +case 0xCEFB: + +// MULU +case 0xC0FB: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2FC: +case 0xC4FC: +case 0xC6FC: +case 0xC8FC: +case 0xCAFC: +case 0xCCFC: +case 0xCEFC: + +// MULU +case 0xC0FC: +{ + u32 res; + u32 src; + src = FETCH_WORD; + PC += 2; + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(54) +case 0xC2DF: +case 0xC4DF: +case 0xC6DF: +case 0xC8DF: +case 0xCADF: +case 0xCCDF: +case 0xCEDF: + +// MULU +case 0xC0DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC2E7: +case 0xC4E7: +case 0xC6E7: +case 0xC8E7: +case 0xCAE7: +case 0xCCE7: +case 0xCEE7: + +// MULU +case 0xC0E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + res = (u16)CPU->D[(Opcode >> 9) & 7]; + res *= src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3C0: +case 0xC5C0: +case 0xC7C0: +case 0xC9C0: +case 0xCBC0: +case 0xCDC0: +case 0xCFC0: +case 0xC1C1: +case 0xC3C1: +case 0xC5C1: +case 0xC7C1: +case 0xC9C1: +case 0xCBC1: +case 0xCDC1: +case 0xCFC1: +case 0xC1C2: +case 0xC3C2: +case 0xC5C2: +case 0xC7C2: +case 0xC9C2: +case 0xCBC2: +case 0xCDC2: +case 0xCFC2: +case 0xC1C3: +case 0xC3C3: +case 0xC5C3: +case 0xC7C3: +case 0xC9C3: +case 0xCBC3: +case 0xCDC3: +case 0xCFC3: +case 0xC1C4: +case 0xC3C4: +case 0xC5C4: +case 0xC7C4: +case 0xC9C4: +case 0xCBC4: +case 0xCDC4: +case 0xCFC4: +case 0xC1C5: +case 0xC3C5: +case 0xC5C5: +case 0xC7C5: +case 0xC9C5: +case 0xCBC5: +case 0xCDC5: +case 0xCFC5: +case 0xC1C6: +case 0xC3C6: +case 0xC5C6: +case 0xC7C6: +case 0xC9C6: +case 0xCBC6: +case 0xCDC6: +case 0xCFC6: +case 0xC1C7: +case 0xC3C7: +case 0xC5C7: +case 0xC7C7: +case 0xC9C7: +case 0xCBC7: +case 0xCDC7: +case 0xCFC7: + +// MULS +case 0xC1C0: +{ + u32 res; + u32 src; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3D0: +case 0xC5D0: +case 0xC7D0: +case 0xC9D0: +case 0xCBD0: +case 0xCDD0: +case 0xCFD0: +case 0xC1D1: +case 0xC3D1: +case 0xC5D1: +case 0xC7D1: +case 0xC9D1: +case 0xCBD1: +case 0xCDD1: +case 0xCFD1: +case 0xC1D2: +case 0xC3D2: +case 0xC5D2: +case 0xC7D2: +case 0xC9D2: +case 0xCBD2: +case 0xCDD2: +case 0xCFD2: +case 0xC1D3: +case 0xC3D3: +case 0xC5D3: +case 0xC7D3: +case 0xC9D3: +case 0xCBD3: +case 0xCDD3: +case 0xCFD3: +case 0xC1D4: +case 0xC3D4: +case 0xC5D4: +case 0xC7D4: +case 0xC9D4: +case 0xCBD4: +case 0xCDD4: +case 0xCFD4: +case 0xC1D5: +case 0xC3D5: +case 0xC5D5: +case 0xC7D5: +case 0xC9D5: +case 0xCBD5: +case 0xCDD5: +case 0xCFD5: +case 0xC1D6: +case 0xC3D6: +case 0xC5D6: +case 0xC7D6: +case 0xC9D6: +case 0xCBD6: +case 0xCDD6: +case 0xCFD6: +case 0xC1D7: +case 0xC3D7: +case 0xC5D7: +case 0xC7D7: +case 0xC9D7: +case 0xCBD7: +case 0xCDD7: +case 0xCFD7: + +// MULS +case 0xC1D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3D8: +case 0xC5D8: +case 0xC7D8: +case 0xC9D8: +case 0xCBD8: +case 0xCDD8: +case 0xCFD8: +case 0xC1D9: +case 0xC3D9: +case 0xC5D9: +case 0xC7D9: +case 0xC9D9: +case 0xCBD9: +case 0xCDD9: +case 0xCFD9: +case 0xC1DA: +case 0xC3DA: +case 0xC5DA: +case 0xC7DA: +case 0xC9DA: +case 0xCBDA: +case 0xCDDA: +case 0xCFDA: +case 0xC1DB: +case 0xC3DB: +case 0xC5DB: +case 0xC7DB: +case 0xC9DB: +case 0xCBDB: +case 0xCDDB: +case 0xCFDB: +case 0xC1DC: +case 0xC3DC: +case 0xC5DC: +case 0xC7DC: +case 0xC9DC: +case 0xCBDC: +case 0xCDDC: +case 0xCFDC: +case 0xC1DD: +case 0xC3DD: +case 0xC5DD: +case 0xC7DD: +case 0xC9DD: +case 0xCBDD: +case 0xCDDD: +case 0xCFDD: +case 0xC1DE: +case 0xC3DE: +case 0xC5DE: +case 0xC7DE: +case 0xC9DE: +case 0xCBDE: +case 0xCDDE: +case 0xCFDE: + +// MULS +case 0xC1D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3E0: +case 0xC5E0: +case 0xC7E0: +case 0xC9E0: +case 0xCBE0: +case 0xCDE0: +case 0xCFE0: +case 0xC1E1: +case 0xC3E1: +case 0xC5E1: +case 0xC7E1: +case 0xC9E1: +case 0xCBE1: +case 0xCDE1: +case 0xCFE1: +case 0xC1E2: +case 0xC3E2: +case 0xC5E2: +case 0xC7E2: +case 0xC9E2: +case 0xCBE2: +case 0xCDE2: +case 0xCFE2: +case 0xC1E3: +case 0xC3E3: +case 0xC5E3: +case 0xC7E3: +case 0xC9E3: +case 0xCBE3: +case 0xCDE3: +case 0xCFE3: +case 0xC1E4: +case 0xC3E4: +case 0xC5E4: +case 0xC7E4: +case 0xC9E4: +case 0xCBE4: +case 0xCDE4: +case 0xCFE4: +case 0xC1E5: +case 0xC3E5: +case 0xC5E5: +case 0xC7E5: +case 0xC9E5: +case 0xCBE5: +case 0xCDE5: +case 0xCFE5: +case 0xC1E6: +case 0xC3E6: +case 0xC5E6: +case 0xC7E6: +case 0xC9E6: +case 0xCBE6: +case 0xCDE6: +case 0xCFE6: + +// MULS +case 0xC1E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3E8: +case 0xC5E8: +case 0xC7E8: +case 0xC9E8: +case 0xCBE8: +case 0xCDE8: +case 0xCFE8: +case 0xC1E9: +case 0xC3E9: +case 0xC5E9: +case 0xC7E9: +case 0xC9E9: +case 0xCBE9: +case 0xCDE9: +case 0xCFE9: +case 0xC1EA: +case 0xC3EA: +case 0xC5EA: +case 0xC7EA: +case 0xC9EA: +case 0xCBEA: +case 0xCDEA: +case 0xCFEA: +case 0xC1EB: +case 0xC3EB: +case 0xC5EB: +case 0xC7EB: +case 0xC9EB: +case 0xCBEB: +case 0xCDEB: +case 0xCFEB: +case 0xC1EC: +case 0xC3EC: +case 0xC5EC: +case 0xC7EC: +case 0xC9EC: +case 0xCBEC: +case 0xCDEC: +case 0xCFEC: +case 0xC1ED: +case 0xC3ED: +case 0xC5ED: +case 0xC7ED: +case 0xC9ED: +case 0xCBED: +case 0xCDED: +case 0xCFED: +case 0xC1EE: +case 0xC3EE: +case 0xC5EE: +case 0xC7EE: +case 0xC9EE: +case 0xCBEE: +case 0xCDEE: +case 0xCFEE: +case 0xC1EF: +case 0xC3EF: +case 0xC5EF: +case 0xC7EF: +case 0xC9EF: +case 0xCBEF: +case 0xCDEF: +case 0xCFEF: + +// MULS +case 0xC1E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3F0: +case 0xC5F0: +case 0xC7F0: +case 0xC9F0: +case 0xCBF0: +case 0xCDF0: +case 0xCFF0: +case 0xC1F1: +case 0xC3F1: +case 0xC5F1: +case 0xC7F1: +case 0xC9F1: +case 0xCBF1: +case 0xCDF1: +case 0xCFF1: +case 0xC1F2: +case 0xC3F2: +case 0xC5F2: +case 0xC7F2: +case 0xC9F2: +case 0xCBF2: +case 0xCDF2: +case 0xCFF2: +case 0xC1F3: +case 0xC3F3: +case 0xC5F3: +case 0xC7F3: +case 0xC9F3: +case 0xCBF3: +case 0xCDF3: +case 0xCFF3: +case 0xC1F4: +case 0xC3F4: +case 0xC5F4: +case 0xC7F4: +case 0xC9F4: +case 0xCBF4: +case 0xCDF4: +case 0xCFF4: +case 0xC1F5: +case 0xC3F5: +case 0xC5F5: +case 0xC7F5: +case 0xC9F5: +case 0xCBF5: +case 0xCDF5: +case 0xCFF5: +case 0xC1F6: +case 0xC3F6: +case 0xC5F6: +case 0xC7F6: +case 0xC9F6: +case 0xCBF6: +case 0xCDF6: +case 0xCFF6: +case 0xC1F7: +case 0xC3F7: +case 0xC5F7: +case 0xC7F7: +case 0xC9F7: +case 0xCBF7: +case 0xCDF7: +case 0xCFF7: + +// MULS +case 0xC1F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3F8: +case 0xC5F8: +case 0xC7F8: +case 0xC9F8: +case 0xCBF8: +case 0xCDF8: +case 0xCFF8: + +// MULS +case 0xC1F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3F9: +case 0xC5F9: +case 0xC7F9: +case 0xC9F9: +case 0xCBF9: +case 0xCDF9: +case 0xCFF9: + +// MULS +case 0xC1F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3FA: +case 0xC5FA: +case 0xC7FA: +case 0xC9FA: +case 0xCBFA: +case 0xCDFA: +case 0xCFFA: + +// MULS +case 0xC1FA: +{ + u32 adr; + u32 res; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3FB: +case 0xC5FB: +case 0xC7FB: +case 0xC9FB: +case 0xCBFB: +case 0xCDFB: +case 0xCFFB: + +// MULS +case 0xC1FB: +{ + u32 adr; + u32 res; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3FC: +case 0xC5FC: +case 0xC7FC: +case 0xC9FC: +case 0xCBFC: +case 0xCDFC: +case 0xCFFC: + +// MULS +case 0xC1FC: +{ + u32 res; + u32 src; + src = (s32)(s16)FETCH_WORD; + PC += 2; + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(54) +case 0xC3DF: +case 0xC5DF: +case 0xC7DF: +case 0xC9DF: +case 0xCBDF: +case 0xCDDF: +case 0xCFDF: + +// MULS +case 0xC1DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC3E7: +case 0xC5E7: +case 0xC7E7: +case 0xC9E7: +case 0xCBE7: +case 0xCDE7: +case 0xCFE7: + +// MULS +case 0xC1E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READSX_WOat_F(adr, src) + res = (s32)(s16)CPU->D[(Opcode >> 9) & 7]; + res *= (s32)src; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + CPU->flag_V = CPU->flag_C = 0; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(50) +case 0xC340: +case 0xC540: +case 0xC740: +case 0xC940: +case 0xCB40: +case 0xCD40: +case 0xCF40: +case 0xC141: +case 0xC341: +case 0xC541: +case 0xC741: +case 0xC941: +case 0xCB41: +case 0xCD41: +case 0xCF41: +case 0xC142: +case 0xC342: +case 0xC542: +case 0xC742: +case 0xC942: +case 0xCB42: +case 0xCD42: +case 0xCF42: +case 0xC143: +case 0xC343: +case 0xC543: +case 0xC743: +case 0xC943: +case 0xCB43: +case 0xCD43: +case 0xCF43: +case 0xC144: +case 0xC344: +case 0xC544: +case 0xC744: +case 0xC944: +case 0xCB44: +case 0xCD44: +case 0xCF44: +case 0xC145: +case 0xC345: +case 0xC545: +case 0xC745: +case 0xC945: +case 0xCB45: +case 0xCD45: +case 0xCF45: +case 0xC146: +case 0xC346: +case 0xC546: +case 0xC746: +case 0xC946: +case 0xCB46: +case 0xCD46: +case 0xCF46: +case 0xC147: +case 0xC347: +case 0xC547: +case 0xC747: +case 0xC947: +case 0xCB47: +case 0xCD47: +case 0xCF47: + +// EXGDD +case 0xC140: +{ + u32 res; + u32 src; + res = (u32)CPU->D[(Opcode >> 0) & 7]; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + res = src; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xC348: +case 0xC548: +case 0xC748: +case 0xC948: +case 0xCB48: +case 0xCD48: +case 0xCF48: +case 0xC149: +case 0xC349: +case 0xC549: +case 0xC749: +case 0xC949: +case 0xCB49: +case 0xCD49: +case 0xCF49: +case 0xC14A: +case 0xC34A: +case 0xC54A: +case 0xC74A: +case 0xC94A: +case 0xCB4A: +case 0xCD4A: +case 0xCF4A: +case 0xC14B: +case 0xC34B: +case 0xC54B: +case 0xC74B: +case 0xC94B: +case 0xCB4B: +case 0xCD4B: +case 0xCF4B: +case 0xC14C: +case 0xC34C: +case 0xC54C: +case 0xC74C: +case 0xC94C: +case 0xCB4C: +case 0xCD4C: +case 0xCF4C: +case 0xC14D: +case 0xC34D: +case 0xC54D: +case 0xC74D: +case 0xC94D: +case 0xCB4D: +case 0xCD4D: +case 0xCF4D: +case 0xC14E: +case 0xC34E: +case 0xC54E: +case 0xC74E: +case 0xC94E: +case 0xCB4E: +case 0xCD4E: +case 0xCF4E: +case 0xC14F: +case 0xC34F: +case 0xC54F: +case 0xC74F: +case 0xC94F: +case 0xCB4F: +case 0xCD4F: +case 0xCF4F: + +// EXGAA +case 0xC148: +{ + u32 res; + u32 src; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + src = (u32)CPU->A[(Opcode >> 9) & 7]; + CPU->A[(Opcode >> 9) & 7] = res; + res = src; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(6) +case 0xC388: +case 0xC588: +case 0xC788: +case 0xC988: +case 0xCB88: +case 0xCD88: +case 0xCF88: +case 0xC189: +case 0xC389: +case 0xC589: +case 0xC789: +case 0xC989: +case 0xCB89: +case 0xCD89: +case 0xCF89: +case 0xC18A: +case 0xC38A: +case 0xC58A: +case 0xC78A: +case 0xC98A: +case 0xCB8A: +case 0xCD8A: +case 0xCF8A: +case 0xC18B: +case 0xC38B: +case 0xC58B: +case 0xC78B: +case 0xC98B: +case 0xCB8B: +case 0xCD8B: +case 0xCF8B: +case 0xC18C: +case 0xC38C: +case 0xC58C: +case 0xC78C: +case 0xC98C: +case 0xCB8C: +case 0xCD8C: +case 0xCF8C: +case 0xC18D: +case 0xC38D: +case 0xC58D: +case 0xC78D: +case 0xC98D: +case 0xCB8D: +case 0xCD8D: +case 0xCF8D: +case 0xC18E: +case 0xC38E: +case 0xC58E: +case 0xC78E: +case 0xC98E: +case 0xCB8E: +case 0xCD8E: +case 0xCF8E: +case 0xC18F: +case 0xC38F: +case 0xC58F: +case 0xC78F: +case 0xC98F: +case 0xCB8F: +case 0xCD8F: +case 0xCF8F: + +// EXGAD +case 0xC188: +{ + u32 res; + u32 src; + res = (u32)CPU->A[(Opcode >> 0) & 7]; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; + res = src; + CPU->A[(Opcode >> 0) & 7] = res; +} +RET(6) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_opD.inc b/libmednahawk/src/hw_cpu/c68k/c68k_opD.inc new file mode 100644 index 0000000000..9bf1f139e9 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_opD.inc @@ -0,0 +1,5855 @@ +case 0xD200: +case 0xD400: +case 0xD600: +case 0xD800: +case 0xDA00: +case 0xDC00: +case 0xDE00: +case 0xD001: +case 0xD201: +case 0xD401: +case 0xD601: +case 0xD801: +case 0xDA01: +case 0xDC01: +case 0xDE01: +case 0xD002: +case 0xD202: +case 0xD402: +case 0xD602: +case 0xD802: +case 0xDA02: +case 0xDC02: +case 0xDE02: +case 0xD003: +case 0xD203: +case 0xD403: +case 0xD603: +case 0xD803: +case 0xDA03: +case 0xDC03: +case 0xDE03: +case 0xD004: +case 0xD204: +case 0xD404: +case 0xD604: +case 0xD804: +case 0xDA04: +case 0xDC04: +case 0xDE04: +case 0xD005: +case 0xD205: +case 0xD405: +case 0xD605: +case 0xD805: +case 0xDA05: +case 0xDC05: +case 0xDE05: +case 0xD006: +case 0xD206: +case 0xD406: +case 0xD606: +case 0xD806: +case 0xDA06: +case 0xDC06: +case 0xDE06: +case 0xD007: +case 0xD207: +case 0xD407: +case 0xD607: +case 0xD807: +case 0xDA07: +case 0xDC07: +case 0xDE07: + +// ADDaD +case 0xD000: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD208: +case 0xD408: +case 0xD608: +case 0xD808: +case 0xDA08: +case 0xDC08: +case 0xDE08: +case 0xD009: +case 0xD209: +case 0xD409: +case 0xD609: +case 0xD809: +case 0xDA09: +case 0xDC09: +case 0xDE09: +case 0xD00A: +case 0xD20A: +case 0xD40A: +case 0xD60A: +case 0xD80A: +case 0xDA0A: +case 0xDC0A: +case 0xDE0A: +case 0xD00B: +case 0xD20B: +case 0xD40B: +case 0xD60B: +case 0xD80B: +case 0xDA0B: +case 0xDC0B: +case 0xDE0B: +case 0xD00C: +case 0xD20C: +case 0xD40C: +case 0xD60C: +case 0xD80C: +case 0xDA0C: +case 0xDC0C: +case 0xDE0C: +case 0xD00D: +case 0xD20D: +case 0xD40D: +case 0xD60D: +case 0xD80D: +case 0xDA0D: +case 0xDC0D: +case 0xDE0D: +case 0xD00E: +case 0xD20E: +case 0xD40E: +case 0xD60E: +case 0xD80E: +case 0xDA0E: +case 0xDC0E: +case 0xDE0E: +case 0xD00F: +case 0xD20F: +case 0xD40F: +case 0xD60F: +case 0xD80F: +case 0xDA0F: +case 0xDC0F: +case 0xDE0F: + +// ADDaD +case 0xD008: +{ + u32 res; + u32 dst; + u32 src; + // can't read byte from Ax registers ! + CPU->Status |= C68K_FAULTED; + goto C68k_Exec_Really_End; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD210: +case 0xD410: +case 0xD610: +case 0xD810: +case 0xDA10: +case 0xDC10: +case 0xDE10: +case 0xD011: +case 0xD211: +case 0xD411: +case 0xD611: +case 0xD811: +case 0xDA11: +case 0xDC11: +case 0xDE11: +case 0xD012: +case 0xD212: +case 0xD412: +case 0xD612: +case 0xD812: +case 0xDA12: +case 0xDC12: +case 0xDE12: +case 0xD013: +case 0xD213: +case 0xD413: +case 0xD613: +case 0xD813: +case 0xDA13: +case 0xDC13: +case 0xDE13: +case 0xD014: +case 0xD214: +case 0xD414: +case 0xD614: +case 0xD814: +case 0xDA14: +case 0xDC14: +case 0xDE14: +case 0xD015: +case 0xD215: +case 0xD415: +case 0xD615: +case 0xD815: +case 0xDA15: +case 0xDC15: +case 0xDE15: +case 0xD016: +case 0xD216: +case 0xD416: +case 0xD616: +case 0xD816: +case 0xDA16: +case 0xDC16: +case 0xDE16: +case 0xD017: +case 0xD217: +case 0xD417: +case 0xD617: +case 0xD817: +case 0xDA17: +case 0xDC17: +case 0xDE17: + +// ADDaD +case 0xD010: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD218: +case 0xD418: +case 0xD618: +case 0xD818: +case 0xDA18: +case 0xDC18: +case 0xDE18: +case 0xD019: +case 0xD219: +case 0xD419: +case 0xD619: +case 0xD819: +case 0xDA19: +case 0xDC19: +case 0xDE19: +case 0xD01A: +case 0xD21A: +case 0xD41A: +case 0xD61A: +case 0xD81A: +case 0xDA1A: +case 0xDC1A: +case 0xDE1A: +case 0xD01B: +case 0xD21B: +case 0xD41B: +case 0xD61B: +case 0xD81B: +case 0xDA1B: +case 0xDC1B: +case 0xDE1B: +case 0xD01C: +case 0xD21C: +case 0xD41C: +case 0xD61C: +case 0xD81C: +case 0xDA1C: +case 0xDC1C: +case 0xDE1C: +case 0xD01D: +case 0xD21D: +case 0xD41D: +case 0xD61D: +case 0xD81D: +case 0xDA1D: +case 0xDC1D: +case 0xDE1D: +case 0xD01E: +case 0xD21E: +case 0xD41E: +case 0xD61E: +case 0xD81E: +case 0xDA1E: +case 0xDC1E: +case 0xDE1E: + +// ADDaD +case 0xD018: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD220: +case 0xD420: +case 0xD620: +case 0xD820: +case 0xDA20: +case 0xDC20: +case 0xDE20: +case 0xD021: +case 0xD221: +case 0xD421: +case 0xD621: +case 0xD821: +case 0xDA21: +case 0xDC21: +case 0xDE21: +case 0xD022: +case 0xD222: +case 0xD422: +case 0xD622: +case 0xD822: +case 0xDA22: +case 0xDC22: +case 0xDE22: +case 0xD023: +case 0xD223: +case 0xD423: +case 0xD623: +case 0xD823: +case 0xDA23: +case 0xDC23: +case 0xDE23: +case 0xD024: +case 0xD224: +case 0xD424: +case 0xD624: +case 0xD824: +case 0xDA24: +case 0xDC24: +case 0xDE24: +case 0xD025: +case 0xD225: +case 0xD425: +case 0xD625: +case 0xD825: +case 0xDA25: +case 0xDC25: +case 0xDE25: +case 0xD026: +case 0xD226: +case 0xD426: +case 0xD626: +case 0xD826: +case 0xDA26: +case 0xDC26: +case 0xDE26: + +// ADDaD +case 0xD020: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD228: +case 0xD428: +case 0xD628: +case 0xD828: +case 0xDA28: +case 0xDC28: +case 0xDE28: +case 0xD029: +case 0xD229: +case 0xD429: +case 0xD629: +case 0xD829: +case 0xDA29: +case 0xDC29: +case 0xDE29: +case 0xD02A: +case 0xD22A: +case 0xD42A: +case 0xD62A: +case 0xD82A: +case 0xDA2A: +case 0xDC2A: +case 0xDE2A: +case 0xD02B: +case 0xD22B: +case 0xD42B: +case 0xD62B: +case 0xD82B: +case 0xDA2B: +case 0xDC2B: +case 0xDE2B: +case 0xD02C: +case 0xD22C: +case 0xD42C: +case 0xD62C: +case 0xD82C: +case 0xDA2C: +case 0xDC2C: +case 0xDE2C: +case 0xD02D: +case 0xD22D: +case 0xD42D: +case 0xD62D: +case 0xD82D: +case 0xDA2D: +case 0xDC2D: +case 0xDE2D: +case 0xD02E: +case 0xD22E: +case 0xD42E: +case 0xD62E: +case 0xD82E: +case 0xDA2E: +case 0xDC2E: +case 0xDE2E: +case 0xD02F: +case 0xD22F: +case 0xD42F: +case 0xD62F: +case 0xD82F: +case 0xDA2F: +case 0xDC2F: +case 0xDE2F: + +// ADDaD +case 0xD028: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD230: +case 0xD430: +case 0xD630: +case 0xD830: +case 0xDA30: +case 0xDC30: +case 0xDE30: +case 0xD031: +case 0xD231: +case 0xD431: +case 0xD631: +case 0xD831: +case 0xDA31: +case 0xDC31: +case 0xDE31: +case 0xD032: +case 0xD232: +case 0xD432: +case 0xD632: +case 0xD832: +case 0xDA32: +case 0xDC32: +case 0xDE32: +case 0xD033: +case 0xD233: +case 0xD433: +case 0xD633: +case 0xD833: +case 0xDA33: +case 0xDC33: +case 0xDE33: +case 0xD034: +case 0xD234: +case 0xD434: +case 0xD634: +case 0xD834: +case 0xDA34: +case 0xDC34: +case 0xDE34: +case 0xD035: +case 0xD235: +case 0xD435: +case 0xD635: +case 0xD835: +case 0xDA35: +case 0xDC35: +case 0xDE35: +case 0xD036: +case 0xD236: +case 0xD436: +case 0xD636: +case 0xD836: +case 0xDA36: +case 0xDC36: +case 0xDE36: +case 0xD037: +case 0xD237: +case 0xD437: +case 0xD637: +case 0xD837: +case 0xDA37: +case 0xDC37: +case 0xDE37: + +// ADDaD +case 0xD030: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD238: +case 0xD438: +case 0xD638: +case 0xD838: +case 0xDA38: +case 0xDC38: +case 0xDE38: + +// ADDaD +case 0xD038: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD239: +case 0xD439: +case 0xD639: +case 0xD839: +case 0xDA39: +case 0xDC39: +case 0xDE39: + +// ADDaD +case 0xD039: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD23A: +case 0xD43A: +case 0xD63A: +case 0xD83A: +case 0xDA3A: +case 0xDC3A: +case 0xDE3A: + +// ADDaD +case 0xD03A: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD23B: +case 0xD43B: +case 0xD63B: +case 0xD83B: +case 0xDA3B: +case 0xDC3B: +case 0xDE3B: + +// ADDaD +case 0xD03B: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD23C: +case 0xD43C: +case 0xD63C: +case 0xD83C: +case 0xDA3C: +case 0xDC3C: +case 0xDE3C: + +// ADDaD +case 0xD03C: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_BYTE; + PC += 2; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0xD21F: +case 0xD41F: +case 0xD61F: +case 0xD81F: +case 0xDA1F: +case 0xDC1F: +case 0xDE1F: + +// ADDaD +case 0xD01F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD227: +case 0xD427: +case 0xD627: +case 0xD827: +case 0xDA27: +case 0xDC27: +case 0xDE27: + +// ADDaD +case 0xD027: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD240: +case 0xD440: +case 0xD640: +case 0xD840: +case 0xDA40: +case 0xDC40: +case 0xDE40: +case 0xD041: +case 0xD241: +case 0xD441: +case 0xD641: +case 0xD841: +case 0xDA41: +case 0xDC41: +case 0xDE41: +case 0xD042: +case 0xD242: +case 0xD442: +case 0xD642: +case 0xD842: +case 0xDA42: +case 0xDC42: +case 0xDE42: +case 0xD043: +case 0xD243: +case 0xD443: +case 0xD643: +case 0xD843: +case 0xDA43: +case 0xDC43: +case 0xDE43: +case 0xD044: +case 0xD244: +case 0xD444: +case 0xD644: +case 0xD844: +case 0xDA44: +case 0xDC44: +case 0xDE44: +case 0xD045: +case 0xD245: +case 0xD445: +case 0xD645: +case 0xD845: +case 0xDA45: +case 0xDC45: +case 0xDE45: +case 0xD046: +case 0xD246: +case 0xD446: +case 0xD646: +case 0xD846: +case 0xDA46: +case 0xDC46: +case 0xDE46: +case 0xD047: +case 0xD247: +case 0xD447: +case 0xD647: +case 0xD847: +case 0xDA47: +case 0xDC47: +case 0xDE47: + +// ADDaD +case 0xD040: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD248: +case 0xD448: +case 0xD648: +case 0xD848: +case 0xDA48: +case 0xDC48: +case 0xDE48: +case 0xD049: +case 0xD249: +case 0xD449: +case 0xD649: +case 0xD849: +case 0xDA49: +case 0xDC49: +case 0xDE49: +case 0xD04A: +case 0xD24A: +case 0xD44A: +case 0xD64A: +case 0xD84A: +case 0xDA4A: +case 0xDC4A: +case 0xDE4A: +case 0xD04B: +case 0xD24B: +case 0xD44B: +case 0xD64B: +case 0xD84B: +case 0xDA4B: +case 0xDC4B: +case 0xDE4B: +case 0xD04C: +case 0xD24C: +case 0xD44C: +case 0xD64C: +case 0xD84C: +case 0xDA4C: +case 0xDC4C: +case 0xDE4C: +case 0xD04D: +case 0xD24D: +case 0xD44D: +case 0xD64D: +case 0xD84D: +case 0xDA4D: +case 0xDC4D: +case 0xDE4D: +case 0xD04E: +case 0xD24E: +case 0xD44E: +case 0xD64E: +case 0xD84E: +case 0xDA4E: +case 0xDC4E: +case 0xDE4E: +case 0xD04F: +case 0xD24F: +case 0xD44F: +case 0xD64F: +case 0xD84F: +case 0xDA4F: +case 0xDC4F: +case 0xDE4F: + +// ADDaD +case 0xD048: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->A[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD250: +case 0xD450: +case 0xD650: +case 0xD850: +case 0xDA50: +case 0xDC50: +case 0xDE50: +case 0xD051: +case 0xD251: +case 0xD451: +case 0xD651: +case 0xD851: +case 0xDA51: +case 0xDC51: +case 0xDE51: +case 0xD052: +case 0xD252: +case 0xD452: +case 0xD652: +case 0xD852: +case 0xDA52: +case 0xDC52: +case 0xDE52: +case 0xD053: +case 0xD253: +case 0xD453: +case 0xD653: +case 0xD853: +case 0xDA53: +case 0xDC53: +case 0xDE53: +case 0xD054: +case 0xD254: +case 0xD454: +case 0xD654: +case 0xD854: +case 0xDA54: +case 0xDC54: +case 0xDE54: +case 0xD055: +case 0xD255: +case 0xD455: +case 0xD655: +case 0xD855: +case 0xDA55: +case 0xDC55: +case 0xDE55: +case 0xD056: +case 0xD256: +case 0xD456: +case 0xD656: +case 0xD856: +case 0xDA56: +case 0xDC56: +case 0xDE56: +case 0xD057: +case 0xD257: +case 0xD457: +case 0xD657: +case 0xD857: +case 0xDA57: +case 0xDC57: +case 0xDE57: + +// ADDaD +case 0xD050: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD258: +case 0xD458: +case 0xD658: +case 0xD858: +case 0xDA58: +case 0xDC58: +case 0xDE58: +case 0xD059: +case 0xD259: +case 0xD459: +case 0xD659: +case 0xD859: +case 0xDA59: +case 0xDC59: +case 0xDE59: +case 0xD05A: +case 0xD25A: +case 0xD45A: +case 0xD65A: +case 0xD85A: +case 0xDA5A: +case 0xDC5A: +case 0xDE5A: +case 0xD05B: +case 0xD25B: +case 0xD45B: +case 0xD65B: +case 0xD85B: +case 0xDA5B: +case 0xDC5B: +case 0xDE5B: +case 0xD05C: +case 0xD25C: +case 0xD45C: +case 0xD65C: +case 0xD85C: +case 0xDA5C: +case 0xDC5C: +case 0xDE5C: +case 0xD05D: +case 0xD25D: +case 0xD45D: +case 0xD65D: +case 0xD85D: +case 0xDA5D: +case 0xDC5D: +case 0xDE5D: +case 0xD05E: +case 0xD25E: +case 0xD45E: +case 0xD65E: +case 0xD85E: +case 0xDA5E: +case 0xDC5E: +case 0xDE5E: + +// ADDaD +case 0xD058: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD260: +case 0xD460: +case 0xD660: +case 0xD860: +case 0xDA60: +case 0xDC60: +case 0xDE60: +case 0xD061: +case 0xD261: +case 0xD461: +case 0xD661: +case 0xD861: +case 0xDA61: +case 0xDC61: +case 0xDE61: +case 0xD062: +case 0xD262: +case 0xD462: +case 0xD662: +case 0xD862: +case 0xDA62: +case 0xDC62: +case 0xDE62: +case 0xD063: +case 0xD263: +case 0xD463: +case 0xD663: +case 0xD863: +case 0xDA63: +case 0xDC63: +case 0xDE63: +case 0xD064: +case 0xD264: +case 0xD464: +case 0xD664: +case 0xD864: +case 0xDA64: +case 0xDC64: +case 0xDE64: +case 0xD065: +case 0xD265: +case 0xD465: +case 0xD665: +case 0xD865: +case 0xDA65: +case 0xDC65: +case 0xDE65: +case 0xD066: +case 0xD266: +case 0xD466: +case 0xD666: +case 0xD866: +case 0xDA66: +case 0xDC66: +case 0xDE66: + +// ADDaD +case 0xD060: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD268: +case 0xD468: +case 0xD668: +case 0xD868: +case 0xDA68: +case 0xDC68: +case 0xDE68: +case 0xD069: +case 0xD269: +case 0xD469: +case 0xD669: +case 0xD869: +case 0xDA69: +case 0xDC69: +case 0xDE69: +case 0xD06A: +case 0xD26A: +case 0xD46A: +case 0xD66A: +case 0xD86A: +case 0xDA6A: +case 0xDC6A: +case 0xDE6A: +case 0xD06B: +case 0xD26B: +case 0xD46B: +case 0xD66B: +case 0xD86B: +case 0xDA6B: +case 0xDC6B: +case 0xDE6B: +case 0xD06C: +case 0xD26C: +case 0xD46C: +case 0xD66C: +case 0xD86C: +case 0xDA6C: +case 0xDC6C: +case 0xDE6C: +case 0xD06D: +case 0xD26D: +case 0xD46D: +case 0xD66D: +case 0xD86D: +case 0xDA6D: +case 0xDC6D: +case 0xDE6D: +case 0xD06E: +case 0xD26E: +case 0xD46E: +case 0xD66E: +case 0xD86E: +case 0xDA6E: +case 0xDC6E: +case 0xDE6E: +case 0xD06F: +case 0xD26F: +case 0xD46F: +case 0xD66F: +case 0xD86F: +case 0xDA6F: +case 0xDC6F: +case 0xDE6F: + +// ADDaD +case 0xD068: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD270: +case 0xD470: +case 0xD670: +case 0xD870: +case 0xDA70: +case 0xDC70: +case 0xDE70: +case 0xD071: +case 0xD271: +case 0xD471: +case 0xD671: +case 0xD871: +case 0xDA71: +case 0xDC71: +case 0xDE71: +case 0xD072: +case 0xD272: +case 0xD472: +case 0xD672: +case 0xD872: +case 0xDA72: +case 0xDC72: +case 0xDE72: +case 0xD073: +case 0xD273: +case 0xD473: +case 0xD673: +case 0xD873: +case 0xDA73: +case 0xDC73: +case 0xDE73: +case 0xD074: +case 0xD274: +case 0xD474: +case 0xD674: +case 0xD874: +case 0xDA74: +case 0xDC74: +case 0xDE74: +case 0xD075: +case 0xD275: +case 0xD475: +case 0xD675: +case 0xD875: +case 0xDA75: +case 0xDC75: +case 0xDE75: +case 0xD076: +case 0xD276: +case 0xD476: +case 0xD676: +case 0xD876: +case 0xDA76: +case 0xDC76: +case 0xDE76: +case 0xD077: +case 0xD277: +case 0xD477: +case 0xD677: +case 0xD877: +case 0xDA77: +case 0xDC77: +case 0xDE77: + +// ADDaD +case 0xD070: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD278: +case 0xD478: +case 0xD678: +case 0xD878: +case 0xDA78: +case 0xDC78: +case 0xDE78: + +// ADDaD +case 0xD078: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD279: +case 0xD479: +case 0xD679: +case 0xD879: +case 0xDA79: +case 0xDC79: +case 0xDE79: + +// ADDaD +case 0xD079: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD27A: +case 0xD47A: +case 0xD67A: +case 0xD87A: +case 0xDA7A: +case 0xDC7A: +case 0xDE7A: + +// ADDaD +case 0xD07A: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD27B: +case 0xD47B: +case 0xD67B: +case 0xD87B: +case 0xDA7B: +case 0xDC7B: +case 0xDE7B: + +// ADDaD +case 0xD07B: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD27C: +case 0xD47C: +case 0xD67C: +case 0xD87C: +case 0xDA7C: +case 0xDC7C: +case 0xDE7C: + +// ADDaD +case 0xD07C: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_WORD; + PC += 2; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0xD25F: +case 0xD45F: +case 0xD65F: +case 0xD85F: +case 0xDA5F: +case 0xDC5F: +case 0xDE5F: + +// ADDaD +case 0xD05F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD267: +case 0xD467: +case 0xD667: +case 0xD867: +case 0xDA67: +case 0xDC67: +case 0xDE67: + +// ADDaD +case 0xD067: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD280: +case 0xD480: +case 0xD680: +case 0xD880: +case 0xDA80: +case 0xDC80: +case 0xDE80: +case 0xD081: +case 0xD281: +case 0xD481: +case 0xD681: +case 0xD881: +case 0xDA81: +case 0xDC81: +case 0xDE81: +case 0xD082: +case 0xD282: +case 0xD482: +case 0xD682: +case 0xD882: +case 0xDA82: +case 0xDC82: +case 0xDE82: +case 0xD083: +case 0xD283: +case 0xD483: +case 0xD683: +case 0xD883: +case 0xDA83: +case 0xDC83: +case 0xDE83: +case 0xD084: +case 0xD284: +case 0xD484: +case 0xD684: +case 0xD884: +case 0xDA84: +case 0xDC84: +case 0xDE84: +case 0xD085: +case 0xD285: +case 0xD485: +case 0xD685: +case 0xD885: +case 0xDA85: +case 0xDC85: +case 0xDE85: +case 0xD086: +case 0xD286: +case 0xD486: +case 0xD686: +case 0xD886: +case 0xDA86: +case 0xDC86: +case 0xDE86: +case 0xD087: +case 0xD287: +case 0xD487: +case 0xD687: +case 0xD887: +case 0xDA87: +case 0xDC87: +case 0xDE87: + +// ADDaD +case 0xD080: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0xD288: +case 0xD488: +case 0xD688: +case 0xD888: +case 0xDA88: +case 0xDC88: +case 0xDE88: +case 0xD089: +case 0xD289: +case 0xD489: +case 0xD689: +case 0xD889: +case 0xDA89: +case 0xDC89: +case 0xDE89: +case 0xD08A: +case 0xD28A: +case 0xD48A: +case 0xD68A: +case 0xD88A: +case 0xDA8A: +case 0xDC8A: +case 0xDE8A: +case 0xD08B: +case 0xD28B: +case 0xD48B: +case 0xD68B: +case 0xD88B: +case 0xDA8B: +case 0xDC8B: +case 0xDE8B: +case 0xD08C: +case 0xD28C: +case 0xD48C: +case 0xD68C: +case 0xD88C: +case 0xDA8C: +case 0xDC8C: +case 0xDE8C: +case 0xD08D: +case 0xD28D: +case 0xD48D: +case 0xD68D: +case 0xD88D: +case 0xDA8D: +case 0xDC8D: +case 0xDE8D: +case 0xD08E: +case 0xD28E: +case 0xD48E: +case 0xD68E: +case 0xD88E: +case 0xDA8E: +case 0xDC8E: +case 0xDE8E: +case 0xD08F: +case 0xD28F: +case 0xD48F: +case 0xD68F: +case 0xD88F: +case 0xDA8F: +case 0xDC8F: +case 0xDE8F: + +// ADDaD +case 0xD088: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(6) +case 0xD290: +case 0xD490: +case 0xD690: +case 0xD890: +case 0xDA90: +case 0xDC90: +case 0xDE90: +case 0xD091: +case 0xD291: +case 0xD491: +case 0xD691: +case 0xD891: +case 0xDA91: +case 0xDC91: +case 0xDE91: +case 0xD092: +case 0xD292: +case 0xD492: +case 0xD692: +case 0xD892: +case 0xDA92: +case 0xDC92: +case 0xDE92: +case 0xD093: +case 0xD293: +case 0xD493: +case 0xD693: +case 0xD893: +case 0xDA93: +case 0xDC93: +case 0xDE93: +case 0xD094: +case 0xD294: +case 0xD494: +case 0xD694: +case 0xD894: +case 0xDA94: +case 0xDC94: +case 0xDE94: +case 0xD095: +case 0xD295: +case 0xD495: +case 0xD695: +case 0xD895: +case 0xDA95: +case 0xDC95: +case 0xDE95: +case 0xD096: +case 0xD296: +case 0xD496: +case 0xD696: +case 0xD896: +case 0xDA96: +case 0xDC96: +case 0xDE96: +case 0xD097: +case 0xD297: +case 0xD497: +case 0xD697: +case 0xD897: +case 0xDA97: +case 0xDC97: +case 0xDE97: + +// ADDaD +case 0xD090: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD298: +case 0xD498: +case 0xD698: +case 0xD898: +case 0xDA98: +case 0xDC98: +case 0xDE98: +case 0xD099: +case 0xD299: +case 0xD499: +case 0xD699: +case 0xD899: +case 0xDA99: +case 0xDC99: +case 0xDE99: +case 0xD09A: +case 0xD29A: +case 0xD49A: +case 0xD69A: +case 0xD89A: +case 0xDA9A: +case 0xDC9A: +case 0xDE9A: +case 0xD09B: +case 0xD29B: +case 0xD49B: +case 0xD69B: +case 0xD89B: +case 0xDA9B: +case 0xDC9B: +case 0xDE9B: +case 0xD09C: +case 0xD29C: +case 0xD49C: +case 0xD69C: +case 0xD89C: +case 0xDA9C: +case 0xDC9C: +case 0xDE9C: +case 0xD09D: +case 0xD29D: +case 0xD49D: +case 0xD69D: +case 0xD89D: +case 0xDA9D: +case 0xDC9D: +case 0xDE9D: +case 0xD09E: +case 0xD29E: +case 0xD49E: +case 0xD69E: +case 0xD89E: +case 0xDA9E: +case 0xDC9E: +case 0xDE9E: + +// ADDaD +case 0xD098: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2A0: +case 0xD4A0: +case 0xD6A0: +case 0xD8A0: +case 0xDAA0: +case 0xDCA0: +case 0xDEA0: +case 0xD0A1: +case 0xD2A1: +case 0xD4A1: +case 0xD6A1: +case 0xD8A1: +case 0xDAA1: +case 0xDCA1: +case 0xDEA1: +case 0xD0A2: +case 0xD2A2: +case 0xD4A2: +case 0xD6A2: +case 0xD8A2: +case 0xDAA2: +case 0xDCA2: +case 0xDEA2: +case 0xD0A3: +case 0xD2A3: +case 0xD4A3: +case 0xD6A3: +case 0xD8A3: +case 0xDAA3: +case 0xDCA3: +case 0xDEA3: +case 0xD0A4: +case 0xD2A4: +case 0xD4A4: +case 0xD6A4: +case 0xD8A4: +case 0xDAA4: +case 0xDCA4: +case 0xDEA4: +case 0xD0A5: +case 0xD2A5: +case 0xD4A5: +case 0xD6A5: +case 0xD8A5: +case 0xDAA5: +case 0xDCA5: +case 0xDEA5: +case 0xD0A6: +case 0xD2A6: +case 0xD4A6: +case 0xD6A6: +case 0xD8A6: +case 0xDAA6: +case 0xDCA6: +case 0xDEA6: + +// ADDaD +case 0xD0A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2A8: +case 0xD4A8: +case 0xD6A8: +case 0xD8A8: +case 0xDAA8: +case 0xDCA8: +case 0xDEA8: +case 0xD0A9: +case 0xD2A9: +case 0xD4A9: +case 0xD6A9: +case 0xD8A9: +case 0xDAA9: +case 0xDCA9: +case 0xDEA9: +case 0xD0AA: +case 0xD2AA: +case 0xD4AA: +case 0xD6AA: +case 0xD8AA: +case 0xDAAA: +case 0xDCAA: +case 0xDEAA: +case 0xD0AB: +case 0xD2AB: +case 0xD4AB: +case 0xD6AB: +case 0xD8AB: +case 0xDAAB: +case 0xDCAB: +case 0xDEAB: +case 0xD0AC: +case 0xD2AC: +case 0xD4AC: +case 0xD6AC: +case 0xD8AC: +case 0xDAAC: +case 0xDCAC: +case 0xDEAC: +case 0xD0AD: +case 0xD2AD: +case 0xD4AD: +case 0xD6AD: +case 0xD8AD: +case 0xDAAD: +case 0xDCAD: +case 0xDEAD: +case 0xD0AE: +case 0xD2AE: +case 0xD4AE: +case 0xD6AE: +case 0xD8AE: +case 0xDAAE: +case 0xDCAE: +case 0xDEAE: +case 0xD0AF: +case 0xD2AF: +case 0xD4AF: +case 0xD6AF: +case 0xD8AF: +case 0xDAAF: +case 0xDCAF: +case 0xDEAF: + +// ADDaD +case 0xD0A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2B0: +case 0xD4B0: +case 0xD6B0: +case 0xD8B0: +case 0xDAB0: +case 0xDCB0: +case 0xDEB0: +case 0xD0B1: +case 0xD2B1: +case 0xD4B1: +case 0xD6B1: +case 0xD8B1: +case 0xDAB1: +case 0xDCB1: +case 0xDEB1: +case 0xD0B2: +case 0xD2B2: +case 0xD4B2: +case 0xD6B2: +case 0xD8B2: +case 0xDAB2: +case 0xDCB2: +case 0xDEB2: +case 0xD0B3: +case 0xD2B3: +case 0xD4B3: +case 0xD6B3: +case 0xD8B3: +case 0xDAB3: +case 0xDCB3: +case 0xDEB3: +case 0xD0B4: +case 0xD2B4: +case 0xD4B4: +case 0xD6B4: +case 0xD8B4: +case 0xDAB4: +case 0xDCB4: +case 0xDEB4: +case 0xD0B5: +case 0xD2B5: +case 0xD4B5: +case 0xD6B5: +case 0xD8B5: +case 0xDAB5: +case 0xDCB5: +case 0xDEB5: +case 0xD0B6: +case 0xD2B6: +case 0xD4B6: +case 0xD6B6: +case 0xD8B6: +case 0xDAB6: +case 0xDCB6: +case 0xDEB6: +case 0xD0B7: +case 0xD2B7: +case 0xD4B7: +case 0xD6B7: +case 0xD8B7: +case 0xDAB7: +case 0xDCB7: +case 0xDEB7: + +// ADDaD +case 0xD0B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2B8: +case 0xD4B8: +case 0xD6B8: +case 0xD8B8: +case 0xDAB8: +case 0xDCB8: +case 0xDEB8: + +// ADDaD +case 0xD0B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2B9: +case 0xD4B9: +case 0xD6B9: +case 0xD8B9: +case 0xDAB9: +case 0xDCB9: +case 0xDEB9: + +// ADDaD +case 0xD0B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2BA: +case 0xD4BA: +case 0xD6BA: +case 0xD8BA: +case 0xDABA: +case 0xDCBA: +case 0xDEBA: + +// ADDaD +case 0xD0BA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2BB: +case 0xD4BB: +case 0xD6BB: +case 0xD8BB: +case 0xDABB: +case 0xDCBB: +case 0xDEBB: + +// ADDaD +case 0xD0BB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2BC: +case 0xD4BC: +case 0xD6BC: +case 0xD8BC: +case 0xDABC: +case 0xDCBC: +case 0xDEBC: + +// ADDaD +case 0xD0BC: +{ + u32 res; + u32 dst; + u32 src; + src = FETCH_LONG; + PC += 4; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(14) +case 0xD29F: +case 0xD49F: +case 0xD69F: +case 0xD89F: +case 0xDA9F: +case 0xDC9F: +case 0xDE9F: + +// ADDaD +case 0xD09F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD2A7: +case 0xD4A7: +case 0xD6A7: +case 0xD8A7: +case 0xDAA7: +case 0xDCA7: +case 0xDEA7: + +// ADDaD +case 0xD0A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD310: +case 0xD510: +case 0xD710: +case 0xD910: +case 0xDB10: +case 0xDD10: +case 0xDF10: +case 0xD111: +case 0xD311: +case 0xD511: +case 0xD711: +case 0xD911: +case 0xDB11: +case 0xDD11: +case 0xDF11: +case 0xD112: +case 0xD312: +case 0xD512: +case 0xD712: +case 0xD912: +case 0xDB12: +case 0xDD12: +case 0xDF12: +case 0xD113: +case 0xD313: +case 0xD513: +case 0xD713: +case 0xD913: +case 0xDB13: +case 0xDD13: +case 0xDF13: +case 0xD114: +case 0xD314: +case 0xD514: +case 0xD714: +case 0xD914: +case 0xDB14: +case 0xDD14: +case 0xDF14: +case 0xD115: +case 0xD315: +case 0xD515: +case 0xD715: +case 0xD915: +case 0xDB15: +case 0xDD15: +case 0xDF15: +case 0xD116: +case 0xD316: +case 0xD516: +case 0xD716: +case 0xD916: +case 0xDB16: +case 0xDD16: +case 0xDF16: +case 0xD117: +case 0xD317: +case 0xD517: +case 0xD717: +case 0xD917: +case 0xDB17: +case 0xDD17: +case 0xDF17: + +// ADDDa +case 0xD110: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD318: +case 0xD518: +case 0xD718: +case 0xD918: +case 0xDB18: +case 0xDD18: +case 0xDF18: +case 0xD119: +case 0xD319: +case 0xD519: +case 0xD719: +case 0xD919: +case 0xDB19: +case 0xDD19: +case 0xDF19: +case 0xD11A: +case 0xD31A: +case 0xD51A: +case 0xD71A: +case 0xD91A: +case 0xDB1A: +case 0xDD1A: +case 0xDF1A: +case 0xD11B: +case 0xD31B: +case 0xD51B: +case 0xD71B: +case 0xD91B: +case 0xDB1B: +case 0xDD1B: +case 0xDF1B: +case 0xD11C: +case 0xD31C: +case 0xD51C: +case 0xD71C: +case 0xD91C: +case 0xDB1C: +case 0xDD1C: +case 0xDF1C: +case 0xD11D: +case 0xD31D: +case 0xD51D: +case 0xD71D: +case 0xD91D: +case 0xDB1D: +case 0xDD1D: +case 0xDF1D: +case 0xD11E: +case 0xD31E: +case 0xD51E: +case 0xD71E: +case 0xD91E: +case 0xDB1E: +case 0xDD1E: +case 0xDF1E: + +// ADDDa +case 0xD118: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 1; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD320: +case 0xD520: +case 0xD720: +case 0xD920: +case 0xDB20: +case 0xDD20: +case 0xDF20: +case 0xD121: +case 0xD321: +case 0xD521: +case 0xD721: +case 0xD921: +case 0xDB21: +case 0xDD21: +case 0xDF21: +case 0xD122: +case 0xD322: +case 0xD522: +case 0xD722: +case 0xD922: +case 0xDB22: +case 0xDD22: +case 0xDF22: +case 0xD123: +case 0xD323: +case 0xD523: +case 0xD723: +case 0xD923: +case 0xDB23: +case 0xDD23: +case 0xDF23: +case 0xD124: +case 0xD324: +case 0xD524: +case 0xD724: +case 0xD924: +case 0xDB24: +case 0xDD24: +case 0xDF24: +case 0xD125: +case 0xD325: +case 0xD525: +case 0xD725: +case 0xD925: +case 0xDB25: +case 0xDD25: +case 0xDF25: +case 0xD126: +case 0xD326: +case 0xD526: +case 0xD726: +case 0xD926: +case 0xDB26: +case 0xDD26: +case 0xDF26: + +// ADDDa +case 0xD120: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD328: +case 0xD528: +case 0xD728: +case 0xD928: +case 0xDB28: +case 0xDD28: +case 0xDF28: +case 0xD129: +case 0xD329: +case 0xD529: +case 0xD729: +case 0xD929: +case 0xDB29: +case 0xDD29: +case 0xDF29: +case 0xD12A: +case 0xD32A: +case 0xD52A: +case 0xD72A: +case 0xD92A: +case 0xDB2A: +case 0xDD2A: +case 0xDF2A: +case 0xD12B: +case 0xD32B: +case 0xD52B: +case 0xD72B: +case 0xD92B: +case 0xDB2B: +case 0xDD2B: +case 0xDF2B: +case 0xD12C: +case 0xD32C: +case 0xD52C: +case 0xD72C: +case 0xD92C: +case 0xDB2C: +case 0xDD2C: +case 0xDF2C: +case 0xD12D: +case 0xD32D: +case 0xD52D: +case 0xD72D: +case 0xD92D: +case 0xDB2D: +case 0xDD2D: +case 0xDF2D: +case 0xD12E: +case 0xD32E: +case 0xD52E: +case 0xD72E: +case 0xD92E: +case 0xDB2E: +case 0xDD2E: +case 0xDF2E: +case 0xD12F: +case 0xD32F: +case 0xD52F: +case 0xD72F: +case 0xD92F: +case 0xDB2F: +case 0xDD2F: +case 0xDF2F: + +// ADDDa +case 0xD128: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD330: +case 0xD530: +case 0xD730: +case 0xD930: +case 0xDB30: +case 0xDD30: +case 0xDF30: +case 0xD131: +case 0xD331: +case 0xD531: +case 0xD731: +case 0xD931: +case 0xDB31: +case 0xDD31: +case 0xDF31: +case 0xD132: +case 0xD332: +case 0xD532: +case 0xD732: +case 0xD932: +case 0xDB32: +case 0xDD32: +case 0xDF32: +case 0xD133: +case 0xD333: +case 0xD533: +case 0xD733: +case 0xD933: +case 0xDB33: +case 0xDD33: +case 0xDF33: +case 0xD134: +case 0xD334: +case 0xD534: +case 0xD734: +case 0xD934: +case 0xDB34: +case 0xDD34: +case 0xDF34: +case 0xD135: +case 0xD335: +case 0xD535: +case 0xD735: +case 0xD935: +case 0xDB35: +case 0xDD35: +case 0xDF35: +case 0xD136: +case 0xD336: +case 0xD536: +case 0xD736: +case 0xD936: +case 0xDB36: +case 0xDD36: +case 0xDF36: +case 0xD137: +case 0xD337: +case 0xD537: +case 0xD737: +case 0xD937: +case 0xDB37: +case 0xDD37: +case 0xDF37: + +// ADDDa +case 0xD130: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD338: +case 0xD538: +case 0xD738: +case 0xD938: +case 0xDB38: +case 0xDD38: +case 0xDF38: + +// ADDDa +case 0xD138: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD339: +case 0xD539: +case 0xD739: +case 0xD939: +case 0xDB39: +case 0xDD39: +case 0xDF39: + +// ADDDa +case 0xD139: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD31F: +case 0xD51F: +case 0xD71F: +case 0xD91F: +case 0xDB1F: +case 0xDD1F: +case 0xDF1F: + +// ADDDa +case 0xD11F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD327: +case 0xD527: +case 0xD727: +case 0xD927: +case 0xDB27: +case 0xDD27: +case 0xDF27: + +// ADDDa +case 0xD127: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst + src; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ = res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(8) +case 0xD350: +case 0xD550: +case 0xD750: +case 0xD950: +case 0xDB50: +case 0xDD50: +case 0xDF50: +case 0xD151: +case 0xD351: +case 0xD551: +case 0xD751: +case 0xD951: +case 0xDB51: +case 0xDD51: +case 0xDF51: +case 0xD152: +case 0xD352: +case 0xD552: +case 0xD752: +case 0xD952: +case 0xDB52: +case 0xDD52: +case 0xDF52: +case 0xD153: +case 0xD353: +case 0xD553: +case 0xD753: +case 0xD953: +case 0xDB53: +case 0xDD53: +case 0xDF53: +case 0xD154: +case 0xD354: +case 0xD554: +case 0xD754: +case 0xD954: +case 0xDB54: +case 0xDD54: +case 0xDF54: +case 0xD155: +case 0xD355: +case 0xD555: +case 0xD755: +case 0xD955: +case 0xDB55: +case 0xDD55: +case 0xDF55: +case 0xD156: +case 0xD356: +case 0xD556: +case 0xD756: +case 0xD956: +case 0xDB56: +case 0xDD56: +case 0xDF56: +case 0xD157: +case 0xD357: +case 0xD557: +case 0xD757: +case 0xD957: +case 0xDB57: +case 0xDD57: +case 0xDF57: + +// ADDDa +case 0xD150: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD358: +case 0xD558: +case 0xD758: +case 0xD958: +case 0xDB58: +case 0xDD58: +case 0xDF58: +case 0xD159: +case 0xD359: +case 0xD559: +case 0xD759: +case 0xD959: +case 0xDB59: +case 0xDD59: +case 0xDF59: +case 0xD15A: +case 0xD35A: +case 0xD55A: +case 0xD75A: +case 0xD95A: +case 0xDB5A: +case 0xDD5A: +case 0xDF5A: +case 0xD15B: +case 0xD35B: +case 0xD55B: +case 0xD75B: +case 0xD95B: +case 0xDB5B: +case 0xDD5B: +case 0xDF5B: +case 0xD15C: +case 0xD35C: +case 0xD55C: +case 0xD75C: +case 0xD95C: +case 0xDB5C: +case 0xDD5C: +case 0xDF5C: +case 0xD15D: +case 0xD35D: +case 0xD55D: +case 0xD75D: +case 0xD95D: +case 0xDB5D: +case 0xDD5D: +case 0xDF5D: +case 0xD15E: +case 0xD35E: +case 0xD55E: +case 0xD75E: +case 0xD95E: +case 0xDB5E: +case 0xDD5E: +case 0xDF5E: + +// ADDDa +case 0xD158: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD360: +case 0xD560: +case 0xD760: +case 0xD960: +case 0xDB60: +case 0xDD60: +case 0xDF60: +case 0xD161: +case 0xD361: +case 0xD561: +case 0xD761: +case 0xD961: +case 0xDB61: +case 0xDD61: +case 0xDF61: +case 0xD162: +case 0xD362: +case 0xD562: +case 0xD762: +case 0xD962: +case 0xDB62: +case 0xDD62: +case 0xDF62: +case 0xD163: +case 0xD363: +case 0xD563: +case 0xD763: +case 0xD963: +case 0xDB63: +case 0xDD63: +case 0xDF63: +case 0xD164: +case 0xD364: +case 0xD564: +case 0xD764: +case 0xD964: +case 0xDB64: +case 0xDD64: +case 0xDF64: +case 0xD165: +case 0xD365: +case 0xD565: +case 0xD765: +case 0xD965: +case 0xDB65: +case 0xDD65: +case 0xDF65: +case 0xD166: +case 0xD366: +case 0xD566: +case 0xD766: +case 0xD966: +case 0xDB66: +case 0xDD66: +case 0xDF66: + +// ADDDa +case 0xD160: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD368: +case 0xD568: +case 0xD768: +case 0xD968: +case 0xDB68: +case 0xDD68: +case 0xDF68: +case 0xD169: +case 0xD369: +case 0xD569: +case 0xD769: +case 0xD969: +case 0xDB69: +case 0xDD69: +case 0xDF69: +case 0xD16A: +case 0xD36A: +case 0xD56A: +case 0xD76A: +case 0xD96A: +case 0xDB6A: +case 0xDD6A: +case 0xDF6A: +case 0xD16B: +case 0xD36B: +case 0xD56B: +case 0xD76B: +case 0xD96B: +case 0xDB6B: +case 0xDD6B: +case 0xDF6B: +case 0xD16C: +case 0xD36C: +case 0xD56C: +case 0xD76C: +case 0xD96C: +case 0xDB6C: +case 0xDD6C: +case 0xDF6C: +case 0xD16D: +case 0xD36D: +case 0xD56D: +case 0xD76D: +case 0xD96D: +case 0xDB6D: +case 0xDD6D: +case 0xDF6D: +case 0xD16E: +case 0xD36E: +case 0xD56E: +case 0xD76E: +case 0xD96E: +case 0xDB6E: +case 0xDD6E: +case 0xDF6E: +case 0xD16F: +case 0xD36F: +case 0xD56F: +case 0xD76F: +case 0xD96F: +case 0xDB6F: +case 0xDD6F: +case 0xDF6F: + +// ADDDa +case 0xD168: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD370: +case 0xD570: +case 0xD770: +case 0xD970: +case 0xDB70: +case 0xDD70: +case 0xDF70: +case 0xD171: +case 0xD371: +case 0xD571: +case 0xD771: +case 0xD971: +case 0xDB71: +case 0xDD71: +case 0xDF71: +case 0xD172: +case 0xD372: +case 0xD572: +case 0xD772: +case 0xD972: +case 0xDB72: +case 0xDD72: +case 0xDF72: +case 0xD173: +case 0xD373: +case 0xD573: +case 0xD773: +case 0xD973: +case 0xDB73: +case 0xDD73: +case 0xDF73: +case 0xD174: +case 0xD374: +case 0xD574: +case 0xD774: +case 0xD974: +case 0xDB74: +case 0xDD74: +case 0xDF74: +case 0xD175: +case 0xD375: +case 0xD575: +case 0xD775: +case 0xD975: +case 0xDB75: +case 0xDD75: +case 0xDF75: +case 0xD176: +case 0xD376: +case 0xD576: +case 0xD776: +case 0xD976: +case 0xDB76: +case 0xDD76: +case 0xDF76: +case 0xD177: +case 0xD377: +case 0xD577: +case 0xD777: +case 0xD977: +case 0xDB77: +case 0xDD77: +case 0xDF77: + +// ADDDa +case 0xD170: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD378: +case 0xD578: +case 0xD778: +case 0xD978: +case 0xDB78: +case 0xDD78: +case 0xDF78: + +// ADDDa +case 0xD178: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD379: +case 0xD579: +case 0xD779: +case 0xD979: +case 0xDB79: +case 0xDD79: +case 0xDF79: + +// ADDDa +case 0xD179: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD35F: +case 0xD55F: +case 0xD75F: +case 0xD95F: +case 0xDB5F: +case 0xDD5F: +case 0xDF5F: + +// ADDDa +case 0xD15F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD367: +case 0xD567: +case 0xD767: +case 0xD967: +case 0xDB67: +case 0xDD67: +case 0xDF67: + +// ADDDa +case 0xD167: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst + src; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ = res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xD390: +case 0xD590: +case 0xD790: +case 0xD990: +case 0xDB90: +case 0xDD90: +case 0xDF90: +case 0xD191: +case 0xD391: +case 0xD591: +case 0xD791: +case 0xD991: +case 0xDB91: +case 0xDD91: +case 0xDF91: +case 0xD192: +case 0xD392: +case 0xD592: +case 0xD792: +case 0xD992: +case 0xDB92: +case 0xDD92: +case 0xDF92: +case 0xD193: +case 0xD393: +case 0xD593: +case 0xD793: +case 0xD993: +case 0xDB93: +case 0xDD93: +case 0xDF93: +case 0xD194: +case 0xD394: +case 0xD594: +case 0xD794: +case 0xD994: +case 0xDB94: +case 0xDD94: +case 0xDF94: +case 0xD195: +case 0xD395: +case 0xD595: +case 0xD795: +case 0xD995: +case 0xDB95: +case 0xDD95: +case 0xDF95: +case 0xD196: +case 0xD396: +case 0xD596: +case 0xD796: +case 0xD996: +case 0xDB96: +case 0xDD96: +case 0xDF96: +case 0xD197: +case 0xD397: +case 0xD597: +case 0xD797: +case 0xD997: +case 0xDB97: +case 0xDD97: +case 0xDF97: + +// ADDDa +case 0xD190: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD398: +case 0xD598: +case 0xD798: +case 0xD998: +case 0xDB98: +case 0xDD98: +case 0xDF98: +case 0xD199: +case 0xD399: +case 0xD599: +case 0xD799: +case 0xD999: +case 0xDB99: +case 0xDD99: +case 0xDF99: +case 0xD19A: +case 0xD39A: +case 0xD59A: +case 0xD79A: +case 0xD99A: +case 0xDB9A: +case 0xDD9A: +case 0xDF9A: +case 0xD19B: +case 0xD39B: +case 0xD59B: +case 0xD79B: +case 0xD99B: +case 0xDB9B: +case 0xDD9B: +case 0xDF9B: +case 0xD19C: +case 0xD39C: +case 0xD59C: +case 0xD79C: +case 0xD99C: +case 0xDB9C: +case 0xDD9C: +case 0xDF9C: +case 0xD19D: +case 0xD39D: +case 0xD59D: +case 0xD79D: +case 0xD99D: +case 0xDB9D: +case 0xDD9D: +case 0xDF9D: +case 0xD19E: +case 0xD39E: +case 0xD59E: +case 0xD79E: +case 0xD99E: +case 0xDB9E: +case 0xDD9E: +case 0xDF9E: + +// ADDDa +case 0xD198: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD3A0: +case 0xD5A0: +case 0xD7A0: +case 0xD9A0: +case 0xDBA0: +case 0xDDA0: +case 0xDFA0: +case 0xD1A1: +case 0xD3A1: +case 0xD5A1: +case 0xD7A1: +case 0xD9A1: +case 0xDBA1: +case 0xDDA1: +case 0xDFA1: +case 0xD1A2: +case 0xD3A2: +case 0xD5A2: +case 0xD7A2: +case 0xD9A2: +case 0xDBA2: +case 0xDDA2: +case 0xDFA2: +case 0xD1A3: +case 0xD3A3: +case 0xD5A3: +case 0xD7A3: +case 0xD9A3: +case 0xDBA3: +case 0xDDA3: +case 0xDFA3: +case 0xD1A4: +case 0xD3A4: +case 0xD5A4: +case 0xD7A4: +case 0xD9A4: +case 0xDBA4: +case 0xDDA4: +case 0xDFA4: +case 0xD1A5: +case 0xD3A5: +case 0xD5A5: +case 0xD7A5: +case 0xD9A5: +case 0xDBA5: +case 0xDDA5: +case 0xDFA5: +case 0xD1A6: +case 0xD3A6: +case 0xD5A6: +case 0xD7A6: +case 0xD9A6: +case 0xDBA6: +case 0xDDA6: +case 0xDFA6: + +// ADDDa +case 0xD1A0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD3A8: +case 0xD5A8: +case 0xD7A8: +case 0xD9A8: +case 0xDBA8: +case 0xDDA8: +case 0xDFA8: +case 0xD1A9: +case 0xD3A9: +case 0xD5A9: +case 0xD7A9: +case 0xD9A9: +case 0xDBA9: +case 0xDDA9: +case 0xDFA9: +case 0xD1AA: +case 0xD3AA: +case 0xD5AA: +case 0xD7AA: +case 0xD9AA: +case 0xDBAA: +case 0xDDAA: +case 0xDFAA: +case 0xD1AB: +case 0xD3AB: +case 0xD5AB: +case 0xD7AB: +case 0xD9AB: +case 0xDBAB: +case 0xDDAB: +case 0xDFAB: +case 0xD1AC: +case 0xD3AC: +case 0xD5AC: +case 0xD7AC: +case 0xD9AC: +case 0xDBAC: +case 0xDDAC: +case 0xDFAC: +case 0xD1AD: +case 0xD3AD: +case 0xD5AD: +case 0xD7AD: +case 0xD9AD: +case 0xDBAD: +case 0xDDAD: +case 0xDFAD: +case 0xD1AE: +case 0xD3AE: +case 0xD5AE: +case 0xD7AE: +case 0xD9AE: +case 0xDBAE: +case 0xDDAE: +case 0xDFAE: +case 0xD1AF: +case 0xD3AF: +case 0xD5AF: +case 0xD7AF: +case 0xD9AF: +case 0xDBAF: +case 0xDDAF: +case 0xDFAF: + +// ADDDa +case 0xD1A8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD3B0: +case 0xD5B0: +case 0xD7B0: +case 0xD9B0: +case 0xDBB0: +case 0xDDB0: +case 0xDFB0: +case 0xD1B1: +case 0xD3B1: +case 0xD5B1: +case 0xD7B1: +case 0xD9B1: +case 0xDBB1: +case 0xDDB1: +case 0xDFB1: +case 0xD1B2: +case 0xD3B2: +case 0xD5B2: +case 0xD7B2: +case 0xD9B2: +case 0xDBB2: +case 0xDDB2: +case 0xDFB2: +case 0xD1B3: +case 0xD3B3: +case 0xD5B3: +case 0xD7B3: +case 0xD9B3: +case 0xDBB3: +case 0xDDB3: +case 0xDFB3: +case 0xD1B4: +case 0xD3B4: +case 0xD5B4: +case 0xD7B4: +case 0xD9B4: +case 0xDBB4: +case 0xDDB4: +case 0xDFB4: +case 0xD1B5: +case 0xD3B5: +case 0xD5B5: +case 0xD7B5: +case 0xD9B5: +case 0xDBB5: +case 0xDDB5: +case 0xDFB5: +case 0xD1B6: +case 0xD3B6: +case 0xD5B6: +case 0xD7B6: +case 0xD9B6: +case 0xDBB6: +case 0xDDB6: +case 0xDFB6: +case 0xD1B7: +case 0xD3B7: +case 0xD5B7: +case 0xD7B7: +case 0xD9B7: +case 0xDBB7: +case 0xDDB7: +case 0xDFB7: + +// ADDDa +case 0xD1B0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 10; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD3B8: +case 0xD5B8: +case 0xD7B8: +case 0xD9B8: +case 0xDBB8: +case 0xDDB8: +case 0xDFB8: + +// ADDDa +case 0xD1B8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 8; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD3B9: +case 0xD5B9: +case 0xD7B9: +case 0xD9B9: +case 0xDBB9: +case 0xDDB9: +case 0xDFB9: + +// ADDDa +case 0xD1B9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 12; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD39F: +case 0xD59F: +case 0xD79F: +case 0xD99F: +case 0xDB9F: +case 0xDD9F: +case 0xDF9F: + +// ADDDa +case 0xD19F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 4; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD3A7: +case 0xD5A7: +case 0xD7A7: +case 0xD9A7: +case 0xDBA7: +case 0xDDA7: +case 0xDFA7: + +// ADDDa +case 0xD1A7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 9) & 7]; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, dst) + res = dst + src; + CPU->flag_notZ = res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(8) +case 0xD300: +case 0xD500: +case 0xD700: +case 0xD900: +case 0xDB00: +case 0xDD00: +case 0xDF00: +case 0xD101: +case 0xD301: +case 0xD501: +case 0xD701: +case 0xD901: +case 0xDB01: +case 0xDD01: +case 0xDF01: +case 0xD102: +case 0xD302: +case 0xD502: +case 0xD702: +case 0xD902: +case 0xDB02: +case 0xDD02: +case 0xDF02: +case 0xD103: +case 0xD303: +case 0xD503: +case 0xD703: +case 0xD903: +case 0xDB03: +case 0xDD03: +case 0xDF03: +case 0xD104: +case 0xD304: +case 0xD504: +case 0xD704: +case 0xD904: +case 0xDB04: +case 0xDD04: +case 0xDF04: +case 0xD105: +case 0xD305: +case 0xD505: +case 0xD705: +case 0xD905: +case 0xDB05: +case 0xDD05: +case 0xDF05: +case 0xD106: +case 0xD306: +case 0xD506: +case 0xD706: +case 0xD906: +case 0xDB06: +case 0xDD06: +case 0xDF06: +case 0xD107: +case 0xD307: +case 0xD507: +case 0xD707: +case 0xD907: +case 0xDB07: +case 0xDD07: +case 0xDF07: + +// ADDX +case 0xD100: +{ + u32 res; + u32 dst; + u32 src; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + dst = (u8)CPU->D[(Opcode >> 9) & 7]; + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ |= res & 0xFF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD340: +case 0xD540: +case 0xD740: +case 0xD940: +case 0xDB40: +case 0xDD40: +case 0xDF40: +case 0xD141: +case 0xD341: +case 0xD541: +case 0xD741: +case 0xD941: +case 0xDB41: +case 0xDD41: +case 0xDF41: +case 0xD142: +case 0xD342: +case 0xD542: +case 0xD742: +case 0xD942: +case 0xDB42: +case 0xDD42: +case 0xDF42: +case 0xD143: +case 0xD343: +case 0xD543: +case 0xD743: +case 0xD943: +case 0xDB43: +case 0xDD43: +case 0xDF43: +case 0xD144: +case 0xD344: +case 0xD544: +case 0xD744: +case 0xD944: +case 0xDB44: +case 0xDD44: +case 0xDF44: +case 0xD145: +case 0xD345: +case 0xD545: +case 0xD745: +case 0xD945: +case 0xDB45: +case 0xDD45: +case 0xDF45: +case 0xD146: +case 0xD346: +case 0xD546: +case 0xD746: +case 0xD946: +case 0xDB46: +case 0xDD46: +case 0xDF46: +case 0xD147: +case 0xD347: +case 0xD547: +case 0xD747: +case 0xD947: +case 0xDB47: +case 0xDD47: +case 0xDF47: + +// ADDX +case 0xD140: +{ + u32 res; + u32 dst; + u32 src; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + dst = (u16)CPU->D[(Opcode >> 9) & 7]; + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(4) +case 0xD380: +case 0xD580: +case 0xD780: +case 0xD980: +case 0xDB80: +case 0xDD80: +case 0xDF80: +case 0xD181: +case 0xD381: +case 0xD581: +case 0xD781: +case 0xD981: +case 0xDB81: +case 0xDD81: +case 0xDF81: +case 0xD182: +case 0xD382: +case 0xD582: +case 0xD782: +case 0xD982: +case 0xDB82: +case 0xDD82: +case 0xDF82: +case 0xD183: +case 0xD383: +case 0xD583: +case 0xD783: +case 0xD983: +case 0xDB83: +case 0xDD83: +case 0xDF83: +case 0xD184: +case 0xD384: +case 0xD584: +case 0xD784: +case 0xD984: +case 0xDB84: +case 0xDD84: +case 0xDF84: +case 0xD185: +case 0xD385: +case 0xD585: +case 0xD785: +case 0xD985: +case 0xDB85: +case 0xDD85: +case 0xDF85: +case 0xD186: +case 0xD386: +case 0xD586: +case 0xD786: +case 0xD986: +case 0xDB86: +case 0xDD86: +case 0xDF86: +case 0xD187: +case 0xD387: +case 0xD587: +case 0xD787: +case 0xD987: +case 0xDB87: +case 0xDD87: +case 0xDF87: + +// ADDX +case 0xD180: +{ + u32 res; + u32 dst; + u32 src; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->D[(Opcode >> 9) & 7]; + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + *((u32*)(&CPU->D[(Opcode >> 9) & 7])) = res; +} +RET(8) +case 0xD308: +case 0xD508: +case 0xD708: +case 0xD908: +case 0xDB08: +case 0xDD08: +case 0xD109: +case 0xD309: +case 0xD509: +case 0xD709: +case 0xD909: +case 0xDB09: +case 0xDD09: +case 0xD10A: +case 0xD30A: +case 0xD50A: +case 0xD70A: +case 0xD90A: +case 0xDB0A: +case 0xDD0A: +case 0xD10B: +case 0xD30B: +case 0xD50B: +case 0xD70B: +case 0xD90B: +case 0xDB0B: +case 0xDD0B: +case 0xD10C: +case 0xD30C: +case 0xD50C: +case 0xD70C: +case 0xD90C: +case 0xDB0C: +case 0xDD0C: +case 0xD10D: +case 0xD30D: +case 0xD50D: +case 0xD70D: +case 0xD90D: +case 0xDB0D: +case 0xDD0D: +case 0xD10E: +case 0xD30E: +case 0xD50E: +case 0xD70E: +case 0xD90E: +case 0xDB0E: +case 0xDD0E: + +// ADDXM +case 0xD108: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0xD348: +case 0xD548: +case 0xD748: +case 0xD948: +case 0xDB48: +case 0xDD48: +case 0xD149: +case 0xD349: +case 0xD549: +case 0xD749: +case 0xD949: +case 0xDB49: +case 0xDD49: +case 0xD14A: +case 0xD34A: +case 0xD54A: +case 0xD74A: +case 0xD94A: +case 0xDB4A: +case 0xDD4A: +case 0xD14B: +case 0xD34B: +case 0xD54B: +case 0xD74B: +case 0xD94B: +case 0xDB4B: +case 0xDD4B: +case 0xD14C: +case 0xD34C: +case 0xD54C: +case 0xD74C: +case 0xD94C: +case 0xDB4C: +case 0xDD4C: +case 0xD14D: +case 0xD34D: +case 0xD54D: +case 0xD74D: +case 0xD94D: +case 0xDB4D: +case 0xDD4D: +case 0xD14E: +case 0xD34E: +case 0xD54E: +case 0xD74E: +case 0xD94E: +case 0xDB4E: +case 0xDD4E: + +// ADDXM +case 0xD148: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) +case 0xD388: +case 0xD588: +case 0xD788: +case 0xD988: +case 0xDB88: +case 0xDD88: +case 0xD189: +case 0xD389: +case 0xD589: +case 0xD789: +case 0xD989: +case 0xDB89: +case 0xDD89: +case 0xD18A: +case 0xD38A: +case 0xD58A: +case 0xD78A: +case 0xD98A: +case 0xDB8A: +case 0xDD8A: +case 0xD18B: +case 0xD38B: +case 0xD58B: +case 0xD78B: +case 0xD98B: +case 0xDB8B: +case 0xDD8B: +case 0xD18C: +case 0xD38C: +case 0xD58C: +case 0xD78C: +case 0xD98C: +case 0xDB8C: +case 0xDD8C: +case 0xD18D: +case 0xD38D: +case 0xD58D: +case 0xD78D: +case 0xD98D: +case 0xDB8D: +case 0xDD8D: +case 0xD18E: +case 0xD38E: +case 0xD58E: +case 0xD78E: +case 0xD98E: +case 0xDB8E: +case 0xDD8E: + +// ADDXM +case 0xD188: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) +case 0xD30F: +case 0xD50F: +case 0xD70F: +case 0xD90F: +case 0xDB0F: +case 0xDD0F: + +// ADDX7M +case 0xD10F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 1; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0xD34F: +case 0xD54F: +case 0xD74F: +case 0xD94F: +case 0xDB4F: +case 0xDD4F: + +// ADDX7M +case 0xD14F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 2; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) +case 0xD38F: +case 0xD58F: +case 0xD78F: +case 0xD98F: +case 0xDB8F: +case 0xDD8F: + +// ADDX7M +case 0xD18F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[(Opcode >> 9) & 7] - 4; + CPU->A[(Opcode >> 9) & 7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) +case 0xDF09: +case 0xDF0A: +case 0xDF0B: +case 0xDF0C: +case 0xDF0D: +case 0xDF0E: + +// ADDXM7 +case 0xDF08: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 1; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) +case 0xDF49: +case 0xDF4A: +case 0xDF4B: +case 0xDF4C: +case 0xDF4D: +case 0xDF4E: + +// ADDXM7 +case 0xDF48: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) +case 0xDF89: +case 0xDF8A: +case 0xDF8B: +case 0xDF8C: +case 0xDF8D: +case 0xDF8E: + +// ADDXM7 +case 0xDF88: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) + +// ADDX7M7 +case 0xDF0F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_BYat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_N = CPU->flag_X = CPU->flag_C = res; + CPU->flag_V = (src ^ res) & (dst ^ res); + CPU->flag_notZ |= res & 0xFF; + WRITE_BYTE_F(adr, res) +} +RET(6) + +// ADDX7M7 +case 0xDF4F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8; + CPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_notZ |= res & 0xFFFF; + WRITE_WORD_F(adr, res) +} +RET(6) + +// ADDX7M7 +case 0xDF8F: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 6; + READ_LOat_F(adr, src) + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 2; + READ_LOat_F(adr, dst) + res = dst + src + ((CPU->flag_X >> 8) & 1); + CPU->flag_notZ |= res; + CPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23; + CPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24; + CPU->flag_N = res >> 24; + WRITE_LONG_F(adr, res) +} +RET(6) +case 0xD2C0: +case 0xD4C0: +case 0xD6C0: +case 0xD8C0: +case 0xDAC0: +case 0xDCC0: +case 0xDEC0: +case 0xD0C1: +case 0xD2C1: +case 0xD4C1: +case 0xD6C1: +case 0xD8C1: +case 0xDAC1: +case 0xDCC1: +case 0xDEC1: +case 0xD0C2: +case 0xD2C2: +case 0xD4C2: +case 0xD6C2: +case 0xD8C2: +case 0xDAC2: +case 0xDCC2: +case 0xDEC2: +case 0xD0C3: +case 0xD2C3: +case 0xD4C3: +case 0xD6C3: +case 0xD8C3: +case 0xDAC3: +case 0xDCC3: +case 0xDEC3: +case 0xD0C4: +case 0xD2C4: +case 0xD4C4: +case 0xD6C4: +case 0xD8C4: +case 0xDAC4: +case 0xDCC4: +case 0xDEC4: +case 0xD0C5: +case 0xD2C5: +case 0xD4C5: +case 0xD6C5: +case 0xD8C5: +case 0xDAC5: +case 0xDCC5: +case 0xDEC5: +case 0xD0C6: +case 0xD2C6: +case 0xD4C6: +case 0xD6C6: +case 0xD8C6: +case 0xDAC6: +case 0xDCC6: +case 0xDEC6: +case 0xD0C7: +case 0xD2C7: +case 0xD4C7: +case 0xD6C7: +case 0xD8C7: +case 0xDAC7: +case 0xDCC7: +case 0xDEC7: + +// ADDA +case 0xD0C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0xD2C8: +case 0xD4C8: +case 0xD6C8: +case 0xD8C8: +case 0xDAC8: +case 0xDCC8: +case 0xDEC8: +case 0xD0C9: +case 0xD2C9: +case 0xD4C9: +case 0xD6C9: +case 0xD8C9: +case 0xDAC9: +case 0xDCC9: +case 0xDEC9: +case 0xD0CA: +case 0xD2CA: +case 0xD4CA: +case 0xD6CA: +case 0xD8CA: +case 0xDACA: +case 0xDCCA: +case 0xDECA: +case 0xD0CB: +case 0xD2CB: +case 0xD4CB: +case 0xD6CB: +case 0xD8CB: +case 0xDACB: +case 0xDCCB: +case 0xDECB: +case 0xD0CC: +case 0xD2CC: +case 0xD4CC: +case 0xD6CC: +case 0xD8CC: +case 0xDACC: +case 0xDCCC: +case 0xDECC: +case 0xD0CD: +case 0xD2CD: +case 0xD4CD: +case 0xD6CD: +case 0xD8CD: +case 0xDACD: +case 0xDCCD: +case 0xDECD: +case 0xD0CE: +case 0xD2CE: +case 0xD4CE: +case 0xD6CE: +case 0xD8CE: +case 0xDACE: +case 0xDCCE: +case 0xDECE: +case 0xD0CF: +case 0xD2CF: +case 0xD4CF: +case 0xD6CF: +case 0xD8CF: +case 0xDACF: +case 0xDCCF: +case 0xDECF: + +// ADDA +case 0xD0C8: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(8) +case 0xD2D0: +case 0xD4D0: +case 0xD6D0: +case 0xD8D0: +case 0xDAD0: +case 0xDCD0: +case 0xDED0: +case 0xD0D1: +case 0xD2D1: +case 0xD4D1: +case 0xD6D1: +case 0xD8D1: +case 0xDAD1: +case 0xDCD1: +case 0xDED1: +case 0xD0D2: +case 0xD2D2: +case 0xD4D2: +case 0xD6D2: +case 0xD8D2: +case 0xDAD2: +case 0xDCD2: +case 0xDED2: +case 0xD0D3: +case 0xD2D3: +case 0xD4D3: +case 0xD6D3: +case 0xD8D3: +case 0xDAD3: +case 0xDCD3: +case 0xDED3: +case 0xD0D4: +case 0xD2D4: +case 0xD4D4: +case 0xD6D4: +case 0xD8D4: +case 0xDAD4: +case 0xDCD4: +case 0xDED4: +case 0xD0D5: +case 0xD2D5: +case 0xD4D5: +case 0xD6D5: +case 0xD8D5: +case 0xDAD5: +case 0xDCD5: +case 0xDED5: +case 0xD0D6: +case 0xD2D6: +case 0xD4D6: +case 0xD6D6: +case 0xD8D6: +case 0xDAD6: +case 0xDCD6: +case 0xDED6: +case 0xD0D7: +case 0xD2D7: +case 0xD4D7: +case 0xD6D7: +case 0xD8D7: +case 0xDAD7: +case 0xDCD7: +case 0xDED7: + +// ADDA +case 0xD0D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2D8: +case 0xD4D8: +case 0xD6D8: +case 0xD8D8: +case 0xDAD8: +case 0xDCD8: +case 0xDED8: +case 0xD0D9: +case 0xD2D9: +case 0xD4D9: +case 0xD6D9: +case 0xD8D9: +case 0xDAD9: +case 0xDCD9: +case 0xDED9: +case 0xD0DA: +case 0xD2DA: +case 0xD4DA: +case 0xD6DA: +case 0xD8DA: +case 0xDADA: +case 0xDCDA: +case 0xDEDA: +case 0xD0DB: +case 0xD2DB: +case 0xD4DB: +case 0xD6DB: +case 0xD8DB: +case 0xDADB: +case 0xDCDB: +case 0xDEDB: +case 0xD0DC: +case 0xD2DC: +case 0xD4DC: +case 0xD6DC: +case 0xD8DC: +case 0xDADC: +case 0xDCDC: +case 0xDEDC: +case 0xD0DD: +case 0xD2DD: +case 0xD4DD: +case 0xD6DD: +case 0xD8DD: +case 0xDADD: +case 0xDCDD: +case 0xDEDD: +case 0xD0DE: +case 0xD2DE: +case 0xD4DE: +case 0xD6DE: +case 0xD8DE: +case 0xDADE: +case 0xDCDE: +case 0xDEDE: + +// ADDA +case 0xD0D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2E0: +case 0xD4E0: +case 0xD6E0: +case 0xD8E0: +case 0xDAE0: +case 0xDCE0: +case 0xDEE0: +case 0xD0E1: +case 0xD2E1: +case 0xD4E1: +case 0xD6E1: +case 0xD8E1: +case 0xDAE1: +case 0xDCE1: +case 0xDEE1: +case 0xD0E2: +case 0xD2E2: +case 0xD4E2: +case 0xD6E2: +case 0xD8E2: +case 0xDAE2: +case 0xDCE2: +case 0xDEE2: +case 0xD0E3: +case 0xD2E3: +case 0xD4E3: +case 0xD6E3: +case 0xD8E3: +case 0xDAE3: +case 0xDCE3: +case 0xDEE3: +case 0xD0E4: +case 0xD2E4: +case 0xD4E4: +case 0xD6E4: +case 0xD8E4: +case 0xDAE4: +case 0xDCE4: +case 0xDEE4: +case 0xD0E5: +case 0xD2E5: +case 0xD4E5: +case 0xD6E5: +case 0xD8E5: +case 0xDAE5: +case 0xDCE5: +case 0xDEE5: +case 0xD0E6: +case 0xD2E6: +case 0xD4E6: +case 0xD6E6: +case 0xD8E6: +case 0xDAE6: +case 0xDCE6: +case 0xDEE6: + +// ADDA +case 0xD0E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2E8: +case 0xD4E8: +case 0xD6E8: +case 0xD8E8: +case 0xDAE8: +case 0xDCE8: +case 0xDEE8: +case 0xD0E9: +case 0xD2E9: +case 0xD4E9: +case 0xD6E9: +case 0xD8E9: +case 0xDAE9: +case 0xDCE9: +case 0xDEE9: +case 0xD0EA: +case 0xD2EA: +case 0xD4EA: +case 0xD6EA: +case 0xD8EA: +case 0xDAEA: +case 0xDCEA: +case 0xDEEA: +case 0xD0EB: +case 0xD2EB: +case 0xD4EB: +case 0xD6EB: +case 0xD8EB: +case 0xDAEB: +case 0xDCEB: +case 0xDEEB: +case 0xD0EC: +case 0xD2EC: +case 0xD4EC: +case 0xD6EC: +case 0xD8EC: +case 0xDAEC: +case 0xDCEC: +case 0xDEEC: +case 0xD0ED: +case 0xD2ED: +case 0xD4ED: +case 0xD6ED: +case 0xD8ED: +case 0xDAED: +case 0xDCED: +case 0xDEED: +case 0xD0EE: +case 0xD2EE: +case 0xD4EE: +case 0xD6EE: +case 0xD8EE: +case 0xDAEE: +case 0xDCEE: +case 0xDEEE: +case 0xD0EF: +case 0xD2EF: +case 0xD4EF: +case 0xD6EF: +case 0xD8EF: +case 0xDAEF: +case 0xDCEF: +case 0xDEEF: + +// ADDA +case 0xD0E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2F0: +case 0xD4F0: +case 0xD6F0: +case 0xD8F0: +case 0xDAF0: +case 0xDCF0: +case 0xDEF0: +case 0xD0F1: +case 0xD2F1: +case 0xD4F1: +case 0xD6F1: +case 0xD8F1: +case 0xDAF1: +case 0xDCF1: +case 0xDEF1: +case 0xD0F2: +case 0xD2F2: +case 0xD4F2: +case 0xD6F2: +case 0xD8F2: +case 0xDAF2: +case 0xDCF2: +case 0xDEF2: +case 0xD0F3: +case 0xD2F3: +case 0xD4F3: +case 0xD6F3: +case 0xD8F3: +case 0xDAF3: +case 0xDCF3: +case 0xDEF3: +case 0xD0F4: +case 0xD2F4: +case 0xD4F4: +case 0xD6F4: +case 0xD8F4: +case 0xDAF4: +case 0xDCF4: +case 0xDEF4: +case 0xD0F5: +case 0xD2F5: +case 0xD4F5: +case 0xD6F5: +case 0xD8F5: +case 0xDAF5: +case 0xDCF5: +case 0xDEF5: +case 0xD0F6: +case 0xD2F6: +case 0xD4F6: +case 0xD6F6: +case 0xD8F6: +case 0xDAF6: +case 0xDCF6: +case 0xDEF6: +case 0xD0F7: +case 0xD2F7: +case 0xD4F7: +case 0xD6F7: +case 0xD8F7: +case 0xDAF7: +case 0xDCF7: +case 0xDEF7: + +// ADDA +case 0xD0F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 8; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2F8: +case 0xD4F8: +case 0xD6F8: +case 0xD8F8: +case 0xDAF8: +case 0xDCF8: +case 0xDEF8: + +// ADDA +case 0xD0F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2F9: +case 0xD4F9: +case 0xD6F9: +case 0xD8F9: +case 0xDAF9: +case 0xDCF9: +case 0xDEF9: + +// ADDA +case 0xD0F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 10; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2FA: +case 0xD4FA: +case 0xD6FA: +case 0xD8FA: +case 0xDAFA: +case 0xDCFA: +case 0xDEFA: + +// ADDA +case 0xD0FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2FB: +case 0xD4FB: +case 0xD6FB: +case 0xD8FB: +case 0xDAFB: +case 0xDCFB: +case 0xDEFB: + +// ADDA +case 0xD0FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 8; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2FC: +case 0xD4FC: +case 0xD6FC: +case 0xD8FC: +case 0xDAFC: +case 0xDCFC: +case 0xDEFC: + +// ADDA +case 0xD0FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s16)FETCH_WORD; + PC += 2; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(12) +case 0xD2DF: +case 0xD4DF: +case 0xD6DF: +case 0xD8DF: +case 0xDADF: +case 0xDCDF: +case 0xDEDF: + +// ADDA +case 0xD0DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + timestamp += 2; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD2E7: +case 0xD4E7: +case 0xD6E7: +case 0xD8E7: +case 0xDAE7: +case 0xDCE7: +case 0xDEE7: + +// ADDA +case 0xD0E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 4; + READSX_WOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3C0: +case 0xD5C0: +case 0xD7C0: +case 0xD9C0: +case 0xDBC0: +case 0xDDC0: +case 0xDFC0: +case 0xD1C1: +case 0xD3C1: +case 0xD5C1: +case 0xD7C1: +case 0xD9C1: +case 0xDBC1: +case 0xDDC1: +case 0xDFC1: +case 0xD1C2: +case 0xD3C2: +case 0xD5C2: +case 0xD7C2: +case 0xD9C2: +case 0xDBC2: +case 0xDDC2: +case 0xDFC2: +case 0xD1C3: +case 0xD3C3: +case 0xD5C3: +case 0xD7C3: +case 0xD9C3: +case 0xDBC3: +case 0xDDC3: +case 0xDFC3: +case 0xD1C4: +case 0xD3C4: +case 0xD5C4: +case 0xD7C4: +case 0xD9C4: +case 0xDBC4: +case 0xDDC4: +case 0xDFC4: +case 0xD1C5: +case 0xD3C5: +case 0xD5C5: +case 0xD7C5: +case 0xD9C5: +case 0xDBC5: +case 0xDDC5: +case 0xDFC5: +case 0xD1C6: +case 0xD3C6: +case 0xD5C6: +case 0xD7C6: +case 0xD9C6: +case 0xDBC6: +case 0xDDC6: +case 0xDFC6: +case 0xD1C7: +case 0xD3C7: +case 0xD5C7: +case 0xD7C7: +case 0xD9C7: +case 0xDBC7: +case 0xDDC7: +case 0xDFC7: + +// ADDA +case 0xD1C0: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)CPU->D[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3C8: +case 0xD5C8: +case 0xD7C8: +case 0xD9C8: +case 0xDBC8: +case 0xDDC8: +case 0xDFC8: +case 0xD1C9: +case 0xD3C9: +case 0xD5C9: +case 0xD7C9: +case 0xD9C9: +case 0xDBC9: +case 0xDDC9: +case 0xDFC9: +case 0xD1CA: +case 0xD3CA: +case 0xD5CA: +case 0xD7CA: +case 0xD9CA: +case 0xDBCA: +case 0xDDCA: +case 0xDFCA: +case 0xD1CB: +case 0xD3CB: +case 0xD5CB: +case 0xD7CB: +case 0xD9CB: +case 0xDBCB: +case 0xDDCB: +case 0xDFCB: +case 0xD1CC: +case 0xD3CC: +case 0xD5CC: +case 0xD7CC: +case 0xD9CC: +case 0xDBCC: +case 0xDDCC: +case 0xDFCC: +case 0xD1CD: +case 0xD3CD: +case 0xD5CD: +case 0xD7CD: +case 0xD9CD: +case 0xDBCD: +case 0xDDCD: +case 0xDFCD: +case 0xD1CE: +case 0xD3CE: +case 0xD5CE: +case 0xD7CE: +case 0xD9CE: +case 0xDBCE: +case 0xDDCE: +case 0xDFCE: +case 0xD1CF: +case 0xD3CF: +case 0xD5CF: +case 0xD7CF: +case 0xD9CF: +case 0xDBCF: +case 0xDDCF: +case 0xDFCF: + +// ADDA +case 0xD1C8: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)CPU->A[(Opcode >> 0) & 7]; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3D0: +case 0xD5D0: +case 0xD7D0: +case 0xD9D0: +case 0xDBD0: +case 0xDDD0: +case 0xDFD0: +case 0xD1D1: +case 0xD3D1: +case 0xD5D1: +case 0xD7D1: +case 0xD9D1: +case 0xDBD1: +case 0xDDD1: +case 0xDFD1: +case 0xD1D2: +case 0xD3D2: +case 0xD5D2: +case 0xD7D2: +case 0xD9D2: +case 0xDBD2: +case 0xDDD2: +case 0xDFD2: +case 0xD1D3: +case 0xD3D3: +case 0xD5D3: +case 0xD7D3: +case 0xD9D3: +case 0xDBD3: +case 0xDDD3: +case 0xDFD3: +case 0xD1D4: +case 0xD3D4: +case 0xD5D4: +case 0xD7D4: +case 0xD9D4: +case 0xDBD4: +case 0xDDD4: +case 0xDFD4: +case 0xD1D5: +case 0xD3D5: +case 0xD5D5: +case 0xD7D5: +case 0xD9D5: +case 0xDBD5: +case 0xDDD5: +case 0xDFD5: +case 0xD1D6: +case 0xD3D6: +case 0xD5D6: +case 0xD7D6: +case 0xD9D6: +case 0xDBD6: +case 0xDDD6: +case 0xDFD6: +case 0xD1D7: +case 0xD3D7: +case 0xD5D7: +case 0xD7D7: +case 0xD9D7: +case 0xDBD7: +case 0xDDD7: +case 0xDFD7: + +// ADDA +case 0xD1D0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3D8: +case 0xD5D8: +case 0xD7D8: +case 0xD9D8: +case 0xDBD8: +case 0xDDD8: +case 0xDFD8: +case 0xD1D9: +case 0xD3D9: +case 0xD5D9: +case 0xD7D9: +case 0xD9D9: +case 0xDBD9: +case 0xDDD9: +case 0xDFD9: +case 0xD1DA: +case 0xD3DA: +case 0xD5DA: +case 0xD7DA: +case 0xD9DA: +case 0xDBDA: +case 0xDDDA: +case 0xDFDA: +case 0xD1DB: +case 0xD3DB: +case 0xD5DB: +case 0xD7DB: +case 0xD9DB: +case 0xDBDB: +case 0xDDDB: +case 0xDFDB: +case 0xD1DC: +case 0xD3DC: +case 0xD5DC: +case 0xD7DC: +case 0xD9DC: +case 0xDBDC: +case 0xDDDC: +case 0xDFDC: +case 0xD1DD: +case 0xD3DD: +case 0xD5DD: +case 0xD7DD: +case 0xD9DD: +case 0xDBDD: +case 0xDDDD: +case 0xDFDD: +case 0xD1DE: +case 0xD3DE: +case 0xD5DE: +case 0xD7DE: +case 0xD9DE: +case 0xDBDE: +case 0xDDDE: +case 0xDFDE: + +// ADDA +case 0xD1D8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 4; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3E0: +case 0xD5E0: +case 0xD7E0: +case 0xD9E0: +case 0xDBE0: +case 0xDDE0: +case 0xDFE0: +case 0xD1E1: +case 0xD3E1: +case 0xD5E1: +case 0xD7E1: +case 0xD9E1: +case 0xDBE1: +case 0xDDE1: +case 0xDFE1: +case 0xD1E2: +case 0xD3E2: +case 0xD5E2: +case 0xD7E2: +case 0xD9E2: +case 0xDBE2: +case 0xDDE2: +case 0xDFE2: +case 0xD1E3: +case 0xD3E3: +case 0xD5E3: +case 0xD7E3: +case 0xD9E3: +case 0xDBE3: +case 0xDDE3: +case 0xDFE3: +case 0xD1E4: +case 0xD3E4: +case 0xD5E4: +case 0xD7E4: +case 0xD9E4: +case 0xDBE4: +case 0xDDE4: +case 0xDFE4: +case 0xD1E5: +case 0xD3E5: +case 0xD5E5: +case 0xD7E5: +case 0xD9E5: +case 0xDBE5: +case 0xDDE5: +case 0xDFE5: +case 0xD1E6: +case 0xD3E6: +case 0xD5E6: +case 0xD7E6: +case 0xD9E6: +case 0xDBE6: +case 0xDDE6: +case 0xDFE6: + +// ADDA +case 0xD1E0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 4; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3E8: +case 0xD5E8: +case 0xD7E8: +case 0xD9E8: +case 0xDBE8: +case 0xDDE8: +case 0xDFE8: +case 0xD1E9: +case 0xD3E9: +case 0xD5E9: +case 0xD7E9: +case 0xD9E9: +case 0xDBE9: +case 0xDDE9: +case 0xDFE9: +case 0xD1EA: +case 0xD3EA: +case 0xD5EA: +case 0xD7EA: +case 0xD9EA: +case 0xDBEA: +case 0xDDEA: +case 0xDFEA: +case 0xD1EB: +case 0xD3EB: +case 0xD5EB: +case 0xD7EB: +case 0xD9EB: +case 0xDBEB: +case 0xDDEB: +case 0xDFEB: +case 0xD1EC: +case 0xD3EC: +case 0xD5EC: +case 0xD7EC: +case 0xD9EC: +case 0xDBEC: +case 0xDDEC: +case 0xDFEC: +case 0xD1ED: +case 0xD3ED: +case 0xD5ED: +case 0xD7ED: +case 0xD9ED: +case 0xDBED: +case 0xDDED: +case 0xDFED: +case 0xD1EE: +case 0xD3EE: +case 0xD5EE: +case 0xD7EE: +case 0xD9EE: +case 0xDBEE: +case 0xDDEE: +case 0xDFEE: +case 0xD1EF: +case 0xD3EF: +case 0xD5EF: +case 0xD7EF: +case 0xD9EF: +case 0xDBEF: +case 0xDDEF: +case 0xDFEF: + +// ADDA +case 0xD1E8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3F0: +case 0xD5F0: +case 0xD7F0: +case 0xD9F0: +case 0xDBF0: +case 0xDDF0: +case 0xDFF0: +case 0xD1F1: +case 0xD3F1: +case 0xD5F1: +case 0xD7F1: +case 0xD9F1: +case 0xDBF1: +case 0xDDF1: +case 0xDFF1: +case 0xD1F2: +case 0xD3F2: +case 0xD5F2: +case 0xD7F2: +case 0xD9F2: +case 0xDBF2: +case 0xDDF2: +case 0xDFF2: +case 0xD1F3: +case 0xD3F3: +case 0xD5F3: +case 0xD7F3: +case 0xD9F3: +case 0xDBF3: +case 0xDDF3: +case 0xDFF3: +case 0xD1F4: +case 0xD3F4: +case 0xD5F4: +case 0xD7F4: +case 0xD9F4: +case 0xDBF4: +case 0xDDF4: +case 0xDFF4: +case 0xD1F5: +case 0xD3F5: +case 0xD5F5: +case 0xD7F5: +case 0xD9F5: +case 0xDBF5: +case 0xDDF5: +case 0xDFF5: +case 0xD1F6: +case 0xD3F6: +case 0xD5F6: +case 0xD7F6: +case 0xD9F6: +case 0xDBF6: +case 0xDDF6: +case 0xDFF6: +case 0xD1F7: +case 0xD3F7: +case 0xD5F7: +case 0xD7F7: +case 0xD9F7: +case 0xDBF7: +case 0xDDF7: +case 0xDFF7: + +// ADDA +case 0xD1F0: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 8; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3F8: +case 0xD5F8: +case 0xD7F8: +case 0xD9F8: +case 0xDBF8: +case 0xDDF8: +case 0xDFF8: + +// ADDA +case 0xD1F8: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3F9: +case 0xD5F9: +case 0xD7F9: +case 0xD9F9: +case 0xDBF9: +case 0xDDF9: +case 0xDFF9: + +// ADDA +case 0xD1F9: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 10; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3FA: +case 0xD5FA: +case 0xD7FA: +case 0xD9FA: +case 0xDBFA: +case 0xDDFA: +case 0xDFFA: + +// ADDA +case 0xD1FA: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 6; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3FB: +case 0xD5FB: +case 0xD7FB: +case 0xD9FB: +case 0xDBFB: +case 0xDDFB: +case 0xDFFB: + +// ADDA +case 0xD1FB: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = PC; + DECODE_EXT_WORD + timestamp += 8; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3FC: +case 0xD5FC: +case 0xD7FC: +case 0xD9FC: +case 0xDBFC: +case 0xDDFC: +case 0xDFFC: + +// ADDA +case 0xD1FC: +{ + u32 res; + u32 dst; + u32 src; + src = (s32)(s32)FETCH_LONG; + PC += 4; + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(14) +case 0xD3DF: +case 0xD5DF: +case 0xD7DF: +case 0xD9DF: +case 0xDBDF: +case 0xDDDF: +case 0xDFDF: + +// ADDA +case 0xD1DF: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 4; + timestamp += 2; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) +case 0xD3E7: +case 0xD5E7: +case 0xD7E7: +case 0xD9E7: +case 0xDBE7: +case 0xDDE7: +case 0xDFE7: + +// ADDA +case 0xD1E7: +{ + u32 adr; + u32 res; + u32 dst; + u32 src; + adr = CPU->A[7] - 4; + CPU->A[7] = adr; + timestamp += 4; + READSX_LOat_F(adr, src) + dst = (u32)CPU->A[(Opcode >> 9) & 7]; + res = dst + src; + CPU->A[(Opcode >> 9) & 7] = res; +} +RET(6) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_opE.inc b/libmednahawk/src/hw_cpu/c68k/c68k_opE.inc new file mode 100644 index 0000000000..95ddcc8213 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_opE.inc @@ -0,0 +1,6034 @@ +case 0xE200: +case 0xE400: +case 0xE600: +case 0xE800: +case 0xEA00: +case 0xEC00: +case 0xEE00: +case 0xE001: +case 0xE201: +case 0xE401: +case 0xE601: +case 0xE801: +case 0xEA01: +case 0xEC01: +case 0xEE01: +case 0xE002: +case 0xE202: +case 0xE402: +case 0xE602: +case 0xE802: +case 0xEA02: +case 0xEC02: +case 0xEE02: +case 0xE003: +case 0xE203: +case 0xE403: +case 0xE603: +case 0xE803: +case 0xEA03: +case 0xEC03: +case 0xEE03: +case 0xE004: +case 0xE204: +case 0xE404: +case 0xE604: +case 0xE804: +case 0xEA04: +case 0xEC04: +case 0xEE04: +case 0xE005: +case 0xE205: +case 0xE405: +case 0xE605: +case 0xE805: +case 0xEA05: +case 0xEC05: +case 0xEE05: +case 0xE006: +case 0xE206: +case 0xE406: +case 0xE606: +case 0xE806: +case 0xEA06: +case 0xEC06: +case 0xEE06: +case 0xE007: +case 0xE207: +case 0xE407: +case 0xE607: +case 0xE807: +case 0xEA07: +case 0xEC07: +case 0xEE07: + +// ASRk +case 0xE000: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (s32)(s8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE240: +case 0xE440: +case 0xE640: +case 0xE840: +case 0xEA40: +case 0xEC40: +case 0xEE40: +case 0xE041: +case 0xE241: +case 0xE441: +case 0xE641: +case 0xE841: +case 0xEA41: +case 0xEC41: +case 0xEE41: +case 0xE042: +case 0xE242: +case 0xE442: +case 0xE642: +case 0xE842: +case 0xEA42: +case 0xEC42: +case 0xEE42: +case 0xE043: +case 0xE243: +case 0xE443: +case 0xE643: +case 0xE843: +case 0xEA43: +case 0xEC43: +case 0xEE43: +case 0xE044: +case 0xE244: +case 0xE444: +case 0xE644: +case 0xE844: +case 0xEA44: +case 0xEC44: +case 0xEE44: +case 0xE045: +case 0xE245: +case 0xE445: +case 0xE645: +case 0xE845: +case 0xEA45: +case 0xEC45: +case 0xEE45: +case 0xE046: +case 0xE246: +case 0xE446: +case 0xE646: +case 0xE846: +case 0xEA46: +case 0xEC46: +case 0xEE46: +case 0xE047: +case 0xE247: +case 0xE447: +case 0xE647: +case 0xE847: +case 0xEA47: +case 0xEC47: +case 0xEE47: + +// ASRk +case 0xE040: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE280: +case 0xE480: +case 0xE680: +case 0xE880: +case 0xEA80: +case 0xEC80: +case 0xEE80: +case 0xE081: +case 0xE281: +case 0xE481: +case 0xE681: +case 0xE881: +case 0xEA81: +case 0xEC81: +case 0xEE81: +case 0xE082: +case 0xE282: +case 0xE482: +case 0xE682: +case 0xE882: +case 0xEA82: +case 0xEC82: +case 0xEE82: +case 0xE083: +case 0xE283: +case 0xE483: +case 0xE683: +case 0xE883: +case 0xEA83: +case 0xEC83: +case 0xEE83: +case 0xE084: +case 0xE284: +case 0xE484: +case 0xE684: +case 0xE884: +case 0xEA84: +case 0xEC84: +case 0xEE84: +case 0xE085: +case 0xE285: +case 0xE485: +case 0xE685: +case 0xE885: +case 0xEA85: +case 0xEC85: +case 0xEE85: +case 0xE086: +case 0xE286: +case 0xE486: +case 0xE686: +case 0xE886: +case 0xEA86: +case 0xEC86: +case 0xEE86: +case 0xE087: +case 0xE287: +case 0xE487: +case 0xE687: +case 0xE887: +case 0xEA87: +case 0xEC87: +case 0xEE87: + +// ASRk +case 0xE080: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (s32)(s32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE208: +case 0xE408: +case 0xE608: +case 0xE808: +case 0xEA08: +case 0xEC08: +case 0xEE08: +case 0xE009: +case 0xE209: +case 0xE409: +case 0xE609: +case 0xE809: +case 0xEA09: +case 0xEC09: +case 0xEE09: +case 0xE00A: +case 0xE20A: +case 0xE40A: +case 0xE60A: +case 0xE80A: +case 0xEA0A: +case 0xEC0A: +case 0xEE0A: +case 0xE00B: +case 0xE20B: +case 0xE40B: +case 0xE60B: +case 0xE80B: +case 0xEA0B: +case 0xEC0B: +case 0xEE0B: +case 0xE00C: +case 0xE20C: +case 0xE40C: +case 0xE60C: +case 0xE80C: +case 0xEA0C: +case 0xEC0C: +case 0xEE0C: +case 0xE00D: +case 0xE20D: +case 0xE40D: +case 0xE60D: +case 0xE80D: +case 0xEA0D: +case 0xEC0D: +case 0xEE0D: +case 0xE00E: +case 0xE20E: +case 0xE40E: +case 0xE60E: +case 0xE80E: +case 0xEA0E: +case 0xEC0E: +case 0xEE0E: +case 0xE00F: +case 0xE20F: +case 0xE40F: +case 0xE60F: +case 0xE80F: +case 0xEA0F: +case 0xEC0F: +case 0xEE0F: + +// LSRk +case 0xE008: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = src >> sft; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE248: +case 0xE448: +case 0xE648: +case 0xE848: +case 0xEA48: +case 0xEC48: +case 0xEE48: +case 0xE049: +case 0xE249: +case 0xE449: +case 0xE649: +case 0xE849: +case 0xEA49: +case 0xEC49: +case 0xEE49: +case 0xE04A: +case 0xE24A: +case 0xE44A: +case 0xE64A: +case 0xE84A: +case 0xEA4A: +case 0xEC4A: +case 0xEE4A: +case 0xE04B: +case 0xE24B: +case 0xE44B: +case 0xE64B: +case 0xE84B: +case 0xEA4B: +case 0xEC4B: +case 0xEE4B: +case 0xE04C: +case 0xE24C: +case 0xE44C: +case 0xE64C: +case 0xE84C: +case 0xEA4C: +case 0xEC4C: +case 0xEE4C: +case 0xE04D: +case 0xE24D: +case 0xE44D: +case 0xE64D: +case 0xE84D: +case 0xEA4D: +case 0xEC4D: +case 0xEE4D: +case 0xE04E: +case 0xE24E: +case 0xE44E: +case 0xE64E: +case 0xE84E: +case 0xEA4E: +case 0xEC4E: +case 0xEE4E: +case 0xE04F: +case 0xE24F: +case 0xE44F: +case 0xE64F: +case 0xE84F: +case 0xEA4F: +case 0xEC4F: +case 0xEE4F: + +// LSRk +case 0xE048: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = src >> sft; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE288: +case 0xE488: +case 0xE688: +case 0xE888: +case 0xEA88: +case 0xEC88: +case 0xEE88: +case 0xE089: +case 0xE289: +case 0xE489: +case 0xE689: +case 0xE889: +case 0xEA89: +case 0xEC89: +case 0xEE89: +case 0xE08A: +case 0xE28A: +case 0xE48A: +case 0xE68A: +case 0xE88A: +case 0xEA8A: +case 0xEC8A: +case 0xEE8A: +case 0xE08B: +case 0xE28B: +case 0xE48B: +case 0xE68B: +case 0xE88B: +case 0xEA8B: +case 0xEC8B: +case 0xEE8B: +case 0xE08C: +case 0xE28C: +case 0xE48C: +case 0xE68C: +case 0xE88C: +case 0xEA8C: +case 0xEC8C: +case 0xEE8C: +case 0xE08D: +case 0xE28D: +case 0xE48D: +case 0xE68D: +case 0xE88D: +case 0xEA8D: +case 0xEC8D: +case 0xEE8D: +case 0xE08E: +case 0xE28E: +case 0xE48E: +case 0xE68E: +case 0xE88E: +case 0xEA8E: +case 0xEC8E: +case 0xEE8E: +case 0xE08F: +case 0xE28F: +case 0xE48F: +case 0xE68F: +case 0xE88F: +case 0xEA8F: +case 0xEC8F: +case 0xEE8F: + +// LSRk +case 0xE088: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = src >> sft; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE210: +case 0xE410: +case 0xE610: +case 0xE810: +case 0xEA10: +case 0xEC10: +case 0xEE10: +case 0xE011: +case 0xE211: +case 0xE411: +case 0xE611: +case 0xE811: +case 0xEA11: +case 0xEC11: +case 0xEE11: +case 0xE012: +case 0xE212: +case 0xE412: +case 0xE612: +case 0xE812: +case 0xEA12: +case 0xEC12: +case 0xEE12: +case 0xE013: +case 0xE213: +case 0xE413: +case 0xE613: +case 0xE813: +case 0xEA13: +case 0xEC13: +case 0xEE13: +case 0xE014: +case 0xE214: +case 0xE414: +case 0xE614: +case 0xE814: +case 0xEA14: +case 0xEC14: +case 0xEE14: +case 0xE015: +case 0xE215: +case 0xE415: +case 0xE615: +case 0xE815: +case 0xEA15: +case 0xEC15: +case 0xEE15: +case 0xE016: +case 0xE216: +case 0xE416: +case 0xE616: +case 0xE816: +case 0xEA16: +case 0xEC16: +case 0xEE16: +case 0xE017: +case 0xE217: +case 0xE417: +case 0xE617: +case 0xE817: +case 0xEA17: +case 0xEC17: +case 0xEE17: + +// ROXRk +case 0xE010: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + src |= (CPU->flag_X & C68K_SR_X) << 0; + res = (src >> sft) | (src << (9 - sft)); + CPU->flag_X = CPU->flag_C = res >> 0; + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE250: +case 0xE450: +case 0xE650: +case 0xE850: +case 0xEA50: +case 0xEC50: +case 0xEE50: +case 0xE051: +case 0xE251: +case 0xE451: +case 0xE651: +case 0xE851: +case 0xEA51: +case 0xEC51: +case 0xEE51: +case 0xE052: +case 0xE252: +case 0xE452: +case 0xE652: +case 0xE852: +case 0xEA52: +case 0xEC52: +case 0xEE52: +case 0xE053: +case 0xE253: +case 0xE453: +case 0xE653: +case 0xE853: +case 0xEA53: +case 0xEC53: +case 0xEE53: +case 0xE054: +case 0xE254: +case 0xE454: +case 0xE654: +case 0xE854: +case 0xEA54: +case 0xEC54: +case 0xEE54: +case 0xE055: +case 0xE255: +case 0xE455: +case 0xE655: +case 0xE855: +case 0xEA55: +case 0xEC55: +case 0xEE55: +case 0xE056: +case 0xE256: +case 0xE456: +case 0xE656: +case 0xE856: +case 0xEA56: +case 0xEC56: +case 0xEE56: +case 0xE057: +case 0xE257: +case 0xE457: +case 0xE657: +case 0xE857: +case 0xEA57: +case 0xEC57: +case 0xEE57: + +// ROXRk +case 0xE050: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + src |= (CPU->flag_X & C68K_SR_X) << 8; + res = (src >> sft) | (src << (17 - sft)); + CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE290: +case 0xE490: +case 0xE690: +case 0xE890: +case 0xEA90: +case 0xEC90: +case 0xEE90: +case 0xE091: +case 0xE291: +case 0xE491: +case 0xE691: +case 0xE891: +case 0xEA91: +case 0xEC91: +case 0xEE91: +case 0xE092: +case 0xE292: +case 0xE492: +case 0xE692: +case 0xE892: +case 0xEA92: +case 0xEC92: +case 0xEE92: +case 0xE093: +case 0xE293: +case 0xE493: +case 0xE693: +case 0xE893: +case 0xEA93: +case 0xEC93: +case 0xEE93: +case 0xE094: +case 0xE294: +case 0xE494: +case 0xE694: +case 0xE894: +case 0xEA94: +case 0xEC94: +case 0xEE94: +case 0xE095: +case 0xE295: +case 0xE495: +case 0xE695: +case 0xE895: +case 0xEA95: +case 0xEC95: +case 0xEE95: +case 0xE096: +case 0xE296: +case 0xE496: +case 0xE696: +case 0xE896: +case 0xEA96: +case 0xEC96: +case 0xEE96: +case 0xE097: +case 0xE297: +case 0xE497: +case 0xE697: +case 0xE897: +case 0xEA97: +case 0xEC97: +case 0xEE97: + +// ROXRk +case 0xE090: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + if (sft == 1) res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + 1))); + else res = (src >> sft) | (src << (33 - sft)) | ((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + sft))); + CPU->flag_X = CPU->flag_C; + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE218: +case 0xE418: +case 0xE618: +case 0xE818: +case 0xEA18: +case 0xEC18: +case 0xEE18: +case 0xE019: +case 0xE219: +case 0xE419: +case 0xE619: +case 0xE819: +case 0xEA19: +case 0xEC19: +case 0xEE19: +case 0xE01A: +case 0xE21A: +case 0xE41A: +case 0xE61A: +case 0xE81A: +case 0xEA1A: +case 0xEC1A: +case 0xEE1A: +case 0xE01B: +case 0xE21B: +case 0xE41B: +case 0xE61B: +case 0xE81B: +case 0xEA1B: +case 0xEC1B: +case 0xEE1B: +case 0xE01C: +case 0xE21C: +case 0xE41C: +case 0xE61C: +case 0xE81C: +case 0xEA1C: +case 0xEC1C: +case 0xEE1C: +case 0xE01D: +case 0xE21D: +case 0xE41D: +case 0xE61D: +case 0xE81D: +case 0xEA1D: +case 0xEC1D: +case 0xEE1D: +case 0xE01E: +case 0xE21E: +case 0xE41E: +case 0xE61E: +case 0xE81E: +case 0xEA1E: +case 0xEC1E: +case 0xEE1E: +case 0xE01F: +case 0xE21F: +case 0xE41F: +case 0xE61F: +case 0xE81F: +case 0xEA1F: +case 0xEC1F: +case 0xEE1F: + +// RORk +case 0xE018: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = (src >> sft) | (src << (8 - sft)); + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE258: +case 0xE458: +case 0xE658: +case 0xE858: +case 0xEA58: +case 0xEC58: +case 0xEE58: +case 0xE059: +case 0xE259: +case 0xE459: +case 0xE659: +case 0xE859: +case 0xEA59: +case 0xEC59: +case 0xEE59: +case 0xE05A: +case 0xE25A: +case 0xE45A: +case 0xE65A: +case 0xE85A: +case 0xEA5A: +case 0xEC5A: +case 0xEE5A: +case 0xE05B: +case 0xE25B: +case 0xE45B: +case 0xE65B: +case 0xE85B: +case 0xEA5B: +case 0xEC5B: +case 0xEE5B: +case 0xE05C: +case 0xE25C: +case 0xE45C: +case 0xE65C: +case 0xE85C: +case 0xEA5C: +case 0xEC5C: +case 0xEE5C: +case 0xE05D: +case 0xE25D: +case 0xE45D: +case 0xE65D: +case 0xE85D: +case 0xEA5D: +case 0xEC5D: +case 0xEE5D: +case 0xE05E: +case 0xE25E: +case 0xE45E: +case 0xE65E: +case 0xE85E: +case 0xEA5E: +case 0xEC5E: +case 0xEE5E: +case 0xE05F: +case 0xE25F: +case 0xE45F: +case 0xE65F: +case 0xE85F: +case 0xEA5F: +case 0xEC5F: +case 0xEE5F: + +// RORk +case 0xE058: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = (src >> sft) | (src << (16 - sft)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE298: +case 0xE498: +case 0xE698: +case 0xE898: +case 0xEA98: +case 0xEC98: +case 0xEE98: +case 0xE099: +case 0xE299: +case 0xE499: +case 0xE699: +case 0xE899: +case 0xEA99: +case 0xEC99: +case 0xEE99: +case 0xE09A: +case 0xE29A: +case 0xE49A: +case 0xE69A: +case 0xE89A: +case 0xEA9A: +case 0xEC9A: +case 0xEE9A: +case 0xE09B: +case 0xE29B: +case 0xE49B: +case 0xE69B: +case 0xE89B: +case 0xEA9B: +case 0xEC9B: +case 0xEE9B: +case 0xE09C: +case 0xE29C: +case 0xE49C: +case 0xE69C: +case 0xE89C: +case 0xEA9C: +case 0xEC9C: +case 0xEE9C: +case 0xE09D: +case 0xE29D: +case 0xE49D: +case 0xE69D: +case 0xE89D: +case 0xEA9D: +case 0xEC9D: +case 0xEE9D: +case 0xE09E: +case 0xE29E: +case 0xE49E: +case 0xE69E: +case 0xE89E: +case 0xEA9E: +case 0xEC9E: +case 0xEE9E: +case 0xE09F: +case 0xE29F: +case 0xE49F: +case 0xE69F: +case 0xE89F: +case 0xEA9F: +case 0xEC9F: +case 0xEE9F: + +// RORk +case 0xE098: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = (src >> sft) | (src << (32 - sft)); + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE300: +case 0xE500: +case 0xE700: +case 0xE900: +case 0xEB00: +case 0xED00: +case 0xEF00: +case 0xE101: +case 0xE301: +case 0xE501: +case 0xE701: +case 0xE901: +case 0xEB01: +case 0xED01: +case 0xEF01: +case 0xE102: +case 0xE302: +case 0xE502: +case 0xE702: +case 0xE902: +case 0xEB02: +case 0xED02: +case 0xEF02: +case 0xE103: +case 0xE303: +case 0xE503: +case 0xE703: +case 0xE903: +case 0xEB03: +case 0xED03: +case 0xEF03: +case 0xE104: +case 0xE304: +case 0xE504: +case 0xE704: +case 0xE904: +case 0xEB04: +case 0xED04: +case 0xEF04: +case 0xE105: +case 0xE305: +case 0xE505: +case 0xE705: +case 0xE905: +case 0xEB05: +case 0xED05: +case 0xEF05: +case 0xE106: +case 0xE306: +case 0xE506: +case 0xE706: +case 0xE906: +case 0xEB06: +case 0xED06: +case 0xEF06: +case 0xE107: +case 0xE307: +case 0xE507: +case 0xE707: +case 0xE907: +case 0xEB07: +case 0xED07: +case 0xEF07: + +// ASLk +case 0xE100: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft < 8) + { + CPU->flag_X = CPU->flag_C = src << (0 + sft); + res = src << sft; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_V = 0; + if ((sft > 7) && (src)) CPU->flag_V = C68K_SR_V; + else + { + u32 msk = (((s32)0x80000000) >> (sft + 24)) & 0x000000FF; + src &= msk; + if ((src) && (src != msk)) CPU->flag_V = C68K_SR_V; + } + RET(6) + } + + if (src) CPU->flag_V = C68K_SR_V; + else CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_N = 0; + CPU->flag_notZ = 0; +} +RET(6) +case 0xE340: +case 0xE540: +case 0xE740: +case 0xE940: +case 0xEB40: +case 0xED40: +case 0xEF40: +case 0xE141: +case 0xE341: +case 0xE541: +case 0xE741: +case 0xE941: +case 0xEB41: +case 0xED41: +case 0xEF41: +case 0xE142: +case 0xE342: +case 0xE542: +case 0xE742: +case 0xE942: +case 0xEB42: +case 0xED42: +case 0xEF42: +case 0xE143: +case 0xE343: +case 0xE543: +case 0xE743: +case 0xE943: +case 0xEB43: +case 0xED43: +case 0xEF43: +case 0xE144: +case 0xE344: +case 0xE544: +case 0xE744: +case 0xE944: +case 0xEB44: +case 0xED44: +case 0xEF44: +case 0xE145: +case 0xE345: +case 0xE545: +case 0xE745: +case 0xE945: +case 0xEB45: +case 0xED45: +case 0xEF45: +case 0xE146: +case 0xE346: +case 0xE546: +case 0xE746: +case 0xE946: +case 0xEB46: +case 0xED46: +case 0xEF46: +case 0xE147: +case 0xE347: +case 0xE547: +case 0xE747: +case 0xE947: +case 0xEB47: +case 0xED47: +case 0xEF47: + +// ASLk +case 0xE140: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_X = CPU->flag_C = src >> (8 - sft); + res = src << sft; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 16)) & 0x0000FFFF; + src &= msk; + if ((src) && (src != msk)) CPU->flag_V = C68K_SR_V; + } +} +RET(6) +case 0xE380: +case 0xE580: +case 0xE780: +case 0xE980: +case 0xEB80: +case 0xED80: +case 0xEF80: +case 0xE181: +case 0xE381: +case 0xE581: +case 0xE781: +case 0xE981: +case 0xEB81: +case 0xED81: +case 0xEF81: +case 0xE182: +case 0xE382: +case 0xE582: +case 0xE782: +case 0xE982: +case 0xEB82: +case 0xED82: +case 0xEF82: +case 0xE183: +case 0xE383: +case 0xE583: +case 0xE783: +case 0xE983: +case 0xEB83: +case 0xED83: +case 0xEF83: +case 0xE184: +case 0xE384: +case 0xE584: +case 0xE784: +case 0xE984: +case 0xEB84: +case 0xED84: +case 0xEF84: +case 0xE185: +case 0xE385: +case 0xE585: +case 0xE785: +case 0xE985: +case 0xEB85: +case 0xED85: +case 0xEF85: +case 0xE186: +case 0xE386: +case 0xE586: +case 0xE786: +case 0xE986: +case 0xEB86: +case 0xED86: +case 0xEF86: +case 0xE187: +case 0xE387: +case 0xE587: +case 0xE787: +case 0xE987: +case 0xEB87: +case 0xED87: +case 0xEF87: + +// ASLk +case 0xE180: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_X = CPU->flag_C = src >> (24 - sft); + res = src << sft; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res & 0xFFFFFFFF; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 0)) & 0xFFFFFFFF; + src &= msk; + if ((src) && (src != msk)) CPU->flag_V = C68K_SR_V; + } +} +RET(8) +case 0xE308: +case 0xE508: +case 0xE708: +case 0xE908: +case 0xEB08: +case 0xED08: +case 0xEF08: +case 0xE109: +case 0xE309: +case 0xE509: +case 0xE709: +case 0xE909: +case 0xEB09: +case 0xED09: +case 0xEF09: +case 0xE10A: +case 0xE30A: +case 0xE50A: +case 0xE70A: +case 0xE90A: +case 0xEB0A: +case 0xED0A: +case 0xEF0A: +case 0xE10B: +case 0xE30B: +case 0xE50B: +case 0xE70B: +case 0xE90B: +case 0xEB0B: +case 0xED0B: +case 0xEF0B: +case 0xE10C: +case 0xE30C: +case 0xE50C: +case 0xE70C: +case 0xE90C: +case 0xEB0C: +case 0xED0C: +case 0xEF0C: +case 0xE10D: +case 0xE30D: +case 0xE50D: +case 0xE70D: +case 0xE90D: +case 0xEB0D: +case 0xED0D: +case 0xEF0D: +case 0xE10E: +case 0xE30E: +case 0xE50E: +case 0xE70E: +case 0xE90E: +case 0xEB0E: +case 0xED0E: +case 0xEF0E: +case 0xE10F: +case 0xE30F: +case 0xE50F: +case 0xE70F: +case 0xE90F: +case 0xEB0F: +case 0xED0F: +case 0xEF0F: + +// LSLk +case 0xE108: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << (0 + sft); + res = src << sft; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE348: +case 0xE548: +case 0xE748: +case 0xE948: +case 0xEB48: +case 0xED48: +case 0xEF48: +case 0xE149: +case 0xE349: +case 0xE549: +case 0xE749: +case 0xE949: +case 0xEB49: +case 0xED49: +case 0xEF49: +case 0xE14A: +case 0xE34A: +case 0xE54A: +case 0xE74A: +case 0xE94A: +case 0xEB4A: +case 0xED4A: +case 0xEF4A: +case 0xE14B: +case 0xE34B: +case 0xE54B: +case 0xE74B: +case 0xE94B: +case 0xEB4B: +case 0xED4B: +case 0xEF4B: +case 0xE14C: +case 0xE34C: +case 0xE54C: +case 0xE74C: +case 0xE94C: +case 0xEB4C: +case 0xED4C: +case 0xEF4C: +case 0xE14D: +case 0xE34D: +case 0xE54D: +case 0xE74D: +case 0xE94D: +case 0xEB4D: +case 0xED4D: +case 0xEF4D: +case 0xE14E: +case 0xE34E: +case 0xE54E: +case 0xE74E: +case 0xE94E: +case 0xEB4E: +case 0xED4E: +case 0xEF4E: +case 0xE14F: +case 0xE34F: +case 0xE54F: +case 0xE74F: +case 0xE94F: +case 0xEB4F: +case 0xED4F: +case 0xEF4F: + +// LSLk +case 0xE148: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> (8 - sft); + res = src << sft; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE388: +case 0xE588: +case 0xE788: +case 0xE988: +case 0xEB88: +case 0xED88: +case 0xEF88: +case 0xE189: +case 0xE389: +case 0xE589: +case 0xE789: +case 0xE989: +case 0xEB89: +case 0xED89: +case 0xEF89: +case 0xE18A: +case 0xE38A: +case 0xE58A: +case 0xE78A: +case 0xE98A: +case 0xEB8A: +case 0xED8A: +case 0xEF8A: +case 0xE18B: +case 0xE38B: +case 0xE58B: +case 0xE78B: +case 0xE98B: +case 0xEB8B: +case 0xED8B: +case 0xEF8B: +case 0xE18C: +case 0xE38C: +case 0xE58C: +case 0xE78C: +case 0xE98C: +case 0xEB8C: +case 0xED8C: +case 0xEF8C: +case 0xE18D: +case 0xE38D: +case 0xE58D: +case 0xE78D: +case 0xE98D: +case 0xEB8D: +case 0xED8D: +case 0xEF8D: +case 0xE18E: +case 0xE38E: +case 0xE58E: +case 0xE78E: +case 0xE98E: +case 0xEB8E: +case 0xED8E: +case 0xEF8E: +case 0xE18F: +case 0xE38F: +case 0xE58F: +case 0xE78F: +case 0xE98F: +case 0xEB8F: +case 0xED8F: +case 0xEF8F: + +// LSLk +case 0xE188: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> (24 - sft); + res = src << sft; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res & 0xFFFFFFFF; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE310: +case 0xE510: +case 0xE710: +case 0xE910: +case 0xEB10: +case 0xED10: +case 0xEF10: +case 0xE111: +case 0xE311: +case 0xE511: +case 0xE711: +case 0xE911: +case 0xEB11: +case 0xED11: +case 0xEF11: +case 0xE112: +case 0xE312: +case 0xE512: +case 0xE712: +case 0xE912: +case 0xEB12: +case 0xED12: +case 0xEF12: +case 0xE113: +case 0xE313: +case 0xE513: +case 0xE713: +case 0xE913: +case 0xEB13: +case 0xED13: +case 0xEF13: +case 0xE114: +case 0xE314: +case 0xE514: +case 0xE714: +case 0xE914: +case 0xEB14: +case 0xED14: +case 0xEF14: +case 0xE115: +case 0xE315: +case 0xE515: +case 0xE715: +case 0xE915: +case 0xEB15: +case 0xED15: +case 0xEF15: +case 0xE116: +case 0xE316: +case 0xE516: +case 0xE716: +case 0xE916: +case 0xEB16: +case 0xED16: +case 0xEF16: +case 0xE117: +case 0xE317: +case 0xE517: +case 0xE717: +case 0xE917: +case 0xEB17: +case 0xED17: +case 0xEF17: + +// ROXLk +case 0xE110: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + src |= (CPU->flag_X & C68K_SR_X) << 0; + res = (src << sft) | (src >> (9 - sft)); + CPU->flag_X = CPU->flag_C = res >> 0; + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE350: +case 0xE550: +case 0xE750: +case 0xE950: +case 0xEB50: +case 0xED50: +case 0xEF50: +case 0xE151: +case 0xE351: +case 0xE551: +case 0xE751: +case 0xE951: +case 0xEB51: +case 0xED51: +case 0xEF51: +case 0xE152: +case 0xE352: +case 0xE552: +case 0xE752: +case 0xE952: +case 0xEB52: +case 0xED52: +case 0xEF52: +case 0xE153: +case 0xE353: +case 0xE553: +case 0xE753: +case 0xE953: +case 0xEB53: +case 0xED53: +case 0xEF53: +case 0xE154: +case 0xE354: +case 0xE554: +case 0xE754: +case 0xE954: +case 0xEB54: +case 0xED54: +case 0xEF54: +case 0xE155: +case 0xE355: +case 0xE555: +case 0xE755: +case 0xE955: +case 0xEB55: +case 0xED55: +case 0xEF55: +case 0xE156: +case 0xE356: +case 0xE556: +case 0xE756: +case 0xE956: +case 0xEB56: +case 0xED56: +case 0xEF56: +case 0xE157: +case 0xE357: +case 0xE557: +case 0xE757: +case 0xE957: +case 0xEB57: +case 0xED57: +case 0xEF57: + +// ROXLk +case 0xE150: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + src |= (CPU->flag_X & C68K_SR_X) << 8; + res = (src << sft) | (src >> (17 - sft)); + CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE390: +case 0xE590: +case 0xE790: +case 0xE990: +case 0xEB90: +case 0xED90: +case 0xEF90: +case 0xE191: +case 0xE391: +case 0xE591: +case 0xE791: +case 0xE991: +case 0xEB91: +case 0xED91: +case 0xEF91: +case 0xE192: +case 0xE392: +case 0xE592: +case 0xE792: +case 0xE992: +case 0xEB92: +case 0xED92: +case 0xEF92: +case 0xE193: +case 0xE393: +case 0xE593: +case 0xE793: +case 0xE993: +case 0xEB93: +case 0xED93: +case 0xEF93: +case 0xE194: +case 0xE394: +case 0xE594: +case 0xE794: +case 0xE994: +case 0xEB94: +case 0xED94: +case 0xEF94: +case 0xE195: +case 0xE395: +case 0xE595: +case 0xE795: +case 0xE995: +case 0xEB95: +case 0xED95: +case 0xEF95: +case 0xE196: +case 0xE396: +case 0xE596: +case 0xE796: +case 0xE996: +case 0xEB96: +case 0xED96: +case 0xEF96: +case 0xE197: +case 0xE397: +case 0xE597: +case 0xE797: +case 0xE997: +case 0xEB97: +case 0xED97: +case 0xEF97: + +// ROXLk +case 0xE190: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_C = src >> ((32 - C68K_SR_C_SFT) - sft); + if (sft == 1) res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> ((C68K_SR_X_SFT + 1) - 1)); + else res = (src << sft) | (src >> (33 - sft)) | ((CPU->flag_X & C68K_SR_X) >> ((C68K_SR_X_SFT + 1) - sft)); + CPU->flag_X = CPU->flag_C; + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE318: +case 0xE518: +case 0xE718: +case 0xE918: +case 0xEB18: +case 0xED18: +case 0xEF18: +case 0xE119: +case 0xE319: +case 0xE519: +case 0xE719: +case 0xE919: +case 0xEB19: +case 0xED19: +case 0xEF19: +case 0xE11A: +case 0xE31A: +case 0xE51A: +case 0xE71A: +case 0xE91A: +case 0xEB1A: +case 0xED1A: +case 0xEF1A: +case 0xE11B: +case 0xE31B: +case 0xE51B: +case 0xE71B: +case 0xE91B: +case 0xEB1B: +case 0xED1B: +case 0xEF1B: +case 0xE11C: +case 0xE31C: +case 0xE51C: +case 0xE71C: +case 0xE91C: +case 0xEB1C: +case 0xED1C: +case 0xEF1C: +case 0xE11D: +case 0xE31D: +case 0xE51D: +case 0xE71D: +case 0xE91D: +case 0xEB1D: +case 0xED1D: +case 0xEF1D: +case 0xE11E: +case 0xE31E: +case 0xE51E: +case 0xE71E: +case 0xE91E: +case 0xEB1E: +case 0xED1E: +case 0xEF1E: +case 0xE11F: +case 0xE31F: +case 0xE51F: +case 0xE71F: +case 0xE91F: +case 0xEB1F: +case 0xED1F: +case 0xEF1F: + +// ROLk +case 0xE118: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_C = src << (0 + sft); + res = (src << sft) | (src >> (8 - sft)); + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE358: +case 0xE558: +case 0xE758: +case 0xE958: +case 0xEB58: +case 0xED58: +case 0xEF58: +case 0xE159: +case 0xE359: +case 0xE559: +case 0xE759: +case 0xE959: +case 0xEB59: +case 0xED59: +case 0xEF59: +case 0xE15A: +case 0xE35A: +case 0xE55A: +case 0xE75A: +case 0xE95A: +case 0xEB5A: +case 0xED5A: +case 0xEF5A: +case 0xE15B: +case 0xE35B: +case 0xE55B: +case 0xE75B: +case 0xE95B: +case 0xEB5B: +case 0xED5B: +case 0xEF5B: +case 0xE15C: +case 0xE35C: +case 0xE55C: +case 0xE75C: +case 0xE95C: +case 0xEB5C: +case 0xED5C: +case 0xEF5C: +case 0xE15D: +case 0xE35D: +case 0xE55D: +case 0xE75D: +case 0xE95D: +case 0xEB5D: +case 0xED5D: +case 0xEF5D: +case 0xE15E: +case 0xE35E: +case 0xE55E: +case 0xE75E: +case 0xE95E: +case 0xEB5E: +case 0xED5E: +case 0xEF5E: +case 0xE15F: +case 0xE35F: +case 0xE55F: +case 0xE75F: +case 0xE95F: +case 0xEB5F: +case 0xED5F: +case 0xEF5F: + +// ROLk +case 0xE158: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_C = src >> (8 - sft); + res = (src << sft) | (src >> (16 - sft)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(6) +case 0xE398: +case 0xE598: +case 0xE798: +case 0xE998: +case 0xEB98: +case 0xED98: +case 0xEF98: +case 0xE199: +case 0xE399: +case 0xE599: +case 0xE799: +case 0xE999: +case 0xEB99: +case 0xED99: +case 0xEF99: +case 0xE19A: +case 0xE39A: +case 0xE59A: +case 0xE79A: +case 0xE99A: +case 0xEB9A: +case 0xED9A: +case 0xEF9A: +case 0xE19B: +case 0xE39B: +case 0xE59B: +case 0xE79B: +case 0xE99B: +case 0xEB9B: +case 0xED9B: +case 0xEF9B: +case 0xE19C: +case 0xE39C: +case 0xE59C: +case 0xE79C: +case 0xE99C: +case 0xEB9C: +case 0xED9C: +case 0xEF9C: +case 0xE19D: +case 0xE39D: +case 0xE59D: +case 0xE79D: +case 0xE99D: +case 0xEB9D: +case 0xED9D: +case 0xEF9D: +case 0xE19E: +case 0xE39E: +case 0xE59E: +case 0xE79E: +case 0xE99E: +case 0xEB9E: +case 0xED9E: +case 0xEF9E: +case 0xE19F: +case 0xE39F: +case 0xE59F: +case 0xE79F: +case 0xE99F: +case 0xEB9F: +case 0xED9F: +case 0xEF9F: + +// ROLk +case 0xE198: +{ + u32 res; + u32 src; + u32 sft; + + sft = (((Opcode >> 9) - 1) & 7) + 1; + timestamp += sft * 2; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + CPU->flag_V = 0; + CPU->flag_C = src >> (24 - sft); + res = (src << sft) | (src >> (32 - sft)); + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; +} +RET(8) +case 0xE220: +case 0xE420: +case 0xE620: +case 0xE820: +case 0xEA20: +case 0xEC20: +case 0xEE20: +case 0xE021: +case 0xE221: +case 0xE421: +case 0xE621: +case 0xE821: +case 0xEA21: +case 0xEC21: +case 0xEE21: +case 0xE022: +case 0xE222: +case 0xE422: +case 0xE622: +case 0xE822: +case 0xEA22: +case 0xEC22: +case 0xEE22: +case 0xE023: +case 0xE223: +case 0xE423: +case 0xE623: +case 0xE823: +case 0xEA23: +case 0xEC23: +case 0xEE23: +case 0xE024: +case 0xE224: +case 0xE424: +case 0xE624: +case 0xE824: +case 0xEA24: +case 0xEC24: +case 0xEE24: +case 0xE025: +case 0xE225: +case 0xE425: +case 0xE625: +case 0xE825: +case 0xEA25: +case 0xEC25: +case 0xEE25: +case 0xE026: +case 0xE226: +case 0xE426: +case 0xE626: +case 0xE826: +case 0xEA26: +case 0xEC26: +case 0xEE26: +case 0xE027: +case 0xE227: +case 0xE427: +case 0xE627: +case 0xE827: +case 0xEA27: +case 0xEC27: +case 0xEE27: + +// ASRD +case 0xE020: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (s32)(s8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 8) + { + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = ((s32)src) >> sft; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + if (src & (1 << 7)) + { + CPU->flag_N = C68K_SR_N; + CPU->flag_notZ = 1; + CPU->flag_V = 0; + CPU->flag_C = C68K_SR_C; + CPU->flag_X = C68K_SR_X; + res = 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_X = 0; + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE260: +case 0xE460: +case 0xE660: +case 0xE860: +case 0xEA60: +case 0xEC60: +case 0xEE60: +case 0xE061: +case 0xE261: +case 0xE461: +case 0xE661: +case 0xE861: +case 0xEA61: +case 0xEC61: +case 0xEE61: +case 0xE062: +case 0xE262: +case 0xE462: +case 0xE662: +case 0xE862: +case 0xEA62: +case 0xEC62: +case 0xEE62: +case 0xE063: +case 0xE263: +case 0xE463: +case 0xE663: +case 0xE863: +case 0xEA63: +case 0xEC63: +case 0xEE63: +case 0xE064: +case 0xE264: +case 0xE464: +case 0xE664: +case 0xE864: +case 0xEA64: +case 0xEC64: +case 0xEE64: +case 0xE065: +case 0xE265: +case 0xE465: +case 0xE665: +case 0xE865: +case 0xEA65: +case 0xEC65: +case 0xEE65: +case 0xE066: +case 0xE266: +case 0xE466: +case 0xE666: +case 0xE866: +case 0xEA66: +case 0xEC66: +case 0xEE66: +case 0xE067: +case 0xE267: +case 0xE467: +case 0xE667: +case 0xE867: +case 0xEA67: +case 0xEC67: +case 0xEE67: + +// ASRD +case 0xE060: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (s32)(s16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 16) + { + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = (src >> (sft - 1)) << C68K_SR_C_SFT; + res = ((s32)src) >> sft; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + if (src & (1 << 15)) + { + CPU->flag_N = C68K_SR_N; + CPU->flag_notZ = 1; + CPU->flag_V = 0; + CPU->flag_C = C68K_SR_C; + CPU->flag_X = C68K_SR_X; + res = 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_X = 0; + res = 0; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE2A0: +case 0xE4A0: +case 0xE6A0: +case 0xE8A0: +case 0xEAA0: +case 0xECA0: +case 0xEEA0: +case 0xE0A1: +case 0xE2A1: +case 0xE4A1: +case 0xE6A1: +case 0xE8A1: +case 0xEAA1: +case 0xECA1: +case 0xEEA1: +case 0xE0A2: +case 0xE2A2: +case 0xE4A2: +case 0xE6A2: +case 0xE8A2: +case 0xEAA2: +case 0xECA2: +case 0xEEA2: +case 0xE0A3: +case 0xE2A3: +case 0xE4A3: +case 0xE6A3: +case 0xE8A3: +case 0xEAA3: +case 0xECA3: +case 0xEEA3: +case 0xE0A4: +case 0xE2A4: +case 0xE4A4: +case 0xE6A4: +case 0xE8A4: +case 0xEAA4: +case 0xECA4: +case 0xEEA4: +case 0xE0A5: +case 0xE2A5: +case 0xE4A5: +case 0xE6A5: +case 0xE8A5: +case 0xEAA5: +case 0xECA5: +case 0xEEA5: +case 0xE0A6: +case 0xE2A6: +case 0xE4A6: +case 0xE6A6: +case 0xE8A6: +case 0xEAA6: +case 0xECA6: +case 0xEEA6: +case 0xE0A7: +case 0xE2A7: +case 0xE4A7: +case 0xE6A7: +case 0xE8A7: +case 0xEAA7: +case 0xECA7: +case 0xEEA7: + +// ASRD +case 0xE0A0: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (s32)(s32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 32) + { + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = (src >> (sft - 1)) << C68K_SR_C_SFT; + res = ((s32)src) >> sft; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + if (src & (1 << 31)) + { + CPU->flag_N = C68K_SR_N; + CPU->flag_notZ = 1; + CPU->flag_V = 0; + CPU->flag_C = C68K_SR_C; + CPU->flag_X = C68K_SR_X; + res = 0xFFFFFFFF; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_X = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE228: +case 0xE428: +case 0xE628: +case 0xE828: +case 0xEA28: +case 0xEC28: +case 0xEE28: +case 0xE029: +case 0xE229: +case 0xE429: +case 0xE629: +case 0xE829: +case 0xEA29: +case 0xEC29: +case 0xEE29: +case 0xE02A: +case 0xE22A: +case 0xE42A: +case 0xE62A: +case 0xE82A: +case 0xEA2A: +case 0xEC2A: +case 0xEE2A: +case 0xE02B: +case 0xE22B: +case 0xE42B: +case 0xE62B: +case 0xE82B: +case 0xEA2B: +case 0xEC2B: +case 0xEE2B: +case 0xE02C: +case 0xE22C: +case 0xE42C: +case 0xE62C: +case 0xE82C: +case 0xEA2C: +case 0xEC2C: +case 0xEE2C: +case 0xE02D: +case 0xE22D: +case 0xE42D: +case 0xE62D: +case 0xE82D: +case 0xEA2D: +case 0xEC2D: +case 0xEE2D: +case 0xE02E: +case 0xE22E: +case 0xE42E: +case 0xE62E: +case 0xE82E: +case 0xEA2E: +case 0xEC2E: +case 0xEE2E: +case 0xE02F: +case 0xE22F: +case 0xE42F: +case 0xE62F: +case 0xE82F: +case 0xEA2F: +case 0xEC2F: +case 0xEE2F: + +// LSRD +case 0xE028: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft <= 8) + { + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft); + res = src >> sft; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE268: +case 0xE468: +case 0xE668: +case 0xE868: +case 0xEA68: +case 0xEC68: +case 0xEE68: +case 0xE069: +case 0xE269: +case 0xE469: +case 0xE669: +case 0xE869: +case 0xEA69: +case 0xEC69: +case 0xEE69: +case 0xE06A: +case 0xE26A: +case 0xE46A: +case 0xE66A: +case 0xE86A: +case 0xEA6A: +case 0xEC6A: +case 0xEE6A: +case 0xE06B: +case 0xE26B: +case 0xE46B: +case 0xE66B: +case 0xE86B: +case 0xEA6B: +case 0xEC6B: +case 0xEE6B: +case 0xE06C: +case 0xE26C: +case 0xE46C: +case 0xE66C: +case 0xE86C: +case 0xEA6C: +case 0xEC6C: +case 0xEE6C: +case 0xE06D: +case 0xE26D: +case 0xE46D: +case 0xE66D: +case 0xE86D: +case 0xEA6D: +case 0xEC6D: +case 0xEE6D: +case 0xE06E: +case 0xE26E: +case 0xE46E: +case 0xE66E: +case 0xE86E: +case 0xEA6E: +case 0xEC6E: +case 0xEE6E: +case 0xE06F: +case 0xE26F: +case 0xE46F: +case 0xE66F: +case 0xE86F: +case 0xEA6F: +case 0xEC6F: +case 0xEE6F: + +// LSRD +case 0xE068: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft <= 16) + { + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = (src >> (sft - 1)) << C68K_SR_C_SFT; + res = src >> sft; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + res = 0; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE2A8: +case 0xE4A8: +case 0xE6A8: +case 0xE8A8: +case 0xEAA8: +case 0xECA8: +case 0xEEA8: +case 0xE0A9: +case 0xE2A9: +case 0xE4A9: +case 0xE6A9: +case 0xE8A9: +case 0xEAA9: +case 0xECA9: +case 0xEEA9: +case 0xE0AA: +case 0xE2AA: +case 0xE4AA: +case 0xE6AA: +case 0xE8AA: +case 0xEAAA: +case 0xECAA: +case 0xEEAA: +case 0xE0AB: +case 0xE2AB: +case 0xE4AB: +case 0xE6AB: +case 0xE8AB: +case 0xEAAB: +case 0xECAB: +case 0xEEAB: +case 0xE0AC: +case 0xE2AC: +case 0xE4AC: +case 0xE6AC: +case 0xE8AC: +case 0xEAAC: +case 0xECAC: +case 0xEEAC: +case 0xE0AD: +case 0xE2AD: +case 0xE4AD: +case 0xE6AD: +case 0xE8AD: +case 0xEAAD: +case 0xECAD: +case 0xEEAD: +case 0xE0AE: +case 0xE2AE: +case 0xE4AE: +case 0xE6AE: +case 0xE8AE: +case 0xEAAE: +case 0xECAE: +case 0xEEAE: +case 0xE0AF: +case 0xE2AF: +case 0xE4AF: +case 0xE6AF: +case 0xE8AF: +case 0xEAAF: +case 0xECAF: +case 0xEEAF: + +// LSRD +case 0xE0A8: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 32) + { + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = (src >> (sft - 1)) << C68K_SR_C_SFT; + res = src >> sft; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + if (sft == 32) CPU->flag_C = src >> (31 - C68K_SR_C_SFT); + else CPU->flag_C = 0; + CPU->flag_X = CPU->flag_C; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE230: +case 0xE430: +case 0xE630: +case 0xE830: +case 0xEA30: +case 0xEC30: +case 0xEE30: +case 0xE031: +case 0xE231: +case 0xE431: +case 0xE631: +case 0xE831: +case 0xEA31: +case 0xEC31: +case 0xEE31: +case 0xE032: +case 0xE232: +case 0xE432: +case 0xE632: +case 0xE832: +case 0xEA32: +case 0xEC32: +case 0xEE32: +case 0xE033: +case 0xE233: +case 0xE433: +case 0xE633: +case 0xE833: +case 0xEA33: +case 0xEC33: +case 0xEE33: +case 0xE034: +case 0xE234: +case 0xE434: +case 0xE634: +case 0xE834: +case 0xEA34: +case 0xEC34: +case 0xEE34: +case 0xE035: +case 0xE235: +case 0xE435: +case 0xE635: +case 0xE835: +case 0xEA35: +case 0xEC35: +case 0xEE35: +case 0xE036: +case 0xE236: +case 0xE436: +case 0xE636: +case 0xE836: +case 0xEA36: +case 0xEC36: +case 0xEE36: +case 0xE037: +case 0xE237: +case 0xE437: +case 0xE637: +case 0xE837: +case 0xEA37: +case 0xEC37: +case 0xEE37: + +// ROXRD +case 0xE030: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft %= 9; + + src |= (CPU->flag_X & C68K_SR_X) << 0; + res = (src >> sft) | (src << (9 - sft)); + CPU->flag_X = CPU->flag_C = res >> 0; + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = CPU->flag_X; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE270: +case 0xE470: +case 0xE670: +case 0xE870: +case 0xEA70: +case 0xEC70: +case 0xEE70: +case 0xE071: +case 0xE271: +case 0xE471: +case 0xE671: +case 0xE871: +case 0xEA71: +case 0xEC71: +case 0xEE71: +case 0xE072: +case 0xE272: +case 0xE472: +case 0xE672: +case 0xE872: +case 0xEA72: +case 0xEC72: +case 0xEE72: +case 0xE073: +case 0xE273: +case 0xE473: +case 0xE673: +case 0xE873: +case 0xEA73: +case 0xEC73: +case 0xEE73: +case 0xE074: +case 0xE274: +case 0xE474: +case 0xE674: +case 0xE874: +case 0xEA74: +case 0xEC74: +case 0xEE74: +case 0xE075: +case 0xE275: +case 0xE475: +case 0xE675: +case 0xE875: +case 0xEA75: +case 0xEC75: +case 0xEE75: +case 0xE076: +case 0xE276: +case 0xE476: +case 0xE676: +case 0xE876: +case 0xEA76: +case 0xEC76: +case 0xEE76: +case 0xE077: +case 0xE277: +case 0xE477: +case 0xE677: +case 0xE877: +case 0xEA77: +case 0xEC77: +case 0xEE77: + +// ROXRD +case 0xE070: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft %= 17; + + src |= (CPU->flag_X & C68K_SR_X) << 8; + res = (src >> sft) | (src << (17 - sft)); + CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = CPU->flag_X; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE2B0: +case 0xE4B0: +case 0xE6B0: +case 0xE8B0: +case 0xEAB0: +case 0xECB0: +case 0xEEB0: +case 0xE0B1: +case 0xE2B1: +case 0xE4B1: +case 0xE6B1: +case 0xE8B1: +case 0xEAB1: +case 0xECB1: +case 0xEEB1: +case 0xE0B2: +case 0xE2B2: +case 0xE4B2: +case 0xE6B2: +case 0xE8B2: +case 0xEAB2: +case 0xECB2: +case 0xEEB2: +case 0xE0B3: +case 0xE2B3: +case 0xE4B3: +case 0xE6B3: +case 0xE8B3: +case 0xEAB3: +case 0xECB3: +case 0xEEB3: +case 0xE0B4: +case 0xE2B4: +case 0xE4B4: +case 0xE6B4: +case 0xE8B4: +case 0xEAB4: +case 0xECB4: +case 0xEEB4: +case 0xE0B5: +case 0xE2B5: +case 0xE4B5: +case 0xE6B5: +case 0xE8B5: +case 0xEAB5: +case 0xECB5: +case 0xEEB5: +case 0xE0B6: +case 0xE2B6: +case 0xE4B6: +case 0xE6B6: +case 0xE8B6: +case 0xEAB6: +case 0xECB6: +case 0xEEB6: +case 0xE0B7: +case 0xE2B7: +case 0xE4B7: +case 0xE6B7: +case 0xE8B7: +case 0xEAB7: +case 0xECB7: +case 0xEEB7: + +// ROXRD +case 0xE0B0: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft %= 33; + + if (sft != 0) + { + if (sft == 1) res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + 1))); + else res = (src >> sft) | (src << (33 - sft)) | (((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + 1))) >> (sft - 1)); + CPU->flag_X = (src >> (32 - sft)) << C68K_SR_X_SFT; + } + else res = src; + CPU->flag_C = CPU->flag_X; + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = CPU->flag_X; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE238: +case 0xE438: +case 0xE638: +case 0xE838: +case 0xEA38: +case 0xEC38: +case 0xEE38: +case 0xE039: +case 0xE239: +case 0xE439: +case 0xE639: +case 0xE839: +case 0xEA39: +case 0xEC39: +case 0xEE39: +case 0xE03A: +case 0xE23A: +case 0xE43A: +case 0xE63A: +case 0xE83A: +case 0xEA3A: +case 0xEC3A: +case 0xEE3A: +case 0xE03B: +case 0xE23B: +case 0xE43B: +case 0xE63B: +case 0xE83B: +case 0xEA3B: +case 0xEC3B: +case 0xEE3B: +case 0xE03C: +case 0xE23C: +case 0xE43C: +case 0xE63C: +case 0xE83C: +case 0xEA3C: +case 0xEC3C: +case 0xEE3C: +case 0xE03D: +case 0xE23D: +case 0xE43D: +case 0xE63D: +case 0xE83D: +case 0xEA3D: +case 0xEC3D: +case 0xEE3D: +case 0xE03E: +case 0xE23E: +case 0xE43E: +case 0xE63E: +case 0xE83E: +case 0xEA3E: +case 0xEC3E: +case 0xEE3E: +case 0xE03F: +case 0xE23F: +case 0xE43F: +case 0xE63F: +case 0xE83F: +case 0xEA3F: +case 0xEC3F: +case 0xEE3F: + +// RORD +case 0xE038: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft &= 0x07; + + CPU->flag_C = src << (C68K_SR_C_SFT - ((sft - 1) & 7)); + res = (src >> sft) | (src << (8 - sft)); + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE278: +case 0xE478: +case 0xE678: +case 0xE878: +case 0xEA78: +case 0xEC78: +case 0xEE78: +case 0xE079: +case 0xE279: +case 0xE479: +case 0xE679: +case 0xE879: +case 0xEA79: +case 0xEC79: +case 0xEE79: +case 0xE07A: +case 0xE27A: +case 0xE47A: +case 0xE67A: +case 0xE87A: +case 0xEA7A: +case 0xEC7A: +case 0xEE7A: +case 0xE07B: +case 0xE27B: +case 0xE47B: +case 0xE67B: +case 0xE87B: +case 0xEA7B: +case 0xEC7B: +case 0xEE7B: +case 0xE07C: +case 0xE27C: +case 0xE47C: +case 0xE67C: +case 0xE87C: +case 0xEA7C: +case 0xEC7C: +case 0xEE7C: +case 0xE07D: +case 0xE27D: +case 0xE47D: +case 0xE67D: +case 0xE87D: +case 0xEA7D: +case 0xEC7D: +case 0xEE7D: +case 0xE07E: +case 0xE27E: +case 0xE47E: +case 0xE67E: +case 0xE87E: +case 0xEA7E: +case 0xEC7E: +case 0xEE7E: +case 0xE07F: +case 0xE27F: +case 0xE47F: +case 0xE67F: +case 0xE87F: +case 0xEA7F: +case 0xEC7F: +case 0xEE7F: + +// RORD +case 0xE078: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft &= 0x0F; + + CPU->flag_C = (src >> ((sft - 1) & 15)) << C68K_SR_C_SFT; + res = (src >> sft) | (src << (16 - sft)); + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE2B8: +case 0xE4B8: +case 0xE6B8: +case 0xE8B8: +case 0xEAB8: +case 0xECB8: +case 0xEEB8: +case 0xE0B9: +case 0xE2B9: +case 0xE4B9: +case 0xE6B9: +case 0xE8B9: +case 0xEAB9: +case 0xECB9: +case 0xEEB9: +case 0xE0BA: +case 0xE2BA: +case 0xE4BA: +case 0xE6BA: +case 0xE8BA: +case 0xEABA: +case 0xECBA: +case 0xEEBA: +case 0xE0BB: +case 0xE2BB: +case 0xE4BB: +case 0xE6BB: +case 0xE8BB: +case 0xEABB: +case 0xECBB: +case 0xEEBB: +case 0xE0BC: +case 0xE2BC: +case 0xE4BC: +case 0xE6BC: +case 0xE8BC: +case 0xEABC: +case 0xECBC: +case 0xEEBC: +case 0xE0BD: +case 0xE2BD: +case 0xE4BD: +case 0xE6BD: +case 0xE8BD: +case 0xEABD: +case 0xECBD: +case 0xEEBD: +case 0xE0BE: +case 0xE2BE: +case 0xE4BE: +case 0xE6BE: +case 0xE8BE: +case 0xEABE: +case 0xECBE: +case 0xEEBE: +case 0xE0BF: +case 0xE2BF: +case 0xE4BF: +case 0xE6BF: +case 0xE8BF: +case 0xEABF: +case 0xECBF: +case 0xEEBF: + +// RORD +case 0xE0B8: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft &= 0x1F; + + CPU->flag_C = (src >> ((sft - 1) & 31)) << C68K_SR_C_SFT; + res = (src >> sft) | (src << (32 - sft)); + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE320: +case 0xE520: +case 0xE720: +case 0xE920: +case 0xEB20: +case 0xED20: +case 0xEF20: +case 0xE121: +case 0xE321: +case 0xE521: +case 0xE721: +case 0xE921: +case 0xEB21: +case 0xED21: +case 0xEF21: +case 0xE122: +case 0xE322: +case 0xE522: +case 0xE722: +case 0xE922: +case 0xEB22: +case 0xED22: +case 0xEF22: +case 0xE123: +case 0xE323: +case 0xE523: +case 0xE723: +case 0xE923: +case 0xEB23: +case 0xED23: +case 0xEF23: +case 0xE124: +case 0xE324: +case 0xE524: +case 0xE724: +case 0xE924: +case 0xEB24: +case 0xED24: +case 0xEF24: +case 0xE125: +case 0xE325: +case 0xE525: +case 0xE725: +case 0xE925: +case 0xEB25: +case 0xED25: +case 0xEF25: +case 0xE126: +case 0xE326: +case 0xE526: +case 0xE726: +case 0xE926: +case 0xEB26: +case 0xED26: +case 0xEF26: +case 0xE127: +case 0xE327: +case 0xE527: +case 0xE727: +case 0xE927: +case 0xEB27: +case 0xED27: +case 0xEF27: + +// ASLD +case 0xE120: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 8) + { + CPU->flag_X = CPU->flag_C = (src << sft) >> 0; + res = (src << sft) & 0x000000FF; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 24)) & 0x000000FF; + src &= msk; + if ((src) && (src != msk)) CPU->flag_V = C68K_SR_V; + } + RET(6) + } + + if (sft == 8) CPU->flag_C = src << C68K_SR_C_SFT; + else CPU->flag_C = 0; + CPU->flag_X = CPU->flag_C; + if (src) CPU->flag_V = C68K_SR_V; + else CPU->flag_V = 0; + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE360: +case 0xE560: +case 0xE760: +case 0xE960: +case 0xEB60: +case 0xED60: +case 0xEF60: +case 0xE161: +case 0xE361: +case 0xE561: +case 0xE761: +case 0xE961: +case 0xEB61: +case 0xED61: +case 0xEF61: +case 0xE162: +case 0xE362: +case 0xE562: +case 0xE762: +case 0xE962: +case 0xEB62: +case 0xED62: +case 0xEF62: +case 0xE163: +case 0xE363: +case 0xE563: +case 0xE763: +case 0xE963: +case 0xEB63: +case 0xED63: +case 0xEF63: +case 0xE164: +case 0xE364: +case 0xE564: +case 0xE764: +case 0xE964: +case 0xEB64: +case 0xED64: +case 0xEF64: +case 0xE165: +case 0xE365: +case 0xE565: +case 0xE765: +case 0xE965: +case 0xEB65: +case 0xED65: +case 0xEF65: +case 0xE166: +case 0xE366: +case 0xE566: +case 0xE766: +case 0xE966: +case 0xEB66: +case 0xED66: +case 0xEF66: +case 0xE167: +case 0xE367: +case 0xE567: +case 0xE767: +case 0xE967: +case 0xEB67: +case 0xED67: +case 0xEF67: + +// ASLD +case 0xE160: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 16) + { + CPU->flag_X = CPU->flag_C = (src << sft) >> 8; + res = (src << sft) & 0x0000FFFF; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 16)) & 0x0000FFFF; + src &= msk; + if ((src) && (src != msk)) CPU->flag_V = C68K_SR_V; + } + RET(6) + } + + if (sft == 16) CPU->flag_C = src << C68K_SR_C_SFT; + else CPU->flag_C = 0; + CPU->flag_X = CPU->flag_C; + if (src) CPU->flag_V = C68K_SR_V; + else CPU->flag_V = 0; + res = 0; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE3A0: +case 0xE5A0: +case 0xE7A0: +case 0xE9A0: +case 0xEBA0: +case 0xEDA0: +case 0xEFA0: +case 0xE1A1: +case 0xE3A1: +case 0xE5A1: +case 0xE7A1: +case 0xE9A1: +case 0xEBA1: +case 0xEDA1: +case 0xEFA1: +case 0xE1A2: +case 0xE3A2: +case 0xE5A2: +case 0xE7A2: +case 0xE9A2: +case 0xEBA2: +case 0xEDA2: +case 0xEFA2: +case 0xE1A3: +case 0xE3A3: +case 0xE5A3: +case 0xE7A3: +case 0xE9A3: +case 0xEBA3: +case 0xEDA3: +case 0xEFA3: +case 0xE1A4: +case 0xE3A4: +case 0xE5A4: +case 0xE7A4: +case 0xE9A4: +case 0xEBA4: +case 0xEDA4: +case 0xEFA4: +case 0xE1A5: +case 0xE3A5: +case 0xE5A5: +case 0xE7A5: +case 0xE9A5: +case 0xEBA5: +case 0xEDA5: +case 0xEFA5: +case 0xE1A6: +case 0xE3A6: +case 0xE5A6: +case 0xE7A6: +case 0xE9A6: +case 0xEBA6: +case 0xEDA6: +case 0xEFA6: +case 0xE1A7: +case 0xE3A7: +case 0xE5A7: +case 0xE7A7: +case 0xE9A7: +case 0xEBA7: +case 0xEDA7: +case 0xEFA7: + +// ASLD +case 0xE1A0: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 32) + { + CPU->flag_X = CPU->flag_C = (src >> (32 - sft)) << C68K_SR_C_SFT; + res = src << sft; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_V = 0; + { + u32 msk = (((s32)0x80000000) >> (sft + 0)) & 0xFFFFFFFF; + src &= msk; + if ((src) && (src != msk)) CPU->flag_V = C68K_SR_V; + } + RET(8) + } + + if (sft == 32) CPU->flag_C = src << C68K_SR_C_SFT; + else CPU->flag_C = 0; + CPU->flag_X = CPU->flag_C; + if (src) CPU->flag_V = C68K_SR_V; + else CPU->flag_V = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE328: +case 0xE528: +case 0xE728: +case 0xE928: +case 0xEB28: +case 0xED28: +case 0xEF28: +case 0xE129: +case 0xE329: +case 0xE529: +case 0xE729: +case 0xE929: +case 0xEB29: +case 0xED29: +case 0xEF29: +case 0xE12A: +case 0xE32A: +case 0xE52A: +case 0xE72A: +case 0xE92A: +case 0xEB2A: +case 0xED2A: +case 0xEF2A: +case 0xE12B: +case 0xE32B: +case 0xE52B: +case 0xE72B: +case 0xE92B: +case 0xEB2B: +case 0xED2B: +case 0xEF2B: +case 0xE12C: +case 0xE32C: +case 0xE52C: +case 0xE72C: +case 0xE92C: +case 0xEB2C: +case 0xED2C: +case 0xEF2C: +case 0xE12D: +case 0xE32D: +case 0xE52D: +case 0xE72D: +case 0xE92D: +case 0xEB2D: +case 0xED2D: +case 0xEF2D: +case 0xE12E: +case 0xE32E: +case 0xE52E: +case 0xE72E: +case 0xE92E: +case 0xEB2E: +case 0xED2E: +case 0xEF2E: +case 0xE12F: +case 0xE32F: +case 0xE52F: +case 0xE72F: +case 0xE92F: +case 0xEB2F: +case 0xED2F: +case 0xEF2F: + +// LSLD +case 0xE128: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft <= 8) + { + CPU->flag_X = CPU->flag_C = (src << sft) >> 0; + res = (src << sft) & 0x000000FF; + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + res = 0; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE368: +case 0xE568: +case 0xE768: +case 0xE968: +case 0xEB68: +case 0xED68: +case 0xEF68: +case 0xE169: +case 0xE369: +case 0xE569: +case 0xE769: +case 0xE969: +case 0xEB69: +case 0xED69: +case 0xEF69: +case 0xE16A: +case 0xE36A: +case 0xE56A: +case 0xE76A: +case 0xE96A: +case 0xEB6A: +case 0xED6A: +case 0xEF6A: +case 0xE16B: +case 0xE36B: +case 0xE56B: +case 0xE76B: +case 0xE96B: +case 0xEB6B: +case 0xED6B: +case 0xEF6B: +case 0xE16C: +case 0xE36C: +case 0xE56C: +case 0xE76C: +case 0xE96C: +case 0xEB6C: +case 0xED6C: +case 0xEF6C: +case 0xE16D: +case 0xE36D: +case 0xE56D: +case 0xE76D: +case 0xE96D: +case 0xEB6D: +case 0xED6D: +case 0xEF6D: +case 0xE16E: +case 0xE36E: +case 0xE56E: +case 0xE76E: +case 0xE96E: +case 0xEB6E: +case 0xED6E: +case 0xEF6E: +case 0xE16F: +case 0xE36F: +case 0xE56F: +case 0xE76F: +case 0xE96F: +case 0xEB6F: +case 0xED6F: +case 0xEF6F: + +// LSLD +case 0xE168: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft <= 16) + { + CPU->flag_X = CPU->flag_C = (src << sft) >> 8; + res = (src << sft) & 0x0000FFFF; + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_X = CPU->flag_C = 0; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + res = 0; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE3A8: +case 0xE5A8: +case 0xE7A8: +case 0xE9A8: +case 0xEBA8: +case 0xEDA8: +case 0xEFA8: +case 0xE1A9: +case 0xE3A9: +case 0xE5A9: +case 0xE7A9: +case 0xE9A9: +case 0xEBA9: +case 0xEDA9: +case 0xEFA9: +case 0xE1AA: +case 0xE3AA: +case 0xE5AA: +case 0xE7AA: +case 0xE9AA: +case 0xEBAA: +case 0xEDAA: +case 0xEFAA: +case 0xE1AB: +case 0xE3AB: +case 0xE5AB: +case 0xE7AB: +case 0xE9AB: +case 0xEBAB: +case 0xEDAB: +case 0xEFAB: +case 0xE1AC: +case 0xE3AC: +case 0xE5AC: +case 0xE7AC: +case 0xE9AC: +case 0xEBAC: +case 0xEDAC: +case 0xEFAC: +case 0xE1AD: +case 0xE3AD: +case 0xE5AD: +case 0xE7AD: +case 0xE9AD: +case 0xEBAD: +case 0xEDAD: +case 0xEFAD: +case 0xE1AE: +case 0xE3AE: +case 0xE5AE: +case 0xE7AE: +case 0xE9AE: +case 0xEBAE: +case 0xEDAE: +case 0xEFAE: +case 0xE1AF: +case 0xE3AF: +case 0xE5AF: +case 0xE7AF: +case 0xE9AF: +case 0xEBAF: +case 0xEDAF: +case 0xEFAF: + +// LSLD +case 0xE1A8: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft < 32) + { + CPU->flag_X = CPU->flag_C = (src >> (32 - sft)) << C68K_SR_C_SFT; + res = src << sft; + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + if (sft == 32) CPU->flag_C = src << C68K_SR_C_SFT; + else CPU->flag_C = 0; + CPU->flag_X = CPU->flag_C; + CPU->flag_N = 0; + CPU->flag_notZ = 0; + CPU->flag_V = 0; + res = 0; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE330: +case 0xE530: +case 0xE730: +case 0xE930: +case 0xEB30: +case 0xED30: +case 0xEF30: +case 0xE131: +case 0xE331: +case 0xE531: +case 0xE731: +case 0xE931: +case 0xEB31: +case 0xED31: +case 0xEF31: +case 0xE132: +case 0xE332: +case 0xE532: +case 0xE732: +case 0xE932: +case 0xEB32: +case 0xED32: +case 0xEF32: +case 0xE133: +case 0xE333: +case 0xE533: +case 0xE733: +case 0xE933: +case 0xEB33: +case 0xED33: +case 0xEF33: +case 0xE134: +case 0xE334: +case 0xE534: +case 0xE734: +case 0xE934: +case 0xEB34: +case 0xED34: +case 0xEF34: +case 0xE135: +case 0xE335: +case 0xE535: +case 0xE735: +case 0xE935: +case 0xEB35: +case 0xED35: +case 0xEF35: +case 0xE136: +case 0xE336: +case 0xE536: +case 0xE736: +case 0xE936: +case 0xEB36: +case 0xED36: +case 0xEF36: +case 0xE137: +case 0xE337: +case 0xE537: +case 0xE737: +case 0xE937: +case 0xEB37: +case 0xED37: +case 0xEF37: + +// ROXLD +case 0xE130: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft %= 9; + + src |= (CPU->flag_X & C68K_SR_X) << 0; + res = (src << sft) | (src >> (9 - sft)); + CPU->flag_X = CPU->flag_C = res >> 0; + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res & 0x000000FF; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = CPU->flag_X; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE370: +case 0xE570: +case 0xE770: +case 0xE970: +case 0xEB70: +case 0xED70: +case 0xEF70: +case 0xE171: +case 0xE371: +case 0xE571: +case 0xE771: +case 0xE971: +case 0xEB71: +case 0xED71: +case 0xEF71: +case 0xE172: +case 0xE372: +case 0xE572: +case 0xE772: +case 0xE972: +case 0xEB72: +case 0xED72: +case 0xEF72: +case 0xE173: +case 0xE373: +case 0xE573: +case 0xE773: +case 0xE973: +case 0xEB73: +case 0xED73: +case 0xEF73: +case 0xE174: +case 0xE374: +case 0xE574: +case 0xE774: +case 0xE974: +case 0xEB74: +case 0xED74: +case 0xEF74: +case 0xE175: +case 0xE375: +case 0xE575: +case 0xE775: +case 0xE975: +case 0xEB75: +case 0xED75: +case 0xEF75: +case 0xE176: +case 0xE376: +case 0xE576: +case 0xE776: +case 0xE976: +case 0xEB76: +case 0xED76: +case 0xEF76: +case 0xE177: +case 0xE377: +case 0xE577: +case 0xE777: +case 0xE977: +case 0xEB77: +case 0xED77: +case 0xEF77: + +// ROXLD +case 0xE170: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft %= 17; + + src |= (CPU->flag_X & C68K_SR_X) << 8; + res = (src << sft) | (src >> (17 - sft)); + CPU->flag_X = CPU->flag_C = res >> 8; + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = CPU->flag_X; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE3B0: +case 0xE5B0: +case 0xE7B0: +case 0xE9B0: +case 0xEBB0: +case 0xEDB0: +case 0xEFB0: +case 0xE1B1: +case 0xE3B1: +case 0xE5B1: +case 0xE7B1: +case 0xE9B1: +case 0xEBB1: +case 0xEDB1: +case 0xEFB1: +case 0xE1B2: +case 0xE3B2: +case 0xE5B2: +case 0xE7B2: +case 0xE9B2: +case 0xEBB2: +case 0xEDB2: +case 0xEFB2: +case 0xE1B3: +case 0xE3B3: +case 0xE5B3: +case 0xE7B3: +case 0xE9B3: +case 0xEBB3: +case 0xEDB3: +case 0xEFB3: +case 0xE1B4: +case 0xE3B4: +case 0xE5B4: +case 0xE7B4: +case 0xE9B4: +case 0xEBB4: +case 0xEDB4: +case 0xEFB4: +case 0xE1B5: +case 0xE3B5: +case 0xE5B5: +case 0xE7B5: +case 0xE9B5: +case 0xEBB5: +case 0xEDB5: +case 0xEFB5: +case 0xE1B6: +case 0xE3B6: +case 0xE5B6: +case 0xE7B6: +case 0xE9B6: +case 0xEBB6: +case 0xEDB6: +case 0xEFB6: +case 0xE1B7: +case 0xE3B7: +case 0xE5B7: +case 0xE7B7: +case 0xE9B7: +case 0xEBB7: +case 0xEDB7: +case 0xEFB7: + +// ROXLD +case 0xE1B0: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + sft %= 33; + + if (sft != 0) + { + if (sft == 1) res = (src << 1) | ((CPU->flag_X >> ((C68K_SR_X_SFT + 1) - 1)) & 1); + else res = (src << sft) | (src >> (33 - sft)) | (((CPU->flag_X >> ((C68K_SR_X_SFT + 1) - 1)) & 1) << (sft - 1)); + CPU->flag_X = (src >> (32 - sft)) << C68K_SR_X_SFT; + } + else res = src; + CPU->flag_C = CPU->flag_X; + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = CPU->flag_X; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE338: +case 0xE538: +case 0xE738: +case 0xE938: +case 0xEB38: +case 0xED38: +case 0xEF38: +case 0xE139: +case 0xE339: +case 0xE539: +case 0xE739: +case 0xE939: +case 0xEB39: +case 0xED39: +case 0xEF39: +case 0xE13A: +case 0xE33A: +case 0xE53A: +case 0xE73A: +case 0xE93A: +case 0xEB3A: +case 0xED3A: +case 0xEF3A: +case 0xE13B: +case 0xE33B: +case 0xE53B: +case 0xE73B: +case 0xE93B: +case 0xEB3B: +case 0xED3B: +case 0xEF3B: +case 0xE13C: +case 0xE33C: +case 0xE53C: +case 0xE73C: +case 0xE93C: +case 0xEB3C: +case 0xED3C: +case 0xEF3C: +case 0xE13D: +case 0xE33D: +case 0xE53D: +case 0xE73D: +case 0xE93D: +case 0xEB3D: +case 0xED3D: +case 0xEF3D: +case 0xE13E: +case 0xE33E: +case 0xE53E: +case 0xE73E: +case 0xE93E: +case 0xEB3E: +case 0xED3E: +case 0xEF3E: +case 0xE13F: +case 0xE33F: +case 0xE53F: +case 0xE73F: +case 0xE93F: +case 0xEB3F: +case 0xED3F: +case 0xEF3F: + +// ROLD +case 0xE138: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u8)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft &= 0x07) + { + CPU->flag_C = (src << sft) >> 0; + res = ((src << sft) | (src >> (8 - sft))) & 0x000000FF; + CPU->flag_V = 0; + CPU->flag_N = res >> 0; + CPU->flag_notZ = res; + *(BYTE_OFF + (u8*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 0; + CPU->flag_notZ = src; +} +RET(6) +case 0xE378: +case 0xE578: +case 0xE778: +case 0xE978: +case 0xEB78: +case 0xED78: +case 0xEF78: +case 0xE179: +case 0xE379: +case 0xE579: +case 0xE779: +case 0xE979: +case 0xEB79: +case 0xED79: +case 0xEF79: +case 0xE17A: +case 0xE37A: +case 0xE57A: +case 0xE77A: +case 0xE97A: +case 0xEB7A: +case 0xED7A: +case 0xEF7A: +case 0xE17B: +case 0xE37B: +case 0xE57B: +case 0xE77B: +case 0xE97B: +case 0xEB7B: +case 0xED7B: +case 0xEF7B: +case 0xE17C: +case 0xE37C: +case 0xE57C: +case 0xE77C: +case 0xE97C: +case 0xEB7C: +case 0xED7C: +case 0xEF7C: +case 0xE17D: +case 0xE37D: +case 0xE57D: +case 0xE77D: +case 0xE97D: +case 0xEB7D: +case 0xED7D: +case 0xEF7D: +case 0xE17E: +case 0xE37E: +case 0xE57E: +case 0xE77E: +case 0xE97E: +case 0xEB7E: +case 0xED7E: +case 0xEF7E: +case 0xE17F: +case 0xE37F: +case 0xE57F: +case 0xE77F: +case 0xE97F: +case 0xEB7F: +case 0xED7F: +case 0xEF7F: + +// ROLD +case 0xE178: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u16)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft &= 0x0F) + { + CPU->flag_C = (src << sft) >> 8; + res = ((src << sft) | (src >> (16 - sft))) & 0x0000FFFF; + CPU->flag_V = 0; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + *(WORD_OFF + (u16*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; + RET(6) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 8; + CPU->flag_notZ = src; +} +RET(6) +case 0xE3B8: +case 0xE5B8: +case 0xE7B8: +case 0xE9B8: +case 0xEBB8: +case 0xEDB8: +case 0xEFB8: +case 0xE1B9: +case 0xE3B9: +case 0xE5B9: +case 0xE7B9: +case 0xE9B9: +case 0xEBB9: +case 0xEDB9: +case 0xEFB9: +case 0xE1BA: +case 0xE3BA: +case 0xE5BA: +case 0xE7BA: +case 0xE9BA: +case 0xEBBA: +case 0xEDBA: +case 0xEFBA: +case 0xE1BB: +case 0xE3BB: +case 0xE5BB: +case 0xE7BB: +case 0xE9BB: +case 0xEBBB: +case 0xEDBB: +case 0xEFBB: +case 0xE1BC: +case 0xE3BC: +case 0xE5BC: +case 0xE7BC: +case 0xE9BC: +case 0xEBBC: +case 0xEDBC: +case 0xEFBC: +case 0xE1BD: +case 0xE3BD: +case 0xE5BD: +case 0xE7BD: +case 0xE9BD: +case 0xEBBD: +case 0xEDBD: +case 0xEFBD: +case 0xE1BE: +case 0xE3BE: +case 0xE5BE: +case 0xE7BE: +case 0xE9BE: +case 0xEBBE: +case 0xEDBE: +case 0xEFBE: +case 0xE1BF: +case 0xE3BF: +case 0xE5BF: +case 0xE7BF: +case 0xE9BF: +case 0xEBBF: +case 0xEDBF: +case 0xEFBF: + +// ROLD +case 0xE1B8: +{ + u32 res; + u32 src; + u32 sft; + + sft = CPU->D[(Opcode >> 9) & 7] & 0x3F; + src = (u32)CPU->D[(Opcode >> 0) & 7]; + if (sft) + { + timestamp += sft * 2; + if (sft &= 0x1F) + { + CPU->flag_C = (src >> (32 - sft)) << C68K_SR_C_SFT; + res = (src << sft) | (src >> (32 - sft)); + CPU->flag_V = 0; + CPU->flag_N = res >> 24; + CPU->flag_notZ = res; + *((u32*)(&CPU->D[(Opcode >> 0) & 7])) = res; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; + RET(8) + } + + CPU->flag_V = 0; + CPU->flag_C = 0; + CPU->flag_N = src >> 24; + CPU->flag_notZ = src; +} +RET(8) +case 0xE0D1: +case 0xE0D2: +case 0xE0D3: +case 0xE0D4: +case 0xE0D5: +case 0xE0D6: +case 0xE0D7: + +// ASR +case 0xE0D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE0D9: +case 0xE0DA: +case 0xE0DB: +case 0xE0DC: +case 0xE0DD: +case 0xE0DE: + +// ASR +case 0xE0D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE0E1: +case 0xE0E2: +case 0xE0E3: +case 0xE0E4: +case 0xE0E5: +case 0xE0E6: + +// ASR +case 0xE0E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE0E9: +case 0xE0EA: +case 0xE0EB: +case 0xE0EC: +case 0xE0ED: +case 0xE0EE: +case 0xE0EF: + +// ASR +case 0xE0E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE0F1: +case 0xE0F2: +case 0xE0F3: +case 0xE0F4: +case 0xE0F5: +case 0xE0F6: +case 0xE0F7: + +// ASR +case 0xE0F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASR +case 0xE0F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASR +case 0xE0F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASR +case 0xE0DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASR +case 0xE0E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src & (1 << 15)); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE2D1: +case 0xE2D2: +case 0xE2D3: +case 0xE2D4: +case 0xE2D5: +case 0xE2D6: +case 0xE2D7: + +// LSR +case 0xE2D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE2D9: +case 0xE2DA: +case 0xE2DB: +case 0xE2DC: +case 0xE2DD: +case 0xE2DE: + +// LSR +case 0xE2D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE2E1: +case 0xE2E2: +case 0xE2E3: +case 0xE2E4: +case 0xE2E5: +case 0xE2E6: + +// LSR +case 0xE2E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE2E9: +case 0xE2EA: +case 0xE2EB: +case 0xE2EC: +case 0xE2ED: +case 0xE2EE: +case 0xE2EF: + +// LSR +case 0xE2E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE2F1: +case 0xE2F2: +case 0xE2F3: +case 0xE2F4: +case 0xE2F5: +case 0xE2F6: +case 0xE2F7: + +// LSR +case 0xE2F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSR +case 0xE2F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSR +case 0xE2F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSR +case 0xE2DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSR +case 0xE2E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_N = CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT; + res = src >> 1; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE4D1: +case 0xE4D2: +case 0xE4D3: +case 0xE4D4: +case 0xE4D5: +case 0xE4D6: +case 0xE4D7: + +// ROXR +case 0xE4D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE4D9: +case 0xE4DA: +case 0xE4DB: +case 0xE4DC: +case 0xE4DD: +case 0xE4DE: + +// ROXR +case 0xE4D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE4E1: +case 0xE4E2: +case 0xE4E3: +case 0xE4E4: +case 0xE4E5: +case 0xE4E6: + +// ROXR +case 0xE4E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE4E9: +case 0xE4EA: +case 0xE4EB: +case 0xE4EC: +case 0xE4ED: +case 0xE4EE: +case 0xE4EF: + +// ROXR +case 0xE4E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE4F1: +case 0xE4F2: +case 0xE4F3: +case 0xE4F4: +case 0xE4F5: +case 0xE4F6: +case 0xE4F7: + +// ROXR +case 0xE4F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXR +case 0xE4F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXR +case 0xE4F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXR +case 0xE4DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXR +case 0xE4E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << 7); + CPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE6D1: +case 0xE6D2: +case 0xE6D3: +case 0xE6D4: +case 0xE6D5: +case 0xE6D6: +case 0xE6D7: + +// ROR +case 0xE6D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE6D9: +case 0xE6DA: +case 0xE6DB: +case 0xE6DC: +case 0xE6DD: +case 0xE6DE: + +// ROR +case 0xE6D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE6E1: +case 0xE6E2: +case 0xE6E3: +case 0xE6E4: +case 0xE6E5: +case 0xE6E6: + +// ROR +case 0xE6E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE6E9: +case 0xE6EA: +case 0xE6EB: +case 0xE6EC: +case 0xE6ED: +case 0xE6EE: +case 0xE6EF: + +// ROR +case 0xE6E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE6F1: +case 0xE6F2: +case 0xE6F3: +case 0xE6F4: +case 0xE6F5: +case 0xE6F6: +case 0xE6F7: + +// ROR +case 0xE6F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROR +case 0xE6F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROR +case 0xE6F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROR +case 0xE6DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROR +case 0xE6E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src << C68K_SR_C_SFT; + res = (src >> 1) | (src << 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE1D1: +case 0xE1D2: +case 0xE1D3: +case 0xE1D4: +case 0xE1D5: +case 0xE1D6: +case 0xE1D7: + +// ASL +case 0xE1D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE1D9: +case 0xE1DA: +case 0xE1DB: +case 0xE1DC: +case 0xE1DD: +case 0xE1DE: + +// ASL +case 0xE1D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE1E1: +case 0xE1E2: +case 0xE1E3: +case 0xE1E4: +case 0xE1E5: +case 0xE1E6: + +// ASL +case 0xE1E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE1E9: +case 0xE1EA: +case 0xE1EB: +case 0xE1EC: +case 0xE1ED: +case 0xE1EE: +case 0xE1EF: + +// ASL +case 0xE1E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE1F1: +case 0xE1F2: +case 0xE1F3: +case 0xE1F4: +case 0xE1F5: +case 0xE1F6: +case 0xE1F7: + +// ASL +case 0xE1F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASL +case 0xE1F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASL +case 0xE1F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASL +case 0xE1DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ASL +case 0xE1E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_V = (src ^ res) >> 8; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE3D1: +case 0xE3D2: +case 0xE3D3: +case 0xE3D4: +case 0xE3D5: +case 0xE3D6: +case 0xE3D7: + +// LSL +case 0xE3D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE3D9: +case 0xE3DA: +case 0xE3DB: +case 0xE3DC: +case 0xE3DD: +case 0xE3DE: + +// LSL +case 0xE3D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE3E1: +case 0xE3E2: +case 0xE3E3: +case 0xE3E4: +case 0xE3E5: +case 0xE3E6: + +// LSL +case 0xE3E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE3E9: +case 0xE3EA: +case 0xE3EB: +case 0xE3EC: +case 0xE3ED: +case 0xE3EE: +case 0xE3EF: + +// LSL +case 0xE3E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE3F1: +case 0xE3F2: +case 0xE3F3: +case 0xE3F4: +case 0xE3F5: +case 0xE3F6: +case 0xE3F7: + +// LSL +case 0xE3F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSL +case 0xE3F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSL +case 0xE3F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSL +case 0xE3DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// LSL +case 0xE3E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_X = CPU->flag_C = src >> 7; + res = src << 1; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE5D1: +case 0xE5D2: +case 0xE5D3: +case 0xE5D4: +case 0xE5D5: +case 0xE5D6: +case 0xE5D7: + +// ROXL +case 0xE5D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE5D9: +case 0xE5DA: +case 0xE5DB: +case 0xE5DC: +case 0xE5DD: +case 0xE5DE: + +// ROXL +case 0xE5D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE5E1: +case 0xE5E2: +case 0xE5E3: +case 0xE5E4: +case 0xE5E5: +case 0xE5E6: + +// ROXL +case 0xE5E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE5E9: +case 0xE5EA: +case 0xE5EB: +case 0xE5EC: +case 0xE5ED: +case 0xE5EE: +case 0xE5EF: + +// ROXL +case 0xE5E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE5F1: +case 0xE5F2: +case 0xE5F3: +case 0xE5F4: +case 0xE5F5: +case 0xE5F6: +case 0xE5F7: + +// ROXL +case 0xE5F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXL +case 0xE5F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXL +case 0xE5F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXL +case 0xE5DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROXL +case 0xE5E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> 8); + CPU->flag_X = CPU->flag_C = src >> 7; + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE7D1: +case 0xE7D2: +case 0xE7D3: +case 0xE7D4: +case 0xE7D5: +case 0xE7D6: +case 0xE7D7: + +// ROL +case 0xE7D0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE7D9: +case 0xE7DA: +case 0xE7DB: +case 0xE7DC: +case 0xE7DD: +case 0xE7DE: + +// ROL +case 0xE7D8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + CPU->A[(Opcode >> 0) & 7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE7E1: +case 0xE7E2: +case 0xE7E3: +case 0xE7E4: +case 0xE7E5: +case 0xE7E6: + +// ROL +case 0xE7E0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] - 2; + CPU->A[(Opcode >> 0) & 7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE7E9: +case 0xE7EA: +case 0xE7EB: +case 0xE7EC: +case 0xE7ED: +case 0xE7EE: +case 0xE7EF: + +// ROL +case 0xE7E8: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7] + (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) +case 0xE7F1: +case 0xE7F2: +case 0xE7F3: +case 0xE7F4: +case 0xE7F5: +case 0xE7F6: +case 0xE7F7: + +// ROL +case 0xE7F0: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[(Opcode >> 0) & 7]; + DECODE_EXT_WORD + timestamp += 6; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROL +case 0xE7F8: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)(s16)FETCH_WORD; + PC += 2; + timestamp += 4; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROL +case 0xE7F9: +{ + u32 adr; + u32 res; + u32 src; + adr = (s32)FETCH_LONG; + PC += 4; + timestamp += 8; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROL +case 0xE7DF: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7]; + CPU->A[7] += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) + +// ROL +case 0xE7E7: +{ + u32 adr; + u32 res; + u32 src; + adr = CPU->A[7] - 2; + CPU->A[7] = adr; + timestamp += 2; + READ_WOat_F(adr, src) + CPU->flag_V = 0; + CPU->flag_C = src >> 7; + res = (src << 1) | (src >> 15); + CPU->flag_N = res >> 8; + CPU->flag_notZ = res & 0x0000FFFF; + WRITE_WORD_F(adr, res) +} +RET(8) diff --git a/libmednahawk/src/hw_cpu/c68k/c68k_opF.inc b/libmednahawk/src/hw_cpu/c68k/c68k_opF.inc new file mode 100644 index 0000000000..74440d9e18 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68k_opF.inc @@ -0,0 +1,4116 @@ +case 0xF001: +case 0xF002: +case 0xF003: +case 0xF004: +case 0xF005: +case 0xF006: +case 0xF007: +case 0xF008: +case 0xF009: +case 0xF00A: +case 0xF00B: +case 0xF00C: +case 0xF00D: +case 0xF00E: +case 0xF00F: +case 0xF010: +case 0xF011: +case 0xF012: +case 0xF013: +case 0xF014: +case 0xF015: +case 0xF016: +case 0xF017: +case 0xF018: +case 0xF019: +case 0xF01A: +case 0xF01B: +case 0xF01C: +case 0xF01D: +case 0xF01E: +case 0xF01F: +case 0xF020: +case 0xF021: +case 0xF022: +case 0xF023: +case 0xF024: +case 0xF025: +case 0xF026: +case 0xF027: +case 0xF028: +case 0xF029: +case 0xF02A: +case 0xF02B: +case 0xF02C: +case 0xF02D: +case 0xF02E: +case 0xF02F: +case 0xF030: +case 0xF031: +case 0xF032: +case 0xF033: +case 0xF034: +case 0xF035: +case 0xF036: +case 0xF037: +case 0xF038: +case 0xF039: +case 0xF03A: +case 0xF03B: +case 0xF03C: +case 0xF03D: +case 0xF03E: +case 0xF03F: +case 0xF040: +case 0xF041: +case 0xF042: +case 0xF043: +case 0xF044: +case 0xF045: +case 0xF046: +case 0xF047: +case 0xF048: +case 0xF049: +case 0xF04A: +case 0xF04B: +case 0xF04C: +case 0xF04D: +case 0xF04E: +case 0xF04F: +case 0xF050: +case 0xF051: +case 0xF052: +case 0xF053: +case 0xF054: +case 0xF055: +case 0xF056: +case 0xF057: +case 0xF058: +case 0xF059: +case 0xF05A: +case 0xF05B: +case 0xF05C: +case 0xF05D: +case 0xF05E: +case 0xF05F: +case 0xF060: +case 0xF061: +case 0xF062: +case 0xF063: +case 0xF064: +case 0xF065: +case 0xF066: +case 0xF067: +case 0xF068: +case 0xF069: +case 0xF06A: +case 0xF06B: +case 0xF06C: +case 0xF06D: +case 0xF06E: +case 0xF06F: +case 0xF070: +case 0xF071: +case 0xF072: +case 0xF073: +case 0xF074: +case 0xF075: +case 0xF076: +case 0xF077: +case 0xF078: +case 0xF079: +case 0xF07A: +case 0xF07B: +case 0xF07C: +case 0xF07D: +case 0xF07E: +case 0xF07F: +case 0xF080: +case 0xF081: +case 0xF082: +case 0xF083: +case 0xF084: +case 0xF085: +case 0xF086: +case 0xF087: +case 0xF088: +case 0xF089: +case 0xF08A: +case 0xF08B: +case 0xF08C: +case 0xF08D: +case 0xF08E: +case 0xF08F: +case 0xF090: +case 0xF091: +case 0xF092: +case 0xF093: +case 0xF094: +case 0xF095: +case 0xF096: +case 0xF097: +case 0xF098: +case 0xF099: +case 0xF09A: +case 0xF09B: +case 0xF09C: +case 0xF09D: +case 0xF09E: +case 0xF09F: +case 0xF0A0: +case 0xF0A1: +case 0xF0A2: +case 0xF0A3: +case 0xF0A4: +case 0xF0A5: +case 0xF0A6: +case 0xF0A7: +case 0xF0A8: +case 0xF0A9: +case 0xF0AA: +case 0xF0AB: +case 0xF0AC: +case 0xF0AD: +case 0xF0AE: +case 0xF0AF: +case 0xF0B0: +case 0xF0B1: +case 0xF0B2: +case 0xF0B3: +case 0xF0B4: +case 0xF0B5: +case 0xF0B6: +case 0xF0B7: +case 0xF0B8: +case 0xF0B9: +case 0xF0BA: +case 0xF0BB: +case 0xF0BC: +case 0xF0BD: +case 0xF0BE: +case 0xF0BF: +case 0xF0C0: +case 0xF0C1: +case 0xF0C2: +case 0xF0C3: +case 0xF0C4: +case 0xF0C5: +case 0xF0C6: +case 0xF0C7: +case 0xF0C8: +case 0xF0C9: +case 0xF0CA: +case 0xF0CB: +case 0xF0CC: +case 0xF0CD: +case 0xF0CE: +case 0xF0CF: +case 0xF0D0: +case 0xF0D1: +case 0xF0D2: +case 0xF0D3: +case 0xF0D4: +case 0xF0D5: +case 0xF0D6: +case 0xF0D7: +case 0xF0D8: +case 0xF0D9: +case 0xF0DA: +case 0xF0DB: +case 0xF0DC: +case 0xF0DD: +case 0xF0DE: +case 0xF0DF: +case 0xF0E0: +case 0xF0E1: +case 0xF0E2: +case 0xF0E3: +case 0xF0E4: +case 0xF0E5: +case 0xF0E6: +case 0xF0E7: +case 0xF0E8: +case 0xF0E9: +case 0xF0EA: +case 0xF0EB: +case 0xF0EC: +case 0xF0ED: +case 0xF0EE: +case 0xF0EF: +case 0xF0F0: +case 0xF0F1: +case 0xF0F2: +case 0xF0F3: +case 0xF0F4: +case 0xF0F5: +case 0xF0F6: +case 0xF0F7: +case 0xF0F8: +case 0xF0F9: +case 0xF0FA: +case 0xF0FB: +case 0xF0FC: +case 0xF0FD: +case 0xF0FE: +case 0xF0FF: +case 0xF100: +case 0xF101: +case 0xF102: +case 0xF103: +case 0xF104: +case 0xF105: +case 0xF106: +case 0xF107: +case 0xF108: +case 0xF109: +case 0xF10A: +case 0xF10B: +case 0xF10C: +case 0xF10D: +case 0xF10E: +case 0xF10F: +case 0xF110: +case 0xF111: +case 0xF112: +case 0xF113: +case 0xF114: +case 0xF115: +case 0xF116: +case 0xF117: +case 0xF118: +case 0xF119: +case 0xF11A: +case 0xF11B: +case 0xF11C: +case 0xF11D: +case 0xF11E: +case 0xF11F: +case 0xF120: +case 0xF121: +case 0xF122: +case 0xF123: +case 0xF124: +case 0xF125: +case 0xF126: +case 0xF127: +case 0xF128: +case 0xF129: +case 0xF12A: +case 0xF12B: +case 0xF12C: +case 0xF12D: +case 0xF12E: +case 0xF12F: +case 0xF130: +case 0xF131: +case 0xF132: +case 0xF133: +case 0xF134: +case 0xF135: +case 0xF136: +case 0xF137: +case 0xF138: +case 0xF139: +case 0xF13A: +case 0xF13B: +case 0xF13C: +case 0xF13D: +case 0xF13E: +case 0xF13F: +case 0xF140: +case 0xF141: +case 0xF142: +case 0xF143: +case 0xF144: +case 0xF145: +case 0xF146: +case 0xF147: +case 0xF148: +case 0xF149: +case 0xF14A: +case 0xF14B: +case 0xF14C: +case 0xF14D: +case 0xF14E: +case 0xF14F: +case 0xF150: +case 0xF151: +case 0xF152: +case 0xF153: +case 0xF154: +case 0xF155: +case 0xF156: +case 0xF157: +case 0xF158: +case 0xF159: +case 0xF15A: +case 0xF15B: +case 0xF15C: +case 0xF15D: +case 0xF15E: +case 0xF15F: +case 0xF160: +case 0xF161: +case 0xF162: +case 0xF163: +case 0xF164: +case 0xF165: +case 0xF166: +case 0xF167: +case 0xF168: +case 0xF169: +case 0xF16A: +case 0xF16B: +case 0xF16C: +case 0xF16D: +case 0xF16E: +case 0xF16F: +case 0xF170: +case 0xF171: +case 0xF172: +case 0xF173: +case 0xF174: +case 0xF175: +case 0xF176: +case 0xF177: +case 0xF178: +case 0xF179: +case 0xF17A: +case 0xF17B: +case 0xF17C: +case 0xF17D: +case 0xF17E: +case 0xF17F: +case 0xF180: +case 0xF181: +case 0xF182: +case 0xF183: +case 0xF184: +case 0xF185: +case 0xF186: +case 0xF187: +case 0xF188: +case 0xF189: +case 0xF18A: +case 0xF18B: +case 0xF18C: +case 0xF18D: +case 0xF18E: +case 0xF18F: +case 0xF190: +case 0xF191: +case 0xF192: +case 0xF193: +case 0xF194: +case 0xF195: +case 0xF196: +case 0xF197: +case 0xF198: +case 0xF199: +case 0xF19A: +case 0xF19B: +case 0xF19C: +case 0xF19D: +case 0xF19E: +case 0xF19F: +case 0xF1A0: +case 0xF1A1: +case 0xF1A2: +case 0xF1A3: +case 0xF1A4: +case 0xF1A5: +case 0xF1A6: +case 0xF1A7: +case 0xF1A8: +case 0xF1A9: +case 0xF1AA: +case 0xF1AB: +case 0xF1AC: +case 0xF1AD: +case 0xF1AE: +case 0xF1AF: +case 0xF1B0: +case 0xF1B1: +case 0xF1B2: +case 0xF1B3: +case 0xF1B4: +case 0xF1B5: +case 0xF1B6: +case 0xF1B7: +case 0xF1B8: +case 0xF1B9: +case 0xF1BA: +case 0xF1BB: +case 0xF1BC: +case 0xF1BD: +case 0xF1BE: +case 0xF1BF: +case 0xF1C0: +case 0xF1C1: +case 0xF1C2: +case 0xF1C3: +case 0xF1C4: +case 0xF1C5: +case 0xF1C6: +case 0xF1C7: +case 0xF1C8: +case 0xF1C9: +case 0xF1CA: +case 0xF1CB: +case 0xF1CC: +case 0xF1CD: +case 0xF1CE: +case 0xF1CF: +case 0xF1D0: +case 0xF1D1: +case 0xF1D2: +case 0xF1D3: +case 0xF1D4: +case 0xF1D5: +case 0xF1D6: +case 0xF1D7: +case 0xF1D8: +case 0xF1D9: +case 0xF1DA: +case 0xF1DB: +case 0xF1DC: +case 0xF1DD: +case 0xF1DE: +case 0xF1DF: +case 0xF1E0: +case 0xF1E1: +case 0xF1E2: +case 0xF1E3: +case 0xF1E4: +case 0xF1E5: +case 0xF1E6: +case 0xF1E7: +case 0xF1E8: +case 0xF1E9: +case 0xF1EA: +case 0xF1EB: +case 0xF1EC: +case 0xF1ED: +case 0xF1EE: +case 0xF1EF: +case 0xF1F0: +case 0xF1F1: +case 0xF1F2: +case 0xF1F3: +case 0xF1F4: +case 0xF1F5: +case 0xF1F6: +case 0xF1F7: +case 0xF1F8: +case 0xF1F9: +case 0xF1FA: +case 0xF1FB: +case 0xF1FC: +case 0xF1FD: +case 0xF1FE: +case 0xF1FF: +case 0xF200: +case 0xF201: +case 0xF202: +case 0xF203: +case 0xF204: +case 0xF205: +case 0xF206: +case 0xF207: +case 0xF208: +case 0xF209: +case 0xF20A: +case 0xF20B: +case 0xF20C: +case 0xF20D: +case 0xF20E: +case 0xF20F: +case 0xF210: +case 0xF211: +case 0xF212: +case 0xF213: +case 0xF214: +case 0xF215: +case 0xF216: +case 0xF217: +case 0xF218: +case 0xF219: +case 0xF21A: +case 0xF21B: +case 0xF21C: +case 0xF21D: +case 0xF21E: +case 0xF21F: +case 0xF220: +case 0xF221: +case 0xF222: +case 0xF223: +case 0xF224: +case 0xF225: +case 0xF226: +case 0xF227: +case 0xF228: +case 0xF229: +case 0xF22A: +case 0xF22B: +case 0xF22C: +case 0xF22D: +case 0xF22E: +case 0xF22F: +case 0xF230: +case 0xF231: +case 0xF232: +case 0xF233: +case 0xF234: +case 0xF235: +case 0xF236: +case 0xF237: +case 0xF238: +case 0xF239: +case 0xF23A: +case 0xF23B: +case 0xF23C: +case 0xF23D: +case 0xF23E: +case 0xF23F: +case 0xF240: +case 0xF241: +case 0xF242: +case 0xF243: +case 0xF244: +case 0xF245: +case 0xF246: +case 0xF247: +case 0xF248: +case 0xF249: +case 0xF24A: +case 0xF24B: +case 0xF24C: +case 0xF24D: +case 0xF24E: +case 0xF24F: +case 0xF250: +case 0xF251: +case 0xF252: +case 0xF253: +case 0xF254: +case 0xF255: +case 0xF256: +case 0xF257: +case 0xF258: +case 0xF259: +case 0xF25A: +case 0xF25B: +case 0xF25C: +case 0xF25D: +case 0xF25E: +case 0xF25F: +case 0xF260: +case 0xF261: +case 0xF262: +case 0xF263: +case 0xF264: +case 0xF265: +case 0xF266: +case 0xF267: +case 0xF268: +case 0xF269: +case 0xF26A: +case 0xF26B: +case 0xF26C: +case 0xF26D: +case 0xF26E: +case 0xF26F: +case 0xF270: +case 0xF271: +case 0xF272: +case 0xF273: +case 0xF274: +case 0xF275: +case 0xF276: +case 0xF277: +case 0xF278: +case 0xF279: +case 0xF27A: +case 0xF27B: +case 0xF27C: +case 0xF27D: +case 0xF27E: +case 0xF27F: +case 0xF280: +case 0xF281: +case 0xF282: +case 0xF283: +case 0xF284: +case 0xF285: +case 0xF286: +case 0xF287: +case 0xF288: +case 0xF289: +case 0xF28A: +case 0xF28B: +case 0xF28C: +case 0xF28D: +case 0xF28E: +case 0xF28F: +case 0xF290: +case 0xF291: +case 0xF292: +case 0xF293: +case 0xF294: +case 0xF295: +case 0xF296: +case 0xF297: +case 0xF298: +case 0xF299: +case 0xF29A: +case 0xF29B: +case 0xF29C: +case 0xF29D: +case 0xF29E: +case 0xF29F: +case 0xF2A0: +case 0xF2A1: +case 0xF2A2: +case 0xF2A3: +case 0xF2A4: +case 0xF2A5: +case 0xF2A6: +case 0xF2A7: +case 0xF2A8: +case 0xF2A9: +case 0xF2AA: +case 0xF2AB: +case 0xF2AC: +case 0xF2AD: +case 0xF2AE: +case 0xF2AF: +case 0xF2B0: +case 0xF2B1: +case 0xF2B2: +case 0xF2B3: +case 0xF2B4: +case 0xF2B5: +case 0xF2B6: +case 0xF2B7: +case 0xF2B8: +case 0xF2B9: +case 0xF2BA: +case 0xF2BB: +case 0xF2BC: +case 0xF2BD: +case 0xF2BE: +case 0xF2BF: +case 0xF2C0: +case 0xF2C1: +case 0xF2C2: +case 0xF2C3: +case 0xF2C4: +case 0xF2C5: +case 0xF2C6: +case 0xF2C7: +case 0xF2C8: +case 0xF2C9: +case 0xF2CA: +case 0xF2CB: +case 0xF2CC: +case 0xF2CD: +case 0xF2CE: +case 0xF2CF: +case 0xF2D0: +case 0xF2D1: +case 0xF2D2: +case 0xF2D3: +case 0xF2D4: +case 0xF2D5: +case 0xF2D6: +case 0xF2D7: +case 0xF2D8: +case 0xF2D9: +case 0xF2DA: +case 0xF2DB: +case 0xF2DC: +case 0xF2DD: +case 0xF2DE: +case 0xF2DF: +case 0xF2E0: +case 0xF2E1: +case 0xF2E2: +case 0xF2E3: +case 0xF2E4: +case 0xF2E5: +case 0xF2E6: +case 0xF2E7: +case 0xF2E8: +case 0xF2E9: +case 0xF2EA: +case 0xF2EB: +case 0xF2EC: +case 0xF2ED: +case 0xF2EE: +case 0xF2EF: +case 0xF2F0: +case 0xF2F1: +case 0xF2F2: +case 0xF2F3: +case 0xF2F4: +case 0xF2F5: +case 0xF2F6: +case 0xF2F7: +case 0xF2F8: +case 0xF2F9: +case 0xF2FA: +case 0xF2FB: +case 0xF2FC: +case 0xF2FD: +case 0xF2FE: +case 0xF2FF: +case 0xF300: +case 0xF301: +case 0xF302: +case 0xF303: +case 0xF304: +case 0xF305: +case 0xF306: +case 0xF307: +case 0xF308: +case 0xF309: +case 0xF30A: +case 0xF30B: +case 0xF30C: +case 0xF30D: +case 0xF30E: +case 0xF30F: +case 0xF310: +case 0xF311: +case 0xF312: +case 0xF313: +case 0xF314: +case 0xF315: +case 0xF316: +case 0xF317: +case 0xF318: +case 0xF319: +case 0xF31A: +case 0xF31B: +case 0xF31C: +case 0xF31D: +case 0xF31E: +case 0xF31F: +case 0xF320: +case 0xF321: +case 0xF322: +case 0xF323: +case 0xF324: +case 0xF325: +case 0xF326: +case 0xF327: +case 0xF328: +case 0xF329: +case 0xF32A: +case 0xF32B: +case 0xF32C: +case 0xF32D: +case 0xF32E: +case 0xF32F: +case 0xF330: +case 0xF331: +case 0xF332: +case 0xF333: +case 0xF334: +case 0xF335: +case 0xF336: +case 0xF337: +case 0xF338: +case 0xF339: +case 0xF33A: +case 0xF33B: +case 0xF33C: +case 0xF33D: +case 0xF33E: +case 0xF33F: +case 0xF340: +case 0xF341: +case 0xF342: +case 0xF343: +case 0xF344: +case 0xF345: +case 0xF346: +case 0xF347: +case 0xF348: +case 0xF349: +case 0xF34A: +case 0xF34B: +case 0xF34C: +case 0xF34D: +case 0xF34E: +case 0xF34F: +case 0xF350: +case 0xF351: +case 0xF352: +case 0xF353: +case 0xF354: +case 0xF355: +case 0xF356: +case 0xF357: +case 0xF358: +case 0xF359: +case 0xF35A: +case 0xF35B: +case 0xF35C: +case 0xF35D: +case 0xF35E: +case 0xF35F: +case 0xF360: +case 0xF361: +case 0xF362: +case 0xF363: +case 0xF364: +case 0xF365: +case 0xF366: +case 0xF367: +case 0xF368: +case 0xF369: +case 0xF36A: +case 0xF36B: +case 0xF36C: +case 0xF36D: +case 0xF36E: +case 0xF36F: +case 0xF370: +case 0xF371: +case 0xF372: +case 0xF373: +case 0xF374: +case 0xF375: +case 0xF376: +case 0xF377: +case 0xF378: +case 0xF379: +case 0xF37A: +case 0xF37B: +case 0xF37C: +case 0xF37D: +case 0xF37E: +case 0xF37F: +case 0xF380: +case 0xF381: +case 0xF382: +case 0xF383: +case 0xF384: +case 0xF385: +case 0xF386: +case 0xF387: +case 0xF388: +case 0xF389: +case 0xF38A: +case 0xF38B: +case 0xF38C: +case 0xF38D: +case 0xF38E: +case 0xF38F: +case 0xF390: +case 0xF391: +case 0xF392: +case 0xF393: +case 0xF394: +case 0xF395: +case 0xF396: +case 0xF397: +case 0xF398: +case 0xF399: +case 0xF39A: +case 0xF39B: +case 0xF39C: +case 0xF39D: +case 0xF39E: +case 0xF39F: +case 0xF3A0: +case 0xF3A1: +case 0xF3A2: +case 0xF3A3: +case 0xF3A4: +case 0xF3A5: +case 0xF3A6: +case 0xF3A7: +case 0xF3A8: +case 0xF3A9: +case 0xF3AA: +case 0xF3AB: +case 0xF3AC: +case 0xF3AD: +case 0xF3AE: +case 0xF3AF: +case 0xF3B0: +case 0xF3B1: +case 0xF3B2: +case 0xF3B3: +case 0xF3B4: +case 0xF3B5: +case 0xF3B6: +case 0xF3B7: +case 0xF3B8: +case 0xF3B9: +case 0xF3BA: +case 0xF3BB: +case 0xF3BC: +case 0xF3BD: +case 0xF3BE: +case 0xF3BF: +case 0xF3C0: +case 0xF3C1: +case 0xF3C2: +case 0xF3C3: +case 0xF3C4: +case 0xF3C5: +case 0xF3C6: +case 0xF3C7: +case 0xF3C8: +case 0xF3C9: +case 0xF3CA: +case 0xF3CB: +case 0xF3CC: +case 0xF3CD: +case 0xF3CE: +case 0xF3CF: +case 0xF3D0: +case 0xF3D1: +case 0xF3D2: +case 0xF3D3: +case 0xF3D4: +case 0xF3D5: +case 0xF3D6: +case 0xF3D7: +case 0xF3D8: +case 0xF3D9: +case 0xF3DA: +case 0xF3DB: +case 0xF3DC: +case 0xF3DD: +case 0xF3DE: +case 0xF3DF: +case 0xF3E0: +case 0xF3E1: +case 0xF3E2: +case 0xF3E3: +case 0xF3E4: +case 0xF3E5: +case 0xF3E6: +case 0xF3E7: +case 0xF3E8: +case 0xF3E9: +case 0xF3EA: +case 0xF3EB: +case 0xF3EC: +case 0xF3ED: +case 0xF3EE: +case 0xF3EF: +case 0xF3F0: +case 0xF3F1: +case 0xF3F2: +case 0xF3F3: +case 0xF3F4: +case 0xF3F5: +case 0xF3F6: +case 0xF3F7: +case 0xF3F8: +case 0xF3F9: +case 0xF3FA: +case 0xF3FB: +case 0xF3FC: +case 0xF3FD: +case 0xF3FE: +case 0xF3FF: +case 0xF400: +case 0xF401: +case 0xF402: +case 0xF403: +case 0xF404: +case 0xF405: +case 0xF406: +case 0xF407: +case 0xF408: +case 0xF409: +case 0xF40A: +case 0xF40B: +case 0xF40C: +case 0xF40D: +case 0xF40E: +case 0xF40F: +case 0xF410: +case 0xF411: +case 0xF412: +case 0xF413: +case 0xF414: +case 0xF415: +case 0xF416: +case 0xF417: +case 0xF418: +case 0xF419: +case 0xF41A: +case 0xF41B: +case 0xF41C: +case 0xF41D: +case 0xF41E: +case 0xF41F: +case 0xF420: +case 0xF421: +case 0xF422: +case 0xF423: +case 0xF424: +case 0xF425: +case 0xF426: +case 0xF427: +case 0xF428: +case 0xF429: +case 0xF42A: +case 0xF42B: +case 0xF42C: +case 0xF42D: +case 0xF42E: +case 0xF42F: +case 0xF430: +case 0xF431: +case 0xF432: +case 0xF433: +case 0xF434: +case 0xF435: +case 0xF436: +case 0xF437: +case 0xF438: +case 0xF439: +case 0xF43A: +case 0xF43B: +case 0xF43C: +case 0xF43D: +case 0xF43E: +case 0xF43F: +case 0xF440: +case 0xF441: +case 0xF442: +case 0xF443: +case 0xF444: +case 0xF445: +case 0xF446: +case 0xF447: +case 0xF448: +case 0xF449: +case 0xF44A: +case 0xF44B: +case 0xF44C: +case 0xF44D: +case 0xF44E: +case 0xF44F: +case 0xF450: +case 0xF451: +case 0xF452: +case 0xF453: +case 0xF454: +case 0xF455: +case 0xF456: +case 0xF457: +case 0xF458: +case 0xF459: +case 0xF45A: +case 0xF45B: +case 0xF45C: +case 0xF45D: +case 0xF45E: +case 0xF45F: +case 0xF460: +case 0xF461: +case 0xF462: +case 0xF463: +case 0xF464: +case 0xF465: +case 0xF466: +case 0xF467: +case 0xF468: +case 0xF469: +case 0xF46A: +case 0xF46B: +case 0xF46C: +case 0xF46D: +case 0xF46E: +case 0xF46F: +case 0xF470: +case 0xF471: +case 0xF472: +case 0xF473: +case 0xF474: +case 0xF475: +case 0xF476: +case 0xF477: +case 0xF478: +case 0xF479: +case 0xF47A: +case 0xF47B: +case 0xF47C: +case 0xF47D: +case 0xF47E: +case 0xF47F: +case 0xF480: +case 0xF481: +case 0xF482: +case 0xF483: +case 0xF484: +case 0xF485: +case 0xF486: +case 0xF487: +case 0xF488: +case 0xF489: +case 0xF48A: +case 0xF48B: +case 0xF48C: +case 0xF48D: +case 0xF48E: +case 0xF48F: +case 0xF490: +case 0xF491: +case 0xF492: +case 0xF493: +case 0xF494: +case 0xF495: +case 0xF496: +case 0xF497: +case 0xF498: +case 0xF499: +case 0xF49A: +case 0xF49B: +case 0xF49C: +case 0xF49D: +case 0xF49E: +case 0xF49F: +case 0xF4A0: +case 0xF4A1: +case 0xF4A2: +case 0xF4A3: +case 0xF4A4: +case 0xF4A5: +case 0xF4A6: +case 0xF4A7: +case 0xF4A8: +case 0xF4A9: +case 0xF4AA: +case 0xF4AB: +case 0xF4AC: +case 0xF4AD: +case 0xF4AE: +case 0xF4AF: +case 0xF4B0: +case 0xF4B1: +case 0xF4B2: +case 0xF4B3: +case 0xF4B4: +case 0xF4B5: +case 0xF4B6: +case 0xF4B7: +case 0xF4B8: +case 0xF4B9: +case 0xF4BA: +case 0xF4BB: +case 0xF4BC: +case 0xF4BD: +case 0xF4BE: +case 0xF4BF: +case 0xF4C0: +case 0xF4C1: +case 0xF4C2: +case 0xF4C3: +case 0xF4C4: +case 0xF4C5: +case 0xF4C6: +case 0xF4C7: +case 0xF4C8: +case 0xF4C9: +case 0xF4CA: +case 0xF4CB: +case 0xF4CC: +case 0xF4CD: +case 0xF4CE: +case 0xF4CF: +case 0xF4D0: +case 0xF4D1: +case 0xF4D2: +case 0xF4D3: +case 0xF4D4: +case 0xF4D5: +case 0xF4D6: +case 0xF4D7: +case 0xF4D8: +case 0xF4D9: +case 0xF4DA: +case 0xF4DB: +case 0xF4DC: +case 0xF4DD: +case 0xF4DE: +case 0xF4DF: +case 0xF4E0: +case 0xF4E1: +case 0xF4E2: +case 0xF4E3: +case 0xF4E4: +case 0xF4E5: +case 0xF4E6: +case 0xF4E7: +case 0xF4E8: +case 0xF4E9: +case 0xF4EA: +case 0xF4EB: +case 0xF4EC: +case 0xF4ED: +case 0xF4EE: +case 0xF4EF: +case 0xF4F0: +case 0xF4F1: +case 0xF4F2: +case 0xF4F3: +case 0xF4F4: +case 0xF4F5: +case 0xF4F6: +case 0xF4F7: +case 0xF4F8: +case 0xF4F9: +case 0xF4FA: +case 0xF4FB: +case 0xF4FC: +case 0xF4FD: +case 0xF4FE: +case 0xF4FF: +case 0xF500: +case 0xF501: +case 0xF502: +case 0xF503: +case 0xF504: +case 0xF505: +case 0xF506: +case 0xF507: +case 0xF508: +case 0xF509: +case 0xF50A: +case 0xF50B: +case 0xF50C: +case 0xF50D: +case 0xF50E: +case 0xF50F: +case 0xF510: +case 0xF511: +case 0xF512: +case 0xF513: +case 0xF514: +case 0xF515: +case 0xF516: +case 0xF517: +case 0xF518: +case 0xF519: +case 0xF51A: +case 0xF51B: +case 0xF51C: +case 0xF51D: +case 0xF51E: +case 0xF51F: +case 0xF520: +case 0xF521: +case 0xF522: +case 0xF523: +case 0xF524: +case 0xF525: +case 0xF526: +case 0xF527: +case 0xF528: +case 0xF529: +case 0xF52A: +case 0xF52B: +case 0xF52C: +case 0xF52D: +case 0xF52E: +case 0xF52F: +case 0xF530: +case 0xF531: +case 0xF532: +case 0xF533: +case 0xF534: +case 0xF535: +case 0xF536: +case 0xF537: +case 0xF538: +case 0xF539: +case 0xF53A: +case 0xF53B: +case 0xF53C: +case 0xF53D: +case 0xF53E: +case 0xF53F: +case 0xF540: +case 0xF541: +case 0xF542: +case 0xF543: +case 0xF544: +case 0xF545: +case 0xF546: +case 0xF547: +case 0xF548: +case 0xF549: +case 0xF54A: +case 0xF54B: +case 0xF54C: +case 0xF54D: +case 0xF54E: +case 0xF54F: +case 0xF550: +case 0xF551: +case 0xF552: +case 0xF553: +case 0xF554: +case 0xF555: +case 0xF556: +case 0xF557: +case 0xF558: +case 0xF559: +case 0xF55A: +case 0xF55B: +case 0xF55C: +case 0xF55D: +case 0xF55E: +case 0xF55F: +case 0xF560: +case 0xF561: +case 0xF562: +case 0xF563: +case 0xF564: +case 0xF565: +case 0xF566: +case 0xF567: +case 0xF568: +case 0xF569: +case 0xF56A: +case 0xF56B: +case 0xF56C: +case 0xF56D: +case 0xF56E: +case 0xF56F: +case 0xF570: +case 0xF571: +case 0xF572: +case 0xF573: +case 0xF574: +case 0xF575: +case 0xF576: +case 0xF577: +case 0xF578: +case 0xF579: +case 0xF57A: +case 0xF57B: +case 0xF57C: +case 0xF57D: +case 0xF57E: +case 0xF57F: +case 0xF580: +case 0xF581: +case 0xF582: +case 0xF583: +case 0xF584: +case 0xF585: +case 0xF586: +case 0xF587: +case 0xF588: +case 0xF589: +case 0xF58A: +case 0xF58B: +case 0xF58C: +case 0xF58D: +case 0xF58E: +case 0xF58F: +case 0xF590: +case 0xF591: +case 0xF592: +case 0xF593: +case 0xF594: +case 0xF595: +case 0xF596: +case 0xF597: +case 0xF598: +case 0xF599: +case 0xF59A: +case 0xF59B: +case 0xF59C: +case 0xF59D: +case 0xF59E: +case 0xF59F: +case 0xF5A0: +case 0xF5A1: +case 0xF5A2: +case 0xF5A3: +case 0xF5A4: +case 0xF5A5: +case 0xF5A6: +case 0xF5A7: +case 0xF5A8: +case 0xF5A9: +case 0xF5AA: +case 0xF5AB: +case 0xF5AC: +case 0xF5AD: +case 0xF5AE: +case 0xF5AF: +case 0xF5B0: +case 0xF5B1: +case 0xF5B2: +case 0xF5B3: +case 0xF5B4: +case 0xF5B5: +case 0xF5B6: +case 0xF5B7: +case 0xF5B8: +case 0xF5B9: +case 0xF5BA: +case 0xF5BB: +case 0xF5BC: +case 0xF5BD: +case 0xF5BE: +case 0xF5BF: +case 0xF5C0: +case 0xF5C1: +case 0xF5C2: +case 0xF5C3: +case 0xF5C4: +case 0xF5C5: +case 0xF5C6: +case 0xF5C7: +case 0xF5C8: +case 0xF5C9: +case 0xF5CA: +case 0xF5CB: +case 0xF5CC: +case 0xF5CD: +case 0xF5CE: +case 0xF5CF: +case 0xF5D0: +case 0xF5D1: +case 0xF5D2: +case 0xF5D3: +case 0xF5D4: +case 0xF5D5: +case 0xF5D6: +case 0xF5D7: +case 0xF5D8: +case 0xF5D9: +case 0xF5DA: +case 0xF5DB: +case 0xF5DC: +case 0xF5DD: +case 0xF5DE: +case 0xF5DF: +case 0xF5E0: +case 0xF5E1: +case 0xF5E2: +case 0xF5E3: +case 0xF5E4: +case 0xF5E5: +case 0xF5E6: +case 0xF5E7: +case 0xF5E8: +case 0xF5E9: +case 0xF5EA: +case 0xF5EB: +case 0xF5EC: +case 0xF5ED: +case 0xF5EE: +case 0xF5EF: +case 0xF5F0: +case 0xF5F1: +case 0xF5F2: +case 0xF5F3: +case 0xF5F4: +case 0xF5F5: +case 0xF5F6: +case 0xF5F7: +case 0xF5F8: +case 0xF5F9: +case 0xF5FA: +case 0xF5FB: +case 0xF5FC: +case 0xF5FD: +case 0xF5FE: +case 0xF5FF: +case 0xF600: +case 0xF601: +case 0xF602: +case 0xF603: +case 0xF604: +case 0xF605: +case 0xF606: +case 0xF607: +case 0xF608: +case 0xF609: +case 0xF60A: +case 0xF60B: +case 0xF60C: +case 0xF60D: +case 0xF60E: +case 0xF60F: +case 0xF610: +case 0xF611: +case 0xF612: +case 0xF613: +case 0xF614: +case 0xF615: +case 0xF616: +case 0xF617: +case 0xF618: +case 0xF619: +case 0xF61A: +case 0xF61B: +case 0xF61C: +case 0xF61D: +case 0xF61E: +case 0xF61F: +case 0xF620: +case 0xF621: +case 0xF622: +case 0xF623: +case 0xF624: +case 0xF625: +case 0xF626: +case 0xF627: +case 0xF628: +case 0xF629: +case 0xF62A: +case 0xF62B: +case 0xF62C: +case 0xF62D: +case 0xF62E: +case 0xF62F: +case 0xF630: +case 0xF631: +case 0xF632: +case 0xF633: +case 0xF634: +case 0xF635: +case 0xF636: +case 0xF637: +case 0xF638: +case 0xF639: +case 0xF63A: +case 0xF63B: +case 0xF63C: +case 0xF63D: +case 0xF63E: +case 0xF63F: +case 0xF640: +case 0xF641: +case 0xF642: +case 0xF643: +case 0xF644: +case 0xF645: +case 0xF646: +case 0xF647: +case 0xF648: +case 0xF649: +case 0xF64A: +case 0xF64B: +case 0xF64C: +case 0xF64D: +case 0xF64E: +case 0xF64F: +case 0xF650: +case 0xF651: +case 0xF652: +case 0xF653: +case 0xF654: +case 0xF655: +case 0xF656: +case 0xF657: +case 0xF658: +case 0xF659: +case 0xF65A: +case 0xF65B: +case 0xF65C: +case 0xF65D: +case 0xF65E: +case 0xF65F: +case 0xF660: +case 0xF661: +case 0xF662: +case 0xF663: +case 0xF664: +case 0xF665: +case 0xF666: +case 0xF667: +case 0xF668: +case 0xF669: +case 0xF66A: +case 0xF66B: +case 0xF66C: +case 0xF66D: +case 0xF66E: +case 0xF66F: +case 0xF670: +case 0xF671: +case 0xF672: +case 0xF673: +case 0xF674: +case 0xF675: +case 0xF676: +case 0xF677: +case 0xF678: +case 0xF679: +case 0xF67A: +case 0xF67B: +case 0xF67C: +case 0xF67D: +case 0xF67E: +case 0xF67F: +case 0xF680: +case 0xF681: +case 0xF682: +case 0xF683: +case 0xF684: +case 0xF685: +case 0xF686: +case 0xF687: +case 0xF688: +case 0xF689: +case 0xF68A: +case 0xF68B: +case 0xF68C: +case 0xF68D: +case 0xF68E: +case 0xF68F: +case 0xF690: +case 0xF691: +case 0xF692: +case 0xF693: +case 0xF694: +case 0xF695: +case 0xF696: +case 0xF697: +case 0xF698: +case 0xF699: +case 0xF69A: +case 0xF69B: +case 0xF69C: +case 0xF69D: +case 0xF69E: +case 0xF69F: +case 0xF6A0: +case 0xF6A1: +case 0xF6A2: +case 0xF6A3: +case 0xF6A4: +case 0xF6A5: +case 0xF6A6: +case 0xF6A7: +case 0xF6A8: +case 0xF6A9: +case 0xF6AA: +case 0xF6AB: +case 0xF6AC: +case 0xF6AD: +case 0xF6AE: +case 0xF6AF: +case 0xF6B0: +case 0xF6B1: +case 0xF6B2: +case 0xF6B3: +case 0xF6B4: +case 0xF6B5: +case 0xF6B6: +case 0xF6B7: +case 0xF6B8: +case 0xF6B9: +case 0xF6BA: +case 0xF6BB: +case 0xF6BC: +case 0xF6BD: +case 0xF6BE: +case 0xF6BF: +case 0xF6C0: +case 0xF6C1: +case 0xF6C2: +case 0xF6C3: +case 0xF6C4: +case 0xF6C5: +case 0xF6C6: +case 0xF6C7: +case 0xF6C8: +case 0xF6C9: +case 0xF6CA: +case 0xF6CB: +case 0xF6CC: +case 0xF6CD: +case 0xF6CE: +case 0xF6CF: +case 0xF6D0: +case 0xF6D1: +case 0xF6D2: +case 0xF6D3: +case 0xF6D4: +case 0xF6D5: +case 0xF6D6: +case 0xF6D7: +case 0xF6D8: +case 0xF6D9: +case 0xF6DA: +case 0xF6DB: +case 0xF6DC: +case 0xF6DD: +case 0xF6DE: +case 0xF6DF: +case 0xF6E0: +case 0xF6E1: +case 0xF6E2: +case 0xF6E3: +case 0xF6E4: +case 0xF6E5: +case 0xF6E6: +case 0xF6E7: +case 0xF6E8: +case 0xF6E9: +case 0xF6EA: +case 0xF6EB: +case 0xF6EC: +case 0xF6ED: +case 0xF6EE: +case 0xF6EF: +case 0xF6F0: +case 0xF6F1: +case 0xF6F2: +case 0xF6F3: +case 0xF6F4: +case 0xF6F5: +case 0xF6F6: +case 0xF6F7: +case 0xF6F8: +case 0xF6F9: +case 0xF6FA: +case 0xF6FB: +case 0xF6FC: +case 0xF6FD: +case 0xF6FE: +case 0xF6FF: +case 0xF700: +case 0xF701: +case 0xF702: +case 0xF703: +case 0xF704: +case 0xF705: +case 0xF706: +case 0xF707: +case 0xF708: +case 0xF709: +case 0xF70A: +case 0xF70B: +case 0xF70C: +case 0xF70D: +case 0xF70E: +case 0xF70F: +case 0xF710: +case 0xF711: +case 0xF712: +case 0xF713: +case 0xF714: +case 0xF715: +case 0xF716: +case 0xF717: +case 0xF718: +case 0xF719: +case 0xF71A: +case 0xF71B: +case 0xF71C: +case 0xF71D: +case 0xF71E: +case 0xF71F: +case 0xF720: +case 0xF721: +case 0xF722: +case 0xF723: +case 0xF724: +case 0xF725: +case 0xF726: +case 0xF727: +case 0xF728: +case 0xF729: +case 0xF72A: +case 0xF72B: +case 0xF72C: +case 0xF72D: +case 0xF72E: +case 0xF72F: +case 0xF730: +case 0xF731: +case 0xF732: +case 0xF733: +case 0xF734: +case 0xF735: +case 0xF736: +case 0xF737: +case 0xF738: +case 0xF739: +case 0xF73A: +case 0xF73B: +case 0xF73C: +case 0xF73D: +case 0xF73E: +case 0xF73F: +case 0xF740: +case 0xF741: +case 0xF742: +case 0xF743: +case 0xF744: +case 0xF745: +case 0xF746: +case 0xF747: +case 0xF748: +case 0xF749: +case 0xF74A: +case 0xF74B: +case 0xF74C: +case 0xF74D: +case 0xF74E: +case 0xF74F: +case 0xF750: +case 0xF751: +case 0xF752: +case 0xF753: +case 0xF754: +case 0xF755: +case 0xF756: +case 0xF757: +case 0xF758: +case 0xF759: +case 0xF75A: +case 0xF75B: +case 0xF75C: +case 0xF75D: +case 0xF75E: +case 0xF75F: +case 0xF760: +case 0xF761: +case 0xF762: +case 0xF763: +case 0xF764: +case 0xF765: +case 0xF766: +case 0xF767: +case 0xF768: +case 0xF769: +case 0xF76A: +case 0xF76B: +case 0xF76C: +case 0xF76D: +case 0xF76E: +case 0xF76F: +case 0xF770: +case 0xF771: +case 0xF772: +case 0xF773: +case 0xF774: +case 0xF775: +case 0xF776: +case 0xF777: +case 0xF778: +case 0xF779: +case 0xF77A: +case 0xF77B: +case 0xF77C: +case 0xF77D: +case 0xF77E: +case 0xF77F: +case 0xF780: +case 0xF781: +case 0xF782: +case 0xF783: +case 0xF784: +case 0xF785: +case 0xF786: +case 0xF787: +case 0xF788: +case 0xF789: +case 0xF78A: +case 0xF78B: +case 0xF78C: +case 0xF78D: +case 0xF78E: +case 0xF78F: +case 0xF790: +case 0xF791: +case 0xF792: +case 0xF793: +case 0xF794: +case 0xF795: +case 0xF796: +case 0xF797: +case 0xF798: +case 0xF799: +case 0xF79A: +case 0xF79B: +case 0xF79C: +case 0xF79D: +case 0xF79E: +case 0xF79F: +case 0xF7A0: +case 0xF7A1: +case 0xF7A2: +case 0xF7A3: +case 0xF7A4: +case 0xF7A5: +case 0xF7A6: +case 0xF7A7: +case 0xF7A8: +case 0xF7A9: +case 0xF7AA: +case 0xF7AB: +case 0xF7AC: +case 0xF7AD: +case 0xF7AE: +case 0xF7AF: +case 0xF7B0: +case 0xF7B1: +case 0xF7B2: +case 0xF7B3: +case 0xF7B4: +case 0xF7B5: +case 0xF7B6: +case 0xF7B7: +case 0xF7B8: +case 0xF7B9: +case 0xF7BA: +case 0xF7BB: +case 0xF7BC: +case 0xF7BD: +case 0xF7BE: +case 0xF7BF: +case 0xF7C0: +case 0xF7C1: +case 0xF7C2: +case 0xF7C3: +case 0xF7C4: +case 0xF7C5: +case 0xF7C6: +case 0xF7C7: +case 0xF7C8: +case 0xF7C9: +case 0xF7CA: +case 0xF7CB: +case 0xF7CC: +case 0xF7CD: +case 0xF7CE: +case 0xF7CF: +case 0xF7D0: +case 0xF7D1: +case 0xF7D2: +case 0xF7D3: +case 0xF7D4: +case 0xF7D5: +case 0xF7D6: +case 0xF7D7: +case 0xF7D8: +case 0xF7D9: +case 0xF7DA: +case 0xF7DB: +case 0xF7DC: +case 0xF7DD: +case 0xF7DE: +case 0xF7DF: +case 0xF7E0: +case 0xF7E1: +case 0xF7E2: +case 0xF7E3: +case 0xF7E4: +case 0xF7E5: +case 0xF7E6: +case 0xF7E7: +case 0xF7E8: +case 0xF7E9: +case 0xF7EA: +case 0xF7EB: +case 0xF7EC: +case 0xF7ED: +case 0xF7EE: +case 0xF7EF: +case 0xF7F0: +case 0xF7F1: +case 0xF7F2: +case 0xF7F3: +case 0xF7F4: +case 0xF7F5: +case 0xF7F6: +case 0xF7F7: +case 0xF7F8: +case 0xF7F9: +case 0xF7FA: +case 0xF7FB: +case 0xF7FC: +case 0xF7FD: +case 0xF7FE: +case 0xF7FF: +case 0xF800: +case 0xF801: +case 0xF802: +case 0xF803: +case 0xF804: +case 0xF805: +case 0xF806: +case 0xF807: +case 0xF808: +case 0xF809: +case 0xF80A: +case 0xF80B: +case 0xF80C: +case 0xF80D: +case 0xF80E: +case 0xF80F: +case 0xF810: +case 0xF811: +case 0xF812: +case 0xF813: +case 0xF814: +case 0xF815: +case 0xF816: +case 0xF817: +case 0xF818: +case 0xF819: +case 0xF81A: +case 0xF81B: +case 0xF81C: +case 0xF81D: +case 0xF81E: +case 0xF81F: +case 0xF820: +case 0xF821: +case 0xF822: +case 0xF823: +case 0xF824: +case 0xF825: +case 0xF826: +case 0xF827: +case 0xF828: +case 0xF829: +case 0xF82A: +case 0xF82B: +case 0xF82C: +case 0xF82D: +case 0xF82E: +case 0xF82F: +case 0xF830: +case 0xF831: +case 0xF832: +case 0xF833: +case 0xF834: +case 0xF835: +case 0xF836: +case 0xF837: +case 0xF838: +case 0xF839: +case 0xF83A: +case 0xF83B: +case 0xF83C: +case 0xF83D: +case 0xF83E: +case 0xF83F: +case 0xF840: +case 0xF841: +case 0xF842: +case 0xF843: +case 0xF844: +case 0xF845: +case 0xF846: +case 0xF847: +case 0xF848: +case 0xF849: +case 0xF84A: +case 0xF84B: +case 0xF84C: +case 0xF84D: +case 0xF84E: +case 0xF84F: +case 0xF850: +case 0xF851: +case 0xF852: +case 0xF853: +case 0xF854: +case 0xF855: +case 0xF856: +case 0xF857: +case 0xF858: +case 0xF859: +case 0xF85A: +case 0xF85B: +case 0xF85C: +case 0xF85D: +case 0xF85E: +case 0xF85F: +case 0xF860: +case 0xF861: +case 0xF862: +case 0xF863: +case 0xF864: +case 0xF865: +case 0xF866: +case 0xF867: +case 0xF868: +case 0xF869: +case 0xF86A: +case 0xF86B: +case 0xF86C: +case 0xF86D: +case 0xF86E: +case 0xF86F: +case 0xF870: +case 0xF871: +case 0xF872: +case 0xF873: +case 0xF874: +case 0xF875: +case 0xF876: +case 0xF877: +case 0xF878: +case 0xF879: +case 0xF87A: +case 0xF87B: +case 0xF87C: +case 0xF87D: +case 0xF87E: +case 0xF87F: +case 0xF880: +case 0xF881: +case 0xF882: +case 0xF883: +case 0xF884: +case 0xF885: +case 0xF886: +case 0xF887: +case 0xF888: +case 0xF889: +case 0xF88A: +case 0xF88B: +case 0xF88C: +case 0xF88D: +case 0xF88E: +case 0xF88F: +case 0xF890: +case 0xF891: +case 0xF892: +case 0xF893: +case 0xF894: +case 0xF895: +case 0xF896: +case 0xF897: +case 0xF898: +case 0xF899: +case 0xF89A: +case 0xF89B: +case 0xF89C: +case 0xF89D: +case 0xF89E: +case 0xF89F: +case 0xF8A0: +case 0xF8A1: +case 0xF8A2: +case 0xF8A3: +case 0xF8A4: +case 0xF8A5: +case 0xF8A6: +case 0xF8A7: +case 0xF8A8: +case 0xF8A9: +case 0xF8AA: +case 0xF8AB: +case 0xF8AC: +case 0xF8AD: +case 0xF8AE: +case 0xF8AF: +case 0xF8B0: +case 0xF8B1: +case 0xF8B2: +case 0xF8B3: +case 0xF8B4: +case 0xF8B5: +case 0xF8B6: +case 0xF8B7: +case 0xF8B8: +case 0xF8B9: +case 0xF8BA: +case 0xF8BB: +case 0xF8BC: +case 0xF8BD: +case 0xF8BE: +case 0xF8BF: +case 0xF8C0: +case 0xF8C1: +case 0xF8C2: +case 0xF8C3: +case 0xF8C4: +case 0xF8C5: +case 0xF8C6: +case 0xF8C7: +case 0xF8C8: +case 0xF8C9: +case 0xF8CA: +case 0xF8CB: +case 0xF8CC: +case 0xF8CD: +case 0xF8CE: +case 0xF8CF: +case 0xF8D0: +case 0xF8D1: +case 0xF8D2: +case 0xF8D3: +case 0xF8D4: +case 0xF8D5: +case 0xF8D6: +case 0xF8D7: +case 0xF8D8: +case 0xF8D9: +case 0xF8DA: +case 0xF8DB: +case 0xF8DC: +case 0xF8DD: +case 0xF8DE: +case 0xF8DF: +case 0xF8E0: +case 0xF8E1: +case 0xF8E2: +case 0xF8E3: +case 0xF8E4: +case 0xF8E5: +case 0xF8E6: +case 0xF8E7: +case 0xF8E8: +case 0xF8E9: +case 0xF8EA: +case 0xF8EB: +case 0xF8EC: +case 0xF8ED: +case 0xF8EE: +case 0xF8EF: +case 0xF8F0: +case 0xF8F1: +case 0xF8F2: +case 0xF8F3: +case 0xF8F4: +case 0xF8F5: +case 0xF8F6: +case 0xF8F7: +case 0xF8F8: +case 0xF8F9: +case 0xF8FA: +case 0xF8FB: +case 0xF8FC: +case 0xF8FD: +case 0xF8FE: +case 0xF8FF: +case 0xF900: +case 0xF901: +case 0xF902: +case 0xF903: +case 0xF904: +case 0xF905: +case 0xF906: +case 0xF907: +case 0xF908: +case 0xF909: +case 0xF90A: +case 0xF90B: +case 0xF90C: +case 0xF90D: +case 0xF90E: +case 0xF90F: +case 0xF910: +case 0xF911: +case 0xF912: +case 0xF913: +case 0xF914: +case 0xF915: +case 0xF916: +case 0xF917: +case 0xF918: +case 0xF919: +case 0xF91A: +case 0xF91B: +case 0xF91C: +case 0xF91D: +case 0xF91E: +case 0xF91F: +case 0xF920: +case 0xF921: +case 0xF922: +case 0xF923: +case 0xF924: +case 0xF925: +case 0xF926: +case 0xF927: +case 0xF928: +case 0xF929: +case 0xF92A: +case 0xF92B: +case 0xF92C: +case 0xF92D: +case 0xF92E: +case 0xF92F: +case 0xF930: +case 0xF931: +case 0xF932: +case 0xF933: +case 0xF934: +case 0xF935: +case 0xF936: +case 0xF937: +case 0xF938: +case 0xF939: +case 0xF93A: +case 0xF93B: +case 0xF93C: +case 0xF93D: +case 0xF93E: +case 0xF93F: +case 0xF940: +case 0xF941: +case 0xF942: +case 0xF943: +case 0xF944: +case 0xF945: +case 0xF946: +case 0xF947: +case 0xF948: +case 0xF949: +case 0xF94A: +case 0xF94B: +case 0xF94C: +case 0xF94D: +case 0xF94E: +case 0xF94F: +case 0xF950: +case 0xF951: +case 0xF952: +case 0xF953: +case 0xF954: +case 0xF955: +case 0xF956: +case 0xF957: +case 0xF958: +case 0xF959: +case 0xF95A: +case 0xF95B: +case 0xF95C: +case 0xF95D: +case 0xF95E: +case 0xF95F: +case 0xF960: +case 0xF961: +case 0xF962: +case 0xF963: +case 0xF964: +case 0xF965: +case 0xF966: +case 0xF967: +case 0xF968: +case 0xF969: +case 0xF96A: +case 0xF96B: +case 0xF96C: +case 0xF96D: +case 0xF96E: +case 0xF96F: +case 0xF970: +case 0xF971: +case 0xF972: +case 0xF973: +case 0xF974: +case 0xF975: +case 0xF976: +case 0xF977: +case 0xF978: +case 0xF979: +case 0xF97A: +case 0xF97B: +case 0xF97C: +case 0xF97D: +case 0xF97E: +case 0xF97F: +case 0xF980: +case 0xF981: +case 0xF982: +case 0xF983: +case 0xF984: +case 0xF985: +case 0xF986: +case 0xF987: +case 0xF988: +case 0xF989: +case 0xF98A: +case 0xF98B: +case 0xF98C: +case 0xF98D: +case 0xF98E: +case 0xF98F: +case 0xF990: +case 0xF991: +case 0xF992: +case 0xF993: +case 0xF994: +case 0xF995: +case 0xF996: +case 0xF997: +case 0xF998: +case 0xF999: +case 0xF99A: +case 0xF99B: +case 0xF99C: +case 0xF99D: +case 0xF99E: +case 0xF99F: +case 0xF9A0: +case 0xF9A1: +case 0xF9A2: +case 0xF9A3: +case 0xF9A4: +case 0xF9A5: +case 0xF9A6: +case 0xF9A7: +case 0xF9A8: +case 0xF9A9: +case 0xF9AA: +case 0xF9AB: +case 0xF9AC: +case 0xF9AD: +case 0xF9AE: +case 0xF9AF: +case 0xF9B0: +case 0xF9B1: +case 0xF9B2: +case 0xF9B3: +case 0xF9B4: +case 0xF9B5: +case 0xF9B6: +case 0xF9B7: +case 0xF9B8: +case 0xF9B9: +case 0xF9BA: +case 0xF9BB: +case 0xF9BC: +case 0xF9BD: +case 0xF9BE: +case 0xF9BF: +case 0xF9C0: +case 0xF9C1: +case 0xF9C2: +case 0xF9C3: +case 0xF9C4: +case 0xF9C5: +case 0xF9C6: +case 0xF9C7: +case 0xF9C8: +case 0xF9C9: +case 0xF9CA: +case 0xF9CB: +case 0xF9CC: +case 0xF9CD: +case 0xF9CE: +case 0xF9CF: +case 0xF9D0: +case 0xF9D1: +case 0xF9D2: +case 0xF9D3: +case 0xF9D4: +case 0xF9D5: +case 0xF9D6: +case 0xF9D7: +case 0xF9D8: +case 0xF9D9: +case 0xF9DA: +case 0xF9DB: +case 0xF9DC: +case 0xF9DD: +case 0xF9DE: +case 0xF9DF: +case 0xF9E0: +case 0xF9E1: +case 0xF9E2: +case 0xF9E3: +case 0xF9E4: +case 0xF9E5: +case 0xF9E6: +case 0xF9E7: +case 0xF9E8: +case 0xF9E9: +case 0xF9EA: +case 0xF9EB: +case 0xF9EC: +case 0xF9ED: +case 0xF9EE: +case 0xF9EF: +case 0xF9F0: +case 0xF9F1: +case 0xF9F2: +case 0xF9F3: +case 0xF9F4: +case 0xF9F5: +case 0xF9F6: +case 0xF9F7: +case 0xF9F8: +case 0xF9F9: +case 0xF9FA: +case 0xF9FB: +case 0xF9FC: +case 0xF9FD: +case 0xF9FE: +case 0xF9FF: +case 0xFA00: +case 0xFA01: +case 0xFA02: +case 0xFA03: +case 0xFA04: +case 0xFA05: +case 0xFA06: +case 0xFA07: +case 0xFA08: +case 0xFA09: +case 0xFA0A: +case 0xFA0B: +case 0xFA0C: +case 0xFA0D: +case 0xFA0E: +case 0xFA0F: +case 0xFA10: +case 0xFA11: +case 0xFA12: +case 0xFA13: +case 0xFA14: +case 0xFA15: +case 0xFA16: +case 0xFA17: +case 0xFA18: +case 0xFA19: +case 0xFA1A: +case 0xFA1B: +case 0xFA1C: +case 0xFA1D: +case 0xFA1E: +case 0xFA1F: +case 0xFA20: +case 0xFA21: +case 0xFA22: +case 0xFA23: +case 0xFA24: +case 0xFA25: +case 0xFA26: +case 0xFA27: +case 0xFA28: +case 0xFA29: +case 0xFA2A: +case 0xFA2B: +case 0xFA2C: +case 0xFA2D: +case 0xFA2E: +case 0xFA2F: +case 0xFA30: +case 0xFA31: +case 0xFA32: +case 0xFA33: +case 0xFA34: +case 0xFA35: +case 0xFA36: +case 0xFA37: +case 0xFA38: +case 0xFA39: +case 0xFA3A: +case 0xFA3B: +case 0xFA3C: +case 0xFA3D: +case 0xFA3E: +case 0xFA3F: +case 0xFA40: +case 0xFA41: +case 0xFA42: +case 0xFA43: +case 0xFA44: +case 0xFA45: +case 0xFA46: +case 0xFA47: +case 0xFA48: +case 0xFA49: +case 0xFA4A: +case 0xFA4B: +case 0xFA4C: +case 0xFA4D: +case 0xFA4E: +case 0xFA4F: +case 0xFA50: +case 0xFA51: +case 0xFA52: +case 0xFA53: +case 0xFA54: +case 0xFA55: +case 0xFA56: +case 0xFA57: +case 0xFA58: +case 0xFA59: +case 0xFA5A: +case 0xFA5B: +case 0xFA5C: +case 0xFA5D: +case 0xFA5E: +case 0xFA5F: +case 0xFA60: +case 0xFA61: +case 0xFA62: +case 0xFA63: +case 0xFA64: +case 0xFA65: +case 0xFA66: +case 0xFA67: +case 0xFA68: +case 0xFA69: +case 0xFA6A: +case 0xFA6B: +case 0xFA6C: +case 0xFA6D: +case 0xFA6E: +case 0xFA6F: +case 0xFA70: +case 0xFA71: +case 0xFA72: +case 0xFA73: +case 0xFA74: +case 0xFA75: +case 0xFA76: +case 0xFA77: +case 0xFA78: +case 0xFA79: +case 0xFA7A: +case 0xFA7B: +case 0xFA7C: +case 0xFA7D: +case 0xFA7E: +case 0xFA7F: +case 0xFA80: +case 0xFA81: +case 0xFA82: +case 0xFA83: +case 0xFA84: +case 0xFA85: +case 0xFA86: +case 0xFA87: +case 0xFA88: +case 0xFA89: +case 0xFA8A: +case 0xFA8B: +case 0xFA8C: +case 0xFA8D: +case 0xFA8E: +case 0xFA8F: +case 0xFA90: +case 0xFA91: +case 0xFA92: +case 0xFA93: +case 0xFA94: +case 0xFA95: +case 0xFA96: +case 0xFA97: +case 0xFA98: +case 0xFA99: +case 0xFA9A: +case 0xFA9B: +case 0xFA9C: +case 0xFA9D: +case 0xFA9E: +case 0xFA9F: +case 0xFAA0: +case 0xFAA1: +case 0xFAA2: +case 0xFAA3: +case 0xFAA4: +case 0xFAA5: +case 0xFAA6: +case 0xFAA7: +case 0xFAA8: +case 0xFAA9: +case 0xFAAA: +case 0xFAAB: +case 0xFAAC: +case 0xFAAD: +case 0xFAAE: +case 0xFAAF: +case 0xFAB0: +case 0xFAB1: +case 0xFAB2: +case 0xFAB3: +case 0xFAB4: +case 0xFAB5: +case 0xFAB6: +case 0xFAB7: +case 0xFAB8: +case 0xFAB9: +case 0xFABA: +case 0xFABB: +case 0xFABC: +case 0xFABD: +case 0xFABE: +case 0xFABF: +case 0xFAC0: +case 0xFAC1: +case 0xFAC2: +case 0xFAC3: +case 0xFAC4: +case 0xFAC5: +case 0xFAC6: +case 0xFAC7: +case 0xFAC8: +case 0xFAC9: +case 0xFACA: +case 0xFACB: +case 0xFACC: +case 0xFACD: +case 0xFACE: +case 0xFACF: +case 0xFAD0: +case 0xFAD1: +case 0xFAD2: +case 0xFAD3: +case 0xFAD4: +case 0xFAD5: +case 0xFAD6: +case 0xFAD7: +case 0xFAD8: +case 0xFAD9: +case 0xFADA: +case 0xFADB: +case 0xFADC: +case 0xFADD: +case 0xFADE: +case 0xFADF: +case 0xFAE0: +case 0xFAE1: +case 0xFAE2: +case 0xFAE3: +case 0xFAE4: +case 0xFAE5: +case 0xFAE6: +case 0xFAE7: +case 0xFAE8: +case 0xFAE9: +case 0xFAEA: +case 0xFAEB: +case 0xFAEC: +case 0xFAED: +case 0xFAEE: +case 0xFAEF: +case 0xFAF0: +case 0xFAF1: +case 0xFAF2: +case 0xFAF3: +case 0xFAF4: +case 0xFAF5: +case 0xFAF6: +case 0xFAF7: +case 0xFAF8: +case 0xFAF9: +case 0xFAFA: +case 0xFAFB: +case 0xFAFC: +case 0xFAFD: +case 0xFAFE: +case 0xFAFF: +case 0xFB00: +case 0xFB01: +case 0xFB02: +case 0xFB03: +case 0xFB04: +case 0xFB05: +case 0xFB06: +case 0xFB07: +case 0xFB08: +case 0xFB09: +case 0xFB0A: +case 0xFB0B: +case 0xFB0C: +case 0xFB0D: +case 0xFB0E: +case 0xFB0F: +case 0xFB10: +case 0xFB11: +case 0xFB12: +case 0xFB13: +case 0xFB14: +case 0xFB15: +case 0xFB16: +case 0xFB17: +case 0xFB18: +case 0xFB19: +case 0xFB1A: +case 0xFB1B: +case 0xFB1C: +case 0xFB1D: +case 0xFB1E: +case 0xFB1F: +case 0xFB20: +case 0xFB21: +case 0xFB22: +case 0xFB23: +case 0xFB24: +case 0xFB25: +case 0xFB26: +case 0xFB27: +case 0xFB28: +case 0xFB29: +case 0xFB2A: +case 0xFB2B: +case 0xFB2C: +case 0xFB2D: +case 0xFB2E: +case 0xFB2F: +case 0xFB30: +case 0xFB31: +case 0xFB32: +case 0xFB33: +case 0xFB34: +case 0xFB35: +case 0xFB36: +case 0xFB37: +case 0xFB38: +case 0xFB39: +case 0xFB3A: +case 0xFB3B: +case 0xFB3C: +case 0xFB3D: +case 0xFB3E: +case 0xFB3F: +case 0xFB40: +case 0xFB41: +case 0xFB42: +case 0xFB43: +case 0xFB44: +case 0xFB45: +case 0xFB46: +case 0xFB47: +case 0xFB48: +case 0xFB49: +case 0xFB4A: +case 0xFB4B: +case 0xFB4C: +case 0xFB4D: +case 0xFB4E: +case 0xFB4F: +case 0xFB50: +case 0xFB51: +case 0xFB52: +case 0xFB53: +case 0xFB54: +case 0xFB55: +case 0xFB56: +case 0xFB57: +case 0xFB58: +case 0xFB59: +case 0xFB5A: +case 0xFB5B: +case 0xFB5C: +case 0xFB5D: +case 0xFB5E: +case 0xFB5F: +case 0xFB60: +case 0xFB61: +case 0xFB62: +case 0xFB63: +case 0xFB64: +case 0xFB65: +case 0xFB66: +case 0xFB67: +case 0xFB68: +case 0xFB69: +case 0xFB6A: +case 0xFB6B: +case 0xFB6C: +case 0xFB6D: +case 0xFB6E: +case 0xFB6F: +case 0xFB70: +case 0xFB71: +case 0xFB72: +case 0xFB73: +case 0xFB74: +case 0xFB75: +case 0xFB76: +case 0xFB77: +case 0xFB78: +case 0xFB79: +case 0xFB7A: +case 0xFB7B: +case 0xFB7C: +case 0xFB7D: +case 0xFB7E: +case 0xFB7F: +case 0xFB80: +case 0xFB81: +case 0xFB82: +case 0xFB83: +case 0xFB84: +case 0xFB85: +case 0xFB86: +case 0xFB87: +case 0xFB88: +case 0xFB89: +case 0xFB8A: +case 0xFB8B: +case 0xFB8C: +case 0xFB8D: +case 0xFB8E: +case 0xFB8F: +case 0xFB90: +case 0xFB91: +case 0xFB92: +case 0xFB93: +case 0xFB94: +case 0xFB95: +case 0xFB96: +case 0xFB97: +case 0xFB98: +case 0xFB99: +case 0xFB9A: +case 0xFB9B: +case 0xFB9C: +case 0xFB9D: +case 0xFB9E: +case 0xFB9F: +case 0xFBA0: +case 0xFBA1: +case 0xFBA2: +case 0xFBA3: +case 0xFBA4: +case 0xFBA5: +case 0xFBA6: +case 0xFBA7: +case 0xFBA8: +case 0xFBA9: +case 0xFBAA: +case 0xFBAB: +case 0xFBAC: +case 0xFBAD: +case 0xFBAE: +case 0xFBAF: +case 0xFBB0: +case 0xFBB1: +case 0xFBB2: +case 0xFBB3: +case 0xFBB4: +case 0xFBB5: +case 0xFBB6: +case 0xFBB7: +case 0xFBB8: +case 0xFBB9: +case 0xFBBA: +case 0xFBBB: +case 0xFBBC: +case 0xFBBD: +case 0xFBBE: +case 0xFBBF: +case 0xFBC0: +case 0xFBC1: +case 0xFBC2: +case 0xFBC3: +case 0xFBC4: +case 0xFBC5: +case 0xFBC6: +case 0xFBC7: +case 0xFBC8: +case 0xFBC9: +case 0xFBCA: +case 0xFBCB: +case 0xFBCC: +case 0xFBCD: +case 0xFBCE: +case 0xFBCF: +case 0xFBD0: +case 0xFBD1: +case 0xFBD2: +case 0xFBD3: +case 0xFBD4: +case 0xFBD5: +case 0xFBD6: +case 0xFBD7: +case 0xFBD8: +case 0xFBD9: +case 0xFBDA: +case 0xFBDB: +case 0xFBDC: +case 0xFBDD: +case 0xFBDE: +case 0xFBDF: +case 0xFBE0: +case 0xFBE1: +case 0xFBE2: +case 0xFBE3: +case 0xFBE4: +case 0xFBE5: +case 0xFBE6: +case 0xFBE7: +case 0xFBE8: +case 0xFBE9: +case 0xFBEA: +case 0xFBEB: +case 0xFBEC: +case 0xFBED: +case 0xFBEE: +case 0xFBEF: +case 0xFBF0: +case 0xFBF1: +case 0xFBF2: +case 0xFBF3: +case 0xFBF4: +case 0xFBF5: +case 0xFBF6: +case 0xFBF7: +case 0xFBF8: +case 0xFBF9: +case 0xFBFA: +case 0xFBFB: +case 0xFBFC: +case 0xFBFD: +case 0xFBFE: +case 0xFBFF: +case 0xFC00: +case 0xFC01: +case 0xFC02: +case 0xFC03: +case 0xFC04: +case 0xFC05: +case 0xFC06: +case 0xFC07: +case 0xFC08: +case 0xFC09: +case 0xFC0A: +case 0xFC0B: +case 0xFC0C: +case 0xFC0D: +case 0xFC0E: +case 0xFC0F: +case 0xFC10: +case 0xFC11: +case 0xFC12: +case 0xFC13: +case 0xFC14: +case 0xFC15: +case 0xFC16: +case 0xFC17: +case 0xFC18: +case 0xFC19: +case 0xFC1A: +case 0xFC1B: +case 0xFC1C: +case 0xFC1D: +case 0xFC1E: +case 0xFC1F: +case 0xFC20: +case 0xFC21: +case 0xFC22: +case 0xFC23: +case 0xFC24: +case 0xFC25: +case 0xFC26: +case 0xFC27: +case 0xFC28: +case 0xFC29: +case 0xFC2A: +case 0xFC2B: +case 0xFC2C: +case 0xFC2D: +case 0xFC2E: +case 0xFC2F: +case 0xFC30: +case 0xFC31: +case 0xFC32: +case 0xFC33: +case 0xFC34: +case 0xFC35: +case 0xFC36: +case 0xFC37: +case 0xFC38: +case 0xFC39: +case 0xFC3A: +case 0xFC3B: +case 0xFC3C: +case 0xFC3D: +case 0xFC3E: +case 0xFC3F: +case 0xFC40: +case 0xFC41: +case 0xFC42: +case 0xFC43: +case 0xFC44: +case 0xFC45: +case 0xFC46: +case 0xFC47: +case 0xFC48: +case 0xFC49: +case 0xFC4A: +case 0xFC4B: +case 0xFC4C: +case 0xFC4D: +case 0xFC4E: +case 0xFC4F: +case 0xFC50: +case 0xFC51: +case 0xFC52: +case 0xFC53: +case 0xFC54: +case 0xFC55: +case 0xFC56: +case 0xFC57: +case 0xFC58: +case 0xFC59: +case 0xFC5A: +case 0xFC5B: +case 0xFC5C: +case 0xFC5D: +case 0xFC5E: +case 0xFC5F: +case 0xFC60: +case 0xFC61: +case 0xFC62: +case 0xFC63: +case 0xFC64: +case 0xFC65: +case 0xFC66: +case 0xFC67: +case 0xFC68: +case 0xFC69: +case 0xFC6A: +case 0xFC6B: +case 0xFC6C: +case 0xFC6D: +case 0xFC6E: +case 0xFC6F: +case 0xFC70: +case 0xFC71: +case 0xFC72: +case 0xFC73: +case 0xFC74: +case 0xFC75: +case 0xFC76: +case 0xFC77: +case 0xFC78: +case 0xFC79: +case 0xFC7A: +case 0xFC7B: +case 0xFC7C: +case 0xFC7D: +case 0xFC7E: +case 0xFC7F: +case 0xFC80: +case 0xFC81: +case 0xFC82: +case 0xFC83: +case 0xFC84: +case 0xFC85: +case 0xFC86: +case 0xFC87: +case 0xFC88: +case 0xFC89: +case 0xFC8A: +case 0xFC8B: +case 0xFC8C: +case 0xFC8D: +case 0xFC8E: +case 0xFC8F: +case 0xFC90: +case 0xFC91: +case 0xFC92: +case 0xFC93: +case 0xFC94: +case 0xFC95: +case 0xFC96: +case 0xFC97: +case 0xFC98: +case 0xFC99: +case 0xFC9A: +case 0xFC9B: +case 0xFC9C: +case 0xFC9D: +case 0xFC9E: +case 0xFC9F: +case 0xFCA0: +case 0xFCA1: +case 0xFCA2: +case 0xFCA3: +case 0xFCA4: +case 0xFCA5: +case 0xFCA6: +case 0xFCA7: +case 0xFCA8: +case 0xFCA9: +case 0xFCAA: +case 0xFCAB: +case 0xFCAC: +case 0xFCAD: +case 0xFCAE: +case 0xFCAF: +case 0xFCB0: +case 0xFCB1: +case 0xFCB2: +case 0xFCB3: +case 0xFCB4: +case 0xFCB5: +case 0xFCB6: +case 0xFCB7: +case 0xFCB8: +case 0xFCB9: +case 0xFCBA: +case 0xFCBB: +case 0xFCBC: +case 0xFCBD: +case 0xFCBE: +case 0xFCBF: +case 0xFCC0: +case 0xFCC1: +case 0xFCC2: +case 0xFCC3: +case 0xFCC4: +case 0xFCC5: +case 0xFCC6: +case 0xFCC7: +case 0xFCC8: +case 0xFCC9: +case 0xFCCA: +case 0xFCCB: +case 0xFCCC: +case 0xFCCD: +case 0xFCCE: +case 0xFCCF: +case 0xFCD0: +case 0xFCD1: +case 0xFCD2: +case 0xFCD3: +case 0xFCD4: +case 0xFCD5: +case 0xFCD6: +case 0xFCD7: +case 0xFCD8: +case 0xFCD9: +case 0xFCDA: +case 0xFCDB: +case 0xFCDC: +case 0xFCDD: +case 0xFCDE: +case 0xFCDF: +case 0xFCE0: +case 0xFCE1: +case 0xFCE2: +case 0xFCE3: +case 0xFCE4: +case 0xFCE5: +case 0xFCE6: +case 0xFCE7: +case 0xFCE8: +case 0xFCE9: +case 0xFCEA: +case 0xFCEB: +case 0xFCEC: +case 0xFCED: +case 0xFCEE: +case 0xFCEF: +case 0xFCF0: +case 0xFCF1: +case 0xFCF2: +case 0xFCF3: +case 0xFCF4: +case 0xFCF5: +case 0xFCF6: +case 0xFCF7: +case 0xFCF8: +case 0xFCF9: +case 0xFCFA: +case 0xFCFB: +case 0xFCFC: +case 0xFCFD: +case 0xFCFE: +case 0xFCFF: +case 0xFD00: +case 0xFD01: +case 0xFD02: +case 0xFD03: +case 0xFD04: +case 0xFD05: +case 0xFD06: +case 0xFD07: +case 0xFD08: +case 0xFD09: +case 0xFD0A: +case 0xFD0B: +case 0xFD0C: +case 0xFD0D: +case 0xFD0E: +case 0xFD0F: +case 0xFD10: +case 0xFD11: +case 0xFD12: +case 0xFD13: +case 0xFD14: +case 0xFD15: +case 0xFD16: +case 0xFD17: +case 0xFD18: +case 0xFD19: +case 0xFD1A: +case 0xFD1B: +case 0xFD1C: +case 0xFD1D: +case 0xFD1E: +case 0xFD1F: +case 0xFD20: +case 0xFD21: +case 0xFD22: +case 0xFD23: +case 0xFD24: +case 0xFD25: +case 0xFD26: +case 0xFD27: +case 0xFD28: +case 0xFD29: +case 0xFD2A: +case 0xFD2B: +case 0xFD2C: +case 0xFD2D: +case 0xFD2E: +case 0xFD2F: +case 0xFD30: +case 0xFD31: +case 0xFD32: +case 0xFD33: +case 0xFD34: +case 0xFD35: +case 0xFD36: +case 0xFD37: +case 0xFD38: +case 0xFD39: +case 0xFD3A: +case 0xFD3B: +case 0xFD3C: +case 0xFD3D: +case 0xFD3E: +case 0xFD3F: +case 0xFD40: +case 0xFD41: +case 0xFD42: +case 0xFD43: +case 0xFD44: +case 0xFD45: +case 0xFD46: +case 0xFD47: +case 0xFD48: +case 0xFD49: +case 0xFD4A: +case 0xFD4B: +case 0xFD4C: +case 0xFD4D: +case 0xFD4E: +case 0xFD4F: +case 0xFD50: +case 0xFD51: +case 0xFD52: +case 0xFD53: +case 0xFD54: +case 0xFD55: +case 0xFD56: +case 0xFD57: +case 0xFD58: +case 0xFD59: +case 0xFD5A: +case 0xFD5B: +case 0xFD5C: +case 0xFD5D: +case 0xFD5E: +case 0xFD5F: +case 0xFD60: +case 0xFD61: +case 0xFD62: +case 0xFD63: +case 0xFD64: +case 0xFD65: +case 0xFD66: +case 0xFD67: +case 0xFD68: +case 0xFD69: +case 0xFD6A: +case 0xFD6B: +case 0xFD6C: +case 0xFD6D: +case 0xFD6E: +case 0xFD6F: +case 0xFD70: +case 0xFD71: +case 0xFD72: +case 0xFD73: +case 0xFD74: +case 0xFD75: +case 0xFD76: +case 0xFD77: +case 0xFD78: +case 0xFD79: +case 0xFD7A: +case 0xFD7B: +case 0xFD7C: +case 0xFD7D: +case 0xFD7E: +case 0xFD7F: +case 0xFD80: +case 0xFD81: +case 0xFD82: +case 0xFD83: +case 0xFD84: +case 0xFD85: +case 0xFD86: +case 0xFD87: +case 0xFD88: +case 0xFD89: +case 0xFD8A: +case 0xFD8B: +case 0xFD8C: +case 0xFD8D: +case 0xFD8E: +case 0xFD8F: +case 0xFD90: +case 0xFD91: +case 0xFD92: +case 0xFD93: +case 0xFD94: +case 0xFD95: +case 0xFD96: +case 0xFD97: +case 0xFD98: +case 0xFD99: +case 0xFD9A: +case 0xFD9B: +case 0xFD9C: +case 0xFD9D: +case 0xFD9E: +case 0xFD9F: +case 0xFDA0: +case 0xFDA1: +case 0xFDA2: +case 0xFDA3: +case 0xFDA4: +case 0xFDA5: +case 0xFDA6: +case 0xFDA7: +case 0xFDA8: +case 0xFDA9: +case 0xFDAA: +case 0xFDAB: +case 0xFDAC: +case 0xFDAD: +case 0xFDAE: +case 0xFDAF: +case 0xFDB0: +case 0xFDB1: +case 0xFDB2: +case 0xFDB3: +case 0xFDB4: +case 0xFDB5: +case 0xFDB6: +case 0xFDB7: +case 0xFDB8: +case 0xFDB9: +case 0xFDBA: +case 0xFDBB: +case 0xFDBC: +case 0xFDBD: +case 0xFDBE: +case 0xFDBF: +case 0xFDC0: +case 0xFDC1: +case 0xFDC2: +case 0xFDC3: +case 0xFDC4: +case 0xFDC5: +case 0xFDC6: +case 0xFDC7: +case 0xFDC8: +case 0xFDC9: +case 0xFDCA: +case 0xFDCB: +case 0xFDCC: +case 0xFDCD: +case 0xFDCE: +case 0xFDCF: +case 0xFDD0: +case 0xFDD1: +case 0xFDD2: +case 0xFDD3: +case 0xFDD4: +case 0xFDD5: +case 0xFDD6: +case 0xFDD7: +case 0xFDD8: +case 0xFDD9: +case 0xFDDA: +case 0xFDDB: +case 0xFDDC: +case 0xFDDD: +case 0xFDDE: +case 0xFDDF: +case 0xFDE0: +case 0xFDE1: +case 0xFDE2: +case 0xFDE3: +case 0xFDE4: +case 0xFDE5: +case 0xFDE6: +case 0xFDE7: +case 0xFDE8: +case 0xFDE9: +case 0xFDEA: +case 0xFDEB: +case 0xFDEC: +case 0xFDED: +case 0xFDEE: +case 0xFDEF: +case 0xFDF0: +case 0xFDF1: +case 0xFDF2: +case 0xFDF3: +case 0xFDF4: +case 0xFDF5: +case 0xFDF6: +case 0xFDF7: +case 0xFDF8: +case 0xFDF9: +case 0xFDFA: +case 0xFDFB: +case 0xFDFC: +case 0xFDFD: +case 0xFDFE: +case 0xFDFF: +case 0xFE00: +case 0xFE01: +case 0xFE02: +case 0xFE03: +case 0xFE04: +case 0xFE05: +case 0xFE06: +case 0xFE07: +case 0xFE08: +case 0xFE09: +case 0xFE0A: +case 0xFE0B: +case 0xFE0C: +case 0xFE0D: +case 0xFE0E: +case 0xFE0F: +case 0xFE10: +case 0xFE11: +case 0xFE12: +case 0xFE13: +case 0xFE14: +case 0xFE15: +case 0xFE16: +case 0xFE17: +case 0xFE18: +case 0xFE19: +case 0xFE1A: +case 0xFE1B: +case 0xFE1C: +case 0xFE1D: +case 0xFE1E: +case 0xFE1F: +case 0xFE20: +case 0xFE21: +case 0xFE22: +case 0xFE23: +case 0xFE24: +case 0xFE25: +case 0xFE26: +case 0xFE27: +case 0xFE28: +case 0xFE29: +case 0xFE2A: +case 0xFE2B: +case 0xFE2C: +case 0xFE2D: +case 0xFE2E: +case 0xFE2F: +case 0xFE30: +case 0xFE31: +case 0xFE32: +case 0xFE33: +case 0xFE34: +case 0xFE35: +case 0xFE36: +case 0xFE37: +case 0xFE38: +case 0xFE39: +case 0xFE3A: +case 0xFE3B: +case 0xFE3C: +case 0xFE3D: +case 0xFE3E: +case 0xFE3F: +case 0xFE40: +case 0xFE41: +case 0xFE42: +case 0xFE43: +case 0xFE44: +case 0xFE45: +case 0xFE46: +case 0xFE47: +case 0xFE48: +case 0xFE49: +case 0xFE4A: +case 0xFE4B: +case 0xFE4C: +case 0xFE4D: +case 0xFE4E: +case 0xFE4F: +case 0xFE50: +case 0xFE51: +case 0xFE52: +case 0xFE53: +case 0xFE54: +case 0xFE55: +case 0xFE56: +case 0xFE57: +case 0xFE58: +case 0xFE59: +case 0xFE5A: +case 0xFE5B: +case 0xFE5C: +case 0xFE5D: +case 0xFE5E: +case 0xFE5F: +case 0xFE60: +case 0xFE61: +case 0xFE62: +case 0xFE63: +case 0xFE64: +case 0xFE65: +case 0xFE66: +case 0xFE67: +case 0xFE68: +case 0xFE69: +case 0xFE6A: +case 0xFE6B: +case 0xFE6C: +case 0xFE6D: +case 0xFE6E: +case 0xFE6F: +case 0xFE70: +case 0xFE71: +case 0xFE72: +case 0xFE73: +case 0xFE74: +case 0xFE75: +case 0xFE76: +case 0xFE77: +case 0xFE78: +case 0xFE79: +case 0xFE7A: +case 0xFE7B: +case 0xFE7C: +case 0xFE7D: +case 0xFE7E: +case 0xFE7F: +case 0xFE80: +case 0xFE81: +case 0xFE82: +case 0xFE83: +case 0xFE84: +case 0xFE85: +case 0xFE86: +case 0xFE87: +case 0xFE88: +case 0xFE89: +case 0xFE8A: +case 0xFE8B: +case 0xFE8C: +case 0xFE8D: +case 0xFE8E: +case 0xFE8F: +case 0xFE90: +case 0xFE91: +case 0xFE92: +case 0xFE93: +case 0xFE94: +case 0xFE95: +case 0xFE96: +case 0xFE97: +case 0xFE98: +case 0xFE99: +case 0xFE9A: +case 0xFE9B: +case 0xFE9C: +case 0xFE9D: +case 0xFE9E: +case 0xFE9F: +case 0xFEA0: +case 0xFEA1: +case 0xFEA2: +case 0xFEA3: +case 0xFEA4: +case 0xFEA5: +case 0xFEA6: +case 0xFEA7: +case 0xFEA8: +case 0xFEA9: +case 0xFEAA: +case 0xFEAB: +case 0xFEAC: +case 0xFEAD: +case 0xFEAE: +case 0xFEAF: +case 0xFEB0: +case 0xFEB1: +case 0xFEB2: +case 0xFEB3: +case 0xFEB4: +case 0xFEB5: +case 0xFEB6: +case 0xFEB7: +case 0xFEB8: +case 0xFEB9: +case 0xFEBA: +case 0xFEBB: +case 0xFEBC: +case 0xFEBD: +case 0xFEBE: +case 0xFEBF: +case 0xFEC0: +case 0xFEC1: +case 0xFEC2: +case 0xFEC3: +case 0xFEC4: +case 0xFEC5: +case 0xFEC6: +case 0xFEC7: +case 0xFEC8: +case 0xFEC9: +case 0xFECA: +case 0xFECB: +case 0xFECC: +case 0xFECD: +case 0xFECE: +case 0xFECF: +case 0xFED0: +case 0xFED1: +case 0xFED2: +case 0xFED3: +case 0xFED4: +case 0xFED5: +case 0xFED6: +case 0xFED7: +case 0xFED8: +case 0xFED9: +case 0xFEDA: +case 0xFEDB: +case 0xFEDC: +case 0xFEDD: +case 0xFEDE: +case 0xFEDF: +case 0xFEE0: +case 0xFEE1: +case 0xFEE2: +case 0xFEE3: +case 0xFEE4: +case 0xFEE5: +case 0xFEE6: +case 0xFEE7: +case 0xFEE8: +case 0xFEE9: +case 0xFEEA: +case 0xFEEB: +case 0xFEEC: +case 0xFEED: +case 0xFEEE: +case 0xFEEF: +case 0xFEF0: +case 0xFEF1: +case 0xFEF2: +case 0xFEF3: +case 0xFEF4: +case 0xFEF5: +case 0xFEF6: +case 0xFEF7: +case 0xFEF8: +case 0xFEF9: +case 0xFEFA: +case 0xFEFB: +case 0xFEFC: +case 0xFEFD: +case 0xFEFE: +case 0xFEFF: +case 0xFF00: +case 0xFF01: +case 0xFF02: +case 0xFF03: +case 0xFF04: +case 0xFF05: +case 0xFF06: +case 0xFF07: +case 0xFF08: +case 0xFF09: +case 0xFF0A: +case 0xFF0B: +case 0xFF0C: +case 0xFF0D: +case 0xFF0E: +case 0xFF0F: +case 0xFF10: +case 0xFF11: +case 0xFF12: +case 0xFF13: +case 0xFF14: +case 0xFF15: +case 0xFF16: +case 0xFF17: +case 0xFF18: +case 0xFF19: +case 0xFF1A: +case 0xFF1B: +case 0xFF1C: +case 0xFF1D: +case 0xFF1E: +case 0xFF1F: +case 0xFF20: +case 0xFF21: +case 0xFF22: +case 0xFF23: +case 0xFF24: +case 0xFF25: +case 0xFF26: +case 0xFF27: +case 0xFF28: +case 0xFF29: +case 0xFF2A: +case 0xFF2B: +case 0xFF2C: +case 0xFF2D: +case 0xFF2E: +case 0xFF2F: +case 0xFF30: +case 0xFF31: +case 0xFF32: +case 0xFF33: +case 0xFF34: +case 0xFF35: +case 0xFF36: +case 0xFF37: +case 0xFF38: +case 0xFF39: +case 0xFF3A: +case 0xFF3B: +case 0xFF3C: +case 0xFF3D: +case 0xFF3E: +case 0xFF3F: +case 0xFF40: +case 0xFF41: +case 0xFF42: +case 0xFF43: +case 0xFF44: +case 0xFF45: +case 0xFF46: +case 0xFF47: +case 0xFF48: +case 0xFF49: +case 0xFF4A: +case 0xFF4B: +case 0xFF4C: +case 0xFF4D: +case 0xFF4E: +case 0xFF4F: +case 0xFF50: +case 0xFF51: +case 0xFF52: +case 0xFF53: +case 0xFF54: +case 0xFF55: +case 0xFF56: +case 0xFF57: +case 0xFF58: +case 0xFF59: +case 0xFF5A: +case 0xFF5B: +case 0xFF5C: +case 0xFF5D: +case 0xFF5E: +case 0xFF5F: +case 0xFF60: +case 0xFF61: +case 0xFF62: +case 0xFF63: +case 0xFF64: +case 0xFF65: +case 0xFF66: +case 0xFF67: +case 0xFF68: +case 0xFF69: +case 0xFF6A: +case 0xFF6B: +case 0xFF6C: +case 0xFF6D: +case 0xFF6E: +case 0xFF6F: +case 0xFF70: +case 0xFF71: +case 0xFF72: +case 0xFF73: +case 0xFF74: +case 0xFF75: +case 0xFF76: +case 0xFF77: +case 0xFF78: +case 0xFF79: +case 0xFF7A: +case 0xFF7B: +case 0xFF7C: +case 0xFF7D: +case 0xFF7E: +case 0xFF7F: +case 0xFF80: +case 0xFF81: +case 0xFF82: +case 0xFF83: +case 0xFF84: +case 0xFF85: +case 0xFF86: +case 0xFF87: +case 0xFF88: +case 0xFF89: +case 0xFF8A: +case 0xFF8B: +case 0xFF8C: +case 0xFF8D: +case 0xFF8E: +case 0xFF8F: +case 0xFF90: +case 0xFF91: +case 0xFF92: +case 0xFF93: +case 0xFF94: +case 0xFF95: +case 0xFF96: +case 0xFF97: +case 0xFF98: +case 0xFF99: +case 0xFF9A: +case 0xFF9B: +case 0xFF9C: +case 0xFF9D: +case 0xFF9E: +case 0xFF9F: +case 0xFFA0: +case 0xFFA1: +case 0xFFA2: +case 0xFFA3: +case 0xFFA4: +case 0xFFA5: +case 0xFFA6: +case 0xFFA7: +case 0xFFA8: +case 0xFFA9: +case 0xFFAA: +case 0xFFAB: +case 0xFFAC: +case 0xFFAD: +case 0xFFAE: +case 0xFFAF: +case 0xFFB0: +case 0xFFB1: +case 0xFFB2: +case 0xFFB3: +case 0xFFB4: +case 0xFFB5: +case 0xFFB6: +case 0xFFB7: +case 0xFFB8: +case 0xFFB9: +case 0xFFBA: +case 0xFFBB: +case 0xFFBC: +case 0xFFBD: +case 0xFFBE: +case 0xFFBF: +case 0xFFC0: +case 0xFFC1: +case 0xFFC2: +case 0xFFC3: +case 0xFFC4: +case 0xFFC5: +case 0xFFC6: +case 0xFFC7: +case 0xFFC8: +case 0xFFC9: +case 0xFFCA: +case 0xFFCB: +case 0xFFCC: +case 0xFFCD: +case 0xFFCE: +case 0xFFCF: +case 0xFFD0: +case 0xFFD1: +case 0xFFD2: +case 0xFFD3: +case 0xFFD4: +case 0xFFD5: +case 0xFFD6: +case 0xFFD7: +case 0xFFD8: +case 0xFFD9: +case 0xFFDA: +case 0xFFDB: +case 0xFFDC: +case 0xFFDD: +case 0xFFDE: +case 0xFFDF: +case 0xFFE0: +case 0xFFE1: +case 0xFFE2: +case 0xFFE3: +case 0xFFE4: +case 0xFFE5: +case 0xFFE6: +case 0xFFE7: +case 0xFFE8: +case 0xFFE9: +case 0xFFEA: +case 0xFFEB: +case 0xFFEC: +case 0xFFED: +case 0xFFEE: +case 0xFFEF: +case 0xFFF0: +case 0xFFF1: +case 0xFFF2: +case 0xFFF3: +case 0xFFF4: +case 0xFFF5: +case 0xFFF6: +case 0xFFF7: +case 0xFFF8: +case 0xFFF9: +case 0xFFFA: +case 0xFFFB: +case 0xFFFC: +case 0xFFFD: +case 0xFFFE: +case 0xFFFF: + +// 1111 +case 0xF000: +{ + u32 res; + PC -= 2; + if (!CPU->flag_S) + { + res = CPU->USP; + CPU->USP = CPU->A[7]; + CPU->A[7] = res; + } + res = C68K_1111_EX; + timestamp += c68k_exception_cycle_table[res]; + PUSH_32_F(PC) + PUSH_16_F(GET_SR) + CPU->flag_S = C68K_SR_S; + READ_LONG_F(res * 4, PC) + SET_PC(PC) +} +RET(4) diff --git a/libmednahawk/src/hw_cpu/c68k/c68kexec.c b/libmednahawk/src/hw_cpu/c68k/c68kexec.c new file mode 100644 index 0000000000..7de6412582 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68kexec.c @@ -0,0 +1,167 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "c68k.h" + +// exception cycle table (taken from musashi core) +static const s32 c68k_exception_cycle_table[256] = +{ + 4, // 0: Reset - Initial Stack Pointer + 4, // 1: Reset - Initial Program Counter + 50, // 2: Bus Error + 50, // 3: Address Error + 34, // 4: Illegal Instruction + 38, // 5: Divide by Zero + 40, // 6: CHK + 34, // 7: TRAPV + 34, // 8: Privilege Violation + 34, // 9: Trace + 4, // 10: + 4, // 11: + 4, // 12: RESERVED + 4, // 13: Coprocessor Protocol Violation + 4, // 14: Format Error + 44, // 15: Uninitialized Interrupt + 4, // 16: RESERVED + 4, // 17: RESERVED + 4, // 18: RESERVED + 4, // 19: RESERVED + 4, // 20: RESERVED + 4, // 21: RESERVED + 4, // 22: RESERVED + 4, // 23: RESERVED + 44, // 24: Spurious Interrupt + 44, // 25: Level 1 Interrupt Autovector + 44, // 26: Level 2 Interrupt Autovector + 44, // 27: Level 3 Interrupt Autovector + 44, // 28: Level 4 Interrupt Autovector + 44, // 29: Level 5 Interrupt Autovector + 44, // 30: Level 6 Interrupt Autovector + 44, // 31: Level 7 Interrupt Autovector + 34, // 32: TRAP #0 + 34, // 33: TRAP #1 + 34, // 34: TRAP #2 + 34, // 35: TRAP #3 + 34, // 36: TRAP #4 + 34, // 37: TRAP #5 + 34, // 38: TRAP #6 + 34, // 39: TRAP #7 + 34, // 40: TRAP #8 + 34, // 41: TRAP #9 + 34, // 42: TRAP #10 + 34, // 43: TRAP #11 + 34, // 44: TRAP #12 + 34, // 45: TRAP #13 + 34, // 46: TRAP #14 + 34, // 47: TRAP #15 + 4, // 48: FP Branch or Set on Unknown Condition + 4, // 49: FP Inexact Result + 4, // 50: FP Divide by Zero + 4, // 51: FP Underflow + 4, // 52: FP Operand Error + 4, // 53: FP Overflow + 4, // 54: FP Signaling NAN + 4, // 55: FP Unimplemented Data Type + 4, // 56: MMU Configuration Error + 4, // 57: MMU Illegal Operation Error + 4, // 58: MMU Access Level Violation Error + 4, // 59: RESERVED + 4, // 60: RESERVED + 4, // 61: RESERVED + 4, // 62: RESERVED + 4, // 63: RESERVED + // 64-255: User Defined + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 +}; + +// include macro file +////////////////////// + +#include "c68kmac.inc" + +// main exec function +////////////////////// + +void C68K_FASTCALL C68k_Exec(c68k_struc *cpu) +{ + c68k_struc *CPU; + u32 PC; + u32 Opcode; + +#ifndef C68K_GEN + +#define timestamp cpu->timestamp + + CPU = cpu; + PC = CPU->PC; + + if (CPU->Status & (C68K_DISABLE | C68K_FAULTED)) + { + timestamp += 4; // Close enough >_> + return; + //return (CPU->Status | 0x80000000); + } + + CHECK_INT + + if (CPU->Status & (C68K_HALTED | C68K_WAITING)) + { + timestamp++; + return; + } + + Opcode = FETCH_WORD; + PC += 2; + + switch(Opcode) + { + #include "c68k_op0.inc" + #include "c68k_op1.inc" + #include "c68k_op2.inc" + #include "c68k_op3.inc" + #include "c68k_op4.inc" + #include "c68k_op5.inc" + #include "c68k_op6.inc" + #include "c68k_op7.inc" + #include "c68k_op8.inc" + #include "c68k_op9.inc" + #include "c68k_opA.inc" + #include "c68k_opB.inc" + #include "c68k_opC.inc" + #include "c68k_opD.inc" + #include "c68k_opE.inc" + #include "c68k_opF.inc" + } + +C68k_Exec_End: ; +C68k_Exec_Really_End: + CPU->PC = PC; + + return; + +#else + return; +#endif +} + diff --git a/libmednahawk/src/hw_cpu/c68k/c68kexec.cpp b/libmednahawk/src/hw_cpu/c68k/c68kexec.cpp new file mode 100644 index 0000000000..7de6412582 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68kexec.cpp @@ -0,0 +1,167 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "c68k.h" + +// exception cycle table (taken from musashi core) +static const s32 c68k_exception_cycle_table[256] = +{ + 4, // 0: Reset - Initial Stack Pointer + 4, // 1: Reset - Initial Program Counter + 50, // 2: Bus Error + 50, // 3: Address Error + 34, // 4: Illegal Instruction + 38, // 5: Divide by Zero + 40, // 6: CHK + 34, // 7: TRAPV + 34, // 8: Privilege Violation + 34, // 9: Trace + 4, // 10: + 4, // 11: + 4, // 12: RESERVED + 4, // 13: Coprocessor Protocol Violation + 4, // 14: Format Error + 44, // 15: Uninitialized Interrupt + 4, // 16: RESERVED + 4, // 17: RESERVED + 4, // 18: RESERVED + 4, // 19: RESERVED + 4, // 20: RESERVED + 4, // 21: RESERVED + 4, // 22: RESERVED + 4, // 23: RESERVED + 44, // 24: Spurious Interrupt + 44, // 25: Level 1 Interrupt Autovector + 44, // 26: Level 2 Interrupt Autovector + 44, // 27: Level 3 Interrupt Autovector + 44, // 28: Level 4 Interrupt Autovector + 44, // 29: Level 5 Interrupt Autovector + 44, // 30: Level 6 Interrupt Autovector + 44, // 31: Level 7 Interrupt Autovector + 34, // 32: TRAP #0 + 34, // 33: TRAP #1 + 34, // 34: TRAP #2 + 34, // 35: TRAP #3 + 34, // 36: TRAP #4 + 34, // 37: TRAP #5 + 34, // 38: TRAP #6 + 34, // 39: TRAP #7 + 34, // 40: TRAP #8 + 34, // 41: TRAP #9 + 34, // 42: TRAP #10 + 34, // 43: TRAP #11 + 34, // 44: TRAP #12 + 34, // 45: TRAP #13 + 34, // 46: TRAP #14 + 34, // 47: TRAP #15 + 4, // 48: FP Branch or Set on Unknown Condition + 4, // 49: FP Inexact Result + 4, // 50: FP Divide by Zero + 4, // 51: FP Underflow + 4, // 52: FP Operand Error + 4, // 53: FP Overflow + 4, // 54: FP Signaling NAN + 4, // 55: FP Unimplemented Data Type + 4, // 56: MMU Configuration Error + 4, // 57: MMU Illegal Operation Error + 4, // 58: MMU Access Level Violation Error + 4, // 59: RESERVED + 4, // 60: RESERVED + 4, // 61: RESERVED + 4, // 62: RESERVED + 4, // 63: RESERVED + // 64-255: User Defined + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 +}; + +// include macro file +////////////////////// + +#include "c68kmac.inc" + +// main exec function +////////////////////// + +void C68K_FASTCALL C68k_Exec(c68k_struc *cpu) +{ + c68k_struc *CPU; + u32 PC; + u32 Opcode; + +#ifndef C68K_GEN + +#define timestamp cpu->timestamp + + CPU = cpu; + PC = CPU->PC; + + if (CPU->Status & (C68K_DISABLE | C68K_FAULTED)) + { + timestamp += 4; // Close enough >_> + return; + //return (CPU->Status | 0x80000000); + } + + CHECK_INT + + if (CPU->Status & (C68K_HALTED | C68K_WAITING)) + { + timestamp++; + return; + } + + Opcode = FETCH_WORD; + PC += 2; + + switch(Opcode) + { + #include "c68k_op0.inc" + #include "c68k_op1.inc" + #include "c68k_op2.inc" + #include "c68k_op3.inc" + #include "c68k_op4.inc" + #include "c68k_op5.inc" + #include "c68k_op6.inc" + #include "c68k_op7.inc" + #include "c68k_op8.inc" + #include "c68k_op9.inc" + #include "c68k_opA.inc" + #include "c68k_opB.inc" + #include "c68k_opC.inc" + #include "c68k_opD.inc" + #include "c68k_opE.inc" + #include "c68k_opF.inc" + } + +C68k_Exec_End: ; +C68k_Exec_Really_End: + CPU->PC = PC; + + return; + +#else + return; +#endif +} + diff --git a/libmednahawk/src/hw_cpu/c68k/c68kmac.inc b/libmednahawk/src/hw_cpu/c68k/c68kmac.inc new file mode 100644 index 0000000000..7b2cee203e --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/c68kmac.inc @@ -0,0 +1,254 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +// internals core macros +///////////////////////// + +#define LSL(A, C) ((A) << (C)) +#define LSR(A, C) ((A) >> (C)) + +#define LSR_32(A, C) ((C) < 32 ? (A) >> (C) : 0) +#define LSL_32(A, C) ((C) < 32 ? (A) << (C) : 0) + +#define ROL_8(A, C) (LSL(A, C) | LSR(A, 8-(C))) +#define ROL_9(A, C) (LSL(A, C) | LSR(A, 9-(C))) +#define ROL_16(A, C) (LSL(A, C) | LSR(A, 16-(C))) +#define ROL_17(A, C) (LSL(A, C) | LSR(A, 17-(C))) +#define ROL_32(A, C) (LSL_32(A, C) | LSR_32(A, 32-(C))) +#define ROL_33(A, C) (LSL_32(A, C) | LSR_32(A, 33-(C))) + +#define ROR_8(A, C) (LSR(A, C) | LSL(A, 8-(C))) +#define ROR_9(A, C) (LSR(A, C) | LSL(A, 9-(C))) +#define ROR_16(A, C) (LSR(A, C) | LSL(A, 16-(C))) +#define ROR_17(A, C) (LSR(A, C) | LSL(A, 17-(C))) +#define ROR_32(A, C) (LSR_32(A, C) | LSL_32(A, 32-(C))) +#define ROR_33(A, C) (LSR_32(A, C) | LSL_32(A, 33-(C))) + + +#define RET(A) \ + timestamp += (A); \ + goto C68k_Exec_End; + +#define SET_PC(A) PC = (A); + +#define READ_BYTE_F(A, D) \ + D = CPU->Read_Byte(A) & 0xFF; + +#define READ_WORD_F(A, D) \ + D = CPU->Read_Word(A) & 0xFFFF; + +#define READ_LONG_F(A, D) \ + D = CPU->Read_Word((A)) << 16; \ + D |= CPU->Read_Word((A) + 2) & 0xFFFF; + +#define READSX_BYTE_F(A, D) \ + D = (s32)(s8)CPU->Read_Byte(A); + +#define READSX_WORD_F(A, D) \ + D = (s32)(s16)CPU->Read_Word(A); + +#define READSX_LONG_F(A, D) \ + D = CPU->Read_Word((A)) << 16; \ + D |= CPU->Read_Word((A) + 2) & 0xFFFF; + +#define WRITE_BYTE_F(A, D) \ + CPU->Write_Byte(A, D); + +#define WRITE_WORD_F(A, D) \ + CPU->Write_Word(A, D); + +#define WRITE_LONG_F(A, D) \ + CPU->Write_Word((A), (D) >> 16); \ + CPU->Write_Word((A) + 2, (D) & 0xFFFF); + +#define WRITE_LONG_DEC_F(A, D) \ + CPU->Write_Word((A) + 2, (D) & 0xFFFF); \ + CPU->Write_Word((A), (D) >> 16); + +#define PUSH_16_F(D) \ + CPU->A[7] -= 2; \ + CPU->Write_Word(CPU->A[7], D); \ + +#define POP_16_F(D) \ + D = (u16)CPU->Read_Word(CPU->A[7]); \ + CPU->A[7] += 2; + +#define PUSH_32_F(D) \ + CPU->A[7] -= 4; \ + CPU->Write_Word(CPU->A[7] + 2, (D) & 0xFFFF); \ + CPU->Write_Word(CPU->A[7], (D) >> 16); + +#define POP_32_F(D) \ + D = CPU->Read_Word(CPU->A[7]) << 16; \ + D |= CPU->Read_Word(CPU->A[7] + 2) & 0xFFFF; \ + CPU->A[7] += 4; + +/* */ +/* New timing hacky stuff */ +/* */ + +#define READ_BYat_F(A, D) \ + timestamp += 2; \ + D = CPU->Read_Byte(A) & 0xFF; \ + timestamp += 2; + +#define READ_WOat_F(A, D) \ + timestamp += 2; \ + D = CPU->Read_Word(A) & 0xFFFF; \ + timestamp += 2; + +#define READ_LOat_F(A, D) \ + timestamp += 2; \ + D = CPU->Read_Word((A)) << 16; \ + timestamp += 2; \ + timestamp += 2; \ + D |= CPU->Read_Word((A) + 2) & 0xFFFF; \ + timestamp += 2; + +#define READSX_BYat_F(A, D) \ + timestamp += 2; \ + D = (s32)(s8)CPU->Read_Byte(A); \ + timestamp += 2; + +#define READSX_WOat_F(A, D) \ + timestamp += 2; \ + D = (s32)(s16)CPU->Read_Word(A); \ + timestamp += 2; + +#define READSX_LOat_F(A, D) \ + timestamp += 2; \ + D = CPU->Read_Word((A)) << 16; \ + timestamp += 2; \ + timestamp += 2; \ + D |= CPU->Read_Word((A) + 2) & 0xFFFF; \ + timestamp += 2; + +#define WRITE_BYat_F(A, D) \ + timestamp += 2; \ + CPU->Write_Byte(A, D); \ + timestamp += 2; + +#define WRITE_WOat_F(A, D) \ + timestamp += 2; \ + CPU->Write_Word(A, D); \ + timestamp += 2; \ + +#define WRITE_LOat_F(A, D) \ + timestamp += 2; \ + CPU->Write_Word((A), (D) >> 16); \ + timestamp += 2; \ + timestamp += 2; \ + CPU->Write_Word((A) + 2, (D) & 0xFFFF); \ + timestamp += 2; + +#define WRITE_LOat_DEC_F(A, D) \ + timestamp += 2; \ + CPU->Write_Word((A) + 2, (D) & 0xFFFF); \ + timestamp += 2; \ + timestamp += 2; \ + CPU->Write_Word((A), (D) >> 16); \ + timestamp += 2; + +/* */ +/* */ +/* */ + +#define FETCH_BYTE ((u8)CPU->Read_Word(PC)) +#define FETCH_WORD CPU->Read_Word(PC) +#define FETCH_LONG ((CPU->Read_Word(PC) << 16) | (CPU->Read_Word(PC + 2))) + +// FIXME? +#define DECODE_EXT_WORD \ +{ \ + u32 ext; \ + \ + ext = FETCH_WORD; \ + PC += 2; \ + \ + adr += (s32)((s8)(ext)); \ + if (ext & 0x0800) adr += (s32) CPU->D[ext >> 12]; \ + else adr += (s32)((s16)(CPU->D[ext >> 12])); \ +} + +#define GET_CCR \ + (((CPU->flag_C >> (C68K_SR_C_SFT - 0)) & 1) | \ + ((CPU->flag_V >> (C68K_SR_V_SFT - 1)) & 2) | \ + (((!CPU->flag_notZ) & 1) << 2) | \ + ((CPU->flag_N >> (C68K_SR_N_SFT - 3)) & 8) | \ + ((CPU->flag_X >> (C68K_SR_X_SFT - 4)) & 0x10)) + +#define GET_SR \ + ((CPU->flag_S << 0) | \ + (CPU->flag_I << 8) | \ + GET_CCR) + +#define SET_CCR(A) \ + CPU->flag_C = (A) << (C68K_SR_C_SFT - 0); \ + CPU->flag_V = (A) << (C68K_SR_V_SFT - 1); \ + CPU->flag_notZ = ~(A) & 4; \ + CPU->flag_N = (A) << (C68K_SR_N_SFT - 3); \ + CPU->flag_X = (A) << (C68K_SR_X_SFT - 4); + +#define SET_SR(A) \ + SET_CCR(A) \ + CPU->flag_I = ((A) >> 8) & 7; \ + CPU->flag_S = (A) & C68K_SR_S; + +#define CHECK_INT \ + { \ + s32 line, vect; \ + \ + line = CPU->IRQLine; \ + /*if(line) printf("Meow: %d, flag_I: %d\n", line, CPU->flag_I); */ \ + if ((line == 7) || (line > CPU->flag_I)) \ + { \ + cpu->Status &= ~(C68K_HALTED | C68K_WAITING); \ + \ + /* get vector */ \ + CPU->IRQLine = 0; \ + vect = CPU->Interrupt_CallBack(line); \ + if (vect == C68K_INT_ACK_AUTOVECTOR) \ + vect = C68K_INTERRUPT_AUTOVECTOR_EX + (line & 7); \ + \ + /* adjust CCnt */ \ + timestamp += c68k_exception_cycle_table[vect]; \ + \ + /* swap A7 and USP */ \ + if (!CPU->flag_S) \ + { \ + u32 tmpSP; \ + \ + tmpSP = CPU->USP; \ + CPU->USP = CPU->A[7]; \ + CPU->A[7] = tmpSP; \ + } \ + \ + /* push PC and SR */ \ + PUSH_32_F(PC) \ + PUSH_16_F(GET_SR) \ + \ + /* adjust SR */ \ + CPU->flag_S = C68K_SR_S; \ + CPU->flag_I = line; \ + \ + /* fetch new PC */ \ + READ_LONG_F(vect * 4, PC) \ + SET_PC(PC) \ + } \ + } diff --git a/libmednahawk/src/hw_cpu/c68k/gen68k.c b/libmednahawk/src/hw_cpu/c68k/gen68k.c new file mode 100644 index 0000000000..3602d57d27 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/gen68k.c @@ -0,0 +1,3780 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/********************************************************************************* + * GEN68K.C : + * + * C68K generator source file + * + ********************************************************************************/ + +#include +#include + +#include "c68k.h" +#include "gen68k.h" + +#ifdef C68K_GEN + +#include "gen68k.inc" + +// to do : +// need accurate cycles calculations in MUL and DIV instruction +// some bugs to fix + +// opcode generation function +////////////////////////////// + +static void GenLogicI(char op) +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + add_CCnt(8); + + if (current_ea != EA_DREG) current_cycle += 4; + switch (current_size) + { + case SIZE_BYTE: + wf_op("\tsrc = FETCH_BYTE;\n"); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_WORD: + wf_op("\tsrc = FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_LONG: + wf_op("\tsrc = FETCH_LONG;\n"); + wf_op("\tPC += 4;\n"); + current_cycle += 8; + break; + } + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // op + wf_op("\tres %c= src;\n", op); + // flag calculation + set_logic_flag(); + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(0); //8); +} + +static void GenLogicICCR(char op) +{ + // generate jump table & opcode declaration + start_all(GEN_RES); + + wf_op("\tres = FETCH_BYTE & C68K_CCR_MASK;\n"); + wf_op("\tPC += 2;\n"); + wf_op("\tres %c= GET_CCR;\n", op); + wf_op("\tSET_CCR(res)\n"); + + terminate_op(20); +} + +static void GenLogicISR(char op) +{ + // generate jump table & opcode declaration + start_all(GEN_RES); + + wf_op("\tif (CPU->flag_S)\n"); + wf_op("\t{\n"); + wf_op("\t\tres = FETCH_WORD & C68K_SR_MASK;\n"); + wf_op("\t\tPC += 2;\n"); + wf_op("\t\tres %c= GET_SR;\n", op); + wf_op("\t\tSET_SR(res)\n"); + if (op != '|') + { + wf_op("\t\tif (!CPU->flag_S)\n"); + wf_op("\t\t{\n"); + wf_op("\t\t\tres = CPU->A[7];\n"); + wf_op("\t\t\tCPU->A[7] = CPU->USP;\n"); + wf_op("\t\t\tCPU->USP = res;\n"); + wf_op("\t\t}\n"); + } + wf_op("\t}\n"); + wf_op("\telse\n"); + wf_op("\t{\n"); + gen_privilege_exception("\t\t"); + wf_op("\t}\n"); + + // check for interrupt + fterminate_op(20); +} + +static void GenORI() +{ + GenLogicI('|'); +} + +static void GenORICCR() +{ + GenLogicICCR('|'); +} + +static void GenORISR() +{ + GenLogicISR('|'); +} + +static void GenANDI() +{ + GenLogicI('&'); +} + +static void GenANDICCR() +{ + GenLogicICCR('&'); +} + +static void GenANDISR() +{ + GenLogicISR('&'); +} + +static void GenEORI() +{ + GenLogicI('^'); +} + +static void GenEORICCR() +{ + GenLogicICCR('^'); +} + +static void GenEORISR() +{ + GenLogicISR('^'); +} + +static void GenArithI(char op) +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC | GEN_DST); + else + start_all(GEN_ALL); + + add_CCnt(8); + + if ((op != ' ') && (current_ea != EA_DREG)) current_cycle += 4; + switch (current_size) + { + case SIZE_BYTE: + wf_op("\tsrc = FETCH_BYTE;\n"); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_WORD: + wf_op("\tsrc = FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_LONG: + wf_op("\tsrc = FETCH_LONG;\n"); + wf_op("\tPC += 4;\n"); + if (op == ' ') + { + if (current_ea == EA_DREG) current_cycle += 6; + else current_cycle += 4; + } else current_cycle += 8; + break; + } + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_dst(current_ea, current_op->reg_sft); + if (op == ' ') + { + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + } + else + { + // op + wf_op("\tres = dst %c src;\n", op); + // flag calculation + if (op == '+') set_add_flag(); + else set_sub_flag(); + // write + _ea_write(current_ea, current_op->reg_sft); + } + + terminate_op(0); //8); +} + +static void GenSUBI() +{ + GenArithI('-'); +} + +static void GenADDI() +{ + GenArithI('+'); +} + +static void GenCMPI() +{ + GenArithI(' '); +} + +static void GenBitsOp(char op, u32 dyn) +{ + // generate jump table & opcode declaration + if (dyn) current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + add_CCnt(4); + + if (current_ea == EA_DREG) + { + set_current_size(SIZE_LONG); + if ((op == 'c') || (op == ' ')) current_cycle += 2; + } + else set_current_size(SIZE_BYTE); + + // get shift value in src + if (dyn) + { + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_src(current_ea2, current_op->reg2_sft); + } + else + { + wf_op("\tsrc = FETCH_BYTE;\n"); + wf_op("\tPC += 2;\n"); + current_cycle += 4; + } + wf_op("\tsrc = 1 << (src & %d);\n", current_sft_mask); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // flag calculation + wf_op("\tCPU->flag_notZ = res & src;\n"); + // op + switch(op) + { + case 'c': + wf_op("\tres &= ~src;\n"); + break; + + case 'g': + wf_op("\tres ^= src;\n"); + break; + + case 's': + wf_op("\tres |= src;\n"); + break; + } + // write + if (op != ' ') + { + _ea_write(current_ea, current_op->reg_sft); + current_cycle += 4; + } + + terminate_op(0); //4); +} + +static void GenBTSTn() +{ + GenBitsOp(' ', 0); +} + +static void GenBCHGn() +{ + GenBitsOp('g', 0); +} + +static void GenBCLRn() +{ + GenBitsOp('c', 0); +} + +static void GenBSETn() +{ + GenBitsOp('s', 0); +} + +static void GenBTST() +{ + GenBitsOp(' ', 1); +} + +static void GenBCHG() +{ + GenBitsOp('g', 1); +} + +static void GenBCLR() +{ + GenBitsOp('c', 1); +} + +static void GenBSET() +{ + GenBitsOp('s', 1); +} + +static void GenMOVEPWaD() +{ + // generate jump table & opcode declaration + current_ea = EA_D16A; + current_ea2 = EA_DREG; + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + set_current_size(SIZE_BYTE); + _ea_calc(current_ea, current_op->reg_sft); + mem_op("\tREAD_BYTE_F(adr + 0, res)\n"); + mem_op("\tREAD_BYTE_F(adr + 2, src)\n"); + // write + wf_op("\t*(WORD_OFF + (u16*)(&CPU->D[(Opcode >> %d) & 7])) = (res << 8) | src;\n", current_op->reg2_sft); + + terminate_op(16); +} + +static void GenMOVEPLaD() +{ + // generate jump table & opcode declaration + current_ea = EA_D16A; + current_ea2 = EA_DREG; + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + set_current_size(SIZE_BYTE); + _ea_calc(EA_D16A, current_op->reg_sft); + mem_op("\tREAD_BYTE_F(adr, res)\n"); + wf_op("\tres <<= 24;\n"); + wf_op("\tadr += 2;\n"); + mem_op("\tREAD_BYTE_F(adr, src)\n"); + wf_op("\tres |= src << 16;\n"); + wf_op("\tadr += 2;\n"); + mem_op("\tREAD_BYTE_F(adr, src)\n"); + wf_op("\tres |= src << 8;\n"); + wf_op("\tadr += 2;\n"); + mem_op("\tREAD_BYTE_F(adr, src)\n"); + // write + wf_op("\tCPU->D[(Opcode >> %d) & 7] = res | src;\n", current_op->reg2_sft); + + terminate_op(24); +} + +static void GenMOVEPWDa() +{ + // generate jump table & opcode declaration + current_ea = EA_D16A; + current_ea2 = EA_DREG; + start_all(GEN_ADR | GEN_RES); + + // read + set_current_size(SIZE_LONG); + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read(current_ea2, current_op->reg2_sft); + // write + set_current_size(SIZE_BYTE); + _ea_calc(current_ea, current_op->reg_sft); + mem_op("\tWRITE_BYTE_F(adr + 0, res >> 8)\n"); + mem_op("\tWRITE_BYTE_F(adr + 2, res >> 0)\n"); + + terminate_op(16); +} + +static void GenMOVEPLDa() +{ + // generate jump table & opcode declaration + current_ea = EA_D16A; + current_ea2 = EA_DREG; + start_all(GEN_ADR | GEN_RES); + + // read + set_current_size(SIZE_LONG); + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read(current_ea2, current_op->reg2_sft); + // write + set_current_size(SIZE_BYTE); + _ea_calc(current_ea, current_op->reg_sft); + mem_op("\tWRITE_BYTE_F(adr, res >> 24)\n"); + wf_op("\tadr += 2;\n"); + mem_op("\tWRITE_BYTE_F(adr, res >> 16)\n"); + wf_op("\tadr += 2;\n"); + mem_op("\tWRITE_BYTE_F(adr, res >> 8)\n"); + wf_op("\tadr += 2;\n"); + mem_op("\tWRITE_BYTE_F(adr, res >> 0)\n"); + + terminate_op(24); +} + +static void GenMOVE(u32 size) +{ + set_current_size(size); + + // generate jump table & opcode declaration + if (((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) && + ((current_ea2 == EA_AREG) || (current_ea2 == EA_DREG) || (current_ea2 == EA_IMM))) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + add_CCnt(4); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // flag calculation + set_logic_flag(); + if ((current_ea2 == EA_ADEC) || (current_ea2 == EA_ADEC7)) current_cycle -= 2; + // write + _ea_calc(current_ea2, current_op->reg2_sft); + + if ((current_ea2 == EA_ADEC) || (current_ea2 == EA_ADEC7)) + _ea_write_sarsie(current_ea2, current_op->reg2_sft, 1); + else + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(0); //4); +} + +static void GenMOVEB() +{ + GenMOVE(SIZE_BYTE); +} + +static void GenMOVEW() +{ + GenMOVE(SIZE_WORD); +} + +static void GenMOVEL() +{ + GenMOVE(SIZE_LONG); +} + +static void GenMOVEA(u32 size) +{ + set_current_size(size); + + // generate jump table & opcode declaration + current_ea2 = EA_AREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_sx(current_ea, current_op->reg_sft); + // write (dst = Ax) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(4); +} + +static void GenMOVEAW() +{ + GenMOVEA(SIZE_WORD); +} + +static void GenMOVEAL() +{ + GenMOVEA(SIZE_LONG); +} + +static void GenMOVEQ() +{ + u32 base = get_current_opcode_base(); + + // generate jump table + current_ea = EA_DREG; + gen_opjumptable_ext(base, 0x00, 0xFF, 1, base); + + // generate label & declarations + start_op(base, GEN_RES); + + // read + set_current_size(SIZE_BYTE); + wf_op("\tres = (s32)(s8)Opcode;\n"); + // fast flag calculation for moveQ + wf_op("\tCPU->flag_C = CPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_N = CPU->flag_notZ = res;\n"); + // write + set_current_size(SIZE_LONG); + _ea_calc(current_ea, current_op->reg_sft); + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(4); +} + +static void GenSingle(char op) +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) { + if (op == 'c') + start_all(GEN_RES); + else + start_all(GEN_RES | GEN_SRC); + } else { + if (op == 'c') + start_all(GEN_ADR | GEN_RES); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + } + + if (current_size == SIZE_LONG) current_cycle = 6; + else current_cycle= 4; + if (is_ea_memory(current_ea)) current_cycle *= 2; + + // read + _ea_calc(current_ea, current_op->reg_sft); + if (op != 'c') _ea_read_src(current_ea, current_op->reg_sft); + // op + switch (op) + { + case 'x': // negx + wf_op("\tres = -src - ((CPU->flag_X >> 8) & 1);\n"); + break; + + case 'g': // neg + wf_op("\tres = -src;\n"); + break; + + case 'n': // not + wf_op("\tres = ~src;\n"); + break; + + case 'c': // clr + wf_op("\tres = 0;\n"); + break; + } + // flag calculation + switch (op) + { + case 'x': // negx + set_negx_flag(); + break; + + case 'g': // neg + set_neg_flag(); + break; + + case 'n': // not + set_logicl_flag(); + break; + + case 'c': // clr + wf_op("\tCPU->flag_N = CPU->flag_notZ = CPU->flag_V = CPU->flag_C = 0;\n"); + break; + } + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(0); +} + +static void GenCLR() +{ + GenSingle('c'); +} + +static void GenNEGX() +{ + GenSingle('x'); +} + +static void GenNEG() +{ + GenSingle('g'); +} + +static void GenNOT() +{ + GenSingle('n'); +} + +static void GenMOVESRa() +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + // read + wf_op("\tres = GET_SR;\n"); + // write + set_current_size(SIZE_WORD); + if (is_ea_memory(current_ea)) current_cycle += 2; + _ea_calc(current_ea, current_op->reg_sft); + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenMOVEaSR() +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + wf_op("\tif (CPU->flag_S)\n"); + wf_op("\t{\n"); + // read + set_current_size(SIZE_WORD); + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + wf_op("\t\tSET_SR(res)\n"); + wf_op("\t\tif (!CPU->flag_S)\n"); + wf_op("\t\t{\n"); + wf_op("\t\t\tres = CPU->A[7];\n"); + wf_op("\t\t\tCPU->A[7] = CPU->USP;\n"); + wf_op("\t\t\tCPU->USP = res;\n"); + wf_op("\t\t}\n"); + wf_op("\t}\n"); + wf_op("\telse\n"); + wf_op("\t{\n"); + gen_privilege_exception("\t\t"); + wf_op("\t}\n"); + + // force terminaison to check for interrupt + fterminate_op(12); +} + +static void GenMOVEaCCR() +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + // read + set_current_size(SIZE_WORD); + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // write + wf_op("\tSET_CCR(res)\n"); + + terminate_op(12); +} + +static void GenMOVEAUSP() +{ + current_ea = EA_AREG; + + // generate jump table & opcode declaration + start_all(GEN_RES); + + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + gen_privilege_exception("\t\t"); + quick_terminate_op(4); + wf_op("\t}\n"); + + // read + set_current_size(SIZE_LONG); + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // write + wf_op("\tCPU->USP = res;\n"); + + terminate_op(4); +} + +static void GenMOVEUSPA() +{ + current_ea = EA_AREG; + + // generate jump table & opcode declaration + start_all(GEN_RES); + + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + gen_privilege_exception("\t\t"); + quick_terminate_op(4); + wf_op("\t}\n"); + + // read + wf_op("\tres = CPU->USP;\n"); + // write + set_current_size(SIZE_LONG); + _ea_calc(current_ea, current_op->reg_sft); + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(4); +} + +static void GenPEA() +{ + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(0); + else + start_all(GEN_ADR); + + _ea_calc_free(current_ea, current_op->reg_sft); + mem_op("\tPUSH_32_F(adr)\n"); + + terminate_op(lea_pea_cycle_table[current_ea] + 12); +} + +static void GenSWAP() +{ + current_ea = EA_DREG; + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + start_all(GEN_RES); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // op + wf_op("\tres = (res >> 16) | (res << 16);\n"); + // flag calculation + set_logic_flag(); + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(4); +} + +static void GenMOVEMaR() +{ + // generate jump table & opcode declaration + start_all(GEN_ALL); + + // get register mask + wf_op("\tres = FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + // get adr + if (current_ea == EA_AINC) wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", current_op->reg_sft); + else if (current_ea == EA_AINC7) wf_op("\tadr = CPU->A[7];\n"); + else _ea_calc(current_ea, current_op->reg_sft); + wf_op("\tsrc = 0;\n"); + + wf_op("\tdst = adr;\n"); + + wf_op("\tdo\n"); + wf_op("\t{\n"); + wf_op("\t\tif (res & 1)\n"); + wf_op("\t\t{\n"); + + if (current_size == SIZE_WORD) + { + wf_op("\t\t\tREADSX_WOat_F(adr, CPU->DA[src])\n"); + wf_op("\t\t\tadr += 2;\n"); + } + else + { + wf_op("\t\t\tREAD_LOat_F(adr, CPU->DA[src])\n"); + wf_op("\t\t\tadr += 4;\n"); + } + wf_op("\t\t}\n"); + wf_op("\t\tsrc ++;\n"); + wf_op("\t} while (res >>= 1);\n"); + + if (current_ea == EA_AINC) wf_op("\tCPU->A[(Opcode >> %d) & 7] = adr;\n", current_op->reg_sft); + else if (current_ea == EA_AINC7) wf_op("\tCPU->A[7] = adr;\n"); + + terminate_op(movem_cycle_table[current_ea] + 12); +} + +static void GenMOVEMRa() +{ + // generate jump table & opcode declaration + start_all(GEN_ALL); + + // get register mask + wf_op("\tres = FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + // get adr + if (current_ea == EA_ADEC) wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", current_op->reg_sft); + else if (current_ea == EA_ADEC7) wf_op("\tadr = CPU->A[7];\n"); + else _ea_calc(current_ea, current_op->reg_sft); + if ((current_ea == EA_ADEC) || (current_ea == EA_ADEC7)) wf_op("\tsrc = 15;\n"); + else wf_op("\tsrc = 0;\n"); + + wf_op("\tdst = adr;\n"); + + wf_op("\tdo\n"); + wf_op("\t{\n"); + wf_op("\t\tif (res & 1)\n"); + wf_op("\t\t{\n"); + + if (current_size == SIZE_WORD) + { + if ((current_ea == EA_ADEC) || (current_ea == EA_ADEC7)) wf_op("\t\t\tadr -= 2;\n"); + wf_op("\t\t\tWRITE_WOat_F(adr, CPU->DA[src])\n"); + if (!((current_ea == EA_ADEC) || (current_ea == EA_ADEC7))) wf_op("\t\t\tadr += 2;\n"); + } + else + { + if ((current_ea == EA_ADEC) || (current_ea == EA_ADEC7)) + { + wf_op("\t\t\tadr -= 4;\n"); + wf_op("\t\t\tWRITE_LOat_DEC_F(adr, CPU->DA[src])\n"); + } + else + { + wf_op("\t\t\tWRITE_LOat_F(adr, CPU->DA[src])\n"); + wf_op("\t\t\tadr += 4;\n"); + } + } + wf_op("\t\t}\n"); + if ((current_ea == EA_ADEC) || (current_ea == EA_ADEC7)) wf_op("\t\tsrc --;\n"); + else wf_op("\t\tsrc ++;\n"); + wf_op("\t} while (res >>= 1);\n"); + + if (current_ea == EA_ADEC) wf_op("\tCPU->A[(Opcode >> %d) & 7] = adr;\n", current_op->reg_sft); + else if (current_ea == EA_ADEC7) wf_op("\tCPU->A[7] = adr;\n"); + + terminate_op(movem_cycle_table[current_ea] + 8); +} + +static void GenEXT() +{ + current_ea = EA_DREG; + // generate jump table & opcode declaration + start_all(GEN_RES); + + // read + set_current_size(current_size - 1); + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_sx(current_ea, current_op->reg_sft); + // flag calculation + set_logic_flag(); + // write + set_current_size(current_size + 1); + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(4); +} + +static void GenTST() +{ + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + add_CCnt(4); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // flag calculation + set_logic_flag(); + + terminate_op(0); //4); +} + +static void GenTAS() +{ + set_current_size(SIZE_BYTE); + + if (is_ea_memory(current_ea)) current_cycle += 6; + + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // flag calculation + set_logic_flag(); + + if(current_ea >= EA_AIND) + { + wf_op("if(!CPU->TAS_Hack)\n{\n"); + } + + // flag calculation + wf_op("\tres |= 0x80;\n"); + // write + _ea_write(current_ea, current_op->reg_sft); + + if(current_ea >= EA_AIND) + { + wf_op("}\n"); + } + + terminate_op(4); +} + +static void GenTRAP() +{ + u32 base; + + base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable_ext(base, (0 << 0), (15 << 0), (1 << 0), base); + + // generate label & declarations + start_op(base, GEN_RES); + + gen_exception("\t", "C68K_TRAP_BASE_EX + (Opcode & 0xF)"); + + terminate_op(4); +} + +static void GenTRAPV() +{ + // generate label & declarations + start_all(GEN_RES); + + wf_op("\tif %s\n", get_cond_as_cond(COND_VS, 0)); + wf_op("\t{\n"); + gen_exception("\t\t", "C68K_TRAPV_EX"); + wf_op("\t}\n"); + + terminate_op(4); +} + +static void GenLINK() +{ + current_ea = EA_AREG; + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + start_all(GEN_RES); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // push + mem_op("\tPUSH_32_F(res)\n"); + wf_op("\tres = CPU->A[7];\n"); + // write + _ea_write(current_ea, current_op->reg_sft); + // update SP + wf_op("\tCPU->A[7] += (s32)(s16)FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + + terminate_op(16); +} + +static void GenLINKA7() +{ + current_ea = EA_AREG; + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + start_all(0); + + // push A7 + wf_op("\tCPU->A[7] -= 4;\n"); + mem_op("\tWRITE_LONG_DEC_F(CPU->A[7], CPU->A[7])\n"); + // update A7 + wf_op("\tCPU->A[7] += (s32)(s16)FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + + terminate_op(16); +} + +static void GenULNK() +{ + current_ea = EA_AREG; + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + start_all(GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // pop + wf_op("\tCPU->A[7] = src + 4;\n"); + mem_op("\tREAD_LONG_F(src, res)\n"); + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(12); +} + +static void GenULNKA7() +{ + current_ea = EA_AREG; + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + start_all(0); + + mem_op("\tREAD_LONG_F(CPU->A[7], CPU->A[7])\n"); + + terminate_op(12); +} + +static void GenRESET() +{ + // generate jump table & opcode declaration + start_all(GEN_RES); + + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + gen_privilege_exception("\t\t"); + quick_terminate_op(4); + wf_op("\t}\n"); + + // Reset callback function + mem_op("\tCPU->Reset_CallBack();\n"); + + terminate_op(132); +} + +static void GenLEA() +{ + current_ea2 = EA_AREG; + set_current_size(SIZE_LONG); + // generate jump table & opcode declaration + start_all(GEN_ADR | GEN_RES); + + _ea_calc_free(current_ea, current_op->reg_sft); + wf_op("\tres = adr;\n"); + current_cycle = lea_pea_cycle_table[current_ea]; + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(4); +} + +static void GenNOP() +{ + start_all(0); + terminate_op(4); +} + +static void Gen1010() +{ + u32 base; + + base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0FFF, 0x1, base); + + // generate label & declarations + start_op(base, GEN_RES); + + wf_op("\tPC -= 2;\n"); + gen_exception("\t", "C68K_1010_EX"); + + terminate_op(4); +} + +static void Gen1111() +{ + u32 base; + + base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0FFF, 0x1, base); + + // generate label & declarations + start_op(base, GEN_RES); + + wf_op("\tPC -= 2;\n"); + gen_exception("\t", "C68K_1111_EX"); + + terminate_op(4); +} + + + +static void GenILLEGAL() +{ + start_all(GEN_RES); + + gen_exception("\t\t", "C68K_ILLEGAL_INSTRUCTION_EX"); + + terminate_op(4); +} + +static void GenCHK() +{ + current_ea2 = EA_DREG; + set_current_size(SIZE_WORD); + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read Src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read Dx + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read(current_ea2, current_op->reg2_sft); + + wf_op("\tif (((s32)res < 0) || (res > src))\n"); + wf_op("\t{\n"); + wf_op("\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + gen_exception("\t\t", "C68K_CHK_EX"); + wf_op("\t}\n"); + + terminate_op(10); +} + +static void GenSTOP() +{ + // generate jump table & opcode declaration + start_all(GEN_RES); + + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + wf_op("\t\tPC += 2;\n"); + gen_privilege_exception("\t\t"); + quick_terminate_op(4); + wf_op("\t}\n"); + + // read & set SR + wf_op("\tres = FETCH_WORD & C68K_SR_MASK;\n"); + wf_op("\tPC += 2;\n"); + wf_op("\tSET_SR(res)\n"); + + // if S flag not set --> we swap stack pointer + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + wf_op("\t\tres = CPU->A[7];\n"); + wf_op("\t\tCPU->A[7] = CPU->USP;\n"); + wf_op("\t\tCPU->USP = res;\n"); + wf_op("\t}\n"); + + wf_op("\tCPU->Status |= C68K_HALTED;\n"); + //wf_op("\tCCnt = 0;\n"); + + // force end execution + fterminate_op(4); +} + +static void GenRTE() +{ + start_all(GEN_RES); + + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + gen_privilege_exception("\t\t"); + quick_terminate_op(4); + wf_op("\t}\n"); + + // restore SR and PC + mem_op("\tPOP_16_F(res)\n"); + wf_op("\tSET_SR(res)\n"); + mem_op("\tPOP_32_F(res)\n"); + wf_op("\tSET_PC(res)\n"); + + // if S flag not set --> we swap stack pointer + wf_op("\tif (!CPU->flag_S)\n"); + wf_op("\t{\n"); + wf_op("\t\tres = CPU->A[7];\n"); + wf_op("\t\tCPU->A[7] = CPU->USP;\n"); + wf_op("\t\tCPU->USP = res;\n"); + wf_op("\t}\n"); + + // check for interrupt + fterminate_op(20); +} + +static void GenRTS() +{ + start_all(GEN_RES); + + mem_op("\tPOP_32_F(res)\n"); + wf_op("\tSET_PC(res)\n"); + + terminate_op(16); +} + +static void GenRTR() +{ + start_all(GEN_RES); + + mem_op("\tPOP_16_F(res)\n"); + wf_op("\tSET_CCR(res)\n"); + mem_op("\tPOP_32_F(res)\n"); + wf_op("\tSET_PC(res)\n"); + + terminate_op(20); +} + +static void GenJSR() +{ + start_all(GEN_ADR); + + // get adr + _ea_calc_free(current_ea, current_op->reg_sft); + mem_op("\tPUSH_32_F(PC)\n"); + wf_op("\tSET_PC(adr)\n"); + + terminate_op(jmp_jsr_cycle_table[current_ea] + 12); +} + +static void GenJMP() +{ + start_all(GEN_ADR); + + // get adr + _ea_calc_free(current_ea, current_op->reg_sft); + wf_op("\tSET_PC(adr)\n"); + + terminate_op(jmp_jsr_cycle_table[current_ea] + 4); +} + +static void GenSTCC() +{ + u32 base, cond; + + base = get_current_opcode_base(); + + for(cond = 0; cond < 0x10; cond++) + { + // generate jump table + gen_opjumptable(base + (cond << 8)); + // generate label & declarations + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_op(base + (cond << 8), GEN_RES); + else + start_op(base + (cond << 8), GEN_ADR | GEN_RES); + + set_current_size(SIZE_BYTE); + + if (is_ea_memory(current_ea)) current_cycle += 4; + + // op + _ea_calc(current_ea, current_op->reg_sft); + if ((cond != COND_TR) && (cond != COND_FA)) + { + wf_op("\tif %s\n", get_cond_as_cond(cond, 0)); + wf_op("\t{\n"); + } + if (cond != COND_FA) + { + wf_op("\tres = 0xFF;\n"); + // write + _ea_write(current_ea, current_op->reg_sft); + if (!is_ea_memory(current_ea)) quick_terminate_op(6); + else quick_terminate_op(4); + } + if ((cond != COND_TR) && (cond != COND_FA)) + { + wf_op("\t}\n"); + } + if (cond != COND_TR) + { + wf_op("\tres = 0;\n"); + // write + _ea_write(current_ea, current_op->reg_sft); + quick_terminate_op(4); + } + + wf_op("}\n"); + } +} + +static void GenDBCC() +{ + u32 base, cond; + + base = get_current_opcode_base(); + + current_ea = EA_DREG; + set_current_size(SIZE_WORD); + + for(cond = 0; cond < 0x10; cond++) + { + // generate jump table + gen_opjumptable(base + (cond << 8)); + // generate label & declarations + start_op(base + (cond << 8), GEN_RES); + + if (cond != COND_TR) + { + if (cond != COND_FA) + { + wf_op("\tif %s\n", get_cond_as_cond(cond, 1)); + wf_op("\t{\n"); + } + + // read Dx + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // dec Dx + wf_op("\tres--;\n"); + // write Dx + _ea_write(current_ea, current_op->reg_sft); + wf_op("\tif ((s32)res != -1)\n"); + wf_op("\t{\n"); + wf_op("\t\tPC += (s32)(s16)FETCH_WORD;\n"); + // rebase PC + wf_op("\t\tSET_PC(PC);\n"); + quick_terminate_op(10); + wf_op("\t}\n"); + + if (cond != COND_FA) + { + wf_op("\t}\n"); + wf_op("\telse\n"); + wf_op("\t{\n"); + wf_op("\t\tPC += 2;\n"); + quick_terminate_op(12); + wf_op("\t}\n"); + } + } + + wf_op("\tPC += 2;\n"); + + if (cond == COND_TR) terminate_op(12); + else terminate_op(14); + } +} + +static void GenBCC() +{ + u32 base, cond; + + base = get_current_opcode_base(); + + for(cond = 2; cond < 0x10; cond++) + { + // generate jump table + gen_opjumptable_ext(base + (cond << 8), 0x01, 0xFF, 1, base + (cond << 8) + 0x01); + // generate label & declarations + start_op(base + (cond << 8) + 0x01, 0); + + // op + wf_op("\tif %s\n", get_cond_as_cond(cond, 0)); + wf_op("\t{\n"); + wf_op("\t\tPC += (s32)(s8)Opcode;\n"); // no rebase needed for 8 bits deplacement + add_CCnt(2); + wf_op("\t}\n"); + + terminate_op(8); + } +} + +static void GenBCC16() +{ + u32 base, cond; + + base = get_current_opcode_base(); + + for(cond = 2; cond < 0x10; cond++) + { + // generate jump table + gen_opjumptable(base + (cond << 8)); + // generate label & declarations + start_op(base + (cond << 8), 0); + + // op + wf_op("\tif %s\n", get_cond_as_cond(cond, 0)); + wf_op("\t{\n"); + wf_op("\t\tPC += (s32)(s16)FETCH_WORD;\n"); + // rebase PC + wf_op("\t\tSET_PC(PC);\n"); + quick_terminate_op(10); + wf_op("\t}\n"); + + wf_op("\tPC += 2;\n"); + + terminate_op(12); + } +} + +static void GenBRA() +{ + u32 base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable_ext(base, 0x01, 0xFF, 1, base + 0x01); + // generate label & declarations + start_op(base + 0x01, 0); + + wf_op("\tPC += (s32)(s8)Opcode;\n"); // no rebase needed for 8 bits deplacement + + terminate_op(10); +} + +static void GenBRA16() +{ + u32 base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable(base + 0x00); + // generate label & declarations + start_op(base + 0x00, 0); + + wf_op("\tPC += (s32)(s16)FETCH_WORD;\n"); + // rebase PC + wf_op("\tSET_PC(PC);\n"); + + terminate_op(10); +} + +static void GenBSR() +{ + u32 base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable_ext(base, 0x01, 0xFF, 1, base + 0x01); + // generate label & declarations + start_op(base + 0x01, 0); + + mem_op("\tPUSH_32_F(PC)\n"); + wf_op("\tPC += (s32)(s8)Opcode;\n"); // no rebase needed for 8 bits deplacement + + terminate_op(18); +} + +static void GenBSR16() +{ + u32 base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable(base + 0x00); + // generate label & declarations + start_op(base + 0x00, GEN_RES); + + wf_op("\tres = (s32)(s16)FETCH_WORD;\n"); + mem_op("\tPUSH_32_F(PC + 2)\n"); + wf_op("\tPC += (s32) res;\n"); + wf_op("\tSET_PC(PC);\n"); + + terminate_op(18); +} + +static void GenArithQ(char op) +{ + u32 base; + + if ((current_ea == EA_AREG) && (current_size == SIZE_BYTE)) return; + + base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable_ext(base, (0 << 9), (7 << 9), (1 << 9), base); + + // generate label & declarations + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_op(base, GEN_DST | GEN_RES | GEN_SRC); + else + start_op(base, GEN_ALL); + + if (current_ea == EA_AREG) set_current_size(SIZE_LONG); + + if (is_ea_memory(current_ea)) current_cycle += 4; + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src + wf_op("\tsrc = (((Opcode >> 9) - 1) & 7) + 1;\n"); + // read dst + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_dst(current_ea, current_op->reg_sft); + // op + wf_op("\tres = dst %c src;\n", op); + // flag calculation + if (current_ea != EA_AREG) + { + if (op == '+') set_add_flag(); + else set_sub_flag(); + } + // write dst + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(4); +} + +static void GenADDQ() +{ + GenArithQ('+'); +} + +static void GenSUBQ() +{ + GenArithQ('-'); +} + +static void GenLogicaD(char op) +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) + { + if (!is_ea_memory(current_ea)) current_cycle += 2; + else current_cycle += 4; + } + + // read src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read(current_ea2, current_op->reg2_sft); + // op + wf_op("\tres %c= src;\n", op); + // flag calculation + set_logic_flag(); + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(4); +} + +static void GenLogicDa(char op) +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_src(current_ea2, current_op->reg2_sft); + // read dst + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // op + wf_op("\tres %c= src;\n", op); + // flag calculation + set_logic_flag(); + // write dst + _ea_write(current_ea, current_op->reg_sft); + + if (current_ea == EA_DREG) terminate_op(4); + else terminate_op(8); +} + +static void GenANDaD() +{ + GenLogicaD('&'); +} + +static void GenANDDa() +{ + GenLogicDa('&'); +} + +static void GenORaD() +{ + GenLogicaD('|'); +} + +static void GenORDa() +{ + GenLogicDa('|'); +} + +static void GenEORDa() +{ + GenLogicDa('^'); +} + +static void GenNBCD() +{ + set_current_size(SIZE_BYTE); + + // generate jump table & opcode declaration + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES); + else + start_all(GEN_ADR | GEN_RES); + + if (is_ea_memory(current_ea)) current_cycle += 2; + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + + // op + wf_op("\tres = 0x9a - res - ((CPU->flag_X >> C68K_SR_X_SFT) & 1);\n"); + wf_op("\n"); + wf_op("\tif (res != 0x9a)\n"); + wf_op("\t{\n"); + wf_op("\t\tif ((res & 0x0f) == 0xa) res = (res & 0xf0) + 0x10;\n"); + wf_op("\t\tres &= 0xFF;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + // flag calculation + wf_op("\t\tCPU->flag_notZ |= res;\n"); + wf_op("\t\tCPU->flag_X = CPU->flag_C = C68K_SR_C;\n"); + + wf_op("\t}\n"); + wf_op("\telse CPU->flag_X = CPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = res;\n"); + + terminate_op(6); +} + +static void GenBCD(char op) +{ + // op + wf_op("\tres = (dst & 0xF) %c (src & 0xF) %c ((CPU->flag_X >> C68K_SR_X_SFT) & 1);\n", op, op); + wf_op("\tif (res > 9) res %c= 6;\n", op); + wf_op("\tres += (dst & 0xF0) %c (src & 0xF0);\n", op, op); + + // flag calculation + wf_op("\tif (res > 0x99)\n"); + wf_op("\t{\n"); + switch (op) + { + case '+': + wf_op("\t\tres -= 0xA0;\n"); + break; + + case '-': + wf_op("\t\tres += 0xA0;\n"); + break; + } + wf_op("\t\tCPU->flag_X = CPU->flag_C = C68K_SR_C;\n"); + wf_op("\t}\n"); + wf_op("\telse CPU->flag_X = CPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFF;\n"); + wf_op("\tCPU->flag_N = res;\n"); +} + +static void GenxBCD(char op) +{ + set_current_size(SIZE_BYTE); + + // generate jump table & opcode declaration + current_ea = EA_DREG; + current_ea2 = EA_DREG; + start_all(GEN_DST | GEN_RES | GEN_SRC); + + // read src (Dx) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + + // op & flag calculation + GenBCD(op); + + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(6); +} + +static void GenxBCDM(char op) +{ + set_current_size(SIZE_BYTE); + + // generate jump table & opcode declaration + current_ea = EA_ADEC; + current_ea2 = EA_ADEC; + start_all(GEN_ALL); + + // read src (ADEC) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (ADEC) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + + // op & flag calculation + GenBCD(op); + + // write dst (ADEC) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(6); +} + +static void GenxBCD7M(char op) +{ + set_current_size(SIZE_BYTE); + + // generate jump table & opcode declaration + current_ea = EA_ADEC7; + current_ea2 = EA_ADEC; + start_all(GEN_ALL); + + // read src (ADEC7) + _ea_calc(current_ea, 0); + _ea_read_src(current_ea, 0); + // read dst (ADEC) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + + // op & flag calculation + GenBCD(op); + + // write dst (ADEC) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(6); +} + +static void GenxBCDM7(char op) +{ + set_current_size(SIZE_BYTE); + + // generate jump table & opcode declaration + current_ea = EA_ADEC; + current_ea2 = EA_ADEC7; + start_all(GEN_ALL); + + // read src (ADEC) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (ADEC7) + _ea_calc(current_ea2, 0); + _ea_read_dst(current_ea2, 0); + + // op & flag calculation + GenBCD(op); + + // write dst (ADEC7) + _ea_write(current_ea2, 0); + + terminate_op(6); +} + +static void GenxBCD7M7(char op) +{ + set_current_size(SIZE_BYTE); + + // generate jump table & opcode declaration + current_ea = EA_ADEC7; + current_ea2 = EA_ADEC7; + start_all(GEN_ALL); + + // read src (ADEC7) + _ea_calc(current_ea, 0); + _ea_read_src(current_ea, 0); + // read dst (ADEC7) + _ea_calc(current_ea2, 0); + _ea_read_dst(current_ea2, 0); + + // op & flag calculation + GenBCD(op); + + // write dst (ADEC7) + _ea_write(current_ea2, 0); + + terminate_op(6); +} + +static void GenABCD() +{ + GenxBCD('+'); +} + +static void GenABCDM() +{ + GenxBCDM('+'); +} + +static void GenABCD7M() +{ + GenxBCD7M('+'); +} + +static void GenABCDM7() +{ + GenxBCDM7('+'); +} + +static void GenABCD7M7() +{ + GenxBCD7M7('+'); +} + +static void GenSBCD() +{ + GenxBCD('-'); +} + +static void GenSBCDM() +{ + GenxBCDM('-'); +} + +static void GenSBCD7M() +{ + GenxBCD7M('-'); +} + +static void GenSBCDM7() +{ + GenxBCDM7('-'); +} + +static void GenSBCD7M7() +{ + GenxBCD7M7('-'); +} + +static void GenDIVU() +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_DST | GEN_RES | GEN_SRC); + else + start_all(GEN_ALL); + + set_current_size(SIZE_WORD); + + // read src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // division by zero + wf_op("\tif (src == 0)\n"); + wf_op("\t{\n"); + gen_exception("\t\t", "C68K_ZERO_DIVIDE_EX"); + quick_terminate_op(10); + wf_op("\t}\n"); + + set_current_size(SIZE_LONG); + + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + + wf_op("\t{\n"); + wf_op("\t\tu32 q, r;\n"); + wf_op("\n"); + wf_op("\t\tq = dst / src;\n"); + wf_op("\t\tr = dst %% src;\n"); + wf_op("\n"); + + wf_op("\t\tif (q & 0xFFFF0000)\n"); + wf_op("\t\t{\n"); + // overflow occured + wf_op("\t\t\tCPU->flag_V = C68K_SR_V;\n"); + quick_terminate_op(70); + wf_op("\t\t}\n"); + + // quotient size = word + set_current_size(SIZE_WORD); + + wf_op("\t\tq &= 0x%.8X;\n", current_bits_mask); + wf_op("\t\tCPU->flag_notZ = q;\n"); + wf_op("\t\tCPU->flag_N = q >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\tCPU->flag_V = CPU->flag_C = 0;\n"); + + wf_op("\t\tres = q | (r << 16);\n"); + + set_current_size(SIZE_LONG); + + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + wf_op("\t}\n"); + + // max cycle = 140 + terminate_op(140 - 50); +} + +static void GenDIVS() +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_DST | GEN_RES | GEN_SRC); + else + start_all(GEN_ALL); + + set_current_size(SIZE_WORD); + + // read src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src_sx(current_ea, current_op->reg_sft); + + // division by zero + wf_op("\tif (src == 0)\n"); + wf_op("\t{\n"); + gen_exception("\t\t", "C68K_ZERO_DIVIDE_EX"); + quick_terminate_op(10); + wf_op("\t}\n"); + + set_current_size(SIZE_LONG); + + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + + // division by zero + wf_op("\tif ((dst == 0x80000000) && (src == -1))\n"); + wf_op("\t{\n"); + wf_op("\t\tCPU->flag_notZ = CPU->flag_N = 0;\n"); + wf_op("\t\tCPU->flag_V = CPU->flag_C = 0;\n"); + wf_op("\t\tres = 0;\n"); + + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + + quick_terminate_op(50); + wf_op("\t}\n"); + + wf_op("\t{\n"); + wf_op("\t\ts32 q, r;\n"); + wf_op("\n"); + wf_op("\t\tq = (s32)dst / (s32)src;\n"); + wf_op("\t\tr = (s32)dst %% (s32)src;\n"); + wf_op("\n"); + + wf_op("\t\tif ((q > 0x7FFF) || (q < -0x8000))\n"); + wf_op("\t\t{\n"); + // overflow occured + wf_op("\t\t\tCPU->flag_V = C68K_SR_V;\n"); + quick_terminate_op(80); + wf_op("\t\t}\n"); + + // quotient size = word + set_current_size(SIZE_WORD); + + wf_op("\t\tq &= 0x%.8X;\n", current_bits_mask); + wf_op("\t\tCPU->flag_notZ = q;\n"); + wf_op("\t\tCPU->flag_N = q >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\tCPU->flag_V = CPU->flag_C = 0;\n"); + + wf_op("\t\tres = q | (r << 16);\n"); + + set_current_size(SIZE_LONG); + + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + wf_op("\t}\n"); + + // max cycle = 158 + terminate_op(158 - 50); +} + +static void GenMULU() +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + set_current_size(SIZE_WORD); + + // read src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read(current_ea2, current_op->reg2_sft); + + set_current_size(SIZE_LONG); + // op + wf_op("\tres *= src;\n"); + + // flag calculation + wf_op("\tCPU->flag_N = res >> 24;\n"); + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_V = CPU->flag_C = 0;\n"); + + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + + // min cycle = 38; max cycle = 70 + terminate_op(38 + (2 * 6)); +} + +static void GenMULS() +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_RES | GEN_SRC); + else + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + set_current_size(SIZE_WORD); + // read src signed + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src_sx(current_ea, current_op->reg_sft); + // read dst signed (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_sx(current_ea2, current_op->reg2_sft); + + set_current_size(SIZE_LONG); + // op + //wf_op("\t(s32)res *= (s32)src;\n"); + wf_op("\tres *= (s32)src;\n"); // antime fix + + // flag calculation + wf_op("\tCPU->flag_N = res >> 24;\n"); + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_V = CPU->flag_C = 0;\n"); + + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + + // min cycle = 38; max cycle = 70 + terminate_op(38 + (2 * 6)); +} + +static void GenArithaD(char op) +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_DST | GEN_RES | GEN_SRC); + else + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) + { + if (!is_ea_memory(current_ea)) current_cycle += 2; + else current_cycle += 4; + } + + // read src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + if (op == ' ') + { + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + } + else + { + // op + wf_op("\tres = dst %c src;\n", op); + // flag calculation + if (op == '+') set_add_flag(); + else set_sub_flag(); + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + } + + terminate_op(4); +} + +static void GenArithDa(char op) +{ + // generate jump table & opcode declaration + current_ea2 = EA_DREG; + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_src(current_ea2, current_op->reg2_sft); + // read dst + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_dst(current_ea, current_op->reg_sft); + // op + wf_op("\tres = dst %c src;\n", op); + // flag calculation + if (op == '+') set_add_flag(); + else set_sub_flag(); + // write dst + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenArithA(char op) +{ + // generate jump table & opcode declaration + current_ea2 = EA_AREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_DST | GEN_RES | GEN_SRC); + else + start_all(GEN_ALL); + + if ((op != ' ') && ((current_size == SIZE_WORD) || (is_ea_memory(current_ea)))) current_cycle += 2; + + // read src + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src_sx(current_ea, current_op->reg_sft); + // read dst (Ax) + set_current_size(SIZE_LONG); + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + // op + if (op == ' ') + { + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + } + else + { + // op + wf_op("\tres = dst %c src;\n", op); + // write dst (Ax) + _ea_write(current_ea2, current_op->reg2_sft); + } + + terminate_op(6); +} + +static void GenArithX(char op) +{ + // generate jump table & opcode declaration + current_ea = EA_DREG; + current_ea2 = EA_DREG; + if ((current_ea == EA_AREG) || (current_ea == EA_DREG) || (current_ea == EA_IMM)) + start_all(GEN_DST | GEN_RES | GEN_SRC); + else + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (Dx) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (Dx) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + // op + wf_op("\tres = dst %c src %c ((CPU->flag_X >> 8) & 1);\n", op, op); + // flag calculation + if (op == '+') set_addx_flag(); + else set_subx_flag(); + // write dst (Dx) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(4); +} + +static void GenArithXM(char op) +{ + // generate jump table & opcode declaration + current_ea = EA_ADEC; + current_ea2 = EA_ADEC; + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (ADEC) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (ADEC) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + // op + wf_op("\tres = dst %c src %c ((CPU->flag_X >> 8) & 1);\n", op, op); + // flag calculation + if (op == '+') set_addx_flag(); + else set_subx_flag(); + // write dst (ADEC) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(6); +} + +static void GenArithX7M(char op) +{ + // generate jump table & opcode declaration + current_ea = EA_ADEC7; + current_ea2 = EA_ADEC; + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (ADEC7) + _ea_calc(current_ea, 0); + _ea_read_src(current_ea, 0); + // read dst (ADEC) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + // op + wf_op("\tres = dst %c src %c ((CPU->flag_X >> 8) & 1);\n", op, op); + // flag calculation + if (op == '+') set_addx_flag(); + else set_subx_flag(); + // write dst (ADEC) + _ea_write(current_ea2, current_op->reg2_sft); + + terminate_op(6); +} + +static void GenArithXM7(char op) +{ + // generate jump table & opcode declaration + current_ea = EA_ADEC; + current_ea2 = EA_ADEC7; + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (ADEC) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (ADEC7) + _ea_calc(current_ea2, 0); + _ea_read_dst(current_ea2, 0); + // op + wf_op("\tres = dst %c src %c ((CPU->flag_X >> 8) & 1);\n", op, op); + // flag calculation + if (op == '+') set_addx_flag(); + else set_subx_flag(); + // write dst (ADEC7) + _ea_write(current_ea2, 0); + + terminate_op(6); +} + +static void GenArithX7M7(char op) +{ + // generate jump table & opcode declaration + current_ea = EA_ADEC7; + current_ea2 = EA_ADEC7; + start_all(GEN_ALL); + + if (current_size == SIZE_LONG) current_cycle += 4; + + // read src (ADEC7) + _ea_calc(current_ea, 0); + _ea_read_src(current_ea, 0); + // read dst (ADEC7) + _ea_calc(current_ea2, 0); + _ea_read_dst(current_ea2, 0); + // op + wf_op("\tres = dst %c src %c ((CPU->flag_X >> 8) & 1);\n", op, op); + // flag calculation + if (op == '+') set_addx_flag(); + else set_subx_flag(); + // write dst (ADEC7) + _ea_write(current_ea2, 0); + + terminate_op(6); +} + +static void GenADDaD() +{ + GenArithaD('+'); +} + +static void GenADDDa() +{ + GenArithDa('+'); +} + +static void GenADDA() +{ + GenArithA('+'); +} + +static void GenADDX() +{ + GenArithX('+'); +} + +static void GenADDXM() +{ + GenArithXM('+'); +} + +static void GenADDX7M() +{ + GenArithX7M('+'); +} + +static void GenADDXM7() +{ + GenArithXM7('+'); +} + +static void GenADDX7M7() +{ + GenArithX7M7('+'); +} + +static void GenSUBaD() +{ + GenArithaD('-'); +} + +static void GenSUBDa() +{ + GenArithDa('-'); +} + +static void GenSUBA() +{ + GenArithA('-'); +} + +static void GenSUBX() +{ + GenArithX('-'); +} + +static void GenSUBXM() +{ + GenArithXM('-'); +} + +static void GenSUBX7M() +{ + GenArithX7M('-'); +} + +static void GenSUBXM7() +{ + GenArithXM7('-'); +} + +static void GenSUBX7M7() +{ + GenArithX7M7('-'); +} + +static void GenCMP() +{ + GenArithaD(' '); +} + +static void GenCMPA() +{ + GenArithA(' '); +} + +static void GenCMPM() +{ + // generate jump table & opcode declaration + current_ea = EA_AINC; + current_ea2 = EA_AINC; + start_all(GEN_ALL); + + // read src (ADEC) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (ADEC) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + + terminate_op(4); + +} + +static void GenCMP7M() +{ + // generate jump table & opcode declaration + current_ea = EA_AINC7; + current_ea2 = EA_AINC; + start_all(GEN_ALL); + + // read src (ADEC) + _ea_calc(current_ea, 0); + _ea_read_src(current_ea, 0); + // read dst (ADEC) + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_dst(current_ea2, current_op->reg2_sft); + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + + terminate_op(4); + +} + +static void GenCMPM7() +{ + // generate jump table & opcode declaration + current_ea = EA_AINC; + current_ea2 = EA_AINC7; + start_all(GEN_ALL); + + // read src (ADEC) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + // read dst (ADEC) + _ea_calc(current_ea2, 0); + _ea_read_dst(current_ea2, 0); + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + + terminate_op(4); + +} + +static void GenCMP7M7() +{ + // generate jump table & opcode declaration + current_ea = EA_AINC7; + current_ea2 = EA_AINC7; + start_all(GEN_ALL); + + // read src (ADEC) + _ea_calc(current_ea, 0); + _ea_read_src(current_ea, 0); + // read dst (ADEC) + _ea_calc(current_ea2, 0); + _ea_read_dst(current_ea2, 0); + // op + wf_op("\tres = dst - src;\n"); + // flag calculation + set_cmp_flag(); + + terminate_op(4); + +} + +static void GenEXGDD() +{ + // generate jump table & opcode declaration + set_current_size(SIZE_LONG); + current_ea = EA_DREG; + current_ea2 = EA_DREG; + start_all(GEN_RES | GEN_SRC); + + // read R1 + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // read R2 + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_src(current_ea2, current_op->reg2_sft); + // write R1 + _ea_write(current_ea2, current_op->reg2_sft); + wf_op("\tres = src;\n"); + // write R2 + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenEXGAA() +{ + // generate jump table & opcode declaration + set_current_size(SIZE_LONG); + current_ea = EA_AREG; + current_ea2 = EA_AREG; + start_all(GEN_RES | GEN_SRC); + + // read R1 + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // read R2 + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_src(current_ea2, current_op->reg2_sft); + // write R1 + _ea_write(current_ea2, current_op->reg2_sft); + wf_op("\tres = src;\n"); + // write R2 + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenEXGAD() +{ + // generate jump table & opcode declaration + set_current_size(SIZE_LONG); + current_ea = EA_AREG; + current_ea2 = EA_DREG; + start_all(GEN_RES | GEN_SRC); + + // read R1 + _ea_calc(current_ea, current_op->reg_sft); + _ea_read(current_ea, current_op->reg_sft); + // read R2 + _ea_calc(current_ea2, current_op->reg2_sft); + _ea_read_src(current_ea2, current_op->reg2_sft); + // write R1 + _ea_write(current_ea2, current_op->reg2_sft); + wf_op("\tres = src;\n"); + // write R2 + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenASRk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read (sign extend) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src_sx(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft);\n"); + wf_op("\tres = ((s32)src) >> sft;\n"); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenLSRk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_N = CPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft);\n"); + wf_op("\tres = src >> sft;\n"); + wf_op("\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenROXRk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & C / X flags calculation + if (current_size != SIZE_LONG) + { + wf_op("\tsrc |= (CPU->flag_X & C68K_SR_X) << %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + wf_op("\tres = (src >> sft) | (src << (%d - sft));\n", current_sft_mask + 2); + wf_op("\tCPU->flag_X = CPU->flag_C = res >> %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + } + else + { + wf_op("\tCPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft);\n"); + wf_op("\tif (sft == 1) res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + 1)));\n"); + wf_op("\telse res = (src >> sft) | (src << (33 - sft)) | ((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + sft)));\n"); + wf_op("\tCPU->flag_X = CPU->flag_C;\n"); + } + + // V / N / Z flags calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\tCPU->flag_notZ = res;\n"); + else wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenRORk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft);\n"); + wf_op("\tres = (src >> sft) | (src << (%d - sft));\n", current_sft_mask + 1); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\tCPU->flag_notZ = res;\n"); + else wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenASLk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift < size op) ... only for BYTE here + if (current_size == SIZE_BYTE) + { + wf_op("\tif (sft < %d)\n", current_sft_mask + 1); + wf_op("\t{\n"); + } + + // op & flag X, C, N, Z calculation + if (((current_sft_mask + 1) - C68K_SR_C_SFT) < 8) + wf_op("\t\tCPU->flag_X = CPU->flag_C = src << (%d + sft);\n", current_sft_mask + 1 - C68K_SR_C_SFT); + else wf_op("\t\tCPU->flag_X = CPU->flag_C = src >> (%d - sft);\n", current_sft_mask + 1 - C68K_SR_C_SFT); + wf_op("\t\tres = src << sft;\n"); + wf_op("\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + // we do V flag calculation at end for a better register usage + wf_op("\t\tCPU->flag_V = 0;\n"); + if (current_size == SIZE_BYTE) + { + wf_op("\t\tif ((sft > %d) && (src)) CPU->flag_V = C68K_SR_V;\n", current_sft_mask); + wf_op("\t\telse\n"); + } + wf_op("\t\t{\n"); + wf_op("\t\t\tu32 msk = (((s32)0x80000000) >> (sft + %d)) & 0x%.8X;\n", 31 - current_sft_mask, current_bits_mask); + wf_op("\t\t\tsrc &= msk;\n"); + wf_op("\t\t\tif ((src) && (src != msk)) CPU->flag_V = C68K_SR_V;\n"); + wf_op("\t\t}\n"); + + if (current_size == SIZE_BYTE) + { + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of shift == size op (sft = 8 for byte operation) + wf_op("\tif (src) CPU->flag_V = C68K_SR_V;\n"); + wf_op("\telse CPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT;\n"); + + // write + wf_op("\tres = 0;\n"); + _ea_write(current_ea, current_op->reg_sft); + + // others flags + wf_op("\tCPU->flag_N = 0;\n"); + wf_op("\tCPU->flag_notZ = 0;\n"); + } + + terminate_op(6); +} + +static void GenLSLk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + if (((current_sft_mask + 1) - C68K_SR_C_SFT) < 8) + wf_op("\tCPU->flag_X = CPU->flag_C = src << (%d + sft);\n", current_sft_mask + 1 - C68K_SR_C_SFT); + else wf_op("\tCPU->flag_X = CPU->flag_C = src >> (%d - sft);\n", current_sft_mask + 1 - C68K_SR_C_SFT); + wf_op("\tres = src << sft;\n"); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenROXLk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & C / X flags calculation + if (current_size != SIZE_LONG) + { + wf_op("\tsrc |= (CPU->flag_X & C68K_SR_X) << %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + wf_op("\tres = (src << sft) | (src >> (%d - sft));\n", current_sft_mask + 2); + wf_op("\tCPU->flag_X = CPU->flag_C = res >> %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + } + else + { + wf_op("\tCPU->flag_C = src >> ((32 - C68K_SR_C_SFT) - sft);\n"); + wf_op("\tif (sft == 1) res = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> ((C68K_SR_X_SFT + 1) - 1));\n"); + wf_op("\telse res = (src << sft) | (src >> (33 - sft)) | ((CPU->flag_X & C68K_SR_X) >> ((C68K_SR_X_SFT + 1) - sft));\n"); + wf_op("\tCPU->flag_X = CPU->flag_C;\n"); + } + + // V / N / Z flags calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\tCPU->flag_notZ = res;\n"); + else wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenROLk() +{ + u32 base; + + current_ea = EA_DREG; // dst = Dx + + base = get_current_opcode_base(); + // generate jump table + gen_opjumptable_ext(base, 0x0000, 0x0E00, 0x0200, base); + // generate label & declarations + start_op(base, GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = (((Opcode >> 9) - 1) & 7) + 1;\n"); + adds_CCnt("sft * 2"); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + if (((current_sft_mask + 1) - C68K_SR_C_SFT) < 8) + wf_op("\tCPU->flag_C = src << (%d + sft);\n", current_sft_mask + 1 - C68K_SR_C_SFT); + else wf_op("\tCPU->flag_C = src >> (%d - sft);\n", current_sft_mask + 1 - C68K_SR_C_SFT); + wf_op("\tres = (src << sft) | (src >> (%d - sft));\n", current_sft_mask + 1); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\tCPU->flag_notZ = res;\n"); + else wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(6); +} + +static void GenASRD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read (sign extend) + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src_sx(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + // if (shift < size op) + wf_op("\t\tif (sft < %d)\n", current_sft_mask + 1); + wf_op("\t\t{\n"); + + // op & flag calculation + wf_op("\t\t\tCPU->flag_V = 0;\n"); + if (current_size == SIZE_BYTE) wf_op("\t\t\tCPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft);\n"); + else wf_op("\t\t\tCPU->flag_X = CPU->flag_C = (src >> (sft - 1)) << C68K_SR_C_SFT;\n"); + wf_op("\t\t\tres = ((s32)src) >> sft;\n", szcs); + wf_op("\t\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\t\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t\t}\n"); + wf_op("\n"); + + // special case of shift >= size op + + // if signed + wf_op("\t\tif (src & (1 << %d))\n", current_sft_mask); + wf_op("\t\t{\n"); + + // op & flag calculation + wf_op("\t\t\tCPU->flag_N = C68K_SR_N;\n"); + wf_op("\t\t\tCPU->flag_notZ = 1;\n"); + wf_op("\t\t\tCPU->flag_V = 0;\n"); + wf_op("\t\t\tCPU->flag_C = C68K_SR_C;\n"); + wf_op("\t\t\tCPU->flag_X = C68K_SR_X;\n"); + wf_op("\t\t\tres = 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t\t}\n"); + wf_op("\n"); + + // if not signed + wf_op("\t\tCPU->flag_N = 0;\n"); + wf_op("\t\tCPU->flag_notZ = 0;\n"); + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tCPU->flag_C = 0;\n"); + wf_op("\t\tCPU->flag_X = 0;\n"); + wf_op("\t\tres = 0;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenLSRD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + // if (shift <= size op) + if (current_size == SIZE_LONG) wf_op("\t\tif (sft < 32)\n"); + else wf_op("\t\tif (sft <= %d)\n", current_sft_mask + 1); + wf_op("\t\t{\n"); + + // op & flag calculation + wf_op("\t\t\tCPU->flag_N = CPU->flag_V = 0;\n"); + if (current_size == SIZE_BYTE) wf_op("\t\t\tCPU->flag_X = CPU->flag_C = src << ((C68K_SR_C_SFT + 1) - sft);\n"); + else wf_op("\t\t\tCPU->flag_X = CPU->flag_C = (src >> (sft - 1)) << C68K_SR_C_SFT;\n"); + wf_op("\t\t\tres = src >> sft;\n", szcs); + wf_op("\t\t\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t\t}\n"); + wf_op("\n"); + + // special case of shift > size op + if (current_size == SIZE_LONG) + { + wf_op("\t\tif (sft == 32) CPU->flag_C = src >> (31 - C68K_SR_C_SFT);\n"); + wf_op("\t\telse CPU->flag_C = 0;\n"); + wf_op("\t\tCPU->flag_X = CPU->flag_C;\n"); + } + else wf_op("\t\tCPU->flag_X = CPU->flag_C = 0;\n"); + wf_op("\t\tCPU->flag_N = 0;\n"); + wf_op("\t\tCPU->flag_notZ = 0;\n"); + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tres = 0;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenROXRD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + wf_op("\t\tsft %%= %d;\n", current_sft_mask + 2); + wf_op("\n"); + + // op & C / X flag calculation + if (current_size != SIZE_LONG) + { + wf_op("\t\tsrc |= (CPU->flag_X & C68K_SR_X) << %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + wf_op("\t\tres = (src >> sft) | (src << (%d - sft));\n", current_sft_mask + 2); + wf_op("\t\tCPU->flag_X = CPU->flag_C = res >> %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + } + else + { + wf_op("\t\tif (sft != 0)\n"); + wf_op("\t\t{\n"); + wf_op("\t\t\tif (sft == 1) res = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + 1)));\n"); + wf_op("\t\t\telse res = (src >> sft) | (src << (33 - sft)) | (((CPU->flag_X & C68K_SR_X) << (32 - (C68K_SR_X_SFT + 1))) >> (sft - 1));\n"); + wf_op("\t\t\tCPU->flag_X = (src >> (32 - sft)) << C68K_SR_X_SFT;\n"); + wf_op("\t\t}\n"); + wf_op("\t\telse res = src;\n"); + wf_op("\t\tCPU->flag_C = CPU->flag_X;\n"); + } + + // V / N / Z flag calculation + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\t\tCPU->flag_notZ = res;\n"); + else wf_op("\t\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = CPU->flag_X;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenRORD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + wf_op("\t\tsft &= 0x%.2X;\n", current_sft_mask); + wf_op("\t\t\n"); + + // op & flag calculation + if (current_size == SIZE_BYTE) + wf_op("\t\tCPU->flag_C = src << (C68K_SR_C_SFT - ((sft - 1) & 7));\n"); + else + wf_op("\t\tCPU->flag_C = (src >> ((sft - 1) & %d)) << C68K_SR_C_SFT;\n", current_sft_mask); + wf_op("\t\tres = (src >> sft) | (src << (%d - sft));\n", current_sft_mask + 1); + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\t\tCPU->flag_notZ = res;\n"); + else wf_op("\t\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenASLD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + // if (shift < size op) + wf_op("\t\tif (sft < %d)\n", current_sft_mask + 1); + wf_op("\t\t{\n"); + + // op & flag calculation + if (current_size != SIZE_LONG) + { + wf_op("\t\t\tCPU->flag_X = CPU->flag_C = (src << sft) >> %d;\n", (current_sft_mask + 1) - C68K_SR_C_SFT); + wf_op("\t\t\tres = (src << sft) & 0x%.8X;\n", current_bits_mask); + } + else + { + wf_op("\t\t\tCPU->flag_X = CPU->flag_C = (src >> (32 - sft)) << C68K_SR_C_SFT;\n"); + wf_op("\t\t\tres = src << sft;\n"); + } + wf_op("\t\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\t\tCPU->flag_notZ = res;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + // we do V flag calculation at end for a better register usage + wf_op("\t\t\tCPU->flag_V = 0;\n"); + wf_op("\t\t\t{\n"); + wf_op("\t\t\t\tu32 msk = (((s32)0x80000000) >> (sft + %d)) & 0x%.8X;\n", 31 - current_sft_mask, current_bits_mask); + wf_op("\t\t\t\tsrc &= msk;\n"); + wf_op("\t\t\t\tif ((src) && (src != msk)) CPU->flag_V = C68K_SR_V;\n"); + wf_op("\t\t\t}\n"); + + quick_terminate_op(6); + wf_op("\t\t}\n"); + wf_op("\n"); + + // special case of shift >= size op + { + unsigned bugfixo = 0; + + if(0xFF == current_bits_mask) bugfixo = 8; + else if(0xFFFF == current_bits_mask) bugfixo = 16; + else if(0xFFFFFFFF == current_bits_mask) bugfixo = 32; + + assert(bugfixo == 8 || bugfixo == 16 || bugfixo == 32); + + wf_op("\t\tif (sft == %d) CPU->flag_C = src << C68K_SR_C_SFT;\n", bugfixo); //current_bits_mask + 1); + } + wf_op("\t\telse CPU->flag_C = 0;\n"); + wf_op("\t\tCPU->flag_X = CPU->flag_C;\n"); + wf_op("\t\tif (src) CPU->flag_V = C68K_SR_V;\n"); + wf_op("\t\telse CPU->flag_V = 0;\n"); + + wf_op("\t\tres = 0;\n"); + // write + _ea_write(current_ea, current_op->reg_sft); + + // others flags + wf_op("\t\tCPU->flag_N = 0;\n"); + wf_op("\t\tCPU->flag_notZ = 0;\n"); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenLSLD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + // if (shift <= size op) + if (current_size == SIZE_LONG) wf_op("\t\tif (sft < 32)\n"); + else wf_op("\t\tif (sft <= %d)\n", current_sft_mask + 1); + wf_op("\t\t{\n"); + + // op & flag calculation + if (current_size != SIZE_LONG) + { + wf_op("\t\t\tCPU->flag_X = CPU->flag_C = (src << sft) >> %d;\n", (current_sft_mask + 1) - C68K_SR_C_SFT); + wf_op("\t\t\tres = (src << sft) & 0x%.8X;\n", current_bits_mask); + } + else + { + wf_op("\t\t\tCPU->flag_X = CPU->flag_C = (src >> (32 - sft)) << C68K_SR_C_SFT;\n"); + wf_op("\t\t\tres = src << sft;\n"); + } + wf_op("\t\t\tCPU->flag_V = 0;\n"); + wf_op("\t\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\t\tCPU->flag_notZ = res;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t\t}\n"); + wf_op("\n"); + + // special case of shift > size op + if (current_size == SIZE_LONG) + { + wf_op("\t\tif (sft == 32) CPU->flag_C = src << C68K_SR_C_SFT;\n"); + wf_op("\t\telse CPU->flag_C = 0;\n"); + wf_op("\t\tCPU->flag_X = CPU->flag_C;\n"); + } + else wf_op("\t\tCPU->flag_X = CPU->flag_C = 0;\n"); + wf_op("\t\tCPU->flag_N = 0;\n"); + wf_op("\t\tCPU->flag_notZ = 0;\n"); + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tres = 0;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenROXLD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + wf_op("\t\tsft %%= %d;\n", current_sft_mask + 2); + wf_op("\n"); + + // op & C/X flags calculation + if (current_size != SIZE_LONG) + { + wf_op("\t\tsrc |= (CPU->flag_X & C68K_SR_X) << %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + wf_op("\t\tres = (src << sft) | (src >> (%d - sft));\n", current_sft_mask + 2); + wf_op("\t\tCPU->flag_X = CPU->flag_C = res >> %d;\n", (current_sft_mask + 1) - C68K_SR_X_SFT); + } + else + { + wf_op("\t\tif (sft != 0)\n"); + wf_op("\t\t{\n"); + wf_op("\t\t\tif (sft == 1) res = (src << 1) | ((CPU->flag_X >> ((C68K_SR_X_SFT + 1) - 1)) & 1);\n"); + wf_op("\t\t\telse res = (src << sft) | (src >> (33 - sft)) | (((CPU->flag_X >> ((C68K_SR_X_SFT + 1) - 1)) & 1) << (sft - 1));\n"); + wf_op("\t\t\tCPU->flag_X = (src >> (32 - sft)) << C68K_SR_X_SFT;\n"); + wf_op("\t\t}\n"); + wf_op("\t\telse res = src;\n"); + wf_op("\t\tCPU->flag_C = CPU->flag_X;\n"); + } + + // V / N / Z flags calculation + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + if (current_size == SIZE_LONG) wf_op("\t\tCPU->flag_notZ = res;\n"); + else wf_op("\t\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = CPU->flag_X;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenROLD() +{ +// u32 base = get_current_opcode_base(); + + current_ea = EA_DREG; // dst = Dx + + start_all(GEN_RES | GEN_SRC); + + if (current_size == SIZE_LONG) current_cycle += 2; + + wf_op("\tu32 sft;\n"); + wf_op("\n"); + wf_op("\tsft = CPU->D[(Opcode >> %d) & 7] & 0x3F;\n", current_op->reg2_sft); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // if (shift != 0) + wf_op("\tif (sft)\n"); + wf_op("\t{\n"); + + adds_CCnt("sft * 2"); + + // if ((shift & size op) != 0) + wf_op("\t\tif (sft &= 0x%.2X)\n", current_sft_mask); + wf_op("\t\t{\n"); + + // op & flag calculation + if (current_size != SIZE_LONG) + { + wf_op("\t\t\tCPU->flag_C = (src << sft) >> %d;\n", (current_sft_mask + 1) - C68K_SR_C_SFT); + wf_op("\t\t\tres = ((src << sft) | (src >> (%d - sft))) & 0x%.8X;\n", current_sft_mask + 1, current_bits_mask); + } + else + { + wf_op("\t\t\tCPU->flag_C = (src >> (32 - sft)) << C68K_SR_C_SFT;\n"); + wf_op("\t\t\tres = (src << sft) | (src >> (%d - sft));\n", current_sft_mask + 1); + } + wf_op("\t\t\tCPU->flag_V = 0;\n"); + wf_op("\t\t\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\t\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + quick_terminate_op(6); + wf_op("\t\t}\n"); + wf_op("\n"); + + // special case of ((shift & size op) == 0) + wf_op("\t\tCPU->flag_V = 0;\n"); + wf_op("\t\tCPU->flag_C = src << C68K_SR_C_SFT;\n"); + wf_op("\t\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\t\tCPU->flag_notZ = src;\n"); + + quick_terminate_op(6); + wf_op("\t}\n"); + wf_op("\n"); + + // special case of (shift == 0) + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_N = src >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = src;\n"); + + terminate_op(6); +} + +static void GenASR() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT;\n"); + wf_op("\tres = (src >> 1) | (src & (1 << %d));\n", current_sft_mask); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenLSR() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_N = CPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = src << C68K_SR_C_SFT;\n"); + wf_op("\tres = src >> 1;\n"); + wf_op("\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenROXR() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tres = (src >> 1) | ((CPU->flag_X & C68K_SR_X) << %d);\n", current_sft_mask - C68K_SR_X_SFT); + wf_op("\tCPU->flag_C = CPU->flag_X = src << C68K_SR_C_SFT;\n"); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res;\n"); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenROR() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = src << C68K_SR_C_SFT;\n"); + wf_op("\tres = (src >> 1) | (src << %d);\n", current_sft_mask); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenASL() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_X = CPU->flag_C = src >> %d;\n", current_sft_mask - C68K_SR_C_SFT); + wf_op("\tres = src << 1;\n"); + wf_op("\tCPU->flag_V = (src ^ res) >> %d;\n", current_sft_mask - C68K_SR_V_SFT); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenLSL() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = src >> %d;\n", current_sft_mask - C68K_SR_C_SFT); + wf_op("\tres = src << 1;\n"); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenROXL() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tres = (src << 1) | ((CPU->flag_X & C68K_SR_X) >> %d);\n", C68K_SR_X_SFT); + wf_op("\tCPU->flag_X = CPU->flag_C = src >> %d;\n", current_sft_mask - C68K_SR_C_SFT); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +static void GenROL() +{ + set_current_size(SIZE_WORD); // dst = mem (word operation) + start_all(GEN_ADR | GEN_RES | GEN_SRC); + + // read + _ea_calc(current_ea, current_op->reg_sft); + _ea_read_src(current_ea, current_op->reg_sft); + + // op & flag calculation + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_C = src >> %d;\n", current_sft_mask - C68K_SR_C_SFT); + wf_op("\tres = (src << 1) | (src >> %d);\n", current_sft_mask); + wf_op("\tCPU->flag_N = res >> %d;\n", current_sft_mask - C68K_SR_N_SFT); + wf_op("\tCPU->flag_notZ = res & 0x%.8X;\n", current_bits_mask); + + // write + _ea_write(current_ea, current_op->reg_sft); + + terminate_op(8); +} + +// main function +///////////////// +int main(int argc, char *argv[]) +{ + u32 i; + u32 s; + u32 smax; + + // clear opcode files + for(i = 0; i < 0x10; i++) + { + char fn[16]; + + sprintf(fn, "c68k_op%.1X.inc", (int)i); + opcode_file = fopen(fn, "wt"); + if (opcode_file != NULL) + { + fclose(opcode_file); + opcode_file = NULL; + } + } + + // init opcode jump table + ini_file = fopen("c68k_ini.inc", "wt"); +#ifndef C68K_NO_JUMP_TABLE +#ifdef C68K_CONST_JUMP_TABLE + for(i = 0; i < 0x10000; i++) op_jump_table[i] = OP_ILLEGAL; +#else + // defaut ILLEGAL instruction + gen_jumptable(0x0000, 0x0000, 0xFFFF, 1, 0, 0, 0, 0, 0, 0, 0x4AFC); +#endif +#endif + // generate opcode files + for(i = 0; i < OP_INFO_TABLE_LEN; i++) + { + current_op = &(op_info_table[i]); + if (prepare_generate()) return 1; + + // s = size to start + current_size = 0; + smax = SIZE_LONG; + if (current_op->size_type == 0) smax = 0; + else if (current_op->size_type == 1) current_size = 1; + + for(s = current_size; s <= smax; s++) + { + if (current_op->eam_sft != -1) + { + for(current_ea = 0; current_ea <= EA_ADEC7; current_ea++) + { + if (!has_ea(current_ea)) continue; + current_eam = _ea_to_eamreg(current_ea) >> 3; + current_reg = _ea_to_eamreg(current_ea) & 7; + + if (op_info_table[i].eam2_sft != -1) + { + for(current_ea2 = 0; current_ea2 <= EA_ADEC7; current_ea2++) + { + if (!has_ea2(current_ea2)) continue; + current_eam2 = _ea_to_eamreg(current_ea2) >> 3; + current_reg2 = _ea_to_eamreg(current_ea2) & 7; + + set_current_size(s); + current_op->genfunc(); + } + } + else + { + current_reg2 = 0; + set_current_size(s); + current_op->genfunc(); + } + } + } + else + { + current_reg = 0; + set_current_size(s); + current_op->genfunc(); + } + } + } + + // generate jumptable file +#ifdef C68K_CONST_JUMP_TABLE + if (ini_file != NULL) + { + fprintf(ini_file, "\tstatic const void *JumpTable[0x10000] =\n"); + fprintf(ini_file, "\t{\n"); + + for(i = 0; i < (0x10000 - 4); i += 4) + fprintf(ini_file, "\t\t&&OP_0x%.4X, &&OP_0x%.4X, &&OP_0x%.4X, &&OP_0x%.4X,\n", op_jump_table[i + 0], op_jump_table[i + 1], op_jump_table[i + 2], op_jump_table[i + 3]); + fprintf(ini_file, "\t\t&&OP_0x%.4X, &&OP_0x%.4X, &&OP_0x%.4X, &&OP_0x%.4X\n", op_jump_table[0xFFFC], op_jump_table[0xFFFD], op_jump_table[0xFFFE], op_jump_table[0xFFFF]); + + fprintf(ini_file, "\t};\n\n"); + } +#endif + + // close handle + if (ini_file != NULL) fclose(ini_file); + if (opcode_file != NULL) fclose(opcode_file); + + return 0; +} +#endif diff --git a/libmednahawk/src/hw_cpu/c68k/gen68k.h b/libmednahawk/src/hw_cpu/c68k/gen68k.h new file mode 100644 index 0000000000..82034da7a6 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/gen68k.h @@ -0,0 +1,68 @@ +/* Copyright 2003-2004 Stephane Dallongeville + Copyright 2004 Theo Berkau + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/********************************************************************************* + * GEN68K.H : + * + * C68K generator include file + * + ********************************************************************************/ + +#ifndef _GEN68K_H_ +#define _GEN68K_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +// setting +/////////// + +// structure definition +//////////////////////// + +typedef struct { + u32 name; + u32 mask; + u32 match; +} c68k_ea_info_struc; + +typedef struct __c68k_op_info_struc { + s8 op_name[8 + 1]; + u16 op_base; + u16 op_mask; + s8 size_type; + s8 size_sft; + s8 eam_sft; + s8 reg_sft; + s8 eam2_sft; + s8 reg2_sft; + s8 ea_supported[12 + 1]; + s8 ea2_supported[12 + 1]; + void (*genfunc)(); +} c68k_op_info_struc; + + +#ifdef __cplusplus +} +#endif + +#endif // _GEN68K_H_ + diff --git a/libmednahawk/src/hw_cpu/c68k/gen68k.inc b/libmednahawk/src/hw_cpu/c68k/gen68k.inc new file mode 100644 index 0000000000..b7b5b90742 --- /dev/null +++ b/libmednahawk/src/hw_cpu/c68k/gen68k.inc @@ -0,0 +1,1649 @@ +/* Copyright 2003-2004 Stephane Dallongeville + + This file is part of Yabause. + + Yabause is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Yabause is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Yabause; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include + +#define EA_DREG 0 +#define EA_AREG 1 +#define EA_AIND 2 +#define EA_AINC 3 +#define EA_ADEC 4 +#define EA_D16A 5 +#define EA_D8AX 6 +#define EA_A16 7 +#define EA_A32 8 +#define EA_D16P 9 +#define EA_D8PX 10 +#define EA_IMM 11 +#define EA_AINC7 12 +#define EA_ADEC7 13 +#define EA_ILLEGAL 15 + +#define SIZE_BYTE 0 +#define SIZE_WORD 1 +#define SIZE_LONG 2 + +#define COND_TR 0 +#define COND_FA 1 +#define COND_HI 2 +#define COND_LS 3 +#define COND_CC 4 +#define COND_CS 5 +#define COND_NE 6 +#define COND_EQ 7 +#define COND_VC 8 +#define COND_VS 9 +#define COND_PL 10 +#define COND_MI 11 +#define COND_GE 12 +#define COND_LT 13 +#define COND_GT 14 +#define COND_LE 15 + +#define COND_NOT_TR COND_FA +#define COND_NOT_FA COND_TR +#define COND_NOT_HI COND_LS +#define COND_NOT_LS COND_HI +#define COND_NOT_CC COND_CS +#define COND_NOT_CS COND_CC +#define COND_NOT_NE COND_EQ +#define COND_NOT_EQ COND_NE +#define COND_NOT_VC COND_VS +#define COND_NOT_VS COND_VC +#define COND_NOT_PL COND_MI +#define COND_NOT_MI COND_PL +#define COND_NOT_GE COND_LT +#define COND_NOT_LT COND_GE +#define COND_NOT_GT COND_LE +#define COND_NOT_LE COND_GT + +#define OP_ILLEGAL 0x4AFC + +static void GenORI(); +static void GenORICCR(); +static void GenORISR(); +static void GenANDI(); +static void GenANDICCR(); +static void GenANDISR(); +static void GenEORI(); +static void GenEORICCR(); +static void GenEORISR(); +static void GenSUBI(); +static void GenADDI(); +static void GenCMPI(); +static void GenBTSTn(); +static void GenBCHGn(); +static void GenBCLRn(); +static void GenBSETn(); +static void GenBTST(); +static void GenBCHG(); +static void GenBCLR(); +static void GenBSET(); +static void GenMOVEPWaD(); +static void GenMOVEPLaD(); +static void GenMOVEPWDa(); +static void GenMOVEPLDa(); +static void GenMOVEB(); +static void GenMOVEL(); +static void GenMOVEW(); +static void GenMOVEAL(); +static void GenMOVEAW(); +static void GenNEGX(); +static void GenCLR(); +static void GenNEG(); +static void GenNOT(); +static void GenMOVESRa(); +static void GenMOVEaSR(); +static void GenMOVEaCCR(); +static void GenNBCD(); +static void GenPEA(); +static void GenSWAP(); +static void GenMOVEMaR(); +static void GenEXT(); +static void GenTST(); +static void GenTAS(); +static void GenILLEGAL(); +static void GenMOVEMRa(); +static void GenTRAP(); +static void GenLINK(); +static void GenLINKA7(); +static void GenULNK(); +static void GenULNKA7(); +static void GenMOVEAUSP(); +static void GenMOVEUSPA(); +static void GenRESET(); +static void GenNOP(); +static void GenSTOP(); +static void GenRTE(); +static void GenRTS(); +static void GenTRAPV(); +static void GenRTR(); +static void GenJSR(); +static void GenJMP(); +static void GenCHK(); +static void GenLEA(); +static void GenSTCC(); +static void GenDBCC(); +static void GenADDQ(); +static void GenSUBQ(); +static void GenBCC(); +static void GenBCC16(); +static void GenBRA(); +static void GenBRA16(); +static void GenBSR(); +static void GenBSR16(); +static void GenMOVEQ(); +static void GenORaD(); +static void GenORDa(); +static void GenSBCD(); +static void GenSBCDM(); +static void GenSBCD7M(); +static void GenSBCDM7(); +static void GenSBCD7M7(); +static void GenDIVU(); +static void GenDIVS(); +static void GenSUBaD(); +static void GenSUBDa(); +static void GenSUBX(); +static void GenSUBXM(); +static void GenSUBX7M(); +static void GenSUBXM7(); +static void GenSUBX7M7(); +static void GenSUBA(); +static void GenCMP(); +static void GenCMPM(); +static void GenCMP7M(); +static void GenCMPM7(); +static void GenCMP7M7(); +static void GenEORDa(); +static void GenCMPA(); +static void GenANDaD(); +static void GenANDDa(); +static void GenABCD(); +static void GenABCDM(); +static void GenABCD7M(); +static void GenABCDM7(); +static void GenABCD7M7(); +static void GenMULU(); +static void GenMULS(); +static void GenEXGDD(); +static void GenEXGAA(); +static void GenEXGAD(); +static void GenADDaD(); +static void GenADDDa(); +static void GenADDX(); +static void GenADDXM(); +static void GenADDX7M(); +static void GenADDXM7(); +static void GenADDX7M7(); +static void GenADDA(); +static void GenASRk(); +static void GenLSRk(); +static void GenROXRk(); +static void GenRORk(); +static void GenASLk(); +static void GenLSLk(); +static void GenROXLk(); +static void GenROLk(); +static void GenASRD(); +static void GenLSRD(); +static void GenROXRD(); +static void GenRORD(); +static void GenASLD(); +static void GenLSLD(); +static void GenROXLD(); +static void GenROLD(); +static void GenASR(); +static void GenLSR(); +static void GenROXR(); +static void GenROR(); +static void GenASL(); +static void GenLSL(); +static void GenROXL(); +static void GenROL(); + +static void Gen1010(); +static void Gen1111(); + +#define OP_INFO_TABLE_LEN (142 + 2) + +static c68k_op_info_struc op_info_table[OP_INFO_TABLE_LEN] = +{ // DAAAAddaaddi DAAAAddaaddi + // iid181318m iid181318m + // siz siz eam ear eam ear nne6A626Pm nne6A626Pm + + // opname opbase opmask typ sft 1 1 2 2 dccAX PX dccAX PX GenFunc + { "1010", 0xA000, 0xF000, 0, 0, -1, -1, -1, -1, "------------", "------------", Gen1010 }, + { "1111", 0xF000, 0xF000, 0, 0, -1, -1, -1, -1, "------------", "------------", Gen1111 }, + + { "ORI", 0x0000, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenORI }, + { "ORICCR", 0x003C, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenORICCR }, + { "ORISR", 0x007C, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenORISR }, + { "ANDI", 0x0200, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenANDI }, + { "ANDICCR", 0x023C, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenANDICCR }, + { "ANDISR", 0x027C, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenANDISR }, + { "EORI", 0x0A00, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenEORI }, + { "EORICCR", 0x0A3C, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenEORICCR }, + { "EORISR", 0x0A7C, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenEORISR }, + + { "SUBI", 0x0400, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenSUBI }, + { "ADDI", 0x0600, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenADDI }, + { "CMPI", 0x0C00, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenCMPI }, + + { "BTSTn", 0x0800, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooooo-", "------------", GenBTSTn }, + { "BCHGn", 0x0840, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenBCHGn }, + { "BCLRn", 0x0880, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenBCLRn }, + { "BSETn", 0x08C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenBSETn }, + + { "BTST", 0x0100, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-oooooooooo", "------------", GenBTST }, + { "BCHG", 0x0140, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-ooooooo---", "------------", GenBCHG }, + { "BCLR", 0x0180, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-ooooooo---", "------------", GenBCLR }, + { "BSET", 0x01C0, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-ooooooo---", "------------", GenBSET }, + + { "MOVEPWaD", 0x0108, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenMOVEPWaD }, + { "MOVEPLaD", 0x0148, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenMOVEPLaD }, + { "MOVEPWDa", 0x0188, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenMOVEPWDa }, + { "MOVEPLDa", 0x01C8, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenMOVEPLDa }, + + { "MOVEB", 0x1000, 0xF000, 0, 0, 3, 0, 6, 9, "oooooooooooo", "o-ooooooo---", GenMOVEB }, + { "MOVEL", 0x2000, 0xF000, 0, 0, 3, 0, 6, 9, "oooooooooooo", "o-ooooooo---", GenMOVEL }, + { "MOVEW", 0x3000, 0xF000, 0, 0, 3, 0, 6, 9, "oooooooooooo", "o-ooooooo---", GenMOVEW }, + { "MOVEAL", 0x2040, 0xF1C0, 0, 0, 3, 0, -1, 9, "oooooooooooo", "------------", GenMOVEAL }, + { "MOVEAW", 0x3040, 0xF1C0, 0, 0, 3, 0, -1, 9, "oooooooooooo", "------------", GenMOVEAW }, + + { "NEGX", 0x4000, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenNEGX }, + { "CLR", 0x4200, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenCLR }, + { "NEG", 0x4400, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenNEG }, + { "NOT", 0x4600, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenNOT }, + + { "MOVESRa", 0x40C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenMOVESRa }, + { "MOVEaCCR", 0x44C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-oooooooooo", "------------", GenMOVEaCCR }, + { "MOVEaSR", 0x46C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-oooooooooo", "------------", GenMOVEaSR }, + + { "NBCD", 0x4800, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenNBCD }, + { "PEA", 0x4840, 0xFFC0, 0, 0, 3, 0, -1, -1, "--o--oooooo-", "------------", GenPEA }, + { "SWAP", 0x4840, 0xFFF8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenSWAP }, + + { "MOVEMRa", 0x4880, 0xFF80, 1, 6, 3, 0, -1, -1, "--o-ooooo---", "------------", GenMOVEMRa }, + { "EXT", 0x4880, 0xFFB8, 1, 6, -1, 0, -1, -1, "------------", "------------", GenEXT }, + { "TST", 0x4A00, 0xFF00, 2, 6, 3, 0, -1, -1, "o-ooooooo---", "------------", GenTST }, + { "TAS", 0x4AC0, 0xFFC0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenTAS }, + { "ILLEGAL", 0x4AFC, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenILLEGAL }, + { "MOVEMaR", 0x4C80, 0xFF80, 1, 6, 3, 0, -1, -1, "--oo-oooooo-", "------------", GenMOVEMaR }, + + { "TRAP", 0x4E40, 0xFFF0, 0, 0, -1, -1, -1, -1, "------------", "------------", GenTRAP }, + { "LINK", 0x4E50, 0xFFF8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenLINK }, + { "LINKA7", 0x4E57, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenLINKA7 }, + { "ULNK", 0x4E58, 0xFFF8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenULNK }, + { "ULNKA7", 0x4E5F, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenULNKA7 }, + { "MOVEAUSP", 0x4E60, 0xFFF8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenMOVEAUSP }, + { "MOVEUSPA", 0x4E68, 0xFFF8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenMOVEUSPA }, + + { "RESET", 0x4E70, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenRESET }, + { "NOP", 0x4E71, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenNOP }, + { "STOP", 0x4E72, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenSTOP }, + { "RTE", 0x4E73, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenRTE }, + { "RTS", 0x4E75, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenRTS }, + { "TRAPV", 0x4E76, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenTRAPV }, + { "RTR", 0x4E77, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenRTR }, + + { "JSR", 0x4E80, 0xFFC0, 0, 0, 3, 0, -1, -1, "--o--oooooo-", "------------", GenJSR }, + { "JMP", 0x4EC0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--o--oooooo-", "------------", GenJMP }, + + { "CHK", 0x4180, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-oooooooooo", "------------", GenCHK }, + { "LEA", 0x41C0, 0xF1C0, 0, 0, 3, 0, -1, 9, "--o--oooooo-", "------------", GenLEA }, + + { "STCC", 0x50C0, 0xF0C0, 0, 0, 3, 0, -1, -1, "o-ooooooo---", "------------", GenSTCC }, + { "DBCC", 0x50C8, 0xF0F8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenDBCC }, + + { "ADDQ", 0x5000, 0xF100, 2, 6, 3, 0, -1, -1, "ooooooooo---", "------------", GenADDQ }, + { "SUBQ", 0x5100, 0xF100, 2, 6, 3, 0, -1, -1, "ooooooooo---", "------------", GenSUBQ }, + + { "BCC", 0x6000, 0xF000, 0, 0, -1, -1, -1, -1, "------------", "------------", GenBCC }, + { "BCC16", 0x6000, 0xF0FF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenBCC16 }, + { "BRA", 0x6000, 0xFF00, 0, 0, -1, -1, -1, -1, "------------", "------------", GenBRA }, + { "BRA16", 0x6000, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenBRA16 }, + { "BSR", 0x6100, 0xFF00, 0, 0, -1, -1, -1, -1, "------------", "------------", GenBSR }, + { "BSR16", 0x6100, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenBSR16 }, + + { "MOVEQ", 0x7000, 0xF100, 0, 0, -1, 9, -1, -1, "------------", "------------", GenMOVEQ }, + + { "ORaD", 0x8000, 0xF100, 2, 6, 3, 0, -1, 9, "o-oooooooooo", "------------", GenORaD }, + { "ORDa", 0x8100, 0xF100, 2, 6, 3, 0, -1, 9, "--ooooooo---", "------------", GenORDa }, + { "SBCD", 0x8100, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenSBCD }, + { "SBCDM", 0x8108, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenSBCDM }, + { "SBCD7M", 0x810F, 0xF1FF, 0, 0, -1, 0, -1, 9, "------------", "------------", GenSBCD7M }, + { "SBCDM7", 0x8F08, 0xFFF8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenSBCDM7 }, + { "SBCD7M7", 0x8F0F, 0xFFFF, 0, 0, -1, 0, -1, 9, "------------", "------------", GenSBCD7M7 }, + { "DIVU", 0x80C0, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-oooooooooo", "------------", GenDIVU }, + { "DIVS", 0x81C0, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-oooooooooo", "------------", GenDIVS }, + + { "SUBaD", 0x9000, 0xF100, 2, 6, 3, 0, -1, 9, "oooooooooooo", "------------", GenSUBaD }, + { "SUBDa", 0x9100, 0xF100, 2, 6, 3, 0, -1, 9, "--ooooooo---", "------------", GenSUBDa }, + { "SUBX", 0x9100, 0xF138, 2, 6, -1, 0, -1, 9, "------------", "------------", GenSUBX }, + { "SUBXM", 0x9108, 0xF138, 2, 6, -1, 0, -1, 9, "------------", "------------", GenSUBXM }, + { "SUBX7M", 0x910F, 0xF13F, 2, 6, -1, -1, -1, 9, "------------", "------------", GenSUBX7M }, + { "SUBXM7", 0x9F08, 0xFF38, 2, 6, -1, 0, -1, -1, "------------", "------------", GenSUBXM7 }, + { "SUBX7M7", 0x9F0F, 0xFF3F, 2, 6, -1, -1, -1, -1, "------------", "------------", GenSUBX7M7 }, + { "SUBA", 0x90C0, 0xF0C0, 1, 8, 3, 0, -1, 9, "oooooooooooo", "------------", GenSUBA }, + + { "CMP", 0xB000, 0xF100, 2, 6, 3, 0, -1, 9, "oooooooooooo", "------------", GenCMP }, + { "CMPM", 0xB108, 0xF138, 2, 6, -1, 0, -1, 9, "------------", "------------", GenCMPM }, + { "CMP7M", 0xB10F, 0xF13F, 2, 6, -1, -1, -1, 9, "------------", "------------", GenCMP7M }, + { "CMPM7", 0xBF08, 0xFF38, 2, 6, -1, 0, -1, -1, "------------", "------------", GenCMPM7 }, + { "CMP7M7", 0xBF0F, 0xFF3F, 2, 6, -1, -1, -1, -1, "------------", "------------", GenCMP7M7 }, + { "EORDa", 0xB100, 0xF100, 2, 6, 3, 0, -1, 9, "o-ooooooo---", "------------", GenEORDa }, + { "CMPA", 0xB0C0, 0xF0C0, 1, 8, 3, 0, -1, 9, "oooooooooooo", "------------", GenCMPA }, + + { "ANDaD", 0xC000, 0xF100, 2, 6, 3, 0, -1, 9, "o-oooooooooo", "------------", GenANDaD }, + { "ANDDa", 0xC100, 0xF100, 2, 6, 3, 0, -1, 9, "--ooooooo---", "------------", GenANDDa }, + { "ABCD", 0xC100, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenABCD }, + { "ABCDM", 0xC108, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenABCDM }, + { "ABCD7M", 0xC10F, 0xF1FF, 0, 0, -1, -1, -1, 9, "------------", "------------", GenABCD7M }, + { "ABCDM7", 0xCF08, 0xFFF8, 0, 0, -1, 0, -1, -1, "------------", "------------", GenABCDM7 }, + { "ABCD7M7", 0xCF0F, 0xFFFF, 0, 0, -1, -1, -1, -1, "------------", "------------", GenABCD7M7 }, + { "MULU", 0xC0C0, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-oooooooooo", "------------", GenMULU }, + { "MULS", 0xC1C0, 0xF1C0, 0, 0, 3, 0, -1, 9, "o-oooooooooo", "------------", GenMULS }, + { "EXGDD", 0xC140, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenEXGDD }, + { "EXGAA", 0xC148, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenEXGAA }, + { "EXGAD", 0xC188, 0xF1F8, 0, 0, -1, 0, -1, 9, "------------", "------------", GenEXGAD }, + + { "ADDaD", 0xD000, 0xF100, 2, 6, 3, 0, -1, 9, "oooooooooooo", "------------", GenADDaD }, + { "ADDDa", 0xD100, 0xF100, 2, 6, 3, 0, -1, 9, "--ooooooo---", "------------", GenADDDa }, + { "ADDX", 0xD100, 0xF138, 2, 6, -1, 0, -1, 9, "------------", "------------", GenADDX }, + { "ADDXM", 0xD108, 0xF138, 2, 6, -1, 0, -1, 9, "------------", "------------", GenADDXM }, + { "ADDX7M", 0xD10F, 0xF13F, 2, 6, -1, -1, -1, 9, "------------", "------------", GenADDX7M }, + { "ADDXM7", 0xDF08, 0xFF38, 2, 6, -1, 0, -1, -1, "------------", "------------", GenADDXM7 }, + { "ADDX7M7", 0xDF0F, 0xFF3F, 2, 6, -1, -1, -1, -1, "------------", "------------", GenADDX7M7 }, + { "ADDA", 0xD0C0, 0xF0C0, 1, 8, 3, 0, -1, 9, "oooooooooooo", "------------", GenADDA }, + + { "ASRk", 0xE000, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenASRk }, + { "LSRk", 0xE008, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenLSRk }, + { "ROXRk", 0xE010, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenROXRk }, + { "RORk", 0xE018, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenRORk }, + { "ASLk", 0xE100, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenASLk }, + { "LSLk", 0xE108, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenLSLk }, + { "ROXLk", 0xE110, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenROXLk }, + { "ROLk", 0xE118, 0xF138, 2, 6, -1, 0, -1, -1, "o-----------", "------------", GenROLk }, + + { "ASRD", 0xE020, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenASRD }, + { "LSRD", 0xE028, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenLSRD }, + { "ROXRD", 0xE030, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenROXRD }, + { "RORD", 0xE038, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenRORD }, + { "ASLD", 0xE120, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenASLD }, + { "LSLD", 0xE128, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenLSLD }, + { "ROXLD", 0xE130, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenROXLD }, + { "ROLD", 0xE138, 0xF138, 2, 6, -1, 0, -1, 9, "o-----------", "o-----------", GenROLD }, + + { "ASR", 0xE0C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenASR }, + { "LSR", 0xE2C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenLSR }, + { "ROXR", 0xE4C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenROXR }, + { "ROR", 0xE6C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenROR }, + { "ASL", 0xE1C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenASL }, + { "LSL", 0xE3C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenLSL }, + { "ROXL", 0xE5C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenROXL }, + { "ROL", 0xE7C0, 0xFFC0, 0, 0, 3, 0, -1, -1, "--ooooooo---", "------------", GenROL } +}; + +static u16 op_jump_table[0x10000]; + +// files where code is generated +static FILE* ini_file = NULL; +static FILE* opcode_file = NULL; + +// current generated instruction infos +static c68k_op_info_struc *current_op; +static u32 current_ea; +static u32 current_eam; +static u32 current_reg; +static u32 current_ea2; +static u32 current_eam2; +static u32 current_reg2; +static u32 current_size; +static u32 current_cycle; + +static char current_cond_char[128]; + +static char szc[20]; +static char szcs[20]; +static char szcf[20]; +static char szcsf[20]; + +static u32 current_bits_mask; +static u8 current_sft_mask; + +#define EA_DREG 0 +#define EA_AREG 1 +#define EA_AIND 2 +#define EA_AINC 3 +#define EA_ADEC 4 +#define EA_D16A 5 +#define EA_D8AX 6 +#define EA_A16 7 +#define EA_A32 8 +#define EA_D16P 9 +#define EA_D8PX 10 +#define EA_IMM 11 +#define EA_AINC7 12 +#define EA_ADEC7 13 +#define EA_ILLEGAL 15 + +static const u32 jmp_jsr_cycle_table[16] = +{ + 0, 0, + 4, + 0, + 0, + 6, + 10, + 6, + 8, + 6, + 10, + 0, 0, 0, 0 +}; + +static const u32 lea_pea_cycle_table[16] = +{ + 0, 0, + 0, + 0, + 0, + 4, + 8, + 4, + 8, + 4, + 8, + 0, 0, 0, 0 +}; + +static const u32 movem_cycle_table[16] = +{ + 0, 0, + 0, + 0, + 0, + 4, + 6, + 4, + 8, + 4, + 6, + 0, 0, 0, 0 +}; + +// general emitter function +//////////////////////////// + +static u32 prepare_generate() +{ + char filename[32]; + + sprintf(filename, "c68k_op%.1X.inc", (current_op->op_base >> 12) & 0xF); + if (opcode_file != NULL) + { + fclose(opcode_file); + opcode_file = NULL; + } + opcode_file = fopen(filename, "at"); + if (opcode_file == NULL) + { + printf("Can't open %s\n", filename); + return 1; + } + return 0; +} + +static void wf_op(char* fmt, ...) +{ + va_list args; + + if (opcode_file == NULL) return; + + va_start(args, fmt); + vfprintf(opcode_file, fmt, args); + va_end(args); +} + +static void gen_jumptable(u32 base, u32 start1, u32 end1, u32 step1, u32 start2, u32 end2, u32 step2, u32 start3, u32 end3, u32 step3, u32 op) +{ +#ifdef C68K_CONST_JUMP_TABLE + u32 i, j, k; +#endif + + base &= 0xFFFF; + start1 &= 0xFFFF; + end1 &= 0xFFFF; + step1 &= 0xFFFF; + if (end1 < start1) end1 = start1; + start2 &= 0xFFFF; + end2 &= 0xFFFF; + step2 &= 0xFFFF; + if (end2 < start2) end2 = start2; + op &= 0xFFFF; + +#ifndef C68K_NO_JUMP_TABLE +#ifdef C68K_CONST_JUMP_TABLE + if (step1 == 0) step1 = 1; + if (step2 == 0) step2 = 1; + if (step3 == 0) step3 = 1; + + for(i = start1; i <= end1; i += step1) + for(j = start2; j <= end2; j += step2) + for(k = start3; k <= end3; k += step3) + op_jump_table[base + i + j + k] = op; + +#else + if (ini_file == NULL) return; + + if (start1 != end1) + { + fprintf(ini_file, "\t\tfor(i = 0x%.4X; i <= 0x%.4X; i += 0x%.4X)\n", (int)start1, (int)end1, (int)step1); + if (start2 != end2) + { + fprintf(ini_file, "\t\t\tfor(j = 0x%.4X; j <= 0x%.4X; j += 0x%.4X)\n\t", (int)start2, (int)end2, (int)step2); + if (start3 != end3) + { + fprintf(ini_file, "\t\t\t\tfor(k = 0x%.4X; k <= 0x%.4X; k += 0x%.4X)\n\t", (int)start3, (int)end3, (int)step3); + fprintf(ini_file, "\t\t\t\t\tJumpTable[0x%.4X + i + j + k] = &&OP_0x%.4X;\n", (int)base, (int)op); + } + else fprintf(ini_file, "\t\t\t\tJumpTable[0x%.4X + i + j] = &&OP_0x%.4X;\n", (int)base, (int)op); + } + else fprintf(ini_file, "\t\t\tJumpTable[0x%.4X + i] = &&OP_0x%.4X;\n", (int)base, (int)op); + } + else fprintf(ini_file, "\t\tJumpTable[0x%.4X] = &&OP_0x%.4X;\n", (int)base, (int)op); +#endif +#else + u32 i, j, k; + + if (step1 == 0) step1 = 1; + if (step2 == 0) step2 = 1; + if (step3 == 0) step3 = 1; + + for(i = start1; i <= end1; i += step1) + for(j = start2; j <= end2; j += step2) + for(k = start3; k <= end3; k += step3) + { + u32 temp=(base + i + j + k); + + if(temp == 0x4AFC) + wf_op("default:\n"); + + if (temp != op && temp != 0x4E57 && temp != 0x4E5F) + wf_op("case 0x%.4X:\n", base + i + j + k); + } +#endif +} + +static void gen_opjumptable_ext(u32 base, u32 start3, u32 end3, u32 step3, u32 op) +{ + u32 start1, end1, step1, start2, end2, step2; + + start1 = end1 = step1 = 0; + start2 = end2 = step2 = 0; + + if ((current_op->reg_sft != -1) && (current_ea < 7)) + { + if ((current_ea == EA_AINC) || (current_ea == EA_ADEC)) end1 = 6 << current_op->reg_sft; + else end1 = 7 << current_op->reg_sft; + step1 = 1 << current_op->reg_sft; + } + if ((current_op->reg2_sft != -1) && (current_ea2 < 7)) + { + if ((current_ea2 == EA_AINC) || (current_ea2 == EA_ADEC)) end2 = 6 << current_op->reg2_sft; + else end2 = 7 << current_op->reg2_sft; + step2 = 1 << current_op->reg2_sft; + } + + if (start1 != end1) + { + if (start2 != end2) gen_jumptable(base, start1, end1, step1, start2, end2, step2, start3, end3, step3, op); + else gen_jumptable(base, start1, end1, step1, start3, end3, step3, start2, end2, step2, op); + } + else if (start2 != end2) gen_jumptable(base, start2, end2, step2, start3, end3, step3, start1, end1, step1, op); + else gen_jumptable(base, start3, end3, step3, start2, end2, step2, start1, end1, step1, op); +} + +static void gen_opjumptable(u32 op) +{ + gen_opjumptable_ext(op, 0, 0, 0, op); +} + +#define GEN_ADR 1 +#define GEN_RES 2 +#define GEN_SRC 4 +#define GEN_DST 8 +#define GEN_ALL 15 + +static void start_op(u32 op, int v) +{ + current_cycle = 0; + + wf_op("\n// %s\n", current_op->op_name); +#ifndef C68K_NO_JUMP_TABLE + wf_op("OP_0x%.4X:\n", op & 0xFFFF); +#else + wf_op("case 0x%.4X:\n", op & 0xFFFF); +#endif + wf_op("{\n"); + if (v & GEN_ADR) wf_op("\tu32 adr;\n"); + if (v & GEN_RES) wf_op("\tu32 res;\n"); + if (v & GEN_DST) wf_op("\tu32 dst;\n"); + if (v & GEN_SRC) wf_op("\tu32 src;\n"); +} + +static void add_CCnt(u32 cycle) +{ + wf_op("\ttimestamp += %d;\n", cycle); +} + +static void adds_CCnt(char *str) +{ + wf_op("\ttimestamp += %s;\n", str); +} + +static void quick_fterminate_op(u32 cycle) +{ + wf_op("\ttimestamp += %d;\n", current_cycle + cycle); + wf_op("\tgoto C68k_Exec_End;\n"); +} + +static void fterminate_op(u32 cycle) +{ + wf_op("}\n"); + wf_op("timestamp += %d;\n", current_cycle + cycle); + wf_op("goto C68k_Exec_End;\n"); +} + +static void quick_terminate_op(u32 cycle) +{ + wf_op("\tRET(%d)\n", current_cycle + cycle); +} + +static void terminate_op(u32 cycle) +{ + wf_op("}\n"); + wf_op("RET(%d)\n", current_cycle + cycle); +} +#include + +static void IO_CTHULHU(char *test_string) //int evil_babies) +{ + int numb = 0; + int evil_babies = 0; + char *rs; + + if((rs = strstr(test_string, "_BYTE_"))) + { + evil_babies = 4; + numb = 8; + } + else if((rs = strstr(test_string, "_WORD_"))) + { + evil_babies = 4; + numb = 16; + } + else if((rs = strstr(test_string, "_LONG_"))) + { + evil_babies = 8; + numb = 32; + } + + if(!evil_babies) + { + //printf("%d %s\n", evil_babies, test_string); + return; + } + + if(current_cycle < evil_babies) + { + //puts("Too many clowns!"); + return; + } + + // assert(current_cycle >= 4); + //wf_op("\tCCnt -= %d;\n", current_cycle - 2); + //current_cycle = 2; + + rs[3] = 'a'; + rs[4] = 't'; + //sprintf(&rs[1], "NT%02d", numb); + + current_cycle -= evil_babies; + if(current_cycle) + { + wf_op("\ttimestamp += %d;\n", current_cycle); + current_cycle = 0; + } +} + +static void mem_op(char* fmt, ...) +{ + static char lovelykoala[65536]; + va_list args; + + if (opcode_file == NULL) return; + +// va_start(args, fmt); +// vfprintf(opcode_file, fmt, args); +// va_end(args); + + va_start(args, fmt); + vsnprintf(lovelykoala, sizeof(lovelykoala), fmt, args); + va_end(args); + + IO_CTHULHU(lovelykoala); + fwrite(lovelykoala, strlen(lovelykoala), 1, opcode_file); +} + +// flag emitter function +///////////////////////// + +static void set_logic_flag() +{ + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_V = 0;\n"); + wf_op("\tCPU->flag_notZ = res;\n"); + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = res;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_N = res >> 8;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_logicl_flag() +{ + wf_op("\tCPU->flag_C = 0;\n"); + wf_op("\tCPU->flag_V = 0;\n"); + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = res;\n"); + wf_op("\tCPU->flag_notZ = res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_notZ = res & 0xFFFF;\n"); + wf_op("\tCPU->flag_N = res >> 8;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_add_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_V = (src ^ res) & (dst ^ res);\n"); + wf_op("\tCPU->flag_notZ = res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ = res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23;\n"); + wf_op("\tCPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_addx_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_V = (src ^ res) & (dst ^ res);\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = ((src ^ res) & (dst ^ res)) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ |= res;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = ((src & dst) | (~res & (src | dst))) >> 23;\n"); + wf_op("\tCPU->flag_V = ((src ^ res) & (dst ^ res)) >> 24;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_sub_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_V = (src ^ dst) & (res ^ dst);\n"); + wf_op("\tCPU->flag_notZ = res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ = res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23;\n"); + wf_op("\tCPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_subx_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_V = (src ^ dst) & (res ^ dst);\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ |= res;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23;\n"); + wf_op("\tCPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_cmp_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_N = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_V = (src ^ dst) & (res ^ dst);\n"); + wf_op("\tCPU->flag_notZ = res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ = res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_C = ((src & res) | (~dst & (src | res))) >> 23;\n"); + wf_op("\tCPU->flag_V = ((src ^ dst) & (res ^ dst)) >> 24;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_negx_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_V = res & src;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = (res & src) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ |= res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ |= res;\n"); + wf_op("\tCPU->flag_V = (res & src) >> 24;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = (src | res) >> 23;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +static void set_neg_flag() +{ + switch(current_size) + { + case SIZE_BYTE: + wf_op("\tCPU->flag_V = res & src;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res;\n"); + wf_op("\tCPU->flag_notZ = res & 0xFF;\n"); + break; + + case SIZE_WORD: + wf_op("\tCPU->flag_V = (res & src) >> 8;\n"); + wf_op("\tCPU->flag_N = CPU->flag_X = CPU->flag_C = res >> 8;\n"); + wf_op("\tCPU->flag_notZ = res & 0xFFFF;\n"); + break; + + case SIZE_LONG: + wf_op("\tCPU->flag_notZ = res;\n"); + wf_op("\tCPU->flag_V = (res & src) >> 24;\n"); + wf_op("\tCPU->flag_X = CPU->flag_C = (src | res) >> 23;\n"); + wf_op("\tCPU->flag_N = res >> 24;\n"); + break; + } +} + +char* get_cond_as_cond(u32 cond, u32 notvar) +{ + if (notvar) cond ^= 1; + + switch(cond) + { + case COND_TR: + sprintf(current_cond_char, "(1)"); + break; + + case COND_FA: + sprintf(current_cond_char, "(0)"); + break; + + case COND_HI: + sprintf(current_cond_char, "(CPU->flag_notZ && (!(CPU->flag_C & 0x100)))"); + break; + + case COND_LS: + sprintf(current_cond_char, "((!CPU->flag_notZ) || (CPU->flag_C & 0x100))"); + break; + + case COND_CC: + sprintf(current_cond_char, "(!(CPU->flag_C & 0x100))"); + break; + + case COND_CS: + sprintf(current_cond_char, "(CPU->flag_C & 0x100)"); + break; + + case COND_NE: + sprintf(current_cond_char, "(CPU->flag_notZ)"); + break; + + case COND_EQ: + sprintf(current_cond_char, "(!CPU->flag_notZ)"); + break; + + case COND_VC: + sprintf(current_cond_char, "(!(CPU->flag_V & 0x80))"); + break; + + case COND_VS: + sprintf(current_cond_char, "(CPU->flag_V & 0x80)"); + break; + + case COND_PL: + sprintf(current_cond_char, "(!(CPU->flag_N & 0x80))"); + break; + + case COND_MI: + sprintf(current_cond_char, "(CPU->flag_N & 0x80)"); + break; + + case COND_GE: + sprintf(current_cond_char, "(!((CPU->flag_N ^ CPU->flag_V) & 0x80))"); + break; + + case COND_LT: + sprintf(current_cond_char, "((CPU->flag_N ^ CPU->flag_V) & 0x80)"); + break; + + case COND_GT: + sprintf(current_cond_char, "(CPU->flag_notZ && (!((CPU->flag_N ^ CPU->flag_V) & 0x80)))"); + break; + + case COND_LE: + sprintf(current_cond_char, "((!CPU->flag_notZ) || ((CPU->flag_N ^ CPU->flag_V) & 0x80))"); + break; + } + + return current_cond_char; +} + +// effective address related function +////////////////////////////////////// + +static u32 has_ea(u32 ea) +{ + if (ea == EA_AINC7) return (current_op->ea_supported[EA_AINC] == 'o'); + if (ea == EA_ADEC7) return (current_op->ea_supported[EA_ADEC] == 'o'); + if (ea <= EA_IMM) return (current_op->ea_supported[ea] == 'o'); + return 0; +} + +static u32 has_ea2(u32 ea) +{ + if (ea == EA_AINC7) return (current_op->ea2_supported[EA_AINC] == 'o'); + if (ea == EA_ADEC7) return (current_op->ea2_supported[EA_ADEC] == 'o'); + if (ea <= EA_IMM) return (current_op->ea2_supported[ea] == 'o'); + return 0; +} + +static u32 _eamreg_to_ea(u32 eam, u32 reg) +{ + if ((eam > 7) || (reg > 7)) return EA_ILLEGAL; + if ((eam == 3) && (reg == 7)) return EA_AINC7; + if ((eam == 4) && (reg == 7)) return EA_ADEC7; + if (eam != 7) return eam; + if (reg < 5) return (eam + reg); + return EA_ILLEGAL; +} + +static u32 _ea_to_eamreg(u32 ea) +{ + if (ea < 7) return (ea << 3) | 0; + if (ea == EA_AINC7) return (EA_AINC << 3) | 7; + if (ea == EA_ADEC7) return (EA_ADEC << 3) | 7; + if (ea <= EA_IMM) return (7 << 3) | (ea - 7); + return (7 << 3) | 7; +} + +static u32 is_ea_memory(u32 ea) +{ + if ((ea > EA_AREG) && (ea != EA_IMM)) return 1; + else return 0; +} + +static void _ea_calc_free(u32 ea, u32 rsft) +{ + u32 step; + + step = 0; + switch (current_size) + { + case SIZE_BYTE: + if ((ea == EA_AINC7) || (ea == EA_ADEC7)) step = 2; + else step = 1; + break; + + case SIZE_WORD: + step = 2; + break; + + case SIZE_LONG: + step = 4; + break; + } + + switch (ea) + { + case EA_DREG: +// wf_op("\tadr = (u32)(&CPU->D[(Opcode >> %d) & 7]);\n", rsft); + break; + + case EA_AREG: +// wf_op("\tadr = (u32)(&CPU->A[(Opcode >> %d) & 7]);\n", rsft); + break; + + case EA_AIND: + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", rsft); + break; + + case EA_AINC: + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", rsft); + wf_op("\tCPU->A[(Opcode >> %d) & 7] += %d;\n", rsft, step); + break; + + case EA_AINC7: + wf_op("\tadr = CPU->A[7];\n"); + wf_op("\tCPU->A[7] += %d;\n", step); + break; + + case EA_ADEC: + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7] - %d;\n", rsft, step); + wf_op("\tCPU->A[(Opcode >> %d) & 7] = adr;\n", rsft); + break; + + case EA_ADEC7: + wf_op("\tadr = CPU->A[7] - %d;\n", step); + wf_op("\tCPU->A[7] = adr;\n"); + break; + + case EA_D16A: + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7] + (s32)(s16)FETCH_WORD;\n", rsft); + wf_op("\tPC += 2;\n"); + break; + + case EA_D8AX: + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", rsft); + wf_op("\tDECODE_EXT_WORD\n"); + break; + + case EA_A16: + wf_op("\tadr = (s32)(s16)FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + break; + + case EA_A32: + wf_op("\tadr = (s32)FETCH_LONG;\n"); + wf_op("\tPC += 4;\n"); + break; + + case EA_D16P: + wf_op("\tadr = PC + (s32)(s16)FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + break; + + case EA_D8PX: + wf_op("\tadr = PC;\n"); + wf_op("\tDECODE_EXT_WORD\n"); + break; + } +} + +static void _ea_calc(u32 ea, u32 rsft) +{ + u32 step; + u32 cycle_sft; + + step = 0; + cycle_sft = 0; + switch (current_size) + { + case SIZE_BYTE: + if ((ea == EA_AINC7) || (ea == EA_ADEC7)) step = 2; + else step = 1; + break; + + case SIZE_WORD: + step = 2; + break; + + case SIZE_LONG: + cycle_sft = 1; + step = 4; + break; + } + + switch (ea) + { + case EA_DREG: +// wf_op("\tadr = (u32)(&CPU->D[(Opcode >> %d) & 7]);\n", rsft); + break; + + case EA_AREG: +// wf_op("\tadr = (u32)(&CPU->A[(Opcode >> %d) & 7]);\n", rsft); + break; + + case EA_IMM: + current_cycle += (4 << cycle_sft) + 0; + break; + + case EA_AIND: + current_cycle += (4 << cycle_sft) + 0; + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", rsft); + break; + + case EA_AINC: + current_cycle += (4 << cycle_sft) + 0; + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", rsft); + wf_op("\tCPU->A[(Opcode >> %d) & 7] += %d;\n", rsft, step); + break; + + case EA_AINC7: + current_cycle += (4 << cycle_sft) + 0; + wf_op("\tadr = CPU->A[7];\n"); + wf_op("\tCPU->A[7] += %d;\n", step); + break; + + case EA_ADEC: + current_cycle += (4 << cycle_sft) + 2; + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7] - %d;\n", rsft, step); + wf_op("\tCPU->A[(Opcode >> %d) & 7] = adr;\n", rsft); + break; + + case EA_ADEC7: + current_cycle += (4 << cycle_sft) + 2; + wf_op("\tadr = CPU->A[7] - %d;\n", step); + wf_op("\tCPU->A[7] = adr;\n"); + break; + + case EA_D16A: + current_cycle += (4 << cycle_sft) + 4; + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7] + (s32)(s16)FETCH_WORD;\n", rsft); + wf_op("\tPC += 2;\n"); + break; + + case EA_D8AX: + current_cycle += (4 << cycle_sft) + 6; + wf_op("\tadr = CPU->A[(Opcode >> %d) & 7];\n", rsft); + wf_op("\tDECODE_EXT_WORD\n"); + break; + + case EA_A16: + current_cycle += (4 << cycle_sft) + 4; + wf_op("\tadr = (s32)(s16)FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + break; + + case EA_A32: + current_cycle += (4 << cycle_sft) + 8; + wf_op("\tadr = (s32)FETCH_LONG;\n"); + wf_op("\tPC += 4;\n"); + break; + + case EA_D16P: + current_cycle += (4 << cycle_sft) + 4; + wf_op("\tadr = PC + (s32)(s16)FETCH_WORD;\n"); + wf_op("\tPC += 2;\n"); + break; + + case EA_D8PX: + current_cycle += (4 << cycle_sft) + 6; + wf_op("\tadr = PC;\n"); + wf_op("\tDECODE_EXT_WORD\n"); + break; + } +} + +static void _ea_read_(u32 ea, u32 rsft, char dest[4]) +{ + char sz[8]; + + switch (current_size) + { + case SIZE_BYTE: + strcpy(sz, "BYTE"); + break; + + case SIZE_WORD: + strcpy(sz, "WORD"); + break; + + case SIZE_LONG: + strcpy(sz, "LONG"); + break; + } + + switch (ea) + { + case EA_DREG: + wf_op("\t%s = (%s)CPU->D[(Opcode >> %d) & 7];\n", dest, szc, rsft); + break; + + case EA_AREG: + if (current_size == SIZE_BYTE) + { + wf_op("\t// can't read byte from Ax registers !\n"); + wf_op("\tCPU->Status |= C68K_FAULTED;\n"); + //wf_op("\tCCnt = 0;\n"); + wf_op("\tgoto C68k_Exec_Really_End;\n"); + } + else wf_op("\t%s = (%s)CPU->A[(Opcode >> %d) & 7];\n", dest, szc, rsft); + break; +/* + case EA_DREG: + case EA_AREG: + wf_op("\t%s = %s(adr);\n", dest, szcf); + break; +*/ + case EA_A32: + case EA_D8AX: + case EA_D8PX: + case EA_D16A: + case EA_D16P: + case EA_A16: + case EA_ADEC: + case EA_ADEC7: + case EA_AIND: + case EA_AINC: + case EA_AINC7: + mem_op("\tREAD_%s_F(adr, %s)\n", sz, dest); + break; + + case EA_IMM: + switch (current_size) + { + case SIZE_BYTE: + wf_op("\t%s = FETCH_BYTE;\n", dest); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_WORD: + wf_op("\t%s = FETCH_WORD;\n", dest); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_LONG: + wf_op("\t%s = FETCH_LONG;\n", dest); + wf_op("\tPC += 4;\n"); + break; + } + break; + } +} + +static void _ea_read(u32 ea, u32 rsft) +{ + _ea_read_(ea, rsft, "res"); +} + +static void _ea_read_src(u32 ea, u32 rsft) +{ + _ea_read_(ea, rsft, "src"); +} + +static void _ea_read_dst(u32 ea, u32 rsft) +{ + _ea_read_(ea, rsft, "dst"); +} + +static void _ea_read_sx_(u32 ea, u32 rsft, char dest[4]) +{ + char sz[8]; + + switch (current_size) + { + case SIZE_BYTE: + strcpy(sz, "BYTE"); + break; + + case SIZE_WORD: + strcpy(sz, "WORD"); + break; + + case SIZE_LONG: + strcpy(sz, "LONG"); + break; + } + + switch (ea) + { + case EA_DREG: + wf_op("\t%s = (s32)(%s)CPU->D[(Opcode >> %d) & 7];\n", dest, szcs, rsft); + break; + + case EA_AREG: + if (current_size == SIZE_BYTE) + { + wf_op("\t// can't read byte from Ax registers !\n"); + wf_op("\tCPU->Status |= C68K_FAULTED;\n"); + //wf_op("\tCCnt = 0;\n"); + wf_op("\tgoto C68k_Exec_Really_End;\n"); + } + else wf_op("\t%s = (s32)(%s)CPU->A[(Opcode >> %d) & 7];\n", dest, szcs, rsft); + break; +/* + case EA_DREG: + case EA_AREG: + wf_op("\t%s = (s32)(%s(adr));\n", dest, szcsf); + break; +*/ + case EA_A32: + case EA_D8AX: + case EA_D8PX: + case EA_D16A: + case EA_D16P: + case EA_A16: + case EA_ADEC: + case EA_ADEC7: + case EA_AIND: + case EA_AINC: + case EA_AINC7: + mem_op("\tREADSX_%s_F(adr, %s)\n", sz, dest); + break; + + case EA_IMM: + switch (current_size) + { + case SIZE_BYTE: + wf_op("\t%s = (s32)(%s(PC)));\n", dest, szcsf); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_WORD: + wf_op("\t%s = (s32)(%s)FETCH_WORD;\n", dest, szcs); + wf_op("\tPC += 2;\n"); + break; + + case SIZE_LONG: + wf_op("\t%s = (s32)(%s)FETCH_LONG;\n", dest, szcs); + wf_op("\tPC += 4;\n"); + break; + } + break; + } +} + +static void _ea_read_sx(u32 ea, u32 rsft) +{ + _ea_read_sx_(ea, rsft, "res"); +} + +static void _ea_read_src_sx(u32 ea, u32 rsft) +{ + _ea_read_sx_(ea, rsft, "src"); +} + +static void _ea_write_sarsie(u32 ea, u32 rsft, int move_pd) +{ + char sz[8]; + + switch (current_size) + { + case SIZE_BYTE: + strcpy(sz, "BYTE"); + break; + + case SIZE_WORD: + strcpy(sz, "WORD"); + break; + + case SIZE_LONG: + strcpy(sz, "LONG"); + break; + } + + if(current_size == SIZE_LONG && move_pd && (ea == EA_ADEC || ea == EA_ADEC7)) + { + mem_op("\tWRITE_LONG_DEC_F(adr, res)\n"); + } + else switch (ea) + { + case EA_DREG: + wf_op("\t%s(&CPU->D[(Opcode >> %d) & 7])) = res;\n", szcf, +rsft); + break; + + case EA_AREG: + // writes in Ax registers are always 32 bits sized + wf_op("\tCPU->A[(Opcode >> %d) & 7] = res;\n", rsft); + break; +/* + case EA_DREG: + case EA_AREG: + wf_op("\t%s(adr) = res;\n", szcf); + break; +*/ + case EA_A32: + case EA_D8AX: + case EA_D8PX: + case EA_D16A: + case EA_D16P: + case EA_A16: + case EA_ADEC: + case EA_ADEC7: + case EA_AIND: + case EA_AINC: + case EA_AINC7: + mem_op("\tWRITE_%s_F(adr, res)\n", sz); + break; + } +} + +static void _ea_write(u32 ea, u32 rsft) +{ + _ea_write_sarsie(ea, rsft, 0); +} + +// misc function +///////////////// + +static u32 get_current_opcode_base() +{ + u32 base; + + base = current_op->op_base; + if (current_op->eam_sft != -1) base += (current_eam & 7) << current_op->eam_sft; + if (current_op->reg_sft != -1) base += (current_reg & 7) << current_op->reg_sft; + if (current_op->eam2_sft != -1) base += (current_eam2 & 7) << current_op->eam2_sft; + if (current_op->reg2_sft != -1) base += (current_reg2 & 7) << current_op->reg2_sft; + if (current_op->size_type == 1) base += (current_size - 1) << current_op->size_sft; + else if (current_op->size_type == 2) base += (current_size & 3) << current_op->size_sft; + + return base; +} + +static void start_all(int v) +{ + u32 base; + + base = get_current_opcode_base(); + + // generate jump table + gen_opjumptable(base); + + // generate label & declarations + start_op(base, v); +} + +static void set_current_size(u32 sz) +{ + current_size = sz; + switch(current_size) + { + case SIZE_BYTE: + current_bits_mask = 0xFF; + current_sft_mask = 7; + strcpy(szc, "u8"); + strcpy(szcf, "*(BYTE_OFF + (u8*)"); + strcpy(szcs, "s8"); + strcpy(szcsf, "*(BYTE_OFF + (s8*)"); + break; + + case SIZE_WORD: + current_bits_mask = 0xFFFF; + current_sft_mask = 15; + strcpy(szc, "u16"); + strcpy(szcf, "*(WORD_OFF + (u16*)"); + strcpy(szcs, "s16"); + strcpy(szcsf, "*(WORD_OFF + (s16*)"); + break; + + case SIZE_LONG: + current_bits_mask = 0xFFFFFFFF; + current_sft_mask = 31; + strcpy(szc, "u32"); + strcpy(szcf, "*((u32*)"); + strcpy(szcs, "s32"); + strcpy(szcsf, "*((s32*)"); + break; + } +} + +// gen privilege exception (happen when S flag is not set) +static void gen_privilege_exception(char *pre) +{ + // swap A7 and USP (because S not set) + wf_op("%sres = CPU->USP;\n", pre); + wf_op("%sCPU->USP = CPU->A[7];\n", pre); + wf_op("%sCPU->A[7] = res;\n", pre); + + // get vector & add cycle + wf_op("%sres = C68K_PRIVILEGE_VIOLATION_EX;\n", pre); + adds_CCnt("c68k_exception_cycle_table[res]"); + + // we will do some mem/io access + // do_pre_io(); + + // push PC and SR + mem_op("%sPUSH_32_F(PC)\n", pre); + mem_op("%sPUSH_16_F(GET_SR)\n", pre); + + // adjust SR + wf_op("%sCPU->flag_S = C68K_SR_S;\n", pre); + + // fetch new PC + mem_op("%sREAD_LONG_F(res * 4, PC)\n", pre); + wf_op("%sSET_PC(PC)\n", pre); +} + +static void gen_exception(char *pre, char* exception) +{ + // swap A7 and USP if needed + wf_op("%sif (!CPU->flag_S)\n", pre); + wf_op("%s{\n", pre); + wf_op("%s\tres = CPU->USP;\n", pre); + wf_op("%s\tCPU->USP = CPU->A[7];\n", pre); + wf_op("%s\tCPU->A[7] = res;\n", pre); + wf_op("%s}\n", pre); + + // get vector & add cycle + wf_op("%sres = %s;\n", pre, exception); + adds_CCnt("c68k_exception_cycle_table[res]"); + + // we will do some mem/io access + // do_pre_io(); + + // push PC and SR + mem_op("%sPUSH_32_F(PC)\n", pre); + mem_op("%sPUSH_16_F(GET_SR)\n", pre); + + // adjust SR + wf_op("%sCPU->flag_S = C68K_SR_S;\n", pre); + + // fetch new PC + mem_op("%sREAD_LONG_F(res * 4, PC)\n", pre); + wf_op("%sSET_PC(PC)\n", pre); +} + diff --git a/libmednahawk/src/hw_cpu/huc6280/dis6280.cpp b/libmednahawk/src/hw_cpu/huc6280/dis6280.cpp new file mode 100644 index 0000000000..5971b808ab --- /dev/null +++ b/libmednahawk/src/hw_cpu/huc6280/dis6280.cpp @@ -0,0 +1,470 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen/mednafen.h" +#include "dis6280.h" + +Dis6280::Dis6280(void) +{ + +} + +Dis6280::~Dis6280() +{ + +} + +uint8 Dis6280::Read(uint16 A) +{ + return(0); +} + +uint8 Dis6280::GetX(void) +{ + return(0); +} + +uint8 Dis6280::GetY(void) +{ + return(0); +} + + +static const char *fstrings[20]= +{ + "#$%02X", // immediate + "$%04X", // RELATIVE(jump) + "$%02X", // Z + "$%02X,X", // Z,x + "$%02X,Y", // Z,y + "$%04X", //ABS + "$%04X,X", // ABS,x + "$%04X,Y", // ABS,y + "($%02X)", // IND + "($%02X,X)", // INX + "($%02X),Y", // INY + "", // IMP + + // Here come the really fubar(as far as 6502-goes) modes: + "$%04X, $%04X, $%04X", // BMT + "#$%02X, $%02X", // IMM ZP + "#$%02X, $%02X, X", // IMM ZP, X + "#$%02X, $%04X", // IMM ABS + "#$%02X, $%04X, X", // IMM ABS, X + "$%02X, $%04X", // ZP REL + + + "($%04X)", // JMP indirect + "($%04X, X)", // JMP indirect X +}; + +static const int flengths[20]={1,1,1,1,1,2,2,2,1,1,1,0, 6, 2, 2, 3, 3, 2, 2, 2}; + +#define IMD(x) ((0<<16)|x) +#define REL(x) ((1<<16)|x) +#define ZP(x) ((2<<16)|x) +#define ZPX(x) ((3<<16)|x) +#define ZPY(x) ((4<<16)|x) +#define ABS(x) ((5<<16)|x) +#define ABX(x) ((6<<16)|x) +#define ABY(x) ((7<<16)|x) +#define IND(x) ((8<<16)|x) +#define INX(x) ((9<<16)|x) +#define INY(x) ((10<<16)|x) +#define IMP(x) ((11<<16)|x) +#define BMT(x) ((12<<16)|x) +#define IMDZP(x) ((13 << 16)|x) +#define IMDZPX(x) ((14 << 16)|x) +#define IMDABS(x) ((15 << 16)|x) +#define IMDABX(x) ((16 << 16)|x) +#define ZPREL(x) ((17 << 16)|x) +#define JMPIND(x) ((18 << 16)|x) +#define JMPINDX(x) ((19 << 16)|x) + +typedef struct { + const char *name; + int type; /* 1 for read, 2 for write, 3 for r then write. */ + int32 modes[11]; +} OPS; + +#define NUMOPS 117 +static OPS optable[NUMOPS]= +{ + {"TST",1,{IMDZP(0x83),IMDZPX(0xA3),IMDABS(0x93),IMDABX(0xb3),-1}}, + + {"BRK",0,{IMP(0x00),-1}}, + {"RTI",0,{IMP(0x40),-1}}, + {"RTS",0,{IMP(0x60),-1}}, + + {"PHA",2,{IMP(0x48),-1}}, + {"PHP",2,{IMP(0x08),-1}}, + {"PHX",2,{IMP(0xDA),-1}}, + {"PHY",2,{IMP(0x5A),-1}}, + + {"PLA",1,{IMP(0x68),-1}}, + {"PLP",1,{IMP(0x28),-1}}, + {"PLX",1,{IMP(0xFA),-1}}, + {"PLY",1,{IMP(0x7A),-1}}, + + {"JMP",0,{ABS(0x4C),JMPIND(0x6C),JMPINDX(0x7C),-1}}, + {"JSR",0,{ABS(0x20),-1}}, + + {"SAX",0,{IMP(0x22),-1}}, + {"SAY",0,{IMP(0x42),-1}}, + {"SXY",0,{IMP(0x02),-1}}, + + {"TAX",0,{IMP(0xAA),-1}}, + {"TXA",0,{IMP(0x8A),-1}}, + {"TAY",0,{IMP(0xA8),-1}}, + {"TYA",0,{IMP(0x98),-1}}, + {"TSX",0,{IMP(0xBA),-1}}, + {"TXS",0,{IMP(0x9A),-1}}, + + {"TMA",0,{IMD(0x43),-1}}, + {"TAM",0,{IMD(0x53),-1}}, + + {"ST0",0,{IMD(0x03),-1}}, + {"ST1",0,{IMD(0x13),-1}}, + {"ST2",0,{IMD(0x23),-1}}, + + {"TII",3,{BMT(0x73),-1}}, + {"TDD",3,{BMT(0xC3),-1}}, + {"TIN",3,{BMT(0xD3),-1}}, + {"TIA",3,{BMT(0xE3),-1}}, + {"TAI",3,{BMT(0xF3),-1}}, + + {"DEX",0,{IMP(0xCA),-1}}, + {"DEY",0,{IMP(0x88),-1}}, + {"INX",0,{IMP(0xE8),-1}}, + {"INY",0,{IMP(0xC8),-1}}, + {"CLC",0,{IMP(0x18),-1}}, + {"CLD",0,{IMP(0xD8),-1}}, + {"CLI",0,{IMP(0x58),-1}}, + {"CLV",0,{IMP(0xB8),-1}}, + {"SEC",0,{IMP(0x38),-1}}, + {"SED",0,{IMP(0xF8),-1}}, + {"SEI",0,{IMP(0x78),-1}}, + {"NOP",0,{IMP(0xEA),-1}}, + {"SET",0,{IMP(0xF4),-1}}, + + + {"ASL",1,{IMP(0x0a),ZP(0x06),ZPX(0x16),ABS(0x0E),ABX(0x1E),-1}}, + + {"DEC",3,{IMP(0x3A), ZP(0xc6),ZPX(0xd6),ABS(0xcE),ABX(0xdE),-1}}, + + {"INC",3,{IMP(0x1A),ZP(0xe6),ZPX(0xf6),ABS(0xeE),ABX(0xfE),-1}}, + + {"LSR",3,{IMP(0x4a),ZP(0x46),ZPX(0x56),ABS(0x4E),ABX(0x5E),-1}}, + + {"ROL",3,{IMP(0x2a),ZP(0x26),ZPX(0x36),ABS(0x2E),ABX(0x3E),-1}}, + + {"ROR",3,{IMP(0x6a),ZP(0x66),ZPX(0x76),ABS(0x6E),ABX(0x7E),-1}}, + + {"ADC",1,{IMD(0x69),ZP(0x65),ZPX(0x75),ABS(0x6D),ABX(0x7d),ABY(0x79), + IND(0x72), INX(0x61),INY(0x71),-1}}, + + {"AND",1,{IMD(0x29),ZP(0x25),ZPX(0x35),ABS(0x2D),ABX(0x3d),ABY(0x39), + IND(0x32), INX(0x21),INY(0x31),-1}}, + + {"BIT",1,{IMD(0x89),ZP(0x24),ZPX(0x34),ABS(0x2c),ABX(0x3C),-1}}, + + {"CMP",1,{IMD(0xc9),ZP(0xc5),ZPX(0xd5),ABS(0xcD),ABX(0xdd),ABY(0xd9), + IND(0xD2), INX(0xc1),INY(0xd1),-1}}, + + {"CPX",1,{IMD(0xe0),ZP(0xe4),ABS(0xec),-1}}, + + {"CPY",1,{IMD(0xc0),ZP(0xc4),ABS(0xcc),-1}}, + + {"EOR",1,{IMD(0x49),ZP(0x45),ZPX(0x55),ABS(0x4D),ABX(0x5d),ABY(0x59), + IND(0x52), INX(0x41),INY(0x51),-1}}, + + {"LDA",1,{IMD(0xa9),ZP(0xa5),ZPX(0xb5),ABS(0xaD),ABX(0xbd),ABY(0xb9), + IND(0xb2), INX(0xa1),INY(0xb1),-1}}, + + {"LDX",1,{IMD(0xa2),ZP(0xa6),ZPY(0xB6),ABS(0xae),ABY(0xbe),-1}}, + + {"LDY",1,{IMD(0xa0),ZP(0xa4),ZPX(0xB4),ABS(0xac),ABX(0xbc),-1}}, + + {"ORA",1,{IMD(0x09),ZP(0x05),ZPX(0x15),ABS(0x0D),ABX(0x1d),ABY(0x19), + IND(0x12),INX(0x01),INY(0x11),-1}}, + + {"SBC",1,{IMD(0xe9),ZP(0xe5),ZPX(0xf5),ABS(0xeD),ABX(0xfd),ABY(0xf9), + IND(0xf2),INX(0xe1),INY(0xf1),-1}}, + + {"STA",2,{ZP(0x85),ZPX(0x95),ABS(0x8D),ABX(0x9d),ABY(0x99), + IND(0x92),INX(0x81),INY(0x91),-1}}, + + {"STX",2,{ZP(0x86),ZPY(0x96),ABS(0x8E),-1}}, + + {"STY",2,{ZP(0x84),ZPX(0x94),ABS(0x8C),-1}}, + + + {"STZ",2,{ZP(0x64),ZPX(0x74),ABS(0x9C),ABX(0x9E),-1}}, + + {"TRB",3,{ZP(0x14),ABS(0x1C),-1}}, + + {"TSB",3,{ZP(0x04),ABS(0x0c),-1}}, + + {"BBR0",1,{ZPREL(0x0F), -1}}, + {"BBR1",1,{ZPREL(0x1F), -1}}, + {"BBR2",1,{ZPREL(0x2F), -1}}, + {"BBR3",1,{ZPREL(0x3F), -1}}, + {"BBR4",1,{ZPREL(0x4F), -1}}, + {"BBR5",1,{ZPREL(0x5F), -1}}, + {"BBR6",1,{ZPREL(0x6F), -1}}, + {"BBR7",1,{ZPREL(0x7F), -1}}, + + {"BBS0",1,{ZPREL(0x8F), -1}}, + {"BBS1",1,{ZPREL(0x9F), -1}}, + {"BBS2",1,{ZPREL(0xAF), -1}}, + {"BBS3",1,{ZPREL(0xBF), -1}}, + {"BBS4",1,{ZPREL(0xCF), -1}}, + {"BBS5",1,{ZPREL(0xDF), -1}}, + {"BBS6",1,{ZPREL(0xEF), -1}}, + {"BBS7",1,{ZPREL(0xFF), -1}}, + + {"CLA",1,{IMP(0x62),-1}}, + {"CLX",1,{IMP(0x82),-1}}, + {"CLY",1,{IMP(0xC2),-1}}, + + {"CSL",1,{IMP(0x54),-1}}, + {"CSH",1,{IMP(0xD4),-1}}, + + {"RMB0",3,{ZP(0x07), -1}}, + {"RMB1",3,{ZP(0x17), -1}}, + {"RMB2",3,{ZP(0x27), -1}}, + {"RMB3",3,{ZP(0x37), -1}}, + {"RMB4",3,{ZP(0x47), -1}}, + {"RMB5",3,{ZP(0x57), -1}}, + {"RMB6",3,{ZP(0x67), -1}}, + {"RMB7",3,{ZP(0x77), -1}}, + + {"SMB0",3,{ZP(0x87), -1}}, + {"SMB1",3,{ZP(0x97), -1}}, + {"SMB2",3,{ZP(0xa7), -1}}, + {"SMB3",3,{ZP(0xb7), -1}}, + {"SMB4",3,{ZP(0xc7), -1}}, + {"SMB5",3,{ZP(0xd7), -1}}, + {"SMB6",3,{ZP(0xe7), -1}}, + {"SMB7",3,{ZP(0xf7), -1}}, + + {"BRA",1,{REL(0x80),-1}}, + + {"BSR",1,{REL(0x44),-1}}, + + {"BCC",1,{REL(0x90),-1}}, + + {"BCS",1,{REL(0xb0),-1}}, + + {"BEQ",1,{REL(0xf0),-1}}, + + {"BNE",1,{REL(0xd0),-1}}, + + {"BMI",1,{REL(0x30),-1}}, + + {"BPL",1,{REL(0x10),-1}}, + + {"BVC",1,{REL(0x50),-1}}, + + {"BVS",1,{REL(0x70),-1}}, + +}; + +void Dis6280::Disassemble(uint16 &a, uint16 SpecialA, char *stringo) +{ + uint8 buf; + uint64 arg; + int32 info; + int op_index; + int y; + + info=-1; + + buf=Read(a); + a++; + + for(op_index=0; op_index < NUMOPS; op_index++) + { + y=0; + while(optable[op_index].modes[y]>=0) + { + if((optable[op_index].modes[y]&0xFF)==buf) + { + info=optable[op_index].modes[y]; + goto endy; + } + y++; + } + } + + endy: + stringo[0] = 0; + if(info>=0) + { + int z=flengths[(info>>16)]; + bool borked = 0; + int pow = 0; + uint64 arg_orig; + + arg_orig = arg = 0; + + if(z) + { + for(pow = 0; pow < z; pow++) + { + if(a == SpecialA) + { + borked = 1; + break; + } + uint8 rb = Read(a); + arg |= (uint64)rb << (pow * 8); + a++; + } + arg_orig = arg; + if((info>>16)==1) /* Relative branch */ + arg = (a + (char)arg) & 0xFFFF; + + if(borked) + strcat(stringo, "--------"); + else + { + sprintf(stringo+strlen(stringo),"%s ",optable[op_index].name); + + if((info>>16) < 12 || (info >> 16) == 18 || (info >> 16) == 19) // ...or JMP indirect + sprintf(stringo+strlen(stringo), fstrings[info>>16], (unsigned int)arg); + + //"$04X, $04X, $04X", // BMT + //"#$02X, $%02X", // IMM ZP + //"#$02X, $%02X, X", // IMM ZP, X + //"#$02X, $%04X", // IMM ABS + //"#$02X, $%04X, X", // IMM ABS, X + //"$02X, #$%02X", // ZP REL + + //#define BMT(x) ((12<<16)|x) + //#define IMDZP(x) ((13 << 16)|x) + //#define IMDZPX(x) ((14 << 16)|x) + //#define IMDABS(x) ((15 << 16)|x) + //#define IMDABX(x) ((16 << 16)|x) + //#define ZPREL(x) ((17 << 16)|x) + + unsigned int tmp; + switch(info>>16) + { + case 12: + sprintf(stringo + strlen(stringo), fstrings[info >> 16], (unsigned int)(arg & 0xFFFF), (unsigned int)((arg >> 16) & 0xFFFF), + (unsigned int)((arg >> 32) & 0xFFFF)); + break; + case 16: + case 15: + case 14: + case 13: + sprintf(stringo + strlen(stringo), fstrings[info >> 16], (unsigned int)(arg & 0xFF), (unsigned int)((arg >> 8) & 0xFFFF)); + break; + case 17: + sprintf(stringo + strlen(stringo), fstrings[info >> 16], (unsigned int)(arg & 0xFF), (a + (char)((arg >> 8) & 0xFF)) & 0xFFFF); + sprintf(stringo + strlen(stringo), " @ $%04X = $%02X", (unsigned int)(arg & 0xFF) + 0x2000, Read((arg & 0xFF) + 0x2000)); + break; + case 2:tmp = arg + 0x2000; + if(optable[op_index].type&1) + { + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + } + break; + case 3:tmp=0x2000 + ((arg+GetX())&0xff); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 4:tmp=0x2000 + ((arg+GetY())&0xff); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 5:tmp=arg; + if(optable[op_index].type&1) + { + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + } + break; + case 6:tmp=(arg+GetX())&0xffff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 7:tmp=(arg+GetY())&0xffff; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 8: // Indirect + tmp = (arg&0xFF); + tmp=Read(0x2000 + tmp) | (Read(0x2000 + ((tmp+1)&0xFF))<<8); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 18: // JMP indirect + tmp=Read(arg)|(Read((arg+1)&0xffff)<<8); + sprintf(stringo+strlen(stringo)," $%04X",tmp); + break; + case 19: // JMP indirect, X + { + uint16 tmp_addr = arg + GetX(); + + tmp = Read(tmp_addr) | (Read((tmp_addr + 1) & 0xFFFF) << 8); + sprintf(stringo+strlen(stringo)," $%04X",tmp); + } + break; + case 9:tmp = ((arg+GetX())&0xFF); + tmp=Read(0x2000 + tmp) | (Read(0x2000 + ((tmp+1)&0xFF))<<8); + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + case 10: + tmp = Read(0x2000 + arg) | (Read(0x2000 + ((arg+1)&0xFF))<<8); + tmp=(tmp+GetY())&0xFFFF; + sprintf(stringo+strlen(stringo)," @ $%04X",tmp); + if(optable[op_index].type&1) + sprintf(stringo+strlen(stringo)," = $%02X",Read(tmp)); + break; + + } + } + } + else + { + strcat(stringo,optable[op_index].name); + } + + for(int x = strlen(stringo); x < 30; x++) + { + stringo[x] = ' '; + stringo[x + 1] = 0; + } + sprintf(stringo+strlen(stringo),";%02X ", buf); + + for(int x = 0; x < pow; x++) + sprintf(stringo + strlen(stringo), (pow > 4) ? "%02X" : "%02X ", (unsigned int)((arg_orig >> x * 8) & 0xFF)); + } + else + sprintf(stringo+strlen(stringo),".db $%02X ;%02X", buf, buf); + +} diff --git a/libmednahawk/src/hw_cpu/huc6280/dis6280.h b/libmednahawk/src/hw_cpu/huc6280/dis6280.h new file mode 100644 index 0000000000..aa9f7f5231 --- /dev/null +++ b/libmednahawk/src/hw_cpu/huc6280/dis6280.h @@ -0,0 +1,14 @@ +class Dis6280 +{ + public: + Dis6280(void); + ~Dis6280(); + + virtual uint8 Read(uint16 A); + virtual uint8 GetX(void); + virtual uint8 GetY(void); + + void Disassemble(uint16 &a, uint16 SpecialA, char *); + + private: +}; diff --git a/libmednahawk/src/hw_cpu/huc6280/huc6280.cpp b/libmednahawk/src/hw_cpu/huc6280/huc6280.cpp new file mode 100644 index 0000000000..6188781e67 --- /dev/null +++ b/libmednahawk/src/hw_cpu/huc6280/huc6280.cpp @@ -0,0 +1,804 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Major organizational differences compared to real HuC6280: + PSG emulation is in a completely separate file and class. + + Timer and IRQ read/write handlers are called externally from the main(external) PC Engine I/O page memory handler function, for + speed reasons. + + Bus cycle extension on VDC and VCE access is simulated/handled in the main(external) PC Engine I/O page memory handler function, for + speed reasons. + + Input port emulation is done externally. + + Bugs: + The 21MHz master clock penalty when executing(not explicitly branching) across a 8KiB page boundary is not emulated. +*/ + +#include "mednafen/mednafen.h" +#include "huc6280.h" + +#include + +#ifdef WANT_DEBUGGER + #include +#endif + +//#define IncPC() { PC++; if(!(PC & 0x1FFF)) printf("Crossing: %04x %02x\n", PC - 1, lastop); } + +#define LASTCYCLE /*assert(((P & I_FLAG) ? 0 : (uint32)~0) == PIMaskCache);*/ IRQSample = (IRQlow & IRQMask) & PIMaskCache; IFlagSample = P & I_FLAG; ADDCYC(1); + +void HuC6280::StealCycle(void) +{ + ADDCYC(1); +} + +void HuC6280::StealCycles(const int count) +{ + ADDCYC(count); +} + +void HuC6280::StealMasterCycles(const int count) +{ + ADDCYC_MASTER(count); +} + +void HuC6280::FlushMPRCache(void) +{ + for(int x = 0; x < 9; x++) + SetMPR(x, MPR[x & 0x7]); +} + +INLINE void HuC6280::PUSH(const uint8 V) +{ + WrMem(0x2100 | S, V); + S--; +} + +INLINE uint8 HuC6280::POP(void) +{ + S++; + + return(RdMem(0x2100 | S)); +} + +static uint8 ZNTable[256]; +/* Some of these operations will only make sense if you know what the flag + constants are. */ + +INLINE void HuC6280::X_ZN(const uint8 zort) +{ + P &= ~(Z_FLAG|N_FLAG); + P |= ZNTable[zort]; +} + +INLINE void HuC6280::X_ZNT(const uint8 zort) +{ + P |= ZNTable[zort]; +} + +template +INLINE void HuC6280::JR(const bool cond, const bool BBRS) +{ + if(cond) + { + int32 disp; + disp=(int8)RdOp(PC); + PC++; + ADDCYC(3); + PC+=disp; + + if(DebugMode && ADDBT) + ADDBT(PC - disp - 2 - (BBRS ? 1 : 0), PC, 0); + } + else + { + ADDCYC(1); + PC++; + } + LASTCYCLE; +} + +template +INLINE void HuC6280::BBRi(const uint8 val, const unsigned int bitto) +{ + JR(!(val & (1 << bitto)), true); +} + +template +INLINE void HuC6280::BBSi(const uint8 val, const unsigned int bitto) +{ + JR(val & (1 << bitto), true); +} + +// Total cycles for ST0/ST1/ST2 is effectively 5(4 here, +1 stealcycle in the PC Engine memory handler logic) +#define ST0 { ADDCYC(3); LASTCYCLE; WrMemPhysical(0x80000000 | (0xFF * 8192 + 0), x); } +#define ST1 { ADDCYC(3); LASTCYCLE; WrMemPhysical(0x80000000 | (0xFF * 8192 + 2), x); } +#define ST2 { ADDCYC(3); LASTCYCLE; WrMemPhysical(0x80000000 | (0xFF * 8192 + 3), x); } + +#define LDA A=x;X_ZN(A) +#define LDX X=x;X_ZN(X) +#define LDY Y=x;X_ZN(Y) + + +#define IMP(op) op; break; + +#define SAX { uint8 tmp = X; X = A; A = tmp; ADDCYC(2); LASTCYCLE; } +#define SAY { uint8 tmp = Y; Y = A; A = tmp; ADDCYC(2); LASTCYCLE; } +#define SXY { uint8 tmp = X; X = Y; Y = tmp; ADDCYC(2); LASTCYCLE; } + +#define TAX { X = A; X_ZN(A); ADDCYC(1); LASTCYCLE; } +#define TXA { A = X; X_ZN(A); ADDCYC(1); LASTCYCLE; } +#define TAY { Y = A; X_ZN(A); ADDCYC(1); LASTCYCLE; } +#define TYA { A = Y; X_ZN(A); ADDCYC(1); LASTCYCLE; } +#define TSX { X = S; X_ZN(X); ADDCYC(1); LASTCYCLE; } +#define TXS { S = X; ADDCYC(1); LASTCYCLE; } + +#define DEX { X--; X_ZN(X); ADDCYC(1); LASTCYCLE; } +#define DEY { Y--; X_ZN(Y); ADDCYC(1); LASTCYCLE; } +#define INX { X++; X_ZN(X); ADDCYC(1); LASTCYCLE; } +#define INY { Y++; X_ZN(Y); ADDCYC(1); LASTCYCLE; } + + + +// Combined cycle total of TPREFIX and TPOSTFIX must be 3. +// WARNING: LASTCYCLE is called twice in instructions that make use TPREFIX/TPOSTFIX, so allow for that in the LASTCYCLE +// macro! +#define TPREFIX { uint8 Abackup = A; if(P & T_FLAG) { ADDCYC(1); A = RdMem(0x2000 + X); } +#define TPOSTFIX if(P & T_FLAG) { ADDCYC(1); WrMem(0x2000 + X, A); LASTCYCLE; A = Abackup; } } + +/* All of the freaky arithmetic operations. */ +#define AND TPREFIX; A&=x;X_ZN(A); TPOSTFIX; +#define BIT P &= ~(Z_FLAG|V_FLAG|N_FLAG); P|=ZNTable[x&A]&Z_FLAG; P|=x&(V_FLAG|N_FLAG); +#define EOR TPREFIX; A^=x;X_ZN(A); TPOSTFIX; +#define ORA TPREFIX; A|=x;X_ZN(A); TPOSTFIX; + + +// ADC and SBC in decimal mode take 1 extra CPU cycle...we'll add it by using "LASTCYCLE". So now that makes +// LASTCYCLE being called at most 3 times. Not very LASTy, is it!! +#define ADC TPREFIX; { \ + if(P & D_FLAG) \ + { \ + uint32 low = (A & 0x0F) + (x & 0x0F) + (P & 1); \ + uint32 high = (A & 0xF0) + (x & 0xF0); \ + P &= ~(Z_FLAG | C_FLAG | N_FLAG); \ + if(low > 0x09) { high += 0x10; low += 0x06; } \ + if(high > 0x90) { high += 0x60; } \ + P |= (high >> 8) & C_FLAG; \ + A = (low & 0x0F) | (high & 0xF0); \ + X_ZNT(A); \ + LASTCYCLE; \ + } \ + else \ + { \ + uint32 l=A+x+(P&1); \ + P&=~(Z_FLAG|C_FLAG|N_FLAG|V_FLAG); \ + P|=((((A^x)&0x80)^0x80) & ((A^l)&0x80))>>1; \ + P|=(l>>8)&C_FLAG; \ + A=l; \ + X_ZNT(A); \ + } \ + } TPOSTFIX; + +#define SBC if(P & T_FLAG) {puts("SET misuse"); } if(P & D_FLAG) \ + { \ + uint32 c = (P & 1) ^ 1; \ + uint32 l = A - x - c; \ + uint32 low = (A & 0x0f) - (x & 0x0f) - c; \ + uint32 high = (A & 0xf0) - (x & 0xf0); \ + P &= ~(Z_FLAG | C_FLAG | N_FLAG); \ + if(low & 0xf0) low -= 0x06; \ + if(low & 0x80) high -= 0x10; \ + if(high & 0x0f00) high -= 0x60; \ + P |= ((l >> 8) & C_FLAG) ^ C_FLAG; \ + A = (low & 0x0F) | (high & 0xf0); \ + X_ZNT(A); \ + LASTCYCLE; \ + } else { \ + uint32 l=A-x-((P&1)^1); \ + P&=~(Z_FLAG|C_FLAG|N_FLAG|V_FLAG); \ + P|=((A^l)&(A^x)&0x80)>>1; \ + P|=((l>>8)&C_FLAG)^C_FLAG; \ + A=l; \ + X_ZNT(A); \ + } + +#define CMPL(a1,a2) { \ + uint32 t=a1-a2; \ + X_ZN(t&0xFF); \ + P&=~C_FLAG; \ + P|=((t>>8)&C_FLAG)^C_FLAG; \ + } + +#define TAM for(int i = 0; i < 8; i ++) { \ + if(x & (1 << i)) \ + { \ + SetMPR(i, A); \ + } \ + } SetMPR(8, MPR[0]); \ + ADDCYC(4); \ + LASTCYCLE; + +#define TMA for(int i = 0; i < 8; i ++) { \ + if(x & (1 << i)) \ + A = MPR[i]; \ + } \ + ADDCYC(3); \ + LASTCYCLE; + +// Note: CSL/CSH's speed timing changes take effect for the last CPU cycle of CSL/CSH. Be cautious +// not to change the order here: +#define CSL { /*printf("CSL: %04x\n", PC);*/ ADDCYC(2); speed = 0; REDOSPEEDCACHE(); LASTCYCLE; } +#define CSH { /*printf("CSH: %04x\n", PC);*/ ADDCYC(2); speed = 1; REDOSPEEDCACHE(); LASTCYCLE; } + +#define RMB(bitto) x &= ~(1 << (bitto & 7)) +#define SMB(bitto) x |= 1 << (bitto & 7) + +#define TSB { P &= ~(Z_FLAG | V_FLAG | N_FLAG); P |= (x | A) ? 0 : Z_FLAG; P |= x & (N_FLAG | V_FLAG); x |= A; } +#define TRB { P &= ~(Z_FLAG | V_FLAG | N_FLAG); P |= (x & ~A) ? 0 : Z_FLAG; P |= x & (N_FLAG | V_FLAG); x &= ~A; } + +#define TST { P &= ~(Z_FLAG | V_FLAG | N_FLAG); P |= (x & zoomhack) ? 0: Z_FLAG; P |= x & (V_FLAG | N_FLAG); } + +#define CMP CMPL(A,x) +#define CPX CMPL(X,x) +#define CPY CMPL(Y,x) + +/* The following operations modify the byte being worked on. */ +#define DEC x--;X_ZN(x) +#define INC x++;X_ZN(x) + +#define ASL P&=~C_FLAG;P|=x>>7;x<<=1;X_ZN(x) +#define LSR P&=~(C_FLAG|N_FLAG|Z_FLAG);P|=x&1;x>>=1;X_ZNT(x) + +#define ROL { \ + uint8 l=x>>7; \ + x<<=1; \ + x|=P&C_FLAG; \ + P&=~(Z_FLAG|N_FLAG|C_FLAG); \ + P|=l; \ + X_ZNT(x); \ + } +#define ROR { \ + uint8 l=x&1; \ + x>>=1; \ + x|=(P&C_FLAG)<<7; \ + P&=~(Z_FLAG|N_FLAG|C_FLAG); \ + P|=l; \ + X_ZNT(x); \ + } + +/* Absolute */ +#define GetAB(target) \ +{ \ + target=RdOp(PC); \ + PC++; \ + target|=RdOp(PC)<<8; \ + PC++; \ +} + +/* Absolute Indexed(for reads) */ +#define GetABI(target, i) \ +{ \ + unsigned int tmp; \ + GetAB(tmp); \ + target=tmp; \ + target+=i; \ +} + +/* Zero Page */ +#define GetZP(target) \ +{ \ + target=0x2000 | RdOp(PC); \ + PC++; \ +} + +/* Zero Page Indexed */ +#define GetZPI(target,i) \ +{ \ + target=0x2000 | ((i+RdOp(PC)) & 0xFF); \ + PC++; \ +} + +/* Indirect */ +#define GetIND(target) \ +{ \ + uint8 tmp; \ + tmp=RdOp(PC); \ + PC++; \ + target=RdMem(0x2000 + tmp); \ + tmp++; \ + target|=RdMem(0x2000 + tmp)<<8; \ +} + + +/* Indexed Indirect */ +#define GetIX(target) \ +{ \ + uint8 tmp; \ + tmp=RdOp(PC); \ + PC++; \ + tmp+=X; \ + target=RdMem(0x2000 + tmp); \ + tmp++; \ + target|=RdMem(0x2000 + tmp) <<8; \ +} + +/* Indirect Indexed(for reads) */ +#define GetIY(target) \ +{ \ + unsigned int rt; \ + uint8 tmp; \ + tmp=RdOp(PC); \ + rt=RdMem(0x2000 + tmp); \ + tmp++; \ + rt|=RdMem(0x2000 + tmp)<<8; \ + target = (rt + Y); \ + PC++; \ +} + +/* Now come the macros to wrap up all of the above stuff addressing mode functions + and operation macros. Note that operation macros will always operate(redundant + redundant) on the variable "x". +*/ + +#define RMW_A(op) { uint8 x = A; op; A = x; ADDCYC(1); LASTCYCLE; break; } /* Meh... */ +#define RMW_AB(op) { unsigned int EA; uint8 x; GetAB(EA); ADDCYC(6); x=RdMem(EA); op; LASTCYCLE; WrMem(EA,x); break; } +#define RMW_ABI(reg,op) { unsigned int EA; uint8 x; GetABI(EA,reg); ADDCYC(6); x=RdMem(EA); op; LASTCYCLE; WrMem(EA,x); break; } +#define RMW_ABX(op) RMW_ABI(X,op) +#define RMW_ABY(op) RMW_ABI(Y,op) +#define RMW_ZP(op) { unsigned int EA; uint8 x; GetZP(EA); ADDCYC(5); x=RdMem(EA); op; LASTCYCLE; WrMem(EA,x); break; } +#define RMW_ZPX(op) { unsigned int EA; uint8 x; GetZPI(EA, X); ADDCYC(5); x=RdMem(EA); op; LASTCYCLE; WrMem(EA,x); break;} + +// For RMB/SMB... +#define RMW_ZP_B(op) { unsigned int EA; uint8 x; GetZP(EA); ADDCYC(5); x=RdMem(EA); ADDCYC(1); op; LASTCYCLE; WrMem(EA,x); break; } + + +// A LD_IM for complex immediate instructions that take care of cycle consumption in their operation(TAM, TMA, ST0, ST1, ST2) +#define LD_IM_COMPLEX(op) { uint8 x = RdOp(PC); PC++; op; break; } + +#define LD_IM(op) {uint8 x; x=RdOp(PC); PC++; ADDCYC(1); LASTCYCLE; op; break;} +#define LD_ZP(op) {unsigned int EA; uint8 x; GetZP(EA); ADDCYC(3); LASTCYCLE; x=RdMem(EA); op; break;} +#define LD_ZPX(op) {unsigned int EA; uint8 x; GetZPI(EA, X); ADDCYC(3); LASTCYCLE; x=RdMem(EA); op; break;} +#define LD_ZPY(op) {unsigned int EA; uint8 x; GetZPI(EA, Y); ADDCYC(3); LASTCYCLE; x=RdMem(EA); op; break;} +#define LD_AB(op) {unsigned int EA; uint8 x; GetAB(EA); ADDCYC(4); LASTCYCLE; x=RdMem(EA); op; break; } +#define LD_ABI(reg,op) {unsigned int EA; uint8 x; GetABI(EA,reg); ADDCYC(4); LASTCYCLE; x=RdMem(EA); op; break;} +#define LD_ABX(op) LD_ABI(X, op) +#define LD_ABY(op) LD_ABI(Y, op) + +#define LD_IND(op) {unsigned int EA; uint8 x; GetIND(EA); ADDCYC(6); LASTCYCLE; x=RdMem(EA); op; break;} +#define LD_IX(op) {unsigned int EA; uint8 x; GetIX(EA); ADDCYC(6); LASTCYCLE; x=RdMem(EA); op; break;} +#define LD_IY(op) {unsigned int EA; uint8 x; GetIY(EA); ADDCYC(6); LASTCYCLE; x=RdMem(EA); op; break;} + +// For the funky TST instruction +#define LD_IM_TST(op, lt) { uint8 lt = RdOp(PC); PC++; ADDCYC(3); op; } +#define LD_IM_ZP(op) LD_IM_TST(LD_ZP(TST), zoomhack); +#define LD_IM_ZPX(op) LD_IM_TST(LD_ZPX(TST), zoomhack); +#define LD_IM_AB(op) LD_IM_TST(LD_AB(TST), zoomhack); +#define LD_IM_ABX(op) LD_IM_TST(LD_ABX(TST), zoomhack); + + +#define BMT_PREFIX(pork) in_block_move = IBM_##pork; +#define BMT_LOOPCHECK(pork) if(!runrunrun) { TimerSync(); return; } continue_the_##pork: + +#define BMT_TDD BMT_PREFIX(TDD); do { ADDCYC(6); WrMem(bmt_dest, RdMem(bmt_src)); bmt_src--; bmt_dest--; BMT_LOOPCHECK(TDD); bmt_length--; } while(bmt_length); +#define BMT_TAI BMT_PREFIX(TAI); {bmt_alternate = 0; do { ADDCYC(6); WrMem(bmt_dest, RdMem(bmt_src + bmt_alternate)); bmt_dest++; bmt_alternate ^= 1; BMT_LOOPCHECK(TAI); bmt_length--; } while(bmt_length); } +#define BMT_TIA BMT_PREFIX(TIA); {bmt_alternate = 0; do { ADDCYC(6); WrMem(bmt_dest + bmt_alternate, RdMem(bmt_src)); bmt_src++; bmt_alternate ^= 1; BMT_LOOPCHECK(TIA); bmt_length--; } while(bmt_length); } +#define BMT_TII BMT_PREFIX(TII); do { ADDCYC(6); WrMem(bmt_dest, RdMem(bmt_src)); bmt_src++; bmt_dest++; BMT_LOOPCHECK(TII); bmt_length--; } while(bmt_length); +#define BMT_TIN BMT_PREFIX(TIN); do { ADDCYC(6); WrMem(bmt_dest, RdMem(bmt_src)); bmt_src++; BMT_LOOPCHECK(TIN); bmt_length--; } while(bmt_length); + +// Block memory transfer load +#define LD_BMT(op) { PUSH(Y); PUSH(A); PUSH(X); GetAB(bmt_src); GetAB(bmt_dest); GetAB(bmt_length); ADDCYC(14); op; in_block_move = 0; X = POP(); A = POP(); Y = POP(); ADDCYC(2); LASTCYCLE; break; } + +#define ST_ZP(r) {unsigned int EA; GetZP(EA); ADDCYC(3); LASTCYCLE; WrMem(EA, r); break;} +#define ST_ZPX(r) {unsigned int EA; GetZPI(EA,X); ADDCYC(3); LASTCYCLE; WrMem(EA, r); break;} +#define ST_ZPY(r) {unsigned int EA; GetZPI(EA,Y); ADDCYC(3); LASTCYCLE; WrMem(EA, r); break;} +#define ST_AB(r) {unsigned int EA; GetAB(EA); ADDCYC(4); LASTCYCLE; WrMem(EA, r); break;} +#define ST_ABI(reg,r) {unsigned int EA; GetABI(EA,reg); ADDCYC(4); LASTCYCLE; WrMem(EA,r); break; } +#define ST_ABX(r) ST_ABI(X, r) +#define ST_ABY(r) ST_ABI(Y, r) + +#define ST_IND(r) {unsigned int EA; GetIND(EA); ADDCYC(6); LASTCYCLE; WrMem(EA,r); break; } +#define ST_IX(r) {unsigned int EA; GetIX(EA); ADDCYC(6); LASTCYCLE; WrMem(EA,r); break; } +#define ST_IY(r) {unsigned int EA; GetIY(EA); ADDCYC(6); LASTCYCLE; WrMem(EA,r); break; } + +void HuC6280::Reset(void) +{ + timer_inreload = FALSE; + timer_div = 1024; + timer_load = 0; + timer_value = 0; + timer_status = 0; + in_block_move = 0; + + IRQSample = IQRESET; + IRQlow = IQRESET; +} + +HuC6280::HuC6280(const bool emulate_wai) : EmulateWAI(emulate_wai) +{ + timestamp = 0; + next_user_event = 0; + next_event = 0; + + timer_lastts = 0; + timer_inreload = 0; + timer_status = 0; + timer_value = 0; + timer_load = 0; + timer_div = 0; + + + in_block_move = 0; + isopread = 0; + + LastLogicalReadAddr = 0; + LastLogicalWriteAddr = 0; + + for(int x = 0; x < 256; x++) + { + if(!x) + ZNTable[x] = Z_FLAG; + else if (x&0x80) + ZNTable[x]=N_FLAG; + else + ZNTable[x]=0; + } + + SetCPUHook(NULL, NULL); +} + +HuC6280::~HuC6280() +{ + #if 0 + for(int op = 0; op < 256; op++) + { + printf("%02x: Nominal: %d, Real: ", op, CycTable[op]); + + for(int i = 0; i < 256; i++) + { + if(CycTimes[op][i]) + printf("%d, ", i); + } + + printf("\n"); + } + #endif +} + +void HuC6280::Power(void) +{ + IODataBuffer = 0xFF; + + IRQlow = 0; + + PC = 0; + A = 0; + X = 0; + Y = 0; + S = 0; + P = 0; + + REDOPIMCACHE(); + + for(int i = 0; i < 9; i++) + { + MPR[i] = 0; + FastPageR[i] = NULL; + } + Reset(); +} + +// TimerSync() doesn't call CalcNextEvent(), so we'll need to call it some time after TimerSync() (TimerSync() is +// used in HappySync(), TimerRead(), and TimerWrite(). +void HuC6280::TimerSync(void) +{ + int32 clocks = timestamp - timer_lastts; + + timer_div -= clocks; + + while(timer_div <= 0) + { + int32 reload_div = 1024 * 3; + + if(timer_inreload) + { + timer_value = timer_load; + reload_div = reload_div - 1; //1023; + timer_inreload = FALSE; + } + else + { + if(timer_status) + { + timer_value --; + if(timer_value < 0) + { + timer_inreload = TRUE; + reload_div = 1; + IRQBegin(IQTIMER); + } + } + } + timer_div += reload_div; + } + + timer_lastts = timestamp; +} + +void HuC6280::HappySync(void) +{ + TimerSync(); + + if(next_user_event <= 0) + next_user_event = EventHandler->Sync(timestamp); + + CalcNextEvent(); +} + +template +void HuC6280::RunSub(void) +{ + uint32 old_PC; + + if(DebugMode) + old_PC = PC; + + if(in_block_move) + { + switch(in_block_move) + { + default: exit(1); + case IBM_TIA: goto continue_the_TIA; + case IBM_TAI: goto continue_the_TAI; + case IBM_TDD: goto continue_the_TDD; + case IBM_TII: goto continue_the_TII; + case IBM_TIN: goto continue_the_TIN; + } + } + + do + { + if(DebugMode) + old_PC = PC; + + #include "huc6280_step.inc" + } while(runrunrun > 0); +} + +void HuC6280::Run(bool StepMode) +{ + if(StepMode) + runrunrun = -1; // Needed so a BMT isn't interrupted. + else + runrunrun = 1; + + if(CPUHook || ADDBT) + RunSub(); + else + RunSub(); +} + +uint8 HuC6280::TimerRead(unsigned int address, bool peek) +{ + if(!peek) + { + TimerSync(); + CalcNextEvent(); + } + + return(timer_value | (IODataBuffer & 0x80)); +} + +void HuC6280::TimerWrite(unsigned int address, uint8 V) +{ + TimerSync(); + + switch(address & 1) + { + case 0: timer_load = (V & 0x7F); break; + case 1: if(V & 1) // Enable counter + { + if(timer_status == 0) + { + //if(timer_inreload) + // puts("Oops"); + timer_div = 1024 * 3; + timer_value = timer_load; + } + } + timer_status = V & 1; + break; + } + + CalcNextEvent(); +} + + +uint8 HuC6280::IRQStatusRead(unsigned int address, bool peek) +{ + if(!(address & 2)) + return(IODataBuffer); + + switch(address & 1) + { + case 0: + if(!peek) + IRQEnd(IQTIMER); + return(IRQMask ^ 0x7); + case 1: + { + int status = 0; + if(IRQlow & IQIRQ1) status |= 2; + if(IRQlow & IQIRQ2) status |= 1; + if(IRQlow & IQTIMER) status |= 4; + return(status | (IODataBuffer & ~(1 | 2 | 4))); + } + } + return(IODataBuffer); +} + +void HuC6280::IRQStatusWrite(unsigned int address, uint8 V) +{ + if(!(address & 2)) + return; + + switch(address & 1) + { + case 0: IRQMask = (V & 0x7) ^ 0x7; + break; + + case 1: IRQEnd(IQTIMER); + break; + } +} + +int HuC6280::StateAction(StateMem *sm, int load, int data_only) +{ + uint16 tmp_PC = PC; + + SFORMAT StateRegs[]= + { + SFVARN(tmp_PC, "PC"), + SFVARN(A, "A"), + SFVARN(P, "P"), + SFVARN(IFlagSample, "IFlagSample"), + SFVARN(X, "X"), + SFVARN(Y, "Y"), + SFVARN(S, "S"), + + SFVARN(lastop, "lastop"), + + SFVARN(IRQSample, "IRQSample"), + SFVARN(IRQlow, "IRQlow"), + SFVARN(IRQMask, "IRQMask"), + SFARRAYN(MPR, 8, "MPR"), + SFVARN(speed, "speed"), + + SFVARN(timer_inreload, "timer_inreload"), + SFVARN(timer_status, "timer_status"), + SFVARN(timer_value, "timer_value"), + SFVARN(timer_load, "timer_load"), + SFVARN(timer_div, "timer_div"), + + SFVARN(in_block_move, "IBM"), + SFVARN(bmt_src, "IBM_SRC"), + SFVARN(bmt_dest, "IBM_DEST"), + SFVARN(bmt_length, "IBM_LENGTH"), + SFVARN(bmt_alternate, "IBM_ALTERNATE"), + + SFVARN(timestamp, "timestamp"), + SFVARN(next_event, "next_event"), + SFVARN(next_user_event, "next_user_event"), + + // timer_lastts + + SFVAR(IODataBuffer), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "CPU"); + + if(load) + { + PC = tmp_PC; + + // Update MPR cache + FlushMPRCache(); + REDOSPEEDCACHE(); + REDOPIMCACHE(); + } + return(ret); +} + +void HuC6280::DumpMem(char *filename, uint32 start, uint32 end) +{ + FILE *fp=fopen(filename, "wb"); + + for(uint32 x = start; x <= end; x++) + fputc(RdMem(x), fp); + + fclose(fp); +} + +void HuC6280::SetRegister(const unsigned int id, uint32 value) +{ + switch(id) + { + case GSREG_PC: + PC = value & 0xFFFF; + break; + + case GSREG_A: + A = value & 0xFF; + break; + + case GSREG_X: + X = value & 0xFF; + break; + + case GSREG_Y: + Y = value & 0xFF; + break; + + case GSREG_SP: + S = value & 0xFF; + break; + + case GSREG_P: + P = value & 0xFF; + REDOPIMCACHE(); + break; + + case GSREG_SPD: + speed = value & 0x01; + REDOSPEEDCACHE(); + break; + + case GSREG_MPR0: + case GSREG_MPR1: + case GSREG_MPR2: + case GSREG_MPR3: + case GSREG_MPR4: + case GSREG_MPR5: + case GSREG_MPR6: + case GSREG_MPR7: + MPR[id - GSREG_MPR0] = value & 0xFF; + FlushMPRCache(); + break; + + case GSREG_IRQM: + IRQMask = (value & 0x7) ^ 0x7; + break; + + case GSREG_TIMS: + timer_status = value & 0x1; + break; + + case GSREG_TIMV: + timer_value = value & 0x7F; + break; + + case GSREG_TIML: + timer_load = value & 0x7F; + break; + + case GSREG_TIMD: + timer_div = value & 1023; + break; + } +} diff --git a/libmednahawk/src/hw_cpu/huc6280/huc6280.h b/libmednahawk/src/hw_cpu/huc6280/huc6280.h new file mode 100644 index 0000000000..5bec103b6b --- /dev/null +++ b/libmednahawk/src/hw_cpu/huc6280/huc6280.h @@ -0,0 +1,579 @@ +#ifndef __MDFN_HUC6280_H +#define __MDFN_HUC6280_H + +#include + +class HuC6280_Support +{ + public: + + INLINE HuC6280_Support(void) + { + + } + + INLINE ~HuC6280_Support() + { + + } + virtual int32 Sync(const int32 timestamp) = 0; +}; + +class HuC6280 +{ + public: + + typedef void (*writefunc)(uint32 A, uint8 V); + typedef uint8 (*readfunc)(uint32 A); + + + enum { N_FLAG = 0x80 }; + enum { V_FLAG = 0x40 }; + enum { T_FLAG = 0x20 }; + enum { B_FLAG = 0x10 }; + enum { D_FLAG = 0x08 }; + enum { I_FLAG = 0x04 }; + enum { Z_FLAG = 0x02 }; + enum { C_FLAG = 0x01 }; + + // If emulate_wai is true, then the "0xCB" opcode will be handled by waiting for the next high-level event, NOT + // for the IRQ line to be asserted as on a 65816. + // It's mainly a hack intended for less CPU-intensive HES playback. + HuC6280(const bool emulate_wai = false); + ~HuC6280(); + + void Reset(void); + void Power(void); + + enum { IQIRQ1 = 0x002 }; + enum { IQIRQ2 = 0x001 }; + enum { IQTIMER = 0x004 }; + enum { IQRESET = 0x020 }; + + INLINE void IRQBegin(int w) + { + IRQlow |= w; + } + + INLINE void IRQEnd(int w) + { + IRQlow &= ~w; + } + + + void TimerSync(void); + + INLINE uint8 GetIODataBuffer(void) + { + return(IODataBuffer); + } + + INLINE void SetIODataBuffer(uint8 v) + { + IODataBuffer = v; + } + + uint8 TimerRead(unsigned int address, bool peek = FALSE); + void TimerWrite(unsigned int address, uint8 V); + + uint8 IRQStatusRead(unsigned int address, bool peek = FALSE); + void IRQStatusWrite(unsigned int address, uint8 V); + + int StateAction(StateMem *sm, int load, int data_only); + + template + void RunSub(void); + + void Run(bool StepMode = FALSE); + + INLINE void Exit(void) + { + runrunrun = 0; + } + + INLINE void SyncAndResetTimestamp(void) + { + TimerSync(); + + timer_lastts = 0; + timestamp = 0; + } + + INLINE bool InBlockMove(void) + { + return(in_block_move); + } + + void StealCycle(void); + void StealCycles(const int count); + void StealMasterCycles(const int count); + + void SetEvent(const int32 cycles) NO_INLINE + { + next_user_event = cycles; + CalcNextEvent(); + } + + INLINE void SetEventHandler(HuC6280_Support *new_EventHandler) + { + EventHandler = new_EventHandler; + } + + INLINE uint32 Timestamp(void) + { + return(timestamp); + } + + // + // Debugger support methods: + // + INLINE void SetCPUHook(void (*new_CPUHook)(uint32), void (*new_ADDBT)(uint32, uint32, uint32)) + { + CPUHook = new_CPUHook; + ADDBT = new_ADDBT; + } + + INLINE void LoadShadow(const HuC6280 &state) + { + //EmulateWAI = state.EmulateWAI; + + PC = state.PC; + A = state.A; + X = state.X; + Y = state.Y; + S = state.S; + P = state.P; + + PIMaskCache = state.PIMaskCache; + + MPR[0] = state.MPR[0]; + MPR[1] = state.MPR[1]; + MPR[2] = state.MPR[2]; + MPR[3] = state.MPR[3]; + MPR[4] = state.MPR[4]; + MPR[5] = state.MPR[5]; + MPR[6] = state.MPR[6]; + MPR[7] = state.MPR[7]; + + for(int x = 0; x < 9; x++) + SetMPR(x, MPR[x & 0x7]); + + IRQlow = state.IRQlow; + IRQSample = state.IRQSample; + IFlagSample = state.IFlagSample; + + speed = state.speed; + speed_shift_cache = state.speed_shift_cache; + timestamp = state.timestamp; + + IRQMask = state.IRQMask; + + // + // + + timer_status = 0; + + next_user_event = 0x1FFFFFFF; + next_event = 0x1FFFFFFF; + + //IRQlow = 0; + //IRQSample = 0; + //IFlagSample = HuC6280::I_FLAG; + } + + enum + { + GSREG_PC = 0, + GSREG_A, + GSREG_X, + GSREG_Y, + GSREG_SP, + GSREG_P, + GSREG_MPR0, + GSREG_MPR1, + GSREG_MPR2, + GSREG_MPR3, + GSREG_MPR4, + GSREG_MPR5, + GSREG_MPR6, + GSREG_MPR7, + GSREG_SPD, + GSREG_IRQM, + GSREG_TIMS, + GSREG_TIMV, + GSREG_TIML, + GSREG_TIMD, + GSREG_STAMP + }; + + INLINE uint32 GetRegister(const unsigned int id, char *special = NULL, const uint32 special_len = 0) + { + uint32 value = 0xDEADBEEF; + + switch(id) + { + case GSREG_PC: + value = PC & 0xFFFF; + break; + + case GSREG_A: + value = A; + break; + + case GSREG_X: + value = X; + break; + + case GSREG_Y: + value = Y; + break; + + case GSREG_SP: + value = S; + break; + + case GSREG_P: + value = P; + if(special) + { + trio_snprintf(special, special_len, "N: %d, V: %d, T: %d, D: %d, I: %d, Z: %d, C: %d", (int)(bool)(value & N_FLAG), + (int)(bool)(value & V_FLAG), + (int)(bool)(value & T_FLAG), + (int)(bool)(value & D_FLAG), + (int)(bool)(value & I_FLAG), + (int)(bool)(value & Z_FLAG), + (int)(bool)(value & C_FLAG)); + } + break; + + case GSREG_SPD: + value = speed; + if(special) + { + trio_snprintf(special, special_len, "%s(%s)", speed ? "High" : "Low", speed ? "7.16MHz" : "1.79MHz"); + } + break; + + case GSREG_MPR0: + case GSREG_MPR1: + case GSREG_MPR2: + case GSREG_MPR3: + case GSREG_MPR4: + case GSREG_MPR5: + case GSREG_MPR6: + case GSREG_MPR7: + value = MPR[id - GSREG_MPR0]; + + if(special) + { + trio_snprintf(special, special_len, "0x%02X * 0x2000 = 0x%06X", value, (uint32)value * 0x2000); + } + break; + + case GSREG_IRQM: + value = IRQMask ^ 0x7; + + if(special) + { + trio_snprintf(special, special_len, "IRQ2: %s, IRQ1: %s, Timer: %s", (value & IQIRQ2) ? "Disabled" : "Enabled", + (value & IQIRQ1) ? "Disabled" : "Enabled", (value & IQTIMER) ? "Disabled" : "Enabled"); + } + break; + + case GSREG_TIMS: + value = timer_status; + + if(special) + { + trio_snprintf(special, special_len, "%s", (value & 1) ? "Enabled" : "Disabled"); + } + break; + + case GSREG_TIMV: + value = timer_value; + break; + + case GSREG_TIML: + value = timer_load; + if(special) + { + uint32 meowval = (value + 1) * 1024; + trio_snprintf(special, special_len, "(%d + 1) * 1024 = %d; 7,159,090.90... Hz / %d = %f Hz", value, meowval, meowval, (double)7159090.909090909091 / meowval); + } + break; + + case GSREG_TIMD: + value = timer_div; + break; + + case GSREG_STAMP: + value = timestamp; + break; + } + return(value); + } + + //uint32 GetRegister(const unsigned int id, char *special = NULL, const uint32 special_len = 0); + void SetRegister(const unsigned int id, uint32 value); + + INLINE void PokePhysical(uint32 address, uint8 data, bool hl = FALSE) + { + address &= 0x1FFFFF; + + if(hl) + { + // FIXME: This is a very evil hack. + if(FastMap[address >> 13]) + FastMap[address >> 13][address] = data; + } + else + WriteMap[address >> 13](address, data); + } + + INLINE void PokeLogical(uint16 address, uint8 data, bool hl = FALSE) + { + uint8 wmpr = MPR[address >> 13]; + + PokePhysical((wmpr << 13) | (address & 0x1FFF), data, hl); + } + + INLINE uint8 PeekPhysical(uint32 address) + { + address &= 0x1FFFFF; + + return(ReadMap[address >> 13](address)); + } + + INLINE uint8 PeekLogical(uint16 address) + { + uint8 wmpr = MPR[address >> 13]; + + return(PeekPhysical((wmpr << 13) | (address & 0x1FFF))); + } + + void DumpMem(char *filename, uint32 start, uint32 end); // For debugging + // + // End Debugger Support Methods + // + + INLINE void SetFastRead(unsigned int i, uint8 *ptr) + { + assert(i < 0x100); + + FastMap[i] = ptr ? (ptr - i * 8192) : NULL; + } + + INLINE readfunc GetReadHandler(unsigned int i) + { + assert(i < 0x100); + return(ReadMap[i]); + } + + + INLINE void SetReadHandler(unsigned int i, readfunc func) + { + assert(i < 0x100); + ReadMap[i] = func; + } + + INLINE void SetWriteHandler(unsigned int i, writefunc func) + { + assert(i < 0x100); + WriteMap[i] = func; + } + + // If external debugging code uses this function, then SetFastRead() must not be used with a pointer other than NULL for it to work + // properly. + INLINE uint32 GetLastLogicalReadAddr(void) + { + return(LastLogicalReadAddr); + } + + INLINE uint32 GetLastLogicalWriteAddr(void) + { + return(LastLogicalWriteAddr); + } + + private: + + void FlushMPRCache(void); + + INLINE void SetMPR(int i, int v) + { + MPR[i] = v; + FastPageR[i] = FastMap[v] ? (FastMap[v] + v * 8192) - i * 8192 : NULL; + } + + + // Logical + INLINE uint8 RdMem(unsigned int address) + { + if(FastPageR[address >> 13]) + return(FastPageR[address >> 13][address]); + + LastLogicalReadAddr = address; + + uint8 wmpr = MPR[address >> 13]; + return(ReadMap[wmpr]((wmpr << 13) | (address & 0x1FFF))); + } + + // Logical(warning: sets/clears isopread) + INLINE uint8 RdOp(unsigned int address) + { + if(FastPageR[address >> 13]) + return(FastPageR[address >> 13][address]); + + LastLogicalReadAddr = address; + + isopread = 1; + uint8 wmpr = MPR[address >> 13]; + uint8 ret = ReadMap[wmpr]((wmpr << 13) | (address & 0x1FFF)); + isopread = 0; + return(ret); + } + + // Logical + INLINE void WrMem(unsigned int address, uint8 V) + { + uint8 wmpr = MPR[address >> 13]; + + LastLogicalWriteAddr = address; + + WriteMap[wmpr]((wmpr << 13) | (address & 0x1FFF), V); + } + + // Used for ST0, ST1, ST2 + // Must not modify address(upper bit is abused for ST0/ST1/ST2 handling). + INLINE void WrMemPhysical(uint32 address, uint8 data) + { + WriteMap[(address >> 13) & 0xFF](address, data); + } + + INLINE void REDOPIMCACHE(void) + { + PIMaskCache = (P & I_FLAG) ? 0 : ~0; + } + + INLINE void REDOSPEEDCACHE(void) + { + speed_shift_cache = (speed ^ 1) << 1; + } + + INLINE void ADDCYC(int x) + { + int master = (x * 3) << speed_shift_cache; + + timestamp += master; + next_event -= master; + next_user_event -= master; + + if(next_event <= 0) + HappySync(); + } + + INLINE void ADDCYC_MASTER(int master) + { + timestamp += master; + next_event -= master; + next_user_event -= master; + + if(next_event <= 0) + HappySync(); + } + + + void HappySync(void); + + INLINE void CalcNextEvent(void) + { + next_event = timer_div; + + if(next_event > next_user_event) + next_event = next_user_event; + } + + void X_ZN(const uint8); + void X_ZNT(const uint8); + + void PUSH(const uint8 V); + uint8 POP(void); + + template + void JR(const bool cond, const bool BBRS = false); + + template + void BBRi(const uint8 val, const unsigned int bitto); + + template + void BBSi(const uint8 val, const unsigned int bitto); + + private: + int runrunrun; + + uint32 timestamp; + uint32 PC; // Program Counter(16-bit, but as a 32-bit variable for performance reasons) + uint8 A; // Accumulator + uint8 X; // X Index register + uint8 Y; // Y Indes register + uint8 S; // Stack Pointer + uint8 P; // Processor Flags/Status Register + uint32 PIMaskCache; // Will be = 0 if (P & I_FLAG) is set, ~0 if (P & I_FLAG) is clear. + uint8 MPR[9]; // 8, + 1 for PC overflow from $ffff to $10000 + + uint8 *FastPageR[9]; // Fast page read cache for each 8KiB in the 16-bit logical address space + // (Reloaded on corresponding MPR change) + + int32 next_event; // Next event, period. Timer, user, ALIENS ARE INVADING SAVE ME HELP + + int32 next_user_event; + + int32 timer_lastts; + + uint8 IRQMask; + + uint32 LastLogicalReadAddr; // Some helper variables for debugging code(external) + uint32 LastLogicalWriteAddr; // to know where the read/write occurred in the 16-bit logical space. + + uint8 lastop; + + uint32 IRQlow; /* Simulated IRQ pin held low(or is it high?). + And other junk hooked on for speed reasons.*/ + int32 IRQSample; + int32 IFlagSample; + + uint8 speed; + uint8 speed_shift_cache; + + bool timer_inreload; + uint8 timer_status; + int32 timer_value, timer_load; + int32 timer_div; + + uint8 IODataBuffer; + + enum + { + IBM_TIA = 1, + IBM_TAI = 2, + IBM_TDD = 3, + IBM_TII = 4, + IBM_TIN = 5 + }; + uint32 in_block_move; + uint16 bmt_src, bmt_dest, bmt_length; + uint32 bmt_alternate; + bool isopread; + + void (*CPUHook)(uint32); + void (*ADDBT)(uint32, uint32, uint32); + + HuC6280_Support *EventHandler; + + uint8 *FastMap[0x100]; // Direct pointers to memory for mapped RAM and ROM for faster reads(biased to remove the need for an & operation). + readfunc ReadMap[0x100]; // Read handler pointers for each 8KiB in the 21-bit physical address space. + writefunc WriteMap[0x100]; // Write handler pointers for each 8KiB in the 21-bit physical address space. + + const bool EmulateWAI; // For speed hacks +}; + +#endif diff --git a/libmednahawk/src/hw_cpu/huc6280/huc6280_step.inc b/libmednahawk/src/hw_cpu/huc6280/huc6280_step.inc new file mode 100644 index 0000000000..793e60624b --- /dev/null +++ b/libmednahawk/src/hw_cpu/huc6280/huc6280_step.inc @@ -0,0 +1,95 @@ + if(DebugMode && CPUHook) + { + TimerSync(); + CalcNextEvent(); + + CPUHook(PC); + } + + if(IRQSample | IRQlow) + { + if(IRQSample & IQRESET) + { + speed = 0; + REDOSPEEDCACHE(); + + IRQMask = 7; + SetMPR(7, 0); + PC=RdMem(0xFFFE); + PC|=RdMem(0xFFFF)<<8; + P=I_FLAG; + REDOPIMCACHE(); + IRQSample &= ~IQRESET; + IRQlow &= ~IQRESET; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0xFFFE); + + continue; + } + else + { + uint32 tmpa = 0; + + if((IRQlow & IQTIMER & IRQMask) && !IFlagSample) //IRQSample & IQTIMER) + tmpa = 0xFFFA; + else if(IRQSample & IQIRQ1) + tmpa = 0xFFF8; + else if(IRQSample & IQIRQ2) + tmpa = 0xFFF6; + //else + // puts("DANGER WILL ROBINSON DANGER"); + + //printf("IRQ: %04x\n", tmpa); + + if(tmpa) + { + // Total: 8 cycles(7 ADDCYC(1), 1 LASTCYCLE) + + ADDCYC(1); // Cycle 1 + RdMem(PC); // Dummy read + + ADDCYC(1); // Cycle 2 + RdMem(PC + 1); // Dummy read + + ADDCYC(1); // Cycle 3 + PUSH(PC>>8); // Push PCH + + ADDCYC(1); // Cycle 4 + PUSH(PC); // Push PCL + + ADDCYC(1); // Cycle 5 + PUSH((P & ~B_FLAG)); // Push P + P |= I_FLAG; + REDOPIMCACHE(); + P &= ~(T_FLAG | D_FLAG); + + ADDCYC(1); // Cycle 6 + PC=RdMem(tmpa); // Fetch vector PCL + + ADDCYC(1); // Cycle 7 + PC|=RdMem(tmpa + 1) << 8; // Fect vector PCH + + LASTCYCLE; // Cycle 8(internal operation?) + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, tmpa); + + continue; + } + } + } + PC &= 0xFFFF; // Our cpu core can only handle PC going about 8192 bytes over, so make sure it never gets that far... + + lastop = RdOp(PC); + + PC++; + + switch(lastop) + { + #include "ops.inc" + } + + P &= ~T_FLAG; + skip_T_flag_clear:; // goto'd by the SET code + diff --git a/libmednahawk/src/hw_cpu/huc6280/ops.inc b/libmednahawk/src/hw_cpu/huc6280/ops.inc new file mode 100644 index 0000000000..a1a3bf96be --- /dev/null +++ b/libmednahawk/src/hw_cpu/huc6280/ops.inc @@ -0,0 +1,558 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +case 0x00: /* BRK */ + PC++; + P &= ~T_FLAG; + PUSH(PC >> 8); + PUSH(PC); + PUSH(P | B_FLAG); + + P |= I_FLAG; + REDOPIMCACHE(); + + P &= ~D_FLAG; + + PC = RdOp(0xFFF6); + PC |= RdOp(0xFFF7) << 8; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(7); + LASTCYCLE; + break; + +case 0x40: /* RTI */ + P = POP(); + REDOPIMCACHE(); + PC = POP(); + PC |= POP() << 8; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(6); + LASTCYCLE; + + goto skip_T_flag_clear; + + break; + +case 0x60: /* RTS */ + PC = POP(); + PC |= POP() << 8; + PC++; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(6); + LASTCYCLE; + break; + +case 0x48: /* PHA */ + ADDCYC(2); + LASTCYCLE; + PUSH(A); + break; + +case 0x08: /* PHP */ + ADDCYC(2); + LASTCYCLE; + P &= ~T_FLAG; + PUSH(P | B_FLAG); + break; + +case 0xDA: // PHX 65C02 + ADDCYC(2); + LASTCYCLE; + PUSH(X); + break; + +case 0x5A: // PHY 65C02 + ADDCYC(2); + LASTCYCLE; + PUSH(Y); + break; + +case 0x68: /* PLA */ + ADDCYC(3); + LASTCYCLE; + A = POP(); + X_ZN(A); + break; + +case 0xFA: // PLX 65C02 + ADDCYC(3); + LASTCYCLE; + X = POP(); + X_ZN(X); + break; + +case 0x7A: // PLY 65C02 + ADDCYC(3); + LASTCYCLE; + Y = POP(); + X_ZN(Y); + break; + +case 0x28: /* PLP */ + ADDCYC(3); + LASTCYCLE; + P = POP(); + REDOPIMCACHE(); + + goto skip_T_flag_clear; + + break; + +case 0x4C: /* JMP ABSOLUTE */ + { + uint16 ptmp = PC; + unsigned int npc; + + npc = RdOp(ptmp); + ptmp++; + npc |= RdOp(ptmp)<<8; + PC = npc; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(3); + LASTCYCLE; + } + break; + +case 0x6C: /* JMP Indirect */ + { + uint32 tmp; + GetAB(tmp); + PC = RdMem(tmp); + PC |= RdMem(tmp + 1) << 8; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(6); + LASTCYCLE; + } + break; + +case 0x7C: // JMP Indirect X - 65C02 + { + uint32 tmp; + GetAB(tmp); + tmp += X; + + PC = RdMem(tmp); + PC |= RdMem(tmp + 1) << 8; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(6); + LASTCYCLE; + } + break; + +case 0x20: /* JSR */ + { + uint8 npc; + npc=RdOp(PC); + PC++; + PUSH(PC >> 8); + PUSH(PC); + PC = RdOp(PC) << 8; + PC |= npc; + + if(DebugMode && ADDBT) + ADDBT(old_PC, PC, 0); + + ADDCYC(6); + LASTCYCLE; + } + break; + +case 0xAA: IMP(TAX); + +case 0x8A: IMP(TXA); + +case 0xA8: IMP(TAY); + +case 0x98: IMP(TYA); + +case 0xBA: IMP(TSX); + +case 0x9A: IMP(TXS); + +case 0xCA: IMP(DEX); + +case 0x88: IMP(DEY); + +case 0xE8: IMP(INX); + +case 0xC8: IMP(INY); + +case 0x54: IMP(CSL); +case 0xD4: IMP(CSH); + +#define OP_CLEARR(r) { ADDCYC(1); LASTCYCLE; r = 0; break; } + +case 0x62: OP_CLEARR(A); // CLA +case 0x82: OP_CLEARR(X); // CLX +case 0xC2: OP_CLEARR(Y); // CLY + +// The optional argument(s) will run at the end, immediately before the break. +#define OP_CLEARF(f, ...) { ADDCYC(1); LASTCYCLE; P &= ~f; __VA_ARGS__ break; } +#define OP_SETF(f, ...) { ADDCYC(1); LASTCYCLE; P |= f; __VA_ARGS__ break; } + +case 0x18: /* CLC */ + OP_CLEARF(C_FLAG); + +case 0xD8: /* CLD */ + OP_CLEARF(D_FLAG); + +case 0x58: /* CLI */ + OP_CLEARF(I_FLAG, REDOPIMCACHE();); + +case 0xB8: /* CLV */ + OP_CLEARF(V_FLAG); + +case 0x38: /* SEC */ + OP_SETF(C_FLAG); + +case 0xF8: /* SED */ + OP_SETF(D_FLAG); + +case 0x78: /* SEI */ + OP_SETF(I_FLAG, REDOPIMCACHE();); + +case 0xF4: /* SET */ + //puts("SET"); + ADDCYC(1); + LASTCYCLE; + P |= T_FLAG; + + goto skip_T_flag_clear; + + break; + + +case 0xEA: /* NOP */ + ADDCYC(1); + LASTCYCLE; + break; + +case 0x0A: RMW_A(ASL); +case 0x06: RMW_ZP(ASL); +case 0x16: RMW_ZPX(ASL); +case 0x0E: RMW_AB(ASL); +case 0x1E: RMW_ABX(ASL); + +case 0x3A: RMW_A(DEC); +case 0xC6: RMW_ZP(DEC); +case 0xD6: RMW_ZPX(DEC); +case 0xCE: RMW_AB(DEC); +case 0xDE: RMW_ABX(DEC); + +case 0x1A: RMW_A(INC); // 65C02 +case 0xE6: RMW_ZP(INC); +case 0xF6: RMW_ZPX(INC); +case 0xEE: RMW_AB(INC); +case 0xFE: RMW_ABX(INC); + +case 0x4A: RMW_A(LSR); +case 0x46: RMW_ZP(LSR); +case 0x56: RMW_ZPX(LSR); +case 0x4E: RMW_AB(LSR); +case 0x5E: RMW_ABX(LSR); + +case 0x2A: RMW_A(ROL); +case 0x26: RMW_ZP(ROL); +case 0x36: RMW_ZPX(ROL); +case 0x2E: RMW_AB(ROL); +case 0x3E: RMW_ABX(ROL); + +case 0x6A: RMW_A(ROR); +case 0x66: RMW_ZP(ROR); +case 0x76: RMW_ZPX(ROR); +case 0x6E: RMW_AB(ROR); +case 0x7E: RMW_ABX(ROR); + +case 0x69: LD_IM(ADC); +case 0x65: LD_ZP(ADC); +case 0x75: LD_ZPX(ADC); +case 0x6D: LD_AB(ADC); +case 0x7D: LD_ABX(ADC); +case 0x79: LD_ABY(ADC); +case 0x72: LD_IND(ADC); +case 0x61: LD_IX(ADC); +case 0x71: LD_IY(ADC); + +case 0x29: LD_IM(AND); +case 0x25: LD_ZP(AND); +case 0x35: LD_ZPX(AND); +case 0x2D: LD_AB(AND); +case 0x3D: LD_ABX(AND); +case 0x39: LD_ABY(AND); +case 0x32: LD_IND(AND); +case 0x21: LD_IX(AND); +case 0x31: LD_IY(AND); + +case 0x89: LD_IM(BIT); +case 0x24: LD_ZP(BIT); +case 0x34: LD_ZPX(BIT); +case 0x2C: LD_AB(BIT); +case 0x3C: LD_ABX(BIT); + +case 0xC9: LD_IM(CMP); +case 0xC5: LD_ZP(CMP); +case 0xD5: LD_ZPX(CMP); +case 0xCD: LD_AB(CMP); +case 0xDD: LD_ABX(CMP); +case 0xD9: LD_ABY(CMP); +case 0xD2: LD_IND(CMP); +case 0xC1: LD_IX(CMP); +case 0xD1: LD_IY(CMP); + +case 0xE0: LD_IM(CPX); +case 0xE4: LD_ZP(CPX); +case 0xEC: LD_AB(CPX); + +case 0xC0: LD_IM(CPY); +case 0xC4: LD_ZP(CPY); +case 0xCC: LD_AB(CPY); + +case 0x49: LD_IM(EOR); +case 0x45: LD_ZP(EOR); +case 0x55: LD_ZPX(EOR); +case 0x4D: LD_AB(EOR); +case 0x5D: LD_ABX(EOR); +case 0x59: LD_ABY(EOR); +case 0x52: LD_IND(EOR); +case 0x41: LD_IX(EOR); +case 0x51: LD_IY(EOR); + +case 0xA9: LD_IM(LDA); +case 0xA5: LD_ZP(LDA); +case 0xB5: LD_ZPX(LDA); +case 0xAD: LD_AB(LDA); +case 0xBD: LD_ABX(LDA); +case 0xB9: LD_ABY(LDA); +case 0xB2: LD_IND(LDA); +case 0xA1: LD_IX(LDA); +case 0xB1: LD_IY(LDA); + +case 0xA2: LD_IM(LDX); +case 0xA6: LD_ZP(LDX); +case 0xB6: LD_ZPY(LDX); +case 0xAE: LD_AB(LDX); +case 0xBE: LD_ABY(LDX); + +case 0xA0: LD_IM(LDY); +case 0xA4: LD_ZP(LDY); +case 0xB4: LD_ZPX(LDY); +case 0xAC: LD_AB(LDY); +case 0xBC: LD_ABX(LDY); + +case 0x09: LD_IM(ORA); +case 0x05: LD_ZP(ORA); +case 0x15: LD_ZPX(ORA); +case 0x0D: LD_AB(ORA); +case 0x1D: LD_ABX(ORA); +case 0x19: LD_ABY(ORA); +case 0x12: LD_IND(ORA); +case 0x01: LD_IX(ORA); +case 0x11: LD_IY(ORA); + +case 0xE9: LD_IM(SBC); +case 0xE5: LD_ZP(SBC); +case 0xF5: LD_ZPX(SBC); +case 0xED: LD_AB(SBC); +case 0xFD: LD_ABX(SBC); +case 0xF9: LD_ABY(SBC); +case 0xF2: LD_IND(SBC); +case 0xE1: LD_IX(SBC); +case 0xF1: LD_IY(SBC); + +case 0x85: ST_ZP(A); +case 0x95: ST_ZPX(A); +case 0x8D: ST_AB(A); +case 0x9D: ST_ABX(A); +case 0x99: ST_ABY(A); +case 0x92: ST_IND(A); +case 0x81: ST_IX(A); +case 0x91: ST_IY(A); + +case 0x86: ST_ZP(X); +case 0x96: ST_ZPY(X); +case 0x8E: ST_AB(X); + +case 0x84: ST_ZP(Y); +case 0x94: ST_ZPX(Y); +case 0x8C: ST_AB(Y); + +/* BBRi */ +case 0x0F: LD_ZP(BBRi(x, 0)); +case 0x1F: LD_ZP(BBRi(x, 1)); +case 0x2F: LD_ZP(BBRi(x, 2)); +case 0x3F: LD_ZP(BBRi(x, 3)); +case 0x4F: LD_ZP(BBRi(x, 4)); +case 0x5F: LD_ZP(BBRi(x, 5)); +case 0x6F: LD_ZP(BBRi(x, 6)); +case 0x7F: LD_ZP(BBRi(x, 7)); + +/* BBSi */ +case 0x8F: LD_ZP(BBSi(x, 0)); +case 0x9F: LD_ZP(BBSi(x, 1)); +case 0xAF: LD_ZP(BBSi(x, 2)); +case 0xBF: LD_ZP(BBSi(x, 3)); +case 0xCF: LD_ZP(BBSi(x, 4)); +case 0xDF: LD_ZP(BBSi(x, 5)); +case 0xEF: LD_ZP(BBSi(x, 6)); +case 0xFF: LD_ZP(BBSi(x, 7)); + +/* BRA */ +case 0x80: JR(1); break; + +/* BSR */ +case 0x44: + { + PUSH(PC >> 8); + PUSH(PC); + ADDCYC(4); + JR(1); + } + break; + +/* BCC */ +case 0x90: JR(!(P&C_FLAG)); break; + +/* BCS */ +case 0xB0: JR(P&C_FLAG); break; + +/* BEQ */ +case 0xF0: JR(P&Z_FLAG); break; + +/* BNE */ +case 0xD0: JR(!(P&Z_FLAG)); break; + +/* BMI */ +case 0x30: JR(P&N_FLAG); break; + +/* BPL */ +case 0x10: JR(!(P&N_FLAG)); break; + +/* BVC */ +case 0x50: JR(!(P&V_FLAG)); break; + +/* BVS */ +case 0x70: JR(P&V_FLAG); break; + + +// RMB 65SC02 +case 0x07: RMW_ZP_B(RMB(0)); +case 0x17: RMW_ZP_B(RMB(1)); +case 0x27: RMW_ZP_B(RMB(2)); +case 0x37: RMW_ZP_B(RMB(3)); +case 0x47: RMW_ZP_B(RMB(4)); +case 0x57: RMW_ZP_B(RMB(5)); +case 0x67: RMW_ZP_B(RMB(6)); +case 0x77: RMW_ZP_B(RMB(7)); + +// SMB 65SC02 +case 0x87: RMW_ZP_B(SMB(0)); +case 0x97: RMW_ZP_B(SMB(1)); +case 0xa7: RMW_ZP_B(SMB(2)); +case 0xb7: RMW_ZP_B(SMB(3)); +case 0xc7: RMW_ZP_B(SMB(4)); +case 0xd7: RMW_ZP_B(SMB(5)); +case 0xe7: RMW_ZP_B(SMB(6)); +case 0xf7: RMW_ZP_B(SMB(7)); + +// STZ 65C02 +case 0x64: ST_ZP(0); +case 0x74: ST_ZPX(0); +case 0x9C: ST_AB(0); +case 0x9E: ST_ABX(0); + +// TRB 65SC02 +case 0x14: RMW_ZP(TRB); +case 0x1C: RMW_AB(TRB); + +// TSB 65SC02 +case 0x04: RMW_ZP(TSB); +case 0x0C: RMW_AB(TSB); + +// TST +case 0x83: LD_IM_ZP(TST); +case 0xA3: LD_IM_ZPX(TST); +case 0x93: LD_IM_AB(TST); +case 0xB3: LD_IM_ABX(TST); + +case 0x02: IMP(SXY); +case 0x22: IMP(SAX); +case 0x42: IMP(SAY); + + + +case 0x73: // TII + LD_BMT(BMT_TII); + +case 0xC3: // TDD + LD_BMT(BMT_TDD); + +case 0xD3: // TIN + LD_BMT(BMT_TIN); + +case 0xE3: // TIA + LD_BMT(BMT_TIA); + +case 0xF3: // TAI + LD_BMT(BMT_TAI); + +case 0x43: // TMAi + LD_IM_COMPLEX(TMA); + +case 0x53: // TAMi + LD_IM_COMPLEX(TAM); + +case 0x03: // ST0 + LD_IM_COMPLEX(ST0); + +case 0x13: // ST1 + LD_IM_COMPLEX(ST1); + +case 0x23: // ST2 + LD_IM_COMPLEX(ST2); + + +case 0xCB: + if(EmulateWAI) + { + if(next_event > 1) + ADDCYC(next_event - 1); + LASTCYCLE; + break; + } +default: //MDFN_printf("Bad %02x at $%04x\n", lastop, PC); + ADDCYC(1); + LASTCYCLE; + break; + diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/mednafen-gcc.h b/libmednahawk/src/hw_cpu/v810/fpu-new/mednafen-gcc.h new file mode 100644 index 0000000000..477c9039b9 --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/mednafen-gcc.h @@ -0,0 +1,78 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +/*---------------------------------------------------------------------------- +| One of the macros `BIGENDIAN' or `LITTLEENDIAN' must be defined. +*----------------------------------------------------------------------------*/ +#ifdef LSB_FIRST +#define LITTLEENDIAN +#else +#define BIGENDIAN +#endif + +/*---------------------------------------------------------------------------- +| The macro `BITS64' can be defined to indicate that 64-bit integer types are +| supported by the compiler. +*----------------------------------------------------------------------------*/ +#define BITS64 + +/*---------------------------------------------------------------------------- +| Each of the following `typedef's defines the most convenient type that holds +| integers of at least as many bits as specified. For example, `uint8' should +| be the most convenient type that can hold unsigned integers of as many as +| 8 bits. The `flag' type must be able to hold either a 0 or 1. For most +| implementations of C, `flag', `uint8', and `int8' should all be `typedef'ed +| to the same as `int'. +*----------------------------------------------------------------------------*/ +typedef char flag; +typedef uint8_t uint8; +typedef int8_t int8; +typedef uint16_t uint16; +typedef int16_t int16; +typedef uint32_t uint32; +typedef int32_t int32; + +#ifdef BITS64 +typedef uint64_t uint64; +typedef int64_t int64; +#endif + +/*---------------------------------------------------------------------------- +| Each of the following `typedef's defines a type that holds integers +| of _exactly_ the number of bits specified. For instance, for most +| implementation of C, `bits16' and `sbits16' should be `typedef'ed to +| `unsigned short int' and `signed short int' (or `short int'), respectively. +*----------------------------------------------------------------------------*/ +typedef uint8_t bits8; +typedef int8_t sbits8; +typedef uint16_t bits16; +typedef int16_t sbits16; +typedef uint32_t bits32; +typedef int32_t sbits32; +#ifdef BITS64 +typedef uint64_t bits64; +typedef int64_t sbits64; +#endif + +#ifdef BITS64 +/*---------------------------------------------------------------------------- +| The `LIT64' macro takes as its argument a textual integer literal and +| if necessary ``marks'' the literal as having a 64-bit integer type. +| For example, the GNU C Compiler (`gcc') requires that 64-bit literals be +| appended with the letters `LL' standing for `long long', which is `gcc's +| name for the 64-bit integer type. Some compilers may allow `LIT64' to be +| defined as the identity macro: `#define LIT64( a ) a'. +*----------------------------------------------------------------------------*/ +#define LIT64( a ) a##LL +#endif + +/*---------------------------------------------------------------------------- +| The macro `INLINE' can be used before functions that should be inlined. If +| a compiler does not support explicit inlining, this macro should be defined +| to be `static'. +*----------------------------------------------------------------------------*/ +//#define INLINE extern inline +#define INLINE static inline diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/milieu.h b/libmednahawk/src/hw_cpu/v810/fpu-new/milieu.h new file mode 100644 index 0000000000..1628c57ac8 --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/milieu.h @@ -0,0 +1,45 @@ + +/*============================================================================ + +This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic +Package, Release 2b. + +Written by John R. Hauser. This work was made possible in part by the +International Computer Science Institute, located at Suite 600, 1947 Center +Street, Berkeley, California 94704. Funding was partially provided by the +National Science Foundation under grant MIP-9311980. The original version +of this code was written as part of a project to build a fixed-point vector +processor in collaboration with the University of California at Berkeley, +overseen by Profs. Nelson Morgan and John Wawrzynek. More information +is available through the Web page `http://www.cs.berkeley.edu/~jhauser/ +arithmetic/SoftFloat.html'. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has +been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES +RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS +AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES, +COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE +EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE +INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR +OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, so long as +(1) the source code for the derivative work includes prominent notice that +the work is derivative, and (2) the source code includes prominent notice with +these four paragraphs for those parts of this code that are retained. + +=============================================================================*/ + +/*---------------------------------------------------------------------------- +| Include common integer types and flags. +*----------------------------------------------------------------------------*/ +#include "mednafen-gcc.h" + +/*---------------------------------------------------------------------------- +| Symbolic Boolean literals. +*----------------------------------------------------------------------------*/ +enum { + FALSE = 0, + TRUE = 1 +}; + diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-macros b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-macros new file mode 100644 index 0000000000..b4f7448635 --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-macros @@ -0,0 +1,627 @@ + +/*============================================================================ + +This C source fragment is part of the SoftFloat IEC/IEEE Floating-point +Arithmetic Package, Release 2b. + +Written by John R. Hauser. This work was made possible in part by the +International Computer Science Institute, located at Suite 600, 1947 Center +Street, Berkeley, California 94704. Funding was partially provided by the +National Science Foundation under grant MIP-9311980. The original version +of this code was written as part of a project to build a fixed-point vector +processor in collaboration with the University of California at Berkeley, +overseen by Profs. Nelson Morgan and John Wawrzynek. More information +is available through the Web page `http://www.cs.berkeley.edu/~jhauser/ +arithmetic/SoftFloat.html'. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has +been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES +RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS +AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES, +COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE +EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE +INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR +OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, so long as +(1) the source code for the derivative work includes prominent notice that +the work is derivative, and (2) the source code includes prominent notice with +these four paragraphs for those parts of this code that are retained. + +=============================================================================*/ + +/*---------------------------------------------------------------------------- +| Shifts `a' right by the number of bits given in `count'. If any nonzero +| bits are shifted off, they are ``jammed'' into the least significant bit of +| the result by setting the least significant bit to 1. The value of `count' +| can be arbitrarily large; in particular, if `count' is greater than 32, the +| result will be either 0 or 1, depending on whether `a' is zero or nonzero. +| The result is stored in the location pointed to by `zPtr'. +*----------------------------------------------------------------------------*/ + +INLINE void shift32RightJamming( bits32 a, int16 count, bits32 *zPtr ) +{ + bits32 z; + + if ( count == 0 ) { + z = a; + } + else if ( count < 32 ) { + z = ( a>>count ) | ( ( a<<( ( - count ) & 31 ) ) != 0 ); + } + else { + z = ( a != 0 ); + } + *zPtr = z; + +} + +/*---------------------------------------------------------------------------- +| Shifts the 64-bit value formed by concatenating `a0' and `a1' right by the +| number of bits given in `count'. Any bits shifted off are lost. The value +| of `count' can be arbitrarily large; in particular, if `count' is greater +| than 64, the result will be 0. The result is broken into two 32-bit pieces +| which are stored at the locations pointed to by `z0Ptr' and `z1Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + shift64Right( + bits32 a0, bits32 a1, int16 count, bits32 *z0Ptr, bits32 *z1Ptr ) +{ + bits32 z0, z1; + int8 negCount = ( - count ) & 31; + + if ( count == 0 ) { + z1 = a1; + z0 = a0; + } + else if ( count < 32 ) { + z1 = ( a0<>count ); + z0 = a0>>count; + } + else { + z1 = ( count < 64 ) ? ( a0>>( count & 31 ) ) : 0; + z0 = 0; + } + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Shifts the 64-bit value formed by concatenating `a0' and `a1' right by the +| number of bits given in `count'. If any nonzero bits are shifted off, they +| are ``jammed'' into the least significant bit of the result by setting the +| least significant bit to 1. The value of `count' can be arbitrarily large; +| in particular, if `count' is greater than 64, the result will be either 0 +| or 1, depending on whether the concatenation of `a0' and `a1' is zero or +| nonzero. The result is broken into two 32-bit pieces which are stored at +| the locations pointed to by `z0Ptr' and `z1Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + shift64RightJamming( + bits32 a0, bits32 a1, int16 count, bits32 *z0Ptr, bits32 *z1Ptr ) +{ + bits32 z0, z1; + int8 negCount = ( - count ) & 31; + + if ( count == 0 ) { + z1 = a1; + z0 = a0; + } + else if ( count < 32 ) { + z1 = ( a0<>count ) | ( ( a1<>count; + } + else { + if ( count == 32 ) { + z1 = a0 | ( a1 != 0 ); + } + else if ( count < 64 ) { + z1 = ( a0>>( count & 31 ) ) | ( ( ( a0<>count ); + z0 = a0>>count; + } + else { + if ( count == 32 ) { + z2 = a1; + z1 = a0; + } + else { + a2 |= a1; + if ( count < 64 ) { + z2 = a0<>( count & 31 ); + } + else { + z2 = ( count == 64 ) ? a0 : ( a0 != 0 ); + z1 = 0; + } + } + z0 = 0; + } + z2 |= ( a2 != 0 ); + } + *z2Ptr = z2; + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Shifts the 64-bit value formed by concatenating `a0' and `a1' left by the +| number of bits given in `count'. Any bits shifted off are lost. The value +| of `count' must be less than 32. The result is broken into two 32-bit +| pieces which are stored at the locations pointed to by `z0Ptr' and `z1Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + shortShift64Left( + bits32 a0, bits32 a1, int16 count, bits32 *z0Ptr, bits32 *z1Ptr ) +{ + + *z1Ptr = a1<>( ( - count ) & 31 ) ); + +} + +/*---------------------------------------------------------------------------- +| Shifts the 96-bit value formed by concatenating `a0', `a1', and `a2' left +| by the number of bits given in `count'. Any bits shifted off are lost. +| The value of `count' must be less than 32. The result is broken into three +| 32-bit pieces which are stored at the locations pointed to by `z0Ptr', +| `z1Ptr', and `z2Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + shortShift96Left( + bits32 a0, + bits32 a1, + bits32 a2, + int16 count, + bits32 *z0Ptr, + bits32 *z1Ptr, + bits32 *z2Ptr + ) +{ + bits32 z0, z1, z2; + int8 negCount; + + z2 = a2<>negCount; + z0 |= a1>>negCount; + } + *z2Ptr = z2; + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Adds the 64-bit value formed by concatenating `a0' and `a1' to the 64-bit +| value formed by concatenating `b0' and `b1'. Addition is modulo 2^64, so +| any carry out is lost. The result is broken into two 32-bit pieces which +| are stored at the locations pointed to by `z0Ptr' and `z1Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + add64( + bits32 a0, bits32 a1, bits32 b0, bits32 b1, bits32 *z0Ptr, bits32 *z1Ptr ) +{ + bits32 z1; + + z1 = a1 + b1; + *z1Ptr = z1; + *z0Ptr = a0 + b0 + ( z1 < a1 ); + +} + +/*---------------------------------------------------------------------------- +| Adds the 96-bit value formed by concatenating `a0', `a1', and `a2' to the +| 96-bit value formed by concatenating `b0', `b1', and `b2'. Addition is +| modulo 2^96, so any carry out is lost. The result is broken into three +| 32-bit pieces which are stored at the locations pointed to by `z0Ptr', +| `z1Ptr', and `z2Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + add96( + bits32 a0, + bits32 a1, + bits32 a2, + bits32 b0, + bits32 b1, + bits32 b2, + bits32 *z0Ptr, + bits32 *z1Ptr, + bits32 *z2Ptr + ) +{ + bits32 z0, z1, z2; + int8 carry0, carry1; + + z2 = a2 + b2; + carry1 = ( z2 < a2 ); + z1 = a1 + b1; + carry0 = ( z1 < a1 ); + z0 = a0 + b0; + z1 += carry1; + z0 += ( z1 < carry1 ); + z0 += carry0; + *z2Ptr = z2; + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Subtracts the 64-bit value formed by concatenating `b0' and `b1' from the +| 64-bit value formed by concatenating `a0' and `a1'. Subtraction is modulo +| 2^64, so any borrow out (carry out) is lost. The result is broken into two +| 32-bit pieces which are stored at the locations pointed to by `z0Ptr' and +| `z1Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + sub64( + bits32 a0, bits32 a1, bits32 b0, bits32 b1, bits32 *z0Ptr, bits32 *z1Ptr ) +{ + + *z1Ptr = a1 - b1; + *z0Ptr = a0 - b0 - ( a1 < b1 ); + +} + +/*---------------------------------------------------------------------------- +| Subtracts the 96-bit value formed by concatenating `b0', `b1', and `b2' from +| the 96-bit value formed by concatenating `a0', `a1', and `a2'. Subtraction +| is modulo 2^96, so any borrow out (carry out) is lost. The result is broken +| into three 32-bit pieces which are stored at the locations pointed to by +| `z0Ptr', `z1Ptr', and `z2Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + sub96( + bits32 a0, + bits32 a1, + bits32 a2, + bits32 b0, + bits32 b1, + bits32 b2, + bits32 *z0Ptr, + bits32 *z1Ptr, + bits32 *z2Ptr + ) +{ + bits32 z0, z1, z2; + int8 borrow0, borrow1; + + z2 = a2 - b2; + borrow1 = ( a2 < b2 ); + z1 = a1 - b1; + borrow0 = ( a1 < b1 ); + z0 = a0 - b0; + z0 -= ( z1 < borrow1 ); + z1 -= borrow1; + z0 -= borrow0; + *z2Ptr = z2; + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Multiplies `a' by `b' to obtain a 64-bit product. The product is broken +| into two 32-bit pieces which are stored at the locations pointed to by +| `z0Ptr' and `z1Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void mul32To64( bits32 a, bits32 b, bits32 *z0Ptr, bits32 *z1Ptr ) +{ + bits16 aHigh, aLow, bHigh, bLow; + bits32 z0, zMiddleA, zMiddleB, z1; + + aLow = a; + aHigh = a>>16; + bLow = b; + bHigh = b>>16; + z1 = ( (bits32) aLow ) * bLow; + zMiddleA = ( (bits32) aLow ) * bHigh; + zMiddleB = ( (bits32) aHigh ) * bLow; + z0 = ( (bits32) aHigh ) * bHigh; + zMiddleA += zMiddleB; + z0 += ( ( (bits32) ( zMiddleA < zMiddleB ) )<<16 ) + ( zMiddleA>>16 ); + zMiddleA <<= 16; + z1 += zMiddleA; + z0 += ( z1 < zMiddleA ); + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Multiplies the 64-bit value formed by concatenating `a0' and `a1' by `b' +| to obtain a 96-bit product. The product is broken into three 32-bit pieces +| which are stored at the locations pointed to by `z0Ptr', `z1Ptr', and +| `z2Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + mul64By32To96( + bits32 a0, + bits32 a1, + bits32 b, + bits32 *z0Ptr, + bits32 *z1Ptr, + bits32 *z2Ptr + ) +{ + bits32 z0, z1, z2, more1; + + mul32To64( a1, b, &z1, &z2 ); + mul32To64( a0, b, &z0, &more1 ); + add64( z0, more1, 0, z1, &z0, &z1 ); + *z2Ptr = z2; + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Multiplies the 64-bit value formed by concatenating `a0' and `a1' to the +| 64-bit value formed by concatenating `b0' and `b1' to obtain a 128-bit +| product. The product is broken into four 32-bit pieces which are stored at +| the locations pointed to by `z0Ptr', `z1Ptr', `z2Ptr', and `z3Ptr'. +*----------------------------------------------------------------------------*/ + +INLINE void + mul64To128( + bits32 a0, + bits32 a1, + bits32 b0, + bits32 b1, + bits32 *z0Ptr, + bits32 *z1Ptr, + bits32 *z2Ptr, + bits32 *z3Ptr + ) +{ + bits32 z0, z1, z2, z3; + bits32 more1, more2; + + mul32To64( a1, b1, &z2, &z3 ); + mul32To64( a1, b0, &z1, &more2 ); + add64( z1, more2, 0, z2, &z1, &z2 ); + mul32To64( a0, b0, &z0, &more1 ); + add64( z0, more1, 0, z1, &z0, &z1 ); + mul32To64( a0, b1, &more1, &more2 ); + add64( more1, more2, 0, z2, &more1, &z2 ); + add64( z0, z1, 0, more1, &z0, &z1 ); + *z3Ptr = z3; + *z2Ptr = z2; + *z1Ptr = z1; + *z0Ptr = z0; + +} + +/*---------------------------------------------------------------------------- +| Returns an approximation to the 32-bit integer quotient obtained by dividing +| `b' into the 64-bit value formed by concatenating `a0' and `a1'. The +| divisor `b' must be at least 2^31. If q is the exact quotient truncated +| toward zero, the approximation returned lies between q and q + 2 inclusive. +| If the exact quotient q is larger than 32 bits, the maximum positive 32-bit +| unsigned integer is returned. +*----------------------------------------------------------------------------*/ + +static bits32 estimateDiv64To32( bits32 a0, bits32 a1, bits32 b ) +{ + bits32 b0, b1; + bits32 rem0, rem1, term0, term1; + bits32 z; + + if ( b <= a0 ) return 0xFFFFFFFF; + b0 = b>>16; + z = ( b0<<16 <= a0 ) ? 0xFFFF0000 : ( a0 / b0 )<<16; + mul32To64( b, z, &term0, &term1 ); + sub64( a0, a1, term0, term1, &rem0, &rem1 ); + while ( ( (sbits32) rem0 ) < 0 ) { + z -= 0x10000; + b1 = b<<16; + add64( rem0, rem1, b0, b1, &rem0, &rem1 ); + } + rem0 = ( rem0<<16 ) | ( rem1>>16 ); + z |= ( b0<<16 <= rem0 ) ? 0xFFFF : rem0 / b0; + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns an approximation to the square root of the 32-bit significand given +| by `a'. Considered as an integer, `a' must be at least 2^31. If bit 0 of +| `aExp' (the least significant bit) is 1, the integer returned approximates +| 2^31*sqrt(`a'/2^31), where `a' is considered an integer. If bit 0 of `aExp' +| is 0, the integer returned approximates 2^31*sqrt(`a'/2^30). In either +| case, the approximation returned lies strictly within +/-2 of the exact +| value. +*----------------------------------------------------------------------------*/ + +static bits32 estimateSqrt32( int16 aExp, bits32 a ) +{ + static const bits16 sqrtOddAdjustments[] = { + 0x0004, 0x0022, 0x005D, 0x00B1, 0x011D, 0x019F, 0x0236, 0x02E0, + 0x039C, 0x0468, 0x0545, 0x0631, 0x072B, 0x0832, 0x0946, 0x0A67 + }; + static const bits16 sqrtEvenAdjustments[] = { + 0x0A2D, 0x08AF, 0x075A, 0x0629, 0x051A, 0x0429, 0x0356, 0x029E, + 0x0200, 0x0179, 0x0109, 0x00AF, 0x0068, 0x0034, 0x0012, 0x0002 + }; + int8 index; + bits32 z; + + index = ( a>>27 ) & 15; + if ( aExp & 1 ) { + z = 0x4000 + ( a>>17 ) - sqrtOddAdjustments[ index ]; + z = ( ( a / z )<<14 ) + ( z<<15 ); + a >>= 1; + } + else { + z = 0x8000 + ( a>>17 ) - sqrtEvenAdjustments[ index ]; + z = a / z + z; + z = ( 0x20000 <= z ) ? 0xFFFF8000 : ( z<<15 ); + if ( z <= a ) return (bits32) ( ( (sbits32) a )>>1 ); + } + return ( ( estimateDiv64To32( a, 0, z ) )>>1 ) + ( z>>1 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the number of leading 0 bits before the most-significant 1 bit of +| `a'. If `a' is zero, 32 is returned. +*----------------------------------------------------------------------------*/ + +static int8 countLeadingZeros32( bits32 a ) +{ + static const int8 countLeadingZerosHigh[] = { + 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + int8 shiftCount; + + shiftCount = 0; + if ( a < 0x10000 ) { + shiftCount += 16; + a <<= 16; + } + if ( a < 0x1000000 ) { + shiftCount += 8; + a <<= 8; + } + shiftCount += countLeadingZerosHigh[ a>>24 ]; + return shiftCount; + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is +| equal to the 64-bit value formed by concatenating `b0' and `b1'. Otherwise, +| returns 0. +*----------------------------------------------------------------------------*/ + +INLINE flag eq64( bits32 a0, bits32 a1, bits32 b0, bits32 b1 ) +{ + + return ( a0 == b0 ) && ( a1 == b1 ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is less +| than or equal to the 64-bit value formed by concatenating `b0' and `b1'. +| Otherwise, returns 0. +*----------------------------------------------------------------------------*/ + +INLINE flag le64( bits32 a0, bits32 a1, bits32 b0, bits32 b1 ) +{ + + return ( a0 < b0 ) || ( ( a0 == b0 ) && ( a1 <= b1 ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is less +| than the 64-bit value formed by concatenating `b0' and `b1'. Otherwise, +| returns 0. +*----------------------------------------------------------------------------*/ + +INLINE flag lt64( bits32 a0, bits32 a1, bits32 b0, bits32 b1 ) +{ + + return ( a0 < b0 ) || ( ( a0 == b0 ) && ( a1 < b1 ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the 64-bit value formed by concatenating `a0' and `a1' is not +| equal to the 64-bit value formed by concatenating `b0' and `b1'. Otherwise, +| returns 0. +*----------------------------------------------------------------------------*/ + +INLINE flag ne64( bits32 a0, bits32 a1, bits32 b0, bits32 b1 ) +{ + + return ( a0 != b0 ) || ( a1 != b1 ); + +} + diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-specialize b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-specialize new file mode 100644 index 0000000000..03ea8d27fc --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat-specialize @@ -0,0 +1,242 @@ + +/*============================================================================ + +This C source fragment is part of the SoftFloat IEC/IEEE Floating-point +Arithmetic Package, Release 2b. + +Written by John R. Hauser. This work was made possible in part by the +International Computer Science Institute, located at Suite 600, 1947 Center +Street, Berkeley, California 94704. Funding was partially provided by the +National Science Foundation under grant MIP-9311980. The original version +of this code was written as part of a project to build a fixed-point vector +processor in collaboration with the University of California at Berkeley, +overseen by Profs. Nelson Morgan and John Wawrzynek. More information +is available through the Web page `http://www.cs.berkeley.edu/~jhauser/ +arithmetic/SoftFloat.html'. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has +been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES +RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS +AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES, +COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE +EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE +INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR +OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, so long as +(1) the source code for the derivative work includes prominent notice that +the work is derivative, and (2) the source code includes prominent notice with +these four paragraphs for those parts of this code that are retained. + +=============================================================================*/ + +/*---------------------------------------------------------------------------- +| Underflow tininess-detection mode, statically initialized to default value. +| (The declaration in `softfloat.h' must match the `int8' type here.) +*----------------------------------------------------------------------------*/ +int8 float_detect_tininess = float_tininess_after_rounding; + +/*---------------------------------------------------------------------------- +| Raises the exceptions specified by `flags'. Floating-point traps can be +| defined here if desired. It is currently not possible for such a trap +| to substitute a result value. If traps are not implemented, this routine +| should be simply `float_exception_flags |= flags;'. +*----------------------------------------------------------------------------*/ + +void float_raise( int8 flags ) +{ + + float_exception_flags |= flags; + +} + +/*---------------------------------------------------------------------------- +| Internal canonical NaN format. +*----------------------------------------------------------------------------*/ +typedef struct { + flag sign; + bits32 high, low; +} commonNaNT; + +/*---------------------------------------------------------------------------- +| The pattern for a default generated single-precision NaN. +*----------------------------------------------------------------------------*/ +enum { + float32_default_nan = 0xFFFFFFFF +}; + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is a NaN; +| otherwise returns 0. +*----------------------------------------------------------------------------*/ + +flag float32_is_nan( float32 a ) +{ + + return ( 0xFF000000 < (bits32) ( a<<1 ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is a signaling +| NaN; otherwise returns 0. +*----------------------------------------------------------------------------*/ + +flag float32_is_signaling_nan( float32 a ) +{ + + return ( ( ( a>>22 ) & 0x1FF ) == 0x1FE ) && ( a & 0x003FFFFF ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the single-precision floating-point NaN +| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid +| exception is raised. +*----------------------------------------------------------------------------*/ + +static commonNaNT float32ToCommonNaN( float32 a ) +{ + commonNaNT z; + + if ( float32_is_signaling_nan( a ) ) float_raise( float_flag_invalid ); + z.sign = a>>31; + z.low = 0; + z.high = a<<9; + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the canonical NaN `a' to the single- +| precision floating-point format. +*----------------------------------------------------------------------------*/ + +static float32 commonNaNToFloat32( commonNaNT a ) +{ + + return ( ( (bits32) a.sign )<<31 ) | 0x7FC00000 | ( a.high>>9 ); + +} + +/*---------------------------------------------------------------------------- +| Takes two single-precision floating-point values `a' and `b', one of which +| is a NaN, and returns the appropriate NaN result. If either `a' or `b' is a +| signaling NaN, the invalid exception is raised. +*----------------------------------------------------------------------------*/ + +static float32 propagateFloat32NaN( float32 a, float32 b ) +{ + flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN; + + aIsNaN = float32_is_nan( a ); + aIsSignalingNaN = float32_is_signaling_nan( a ); + bIsNaN = float32_is_nan( b ); + bIsSignalingNaN = float32_is_signaling_nan( b ); + a |= 0x00400000; + b |= 0x00400000; + if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid ); + if ( aIsNaN ) { + return ( aIsSignalingNaN & bIsNaN ) ? b : a; + } + else { + return b; + } + +} + +/*---------------------------------------------------------------------------- +| The pattern for a default generated double-precision NaN. The `high' and +| `low' values hold the most- and least-significant bits, respectively. +*----------------------------------------------------------------------------*/ +enum { + float64_default_nan_high = 0xFFFFFFFF, + float64_default_nan_low = 0xFFFFFFFF +}; + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is a NaN; +| otherwise returns 0. +*----------------------------------------------------------------------------*/ + +flag float64_is_nan( float64 a ) +{ + + return + ( 0xFFE00000 <= (bits32) ( a.high<<1 ) ) + && ( a.low || ( a.high & 0x000FFFFF ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is a signaling +| NaN; otherwise returns 0. +*----------------------------------------------------------------------------*/ + +flag float64_is_signaling_nan( float64 a ) +{ + + return + ( ( ( a.high>>19 ) & 0xFFF ) == 0xFFE ) + && ( a.low || ( a.high & 0x0007FFFF ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the double-precision floating-point NaN +| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid +| exception is raised. +*----------------------------------------------------------------------------*/ + +static commonNaNT float64ToCommonNaN( float64 a ) +{ + commonNaNT z; + + if ( float64_is_signaling_nan( a ) ) float_raise( float_flag_invalid ); + z.sign = a.high>>31; + shortShift64Left( a.high, a.low, 12, &z.high, &z.low ); + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the canonical NaN `a' to the double- +| precision floating-point format. +*----------------------------------------------------------------------------*/ + +static float64 commonNaNToFloat64( commonNaNT a ) +{ + float64 z; + + shift64Right( a.high, a.low, 12, &z.high, &z.low ); + z.high |= ( ( (bits32) a.sign )<<31 ) | 0x7FF80000; + return z; + +} + +/*---------------------------------------------------------------------------- +| Takes two double-precision floating-point values `a' and `b', one of which +| is a NaN, and returns the appropriate NaN result. If either `a' or `b' is a +| signaling NaN, the invalid exception is raised. +*----------------------------------------------------------------------------*/ + +static float64 propagateFloat64NaN( float64 a, float64 b ) +{ + flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN; + + aIsNaN = float64_is_nan( a ); + aIsSignalingNaN = float64_is_signaling_nan( a ); + bIsNaN = float64_is_nan( b ); + bIsSignalingNaN = float64_is_signaling_nan( b ); + a.high |= 0x00080000; + b.high |= 0x00080000; + if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid ); + if ( aIsNaN ) { + return ( aIsSignalingNaN & bIsNaN ) ? b : a; + } + else { + return b; + } + +} + diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.c b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.c new file mode 100644 index 0000000000..ce4a72f112 --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.c @@ -0,0 +1,2284 @@ + +/*============================================================================ + +This C source file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic +Package, Release 2b. + +Written by John R. Hauser. This work was made possible in part by the +International Computer Science Institute, located at Suite 600, 1947 Center +Street, Berkeley, California 94704. Funding was partially provided by the +National Science Foundation under grant MIP-9311980. The original version +of this code was written as part of a project to build a fixed-point vector +processor in collaboration with the University of California at Berkeley, +overseen by Profs. Nelson Morgan and John Wawrzynek. More information +is available through the Web page `http://www.cs.berkeley.edu/~jhauser/ +arithmetic/SoftFloat.html'. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has +been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES +RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS +AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES, +COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE +EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE +INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR +OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, so long as +(1) the source code for the derivative work includes prominent notice that +the work is derivative, and (2) the source code includes prominent notice with +these four paragraphs for those parts of this code that are retained. + +=============================================================================*/ + +/* + WARNING: Modified for usage in Mednafen's PC-FX V810 emulation, specifically, to "wrap" the exponent(by subtracting 192 + from it) in the case of an overflow condition(only modified in the 32-bit float code, the 64-bit float code is unused in Mednafen), + rather than returning an infinity. + + TODO: Make this configurable, and add it to float64 too(subtract 1536?) +*/ + + +#include "milieu.h" +#include "softfloat.h" + +/*---------------------------------------------------------------------------- +| Floating-point rounding mode and exception flags. +*----------------------------------------------------------------------------*/ +int8 float_rounding_mode = float_round_nearest_even; +int8 float_exception_flags = 0; + +/*---------------------------------------------------------------------------- +| Primitive arithmetic functions, including multi-word arithmetic, and +| division and square root approximations. (Can be specialized to target if +| desired.) +*----------------------------------------------------------------------------*/ +#include "softfloat-macros" + +/*---------------------------------------------------------------------------- +| Functions and definitions to determine: (1) whether tininess for underflow +| is detected before or after rounding by default, (2) what (if anything) +| happens when exceptions are raised, (3) how signaling NaNs are distinguished +| from quiet NaNs, (4) the default generated quiet NaNs, and (4) how NaNs +| are propagated from function inputs to output. These details are target- +| specific. +*----------------------------------------------------------------------------*/ +#include "softfloat-specialize" + +/*---------------------------------------------------------------------------- +| Returns the fraction bits of the single-precision floating-point value `a'. +*----------------------------------------------------------------------------*/ + +INLINE bits32 extractFloat32Frac( float32 a ) +{ + + return a & 0x007FFFFF; + +} + +/*---------------------------------------------------------------------------- +| Returns the exponent bits of the single-precision floating-point value `a'. +*----------------------------------------------------------------------------*/ + +INLINE int16 extractFloat32Exp( float32 a ) +{ + + return ( a>>23 ) & 0xFF; + +} + +/*---------------------------------------------------------------------------- +| Returns the sign bit of the single-precision floating-point value `a'. +*----------------------------------------------------------------------------*/ + +INLINE flag extractFloat32Sign( float32 a ) +{ + + return a>>31; + +} + +/*---------------------------------------------------------------------------- +| Normalizes the subnormal single-precision floating-point value represented +| by the denormalized significand `aSig'. The normalized exponent and +| significand are stored at the locations pointed to by `zExpPtr' and +| `zSigPtr', respectively. +*----------------------------------------------------------------------------*/ + +static void + normalizeFloat32Subnormal( bits32 aSig, int16 *zExpPtr, bits32 *zSigPtr ) +{ + int8 shiftCount; + + shiftCount = countLeadingZeros32( aSig ) - 8; + *zSigPtr = aSig<>7; + zSig &= ~ ( ( ( roundBits ^ 0x40 ) == 0 ) & roundNearestEven ); + if ( zSig == 0 ) zExp = 0; + return packFloat32( zSign, zExp, zSig ); + +} + +/*---------------------------------------------------------------------------- +| Takes an abstract floating-point value having sign `zSign', exponent `zExp', +| and significand `zSig', and returns the proper single-precision floating- +| point value corresponding to the abstract input. This routine is just like +| `roundAndPackFloat32' except that `zSig' does not have to be normalized. +| Bit 31 of `zSig' must be zero, and `zExp' must be 1 less than the ``true'' +| floating-point exponent. +*----------------------------------------------------------------------------*/ + +static float32 + normalizeRoundAndPackFloat32( flag zSign, int16 zExp, bits32 zSig ) +{ + int8 shiftCount; + + shiftCount = countLeadingZeros32( zSig ) - 1; + return roundAndPackFloat32( zSign, zExp - shiftCount, zSig<>20 ) & 0x7FF; + +} + +/*---------------------------------------------------------------------------- +| Returns the sign bit of the double-precision floating-point value `a'. +*----------------------------------------------------------------------------*/ + +INLINE flag extractFloat64Sign( float64 a ) +{ + + return a.high>>31; + +} + +/*---------------------------------------------------------------------------- +| Normalizes the subnormal double-precision floating-point value represented +| by the denormalized significand formed by the concatenation of `aSig0' and +| `aSig1'. The normalized exponent is stored at the location pointed to by +| `zExpPtr'. The most significant 21 bits of the normalized significand are +| stored at the location pointed to by `zSig0Ptr', and the least significant +| 32 bits of the normalized significand are stored at the location pointed to +| by `zSig1Ptr'. +*----------------------------------------------------------------------------*/ + +static void + normalizeFloat64Subnormal( + bits32 aSig0, + bits32 aSig1, + int16 *zExpPtr, + bits32 *zSig0Ptr, + bits32 *zSig1Ptr + ) +{ + int8 shiftCount; + + if ( aSig0 == 0 ) { + shiftCount = countLeadingZeros32( aSig1 ) - 11; + if ( shiftCount < 0 ) { + *zSig0Ptr = aSig1>>( - shiftCount ); + *zSig1Ptr = aSig1<<( shiftCount & 31 ); + } + else { + *zSig0Ptr = aSig1<>( - shiftCount ); + } + if ( aSigExtra ) float_exception_flags |= float_flag_inexact; + roundingMode = float_rounding_mode; + if ( roundingMode == float_round_nearest_even ) { + if ( (sbits32) aSigExtra < 0 ) { + ++z; + if ( (bits32) ( aSigExtra<<1 ) == 0 ) z &= ~1; + } + if ( aSign ) z = - z; + } + else { + aSigExtra = ( aSigExtra != 0 ); + if ( aSign ) { + z += ( roundingMode == float_round_down ) & aSigExtra; + z = - z; + } + else { + z += ( roundingMode == float_round_up ) & aSigExtra; + } + } + } + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the single-precision floating-point value +| `a' to the 32-bit two's complement integer format. The conversion is +| performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic, except that the conversion is always rounded toward zero. +| If `a' is a NaN, the largest positive integer is returned. Otherwise, if +| the conversion overflows, the largest integer with the same sign as `a' is +| returned. +*----------------------------------------------------------------------------*/ + +int32 float32_to_int32_round_to_zero( float32 a ) +{ + flag aSign; + int16 aExp, shiftCount; + bits32 aSig; + int32 z; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + aSign = extractFloat32Sign( a ); + shiftCount = aExp - 0x9E; + if ( 0 <= shiftCount ) { + if ( a != 0xCF000000 ) { + float_raise( float_flag_invalid ); + if ( ! aSign || ( ( aExp == 0xFF ) && aSig ) ) return 0x7FFFFFFF; + } + return (sbits32) 0x80000000; + } + else if ( aExp <= 0x7E ) { + if ( aExp | aSig ) float_exception_flags |= float_flag_inexact; + return 0; + } + aSig = ( aSig | 0x00800000 )<<8; + z = aSig>>( - shiftCount ); + if ( (bits32) ( aSig<<( shiftCount & 31 ) ) ) { + float_exception_flags |= float_flag_inexact; + } + if ( aSign ) z = - z; + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the single-precision floating-point value +| `a' to the double-precision floating-point format. The conversion is +| performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float32_to_float64( float32 a ) +{ + flag aSign; + int16 aExp; + bits32 aSig, zSig0, zSig1; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + aSign = extractFloat32Sign( a ); + if ( aExp == 0xFF ) { + if ( aSig ) return commonNaNToFloat64( float32ToCommonNaN( a ) ); + return packFloat64( aSign, 0x7FF, 0, 0 ); + } + if ( aExp == 0 ) { + if ( aSig == 0 ) return packFloat64( aSign, 0, 0, 0 ); + normalizeFloat32Subnormal( aSig, &aExp, &aSig ); + --aExp; + } + shift64Right( aSig, 0, 3, &zSig0, &zSig1 ); + return packFloat64( aSign, aExp + 0x380, zSig0, zSig1 ); + +} + +/*---------------------------------------------------------------------------- +| Rounds the single-precision floating-point value `a' to an integer, +| and returns the result as a single-precision floating-point value. The +| operation is performed according to the IEC/IEEE Standard for Binary +| Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_round_to_int( float32 a ) +{ + flag aSign; + int16 aExp; + bits32 lastBitMask, roundBitsMask; + int8 roundingMode; + float32 z; + + aExp = extractFloat32Exp( a ); + if ( 0x96 <= aExp ) { + if ( ( aExp == 0xFF ) && extractFloat32Frac( a ) ) { + return propagateFloat32NaN( a, a ); + } + return a; + } + if ( aExp <= 0x7E ) { + if ( (bits32) ( a<<1 ) == 0 ) return a; + float_exception_flags |= float_flag_inexact; + aSign = extractFloat32Sign( a ); + switch ( float_rounding_mode ) { + case float_round_nearest_even: + if ( ( aExp == 0x7E ) && extractFloat32Frac( a ) ) { + return packFloat32( aSign, 0x7F, 0 ); + } + break; + case float_round_down: + return aSign ? 0xBF800000 : 0; + case float_round_up: + return aSign ? 0x80000000 : 0x3F800000; + } + return packFloat32( aSign, 0, 0 ); + } + lastBitMask = 1; + lastBitMask <<= 0x96 - aExp; + roundBitsMask = lastBitMask - 1; + z = a; + roundingMode = float_rounding_mode; + if ( roundingMode == float_round_nearest_even ) { + z += lastBitMask>>1; + if ( ( z & roundBitsMask ) == 0 ) z &= ~ lastBitMask; + } + else if ( roundingMode != float_round_to_zero ) { + if ( extractFloat32Sign( z ) ^ ( roundingMode == float_round_up ) ) { + z += roundBitsMask; + } + } + z &= ~ roundBitsMask; + if ( z != a ) float_exception_flags |= float_flag_inexact; + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of adding the absolute values of the single-precision +| floating-point values `a' and `b'. If `zSign' is 1, the sum is negated +| before being returned. `zSign' is ignored if the result is a NaN. +| The addition is performed according to the IEC/IEEE Standard for Binary +| Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +static float32 addFloat32Sigs( float32 a, float32 b, flag zSign ) +{ + int16 aExp, bExp, zExp; + bits32 aSig, bSig, zSig; + int16 expDiff; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + bSig = extractFloat32Frac( b ); + bExp = extractFloat32Exp( b ); + expDiff = aExp - bExp; + aSig <<= 6; + bSig <<= 6; + if ( 0 < expDiff ) { + if ( aExp == 0xFF ) { + if ( aSig ) return propagateFloat32NaN( a, b ); + return a; + } + if ( bExp == 0 ) { + --expDiff; + } + else { + bSig |= 0x20000000; + } + shift32RightJamming( bSig, expDiff, &bSig ); + zExp = aExp; + } + else if ( expDiff < 0 ) { + if ( bExp == 0xFF ) { + if ( bSig ) return propagateFloat32NaN( a, b ); + return packFloat32( zSign, 0xFF, 0 ); + } + if ( aExp == 0 ) { + ++expDiff; + } + else { + aSig |= 0x20000000; + } + shift32RightJamming( aSig, - expDiff, &aSig ); + zExp = bExp; + } + else { + if ( aExp == 0xFF ) { + if ( aSig | bSig ) return propagateFloat32NaN( a, b ); + return a; + } + if ( aExp == 0 ) return packFloat32( zSign, 0, ( aSig + bSig )>>6 ); + zSig = 0x40000000 + aSig + bSig; + zExp = aExp; + goto roundAndPack; + } + aSig |= 0x20000000; + zSig = ( aSig + bSig )<<1; + --zExp; + if ( (sbits32) zSig < 0 ) { + zSig = aSig + bSig; + ++zExp; + } + roundAndPack: + return roundAndPackFloat32( zSign, zExp, zSig ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of subtracting the absolute values of the single- +| precision floating-point values `a' and `b'. If `zSign' is 1, the +| difference is negated before being returned. `zSign' is ignored if the +| result is a NaN. The subtraction is performed according to the IEC/IEEE +| Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +static float32 subFloat32Sigs( float32 a, float32 b, flag zSign ) +{ + int16 aExp, bExp, zExp; + bits32 aSig, bSig, zSig; + int16 expDiff; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + bSig = extractFloat32Frac( b ); + bExp = extractFloat32Exp( b ); + expDiff = aExp - bExp; + aSig <<= 7; + bSig <<= 7; + if ( 0 < expDiff ) goto aExpBigger; + if ( expDiff < 0 ) goto bExpBigger; + if ( aExp == 0xFF ) { + if ( aSig | bSig ) return propagateFloat32NaN( a, b ); + float_raise( float_flag_invalid ); + return float32_default_nan; + } + if ( aExp == 0 ) { + aExp = 1; + bExp = 1; + } + if ( bSig < aSig ) goto aBigger; + if ( aSig < bSig ) goto bBigger; + return packFloat32( float_rounding_mode == float_round_down, 0, 0 ); + bExpBigger: + if ( bExp == 0xFF ) { + if ( bSig ) return propagateFloat32NaN( a, b ); + return packFloat32( zSign ^ 1, 0xFF, 0 ); + } + if ( aExp == 0 ) { + ++expDiff; + } + else { + aSig |= 0x40000000; + } + shift32RightJamming( aSig, - expDiff, &aSig ); + bSig |= 0x40000000; + bBigger: + zSig = bSig - aSig; + zExp = bExp; + zSign ^= 1; + goto normalizeRoundAndPack; + aExpBigger: + if ( aExp == 0xFF ) { + if ( aSig ) return propagateFloat32NaN( a, b ); + return a; + } + if ( bExp == 0 ) { + --expDiff; + } + else { + bSig |= 0x40000000; + } + shift32RightJamming( bSig, expDiff, &bSig ); + aSig |= 0x40000000; + aBigger: + zSig = aSig - bSig; + zExp = aExp; + normalizeRoundAndPack: + --zExp; + return normalizeRoundAndPackFloat32( zSign, zExp, zSig ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of adding the single-precision floating-point values `a' +| and `b'. The operation is performed according to the IEC/IEEE Standard for +| Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_add( float32 a, float32 b ) +{ + flag aSign, bSign; + + aSign = extractFloat32Sign( a ); + bSign = extractFloat32Sign( b ); + if ( aSign == bSign ) { + return addFloat32Sigs( a, b, aSign ); + } + else { + return subFloat32Sigs( a, b, aSign ); + } + +} + +/*---------------------------------------------------------------------------- +| Returns the result of subtracting the single-precision floating-point values +| `a' and `b'. The operation is performed according to the IEC/IEEE Standard +| for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_sub( float32 a, float32 b ) +{ + flag aSign, bSign; + + aSign = extractFloat32Sign( a ); + bSign = extractFloat32Sign( b ); + if ( aSign == bSign ) { + return subFloat32Sigs( a, b, aSign ); + } + else { + return addFloat32Sigs( a, b, aSign ); + } + +} + +/*---------------------------------------------------------------------------- +| Returns the result of multiplying the single-precision floating-point values +| `a' and `b'. The operation is performed according to the IEC/IEEE Standard +| for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_mul( float32 a, float32 b ) +{ + flag aSign, bSign, zSign; + int16 aExp, bExp, zExp; + bits32 aSig, bSig, zSig0, zSig1; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + aSign = extractFloat32Sign( a ); + bSig = extractFloat32Frac( b ); + bExp = extractFloat32Exp( b ); + bSign = extractFloat32Sign( b ); + zSign = aSign ^ bSign; + if ( aExp == 0xFF ) { + if ( aSig || ( ( bExp == 0xFF ) && bSig ) ) { + return propagateFloat32NaN( a, b ); + } + if ( ( bExp | bSig ) == 0 ) { + float_raise( float_flag_invalid ); + return float32_default_nan; + } + return packFloat32( zSign, 0xFF, 0 ); + } + if ( bExp == 0xFF ) { + if ( bSig ) return propagateFloat32NaN( a, b ); + if ( ( aExp | aSig ) == 0 ) { + float_raise( float_flag_invalid ); + return float32_default_nan; + } + return packFloat32( zSign, 0xFF, 0 ); + } + if ( aExp == 0 ) { + if ( aSig == 0 ) return packFloat32( zSign, 0, 0 ); + normalizeFloat32Subnormal( aSig, &aExp, &aSig ); + } + if ( bExp == 0 ) { + if ( bSig == 0 ) return packFloat32( zSign, 0, 0 ); + normalizeFloat32Subnormal( bSig, &bExp, &bSig ); + } + zExp = aExp + bExp - 0x7F; + aSig = ( aSig | 0x00800000 )<<7; + bSig = ( bSig | 0x00800000 )<<8; + mul32To64( aSig, bSig, &zSig0, &zSig1 ); + zSig0 |= ( zSig1 != 0 ); + if ( 0 <= (sbits32) ( zSig0<<1 ) ) { + zSig0 <<= 1; + --zExp; + } + return roundAndPackFloat32( zSign, zExp, zSig0 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of dividing the single-precision floating-point value `a' +| by the corresponding value `b'. The operation is performed according to the +| IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_div( float32 a, float32 b ) +{ + flag aSign, bSign, zSign; + int16 aExp, bExp, zExp; + bits32 aSig, bSig, zSig, rem0, rem1, term0, term1; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + aSign = extractFloat32Sign( a ); + bSig = extractFloat32Frac( b ); + bExp = extractFloat32Exp( b ); + bSign = extractFloat32Sign( b ); + zSign = aSign ^ bSign; + if ( aExp == 0xFF ) { + if ( aSig ) return propagateFloat32NaN( a, b ); + if ( bExp == 0xFF ) { + if ( bSig ) return propagateFloat32NaN( a, b ); + float_raise( float_flag_invalid ); + return float32_default_nan; + } + return packFloat32( zSign, 0xFF, 0 ); + } + if ( bExp == 0xFF ) { + if ( bSig ) return propagateFloat32NaN( a, b ); + return packFloat32( zSign, 0, 0 ); + } + if ( bExp == 0 ) { + if ( bSig == 0 ) { + if ( ( aExp | aSig ) == 0 ) { + float_raise( float_flag_invalid ); + return float32_default_nan; + } + float_raise( float_flag_divbyzero ); + return packFloat32( zSign, 0xFF, 0 ); + } + normalizeFloat32Subnormal( bSig, &bExp, &bSig ); + } + if ( aExp == 0 ) { + if ( aSig == 0 ) return packFloat32( zSign, 0, 0 ); + normalizeFloat32Subnormal( aSig, &aExp, &aSig ); + } + zExp = aExp - bExp + 0x7D; + aSig = ( aSig | 0x00800000 )<<7; + bSig = ( bSig | 0x00800000 )<<8; + if ( bSig <= ( aSig + aSig ) ) { + aSig >>= 1; + ++zExp; + } + zSig = estimateDiv64To32( aSig, 0, bSig ); + if ( ( zSig & 0x3F ) <= 2 ) { + mul32To64( bSig, zSig, &term0, &term1 ); + sub64( aSig, 0, term0, term1, &rem0, &rem1 ); + while ( (sbits32) rem0 < 0 ) { + --zSig; + add64( rem0, rem1, 0, bSig, &rem0, &rem1 ); + } + zSig |= ( rem1 != 0 ); + } + return roundAndPackFloat32( zSign, zExp, zSig ); + +} + +/*---------------------------------------------------------------------------- +| Returns the remainder of the single-precision floating-point value `a' +| with respect to the corresponding value `b'. The operation is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_rem( float32 a, float32 b ) +{ + flag aSign, bSign, zSign; + int16 aExp, bExp, expDiff; + bits32 aSig, bSig, q, allZero, alternateASig; + sbits32 sigMean; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + aSign = extractFloat32Sign( a ); + bSig = extractFloat32Frac( b ); + bExp = extractFloat32Exp( b ); + bSign = extractFloat32Sign( b ); + if ( aExp == 0xFF ) { + if ( aSig || ( ( bExp == 0xFF ) && bSig ) ) { + return propagateFloat32NaN( a, b ); + } + float_raise( float_flag_invalid ); + return float32_default_nan; + } + if ( bExp == 0xFF ) { + if ( bSig ) return propagateFloat32NaN( a, b ); + return a; + } + if ( bExp == 0 ) { + if ( bSig == 0 ) { + float_raise( float_flag_invalid ); + return float32_default_nan; + } + normalizeFloat32Subnormal( bSig, &bExp, &bSig ); + } + if ( aExp == 0 ) { + if ( aSig == 0 ) return a; + normalizeFloat32Subnormal( aSig, &aExp, &aSig ); + } + expDiff = aExp - bExp; + aSig = ( aSig | 0x00800000 )<<8; + bSig = ( bSig | 0x00800000 )<<8; + if ( expDiff < 0 ) { + if ( expDiff < -1 ) return a; + aSig >>= 1; + } + q = ( bSig <= aSig ); + if ( q ) aSig -= bSig; + expDiff -= 32; + while ( 0 < expDiff ) { + q = estimateDiv64To32( aSig, 0, bSig ); + q = ( 2 < q ) ? q - 2 : 0; + aSig = - ( ( bSig>>2 ) * q ); + expDiff -= 30; + } + expDiff += 32; + if ( 0 < expDiff ) { + q = estimateDiv64To32( aSig, 0, bSig ); + q = ( 2 < q ) ? q - 2 : 0; + q >>= 32 - expDiff; + bSig >>= 2; + aSig = ( ( aSig>>1 )<<( expDiff - 1 ) ) - bSig * q; + } + else { + aSig >>= 2; + bSig >>= 2; + } + do { + alternateASig = aSig; + ++q; + aSig -= bSig; + } while ( 0 <= (sbits32) aSig ); + sigMean = aSig + alternateASig; + if ( ( sigMean < 0 ) || ( ( sigMean == 0 ) && ( q & 1 ) ) ) { + aSig = alternateASig; + } + zSign = ( (sbits32) aSig < 0 ); + if ( zSign ) aSig = - aSig; + return normalizeRoundAndPackFloat32( aSign ^ zSign, bExp, aSig ); + +} + +/*---------------------------------------------------------------------------- +| Returns the square root of the single-precision floating-point value `a'. +| The operation is performed according to the IEC/IEEE Standard for Binary +| Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float32_sqrt( float32 a ) +{ + flag aSign; + int16 aExp, zExp; + bits32 aSig, zSig, rem0, rem1, term0, term1; + + aSig = extractFloat32Frac( a ); + aExp = extractFloat32Exp( a ); + aSign = extractFloat32Sign( a ); + if ( aExp == 0xFF ) { + if ( aSig ) return propagateFloat32NaN( a, 0 ); + if ( ! aSign ) return a; + float_raise( float_flag_invalid ); + return float32_default_nan; + } + if ( aSign ) { + if ( ( aExp | aSig ) == 0 ) return a; + float_raise( float_flag_invalid ); + return float32_default_nan; + } + if ( aExp == 0 ) { + if ( aSig == 0 ) return 0; + normalizeFloat32Subnormal( aSig, &aExp, &aSig ); + } + zExp = ( ( aExp - 0x7F )>>1 ) + 0x7E; + aSig = ( aSig | 0x00800000 )<<8; + zSig = estimateSqrt32( aExp, aSig ) + 2; + if ( ( zSig & 0x7F ) <= 5 ) { + if ( zSig < 2 ) { + zSig = 0x7FFFFFFF; + goto roundAndPack; + } + else { + aSig >>= aExp & 1; + mul32To64( zSig, zSig, &term0, &term1 ); + sub64( aSig, 0, term0, term1, &rem0, &rem1 ); + while ( (sbits32) rem0 < 0 ) { + --zSig; + shortShift64Left( 0, zSig, 1, &term0, &term1 ); + term1 |= 1; + add64( rem0, rem1, term0, term1, &rem0, &rem1 ); + } + zSig |= ( ( rem0 | rem1 ) != 0 ); + } + } + shift32RightJamming( zSig, 1, &zSig ); + roundAndPack: + return roundAndPackFloat32( 0, zExp, zSig ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is equal to +| the corresponding value `b', and 0 otherwise. The comparison is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float32_eq( float32 a, float32 b ) +{ + + if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) + || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) + ) { + if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) { + float_raise( float_flag_invalid ); + } + return 0; + } + return ( a == b ) || ( (bits32) ( ( a | b )<<1 ) == 0 ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is less than +| or equal to the corresponding value `b', and 0 otherwise. The comparison +| is performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float32_le( float32 a, float32 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) + || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) + ) { + float_raise( float_flag_invalid ); + return 0; + } + aSign = extractFloat32Sign( a ); + bSign = extractFloat32Sign( b ); + if ( aSign != bSign ) return aSign || ( (bits32) ( ( a | b )<<1 ) == 0 ); + return ( a == b ) || ( aSign ^ ( a < b ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is less than +| the corresponding value `b', and 0 otherwise. The comparison is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float32_lt( float32 a, float32 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) + || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) + ) { + float_raise( float_flag_invalid ); + return 0; + } + aSign = extractFloat32Sign( a ); + bSign = extractFloat32Sign( b ); + if ( aSign != bSign ) return aSign && ( (bits32) ( ( a | b )<<1 ) != 0 ); + return ( a != b ) && ( aSign ^ ( a < b ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is equal to +| the corresponding value `b', and 0 otherwise. The invalid exception is +| raised if either operand is a NaN. Otherwise, the comparison is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float32_eq_signaling( float32 a, float32 b ) +{ + + if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) + || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) + ) { + float_raise( float_flag_invalid ); + return 0; + } + return ( a == b ) || ( (bits32) ( ( a | b )<<1 ) == 0 ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is less than or +| equal to the corresponding value `b', and 0 otherwise. Quiet NaNs do not +| cause an exception. Otherwise, the comparison is performed according to the +| IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float32_le_quiet( float32 a, float32 b ) +{ + flag aSign, bSign; + int16 aExp, bExp; + + if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) + || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) + ) { + if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) { + float_raise( float_flag_invalid ); + } + return 0; + } + aSign = extractFloat32Sign( a ); + bSign = extractFloat32Sign( b ); + if ( aSign != bSign ) return aSign || ( (bits32) ( ( a | b )<<1 ) == 0 ); + return ( a == b ) || ( aSign ^ ( a < b ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the single-precision floating-point value `a' is less than +| the corresponding value `b', and 0 otherwise. Quiet NaNs do not cause an +| exception. Otherwise, the comparison is performed according to the IEC/IEEE +| Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float32_lt_quiet( float32 a, float32 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat32Exp( a ) == 0xFF ) && extractFloat32Frac( a ) ) + || ( ( extractFloat32Exp( b ) == 0xFF ) && extractFloat32Frac( b ) ) + ) { + if ( float32_is_signaling_nan( a ) || float32_is_signaling_nan( b ) ) { + float_raise( float_flag_invalid ); + } + return 0; + } + aSign = extractFloat32Sign( a ); + bSign = extractFloat32Sign( b ); + if ( aSign != bSign ) return aSign && ( (bits32) ( ( a | b )<<1 ) != 0 ); + return ( a != b ) && ( aSign ^ ( a < b ) ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the double-precision floating-point value +| `a' to the 32-bit two's complement integer format. The conversion is +| performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic---which means in particular that the conversion is rounded +| according to the current rounding mode. If `a' is a NaN, the largest +| positive integer is returned. Otherwise, if the conversion overflows, the +| largest integer with the same sign as `a' is returned. +*----------------------------------------------------------------------------*/ + +int32 float64_to_int32( float64 a ) +{ + flag aSign; + int16 aExp, shiftCount; + bits32 aSig0, aSig1, absZ, aSigExtra; + int32 z; + int8 roundingMode; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + shiftCount = aExp - 0x413; + if ( 0 <= shiftCount ) { + if ( 0x41E < aExp ) { + if ( ( aExp == 0x7FF ) && ( aSig0 | aSig1 ) ) aSign = 0; + goto invalid; + } + shortShift64Left( + aSig0 | 0x00100000, aSig1, shiftCount, &absZ, &aSigExtra ); + if ( 0x80000000 < absZ ) goto invalid; + } + else { + aSig1 = ( aSig1 != 0 ); + if ( aExp < 0x3FE ) { + aSigExtra = aExp | aSig0 | aSig1; + absZ = 0; + } + else { + aSig0 |= 0x00100000; + aSigExtra = ( aSig0<<( shiftCount & 31 ) ) | aSig1; + absZ = aSig0>>( - shiftCount ); + } + } + roundingMode = float_rounding_mode; + if ( roundingMode == float_round_nearest_even ) { + if ( (sbits32) aSigExtra < 0 ) { + ++absZ; + if ( (bits32) ( aSigExtra<<1 ) == 0 ) absZ &= ~1; + } + z = aSign ? - absZ : absZ; + } + else { + aSigExtra = ( aSigExtra != 0 ); + if ( aSign ) { + z = - ( absZ + + ( ( roundingMode == float_round_down ) & aSigExtra ) ); + } + else { + z = absZ + ( ( roundingMode == float_round_up ) & aSigExtra ); + } + } + if ( ( aSign ^ ( z < 0 ) ) && z ) { + invalid: + float_raise( float_flag_invalid ); + return aSign ? (sbits32) 0x80000000 : 0x7FFFFFFF; + } + if ( aSigExtra ) float_exception_flags |= float_flag_inexact; + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the double-precision floating-point value +| `a' to the 32-bit two's complement integer format. The conversion is +| performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic, except that the conversion is always rounded toward zero. +| If `a' is a NaN, the largest positive integer is returned. Otherwise, if +| the conversion overflows, the largest integer with the same sign as `a' is +| returned. +*----------------------------------------------------------------------------*/ + +int32 float64_to_int32_round_to_zero( float64 a ) +{ + flag aSign; + int16 aExp, shiftCount; + bits32 aSig0, aSig1, absZ, aSigExtra; + int32 z; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + shiftCount = aExp - 0x413; + if ( 0 <= shiftCount ) { + if ( 0x41E < aExp ) { + if ( ( aExp == 0x7FF ) && ( aSig0 | aSig1 ) ) aSign = 0; + goto invalid; + } + shortShift64Left( + aSig0 | 0x00100000, aSig1, shiftCount, &absZ, &aSigExtra ); + } + else { + if ( aExp < 0x3FF ) { + if ( aExp | aSig0 | aSig1 ) { + float_exception_flags |= float_flag_inexact; + } + return 0; + } + aSig0 |= 0x00100000; + aSigExtra = ( aSig0<<( shiftCount & 31 ) ) | aSig1; + absZ = aSig0>>( - shiftCount ); + } + z = aSign ? - absZ : absZ; + if ( ( aSign ^ ( z < 0 ) ) && z ) { + invalid: + float_raise( float_flag_invalid ); + return aSign ? (sbits32) 0x80000000 : 0x7FFFFFFF; + } + if ( aSigExtra ) float_exception_flags |= float_flag_inexact; + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of converting the double-precision floating-point value +| `a' to the single-precision floating-point format. The conversion is +| performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic. +*----------------------------------------------------------------------------*/ + +float32 float64_to_float32( float64 a ) +{ + flag aSign; + int16 aExp; + bits32 aSig0, aSig1, zSig; + bits32 allZero; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 ) { + return commonNaNToFloat32( float64ToCommonNaN( a ) ); + } + return packFloat32( aSign, 0xFF, 0 ); + } + shift64RightJamming( aSig0, aSig1, 22, &allZero, &zSig ); + if ( aExp ) zSig |= 0x40000000; + return roundAndPackFloat32( aSign, aExp - 0x381, zSig ); + +} + +/*---------------------------------------------------------------------------- +| Rounds the double-precision floating-point value `a' to an integer, +| and returns the result as a double-precision floating-point value. The +| operation is performed according to the IEC/IEEE Standard for Binary +| Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_round_to_int( float64 a ) +{ + flag aSign; + int16 aExp; + bits32 lastBitMask, roundBitsMask; + int8 roundingMode; + float64 z; + + aExp = extractFloat64Exp( a ); + if ( 0x413 <= aExp ) { + if ( 0x433 <= aExp ) { + if ( ( aExp == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) { + return propagateFloat64NaN( a, a ); + } + return a; + } + lastBitMask = 1; + lastBitMask = ( lastBitMask<<( 0x432 - aExp ) )<<1; + roundBitsMask = lastBitMask - 1; + z = a; + roundingMode = float_rounding_mode; + if ( roundingMode == float_round_nearest_even ) { + if ( lastBitMask ) { + add64( z.high, z.low, 0, lastBitMask>>1, &z.high, &z.low ); + if ( ( z.low & roundBitsMask ) == 0 ) z.low &= ~ lastBitMask; + } + else { + if ( (sbits32) z.low < 0 ) { + ++z.high; + if ( (bits32) ( z.low<<1 ) == 0 ) z.high &= ~1; + } + } + } + else if ( roundingMode != float_round_to_zero ) { + if ( extractFloat64Sign( z ) + ^ ( roundingMode == float_round_up ) ) { + add64( z.high, z.low, 0, roundBitsMask, &z.high, &z.low ); + } + } + z.low &= ~ roundBitsMask; + } + else { + if ( aExp <= 0x3FE ) { + if ( ( ( (bits32) ( a.high<<1 ) ) | a.low ) == 0 ) return a; + float_exception_flags |= float_flag_inexact; + aSign = extractFloat64Sign( a ); + switch ( float_rounding_mode ) { + case float_round_nearest_even: + if ( ( aExp == 0x3FE ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) + ) { + return packFloat64( aSign, 0x3FF, 0, 0 ); + } + break; + case float_round_down: + return + aSign ? packFloat64( 1, 0x3FF, 0, 0 ) + : packFloat64( 0, 0, 0, 0 ); + case float_round_up: + return + aSign ? packFloat64( 1, 0, 0, 0 ) + : packFloat64( 0, 0x3FF, 0, 0 ); + } + return packFloat64( aSign, 0, 0, 0 ); + } + lastBitMask = 1; + lastBitMask <<= 0x413 - aExp; + roundBitsMask = lastBitMask - 1; + z.low = 0; + z.high = a.high; + roundingMode = float_rounding_mode; + if ( roundingMode == float_round_nearest_even ) { + z.high += lastBitMask>>1; + if ( ( ( z.high & roundBitsMask ) | a.low ) == 0 ) { + z.high &= ~ lastBitMask; + } + } + else if ( roundingMode != float_round_to_zero ) { + if ( extractFloat64Sign( z ) + ^ ( roundingMode == float_round_up ) ) { + z.high |= ( a.low != 0 ); + z.high += roundBitsMask; + } + } + z.high &= ~ roundBitsMask; + } + if ( ( z.low != a.low ) || ( z.high != a.high ) ) { + float_exception_flags |= float_flag_inexact; + } + return z; + +} + +/*---------------------------------------------------------------------------- +| Returns the result of adding the absolute values of the double-precision +| floating-point values `a' and `b'. If `zSign' is 1, the sum is negated +| before being returned. `zSign' is ignored if the result is a NaN. +| The addition is performed according to the IEC/IEEE Standard for Binary +| Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +static float64 addFloat64Sigs( float64 a, float64 b, flag zSign ) +{ + int16 aExp, bExp, zExp; + bits32 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1, zSig2; + int16 expDiff; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + bSig1 = extractFloat64Frac1( b ); + bSig0 = extractFloat64Frac0( b ); + bExp = extractFloat64Exp( b ); + expDiff = aExp - bExp; + if ( 0 < expDiff ) { + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 ) return propagateFloat64NaN( a, b ); + return a; + } + if ( bExp == 0 ) { + --expDiff; + } + else { + bSig0 |= 0x00100000; + } + shift64ExtraRightJamming( + bSig0, bSig1, 0, expDiff, &bSig0, &bSig1, &zSig2 ); + zExp = aExp; + } + else if ( expDiff < 0 ) { + if ( bExp == 0x7FF ) { + if ( bSig0 | bSig1 ) return propagateFloat64NaN( a, b ); + return packFloat64( zSign, 0x7FF, 0, 0 ); + } + if ( aExp == 0 ) { + ++expDiff; + } + else { + aSig0 |= 0x00100000; + } + shift64ExtraRightJamming( + aSig0, aSig1, 0, - expDiff, &aSig0, &aSig1, &zSig2 ); + zExp = bExp; + } + else { + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 | bSig0 | bSig1 ) { + return propagateFloat64NaN( a, b ); + } + return a; + } + add64( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 ); + if ( aExp == 0 ) return packFloat64( zSign, 0, zSig0, zSig1 ); + zSig2 = 0; + zSig0 |= 0x00200000; + zExp = aExp; + goto shiftRight1; + } + aSig0 |= 0x00100000; + add64( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 ); + --zExp; + if ( zSig0 < 0x00200000 ) goto roundAndPack; + ++zExp; + shiftRight1: + shift64ExtraRightJamming( zSig0, zSig1, zSig2, 1, &zSig0, &zSig1, &zSig2 ); + roundAndPack: + return roundAndPackFloat64( zSign, zExp, zSig0, zSig1, zSig2 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of subtracting the absolute values of the double- +| precision floating-point values `a' and `b'. If `zSign' is 1, the +| difference is negated before being returned. `zSign' is ignored if the +| result is a NaN. The subtraction is performed according to the IEC/IEEE +| Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +static float64 subFloat64Sigs( float64 a, float64 b, flag zSign ) +{ + int16 aExp, bExp, zExp; + bits32 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1; + int16 expDiff; + float64 z; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + bSig1 = extractFloat64Frac1( b ); + bSig0 = extractFloat64Frac0( b ); + bExp = extractFloat64Exp( b ); + expDiff = aExp - bExp; + shortShift64Left( aSig0, aSig1, 10, &aSig0, &aSig1 ); + shortShift64Left( bSig0, bSig1, 10, &bSig0, &bSig1 ); + if ( 0 < expDiff ) goto aExpBigger; + if ( expDiff < 0 ) goto bExpBigger; + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 | bSig0 | bSig1 ) { + return propagateFloat64NaN( a, b ); + } + float_raise( float_flag_invalid ); + z.low = float64_default_nan_low; + z.high = float64_default_nan_high; + return z; + } + if ( aExp == 0 ) { + aExp = 1; + bExp = 1; + } + if ( bSig0 < aSig0 ) goto aBigger; + if ( aSig0 < bSig0 ) goto bBigger; + if ( bSig1 < aSig1 ) goto aBigger; + if ( aSig1 < bSig1 ) goto bBigger; + return packFloat64( float_rounding_mode == float_round_down, 0, 0, 0 ); + bExpBigger: + if ( bExp == 0x7FF ) { + if ( bSig0 | bSig1 ) return propagateFloat64NaN( a, b ); + return packFloat64( zSign ^ 1, 0x7FF, 0, 0 ); + } + if ( aExp == 0 ) { + ++expDiff; + } + else { + aSig0 |= 0x40000000; + } + shift64RightJamming( aSig0, aSig1, - expDiff, &aSig0, &aSig1 ); + bSig0 |= 0x40000000; + bBigger: + sub64( bSig0, bSig1, aSig0, aSig1, &zSig0, &zSig1 ); + zExp = bExp; + zSign ^= 1; + goto normalizeRoundAndPack; + aExpBigger: + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 ) return propagateFloat64NaN( a, b ); + return a; + } + if ( bExp == 0 ) { + --expDiff; + } + else { + bSig0 |= 0x40000000; + } + shift64RightJamming( bSig0, bSig1, expDiff, &bSig0, &bSig1 ); + aSig0 |= 0x40000000; + aBigger: + sub64( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 ); + zExp = aExp; + normalizeRoundAndPack: + --zExp; + return normalizeRoundAndPackFloat64( zSign, zExp - 10, zSig0, zSig1 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of adding the double-precision floating-point values `a' +| and `b'. The operation is performed according to the IEC/IEEE Standard for +| Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_add( float64 a, float64 b ) +{ + flag aSign, bSign; + + aSign = extractFloat64Sign( a ); + bSign = extractFloat64Sign( b ); + if ( aSign == bSign ) { + return addFloat64Sigs( a, b, aSign ); + } + else { + return subFloat64Sigs( a, b, aSign ); + } + +} + +/*---------------------------------------------------------------------------- +| Returns the result of subtracting the double-precision floating-point values +| `a' and `b'. The operation is performed according to the IEC/IEEE Standard +| for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_sub( float64 a, float64 b ) +{ + flag aSign, bSign; + + aSign = extractFloat64Sign( a ); + bSign = extractFloat64Sign( b ); + if ( aSign == bSign ) { + return subFloat64Sigs( a, b, aSign ); + } + else { + return addFloat64Sigs( a, b, aSign ); + } + +} + +/*---------------------------------------------------------------------------- +| Returns the result of multiplying the double-precision floating-point values +| `a' and `b'. The operation is performed according to the IEC/IEEE Standard +| for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_mul( float64 a, float64 b ) +{ + flag aSign, bSign, zSign; + int16 aExp, bExp, zExp; + bits32 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1, zSig2, zSig3; + float64 z; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + bSig1 = extractFloat64Frac1( b ); + bSig0 = extractFloat64Frac0( b ); + bExp = extractFloat64Exp( b ); + bSign = extractFloat64Sign( b ); + zSign = aSign ^ bSign; + if ( aExp == 0x7FF ) { + if ( ( aSig0 | aSig1 ) + || ( ( bExp == 0x7FF ) && ( bSig0 | bSig1 ) ) ) { + return propagateFloat64NaN( a, b ); + } + if ( ( bExp | bSig0 | bSig1 ) == 0 ) goto invalid; + return packFloat64( zSign, 0x7FF, 0, 0 ); + } + if ( bExp == 0x7FF ) { + if ( bSig0 | bSig1 ) return propagateFloat64NaN( a, b ); + if ( ( aExp | aSig0 | aSig1 ) == 0 ) { + invalid: + float_raise( float_flag_invalid ); + z.low = float64_default_nan_low; + z.high = float64_default_nan_high; + return z; + } + return packFloat64( zSign, 0x7FF, 0, 0 ); + } + if ( aExp == 0 ) { + if ( ( aSig0 | aSig1 ) == 0 ) return packFloat64( zSign, 0, 0, 0 ); + normalizeFloat64Subnormal( aSig0, aSig1, &aExp, &aSig0, &aSig1 ); + } + if ( bExp == 0 ) { + if ( ( bSig0 | bSig1 ) == 0 ) return packFloat64( zSign, 0, 0, 0 ); + normalizeFloat64Subnormal( bSig0, bSig1, &bExp, &bSig0, &bSig1 ); + } + zExp = aExp + bExp - 0x400; + aSig0 |= 0x00100000; + shortShift64Left( bSig0, bSig1, 12, &bSig0, &bSig1 ); + mul64To128( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1, &zSig2, &zSig3 ); + add64( zSig0, zSig1, aSig0, aSig1, &zSig0, &zSig1 ); + zSig2 |= ( zSig3 != 0 ); + if ( 0x00200000 <= zSig0 ) { + shift64ExtraRightJamming( + zSig0, zSig1, zSig2, 1, &zSig0, &zSig1, &zSig2 ); + ++zExp; + } + return roundAndPackFloat64( zSign, zExp, zSig0, zSig1, zSig2 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the result of dividing the double-precision floating-point value `a' +| by the corresponding value `b'. The operation is performed according to the +| IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_div( float64 a, float64 b ) +{ + flag aSign, bSign, zSign; + int16 aExp, bExp, zExp; + bits32 aSig0, aSig1, bSig0, bSig1, zSig0, zSig1, zSig2; + bits32 rem0, rem1, rem2, rem3, term0, term1, term2, term3; + float64 z; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + bSig1 = extractFloat64Frac1( b ); + bSig0 = extractFloat64Frac0( b ); + bExp = extractFloat64Exp( b ); + bSign = extractFloat64Sign( b ); + zSign = aSign ^ bSign; + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 ) return propagateFloat64NaN( a, b ); + if ( bExp == 0x7FF ) { + if ( bSig0 | bSig1 ) return propagateFloat64NaN( a, b ); + goto invalid; + } + return packFloat64( zSign, 0x7FF, 0, 0 ); + } + if ( bExp == 0x7FF ) { + if ( bSig0 | bSig1 ) return propagateFloat64NaN( a, b ); + return packFloat64( zSign, 0, 0, 0 ); + } + if ( bExp == 0 ) { + if ( ( bSig0 | bSig1 ) == 0 ) { + if ( ( aExp | aSig0 | aSig1 ) == 0 ) { + invalid: + float_raise( float_flag_invalid ); + z.low = float64_default_nan_low; + z.high = float64_default_nan_high; + return z; + } + float_raise( float_flag_divbyzero ); + return packFloat64( zSign, 0x7FF, 0, 0 ); + } + normalizeFloat64Subnormal( bSig0, bSig1, &bExp, &bSig0, &bSig1 ); + } + if ( aExp == 0 ) { + if ( ( aSig0 | aSig1 ) == 0 ) return packFloat64( zSign, 0, 0, 0 ); + normalizeFloat64Subnormal( aSig0, aSig1, &aExp, &aSig0, &aSig1 ); + } + zExp = aExp - bExp + 0x3FD; + shortShift64Left( aSig0 | 0x00100000, aSig1, 11, &aSig0, &aSig1 ); + shortShift64Left( bSig0 | 0x00100000, bSig1, 11, &bSig0, &bSig1 ); + if ( le64( bSig0, bSig1, aSig0, aSig1 ) ) { + shift64Right( aSig0, aSig1, 1, &aSig0, &aSig1 ); + ++zExp; + } + zSig0 = estimateDiv64To32( aSig0, aSig1, bSig0 ); + mul64By32To96( bSig0, bSig1, zSig0, &term0, &term1, &term2 ); + sub96( aSig0, aSig1, 0, term0, term1, term2, &rem0, &rem1, &rem2 ); + while ( (sbits32) rem0 < 0 ) { + --zSig0; + add96( rem0, rem1, rem2, 0, bSig0, bSig1, &rem0, &rem1, &rem2 ); + } + zSig1 = estimateDiv64To32( rem1, rem2, bSig0 ); + if ( ( zSig1 & 0x3FF ) <= 4 ) { + mul64By32To96( bSig0, bSig1, zSig1, &term1, &term2, &term3 ); + sub96( rem1, rem2, 0, term1, term2, term3, &rem1, &rem2, &rem3 ); + while ( (sbits32) rem1 < 0 ) { + --zSig1; + add96( rem1, rem2, rem3, 0, bSig0, bSig1, &rem1, &rem2, &rem3 ); + } + zSig1 |= ( ( rem1 | rem2 | rem3 ) != 0 ); + } + shift64ExtraRightJamming( zSig0, zSig1, 0, 11, &zSig0, &zSig1, &zSig2 ); + return roundAndPackFloat64( zSign, zExp, zSig0, zSig1, zSig2 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the remainder of the double-precision floating-point value `a' +| with respect to the corresponding value `b'. The operation is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_rem( float64 a, float64 b ) +{ + flag aSign, bSign, zSign; + int16 aExp, bExp, expDiff; + bits32 aSig0, aSig1, bSig0, bSig1, q, term0, term1, term2; + bits32 allZero, alternateASig0, alternateASig1, sigMean1; + sbits32 sigMean0; + float64 z; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + bSig1 = extractFloat64Frac1( b ); + bSig0 = extractFloat64Frac0( b ); + bExp = extractFloat64Exp( b ); + bSign = extractFloat64Sign( b ); + if ( aExp == 0x7FF ) { + if ( ( aSig0 | aSig1 ) + || ( ( bExp == 0x7FF ) && ( bSig0 | bSig1 ) ) ) { + return propagateFloat64NaN( a, b ); + } + goto invalid; + } + if ( bExp == 0x7FF ) { + if ( bSig0 | bSig1 ) return propagateFloat64NaN( a, b ); + return a; + } + if ( bExp == 0 ) { + if ( ( bSig0 | bSig1 ) == 0 ) { + invalid: + float_raise( float_flag_invalid ); + z.low = float64_default_nan_low; + z.high = float64_default_nan_high; + return z; + } + normalizeFloat64Subnormal( bSig0, bSig1, &bExp, &bSig0, &bSig1 ); + } + if ( aExp == 0 ) { + if ( ( aSig0 | aSig1 ) == 0 ) return a; + normalizeFloat64Subnormal( aSig0, aSig1, &aExp, &aSig0, &aSig1 ); + } + expDiff = aExp - bExp; + if ( expDiff < -1 ) return a; + shortShift64Left( + aSig0 | 0x00100000, aSig1, 11 - ( expDiff < 0 ), &aSig0, &aSig1 ); + shortShift64Left( bSig0 | 0x00100000, bSig1, 11, &bSig0, &bSig1 ); + q = le64( bSig0, bSig1, aSig0, aSig1 ); + if ( q ) sub64( aSig0, aSig1, bSig0, bSig1, &aSig0, &aSig1 ); + expDiff -= 32; + while ( 0 < expDiff ) { + q = estimateDiv64To32( aSig0, aSig1, bSig0 ); + q = ( 4 < q ) ? q - 4 : 0; + mul64By32To96( bSig0, bSig1, q, &term0, &term1, &term2 ); + shortShift96Left( term0, term1, term2, 29, &term1, &term2, &allZero ); + shortShift64Left( aSig0, aSig1, 29, &aSig0, &allZero ); + sub64( aSig0, 0, term1, term2, &aSig0, &aSig1 ); + expDiff -= 29; + } + if ( -32 < expDiff ) { + q = estimateDiv64To32( aSig0, aSig1, bSig0 ); + q = ( 4 < q ) ? q - 4 : 0; + q >>= - expDiff; + shift64Right( bSig0, bSig1, 8, &bSig0, &bSig1 ); + expDiff += 24; + if ( expDiff < 0 ) { + shift64Right( aSig0, aSig1, - expDiff, &aSig0, &aSig1 ); + } + else { + shortShift64Left( aSig0, aSig1, expDiff, &aSig0, &aSig1 ); + } + mul64By32To96( bSig0, bSig1, q, &term0, &term1, &term2 ); + sub64( aSig0, aSig1, term1, term2, &aSig0, &aSig1 ); + } + else { + shift64Right( aSig0, aSig1, 8, &aSig0, &aSig1 ); + shift64Right( bSig0, bSig1, 8, &bSig0, &bSig1 ); + } + do { + alternateASig0 = aSig0; + alternateASig1 = aSig1; + ++q; + sub64( aSig0, aSig1, bSig0, bSig1, &aSig0, &aSig1 ); + } while ( 0 <= (sbits32) aSig0 ); + add64( + aSig0, aSig1, alternateASig0, alternateASig1, &sigMean0, &sigMean1 ); + if ( ( sigMean0 < 0 ) + || ( ( ( sigMean0 | sigMean1 ) == 0 ) && ( q & 1 ) ) ) { + aSig0 = alternateASig0; + aSig1 = alternateASig1; + } + zSign = ( (sbits32) aSig0 < 0 ); + if ( zSign ) sub64( 0, 0, aSig0, aSig1, &aSig0, &aSig1 ); + return + normalizeRoundAndPackFloat64( aSign ^ zSign, bExp - 4, aSig0, aSig1 ); + +} + +/*---------------------------------------------------------------------------- +| Returns the square root of the double-precision floating-point value `a'. +| The operation is performed according to the IEC/IEEE Standard for Binary +| Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +float64 float64_sqrt( float64 a ) +{ + flag aSign; + int16 aExp, zExp; + bits32 aSig0, aSig1, zSig0, zSig1, zSig2, doubleZSig0; + bits32 rem0, rem1, rem2, rem3, term0, term1, term2, term3; + float64 z; + + aSig1 = extractFloat64Frac1( a ); + aSig0 = extractFloat64Frac0( a ); + aExp = extractFloat64Exp( a ); + aSign = extractFloat64Sign( a ); + if ( aExp == 0x7FF ) { + if ( aSig0 | aSig1 ) return propagateFloat64NaN( a, a ); + if ( ! aSign ) return a; + goto invalid; + } + if ( aSign ) { + if ( ( aExp | aSig0 | aSig1 ) == 0 ) return a; + invalid: + float_raise( float_flag_invalid ); + z.low = float64_default_nan_low; + z.high = float64_default_nan_high; + return z; + } + if ( aExp == 0 ) { + if ( ( aSig0 | aSig1 ) == 0 ) return packFloat64( 0, 0, 0, 0 ); + normalizeFloat64Subnormal( aSig0, aSig1, &aExp, &aSig0, &aSig1 ); + } + zExp = ( ( aExp - 0x3FF )>>1 ) + 0x3FE; + aSig0 |= 0x00100000; + shortShift64Left( aSig0, aSig1, 11, &term0, &term1 ); + zSig0 = ( estimateSqrt32( aExp, term0 )>>1 ) + 1; + if ( zSig0 == 0 ) zSig0 = 0x7FFFFFFF; + doubleZSig0 = zSig0 + zSig0; + shortShift64Left( aSig0, aSig1, 9 - ( aExp & 1 ), &aSig0, &aSig1 ); + mul32To64( zSig0, zSig0, &term0, &term1 ); + sub64( aSig0, aSig1, term0, term1, &rem0, &rem1 ); + while ( (sbits32) rem0 < 0 ) { + --zSig0; + doubleZSig0 -= 2; + add64( rem0, rem1, 0, doubleZSig0 | 1, &rem0, &rem1 ); + } + zSig1 = estimateDiv64To32( rem1, 0, doubleZSig0 ); + if ( ( zSig1 & 0x1FF ) <= 5 ) { + if ( zSig1 == 0 ) zSig1 = 1; + mul32To64( doubleZSig0, zSig1, &term1, &term2 ); + sub64( rem1, 0, term1, term2, &rem1, &rem2 ); + mul32To64( zSig1, zSig1, &term2, &term3 ); + sub96( rem1, rem2, 0, 0, term2, term3, &rem1, &rem2, &rem3 ); + while ( (sbits32) rem1 < 0 ) { + --zSig1; + shortShift64Left( 0, zSig1, 1, &term2, &term3 ); + term3 |= 1; + term2 |= doubleZSig0; + add96( rem1, rem2, rem3, 0, term2, term3, &rem1, &rem2, &rem3 ); + } + zSig1 |= ( ( rem1 | rem2 | rem3 ) != 0 ); + } + shift64ExtraRightJamming( zSig0, zSig1, 0, 10, &zSig0, &zSig1, &zSig2 ); + return roundAndPackFloat64( 0, zExp, zSig0, zSig1, zSig2 ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is equal to +| the corresponding value `b', and 0 otherwise. The comparison is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float64_eq( float64 a, float64 b ) +{ + + if ( ( ( extractFloat64Exp( a ) == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) + || ( ( extractFloat64Exp( b ) == 0x7FF ) + && ( extractFloat64Frac0( b ) | extractFloat64Frac1( b ) ) ) + ) { + if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) { + float_raise( float_flag_invalid ); + } + return 0; + } + return + ( a.low == b.low ) + && ( ( a.high == b.high ) + || ( ( a.low == 0 ) + && ( (bits32) ( ( a.high | b.high )<<1 ) == 0 ) ) + ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is less than +| or equal to the corresponding value `b', and 0 otherwise. The comparison +| is performed according to the IEC/IEEE Standard for Binary Floating-Point +| Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float64_le( float64 a, float64 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat64Exp( a ) == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) + || ( ( extractFloat64Exp( b ) == 0x7FF ) + && ( extractFloat64Frac0( b ) | extractFloat64Frac1( b ) ) ) + ) { + float_raise( float_flag_invalid ); + return 0; + } + aSign = extractFloat64Sign( a ); + bSign = extractFloat64Sign( b ); + if ( aSign != bSign ) { + return + aSign + || ( ( ( (bits32) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) + == 0 ); + } + return + aSign ? le64( b.high, b.low, a.high, a.low ) + : le64( a.high, a.low, b.high, b.low ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is less than +| the corresponding value `b', and 0 otherwise. The comparison is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float64_lt( float64 a, float64 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat64Exp( a ) == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) + || ( ( extractFloat64Exp( b ) == 0x7FF ) + && ( extractFloat64Frac0( b ) | extractFloat64Frac1( b ) ) ) + ) { + float_raise( float_flag_invalid ); + return 0; + } + aSign = extractFloat64Sign( a ); + bSign = extractFloat64Sign( b ); + if ( aSign != bSign ) { + return + aSign + && ( ( ( (bits32) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) + != 0 ); + } + return + aSign ? lt64( b.high, b.low, a.high, a.low ) + : lt64( a.high, a.low, b.high, b.low ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is equal to +| the corresponding value `b', and 0 otherwise. The invalid exception is +| raised if either operand is a NaN. Otherwise, the comparison is performed +| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float64_eq_signaling( float64 a, float64 b ) +{ + + if ( ( ( extractFloat64Exp( a ) == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) + || ( ( extractFloat64Exp( b ) == 0x7FF ) + && ( extractFloat64Frac0( b ) | extractFloat64Frac1( b ) ) ) + ) { + float_raise( float_flag_invalid ); + return 0; + } + return + ( a.low == b.low ) + && ( ( a.high == b.high ) + || ( ( a.low == 0 ) + && ( (bits32) ( ( a.high | b.high )<<1 ) == 0 ) ) + ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is less than or +| equal to the corresponding value `b', and 0 otherwise. Quiet NaNs do not +| cause an exception. Otherwise, the comparison is performed according to the +| IEC/IEEE Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float64_le_quiet( float64 a, float64 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat64Exp( a ) == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) + || ( ( extractFloat64Exp( b ) == 0x7FF ) + && ( extractFloat64Frac0( b ) | extractFloat64Frac1( b ) ) ) + ) { + if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) { + float_raise( float_flag_invalid ); + } + return 0; + } + aSign = extractFloat64Sign( a ); + bSign = extractFloat64Sign( b ); + if ( aSign != bSign ) { + return + aSign + || ( ( ( (bits32) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) + == 0 ); + } + return + aSign ? le64( b.high, b.low, a.high, a.low ) + : le64( a.high, a.low, b.high, b.low ); + +} + +/*---------------------------------------------------------------------------- +| Returns 1 if the double-precision floating-point value `a' is less than +| the corresponding value `b', and 0 otherwise. Quiet NaNs do not cause an +| exception. Otherwise, the comparison is performed according to the IEC/IEEE +| Standard for Binary Floating-Point Arithmetic. +*----------------------------------------------------------------------------*/ + +flag float64_lt_quiet( float64 a, float64 b ) +{ + flag aSign, bSign; + + if ( ( ( extractFloat64Exp( a ) == 0x7FF ) + && ( extractFloat64Frac0( a ) | extractFloat64Frac1( a ) ) ) + || ( ( extractFloat64Exp( b ) == 0x7FF ) + && ( extractFloat64Frac0( b ) | extractFloat64Frac1( b ) ) ) + ) { + if ( float64_is_signaling_nan( a ) || float64_is_signaling_nan( b ) ) { + float_raise( float_flag_invalid ); + } + return 0; + } + aSign = extractFloat64Sign( a ); + bSign = extractFloat64Sign( b ); + if ( aSign != bSign ) { + return + aSign + && ( ( ( (bits32) ( ( a.high | b.high )<<1 ) ) | a.low | b.low ) + != 0 ); + } + return + aSign ? lt64( b.high, b.low, a.high, a.low ) + : lt64( a.high, a.low, b.high, b.low ); + +} + diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.h b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.h new file mode 100644 index 0000000000..270c1de609 --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/softfloat.h @@ -0,0 +1,141 @@ + +/*============================================================================ + +This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic +Package, Release 2b. + +Written by John R. Hauser. This work was made possible in part by the +International Computer Science Institute, located at Suite 600, 1947 Center +Street, Berkeley, California 94704. Funding was partially provided by the +National Science Foundation under grant MIP-9311980. The original version +of this code was written as part of a project to build a fixed-point vector +processor in collaboration with the University of California at Berkeley, +overseen by Profs. Nelson Morgan and John Wawrzynek. More information +is available through the Web page `http://www.cs.berkeley.edu/~jhauser/ +arithmetic/SoftFloat.html'. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has +been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES +RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS +AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES, +COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE +EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE +INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR +OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, so long as +(1) the source code for the derivative work includes prominent notice that +the work is derivative, and (2) the source code includes prominent notice with +these four paragraphs for those parts of this code that are retained. + +=============================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE floating-point types. +*----------------------------------------------------------------------------*/ +typedef uint32 float32; +typedef struct { + uint32 high, low; +} float64; + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE floating-point underflow tininess-detection mode. +*----------------------------------------------------------------------------*/ +extern int8 float_detect_tininess; +enum { + float_tininess_after_rounding = 0, + float_tininess_before_rounding = 1 +}; + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE floating-point rounding mode. +*----------------------------------------------------------------------------*/ +extern int8 float_rounding_mode; +enum { + float_round_nearest_even = 0, + float_round_to_zero = 1, + float_round_down = 2, + float_round_up = 3 +}; + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE floating-point exception flags. +*----------------------------------------------------------------------------*/ +extern int8 float_exception_flags; +enum { + float_flag_inexact = 1, + float_flag_underflow = 2, + float_flag_overflow = 4, + float_flag_divbyzero = 8, + float_flag_invalid = 16 +}; + +/*---------------------------------------------------------------------------- +| Routine to raise any or all of the software IEC/IEEE floating-point +| exception flags. +*----------------------------------------------------------------------------*/ +void float_raise( int8 ); + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE integer-to-floating-point conversion routines. +*----------------------------------------------------------------------------*/ +float32 int32_to_float32( int32 ); +float64 int32_to_float64( int32 ); + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE single-precision conversion routines. +*----------------------------------------------------------------------------*/ +int32 float32_to_int32( float32 ); +int32 float32_to_int32_round_to_zero( float32 ); +float64 float32_to_float64( float32 ); + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE single-precision operations. +*----------------------------------------------------------------------------*/ +float32 float32_round_to_int( float32 ); +float32 float32_add( float32, float32 ); +float32 float32_sub( float32, float32 ); +float32 float32_mul( float32, float32 ); +float32 float32_div( float32, float32 ); +float32 float32_rem( float32, float32 ); +float32 float32_sqrt( float32 ); +char float32_eq( float32, float32 ); +char float32_le( float32, float32 ); +char float32_lt( float32, float32 ); +char float32_eq_signaling( float32, float32 ); +char float32_le_quiet( float32, float32 ); +char float32_lt_quiet( float32, float32 ); +char float32_is_signaling_nan( float32 ); + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE double-precision conversion routines. +*----------------------------------------------------------------------------*/ +int32 float64_to_int32( float64 ); +int32 float64_to_int32_round_to_zero( float64 ); +float32 float64_to_float32( float64 ); + +/*---------------------------------------------------------------------------- +| Software IEC/IEEE double-precision operations. +*----------------------------------------------------------------------------*/ +float64 float64_round_to_int( float64 ); +float64 float64_add( float64, float64 ); +float64 float64_sub( float64, float64 ); +float64 float64_mul( float64, float64 ); +float64 float64_div( float64, float64 ); +float64 float64_rem( float64, float64 ); +float64 float64_sqrt( float64 ); +char float64_eq( float64, float64 ); +char float64_le( float64, float64 ); +char float64_lt( float64, float64 ); +char float64_eq_signaling( float64, float64 ); +char float64_le_quiet( float64, float64 ); +char float64_lt_quiet( float64, float64 ); +char float64_is_signaling_nan( float64 ); + +#ifdef __cplusplus +}; +#endif diff --git a/libmednahawk/src/hw_cpu/v810/fpu-new/timesoftfloat.c b/libmednahawk/src/hw_cpu/v810/fpu-new/timesoftfloat.c new file mode 100644 index 0000000000..016cc2fc4e --- /dev/null +++ b/libmednahawk/src/hw_cpu/v810/fpu-new/timesoftfloat.c @@ -0,0 +1,1050 @@ + +/*============================================================================ + +This C source file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic +Package, Release 2b. + +Written by John R. Hauser. This work was made possible in part by the +International Computer Science Institute, located at Suite 600, 1947 Center +Street, Berkeley, California 94704. Funding was partially provided by the +National Science Foundation under grant MIP-9311980. The original version +of this code was written as part of a project to build a fixed-point vector +processor in collaboration with the University of California at Berkeley, +overseen by Profs. Nelson Morgan and John Wawrzynek. More information +is available through the Web page `http://www.cs.berkeley.edu/~jhauser/ +arithmetic/SoftFloat.html'. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has +been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES +RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS +AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES, +COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE +EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE +INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR +OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE. + +Derivative works are acceptable, even for commercial purposes, so long as +(1) the source code for the derivative work includes prominent notice that +the work is derivative, and (2) the source code includes prominent notice with +these four paragraphs for those parts of this code that are retained. + +=============================================================================*/ + +#include +#include +#include +#include +#include +#include "milieu.h" +#include "softfloat.h" + +enum { + minIterations = 1000 +}; + +void fail( const char *message, ... ) +{ + va_list varArgs; + + fputs( "timesoftfloat: ", stderr ); + va_start( varArgs, message ); + vfprintf( stderr, message, varArgs ); + va_end( varArgs ); + fputs( ".\n", stderr ); + exit( EXIT_FAILURE ); + +} + +static char *functionName, *roundingModeName, *tininessModeName; + +static void reportTime( int32 count, long clocks ) +{ + + printf( + "%8.1f kops/s: %s", + ( count / ( ( (float) clocks ) / CLOCKS_PER_SEC ) ) / 1000, + functionName + ); + if ( roundingModeName ) { + fputs( ", rounding ", stdout ); + fputs( roundingModeName, stdout ); + if ( tininessModeName ) { + fputs( ", tininess ", stdout ); + fputs( tininessModeName, stdout ); + fputs( " rounding", stdout ); + } + } + fputc( '\n', stdout ); + +} + +enum { + numInputs_int32 = 32 +}; + +static const int32 inputs_int32[ numInputs_int32 ] = { + 0xFFFFBB79, 0x405CF80F, 0x00000000, 0xFFFFFD04, + 0xFFF20002, 0x0C8EF795, 0xF00011FF, 0x000006CA, + 0x00009BFE, 0xFF4862E3, 0x9FFFEFFE, 0xFFFFFFB7, + 0x0BFF7FFF, 0x0000F37A, 0x0011DFFE, 0x00000006, + 0xFFF02006, 0xFFFFF7D1, 0x10200003, 0xDE8DF765, + 0x00003E02, 0x000019E8, 0x0008FFFE, 0xFFFFFB5C, + 0xFFDF7FFE, 0x07C42FBF, 0x0FFFE3FF, 0x040B9F13, + 0xBFFFFFF8, 0x0001BF56, 0x000017F6, 0x000A908A +}; + +static void time_a_int32_z_float32( float32 function( int32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( inputs_int32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_int32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( inputs_int32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_int32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_a_int32_z_float64( float64 function( int32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( inputs_int32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_int32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( inputs_int32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_int32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +enum { + numInputs_float32 = 32 +}; + +static const float32 inputs_float32[ numInputs_float32 ] = { + 0x4EFA0000, 0xC1D0B328, 0x80000000, 0x3E69A31E, + 0xAF803EFF, 0x3F800000, 0x17BF8000, 0xE74A301A, + 0x4E010003, 0x7EE3C75D, 0xBD803FE0, 0xBFFEFF00, + 0x7981F800, 0x431FFFFC, 0xC100C000, 0x3D87EFFF, + 0x4103FEFE, 0xBC000007, 0xBF01F7FF, 0x4E6C6B5C, + 0xC187FFFE, 0xC58B9F13, 0x4F88007F, 0xDF004007, + 0xB7FFD7FE, 0x7E8001FB, 0x46EFFBFF, 0x31C10000, + 0xDB428661, 0x33F89B1F, 0xA3BFEFFF, 0x537BFFBE +}; + +static void time_a_float32_z_int32( int32 function( float32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( inputs_float32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( inputs_float32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_a_float32_z_float64( float64 function( float32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( inputs_float32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( inputs_float32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_az_float32( float32 function( float32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( inputs_float32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( inputs_float32[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_ab_float32_z_flag( flag function( float32, float32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNumA, inputNumB; + + count = 0; + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( + inputs_float32[ inputNumA ], inputs_float32[ inputNumB ] ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float32 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( + inputs_float32[ inputNumA ], inputs_float32[ inputNumB ] ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float32 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_abz_float32( float32 function( float32, float32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNumA, inputNumB; + + count = 0; + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( + inputs_float32[ inputNumA ], inputs_float32[ inputNumB ] ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float32 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( + inputs_float32[ inputNumA ], inputs_float32[ inputNumB ] ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float32 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static const float32 inputs_float32_pos[ numInputs_float32 ] = { + 0x4EFA0000, 0x41D0B328, 0x00000000, 0x3E69A31E, + 0x2F803EFF, 0x3F800000, 0x17BF8000, 0x674A301A, + 0x4E010003, 0x7EE3C75D, 0x3D803FE0, 0x3FFEFF00, + 0x7981F800, 0x431FFFFC, 0x4100C000, 0x3D87EFFF, + 0x4103FEFE, 0x3C000007, 0x3F01F7FF, 0x4E6C6B5C, + 0x4187FFFE, 0x458B9F13, 0x4F88007F, 0x5F004007, + 0x37FFD7FE, 0x7E8001FB, 0x46EFFBFF, 0x31C10000, + 0x5B428661, 0x33F89B1F, 0x23BFEFFF, 0x537BFFBE +}; + +static void time_az_float32_pos( float32 function( float32 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + function( inputs_float32_pos[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + function( inputs_float32_pos[ inputNum ] ); + inputNum = ( inputNum + 1 ) & ( numInputs_float32 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +enum { + numInputs_float64 = 32 +}; + +static const struct { + bits32 high, low; +} inputs_float64[ numInputs_float64 ] = { + { 0x422FFFC0, 0x08000000 }, + { 0xB7E00004, 0x80000000 }, + { 0xF3FD2546, 0x120B7935 }, + { 0x3FF00000, 0x00000000 }, + { 0xCE07F766, 0xF09588D6 }, + { 0x80000000, 0x00000000 }, + { 0x3FCE0004, 0x00000000 }, + { 0x8313B60F, 0x0032BED8 }, + { 0xC1EFFFFF, 0xC0002000 }, + { 0x3FB3C75D, 0x224F2B0F }, + { 0x7FD00000, 0x004000FF }, + { 0xA12FFF80, 0x00001FFF }, + { 0x3EE00000, 0x00FE0000 }, + { 0x00100000, 0x80000004 }, + { 0x41CFFFFE, 0x00000020 }, + { 0x40303FFF, 0xFFFFFFFD }, + { 0x3FD00000, 0x3FEFFFFF }, + { 0xBFD00000, 0x10000000 }, + { 0xB7FC6B5C, 0x16CA55CF }, + { 0x413EEB94, 0x0B9D1301 }, + { 0xC7E00200, 0x001FFFFF }, + { 0x47F00021, 0xFFFFFFFE }, + { 0xBFFFFFFF, 0xF80000FF }, + { 0xC07FFFFF, 0xE00FFFFF }, + { 0x001497A6, 0x3740C5E8 }, + { 0xC4BFFFE0, 0x001FFFFF }, + { 0x96FFDFFE, 0xFFFFFFFF }, + { 0x403FC000, 0x000001FE }, + { 0xFFD00000, 0x000001F6 }, + { 0x06404000, 0x02000000 }, + { 0x479CEE1E, 0x4F789FE0 }, + { 0xC237FFFF, 0xFFFFFDFE } +}; + +static void time_a_float64_z_int32( int32 function( float64 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + float64 a; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + a.low = inputs_float64[ inputNum ].low; + a.high = inputs_float64[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + a.low = inputs_float64[ inputNum ].low; + a.high = inputs_float64[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_a_float64_z_float32( float32 function( float64 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + float64 a; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + a.low = inputs_float64[ inputNum ].low; + a.high = inputs_float64[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + a.low = inputs_float64[ inputNum ].low; + a.high = inputs_float64[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_az_float64( float64 function( float64 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + float64 a; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + a.low = inputs_float64[ inputNum ].low; + a.high = inputs_float64[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + a.low = inputs_float64[ inputNum ].low; + a.high = inputs_float64[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_ab_float64_z_flag( flag function( float64, float64 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNumA, inputNumB; + float64 a, b; + + count = 0; + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + a.low = inputs_float64[ inputNumA ].low; + a.high = inputs_float64[ inputNumA ].high; + b.low = inputs_float64[ inputNumB ].low; + b.high = inputs_float64[ inputNumB ].high; + function( a, b ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float64 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float64 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + for ( i = count; i; --i ) { + a.low = inputs_float64[ inputNumA ].low; + a.high = inputs_float64[ inputNumA ].high; + b.low = inputs_float64[ inputNumB ].low; + b.high = inputs_float64[ inputNumB ].high; + function( a, b ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float64 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float64 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static void time_abz_float64( float64 function( float64, float64 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNumA, inputNumB; + float64 a, b; + + count = 0; + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + a.low = inputs_float64[ inputNumA ].low; + a.high = inputs_float64[ inputNumA ].high; + b.low = inputs_float64[ inputNumB ].low; + b.high = inputs_float64[ inputNumB ].high; + function( a, b ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float64 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float64 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNumA = 0; + inputNumB = 0; + startClock = clock(); + for ( i = count; i; --i ) { + a.low = inputs_float64[ inputNumA ].low; + a.high = inputs_float64[ inputNumA ].high; + b.low = inputs_float64[ inputNumB ].low; + b.high = inputs_float64[ inputNumB ].high; + function( a, b ); + inputNumA = ( inputNumA + 1 ) & ( numInputs_float64 - 1 ); + if ( inputNumA == 0 ) ++inputNumB; + inputNumB = ( inputNumB + 1 ) & ( numInputs_float64 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +static const struct { + bits32 high, low; +} inputs_float64_pos[ numInputs_float64 ] = { + { 0x422FFFC0, 0x08000000 }, + { 0x37E00004, 0x80000000 }, + { 0x73FD2546, 0x120B7935 }, + { 0x3FF00000, 0x00000000 }, + { 0x4E07F766, 0xF09588D6 }, + { 0x00000000, 0x00000000 }, + { 0x3FCE0004, 0x00000000 }, + { 0x0313B60F, 0x0032BED8 }, + { 0x41EFFFFF, 0xC0002000 }, + { 0x3FB3C75D, 0x224F2B0F }, + { 0x7FD00000, 0x004000FF }, + { 0x212FFF80, 0x00001FFF }, + { 0x3EE00000, 0x00FE0000 }, + { 0x00100000, 0x80000004 }, + { 0x41CFFFFE, 0x00000020 }, + { 0x40303FFF, 0xFFFFFFFD }, + { 0x3FD00000, 0x3FEFFFFF }, + { 0x3FD00000, 0x10000000 }, + { 0x37FC6B5C, 0x16CA55CF }, + { 0x413EEB94, 0x0B9D1301 }, + { 0x47E00200, 0x001FFFFF }, + { 0x47F00021, 0xFFFFFFFE }, + { 0x3FFFFFFF, 0xF80000FF }, + { 0x407FFFFF, 0xE00FFFFF }, + { 0x001497A6, 0x3740C5E8 }, + { 0x44BFFFE0, 0x001FFFFF }, + { 0x16FFDFFE, 0xFFFFFFFF }, + { 0x403FC000, 0x000001FE }, + { 0x7FD00000, 0x000001F6 }, + { 0x06404000, 0x02000000 }, + { 0x479CEE1E, 0x4F789FE0 }, + { 0x4237FFFF, 0xFFFFFDFE } +}; + +static void time_az_float64_pos( float64 function( float64 ) ) +{ + clock_t startClock, endClock; + int32 count, i; + int8 inputNum; + float64 a; + + count = 0; + inputNum = 0; + startClock = clock(); + do { + for ( i = minIterations; i; --i ) { + a.low = inputs_float64_pos[ inputNum ].low; + a.high = inputs_float64_pos[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + count += minIterations; + } while ( clock() - startClock < CLOCKS_PER_SEC ); + inputNum = 0; + startClock = clock(); + for ( i = count; i; --i ) { + a.low = inputs_float64_pos[ inputNum ].low; + a.high = inputs_float64_pos[ inputNum ].high; + function( a ); + inputNum = ( inputNum + 1 ) & ( numInputs_float64 - 1 ); + } + endClock = clock(); + reportTime( count, endClock - startClock ); + +} + +enum { + INT32_TO_FLOAT32 = 1, + INT32_TO_FLOAT64, + FLOAT32_TO_INT32, + FLOAT32_TO_INT32_ROUND_TO_ZERO, + FLOAT32_TO_FLOAT64, + FLOAT32_ROUND_TO_INT, + FLOAT32_ADD, + FLOAT32_SUB, + FLOAT32_MUL, + FLOAT32_DIV, + FLOAT32_REM, + FLOAT32_SQRT, + FLOAT32_EQ, + FLOAT32_LE, + FLOAT32_LT, + FLOAT32_EQ_SIGNALING, + FLOAT32_LE_QUIET, + FLOAT32_LT_QUIET, + FLOAT64_TO_INT32, + FLOAT64_TO_INT32_ROUND_TO_ZERO, + FLOAT64_TO_FLOAT32, + FLOAT64_ROUND_TO_INT, + FLOAT64_ADD, + FLOAT64_SUB, + FLOAT64_MUL, + FLOAT64_DIV, + FLOAT64_REM, + FLOAT64_SQRT, + FLOAT64_EQ, + FLOAT64_LE, + FLOAT64_LT, + FLOAT64_EQ_SIGNALING, + FLOAT64_LE_QUIET, + FLOAT64_LT_QUIET, + NUM_FUNCTIONS +}; + +static struct { + char *name; + int8 numInputs; + flag roundingMode, tininessMode; +} functions[ NUM_FUNCTIONS ] = { + { 0, 0, 0, 0 }, + { "int32_to_float32", 1, TRUE, FALSE }, + { "int32_to_float64", 1, FALSE, FALSE }, + { "float32_to_int32", 1, TRUE, FALSE }, + { "float32_to_int32_round_to_zero", 1, FALSE, FALSE }, + { "float32_to_float64", 1, FALSE, FALSE }, + { "float32_round_to_int", 1, TRUE, FALSE }, + { "float32_add", 2, TRUE, FALSE }, + { "float32_sub", 2, TRUE, FALSE }, + { "float32_mul", 2, TRUE, TRUE, }, + { "float32_div", 2, TRUE, FALSE }, + { "float32_rem", 2, FALSE, FALSE }, + { "float32_sqrt", 1, TRUE, FALSE }, + { "float32_eq", 2, FALSE, FALSE }, + { "float32_le", 2, FALSE, FALSE }, + { "float32_lt", 2, FALSE, FALSE }, + { "float32_eq_signaling", 2, FALSE, FALSE }, + { "float32_le_quiet", 2, FALSE, FALSE }, + { "float32_lt_quiet", 2, FALSE, FALSE }, + { "float64_to_int32", 1, TRUE, FALSE }, + { "float64_to_int32_round_to_zero", 1, FALSE, FALSE }, + { "float64_to_float32", 1, TRUE, TRUE, }, + { "float64_round_to_int", 1, TRUE, FALSE }, + { "float64_add", 2, TRUE, FALSE }, + { "float64_sub", 2, TRUE, FALSE }, + { "float64_mul", 2, TRUE, TRUE, }, + { "float64_div", 2, TRUE, FALSE }, + { "float64_rem", 2, FALSE, FALSE }, + { "float64_sqrt", 1, TRUE, FALSE }, + { "float64_eq", 2, FALSE, FALSE }, + { "float64_le", 2, FALSE, FALSE }, + { "float64_lt", 2, FALSE, FALSE }, + { "float64_eq_signaling", 2, FALSE, FALSE }, + { "float64_le_quiet", 2, FALSE, FALSE }, + { "float64_lt_quiet", 2, FALSE, FALSE } +}; + +enum { + ROUND_NEAREST_EVEN = 1, + ROUND_TO_ZERO, + ROUND_DOWN, + ROUND_UP, + NUM_ROUNDINGMODES +}; +enum { + TININESS_BEFORE_ROUNDING = 1, + TININESS_AFTER_ROUNDING, + NUM_TININESSMODES +}; + +static void + timeFunctionVariety( + uint8 functionCode, int8 roundingMode, int8 tininessMode ) +{ + uint8 roundingCode; + int8 tininessCode; + + functionName = functions[ functionCode ].name; + switch ( roundingMode ) { + case 0: + roundingModeName = 0; + roundingCode = float_round_nearest_even; + break; + case ROUND_NEAREST_EVEN: + roundingModeName = "nearest_even"; + roundingCode = float_round_nearest_even; + break; + case ROUND_TO_ZERO: + roundingModeName = "to_zero"; + roundingCode = float_round_to_zero; + break; + case ROUND_DOWN: + roundingModeName = "down"; + roundingCode = float_round_down; + break; + case ROUND_UP: + roundingModeName = "up"; + roundingCode = float_round_up; + break; + } + float_rounding_mode = roundingCode; + switch ( tininessMode ) { + case 0: + tininessModeName = 0; + tininessCode = float_tininess_after_rounding; + break; + case TININESS_BEFORE_ROUNDING: + tininessModeName = "before"; + tininessCode = float_tininess_before_rounding; + break; + case TININESS_AFTER_ROUNDING: + tininessModeName = "after"; + tininessCode = float_tininess_after_rounding; + break; + } + float_detect_tininess = tininessCode; + switch ( functionCode ) { + case INT32_TO_FLOAT32: + time_a_int32_z_float32( int32_to_float32 ); + break; + case INT32_TO_FLOAT64: + time_a_int32_z_float64( int32_to_float64 ); + break; + case FLOAT32_TO_INT32: + time_a_float32_z_int32( float32_to_int32 ); + break; + case FLOAT32_TO_INT32_ROUND_TO_ZERO: + time_a_float32_z_int32( float32_to_int32_round_to_zero ); + break; + case FLOAT32_TO_FLOAT64: + time_a_float32_z_float64( float32_to_float64 ); + break; + case FLOAT32_ROUND_TO_INT: + time_az_float32( float32_round_to_int ); + break; + case FLOAT32_ADD: + time_abz_float32( float32_add ); + break; + case FLOAT32_SUB: + time_abz_float32( float32_sub ); + break; + case FLOAT32_MUL: + time_abz_float32( float32_mul ); + break; + case FLOAT32_DIV: + time_abz_float32( float32_div ); + break; + case FLOAT32_REM: + time_abz_float32( float32_rem ); + break; + case FLOAT32_SQRT: + time_az_float32_pos( float32_sqrt ); + break; + case FLOAT32_EQ: + time_ab_float32_z_flag( float32_eq ); + break; + case FLOAT32_LE: + time_ab_float32_z_flag( float32_le ); + break; + case FLOAT32_LT: + time_ab_float32_z_flag( float32_lt ); + break; + case FLOAT32_EQ_SIGNALING: + time_ab_float32_z_flag( float32_eq_signaling ); + break; + case FLOAT32_LE_QUIET: + time_ab_float32_z_flag( float32_le_quiet ); + break; + case FLOAT32_LT_QUIET: + time_ab_float32_z_flag( float32_lt_quiet ); + break; + case FLOAT64_TO_INT32: + time_a_float64_z_int32( float64_to_int32 ); + break; + case FLOAT64_TO_INT32_ROUND_TO_ZERO: + time_a_float64_z_int32( float64_to_int32_round_to_zero ); + break; + case FLOAT64_TO_FLOAT32: + time_a_float64_z_float32( float64_to_float32 ); + break; + case FLOAT64_ROUND_TO_INT: + time_az_float64( float64_round_to_int ); + break; + case FLOAT64_ADD: + time_abz_float64( float64_add ); + break; + case FLOAT64_SUB: + time_abz_float64( float64_sub ); + break; + case FLOAT64_MUL: + time_abz_float64( float64_mul ); + break; + case FLOAT64_DIV: + time_abz_float64( float64_div ); + break; + case FLOAT64_REM: + time_abz_float64( float64_rem ); + break; + case FLOAT64_SQRT: + time_az_float64_pos( float64_sqrt ); + break; + case FLOAT64_EQ: + time_ab_float64_z_flag( float64_eq ); + break; + case FLOAT64_LE: + time_ab_float64_z_flag( float64_le ); + break; + case FLOAT64_LT: + time_ab_float64_z_flag( float64_lt ); + break; + case FLOAT64_EQ_SIGNALING: + time_ab_float64_z_flag( float64_eq_signaling ); + break; + case FLOAT64_LE_QUIET: + time_ab_float64_z_flag( float64_le_quiet ); + break; + case FLOAT64_LT_QUIET: + time_ab_float64_z_flag( float64_lt_quiet ); + break; + } + +} + +static void + timeFunction( uint8 functionCode, int8 roundingModeIn, int8 tininessModeIn ) +{ + int8 roundingMode, tininessMode; + + for ( roundingMode = 1; + roundingMode < NUM_ROUNDINGMODES; + ++roundingMode + ) { + if ( ! functions[ functionCode ].roundingMode ) { + roundingMode = 0; + } + else if ( roundingModeIn ) { + roundingMode = roundingModeIn; + } + for ( tininessMode = 1; + tininessMode < NUM_TININESSMODES; + ++tininessMode + ) { + if ( ! functions[ functionCode ].tininessMode ) { + tininessMode = 0; + } + else if ( tininessModeIn ) { + tininessMode = tininessModeIn; + } + timeFunctionVariety( functionCode, roundingMode, tininessMode ); + if ( tininessModeIn || ! tininessMode ) break; + } + if ( roundingModeIn || ! roundingMode ) break; + } + +} + +main( int argc, char **argv ) +{ + char *argPtr; + flag functionArgument; + uint8 functionCode; + int8 operands, roundingMode, tininessMode; + + if ( argc <= 1 ) goto writeHelpMessage; + functionArgument = FALSE; + functionCode = 0; + operands = 0; + roundingMode = 0; + tininessMode = 0; + --argc; + ++argv; + while ( argc && ( argPtr = argv[ 0 ] ) ) { + if ( argPtr[ 0 ] == '-' ) ++argPtr; + if ( strcmp( argPtr, "help" ) == 0 ) { + writeHelpMessage: + fputs( +"timesoftfloat [

    + [,second condition...etc.] + + Value should be unsigned integer, hex(with a 0x prefix) or + base-10. + + Operations: + >= + <= + > + < + == + != + & // Result of AND between two values is nonzero + !& // Result of AND between two values is zero + ^ // same, XOR + !^ + | // same, OR + !| + + Full example: + + 2 L 0xADDE == 0xDEAD, 1 L 0xC000 == 0xA0 + +*/ + +static bool TestConditions(const char *string) +{ + char address[64]; + char operation[64]; + char value[64]; + char endian; + unsigned int bytelen; + bool passed = 1; + + //printf("TR: %s\n", string); + while(trio_sscanf(string, "%u %c %.63s %.63s %.63s", &bytelen, &endian, address, operation, value) == 5 && passed) + { + uint32 v_address; + uint64 v_value; + uint64 value_at_address; + + if(address[0] == '0' && address[1] == 'x') + v_address = strtoul(address + 2, NULL, 16); + else + v_address = strtoul(address, NULL, 10); + + if(value[0] == '0' && value[1] == 'x') + v_value = strtoull(value + 2, NULL, 16); + else + v_value = strtoull(value, NULL, 0); + + value_at_address = 0; + for(unsigned int x = 0; x < bytelen; x++) + { + unsigned int shiftie; + + if(endian == 'B') + shiftie = (bytelen - 1 - x) * 8; + else + shiftie = x * 8; + value_at_address |= MDFNGameInfo->MemRead(v_address + x) << shiftie; + } + + //printf("A: %08x, V: %08llx, VA: %08llx, OP: %s\n", v_address, v_value, value_at_address, operation); + if(!strcmp(operation, ">=")) + { + if(!(value_at_address >= v_value)) + passed = 0; + } + else if(!strcmp(operation, "<=")) + { + if(!(value_at_address <= v_value)) + passed = 0; + } + else if(!strcmp(operation, ">")) + { + if(!(value_at_address > v_value)) + passed = 0; + } + else if(!strcmp(operation, "<")) + { + if(!(value_at_address < v_value)) + passed = 0; + } + else if(!strcmp(operation, "==")) + { + if(!(value_at_address == v_value)) + passed = 0; + } + else if(!strcmp(operation, "!=")) + { + if(!(value_at_address != v_value)) + passed = 0; + } + else if(!strcmp(operation, "&")) + { + if(!(value_at_address & v_value)) + passed = 0; + } + else if(!strcmp(operation, "!&")) + { + if(value_at_address & v_value) + passed = 0; + } + else if(!strcmp(operation, "^")) + { + if(!(value_at_address ^ v_value)) + passed = 0; + } + else if(!strcmp(operation, "!^")) + { + if(value_at_address ^ v_value) + passed = 0; + } + else if(!strcmp(operation, "|")) + { + if(!(value_at_address | v_value)) + passed = 0; + } + else if(!strcmp(operation, "!|")) + { + if(value_at_address | v_value) + passed = 0; + } + else + puts("Invalid operation"); + string = strchr(string, ','); + if(string == NULL) + break; + else + string++; + //printf("Foo: %s\n", string); + } + + return(passed); +} + +void MDFNMP_ApplyPeriodicCheats(void) +{ + std::vector::iterator chit; + + + if(!CheatsActive) + return; + + //TestConditions("2 L 0x1F00F5 == 0xDEAD"); + //if(TestConditions("1 L 0x1F0058 > 0")) //, 1 L 0xC000 == 0x01")); + for(chit = cheats.begin(); chit != cheats.end(); chit++) + { + if(chit->status && chit->type == 'R') + { + if(!chit->conditions || TestConditions(chit->conditions)) + for(unsigned int x = 0; x < chit->length; x++) + { + uint32 page = ((chit->addr + x) / PageSize) % NumPages; + if(RAMPtrs[page]) + { + uint64 tmpval = chit->val; + + if(chit->bigendian) + tmpval >>= (chit->length - 1 - x) * 8; + else + tmpval >>= x * 8; + + RAMPtrs[page][(chit->addr + x) % PageSize] = tmpval; + } + } + } + } +} + + +void MDFNI_ListCheats(int (*callb)(char *name, uint32 a, uint64 v, uint64 compare, int s, char type, unsigned int length, bool bigendian, void *data), void *data) +{ + std::vector::iterator chit; + + for(chit = cheats.begin(); chit != cheats.end(); chit++) + { + if(!callb(chit->name, chit->addr, chit->val, chit->compare, chit->status, chit->type, chit->length, chit->bigendian, data)) break; + } +} + +int MDFNI_GetCheat(uint32 which, char **name, uint32 *a, uint64 *v, uint64 *compare, int *s, char *type, unsigned int *length, bool *bigendian) +{ + CHEATF *next = &cheats[which]; + + if(name) + *name=next->name; + if(a) + *a=next->addr; + if(v) + *v=next->val; + if(s) + *s=next->status; + if(compare) + *compare=next->compare; + if(type) + *type=next->type; + if(length) + *length = next->length; + if(bigendian) + *bigendian = next->bigendian; + return(1); +} + +static uint8 CharToNibble(char thechar) +{ + const char lut[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + + thechar = toupper(thechar); + + for(int x = 0; x < 16; x++) + if(lut[x] == thechar) + return(x); + + return(0xFF); +} + +bool MDFNI_DecodeGBGG(const char *instr, uint32 *a, uint8 *v, uint8 *c, char *type) +{ + char str[10]; + int len; + + for(int x = 0; x < 9; x++) + { + while(*instr && CharToNibble(*instr) == 255) + instr++; + if(!(str[x] = *instr)) break; + instr++; + } + str[9] = 0; + + len = strlen(str); + + if(len != 9 && len != 6) + return(0); + + uint32 tmp_address; + uint8 tmp_value; + uint8 tmp_compare = 0; + + tmp_address = (CharToNibble(str[5]) << 12) | (CharToNibble(str[2]) << 8) | (CharToNibble(str[3]) << 4) | (CharToNibble(str[4]) << 0); + tmp_address ^= 0xF000; + tmp_value = (CharToNibble(str[0]) << 4) | (CharToNibble(str[1]) << 0); + + if(len == 9) + { + tmp_compare = (CharToNibble(str[6]) << 4) | (CharToNibble(str[8]) << 0); + tmp_compare = (tmp_compare >> 2) | ((tmp_compare << 6) & 0xC0); + tmp_compare ^= 0xBA; + } + + *a = tmp_address; + *v = tmp_value; + + if(len == 9) + { + *c = tmp_compare; + *type = 'C'; + } + else + { + *c = 0; + *type = 'S'; + } + + return(1); +} + +static int GGtobin(char c) +{ + static char lets[16]={'A','P','Z','L','G','I','T','Y','E','O','X','U','K','S','V','N'}; + int x; + + for(x=0;x<16;x++) + if(lets[x] == toupper(c)) return(x); + return(0); +} + +/* Returns 1 on success, 0 on failure. Sets *a,*v,*c. */ +int MDFNI_DecodeGG(const char *str, uint32 *a, uint8 *v, uint8 *c, char *type) +{ + uint16 A; + uint8 V,C; + uint8 t; + int s; + + A=0x8000; + V=0; + C=0; + + s=strlen(str); + if(s!=6 && s!=8) return(0); + + t=GGtobin(*str++); + V|=(t&0x07); + V|=(t&0x08)<<4; + + t=GGtobin(*str++); + V|=(t&0x07)<<4; + A|=(t&0x08)<<4; + + t=GGtobin(*str++); + A|=(t&0x07)<<4; + //if(t&0x08) return(0); /* 8-character code?! */ + + t=GGtobin(*str++); + A|=(t&0x07)<<12; + A|=(t&0x08); + + t=GGtobin(*str++); + A|=(t&0x07); + A|=(t&0x08)<<8; + + if(s==6) + { + t=GGtobin(*str++); + A|=(t&0x07)<<8; + V|=(t&0x08); + + *a=A; + *v=V; + *type = 'S'; + *c = 0; + return(1); + } + else + { + t=GGtobin(*str++); + A|=(t&0x07)<<8; + C|=(t&0x08); + + t=GGtobin(*str++); + C|=(t&0x07); + C|=(t&0x08)<<4; + + t=GGtobin(*str++); + C|=(t&0x07)<<4; + V|=(t&0x08); + *a=A; + *v=V; + *c=C; + *type = 'C'; + return(1); + } + return(0); +} + +int MDFNI_DecodePAR(const char *str, uint32 *a, uint8 *v, uint8 *c, char *type) +{ + int boo[4]; + if(strlen(str)!=8) return(0); + + trio_sscanf(str,"%02x%02x%02x%02x",boo,boo+1,boo+2,boo+3); + + *c = 0; + + if(1) + { + *a=(boo[3]<<8)|(boo[2]+0x7F); + *v=0; + } + else + { + *v=boo[3]; + *a=boo[2]|(boo[1]<<8); + } + + *type = 'S'; + return(1); +} + +/* name can be NULL if the name isn't going to be changed. */ +int MDFNI_SetCheat(uint32 which, const char *name, uint32 a, uint64 v, uint64 compare, int s, char type, unsigned int length, bool bigendian) +{ + CHEATF *next = &cheats[which]; + + if(name) + { + char *t; + + if((t=(char *)realloc(next->name,strlen(name+1)))) + { + next->name=t; + strcpy(next->name,name); + } + else + return(0); + } + next->addr=a; + next->val=v; + next->status=s; + next->compare=compare; + next->type=type; + next->length = length; + next->bigendian = bigendian; + + RebuildSubCheats(); + savecheats=1; + + return(1); +} + +/* Convenience function. */ +int MDFNI_ToggleCheat(uint32 which) +{ + cheats[which].status = !cheats[which].status; + savecheats = 1; + RebuildSubCheats(); + + return(cheats[which].status); +} + +void MDFNI_CheatSearchSetCurrentAsOriginal(void) +{ + for(uint32 page = 0; page < NumPages; page++) + { + if(CheatComp[page]) + { + for(uint32 addr = 0; addr < PageSize; addr++) + { + if(!CheatComp[page][addr].excluded) + { + CheatComp[page][addr].value = RAMPtrs[page][addr]; + } + } + } + } +} + +void MDFNI_CheatSearchShowExcluded(void) +{ + for(uint32 page = 0; page < NumPages; page++) + { + if(CheatComp[page]) + { + for(uint32 addr = 0; addr < PageSize; addr++) + { + CheatComp[page][addr].excluded = 0; + } + } + } +} + + +int32 MDFNI_CheatSearchGetCount(void) +{ + uint32 count = 0; + + for(uint32 page = 0; page < NumPages; page++) + { + if(CheatComp[page]) + { + for(uint32 addr = 0; addr < PageSize; addr++) + { + if(!CheatComp[page][addr].excluded) + count++; + } + } + } + return count; +} + +/* This function will give the initial value of the search and the current value at a location. */ + +void MDFNI_CheatSearchGet(int (*callb)(uint32 a, uint64 last, uint64 current, void *data), void *data) +{ + for(uint32 page = 0; page < NumPages; page++) + { + if(CheatComp[page]) + { + for(uint32 addr = 0; addr < PageSize; addr++) + { + if(!CheatComp[page][addr].excluded) + { + uint64 ccval; + uint64 ramval; + + ccval = ramval = 0; + for(unsigned int x = 0; x < resultsbytelen; x++) + { + uint32 curpage = (page + (addr + x) / PageSize) % NumPages; + if(CheatComp[curpage]) + { + unsigned int shiftie; + + if(resultsbigendian) + shiftie = (resultsbytelen - 1 - x) * 8; + else + shiftie = x * 8; + ccval |= CheatComp[curpage][(addr + x) % PageSize].value << shiftie; + ramval |= RAMPtrs[curpage][(addr + x) % PageSize] << shiftie; + } + } + + if(!callb(page * PageSize + addr, ccval, ramval, data)) + return; + } + } + } + } +} + +void MDFNI_CheatSearchBegin(void) +{ + resultsbytelen = 1; + resultsbigendian = 0; + + for(uint32 page = 0; page < NumPages; page++) + { + if(RAMPtrs[page]) + { + if(!CheatComp[page]) + CheatComp[page] = (CompareStruct *)calloc(PageSize, sizeof(CompareStruct)); + + for(uint32 addr = 0; addr < PageSize; addr++) + { + CheatComp[page][addr].excluded = 0; + CheatComp[page][addr].value = RAMPtrs[page][addr]; + } + } + } +} + + +static uint64 INLINE CAbs(uint64 x) +{ + if(x < 0) + return(0 - x); + return x; +} + +void MDFNI_CheatSearchEnd(int type, uint64 v1, uint64 v2, unsigned int bytelen, bool bigendian) +{ + v1 &= (~0ULL) >> (8 - bytelen); + v2 &= (~0ULL) >> (8 - bytelen); + + resultsbytelen = bytelen; + resultsbigendian = bigendian; + + for(uint32 page = 0; page < NumPages; page++) + { + if(CheatComp[page]) + { + for(uint32 addr = 0; addr < PageSize; addr++) + { + if(!CheatComp[page][addr].excluded) + { + bool doexclude = 0; + uint64 ccval; + uint64 ramval; + + ccval = ramval = 0; + for(unsigned int x = 0; x < bytelen; x++) + { + uint32 curpage = (page + (addr + x) / PageSize) % NumPages; + if(CheatComp[curpage]) + { + unsigned int shiftie; + + if(bigendian) + shiftie = (bytelen - 1 - x) * 8; + else + shiftie = x * 8; + ccval |= CheatComp[curpage][(addr + x) % PageSize].value << shiftie; + ramval |= RAMPtrs[curpage][(addr + x) % PageSize] << shiftie; + } + } + + switch(type) + { + case 0: // Change to a specific value. + if(!(ccval == v1 && ramval == v2)) + doexclude = 1; + break; + + case 1: // Search for relative change(between values). + if(!(ccval == v1 && CAbs(ccval - ramval) == v2)) + doexclude = 1; + break; + + case 2: // Purely relative change. + if(!(CAbs(ccval - ramval) == v2)) + doexclude = 1; + break; + case 3: // Any change + if(!(ccval != ramval)) + doexclude = 1; + break; + case 4: // Value decreased + if(ramval >= ccval) + doexclude = 1; + break; + case 5: // Value increased + if(ramval <= ccval) + doexclude = 1; + break; + } + if(doexclude) + CheatComp[page][addr].excluded = TRUE; + } + } + } + } + + if(type >= 4) + MDFNI_CheatSearchSetCurrentAsOriginal(); +} + +static void SettingChanged(const char *name) +{ + MDFNMP_RemoveReadPatches(); + + CheatsActive = MDFN_GetSettingB("cheats"); + + RebuildSubCheats(); + + MDFNMP_InstallReadPatches(); +} + + +MDFNSetting MDFNMP_Settings[] = +{ + { "cheats", MDFNSF_NOFLAGS, "Enable cheats.", NULL, MDFNST_BOOL, "1", NULL, NULL, NULL, SettingChanged }, + { NULL} +}; diff --git a/libmednahawk/src/mempatcher.h b/libmednahawk/src/mempatcher.h new file mode 100644 index 0000000000..2e073a5546 --- /dev/null +++ b/libmednahawk/src/mempatcher.h @@ -0,0 +1,29 @@ +#ifndef __MDFN_MEMPATCHER_H +#define __MDFN_MEMPATCHER_H + +#include "mempatcher-driver.h" +#include + +typedef struct __SUBCHEAT +{ + uint32 addr; + uint8 value; + int compare; // < 0 on no compare +} SUBCHEAT; + +extern std::vector SubCheats[8]; +extern bool SubCheatsOn; + +bool MDFNMP_Init(uint32 ps, uint32 numpages); +void MDFNMP_AddRAM(uint32 size, uint32 address, uint8 *RAM); +void MDFNMP_Kill(void); + + +void MDFNMP_InstallReadPatches(void); +void MDFNMP_RemoveReadPatches(void); + +void MDFNMP_ApplyPeriodicCheats(void); + +extern MDFNSetting MDFNMP_Settings[]; + +#endif diff --git a/libmednahawk/src/movie-driver.h b/libmednahawk/src/movie-driver.h new file mode 100644 index 0000000000..05c1b92242 --- /dev/null +++ b/libmednahawk/src/movie-driver.h @@ -0,0 +1,6 @@ + +void MDFNI_SelectMovie(int); + +void MDFNI_SaveMovie(char *fname, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths); +void MDFNI_LoadMovie(char *fname); + diff --git a/libmednahawk/src/movie.cpp b/libmednahawk/src/movie.cpp new file mode 100644 index 0000000000..035bc59496 --- /dev/null +++ b/libmednahawk/src/movie.cpp @@ -0,0 +1,355 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" + +#include +#include +#include +#include + +//#include //zero 07-feb-2012 +#include + +#include "driver.h" +#include "state.h" +#include "general.h" +#include "video.h" +#include "netplay.h" +#include "movie.h" + +static int current = 0; // > 0 for recording, < 0 for playback +static gzFile slots[10]={0}; + +static int CurrentMovie = 0; +static int RecentlySavedMovie = -1; +static int MovieStatus[10]; +static StateMem RewindBuffer; + +bool MDFNMOV_IsPlaying(void) +{ + if(current < 0) return(1); + else return(0); +} + +bool MDFNMOV_IsRecording(void) +{ + if(current > 0) return(1); + else return(0); +} + +static void StopRecording(void) +{ + MDFNMOV_RecordState(); + if(MDFN_StateEvilIsRunning()) + { + MDFN_StateEvilFlushMovieLove(); + } + gzclose(slots[current-1]); + MovieStatus[current - 1] = 1; + RecentlySavedMovie = current - 1; + current=0; + MDFN_DispMessage(_("Movie recording stopped.")); + + if(RewindBuffer.data) + { + //puts("Oops"); + free(RewindBuffer.data); + RewindBuffer.data = NULL; + } +} + +void MDFNI_SaveMovie(char *fname, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths) +{ + gzFile fp; + + if(!MDFNGameInfo->StateAction) + return; + + if(MDFNnetplay && (MDFNGameInfo->SaveStateAltersState == true)) + { + char sb[256]; + trio_snprintf(sb, sizeof(sb), _("Module %s is not compatible with manual movie save starting/stopping during netplay."), MDFNGameInfo->shortname); + MDFND_NetplayText((const uint8*)sb, false); + return; + } + + if(current < 0) /* Can't interrupt playback.*/ + return; + + if(current > 0) /* Stop saving. */ + { + StopRecording(); + return; + } + + memset(&RewindBuffer, 0, sizeof(StateMem)); + RewindBuffer.initial_malloc = 16; + + current = CurrentMovie; + + if(fname) + fp = gzopen(fname, "wb3"); + else + { + fp=gzopen(MDFN_MakeFName(MDFNMKF_MOVIE,CurrentMovie,0).c_str(),"wb3"); + } + + if(!fp) return; + + MDFNSS_SaveFP(fp, surface, DisplayRect, LineWidths); + gzseek(fp, 0, SEEK_END); + gzflush(fp, Z_SYNC_FLUSH); // Flush output so that previews will still work right while + // the movie is being recorded. Purely cosmetic. :) + slots[current] = fp; + current++; + MDFN_DispMessage(_("Movie recording started.")); +} + +static void StopPlayback(void) +{ + if(RewindBuffer.data) + { + RewindBuffer.data = NULL; + } + + gzclose(slots[-1 - current]); + current=0; + MDFN_DispMessage(_("Movie playback stopped.")); +} + +void MDFNMOV_Stop(void) +{ + if(current < 0) StopPlayback(); + if(current > 0) StopRecording(); +} + +void MDFNI_LoadMovie(char *fname) +{ + gzFile fp; + //puts("KAO"); + + if(current > 0) /* Can't interrupt recording.*/ + return; + + //zero 07-feb-2012 - no netplay + //if(MDFNnetplay) /* Playback is UNPOSSIBLE during netplay. */ + //{ + // MDFN_DispMessage(_("Can't play movies during netplay.")); + // return; + //} + + if(current < 0) /* Stop playback. */ + { + StopPlayback(); + return; + } + + if(fname) + fp = gzopen(fname, "rb"); + else + { + fp=gzopen(MDFN_MakeFName(MDFNMKF_MOVIE,CurrentMovie,0).c_str(),"rb"); + } + + if(!fp) return; + + if(!MDFNSS_LoadFP(fp)) + { + MDFN_DispMessage(_("Error loading state portion of the movie.")); + return; + } + current = CurrentMovie; + slots[current] = fp; + + current = -1 - current; + MovieStatus[CurrentMovie] = 1; + + MDFN_DispMessage(_("Movie playback started.")); +} + +// Donuts are a tasty treat and delicious with powdered sugar. +void MDFNMOV_AddJoy(void *donutdata, uint32 donutlen) +{ + gzFile fp; + + if(!current) return; /* Not playback nor recording. */ + if(current < 0) /* Playback */ + { + int t; + + fp = slots[-1 - current]; + + while((t = gzgetc(fp)) >= 0 && t) + { + if(t == MDFNNPCMD_LOADSTATE) + { + uint32 len; + StateMem sm; + len = gzgetc(fp); + len |= gzgetc(fp) << 8; + len |= gzgetc(fp) << 16; + len |= gzgetc(fp) << 24; + if(len >= 5 * 1024 * 1024) // A sanity limit of 5MiB + { + StopPlayback(); + return; + } + memset(&sm, 0, sizeof(StateMem)); + sm.len = len; + sm.data = (uint8 *)malloc(len); + if(gzread(fp, sm.data, len) != len) + { + StopPlayback(); + return; + } + if(!MDFNSS_LoadSM(&sm, 0, 0)) + { + StopPlayback(); + return; + } + } + else + MDFN_DoSimpleCommand(t); + } + if(t < 0) + { + StopPlayback(); + return; + } + + if(gzread(fp, donutdata, donutlen) != donutlen) + { + StopPlayback(); + return; + } + } + else /* Recording */ + { + if(MDFN_StateEvilIsRunning()) + { + smem_putc(&RewindBuffer, 0); + smem_write(&RewindBuffer, donutdata, donutlen); + } + else + { + fp = slots[current - 1]; + gzputc(fp, 0); + gzwrite(fp, donutdata, donutlen); + } + } +} + +void MDFNMOV_AddCommand(int cmd) +{ + if(current <= 0) return; /* Return if not recording a movie */ + + if(MDFN_StateEvilIsRunning()) + smem_putc(&RewindBuffer, 0); + else + gzputc(slots[current - 1], cmd); +} + +void MDFNMOV_RecordState(void) +{ + gzFile fp = slots[current - 1]; + StateMem sm; + + memset(&sm, 0, sizeof(StateMem)); + MDFNSS_SaveSM(&sm, 0, 0); + + if(MDFN_StateEvilIsRunning()) + { + smem_putc(&RewindBuffer, MDFNNPCMD_LOADSTATE); + smem_putc(&RewindBuffer, sm.len & 0xFF); + smem_putc(&RewindBuffer, (sm.len >> 8) & 0xFF); + smem_putc(&RewindBuffer, (sm.len >> 16) & 0xFF); + smem_putc(&RewindBuffer, (sm.len >> 24) & 0xFF); + smem_write(&RewindBuffer, sm.data, sm.len); + } + else + { + gzputc(fp, MDFNNPCMD_LOADSTATE); + gzputc(fp, sm.len & 0xFF); + gzputc(fp, (sm.len >> 8) & 0xFF); + gzputc(fp, (sm.len >> 16) & 0xFF); + gzputc(fp, (sm.len >> 24) & 0xFF); + gzwrite(slots[current - 1], sm.data, sm.len); + } + free(sm.data); +} + +void MDFNMOV_ForceRecord(StateMem *sm) +{ + //printf("Farced: %d\n", sm->len); + gzwrite(slots[current - 1], sm->data, sm->len); +} + +StateMem MDFNMOV_GrabRewindJoy(void) +{ + StateMem ret = RewindBuffer; + memset(&RewindBuffer, 0, sizeof(StateMem)); + RewindBuffer.initial_malloc = 16; + return(ret); +} + +void MDFNMOV_CheckMovies(void) +{ + time_t last_time = 0; + + for(int ssel = 0; ssel < 10; ssel++) + { + struct stat stat_buf; + + MovieStatus[ssel] = 0; + if(stat(MDFN_MakeFName(MDFNMKF_MOVIE, ssel, 0).c_str(), &stat_buf) == 0) + { + MovieStatus[ssel] = 1; + if(stat_buf.st_mtime > last_time) + { + RecentlySavedMovie = ssel; + last_time = stat_buf.st_mtime; + } + } + } + CurrentMovie = 0; +} + +void MDFNI_SelectMovie(int w) +{ + StateStatusStruct *status = NULL; + + if(w == -1) + { + return; + } + MDFNI_SelectState(-1); + + CurrentMovie = w; + MDFN_ResetMessages(); + + status = (StateStatusStruct*)MDFN_calloc(1, sizeof(StateStatusStruct), _("Movie status")); + + memcpy(status->status, MovieStatus, 10 * sizeof(int)); + status->current = CurrentMovie; + status->current_movie = current; + status->recently_saved = RecentlySavedMovie; + + MDFNSS_GetStateInfo(MDFN_MakeFName(MDFNMKF_MOVIE,CurrentMovie,NULL).c_str(), status); + MDFND_SetMovieStatus(status); +} + diff --git a/libmednahawk/src/movie.h b/libmednahawk/src/movie.h new file mode 100644 index 0000000000..6f300249d1 --- /dev/null +++ b/libmednahawk/src/movie.h @@ -0,0 +1,17 @@ +#ifndef _MOVIE_H +#define _MOVIE_H + +void MDFNI_SelectMovie(int); + +#include "movie-driver.h" +#include "state.h" +void MDFNMOV_AddJoy(void *donutdata, uint32 donutlen); +void MDFNMOV_CheckMovies(void); +void MDFNMOV_Stop(void); +void MDFNMOV_AddCommand(int cmd); +bool MDFNMOV_IsPlaying(void); +bool MDFNMOV_IsRecording(void); +void MDFNMOV_ForceRecord(StateMem *sm); +StateMem MDFNMOV_GrabRewindJoy(void); +void MDFNMOV_RecordState(); +#endif diff --git a/libmednahawk/src/mpcdec/!VERSION b/libmednahawk/src/mpcdec/!VERSION new file mode 100644 index 0000000000..829d24c2c8 --- /dev/null +++ b/libmednahawk/src/mpcdec/!VERSION @@ -0,0 +1,13 @@ +libmpcdec from r475 + +perl -p -i -e "s/include ]*)>/include \"\1\"/" *.c *.h + +Added + +#ifdef HAVE_CONFIG_H +#include +#endif + +to: + +mpc_types.h diff --git a/libmednahawk/src/mpcdec/AUTHORS b/libmednahawk/src/mpcdec/AUTHORS new file mode 100644 index 0000000000..58a228f5b9 --- /dev/null +++ b/libmednahawk/src/mpcdec/AUTHORS @@ -0,0 +1,10 @@ +libmpcdec is the result of the work of many people: + +* Andree Buschmann and Frank Klemm + Original implementation and core development. + +* Peter Pawlowski and Benoit Amiaux + Portability and further optimizations. + +* Miles Egan + Port to pure C, documentation, and api refinements. diff --git a/libmednahawk/src/mpcdec/CMakeLists.txt b/libmednahawk/src/mpcdec/CMakeLists.txt new file mode 100644 index 0000000000..be69528b21 --- /dev/null +++ b/libmednahawk/src/mpcdec/CMakeLists.txt @@ -0,0 +1,7 @@ +include_directories(${libmpc_SOURCE_DIR}/include) +if(SHARED) + add_library(mpcdec SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) +else(SHARED) + add_library(mpcdec_static STATIC huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) +endif(SHARED) + diff --git a/libmednahawk/src/mpcdec/COPYING b/libmednahawk/src/mpcdec/COPYING new file mode 100644 index 0000000000..e3ef1a9262 --- /dev/null +++ b/libmednahawk/src/mpcdec/COPYING @@ -0,0 +1,31 @@ +Copyright (c) 2005, The Musepack Development Team +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libmednahawk/src/mpcdec/ChangeLog b/libmednahawk/src/mpcdec/ChangeLog new file mode 100644 index 0000000000..622cb15b70 --- /dev/null +++ b/libmednahawk/src/mpcdec/ChangeLog @@ -0,0 +1,40 @@ +1.3.0 + * first sv8 release + * major changes in the API (decoder and demuxer are split) + +1.2.3 + * Reduced memory usage and code size. Patch by Peter Pawlowski + +1.2.2 + * Fixed compilation under OpenBSD + * Unix EOF again + +1.2.1 + * Warnings cleanup, patch by Tomas Salfischberger, Thom Johansen and + Daniel Stenberg (Rockbox) + * Mplayer interface, patch by Reimar Doffinger + * Unix EOF everywhere + +1.2 + * 1.1.1 broke the API (BOOL type changed to mpc_bool_t). Version bumped to 1.2 to reflect the major change. Sorry to those who were caught by this error + * Fixed relative/absolute includes (#include "stuff.h" in /include/mpcdec, #include in src/) + * Added msvc project files + * Changed mpc_reader_t structure, any specific data of the reader's + implementations should be hidden behind the (void*) data pointer. (example + in default implementation mpc_reader_file) + * Renamed to libmpcdec (to make room for libmpcenc) + +1.1.1 + * fix for fixed-point mode bug + +1.1 + * add compliance & cleanup patches from Michael Roitzsch of xine project + * switch to BSD license + * port to pure C + * add doxygen documentation + * revise API somewhat + +1.0.3 + * autotools build process + * sample binary added + * floating-point mode by default diff --git a/libmednahawk/src/mpcdec/Makefile.am b/libmednahawk/src/mpcdec/Makefile.am new file mode 100644 index 0000000000..445c9acf9f --- /dev/null +++ b/libmednahawk/src/mpcdec/Makefile.am @@ -0,0 +1,9 @@ +DEFS = @DEFS@ @CFLAG_VISIBILITY@ + +noinst_LIBRARIES = libmpcdec.a + +libmpcdec_a_SOURCES = huffman.c mpc_decoder.c mpc_reader.c \ + requant.c streaminfo.c synth_filter.c mpc_bits_reader.c mpc_demux.c \ + mpc_bits_reader.h huffman.h decoder.h internal.h requant.h mpcdec_math.h \ + crc32.c huffman-bcl.c + diff --git a/libmednahawk/src/mpcdec/Makefile.in b/libmednahawk/src/mpcdec/Makefile.in new file mode 100644 index 0000000000..47ed8a0aa7 --- /dev/null +++ b/libmednahawk/src/mpcdec/Makefile.in @@ -0,0 +1,609 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/mpcdec +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + AUTHORS COPYING ChangeLog +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libmpcdec_a_AR = $(AR) $(ARFLAGS) +libmpcdec_a_LIBADD = +am_libmpcdec_a_OBJECTS = huffman.$(OBJEXT) mpc_decoder.$(OBJEXT) \ + mpc_reader.$(OBJEXT) requant.$(OBJEXT) streaminfo.$(OBJEXT) \ + synth_filter.$(OBJEXT) mpc_bits_reader.$(OBJEXT) \ + mpc_demux.$(OBJEXT) crc32.$(OBJEXT) huffman-bcl.$(OBJEXT) +libmpcdec_a_OBJECTS = $(am_libmpcdec_a_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libmpcdec_a_SOURCES) +DIST_SOURCES = $(libmpcdec_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ @CFLAG_VISIBILITY@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LIBRARIES = libmpcdec.a +libmpcdec_a_SOURCES = huffman.c mpc_decoder.c mpc_reader.c \ + requant.c streaminfo.c synth_filter.c mpc_bits_reader.c mpc_demux.c \ + mpc_bits_reader.h huffman.h decoder.h internal.h requant.h mpcdec_math.h \ + crc32.c huffman-bcl.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/mpcdec/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/mpcdec/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libmpcdec.a: $(libmpcdec_a_OBJECTS) $(libmpcdec_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmpcdec.a + $(AM_V_AR)$(libmpcdec_a_AR) libmpcdec.a $(libmpcdec_a_OBJECTS) $(libmpcdec_a_LIBADD) + $(AM_V_at)$(RANLIB) libmpcdec.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huffman-bcl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huffman.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpc_bits_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpc_decoder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpc_demux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpc_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/requant.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/streaminfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synth_filter.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/mpcdec/README b/libmednahawk/src/mpcdec/README new file mode 100644 index 0000000000..cadf930ea5 --- /dev/null +++ b/libmednahawk/src/mpcdec/README @@ -0,0 +1,6 @@ +Musepack Decoder Library: + +run "./configure [--prefix=/usr]; make" + +To create a sample app using the musepack decoder library +Check ../mpcdec/mpcdec.c and ../include/mpc/mpcdec.h for more details. diff --git a/libmednahawk/src/mpcdec/crc32.c b/libmednahawk/src/mpcdec/crc32.c new file mode 100644 index 0000000000..77c85f5b6a --- /dev/null +++ b/libmednahawk/src/mpcdec/crc32.c @@ -0,0 +1,56 @@ +/* +* C Implementation: crc32 +* +* code from http://www.w3.org/TR/PNG/#D-CRCAppendix +* +*/ + +/* Table of CRCs of all 8-bit messages. */ +static unsigned long crc_table[256]; + +/* Flag: has the table been computed? Initially false. */ +static int crc_table_computed = 0; + +/* Make the table for a fast CRC. */ +static void make_crc_table(void) +{ + unsigned long c; + int n, k; + + for (n = 0; n < 256; n++) { + c = (unsigned long) n; + for (k = 0; k < 8; k++) { + if (c & 1) + c = 0xedb88320L ^ (c >> 1); + else + c = c >> 1; + } + crc_table[n] = c; + } + crc_table_computed = 1; +} + + +/* Update a running CRC with the bytes buf[0..len-1]--the CRC + should be initialized to all 1's, and the transmitted value + is the 1's complement of the final running CRC (see the + crc() routine below). */ + +static unsigned long update_crc(unsigned long crc, unsigned char *buf, int len) +{ + unsigned long c = crc; + int n; + + if (!crc_table_computed) + make_crc_table(); + for (n = 0; n < len; n++) { + c = crc_table[(c ^ buf[n]) & 0xff] ^ (c >> 8); + } + return c; +} + +/* Return the CRC of the bytes buf[0..len-1]. */ +unsigned long mpc_crc32(unsigned char *buf, int len) +{ + return update_crc(0xffffffffL, buf, len) ^ 0xffffffffL; +} diff --git a/libmednahawk/src/mpcdec/datatypes.h b/libmednahawk/src/mpcdec/datatypes.h new file mode 100644 index 0000000000..9a86c0b6e7 --- /dev/null +++ b/libmednahawk/src/mpcdec/datatypes.h @@ -0,0 +1,38 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +// mpcenc.h +#define CENTER 448 // offset for centering current data in Main-array +#define BLOCK 1152 // blocksize +#define ANABUFFER (BLOCK + CENTER) // size of PCM-data array for analysis + + +typedef struct { + float L [36]; + float R [36]; +} SubbandFloatTyp; + +typedef struct { + float L [ANABUFFER]; + float R [ANABUFFER]; + float M [ANABUFFER]; + float S [ANABUFFER]; +} PCMDataTyp; + diff --git a/libmednahawk/src/mpcdec/decoder.h b/libmednahawk/src/mpcdec/decoder.h new file mode 100644 index 0000000000..8463877308 --- /dev/null +++ b/libmednahawk/src/mpcdec/decoder.h @@ -0,0 +1,102 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file decoder.h + +#ifndef _MPCDEC_DECODER_H_ +#define _MPCDEC_DECODER_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "reader.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEEKING_TABLE_SIZE 256u +// set it to SLOW_SEEKING_WINDOW to not use fast seeking +#define FAST_SEEKING_WINDOW 32 +// set it to FAST_SEEKING_WINDOW to only use fast seeking +#define SLOW_SEEKING_WINDOW 0x80000000 + +enum { + MPC_V_MEM = 2304, + MPC_DECODER_MEMSIZE = 16384, // overall buffer size +}; + +struct mpc_decoder_t { + /// @name internal state variables + //@{ + mpc_uint32_t stream_version; ///< Streamversion of stream + mpc_int32_t max_band; ///< Maximum band-index used in stream (0...31) + mpc_uint32_t ms; ///< Mid/side stereo (0: off, 1: on) + mpc_uint32_t channels; ///< Number of channels in stream + + mpc_uint64_t samples; ///< Number of samples in stream + + mpc_uint64_t decoded_samples; ///< Number of samples decoded from file begining + mpc_uint32_t samples_to_skip; ///< Number samples to skip (used for seeking) + mpc_int32_t last_max_band; ///< number of bands used in the last frame + + // randomizer state variables + mpc_uint32_t __r1; + mpc_uint32_t __r2; + + mpc_int32_t SCF_Index_L [32] [3]; + mpc_int32_t SCF_Index_R [32] [3]; // holds scalefactor-indices + mpc_quantizer Q [32]; // holds quantized samples + mpc_int32_t Res_L [32]; + mpc_int32_t Res_R [32]; // holds the chosen quantizer for each subband + mpc_bool_t DSCF_Flag_L [32]; + mpc_bool_t DSCF_Flag_R [32]; // differential SCF used? + mpc_int32_t SCFI_L [32]; + mpc_int32_t SCFI_R [32]; // describes order of transmitted SCF + mpc_bool_t MS_Flag[32]; // MS used? +#ifdef MPC_FIXED_POINT + mpc_uint8_t SCF_shift[256]; +#endif + + MPC_SAMPLE_FORMAT V_L[MPC_V_MEM + 960]; + MPC_SAMPLE_FORMAT V_R[MPC_V_MEM + 960]; + MPC_SAMPLE_FORMAT Y_L[36][32]; + MPC_SAMPLE_FORMAT Y_R[36][32]; + MPC_SAMPLE_FORMAT SCF[256]; ///< holds adapted scalefactors (for clipping prevention) + //@} +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/fastmath.c b/libmednahawk/src/mpcdec/fastmath.c new file mode 100644 index 0000000000..ebad7d3bad --- /dev/null +++ b/libmednahawk/src/mpcdec/fastmath.c @@ -0,0 +1,77 @@ +/* + * Musepack audio compression + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mpc/mpcmath.h" + +#ifdef FAST_MATH + +const float tabatan2 [ 2*TABSTEP+1] [2]; +const float tabcos [26*TABSTEP+1] [2]; +const float tabsqrt_ex [256]; +const float tabsqrt_m [ TABSTEP+1] [2]; + + +void Init_FastMath ( void ) +{ + int i; mpc_floatint X, Y; double xm, x0, xp, x, y; float* p; + + p = (float*) tabatan2; + for ( i = -TABSTEP; i <= TABSTEP; i++ ) { + xm = atan ((i-0.5)/TABSTEP); + x0 = atan ((i+0.0)/TABSTEP); + xp = atan ((i+0.5)/TABSTEP); + x = x0/2 + (xm + xp)/4; + y = xp - xm; + *p++ = x; + *p++ = y; + } + + p = (float*) tabcos; + for ( i = -13*TABSTEP; i <= 13*TABSTEP; i++ ) { + xm = cos ((i-0.5)/TABSTEP); + x0 = cos ((i+0.0)/TABSTEP); + xp = cos ((i+0.5)/TABSTEP); + x = x0/2 + (xm + xp)/4; + y = xp - xm; + *p++ = x; + *p++ = y; + } + + p = (float*) tabsqrt_ex; + for ( i = 0; i < 255; i++ ) { + X.n = (i << 23); + Y.n = (i << 23) + (1<<23) - 1; + *p++ = sqrt(X.f); + } + X.n = (255 << 23) - 1; + *p++ = sqrt(X.f); + + p = (float*) tabsqrt_m; + for ( i = 1*TABSTEP; i <= 2*TABSTEP; i++ ) { + xm = sqrt ((i-0.5)/TABSTEP); + x0 = sqrt ((i+0.0)/TABSTEP); + xp = sqrt ((i+0.5)/TABSTEP); + x = x0/2 + (xm + xp)/4; + y = xp - xm; + *p++ = x; + *p++ = y; + } +} + +#endif diff --git a/libmednahawk/src/mpcdec/huffman-bcl.c b/libmednahawk/src/mpcdec/huffman-bcl.c new file mode 100644 index 0000000000..071fc4539e --- /dev/null +++ b/libmednahawk/src/mpcdec/huffman-bcl.c @@ -0,0 +1,280 @@ +/************************************************************************* +* Huffman codes generation, part of the code from the Basic Compression +* Library ( http://bcl.sourceforge.net ) +* +* Modified by Nicolas BOTTI rududu at laposte.net +* +*------------------------------------------------------------------------- +* Copyright (c) 2003-2006 Marcus Geelnard +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would +* be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not +* be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any source +* distribution. +* +* Marcus Geelnard +* marcus.geelnard at home.se +*************************************************************************/ + +#include +#include + +typedef struct { + int Symbol; + unsigned int Count; + unsigned int Code; + unsigned int Bits; +} huff_sym_t; + +typedef struct huff_node huff_node_t; + +struct huff_node { + huff_node_t * ChildA; + union { + huff_node_t * ChildB; + huff_sym_t * Symbol; + }; + int Count; +}; + +static void _Huffman_StoreTree( huff_node_t *node, unsigned int bits ) +{ + /* Is this a leaf node? */ + if( node->ChildA == 0 ) { + /* Store code info in symbol array */ + node->Symbol->Bits = bits; + return; + } + + /* Branch A */ + _Huffman_StoreTree( node->ChildA, bits+1 ); + + /* Branch B */ + _Huffman_StoreTree( node->ChildB, bits+1 ); +} + +/** + * Compare 2 symbols to sort as canonical huffman (more bits first) + * @param sym1 + * @param sym2 + * @return + */ +static int _Huffman_CompBits(const huff_sym_t * sym1, const huff_sym_t * sym2) +{ + if (sym1->Bits == sym2->Bits){ + if (sym1->Symbol == sym2->Symbol) + return 0; + else + return ((sym1->Symbol > sym2->Symbol) << 1) - 1; + } else + return ((sym1->Bits < sym2->Bits) << 1) - 1; +} + +/** + * Compare 2 symbols to sort in symbol order + * @param sym1 + * @param sym2 + * @return + */ +static int _Huffman_CompSym(const huff_sym_t * sym1, const huff_sym_t * sym2) +{ + return ((sym1->Symbol > sym2->Symbol) << 1) - 1; +} + +/** + * Generate canonical huffman codes from symbols and bit lengths + * @param sym + * @param num_symbols + */ +static void _Huffman_MakeCodes(huff_sym_t * sym, unsigned int num_symbols) +{ + unsigned int code = 0, i; + int bits; + + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + + bits = sym[0].Bits; + sym[0].Code = 0; + + for( i = 1; i < num_symbols; i++){ + code >>= bits - sym[i].Bits; + bits = sym[i].Bits; + code++; + sym[i].Code = code; + } +} + + +/** + * Make a canonical huffman tree from symbols and counts + * @param sym + * @param num_symbols + */ +void _Huffman_MakeTree( huff_sym_t * sym, unsigned int num_symbols) +{ + huff_node_t * nodes, * node_1, * node_2, * root; + unsigned int k, nodes_left, next_idx; + + nodes = malloc(sizeof(huff_node_t) * (num_symbols * 2 - 1)); + + /* Initialize all leaf nodes */ + for( k = 0; k < num_symbols; ++ k ) { + nodes[k].Symbol = & sym[k]; + nodes[k].Count = sym[k].Count; + nodes[k].ChildA = (huff_node_t *) 0; + } + + /* Build tree by joining the lightest nodes until there is only + one node left (the root node). */ + root = (huff_node_t *) 0; + nodes_left = num_symbols; + next_idx = num_symbols; + while( nodes_left > 1 ) { + /* Find the two lightest nodes */ + node_1 = (huff_node_t *) 0; + node_2 = (huff_node_t *) 0; + for( k = 0; k < next_idx; ++ k ) { + if( nodes[k].Count >= 0 ) { + if( !node_1 || (nodes[k].Count <= node_1->Count) ) { + node_2 = node_1; + node_1 = &nodes[k]; + } else if( !node_2 || (nodes[k].Count <= node_2->Count) ) + node_2 = &nodes[k]; + } + } + + /* Join the two nodes into a new parent node */ + root = &nodes[next_idx]; + root->ChildA = node_1; + root->ChildB = node_2; + root->Count = node_1->Count + node_2->Count; + node_1->Count = -1; + node_2->Count = -1; + ++ next_idx; + -- nodes_left; + } + + /* Store the tree in the output stream, and in the sym[] array (the + latter is used as a look-up-table for faster encoding) */ + if( root ) { + _Huffman_StoreTree( root, 0 ); + } else { + /* Special case: only one symbol => no binary tree */ + root = &nodes[0]; + _Huffman_StoreTree( root, 1 ); + } + + free(nodes); + + _Huffman_MakeCodes(sym, num_symbols); +} + +#ifdef __GNUC__ + +/** + * Print the huffman tables + * print_type = 0 => print the coding table + * print_type = 1 => print the decoding table + * print_type = 2 => print the full codes in symbols order + * print_type = 3 => print the full codes in codes order + * @param sym + * @param num_symbols + * @param print_type + * @param offset + */ +void _Huffman_PrintCodes(huff_sym_t * sym, unsigned int num_symbols, int print_type, int offset) +{ + unsigned int total_cnt = 0, total_size = 0, optim_size = 0, i; + int packs[4]; + + switch( print_type ) { + case 0 : + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompSym); + printf("{\n "); + for( i = 0; i < num_symbols; i++) { + if (i != 0) + printf(", "); + printf("{%u, %u}", sym[i].Code, sym[i].Bits); + } + printf("\n}\n"); + break; + case 1: + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + printf("{\n "); + for( i = num_symbols - 1; i >= 0; i--) { + printf("{0x%.8x, %u, %i}", sym[i].Code << (32 - sym[i].Bits), sym[i].Bits, sym[i].Symbol - offset); + if (i != 0) + printf(", "); + } + printf("\n}\n"); + break; + case 4: + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + printf("{\n "); + for( i = num_symbols - 1; i >= 0; i--) { + int symbol = sym[i].Symbol; + packs[3] = symbol / (offset * offset * offset); + packs[2] = (symbol - packs[3] * offset * offset * offset) / (offset * offset); + packs[1] = (symbol - (packs[3] * offset + packs[2]) * offset * offset) / offset; + packs[0] = symbol - ((packs[3] * offset + packs[2]) * offset + packs[1] * offset); + packs[0] -= offset >> 1; + packs[1] -= offset >> 1; + packs[2] -= offset >> 1; + packs[3] -= offset >> 1; + symbol = ((packs[3] & 15) << 12) | ((packs[2] & 15) << 8) | ((packs[1] & 15) << 4) | (packs[0] & 15); + printf("{0x%.8x, %u, %i}", sym[i].Code << (32 - sym[i].Bits), sym[i].Bits, symbol); + if (i != 0) + printf(", "); + } + printf("\n}\n"); + break; + default: + if (print_type == 2) + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompSym); + else + qsort(sym, num_symbols, sizeof(huff_sym_t), + (int (*)(const void *, const void *)) _Huffman_CompBits); + + printf("Symbol Count Lenth Code\n"); + for( i = 0; i < num_symbols; i++) { + int k = sym[i].Bits - 1; + printf("%-10i %-10u %-10u ", sym[i].Symbol - offset, sym[i].Count, sym[i].Bits); + for (; k >= 0 ; k--) + printf("%u", (sym[i].Code >> k) & 1 ); + printf("\n"); + + total_cnt += sym[i].Count; + total_size += sym[i].Count * sym[i].Bits; + if (sym[i].Count != 0) + optim_size += sym[i].Count * __builtin_log2(sym[i].Count); + } + optim_size = total_cnt * __builtin_log2(total_cnt) - optim_size; + printf("\ncount : %u huff : %f bps ", total_cnt, (float)total_size / total_cnt); + printf("opt : %f bps ", (float)optim_size / total_cnt); + printf("loss : %f bps (%f %%)\n", (float)(total_size - optim_size) / total_cnt, (float)(total_size - optim_size) * 100 / optim_size); + break; + } +} + +#endif + + diff --git a/libmednahawk/src/mpcdec/huffman.c b/libmednahawk/src/mpcdec/huffman.c new file mode 100644 index 0000000000..0e3f74a5b6 --- /dev/null +++ b/libmednahawk/src/mpcdec/huffman.c @@ -0,0 +1,358 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file huffman.c +/// Implementations of sv7/sv8 huffman decoding functions. +#include "huffman.h" + + +// sv7 huffman tables +static const mpc_huffman mpc_table_HuffHdr [10] = { +{0x8000, 1, 0}, {0x6000, 3, 1}, {0x5e00, 7, -4}, {0x5d80, 9, 3}, {0x5d00, 9, 4}, {0x5c00, 8, -5}, {0x5800, 6, 2}, {0x5000, 5, -3}, {0x4000, 4, -2}, {0x0, 2, -1} +}; +mpc_lut_data mpc_HuffHdr = {mpc_table_HuffHdr}; + +const mpc_huffman mpc_table_HuffSCFI [4] = { + {0x8000, 1, 1}, {0x6000, 3, 2}, {0x4000, 3, 0}, {0x0, 2, 3} +}; + +static const mpc_huffman mpc_table_HuffDSCF [16] = { + {0xf800, 5, 5}, {0xf000, 5, -4}, {0xe000, 4, 3}, {0xd000, 4, -3}, {0xc000, 4, 8}, {0xa000, 3, 1}, {0x9000, 4, 0}, {0x8800, 5, -5}, {0x8400, 6, 7}, {0x8000, 6, -7}, {0x6000, 3, -1}, {0x4000, 3, 2}, {0x3000, 4, 4}, {0x2800, 5, 6}, {0x2000, 5, -6}, {0x0, 3, -2} +}; +mpc_lut_data mpc_HuffDSCF = {mpc_table_HuffDSCF}; + +static const mpc_huffman mpc_table_HuffQ1 [2] [27] = { + { + {0xe000, 3, 13}, {0xdc00, 6, 26}, {0xd800, 6, 0}, {0xd400, 6, 20}, {0xd000, 6, 6}, {0xc000, 4, 14}, {0xb000, 4, 12}, {0xa000, 4, 4}, {0x9000, 4, 22}, {0x8c00, 6, 8}, {0x8800, 6, 18}, {0x8400, 6, 24}, {0x8000, 6, 2}, {0x7000, 4, 16}, {0x6000, 4, 10}, {0x5800, 5, 17}, {0x5000, 5, 9}, {0x4800, 5, 1}, {0x4000, 5, 25}, {0x3800, 5, 5}, {0x3000, 5, 21}, {0x2800, 5, 3}, {0x2000, 5, 11}, {0x1800, 5, 15}, {0x1000, 5, 23}, {0x800, 5, 19}, {0x0, 5, 7} + }, { + {0x8000, 1, 13}, {0x7e00, 7, 15}, {0x7c00, 7, 1}, {0x7a00, 7, 11}, {0x7800, 7, 7}, {0x7600, 7, 17}, {0x7400, 7, 25}, {0x7200, 7, 19}, {0x7180, 9, 8}, {0x7100, 9, 18}, {0x7080, 9, 2}, {0x7000, 9, 24}, {0x6e00, 7, 3}, {0x6c00, 7, 23}, {0x6a00, 7, 21}, {0x6800, 7, 5}, {0x6700, 8, 0}, {0x6600, 8, 26}, {0x6500, 8, 6}, {0x6400, 8, 20}, {0x6000, 6, 9}, {0x5000, 4, 14}, {0x4000, 4, 12}, {0x3000, 4, 4}, {0x2000, 4, 22}, {0x1000, 4, 16}, {0x0, 4, 10} + } +}; + +static const mpc_huffman mpc_table_HuffQ2 [2] [25] = { + { + {0xf000, 4, 13}, {0xe000, 4, 17}, {0xd000, 4, 7}, {0xc000, 4, 11}, {0xbc00, 6, 1}, {0xb800, 6, 23}, {0xb600, 7, 4}, {0xb400, 7, 20}, {0xb200, 7, 0}, {0xb000, 7, 24}, {0xa800, 5, 22}, {0xa000, 5, 10}, {0x8000, 3, 12}, {0x7800, 5, 2}, {0x7000, 5, 14}, {0x6000, 4, 6}, {0x5000, 4, 18}, {0x4000, 4, 8}, {0x3000, 4, 16}, {0x2800, 5, 9}, {0x2000, 5, 5}, {0x1800, 5, 15}, {0x1000, 5, 21}, {0x800, 5, 19}, {0x0, 5, 3} + }, { + {0xf800, 5, 18}, {0xf000, 5, 6}, {0xe800, 5, 8}, {0xe700, 8, 3}, {0xe6c0, 10, 24}, {0xe680, 10, 4}, {0xe640, 10, 0}, {0xe600, 10, 20}, {0xe400, 7, 23}, {0xe200, 7, 1}, {0xe000, 7, 19}, {0xd800, 5, 16}, {0xd600, 7, 15}, {0xd400, 7, 21}, {0xd200, 7, 9}, {0xd000, 7, 5}, {0xcc00, 6, 2}, {0xc800, 6, 10}, {0xc400, 6, 14}, {0xc000, 6, 22}, {0x8000, 2, 12}, {0x6000, 3, 13}, {0x4000, 3, 17}, {0x2000, 3, 11}, {0x0, 3, 7} + } +}; + +static const mpc_huffman mpc_table_HuffQ3 [2] [7] = { + { + {0xe000, 3, 1}, {0xd000, 4, 3}, {0xc000, 4, -3}, {0xa000, 3, 2}, {0x8000, 3, -2}, {0x4000, 2, 0}, {0x0, 2, -1} + }, { + {0xc000, 2, 0}, {0x8000, 2, -1}, {0x4000, 2, 1}, {0x3000, 4, -2}, {0x2800, 5, 3}, {0x2000, 5, -3}, {0x0, 3, 2} + } +}; + +static const mpc_huffman mpc_table_HuffQ4 [2] [9] = { + { + {0xe000, 3, 0}, {0xc000, 3, -1}, {0xa000, 3, 1}, {0x8000, 3, -2}, {0x6000, 3, 2}, {0x5000, 4, -4}, {0x4000, 4, 4}, {0x2000, 3, 3}, {0x0, 3, -3} + }, { + {0xe000, 3, 1}, {0xd000, 4, 2}, {0xc000, 4, -3}, {0x8000, 2, 0}, {0x6000, 3, -2}, {0x5000, 4, 3}, {0x4800, 5, -4}, {0x4000, 5, 4}, {0x0, 2, -1} + } +}; + +static const mpc_huffman mpc_table_HuffQ5 [2] [15] = { + { + {0xf000, 4, 2}, {0xe800, 5, 5}, {0xe400, 6, -7}, {0xe000, 6, 7}, {0xd000, 4, -3}, {0xc000, 4, 3}, {0xb800, 5, -6}, {0xb000, 5, 6}, {0xa000, 4, -4}, {0x9000, 4, 4}, {0x8000, 4, -5}, {0x6000, 3, 0}, {0x4000, 3, -1}, {0x2000, 3, 1}, {0x0, 3, -2} + }, { + {0xf000, 4, 3}, {0xe800, 5, 4}, {0xe600, 7, 6}, {0xe500, 8, -7}, {0xe400, 8, 7}, {0xe000, 6, -6}, {0xc000, 3, 0}, {0xa000, 3, -1}, {0x8000, 3, 1}, {0x6000, 3, -2}, {0x4000, 3, 2}, {0x3800, 5, -5}, {0x3000, 5, 5}, {0x2000, 4, -4}, {0x0, 3, -3} + } +}; + +static const mpc_huffman mpc_table_HuffQ6 [2] [31] = { + { + {0xf800, 5, 3}, {0xf000, 5, -4}, {0xec00, 6, -11}, {0xe800, 6, 12}, {0xe000, 5, 4}, {0xd800, 5, 6}, {0xd000, 5, -5}, {0xc800, 5, 5}, {0xc000, 5, 7}, {0xb800, 5, -7}, {0xb400, 6, -12}, {0xb000, 6, -13}, {0xa800, 5, -6}, {0xa000, 5, 8}, {0x9800, 5, -8}, {0x9000, 5, 9}, {0x8800, 5, -9}, {0x8400, 6, 13}, {0x8200, 7, -15}, {0x8000, 7, 15}, {0x7000, 4, 0}, {0x6800, 5, -10}, {0x6000, 5, 10}, {0x5000, 4, -1}, {0x4000, 4, 2}, {0x3000, 4, 1}, {0x2000, 4, -2}, {0x1c00, 6, 14}, {0x1800, 6, -14}, {0x1000, 5, 11}, {0x0, 4, -3} + }, { + {0xf800, 5, -6}, {0xf000, 5, 6}, {0xe000, 4, 1}, {0xd000, 4, -1}, {0xce00, 7, 10}, {0xcc00, 7, -10}, {0xcb00, 8, -11}, {0xca80, 9, -12}, {0xca60, 11, 13}, {0xca58, 13, 15}, {0xca50, 13, -14}, {0xca48, 13, 14}, {0xca40, 13, -15}, {0xca00, 10, -13}, {0xc900, 8, 11}, {0xc800, 8, 12}, {0xc400, 6, -9}, {0xc000, 6, 9}, {0xb000, 4, -2}, {0xa000, 4, 2}, {0x9000, 4, 3}, {0x8000, 4, -3}, {0x7800, 5, -7}, {0x7000, 5, 7}, {0x6000, 4, -4}, {0x5000, 4, 4}, {0x4800, 5, -8}, {0x4000, 5, 8}, {0x3000, 4, 5}, {0x2000, 4, -5}, {0x0, 3, 0} + } +}; + +static const mpc_huffman mpc_table_HuffQ7 [2] [63] = { + { + {0xfc00, 6, 7}, {0xf800, 6, 8}, {0xf400, 6, 9}, {0xf000, 6, -8}, {0xec00, 6, 11}, {0xea00, 7, 21}, {0xe900, 8, -28}, {0xe800, 8, 28}, {0xe400, 6, -9}, {0xe200, 7, -22}, {0xe000, 7, -21}, {0xdc00, 6, -10}, {0xd800, 6, -11}, {0xd400, 6, 10}, {0xd000, 6, 12}, {0xcc00, 6, -13}, {0xca00, 7, 22}, {0xc800, 7, 23}, {0xc400, 6, -12}, {0xc000, 6, 13}, {0xbc00, 6, 14}, {0xb800, 6, -14}, {0xb600, 7, -23}, {0xb500, 8, -29}, {0xb400, 8, 29}, {0xb000, 6, -15}, {0xac00, 6, 15}, {0xa800, 6, 16}, {0xa400, 6, -16}, {0xa200, 7, -24}, {0xa000, 7, 24}, {0x9c00, 6, 17}, {0x9a00, 7, -25}, {0x9900, 8, -30}, {0x9800, 8, 30}, {0x9400, 6, -17}, {0x9000, 6, 18}, {0x8c00, 6, -18}, {0x8a00, 7, 25}, {0x8800, 7, 26}, {0x8400, 6, 19}, {0x8200, 7, -26}, {0x8000, 7, -27}, {0x7800, 5, 2}, {0x7400, 6, -19}, {0x7000, 6, 20}, {0x6800, 5, -1}, {0x6700, 8, -31}, {0x6600, 8, 31}, {0x6400, 7, 27}, {0x6000, 6, -20}, {0x5800, 5, 1}, {0x5000, 5, -5}, {0x4800, 5, -3}, {0x4000, 5, 3}, {0x3800, 5, 0}, {0x3000, 5, -2}, {0x2800, 5, -4}, {0x2000, 5, 4}, {0x1800, 5, 5}, {0x1000, 5, -6}, {0x800, 5, 6}, {0x0, 5, -7} + }, { + {0xf800, 5, -1}, {0xf000, 5, 2}, {0xe800, 5, -2}, {0xe000, 5, 3}, {0xdf00, 8, -20}, {0xdec0, 10, 24}, {0xdebc, 14, 28}, {0xdeb8, 14, -28}, {0xdeb4, 14, -30}, {0xdeb0, 14, 30}, {0xdea0, 12, -27}, {0xde9c, 14, 29}, {0xde98, 14, -29}, {0xde94, 14, 31}, {0xde90, 14, -31}, {0xde80, 12, 27}, {0xde00, 9, -22}, {0xdc00, 7, -17}, {0xd800, 6, -11}, {0xd000, 5, -3}, {0xc800, 5, 4}, {0xc000, 5, -4}, {0xbe00, 7, 17}, {0xbd00, 8, 20}, {0xbc80, 9, 22}, {0xbc40, 10, -25}, {0xbc00, 10, -26}, {0xb800, 6, 12}, {0xb000, 5, 5}, {0xa800, 5, -5}, {0xa000, 5, 6}, {0x9800, 5, -6}, {0x9400, 6, -12}, {0x9200, 7, -18}, {0x9000, 7, 18}, {0x8c00, 6, 13}, {0x8800, 6, -13}, {0x8000, 5, -7}, {0x7c00, 6, 14}, {0x7b00, 8, 21}, {0x7a00, 8, -21}, {0x7800, 7, -19}, {0x7000, 5, 7}, {0x6800, 5, 8}, {0x6400, 6, -14}, {0x6000, 6, -15}, {0x5800, 5, -8}, {0x5400, 6, 15}, {0x5200, 7, 19}, {0x51c0, 10, 25}, {0x5180, 10, 26}, {0x5100, 9, -23}, {0x5080, 9, 23}, {0x5000, 9, -24}, {0x4800, 5, -9}, {0x4000, 5, 9}, {0x3c00, 6, 16}, {0x3800, 6, -16}, {0x3000, 5, 10}, {0x2000, 4, 0}, {0x1800, 5, -10}, {0x1000, 5, 11}, {0x0, 4, 1} + } +}; + +mpc_lut_data mpc_HuffQ [7] [2] = { + {{mpc_table_HuffQ1[0]}, {mpc_table_HuffQ1[1]}}, + {{mpc_table_HuffQ2[0]}, {mpc_table_HuffQ2[1]}}, + {{mpc_table_HuffQ3[0]}, {mpc_table_HuffQ3[1]}}, + {{mpc_table_HuffQ4[0]}, {mpc_table_HuffQ4[1]}}, + {{mpc_table_HuffQ5[0]}, {mpc_table_HuffQ5[1]}}, + {{mpc_table_HuffQ6[0]}, {mpc_table_HuffQ6[1]}}, + {{mpc_table_HuffQ7[0]}, {mpc_table_HuffQ7[1]}} +}; + + +// sv8 huffman tables +static const mpc_huffman mpc_huff_SCFI_1 [3] = { + {0x8000, 1, 1}, {0x4000, 2, 2}, {0x0, 3, 3} +}; // 3 +static const mpc_int8_t mpc_sym_SCFI_1 [4] = { + 2, 3, 1, 0 +}; +static const mpc_huffman mpc_huff_SCFI_2 [5] = { + {0x8000, 2, 3}, {0x4000, 3, 5}, {0x1800, 5, 11}, {0x400, 6, 14}, {0x0, 7, 15} +}; // 5 +static const mpc_int8_t mpc_sym_SCFI_2 [16] = { + 15, 10, 14, 11, 13, 9, 7, 6, 5, 12, 8, 3, 2, 0, 4, 1 +}; +mpc_can_data mpc_can_SCFI[2] = {{mpc_huff_SCFI_1, mpc_sym_SCFI_1}, {mpc_huff_SCFI_2, mpc_sym_SCFI_2}}; + +static const mpc_huffman mpc_huff_DSCF_1 [12] = { + {0xa000, 3, 7}, {0x4000, 4, 12}, {0x2800, 5, 16}, {0x1800, 6, 21}, {0xe00, 7, 27}, {0x700, 8, 34}, {0x380, 9, 41}, {0x140, 10, 48}, {0x80, 11, 53}, {0x30, 12, 57}, {0x18, 13, 60}, {0x0, 14, 63} +}; // 12 +static const mpc_int8_t mpc_sym_DSCF_1 [64] = { + 35, 34, 33, 36, 32, 30, 29, 27, 26, 37, 28, 25, 39, 38, 24, 23, 40, 22, 21, 20, 19, 43, 42, 41, 18, 17, 16, 15, 46, 45, 44, 14, 13, 12, 11, 49, 48, 47, 31, 10, 9, 8, 7, 6, 52, 51, 50, 5, 4, 3, 54, 53, 2, 1, 0, 57, 56, 55, 63, 62, 61, 60, 59, 58 +}; +static const mpc_huffman mpc_huff_DSCF_2 [13] = { + {0x6000, 3, 7}, {0x3000, 4, 10}, {0x1800, 5, 13}, {0x1000, 6, 16}, {0xa00, 7, 20}, {0x600, 8, 25}, {0x380, 9, 31}, {0x1c0, 10, 38}, {0xe0, 11, 45}, {0x50, 12, 52}, {0x20, 13, 57}, {0xc, 14, 61}, {0x0, 15, 64} +}; // 13 +static const mpc_int8_t mpc_sym_DSCF_2 [65] = { + 33, 32, 31, 30, 29, 34, 28, 27, 36, 35, 26, 37, 25, 38, 24, 23, 40, 39, 22, 21, 42, 41, 20, 19, 18, 45, 44, 43, 17, 16, 15, 14, 48, 47, 46, 13, 12, 11, 10, 64, 52, 51, 50, 49, 9, 8, 7, 6, 55, 54, 53, 5, 4, 3, 58, 57, 56, 2, 1, 63, 62, 61, 60, 59, 0 +}; +mpc_can_data mpc_can_DSCF[2] = {{mpc_huff_DSCF_1, mpc_sym_DSCF_1}, {mpc_huff_DSCF_2, mpc_sym_DSCF_2}}; + +static const mpc_huffman mpc_huff_Bands [12] = { + {0x8000, 1, 1}, {0x4000, 2, 2}, {0x2000, 3, 3}, {0x1000, 5, 6}, {0x800, 6, 8}, {0x600, 7, 10}, {0x300, 8, 13}, {0x200, 9, 16}, {0x140, 10, 20}, {0xc0, 11, 25}, {0x10, 12, 31}, {0x0, 13, 32} +}; // 12 +static const mpc_int8_t mpc_sym_Bands [33] = { + 0, 32, 1, 31, 2, 30, 3, 4, 29, 6, 5, 28, 7, 27, 26, 8, 25, 24, 23, 9, 22, 21, 20, 18, 17, 16, 15, 14, 12, 11, 10, 19, 13 +}; +mpc_can_data mpc_can_Bands = {mpc_huff_Bands, mpc_sym_Bands}; + +static const mpc_huffman mpc_huff_Res_1 [16] = { + {0x8000, 1, 1}, {0x4000, 2, 2}, {0x2000, 3, 3}, {0x1000, 4, 4}, {0x800, 5, 5}, {0x400, 6, 6}, {0x200, 7, 7}, {0x100, 8, 8}, {0x80, 9, 9}, {0x40, 10, 10}, {0x20, 11, 11}, {0x10, 12, 12}, {0x8, 13, 13}, {0x4, 14, 14}, {0x2, 15, 15}, {0x0, 16, 16} +}; // 16 +static const mpc_int8_t mpc_sym_Res_1 [17] = { + 0, 1, 16, 2, 3, 4, 5, 15, 6, 7, 8, 9, 10, 11, 12, 14, 13 +}; +static const mpc_huffman mpc_huff_Res_2 [12] = { + {0x4000, 2, 3}, {0x2000, 3, 4}, {0x1000, 4, 5}, {0x800, 5, 6}, {0x400, 6, 7}, {0x200, 7, 8}, {0x100, 8, 9}, {0x80, 9, 10}, {0x40, 10, 11}, {0x20, 11, 12}, {0x10, 12, 13}, {0x0, 14, 16} +}; // 12 +static const mpc_int8_t mpc_sym_Res_2 [17] = { + 16, 1, 0, 2, 15, 3, 14, 4, 5, 13, 6, 12, 7, 11, 10, 9, 8 +}; +mpc_can_data mpc_can_Res[2] = {{mpc_huff_Res_1, mpc_sym_Res_1}, {mpc_huff_Res_2, mpc_sym_Res_2}}; + +static const mpc_huffman mpc_huff_Q1 [10] = { + {0x6000, 3, 7}, {0x1000, 4, 10}, {0x800, 5, 11}, {0x400, 6, 12}, {0x200, 7, 13}, {0x100, 8, 14}, {0x80, 9, 15}, {0x40, 10, 16}, {0x20, 11, 17}, {0x0, 12, 18} +}; // 10 +static const mpc_int8_t mpc_sym_Q1 [19] = { + 7, 6, 5, 4, 3, 10, 9, 8, 2, 1, 11, 0, 12, 13, 14, 15, 16, 18, 17 +}; +mpc_can_data mpc_can_Q1 = {mpc_huff_Q1, mpc_sym_Q1}; + +static const mpc_huffman mpc_huff_Q2_1 [10] = { + {0xe000, 3, 7}, {0x8000, 4, 14}, {0x3c00, 6, 38}, {0x2a00, 7, 53}, {0x1200, 8, 74}, {0x600, 9, 92}, {0x3c0, 10, 104}, {0x60, 11, 119}, {0x20, 12, 122}, {0x0, 13, 124} +}; // 10 +static const mpc_int8_t mpc_sym_Q2_1 [125] = { + 62, 87, 67, 63, 61, 57, 37, 93, 92, 88, 86, 83, 82, 81, 68, 66, 58, 56, 42, 41, 38, 36, 32, 31, 112, 91, 72, 64, 60, 52, 43, 33, 12, 117, 113, 111, 107, 97, 89, 85, 77, 73, 71, 69, 65, 59, 55, 53, 51, 47, 39, 35, 27, 17, 13, 11, 7, 118, 116, 108, 106, 98, 96, 94, 90, 84, 80, 78, 76, 48, 46, 44, 40, 34, 30, 28, 26, 18, 16, 8, 6, 122, 110, 102, 74, 70, 54, 50, 22, 2, 123, 121, 119, 115, 114, 109, 105, 103, 101, 99, 95, 79, 75, 49, 45, 29, 25, 23, 21, 19, 15, 14, 10, 9, 5, 3, 1, 124, 104, 20, 0, 120, 100, 24, 4 +}; +static const mpc_huffman mpc_huff_Q2_2 [9] = { + {0xf000, 4, 15}, {0x7000, 5, 30}, {0x4800, 6, 44}, {0x3c00, 7, 62}, {0xc00, 8, 92}, {0x780, 9, 104}, {0xc0, 10, 119}, {0x40, 11, 122}, {0x0, 12, 124} +}; // 9 +static const mpc_int8_t mpc_sym_Q2_2 [125] = { + 62, 92, 87, 86, 82, 68, 67, 66, 63, 61, 58, 57, 56, 42, 38, 37, 32, 93, 91, 88, 83, 81, 43, 41, 36, 33, 31, 112, 72, 64, 60, 52, 12, 118, 117, 116, 113, 111, 108, 107, 106, 98, 97, 96, 94, 90, 89, 85, 84, 80, 78, 77, 76, 73, 71, 69, 65, 59, 55, 53, 51, 48, 47, 46, 44, 40, 39, 35, 34, 30, 28, 27, 26, 18, 17, 16, 13, 11, 8, 7, 6, 122, 110, 74, 70, 54, 50, 22, 14, 2, 123, 121, 119, 115, 114, 109, 105, 103, 102, 101, 99, 95, 79, 75, 49, 45, 29, 25, 23, 21, 19, 15, 10, 9, 5, 3, 1, 124, 104, 20, 0, 120, 100, 24, 4 +}; + +static const mpc_huffman mpc_huff_Q3 [7] = { + {0xe000, 3, 7}, {0x8000, 4, 14}, {0x5000, 5, 22}, {0x2400, 6, 32}, {0xa00, 7, 41}, {0x200, 8, 46}, {0x0, 9, 48} +}; // 7 +static const mpc_int8_t mpc_sym_Q3 [49] = { + 0, 17, 16, 1, 15, -16, -1, 32, 31, 2, 14, -15, -32, 34, 33, 47, 46, 18, 30, -14, -2, -31, -17, -18, 49, 48, 63, 19, 29, 3, 13, -13, -3, -30, -47, -48, -33, 50, 62, 35, 45, -29, -19, -46, -34, 51, 61, -45, -35 +}; + +static const mpc_huffman mpc_huff_Q4 [8] = { + {0xf000, 4, 15}, {0x9000, 5, 30}, {0x3400, 6, 48}, {0x1800, 7, 61}, {0x500, 8, 73}, {0x100, 9, 78}, {0x0, 10, 80}, {0x0, 0, 90} +}; // 8 +static const mpc_int8_t mpc_sym_Q4 [91] = { + 0, 32, 17, 16, 31, 2, 1, 15, 14, -15, -16, -1, -32, 49, 48, 34, 33, 47, 46, 19, 18, 30, 29, 3, 13, -13, -14, -2, -3, -30, -31, -17, -18, -47, -48, -33, 64, 50, 63, 62, 35, 45, 4, 12, -29, -19, -46, -34, -64, -49, 66, 65, 79, 78, 51, 61, 36, 44, 20, 28, -12, -4, -28, -20, -45, -35, -62, -63, -50, 67, 77, 52, 60, -44, -36, -61, -51, 68, 76, -60, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const mpc_huffman mpc_huff_Q5_1 [6] = { + {0xc000, 2, 3}, {0x4000, 3, 6}, {0x2000, 4, 8}, {0x1000, 5, 10}, {0x800, 6, 12}, {0x0, 7, 14} +}; // 6 +static const mpc_int8_t mpc_sym_Q5_1 [15] = { + 0, 2, 1, -1, -2, 3, -3, 4, -4, 5, -5, 7, 6, -6, -7 +}; +static const mpc_huffman mpc_huff_Q5_2 [4] = { + {0x6000, 3, 7}, {0x2000, 4, 10}, {0x1000, 5, 12}, {0x0, 6, 14} +}; // 4 +static const mpc_int8_t mpc_sym_Q5_2 [15] = { + 2, 1, 0, -1, -2, 4, 3, -3, -4, 5, -5, 7, 6, -6, -7 +}; + +static const mpc_huffman mpc_huff_Q6_1 [8] = { + {0xc000, 2, 3}, {0x8000, 3, 6}, {0x4000, 4, 10}, {0x2800, 5, 14}, {0xc00, 6, 19}, {0x800, 7, 22}, {0x400, 8, 26}, {0x0, 9, 30} +}; // 8 +static const mpc_int8_t mpc_sym_Q6_1 [31] = { + 0, 1, -1, 3, 2, -2, -3, 4, -4, -5, 8, 7, 6, 5, -6, -7, -8, 9, -9, 11, 10, -10, -11, 15, 14, 13, 12, -12, -13, -14, -15 +}; +static const mpc_huffman mpc_huff_Q6_2 [5] = { + {0x5000, 4, 15}, {0x2000, 5, 20}, {0x1000, 6, 24}, {0x400, 7, 28}, {0x0, 8, 30} +}; // 5 +static const mpc_int8_t mpc_sym_Q6_2 [31] = { + 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, 8, 7, 6, -6, -7, -8, 10, 9, -9, -10, 13, 12, 11, -11, -12, -13, 15, 14, -14, -15 +}; + +static const mpc_huffman mpc_huff_Q7_1 [9] = { + {0xc000, 2, 3}, {0x8000, 3, 6}, {0x6000, 4, 10}, {0x4000, 5, 16}, {0x2800, 6, 24}, {0x1400, 7, 34}, {0xa00, 8, 44}, {0x400, 9, 54}, {0x0, 10, 62} +}; // 9 +static const mpc_int8_t mpc_sym_Q7_1 [63] = { + 0, 1, -1, 2, -2, 4, 3, -3, -4, 7, 6, 5, -5, -6, -7, 13, 11, 10, 9, 8, -8, -9, -10, -11, -12, 17, 16, 15, 14, 12, -13, -14, -15, -16, -17, 28, 27, 21, 20, 19, 18, -18, -19, -20, -21, -27, -28, 31, 30, 29, 26, 25, 24, 23, 22, -22, -23, -24, -25, -26, -29, -30, -31 +}; +static const mpc_huffman mpc_huff_Q7_2 [5] = { + {0x6000, 5, 31}, {0x2400, 6, 43}, {0x1000, 7, 52}, {0x200, 8, 60}, {0x0, 9, 62} +}; // 5 +static const mpc_int8_t mpc_sym_Q7_2 [63] = { + 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, 17, 16, 15, 14, 13, 12, 11, -10, -11, -12, -13, -14, -15, -16, -17, 22, 21, 20, 19, 18, -18, -19, -20, -21, -22, 29, 28, 27, 26, 25, 24, 23, -23, -24, -25, -26, -27, -28, -29, 31, 30, -30, -31 +}; + +static const mpc_huffman mpc_huff_Q8_1 [11] = { + {0xc000, 2, 3}, {0x8000, 3, 6}, {0x7000, 4, 10}, {0x5800, 5, 17}, {0x3800, 6, 28}, {0x2800, 7, 42}, {0x1900, 8, 62}, {0xd00, 9, 87}, {0x280, 10, 113}, {0x60, 11, 123}, {0x0, 12, 126} +}; // 11 +static const mpc_int8_t mpc_sym_Q8_1 [127] = { + 0, 1, -1, -2, 3, 2, -3, 7, 6, 5, 4, -4, -5, -6, -7, 11, 10, 9, 8, -8, -9, -10, -11, 19, 18, 17, 16, 15, 14, 13, 12, -12, -13, -14, -15, -16, -17, -19, 56, 55, 31, 28, 27, 26, 25, 24, 23, 22, 21, 20, -18, -20, -21, -22, -23, -24, -25, -26, -27, -33, -54, -56, 63, 62, 61, 60, 59, 58, 57, 54, 53, 43, 40, 39, 38, 37, 36, 35, 34, 33, 32, 30, 29, -28, -29, -30, -31, -32, -34, -35, -36, -37, -38, -39, -40, -41, -43, -53, -55, -57, -58, -59, -60, -61, 49, 47, 46, 45, 44, 42, 41, -42, -44, -45, -46, -47, -48, -49, -50, -62, -63, 52, 51, 50, 48, -51, -52 +}; +static const mpc_huffman mpc_huff_Q8_2 [4] = { + {0x9800, 6, 63}, {0x2a00, 7, 101}, {0x400, 8, 122}, {0x0, 9, 126} +}; // 4 +static const mpc_int8_t mpc_sym_Q8_2 [127] = { + 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 12, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, 63, 62, 61, 60, -60, -61, -62, -63 +}; + +static const mpc_huffman mpc_huff_Q9up [6] = { + {0xf800, 6, 63}, {0xac00, 7, 125}, {0x2600, 8, -45}, {0x280, 9, -7}, {0x40, 10, -2}, {0x0, 11, -1} +}; // 6 +static const mpc_int8_t mpc_sym_Q9up [256] = { + -128, 127, -108, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119, -120, -121, -122, -123, -124, -125, -126, -127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -109, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 40, 20, 19, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, -3, -4, -5, -6, 4, 3, 2, 1, 0, -1, -2 +}; +mpc_can_data mpc_can_Q9up = {mpc_huff_Q9up, mpc_sym_Q9up}; + + +mpc_can_data mpc_can_Q [6][2] = { + {{mpc_huff_Q2_1, mpc_sym_Q2_1}, {mpc_huff_Q2_2, mpc_sym_Q2_2}}, + {{mpc_huff_Q3, mpc_sym_Q3}, {mpc_huff_Q4, mpc_sym_Q4}}, + {{mpc_huff_Q5_1, mpc_sym_Q5_1}, {mpc_huff_Q5_2, mpc_sym_Q5_2}}, + {{mpc_huff_Q6_1, mpc_sym_Q6_1}, {mpc_huff_Q6_2, mpc_sym_Q6_2}}, + {{mpc_huff_Q7_1, mpc_sym_Q7_1}, {mpc_huff_Q7_2, mpc_sym_Q7_2}}, + {{mpc_huff_Q8_1, mpc_sym_Q8_1}, {mpc_huff_Q8_2, mpc_sym_Q8_2}} +}; + +static void huff_fill_lut(const mpc_huffman * table, mpc_huff_lut * lut, const int bits) +{ + int i, idx = 0; + const int shift = 16 - bits; + for (i = (1 << bits) - 1; i >= 0 ; i--) { + if ((table[idx].Code >> shift) < i) { + lut[i].Length = table[idx].Length; + lut[i].Value = table[idx].Value; + } else { + if (table[idx].Length <= bits) { + lut[i].Length = table[idx].Length; + lut[i].Value = table[idx].Value; + } else { + lut[i].Length = 0; + lut[i].Value = idx; + } + if (i != 0) + do { + idx++; + } while ((table[idx].Code >> shift) == i); + } + } +} + +static void can_fill_lut(mpc_can_data * data, const int bits) +{ + int i, idx = 0; + const int shift = 16 - bits; + const mpc_huffman * table = data->table; + const mpc_int8_t * sym = data->sym; + mpc_huff_lut * lut = data->lut; + for (i = (1 << bits) - 1; i >= 0 ; i--) { + if ((table[idx].Code >> shift) < i) { + if (table[idx].Length <= bits) { + lut[i].Length = table[idx].Length; + lut[i].Value = sym[(table[idx].Value - (i >> (bits - table[idx].Length))) & 0xFF]; + } else { + lut[i].Length = 0; + lut[i].Value = idx; + } + } else { + if (table[idx].Length <= bits) { + lut[i].Length = table[idx].Length; + lut[i].Value = sym[(table[idx].Value - (i >> (bits - table[idx].Length))) & 0xFF]; + } else { + lut[i].Length = 0; + lut[i].Value = idx; + } + if (i != 0) + do { + idx++; + } while ((table[idx].Code >> shift) == i); + } + } +} + +void huff_init_lut(const int bits) +{ + int i, j; + + huff_fill_lut(mpc_HuffDSCF.table, mpc_HuffDSCF.lut, bits); + huff_fill_lut(mpc_HuffHdr.table, mpc_HuffHdr.lut, bits); + + can_fill_lut(&mpc_can_SCFI[0], bits); + can_fill_lut(&mpc_can_SCFI[1], bits); + can_fill_lut(&mpc_can_DSCF[0], bits); + can_fill_lut(&mpc_can_DSCF[1], bits); + can_fill_lut(&mpc_can_Res[0], bits); + can_fill_lut(&mpc_can_Res[1], bits); + can_fill_lut(&mpc_can_Q1, bits); + can_fill_lut(&mpc_can_Q9up, bits); + + + for( i = 0; i < 7; i++){ + for( j = 0; j < 2; j++){ + if (i != 6) can_fill_lut(&mpc_can_Q[i][j], bits); + huff_fill_lut(mpc_HuffQ[i][j].table, mpc_HuffQ[i][j].lut, bits); + } + } +} + + diff --git a/libmednahawk/src/mpcdec/huffman.h b/libmednahawk/src/mpcdec/huffman.h new file mode 100644 index 0000000000..b9282e88ad --- /dev/null +++ b/libmednahawk/src/mpcdec/huffman.h @@ -0,0 +1,83 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file huffman.h +/// Data structures and functions for huffman coding. + +#ifndef _MPCDEC_HUFFMAN_H_ +#define _MPCDEC_HUFFMAN_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "mpc_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// LUT size parameter, LUT size is 1 << LUT_DEPTH +#define LUT_DEPTH 6 + +/// Huffman table entry. +typedef struct mpc_huffman_t { + mpc_uint16_t Code; + mpc_uint8_t Length; + mpc_int8_t Value; +} mpc_huffman; + +/// Huffman LUT entry. +typedef struct mpc_huff_lut_t { + mpc_uint8_t Length; + mpc_int8_t Value; +} mpc_huff_lut; + +/// Type used for huffman LUT decoding +typedef struct mpc_lut_data_t { + mpc_huffman const * const table; + mpc_huff_lut lut[1 << LUT_DEPTH]; +} mpc_lut_data; + +/// Type used for canonical huffman decoding +typedef struct mpc_can_data_t { + mpc_huffman const * const table; + mpc_int8_t const * const sym; + mpc_huff_lut lut[1 << LUT_DEPTH]; +} mpc_can_data; + +void huff_init_lut(const int bits); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/huffsv46.c b/libmednahawk/src/mpcdec/huffsv46.c new file mode 100644 index 0000000000..8ea5c164c8 --- /dev/null +++ b/libmednahawk/src/mpcdec/huffsv46.c @@ -0,0 +1,79 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file huffsv46.c +/// Implementations of huffman decoding for streamversions < 7. + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#ifdef MPC_SUPPORT_SV456 + + +const HuffmanTyp mpc_table_SCFI_Bundle [ 8] = +{{2147483648u,1,7},{1073741824u,2,3},{939524096u,5,1},{805306368u,5,2},{738197504u,6,0},{671088640u,6,6},{536870912u,5,4},{0u,3,5},}; +const HuffmanTyp mpc_table_DSCF_Entropie [13] = +{{3758096384u,3,1},{3489660928u,4,3},{3355443200u,5,5},{3221225472u,5,-3},{2952790016u,4,-2},{2684354560u,4,4},{2147483648u,3,-1},{1610612736u,3,2},{1476395008u,5,-5},{1409286144u,6,6},{1342177280u,6,-6},{1073741824u,4,-4},{0u,2,0},}; +const HuffmanTyp mpc_table_Region_A [16] = +{{2147483648u,1,1},{2013265920u,5,3},{1946157056u,6,4},{1912602624u,7,7},{1895825408u,8,8},{1887436800u,9,9},{1883242496u,10,10},{1881145344u,11,11},{1880096768u,12,12},{1879572480u,13,13},{1879310336u,14,14},{1879048192u,14,15},{1744830464u,5,5},{1610612736u,5,6},{1073741824u,3,0},{0u,2,2},}; +const HuffmanTyp mpc_table_Region_B [ 8] = +{{2147483648u,1,1},{1073741824u,2,0},{536870912u,3,2},{268435456u,4,3},{134217728u,5,4},{67108864u,6,5},{33554432u,7,6},{0u,7,7},}; +const HuffmanTyp mpc_table_Region_C [ 4] = +{{2147483648u,1,0},{1073741824u,2,1},{536870912u,3,2},{0u,3,3},}; + +static const HuffmanTyp mpc_table_Entropie_1 [ 3] = +{{2147483648u,1,0},{1073741824u,2,-1},{0u,2,1},}; +static const HuffmanTyp mpc_table_Entropie_2 [ 5] = +{{3221225472u,2,0},{2684354560u,3,2},{2147483648u,3,-2},{1073741824u,2,1},{0u,2,-1},}; +static const HuffmanTyp mpc_table_Entropie_3 [ 7] = +{{3221225472u,2,0},{2684354560u,3,-2},{2415919104u,4,2},{2281701376u,5,-3},{2147483648u,5,3},{1073741824u,2,-1},{0u,2,1},}; +static const HuffmanTyp mpc_table_Entropie_4 [ 9] = +{{4026531840u,4,3},{3758096384u,4,-3},{3221225472u,3,1},{2684354560u,3,-1},{2147483648u,3,2},{1610612736u,3,-2},{1342177280u,4,-4},{1073741824u,4,4},{0u,2,0},}; +static const HuffmanTyp mpc_table_Entropie_5 [15] = +{{4026531840u,4,-2},{3892314112u,5,-5},{3825205248u,6,-7},{3758096384u,6,7},{3489660928u,4,-3},{3221225472u,4,3},{3087007744u,5,-6},{2952790016u,5,6},{2684354560u,4,4},{2147483648u,3,0},{1610612736u,3,1},{1073741824u,3,-1},{805306368u,4,-4},{536870912u,4,5},{0u,3,2},}; +static const HuffmanTyp mpc_table_Entropie_6 [31] = +{{4160749568u,5,-4},{4026531840u,5,5},{3892314112u,5,-5},{3825205248u,6,10},{3758096384u,6,-10},{3623878656u,5,-6},{3489660928u,5,6},{3355443200u,5,7},{3221225472u,5,-7},{3087007744u,5,-8},{3019898880u,6,-11},{2986344448u,7,14},{2952790016u,7,-14},{2818572288u,5,8},{2751463424u,6,11},{2684354560u,6,-13},{2415919104u,4,0},{2147483648u,4,1},{1879048192u,4,-1},{1610612736u,4,3},{1342177280u,4,2},{1207959552u,5,-9},{1140850688u,6,12},{1073741824u,6,13},{805306368u,4,-3},{536870912u,4,-2},{402653184u,5,9},{335544320u,6,-12},{301989888u,7,15},{268435456u,7,-15},{0u,4,4},}; +static const HuffmanTyp mpc_table_Entropie_7 [63] = +{{4278190080u,8,28},{4261412864u,8,26},{4227858432u,7,-20},{4160749568u,6,8},{4093640704u,6,-8},{4026531840u,6,-9},{3959422976u,6,9},{3925868544u,7,20},{3892314112u,7,21},{3825205248u,6,-10},{3758096384u,6,-11},{3690987520u,6,10},{3623878656u,6,11},{3590324224u,7,-21},{3573547008u,8,29},{3556769792u,8,-29},{3489660928u,6,13},{3422552064u,6,-13},{3355443200u,6,-12},{3288334336u,6,12},{3254779904u,7,-22},{3221225472u,7,22},{3154116608u,6,14},{3087007744u,6,15},{3019898880u,6,-14},{2986344448u,7,-23},{2952790016u,7,23},{2885681152u,6,-15},{2818572288u,6,-16},{2751463424u,6,16},{2717908992u,7,27},{2684354560u,7,-27},{2617245696u,6,17},{2550136832u,6,-17},{2533359616u,8,-30},{2516582400u,8,30},{2483027968u,7,24},{2415919104u,6,-18},{2281701376u,5,-1},{2147483648u,5,1},{2113929216u,7,-24},{2080374784u,7,25},{2013265920u,6,18},{1879048192u,5,-3},{1744830464u,5,3},{1610612736u,5,5},{1476395008u,5,0},{1342177280u,5,-2},{1275068416u,6,19},{1207959552u,6,-19},{1073741824u,5,-5},{939524096u,5,-4},{805306368u,5,-7},{671088640u,5,2},{536870912u,5,4},{402653184u,5,7},{369098752u,7,-25},{335544320u,7,-26},{301989888u,7,-28},{285212672u,8,-31},{268435456u,8,31},{134217728u,5,6},{0u,5,-6},}; + +const HuffmanTyp* mpc_table_SampleHuff [18] = { + NULL,mpc_table_Entropie_1,mpc_table_Entropie_2,mpc_table_Entropie_3,mpc_table_Entropie_4,mpc_table_Entropie_5,mpc_table_Entropie_6,mpc_table_Entropie_7,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL +}; + +#endif //#ifdef MPC_SUPPORT_SV456 diff --git a/libmednahawk/src/mpcdec/huffsv7.c b/libmednahawk/src/mpcdec/huffsv7.c new file mode 100644 index 0000000000..0f2b0236fa --- /dev/null +++ b/libmednahawk/src/mpcdec/huffsv7.c @@ -0,0 +1,85 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file huffsv7.c +/// Implementations of sv7 huffman decoding functions. + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +const HuffmanTyp mpc_table_HuffHdr [10] = +{{2147483648u,1,0},{1610612736u,3,1},{1577058304u,7,-4},{1568669696u,9,3},{1560281088u,9,4},{1543503872u,8,-5},{1476395008u,6,2},{1342177280u,5,-3},{1073741824u,4,-2},{0u,2,-1},}; +const HuffmanTyp mpc_table_HuffSCFI [ 4] = +{{2147483648u,1,1},{1610612736u,3,2},{1073741824u,3,0},{0u,2,3},}; +const HuffmanTyp mpc_table_HuffDSCF [16] = +{{4160749568u,5,5},{4026531840u,5,-4},{3758096384u,4,3},{3489660928u,4,-3},{3221225472u,4,8},{2684354560u,3,1},{2415919104u,4,0},{2281701376u,5,-5},{2214592512u,6,7},{2147483648u,6,-7},{1610612736u,3,-1},{1073741824u,3,2},{805306368u,4,4},{671088640u,5,6},{536870912u,5,-6},{0u,3,-2},}; + +static const HuffmanTyp mpc_table_HuffQ1 [2] [3*3*3] = { + {{3758096384u,3,13},{3690987520u,6,26},{3623878656u,6,0},{3556769792u,6,20},{3489660928u,6,6},{3221225472u,4,14},{2952790016u,4,12},{2684354560u,4,4},{2415919104u,4,22},{2348810240u,6,8},{2281701376u,6,18},{2214592512u,6,24},{2147483648u,6,2},{1879048192u,4,16},{1610612736u,4,10},{1476395008u,5,17},{1342177280u,5,9},{1207959552u,5,1},{1073741824u,5,25},{939524096u,5,5},{805306368u,5,21},{671088640u,5,3},{536870912u,5,11},{402653184u,5,15},{268435456u,5,23},{134217728u,5,19},{0u,5,7},}, + {{2147483648u,1,13},{2113929216u,7,15},{2080374784u,7,1},{2046820352u,7,11},{2013265920u,7,7},{1979711488u,7,17},{1946157056u,7,25},{1912602624u,7,19},{1904214016u,9,8},{1895825408u,9,18},{1887436800u,9,2},{1879048192u,9,24},{1845493760u,7,3},{1811939328u,7,23},{1778384896u,7,21},{1744830464u,7,5},{1728053248u,8,0},{1711276032u,8,26},{1694498816u,8,6},{1677721600u,8,20},{1610612736u,6,9},{1342177280u,4,14},{1073741824u,4,12},{805306368u,4,4},{536870912u,4,22},{268435456u,4,16},{0u,4,10},}, +}; +static const HuffmanTyp mpc_table_HuffQ2 [2] [5*5] = { + {{4026531840u,4,13},{3758096384u,4,17},{3489660928u,4,7},{3221225472u,4,11},{3154116608u,6,1},{3087007744u,6,23},{3053453312u,7,4},{3019898880u,7,20},{2986344448u,7,0},{2952790016u,7,24},{2818572288u,5,22},{2684354560u,5,10},{2147483648u,3,12},{2013265920u,5,2},{1879048192u,5,14},{1610612736u,4,6},{1342177280u,4,18},{1073741824u,4,8},{805306368u,4,16},{671088640u,5,9},{536870912u,5,5},{402653184u,5,15},{268435456u,5,21},{134217728u,5,19},{0u,5,3},}, + {{4160749568u,5,18},{4026531840u,5,6},{3892314112u,5,8},{3875536896u,8,3},{3871342592u,10,24},{3867148288u,10,4},{3862953984u,10,0},{3858759680u,10,20},{3825205248u,7,23},{3791650816u,7,1},{3758096384u,7,19},{3623878656u,5,16},{3590324224u,7,15},{3556769792u,7,21},{3523215360u,7,9},{3489660928u,7,5},{3422552064u,6,2},{3355443200u,6,10},{3288334336u,6,14},{3221225472u,6,22},{2147483648u,2,12},{1610612736u,3,13},{1073741824u,3,17},{536870912u,3,11},{0u,3,7},}, +}; +static const HuffmanTyp mpc_table_HuffQ3 [2] [ 7] = { + {{3758096384u,3,1},{3489660928u,4,3},{3221225472u,4,-3},{2684354560u,3,2},{2147483648u,3,-2},{1073741824u,2,0},{0u,2,-1},}, + {{3221225472u,2,0},{2147483648u,2,-1},{1073741824u,2,1},{805306368u,4,-2},{671088640u,5,3},{536870912u,5,-3},{0u,3,2},}, +}; +static const HuffmanTyp mpc_table_HuffQ4 [2] [ 9] = { + {{3758096384u,3,0},{3221225472u,3,-1},{2684354560u,3,1},{2147483648u,3,-2},{1610612736u,3,2},{1342177280u,4,-4},{1073741824u,4,4},{536870912u,3,3},{0u,3,-3},}, + {{3758096384u,3,1},{3489660928u,4,2},{3221225472u,4,-3},{2147483648u,2,0},{1610612736u,3,-2},{1342177280u,4,3},{1207959552u,5,-4},{1073741824u,5,4},{0u,2,-1},}, +}; +static const HuffmanTyp mpc_table_HuffQ5 [2] [15] = { + {{4026531840u,4,2},{3892314112u,5,5},{3825205248u,6,-7},{3758096384u,6,7},{3489660928u,4,-3},{3221225472u,4,3},{3087007744u,5,-6},{2952790016u,5,6},{2684354560u,4,-4},{2415919104u,4,4},{2147483648u,4,-5},{1610612736u,3,0},{1073741824u,3,-1},{536870912u,3,1},{0u,3,-2},}, + {{4026531840u,4,3},{3892314112u,5,4},{3858759680u,7,6},{3841982464u,8,-7},{3825205248u,8,7},{3758096384u,6,-6},{3221225472u,3,0},{2684354560u,3,-1},{2147483648u,3,1},{1610612736u,3,-2},{1073741824u,3,2},{939524096u,5,-5},{805306368u,5,5},{536870912u,4,-4},{0u,3,-3},}, +}; +static const HuffmanTyp mpc_table_HuffQ6 [2] [31] = { + {{4160749568u,5,3},{4026531840u,5,-4},{3959422976u,6,-11},{3892314112u,6,12},{3758096384u,5,4},{3623878656u,5,6},{3489660928u,5,-5},{3355443200u,5,5},{3221225472u,5,7},{3087007744u,5,-7},{3019898880u,6,-12},{2952790016u,6,-13},{2818572288u,5,-6},{2684354560u,5,8},{2550136832u,5,-8},{2415919104u,5,9},{2281701376u,5,-9},{2214592512u,6,13},{2181038080u,7,-15},{2147483648u,7,15},{1879048192u,4,0},{1744830464u,5,-10},{1610612736u,5,10},{1342177280u,4,-1},{1073741824u,4,2},{805306368u,4,1},{536870912u,4,-2},{469762048u,6,14},{402653184u,6,-14},{268435456u,5,11},{0u,4,-3},}, + {{4160749568u,5,-6},{4026531840u,5,6},{3758096384u,4,1},{3489660928u,4,-1},{3456106496u,7,10},{3422552064u,7,-10},{3405774848u,8,-11},{3397386240u,9,-12},{3395289088u,11,13},{3394764800u,13,15},{3394240512u,13,-14},{3393716224u,13,14},{3393191936u,13,-15},{3388997632u,10,-13},{3372220416u,8,11},{3355443200u,8,12},{3288334336u,6,-9},{3221225472u,6,9},{2952790016u,4,-2},{2684354560u,4,2},{2415919104u,4,3},{2147483648u,4,-3},{2013265920u,5,-7},{1879048192u,5,7},{1610612736u,4,-4},{1342177280u,4,4},{1207959552u,5,-8},{1073741824u,5,8},{805306368u,4,5},{536870912u,4,-5},{0u,3,0},}, +}; +static const HuffmanTyp mpc_table_HuffQ7 [2] [63] = { + {{4227858432u,6,7},{4160749568u,6,8},{4093640704u,6,9},{4026531840u,6,-8},{3959422976u,6,11},{3925868544u,7,21},{3909091328u,8,-28},{3892314112u,8,28},{3825205248u,6,-9},{3791650816u,7,-22},{3758096384u,7,-21},{3690987520u,6,-10},{3623878656u,6,-11},{3556769792u,6,10},{3489660928u,6,12},{3422552064u,6,-13},{3388997632u,7,22},{3355443200u,7,23},{3288334336u,6,-12},{3221225472u,6,13},{3154116608u,6,14},{3087007744u,6,-14},{3053453312u,7,-23},{3036676096u,8,-29},{3019898880u,8,29},{2952790016u,6,-15},{2885681152u,6,15},{2818572288u,6,16},{2751463424u,6,-16},{2717908992u,7,-24},{2684354560u,7,24},{2617245696u,6,17},{2583691264u,7,-25},{2566914048u,8,-30},{2550136832u,8,30},{2483027968u,6,-17},{2415919104u,6,18},{2348810240u,6,-18},{2315255808u,7,25},{2281701376u,7,26},{2214592512u,6,19},{2181038080u,7,-26},{2147483648u,7,-27},{2013265920u,5,2},{1946157056u,6,-19},{1879048192u,6,20},{1744830464u,5,-1},{1728053248u,8,-31},{1711276032u,8,31},{1677721600u,7,27},{1610612736u,6,-20},{1476395008u,5,1},{1342177280u,5,-5},{1207959552u,5,-3},{1073741824u,5,3},{939524096u,5,0},{805306368u,5,-2},{671088640u,5,-4},{536870912u,5,4},{402653184u,5,5},{268435456u,5,-6},{134217728u,5,6},{0u,5,-7},}, + {{4160749568u,5,-1},{4026531840u,5,2},{3892314112u,5,-2},{3758096384u,5,3},{3741319168u,8,-20},{3737124864u,10,24},{3736862720u,14,28},{3736600576u,14,-28},{3736338432u,14,-30},{3736076288u,14,30},{3735027712u,12,-27},{3734765568u,14,29},{3734503424u,14,-29},{3734241280u,14,31},{3733979136u,14,-31},{3732930560u,12,27},{3724541952u,9,-22},{3690987520u,7,-17},{3623878656u,6,-11},{3489660928u,5,-3},{3355443200u,5,4},{3221225472u,5,-4},{3187671040u,7,17},{3170893824u,8,20},{3162505216u,9,22},{3158310912u,10,-25},{3154116608u,10,-26},{3087007744u,6,12},{2952790016u,5,5},{2818572288u,5,-5},{2684354560u,5,6},{2550136832u,5,-6},{2483027968u,6,-12},{2449473536u,7,-18},{2415919104u,7,18},{2348810240u,6,13},{2281701376u,6,-13},{2147483648u,5,-7},{2080374784u,6,14},{2063597568u,8,21},{2046820352u,8,-21},{2013265920u,7,-19},{1879048192u,5,7},{1744830464u,5,8},{1677721600u,6,-14},{1610612736u,6,-15},{1476395008u,5,-8},{1409286144u,6,15},{1375731712u,7,19},{1371537408u,10,25},{1367343104u,10,26},{1358954496u,9,-23},{1350565888u,9,23},{1342177280u,9,-24},{1207959552u,5,-9},{1073741824u,5,9},{1006632960u,6,16},{939524096u,6,-16},{805306368u,5,10},{536870912u,4,0},{402653184u,5,-10},{268435456u,5,11},{0u,4,1},}, +}; + +const HuffmanTyp* mpc_table_HuffQ [2] [8] = { + {0,mpc_table_HuffQ1[0],mpc_table_HuffQ2[0],mpc_table_HuffQ3[0],mpc_table_HuffQ4[0],mpc_table_HuffQ5[0],mpc_table_HuffQ6[0],mpc_table_HuffQ7[0]}, + {0,mpc_table_HuffQ1[1],mpc_table_HuffQ2[1],mpc_table_HuffQ3[1],mpc_table_HuffQ4[1],mpc_table_HuffQ5[1],mpc_table_HuffQ6[1],mpc_table_HuffQ7[1]}, +}; diff --git a/libmednahawk/src/mpcdec/idtag.c b/libmednahawk/src/mpcdec/idtag.c new file mode 100644 index 0000000000..7c1893825a --- /dev/null +++ b/libmednahawk/src/mpcdec/idtag.c @@ -0,0 +1,87 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file idtag.c +/// Rudimentary id3tag handling routines, just enough to skip id3v2 tags, +/// if present. + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +mpc_int32_t +JumpID3v2 (mpc_reader* r) { + unsigned char tmp [10]; + mpc_uint32_t Unsynchronisation; // ID3v2.4-flag + mpc_uint32_t ExtHeaderPresent; // ID3v2.4-flag + mpc_uint32_t ExperimentalFlag; // ID3v2.4-flag + mpc_uint32_t FooterPresent; // ID3v2.4-flag + mpc_int32_t ret; + + // seek to first byte of mpc data + if (!r->seek (r->data, 0)) { + return 0; + } + + r->read(r->data, tmp, sizeof(tmp)); + + // check id3-tag + if ( 0 != memcmp ( tmp, "ID3", 3) ) + return 0; + + // read flags + Unsynchronisation = tmp[5] & 0x80; + ExtHeaderPresent = tmp[5] & 0x40; + ExperimentalFlag = tmp[5] & 0x20; + FooterPresent = tmp[5] & 0x10; + + if ( tmp[5] & 0x0F ) + return -1; // not (yet???) allowed + if ( (tmp[6] | tmp[7] | tmp[8] | tmp[9]) & 0x80 ) + return -1; // not allowed + + // read HeaderSize (syncsave: 4 * $0xxxxxxx = 28 significant bits) + ret = tmp[6] << 21; + ret += tmp[7] << 14; + ret += tmp[8] << 7; + ret += tmp[9] ; + ret += 10; + if ( FooterPresent ) + ret += 10; + + return ret; +} diff --git a/libmednahawk/src/mpcdec/internal.h b/libmednahawk/src/mpcdec/internal.h new file mode 100644 index 0000000000..eeb9a4399b --- /dev/null +++ b/libmednahawk/src/mpcdec/internal.h @@ -0,0 +1,110 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file internal.h +/// Definitions and structures used only internally by the libmpcdec. +#ifndef _MPCDEC_INTERNAL_H_ +#define _MPCDEC_INTERNAL_H_ +#ifdef WIN32 +#pragma once +#endif +#ifdef __cplusplus +extern "C" { +#endif + +#include "mpcdec.h" + +/// Big/little endian 32 bit byte swapping routine. +static mpc_inline +mpc_uint32_t mpc_swap32(mpc_uint32_t val) { + return (((val & 0xFF000000) >> 24) | ((val & 0x00FF0000) >> 8) + | ((val & 0x0000FF00) << 8) | ((val & 0x000000FF) << 24)); +} + +typedef struct mpc_block_t { + char key[2]; // block key + mpc_uint64_t size; // block size minus the block header size +} mpc_block; + +#define MAX_FRAME_SIZE 4352 +#define DEMUX_BUFFER_SIZE (65536 - MAX_FRAME_SIZE) // need some space as sand box + +struct mpc_demux_t { + mpc_reader * r; + mpc_decoder * d; + mpc_streaminfo si; + + // buffer + mpc_uint8_t buffer[DEMUX_BUFFER_SIZE + MAX_FRAME_SIZE]; + mpc_size_t bytes_total; + mpc_bits_reader bits_reader; + mpc_int32_t block_bits; /// bits remaining in current audio block + mpc_uint_t block_frames; /// frames remaining in current audio block + + // seeking + mpc_seek_t * seek_table; + mpc_uint_t seek_pwr; /// distance between 2 frames in seek_table = 2^seek_pwr + mpc_uint32_t seek_table_size; /// used size in seek_table + + // chapters + mpc_seek_t chap_pos; /// supposed position of the first chapter block + mpc_int_t chap_nb; /// number of chapters (-1 if unknown, 0 if no chapter) + mpc_chap_info * chap; /// chapters position and tag + +}; + +/** + * checks if a block key is valid + * @param key the two caracters key to check + * @return MPC_STATUS_FAIL if the key is invalid, MPC_STATUS_OK else + */ +static mpc_inline mpc_status mpc_check_key(char * key) +{ + if (key[0] < 65 || key[0] > 90 || key[1] < 65 || key[1] > 90) + return MPC_STATUS_FAIL; + return MPC_STATUS_OK; +} + +/// helper functions used by multiple files +mpc_uint32_t mpc_random_int(mpc_decoder *d); // in synth_filter.c +void mpc_decoder_init_quant(mpc_decoder *d, double scale_factor); +void mpc_decoder_synthese_filter_float(mpc_decoder *d, MPC_SAMPLE_FORMAT* OutData, mpc_int_t channels); + +#define MPC_IS_FAILURE(X) ((int)(X) < (int)MPC_STATUS_OK) +#define MPC_AUTO_FAIL(X) { mpc_status s = (X); if (MPC_IS_FAILURE(s)) return s; } + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/minimax.h b/libmednahawk/src/mpcdec/minimax.h new file mode 100644 index 0000000000..4d99bd843b --- /dev/null +++ b/libmednahawk/src/mpcdec/minimax.h @@ -0,0 +1,57 @@ +/* + * Musepack audio compression + * Copyright (C) 1999-2004 Buschmann/Klemm/Piecha/Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#pragma once + +# define clip(x,min,max) ( (x) < (min) ? (min) : (x) > (max) ? (max) : (x) ) + +#ifdef __cplusplus + +# define maxi(A,B) ( (A) >? (B) ) +# define mini(A,B) ( (A) ? (B) ) +# define mind(A,B) ( (A) ? (B) ) +# define minf(A,B) ( (A) (B) ? (A) : (B) ) +# define mini(A,B) ( (A) < (B) ? (A) : (B) ) +# define maxd(A,B) ( (A) > (B) ? (A) : (B) ) +# define mind(A,B) ( (A) < (B) ? (A) : (B) ) +# define maxf(A,B) ( (A) > (B) ? (A) : (B) ) +# define minf(A,B) ( (A) < (B) ? (A) : (B) ) + +#endif + +#ifdef __GNUC__ + +# define absi(A) abs (A) +# define absf(A) fabsf (A) +# define absd(A) fabs (A) + +#else + +# define absi(A) ( (A) >= 0 ? (A) : -(A) ) +# define absf(A) ( (A) >= 0.f ? (A) : -(A) ) +# define absd(A) ( (A) >= 0. ? (A) : -(A) ) + +#endif + diff --git a/libmednahawk/src/mpcdec/mpc_bits_reader.c b/libmednahawk/src/mpcdec/mpc_bits_reader.c new file mode 100644 index 0000000000..7b8de88799 --- /dev/null +++ b/libmednahawk/src/mpcdec/mpc_bits_reader.c @@ -0,0 +1,181 @@ +/* + Copyright (c) 2007-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "mpcdec.h" +#include "internal.h" +#include "huffman.h" +#include "mpc_bits_reader.h" + +const mpc_uint32_t Cnk[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, + {0, 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465}, + {0, 0, 0, 1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, 1140, 1330, 1540, 1771, 2024, 2300, 2600, 2925, 3276, 3654, 4060, 4495}, + {0, 0, 0, 0, 1, 5, 15, 35, 70, 126, 210, 330, 495, 715, 1001, 1365, 1820, 2380, 3060, 3876, 4845, 5985, 7315, 8855, 10626, 12650, 14950, 17550, 20475, 23751, 27405, 31465}, + {0, 0, 0, 0, 0, 1, 6, 21, 56, 126, 252, 462, 792, 1287, 2002, 3003, 4368, 6188, 8568, 11628, 15504, 20349, 26334, 33649, 42504, 53130, 65780, 80730, 98280, 118755, 142506, 169911}, + {0, 0, 0, 0, 0, 0, 1, 7, 28, 84, 210, 462, 924, 1716, 3003, 5005, 8008, 12376, 18564, 27132, 38760, 54264, 74613, 100947, 134596, 177100, 230230, 296010, 376740, 475020, 593775, 736281}, + {0, 0, 0, 0, 0, 0, 0, 1, 8, 36, 120, 330, 792, 1716, 3432, 6435, 11440, 19448, 31824, 50388, 77520, 116280, 170544, 245157, 346104, 480700, 657800, 888030, 1184040, 1560780, 2035800, 2629575}, + {0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 45, 165, 495, 1287, 3003, 6435, 12870, 24310, 43758, 75582, 125970, 203490, 319770, 490314, 735471, 1081575, 1562275, 2220075, 3108105, 4292145, 5852925, 7888725}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 55, 220, 715, 2002, 5005, 11440, 24310, 48620, 92378, 167960, 293930, 497420, 817190, 1307504, 2042975, 3124550, 4686825, 6906900, 10015005, 14307150, 20160075}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 66, 286, 1001, 3003, 8008, 19448, 43758, 92378, 184756, 352716, 646646, 1144066, 1961256, 3268760, 5311735, 8436285, 13123110, 20030010, 30045015, 44352165}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 78, 364, 1365, 4368, 12376, 31824, 75582, 167960, 352716, 705432, 1352078, 2496144, 4457400, 7726160, 13037895, 21474180, 34597290, 54627300, 84672315}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 13, 91, 455, 1820, 6188, 18564, 50388, 125970, 293930, 646646, 1352078, 2704156, 5200300, 9657700, 17383860, 30421755, 51895935, 86493225, 141120525}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 105, 560, 2380, 8568, 27132, 77520, 203490, 497420, 1144066, 2496144, 5200300, 10400600, 20058300, 37442160, 67863915, 119759850, 206253075}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15, 120, 680, 3060, 11628, 38760, 116280, 319770, 817190, 1961256, 4457400, 9657700, 20058300, 40116600, 77558760, 145422675, 265182525}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 16, 136, 816, 3876, 15504, 54264, 170544, 490314, 1307504, 3268760, 7726160, 17383860, 37442160, 77558760, 155117520, 300540195}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 153, 969, 4845, 20349, 74613, 245157, 735471, 2042975, 5311735, 13037895, 30421755, 67863915, 145422675, 300540195} +}; + +const mpc_uint8_t Cnk_len[MAX_ENUM / 2][MAX_ENUM] = +{ + {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}, + {0, 0, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9}, + {0, 0, 0, 2, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13}, + {0, 0, 0, 0, 3, 4, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16}, + {0, 0, 0, 0, 0, 3, 5, 6, 7, 8, 9, 10, 11, 11, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18}, + {0, 0, 0, 0, 0, 0, 3, 5, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20}, + {0, 0, 0, 0, 0, 0, 0, 3, 6, 7, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 21, 22, 22}, + {0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 19, 20, 21, 21, 22, 22, 23, 23, 23, 24}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 10, 11, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 21, 22, 23, 23, 24, 24, 25, 25}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 24, 25, 25, 26, 26}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 26, 27, 27}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 9, 11, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 28}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 10, 12, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 27, 28, 29}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 10, 12, 14, 16, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 28, 29}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 10, 12, 14, 16, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 10, 13, 15, 17, 18, 20, 21, 23, 24, 25, 27, 28, 29, 30} + +}; + +const mpc_uint32_t Cnk_lost[MAX_ENUM / 2][MAX_ENUM] = +{ + {0, 0, 1, 0, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, + {0, 0, 1, 2, 6, 1, 11, 4, 28, 19, 9, 62, 50, 37, 23, 8, 120, 103, 85, 66, 46, 25, 3, 236, 212, 187, 161, 134, 106, 77, 47, 16}, + {0, 0, 0, 0, 6, 12, 29, 8, 44, 8, 91, 36, 226, 148, 57, 464, 344, 208, 55, 908, 718, 508, 277, 24, 1796, 1496, 1171, 820, 442, 36, 3697, 3232}, + {0, 0, 0, 0, 3, 1, 29, 58, 2, 46, 182, 17, 309, 23, 683, 228, 1716, 1036, 220, 3347, 2207, 877, 7529, 5758, 3734, 1434, 15218, 12293, 9017, 5363, 1303, 29576}, + {0, 0, 0, 0, 0, 2, 11, 8, 2, 4, 50, 232, 761, 46, 1093, 3824, 2004, 7816, 4756, 880, 12419, 6434, 31887, 23032, 12406, 65292, 50342, 32792, 12317, 119638, 92233, 60768}, + {0, 0, 0, 0, 0, 0, 1, 4, 44, 46, 50, 100, 332, 1093, 3187, 184, 4008, 14204, 5636, 26776, 11272, 56459, 30125, 127548, 85044, 31914, 228278, 147548, 49268, 454801, 312295, 142384}, + {0, 0, 0, 0, 0, 0, 0, 0, 28, 8, 182, 232, 332, 664, 1757, 4944, 13320, 944, 15148, 53552, 14792, 91600, 16987, 178184, 43588, 390776, 160546, 913112, 536372, 61352, 1564729, 828448}, + {0, 0, 0, 0, 0, 0, 0, 0, 7, 19, 91, 17, 761, 1093, 1757, 3514, 8458, 21778, 55490, 5102, 58654, 204518, 33974, 313105, 1015577, 534877, 1974229, 1086199, 4096463, 2535683, 499883, 6258916}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 9, 36, 309, 46, 3187, 4944, 8458, 16916, 38694, 94184, 230358, 26868, 231386, 789648, 54177, 1069754, 3701783, 1481708, 6762211, 2470066, 13394357, 5505632}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 62, 226, 23, 1093, 184, 13320, 21778, 38694, 77388, 171572, 401930, 953086, 135896, 925544, 3076873, 8340931, 3654106, 13524422, 3509417, 22756699, 2596624}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50, 148, 683, 3824, 4008, 944, 55490, 94184, 171572, 343144, 745074, 1698160, 3931208, 662448, 3739321, 12080252, 32511574, 12481564, 49545413, 5193248}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 37, 57, 228, 2004, 14204, 15148, 5102, 230358, 401930, 745074, 1490148, 3188308, 7119516, 16170572, 3132677, 15212929, 47724503, 127314931, 42642616}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 464, 1716, 7816, 5636, 53552, 58654, 26868, 953086, 1698160, 3188308, 6376616, 13496132, 29666704, 66353813, 14457878, 62182381, 189497312}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 344, 1036, 4756, 26776, 14792, 204518, 231386, 135896, 3931208, 7119516, 13496132, 26992264, 56658968, 123012781, 3252931, 65435312}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 208, 220, 880, 11272, 91600, 33974, 789648, 925544, 662448, 16170572, 29666704, 56658968, 113317936, 236330717, 508019104}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 103, 55, 3347, 12419, 56459, 16987, 313105, 54177, 3076873, 3739321, 3132677, 66353813, 123012781, 236330717} +}; + +static const mpc_uint8_t log2[32] = +{ 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}; + +static const mpc_uint8_t log2_lost[32] = +{ 0, 1, 0, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 31}; + +mpc_int32_t mpc_bits_golomb_dec(mpc_bits_reader * r, const mpc_uint_t k) +{ + unsigned int l = 0; + unsigned int code = r->buff[0] & ((1 << r->count) - 1); + + while( code == 0 ) { + l += r->count; + r->buff++; + code = r->buff[0]; + r->count = 8; + } + + while( ((1 << (r->count - 1)) & code) == 0 ) { + l++; + r->count--; + } + r->count--; + + while( r->count < k ) { + r->buff++; + r->count += 8; + code = (code << 8) | r->buff[0]; + } + + r->count -= k; + + return (l << k) | ((code >> r->count) & ((1 << k) - 1)); +} + +mpc_uint32_t mpc_bits_log_dec(mpc_bits_reader * r, mpc_uint_t max) +{ + mpc_uint32_t value = 0; + if (max == 0) + return 0; + if (log2[max - 1] > 1) + value = mpc_bits_read(r, log2[max - 1] - 1); + if (value >= log2_lost[max - 1]) + value = ((value << 1) | mpc_bits_read(r, 1)) - log2_lost[max - 1]; + return value; +} + +unsigned int mpc_bits_get_size(mpc_bits_reader * r, mpc_uint64_t * p_size) +{ + unsigned char tmp; + mpc_uint64_t size = 0; + unsigned int ret = 0; + + do { + tmp = mpc_bits_read(r, 8); + size = (size << 7) | (tmp & 0x7F); + ret++; + } while((tmp & 0x80)); + + *p_size = size; + return ret; +} + +int mpc_bits_get_block(mpc_bits_reader * r, mpc_block * p_block) +{ + int size = 2; + + p_block->size = 0; + p_block->key[0] = mpc_bits_read(r, 8); + p_block->key[1] = mpc_bits_read(r, 8); + + size += mpc_bits_get_size(r, &(p_block->size)); + + if (p_block->size >= size) // check if the block size doesn't conflict with the header size + p_block->size -= size; + + return size; +} + + + diff --git a/libmednahawk/src/mpcdec/mpc_bits_reader.h b/libmednahawk/src/mpcdec/mpc_bits_reader.h new file mode 100644 index 0000000000..6b5ac02b5b --- /dev/null +++ b/libmednahawk/src/mpcdec/mpc_bits_reader.h @@ -0,0 +1,149 @@ +/* + Copyright (c) 2007-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define MAX_ENUM 32 + +MPC_API int mpc_bits_get_block(mpc_bits_reader * r, mpc_block * p_block); +mpc_int32_t mpc_bits_golomb_dec(mpc_bits_reader * r, const mpc_uint_t k); +MPC_API unsigned int mpc_bits_get_size(mpc_bits_reader * r, mpc_uint64_t * p_size); +mpc_uint32_t mpc_bits_log_dec(mpc_bits_reader * r, mpc_uint_t max); + +extern const mpc_uint32_t Cnk[MAX_ENUM / 2][MAX_ENUM]; +extern const mpc_uint8_t Cnk_len[MAX_ENUM / 2][MAX_ENUM]; +extern const mpc_uint32_t Cnk_lost[MAX_ENUM / 2][MAX_ENUM]; + +// can read up to 31 bits +static mpc_inline mpc_uint32_t mpc_bits_read(mpc_bits_reader * r, const unsigned int nb_bits) +{ + mpc_uint32_t ret; + + r->buff -= (int)(r->count - nb_bits) >> 3; + r->count = (r->count - nb_bits) & 0x07; + + ret = (r->buff[0] | (r->buff[-1] << 8)) >> r->count; + if (nb_bits > (16 - r->count)) { + ret |= (mpc_uint32_t)((r->buff[-2] << 16) | (r->buff[-3] << 24)) >> r->count; + if (nb_bits > 24 && r->count != 0) + ret |= r->buff[-4] << (32 - r->count); + } + + return ret & ((1 << nb_bits) - 1); +} + +// basic huffman decoding routine +// works with maximum lengths up to 16 +static mpc_inline mpc_int32_t mpc_bits_huff_dec(mpc_bits_reader * r, const mpc_huffman *Table) +{ + mpc_uint16_t code; + code = (mpc_uint16_t)((((r->buff[0] << 16) | (r->buff[1] << 8) | r->buff[2]) >> r->count) & 0xFFFF); + + while (code < Table->Code) Table++; + + r->buff -= (int)(r->count - Table->Length) >> 3; + r->count = (r->count - Table->Length) & 0x07; + + return Table->Value; +} + +static mpc_inline mpc_int32_t mpc_bits_can_dec(mpc_bits_reader * r, const mpc_can_data *can) +{ + mpc_uint16_t code; + mpc_huff_lut tmp; + const mpc_huffman * Table; + code = (mpc_uint16_t)((((r->buff[0] << 16) | (r->buff[1] << 8) | r->buff[2]) >> r->count) & 0xFFFF); + + tmp = can->lut[code >> (16 - LUT_DEPTH)]; + if (tmp.Length != 0) { + r->buff -= (int)(r->count - tmp.Length) >> 3; + r->count = (r->count - tmp.Length) & 0x07; + return tmp.Value; + } + + Table = can->table + (unsigned char)tmp.Value; + while (code < Table->Code) Table++; + + r->buff -= (int)(r->count - Table->Length) >> 3; + r->count = (r->count - Table->Length) & 0x07; + + return can->sym[(Table->Value - (code >> (16 - Table->Length))) & 0xFF] ; +} + +// LUT-based huffman decoding routine +// works with maximum lengths up to 16 +static mpc_inline mpc_int32_t mpc_bits_huff_lut(mpc_bits_reader * r, const mpc_lut_data *lut) +{ + mpc_uint16_t code; + mpc_huff_lut tmp; + const mpc_huffman * Table; + code = (mpc_uint16_t)((((r->buff[0] << 16) | (r->buff[1] << 8) | r->buff[2]) >> r->count) & 0xFFFF); + + tmp = lut->lut[code >> (16 - LUT_DEPTH)]; + if (tmp.Length != 0) { + r->buff -= (int)(r->count - tmp.Length) >> 3; + r->count = (r->count - tmp.Length) & 0x07; + return tmp.Value; + } + + Table = lut->table + (unsigned char)tmp.Value; + while (code < Table->Code) Table++; + + r->buff -= (int)(r->count - Table->Length) >> 3; + r->count = (r->count - Table->Length) & 0x07; + + return Table->Value; +} + +static mpc_inline mpc_uint32_t mpc_bits_enum_dec(mpc_bits_reader * r, mpc_uint_t k, mpc_uint_t n) +{ + mpc_uint32_t bits = 0; + mpc_uint32_t code; + const mpc_uint32_t * C = Cnk[k-1]; + + code = mpc_bits_read(r, Cnk_len[k-1][n-1] - 1); + + if (code >= Cnk_lost[k-1][n-1]) + code = ((code << 1) | mpc_bits_read(r, 1)) - Cnk_lost[k-1][n-1]; + + do { + n--; + if (code >= C[n]) { + bits |= 1 << n; + code -= C[n]; + C -= MAX_ENUM; + k--; + } + } while(k > 0); + + return bits; +} diff --git a/libmednahawk/src/mpcdec/mpc_decoder.c b/libmednahawk/src/mpcdec/mpc_decoder.c new file mode 100644 index 0000000000..b130548888 --- /dev/null +++ b/libmednahawk/src/mpcdec/mpc_decoder.c @@ -0,0 +1,681 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpc_decoder.c +/// Core decoding routines and logic. + +#include +#include "mpcdec.h" +#include "minimax.h" +#include "decoder.h" +#include "huffman.h" +#include "internal.h" +#include "mpcdec_math.h" +#include "requant.h" +#include "mpc_bits_reader.h" + +//SV7 tables +extern const mpc_lut_data mpc_HuffQ [7] [2]; +extern const mpc_lut_data mpc_HuffHdr; +extern const mpc_huffman mpc_table_HuffSCFI [ 4]; +extern const mpc_lut_data mpc_HuffDSCF; + +//SV8 tables +extern const mpc_can_data mpc_can_Bands; +extern const mpc_can_data mpc_can_SCFI[2]; +extern const mpc_can_data mpc_can_DSCF[2]; +extern const mpc_can_data mpc_can_Res [2]; +extern const mpc_can_data mpc_can_Q [8][2]; +extern const mpc_can_data mpc_can_Q1; +extern const mpc_can_data mpc_can_Q9up; + +//------------------------------------------------------------------------------ +// types +//------------------------------------------------------------------------------ +enum +{ + MEMSIZE = MPC_DECODER_MEMSIZE, // overall buffer size + MEMSIZE2 = (MEMSIZE/2), // size of one buffer + MEMMASK = (MEMSIZE-1) +}; + +//------------------------------------------------------------------------------ +// forward declarations +//------------------------------------------------------------------------------ +void mpc_decoder_read_bitstream_sv7(mpc_decoder * d, mpc_bits_reader * r); +void mpc_decoder_read_bitstream_sv8(mpc_decoder * d, mpc_bits_reader * r, + mpc_bool_t is_key_frame); +static void mpc_decoder_requantisierung(mpc_decoder *d); + +/** + * set the scf indexes for seeking use + * needed only for sv7 seeking + * @param d + */ +void mpc_decoder_reset_scf(mpc_decoder * d, int value) +{ + memset(d->SCF_Index_L, value, sizeof d->SCF_Index_L ); + memset(d->SCF_Index_R, value, sizeof d->SCF_Index_R ); +} + + +void mpc_decoder_setup(mpc_decoder *d) +{ + memset(d, 0, sizeof *d); + + d->__r1 = 1; + d->__r2 = 1; + + mpc_decoder_init_quant(d, 1.0f); +} + +void mpc_decoder_set_streaminfo(mpc_decoder *d, mpc_streaminfo *si) +{ + d->stream_version = si->stream_version; + d->ms = si->ms; + d->max_band = si->max_band; + d->channels = si->channels; + d->samples_to_skip = MPC_DECODER_SYNTH_DELAY + si->beg_silence; + + if (si->stream_version == 7 && si->is_true_gapless) + d->samples = ((si->samples + MPC_FRAME_LENGTH - 1) / MPC_FRAME_LENGTH) * MPC_FRAME_LENGTH; + else + d->samples = si->samples; +} + +mpc_decoder * mpc_decoder_init(mpc_streaminfo *si) +{ + mpc_decoder* p_tmp = malloc(sizeof(mpc_decoder)); + + if (p_tmp != 0) { + mpc_decoder_setup(p_tmp); + mpc_decoder_set_streaminfo(p_tmp, si); + huff_init_lut(LUT_DEPTH); // FIXME : this needs to be called only once when the library is loaded + } + + return p_tmp; +} + +void mpc_decoder_exit(mpc_decoder *d) +{ + free(d); +} + +void mpc_decoder_decode_frame(mpc_decoder * d, + mpc_bits_reader * r, + mpc_frame_info * i) +{ + mpc_bits_reader r_sav = *r; + mpc_int64_t samples_left; + + samples_left = d->samples - d->decoded_samples + MPC_DECODER_SYNTH_DELAY; + + if (samples_left <= 0 && d->samples != 0) { + i->samples = 0; + i->bits = -1; + return; + } + + if (d->stream_version == 8) + mpc_decoder_read_bitstream_sv8(d, r, i->is_key_frame); + else + mpc_decoder_read_bitstream_sv7(d, r); + + if (d->samples_to_skip < MPC_FRAME_LENGTH + MPC_DECODER_SYNTH_DELAY) { + mpc_decoder_requantisierung(d); + mpc_decoder_synthese_filter_float(d, i->buffer, d->channels); + } + + d->decoded_samples += MPC_FRAME_LENGTH; + + // reconstruct exact filelength + if (d->decoded_samples - d->samples < MPC_FRAME_LENGTH && d->stream_version == 7) { + int last_frame_samples = mpc_bits_read(r, 11); + if (d->decoded_samples == d->samples) { + if (last_frame_samples == 0) last_frame_samples = MPC_FRAME_LENGTH; + d->samples += last_frame_samples - MPC_FRAME_LENGTH; + samples_left += last_frame_samples - MPC_FRAME_LENGTH; + } + } + + i->samples = samples_left > MPC_FRAME_LENGTH ? MPC_FRAME_LENGTH : samples_left < 0 ? 0 : (mpc_uint32_t) samples_left; + i->bits = (mpc_uint32_t) (((r->buff - r_sav.buff) << 3) + r_sav.count - r->count); + + if (d->samples_to_skip) { + if (i->samples <= d->samples_to_skip) { + d->samples_to_skip -= i->samples; + i->samples = 0; + } else { + i->samples -= d->samples_to_skip; + memmove(i->buffer, i->buffer + d->samples_to_skip * d->channels, + i->samples * d->channels * sizeof (MPC_SAMPLE_FORMAT)); + d->samples_to_skip = 0; + } + } +} + +void +mpc_decoder_requantisierung(mpc_decoder *d) +{ + mpc_int32_t Band; + mpc_int32_t n; + MPC_SAMPLE_FORMAT facL; + MPC_SAMPLE_FORMAT facR; + MPC_SAMPLE_FORMAT templ; + MPC_SAMPLE_FORMAT tempr; + MPC_SAMPLE_FORMAT* YL; + MPC_SAMPLE_FORMAT* YR; + mpc_int16_t* L; + mpc_int16_t* R; + const mpc_int32_t Last_Band = d->max_band; + +#ifdef MPC_FIXED_POINT +#if MPC_FIXED_POINT_FRACTPART == 14 +#define MPC_MULTIPLY_SCF(CcVal, SCF_idx) \ + MPC_MULTIPLY_EX(CcVal, d->SCF[SCF_idx], d->SCF_shift[SCF_idx]) +#else + +#error FIXME, Cc table is in 18.14 format + +#endif +#else +#define MPC_MULTIPLY_SCF(CcVal, SCF_idx) \ + MPC_MULTIPLY(CcVal, d->SCF[SCF_idx]) +#endif + // requantization and scaling of subband-samples + for ( Band = 0; Band <= Last_Band; Band++ ) { // setting pointers + YL = d->Y_L[0] + Band; + YR = d->Y_R[0] + Band; + L = d->Q[Band].L; + R = d->Q[Band].R; + /************************** MS-coded **************************/ + if ( d->MS_Flag [Band] ) { + if ( d->Res_L [Band] ) { + if ( d->Res_R [Band] ) { // M!=0, S!=0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = (templ = MPC_MULTIPLY_FLOAT_INT(facL,*L++))+(tempr = MPC_MULTIPLY_FLOAT_INT(facR,*R++)); + *YR = templ - tempr; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YL = (templ = MPC_MULTIPLY_FLOAT_INT(facL,*L++))+(tempr = MPC_MULTIPLY_FLOAT_INT(facR,*R++)); + *YR = templ - tempr; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YL = (templ = MPC_MULTIPLY_FLOAT_INT(facL,*L++))+(tempr = MPC_MULTIPLY_FLOAT_INT(facR,*R++)); + *YR = templ - tempr; + } + } else { // M!=0, S==0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YR = *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YR = *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YR = *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + } + } + } else { + if (d->Res_R[Band]) // M==0, S!=0 + { + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YR = - (*YL = MPC_MULTIPLY_FLOAT_INT(facR,*(R++))); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YR = - (*YL = MPC_MULTIPLY_FLOAT_INT(facR,*(R++))); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YR = - (*YL = MPC_MULTIPLY_FLOAT_INT(facR,*(R++))); + } + } else { // M==0, S==0 + for ( n = 0; n < 36; n++, YL += 32, YR += 32 ) { + *YR = *YL = 0; + } + } + } + } + /************************** LR-coded **************************/ + else { + if ( d->Res_L [Band] ) { + if ( d->Res_R [Band] ) { // L!=0, R!=0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for (n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for (; n < 24; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for (; n < 36; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + } else { // L!=0, R==0 + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = 0; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = 0; + } + facL = MPC_MULTIPLY_SCF( Cc[d->Res_L[Band]] , d->SCF_Index_L[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YL = MPC_MULTIPLY_FLOAT_INT(facL,*L++); + *YR = 0; + } + } + } + else { + if ( d->Res_R [Band] ) { // L==0, R!=0 + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][0] & 0xFF); + for ( n = 0; n < 12; n++, YL += 32, YR += 32 ) { + *YL = 0; + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][1] & 0xFF); + for ( ; n < 24; n++, YL += 32, YR += 32 ) { + *YL = 0; + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + facR = MPC_MULTIPLY_SCF( Cc[d->Res_R[Band]] , d->SCF_Index_R[Band][2] & 0xFF); + for ( ; n < 36; n++, YL += 32, YR += 32 ) { + *YL = 0; + *YR = MPC_MULTIPLY_FLOAT_INT(facR,*R++); + } + } else { // L==0, R==0 + for ( n = 0; n < 36; n++, YL += 32, YR += 32 ) { + *YR = *YL = 0; + } + } + } + } + } +} + +void mpc_decoder_read_bitstream_sv7(mpc_decoder * d, mpc_bits_reader * r) +{ + // these arrays hold decoding results for bundled quantizers (3- and 5-step) + static const mpc_int32_t idx30[] = { -1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1,-1, 0, 1}; + static const mpc_int32_t idx31[] = { -1,-1,-1, 0, 0, 0, 1, 1, 1,-1,-1,-1, 0, 0, 0, 1, 1, 1,-1,-1,-1, 0, 0, 0, 1, 1, 1}; + static const mpc_int32_t idx32[] = { -1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + static const mpc_int32_t idx50[] = { -2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2,-2,-1, 0, 1, 2}; + static const mpc_int32_t idx51[] = { -2,-2,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; + + mpc_int32_t n, idx, Max_used_Band = 0; + + /***************************** Header *****************************/ + + // first subband + d->Res_L[0] = mpc_bits_read(r, 4); + d->Res_R[0] = mpc_bits_read(r, 4); + if (!(d->Res_L[0] == 0 && d->Res_R[0] == 0)) { + if (d->ms) + d->MS_Flag[0] = mpc_bits_read(r, 1); + Max_used_Band = 1; + } + + // consecutive subbands + for ( n = 1; n <= d->max_band; n++ ) { + idx = mpc_bits_huff_lut(r, & mpc_HuffHdr); + d->Res_L[n] = (idx!=4) ? d->Res_L[n - 1] + idx : (int) mpc_bits_read(r, 4); + + idx = mpc_bits_huff_lut(r, & mpc_HuffHdr); + d->Res_R[n] = (idx!=4) ? d->Res_R[n - 1] + idx : (int) mpc_bits_read(r, 4); + + if (!(d->Res_L[n] == 0 && d->Res_R[n] == 0)) { + if (d->ms) + d->MS_Flag[n] = mpc_bits_read(r, 1); + Max_used_Band = n + 1; + } + } + + /****************************** SCFI ******************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + if (d->Res_L[n]) + d->SCFI_L[n] = mpc_bits_huff_dec(r, mpc_table_HuffSCFI); + if (d->Res_R[n]) + d->SCFI_R[n] = mpc_bits_huff_dec(r, mpc_table_HuffSCFI); + } + + /**************************** SCF/DSCF ****************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int32_t * SCF = d->SCF_Index_L[n]; + mpc_uint32_t Res = d->Res_L[n], SCFI = d->SCFI_L[n]; + do { + if (Res) { + switch (SCFI) { + case 1: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[1] = (idx!=8) ? SCF[0] + idx : (int) mpc_bits_read(r, 6); + SCF[2] = SCF[1]; + break; + case 3: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + SCF[1] = SCF[0]; + SCF[2] = SCF[1]; + break; + case 2: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + SCF[1] = SCF[0]; + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[2] = (idx!=8) ? SCF[1] + idx : (int) mpc_bits_read(r, 6); + break; + case 0: + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[0] = (idx!=8) ? SCF[2] + idx : (int) mpc_bits_read(r, 6); + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[1] = (idx!=8) ? SCF[0] + idx : (int) mpc_bits_read(r, 6); + idx = mpc_bits_huff_lut(r, & mpc_HuffDSCF); + SCF[2] = (idx!=8) ? SCF[1] + idx : (int) mpc_bits_read(r, 6); + break; + default: + return; + } + if (SCF[0] > 1024) + SCF[0] = 0x8080; + if (SCF[1] > 1024) + SCF[1] = 0x8080; + if (SCF[2] > 1024) + SCF[2] = 0x8080; + } + Res = d->Res_R[n]; + SCFI = d->SCFI_R[n]; + } while ( SCF == d->SCF_Index_L[n] && (SCF = d->SCF_Index_R[n])); + } + +// if (d->seeking == TRUE) +// return; + + /***************************** Samples ****************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int16_t *q = d->Q[n].L, Res = d->Res_L[n]; + do { + mpc_int32_t k; + const mpc_lut_data *Table; + switch (Res) { + case -2: case -3: case -4: case -5: case -6: case -7: case -8: case -9: + case -10: case -11: case -12: case -13: case -14: case -15: case -16: case -17: case 0: + break; + case -1: + for (k=0; k<36; k++ ) { + mpc_uint32_t tmp = mpc_random_int(d); + q[k] = ((tmp >> 24) & 0xFF) + ((tmp >> 16) & 0xFF) + ((tmp >> 8) & 0xFF) + ((tmp >> 0) & 0xFF) - 510; + } + break; + case 1: + Table = & mpc_HuffQ[0][mpc_bits_read(r, 1)]; + for ( k = 0; k < 36; k += 3) { + idx = mpc_bits_huff_lut(r, Table); + q[k] = idx30[idx]; + q[k + 1] = idx31[idx]; + q[k + 2] = idx32[idx]; + } + break; + case 2: + Table = & mpc_HuffQ[1][mpc_bits_read(r, 1)]; + for ( k = 0; k < 36; k += 2) { + idx = mpc_bits_huff_lut(r, Table); + q[k] = idx50[idx]; + q[k + 1] = idx51[idx]; + } + break; + case 3: + case 4: + case 5: + case 6: + case 7: + Table = & mpc_HuffQ[Res - 1][mpc_bits_read(r, 1)]; + for ( k = 0; k < 36; k++ ) + q[k] = mpc_bits_huff_lut(r, Table); + break; + case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: + for ( k = 0; k < 36; k++ ) + q[k] = (mpc_int32_t)mpc_bits_read(r, Res_bit[Res]) - Dc[Res]; + break; + default: + return; + } + + Res = d->Res_R[n]; + } while (q == d->Q[n].L && (q = d->Q[n].R)); + } +} + +void mpc_decoder_read_bitstream_sv8(mpc_decoder * d, mpc_bits_reader * r, mpc_bool_t is_key_frame) +{ + // these arrays hold decoding results for bundled quantizers (3- and 5-step) + static const mpc_int8_t idx50[125] = {-2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2, -2, -1, 0, 1, 2}; + static const mpc_int8_t idx51[125] = {-2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2}; + static const mpc_int8_t idx52[125] = {-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}; + + mpc_int32_t n, Max_used_Band; + const mpc_can_data * Table, * Tables[2]; + + /***************************** Header *****************************/ + + if (is_key_frame == MPC_TRUE) { + Max_used_Band = mpc_bits_log_dec(r, d->max_band + 1); + } else { + Max_used_Band = d->last_max_band + mpc_bits_can_dec(r, & mpc_can_Bands); + if (Max_used_Band > 32) Max_used_Band -= 33; + } + d->last_max_band = Max_used_Band; + + if (Max_used_Band) { + d->Res_L[Max_used_Band-1] = mpc_bits_can_dec(r, & mpc_can_Res[0]); + d->Res_R[Max_used_Band-1] = mpc_bits_can_dec(r, & mpc_can_Res[0]); + if (d->Res_L[Max_used_Band-1] > 15) d->Res_L[Max_used_Band-1] -= 17; + if (d->Res_R[Max_used_Band-1] > 15) d->Res_R[Max_used_Band-1] -= 17; + for ( n = Max_used_Band - 2; n >= 0; n--) { + d->Res_L[n] = mpc_bits_can_dec(r, & mpc_can_Res[d->Res_L[n + 1] > 2]) + d->Res_L[n + 1]; + if (d->Res_L[n] > 15) d->Res_L[n] -= 17; + d->Res_R[n] = mpc_bits_can_dec(r, & mpc_can_Res[d->Res_R[n + 1] > 2]) + d->Res_R[n + 1]; + if (d->Res_R[n] > 15) d->Res_R[n] -= 17; + } + + if (d->ms) { + mpc_uint_t cnt = 0, tot = 0; + mpc_uint32_t tmp = 0; + for( n = 0; n < Max_used_Band; n++) + if ( d->Res_L[n] != 0 || d->Res_R[n] != 0 ) + tot++; + cnt = mpc_bits_log_dec(r, tot); + if (cnt != 0 && cnt != tot) + tmp = mpc_bits_enum_dec(r, mini(cnt, tot-cnt), tot); + if (cnt * 2 > tot) tmp = ~tmp; + for( n = Max_used_Band - 1; n >= 0; n--) + if ( d->Res_L[n] != 0 || d->Res_R[n] != 0 ) { + d->MS_Flag[n] = tmp & 1; + tmp >>= 1; + } + } + } + + for( n = Max_used_Band; n <= d->max_band; n++) + d->Res_L[n] = d->Res_R[n] = 0; + + /****************************** SCFI ******************************/ + if (is_key_frame == MPC_TRUE){ + for( n = 0; n < 32; n++) + d->DSCF_Flag_L[n] = d->DSCF_Flag_R[n] = 1; // new block -> force key frame + } + + Tables[0] = & mpc_can_SCFI[0]; + Tables[1] = & mpc_can_SCFI[1]; + for ( n = 0; n < Max_used_Band; n++ ) { + int tmp = 0, cnt = -1; + if (d->Res_L[n]) cnt++; + if (d->Res_R[n]) cnt++; + if (cnt >= 0) { + tmp = mpc_bits_can_dec(r, Tables[cnt]); + if (d->Res_L[n]) d->SCFI_L[n] = tmp >> (2 * cnt); + if (d->Res_R[n]) d->SCFI_R[n] = tmp & 3; + } + } + + /**************************** SCF/DSCF ****************************/ + + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int32_t * SCF = d->SCF_Index_L[n]; + mpc_uint32_t Res = d->Res_L[n], SCFI = d->SCFI_L[n]; + mpc_bool_t * DSCF_Flag = &d->DSCF_Flag_L[n]; + + do { + if ( Res ) { + int m; + if (*DSCF_Flag == 1) { + SCF[0] = (mpc_int32_t)mpc_bits_read(r, 7) - 6; + *DSCF_Flag = 0; + } else { + mpc_uint_t tmp = mpc_bits_can_dec(r, & mpc_can_DSCF[1]); + if (tmp == 64) + tmp += mpc_bits_read(r, 6); + SCF[0] = ((SCF[2] - 25 + tmp) & 127) - 6; + } + for( m = 0; m < 2; m++){ + if (((SCFI << m) & 2) == 0) { + mpc_uint_t tmp = mpc_bits_can_dec(r, & mpc_can_DSCF[0]); + if (tmp == 31) + tmp = 64 + mpc_bits_read(r, 6); + SCF[m + 1] = ((SCF[m] - 25 + tmp) & 127) - 6; + } else + SCF[m + 1] = SCF[m]; + } + } + Res = d->Res_R[n]; + SCFI = d->SCFI_R[n]; + DSCF_Flag = &d->DSCF_Flag_R[n]; + } while ( SCF == d->SCF_Index_L[n] && (SCF = d->SCF_Index_R[n])); + } + + /***************************** Samples ****************************/ + for ( n = 0; n < Max_used_Band; n++ ) { + mpc_int16_t *q = d->Q[n].L, Res = d->Res_L[n]; + static const unsigned int thres[] = {0, 0, 3, 0, 0, 1, 3, 4, 8}; + static const mpc_int8_t HuffQ2_var[5*5*5] = + {6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6}; + + do { + mpc_uint32_t k = 0, idx = 1; + if (Res != 0) { + if (Res == 2) { + Tables[0] = & mpc_can_Q [0][0]; + Tables[1] = & mpc_can_Q [0][1]; + idx = 2 * thres[Res]; + for ( ; k < 36; k += 3) { + int tmp = mpc_bits_can_dec(r, Tables[idx > thres[Res]]); + q[k] = idx50[tmp]; + q[k + 1] = idx51[tmp]; + q[k + 2] = idx52[tmp]; + idx = (idx >> 1) + HuffQ2_var[tmp]; + } + } else if (Res == 1) { + Table = & mpc_can_Q1; + for( ; k < 36; ){ + mpc_uint32_t kmax = k + 18; + mpc_uint_t cnt = mpc_bits_can_dec(r, Table); + idx = 0; + if (cnt > 0 && cnt < 18) + idx = mpc_bits_enum_dec(r, cnt <= 9 ? cnt : 18 - cnt, 18); + if (cnt > 9) idx = ~idx; + for ( ; k < kmax; k++) { + q[k] = 0; + if ( idx & (1 << 17) ) + q[k] = (mpc_bits_read(r, 1) << 1) - 1; + idx <<= 1; + } + } + } else if (Res == -1) { + for ( ; k<36; k++ ) { + mpc_uint32_t tmp = mpc_random_int(d); + q[k] = ((tmp >> 24) & 0xFF) + ((tmp >> 16) & 0xFF) + ((tmp >> 8) & 0xFF) + ((tmp >> 0) & 0xFF) - 510; + } + } else if (Res <= 4) { + Table = & mpc_can_Q[1][Res - 3]; + for ( ; k < 36; k += 2 ) { + union { + mpc_int8_t sym; + struct { mpc_int8_t s1:4, s2:4; }; + } tmp; + tmp.sym = mpc_bits_can_dec(r, Table); + q[k] = tmp.s1; + q[k + 1] = tmp.s2; + } + } else if (Res <= 8) { + Tables[0] = & mpc_can_Q [Res - 3][0]; + Tables[1] = & mpc_can_Q [Res - 3][1]; + idx = 2 * thres[Res]; + for ( ; k < 36; k++ ) { + q[k] = mpc_bits_can_dec(r, Tables[idx > thres[Res]]); + idx = (idx >> 1) + absi(q[k]); + } + } else { + for ( ; k < 36; k++ ) { + q[k] = (unsigned char) mpc_bits_can_dec(r, & mpc_can_Q9up); + if (Res != 9) + q[k] = (q[k] << (Res - 9)) | mpc_bits_read(r, Res - 9); + q[k] -= Dc[Res]; + } + } + } + + Res = d->Res_R[n]; + } while (q == d->Q[n].L && (q = d->Q[n].R)); + } +} + diff --git a/libmednahawk/src/mpcdec/mpc_demux.c b/libmednahawk/src/mpcdec/mpc_demux.c new file mode 100644 index 0000000000..c31cf3fb5a --- /dev/null +++ b/libmednahawk/src/mpcdec/mpc_demux.c @@ -0,0 +1,738 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include "streaminfo.h" +#include "mpcdec.h" +#include "minimax.h" +#include "internal.h" +#include "decoder.h" +#include "huffman.h" +#include "mpc_bits_reader.h" + +/// maximum number of seek points in the table. The distance between points will +/// be adapted so this value is never exceeded. +#define MAX_SEEK_TABLE_SIZE 65536 + +// streaminfo.c +mpc_status streaminfo_read_header_sv8(mpc_streaminfo* si, + const mpc_bits_reader * r_in, + mpc_size_t block_size); +mpc_status streaminfo_read_header_sv7(mpc_streaminfo* si, mpc_bits_reader * r_in); +void streaminfo_encoder_info(mpc_streaminfo* si, const mpc_bits_reader * r_in); +void streaminfo_gain(mpc_streaminfo* si, const mpc_bits_reader * r_in); + +// mpc_decoder.c +void mpc_decoder_reset_scf(mpc_decoder * d, int value); + +enum { + MPC_BUFFER_SWAP = 1, + MPC_BUFFER_FULL = 2, +}; + +static void mpc_demux_clear_buff(mpc_demux * d) +{ + d->bytes_total = 0; + d->bits_reader.buff = d->buffer; + d->bits_reader.count = 8; + d->block_bits = 0; + d->block_frames = 0; +} + +// Returns the amount of unread bytes in the demux buffer. +// Unchecked version - may return a negative value when we've been reading +// past the end of the valid data as a result of some problem with the file. +static mpc_int32_t mpc_unread_bytes_unchecked(mpc_demux * d) { + return d->bytes_total + d->buffer - d->bits_reader.buff - ((8 - d->bits_reader.count) >> 3); +} + +// Returns the amount of unread bytes in the demux buffer. +static mpc_uint32_t mpc_unread_bytes(mpc_demux * d) { + mpc_int32_t unread_bytes = mpc_unread_bytes_unchecked(d); + + if (unread_bytes < 0) return 0; + + return (mpc_uint32_t) unread_bytes; +} + + + +// Returns the number of bytes available in the buffer. +static mpc_uint32_t +mpc_demux_fill(mpc_demux * d, mpc_uint32_t min_bytes, int flags) +{ + mpc_uint32_t unread_bytes = (mpc_uint32_t) mpc_unread_bytes_unchecked(d); + int offset = 0; + + if ((mpc_int32_t) + unread_bytes < 0) return 0; // Error - we've been reading past the end of the buffer - abort + + if (min_bytes == 0 || min_bytes > DEMUX_BUFFER_SIZE || + (unread_bytes < min_bytes && (flags & MPC_BUFFER_FULL) != 0 )) + min_bytes = DEMUX_BUFFER_SIZE; + + if (unread_bytes < min_bytes) { + mpc_uint32_t bytes2read = min_bytes - unread_bytes; + mpc_uint32_t bytes_free = DEMUX_BUFFER_SIZE - d->bytes_total; + mpc_uint32_t bytesread; + + if (flags & MPC_BUFFER_SWAP) { + bytes2read &= -1 << 2; + offset = (unread_bytes + 3) & ( -1 << 2); + offset -= unread_bytes; + } + + if (bytes2read > bytes_free) { + if (d->bits_reader.count == 0) { + d->bits_reader.count = 8; + d->bits_reader.buff++; + } + memmove(d->buffer + offset, d->bits_reader.buff, unread_bytes); + d->bits_reader.buff = d->buffer + offset; + d->bytes_total = unread_bytes + offset; + } + bytesread = d->r->read(d->r, d->buffer + d->bytes_total, bytes2read); + if (bytesread < bytes2read) { + memset(d->buffer + d->bytes_total + bytesread, 0, bytes2read - bytesread); // FIXME : why ? + } + if (flags & MPC_BUFFER_SWAP) { + unsigned int i, * tmp = (unsigned int *) (d->buffer + d->bytes_total); + for(i = 0 ;i < (bytes2read >> 2); i++) + tmp[i] = mpc_swap32(tmp[i]); + } + d->bytes_total += bytesread; + unread_bytes += bytesread; + } + + return unread_bytes; +} + +/** + * seek to a bit position in the stream + * @param d demuxer context + * @param fpos position in the stream in bits from the beginning of mpc datas + * @param min_bytes number of bytes to load after seeking + */ +static mpc_status +mpc_demux_seek(mpc_demux * d, mpc_seek_t fpos, mpc_uint32_t min_bytes) { + mpc_seek_t start_pos, end_pos; + mpc_int_t bit_offset; + + // get current buffer position + end_pos = ((mpc_seek_t)(d->r->tell(d->r))) << 3; + start_pos = end_pos - (d->bytes_total << 3); + + if (fpos >= start_pos && fpos < end_pos) { + d->bits_reader.buff = d->buffer + ((fpos - start_pos) >> 3); + bit_offset = fpos & 7; + d->block_bits = 0; + d->block_frames = 0; + } else { + mpc_seek_t next_pos = fpos >> 3; + if (d->si.stream_version == 7) + next_pos = ((next_pos - d->si.header_position) & (-1 << 2)) + d->si.header_position; + bit_offset = (int) (fpos - (next_pos << 3)); + + mpc_demux_clear_buff(d); + if (!d->r->seek(d->r, (mpc_int32_t) next_pos)) + return MPC_STATUS_FAIL; + } + + if (d->si.stream_version == 7) + mpc_demux_fill(d, (min_bytes + ((bit_offset + 7) >> 3) + 3) & (~3), MPC_BUFFER_SWAP); + else + mpc_demux_fill(d, min_bytes + ((bit_offset + 7) >> 3), 0); + d->bits_reader.buff += bit_offset >> 3; + d->bits_reader.count = 8 - (bit_offset & 7); + + return MPC_STATUS_OK; +} + +/** + * return the current position in the stream (in bits) from the beginning + * of the file + * @param d demuxer context + * @return current stream position in bits + */ +mpc_seek_t mpc_demux_pos(mpc_demux * d) +{ + return (((mpc_seek_t)(d->r->tell(d->r)) - d->bytes_total + + d->bits_reader.buff - d->buffer) << 3) + 8 - d->bits_reader.count; +} + +/** + * Searches for a ID3v2-tag and reads the length (in bytes) of it. + * + * @param d demuxer context + * @return size of tag, in bytes + * @return MPC_STATUS_FAIL on errors of any kind + */ +static mpc_int32_t mpc_demux_skip_id3v2(mpc_demux * d) +{ + mpc_uint8_t tmp [4]; + mpc_bool_t footerPresent; // ID3v2.4-flag + mpc_int32_t size; + + // we must be at the beginning of the stream + mpc_demux_fill(d, 3, 0); + + // check id3-tag + if ( 0 != memcmp( d->bits_reader.buff, "ID3", 3 ) ) + return 0; + + mpc_demux_fill(d, 10, 0); + + mpc_bits_read(&d->bits_reader, 24); // read ID3 + mpc_bits_read(&d->bits_reader, 16); // read tag version + + tmp[0] = mpc_bits_read(&d->bits_reader, 8); // read flags + footerPresent = tmp[0] & 0x10; + if ( tmp[0] & 0x0F ) + return MPC_STATUS_FAIL; // not (yet???) allowed + + tmp[0] = mpc_bits_read(&d->bits_reader, 8); // read size + tmp[1] = mpc_bits_read(&d->bits_reader, 8); // read size + tmp[2] = mpc_bits_read(&d->bits_reader, 8); // read size + tmp[3] = mpc_bits_read(&d->bits_reader, 8); // read size + + if ( (tmp[0] | tmp[1] | tmp[2] | tmp[3]) & 0x80 ) + return MPC_STATUS_FAIL; // not allowed + + // read headerSize (syncsave: 4 * $0xxxxxxx = 28 significant bits) + size = tmp[0] << 21; + size |= tmp[1] << 14; + size |= tmp[2] << 7; + size |= tmp[3]; + + size += 10; //header + + if ( footerPresent ) size += 10; + + // This is called before file headers get read, streamversion etc isn't yet known, demuxing isn't properly initialized and we can't call mpc_demux_seek() from here. + mpc_demux_clear_buff(d); + if (!d->r->seek(d->r, size)) + return MPC_STATUS_FAIL; + + return size; +} + +static mpc_status mpc_demux_seek_init(mpc_demux * d) +{ + size_t seek_table_size; + if (d->seek_table != 0) + return MPC_STATUS_OK; + + d->seek_pwr = 6; + if (d->si.block_pwr > d->seek_pwr) + d->seek_pwr = d->si.block_pwr; + seek_table_size = (2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr)); + while (seek_table_size > MAX_SEEK_TABLE_SIZE) { + d->seek_pwr++; + seek_table_size = (2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr)); + } + d->seek_table = malloc((size_t)(seek_table_size * sizeof(mpc_seek_t))); + if (d->seek_table == 0) + return MPC_STATUS_FAIL; + d->seek_table[0] = (mpc_seek_t)mpc_demux_pos(d); + d->seek_table_size = 1; + + return MPC_STATUS_OK; +} + +static mpc_status mpc_demux_ST(mpc_demux * d) +{ + mpc_uint64_t tmp; + mpc_seek_t * table, last[2]; + mpc_bits_reader r = d->bits_reader; + mpc_uint_t i, diff_pwr = 0, mask; + mpc_uint32_t file_table_size; + + if (d->seek_table != 0) + return MPC_STATUS_OK; + + mpc_bits_get_size(&r, &tmp); + file_table_size = (mpc_seek_t) tmp; + d->seek_pwr = d->si.block_pwr + mpc_bits_read(&r, 4); + + tmp = 2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr); + while (tmp > MAX_SEEK_TABLE_SIZE) { + d->seek_pwr++; + diff_pwr++; + tmp = 2 + d->si.samples / (MPC_FRAME_LENGTH << d->seek_pwr); + } + if ((file_table_size >> diff_pwr) > tmp) + file_table_size = tmp << diff_pwr; + d->seek_table = malloc((size_t) (tmp * sizeof(mpc_seek_t))); + d->seek_table_size = (file_table_size + ((1 << diff_pwr) - 1)) >> diff_pwr; + + table = d->seek_table; + mpc_bits_get_size(&r, &tmp); + table[0] = last[0] = (mpc_seek_t) (tmp + d->si.header_position) * 8; + + if (d->seek_table_size == 1) + return MPC_STATUS_OK; + + mpc_bits_get_size(&r, &tmp); + last[1] = (mpc_seek_t) (tmp + d->si.header_position) * 8; + if (diff_pwr == 0) table[1] = last[1]; + + mask = (1 << diff_pwr) - 1; + for (i = 2; i < file_table_size; i++) { + int code = mpc_bits_golomb_dec(&r, 12); + if (code & 1) + code = -(code & (-1 << 1)); + code <<= 2; + last[i & 1] = code + 2 * last[(i-1) & 1] - last[i & 1]; + if ((i & mask) == 0) + table[i >> diff_pwr] = last[i & 1]; + } + return MPC_STATUS_OK; +} + +static mpc_status mpc_demux_SP(mpc_demux * d, int size, int block_size) +{ + mpc_seek_t cur; + mpc_uint64_t ptr; + mpc_block b; + int st_head_size; + + cur = mpc_demux_pos(d); + mpc_bits_get_size(&d->bits_reader, &ptr); + MPC_AUTO_FAIL( mpc_demux_seek(d, (ptr - size) * 8 + cur, 11) ); + st_head_size = mpc_bits_get_block(&d->bits_reader, &b); + if (memcmp(b.key, "ST", 2) == 0) { + d->chap_pos = (ptr - size + b.size + st_head_size) * 8 + cur; + d->chap_nb = -1; + if (mpc_demux_fill(d, (mpc_uint32_t) b.size, 0) < b.size) + return MPC_STATUS_FAIL; + MPC_AUTO_FAIL( mpc_demux_ST(d) ); + } + return mpc_demux_seek(d, cur, 11 + block_size); +} + +static void mpc_demux_chap_empty(mpc_demux * d) { + free(d->chap); d->chap = 0; + d->chap_nb = 0; // -1 for undefined, 0 for no chapters + d->chap_pos = 0; +} + +static mpc_status mpc_demux_chap_find_inner(mpc_demux * d) +{ + mpc_block b; + int tag_size = 0, chap_size = 0, size, i = 0; + + d->chap_nb = 0; + + if (d->si.stream_version < 8) + return MPC_STATUS_OK; + + if (d->chap_pos == 0) { + mpc_uint64_t cur_pos = (d->si.header_position + 4) * 8; + MPC_AUTO_FAIL( mpc_demux_seek(d, cur_pos, 11) ); // seek to the beginning of the stream + size = mpc_bits_get_block(&d->bits_reader, &b); + while (memcmp(b.key, "SE", 2) != 0) { + mpc_uint64_t new_pos = cur_pos + (size + b.size) * 8; + MPC_AUTO_FAIL(mpc_check_key(b.key)); + + if (memcmp(b.key, "CT", 2) == 0) { + if (d->chap_pos == 0) d->chap_pos = cur_pos; + } else { + d->chap_pos = 0; + } + if (new_pos <= cur_pos) + return MPC_STATUS_FAIL; + cur_pos = new_pos; + + MPC_AUTO_FAIL( mpc_demux_seek(d, cur_pos, 11) ); + size = mpc_bits_get_block(&d->bits_reader, &b); + } + if (d->chap_pos == 0) + d->chap_pos = cur_pos; + } + + mpc_demux_seek(d, d->chap_pos, 20); + size = mpc_bits_get_block(&d->bits_reader, &b); + while (memcmp(b.key, "CT", 2) == 0) { + mpc_uint64_t chap_sample; + d->chap_nb++; + chap_size += size; + size = mpc_bits_get_size(&d->bits_reader, &chap_sample) + 4; + chap_size += size; + tag_size += b.size - size; + MPC_AUTO_FAIL( mpc_demux_seek(d, d->chap_pos + (chap_size + tag_size) * 8, 20) ); + size = mpc_bits_get_block(&d->bits_reader, &b); + } + + if (d->chap_nb > 0) { + char * ptag; + d->chap = malloc(sizeof(mpc_chap_info) * d->chap_nb + tag_size); + if (d->chap == 0) + return MPC_STATUS_FAIL; + + ptag = (char*)(d->chap + d->chap_nb); + + MPC_AUTO_FAIL( mpc_demux_seek(d, d->chap_pos, 11) ); + size = mpc_bits_get_block(&d->bits_reader, &b); + while (memcmp(b.key, "CT", 2) == 0) { + mpc_uint_t tmp_size; + char * tmp_ptag = ptag; + if (mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, 0) < b.size) + return MPC_STATUS_FAIL; + size = mpc_bits_get_size(&d->bits_reader, &d->chap[i].sample) + 4; + d->chap[i].gain = (mpc_uint16_t) mpc_bits_read(&d->bits_reader, 16); + d->chap[i].peak = (mpc_uint16_t) mpc_bits_read(&d->bits_reader, 16); + + tmp_size = b.size - size; + do { + mpc_uint_t rd_size = tmp_size; + mpc_uint8_t * tmp_buff = d->bits_reader.buff + ((8 - d->bits_reader.count) >> 3); + mpc_uint32_t avail_bytes = d->bytes_total + d->buffer - tmp_buff; + rd_size = mini(rd_size, avail_bytes); + memcpy(tmp_ptag, tmp_buff, rd_size); + tmp_size -= rd_size; + tmp_ptag += rd_size; + d->bits_reader.buff += rd_size; + mpc_demux_fill(d, tmp_size, 0); + } while (tmp_size > 0); + + d->chap[i].tag_size = b.size - size; + d->chap[i].tag = ptag; + ptag += b.size - size; + i++; + size = mpc_bits_get_block(&d->bits_reader, &b); + } + } + + d->bits_reader.buff -= size; + return MPC_STATUS_OK; +} + +static mpc_status mpc_demux_chap_find(mpc_demux * d) { + mpc_status s = mpc_demux_chap_find_inner(d); + if (MPC_IS_FAILURE(s)) + mpc_demux_chap_empty(d); + return s; +} + +/** + * Gets the number of chapters in the stream + * @param d pointer to a musepack demuxer + * @return the number of chapters found in the stream + */ +mpc_int_t mpc_demux_chap_nb(mpc_demux * d) +{ + if (d->chap_nb == -1) + mpc_demux_chap_find(d); + return d->chap_nb; +} + +/** + * Gets datas associated to a given chapter + * The chapter tag is an APEv2 tag without the preamble + * @param d pointer to a musepack demuxer + * @param chap_nb chapter number you want datas (from 0 to mpc_demux_chap_nb(d) - 1) + * @return the chapter information structure + */ +mpc_chap_info const * mpc_demux_chap(mpc_demux * d, int chap_nb) +{ + if (d->chap_nb == -1) + mpc_demux_chap_find(d); + if (chap_nb >= d->chap_nb || chap_nb < 0) + return 0; + return &d->chap[chap_nb]; +} + +static mpc_status mpc_demux_header(mpc_demux * d) +{ + char magic[4]; + + d->si.pns = 0xFF; + d->si.profile_name = "n.a."; + + // get header position + d->si.header_position = mpc_demux_skip_id3v2(d); + if(d->si.header_position < 0) + return MPC_STATUS_FAIL; + + d->si.tag_offset = d->si.total_file_length = d->r->get_size(d->r); + + mpc_demux_fill(d, 4, 0); + magic[0] = mpc_bits_read(&d->bits_reader, 8); + magic[1] = mpc_bits_read(&d->bits_reader, 8); + magic[2] = mpc_bits_read(&d->bits_reader, 8); + magic[3] = mpc_bits_read(&d->bits_reader, 8); + + if (memcmp(magic, "MP+", 3) == 0) { + d->si.stream_version = magic[3] & 15; + d->si.pns = magic[3] >> 4; + if (d->si.stream_version != 7) + return MPC_STATUS_FAIL; + if (mpc_demux_fill(d, 6 * 4, MPC_BUFFER_SWAP) < 6 * 4) // header block size + endian convertion + return MPC_STATUS_FAIL; + MPC_AUTO_FAIL( streaminfo_read_header_sv7(&d->si, &d->bits_reader) ); + } else if (memcmp(magic, "MPCK", 4) == 0) { + mpc_block b; + int size; + mpc_demux_fill(d, 11, 0); // max header block size + size = mpc_bits_get_block(&d->bits_reader, &b); + while( memcmp(b.key, "AP", 2) != 0 ){ // scan all blocks until audio + if (mpc_check_key(b.key) != MPC_STATUS_OK) + return MPC_STATUS_FAIL; + if (b.size > (mpc_uint64_t) DEMUX_BUFFER_SIZE - 11) + return MPC_STATUS_FAIL; + + if (mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, 0) <= b.size) + return MPC_STATUS_FAIL; + + if (memcmp(b.key, "SH", 2) == 0) { + MPC_AUTO_FAIL( streaminfo_read_header_sv8(&d->si, &d->bits_reader, (mpc_uint32_t) b.size) ); + } else if (memcmp(b.key, "RG", 2) == 0) { + streaminfo_gain(&d->si, &d->bits_reader); + } else if (memcmp(b.key, "EI", 2) == 0) { + streaminfo_encoder_info(&d->si, &d->bits_reader); + } else if (memcmp(b.key, "SO", 2) == 0) { + MPC_AUTO_FAIL( mpc_demux_SP(d, size, (mpc_uint32_t) b.size) ); + } else if (memcmp(b.key, "ST", 2) == 0) { + MPC_AUTO_FAIL( mpc_demux_ST(d) ); + } + d->bits_reader.buff += b.size; + size = mpc_bits_get_block(&d->bits_reader, &b); + } + d->bits_reader.buff -= size; + if (d->si.stream_version == 0) // si not initialized !!! + return MPC_STATUS_FAIL; + } else { + return MPC_STATUS_FAIL; + } + + return MPC_STATUS_OK; +} + +mpc_demux * mpc_demux_init(mpc_reader * p_reader) +{ + mpc_demux* p_tmp = malloc(sizeof(mpc_demux)); + + if (p_tmp != 0) { + memset(p_tmp, 0, sizeof(mpc_demux)); + p_tmp->r = p_reader; + p_tmp->chap_nb = -1; + mpc_demux_clear_buff(p_tmp); + if (mpc_demux_header(p_tmp) == MPC_STATUS_OK && + mpc_demux_seek_init(p_tmp) == MPC_STATUS_OK) { + p_tmp->d = mpc_decoder_init(&p_tmp->si); + } else { + if (p_tmp->seek_table) + free(p_tmp->seek_table); + free(p_tmp); + p_tmp = 0; + } + } + + return p_tmp; +} + +void mpc_demux_exit(mpc_demux * d) +{ + mpc_decoder_exit(d->d); + free(d->seek_table); + free(d->chap); + free(d); +} + +void mpc_demux_get_info(mpc_demux * d, mpc_streaminfo * i) +{ + memcpy(i, &d->si, sizeof d->si); +} + +static mpc_status mpc_demux_decode_inner(mpc_demux * d, mpc_frame_info * i) +{ + mpc_bits_reader r; + if (d->si.stream_version >= 8) { + i->is_key_frame = MPC_FALSE; + + if (d->block_frames == 0) { + mpc_block b = {{0,0},0}; + d->bits_reader.count &= -8; + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d); + d->seek_table_size ++; + } + mpc_demux_fill(d, 11, MPC_BUFFER_FULL); // max header block size + mpc_bits_get_block(&d->bits_reader, &b); + while( memcmp(b.key, "AP", 2) != 0 ) { // scan all blocks until audio + MPC_AUTO_FAIL( mpc_check_key(b.key) ); + + if (memcmp(b.key, "SE", 2) == 0) { // end block + i->bits = -1; + return MPC_STATUS_OK; + } + + if (mpc_demux_fill(d, 11 + (mpc_uint32_t) b.size, MPC_BUFFER_FULL) < b.size) + return MPC_STATUS_FAIL; + + d->bits_reader.buff += b.size; + mpc_bits_get_block(&d->bits_reader, &b); + } + d->block_bits = (mpc_uint32_t) b.size * 8; + d->block_frames = 1 << d->si.block_pwr; + i->is_key_frame = MPC_TRUE; + } + if (d->buffer + d->bytes_total - d->bits_reader.buff <= MAX_FRAME_SIZE) + mpc_demux_fill(d, (d->block_bits >> 3) + 1, MPC_BUFFER_FULL); + r = d->bits_reader; + mpc_decoder_decode_frame(d->d, &d->bits_reader, i); + d->block_bits -= ((d->bits_reader.buff - r.buff) << 3) + r.count - d->bits_reader.count; + d->block_frames--; + if (d->block_bits < 0 || (d->block_frames == 0 && d->block_bits > 7)) + return MPC_STATUS_FAIL; + } else { + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d); + d->seek_table_size ++; + } + mpc_demux_fill(d, MAX_FRAME_SIZE, MPC_BUFFER_FULL | MPC_BUFFER_SWAP); + d->block_bits = (mpc_int_t) mpc_bits_read(&d->bits_reader, 20); // read frame size + if (MPC_FRAME_LENGTH > d->d->samples - d->d->decoded_samples - 1) d->block_bits += 11; // we will read last frame size + r = d->bits_reader; + mpc_decoder_decode_frame(d->d, &d->bits_reader, i); + if (i->bits != -1 && d->block_bits != ((d->bits_reader.buff - r.buff) << 3) + r.count - d->bits_reader.count) + return MPC_STATUS_FAIL; + } + if (i->bits != -1 && d->buffer + d->bytes_total < d->bits_reader.buff + ((8 - d->bits_reader.count) >> 3)) + return MPC_STATUS_FAIL; + + return MPC_STATUS_OK; +} + +mpc_status mpc_demux_decode(mpc_demux * d, mpc_frame_info * i) { + mpc_status s = mpc_demux_decode_inner(d, i); + if (MPC_IS_FAILURE(s)) + i->bits = -1; // we pretend it's end of file + return s; +} + +mpc_status mpc_demux_seek_second(mpc_demux * d, double seconds) +{ + return mpc_demux_seek_sample(d, (mpc_int64_t)(seconds * (double)d->si.sample_freq + 0.5)); +} + +mpc_status mpc_demux_seek_sample(mpc_demux * d, mpc_uint64_t destsample) +{ + mpc_uint32_t fwd, samples_to_skip, i; + mpc_uint32_t block_samples = MPC_FRAME_LENGTH << d->si.block_pwr; + mpc_seek_t fpos; + + destsample += d->si.beg_silence; + if (destsample > d->si.samples) destsample = d->si.samples; + fwd = (mpc_uint32_t) (destsample / block_samples); + samples_to_skip = MPC_DECODER_SYNTH_DELAY + + (mpc_uint32_t) (destsample % block_samples); + if (d->si.stream_version == 7) { + if (fwd > 32) { + fwd -= 32; + samples_to_skip += MPC_FRAME_LENGTH * 32; + } else { + samples_to_skip += MPC_FRAME_LENGTH * fwd; + fwd = 0; + } + } + + i = fwd >> (d->seek_pwr - d->si.block_pwr); + if (i >= d->seek_table_size) + i = d->seek_table_size - 1; + fpos = d->seek_table[i]; + i <<= d->seek_pwr - d->si.block_pwr; + d->d->decoded_samples = i * block_samples; + + if (d->si.stream_version >= 8) { + mpc_block b; + int size; + mpc_demux_seek(d, fpos, 11); + size = mpc_bits_get_block(&d->bits_reader, &b); + while(i < fwd) { + if (memcmp(b.key, "AP", 2) == 0) { + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d) - 8 * size; + d->seek_table_size ++; + } + d->d->decoded_samples += block_samples; + i++; + } + fpos += ((mpc_uint32_t)b.size + size) * 8; + mpc_demux_seek(d, fpos, 11); + size = mpc_bits_get_block(&d->bits_reader, &b); + } + d->bits_reader.buff -= size; + } else { + mpc_decoder_reset_scf(d->d, fwd != 0); + mpc_demux_seek(d, fpos, 4); + for( ; i < fwd; i++){ + if (d->d->decoded_samples == (d->seek_table_size << d->seek_pwr) * MPC_FRAME_LENGTH) { + d->seek_table[d->seek_table_size] = (mpc_seek_t) mpc_demux_pos(d); + d->seek_table_size ++; + } + d->d->decoded_samples += block_samples; + fpos += mpc_bits_read(&d->bits_reader, 20) + 20; + mpc_demux_seek(d, fpos, 4); + } + } + d->d->samples_to_skip = samples_to_skip; + return MPC_STATUS_OK; +} + +void mpc_set_replay_level(mpc_demux * d, float level, mpc_bool_t use_gain, + mpc_bool_t use_title, mpc_bool_t clip_prevention) +{ + float peak = (float) ( use_title ? d->si.peak_title : d->si.peak_album ); + float gain = (float) ( use_title ? d->si.gain_title : d->si.gain_album ); + + if(!use_gain && !clip_prevention) + return; + + if(!peak) + peak = 1.; + else + peak = (float) ( (1 << 15) / pow(10, peak / (20 * 256)) ); + + if(!gain) + gain = 1.; + else + gain = (float) pow(10, (level - gain / 256) / 20); + + if(clip_prevention && (peak < gain || !use_gain)) + gain = peak; + + mpc_decoder_scale_output(d->d, gain); +} diff --git a/libmednahawk/src/mpcdec/mpc_reader.c b/libmednahawk/src/mpcdec/mpc_reader.c new file mode 100644 index 0000000000..160079e061 --- /dev/null +++ b/libmednahawk/src/mpcdec/mpc_reader.c @@ -0,0 +1,144 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpc_reader.c +/// Contains implementations for simple file-based mpc_reader +#include "reader.h" +#include "internal.h" +#include + +#define STDIO_MAGIC 0xF34B963C ///< Just a random safe-check value... +typedef struct mpc_reader_stdio_t { + FILE *p_file; + int file_size; + mpc_bool_t is_seekable; + mpc_int32_t magic; +} mpc_reader_stdio; + +/// mpc_reader callback implementations +static mpc_int32_t +read_stdio(mpc_reader *p_reader, void *ptr, mpc_int32_t size) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_STATUS_FAIL; + return (mpc_int32_t) fread(ptr, 1, size, p_stdio->p_file); +} + +static mpc_bool_t +seek_stdio(mpc_reader *p_reader, mpc_int32_t offset) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_FALSE; + return p_stdio->is_seekable ? fseek(p_stdio->p_file, offset, SEEK_SET) == 0 : MPC_FALSE; +} + +static mpc_int32_t +tell_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_STATUS_FAIL; + return ftell(p_stdio->p_file); +} + +static mpc_int32_t +get_size_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_STATUS_FAIL; + return p_stdio->file_size; +} + +static mpc_bool_t +canseek_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return MPC_FALSE; + return p_stdio->is_seekable; +} + +mpc_status +mpc_reader_init_stdio_stream(mpc_reader * p_reader, FILE * p_file) +{ + mpc_reader tmp_reader; mpc_reader_stdio *p_stdio; int err; + + p_stdio = NULL; + memset(&tmp_reader, 0, sizeof tmp_reader); + p_stdio = malloc(sizeof *p_stdio); + if(!p_stdio) return MPC_STATUS_FAIL; + memset(p_stdio, 0, sizeof *p_stdio); + + p_stdio->magic = STDIO_MAGIC; + p_stdio->p_file = p_file; + p_stdio->is_seekable = MPC_TRUE; + err = fseek(p_stdio->p_file, 0, SEEK_END); + if(err < 0) goto clean; + err = ftell(p_stdio->p_file); + if(err < 0) goto clean; + p_stdio->file_size = err; + err = fseek(p_stdio->p_file, 0, SEEK_SET); + if(err < 0) goto clean; + + tmp_reader.data = p_stdio; + tmp_reader.canseek = canseek_stdio; + tmp_reader.get_size = get_size_stdio; + tmp_reader.read = read_stdio; + tmp_reader.seek = seek_stdio; + tmp_reader.tell = tell_stdio; + + *p_reader = tmp_reader; + return MPC_STATUS_OK; +clean: + if(p_stdio && p_stdio->p_file) + fclose(p_stdio->p_file); + free(p_stdio); + return MPC_STATUS_FAIL; +} + +mpc_status +mpc_reader_init_stdio(mpc_reader *p_reader, const char *filename) +{ + FILE * stream = fopen(filename, "rb"); + if (stream == NULL) return MPC_STATUS_FAIL; + return mpc_reader_init_stdio_stream(p_reader,stream); +} + +void +mpc_reader_exit_stdio(mpc_reader *p_reader) +{ + mpc_reader_stdio *p_stdio = (mpc_reader_stdio*) p_reader->data; + if(p_stdio->magic != STDIO_MAGIC) return; + fclose(p_stdio->p_file); + free(p_stdio); + p_reader->data = NULL; +} + diff --git a/libmednahawk/src/mpcdec/mpc_types.h b/libmednahawk/src/mpcdec/mpc_types.h new file mode 100644 index 0000000000..5e829582f6 --- /dev/null +++ b/libmednahawk/src/mpcdec/mpc_types.h @@ -0,0 +1,151 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef _MPC_TYPES_H_ +#define _MPC_TYPES_H_ +#ifdef WIN32 +#pragma once +#endif + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _MSC_VER +typedef __int8 mpc_int8_t; +typedef unsigned __int8 mpc_uint8_t; +typedef __int16 mpc_int16_t; +typedef unsigned __int16 mpc_uint16_t; +typedef __int32 mpc_int32_t; +typedef unsigned __int32 mpc_uint32_t; +typedef __int64 mpc_int64_t; +typedef unsigned __int64 mpc_uint64_t; +#define mpc_inline __inline +#else +#include +typedef int8_t mpc_int8_t; +typedef uint8_t mpc_uint8_t; +typedef int16_t mpc_int16_t; +typedef uint16_t mpc_uint16_t; +typedef int32_t mpc_int32_t; +typedef uint32_t mpc_uint32_t; +typedef int64_t mpc_int64_t; +typedef uint64_t mpc_uint64_t; +#define mpc_inline inline +#endif + +typedef int mpc_int_t; +typedef unsigned int mpc_uint_t; +typedef size_t mpc_size_t; +typedef mpc_uint8_t mpc_bool_t; + +// #define LONG_SEEK_TABLE +#ifdef LONG_SEEK_TABLE // define as needed (mpc_uint32_t supports files up to 512 MB) +typedef mpc_uint64_t mpc_seek_t; +#else +typedef mpc_uint32_t mpc_seek_t; +#endif + +# define mpc_int64_min -9223372036854775808ll +# define mpc_int64_max 9223372036854775807ll + +typedef struct mpc_quantizer { + mpc_int16_t L [36]; + mpc_int16_t R [36]; +} mpc_quantizer; + +/// Libmpcdec error codes +typedef enum mpc_status { + // Success. + MPC_STATUS_OK = 0, + // Generic failure (I/O error or invalid file). + MPC_STATUS_FAIL = -1 +} mpc_status; + + +#define MPC_FIXED_POINT_SHIFT 16 + +#ifdef MPC_FIXED_POINT +# define MPC_FIXED_POINT_FRACTPART 14 +# define MPC_FIXED_POINT_SCALE_SHIFT (MPC_FIXED_POINT_SHIFT + MPC_FIXED_POINT_FRACTPART) +# define MPC_FIXED_POINT_SCALE (1 << (MPC_FIXED_POINT_SCALE_SHIFT - 1)) +typedef mpc_int32_t MPC_SAMPLE_FORMAT; +#else +typedef float MPC_SAMPLE_FORMAT; +#endif + +enum { + MPC_FALSE = 0, + MPC_TRUE = !MPC_FALSE +}; + +//// 'Cdecl' forces the use of standard C/C++ calling convention /////// +#if defined _WIN32 +# define mpc_cdecl __cdecl +#elif defined __ZTC__ +# define mpc_cdecl _cdecl +#elif defined __TURBOC__ +# define mpc_cdecl cdecl +#else +# define mpc_cdecl +#endif + +/* DLL building support on win32 hosts */ +#ifndef MPC_API +# ifdef DLL_EXPORT /* defined by libtool (if required) */ +# define MPC_API __declspec(dllexport) +# endif +# ifdef MPC_DLL_IMPORT /* define if linking with this dll */ +# define MPC_API __declspec(dllimport) +# endif +# ifndef MPC_API /* static linking or !_WIN32 */ +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define MPC_API __attribute__ ((visibility("default"))) +# else +# define MPC_API +# endif +# endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/mpcdec.h b/libmednahawk/src/mpcdec/mpcdec.h new file mode 100644 index 0000000000..e643c57a68 --- /dev/null +++ b/libmednahawk/src/mpcdec/mpcdec.h @@ -0,0 +1,148 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpcdec.h +/// Top level include file for libmpcdec. +#ifndef _MPCDEC_H_ +#define _MPCDEC_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "reader.h" +#include "streaminfo.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + MPC_FRAME_LENGTH = (36 * 32), ///< Samples per mpc frame + MPC_DECODER_BUFFER_LENGTH = (MPC_FRAME_LENGTH * 4), ///< Required buffer size for decoder + MPC_DECODER_SYNTH_DELAY = 481 +}; + +typedef struct mpc_decoder_t mpc_decoder; +typedef struct mpc_demux_t mpc_demux; + +typedef struct mpc_bits_reader_t { + unsigned char * buff; /// pointer on current byte + unsigned int count; /// unread bits in current byte +} mpc_bits_reader; + +typedef struct mpc_frame_info_t { + mpc_uint32_t samples; /// number of samples in the frame (counting once for multiple channels) + mpc_int32_t bits; /// number of bits consumed by this frame (-1) if end of stream + MPC_SAMPLE_FORMAT * buffer; /// frame samples buffer (size = samples * channels * sizeof(MPC_SAMPLE_FORMAT)) + mpc_bool_t is_key_frame; /// 1 if this frame is a key frame (first in block) 0 else. Set by the demuxer. +} mpc_frame_info; + +typedef struct mpc_chap_info_t { + mpc_uint64_t sample; /// sample where the chapter starts + mpc_uint16_t gain; /// replaygain chapter value + mpc_uint16_t peak; /// peak chapter loudness level + mpc_uint_t tag_size; /// size of the tag element (0 if no tag is present for this chapter) + char * tag; /// pointer to an APEv2 tag without the preamble +} mpc_chap_info; + +/// Initializes mpc decoder with the supplied stream info parameters. +/// \param si streaminfo structure indicating format of source stream +/// \return pointer on the initialized decoder structure if successful, 0 if not +MPC_API mpc_decoder * mpc_decoder_init(mpc_streaminfo *si); + +/// Releases input mpc decoder +MPC_API void mpc_decoder_exit(mpc_decoder *p_dec); + +/** + * Sets decoder sample scaling factor. All decoded samples will be multiplied + * by this factor. Useful for applying replay gain. + * @param scale_factor multiplicative scaling factor + */ +MPC_API void mpc_decoder_scale_output(mpc_decoder *p_dec, double scale_factor); + +MPC_API void mpc_decoder_decode_frame(mpc_decoder * d, mpc_bits_reader * r, mpc_frame_info * i); + +// This is the gain reference used in old replaygain +#define MPC_OLD_GAIN_REF 64.82 + +/** + * init demuxer + * @param p_reader initialized mpc_reader pointer + * @return an initialized mpc_demux pointer + */ +MPC_API mpc_demux * mpc_demux_init(mpc_reader * p_reader); +/// free demuxer +MPC_API void mpc_demux_exit(mpc_demux * d); +/** + * Calls mpc_decoder_scale_output to set the scaling factor according to the + * replay gain stream information and the supplied ouput level + * @param d pointer to a musepack demuxer + * @param level the desired ouput level (in db). Must be MPC_OLD_GAIN_REF (64.82 db) if you want to get the old replaygain behavior + * @param use_gain set it to MPC_TRUE if you want to set the scaling factor according to the stream gain + * @param use_title MPC_TRUE : uses the title gain, MPC_FALSE : uses the album gain + * @param clip_prevention MPC_TRUE : uses cliping prevention + */ +MPC_API void mpc_set_replay_level(mpc_demux * d, float level, mpc_bool_t use_gain, + mpc_bool_t use_title, mpc_bool_t clip_prevention); +/// decode frame +MPC_API mpc_status mpc_demux_decode(mpc_demux * d, mpc_frame_info * i); +/// get streaminfo +MPC_API void mpc_demux_get_info(mpc_demux * d, mpc_streaminfo * i); +/// seeks to a given sample +MPC_API mpc_status mpc_demux_seek_sample(mpc_demux * d, mpc_uint64_t destsample); +/// seeks to a given second +MPC_API mpc_status mpc_demux_seek_second(mpc_demux * d, double seconds); + +/// \return the current position in the stream (in bits) from the beginning of the file +MPC_API mpc_seek_t mpc_demux_pos(mpc_demux * d); + +/// chapters : only for sv8 streams +/** + * Gets the number of chapters in the stream + * @param d pointer to a musepack demuxer + * @return the number of chapters found in the stream + */ +MPC_API mpc_int_t mpc_demux_chap_nb(mpc_demux * d); +/** + * Gets datas associated to a given chapter + * The chapter tag is an APEv2 tag without the preamble + * @param d pointer to a musepack demuxer + * @param chap_nb chapter number you want datas (from 0 to mpc_demux_chap_nb(d) - 1) + * @return the chapter information structure + */ +MPC_API mpc_chap_info const * mpc_demux_chap(mpc_demux * d, int chap_nb); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/mpcdec_math.h b/libmednahawk/src/mpcdec/mpcdec_math.h new file mode 100644 index 0000000000..16db95c805 --- /dev/null +++ b/libmednahawk/src/mpcdec/mpcdec_math.h @@ -0,0 +1,135 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file mpcdec_math.h +/// Libmpcdec internal math routines. +#ifndef _MPCDEC_MATH_H_ +#define _MPCDEC_MATH_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "mpc_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef MPC_FIXED_POINT + +#ifdef _WIN32_WCE +#include +#define MPC_HAVE_MULHIGH +#endif + +//in fixedpoint mode, results in decode output buffer are in -MPC_FIXED_POINT_SCALE ... MPC_FIXED_POINT_SCALE range + +typedef mpc_int64_t MPC_SAMPLE_FORMAT_MULTIPLY; + +#define MAKE_MPC_SAMPLE(X) (MPC_SAMPLE_FORMAT)((double)(X) * (double)(((mpc_int64_t)1)<> MPC_FIXED_POINT_FRACTPART) + +#define MPC_MULTIPLY_EX_NOTRUNCATE(X,Y,Z) \ + (((MPC_SAMPLE_FORMAT_MULTIPLY)(X) * (MPC_SAMPLE_FORMAT_MULTIPLY)(Y)) >> (Z)) + +#ifdef _DEBUG +static mpc_inline MPC_SAMPLE_FORMAT MPC_MULTIPLY(MPC_SAMPLE_FORMAT item1,MPC_SAMPLE_FORMAT item2) +{ + MPC_SAMPLE_FORMAT_MULTIPLY temp = MPC_MULTIPLY_NOTRUNCATE(item1,item2); + assert(temp == (MPC_SAMPLE_FORMAT_MULTIPLY)(MPC_SAMPLE_FORMAT)temp); + return (MPC_SAMPLE_FORMAT)temp; +} + +static mpc_inline MPC_SAMPLE_FORMAT MPC_MULTIPLY_EX(MPC_SAMPLE_FORMAT item1,MPC_SAMPLE_FORMAT item2,unsigned shift) +{ + MPC_SAMPLE_FORMAT_MULTIPLY temp = MPC_MULTIPLY_EX_NOTRUNCATE(item1,item2,shift); + assert(temp == (MPC_SAMPLE_FORMAT_MULTIPLY)(MPC_SAMPLE_FORMAT)temp); + return (MPC_SAMPLE_FORMAT)temp; +} + +#else + +#define MPC_MULTIPLY(X,Y) ((MPC_SAMPLE_FORMAT)MPC_MULTIPLY_NOTRUNCATE(X,Y)) +#define MPC_MULTIPLY_EX(X,Y,Z) ((MPC_SAMPLE_FORMAT)MPC_MULTIPLY_EX_NOTRUNCATE(X,Y,Z)) + +#endif + +#ifdef MPC_HAVE_MULHIGH +#define MPC_MULTIPLY_FRACT(X,Y) _MulHigh(X,Y) +#else +#define MPC_MULTIPLY_FRACT(X,Y) MPC_MULTIPLY_EX(X,Y,32) +#endif + +#define MPC_MAKE_FRACT_CONST(X) (MPC_SAMPLE_FORMAT)((X) * (double)(((mpc_int64_t)1)<<32) ) +#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y)) +#define MPC_MULTIPLY_FRACT_CONST_FIX(X,Y,Z) ( MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y / (1<<(Z)) )) << (Z) ) +#define MPC_MULTIPLY_FRACT_CONST_SHR(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y / (1<<(Z)) )) + +#define MPC_MULTIPLY_FLOAT_INT(X,Y) ((X)*(Y)) +#define MPC_SCALE_CONST(X,Y,Z) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)) +#define MPC_SCALE_CONST_SHL(X,Y,Z,S) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)-(S)) +#define MPC_SCALE_CONST_SHR(X,Y,Z,S) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)+(S)) +#define MPC_SHR(X,Y) ((X)>>(Y)) +#define MPC_SHL(X,Y) ((X)<<(Y)) + +#else + +//in floating-point mode, decoded samples are in -1...1 range + +#define MAKE_MPC_SAMPLE(X) ((MPC_SAMPLE_FORMAT)(X)) +#define MAKE_MPC_SAMPLE_EX(X,Y) ((MPC_SAMPLE_FORMAT)(X)) + +#define MPC_MULTIPLY_FRACT(X,Y) ((X)*(Y)) +#define MPC_MAKE_FRACT_CONST(X) (X) +#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y)) +#define MPC_MULTIPLY_FRACT_CONST_SHR(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y )) +#define MPC_MULTIPLY_FRACT_CONST_FIX(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y )) + +#define MPC_MULTIPLY_FLOAT_INT(X,Y) ((X)*(Y)) +#define MPC_MULTIPLY(X,Y) ((X)*(Y)) +#define MPC_MULTIPLY_EX(X,Y,Z) ((X)*(Y)) +#define MPC_SCALE_CONST(X,Y,Z) ((X)*(Y)) +#define MPC_SCALE_CONST_SHL(X,Y,Z,S) ((X)*(Y)) +#define MPC_SCALE_CONST_SHR(X,Y,Z,S) ((X)*(Y)) +#define MPC_SHR(X,Y) (X) +#define MPC_SHL(X,Y) (X) + +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/mpcmath.h b/libmednahawk/src/mpcdec/mpcmath.h new file mode 100644 index 0000000000..786383505a --- /dev/null +++ b/libmednahawk/src/mpcdec/mpcmath.h @@ -0,0 +1,155 @@ +/* + * Musepack audio compression + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "mpc_types.h" + +typedef union mpc_floatint +{ + float f; + mpc_int32_t n; +} mpc_floatint; + +typedef union mpc_doubleint +{ + double d; + mpc_int32_t n[2]; +} mpc_doubleint; + +static mpc_inline mpc_int32_t mpc_lrintf(float fVal) +{ + mpc_floatint tmp; + tmp.f = fVal + 0x00FF8000; + return tmp.n - 0x4B7F8000; +} + +#define mpc_round32 mpc_lrintf +#define mpc_nearbyintf mpc_lrintf + + +#ifndef M_PI +# define M_PI 3.1415926535897932384626433832795029 // 4*atan(1) +# define M_PIl 3.1415926535897932384626433832795029L +# define M_LN2 0.6931471805599453094172321214581766 // ln(2) +# define M_LN2l 0.6931471805599453094172321214581766L +# define M_LN10 2.3025850929940456840179914546843642 // ln 10 */ +# define M_LN10l 2.3025850929940456840179914546843642L +#endif + +// fast but maybe more inaccurate, use if you need speed +#if defined(__GNUC__) && !defined(__APPLE__) +# define SIN(x) sinf ((float)(x)) +# define COS(x) cosf ((float)(x)) +# define ATAN2(x,y) atan2f ((float)(x), (float)(y)) +# define SQRT(x) sqrtf ((float)(x)) +# define LOG(x) logf ((float)(x)) +# define LOG10(x) log10f ((float)(x)) +# define POW(x,y) expf (logf(x) * (y)) +# define POW10(x) expf (M_LN10 * (x)) +# define FLOOR(x) floorf ((float)(x)) +# define IFLOOR(x) (int) floorf ((float)(x)) +# define FABS(x) fabsf ((float)(x)) +#else +# define SIN(x) (float) sin (x) +# define COS(x) (float) cos (x) +# define ATAN2(x,y) (float) atan2 (x, y) +# define SQRT(x) (float) sqrt (x) +# define LOG(x) (float) log (x) +# define LOG10(x) (float) log10 (x) +# define POW(x,y) (float) pow (x,y) +# define POW10(x) (float) pow (10., (x)) +# define FLOOR(x) (float) floor (x) +# define IFLOOR(x) (int) floor (x) +# define FABS(x) (float) fabs (x) +#endif + +#define SQRTF(x) SQRT (x) +#ifdef FAST_MATH +# define TABSTEP 64 +# define COSF(x) my_cos ((float)(x)) +# define ATAN2F(x,y) my_atan2 ((float)(x), (float)(y)) +# define IFLOORF(x) my_ifloor ((float)(x)) + +void Init_FastMath ( void ); +extern const float tabatan2 [] [2]; +extern const float tabcos [] [2]; +extern const float tabsqrt_ex []; +extern const float tabsqrt_m [] [2]; + +static mpc_inline float my_atan2 ( float x, float y ) +{ + float t, ret; int i; mpc_floatint mx, my; + + mx.f = x; + my.f = y; + if ( (mx.n & 0x7FFFFFFF) < (my.n & 0x7FFFFFFF) ) { + i = mpc_round32 (t = TABSTEP * (mx.f / my.f)); + ret = tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (t-i); + if ( my.n < 0 ) + ret = (float)(ret - M_PI); + } + else if ( mx.n < 0 ) { + i = mpc_round32 (t = TABSTEP * (my.f / mx.f)); + ret = - M_PI/2 - tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (i-t); + } + else if ( mx.n > 0 ) { + i = mpc_round32 (t = TABSTEP * (my.f / mx.f)); + ret = + M_PI/2 - tabatan2 [1*TABSTEP+i][0] + tabatan2 [1*TABSTEP+i][1] * (i-t); + } + else { + ret = 0.; + } + return ret; +} + + +static mpc_inline float my_cos ( float x ) +{ + float t, ret; int i; + i = mpc_round32 (t = TABSTEP * x); + ret = tabcos [13*TABSTEP+i][0] + tabcos [13*TABSTEP+i][1] * (t-i); + return ret; +} + + +static mpc_inline int my_ifloor ( float x ) +{ + mpc_floatint mx; + mx.f = (float) (x + (0x0C00000L + 0.500000001)); + return mx.n - 1262485505; +} + + +static mpc_inline float my_sqrt ( float x ) +{ + float ret; int i, ex; mpc_floatint mx; + mx.f = x; + ex = mx.n >> 23; // get the exponent + mx.n = (mx.n & 0x7FFFFF) | 0x42800000; // delete the exponent + i = mpc_round32 (mx.f); // Integer-part of the mantissa (round ????????????) + ret = tabsqrt_m [i-TABSTEP][0] + tabsqrt_m [i-TABSTEP][1] * (mx.f-i); // calculate value + ret *= tabsqrt_ex [ex]; + return ret; +} +#else +# define COSF(x) COS (x) +# define ATAN2F(x,y) ATAN2 (x,y) +# define IFLOORF(x) IFLOOR (x) +#endif + diff --git a/libmednahawk/src/mpcdec/reader.h b/libmednahawk/src/mpcdec/reader.h new file mode 100644 index 0000000000..2405cd2a3a --- /dev/null +++ b/libmednahawk/src/mpcdec/reader.h @@ -0,0 +1,98 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file reader.h +#ifndef _MPCDEC_READER_H_ +#define _MPCDEC_READER_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "mpc_types.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/// \brief Stream reader interface structure. +/// +/// This is the structure you must supply to the musepack decoding library +/// to feed it with raw data. Implement the five member functions to provide +/// a functional reader. +typedef struct mpc_reader_t mpc_reader; +struct mpc_reader_t { + /// Reads size bytes of data into buffer at ptr. + mpc_int32_t (*read)(mpc_reader *p_reader, void *ptr, mpc_int32_t size); + + /// Seeks to byte position offset. + mpc_bool_t (*seek)(mpc_reader *p_reader, mpc_int32_t offset); + + /// Returns the current byte offset in the stream. + mpc_int32_t (*tell)(mpc_reader *p_reader); + + /// Returns the total length of the source stream, in bytes. + mpc_int32_t (*get_size)(mpc_reader *p_reader); + + /// True if the stream is a seekable stream. + mpc_bool_t (*canseek)(mpc_reader *p_reader); + + /// Field that can be used to identify a particular instance of + /// reader or carry along data associated with that reader. + void *data; +}; + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you're just reading from a plain file. +/// +/// \param r p_reader handle to initialize +/// \param filename input filename to attach to the reader +MPC_API mpc_status mpc_reader_init_stdio(mpc_reader *p_reader, const char *filename); + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you prefer to open the file yourself. +/// +/// \param r p_reader handle to initialize +/// \param p_file input file handle (already open) +MPC_API mpc_status mpc_reader_init_stdio_stream(mpc_reader * p_reader, FILE * p_file); + +/// Release reader with default stdio file reader implementation. +/// +/// \param r reader handle to release +MPC_API void mpc_reader_exit_stdio(mpc_reader *p_reader); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/requant.c b/libmednahawk/src/mpcdec/requant.c new file mode 100644 index 0000000000..df20a308f9 --- /dev/null +++ b/libmednahawk/src/mpcdec/requant.c @@ -0,0 +1,124 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file requant.c +/// Requantization function implementations. +/// \todo document me +#include "mpcdec.h" + +#include "requant.h" +#include "mpcdec_math.h" +#include "decoder.h" + +/* C O N S T A N T S */ +// Bits per sample for chosen quantizer +const mpc_uint8_t Res_bit [18] = { + 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +}; + +// Requantization coefficients +// 65536/step bzw. 65536/(2*D+1) + +#define _(X) MAKE_MPC_SAMPLE_EX(X,14) + +const MPC_SAMPLE_FORMAT __Cc [1 + 18] = { + _(111.285962475327f), // 32768/2/255*sqrt(3) + _(65536.000000000000f), _(21845.333333333332f), _(13107.200000000001f), _(9362.285714285713f), + _(7281.777777777777f), _(4369.066666666666f), _(2114.064516129032f), _(1040.253968253968f), + _(516.031496062992f), _(257.003921568627f), _(128.250489236790f), _(64.062561094819f), + _(32.015632633121f), _(16.003907203907f), _(8.000976681723f), _(4.000244155527f), + _(2.000061037018f), _(1.000015259021f) +}; + +#undef _ + +// Requantization offset +// 2*D+1 = steps of quantizer +const mpc_int16_t __Dc [1 + 18] = { + 2, + 0, 1, 2, 3, 4, 7, 15, 31, 63, + 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767 +}; + +#ifdef MPC_FIXED_POINT +static mpc_uint32_t find_shift(double fval) +{ + mpc_int64_t val = (mpc_int64_t) fval; + mpc_uint32_t ptr = 0; + if(val<0) + val = -val; + while(val) + { + val >>= 1; + ptr++; + } + return ptr > 31 ? 0 : 31 - ptr; +} +#endif + +/* F U N C T I O N S */ + +#define SET_SCF(N,X) d->SCF[N] = MAKE_MPC_SAMPLE_EX(X,d->SCF_shift[N] = (mpc_uint8_t) find_shift(X)); + +void +mpc_decoder_scale_output(mpc_decoder *d, double factor) +{ + mpc_int32_t n; double f1, f2; + +#ifndef MPC_FIXED_POINT + factor *= 1.0 / (double) (1<<(MPC_FIXED_POINT_SHIFT-1)); +#else + factor *= 1.0 / (double) (1<<(16-MPC_FIXED_POINT_SHIFT)); +#endif + f1 = f2 = factor; + + // handles +1.58...-98.41 dB, where's scf[n] / scf[n-1] = 1.20050805774840750476 + + SET_SCF(1,factor); + + f1 *= 0.83298066476582673961; + f2 *= 1/0.83298066476582673961; + + for ( n = 1; n <= 128; n++ ) { + SET_SCF((mpc_uint8_t)(1+n),f1); + SET_SCF((mpc_uint8_t)(1-n),f2); + f1 *= 0.83298066476582673961; + f2 *= 1/0.83298066476582673961; + } +} + +void +mpc_decoder_init_quant(mpc_decoder *d, double scale_factor) +{ + mpc_decoder_scale_output(d, scale_factor); +} diff --git a/libmednahawk/src/mpcdec/requant.h b/libmednahawk/src/mpcdec/requant.h new file mode 100644 index 0000000000..bd04e0073f --- /dev/null +++ b/libmednahawk/src/mpcdec/requant.h @@ -0,0 +1,61 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file requant.h +/// Requantization function definitions. +#ifndef _MPCDEC_REQUANT_H_ +#define _MPCDEC_REQUANT_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "mpc_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/* C O N S T A N T S */ +const mpc_uint8_t Res_bit [18]; ///< Bits per sample for chosen quantizer +const MPC_SAMPLE_FORMAT __Cc [1 + 18]; ///< Requantization coefficients +const mpc_int16_t __Dc [1 + 18]; ///< Requantization offset + +#define Cc (__Cc + 1) +#define Dc (__Dc + 1) + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/streaminfo.c b/libmednahawk/src/mpcdec/streaminfo.c new file mode 100644 index 0000000000..af1bcee1cd --- /dev/null +++ b/libmednahawk/src/mpcdec/streaminfo.c @@ -0,0 +1,245 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file streaminfo.c +/// Implementation of streaminfo reading functions. + +#include +#include "mpcdec.h" +#include "streaminfo.h" +#include +#include "internal.h" +#include "huffman.h" +#include "mpc_bits_reader.h" + +unsigned long mpc_crc32(unsigned char *buf, int len); + +static const char na[] = "n.a."; +static char const * const versionNames[] = { + na, "'Unstable/Experimental'", na, na, na, "'quality 0'", "'quality 1'", + "'Telephone'", "'Thumb'", "'Radio'", "'Standard'", "'Extreme'", "'Insane'", + "'BrainDead'", "'quality 9'", "'quality 10'" +}; +static const mpc_int32_t samplefreqs[8] = { 44100, 48000, 37800, 32000 }; + +static const char * +mpc_get_version_string(float profile) // profile is 0...15, where 7...13 is used +{ + return profile >= sizeof versionNames / sizeof *versionNames ? na : versionNames[(int)profile]; +} + +static void +mpc_get_encoder_string(mpc_streaminfo* si) +{ + int ver = si->encoder_version; + if (si->stream_version >= 8) + ver = (si->encoder_version >> 24) * 100 + ((si->encoder_version >> 16) & 0xFF); + if (ver <= 116) { + if (ver == 0) { + sprintf(si->encoder, "Buschmann 1.7.0...9, Klemm 0.90...1.05"); + } else { + switch (ver % 10) { + case 0: + sprintf(si->encoder, "Release %u.%u", ver / 100, + ver / 10 % 10); + break; + case 2: case 4: case 6: case 8: + sprintf(si->encoder, "Beta %u.%02u", ver / 100, + ver % 100); + break; + default: + sprintf(si->encoder, "--Alpha-- %u.%02u", + ver / 100, ver % 100); + break; + } + } + } else { + int major = si->encoder_version >> 24; + int minor = (si->encoder_version >> 16) & 0xFF; + int build = (si->encoder_version >> 8) & 0xFF; + char * tmp = "--Stable--"; + + if (minor & 1) + tmp = "--Unstable--"; + + sprintf(si->encoder, "%s %u.%u.%u", tmp, major, minor, build); + } +} + +static mpc_status check_streaminfo(mpc_streaminfo * si) +{ + if (si->max_band == 0 || si->max_band >= 32 + || si->channels > 2 || si->channels == 0 || si->sample_freq == 0) + return MPC_STATUS_FAIL; + return MPC_STATUS_OK; +} + +/// Reads streaminfo from SV7 header. +mpc_status +streaminfo_read_header_sv7(mpc_streaminfo* si, mpc_bits_reader * r) +{ + mpc_uint16_t Estimatedpeak_title = 0; + mpc_uint32_t frames, last_frame_samples; + + si->bitrate = 0; + frames = (mpc_bits_read(r, 16) << 16) | mpc_bits_read(r, 16); + mpc_bits_read(r, 1); // intensity stereo : should be 0 + si->ms = mpc_bits_read(r, 1); + si->max_band = mpc_bits_read(r, 6); + si->profile = mpc_bits_read(r, 4); + si->profile_name = mpc_get_version_string(si->profile); + mpc_bits_read(r, 2); // Link ? + si->sample_freq = samplefreqs[mpc_bits_read(r, 2)]; + Estimatedpeak_title = (mpc_uint16_t) mpc_bits_read(r, 16); // read the ReplayGain data + si->gain_title = (mpc_uint16_t) mpc_bits_read(r, 16); + si->peak_title = (mpc_uint16_t) mpc_bits_read(r, 16); + si->gain_album = (mpc_uint16_t) mpc_bits_read(r, 16); + si->peak_album = (mpc_uint16_t) mpc_bits_read(r, 16); + si->is_true_gapless = mpc_bits_read(r, 1); // true gapless: used? + last_frame_samples = mpc_bits_read(r, 11); // true gapless: valid samples for last frame + si->fast_seek = mpc_bits_read(r, 1); // fast seeking + mpc_bits_read(r, 19); // unused + si->encoder_version = mpc_bits_read(r, 8); + si->channels = 2; + si->block_pwr = 0; + + // convert gain info + if (si->gain_title != 0) { + int tmp = (int)((MPC_OLD_GAIN_REF - (mpc_int16_t)si->gain_title / 100.) * 256. + .5); + if (tmp >= (1 << 16) || tmp < 0) tmp = 0; + si->gain_title = (mpc_int16_t) tmp; + } + + if (si->gain_album != 0) { + int tmp = (int)((MPC_OLD_GAIN_REF - (mpc_int16_t)si->gain_album / 100.) * 256. + .5); + if (tmp >= (1 << 16) || tmp < 0) tmp = 0; + si->gain_album = (mpc_int16_t) tmp; + } + + if (si->peak_title != 0) + si->peak_title = (mpc_uint16_t) (log10(si->peak_title) * 20 * 256 + .5); + + if (si->peak_album != 0) + si->peak_album = (mpc_uint16_t) (log10(si->peak_album) * 20 * 256 + .5); + + mpc_get_encoder_string(si); + + if (last_frame_samples == 0) last_frame_samples = MPC_FRAME_LENGTH; + else if (last_frame_samples > MPC_FRAME_LENGTH) return MPC_STATUS_FAIL; + si->samples = (mpc_int64_t) frames * MPC_FRAME_LENGTH; + if (si->is_true_gapless) + si->samples -= (MPC_FRAME_LENGTH - last_frame_samples); + else + si->samples -= MPC_DECODER_SYNTH_DELAY; + + si->average_bitrate = (si->tag_offset - si->header_position) * 8.0 + * si->sample_freq / si->samples; + + return check_streaminfo(si); +} + +/// Reads replay gain datas +void streaminfo_gain(mpc_streaminfo* si, const mpc_bits_reader * r_in) +{ + mpc_bits_reader r = *r_in; + + int version = mpc_bits_read(&r, 8); // gain version + if (version != 1) // we only know ver 1 + return; + si->gain_title = (mpc_uint16_t) mpc_bits_read(&r, 16); + si->peak_title = (mpc_uint16_t) mpc_bits_read(&r, 16); + si->gain_album = (mpc_uint16_t) mpc_bits_read(&r, 16); + si->peak_album = (mpc_uint16_t) mpc_bits_read(&r, 16); +} + +/// Reads streaminfo from SV8 header. +mpc_status +streaminfo_read_header_sv8(mpc_streaminfo* si, const mpc_bits_reader * r_in, + mpc_size_t block_size) +{ + mpc_uint32_t CRC; + mpc_bits_reader r = *r_in; + + CRC = (mpc_bits_read(&r, 16) << 16) | mpc_bits_read(&r, 16); + if (CRC != mpc_crc32(r.buff + 1 - (r.count >> 3), (int)block_size - 4)) + return MPC_STATUS_FAIL; + + si->stream_version = mpc_bits_read(&r, 8); + if (si->stream_version != 8) + return MPC_STATUS_FAIL; + + mpc_bits_get_size(&r, &si->samples); + mpc_bits_get_size(&r, &si->beg_silence); + + si->is_true_gapless = 1; + si->sample_freq = samplefreqs[mpc_bits_read(&r, 3)]; + si->max_band = mpc_bits_read(&r, 5) + 1; + si->channels = mpc_bits_read(&r, 4) + 1; + si->ms = mpc_bits_read(&r, 1); + si->block_pwr = mpc_bits_read(&r, 3) * 2; + + si->bitrate = 0; + + if ((si->samples - si->beg_silence) != 0) + si->average_bitrate = (si->tag_offset - si->header_position) * 8.0 + * si->sample_freq / (si->samples - si->beg_silence); + + return check_streaminfo(si); +} + +/// Reads encoder informations +void streaminfo_encoder_info(mpc_streaminfo* si, const mpc_bits_reader * r_in) +{ + mpc_bits_reader r = *r_in; + + si->profile = mpc_bits_read(&r, 7) / 8.; + si->profile_name = mpc_get_version_string(si->profile); + si->pns = mpc_bits_read(&r, 1); + si->encoder_version = mpc_bits_read(&r, 8) << 24; // major + si->encoder_version |= mpc_bits_read(&r, 8) << 16; // minor + si->encoder_version |= mpc_bits_read(&r, 8) << 8; // build + + + mpc_get_encoder_string(si); +} + +double +mpc_streaminfo_get_length(mpc_streaminfo * si) +{ + return (double) (si->samples - si->beg_silence) / si->sample_freq; +} + +mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si) +{ + return si->samples - si->beg_silence; +} diff --git a/libmednahawk/src/mpcdec/streaminfo.h b/libmednahawk/src/mpcdec/streaminfo.h new file mode 100644 index 0000000000..9cb16fe488 --- /dev/null +++ b/libmednahawk/src/mpcdec/streaminfo.h @@ -0,0 +1,109 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file streaminfo.h +#ifndef _MPCDEC_STREAMINFO_H_ +#define _MPCDEC_STREAMINFO_H_ +#ifdef WIN32 +#pragma once +#endif + +#include "mpc_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef mpc_int32_t mpc_streaminfo_off_t; + +/// \brief mpc stream properties structure +/// +/// Structure containing all the properties of an mpc stream. Populated +/// by the streaminfo_read function. +typedef struct mpc_streaminfo { + /// @name Core mpc stream properties + //@{ + mpc_uint32_t sample_freq; ///< Sample frequency of stream + mpc_uint32_t channels; ///< Number of channels in stream + mpc_uint32_t stream_version; ///< Streamversion of stream + mpc_uint32_t bitrate; ///< Bitrate of stream file (in bps) + double average_bitrate; ///< Average bitrate of stream (in bits/sec) + mpc_uint32_t max_band; ///< Maximum band-index used in stream (0...31) + mpc_uint32_t ms; ///< Mid/side stereo (0: off, 1: on) + mpc_uint32_t fast_seek; ///< True if stream supports fast-seeking (sv7) + mpc_uint32_t block_pwr; ///< Number of frames in a block = 2^block_pwr (sv8) + //@} + + /// @name Replaygain properties + //@{ + mpc_uint16_t gain_title; ///< Replaygain title value + mpc_uint16_t gain_album; ///< Replaygain album value + mpc_uint16_t peak_album; ///< Peak album loudness level + mpc_uint16_t peak_title; ///< Peak title loudness level + //@} + + /// @name True gapless properties + //@{ + mpc_uint32_t is_true_gapless; ///< True gapless? (0: no, 1: yes) + mpc_uint64_t samples; ///< Number of samples in the stream + mpc_uint64_t beg_silence; ///< Number of samples that must not be played at the beginning of the stream + //@} + + /// @name Encoder informations + //@{ + mpc_uint32_t encoder_version; ///< Version of encoder used + char encoder[256]; ///< Encoder name + mpc_bool_t pns; ///< pns used + float profile; ///< Quality profile of stream + const char* profile_name; ///< Name of profile used by stream + //@} + + + mpc_streaminfo_off_t header_position; ///< Byte offset of position of header in stream + mpc_streaminfo_off_t tag_offset; ///< Offset to file tags + mpc_streaminfo_off_t total_file_length; ///< Total length of underlying file +} mpc_streaminfo; + +/// Gets length of stream si, in seconds. +/// \return length of stream in seconds +MPC_API double mpc_streaminfo_get_length(mpc_streaminfo *si); + +/// Returns length of stream si, in samples. +/// \return length of stream in samples +MPC_API mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libmednahawk/src/mpcdec/synth_filter.c b/libmednahawk/src/mpcdec/synth_filter.c new file mode 100644 index 0000000000..6be16466a9 --- /dev/null +++ b/libmednahawk/src/mpcdec/synth_filter.c @@ -0,0 +1,430 @@ +/* + Copyright (c) 2005-2009, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/// \file synth_filter.c +/// Synthesis functions. +/// \todo document me +#include +#include "mpcdec.h" +#include "decoder.h" +#include "mpcdec_math.h" + +/* C O N S T A N T S */ +#define MPC_FIXED_POINT_SYNTH_FIX 2 + +#undef _ +#ifdef MPC_FIXED_POINT +#define _(value) MPC_MAKE_FRACT_CONST((double)value/(double)(0x40000)) +#else +#define _(value) MAKE_MPC_SAMPLE((double)value/(double)(0x10000)) +#endif + + +static const MPC_SAMPLE_FORMAT Di_opt [32] [16] = { + { _( 0), _( -29), _( 213), _( -459), _( 2037), _(-5153), _( 6574), _(-37489), _(75038), _(37489), _(6574), _( 5153), _(2037), _( 459), _(213), _(29) }, + { _( -1), _( -31), _( 218), _( -519), _( 2000), _(-5517), _( 5959), _(-39336), _(74992), _(35640), _(7134), _( 4788), _(2063), _( 401), _(208), _(26) }, + { _( -1), _( -35), _( 222), _( -581), _( 1952), _(-5879), _( 5288), _(-41176), _(74856), _(33791), _(7640), _( 4425), _(2080), _( 347), _(202), _(24) }, + { _( -1), _( -38), _( 225), _( -645), _( 1893), _(-6237), _( 4561), _(-43006), _(74630), _(31947), _(8092), _( 4063), _(2087), _( 294), _(196), _(21) }, + { _( -1), _( -41), _( 227), _( -711), _( 1822), _(-6589), _( 3776), _(-44821), _(74313), _(30112), _(8492), _( 3705), _(2085), _( 244), _(190), _(19) }, + { _( -1), _( -45), _( 228), _( -779), _( 1739), _(-6935), _( 2935), _(-46617), _(73908), _(28289), _(8840), _( 3351), _(2075), _( 197), _(183), _(17) }, + { _( -1), _( -49), _( 228), _( -848), _( 1644), _(-7271), _( 2037), _(-48390), _(73415), _(26482), _(9139), _( 3004), _(2057), _( 153), _(176), _(16) }, + { _( -2), _( -53), _( 227), _( -919), _( 1535), _(-7597), _( 1082), _(-50137), _(72835), _(24694), _(9389), _( 2663), _(2032), _( 111), _(169), _(14) }, + { _( -2), _( -58), _( 224), _( -991), _( 1414), _(-7910), _( 70), _(-51853), _(72169), _(22929), _(9592), _( 2330), _(2001), _( 72), _(161), _(13) }, + { _( -2), _( -63), _( 221), _(-1064), _( 1280), _(-8209), _( -998), _(-53534), _(71420), _(21189), _(9750), _( 2006), _(1962), _( 36), _(154), _(11) }, + { _( -2), _( -68), _( 215), _(-1137), _( 1131), _(-8491), _( -2122), _(-55178), _(70590), _(19478), _(9863), _( 1692), _(1919), _( 2), _(147), _(10) }, + { _( -3), _( -73), _( 208), _(-1210), _( 970), _(-8755), _( -3300), _(-56778), _(69679), _(17799), _(9935), _( 1388), _(1870), _( -29), _(139), _( 9) }, + { _( -3), _( -79), _( 200), _(-1283), _( 794), _(-8998), _( -4533), _(-58333), _(68692), _(16155), _(9966), _( 1095), _(1817), _( -57), _(132), _( 8) }, + { _( -4), _( -85), _( 189), _(-1356), _( 605), _(-9219), _( -5818), _(-59838), _(67629), _(14548), _(9959), _( 814), _(1759), _( -83), _(125), _( 7) }, + { _( -4), _( -91), _( 177), _(-1428), _( 402), _(-9416), _( -7154), _(-61289), _(66494), _(12980), _(9916), _( 545), _(1698), _(-106), _(117), _( 7) }, + { _( -5), _( -97), _( 163), _(-1498), _( 185), _(-9585), _( -8540), _(-62684), _(65290), _(11455), _(9838), _( 288), _(1634), _(-127), _(111), _( 6) }, + { _( -5), _(-104), _( 146), _(-1567), _( -45), _(-9727), _( -9975), _(-64019), _(64019), _( 9975), _(9727), _( 45), _(1567), _(-146), _(104), _( 5) }, + { _( -6), _(-111), _( 127), _(-1634), _( -288), _(-9838), _(-11455), _(-65290), _(62684), _( 8540), _(9585), _( -185), _(1498), _(-163), _( 97), _( 5) }, + { _( -7), _(-117), _( 106), _(-1698), _( -545), _(-9916), _(-12980), _(-66494), _(61289), _( 7154), _(9416), _( -402), _(1428), _(-177), _( 91), _( 4) }, + { _( -7), _(-125), _( 83), _(-1759), _( -814), _(-9959), _(-14548), _(-67629), _(59838), _( 5818), _(9219), _( -605), _(1356), _(-189), _( 85), _( 4) }, + { _( -8), _(-132), _( 57), _(-1817), _(-1095), _(-9966), _(-16155), _(-68692), _(58333), _( 4533), _(8998), _( -794), _(1283), _(-200), _( 79), _( 3) }, + { _( -9), _(-139), _( 29), _(-1870), _(-1388), _(-9935), _(-17799), _(-69679), _(56778), _( 3300), _(8755), _( -970), _(1210), _(-208), _( 73), _( 3) }, + { _(-10), _(-147), _( -2), _(-1919), _(-1692), _(-9863), _(-19478), _(-70590), _(55178), _( 2122), _(8491), _(-1131), _(1137), _(-215), _( 68), _( 2) }, + { _(-11), _(-154), _( -36), _(-1962), _(-2006), _(-9750), _(-21189), _(-71420), _(53534), _( 998), _(8209), _(-1280), _(1064), _(-221), _( 63), _( 2) }, + { _(-13), _(-161), _( -72), _(-2001), _(-2330), _(-9592), _(-22929), _(-72169), _(51853), _( -70), _(7910), _(-1414), _( 991), _(-224), _( 58), _( 2) }, + { _(-14), _(-169), _(-111), _(-2032), _(-2663), _(-9389), _(-24694), _(-72835), _(50137), _(-1082), _(7597), _(-1535), _( 919), _(-227), _( 53), _( 2) }, + { _(-16), _(-176), _(-153), _(-2057), _(-3004), _(-9139), _(-26482), _(-73415), _(48390), _(-2037), _(7271), _(-1644), _( 848), _(-228), _( 49), _( 1) }, + { _(-17), _(-183), _(-197), _(-2075), _(-3351), _(-8840), _(-28289), _(-73908), _(46617), _(-2935), _(6935), _(-1739), _( 779), _(-228), _( 45), _( 1) }, + { _(-19), _(-190), _(-244), _(-2085), _(-3705), _(-8492), _(-30112), _(-74313), _(44821), _(-3776), _(6589), _(-1822), _( 711), _(-227), _( 41), _( 1) }, + { _(-21), _(-196), _(-294), _(-2087), _(-4063), _(-8092), _(-31947), _(-74630), _(43006), _(-4561), _(6237), _(-1893), _( 645), _(-225), _( 38), _( 1) }, + { _(-24), _(-202), _(-347), _(-2080), _(-4425), _(-7640), _(-33791), _(-74856), _(41176), _(-5288), _(5879), _(-1952), _( 581), _(-222), _( 35), _( 1) }, + { _(-26), _(-208), _(-401), _(-2063), _(-4788), _(-7134), _(-35640), _(-74992), _(39336), _(-5959), _(5517), _(-2000), _( 519), _(-218), _( 31), _( 1) } +}; + +#undef _ + +static void +mpc_compute_new_V(const MPC_SAMPLE_FORMAT* p_sample, MPC_SAMPLE_FORMAT* pV) +{ + // Calculating new V-buffer values for left channel + // calculate new V-values (ISO-11172-3, p. 39) + // based upon fast-MDCT algorithm by Byeong Gi Lee + MPC_SAMPLE_FORMAT A00, A01, A02, A03, A04, A05, A06, A07, A08, A09, A10, A11, A12, A13, A14, A15; + MPC_SAMPLE_FORMAT B00, B01, B02, B03, B04, B05, B06, B07, B08, B09, B10, B11, B12, B13, B14, B15; + MPC_SAMPLE_FORMAT tmp; + + A00 = p_sample[ 0] + p_sample[31]; + A01 = p_sample[ 1] + p_sample[30]; + A02 = p_sample[ 2] + p_sample[29]; + A03 = p_sample[ 3] + p_sample[28]; + A04 = p_sample[ 4] + p_sample[27]; + A05 = p_sample[ 5] + p_sample[26]; + A06 = p_sample[ 6] + p_sample[25]; + A07 = p_sample[ 7] + p_sample[24]; + A08 = p_sample[ 8] + p_sample[23]; + A09 = p_sample[ 9] + p_sample[22]; + A10 = p_sample[10] + p_sample[21]; + A11 = p_sample[11] + p_sample[20]; + A12 = p_sample[12] + p_sample[19]; + A13 = p_sample[13] + p_sample[18]; + A14 = p_sample[14] + p_sample[17]; + A15 = p_sample[15] + p_sample[16]; + + B00 = A00 + A15; + B01 = A01 + A14; + B02 = A02 + A13; + B03 = A03 + A12; + B04 = A04 + A11; + B05 = A05 + A10; + B06 = A06 + A09; + B07 = A07 + A08;; + B08 = MPC_SCALE_CONST((A00 - A15) , 0.5024192929f , 31); + B09 = MPC_SCALE_CONST((A01 - A14) , 0.5224986076f , 31); + B10 = MPC_SCALE_CONST((A02 - A13) , 0.5669440627f , 31); + B11 = MPC_SCALE_CONST((A03 - A12) , 0.6468217969f , 31); + B12 = MPC_SCALE_CONST((A04 - A11) , 0.7881546021f , 31); + B13 = MPC_SCALE_CONST((A05 - A10) , 1.0606776476f , 30); + B14 = MPC_SCALE_CONST((A06 - A09) , 1.7224471569f , 30); + B15 = MPC_SCALE_CONST((A07 - A08) , 5.1011486053f , 28); + + A00 = B00 + B07; + A01 = B01 + B06; + A02 = B02 + B05; + A03 = B03 + B04; + A04 = MPC_SCALE_CONST((B00 - B07) , 0.5097956061f , 31); + A05 = MPC_SCALE_CONST((B01 - B06) , 0.6013448834f , 31); + A06 = MPC_SCALE_CONST((B02 - B05) , 0.8999761939f , 31); + A07 = MPC_SCALE_CONST((B03 - B04) , 2.5629155636f , 29); + A08 = B08 + B15; + A09 = B09 + B14; + A10 = B10 + B13; + A11 = B11 + B12; + A12 = MPC_SCALE_CONST((B08 - B15) , 0.5097956061f , 31); + A13 = MPC_SCALE_CONST((B09 - B14) , 0.6013448834f , 31); + A14 = MPC_SCALE_CONST((B10 - B13) , 0.8999761939f , 31); + A15 = MPC_SCALE_CONST((B11 - B12) , 2.5629155636f , 29); + + B00 = A00 + A03; + B01 = A01 + A02; + B02 = MPC_MULTIPLY_FRACT_CONST_FIX((A00 - A03) , 0.5411961079f , 1); + B03 = MPC_MULTIPLY_FRACT_CONST_FIX((A01 - A02) , 1.3065630198f , 2); + B04 = A04 + A07; + B05 = A05 + A06; + B06 = MPC_MULTIPLY_FRACT_CONST_FIX((A04 - A07) , 0.5411961079f , 1); + B07 = MPC_MULTIPLY_FRACT_CONST_FIX((A05 - A06) , 1.3065630198f , 2); + B08 = A08 + A11; + B09 = A09 + A10; + B10 = MPC_MULTIPLY_FRACT_CONST_FIX((A08 - A11) , 0.5411961079f , 1); + B11 = MPC_MULTIPLY_FRACT_CONST_FIX((A09 - A10) , 1.3065630198f , 2); + B12 = A12 + A15; + B13 = A13 + A14; + B14 = MPC_MULTIPLY_FRACT_CONST_FIX((A12 - A15) , 0.5411961079f , 1); + B15 = MPC_MULTIPLY_FRACT_CONST_FIX((A13 - A14) , 1.3065630198f , 2); + + A00 = B00 + B01; + A01 = MPC_MULTIPLY_FRACT_CONST_FIX((B00 - B01) , 0.7071067691f , 1); + A02 = B02 + B03; + A03 = MPC_MULTIPLY_FRACT_CONST_FIX((B02 - B03) , 0.7071067691f , 1); + A04 = B04 + B05; + A05 = MPC_MULTIPLY_FRACT_CONST_FIX((B04 - B05) , 0.7071067691f , 1); + A06 = B06 + B07; + A07 = MPC_MULTIPLY_FRACT_CONST_FIX((B06 - B07) , 0.7071067691f , 1); + A08 = B08 + B09; + A09 = MPC_MULTIPLY_FRACT_CONST_FIX((B08 - B09) , 0.7071067691f , 1); + A10 = B10 + B11; + A11 = MPC_MULTIPLY_FRACT_CONST_FIX((B10 - B11) , 0.7071067691f , 1); + A12 = B12 + B13; + A13 = MPC_MULTIPLY_FRACT_CONST_FIX((B12 - B13) , 0.7071067691f , 1); + A14 = B14 + B15; + A15 = MPC_MULTIPLY_FRACT_CONST_FIX((B14 - B15) , 0.7071067691f , 1); + + pV[48] = -A00; + pV[ 0] = A01; + pV[40] = -A02 - (pV[ 8] = A03); + pV[36] = -((pV[ 4] = A05 + (pV[12] = A07)) + A06); + pV[44] = - A04 - A06 - A07; + pV[ 6] = (pV[10] = A11 + (pV[14] = A15)) + A13; + pV[38] = (pV[34] = -(pV[ 2] = A09 + A13 + A15) - A14) + A09 - A10 - A11; + pV[46] = (tmp = -(A12 + A14 + A15)) - A08; + pV[42] = tmp - A10 - A11; + + A00 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 0] - p_sample[31]) , 0.5006030202f , MPC_FIXED_POINT_SYNTH_FIX); + A01 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 1] - p_sample[30]) , 0.5054709315f , MPC_FIXED_POINT_SYNTH_FIX); + A02 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 2] - p_sample[29]) , 0.5154473186f , MPC_FIXED_POINT_SYNTH_FIX); + A03 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 3] - p_sample[28]) , 0.5310425758f , MPC_FIXED_POINT_SYNTH_FIX); + A04 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 4] - p_sample[27]) , 0.5531039238f , MPC_FIXED_POINT_SYNTH_FIX); + A05 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 5] - p_sample[26]) , 0.5829349756f , MPC_FIXED_POINT_SYNTH_FIX); + A06 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 6] - p_sample[25]) , 0.6225041151f , MPC_FIXED_POINT_SYNTH_FIX); + A07 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 7] - p_sample[24]) , 0.6748083234f , MPC_FIXED_POINT_SYNTH_FIX); + A08 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 8] - p_sample[23]) , 0.7445362806f , MPC_FIXED_POINT_SYNTH_FIX); + A09 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[ 9] - p_sample[22]) , 0.8393496275f , MPC_FIXED_POINT_SYNTH_FIX); + A10 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[10] - p_sample[21]) , 0.9725682139f , MPC_FIXED_POINT_SYNTH_FIX); +#if MPC_FIXED_POINT_SYNTH_FIX>=2 + A11 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[11] - p_sample[20]) , 1.1694399118f , MPC_FIXED_POINT_SYNTH_FIX); + A12 = MPC_MULTIPLY_FRACT_CONST_SHR((p_sample[12] - p_sample[19]) , 1.4841645956f , MPC_FIXED_POINT_SYNTH_FIX); +#else + A11 = MPC_SCALE_CONST_SHR ((p_sample[11] - p_sample[20]) , 1.1694399118f , 30, MPC_FIXED_POINT_SYNTH_FIX); + A12 = MPC_SCALE_CONST_SHR ((p_sample[12] - p_sample[19]) , 1.4841645956f , 30, MPC_FIXED_POINT_SYNTH_FIX); +#endif + A13 = MPC_SCALE_CONST_SHR ((p_sample[13] - p_sample[18]) , 2.0577809811f , 29, MPC_FIXED_POINT_SYNTH_FIX); + A14 = MPC_SCALE_CONST_SHR ((p_sample[14] - p_sample[17]) , 3.4076085091f , 29, MPC_FIXED_POINT_SYNTH_FIX); + A15 = MPC_SCALE_CONST_SHR ((p_sample[15] - p_sample[16]) , 10.1900081635f, 27 ,MPC_FIXED_POINT_SYNTH_FIX); + + B00 = A00 + A15; + B01 = A01 + A14; + B02 = A02 + A13; + B03 = A03 + A12; + B04 = A04 + A11; + B05 = A05 + A10; + B06 = A06 + A09; + B07 = A07 + A08; + B08 = MPC_SCALE_CONST((A00 - A15) , 0.5024192929f , 31); + B09 = MPC_SCALE_CONST((A01 - A14) , 0.5224986076f , 31); + B10 = MPC_SCALE_CONST((A02 - A13) , 0.5669440627f , 31); + B11 = MPC_SCALE_CONST((A03 - A12) , 0.6468217969f , 31); + B12 = MPC_SCALE_CONST((A04 - A11) , 0.7881546021f , 31); + B13 = MPC_SCALE_CONST((A05 - A10) , 1.0606776476f , 30); + B14 = MPC_SCALE_CONST((A06 - A09) , 1.7224471569f , 30); + B15 = MPC_SCALE_CONST((A07 - A08) , 5.1011486053f , 28); + + A00 = B00 + B07; + A01 = B01 + B06; + A02 = B02 + B05; + A03 = B03 + B04; + A04 = MPC_SCALE_CONST((B00 - B07) , 0.5097956061f , 31); + A05 = MPC_SCALE_CONST((B01 - B06) , 0.6013448834f , 31); + A06 = MPC_SCALE_CONST((B02 - B05) , 0.8999761939f , 31); + A07 = MPC_SCALE_CONST((B03 - B04) , 2.5629155636f , 29); + A08 = B08 + B15; + A09 = B09 + B14; + A10 = B10 + B13; + A11 = B11 + B12; + A12 = MPC_SCALE_CONST((B08 - B15) , 0.5097956061f , 31); + A13 = MPC_SCALE_CONST((B09 - B14) , 0.6013448834f , 31); + A14 = MPC_SCALE_CONST((B10 - B13) , 0.8999761939f , 31); + A15 = MPC_SCALE_CONST((B11 - B12) , 2.5629155636f , 29); + + B00 = A00 + A03; + B01 = A01 + A02; + B02 = MPC_SCALE_CONST((A00 - A03) , 0.5411961079f , 31); + B03 = MPC_SCALE_CONST((A01 - A02) , 1.3065630198f , 30); + B04 = A04 + A07; + B05 = A05 + A06; + B06 = MPC_SCALE_CONST((A04 - A07) , 0.5411961079f , 31); + B07 = MPC_SCALE_CONST((A05 - A06) , 1.3065630198f , 30); + B08 = A08 + A11; + B09 = A09 + A10; + B10 = MPC_SCALE_CONST((A08 - A11) , 0.5411961079f , 31); + B11 = MPC_SCALE_CONST((A09 - A10) , 1.3065630198f , 30); + B12 = A12 + A15; + B13 = A13 + A14; + B14 = MPC_SCALE_CONST((A12 - A15) , 0.5411961079f , 31); + B15 = MPC_SCALE_CONST((A13 - A14) , 1.3065630198f , 30); + + A00 = MPC_SHL(B00 + B01, MPC_FIXED_POINT_SYNTH_FIX); + A01 = MPC_SCALE_CONST_SHL((B00 - B01) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A02 = MPC_SHL(B02 + B03, MPC_FIXED_POINT_SYNTH_FIX); + A03 = MPC_SCALE_CONST_SHL((B02 - B03) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A04 = MPC_SHL(B04 + B05, MPC_FIXED_POINT_SYNTH_FIX); + A05 = MPC_SCALE_CONST_SHL((B04 - B05) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A06 = MPC_SHL(B06 + B07, MPC_FIXED_POINT_SYNTH_FIX); + A07 = MPC_SCALE_CONST_SHL((B06 - B07) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A08 = MPC_SHL(B08 + B09, MPC_FIXED_POINT_SYNTH_FIX); + A09 = MPC_SCALE_CONST_SHL((B08 - B09) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A10 = MPC_SHL(B10 + B11, MPC_FIXED_POINT_SYNTH_FIX); + A11 = MPC_SCALE_CONST_SHL((B10 - B11) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A12 = MPC_SHL(B12 + B13, MPC_FIXED_POINT_SYNTH_FIX); + A13 = MPC_SCALE_CONST_SHL((B12 - B13) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + A14 = MPC_SHL(B14 + B15, MPC_FIXED_POINT_SYNTH_FIX); + A15 = MPC_SCALE_CONST_SHL((B14 - B15) , 0.7071067691f , 31, MPC_FIXED_POINT_SYNTH_FIX); + + // mehrfach verwendete Ausdrcke: A04+A06+A07, A09+A13+A15 + pV[ 5] = (pV[11] = (pV[13] = A07 + (pV[15] = A15)) + A11) + A05 + A13; + pV[ 7] = (pV[ 9] = A03 + A11 + A15) + A13; + pV[33] = -(pV[ 1] = A01 + A09 + A13 + A15) - A14; + pV[35] = -(pV[ 3] = A05 + A07 + A09 + A13 + A15) - A06 - A14; + pV[37] = (tmp = -(A10 + A11 + A13 + A14 + A15)) - A05 - A06 - A07; + pV[39] = tmp - A02 - A03; // abh�gig vom Befehl drber + pV[41] = (tmp += A13 - A12) - A02 - A03; // abh�gig vom Befehl 2 drber + pV[43] = tmp - A04 - A06 - A07; // abh�gig von Befehlen 1 und 3 drber + pV[47] = (tmp = -(A08 + A12 + A14 + A15)) - A00; + pV[45] = tmp - A04 - A06 - A07; // abh�gig vom Befehl drber + + pV[32] = -pV[ 0]; + pV[31] = -pV[ 1]; + pV[30] = -pV[ 2]; + pV[29] = -pV[ 3]; + pV[28] = -pV[ 4]; + pV[27] = -pV[ 5]; + pV[26] = -pV[ 6]; + pV[25] = -pV[ 7]; + pV[24] = -pV[ 8]; + pV[23] = -pV[ 9]; + pV[22] = -pV[10]; + pV[21] = -pV[11]; + pV[20] = -pV[12]; + pV[19] = -pV[13]; + pV[18] = -pV[14]; + pV[17] = -pV[15]; + + pV[63] = pV[33]; + pV[62] = pV[34]; + pV[61] = pV[35]; + pV[60] = pV[36]; + pV[59] = pV[37]; + pV[58] = pV[38]; + pV[57] = pV[39]; + pV[56] = pV[40]; + pV[55] = pV[41]; + pV[54] = pV[42]; + pV[53] = pV[43]; + pV[52] = pV[44]; + pV[51] = pV[45]; + pV[50] = pV[46]; + pV[49] = pV[47]; +} + +static void +mpc_synthese_filter_float_internal(MPC_SAMPLE_FORMAT* p_out, MPC_SAMPLE_FORMAT* pV, const MPC_SAMPLE_FORMAT* pY, mpc_int_t channels) +{ + mpc_uint32_t n; + for ( n = 0; n < 36; n++, pY += 32 ) + { + MPC_SAMPLE_FORMAT* pData = p_out; + const MPC_SAMPLE_FORMAT* pD = (const MPC_SAMPLE_FORMAT*) &Di_opt; + mpc_int32_t k; + pV -= 64; + mpc_compute_new_V( pY, pV ); + for ( k = 0; k < 32; k++, pD += 16, pV++ ) + { + *pData = MPC_SHL( + MPC_MULTIPLY_FRACT(pV[ 0], pD[ 0]) + MPC_MULTIPLY_FRACT(pV[ 96], pD[ 1]) + MPC_MULTIPLY_FRACT(pV[128], pD[ 2]) + MPC_MULTIPLY_FRACT(pV[224], pD[ 3]) + + MPC_MULTIPLY_FRACT(pV[256], pD[ 4]) + MPC_MULTIPLY_FRACT(pV[352], pD[ 5]) + MPC_MULTIPLY_FRACT(pV[384], pD[ 6]) + MPC_MULTIPLY_FRACT(pV[480], pD[ 7]) + + MPC_MULTIPLY_FRACT(pV[512], pD[ 8]) + MPC_MULTIPLY_FRACT(pV[608], pD[ 9]) + MPC_MULTIPLY_FRACT(pV[640], pD[10]) + MPC_MULTIPLY_FRACT(pV[736], pD[11]) + + MPC_MULTIPLY_FRACT(pV[768], pD[12]) + MPC_MULTIPLY_FRACT(pV[864], pD[13]) + MPC_MULTIPLY_FRACT(pV[896], pD[14]) + MPC_MULTIPLY_FRACT(pV[992], pD[15]) + , 2); + pData += channels; + } + pV -= 32; //bleh + p_out += 32 * channels; + } +} + +void +mpc_decoder_synthese_filter_float(mpc_decoder* p_dec, MPC_SAMPLE_FORMAT* p_out, mpc_int_t channels) +{ + /********* left channel ********/ + memmove(&p_dec->V_L[MPC_V_MEM], p_dec->V_L, 960 * sizeof *p_dec->V_L); + mpc_synthese_filter_float_internal(p_out, &p_dec->V_L[MPC_V_MEM], p_dec->Y_L[0], channels); + + /******** right channel ********/ + if (channels > 1) { + memmove(&p_dec->V_R[MPC_V_MEM], p_dec->V_R, 960 * sizeof *p_dec->V_R); + mpc_synthese_filter_float_internal(p_out + 1, &p_dec->V_R[MPC_V_MEM], p_dec->Y_R[0], channels); + } +} + +/*******************************************/ +/* */ +/* dithered synthesis */ +/* */ +/*******************************************/ + +static const mpc_uint8_t Parity [256] = { // parity + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1, + 1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0 +}; + +/* + * This is a simple random number generator with good quality for audio purposes. + * It consists of two polycounters with opposite rotation direction and different + * periods. The periods are coprime, so the total period is the product of both. + * + * ------------------------------------------------------------------------------------------------- + * +-> |31:30:29:28:27:26:25:24:23:22:21:20:19:18:17:16:15:14:13:12:11:10: 9: 8: 7: 6: 5: 4: 3: 2: 1: 0| + * | ------------------------------------------------------------------------------------------------- + * | | | | | | | + * | +--+--+--+-XOR-+--------+ + * | | + * +--------------------------------------------------------------------------------------+ + * + * ------------------------------------------------------------------------------------------------- + * |31:30:29:28:27:26:25:24:23:22:21:20:19:18:17:16:15:14:13:12:11:10: 9: 8: 7: 6: 5: 4: 3: 2: 1: 0| <-+ + * ------------------------------------------------------------------------------------------------- | + * | | | | | + * +--+----XOR----+--+ | + * | | + * +----------------------------------------------------------------------------------------+ + * + * + * The first has an period of 3*5*17*257*65537, the second of 7*47*73*178481, + * which gives a period of 18.410.713.077.675.721.215. The result is the + * XORed values of both generators. + */ +mpc_uint32_t +mpc_random_int(mpc_decoder* p_dec) +{ +#if 1 + mpc_uint32_t t1, t2, t3, t4; + + t3 = t1 = p_dec->__r1; t4 = t2 = p_dec->__r2; // Parity calculation is done via table lookup, this is also available + t1 &= 0xF5; t2 >>= 25; // on CPUs without parity, can be implemented in C and avoid unpredictable + t1 = Parity[t1]; t2 &= 0x63; // jumps and slow rotate through the carry flag operations. + t1 <<= 31; t2 = Parity[t2]; + + return (p_dec->__r1 = (t3 >> 1) | t1 ) ^ (p_dec->__r2 = (t4 + t4) | t2 ); +#else + return (p_dec->__r1 = (p_dec->__r1 >> 1) | ((mpc_uint32_t) Parity[ p_dec->__r1 & 0xF5] << 31)) + ^ (p_dec->__r2 = (p_dec->__r2 << 1) | (mpc_uint32_t) Parity[(p_dec->__r2 >> 25) & 0x63]); +#endif +} diff --git a/libmednahawk/src/mpcdec/tags.c b/libmednahawk/src/mpcdec/tags.c new file mode 100644 index 0000000000..89c3ba603a --- /dev/null +++ b/libmednahawk/src/mpcdec/tags.c @@ -0,0 +1,1134 @@ +/* + * Encoder tag handling + * + * (C) Frank Klemm 2002. Janne Hyv�inen 2002. All rights reserved. + * + * Principles: + * + * + * History: + * 2002-06 created + * 2002-08-12 added translation method 5 to addtag() + * Tags taken from source file can't overwrite already existing items + * added Init_Tags() + * 2002-08-13 Added all windows code pages + * 2002-10-09 Added code to parse tags from filename + * + * Global functions: + * - addtag() + * + * TODO: + * - '/' and '\' should be possible as PATH_SEP + */ + +// #include "mpcenc.h" +#include +#include "mpc_types.h" + +#ifdef _WIN32 +# include +#endif + +#ifdef _MSC_VER +# define strncasecmp strnicmp +#endif + +// Path separator +#if defined __unix__ || defined __bsdi__ || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__ || defined __APPLE__ +# define PATH_SEP '/' +# define DRIVE_SEP '\0' +#elif defined _WIN32 || defined __TURBOC__ || defined __ZTC__ || defined _MSC_VER +# define PATH_SEP '\\' +# define DRIVE_SEP ':' +#else +# define PATH_SEP '/' // Amiga: C:/ +# define DRIVE_SEP ':' +#endif + +#ifdef USE_WIDECHAR +# include +#endif + + +static const char* GenreList [] = { + "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", + "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", + "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", + "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", + "Trip-Hop", "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", + "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", + "AlternRock", "Bass", "Soul", "Punk", "Space", "Meditative", + "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", + "Techno-Industrial", "Electronic", "Pop-Folk", "Eurodance", "Dream", + "Southern Rock", "Comedy", "Cult", "Gangsta", "Top 40", "Christian Rap", + "Pop/Funk", "Jungle", "Native American", "Cabaret", "New Wave", + "Psychadelic", "Rave", "Showtunes", "Trailer", "Lo-Fi", "Tribal", + "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", + "Hard Rock", "Folk", "Folk/Rock", "National Folk", "Swing", "Fast-Fusion", + "Bebob", "Latin", "Revival", "Celtic", "Bluegrass", "Avantgarde", + "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", + "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", + "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", + "Booty Bass", "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", + "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", + "Freestyle", "Duet", "Punk Rock", "Drum Solo", "A capella", "Euro-House", + "Dance Hall", "Goa", "Drum & Bass", "Club House", "Hardcore", "Terror", + "Indie", "BritPop", "NegerPunk", "Polsk Punk", "Beat", "Christian Gangsta", + "Heavy Metal", "Black Metal", "Crossover", "Contemporary C", + "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", + "SynthPop" +}; + + +struct APETagFooterStruct { + mpc_uint8_t ID [8]; // should equal 'APETAGEX' + mpc_uint8_t Version [4]; // currently 1000 (version 1.000) + mpc_uint8_t Length [4]; // the complete size of the tag, including this footer + mpc_uint8_t TagCount [4]; // the number of fields in the tag + mpc_uint8_t Flags [4]; // the tag flags (none currently defined) + mpc_uint8_t Reserved [8]; // reserved for later use +}; + + +typedef struct { + char* key; + size_t keylen; + unsigned char* value; + size_t valuelen; + unsigned int flags; +} TagItem_t; + + +static TagItem_t T [256]; // up to 256 items, otherwise program crashs +static unsigned int TagCount = 0; + +#if defined __TURBOC__ + +static unsigned short CP_850 [256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, +}; + +#elif defined _WIN32 + +static unsigned short CP_37 [256] = { // ??? + 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, + 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, + 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, + 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, + 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7, + 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, + 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, + 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F, +}; + +static unsigned short CP_42 [256] = { // CP_SYMBOLS + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0xF020, 0xF021, 0xF022, 0xF023, 0xF024, 0xF025, 0xF026, 0xF027, 0xF028, 0xF029, 0xF02A, 0xF02B, 0xF02C, 0xF02D, 0xF02E, 0xF02F, + 0xF030, 0xF031, 0xF032, 0xF033, 0xF034, 0xF035, 0xF036, 0xF037, 0xF038, 0xF039, 0xF03A, 0xF03B, 0xF03C, 0xF03D, 0xF03E, 0xF03F, + 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF045, 0xF046, 0xF047, 0xF048, 0xF049, 0xF04A, 0xF04B, 0xF04C, 0xF04D, 0xF04E, 0xF04F, + 0xF050, 0xF051, 0xF052, 0xF053, 0xF054, 0xF055, 0xF056, 0xF057, 0xF058, 0xF059, 0xF05A, 0xF05B, 0xF05C, 0xF05D, 0xF05E, 0xF05F, + 0xF060, 0xF061, 0xF062, 0xF063, 0xF064, 0xF065, 0xF066, 0xF067, 0xF068, 0xF069, 0xF06A, 0xF06B, 0xF06C, 0xF06D, 0xF06E, 0xF06F, + 0xF070, 0xF071, 0xF072, 0xF073, 0xF074, 0xF075, 0xF076, 0xF077, 0xF078, 0xF079, 0xF07A, 0xF07B, 0xF07C, 0xF07D, 0xF07E, 0xF07F, + 0xF080, 0xF081, 0xF082, 0xF083, 0xF084, 0xF085, 0xF086, 0xF087, 0xF088, 0xF089, 0xF08A, 0xF08B, 0xF08C, 0xF08D, 0xF08E, 0xF08F, + 0xF090, 0xF091, 0xF092, 0xF093, 0xF094, 0xF095, 0xF096, 0xF097, 0xF098, 0xF099, 0xF09A, 0xF09B, 0xF09C, 0xF09D, 0xF09E, 0xF09F, + 0xF0A0, 0xF0A1, 0xF0A2, 0xF0A3, 0xF0A4, 0xF0A5, 0xF0A6, 0xF0A7, 0xF0A8, 0xF0A9, 0xF0AA, 0xF0AB, 0xF0AC, 0xF0AD, 0xF0AE, 0xF0AF, + 0xF0B0, 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, 0xF0B5, 0xF0B6, 0xF0B7, 0xF0B8, 0xF0B9, 0xF0BA, 0xF0BB, 0xF0BC, 0xF0BD, 0xF0BE, 0xF0BF, + 0xF0C0, 0xF0C1, 0xF0C2, 0xF0C3, 0xF0C4, 0xF0C5, 0xF0C6, 0xF0C7, 0xF0C8, 0xF0C9, 0xF0CA, 0xF0CB, 0xF0CC, 0xF0CD, 0xF0CE, 0xF0CF, + 0xF0D0, 0xF0D1, 0xF0D2, 0xF0D3, 0xF0D4, 0xF0D5, 0xF0D6, 0xF0D7, 0xF0D8, 0xF0D9, 0xF0DA, 0xF0DB, 0xF0DC, 0xF0DD, 0xF0DE, 0xF0DF, + 0xF0E0, 0xF0E1, 0xF0E2, 0xF0E3, 0xF0E4, 0xF0E5, 0xF0E6, 0xF0E7, 0xF0E8, 0xF0E9, 0xF0EA, 0xF0EB, 0xF0EC, 0xF0ED, 0xF0EE, 0xF0EF, + 0xF0F0, 0xF0F1, 0xF0F2, 0xF0F3, 0xF0F4, 0xF0F5, 0xF0F6, 0xF0F7, 0xF0F8, 0xF0F9, 0xF0FA, 0xF0FB, 0xF0FC, 0xF0FD, 0xF0FE, 0xF0FF, +}; + +static unsigned short CP_437 [256] = { // MS-DOS: US + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_500 [256] = { // ??? + 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5, 0x00E7, 0x00F1, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021, + 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF, 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, + 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5, 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1, + 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4, + 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE, + 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC, 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7, + 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5, + 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF, + 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F, +}; + +static unsigned short CP_850 [256] = { // MS-DOS Latin 1 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0, 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4, + 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE, 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580, + 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE, 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4, + 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8, 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_860 [256] = { // MS-DOS: Portuguese + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7, 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2, + 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9, 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_861 [256] = { // MS-DOS: Iceland + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD, 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_863 [256] = { // MS-DOS: Canadian French + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7, + 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9, 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192, + 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF, 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_865 [256] = { // MS-DOS: Nordic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0, +}; + +static unsigned short CP_874 [256] = { // MS-DOS: Thai + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x0082, 0x0083, 0x0084, 0x2026, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F, + 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F, + 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, + 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39, 0x0E3A, 0xF8C1, 0xF8C2, 0xF8C3, 0xF8C4, 0x0E3F, + 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, + 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xF8C5, 0xF8C6, 0xF8C7, 0xF8C8, +}; + +static unsigned short CP_1250 [256] = { // Windows: Latin 2 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0083, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, + 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B, + 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, + 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, + 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, + 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, + 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9, +}; + +static unsigned short CP_1251 [256] = { // Windows: Cyrillic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, + 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, + 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, + 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, +}; + +static unsigned short CP_1252 [256] = { // Windows: Latin 1 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x017D, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x017E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, +}; + +static unsigned short CP_1253 [256] = { // Windows: Greek + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x008A, 0x2039, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x009A, 0x203A, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0xF8F9, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0xF8FA, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, + 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, + 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xF8FB, +}; + +static unsigned short CP_1254 [256] = { // Windows: Latin 5 + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x009E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF, +}; + +static unsigned short CP_1255 [256] = { // Windows: Hebrew + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x008A, 0x2039, 0x008C, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x009A, 0x203A, 0x009C, 0x009D, 0x009E, 0x009F, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, + 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0xF88D, 0xF88E, 0xF88F, 0xF890, 0xF891, 0xF892, 0xF893, + 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF, + 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0xF894, 0xF895, 0x200E, 0x200F, 0xF896, +}; + +static unsigned short CP_1256 [256] = { // Windows: Arabic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, + 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, + 0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, + 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, + 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF, + 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7, 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2, +}; + +static unsigned short CP_1257 [256] = { // Windows: Baltic + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0083, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x008A, 0x2039, 0x008C, 0x00A8, 0x02C7, 0x00B8, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0098, 0x2122, 0x009A, 0x203A, 0x009C, 0x00AF, 0x02DB, 0x009F, + 0x00A0, 0xF8FC, 0x00A2, 0x00A3, 0x00A4, 0xF8FD, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, + 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, + 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, + 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C, + 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9, +}; + +static unsigned short CP_1258 [256] = { // Windows: Vietnam + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x008A, 0x2039, 0x0152, 0x008D, 0x008E, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x009A, 0x203A, 0x0153, 0x009D, 0x009E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF, + 0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF, + 0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF, +}; + +static unsigned short CP_10000 [256] = { // Apple Macintosh + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, + 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, + 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, + 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, + 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, + 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, + 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, +}; + +static unsigned short CP_10079 [256] = { // ??? + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, + 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, + 0x00DD, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, + 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8, + 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, 0x00FF, 0x0178, 0x2044, 0x00A4, 0x00D0, 0x00F0, 0x00DE, 0x00FE, + 0x00FD, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, + 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, +}; + +#endif + + +/* + * Resets Item Counter + * Do frees any memory. + */ + +void +Init_Tags ( void ) +{ + int i; + + for ( i = 0; i < (int)TagCount; i++ ) { + if ( T[i].key != NULL ) + free ( T[i].key ); + T[i].key = NULL; + if ( T[i].value != NULL ) + free ( T[i].value ); + T[i].value = NULL; + } + TagCount = 0; +} + + +int +gettag ( const char* key, char* dst, size_t len ) +{ + size_t valuelen; + size_t keylen = strlen (key); + int i; + + for ( i = 0; i < (int)TagCount; i++ ) + if ( keylen == T[i].keylen && 0 == memcmp (T[i].key, key, keylen) ) { + valuelen = len-1 > T[i].valuelen ? T[i].valuelen : len-1 ; + memcpy ( dst, T[i].value, valuelen ); + dst [valuelen] = '\0'; + return 0; + } + + memset ( dst, 0, len ); + return -1; +} + + +static unsigned char* +utf8char ( unsigned char* dst, unsigned long value ) +{ + if ( value == '\r' || value == 0xFFFE || value == 0xFFFF ) { + ; + } + else if ( value < 0x80 ) { + *dst++ = value; + } + else if ( value < 0x800 ) { + *dst++ = 0xC0 + ((value >> 6) & 0x1F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x10000 ) { + *dst++ = 0xE0 + ((value >> 12) & 0x0F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x200000 ) { + *dst++ = 0xF0 + ((value >> 18) & 0x07); + *dst++ = 0x80 + ((value >> 12) & 0x3F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x4000000 ) { + *dst++ = 0xF8 + ((value >> 24) & 0x03); + *dst++ = 0x80 + ((value >> 18) & 0x3F); + *dst++ = 0x80 + ((value >> 12) & 0x3F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + else if ( value < 0x80000000 ) { + *dst++ = 0xFC + ((value >> 30) & 0x01); + *dst++ = 0x80 + ((value >> 24) & 0x3F); + *dst++ = 0x80 + ((value >> 18) & 0x3F); + *dst++ = 0x80 + ((value >> 12) & 0x3F); + *dst++ = 0x80 + ((value >> 6) & 0x3F); + *dst++ = 0x80 + ((value >> 0) & 0x3F); + } + + return dst; +} + + +/* + * IsUnicode() + * + * Gets a memory block and tries to find out whether this is binary data or a valid Windows Unicode file. + * When return 1, it is very likely (but not 100% secure) that the content is Unicode encoded. + */ + +static int +IsUnicode ( const char* src, size_t len ) +{ + if ( len <= 2 ) + return 0; + + if ( len & 1 ) // odd number of bytes? + return 0; + + if ( src [0] != (char)0xFF || src [1] != (char)0xFE ) // Microsoft Unicode preample (also useful to detect endianess, but currently only little endian is supported) + return 0; + + for ( len >>= 1; len > 0; len--, src += 2 ) { // Check for invalid codes (FFFE, FFFF, DC00...DFFF without a prepend D800...DBFF, D800...DBFF without a n appended DC00...DFFF) + if ( ( src [1] & 0xFC ) == 0xDC ) + return 0; + if ( src [1] == (char)0xFF && ( src [0] & 0xFE ) == 0xFE ) + return 0; + if ( ( src [1] & 0xFC ) == 0xD8 ) { + if ( len < 2 || ( src [3] & 0xFC ) != 0xDC ) + return 0; + } + else { + len--; + src += 2; + } + } + + return 1; // good chance to be a UTF-8 +} + +/* + * addtag() + * + * Add a item to the item list of a tag. Item key is given by (key,keylen), item value by (value,valuelen). + * + * The following value translation modes are possible: + * 0: no translation at all + * 1: translate from console charset to UTF-8 (currently ISO-8859-1 for non-Windows and non-DOS OS) + * 2: auto detect: contents is a valid Window Unicode File => translate to UTF-8, else no translation at all + * 3: like 1), but convert ';' to null character + * 4: UTF-16 LE => translate to UTF-8 + * 5: translate from ISO-8859-1 to UTF-8 + * 6: like 1), but convert from OEM codepage (Win32) + * (should become an enum) + * + * Note: + * Windows 95/98/ME has no usable NLS support + * + */ + +int +addtag ( const char* key, // the item key + size_t keylen, // length of item key, or 0 for auto-determine + const char* value, // the item value + size_t valuelen, // the length of the item value (before any possible translation) + int converttoutf8, // convert flags of item value + int flags ) // item flags proposal +{ + unsigned char* p; + unsigned char* q; + char ch; + size_t i; +#ifdef _WIN32 + const unsigned short* CP_ptr; + unsigned int Codepage; + + if ( converttoutf8 == 6 ) { + Codepage = GetOEMCP (); + converttoutf8 = 1; + } + else { + Codepage = GetACP (); + } + + switch ( Codepage ) { + case CP_ACP: CP_ptr = CP_1252; break; + case CP_OEMCP: CP_ptr = CP_850; break; + case CP_MACCP: CP_ptr = CP_10000; break; + case CP_THREAD_ACP: CP_ptr = CP_1252; break; + default: CP_ptr = CP_850; break; + case 37: CP_ptr = CP_37; break; + case 42: CP_ptr = CP_42; break; + case 437: CP_ptr = CP_437; break; + case 500: CP_ptr = CP_500; break; + case 850: CP_ptr = CP_850; break; + case 860: CP_ptr = CP_860; break; + case 861: CP_ptr = CP_861; break; + case 863: CP_ptr = CP_863; break; + case 865: CP_ptr = CP_865; break; + case 874: CP_ptr = CP_874; break; + case 1250: CP_ptr = CP_1250; break; + case 1251: CP_ptr = CP_1251; break; + case 1252: CP_ptr = CP_1252; break; + case 1253: CP_ptr = CP_1253; break; + case 1254: CP_ptr = CP_1254; break; + case 1255: CP_ptr = CP_1255; break; + case 1256: CP_ptr = CP_1256; break; + case 1257: CP_ptr = CP_1257; break; + case 1258: CP_ptr = CP_1258; break; + case 10000: CP_ptr = CP_10000; break; + case 10079: CP_ptr = CP_10079; break; + } +#endif + + + if ( converttoutf8 == 2 && IsUnicode ( value, valuelen ) ) { + converttoutf8 = 4; + value += 2; // remove first two bytes (zero width space 0xFEFF) + valuelen = ( valuelen - 2) >> 1; + flags &= ~2; // reset binary flag (it's now text) + } + + if ( keylen == 0 ) + keylen = strlen ( key ); + + p = malloc ( keylen ); + memcpy ( p, key, keylen ); + T [TagCount] . key = (char*) p; + T [TagCount] . keylen = keylen; + + switch ( converttoutf8 ) { + default: + p = malloc ( 1 * valuelen ); // copy + break; + case 1: // at most 1 native character => 3 UTF bytes + case 4: // at 1 wide => 3, 2 wide => 4 + p = malloc ( 3 * valuelen ); + break; + } + + q = p; + + for ( i = 0; i < valuelen; i++ ) { + ch = value [i]; + switch ( converttoutf8 ) { + default: // 0: no translation at all --or-- 2: auto detect: contents is a valid Window Unicode File => translate to UTF-8, else no translation at all + *q++ = ch; + break; + + case 5: // 5: translate from ISO-8859-1 to UTF-8 + q = utf8char ( q, ch ); + break; + + case 3: // 3: like 1), but convert ';' to null character + if ( ch == ';' ) + ch = '\0'; + /* fall through */ + + case 1: // 1: translate from console charset to UTF-8 (currently ISO-8859-1 for non-Windows and non-DOS OS) +#if defined __TURBOC__ + q = utf8char ( q, CP_850 [ch] ); +#elif defined _WIN32 + // fprintf ( stderr, "%c %02X U+%04X\n", ch, ch, CP_ptr [ch] ); + q = utf8char ( q, CP_ptr [ch] ); +#elif defined USE_WIDECHAR + { + int ret; + wchar_t wch = 0; + ret = mbtowc ( &wch, value + i, valuelen - i ); + if ( ret > 0 ) + q = utf8char ( q, wch ), i += ret - 1; + } +#else + q = utf8char ( q, ch ); +#endif + break; + + case 4: // 4: UTF-16 LE => translate to UTF-8 + if ( (value [i+i+1] & 0xFC ) == 0xD8 && (value [i+i+3] & 0xFC ) == 0xDC ) { // UTF-16 code (2x16 bit for Unicodes 0x010000...0x10FFFF) + q = utf8char ( q, ((value [i+i] + (value [i+i+1] << 8) - 0xD800) << 10) + (value [i+i+2] + (value [i+i+3] << 8) - 0xDC00) + 0x10000 ); + i++; + } + else { + q = utf8char ( q, value [i+i] + (value [i+i+1] << 8) ); + } + break; + } + } + + p = realloc ( p, valuelen = q-p ); + + for ( i = 0; i < TagCount; i++ ) + if ( T [i].keylen == T [TagCount].keylen && 0 == strncasecmp (T [i].key, T [TagCount].key, T [i].keylen ) ) { // found old tag with the same name => replace + free ( T [TagCount].key ); + free ( T [i].value ); + goto set; + } + + i = TagCount++; +set: + T [i] . value = p; + T [i] . valuelen = valuelen; + T [i] . flags = flags; + return 0; +} + + +static int mpc_cdecl +cmpfn2 ( const void* p1, const void* p2 ) +{ + const TagItem_t* q1 = (TagItem_t*) p1; + const TagItem_t* q2 = (TagItem_t*) p2; + + return q1 -> valuelen - q2 -> valuelen; +} + +#define TAG_NO_HEADER 1 +#define TAG_NO_FOOTER 2 +#define TAG_NO_PREAMBLE 4 + + +/** + * Writes collect tag items and write it to a file. + * Items are destroyed, so tags can only be written once. + * @param fp + * @param Version + * @param flags options for writing header / footer : + * 1 : do not write header + * 2 : do not write footer + * 4 : do not write "APETAGEX" + * @return + */ +int +FinalizeTags ( FILE* fp, unsigned int Version, unsigned int flags ) +{ + static unsigned char H [32] = "APETAGEX"; + unsigned char dw [8]; + unsigned long estimatedbytes = 32; // 32 byte footer + all items, these are the 32 bytes footer, the items are added later + unsigned long writtenbytes = -32; // actually writtenbytes-32, which should be equal to estimatedbytes (= footer + all items) + unsigned int i; + + if ( TagCount == 0 ) + return 0; + + if (flags & TAG_NO_PREAMBLE) { + estimatedbytes -= 8; + writtenbytes += 8; + } + if (flags & TAG_NO_FOOTER) + estimatedbytes = 0; + if (flags & TAG_NO_HEADER) + writtenbytes = 0; + + qsort ( T, TagCount, sizeof (*T), cmpfn2 ); + + for ( i = 0; i < TagCount; i++ ) + estimatedbytes += 9 + T[i] . keylen + T[i] . valuelen; + + if ( estimatedbytes >= 8192 + 103 ) + fprintf (stderr, "\nTag is %.1f Kbyte long. This is longer than the maximum recommended 8 KByte.\n\a", estimatedbytes/1024. ); + + H [ 8] = Version >> 0; + H [ 9] = Version >> 8; + H [10] = Version >> 16; + H [11] = Version >> 24; + H [12] = estimatedbytes >> 0; + H [13] = estimatedbytes >> 8; + H [14] = estimatedbytes >> 16; + H [15] = estimatedbytes >> 24; + H [16] = TagCount >> 0; + H [17] = TagCount >> 8; + H [18] = TagCount >> 16; + H [19] = TagCount >> 24; + + H [23] = 0x80 | 0x20; + if (!(flags & TAG_NO_HEADER)) { + if (flags & TAG_NO_PREAMBLE) + writtenbytes += fwrite ( H + 8, 1, 24, fp ); + else + writtenbytes += fwrite ( H, 1, 32, fp ); + } + + for ( i = 0; i < TagCount; i++ ) { + dw [0] = T [i] . valuelen >> 0; + dw [1] = T [i] . valuelen >> 8; + dw [2] = T [i] . valuelen >> 16; + dw [3] = T [i] . valuelen >> 24; + dw [4] = T [i] . flags >> 0; + dw [5] = T [i] . flags >> 8; + dw [6] = T [i] . flags >> 16; + dw [7] = T [i] . flags >> 24; + writtenbytes += fwrite ( dw , 1, 8 , fp ); + writtenbytes += fwrite ( T[i].key , 1, T[i].keylen , fp ); + writtenbytes += fwrite ( "" , 1, 1 , fp ); + if ( T[i].valuelen > 0 ) + writtenbytes += fwrite ( T[i].value, 1, T[i].valuelen, fp ); + } + + H [23] = 0x80; + if (!(flags & TAG_NO_FOOTER)) { + if (flags & TAG_NO_PREAMBLE) + writtenbytes += fwrite ( H + 8, 1, 24, fp ); + else + writtenbytes += fwrite ( H, 1, 32, fp ); + } + + if ( estimatedbytes != writtenbytes ) + fprintf (stderr, "\nError writing APE tag.\n" ); + + TagCount = 0; + return 0; +} + + +static int +TagKeyExists ( const char* key, size_t keylen ) +{ + unsigned int i; + + if ( keylen == 0 ) + keylen = strlen ( key ); + + for ( i = 0; i < TagCount; i++ ) + if ( T [i].keylen == keylen && 0 == strncasecmp (T [i].key, key, keylen ) ) + return 1; + + return 0; +} + + +/* + * Copies src to dst. Copying is stopped at `\0' char is detected or if + * len chars are copied. + * Trailing blanks are removed and the string is `\0` terminated. + */ + +static void +memcpy_crop ( const char* key, char* src, size_t len, int flags ) +{ + while ( len > 0 && ( src [len-1] == ' ' || src [len-1] == '\0' ) ) + len--; + + if ( len > 0 ) + if ( ! TagKeyExists ( key, 0 ) ) + addtag ( key, 0, src, len, 1, flags ); +} + + +static int +CopyTags_ID3 ( FILE* fp ) +{ + mpc_uint8_t tmp [128]; + + if ( -1 == fseek ( fp, -128L, SEEK_END ) ) + return -1; + + if ( 128 != fread(tmp, 1, 128, fp) ) + return -1; + + if ( 0 != memcmp ( tmp, "TAG", 3 ) ) { + return -1; + } + + if ( !tmp[3] && !tmp[33] && !tmp[63] && !tmp[93] && !tmp[97] ) + return -1; + + memcpy_crop ( "Title" , (char*)tmp + 3, 30, 0 ); + memcpy_crop ( "Artist" , (char*)tmp + 33, 30, 0 ); + memcpy_crop ( "Album" , (char*)tmp + 63, 30, 0 ); + memcpy_crop ( "Year" , (char*)tmp + 93, 4, 0 ); + memcpy_crop ( "Comment", (char*)tmp + 97, 30, 0 ); + + if ( tmp[127] < sizeof(GenreList)/sizeof(*GenreList) ) + if ( ! TagKeyExists ( "Genre", 0 ) ) + addtag ("Genre", 0, GenreList [tmp[127]], strlen (GenreList [tmp[127]]), 0, 0 ); + + if ( tmp[125] == 0 && tmp[126] != 0 ) + if ( ! TagKeyExists ( "Track", 0 ) ) { + sprintf ( (char*)tmp, "%u", tmp[126] ); + addtag ("Track", 0, (char*)tmp, strlen ((char*)tmp), 0, 0 ); + } + + return 0; +} + + +static unsigned int +Read_LE_Uint32 ( const unsigned char* p ) +{ + return ((mpc_uint32_t)p[0] << 0) | + ((mpc_uint32_t)p[1] << 8) | + ((mpc_uint32_t)p[2] << 16) | + ((mpc_uint32_t)p[3] << 24); +} + + +static int +CopyTags_APE ( FILE* fp ) +{ + mpc_uint32_t len; + mpc_uint32_t flags; + mpc_uint32_t version; + unsigned char buff [32768]; + unsigned char key [257]; + unsigned char* p; + struct APETagFooterStruct T; + mpc_uint32_t TagLen; + mpc_uint32_t TagCount; + + if ( -1 == fseek ( fp, -(long)sizeof T, SEEK_END ) ) + return -1; + if ( sizeof(T) != fread (&T, 1, sizeof T, fp) ) + return -1; + if ( memcmp ( T.ID, "APETAGEX", sizeof(T.ID) ) != 0 ) + return -1; + version = Read_LE_Uint32 (T.Version); + if ( version != 1000 && version != 2000 ) + return -1; + TagLen = Read_LE_Uint32 (T.Length); + if ( TagLen <= sizeof T ) + return -1; + if ( -1 == fseek ( fp, -(long)TagLen, SEEK_END ) ) + return -1; + memset ( buff, 0, sizeof(buff) ); + if ( TagLen - sizeof T != fread (buff, 1, TagLen - sizeof T, fp) ) + return -1; + + TagCount = Read_LE_Uint32 (T.TagCount); + for ( p = buff; TagCount--; ) { + len = Read_LE_Uint32 ( p ); p += 4; + flags = Read_LE_Uint32 ( p ); p += 4; + strcpy ( (char*)key, (char*)p ); p += strlen ((char*)key) + 1; + if ( ! TagKeyExists ( (char*)key, 0 ) ) + addtag ( (char*)key, 0, (char*)p, len > 0 && p [len-1] == '\0' ? len-1 : len, version >= 2000 ? 0 : 5, flags ); + p += len; + } + + return 0; +} + +/********************************************************************************************/ + +/* + +" " ' ' +" - " '-' +"." '.' +"/" '/' +" -- " '_' +"[#0]" '0' +"[#n]" [number] 'n' +"#n" number 'M' +"(#N)" (CD x) 'N' it should also be possible: (CD x/x), (DVD x), (DVD x/x) +"#A" Artist 'A' +"#C" CD/Album 'C' +"#T" Title 'T' +"#x" extention 'x' + + +/#C -- [#n] #A -- #T#x | Acid Jazz/100% Acid Jazz -- [04] Leena Conquest (and Hip Hop Fingers) -- Boundaries (Radio Edit).pac +/#C -- [#n] #A -- #C -- #T#x| Meditation/Jade Collection (1998) -- [10] Rhian -- Red Sun, Blue River -- The Miracle Song.mpc +/#A/#C -- [#n] #T#x | Andreas Vollenweider/Eolian Minstrel -- [02] Across the Iron River.pac +/#A/#C#N -- [#n] #T#x | Barbra Streisand/The Concert (CD 1) -- [01] Overture +/#A -- #C -- [#n] #T#x | Friedemann/Friedemann -- Aquamarin -- [09] In the Court of the Mermaid.pac +/#C/[#n] #A -- #T#x | Jazz Lyrik Prosa/[11] Eberhard Esche -- Anektode.pac +/#A -- #T#x | Lais/Lais -- 06.pac +/#C/(#N) -- [#n] #A -- #T#x | Tanz- und Folkfest 2001 -- Klingende Post/(CD 2) -- [09] Andy Irvine -- Gladiators.pac +/#A -- #C -- [#0]#x | Friedemann/Friedemann -- Aquamarin -- [00].pac +/#A/#C (#N) -- [#0]#x | Tangerine Dream/The Warsaw Concert (CD 2) -- [00].pac +/#A/#T#x | Heinz-Rudolf Kunze/Dein ist mein ganzes Herz.pac +/#A/#C -- [#0]#x | Sting/Nada como el Sol -- [00].mpc + +*/ + +static const char* const parser_strings [] = { + "/A_Tx", + "/A/Tx", + "/A_C_0x", + "/C_n A_Tx", + "/C_n A_C_Tx", // new + "/A/C_n Tx", + "/A/C N_n Tx", + "/A_C_n Tx", + "/C/n A_Tx", + "/C/N_n A_Tx", + "/A/C N_0x", + "/A/C_0x", +}; + +/* + * dst[0] = Artist + * dst[1] = CD + * dst[2] = Title + * dst[3] = +CD + * dst[4] = number + * dst[5] = ext + */ + +#ifndef isdigit +# define isdigit(x) ((unsigned int)((x) - '0') < 10) +#endif + +int +CopyTags ( const char* filename ) +{ + FILE* fp; + + if ( 0 == strncmp (filename, "/dev/", 5 ) ) + return 0; + + fp = fopen ( filename, "rb" ); + if ( fp == NULL ) + return -1; + + CopyTags_APE (fp); // APE tags have higher priority than ID3V1 tags + CopyTags_ID3 (fp); + + fclose (fp); + return 0; +} + +/* end of tags.c */ diff --git a/libmednahawk/src/nes/Makefile.am b/libmednahawk/src/nes/Makefile.am new file mode 100644 index 0000000000..bf5de70d70 --- /dev/null +++ b/libmednahawk/src/nes/Makefile.am @@ -0,0 +1,17 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl + +noinst_LIBRARIES = libnes.a +mednafen_SOURCES = nes.cpp x6502.cpp cart.cpp fds.cpp ines.cpp input.cpp nsf.cpp nsfe.cpp unif.cpp vsuni.cpp sound.cpp filter.cpp fds-sound.cpp + +if WANT_DEBUGGER +mednafen_SOURCES += debug.cpp +endif + +include ppu/Makefile.am.inc +include boards/Makefile.am.inc +include input/Makefile.am.inc +#include mappers/Makefile.am.inc + +libnes_a_SOURCES = $(mednafen_SOURCES) ntsc/nes_ntsc.cpp diff --git a/libmednahawk/src/nes/Makefile.in b/libmednahawk/src/nes/Makefile.in new file mode 100644 index 0000000000..d308d91f3c --- /dev/null +++ b/libmednahawk/src/nes/Makefile.in @@ -0,0 +1,1214 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WANT_DEBUGGER_TRUE@am__append_1 = debug.cpp +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/boards/Makefile.am.inc \ + $(srcdir)/input/Makefile.am.inc $(srcdir)/ppu/Makefile.am.inc +subdir = src/nes +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libnes_a_AR = $(AR) $(ARFLAGS) +libnes_a_LIBADD = +am__libnes_a_SOURCES_DIST = nes.cpp x6502.cpp cart.cpp fds.cpp \ + ines.cpp input.cpp nsf.cpp nsfe.cpp unif.cpp vsuni.cpp \ + sound.cpp filter.cpp fds-sound.cpp debug.cpp ppu/ppu.cpp \ + ppu/palette.cpp boards/8237.cpp boards/h2288.cpp \ + boards/simple.cpp boards/super24.cpp boards/mmc2and4.cpp \ + boards/vrc6.cpp boards/emu2413.cpp boards/vrc7.cpp \ + boards/96.cpp boards/208.cpp boards/187.cpp boards/95.cpp \ + boards/fme7.cpp boards/mmc5.cpp boards/mmc3.cpp \ + boards/mmc1.cpp boards/tengen.cpp boards/90.cpp \ + boards/deirom.cpp boards/n106.cpp boards/maxicart.cpp \ + boards/112.cpp boards/113.cpp boards/114.cpp boards/117.cpp \ + boards/22.cpp boards/23.cpp boards/25.cpp boards/67.cpp \ + boards/68.cpp boards/16.cpp boards/97.cpp boards/99.cpp \ + boards/151.cpp boards/180.cpp boards/182.cpp boards/184.cpp \ + boards/88.cpp boards/89.cpp boards/92.cpp boards/86.cpp \ + boards/82.cpp boards/80.cpp boards/18.cpp boards/21.cpp \ + boards/228.cpp boards/234.cpp boards/232.cpp boards/42.cpp \ + boards/ffe.cpp boards/65.cpp boards/nina06.cpp boards/73.cpp \ + boards/32.cpp boards/33.cpp boards/41.cpp boards/46.cpp \ + boards/72.cpp boards/75.cpp boards/76.cpp boards/77.cpp \ + boards/colordreams.cpp boards/140.cpp boards/93.cpp \ + boards/94.cpp boards/malee.cpp boards/156.cpp \ + boards/supervision.cpp boards/novel.cpp boards/242.cpp \ + boards/246.cpp boards/248.cpp boards/15.cpp boards/8.cpp \ + boards/193.cpp boards/189.cpp boards/244.cpp boards/sachen.cpp \ + boards/107.cpp boards/51.cpp boards/152.cpp boards/70.cpp \ + boards/185.cpp boards/78.cpp boards/87.cpp boards/34.cpp \ + boards/222.cpp boards/codemasters.cpp boards/38.cpp \ + boards/240.cpp boards/241.cpp boards/163.cpp input/cursor.cpp \ + input/zapper.cpp input/powerpad.cpp input/arkanoid.cpp \ + input/shadow.cpp input/fkb.cpp input/fkb.h input/hypershot.cpp \ + input/mahjong.cpp input/oekakids.cpp input/ftrainer.cpp \ + input/partytap.cpp input/toprider.cpp input/bworld.cpp \ + input/suborkb.cpp ntsc/nes_ntsc.cpp +@WANT_DEBUGGER_TRUE@am__objects_1 = debug.$(OBJEXT) +am__dirstamp = $(am__leading_dot)dirstamp +am__objects_2 = nes.$(OBJEXT) x6502.$(OBJEXT) cart.$(OBJEXT) \ + fds.$(OBJEXT) ines.$(OBJEXT) input.$(OBJEXT) nsf.$(OBJEXT) \ + nsfe.$(OBJEXT) unif.$(OBJEXT) vsuni.$(OBJEXT) sound.$(OBJEXT) \ + filter.$(OBJEXT) fds-sound.$(OBJEXT) $(am__objects_1) \ + ppu/ppu.$(OBJEXT) ppu/palette.$(OBJEXT) boards/8237.$(OBJEXT) \ + boards/h2288.$(OBJEXT) boards/simple.$(OBJEXT) \ + boards/super24.$(OBJEXT) boards/mmc2and4.$(OBJEXT) \ + boards/vrc6.$(OBJEXT) boards/emu2413.$(OBJEXT) \ + boards/vrc7.$(OBJEXT) boards/96.$(OBJEXT) boards/208.$(OBJEXT) \ + boards/187.$(OBJEXT) boards/95.$(OBJEXT) boards/fme7.$(OBJEXT) \ + boards/mmc5.$(OBJEXT) boards/mmc3.$(OBJEXT) \ + boards/mmc1.$(OBJEXT) boards/tengen.$(OBJEXT) \ + boards/90.$(OBJEXT) boards/deirom.$(OBJEXT) \ + boards/n106.$(OBJEXT) boards/maxicart.$(OBJEXT) \ + boards/112.$(OBJEXT) boards/113.$(OBJEXT) boards/114.$(OBJEXT) \ + boards/117.$(OBJEXT) boards/22.$(OBJEXT) boards/23.$(OBJEXT) \ + boards/25.$(OBJEXT) boards/67.$(OBJEXT) boards/68.$(OBJEXT) \ + boards/16.$(OBJEXT) boards/97.$(OBJEXT) boards/99.$(OBJEXT) \ + boards/151.$(OBJEXT) boards/180.$(OBJEXT) boards/182.$(OBJEXT) \ + boards/184.$(OBJEXT) boards/88.$(OBJEXT) boards/89.$(OBJEXT) \ + boards/92.$(OBJEXT) boards/86.$(OBJEXT) boards/82.$(OBJEXT) \ + boards/80.$(OBJEXT) boards/18.$(OBJEXT) boards/21.$(OBJEXT) \ + boards/228.$(OBJEXT) boards/234.$(OBJEXT) boards/232.$(OBJEXT) \ + boards/42.$(OBJEXT) boards/ffe.$(OBJEXT) boards/65.$(OBJEXT) \ + boards/nina06.$(OBJEXT) boards/73.$(OBJEXT) \ + boards/32.$(OBJEXT) boards/33.$(OBJEXT) boards/41.$(OBJEXT) \ + boards/46.$(OBJEXT) boards/72.$(OBJEXT) boards/75.$(OBJEXT) \ + boards/76.$(OBJEXT) boards/77.$(OBJEXT) \ + boards/colordreams.$(OBJEXT) boards/140.$(OBJEXT) \ + boards/93.$(OBJEXT) boards/94.$(OBJEXT) boards/malee.$(OBJEXT) \ + boards/156.$(OBJEXT) boards/supervision.$(OBJEXT) \ + boards/novel.$(OBJEXT) boards/242.$(OBJEXT) \ + boards/246.$(OBJEXT) boards/248.$(OBJEXT) boards/15.$(OBJEXT) \ + boards/8.$(OBJEXT) boards/193.$(OBJEXT) boards/189.$(OBJEXT) \ + boards/244.$(OBJEXT) boards/sachen.$(OBJEXT) \ + boards/107.$(OBJEXT) boards/51.$(OBJEXT) boards/152.$(OBJEXT) \ + boards/70.$(OBJEXT) boards/185.$(OBJEXT) boards/78.$(OBJEXT) \ + boards/87.$(OBJEXT) boards/34.$(OBJEXT) boards/222.$(OBJEXT) \ + boards/codemasters.$(OBJEXT) boards/38.$(OBJEXT) \ + boards/240.$(OBJEXT) boards/241.$(OBJEXT) boards/163.$(OBJEXT) \ + input/cursor.$(OBJEXT) input/zapper.$(OBJEXT) \ + input/powerpad.$(OBJEXT) input/arkanoid.$(OBJEXT) \ + input/shadow.$(OBJEXT) input/fkb.$(OBJEXT) \ + input/hypershot.$(OBJEXT) input/mahjong.$(OBJEXT) \ + input/oekakids.$(OBJEXT) input/ftrainer.$(OBJEXT) \ + input/partytap.$(OBJEXT) input/toprider.$(OBJEXT) \ + input/bworld.$(OBJEXT) input/suborkb.$(OBJEXT) +am_libnes_a_OBJECTS = $(am__objects_2) ntsc/nes_ntsc.$(OBJEXT) +libnes_a_OBJECTS = $(am_libnes_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libnes_a_SOURCES) +DIST_SOURCES = $(am__libnes_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl +noinst_LIBRARIES = libnes.a +mednafen_SOURCES = nes.cpp x6502.cpp cart.cpp fds.cpp ines.cpp \ + input.cpp nsf.cpp nsfe.cpp unif.cpp vsuni.cpp sound.cpp \ + filter.cpp fds-sound.cpp $(am__append_1) ppu/ppu.cpp \ + ppu/palette.cpp boards/8237.cpp boards/h2288.cpp \ + boards/simple.cpp boards/super24.cpp boards/mmc2and4.cpp \ + boards/vrc6.cpp boards/emu2413.cpp boards/vrc7.cpp \ + boards/96.cpp boards/208.cpp boards/187.cpp boards/95.cpp \ + boards/fme7.cpp boards/mmc5.cpp boards/mmc3.cpp \ + boards/mmc1.cpp boards/tengen.cpp boards/90.cpp \ + boards/deirom.cpp boards/n106.cpp boards/maxicart.cpp \ + boards/112.cpp boards/113.cpp boards/114.cpp boards/117.cpp \ + boards/22.cpp boards/23.cpp boards/25.cpp boards/67.cpp \ + boards/68.cpp boards/16.cpp boards/97.cpp boards/99.cpp \ + boards/151.cpp boards/180.cpp boards/182.cpp boards/184.cpp \ + boards/88.cpp boards/89.cpp boards/92.cpp boards/86.cpp \ + boards/82.cpp boards/80.cpp boards/18.cpp boards/21.cpp \ + boards/228.cpp boards/234.cpp boards/232.cpp boards/42.cpp \ + boards/ffe.cpp boards/65.cpp boards/nina06.cpp boards/73.cpp \ + boards/32.cpp boards/33.cpp boards/41.cpp boards/46.cpp \ + boards/72.cpp boards/75.cpp boards/76.cpp boards/77.cpp \ + boards/colordreams.cpp boards/140.cpp boards/93.cpp \ + boards/94.cpp boards/malee.cpp boards/156.cpp \ + boards/supervision.cpp boards/novel.cpp boards/242.cpp \ + boards/246.cpp boards/248.cpp boards/15.cpp boards/8.cpp \ + boards/193.cpp boards/189.cpp boards/244.cpp boards/sachen.cpp \ + boards/107.cpp boards/51.cpp boards/152.cpp boards/70.cpp \ + boards/185.cpp boards/78.cpp boards/87.cpp boards/34.cpp \ + boards/222.cpp boards/codemasters.cpp boards/38.cpp \ + boards/240.cpp boards/241.cpp boards/163.cpp input/cursor.cpp \ + input/zapper.cpp input/powerpad.cpp input/arkanoid.cpp \ + input/shadow.cpp input/fkb.cpp input/fkb.h input/hypershot.cpp \ + input/mahjong.cpp input/oekakids.cpp input/ftrainer.cpp \ + input/partytap.cpp input/toprider.cpp input/bworld.cpp \ + input/suborkb.cpp + +#include mappers/Makefile.am.inc +libnes_a_SOURCES = $(mednafen_SOURCES) ntsc/nes_ntsc.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/ppu/Makefile.am.inc $(srcdir)/boards/Makefile.am.inc $(srcdir)/input/Makefile.am.inc $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/nes/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/nes/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +ppu/$(am__dirstamp): + @$(MKDIR_P) ppu + @: > ppu/$(am__dirstamp) +ppu/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ppu/$(DEPDIR) + @: > ppu/$(DEPDIR)/$(am__dirstamp) +ppu/ppu.$(OBJEXT): ppu/$(am__dirstamp) ppu/$(DEPDIR)/$(am__dirstamp) +ppu/palette.$(OBJEXT): ppu/$(am__dirstamp) \ + ppu/$(DEPDIR)/$(am__dirstamp) +boards/$(am__dirstamp): + @$(MKDIR_P) boards + @: > boards/$(am__dirstamp) +boards/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) boards/$(DEPDIR) + @: > boards/$(DEPDIR)/$(am__dirstamp) +boards/8237.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/h2288.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/simple.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/super24.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/mmc2and4.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/vrc6.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/emu2413.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/vrc7.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/96.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/208.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/187.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/95.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/fme7.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/mmc5.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/mmc3.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/mmc1.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/tengen.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/90.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/deirom.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/n106.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/maxicart.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/112.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/113.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/114.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/117.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/22.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/23.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/25.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/67.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/68.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/16.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/97.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/99.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/151.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/180.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/182.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/184.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/88.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/89.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/92.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/86.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/82.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/80.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/18.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/21.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/228.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/234.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/232.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/42.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/ffe.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/65.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/nina06.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/73.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/32.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/33.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/41.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/46.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/72.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/75.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/76.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/77.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/colordreams.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/140.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/93.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/94.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/malee.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/156.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/supervision.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/novel.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/242.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/246.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/248.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/15.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/8.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/193.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/189.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/244.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/sachen.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/107.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/51.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/152.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/70.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/185.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/78.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/87.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/34.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/222.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/codemasters.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/38.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/240.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/241.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +boards/163.$(OBJEXT): boards/$(am__dirstamp) \ + boards/$(DEPDIR)/$(am__dirstamp) +input/$(am__dirstamp): + @$(MKDIR_P) input + @: > input/$(am__dirstamp) +input/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) input/$(DEPDIR) + @: > input/$(DEPDIR)/$(am__dirstamp) +input/cursor.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/zapper.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/powerpad.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/arkanoid.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/shadow.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/fkb.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/hypershot.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/mahjong.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/oekakids.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/ftrainer.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/partytap.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/toprider.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/bworld.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/suborkb.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +ntsc/$(am__dirstamp): + @$(MKDIR_P) ntsc + @: > ntsc/$(am__dirstamp) +ntsc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ntsc/$(DEPDIR) + @: > ntsc/$(DEPDIR)/$(am__dirstamp) +ntsc/nes_ntsc.$(OBJEXT): ntsc/$(am__dirstamp) \ + ntsc/$(DEPDIR)/$(am__dirstamp) +libnes.a: $(libnes_a_OBJECTS) $(libnes_a_DEPENDENCIES) + $(AM_V_at)-rm -f libnes.a + $(AM_V_AR)$(libnes_a_AR) libnes.a $(libnes_a_OBJECTS) $(libnes_a_LIBADD) + $(AM_V_at)$(RANLIB) libnes.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f boards/107.$(OBJEXT) + -rm -f boards/112.$(OBJEXT) + -rm -f boards/113.$(OBJEXT) + -rm -f boards/114.$(OBJEXT) + -rm -f boards/117.$(OBJEXT) + -rm -f boards/140.$(OBJEXT) + -rm -f boards/15.$(OBJEXT) + -rm -f boards/151.$(OBJEXT) + -rm -f boards/152.$(OBJEXT) + -rm -f boards/156.$(OBJEXT) + -rm -f boards/16.$(OBJEXT) + -rm -f boards/163.$(OBJEXT) + -rm -f boards/18.$(OBJEXT) + -rm -f boards/180.$(OBJEXT) + -rm -f boards/182.$(OBJEXT) + -rm -f boards/184.$(OBJEXT) + -rm -f boards/185.$(OBJEXT) + -rm -f boards/187.$(OBJEXT) + -rm -f boards/189.$(OBJEXT) + -rm -f boards/193.$(OBJEXT) + -rm -f boards/208.$(OBJEXT) + -rm -f boards/21.$(OBJEXT) + -rm -f boards/22.$(OBJEXT) + -rm -f boards/222.$(OBJEXT) + -rm -f boards/228.$(OBJEXT) + -rm -f boards/23.$(OBJEXT) + -rm -f boards/232.$(OBJEXT) + -rm -f boards/234.$(OBJEXT) + -rm -f boards/240.$(OBJEXT) + -rm -f boards/241.$(OBJEXT) + -rm -f boards/242.$(OBJEXT) + -rm -f boards/244.$(OBJEXT) + -rm -f boards/246.$(OBJEXT) + -rm -f boards/248.$(OBJEXT) + -rm -f boards/25.$(OBJEXT) + -rm -f boards/32.$(OBJEXT) + -rm -f boards/33.$(OBJEXT) + -rm -f boards/34.$(OBJEXT) + -rm -f boards/38.$(OBJEXT) + -rm -f boards/41.$(OBJEXT) + -rm -f boards/42.$(OBJEXT) + -rm -f boards/46.$(OBJEXT) + -rm -f boards/51.$(OBJEXT) + -rm -f boards/65.$(OBJEXT) + -rm -f boards/67.$(OBJEXT) + -rm -f boards/68.$(OBJEXT) + -rm -f boards/70.$(OBJEXT) + -rm -f boards/72.$(OBJEXT) + -rm -f boards/73.$(OBJEXT) + -rm -f boards/75.$(OBJEXT) + -rm -f boards/76.$(OBJEXT) + -rm -f boards/77.$(OBJEXT) + -rm -f boards/78.$(OBJEXT) + -rm -f boards/8.$(OBJEXT) + -rm -f boards/80.$(OBJEXT) + -rm -f boards/82.$(OBJEXT) + -rm -f boards/8237.$(OBJEXT) + -rm -f boards/86.$(OBJEXT) + -rm -f boards/87.$(OBJEXT) + -rm -f boards/88.$(OBJEXT) + -rm -f boards/89.$(OBJEXT) + -rm -f boards/90.$(OBJEXT) + -rm -f boards/92.$(OBJEXT) + -rm -f boards/93.$(OBJEXT) + -rm -f boards/94.$(OBJEXT) + -rm -f boards/95.$(OBJEXT) + -rm -f boards/96.$(OBJEXT) + -rm -f boards/97.$(OBJEXT) + -rm -f boards/99.$(OBJEXT) + -rm -f boards/codemasters.$(OBJEXT) + -rm -f boards/colordreams.$(OBJEXT) + -rm -f boards/deirom.$(OBJEXT) + -rm -f boards/emu2413.$(OBJEXT) + -rm -f boards/ffe.$(OBJEXT) + -rm -f boards/fme7.$(OBJEXT) + -rm -f boards/h2288.$(OBJEXT) + -rm -f boards/malee.$(OBJEXT) + -rm -f boards/maxicart.$(OBJEXT) + -rm -f boards/mmc1.$(OBJEXT) + -rm -f boards/mmc2and4.$(OBJEXT) + -rm -f boards/mmc3.$(OBJEXT) + -rm -f boards/mmc5.$(OBJEXT) + -rm -f boards/n106.$(OBJEXT) + -rm -f boards/nina06.$(OBJEXT) + -rm -f boards/novel.$(OBJEXT) + -rm -f boards/sachen.$(OBJEXT) + -rm -f boards/simple.$(OBJEXT) + -rm -f boards/super24.$(OBJEXT) + -rm -f boards/supervision.$(OBJEXT) + -rm -f boards/tengen.$(OBJEXT) + -rm -f boards/vrc6.$(OBJEXT) + -rm -f boards/vrc7.$(OBJEXT) + -rm -f input/arkanoid.$(OBJEXT) + -rm -f input/bworld.$(OBJEXT) + -rm -f input/cursor.$(OBJEXT) + -rm -f input/fkb.$(OBJEXT) + -rm -f input/ftrainer.$(OBJEXT) + -rm -f input/hypershot.$(OBJEXT) + -rm -f input/mahjong.$(OBJEXT) + -rm -f input/oekakids.$(OBJEXT) + -rm -f input/partytap.$(OBJEXT) + -rm -f input/powerpad.$(OBJEXT) + -rm -f input/shadow.$(OBJEXT) + -rm -f input/suborkb.$(OBJEXT) + -rm -f input/toprider.$(OBJEXT) + -rm -f input/zapper.$(OBJEXT) + -rm -f ntsc/nes_ntsc.$(OBJEXT) + -rm -f ppu/palette.$(OBJEXT) + -rm -f ppu/ppu.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fds-sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fds.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ines.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nsfe.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vsuni.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x6502.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/107.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/112.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/113.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/114.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/117.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/140.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/15.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/151.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/152.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/156.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/16.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/163.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/18.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/180.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/182.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/184.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/185.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/187.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/189.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/193.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/208.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/21.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/22.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/222.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/228.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/23.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/232.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/234.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/240.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/241.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/242.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/244.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/246.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/248.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/25.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/33.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/34.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/38.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/41.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/42.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/46.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/51.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/65.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/67.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/68.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/70.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/72.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/73.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/75.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/76.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/77.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/78.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/80.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/82.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/8237.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/86.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/87.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/88.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/89.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/90.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/92.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/93.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/94.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/95.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/96.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/97.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/99.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/codemasters.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/colordreams.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/deirom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/emu2413.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/ffe.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/fme7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/h2288.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/malee.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/maxicart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/mmc1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/mmc2and4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/mmc3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/mmc5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/n106.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/nina06.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/novel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/sachen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/simple.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/super24.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/supervision.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/tengen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/vrc6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/vrc7.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/arkanoid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/bworld.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/cursor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/fkb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/ftrainer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/hypershot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mahjong.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/oekakids.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/partytap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/powerpad.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/shadow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/suborkb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/toprider.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/zapper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ntsc/$(DEPDIR)/nes_ntsc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ppu/$(DEPDIR)/palette.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ppu/$(DEPDIR)/ppu.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f boards/$(DEPDIR)/$(am__dirstamp) + -rm -f boards/$(am__dirstamp) + -rm -f input/$(DEPDIR)/$(am__dirstamp) + -rm -f input/$(am__dirstamp) + -rm -f ntsc/$(DEPDIR)/$(am__dirstamp) + -rm -f ntsc/$(am__dirstamp) + -rm -f ppu/$(DEPDIR)/$(am__dirstamp) + -rm -f ppu/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) boards/$(DEPDIR) input/$(DEPDIR) ntsc/$(DEPDIR) ppu/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) boards/$(DEPDIR) input/$(DEPDIR) ntsc/$(DEPDIR) ppu/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/nes/boards/107.cpp b/libmednahawk/src/nes/boards/107.cpp new file mode 100644 index 0000000000..fb10a72280 --- /dev/null +++ b/libmednahawk/src/nes/boards/107.cpp @@ -0,0 +1,45 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg32(0x8000, latch >> 1); + setchr8(latch & 0x07); +} + +static DECLFW(m107w) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper107_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,m107w); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/112.cpp b/libmednahawk/src/nes/boards/112.cpp new file mode 100644 index 0000000000..cfc367ee31 --- /dev/null +++ b/libmednahawk/src/nes/boards/112.cpp @@ -0,0 +1,120 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static char Mirroring; +static uint8 RegSelect; +static uint8 Regs[8]; + +static uint8 *WRAM = NULL; + +static void SyncPRGCHR(void) +{ + setprg8(0x8000, Regs[0]); + setprg8(0xa000, Regs[1]); + setchr2(0x0000, Regs[2] >> 1); + setchr2(0x0800, Regs[3] >> 1); + setchr1(0x1000, Regs[4]); + setchr1(0x1400, Regs[5]); + setchr1(0x1800, Regs[6]); + setchr1(0x1C00, Regs[7]); +} + +static DECLFW(Mapper112_write) +{ + switch(A) + { + case 0xe000:Mirroring = V & 1; setmirror((V&1) ^ 1); break; + case 0x8000:RegSelect = V & 0x7; break; + case 0xa000:Regs[RegSelect & 7] = V; + SyncPRGCHR(); + break; + } +} + +static void Power(CartInfo *info) +{ + int x; + for(x = 0; x < 8; x++) + Regs[x] = ~0; + Mirroring = 1; + setmirror(Mirroring ^ 1); + SyncPRGCHR(); + setprg16(0xc000, 0x7F); + setprg8r(0x10, 0x6000, 0); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static void Close(void) +{ + if(WRAM) + { + free(WRAM); + WRAM = NULL; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(RegSelect), + SFVAR(Mirroring), + SFARRAY(Regs, 8), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "M112"); + if(load) + { + Mirroring &= 1; + SyncPRGCHR(); + setmirror(Mirroring ^ 1); + } + + return(ret); +} + +int Mapper112_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper112_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + info->Power = Power; + info->Close = Close; + info->StateAction = StateAction; + + if(!(WRAM = (uint8 *)malloc(8192))) + return(0); + + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/113.cpp b/libmednahawk/src/nes/boards/113.cpp new file mode 100644 index 0000000000..a27319ec6b --- /dev/null +++ b/libmednahawk/src/nes/boards/113.cpp @@ -0,0 +1,77 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +/* I'm getting the feeling this is another "jam two different bank + switching hardwares into one mapper". +*/ + +static uint8 latch; + +/* HES 4-in-1 */ +static DECLFW(Mapper113_write) +{ + latch = V; + + setprg32(0x8000, (V >> 3) & 0x7); + setchr8(V & 0x7); +} + + +/* Deathbots */ +static DECLFW(Mapper113_writeh) +{ + latch = ((V & 0x7) << 3); + setprg32(0x8000, V & 0x7); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setprg32(0x8000, 0); + setchr8(0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "M113"); + if(load) + { + setprg32(0x8000, (latch >> 3) & 0x7); + setchr8(latch & 0x7); + } + return(ret); +} +int Mapper113_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x4020,0x7fff,Mapper113_write); + SetWriteHandler(0x8000,0xffff,Mapper113_writeh); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/114.cpp b/libmednahawk/src/nes/boards/114.cpp new file mode 100644 index 0000000000..d5a4c06e55 --- /dev/null +++ b/libmednahawk/src/nes/boards/114.cpp @@ -0,0 +1,138 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 master, incmd, IRQCount, cmd, regs[8], Mirroring; + +static void dochr(void) +{ + setchr2(0x0000,(regs[0]>>1)); + setchr2(0x0800,(regs[2]>>1)); + setchr1(0x1000, regs[6]); + setchr1(0x1400, regs[1]); + setchr1(0x1800, regs[7]); + setchr1(0x1c00, regs[3]); +} + +static void doprg() +{ + if(master&0x80) + { + setprg16(0x8000,master&0x1F); + } + else + { + setprg8(0x8000,regs[4]); + setprg8(0xa000,regs[5]); + } +} + +static DECLFW(Mapper114_write) +{ + if(A<=0x7FFF) + { + master=V; + doprg(); + } + else if(A==0xe003) IRQCount=V; + else if(A==0xe002) X6502_IRQEnd(MDFN_IQEXT); + else switch(A&0xE000) + { + case 0x8000:Mirroring = V & 1; setmirror((V & 1) ^ 1);break; + case 0xa000:cmd=V;incmd=1;break; + case 0xc000: + if(!incmd) break; + regs[cmd & 0x7]=V; + switch(cmd & 0x7) + { + case 0x0: case 1: case 2: case 3: case 6: case 7: + dochr();break; + case 0x4: + case 0x5:doprg();break; + } + incmd=0; + break; + } + +} + +static void Mapper114_hb(void) +{ + if(IRQCount) + { + IRQCount--; + if(!IRQCount) + { + X6502_IRQBegin(MDFN_IQEXT); + //printf("IRQ: %d\n",scanline); + } + } + +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(master), SFVAR(incmd), SFVAR(IRQCount), SFVAR(Mirroring), SFVAR(cmd), + SFARRAY(regs, 8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "M114"); + if(load) + { + Mirroring &= 1; + dochr(); + doprg(); + setmirror(Mirroring ^ 1); + } + + return(ret); +} +static void Power(CartInfo *info) +{ + int x; + + IRQCount = 0; + master = incmd = cmd = ~0; + + for(x = 0; x < 8; x++) + regs[x] = ~0; + + dochr(); + doprg(); + setprg16(0xc000, ~0); + + Mirroring = 1; + setmirror(Mirroring ^ 1); +} + +int Mapper114_Init(CartInfo *info) +{ + GameHBIRQHook=Mapper114_hb; + SetWriteHandler(0x6000,0xffff,Mapper114_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + return(1); +} + diff --git a/libmednahawk/src/nes/boards/117.cpp b/libmednahawk/src/nes/boards/117.cpp new file mode 100644 index 0000000000..c6abfe36cb --- /dev/null +++ b/libmednahawk/src/nes/boards/117.cpp @@ -0,0 +1,110 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 IRQLatch, IRQCount, CHRBanks[8], PRGBanks[4], IRQa; + +static void DoPRG(void) +{ + int x; + for(x = 0; x < 4; x++) + setprg8(0x8000 + 8192 * x, PRGBanks[x]); +} + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 8; x++) + setchr1(0x0000 + 1024 * x, CHRBanks[x]); +} + +static DECLFW(Mapper117_write) +{ + A &= 0xF00F; + + if(A >= 0xa000 && A <= 0xa007) + { + CHRBanks[A & 7] = V; + DoCHR(); + } + else + { + //A &= 0xF003; + if(A >= 0x8000 && A <= 0x8003) + { + PRGBanks[A & 3] = V; + DoPRG(); + } + else + switch(A) + { + case 0xc001:IRQLatch=V;break; + case 0xc003:IRQCount=IRQLatch;IRQa|=2;break; + case 0xe000:IRQa&=~1;IRQa|=V&1;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xc002:X6502_IRQEnd(MDFN_IQEXT);break; + //default: printf("Oops: %04x $%02x\n", A, V); break; + } + } +} + +static void Mapper117_hb(void) +{ + if(IRQa==3 && IRQCount) + { + IRQCount--; + if(!IRQCount) + { + IRQa&=1; + X6502_IRQBegin(MDFN_IQEXT); + } + } +} + +static void Power(CartInfo *info) +{ + int x; + + IRQCount = IRQLatch = ~0; + IRQa = 3; + + for(x = 0; x < 8; x++) + CHRBanks[x] = ~0; + + for(x = 0; x < 4; x++) + PRGBanks[x] = ~0; + + DoCHR(); + DoPRG(); + + //IRQa = 0; + //setprg16(0x8000, 0); + //setprg16(0xc000, ~0); +} + +int Mapper117_Init(CartInfo *info) +{ + info->Power = Power; + GameHBIRQHook=Mapper117_hb; + SetWriteHandler(0x8000,0xffff,Mapper117_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/140.cpp b/libmednahawk/src/nes/boards/140.cpp new file mode 100644 index 0000000000..89aa8e110f --- /dev/null +++ b/libmednahawk/src/nes/boards/140.cpp @@ -0,0 +1,45 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setchr8(latch & 0xF); + setprg32(0x8000, (latch >> 4)); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); +} + + +static DECLFW(Write) +{ + latch = V; + Sync(); +} + +int Mapper140_Init(CartInfo *info) +{ + SetWriteHandler(0x6000, 0x7FFF, Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->StateAction = StateAction; + info->Power = Power; + return(1); +} diff --git a/libmednahawk/src/nes/boards/15.cpp b/libmednahawk/src/nes/boards/15.cpp new file mode 100644 index 0000000000..395ab50aeb --- /dev/null +++ b/libmednahawk/src/nes/boards/15.cpp @@ -0,0 +1,91 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch[2]; + +static void Sync(void) +{ + int x; + + setmirror(((latch[0]>>6)&1)^1); + switch(latch[1]&0x3) + { + case 0x0: + for(x=0;x<4;x++) + setprg8(0x8000+x*8192,(((latch[0]&0x7F)<<1)+x)^(latch[0]>>7)); + break; + case 0x2: + for(x=0;x<4;x++) + setprg8(0x8000+x*8192,((latch[0]&0x7F)<<1)+(latch[0]>>7)); + break; + case 0x1: + case 0x3: + for(x=0;x<4;x++) + { + unsigned int b; + + b=latch[0]&0x7F; + if(x>=2 && !(latch[1]&0x2)) + b=0x7F; + setprg8(0x8000+x*8192,(x&1)+((b<<1)^(latch[0]>>7))); + } + break; + } +} + + +static DECLFW(Mapper15_write) +{ + latch[0]=V; + latch[1]=A&3; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch[0] = latch[1] = 0; + Sync(); + setchr8(0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(latch, 2), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper15_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xFFFF,Mapper15_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/151.cpp b/libmednahawk/src/nes/boards/151.cpp new file mode 100644 index 0000000000..029c2e4962 --- /dev/null +++ b/libmednahawk/src/nes/boards/151.cpp @@ -0,0 +1,81 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 PRGBanks[3], CHRBanks[2]; + +static void Sync(void) +{ + for(int x = 0; x < 3; x++) + setprg8(0x8000 + x * 8192, PRGBanks[x]); + setchr4(0x0000, CHRBanks[0]); + setchr4(0x1000, CHRBanks[1]); +} + +static DECLFW(Mapper151_write) +{ + switch(A&0xF000) + { + case 0x8000:PRGBanks[0] = V; break; + case 0xA000:PRGBanks[1] = V; break; + case 0xC000:PRGBanks[2] = V; break; + case 0xe000:CHRBanks[0] = V; break; + case 0xf000:CHRBanks[1] = V; break; + } + Sync(); +} + +static void Power(CartInfo *info) +{ + int x; + for(x = 0; x < 3; x++) + PRGBanks[x] = ~0; + + for(x = 0; x < 2; x++) + CHRBanks[x] = x; + + Sync(); + setprg8(0xe000, ~0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRGBanks, 3), SFARRAY(CHRBanks, 2), SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper151_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper151_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/152.cpp b/libmednahawk/src/nes/boards/152.cpp new file mode 100644 index 0000000000..7988560133 --- /dev/null +++ b/libmednahawk/src/nes/boards/152.cpp @@ -0,0 +1,48 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg16(0x8000, (latch >> 4) & 0x07); + setchr8(latch & 0x0F); + setmirror((latch >> 7) ? MI_1 : MI_0); +} + +static DECLFW(Mapper152_write) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setprg16(0xc000, 0x07); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper152_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x6000,0xffff,Mapper152_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/156.cpp b/libmednahawk/src/nes/boards/156.cpp new file mode 100644 index 0000000000..e390dc1203 --- /dev/null +++ b/libmednahawk/src/nes/boards/156.cpp @@ -0,0 +1,69 @@ +#include "mapinc.h" + +static uint8 CHRBanks[8], PRGBank16; +static uint8 WRAM[8192]; + +static void Sync(void) +{ + setprg16(0x8000, PRGBank16); + for(int x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static DECLFW(M156Write) +{ + if(A>=0xc000 && A<=0xC003) + CHRBanks[A & 3] = V; + else if(A>=0xc008 && A<=0xc00b) + CHRBanks[4 + (A & 3)] = V; + if(A==0xc010) + PRGBank16 = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + for(int x = 0; x < 8; x++) + CHRBanks[x] = x; + PRGBank16 = 0; + Sync(); + setprg16(0xc000, 0xFF); + setprg8r(0x10, 0x6000, 0); + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), + SFVAR(PRGBank16), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper156_Init(CartInfo *info) +{ + setmirror(MI_0); + SetWriteHandler(0xc000,0xc010,M156Write); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetReadHandler(0x6000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + if(info->battery) + { + memset(WRAM, 0xFF, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/16.cpp b/libmednahawk/src/nes/boards/16.cpp new file mode 100644 index 0000000000..a5318c6ae5 --- /dev/null +++ b/libmednahawk/src/nes/boards/16.cpp @@ -0,0 +1,446 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 IRQa, CHRBanks[8], PRGBank16, Mirroring; +static uint16 IRQCount, IRQLatch; + +static void BandaiIRQHook(int a) +{ + if(IRQa) + { + uint16 last_irq = IRQCount; + IRQCount-=a; + if(IRQCount > last_irq) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + } + } +} + +static void DoCHR(void) +{ + for(int x = 0; x < 8; x++) + setchr1(x << 10, CHRBanks[x]); +} + +static void DoPRG(void) +{ + setprg16(0x8000, PRGBank16 & 0xF); +} + +static void DoMirroring(void) +{ + static const int mir_tab[4] = { MI_V, MI_H, MI_0, MI_1 }; + setmirror(mir_tab[Mirroring & 3]); +} + +static DECLFW(Mapper16_write) +{ + A&=0xF; + + if(A<=0x7) + { + CHRBanks[A & 0x7] = V; + DoCHR(); + } + else if(A==0x8) + { + PRGBank16 = V & 0xF; + DoPRG(); + } + else switch(A) + { + case 0x9: Mirroring = V & 3; + DoMirroring(); + break; + case 0xA: X6502_IRQEnd(MDFN_IQEXT); + IRQa=V&1; + IRQCount=IRQLatch; + break; + case 0xB: IRQLatch&=0xFF00; + IRQLatch|=V; + break; + case 0xC: IRQLatch&=0xFF; + IRQLatch|=V<<8; + break; + case 0xD: break;/* Serial EEPROM control port */ + } +} + +// Famicom jump 2: +// 0-7: Lower bit of data selects which 256KB PRG block is in use. +// This seems to be a hack on the developers' part, so I'll make emulation +// of it a hack(I think the current PRG block would depend on whatever the +// lowest bit of the CHR bank switching register that corresponds to the +// last CHR address read). + +static uint8 WRAM[8192]; + +static void DoPRG_153(void) +{ + uint32 base=(CHRBanks[0]&1)<<4; + setprg16(0x8000,(PRGBank16&0xF)|base); + setprg16(0xC000,base|0xF); +} + +static DECLFW(Mapper153_write) +{ + A&=0xF; + if(A<=0x7) + { + CHRBanks[A & 0x7] = V; + DoPRG_153(); + } + else if(A==0x8) + { + PRGBank16 = V; + DoPRG_153(); + } + else switch(A) { + case 0x9: Mirroring = V; + DoMirroring(); + break; + case 0xA:X6502_IRQEnd(MDFN_IQEXT); + IRQa=V&1; + IRQCount=IRQLatch; + break; + case 0xB:IRQLatch&=0xFF00; + IRQLatch|=V; + break; + case 0xC:IRQLatch&=0xFF; + IRQLatch|=V<<8; + break; + } +} + +static void Power(CartInfo *info) +{ + IRQCount = IRQLatch = IRQa = 0; + PRGBank16 = 0; + for(int x = 0; x < 8; x++) + CHRBanks[x] = x; + DoPRG(); + DoCHR(); + DoMirroring(); + + setprg16(0xc000, 0xF); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), + SFVAR(PRGBank16), + SFVAR(IRQa), SFVAR(IRQCount), SFVAR(IRQLatch), + SFVAR(Mirroring), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +int Mapper16_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + MapIRQHook = BandaiIRQHook; + SetWriteHandler(0x6000,0xFFFF,Mapper16_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} + +static int StateAction_153(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), + SFVAR(PRGBank16), + SFVAR(IRQa), SFVAR(IRQCount), SFVAR(IRQLatch), + SFVAR(Mirroring), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG_153(); + //DoCHR(); + DoMirroring(); + } + return(ret); +} + +static void Power_153(CartInfo *info) +{ + IRQCount = IRQLatch = IRQa = 0; + PRGBank16 = 0; + for(int x = 0; x < 8; x++) + CHRBanks[x] = x; + DoPRG_153(); + DoCHR(); + DoMirroring(); + + setprg16r(0x10, 0x6000, 0); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +int Mapper153_Init(CartInfo *info) +{ + MapIRQHook=BandaiIRQHook; + SetWriteHandler(0x8000,0xFFFF,Mapper153_write); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetReadHandler(0x6000, 0xFFFF, CartBR); + + info->Power = Power_153; + info->StateAction = StateAction_153; + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + /* This mapper/board seems to have WRAM at $6000-$7FFF. */ + + return(1); +} + + +static uint8 BarcodeData[256]; +static uint8 BarcodeReadPos; +static uint32 BarcodeCycleCount; +static uint8 BarcodeOut; + +int MDFNI_DatachSet(const uint8 *rcode) +{ + int prefix_parity_type[10][6] = { + {0,0,0,0,0,0}, {0,0,1,0,1,1}, {0,0,1,1,0,1}, {0,0,1,1,1,0}, + {0,1,0,0,1,1}, {0,1,1,0,0,1}, {0,1,1,1,0,0}, {0,1,0,1,0,1}, + {0,1,0,1,1,0}, {0,1,1,0,1,0} + }; + int data_left_odd[10][7] = { + {0,0,0,1,1,0,1}, {0,0,1,1,0,0,1}, {0,0,1,0,0,1,1}, {0,1,1,1,1,0,1}, + {0,1,0,0,0,1,1}, {0,1,1,0,0,0,1}, {0,1,0,1,1,1,1}, {0,1,1,1,0,1,1}, + {0,1,1,0,1,1,1}, {0,0,0,1,0,1,1} + }; + int data_left_even[10][7] = { + {0,1,0,0,1,1,1}, {0,1,1,0,0,1,1}, {0,0,1,1,0,1,1}, {0,1,0,0,0,0,1}, + {0,0,1,1,1,0,1}, {0,1,1,1,0,0,1}, {0,0,0,0,1,0,1}, {0,0,1,0,0,0,1}, + {0,0,0,1,0,0,1}, {0,0,1,0,1,1,1} + }; + int data_right[10][7] = { + {1,1,1,0,0,1,0}, {1,1,0,0,1,1,0}, {1,1,0,1,1,0,0}, {1,0,0,0,0,1,0}, + {1,0,1,1,1,0,0}, {1,0,0,1,1,1,0}, {1,0,1,0,0,0,0}, {1,0,0,0,1,0,0}, + {1,0,0,1,0,0,0}, {1,1,1,0,1,0,0} + }; + uint8 code[13+1]; + uint32 tmp_p=0; + int i, j; + int len; + + for(i=len=0;i<13;i++) + { + if(!rcode[i]) break; + + if((code[i]=rcode[i]-'0') > 9) + return(0); + len++; + } + if(len!=13 && len!=12 && len!=8 && len!=7) return(0); + + #define BS(x) BarcodeData[tmp_p]=x;tmp_p++ + + for(j=0;j<32;j++) + { + BS(0x00); + } + + /* Left guard bars */ + BS(1); BS(0); BS(1); + + if(len==13 || len==12) + { + uint32 csum; + + for(i=0;i<6;i++) + if(prefix_parity_type[code[0]][i]) + { + for(j=0;j<7;j++) + { + BS(data_left_even[code[i+1]][j]); + } + } + else + for(j=0;j<7;j++) + { + BS(data_left_odd[code[i+1]][j]); + } + + /* Center guard bars */ + BS(0); BS(1); BS(0); BS(1); BS(0); + + for(i=7;i<12;i++) + for(j=0;j<7;j++) + { + BS(data_right[code[i]][j]); + } + csum=0; + for(i=0;i<12;i++) csum+=code[i]*((i&1)?3:1); + csum=(10-(csum%10))%10; + //printf("%d\n",csum); + for(j=0;j<7;j++) + { + BS(data_right[csum][j]); + } + + } + else if(len==8 || len==7) + { + uint32 csum=0; + + for(i=0;i<7;i++) csum+=(i&1)?code[i]:(code[i]*3); + + csum=(10-(csum%10))%10; + + for(i=0;i<4;i++) + for(j=0;j<7;j++) + { + BS(data_left_odd[code[i]][j]); + } + + + /* Center guard bars */ + BS(0); BS(1); BS(0); BS(1); BS(0); + + for(i=4;i<7;i++) + for(j=0;j<7;j++) + { + BS(data_right[code[i]][j]); + } + + for(j=0;j<7;j++) + { BS(data_right[csum][j]);} + + } + + /* Right guard bars */ + BS(1); BS(0); BS(1); + + for(j=0;j<32;j++) + { + BS(0x00); + } + + BS(0xFF); + #undef BS + BarcodeReadPos=0; + BarcodeOut=0x8; + BarcodeCycleCount=0; + return(1); +} + +static void BarcodeIRQHook(int a) +{ + BandaiIRQHook(a); + + BarcodeCycleCount+=a; + + if(BarcodeCycleCount >= 1000) + { + BarcodeCycleCount -= 1000; + if(BarcodeData[BarcodeReadPos]==0xFF) + { + BarcodeOut=0; + } + else + { + BarcodeOut=(BarcodeData[BarcodeReadPos]^1)<<3; + BarcodeReadPos++; + } + } +} + +static DECLFR(Mapper157_read) +{ + uint8 ret; + + ret=BarcodeOut; + return(ret); +} + +static void Mapper157_Power(CartInfo *info) +{ + BarcodeData[0]=0xFF; + BarcodeReadPos=0; + BarcodeOut=0; + BarcodeCycleCount=0; + + Power(info); +} + +static int StateAction_157(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(BarcodeData, 256), + SFVAR(BarcodeReadPos), SFVAR(BarcodeCycleCount), SFVAR(BarcodeOut), + SFARRAY(CHRBanks, 8), + SFVAR(PRGBank16), + SFVAR(IRQa), SFVAR(IRQCount), SFVAR(IRQLatch), + SFVAR(Mirroring), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +int Mapper157_Init(CartInfo *info) +{ + info->Power = Mapper157_Power; + info->StateAction = StateAction_157; + MDFNGameInfo->cspecial = "datach"; + MapIRQHook=BarcodeIRQHook; + SetWriteHandler(0x6000, 0xFFFF, Mapper16_write); + SetReadHandler(0x6000, 0x7FFF, Mapper157_read); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} diff --git a/libmednahawk/src/nes/boards/163.cpp b/libmednahawk/src/nes/boards/163.cpp new file mode 100644 index 0000000000..a82268a7b7 --- /dev/null +++ b/libmednahawk/src/nes/boards/163.cpp @@ -0,0 +1,199 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Mapper 163(Nanjing) emulation Based on code from VirtuaNES */ + +#include "mapinc.h" + +static uint8 *WRAM = NULL; +static uint8 security, trigger, strobe; +static uint8 regs[2]; +static uint8 chrbank[2]; + +static void Sync(void) +{ + setprg32(0x8000, (regs[0] & 0xF) | ((regs[1] & 0xF) << 4)); + setchr4(0x0000, chrbank[0]); + setchr4(0x1000, chrbank[1]); +} + +static DECLFW(Write) +{ + //printf("Write: %04x %02x\n", A, V); + switch(A & 0xF300) + { + case 0x5000: regs[0] = V; + if(!(regs[0] & 0x80) && scanline < 128) + { + chrbank[0] = 0; + chrbank[1] = 1; + } + Sync(); + break; + + case 0x5100: if(A & 1) + { + if(strobe && !V) + trigger ^= 1; + strobe = V; + } + else + { + // Needed by NJ023... + if(V == 6) + { + regs[0] &= ~0x0F; + regs[0] |= 0x03; + regs[1] &= ~0x0F; // Is this correct? + Sync(); + } + + //printf("Oops: %04x %02x\n", A, V); + } + break; + + case 0x5200: regs[1] = V; + Sync(); + break; + + case 0x5300: security = V; + break; + + } +} + +static DECLFR(ReadLow) +{ + //printf("Readlow: %04x\n", A); + switch(A & 0xF700) + { + case 0x5100: return(security); + case 0x5500: return(trigger ? security : 0); + default: return(4); + } + return(0x00); +} + +static void Mapper163_HB(void) +{ + if(regs[0] & 0x80) + { + switch(scanline) + { + case 127: chrbank[0] = 1; + chrbank[1] = 1; + break; + + case 239: chrbank[0] = 0; + chrbank[1] = 0; + break; + } + } + Sync(); +} + +static DECLFW(BWRAM) +{ + //printf("WriteRA: %04x %02x\n", A, V); + WRAM[A-0x6000]=V; +} + +static DECLFR(AWRAM) +{ + //printf("ReadRA: %04x\n", A); + return(WRAM[A-0x6000]); +} + +static void Power(CartInfo *info) +{ + + regs[0] = 0x8F; + regs[1] = 0x00; + strobe = 1; + security = 0x00; + trigger = 0; + + chrbank[0] = 0; + chrbank[1] = 1; + Sync(); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); // 0xFF or 0x00? +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 8192), + SFARRAY(regs, 2), + SFARRAY(chrbank, 2), + SFVAR(strobe), + SFVAR(security), + SFVAR(trigger), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + Sync(); + } + return(ret); +} + +static void Close(void) +{ + if(WRAM) + { + free(WRAM); + WRAM = NULL; + } +} + +int Mapper163_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + info->Close = Close; + + GameHBIRQHook2 = Mapper163_HB; + + + if(!(WRAM = (uint8 *)malloc(8192))) + { + return(0); + } + + memset(WRAM, 0x00, 8192); // 0x00 needed over 0xFF for NJ079. Probably programmed that way in the factory? + MDFNMP_AddRAM(8192, 0x6000, WRAM); + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + + SetReadHandler(0x5000, 0x5FFF, ReadLow); + SetWriteHandler(0x5000, 0x5FFF, Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + SetReadHandler(0x6000, 0x7FFF, AWRAM); + SetWriteHandler(0x6000, 0x7FFF, BWRAM); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/18.cpp b/libmednahawk/src/nes/boards/18.cpp new file mode 100644 index 0000000000..a1e959e297 --- /dev/null +++ b/libmednahawk/src/nes/boards/18.cpp @@ -0,0 +1,164 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint16 IRQCount, IRQLatch, Mirroring; +static uint8 IRQa, PRGBanks[4], CHRBanks[8]; +static uint8 WRAM[8192]; + +static void JalecoIRQHook(int a) +{ + if(IRQa && IRQCount) + { + uint16 prev = IRQCount; + IRQCount-=a; + + if(IRQCount == 0 || IRQCount > prev) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQCount=0; + IRQa=0; + } + } +} + +static void DoCHR(void) +{ + for(int x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static void DoPRG(void) +{ + for(int x = 0; x < 4; x++) + setprg8(0x8000 + x * 8192, PRGBanks[x]); +} + +static void DoMirroring(void) +{ + if(Mirroring & 2) + setmirror(MI_0); + else + setmirror(Mirroring & 1); +} + +static DECLFW(Mapper18_write) +{ + A&=0xF003; + if(A>=0x8000 && A<=0x9001) + { + int x=((A>>1)&1)|((A-0x8000)>>11); + + PRGBanks[x]&=(0xF0)>>((A&1)<<2); + PRGBanks[x]|=(V&0xF)<<((A&1)<<2); + DoPRG(); + } + else if(A>=0xa000 && A<=0xd003) + { + int x=((A>>1)&1)|((A-0xA000)>>11); + + CHRBanks[x]&=(0xF0)>>((A&1)<<2); + CHRBanks[x]|=(V&0xF)<<((A&1)<<2); + DoCHR(); + } + else switch(A) + { + case 0xe000:IRQLatch&=0xFFF0;IRQLatch|=(V&0x0f);break; + case 0xe001:IRQLatch&=0xFF0F;IRQLatch|=(V&0x0f)<<4;break; + case 0xe002:IRQLatch&=0xF0FF;IRQLatch|=(V&0x0f)<<8;break; + case 0xe003:IRQLatch&=0x0FFF;IRQLatch|=(V&0x0f)<<12;break; + case 0xf000:IRQCount=IRQLatch;break; + case 0xf001:IRQa=V&1; + X6502_IRQEnd(MDFN_IQEXT); + break; + case 0xf002:Mirroring = V & 3; + DoMirroring(); + break; + } +} + +static void Power(CartInfo *info) +{ + int x; + + Mirroring = IRQCount = IRQLatch = IRQa = 0; + for(x = 0; x < 8; x++) + CHRBanks[x] = x; + + PRGBanks[0] = 0; + PRGBanks[1] = 1; + PRGBanks[2] = ~1; + PRGBanks[3] = ~0; + + DoPRG(); + DoCHR(); + DoMirroring(); + + + setprg8r(0x10, 0x6000, 0); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 8192), + SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(Mirroring), + SFVAR(IRQa), SFARRAY(PRGBanks, 4), SFARRAY(CHRBanks, 8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +int Mapper18_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetReadHandler(0x6000, 0x7FFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + + + info->StateAction = StateAction; + info->Power = Power; + SetWriteHandler(0x8000,0xffff,Mapper18_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + MapIRQHook=JalecoIRQHook; + + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + + + return(1); +} diff --git a/libmednahawk/src/nes/boards/180.cpp b/libmednahawk/src/nes/boards/180.cpp new file mode 100644 index 0000000000..3658ae7908 --- /dev/null +++ b/libmednahawk/src/nes/boards/180.cpp @@ -0,0 +1,44 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg16(0xc000, latch & 0xF); +} + +static DECLFW(Mapper180_write) +{ + latch = V & 0xF; + Sync(); +} + +static void Power(CartInfo *info) +{ + setchr8(0); + setprg16(0x8000, 0); + latch = 0xF; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { SFVAR(latch), SFEND }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper180_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper180_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/182.cpp b/libmednahawk/src/nes/boards/182.cpp new file mode 100644 index 0000000000..dc875965bc --- /dev/null +++ b/libmednahawk/src/nes/boards/182.cpp @@ -0,0 +1,79 @@ +#include "mapinc.h" + +static uint8 IRQCount, IRQa, Mirroring, cmd, regs[8]; + +static void Sync(void) +{ + setmirror((Mirroring & 1) ^ 1); + setchr2(0x0000, regs[0] >> 1); + setchr1(0x1400, regs[1]); + setchr2(0x0800, regs[2] >> 1); + setchr1(0x1c00, regs[3]); + setprg8(0x8000, regs[4]); + setprg8(0xa000, regs[5]); + setchr1(0x1000, regs[6]); + setchr1(0x1800, regs[7]); +} + +static DECLFW(Mapper182_write) +{ + switch(A&0xf003) + { + case 0xe003:IRQCount=V;IRQa=1;X6502_IRQEnd(MDFN_IQEXT);break; + case 0x8001:Mirroring = V&1; Sync();break; + case 0xA000:cmd = V; break; + case 0xC000: regs[cmd & 7] = V; Sync(); break; + } +} + +static void blop(void) +{ + if(IRQa) + { + if(IRQCount) + { + IRQCount--; + if(!IRQCount) + { + IRQa=0; + X6502_IRQBegin(MDFN_IQEXT); + } + } + } +} + +static void Power(CartInfo *info) +{ + IRQCount = IRQa = Mirroring = cmd = 0; + for(int x = 0; x < 8; x++) + regs[x] = 0xFF; + + Sync(); + setprg16(0xc000, ~0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(IRQCount), SFVAR(IRQa), SFVAR(Mirroring), SFVAR(cmd), + SFARRAY(regs, 8), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper182_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xFFFF,Mapper182_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + GameHBIRQHook=blop; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/184.cpp b/libmednahawk/src/nes/boards/184.cpp new file mode 100644 index 0000000000..c11bed525d --- /dev/null +++ b/libmednahawk/src/nes/boards/184.cpp @@ -0,0 +1,47 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setchr4(0x0000, latch & 0xf); + setchr4(0x1000, latch >> 4); +} + +static DECLFW(Mapper184_write) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); + setprg32(0x8000, 0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper184_Init(CartInfo *info) +{ + SetWriteHandler(0x6000,0xffff,Mapper184_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/185.cpp b/libmednahawk/src/nes/boards/185.cpp new file mode 100644 index 0000000000..b250e4ca8b --- /dev/null +++ b/libmednahawk/src/nes/boards/185.cpp @@ -0,0 +1,62 @@ +#include "mapinc.h" + +static uint8 latch; +static uint8 CHRBogus[8192]; + +static void Sync(void) +{ + //printf("%02x\n",mapbyte1[0]); + //if((mapbyte1[0]&3)==3) + if(CHRmask8[0] == 0) + { + if((latch&3) == 1) + setchr8(0); + else + setchr8r(0x10,0); + } + else if(CHRmask8[0] == 1) + { + if((latch&2)) setchr8(latch&1); + else setchr8r(0x10,0); + } +} + +static DECLFW(Mapper185_write) +{ + latch=V; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + setprg32(0x8000, 0); + latch = 0x0; + Sync(); +} + +int Mapper185_Init(CartInfo *info) +{ + memset(CHRBogus, 0xFF, 8192); + info->Power = Power; + info->StateAction = StateAction; + + SetupCartCHRMapping(0x10,CHRBogus,8192,0); + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x8000,0xFFFF,Mapper185_write); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/187.cpp b/libmednahawk/src/nes/boards/187.cpp new file mode 100644 index 0000000000..29fb07209c --- /dev/null +++ b/libmednahawk/src/nes/boards/187.cpp @@ -0,0 +1,186 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO: Remove this mapper or add a StateAction for it! + +#include "mapinc.h" + +static uint8 LastWr; +static uint8 ExtMode; +static uint8 cmd; +static uint8 DRegs[8]; +static uint32 count; +static uint32 last; +static int safe; +static uint8 poofish; + +static int32 IRQCount; +static uint8 IRQa; +static uint8 IRQLatch; + +static void Sync(void) +{ + int x; + uint32 base=0; + + if(cmd&0x80) base=0x1000; + setchr2(0x0000^base,(0x100|DRegs[0])>>1); + setchr2(0x0800^base,(0x100|DRegs[1])>>1); + for(x=0;x<4;x++) + setchr1((0x1000^base)+x*0x400,DRegs[2+x]); + + if(ExtMode&0x80) + { + if(ExtMode&0x20) + setprg32(0x8000,(ExtMode&0x1F)>>1); + else + { + setprg16(0x8000,(ExtMode&0x1F)); + setprg16(0xc000,(ExtMode&0x1F)); + } + } + else + { + setprg8(0x8000,DRegs[6]); + setprg8(0xc000,~1); + setprg8(0xa000,DRegs[7]); + setprg8(0xe000,~0); + } +} + +static DECLFW(M187Write) +{ + LastWr=V; + if(A==0x5000) + ExtMode=V; + Sync(); +} + +static DECLFW(M187HWrite) +{ + //if(A==0x8003 && X.PC<0x800) MDFNI_DumpMem("dmp",0x0000,0xFFFF); + //printf("$%04x:$%02x, %04x\n",A,V,X.PC); + LastWr=V; + + if(A==0x8003) + { + if(V==0x28 || V==0x2A) + poofish=V; + } + else if(A==0x8000) poofish=0; + + switch(A) + { + case 0xc000:IRQLatch=IRQCount=V;break; + case 0xc001:IRQCount=IRQLatch;last=count=0;break; + case 0xe000:IRQa=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xe001:IRQa=1;break; + case 0xa000:setmirror((V&1) ^ 1);break; + + case 0x8000:cmd=V;safe=1;break; + case 0x8001: + if(safe) + { + //printf("Cmd: %d, %02x, %04x\n",cmd&0x7,V,X.PC); + DRegs[cmd&7]=V; + Sync(); + safe=0; + } + if(poofish==0x28) setprg8(0xc000,0x17); + break; + + } +} + +static DECLFR(ProtRead) +{ + switch(LastWr&0x3) + { + case 0x1: + case 0x0: return(0x80); + case 0x2: return(0x42); + } + return(0); +} + +static void M187Power(CartInfo *info) +{ + LastWr = 0; + ExtMode = 0; + cmd = 0; + + memset(DRegs, 0, sizeof(DRegs)); + + count = 0; + last = 0; + safe = 0; + poofish = 0; + + IRQCount = 0; + IRQa = 0; + IRQLatch = 0; + + Sync(); +} + +static void sl(void) +{ + if(IRQa) + { + if(IRQCount>=0) + { + IRQCount--; + if(IRQCount<0) + { + X6502_IRQBegin(MDFN_IQEXT); + } + } + } +} + +static void foo(uint32 A) +{ + if((A&0x2000) && !(last&0x2000)) + { + count++; + if(count==42) + { + sl(); + count=0; + } + } + last=A; +} + +int Mapper187_Init(CartInfo *info) +{ + info->Power=M187Power; + //GameHBIRQHook=sl; + PPU_hook=foo; + + SetWriteHandler(0x5000,0x5fff,M187Write); + SetWriteHandler(0x8000,0xFFFF,M187HWrite); + SetReadHandler(0x5000,0x5FFF,ProtRead); + SetWriteHandler(0x6000,0x7FFF,M187Write); + SetReadHandler(0x8000,0xffff,CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/189.cpp b/libmednahawk/src/nes/boards/189.cpp new file mode 100644 index 0000000000..49d6b85015 --- /dev/null +++ b/libmednahawk/src/nes/boards/189.cpp @@ -0,0 +1,103 @@ +/* Is this an MMC3 workalike piece of hardware, with the addition of + a register at $4120 or does it have only partial MMC3 functionality? + A good test would be to see if commands 6 and 7 can change PRG banks + and of course test the regs >=$c000, on the real cart. +*/ +#include "mapinc.h" + +static uint8 IRQCount, IRQLatch, IRQa, cmd, regs[8]; +static uint8 PRGBank32, Mirroring; + +static void Sync(void) +{ + setprg32(0x8000, PRGBank32); + setchr2(0x0000, regs[0] >> 1); + setchr2(0x0800, regs[1] >> 1); + setchr1(0x1000, regs[2]); + setchr1(0x1400, regs[3]); + setchr1(0x1800, regs[4]); + setchr1(0x1c00, regs[5]); + setmirror((Mirroring & 1) ? MI_H : MI_V); +} + +static DECLFW(Mapper189_write) +{ + //if(A>=0xc000) printf("$%04x:$%02x\n",A,V); + if((A&0xF100)==0x4100) + { + PRGBank32 = V >> 4; + Sync(); + } + else if((A&0xF100)==0x6100) + { + PRGBank32 = V & 0x3; + Sync(); + } + else switch(A&0xE001) + { + case 0xa000:Mirroring = V & 1; Sync();break; + case 0x8000:cmd=V;break; + case 0x8001:regs[cmd & 0x7] = V; Sync(); break; + case 0xc000:IRQLatch=V;break; + case 0xc001:IRQCount=IRQLatch;break; + case 0xe000:IRQa=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xe001:IRQa=1;break; + break; + + } +} +void m189irq(void) +{ + if(IRQa) + { + if(IRQCount) + { + IRQCount--; + if(!IRQCount) X6502_IRQBegin(MDFN_IQEXT); + } + } + +} + +static void Power(CartInfo *info) +{ + IRQCount = IRQLatch = IRQa = 0; + cmd = 0; + regs[0] = 0; + regs[1] = 2; + regs[2] = 4; + regs[3] = 5; + regs[4] = 6; + regs[5] = 7; + PRGBank32 = 0; + Mirroring = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(regs, 8), + SFVAR(PRGBank32), + SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(IRQa), + SFVAR(Mirroring), SFVAR(cmd), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper189_Init(CartInfo *info) +{ + GameHBIRQHook=m189irq; + SetWriteHandler(0x4120,0xFFFF,Mapper189_write); + SetReadHandler(0x8000,0xFFFF,CartBR); + info->Power = Power; + info->StateAction = StateAction; + return(1); +} + + diff --git a/libmednahawk/src/nes/boards/193.cpp b/libmednahawk/src/nes/boards/193.cpp new file mode 100644 index 0000000000..c76454faed --- /dev/null +++ b/libmednahawk/src/nes/boards/193.cpp @@ -0,0 +1,58 @@ +#include "mapinc.h" + +static uint8 CHRBanks[3], PRGBank8; +static void Sync(void) +{ + setchr4(0x0000, CHRBanks[0]); + setchr2(0x1000, CHRBanks[1]); + setchr2(0x1800, CHRBanks[2]); + setprg8(0x8000, PRGBank8); +} + +static DECLFW(m193w) +{ + switch(A&3) + { + case 0:CHRBanks[0] = V >> 2;break; + case 1:CHRBanks[1] = (V >> 1) & 0x3F; break; + case 2:CHRBanks[2] = (V >> 1) & 0x3F; break; + case 3:PRGBank8 = V;break; + } + Sync(); +} + +static void Power(CartInfo *info) +{ + CHRBanks[0] = 0; + CHRBanks[1] = 2; + CHRBanks[2] = 3; + PRGBank8 = 0xFC; + Sync(); + setprg8(0xa000, 0xFD); + setprg8(0xc000, 0xFE); + setprg8(0xe000, 0xFF); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 3), + SFVAR(PRGBank8), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + + +int Mapper193_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x4018,0x7fff,m193w); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} diff --git a/libmednahawk/src/nes/boards/208.cpp b/libmednahawk/src/nes/boards/208.cpp new file mode 100644 index 0000000000..93ecc9018a --- /dev/null +++ b/libmednahawk/src/nes/boards/208.cpp @@ -0,0 +1,157 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO: Remove this mapper or add a StateAction() + +#include "mapinc.h" + +static uint8 PRGSel; +static uint8 PBuf[4],PSel; +static uint8 cmd; +static uint8 DRegs[8]; +static uint32 count; +static uint32 last; +static int32 IRQCount; +static uint8 IRQLatch; +static uint8 IRQa; + +static DECLFW(M208Write1) +{ + PRGSel=(V&0x1)|((V>>3)&0x2); + setprg32(0x8000,PRGSel); +} + +static DECLFW(M208Write2) +{ + static const uint8 lut[256]={ + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x59, 0x49, 0x19, 0x09, 0x59, 0x49, 0x19, 0x09, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x51, 0x41, 0x11, 0x01, 0x51, 0x41, 0x11, 0x01, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x59, 0x49, 0x19, 0x09, 0x59, 0x49, 0x19, 0x09, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x51, 0x41, 0x11, 0x01, 0x51, 0x41, 0x11, 0x01, + 0x00, 0x10, 0x40, 0x50, 0x00, 0x10, 0x40, 0x50,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x18, 0x48, 0x58, 0x08, 0x18, 0x48, 0x58,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x40, 0x50, 0x00, 0x10, 0x40, 0x50,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x18, 0x48, 0x58, 0x08, 0x18, 0x48, 0x58,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x58, 0x48, 0x18, 0x08, 0x58, 0x48, 0x18, 0x08, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x50, 0x40, 0x10, 0x00, 0x50, 0x40, 0x10, 0x00, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x58, 0x48, 0x18, 0x08, 0x58, 0x48, 0x18, 0x08, + 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59,0x50, 0x40, 0x10, 0x00, 0x50, 0x40, 0x10, 0x00, + 0x01, 0x11, 0x41, 0x51, 0x01, 0x11, 0x41, 0x51,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x19, 0x49, 0x59, 0x09, 0x19, 0x49, 0x59,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x11, 0x41, 0x51, 0x01, 0x11, 0x41, 0x51,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x19, 0x49, 0x59, 0x09, 0x19, 0x49, 0x59,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + }; + if(A<=0x57FF) PSel=V; + else + PBuf[(A&0x03)]=V^lut[PSel]; +} + +static DECLFR(M208Read) +{ + return(PBuf[(A&0x3)]); +} + +static void Sync(void) +{ + int x; + + setchr2(0x0000,DRegs[0]>>1); + setchr2(0x0800,DRegs[1]>>1); + for(x=0;x<4;x++) + setchr1(0x1000+x*0x400,DRegs[2+x]); +} + +static DECLFW(M208HWrite) +{ + switch(A&0xe001) + { + case 0xc000:IRQLatch=IRQCount=V;break; + case 0xc001:IRQCount=IRQLatch;last=count=0;break; + case 0xe000:IRQa=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xe001:IRQa=1;break; + case 0x8000:cmd=V;break; + case 0x8001:DRegs[cmd&7]=V; + Sync(); + break; + + } +} + +static void M208Power(CartInfo *info) +{ + memset(PBuf, 0, sizeof(PBuf)); + PSel = 0; + cmd = 0; + memset(DRegs, 0, sizeof(DRegs)); + count = 0; + last = 0; + IRQCount = 0; + IRQLatch = 0; + IRQa = 0; + PRGSel = 3; + + setprg32(0x8000,3); +} + +static void sl(void) +{ + if(IRQa) + { + if(IRQCount>=0) + { + IRQCount--; + if(IRQCount<0) + { + X6502_IRQBegin(MDFN_IQEXT); + } + } + } +} + +static void foo(uint32 A) +{ + if((A&0x2000) && !(last&0x2000)) + { + count++; + if(count==42) + { + sl(); + count=0; + } + } + last=A; +} + +int Mapper208_Init(CartInfo *info) +{ + info->Power=M208Power; + //GameHBIRQHook=sl; + PPU_hook=foo; + + SetWriteHandler(0x4800,0x4FFF,M208Write1); + SetWriteHandler(0x5000,0x5fff,M208Write2); + SetWriteHandler(0x8000,0xFFFF,M208HWrite); + SetReadHandler(0x5800,0x5FFF,M208Read); + SetReadHandler(0x8000,0xffff,CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/21.cpp b/libmednahawk/src/nes/boards/21.cpp new file mode 100644 index 0000000000..3d0a120314 --- /dev/null +++ b/libmednahawk/src/nes/boards/21.cpp @@ -0,0 +1,178 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 CHRBanks[8], PRGBanks[2], K4IRQ, K4sel, IRQCount, IRQLatch, Mirroring, IRQa, WRAM[8192]; +static int32 acount; + +static void DoPRG(void) +{ + setprg8(0xa000, PRGBanks[1]); + + if(K4sel & 2) + { + setprg8(0xc000, PRGBanks[0]); + setprg8(0x8000, ~1); + } + else + { + setprg8(0x8000, PRGBanks[0]); + setprg8(0xC000, ~1); + } +} + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static void DoMirroring(void) +{ + switch(Mirroring & 3) + { + case 0: setmirror(MI_V); break; + case 1: setmirror(MI_H); break; + case 2: setmirror(MI_0); break; + case 3: setmirror(MI_1); break; + } +} + +static DECLFW(Mapper21_write) +{ + A|=((A>>5)&0xF); + + if((A&0xF000)==0xA000) + { + PRGBanks[1] = V; + DoPRG(); + } + else if((A&0xF000)==0x8000) + { + PRGBanks[0] = V; + DoPRG(); + } + else if(A>=0xb000 && A<=0xefff) + { + A&=0xF006; + { + int x=((A>>2)&1)|((A-0xB000)>>11); + + CHRBanks[x]&=(0xF0)>>((A&2)<<1); + CHRBanks[x]|=(V&0xF)<<((A&2)<<1); + DoCHR(); + } + } + else switch(A&0xF006) + { + case 0x9000: Mirroring = V; DoMirroring();break; + case 0x9006: + case 0x9004: + case 0x9002:K4sel=V; + DoPRG(); + break; + case 0xf000:IRQLatch&=0xF0;IRQLatch|=V&0xF;break; + case 0xf002:IRQLatch&=0x0F;IRQLatch|=V<<4;break; + case 0xf004:IRQCount=IRQLatch;acount=0; + IRQa=V&2;K4IRQ=V&1; + X6502_IRQEnd(MDFN_IQEXT); + break; + case 0xf006:IRQa=K4IRQ;X6502_IRQEnd(MDFN_IQEXT);break; + } +} +static void KonamiIRQHook(int a) +{ + #define LCYCS ((227*2)+1) + //#define LCYCS 341 + if(IRQa) + { +// acount+=a*3; + acount+=a*4; + if(acount>=LCYCS) + { + doagainbub:acount-=LCYCS;IRQCount++; + if(!IRQCount) {X6502_IRQBegin(MDFN_IQEXT);IRQCount=IRQLatch;} + if(acount>=LCYCS) goto doagainbub; + } + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), SFARRAY(PRGBanks, 2), SFARRAY(WRAM, 8192), + SFVAR(K4IRQ), SFVAR(K4sel), SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(Mirroring), SFVAR(IRQa), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +static void Power(CartInfo *info) +{ + int x; + + acount = 0; + + for(x = 0; x < 8; x++) + CHRBanks[x] = x; + DoCHR(); + K4sel = 0; + PRGBanks[0] = 0; + PRGBanks[1] = 1; + DoPRG(); + Mirroring = 0; + DoMirroring(); + + IRQCount = IRQLatch = 0; + setprg8(0xe000, ~0); + setprg8r(0x10, 0x6000, 0); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +int Mapper21_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetWriteHandler(0x8000,0xffff,Mapper21_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + MapIRQHook=KonamiIRQHook; + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} diff --git a/libmednahawk/src/nes/boards/22.cpp b/libmednahawk/src/nes/boards/22.cpp new file mode 100644 index 0000000000..857a9aa925 --- /dev/null +++ b/libmednahawk/src/nes/boards/22.cpp @@ -0,0 +1,95 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 PRGBanks[2], CHRBanks[8], Mirroring; + +static void DoPRG(void) +{ + setprg8(0x8000, PRGBanks[0]); + setprg8(0xa000, PRGBanks[1]); +} + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x] >> 1); +} + +static void DoMirroring(void) +{ + switch(Mirroring & 3) + { + case 0: setmirror(MI_V); break; + case 1: setmirror(MI_H); break; + case 2: setmirror(MI_0); break; + case 3: setmirror(MI_1); break; + } +} + +static DECLFW(Mapper22_write) +{ + if(A<=0xAFFF) + { + switch(A&0xF000) + { + case 0x8000:PRGBanks[0] = V; DoPRG(); break; + case 0xa000:PRGBanks[1] = V; DoPRG(); break; + case 0x9000:Mirroring = V & 3; DoMirroring(); break; + } + } + else + { + A&=0xF003; + if(A>=0xb000 && A<=0xe003) + { + int x=(A&1)|((A-0xB000)>>11); + + CHRBanks[x]&=(0xF0)>>((A&2)<<1); + CHRBanks[x]|=(V&0xF)<<((A&2)<<1); + DoCHR(); + } + } +} + +static void Power(CartInfo *info) +{ + int x; + + Mirroring = 3; + + for(x = 0; x < 8; x++) + CHRBanks[x] = ~0; + DoCHR(); + PRGBanks[0] = PRGBanks[1] = ~0; + DoPRG(); + + setprg16(0xc000, 0x7F); +} + +int Mapper22_Init(CartInfo *info) +{ + info->Power = Power; + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x8000,0xffff,Mapper22_write); + return(1); +} diff --git a/libmednahawk/src/nes/boards/222.cpp b/libmednahawk/src/nes/boards/222.cpp new file mode 100644 index 0000000000..3327fd4b59 --- /dev/null +++ b/libmednahawk/src/nes/boards/222.cpp @@ -0,0 +1,96 @@ +#include "mapinc.h" + +static uint8 PRGBanks[2], CHRBanks[8], IRQCount, IRQLatch, IRQa; +int32 acount; + +static void Sync(void) +{ + int x; + + setprg8(0x8000, PRGBanks[0]); + setprg8(0xa000, PRGBanks[1]); + for(x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + + +static DECLFW(Write) +{ + A &= 0xF003; + if((A & 0xF000) == 0x8000) + PRGBanks[0] = V; + else if((A & 0xF000) == 0xA000) + PRGBanks[1] = V; + else switch(A) + { + case 0xb000: CHRBanks[0] = V; break; + case 0xb002: CHRBanks[1] = V; break; + case 0xc000: CHRBanks[2] = V; break; + case 0xc002: CHRBanks[3] = V; break; + case 0xd000: CHRBanks[4] = V; break; + case 0xd002: CHRBanks[5] = V; break; + case 0xe000: CHRBanks[6] = V; break; + case 0xe002: CHRBanks[7] = V; break; + case 0xf000: IRQLatch = V; break; + case 0xf001: X6502_IRQEnd(MDFN_IQEXT); IRQa = 0; IRQCount = IRQLatch; break; + case 0xf002: IRQa = 1; break; + default: printf("%04x: %02x\n", A, V);break; + } + + Sync(); +} + +static void Power(CartInfo *info) +{ + IRQCount = IRQa = 0; + PRGBanks[0] = 0; + PRGBanks[1] = 1; + setprg16(0xc000, 0x7F); + for(unsigned int x = 0; x < 8; x++) + CHRBanks[x] = x; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRGBanks, 2), + SFARRAY(CHRBanks, 8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void IRQHook(int a) +{ + if(IRQa) + { + acount += a * 3; + while(acount >= 341) + { + acount -= 341; + IRQCount++; + if(IRQCount == 0) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + } + } + } +} + + +int Mapper222_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x8000, 0xFFFF, Write); + MapIRQHook = IRQHook; + return(1); +} diff --git a/libmednahawk/src/nes/boards/228.cpp b/libmednahawk/src/nes/boards/228.cpp new file mode 100644 index 0000000000..6c01bfa3b0 --- /dev/null +++ b/libmednahawk/src/nes/boards/228.cpp @@ -0,0 +1,79 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint16 latch; +static uint8 v_latch; + +static void Sync(void) +{ + uint32 page,pagel,pageh; + + setmirror(((latch>>13)&1) ? MI_H : MI_V); + + page=(latch>>7)&0x3F; + //printf("%04x\n",A); + if((page&0x30)==0x30) + page-=0x10; + + pagel=pageh=(page<<1) + (((latch>>6)&1)&((latch>>5)&1)); + pageh+=((latch>>5)&1)^1; + + setprg16(0x8000,pagel); + setprg16(0xC000,pageh); + setchr8( (v_latch&0x3) | ((latch&0xF)<<2) ); +} + +static DECLFW(Mapper228_write) +{ + latch = A; + v_latch = V; + Sync(); +} + +static void Reset(CartInfo *info) +{ + latch = v_latch = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), SFVAR(v_latch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper228_Init(CartInfo *info) +{ + info->Power = info->Reset = Reset; + info->StateAction = StateAction; + SetWriteHandler(0x8000, 0xffff, Mapper228_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/23.cpp b/libmednahawk/src/nes/boards/23.cpp new file mode 100644 index 0000000000..8e53e57b10 --- /dev/null +++ b/libmednahawk/src/nes/boards/23.cpp @@ -0,0 +1,187 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 CHRBanks[8], PRGBanks[2], IRQCount, IRQLatch, Mirroring, K4IRQ, IRQa, K4sel; +static int32 acount; +static uint8 *WRAM = NULL; + +static void DoMirroring(void) +{ + switch(Mirroring & 3) + { + case 0: setmirror(MI_V); break; + case 1: setmirror(MI_H); break; + case 2: setmirror(MI_0); break; + case 3: setmirror(MI_1); break; + } +} + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static void DoPRG(void) +{ + if(K4sel & 2) + { + setprg8(0x8000, 0xFE); + setprg8(0xc000, PRGBanks[0]); + } + else + { + setprg8(0xc000, 0xFE); + setprg8(0x8000, PRGBanks[0]); + } + setprg8(0xa000, PRGBanks[1]); +} + +static DECLFW(Mapper23_write) +{ + if((A&0xF000)==0x8000) + { + PRGBanks[0] = V; + DoPRG(); + } + else if((A&0xF000)==0xA000) + { + PRGBanks[1] = V; + DoPRG(); + } + else + { + A|=((A>>2)&0x3)|((A>>4)&0x3)|((A>>6)&0x3); + A&=0xF003; + if(A>=0xb000 && A<=0xe003) + { + int x=((A>>1)&1)|((A-0xB000)>>11); + + CHRBanks[x]&=(0xF0)>>((A&1)<<2); + CHRBanks[x]|=(V&0xF)<<((A&1)<<2); + DoCHR(); + } + else + switch(A) + { + case 0xf000:X6502_IRQEnd(MDFN_IQEXT);IRQLatch&=0xF0;IRQLatch|=V&0xF;break; + case 0xf001:X6502_IRQEnd(MDFN_IQEXT);IRQLatch&=0x0F;IRQLatch|=V<<4;break; + case 0xf002:X6502_IRQEnd(MDFN_IQEXT);acount=0;IRQCount=IRQLatch;IRQa=V&2;K4IRQ=V&1;break; + case 0xf003:X6502_IRQEnd(MDFN_IQEXT);IRQa=K4IRQ;break; + case 0x9001: + case 0x9002: + case 0x9003:K4sel=V; + DoPRG(); + break; + case 0x9000: Mirroring = V & 0x3; DoMirroring(); break; + } + } +} + +static void KonamiIRQHook2(int a) +{ + #define LCYCS 341 + if(IRQa) + { + acount+=a*3; + if(acount>=LCYCS) + { + doagainbub:acount-=LCYCS;IRQCount++; + if(!IRQCount) {X6502_IRQBegin(MDFN_IQEXT);IRQCount=IRQLatch;} + if(acount>=LCYCS) goto doagainbub; + } + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), SFARRAY(PRGBanks, 2), SFARRAY(WRAM, 8192), + SFVAR(K4IRQ), SFVAR(K4sel), SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(Mirroring), SFVAR(IRQa), + SFVAR(acount), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +static void Power(CartInfo *info) +{ + for(int x = 0; x < 8; x++) + CHRBanks[x] = ~0; + PRGBanks[0] = PRGBanks[1] = ~0; + setprg8r(0x10, 0x6000, 0); + setprg16(0xc000, 0x7F); + IRQCount = IRQLatch = IRQa = K4sel = K4IRQ = 0; + Mirroring = 3; + DoPRG(); + DoCHR(); + DoMirroring(); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); + + acount = 0; +} + +static void Close(void) +{ + if(WRAM) + { + free(WRAM); + WRAM = NULL; + } +} + +int Mapper23_Init(CartInfo *info) +{ + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper23_write); + + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + + MapIRQHook=KonamiIRQHook2; + info->Power = Power; + info->Close = Close; + + if(!(WRAM = (uint8 *)malloc(8192))) + return(0); + + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/232.cpp b/libmednahawk/src/nes/boards/232.cpp new file mode 100644 index 0000000000..3ad25bcad4 --- /dev/null +++ b/libmednahawk/src/nes/boards/232.cpp @@ -0,0 +1,74 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latches[2]; + +static void Sync(void) +{ + setprg16(0x8000,(latches[1]&3) | ((latches[0]&0x18)>>1)); + setprg16(0xc000,3|(((latches[0])&0x18)>>1)); +} + +static DECLFW(Mapper232_write) +{ + if(A<=0x9FFF) + latches[0]=V; + else + latches[1]=V; + Sync(); +} + +static void Reset(CartInfo *info) +{ + latches[0]=0x18; + Sync(); + + setchr8(0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(latches, 2), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + Sync(); + } + return(ret); +} + +int BIC48_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper232_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + info->Power = info->Reset = Reset; + info->StateAction = StateAction; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/234.cpp b/libmednahawk/src/nes/boards/234.cpp new file mode 100644 index 0000000000..38bd5d8195 --- /dev/null +++ b/libmednahawk/src/nes/boards/234.cpp @@ -0,0 +1,115 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 r1, r2; + +static void DoBS(void) +{ + if(r1&0x40) + { + setprg32(0x8000, (r1&0xE)|(r2&1)); + setchr8( ((r1&0xE)<<2) | ((r2>>4)&7) ); + } + else + { + setprg32(0x8000, r1&0xF); + setchr8( ((r1&0xF)<<2) | ((r2>>4)&3) ); + } +} + +static void R1Set(uint8 V) +{ + if(r1) return; + r1=V; + setmirror(((V >> 7) & 1) ^ 1); + DoBS(); +} + +static void R2Set(uint8 V) +{ + r2=V; + DoBS(); +} + +static DECLFW(R1W) +{ + R1Set(V); +} + +static DECLFR(R1R) +{ + uint8 r=CartBR(A); + R1Set(r); + return r; +} + +static DECLFW(R2W) +{ + R2Set(V); +} + +static DECLFR(R2R) +{ + uint8 r=CartBR(A); + R2Set(r); + return r; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { SFVAR(r1), SFVAR(r2), SFEND }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + DoBS(); + setmirror(((r1 >> 7) & 1) ^ 1); + } + + return(ret); +} + +static void Power(CartInfo *info) +{ + r1=r2=0; + DoBS(); + setmirror(MI_V); +} + +int Mapper234_Init(CartInfo *info) +{ + SetReadHandler(0x8000, 0xFFFF, CartBR); + + SetWriteHandler(0xff80,0xff9f,R1W); + SetReadHandler(0xff80,0xff9f,R1R); + + SetWriteHandler(0xffe8,0xfff7,R2W); + SetReadHandler(0xffe8,0xfff7,R2R); + + info->Power = Power; + info->StateAction = StateAction; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/240.cpp b/libmednahawk/src/nes/boards/240.cpp new file mode 100644 index 0000000000..b16cf3e892 --- /dev/null +++ b/libmednahawk/src/nes/boards/240.cpp @@ -0,0 +1,108 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 *WRAM = NULL; +static uint8 latch; + +static void Sync(void) +{ + setprg32(0x8000, latch >> 4); + setchr8(latch & 0xF); +} + +static DECLFW(Write) +{ + latch = V; + Sync(); +} + +static DECLFW(BWRAM) +{ + WRAM[A-0x6000]=V; +} + +static DECLFR(AWRAM) +{ + return(WRAM[A-0x6000]); +} + +static void Power(CartInfo *info) +{ + latch = 0xFF; + Sync(); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + Sync(); + } + return(ret); +} + +static void Close(void) +{ + if(WRAM) + { + free(WRAM); + WRAM = NULL; + } +} + +int Mapper240_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + info->Close = Close; + + if(!(WRAM = (uint8 *)malloc(8192))) + { + return(0); + } + + memset(WRAM, 0xFF, 8192); + + MDFNMP_AddRAM(8192, 0x6000, WRAM); + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x4020, 0x5FFF, Write); + + SetReadHandler(0x6000, 0x7FFF, AWRAM); + SetWriteHandler(0x6000, 0x7FFF, BWRAM); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/241.cpp b/libmednahawk/src/nes/boards/241.cpp new file mode 100644 index 0000000000..34990673d9 --- /dev/null +++ b/libmednahawk/src/nes/boards/241.cpp @@ -0,0 +1,123 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 *WRAM = NULL; +static uint8 latch; + +static void Sync(void) +{ + setprg32(0x8000, latch); +} + +static DECLFW(Write) +{ + if(A & 0x8000) + { + latch = V; + Sync(); + } + //else + // printf("%04x %02x\n", A, V); +} + +static DECLFR(ReadLow) +{ + //printf("ReadLow: %04x\n", A); + return(0x00); +} + +static DECLFW(BWRAM) +{ + //printf("Write: %04x %02x\n", A, V); + WRAM[A-0x6000]=V; +} + +static DECLFR(AWRAM) +{ + //printf("Read: %04x\n", A); + return(WRAM[A-0x6000]); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); + setchr8(0); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 8192), + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + Sync(); + } + return(ret); +} + +static void Close(void) +{ + if(WRAM) + { + free(WRAM); + WRAM = NULL; + } +} + +int Mapper241_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + info->Close = Close; + + if(!(WRAM = (uint8 *)malloc(8192))) + { + return(0); + } + + memset(WRAM, 0xFF, 8192); + + MDFNMP_AddRAM(8192, 0x6000, WRAM); + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + + SetReadHandler(0x5000, 0x5FFF, ReadLow); + SetWriteHandler(0x5000, 0x5FFF, Write); + SetWriteHandler(0x8000, 0xFFFF, Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + SetReadHandler(0x6000, 0x7FFF, AWRAM); + SetWriteHandler(0x6000, 0x7FFF, BWRAM); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/242.cpp b/libmednahawk/src/nes/boards/242.cpp new file mode 100644 index 0000000000..f1148b92bc --- /dev/null +++ b/libmednahawk/src/nes/boards/242.cpp @@ -0,0 +1,81 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 Mirroring, PRGBank32, WRAM[8192]; + +static void Sync(void) +{ + const int mirtab[4] = { MI_V, MI_H, MI_0, MI_1 }; + + setprg32(0x8000, PRGBank32); + setmirror(mirtab[Mirroring & 3]); +} + +static DECLFW(Mapper242_write) +{ + PRGBank32 = (A >> 3) & 0xF; + Mirroring = V & 3; + Sync(); +} + +static void Power(CartInfo *info) +{ + Mirroring = PRGBank32 = 0; + Sync(); + setchr8(0); + setprg8r(0x10, 0x6000, 0); + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(Mirroring), + SFVAR(PRGBank32), + SFARRAY(WRAM, 8192), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper242_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper242_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + info->Power = Power; + info->StateAction = StateAction; + if(info->battery) + { + memset(WRAM, 0xFF, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/244.cpp b/libmednahawk/src/nes/boards/244.cpp new file mode 100644 index 0000000000..ab6f4b6384 --- /dev/null +++ b/libmednahawk/src/nes/boards/244.cpp @@ -0,0 +1,70 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 CaH4e3 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 PRGBank32, CHRBank8; + +static void Sync(void) +{ + setprg32(0x8000, PRGBank32); + setchr8(CHRBank8); +} +static DECLFW(Mapper244_write_1) +{ + PRGBank32 = (A - 0x8065) & 0x3; + Sync(); +} + +static DECLFW(Mapper244_write_2) +{ + CHRBank8 = (A - 0x80A5) & 0x7; + Sync(); +} + +static void Power(CartInfo *info) +{ + CHRBank8 = PRGBank32 = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(PRGBank32), + SFVAR(CHRBank8), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper244_Init(CartInfo *info) +{ + SetWriteHandler(0x8065,0x80a4,Mapper244_write_1); + SetWriteHandler(0x80a5,0x80e4,Mapper244_write_2); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + return(1); +} diff --git a/libmednahawk/src/nes/boards/246.cpp b/libmednahawk/src/nes/boards/246.cpp new file mode 100644 index 0000000000..c41ed9be16 --- /dev/null +++ b/libmednahawk/src/nes/boards/246.cpp @@ -0,0 +1,102 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" +static uint8 PRGBanks[4], CHRBanks[4]; +static uint8 WRAM[0x800]; + +static void Sync(void) +{ + int x; + for(x = 0; x < 4; x++) + { + setprg8(0x8000 + x * 8192, PRGBanks[x]); + setchr2(0x0000 + x * 2048, CHRBanks[x]); + } +} +static DECLFW(Mapper246_write) +{ + switch(A&0xF007) + { + case 0x6000:PRGBanks[0] = V;break; + case 0x6001:PRGBanks[1] = V;break; + case 0x6002:PRGBanks[2] = V;break; + case 0x6003:PRGBanks[3] = V;break; + case 0x6004:CHRBanks[0] = V;break; + case 0x6005:CHRBanks[1] = V;break; + case 0x6006:CHRBanks[2] = V;break; + case 0x6007:CHRBanks[3] = V;break; + } + Sync(); +} + +static void Reset(CartInfo *info) +{ + int x; + for(x = 0; x < 4; x++) + CHRBanks[x] = x; + PRGBanks[0] = 0; + PRGBanks[1] = 1; + PRGBanks[2] = 0xFE; + PRGBanks[3] = 0xFF; + setprg2r(0x10, 0x6800, 0); + Sync(); + if(!info->battery) + memset(WRAM, 0xFF, 0x800); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRGBanks, 4), + SFARRAY(CHRBanks, 4), + SFARRAY(WRAM, 0x800), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + Sync(); + } + return(ret); +} + +int Mapper246_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 0x800, 1); + SetWriteHandler(0x4020,0x67ff,Mapper246_write); + SetWriteHandler(0x8000,0xffff,Mapper246_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetReadHandler(0x6800, 0x6FFF, CartBR); + SetWriteHandler(0x6800, 0x6FFF, CartBW); + info->Reset = info->Power = Reset; + info->StateAction = StateAction; + if(info->battery) + { + memset(WRAM, 0xFF, 0x800); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 2048; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/248.cpp b/libmednahawk/src/nes/boards/248.cpp new file mode 100644 index 0000000000..17e5d48bba --- /dev/null +++ b/libmednahawk/src/nes/boards/248.cpp @@ -0,0 +1,144 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 cmd, lpa, prgl[2], Mirroring, IRQLatch, IRQCount, IRQa, CHRBanks[6]; + +static void PRGSynco(void) +{ + if(lpa&0x80) + { + setprg16(0x8000,lpa&0xF); + } + else + { + setprg8(0x8000,prgl[0]&0x1F); + setprg8(0xa000,prgl[1]&0x1F); + } +} +static void DoCHR(void) +{ + setchr2(0x0000, CHRBanks[0]); + setchr2(0x0800, CHRBanks[1]); + for(int x = 0; x < 4; x++) + setchr1(0x1000 + x * 1024, CHRBanks[2 + x]); +} +static DECLFW(Mapper248_writelow) +{ + lpa=V; + PRGSynco(); +} + +static DECLFW(Mapper248_write) +{ + switch(A&0xF001) + { + case 0xa000:Mirroring = V & 1; setmirror(Mirroring ? MI_H : MI_V);break; // Not sure if this is right. Mirroring may be hard wired... + case 0xc000:IRQLatch=V;break; + case 0xc001:IRQCount=IRQLatch;break; + case 0xe000:IRQa=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xe001:IRQa=1;break; + case 0x8000:cmd=V;break; + case 0x8001:switch(cmd&7) + { + case 0:CHRBanks[0] = V >> 1;DoCHR();break; + case 1:CHRBanks[1] = V >> 1;DoCHR();break; + case 2:CHRBanks[2] = V;DoCHR();break; + case 3:CHRBanks[3] = V;DoCHR();break; + case 4:CHRBanks[4] = V;DoCHR();break; + case 5:CHRBanks[5] = V;DoCHR();break; + case 6:prgl[0]=V;PRGSynco();break; + case 7:prgl[1]=V;PRGSynco();break; + } + break; + } +} + +static void Mapper248_hb(void) +{ + if(IRQa) + { + IRQCount--; + if(IRQCount == 0xFF) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQCount = IRQLatch; + } + } +} + +static void Power(CartInfo *info) +{ + CHRBanks[0] = 0; + CHRBanks[1] = 1; + CHRBanks[2] = 4; + CHRBanks[3] = 5; + CHRBanks[4] = 6; + CHRBanks[5] = 7; + IRQCount = IRQLatch = IRQa = 0; + + Mirroring = (info->mirror & 1) ^ 1; + setmirror(Mirroring ^ 1); + cmd = 0; + lpa = 0; + prgl[0] = 0; + prgl[1] = 1; + setprg16(0xc000, 0x7F); + PRGSynco(); + DoCHR(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 6), + SFARRAY(prgl, 2), + SFVAR(lpa), + SFVAR(cmd), + SFVAR(Mirroring), + SFVAR(IRQCount), + SFVAR(IRQLatch), + SFVAR(IRQa), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + Mirroring &= 1; + setmirror(Mirroring ^ 1); + DoCHR(); + PRGSynco(); + } + return(ret); +} + +int Mapper248_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x6000,0x6fff,Mapper248_writelow); + SetWriteHandler(0x8000,0xffff,Mapper248_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + GameHBIRQHook=Mapper248_hb; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/25.cpp b/libmednahawk/src/nes/boards/25.cpp new file mode 100644 index 0000000000..f8c6b50445 --- /dev/null +++ b/libmednahawk/src/nes/boards/25.cpp @@ -0,0 +1,174 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 CHRBanks[8], PRGBanks[2], K4IRQ, K4sel, IRQCount, IRQLatch, Mirroring, IRQa, WRAM[8192]; +static int32 acount; + +static void DoPRG(void) +{ + setprg8(0xa000, PRGBanks[1]); + + if(K4sel & 2) + { + setprg8(0xc000, PRGBanks[0]); + setprg8(0x8000, ~1); + } + else + { + setprg8(0x8000, PRGBanks[0]); + setprg8(0xC000, ~1); + } +} + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static void DoMirroring(void) +{ + switch(Mirroring & 3) + { + case 0: setmirror(MI_V); break; + case 1: setmirror(MI_H); break; + case 2: setmirror(MI_0); break; + case 3: setmirror(MI_1); break; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), SFARRAY(PRGBanks, 2), SFARRAY(WRAM, 8192), + SFVAR(K4IRQ), SFVAR(K4sel), SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(Mirroring), SFVAR(IRQa), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +static DECLFW(Mapper25_write) +{ + A=(A&0xF003)|((A&0xC)>>2); + + if((A&0xF000)==0xA000) + { + PRGBanks[1] = V; + DoPRG(); + } + else if(A>=0xB000 && A<=0xEFFF) + { + int x=(A&1)|((A-0xB000)>>11); + + CHRBanks[x]&=(0xF0)>>((A&2)<<1); + CHRBanks[x]|=(V&0xF)<<((A&2)<<1); + DoCHR(); + } + else if((A&0xF000)==0x8000) + { + PRGBanks[0] = V; + DoPRG(); + } + else switch(A) + { + case 0x9000:Mirroring = V; DoMirroring(); break; + case 0x9001:K4sel=V; DoPRG(); break; + break; + case 0xf000:IRQLatch&=0xF0;IRQLatch|=V&0xF;break; + case 0xf002:IRQLatch&=0x0F;IRQLatch|=V<<4;break; + case 0xf001:IRQCount=IRQLatch;IRQa=V&2;K4IRQ=V&1;acount=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xf003:IRQa=K4IRQ;X6502_IRQEnd(MDFN_IQEXT);break; + } +} + +static void KonamiIRQHook(int a) +{ +// #define LCYCS ((227*2)) + #define LCYCS 341 + if(IRQa) + { + acount+=a*3; + // acount+=a*4; + if(acount>=LCYCS) + { + doagainbub:acount-=LCYCS;IRQCount++; + if(IRQCount == 0) + {//acount=0; + X6502_IRQBegin(MDFN_IQEXT);IRQCount=IRQLatch; + } + if(acount>=LCYCS) goto doagainbub; + } + } +} + +static void Power(CartInfo *info) +{ + int x; + + acount = 0; + + for(x = 0; x < 8; x++) + CHRBanks[x] = x; + DoCHR(); + K4sel = 0; + PRGBanks[0] = 0; + PRGBanks[1] = 1; + DoPRG(); + Mirroring = 0; + DoMirroring(); + + IRQCount = IRQLatch = 0; + setprg8(0xe000, ~0); + setprg8r(0x10, 0x6000, 0); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +int Mapper25_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetWriteHandler(0x8000,0xffff,Mapper25_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + MapIRQHook=KonamiIRQHook; + info->Power = Power; + info->StateAction = StateAction; + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/32.cpp b/libmednahawk/src/nes/boards/32.cpp new file mode 100644 index 0000000000..de6e73f324 --- /dev/null +++ b/libmednahawk/src/nes/boards/32.cpp @@ -0,0 +1,127 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 PRGBanks[2], IREMCon, CHRBanks[8], WRAM[8192]; + +static void DoCHR(void) +{ + for(int x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} +static void DoPRG(void) +{ + if(IREMCon & 2) + { + setprg8(0xC000, PRGBanks[0]); + setprg8(0x8000, 0xFE); + } + else + { + setprg8(0x8000, PRGBanks[0]); + setprg8(0xC000, 0xFE); + } + setprg8(0xa000, PRGBanks[1]); +} + +static void DoMirroring(void) +{ + setmirror((IREMCon & 1) ? MI_H : MI_V); +} + +static DECLFW(Mapper32_write) +{ + switch(A>>12) + { + case 0x8: + PRGBanks[0] = V; + DoPRG(); + break; + case 0x9:IREMCon = V; + DoPRG(); + DoMirroring(); + break; + case 0xa:PRGBanks[1] = V;DoPRG(); + break; + } + + if((A&0xF000)==0xb000) + { + CHRBanks[A & 7] = V; + DoCHR(); + } +} + +static void Power(CartInfo *info) +{ + PRGBanks[0] = 0; + PRGBanks[1] = 1; + for(int x = 0; x < 8; x++) + CHRBanks[x] = x; + IREMCon = 0; + setprg16(0xc000, 0x7F); + DoPRG(); + DoCHR(); + DoMirroring(); + setprg8r(0x10, 0x6000, 0); + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRGBanks, 2), + SFARRAY(CHRBanks, 8), + SFVAR(IREMCon), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + + return(ret); +} + +int Mapper32_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetWriteHandler(0x8000,0xffff,Mapper32_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + if(info->battery) + { + memset(WRAM, 0xFF, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} diff --git a/libmednahawk/src/nes/boards/33.cpp b/libmednahawk/src/nes/boards/33.cpp new file mode 100644 index 0000000000..472c34d2b1 --- /dev/null +++ b/libmednahawk/src/nes/boards/33.cpp @@ -0,0 +1,166 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static bool is48; +static uint8 IRQCount, IRQa, IRQLatch, PRGBanks[2], Mirroring, CHRBanks[6]; + +static void DoPRG(void) +{ + if(is48) + { + setprg8(0x8000, PRGBanks[0]); + setprg8(0xa000, PRGBanks[1]); + } + else + { + setprg8(0x8000, PRGBanks[0] & 0x3F); + setprg8(0xa000, PRGBanks[1] & 0x3F); + } +} + +static void DoCHR(void) +{ + for(int x = 0; x < 4; x++) + setchr1(0x1000 + x * 1024, CHRBanks[x]); + setchr2(0x0000, CHRBanks[4]); + setchr2(0x0800, CHRBanks[5]); +} + +static void DoMirroring(void) +{ + if(is48) + setmirror(((Mirroring >> 6) & 1) ? MI_H : MI_V); + else + setmirror(((PRGBanks[0] >> 6) & 1) ? MI_H : MI_V); +} + +static DECLFW(Mapper33_write) +{ + A&=0xF003; + if(A>=0xA000 && A<=0xA003) + { + CHRBanks[A & 3] = V; + DoCHR(); + } + else switch(A) + { + case 0x8000:PRGBanks[0] = V; DoPRG(); DoMirroring(); break; + case 0x8001:PRGBanks[1] = V; DoPRG(); break; + case 0x8002:CHRBanks[4] = V; DoCHR(); break; + case 0x8003:CHRBanks[5] = V; DoCHR(); break; + } +} + +static DECLFW(Mapper48_HiWrite) +{ + switch(A&0xF003) + { + case 0xc000:IRQLatch=V;break; + case 0xc001:IRQCount=IRQLatch;break; + case 0xc003:IRQa=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xc002:IRQa=1;break; + case 0xe000:Mirroring = V; DoMirroring(); ;break; + } +} + +static void heho(void) +{ + if(IRQa) + { + IRQCount++; + if(!IRQCount) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + } + } +} + +static void Power(CartInfo *info) +{ + PRGBanks[0] = 0; + PRGBanks[1] = 1; + Mirroring = 0; + IRQLatch = IRQCount = IRQa = 0; + for(int x = 0; x < 6; x++) + CHRBanks[x] = 0; + DoPRG(); + DoCHR(); + DoMirroring(); + + if(is48) + setprg16(0xc000, 0x7F); + else + setprg16(0xc000, 0x1F); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRGBanks, 2), + SFARRAY(CHRBanks, 6), + SFEND + }; + + SFORMAT StateRegs48[] = + { + SFARRAY(PRGBanks, 2), + SFARRAY(CHRBanks, 6), + SFVAR(Mirroring), + SFVAR(IRQCount), SFVAR(IRQa), SFVAR(IRQLatch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, is48 ? StateRegs48 : StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +int Mapper33_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper33_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + is48=0; + + return(1); +} + +int Mapper48_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper33_write); + SetWriteHandler(0xc000,0xffff,Mapper48_HiWrite); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + GameHBIRQHook=heho; + is48=1; + + return(1); +} diff --git a/libmednahawk/src/nes/boards/34.cpp b/libmednahawk/src/nes/boards/34.cpp new file mode 100644 index 0000000000..6405adc647 --- /dev/null +++ b/libmednahawk/src/nes/boards/34.cpp @@ -0,0 +1,68 @@ +#include "mapinc.h" + +static uint8 PRGBank32, CHRBanks[2], WRAM[8192]; + +static void Sync(void) +{ + setprg32(0x8000, PRGBank32); + setchr4(0x0000, CHRBanks[0]); + setchr4(0x1000, CHRBanks[1]); +} + +static DECLFW(Mapper34_write) +{ + switch(A) + { + case 0x7FFD:PRGBank32 = V;break; + case 0x7FFE:CHRBanks[0] = V;break; + case 0x7fff:CHRBanks[1] = V;break; + } + if(A>=0x8000) + PRGBank32 = V; + + Sync(); +} + +static void Power(CartInfo *info) +{ + if(!info->battery) + memset(WRAM, 0xFF, 8192); + PRGBank32 = 0; + CHRBanks[0] = 0; + CHRBanks[1] = 1; + setprg8r(0x10, 0x6000, 0); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(PRGBank32), + SFARRAY(CHRBanks, 2), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper34_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + if(info->battery) + { + memset(WRAM, 0xFF, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetWriteHandler(0x7ffd,0xffff,Mapper34_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + return(1); +} diff --git a/libmednahawk/src/nes/boards/38.cpp b/libmednahawk/src/nes/boards/38.cpp new file mode 100644 index 0000000000..9650f7877f --- /dev/null +++ b/libmednahawk/src/nes/boards/38.cpp @@ -0,0 +1,61 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; +static void Sync(void) +{ + setprg32(0x8000, latch & 0x3); + setchr8((latch >> 2) & 0x3); +} + +static DECLFW(Mapper38_write) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper38_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x7000, 0x7fff, Mapper38_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/41.cpp b/libmednahawk/src/nes/boards/41.cpp new file mode 100644 index 0000000000..7422a521c0 --- /dev/null +++ b/libmednahawk/src/nes/boards/41.cpp @@ -0,0 +1,79 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 calreg, calchr; + +static void Sync(void) +{ + setprg32(0x8000, calreg & 0x7); + setmirror((calreg & 0x20) ? MI_H : MI_V); + setchr8(calchr); +} + +static DECLFW(Mapper41_write) +{ + if(A<0x8000) + { + calreg=A; + calchr&=0x3; + calchr|=(A>>1)&0xC; + } + else if(calreg&0x4) + { + calchr&=0xC; + calchr|=A&3; + } + Sync(); +} + +static void Reset(CartInfo *info) +{ + calreg=calchr=0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(calreg), + SFVAR(calchr), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + + +int Mapper41_Init(CartInfo *info) +{ + info->Power = info->Reset = Reset; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper41_write); + SetWriteHandler(0x6000,0x67ff,Mapper41_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/42.cpp b/libmednahawk/src/nes/boards/42.cpp new file mode 100644 index 0000000000..2b092641de --- /dev/null +++ b/libmednahawk/src/nes/boards/42.cpp @@ -0,0 +1,111 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 regs[4], CHRBank8; +static uint16 IRQCount; + +static void Sync(void) +{ + setchr8(CHRBank8); + setprg8(0x6000, regs[0] & 0xF); + setmirror((regs[1] & 0x08) ? MI_H : MI_V); +} + +static DECLFW(NicolWrite) +{ + CHRBank8 = V; + Sync(); +} + +static DECLFW(Write) +{ + regs[A & 3] = V; + if((A & 3) == 2) + if(!(V & 2)) + { + X6502_IRQEnd(MDFN_IQEXT); + IRQCount = 0; + } + Sync(); +} + +static void IRQHook(int a) +{ + if(regs[2] & 2) + { + IRQCount += a; + if(IRQCount >= 24576) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQCount = 24576; + } + } +} + +static void Power(CartInfo *info) +{ + int x; + + CHRBank8 = 0; + + IRQCount = 0; + + for(x = 0; x < 4; x++) + regs[x] = 0; + + setprg8(0x8000, 0xC); + setprg8(0xa000, 0xD); + setprg8(0xc000, 0xE); + setprg8(0xe000, 0xF); + + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(regs, 4), + SFVAR(IRQCount), + SFVAR(CHRBank8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + Sync(); + } + + return(ret); +} + +int BioMiracleA_Init(CartInfo *info) +{ + MapIRQHook = IRQHook; + info->Power = Power; + info->StateAction = StateAction; + + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x8000, 0x9FFF, NicolWrite); + SetWriteHandler(0xe000, 0xFFFF, Write); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/46.cpp b/libmednahawk/src/nes/boards/46.cpp new file mode 100644 index 0000000000..6ecd72d68d --- /dev/null +++ b/libmednahawk/src/nes/boards/46.cpp @@ -0,0 +1,72 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 A64reg, A64wr; + +static void Sync(void) +{ + setprg32(0x8000, (A64wr&1)+((A64reg&0xF)<<1)); + setchr8(((A64wr>>4)&7)+((A64reg&0xF0)>>1)); +} + +static DECLFW(Mapper46_writel) +{ + A64reg=V; + Sync(); +} + +static DECLFW(Mapper46_write) +{ + A64wr=V; + Sync(); +} + +static void Reset(CartInfo *info) +{ + A64reg = A64wr = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(A64reg), + SFVAR(A64wr), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper46_Init(CartInfo *info) +{ + info->Power = Reset; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper46_write); + SetWriteHandler(0x6000,0x7fff,Mapper46_writel); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} diff --git a/libmednahawk/src/nes/boards/51.cpp b/libmednahawk/src/nes/boards/51.cpp new file mode 100644 index 0000000000..00de975cb2 --- /dev/null +++ b/libmednahawk/src/nes/boards/51.cpp @@ -0,0 +1,87 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 mode, page; + +static uint32 Get8K(uint32 A) +{ + uint32 bank; + + bank=(page<<2)|((A>>13)&1); + + if(A&0x4000 && !(mode&1)) bank|=0xC; + if(!(A&0x8000)) bank|=0x20; + if(mode==2) bank|=2; + else bank|=(A>>13)&2; + return(bank); +} + +static void Synco(void) +{ + uint32 x; + if(mode<=2) + setmirror(MI_V); + else + setmirror(MI_H); + for(x=0x6000;x<0x10000;x+=8192) + setprg8(x,Get8K(x)); +} + +static DECLFW(Write) +{ + if(A&0x8000) page=V&0xF; + else mode=(mode&2)|((V>>1)&1); + + if(A&0x4000) mode=(mode&1)|((V>>3)&2); + Synco(); +} + +static void Power(CartInfo *info) +{ + setchr8(0); + mode = 1; + page = 0; + Synco(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(page), + SFVAR(mode), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Synco(); + return(ret); +} + +int Mapper51_Init(CartInfo *info) +{ + SetWriteHandler(0x6000,0xFFFF,Write); + SetReadHandler(0x6000,0xFFFF,CartBR); + info->Power = Power; + info->StateAction = StateAction; + return(1); +} diff --git a/libmednahawk/src/nes/boards/65.cpp b/libmednahawk/src/nes/boards/65.cpp new file mode 100644 index 0000000000..50e4c313dc --- /dev/null +++ b/libmednahawk/src/nes/boards/65.cpp @@ -0,0 +1,130 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 IRQa, CHRBanks[8], PRGBanks[3], Mirroring; +static uint16 IRQCount, IRQLatch; + +static void DoCHR(void) +{ + for(int x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static void DoPRG(void) +{ + for(int x = 0; x < 3; x++) + setprg8(0x8000 + x * 8192, PRGBanks[x]); +} + +static void DoMirroring(void) +{ + setmirror((Mirroring & 1) ^ 1); +} + +static void IREMIRQHook(int a) +{ + if(IRQa) + { + uint16 last = IRQCount; + IRQCount-=a; + if(IRQCount > last) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + IRQCount=0xFFFF; + } + } +} + +static DECLFW(Mapper65_write) +{ + A&= 0xF007; + + if(A >= 0xb000 && A <= 0xB007) + { + CHRBanks[A & 7] = V; + DoCHR(); + } + else switch(A) + { + case 0x8000:PRGBanks[0] = V; DoPRG(); break; + case 0x9001:Mirroring = V >> 7; DoMirroring();break; + case 0x9003:IRQa=V&0x80;X6502_IRQEnd(MDFN_IQEXT);break; + case 0x9004:IRQCount=IRQLatch;break; + case 0x9005: IRQLatch&=0x00FF; + IRQLatch|=V<<8; + break; + case 0x9006: IRQLatch&=0xFF00;IRQLatch|=V; + break; + case 0xa000:PRGBanks[1] = V; DoPRG();break; + case 0xC000:PRGBanks[2] = V; DoPRG();break; + } +} + +static void Power(CartInfo *info) +{ + int x; + + for(x = 0; x < 8; x++) + CHRBanks[x] = x; + + Mirroring = ((info->mirror & 1) ^ 1); + PRGBanks[0] = 0; + PRGBanks[1] = 1; + PRGBanks[2] = 0xFE; + DoPRG(); + DoCHR(); + DoMirroring(); + setprg8(0xe000, 0xFF); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), SFARRAY(PRGBanks, 3), + SFVAR(Mirroring), + SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(IRQa), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoCHR(); + DoPRG(); + DoMirroring(); + } + + return(ret); +} + +int Mapper65_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + MapIRQHook=IREMIRQHook; + SetWriteHandler(0x8000,0xffff,Mapper65_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/67.cpp b/libmednahawk/src/nes/boards/67.cpp new file mode 100644 index 0000000000..ccc9cb9f04 --- /dev/null +++ b/libmednahawk/src/nes/boards/67.cpp @@ -0,0 +1,136 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 CHRBanks[4], PRGBank16, Mirroring, suntoggle, IRQa; +static uint16 IRQCount; + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 4; x++) + setchr2(x * 2048, CHRBanks[x]); +} + +static void DoMirroring(void) +{ + switch(Mirroring & 3) + { + case 0: setmirror(MI_V); break; + case 1: setmirror(MI_H); break; + case 2: setmirror(MI_0); break; + case 3: setmirror(MI_1); break; + } +} + +static void DoPRG(void) +{ + setprg16(0x8000, PRGBank16); +} + +static DECLFW(Mapper67_write) +{ + A&=0xF800; + if((A&0x800) && A<=0xb800) + { + CHRBanks[(A - 0x8800) >> 12] = V; + DoCHR(); + } + else switch(A) + { + case 0xc800: + case 0xc000:if(!suntoggle) + { + IRQCount&=0xFF; + IRQCount|=V<<8; + } + else + { + IRQCount&=0xFF00; + IRQCount|=V; + } + suntoggle^=1; + break; + case 0xd800:suntoggle=0;IRQa=V&0x10;X6502_IRQEnd(MDFN_IQEXT);break; + + case 0xe800:Mirroring = V & 3; DoMirroring(); break; + case 0xf800:PRGBank16 = V; DoPRG(); break; + } +} + +static void SunIRQHook(int a) +{ + if(IRQa) + { + uint16 last = IRQCount; + IRQCount-=a; + if(last < IRQCount) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + } + } +} + +static void Power(CartInfo *info) +{ + Mirroring = 0; + IRQCount = IRQa = 0; + for(int x = 0; x < 4; x++) + CHRBanks[x] = x; + PRGBank16 = 0; + DoMirroring(); + DoPRG(); + DoCHR(); + + setprg16(0xc000, ~0); +} + + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 4), + SFVAR(PRGBank16), SFVAR(Mirroring), SFVAR(suntoggle), SFVAR(IRQa), SFVAR(IRQCount), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + Mirroring &= 3; + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +int Mapper67_Init(CartInfo *info) +{ + SetWriteHandler(0x8000, 0xffff, Mapper67_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + MapIRQHook=SunIRQHook; + info->Power = Power; + info->StateAction = StateAction; + + return(1); +} diff --git a/libmednahawk/src/nes/boards/68.cpp b/libmednahawk/src/nes/boards/68.cpp new file mode 100644 index 0000000000..6ab40ff740 --- /dev/null +++ b/libmednahawk/src/nes/boards/68.cpp @@ -0,0 +1,140 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 CHRBanks[4], Mirroring, NTBanks[2], PRGBank16; +static uint8 WRAM[8192]; + +static void DoCHR(void) +{ + if(!(Mirroring & 0x10)) + { + const int mir_tab[4] = {MI_V, MI_H, MI_0, MI_1}; + setmirror(mir_tab[Mirroring & 3]); + } + else + { + uint8 *b[2]; + b[0] = CHRptr[0] + (((NTBanks[0] | 0x80)&CHRmask1[0])<<10); + b[1] = CHRptr[0] + (((NTBanks[1] | 0x80) & CHRmask1[0]) << 10); + + const int zoom_tab[4][4] = + { + { 0, 1, 0, 1 }, + { 0, 0, 1, 1 }, + { 0, 0, 0, 0 }, + { 1, 1, 1, 1 }, + }; + for(int x = 0; x < 4; x++) + setntamem(b[zoom_tab[Mirroring & 3][x]], 0, x); + } + for(int x = 0; x < 4; x++) + setchr2(x << 11, CHRBanks[x]); +} + +static void DoPRG(void) +{ + setprg16(0x8000, PRGBank16); +} + +static DECLFW(Mapper68_write) +{ + A&=0xF000; + + if(A>=0x8000 && A<=0xB000) + { + CHRBanks[(A - 0x8000) >> 12] = V; + DoCHR(); + } + else switch(A) + { + case 0xc000:NTBanks[0] = V; + DoCHR(); + break; + + case 0xd000:NTBanks[1] = V; + DoCHR(); + break; + + case 0xe000: Mirroring = V; + DoCHR(); + break; + case 0xf000: PRGBank16 = V; DoPRG();break; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(Mirroring), SFARRAY(CHRBanks, 4), SFVAR(PRGBank16), SFARRAY(NTBanks, 2), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + } + + return(ret); +} + +static void Power(CartInfo *info) +{ + int x; + for(x = 0; x < 4; x++) + CHRBanks[x] = x; + PRGBank16 = 0; + Mirroring = 0; + for(x = 0; x < 2; x++) + NTBanks[x] = 0; + DoPRG(); + DoCHR(); + setprg16(0xc000, ~0); + + if(!info->battery) + memset(WRAM, 0, 8192); + + setprg16r(0x10, 0x6000, 0); +} + +int Mapper68_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper68_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + // external WRAM is apparently used by Nantettatte Baseball + SetReadHandler(0x6000, 0x7FFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} diff --git a/libmednahawk/src/nes/boards/70.cpp b/libmednahawk/src/nes/boards/70.cpp new file mode 100644 index 0000000000..905bd508de --- /dev/null +++ b/libmednahawk/src/nes/boards/70.cpp @@ -0,0 +1,47 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg16(0x8000, (latch >> 4) & 0x0f); + setchr8(latch & 0x0F); +} + +static DECLFW(Mapper70_write) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setprg16(0xc000, 0x0F); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper70_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x6000,0xffff,Mapper70_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/72.cpp b/libmednahawk/src/nes/boards/72.cpp new file mode 100644 index 0000000000..85818b9445 --- /dev/null +++ b/libmednahawk/src/nes/boards/72.cpp @@ -0,0 +1,78 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg16(0x8000, latch & 0xF); + setchr8(latch >> 4); +} +static DECLFW(Mapper72_write) +{ + if(V&0x80) + { + latch &= 0xF0; + latch |= V & 0xF; + } + + if(V&0x40) + { + latch &= 0x0F; + latch |= (V&0xF) << 4; + } + + if(V&0xC0) + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setprg16(0xc000, 0xF); + Sync(); +} + +int Mapper72_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x6000,0xffff,Mapper72_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/73.cpp b/libmednahawk/src/nes/boards/73.cpp new file mode 100644 index 0000000000..94c860f445 --- /dev/null +++ b/libmednahawk/src/nes/boards/73.cpp @@ -0,0 +1,107 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint16 IRQCount; +static uint8 IRQa, PRGBank16, WRAM[8192]; + +static void Sync(void) +{ + setprg16(0x8000, PRGBank16); +} + +static DECLFW(Mapper73_write) +{ + //if(A>=0xd000 && A<=0xdfff) + X6502_IRQEnd(MDFN_IQEXT); /* How are IRQs acknowledged on this chip? */ + switch(A&0xF000) + { + //default: printf("$%04x:$%02x\n",A,V);break; + case 0x8000:IRQCount&=0xFFF0;IRQCount|=(V&0xF);break; + case 0x9000:IRQCount&=0xFF0F;IRQCount|=(V&0xF)<<4;break; + case 0xa000:IRQCount&=0xF0FF;IRQCount|=(V&0xF)<<8;break; + case 0xb000:IRQCount&=0x0FFF;IRQCount|=(V&0xF)<<12;break; + case 0xc000:IRQa=V&2;break; + case 0xf000:PRGBank16 = V; Sync(); break; + } +} + +static void Mapper73IRQHook(int a) +{ + if(IRQa) + { + uint32 tmp = IRQCount; + tmp += a; + if(tmp >= 0xFFFF) + { + IRQCount&=0xFFFF; + IRQa=0; + X6502_IRQBegin(MDFN_IQEXT); + } + else + IRQCount = tmp; + } +} + +static void Power(CartInfo *info) +{ + IRQCount = IRQa = 0; + PRGBank16 = 0; + setprg16(0xc000, 0xFF); + setchr8(0); + setprg8r(0x10, 0x6000, 0); + Sync(); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(IRQCount), SFVAR(IRQa), SFVAR(PRGBank16), + SFARRAY(WRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} +int Mapper73_Init(CartInfo *info) +{ + info->StateAction = StateAction; + + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetWriteHandler(0x8000,0xffff,Mapper73_write); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetReadHandler(0x6000, 0xFFFF, CartBR); + info->Power = Power; + MapIRQHook=Mapper73IRQHook; + + if(info->battery) + { + memset(WRAM, 0xFF, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/75.cpp b/libmednahawk/src/nes/boards/75.cpp new file mode 100644 index 0000000000..a014f2fbb1 --- /dev/null +++ b/libmednahawk/src/nes/boards/75.cpp @@ -0,0 +1,100 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + + +static uint8 PRGBanks[3], map75ar[2], map75sel; + +static void DoPRG(void) +{ + setprg8(0x8000, PRGBanks[0]); + setprg8(0xa000, PRGBanks[1]); + setprg8(0xc000, PRGBanks[2]); +} + +static void DoCHR(void) +{ + setchr4(0x0000, ((map75sel & 2) << 3) | map75ar[0]); + setchr4(0x1000, ((map75sel & 4) << 2) | map75ar[1]); +} + +static void DoMirroring(void) +{ + setmirror((map75sel & 1) ? MI_H : MI_V); +} + +static DECLFW(Mapper75_write) +{ + switch(A&0xF000) + { + case 0x8000:PRGBanks[0] = V; DoPRG(); break; + case 0x9000:map75sel = V; DoCHR(); DoMirroring(); map75sel=V; break; + case 0xa000:PRGBanks[1] = V; DoPRG();break; + case 0xc000:PRGBanks[2] = V; DoPRG();break; + case 0xe000:V&=0xF;map75ar[0]=V;DoCHR();break; + case 0xf000:V&=0xF;map75ar[1]=V;DoCHR();break; + } +} +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRGBanks, 3), + SFARRAY(map75ar, 2), + SFVAR(map75sel), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +static void Power(CartInfo *info) +{ + PRGBanks[0] = 0; + PRGBanks[1] = 1; + PRGBanks[2] = 0xFE; + map75ar[0] = 0; + map75ar[1] = 1; + map75sel = 0; + DoPRG(); + DoCHR(); + DoMirroring(); + + setprg8(0xe000, 0xFF); +} + +int Mapper75_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper75_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/76.cpp b/libmednahawk/src/nes/boards/76.cpp new file mode 100644 index 0000000000..6f03b75f8f --- /dev/null +++ b/libmednahawk/src/nes/boards/76.cpp @@ -0,0 +1,118 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 cmd, CHRBanks[4], PRGBanks[2], Mirroring; + +static void DoCHR(void) +{ + for(int x = 0; x < 4; x++) + setchr2(x * 2048, CHRBanks[x]); +} + +static void DoPRG(void) +{ + if(cmd & 0x40) + { + setprg8(0xc000, PRGBanks[0]); + setprg8(0x8000, 0xFE); + } + else + { + setprg8(0x8000, PRGBanks[0]); + setprg8(0xc000, 0xFE); + } + setprg8(0xa000, PRGBanks[1]); +} + +static void DoMirroring(void) +{ + setmirror((Mirroring & 1) ? MI_H : MI_V); +} + +static DECLFW(Mapper76_write) +{ + switch(A&0xE001) + { + case 0x8000: cmd = V; DoPRG(); break; + case 0x8001: + switch(cmd&0x07) + { + case 2: CHRBanks[0] = V; DoCHR(); break; + case 3: CHRBanks[1] = V; DoCHR(); break; + case 4: CHRBanks[2] = V; DoCHR(); break; + case 5: CHRBanks[3] = V; DoCHR(); break; + case 6: PRGBanks[0] = V; DoPRG(); break; + case 7: PRGBanks[1] = V; DoPRG(); break; + } + break; + case 0xA000: Mirroring = V & 1; DoMirroring(); break; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(cmd), + SFVAR(Mirroring), + SFARRAY(CHRBanks, 4), + SFARRAY(PRGBanks, 2), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +static void Power(CartInfo *info) +{ + int x; + + for(x = 0; x < 4; x++) + CHRBanks[x] = x; + + PRGBanks[0] = 0; + PRGBanks[1] = 1; + Mirroring = 0; + cmd = 0; + DoPRG(); + DoCHR(); + DoMirroring(); + setprg16(0xc000, 0x7F); +} + + +int Mapper76_Init(CartInfo *info) +{ + SetWriteHandler(0x8000,0xffff,Mapper76_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + return(1); +} + diff --git a/libmednahawk/src/nes/boards/77.cpp b/libmednahawk/src/nes/boards/77.cpp new file mode 100644 index 0000000000..bb0a77b161 --- /dev/null +++ b/libmednahawk/src/nes/boards/77.cpp @@ -0,0 +1,68 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; +static uint8 CHRRAM[8192]; + +static void Sync(void) +{ + setprg32(0x8000, latch & 0x7); + setchr2(0x0000, (latch & 0xF0) >> 4); +} + +static DECLFW(Mapper77_write) +{ + latch = V; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFARRAY(CHRRAM, 8192), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); + for(int x = 2; x < 8; x++) + setchr1r(0x10, x * 0x400, x); + memset(CHRRAM, 0xFF, 8192); +} + +int Mapper77_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + + SetupCartCHRMapping(0x10, CHRRAM, 8192, 1); + SetWriteHandler(0x6000,0xffff,Mapper77_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} diff --git a/libmednahawk/src/nes/boards/78.cpp b/libmednahawk/src/nes/boards/78.cpp new file mode 100644 index 0000000000..4d46f76e0c --- /dev/null +++ b/libmednahawk/src/nes/boards/78.cpp @@ -0,0 +1,47 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg16(0x8000, latch & 0x7); + setmirror(((latch >> 3) & 1) ? MI_1 : MI_0); + setchr8(latch >> 4); +} + +static DECLFW(Mapper78_write) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setprg16(0xc000, 0x0F); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper78_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper78_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/8.cpp b/libmednahawk/src/nes/boards/8.cpp new file mode 100644 index 0000000000..ad002eedf3 --- /dev/null +++ b/libmednahawk/src/nes/boards/8.cpp @@ -0,0 +1,79 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 WRAM[8192], latch; + +static void Sync(void) +{ + setprg16(0x8000, latch >> 3); + setchr8(latch & 0x7); +} + +static DECLFW(Mapper8_write) +{ + latch = V; + Sync(); +} + +static void Reset(CartInfo *info) +{ + if(!info->battery) + memset(WRAM, 0x00, 8192); + latch = 0; + Sync(); + setprg8r(0x10, 0x6000, 0); + setprg16(0xc000, 0x1F); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 8192), + SFVAR(latch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper8_Init(CartInfo *info) +{ + latch = 0; + info->Power = info->Reset = Reset; + info->StateAction = StateAction; + if(info->battery) // Do FFE units initialize 6000-7fff RAM? + { + memset(WRAM, 0x00, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + Sync(); + SetWriteHandler(0x8000,0xFFFF,Mapper8_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/80.cpp b/libmednahawk/src/nes/boards/80.cpp new file mode 100644 index 0000000000..387004417b --- /dev/null +++ b/libmednahawk/src/nes/boards/80.cpp @@ -0,0 +1,170 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 Mirroring, PRGBanks[3], CHRBanks[6], WRAM[8192]; +static uint32 lastA; +static bool isfu; +static uint8 CCache[8]; +static int32 lastmc; + +static void Fudou_PPU(uint32 A) +{ + static uint8 z; + + if(A>=0x2000) return; + + A>>=10; + lastA=A; + + z=CCache[A]; + if(z != lastmc) + { + setmirror(z?MI_1:MI_0); + lastmc = z; + } +} + +static void mira() +{ + if(isfu) + { + int x; + CCache[0]=CCache[1]=CHRBanks[0]>>7; + CCache[2]=CCache[3]=CHRBanks[1]>>7; + + for(x=0;x<4;x++) + CCache[4+x]=CHRBanks[2+x]>>7; + + setmirror(CCache[lastA] ? MI_1 : MI_0); + } + else + setmirror(Mirroring & 1); +} +static void DoPRG(void) +{ + int x; + for(x = 0; x < 3; x++) + setprg8(0x8000 + x * 8192, PRGBanks[x]); +} +static void DoCHR(void) +{ + setchr2(0x0000, (CHRBanks[0] >> 1) & 0x3F); + setchr2(0x0800, (CHRBanks[1] >> 1) & 0x3F); + + for(int x = 0; x < 4; x++) + setchr1(0x1000 + x * 1024, CHRBanks[2 + x]); +} +static DECLFW(Mapper80_write) +{ + switch(A) + { + case 0x7ef0: CHRBanks[0]=V;DoCHR();mira();break; + case 0x7ef1: CHRBanks[1]=V;DoCHR();mira();break; + + case 0x7ef2: CHRBanks[2]=V;DoCHR();mira();break; + case 0x7ef3: CHRBanks[3]=V;DoCHR();mira();break; + case 0x7ef4: CHRBanks[4]=V;DoCHR();mira();break; + case 0x7ef5: CHRBanks[5]=V;DoCHR();mira();break; + case 0x7ef6: Mirroring = V & 1;mira();break; + case 0x7efa: + case 0x7efb: PRGBanks[0] = V; DoPRG();break; + case 0x7efd: + case 0x7efc: PRGBanks[1] = V; DoPRG();break; + case 0x7efe: + case 0x7eff: PRGBanks[2] = V; DoPRG();break; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(Mirroring), + SFARRAY(PRGBanks, 3), + SFVAR(lastA), + SFVAR(lastmc), + SFARRAY(CHRBanks, 6), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + DoPRG(); + DoCHR(); + mira(); + } + return(ret); +} + +static void Power(CartInfo *info) +{ + int x; + + for(x = 0; x < 6; x++) + CHRBanks[x] = 0; + + for(x = 0; x < 3; x++) + PRGBanks[x] = x; + + Mirroring = 0; + lastA = 0; + lastmc = -1; + + setprg8(0xe000, ~0); + DoPRG(); + DoCHR(); + mira(); + + memset(WRAM, 0xFF, 8192); + setprg8r(0x10, 0x6000, 0); +} + +int Mapper80_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + + SetWriteHandler(0x7ef0,0x7eff,Mapper80_write); + SetWriteHandler(0x6000, 0x7eef, CartBW); + SetWriteHandler(0x7f00, 0x7fff, CartBW); + SetReadHandler(0x6000, 0xFFFF, CartBR); + isfu = false; + SetupCartPRGMapping(0x10, WRAM, 8192, 1); // For Minelvation Saga, at least. Total amount of RAM on the actual board is unknown, though... + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + +int Mapper207_Init(CartInfo *info) +{ + Mapper80_Init(info); + isfu = true; + PPU_hook=Fudou_PPU; + + return(1); +} diff --git a/libmednahawk/src/nes/boards/82.cpp b/libmednahawk/src/nes/boards/82.cpp new file mode 100644 index 0000000000..1677acb8aa --- /dev/null +++ b/libmednahawk/src/nes/boards/82.cpp @@ -0,0 +1,115 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 ctrl, CHRBanks[6], PRGBanks[3], WRAM[8192]; + +static void DoPRG(void) +{ + int x; + for(x = 0; x < 3; x++) + setprg8(0x8000 + 8192 * x, PRGBanks[x]); +} + +static void DoCHR(void) +{ + int x; + + setmirror(ctrl & 1); + + for(x=0;x<2;x++) + setchr2((x<<11)|((ctrl&2)<<11),CHRBanks[x]>>1); + for(x=0;x<4;x++) + setchr1((x<<10) | (((ctrl&2)^2)<<11),CHRBanks[2+x]); +} + +static DECLFW(Mapper82_write) +{ + if(A>=0x7EF0 && A<=0x7EF5) + { + CHRBanks[A - 0x7EF0]=V; + DoCHR(); + } + else + switch(A) + { + case 0x7ef6:ctrl=V&3; + DoCHR(); + break; + case 0x7efa:V>>=2;PRGBanks[0]=V;DoPRG();break; + case 0x7efb:V>>=2;PRGBanks[1]=V;DoPRG();break; + case 0x7efc:V>>=2;PRGBanks[2]=V;DoPRG();break; + } +} + +static void Power(CartInfo *info) +{ + int x; + + for(x = 0; x < 3; x++) + PRGBanks[x] = x; + ctrl = 0; + for(x = 0; x < 6; x++) + CHRBanks[x] = 0; + + setprg8(0xe000, 0xFF >> 2); + DoPRG(); + DoCHR(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(ctrl), + SFARRAY(CHRBanks, 6), + SFARRAY(PRGBanks, 3), + SFARRAY(WRAM, 8192), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + DoPRG(); + DoCHR(); + } + + return(ret); +} + +int Mapper82_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + /* external WRAM might end at $73FF */ + SetWriteHandler(0x7ef0,0x7efc,Mapper82_write); + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + diff --git a/libmednahawk/src/nes/boards/8237.cpp b/libmednahawk/src/nes/boards/8237.cpp new file mode 100644 index 0000000000..b926e6cbe7 --- /dev/null +++ b/libmednahawk/src/nes/boards/8237.cpp @@ -0,0 +1,165 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 cmdin; +static uint8 cmd; +static uint8 regs[8]; +static uint8 master,chrm; + +static int32 IRQCount,IRQa; + +static void DoPRG(void) +{ + if(master&0x80) + { + if(master&0x20) + { + setprg32(0x8000,(master&0xF)>>1); + } + else + { + setprg16(0x8000,master&0xF); + setprg16(0xC000,master&0xF); + } + } + else + { + setprg8(0xA000,regs[4]); + setprg8(0xE000,~0); + if(cmd&0x40) + { + setprg8(0xC000,regs[2]); + setprg8(0x8000,~1); + } + else + { + setprg8(0x8000,regs[2]); + setprg8(0xC000,~1); + } + } +} + +static void DoCHR(void) +{ + uint32 base=(cmd&0x80)<<5; + int orie=(chrm&0x4)<<6; + + setchr2(0x0000^base,(orie|regs[0])>>1); //K + setchr2(0x0800^base,(orie|regs[3])>>1); //43 + + setchr1(0x1000,orie|regs[1]); + setchr1(0x1400,orie|regs[5]); + setchr1(0x1800,orie|regs[6]); + setchr1(0x1c00,orie|regs[7]); +} + +static DECLFW(UNL8237Write) +{ + switch(A&0xF000) + { + case 0xf000:IRQCount=V;break; + case 0xE000:X6502_IRQEnd(MDFN_IQEXT);break; + } +// if(A<0x8000) +// printf("$%04x:$%02x, %d\n",A&0xFFFF,V,scanline); + if(A==0x5000) + { + master=V; + DoPRG(); + DoCHR(); + } + else if(A==0x5001) + { + chrm=V; + DoCHR(); + } + else + switch(A&0xE000) + { + case 0x8000:setmirror(((V|(V>>7))&1)^1);break; + case 0xa000:cmd=V;cmdin=1;DoPRG();DoCHR();break; + case 0xC000:if(!cmdin) break; + regs[cmd&7]=V; + DoPRG(); + DoCHR(); + cmdin=0; + break; + } +} + +static void UNL8237Reset(CartInfo *info) +{ + int x; + + for(x=0;x<8;x++) regs[x]=0; + master=chrm=cmd=cmdin=IRQCount=IRQa=0; + DoPRG(); + DoCHR(); +} + +static void hooko(void) +{ + if(IRQCount) + { + IRQCount--; + if(!IRQCount) + { + X6502_IRQBegin(MDFN_IQEXT); + //printf("IRQ: %d\n",scanline); + } + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAYN(regs, 8, "REGS"), + SFVARN(IRQCount, "IRQC"), + SFVARN(IRQa, "IRQA"), + SFVARN(master, "MAST"), + SFVARN(chrm, "CHRM"), + SFVARN(cmd, "CMD"), + SFVARN(cmdin, "CMDI"), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + DoPRG(); + DoCHR(); + } + return(ret); +} + +int UNL8237_Init(CartInfo *info) +{ + GameHBIRQHook=hooko; + info->Power=UNL8237Reset; + info->StateAction = StateAction; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x5000,0xFFFF,UNL8237Write); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/86.cpp b/libmednahawk/src/nes/boards/86.cpp new file mode 100644 index 0000000000..1ecc539245 --- /dev/null +++ b/libmednahawk/src/nes/boards/86.cpp @@ -0,0 +1,65 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; +static void Sync(void) +{ + setchr8((latch&3)|((latch>>4)&4)); + setprg32(0x8000, (latch >> 4) & 3); +} + +static DECLFW(Mapper86_write) +{ + if(A>=0x6000 && A<=0x6fFF) + { + latch = V; + Sync(); + } +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper86_Init(CartInfo *info) +{ + info->StateAction = StateAction; + info->Power = Power; + SetWriteHandler(0x6000,0x6fff,Mapper86_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/87.cpp b/libmednahawk/src/nes/boards/87.cpp new file mode 100644 index 0000000000..0821f25216 --- /dev/null +++ b/libmednahawk/src/nes/boards/87.cpp @@ -0,0 +1,45 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setchr8(latch); +} + +static DECLFW(Mapper87_write) +{ + latch = V >> 1; + Sync(); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setprg32(0x8000, 0); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper87_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x6000,0x7fff,Mapper87_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/88.cpp b/libmednahawk/src/nes/boards/88.cpp new file mode 100644 index 0000000000..b32027532e --- /dev/null +++ b/libmednahawk/src/nes/boards/88.cpp @@ -0,0 +1,98 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static int mn; +static uint8 cmd, regs[8]; + +static void Sync(void) +{ + if(mn) + { + setmirror(((cmd >> 6) & 1) ? MI_1 : MI_0); + } + setchr2(0x0000, (regs[0] & 0x3E) >> 1); + setchr2(0x0800, (regs[1] & 0x3E) >> 1); + setchr1(0x1000, (regs[2] & 0x3F) | 0x40); + setchr1(0x1400, (regs[3] & 0x3F) | 0x40); + setchr1(0x1800, (regs[4] & 0x3F) | 0x40); + setchr1(0x1c00, (regs[5] & 0x3F) | 0x40); + setprg8(0x8000, regs[6]); + setprg8(0xa000, regs[7]); +} + +static DECLFW(Mapper88_write) +{ + switch(A&0x8001) + { + case 0x8000:cmd = V; + Sync(); + break; + case 0x8001:regs[cmd & 0x7] = V;Sync();break; + } +} + +static void Power(CartInfo *info) +{ + cmd = 0; + int x; + for(x = 0; x < 8; x++) + regs[x] = ~0; + + setprg16(0xc000, ~0); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(cmd), + SFARRAY(regs, 8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper88_Init(CartInfo *info) +{ + mn=0; + SetWriteHandler(0x8000,0xffff,Mapper88_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + return(1); +} + +int Mapper154_Init(CartInfo *info) +{ + mn=1; + SetWriteHandler(0x8000,0xffff,Mapper88_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->Power = Power; + info->StateAction = StateAction; + + return(1); +} diff --git a/libmednahawk/src/nes/boards/89.cpp b/libmednahawk/src/nes/boards/89.cpp new file mode 100644 index 0000000000..3520927342 --- /dev/null +++ b/libmednahawk/src/nes/boards/89.cpp @@ -0,0 +1,66 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setchr8((latch&7)|((latch>>4)&8)); + setprg16(0x8000,(latch>>4)&7); + setmirror(((latch >> 3) & 1) ? MI_1 : MI_0); +} + +static DECLFW(Mapper89_write) +{ + latch = V; + Sync(); +} +static void Power(CartInfo *info) +{ + latch = 0; + setprg16(0xc000, 0x7); + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper89_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper89_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/90.cpp b/libmednahawk/src/nes/boards/90.cpp new file mode 100644 index 0000000000..f748680f13 --- /dev/null +++ b/libmednahawk/src/nes/boards/90.cpp @@ -0,0 +1,358 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static int is209; + +static uint8 IRQMode; // from $c001 +static uint8 IRQPre; // from $c004 +static uint8 IRQPreSize; // from $c007 +static uint8 IRQCount; // from $c005 +static uint8 IRQXOR; // Loaded from $C006 +static uint8 IRQa; // $c002, $c003, and $c000 + +static uint8 mul[2]; +static uint8 regie; + +static uint8 tkcom[4]; +static uint8 prgb[4]; +static uint8 chrlow[8]; +static uint8 chrhigh[8]; + +static uint16 names[4]; +static uint8 tekker; + +static DECLFR(tekread) +{ + //MDFN_printf("READ READ READ: $%04x, $%04x\n",A,X.PC); + switch(A) + { + case 0x5000:return(tekker); + case 0x5800:return(mul[0]*mul[1]); + case 0x5801:return((mul[0]*mul[1])>>8); + case 0x5803:return(regie); + default:break; + } + return(X.DB); +} + +static void mira(void) +{ + if(tkcom[0]&0x20 && is209) + { + int x; + if(tkcom[0] & 0x40) // Name tables are ROM-only + { + for(x=0;x<4;x++) + setntamem(CHRptr[0]+(((names[x])&CHRmask1[0])<<10), 0, x); + } + else // Name tables can be RAM or ROM. + { + for(x=0;x<4;x++) + { + if((tkcom[2]&0x80) == (names[x]&0x80)) // RAM selected. + setntamem(NTARAM + ((names[x]&0x1)<<10),1,x); + else + setntamem(CHRptr[0]+(((names[x])&CHRmask1[0])<<10), 0, x); + } + } + } + else + { + switch(tkcom[1]&3){ + case 0:setmirror(MI_V);break; + case 1:setmirror(MI_H);break; + case 2:setmirror(MI_0);break; + case 3:setmirror(MI_1);break; + } + } +} + +static void tekprom(void) +{ + switch(tkcom[0]&3) + { + case 1: // 16 KB + setprg16(0x8000,prgb[0]); + setprg16(0xC000,prgb[2]); + break; + case 2: //2 = 8 KB ?? + if(tkcom[0]&0x4) + { + setprg8(0x8000,prgb[0]); + setprg8(0xa000,prgb[1]); + setprg8(0xc000,prgb[2]); + setprg8(0xe000,prgb[3]); + } + else + { + if(tkcom[0]&0x80) + setprg8(0x6000,prgb[3]); + setprg8(0x8000,prgb[0]); + setprg8(0xa000,prgb[1]); + setprg8(0xc000,prgb[2]); + setprg8(0xe000,~0); + } + break; + case 0: + case 3: + setprg8(0x8000,prgb[0]); + setprg8(0xa000,prgb[1]); + setprg8(0xc000,prgb[2]); + setprg8(0xe000,prgb[3]); + break; + } +} + +static void tekvrom(void) +{ + int x; + + switch(tkcom[0]&0x18) + { + case 0x00: // 8KB + setchr8(chrlow[0]|(chrhigh[0]<<8)); + break; + case 0x08: // 4KB + for(x=0;x<8;x+=4) + setchr4(x<<10,chrlow[x]|(chrhigh[x]<<8)); + break; + case 0x10: // 2KB + for(x=0;x<8;x+=2) + setchr2(x<<10,chrlow[x]|(chrhigh[x]<<8)); + break; + case 0x18: // 1KB + for(x=0;x<8;x++) + setchr1(x<<10,(chrlow[x]|(chrhigh[x]<<8))); + break; + } +} + +static DECLFW(Mapper90_write) +{ + //printf("$%04x:$%02x\n",A,V); + + if(A==0x5800) mul[0]=V; + else if(A==0x5801) mul[1]=V; + else if(A==0x5803) regie=V; + + + //if(A>=0xc000 && A<=0xc007) + // MDFN_printf("$%04x:$%02x $%04x, %d, %d\n",A,V,X.PC,scanline,timestamp); + + A&=0xF007; + if(A>=0x8000 && A<=0x8003) + { + prgb[A&3]=V; + tekprom(); + } + else if(A>=0x9000 && A<=0x9007) + { + chrlow[A&7]=V; + tekvrom(); + } + else if(A>=0xa000 && A<=0xa007) + { + chrhigh[A&7]=V; + tekvrom(); + } + else if(A>=0xb000 && A<=0xb007) + { + //printf("$%04x:$%02x\n",A,V); + if(A&4) + { + names[A&3]&=0x00FF; + names[A&3]|=V<<8; + } + else + { + names[A&3]&=0xFF00; + names[A&3]|=V; + } + mira(); + } + else if(A>=0xd000 && A<=0xdfff) + { + tkcom[A&3]=V; + tekprom(); + tekvrom(); + mira(); + } + else switch(A) + { + case 0xc000: IRQa=V&1;if(!(V&1)) X6502_IRQEnd(MDFN_IQEXT);break; + case 0xc002: IRQa=0;X6502_IRQEnd(MDFN_IQEXT);break; + case 0xc003: IRQa=1;break; + + case 0xc001: IRQMode=V;break; + case 0xc004: IRQPre=V^IRQXOR;break; + case 0xc005: IRQCount=V^IRQXOR;break; + case 0xc006: IRQXOR=V;break; + case 0xc007: IRQPreSize=V;break; + } + +} + +static void CCL(void) +{ + if((IRQMode>>6) == 1) // Count Up + { + IRQCount++; + if((IRQCount == 0) && IRQa) + X6502_IRQBegin(MDFN_IQEXT); + } + else if((IRQMode>>6) == 2) // Count down + { + IRQCount--; + if((IRQCount == 0xFF) && IRQa) + X6502_IRQBegin(MDFN_IQEXT); + } +} + +static void ClockCounter(void) +{ + uint8 premask; + + if(IRQMode & 0x4) premask = 0x7; + else premask = 0xFF; + + if((IRQMode>>6) == 1) // Count up + { + IRQPre++; + + if((IRQPre & premask) == 0) + CCL(); + } + else if((IRQMode>>6) == 2) // Count down + { + IRQPre--; + //printf("%d\n",IRQPre); + if((IRQPre & premask) == premask) + CCL(); + } +} + +static void SLWrap(void) +{ + int x; + for(x=0;x<8;x++) ClockCounter(); // 8 PPU A10 0->1 transitions per scanline(usually) +} +/* +static uint32 lasta; +static void YARGH(uint32 A) +{ + if((A&0x1000) && !(lasta & 0x1000)) + ClockCounter(); + + lasta = A; +} +*/ + +static void togglie(CartInfo *info) +{ + tekker^=0xFF; +} + +static void M90Power(CartInfo *info) +{ + mul[0]=mul[1]=regie=0xFF; + + tkcom[0]=tkcom[1]=tkcom[2]=tkcom[3]=0xFF; + + memset(prgb,0xff,sizeof(prgb)); + memset(chrlow,0xff,sizeof(chrlow)); + memset(chrhigh,0xff,sizeof(chrhigh)); + memset(names,0x00,sizeof(names)); + + tekker=0; + + prgb[0]=0xFF; + prgb[1]=0xFF; + prgb[2]=0xFF; + prgb[3]=0xFF; + tekprom(); + tekvrom(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[]={ + SFVARN(IRQCount, "IRQC"), + SFVARN(IRQa, "IRQa"), + SFARRAYN(mul, 2, "MUL"), + SFVARN(regie, "REGI"), + SFARRAYN(tkcom, 4, "TKCO"), + SFARRAYN(prgb, 4, "PRGB"), + SFARRAYN(chrlow, 4, "CHRL"), + SFARRAYN(chrhigh, 8, "CHRH"), + SFVARN(names[0], "NMS0"), + SFVARN(names[1], "NMS1"), + SFVARN(names[2], "NMS2"), + SFVARN(names[3], "NMS3"), + SFVARN(tekker, "TEKR"), + SFEND +}; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + tekprom(); + tekvrom(); + mira(); + } + + return(ret); +} + +int Mapper90_Init(CartInfo *info) +{ + is209=0; + info->Reset=togglie; + info->Power=M90Power; + //PPU_hook = YARGH; + info->StateAction = StateAction; + GameHBIRQHook2 = SLWrap; + + SetWriteHandler(0x5000,0xffff,Mapper90_write); + SetReadHandler(0x5000,0x5fff,tekread); + + SetReadHandler(0x6000,0xffff,CartBR); + + return(1); +} + +int Mapper209_Init(CartInfo *info) +{ + is209=1; + info->Reset=togglie; + info->Power=M90Power; + //PPU_hook = YARGH; + GameHBIRQHook2 = SLWrap; + info->StateAction = StateAction; + + SetWriteHandler(0x5000,0xffff,Mapper90_write); + SetReadHandler(0x5000,0x5fff,tekread); + + SetReadHandler(0x6000,0xffff,CartBR); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/92.cpp b/libmednahawk/src/nes/boards/92.cpp new file mode 100644 index 0000000000..ef1476226e --- /dev/null +++ b/libmednahawk/src/nes/boards/92.cpp @@ -0,0 +1,80 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +/* Original code provided by LULU */ +static uint8 PRGBank16, CHRBank8; + +static void Sync(void) +{ + setprg16(0xc000, PRGBank16); + setchr8(CHRBank8); +} + +static DECLFW(Mapper92_write) +{ + uint8 reg=(A&0xF0)>>4; + uint8 bank=A&0xF; + + if(A>=0x9000) + { + if(reg==0xD) PRGBank16 = bank; + else if(reg==0xE) CHRBank8 = bank; + } + else + { + if(reg==0xB) PRGBank16 = bank; + else if(reg==0x7) CHRBank8 = bank; + } + Sync(); +} + +static void Power(CartInfo *info) +{ + PRGBank16 = 0xFF; + CHRBank8 = 0; + Sync(); + setprg16(0x8000, 0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(PRGBank16), SFVAR(CHRBank8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + + return(ret); +} + +int Mapper92_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x8000,0xFFFF,Mapper92_write); + return(1); +} diff --git a/libmednahawk/src/nes/boards/93.cpp b/libmednahawk/src/nes/boards/93.cpp new file mode 100644 index 0000000000..c7257aa462 --- /dev/null +++ b/libmednahawk/src/nes/boards/93.cpp @@ -0,0 +1,48 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setmirror((latch & 1) ? MI_H : MI_V); + setchr8(latch & 0xF); + setprg16(0x8000, (latch >> 4)); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setchr8(0); + setprg16(0xc000, 0xF); + Sync(); +} + + +static DECLFW(Write) +{ + latch = V; + Sync(); +} + +int Mapper93_Init(CartInfo *info) +{ + SetWriteHandler(0x8000, 0xFFFF, Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->StateAction = StateAction; + info->Power = Power; + return(1); +} diff --git a/libmednahawk/src/nes/boards/94.cpp b/libmednahawk/src/nes/boards/94.cpp new file mode 100644 index 0000000000..16fb4ac3e8 --- /dev/null +++ b/libmednahawk/src/nes/boards/94.cpp @@ -0,0 +1,46 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg16(0x8000, latch >> 2); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + latch = 0; + setchr8(0); + setprg16(0xc000, 0x3F); + Sync(); +} + + +static DECLFW(Write) +{ + latch = V & CartBR(A); + Sync(); +} + +int Mapper94_Init(CartInfo *info) +{ + SetWriteHandler(0x8000, 0xFFFF, Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->StateAction = StateAction; + info->Power = Power; + return(1); +} diff --git a/libmednahawk/src/nes/boards/95.cpp b/libmednahawk/src/nes/boards/95.cpp new file mode 100644 index 0000000000..5a6756393f --- /dev/null +++ b/libmednahawk/src/nes/boards/95.cpp @@ -0,0 +1,146 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 lastA; +static uint8 DRegs[8]; +static uint8 cmd; +static uint8 MirCache[8]; +static int32 lastmc; + +static void dragonbust_ppu(uint32 A) +{ + static uint8 z; + + if(A>=0x2000) return; + + A>>=10; + + lastA=A; + + z=MirCache[A]; + if(z!=lastmc) + { + setmirror(z?MI_1:MI_0); + lastmc = z; + } +} + +static void toot(void) +{ + int x; + + MirCache[0]=MirCache[1]=(DRegs[0]>>4)&1; + MirCache[2]=MirCache[3]=(DRegs[1]>>4)&1; + + for(x=0;x<4;x++) + MirCache[4+x]=(DRegs[2+x]>>5)&1; + setmirror(MirCache[lastA]?MI_1:MI_0); +} + +static DECLFW(Mapper95_write) +{ + switch(A&0xF001) + { + + case 0x8000: + cmd = V; + break; + + case 0x8001: + switch(cmd&0x07) + { + case 0: DRegs[0]=(V&0x3F)>>1;toot();V>>=1;setchr2(0x0000,V&0x1F);break; + case 1: DRegs[1]=(V&0x3F)>>1;toot();V>>=1;setchr2(0x0800,V&0x1F);break; + case 2: DRegs[2]=V&0x3F;toot();setchr1(0x1000,V&0x1F); break; + case 3: DRegs[3]=V&0x3F;toot();setchr1(0x1400,V&0x1F); break; + case 4: DRegs[4]=V&0x3F;toot();setchr1(0x1800,V&0x1F); break; + case 5: DRegs[5]=V&0x3F;toot();setchr1(0x1C00,V&0x1F); break; + case 6: DRegs[6]=V&0x3F; + setprg8(0x8000,V); + break; + case 7: DRegs[7]=V&0x3F; + setprg8(0xA000,V); + break; + } + break; + } +} + +static void DBSync() +{ + int x; + + setchr2(0x0000,DRegs[0]); + setchr2(0x0800,DRegs[1]); + + for(x=0;x<4;x++) + setchr1(0x1000+x*0x400,DRegs[2+x]); + + setprg8(0x8000,DRegs[6]); + setprg8(0xa000,DRegs[7]); + toot(); +} + +static void DBPower(CartInfo *info) +{ + lastmc = -1; + + memset(DRegs,0x3F,8); + DRegs[0]=DRegs[1]=0x1F; + + DBSync(); + + setprg8(0xc000,0x3E); + setprg8(0xe000,0x3F); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[]={ + SFARRAYN(DRegs, 8, "DREG"), + SFVARN(cmd, "CMD"), + SFVARN(lastA, "LAST"), + SFVAR(lastmc), + SFEND + }; + + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + DBSync(); + + return(ret); +} + +int Mapper95_Init(CartInfo *info) +{ + info->Power=DBPower; + info->StateAction = StateAction; + PPU_hook = dragonbust_ppu; + + SetReadHandler(0x8000,0xffff,CartBR); + SetWriteHandler(0x8000,0xffff,Mapper95_write); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/96.cpp b/libmednahawk/src/nes/boards/96.cpp new file mode 100644 index 0000000000..8a943cb461 --- /dev/null +++ b/libmednahawk/src/nes/boards/96.cpp @@ -0,0 +1,81 @@ +#include "mapinc.h" + +/* I might want to add some code to the mapper 96 PPU hook function + to not change CHR banks if the attribute table is being accessed, + if I make emulation a little more accurate in the future. +*/ +static uint8 latche; +static uint8 M96LA; +static uint8 *M96_CHR = NULL; + +static DECLFW(Mapper96_write) +{ + latche=V; + setprg32(0x8000,V&3); + setchr4r(0x10,0x0000,(latche&4)|M96LA); + setchr4r(0x10,0x1000,(latche&4)|3); +} + +static void M96Hook(uint32 A) +{ + if((A&0x3000)!=0x2000) return; + //if((A&0x3ff)>=0x3c0) return; + M96LA=(A>>8)&3; + setchr4r(0x10,0x0000,(latche&4)|M96LA); +} + +static void M96Sync(void) +{ + setprg32(0x8000,latche&3); + setchr4r(0x10,0x0000,(latche&4)|M96LA); + setchr4r(0x10,0x1000,(latche&4)|3); +} + +static int M96_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[]= + { + SFVARN(latche, "LATC"), + SFVARN(M96LA, "LAVA"), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + M96Sync(); + + return(ret); +} + +static void Mapper96_Close(void) +{ + if(M96_CHR) + free(M96_CHR); + M96_CHR = NULL; +} + +static void Mapper96_Reset(CartInfo *info) +{ + latche = 0; + M96LA = 0; + M96Sync(); +} + +int Mapper96_Init(CartInfo *info) +{ + if(!(M96_CHR = (uint8 *)malloc(32768))) + return(0); + + SetWriteHandler(0x8000, 0xffff, Mapper96_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + PPU_hook = M96Hook; + info->StateAction = M96_StateAction; + info->Close = Mapper96_Close; + info->Power = Mapper96_Reset; + SetupCartCHRMapping(0x10, M96_CHR, 32768, 1); + latche=M96LA=0; + setmirror(MI_0); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/97.cpp b/libmednahawk/src/nes/boards/97.cpp new file mode 100644 index 0000000000..50ef894661 --- /dev/null +++ b/libmednahawk/src/nes/boards/97.cpp @@ -0,0 +1,80 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; +static void Sync(void) +{ + setprg16(0xC000, latch & 0xF); + + /* +switch(V>>6) + { + case 0:break; + case 1:MIRROR_SET2(0);break; + case 2:MIRROR_SET2(1);break; + case 3:break; + } + */ +} + +static DECLFW(Mapper97_write) +{ + latch = V; +switch(V>>6) + { + case 0:break; + case 1:setmirror(MI_H);break; + case 2:setmirror(MI_V);break; + case 3:break; + } + + Sync(); +} + +static void Power(CartInfo *info) +{ + setprg16(0x8000, 0xF); + setchr8(0); + latch = 0xFF; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { SFVAR(latch), SFEND }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper97_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetWriteHandler(0x8000,0xffff,Mapper97_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/99.cpp b/libmednahawk/src/nes/boards/99.cpp new file mode 100644 index 0000000000..b60531f8be --- /dev/null +++ b/libmednahawk/src/nes/boards/99.cpp @@ -0,0 +1,67 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setchr8((latch >> 2) & 1); + setprg8(0x8000, latch & 0x4); +} + +static DECLFW(Write) +{ + latch = V; + Sync(); +} + +static void Power(CartInfo *info) +{ + setprg32(0x8000, 0); + + latch = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int Mapper99_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x4016, 0x4016, Write); // Warning: relies on kludge in input.cpp + + return(1); +} diff --git a/libmednahawk/src/nes/boards/Makefile.am.inc b/libmednahawk/src/nes/boards/Makefile.am.inc new file mode 100644 index 0000000000..bc90c59c03 --- /dev/null +++ b/libmednahawk/src/nes/boards/Makefile.am.inc @@ -0,0 +1,8 @@ +mednafen_SOURCES += boards/8237.cpp boards/h2288.cpp boards/simple.cpp boards/super24.cpp boards/mmc2and4.cpp boards/vrc6.cpp boards/emu2413.cpp boards/vrc7.cpp boards/96.cpp boards/208.cpp boards/187.cpp boards/95.cpp boards/fme7.cpp boards/mmc5.cpp boards/mmc3.cpp boards/mmc1.cpp boards/tengen.cpp boards/90.cpp boards/deirom.cpp boards/n106.cpp boards/maxicart.cpp +mednafen_SOURCES += boards/112.cpp boards/113.cpp boards/114.cpp boards/117.cpp boards/22.cpp boards/23.cpp boards/25.cpp boards/67.cpp boards/68.cpp boards/16.cpp boards/97.cpp boards/99.cpp boards/151.cpp boards/180.cpp boards/182.cpp boards/184.cpp +mednafen_SOURCES += boards/88.cpp boards/89.cpp boards/92.cpp boards/86.cpp boards/82.cpp boards/80.cpp boards/18.cpp boards/21.cpp boards/228.cpp boards/234.cpp boards/232.cpp +mednafen_SOURCES += boards/42.cpp boards/ffe.cpp boards/65.cpp boards/nina06.cpp boards/73.cpp boards/32.cpp boards/33.cpp boards/41.cpp boards/46.cpp boards/72.cpp boards/75.cpp boards/76.cpp boards/77.cpp boards/colordreams.cpp +mednafen_SOURCES += boards/140.cpp boards/93.cpp boards/94.cpp boards/malee.cpp boards/156.cpp boards/supervision.cpp boards/novel.cpp boards/242.cpp boards/246.cpp boards/248.cpp boards/15.cpp boards/8.cpp boards/193.cpp boards/189.cpp +mednafen_SOURCES += boards/244.cpp boards/sachen.cpp boards/107.cpp boards/51.cpp boards/152.cpp boards/70.cpp boards/185.cpp boards/78.cpp boards/87.cpp boards/34.cpp boards/222.cpp boards/codemasters.cpp boards/38.cpp + +mednafen_SOURCES += boards/240.cpp boards/241.cpp boards/163.cpp diff --git a/libmednahawk/src/nes/boards/codemasters.cpp b/libmednahawk/src/nes/boards/codemasters.cpp new file mode 100644 index 0000000000..33f1d26652 --- /dev/null +++ b/libmednahawk/src/nes/boards/codemasters.cpp @@ -0,0 +1,94 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 PRGBank16, Mirroring; +static int isbf9097; + +static void Sync(void) +{ + setprg16(0x8000, PRGBank16 & 0xF); + if(isbf9097) + setmirror(Mirroring?MI_1:MI_0); +} + +static DECLFW(WriteHi) +{ + PRGBank16 = V; + Sync(); +} + +static DECLFW(WriteLo) +{ + Mirroring = (V >> 4) & 1; + Sync(); +} + +static void Power(CartInfo *info) +{ + Mirroring = 0; + PRGBank16 = 0; + Sync(); + setchr8(0); + setprg16(0xc000, 0xF); + setprg8r(0x10, 0x6000, 0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(PRGBank16), + SFVAR(Mirroring), // Only for firehawk, though + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + Sync(); + + return(ret); +} + +int Mapper71_Init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetWriteHandler(0xC000, 0xFFFF, WriteHi); + + isbf9097 = 0; + + return(1); +} + +int BIC62_Init(CartInfo *info) +{ + Mapper71_Init(info); + + SetWriteHandler(0x8000, 0xBFFF, WriteLo); + isbf9097 = 1; + PRGmask16[0] &= 0x7; + return(1); +} + diff --git a/libmednahawk/src/nes/boards/colordreams.cpp b/libmednahawk/src/nes/boards/colordreams.cpp new file mode 100644 index 0000000000..e0cec443e7 --- /dev/null +++ b/libmednahawk/src/nes/boards/colordreams.cpp @@ -0,0 +1,60 @@ +#include "mapinc.h" + +static uint8 latch; + +static void Sync(void) +{ + setprg32(0x8000, latch & 3); + setchr8((latch >> 4) & 0xF); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); +} + + +static DECLFW(Write) +{ + latch = V & CartBR(A); + Sync(); +} + +static DECLFW(Write50282) +{ + latch = (V & 0xFE & CartBR(A)) | (CartBR(A) & 1); + Sync(); +} + +int Mapper11_Init(CartInfo *info) +{ + SetWriteHandler(0x8000, 0xFFFF, Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->StateAction = StateAction; + info->Power = Power; + return(1); +} + +int AGCI50282_Init(CartInfo *info) +{ + SetWriteHandler(0x8000, 0xFFFF, Write50282); + SetReadHandler(0x8000, 0xFFFF, CartBR); + info->StateAction = StateAction; + info->Power = Power; + return(1); +} diff --git a/libmednahawk/src/nes/boards/deirom.cpp b/libmednahawk/src/nes/boards/deirom.cpp new file mode 100644 index 0000000000..aafff26413 --- /dev/null +++ b/libmednahawk/src/nes/boards/deirom.cpp @@ -0,0 +1,89 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 cmd; +static uint8 DRegs[8]; + +static void Sync(void) +{ + int x; + + setchr2(0x0000,DRegs[0]); + setchr2(0x0800,DRegs[1]); + for(x=0;x<4;x++) + setchr1(0x1000+(x<<10),DRegs[2+x]); + setprg8(0x8000,DRegs[6]); + setprg8(0xa000,DRegs[7]); +} + +static DECLFW(DEIWrite) +{ + switch(A&0x8001) + { + case 0x8000:cmd=V&0x07;break; + case 0x8001:if(cmd<=0x05) V&=0x3F; + else V&=0x0F; + if(cmd<=0x01) V>>=1; + DRegs[cmd&0x07]=V; + Sync(); + break; + } +} + +static void DEIPower(CartInfo *info) +{ + setprg8(0xc000,0xE); + setprg8(0xe000,0xF); + cmd=0; + memset(DRegs,0,8); + Sync(); +} + + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[]= + { + SFVAR(cmd), + SFARRAY(DRegs, 8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + return(ret); +} + +int DEIROM_Init(CartInfo *info) +{ + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x8000,0xFFFF,DEIWrite); + info->Power=DEIPower; + info->StateAction = StateAction; + return(1); +} + +int Mapper206_Init(CartInfo *info) +{ + return(DEIROM_Init(info)); +} diff --git a/libmednahawk/src/nes/boards/emu2413.cpp b/libmednahawk/src/nes/boards/emu2413.cpp new file mode 100644 index 0000000000..6b8b21b8b7 --- /dev/null +++ b/libmednahawk/src/nes/boards/emu2413.cpp @@ -0,0 +1,1138 @@ +/* +Permission is granted to anyone to use this software for any purpose, +including commercial applications. To alter this software and redistribute it freely, +if the origin of this software is not misrepresented. +*/ + +/* This software has been heavily modified for VRC7. To get a stock YM2413 emulator, download + MSXplug. +*/ + +/*********************************************************************************** + + emu2413.c -- YM2413 emulator written by Mitsutaka Okazaki 2001 + + 2001 01-08 : Version 0.10 -- 1st version. + 2001 01-15 : Version 0.20 -- semi-public version. + 2001 01-16 : Version 0.30 -- 1st public version. + 2001 01-17 : Version 0.31 -- Fixed bassdrum problem. + : Version 0.32 -- LPF implemented. + 2001 01-18 : Version 0.33 -- Fixed the drum problem, refine the mix-down method. + -- Fixed the LFO bug. + 2001 01-24 : Version 0.35 -- Fixed the drum problem, + support undocumented EG behavior. + 2001 02-02 : Version 0.38 -- Improved the performance. + Fixed the hi-hat and cymbal model. + Fixed the default percussive datas. + Noise reduction. + Fixed the feedback problem. + 2001 03-03 : Version 0.39 -- Fixed some drum bugs. + Improved the performance. + 2001 03-04 : Version 0.40 -- Improved the feedback. + Change the default table size. + Clock and Rate can be changed during play. + 2001 06-24 : Version 0.50 -- Improved the hi-hat and the cymbal tone. + Added VRC7 patch (OPLL_reset_patch is changed). + Fixed OPLL_reset() bug. + Added OPLL_setMask, OPLL_getMask and OPLL_toggleMask. + Added OPLL_writeIO. + 2001 09-28 : Version 0.51 -- Removed the noise table. + 2002 01-28 : Version 0.52 -- Added Stereo mode. + 2002 02-07 : Version 0.53 -- Fixed some drum bugs. + 2002 02-20 : Version 0.54 -- Added the best quality mode. + 2002 03-02 : Version 0.55 -- Removed OPLL_init & OPLL_close. + 2002 05-30 : Version 0.60 -- Fixed HH&CYM generator and all voice datas. + + 2004 01-24 : Modified by xodnizel to remove code not needed for the VRC7, among other things. + + References: + fmopl.c -- 1999,2000 written by Tatsuyuki Satoh (MAME development). + fmopl.c(fixed) -- (C) 2002 Jarek Burczynski. + s_opl.c -- 2001 written by Mamiya (NEZplug development). + fmgen.cpp -- 1999,2000 written by cisc. + fmpac.ill -- 2000 created by NARUTO. + MSX-Datapack + YMU757 data sheet + YM2143 data sheet + +**************************************************************************************/ +#include +#include +#include +#include +#include "emu2413.h" + +static const unsigned char default_inst[15][8] = { + #include "vrc7tone.h" +}; + +#define EG2DB(d) ((d)*(e_int32)(EG_STEP/DB_STEP)) +#define TL2EG(d) ((d)*(e_int32)(TL_STEP/EG_STEP)) +#define SL2EG(d) ((d)*(e_int32)(SL_STEP/EG_STEP)) + +#define DB_POS(x) (e_uint32)((x)/DB_STEP) +#define DB_NEG(x) (e_uint32)(DB_MUTE+DB_MUTE+(x)/DB_STEP) + +/* Bits for liner value */ +#define DB2LIN_AMP_BITS 11 +#define SLOT_AMP_BITS (DB2LIN_AMP_BITS) + +/* Bits for envelope phase incremental counter */ +#define EG_DP_BITS 22 +#define EG_DP_WIDTH (1<>(b)) + +/* Leave the lower b bit(s). */ +#define LOWBITS(c,b) ((c)&((1<<(b))-1)) + +/* Expand x which is s bits to d bits. */ +#define EXPAND_BITS(x,s,d) ((x)<<((d)-(s))) + +/* Expand x which is s bits to d bits and fill expanded bits '1' */ +#define EXPAND_BITS_X(x,s,d) (((x)<<((d)-(s)))|((1<<((d)-(s)))-1)) + +#define MOD(o,x) (&(o)->slot[(x)<<1]) +#define CAR(o,x) (&(o)->slot[((x)<<1)|1]) + +#define BIT(s,b) (((s)>>(b))&1) + +/* Definition of envelope mode */ +enum +{ SETTLE, ATTACK, DECAY, SUSHOLD, SUSTINE, RELEASE, FINISH }; + +/*************************************************** + + Create tables + +****************************************************/ +INLINE static e_int32 Min (e_int32 i, e_int32 j) +{ + if (i < j) + return i; + else + return j; +} + +/* Table for AR to LogCurve. */ +static void makeAdjustTable (OPLL * opll) +{ + e_int32 i; + + opll->AR_ADJUST_TABLE[0] = (1 << EG_BITS); + for (i = 1; i < 128; i++) + opll->AR_ADJUST_TABLE[i] = (e_uint16) ((double) (1 << EG_BITS) - 1 - (1 << EG_BITS) * log (i) / log (128)); +} + + +/* Table for dB(0 -- (1<DB2LIN_TABLE[i] = (e_int16) ((double) ((1 << DB2LIN_AMP_BITS) - 1) * pow (10, -(double) i * DB_STEP / 20)); + if (i >= DB_MUTE) opll->DB2LIN_TABLE[i] = 0; + //printf("%d\n",DB2LIN_TABLE[i]); + opll->DB2LIN_TABLE[i + DB_MUTE + DB_MUTE] = (e_int16) (-opll->DB2LIN_TABLE[i]); + } +} + +/* Liner(+0.0 - +1.0) to dB((1<fullsintable[i] = (e_uint32) lin2db (sin (2.0 * PI * i / PG_WIDTH) ); + } + + for (i = 0; i < PG_WIDTH / 4; i++) + { + opll->fullsintable[PG_WIDTH / 2 - 1 - i] = opll->fullsintable[i]; + } + + for (i = 0; i < PG_WIDTH / 2; i++) + { + opll->fullsintable[PG_WIDTH / 2 + i] = (e_uint32) (DB_MUTE + DB_MUTE + opll->fullsintable[i]); + } + + for (i = 0; i < PG_WIDTH / 2; i++) + opll->halfsintable[i] = opll->fullsintable[i]; + for (i = PG_WIDTH / 2; i < PG_WIDTH; i++) + opll->halfsintable[i] = opll->fullsintable[0]; +} + +/* Table for Pitch Modulator */ +static void makePmTable (OPLL * opll) +{ + e_int32 i; + + for (i = 0; i < PM_PG_WIDTH; i++) + opll->pmtable[i] = (e_int32) ((double) PM_AMP * pow (2, (double) PM_DEPTH * sin (2.0 * PI * i / PM_PG_WIDTH) / 1200)); +} + +/* Table for Amp Modulator */ +static void makeAmTable (OPLL * opll) +{ + e_int32 i; + + for (i = 0; i < AM_PG_WIDTH; i++) + opll->amtable[i] = (e_int32) ((double) AM_DEPTH / 2 / DB_STEP * (1.0 + sin (2.0 * PI * i / PM_PG_WIDTH))); +} + +/* Phase increment counter table */ +static void makeDphaseTable (OPLL * opll) +{ + e_uint32 fnum, block, ML; + e_uint32 mltable[16] = + { 1, 1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2, 8 * 2, 9 * 2, 10 * 2, 10 * 2, 12 * 2, 12 * 2, 15 * 2, 15 * 2 }; + + for (fnum = 0; fnum < 512; fnum++) + for (block = 0; block < 8; block++) + for (ML = 0; ML < 16; ML++) + opll->dphaseTable[fnum][block][ML] = (((fnum * mltable[ML]) << block) >> (20 - DP_BITS)); +} + +static void makeTllTable (OPLL *opll) +{ +#define dB2(x) ((x)*2) + + static const double kltable[16] = { + dB2 (0.000), dB2 (9.000), dB2 (12.000), dB2 (13.875), dB2 (15.000), dB2 (16.125), dB2 (16.875), dB2 (17.625), + dB2 (18.000), dB2 (18.750), dB2 (19.125), dB2 (19.500), dB2 (19.875), dB2 (20.250), dB2 (20.625), dB2 (21.000) + }; + + e_int32 tmp; + e_int32 fnum, block, TL, KL; + + for (fnum = 0; fnum < 16; fnum++) + for (block = 0; block < 8; block++) + for (TL = 0; TL < 64; TL++) + for (KL = 0; KL < 4; KL++) + { + if (KL == 0) + { + opll->tllTable[fnum][block][TL][KL] = TL2EG (TL); + } + else + { + tmp = (e_int32) (kltable[fnum] - dB2 (3.000) * (7 - block)); + if (tmp <= 0) + opll->tllTable[fnum][block][TL][KL] = TL2EG (TL); + else + opll->tllTable[fnum][block][TL][KL] = (e_uint32) ((tmp >> (3 - KL)) / EG_STEP) + TL2EG (TL); + } + } +} + +#ifdef USE_SPEC_ENV_SPEED +static const double attacktime[16][4] = { + {0, 0, 0, 0}, + {1730.15, 1400.60, 1153.43, 988.66}, + {865.08, 700.30, 576.72, 494.33}, + {432.54, 350.15, 288.36, 247.16}, + {216.27, 175.07, 144.18, 123.58}, + {108.13, 87.54, 72.09, 61.79}, + {54.07, 43.77, 36.04, 30.90}, + {27.03, 21.88, 18.02, 15.45}, + {13.52, 10.94, 9.01, 7.72}, + {6.76, 5.47, 4.51, 3.86}, + {3.38, 2.74, 2.25, 1.93}, + {1.69, 1.37, 1.13, 0.97}, + {0.84, 0.70, 0.60, 0.54}, + {0.50, 0.42, 0.34, 0.30}, + {0.28, 0.22, 0.18, 0.14}, + {0.00, 0.00, 0.00, 0.00} +}; + +static const double decaytime[16][4] = { + {0, 0, 0, 0}, + {20926.60, 16807.20, 14006.00, 12028.60}, + {10463.30, 8403.58, 7002.98, 6014.32}, + {5231.64, 4201.79, 3501.49, 3007.16}, + {2615.82, 2100.89, 1750.75, 1503.58}, + {1307.91, 1050.45, 875.37, 751.79}, + {653.95, 525.22, 437.69, 375.90}, + {326.98, 262.61, 218.84, 187.95}, + {163.49, 131.31, 109.42, 93.97}, + {81.74, 65.65, 54.71, 46.99}, + {40.87, 32.83, 27.36, 23.49}, + {20.44, 16.41, 13.68, 11.75}, + {10.22, 8.21, 6.84, 5.87}, + {5.11, 4.10, 3.42, 2.94}, + {2.55, 2.05, 1.71, 1.47}, + {1.27, 1.27, 1.27, 1.27} +}; +#endif + +/* Rate Table for Attack */ +static void makeDphaseARTable(OPLL * opll) +{ + e_int32 AR, Rks, RM, RL; +#ifdef USE_SPEC_ENV_SPEED + e_uint32 attacktable[16][4]; + + for (RM = 0; RM < 16; RM++) + for (RL = 0; RL < 4; RL++) + { + if (RM == 0) + attacktable[RM][RL] = 0; + else if (RM == 15) + attacktable[RM][RL] = EG_DP_WIDTH; + else + attacktable[RM][RL] = (e_uint32) ((double) (1 << EG_DP_BITS) / (attacktime[RM][RL] * 3579545 / 72000)); + + } +#endif + + for (AR = 0; AR < 16; AR++) + for (Rks = 0; Rks < 16; Rks++) + { + RM = AR + (Rks >> 2); + RL = Rks & 3; + if (RM > 15) + RM = 15; + switch (AR) + { + case 0: + opll->dphaseARTable[AR][Rks] = 0; + break; + case 15: + opll->dphaseARTable[AR][Rks] = 0;/*EG_DP_WIDTH;*/ + break; + default: +#ifdef USE_SPEC_ENV_SPEED + opll->dphaseARTable[AR][Rks] = (attacktable[RM][RL]); +#else + opll->dphaseARTable[AR][Rks] = ((3 * (RL + 4) << (RM + 1))); +#endif + break; + } + } +} + +/* Rate Table for Decay and Release */ +static void makeDphaseDRTable (OPLL * opll) +{ + e_int32 DR, Rks, RM, RL; + +#ifdef USE_SPEC_ENV_SPEED + e_uint32 decaytable[16][4]; + + for (RM = 0; RM < 16; RM++) + for (RL = 0; RL < 4; RL++) + if (RM == 0) + decaytable[RM][RL] = 0; + else + decaytable[RM][RL] = (e_uint32) ((double) (1 << EG_DP_BITS) / (decaytime[RM][RL] * 3579545 / 72000)); +#endif + + for (DR = 0; DR < 16; DR++) + for (Rks = 0; Rks < 16; Rks++) + { + RM = DR + (Rks >> 2); + RL = Rks & 3; + if (RM > 15) + RM = 15; + switch (DR) + { + case 0: + opll->dphaseDRTable[DR][Rks] = 0; + break; + default: +#ifdef USE_SPEC_ENV_SPEED + opll->dphaseDRTable[DR][Rks] = (decaytable[RM][RL]); +#else + opll->dphaseDRTable[DR][Rks] = ((RL + 4) << (RM - 1)); +#endif + break; + } + } +} + +static void makeRksTable (OPLL *opll) +{ + + e_int32 fnum8, block, KR; + + for (fnum8 = 0; fnum8 < 2; fnum8++) + for (block = 0; block < 8; block++) + for (KR = 0; KR < 2; KR++) + { + if (KR != 0) + opll->rksTable[fnum8][block][KR] = (block << 1) + fnum8; + else + opll->rksTable[fnum8][block][KR] = block >> 1; + } +} + +/************************************************************ + + Calc Parameters + +************************************************************/ + +INLINE static e_uint32 calc_eg_dphase (OPLL *opll, OPLL_SLOT * slot) +{ + + switch (slot->eg_mode) + { + case ATTACK: + return opll->dphaseARTable[slot->patch.AR][slot->rks]; + + case DECAY: + return opll->dphaseDRTable[slot->patch.DR][slot->rks]; + + case SUSHOLD: + return 0; + + case SUSTINE: + return opll->dphaseDRTable[slot->patch.RR][slot->rks]; + + case RELEASE: + if (slot->sustine) + return opll->dphaseDRTable[5][slot->rks]; + else if (slot->patch.EG) + return opll->dphaseDRTable[slot->patch.RR][slot->rks]; + else + return opll->dphaseDRTable[7][slot->rks]; + + case FINISH: + return 0; + + default: + return 0; + } +} + +/************************************************************* + + OPLL internal interfaces + +*************************************************************/ + +#define UPDATE_PG(S) (S)->dphase = opll->dphaseTable[(S)->fnum][(S)->block][(S)->patch.ML] +#define UPDATE_TLL(S)\ +(((S)->type==0)?\ +((S)->tll = opll->tllTable[((S)->fnum)>>5][(S)->block][(S)->patch.TL][(S)->patch.KL]):\ +((S)->tll = opll->tllTable[((S)->fnum)>>5][(S)->block][(S)->volume][(S)->patch.KL])) +#define UPDATE_RKS(S) (S)->rks = opll->rksTable[((S)->fnum)>>8][(S)->block][(S)->patch.KR] +#define UPDATE_WF(S) (S)->sintbl = opll->waveform[(S)->patch.WF] +#define UPDATE_EG(S) (S)->eg_dphase = calc_eg_dphase(opll,S) +#define UPDATE_ALL(S)\ + UPDATE_PG(S);\ + UPDATE_TLL(S);\ + UPDATE_RKS(S);\ + UPDATE_WF(S); \ + UPDATE_EG(S) /* EG should be updated last. */ + + +/* Slot key on */ +INLINE static void slotOn (OPLL_SLOT * slot) +{ + slot->eg_mode = ATTACK; + slot->eg_phase = 0; + slot->phase = 0; +} + +/* Slot key on without reseting the phase */ +INLINE static void slotOn2 (OPLL_SLOT * slot) +{ + slot->eg_mode = ATTACK; + slot->eg_phase = 0; +} + +/* Slot key off */ +INLINE static void slotOff (OPLL *opll, OPLL_SLOT * slot) +{ + if (slot->eg_mode == ATTACK) + slot->eg_phase = EXPAND_BITS (opll->AR_ADJUST_TABLE[HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS)], EG_BITS, EG_DP_BITS); + slot->eg_mode = RELEASE; +} + +/* Channel key on */ +INLINE static void keyOn (OPLL * opll, e_int32 i) +{ + if (!opll->slot_on_flag[i * 2]) + slotOn (MOD(opll,i)); + if (!opll->slot_on_flag[i * 2 + 1]) + slotOn (CAR(opll,i)); + opll->key_status[i] = 1; +} + +/* Channel key off */ +INLINE static void keyOff (OPLL * opll, e_int32 i) +{ + if (opll->slot_on_flag[i * 2 + 1]) + slotOff (opll, CAR(opll,i)); + opll->key_status[i] = 0; +} + +/* Set sustine parameter */ +INLINE static void setSustine (OPLL * opll, e_int32 c, e_int32 sustine) +{ + CAR(opll,c)->sustine = sustine; + if (MOD(opll,c)->type) + MOD(opll,c)->sustine = sustine; +} + +/* Volume : 6bit ( Volume register << 2 ) */ +INLINE static void setVolume (OPLL * opll, e_int32 c, e_int32 volume) +{ + CAR(opll,c)->volume = volume; +} + +INLINE static void setSlotVolume (OPLL_SLOT * slot, e_int32 volume) +{ + slot->volume = volume; +} + +/* Set F-Number ( fnum : 9bit ) */ +INLINE static void setFnumber (OPLL * opll, e_int32 c, e_int32 fnum) +{ + CAR(opll,c)->fnum = fnum; + MOD(opll,c)->fnum = fnum; +} + +/* Set Block data (block : 3bit ) */ +INLINE static void setBlock (OPLL * opll, e_int32 c, e_int32 block) +{ + CAR(opll,c)->block = block; + MOD(opll,c)->block = block; +} + +INLINE static void update_key_status (OPLL * opll) +{ + int ch; + + for (ch = 0; ch < 6; ch++) + opll->slot_on_flag[ch * 2] = opll->slot_on_flag[ch * 2 + 1] = (opll->HiFreq[ch]) & 0x10; +} + +/*********************************************************** + + Initializing + +***********************************************************/ + +static void OPLL_SLOT_reset (OPLL *opll, OPLL_SLOT * slot, int type) +{ + slot->type = type; + slot->sintbl = opll->waveform[0]; + slot->phase = 0; + slot->dphase = 0; + slot->output[0] = 0; + slot->output[1] = 0; + slot->feedback = 0; + slot->eg_mode = SETTLE; + slot->eg_phase = EG_DP_WIDTH; + slot->eg_dphase = 0; + slot->rks = 0; + slot->tll = 0; + slot->sustine = 0; + slot->fnum = 0; + slot->block = 0; + slot->volume = 0; + slot->pgout = 0; + slot->egout = 0; +} + +static void internal_refresh (OPLL *opll) +{ + makeDphaseTable (opll); + makeDphaseARTable (opll); + makeDphaseDRTable (opll); + opll->pm_dphase = (e_uint32) (PM_SPEED * PM_DP_WIDTH / (opll->clk / 72)); + opll->am_dphase = (e_uint32) (AM_SPEED * AM_DP_WIDTH / (opll->clk / 72)); +} + +static void maketables (OPLL *opll, e_uint32 c) +{ + opll->clk = c; + makePmTable (opll); + makeAmTable (opll); + makeDB2LinTable (opll); + makeAdjustTable (opll); + makeTllTable (opll); + makeRksTable (opll); + makeSinTable (opll); + //makeDefaultPatch (); + internal_refresh (opll); +} + +OPLL *OPLL_new (e_uint32 clk) +{ + OPLL *opll; + + opll = (OPLL *) calloc (sizeof (OPLL), 1); + if (opll == NULL) + return NULL; + maketables(opll,clk); + + opll->waveform[0]=opll->fullsintable; + opll->waveform[1]=opll->halfsintable; + + opll->mask = 0; + + OPLL_reset (opll); + + return opll; +} + + +void OPLL_delete (OPLL * opll) +{ + free (opll); +} + +/* Reset whole of OPLL except patch datas. */ +void OPLL_reset (OPLL * opll) +{ + e_int32 i; + + if (!opll) + return; + + opll->adr = 0; + opll->out = 0; + + opll->pm_phase = 0; + opll->am_phase = 0; + + opll->mask = 0; + + for (i = 0; i < 12; i++) + OPLL_SLOT_reset(opll, &opll->slot[i], i%2); + + for (i = 0; i < 6; i++) + { + opll->key_status[i] = 0; + //setPatch (opll, i, 0); + } + + for (i = 0; i < 0x40; i++) + OPLL_writeReg (opll, i, 0); +} + +/* Force Refresh (When external program changes some parameters). */ +void OPLL_forceRefresh (OPLL * opll) +{ + e_int32 i; + + if (opll == NULL) + return; + + for (i = 0; i < 12; i++) + { + UPDATE_PG (&opll->slot[i]); + UPDATE_RKS (&opll->slot[i]); + UPDATE_TLL (&opll->slot[i]); + UPDATE_WF (&opll->slot[i]); + UPDATE_EG (&opll->slot[i]); + } +} + +void OPLL_set_rate (OPLL * opll, e_uint32 r) +{ + internal_refresh (opll); +} + +/********************************************************* + + Generate wave data + +*********************************************************/ +/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 2PI). */ +#if ( SLOT_AMP_BITS - PG_BITS ) > 0 +#define wave2_2pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS )) +#else +#define wave2_2pi(e) ( (e) << ( PG_BITS - SLOT_AMP_BITS )) +#endif + +/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 4PI). */ +#if ( SLOT_AMP_BITS - PG_BITS - 1 ) == 0 +#define wave2_4pi(e) (e) +#elif ( SLOT_AMP_BITS - PG_BITS - 1 ) > 0 +#define wave2_4pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 1 )) +#else +#define wave2_4pi(e) ( (e) << ( 1 + PG_BITS - SLOT_AMP_BITS )) +#endif + +/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 8PI). */ +#if ( SLOT_AMP_BITS - PG_BITS - 2 ) == 0 +#define wave2_8pi(e) (e) +#elif ( SLOT_AMP_BITS - PG_BITS - 2 ) > 0 +#define wave2_8pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 2 )) +#else +#define wave2_8pi(e) ( (e) << ( 2 + PG_BITS - SLOT_AMP_BITS )) +#endif + + + +/* Update AM, PM unit */ +static void update_ampm (OPLL * opll) +{ + opll->pm_phase = (opll->pm_phase + opll->pm_dphase) & (PM_DP_WIDTH - 1); + opll->am_phase = (opll->am_phase + opll->am_dphase) & (AM_DP_WIDTH - 1); + opll->lfo_am = opll->amtable[HIGHBITS (opll->am_phase, AM_DP_BITS - AM_PG_BITS)]; + opll->lfo_pm = opll->pmtable[HIGHBITS (opll->pm_phase, PM_DP_BITS - PM_PG_BITS)]; +} + +/* PG */ +INLINE static void +calc_phase (OPLL_SLOT * slot, e_int32 lfo) +{ + if (slot->patch.PM) + slot->phase += (slot->dphase * lfo) >> PM_AMP_BITS; + else + slot->phase += slot->dphase; + + slot->phase &= (DP_WIDTH - 1); + + slot->pgout = HIGHBITS (slot->phase, DP_BASE_BITS); +} + +/* EG */ +static void calc_envelope(OPLL *opll, OPLL_SLOT * slot, e_int32 lfo) +{ +#define S2E(x) (SL2EG((e_int32)(x/SL_STEP))<<(EG_DP_BITS-EG_BITS)) + + static const e_uint32 SL[16] = { + S2E (0.0), S2E (3.0), S2E (6.0), S2E (9.0), S2E (12.0), S2E (15.0), S2E (18.0), S2E (21.0), + S2E (24.0), S2E (27.0), S2E (30.0), S2E (33.0), S2E (36.0), S2E (39.0), S2E (42.0), S2E (48.0) + }; + + e_uint32 egout; + + switch (slot->eg_mode) + { + + case ATTACK: + egout = opll->AR_ADJUST_TABLE[HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS)]; + slot->eg_phase += slot->eg_dphase; + if((EG_DP_WIDTH & slot->eg_phase)||(slot->patch.AR==15)) + { + egout = 0; + slot->eg_phase = 0; + slot->eg_mode = DECAY; + UPDATE_EG (slot); + } + break; + + case DECAY: + egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); + slot->eg_phase += slot->eg_dphase; + if (slot->eg_phase >= SL[slot->patch.SL]) + { + if (slot->patch.EG) + { + slot->eg_phase = SL[slot->patch.SL]; + slot->eg_mode = SUSHOLD; + UPDATE_EG (slot); + } + else + { + slot->eg_phase = SL[slot->patch.SL]; + slot->eg_mode = SUSTINE; + UPDATE_EG (slot); + } + } + break; + + case SUSHOLD: + egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); + if (slot->patch.EG == 0) + { + slot->eg_mode = SUSTINE; + UPDATE_EG (slot); + } + break; + + case SUSTINE: + case RELEASE: + egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); + slot->eg_phase += slot->eg_dphase; + if (egout >= (1 << EG_BITS)) + { + slot->eg_mode = FINISH; + egout = (1 << EG_BITS) - 1; + } + break; + + case FINISH: + egout = (1 << EG_BITS) - 1; + break; + + default: + egout = (1 << EG_BITS) - 1; + break; + } + + if (slot->patch.AM) + egout = EG2DB (egout + slot->tll) + lfo; + else + egout = EG2DB (egout + slot->tll); + + if (egout >= DB_MUTE) + egout = DB_MUTE - 1; + + slot->egout = egout; +} + +/* CARRIOR */ +INLINE static e_int32 calc_slot_car(OPLL *opll, OPLL_SLOT * slot, e_int32 fm) +{ + slot->output[1] = slot->output[0]; + + if (slot->egout >= (DB_MUTE - 1)) + { + slot->output[0] = 0; + } + else + { + slot->output[0] = opll->DB2LIN_TABLE[slot->sintbl[(slot->pgout+wave2_8pi(fm))&(PG_WIDTH-1)] + slot->egout]; + } + + return (slot->output[1] + slot->output[0]) >> 1; +} + +/* MODULATOR */ +INLINE static e_int32 calc_slot_mod(OPLL *opll, OPLL_SLOT * slot) +{ + e_int32 fm; + + slot->output[1] = slot->output[0]; + + if (slot->egout >= (DB_MUTE - 1)) + { + slot->output[0] = 0; + } + else if (slot->patch.FB != 0) + { + fm = wave2_4pi (slot->feedback) >> (7 - slot->patch.FB); + slot->output[0] = opll->DB2LIN_TABLE[slot->sintbl[(slot->pgout + fm)&(PG_WIDTH-1)] + slot->egout]; + } + else + { + slot->output[0] = opll->DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout]; + } + + slot->feedback = (slot->output[1] + slot->output[0]) >> 1; + + return slot->feedback; + +} + +static INLINE e_int16 calc (OPLL * opll) +{ + e_int32 inst = 0, out = 0; + e_int32 i; + + update_ampm (opll); + + for (i = 0; i < 12; i++) + { + calc_phase(&opll->slot[i],opll->lfo_pm); + calc_envelope(opll, &opll->slot[i],opll->lfo_am); + } + + for (i = 0; i < 6; i++) + if (!(opll->mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH)) + inst += calc_slot_car (opll, CAR(opll,i), calc_slot_mod(opll,MOD(opll,i))); + + out = inst; + return (e_int16) out; +} + +e_int16 OPLL_calc (OPLL * opll) +{ + return calc (opll); +} + +e_uint32 +OPLL_setMask (OPLL * opll, e_uint32 mask) +{ + e_uint32 ret; + + if (opll) + { + ret = opll->mask; + opll->mask = mask; + return ret; + } + else + return 0; +} + +e_uint32 +OPLL_toggleMask (OPLL * opll, e_uint32 mask) +{ + e_uint32 ret; + + if (opll) + { + ret = opll->mask; + opll->mask ^= mask; + return ret; + } + else + return 0; +} + +/**************************************************** + + I/O Ctrl + +*****************************************************/ + +static void setInstrument(OPLL * opll, e_uint i, e_uint inst) +{ + const e_uint8 *src; + OPLL_PATCH *modp, *carp; + + opll->patch_number[i]=inst; + + if(inst) + src=default_inst[inst-1]; + else + src=opll->CustInst; + + modp=&MOD(opll,i)->patch; + carp=&CAR(opll,i)->patch; + + modp->AM=(src[0]>>7)&1; + modp->PM=(src[0]>>6)&1; + modp->EG=(src[0]>>5)&1; + modp->KR=(src[0]>>4)&1; + modp->ML=(src[0]&0xF); + + carp->AM=(src[1]>>7)&1; + carp->PM=(src[1]>>6)&1; + carp->EG=(src[1]>>5)&1; + carp->KR=(src[1]>>4)&1; + carp->ML=(src[1]&0xF); + + modp->KL=(src[2]>>6)&3; + modp->TL=(src[2]&0x3F); + + carp->KL = (src[3] >> 6) & 3; + carp->WF = (src[3] >> 4) & 1; + + modp->WF = (src[3] >> 3) & 1; + + modp->FB = (src[3]) & 7; + + modp->AR = (src[4]>>4)&0xF; + modp->DR = (src[4]&0xF); + + carp->AR = (src[5]>>4)&0xF; + carp->DR = (src[5]&0xF); + + modp->SL = (src[6]>>4)&0xF; + modp->RR = (src[6]&0xF); + + carp->SL = (src[7]>>4)&0xF; + carp->RR = (src[7]&0xF); +} + + +void OPLL_writeReg (OPLL * opll, e_uint32 reg, e_uint32 data) +{ + + e_int32 i, v, ch; + + data = data & 0xff; + reg = reg & 0x3f; + + switch (reg) + { + case 0x00: + opll->CustInst[0]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_PG (MOD(opll,i)); + UPDATE_RKS (MOD(opll,i)); + UPDATE_EG (MOD(opll,i)); + } + } + break; + + case 0x01: + opll->CustInst[1]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_PG (CAR(opll,i)); + UPDATE_RKS (CAR(opll,i)); + UPDATE_EG (CAR(opll,i)); + } + } + break; + + case 0x02: + opll->CustInst[2]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_TLL(MOD(opll,i)); + } + } + break; + + case 0x03: + opll->CustInst[3]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_WF(MOD(opll,i)); + UPDATE_WF(CAR(opll,i)); + } + } + break; + + case 0x04: + opll->CustInst[4]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_EG (MOD(opll,i)); + } + } + break; + + case 0x05: + opll->CustInst[5]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_EG(CAR(opll,i)); + } + } + break; + + case 0x06: + opll->CustInst[6]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_EG (MOD(opll,i)); + } + } + break; + + case 0x07: + opll->CustInst[7]=data; + for (i = 0; i < 6; i++) + { + if (opll->patch_number[i] == 0) + { + setInstrument(opll, i, 0); + UPDATE_EG (CAR(opll,i)); + } + } + break; + + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + ch = reg - 0x10; + opll->LowFreq[ch]=data; + setFnumber (opll, ch, data + ((opll->HiFreq[ch] & 1) << 8)); + UPDATE_ALL (MOD(opll,ch)); + UPDATE_ALL (CAR(opll,ch)); + break; + + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + ch = reg - 0x20; + opll->HiFreq[ch]=data; + + setFnumber (opll, ch, ((data & 1) << 8) + opll->LowFreq[ch]); + setBlock (opll, ch, (data >> 1) & 7); + setSustine (opll, ch, (data >> 5) & 1); + if (data & 0x10) + keyOn (opll, ch); + else + keyOff (opll, ch); + UPDATE_ALL (MOD(opll,ch)); + UPDATE_ALL (CAR(opll,ch)); + update_key_status (opll); + break; + + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + opll->InstVol[reg-0x30]=data; + i = (data >> 4) & 15; + v = data & 15; + setInstrument(opll, reg-0x30, i); + setVolume (opll, reg - 0x30, v << 2); + UPDATE_ALL (MOD(opll,reg - 0x30)); + UPDATE_ALL (CAR(opll,reg - 0x30)); + break; + + default: + break; + + } +} + +void OPLL_writeIO (OPLL * opll, e_uint32 adr, e_uint32 val) +{ + if (adr & 1) + OPLL_writeReg (opll, opll->adr, val); + else + opll->adr = val; +} diff --git a/libmednahawk/src/nes/boards/emu2413.h b/libmednahawk/src/nes/boards/emu2413.h new file mode 100644 index 0000000000..257c278eab --- /dev/null +++ b/libmednahawk/src/nes/boards/emu2413.h @@ -0,0 +1,207 @@ +#ifndef _EMU2413_H_ +#define _EMU2413_H_ + +#include "emutypes.h" + +/* Size of Sintable ( 8 -- 18 can be used. 9 recommended.)*/ +#define PG_BITS 9 +#define PG_WIDTH (1< last) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + IRQCount=0; + } + } + else + { + uint16 last = IRQCount; + IRQCount+=a; + if(IRQCount < last) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + IRQCount=0; + } + } + } +} + +static void DoMirroring(void) +{ + if(!MirSelect) + setmirror(((MirRegs[0] >> 4) & 1) ? MI_1 : MI_0); + else + setmirror(((MirRegs[1] >> 4) & 1) ? MI_H : MI_V); +} + +static void DoPRG(void) +{ + if(!ModeSelect) + { + for(int x = 0; x < 4; x++) + setprg8(0x8000 + x * 8192, PRGBanks[x]); + } + else + { + setprg16(0x8000, (latch >> 2) & 0x3F); + setprg16(0xc000, 0x7); + } +} + +static void DoCHR(void) +{ + if(!ModeSelect) + { + for(int x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); + } + else + { + setchr8(latch & 3); + } +} + +static DECLFW(Mapper6_write) +{ + if(A >= 0x4500 && A <= 0x4503) + printf("%04x: %02x\n", A, V); + if(A < 0x8000) + { + switch(A) + { + default: printf("Oops: %04x : %02x\n", A, V);break; + case 0x42FE: MirSelect = 0; MirRegs[0] = V; DoMirroring(); break; + case 0x42FF: MirSelect = 1; MirRegs[1] = V; DoMirroring(); break; + case 0x4501: IRQa = V & 1; X6502_IRQEnd(MDFN_IQEXT); break; + case 0x4502: IRQCount &= 0xFF00; IRQCount |= V; X6502_IRQEnd(MDFN_IQEXT); break; + case 0x4503: IRQCount &= 0x00FF; IRQCount |= V << 8; IRQa = 1; X6502_IRQEnd(MDFN_IQEXT); break; + case 0x4504: PRGBanks[0] = V; DoPRG(); break; + case 0x4505: PRGBanks[1] = V; DoPRG(); break; + case 0x4506: PRGBanks[2] = V; DoPRG(); break; + case 0x4507: PRGBanks[3] = V; DoPRG(); break; + case 0x4510: CHRBanks[0] = V; DoCHR(); break; + case 0x4511: CHRBanks[1] = V; DoCHR(); break; + case 0x4512: CHRBanks[2] = V; DoCHR(); break; + case 0x4513: CHRBanks[3] = V; DoCHR(); break; + case 0x4514: CHRBanks[4] = V; DoCHR(); break; + case 0x4515: CHRBanks[5] = V; DoCHR(); break; + case 0x4516: CHRBanks[6] = V; DoCHR(); break; + case 0x4517: CHRBanks[7] = V; DoCHR(); break; + } + } + else + { + latch = V; + DoPRG(); + DoCHR(); + } +} + +static void Reset(CartInfo *info) +{ + int x; + + if(!info->battery) + memset(WRAM, 0x00, 8192); + + latch = 0; + MirRegs[0] = 0x00; + MirRegs[1] = 0x00 | (((info->mirror & 1) << 4) ^ 0x10); + MirSelect = 1; + DoMirroring(); + + for(x = 0; x < 8; x++) + CHRBanks[x] = x; + PRGBanks[0] = 0; + PRGBanks[1] = 1; + PRGBanks[2] = 0xFE; + PRGBanks[3] = 0xFF; + DoPRG(); + DoCHR(); + + setprg8r(0x10, 0x6000, 0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 8192), + SFARRAY(CHRBanks, 8), + SFARRAY(PRGBanks, 4), + SFARRAY(MirRegs, 2), + SFVAR(MirSelect), + SFVAR(latch), + SFVAR(IRQCount), + SFVAR(IRQa), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + DoCHR(); + DoPRG(); + DoMirroring(); + } + + return(ret); +} + +int Mapper6_Init(CartInfo *info) +{ + ModeSelect = 1; + MapIRQHook = FFEIRQHook; + info->Power = info->Reset = Reset; + + SetWriteHandler(0x4020,0x5fff,Mapper6_write); + SetWriteHandler(0x8000,0xffff,Mapper6_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + + if(info->battery) + { + memset(WRAM, 0x00, 8192); + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + + info->StateAction = StateAction; + return(1); +} + +int Mapper17_Init(CartInfo *info) +{ + Mapper6_Init(info); + ModeSelect = 0; + return(1); +} diff --git a/libmednahawk/src/nes/boards/fme7.cpp b/libmednahawk/src/nes/boards/fme7.cpp new file mode 100644 index 0000000000..ad0f30a694 --- /dev/null +++ b/libmednahawk/src/nes/boards/fme7.cpp @@ -0,0 +1,289 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" +#include "../nsf.h" +#include + +static uint8 WRAM[8192]; +static void AYSoundHQ(void); +static void DoAYSQHQ(int x); + +static uint16 IRQCount; +static uint8 IRQa; +static uint8 PRGRegs[3]; +static uint8 Mirroring; + +static uint8 reg_select; +static uint8 wram_control; +static int32 amp_lut[0x10]; +static uint8 sr[0x10]; +static uint8 sr_index; + +static int32 vcount[3]; +static uint32 dcount[3]; +static uint32 CAYBC[3]; + + +static DECLFW(SUN5BWRAM) +{ + if((wram_control&0xC0)==0xC0) + (WRAM-0x6000)[A]=V; +} + +static DECLFR(SUN5AWRAM) +{ + if((wram_control&0xC0)==0x40) + return X.DB; + return CartBR(A); +} + +static void SyncPRG(void) +{ + if(wram_control&0x40) + { + if(wram_control&0x80) // Select WRAM + setprg8r(0x10,0x6000,0); + } + else + setprg8(0x6000,wram_control); + + setprg8(0x8000, PRGRegs[0]); + setprg8(0xa000, PRGRegs[1]); + setprg8(0xc000, PRGRegs[2]); +} + +static void SyncMirroring(void) +{ + switch(Mirroring&3) + { + case 0:setmirror(MI_V);break; + case 1:setmirror(MI_H);break; + case 2:setmirror(MI_0);break; + case 3:setmirror(MI_1);break; + } +} + +static DECLFW(Mapper69_SWL) +{ + sr_index= V & 0xF; +} + +static DECLFW(Mapper69_SWH) +{ + int x; + + switch(sr_index) + { + case 0: + case 1: + case 8:DoAYSQHQ(0);break; + case 2: + case 3: + case 9:DoAYSQHQ(1);;break; + case 4: + case 5: + case 10:DoAYSQHQ(2);break; + case 7: + for(x=0;x<2;x++) + DoAYSQHQ(x); + break; + } + sr[sr_index]=V; +} + +static DECLFW(Mapper69_write) +{ + switch(A&0xE000) + { + case 0x8000:reg_select=V;break; + case 0xa000: + reg_select&=0xF; + if(reg_select < 8) + setchr1(reg_select<<10,V); + else + switch(reg_select&0x0f) + { + case 0x8: wram_control = V; SyncPRG(); break; + case 0x9: PRGRegs[0] = V & 0x3F; SyncPRG(); break; + case 0xa: PRGRegs[1] = V & 0x3F; SyncPRG(); break; + case 0xb: PRGRegs[2] = V & 0x3F; SyncPRG(); break; + case 0xc: Mirroring = V & 0x3; SyncMirroring(); break; + + case 0xd:IRQa=V; if(!(V&0x80)) X6502_IRQEnd(MDFN_IQEXT); break; + case 0xe:IRQCount&=0xFF00;IRQCount|=V;break; + case 0xf:IRQCount&=0x00FF;IRQCount|=V<<8;break; + } + break; + } +} + +static void DoAYSQHQ(int x) +{ + const int32 period = sr[x * 2] | ((sr[(x * 2) + 1] & 0xF) << 8); + const int32 amp = amp_lut[(sr[0x8 + x] & 0xF)]; + uint32 V; + + if(!(sr[0x7]&(1<= period) + { + dcount[x] = (dcount[x] + 1) & 0x1F; + vcount[x] = 0; + } + } + } + CAYBC[x]=SOUNDTS; +} + +static void AYSoundHQ(void) +{ + DoAYSQHQ(0); + DoAYSQHQ(1); + DoAYSQHQ(2); +} + +static void AYHiSync(int32 ts) +{ + int x; + + for(x=0;x<3;x++) + CAYBC[x]=ts; +} + +static void SunIRQHook(int a) +{ + if(IRQa & 1) + { + uint16 prev = IRQCount; + + IRQCount-=a; + + if(IRQCount > prev && (IRQa & 0x80)) + { + X6502_IRQBegin(MDFN_IQEXT); + } + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = { + SFVARN(reg_select, "FM7S"), + SFVARN(wram_control, "FM7W"), + SFARRAYN(sr, 0x10, "FM7SR"), + SFVARN(sr_index, "FM7I"), + SFARRAY(PRGRegs, 3), + SFVAR(Mirroring), + SFARRAY32(vcount, 3), + SFARRAY32(dcount, 3), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + SyncPRG(); + SyncMirroring(); + } + + return(ret); +} + +void Mapper69_ESI(EXPSOUND *ep) +{ + for(int i = 0; i < 0x10; i++) + { + double vl = 1.0 / pow(2, 1.0 / 2 * (15 - i)); + + //amp_lut[i] = i * 96; + amp_lut[i] = 7000 * vl; //7500 * vl; //6500 * vl; //8192 * vl; //(int32)(48 * 128 * vl); + + if(!i) + amp_lut[i] = 0; + + //printf("%d %f, %d\n", i, vl, amp_lut[i]); + } + + ep->HiFill=AYSoundHQ; + ep->HiSync=AYHiSync; + memset(dcount,0,sizeof(dcount)); + memset(vcount,0,sizeof(vcount)); + memset(CAYBC,0,sizeof(CAYBC)); +} + +int NSFAY_Init(EXPSOUND *ep, bool MultiChip) +{ + sr_index=0; + if(MultiChip) + { + NSFECSetWriteHandler(0xc000,0xc000,Mapper69_SWL); + NSFECSetWriteHandler(0xe000,0xe000,Mapper69_SWH); + } + else + { + NSFECSetWriteHandler(0xc000,0xdfff,Mapper69_SWL); + NSFECSetWriteHandler(0xe000,0xffff,Mapper69_SWH); + } + Mapper69_ESI(ep); + return(1); +} + +static void Reset(CartInfo *info) +{ + sr_index = 0; + wram_control = 0; + memset(sr, 0xFF, sizeof(sr)); // Setting all bits will cause sound output to be disabled on reset. + + PRGRegs[0] = PRGRegs[1] = PRGRegs[2] = 0x3F; + + Mirroring = info->mirror ? 0 : 1; // Do any mapper 69 boards use hardware-fixed mirroring? + + SyncPRG(); + SyncMirroring(); + + setprg8(0xe000, 0x3F); +} + +int BTR_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10,WRAM,8192,1); + + SetWriteHandler(0x8000,0xbfff,Mapper69_write); + SetWriteHandler(0xc000,0xdfff,Mapper69_SWL); + SetWriteHandler(0xe000,0xffff,Mapper69_SWH); + SetWriteHandler(0x6000,0x7fff,SUN5BWRAM); + SetReadHandler(0x6000,0x7fff,SUN5AWRAM); + SetReadHandler(0x8000, 0xFFFF, CartBR); + + info->Power = info->Reset = Reset; + info->StateAction = StateAction; + + Mapper69_ESI(&info->CartExpSound); + + MapIRQHook = SunIRQHook; + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/h2288.cpp b/libmednahawk/src/nes/boards/h2288.cpp new file mode 100644 index 0000000000..7c46ce4806 --- /dev/null +++ b/libmednahawk/src/nes/boards/h2288.cpp @@ -0,0 +1,116 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Not finished. Darn evil game... *Mumble*... */ + +#include "mapinc.h" + +static uint8 cmd; +static uint8 regs[8]; + +static void DoPRG(void) +{ + if(cmd&0x40) + { + setprg8(0xC000,regs[4]); + setprg8(0xA000,regs[5]); + setprg8(0x8000,~1); + setprg8(0xE000,~0); + } + else + { + setprg8(0x8000,regs[4]); + setprg8(0xA000,regs[5]); + setprg8(0xC000,~1); + setprg8(0xE000,~0); + } +} + +static void DoCHR(void) +{ + uint32 base=(cmd&0x80)<<5; + + setchr2(0x0000^base,regs[0]); + setchr2(0x0800^base,regs[2]); + + setchr1(0x1000^base,regs[6]); + setchr1(0x1400^base,regs[1]); + setchr1(0x1800^base,regs[7]); + setchr1(0x1c00^base,regs[3]); +} + +static DECLFW(PWrite) +{ + //printf("$%04x:$%02x\n",A,V); +} + +static DECLFW(H2288Write) +{ + //printf("$%04x:$%02x, $%04x\n",A,V,X.PC); + //MDFNI_DumpMem("dmp",0xc000,0xffff); + + switch(A&0xE001) + { + case 0xa000:setmirror((V&1)^1);break; + case 0x8000: + cmd=V;DoPRG();DoCHR();break; + case 0x8001:regs[cmd&7]=V; + if((cmd&7)==4 || (cmd&7)==5) + DoPRG(); + else + DoCHR(); + break; + } +} + +static DECLFR(H2288Read) +{ + int bit; + //printf("Read: $%04x, $%04x\n",A,X.PC); + //DumpMem("out",0x8000,0xFFFF); + bit=(A&1)^1; + bit&=((A>>8)&1); + bit^=1; + return((X.DB&0xFE)|bit); +} + +static void H2288Reset(CartInfo *info) +{ + int x; + + for(x=0;x<8;x++) regs[x]=0; + regs[4]=0; + regs[5]=1; + cmd=0; + DoPRG(); + DoCHR(); +} + +int H2288_Init(CartInfo *info) +{ + info->Power=H2288Reset; + + SetReadHandler(0x5000,0x5FFF,H2288Read); + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x5000,0x5FFF,PWrite); + SetWriteHandler(0x8000,0xFFFF,H2288Write); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/malee.cpp b/libmednahawk/src/nes/boards/malee.cpp new file mode 100644 index 0000000000..f3890e590f --- /dev/null +++ b/libmednahawk/src/nes/boards/malee.cpp @@ -0,0 +1,63 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 WRAM[2048]; + +static DECLFW(MWrite) +{ + (WRAM-0x7000)[A]=V; +} + +static void MALEEReset(CartInfo *info) +{ + memset(WRAM, 0x00, 2048); + setprg2r(0x10,0x7000,0); + setprg2r(1,0x6000,0); + setprg32(0x8000,0); + setchr8(0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 2048), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + return(ret); +} + +int MALEE_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 2048, 1); + info->Power=MALEEReset; + info->StateAction = StateAction; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetReadHandler(0x6000,0x67ff,CartBR); + SetReadHandler(0x7000,0x77FF,CartBR); + SetWriteHandler(0x7000,0x77FF,MWrite); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/mapinc.h b/libmednahawk/src/nes/boards/mapinc.h new file mode 100644 index 0000000000..c000e90d54 --- /dev/null +++ b/libmednahawk/src/nes/boards/mapinc.h @@ -0,0 +1,7 @@ +#include "../nes.h" +#include "../x6502.h" +#include "../ppu/ppu.h" +#include "../sound.h" +#include "../cart.h" +#include "../unif.h" +#include "../../mempatcher.h" diff --git a/libmednahawk/src/nes/boards/maxicart.cpp b/libmednahawk/src/nes/boards/maxicart.cpp new file mode 100644 index 0000000000..2ba65be8e9 --- /dev/null +++ b/libmednahawk/src/nes/boards/maxicart.cpp @@ -0,0 +1,120 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +typedef struct +{ + uint8 PRGSelect; + uint8 RAMSelect; +} M125Data; + +static M125Data Mapper125; +static uint8 *WRAM = NULL; + +static DECLFW(M125w) +{ + if(A==0x5000) + { + Mapper125.PRGSelect=V&0xF; + setprg32(0x8000,V&0xF); + } + else if(A==0x5001) + { + Mapper125.RAMSelect=V&0x33; + setchr8(V&3); + setprg8r(0x10,0x6000,(V>>4)&3); + } +} + +static void M125_Reset(CartInfo *info) +{ + +} + +static void M125_Power(CartInfo *info) +{ + Mapper125.PRGSelect = ~0; + Mapper125.RAMSelect = 0; + + setprg32(0x8000,Mapper125.PRGSelect&0xF); + setchr8(Mapper125.RAMSelect&3); + setprg8r(0x10,0x6000,(Mapper125.RAMSelect>>4)&3); + + if(!info->battery) + { + memset(WRAM, 0xFF, 32768); + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(Mapper125.RAMSelect), SFVAR(Mapper125.PRGSelect), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + setprg32(0x8000,Mapper125.PRGSelect&0xF); + setchr8(Mapper125.RAMSelect&3); + setprg8r(0x10,0x6000,(Mapper125.RAMSelect>>4)&3); + } + return(ret); +} + +static void Close(void) +{ + if(WRAM) + { + free(WRAM); + WRAM = NULL; + } +} + +int Mapper125_Init(CartInfo *info) +{ + if(!(WRAM = (uint8*) MDFN_malloc(32768, _("expansion RAM")))) + { + return(0); + } + + SetupCartPRGMapping(0x10, WRAM, 32768, 1); + info->Reset=M125_Reset; + info->Power=M125_Power; + info->StateAction = StateAction; + info->Close = Close; + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 32768; + } + + SetReadHandler(0x6000,0xFFFF,CartBR); + SetWriteHandler(0x5000,0x5001,M125w); + SetWriteHandler(0x6000,0x7FFF,CartBW); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/mmc1.cpp b/libmednahawk/src/nes/boards/mmc1.cpp new file mode 100644 index 0000000000..e07b24897c --- /dev/null +++ b/libmednahawk/src/nes/boards/mmc1.cpp @@ -0,0 +1,637 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static void GenMMC1Power(CartInfo *info); +static int GenMMC1Init(CartInfo *info, int prg, int chr, int wram, int battery); + +static uint8 DRegs[4]; +static uint8 Buffer,BufferShift; + +static int mmc1opts; + +static void (*MMC1CHRHook4)(uint32 A, uint8 V); +static void (*MMC1PRGHook16)(uint32 A, uint8 V); + +static int WRAM_Size; +static uint8 *WRAM=NULL; +static uint8 *CHRRAM=NULL; +static int is155; + +static DECLFW(MBWRAM) +{ + if(!(DRegs[3]&0x10) || is155) + Page[A>>11][A]=V; // WRAM is enabled. +} + +static DECLFR(MAWRAM) +{ + if((DRegs[3]&0x10) && !is155) + return X.DB; // WRAM is disabled + return(Page[A>>11][A]); +} + +static void MMC1CHR(void) +{ + if(mmc1opts&4) + { + if(DRegs[0]&0x10) + setprg8r(0x10,0x6000,(DRegs[1]>>4)&1); + else + setprg8r(0x10,0x6000,(DRegs[1]>>3)&1); + } + + if(MMC1CHRHook4) + { + if(DRegs[0]&0x10) + { + MMC1CHRHook4(0x0000,DRegs[1]); + MMC1CHRHook4(0x1000,DRegs[2]); + } + else + { + MMC1CHRHook4(0x0000,(DRegs[1]&0xFE)); + MMC1CHRHook4(0x1000,DRegs[1]|1); + } + } + else + { + if(DRegs[0]&0x10) + { + setchr4(0x0000,DRegs[1]); + setchr4(0x1000,DRegs[2]); + } + else + setchr8(DRegs[1]>>1); + } +} + +static void MMC1PRG(void) +{ + uint8 offs; + + offs=DRegs[1]&0x10; + if(MMC1PRGHook16) + { + switch(DRegs[0]&0xC) + { + case 0xC: MMC1PRGHook16(0x8000,(DRegs[3]+offs)); + MMC1PRGHook16(0xC000,0xF+offs); + break; + case 0x8: MMC1PRGHook16(0xC000,(DRegs[3]+offs)); + MMC1PRGHook16(0x8000,offs); + break; + case 0x0: + case 0x4: + MMC1PRGHook16(0x8000,((DRegs[3]&~1)+offs)); + MMC1PRGHook16(0xc000,((DRegs[3]&~1)+offs+1)); + break; + } + } + else + switch(DRegs[0]&0xC) + { + case 0xC: setprg16(0x8000,(DRegs[3]+offs)); + setprg16(0xC000,0xF+offs); + break; + case 0x8: setprg16(0xC000,(DRegs[3]+offs)); + setprg16(0x8000,offs); + break; + case 0x0: + case 0x4: + setprg16(0x8000,((DRegs[3]&~1)+offs)); + setprg16(0xc000,((DRegs[3]&~1)+offs+1)); + break; + } +} + +static void MMC1MIRROR(void) +{ + switch(DRegs[0]&3) + { + case 2: setmirror(MI_V);break; + case 3: setmirror(MI_H);break; + case 0: setmirror(MI_0);break; + case 1: setmirror(MI_1);break; + } +} + +#ifdef WANT_DEBUGGER +enum +{ + MMC1_GSREG_CONTROL = 0, + MMC1_GSREG_CHRBANK0, + MMC1_GSREG_CHRBANK1, + MMC1_GSREG_PRGBANK, + MMC1_GSREG_BUFFER, + MMC1_GSREG_BUFFERSHIFT +}; + +static RegType DBGMMC1Regs[] = +{ + { MMC1_GSREG_CONTROL, "Control", "Control(MMC1 register 0)", 1 }, + { MMC1_GSREG_CHRBANK0, "CHRBank0", "CHR Bank Register 0(MMC1 register 1)", 1 }, + { MMC1_GSREG_CHRBANK1, "CHRBank1", "CHR Bank Register 1(MMC1 register 2)", 1 }, + { MMC1_GSREG_PRGBANK, "PRGBank", "PRG Bank Bank Register(MMC1 register 3)", 1 }, + { MMC1_GSREG_BUFFER, "Buffer", "Shifty buffer that takes your moneys!", 1 }, + { MMC1_GSREG_BUFFERSHIFT, "BufferShift", "Place to stick bit in shifty bit buffer", 1 }, + { 0, "", "", 0 }, +}; + +static uint32 MMC1DBG_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 value = 0xDEADBEEF; + + switch(id) + { + case MMC1_GSREG_CONTROL: + value = DRegs[0]; + + if(special) + { + static const char *PMNames[4] = { "One-screen(0)", "One-screen(1)", "Vertical", "Horizontal" }; + char tmpstr[256]; + tmpstr[0] = 0; + + sprintf(tmpstr + strlen(tmpstr), "PRG Bank Size: %dKiB", (DRegs[0] & 0x8) ? 16 : 32); + if(DRegs[0] & 0x8) + { + sprintf(tmpstr + strlen(tmpstr), " @ 0x%04x, ", (DRegs[0] & 0x4) ? 0x8000 : 0xC000); + } + else + strcat(tmpstr, ", "); + + sprintf(tmpstr + strlen(tmpstr), "CHR Bank Size: %dKiB, ", (DRegs[0]&0x10) ? 4 : 8); + + if(!CartHasHardMirroring()) + sprintf(tmpstr + strlen(tmpstr), "Mirroring: %s", PMNames[DRegs[0] & 0x3]); + + strncpy(special, tmpstr, special_len); + } + break; + + case MMC1_GSREG_CHRBANK0: + value = DRegs[1]; + break; + + case MMC1_GSREG_CHRBANK1: + value = DRegs[2]; + break; + + case MMC1_GSREG_PRGBANK: + value = DRegs[3]; + break; + + case MMC1_GSREG_BUFFER: + value = Buffer; + break; + + case MMC1_GSREG_BUFFERSHIFT: + value = BufferShift; + break; + } + + return(value); +} + +static void MMC1DBG_SetRegister(const unsigned int id, uint32 value) +{ + switch(id) + { + case MMC1_GSREG_CONTROL: + DRegs[0] = value; + break; + + case MMC1_GSREG_CHRBANK0: + DRegs[1] = value; + break; + + case MMC1_GSREG_CHRBANK1: + DRegs[2] = value; + break; + + case MMC1_GSREG_PRGBANK: + DRegs[3] = value; + break; + + case MMC1_GSREG_BUFFER: + Buffer = value; + break; + + case MMC1_GSREG_BUFFERSHIFT: + BufferShift = value % 5; + break; + } + + MMC1MIRROR(); + MMC1CHR(); + MMC1PRG(); +} + +static RegGroupType DBGMMC1RegsGroup = +{ + "MMC1", + DBGMMC1Regs, + MMC1DBG_GetRegister, + MMC1DBG_SetRegister, +}; + +#endif + + +static uint64 lreset; +static DECLFW(MMC1_write) +{ + int n=(A>>13)-4; + //MDFN_DispMessage("%016x",timestampbase+timestamp); + //printf("$%04x:$%02x, $%04x\n",A,V,X.PC); + //DumpMem("out",0xe000,0xffff); + + /* The MMC1 is busy so ignore the write. */ + /* As of version Mednafen 0.81, the timestamp is only + increased before each instruction is executed(in other words + precision isn't that great), but this should still work to + deal with 2 writes in a row from a single RMW instruction. + */ + if( (timestampbase+timestamp)<(lreset+2)) + return; + if (V&0x80) + { + DRegs[0]|=0xC; + BufferShift=Buffer=0; + MMC1PRG(); + lreset=timestampbase+timestamp; + return; + } + + Buffer|=(V&1)<<(BufferShift++); + + if (BufferShift==5) { + DRegs[n] = Buffer; + BufferShift = Buffer = 0; + + switch(n){ + case 0: + MMC1MIRROR(); + MMC1CHR(); + MMC1PRG(); + break; + case 1: + MMC1CHR(); + MMC1PRG(); + break; + case 2: + MMC1CHR(); + break; + case 3: + MMC1PRG(); + break; + } + } +} + +static void MMC1CMReset(void) +{ + int i; + + for(i=0;i<4;i++) + DRegs[i]=0; + Buffer = BufferShift = 0; + DRegs[0]=0x1F; + + DRegs[1]=0; + DRegs[2]=0; // Should this be something other than 0? + DRegs[3]=0; + + MMC1MIRROR(); + MMC1CHR(); + MMC1PRG(); +} + +static int DetectMMC1WRAMSize(uint32 crc32) +{ + switch(crc32) + { + default:return(8); + case 0xc6182024: /* Romance of the 3 Kingdoms */ + case 0x2225c20f: /* Genghis Khan */ + case 0x4642dda6: /* Nobunaga's Ambition */ + case 0x29449ba9: /* "" "" (J) */ + case 0x2b11e0b0: /* "" "" (J) */ + MDFN_printf(_(">8KB external WRAM present. Use UNIF if you hack the ROM image.\n")); + return(16); + } +} + +static uint32 NWCIRQCount; +static uint8 NWCRec; +#define NWCDIP 0xE + +static void NWCIRQHook(int a) +{ + if(!(NWCRec&0x10)) + { + NWCIRQCount+=a; + if((NWCIRQCount|(NWCDIP<<25))>=0x3e000000) + { + NWCIRQCount=0; + X6502_IRQBegin(MDFN_IQEXT); + } + } +} + +static void NWCCHRHook(uint32 A, uint8 V) +{ + if((V&0x10)) // && !(NWCRec&0x10)) + { + NWCIRQCount=0; + X6502_IRQEnd(MDFN_IQEXT); + } + + NWCRec=V; + if(V&0x08) + MMC1PRG(); + else + setprg32(0x8000,(V>>1)&3); +} + +static void NWCPRGHook(uint32 A, uint8 V) +{ + if(NWCRec&0x8) + setprg16(A,8|(V&0x7)); + else + setprg32(0x8000,(NWCRec>>1)&3); +} + +static void NWCPower(CartInfo *info) +{ + GenMMC1Power(info); + setchr8r(0,0); +} + +static int NWC_StateAction(StateMem *sm, int load, int data_only); +int Mapper105_Init(CartInfo *info) +{ + if(!(GenMMC1Init(info, 256, 256, 8, 0))) + return(0); + + MMC1CHRHook4=NWCCHRHook; + MMC1PRGHook16=NWCPRGHook; + MapIRQHook=NWCIRQHook; + info->Power=NWCPower; + info->StateAction = NWC_StateAction; + return(1); +} + +static void GenMMC1Power(CartInfo *info) +{ + lreset=0; + if(mmc1opts&1) + { + if(mmc1opts&4) + memset(WRAM,0,8192); + else if(!(mmc1opts&2)) + memset(WRAM,0,8192); + } + + if(mmc1opts&1) + { + setprg8r(0x10,0x6000,0); + } + + MMC1CMReset(); +} + +static void GenMMC1Close(void) +{ + if(CHRRAM) + MDFN_free(CHRRAM); + if(WRAM) + MDFN_free(WRAM); + CHRRAM=WRAM=NULL; +} + +static int NWC_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, WRAM_Size), + SFARRAY(CHRRAM, 8192), + SFARRAY(DRegs, 4), + SFVAR(lreset), + SFVAR(Buffer), + SFVAR(BufferShift), + SFVAR(NWCIRQCount), + SFVAR(NWCRec), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + MMC1MIRROR(); + MMC1CHR(); + MMC1PRG(); + lreset=0; /* timestamp(base) is not stored in save states. */ + } + return(ret); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + //uint32 NWCIRQCount; + //uint8 NWCRec; + + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, WRAM_Size), + SFARRAY(CHRRAM, 8192), + SFARRAY(DRegs, 4), + SFVAR(lreset), + SFVAR(Buffer), + SFVAR(BufferShift), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + MMC1MIRROR(); + MMC1CHR(); + MMC1PRG(); + lreset=0; /* timestamp(base) is not stored in save states. */ + } + return(ret); +} + +static int GenMMC1Init(CartInfo *info, int prg, int chr, int wram, int battery) +{ + is155=0; + + info->StateAction = StateAction; + info->Close=GenMMC1Close; + MMC1PRGHook16=MMC1CHRHook4=0; + mmc1opts=0; + PRGmask16[0]&=(prg>>14)-1; + CHRmask4[0]&=(chr>>12)-1; + CHRmask8[0]&=(chr>>13)-1; + + WRAM_Size = wram * 1024; + if(wram) + { + if(!(WRAM=(uint8*)malloc(wram*1024))) + { + GenMMC1Close(); + return(0); + } + mmc1opts|=1; + if(wram>8) mmc1opts|=4; + SetupCartPRGMapping(0x10,WRAM,wram*1024,1); + + if(battery) + { + mmc1opts|=2; + + info->SaveGame[0]=WRAM+((mmc1opts&4)?8192:0); + info->SaveGameLen[0]=8192; + } + } + if(!chr) + { + if(!(CHRRAM=(uint8*)malloc(8192))) + { + GenMMC1Close(); + return(0); + } + SetupCartCHRMapping(0, CHRRAM, 8192, 1); + } + info->Power=GenMMC1Power; + + + #ifdef WANT_DEBUGGER + MDFNDBG_AddRegGroup(&DBGMMC1RegsGroup); + #endif + + SetWriteHandler(0x8000,0xFFFF,MMC1_write); + SetReadHandler(0x8000,0xFFFF,CartBR); + + if(mmc1opts&1) + { + MDFNMP_AddRAM(8192,0x6000,WRAM); + SetReadHandler(0x6000,0x7FFF,MAWRAM); + SetWriteHandler(0x6000,0x7FFF,MBWRAM); + } + + return(1); +} + +int Mapper1_Init(CartInfo *info) +{ + int ws=DetectMMC1WRAMSize(info->CRC32); + return(GenMMC1Init(info, 512, 256, ws, info->battery)); +} + +/* Same as mapper 1, without respect for WRAM enable bit. */ +int Mapper155_Init(CartInfo *info) +{ + int ret = GenMMC1Init(info,512,256,8,info->battery); + + is155=1; + + return(ret); +} + +//static void GenMMC1Init(int prg, int chr, int wram, int battery) +int SAROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 128, 64, 8, info->battery)); +} + +int SBROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 128, 64, 0, 0)); +} + +int SCROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 128, 128, 0, 0)); +} + +int SEROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 32, 64, 0, 0)); +} + +int SGROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 0, 0, 0)); +} + +int SKROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 64, 8, info->battery)); +} + +int SLROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 128, 0, 0)); +} + +int SL1ROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 128, 128, 0, 0)); +} + +/* Begin unknown - may be wrong - perhaps they use different MMC1s from the + similarly functioning boards? +*/ + +int SL2ROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 256, 0, 0)); +} + +int SFROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 256, 0, 0)); +} + +int SHROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 256, 0, 0)); +} + +/* End unknown */ +/* */ +/* */ + +int SNROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 0, 8, info->battery)); +} + +int SOROM_Init(CartInfo *info) +{ + return(GenMMC1Init(info, 256, 0, 16, info->battery)); +} + + diff --git a/libmednahawk/src/nes/boards/mmc2and4.cpp b/libmednahawk/src/nes/boards/mmc2and4.cpp new file mode 100644 index 0000000000..cd12537ae1 --- /dev/null +++ b/libmednahawk/src/nes/boards/mmc2and4.cpp @@ -0,0 +1,229 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latches[2]; +static uint8 CHRBanks[4]; +static uint8 Mirroring; +static uint8 PRGBank; + +static void latchcheck(uint32 VAddr) +{ + uint8 l,h; + + h=VAddr>>8; + + if(h>=0x20 || ((h&0xF)!=0xF)) + return; + + l=VAddr&0xF8; + + if(h<0x10) + { + if(l==0xD8) + { + setchr4(0x0000, CHRBanks[0]); + latches[0] = 0; + } + else if(l==0xE8) + { + setchr4(0x0000, CHRBanks[1]); + latches[0] = 1; + } + } + else + { + if(l==0xD8) + { + setchr4(0x1000, CHRBanks[2]); + latches[1] = 0; + } + else if(l==0xE8) + { + setchr4(0x1000, CHRBanks[3]); + latches[1] = 1; + } + } +} + +static DECLFW(MMC2_PRG_Write) // $Axxx +{ + PRGBank = V & 0xF; + setprg8(0x8000, PRGBank); +} + +static DECLFW(MMC4_PRG_Write) +{ + PRGBank = V & 0xF; + setprg16(0x8000, PRGBank); +} + +static void CHRSync(void) +{ + if(latches[0] == 0) + setchr4(0x0000, CHRBanks[0]); + else + setchr4(0x0000, CHRBanks[1]); + + if(latches[1] == 0) + setchr4(0x1000, CHRBanks[2]); + else + setchr4(0x1000, CHRBanks[3]); +} + +static DECLFW(CommonWrite) +{ + switch(A&0xF000) + { + case 0xB000: + CHRBanks[0] = V & 0x1F; + CHRSync(); + break; + case 0xC000: + CHRBanks[1] = V & 0x1F; + CHRSync(); + break; + case 0xD000: + CHRBanks[2] = V & 0x1F; + CHRSync(); + break; + case 0xE000: + CHRBanks[3] = V & 0x1F; + CHRSync(); + break; + case 0xF000: + setmirror((V & 1) ^ 1); + Mirroring = V & 1; + break; + } +} + +static void MMC2_Power(CartInfo *info) +{ + int x; + + latches[0] = latches[1] = 1; + for(x = 0; x < 4; x++) + CHRBanks[x] = 0x1F; + CHRSync(); + + PRGBank = 0; + + setprg8(0x8000, 0x00); + setprg8(0xA000, 0x0D); + setprg8(0xC000, 0x0E); + setprg8(0xE000, 0x0F); +} + +static int MMC2_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAYN(CHRBanks, 4, "CHRBanks"), + SFVARN(PRGBank, "PRGBank"), + SFARRAYN(latches, 2, "latches"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MMC2"); + + if(load) + { + CHRSync(); + setmirror(Mirroring ^ 1); + setprg8(0x8000, PRGBank); + } + + return(ret); +} + +// MMC2, also covers PEEOROM +int PNROM_Init(CartInfo *info) +{ + info->Power = MMC2_Power; + info->StateAction = MMC2_StateAction; + SetWriteHandler(0xA000,0xAFFF, MMC2_PRG_Write); + SetWriteHandler(0xB000,0xFFFF, CommonWrite); + SetReadHandler(0x8000, 0xFFFF, CartBR); + PPU_hook = latchcheck; + + return(1); +} + +static uint8 MMC4_WRAM[8192]; + +static void MMC4_Power(CartInfo *info) +{ + int x; + + latches[0] = latches[1] = 1; + for(x = 0; x < 4; x++) + CHRBanks[x] = 0x1F; + CHRSync(); + PRGBank = 0; + setprg16(0x8000, 0); + setprg16(0xc000, 0xF); + + setprg8r(0x10, 0x6000, 0); + + if(!info->battery) + memset(MMC4_WRAM, 0xFF, 8192); +} + +static int MMC4_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAYN(CHRBanks, 4, "CHRBanks"), + SFVARN(PRGBank, "PRGBank"), + SFARRAYN(latches, 2, "latches"), + SFARRAYN(MMC4_WRAM, 8192, "WRAM"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MMC2"); + if(load) + { + CHRSync(); + setmirror(Mirroring ^ 1); + setprg16(0x8000, PRGBank); + } + + return(ret); +} + +int MMC4_Init(CartInfo *info) +{ + info->StateAction = MMC4_StateAction; + info->Power = MMC4_Power; + SetWriteHandler(0xA000, 0xAFFF, MMC4_PRG_Write); + SetWriteHandler(0xB000, 0xFFFF, CommonWrite); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + SetupCartPRGMapping(0x10, MMC4_WRAM, 8192, 1); + + + info->SaveGame[0] = MMC4_WRAM; + info->SaveGameLen[0] = 8192; + + PPU_hook = latchcheck; + return(1); +} diff --git a/libmednahawk/src/nes/boards/mmc3.cpp b/libmednahawk/src/nes/boards/mmc3.cpp new file mode 100644 index 0000000000..d2e505fbdb --- /dev/null +++ b/libmednahawk/src/nes/boards/mmc3.cpp @@ -0,0 +1,1643 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2003 Xodnizel + * Mapper 12 code Copyright (C) 2003 CaH4e3 + * UNL6035052 code Copyright (C) 2005 CaH4e3 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Code for emulating iNES mappers 4, 118,119 */ + +#include "mapinc.h" + +static uint8 resetmode,MMC3_cmd,A000B,A001B; +static uint8 DRegBuf[8]; + +static uint8 *WRAM; +static uint8 *CHRRAM; +static uint32 CHRRAMSize; + +static uint8 PPUCHRBus; +static uint8 TKSMIR[8]; +static uint8 EXPREGS[8], EXPRCount, cmdin; /* For bootleg games, mostly. */ +static uint8 IRQCount,IRQLatch,IRQa; +static uint8 IRQReload; + +static void (*pwrap)(uint32 A, uint8 V); +static void (*cwrap)(uint32 A, uint8 V); +static void (*mwrap)(uint8 V); + +static int mmc3opts; + +static void GenMMC3Close(void); +static int GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery); +static void GenMMC3Power(CartInfo *info); +static void FixMMC3PRG(int V); +static void FixMMC3CHR(int V); + +static void FixMMC3PRG(int V) +{ + if(V&0x40) + { + pwrap(0xC000,DRegBuf[6]); + pwrap(0x8000,~1); + } + else + { + pwrap(0x8000,DRegBuf[6]); + pwrap(0xC000,~1); + } + pwrap(0xA000,DRegBuf[7]); + pwrap(0xE000,~0); +} + +static void FixMMC3CHR(int V) +{ + int cbase=(V&0x80)<<5; + cwrap((cbase^0x000),DRegBuf[0]&(~1)); + cwrap((cbase^0x400),DRegBuf[0]|1); + cwrap((cbase^0x800),DRegBuf[1]&(~1)); + cwrap((cbase^0xC00),DRegBuf[1]|1); + + cwrap(cbase^0x1000,DRegBuf[2]); + cwrap(cbase^0x1400,DRegBuf[3]); + cwrap(cbase^0x1800,DRegBuf[4]); + cwrap(cbase^0x1c00,DRegBuf[5]); +} + +static void MMC3RegReset(void) +{ + IRQCount=IRQLatch=IRQa=MMC3_cmd=0; + + DRegBuf[0]=0; + DRegBuf[1]=2; + DRegBuf[2]=4; + DRegBuf[3]=5; + DRegBuf[4]=6; + DRegBuf[5]=7; + DRegBuf[6]=0; + DRegBuf[7]=1; + + FixMMC3PRG(0); + FixMMC3CHR(0); +} + +static void MMC3RegReset(CartInfo *info) +{ + MMC3RegReset(); +} + +static DECLFW(MMC3_CMDWrite) +{ + switch(A&0xE001) + { + case 0x8000: + if((V&0x40) != (MMC3_cmd&0x40)) + FixMMC3PRG(V); + if((V&0x80) != (MMC3_cmd&0x80)) + FixMMC3CHR(V); + MMC3_cmd = V; + break; + + case 0x8001: + { + int cbase=(MMC3_cmd&0x80)<<5; + DRegBuf[MMC3_cmd&0x7]=V; + switch(MMC3_cmd&0x07) + { + case 0: cwrap((cbase^0x000),V&(~1)); + cwrap((cbase^0x400),V|1); + break; + case 1: cwrap((cbase^0x800),V&(~1)); + cwrap((cbase^0xC00),V|1); + break; + case 2: cwrap(cbase^0x1000,V); break; + case 3: cwrap(cbase^0x1400,V); break; + case 4: cwrap(cbase^0x1800,V); break; + case 5: cwrap(cbase^0x1C00,V); break; + case 6: if (MMC3_cmd&0x40) pwrap(0xC000,V); + else pwrap(0x8000,V); + break; + case 7: pwrap(0xA000,V); + break; + } + } + break; + + case 0xA000: + if(mwrap) mwrap(V&1); + break; + case 0xA001: + A001B=V; + break; + } +} + +static DECLFW(MMC3_IRQWrite) +{ + switch(A&0xE001) + { + case 0xc000:IRQLatch=V;break; + case 0xc001:IRQReload = 1;break; + case 0xE000:X6502_IRQEnd(MDFN_IQEXT);IRQa=0;break; + case 0xE001:IRQa=1;break; + } +} + + + +static void ClockMMC3Counter(void) +{ + int count = IRQCount; + if(!count || IRQReload) + { + IRQCount = IRQLatch; + IRQReload = 0; + } + else IRQCount--; + if(count && !IRQCount) + { + if(IRQa) + { + X6502_IRQBegin(MDFN_IQEXT); + } + } +} + +static void MMC3_hb(void) +{ + ClockMMC3Counter(); +} + +static void MMC3_hb_KickMasterHack(void) +{ + if(scanline==238) + ClockMMC3Counter(); + ClockMMC3Counter(); +} + +static void MMC3_hb_PALStarWarsHack(void) +{ + if(scanline==240) + ClockMMC3Counter(); + ClockMMC3Counter(); +} +/* +static void ClockMMC6Counter(void) +{ + unsigned int count = IRQCount; + + if(!count || IRQReload) + { + IRQCount = IRQLatch; + IRQReload = 0; + } + else IRQCount--; + if(!IRQCount) + { + if(IRQa) + X6502_IRQBegin(MDFN_IQEXT); + } +} +*/ + + +/* +static uint32 lasta; +static void MMC3_PPUIRQ(uint32 A) +{ + if(A&0x2000) return; + if((A&0x1000) && !(lasta&0x1000)) + ClockMMC3Counter(); + lasta = A; +} +*/ + +static void GENCWRAP(uint32 A, uint8 V) +{ + setchr1(A,V); +} + +static void GENPWRAP(uint32 A, uint8 V) +{ + setprg8(A,V&0x3F); +} + +static void GENMWRAP(uint8 V) +{ + A000B=V; + setmirror(V^1); +} + +static void GENNOMWRAP(uint8 V) +{ + A000B=V; +} + + + +static void M12CW(uint32 A, uint8 V) +{ + setchr1(A,(EXPREGS[(A&0x1000)>>12]<<8)+V); +} + +static DECLFW(M12Write) +{ + EXPREGS[0]= V&0x01; + EXPREGS[1]= (V&0x10)>>4; +} + +static void M12_Power(CartInfo *info) +{ + EXPREGS[0]=EXPREGS[1]=0; + GenMMC3Power(info); +} + +int Mapper12_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) return(0); + + SetWriteHandler(0x4100,0x5FFF,M12Write); + + cwrap=M12CW; + info->Power=M12_Power; + EXPRCount = 2; + + return(1); +} + +static void M47PW(uint32 A, uint8 V) +{ + V&=0xF; + V|=EXPREGS[0]<<4; + setprg8(A,V); +} + +static void M47CW(uint32 A, uint8 V) +{ + uint32 NV=V; + NV&=0x7F; + NV|=EXPREGS[0]<<7; + setchr1(A,NV); +} + +static DECLFW(M47Write) +{ + EXPREGS[0]=V&1; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +} + +static void M47_Power(CartInfo *info) +{ + EXPREGS[0]=0; + GenMMC3Power(info); +} + +int Mapper47_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) return(0); + + SetWriteHandler(0x6000,0x7FFF,M47Write); + SetReadHandler(0x6000,0x7FFF,0); + + pwrap=M47PW; + cwrap=M47CW; + info->Power=M47_Power; + EXPRCount = 1; + return(1); +} + +static void M44PW(uint32 A, uint8 V) +{ + uint32 NV=V; + if(EXPREGS[0]>=6) NV&=0x1F; + else NV&=0x0F; + NV|=EXPREGS[0]<<4; + setprg8(A,NV); +} + +static void M44CW(uint32 A, uint8 V) +{ + uint32 NV=V; + if(EXPREGS[0]<6) NV&=0x7F; + NV|=EXPREGS[0]<<7; + setchr1(A,NV); +} + +static DECLFW(Mapper44_write) +{ + if(A&1) + { + EXPREGS[0]=V&7; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); + } + else + MMC3_CMDWrite(A,V); +} + +static void M44_Power(CartInfo *info) +{ + EXPREGS[0]=0; + GenMMC3Power(info); +} + +int Mapper44_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) return(0); + + SetWriteHandler(0xA000,0xBFFF,Mapper44_write); + + cwrap=M44CW; + pwrap=M44PW; + info->Power=M44_Power; + EXPRCount = 1; + return(1); +} + +static void M52PW(uint32 A, uint8 V) +{ + uint32 NV=V; + NV&=0x1F^((EXPREGS[0]&8)<<1); + NV|=((EXPREGS[0]&6)|((EXPREGS[0]>>3)&EXPREGS[0]&1))<<4; + setprg8(A,NV); +} + +static void M52CW(uint32 A, uint8 V) +{ + uint32 NV=V; + NV&=0xFF^((EXPREGS[0]&0x40)<<1); + NV|=(((EXPREGS[0]>>3)&4)|((EXPREGS[0]>>1)&2)|((EXPREGS[0]>>6)&(EXPREGS[0]>>4)&1))<<7; + setchr1(A,NV); +} + +static DECLFW(Mapper52_write) +{ + if(EXPREGS[1]) + { + WRAM[A-0x6000]=V; + return; + } + EXPREGS[1]=1; + EXPREGS[0]=V; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +} + +static void M52Reset(CartInfo *info) +{ + EXPREGS[0]=EXPREGS[1]=0; + MMC3RegReset(info); +} + +static void M52Power(CartInfo *info) +{ + M52Reset(info); + GenMMC3Power(info); +} + +int Mapper52_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + + SetWriteHandler(0x6000,0x7FFF,Mapper52_write); + + cwrap=M52CW; + pwrap=M52PW; + info->Reset=M52Reset; + info->Power=M52Power; + EXPRCount = 2; + return(1); +} + +static void M45CW(uint32 A, uint8 V) +{ + uint32 NV=V; + if(EXPREGS[2]&8) + NV&=(1<<( (EXPREGS[2]&7)+1 ))-1; + else + NV&=0; + NV|=EXPREGS[0]|((EXPREGS[2]&0xF0)<<4); // &0x10(not 0xf0) is valid given the original + // description of mapper 45 by kevtris, + // but this fixes Super 8 in 1. + setchr1(A,NV); +} + +static void M45PW(uint32 A, uint8 V) +{ + //V=((V&(EXPREGS[3]^0xFF))&0x3f)|EXPREGS[1]; + V&=(EXPREGS[3]&0x3F)^0x3F; + V|=EXPREGS[1]; + //printf("$%04x, $%02x\n",A,V); + setprg8(A,V); +} + +static DECLFW(Mapper45_write) +{ + //printf("$%02x, %d\n",V,EXPREGS[4]); + if(EXPREGS[3]&0x40) + { + WRAM[A-0x6000]=V; + return; + } + EXPREGS[EXPREGS[4]]=V; + EXPREGS[4]=(EXPREGS[4]+1)&3; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +} + +static void M45Reset(CartInfo *info) +{ + memset(EXPREGS,0,5); + MMC3RegReset(info); +} + +static void M45Power(CartInfo *info) +{ + M45Reset(info); + GenMMC3Power(info); +} + +int Mapper45_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + + SetWriteHandler(0x6000,0x7FFF,Mapper45_write); + + cwrap=M45CW; + pwrap=M45PW; + + info->Reset=M45Reset; + info->Power=M45Power; + + EXPRCount = 5; + return(1); +} + +static void M49PW(uint32 A, uint8 V) +{ + if(EXPREGS[0]&1) + { + V&=0xF; + V|=(EXPREGS[0]&0xC0)>>2; + setprg8(A,V); + } + else + setprg32(0x8000,(EXPREGS[0]>>4)&3); +} + +static void M49CW(uint32 A, uint8 V) +{ + uint32 NV=V; + NV&=0x7F; + NV|=(EXPREGS[0]&0xC0)<<1; + setchr1(A,NV); +} + +static DECLFW(M49Write) +{ + //printf("$%04x:$%02x\n",A,V); + if(A001B&0x80) + { + EXPREGS[0]=V; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); + } +} + +static void M49Reset(CartInfo *info) +{ + EXPREGS[0]=0; + MMC3RegReset(info); +} + +static void M49Power(CartInfo *info) +{ + M49Reset(info); + GenMMC3Power(info); +} + +int Mapper49_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 0, 0))) + return(0); + + SetWriteHandler(0x6000,0x7FFF,M49Write); + SetReadHandler(0x6000,0x7FFF,0); + + cwrap=M49CW; + pwrap=M49PW; + info->Reset=M49Reset; + info->Power=M49Power; + + EXPRCount = 1; + return(1); +} + +static void M115PW(uint32 A, uint8 V) +{ + if(EXPREGS[0]&0x80) + setprg32(0x8000,(EXPREGS[0]&7) >> 1); + else + setprg8(A,V); +} + +static void M115CW(uint32 A, uint8 V) +{ + setchr1(A,(uint32)V|((EXPREGS[1]&1)<<8)); +} + +static DECLFW(M115Write) +{ + if(A==0x6000) + EXPREGS[0]=V; + else if(A==0x6001) + EXPREGS[1]=V; + FixMMC3PRG(MMC3_cmd); +} + +static void M115Power(CartInfo *info) +{ + GenMMC3Power(info); +} + +int Mapper115_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 512, 0, 0))) + return(0); + + SetWriteHandler(0x6000,0x7FFF,M115Write); + SetReadHandler(0x6000,0x7FFF,0); + + cwrap=M115CW; + pwrap=M115PW; + info->Power=M115Power; + EXPRCount = 2; + + return(1); +} + +static void M116PW(uint32 A, uint8 V) +{ + // setprg8(A,(V&0xF)|((EXPREGS[1]&0x2)<<3)); + // setprg8(A,(V&7)|(<<3)); + setprg8(A,V); + if(!(EXPREGS[1]&2)) + { + setprg16(0x8000,1); //EXPREGS[2]); + } +} + +static void M116CW(uint32 A, uint8 V) +{ + //if(EXPREGS[1]&2) + setchr1(A,V|((EXPREGS[0]&0x4)<<6)); + //else + //{ + // setchr1(A,(V&7)|((EXPREGS[2])<<3)); + //} +} + +static DECLFW(M116Write) +{ + if(A==0x4100) {EXPREGS[0]=V;setmirror(V&1);} + else if(A==0x4141) EXPREGS[1]=V; + else if(A==0xa000) EXPREGS[2]=V; + else if(A==0x4106) EXPREGS[3]=V; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +// MIRROR_SET(0); + //printf("Wr: $%04x:$%02x, $%04x, %d, %d\n",A,V,X.PC,timestamp,scanline); +} +static DECLFW(M116Write2) +{ + //printf("Wr2: %04x:%02x\n",A,V); +} +static void M116Power(CartInfo *info) +{ + + EXPREGS[0]=0; + EXPREGS[1]=2; + EXPREGS[2]=0; + EXPREGS[3]=0; + + GenMMC3Power(info); +} + +int Mapper116_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 0, 0))) + return(0); + + SetWriteHandler(0x4020,0x7fff,M116Write); + SetWriteHandler(0xa000,0xbfff,M116Write2); + + cwrap=M116CW; + pwrap=M116PW; + info->Power=M116Power; + EXPRCount = 4; + + return(1); +} + +static void M165CW(uint32 A, uint8 V) +{ + if(V==0) + setchr4r(0x10,A,0); + else + setchr4(A,V>>2); +} + +static void M165PPUSync(void) +{ + if(EXPREGS[0] == 0xFD) + M165CW(0x0000, DRegBuf[0]); + else + M165CW(0x0000, DRegBuf[1]); + + if(EXPREGS[0] == 0xFD) + M165CW(0x1000, DRegBuf[2]); + else + M165CW(0x1000, DRegBuf[3]); +} + +static void M165PPU(uint32 A, uint8 V) +{ + M165PPUSync(); +} + +static void ppu165(uint32 VAddr) +{ + uint8 l,h; + + h=VAddr>>8; + + if(h>=0x20 || ((h&0xF)!=0xF)) + return; + + l=VAddr&0xF8; + + if(h<0x10) + { + if(l==0xD8) + { + EXPREGS[0]=0xFD; + M165PPUSync(); + } + else if(l==0xE8) + { + EXPREGS[0]=0xFE; + M165PPUSync(); + } + } + else + { + if(l==0xD8) + { + EXPREGS[1]=0xFD; + M165PPUSync(); + } + else if(l==0xE8) + { + EXPREGS[1]=0xFE; + M165PPUSync(); + } + } +} + + +int Mapper165_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 128, 8, info->battery))) + return(0); + + cwrap=M165PPU; + if(!(CHRRAM = (uint8*)malloc(4096))) + { + GenMMC3Close(); + return(0); + } + + EXPREGS[0]=0xFD; + EXPREGS[1]=0xFE; + PPU_hook=ppu165; + + CHRRAMSize = 4096; + SetupCartCHRMapping(0x10, CHRRAM, 4096, 1); + EXPRCount = 4; + return(1); +} + +// ---------------------------- Mapper 215 ------------------------------ + +static const uint8 m215_perm[8] = {0, 2, 5, 3, 6, 1, 7, 4}; + +static void M215CW(uint32 A, uint8 V) +{ + if(EXPREGS[1]&0x04) + setchr1(A,V|0x100); + else + setchr1(A,(V&0x7F)|((EXPREGS[1]&0x10)<<3)); +// setchr1(A,V|((EXPREGS[1]&0x4)<<6)); +} + +static void M215PW(uint32 A, uint8 V) +{ + if(EXPREGS[1]&0x08) + setprg8(A,(V&0x1F)|0x20); + else + setprg8(A,(V&0x0F)|(EXPREGS[1]&0x10)); +} + +static DECLFW(M215Write) +{ + if(!(EXPREGS[2])) + { + if(A >= 0xc000) + MMC3_IRQWrite(A, V); + else + MMC3_CMDWrite(A,V); + } + else switch(A&0xE001) + { + case 0xE000: X6502_IRQEnd(MDFN_IQEXT); IRQa=0; break; + case 0xE001: IRQCount=V; break; + case 0xC001: IRQa=1; break; + case 0xC000: MMC3_CMDWrite(0xA000,V|(V>>7)); break; + case 0xA000: MMC3_CMDWrite(0x8000,(V&0xC0)|(m215_perm[V&7])); cmdin=1; break; + case 0x8001: + if(!cmdin||((EXPREGS[0]&0x80)&&(((MMC3_cmd&7)==6)||((MMC3_cmd&7)==7)))) break; + MMC3_CMDWrite(0x8001,V); + cmdin=0; + break; + } +} + +static DECLFW(M215ExWrite) +{ + switch(A) + { + case 0x5000: + EXPREGS[0]=V; + if(V&0x80) + { + setprg16(0x8000,(V&0x0F)|(EXPREGS[1]&0x10)); + setprg16(0xC000,(V&0x0F)|(EXPREGS[1]&0x10)); + } + else + FixMMC3PRG(MMC3_cmd); + break; + case 0x5001: +// FCEU_printf("CMD: %04x:%04x\n",A,V); + EXPREGS[1]=V; + FixMMC3CHR(MMC3_cmd); + break; + case 0x5007: + EXPREGS[2]=V; + MMC3RegReset(); + break; + } +} + +static void M215Power(CartInfo *info) +{ + EXPREGS[0]=0; + EXPREGS[1]=0xFF; + EXPREGS[2]=4; + GenMMC3Power(info); +} + +int Mapper215_Init(CartInfo *info) +{ + GenMMC3_Init(info, 256, 256, 0, 0); + + SetWriteHandler(0x8000,0xFFFF,M215Write); + SetWriteHandler(0x5000,0x7FFF,M215ExWrite); + + cwrap=M215CW; + pwrap=M215PW; + info->Power=M215Power; + EXPRCount = 3; + + return(1); +} + + +// ---------------------------- Mapper 217 ------------------------------ + +static const uint8 m217_perm[8] = {0, 6, 3, 7, 5, 2, 4, 1}; + +static void M217CW(uint32 A, uint8 V) +{ + if(EXPREGS[1]&0x08) + setchr1(A,V|((EXPREGS[1]&3)<<8)); + else + setchr1(A,(V&0x7F)|((EXPREGS[1]&3)<<8)|((EXPREGS[1]&0x10)<<3)); +} + +static void M217PW(uint32 A, uint8 V) +{ + if(EXPREGS[1]&0x08) + setprg8(A,(V&0x1F)|((EXPREGS[1]&3)<<5)); + else + setprg8(A,(V&0x0F)|((EXPREGS[1]&3)<<5)|(EXPREGS[1]&0x10)); +} + +static DECLFW(M217Write) +{ + if(!EXPREGS[2]) + { + if(A >= 0xc000) + MMC3_IRQWrite(A, V); + else + MMC3_CMDWrite(A,V); + } + else switch(A&0xE001) + { + case 0x8000: IRQCount=V; break; + case 0xE000: X6502_IRQEnd(MDFN_IQEXT);IRQa=0; break; + case 0xC001: IRQa=1; break; + case 0xA001: MMC3_CMDWrite(0xA000,V); break; + case 0x8001: MMC3_CMDWrite(0x8000,(V&0xC0)|(m217_perm[V&7])); cmdin=1; break; + case 0xA000: + if (!cmdin || ((EXPREGS[0]&0x80) && (((MMC3_cmd&7)==6)||((MMC3_cmd&7)==7)))) break; + MMC3_CMDWrite(0x8001,V); + cmdin=0; + break; + } +} + +static DECLFW(M217ExWrite) +{ + switch(A) + { + case 0x5000: + EXPREGS[0]=V; + if(EXPREGS[0]&0x80) + { + setprg16(0x8000,(V&0x0F)|((EXPREGS[1]&3)<<4)); + setprg16(0xC000,(V&0x0F)|((EXPREGS[1]&3)<<4)); + } + else + FixMMC3PRG(MMC3_cmd); + break; + case 0x5001: + EXPREGS[1]=V; + FixMMC3PRG(MMC3_cmd); + break; + case 0x5007: + EXPREGS[2]=V; + break; + } +} + +static void M217Power(CartInfo *info) +{ + EXPREGS[0]=0; + EXPREGS[1]=0xFF; + EXPREGS[2]=3; + GenMMC3Power(info); +} + +int Mapper217_Init(CartInfo *info) +{ + EXPRCount = 3; + GenMMC3_Init(info, 256, 256, 0, 0); + cwrap=M217CW; + pwrap=M217PW; + info->Power=M217Power; + + SetWriteHandler(0x8000,0xFFFF,M217Write); + SetWriteHandler(0x5000,0x7FFF,M217ExWrite); + + return(1); +} + + + +static DECLFW(Mapper250_write) +{ + MMC3_CMDWrite((A&0xE000)|((A&0x400)>>10),A&0xFF); +} + +static DECLFW(M250_IRQWrite) +{ + MMC3_IRQWrite((A&0xE000)|((A&0x400)>>10),A&0xFF); +} + +static void M250_Power(CartInfo *info) +{ + GenMMC3Power(info); +} + +int Mapper250_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + info->Power=M250_Power; + + SetWriteHandler(0x8000,0xBFFF,Mapper250_write); + SetWriteHandler(0xC000,0xFFFF,M250_IRQWrite); + + return(1); +} + +static void M249PW(uint32 A, uint8 V) +{ + if(EXPREGS[0]&0x2) + { + if(V<0x20) + V=(V&1)|((V>>3)&2)|((V>>1)&4)|((V<<2)&8)|((V<<2)&0x10); + else + { + V-=0x20; + V=(V&3)|((V>>1)&4)|((V>>4)&8)|((V>>2)&0x10)|((V<<3)&0x20)|((V<<2)&0xC0); + } + } + setprg8(A,V); +} + +static void M249CW(uint32 A, uint8 V) +{ + if(EXPREGS[0]&0x2) + V=(V&3)|((V>>1)&4)|((V>>4)&8)|((V>>2)&0x10)|((V<<3)&0x20)|((V<<2)&0xC0); + setchr1(A,V); +} + +static DECLFW(Mapper249_write) +{ + EXPREGS[0]=V; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +} + +static void M249Power(CartInfo *info) +{ + EXPREGS[0]=0; + GenMMC3Power(info); +} + +int Mapper249_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + cwrap=M249CW; + pwrap=M249PW; + info->Power=M249Power; + EXPRCount = 1; + + SetWriteHandler(0x5000,0x5000,Mapper249_write); + + return(1); +} + +static void M245CW(uint32 A, uint8 V) +{ + //printf("$%04x:$%02x\n",A,V); + //setchr1(A,V); + // + EXPREGS[0]=V; + FixMMC3PRG(MMC3_cmd); +} + +static void M245PW(uint32 A, uint8 V) +{ + setprg8(A,(V&0x3F)|((EXPREGS[0]&2)<<5)); + //printf("%d\n",(V&0x3F)|((EXPREGS[0]&2)<<5)); +} + +static void M245Power(CartInfo *info) +{ + EXPREGS[0]=0; + GenMMC3Power(info); +} + +int Mapper245_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + + info->Power=M245Power; + cwrap=M245CW; + pwrap=M245PW; + EXPRCount = 1; + + return(1); +} + +void m74p(uint32 a, uint8 v) +{ + setprg8(a,v&0x3f); +} + +void m74m(uint8 V) +{ + A000B = V; + setmirror(V ^ 1); +} + +static void m74kie(uint32 a, uint8 v) +{ + if(v == 0x8 || v == 0x9) //((PRGsize[0]>>16)&0x08) || v==1+((PRGsize[0]>>16)&0x08)) + setchr1r(0x10,a, v & 0x1); + else + setchr1r(0x0,a,v); +} + +static void M74_Power(CartInfo *info) +{ + GenMMC3Power(info); +} + +int Mapper74_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + cwrap=m74kie; + pwrap=m74p; + mwrap = m74m; + + info->Power = M74_Power; + + if(!(CHRRAM=(uint8*)malloc(2048))) + { + GenMMC3Close(); + return(0); + } + CHRRAMSize=2048; + SetupCartCHRMapping(0x10, CHRRAM, 2048, 1); + return(1); +} + +static void m148kie(uint32 a, uint8 v) +{ + if(v==128 || v==129) + setchr1r(0x10,a,v); + else + setchr1r(0x0,a,v); +} + +int Mapper148_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + cwrap=m148kie; + pwrap=m74p; + if(!(CHRRAM=(uint8*)malloc(2048))) + { + GenMMC3Close(); + return(0); + } + CHRRAMSize=2048; + SetupCartCHRMapping(0x10, CHRRAM, 2048, 1); + return(1); +} + + +static const uint8 UNL6035052_lut[4] = { 0x00, 0x02, 0x02, 0x03 }; + +static DECLFW(UNL6035052ProtWrite) +{ + EXPREGS[0]=UNL6035052_lut[V&3]; +} + +static DECLFR(UNL6035052ProtRead) +{ + return EXPREGS[0]; +} + +static void UNL6035052Power(CartInfo *info) +{ + GenMMC3Power(info); +} + +int UNL6035052_Init(CartInfo *info) +{ + if(!GenMMC3_Init(info, 128, 256, 0, 0)) + return(0); + + SetWriteHandler(0x4020,0x7FFF,UNL6035052ProtWrite); + SetReadHandler(0x4020,0x7FFF,UNL6035052ProtRead); + + info->Power=UNL6035052Power; + EXPRCount = 1; + + return(1); +} + + + +static void TKSPPU(uint32 A) +{ + //static uint8 z; + //if(A>=0x2000 || type<0) return; + //if(type<0) return; + A&=0x1FFF; + //if(scanline>=140 && scanline<=200) {setmirror(MI_1);return;} + //if(scanline>=140 && scanline<=200) + // if(scanline>=190 && scanline<=200) {setmirror(MI_1);return;} + // setmirror(MI_1); + //printf("$%04x\n",A); + + A>>=10; + PPUCHRBus=A; + setmirror(MI_0+TKSMIR[A]); +} + +static void TKSWRAP(uint32 A, uint8 V) +{ + TKSMIR[A>>10]=V>>7; + setchr1(A,V&0x7F); + if(PPUCHRBus==(A>>10)) + setmirror(MI_0+(V>>7)); +} + + +static void TQWRAP(uint32 A, uint8 V) +{ + setchr1r((V&0x40)>>2,A,V&0x3F); +} + +static int wrams; + +static DECLFW(MBWRAM) +{ + WRAM[A-0x6000]=V; +} + +static DECLFR(MAWRAM) +{ + return(WRAM[A-0x6000]); +} + +static DECLFW(MBWRAMMMC6) +{ + WRAM[A&0x3ff]=V; +} + +static DECLFR(MAWRAMMMC6) +{ + return(WRAM[A&0x3ff]); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, wrams), + SFARRAY(CHRRAM, CHRRAMSize), + SFARRAYN(DRegBuf, 8, "REGS"), + SFVARN(resetmode, "RMOD"), + SFVARN(MMC3_cmd, "CMD"), + SFVARN(A000B, "A000"), + SFVARN(A001B, "A001"), + SFVARN(IRQReload, "IRQR"), + SFVARN(IRQCount, "IRQC"), + SFVARN(IRQLatch, "IRQL"), + SFVARN(IRQa, "IRQA"), + SFVAR(PPUCHRBus), + SFARRAY(EXPREGS, EXPRCount), + SFVAR(cmdin), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + mwrap(A000B&1); + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); + } + return(ret); +} + +static void GenMMC3Power(CartInfo *info) +{ + A001B=A000B=0; + setmirror((A000B&1)^1); + if(mmc3opts&1) + { + if(!(mmc3opts&2)) + memset(WRAM, 0x00, wrams); + } + MMC3RegReset(info); + if(CHRRAM) + memset(CHRRAM,0,CHRRAMSize); +} + +static void GenMMC3Close(void) +{ + if(CHRRAM) + MDFN_free(CHRRAM); + if(WRAM) + MDFN_free(WRAM); + CHRRAM=WRAM=NULL; +} + +#ifdef WANT_DEBUGGER +enum +{ + MMC3_GSREG_CONTROL = 0, + MMC3_GSREG_MIRRORING, + MMC3_GSREG_WRAMPROTECT, + MMC3_GSREG_CHRBANK0, + MMC3_GSREG_CHRBANK1, + MMC3_GSREG_CHRBANK2, + MMC3_GSREG_CHRBANK3, + MMC3_GSREG_CHRBANK4, + MMC3_GSREG_CHRBANK5, + MMC3_GSREG_PRGBANK0, + MMC3_GSREG_PRGBANK1, + MMC3_GSREG_IRQCOUNT, + MMC3_GSREG_IRQLATCH, + MMC3_GSREG_IRQENABLE +}; + +static RegType DBGMMC3Regs[] = +{ + { MMC3_GSREG_CONTROL, "Control", "Command/Control", 1 }, + { MMC3_GSREG_MIRRORING, "Mirroring", "Mirroring", 1 }, + { MMC3_GSREG_WRAMPROTECT, "WRAMProtect", "Cart WRAM Protect", 1 }, + { MMC3_GSREG_CHRBANK0, "CHRBank0", "CHR Bank(2KiB) Register 0", 1 }, + { MMC3_GSREG_CHRBANK1, "CHRBank1", "CHR Bank(2KiB) Register 1", 1 }, + { MMC3_GSREG_CHRBANK2, "CHRBank2", "CHR Bank(1KiB) Register 2", 1 }, + { MMC3_GSREG_CHRBANK3, "CHRBank3", "CHR Bank(1KiB) Register 3", 1 }, + { MMC3_GSREG_CHRBANK4, "CHRBank4", "CHR Bank(1KiB) Register 4", 1 }, + { MMC3_GSREG_CHRBANK5, "CHRBank5", "CHR Bank(1KiB) Register 5", 1 }, + { MMC3_GSREG_PRGBANK0, "PRGBank0", "PRG Bank(8KiB, @8000 or C000) Register 0", 1 }, + { MMC3_GSREG_PRGBANK1, "PRGBank1", "PRG Bank(8KiB, @A000) Register 1", 1 }, + + { MMC3_GSREG_IRQCOUNT, "IRQCount", "IRQ Counter", 1 }, + { MMC3_GSREG_IRQLATCH, "IRQLatch", "IRQ Counter Latch", 1 }, + { MMC3_GSREG_IRQENABLE, "IRQEnable", "IRQ Counter Enable", 1 }, + + { 0, "", "", 0 }, +}; + +static uint32 MMC3DBG_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 value = 0xDEADBEEF; + + switch(id) + { + case MMC3_GSREG_CONTROL: + value = MMC3_cmd; + break; + + case MMC3_GSREG_CHRBANK0: + value = DRegBuf[0]; + break; + + case MMC3_GSREG_CHRBANK1: + value = DRegBuf[1]; + break; + + case MMC3_GSREG_CHRBANK2: + value = DRegBuf[2]; + break; + + case MMC3_GSREG_CHRBANK3: + value = DRegBuf[3]; + break; + + case MMC3_GSREG_CHRBANK4: + value = DRegBuf[4]; + break; + + case MMC3_GSREG_CHRBANK5: + value = DRegBuf[5]; + break; + + case MMC3_GSREG_PRGBANK0: + value = DRegBuf[6]; + break; + + case MMC3_GSREG_PRGBANK1: + value = DRegBuf[7]; + break; + + case MMC3_GSREG_IRQCOUNT: + value = IRQCount; + break; + + case MMC3_GSREG_IRQLATCH: + value = IRQLatch; + break; + + case MMC3_GSREG_IRQENABLE: + value = IRQa; + break; + + case MMC3_GSREG_MIRRORING: + value = A000B; + break; + + case MMC3_GSREG_WRAMPROTECT: + value = A001B; + break; + } + return(value); +} + +static void MMC3DBG_SetRegister(const unsigned int id, uint32 value) +{ + switch(id) + { + case MMC3_GSREG_CONTROL: + MMC3_cmd = value; + break; + + case MMC3_GSREG_CHRBANK0: + DRegBuf[0] = value; + break; + + case MMC3_GSREG_CHRBANK1: + DRegBuf[1] = value; + break; + + case MMC3_GSREG_CHRBANK2: + DRegBuf[2] = value; + break; + + case MMC3_GSREG_CHRBANK3: + DRegBuf[3] = value; + break; + + case MMC3_GSREG_CHRBANK4: + DRegBuf[4] = value; + break; + + case MMC3_GSREG_CHRBANK5: + DRegBuf[5] = value; + break; + + case MMC3_GSREG_PRGBANK0: + DRegBuf[6] = value; + break; + + case MMC3_GSREG_PRGBANK1: + DRegBuf[7] = value; + break; + + case MMC3_GSREG_IRQCOUNT: + IRQCount = value; + break; + + case MMC3_GSREG_IRQLATCH: + IRQLatch = value; + break; + + case MMC3_GSREG_IRQENABLE: + IRQa = value; + break; + + case MMC3_GSREG_MIRRORING: + A000B = value; + mwrap(A000B&1); + break; + + case MMC3_GSREG_WRAMPROTECT: + A001B = value; + break; + } + + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); +} + +static RegGroupType DBGMMC3RegsGroup = +{ + "MMC3", + DBGMMC3Regs, + MMC3DBG_GetRegister, + MMC3DBG_SetRegister, +}; + +#endif + +static int GenMMC3_Init(CartInfo *info, int prg, int chr, int wram, int battery) +{ + mmc3opts = 0; + + pwrap=GENPWRAP; + cwrap=GENCWRAP; + mwrap=GENMWRAP; + + wrams=wram*1024; + + PRGmask8[0]&=(prg>>13)-1; + CHRmask1[0]&=(chr>>10)-1; + CHRmask2[0]&=(chr>>11)-1; + + if(wram) + { + mmc3opts|=1; + if(!(WRAM=(uint8*)malloc(wram*1024))) + { + GenMMC3Close(); + return(0); + } + } + + if(battery) + { + mmc3opts|=2; + + info->SaveGame[0]=WRAM; + info->SaveGameLen[0]=wram*1024; + } + + if(!chr) + { + if(!(CHRRAM=(uint8*)malloc(8192))) + { + GenMMC3Close(); + return(0); + } + CHRRAMSize=8192; + SetupCartCHRMapping(0, CHRRAM, 8192, 1); + } + + info->StateAction = StateAction; + info->Power=GenMMC3Power; + info->Reset=MMC3RegReset; + info->Close=GenMMC3Close; + + //PPU_hook=MMC3_PPUIRQ; + + if(info->CRC32 == 0x5104833e) // Kick Master + GameHBIRQHook = MMC3_hb_KickMasterHack; + else if(info->CRC32 == 0x5a6860f1 || info->CRC32 == 0xae280e20) // Shougi Meikan '92/'93 + GameHBIRQHook = MMC3_hb_KickMasterHack; + else if(info->CRC32 == 0xfcd772eb) // PAL Star Wars, similar problem as Kick Master. + GameHBIRQHook = MMC3_hb_PALStarWarsHack; + else + GameHBIRQHook=MMC3_hb; + + #ifdef WANT_DEBUGGER + MDFNDBG_AddRegGroup(&DBGMMC3RegsGroup); + #endif + + SetWriteHandler(0x8000,0xBFFF,MMC3_CMDWrite); + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0xC000,0xFFFF,MMC3_IRQWrite); + + if(mmc3opts&1) + { + if(wrams==1024) + { + MDFNMP_AddRAM(1024,0x7000,WRAM); + SetReadHandler(0x7000,0x7FFF,MAWRAMMMC6); + SetWriteHandler(0x7000,0x7FFF,MBWRAMMMC6); + } + else + { + MDFNMP_AddRAM(wrams, 0x6000, WRAM); + SetReadHandler(0x6000,0x6000+wrams-1,MAWRAM); + SetWriteHandler(0x6000,0x6000+wrams-1,MBWRAM); + } + } + + return(1); +} + +static int hackm4; /* For Karnov, maybe others. BLAH. Stupid iNES format.*/ + +static void Mapper4Power(CartInfo *info) +{ + GenMMC3Power(info); + A000B=(hackm4^1)&1; + setmirror(hackm4); +} + +int Mapper4_Init(CartInfo *info) +{ + int ws=8; + + if((info->CRC32==0x93991433 || info->CRC32==0xaf65aa84)) + { + MDFN_printf(_("Low-G-Man can not work normally in the iNES format.\nThis game has been recognized by its CRC32 value, and the appropriate changes will be made so it will run.\nIf you wish to hack this game, you should use the UNIF format for your hack.\n\n")); + ws=0; + } + if(!(GenMMC3_Init(info,512,256,ws,info->battery))) + return(0); + info->Power=Mapper4Power; + hackm4=info->mirror; + return(1); +} + +int Mapper118_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + cwrap=TKSWRAP; + mwrap=GENNOMWRAP; + PPU_hook=TKSPPU; + return(1); +} + +int Mapper119_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 64, 0, 0))) + return(0); + cwrap=TQWRAP; + if(!(CHRRAM=(uint8*)malloc(8192))) + { + GenMMC3Close(); + return(0); + } + CHRRAMSize=8192; + SetupCartCHRMapping(0x10, CHRRAM, 8192, 1); + return(1); +} + +int TEROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 32, 32, 0, 0)); +} + +int TFROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 512, 64, 0, 0)); +} + +int TGROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 512, 0, 0, 0)); +} + +int TKROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 512, 256, 8, info->battery)); +} + +int TLROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 512, 256, 0, 0)); +} + +int TSROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 512, 256, 8, 0)); +} + +int TLSROM_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, 0))) + return(0); + + cwrap=TKSWRAP; + mwrap=GENNOMWRAP; + PPU_hook=TKSPPU; + return(1); +} + +int TKSROM_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 256, 8, info->battery))) + return(0); + + cwrap=TKSWRAP; + mwrap=GENNOMWRAP; + PPU_hook=TKSPPU; + return(1); +} + +int TQROM_Init(CartInfo *info) +{ + if(!(GenMMC3_Init(info, 512, 64, 0, 0))) + return(0); + cwrap=TQWRAP; + if(!(CHRRAM=(uint8*)malloc(8192))) + { + GenMMC3Close(); + return(0); + } + CHRRAMSize=8192; + SetupCartCHRMapping(0x10, CHRRAM, 8192, 1); + + return(0); +} + +/* MMC6 board */ +int HKROM_Init(CartInfo *info) +{ + return(GenMMC3_Init(info, 512, 512, 1, info->battery)); +} diff --git a/libmednahawk/src/nes/boards/mmc5.cpp b/libmednahawk/src/nes/boards/mmc5.cpp new file mode 100644 index 0000000000..b6a9c6f474 --- /dev/null +++ b/libmednahawk/src/nes/boards/mmc5.cpp @@ -0,0 +1,863 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* None of this code should use any of the iNES bank switching wrappers. */ + +#include "mapinc.h" +#include "../nsf.h" + +static void (*sfun)(int P); +static void (*psfun)(void); + +void MMC5RunSoundHQ(void); + +static INLINE void MMC5SPRVROM_BANK1(uint32 A,uint32 V) +{ + if(CHRptr[0]) + { + V&=CHRmask1[0]; + MMC5SPRVPage[(A)>>10]=&CHRptr[0][(V)<<10]-(A); + } +} + +static INLINE void MMC5BGVROM_BANK1(uint32 A,uint32 V) {if(CHRptr[0]){V&=CHRmask1[0];MMC5BGVPage[(A)>>10]=&CHRptr[0][(V)<<10]-(A);}} + +static INLINE void MMC5SPRVROM_BANK2(uint32 A,uint32 V) {if(CHRptr[0]){V&=CHRmask2[0];MMC5SPRVPage[(A)>>10]=MMC5SPRVPage[((A)>>10)+1]=&CHRptr[0][(V)<<11]-(A);}} +static INLINE void MMC5BGVROM_BANK2(uint32 A,uint32 V) {if(CHRptr[0]){V&=CHRmask2[0];MMC5BGVPage[(A)>>10]=MMC5BGVPage[((A)>>10)+1]=&CHRptr[0][(V)<<11]-(A);}} + +static INLINE void MMC5SPRVROM_BANK4(uint32 A,uint32 V) {if(CHRptr[0]){V&=CHRmask4[0];MMC5SPRVPage[(A)>>10]=MMC5SPRVPage[((A)>>10)+1]= MMC5SPRVPage[((A)>>10)+2]=MMC5SPRVPage[((A)>>10)+3]=&CHRptr[0][(V)<<12]-(A);}} +static INLINE void MMC5BGVROM_BANK4(uint32 A,uint32 V) {if(CHRptr[0]){V&=CHRmask4[0];MMC5BGVPage[(A)>>10]=MMC5BGVPage[((A)>>10)+1]=MMC5BGVPage[((A)>>10)+2]=MMC5BGVPage[((A)>>10)+3]=&CHRptr[0][(V)<<12]-(A);}} + +static INLINE void MMC5SPRVROM_BANK8(uint32 V) {if(CHRptr[0]){V&=CHRmask8[0];MMC5SPRVPage[0]=MMC5SPRVPage[1]=MMC5SPRVPage[2]=MMC5SPRVPage[3]=MMC5SPRVPage[4]=MMC5SPRVPage[5]=MMC5SPRVPage[6]=MMC5SPRVPage[7]=&CHRptr[0][(V)<<13];}} +static INLINE void MMC5BGVROM_BANK8(uint32 V) {if(CHRptr[0]){V&=CHRmask8[0];MMC5BGVPage[0]=MMC5BGVPage[1]=MMC5BGVPage[2]=MMC5BGVPage[3]=MMC5BGVPage[4]=MMC5BGVPage[5]=MMC5BGVPage[6]=MMC5BGVPage[7]=&CHRptr[0][(V)<<13];}} + +static uint8 PRGBanks[4]; +static uint8 WRAMPage; +static uint32 CHRBanksA[8], CHRBanksB[4]; +static uint8 WRAMMaskEnable[2]; +static uint8 ABMode; /* A=0, B=1 */ + +static uint8 IRQScanline,IRQEnable; +static uint8 CHRMode, NTAMirroring, NTFill, ATFill; + +static uint8 MMC5IRQR; +static uint8 MMC5LineCounter; +static uint8 mmc5psize, mmc5vsize; +static uint8 MMC5BigCHRSelect; +static uint8 mul[2]; + +static uint8 *WRAM=NULL; +static uint8 *MMC5fill=NULL; +static uint8 *ExRAM=NULL; + +static uint8 MMC5WRAMsize; +static uint8 MMC5WRAMIndex[8]; + +static uint8 MMC5ROMWrProtect[4]; +static uint8 MMC5MemIn[5]; + +static void MMC5CHRA(void); +static void MMC5CHRB(void); + +typedef struct __cartdata { + uint32 crc32; + uint8 size; +} cartdata; + + +// ETROM seems to have 16KB of WRAM, ELROM seems to have 8KB +// EWROM seems to have 32KB of WRAM + +#define MMC5_NOCARTS 14 +cartdata MMC5CartList[MMC5_NOCARTS]= +{ + {0x9c18762b,2}, /* L'Empereur */ + {0x26533405,2}, + {0x6396b988,2}, + + {0xaca15643,2}, /* Uncharted Waters */ + {0xfe3488d1,2}, /* Dai Koukai Jidai */ + + {0x15fe6d0f,2}, /* BKAC */ + {0x39f2ce4b,2}, /* Suikoden */ + + {0x8ce478db,2}, /* Nobunaga's Ambition 2 */ + {0xeee9a682,2}, + + {0x1ced086f,2}, /* Ishin no Arashi */ + + {0xf540677b,4}, /* Nobunaga...Bushou Fuuun Roku */ + + {0x6f4e4312,4}, /* Aoki Ookami..Genchou */ + + {0xf011e490,4}, /* Romance of the 3 Kingdoms 2 */ + {0x184c2124,4}, /* Sangokushi 2 */ +}; + + +int DetectMMC5WRAMSize(uint32 crc32) +{ + int x; + + for(x=0;x8KB external WRAM present. Use UNIF if you hack the ROM image.\n")); + return(MMC5CartList[x].size*8); + } + return(8); +} + +static void BuildWRAMSizeTable(void) +{ + int x; + + for(x=0;x<8;x++) + { + switch(MMC5WRAMsize) + { + case 0:MMC5WRAMIndex[x]=255;break; + case 1:MMC5WRAMIndex[x]=(x>3)?255:0;break; + case 2:MMC5WRAMIndex[x]=(x&4)>>2;break; + case 4:MMC5WRAMIndex[x]=(x>3)?255:(x&3);break; + } + } +} + +static void MMC5CHRA(void) +{ + int x; + switch(mmc5vsize&3) + { + case 0:setchr8(CHRBanksA[7]); + MMC5SPRVROM_BANK8(CHRBanksA[7]); + break; + case 1:setchr4(0x0000,CHRBanksA[3]); + setchr4(0x1000,CHRBanksA[7]); + MMC5SPRVROM_BANK4(0x0000,CHRBanksA[3]); + MMC5SPRVROM_BANK4(0x1000,CHRBanksA[7]); + break; + case 2:setchr2(0x0000,CHRBanksA[1]); + setchr2(0x0800,CHRBanksA[3]); + setchr2(0x1000,CHRBanksA[5]); + setchr2(0x1800,CHRBanksA[7]); + MMC5SPRVROM_BANK2(0x0000,CHRBanksA[1]); + MMC5SPRVROM_BANK2(0x0800,CHRBanksA[3]); + MMC5SPRVROM_BANK2(0x1000,CHRBanksA[5]); + MMC5SPRVROM_BANK2(0x1800,CHRBanksA[7]); + break; + case 3: + for(x=0;x<8;x++) + { + setchr1(x<<10,CHRBanksA[x]); + MMC5SPRVROM_BANK1(x<<10,CHRBanksA[x]); + } + break; + } +} + +static void MMC5CHRB(void) +{ + int x; + switch(mmc5vsize&3) + { + case 0: + setchr8(CHRBanksB[3]); + MMC5BGVROM_BANK8(CHRBanksB[3]); + break; + + case 1: + setchr4(0x0000,CHRBanksB[3]); + setchr4(0x1000,CHRBanksB[3]); + MMC5BGVROM_BANK4(0x0000,CHRBanksB[3]); + MMC5BGVROM_BANK4(0x1000,CHRBanksB[3]); + break; + + case 2: + setchr2(0x0000,CHRBanksB[1]); + setchr2(0x0800,CHRBanksB[3]); + setchr2(0x1000,CHRBanksB[1]); + setchr2(0x1800,CHRBanksB[3]); + MMC5BGVROM_BANK2(0x0000,CHRBanksB[1]); + MMC5BGVROM_BANK2(0x0800,CHRBanksB[3]); + MMC5BGVROM_BANK2(0x1000,CHRBanksB[1]); + MMC5BGVROM_BANK2(0x1800,CHRBanksB[3]); + break; + case 3: + for(x=0;x<8;x++) + { + setchr1(x<<10,CHRBanksB[x&3]); + MMC5BGVROM_BANK1(x<<10,CHRBanksB[x&3]); + } + break; + } +} + +static void MMC5WRAM(uint32 A, uint32 V) +{ + //printf("%02x\n",V); + V=MMC5WRAMIndex[V&7]; + if(V!=255) + { + setprg8r(0x10,A,V); + MMC5MemIn[(A-0x6000)>>13]=1; + } + else + MMC5MemIn[(A-0x6000)>>13]=0; +} + +static void MMC5PRG(void) +{ + int x; + + switch(mmc5psize&3) + { + case 0: + MMC5ROMWrProtect[0]=MMC5ROMWrProtect[1]= + MMC5ROMWrProtect[2]=MMC5ROMWrProtect[3]=1; + setprg32(0x8000,((PRGBanks[3]&0x7F)>>2)); + for(x=0;x<4;x++) + MMC5MemIn[1+x]=1; + break; + case 1: + if(PRGBanks[1]&0x80) + { + MMC5ROMWrProtect[0]=MMC5ROMWrProtect[1]=1; + setprg16(0x8000,(PRGBanks[1]>>1)); + MMC5MemIn[1]=MMC5MemIn[2]=1; + } + else + { + MMC5ROMWrProtect[0]=MMC5ROMWrProtect[1]=0; + MMC5WRAM(0x8000,PRGBanks[1]&7&0xFE); + MMC5WRAM(0xA000,(PRGBanks[1]&7&0xFE)+1); + } + MMC5MemIn[3]=MMC5MemIn[4]=1; + MMC5ROMWrProtect[2]=MMC5ROMWrProtect[3]=1; + setprg16(0xC000,(PRGBanks[3]&0x7F)>>1); + break; + case 2: + if(PRGBanks[1]&0x80) + { + MMC5MemIn[1]=MMC5MemIn[2]=1; + MMC5ROMWrProtect[0]=MMC5ROMWrProtect[1]=1; + setprg16(0x8000,(PRGBanks[1]&0x7F)>>1); + } + else + { + MMC5ROMWrProtect[0]=MMC5ROMWrProtect[1]=0; + MMC5WRAM(0x8000,PRGBanks[1]&7&0xFE); + MMC5WRAM(0xA000,(PRGBanks[1]&7&0xFE)+1); + } + if(PRGBanks[2]&0x80) + {MMC5ROMWrProtect[2]=1;MMC5MemIn[3]=1;setprg8(0xC000,PRGBanks[2]&0x7F);} + else + {MMC5ROMWrProtect[2]=0;MMC5WRAM(0xC000,PRGBanks[2]&7);} + MMC5MemIn[4]=1; + MMC5ROMWrProtect[3]=1; + setprg8(0xE000,PRGBanks[3]&0x7F); + break; + case 3: + for(x=0;x<3;x++) + if(PRGBanks[x]&0x80) + { + MMC5ROMWrProtect[x]=1; + setprg8(0x8000+(x<<13),PRGBanks[x]&0x7F); + MMC5MemIn[1+x]=1; + } + else + { + MMC5ROMWrProtect[x]=0; + MMC5WRAM(0x8000+(x<<13),PRGBanks[x]&7); + } + MMC5MemIn[4]=1; + MMC5ROMWrProtect[3]=1; + setprg8(0xE000,PRGBanks[3]&0x7F); + break; + } +} + +static DECLFW(Mapper5_write) +{ + if(A >= 0x5120 && A <= 0x5127) + { + MDFNPPU_LineUpdate(); + ABMode = 0; + CHRBanksA[A&7] = V | (MMC5BigCHRSelect << 8); + MMC5CHRA(); + } + else if(A >= 0x5128 && A <= 0x512B) + { + MDFNPPU_LineUpdate(); + ABMode=1; + CHRBanksB[A&3] = V | (MMC5BigCHRSelect << 8); + MMC5CHRB(); + } + else switch(A) + { + default: + //printf("$%04x, $%02x\n",A,V); + break; + case 0x5105: + MDFNPPU_LineUpdate(); + { + int x; + for(x=0;x<4;x++) + { + switch((V>>(x<<1))&3) + { + case 0:PPUNTARAM|=1<>3)&0x1F;break; + case 0x5202:MMC5HackSPPage=V&0x3F;break; + case 0x5203:X6502_IRQEnd(MDFN_IQEXT);IRQScanline=V;break; + case 0x5204:X6502_IRQEnd(MDFN_IQEXT);IRQEnable=V&0x80;break; + case 0x5205:mul[0]=V;break; + case 0x5206:mul[1]=V;break; + } +} + +static DECLFR(MMC5_ReadROMRAM) +{ + if(MMC5MemIn[(A-0x6000)>>13]) + return Page[A>>11][A]; + else + return X.DB; +} + +static DECLFW(MMC5_WriteROMRAM) +{ + if(A>=0x8000) + if(MMC5ROMWrProtect[(A-0x8000)>>13]) + return; + if(MMC5MemIn[(A-0x6000)>>13]) + if(((WRAMMaskEnable[0]&3)|((WRAMMaskEnable[1]&3)<<2)) == 6) + Page[A>>11][A]=V; +} + +static DECLFW(MMC5_ExRAMWr) +{ + if(MMC5HackCHRMode!=3) + ExRAM[A&0x3ff]=V; +} + +static DECLFR(MMC5_ExRAMRd) +{ + /* Not sure if this is correct, so I'll comment it out for now. */ + //if(MMC5HackCHRMode>=2) + return ExRAM[A&0x3ff]; + //else + // return(X.DB); +} + +static DECLFR(MMC5_read) +{ + switch(A) + { + //default:printf("$%04x\n",A);break; + case 0x5204:X6502_IRQEnd(MDFN_IQEXT); + { + uint8 x; + x=MMC5IRQR; + if(!fceuindbg) + MMC5IRQR&=0x40; + return x; + } + case 0x5205:return (mul[0]*mul[1]); + case 0x5206:return ((mul[0]*mul[1])>>8); + } + return(X.DB); +} + +void MMC5Synco(void) +{ + int x; + + MMC5PRG(); + for(x=0;x<4;x++) + { + switch((NTAMirroring>>(x<<1))&3) + { + case 0:PPUNTARAM|=1<>2); + MMC5Sound.env[A>>2]=V; + break; + case 0x2: + case 0x6:if(sfun) sfun(A>>2); + MMC5Sound.wl[A>>2]&=~0x00FF; + MMC5Sound.wl[A>>2]|=V&0xFF; + break; + case 0x3: + case 0x7://printf("%04x:$%02x\n",A,V>>3); + MMC5Sound.wl[A>>2]&=~0x0700; + MMC5Sound.wl[A>>2]|=(V&0x07)<<8; + MMC5Sound.running|=1<<(A>>2); + break; + case 0x15:if(sfun) + { + sfun(0); + sfun(1); + } + MMC5Sound.running&=V; + MMC5Sound.enable=V; + //printf("%02x\n",V); + break; + } +} + +static void Do5SQHQ(int P) +{ + static const int tal[4]={1,2,4,6}; + uint32 V; + int32 amp,rthresh,wl; + + wl=MMC5Sound.wl[P]+1; + amp=((MMC5Sound.env[P]&0xF)<<8); + rthresh=tal[(MMC5Sound.env[P]&0xC0)>>6]; + + if(wl>=8 && (MMC5Sound.running&(P+1))) + { + int dc,vc; + + wl<<=1; + + dc=MMC5Sound.dcount[P]; + vc=MMC5Sound.vcount[P]; + for(V=MMC5Sound.BC[P];VHiSync = MMC5HiSync; + ep->HiFill = MMC5RunSoundHQ; +} + +int NSFMMC5_Init(EXPSOUND *ep, bool MultiChip) +{ + memset(&MMC5Sound,0,sizeof(MMC5Sound)); + mul[0]=mul[1]=0; + if(!(ExRAM=(uint8*)MDFN_malloc(1024, _("MMC5 EXRAM")))) + return(0); + Mapper5_ESI(ep); + NSFECSetWriteHandler(0x5c00,0x5fef,MMC5_ExRAMWr); + SetReadHandler(0x5c00,0x5fef,MMC5_ExRAMRd); + MMC5HackCHRMode=2; + NSFECSetWriteHandler(0x5000,0x5015,Mapper5_SW); + NSFECSetWriteHandler(0x5205,0x5206,Mapper5_write); + SetReadHandler(0x5205,0x5206,MMC5_read); + return(1); +} + +void NSFMMC5_Close(void) +{ + if(ExRAM) + MDFN_free(ExRAM); + ExRAM=NULL; +} + +static void GenMMC5Reset(CartInfo *info) +{ + int x; + + memset(ExRAM, 0, 0x400); + + MMC5BigCHRSelect = 0; + + for(x=0;x<4;x++) PRGBanks[x]=~0; + for(x=0;x<8;x++) CHRBanksA[x]=~0; + for(x=0;x<4;x++) CHRBanksB[x]=~0; + WRAMMaskEnable[0]=WRAMMaskEnable[1]=~0; + + mmc5psize=mmc5vsize=3; + CHRMode=0; + + NTAMirroring=NTFill=ATFill=0xFF; + + MMC5Synco(); + + //GameHBIRQHook=MMC5_hb; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[]= + { + SFARRAY(WRAM, MMC5WRAMsize * 8192), + SFARRAY(ExRAM, 1024), + SFARRAYN(PRGBanks, 4, "PRGB"), + SFARRAY32N(CHRBanksA, 8, "CHRA"), + SFARRAY32N(CHRBanksB, 4, "CHRB"), + + SFVARN(WRAMPage, "WRMP"), + SFARRAYN(WRAMMaskEnable, 2, "WRME"), + SFVARN(ABMode, "ABMD"), + SFVARN(IRQScanline, "IRQS"), + SFVARN(IRQEnable, "IRQE"), + SFVARN(CHRMode, "CHRM"), + SFVARN(NTAMirroring, "NTAM"), + SFVARN(NTFill, "NTFL"), + SFVARN(ATFill, "ATFL"), + + SFVARN(MMC5HackSPMode, "SPLM"), + SFVARN(MMC5HackSPScroll, "SPLS"), + SFVARN(MMC5HackSPPage, "SPLP"), + + SFVARN(MMC5Sound.wl[0], "SDW0"), + SFVARN(MMC5Sound.wl[1], "SDW1"), + SFARRAYN(MMC5Sound.env, 2, "SDEV"), + SFVARN(MMC5Sound.enable, "SDEN"), + SFVARN(MMC5Sound.running, "SDRU"), + SFVARN(MMC5Sound.raw, "SDRW"), + SFVARN(MMC5Sound.rawcontrol, "SDRC"), + SFVARN(MMC5Sound.vcount[0], "SDV0"), + SFVARN(MMC5Sound.vcount[1], "SDV1"), + SFVARN(MMC5Sound.dcount[0], "SDD0"), + SFVARN(MMC5Sound.dcount[1], "SDD1"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MMC5"); + + if(load) + MMC5Synco(); + + return(ret); +} + +static void GenMMC5_Close(void) +{ + if(WRAM) + { + MDFN_free(WRAM); + WRAM = NULL; + } + + if(MMC5fill) + { + MDFN_free(MMC5fill); + MMC5fill = NULL; + } + + if(ExRAM) + { + MDFN_free(ExRAM); + ExRAM = NULL; + } +} + +static int GenMMC5_Init(CartInfo *info, int wsize, int battery) +{ + info->StateAction = StateAction; + + if(wsize) + { + if(!(WRAM=(uint8*)MDFN_malloc(wsize*1024, _("WRAM")))) + { + GenMMC5_Close(); + return(0); + } + memset(WRAM, 0x00, wsize * 1024); + SetupCartPRGMapping(0x10,WRAM,wsize*1024,1); + } + + if(!(MMC5fill=(uint8*)MDFN_malloc(1024, _("MMC5 Fill")))) + { + GenMMC5_Close(); + return(0); + } + + if(!(ExRAM = (uint8*)MDFN_malloc(1024, _("MMC5 EXRAM")))) + { + GenMMC5_Close(); + return(0); + } + + MMC5WRAMsize=wsize/8; + BuildWRAMSizeTable(); + info->Power=GenMMC5Reset; + + if(battery) + { + info->SaveGame[0]=WRAM; + if(wsize<=16) + info->SaveGameLen[0]=8192; + else + info->SaveGameLen[0]=32768; + } + + MMC5HackVROMMask=CHRmask4[0]; + MMC5HackExNTARAMPtr=ExRAM; + MMC5Hack=1; + MMC5HackVROMPTR=CHRptr[0]; + MMC5HackCHRMode=0; + MMC5HackSPMode=MMC5HackSPScroll=MMC5HackSPPage=0; + + + Mapper5_ESI(&info->CartExpSound); + + SetWriteHandler(0x4020,0x5bff,Mapper5_write); + SetReadHandler(0x4020,0x5bff,MMC5_read); + + SetWriteHandler(0x5c00,0x5fff,MMC5_ExRAMWr); + SetReadHandler(0x5c00,0x5fff,MMC5_ExRAMRd); + + SetWriteHandler(0x6000,0xFFFF,MMC5_WriteROMRAM); + SetReadHandler(0x6000,0xFFFF,MMC5_ReadROMRAM); + + SetWriteHandler(0x5000,0x5015,Mapper5_SW); + SetWriteHandler(0x5205,0x5206,Mapper5_write); + SetReadHandler(0x5205,0x5206,MMC5_read); + + MDFNMP_AddRAM(8192, 0x6000, WRAM); + MDFNMP_AddRAM(1024, 0x5c00, ExRAM); + + return(1); +} + +int Mapper5_Init(CartInfo *info) +{ + return(GenMMC5_Init(info, DetectMMC5WRAMSize(info->CRC32), info->battery)); +} + +// ELROM seems to have 0KB of WRAM +// EKROM seems to have 8KB of WRAM +// ETROM seems to have 16KB of WRAM +// EWROM seems to have 32KB of WRAM + +// ETROM and EWROM are battery-backed, EKROM isn't. + +int ETROM_Init(CartInfo *info) +{ + return(GenMMC5_Init(info, 16,info->battery)); +} + +int ELROM_Init(CartInfo *info) +{ + return(GenMMC5_Init(info,0,0)); +} + +int EWROM_Init(CartInfo *info) +{ + return(GenMMC5_Init(info,32,info->battery)); +} + +int EKROM_Init(CartInfo *info) +{ + return(GenMMC5_Init(info,8,info->battery)); +} diff --git a/libmednahawk/src/nes/boards/n106.cpp b/libmednahawk/src/nes/boards/n106.cpp new file mode 100644 index 0000000000..47b132e77b --- /dev/null +++ b/libmednahawk/src/nes/boards/n106.cpp @@ -0,0 +1,552 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" +#include "../nsf.h" + +static uint16 IRQCount; +static uint8 IRQa; + +static uint8 WRAM[8192]; +static uint8 IRAM[128]; + +static DECLFR(AWRAM) +{ + return(WRAM[A-0x6000]); +} + +static DECLFW(BWRAM) +{ + WRAM[A-0x6000]=V; +} + +static uint8 NTAPage[4]; + +static uint8 dopol; +static uint8 gorfus; +static uint8 gorko; + +static void (*DoNamcoSound)(void) = NULL; +static void SyncHQ(int32 ts); + +static int is210; /* Lesser mapper. */ + +static uint8 PRG[3]; +static uint8 CHR[8]; + +static uint32 PlayIndex[8]; +static int32 vcount[8]; +static int32 CVBC; + +static void SyncPRG(void) +{ + setprg8(0x8000,PRG[0]); + setprg8(0xa000,PRG[1]); + setprg8(0xc000,PRG[2]); + setprg8(0xe000,0x3F); +} + +static void NamcoIRQHook(int a) +{ + if(IRQa) + { + IRQCount+=a; + if(IRQCount>=0x7FFF) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQa=0; + IRQCount=0x7FFF; //7FFF; + } + } +} + +static DECLFR(Namco_Read4800) +{ + uint8 ret=IRAM[dopol&0x7f]; + + /* Maybe I should call DoNamcoSound() here? */ + if(!fceuindbg) + if(dopol&0x80) + dopol=(dopol&0x80)|((dopol+1)&0x7f); + return ret; +} + +static DECLFR(Namco_Read5000) +{ + return(IRQCount); +} + +static DECLFR(Namco_Read5800) +{ + return(IRQCount>>8); +} + +static void DoNTARAMROM(int w, uint8 V) +{ + NTAPage[w]=V; + + if(V>=0xE0) + setntamem(NTARAM+((V&1)<<10), 1, w); + else + { + V&=CHRmask1[0]; + setntamem(CHRptr[0]+(V<<10), 0, w); + } +} + +static void FixNTAR(void) +{ + int x; + + for(x=0;x<4;x++) + DoNTARAMROM(x,NTAPage[x]); +} + +static void DoCHRRAMROM(int x, uint8 V) +{ + CHR[x]=V; + + if(!is210 && !((gorfus>>((x>>2)+6))&1) && (V>=0xE0)) + { + // printf("BLAHAHA: %d, %02x\n",x,V); + //setchr1r(0x10,x<<10,V&7); + } + else + { +// printf("Noha: %d, %02x\n",x,V); + setchr1(x<<10,V); + } +} + +static void FixCRR(void) +{ + int x; + for(x=0;x<8;x++) + DoCHRRAMROM(x,CHR[x]); +} + +static DECLFW(Mapper19C0D8_write) +{ + DoNTARAMROM((A-0xC000)>>11,V); +} + +static uint32 FreqCache[8]; +static uint32 EnvCache[8]; +static uint32 LengthCache[8]; + +static void FixCache(int a,int V) +{ + int w=(a>>3)&0x7; + switch(a&0x07) + { + case 0x00:FreqCache[w]&=~0x000000FF;FreqCache[w]|=V;break; + case 0x02:FreqCache[w]&=~0x0000FF00;FreqCache[w]|=V<<8;break; + case 0x04:FreqCache[w]&=~0x00030000;FreqCache[w]|=(V&3)<<16; + LengthCache[w]=(8-((V>>2)&7))<<2; + break; + case 0x07:EnvCache[w]=(uint32)(V&0xF)*576716;break; + } + +} + +static DECLFW(Mapper19_write) +{ + A&=0xF800; + + if(A>=0x8000 && A<=0xb800) + DoCHRRAMROM((A-0x8000)>>11,V); + else switch(A) + { + case 0x4800: + //printf("Yahaoo: %02x, %02x\n",dopol&0x7F,V); + //puts("Hmm"); + if(dopol&0x40) + { + DoNamcoSound(); + FixCache(dopol,V); + } + IRAM[dopol&0x7f]=V; + + if(dopol&0x80) + dopol=(dopol&0x80)|((dopol+1)&0x7f); + break; + + case 0xf800: dopol=V;break; + case 0x5000: IRQCount&=0xFF00;IRQCount|=V;X6502_IRQEnd(MDFN_IQEXT);break; + case 0x5800: IRQCount&=0x00ff;IRQCount|=(V&0x7F)<<8; + IRQa=V&0x80; + X6502_IRQEnd(MDFN_IQEXT); + //puts("IRQe"); + break; + + case 0xE000:gorko=V&0xC0; + PRG[0]=V&0x3F; + SyncPRG(); + break; + case 0xE800:gorfus=V&0xC0; + FixCRR(); + PRG[1]=V&0x3F; + SyncPRG(); + break; + case 0xF000:PRG[2]=V&0x3F; + SyncPRG(); + break; + } +} + +#define TOINDEXBS (16 + 10) + +#define TOINDEX (16+1) + +// 16:15 +static void SyncHQ(int32 ts) +{ + CVBC=ts; +} + + +/* Things to do: + 1 Read freq low + 2 Read freq mid + 3 Read freq high + 4 Read envelope + ...? +*/ + +static INLINE uint32 FetchDuff(uint32 P, uint32 envelope) +{ + uint32 duff; + duff=IRAM[((IRAM[0x46+(P<<3)]+(PlayIndex[P]>>TOINDEX))&0xFF)>>1]; + if((IRAM[0x46+(P<<3)]+(PlayIndex[P]>>TOINDEX))&1) + duff>>=4; + duff&=0xF; + duff=(duff*envelope)>>16; + return(duff); +} + +static INLINE uint32 FetchDuffBS(uint32 P, uint32 envelope) +{ + uint32 duff; + duff=IRAM[((IRAM[0x46+(P<<3)]+(PlayIndex[P]>>TOINDEXBS))&0xFF)>>1]; + if((IRAM[0x46+(P<<3)]+(PlayIndex[P]>>TOINDEXBS))&1) + duff>>=4; + duff&=0xF; + duff=(duff*envelope)>>16; + return(duff); +} + +static void DoNamcoSoundAccurate(void) +{ + int32 P; + uint32 V; + int32 cyclesuck=(((IRAM[0x7F]>>4)&7)+1) * 15; + + for(P=7;P>=(7-((IRAM[0x7F]>>4)&7));P--) + { + if((IRAM[0x44+(P<<3)]&0xE0) && (IRAM[0x47+(P<<3)]&0xF)) + { + uint32 freq; + int32 vco; + uint32 duff2,lengo,envelope; + + vco = vcount[P]; + freq = FreqCache[P]; + + envelope = EnvCache[P]; + lengo=LengthCache[P]; + + duff2=FetchDuff(P,envelope); + for(V=CVBC<<1;V>1]-=duff2; + if(!vco) + { + PlayIndex[P]+=freq; + while((PlayIndex[P]>>TOINDEX) >=lengo) + PlayIndex[P]-=lengo<>4)&7)+1) * 15; + + for(P=7;P>=(7-((IRAM[0x7F]>>4)&7));P--) + { + if((IRAM[0x44+(P<<3)]&0xE0) && (IRAM[0x47+(P<<3)]&0xF)) + { + uint32 freq; + int32 vco; + uint32 duff2,lengo,envelope; + + vco = vcount[P]; + freq = FreqCache[P] * 1024 / cyclesuck; + + envelope = EnvCache[P]; + lengo = LengthCache[P]; + + duff2 = FetchDuffBS(P,envelope) << 1; + + for(V=CVBC;V>TOINDEXBS) >=lengo) + PlayIndex[P]-=lengo<HiFill=DoNamcoSound; + ep->HiSync=SyncHQ; + + memset(vcount,0,sizeof(vcount)); + memset(PlayIndex,0,sizeof(PlayIndex)); + CVBC=0; +} + +int NSFN106_Init(EXPSOUND *ep, bool MultiChip) +{ + NSFECSetWriteHandler(0xf800,0xffff,Mapper19_write); + NSFECSetWriteHandler(0x4800,0x4fff,Mapper19_write); + SetReadHandler(0x4800,0x4fff,Namco_Read4800); + Mapper19_ESI(ep); + return(1); +} + +static void InstallRW(CartInfo *info) +{ + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x8000,0xffff,Mapper19_write); + SetWriteHandler(0x4020,0x5fff,Mapper19_write); + + if(!is210) + { + SetWriteHandler(0xc000,0xdfff,Mapper19C0D8_write); + SetReadHandler(0x4800,0x4fff,Namco_Read4800); + SetReadHandler(0x5000,0x57ff,Namco_Read5000); + SetReadHandler(0x5800,0x5fff,Namco_Read5800); + } + + SetReadHandler(0x6000,0x7FFF,AWRAM); + SetWriteHandler(0x6000,0x7FFF,BWRAM); + + +} + +static void N106_Power(CartInfo *info) +{ + int x; + + if(!is210) + { + NTAPage[0]=NTAPage[1]=NTAPage[2]=NTAPage[3]=0xFF; + FixNTAR(); + } + + MDFNMP_AddRAM(8192, 0x6000, WRAM); + + gorfus=0xFF; + SyncPRG(); + FixCRR(); + + if(!info->battery) + { + memset(WRAM,0,8192); + memset(IRAM,0,128); + } + for(x=0x40;x<0x80;x++) + FixCache(x,IRAM[x]); +} + +#ifdef WANT_DEBUGGER +static void GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "wram")) + { + while(Length--) + { + Address &= 8192 - 1; + *Buffer = WRAM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "iram")) + { + while(Length--) + { + Address &= 0x7F; + *Buffer = IRAM[Address]; + Address++; + Buffer++; + } + } +} + +static void PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "wram")) + { + while(Length--) + { + Address &= 8192 - 1; + WRAM[Address] = *Buffer; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "iram")) + { + while(Length--) + { + Address &= 0x7F; + IRAM[Address] = *Buffer; + Address++; + Buffer++; + } + } +} +#endif + +int Mapper19_Init(CartInfo *info) +{ + is210=0; + + info->Power=N106_Power; + info->StateAction = StateAction; + + MapIRQHook=NamcoIRQHook; + + Mapper19_ESI(&info->CartExpSound); + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + + info->SaveGame[1] = IRAM; + info->SaveGameLen[1] = 128; + } + + #ifdef WANT_DEBUGGER + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "wram", "Cart WRAM", 13); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "iram", "N106 Internal RAM", 7); + #endif + + InstallRW(info); + + return(1); +} + +static int Mapper210_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PRG,3), + SFARRAY(CHR,8), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + SyncPRG(); + FixCRR(); + } + return(ret); +} + +int Mapper210_Init(CartInfo *info) +{ + is210=1; + info->StateAction = Mapper210_StateAction; + info->Power=N106_Power; + + InstallRW(info); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/nina06.cpp b/libmednahawk/src/nes/boards/nina06.cpp new file mode 100644 index 0000000000..d706106f25 --- /dev/null +++ b/libmednahawk/src/nes/boards/nina06.cpp @@ -0,0 +1,70 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; +static void Sync(void) +{ + setprg32(0x8000, (latch >> 3) & 1); + setchr8(latch & 0x7); +} + +static DECLFW(Write) +{ + if(A<0x8000 && ((A^0x4100)==0)) + { + latch = V; + Sync(); + } + if(A >= 0x8000) + { + latch &= ~0x7; + latch |= V & 0x7; + Sync(); + } +} + +static void Power(CartInfo *info) +{ + latch = 0; + Sync(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { SFVAR(latch), SFEND }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + Sync(); + + return(ret); +} + +int NINA06_Init(CartInfo *info) +{ + info->StateAction = StateAction; + info->Power = Power; + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x4020,0x5fff, Write); + SetWriteHandler(0x8000, 0xFFFF, Write); + + return(1); +} + diff --git a/libmednahawk/src/nes/boards/novel.cpp b/libmednahawk/src/nes/boards/novel.cpp new file mode 100644 index 0000000000..2c3aa8f7c0 --- /dev/null +++ b/libmednahawk/src/nes/boards/novel.cpp @@ -0,0 +1,65 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch; + +static void DoNovel(void) +{ + setprg32(0x8000,latch&3); + setchr8(latch&7); +} + +static DECLFW(NovelWrite) +{ + latch=A&0xFF; + DoNovel(); +} + +static void NovelReset(CartInfo *info) +{ + latch = 0; + DoNovel(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + DoNovel(); + return(ret); +} + +int Novel_Init(CartInfo *info) +{ + info->StateAction = StateAction; + info->Power=NovelReset; + + SetWriteHandler(0x8000,0xFFFF,NovelWrite); + SetReadHandler(0x8000,0xFFFF,CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/sachen.cpp b/libmednahawk/src/nes/boards/sachen.cpp new file mode 100644 index 0000000000..ce71a0b80f --- /dev/null +++ b/libmednahawk/src/nes/boards/sachen.cpp @@ -0,0 +1,356 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 cmd; +static uint8 latch[8]; +static int cmd_save, latch_save; +static void (*SachSync)(int version); + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + // FIXME to not abuse SFARRAYN: + SFARRAYN(&cmd, cmd_save, "cmd"), + SFARRAY(latch, latch_save), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + SachSync(load); + return(ret); +} + +static void StateInit(CartInfo *info, void (*ss)(int), int nc, int nl) +{ + info->StateAction = StateAction; + SachSync = ss; + cmd_save = nc; + latch_save = nl; +} + +static void S74LS374NSynco(void) +{ + setprg32(0x8000,latch[0]); + setchr8(latch[1]); + setmirror(latch[2]&1); +// setchr8(6); +} + +static DECLFW(S74LS374NWrite) +{ + //printf("$%04x:$%02x\n",A,V); + A&=0x4101; + if(A==0x4100) + cmd=V&7; + else + { + switch(cmd) + { + case 0:latch[0]=0;latch[1]=3;break; + case 4:latch[1]&=3;latch[1]|=(V<<2);break; + case 5:latch[0]=V&0x7;break; + case 6:latch[1]&=0x1C;latch[1]|=V&3;break; + case 7:latch[2]=V&1;break; + } + S74LS374NSynco(); + } +} + +static void S74LS374NReset(CartInfo *info) +{ + latch[0]=latch[2]=0; + latch[1]=3; + S74LS374NSynco(); +} + +static void S74LS374NRestore(int version) +{ + S74LS374NSynco(); +} + +int S74LS374N_Init(CartInfo *info) +{ + info->Power=S74LS374NReset; + StateInit(info, S74LS374NRestore, 1, 3); + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x4100,0x7FFF,S74LS374NWrite); + + return(1); +} + +static int type; +static void S8259Synco(void) +{ + int x; + + setprg32(0x8000,latch[5]&7); + + if(!UNIFchrrama) // No CHR RAM? Then BS'ing is ok. + { + if(!type) + { + for(x=0;x<4;x++) + setchr2(0x800*x,(x&1)|((latch[x]&7)<<1)|((latch[4]&7)<<4)); + } + else + { + for(x=0;x<4;x++) + setchr2(0x800*x,(latch[x]&0x7)|((latch[4]&7)<<3)); + } + } + switch((latch[7]>>1)&3) + { + case 0:setmirrorw(0,0,0,1);break; + case 1:setmirror(MI_H);break; + case 2:setmirror(MI_V);break; + case 3:setmirror(MI_0);break; + } +} + +static DECLFW(S8259Write) +{ + A&=0x4101; + if(A==0x4100) cmd=V; + else + { + latch[cmd&7]=V; + S8259Synco(); + } +} + +static void S8259Reset(CartInfo *info) +{ + int x; + cmd=0; + + for(x=0;x<8;x++) latch[x]=0; + if(UNIFchrrama) setchr8(0); + + S8259Synco(); +} + +static void S8259Restore(int version) +{ + S8259Synco(); +} + +int S8259A_Init(CartInfo *info) +{ + info->Power=S8259Reset; + StateInit(info, S8259Restore, 1, 8); + type=0; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x4100,0x7FFF,S8259Write); + + return(1); +} + +int S8259B_Init(CartInfo *info) +{ + info->Power=S8259Reset; + StateInit(info, S8259Restore, 1, 8); + type=1; + + return(1); +} + +static void(*WSync)(void); + +static void SA0161MSynco() +{ + setprg32(0x8000,(latch[0]>>3)&1); + setchr8(latch[0]&7); +} + +static DECLFW(SAWrite) +{ + if(A&0x100) + { + latch[0]=V; + WSync(); + } +} + +static void SAReset(CartInfo *info) +{ + latch[0]=0; + WSync(); +} + +static void SA0161MRestore(int version) +{ + SA0161MSynco(); +} + +int SA0161M_Init(CartInfo *info) +{ + WSync=SA0161MSynco; + StateInit(info, SA0161MRestore, 0, 1); + info->Power=SAReset; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x4100,0x5FFF,SAWrite); + + return(1); +} + +static void SA72007Synco() +{ + setprg32(0x8000,0); + setchr8(latch[0]>>7); +} + +static void SA72007Restore(int version) +{ + SA72007Synco(); +} + +int SA72007_Init(CartInfo *info) +{ + WSync=SA72007Synco; + StateInit(info, SA72007Restore, 0, 1); + info->Power=SAReset; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x4100,0x5FFF,SAWrite); + + return(1); +} + +static void SA72008Synco() +{ + setprg32(0x8000,(latch[0]>>2)&1); + setchr8(latch[0]&3); +} + +static void SA72008Restore(int version) +{ + SA72008Synco(); +} + +int SA72008_Init(CartInfo *info) +{ + WSync=SA72008Synco; + StateInit(info, SA72008Restore, 0, 1); + info->Power=SAReset; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x4100,0x5FFF,SAWrite); + + return(1); +} + +static DECLFW(SADWrite) +{ + latch[0]=V; + WSync(); +} + +static void SADReset(CartInfo *info) +{ + latch[0]=0; + WSync(); +} + +static void SA0036Synco() +{ + setprg32(0x8000,0); + setchr8(latch[0]>>7); +} + +static void SA0036Restore(int version) +{ + SA0036Synco(); +} + +static void SA0037Synco() +{ + setprg32(0x8000,(latch[0]>>3)&1); + setchr8(latch[0]&7); +} + +static void SA0037Restore(int version) +{ + SA0037Synco(); +} + +int SA0036_Init(CartInfo *info) +{ + WSync=SA0036Synco; + StateInit(info, SA0036Restore, 0, 1); + info->Power=SADReset; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x8000,0xFFFF,SADWrite); + + return(1); +} + +int SA0037_Init(CartInfo *info) +{ + WSync=SA0037Synco; + StateInit(info, SA0037Restore, 0, 1); + info->Power=SADReset; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x8000,0xFFFF,SADWrite); + + return(1); +} + +static void TCU01Synco() +{ + setprg32(0x8000,(latch[0]>>2)&1); + setchr8((latch[0]>>3)&0xF); +} + +static DECLFW(TCWrite) +{ + if((A&0x103)==0x102) + latch[0]=V; + TCU01Synco(); +} + +static void TCU01Reset(CartInfo *info) +{ + latch[0]=0; + TCU01Synco(); +} + +static void TCU01Restore(int version) +{ + TCU01Synco(); +} + +int TCU01_Init(CartInfo *info) +{ + StateInit(info, TCU01Restore, 0, 1); + info->Power=TCU01Reset; + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x4100,0xFFFF,TCWrite); + return(1); +} + diff --git a/libmednahawk/src/nes/boards/simple.cpp b/libmednahawk/src/nes/boards/simple.cpp new file mode 100644 index 0000000000..57c755ca71 --- /dev/null +++ b/libmednahawk/src/nes/boards/simple.cpp @@ -0,0 +1,366 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latche; + +static DECLFW(CPROMWrite) +{ + latche=V&3; + setchr4(0x1000, V & 3); +} + +static void CPROMReset(CartInfo *info) +{ + latche = 0; + setprg32(0x8000,0); + setchr4(0x0000, 0); + setchr4(0x1000, 0); +} + +static int CPROM_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + setchr4(0x1000, latche & 3); + return(ret); +} + +int CPROM_Init(CartInfo *info) +{ + info->Power=CPROMReset; + info->StateAction = CPROM_StateAction; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x8000,0xffff,CPROMWrite); + + return(1); +} + +static int CNROM_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + setchr8(latche); + return(ret); +} + +static DECLFW(CNROMWrite) +{ + latche = V & 3 & CartBR(A); + setchr8(latche); +} + +static void CNROMReset(CartInfo *info) +{ + latche = 0; + setprg16(0x8000,0); + setprg16(0xC000,1); + setchr8(0); +} + +int CNROM_Init(CartInfo *info) +{ + info->Power=CNROMReset; + info->StateAction = CNROM_StateAction; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x8000,0xffff,CNROMWrite); + + return(1); +} + + +static int Mapper101_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + setchr8(latche); + return(ret); +} + +static DECLFW(Mapper101Write) +{ + latche = ((V & 1) << 1) | ((V & 2) >> 1); + setchr8(latche); +} + +static void Mapper101Reset(CartInfo *info) +{ + latche = 0; + setprg16(0x8000,0); + setprg16(0xC000,1); + setchr8(0); +} + +int Mapper101_Init(CartInfo *info) +{ + info->Power=Mapper101Reset; + info->StateAction = Mapper101_StateAction; + + SetReadHandler(0x8000,0xFFFF,CartBR); + SetWriteHandler(0x6000,0x7fff,Mapper101Write); + + return(1); +} + + + + +static void NROM128Reset(CartInfo *info) +{ + setprg16(0x8000,0); + setprg16(0xC000,0); + setchr8(0); +} + +static void NROM256Reset(CartInfo *info) +{ + setprg16(0x8000,0); + setprg16(0xC000,1); + setchr8(0); +} + +int NROM128_Init(CartInfo *info) +{ + info->Power=NROM128Reset; + SetReadHandler(0x8000,0xFFFF,CartBR); + + return(1); +} + +int NROM256_Init(CartInfo *info) +{ + info->Power=NROM256Reset; + SetReadHandler(0x8000,0xFFFF,CartBR); + + return(1); +} + +static int MHROM_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + setprg32(0x8000, latche >> 4), + setchr8(latche & 0xF); + } + return(ret); +} + +static DECLFW(MHROMWrite) +{ + setprg32(0x8000,V>>4); + setchr8(V & 0xF); + latche=V; +} + +static void MHROMReset(CartInfo *info) +{ + setprg32(0x8000,0); + setchr8(0); + latche=0; +} + +int MHROM_Init(CartInfo *info) +{ + info->Power=MHROMReset; + info->StateAction = MHROM_StateAction; + PRGmask32[0]&=1; + CHRmask8[0]&=1; + SetReadHandler(0x8000, 0xFFFF, CartBR); + SetWriteHandler(0x8000, 0xFFFF, MHROMWrite); + return(1); +} + +#ifdef WANT_DEBUGGER +static RegType DBGUNROMRegs[] = +{ + { 0, "PRGBank", "PRG Bank, 16KiB @8000", 1 }, + { 0, "", "", 0 }, +}; + +static uint32 UNROMDBG_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + return(latche); +} + +static void UNROMDBG_SetRegister(const unsigned int id, uint32 value) +{ + latche = value; + setprg16(0x8000, latche); +} + +static RegGroupType DBGUNROMRegsGroup = +{ + "UNROM", + DBGUNROMRegs, + UNROMDBG_GetRegister, + UNROMDBG_SetRegister, +}; + +#endif + +static int UNROM_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + setprg16(0x8000, latche); + return(ret); +} + +static DECLFW(UNROMWrite) +{ + setprg16(0x8000,V); + latche=V; +} + +static void UNROMReset(CartInfo *info) +{ + setchr8(0); + setprg16(0x8000,0); + setprg16(0xc000,~0); + latche=0; +} + +int UNROM_Init(CartInfo *info) +{ + info->Power=UNROMReset; + info->StateAction = UNROM_StateAction; + + #ifdef WANT_DEBUGGER + MDFNDBG_AddRegGroup(&DBGUNROMRegsGroup); + #endif + + SetWriteHandler(0x8000,0xffff,UNROMWrite); + SetReadHandler(0x8000,0xFFFF,CartBR); + + //PRGmask16[0]&=7; + return(1); +} + +static void GNROMSync() +{ + setchr8(latche&3); + setprg32(0x8000,(latche>>4)&3); +} + +static DECLFW(GNROMWrite) +{ + latche=V&0x33; + GNROMSync(); +} + +static int GNROM_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + GNROMSync(); + return(ret); +} + +static void GNROMReset(CartInfo *info) +{ + latche=0; + GNROMSync(); +} + +int GNROM_Init(CartInfo *info) +{ + info->Power=GNROMReset; + info->StateAction = GNROM_StateAction; + + SetWriteHandler(0x8000,0xffff,GNROMWrite); + SetReadHandler(0x8000,0xFFFF,CartBR); + + return(1); +} + +static DECLFW(AOROM_Write) +{ + latche = V; + setprg32(0x8000, V & 0xF); + setmirror(((V >> 4) & 1) ? MI_1 : MI_0); +} + +static void AOROM_Reset(CartInfo *info) +{ + setprg32(0x8000, 0xF); + setchr8(0); + setmirror(MI_0); + latche = 0; +} + +static int AOROM_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(latche), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + setprg32(0x8000, latche & 0xF); + setmirror(((latche >> 4) & 1) ? MI_1 : MI_0); + } + return(ret); +} + + +int AOROM_Init(CartInfo *info) +{ + info->Power = AOROM_Reset; + info->StateAction = AOROM_StateAction; + SetWriteHandler(0x8000, 0xFFFF, AOROM_Write); + SetReadHandler(0x8000, 0xFFFF, CartBR); + return(1); +} diff --git a/libmednahawk/src/nes/boards/super24.cpp b/libmednahawk/src/nes/boards/super24.cpp new file mode 100644 index 0000000000..e770c3cd26 --- /dev/null +++ b/libmednahawk/src/nes/boards/super24.cpp @@ -0,0 +1,260 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 *CHRRAM = NULL; +static int32 IRQCount,IRQLatch; +static uint8 IRQa,resetmode,mbia; +static uint8 sizer,bigbank,bigbank2; +static uint8 DRegBuf[8],MMC3_cmd; + +static const int masko8[8] = { 63,31,15,1,3,0,0,0 }; +//static int masko1[8]={511,255,127,7,7,0,0,0}; + +static void swsetprg8(uint32 A, uint32 V) +{ + V&=masko8[sizer&7]; + V|=(bigbank*2); + setprg8r((V/64)&15,A,V); +} + +static void swsetchr1(uint32 A, uint32 V) +{ + if(sizer&0x20) + setchr1r(0x10,A,V); + else + { +// V&=masko1[sizer&7]; + V|=bigbank2*8; + setchr1r((V/512)&15,A,V); + } +} + +static void swsetchr2(uint32 A, uint32 V) +{ + if(sizer&0x20) + setchr2r(0x10,A,V); + else + { + //V&=masko1[sizer&7]>>1; + V|=bigbank2*4; + setchr2r((V/256)&15,A,V); + } +} + +static void Sup24_hb(void) +{ + resetmode=0; + + if(IRQCount>=0) + { + IRQCount--; + if(IRQCount<0) + { + if(IRQa) + { + resetmode = 1; + X6502_IRQBegin(MDFN_IQEXT); + //printf("IRQ: %d,%d\n",scanline,timestamp); + } + } + } +} + +static DECLFW(Sup24IRQWrite) +{ + //printf("%04x, $%02x, %d, %d\n",A,V,scanline,timestamp); + switch(A&0xE001) + { + case 0xc000:IRQLatch=V; + if(resetmode==1) + IRQCount=IRQLatch; + break; + case 0xc001:resetmode=1; + IRQCount=IRQLatch; + break; + case 0xE000:IRQa=0;X6502_IRQEnd(MDFN_IQEXT); + if(resetmode==1) + {IRQCount=IRQLatch;} + break; + case 0xE001:IRQa=1; + if(resetmode==1) + {IRQCount=IRQLatch;} + break; + } +} + +static INLINE void FixMMC3PRG(int V) +{ + swsetprg8(0xA000,DRegBuf[7]); + swsetprg8(0xE000,~0); + if(V&0x40) + { + swsetprg8(0xC000,DRegBuf[6]); + swsetprg8(0x8000,~1); + } + else + { + swsetprg8(0x8000,DRegBuf[6]); + swsetprg8(0xC000,~1); + } +} + +static INLINE void FixMMC3CHR(int V) +{ + int cbase=(V&0x80)<<5; + swsetchr2((cbase^0x000),DRegBuf[0]>>1); + swsetchr2((cbase^0x800),DRegBuf[1]>>1); + swsetchr1(cbase^0x1000,DRegBuf[2]); + swsetchr1(cbase^0x1400,DRegBuf[3]); + swsetchr1(cbase^0x1800,DRegBuf[4]); + swsetchr1(cbase^0x1c00,DRegBuf[5]); +} + +static DECLFW(Super24hiwrite) +{ + //printf("$%04x:$%02x, %d\n",A,V,scanline); + switch(A&0xE001) + { + case 0x8000: + if((V&0x40) != (MMC3_cmd&0x40)) + FixMMC3PRG(V); + if((V&0x80) != (MMC3_cmd&0x80)) + FixMMC3CHR(V); + MMC3_cmd = V; + break; + + case 0x8001: + { + int cbase=(MMC3_cmd&0x80)<<5; + DRegBuf[MMC3_cmd&0x7]=V; + switch(MMC3_cmd&0x07) + { + case 0: V>>=1;swsetchr2((cbase^0x000),V);break; + case 1: V>>=1;swsetchr2((cbase^0x800),V);break; + case 2: swsetchr1(cbase^0x1000,V); break; + case 3: swsetchr1(cbase^0x1400,V); break; + case 4: swsetchr1(cbase^0x1800,V); break; + case 5: swsetchr1(cbase^0x1C00,V); break; + case 6: if (MMC3_cmd&0x40) swsetprg8(0xC000,V); + else swsetprg8(0x8000,V); + break; + case 7: swsetprg8(0xA000,V); + break; + } + } + break; + + case 0xA000: + mbia=V; + setmirror((V&1)^1); + break; + } +} + + +static DECLFW(Super24Write) +{ + //printf("$%04x:$%02x\n",A,V); + switch(A) + { + case 0x5ff0:sizer=V; + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); + break; + case 0x5FF1: + bigbank=V; + FixMMC3PRG(MMC3_cmd); + break; + case 0x5FF2: + bigbank2=V; + FixMMC3CHR(MMC3_cmd); + break; + } +} + +static void Super24Reset(CartInfo *info) +{ + GameHBIRQHook=Sup24_hb; + IRQCount=IRQLatch=IRQa=resetmode=0; + sizer=0x24; + bigbank=159; + bigbank2=0; + + MMC3_cmd=0; + DRegBuf[6]=0; + DRegBuf[7]=1; + + FixMMC3PRG(0); + FixMMC3CHR(0); +} + +static void Super24Close(void) +{ + if(CHRRAM) + free(CHRRAM); + CHRRAM = NULL; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAYN(CHRRAM, 8192, "CHRR"), + SFARRAYN(DRegBuf, 8, "DREG"), + SFVARN(IRQCount, "IRQC"), + SFVARN(IRQLatch, "IQL1"), + SFVARN(IRQa, "IRQA"), + SFVARN(sizer, "SIZA"), + SFVARN(bigbank, "BIG1"), + SFVARN(bigbank2, "BIG2"), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + FixMMC3PRG(MMC3_cmd); + FixMMC3CHR(MMC3_cmd); + setmirror((mbia & 1) ^ 1); + } + return(ret); +} + +int Super24_Init(CartInfo *info) +{ + info->Power=Super24Reset; + info->StateAction = StateAction; + + if(!(CHRRAM = (uint8 *)malloc(8192))) + return(0); + + info->Close = Super24Close; + + SetupCartCHRMapping(0x10, CHRRAM, 8192, 1); + + SetWriteHandler(0x8000,0xBFFF,Super24hiwrite); + SetWriteHandler(0x5000,0x7FFF,Super24Write); + SetWriteHandler(0xC000,0xFFFF,Sup24IRQWrite); + SetReadHandler(0x8000,0xFFFF,CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/supervision.cpp b/libmednahawk/src/nes/boards/supervision.cpp new file mode 100644 index 0000000000..ce61682507 --- /dev/null +++ b/libmednahawk/src/nes/boards/supervision.cpp @@ -0,0 +1,84 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 latch[2]; + +static void DoSuper(void) +{ + setprg8r((latch[0]&0xC)>>2,0x6000,((latch[0]&0x3)<<4)|0xF); + if(latch[0]&0x10) + { + setprg16r((latch[0]&0xC)>>2,0x8000,((latch[0]&0x3)<<3)|(latch[1]&7)); + setprg16r((latch[0]&0xC)>>2,0xc000,((latch[0]&0x3)<<3)|7); + } + else + setprg32r(4,0x8000,0); + + setmirror(((latch[0]&0x20)>>5)^1); +} + +static DECLFW(SuperWrite) +{ + if(!(latch[0]&0x10)) + { + latch[0]=V; + DoSuper(); + } +} + +static DECLFW(SuperHi) +{ + latch[1]=V; + DoSuper(); +} + +static void SuperReset(CartInfo *info) +{ + latch[0] = latch[1] = 0; + setprg32r(4,0x8000,0); + setchr8(0); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(latch, 2), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + DoSuper(); + return(ret); +} + +int Supervision16_Init(CartInfo *info) +{ + info->Power=SuperReset; + info->StateAction = StateAction; + + SetWriteHandler(0x6000,0x7FFF,SuperWrite); + SetWriteHandler(0x8000,0xFFFF,SuperHi); + SetReadHandler(0x6000,0xFFFF,CartBR); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/tengen.cpp b/libmednahawk/src/nes/boards/tengen.cpp new file mode 100644 index 0000000000..d1a8b0f3f7 --- /dev/null +++ b/libmednahawk/src/nes/boards/tengen.cpp @@ -0,0 +1,238 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" + +static uint8 cmd,mir,rmode,IRQmode; +static uint8 DRegs[11]; +static uint8 IRQCount,IRQa,IRQLatch; + +static void (*setchr1wrap)(unsigned int A, unsigned int V); +static int nomirror; + +static void RAMBO1_IRQHook(int a) +{ + static int smallcount; + if(!IRQmode) return; + + smallcount+=a; + while(smallcount>=4) + { + smallcount-=4; + IRQCount--; + if(IRQCount==0xFF) + { + if(IRQa) + { + //printf("IRQ: %d\n",scanline); + //rmode = 1; + X6502_IRQBegin(MDFN_IQEXT); + } + } + } +} + +static void RAMBO1_hb(void) +{ + if(IRQmode) return; + if(scanline==240) return; /* hmm. Maybe that should be an mmc3-only + call in fce.c. */ + rmode=0; + IRQCount--; + if(IRQCount==0xFF) + { + if(IRQa) + { + rmode = 1; + X6502_IRQBegin(MDFN_IQEXT); + } + } +} + +static void Synco(void) +{ + int x; + + if(cmd&0x20) + { + setchr1wrap(0x0000,DRegs[0]); + setchr1wrap(0x0800,DRegs[1]); + setchr1wrap(0x0400,DRegs[8]); + setchr1wrap(0x0c00,DRegs[9]); + } + else + { + setchr1wrap(0x0000,(DRegs[0]&0xFE)); + setchr1wrap(0x0400,(DRegs[0]&0xFE)|1); + setchr1wrap(0x0800,(DRegs[1]&0xFE)); + setchr1wrap(0x0C00,(DRegs[1]&0xFE)|1); + } + + for(x=0;x<4;x++) + setchr1wrap(0x1000+x*0x400,DRegs[2+x]); + + setprg8(0x8000,DRegs[6]); + setprg8(0xA000,DRegs[7]); + + setprg8(0xC000,DRegs[10]); +} + + +static DECLFW(RAMBO1_write) +{ + //if(A>=0xC000 && A<=0xFFFF) printf("$%04x:$%02x, %d, %d\n",A,V,scanline,timestamp); + switch(A&0xF001) + { + case 0xa000:mir=V&1; + if(!nomirror) + setmirror(mir^1); + break; + case 0x8000:cmd = V; + break; + case 0x8001: + if((cmd&0xF)<10) + DRegs[cmd&0xF]=V; + else if((cmd&0xF)==0xF) + DRegs[10]=V; + Synco(); + break; + case 0xc000:IRQLatch=V; + if(rmode==1) + { + IRQCount=IRQLatch; + } + break; + case 0xc001:rmode=1; + IRQCount=IRQLatch; + IRQmode=V&1; + break; + case 0xE000:IRQa=0;X6502_IRQEnd(MDFN_IQEXT); + if(rmode==1) + {IRQCount=IRQLatch;} + break; + case 0xE001:IRQa=1; + if(rmode==1) + {IRQCount=IRQLatch;} + break; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[]={ + SFVARN(cmd, "CMD"), + SFVARN(mir, "MIR"), + SFVARN(rmode, "RMOD"), + SFVARN(IRQmode, "IRQM"), + SFVARN(IRQCount, "IRQC"), + SFVARN(IRQa, "IRQA"), + SFVARN(IRQLatch, "IRQL"), + SFARRAYN(DRegs, 11, "DREG"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + + if(load) + { + Synco(); + if(!nomirror) + setmirror(mir^1); + } + + return(ret); +} + +static void Power(CartInfo *info) +{ + int x; + + for(x=0;x<11;x++) + DRegs[x]=~0; + cmd=0; + mir=0; + if(!nomirror) + setmirror(1); + Synco(); + setprg8(0xe000, 0xFF); +} + +static void RAMBO1_init(CartInfo *info) +{ + info->Power = Power; + info->StateAction = StateAction; + GameHBIRQHook=RAMBO1_hb; + MapIRQHook=RAMBO1_IRQHook; + SetWriteHandler(0x8000,0xffff,RAMBO1_write); + SetReadHandler(0x8000, 0xFFFF, CartBR); +} + +static void CHRWrap(unsigned int A, unsigned int V) +{ + setchr1(A,V); +} + +int Mapper64_Init(CartInfo *info) +{ + setchr1wrap=CHRWrap; + nomirror=0; + RAMBO1_init(info); + return(1); +} + +static int MirCache[8]; +static unsigned int PPUCHRBus; + +static void MirWrap(unsigned int A, unsigned int V) +{ + MirCache[A>>10]=(V>>7)&1; + if(PPUCHRBus==(A>>10)) + setmirror(MI_0+((V>>7)&1)); + setchr1(A,V); +} + +static void MirrorFear(uint32 A) +{ + A&=0x1FFF; + A>>=10; + PPUCHRBus=A; + setmirror(MI_0+MirCache[A]); +} + +int Mapper158_Init(CartInfo *info) +{ + setchr1wrap=MirWrap; + PPU_hook=MirrorFear; + nomirror=1; + RAMBO1_init(info); + return(1); +} + + +static DECLFW(MIMIC1_Write) +{ + + +} + +void Mapper159_init(void) +{ + SetWriteHandler(0x8000,0xFFFF,MIMIC1_Write); +} diff --git a/libmednahawk/src/nes/boards/vrc6.cpp b/libmednahawk/src/nes/boards/vrc6.cpp new file mode 100644 index 0000000000..bd9083421c --- /dev/null +++ b/libmednahawk/src/nes/boards/vrc6.cpp @@ -0,0 +1,362 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mapinc.h" +#include "../nsf.h" + +static void (*sfun[3])(void); + +static uint8 PRGBank8, PRGBank16, CHRBanks[8], Mirroring; + +static uint8 IRQCount, IRQLatch, IRQEnabled; +static uint8 vrctemp; +static uint8 VPSG[3][3]; +static uint8 WRAM[8192]; + +static int swaparoo; + +static uint8 b3; +static int32 phaseacc; + +static int32 acount; + +static int32 CVBC[3]; +static int32 vcount[3]; +static uint32 dcount[2]; + +#define VOLADJ *4/8 + +static void DoPRG(void) +{ + setprg16(0x8000, PRGBank16); + setprg8(0xc000, PRGBank8); +} + +static void DoCHR(void) +{ + int x; + for(x = 0; x < 8; x++) + setchr1(x * 1024, CHRBanks[x]); +} + +static void DoMirroring(void) +{ + switch(Mirroring & 3) + { + case 0: setmirror(MI_V); break; + case 1: setmirror(MI_H); break; + case 2: setmirror(MI_0); break; + case 3: setmirror(MI_1); break; + } +} + +static void KonamiIRQHook(int a) +{ + #define LCYCS 341 +// #define LCYCS ((227*2)+1) + if(IRQEnabled) + { + acount+=a*3; + if(acount>=LCYCS) + { + doagainbub:acount-=LCYCS;IRQCount++; + if(IRQCount == 0x00) + { + X6502_IRQBegin(MDFN_IQEXT); + IRQCount=IRQLatch; + } + if(acount>=LCYCS) goto doagainbub; + } + } +} + +static DECLFW(VRC6SW) +{ + A&=0xF003; + if(A>=0x9000 && A<=0x9002) + { + VPSG[0][A&3]=V; + if(sfun[0]) sfun[0](); + } + else if(A>=0xa000 && A<=0xa002) + { + VPSG[1][A&3]=V; + if(sfun[1]) sfun[1](); + } + else if(A>=0xb000 && A<=0xb002) + { + VPSG[2][A&3]=V; + if(sfun[2]) sfun[2](); + } + +} + +static DECLFW(Mapper24_write) +{ + if(swaparoo) + A=(A&0xFFFC)|((A>>1)&1)|((A<<1)&2); + A&=0xF003; + + if(A>=0x9000 && A<=0xb002) + { + VRC6SW(A,V); + return; + } + + if(A >= 0xD000 && A <= 0xD003) + { + int w = A & 3; + CHRBanks[w] = V; + setchr1(w * 0x400, V); + } + else if(A >= 0xE000 && A <= 0xE003) + { + int w = 4 | (A & 3); + CHRBanks[w] = V; + setchr1(w * 0x400, V); + } + switch(A&0xF003) + { + case 0x8000:PRGBank16 = V; DoPRG(); break; + case 0xB003: Mirroring = (V >> 2) & 0x3; DoMirroring(); break; + case 0xC000:PRGBank8 = V; DoPRG(); break; + case 0xF000:IRQLatch=V; + //acount=0; + break; + case 0xF001:IRQEnabled=V&2; + vrctemp=V&1; + if(V&2) + { + IRQCount=IRQLatch; + acount=0; + } + X6502_IRQEnd(MDFN_IQEXT); + break; + case 0xf002:IRQEnabled = vrctemp; + X6502_IRQEnd(MDFN_IQEXT);break; + case 0xF003:break; + } +} + +static INLINE void DoSQVHQ(int x) +{ + uint32 V; + int32 amp=((VPSG[x][0]&15)<<8)VOLADJ; + + if(VPSG[x][0x2]&0x80) + { + if(VPSG[x][0]&0x80) + { + for(V=CVBC[x];V>4)&7; + for(V=CVBC[x];Vthresh) /* Greater than, not >=. Important. */ + WaveHiEx[V]+=amp; + vcount[x]--; + if(vcount[x]<=0) /* Should only be <0 in a few circumstances. */ + { + vcount[x]=(VPSG[x][0x1]|((VPSG[x][0x2]&15)<<8))+1; + dcount[x]=(dcount[x]+1)&15; + } + } + } + } + CVBC[x]=SOUNDTS; +} + +static void DoSQV1HQ(void) +{ + DoSQVHQ(0); +} + +static void DoSQV2HQ(void) +{ + DoSQVHQ(1); +} + +static void DoSawVHQ(void) +{ + uint32 V; + + if(VPSG[2][2]&0x80) + { + for(V=CVBC[2];V>3)&0x1f)<<8) VOLADJ; + vcount[2]--; + if(vcount[2]<=0) + { + vcount[2]=(VPSG[2][1]+((VPSG[2][2]&15)<<8)+1)<<1; + phaseacc+=VPSG[2][0]&0x3f; + b3++; + if(b3==7) + { + b3=0; + phaseacc=0; + } + + } + } + } + CVBC[2]=SOUNDTS; +} + +void VRC6SoundHQ(void) +{ + DoSQV1HQ(); + DoSQV2HQ(); + DoSawVHQ(); +} + +void VRC6SyncHQ(int32 ts) +{ + int x; + for(x=0;x<3;x++) CVBC[x]=ts; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 8192), + SFARRAY(CHRBanks, 8), + SFVAR(PRGBank8), SFVAR(PRGBank16), + SFVAR(IRQCount), SFVAR(IRQLatch), SFVAR(IRQEnabled), + SFVAR(b3), SFVAR(phaseacc), SFVAR(acount), + SFVAR(vcount[0]), SFVAR(vcount[1]), SFVAR(vcount[2]), + SFVAR(dcount[0]), SFVAR(dcount[1]), + SFARRAYN(&VPSG[0][0], 3 * 3, "VPSG"), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "VRC6"); + + if(load) + { + DoPRG(); + DoCHR(); + DoMirroring(); + } + return(ret); +} + +static void VRC6_ESI(EXPSOUND *ep) +{ + ep->HiFill=VRC6SoundHQ; + ep->HiSync=VRC6SyncHQ; + + memset(CVBC,0,sizeof(CVBC)); + memset(vcount,0,sizeof(vcount)); + memset(dcount,0,sizeof(dcount)); + b3 = 0; + phaseacc = 0; + acount = 0; + + sfun[0] = DoSQV1HQ; + sfun[1] = DoSQV2HQ; + sfun[2] = DoSawVHQ; +} + +static void Close(void) +{ + +} + +static void Power(CartInfo *info) +{ + for(int x = 0; x < 8; x++) + CHRBanks[x] = x; + + DoCHR(); + + if(!info->battery) + memset(WRAM, 0xFF, 8192); + + setprg8r(0x10, 0x6000, 0); + PRGBank8 = ~1; + PRGBank16 = 0; + + setprg8(0xe000, ~0); + DoPRG(); + + IRQCount = IRQLatch = IRQEnabled = 0; + Mirroring = 0; + DoMirroring(); + + b3 = 0; + phaseacc = 0; + acount = 0; + +} + +static int VRC6_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetWriteHandler(0x8000, 0xffff, Mapper24_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + + VRC6_ESI(&info->CartExpSound); + + MapIRQHook = KonamiIRQHook; + info->StateAction = StateAction; + info->Power = Power; + info->Close = Close; + + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + return(1); +} + +int Mapper24_Init(CartInfo *info) +{ + swaparoo = 0; + return(VRC6_Init(info)); +} + +int Mapper26_Init(CartInfo *info) +{ + swaparoo = 1; + return(VRC6_Init(info)); +} + +int NSFVRC6_Init(EXPSOUND *ep, bool MultiChip) +{ + VRC6_ESI(ep); + + if(MultiChip) + { + NSFECSetWriteHandler(0x9000, 0x9002, VRC6SW); + NSFECSetWriteHandler(0xa000, 0xa002, VRC6SW); + NSFECSetWriteHandler(0xb000, 0xb002, VRC6SW); + } + else + { + NSFECSetWriteHandler(0x9000,0xbfff,VRC6SW); + } + return(1); +} diff --git a/libmednahawk/src/nes/boards/vrc7.cpp b/libmednahawk/src/nes/boards/vrc7.cpp new file mode 100644 index 0000000000..ee0d070a0a --- /dev/null +++ b/libmednahawk/src/nes/boards/vrc7.cpp @@ -0,0 +1,237 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO: Fix NSF variable initialization + +#include "mapinc.h" +#include "../nsf.h" + +static uint8 CHRBanks[8], PRGBanks[3], WRAM[8192], Mirroring; +static uint8 IRQLatch, IRQCount, IRQEnabled; +static uint8 vrctemp; +static uint8 indox; +static int32 acount; +static int32 divc; + +#include "emu2413.h" + +static OPLL *VRC7Sound=NULL; +static uint32 V7BC; +static int32 V7out; + +void DoVRC7Sound(void) +{ + uint32 V; + + for(V=V7BC;V=0xa000 && A<=0xDFFF) + { + // printf("$%04x, $%04x\n",X.PC,A); + A&=0xF010; + { + int x=((A>>4)&1)|((A-0xA000)>>11); + CHRBanks[x] = V; + setchr1(x<<10,V); + } + } + else if(A==0x9030) + { + DoVRC7Sound(); + OPLL_writeReg(VRC7Sound, indox, V); + } + else switch(A&0xF010) + { + case 0x8000:PRGBanks[0]=V;setprg8(0x8000,V);break; + case 0x8010:PRGBanks[1]=V;setprg8(0xa000,V);break; + case 0x9000:PRGBanks[2]=V;setprg8(0xc000,V);break; + case 0x9010:indox=V;break; + case 0xe000:Mirroring=V;DaMirror(V);break; + case 0xE010:IRQLatch=V; + X6502_IRQEnd(MDFN_IQEXT); + break; + case 0xF000:IRQEnabled=V&2; + vrctemp=V&1; + if(V&2) {IRQCount=IRQLatch;} + acount=0; + X6502_IRQEnd(MDFN_IQEXT); + break; + case 0xf010:if(vrctemp) IRQEnabled=1; + else IRQEnabled=0; + X6502_IRQEnd(MDFN_IQEXT); + break; + } +} + +static void KonamiIRQHook(int a) +{ + #define ACBOO 341 +// #define ACBOO ((227*2)+1) + if(IRQEnabled) + { + acount+=a*3; + + if(acount>=ACBOO) + { + doagainbub:acount-=ACBOO; + IRQCount++; + if(IRQCount == 0) {X6502_IRQBegin(MDFN_IQEXT);IRQCount=IRQLatch;} + if(acount>=ACBOO) goto doagainbub; + } + } +} + +static void Sync(void) +{ + int x; + + for(x=0;x<8;x++) + setchr1(x*0x400,CHRBanks[x]); + for(x=0;x<3;x++) + setprg8(0x8000+x*8192,PRGBanks[x]); + DaMirror(Mirroring); +} + +static void M85SKill(void) +{ + if(VRC7Sound) + OPLL_delete(VRC7Sound); + VRC7Sound=NULL; +} + +static void VRC7SI(EXPSOUND *ep) +{ + ep->Kill=M85SKill; + ep->HiFill=DoVRC7Sound; + ep->HiSync = HiSync; + + VRC7Sound=OPLL_new(3579545); + OPLL_reset(VRC7Sound); +} + +int NSFVRC7_Init(EXPSOUND *ep, bool MultiChip) +{ + NSFECSetWriteHandler(0x9010,0x901F,Mapper85_write); + NSFECSetWriteHandler(0x9030,0x903F,Mapper85_write); + VRC7SI(ep); + + return(1); +} + +static void Power(CartInfo *info) +{ + if(!info->battery) + memset(WRAM, 0xFF, 8192); + + setprg8r(0x10, 0x6000, 0); + setprg8(0xe000, 0xFF); + + for(int x = 0; x < 8; x++) + CHRBanks[x] = x; + + for(int x = 0; x < 3; x++) + PRGBanks[x] = x; + Mirroring = IRQLatch = IRQCount = IRQEnabled = vrctemp = indox = acount = divc = 0; + V7out = 0; + Sync(); + + OPLL_reset(VRC7Sound); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CHRBanks, 8), SFARRAY(PRGBanks, 3), + SFARRAY(WRAM, 8192), SFVAR(Mirroring), + SFVAR(IRQLatch), SFVAR(IRQCount), SFVAR(IRQEnabled), + SFVAR(vrctemp), SFVAR(indox), SFVAR(acount), + SFVAR(divc), + + SFARRAY(VRC7Sound->LowFreq, 6), + SFARRAY(VRC7Sound->HiFreq, 6), + SFARRAY(VRC7Sound->InstVol, 6), + SFARRAY(VRC7Sound->CustInst, 8), + SFARRAY32(VRC7Sound->slot_on_flag, 6 * 2), + SFVAR(VRC7Sound->pm_phase), SFVAR(VRC7Sound->lfo_pm), + SFVAR(VRC7Sound->am_phase), SFVAR(VRC7Sound->lfo_am), + SFARRAY32(VRC7Sound->patch_number, 6), + SFARRAY32(VRC7Sound->key_status, 6), + + // FIXME + SFARRAYN((uint8 *)VRC7Sound->slot, sizeof(VRC7Sound->slot), "VRC7Sound->slot"), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); + if(load) + { + Sync(); + OPLL_forceRefresh(VRC7Sound); + } + return(ret); +} + +int Mapper85_Init(CartInfo *info) +{ + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + info->Power = Power; + info->StateAction = StateAction; + if(info->battery) + { + info->SaveGame[0] = WRAM; + info->SaveGameLen[0] = 8192; + } + MapIRQHook=KonamiIRQHook; + SetWriteHandler(0x8000,0xffff,Mapper85_write); + SetReadHandler(0x6000, 0xFFFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + + VRC7SI(&info->CartExpSound); + + return(1); +} diff --git a/libmednahawk/src/nes/boards/vrc7tone.h b/libmednahawk/src/nes/boards/vrc7tone.h new file mode 100644 index 0000000000..f4a1fbc27e --- /dev/null +++ b/libmednahawk/src/nes/boards/vrc7tone.h @@ -0,0 +1,17 @@ +/* VRC7 instruments, January 17, 2004 update -Xodnizel */ + {0x03, 0x21, 0x04, 0x06, 0x8D, 0xF2, 0x42, 0x17}, + {0x13, 0x41, 0x05, 0x0E, 0x99, 0x96, 0x63, 0x12}, + {0x31, 0x11, 0x10, 0x0A, 0xF0, 0x9C, 0x32, 0x02}, + {0x21, 0x61, 0x1D, 0x07, 0x9F, 0x64, 0x20, 0x27}, + {0x22, 0x21, 0x1E, 0x06, 0xF0, 0x76, 0x08, 0x28}, + {0x02, 0x01, 0x06, 0x00, 0xF0, 0xF2, 0x03, 0x95}, + {0x21, 0x61, 0x1C, 0x07, 0x82, 0x81, 0x16, 0x07}, + {0x23, 0x21, 0x1A, 0x17, 0xEF, 0x82, 0x25, 0x15}, + {0x25, 0x11, 0x1F, 0x00, 0x86, 0x41, 0x20, 0x11}, + {0x85, 0x01, 0x1F, 0x0F, 0xE4, 0xA2, 0x11, 0x12}, + {0x07, 0xC1, 0x2B, 0x45, 0xB4, 0xF1, 0x24, 0xF4}, + {0x61, 0x23, 0x11, 0x06, 0x96, 0x96, 0x13, 0x16}, + {0x01, 0x02, 0xD3, 0x05, 0x82, 0xA2, 0x31, 0x51}, + {0x61, 0x22, 0x0D, 0x02, 0xC3, 0x7F, 0x24, 0x05}, + {0x21, 0x62, 0x0E, 0x00, 0xA1, 0xA0, 0x44, 0x17}, + diff --git a/libmednahawk/src/nes/cart.cpp b/libmednahawk/src/nes/cart.cpp new file mode 100644 index 0000000000..7be8256f2d --- /dev/null +++ b/libmednahawk/src/nes/cart.cpp @@ -0,0 +1,786 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include +#include "ppu/ppu.h" +#include "cart.h" +#include "x6502.h" + +#include "../mempatcher.h" + +/* + This file contains all code for coordinating the mapping in of the + address space external to the NES. + It's also (ab)used by the NSF code. +*/ + +uint8 *Page[32],*VPage[8]; +uint8 **VPageR=VPage; +uint8 *VPageG[8]; +uint8 *MMC5SPRVPage[8]; +uint8 *MMC5BGVPage[8]; + +static uint8 PRGIsRAM[32]; /* This page is/is not PRG RAM. */ + +/* 16 are (sort of) reserved for UNIF/iNES and 16 to map other stuff. */ +static int CHRram[32]; +static int PRGram[32]; + +uint8 *PRGptr[32]; +uint8 *CHRptr[32]; + +uint32 PRGsize[32]; +uint32 CHRsize[32]; + +uint32 PRGmask2[32]; +uint32 PRGmask4[32]; +uint32 PRGmask8[32]; +uint32 PRGmask16[32]; +uint32 PRGmask32[32]; + +uint32 CHRmask1[32]; +uint32 CHRmask2[32]; +uint32 CHRmask4[32]; +uint32 CHRmask8[32]; + +uint8 geniestage=0; + +int modcon; + +uint8 genieval[3]; +uint8 geniech[3]; + +uint32 genieaddr[3]; + +static INLINE void setpageptr(int s, uint32 A, uint8 *p, int ram) +{ + uint32 AB=A>>11; + int x; + + if(p) + for(x=(s>>1)-1;x>=0;x--) + { + PRGIsRAM[AB+x]=ram; + Page[AB+x]=p-A; + } + else + for(x=(s>>1)-1;x>=0;x--) + { + PRGIsRAM[AB+x]=0; + Page[AB+x]=0; + } +} + +static uint8 nothing[8192]; + +uint8 *GetCartPagePtr(uint16 A) +{ + int n = A >> 11; + + if(Page[n] == (nothing - (n << 11))) + { + return(0); + } + else + return(Page[n]); +} + +void ResetCartMapping(void) +{ + int x; + + for(x=0;x<32;x++) + { + Page[x]=nothing-x*2048; + PRGptr[x]=CHRptr[x]=0; + PRGsize[x]=CHRsize[x]=0; + } + for(x=0;x<8;x++) + { + MMC5SPRVPage[x]=MMC5BGVPage[x]=VPageR[x]=nothing-0x400*x; + } + +} + +void SetupCartPRGMapping(int chip, uint8 *p, uint32 size, int ram) +{ + PRGptr[chip]=p; + PRGsize[chip]=size; + + PRGmask2[chip]=(size>>11)-1; + PRGmask4[chip]=(size>>12)-1; + PRGmask8[chip]=(size>>13)-1; + PRGmask16[chip]=(size>>14)-1; + PRGmask32[chip]=(size>>15)-1; + + PRGram[chip]=ram?1:0; +} + +void SetupCartCHRMapping(int chip, uint8 *p, uint32 size, int ram) +{ + CHRptr[chip]=p; + CHRsize[chip]=size; + + CHRmask1[chip]=(size>>10)-1; + CHRmask2[chip]=(size>>11)-1; + CHRmask4[chip]=(size>>12)-1; + CHRmask8[chip]=(size>>13)-1; + + CHRram[chip]=ram; +} + +DECLFR(CartBR) +{ + return Page[A>>11][A]; +} + +DECLFW(CartBW) +{ + //printf("Ok: %04x:%02x, %d\n",A,V,PRGIsRAM[A>>11]); + if(PRGIsRAM[A>>11] && Page[A>>11]) + Page[A>>11][A]=V; +} + +DECLFR(CartBROB) +{ + if(!Page[A>>11]) return(X.DB); + return Page[A>>11][A]; +} + +void setprg2r(int r, unsigned int A, unsigned int V) +{ + V&=PRGmask2[r]; + + setpageptr(2,A,PRGptr[r]?(&PRGptr[r][V<<11]):0,PRGram[r]); +} + +void setprg2(uint32 A, uint32 V) +{ + setprg2r(0,A,V); +} + +void setprg4r(int r, unsigned int A, unsigned int V) +{ + V&=PRGmask4[r]; + setpageptr(4,A,PRGptr[r]?(&PRGptr[r][V<<12]):0,PRGram[r]); +} + +void setprg4(uint32 A, uint32 V) +{ + setprg4r(0,A,V); +} + +void setprg8r(int r, unsigned int A, unsigned int V) +{ + if(PRGsize[r]>=8192) + { + V&=PRGmask8[r]; + setpageptr(8,A,PRGptr[r]?(&PRGptr[r][V<<13]):0,PRGram[r]); + } + else + { + uint32 VA=V<<2; + int x; + for(x=0;x<4;x++) + setpageptr(2,A+(x<<11),PRGptr[r]?(&PRGptr[r][((VA+x)&PRGmask2[r])<<11]):0,PRGram[r]); + } +} + +void setprg8(uint32 A, uint32 V) +{ + setprg8r(0,A,V); +} + +void setprg16r(int r, unsigned int A, unsigned int V) +{ + if(PRGsize[r]>=16384) + { + V&=PRGmask16[r]; + setpageptr(16,A,PRGptr[r]?(&PRGptr[r][V<<14]):0,PRGram[r]); + } + else + { + uint32 VA=V<<3; + int x; + + for(x=0;x<8;x++) + setpageptr(2,A+(x<<11),PRGptr[r]?(&PRGptr[r][((VA+x)&PRGmask2[r])<<11]):0,PRGram[r]); + } +} + +void setprg16(uint32 A, uint32 V) +{ + setprg16r(0,A,V); +} + +void setprg32r(int r,unsigned int A, unsigned int V) +{ + if(PRGsize[r]>=32768) + { + V&=PRGmask32[r]; + setpageptr(32,A,PRGptr[r]?(&PRGptr[r][V<<15]):0,PRGram[r]); + } + else + { + uint32 VA=V<<4; + int x; + + for(x=0;x<16;x++) + setpageptr(2,A+(x<<11),PRGptr[r]?(&PRGptr[r][((VA+x)&PRGmask2[r])<<11]):0,PRGram[r]); + } +} + +void setprg32(uint32 A, uint32 V) +{ + setprg32r(0,A,V); +} + +void setchr1r(int r, unsigned int A, unsigned int V) +{ + if(!CHRptr[r]) return; + MDFNPPU_LineUpdate(); + V&=CHRmask1[r]; + if(CHRram[r]) + PPUCHRRAM|=(1<<(A>>10)); + else + PPUCHRRAM&=~(1<<(A>>10)); + VPageR[(A)>>10]=&CHRptr[r][(V)<<10]-(A); +} + +void setchr2r(int r, unsigned int A, unsigned int V) +{ + if(!CHRptr[r]) return; + MDFNPPU_LineUpdate(); + V&=CHRmask2[r]; + VPageR[(A)>>10]=VPageR[((A)>>10)+1]=&CHRptr[r][(V)<<11]-(A); + if(CHRram[r]) + PPUCHRRAM|=(3<<(A>>10)); + else + PPUCHRRAM&=~(3<<(A>>10)); +} + +void setchr4r(int r, unsigned int A, unsigned int V) +{ + if(!CHRptr[r]) return; + MDFNPPU_LineUpdate(); + V&=CHRmask4[r]; + VPageR[(A)>>10]=VPageR[((A)>>10)+1]= + VPageR[((A)>>10)+2]=VPageR[((A)>>10)+3]=&CHRptr[r][(V)<<12]-(A); + + if(CHRram[r]) + PPUCHRRAM |= (15<<(A>>10)); + else + PPUCHRRAM&=~(15<<(A>>10)); +} + +void setchr8r(int r, unsigned int V) +{ + int x; + + if(!CHRptr[r]) return; + MDFNPPU_LineUpdate(); + V&=CHRmask8[r]; + for(x=7;x>=0;x--) + VPageR[x]=&CHRptr[r][V<<13]; + + if(CHRram[r]) + PPUCHRRAM = 0xFF; + else + PPUCHRRAM = 0; +} + +void setchr1(unsigned int A, unsigned int V) +{ + setchr1r(0,A,V); +} + +void setchr2(unsigned int A, unsigned int V) +{ + setchr2r(0,A,V); +} + +void setchr4(unsigned int A, unsigned int V) +{ + setchr4r(0,A,V); +} + +void setchr8(unsigned int V) +{ + setchr8r(0,V); +} + +void setvram8(uint8 *p) +{ + int x; + + MDFNPPU_LineUpdate(); + + for(x=7;x>=0;x--) + VPageR[x]=p; + PPUCHRRAM|=255; +} + +void setvram4(uint32 A, uint8 *p) +{ + int x; + + MDFNPPU_LineUpdate(); + + for(x=3;x>=0;x--) + VPageR[(A>>10)+x]=p-A; + PPUCHRRAM|=(15<<(A>>10)); +} + +void setvramb1(uint8 *p, uint32 A, uint32 b) +{ + MDFNPPU_LineUpdate(); + VPageR[A>>10]=p-A+(b<<10); + PPUCHRRAM|=(1<<(A>>10)); +} + +void setvramb2(uint8 *p, uint32 A, uint32 b) +{ + MDFNPPU_LineUpdate(); + VPageR[(A>>10)]=VPageR[(A>>10)+1]=p-A+(b<<11); + PPUCHRRAM|=(3<<(A>>10)); +} + +void setvramb4(uint8 *p, uint32 A, uint32 b) +{ + int x; + + MDFNPPU_LineUpdate(); + for(x=3;x>=0;x--) + VPageR[(A>>10)+x]=p-A+(b<<12); + PPUCHRRAM|=(15<<(A>>10)); +} + +void setvramb8(uint8 *p, uint32 b) +{ + int x; + + MDFNPPU_LineUpdate(); + for(x=7;x>=0;x--) + VPageR[x]=p+(b<<13); + PPUCHRRAM|=255; +} + +/* This function can be called without calling SetupCartMirroring(). */ + +void setntamem(uint8 *p, int ram, uint32 b) +{ + MDFNPPU_LineUpdate(); + vnapage[b]=p; + PPUNTARAM&=~(1<>2]=V; + break; + + case 0x800b: + case 0x8007: + case 0x8003: + geniech[((A-3)&0xF)>>2]=V; + break; + + case 0x800a: + case 0x8006: + case 0x8002:genieaddr[((A-2)&0xF)>>2] &= 0xFF00; + genieaddr[((A-2)&0xF)>>2] |= V; + break; + + case 0x8009: + case 0x8005: + case 0x8001:genieaddr[((A-1)&0xF)>>2] &= 0x00FF; + genieaddr[((A-1)&0xF)>>2] |= (V | 0x80) << 8; + break; + + case 0x8000:if(!V) + FixGenieMap(); + else + { + modcon = V ^ 0xFF; + if(V == 0x71) + modcon=0; + } + break; + } +} + + +static DECLFR(GenieFix1) +{ + uint8 r=GenieBackup[0](A); + + if((modcon>>1)&1) // No check + return genieval[0]; + else if(r==geniech[0]) + return genieval[0]; + + return r; +} + +static DECLFR(GenieFix2) +{ + uint8 r=GenieBackup[1](A); + + if((modcon>>2)&1) // No check + return genieval[1]; + else if(r==geniech[1]) + return genieval[1]; + + return r; +} + +static DECLFR(GenieFix3) +{ + uint8 r=GenieBackup[2](A); + + if((modcon>>3)&1) // No check + return genieval[2]; + else if(r==geniech[2]) + return genieval[2]; + + return r; +} + + +static void FixGenieMap(void) +{ + geniestage = 2; + + for(int x = 0; x < 8; x++) + VPage[x] = VPageG[x]; + + VPageR = VPage; + + if(!GenieBIOSHooksInstalled) + return; + + for(int i = 0; i < 0x8000; i++) + { + SetReadHandler(i + 0x8000, i + 0x8000, AReadGG[i]); + SetWriteHandler(i + 0x8000, i + 0x8000, BWriteGG[i]); + } + + GenieBIOSHooksInstalled = FALSE; + + for(int x = 0; x < 3; x++) + if((modcon >> (4 + x)) & 1) + { + readfunc tmp[3] = { GenieFix1, GenieFix2, GenieFix3 }; + GenieBackup[x]=GetReadHandler(genieaddr[x]); + SetReadHandler(genieaddr[x],genieaddr[x],tmp[x]); + } + + // Call this last, after GenieBIOSHooksInstalled = FALSE and our read cheat hooks are installed. Yay spaghetti code. + MDFNMP_InstallReadPatches(); +} + +void Genie_Power(void) +{ + if(!geniestage) + return; + + for(int x = 0; x < 3; x++) + { + if(GenieBackup[x]) + { + SetReadHandler(genieaddr[x], genieaddr[x], GenieBackup[x]); + GenieBackup[x] = NULL; + } + genieval[x] = 0xFF; + geniech[x] = 0xFF; + genieaddr[x] = 0xFFFF; + } + + geniestage = 1; + modcon = 0; + + if(!GenieBIOSHooksInstalled) + InstallGenieBIOSHooks(); + + for(int x = 0; x < 8; x++) + VPage[x]=GENIEROM+4096-0x400*x; + + VPageR=VPageG; +} + + +void MDFN_SaveGameSave(CartInfo *LocalHWInfo) +{ + if(LocalHWInfo->battery && LocalHWInfo->SaveGame[0]) + { + FILE *sp; + std::string soot; + + soot = MDFN_MakeFName(MDFNMKF_SAV,0,"sav"); + + if((sp=fopen(soot.c_str(),"wb"))==NULL) + { + MDFN_PrintError(_("WRAM file \"%s\" cannot be written to.\n"),soot.c_str()); + } + else + { + int x; + + for(x=0;x<4;x++) + if(LocalHWInfo->SaveGame[x]) + { + fwrite(LocalHWInfo->SaveGame[x],1, + LocalHWInfo->SaveGameLen[x],sp); + } + } + } +} + +void MDFN_LoadGameSave(CartInfo *LocalHWInfo) +{ + if(LocalHWInfo->battery && LocalHWInfo->SaveGame[0]) + { + FILE *sp; + std::string soot; + + soot = MDFN_MakeFName(MDFNMKF_SAV,0,"sav"); + sp = fopen(soot.c_str(),"rb"); + if(sp!=NULL) + { + int x; + for(x=0;x<4;x++) + if(LocalHWInfo->SaveGame[x]) + fread(LocalHWInfo->SaveGame[x],1,LocalHWInfo->SaveGameLen[x],sp); + } + } +} + diff --git a/libmednahawk/src/nes/cart.h b/libmednahawk/src/nes/cart.h new file mode 100644 index 0000000000..b567b37381 --- /dev/null +++ b/libmednahawk/src/nes/cart.h @@ -0,0 +1,114 @@ +#ifndef __NES_CART_H +#define __NES_CART_H + +#include "sound.h" + +typedef struct __CartInfo { + /* Set by mapper/board code: */ + void (*Power)(struct __CartInfo *); + void (*Reset)(struct __CartInfo *); + void (*Close)(void); + uint8 *SaveGame[4]; /* Pointers to memory to save/load. */ + uint32 SaveGameLen[4]; /* How much memory to save/load. */ + + int (*StateAction)(StateMem *sm, int load, int data_only); /* Save state saving/loading function. */ + + EXPSOUND CartExpSound; /* Board code should set at least HiSync and HiFill to non-NULL if uses expansion sound. */ + + /* Set by iNES/UNIF loading code. */ + int mirror; /* As set in the header or chunk. + iNES/UNIF specific. Intended + to help support games like "Karnov" + that are not really MMC3 but are + set to mapper 4. + */ + int battery; /* Presence of an actual battery. */ + uint8 MD5[16]; + uint32 CRC32; /* Should be set by the iNES/UNIF loading + code, used by mapper/board code, maybe + other code in the future. + */ +} CartInfo; + +void MDFN_SaveGameSave(CartInfo *LocalHWInfo); +void MDFN_LoadGameSave(CartInfo *LocalHWInfo); + +extern uint8 *Page[32],*VPage[8],*MMC5SPRVPage[8],*MMC5BGVPage[8]; + +void ResetCartMapping(void); +void SetupCartPRGMapping(int chip, uint8 *p, uint32 size, int ram); +void SetupCartCHRMapping(int chip, uint8 *p, uint32 size, int ram); +void SetupCartMirroring(int m, int hard, uint8 *extra); +bool CartHasHardMirroring(void); +uint8 *GetCartPagePtr(uint16 A); + +DECLFR(CartBROB); +DECLFR(CartBR); +DECLFW(CartBW); + +extern uint8 *PRGptr[32]; +extern uint8 *CHRptr[32]; + +extern uint32 PRGsize[32]; +extern uint32 CHRsize[32]; + +extern uint32 PRGmask2[32]; +extern uint32 PRGmask4[32]; +extern uint32 PRGmask8[32]; +extern uint32 PRGmask16[32]; +extern uint32 PRGmask32[32]; + +extern uint32 CHRmask1[32]; +extern uint32 CHRmask2[32]; +extern uint32 CHRmask4[32]; +extern uint32 CHRmask8[32]; + +void setprg2(uint32 A, uint32 V); +void setprg4(uint32 A, uint32 V); +void setprg8(uint32 A, uint32 V); +void setprg16(uint32 A, uint32 V); +void setprg32(uint32 A, uint32 V); + +void setprg2r(int r, unsigned int A, unsigned int V); +void setprg4r(int r, unsigned int A, unsigned int V); +void setprg8r(int r, unsigned int A, unsigned int V); +void setprg16r(int r, unsigned int A, unsigned int V); +void setprg32r(int r, unsigned int A, unsigned int V); + +void setchr1r(int r, unsigned int A, unsigned int V); +void setchr2r(int r, unsigned int A, unsigned int V); +void setchr4r(int r, unsigned int A, unsigned int V); +void setchr8r(int r, unsigned int V); + +void setchr1(unsigned int A, unsigned int V); +void setchr2(unsigned int A, unsigned int V); +void setchr4(unsigned int A, unsigned int V); +void setchr8(unsigned int V); + +void setvram4(uint32 A, uint8 *p); +void setvram8(uint8 *p); + +void setvramb1(uint8 *p, uint32 A, uint32 b); +void setvramb2(uint8 *p, uint32 A, uint32 b); +void setvramb4(uint8 *p, uint32 A, uint32 b); +void setvramb8(uint8 *p, uint32 b); + +void setmirror(int t); +void setmirrorw(int a, int b, int c, int d); +void setntamem(uint8 *p, int ram, uint32 b); + +#define MI_H 0 +#define MI_V 1 +#define MI_0 2 +#define MI_1 3 + +extern uint8 geniestage; + +bool Genie_Init(void); +void Genie_Kill(void); +bool Genie_BIOSInstalled(void); + +void Genie_Power(void); + + +#endif diff --git a/libmednahawk/src/nes/debug-driver.h b/libmednahawk/src/nes/debug-driver.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libmednahawk/src/nes/debug.cpp b/libmednahawk/src/nes/debug.cpp new file mode 100644 index 0000000000..4ff4059e01 --- /dev/null +++ b/libmednahawk/src/nes/debug.cpp @@ -0,0 +1,514 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include +#include "x6502.h" +#include "debug.h" +#include "ppu/ppu.h" +#include "cart.h" +#include "../dis6502.h" + +#define NUMBT 64 + +struct BTEntry +{ + uint32 from; + uint32 to; + uint32 vector; + uint32 branch_count; +}; + +static BTEntry BTEntries[NUMBT]; +static int BTIndex = 0; + +void NESDBG_AddBranchTrace(uint32 from, uint32 to, uint32 vector) +{ + BTEntry *prevbt = &BTEntries[(BTIndex + NUMBT - 1) % NUMBT]; + + from &= 0xFFFF; + to &= 0xFFFF; + + //if(BTEntries[(BTIndex - 1) & 0xF] == PC) return; + + if(prevbt->from == from && prevbt->to == to && prevbt->vector == vector && prevbt->branch_count < 0xFFFFFFFF) + prevbt->branch_count++; + else + { + BTEntries[BTIndex].from = from; + BTEntries[BTIndex].to = to; + BTEntries[BTIndex].vector = vector; + BTEntries[BTIndex].branch_count = 1; + + BTIndex = (BTIndex + 1) % NUMBT; + } +} + +static std::vector GetBranchTrace(void) +{ + BranchTraceResult tmp; + std::vector ret; + + for(int x = 0; x < NUMBT; x++) + { + const BTEntry *bt = &BTEntries[(x + BTIndex) % NUMBT]; + + tmp.count = bt->branch_count; + trio_snprintf(tmp.from, sizeof(tmp.from), "%04X", bt->from); + trio_snprintf(tmp.to, sizeof(tmp.to), "%04X", bt->to); + + tmp.code[1] = 0; + switch(bt->vector) + { + default: tmp.code[0] = 0; + break; + + case 0xFFFC: + tmp.code[0] = 'R'; // RESET + break; + + case 0xFFFA: + tmp.code[0] = 'N'; // NMI + break; + + case 0xFFFE: + tmp.code[0] = 'I'; // IRQ + break; + } + + ret.push_back(tmp); + } + return(ret); +} + +uint32 NESDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical) +{ + uint32 ret = 0; + + for(unsigned int i = 0; i < bsize; i++) + { + A &= 0xFFFF; + + if(hl) + fceuindbg = 1; + ret |= ARead[A](A) << (i * 8); + fceuindbg = 0; + + A++; + } + return(ret); +} + +void NESDBG_MemPoke(uint32 A, uint32 V, unsigned int bsize, bool hl, bool logical) +{ + extern uint8 *Page[32]; + + for(unsigned int i = 0; i < bsize; i++) + { + A &= 0xFFFF; + if(hl) + { + if(Page[A/2048]) + Page[A/2048][A] = V & 0xFF; + } + else + BWrite[A](A,V & 0xFF); + + V >>= 8; + A++; + } +} + +extern NESGameType *GameInterface; + +void NESDBG_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + fceuindbg = 1; + while(Length--) + { + Address &= 0xFFFF; + *Buffer = ARead[Address](Address); + + Address++; + Buffer++; + } + fceuindbg = 0; + } +} + +void NESDBG_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + fceuindbg = 1; + while(Length--) + { + Address &= 0xFFFF; + uint8 *page = GetCartPagePtr(Address); + + if(page && hl) + page[Address] = *Buffer; + else + BWrite[Address](Address,*Buffer); + + Address++; + Buffer++; + } + fceuindbg = 0; + } +} + + +void NESDBG_IRQ(int level) +{ + + +} + +uint32 NESDBG_GetVector(int level) +{ + // Fixme? + return(0); +} + +class Dis2A03 : public Dis6502 +{ + public: + Dis2A03(void) : Dis6502(0) + { + + } + + uint8 GetX(void) + { + return(X.X); + } + + uint8 GetY(void) + { + return(X.Y); + } + + uint8 Read(uint16 A) + { + uint8 ret; + fceuindbg = 1; + ret = ARead[A](A); + fceuindbg = 0; + return(ret); + } +}; + +static Dis2A03 DisObj; + +void NESDBG_Disassemble(uint32 &a, uint32 SpecialA, char *TextBuf) +{ + uint16 tmpa = a; + std::string ret; + + DisObj.Disassemble(tmpa, SpecialA, TextBuf); + + a = tmpa; +} + +typedef struct __NES_BPOINT { + unsigned int A[2]; + int type; +} NES_BPOINT; + +static std::vector BreakPointsPC, BreakPointsRead, BreakPointsWrite; + +static void (*CPUHook)(uint32 PC) = NULL; +static bool FoundBPoint = 0; +static void (*BPCallB)(uint32 PC) = NULL; + +void NESDBG_TestFoundBPoint(void) +{ + if(FoundBPoint) + { + BPCallB(X.PC); + } + FoundBPoint = 0; +} + +static void CPUHandler(uint32 PC) +{ + std::vector::iterator bpit; + + if(!FoundBPoint) + for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++) + { + if(PC >= bpit->A[0] && PC <= bpit->A[1]) + { + BPCallB(PC); + break; + } + } + + if(CPUHook) + CPUHook(PC); +} + +static uint8 ReadHandler(X6502 *cur_X, unsigned int A) +{ + if(cur_X->preexec) + { + std::vector::iterator bpit; + + for(bpit = BreakPointsRead.begin(); bpit != BreakPointsRead.end(); bpit++) + { + if(A >= bpit->A[0] && A <= bpit->A[1]) + { + FoundBPoint = 1; + break; + } + } + } + return(ARead[A](A)); +} + +static void WriteHandler(X6502 *cur_X, unsigned int A, uint8 V) +{ + if(cur_X->preexec) + { + std::vector::iterator bpit; + + for(bpit = BreakPointsWrite.begin(); bpit != BreakPointsWrite.end(); bpit++) + { + if(A >= bpit->A[0] && A <= bpit->A[1]) + { + FoundBPoint = 1; + break; + } + } + } + else + BWrite[A](A,V); +} + +static void AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) +{ + NES_BPOINT tmp; + + tmp.A[0] = A1; + tmp.A[1] = A2; + tmp.type =type; + + + if(type == BPOINT_READ) + BreakPointsRead.push_back(tmp); + else if(type == BPOINT_WRITE) + BreakPointsWrite.push_back(tmp); + else if(type == BPOINT_PC) + BreakPointsPC.push_back(tmp); + + X6502_Debug(BreakPointsPC.size() ? CPUHandler : CPUHook, BreakPointsRead.size() ? ReadHandler : NULL, BreakPointsWrite.size() ? WriteHandler : 0); +} + +static void FlushBreakPoints(int type) +{ + std::vector::iterator bpit; + + if(type == BPOINT_READ) + BreakPointsRead.clear(); + else if(type == BPOINT_WRITE) + BreakPointsWrite.clear(); + else if(type == BPOINT_PC) + BreakPointsPC.clear(); + + X6502_Debug(BreakPointsPC.size() ? CPUHandler : CPUHook, BreakPointsRead.size() ? ReadHandler : NULL, BreakPointsWrite.size() ? WriteHandler : 0); +} + +static void SetCPUCallback(void (*callb)(uint32 PC)) +{ + CPUHook = callb; + X6502_Debug(BreakPointsPC.size() ? CPUHandler : CPUHook, BreakPointsRead.size() ? ReadHandler : NULL, BreakPointsWrite.size() ? WriteHandler : 0); +} + +static void SetBPCallback(void (*callb)(uint32 PC)) +{ + BPCallB = callb; +} + +enum +{ + CPU_GSREG_PC = 0, + CPU_GSREG_A, + CPU_GSREG_X, + CPU_GSREG_Y, + CPU_GSREG_SP, + CPU_GSREG_P, + CPU_GSREG_TIMESTAMP +}; + +static RegType NESCPURegs[] = +{ + { CPU_GSREG_PC, "PC", "Program Counter", 2 }, + { CPU_GSREG_A, "A", "Accumulator", 1 }, + { CPU_GSREG_X, "X", "X Index", 1 }, + { CPU_GSREG_Y, "Y", "Y Index", 1 }, + { CPU_GSREG_SP, "SP", "Stack Pointer", 1 }, + { CPU_GSREG_P, "P", "Status", 1 }, + { CPU_GSREG_TIMESTAMP, "TiSt", "Timestamp", 4 }, + { 0, "", "", 0 }, +}; + +static uint32 GetRegister_CPU(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 value = 0xDEADBEEF; + + switch(id) + { + case CPU_GSREG_PC: + value = X.PC; + break; + + case CPU_GSREG_A: + value = X.A; + break; + + case CPU_GSREG_X: + value = X.X; + break; + + case CPU_GSREG_Y: + value = X.Y; + break; + + case CPU_GSREG_SP: + value = X.S; + break; + + case CPU_GSREG_P: + value = X.P; + if(special) + { + trio_snprintf(special, special_len, "N: %d, V: %d, D: %d, I: %d, Z: %d, C: %d", (int)(bool)(value & N_FLAG), + (int)(bool)(value & V_FLAG), + (int)(bool)(value & D_FLAG), + (int)(bool)(value & I_FLAG), + (int)(bool)(value & Z_FLAG), + (int)(bool)(value & C_FLAG)); + } + break; + + case CPU_GSREG_TIMESTAMP: + value = timestamp; + break; + } + + return(value); +} + +static void SetRegister_CPU(const unsigned int id, uint32 value) +{ + switch(id) + { + case CPU_GSREG_PC: + X.PC = value & 0xFFFF; + break; + + case CPU_GSREG_A: + X.A = value & 0xFF; + break; + + case CPU_GSREG_X: + X.X = value & 0xFF; + break; + + case CPU_GSREG_Y: + X.Y = value & 0xFF; + break; + + case CPU_GSREG_SP: + X.S = value & 0xFF; + break; + + case CPU_GSREG_P: + X.P = (value & 0xFF) & ~(B_FLAG | U_FLAG); + break; + + case CPU_GSREG_TIMESTAMP: + break; + } +} + +static RegGroupType NESCPURegsGroup = +{ + "6502", + NESCPURegs, + GetRegister_CPU, + SetRegister_CPU +}; + + +static RegType NESPPURegs[] = +{ + { PPU_GSREG_PPU0, "PPU0", "PPU0", 1 }, + { PPU_GSREG_PPU1, "PPU1", "PPU1", 1 }, + { PPU_GSREG_PPU2, "PPU2", "PPU2", 1 }, + { PPU_GSREG_PPU3, "PPU3", "PPU3", 1 }, + { PPU_GSREG_XOFFSET, "XOffset", "Tile X Offset", 1}, + { PPU_GSREG_RADDR, "RAddr", "Refresh Address", 2}, + { PPU_GSREG_TADDR, "TAddr", "Temp Address", 2}, + { PPU_GSREG_VRAMBUF, "VRAM Buf", "VRAM Buffer", 1}, + { PPU_GSREG_VTOGGLE, "V-Toggle", "High/low Toggle", 1}, + { PPU_GSREG_SCANLINE, "Scanline", "Current Scanline(0 = first visible, 0xF0 = in vblank)", 1 }, + { 0, "", "", 0 }, +}; + +static RegGroupType NESPPURegsGroup = +{ + "PPU", + NESPPURegs, + NULL, + NULL, + NESPPU_GetRegister, + NESPPU_SetRegister +}; + +DebuggerInfoStruct NESDBGInfo = +{ + "cp437", + 3, + 1, // Instruction alignment(bytes) + 16, + 16, + 0x0000, // Default watch addr + 0x0000, // ZP + NESDBG_MemPeek, + NESDBG_Disassemble, + NULL, + NESDBG_IRQ, + NESDBG_GetVector, + FlushBreakPoints, + AddBreakPoint, + SetCPUCallback, + SetBPCallback, + GetBranchTrace, + NESPPU_SetGraphicsDecode, +}; + +bool NESDBG_Init(void) +{ + MDFNDBG_AddRegGroup(&NESCPURegsGroup); + MDFNDBG_AddRegGroup(&NESPPURegsGroup); + + return(TRUE); +} diff --git a/libmednahawk/src/nes/debug.h b/libmednahawk/src/nes/debug.h new file mode 100644 index 0000000000..14eea0e678 --- /dev/null +++ b/libmednahawk/src/nes/debug.h @@ -0,0 +1,32 @@ +#ifndef _DEBUG_H +#define _DEBUG_H + +#ifdef WANT_DEBUGGER + +#include "debug-driver.h" + +#include "x6502struct.h" + +uint32 NESDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical); +void NESDBG_MemPoke(uint32 A, uint32 V, unsigned int bsize, bool, bool logical); +void NESDBG_IRQ(int level); +uint32 NESDBG_GetVector(int level); +void NESDBG_Disassemble(uint32 &a, uint32 SpecialA, char *); +uint32 NESDBG_GetRegister(const std::string &name, std::string *special); +void NESDBG_SetRegister(const std::string &name, uint32 value); + + +void NESDBG_TestFoundBPoint(void); + +void NESDBG_AddBranchTrace(uint32 from, uint32 to, uint32 vector); + +void NESDBG_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer); +void NESDBG_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer); + +bool NESDBG_Init(void); + +extern DebuggerInfoStruct NESDBGInfo; + +#endif + +#endif diff --git a/libmednahawk/src/nes/fds-driver.h b/libmednahawk/src/nes/fds-driver.h new file mode 100644 index 0000000000..bce4ee63a4 --- /dev/null +++ b/libmednahawk/src/nes/fds-driver.h @@ -0,0 +1,4 @@ +int MDFNI_FDSInsert(int oride); +int MDFNI_FDSEject(void); +void MDFNI_FDSSelect(void); + diff --git a/libmednahawk/src/nes/fds-sound.cpp b/libmednahawk/src/nes/fds-sound.cpp new file mode 100644 index 0000000000..1223e5fe10 --- /dev/null +++ b/libmednahawk/src/nes/fds-sound.cpp @@ -0,0 +1,507 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "x6502.h" +#include "fds.h" +#include "sound.h" +#include "cart.h" +#include "nsf.h" +#include "fds-sound.h" + +static void RenderSoundHQ(void); + +static DECLFW(FDSWaveWrite); +static DECLFR(FDSWaveRead); + +static DECLFR(FDSSRead); +static DECLFW(FDSSWrite); + +//static bool cwave_ip = TRUE; + +static int32 env_divider; // Main envelope clock divider. + +static int32 sample_out_cache; // Sample out cache, with volume stuff applied. + +static uint32 cwave_freq; // $4082 and lower 4 bits of $4083 +static uint32 cwave_pos; +static uint8 cwave_control; // $4083, lower 6 bits masked out. + +static uint32 mod_freq; // $4086 and lower 4 bits of $4087 +static uint32 mod_pos; // Should be named "mwave_pos", but "mod_pos" distinguishes it more. +static bool mod_disabled; // Upper bit of $4087 + +static uint8 master_control; // Waveform write enable and master volume($4089) +static uint8 env_speed; // Master envelope speed controller($408A). + +static uint8 env_control[2]; // Envelope control(4080/4084) +static uint8 volume[2]; // Current volumes. + +static int32 mwave[0x20]; // Modulation waveform. Stored in expanded(after LUT) form. + // Set to 0x10 if the original value is 0x4(reset sweep bias accumulator). +static uint8 cwave[0x40]; // Game-defined waveform(carrier) + +static int32 env_counter[2]; + +static uint32 sweep_bias; + +static int32 cov; // Current out volume, 8 bits of after-decimal place precision. + +static int32 FBC = 0; + +// We need to call this function whenever volume[0] changes, and on changes in the lower 2 bits of master_control, +static INLINE void CalcCOV(void) +{ + int k = volume[0]; + +// printf("%d %d\n", volume[0], master_control & 0x3); + + if(k > 0x20) + k = 0x20; + + cov = 256 * k * 6 / ((master_control & 0x3) + 2); +} + +static DECLFR(FDSSRead) +{ + if(!fceuindbg) + RenderSoundHQ(); + + //printf("Read: %04x\n", A); + switch(A & 0xF) + { + case 0x0: return(volume[0] | (X.DB&0xC0)); + case 0x2: return(volume[1] | (X.DB&0xC0)); + } + return(X.DB); +} + +bool reset_mode = 0; + +static INLINE int GetEnvReload(uint8 value) +{ + int ret; + + ret = (value & 0x3F) + 1; + + return(ret); +} + +static DECLFW(FDSSWrite) +{ + RenderSoundHQ(); + + //printf("%04x %02x, %lld\n", A, V, timestampbase + timestamp); + A -= 0x4080; + switch(A) + { + default: //printf("%04x %02x\n", A, V); + break; + + case 0x0: if(V & 0x80) + { + volume[0] = V & 0x3F; + CalcCOV(); + } + else if(env_control[0] & 0x80) + env_counter[0] = GetEnvReload(V); + + env_control[0] = V; + break; + + case 0x2: cwave_freq &= 0xFF00; + cwave_freq |= V << 0; + break; + + case 0x3: + if(!(V & 0x80) && (cwave_control & 0x80)) + cwave_pos = 0; + + //if(!(V & 0x40) && (cwave_control & 0x40)) + // env_divider = env_speed << 3; + + cwave_freq &= 0x00FF; + cwave_freq |= (V & 0xF) << 8; + cwave_control = V & 0xC0; + break; + + case 0x4: if(V & 0x80) + { + volume[1] = V & 0x3F; + } + else if(env_control[1] & 0x80) + env_counter[1] = GetEnvReload(V); + + env_control[1] = V; + break; + + case 0x5: sweep_bias = (V & 0x7F) << 4; + mod_pos = 0; + //printf("Sweep Bias: %02x\n", V & 0x7F); + break; + + case 0x6: mod_freq &= 0xFF00; + mod_freq |= V << 0; + break; + + case 0x7: + //if(!(V & 0x80) && mod_disabled) + // mod_pos = 0; + + mod_freq &= 0x00FF; + mod_freq |= (V & 0xF) << 8; + mod_disabled = (bool)(V & 0x80); + break; + + case 0x8: + if(mod_disabled) + { + static const int bias_tab[8] = { 0, 1, 2, 4, 0, -4, -2, -1 }; + + for(int i = 0; i < 31; i++) + mwave[i] = mwave[i + 1]; + + mwave[0x1F] = bias_tab[V & 0x7]; + + if((V & 0x7) == 0x4) + mwave[0x1F] = 0x10; + } + //else + // puts("NYAR"); + break; + + case 0x9: master_control = V; + CalcCOV(); + break; + + case 0xA: env_speed = V; + break; + } +} + +static void ClockEnv(void) +{ + for(int x = 0; x < 2; x++) + { + if((env_control[x] & 0x80) || (cwave_control & 0x40)) + continue; + + env_counter[x]--; + + if(env_counter[x] <= 0) + { + if(env_control[x] & 0x40) // Fade in + { + if(volume[x] < 0x20) + volume[x]++; + } + else // Fade out + { + if(volume[x] > 0) + volume[x]--; + } + if(!x) + CalcCOV(); + + env_counter[x] = GetEnvReload(env_control[x]); + } + } +} + +static DECLFR(FDSWaveRead) +{ + if(master_control & 0x80) + return(cwave[A&0x3f]|(X.DB&0xC0)); + else + { + //puts("MEOWARG"); + return(X.DB); + } +} + +static DECLFW(FDSWaveWrite) +{ + if(master_control & 0x80) + { + const int index = A & 0x3F; + + //printf("%04x %02x, %lld\n", A, V, timestampbase + timestamp); + + cwave[index] = V & 0x3F; + } +} + +static uint32 prev_mod_pos = 0; +static int32 temp = 0; +int mod_div = 0; + +static INLINE void ClockMod(void) +{ + if(!mod_disabled) + { + prev_mod_pos = mod_pos; + + mod_pos += mod_freq; + + if((mod_pos & (0x3F << 12)) != (prev_mod_pos & (0x3F << 12))) + { + const int32 mw = mwave[((mod_pos >> 17) & 0x1F)]; + + sweep_bias = (sweep_bias + mw) & 0x7FF; + //printf("%d %d\n", mod_pos >> 17, sweep_bias); + if(mw == 0x10) + sweep_bias = 0; + } + + temp = sign_x_to_s32(11, sweep_bias) * ((volume[1] > 0x20) ? 0x20 : volume[1]); + + // >> 4 or / 16? / 16 sounds better in Zelda... + if(temp & 0x0F0) + { + temp /= 256; + if(sweep_bias & 0x400) + temp--; + else + temp += 2; + } + else + temp /= 256; + + if(temp >= 194) + { + //printf("Oops: %d\n", temp); + temp -= 258; + } + if(temp < -64) + { + //printf("Oops2: %d\n", temp); + temp += 256; + } + } +} + +static INLINE void ClockCarrier(void) +{ + int32 cur_cwave_freq; + + if(!mod_disabled) + { + cur_cwave_freq = (int32)(cwave_freq << 6) + (int32)cwave_freq * temp; + + if(cur_cwave_freq < 0) + cur_cwave_freq = 0; + } + else + cur_cwave_freq = cwave_freq << 6; + + cwave_pos += cur_cwave_freq; +} + +static INLINE void FDSDoSound(void) +{ + uint32 prev_cwave_pos = cwave_pos; + + ClockMod(); + + if(!(master_control & 0x80) && !(cwave_control & 0x80)) + ClockCarrier(); + + if(env_speed) + { + env_divider--; + if(env_divider <= 0) + { + env_divider = env_speed << 3; + + ClockEnv(); + } + } + + #if 0 + if(cwave_ip) + { + int k = volume[0]; + + if(k > 0x20) + k = 0x20; + + //printf("%d, %d, %lld\n", prev_cwave_pos >> 22, cwave_pos >> 22, timestampbase + timestamp); + + int32 cur, delta, iped; + + cur = (cwave[(cwave_pos >> 22) & 0x3F] - 0x20) * k * 6; + delta = ((cwave[((cwave_pos >> 22) + 1) & 0x3F] - 0x20) * k * 6) - cur; + + iped = cur + ((delta * ((cwave_pos >> 14) & 0xFF)) >> 8); + + sample_out_cache = iped / ((master_control & 0x3) + 2); + } + else + #endif + + if((cwave_pos ^ prev_cwave_pos) & (1 << 22)) + //if(!(master_control & 0x80) && !(cwave_control & 0x80)) + { + //printf("%d, %d, %lld\n", prev_cwave_pos >> 22, cwave_pos >> 22, timestampbase + timestamp); + + sample_out_cache = ((cwave[(cwave_pos >> 22) & 0x3F] - 0x20) * cov) >> 8; + } +} + +#define NZEROS 2 +#define NPOLES 2 +#define GAIN 5.172298875e+03 + +static float xv[NZEROS+1], yv[NPOLES+1]; + +static INLINE double filterloop(double input) +{ + xv[0] = xv[1]; + xv[1] = xv[2]; + xv[2] = input / GAIN; + yv[0] = yv[1]; + yv[1] = yv[2]; + + yv[2] = (xv[0] + xv[2]) + 2 * xv[1] + + ( -0.9610604561 * yv[0]) + ( 1.9602871056 * yv[1]); + return(yv[2]); +} + +static void RenderSoundHQ(void) +{ + //MDFN_DispMessage("%02x\n", volume[1]); + for(uint32 x = FBC; x < SOUNDTS; x++) + { + FDSDoSound(); + + WaveHiEx[x] += sample_out_cache; //filterloop(sample_out_cache); + } + + FBC = SOUNDTS; +} + +static void HQSync(int32 ts) +{ + FBC=ts; +} + +int NSFFDS_Init(EXPSOUND *ep, bool MultiChip) +{ + //memset(&fdso,0,sizeof(fdso)); + + ep->HiSync=HQSync; + ep->HiFill=RenderSoundHQ; + + SetReadHandler(0x4040,0x407f,FDSWaveRead); + NSFECSetWriteHandler(0x4040,0x407f,FDSWaveWrite); + NSFECSetWriteHandler(0x4080,0x408A,FDSSWrite); + SetReadHandler(0x4090,0x4092,FDSSRead); + + return(1); +} + + +bool FDSSound_Init(void) +{ + EXPSOUND TmpExpSound; + memset(&TmpExpSound, 0, sizeof(TmpExpSound)); + + SetReadHandler(0x4040, 0x407f, FDSWaveRead); + SetWriteHandler(0x4040, 0x407f, FDSWaveWrite); + SetWriteHandler(0x4080, 0x408A, FDSSWrite); + SetReadHandler(0x4090, 0x4092, FDSSRead); + + TmpExpSound.HiSync=HQSync; + TmpExpSound.HiFill=RenderSoundHQ; + + GameExpSound.push_back(TmpExpSound); + + return(1); +} + + +void FDSSound_Power(void) +{ + env_divider = 0; + sample_out_cache = 0; + + cwave_freq = 0; + cwave_pos = 0; + cwave_control = 0; + + mod_freq = 0; + mod_pos = 0; + mod_disabled = 0; + + master_control = 0; + env_speed = 0; + + memset(&env_control, 0, sizeof(env_control)); + memset(&volume, 0, sizeof(volume)); + memset(cwave, 0, sizeof(cwave)); + memset(mwave, 0, sizeof(mwave)); + memset(env_counter, 0, sizeof(env_counter)); + + sweep_bias = 0; +} + + +int FDSSound_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(env_divider), + + SFVAR(sample_out_cache), + + SFVAR(cwave_freq), + SFVAR(cwave_pos), + SFVAR(cwave_control), + + SFVAR(mod_freq), + SFVAR(mod_pos), + SFVAR(mod_disabled), + + SFVAR(master_control), + SFVAR(env_speed), + + SFARRAY(env_control, 2), + SFARRAY(volume, 2), + SFARRAY32(mwave, 0x20), + SFARRAY(cwave, 0x40), + + SFARRAY32(env_counter, 2), + + SFVAR(sweep_bias), + + SFEND + }; + + if(!load) + { + + } + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "FDSS"); + + if(load) + { + for(int i = 0; i < 0x40; i++) + cwave[i] &= 0x3F; + } + return(ret); +} diff --git a/libmednahawk/src/nes/fds-sound.h b/libmednahawk/src/nes/fds-sound.h new file mode 100644 index 0000000000..52dd7413e2 --- /dev/null +++ b/libmednahawk/src/nes/fds-sound.h @@ -0,0 +1,3 @@ +bool FDSSound_Init(void); +void FDSSound_Power(void); +int FDSSound_StateAction(StateMem *sm, int load, int data_only); diff --git a/libmednahawk/src/nes/fds.cpp b/libmednahawk/src/nes/fds.cpp new file mode 100644 index 0000000000..a72132837b --- /dev/null +++ b/libmednahawk/src/nes/fds.cpp @@ -0,0 +1,805 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "x6502.h" +#include "fds.h" +#include "sound.h" +#include "cart.h" +#include "nsf.h" +#include "fds-sound.h" + +/* TODO: Add code to put a delay in between the time a disk is inserted + and the when it can be successfully read/written to. This should + prevent writes to wrong places OR add code to prevent disk ejects + when the virtual motor is on(mmm...virtual motor). +*/ + +static DECLFR(FDSRead4030); +static DECLFR(FDSRead4031); +static DECLFR(FDSRead4032); +static DECLFR(FDSRead4033); + +static DECLFW(FDSWrite); + +static DECLFR(FDSBIOSRead); +static DECLFR(FDSRAMRead); +static DECLFW(FDSRAMWrite); +static void FDSPower(void); +static void FDSInit(void); +static void FDSFix(int a); + + +static uint8 *FDSRAM = NULL; +static uint8 *CHRRAM = NULL; + +static uint8 V4023; +static uint8 ExLatch; + +static uint8 Control; + +static int32 IRQCounter, IRQReload, IRQControl; + +static void FDSClose(void); + +static uint8 FDSBIOS[8192]; + +/* Original disk data backup, to help in creating save states. */ +static uint8 *diskdatao[8]={0,0,0,0,0,0,0,0}; + +static uint8 *diskdata[8]={0,0,0,0,0,0,0,0}; + +static unsigned int TotalSides; +static bool DiskWritten; /* Set to 1 if disk was written to. */ +static uint8 writeskip; +static uint32 DiskPtr; +static int32 DiskSeekIRQ; +static uint8 SelectDisk,InDisk; + +static int FDS_StateAction(StateMem *sm, int load, int data_only); + +#define DC_INC 1 + +int FDS_DiskInsert(int oride) +{ + if(InDisk==255) + { + MDFN_DispMessage(_("Disk %1$d Side %2$s Inserted"),SelectDisk>>1,(SelectDisk&1)?"B":"A"); + InDisk=SelectDisk; + } + else + { + MDFN_DispMessage(_("Disk %1$d Side %2$s Ejected"),SelectDisk>>1,(SelectDisk&1)?"B":"A"); + InDisk=255; + } + return(TRUE); +} + +int FDS_DiskEject(void) +{ + InDisk=255; + return(TRUE); +} + +int FDS_DiskSelect(void) +{ + if(InDisk!=255) + { + MDFN_DispMessage(_("Eject disk before selecting.")); + return(FALSE); + } + SelectDisk=((SelectDisk+1)%TotalSides)&3; + MDFN_DispMessage(_("Disk %1$d Side %2$s Selected"),SelectDisk>>1,(SelectDisk&1)?"B":"A"); + return(TRUE); +} + +static void FDSFix(int a) +{ + if(IRQCounter) + { + IRQCounter -= a; + if(IRQCounter <= 0) + { + //extern int scanline; + //printf("FDS IRQ: %d\n", scanline); + + if(IRQControl & 1) + IRQCounter = IRQReload; + else + IRQCounter = 0; + X6502_IRQBegin(MDFN_IQEXT); + } + } + + if(DiskSeekIRQ>0) + { + DiskSeekIRQ-=a; + if(DiskSeekIRQ<=0) + { + if(Control & 0x80) + { + X6502_IRQBegin(MDFN_IQEXT2); + } + } + } +} + +static DECLFR(FDSRead4030) +{ + uint8 ret=0; + + /* Cheap hack. */ + if(X.IRQlow&MDFN_IQEXT) ret|=1; + if(X.IRQlow&MDFN_IQEXT2) ret|=2; + + if(!fceuindbg) + { + X6502_IRQEnd(MDFN_IQEXT); + X6502_IRQEnd(MDFN_IQEXT2); + } + //printf("Read 4030: %02x\n", ret); + + return ret; +} + +static DECLFR(FDSRead4031) +{ + static uint8 z=0; + if(InDisk!=255) + { + z=diskdata[InDisk][DiskPtr]; + if(!fceuindbg) + { + if(DiskPtr<64999) DiskPtr++; + DiskSeekIRQ=150; + X6502_IRQEnd(MDFN_IQEXT2); + } + } + return z; +} +static DECLFR(FDSRead4032) +{ + uint8 ret; + + ret=X.DB&~7; + if(InDisk==255) + ret|=5; + + if(InDisk==255 || !(Control & 1) || (Control & 2)) + ret|=2; + return ret; +} + +static DECLFR(FDSRead4033) +{ + return(0x80 & ExLatch); // battery +} + +static DECLFW(FDSRAMWrite) +{ + (FDSRAM-0x6000)[A]=V; +} + +static DECLFR(FDSBIOSRead) +{ + return (FDSBIOS-0xE000)[A]; +} + +static DECLFR(FDSRAMRead) +{ + return (FDSRAM-0x6000)[A]; +} + +static DECLFW(FDSWrite) +{ +// extern int scanline; +// if(A == 0x4020 || A == 0x4021 || A == 0x4022 || A == 0x4023) +// MDFN_printf("IRQ Write : $%04x:$%02x, %d %08x %08x %02x\n",A,V,scanline, IRQReload, IRQCounter, V4023); +// else +// MDFN_printf("$%04x:$%02x, %d %08x %08x\n",A,V,scanline, IRQReload, IRQCounter); + + switch(A) + { + case 0x4020: + if(V4023 & 1) + { + IRQReload &= 0xFF00; + IRQReload |= V; + } + break; + + case 0x4021: + if(V4023 & 1) + { + IRQReload &= 0x00FF; + IRQReload |= V << 8; + } + break; + + case 0x4022: + X6502_IRQEnd(MDFN_IQEXT); + + if(V4023 & 1) + { + if(V & 2) + IRQCounter = IRQReload; + + IRQControl = V & 1; + } + break; + + case 0x4023: + V4023 = V; + break; + + case 0x4024: + if(InDisk!=255 && !(Control & 0x4) && (V4023 & 0x1)) + { + if(DiskPtr>=0 && DiskPtr<65500) + { + if(writeskip) writeskip--; + else if(DiskPtr>=2) + { + DiskWritten = true; + diskdata[InDisk][DiskPtr-2]=V; + } + } + } + break; + + case 0x4025: + X6502_IRQEnd(MDFN_IQEXT2); + if(InDisk!=255) + { + if(!(V&0x40)) + { + if((Control & 0x40) && !(V & 0x10)) + { + DiskSeekIRQ=200; + DiskPtr-=2; + } + if(DiskPtr<0) DiskPtr=0; + } + if(!(V&0x4)) writeskip=2; + if(V&2) {DiskPtr=0;DiskSeekIRQ=200;} + if(V&0x40) DiskSeekIRQ=200; + } + setmirror(((V>>3)&1)^1); + + Control = V; + break; + + case 0x4026: + ExLatch = V; + break; + + } +} + +static void FreeFDSMemory(void) +{ + for(unsigned int x = 0; x < TotalSides; x++) + { + if(diskdata[x]) + { + MDFN_free(diskdata[x]); + diskdata[x] = NULL; + } + + if(diskdatao[x]) + { + MDFN_free(diskdatao[x]); + diskdatao[x] = NULL; + } + } + + if(FDSRAM) + { + MDFN_free(FDSRAM); + FDSRAM = NULL; + } + + if(CHRRAM) + { + MDFN_free(CHRRAM); + CHRRAM = NULL; + } +} + +static int SubLoad(MDFNFILE *fp) +{ + uint8 header[16]; + + fp->fread(header, 16, 1); + + if(memcmp(header,"FDS\x1a",4)) + { + if(!(memcmp(header+1,"*NINTENDO-HVC*",14))) + { + long t; + + t = fp->Size(); + + if(t < 65500) + t = 65500; + + TotalSides=t/65500; + + fp->rewind(); + } + else + return(FALSE); + } + else + TotalSides=header[4]; + + if(TotalSides > 8) TotalSides=8; + if(TotalSides < 1) TotalSides=1; + + for(unsigned int x = 0; x < TotalSides; x++) + { + diskdata[x] = (uint8 *)MDFN_malloc(65500, _("FDS Disk Data")); + + if(!diskdata[x]) + { + return(0); + } + fp->fread(diskdata[x], 1, 65500); + } + + return(1); +} + +static int FDS_StateAction(StateMem *sm, int load, int data_only) +{ + unsigned int x; + SFORMAT StateRegs[] = + { + SFARRAY(diskdata[0], 65500), + SFARRAY(diskdata[1], 65500), + SFARRAY(diskdata[2], 65500), + SFARRAY(diskdata[3], 65500), + SFARRAY(diskdata[4], 65500), + SFARRAY(diskdata[5], 65500), + SFARRAY(diskdata[6], 65500), + SFARRAY(diskdata[7], 65500), + SFARRAY(FDSRAM, 32768), + SFARRAY(CHRRAM, 8192), + + SFVAR(V4023), + SFVAR(ExLatch), + SFVAR(Control), + SFVAR(IRQCounter), + SFVAR(IRQReload), + SFVAR(IRQControl), + SFVAR(writeskip), + SFVAR(DiskPtr), + SFVAR(DiskSeekIRQ), + SFVAR(SelectDisk), + SFVAR(InDisk), + SFVAR(DiskWritten), + SFEND + }; + + if(!load) + { + for(x=0;x>3)^1); + + for(x=0;xsize < 16) + return(FALSE); + + if(memcmp(fp->data, "FDS\x1a",4) && memcmp(fp->data+1,"*NINTENDO-HVC*", 14)) + return(FALSE); + + return(TRUE); +} + + +bool FDSLoad(const char *name, MDFNFILE *fp, NESGameType *gt) +{ + MDFNFILE bios_fp; + int32 romoff = 0; + + fp->rewind(); + + if(!SubLoad(fp)) + { + FreeFDSMemory(); + return(FALSE); + } + + md5_context md5; + md5.starts(); + + for(unsigned int x = 0; x < TotalSides; x++) + { + md5.update(diskdata[x],65500); + + diskdatao[x] = (uint8 *)MDFN_malloc(65500, _("FDS Disk Data")); + memcpy(diskdatao[x],diskdata[x],65500); + } + md5.finish(MDFNGameInfo->MD5); + + if(!bios_fp.Open(MDFN_MakeFName(MDFNMKF_FIRMWARE, 0, "disksys.rom").c_str(), NULL, _("FDS BIOS"))) + { + FreeFDSMemory(); + return 0; + } + + if(bios_fp.Size() < 8192) + { + MDFN_PrintError(_("FDS BIOS ROM image is too small.")); + + bios_fp.Close(); + FreeFDSMemory(); + return(0); + } + + if(!memcmp(bios_fp.Data(), "NES\x1a", 4)) // Encapsulated in iNES format? + { + romoff = 16 + 8192; + + if(bios_fp.Data()[4] == 2) + romoff += 16384; + + if((bios_fp.Size() - romoff) < 8192) + { + MDFN_PrintError(_("FDS BIOS ROM image is too small.")); + bios_fp.Close(); + FreeFDSMemory(); + return(0); + } + } + + memcpy(FDSBIOS, bios_fp.Data() + romoff, 8192); + + bios_fp.Close(); + + if(!(FDSRAM = (uint8*)MDFN_malloc(32768, _("FDS RAM")))) + { + FreeFDSMemory(); + return(0); + } + + if(!(CHRRAM = (uint8*)MDFN_malloc(8192, _("CHR RAM")))) + { + FreeFDSMemory(); + return(0); + } + + DiskWritten = false; + + { + MDFNFILE tp; + + if(tp.Open(MDFN_MakeFName(MDFNMKF_SAV, 0, "fds").c_str(), NULL, _("auxillary FDS data"))) + { + for(unsigned int x = 0; x < TotalSides; x++) + { + if(diskdata[x]) + { + MDFN_free(diskdata[x]); + diskdata[x] = NULL; + } + } + + if(!SubLoad(&tp)) + { + MDFN_PrintError("Error reading auxillary FDS file."); + FreeFDSMemory(); + return(0); + } + tp.Close(); + DiskWritten = true; /* For save state handling. */ + } + } + + MDFNGameInfo->GameType = GMT_DISK; + + SelectDisk=0; + InDisk=255; + + ResetCartMapping(); + SetupCartCHRMapping(0,CHRRAM,8192,1); + SetupCartMirroring(0,0,0); + memset(CHRRAM,0,8192); + memset(FDSRAM,0,32768); + + MDFN_printf(_("Sides: %d\n"),TotalSides); + MDFN_printf(_("Manufacturer Code: %02x (%s)\n"), diskdata[0][0xF], GetManName(diskdata[0][0xF])); + MDFN_printf(_("MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + FDSInit(); + + gt->Close = FDSClose; + gt->Power = FDSPower; + gt->StateAction = FDS_StateAction; + return 1; +} + +void FDSClose(void) +{ + if(DiskWritten) + { + FILE *fp; + + if((fp=fopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "fds").c_str(),"wb"))) + { + for(unsigned int x = 0; x < TotalSides; x++) + { + if(fwrite(diskdata[x], 1, 65500, fp) != 65500) + { + MDFN_PrintError("Error saving FDS image!"); + break; + } + } + fclose(fp); + } + else + MDFN_PrintError("Error saving FDS image!"); + } + + FreeFDSMemory(); +} + + +static void FDSInit(void) +{ + setprg8r(0, 0xe000, 0); // BIOS + setprg32r(1, 0x6000, 0); // 32KB RAM + setchr8(0); // 8KB CHR RAM + + MapIRQHook = FDSFix; + + SetReadHandler(0x4030, 0x4030, FDSRead4030); + SetReadHandler(0x4031, 0x4031, FDSRead4031); + SetReadHandler(0x4032, 0x4032, FDSRead4032); + SetReadHandler(0x4033, 0x4033, FDSRead4033); + + SetWriteHandler(0x4020, 0x402F, FDSWrite); + + SetWriteHandler(0x6000, 0xdfff, FDSRAMWrite); + SetReadHandler(0x6000, 0xdfff, FDSRAMRead); + SetReadHandler(0xE000, 0xFFFF, FDSBIOSRead); + + FDSSound_Init(); +} + +static void FDSPower(void) +{ + writeskip=DiskPtr=DiskSeekIRQ=0; + + Control = 0; + setmirror(1); + + V4023 = 0; + ExLatch = 0; + IRQCounter = 0; + IRQReload = 0; + IRQControl = 0; + + + + InDisk = 0; + SelectDisk = 0; + + FDSSound_Power(); +} diff --git a/libmednahawk/src/nes/fds.h b/libmednahawk/src/nes/fds.h new file mode 100644 index 0000000000..e03a91f535 --- /dev/null +++ b/libmednahawk/src/nes/fds.h @@ -0,0 +1,10 @@ +#ifndef __NES_FDS_H +#define __NES_FDS_H + +void FDSSoundReset(void); + +int FDS_DiskInsert(int oride); +int FDS_DiskEject(void); +int FDS_DiskSelect(void); + +#endif diff --git a/libmednahawk/src/nes/filter.cpp b/libmednahawk/src/nes/filter.cpp new file mode 100644 index 0000000000..b14b10fafa --- /dev/null +++ b/libmednahawk/src/nes/filter.cpp @@ -0,0 +1,749 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* This resampler has only been designed with NES CPU frequencies(NTSC and PAL) as the input rate, and output rates of + 22050-1048576 in mind, up to 1024 coefficient multiply-accumulates per output sample. +*/ + +// Don't set these higher than 3, the accumulation variables will overflow if you do. +// If you want to use this resampler as a more general-purpose downsampler(with input and output rates closer together), you will probably want +// to set these to 0. +#define FIR_TABLE_EXTRA_BITS 3 +#define FIR_TABLE_EXTRA_BITS_S "3" + +#include "../mednafen.h" +#include +#include "filter.h" +#include "../cputest/cputest.h" + +#if defined(ARCH_POWERPC_ALTIVEC) && defined(HAVE_ALTIVEC_H) + #include +#endif + +static void kaiser_window( double* io, int count, double beta ) +{ + int const accuracy = 16; //12; + + double* end = io + count; + + double beta2 = beta * beta * (double) -0.25; + double to_fract = beta2 / ((double) count * count); + double i = 0; + double rescale = 0; // Doesn't need an initializer, to shut up gcc + + for ( ; io < end; ++io, i += 1 ) + { + double x = i * i * to_fract - beta2; + double u = x; + double k = x + 1; + + double n = 2; + do + { + u *= x / (n * n); + n += 1; + k += u; + } + while ( k <= u * (1 << accuracy) ); + + if ( !i ) + rescale = 1 / k; // otherwise values get large + + *io *= k * rescale; + } +} + +static void gen_sinc( double* out, int size, double cutoff, double kaiser ) +{ + assert( size % 2 == 0 ); // size must be enev + + int const half_size = size / 2; + double* const mid = &out [half_size]; + + // Generate right half of sinc + for ( int i = 0; i < half_size; i++ ) + { + double angle = (i * 2 + 1) * (M_PI / 2); + mid [i] = sin( angle * cutoff ) / angle; + } + + kaiser_window( mid, half_size, kaiser ); + + // Mirror for left half + for ( int i = 0; i < half_size; i++ ) + out [i] = mid [half_size - 1 - i]; +} + +static void normalize( double* io, int size, double gain = 1.0 ) +{ + double sum = 0; + for ( int i = 0; i < size; i++ ) + sum += io [i]; + + double scale = gain / sum; + for ( int i = 0; i < size; i++ ) + io [i] *= scale; +} + + +static INLINE void DoMAC(int16 *wave, int16 *coeffs, int32 count, int32 *accum_output) +{ + int32 acc0[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + int32 acc1[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + int c; + + for(c = 0; c < (count >> 1); c += 8) + { + acc0[0] += ((int32)wave[c + 0] * coeffs[c + 0]); + acc0[1] += ((int32)wave[c + 1] * coeffs[c + 1]); + acc0[2] += ((int32)wave[c + 2] * coeffs[c + 2]); + acc0[3] += ((int32)wave[c + 3] * coeffs[c + 3]); + acc0[4] += ((int32)wave[c + 4] * coeffs[c + 4]); + acc0[5] += ((int32)wave[c + 5] * coeffs[c + 5]); + acc0[6] += ((int32)wave[c + 6] * coeffs[c + 6]); + acc0[7] += ((int32)wave[c + 7] * coeffs[c + 7]); + } + + acc0[0] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[1] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[2] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[3] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[4] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[5] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[6] >>= FIR_TABLE_EXTRA_BITS + 1; + acc0[7] >>= FIR_TABLE_EXTRA_BITS + 1; + + + for(; c < count; c += 8) + { + acc1[0] += ((int32)wave[c + 0] * coeffs[c + 0]); + acc1[1] += ((int32)wave[c + 1] * coeffs[c + 1]); + acc1[2] += ((int32)wave[c + 2] * coeffs[c + 2]); + acc1[3] += ((int32)wave[c + 3] * coeffs[c + 3]); + acc1[4] += ((int32)wave[c + 4] * coeffs[c + 4]); + acc1[5] += ((int32)wave[c + 5] * coeffs[c + 5]); + acc1[6] += ((int32)wave[c + 6] * coeffs[c + 6]); + acc1[7] += ((int32)wave[c + 7] * coeffs[c + 7]); + } + + acc1[0] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[1] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[2] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[3] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[4] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[5] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[6] >>= FIR_TABLE_EXTRA_BITS + 1; + acc1[7] >>= FIR_TABLE_EXTRA_BITS + 1; + + *accum_output = (acc0[0] + acc0[1] + acc0[2] + acc0[3] + acc0[4] + acc0[5] + acc0[6] + acc0[7] + + acc1[0] + acc1[1] + acc1[2] + acc1[3] + acc1[4] + acc1[5] + acc1[6] + acc1[7]) >> 15; +} + +#ifdef ARCH_X86 + +#ifdef __x86_64__ +#define X86_REGC "r" +#define X86_REGAT "" +#else +#define X86_REGC "e" +#define X86_REGAT "l" +#endif + +static INLINE void DoMAC_MMX(int16 *wave, int16 *coeffs, int32 count, int32 *accum_output) +{ + // Multiplies 16 coefficients at a time. + int dummy; + +/* + MMX register usage: + mm0: Temporary sample load and multiply register + mm2: Temporary sample load and multiply register + + mm1: accumulator, 2 32-bit signed values + mm3: accumulator, 2 32-bit signed values + + mm4: accumulator, 2 32-bit signed values + mm5: accumulator, 2 32-bit signed values + + mm6: Temporary sample load and multiply register, temporary summation register + mm7: Temporary sample load and multiply register + +*/ + asm volatile( +"pxor %%mm1, %%mm1\n\t" +"pxor %%mm3, %%mm3\n\t" +"pxor %%mm4, %%mm4\n\t" +"pxor %%mm5, %%mm5\n\t" +"MMX_Loop:\n\t" + +"movq (%%" X86_REGC "di), %%mm0\n\t" +"pmaddwd (%%" X86_REGC "si), %%mm0\n\t" + +"movq 8(%%" X86_REGC "di), %%mm2\n\t" +"psrad $1, %%mm0\n\t" +"pmaddwd 8(%%" X86_REGC "si), %%mm2\n\t" + +"movq 16(%%" X86_REGC "di), %%mm6\n\t" +"psrad $1, %%mm2\n\t" +"pmaddwd 16(%%" X86_REGC "si), %%mm6\n\t" + +"movq 24(%%" X86_REGC "di), %%mm7\n\t" +"psrad $1, %%mm6\n\t" +"pmaddwd 24(%%" X86_REGC "si), %%mm7\n\t" + +"paddd %%mm0, %%mm1\n\t" +"paddd %%mm2, %%mm3\n\t" +"psrad $1, %%mm7\n\t" +"paddd %%mm6, %%mm4\n\t" +"paddd %%mm7, %%mm5\n\t" + +"add" X86_REGAT " $32, %%" X86_REGC "si\n\t" +"add" X86_REGAT " $32, %%" X86_REGC "di\n\t" +"subl $1, %%ecx\n\t" +"jnz MMX_Loop\n\t" + +// +#if FIR_TABLE_EXTRA_BITS != 0 +"psrad $" FIR_TABLE_EXTRA_BITS_S ", %%mm1\n\t" +"psrad $" FIR_TABLE_EXTRA_BITS_S ", %%mm3\n\t" +"psrad $" FIR_TABLE_EXTRA_BITS_S ", %%mm4\n\t" +"psrad $" FIR_TABLE_EXTRA_BITS_S ", %%mm5\n\t" +#endif + +// Now, mm1, mm3, mm4, mm5 contain 8 32-bit sums that need to be added together. + +"paddd %%mm5, %%mm3\n\t" +"paddd %%mm4, %%mm1\n\t" +"paddd %%mm3, %%mm1\n\t" +"movq %%mm1, %%mm6\n\t" +"psrlq $32, %%mm6\n\t" +"paddd %%mm6, %%mm1\n\t" + +"psrad $15, %%mm1\n\t" +//"psrad $16, %%mm1\n\t" +"movd %%mm1, (%%" X86_REGC "dx)\n\t" + : "=D" (dummy), "=S" (dummy), "=c" (dummy) + : "D" (wave), "S" (coeffs), "c" ((count + 0xF) >> 4), "d" (accum_output) +#ifdef __x86_64__ + : "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7", "cc" +#else + // FIXME. Do we need to compile with -mmmx or something? + // st(0), st(1), st(2), st(3), st(4), st(5), st(6), st(7) + : "cc" +#endif +); +} +#endif + + +#ifdef ARCH_POWERPC_ALTIVEC +static INLINE void DoMAC_AltiVec(int16 *wave, int16 *coeffs, int32 count, int32 *accum_output) +{ + vector signed int acc0, acc1, acc2, acc3; + vector unsigned int vecsrEBp1 = vec_splats((unsigned int)FIR_TABLE_EXTRA_BITS + 1); + vector unsigned int vecsr16m1 = vec_splats((unsigned int)16 - 1); + vector signed int zerosi = vec_splat_s32(0); + vector signed short wd0, fd0; + vector signed short wd1, fd1; + vector signed int tmp; + int32 ino; + +#if 0 + { + const uint8 blocksize = 1 * sizeof(int16); + const uint8 blockcount = (count + 15) / 16; + const int16 blockstride = blocksize; + + vec_dstt(coeffs, (blocksize << 3) | (blockcount << 8) | (blockstride << 16), 0); + } +#endif + + acc0 = zerosi; + acc1 = zerosi; + acc2 = zerosi; + acc3 = zerosi; + + for(ino = 0; ino < count; ino += (16 << 1)) + { + wd0 = vec_ld(ino, wave); + fd0 = vec_ld(ino, coeffs); + acc0 = vec_msums(wd0, fd0, acc0); + + wd1 = vec_ld(ino + (8 << 1), wave); + fd1 = vec_ld(ino + (8 << 1), coeffs); + acc1 = vec_msums(wd1, fd1, acc1); + } + + acc0 = vec_sra(acc0, vecsrEBp1); + acc1 = vec_sra(acc1, vecsrEBp1); + + for(; ino < (count << 1); ino += (16 << 1)) + { + wd0 = vec_ld(ino, wave); + fd0 = vec_ld(ino, coeffs); + acc2 = vec_msums(wd0, fd0, acc2); + + wd1 = vec_ld(ino + (8 << 1), wave); + fd1 = vec_ld(ino + (8 << 1), coeffs); + acc3 = vec_msums(wd1, fd1, acc3); + } + + acc2 = vec_sra(acc2, vecsrEBp1); + acc3 = vec_sra(acc3, vecsrEBp1); + + // + // + tmp = vec_add(vec_add(acc0, acc2), vec_add(acc1, acc3)); + tmp = vec_splat(vec_sums(tmp, zerosi), 3); + tmp = vec_sra(tmp, vecsr16m1); + + vec_ste(tmp, 0, accum_output); +} +#endif + +/* Returns number of samples written to out. */ +/* leftover is set to the number of samples that need to be copied + from the end of in to the beginning of in. +*/ + +int32 NES_Resampler::Do(int16 *in, int16 *out, uint32 maxoutlen, uint32 inlen, int32 *leftover) +{ + uint32 max; + uint32 count=0; + int32 *boobuf = &IntermediateBuffer[0]; + int32 *I32Out = boobuf; + + { + int64 max_temp = inlen; + + max_temp -= NumCoeffs; + + if(max_temp < 0) + { + puts("Eep"); + max_temp = 0; + } + max = max_temp; + } + //printf("%d %d\n", inlen, max); + + if(0) + { + + } + #ifdef ARCH_X86 + else if(cpuext & CPUTEST_FLAG_MMX) + { + while(InputIndex < max) + { + const unsigned int align_index = InputIndex & 0x3; //((int)(unsigned long long)wave & 0x6) >> 1; + int16 *wave = &in[InputIndex &~ 0x3]; + int16 *coeffs = &FIR_ENTRY(align_index, PhaseWhich[InputPhase], 0); + int32 coeff_count = FIR_CoCounts[align_index]; + + DoMAC_MMX(wave, coeffs, coeff_count, I32Out); + + I32Out++; + count++; + + InputPhase = PhaseNext[InputPhase]; + InputIndex += PhaseStep[InputPhase]; + } + asm volatile("emms\n\t"); + } + #endif + #ifdef ARCH_POWERPC_ALTIVEC + else if(cpuext & CPUTEST_FLAG_ALTIVEC) + { + while(InputIndex < max) + { + const unsigned int align_index = InputIndex & 0x7; + int16 *wave = &in[InputIndex &~ 0x7]; + int16 *coeffs = &FIR_ENTRY(align_index, PhaseWhich[InputPhase], 0); + int32 coeff_count = FIR_CoCounts[align_index]; + + DoMAC_AltiVec(wave, coeffs, coeff_count, I32Out); + + I32Out++; + count++; + + InputPhase = PhaseNext[InputPhase]; + InputIndex += PhaseStep[InputPhase]; + } + } + #endif + else + { + while(InputIndex < max) + { + int16 *wave = &in[InputIndex]; + int16 *coeffs = &FIR_ENTRY(0, PhaseWhich[InputPhase], 0); + int32 coeff_count = FIR_CoCounts[0]; + + DoMAC(wave, coeffs, coeff_count, I32Out); + + I32Out++; + count++; + + InputPhase = PhaseNext[InputPhase]; + InputIndex += PhaseStep[InputPhase]; + } + } + + + *leftover = inlen - InputIndex; + + InputIndex = 0; + + if(*leftover < 0) + { + //printf("Oops: %d\n", *leftover); + InputIndex = (0 - *leftover); + *leftover = 0; + } + + if(!debias_multiplier) + { + if(SoundVolume == 256) + { + for(uint32 x = 0; x < count; x++) + out[x] = boobuf[x]; + } + else + { + for(uint32 x = 0; x < count; x++) + out[x] = (boobuf[x] * SoundVolume) >> 8; + } + } + else + { + for(uint32 x = 0; x < count; x++) + { + int32 sample = boobuf[x]; + debias += ((int64)((sample << 16) - debias) * debias_multiplier) >> 32; + out[x] = ((sample - (debias >> 16)) * SoundVolume) >> 8; + } + } + return(count); +} + +NES_Resampler::~NES_Resampler() +{ + if(PhaseWhich) + free(PhaseWhich); + + if(PhaseNext) + free(PhaseNext); + + if(PhaseStep) + free(PhaseStep); + + if(PhaseStepSave) + free(PhaseStepSave); + + if(FIR_Coeffs_Real) + { + for(unsigned int i = 0; i < NumAlignments * NumPhases; i++) + if(FIR_Coeffs_Real[i]) + free(FIR_Coeffs_Real[i]); + + free(FIR_Coeffs_Real); + } + + if(FIR_Coeffs) + free(FIR_Coeffs); + + if(FIR_CoCounts) + free(FIR_CoCounts); +} + +void NES_Resampler::SetVolume(double newvolume) +{ + SoundVolume = (int32)(newvolume * 256); +} + +// Copy constructor +#if 0 +// Bah, it's obviously screwed up, make a base initialization function to call or just don't implement a copy constructor! +NES_Resampler::NES_Resampler(const NES_Resampler &resamp) +{ + NES_Resampler(resamp.InputRate, resamp.OutputRate, resamp.RateError, resamp.DebiasCorner, resamp.Quality); + + SoundVolume = resamp.SoundVolume; + for(unsigned int i = 0; i < NumPhases; i++) + { + PhaseStep[i] = resamp.PhaseStep[i]; + } +} +#endif + +NES_Resampler::NES_Resampler(double input_rate, double output_rate, double rate_error, double debias_corner, int quality) +{ + double *FilterBuf = NULL; + double ratio = (double)output_rate / input_rate; + double cutoff; + double required_bandwidth; + double k_beta; + double k_d; + + InputRate = input_rate; + OutputRate = output_rate; + RateError = rate_error; + DebiasCorner = debias_corner; + Quality = quality; + + IntermediateBuffer.resize(OutputRate * 4 / 50); // *4 for safety padding, / min(50,60), an approximate calculation + + cpuext = cputest_get_flags(); + + MDFN_printf("filter.cpp debug info:\n"); + MDFN_indent(1); + + #ifdef ARCH_X86 + if(cpuext & CPUTEST_FLAG_MMX) + { + MDFN_printf("MMX\n"); + NumAlignments = 4; + } else + #elif ARCH_POWERPC_ALTIVEC + if(cpuext & CPUTEST_FLAG_ALTIVEC) + { + puts("AltiVec"); + NumAlignments = 8; + } else + #endif + { + NumAlignments = 1; + puts("None"); + } + + + if(quality == -2) + { + k_beta = 3.384; + k_d = 2.23; + NumCoeffs = 128; + } + else if(quality == -1) + { + k_beta = 4.538; + k_d = 2.93; + NumCoeffs = 256; + } + else if(quality == 0) + { + k_beta = 5.658; + k_d = 3.62; + NumCoeffs = 352; + } + else if(quality == 1) + { + k_beta = 7.865; + k_d = 5.0; + NumCoeffs = 512; + } + else if(quality == 2) + { + k_beta = 8.960; + k_d = 5.7; + NumCoeffs = 768; + } + else if(quality == 3) + { + k_beta = 10.056; + k_d = 6.4; + NumCoeffs = 1024; + } + else + { + MDFN_indent(-1); + throw(-1); + } + + assert((NumCoeffs % 32) == 0); + assert(NumAlignments <= 8); + + NumCoeffs_Padded = NumCoeffs + 4 + 16; // FIXME: set differently based on SIMD path in use. + + required_bandwidth = k_d / NumCoeffs; + + MDFN_printf("%f\n", required_bandwidth); + + // Get the number of phases required, and adjust ratio. + { + double s_ratio = (double)input_rate / output_rate; + double findo = 0; + uint32 count = 0; + uint32 findo_i; + + do + { + count++; + findo += s_ratio; + } while( fabs(1.0 - ((round(findo) / count) / s_ratio)) > rate_error); + + s_ratio = round(findo) / count; + findo_i = (uint32) round(findo); + ratio = 1 / s_ratio; + NumPhases = count; + + PhaseWhich = (uint32 *)malloc(sizeof(uint32) * NumPhases); + PhaseNext = (uint32 *)malloc(sizeof(uint32) * NumPhases); + PhaseStep = (uint32 *)malloc(sizeof(uint32) * NumPhases); + PhaseStepSave = (uint32 *)malloc(sizeof(uint32) * NumPhases); + + uint32 last_indoo = 0; + for(unsigned int i = 0; i < NumPhases; i++) + { + uint32 index_pos = i * findo_i / NumPhases; + + PhaseWhich[i] = (i * findo_i) % NumPhases; + PhaseNext[i] = (i + 1) % (NumPhases); + PhaseStepSave[i] = PhaseStep[i] = index_pos - last_indoo; + last_indoo = index_pos; + } + PhaseStepSave[0] = PhaseStep[0] = findo_i - last_indoo; + + Ratio_Dividend = findo_i; + Ratio_Divisor = NumPhases; + + MDFN_printf("Phases: %d, Output rate: %f, %d %d\n", NumPhases, input_rate * ratio, Ratio_Dividend, Ratio_Divisor); + + MDFN_printf("Desired rate error: %.10f, Actual rate error: %.10f\n", rate_error, fabs((double)input_rate / output_rate * ratio - 1)); + } + + // Optimize cutoff for maximum sound frequencies humans can perceive, keep individual coefficient values from + // becoming too large, and keep dogs from freaking out with some games that "silence" + // sounds by making their fundamental frequencies beyond the range of typical human hearing. + // + // (For when output playback rate is considerably higher than 48KHz) + // + // This also incidentally handles the case of UPSAMPLING to a higher rate(at least when upsampling from the NES + // CPU frequency), so if this code is removed/disabled, code to handle that case will need to be added. + { + double cutoff_robot = (ratio - required_bandwidth) / NumPhases; + double cutoff_human = ((24000 * 2) / input_rate) / NumPhases; // Not subtracting required_bandwidth here is intentional. + + if(cutoff_human < cutoff_robot) + { + //puts("HUMANS WIN THIS ROUND"); + cutoff = cutoff_human; + } + else + cutoff = cutoff_robot; + } + + MDFN_printf("Cutoff: %f, %f\n", cutoff, required_bandwidth); + + if(cutoff <= 0) + { + MDFN_printf("Cutoff frequency is <= 0: %f\n", cutoff); + } + + FIR_Coeffs = (int16 **)malloc(sizeof(int16 **) * NumAlignments * NumPhases); + FIR_Coeffs_Real = (int16 **)malloc(sizeof(int16 **) * NumAlignments * NumPhases); + + for(unsigned int i = 0; i < NumAlignments * NumPhases; i++) + { + uint8 *tmp_ptr = (uint8 *)calloc(sizeof(int16) * NumCoeffs_Padded + 16, 1); + + FIR_Coeffs_Real[i] = (int16 *)tmp_ptr; + tmp_ptr += 0xF; + tmp_ptr -= ((unsigned long long)tmp_ptr & 0xF); + FIR_Coeffs[i] = (int16 *)tmp_ptr; + } + + MDFN_printf("FIR table memory usage: %d bytes\n", (int)((sizeof(int16) * NumCoeffs_Padded + 16) * NumAlignments * NumPhases)); + + + FilterBuf = (double *)malloc(sizeof(double) * NumCoeffs * NumPhases); + gen_sinc(FilterBuf, NumCoeffs * NumPhases, cutoff, k_beta); + normalize(FilterBuf, NumCoeffs * NumPhases); + + #if 0 + for(int i = 0; i < NumCoeffs * NumPhases; i++) + fprintf(stderr, "%.20f\n", FilterBuf[i]); + + #endif + + + FIR_CoCounts = (uint32 *)calloc(NumAlignments, sizeof(uint32)); + FIR_CoCounts[0] = NumCoeffs; + + for(unsigned int phase = 0; phase < NumPhases; phase++) + { + int32 neg_sum = 0; + int32 pos_sum = 0; + int32 sum = 0; + int32 sum_absv = 0; + int32 max = 0, min = 0; + double amp_mult = 65536 * NumPhases * (1 << FIR_TABLE_EXTRA_BITS); + + for(unsigned int i = 0; i < NumCoeffs; i++) + { + int32 tmpco = (int32)(FilterBuf[i * NumPhases + phase] * amp_mult); + + FIR_ENTRY(0, NumPhases - 1 - phase, i) = (int16)tmpco; + + sum += tmpco; + sum_absv += abs(tmpco); + + if(tmpco > max) + max = tmpco; + + if(tmpco < min) + min = tmpco; + + if(tmpco > 0) + pos_sum += tmpco; + else + neg_sum += tmpco; + } + + assert(min >= -32768); + assert(max <= 32767); + + double ira = ((double)(65536 << FIR_TABLE_EXTRA_BITS) / sum_absv) * 2; // * 2 since we shift right by one in loops now + // to prevent distortions when input samples are near + // maximum absolute magnitude. + + MDFN_printf("Phase %d: min=%d max=%d, neg_sum=%d, pos_sum=%d, sum=%d, sum_absv=%d -- worst-case ira=%.2f%%\n", phase, min, max, neg_sum, pos_sum, sum, sum_absv, ira * 100); //65536 * count / amp_mult * NumPhases); + } + + for(unsigned int ali = 1; ali < NumAlignments; ali++) + { + for(unsigned int phase = 0; phase < NumPhases; phase++) + { + FIR_CoCounts[ali] = NumCoeffs + ali; + for(unsigned int i = 0; i < NumCoeffs; i++) + { + FIR_ENTRY(ali, phase, i + ali) = FIR_ENTRY(0, phase, i); + } + } + } + + free(FilterBuf); + FilterBuf = NULL; + + InputIndex = 0; + InputPhase = 0; + + debias = 0; + debias_multiplier = (int32)(((int64)1 << 32) * debias_corner / output_rate); + + MDFN_indent(-1); +} diff --git a/libmednahawk/src/nes/filter.h b/libmednahawk/src/nes/filter.h new file mode 100644 index 0000000000..f24ba6e9ce --- /dev/null +++ b/libmednahawk/src/nes/filter.h @@ -0,0 +1,90 @@ +#ifndef __NES_FILTER_H +#define __NES_FILTER_H + +#include + +class NES_Resampler +{ + public: + + // Resamples from input_rate to output_rate, allowing for rate_error(output_rate +/- output_rate*rate_error) + // error in the resample ratio. + // + // debias_corner is the cheap high-pass DC bias removal filter coefficient. Higher values will result in more bias removal(and + // case a high-pass filter effect), while lower values will lower this effect. It must not be higher than output_rate. + // A value of 0 will disable it entirely. + // + // quality is an arbitrary control of quality(-3 for lowest quality, 3 for highest quality) + NES_Resampler(double input_rate, double output_rate, double rate_error, double debias_corner, int quality); + NES_Resampler(const NES_Resampler &resamp); + ~NES_Resampler(); + + // Specify volume in percent amplitude(range 0 through 1.000..., inclusive). Default: SetVolume(1.0); + void SetVolume(double newvolume); + + // Resamples "inlen" samples from "in", writing the output "out", generating no more output samples than "maxoutlen". + // The int32 pointed to by leftover is set to the number of input samples left over from this filter iteration. + // "in" should be aligned to a 16-byte boundary, for the SIMD versions of the filter to work properly. "out" doesn't have any + // special alignment requirement. + int32 Do(int16 *in, int16 *out, uint32 maxoutlen, uint32 inlen, int32 *leftover); + + // Get the InputRate / OutputRate ratio, expressed as a / b + void GetRatio(int32 *a, int32 *b) + { + *a = Ratio_Dividend; + *b = Ratio_Divisor; + } + + private: + + // Copy of the parameters passed to the constructor + double InputRate, OutputRate, RateError, DebiasCorner; + int Quality; + + // Number of phases. + uint32 NumPhases; + uint32 NumPhases_Padded; + + // Coefficients(in each phase, not total) + uint32 NumCoeffs; + uint32 NumCoeffs_Padded; + + uint32 NumAlignments; + + // Index into the input buffer + uint32 InputIndex; + + // Current input phase + uint32 InputPhase; + + uint32 *PhaseWhich; + + // In the FIR loop: InputPhase = PhaseNext[InputPhase] + uint32 *PhaseNext; + + // Incrementor for InputIndex. In the FIR loop, after updating InputPhase: InputIndex += PhaseStep[InputPhase] + uint32 *PhaseStep; + uint32 *PhaseStepSave; + + // One pointer for each phase in each possible alignment + int16 **FIR_Coeffs; + int16 **FIR_Coeffs_Real; + + #define FIR_ENTRY(align, phase, coco) FIR_Coeffs[(phase) * NumAlignments + align][coco] + + // Coefficient counts for the 4 alignments + uint32 *FIR_CoCounts; + + int32 SoundVolume; + std::vector IntermediateBuffer; //int32 boobuf[8192]; + + uint32 cpuext; + + int32 debias; + int32 debias_multiplier; + + // for GetRatio() + int32 Ratio_Dividend; + int32 Ratio_Divisor; +}; +#endif diff --git a/libmednahawk/src/nes/ines-bad.inc b/libmednahawk/src/nes/ines-bad.inc new file mode 100644 index 0000000000..d06f21a3ca --- /dev/null +++ b/libmednahawk/src/nes/ines-bad.inc @@ -0,0 +1,38 @@ +{ 0xecf78d8a13a030a6LL, "Ai Sensei no Oshiete", INESB_HACKED }, +{ 0x10f90ba5bd55c22eLL, "Alien Syndrome", INESB_HACKED }, +{ 0x4712856d3e12f21fLL, "Akumajou Densetsu", INESB_HACKED }, +{ 0x0d69ab3ad28ad1c2LL, "Banana", INESB_INCOMPLETE }, +{ 0x85d2c348a161cdbfLL, "Bio Senshi Dan", INESB_HACKED }, +{ 0x18fdb7c16aa8cb5cLL, "Bucky O'Hare", INESB_CORRUPT }, +{ 0xe27c48302108d11bLL, "Chibi Maruko Chan", INESB_HACKED }, +{ 0x9d1f505c6ba507bfLL, "Contra", INESB_HACKED }, +{ 0x60936436d3ea0ab6LL, "Crisis Force", INESB_HACKED }, +{ 0xcf31097ddbb03c5dLL, "Crystalis (Prototype)", INESB_CORRUPT }, +{ 0x92080a8ce94200eaLL, "Digital Devil Story II", INESB_HACKED }, +{ 0x97f133d8bc1c28dbLL, "Dragon Ball", INESB_HACKED }, +{ 0x6c2a2f95c2fe4b6eLL, "Dragon Ball", INESB_HACKED }, +{ 0x767aaff62963c58fLL, "Dragon Ball", INESB_HACKED }, +{ 0x500b267abb323005LL, "Dragon Warrior 4", INESB_CORRUPT }, +{ 0x02bdcf375704784bLL, "Erika to Satoru no Yume Bouken", INESB_HACKED }, +{ 0xd4fea9d2633b9186LL, "Famista 91", INESB_HACKED }, +{ 0xfdf8c812839b61f0LL, "Famista 92", INESB_HACKED }, +{ 0xb5bb1d0fb47d0850LL, "Famista 93", INESB_HACKED }, +{ 0x30471e773f7cdc89LL, "Famista 94", INESB_HACKED }, +{ 0x76c5c44ffb4a0bd7LL, "Fantasy Zone", INESB_HACKED }, +{ 0x27da2b0c500dc346LL, "Fire Emblem", INESB_HACKED }, +{ 0xb470bfb90e2b1049LL, "Fire Emblem Gaiden", INESB_HACKED }, +{ 0x23214fe456fba2ceLL, "Ganbare Goemon 2", INESB_HACKED }, +{ 0xbf8b22524e8329d9LL, "Ganbare Goemon Gaiden", INESB_HACKED }, +{ 0xa97041c3da0134e3LL, "Gegege no Kitarou 2", INESB_INCOMPLETE }, +{ 0x805db49a86db5449LL, "Goonies", INESB_HACKED }, +{ 0xc5abdaa65ac49b6bLL, "Gradius 2", INESB_HACKED }, +{ 0x04afae4ad480c11cLL, "Gradius 2", INESB_HACKED }, +{ 0x9b4bad37b5498992LL, "Gradius 2", INESB_HACKED }, +{ 0xb068d4ac10ef848eLL, "Highway Star", INESB_HACKED }, +{ 0xbf5175271e5019c3LL, "Kaiketsu Yanchamaru 3", INESB_HACKED }, +{ 0xfb4b508a236bbba3LL, "Salamander", INESB_HACKED }, +{ 0x3716c4bebf885344LL, "Super Mario Bros.", INESB_HACKED }, +{ 0x1895afc6eef26c7dLL, "Super Mario Bros.", INESB_HACKED }, +{ 0x103fc85d978b861bLL, "Sweet Home", INESB_CORRUPT }, +{ 0xfffda4407d80885aLL, "Sweet Home", INESB_CORRUPT }, +{ 0, 0, 0 } diff --git a/libmednahawk/src/nes/ines-correct.inc b/libmednahawk/src/nes/ines-correct.inc new file mode 100644 index 0000000000..fbf3abdb05 --- /dev/null +++ b/libmednahawk/src/nes/ines-correct.inc @@ -0,0 +1,199 @@ +{0, 101, -1, 0x58d32b2e1ba753e1 }, /* Urusei Yatsura */ +{0x1b71ccdb, 4, 8}, /* Gauntlet 2 */ +{0xfebf5dc1, 0, 1}, /* Onyako Town(Bootleg) */ + +{0x6b523bd7,71, 1}, /* Micro Machines */ +{0x892434dd,71, 1}, /* Ultimate Stuntman */ +{0x1bc686a8,150, 8}, /* FireHawk */ + +{0x9cbadc25,5,8}, /* JustBreed */ + +{0x6e68e31a,16,8}, /* Dragon Ball 3*/ +{0x3f15d20d,153,8}, /* Famicom Jump 2 */ +{0x983d8175,157,8}, /* Datach Battle Rush */ +{0x894efdbc,157,8}, /* Datach Crayon Shin Chan */ +{0x19e81461,157,8}, /* Datach DBZ */ +{0xbe06853f,157,8}, /* Datach J-League */ +{0x0be0a328,157,8}, /* Datach SD Gundam Wars */ +{0x5b457641,157,8}, /* Datach Ultraman Club */ +{0xf51a7f46,157,8}, /* Datach Yuu Yuu Hakusho */ + +{0xe62e3382,71,-1}, /* Mig-29 Soviet Fighter */ +{0x21a653c7,4,-1}, /* Super Sky Kid */ + +{0xdd4d9a62,209,-1}, /* Shin Samurai Spirits 2 */ +{0x063b1151,209,-1}, /* Power Rangers 4 */ +{0xdd8ced31,209,-1}, /* Power Rangers 3 */ + +{0x60bfeb0c,90,-1}, /* MK 2*/ +{0x0c47946d,210,-1}, /* Chibi Maruko Chan */ +{0xbd523011,210,-1}, /* Dream Master */ +{0xc247cc80,210,-1}, /* Family Circuit '91 */ +{0x6ec51de5,210,-1}, /* Famista '92 */ +{0xadffd64f,210,-1}, /* Famista '93 */ +{0x429103c9,210,-1}, /* Famista '94 */ +{0x81b7f1a8,210,-1}, /* Heisei Tensai Bakabon */ +{0x2447e03b,210,-1}, /* Top Striker */ +{0x1dc0f740,210,-1}, /* Wagyan Land 2 */ +{0xd323b806,210,-1}, /* Wagyan Land 3 */ +{0x07eb2c12,208,-1}, /* Street Fighter IV */ +{0x96ce586e,189,8}, /* Street Fighter 2 YOKO */ +{0x7678f1d5,207,8}, /* Fudou Myouou Den */ +{0x276237b3,206,0}, /* Karnov */ +{0x4e1c1e3c,206,0}, /* Karnov */ + + /* Some entries to sort out the minor 33/48 mess. */ +{0xaebd6549,48,8}, /* Bakushou!! Jinsei Gekijou 3 */ +{0x6cdc0cd9,48,8}, /* Bubble Bobble 2 */ +//{0x10e24006,48,8}, /* Flintstones 2 - bad dump? */ +{0x40c0ad47,48,8}, /* Flintstones 2 */ +{0xa7b0536c,48,8}, /* Don Doko Don 2 */ +{0x99c395f9,48,8}, /* Captain Saver */ +{0x1500e835,48,8}, /* Jetsons (J) */ + + {0x637134e8,193,1}, /* Fighting Hero */ + {0xcbf4366f,158,8}, /* Alien Syndrome (U.S. unlicensed) */ + {0xb19a55dd,64,8}, /* Road Runner */ + //{0x3eafd012,116,-1}, /* AV Girl Fighting */ + {0x1d0f4d6b,2,1}, /* Black Bass thinging */ + {0xf92be3ec,64,-1}, /* Rolling Thunder */ + {0x345ee51a,245,-1}, /* DQ4c */ + {0xf518dd58,7,8}, /* Captain Skyhawk */ + {0x7ccb12a3,43,-1}, /* SMB2j */ + {0x6f12afc5,235,-1}, /* Golden Game 150-in-1 */ + {0xccc03440,156,-1}, /* Buzz & Waldog */ + {0xc9ee15a7,3,-1}, /* 3 is probably best. 41 WILL NOT WORK. */ + + {0x3e1271d5,79,1}, /* Tiles of Fate */ + {0x8eab381c,113,1}, /* Death Bots */ + + {0xd4a76b07,79,0}, /* F-15 City Wars*/ + {0xa4fbb438,79,0}, + + {0x1eb4a920,79,1}, /* Double Strike */ + {0x345d3a1a,11,1}, /* Castle of Deceit */ + {0x62ef6c79,232,8}, /* Quattro Sports -Aladdin */ + {0x5caa3e61,144,1}, /* Death Race */ + {0xd2699893,88,0}, /* Dragon Spirit */ + +{0x2f27cdef,155,8}, /* Tatakae!! Rahmen Man */ +{0xcfd4a281,155,8}, /* Money Game. Yay for money! */ +{0xd1691028,154,8}, /* Devil Man */ + + {0xc68363f6,180,0}, /* Crazy Climber */ + {0xbe939fce,9,1}, /* Punchout*/ + {0x5e66eaea,13,1}, /* Videomation */ + {0xaf5d7aa2,-1,0}, /* Clu Clu Land */ + +{0xc2730c30,34,0}, /* Deadly Towers */ +{0x932ff06e,34,1}, /* Classic Concentration */ +{0x4c7c1af3,34,1}, /* Caesar's Palace */ + +{0x15141401,4,8}, /* Asmik Kun Land */ +{0x59280bec,4,8}, /* Jackie Chan */ +{0x4cccd878,4,8}, /* Cat Ninden Teyandee */ +{0x9eefb4b4,4,8}, /* Pachi Slot Adventure 2 */ +{0x5337f73c,4,8}, /* Niji no Silk Road */ +{0x7474ac92,4,8}, /* Kabuki: Quantum Fighter */ + +{0xbb7c5f7a,89,8}, /* Mito Koumon or something similar */ + +/* Probably a Namco MMC3-workalike */ +{0xa5e6baf9,4,1|4}, /* Dragon Slayer 4 */ +{0xe40b4973,4,1|4}, /* Metro Cross */ +{0xd97c31b0,4,1|4}, /* Rasaaru Ishii no Childs Quest */ + +{0x84382231,9,0}, /* Punch Out (J) */ + +{0xe28f2596,0,1}, /* Pac Land (J) */ +{0xfcdaca80,0,0}, /* Elevator Action */ +{0xe492d45a,0,0}, /* Zippy Race */ +{0x32fa246f,0,0}, /* Tag Team Pro Wrestling */ +{0xc05a365b,0,0}, /* Exed Exes (J) */ +{0xb3c30bea,0,0}, /* Xevious (J) */ + +{0x804f898a,2,1}, /* Dragon Unit */ +{0xe1b260da,2,1}, /* Argos no Senshi */ +{0x6d65cac6,2,0}, /* Terra Cresta */ +{0x9ea1dc76,2,0}, /* Rainbow Islands */ +{0x28c11d24,2,1}, /* Sukeban Deka */ +{0x02863604,2,1}, /* Sukeban Deka */ +{0x2bb6a0f8,2,1}, /* Sherlock Holmes */ +{0x55773880,2,1}, /* Gilligan's Island */ +{0x419461d0,2,1}, /* Super Cars */ +{0x6e0eb43e,2,1}, /* Puss n Boots */ +{0x266ce198,2,1}, /* City Adventure Touch */ + +{0x48349b0b,1,8}, /* Dragon Quest 2 */ +{0xd09b74dc,1,8}, /* Great Tank (J) */ +{0xe8baa782,1,8}, /* Gun Hed (J) */ +{0x970bd9c2,1,8}, /* Hanjuku Hero */ +{0xcd7a2fd7,1,8}, /* Hanjuku Hero */ +{0x63469396,1,8}, /* Hokuto no Ken 4 */ +{0x291bcd7d,1,8}, /* Pachio Kun 2 */ +{0xf74dfc91,1,-1}, /* Win, Lose, or Draw */ + + {0x3f56a392,1,8}, /* Captain Ed (J) */ + {0x078ced30,1,8}, /* Choujin - Ultra Baseball */ + {0x391aa1b8,1,8}, /* Bloody Warriors (J) */ + {0x61a852ea,1,8}, /* Battle Stadium - Senbatsu Pro Yakyuu */ + {0xfe364be5,1,8}, /* Deep Dungeon 4 */ + {0xd8ee7669,1,8}, /* Adventures of Rad Gravity */ + {0xa5e8d2cd,1,8}, /* Breakthru */ + {0xf6fa4453,1,8}, /* Bigfoot */ + {0x37ba3261,1,8}, /* Back to the Future 2 and 3 */ + {0x934db14a,1,-1}, /* All-Pro Basketball */ + {0xe94d5181,1,8}, /* Mirai Senshi - Lios */ + {0x7156cb4d,1,8}, /* Muppet Adventure Carnival thingy */ + {0x5b6ca654,1,8}, /* Barbie rev X*/ + {0x57c12280,1,8}, /* Demon Sword */ + {0x70f67ab7,1,8}, /* Musashi no Bouken */ + {0xa9a4ea4c,1,8}, /* Satomi Hakkenden */ + {0xcc3544b0,1,8}, /* Triathron */ + + {0x1d41cc8c,3,1}, /* Gyruss */ + {0xd8eff0df,3,1}, /* Gradius (J) */ + {0xdbf90772,3,0}, /* Alpha Mission */ + {0xd858033d,3,0}, /* Armored Scrum Object */ + {0xcf322bb3,3,1}, /* John Elway's Quarterback */ + {0x9bde3267,3,1}, /* Adventures of Dino Riki */ + {0x02cc3973,3,1}, /* Ninja Kid */ + {0xb5d28ea2,3,1}, /* Mystery Quest - mapper 3?*/ + {0xbc065fc3,3,1}, /* Pipe Dream */ + + {0x5b837e8d,1,8}, /* Alien Syndrome */ + {0x283ad224,32,8}, /* Ai Sensei no Oshiete */ + {0x5555fca3,32,8}, /* "" "" */ + {0x243a8735,32,0x10|4}, /* Major League */ + +{0x6bc65d7e,66,1}, /* Youkai Club*/ +{0xc2df0a00,66,1}, /* Bio Senshi Dan(hacked) */ +{0xbde3ae9b,66,1}, /* Doraemon */ +{0xd26efd78,66,1}, /* SMB Duck Hunt */ +{0x811f06d9,66,1}, /* Dragon Power */ +{0x3293afea,66,1}, /* Mississippi Satsujin Jiken */ +{0xe84274c5,66,1}, /* "" "" */ +{0x9552e8df,66,1}, /* Dragon Ball */ + + {0xba51ac6f,78,2}, + {0x3d1c3137,78,8}, /* Uchuusen - Cosmo Carrier */ + + {0xbda8f8e4,152,8}, /* Gegege no Kitarou 2 */ + {0x026c5fca,152,8}, /* Saint Seiya Ougon Densetsu */ + {0x0f141525,152,8}, /* Arkanoid 2 (Japanese) */ + {0xb1a94b82,152,8}, /* Pocket Zaurus */ + + {0xbba58be5,70,-1}, /* Family Trainer - Manhattan Police */ + {0x370ceb65,70,-1}, /* Family Trainer - Meiro Dai Sakusen */ + {0xdd8ed0f7,70,1}, /* Kamen Rider Club */ + + {0x90c773c1,118,-1}, /* Goal! 2 */ + {0xb9b4d9e0,118,-1}, /* NES Play Action Football */ + {0x78b657ac,118,-1}, /* Armadillo */ + {0x37b62d04,118,-1}, /* Ys 3 */ + {0x07d92c31,118,-1}, /* RPG Jinsei Game */ + {0x2705eaeb,234,-1}, /* Maxi 15 */ + {0x404b2e8b,4,2}, /* Rad Racer 2 */ + + {0xa912b064,51|0x800,8}, /* 11-in-1 Ball Games(has CHR ROM when it shouldn't) */ + {0,-1,-1} diff --git a/libmednahawk/src/nes/ines.cpp b/libmednahawk/src/nes/ines.cpp new file mode 100644 index 0000000000..6ebdcfe7ba --- /dev/null +++ b/libmednahawk/src/nes/ines.cpp @@ -0,0 +1,944 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" + +#include +#include +#include +#include + +#include "x6502.h" +#include "cart.h" +#include "ppu/ppu.h" + +#define INESPRIV +#include "ines.h" +#include "unif.h" +#include "vsuni.h" +#include "input.h" + + +static uint8 ExtraNTARAM[0x800]; +static uint32 CHRRAMSize; + +static uint8 trainerpoo[512], TrainerRAM[512]; +static uint8 *WRAM = NULL; // External RAM used for ROM images using mappers that nominally don't support external RAM +static uint8 *ROM = NULL; +static uint8 *VROM = NULL; +static CartInfo iNESCart; + +static int Mirroring; + +static uint32 ROM_size; +static uint32 VROM_size; + +static int NewiNES_Init(int num); + +static int MapperNo; + +static iNES_HEADER head; + +static DECLFR(TrainerRead) +{ + return(TrainerRAM[A&0x1FF]); +} + +static DECLFW(TrainerWrite) +{ + TrainerRAM[A & 0x1FF] = V; +} + +static int iNES_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(ExtraNTARAM, head.ROM_type & 8 ? 2048 : 0), + SFARRAY(VROM, VROM_size ? 0 : CHRRAMSize), + SFARRAY(TrainerRAM, (head.ROM_type & 4) ? 0x200 : 0), + SFARRAY(WRAM, WRAM ? 8192 : 0), + SFEND + }; + + if(NESIsVSUni) + if(!MDFNNES_VSUNIStateAction(sm,load, data_only)) + return(0); + + if(head.ROM_type & 8 || !VROM_size) + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "iNES")) + return(0); + + if(iNESCart.StateAction) + return(iNESCart.StateAction(sm, load, data_only)); + return(1); +} +static void iNESFree(void) +{ + if(ROM) + { + MDFN_free(ROM); + ROM = NULL; + } + + if(VROM) + { + MDFN_free(VROM); + VROM = NULL; + } + + if(WRAM) + { + MDFN_free(WRAM); + WRAM = NULL; + } +} + +static void iNES_Reset(void) +{ + if(head.ROM_type & 4) + memcpy(TrainerRAM, trainerpoo, 512); + + if(iNESCart.Reset) + iNESCart.Reset(&iNESCart); +} + +static void iNES_Power(void) +{ + if(!VROM_size) + memset(VROM, 0xFF, CHRRAMSize); + + if(head.ROM_type & 8) + memset(ExtraNTARAM, 0xFF, 2048); + + if(head.ROM_type & 4) + memcpy(TrainerRAM, trainerpoo, 512); + + if(WRAM) + setprg8r(0x10, 0x6000, 0); + + if(iNESCart.Power) + iNESCart.Power(&iNESCart); +} + +static void iNES_Close(void) +{ + MDFN_SaveGameSave(&iNESCart); + + if(iNESCart.Close) iNESCart.Close(); + + iNESFree(); +} + +#ifdef WANT_DEBUGGER +static void iNES_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "prgrom")) + { + while(Length--) + { + Address &= (ROM_size << 14) - 1; + *Buffer = ROM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "chrrom") && VROM_size) + { + while(Length--) + { + Address &= (VROM_size << 13) - 1; + *Buffer = VROM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "chrram") && !VROM_size && CHRRAMSize) + { + while(Length--) + { + Address &= CHRRAMSize - 1; + *Buffer = VROM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "wram") && WRAM) + { + while(Length--) + { + Address &= 0x1FFF; + *Buffer = WRAM[Address]; + Address++; + Buffer++; + } + } +} + +static void iNES_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "prgrom")) + { + while(Length--) + { + Address &= (ROM_size << 14) - 1; + ROM[Address] = *Buffer; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "chrrom") && VROM_size) + { + while(Length--) + { + Address &= (VROM_size << 13) - 1; + VROM[Address] = *Buffer; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "chrram") && !VROM_size && CHRRAMSize) + { + while(Length--) + { + Address &= CHRRAMSize - 1; + VROM[Address] = *Buffer; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "wram") && WRAM) + { + while(Length--) + { + Address &= 0x1FFF; + WRAM[Address] = *Buffer; + Address++; + Buffer++; + } + } +} +#endif + + +uint32 iNESGameCRC32; + +struct CRCMATCH { + uint32 crc; + const char *name; +}; + +struct INPSEL { + const uint32 crc32; + const char* input1; + const char *input2; + const char *inputfc; +}; + +/* This is mostly for my personal use. So HA. */ +static void SetInput(void) +{ + static struct INPSEL moo[]= + { + {0x3a1694f9,"gamepad","gamepad","4player"}, /* Nekketsu Kakutou Densetsu */ + + {0xc3c0811d,"gamepad","gamepad","oekakids"}, /* The two "Oeka Kids" games */ + {0x9d048ea4,"gamepad","gamepad","oekakids"}, /* */ + + {0xaf4010ea,"gamepad","powerpadb", NULL}, /* World Class Track Meet */ + {0xd74b2719,"gamepad","powerpadb", NULL}, /* Super Team Games */ + {0x61d86167,"gamepad","powerpadb", NULL}, /* Street Cop */ + {0x6435c095,"gamepad","powerpadb", NULL}, /* Short Order/Eggsplode */ + + + {0x48ca0ee1,"gamepad","gamepad", "bworld"}, /* Barcode World */ + {0x9f8f200a,"gamepad","gamepad","ftrainera"}, /* Super Mogura Tataki!! - Pokkun Moguraa */ + {0x9044550e,"gamepad","gamepad","ftrainera"}, /* Rairai Kyonshizu */ + {0x2f128512,"gamepad","gamepad","ftrainera"}, /* Jogging Race */ + {0x60ad090a,"gamepad","gamepad","ftrainera"}, /* Athletic World */ + + {0x8a12a7d9,"gamepad","gamepad","ftrainerb"}, /* Totsugeki Fuuun Takeshi Jou */ + {0xea90f3e2,"gamepad","gamepad","ftrainerb"}, /* Running Stadium */ + {0x370ceb65,"gamepad","gamepad","ftrainerb"}, /* Meiro Dai Sakusen */ + // Bad dump? {0x69ffb014,"gamepad","gamepad","ftrainerb"}, /* Fuun Takeshi Jou 2 */ + {0x6cca1c1f,"gamepad","gamepad","ftrainerb"}, /* Dai Undoukai */ + {0x29de87af,"gamepad","gamepad","ftrainerb"}, /* Aerobics Studio */ + {0xbba58be5,"gamepad","gamepad","ftrainerb"}, /* Family Trainer: Manhattan Police */ + {0xea90f3e2,"gamepad","gamepad","ftrainerb"}, /* Family Trainer: Running Stadium */ + + {0xd9f45be9,"gamepad","gamepad","partytap"}, /* Gimme a Break ... */ + {0x1545bd13,"gamepad","gamepad","partytap"}, /* Gimme a Break ... 2 */ + + {0x7b44fb2a,"gamepad","gamepad","mahjong"}, /* Ide Yousuke Meijin no Jissen Mahjong 2 */ + {0x9fae4d46,"gamepad","gamepad","mahjong"}, /* Ide Yousuke Meijin no Jissen Mahjong */ + + {0x980be936,"gamepad","gamepad","hypershot"}, /* Hyper Olympic */ + {0x21f85681,"gamepad","gamepad","hypershot"}, /* Hyper Olympic (Gentei Ban) */ + {0x915a53a7,"gamepad","gamepad","hypershot"}, /* Hyper Sports */ + {0xad9c63e2,"gamepad",NULL,"shadow"}, /* Space Shadow */ + + {0x4d68cfb1, NULL, "zapper", "none"}, /* Crime Busters */ + {0xbbe40dc4,NULL,"zapper", "none"}, /* Baby Boomer */ + {0x24598791,NULL,"zapper", "none"}, /* Duck Hunt */ + {0xff24d794,NULL,"zapper", "none"}, /* Hogan's Alley */ + {0xbeb8ab01,NULL,"zapper", "none"}, /* Gumshoe */ + {0xde8fd935,NULL,"zapper", "none"}, /* To the Earth */ + {0xedc3662b,NULL,"zapper", "none"}, /* Operation Wolf */ + {0x2a6559a1,NULL,"zapper", "none"}, /* Operation Wolf (J) */ + + {0x23d17f5e,"gamepad","zapper", "none"}, /* The Lone Ranger */ + {0xb8b9aca3,NULL,"zapper", "none"}, /* Wild Gunman */ + {0x5112dc21,NULL,"zapper", "none"}, /* Wild Gunman */ + {0x4318a2f8,NULL,"zapper", "none"}, /* Barker Bill's Trick Shooting */ + {0x5ee6008e,NULL,"zapper", "none"}, /* Mechanized Attack */ + {0x3e58a87e,NULL,"zapper", "none"}, /* Freedom Force */ + {0x851eb9be,"gamepad","zapper", "none"}, /* Shooting Range */ + {0x74bea652,"gamepad","zapper", "none"}, /* Supergun 3-in-1 */ + {0x32fb0583,NULL,"arkanoid","none"}, /* Arkanoid(NES) */ + {0xd89e5a67,NULL,NULL,"arkanoid"}, /* Arkanoid (J) */ + {0x0f141525,NULL,NULL,"arkanoid"}, /* Arkanoid 2(J) */ + + {0x912989dc,NULL,NULL,"fkb"}, /* Playbox BASIC */ + {0xf7606810,NULL,NULL,"fkb"}, /* Family BASIC 2.0A */ + {0x895037bc,NULL,NULL,"fkb"}, /* Family BASIC 2.1a */ + {0xb2530afc,NULL,NULL,"fkb"}, /* Family BASIC 3.0 */ + {0, NULL, NULL, NULL }, + }; + int x=0; + + while(moo[x].input1 > 0 || moo[x].input2 > 0 || moo[x].inputfc > 0) + { + if(moo[x].crc32==iNESGameCRC32) + { + MDFNGameInfo->DesiredInput.clear(); + MDFNGameInfo->DesiredInput.push_back(moo[x].input1); + MDFNGameInfo->DesiredInput.push_back(moo[x].input2); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + MDFNGameInfo->DesiredInput.push_back(moo[x].inputfc); + break; + } + x++; + } +} + +#define INESB_INCOMPLETE 1 +#define INESB_CORRUPT 2 +#define INESB_HACKED 4 + +struct BADINF { + uint64 md5partial; + const char *name; + uint32 type; +}; + + +static struct BADINF BadROMImages[]= +{ + #include "ines-bad.inc" +}; + +void CheckBad(uint64 md5partial) +{ + int x; + + x=0; + //printf("0x%llx\n",md5partial); + while(BadROMImages[x].name) + { + if(BadROMImages[x].md5partial == md5partial) + { + MDFN_PrintError(_("The copy of the game you have loaded, \"%s\", is bad, and will not work properly on Mednafen."), BadROMImages[x].name); + return; + } + x++; + } + +} +struct CHINF { + uint32 crc32; + int32 mapper; + int32 mirror; + uint64 pmd5; +}; + +static void CheckHInfo(void) +{ + /* ROM images that have the battery-backed bit set in the header that really + don't have battery-backed RAM is not that big of a problem, so I'll + treat this differently by only listing games that should have battery-backed RAM. + + Lower 64 bits of the MD5 hash. + */ + + static uint64 savie[]= + { + 0x498c10dc463cfe95LL, /* Battle Fleet */ + 0x6917ffcaca2d8466LL, /* Famista '90 */ + + 0xd63dcc68c2b20adcLL, /* Final Fantasy J */ + 0x012df596e2b31174LL, /* Final Fantasy 1+2 */ + 0xf6b359a720549ecdLL, /* Final Fantasy 2 */ + 0x5a30da1d9b4af35dLL, /* Final Fantasy 3 */ + + 0x2ee3417ba8b69706LL, /* Hydlide 3*/ + + 0xebbce5a54cf3ecc0LL, /* Justbreed */ + + 0x6a858da551ba239eLL, /* Kaijuu Monogatari */ + 0xa40666740b7d22feLL, /* Mindseeker */ + + 0x77b811b2760104b9LL, /* Mouryou Senki Madara */ + + 0x11b69122efe86e8cLL, /* RPG Jinsei Game */ + + 0xa70b495314f4d075LL, /* Ys 3 */ + + + 0xc04361e499748382LL, /* AD&D Heroes of the Lance */ + 0xb72ee2337ced5792LL, /* AD&D Hillsfar */ + 0x2b7103b7a27bd72fLL, /* AD&D Pool of Radiance */ + + 0x854d7947a3177f57LL, /* Crystalis */ + + 0xb0bcc02c843c1b79LL, /* DW */ + 0x4a1f5336b86851b6LL, /* DW */ + + 0x2dcf3a98c7937c22LL, /* DW 2 */ + 0x733026b6b72f2470LL, /* Dw 3 */ + 0x98e55e09dfcc7533LL, /* DW 4*/ + 0x8da46db592a1fcf4LL, /* Faria */ + 0x91a6846d3202e3d6LL, /* Final Fantasy */ + 0xedba17a2c4608d20LL, /* "" */ + + 0x94b9484862a26cbaLL, /* Legend of Zelda */ + 0x04a31647de80fdabLL, /* "" */ + + 0x9aa1dc16c05e7de5LL, /* Startropics */ + 0x1b084107d0878bd0LL, /* Startropics 2*/ + + 0x836c0ff4f3e06e45LL, /* Zelda 2 */ + + 0 /* Abandon all hope if the game has 0 in the lower 64-bits of its MD5 hash */ + }; + + static struct CHINF moo[]= + { + #include "ines-correct.inc" + }; + int tofix=0; + int x; + uint64 partialmd5=0; + + for(x=0;x<8;x++) + { + partialmd5 |= (uint64)iNESCart.MD5[15-x] << (x*8); + //printf("%16llx\n", partialmd5); + } + CheckBad(partialmd5); + x=0; + + do + { + if((moo[x].crc32 && moo[x].crc32 == iNESGameCRC32) || (moo[x].pmd5 && moo[x].pmd5 == partialmd5)) + { + if(moo[x].mapper >= 0) + { + if((moo[x].mapper & 0x800) && VROM_size) + { + VROM_size=0; + MDFN_free(VROM); + VROM = 0; + tofix|=8; + } + if(MapperNo != (moo[x].mapper & 0xFF)) + { + tofix|=1; + MapperNo=moo[x].mapper&0xFF; + } + } + if(moo[x].mirror>=0) + { + if(moo[x].mirror==8) + { + if(Mirroring==2) /* Anything but hard-wired(four screen). */ + { + tofix|=2; + Mirroring=0; + } + } + else if(Mirroring!=moo[x].mirror) + { + if(Mirroring!=(moo[x].mirror&~4)) + if((moo[x].mirror&~4)<=2) /* Don't complain if one-screen mirroring + needs to be set(the iNES header can't + hold this information). + */ + tofix|=2; + Mirroring=moo[x].mirror; + } + } + break; + } + x++; + } while(moo[x].mirror>=0 || moo[x].mapper>=0); + + x=0; + while(savie[x] != 0) + { + if(savie[x] == partialmd5) + { + if(!(head.ROM_type&2)) + { + tofix|=4; + head.ROM_type|=2; + } + } + x++; + } + + /* Games that use these iNES mappers tend to have the four-screen bit set + when it should not be. + */ + if((MapperNo==118 || MapperNo==24 || MapperNo==26) && (Mirroring==2)) + { + Mirroring=0; + tofix|=2; + } + + /* Four-screen mirroring implicitly set. */ + if(MapperNo==99) + Mirroring=2; + + if(tofix) + { + MDFN_printf(_("The iNES header contains incorrect information. For now, the information will be corrected in RAM:\n")); + MDFN_indent(1); + if(tofix&1) + MDFN_printf(_("The mapper number should be set to %d.\n"), MapperNo); + + if(tofix&2) + { + const char *mstr[3] = { + _("Horizontal"), _("Vertical"), _("Four-screen") + }; + MDFN_printf(_("Mirroring should be set to \"%s\".\n"), mstr[Mirroring & 3]); + } + if(tofix&4) + { + MDFN_printf(_("The battery-backed bit should be set.\n")); + } + if(tofix&8) + { + MDFN_printf(_("This game should not have any CHR ROM. ")); + } + MDFN_indent(-1); + } +} + + + +bool iNES_TestMagic(const char *name, MDFNFILE *fp) +{ + if(fp->size < 16) + return(FALSE); + + if(memcmp(fp->data, "NES\x1a", 4)) + return(FALSE); + + return(TRUE); +} + +bool iNESLoad(const char *name, MDFNFILE *fp, NESGameType *gt) +{ + md5_context md5; + + if(!iNES_TestMagic(name, fp)) + return(FALSE); + + /* File size is too small to be an iNES file */ + memcpy(head.raw, fp->data, 16); + fp->fseek(16, SEEK_SET); + + memset(&iNESCart,0,sizeof(iNESCart)); + + /* Do some fixes to common strings found in + old iNES-format headers. + */ + if(!memcmp(&head.raw[0x7], "DiskDude", 8)) + { + memset(&head.raw[0x7], 0, 0x9); + } + + if(!memcmp(&head.raw[0x7], "demiforce", 9)) + { + memset(&head.raw[0x7], 0, 0x9); + } + + if(!memcmp(&head.raw[0xA], "Ni03", 4)) + { + if(!memcmp(&head.raw[0x7], "Dis", 3)) + memset(&head.raw[0x7], 0, 0x9); + else + memset(&head.raw[0xA], 0, 0x6); + } + + if(!head.ROM_size) + { + MDFN_PrintError(_("No PRG ROM present!")); + return(0); + } + + ROM_size = head.ROM_size; + VROM_size = head.VROM_size; + ROM_size = round_up_pow2(ROM_size); + + if(VROM_size) + VROM_size = round_up_pow2(VROM_size); + + MapperNo = (head.ROM_type>>4); + MapperNo|=(head.ROM_type2&0xF0); + Mirroring = (head.ROM_type&1); + + if(head.ROM_type&8) Mirroring=2; + + if(!(ROM = (uint8 *)MDFN_malloc(ROM_size<<14, _("PRG ROM data")))) + { + iNESFree(); + return 0; + } + + #ifdef WANT_DEBUGGER + ASpace_Add(iNES_GetAddressSpaceBytes, iNES_PutAddressSpaceBytes, "prgrom", "PRG ROM", (unsigned int)(log(ROM_size << 14) / log(2))); + #endif + + if (VROM_size) + { + if(!(VROM = (uint8 *)MDFN_malloc(VROM_size<<13, _("CHR ROM data")))) + { + iNESFree(); + return 0; + } + #ifdef WANT_DEBUGGER + ASpace_Add(iNES_GetAddressSpaceBytes, iNES_PutAddressSpaceBytes, "chrrom", "CHR ROM", (unsigned int)(log(VROM_size << 13) / log(2))); + #endif + } + memset(ROM,0xFF,ROM_size<<14); + if(VROM_size) memset(VROM,0xFF,VROM_size<<13); + if(head.ROM_type&4) /* Trainer */ + { + if(fp->fread(trainerpoo,512,1) != 1) + { + MDFN_PrintError(_("Error reading trainer.")); + return(0); + } + } + + ResetCartMapping(); + + SetupCartPRGMapping(0,ROM,ROM_size*0x4000,0); + + if(fp->fread(ROM,0x4000,head.ROM_size) != head.ROM_size) + { + MDFN_PrintError(_("Error reading PRG ROM data")); + iNESFree(); + return(0); + } + + if(VROM_size) + { + if(fp->fread(VROM,0x2000,head.VROM_size) != head.VROM_size) + { + MDFN_PrintError(_("Error reading CHR ROM data")); + iNESFree(); + return(0); + } + } + md5.starts(); + md5.update(ROM,ROM_size<<14); + + iNESGameCRC32 = crc32(0,ROM,ROM_size<<14); + + if(VROM_size) + { + iNESGameCRC32 = crc32(iNESGameCRC32,VROM,VROM_size<<13); + md5.update(VROM,VROM_size<<13); + } + md5.finish(iNESCart.MD5); + memcpy(MDFNGameInfo->MD5,iNESCart.MD5,sizeof(iNESCart.MD5)); + + iNESCart.CRC32 = iNESGameCRC32; + + MDFN_printf(_("PRG ROM: %3d x 16KiB\n"), head.ROM_size); + MDFN_printf(_("CHR ROM: %3d x 8KiB\n"), head.VROM_size); + MDFN_printf(_("ROM CRC32: 0x%08x\n"), iNESGameCRC32); + + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(iNESCart.MD5, 0).c_str()); + MDFN_printf(_("Mapper: %d\n"), MapperNo); + MDFN_printf(_("Mirroring: %s\n"), Mirroring==2?_("None(Four-screen)"):Mirroring?_("Vertical"):_("Horizontal")); + + if(head.ROM_type&2) MDFN_printf(_("Battery-backed.\n")); + if(head.ROM_type&4) MDFN_printf(_("Trained.\n")); + + SetInput(); + CheckHInfo(); + { + int x; + uint64 partialmd5=0; + + for(x=0;x<8;x++) + { + partialmd5 |= (uint64)iNESCart.MD5[7-x] << (x*8); + } + + MDFN_VSUniCheck(partialmd5, &MapperNo, &Mirroring); + } + /* Must remain here because above functions might change value of + VROM_size and free(VROM). + */ + if(VROM_size) + SetupCartCHRMapping(0,VROM,VROM_size*0x2000,0); + + if(Mirroring==2) + SetupCartMirroring(4,1,ExtraNTARAM); + else if(Mirroring>=0x10) + SetupCartMirroring(2+(Mirroring&1),1,0); + else + SetupCartMirroring(Mirroring&1,(Mirroring&4)>>2,0); + + iNESCart.battery = (head.ROM_type&2)?1:0; + iNESCart.mirror = Mirroring; + + if(!NewiNES_Init(MapperNo)) + { + iNESFree(); + return(0); + } + + MDFN_LoadGameSave(&iNESCart); + + gt->Power = iNES_Power; + gt->Reset = iNES_Reset; + gt->Close = iNES_Close; + gt->StateAction = iNES_StateAction; + + if(iNESCart.CartExpSound.HiFill) + GameExpSound.push_back(iNESCart.CartExpSound); + + if(head.ROM_type & 4) + { + SetReadHandler(0x7000, 0x71FF, TrainerRead); + SetWriteHandler(0x7000, 0x71FF, TrainerWrite); + } + return 1; +} + + +#define BMAPF_32KCHRR 1 // 32KB CHR RAM +#define BMAPF_INESWRAMOK 2 // Ok to emulate WRAM here(ines.cpp) if the battery-backed bit is set. + +typedef struct { + int number; + int (*init)(CartInfo *); + uint32 flags; +} BMAPPING; + +static const BMAPPING bmap[] = { + { 0, NROM256_Init, BMAPF_INESWRAMOK }, + { 1, Mapper1_Init, 0 }, + { 2, UNROM_Init, BMAPF_INESWRAMOK }, + { 3, CNROM_Init, BMAPF_INESWRAMOK }, + { 4, Mapper4_Init, 0}, + { 5, Mapper5_Init, 0}, + { 6, Mapper6_Init, BMAPF_32KCHRR}, + { 7, AOROM_Init, 0}, + { 8, Mapper8_Init, 0}, + { 9, PNROM_Init, 0}, + { 10, MMC4_Init, 0}, + { 11, Mapper11_Init, 0}, + { 12, Mapper12_Init, 0}, + { 13, CPROM_Init, BMAPF_32KCHRR}, + { 15, Mapper15_Init, 0 }, + { 16, Mapper16_Init, 0}, + { 17, Mapper17_Init, 0}, + { 18, Mapper18_Init, 0}, + { 19, Mapper19_Init, 0}, + { 21, Mapper21_Init, 0}, + { 22, Mapper22_Init, 0}, + { 23, Mapper23_Init, 0}, + { 24, Mapper24_Init, 0}, + { 25, Mapper25_Init, 0}, + { 26, Mapper26_Init, 0}, + { 32, Mapper32_Init, 0}, + { 33, Mapper33_Init, 0}, + { 34, Mapper34_Init, 0}, + { 38, Mapper38_Init, 0}, + { 41, Mapper41_Init, 0}, + { 42, BioMiracleA_Init, 0}, + { 44, Mapper44_Init, 0}, + { 45, Mapper45_Init, 0}, + { 46, Mapper46_Init, 0}, + { 47, Mapper47_Init, 0}, + { 48, Mapper48_Init, 0}, + { 49, Mapper49_Init, 0}, + { 51, Mapper51_Init, 0}, + { 52, Mapper52_Init, 0}, + { 64, Mapper64_Init, 0}, + { 65, Mapper65_Init, 0}, + { 66, GNROM_Init, 0}, + { 67, Mapper67_Init, 0}, + { 68, Mapper68_Init, 0}, + { 69, BTR_Init, 0}, + { 70, Mapper70_Init, 0}, + { 71, Mapper71_Init, 0}, + { 72, Mapper72_Init, 0}, + { 73, Mapper73_Init, 0}, + { 74, Mapper74_Init, 0}, + { 75, Mapper75_Init, 0}, + { 76, Mapper76_Init, 0}, + { 77, Mapper77_Init, 0}, + { 78, Mapper78_Init, 0}, + { 79, NINA06_Init, 0}, + { 80, Mapper80_Init, 0}, + { 82, Mapper82_Init, 0}, + { 85, Mapper85_Init, 0}, + { 86, Mapper86_Init, 0}, + { 87, Mapper87_Init, 0}, + { 88, Mapper88_Init, 0}, + { 89, Mapper89_Init, 0}, + { 90, Mapper90_Init, 0}, + { 92, Mapper92_Init, 0}, + { 93, Mapper93_Init, 0}, + { 94, Mapper94_Init, 0}, + { 95, Mapper95_Init, 0}, + { 96, Mapper96_Init, 0}, + { 97, Mapper97_Init, 0}, + { 99, Mapper99_Init, 0}, + { 101, Mapper101_Init, 0}, + { 105, Mapper105_Init, 0}, + { 107, Mapper107_Init, 0}, + { 112, Mapper112_Init, 0}, + { 113, Mapper113_Init, 0}, + { 114, Mapper114_Init, 0}, + { 115, Mapper115_Init, 0}, + { 116, Mapper116_Init, 0}, + { 117, Mapper117_Init, 0}, + { 118, Mapper118_Init, 0}, + { 119, Mapper119_Init, 0}, /* Has CHR ROM and CHR RAM by default. Hmm. */ + { 133, SA72008_Init, 0}, + { 134, S74LS374N_Init, 0}, + { 135, S8259A_Init, 0}, + { 140, Mapper140_Init, 0}, + { 144, AGCI50282_Init, 0}, + { 150, BIC62_Init, 0}, + { 151, Mapper151_Init, 0}, + { 152, Mapper152_Init, 0}, + { 153, Mapper153_Init, 0}, + { 154, Mapper154_Init, 0}, + { 155, Mapper155_Init, 0}, + { 156, Mapper156_Init, 0}, + { 157, Mapper157_Init, 0}, + { 158, Mapper158_Init, 0}, + { 160, Mapper90_Init, 0}, + { 163, Mapper163_Init, 0 }, + { 180, Mapper180_Init, 0}, + { 182, Mapper182_Init, 0}, + { 184, Mapper184_Init, 0}, + { 185, Mapper185_Init, 0}, + { 187, Mapper187_Init, 0}, + { 189, Mapper189_Init, 0}, + { 193, Mapper193_Init, 0}, + { 206, Mapper206_Init, 0}, + { 207, Mapper207_Init, 0}, + { 208, Mapper208_Init, 0}, + { 209, Mapper209_Init, 0}, + { 210, Mapper210_Init, 0}, + { 215, Mapper215_Init, 0}, + { 217, Mapper217_Init, 0}, + { 222, Mapper222_Init, 0}, + { 228, Mapper228_Init, 0}, + { 232, BIC48_Init, 0}, + { 234, Mapper234_Init, 0}, + { 240, Mapper240_Init, 0}, + { 241, Mapper241_Init, 0}, + { 242, Mapper242_Init, 0}, + { 243, S74LS374N_Init, 0}, + { 244, Mapper244_Init, 0}, + { 245, Mapper245_Init, 0}, + { 246, Mapper246_Init, 0}, + { 248, Mapper248_Init, 0}, + { 249, Mapper249_Init, 0}, + { 250, Mapper250_Init, 0}, + { 0, NULL, 0} +}; + +static int NewiNES_Init(int num) +{ + const BMAPPING *tmp=bmap; + + while(tmp->init) + { + if(num == tmp->number) + { + if(!VROM_size) + { + if(tmp->flags & BMAPF_32KCHRR) + CHRRAMSize = 32768; + else + CHRRAMSize = 8192; + + if(!(VROM = (uint8 *)MDFN_malloc(CHRRAMSize, _("CHR RAM")))) + return(0); + + SetupCartCHRMapping(0x0,VROM,CHRRAMSize,1); + + #ifdef WANT_DEBUGGER + ASpace_Add(iNES_GetAddressSpaceBytes, iNES_PutAddressSpaceBytes, "chrram", "CHR RAM", (unsigned int)(log(CHRRAMSize) / log(2))); + #endif + } + + if(iNESCart.battery && (tmp->flags & BMAPF_INESWRAMOK)) + { + if(!(WRAM = (uint8 *)MDFN_malloc(8192, _("WRAM")))) + return(0); + + memset(WRAM, 0x00, 8192); + + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetReadHandler(0x6000, 0x7FFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + iNESCart.SaveGame[0] = WRAM; + iNESCart.SaveGameLen[0] = 8192; + + #ifdef WANT_DEBUGGER + ASpace_Add(iNES_GetAddressSpaceBytes, iNES_PutAddressSpaceBytes, "wram", "WRAM", 13); + #endif + } + + tmp->init(&iNESCart); + + return(1); + } + tmp++; + } + + MDFN_PrintError(_("iNES mapper %d is not supported!"), num); + return(0); +} diff --git a/libmednahawk/src/nes/ines.h b/libmednahawk/src/nes/ines.h new file mode 100644 index 0000000000..330f7c76be --- /dev/null +++ b/libmednahawk/src/nes/ines.h @@ -0,0 +1,138 @@ +#ifdef INESPRIV +extern uint32 iNESGameCRC32; +#else +#endif + +struct iNES_HEADER +{ + union + { + struct + { + char ID[4]; /*NES^Z*/ + uint8 ROM_size; + uint8 VROM_size; + uint8 ROM_type; + uint8 ROM_type2; + uint8 reserve[8]; + }; + uint8 raw[16]; + }; +}; + +int Mapper1_Init(CartInfo *); +int Mapper4_Init(CartInfo *); +int Mapper5_Init(CartInfo *); +int Mapper6_Init(CartInfo *); +int Mapper8_Init(CartInfo *); +int Mapper11_Init(CartInfo *); +int Mapper12_Init(CartInfo *); +int Mapper15_Init(CartInfo *); +int Mapper16_Init(CartInfo *); +int Mapper17_Init(CartInfo *); +int Mapper18_Init(CartInfo *); +int Mapper19_Init(CartInfo *); +int Mapper21_Init(CartInfo *); +int Mapper22_Init(CartInfo *); +int Mapper23_Init(CartInfo *); +int Mapper24_Init(CartInfo *); +int Mapper25_Init(CartInfo *); +int Mapper26_Init(CartInfo *); +int Mapper32_Init(CartInfo *); +int Mapper33_Init(CartInfo *); +int Mapper34_Init(CartInfo *); +int Mapper38_Init(CartInfo *); +int Mapper41_Init(CartInfo *); +int Mapper44_Init(CartInfo *); +int Mapper45_Init(CartInfo *); +int Mapper46_Init(CartInfo *); +int Mapper47_Init(CartInfo *); +int Mapper48_Init(CartInfo *); +int Mapper49_Init(CartInfo *); +int Mapper51_Init(CartInfo *); +int Mapper52_Init(CartInfo *); +int Mapper64_Init(CartInfo *); +int Mapper65_Init(CartInfo *); +int Mapper67_Init(CartInfo *); +int Mapper68_Init(CartInfo *); +int Mapper70_Init(CartInfo *); +int Mapper71_Init(CartInfo *); +int Mapper72_Init(CartInfo *); +int Mapper73_Init(CartInfo *); +int Mapper74_Init(CartInfo *); +int Mapper75_Init(CartInfo *); +int Mapper76_Init(CartInfo *); +int Mapper77_Init(CartInfo *); +int Mapper78_Init(CartInfo *); +int Mapper80_Init(CartInfo *); +int Mapper82_Init(CartInfo *); +int Mapper85_Init(CartInfo *); +int Mapper86_Init(CartInfo *); +int Mapper87_Init(CartInfo *); +int Mapper88_Init(CartInfo *); +int Mapper89_Init(CartInfo *); +int Mapper92_Init(CartInfo *); + +int Mapper90_Init(CartInfo *); +int Mapper97_Init(CartInfo *); +int Mapper99_Init(CartInfo *); +int Mapper101_Init(CartInfo *); + +int Mapper165_Init(CartInfo *); +int Mapper209_Init(CartInfo *); +int Mapper91_Init(CartInfo *); +int Mapper92_Init(CartInfo *); +int Mapper93_Init(CartInfo *); +int Mapper94_Init(CartInfo *); +int Mapper95_Init(CartInfo *); +int Mapper96_Init(CartInfo *); +int Mapper105_Init(CartInfo *); +int Mapper107_Init(CartInfo *); +int Mapper112_Init(CartInfo *); +int Mapper113_Init(CartInfo *); +int Mapper114_Init(CartInfo *); +int Mapper115_Init(CartInfo *); +int Mapper116_Init(CartInfo *); +int Mapper117_Init(CartInfo *); +int Mapper118_Init(CartInfo *); +int Mapper119_Init(CartInfo *); +int Mapper140_Init(CartInfo *); +int Mapper150_Init(CartInfo *); +int Mapper151_Init(CartInfo *); +int Mapper152_Init(CartInfo *); +int Mapper153_Init(CartInfo *); +int Mapper154_Init(CartInfo *); +int Mapper155_Init(CartInfo *); +int Mapper156_Init(CartInfo *); +int Mapper157_Init(CartInfo *); +int Mapper158_Init(CartInfo *); +int Mapper163_Init(CartInfo *); +int Mapper164_Init(CartInfo *); +int Mapper180_Init(CartInfo *); +int Mapper182_Init(CartInfo *); +int Mapper184_Init(CartInfo *); +int Mapper185_Init(CartInfo *); +int Mapper187_Init(CartInfo *); +int Mapper188_Init(CartInfo *); +int Mapper189_Init(CartInfo *); +int Mapper193_Init(CartInfo *); +int Mapper206_Init(CartInfo *); +int Mapper207_Init(CartInfo *); +int Mapper208_Init(CartInfo *); +int Mapper209_Init(CartInfo *); +int Mapper210_Init(CartInfo *); +int Mapper215_Init(CartInfo *); +int Mapper217_Init(CartInfo *); +int Mapper222_Init(CartInfo *); +int Mapper228_Init(CartInfo *); +int Mapper232_Init(CartInfo *); +int Mapper234_Init(CartInfo *); +int Mapper240_Init(CartInfo *); +int Mapper241_Init(CartInfo *); +int Mapper242_Init(CartInfo *); +int Mapper244_Init(CartInfo *); +int Mapper245_Init(CartInfo *); +int Mapper246_Init(CartInfo *); +int Mapper248_Init(CartInfo *); +int Mapper249_Init(CartInfo *); +int Mapper250_Init(CartInfo *); diff --git a/libmednahawk/src/nes/input.cpp b/libmednahawk/src/nes/input.cpp new file mode 100644 index 0000000000..09449245c0 --- /dev/null +++ b/libmednahawk/src/nes/input.cpp @@ -0,0 +1,899 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "x6502.h" +#include "sound.h" +#include "input.h" +#include "vsuni.h" +#include "fds.h" + +static const InputDeviceInputInfoStruct GamepadIDII[] = +{ + { "a", "A", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "b", "B", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "start", "START", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, +}; + +static const InputDeviceInputInfoStruct ZapperIDII[] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS }, + { "trigger", "Trigger", 0, IDIT_BUTTON, NULL }, + { "away_trigger", "Away Trigger", 1, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct PowerpadIDII[] = +{ + { "1", "1", 0, IDIT_BUTTON, NULL }, + { "2", "2", 1, IDIT_BUTTON, NULL }, + { "3", "3", 2, IDIT_BUTTON, NULL }, + { "4", "4", 3, IDIT_BUTTON, NULL }, + { "5", "5", 4, IDIT_BUTTON, NULL }, + { "6", "6", 5, IDIT_BUTTON, NULL }, + { "7", "7", 6, IDIT_BUTTON, NULL }, + { "8", "8", 7, IDIT_BUTTON, NULL }, + { "9", "9", 8, IDIT_BUTTON, NULL }, + { "10", "10", 9, IDIT_BUTTON, NULL }, + { "11", "11", 10, IDIT_BUTTON, NULL }, + { "12", "12", 11, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct ArkanoidIDII[] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS }, + { "button", "Button", 0, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct FKBIDII[0x48] = +{ + { "f1", "F1", 0, IDIT_BUTTON_BYTE }, + { "f2", "F2", 1, IDIT_BUTTON_BYTE }, + { "f3", "F3", 2, IDIT_BUTTON_BYTE }, + { "f4", "F4", 3, IDIT_BUTTON_BYTE }, + { "f5", "F5", 4, IDIT_BUTTON_BYTE }, + { "f6", "F6", 5, IDIT_BUTTON_BYTE }, + { "f7", "F7", 6, IDIT_BUTTON_BYTE }, + { "f8", "F8", 7, IDIT_BUTTON_BYTE }, + + { "1", "1", 8, IDIT_BUTTON_BYTE }, + { "2", "2", 9, IDIT_BUTTON_BYTE }, + { "3", "3", 10, IDIT_BUTTON_BYTE }, + { "4", "4", 11, IDIT_BUTTON_BYTE }, + { "5", "5", 12, IDIT_BUTTON_BYTE }, + { "6", "6", 13, IDIT_BUTTON_BYTE }, + { "7", "7", 14, IDIT_BUTTON_BYTE }, + { "8", "8", 15, IDIT_BUTTON_BYTE }, + { "9", "9", 16, IDIT_BUTTON_BYTE }, + { "0", "0", 17, IDIT_BUTTON_BYTE }, + { "minus", "-", 18, IDIT_BUTTON_BYTE }, + { "caret", "^", 19, IDIT_BUTTON_BYTE }, + { "backslash", "\\", 20, IDIT_BUTTON_BYTE }, + { "stop", "STOP", 21, IDIT_BUTTON_BYTE }, + + { "escape", "ESC", 22, IDIT_BUTTON_BYTE }, + { "q", "Q", 23, IDIT_BUTTON_BYTE }, + { "w", "W", 24, IDIT_BUTTON_BYTE }, + { "e", "E", 25, IDIT_BUTTON_BYTE }, + { "r", "R", 26, IDIT_BUTTON_BYTE }, + { "t", "T", 27, IDIT_BUTTON_BYTE }, + { "y", "Y", 28, IDIT_BUTTON_BYTE }, + { "u", "U", 29, IDIT_BUTTON_BYTE }, + { "i", "I", 30, IDIT_BUTTON_BYTE }, + { "o", "O", 31, IDIT_BUTTON_BYTE }, + { "p", "P", 32, IDIT_BUTTON_BYTE }, + { "at", "@", 33, IDIT_BUTTON_BYTE }, + { "left_bracket", "[", 34, IDIT_BUTTON_BYTE }, + { "return", "RETURN", 35, IDIT_BUTTON_BYTE }, + { "ctrl", "CTR", 36, IDIT_BUTTON_BYTE }, + { "a", "A", 37, IDIT_BUTTON_BYTE }, + { "s", "S", 38, IDIT_BUTTON_BYTE }, + { "d", "D", 39, IDIT_BUTTON_BYTE }, + { "f", "F", 40, IDIT_BUTTON_BYTE }, + { "g", "G", 41, IDIT_BUTTON_BYTE }, + { "h", "H", 42, IDIT_BUTTON_BYTE }, + { "j", "J", 43, IDIT_BUTTON_BYTE }, + { "k", "K", 44, IDIT_BUTTON_BYTE }, + { "l", "L", 45, IDIT_BUTTON_BYTE }, + { "semicolon", ";", 46, IDIT_BUTTON_BYTE }, + { "colon", ":", 47, IDIT_BUTTON_BYTE }, + { "right_bracket", "]", 48, IDIT_BUTTON_BYTE }, + { "kana", "カナ", 49, IDIT_BUTTON_BYTE }, + { "left_shift", "Left SHIFT", 50, IDIT_BUTTON_BYTE }, + { "z", "Z", 51, IDIT_BUTTON_BYTE }, + { "x", "X", 52, IDIT_BUTTON_BYTE }, + { "c", "C", 53, IDIT_BUTTON_BYTE }, + { "v", "V", 54, IDIT_BUTTON_BYTE }, + { "b", "B", 55, IDIT_BUTTON_BYTE }, + { "n", "N", 56, IDIT_BUTTON_BYTE }, + { "m", "M", 57, IDIT_BUTTON_BYTE }, + { "comma", ",", 58, IDIT_BUTTON_BYTE }, + { "period", ".", 59, IDIT_BUTTON_BYTE }, + { "slash", "/", 60, IDIT_BUTTON_BYTE }, + { "empty", "Empty", 61, IDIT_BUTTON_BYTE }, + { "right_shift", "Right SHIFT", 62, IDIT_BUTTON_BYTE }, + { "graph", "GRPH", 63, IDIT_BUTTON_BYTE }, + { "space", "SPACE", 64, IDIT_BUTTON_BYTE }, + + { "clear", "CLR", 65, IDIT_BUTTON_BYTE }, + { "insert", "INS", 66, IDIT_BUTTON_BYTE }, + { "delete", "DEL", 67, IDIT_BUTTON_BYTE }, + { "up", "UP", 68, IDIT_BUTTON_BYTE }, + { "left", "LEFT", 69, IDIT_BUTTON_BYTE }, + { "right", "RIGHT", 70, IDIT_BUTTON_BYTE }, + { "down", "DOWN", 71, IDIT_BUTTON_BYTE }, +}; + +static const InputDeviceInputInfoStruct HypershotIDII[] = +{ + { "i_run", "I, RUN", 0, IDIT_BUTTON_CAN_RAPID, NULL }, + { "i_jump", "I, JUMP", 1, IDIT_BUTTON_CAN_RAPID, NULL }, + { "ii_run", "II, RUN", 2, IDIT_BUTTON_CAN_RAPID, NULL }, + { "ii_jump", "II, JUMP", 3, IDIT_BUTTON_CAN_RAPID, NULL }, +}; + +static const InputDeviceInputInfoStruct MahjongIDII[] = +{ + { "1", "1", 0, IDIT_BUTTON, NULL }, + { "2", "2", 1, IDIT_BUTTON, NULL }, + { "3", "3", 2, IDIT_BUTTON, NULL }, + { "4", "4", 3, IDIT_BUTTON, NULL }, + { "5", "5", 4, IDIT_BUTTON, NULL }, + { "6", "6", 5, IDIT_BUTTON, NULL }, + { "7", "7", 6, IDIT_BUTTON, NULL }, + { "8", "8", 7, IDIT_BUTTON, NULL }, + { "9", "9", 8, IDIT_BUTTON, NULL }, + { "10", "10", 9, IDIT_BUTTON, NULL }, + { "11", "11", 10, IDIT_BUTTON, NULL }, + { "12", "12", 11, IDIT_BUTTON, NULL }, + { "13", "13", 12, IDIT_BUTTON, NULL }, + { "14", "14", 13, IDIT_BUTTON, NULL }, + { "15", "15", 14, IDIT_BUTTON, NULL }, + { "16", "16", 15, IDIT_BUTTON, NULL }, + { "17", "17", 16, IDIT_BUTTON, NULL }, + { "18", "18", 17, IDIT_BUTTON, NULL }, + { "19", "19", 18, IDIT_BUTTON, NULL }, + { "20", "20", 19, IDIT_BUTTON, NULL }, + { "21", "21", 20, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct PartyTapIDII[] = +{ + { "buzzer_1", "Buzzer 1", 0, IDIT_BUTTON, NULL }, + { "buzzer_2", "Buzzer 2", 1, IDIT_BUTTON, NULL }, + { "buzzer_3", "Buzzer 3", 2, IDIT_BUTTON, NULL }, + { "buzzer_4", "Buzzer 4", 3, IDIT_BUTTON, NULL }, + { "buzzer_5", "Buzzer 5", 4, IDIT_BUTTON, NULL }, + { "buzzer_6", "Buzzer 6", 5, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct FTrainerIDII[] = +{ + { "1", "1", 0, IDIT_BUTTON, NULL }, + { "2", "2", 1, IDIT_BUTTON, NULL }, + { "3", "3", 2, IDIT_BUTTON, NULL }, + { "4", "4", 3, IDIT_BUTTON, NULL }, + { "5", "5", 4, IDIT_BUTTON, NULL }, + { "6", "6", 5, IDIT_BUTTON, NULL }, + { "7", "7", 6, IDIT_BUTTON, NULL }, + { "8", "8", 7, IDIT_BUTTON, NULL }, + { "9", "9", 8, IDIT_BUTTON, NULL }, + { "10", "10", 9, IDIT_BUTTON, NULL }, + { "11", "11", 10, IDIT_BUTTON, NULL }, + { "12", "12", 11, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct OekaIDII[] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS }, + { "button", "Button", 0, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct BWorldIDII[] = +{ + { "new", "New", -1, IDIT_BYTE_SPECIAL }, + { "bd1", "Barcode Digit 1", -1, IDIT_BYTE_SPECIAL }, + { "bd2", "Barcode Digit 2", -1, IDIT_BYTE_SPECIAL }, + { "bd3", "Barcode Digit 3", -1, IDIT_BYTE_SPECIAL }, + { "bd4", "Barcode Digit 4", -1, IDIT_BYTE_SPECIAL }, + { "bd5", "Barcode Digit 5", -1, IDIT_BYTE_SPECIAL }, + { "bd6", "Barcode Digit 6", -1, IDIT_BYTE_SPECIAL }, + { "bd7", "Barcode Digit 7", -1, IDIT_BYTE_SPECIAL }, + { "bd8", "Barcode Digit 8", -1, IDIT_BYTE_SPECIAL }, + { "bd9", "Barcode Digit 9", -1, IDIT_BYTE_SPECIAL }, + { "bd10", "Barcode Digit 10", -1, IDIT_BYTE_SPECIAL }, + { "bd11", "Barcode Digit 11", -1, IDIT_BYTE_SPECIAL }, + { "bd12", "Barcode Digit 12", -1, IDIT_BYTE_SPECIAL }, + { "bd13", "Barcode Digit 13", -1, IDIT_BYTE_SPECIAL }, +}; + +static InputDeviceInfoStruct InputDeviceInfoNESPort34[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + GamepadIDII, + }, + +}; + +static InputDeviceInfoStruct InputDeviceInfoNESPort[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + GamepadIDII, + }, + + // Zapper + { + "zapper", + "Zapper", + NULL, + NULL, + sizeof(ZapperIDII) / sizeof(InputDeviceInputInfoStruct), + ZapperIDII, + }, + + // Powerpad A + { + "powerpada", + "Power Pad Side A", + NULL, + NULL, + sizeof(PowerpadIDII) / sizeof(InputDeviceInputInfoStruct), + PowerpadIDII, + }, + + // Powerpad B + { + "powerpadb", + "Power Pad Side B", + NULL, + NULL, + sizeof(PowerpadIDII) / sizeof(InputDeviceInputInfoStruct), + PowerpadIDII, + }, + + // Arkanoid + { + "arkanoid", + "Arkanoid Paddle", + NULL, + NULL, + sizeof(ArkanoidIDII) / sizeof(InputDeviceInputInfoStruct), + ArkanoidIDII, + }, + + +}; + +static InputDeviceInfoStruct InputDeviceInfoFamicomPort[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Arkanoid + { + "arkanoid", + "Arkanoid Paddle", + NULL, + NULL, + sizeof(ArkanoidIDII) / sizeof(InputDeviceInputInfoStruct), + ArkanoidIDII, + }, + + // Space Shadow Gun + { + "shadow", + "Space Shadow Gun", + NULL, + NULL, + sizeof(ZapperIDII) / sizeof(InputDeviceInputInfoStruct), + ZapperIDII, + }, + + // 4-player + { + "4player", + "4-player Adapter", + NULL, + NULL, + 0, + NULL, + }, + // Family Keyboard + { + "fkb", + "Family Keyboard", + NULL, + NULL, + sizeof(FKBIDII) / sizeof(InputDeviceInputInfoStruct), + FKBIDII, + }, + + // Hypershot + { + "hypershot", + "Hypershot Paddles", + NULL, + NULL, + sizeof(HypershotIDII) / sizeof(InputDeviceInputInfoStruct), + HypershotIDII, + }, + + // Mahjong + { + "mahjong", + "Mahjong Controller", + NULL, + NULL, + sizeof(MahjongIDII) / sizeof(InputDeviceInputInfoStruct), + MahjongIDII, + }, + + // Party Tap + { + "partytap", + "Party Tap", + NULL, + NULL, + sizeof(PartyTapIDII) / sizeof(InputDeviceInputInfoStruct), + PartyTapIDII, + }, + + // Family Trainer A + { + "ftrainera", + "Family Trainer Side A", + NULL, + NULL, + sizeof(FTrainerIDII) / sizeof(InputDeviceInputInfoStruct), + FTrainerIDII, + }, + + // Family Trainer B + { + "ftrainerb", + "Family Trainer Side B", + NULL, + NULL, + sizeof(FTrainerIDII) / sizeof(InputDeviceInputInfoStruct), + FTrainerIDII, + }, + + // Oeka Kids + { + "oekakids", + "Oeka Kids Tablet", + NULL, + NULL, + sizeof(OekaIDII) / sizeof(InputDeviceInputInfoStruct), + OekaIDII, + }, + + // Barcode World + { + "bworld", + "Barcode World Scanner", + NULL, + NULL, + sizeof(BWorldIDII) / sizeof(InputDeviceInputInfoStruct), + BWorldIDII, + }, + +}; + +// The temptation is there, but don't change the "fcexp" default setting to anything other than "none", as the presence of a device +// there by default will cause compatibility problems with games. +static const InputPortInfoStruct PortInfo[] = +{ + { "port1", "Port 1", sizeof(InputDeviceInfoNESPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoNESPort, "gamepad" }, + { "port2", "Port 2", sizeof(InputDeviceInfoNESPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoNESPort, "gamepad" }, + { "port3", "Port 3", sizeof(InputDeviceInfoNESPort34) / sizeof(InputDeviceInfoStruct), InputDeviceInfoNESPort34, "gamepad" }, + { "port4", "Port 4", sizeof(InputDeviceInfoNESPort34) / sizeof(InputDeviceInfoStruct), InputDeviceInfoNESPort34, "gamepad" }, + { "fcexp", "Famicom Expansion Port", sizeof(InputDeviceInfoFamicomPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoFamicomPort, "none" }, +}; + +InputInfoStruct NESInputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +extern INPUTC *MDFN_InitZapper(int w); +extern INPUTC *MDFN_InitPowerpadA(int w); +extern INPUTC *MDFN_InitPowerpadB(int w); +extern INPUTC *MDFN_InitArkanoid(int w); + +extern INPUTCFC *MDFN_InitArkanoidFC(void); +extern INPUTCFC *MDFN_InitSpaceShadow(void); +extern INPUTCFC *MDFN_InitFKB(void); +extern INPUTCFC *MDFN_InitHS(void); +extern INPUTCFC *MDFN_InitMahjong(void); +extern INPUTCFC *MDFN_InitPartyTap(void); +extern INPUTCFC *MDFN_InitFamilyTrainerA(void); +extern INPUTCFC *MDFN_InitFamilyTrainerB(void); +extern INPUTCFC *MDFN_InitOekaKids(void); +extern INPUTCFC *MDFN_InitTopRider(void); +extern INPUTCFC *MDFN_InitBarcodeWorld(void); + +static uint8 joy_readbit[2]; +//static +uint8 joy[4]={0,0,0,0}; +static uint8 LastStrobe; + +/* This function is a quick hack to get the NSF player to use emulated gamepad + input. +*/ +uint8 MDFN_GetJoyJoy(void) +{ + return(joy[0]|joy[1]|joy[2]|joy[3]); +} +extern uint8 coinon; + +static int FSDisable=0; /* Set to 1 if NES-style four-player adapter is disabled. */ + +static const char *JPType[5] = { "none", "none", "none", "none", "none" }; +static void *InputDataPtr[5]; + +void (*InputScanlineHook)(uint8 *bg, uint8 *spr, uint32 linets, int final); + + +static INPUTC DummyJPort = {0, 0, 0, 0, 0, NULL, 0, 0}; +static INPUTC *JPorts[4] = {&DummyJPort, &DummyJPort, &DummyJPort, &DummyJPort}; +static INPUTCFC *FCExp = NULL; + +static uint8 ReadGPVS(int w) +{ + uint8 ret=0; + + if(joy_readbit[w]>=8) + ret=1; + else + { + ret = ((joy[w]>>(joy_readbit[w]))&1); + if(!fceuindbg) + joy_readbit[w]++; + } + return ret; +} + +static uint8 ReadGP(int w) +{ + uint8 ret; + + if(joy_readbit[w]>=8) + ret = ((joy[2+w]>>(joy_readbit[w]&7))&1); + else + ret = ((joy[w]>>(joy_readbit[w]))&1); + if(joy_readbit[w]>=16) ret=0; + if(FSDisable) + { + if(joy_readbit[w]>=8) ret|=1; + } + else + { + if(joy_readbit[w]==19-w) ret|=1; + } + if(!fceuindbg) + joy_readbit[w]++; + return ret; +} + +static DECLFR(JPRead) +{ + uint8 ret=0; + + if(JPorts[A&1]->Read) + ret|=JPorts[A&1]->Read(A&1); + + if(FCExp) + { + if(FCExp->Read) + { + ret=FCExp->Read(A&1,ret); + } + } + ret|=X.DB&0xC0; + return(ret); +} + +static DECLFW(B4016) +{ + if(FCExp) + if(FCExp->Write) + FCExp->Write(V&7); + + if(JPorts[0]->Write) + JPorts[0]->Write(V&1); + if(JPorts[1]->Write) + JPorts[1]->Write(V&1); + + if((LastStrobe&1) && (!(V&1))) + { + /* This strobe code is just for convenience. If it were + with the code in input / *.c, it would more accurately represent + what's really going on. But who wants accuracy? ;) + Seriously, though, this shouldn't be a problem. + */ + if(JPorts[0]->Strobe) + JPorts[0]->Strobe(0); + if(JPorts[1]->Strobe) + JPorts[1]->Strobe(1); + if(FCExp) + if(FCExp->Strobe) + FCExp->Strobe(); + } + LastStrobe=V&0x1; +} + +static void StrobeGP(int w) +{ + joy_readbit[w]=0; +} + +static int StateActionGP(int w, StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(joy_readbit[w]), + SFVAR(joy[w + 0]), + SFVAR(joy[w + 2]), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, w ? "INP1" : "INP0"); + if(load) + { + + } + return(ret); +} + +static uint8 F4ReadBit[2]; +static int StateActionGPFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(F4ReadBit, 2), + SFARRAY(joy, 4), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs,"INPF"); + if(load) + { + + } + return(ret); +} + +static void StrobeFami4(void) +{ + F4ReadBit[0]=F4ReadBit[1]=0; +} + +static uint8 ReadFami4(int w, uint8 ret) +{ + ret&=1; + + ret |= ((joy[2+w]>>(F4ReadBit[w]))&1)<<1; + if(F4ReadBit[w]>=8) ret|=2; + else F4ReadBit[w]++; + + return(ret); +} + +static void UpdateGamepad(int w, void *data) +{ + joy[w] = *(uint8*)data; +} + +static INPUTCFC FAMI4C = { ReadFami4,0,StrobeFami4,0,0,0, StateActionGPFC, 4, 1 }; +static INPUTC GPC = {ReadGP,0,StrobeGP,UpdateGamepad,0,0, StateActionGP, 4, 1}; +static INPUTC GPCVS = {ReadGPVS,0,StrobeGP,UpdateGamepad,0,0, StateActionGP, 4, 1}; + +void MDFN_DrawInput(MDFN_Surface *surface) +{ + int x; + + for(x=0;x<2;x++) + if(JPorts[x]->Draw) + JPorts[x]->Draw(x, surface); + + if(FCExp) + if(FCExp->Draw) + FCExp->Draw(surface); +} + +void MDFN_UpdateInput(void) +{ + int x; + + for(x = 0; x < 4;x++) + { + if(JPorts[x]->Update) + JPorts[x]->Update(x, InputDataPtr[x]); + } + + if(FCExp) + if(FCExp->Update) + FCExp->Update(InputDataPtr[4]); + + if(NESIsVSUni && coinon) + coinon--; + + if(NESIsVSUni) + MDFN_VSUniSwap(&joy[0], &joy[1]); +} + +extern uint8 vsdip; // FIXME + +static DECLFR(VSUNIRead0) +{ + uint8 ret=0; + + if(JPorts[0]->Read) + ret|=(JPorts[0]->Read(0))&1; + + ret|=(vsdip&3)<<3; + if(coinon) + ret|=0x4; + return ret; +} + +static DECLFR(VSUNIRead1) +{ + uint8 ret=0; + + if(JPorts[1]->Read) + ret|=(JPorts[1]->Read(1))&1; + ret|=vsdip&0xFC; + return ret; +} + +static void SLHLHook(uint8 *bg, uint8 *spr, uint32 linets, int final) +{ + int x; + + for(x=0;x<2;x++) + if(JPorts[x]->SLHook) + JPorts[x]->SLHook(x,bg,spr,linets,final); + if(FCExp) + if(FCExp->SLHook) + FCExp->SLHook(bg,spr,linets,final); +} + +static void CheckSLHook(void) +{ + InputScanlineHook=0; + if(JPorts[0]->SLHook || JPorts[1]->SLHook) + InputScanlineHook=SLHLHook; + if(FCExp) + if(FCExp->SLHook) + InputScanlineHook=SLHLHook; +} + +static void SetInputStuff(int x) +{ + const char *ts = JPType[x]; + + if(x == 4) + { + if(!strcasecmp(ts, "none")) + FCExp = NULL; + else if(!strcasecmp(ts, "arkanoid")) + FCExp = MDFN_InitArkanoidFC(); + else if(!strcasecmp(ts, "shadow")) + FCExp=MDFN_InitSpaceShadow(); + else if(!strcasecmp(ts, "oekakids")) + FCExp=MDFN_InitOekaKids(); + else if(!strcasecmp(ts, "4player")) + { + FCExp=&FAMI4C; + memset(&F4ReadBit,0,sizeof(F4ReadBit)); + } + else if(!strcasecmp(ts, "fkb")) + FCExp=MDFN_InitFKB(); + else if(!strcasecmp(ts, "hypershot")) + FCExp=MDFN_InitHS(); + else if(!strcasecmp(ts, "mahjong")) + FCExp=MDFN_InitMahjong(); + else if(!strcasecmp(ts, "partytap")) + FCExp=MDFN_InitPartyTap(); + else if(!strcasecmp(ts, "ftrainera")) + FCExp=MDFN_InitFamilyTrainerA(); + else if(!strcasecmp(ts, "ftrainerb")) + FCExp=MDFN_InitFamilyTrainerB(); + else if(!strcasecmp(ts, "bworld")) + FCExp=MDFN_InitBarcodeWorld(); + } + else + { + if(!strcasecmp(ts, "gamepad")) + { + if(NESIsVSUni) + JPorts[x] = &GPCVS; + else + JPorts[x]=&GPC; + } + else if(!strcasecmp(ts, "arkanoid")) + JPorts[x]=MDFN_InitArkanoid(x); + else if(!strcasecmp(ts, "zapper")) + JPorts[x]=MDFN_InitZapper(x); + else if(!strcasecmp(ts, "powerpada")) + JPorts[x]=MDFN_InitPowerpadA(x); + else if(!strcasecmp(ts, "powerpadb")) + JPorts[x]=MDFN_InitPowerpadB(x); + else if(!strcasecmp(ts, "none")) + JPorts[x]=&DummyJPort; + } + + CheckSLHook(); +} + +void NESINPUT_Power(void) +{ + memset(joy_readbit,0,sizeof(joy_readbit)); + memset(joy,0,sizeof(joy)); + LastStrobe = 0; + + for(int x = 0; x < 5; x++) + SetInputStuff(x); +} + +void MDFNNES_SetInput(int port, const char *type, void *ptr) +{ + JPType[port] = type; + InputDataPtr[port] = ptr; + SetInputStuff(port); +} + +int NESINPUT_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVARN(LastStrobe, "LSTS"), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPT"); + + if(JPorts[0]->StateAction) + ret &= JPorts[0]->StateAction(0, sm, load, data_only); + if(JPorts[1]->StateAction) + ret &= JPorts[1]->StateAction(1, sm, load, data_only); + if(FCExp && FCExp->StateAction) + ret &= FCExp->StateAction(sm, load, data_only); + + if(load) + { + + } + return(ret); +} + +static writefunc Other4016WHandler; + +static DECLFW(B4016_Chained) +{ + Other4016WHandler(A, V); + B4016(A, V); +} + +void NESINPUT_Init(void) +{ + FSDisable = MDFN_GetSettingB("nes.nofs"); + + if(NESIsVSUni) + { + SetReadHandler(0x4016, 0x4016, VSUNIRead0); + SetReadHandler(0x4017, 0x4017, VSUNIRead1); + } + else + SetReadHandler(0x4016, 0x4017, JPRead); + + Other4016WHandler = GetWriteHandler(0x4016); + + if(Other4016WHandler != BNull) + { + puts("Mapper 99 yay?"); + SetWriteHandler(0x4016, 0x4016, B4016_Chained); + } + else + SetWriteHandler(0x4016, 0x4016, B4016); +} + + + +void MDFNNES_DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_INSERT_DISK: + FDS_DiskInsert(-1); + break; + + case MDFN_MSC_SELECT_DISK: + FDS_DiskSelect(); + break; + + case MDFN_MSC_EJECT_DISK: + FDS_DiskEject(); + break; + + case MDFN_MSC_INSERT_COIN: + MDFN_VSUniCoin(); + break; + + case MDFN_MSC_TOGGLE_DIP0 ... MDFN_MSC_TOGGLE_DIP7: + MDFN_VSUniToggleDIP(cmd - MDFN_MSC_TOGGLE_DIP0); + break; + + case MDFN_MSC_POWER: + PowerNES(); + break; + + case MDFN_MSC_RESET: + ResetNES(); + break; + } +} + diff --git a/libmednahawk/src/nes/input.h b/libmednahawk/src/nes/input.h new file mode 100644 index 0000000000..8739c67b5e --- /dev/null +++ b/libmednahawk/src/nes/input.h @@ -0,0 +1,80 @@ +#ifndef _NES_INPUT_H +#define _NES_INPUT_H + +#define JOY_A 1 +#define JOY_B 2 +#define JOY_SELECT 4 +#define JOY_START 8 +#define JOY_UP 0x10 +#define JOY_DOWN 0x20 +#define JOY_LEFT 0x40 +#define JOY_RIGHT 0x80 + +#define SI_NONE 0 +#define SI_GAMEPAD 1 +#define SI_ZAPPER 2 +#define SI_POWERPADA 3 +#define SI_POWERPADB 4 +#define SI_ARKANOID 5 + +#define SIFC_NONE 0 +#define SIFC_ARKANOID 1 +#define SIFC_SHADOW 2 +#define SIFC_4PLAYER 3 +#define SIFC_FKB 4 +#define SIFC_HYPERSHOT 5 +#define SIFC_MAHJONG 6 +#define SIFC_PARTYTAP 7 +#define SIFC_FTRAINERA 8 +#define SIFC_FTRAINERB 9 +#define SIFC_OEKAKIDS 10 +#define SIFC_BWORLD 11 +#define SIFC_TOPRIDER 12 + +#define SIS_NONE 0 +#define SIS_DATACH 1 +#define SIS_NWC 2 +#define SIS_VSUNISYSTEM 3 +#define SIS_NSF 4 + +#include "../state.h" + +typedef struct { + uint8 (*Read)(int w); + void (*Write)(uint8 v); + void (*Strobe)(int w); + void (*Update)(int w, void *data); + void (*SLHook)(int w, uint8 *bg, uint8 *spr, uint32 linets, int final); + void (*Draw)(int w, MDFN_Surface *surface); + int (*StateAction)(int w, StateMem *sm, int load, int data_only); + int InDataElements; + int InDataElementSize; +} INPUTC; + +typedef struct { + uint8 (*Read)(int w, uint8 ret); + void (*Write)(uint8 v); + void (*Strobe)(void); + void (*Update)(void *data); + void (*SLHook)(uint8 *bg, uint8 *spr, uint32 linets, int final); + void (*Draw)(MDFN_Surface *surface); + int (*StateAction)(StateMem *sm, int load, int data_only); + int InDataElements; + int InDataElementSize; +} INPUTCFC; + +void MDFN_DrawInput(MDFN_Surface *surface); +void MDFN_UpdateInput(void); +void NESINPUT_Power(void); +void NESINPUT_Init(void); +int NESINPUT_StateAction(StateMem *sm, int load, int data_only); + +extern void (*PStrobe[2])(void); +extern void (*InputScanlineHook)(uint8 *bg, uint8 *spr, uint32 linets, int final); + +void MDFNNES_DoSimpleCommand(int cmd); +void MDFNNES_SetInput(int port, const char *type, void *ptr); + +extern InputInfoStruct NESInputInfo; + +#endif diff --git a/libmednahawk/src/nes/input/Makefile.am.inc b/libmednahawk/src/nes/input/Makefile.am.inc new file mode 100644 index 0000000000..ac5748c568 --- /dev/null +++ b/libmednahawk/src/nes/input/Makefile.am.inc @@ -0,0 +1 @@ +mednafen_SOURCES += input/cursor.cpp input/zapper.cpp input/powerpad.cpp input/arkanoid.cpp input/shadow.cpp input/fkb.cpp input/fkb.h input/hypershot.cpp input/mahjong.cpp input/oekakids.cpp input/ftrainer.cpp input/partytap.cpp input/toprider.cpp input/bworld.cpp input/suborkb.cpp diff --git a/libmednahawk/src/nes/input/arkanoid.cpp b/libmednahawk/src/nes/input/arkanoid.cpp new file mode 100644 index 0000000000..bffeec1e27 --- /dev/null +++ b/libmednahawk/src/nes/input/arkanoid.cpp @@ -0,0 +1,165 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +typedef struct { + uint32 mzx,mzb; + uint32 readbit; +} ARK; + +static ARK NESArk[2]; +static ARK FCArk; + +static void StrobeARKFC(void) +{ + FCArk.readbit=0; +} + + +static uint8 ReadARKFC(int w,uint8 ret) +{ + ret&=~2; + + if(w) + { + if(FCArk.readbit>=8) + ret|=2; + else + { + ret|=((FCArk.mzx>>(7-FCArk.readbit))&1)<<1; + if(!fceuindbg) + FCArk.readbit++; + } + } + else + ret|=FCArk.mzb<<1; + return(ret); +} + +static uint32 FixX(uint32 in_x) +{ + uint32 dummy = 0; + int32 x; + + NESPPU_TranslateMouseXY(in_x, dummy); + + x = (int32)in_x + 98 - 32; + + if(x < 98) + x = 98; + + if(x > 242) + x = 242; + + x=~x; + return(x); +} + +static void UpdateARKFC(void *data) +{ + uint8 *ptr = (uint8*)data; + + FCArk.mzx=FixX((int32)MDFN_de32lsb(ptr + 0) >> 16); + FCArk.mzb=ptr[4]?1:0; +} + +static int StateAction(int w, StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(NESArk[w].mzx), + SFVAR(NESArk[w].mzb), + SFVAR(NESArk[w].readbit), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, w ? "INP1" : "INP0"); + if(load) + { + + } + return(ret); +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(FCArk.mzx), + SFVAR(FCArk.mzb), + SFVAR(FCArk.readbit), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + + +static INPUTCFC ARKCFC={ReadARKFC,0,StrobeARKFC,UpdateARKFC,0,0, StateActionFC, 3, sizeof(uint32) }; + +INPUTCFC *MDFN_InitArkanoidFC(void) +{ + FCArk.mzx=98; + FCArk.mzb=0; + return(&ARKCFC); +} + +static uint8 ReadARK(int w) +{ + uint8 ret=0; + + if(NESArk[w].readbit>=8) + ret|=1<<4; + else + { + ret|=((NESArk[w].mzx>>(7-NESArk[w].readbit))&1)<<4; + if(!fceuindbg) + NESArk[w].readbit++; + } + ret|=(NESArk[w].mzb&1)<<3; + return(ret); +} + + +static void StrobeARK(int w) +{ + NESArk[w].readbit=0; +} + +static void UpdateARK(int w, void *data) +{ + uint8 *ptr = (uint8*)data; + + NESArk[w].mzx=FixX((int32)MDFN_de32lsb(ptr + 0) >> 16); + NESArk[w].mzb=ptr[4]?1:0; +} + +static INPUTC ARKC={ReadARK, 0, StrobeARK, UpdateARK, 0, 0, StateAction, 3, sizeof(uint32) }; + +INPUTC *MDFN_InitArkanoid(int w) +{ + NESArk[w].mzx=98; + NESArk[w].mzb=0; + return(&ARKC); +} diff --git a/libmednahawk/src/nes/input/bworld.cpp b/libmednahawk/src/nes/input/bworld.cpp new file mode 100644 index 0000000000..e5bf0f0b7c --- /dev/null +++ b/libmednahawk/src/nes/input/bworld.cpp @@ -0,0 +1,89 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static int seq,ptr,bit,cnt,have; +static uint8 bdata[20]; + + +static uint8 Read(int w, uint8 ret) +{ + if(w && have) + { + switch(seq) + { + case 0: seq++; ptr=0; ret|=0x4; break; + case 1: seq++; bit=bdata[ptr]; cnt=0; ret|=0x4; break; + case 2: ret|=((bit&0x01)^0x01)<<2; bit>>=1; if(++cnt > 7) seq++; + break; + case 3: if(++ptr > 19) + { + seq=-1; + have=0; + } + else + seq=1; + default: break; + } + } + return(ret); +} + +static void Write(uint8 V) +{ + //printf("%02x\n",V); +} + +static void Update(void *data) +{ + if(*(uint8 *)data) + { + *(uint8 *)data=0; + seq=ptr=0; + have=1; + strcpy((char *)bdata,(char *)data+1); + memcpy((char *)&bdata[13],"SUNSOFT", strlen("SUNSOFT")); + } +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(bdata, 0x20), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + + +static INPUTCFC BarcodeWorld={Read,Write,0,Update,0,0, StateActionFC, 13, sizeof(uint8) }; + +INPUTCFC *MDFN_InitBarcodeWorld(void) +{ + return(&BarcodeWorld); +} + diff --git a/libmednahawk/src/nes/input/cursor.cpp b/libmednahawk/src/nes/input/cursor.cpp new file mode 100644 index 0000000000..b20d84a0a5 --- /dev/null +++ b/libmednahawk/src/nes/input/cursor.cpp @@ -0,0 +1,99 @@ +#include "share.h" + +static const uint8 GunSight[]={ + 0,0,0,0,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,0,0,0, + 0,0,0,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,3,0,0,0,0,0,0, + 1,2,1,2,0,3,3,3,0,2,1,2,1, + 0,0,0,0,0,0,3,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,2,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,0,0,0, +}; +static const uint8 MDFNcursor[11*19]= +{ + 1,0,0,0,0,0,0,0,0,0,0, + 1,1,0,0,0,0,0,0,0,0,0, + 1,2,1,0,0,0,0,0,0,0,0, + 1,2,2,1,0,0,0,0,0,0,0, + 1,2,2,2,1,0,0,0,0,0,0, + 1,2,2,2,2,1,0,0,0,0,0, + 1,2,2,2,2,2,1,0,0,0,0, + 1,2,2,2,2,2,2,1,0,0,0, + 1,2,2,2,2,2,2,2,1,0,0, + 1,2,2,2,2,2,2,2,2,1,0, + 1,2,2,2,2,2,1,1,1,1,1, + 1,2,2,1,2,2,1,0,0,0,0, + 1,2,1,0,1,2,2,1,0,0,0, + 1,1,0,0,1,2,2,1,0,0,0, + 1,0,0,0,0,1,2,2,1,0,0, + 0,0,0,0,0,1,2,2,1,0,0, + 0,0,0,0,0,0,1,2,2,1,0, + 0,0,0,0,0,0,1,2,2,1,0, + 0,0,0,0,0,0,0,1,1,0,0, +}; + +void MDFN_DrawGunSight(MDFN_Surface *surface, int xc, int yc) +{ + uint32 *buf = surface->pixels; + int x,y; + int c,d; + const uint32 ctransform[2] = { surface->MakeColor(0xff, 0xff, 0xff), surface->MakeColor(0, 0, 0) }; + MDFN_Rect DisplayRect; + + NESPPU_GetDisplayRect(&DisplayRect); + + for(y=0;y<13;y++) + for(x=0;x<13;x++) + { + uint8 a; + a=GunSight[y*13+x]; + if(a) + { + c = (yc+y-7); + d = (x-7) + xc * DisplayRect.w / 256; + if(c>=0 && d>=0 && d < surface->w && c < surface->h) + { + if(a==3) + buf[c * surface->pitch32 + d] = ~(buf[c * surface->pitch32 + d]); + else + buf[c * surface->pitch32 + d] = ctransform[(a - 1) & 1]; + } + } + } +} + + +void MDFN_DrawCursor(MDFN_Surface *surface, int xc, int yc) +{ + uint32 *buf = surface->pixels; + int x,y; + int c,d; + const uint32 ctransform[4] = { surface->MakeColor(0, 0, 0), surface->MakeColor(0, 0, 0), + surface->MakeColor(0xff, 0xff, 0xff), surface->MakeColor(0, 0, 0) + }; + MDFN_Rect DisplayRect; + + NESPPU_GetDisplayRect(&DisplayRect); + + for(y=0;y<19;y++) + for(x=0;x<11;x++) + { + uint8 a; + a=MDFNcursor[y*11+x]; + if(a) + { + c =(yc+y); + d =x + xc * DisplayRect.w / 256; + + if(c>=0 && d>=0 && d < surface->w && c < surface->h) + buf[c * surface->pitch32 + d] = ctransform[a & 0x3]; // + 0xFF; //+ 127; + + } + } +} diff --git a/libmednahawk/src/nes/input/fkb.cpp b/libmednahawk/src/nes/input/fkb.cpp new file mode 100644 index 0000000000..4e7e214819 --- /dev/null +++ b/libmednahawk/src/nes/input/fkb.cpp @@ -0,0 +1,119 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" +#include "fkb.h" +#define AK2(x,y) ( (FKB_##x) | (FKB_##y <<8) ) +#define AK(x) FKB_##x + +static uint8 bufit[0x49]; +static uint8 ksmode; +static uint8 ksindex; + + +static const uint16 matrix[9][2][4]= +{ +{{AK(F8),AK(RETURN),AK(BRACKETLEFT),AK(BRACKETRIGHT)}, + {AK(KANA),AK(RIGHTSHIFT),AK(BACKSLASH),AK(STOP)}}, +{{AK(F7),AK(AT),AK(COLON),AK(SEMICOLON)}, + {AK(UNDERSCORE),AK(SLASH),AK(MINUS),AK(CARET)}}, +{{AK(F6),AK(O),AK(L),AK(K)}, + {AK(PERIOD),AK(COMMA),AK(P),AK(0)}}, +{{AK(F5),AK(I),AK(U),AK(J)}, + {AK(M),AK(N),AK(9),AK(8)}}, +{{AK(F4),AK(Y),AK(G),AK(H)}, + {AK(B),AK(V),AK(7),AK(6)}}, +{{AK(F3),AK(T),AK(R),AK(D)}, + {AK(F),AK(C),AK(5),AK(4)}}, +{{AK(F2),AK(W),AK(S),AK(A)}, + {AK(X),AK(Z),AK(E),AK(3)}}, +{{AK(F1),AK(ESCAPE),AK(Q),AK(CONTROL)}, + {AK(LEFTSHIFT),AK(GRAPH),AK(1),AK(2)}}, +{{AK(CLEAR),AK(UP),AK(RIGHT),AK(LEFT)}, + {AK(DOWN),AK(SPACE),AK(DELETE),AK(INSERT)}}, +}; + +static void FKB_Write(uint8 v) +{ + v>>=1; + if(v&2) + { + if((ksmode&1) && !(v&1)) + ksindex=(ksindex+1)%9; + } + ksmode=v; +} + +static uint8 FKB_Read(int w, uint8 ret) +{ + //printf("$%04x, %d, %d\n",w+0x4016,ksindex,ksmode&1); + if(w) + { + int x; + + ret&=~0x1E; + for(x=0;x<4;x++) + if(bufit[ matrix[ksindex][ksmode&1][x]&0xFF ] || bufit[ matrix[ksindex][ksmode&1][x]>>8]) + { + ret|=1<<(x+1); + } + ret^=0x1E; + } + return(ret); +} + +static void FKB_Strobe(void) +{ + ksmode=0; + ksindex=0; + //printf("strobe\n"); +} + +static void FKB_Update(void *data) +{ + memcpy(bufit+1,data,0x48); +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(bufit, 0x49), + SFVAR(ksmode), + SFVAR(ksindex), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + + +static INPUTCFC FKB={FKB_Read,FKB_Write,FKB_Strobe,FKB_Update,0,0, StateActionFC, 0x48, sizeof(uint8) }; + +INPUTCFC *MDFN_InitFKB(void) +{ + memset(bufit,0,sizeof(bufit)); + ksmode=ksindex=0; + return(&FKB); +} diff --git a/libmednahawk/src/nes/input/fkb.h b/libmednahawk/src/nes/input/fkb.h new file mode 100644 index 0000000000..2afe8b29fe --- /dev/null +++ b/libmednahawk/src/nes/input/fkb.h @@ -0,0 +1,72 @@ +#define FKB_F1 0x01 +#define FKB_F2 0x02 +#define FKB_F3 0x03 +#define FKB_F4 0x04 +#define FKB_F5 0x05 +#define FKB_F6 0x06 +#define FKB_F7 0x07 +#define FKB_F8 0x08 +#define FKB_1 0x09 +#define FKB_2 0x0A +#define FKB_3 0x0B +#define FKB_4 0x0C +#define FKB_5 0x0D +#define FKB_6 0x0E +#define FKB_7 0x0F +#define FKB_8 0x10 +#define FKB_9 0x11 +#define FKB_0 0x12 +#define FKB_MINUS 0x13 +#define FKB_CARET 0x14 +#define FKB_BACKSLASH 0x15 +#define FKB_STOP 0x16 +#define FKB_ESCAPE 0x17 +#define FKB_Q 0x18 +#define FKB_W 0x19 +#define FKB_E 0x1A +#define FKB_R 0x1B +#define FKB_T 0x1C +#define FKB_Y 0x1D +#define FKB_U 0x1E +#define FKB_I 0x1F +#define FKB_O 0x20 +#define FKB_P 0x21 +#define FKB_AT 0x22 +#define FKB_BRACKETLEFT 0x23 +#define FKB_RETURN 0x24 +#define FKB_CONTROL 0x25 +#define FKB_A 0x26 +#define FKB_S 0x27 +#define FKB_D 0x28 +#define FKB_F 0x29 +#define FKB_G 0x2A +#define FKB_H 0x2B +#define FKB_J 0x2C +#define FKB_K 0x2D +#define FKB_L 0x2E +#define FKB_SEMICOLON 0x2F +#define FKB_COLON 0x30 +#define FKB_BRACKETRIGHT 0x31 +#define FKB_KANA 0x32 +#define FKB_LEFTSHIFT 0x33 +#define FKB_Z 0x34 +#define FKB_X 0x35 +#define FKB_C 0x36 +#define FKB_V 0x37 +#define FKB_B 0x38 +#define FKB_N 0x39 +#define FKB_M 0x3A +#define FKB_COMMA 0x3B +#define FKB_PERIOD 0x3C +#define FKB_SLASH 0x3D +#define FKB_UNDERSCORE 0x3E +#define FKB_RIGHTSHIFT 0x3F +#define FKB_GRAPH 0x40 +#define FKB_SPACE 0x41 +#define FKB_CLEAR 0x42 +#define FKB_INSERT 0x43 +#define FKB_DELETE 0x44 +#define FKB_UP 0x45 +#define FKB_LEFT 0x46 +#define FKB_RIGHT 0x47 +#define FKB_DOWN 0x48 diff --git a/libmednahawk/src/nes/input/ftrainer.cpp b/libmednahawk/src/nes/input/ftrainer.cpp new file mode 100644 index 0000000000..289b3493e7 --- /dev/null +++ b/libmednahawk/src/nes/input/ftrainer.cpp @@ -0,0 +1,89 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static uint32 FTVal,FTValR; +static char side; + +static uint8 FT_Read(int w, uint8 ret) +{ + if(w) + { + ret|=FTValR; + } + return(ret); +} + +static void FT_Write(uint8 V) +{ + FTValR=0; + + //printf("%08x\n",FTVal); + if(!(V&0x1)) + FTValR=(FTVal>>8); + else if(!(V&0x2)) + FTValR=(FTVal>>4); + else if(!(V&0x4)) + FTValR=FTVal; + + FTValR=(~FTValR)&0xF; + if(side=='B') + FTValR=((FTValR&0x8)>>3) | ((FTValR&0x4)>>1) | ((FTValR&0x2)<<1) | ((FTValR&0x1)<<3); + FTValR<<=1; +} + +static void FT_Update(void *data) +{ + FTVal=*(uint32 *)data; +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(FTValR), + SFVAR(FTVal), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC FamilyTrainer={FT_Read,FT_Write,0,FT_Update,0,0, StateActionFC, 1, sizeof(uint32) }; + +INPUTCFC *MDFN_InitFamilyTrainerA(void) +{ + side='A'; + FTVal=FTValR=0; + return(&FamilyTrainer); +} + +INPUTCFC *MDFN_InitFamilyTrainerB(void) +{ + side='B'; + FTVal=FTValR=0; + return(&FamilyTrainer); +} + diff --git a/libmednahawk/src/nes/input/hypershot.cpp b/libmednahawk/src/nes/input/hypershot.cpp new file mode 100644 index 0000000000..4ddd9b1ea5 --- /dev/null +++ b/libmednahawk/src/nes/input/hypershot.cpp @@ -0,0 +1,64 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static uint8 HSVal,HSValR; + + +static uint8 HS_Read(int w, uint8 ret) +{ + if(w) ret|=HSValR; + + return(ret); +} + +static void HS_Strobe(void) +{ + HSValR=HSVal<<1; +} + +static void HS_Update(void *data) +{ + HSVal=*(uint8*)data; +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(HSVal), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "HSHT"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC HyperShot={HS_Read,0,HS_Strobe,HS_Update,0,0, StateActionFC, 1, sizeof(uint8) }; + +INPUTCFC *MDFN_InitHS(void) +{ + HSVal=HSValR=0; + return(&HyperShot); +} diff --git a/libmednahawk/src/nes/input/mahjong.cpp b/libmednahawk/src/nes/input/mahjong.cpp new file mode 100644 index 0000000000..18c10eaa98 --- /dev/null +++ b/libmednahawk/src/nes/input/mahjong.cpp @@ -0,0 +1,94 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static uint32 MReal,MRet; + +static uint8 MJ_Read(int w, uint8 ret) +{ + if(w) + { +// ret|=(MRet&1)<<1; + ret|=((MRet&0x80)>>6)&2; +// MRet>>=1; + if(!fceuindbg) + MRet<<=1; + } + return(ret); +} + +static void MJ_Write(uint8 v) +{ + /* 1: I-D7, J-D6, K-D5, L-D4, M-D3, Big Red-D2 + 2: A-D7, B-D6, C-D5, D-D4, E-D3, F-D2, G-D1, H-D0 + 3: Sel-D6, Start-D7, D5, D4, D3, D2, D1 + */ + MRet=0; + + v>>=1; + v&=3; + + if(v==3) + { + MRet=(MReal>>14)&0x7F; + //MRet=((MRet&0x1F) |((MRet&0x40)>>1)|((MRet&0x20)<<1)) <<1; //(MReal>>13)&0x7F; + } + else if(v==2) + { + MRet=MReal&0xFF; + } + else if(v==1) + { + MRet=(MReal>>8)&0x3F; + } +// HSValR=HSVal<<1; +} + +static void MJ_Update(void *data) +{ + MReal=*(uint32*)data; + //printf("%08x\n",MReal>>13); + //HSVal=*(uint8*)data; +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(MReal), + SFVAR(MRet), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC Mahjong={MJ_Read,MJ_Write,0,MJ_Update,0,0, StateActionFC, 1, sizeof(uint32) }; + +INPUTCFC *MDFN_InitMahjong(void) +{ + MReal=MRet=0; + return(&Mahjong); +} diff --git a/libmednahawk/src/nes/input/oekakids.cpp b/libmednahawk/src/nes/input/oekakids.cpp new file mode 100644 index 0000000000..55b26e39b5 --- /dev/null +++ b/libmednahawk/src/nes/input/oekakids.cpp @@ -0,0 +1,116 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static uint8 OKValR,LastWR; +static uint32 OKData; +static uint32 OKX,OKY,OKB; + +static uint8 OK_Read(int w, uint8 ret) +{ + if(w) + { + ret|=OKValR; + } + return(ret); +} + +static void OK_Write(uint8 V) +{ + if(!(V&0x1)) + { + int32 vx,vy; + + //puts("Redo"); + OKValR=OKData=0; + + if(OKB) OKData|=1; + + if(OKY >= 48) + OKData|=2; + else if(OKB) OKData|=3; + + vx=OKX*240/256+8; + vy=OKY*256/240-12; + if(vy<0) vy=0; + if(vy>255) vy=255; + if(vx<0) vx=0; + if(vx>255) vx=255; + OKData |= (vx<<10) | (vy<<2); + } + else + { + if((~LastWR)&V&0x02) + OKData<<=1; + + if(!(V&0x2)) OKValR=0x4; + else + { + if(OKData&0x40000) OKValR=0; + else OKValR=0x8; + } + } + LastWR=V; +} + +static void OK_Update(void *data) +{ + //puts("Sync"); + OKX = (int32)MDFN_de32lsb((uint8 *)data + 0) >> 16; + OKY = (int32)MDFN_de32lsb((uint8 *)data + 4) >> 16; + OKB=((uint8*)data)[8]; + + NESPPU_TranslateMouseXY(OKX, OKY); +} + +static void DrawOeka(MDFN_Surface *surface) +{ + if(OKY<44) + MDFN_DrawCursor(surface, OKX, OKY); +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(OKX), + SFVAR(OKY), + SFVAR(OKB), + SFVAR(OKData), + SFVAR(OKValR), + SFVAR(LastWR), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC OekaKids={OK_Read,OK_Write,0,OK_Update,0,DrawOeka, StateActionFC, 3, sizeof(uint32) }; + +INPUTCFC *MDFN_InitOekaKids(void) +{ + OKValR=0; + return(&OekaKids); +} diff --git a/libmednahawk/src/nes/input/partytap.cpp b/libmednahawk/src/nes/input/partytap.cpp new file mode 100644 index 0000000000..d4fbf8570a --- /dev/null +++ b/libmednahawk/src/nes/input/partytap.cpp @@ -0,0 +1,92 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static uint8 QZVal,QZValR; +static uint8 FunkyMode; + +static uint8 QZ_Read(int w, uint8 ret) +{ + if(w) + { + //if(X.PC==0xdc7d) return(0xFF); + //printf("Blah: %04x\n",X.PC); + //MDFNI_DumpMem("dmp2",0xc000,0xffff); + + ret|=(QZValR&0x7)<<2; + QZValR=QZValR>>3; + + if(FunkyMode) + { + //ret=0x14; + //puts("Funky"); + QZValR|=0x28; + } + else + { + QZValR|=0x38; + } + } + return(ret); +} + +static void QZ_Strobe(void) +{ + QZValR=QZVal; + //puts("Strobe"); +} + +static void QZ_Write(uint8 V) +{ + //printf("Wr: %02x\n",V); + FunkyMode=V&4; +} + +static void QZ_Update(void *data) +{ + QZVal=*(uint8 *)data; +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(QZValR), + SFVAR(QZVal), + SFVAR(FunkyMode), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC PartyTap = { QZ_Read,QZ_Write,QZ_Strobe,QZ_Update,0,0, StateActionFC, 1, sizeof(uint8) }; + +INPUTCFC *MDFN_InitPartyTap(void) +{ + QZVal=QZValR=0; + + return(&PartyTap); +} diff --git a/libmednahawk/src/nes/input/powerpad.cpp b/libmednahawk/src/nes/input/powerpad.cpp new file mode 100644 index 0000000000..07ed3cbba7 --- /dev/null +++ b/libmednahawk/src/nes/input/powerpad.cpp @@ -0,0 +1,99 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + + +static char side; +static uint32 pprsb[2]; +static uint32 pprdata[2]; + +static uint8 ReadPP(int w) +{ + uint8 ret=0; + ret|=((pprdata[w]>>pprsb[w])&1)<<3; + ret|=((pprdata[w]>>(pprsb[w]+8))&1)<<4; + if(pprsb[w]>=4) + { + ret|=0x10; + if(pprsb[w]>=8) + ret|=0x08; + } + if(!fceuindbg) + pprsb[w]++; + return ret; +} + +static void StrobePP(int w) +{ + pprsb[w]=0; +} + +void UpdatePP(int w, void *data) +{ + static const char shifttableA[12]={8,9,0,1,11,7,4,2,10,6,5,3}; + static const char shifttableB[12]={1,0,9,8,2,4,7,11,3,5,6,10}; + int x; + + pprdata[w]=0; + + if(side=='A') + for(x=0;x<12;x++) + pprdata[w]|=(((*(uint32 *)data)>>x)&1)<>x)&1)<256) xe=256; + + if(scanline>=(zy-4) && scanline<=(zy+4)) + { + while(xs=(zx-4)) + { + a1=bg[xs]; + if(spr) + { + a2=spr[xs]; + + if(!(a2&0x80)) + if(!(a2&0x40) || (a1&64)) + a1=a2; + } + a1&=63; + + sum=ActiveNESPalette[a1].r+ActiveNESPalette[a1].g+ActiveNESPalette[a1].b; + if(sum>=100*3) + { + ZD.zaphit=timestampbase + timestamp; + goto endo; + } + } + xs++; + } + } + endo: + ZD.zappo=final; +} + +static INLINE int CheckColor(void) +{ + MDFNPPU_LineUpdate(); + + if((ZD.zaphit+10)>=(timestampbase+timestamp)) return(0); + + return(1); +} + + +static uint8 ReadZapper(int w, uint8 ret) +{ + if(w) + { + ret&=~0x18; + if(ZD.bogo) + ret|=0x10; + if(CheckColor()) + ret|=0x8; + } + else + { + //printf("Kayo: %d\n",ZD.zap_readbit); + ret&=~2; + //if(ZD.zap_readbit==4) ret|=ZD.mzb&2; + ret|=(ret&1)<<1; + //ZD.zap_readbit++; + } + return ret; +} + +static void DrawZapper(MDFN_Surface *surface) +{ + MDFN_DrawGunSight(surface, ZD.mzx, ZD.mzy); +} + +static void UpdateZapper(void *data) +{ + uint8 *ptr=(uint8*)data; + + if(ZD.bogo) + ZD.bogo--; + + if(ptr[8]&7 && (!(ZD.mzb&7))) + ZD.bogo=5; + + ZD.mzx = (int32)MDFN_de32lsb(ptr + 0) >> 16; + ZD.mzy = (int32)MDFN_de32lsb(ptr + 4) >> 16; + ZD.mzb=ptr[8]; + + NESPPU_TranslateMouseXY(ZD.mzx, ZD.mzy); +} + +static void StrobeShadow(void) +{ + ZD.zap_readbit=0; +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(ZD.mzx), + SFVAR(ZD.mzy), + SFVAR(ZD.mzb), + SFVAR(ZD.bogo), + SFVAR(ZD.zaphit), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC SHADOWC={ReadZapper,0,StrobeShadow,UpdateZapper,ZapperFrapper, DrawZapper, StateActionFC, 3, sizeof(uint32) }; + +INPUTCFC *MDFN_InitSpaceShadow(void) +{ + memset(&ZD,0,sizeof(ZAPPER)); + return(&SHADOWC); +} + + diff --git a/libmednahawk/src/nes/input/share.h b/libmednahawk/src/nes/input/share.h new file mode 100644 index 0000000000..bc4fea6170 --- /dev/null +++ b/libmednahawk/src/nes/input/share.h @@ -0,0 +1,9 @@ +#include "../nes.h" +#include "../input.h" +#include "../ppu/ppu.h" +#include "../x6502.h" +#include "../ppu/palette.h" +#include "../../endian.h" + +void MDFN_DrawCursor(MDFN_Surface *surface, int xc, int yc); +void MDFN_DrawGunSight(MDFN_Surface *surface, int xc, int yc); diff --git a/libmednahawk/src/nes/input/suborkb.cpp b/libmednahawk/src/nes/input/suborkb.cpp new file mode 100644 index 0000000000..aa1a49cc16 --- /dev/null +++ b/libmednahawk/src/nes/input/suborkb.cpp @@ -0,0 +1,110 @@ +#include "share.h" +#include "suborkb.h" +#define AK2(x,y) ( (FKB_##x) | (FKB_##y <<8) ) +#define AK(x) FKB_##x + +static uint8 bufit[0x61]; +static uint8 ksmode; +static uint8 ksindex; + + +static const uint16 matrix[13][2][4]= +{ +{{AK(4),AK(G),AK(F),AK(C)}, + {AK(F2),AK(E),AK(5),AK(V)}}, +{{AK(2),AK(D),AK(S),AK(END)}, + {AK(F1),AK(W),AK(3),AK(X)}}, +{{AK(INSERT),AK(BACK),AK(NEXT),AK(RIGHT)}, + {AK(F8),AK(PRIOR),AK(DELETE),AK(HOME)}}, +{{AK(9),AK(I),AK(L),AK(COMMA)}, + {AK(F5),AK(O),AK(0),AK(PERIOD)}}, +{{AK(RBRACKET),AK(RETURN),AK(UP),AK(LEFT)}, + {AK(F7),AK(LBRACKET),AK(BACKSLASH),AK(DOWN)}}, +{{AK(Q),AK(CAPITAL),AK(Z),AK(TAB)}, + {AK(ESCAPE),AK(A),AK(1),AK(LCONTROL)}}, +{{AK(7),AK(Y),AK(K),AK(M)}, + {AK(F4),AK(U),AK(8),AK(J)}}, +{{AK(MINUS),AK(SEMICOLON),AK(APOSTROPHE),AK(SLASH)}, + {AK(F6),AK(P),AK(EQUALS),AK(LSHIFT)}}, +{{AK(T),AK(H),AK(N),AK(SPACE)}, + {AK(F3),AK(R),AK(6),AK(B)}}, +{{0,0,0,0}, + {0,0,0,0}}, +{{AK(LMENU),AK(NUMPAD4),AK(NUMPAD7),AK(F11)}, + {AK(F12),AK(NUMPAD1),AK(NUMPAD2),AK(NUMPAD8)}}, +{{AK(SUBTRACT),AK(ADD),AK(MULTIPLY),AK(NUMPAD9)}, + {AK(F10),AK(NUMPAD5),AK(DIVIDE),AK(NUMLOCK)}}, +{{AK(GRAVE),AK(NUMPAD6),AK(PAUSE),AK(SPACE)}, + {AK(F9),AK(NUMPAD3),AK(DECIMAL),AK(NUMPAD0)}}, +}; + +static void SuborKB_Write(uint8 v) +{ + v>>=1; + if(v&2) + { + if((ksmode&1) && !(v&1)) + ksindex=(ksindex+1)%13; + } + ksmode=v; +} + +static uint8 SuborKB_Read(int w, uint8 ret) +{ + if(w) + { + int x; + + ret&=~0x1E; +// if (ksindex==9) +// { +// if (ksmode&1) +// ret|=2; +// } +// else +// { + for(x=0;x<4;x++) + if(bufit[matrix[ksindex][ksmode&1][x]&0xFF]||bufit[matrix[ksindex][ksmode&1][x]>>8]) + ret|=1<<(x+1); +// } + ret^=0x1E; + } + return(ret); +} + +static void SuborKB_Strobe(void) +{ + ksmode=0; + ksindex=0; +} + +static void SuborKB_Update(void *data) +{ + memcpy(bufit+1,data,0x60); +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(bufit, 0x61), + SFVAR(ksmode), + SFVAR(ksindex), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC SuborKB={SuborKB_Read,SuborKB_Write,SuborKB_Strobe,SuborKB_Update,0,0, StateActionFC, 0x60, sizeof(uint8) }; + +INPUTCFC *MDFN_InitSuborKB(void) +{ + memset(bufit,0,sizeof(bufit)); + ksmode=ksindex=0; + return(&SuborKB); +} diff --git a/libmednahawk/src/nes/input/suborkb.h b/libmednahawk/src/nes/input/suborkb.h new file mode 100644 index 0000000000..fe8444d8ff --- /dev/null +++ b/libmednahawk/src/nes/input/suborkb.h @@ -0,0 +1,96 @@ +#define FKB_ESCAPE 0x01 +#define FKB_F1 0x02 +#define FKB_F2 0x03 +#define FKB_F3 0x04 +#define FKB_F4 0x05 +#define FKB_F5 0x06 +#define FKB_F6 0x07 +#define FKB_F7 0x08 +#define FKB_F8 0x09 +#define FKB_F9 0x0A +#define FKB_F10 0x0B +#define FKB_F11 0x0C +#define FKB_F12 0x0D +#define FKB_PAUSE 0x0E +#define FKB_GRAVE 0x0F +#define FKB_1 0x10 +#define FKB_2 0x11 +#define FKB_3 0x12 +#define FKB_4 0x13 +#define FKB_5 0x14 +#define FKB_6 0x15 +#define FKB_7 0x16 +#define FKB_8 0x17 +#define FKB_9 0x18 +#define FKB_0 0x19 +#define FKB_MINUS 0x1A +#define FKB_EQUALS 0x1B +#define FKB_BACK 0x1C +#define FKB_INSERT 0x1D +#define FKB_HOME 0x1E +#define FKB_PRIOR 0x1F +#define FKB_NUMLOCK 0x20 +#define FKB_DIVIDE 0x21 +#define FKB_MULTIPLY 0x22 +#define FKB_SUBTRACT 0x23 +#define FKB_TAB 0x24 +#define FKB_Q 0x25 +#define FKB_W 0x26 +#define FKB_E 0x27 +#define FKB_R 0x28 +#define FKB_T 0x29 +#define FKB_Y 0x2A +#define FKB_U 0x2B +#define FKB_I 0x2C +#define FKB_O 0x2D +#define FKB_P 0x2E +#define FKB_LBRACKET 0x2F +#define FKB_RBRACKET 0x30 +#define FKB_RETURN 0x31 +#define FKB_DELETE 0x32 +#define FKB_END 0x33 +#define FKB_NEXT 0x34 +#define FKB_NUMPAD7 0x35 +#define FKB_NUMPAD8 0x36 +#define FKB_NUMPAD9 0x37 +#define FKB_ADD 0x38 +#define FKB_CAPITAL 0x39 +#define FKB_A 0x3A +#define FKB_S 0x3B +#define FKB_D 0x3C +#define FKB_F 0x3D +#define FKB_G 0x3E +#define FKB_H 0x3F +#define FKB_J 0x40 +#define FKB_K 0x41 +#define FKB_L 0x42 +#define FKB_SEMICOLON 0x43 +#define FKB_APOSTROPHE 0x44 +#define FKB_NUMPAD4 0x45 +#define FKB_NUMPAD5 0x46 +#define FKB_NUMPAD6 0x47 +#define FKB_LSHIFT 0x48 +#define FKB_Z 0x49 +#define FKB_X 0x4A +#define FKB_C 0x4B +#define FKB_V 0x4C +#define FKB_B 0x4D +#define FKB_N 0x4E +#define FKB_M 0x4F +#define FKB_COMMA 0x50 +#define FKB_PERIOD 0x51 +#define FKB_SLASH 0x52 +#define FKB_BACKSLASH 0x53 +#define FKB_UP 0x54 +#define FKB_NUMPAD1 0x55 +#define FKB_NUMPAD2 0x56 +#define FKB_NUMPAD3 0x57 +#define FKB_LCONTROL 0x58 +#define FKB_LMENU 0x59 +#define FKB_SPACE 0x5A +#define FKB_LEFT 0x5B +#define FKB_DOWN 0x5C +#define FKB_RIGHT 0x5D +#define FKB_NUMPAD0 0x5E +#define FKB_DECIMAL 0x5F + diff --git a/libmednahawk/src/nes/input/toprider.cpp b/libmednahawk/src/nes/input/toprider.cpp new file mode 100644 index 0000000000..5239eb29f0 --- /dev/null +++ b/libmednahawk/src/nes/input/toprider.cpp @@ -0,0 +1,78 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +static uint32 bs,bss; +static uint32 boop; + +static uint8 Read(int w, uint8 ret) +{ + if(w) + { + ret|=(bs&1)<<3; + ret|=(boop&1)<<4; + bs>>=1; + boop>>=1; +// puts("Read"); + } + return(ret); +} + +static void Write(uint8 V) +{ + // if(V&0x2) + bs=bss; + //printf("Write: %02x\n",V); +// boop=0xC0; +} + +static void Update(void *data) +{ + bss=*(uint8*)data; + bss|=bss<<8; + bss|=bss<<8; +} + +static int StateActionFC(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(bs), + SFVAR(bss), + SFVAR(boop), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF"); + if(load) + { + + } + return(ret); +} + +static INPUTCFC TopRider={Read,Write,0,Update,0,0, StateActionFC, 1, sizeof(uint8) }; + +INPUTCFC *MDFN_InitTopRider(void) +{ + + return(&TopRider); +} + diff --git a/libmednahawk/src/nes/input/zapper.cpp b/libmednahawk/src/nes/input/zapper.cpp new file mode 100644 index 0000000000..e40f053ff1 --- /dev/null +++ b/libmednahawk/src/nes/input/zapper.cpp @@ -0,0 +1,167 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "share.h" + +typedef struct { + uint32 mzx,mzy; + uint8 mzb; + int bogo; + uint64 zaphit; + uint8 zaplatch; +} ZAPPER; + +static ZAPPER ZD[2]; + +static void ZapperFrapper(int w, uint8 *bg, uint8 *spr, uint32 linets, int final) +{ + int xs,xe; + int zx,zy; + + xs=linets; + xe=final; + + if(xe > 256) xe = 256; + zx=ZD[w].mzx; + zy=ZD[w].mzy; + + if(scanline>=(zy-4) && scanline<=(zy+4)) + { + while(xs=(zx-4)) + { + a1=bg[xs]; + a1 &= 0x3F; + + sum = ActiveNESPalette[a1].r + ActiveNESPalette[a1].g + ActiveNESPalette[a1].b; + if(sum>=100*3) + { + ZD[w].zaphit = timestampbase + timestamp; +// printf("Hit: %d %d %ld\n", scanline, timestamp, timestampbase + timestamp); + goto endo; + } + } + xs++; + } + } + endo:; +} + +static int CheckColor(int w) +{ + MDFNPPU_LineUpdate(); + + if((ZD[w].zaphit+100)>=(timestampbase+timestamp) && !(ZD[w].mzb&2)) + { + return(0); + } + return(1); +} + +static uint8 ReadZapperVS(int w) +{ + uint8 ret = ZD[w].zaplatch & 1; + + if(!fceuindbg) + ZD[w].zaplatch>>=1; + return ret; +} + +static void StrobeZapperVS(int w) +{ + ZD[w].zaplatch = (1 << 4) | (ZD[w].bogo ? 0x80 : 0x00) | (CheckColor(w) ? 0x00 : 0x40); +// printf("Strobe: %d %ld %02x\n", timestamp, timestampbase + timestamp, ZD[w].zaplatch); +} + +static uint8 ReadZapper(int w) +{ + uint8 ret=0; + + if(ZD[w].bogo) + ret|=0x10; + if(CheckColor(w)) + ret|=0x8; + return ret; +} + +static void DrawZapper(int w, MDFN_Surface *surface) +{ + MDFN_DrawGunSight(surface, ZD[w].mzx, ZD[w].mzy); +} + +static void UpdateZapper(int w, void *data) +{ + uint8 *data_8 = (uint8 *)data; + uint32 new_x = (int32)MDFN_de32lsb(data_8 + 0) >> 16; + uint32 new_y = (int32)MDFN_de32lsb(data_8 + 4) >> 16; + uint8 new_b = *(uint8 *)(data_8 + 8); + + NESPPU_TranslateMouseXY(new_x, new_y); + + if(ZD[w].bogo) + ZD[w].bogo--; + + if(new_b&3 && (!(ZD[w].mzb&3))) + ZD[w].bogo=5; + + ZD[w].mzx = new_x; + ZD[w].mzy = new_y; + ZD[w].mzb = new_b; + + //printf("La: %08x %08x %08x\n", new_x, new_y, new_b); +} + +static int StateAction(int w, StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(ZD[w].mzx), + SFVAR(ZD[w].mzy), + SFVAR(ZD[w].mzb), + SFVAR(ZD[w].bogo), + SFVAR(ZD[w].zaphit), + SFVAR(ZD[w].zaplatch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, w ? "INP1" : "INP0"); + if(load) + { + + } + return(ret); +} + +static INPUTC ZAPC={ReadZapper,0,0,UpdateZapper,ZapperFrapper,DrawZapper, StateAction, 3, sizeof(uint32) }; +static INPUTC ZAPVSC={ReadZapperVS,0,StrobeZapperVS,UpdateZapper,ZapperFrapper,DrawZapper, StateAction, 3, sizeof(uint32) }; + +INPUTC *MDFN_InitZapper(int w) +{ + memset(&ZD[w],0,sizeof(ZAPPER)); + + if(NESIsVSUni) + return(&ZAPVSC); + else + return(&ZAPC); +} + + diff --git a/libmednahawk/src/nes/nes.cpp b/libmednahawk/src/nes/nes.cpp new file mode 100644 index 0000000000..1c46756fef --- /dev/null +++ b/libmednahawk/src/nes/nes.cpp @@ -0,0 +1,597 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include + +#include "x6502.h" +#include "ppu/ppu.h" +#include "ppu/palette.h" +#include "sound.h" + +#include "cart.h" +#include "nsf.h" +#include "fds.h" +#include "ines.h" +#include "unif.h" +#include "../mempatcher.h" +#include "input.h" +#include "vsuni.h" +#include "debug.h" + + +extern MDFNGI EmulatedNES; + +uint64 timestampbase; + +// Accessed in debug.cpp +NESGameType *GameInterface = NULL; + +static readfunc NonCheatARead[0x10000 + 0x100]; +readfunc ARead[0x10000 + 0x100]; +writefunc BWrite[0x10000 + 0x100]; + +bool NESIsVSUni; + +//static +DECLFW(BNull) +{ + //printf("Null Write: %04x %02x\n", A, V); +} + +//static +DECLFR(ANull) +{ + //printf("Null Read: %04x\n", A); + return(X.DB); +} + +readfunc GetReadHandler(int32 a) +{ + return ARead[a]; +} + +void SetReadHandler(int32 start, int32 end, readfunc func, bool snc) +{ + int32 x; + + //printf("%08x %08x %lld %d\n", start, end, func, snc); + + if(!func) + func=ANull; + + for(x=end;x>=start;x--) + { + ARead[x]=func; + if(snc) + NonCheatARead[x] = func; + } +} + +writefunc GetWriteHandler(int32 a) +{ + return BWrite[a]; +} + +void SetWriteHandler(int32 start, int32 end, writefunc func) +{ + int32 x; + + if(!func) + func=BNull; + + for(x=end;x>=start;x--) + BWrite[x]=func; +} + +uint8 RAM[0x800]; +uint8 PAL=0; + +static DECLFW(BRAML) +{ + RAM[A]=V; +} + +static DECLFW(BRAMH) +{ + RAM[A&0x7FF]=V; +} + +static DECLFR(ARAML) +{ + return RAM[A]; +} + +static DECLFR(ARAMH) +{ + return RAM[A&0x7FF]; +} + +// We need to look up the correct function in the ARead[] and BWrite[] tables +// for these overflow functions, because the RAM access handlers might be hooked +// for cheats or other things. + +static DECLFR(AOverflow) +{ + A &= 0xFFFF; + X.PC &= 0xFFFF; + return(ARead[A](A)); +} + +static DECLFW(BOverflow) +{ + A &= 0xFFFF; + return(BWrite[A](A, V)); +} + +static void CloseGame(void) +{ + for(std::vector::iterator ep = GameExpSound.begin(); ep != GameExpSound.end(); ep++) + if(ep->Kill) + ep->Kill(); + GameExpSound.clear(); + + if(GameInterface) + { + if(GameInterface->Close) + GameInterface->Close(); + free(GameInterface); + GameInterface = NULL; + } + + Genie_Kill(); + MDFNSND_Close(); + MDFNPPU_Close(); +} + +static void InitCommon(const char *name) +{ + NESIsVSUni = FALSE; + PPU_hook = 0; + GameHBIRQHook = 0; + + MapIRQHook = 0; + MMC5Hack = 0; + PAL &= 1; + + MDFNGameInfo->GameType = GMT_CART; + MDFNGameInfo->VideoSystem = VIDSYS_NONE; + + MDFNGameInfo->cspecial = NULL; + MDFNGameInfo->GameSetMD5Valid = FALSE; + + + if(MDFN_GetSettingB("nes.fnscan")) + { + const char *fn = GetFNComponent(name); // TODO: This seems awfully spaghetti-like/inefficient. Fixme? + + if(strstr(fn, "(U)") || strstr(fn, "(USA)")) + MDFNGameInfo->VideoSystem = VIDSYS_NTSC; + else if(strstr(fn, "(J)") || strstr(fn, "(Japan)")) + MDFNGameInfo->VideoSystem = VIDSYS_NTSC; + else if(strstr(fn, "(E)") || strstr(fn, "(G)") || strstr(fn, "(Europe)") || strstr(fn, "(Germany)") ) + MDFNGameInfo->VideoSystem = VIDSYS_PAL; + } + + GameInterface = (NESGameType *)calloc(1, sizeof(NESGameType)); + + SetReadHandler(0x0000, 0xFFFF, ANull); + SetWriteHandler(0x0000, 0xFFFF, BNull); + + SetReadHandler(0x10000,0x10000 + 0xFF, AOverflow); + SetWriteHandler(0x10000,0x10000 + 0xFF, BOverflow); + + SetReadHandler(0,0x7FF,ARAML); + SetWriteHandler(0,0x7FF,BRAML); + + SetReadHandler(0x800,0x1FFF,ARAMH); /* Part of a little */ + SetWriteHandler(0x800,0x1FFF,BRAMH); /* hack for a small speed boost. */ + + MDFNMP_Init(1024, 65536 / 1024); + + + #ifdef WANT_DEBUGGER + NESDBG_Init(); + + ASpace_Add(NESDBG_GetAddressSpaceBytes, NESDBG_PutAddressSpaceBytes, "cpu", "CPU", 16); + ASpace_Add(NESPPU_GetAddressSpaceBytes, NESPPU_PutAddressSpaceBytes, "ppu", "PPU", 14); + #endif +} + +bool UNIFLoad(const char *name, MDFNFILE *fp, NESGameType *); +bool iNESLoad(const char *name, MDFNFILE *fp, NESGameType *); +bool FDSLoad(const char *name, MDFNFILE *fp, NESGameType *); +bool NSFLoad(const char *name, MDFNFILE *fp, NESGameType *); + +bool iNES_TestMagic(const char *name, MDFNFILE *fp); +bool UNIF_TestMagic(const char *name, MDFNFILE *fp); +bool FDS_TestMagic(const char *name, MDFNFILE *fp); +bool NSF_TestMagic(const char *name, MDFNFILE *fp); + +typedef bool (*LoadFunction_t)(const char *name, MDFNFILE *fp, NESGameType *); + +static LoadFunction_t GetLoadFunctionByMagic(const char *name, MDFNFILE *fp) +{ + bool (*MagicFunctions[4])(const char *name, MDFNFILE *fp) = { iNES_TestMagic, UNIF_TestMagic, NSF_TestMagic, FDS_TestMagic }; + LoadFunction_t LoadFunctions[4] = { iNESLoad, UNIFLoad, NSFLoad, FDSLoad }; + LoadFunction_t ret = NULL; + + for(int x = 0; x < 4; x++) + { + if(MagicFunctions[x](name, fp)) + { + ret = LoadFunctions[x]; + break; + } + } + return(ret); +} + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + return(GetLoadFunctionByMagic(name, fp) != NULL); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + LoadFunction_t LoadFunction = NULL; + + LoadFunction = GetLoadFunctionByMagic(name, fp); + + // If the file type isn't recognized, return -1! + if(!LoadFunction) + return(-1); + + InitCommon(name); + + if(!LoadFunction(name, fp, GameInterface)) + { + free(GameInterface); + GameInterface = NULL; + return(0); + } + + { + int w; + + if(MDFNGameInfo->VideoSystem == VIDSYS_NTSC) + w = 0; + else if(MDFNGameInfo->VideoSystem == VIDSYS_PAL) + w = 1; + else + { + w = MDFN_GetSettingB("nes.pal"); + MDFNGameInfo->VideoSystem = w ? VIDSYS_PAL : VIDSYS_NTSC; + } + PAL=w?1:0; + MDFNGameInfo->fps = PAL? 838977920 : 1008307711; + MDFNGameInfo->MasterClock = MDFN_MASTERCLOCK_FIXED(PAL ? PAL_CPU : NTSC_CPU); + } + + X6502_Init(); + MDFNPPU_Init(); + MDFNSND_Init(PAL); + NESINPUT_Init(); + + if(NESIsVSUni) + MDFN_VSUniInstallRWHooks(); + + + if(MDFNGameInfo->GameType != GMT_PLAYER) + if(MDFN_GetSettingB("nes.gg")) + Genie_Init(); + + PowerNES(); + + MDFN_InitPalette(NESIsVSUni ? MDFN_VSUniGetPaletteNum() : 0); + + return(1); +} + +static void Emulate(EmulateSpecStruct *espec) +{ + int ssize; + + if(espec->VideoFormatChanged) + MDFNNES_SetPixelFormat(espec->surface->format); //.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + + if(espec->SoundFormatChanged) + MDFNNES_SetSoundRate(espec->SoundRate); + + NESPPU_GetDisplayRect(&espec->DisplayRect); + + MDFN_UpdateInput(); + + if(!Genie_BIOSInstalled()) + MDFNMP_ApplyPeriodicCheats(); + + MDFNPPU_Loop(espec->surface, espec->skip); + + ssize = FlushEmulateSound(espec->NeedSoundReverse, espec->SoundBuf, espec->SoundBufMaxSize); + espec->NeedSoundReverse = 0; + + timestampbase += timestamp; + espec->MasterCycles = timestamp; + + timestamp = 0; + + if(MDFNGameInfo->GameType == GMT_PLAYER) + MDFNNES_DrawNSF(espec->surface, &espec->DisplayRect, espec->SoundBuf, ssize); + + espec->SoundBufSize = ssize; + + + if(MDFNGameInfo->GameType != GMT_PLAYER) + { + if(NESIsVSUni) + MDFN_VSUniDraw(espec->surface); + } + MDFN_DrawInput(espec->surface); +} + +void ResetNES(void) +{ + MDFNMOV_AddCommand(MDFN_MSC_RESET); + if(GameInterface->Reset) + GameInterface->Reset(); + MDFNSND_Reset(); + MDFNPPU_Reset(); + X6502_Reset(); +} + +void PowerNES(void) +{ + MDFNMOV_AddCommand(MDFN_MSC_POWER); + + if(!MDFNGameInfo) + return; + + if(!Genie_BIOSInstalled()) + MDFNMP_RemoveReadPatches(); + + MDFNMP_AddRAM(0x0800, 0x0000, RAM); + + // Genie_Power() will remove any cheat read patches, and then install the BIOS(and its read hooks) + Genie_Power(); + + // http://wiki.nesdev.com/w/index.php/CPU_power_up_state + memset(RAM, 0xFF, 0x800); + RAM[0x008] = 0xF7; + RAM[0x009] = 0xEF; + RAM[0x00A] = 0xDF; + RAM[0x00F] = 0xBF; + + NESINPUT_Power(); + MDFNSND_Power(); + MDFNPPU_Power(); + + /* Have the external game hardware "powered" after the internal NES stuff. + Needed for the NSF code and VS System code. + */ + if(GameInterface->Power) + GameInterface->Power(); + + if(NESIsVSUni) + MDFN_VSUniPower(); + + timestampbase = 0; + X6502_Power(); + + if(!Genie_BIOSInstalled()) + MDFNMP_InstallReadPatches(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + if(Genie_BIOSInstalled()) + { + if(!data_only) + MDFN_DispMessage(_("Cannot use states in GG Screen.")); + return(0); + } + + if(!X6502_StateAction(sm, load, data_only)) + return(0); + + if(!MDFNPPU_StateAction(sm, load, data_only)) + return(0); + + if(!MDFNSND_StateAction(sm, load, data_only)) + return(0); + + if(!load || load >= 0x0500) + { + if(!NESINPUT_StateAction(sm, load, data_only)) + return(0); + } + + if(GameInterface->StateAction) + { + if(!GameInterface->StateAction(sm, load, data_only)) + return(0); + } + + return(1); +} + +// TODO: Actual enum vals +static const MDFNSetting_EnumList NTSCPresetList[] = +{ + { "disabled", -1, gettext_noop("Disabled") }, + { "none", -1 }, // Old setting value + + { "composite", -1, gettext_noop("Composite Video") }, + { "svideo", -1, gettext_noop("S-Video") }, + { "rgb", -1, gettext_noop("RGB") }, + { "monochrome", -1, gettext_noop("Monochrome") }, + + { NULL, 0 }, +}; + +static MDFNSetting NESSettings[] = +{ + { "nes.nofs", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Disable four-score emulation."), NULL, MDFNST_BOOL, "0" }, + + { "nes.no8lim", MDFNSF_NOFLAGS, gettext_noop("Remove 8-sprites-per-scanline hardware limit."), + gettext_noop("WARNING: Enabling this option will cause graphical glitches in some games, including \"Solstice\"."), MDFNST_BOOL, "0", NULL, NULL, NULL, NESPPU_SettingChanged }, + + { "nes.soundq", MDFNSF_NOFLAGS, gettext_noop("Sound quality."), NULL, MDFNST_INT, "0", "-2", "3" }, + { "nes.sound_rate_error", MDFNSF_NOFLAGS, gettext_noop("Output rate tolerance."), NULL, MDFNST_FLOAT, "0.00004", "0.0000001", "0.01" }, + { "nes.n106bs", MDFNSF_NOFLAGS, gettext_noop("Enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation."), NULL, MDFNST_BOOL, "0" }, + { "nes.fnscan", MDFNSF_EMU_STATE, gettext_noop("Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation."), + gettext_noop("Warning: This option may break NES network play when enabled IF the players are using ROM images with different filenames."), MDFNST_BOOL, "1" }, + + { "nes.pal", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable PAL(50Hz) NES emulation."), NULL, MDFNST_BOOL, "0" }, + { "nes.gg", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable Game Genie emulation."), NULL, MDFNST_BOOL, "0" }, + { "nes.ggrom", MDFNSF_EMU_STATE, gettext_noop("Path to Game Genie ROM image."), NULL, MDFNST_STRING, "gg.rom" }, + { "nes.clipsides", MDFNSF_NOFLAGS, gettext_noop("Clip left+right 8 pixel columns."), NULL, MDFNST_BOOL, "0" }, + { "nes.slstart", MDFNSF_NOFLAGS, gettext_noop("First displayed scanline in NTSC mode."), NULL, MDFNST_UINT, "8", "0", "239" }, + { "nes.slend", MDFNSF_NOFLAGS, gettext_noop("Last displayed scanlines in NTSC mode."), NULL, MDFNST_UINT, "231", "0", "239" }, + { "nes.slstartp", MDFNSF_NOFLAGS, gettext_noop("First displayed scanline in PAL mode."), NULL, MDFNST_UINT, "0", "0", "239" }, + { "nes.slendp", MDFNSF_NOFLAGS, gettext_noop("Last displayedscanlines in PAL mode."), NULL, MDFNST_UINT, "239", "0", "239" }, + { "nes.ntscblitter", MDFNSF_NOFLAGS, gettext_noop("Enable NTSC color generation and blitter."), + gettext_noop("NOTE: If your refresh rate isn't very close to 60.1Hz(+-0.1), you will need to set the nes.ntsc.mergefields setting to \"1\" to avoid excessive flickering."), MDFNST_BOOL, "0" }, + + + { "nes.ntsc.preset", MDFNSF_NOFLAGS, gettext_noop("Video quality/type preset."), NULL, MDFNST_ENUM, "none", NULL, NULL, NULL, NULL, NTSCPresetList }, + { "nes.ntsc.mergefields", MDFNSF_NOFLAGS, gettext_noop("Merge fields to partially work around !=60.1Hz refresh rates."), NULL, MDFNST_BOOL, "0" }, + { "nes.ntsc.saturation", MDFNSF_NOFLAGS, gettext_noop("NTSC composite blitter saturation."), NULL, MDFNST_FLOAT, "0", "-1", "1" }, + { "nes.ntsc.hue", MDFNSF_NOFLAGS, gettext_noop("NTSC composite blitter hue."), NULL, MDFNST_FLOAT, "0", "-1", "1" }, + { "nes.ntsc.sharpness", MDFNSF_NOFLAGS, gettext_noop("NTSC composite blitter sharpness."), NULL, MDFNST_FLOAT, "0", "-1", "1" }, + { "nes.ntsc.brightness", MDFNSF_NOFLAGS, gettext_noop("NTSC composite blitter brightness."), NULL, MDFNST_FLOAT, "0", "-1", "1" }, + { "nes.ntsc.contrast", MDFNSF_NOFLAGS, gettext_noop("NTSC composite blitter contrast."), NULL, MDFNST_FLOAT, "0", "-1", "1" }, + + { "nes.ntsc.matrix", MDFNSF_NOFLAGS, gettext_noop("Enable NTSC custom decoder matrix."), NULL, MDFNST_BOOL, "0" }, + + /* Default custom decoder matrix(not plain default matrix) is from Sony */ + { "nes.ntsc.matrix.0", MDFNSF_NOFLAGS, gettext_noop("NTSC custom decoder matrix element 0(red, value * V)."), NULL, MDFNST_FLOAT, "1.539", "-2", "2", NULL, NESPPU_SettingChanged }, + { "nes.ntsc.matrix.1", MDFNSF_NOFLAGS, gettext_noop("NTSC custom decoder matrix element 1(red, value * U)."), NULL, MDFNST_FLOAT, "-0.622", "-2", "2", NULL, NESPPU_SettingChanged }, + { "nes.ntsc.matrix.2", MDFNSF_NOFLAGS, gettext_noop("NTSC custom decoder matrix element 2(green, value * V)."), NULL, MDFNST_FLOAT, "-0.571", "-2", "2", NULL, NESPPU_SettingChanged }, + { "nes.ntsc.matrix.3", MDFNSF_NOFLAGS, gettext_noop("NTSC custom decoder matrix element 3(green, value * U)."), NULL, MDFNST_FLOAT, "-0.185", "-2", "2", NULL, NESPPU_SettingChanged }, + { "nes.ntsc.matrix.4", MDFNSF_NOFLAGS, gettext_noop("NTSC custom decoder matrix element 4(blue, value * V)."), NULL, MDFNST_FLOAT, "0.000", "-2", "2", NULL, NESPPU_SettingChanged }, + { "nes.ntsc.matrix.5", MDFNSF_NOFLAGS, gettext_noop("NTSC custom decoder matrix element 5(blue, value * U."), NULL, MDFNST_FLOAT, "2.000", "-2", "2", NULL, NESPPU_SettingChanged }, + { NULL } +}; + +static uint8 MemRead(uint32 addr) +{ + addr &= 0xFFFF; + + return(NonCheatARead[addr](addr)); +} + +static DECLFR(CheatReadFunc) +{ + std::vector::iterator chit; + //printf("%08x, %d\n", A, NonCheatARead[A]); + uint8 retval = NonCheatARead[A](A); + + for(chit = SubCheats[A & 0x7].begin(); chit != SubCheats[A & 0x7].end(); chit++) + { + if(A == chit->addr) + { + if(chit->compare == -1 || chit->compare == retval) + { + retval = chit->value; + break; + } + } + } + return(retval); +} + +static void InstallReadPatch(uint32 address) +{ + if(Genie_BIOSInstalled()) + return; + + address &= 0xFFFF; + + SetReadHandler(address, address, CheatReadFunc, 0); +} + +static void RemoveReadPatches(void) +{ + if(Genie_BIOSInstalled()) + return; + + for(uint32 A = 0; A <= 0xFFFF; A++) + { + SetReadHandler(A, A, NonCheatARead[A], 0); + } +} + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".nes", "iNES Format ROM Image" }, + { ".nez", "iNES Format ROM Image" }, // Odd naming variant + { ".fds", "Famicom Disk System Disk Image" }, + { ".nsf", "Nintendo Sound Format" }, + { ".nsfe", "Extended Nintendo Sound Format" }, + { ".unf", "UNIF Format ROM Image" }, // Sexy 8.3 variant + { ".unif", "UNIF Format ROM Image" }, + { NULL, NULL } +}; + +MDFNGI EmulatedNES = +{ + "nes", + "Nintendo Entertainment System/Famicom", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + #ifdef WANT_DEBUGGER + &NESDBGInfo, + #else + NULL, + #endif + &NESInputInfo, + Load, + TestMagic, + NULL, + NULL, + CloseGame, + MDFNNES_SetLayerEnableMask, + "Background\0Sprites\0", + NULL, + NULL, + InstallReadPatch, + RemoveReadPatches, + MemRead, + false, + StateAction, + Emulate, + MDFNNES_SetInput, + MDFNNES_DoSimpleCommand, + NESSettings, + 0, + 0, + FALSE, // Multires + + 0, // lcm_width (replaced in game load) + 0, // lcm_height (replaced in game load) + NULL, // Dummy + + 256, // Nominal width + 240, // Nominal height + 256, // Framebuffer width(altered if NTSC blitter is enabled) + 240, // Framebuffer height + + 1, // Number of output sound channels +}; diff --git a/libmednahawk/src/nes/nes.h b/libmednahawk/src/nes/nes.h new file mode 100644 index 0000000000..c81056e21d --- /dev/null +++ b/libmednahawk/src/nes/nes.h @@ -0,0 +1,61 @@ +#ifndef _NES_H +#define _NES_H + +#include "../mednafen.h" +#include "../state.h" +#include "../movie.h" +#include "../general.h" +#include "../file.h" +#include "../md5.h" +#include "../video.h" + +typedef void (*writefunc)(uint32 A, uint8 V); +typedef uint8 (*readfunc)(uint32 A); + +void ResetMapping(void); +void ResetNES(void); +void PowerNES(void); + +extern uint64 timestampbase; +extern uint32 MMC5HackVROMMask; +extern uint8 *MMC5HackExNTARAMPtr; +extern uint32 MMC5HackCHRBank; +extern int MMC5Hack; +extern uint8 *MMC5HackVROMPTR; +extern uint8 MMC5HackCHRMode; +extern uint8 MMC5HackSPMode; +extern uint8 MMC5HackSPScroll; +extern uint8 MMC5HackSPPage; + +extern readfunc ARead[0x10000 + 0x100]; +extern writefunc BWrite[0x10000 + 0x100]; + +extern int GameAttributes; +extern uint8 PAL; + +extern int fceuindbg; +void ResetGameLoaded(void); + +#define DECLFR(x) uint8 x (uint32 A) +#define DECLFW(x) void x (uint32 A, uint8 V) + +DECLFR(ANull); +DECLFW(BNull); + +void SetReadHandler(int32 start, int32 end, readfunc func, bool snc = 1); +void SetWriteHandler(int32 start, int32 end, writefunc func); +writefunc GetWriteHandler(int32 a); +readfunc GetReadHandler(int32 a); + +typedef struct +{ + void (*Power)(void); + void (*Reset)(void); + void (*Close)(void); + int (*StateAction)(StateMem *sm, int load, int data_only); +} NESGameType; + + +extern bool NESIsVSUni; + +#endif diff --git a/libmednahawk/src/nes/nsf.cpp b/libmednahawk/src/nes/nsf.cpp new file mode 100644 index 0000000000..fae416e578 --- /dev/null +++ b/libmednahawk/src/nes/nsf.cpp @@ -0,0 +1,558 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include +#include "x6502.h" +#include "sound.h" +#include "nsf.h" +#include "nsfe.h" +#include "fds.h" +#include "fds-sound.h" +#include "cart.h" +#include "input.h" +#include "../player.h" + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +static uint8 SongReload; + +static DECLFW(NSF_write); +static DECLFR(NSF_read); + +static NSFINFO *NSFInfo; +typedef std::vector NSFWriteEntry; +static NSFWriteEntry *WriteHandlers = NULL; //[0x10000]; + +static uint8 NSFROM[0x30+6]= +{ +/* 0x00 - NMI */ +0x8D,0xF4,0x3F, /* Stop play routine NMIs. */ +0xA2,0xFF,0x9A, /* Initialize the stack pointer. */ +0xAD,0xF0,0x3F, /* See if we need to init. */ +0xF0,0x09, /* If 0, go to play routine playing. */ + +0xAD,0xF1,0x3F, /* Confirm and load A */ +0xAE,0xF3,0x3F, /* Load X with PAL/NTSC byte */ + +0x20,0x00,0x00, /* JSR to init routine */ + +0xA9,0x00, +0xAA, +0xA8, +0x20,0x00,0x00, /* JSR to play routine */ +0x8D,0xF5,0x3F, /* Start play routine NMIs. */ +0x90,0xFE, /* Loopie time. */ + +/* 0x20 */ +0x8D,0xF3,0x3F, /* Init init NMIs */ +0x18, +0x90,0xFE /* Loopie time. */ +}; + +static DECLFR(NSFROMRead) +{ + return (NSFROM-0x3800)[A]; +} + +static int doreset=0; +static int NSFNMIFlags; +static uint8 BSon; + +static uint8 *ExWRAM=0; + +static void FreeNSF(void) +{ + if(NSFInfo) + { + if(NSFInfo->GameName) free(NSFInfo->GameName); + if(NSFInfo->Artist) free(NSFInfo->Artist); + if(NSFInfo->Copyright) free(NSFInfo->Copyright); + if(NSFInfo->Ripper) free(NSFInfo->Ripper); + if(NSFInfo->NSFDATA) free(NSFInfo->NSFDATA); + if(ExWRAM) { free(ExWRAM); ExWRAM = NULL; } + free(NSFInfo); + NSFInfo = NULL; + } + + if(WriteHandlers) + { + delete[] WriteHandlers; + WriteHandlers = NULL; + } +} + +static void NSF_Close(void) +{ + FreeNSF(); +} + +static void NSF_Reset(void) +{ + NSF_init(); +} + +static void NSF_Power(void) +{ + NSF_init(); +} + +// First 32KB is reserved for sound chip emulation in the iNES mapper code. + +static INLINE void BANKSET(uint32 A, uint32 bank) +{ + bank &= NSFInfo->NSFMaxBank; + if(NSFInfo->SoundChip&4) + memcpy(ExWRAM+(A-0x6000),NSFInfo->NSFDATA+(bank<<12),4096); + else + setprg4(A,bank); +} + +int LoadNSF(MDFNFILE *fp) +{ + NSF_HEADER NSFHeader; + + fp->rewind(); + fp->fread(&NSFHeader, 1, 0x80); + + // NULL-terminate strings just in case. + NSFHeader.GameName[31] = NSFHeader.Artist[31] = NSFHeader.Copyright[31] = 0; + + NSFInfo->GameName = MDFN_RemoveControlChars(strdup((char *)NSFHeader.GameName)); + NSFInfo->Artist = MDFN_RemoveControlChars(strdup((char *)NSFHeader.Artist)); + NSFInfo->Copyright = MDFN_RemoveControlChars(strdup((char *)NSFHeader.Copyright)); + + MDFN_trim((char*)NSFInfo->GameName); + MDFN_trim((char*)NSFInfo->Artist); + MDFN_trim((char*)NSFInfo->Copyright); + + NSFInfo->LoadAddr = NSFHeader.LoadAddressLow | (NSFHeader.LoadAddressHigh << 8); + NSFInfo->InitAddr = NSFHeader.InitAddressLow | (NSFHeader.InitAddressHigh << 8); + NSFInfo->PlayAddr = NSFHeader.PlayAddressLow | (NSFHeader.PlayAddressHigh << 8); + + NSFInfo->NSFSize = fp->Size() - 0x80; + + NSFInfo->NSFMaxBank = ((NSFInfo->NSFSize+(NSFInfo->LoadAddr&0xfff)+4095)/4096); + NSFInfo->NSFMaxBank = round_up_pow2(NSFInfo->NSFMaxBank); + + if(!(NSFInfo->NSFDATA=(uint8 *)MDFN_malloc(NSFInfo->NSFMaxBank*4096, _("NSF data")))) + return 0; + + fp->fseek(0x80, SEEK_SET); + + memset(NSFInfo->NSFDATA, 0x00, NSFInfo->NSFMaxBank*4096); + fp->fread(NSFInfo->NSFDATA+(NSFInfo->LoadAddr&0xfff), 1, NSFInfo->NSFSize); + + NSFInfo->NSFMaxBank--; + + NSFInfo->VideoSystem = NSFHeader.VideoSystem; + NSFInfo->SoundChip = NSFHeader.SoundChip; + NSFInfo->TotalSongs = NSFHeader.TotalSongs; + + if(NSFHeader.StartingSong == 0) + NSFHeader.StartingSong = 1; + + NSFInfo->StartingSong = NSFHeader.StartingSong - 1; + memcpy(NSFInfo->BankSwitch, NSFHeader.BankSwitch, 8); + + return(1); +} + + +bool NSF_TestMagic(const char *name, MDFNFILE *fp) +{ + if(fp->size < 5) + return(FALSE); + + if(memcmp(fp->data, "NESM\x1a", 5) && memcmp(fp->data, "NSFE", 4)) + return(FALSE); + + return(TRUE); +} + +bool NSFLoad(const char *name, MDFNFILE *fp, NESGameType *gt) +{ + char magic[5]; + int x; + + if(!(NSFInfo = (NSFINFO *)MDFN_malloc(sizeof(NSFINFO), _("NSF header")))) + { + return(0); + } + memset(NSFInfo, 0, sizeof(NSFINFO)); + + fp->rewind(); + fp->fread(magic, 1, 5); + + if(!memcmp(magic, "NESM\x1a", 5)) + { + if(!LoadNSF(fp)) + { + FreeNSF(); + return(0); + } + } + else if(!memcmp(magic, "NSFE", 4)) + { + if(!LoadNSFE(NSFInfo, fp->data, fp->Size(), 0)) + { + FreeNSF(); + return(0); + } + } + else + { + FreeNSF(); + return(FALSE); + } + + if(NSFInfo->LoadAddr < 0x6000) + { + MDFNI_printf(_("Load address is invalid!")); + FreeNSF(); + return(0); + } + + if(NSFInfo->TotalSongs < 1) + { + MDFNI_printf(_("Total number of songs is less than 1!")); + FreeNSF(); + return(0); + } + + BSon = 0; + for(x=0;x<8;x++) + BSon |= NSFInfo->BankSwitch[x]; + + MDFNGameInfo->GameType = GMT_PLAYER; + + if(NSFInfo->GameName) + MDFNGameInfo->name = (UTF8*)strdup((char*)NSFInfo->GameName); + + for(x=0;;x++) + { + if(NSFROM[x]==0x20) + { + NSFROM[x+1]=NSFInfo->InitAddr&0xFF; + NSFROM[x+2]=NSFInfo->InitAddr>>8; + NSFROM[x+8]=NSFInfo->PlayAddr&0xFF; + NSFROM[x+9]=NSFInfo->PlayAddr>>8; + break; + } + } + + if(NSFInfo->VideoSystem == 0) + MDFNGameInfo->VideoSystem = VIDSYS_NTSC; + else if(NSFInfo->VideoSystem == 1) + MDFNGameInfo->VideoSystem = VIDSYS_PAL; + + MDFN_printf(_("NSF Loaded. File information:\n\n")); + MDFN_indent(1); + if(NSFInfo->GameName) + MDFN_printf(_("Game/Album Name:\t%s\n"), NSFInfo->GameName); + if(NSFInfo->Artist) + MDFN_printf(_("Music Artist:\t%s\n"), NSFInfo->Artist); + if(NSFInfo->Copyright) + MDFN_printf(_("Copyright:\t\t%s\n"), NSFInfo->Copyright); + if(NSFInfo->Ripper) + MDFN_printf(_("Ripper:\t\t%s\n"), NSFInfo->Ripper); + + if(NSFInfo->SoundChip) + { + static const char *tab[6]={"Konami VRCVI","Konami VRCVII","Nintendo FDS","Nintendo MMC5","Namco 106","Sunsoft FME-07"}; + + for(x=0;x<6;x++) + if(NSFInfo->SoundChip&(1<SoundChip=1<LoadAddr,NSFInfo->InitAddr,NSFInfo->PlayAddr); + MDFN_printf("%s\n",(NSFInfo->VideoSystem&1)?"PAL":"NTSC"); + MDFN_printf(_("Starting song: %d / %d\n\n"),NSFInfo->StartingSong + 1,NSFInfo->TotalSongs); + + if(NSFInfo->SoundChip&4) + ExWRAM=(uint8 *)MDFN_malloc(32768+8192, _("NSF expansion RAM")); + else + ExWRAM=(uint8 *)MDFN_malloc(8192, _("NSF expansion RAM")); + + MDFN_indent(-1); + + if(!ExWRAM) + { + return(0); + } + + + gt->Power = NSF_Power; + gt->Reset = NSF_Reset; + gt->Close = NSF_Close; + + Player_Init(NSFInfo->TotalSongs, NSFInfo->GameName ? NSFInfo->GameName : "", + NSFInfo->Artist ? NSFInfo->Artist : "", + NSFInfo->Copyright ? NSFInfo->Copyright : "", + NSFInfo->SongNames); + return 1; +} + +static DECLFR(NSFVectorRead) +{ + if(((NSFNMIFlags&1) && SongReload) || (NSFNMIFlags&2) || doreset) + { + if(A==0xFFFA) return(0x00); + else if(A==0xFFFB) return(0x38); + else if(A==0xFFFC) return(0x20); + else if(A==0xFFFD) {doreset=0;return(0x38);} + return(X.DB); + } + else + return(CartBR(A)); +} + +void NSFECSetWriteHandler(int32 start, int32 end, writefunc func) +{ + int32 x; + + if(!func) return; + + for(x=end;x>=start;x--) + WriteHandlers[x].push_back(func); +} + +static DECLFW(NSFECWriteHandler) +{ + for(unsigned int x = 0; x < WriteHandlers[A].size(); x++) + WriteHandlers[A][x](A, V); + +} + +int NSFFDS_Init(EXPSOUND *, bool MultiChip); +int NSFVRC6_Init(EXPSOUND *, bool MultiChip); +int NSFMMC5_Init(EXPSOUND *, bool MultiChip); +int NSFAY_Init(EXPSOUND *, bool MultiChip); +int NSFN106_Init(EXPSOUND *, bool MultiChip); +int NSFVRC7_Init(EXPSOUND *, bool MultiChip); + +void NSF_init(void) +{ + doreset = 1; + + WriteHandlers = new NSFWriteEntry[0x10000]; + + ResetCartMapping(); + + SetWriteHandler(0x2000, 0x3FFF, NSFECWriteHandler); + SetWriteHandler(0x4020, 0xFFFF, NSFECWriteHandler); + + if(NSFInfo->SoundChip&4) + { + SetupCartPRGMapping(0,ExWRAM,32768+8192,1); + setprg32(0x6000,0); + setprg8(0xE000,4); + memset(ExWRAM,0x00,32768+8192); + NSFECSetWriteHandler(0x6000,0xDFFF,CartBW); + SetReadHandler(0x6000,0xFFFF,CartBR); + } + else + { + memset(ExWRAM,0x00,8192); + SetReadHandler(0x6000,0x7FFF,CartBR); + NSFECSetWriteHandler(0x6000,0x7FFF,CartBW); + SetupCartPRGMapping(0,NSFInfo->NSFDATA,((NSFInfo->NSFMaxBank+1)*4096),0); + SetupCartPRGMapping(1,ExWRAM,8192,1); + setprg8r(1,0x6000,0); + SetReadHandler(0x8000,0xFFFF,CartBR); + } + + if(BSon) + { + int32 x; + for(x=0;x<8;x++) + { + if(NSFInfo->SoundChip&4 && x>=6) + BANKSET(0x6000+(x-6)*4096,NSFInfo->BankSwitch[x]); + BANKSET(0x8000+x*4096,NSFInfo->BankSwitch[x]); + } + } + else + { + int32 x; + for(x=(NSFInfo->LoadAddr&0xF000);x<0x10000;x+=0x1000) + BANKSET(x,((x-(NSFInfo->LoadAddr&0xf000))>>12)); + } + + SetReadHandler(0xFFFA,0xFFFD,NSFVectorRead); + + NSFECSetWriteHandler(0x2000,0x3fff,0); + SetReadHandler(0x2000,0x37ff,0); + SetReadHandler(0x3836,0x3FFF,0); + SetReadHandler(0x3800,0x3835,NSFROMRead); + + NSFECSetWriteHandler(0x5ff6,0x5fff,NSF_write); + + NSFECSetWriteHandler(0x3ff0,0x3fff,NSF_write); + SetReadHandler(0x3ff0,0x3fff,NSF_read); + + int (*InitPointers[8])(EXPSOUND *, bool MultiChip) = { NSFVRC6_Init, NSFVRC7_Init, NSFFDS_Init, NSFMMC5_Init, NSFN106_Init, NSFAY_Init, NULL, NULL }; + + for(int x = 0; x < 8; x++) + if((NSFInfo->SoundChip & (1 << x)) && InitPointers[x]) + { + EXPSOUND TmpExpSound; + memset(&TmpExpSound, 0, sizeof(TmpExpSound)); + + InitPointers[x](&TmpExpSound, NSFInfo->SoundChip != (1 << x)); + GameExpSound.push_back(TmpExpSound); + } + + NSFInfo->CurrentSong=NSFInfo->StartingSong; + SongReload=0xFF; + NSFNMIFlags=0; +} + +static DECLFW(NSF_write) +{ + switch(A) + { + case 0x3FF3:NSFNMIFlags|=1;break; + case 0x3FF4:NSFNMIFlags&=~2;break; + case 0x3FF5:NSFNMIFlags|=2;break; + + case 0x5FF6: + case 0x5FF7:if(!(NSFInfo->SoundChip&4)) return; + case 0x5FF8: + case 0x5FF9: + case 0x5FFA: + case 0x5FFB: + case 0x5FFC: + case 0x5FFD: + case 0x5FFE: + case 0x5FFF:if(!BSon) return; + A&=0xF; + BANKSET((A*4096),V); + break; + } +} + +static DECLFR(NSF_read) +{ + int x; + + switch(A) + { + case 0x3ff0:x=SongReload; + if(!fceuindbg) + SongReload=0; + return x; + case 0x3ff1: + if(!fceuindbg) + { + for(int i = 0; i < 0x800; i++) + BWrite[i](i, 0x00); + + BWrite[0x4015](0x4015,0x0); + for(x=0;x<0x14;x++) + BWrite[0x4000+x](0x4000+x,0); + BWrite[0x4015](0x4015,0xF); + + if(NSFInfo->SoundChip & 4) + { + FDSSound_Power(); + BWrite[0x4017](0x4017,0xC0); /* FDS BIOS writes $C0 */ + BWrite[0x4089](0x4089,0x80); + BWrite[0x408A](0x408A,0xE8); + } + else + { + memset(ExWRAM,0x00,8192); + BWrite[0x4017](0x4017,0xC0); + BWrite[0x4017](0x4017,0xC0); + BWrite[0x4017](0x4017,0x40); + } + + if(BSon) + { + for(x=0;x<8;x++) + BANKSET(0x8000+x*4096,NSFInfo->BankSwitch[x]); + } + return (NSFInfo->CurrentSong); + } + case 0x3FF3:return PAL; + } + return 0; +} + +uint8 MDFN_GetJoyJoy(void); + +void DoNSFFrame(void) +{ + if(((NSFNMIFlags&1) && SongReload) || (NSFNMIFlags&2)) + TriggerNMI(); + + { + static uint8 last=0; + uint8 tmp; + tmp=MDFN_GetJoyJoy(); + if((tmp&JOY_RIGHT) && !(last&JOY_RIGHT)) + { + if(NSFInfo->CurrentSong<(NSFInfo->TotalSongs - 1)) + { + NSFInfo->CurrentSong++; + SongReload=0xFF; + } + } + else if((tmp&JOY_LEFT) && !(last&JOY_LEFT)) + { + if(NSFInfo->CurrentSong>0) + { + NSFInfo->CurrentSong--; + SongReload=0xFF; + } + } + else if((tmp&JOY_UP) && !(last&JOY_UP)) + { + NSFInfo->CurrentSong+=10; + if(NSFInfo->CurrentSong>=NSFInfo->TotalSongs) NSFInfo->CurrentSong=NSFInfo->TotalSongs - 1; + SongReload=0xFF; + } + else if((tmp&JOY_DOWN) && !(last&JOY_DOWN)) + { + NSFInfo->CurrentSong-=10; + if(NSFInfo->CurrentSong<0) NSFInfo->CurrentSong=0; + SongReload=0xFF; + } + else if((tmp&JOY_START) && !(last&JOY_START)) + SongReload=0xFF; + else if((tmp&JOY_A) && !(last&JOY_A)) + { + + } + last=tmp; + } +} + +void MDFNNES_DrawNSF(MDFN_Surface *surface, MDFN_Rect *DisplayRect, int16 *samples, int32 scount) +{ + Player_Draw(surface, DisplayRect, NSFInfo->CurrentSong, samples, scount); +} + diff --git a/libmednahawk/src/nes/nsf.h b/libmednahawk/src/nes/nsf.h new file mode 100644 index 0000000000..ddba4e3a99 --- /dev/null +++ b/libmednahawk/src/nes/nsf.h @@ -0,0 +1,65 @@ +typedef struct { + char *GameName, *Artist, *Copyright, *Ripper; + + char **SongNames; + int32 *SongLengths; + int32 *SongFades; + + int TotalSongs; + int StartingSong; + int CurrentSong; + int TotalChannels; + int VideoSystem; + + uint16 PlayAddr,InitAddr,LoadAddr; + uint8 BankSwitch[8]; + int SoundChip; + + /* NOTE: NSFRawData does not necessarily point to the value returned by malloc() or + calloc(), so it should not be passed to free()! + */ + uint8 *NSFRawData; + uint32 NSFRawDataSize; + + /* Currently used only by the NSFE code. All unrecognized chunks will be stuck in + here. + */ + uint8 *NSFExtra; + uint32 NSFExtraSize; + + uint8 *NSFDATA; + int NSFMaxBank; + int NSFSize; +} NSFINFO; + +typedef struct { + char ID[5]; /*NESM^Z*/ + uint8 Version; + uint8 TotalSongs; + uint8 StartingSong; + uint8 LoadAddressLow; + uint8 LoadAddressHigh; + uint8 InitAddressLow; + uint8 InitAddressHigh; + uint8 PlayAddressLow; + uint8 PlayAddressHigh; + UTF8 GameName[32]; + UTF8 Artist[32]; + UTF8 Copyright[32]; + uint8 NTSCspeed[2]; // Unused + uint8 BankSwitch[8]; + uint8 PALspeed[2]; // Unused + uint8 VideoSystem; + uint8 SoundChip; + uint8 Expansion[4]; + uint8 reserve[8]; + } NSF_HEADER; + +void NSF_init(void); +void NSFDealloc(void); +void NSFDodo(void); +void DoNSFFrame(void); +void MDFNNES_DrawNSF(MDFN_Surface *surface, MDFN_Rect *DisplayRect, int16 *samples, int32 scount); + +// NSF Expansion Chip Set Write Handler +void NSFECSetWriteHandler(int32 start, int32 end, writefunc func); diff --git a/libmednahawk/src/nes/nsfe.cpp b/libmednahawk/src/nes/nsfe.cpp new file mode 100644 index 0000000000..6eaf39af46 --- /dev/null +++ b/libmednahawk/src/nes/nsfe.cpp @@ -0,0 +1,332 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include +#include "x6502.h" +#include "sound.h" +#include "cart.h" +#include "nsf.h" +#include "nsfe.h" + + +static uint32 ToU32(const uint8 *buf) +{ + return(buf[0] | (buf[1]<<8) | (buf[2]<<16) | (buf[3]<<24)); +} + +static uint16 ToU16(const uint8 *buf) +{ + return(buf[0] |(buf[1]<<8)); +} + + +int LoadNSFE(NSFINFO *nfe, const uint8 *buf, int32 size, int info_only) +{ + const uint8 *nbuf = 0; + + size -= 4; + buf += 4; + + while(size) + { + uint32 chunk_size; + uint8 tb[4]; + + if(size < 4) return(0); + chunk_size = ToU32(buf); + + size -= 4; + buf += 4; + if(size < 4) return(0); + + memcpy(tb, buf, 4); + + buf += 4; + size -= 4; + + //printf("\nChunk: %.4s %d\n", tb, chunk_size); + if(!memcmp(tb, "INFO", 4)) + { + if(chunk_size < 8) return(0); + + nfe->LoadAddr = ToU16(buf); + buf+=2; size-=2; + + nfe->InitAddr = ToU16(buf); + buf+=2; size-=2; + + nfe->PlayAddr = ToU16(buf); + buf+=2; size-=2; + + nfe->VideoSystem = *buf; buf++; size--; + nfe->SoundChip = *buf; buf++; size--; + + chunk_size-=8; + + if(chunk_size) { nfe->TotalSongs = *buf; buf++; size--; chunk_size--; } + else nfe->TotalSongs = 1; + + if(chunk_size) { nfe->StartingSong = *buf; buf++; size--; chunk_size--; } + else nfe->StartingSong = 0; + + nfe->SongNames = (char **)malloc(sizeof(char *) * nfe->TotalSongs); + memset(nfe->SongNames, 0, sizeof(char *) * nfe->TotalSongs); + + nfe->SongLengths = (int32 *)malloc(sizeof(int32) * nfe->TotalSongs); + nfe->SongFades = (int32 *)malloc(sizeof(int32) * nfe->TotalSongs); + { + int x; + for(x=0; xTotalSongs; x++) {nfe->SongLengths[x] = -1; nfe->SongFades[x] = -1; } + } + } + else if(!memcmp(tb, "DATA", 4)) + { + nfe->NSFSize=chunk_size; + nbuf = buf; + } + else if(!memcmp(tb, "BANK", 4)) + { + memcpy(nfe->BankSwitch, buf, (chunk_size > 8) ? 8 : chunk_size); + } + else if(!memcmp(tb, "NEND", 4)) + { + if(chunk_size == 0 && nbuf) + { + nfe->NSFMaxBank = ((nfe->NSFSize+(nfe->LoadAddr&0xfff)+4095)/4096); + nfe->NSFMaxBank = round_up_pow2(nfe->NSFMaxBank); + + if(!info_only) + { + if(!(nfe->NSFDATA=(uint8 *)malloc(nfe->NSFMaxBank*4096))) + return 0; + memset(nfe->NSFDATA,0x00,nfe->NSFMaxBank*4096); + memcpy(nfe->NSFDATA+(nfe->LoadAddr&0xfff),nbuf,nfe->NSFSize); + + nfe->NSFRawData = nfe->NSFDATA + (nfe->LoadAddr & 0xFFF); + nfe->NSFRawDataSize = nfe->NSFSize; + } + nfe->NSFMaxBank--; + return(1); + } + else + return(0); + } + else if(!memcmp(tb, "tlbl", 4)) + { + int songcount = 0; + if(!nfe->TotalSongs) return(0); // Out of order chunk. + + while(chunk_size > 0) + { + int slen = strlen((char *)buf); + + nfe->SongNames[songcount++] = (char*)MDFN_RemoveControlChars(strdup((char *)buf)); + + buf += slen + 1; + chunk_size -= slen + 1; + } + } + else if(!memcmp(tb, "time", 4)) + { + int count = chunk_size / 4; + int ws = 0; + chunk_size -= count * 4; + + while(count--) + { + nfe->SongLengths[ws] = (int32)ToU32(buf); + //printf("%d\n",fe->SongLengths[ws]/1000); + buf += 4; + ws++; + } + } + else if(!memcmp(tb, "fade", 4)) + { + int count = chunk_size / 4; + int ws = 0; + chunk_size -= count * 4; + + while(count--) + { + nfe->SongFades[ws] = (int32)ToU32(buf); + //printf("%d\n",fe->SongFades[ws]); + buf += 4; + ws++; + } + } + else if(!memcmp(tb, "auth", 4)) + { + int which = 0; + while(chunk_size > 0) + { + int slen = strlen((char *)buf); + + if(!which) nfe->GameName = (char*)MDFN_RemoveControlChars(strdup((char *)buf)); + else if(which == 1) nfe->Artist = (char*)MDFN_RemoveControlChars(strdup((char *)buf)); + else if(which == 2) nfe->Copyright = (char*)MDFN_RemoveControlChars(strdup((char *)buf)); + else if(which == 3) nfe->Ripper = (char*)MDFN_RemoveControlChars(strdup((char *)buf)); + + which++; + buf += slen +1; + chunk_size -= slen + 1; + } + } + else if(tb[0] >= 'A' && tb[0] <= 'Z') /* Unrecognized mandatory chunk */ + { + //puts("unknown"); + return(0); + } + else // mmm...store the unknown chunk in memory so it can be used by FESTAI_CreateNSFE() + // if necessary. + { + //printf("Boop: %.4s\n",tb); + nfe->NSFExtra = (uint8 *)realloc(nfe->NSFExtra, nfe->NSFExtraSize + 8 + chunk_size); + memcpy(nfe->NSFExtra + nfe->NSFExtraSize, buf - 8, 8 + chunk_size); + nfe->NSFExtraSize += 8 + chunk_size; + } + buf += chunk_size; + size -= chunk_size; + } + return(1); +} + +uint8 *MDFNI_CreateNSFE(NSFINFO *nfe, uint32 *totalsize) +{ + uint32 cursize, malloced; + uint8 *buffer; + uint32 chunkbuf; + int32 chunkbufsize; + + #define END_CHUNK() { buffer[chunkbuf+0] = chunkbufsize; buffer[chunkbuf+1]=chunkbufsize>>8; \ + buffer[chunkbuf+2] = chunkbufsize >> 16; buffer[chunkbuf+3] = chunkbufsize >> 24; \ + } + + #define ANED(data,size){ \ + if((cursize + size) > malloced) \ + { \ + uint32 additional = cursize + size - malloced; \ + if(additional < 8192) additional = 8192; \ + buffer = (uint8*)realloc(buffer, malloced + additional); \ + malloced += additional; \ + } \ + memcpy(buffer + cursize, data, size); \ + chunkbufsize += size; cursize += size; \ + } + + cursize = 0; + malloced = 0; + chunkbufsize = 0; + buffer = (uint8 *)malloc(8192);; + + #define ANED8(v) { uint8 tmp=v; ANED(&tmp,1); } + #define ANED32(v) { uint8 t32[4]; t32[0]=v; t32[1]=v>>8; t32[2]=v>>16; t32[3]=v>>24; ANED(t32,4); } + #define ANED16(v) { uint8 t16[4]; t16[0]=v; t16[1]=v>>8; ANED(t16, 2); } + #define ANEDS(str) { if(str) {uint32 len = strlen((char *)str) + 1; ANED(str, len);} else { ANED8(0); } } + #define BEGIN_CHUNK(type) { chunkbuf = cursize; chunkbufsize = -8; ANED32(0); ANED(type,4); } + + ANED("NSFE",4); + + BEGIN_CHUNK("INFO"); + ANED16(nfe->LoadAddr); + ANED16(nfe->InitAddr); + ANED16(nfe->PlayAddr); + ANED8(nfe->VideoSystem); + ANED8(nfe->SoundChip); + ANED8(nfe->TotalSongs); + ANED8(nfe->StartingSong); + END_CHUNK(); + + { + int x; + for(x=0;x<8;x++) + if(nfe->BankSwitch[x]) + { + BEGIN_CHUNK("BANK"); + ANED(nfe->BankSwitch, 8); + END_CHUNK(); + break; + } + } + BEGIN_CHUNK("DATA"); + ANED(nfe->NSFRawData, nfe->NSFRawDataSize); + END_CHUNK(); + + if(nfe->SongLengths) + { + int x; + int max; + + for(max=nfe->TotalSongs-1;max>=0;max--) + if(nfe->SongLengths[max] != -1) + break; + + if(max >= 0) + { + BEGIN_CHUNK("time"); + for(x=0;x<=max;x++) + ANED32(nfe->SongLengths[x]); + END_CHUNK(); + } + } + + if(nfe->SongFades) + { + int x; + int max; + + for(max=nfe->TotalSongs-1;max>=0;max--) + if(nfe->SongFades[max] != -1) + break; + + if(max>=0) + { + BEGIN_CHUNK("fade"); + for(x=0;x<=max;x++) + ANED32(nfe->SongFades[x]); + END_CHUNK(); + } + } + + if(nfe->SongNames) + { + int x; + BEGIN_CHUNK("tlbl"); + for(x=0;xTotalSongs;x++) + ANEDS(nfe->SongNames[x]); + END_CHUNK(); + } + + if(nfe->Artist || nfe->GameName || nfe->Copyright || nfe->Ripper) + { + BEGIN_CHUNK("auth"); + ANEDS(nfe->GameName); + ANEDS(nfe->Artist); + ANEDS(nfe->Copyright); + ANEDS(nfe->Ripper); + END_CHUNK(); + } + + if(nfe->NSFExtra) + ANED(nfe->NSFExtra, nfe->NSFExtraSize); + + BEGIN_CHUNK("NEND"); + END_CHUNK(); + + *totalsize = cursize; + return(buffer); +} diff --git a/libmednahawk/src/nes/nsfe.h b/libmednahawk/src/nes/nsfe.h new file mode 100644 index 0000000000..41b76451c4 --- /dev/null +++ b/libmednahawk/src/nes/nsfe.h @@ -0,0 +1,2 @@ +int LoadNSFE(NSFINFO *nfe, const uint8 *buf, int32 size, int info_only); +uint8 *MDFNI_CreateNSFE(NSFINFO *nfe, uint32 *totalsize); diff --git a/libmednahawk/src/nes/ntsc/LGPL.txt b/libmednahawk/src/nes/ntsc/LGPL.txt new file mode 100644 index 0000000000..cbee875ba6 --- /dev/null +++ b/libmednahawk/src/nes/ntsc/LGPL.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/libmednahawk/src/nes/ntsc/benchmark.c b/libmednahawk/src/nes/ntsc/benchmark.c new file mode 100644 index 0000000000..a5f98c236a --- /dev/null +++ b/libmednahawk/src/nes/ntsc/benchmark.c @@ -0,0 +1,87 @@ + +/* Measures performance of blitter, useful for improving a custom blitter. +NOTE: This assumes that the process is getting 100% CPU time; you might need to +arrange for this or else the performance will be reported lower than it really is. */ + +#include "nes_ntsc.h" + +#include +#include +#include + +enum { in_width = 256 }; +enum { in_height = 240 }; + +enum { out_width = NES_NTSC_OUT_WIDTH( in_width ) }; +enum { out_height = in_height }; + +struct data_t +{ + nes_ntsc_t ntsc; + unsigned char in [ in_height] [ in_width]; + unsigned short out [out_height] [out_width]; +}; + +static int time_blitter( void ); + +int main() +{ + struct data_t* data = (struct data_t*) malloc( sizeof *data ); + if ( data ) + { + /* fill with random pixel data */ + int y; + for ( y = 0; y < in_height; y++ ) + { + int x; + for ( x = 0; x < in_width; x++ ) + data->in [y] [x] = rand() >> 4 & 0x1F; + } + + printf( "Timing nes_ntsc...\n" ); + fflush( stdout ); + + nes_ntsc_init( &data->ntsc, 0 ); + + /* measure frame rate */ + while ( time_blitter() ) + { + nes_ntsc_blit( &data->ntsc, data->in [0], in_width, 0, + in_width, in_height, data->out [0], sizeof data->out [0] ); + } + + free( data ); + } + + return 0; +} + +static int time_blitter( void ) +{ + int const duration = 4; /* seconds */ + static clock_t end_time; + static int count; + if ( !count ) + { + clock_t time = clock(); + while ( clock() == time ) { } + if ( clock() - time > CLOCKS_PER_SEC ) + { + /* clock increments less-often than once every second */ + printf( "Insufficient time resolution\n" ); + return 0; + } + end_time = clock() + CLOCKS_PER_SEC * duration; + } + else if ( clock() >= end_time ) + { + int rate = count / duration; + printf( "Performance: %d frames per second, which would use %d%% CPU at 60 FPS\n", + rate, 60 * 100 / rate ); + return 0; + } + count++; + + return 1; +} + diff --git a/libmednahawk/src/nes/ntsc/changes.txt b/libmednahawk/src/nes/ntsc/changes.txt new file mode 100644 index 0000000000..2543f8afda --- /dev/null +++ b/libmednahawk/src/nes/ntsc/changes.txt @@ -0,0 +1,91 @@ +nes_ntsc Change Log +------------------- + +nes_ntsc 0.2.0 +-------------- +- Significantly improved NTSC signal processing to give clearer image and +better sharpness control + +- Added parameters for gamma, resolution, color bleed, artifacts, and color +fringing + +- Added presets for composite video, S-video, RGB, and monochrome + +- Added NES_NTSC_OUT_WIDTH() and NES_NTSC_IN_WIDTH() for calculating +input/output widths + +- Improved default blitter to support emphasis and allow specification of RGB +output bit depth + +- Improved demo with more controls and interpolation and darkening of scanlines +rather than duplicating them + +- Improved documentation + +- Interface changes: nes_ntsc_blit() now takes *input* size rather than output +size. NES_NTSC_BEGIN_ROW now takes two additional pixels. + +- Deprecated: nes_ntsc_x_in/out_width, NES_NTSC_RGBnn_OUT, and NES_NTSC_RAW_OUT + + +nes_ntsc 0.1.7 +-------------- +- Fixed color emphasis to affect xD colors instead of incorrectly leaving them +as always gray + +- Added ability to generate a 64- or 512-color RGB palette for use when full +NTSC emulation isn't desired + +- Documented more accurate burst_phase handling and included three test ROMs +for verifying proper implementation + +- Moved color emphasis support to new nes_ntsc_emph_t structure, eliminating +the ugly global NES_NTSC_DISABLE_EMPHASIS configuration macro + +- Extended demo to use optional Sony decoder matrix and write standard 192-byte +NES .PAL file using current settings + +- Improved documentation slightly + +- Lowered maximum saturation to avoid overflow of blue when blue color emphasis +is enabled + + +nes_ntsc 0.1.6 +-------------- +- Cleaned up hue, decoder matrix, and hue warping to do transformations in the +proper order and direction + + +nes_ntsc 0.1.5 +-------------- +- Added support for color emphasis/tint bits (can be turned off to reduce +memory usage) + +- Added ability to specify optional decoder matrix + +- Improved documentation + +- Added constants for overscan borders + + +nes_ntsc 0.1.0 +-------------- +- First official version + +- Completely rewrote algorithm to do all NTSC signal processing at +initialization time, putting results into a table for use during blitting. This +increased performance by over 300% and allowed many improvements in quality and +image options. + +- Eliminated multiple output formats and options. Now you can define a custom +blitter for this. + +- Added sharpness and "hue warping" controls + +- Added option to merge even and odd artifacts to reduce flicker when host +monitor's refresh rate doesn't match emulator's frame rate. + +- Added built-in horizontal rescaling. I never realized the old one was way too +wide. + diff --git a/libmednahawk/src/nes/ntsc/demo.c b/libmednahawk/src/nes/ntsc/demo.c new file mode 100644 index 0000000000..2dad8da24d --- /dev/null +++ b/libmednahawk/src/nes/ntsc/demo.c @@ -0,0 +1,255 @@ + +/* Uses nes_ntsc to display a raw NES image on screen with adjustment of +sharpness and hue warping using mouse. Writes "nes.pal" RGB color file on exit. + +Space Toggles field merging +C Composite video quality +S S-video quality +R RGB video quality +M Monochrome video quality +D Toggles between standard and Sony decoder matrix +*/ + +#include "nes_ntsc.h" +#include +#include +#include +#include "SDL.h" + +/* NES pixel buffer size */ +enum { nes_width = 256 }; +enum { nes_height = 240 }; + +/* Output size */ +enum { out_width = NES_NTSC_OUT_WIDTH( nes_width ) }; +enum { out_height = nes_height * 2 }; + +/* Shell */ +void fatal_error( const char* str ); +void sdl_init( int width, int height, int depth ); +void sdl_lock_pixels(); +void sdl_display(); +int sdl_run(); +static unsigned char* sdl_pixels; +static long sdl_pitch; +static float mouse_x = 0.5f, mouse_y = 0.5f; /* 0.0 to 1.0 */ +static int mouse_moved; +static int key_pressed; + +/* Globals */ +static unsigned char* nes_pixels; +static nes_ntsc_setup_t setup; +static nes_ntsc_t* ntsc; +static int burst_phase = 0; + +static void init() +{ + /* read raw image */ + FILE* file = fopen( "nes.raw", "rb" ); + if ( !file ) + fatal_error( "Couldn't open image file" ); + nes_pixels = (unsigned char*) malloc( (long) nes_height * nes_width ); + if ( !nes_pixels ) + fatal_error( "Out of memory" ); + fread( nes_pixels, nes_width, nes_height, file ); + fclose( file ); + + /* allocate memory for nes_ntsc and initialize */ + ntsc = (nes_ntsc_t*) malloc( sizeof (nes_ntsc_t) ); + if ( !ntsc ) + fatal_error( "Out of memory" ); + nes_ntsc_init( ntsc, &setup ); +} + +static void display() +{ + sdl_lock_pixels(); + + /* force phase to 0 if merge_fields is on */ + burst_phase ^= 1; + if ( setup.merge_fields ) + burst_phase = 0; + + /* blit image to every other row of output by doubling output pitch */ + nes_ntsc_blit( ntsc, nes_pixels, nes_width, burst_phase, + nes_width, nes_height, sdl_pixels, sdl_pitch * 2 ); + + /* interpolate and darken between scanlines */ + { + int y; + for ( y = 1; y < out_height - 1; y += 2 ) + { + unsigned char* io = sdl_pixels + y * sdl_pitch; + int n; + for ( n = out_width; n; --n ) + { + unsigned prev = *(unsigned short*) (io - sdl_pitch); + unsigned next = *(unsigned short*) (io + sdl_pitch); + /* mix 16-bit rgb without losing low bits */ + unsigned mixed = prev + next + ((prev ^ next) & 0x0821); + /* darken by 12% */ + *(unsigned short*) io = (mixed >> 1) - (mixed >> 4 & 0x18E3); + io += 2; + } + } + } + + sdl_display(); +} + +static void write_palette() +{ + FILE* out = fopen( "nes.pal", "wb" ); + if ( out ) + { + unsigned char palette [64 * 3]; + setup.palette_out = palette; + nes_ntsc_init( 0, &setup ); + fwrite( palette, sizeof palette, 1, out ); + } +} + +int main( int argc, char** argv ) +{ + int merge_fields = 1; + int sony_decoder = 0; + + setup = nes_ntsc_composite; + init(); + sdl_init( out_width, out_height, 16 ); /* 16-bit RGB output buffer */ + + /* keep displaying frames until mouse is clicked */ + while ( sdl_run() ) + { + display(); + + switch ( key_pressed ) + { + case SDLK_SPACE: merge_fields = !merge_fields; break; + + case SDLK_c : setup = nes_ntsc_composite; break; + + case SDLK_s : setup = nes_ntsc_svideo; break; + + case SDLK_r : setup = nes_ntsc_rgb; break; + + case SDLK_m : setup = nes_ntsc_monochrome; break; + + case SDLK_d : sony_decoder = !sony_decoder; break; + } + + if ( key_pressed || mouse_moved ) + { + /* convert mouse range to -1 to +1 */ + float x = mouse_x * 2 - 1; + float y = mouse_y * 2 - 1; + + /* parameters: hue, saturation, contrast, brightness, sharpness, + gamma, bleed, resolution, artifacts, fringing, hue_warping */ + setup.sharpness = x; + setup.hue_warping = y; + + setup.merge_fields = merge_fields; + + setup.decoder_matrix = 0; + setup.hue = 0; + if ( sony_decoder ) + { + /* Sony CXA2095S US */ + static float matrix [6] = { 1.539, -0.622, -0.571, -0.185, 0.000, 2.000 }; + setup.decoder_matrix = matrix; + setup.hue += 33 / 180.0; + } + + nes_ntsc_init( ntsc, &setup ); + } + } + + free( ntsc ); + + write_palette(); + + return 0; +} + +/* Shell */ + +static SDL_Rect rect; +static SDL_Surface* screen; +static SDL_Surface* surface; +static unsigned long next_time; + +void fatal_error( const char* str ) +{ + fprintf( stderr, "Error: %s\n", str ); + exit( EXIT_FAILURE ); +} + +void sdl_init( int width, int height, int depth ) +{ + rect.w = width; + rect.h = height; + + if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) + fatal_error( "SDL initialization failed" ); + atexit( SDL_Quit ); + + screen = SDL_SetVideoMode( width, height, 0, 0 ); + surface = SDL_CreateRGBSurface( SDL_SWSURFACE, width, height, depth, 0, 0, 0, 0 ); + if ( !screen || !surface ) + fatal_error( "SDL initialization failed" ); +} + +int sdl_run() +{ + SDL_Event e; + + /* limit to 60 calls per second */ + unsigned long start = SDL_GetTicks(); + if ( start < next_time && next_time - start > 10 ) + SDL_Delay( next_time - start ); + while ( SDL_GetTicks() < next_time ) { } + next_time = start + 1000 / 60; + + mouse_moved = 0; + key_pressed = 0; + + while ( SDL_PollEvent( &e ) ) + { + if ( e.type == SDL_MOUSEBUTTONDOWN || e.type == SDL_QUIT ) + return 0; + + if ( e.type == SDL_KEYDOWN ) + { + if ( e.key.keysym.sym == SDLK_ESCAPE || e.key.keysym.sym == SDLK_q ) + return 0; + key_pressed = e.key.keysym.sym; + } + + if ( e.type == SDL_MOUSEMOTION ) + { + int x, y; + SDL_GetMouseState( &x, &y ); + mouse_moved = 1; + mouse_x = x / (float) (SDL_GetVideoSurface()->w - 1); + mouse_y = 1 - y / (float) (SDL_GetVideoSurface()->h - 1); + } + } + return 1; +} + +void sdl_lock_pixels() +{ + if ( SDL_LockSurface( surface ) < 0 ) + fatal_error( "Couldn't lock surface" ); + sdl_pitch = surface->pitch; + sdl_pixels = (unsigned char*) surface->pixels; +} + +void sdl_display() +{ + SDL_UnlockSurface( surface ); + if ( SDL_BlitSurface( surface, &rect, screen, &rect ) < 0 || SDL_Flip( screen ) < 0 ) + fatal_error( "SDL blit failed" ); +} + diff --git a/libmednahawk/src/nes/ntsc/nes.raw b/libmednahawk/src/nes/ntsc/nes.raw new file mode 100644 index 0000000000..9d32abb235 --- /dev/null +++ b/libmednahawk/src/nes/ntsc/nes.raw @@ -0,0 +1 @@ +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000077700000000000000000000000000000000070000000000000000000000000000000000007000000000000077777770000000000000000000000007770000000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&777770000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7700000000000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&77777777700000000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&77000000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&77700000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&777000000000077777777777777%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%77'7''77'''''7'''''7''''''777''77777777'77%'''7%''''''''777777777777777%%7777%%%%%%%'7777%%%%%%%''''77%%%%''''777%%%''''777%%'''77%'''''77%%'''''''77%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file diff --git a/libmednahawk/src/nes/ntsc/nes_ntsc.cpp b/libmednahawk/src/nes/ntsc/nes_ntsc.cpp new file mode 100644 index 0000000000..af28221c86 --- /dev/null +++ b/libmednahawk/src/nes/ntsc/nes_ntsc.cpp @@ -0,0 +1,658 @@ + +/* nes_ntsc 0.2.0. http://www.slack.net/~ant/ */ + +/* compilable in C or C++; just change the file extension */ + +#include "nes_ntsc.h" + +#include +#include + +/* Based on algorithm by NewRisingSun */ +/* Copyright (C) 2006 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +more details. You should have received a copy of the GNU Lesser General +Public License along with this module; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +enum { disable_correction = 0 }; /* for debugging */ + +/* macro constants are used instead of enum in some places to work around compiler bug */ + +#define rgb_unit 0x100 + +/* begin mostly common NES/SNES/SMS code */ + +nes_ntsc_setup_t const nes_ntsc_monochrome = { 0,-1, 0, 0,.2, 0,.2,-.2,-.2,-1, 0, 1, 0, 0 }; +nes_ntsc_setup_t const nes_ntsc_composite = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }; +nes_ntsc_setup_t const nes_ntsc_svideo = { 0, 0, 0, 0,.2, 0,.2, -1, -1, 0, 0, 1, 0, 0 }; +nes_ntsc_setup_t const nes_ntsc_rgb = { 0, 0, 0, 0,.2, 0,.7, -1, -1,-1, 0, 1, 0, 0 }; + +enum { alignment_count = 3 }; /* different pixel alignments with respect to yiq quads */ + +enum { kernel_half = 16 }; +enum { kernel_size = kernel_half * 2 + 1 }; +#define rescale_in 8 +enum { rescale_out = 7 }; + +struct ntsc_impl_t +{ + float to_rgb [nes_ntsc_burst_count] [6]; + float sin_hue; + float cos_hue; + float brightness; + float contrast; + float artifacts; + float fringing; + float hue_warping; + float kernel [rescale_out * kernel_size * 2]; +}; + +#define PI 3.14159265358979323846f + +static void init_ntsc_impl( struct ntsc_impl_t* impl, nes_ntsc_setup_t const* setup ) +{ + float kernels [kernel_size * 2]; + + impl->brightness = (float) setup->brightness * (0.4f * rgb_unit); + impl->contrast = (float) setup->contrast * (0.4f * rgb_unit) + rgb_unit; + impl->hue_warping = (float) setup->hue_warping; + + impl->artifacts = (float) setup->artifacts; + if ( impl->artifacts > 0 ) + impl->artifacts *= 0.5f; + impl->artifacts += 1.0f; + + impl->fringing = (float) setup->fringing; + if ( impl->fringing > 0 ) + impl->fringing *= 0.5f; + impl->fringing += 1.0f; + + /* generate luma (y) filter using sinc kernel */ + { + /* sinc with rolloff (dsf) */ + /* double precision avoids instability */ + double const rolloff = 1 + setup->sharpness * 0.004; + double const maxh = 256; + double const pow_a_n = pow( rolloff, maxh ); + float sum; + int i; + /* quadratic mapping to reduce negative (blurring) range */ + double to_angle = setup->resolution + 1; + to_angle = PI / maxh * 0.20 * (to_angle * to_angle + 1); + + kernels [kernel_size * 3 / 2] = (float) maxh; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + int x = i - kernel_half; + double angle = x * to_angle; + /* instability occurs at center point with rolloff very close to 1.0 */ + if ( x || pow_a_n > 1.01 || pow_a_n < 0.99 ) + { + double rolloff_cos_a = rolloff * cos( angle ); + double num = 1 - rolloff_cos_a - + pow_a_n * cos( maxh * angle ) + + pow_a_n * rolloff * cos( (maxh - 1) * angle ); + double den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; + double dsf = num / den; + kernels [kernel_size * 3 / 2 - kernel_half + i] = (float) dsf; + } + } + + /* apply blackman window and find sum */ + sum = 0; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + float x = PI * 2 / (kernel_half * 2) * i; + float blackman = 0.42f - 0.5f * (float) cos( x ) + 0.08f * (float) cos( x * 2 ); + sum += (kernels [kernel_size * 3 / 2 - kernel_half + i] *= blackman); + } + + /* normalize kernel */ + sum = 1.0f / sum; + for ( i = 0; i < kernel_half * 2 + 1; i++ ) + { + int x = kernel_size * 3 / 2 - kernel_half + i; + kernels [x] *= sum; + assert( kernels [x] == kernels [x] ); /* catch numerical instability */ + } + } + + /* generate chroma (iq) filter using gaussian kernel */ + { + float const cutoff_factor = -0.03125f; + float cutoff = (float) setup->bleed; + int i; + + if ( cutoff < 0 ) + { + /* keep extreme value accessible only near upper end of scale (1.0) */ + cutoff *= cutoff; + cutoff *= cutoff; + cutoff *= cutoff; + cutoff *= -30.0f / 0.65f; + } + cutoff = cutoff_factor - 0.65f * cutoff_factor * cutoff; + + for ( i = -kernel_half; i <= kernel_half; i++ ) + kernels [kernel_size / 2 + i] = (float) exp( i * i * cutoff ); + + /* normalize even and odd phases separately */ + for ( i = 0; i < 2; i++ ) + { + float sum = 0; + int x; + for ( x = i; x < kernel_size; x += 2 ) + sum += kernels [x]; + + sum = 1.0f / sum; + for ( x = i; x < kernel_size; x += 2 ) + { + kernels [x] *= sum; + assert( kernels [x] == kernels [x] ); /* catch numerical instability */ + } + } + } + + /* generate linear rescale kernels */ + { + int i; + for ( i = 0; i < rescale_out; i++ ) + { + float* out = &impl->kernel [i * kernel_size * 2]; + float second = 1.0f / rescale_in * (i + 1); + float first = 1.0f - second; + int x; + *out++ = kernels [0] * first; + for ( x = 1; x < kernel_size * 2; x++ ) + *out++ = kernels [x] * first + kernels [x - 1] * second; + } + } + + /* setup decoder matricies */ + { + static float const default_decoder [6] = + { 0.956f, 0.621f, -0.272f, -0.647f, -1.105f, 1.702f }; + float hue = (float) setup->hue * PI; + float sat = (float) setup->saturation; + float const* decoder = setup->decoder_matrix; + int i; + if ( !decoder ) + { + decoder = default_decoder; + hue -= PI / 180 * 15; + } + sat = (sat < 0 ? sat : sat * 0.41f) + 1; + impl->sin_hue = (float) sin( hue ); + impl->cos_hue = (float) cos( hue ); + + for ( i = 0; i < nes_ntsc_burst_count; i++ ) + { + float s = (float) sin( hue ) * sat; + float c = (float) cos( hue ) * sat; + float const* in = decoder; + float* out = impl->to_rgb [i]; + int n; + for ( n = 3; n; --n ) + { + float vi = *in++; + float vq = *in++; + *out++ = vi * c - vq * s; + *out++ = vi * s + vq * c; + } + hue -= PI / 180 * 120; + } + } +} + +/* kernel generation */ + +enum { rgb_kernel_size = nes_ntsc_burst_size / alignment_count }; + +static float const rgb_offset = rgb_unit * 2 + 0.5f; +static ntsc_rgb_t const ntsc_rgb_bias = rgb_unit * 2 * ntsc_rgb_builder; + +#define TO_RGB( y, i, q, to_rgb ) ( \ + ((int) (y + to_rgb [0] * i + to_rgb [1] * q) << 21) +\ + ((int) (y + to_rgb [2] * i + to_rgb [3] * q) << 11) +\ + ((int) (y + to_rgb [4] * i + to_rgb [5] * q) << 1)\ +) + +typedef struct pixel_info_t +{ + int offset; + float negate; + float kernel [4]; +} pixel_info_t; + +#define PIXEL_OFFSET_( ntsc, scaled ) \ + (kernel_size / 2 + ntsc + (scaled != 0) + (rescale_out - scaled) % rescale_out + \ + (kernel_size * 2 * scaled)) + +#define PIXEL_OFFSET( ntsc, scaled ) \ + PIXEL_OFFSET_( ((ntsc) - (scaled) / rescale_out * rescale_in),\ + (((scaled) + rescale_out * 10) % rescale_out) ),\ + (1.0f - (((ntsc) + 100) & 2)) + +/* Generate pixel at all burst phases and column alignments */ +static void gen_kernel( struct ntsc_impl_t* impl, float y, float i, float q, ntsc_rgb_t* out ) +{ + /* generate for each scanline burst phase */ + float const* to_rgb = impl->to_rgb [0]; + do + { + static pixel_info_t const pixels [alignment_count] = { + { PIXEL_OFFSET( -4, -9 ), { 1.0000f, 1.0000f, .6667f, .0000f } }, + { PIXEL_OFFSET( -2, -7 ), { .3333f, 1.0000f, 1.0000f, .3333f } }, + { PIXEL_OFFSET( 0, -5 ), { .0000f, .6667f, 1.0000f, 1.0000f } }, + }; + + /* Encode yiq into *two* composite signals (to allow control over artifacting). + Convolve these with kernels which: filter respective components, apply + sharpening, and rescale horizontally. Convert resulting yiq to rgb and pack + into integer. */ + pixel_info_t const* pixel = pixels; + do + { + /* negate is -1 when composite starts at odd multiple of 2 */ + float const yy = y * impl->fringing * pixel->negate; + float const ic0 = (i + yy) * pixel->kernel [0]; + float const qc1 = (q + yy) * pixel->kernel [1]; + float const ic2 = (i - yy) * pixel->kernel [2]; + float const qc3 = (q - yy) * pixel->kernel [3]; + + float const factor = impl->artifacts * pixel->negate; + float const ii = i * factor; + float const yc0 = (y + ii) * pixel->kernel [0]; + float const yc2 = (y - ii) * pixel->kernel [2]; + + float const qq = q * factor; + float const yc1 = (y + qq) * pixel->kernel [1]; + float const yc3 = (y - qq) * pixel->kernel [3]; + + float const* k = &impl->kernel [pixel->offset]; + int n; + for ( n = rgb_kernel_size; n; --n ) + { + float vi = k[0]*ic0 + k[2]*ic2; + float vq = k[1]*qc1 + k[3]*qc3; + float vy = k[kernel_size+0]*yc0 + k[kernel_size+1]*yc1 + + k[kernel_size+2]*yc2 + k[kernel_size+3]*yc3 + rgb_offset; + if ( k >= &impl->kernel [kernel_size * 2 * (rescale_out - 1)] ) + k -= kernel_size * 2 * (rescale_out - 1) + 2; + else + k += kernel_size * 2 - 1; + *out++ = TO_RGB( vy, vi, vq, to_rgb ) - ntsc_rgb_bias; + } + } + while ( pixel++ < &pixels [alignment_count - 1] ); + + to_rgb += 6; + + /* rotate -120 degrees */ + { + float const sin_b = -0.866025f; + float const cos_b = -0.5f; + float t; + t = i * cos_b - q * sin_b; + q = i * sin_b + q * cos_b; + i = t; + } + } + while ( to_rgb < impl->to_rgb [nes_ntsc_burst_count] ); +} + +static void merge_fields( ntsc_rgb_t* io ) +{ + int n; + for ( n = nes_ntsc_burst_size; n; --n ) + { + ntsc_rgb_t p0 = io [nes_ntsc_burst_size * 0] + ntsc_rgb_bias; + ntsc_rgb_t p1 = io [nes_ntsc_burst_size * 1] + ntsc_rgb_bias; + ntsc_rgb_t p2 = io [nes_ntsc_burst_size * 2] + ntsc_rgb_bias; + /* merge fields without losing precision */ + io [nes_ntsc_burst_size * 0] = + ((p0 + p1 - ((p0 ^ p1) & ntsc_rgb_builder)) >> 1) - ntsc_rgb_bias; + io [nes_ntsc_burst_size * 1] = + ((p1 + p2 - ((p1 ^ p2) & ntsc_rgb_builder)) >> 1) - ntsc_rgb_bias; + io [nes_ntsc_burst_size * 2] = + ((p2 + p0 - ((p2 ^ p0) & ntsc_rgb_builder)) >> 1) - ntsc_rgb_bias; + ++io; + } +} + +static void correct_errors( ntsc_rgb_t color, ntsc_rgb_t* out ) +{ + int burst; + for ( burst = 0; burst < nes_ntsc_burst_count; burst++ ) + { + int i; + for ( i = 0; i < rgb_kernel_size / 2; i++ ) + { + ntsc_rgb_t error = color - + out [i ] - + out [i + 3 +28] - + out [i + 5 +14] - + out [i + 7 ] - + out [(i+10)%14+28] - + out [(i+12)%14+14]; + + /* distribute error among four kernels */ + ntsc_rgb_t fourth = (error + 2 * ntsc_rgb_builder) >> 2; + fourth &= (ntsc_rgb_bias >> 1) - ntsc_rgb_builder; + fourth -= ntsc_rgb_bias >> 2; + if ( disable_correction ) { out [i] += ntsc_rgb_bias; continue; } + out [i + 3 +28] += fourth; + out [i + 5 +14] += fourth; + out [i + 7 ] += fourth; + out [i ] += error - (fourth * 3); + } + out += alignment_count * rgb_kernel_size; + } +} +/* end common code */ + +static void nes_ntsc_init_( ntsc_rgb_t* table, nes_ntsc_setup_t const* setup, int color_count ) +{ + /* init pixel renderer */ + int entry; + struct ntsc_impl_t impl; + if ( !setup ) + setup = &nes_ntsc_composite; + init_ntsc_impl( &impl, setup ); + + /* Generate pixel for every possible color */ + for ( entry = 0; entry < color_count; entry++ ) + { + /* determine y/i/q levels for color */ + static float const lo_levels [4] = { -0.12f, 0.00f, 0.31f, 0.72f }; + static float const hi_levels [4] = { 0.40f, 0.68f, 1.00f, 1.00f }; + int level = entry >> 4 & 0x03; + float lo = lo_levels [level]; + float hi = hi_levels [level]; + + int color = entry & 0x0F; + if ( color == 0 ) + lo = hi; + if ( color == 0x0D ) + hi = lo; + if ( color > 0x0D ) + hi = lo = 0.0f; + + { + #define TO_ANGLE( c ) (PI / 6 * ((c) - 3)) + float angle = TO_ANGLE( color ); + float sat = (hi - lo) * (0.5f * rgb_unit); + float i = (float) sin( angle ) * sat; + float q = (float) cos( angle ) * sat; + float y = (hi + lo) * 0.5f; + int tint = entry >> 6 & 7; + + /* apply color emphasis */ + if ( tint && color <= 0x0D ) + { + float const atten_mul = 0.79399f; + float const atten_sub = 0.0782838f; + + if ( tint == 7 ) + { + y = y * (atten_mul * 1.13f) - (atten_sub * 1.13f); + } + else + { + static unsigned char tints [8] = { 0, 6, 10, 8, 2, 4, 0, 0 }; + float vangle = TO_ANGLE( tints [tint] ); + float vsat = hi * (0.5f - atten_mul * 0.5f) + atten_sub * 0.5f; + y -= vsat * 0.5f; + if ( tint >= 3 && tint != 4 ) + { + /* combined tint bits */ + vsat *= 0.6f; + y -= vsat; + } + vsat *= rgb_unit; + i += (float) sin( vangle ) * vsat; + q += (float) cos( vangle ) * vsat; + } + } + + /* warp hue */ + if ( impl.hue_warping ) + { + /* rotate to angle decoder would use */ + float wi = q * impl.sin_hue + i * impl.cos_hue; + float wq = q * impl.cos_hue - i * impl.sin_hue; + + float factor = wi * wq; + if ( factor <= 0 && wq != 0 ) + { + factor *= impl.hue_warping / (wi * wi + wq * wq); + wi -= wi * factor; + wq += wq * factor; + + /* rotate back to pre-decoder angle */ + i = wi * impl.cos_hue - wq * impl.sin_hue; + q = wi * impl.sin_hue + wq * impl.cos_hue; + } + } + + if ( setup->gamma && y > 0 ) + y = (float) pow( (double) y, 1 - setup->gamma * 0.5 ); + + y = y * impl.contrast + impl.brightness; + + if ( table ) + { + gen_kernel( &impl, y, i, q, table ); + if ( setup->merge_fields ) + merge_fields( table ); + } + + y += rgb_offset; + + { + /* blue tends to overflow */ + /* ntsc_rgb_t rgb = TO_RGB( y, i, q, impl.to_rgb [0] ); */ + int r = (int) (y + impl.to_rgb [0] [0] * i + impl.to_rgb [0] [1] * q); + int g = (int) (y + impl.to_rgb [0] [2] * i + impl.to_rgb [0] [3] * q); + int b = (int) (y + impl.to_rgb [0] [4] * i + impl.to_rgb [0] [5] * q); + ntsc_rgb_t rgb = (r << 21) + (g << 11) + (b < 0x3E0 ? b << 1 : 0x3E0 << 1); + + /* optionally output to palette */ + unsigned char* out = setup->palette_out; + if ( out ) + { + ntsc_rgb_t clamped = rgb; + NES_NTSC_CLAMP_( clamped ); + out += entry * 3; + out [0] = clamped >> 21 & 0xFF; + out [1] = clamped >> 11 & 0xFF; + out [2] = clamped >> 1 & 0xFF; + } + + /* generate and adjust kernel */ + if ( table ) + { + correct_errors( rgb, table ); + table += nes_ntsc_entry_size; + } + } + } + } +} + +void nes_ntsc_init( nes_ntsc_t* ntsc, nes_ntsc_setup_t const* setup ) +{ + nes_ntsc_init_( (ntsc ? ntsc->table : 0), setup, nes_ntsc_palette_size ); +} + +void nes_ntsc_init_emph( nes_ntsc_emph_t* ntsc, nes_ntsc_setup_t const* setup ) +{ + nes_ntsc_init_( (ntsc ? ntsc->table : 0), setup, nes_ntsc_emph_palette_size ); +} + +/* Disable 'restrict' keyword by default. If your compiler supports it, put + + #define restrict restrict + +somewhere in a config header, or the equivalent in the command-line: + + -Drestrict=restrict + +If your compiler supports a non-standard version, like __restrict, do this: + + #define restrict __restrict + +Enabling this if your compiler supports it will allow better optimization. */ +#ifndef restrict + #define restrict +#endif + +/* Default to 16-bit RGB output */ +#ifndef NES_NTSC_OUT_DEPTH + #define NES_NTSC_OUT_DEPTH 16 +#endif + +#include + +#if NES_NTSC_OUT_DEPTH > 16 + #if UINT_MAX == 0xFFFFFFFF + typedef unsigned int nes_ntsc_out_t; + #elif ULONG_MAX == 0xFFFFFFFF + typedef unsigned long nes_ntsc_out_t; + #else + #error "Need 32-bit int type" + #endif +#else + #if USHRT_MAX == 0xFFFF + typedef unsigned short nes_ntsc_out_t; + #else + #error "Need 16-bit int type" + #endif +#endif + +/* useful if you have a linker which doesn't remove unused code from executable */ +#ifndef NES_NTSC_NO_BLITTERS + +/* Use this as a starting point for writing your own blitter. To allow easy upgrades +to new versions of this library, put your blitter in a separate source file rather +than modifying this one directly. */ + +void nes_ntsc_blit( nes_ntsc_t const* ntsc, unsigned char const* nes_in, + long in_row_width, int burst_phase, int in_width, int in_height, + void* rgb_out, long out_pitch ) +{ + int chunk_count = (in_width - 1) / nes_ntsc_in_chunk; + for ( ; in_height; --in_height ) + { + /* begin row and read first input pixel */ + unsigned char const* line_in = nes_in; + NES_NTSC_BEGIN_ROW( ntsc, burst_phase, + nes_ntsc_black, nes_ntsc_black, *line_in++ & 0x3F ); + nes_ntsc_out_t* restrict line_out = (nes_ntsc_out_t*) rgb_out; + int n; + + /* blit main chunks, each using 3 input pixels to generate 7 output pixels */ + for ( n = chunk_count; n; --n ) + { + /* order of input and output pixels must not be altered */ + NES_NTSC_COLOR_IN( 0, line_in [0] & 0x3F ); + NES_NTSC_RGB_OUT( 0, line_out [0], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 1, line_out [1], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 1, line_in [1] & 0x3F ); + NES_NTSC_RGB_OUT( 2, line_out [2], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 3, line_out [3], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 2, line_in [2] & 0x3F ); + NES_NTSC_RGB_OUT( 4, line_out [4], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 5, line_out [5], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 6, line_out [6], NES_NTSC_OUT_DEPTH ); + + line_in += 3; + line_out += 7; + } + + /* you can eliminate the need for the final chunk below by padding + input with three extra black pixels at the end of each row */ + + /* finish final pixels without starting any new ones */ + NES_NTSC_COLOR_IN( 0, nes_ntsc_black ); + NES_NTSC_RGB_OUT( 0, line_out [0], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 1, line_out [1], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 1, nes_ntsc_black ); + NES_NTSC_RGB_OUT( 2, line_out [2], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 3, line_out [3], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 2, nes_ntsc_black ); + NES_NTSC_RGB_OUT( 4, line_out [4], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 5, line_out [5], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 6, line_out [6], NES_NTSC_OUT_DEPTH ); + + /* advance burst phase and line pointers */ + burst_phase = (burst_phase + 1) % nes_ntsc_burst_count; + nes_in += in_row_width; + rgb_out = (char*) rgb_out + out_pitch; + } +} + +void nes_ntsc_blit_emph( nes_ntsc_emph_t const* ntsc, unsigned short const* nes_in, + long in_row_width, int burst_phase, int in_width, int height, + void* rgb_out, long out_pitch ) +{ + /* see comments in nes_ntsc_blit */ + int chunk_count = (in_width - 1) / nes_ntsc_in_chunk; + for ( ; height; --height ) + { + unsigned short const* line_in = nes_in; + NES_NTSC_BEGIN_ROW( ntsc, burst_phase, + nes_ntsc_black, nes_ntsc_black, *line_in++ & 0x1FF ); + nes_ntsc_out_t* restrict line_out = (nes_ntsc_out_t*) rgb_out; + int n; + + for ( n = chunk_count; n; --n ) + { + NES_NTSC_COLOR_IN( 0, line_in [0] & 0x1FF ); + NES_NTSC_RGB_OUT( 0, line_out [0], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 1, line_out [1], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 1, line_in [1] & 0x1FF ); + NES_NTSC_RGB_OUT( 2, line_out [2], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 3, line_out [3], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 2, line_in [2] & 0x1FF ); + NES_NTSC_RGB_OUT( 4, line_out [4], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 5, line_out [5], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 6, line_out [6], NES_NTSC_OUT_DEPTH ); + + line_in += 3; + line_out += 7; + } + + NES_NTSC_COLOR_IN( 0, nes_ntsc_black ); + NES_NTSC_RGB_OUT( 0, line_out [0], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 1, line_out [1], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 1, nes_ntsc_black ); + NES_NTSC_RGB_OUT( 2, line_out [2], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 3, line_out [3], NES_NTSC_OUT_DEPTH ); + + NES_NTSC_COLOR_IN( 2, nes_ntsc_black ); + NES_NTSC_RGB_OUT( 4, line_out [4], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 5, line_out [5], NES_NTSC_OUT_DEPTH ); + NES_NTSC_RGB_OUT( 6, line_out [6], NES_NTSC_OUT_DEPTH ); + + burst_phase = (burst_phase + 1) % nes_ntsc_burst_count; + nes_in += in_row_width; + rgb_out = (char*) rgb_out + out_pitch; + } +} + +#endif + diff --git a/libmednahawk/src/nes/ntsc/nes_ntsc.h b/libmednahawk/src/nes/ntsc/nes_ntsc.h new file mode 100644 index 0000000000..18432cd04d --- /dev/null +++ b/libmednahawk/src/nes/ntsc/nes_ntsc.h @@ -0,0 +1,170 @@ + +/* NES NTSC composite video to RGB emulator/blitter */ + +/* nes_ntsc 0.2.0 */ + +#ifndef NES_NTSC_H +#define NES_NTSC_H + +/* Image parameters, ranging from -1.0 to 1.0 */ +typedef struct nes_ntsc_setup_t +{ + /* Basic parameters */ + double hue; /* -1 = -180 degrees, +1 = +180 degrees */ + double saturation; /* -1 = grayscale, +1 = oversaturated colors */ + double contrast; + double brightness; + double sharpness; /* edge contrast enhancement/blurring */ + + /* Advanced parameters */ + double gamma; + double resolution; /* image resolution */ + double artifacts; /* artifacts caused by color changes */ + double fringing; /* color artifacts caused by brightness changes */ + double bleed; /* color bleed (color resolution reduction) */ + double hue_warping;/* -1 = expand purple & green, +1 = expand orange & cyan */ + int merge_fields; /* if 1, merges even and odd fields together to reduce flicker */ + float const* decoder_matrix; /* optional RGB decoder matrix, 6 elements */ + + unsigned char* palette_out; /* optional RGB palette out, 3 bytes per color */ +} nes_ntsc_setup_t; + +/* Video format presets */ +extern nes_ntsc_setup_t const nes_ntsc_composite; /* color bleeding + artifacts */ +extern nes_ntsc_setup_t const nes_ntsc_svideo; /* color bleeding only */ +extern nes_ntsc_setup_t const nes_ntsc_rgb; /* crisp image */ +extern nes_ntsc_setup_t const nes_ntsc_monochrome;/* desaturated + artifacts */ + +enum { nes_ntsc_palette_size = 64 }; +enum { nes_ntsc_emph_palette_size = 64 * 8 }; + +/* Initialize and adjust parameters. Can be called multiple times on the same +nes_ntsc_t object. Caller must allocate memory for nes_ntsc_t. Can pass 0 +for either parameter. */ +typedef struct nes_ntsc_t nes_ntsc_t; +void nes_ntsc_init( nes_ntsc_t* ntsc, nes_ntsc_setup_t const* setup ); + +/* Blit one or more rows of pixels. Input pixels are 6-bit palette indicies. +In_row_width is the number of pixels to get to the next input row. Out_pitch +is the number of *bytes* to get to the next output row. Output pixel format +is set by NES_NTSC_OUT_DEPTH (defaults to 16-bit RGB). */ +void nes_ntsc_blit( nes_ntsc_t const* ntsc, unsigned char const* nes_in, + long in_row_width, int burst_phase, int in_width, int in_height, + void* rgb_out, long out_pitch ); + +/* Equivalent functions with color emphasis support. Source pixels are +9-bit values with the upper 3 bits specifying the emphasis bits from 0x2001. */ +typedef struct nes_ntsc_emph_t nes_ntsc_emph_t; +void nes_ntsc_init_emph( nes_ntsc_emph_t* ntsc, nes_ntsc_setup_t const* setup ); +void nes_ntsc_blit_emph( nes_ntsc_emph_t const* ntsc, unsigned short const* nes_in, + long in_row_width, int burst_phase, int in_width, int in_height, + void* rgb_out, long out_pitch ); + +/* Number of output pixels written by blitter for given input width. Width might +be rounded down slightly; use NES_NTSC_IN_WIDTH() on result to find rounded +value. Guaranteed not to round 256 down at all. */ +#define NES_NTSC_OUT_WIDTH( in_width ) \ + (((in_width) - 1) / nes_ntsc_in_chunk * nes_ntsc_out_chunk + nes_ntsc_out_chunk) + +/* Number of input pixels that will fit within given output width. Might be +rounded down slightly; use NES_NTSC_OUT_WIDTH() on result to find rounded +value. */ +#define NES_NTSC_IN_WIDTH( out_width ) \ + ((out_width) / nes_ntsc_out_chunk * nes_ntsc_in_chunk - nes_ntsc_in_chunk + 1) + + +/* Interface for user-defined custom blitters. +Can be used with nes_ntsc_t and nes_ntsc_emph_t */ + +enum { nes_ntsc_in_chunk = 3 }; /* number of input pixels read per chunk */ +enum { nes_ntsc_out_chunk = 7 }; /* number of output pixels generated per chunk */ +enum { nes_ntsc_black = 15 }; /* palette index for black */ +enum { nes_ntsc_burst_count = 3 }; /* burst phase cycles through 0, 1, and 2 */ + +/* Begin outputting row and start three pixels. First pixel will be cut off a bit. +Use nes_ntsc_black for unused pixels. Declares variables, so must be before first +statement in a block (unless you're using C++). */ +#define NES_NTSC_BEGIN_ROW( ntsc, burst, pixel0, pixel1, pixel2 ) \ + char const* ktable = (char*) (ntsc)->table + burst * (nes_ntsc_burst_size * sizeof (ntsc_rgb_t));\ + ntsc_rgb_t const* kernel0 = NES_NTSC_ENTRY_( pixel0 );\ + ntsc_rgb_t const* kernel1 = NES_NTSC_ENTRY_( pixel1 );\ + ntsc_rgb_t const* kernel2 = NES_NTSC_ENTRY_( pixel2 );\ + ntsc_rgb_t const* kernelx0;\ + ntsc_rgb_t const* kernelx1 = kernel0;\ + ntsc_rgb_t const* kernelx2 = kernel0 + +/* Begin input pixel */ +#define NES_NTSC_COLOR_IN( in_index, color_in ) {\ + kernelx##in_index = kernel##in_index;\ + kernel##in_index = NES_NTSC_ENTRY_( color_in );\ +} + +/* Generate output pixel. Bits can be 24, 16, 15, or 32 (treated as 24): +24: RRRRRRRR GGGGGGGG BBBBBBBB +16: RRRRRGGG GGGBBBBB +15: RRRRRGG GGGBBBBB + 0: xxxRRRRR RRRxxGGG GGGGGxxB BBBBBBBx (raw format; x = junk bits) */ +#define NES_NTSC_RGB_OUT( x, rgb_out, bits ) {\ + ntsc_rgb_t raw =\ + kernel0 [x ] + kernel1 [(x+12)%7+14] + kernel2 [(x+10)%7+28] +\ + kernelx0 [(x+7)%14] + kernelx1 [(x+ 5)%7+21] + kernelx2 [(x+ 3)%7+35];\ + NES_NTSC_CLAMP_( raw );\ + if ( bits == 16 )\ + rgb_out = (raw >> 13 & 0xF800) | (raw >> 8 & 0x07E0) | (raw >> 4 & 0x001F);\ + else if ( bits == 24 || bits == 32 )\ + rgb_out = (raw >> 5 & 0xFF0000) | (raw >> 3 & 0xFF00) | (raw >> 1 & 0xFF);\ + else if ( bits == 15 )\ + rgb_out = (raw >> 14 & 0x7C00) | (raw >> 9 & 0x03E0) | (raw >> 4 & 0x001F);\ + else\ + rgb_out = raw;\ +} + + +/* private */ + +enum { nes_ntsc_entry_size = 128 }; +typedef unsigned long ntsc_rgb_t; +struct nes_ntsc_t { + ntsc_rgb_t table [nes_ntsc_palette_size * nes_ntsc_entry_size]; +}; +struct nes_ntsc_emph_t { + ntsc_rgb_t table [nes_ntsc_emph_palette_size * nes_ntsc_entry_size]; +}; +enum { nes_ntsc_burst_size = nes_ntsc_entry_size / nes_ntsc_burst_count }; + +enum { ntsc_rgb_builder = (1L << 21) | (1 << 11) | (1 << 1) }; +enum { nes_ntsc_clamp_mask = ntsc_rgb_builder * 3 / 2 }; +enum { nes_ntsc_clamp_add = ntsc_rgb_builder * 0x101 }; + +#define NES_NTSC_ENTRY_( n ) \ + (ntsc_rgb_t*) (ktable + (n) * (nes_ntsc_entry_size * sizeof (ntsc_rgb_t))) + +#define NES_NTSC_CLAMP_( io ) {\ + ntsc_rgb_t sub = io >> 9 & nes_ntsc_clamp_mask;\ + ntsc_rgb_t clamp = nes_ntsc_clamp_add - sub;\ + io |= clamp;\ + clamp -= sub;\ + io &= clamp;\ +} + +/* deprecated */ +#define NES_NTSC_RGB24_OUT( x, out ) NES_NTSC_RGB_OUT( x, out, 24 ) +#define NES_NTSC_RGB16_OUT( x, out ) NES_NTSC_RGB_OUT( x, out, 16 ) +#define NES_NTSC_RGB15_OUT( x, out ) NES_NTSC_RGB_OUT( x, out, 15 ) +#define NES_NTSC_RAW_OUT( x, out ) NES_NTSC_RGB_OUT( x, out, 0 ) + +enum { nes_ntsc_min_in_width = 256 }; +enum { nes_ntsc_min_out_width = NES_NTSC_OUT_WIDTH( nes_ntsc_min_in_width ) }; + +enum { nes_ntsc_640_in_width = 271 }; +enum { nes_ntsc_640_out_width = NES_NTSC_OUT_WIDTH( nes_ntsc_640_in_width ) }; +enum { nes_ntsc_640_overscan_left = 8 }; +enum { nes_ntsc_640_overscan_right = nes_ntsc_640_in_width - 256 - nes_ntsc_640_overscan_left }; + +enum { nes_ntsc_full_in_width = 283 }; +enum { nes_ntsc_full_out_width = NES_NTSC_OUT_WIDTH( nes_ntsc_full_in_width ) }; +enum { nes_ntsc_full_overscan_left = 16 }; +enum { nes_ntsc_full_overscan_right = nes_ntsc_full_in_width - 256 - nes_ntsc_full_overscan_left }; + +#endif + diff --git a/libmednahawk/src/nes/ntsc/nes_ntsc.txt b/libmednahawk/src/nes/ntsc/nes_ntsc.txt new file mode 100644 index 0000000000..3550ea2637 --- /dev/null +++ b/libmednahawk/src/nes/ntsc/nes_ntsc.txt @@ -0,0 +1,232 @@ +nes_ntsc 0.2.0: NES NTSC Video Filter +------------------------------------- +Author : Shay Green +Website : http://www.slack.net/~ant/ +Forum : http://groups.google.com/group/blargg-sound-libs +License : GNU Lesser General Public License (LGPL) +Language: C or C++ + + +Overview +-------- +To perform NTSC filtering, first allocate memory for a nes_ntsc_t object +and call nes_ntsc_init(), then call nes_ntsc_blit() to perform +filtering. You can call nes_ntsc_init() at any time to change image +parameters. + +Nes_ntsc_blit() reads NES pixels and writes RGB pixels (16-bit by +default). The NES pixels are raw palette values (0 to 0x3F) stored in +the 8-bit unsigned char type. If your emulator outputs RGB pixels and +can't easily be made to output raw NES palette indicies, use my +snes_ntsc library instead, which accepts 16-bit RGB pixels and will +produce the same result as this library. If you use snes_ntsc, read the +burst phase section below since it still applies. + +For support of the three color emphasis bits at the top of PPU register +0x2001, use nes_ntsc_emph_t, nes_ntsc_init_emph(), and +nes_ntsc_blit_emph(). Input pixels must be stored in the 16-bit unsigned +short type to allow for the three emphasis bits stored just above the +6-bit palette index (9 bits per pixel): + + index = (ppu_2001 << 1 & 0x1C0) | (palette_index & 0x3F). + + +RGB Palette Generation +---------------------- +An RGB palette can be generated for use in a normal blitter, either 64 +colors (192 bytes) or including all 8 color emphasis combinations to +result in 512 colors (1536 bytes). The 64-color version matches the +format of the common NES .pal file. In your nes_ntsc_setup_t structure, +point palette_out to a buffer to hold the palette, then call +nes_ntsc_init() (nes_ntsc_init_emph() for the 512-color version). If you +only need the palette and aren't going to be using the NTSC filter, pass +0 for the first parameter. + + +Image Parameters +---------------- +Many image parameters can be adjusted and presets are provided for +composite video, S-video, RGB, and monochrome. Most are floating-point +values with a general range of -1.0 to 1.0, where 0 is normal. The +ranges are adjusted so that one parameter at an extreme (-1 or +1) and +the rest at zero shouldn't result in any internal overflow (garbage +pixels). Setting multiple parameters to their extreme can produce +garbage. Put another way, the state space defined by all parameters +within the range -1 to +1 is not fully usable, but some extreme corners +are very useful so I don't want to reduce the parameter ranges. + +The sharpness and resolution parameters have similar effects. Resolution +affects how crisp pixels are. Sharpness merely enhances the edges by +increasing contrast, which makes things brighter at the edges. Artifacts +sets how much "junk" is around the edges where colors and brightness +change in the image, where -1 completely eliminates them. (Color) bleed +affects how much colors blend together and the artifact colors at the +edges of pixels surrounded by black. (Color) fringing affects how much +color fringing occurs around the edges of bright objects, especially +white text on a black background. + + +Image Size +---------- +Use the NES_NTSC_OUT_WIDTH() and NES_NTSC_IN_WIDTH() macros to convert +between input and output widths that the blitter uses. For example, if +you are blitting an image 256 pixels wide, use NES_NTSC_OUT_WIDTH( 256 ) +to find out how many output pixels are written per row. Another example, +use NES_NTSC_IN_WIDTH( 640 ) to find how many input pixels will fit +within 640 output pixels. The blitter rounds the input width down in +some cases, so the requested width might not be possible. Use +NES_NTSC_IN_WIDTH( NES_NTSC_OUT_WIDTH( in_width ) ) to find what a given +in_width would be rounded down to. + +For proper aspect ratio, the image generated by the library should be +doubled vertically. This can be done in software, as the demo does, done +in a custom blitter for more efficiency (see below), or using a modern +video card's hardware rescaling. On a TV pixels never have crisp edges, +so simply doubling scanlines doesn't give a very authentic image. I've +found reducing the doubled scanline's brightness to 75% looks +significantly better without darkening the image much. To drop +brightness to 75%, calculate 25% brightness using simple bit shifting +and masking, then subtract this from the original. + + +RGB Format +---------- +By default, the blitters output 16-bit RGB pixels. To use a different +format, #define NES_NTSC_OUT_DEPTH to 15, 16, 24, or 32 (same as 24). +You can specify this either in the compiler command-line options + + -DNES_NTSC_OUT_DEPTH=32 + +or by wrapping nes_ntsc.c with your own source file and using this in +place of nes_ntsc.c. + + /* my_nes_ntsc.c */ + #define NES_NTSC_OUT_DEPTH 32 + #include "nes_ntsc.c" + + +Burst Phase +----------- +The burst_phase parameter to nes_ntsc_blit() should generally toggle +values between frames, i.e. 0 on first call to nes_ntsc_blit(), 1 on +second call, 0 on third call, 1 on fourth, etc. If merge_fields is +enabled (see below), you should always pass 0. Read further for more +detailed operation. + +If you're using nes_ntsc_blit() to do partial screen updates, +burst_phase should be calculated as (burst_phase + row) % 3, where row +is the starting row (0 through 239). For example, if burst_phase is 1 +for the current frame and you make two calls to nes_ntsc_blit() to blit +rows 0 to 100, then rows 101 to 239, for the first call you should pass +1 for burst_phase, and for the second call you should pass 0 for +burst_phase: (1 + 101) % 3 = 0. + +For more accurate burst_phase operation, it should be adjusted at the +beginning of a frame based on the length of scanline 20: if 341 clocks +(normal), burst_phase = (burst_phase + 1) % 3, otherwise burst_phase = +(burst_phase + 2) % 3 (for shorter 340 clock scanline). + +The included test ROMs verify proper burst_phase implementation. They +must pass in order; an earlier failing test means that later tests will +give meaningless results. The first two tests will pass with either +method of burst_phase handling described above; the third will only pass +with the more accurate handling. The tests flash sets of dots quickly +with the dot color being the only important aspect. + +1.line_phase.nes - Tests for proper burst_phase on each scanline. All +dots on screen should be the same color. + +2.frame_phase.nes - Tests for proper burst_phase toggling between +frames. Each row of dots should alternate between the same two colors +(if merge_fields is set to 1, they should all be the same color). + +3.special_frame_phase.nes - Tests for proper burst_phase incrementing +between frames when $2001 rendering is enabled late in the frame. Each +rectangle of dots should be one color, and there should be three +different colors of rectangles (if merge_fields is set to 1, each +rectangle should be made of three colors of dots). There is a visual +glitch near the top of the screen for the first line of dots; this is +unrelated the test and should be ignored. + + +Flickering +---------- +The displayed image toggles between two different pixel artifact +patterns at a steady rate, making it appear stable. For an emulator to +duplicate this effect, its frame rate must match the host monitor's +refresh rate, it must be synchronizing to the refresh (vsync), and it +must not be skipping any frames. If any of these don't hold, the image +will probably flicker much more than it would on a TV. It is important +that you play around with these factors to get a good feel for the +issue, and document it clearly for end-users, otherwise they will have +difficulty getting an authentic image. + +The library includes a partial workaround for this issue, for the cases +where all the conditions can't be met. When merge_fields is set to 1, +nes_ntsc_blit() does the equivalent of blitting the image twice with the +two different phases and then mixes them together, but without any +performance impact. The result is similar to what you'd see if the +monitor's refresh rate were the same as the emulator's. It does reduce +the shimmer effect when scrolling, so it's not a complete solution to +the refresh rate issue. + +The merge_fields option is also useful when taking a screenshot. If you +capture without merge_fields set to 1, you'll only get the even or odd +artifacts, which will make the image look more grainy than when the +emulator is running. Again, play around with this to get an idea of the +difference. It might be best to simply allow the user to choose when to +enable this option. + +Note that when you have merge_fields set to 1, you should always pass 0 +for the burst_phase parameter to nes_ntsc_blit(). If you don't, you'll +still get some flicker. + + +Custom Blitter +-------------- +You can write your own blitter, allowing customization of how NES pixels +are obtained (you might want to run through a palette first), the format +of output pixels (15, 16, or 32-bit RGB), optimizations for your +platform, and additional effects like efficient scanline doubling during +blitting. + +Macros are included in nes_ntsc.h for writing your blitter so that your +code can be carried over without changes to improved versions of the +library. The default blitters at the end of nes_ntsc.c show how to use +the macros. For an example of a flexible blitter written in C++ and +optimized for the x86 architecture, refer to Nestopia 1.28's +NstVideoFilterNtsc.hpp. + +NES_NTSC_BEGIN_ROW macro allows starting up to three pixels. The first +pixel is cut off; its use is in specifying a background color other than +black for the sliver on the left edge. The next two pixels can be used +to handle the extra one or two pixels not handled by the main chunks of +three pixels. For example if you want to blit 257 NES pixels on a row +(for whatever odd reason), you would start the first two with +NES_NTSC_BEGIN_ROW( ... nes_ntsc_black, nes_in [0], nes_in [1] ), then +do the remaining 255 in chunks of three (255 / 3 = 85.0). + + +Limitations +----------- +The library's horizontal rescaling is too wide by about 3% in order to +allow a much more optimal implementation. This means that a 256 pixel +wide NES image should appear as 581 output pixels, but with this library +appears as 602 output pixels. TV aspect ratios probably vary by this +much anyway. If you really need unscaled output, contact me and I'll see +about adding it. + + +Thanks +------ +Thanks to NewRisingSun for his original code, which was a starting point +for me learning about NTSC video and decoding. Thanks to the Nesdev +forum for feedback and encouragement. Thanks to byuu (bsnes author) and +pagefault (ZSNES team) for integrating a SNES version of this in their +emulators. Thanks to Martin Freij (Nestopia author) for using an earlier +development version in Nestopia and for feedback about the custom +blitter interface. Thanks to Charles MacDonald for feedback on the SMS +version's interface. + +-- +Shay Green diff --git a/libmednahawk/src/nes/ntsc/readme.txt b/libmednahawk/src/nes/ntsc/readme.txt new file mode 100644 index 0000000000..84ec71a8f3 --- /dev/null +++ b/libmednahawk/src/nes/ntsc/readme.txt @@ -0,0 +1,68 @@ +nes_ntsc 0.2.0: NES NTSC Video Filter +------------------------------------- +Nes_ntsc emulates NES NTSC video output, allowing an authentic image in an +emulator. It uses a highly optimized algorithm to perform the same signal +processing as an NTSC decoder in a TV, giving very similar pixel artifacts. The +usual TV picture controls can be adjusted: hue (tint), saturation, contrast, +brightness, and sharpness. Additionally, the amount of NTSC chroma and luma +artifacts can be adjusted, allowing an image that corresponds to composite +video (lots of artifacts), S-video (color bleeding only), RGB (clean pixels), +or anywhere inbetween. + +The output is scaled to the proper horizontal width, leaving it up the emulator +to simply double the height. An optional even/odd field merging feature is +included to help when the host display's refresh rate doesn't match the +emulator's frame rate. Custom blitters can be written using a special +interface, allowing output in other pixel formats and efficient scanline +doubling as a part of blitting. + +Blitting a 256x240 source image to a 602x240 pixel 16-bit RGB memory buffer at +60 frames per second uses 8% CPU on a 2.0 GHz Athlon 3500+ and 40% CPU on a +10-year-old 400 MHz G3 PowerMac. + +Feedback about the interface and usability would be helpful. + +Author : Shay Green +Website : http://www.slack.net/~ant/ +Forum : http://groups.google.com/group/blargg-sound-libs +License : GNU Lesser General Public License (LGPL) +Language: C or C++ + + +Getting Started +--------------- +Build a program consisting of demo.c, nes_ntsc.c, and the SDL multimedia +library (see http://libsdl.org/). Running the program with "nes.raw" in the +same directory should show an image as it would look on a TV, with mouse +control of two picture parameters. + +A simple benchmark program is included to allow measuring the frame rate and +how much CPU time the blitter would use running at 60 frames per second. This +is useful for getting an idea of whether this library will be usable in your +emulator, and for improving the performance of a custom blitter. + +If you're using C++, to avoid linking issues rename nes_ntsc.c to nes_ntsc.cpp +(this causes compilation in C++ rather than C). + +See nes_ntsc.txt for more information, and respective header (.h) files for +reference. Post to the discussion forum for assistance. + + +Files +----- +readme.txt Essential information +nes_ntsc.txt Library documentation +changes.txt Changes since previous releases +LGPL.txt GNU Lesser General Public License + +demo.c Loads raw image and displays on screen using SDL +nes.raw Raw image for demo +benchmark.c Measures frame rate and CPU usage of blitter + +nes_ntsc.h Library header and source +nes_ntsc.c + +tests/ Test ROMs to verify burst phase operation + +-- +Shay Green diff --git a/libmednahawk/src/nes/ops.h b/libmednahawk/src/nes/ops.h new file mode 100644 index 0000000000..311eab8704 --- /dev/null +++ b/libmednahawk/src/nes/ops.h @@ -0,0 +1,491 @@ +/* Mednafen - NES/Famicom Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +case 0x00: /* BRK */ + _PC++; + PUSH(_PC>>8); + PUSH(_PC); + PUSH(_P|U_FLAG|B_FLAG); + _P|=I_FLAG; + _PI|=I_FLAG; + _PC=RdMem(0xFFFE); + _PC|=RdMem(0xFFFF)<<8; + ADDBT(_PC); + break; + +case 0x40: /* RTI */ + _P=POP(); + /* _PI=_P; This is probably incorrect, so it's commented out. */ + _PI = _P; + _PC=POP(); + _PC|=POP()<<8; + ADDBT(_PC); + break; + +case 0x60: /* RTS */ + _PC=POP(); + _PC|=POP()<<8; + _PC++; + ADDBT(_PC); + break; + +case 0x48: /* PHA */ + PUSH(_A); + break; +case 0x08: /* PHP */ + PUSH(_P|U_FLAG|B_FLAG); + break; +case 0x68: /* PLA */ + _A=POP(); + X_ZN(_A); + break; +case 0x28: /* PLP */ + _P=POP(); + break; +case 0x4C: + { + uint16 ptmp=_PC; + unsigned int npc; + + npc=RdMem(ptmp); + ptmp++; + npc|=RdMem(ptmp)<<8; + _PC=npc; + ADDBT(_PC); + } + break; /* JMP ABSOLUTE */ +case 0x6C: + { + uint32 tmp; + GetAB(tmp); + _PC=RdMem(tmp); + _PC|=RdMem( ((tmp+1)&0x00FF) | (tmp&0xFF00))<<8; + ADDBT(_PC); + } + break; +case 0x20: /* JSR */ + { + uint8 npc; + npc=RdMem(_PC); + _PC++; + PUSH(_PC>>8); + PUSH(_PC); + _PC=RdMem(_PC)<<8; + _PC|=npc; + ADDBT(_PC); + } + break; + +case 0xAA: /* TAX */ + _X=_A; + X_ZN(_A); + break; + +case 0x8A: /* TXA */ + _A=_X; + X_ZN(_A); + break; + +case 0xA8: /* TAY */ + _Y=_A; + X_ZN(_A); + break; +case 0x98: /* TYA */ + _A=_Y; + X_ZN(_A); + break; + +case 0xBA: /* TSX */ + _X=_S; + X_ZN(_X); + break; +case 0x9A: /* TXS */ + _S=_X; + break; + +case 0xCA: /* DEX */ + _X--; + X_ZN(_X); + break; +case 0x88: /* DEY */ + _Y--; + X_ZN(_Y); + break; + +case 0xE8: /* INX */ + _X++; + X_ZN(_X); + break; +case 0xC8: /* INY */ + _Y++; + X_ZN(_Y); + break; + +case 0x18: /* CLC */ + _P&=~C_FLAG; + break; +case 0xD8: /* CLD */ + _P&=~D_FLAG; + break; +case 0x58: /* CLI */ + _P&=~I_FLAG; + break; +case 0xB8: /* CLV */ + _P&=~V_FLAG; + break; + +case 0x38: /* SEC */ + _P|=C_FLAG; + break; +case 0xF8: /* SED */ + _P|=D_FLAG; + break; +case 0x78: /* SEI */ + _P|=I_FLAG; + break; + +case 0xEA: /* NOP */ + break; + +case 0x0A: RMW_A(ASL); +case 0x06: RMW_ZP(ASL); +case 0x16: RMW_ZPX(ASL); +case 0x0E: RMW_AB(ASL); +case 0x1E: RMW_ABX(ASL); + +case 0xC6: RMW_ZP(DEC); +case 0xD6: RMW_ZPX(DEC); +case 0xCE: RMW_AB(DEC); +case 0xDE: RMW_ABX(DEC); + +case 0xE6: RMW_ZP(INC); +case 0xF6: RMW_ZPX(INC); +case 0xEE: RMW_AB(INC); +case 0xFE: RMW_ABX(INC); + +case 0x4A: RMW_A(LSR); +case 0x46: RMW_ZP(LSR); +case 0x56: RMW_ZPX(LSR); +case 0x4E: RMW_AB(LSR); +case 0x5E: RMW_ABX(LSR); + +case 0x2A: RMW_A(ROL); +case 0x26: RMW_ZP(ROL); +case 0x36: RMW_ZPX(ROL); +case 0x2E: RMW_AB(ROL); +case 0x3E: RMW_ABX(ROL); + +case 0x6A: RMW_A(ROR); +case 0x66: RMW_ZP(ROR); +case 0x76: RMW_ZPX(ROR); +case 0x6E: RMW_AB(ROR); +case 0x7E: RMW_ABX(ROR); + +case 0x69: LD_IM(ADC); +case 0x65: LD_ZP(ADC); +case 0x75: LD_ZPX(ADC); +case 0x6D: LD_AB(ADC); +case 0x7D: LD_ABX(ADC); +case 0x79: LD_ABY(ADC); +case 0x61: LD_IX(ADC); +case 0x71: LD_IY(ADC); + +case 0x29: LD_IM(AND); +case 0x25: LD_ZP(AND); +case 0x35: LD_ZPX(AND); +case 0x2D: LD_AB(AND); +case 0x3D: LD_ABX(AND); +case 0x39: LD_ABY(AND); +case 0x21: LD_IX(AND); +case 0x31: LD_IY(AND); + +case 0x24: LD_ZP(BIT); +case 0x2C: LD_AB(BIT); + +case 0xC9: LD_IM(CMP); +case 0xC5: LD_ZP(CMP); +case 0xD5: LD_ZPX(CMP); +case 0xCD: LD_AB(CMP); +case 0xDD: LD_ABX(CMP); +case 0xD9: LD_ABY(CMP); +case 0xC1: LD_IX(CMP); +case 0xD1: LD_IY(CMP); + +case 0xE0: LD_IM(CPX); +case 0xE4: LD_ZP(CPX); +case 0xEC: LD_AB(CPX); + +case 0xC0: LD_IM(CPY); +case 0xC4: LD_ZP(CPY); +case 0xCC: LD_AB(CPY); + +case 0x49: LD_IM(EOR); +case 0x45: LD_ZP(EOR); +case 0x55: LD_ZPX(EOR); +case 0x4D: LD_AB(EOR); +case 0x5D: LD_ABX(EOR); +case 0x59: LD_ABY(EOR); +case 0x41: LD_IX(EOR); +case 0x51: LD_IY(EOR); + +case 0xA9: LD_IM(LDA); +case 0xA5: LD_ZP(LDA); +case 0xB5: LD_ZPX(LDA); +case 0xAD: LD_AB(LDA); +case 0xBD: LD_ABX(LDA); +case 0xB9: LD_ABY(LDA); +case 0xA1: LD_IX(LDA); +case 0xB1: LD_IY(LDA); + +case 0xA2: LD_IM(LDX); +case 0xA6: LD_ZP(LDX); +case 0xB6: LD_ZPY(LDX); +case 0xAE: LD_AB(LDX); +case 0xBE: LD_ABY(LDX); + +case 0xA0: LD_IM(LDY); +case 0xA4: LD_ZP(LDY); +case 0xB4: LD_ZPX(LDY); +case 0xAC: LD_AB(LDY); +case 0xBC: LD_ABX(LDY); + +case 0x09: LD_IM(ORA); +case 0x05: LD_ZP(ORA); +case 0x15: LD_ZPX(ORA); +case 0x0D: LD_AB(ORA); +case 0x1D: LD_ABX(ORA); +case 0x19: LD_ABY(ORA); +case 0x01: LD_IX(ORA); +case 0x11: LD_IY(ORA); + +case 0xEB: /* (undocumented) */ +case 0xE9: LD_IM(SBC); +case 0xE5: LD_ZP(SBC); +case 0xF5: LD_ZPX(SBC); +case 0xED: LD_AB(SBC); +case 0xFD: LD_ABX(SBC); +case 0xF9: LD_ABY(SBC); +case 0xE1: LD_IX(SBC); +case 0xF1: LD_IY(SBC); + +case 0x85: ST_ZP(_A); +case 0x95: ST_ZPX(_A); +case 0x8D: ST_AB(_A); +case 0x9D: ST_ABX(_A); +case 0x99: ST_ABY(_A); +case 0x81: ST_IX(_A); +case 0x91: ST_IY(_A); + +case 0x86: ST_ZP(_X); +case 0x96: ST_ZPY(_X); +case 0x8E: ST_AB(_X); + +case 0x84: ST_ZP(_Y); +case 0x94: ST_ZPX(_Y); +case 0x8C: ST_AB(_Y); + +/* BCC */ +case 0x90: JR(!(_P&C_FLAG)); break; + +/* BCS */ +case 0xB0: JR(_P&C_FLAG); break; + +/* BEQ */ +case 0xF0: JR(_P&Z_FLAG); break; + +/* BNE */ +case 0xD0: JR(!(_P&Z_FLAG)); break; + +/* BMI */ +case 0x30: JR(_P&N_FLAG); break; + +/* BPL */ +case 0x10: JR(!(_P&N_FLAG)); break; + +/* BVC */ +case 0x50: JR(!(_P&V_FLAG)); break; + +/* BVS */ +case 0x70: JR(_P&V_FLAG); break; + +//default: printf("Bad %02x at $%04x\n",b1,X.PC);break; +//ifdef moo +/* Here comes the undocumented instructions block. Note that this implementation + may be "wrong". If so, please tell me. +*/ + +/* AAC */ +case 0x2B: +case 0x0B: LD_IM(AND;_P&=~C_FLAG;_P|=_A>>7); + +/* AAX */ +case 0x87: ST_ZP(_A&_X); +case 0x97: ST_ZPY(_A&_X); +case 0x8F: ST_AB(_A&_X); +case 0x83: ST_IX(_A&_X); + +/* ARR - ARGH, MATEY! */ +case 0x6B: { + uint8 arrtmp; + LD_IM(AND;_P&=~V_FLAG;_P|=(_A^(_A>>1))&0x40;arrtmp=_A>>7;_A>>=1;_A|=(_P&C_FLAG)<<7;_P&=~C_FLAG;_P|=arrtmp;X_ZN(_A)); + } +/* ASR */ +case 0x4B: LD_IM(AND;LSRA); + +/* ATX(OAL) Is this(OR with $EE) correct? */ +case 0xAB: LD_IM(_A|=0xEE;AND;_X=_A); + +/* AXS */ +case 0xCB: LD_IM(AXS); + +/* DCP */ +case 0xC7: RMW_ZP(DEC;CMP); +case 0xD7: RMW_ZPX(DEC;CMP); +case 0xCF: RMW_AB(DEC;CMP); +case 0xDF: RMW_ABX(DEC;CMP); +case 0xDB: RMW_ABY(DEC;CMP); +case 0xC3: RMW_IX(DEC;CMP); +case 0xD3: RMW_IY(DEC;CMP); + +/* ISB */ +case 0xE7: RMW_ZP(INC;SBC); +case 0xF7: RMW_ZPX(INC;SBC); +case 0xEF: RMW_AB(INC;SBC); +case 0xFF: RMW_ABX(INC;SBC); +case 0xFB: RMW_ABY(INC;SBC); +case 0xE3: RMW_IX(INC;SBC); +case 0xF3: RMW_IY(INC;SBC); + +/* DOP */ + +case 0x04: _PC++;break; +case 0x14: _PC++;break; +case 0x34: _PC++;break; +case 0x44: _PC++;break; +case 0x54: _PC++;break; +case 0x64: _PC++;break; +case 0x74: _PC++;break; + +case 0x80: _PC++;break; +case 0x82: _PC++;break; +case 0x89: _PC++;break; +case 0xC2: _PC++;break; +case 0xD4: _PC++;break; +case 0xE2: _PC++;break; +case 0xF4: _PC++;break; + +/* KIL */ + +case 0x02: +case 0x12: +case 0x22: +case 0x32: +case 0x42: +case 0x52: +case 0x62: +case 0x72: +case 0x92: +case 0xB2: +case 0xD2: +case 0xF2:ADDCYC(0xFF); + _jammed=1; + _PC--; + break; + +/* LAR */ +case 0xBB: RMW_ABY(_S&=x;_A=_X=_S;X_ZN(_X)); + +/* LAX */ +case 0xA7: LD_ZP(LDA;LDX); +case 0xB7: LD_ZPY(LDA;LDX); +case 0xAF: LD_AB(LDA;LDX); +case 0xBF: LD_ABY(LDA;LDX); +case 0xA3: LD_IX(LDA;LDX); +case 0xB3: LD_IY(LDA;LDX); + +/* NOP */ +case 0x1A: +case 0x3A: +case 0x5A: +case 0x7A: +case 0xDA: +case 0xFA: break; + +/* RLA */ +case 0x27: RMW_ZP(ROL;AND); +case 0x37: RMW_ZPX(ROL;AND); +case 0x2F: RMW_AB(ROL;AND); +case 0x3F: RMW_ABX(ROL;AND); +case 0x3B: RMW_ABY(ROL;AND); +case 0x23: RMW_IX(ROL;AND); +case 0x33: RMW_IY(ROL;AND); + +/* RRA */ +case 0x67: RMW_ZP(ROR;ADC); +case 0x77: RMW_ZPX(ROR;ADC); +case 0x6F: RMW_AB(ROR;ADC); +case 0x7F: RMW_ABX(ROR;ADC); +case 0x7B: RMW_ABY(ROR;ADC); +case 0x63: RMW_IX(ROR;ADC); +case 0x73: RMW_IY(ROR;ADC); + +/* SLO */ +case 0x07: RMW_ZP(ASL;ORA); +case 0x17: RMW_ZPX(ASL;ORA); +case 0x0F: RMW_AB(ASL;ORA); +case 0x1F: RMW_ABX(ASL;ORA); +case 0x1B: RMW_ABY(ASL;ORA); +case 0x03: RMW_IX(ASL;ORA); +case 0x13: RMW_IY(ASL;ORA); + +/* SRE */ +case 0x47: RMW_ZP(LSR;EOR); +case 0x57: RMW_ZPX(LSR;EOR); +case 0x4F: RMW_AB(LSR;EOR); +case 0x5F: RMW_ABX(LSR;EOR); +case 0x5B: RMW_ABY(LSR;EOR); +case 0x43: RMW_IX(LSR;EOR); +case 0x53: RMW_IY(LSR;EOR); + +/* AXA - SHA */ +case 0x93: ST_IY(_A&_X&(((A-_Y)>>8)+1)); +case 0x9F: ST_ABY(_A&_X&(((A-_Y)>>8)+1)); + +/* SYA */ +case 0x9C: ST_ABX(_Y&(((A-_X)>>8)+1)); + +/* SXA */ +case 0x9E: ST_ABY(_X&(((A-_Y)>>8)+1)); + +/* XAS */ +case 0x9B: _S=_A&_X;ST_ABY(_S& (((A-_Y)>>8)+1) ); + +/* TOP */ +case 0x0C: LD_AB(;); +case 0x1C: +case 0x3C: +case 0x5C: +case 0x7C: +case 0xDC: +case 0xFC: LD_ABX(;); + +/* XAA - BIG QUESTION MARK HERE */ +case 0x8B: _A|=0xEE; _A&=_X; LD_IM(AND); +//endif diff --git a/libmednahawk/src/nes/ppu/Makefile.am.inc b/libmednahawk/src/nes/ppu/Makefile.am.inc new file mode 100644 index 0000000000..8fcd539276 --- /dev/null +++ b/libmednahawk/src/nes/ppu/Makefile.am.inc @@ -0,0 +1 @@ +mednafen_SOURCES += ppu/ppu.cpp ppu/palette.cpp diff --git a/libmednahawk/src/nes/ppu/fast-pputile.h b/libmednahawk/src/nes/ppu/fast-pputile.h new file mode 100644 index 0000000000..1242e80ca6 --- /dev/null +++ b/libmednahawk/src/nes/ppu/fast-pputile.h @@ -0,0 +1,94 @@ + uint8 *C; + register uint8 cc; + uint32 vadr; + + #ifndef PPUT_MMC5SP + register uint8 zz; + #else + #endif + + { + uint8 *S=PALRAMCache; + uint32 pixdata; + + pixdata=ppulut1[(pshift[0]>>XOC)&0xFF] | ppulut2[(pshift[1]>>XOC)&0xFF]; + pixdata|=ppulut3[XOffset|((atlatch&0xf)<<3)]; + + P[0]=S[pixdata&0xF]; + pixdata>>=4; + P[1]=S[pixdata&0xF]; + pixdata>>=4; + P[2]=S[pixdata&0xF]; + pixdata>>=4; + P[3]=S[pixdata&0xF]; + pixdata>>=4; + P[4]=S[pixdata&0xF]; + pixdata>>=4; + P[5]=S[pixdata&0xF]; + pixdata>>=4; + P[6]=S[pixdata&0xF]; + pixdata>>=4; + P[7]=S[pixdata&0xF]; + P+=8; + } + + #ifdef PPUT_HOOK + PPU_hook(0x2000|(RefreshAddr&0xfff)); + #endif + + #ifdef PPUT_MMC5SP + vadr=(MMC5HackExNTARAMPtr[xs|(ys<<5)]<<4)+(vofs&7); + #else + zz=RefreshAddr&0x1F; + C=vnapage[(RefreshAddr>>10)&3]; + vadr=(C[RefreshAddr&0x3ff]<<4)+vofs; /* Fetch name table byte. */ + #endif + + + #ifdef PPUT_MMC5SP + cc=MMC5HackExNTARAMPtr[0x3c0+(xs>>2)+((ys&0x1C)<<1)]; + cc=((cc >> ((xs&2) + ((ys&0x2)<<1))) &3); + #else + #ifdef PPUT_MMC5CHR1 + cc=(MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff] & 0xC0)>>6; + #else + cc=C[0x3c0+(zz>>2)+((RefreshAddr&0x380)>>4)]; /* Fetch attribute table byte. */ + cc=((cc >> ((zz&2) + ((RefreshAddr&0x40)>>4))) &3); + #endif + #endif + + atlatch|=cc<<4; + + #ifdef PPUT_MMC5SP + C = MMC5HackVROMPTR+vadr; + C += ((MMC5HackSPPage & 0x3f & MMC5HackVROMMask) << 12); + #else + #ifdef PPUT_MMC5CHR1 + C = MMC5HackVROMPTR; + C += (((MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]) & 0x3f & MMC5HackVROMMask) << 12) + (vadr & 0xfff); + #elif defined(PPUT_MMC5) + C=MMC5BGVRAMADR(vadr); + #else + C = VRAMADR(vadr); + #endif + #endif + + #ifdef PPUT_HOOK + PPU_hook(vadr | 8); + #endif + + pshift[0]|=C[0]; + pshift[1]|=C[8]; + + pshift[0]<<=8; + pshift[1]<<=8; + atlatch >>= 2; + if((RefreshAddr&0x1f)==0x1f) + RefreshAddr^=0x41F; + else + RefreshAddr++; + + #ifdef PPUT_HOOK + PPU_hook(0x2000|(RefreshAddr&0xfff)); + #endif + diff --git a/libmednahawk/src/nes/ppu/palette.cpp b/libmednahawk/src/nes/ppu/palette.cpp new file mode 100644 index 0000000000..6d037a380d --- /dev/null +++ b/libmednahawk/src/nes/ppu/palette.cpp @@ -0,0 +1,131 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002,2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../nes.h" +#include +#include "palette.h" + +static const MDFNPalStruct rp2c04_0001[64] = { + #include "palettes/rp2c04-0001.h" +}; + +static const MDFNPalStruct rp2c04_0002[64] = { + #include "palettes/rp2c04-0002.h" +}; + +static const MDFNPalStruct rp2c04_0003[64] = { + #include "palettes/rp2c04-0003.h" +}; + +static const MDFNPalStruct rp2c04_0004[64] = { + #include "palettes/rp2c04-0004.h" +}; + +static const MDFNPalStruct rp2c0x[64] = { + #include "palettes/rp2c0x.h" +}; + +/* Default palette */ +static const MDFNPalStruct default_palette[64] = { + #include "palettes/default.h" +}; + + +MDFNPalStruct ActiveNESPalette[0x200]; + +static const char *pal_altnames[6] = { NULL, "rp2c04-0001", "rp2c04-0002", "rp2c04-0003", "rp2c04-0004", "rp2c0x" }; +static const MDFNPalStruct *Palettes[6] = +{ + default_palette, + rp2c04_0001, + rp2c04_0002, + rp2c04_0003, + rp2c04_0004, + rp2c0x +}; + +static bool LoadCPalette(MDFNPalStruct *palette, const char *sys) +{ + uint8 ptmp[192]; + FILE *fp; + + std::string cpalette_fn = MDFN_MakeFName(MDFNMKF_PALETTE, 0, sys).c_str(); + + MDFN_printf(_("Loading custom palette from \"%s\"...\n"), cpalette_fn.c_str()); + MDFN_indent(1); + + if(!(fp = fopen(cpalette_fn.c_str(), "rb"))) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error opening file: %s\n"), ene.StrError()); + MDFN_indent(-1); + return(false); + } + + if(fread(ptmp, 1, 192, fp) != 192) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error reading file: %s\n"), feof(fp) ? _("File length is too short") : ene.StrError()); + fclose(fp); + return(false); + } + + fclose(fp); + + for(int x = 0; x < 64; x++) + { + palette[x].r = ptmp[x * 3 + 0]; + palette[x].g = ptmp[x * 3 + 1]; + palette[x].b = ptmp[x * 3 + 2]; + } + + return(true); +} + +void MDFN_InitPalette(const unsigned int which) +{ + static const double rtmul[8] = { 1, 1.239, .794, 1.019, .905, 1.023, .741, .75 }; + static const double gtmul[8] = { 1, .915, 1.086, .98, 1.026, .908, .987, .75 }; + static const double btmul[8] = { 1, .743, .882, .653, 1.277, .979, .101, .75 }; + MDFNPalStruct custom_palette[64]; + const MDFNPalStruct *palette = Palettes[which]; + + if(LoadCPalette(custom_palette, pal_altnames[which])) + palette = custom_palette; + + for(int x = 0; x < 0x200; x++) + { + int emp = which ? 0 : (x >> 6); + int r = (int)(rtmul[emp] * palette[x & 0x3F].r); + int g = (int)(gtmul[emp] * palette[x & 0x3F].g); + int b = (int)(btmul[emp] * palette[x & 0x3F].b); + + if(r > 255) r = 255; + if(g > 255) g = 255; + if(b > 255) b = 255; + + ActiveNESPalette[x].r = r; + ActiveNESPalette[x].g = g; + ActiveNESPalette[x].b = b; + } +} + diff --git a/libmednahawk/src/nes/ppu/palette.h b/libmednahawk/src/nes/ppu/palette.h new file mode 100644 index 0000000000..16e708f5a8 --- /dev/null +++ b/libmednahawk/src/nes/ppu/palette.h @@ -0,0 +1,12 @@ +#ifndef _PPU_PALETTEH +#define _PPU_PALETTEH + +typedef struct { + uint8 r,g,b; +} MDFNPalStruct; + +extern MDFNPalStruct ActiveNESPalette[0x200]; + +void MDFN_InitPalette(const unsigned int which); + +#endif diff --git a/libmednahawk/src/nes/ppu/palettes/default.h b/libmednahawk/src/nes/ppu/palettes/default.h new file mode 100644 index 0000000000..b1f28c5b20 --- /dev/null +++ b/libmednahawk/src/nes/ppu/palettes/default.h @@ -0,0 +1,64 @@ + { 0x1D<<2, 0x1D<<2, 0x1D<<2 }, /* Value 0 */ + { 0x09<<2, 0x06<<2, 0x23<<2 }, /* Value 1 */ + { 0x00<<2, 0x00<<2, 0x2A<<2 }, /* Value 2 */ + { 0x11<<2, 0x00<<2, 0x27<<2 }, /* Value 3 */ + { 0x23<<2, 0x00<<2, 0x1D<<2 }, /* Value 4 */ + { 0x2A<<2, 0x00<<2, 0x04<<2 }, /* Value 5 */ + { 0x29<<2, 0x00<<2, 0x00<<2 }, /* Value 6 */ + { 0x1F<<2, 0x02<<2, 0x00<<2 }, /* Value 7 */ + { 0x10<<2, 0x0B<<2, 0x00<<2 }, /* Value 8 */ + { 0x00<<2, 0x11<<2, 0x00<<2 }, /* Value 9 */ + { 0x00<<2, 0x14<<2, 0x00<<2 }, /* Value 10 */ + { 0x00<<2, 0x0F<<2, 0x05<<2 }, /* Value 11 */ + { 0x06<<2, 0x0F<<2, 0x17<<2 }, /* Value 12 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 13 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 14 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 15 */ + { 0x2F<<2, 0x2F<<2, 0x2F<<2 }, /* Value 16 */ + { 0x00<<2, 0x1C<<2, 0x3B<<2 }, /* Value 17 */ + { 0x08<<2, 0x0E<<2, 0x3B<<2 }, /* Value 18 */ + { 0x20<<2, 0x00<<2, 0x3C<<2 }, /* Value 19 */ + { 0x2F<<2, 0x00<<2, 0x2F<<2 }, /* Value 20 */ + { 0x39<<2, 0x00<<2, 0x16<<2 }, /* Value 21 */ + { 0x36<<2, 0x0A<<2, 0x00<<2 }, /* Value 22 */ + { 0x32<<2, 0x13<<2, 0x03<<2 }, /* Value 23 */ + { 0x22<<2, 0x1C<<2, 0x00<<2 }, /* Value 24 */ + { 0x00<<2, 0x25<<2, 0x00<<2 }, /* Value 25 */ + { 0x00<<2, 0x2A<<2, 0x00<<2 }, /* Value 26 */ + { 0x00<<2, 0x24<<2, 0x0E<<2 }, /* Value 27 */ + { 0x00<<2, 0x20<<2, 0x22<<2 }, /* Value 28 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 29 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 30 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 31 */ + { 0x3F<<2, 0x3F<<2, 0x3F<<2 }, /* Value 32 */ + { 0x0F<<2, 0x2F<<2, 0x3F<<2 }, /* Value 33 */ + { 0x17<<2, 0x25<<2, 0x3F<<2 }, /* Value 34 */ + { 0x10<<2, 0x22<<2, 0x3F<<2 }, /* Value 35 */ + { 0x3D<<2, 0x1E<<2, 0x3F<<2 }, /* Value 36 */ + { 0x3F<<2, 0x1D<<2, 0x2D<<2 }, /* Value 37 */ + { 0x3F<<2, 0x1D<<2, 0x18<<2 }, /* Value 38 */ + { 0x3F<<2, 0x26<<2, 0x0E<<2 }, /* Value 39 */ + { 0x3C<<2, 0x2F<<2, 0x0F<<2 }, /* Value 40 */ + { 0x20<<2, 0x34<<2, 0x04<<2 }, /* Value 41 */ + { 0x13<<2, 0x37<<2, 0x12<<2 }, /* Value 42 */ + { 0x16<<2, 0x3E<<2, 0x26<<2 }, /* Value 43 */ + { 0x00<<2, 0x3A<<2, 0x36<<2 }, /* Value 44 */ + { 0x1E<<2, 0x1E<<2, 0x1E<<2 }, /* Value 45 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 46 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 47 */ + { 0x3F<<2, 0x3F<<2, 0x3F<<2 }, /* Value 48 */ + { 0x2A<<2, 0x39<<2, 0x3F<<2 }, /* Value 49 */ + { 0x31<<2, 0x35<<2, 0x3F<<2 }, /* Value 50 */ + { 0x35<<2, 0x32<<2, 0x3F<<2 }, /* Value 51 */ + { 0x3F<<2, 0x31<<2, 0x3F<<2 }, /* Value 52 */ + { 0x3F<<2, 0x31<<2, 0x36<<2 }, /* Value 53 */ + { 0x3F<<2, 0x2F<<2, 0x2C<<2 }, /* Value 54 */ + { 0x3F<<2, 0x36<<2, 0x2A<<2 }, /* Value 55 */ + { 0x3F<<2, 0x39<<2, 0x28<<2 }, /* Value 56 */ + { 0x38<<2, 0x3F<<2, 0x28<<2 }, /* Value 57 */ + { 0x2A<<2, 0x3C<<2, 0x2F<<2 }, /* Value 58 */ + { 0x2C<<2, 0x3F<<2, 0x33<<2 }, /* Value 59 */ + { 0x27<<2, 0x3F<<2, 0x3C<<2 }, /* Value 60 */ + { 0x31<<2, 0x31<<2, 0x31<<2 }, /* Value 61 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 62 */ + { 0x00<<2, 0x00<<2, 0x00<<2 }, /* Value 63 */ diff --git a/libmednahawk/src/nes/ppu/palettes/rp2c04-0001.h b/libmednahawk/src/nes/ppu/palettes/rp2c04-0001.h new file mode 100644 index 0000000000..7873c60771 --- /dev/null +++ b/libmednahawk/src/nes/ppu/palettes/rp2c04-0001.h @@ -0,0 +1,64 @@ + { 0xff, 0xb6, 0xb6 }, + { 0xda, 0x6d, 0xff }, + { 0xff, 0x00, 0x00 }, + { 0x91, 0x91, 0xff }, + { 0x00, 0x91, 0x91 }, + { 0x24, 0x48, 0x00 }, + { 0x48, 0x48, 0x48 }, + { 0xff, 0x00, 0x91 }, + { 0xff, 0xff, 0xff }, + { 0x6d, 0x6d, 0x6d }, + { 0xff, 0xb6, 0x00 }, + { 0xb6, 0x00, 0x6d }, + { 0x91, 0x00, 0x6d }, + { 0xda, 0xda, 0x00 }, + { 0x6d, 0x48, 0x00 }, + { 0xff, 0xff, 0xff }, + { 0x6d, 0xb6, 0xff }, + { 0xda, 0xb6, 0x6d }, + { 0x6d, 0x24, 0x00 }, + { 0x6d, 0xda, 0x00 }, + { 0x91, 0xda, 0xff }, + { 0xda, 0xb6, 0xff }, + { 0xff, 0xda, 0x91 }, + { 0x00, 0x48, 0xff }, + { 0xff, 0xda, 0x00 }, + { 0x48, 0xff, 0xda }, + { 0x00, 0x00, 0x00 }, + { 0x48, 0x00, 0x00 }, + { 0xda, 0xda, 0xda }, + { 0x91, 0x91, 0x91 }, + { 0xff, 0x00, 0xff }, + { 0x00, 0x24, 0x91 }, + { 0x00, 0x00, 0x6d }, + { 0xb6, 0xda, 0xff }, + { 0xff, 0xb6, 0xff }, + { 0x00, 0xff, 0x00 }, + { 0x00, 0xff, 0xff }, + { 0x00, 0x48, 0x48 }, + { 0x00, 0xb6, 0x6d }, + { 0xb6, 0x00, 0xff }, + { 0x00, 0x00, 0x00 }, + { 0x91, 0x48, 0x00 }, + { 0xff, 0x91, 0xff }, + { 0xb6, 0x24, 0x00 }, + { 0x91, 0x00, 0xff }, + { 0x00, 0x00, 0xda }, + { 0xff, 0x91, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0x24, 0x91, 0x00 }, + { 0xb6, 0xb6, 0xb6 }, + { 0x00, 0x6d, 0x24 }, + { 0xb6, 0xff, 0x48 }, + { 0x6d, 0x48, 0xda }, + { 0xff, 0xff, 0x00 }, + { 0xda, 0x6d, 0x00 }, + { 0x00, 0x48, 0x00 }, + { 0x00, 0x6d, 0xda }, + { 0x00, 0x91, 0x00 }, + { 0x24, 0x24, 0x24 }, + { 0xff, 0xff, 0x6d }, + { 0xff, 0x6d, 0xff }, + { 0x91, 0x6d, 0x00 }, + { 0x91, 0xff, 0x6d }, diff --git a/libmednahawk/src/nes/ppu/palettes/rp2c04-0002.h b/libmednahawk/src/nes/ppu/palettes/rp2c04-0002.h new file mode 100644 index 0000000000..d2f28766af --- /dev/null +++ b/libmednahawk/src/nes/ppu/palettes/rp2c04-0002.h @@ -0,0 +1,64 @@ + { 0x00, 0x00, 0x00 }, + { 0xff, 0xb6, 0x00 }, + { 0x91, 0x6d, 0x00 }, + { 0xb6, 0xff, 0x48 }, + { 0x91, 0xff, 0x6d }, + { 0xff, 0x6d, 0xff }, + { 0x00, 0x91, 0x91 }, + { 0xb6, 0xda, 0xff }, + { 0xff, 0x00, 0x00 }, + { 0x91, 0x00, 0xff }, + { 0xff, 0xff, 0x6d }, + { 0xff, 0x91, 0xff }, + { 0xff, 0xff, 0xff }, + { 0xda, 0x6d, 0xff }, + { 0x91, 0xda, 0xff }, + { 0x00, 0x91, 0x00 }, + { 0x00, 0x48, 0x00 }, + { 0x6d, 0xb6, 0xff }, + { 0xb6, 0x24, 0x00 }, + { 0xda, 0xda, 0xda }, + { 0x00, 0xb6, 0x6d }, + { 0x6d, 0xda, 0x00 }, + { 0x48, 0x00, 0x00 }, + { 0x91, 0x91, 0xff }, + { 0x48, 0x48, 0x48 }, + { 0xff, 0x00, 0xff }, + { 0x00, 0x00, 0x6d }, + { 0x48, 0xff, 0xda }, + { 0xda, 0xb6, 0xff }, + { 0x6d, 0x48, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0x6d, 0x48, 0xda }, + { 0x91, 0x00, 0x6d }, + { 0xff, 0xda, 0x91 }, + { 0xff, 0x91, 0x00 }, + { 0xff, 0xb6, 0xff }, + { 0x00, 0x6d, 0xda }, + { 0x6d, 0x24, 0x00 }, + { 0xb6, 0xb6, 0xb6 }, + { 0x00, 0x00, 0xda }, + { 0xb6, 0x00, 0xff }, + { 0xff, 0xda, 0x00 }, + { 0x6d, 0x6d, 0x6d }, + { 0x24, 0x48, 0x00 }, + { 0x00, 0x48, 0xff }, + { 0x00, 0x00, 0x00 }, + { 0xda, 0xda, 0x00 }, + { 0xff, 0xff, 0xff }, + { 0xda, 0xb6, 0x6d }, + { 0x24, 0x24, 0x24 }, + { 0x00, 0xff, 0x00 }, + { 0xda, 0x6d, 0x00 }, + { 0x00, 0x48, 0x48 }, + { 0x00, 0x24, 0x91 }, + { 0xff, 0x00, 0x91 }, + { 0x24, 0x91, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0xff, 0xff }, + { 0x91, 0x48, 0x00 }, + { 0xff, 0xff, 0x00 }, + { 0xff, 0xb6, 0xb6 }, + { 0xb6, 0x00, 0x6d }, + { 0x00, 0x6d, 0x24 }, + { 0x91, 0x91, 0x91 }, diff --git a/libmednahawk/src/nes/ppu/palettes/rp2c04-0003.h b/libmednahawk/src/nes/ppu/palettes/rp2c04-0003.h new file mode 100644 index 0000000000..37b6051872 --- /dev/null +++ b/libmednahawk/src/nes/ppu/palettes/rp2c04-0003.h @@ -0,0 +1,64 @@ + { 0xb6, 0x00, 0xff }, + { 0xff, 0x6d, 0xff }, + { 0x91, 0xff, 0x6d }, + { 0xb6, 0xb6, 0xb6 }, + { 0x00, 0x91, 0x00 }, + { 0xff, 0xff, 0xff }, + { 0xb6, 0xda, 0xff }, + { 0x24, 0x48, 0x00 }, + { 0x00, 0x24, 0x91 }, + { 0x00, 0x00, 0x00 }, + { 0xff, 0xda, 0x91 }, + { 0x6d, 0x48, 0x00 }, + { 0xff, 0x00, 0x91 }, + { 0xda, 0xda, 0xda }, + { 0xda, 0xb6, 0x6d }, + { 0x91, 0xda, 0xff }, + { 0x91, 0x91, 0xff }, + { 0x00, 0x91, 0x91 }, + { 0xb6, 0x00, 0x6d }, + { 0x00, 0x48, 0xff }, + { 0x24, 0x91, 0x00 }, + { 0x91, 0x6d, 0x00 }, + { 0xda, 0x6d, 0x00 }, + { 0x00, 0xb6, 0x6d }, + { 0x6d, 0x6d, 0x6d }, + { 0x6d, 0x48, 0xda }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0xda }, + { 0xff, 0x00, 0x00 }, + { 0xb6, 0x24, 0x00 }, + { 0xff, 0x91, 0xff }, + { 0xff, 0xb6, 0xb6 }, + { 0xda, 0x6d, 0xff }, + { 0x00, 0x48, 0x00 }, + { 0x00, 0x00, 0x6d }, + { 0xff, 0xff, 0x00 }, + { 0x24, 0x24, 0x24 }, + { 0xff, 0xb6, 0x00 }, + { 0xff, 0x91, 0x00 }, + { 0xff, 0xff, 0xff }, + { 0x6d, 0xda, 0x00 }, + { 0x91, 0x00, 0x6d }, + { 0x6d, 0xb6, 0xff }, + { 0xff, 0x00, 0xff }, + { 0x00, 0x6d, 0xda }, + { 0x91, 0x91, 0x91 }, + { 0x00, 0x00, 0x00 }, + { 0x6d, 0x24, 0x00 }, + { 0x00, 0xff, 0xff }, + { 0x48, 0x00, 0x00 }, + { 0xb6, 0xff, 0x48 }, + { 0xff, 0xb6, 0xff }, + { 0x91, 0x48, 0x00 }, + { 0x00, 0xff, 0x00 }, + { 0xda, 0xda, 0x00 }, + { 0x48, 0x48, 0x48 }, + { 0x00, 0x6d, 0x24 }, + { 0x00, 0x00, 0x00 }, + { 0xda, 0xb6, 0xff }, + { 0xff, 0xff, 0x6d }, + { 0x91, 0x00, 0xff }, + { 0x48, 0xff, 0xda }, + { 0xff, 0xda, 0x00 }, + { 0x00, 0x48, 0x48 }, diff --git a/libmednahawk/src/nes/ppu/palettes/rp2c04-0004.h b/libmednahawk/src/nes/ppu/palettes/rp2c04-0004.h new file mode 100644 index 0000000000..a14b60a030 --- /dev/null +++ b/libmednahawk/src/nes/ppu/palettes/rp2c04-0004.h @@ -0,0 +1,64 @@ + { 0x91, 0x6d, 0x00 }, + { 0x6d, 0x48, 0xda }, + { 0x00, 0x91, 0x91 }, + { 0xda, 0xda, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0xff, 0xb6, 0xb6 }, + { 0x00, 0x24, 0x91 }, + { 0xda, 0x6d, 0x00 }, + { 0xb6, 0xb6, 0xb6 }, + { 0x6d, 0x24, 0x00 }, + { 0x00, 0xff, 0x00 }, + { 0x00, 0x00, 0x6d }, + { 0xff, 0xda, 0x91 }, + { 0xff, 0xff, 0x00 }, + { 0x00, 0x91, 0x00 }, + { 0xb6, 0xff, 0x48 }, + { 0xff, 0x6d, 0xff }, + { 0x48, 0x00, 0x00 }, + { 0x00, 0x48, 0xff }, + { 0xff, 0x91, 0xff }, + { 0x00, 0x00, 0x00 }, + { 0x48, 0x48, 0x48 }, + { 0xb6, 0x24, 0x00 }, + { 0xff, 0x91, 0x00 }, + { 0xda, 0xb6, 0x6d }, + { 0x00, 0xb6, 0x6d }, + { 0x91, 0x91, 0xff }, + { 0x24, 0x91, 0x00 }, + { 0x91, 0x00, 0x6d }, + { 0x00, 0x00, 0x00 }, + { 0x91, 0xff, 0x6d }, + { 0x6d, 0xb6, 0xff }, + { 0xb6, 0x00, 0x6d }, + { 0x00, 0x6d, 0x24 }, + { 0x91, 0x48, 0x00 }, + { 0x00, 0x00, 0xda }, + { 0x91, 0x00, 0xff }, + { 0xb6, 0x00, 0xff }, + { 0x6d, 0x6d, 0x6d }, + { 0xff, 0x00, 0x91 }, + { 0x00, 0x48, 0x48 }, + { 0xda, 0xda, 0xda }, + { 0x00, 0x6d, 0xda }, + { 0x00, 0x48, 0x00 }, + { 0x24, 0x24, 0x24 }, + { 0xff, 0xff, 0x6d }, + { 0x91, 0x91, 0x91 }, + { 0xff, 0x00, 0xff }, + { 0xff, 0xb6, 0xff }, + { 0xff, 0xff, 0xff }, + { 0x6d, 0x48, 0x00 }, + { 0xff, 0x00, 0x00 }, + { 0xff, 0xda, 0x00 }, + { 0x48, 0xff, 0xda }, + { 0xff, 0xff, 0xff }, + { 0x91, 0xda, 0xff }, + { 0x00, 0x00, 0x00 }, + { 0xff, 0xb6, 0x00 }, + { 0xda, 0x6d, 0xff }, + { 0xb6, 0xda, 0xff }, + { 0x6d, 0xda, 0x00 }, + { 0xda, 0xb6, 0xff }, + { 0x00, 0xff, 0xff }, + { 0x24, 0x48, 0x00 }, diff --git a/libmednahawk/src/nes/ppu/palettes/rp2c0x.h b/libmednahawk/src/nes/ppu/palettes/rp2c0x.h new file mode 100644 index 0000000000..3d00cd08af --- /dev/null +++ b/libmednahawk/src/nes/ppu/palettes/rp2c0x.h @@ -0,0 +1,64 @@ + { 0x6d, 0x6d, 0x6d }, + { 0x00, 0x24, 0x91 }, + { 0x00, 0x00, 0xda }, + { 0x6d, 0x48, 0xda }, + { 0x91, 0x00, 0x6d }, + { 0xb6, 0x00, 0x6d }, + { 0xb6, 0x24, 0x00 }, + { 0x91, 0x48, 0x00 }, + { 0x6d, 0x48, 0x00 }, + { 0x24, 0x48, 0x00 }, + { 0x00, 0x6d, 0x24 }, + { 0x00, 0x91, 0x00 }, + { 0x00, 0x48, 0x48 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0xb6, 0xb6, 0xb6 }, + { 0x00, 0x6d, 0xda }, + { 0x00, 0x48, 0xff }, + { 0x91, 0x00, 0xff }, + { 0xb6, 0x00, 0xff }, + { 0xff, 0x00, 0x91 }, + { 0xff, 0x00, 0x00 }, + { 0xda, 0x6d, 0x00 }, + { 0x91, 0x6d, 0x00 }, + { 0x24, 0x91, 0x00 }, + { 0x00, 0x91, 0x00 }, + { 0x00, 0xb6, 0x6d }, + { 0x00, 0x91, 0x91 }, + { 0x24, 0x24, 0x24 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0xff, 0xff, 0xff }, + { 0x6d, 0xb6, 0xff }, + { 0x91, 0x91, 0xff }, + { 0xda, 0x6d, 0xff }, + { 0xff, 0x00, 0xff }, + { 0xff, 0x6d, 0xff }, + { 0xff, 0x91, 0x00 }, + { 0xff, 0xb6, 0x00 }, + { 0xda, 0xda, 0x00 }, + { 0x6d, 0xda, 0x00 }, + { 0x00, 0xff, 0x00 }, + { 0x48, 0xff, 0xda }, + { 0x00, 0xff, 0xff }, + { 0x48, 0x48, 0x48 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00 }, + { 0xff, 0xff, 0xff }, + { 0xb6, 0xda, 0xff }, + { 0xda, 0xb6, 0xff }, + { 0xff, 0xb6, 0xff }, + { 0xff, 0x91, 0xff }, + { 0xff, 0xb6, 0xb6 }, + { 0xff, 0xda, 0x91 }, + { 0xff, 0xff, 0x48 }, + { 0xff, 0xff, 0x6d }, + { 0xb6, 0xff, 0x48 }, + { 0x91, 0xff, 0x6d }, + { 0x48, 0xff, 0xda }, + { 0x91, 0xda, 0xff }, + { 0x91, 0x91, 0x91 }, + { 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00 }, diff --git a/libmednahawk/src/nes/ppu/ppu-fastrl.h b/libmednahawk/src/nes/ppu/ppu-fastrl.h new file mode 100644 index 0000000000..3c60596297 --- /dev/null +++ b/libmednahawk/src/nes/ppu/ppu-fastrl.h @@ -0,0 +1,222 @@ +/* Mednafen - NES/Famicom Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +static void FastRefreshLine(int firsttile, uint8 *target) +{ + if(scanline == -1) return; + + uint32 smorkus=RefreshAddr; + + #define RefreshAddr smorkus + uint32 vofs; + int X1; + int XOC; + + register uint8 *P; + static int norecurse=0; /* Prevent recursion: + PPU_hook() functions can call + mirroring/chr bank switching functions, + which call MDFNPPU_LineUpdate, which call this + function. */ + if(norecurse) return; + + target += firsttile << 3; + P = target; + + vofs=((PPU[0]&0x10)<<8) | ((RefreshAddr>>12)&7); + + memset(emphlinebuf + (firsttile << 3), PPU[1] >> 5, (32 - firsttile) << 3); + + if(!ScreenON && !SpriteON) + { + memset(target,PALRAM[poopoo()],(32 - firsttile)<<3); + return; + } + + if(!RCBGOn) + { + memset(target, PALRAM[0] | 0x40, (32 - firsttile)<<3); + return; + } + /* Priority bits, needed for sprite emulation. */ + PALRAMCache[0x0]=PALRAMCache[0x4]=PALRAMCache[0x8]=PALRAMCache[0xC]=PALRAM[0] | 64; + + /* This high-level graphics MMC5 emulation code was written + for MMC5 carts in "CL" mode. It's probably not totally + correct for carts in "SL" mode. + */ + + XOC = 16 - XOffset; + + #define PPUT_MMC5 + if(MMC5Hack && geniestage!=1) + { + if(MMC5HackCHRMode==0 && (MMC5HackSPMode&0x80)) + { + for(X1=firsttile;X1<32;X1++) + { + if((tochange<=0 && MMC5HackSPMode&0x40) || (tochange>0 && !(MMC5HackSPMode&0x40))) + { + #define PPUT_MMC5SP + #include "fast-pputile.h" + #undef PPUT_MMC5SP + } + else + { + #include "fast-pputile.h" + } + tochange--; + xs++; + } + } + else if(MMC5HackCHRMode==1 && (MMC5HackSPMode&0x80)) + { + #define PPUT_MMC5SP + #define PPUT_MMC5CHR1 + for(X1=firsttile;X1<32;X1++) + { + #include "fast-pputile.h" + } + #undef PPUT_MMC5CHR1 + #undef PPUT_MMC5SP + } + else if(MMC5HackCHRMode==1) + { + #define PPUT_MMC5CHR1 + for(X1=firsttile;X1<32;X1++) + { + #include "fast-pputile.h" + } + #undef PPUT_MMC5CHR1 + } + else + { + for(X1=firsttile;X1<32;X1++) + { + #include "fast-pputile.h" + } + } + } + #undef PPUT_MMC5 + else if(PPU_hook) + { + norecurse=1; + #define PPUT_HOOK + for(X1=firsttile;X1<32;X1++) + { + #include "fast-pputile.h" + } + #undef PPUT_HOOK + norecurse=0; + } + else + { + for(X1=firsttile;X1<32;X1++) + { + #include "fast-pputile.h" + } + } + + #undef vofs + #undef RefreshAddr + + RefreshAddr=smorkus; + if(!firsttile && !(PPU[1]&2)) + memset(target, PALRAM[0] | 0x40, 8); +} + +static void FastLineEffects(int firsttile, uint8 *target) +{ + int x; + + if(scanline == -1) return; + + if(ScreenON || SpriteON) + { + if(PPU[1]&0x01) + { + for(x=63;x>=0;x--) + *(uint32 *)&target[x<<2]=(*(uint32*)&target[x<<2])&0x30303030; + } + } +} + +static void FastCopySprites(int firsttile, uint8 *target, int skip) +{ + uint8 n=((PPU[1]&4)^4)<<1; + uint8 *P=target; + + if(scanline == -1) return; + + if(sphitx != 0x100 && scanline >= 0) + { + int meep, maxmeep, firstmeep; + + firstmeep = sphitx; + maxmeep = sphitx + 8; + + if(firstmeep < (firsttile << 3)) firstmeep = firsttile << 3; + if(maxmeep > 255) maxmeep = 255; // Don't go over 256 pixels(the screen isn't that wide!), and don't check on the 255th column(NES PPU bug). + + for(meep = firstmeep; meep < maxmeep; meep++) + { + if((sphitdata & (0x80 >> (meep - sphitx)))&& !(target[meep]&64)) + { + //printf("Hit: %d\n",scanline); + PPU_status |= 0x40; + } + } + } + + if(rendis & 1) + MDFN_FastU32MemsetM8((uint32 *)(target + firsttile * 8), 0x40404040 | 0x3C3C3C3C, (256 - firsttile * 8) / sizeof(uint32)); + + if(!RCSPROn || skip) return; + + if(n < (firsttile << 3)) n = firsttile << 3; + + loopskie: + { + #if (SIZEOF_LONG == 8) + uint64 t=*(uint64 *)(sprlinebuf+n); + uint64 poo = *(uint64 *)(P + n); + uint64 choo = (((~(poo | t)) | (t >> 1)) & 0x4040404040404040) >> 6; + uint64 bgmask = ((choo - 0x01) & 0xFF) | ((choo - 0x0100) & 0xFF00) | ((choo - 0x010000) & 0xFF0000) | ((choo - 0x01000000) & 0xFF000000) | + ((choo - 0x0100000000) & 0xFF00000000) | ((choo - 0x010000000000) & 0xFF0000000000) | ((choo - 0x01000000000000) & 0xFF000000000000) | ((choo - 0x0100000000000000) & 0xFF00000000000000); + uint64 sprmask = ~bgmask; + + *(uint64 *)(P + n) = (t & bgmask) | (poo & sprmask); + #else + uint32 t=*(uint32 *)(sprlinebuf+n); + uint32 poo = *(uint32 *)(P + n); + uint32 choo = (((~(poo | t)) | (t >> 1)) & 0x40404040) >> 6; + uint32 bgmask = ((choo - 0x01) & 0xFF) | ((choo - 0x0100) & 0xFF00) | ((choo - 0x010000) & 0xFF0000) | ((choo - 0x01000000) & 0xFF000000); + uint32 sprmask = ~bgmask; + + *(uint32 *)(P + n) = (t & bgmask) | (poo & sprmask); + #endif + } + #if (SIZEOF_LONG == 8) + n+=8; + #else + n+=4; + #endif + if(n) goto loopskie; +} diff --git a/libmednahawk/src/nes/ppu/ppu-subline.h b/libmednahawk/src/nes/ppu/ppu-subline.h new file mode 100644 index 0000000000..61e114d98e --- /dev/null +++ b/libmednahawk/src/nes/ppu/ppu-subline.h @@ -0,0 +1,90 @@ + if(firstpixel == 256 && lastpixel == 341) + { + Fixit2(); + if(MMC5Mode >= 3) + { + xs = 0; + tochange = MMC5HackSPMode&0x1F; + } + if(scanline == -1) + RefreshAddr = TempAddr; + + FetchNT(MMC5Mode); + FetchAT(MMC5Mode); + FetchCD1(MMC5Mode); + FetchCD2(MMC5Mode); + FetchNT(MMC5Mode); + FetchAT(MMC5Mode); + FetchCD1(MMC5Mode); + FetchCD2(MMC5Mode); + + //printf("Meow: %d %d %d\n", scanline, firstpixel, lastpixel); + } + else + for(x=firstpixel; x= 0) + { + uint8 *S=PALRAMCache; + uint32 pixdata; + + pixdata=ppulut1[(pshift[0]>>(16-XOffset)) &0xFF]|ppulut2[(pshift[1]>>(16-XOffset)) &0xFF]; + pixdata|=ppulut3[XOffset|((atlatch&0xf)<<3)]; + + if(!RCBGOn) pixdata = 0; + if(!(PPU[1]&2) && x < 8) pixdata = 0; + + emphlinebuf[x] = PPU[1] >> 5; + Pline[x] = S[(pixdata >> (4 * (x&7))) & 0xF]; + + if(RCSPROn && ((PPU[1]&4) || x>= 8)) + { + if(sphitx != 0x100 && scanline >= 0) + { + if(x >= sphitx && x < (sphitx + 8) && x < 255) // Don't check on column 255. + if((sphitdata & (0x80 >> (x - sphitx)))&& !(Pline[x]&64)) + { +// printf("Slow Hit: %d\n",scanline); + PPU_status |= 0x40; + sphitx = 0x100; + } + } + if(!(sprlinebuf[x] & 0x80)) + { + if((sprlinebuf[x]&0x40) || (Pline[x] & 0x40)) + Pline[x] = sprlinebuf[x]; + } + } + if(rendis & 1) + { + emphlinebuf[x] = 0; + Pline[x] = 0x3C | 0x40; + } + Pline[x] = (Pline[x] & pix_mask); + switch(x & 7) + { + case 1: FetchNT(MMC5Mode); break; + case 3: FetchAT(MMC5Mode); break; + case 5: FetchCD1(MMC5Mode); break; + case 7: FetchCD2(MMC5Mode); break; + } + if(x == 252) { Fixit1(); } + } + if(x == (257)) + { + Fixit2(); + if(MMC5Mode >= 3) + { + xs = 0; + tochange = MMC5HackSPMode&0x1F; + } + } + if(x == 304 && scanline == -1) + RefreshAddr = TempAddr; + + if(x == 321 || x == 329) FetchNT(MMC5Mode); + else if(x == 323 || x == 331) FetchAT(MMC5Mode); + else if(x == 325 || x == 333) FetchCD1(MMC5Mode); + else if(x == 327 || x == 335) FetchCD2(MMC5Mode); + } + diff --git a/libmednahawk/src/nes/ppu/ppu.cpp b/libmednahawk/src/nes/ppu/ppu.cpp new file mode 100644 index 0000000000..f9ca7a7b67 --- /dev/null +++ b/libmednahawk/src/nes/ppu/ppu.cpp @@ -0,0 +1,1618 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 1998 BERO + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../nes.h" +#include "../x6502.h" +#include "../nsf.h" +#include "../sound.h" + +#include "../cart.h" +#include "ppu.h" +#include "palette.h" +#include "../input.h" +#include "../ntsc/nes_ntsc.h" + +#define VBlankON (PPU[0]&0x80) /* Generate VBlank NMI */ +#define Sprite16 (PPU[0]&0x20) /* Sprites 8x16/8x8 */ +#define BGAdrHI (PPU[0]&0x10) /* BG pattern adr $0000/$1000 */ +#define SpAdrHI (PPU[0]&0x08) /* Sprite pattern adr $0000/$1000 */ +#define INC32 (PPU[0]&0x04) /* auto increment 1/32 */ + +#define SpriteON (PPU[1]&0x10) /* Show Sprite */ +#define ScreenON (PPU[1]&0x08) /* Show screen */ + +#define PPU_status (PPU[2]) + +static nes_ntsc_emph_t *NTSCBlitter = NULL; +static nes_ntsc_setup_t setup; + +static void FetchSpriteData(void); +static void RefreshLine(int lastpixel); +static void RefreshSprites(void); + +static void Fixit1(void); +static uint32 ppulut1[256], ppulut2[256], ppulut3[128]; + +static void DoGfxDecode(void); +static MDFN_Surface *GfxDecode_Buf = NULL; +static int GfxDecode_Line = -1; +static int GfxDecode_Layer = 0; +static int GfxDecode_Scroll = 0; +static int GfxDecode_Pbn = 0; + +static void makeppulut(void) +{ + int x; + int y; + + for(x=0;x<256;x++) + { + ppulut1[x]=0; + for(y=0;y<8;y++) + { + ppulut1[x] |= ((x>>(7 - y))&0x1) << (y*4); + } + ppulut2[x]=ppulut1[x]<<1; + } + + { + + int cc,xo,pixel; + + for(cc=0;cc<16;cc++) + { + for(xo=0;xo<8;xo++) + { + ppulut3[xo|(cc<<3)]=0; + for(pixel=0;pixel<8;pixel++) + { + int shiftr; + shiftr=(pixel+xo)/8; + shiftr*=2; + ppulut3[xo|(cc<<3)]|=(( cc>>shiftr )&3)<<(2+pixel*4); + } +// printf("%08x\n",ppulut3[xo|(cc<<3)]); + } + } + + } +} + +static int ppudead; +static int kook; +int fceuindbg=0; + +int MMC5Hack; +uint32 MMC5HackCHRBank; +uint32 MMC5HackVROMMask; +uint8 *MMC5HackExNTARAMPtr; +uint8 *MMC5HackVROMPTR; +uint8 MMC5HackCHRMode=0; +uint8 MMC5HackSPMode; +uint8 MMC5HackSPScroll; +uint8 MMC5HackSPPage; + + +uint8 VRAMBuffer,PPUGenLatch; +uint8 *vnapage[4]; +uint8 PPUNTARAM; +uint8 PPUCHRRAM; + +void (*GameHBIRQHook)(void), (*GameHBIRQHook2)(void); +void (*PPU_hook)(uint32 A); + +static uint8 vtoggle; +static uint8 XOffset; +static uint32 TempAddr, RefreshAddr; + +static int maxsprites; + +/* scanline is equal to the current visible scanline we're on. */ + +int scanline; +static uint32 scanlines_per_frame; + +#define V_FLIP 0x80 +#define H_FLIP 0x40 +#define SP_BACK 0x20 + +typedef struct { + uint8 y,no,atr,x; +} SPR; + +typedef struct { + uint8 ca[2],atr,x; +} SPRB; + +uint8 PPU[4]; +uint8 PPUSPL; +uint8 NTARAM[0x800],PALRAM[0x20],PALRAMCache[0x20]; + +uint8 SPRAM[0x100]; +static SPRB SPRBUF[64]; // 8] if we didn't have an excess sprites option. + +static uint32 PALRAMLUTCache[0x200]; + +void MDFNNES_SetPixelFormat(const MDFN_PixelFormat &pixel_format) +{ + for(int x = 0; x < 0x200; x++) + { + int r = ActiveNESPalette[x].r; + int g = ActiveNESPalette[x].g; + int b = ActiveNESPalette[x].b; + + PALRAMLUTCache[x] = pixel_format.MakeColor(r, g, b); + } +} + +#define MMC5SPRVRAMADR(V) &MMC5SPRVPage[(V)>>10][(V)] +#define MMC5BGVRAMADR(V) &MMC5BGVPage[(V)>>10][(V)] +#define VRAMADR(V) &VPage[(V)>>10][(V)] + + +static int32 sphitx; +static uint8 sphitdata; + +static DECLFR(A2002) +{ + uint8 ret; + + if(!fceuindbg) + if(sphitx != 0x100) + MDFNPPU_LineUpdate(); + ret = PPU_status; + ret|=PPUGenLatch&0x1F; + + if(!fceuindbg) + { + vtoggle = 0; + PPU_status &= 0x7F; + PPUGenLatch = ret; + } + return ret; +} + +static DECLFR(A200x) /* Not correct for $2004 reads. */ +{ + MDFNPPU_LineUpdate(); + return PPUGenLatch; +} + +#define GETLASTPIXEL (PAL?((timestamp*48-linestartts)/15) : ((timestamp*48-linestartts)>>4) ) + +static uint8 *Pline; +static int firstpixel; +static int linestartts; + +static DECLFR(A2004) +{ + if(Pline) //InPPUActiveArea) + { + int poopix = GETLASTPIXEL; + + if(poopix > 320 && poopix < 340) + return(0); + return(0xFF); + } + else + { + uint8 ret = SPRAM[PPU[3]]; + return(ret); + } +} + +static DECLFR(A2007) +{ + uint8 ret; + uint32 tmp = RefreshAddr & 0x3FFF; + + MDFNPPU_LineUpdate(); + ret = VRAMBuffer; + + if(!fceuindbg) + { + if(PPU_hook) PPU_hook(tmp); + PPUGenLatch=VRAMBuffer; + + if(tmp<0x2000) + VRAMBuffer=VPage[tmp>>10][tmp]; + else + { + VRAMBuffer=vnapage[(tmp>>10)&0x3][tmp&0x3FF]; + if(tmp >= 0x3f00) + { + tmp &= (tmp & 3)? 0x1F : 0x0C; + ret = PALRAM[tmp]; + } + } + } + + if(!fceuindbg) + { + if (INC32) RefreshAddr+=32; + else RefreshAddr++; + if(PPU_hook) PPU_hook(RefreshAddr&0x3fff); + } + return ret; +} + + +static DECLFW(B2000) +{ + //printf("%04x:$%02x, %d\n",A,V&0x38,scanline); + + MDFNPPU_LineUpdate(); + PPUGenLatch=V; + if(!(PPU[0]&0x80) && (V&0x80) && (PPU_status&0x80)) + { + //printf("Trigger NMI, %d, %d\n",timestamp,ppudead); + TriggerNMI2(); + } + PPU[0]=V; + TempAddr&=0xF3FF; + TempAddr|=(V&3)<<10; +} + +static int RCBGOn; +static int RCSPROn; +static int rendis; +static void RedoRenderCache(void) +{ + RCSPROn = SpriteON; + + RCBGOn = ScreenON; +} + +static DECLFW(B2001) +{ + //printf("%04x:$%02x, %d\n",A,V,scanline); + MDFNPPU_LineUpdate(); + PPUGenLatch=V; + PPU[1]=V; + RedoRenderCache(); +} + +static DECLFW(B2002) +{ + PPUGenLatch=V; +} + +static DECLFW(B2003) +{ + PPUGenLatch=V; + PPU[3]=V; + PPUSPL=V&0xFC; +} + +static DECLFW(B2004) +{ + PPUGenLatch=V; + SPRAM[PPU[3]]=V; + PPU[3]++; +} + +static DECLFW(B2005) +{ + uint32 tmp = TempAddr; + + MDFNPPU_LineUpdate(); + PPUGenLatch = V; + + if(!vtoggle) + { + tmp &= 0xFFE0; + tmp |= V>>3; + XOffset = V&7; + } + else + { + tmp &= 0x8C1F; + tmp|=((V&~0x7)<<2); + tmp|=(V&7)<<12; + } + TempAddr=tmp; + vtoggle^=1; +} + +static uint8 poopoo(void) +{ + if((RefreshAddr & 0x3F00) == 0x3F00) + return(RefreshAddr & 0xF); + return(0); +} + + +static DECLFW(B2006) +{ + MDFNPPU_LineUpdate(); + PPUGenLatch=V; + if(!vtoggle) + { + TempAddr&=0x00FF; + TempAddr|=(V&0x3f)<<8; + } + else + { + TempAddr&=0xFF00; + TempAddr|=V; + + RefreshAddr=TempAddr; + + if(PPU_hook) + PPU_hook(RefreshAddr); + //printf("%d, %04x\n",scanline,RefreshAddr); + } + vtoggle^=1; +} + +static DECLFW(B2007) +{ + uint32 tmp=RefreshAddr&0x3FFF; + + MDFNPPU_LineUpdate(); + + PPUGenLatch=V; + if(tmp >= 0x3F00) + { + tmp &= (tmp & 3)? 0x1F : 0x0C; + PALRAM[tmp] = PALRAMCache[tmp] = V & 0x3F; + } + else if(tmp<0x2000) + { + if(PPUCHRRAM&(1<<(tmp>>10))) + VPage[tmp>>10][tmp]=V; + } + else + { + if(PPUNTARAM&(1<<((tmp&0xF00)>>10))) + vnapage[((tmp&0xF00)>>10)][tmp&0x3FF]=V; + } + if (INC32) RefreshAddr+=32; + else RefreshAddr++; + if(PPU_hook) PPU_hook(RefreshAddr&0x3fff); +} + +static DECLFW(B4014) +{ + uint32 t=V<<8; + int x; + + for(x=0;x<256;x++) + X6502_DMW(0x2004,X6502_DMR(t+x)); +} + +static void ResetRL(uint8 *target) +{ + Pline=target; + firstpixel = 0; + + linestartts=timestamp*48+X.count; + //printf("Line: %d\n", GETLASTPIXEL); + //MDFNPPU_LineUpdate(); +} + +static MDFN_ALIGN(16) uint8 sprlinebuf[256+8]; +static MDFN_ALIGN(16) uint8 emphlinebuf[256]; + +void MDFNPPU_LineUpdate(void) +{ + if(!fceuindbg) + if(Pline) + { + int l=GETLASTPIXEL; + RefreshLine(l); + } +} + +void MDFNNES_SetLayerEnableMask(uint64 mask) +{ + rendis = ~mask; + + RedoRenderCache(); +} + +static void EndRL(void) +{ + RefreshLine(341); + Pline=0; +} + + +static uint8 NT_TMP = 0; +static uint8 MMC5NT_TMP; +static uint32 pshift[2]; +static uint32 atlatch; +static uint8 xs, ys; +static int tochange; + +static INLINE void FetchNT(int MMC5Ex) +{ + uint8 *C; + + if(PPU_hook) + PPU_hook((RefreshAddr & 0xfff) | 0x2000); + + C = vnapage[(RefreshAddr>>10)&3]; + + NT_TMP = C[RefreshAddr&0x3ff]; /* Fetch name table byte. */ + + if(MMC5Ex == 1) + MMC5NT_TMP = MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff]; + else if((MMC5Ex == 3 || MMC5Ex == 4) && ((tochange<=0 && MMC5HackSPMode&0x40) || (tochange>0 && !(MMC5HackSPMode&0x40))) ) + { + NT_TMP = MMC5HackExNTARAMPtr[xs|(ys<<5)]; + // printf("OK: %d, %d\n",scanline,xs); + } +} + +static INLINE void FetchAT(int MMC5Ex) +{ + uint8 cc, zz; + uint8 *C; + + C = vnapage[(RefreshAddr >> 10) & 3]; + zz = RefreshAddr & 0x1f; + + if(MMC5Ex == 1) + cc=(MMC5HackExNTARAMPtr[RefreshAddr & 0x3ff] & 0xC0)>>6; + else if((MMC5Ex == 3 || MMC5Ex == 4) && ((tochange<=0 && MMC5HackSPMode&0x40) || (tochange>0 && !(MMC5HackSPMode&0x40))) ) + { + cc=MMC5HackExNTARAMPtr[0x3c0+(xs>>2)+((ys&0x1C)<<1)]; + cc=((cc >> ((xs&2) + ((ys&0x2)<<1))) &3); + } + else + { + cc=C[0x3c0+(zz>>2)+((RefreshAddr&0x380)>>4)]; /* Fetch attribute table byte. */ + cc=((cc >> ((zz&2) + ((RefreshAddr&0x40)>>4))) &3); + } + atlatch |= cc<<4; + + if((RefreshAddr&0x1f)==0x1f) + RefreshAddr^=0x41F; + else + RefreshAddr++; + + if(PPU_hook) + PPU_hook(RefreshAddr & 0x3FFF); +} + +static INLINE void FetchCD1(int MMC5Ex) +{ + uint32 vofs = ((PPU[0]&0x10)<<8) | ((RefreshAddr>>12)&7); + uint32 vadr = (NT_TMP << 4) | vofs; + uint8 *C = VRAMADR(vadr); + + if(MMC5Ex == 1) + { + C = MMC5HackVROMPTR; + C += (((MMC5NT_TMP) & 0x3f & MMC5HackVROMMask) << 12) + (vadr & 0xfff); + } + else if(MMC5Ex == 2) + { + C = MMC5BGVRAMADR(vadr); + } + else if(MMC5Ex == 3 || MMC5Ex == 4) + { + if(((tochange<=0 && MMC5HackSPMode&0x40) || (tochange>0 && !(MMC5HackSPMode&0x40))) ) + { + C = MMC5HackVROMPTR + ((NT_TMP << 4) | ((RefreshAddr >> 12)&7)); + C += ((MMC5HackSPPage & 0x3f & MMC5HackVROMMask) << 12); + } + else + { + C = MMC5BGVRAMADR(vadr); + } + } + + pshift[0] |= C[0]; + + if(PPU_hook) + PPU_hook(vadr); +} + +static INLINE void FetchCD2(int MMC5Ex) +{ + uint32 vofs = ((PPU[0]&0x10)<<8) | ((RefreshAddr>>12)&7); + uint32 vadr = (NT_TMP << 4) | vofs; + uint8 *C = VRAMADR(vadr); + + if(MMC5Ex == 1) + { + C = MMC5HackVROMPTR; + C += (((MMC5NT_TMP) & 0x3f & MMC5HackVROMMask) << 12) + (vadr & 0xfff); + } + else if(MMC5Ex == 2) + { + C = MMC5BGVRAMADR(vadr); + } + else if(MMC5Ex == 3 || MMC5Ex == 4) + { + if(((tochange<=0 && MMC5HackSPMode&0x40) || (tochange>0 && !(MMC5HackSPMode&0x40))) ) + { + C = MMC5HackVROMPTR + ((NT_TMP << 4) | ((RefreshAddr >> 12)&7)); + C += ((MMC5HackSPPage & 0x3f & MMC5HackVROMMask) << 12); + } + else + { + C = MMC5BGVRAMADR(vadr); + } + //printf("%d, %d\n",scanline,xs); + xs++; + tochange--; + } + + pshift[1] |= C[8]; + + pshift[0] <<= 8; + pshift[1] <<= 8; + atlatch >>= 2; + + if(PPU_hook) + PPU_hook(vadr | 8); +} + +static int spork=0; /* spork the world. Any sprites on this line? + Then this will be set to 1. + */ + +static INLINE void Fixit2(void) +{ + uint32 rad=RefreshAddr; + rad&=0xFBE0; + rad|=TempAddr&0x041f; + RefreshAddr=rad; +} + +static void RefreshLine(int lastpixel) +{ + static int norecurse = 0; + int x; + + if(norecurse) + return; + norecurse = 1; + + if(ScreenON || SpriteON) + { + uint8 pix_mask = 0x3F; + + if(PPU[1]&0x01) + pix_mask = 0x30; + + PALRAMCache[0x0]=PALRAMCache[0x4]=PALRAMCache[0x8]=PALRAMCache[0xC]=PALRAM[0] | 64; + + if(MMC5Hack && geniestage != 1) + { + if(MMC5HackCHRMode==0 && (MMC5HackSPMode&0x80)) + { + const int MMC5Mode = 4; + + #include "ppu-subline.h" + } + else if (MMC5HackCHRMode==1 && (MMC5HackSPMode&0x80)) + { + const int MMC5Mode = 3; + + #include "ppu-subline.h" + } + else if(MMC5HackCHRMode == 1) + { + const int MMC5Mode = 1; + #include "ppu-subline.h" + } + else + { + const int MMC5Mode = 2; + #include "ppu-subline.h" + } + } + else + { + const int MMC5Mode = 0; + #include "ppu-subline.h" + } + } + else + { + int count = lastpixel - firstpixel; + + if((count + firstpixel) > 256) count = 256 - firstpixel; + + if(count > 0) + { + if(rendis & 1) + { + memset(emphlinebuf + firstpixel, 0, count); + memset(Pline + firstpixel, 0x40 | 0x3C, count); + } + else + { + memset(emphlinebuf + firstpixel, PPU[1] >> 5, count); + memset(Pline + firstpixel, PALRAM[poopoo()], count); + } + } + //pshift[0] = pshift[1] = atlatch = 0; + } + + if(InputScanlineHook) + InputScanlineHook(Pline,0,firstpixel,lastpixel); + firstpixel = lastpixel; + + norecurse = 0; +} + +static void Fixit1(void) +{ + uint32 rad=RefreshAddr; + + if((rad&0x7000)==0x7000) + { + rad^=0x7000; + if((rad&0x3E0)==0x3A0) + { + rad^=0x3A0; + rad^=0x800; + } + else + { + if((rad&0x3E0)==0x3e0) + rad^=0x3e0; + else rad+=0x20; + } + } + else + rad+=0x1000; + RefreshAddr=rad; +} + +#include "ppu-fastrl.h" + +// FIXME, use MakeColor() method +#define MEOW_OUT(n, a) { uint32 otmp; NES_NTSC_RAW_OUT(n, otmp); a = (((otmp >> 21) & 0xFF) << pixel_format.Rshift) | (((otmp >> 11) & 0xFF) << pixel_format.Gshift) | (((otmp >> 1) & 0xFF) << pixel_format.Bshift); } + +static void nes_ntsc_blit(const MDFN_PixelFormat &pixel_format, nes_ntsc_emph_t const* ntsc, uint8 const* nes_in, uint8 const* nes_emph_in, long in_pitch, + int burst_phase, int width, int height, uint32* rgb_out, long out_pitch ) +{ + /* determine how many chunks to blit, less one for the final chunk */ + int chunk_count = width / nes_ntsc_out_chunk - 1; + + /* begin row and read first nes pixel */ + uint8 const* line_in = nes_in; + uint8 const* line_emph_in = nes_emph_in; + NES_NTSC_BEGIN_ROW( ntsc, burst_phase, nes_ntsc_black, nes_ntsc_black, (*line_in++ & 0x3F) | (*line_emph_in++ << 6)); + uint32* line_out = rgb_out; + int n; + + /* blit main chunks, each using 3 nes pixels to generate 7 output pixels */ + for ( n = chunk_count; n; --n ) + { + /* order of NES_NTSC_COLOR_IN and NES_NTSC_RGB16_OUT must not be altered */ + + /* you can use NES_NTSC_RGB24_OUT and NES_NTSC_RGB15_OUT for other RGB + output formats, or NES_NTSC_RAW_OUT for the internal format */ + NES_NTSC_COLOR_IN( 0, (line_in [0] & 0x3F) | (line_emph_in [0] << 6) ); + MEOW_OUT( 0, line_out [0] ); + MEOW_OUT( 1, line_out [1] ); + + NES_NTSC_COLOR_IN( 1, (line_in [1] & 0x3F) | (line_emph_in [1] << 6) ); + MEOW_OUT( 2, line_out [2] ); + MEOW_OUT( 3, line_out [3] ); + + NES_NTSC_COLOR_IN( 2, (line_in [2] & 0x3F) | (line_emph_in [2] << 6) ); + MEOW_OUT( 4, line_out [4] ); + MEOW_OUT( 5, line_out [5] ); + MEOW_OUT( 6, line_out [6] ); + line_in += 3; + line_emph_in += 3; + line_out += 7; + } + + /* you can eliminate the need for the final chunk below by padding your nes + input with three extra black pixels at the end of each row */ + + /* finish final pixels without starting any new ones */ + NES_NTSC_COLOR_IN( 0, nes_ntsc_black ); + MEOW_OUT( 0, line_out [0] ); + MEOW_OUT( 1, line_out [1] ); + + NES_NTSC_COLOR_IN( 1, nes_ntsc_black ); + MEOW_OUT( 2, line_out [2] ); + MEOW_OUT( 3, line_out [3] ); + + NES_NTSC_COLOR_IN( 2, nes_ntsc_black ); + MEOW_OUT( 4, line_out [4] ); + MEOW_OUT( 5, line_out [5] ); + MEOW_OUT( 6, line_out [6] ); +} + +static int BurstPhase = 0; + +void MMC5_hb(int); /* Ugh ugh ugh. */ +static void DoLine(MDFN_Surface *surface, int skip) +{ + uint8 target[256]; + + if(InputScanlineHook) // Frame skipping will break zapper emulation soooo muchlybadlydoubleplusungoodly. + skip = 0; + + if(RCSPROn) RefreshSprites(); + + ResetRL(target); + + if(scanline >= 0 && MMC5Hack && (ScreenON || SpriteON)) MMC5_hb(scanline); + + if(MMC5Hack) + { + ys=((scanline>>3)+MMC5HackSPScroll)&0x1F; + if(ys>=0x1E) ys-=0x1E; + } + + X6502_Run(256); + if(firstpixel < 240) + { + int newfirst = firstpixel; + + if(newfirst & 7) + { + newfirst = (newfirst + 7) &~7; + //printf("%d\n",newfirst); + RefreshLine(newfirst); + } + + Pline=0; // We don't want any PPU_hook()-calling-RefreshLine()-business going on! + + FastRefreshLine(newfirst >> 3, target); + + if(RCSPROn && spork) + FastCopySprites(newfirst >> 3, target, skip); + else if(rendis & 1) + MDFN_FastU32MemsetM8((uint32 *)(target + newfirst), 0x40404040 | 0x3C3C3C3C, (256 - newfirst) / sizeof(uint32)); + + if(!skip) + FastLineEffects(newfirst >> 3, target); + + if(InputScanlineHook) + InputScanlineHook(target, 0, newfirst, 256); + + firstpixel = 256; + if(ScreenON || SpriteON) + Fixit1(); + + Pline = target; // Restore it! + } + else + MDFNPPU_LineUpdate(); + + if(scanline >= 0) + { + uint32 *real_target = NULL; + uint16 *real_target16 = NULL; + + if(surface->pixels) + real_target = surface->pixels + scanline * surface->pitchinpix; + + if(surface->pixels16) + real_target16 = surface->pixels16 + scanline * surface->pitchinpix; + + if(NTSCBlitter) + { + if(!skip) + { + // TODO: Factor this out/make it more elegant. + if(surface->format.colorspace != MDFN_COLORSPACE_RGB || surface->format.bpp != 32) + { + MDFN_PixelFormat nf; + + memset(&nf, 0, sizeof(nf)); + + nf.bpp = 32; + nf.colorspace = MDFN_COLORSPACE_RGB; + + nf.Rshift = 0; + nf.Gshift = 8; + nf.Bshift = 16; + nf.Ashift = 24; + + surface->SetFormat(nf, false); + } + nes_ntsc_blit(surface->format, NTSCBlitter, target, emphlinebuf, nes_ntsc_min_in_width, setup.merge_fields ? scanline % 3 : BurstPhase, nes_ntsc_min_out_width, 1, real_target, surface->pitch32 * sizeof(uint32)); + } + BurstPhase = (BurstPhase + 1) % 3; + } + else + { + if(!skip) + { + if(real_target16) + for(int x = 0; x < 256; x++) + real_target16[x] = PALRAMLUTCache[(target[x] & 0x3F) | (emphlinebuf[x] << 6)]; + else + for(int x = 0; x < 256; x++) + real_target[x] = PALRAMLUTCache[(target[x] & 0x3F) | (emphlinebuf[x] << 6)]; + } + } + } + sphitx=0x100; + + if(ScreenON || SpriteON) + FetchSpriteData(); + + if(GameHBIRQHook && (ScreenON || SpriteON) && ((PPU[0]&0x38)!=0x18)) + { + X6502_Run(10); + GameHBIRQHook(); + X6502_Run(85-16-10); + } + else + { + X6502_Run(85-16); + + // A semi-hack for Star Trek: 25th Anniversary + if(GameHBIRQHook && (ScreenON || SpriteON) && ((PPU[0]&0x38)!=0x18)) + GameHBIRQHook(); + } + + if(GameHBIRQHook2 && (ScreenON || SpriteON)) + GameHBIRQHook2(); + + if(scanline == -1 && !PAL) + { + kook ^= 1; + if(ScreenON && kook) + { + X6502_Run(15); + BurstPhase = (BurstPhase + 2) % 3; + } + else + { + X6502_Run(16); + BurstPhase = (BurstPhase + 1) % 3; + } + } + else + X6502_Run(16); + + EndRL(); + + + scanline++; +} + +static uint8 numsprites,SpriteBlurp; + +static void FetchSpriteData(void) +{ + uint8 ns,sb; + uint8 H; + int vofs; + uint8 P0=PPU[0]; + + H=8; + + ns=sb=0; + + vofs=(unsigned int)(P0&0x8&(((P0&0x20)^0x20)>>2))<<9; + H+=(P0&0x20)>>2; + + for(int n = 0;n < 64;n++) + { + SPR *spr = (SPR *)&SPRAM[n * 4]; + + if(n < 2) + { + spr = (SPR *)&SPRAM[(n * 4 + PPUSPL) & 0xFF]; + } + + if((unsigned int)(scanline-spr->y)>=H) continue; + + if(nsy); + + if (Sprite16) + vadr = ((spr->no&1)<<12) + ((spr->no&0xFE)<<4); + else + vadr = (spr->no<<4)+vofs; + + if (spr->atr&V_FLIP) + { + vadr+=7; + vadr-=t; + vadr+=(P0&0x20)>>1; + vadr-=t&8; + } + else + { + vadr+=t; + vadr+=t&8; + } + + if(MMC5Hack && geniestage!=1 && Sprite16) C = MMC5SPRVRAMADR(vadr); + else C = VRAMADR(vadr); + dst->ca[0]=C[0]; + + if(PPU_hook && ns < 8) + { + PPU_hook(0x2000); + PPU_hook(vadr); + } + + dst->ca[1]=C[8]; + + if(PPU_hook && ns<8) + PPU_hook(vadr | 8); + + dst->x=spr->x; + dst->atr=spr->atr; + + ns++; + } + else + { + PPU_status|=0x20; + break; + } + } + //if(ns>=7) + //printf("%d %d\n",scanline,ns); + if(ns>8) PPU_status|=0x20; /* Handle case when >8 sprites per + scanline option is enabled. */ + else if(PPU_hook) + { + for(int n = 0; n < (8-ns); n++) + { + PPU_hook(0x2000); + PPU_hook(vofs); + } + } + numsprites=ns; + SpriteBlurp=sb; +} + + + +static void RefreshSprites(void) +{ + spork = 0; + + MDFN_FastU32MemsetM8((uint32 *)sprlinebuf, 0x80808080, 256 / sizeof(uint32)); + + if(!numsprites) + return; + + for(int n = numsprites - 1; n >= 0; n--) + { + register uint32 pixdata; + register uint8 J,atr; + register SPRB *spr = &SPRBUF[n]; + + int x = spr->x; + uint8 *C; + uint8 *VB; + + pixdata=ppulut1[spr->ca[0]]|ppulut2[spr->ca[1]]; + J=spr->ca[0]|spr->ca[1]; + atr=spr->atr; + + if(J) + { + if(n==0 && SpriteBlurp && !(PPU_status&0x40)) + { + sphitx=x; + sphitdata=J; + if(atr&H_FLIP) + sphitdata= ((J<<7)&0x80) | + ((J<<5)&0x40) | + ((J<<3)&0x20) | + ((J<<1)&0x10) | + ((J>>1)&0x08) | + ((J>>3)&0x04) | + ((J>>5)&0x02) | + ((J>>7)&0x01); + } + + C = sprlinebuf+x; + VB = (PALRAM+0x10)+((atr&3)<<2); + uint8 pbit = (atr & SP_BACK) ? 0x00 : 0x40; + + if (atr&H_FLIP) + { + if(J & 0x80) C[7]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x40) C[6]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x20) C[5]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x10) C[4]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x08) C[3]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x04) C[2]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x02) C[1]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x01) C[0]=VB[pixdata] | pbit; + } else { + if(J & 0x80) C[0]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x40) C[1]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x20) C[2]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x10) C[3]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x08) C[4]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x04) C[5]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x02) C[6]=VB[pixdata&3] | pbit; + pixdata>>=4; + if(J & 0x01) C[7]=VB[pixdata] | pbit; + } + } + } + SpriteBlurp=0; + spork=1; + + if(rendis & 2) + MDFN_FastU32MemsetM8((uint32 *)sprlinebuf, 0x80808080, 256 / sizeof(uint32)); +} + +void MDFNPPU_Reset(void) +{ + VRAMBuffer=PPU[0]=PPU[1]=PPU_status=PPU[3]=0; + PPUSPL=0; + PPUGenLatch=0; + RefreshAddr=TempAddr=0; + XOffset = 0; + vtoggle = 0; + ppudead = 1; + kook = 0; + RedoRenderCache(); +} + +void MDFNPPU_Power(void) +{ + memset(NTARAM, 0x00, 0x800); + memset(PALRAM, 0x00, 0x20); + memset(SPRAM, 0x00, 0x100); + MDFNPPU_Reset(); +} + + +int MDFNPPU_Loop(MDFN_Surface *surface, int skip) +{ + if(ppudead) /* Needed for Knight Rider, Time Lord, possibly others. */ + { + if(!skip) + surface->Fill(0, 0, 0, 0); + + X6502_Run(27384 - (256 + 85)); + ppudead = 0; + } + else + { + X6502_Run(256+85); + PPU_status |= 0x80; + PPU[3]=PPUSPL=0; /* Not sure if this is correct. According + to Matt Conte and my own tests, it is. Timing is probably + off, though. NOTE: Not having this here + breaks a Super Donkey Kong game. */ + /* I need to figure out the true nature and length + of this delay. + */ + X6502_Run(12); + + if(MDFNGameInfo->GameType == GMT_PLAYER) + DoNSFFrame(); + else + { + if(VBlankON) + TriggerNMI(); + } + X6502_Run((scanlines_per_frame-242)*(256+85)-12); + PPU_status&=0x1F; + scanline = -1; + DoLine(surface, skip); + + /* Clean this stuff up later. */ + spork=numsprites=0; + + if(MDFNGameInfo->GameType == GMT_PLAYER) + X6502_Run((256+85)*240); + else + { + for(scanline=0;scanline<240;) //scanline is incremented in DoLine. Evil. :/ + { + if(GfxDecode_Buf && scanline == GfxDecode_Line) + DoGfxDecode(); + DoLine(surface, skip); + } + if(MMC5Hack && (ScreenON || SpriteON)) MMC5_hb(scanline); + } + } /* else... to if(ppudead) */ + + if(skip) + return(0); + else + return(1); +} + +uint32 NESPPU_GetRegister(const std::string &name, std::string *special) +{ + if(name == "PPU0") + { + if(special) + { + char buf[256]; + snprintf(buf, 256, "VBlank NMI: %s, Sprite size: 8x%d, BG CHR: 0x%04x, SPR CHR: 0x%04x, VRAM Addr Increment: %d", (PPU[0] & 0x80) ? "On" : "Off", + (PPU[0] & 0x20) ? 16 : 8, (PPU[0] & 0x10) ? 0x1000 : 0x0000, (PPU[0] & 0x08) ? 0x1000 : 0x0000, + (PPU[0] & 0x04) ? 32 : 1); + *special = std::string(buf); + } + return(PPU[0]); + } + else if(name == "PPU1") + { + if(special) + { + char buf[256]; + snprintf(buf, 256, "Sprites: %s, Background: %s, Leftmost 8 SPR Pixels: %s, Leftmost 8 BG Pixels: %s", + (PPU[1] & 0x10) ? "On" : "Off", (PPU[1] & 0x08) ? "On" : "Off", + (PPU[1] & 0x04) ? "On" : "Off", (PPU[1] & 0x02) ? "On" : "Off"); + *special = std::string(buf); + } + return(PPU[1]); + } + else if(name == "PPU2") + return(PPU[2]); + else if(name == "PPU3") + return(PPU[3]); + else if(name == "XOffset") + return(XOffset); + else if(name == "RAddr") + return(RefreshAddr); + else if(name == "TAddr") + return(TempAddr); + else if(name == "VRAM Buf") + return(VRAMBuffer); + else if(name == "V-Toggle") + return(vtoggle); + else if(name == "Scanline") + { + if(scanline == -1) return(261); + else return(scanline); + } + else return(0); +} + +void NESPPU_SetRegister(const std::string &name, uint32 value) +{ + if(name == "PPU0") + { + PPU[0] = value & 0xFF; + } + else if(name == "PPU1") + { + PPU[1] = value & 0xFF; + RedoRenderCache(); + } + else if(name == "PPU2") + { + PPU[2] = value & 0xE0; + } + else if(name == "PPU3") + { + PPU[3] = value & 0xFF; + } + else if(name == "XOffset") + { + XOffset = value & 0x07; + } + else if(name == "RAddr") + { + RefreshAddr = value & 0x3FFF; + } + else if(name == "TAddr") + { + TempAddr = value & 0x3FFF; + } + else if(name == "VRAM Buf") + VRAMBuffer = value & 0xFF; + else if(name == "V-Toggle") + vtoggle = value ? 1 : 0; +} + + +int MDFNPPU_StateAction(StateMem *sm, int load, int data_only) +{ + uint16 TempAddrT,RefreshAddrT; + + SFORMAT PPU_STATEINFO[]= + { + SFARRAYN(NTARAM, 0x800, "NTAR"), + SFARRAYN(PALRAM, 0x20, "PRAM"), + SFARRAYN(SPRAM, 0x100, "SPRA"), + SFARRAYN(PPU, 0x4, "PPUR"), + SFVARN(BurstPhase, "BurstPhase"), + SFVARN(kook, "KOOK"), + SFVARN(ppudead, "DEAD"), + SFVARN(PPUSPL, "PSPL"), + SFVARN(XOffset, "XOFF"), + SFVARN(vtoggle, "VTOG"), + SFVARN(RefreshAddrT, "RADD"), + SFVARN(TempAddrT, "TADD"), + SFVARN(VRAMBuffer, "VBUF"), + SFVARN(PPUGenLatch, "PGEN"), + SFEND + }; + + if(!load) + { + TempAddrT=TempAddr; + RefreshAddrT=RefreshAddr; + } + + std::vector love; + love.push_back(SSDescriptor(PPU_STATEINFO, "PPU")); + int ret = MDFNSS_StateAction(sm, load, data_only, love); + + if(load) + { + int x; + + TempAddr=TempAddrT; + RefreshAddr=RefreshAddrT; + + for(x=0;x<0x20;x++) + { + PALRAM[x] &= 0x3F; + PALRAMCache[x] = PALRAM[x]; + } + RedoRenderCache(); + } + return(ret); +} + +static MDFN_Rect PPUDisplayRect; + +void NESPPU_GetDisplayRect(MDFN_Rect *DisplayRect) +{ + memcpy(DisplayRect, &PPUDisplayRect, sizeof(MDFN_Rect)); +} + +void NESPPU_TranslateMouseXY(uint32 &new_x, uint32 &new_y) +{ + MDFN_Rect dr; + + NESPPU_GetDisplayRect(&dr); + + new_x = (uint32)(((new_x + ((double)dr.x * MDFNGameInfo->nominal_width) / dr.w) * 256 / MDFNGameInfo->nominal_width)); + new_y = new_y + dr.y; +} + +static void RedoRL(void) +{ + PPUDisplayRect.x = NTSCBlitter ? 4 : 0; + PPUDisplayRect.w = NTSCBlitter ? 602 - 4 - 2: 256; + + if(PAL) + { + PPUDisplayRect.y = MDFN_GetSettingUI("nes.slstartp"); + PPUDisplayRect.h = MDFN_GetSettingUI("nes.slendp") - PPUDisplayRect.y + 1; + } + else + { + PPUDisplayRect.y = MDFN_GetSettingUI("nes.slstart"); + PPUDisplayRect.h = MDFN_GetSettingUI("nes.slend") - PPUDisplayRect.y + 1; + } + + if(MDFN_GetSettingUI("nes.clipsides")) + { + if(NTSCBlitter) + { + PPUDisplayRect.x += 18; + PPUDisplayRect.w -= 36; + } + else + { + PPUDisplayRect.x += 8; + PPUDisplayRect.w -= 16; + } + } + + MDFNGameInfo->nominal_width = NTSCBlitter ? PPUDisplayRect.w / 2 : PPUDisplayRect.w; + MDFNGameInfo->nominal_height = PPUDisplayRect.h; + + MDFNGameInfo->lcm_width = PPUDisplayRect.w; + MDFNGameInfo->lcm_height = MDFNGameInfo->nominal_height; + + MDFNGameInfo->fb_width = (NTSCBlitter ? 768 : 256); +} + +void MDFNPPU_Close(void) +{ + if(NTSCBlitter) + { + free(NTSCBlitter); + NTSCBlitter = NULL; + } +} + +void MDFNPPU_Init(void) +{ + makeppulut(); + rendis = 0; + maxsprites = MDFN_GetSettingB("nes.no8lim") ? 64 : 8; + + if(MDFN_GetSettingB("nes.ntscblitter") && !PAL && !NESIsVSUni && MDFNGameInfo->GameType != GMT_PLAYER) + { + static float matrix[6]; + + memset(&setup, 0, sizeof(setup)); + + if(MDFN_GetSettingB("nes.ntsc.matrix")) + { + matrix[0] = MDFN_GetSettingF("nes.ntsc.matrix.0"); + matrix[1] = MDFN_GetSettingF("nes.ntsc.matrix.1"); + matrix[2] = MDFN_GetSettingF("nes.ntsc.matrix.2"); + matrix[3] = MDFN_GetSettingF("nes.ntsc.matrix.3"); + matrix[4] = MDFN_GetSettingF("nes.ntsc.matrix.4"); + matrix[5] = MDFN_GetSettingF("nes.ntsc.matrix.5"); + + setup.decoder_matrix = matrix; + } + + setup.merge_fields = MDFN_GetSettingB("nes.ntsc.mergefields"); + setup.hue = MDFN_GetSettingF("nes.ntsc.hue"); + setup.saturation = MDFN_GetSettingF("nes.ntsc.saturation"); + setup.sharpness = MDFN_GetSettingF("nes.ntsc.sharpness"); + setup.brightness = MDFN_GetSettingF("nes.ntsc.brightness"); + setup.contrast = MDFN_GetSettingF("nes.ntsc.contrast"); + + std::string preset = MDFN_GetSettingS("nes.ntsc.preset"); + + if(preset == "composite") + setup = nes_ntsc_composite; + else if(preset == "svideo") + setup = nes_ntsc_svideo; + else if(preset == "rgb") + setup = nes_ntsc_rgb; + else if(preset == "monochrome") + setup = nes_ntsc_monochrome; + + NTSCBlitter = (nes_ntsc_emph_t *)calloc(1, sizeof(nes_ntsc_emph_t)); + nes_ntsc_init_emph(NTSCBlitter, &setup); + + } + else + NTSCBlitter = NULL; + + if(PAL) + scanlines_per_frame=312; + else + scanlines_per_frame=262; + + if(MDFNGameInfo->GameType != GMT_PLAYER) + RedoRL(); + + + for(int x = 0x2000;x < 0x4000; x += 8) + { + SetReadHandler(x, x, A200x); + BWrite[x] = B2000; + + SetReadHandler(x+1, x+1, A200x); + BWrite[x+1] = B2001; + + SetReadHandler(x+2, x+2, A2002); + BWrite[x+2] = B2002; + + SetReadHandler(x+3, x+3, A200x); + BWrite[x+3] = B2003; + + SetReadHandler(x+4, x+4, A2004); + BWrite[x+4] = B2004; + + SetReadHandler(x+5, x+5, A200x); + BWrite[x+5] = B2005; + + SetReadHandler(x+6, x+6, A200x); + BWrite[x+6] = B2006; + + SetReadHandler(x+7, x+7, A2007); + BWrite[x+7] = B2007; + } + BWrite[0x4014] = B4014; + +} + +void NESPPU_SettingChanged(const char *name) +{ + if(!strcmp(name, "nes.no8lim")) + { + maxsprites = MDFN_GetSettingB("nes.no8lim") ? 64 : 8; + } +} + +void NESPPU_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "ppu")) + { + while(Length--) + { + Address &= 0x3FFF; + + if(Address < 0x2000) + *Buffer = VPage[Address >> 10][Address]; + else if(Address >= 0x3f00) + *Buffer = PALRAM[Address & ((Address & 3)? 0x1F : 0x0C)]; + else + *Buffer = vnapage[(Address >> 10) & 0x3][Address & 0x3FF]; + + Address++; + Buffer++; + } + } +} + +void NESPPU_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "ppu")) + { + while(Length--) + { + Address &= 0x3FFF; + + if(Address < 0x2000) + VPage[Address >> 10][Address] = *Buffer; + else if(Address >= 0x3f00) + { + uint32 tmp = Address & ((Address & 3)? 0x1F : 0x0C); + PALRAM[tmp] = PALRAMCache[tmp] = *Buffer; + } + else + vnapage[(Address >> 10) & 0x3][Address & 0x3FF] = *Buffer; + + Address++; + Buffer++; + } + } +} + + +void NESPPU_SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn) +{ + GfxDecode_Buf = surface; + GfxDecode_Line = line; + GfxDecode_Layer = which; + GfxDecode_Scroll = yscroll; + GfxDecode_Pbn = pbn; + + if(GfxDecode_Line == -1) + DoGfxDecode(); +} + +static void DoGfxDecode(void) +{ + uint32 *target = GfxDecode_Buf->pixels; + int pbn = GfxDecode_Pbn & 0x3; + uint32 neo_palette[4]; + + if(GfxDecode_Pbn == -1) + { + for(int x = 0; x < 4; x++) + neo_palette[x] = GfxDecode_Buf->format.MakeColor(x * 85, x * 85, x * 85, 0xFF); + } + else + for(int x = 0; x < 4; x++) + neo_palette[x] = PALRAMLUTCache[PALRAMCache[pbn * 4 + x] & 0x3F] | GfxDecode_Buf->format.MakeColor(0, 0, 0, 0xFF); + + for(int y = 0; y < GfxDecode_Buf->h; y++) + { + for(int x = 0; x < GfxDecode_Buf->w; x+=8) + { + int which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8); + + uint8 *cg_ptr; + uint8 cg[2]; + int tile_c = 0; + + if(MMC5Hack) + { + if(GfxDecode_Layer) // Sprites + { + //which_tile &= 0x1FF; + cg_ptr = MMC5SPRVRAMADR(which_tile * 16); + } + else + { + switch(MMC5HackCHRMode) + { + default: //which_tile &= 0x1FF; + cg_ptr = MMC5BGVRAMADR(which_tile * 16); + break; + } + } + } + else + { + if(GfxDecode_Layer) // Sprites + { + pbn |= 0x4; + if(Sprite16) + { + tile_c = 0x200; + cg_ptr = VRAMADR(which_tile * 16); + } + else + { + tile_c = 0x100; + + if(SpAdrHI) + cg_ptr = VRAMADR(0x1000 + which_tile * 16); + else + cg_ptr = VRAMADR(0x0000 + which_tile * 16); + } + } + else // Background + { + tile_c = 0x100; + if(BGAdrHI) + cg_ptr = VRAMADR(0x1000 + which_tile * 16); + else + cg_ptr = VRAMADR(0x0000 + which_tile * 16); + } + } + + if(which_tile >= tile_c) + { + for(int sx = 0; sx < 8; sx++) target[x + sx] = GfxDecode_Buf->format.MakeColor(0, 0, 0, 0); + continue; + } + + cg[0] = cg_ptr[0 + (y & 0x7)]; + cg[1] = cg_ptr[8 + (y & 0x7)]; + + for(int sx = 0; sx < 8; sx++) + target[x + sx] = neo_palette[((cg[0] >> (7-sx)) & 0x1) | (((cg[1] >> (7-sx)) & 0x1) << 1)]; + + target[x + GfxDecode_Buf->w*2 + 0] = target[x + GfxDecode_Buf->w*2 + 1] = target[x + GfxDecode_Buf->w*2 + 2] = target[x + GfxDecode_Buf->w*2 + 3] = + target[x + GfxDecode_Buf->w*2 + 4] = target[x + GfxDecode_Buf->w*2 + 5] = target[x + GfxDecode_Buf->w*2 + 6] = target[x + GfxDecode_Buf->w*2 + 7] = which_tile * 16; + + target[x + GfxDecode_Buf->w*1 + 0]=target[x + GfxDecode_Buf->w*1 + 1]=target[x + GfxDecode_Buf->w*1 + 2]=target[x + GfxDecode_Buf->w*1 + 3] = + target[x + GfxDecode_Buf->w*1 + 4]=target[x + GfxDecode_Buf->w*1 + 5]=target[x + GfxDecode_Buf->w*1 + 6]=target[x + GfxDecode_Buf->w*1 + 7] = which_tile; + } + target += GfxDecode_Buf->w * 3; + } + + + +} diff --git a/libmednahawk/src/nes/ppu/ppu.h b/libmednahawk/src/nes/ppu/ppu.h new file mode 100644 index 0000000000..d757a02b1c --- /dev/null +++ b/libmednahawk/src/nes/ppu/ppu.h @@ -0,0 +1,60 @@ +#ifndef __NES_PPU_H +#define __NES_PPU_H + +void MDFNPPU_Init(void); +void MDFNPPU_Close(void); +void MDFNPPU_Reset(void); +void MDFNPPU_Power(void); +int MDFNPPU_Loop(MDFN_Surface *, int skip); + +void MDFNPPU_LineUpdate(); + +void NESPPU_GetDisplayRect(MDFN_Rect *DisplayRect); +void NESPPU_TranslateMouseXY(uint32 &new_x, uint32 &new_y); + + +extern void (*PPU_hook)(uint32 A); +extern void (*GameHBIRQHook)(void), (*GameHBIRQHook2)(void); + +/* For cart.c and banksw.h, mostly */ +extern uint8 NTARAM[0x800],*vnapage[4]; +extern uint8 PPUNTARAM; +extern uint8 PPUCHRRAM; + +void MDFNPPU_SaveState(void); +void MDFNPPU_LoadState(int version); + +extern int scanline; + +void MDFNNES_SetPixelFormat(const MDFN_PixelFormat &nf); +int MDFNPPU_StateAction(StateMem *sm, int load, int data_only); +void MDFNNES_SetLayerEnableMask(uint64 mask); + +enum +{ + PPU_GSREG_PPU0 = 0, + PPU_GSREG_PPU1, + PPU_GSREG_PPU2, + PPU_GSREG_PPU3, + PPU_GSREG_XOFFSET, + PPU_GSREG_RADDR, + PPU_GSREG_TADDR, + PPU_GSREG_VRAMBUF, + PPU_GSREG_VTOGGLE, + PPU_GSREG_SCANLINE +}; + +// FIXME, todo +//uint32 NESPPU_GetRegister(const unsigned int id, char *special, const uint32 special_len); +//void NESPPU_SetRegister(const unsigned int id, uint32 value); +uint32 NESPPU_GetRegister(const std::string &name, std::string *special); +void NESPPU_SetRegister(const std::string &name, uint32 value); + + +void NESPPU_SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn); +void NESPPU_SettingChanged(const char *name); + +void NESPPU_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer); +void NESPPU_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer); + +#endif diff --git a/libmednahawk/src/nes/sound.cpp b/libmednahawk/src/nes/sound.cpp new file mode 100644 index 0000000000..8eeafe0485 --- /dev/null +++ b/libmednahawk/src/nes/sound.cpp @@ -0,0 +1,1088 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "x6502.h" + +#include "sound.h" +#include "filter.h" + +#define SQ_SHIFT 8 +#define TRINPCM_SHIFT 0 +#include + +static void DoSQ1(void); +static void DoSQ2(void); +static void DoTriangle(void); +static void DoNoiseAndPCM(void); + +static void KillResampler(void); + +static NES_Resampler *ff = NULL; + +static int SoundPAL; + +static uint32 wlookup1[32]; +static uint32 wlookup2[203]; + +static double wlookup1_d[32], wlookup2_d[203]; + +static MDFN_ALIGN(16) int16 WaveHi[40000]; +MDFN_ALIGN(16) int16 WaveHiEx[40000]; + +std::vector GameExpSound; + +static uint8 TriCount; +static uint8 TriMode; + +static int32 tristep; + +static int32 wlcount[4]; /* Wave length counters. */ + +static uint8 IRQFrameMode; /* $4017 / xx000000 */ +static uint8 PSG[0x10]; +static uint8 RawDALatch; /* $4011 0xxxxxxx */ + +uint8 EnabledChannels; /* Byte written to $4015 */ + +typedef struct { + uint8 Speed; + uint8 Mode; /* Fixed volume(1), and loop(2) */ + uint8 DecCountTo1; + uint8 decvolume; + int reloaddec; +} ENVUNIT; + +static ENVUNIT EnvUnits[3]; + +static const int RectDuties[4]={1,2,4,6}; + +static int32 RectDutyCount[2]; +static uint8 SweepOn[2]; +static int32 curfreq[2]; +static uint8 SweepCount[2]; +static uint8 SweepReload[2]; +static uint32 SweepPeriod[2]; +static unsigned int SweepShift[2]; + +static uint16 nreg; + +static uint8 fcnt; +static int32 fhcnt; +static int32 fhinc; + +uint32 soundtsoffs; + +static int32 lengthcount[4]; +static const uint8 lengthtable[0x20]= +{ + 0x0A, 0xFE, 0x14, 0x02, 0x28, 0x04, 0x50, 0x06, 0xa0, 0x08, 0x3c, 0x0a, 0x0e, 0x0c, 0x1a, 0x0e, 0x0c, 0x10, 0x18, 0x12, 0x30, 0x14, 0x60, 0x16, 0xc0, 0x18, 0x48, 0x1a, 0x10, 0x1c, 0x20, 0x1E +}; + +static const uint32 NTSCNoiseFreqTable[0x10]= +{ + 4, 8, 16, 32, 64, 96, 128, 160, 202, 254, 380, 508, 762, 1016, 2034, 4068 +}; + +static const uint32 PALNoiseFreqTable[0x10] = +{ + 4, 7, 14, 30, 60, 88, 118, 148, 188, 236, 354, 472, 708, 944, 1890, 3778 +}; + +static const uint32 NTSCDMCTable[0x10]= +{ + 428,380,340,320,286,254,226,214, + 190,160,142,128,106, 84 ,72,54 +}; + +static const uint32 PALDMCTable[0x10]= +{ + 398, 354, 316, 298, 276, 236, 210, 198, 176, 148, 132, 118, 98, 78, 66, 50 +}; + +// $4010 - Frequency +// $4011 - Actual data outputted +// $4012 - Address register: $c000 + V*64 +// $4013 - Size register: Size in bytes = (V+1)*64 + +static int32 DMCacc=1; +static int32 DMCPeriod; +static uint8 DMCBitCount=0; + +static uint8 DMCAddressLatch,DMCSizeLatch; /* writes to 4012 and 4013 */ +static uint8 DMCFormat; /* Write to $4010 */ + +static uint32 DMCAddress; +static int32 DMCSize; +static uint8 DMCShift; +static uint8 SIRQStat=0; + +static char DMCHaveDMA; +static uint8 DMCDMABuf=0; +static char DMCHaveSample; + +static uint32 ChannelBC[5]; + +static void LoadDMCPeriod(uint8 V) +{ + if(SoundPAL) + DMCPeriod=PALDMCTable[V]; + else + DMCPeriod=NTSCDMCTable[V]; +} + +static void PrepDPCM() +{ + DMCAddress=0x4000+(DMCAddressLatch<<6); + DMCSize=(DMCSizeLatch<<4)+1; +} + +/* Instantaneous? Maybe the new freq value is being calculated all of the time... */ + +static int CheckFreq(uint32 cf, uint8 sr) +{ + uint32 mod; + if(!(sr&0x8)) + { + mod=cf>>(sr&7); + if((mod+cf)&0x800) + return(0); + } + return(1); +} + +static void SQReload(int x, uint8 V) +{ + if(EnabledChannels&(1<>3)&0x1f]; + } + + //SweepOn[x]=(PSG[(x<<2)|1]&0x80) && SweepShift[x]; + curfreq[x] = (curfreq[x] & 0xFF) | ((V&7)<<8); + //curfreq[x]=PSG[(x<<2)|0x2]|((V&7)<<8); + //SweepCount[x]=((PSG[(x<<2)|0x1]>>4)&7)+1; + + RectDutyCount[x]=7; + EnvUnits[x].reloaddec=1; + //reloadfreq[x]=1; +} + +static DECLFW(Write_PSG) +{ + A&=0x1F; + switch(A) + { + case 0x0:DoSQ1(); + EnvUnits[0].Mode=(V&0x30)>>4; + EnvUnits[0].Speed=(V&0xF); + break; + + case 0x1: + SweepReload[0] = 1; + SweepPeriod[0] = ((V >> 4) & 0x7) + 1; + SweepShift[0] = (V & 0x7); + SweepOn[0]=(V&0x80) && SweepShift[0]; + break; + + case 0x2: + DoSQ1(); + curfreq[0]&=0xFF00; + curfreq[0]|=V; + break; + + case 0x3: + SQReload(0,V); + break; + + case 0x4: + DoSQ2(); + EnvUnits[1].Mode=(V&0x30)>>4; + EnvUnits[1].Speed=(V&0xF); + break; + + case 0x5: + SweepReload[1] = 1; + SweepPeriod[1] = ((V >> 4) & 0x7) + 1; + SweepShift[1] = (V & 0x7); + SweepOn[1] = (V&0x80) && SweepShift[1]; + break; + + case 0x6:DoSQ2(); + curfreq[1]&=0xFF00; + curfreq[1]|=V; + break; + + case 0x7: + SQReload(1,V); + break; + + case 0xa:DoTriangle(); + break; + + case 0xb: + DoTriangle(); + if(EnabledChannels&0x4) + lengthcount[2]=lengthtable[(V>>3)&0x1f]; + TriMode=1; // Load mode + break; + + case 0xC:DoNoiseAndPCM(); + EnvUnits[2].Mode=(V&0x30)>>4; + EnvUnits[2].Speed=(V&0xF); + break; + + case 0xE:DoNoiseAndPCM(); + break; + + case 0xF: + DoNoiseAndPCM(); + if(EnabledChannels&0x8) + lengthcount[3]=lengthtable[(V>>3)&0x1f]; + EnvUnits[2].reloaddec=1; + break; + } + PSG[A]=V; +} + +static DECLFW(Write_DMCRegs) +{ + A&=0xF; + + switch(A) + { + case 0x00:DoNoiseAndPCM(); + LoadDMCPeriod(V&0xF); + + if(SIRQStat & 0x80) + { + if((V & 0xC0) != 0x80) + { + X6502_IRQEnd(MDFN_IQDPCM); + SIRQStat&=~0x80; + } + } + DMCFormat=V; + break; + case 0x01:DoNoiseAndPCM(); + RawDALatch=V&0x7F; + break; + case 0x02:DMCAddressLatch=V;break; + case 0x03:DMCSizeLatch=V;break; + } + + +} + +static DECLFW(StatusWrite) +{ + int x; + + DoSQ1(); + DoSQ2(); + DoTriangle(); + DoNoiseAndPCM(); + + for(x=0;x<4;x++) + if(!(V&(1<0) + lengthcount[2]--; + + if(!(PSG[0xC]&0x20)) /* Make sure loop flag is not set. */ + if(lengthcount[3]>0) + lengthcount[3]--; + + for(P=0;P<2;P++) + { + if(!(PSG[P<<2]&0x20)) /* Make sure loop flag is not set. */ + if(lengthcount[P]>0) + lengthcount[P]--; + + /* Frequency Sweep Code Here */ + /* xxxx 0000 */ + /* xxxx = hz. 120/(x+1)*/ + if(SweepCount[P]>0) + SweepCount[P]--; + if(SweepCount[P]<=0) + { + SweepCount[P]=SweepPeriod[P]; + if(SweepOn[P] && curfreq[P] >= 8) + { + int offset = curfreq[P] >> SweepShift[P]; + + if(PSG[(P<<2)+0x1]&0x8) + { + curfreq[P] -= offset + (P^1); + } + else if(curfreq[P] + offset < 0x800) + { + curfreq[P] += offset; + } + } + } + if(SweepReload[P]) + { + SweepCount[P] = SweepPeriod[P]; + SweepReload[P] = 0; + } + + } + } + + /* Now do envelope decay + linear counter. */ + + if(TriMode) // In load mode? + TriCount=PSG[0x8]&0x7F; + else if(TriCount) + TriCount--; + + if(!(PSG[0x8]&0x80)) + TriMode=0; + + for(P=0;P<3;P++) + { + if(EnvUnits[P].reloaddec) + { + EnvUnits[P].decvolume=0xF; + EnvUnits[P].DecCountTo1=EnvUnits[P].Speed+1; + EnvUnits[P].reloaddec=0; + continue; + } + + if(EnvUnits[P].DecCountTo1>0) EnvUnits[P].DecCountTo1--; + if(EnvUnits[P].DecCountTo1==0) + { + EnvUnits[P].DecCountTo1=EnvUnits[P].Speed+1; + if(EnvUnits[P].decvolume || (EnvUnits[P].Mode&0x2)) + { + EnvUnits[P].decvolume--; + EnvUnits[P].decvolume&=0xF; + } + } + } +} + +static void FrameSoundUpdate(void) +{ + // Linear counter: Bit 0-6 of $4008 + // Length counter: Bit 4-7 of $4003, $4007, $400b, $400f + + if(fcnt==3) + { + if(IRQFrameMode&0x2) + fhcnt+=fhinc; + } + fcnt=(fcnt+1) & 3; + FrameSoundStuff(fcnt); + if(!fcnt && !(IRQFrameMode&0x3)) + { + SIRQStat|=0x40; + X6502_IRQBegin(MDFN_IQFCOUNT); + } +} + +static DECLFW(Write_IRQFM) +{ + //printf("%02x\n",V); + V=(V&0xC0)>>6; + fcnt=0; + if(V&0x2) + FrameSoundUpdate(); + fhcnt=fhinc; + if(V & 1) + { + X6502_IRQEnd(MDFN_IQFCOUNT); + SIRQStat&=~0x40; + } + IRQFrameMode=V; +} + + +static INLINE void tester(void) +{ + if(DMCBitCount==0) + { + if(!DMCHaveDMA) + DMCHaveSample=0; + else + { + DMCHaveSample=1; + DMCShift=DMCDMABuf; + DMCHaveDMA=0; + } + } +} + +static INLINE void DMCDMA(void) +{ + if(DMCSize && !DMCHaveDMA) + { + X6502_DMR(0x8000+DMCAddress); + X6502_DMR(0x8000+DMCAddress); + X6502_DMR(0x8000+DMCAddress); + DMCDMABuf=X6502_DMR(0x8000+DMCAddress); + DMCHaveDMA=1; + DMCAddress=(DMCAddress+1)&0x7fff; + DMCSize--; + if(!DMCSize) + { + if(DMCFormat&0x40) + PrepDPCM(); + else + { + if(DMCFormat & 0x80) + { + SIRQStat |= 0x80; + X6502_IRQBegin(MDFN_IQDPCM); + } + } + } + } +} + +void MDFN_SoundCPUHook(int cycles) +{ + DMCDMA(); + DMCacc -= cycles; + + while(DMCacc <= 0) + { + if(DMCHaveSample) + { + uint8 bah = RawDALatch; + int t = ((DMCShift&1)<<2)-2; + + /* Unbelievably ugly hack */ + soundtsoffs+=DMCacc; + DoNoiseAndPCM(); + soundtsoffs-=DMCacc; + /* End unbelievably ugly hack */ + + RawDALatch += t; + if(RawDALatch & 0x80) + RawDALatch = bah; + } + + DMCacc += DMCPeriod; + DMCBitCount = (DMCBitCount + 1) & 7; + DMCShift >>= 1; + tester(); + } + + // This needs to come after the DMC code because of the "soundtsoffs" +=/-= hack + fhcnt-=cycles*48; + if(fhcnt<=0) + { + FrameSoundUpdate(); + fhcnt+=fhinc; + } +} + +/* This has the correct phase. Don't mess with it. */ +static INLINE void DoSQ(int x) +{ + int32 V; + int32 amp; + int32 rthresh; + int16 *D; + int32 currdc; + int32 cf; + int32 rc; + + if(curfreq[x]<8 || curfreq[x]>0x7ff) + goto endit; + if(!CheckFreq(curfreq[x],PSG[(x<<2)|0x1])) + goto endit; + if(!lengthcount[x]) + goto endit; + + if(EnvUnits[x].Mode&0x1) + amp=EnvUnits[x].Speed; + else + amp=EnvUnits[x].decvolume; + +// printf("%d\n",amp); + amp<<=SQ_SHIFT; + + rthresh=RectDuties[(PSG[(x<<2)]&0xC0)>>6]; + + D=&WaveHi[ChannelBC[x]]; + V=SOUNDTS-ChannelBC[x]; + + currdc=RectDutyCount[x]; + cf=(curfreq[x]+1)*2; + rc=wlcount[x]; + + while(V>0) + { + if(currdc>8)&1)^((nreg>>14)&1); + nreg=(nreg<<1) | feedback; + outo=amptab[nreg & 1]; + } + } + else + for(V=ChannelBC[3];V>13)&1)^((nreg>>14)&1); + nreg=(nreg<<1) | feedback; + outo=amptab[nreg & 1]; + } + } + ChannelBC[3]=SOUNDTS; +} + +static double capacimoo = 0; +int FlushEmulateSound(int reverse, int16 *SoundBuf, int32 MaxSoundFrames) +{ + int32 end,left; + + if(!timestamp) return(0); + + bool HasHiFill = 0; + + for(std::vector::iterator ep = GameExpSound.begin(); ep != GameExpSound.end(); ep++) + if(ep->HiFill) + { + HasHiFill = 1; + break; + } + + DoSQ1(); + DoSQ2(); + DoTriangle(); + DoNoiseAndPCM(); + + if(SoundBuf) + { + int16 *tmpo=&WaveHi[soundtsoffs]; + int16 *intmpo = &WaveHi[soundtsoffs]; + + if(HasHiFill) + { + int16 *intmpoex = &WaveHiEx[soundtsoffs]; + const double mult = (double)94/1789772.72727272; + + for(std::vector::iterator ep = GameExpSound.begin(); ep != GameExpSound.end(); ep++) + if(ep->HiFill) + ep->HiFill(); + + for(int x=timestamp;x;x--) + { + uint32 b=*intmpo; + double sample; + double delta; + + sample = wlookup2_d[(b>>TRINPCM_SHIFT) & 255]+wlookup1_d[b>>SQ_SHIFT]; + delta = (sample - capacimoo); + + *tmpo= (int16)(delta - *intmpoex); + // Invert expansion sound channels relative to main sound. + // I think the VRC6 is like this, but the MMC5 is not(exception handled in mmc5.c) + // Namco 106 *appears* to be like the MMC5. + // Unsure about other chips. + capacimoo += delta * mult; + + tmpo++; + intmpo++; + intmpoex++; + } + } + else + { + for(int x = timestamp; x; x--) + { + const uint32 b = *intmpo; + + *tmpo = wlookup2[(b >> TRINPCM_SHIFT) & 0xFF] + wlookup1[b >> SQ_SHIFT]; + + #if 0 + { +static double phase = 0; +static double phase_inc = 0.000; +static double phase_inc_inc = 0.000000001; + + *tmpo = 16384 * sin(phase); + phase += phase_inc; + phase_inc += phase_inc_inc; + + //static uint32 meow = 0; + //*tmpo = (((meow & 32) * 65535) / 32) - 32768; //(meow & 32) * 29200 / 32; + //meow++; + // *tmpo = (rand() & 0x7FFF) * 28000 / 32768; + //*tmpo = (int16)(rand() & 0xFFFF); // * 28000 * 2 / 32768; + } + #endif + tmpo++; + intmpo++; + } + } + + if(reverse) + { + int16 *neo1,*neo2; + + neo1 = &WaveHi[soundtsoffs]; + neo2 = &neo1[timestamp - 1]; + + while(neo1 < neo2) + { + uint16 cha = *neo1; + *neo1 = *neo2; + *neo2 = cha; + neo1++; + neo2--; + } + } + + end = ff->Do((int16*)WaveHi, SoundBuf, MaxSoundFrames, SOUNDTS, &left); + + memmove(WaveHi,(int16 *)WaveHi+SOUNDTS-left,left*sizeof(uint16)); + memset((int16 *)WaveHi+left,0,sizeof(WaveHi)-left*sizeof(uint16)); + + if(HasHiFill) + memset((int16 *)WaveHiEx+left,0,sizeof(WaveHiEx)-left*sizeof(uint16)); + } + else // Sound is disabled: + { + left = 0; + end = 0; + } + + for(std::vector::iterator ep = GameExpSound.begin(); ep != GameExpSound.end(); ep++) + if(ep->HiSync) + ep->HiSync(left); + + for(int x = 0; x < 5; x++) + ChannelBC[x] = left; + + soundtsoffs = left; + + return(end); +} + +/* FIXME: Find out what sound registers get reset on reset. I know $4001/$4005 don't, +due to that whole MegaMan 2 Game Genie thing. +*/ + +/* Called when a game is being closed. */ +void MDFNSND_Close(void) +{ + KillResampler(); +} + +void MDFNSND_Reset(void) +{ + int x; + + IRQFrameMode=0x0; + fhcnt=fhinc; + fcnt=0; + + nreg=1; + for(x=0;x<2;x++) + { + wlcount[x]=2048; + SweepOn[x]=0; + curfreq[x]=0; + } + wlcount[2]=1; //2048; + wlcount[3]=2048; + + RawDALatch=0x00; + TriCount=0; + TriMode=0; + tristep=0; + EnabledChannels=0; + for(x=0;x<4;x++) + lengthcount[x]=0; + + // FIXME: Which DMC state is reset on reset, and which on power? + DMCacc = 1; + DMCPeriod = 0; + DMCBitCount = 0; + + DMCAddressLatch = 0; + DMCSizeLatch = 0; + DMCFormat = 0; + + DMCAddress = 0; + DMCSize = 0; + DMCShift = 0; + SIRQStat=0; + + DMCHaveDMA = 0; + DMCDMABuf = 0; + DMCHaveSample = 0; + + LoadDMCPeriod(DMCFormat&0xF); +} + +void MDFNSND_Power(void) +{ + int x; + + memset(PSG, 0x00, sizeof(PSG)); + + MDFNSND_Reset(); + + memset(WaveHi,0, sizeof(WaveHi)); + memset(WaveHiEx, 0, sizeof(WaveHiEx)); + memset(&EnvUnits,0, sizeof(EnvUnits)); + + capacimoo = 0; + + for(x=0;x<5;x++) + ChannelBC[x]=0; + soundtsoffs=0; +} + +static void KillResampler(void) +{ + /* Kill the filter if it was initialized. */ + if(ff) + { + delete ff; + ff = NULL; + } +} + +static bool InitResampler(double rate) +{ + KillResampler(); + + ff = new NES_Resampler(PAL ? PAL_CPU : NTSC_CPU, rate, MDFN_GetSettingF("nes.sound_rate_error"), 94, MDFN_GetSettingI("nes.soundq")); + ff->SetVolume((double)3 / 2); + return(TRUE); +} + +bool MDFNNES_SetSoundRate(double rate) +{ + memset(WaveHi, 0, sizeof(WaveHi)); + memset(WaveHiEx, 0, sizeof(WaveHiEx)); + + KillResampler(); + + if(rate) + { + if(!InitResampler(rate)) + return(false); + } + return(TRUE); +} + +/* Called when a game has been loaded. */ +int MDFNSND_Init(bool IsPAL) +{ + SoundPAL = IsPAL; + + SetWriteHandler(0x4000, 0x400F, Write_PSG); + SetWriteHandler(0x4010, 0x4013, Write_DMCRegs); + SetWriteHandler(0x4017, 0x4017, Write_IRQFM); + + SetWriteHandler(0x4015, 0x4015, StatusWrite); + SetReadHandler(0x4015, 0x4015, StatusRead); + + wlookup1[0] = 0; + for(int x = 1; x < 32; x++) + { + double val = ( (double)16*16*16*4*95.52 / ( (double)8128 / (double)x+100) ); + + // Testing: + //val = 4323 * (double)x / 31; + + wlookup1[x] = (uint32)val; + wlookup1_d[x] = val; + } + + wlookup2[0] = 0; + for(int x = 1; x < 203; x++) + { + double val = ((double)16*16*16*4*163.67/((double)24329/(double)x+100)); + wlookup2[x] = (uint32)val; + wlookup2_d[x] = val; + } + + fhinc = SoundPAL ? 16626 : 14915; // *2 CPU clock rate + fhinc *= 24; + + return(1); +} + +int MDFNSND_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT MDFNSND_STATEINFO[]= + { + SFVARN(fhcnt, "FHCN"), + SFVARN(fcnt, "FCNT"), + SFARRAYN(PSG, 0x10, "PSG"), + + SFVARN(EnabledChannels, "ENCH"), + SFVARN(IRQFrameMode, "IQFM"), + SFVARN(nreg, "NREG"), + SFVARN(TriMode, "TRIM"), + SFVARN(TriCount, "TRIC"), + + SFVARN(EnvUnits[0].Speed, "E0SP"), + SFVARN(EnvUnits[1].Speed, "E1SP"), + SFVARN(EnvUnits[2].Speed, "E2SP"), + + SFVARN(EnvUnits[0].Mode, "E0MO"), + SFVARN(EnvUnits[1].Mode, "E1MO"), + SFVARN(EnvUnits[2].Mode, "E2MO"), + + SFVARN(EnvUnits[0].DecCountTo1, "E0D1"), + SFVARN(EnvUnits[1].DecCountTo1, "E1D1"), + SFVARN(EnvUnits[2].DecCountTo1, "E2D1"), + + SFVARN(EnvUnits[0].decvolume, "E0DV"), + SFVARN(EnvUnits[1].decvolume, "E1DV"), + SFVARN(EnvUnits[2].decvolume, "E2DV"), + + SFVARN(EnvUnits[0].reloaddec, "E0ReDec"), + SFVARN(EnvUnits[1].reloaddec, "E1ReDec"), + SFVARN(EnvUnits[2].reloaddec, "E2ReDec"), + + + SFVARN(lengthcount[0], "LEN0"), + SFVARN(lengthcount[1], "LEN1"), + SFVARN(lengthcount[2], "LEN2"), + SFVARN(lengthcount[3], "LEN3"), + + SFARRAYN(SweepOn, 2, "SWEE"), + + SFVARN(RectDutyCount[0], "RDC0"), + SFVARN(RectDutyCount[1], "RDC1"), + + SFVARN(tristep, "TRST"), + + SFVARN(wlcount[0], "WLC0"), + SFVARN(wlcount[1], "WLC1"), + SFVARN(wlcount[2], "WLC2"), + SFVARN(wlcount[3], "WLC3"), + + + SFVARN(curfreq[0], "CRF1"), + SFVARN(curfreq[1], "CRF2"), + SFARRAYN(SweepCount, 2, "SWCT"), + SFARRAYN(SweepReload, 2, "SweepReload"), + SFARRAY32N(SweepPeriod, 2, "SweepPeriod"), + SFARRAY32N(SweepShift, 2, "SweepShift"), + + SFVARN(SIRQStat, "SIRQ"), + + SFVARN(DMCacc, "5ACC"), + SFVARN(DMCBitCount, "5BIT"), + SFVARN(DMCAddress, "5ADD"), + SFVARN(DMCSize, "5SIZ"), + SFVARN(DMCShift, "5SHF"), + + SFVARN(DMCHaveDMA, "5HVDM"), + SFVARN(DMCDMABuf, "DMCDMABuf"), + SFVARN(DMCHaveSample, "5HVSP"), + + SFVARN(DMCSizeLatch, "5SZL"), + SFVARN(DMCAddressLatch, "5ADL"), + SFVARN(DMCFormat, "5FMT"), + SFVARN(RawDALatch, "RWDA"), + SFVARN(capacimoo, "CMOO"), + SFEND + }; + + std::vector love; + love.push_back(SSDescriptor(MDFNSND_STATEINFO, "SND")); + + int ret = MDFNSS_StateAction(sm, load, data_only, love); + + if(load) + { + LoadDMCPeriod(DMCFormat&0xF); + RawDALatch&=0x7F; + DMCAddress&=0x7FFF; + + if(DMCacc <= 0) + DMCacc = 1; + } + return(ret); +} + diff --git a/libmednahawk/src/nes/sound.h b/libmednahawk/src/nes/sound.h new file mode 100644 index 0000000000..2904df1c59 --- /dev/null +++ b/libmednahawk/src/nes/sound.h @@ -0,0 +1,35 @@ +#ifndef __NES_SOUND_H +#define __NES_SOUND_H + +typedef struct __EXPSOUND { + void (*HiFill)(void); + void (*HiSync)(int32 ts); + + void (*Kill)(void); +} EXPSOUND; + +#include + +extern std::vector GameExpSound; + +int FlushEmulateSound(int reverse, int16 *SoundBuf, int32 MaxSoundFrames); + +extern MDFN_ALIGN(16) int16 WaveHiEx[40000]; + +extern uint32 soundtsoffs; +#define SOUNDTS (timestamp + soundtsoffs) + +int MDFNSND_Init(bool IsPAL); +void MDFNSND_Close(void); +void MDFNSND_Power(void); +void MDFNSND_Reset(void); +void MDFNSND_SaveState(void); +void MDFNSND_LoadState(int version); + +void MDFN_SoundCPUHook(int); +int MDFNSND_StateAction(StateMem *sm, int load, int data_only); +void MDFNNES_SetSoundVolume(uint32 volume); +void MDFNNES_SetSoundMultiplier(double multiplier); +bool MDFNNES_SetSoundRate(double Rate); + +#endif diff --git a/libmednahawk/src/nes/unif.cpp b/libmednahawk/src/nes/unif.cpp new file mode 100644 index 0000000000..fcf0d16c4f --- /dev/null +++ b/libmednahawk/src/nes/unif.cpp @@ -0,0 +1,603 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "cart.h" +#include "unif.h" +#include "input.h" +#include "vsuni.h" + +typedef struct { + char ID[4]; + uint32 info; +} UNIF_HEADER; + +typedef struct { + const char *name; + int (*init)(CartInfo *); + int flags; +} BMAPPING; + +typedef struct { + const char *name; + int (*init)(MDFNFILE *fp); +} BFMAPPING; + +static CartInfo UNIFCart; + +static int vramo; +static int mirrortodo; +static uint8 *boardname; +static uint8 *sboardname; + +static uint32 CHRRAMSize; +uint8 *UNIFchrrama = NULL; +static uint8 *exntar = NULL; + +static UNIF_HEADER unhead; +static UNIF_HEADER uchead; + + +static uint8 *malloced[32]; +static uint32 mallocedsizes[32]; + +//static uint32 checksums[32]; + +static int FixRomSize(uint32 size, uint32 minimum) +{ + uint32 x=1; + + if(sizefgetc(); + mirrortodo=t; + + { + static const char *stuffo[6]={"Horizontal","Vertical","$2000","$2400","\"Four-screen\"","Controlled by Mapper Hardware"}; + if(t<6) + MDFN_printf(_("Name/Attribute Table Mirroring: %s\n"),stuffo[t]); + } + return(1); +} + +static int NAME(MDFNFILE *fp) +{ + char namebuf[100]; + int index; + int t; + + MDFN_printf(_("Name: ")); + index=0; + + while((t = fp->fgetc())>0) + if(index<99) + namebuf[index++]=t; + + namebuf[index]=0; + MDFN_printf("%s\n",namebuf); + + if(!MDFNGameInfo->name) + { + MDFNGameInfo->name=(uint8 *)malloc(strlen(namebuf)+1); + strcpy((char *)MDFNGameInfo->name,namebuf); + } + return(1); +} +static int DINF(MDFNFILE *fp) +{ + char name[100], method[100]; + uint8 d, m; + uint16 y; + int t; + + if(fp->fread(name, 1, 100) != 100) + return(0); + if((t=fp->fgetc())==EOF) return(0); + d=t; + if((t=fp->fgetc())==EOF) return(0); + m=t; + if((t=fp->fgetc())==EOF) return(0); + y=t; + if((t=fp->fgetc())==EOF) return(0); + y|=t<<8; + if(fp->fread(method, 1, 100)!=100) + return(0); + name[99]=method[99]=0; + MDFN_printf(_("Dumped by: %s\n"),name); + MDFN_printf(_("Dumped with: %s\n"),method); + { + char *months[12]={_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"), + _("August"),_("September"),_("October"),_("November"),_("December")}; + MDFN_printf(_("Dumped on: %s %d, %d\n"),months[(m-1)%12],d,y); + } + return(1); +} + +static const char *WantInput[3]; + +static int CTRL(MDFNFILE *fp) +{ + int t; + + if((t=fp->fgetc())==EOF) + return(0); + /* The information stored in this byte isn't very helpful, but it's + better than nothing...maybe. + */ + + if(t&1) + { + WantInput[0] = WantInput[1] = "gamepad"; + } + else + { + WantInput[0] = WantInput[1] = "none"; + } + + if(t&2) + { + WantInput[1] = "zapper"; + } + + return(1); +} + +static int TVCI(MDFNFILE *fp) +{ + int t; + if( (t=fp->fgetc()) ==EOF) + return(0); + if(t<=2) + { + const char *stuffo[3]={"NTSC","PAL","NTSC and PAL"}; + + if(t==0) + MDFNGameInfo->VideoSystem = VIDSYS_NTSC; + else if(t==1) + MDFNGameInfo->VideoSystem = VIDSYS_PAL; + + MDFN_printf(_("TV Standard Compatibility: %s\n"),stuffo[t]); + } + return(1); +} + +static int EnableBattery(MDFNFILE *fp) +{ + MDFN_printf(_("Battery-backed.\n")); + if(fp->fgetc()==EOF) + return(0); + UNIFCart.battery=1; + return(1); +} + +#if 0 +static int PCK(MDFNFILE *fp) +{ + int z; + z=uchead.ID[3]-'0'; + if(z<0 || z>15) return(0); +} +#endif + +static int LoadPRG(MDFNFILE *fp) +{ + int z,t; + z=uchead.ID[3]-'0'; + + if(z<0 || z>15) + return(0); + MDFN_printf(_("PRG ROM %d size: %d"),z,(int) uchead.info); + if(malloced[z]) + free(malloced[z]); + t=FixRomSize(uchead.info,2048); + if(!(malloced[z]=(uint8 *)malloc(t))) + return(0); + mallocedsizes[z]=t; + memset(malloced[z]+uchead.info,0xFF,t-uchead.info); + if(fp->fread(malloced[z],1,uchead.info)!=uchead.info) + { + MDFN_PrintError(_("Error reading PRG chunk %d"), z); + return(0); + } + else + MDFN_printf("\n"); + + SetupCartPRGMapping(z,malloced[z],t,0); + return(1); +} + +static int SetBoardName(MDFNFILE *fp) +{ + if(!(boardname=(uint8 *)malloc(uchead.info+1))) + return(0); + + fp->fread(boardname,1,uchead.info); + + boardname[uchead.info]=0; + MDFN_printf(_("Board name: %s\n"),boardname); + sboardname=boardname; + if(!memcmp(boardname,"NES-",4) || !memcmp(boardname,"UNL-",4) || !memcmp(boardname,"HVC-",4) || !memcmp(boardname,"BTL-",4) || !memcmp(boardname,"BMC-",4)) + sboardname+=4; + return(1); +} + +static int LoadCHR(MDFNFILE *fp) +{ + int z,t; + z=uchead.ID[3]-'0'; + if(z<0 || z>15) + return(0); + MDFN_printf(_("CHR ROM %d size: %d"),z,(int) uchead.info); + if(malloced[16+z]) + free(malloced[16+z]); + t=FixRomSize(uchead.info,8192); + if(!(malloced[16+z]=(uint8 *)malloc(t))) + return(0); + mallocedsizes[16+z]=t; + memset(malloced[16+z]+uchead.info,0xFF,t-uchead.info); + if(fp->fread(malloced[16+z],1,uchead.info)!=uchead.info) + { + MDFN_PrintError(_("Error reading CHR chunk %d"), z); + return(0); + } + else + MDFN_printf("\n"); + + SetupCartCHRMapping(z,malloced[16+z],t,0); + return(1); +} + + +#define BMCFLAG_FORCE4 1 +#define BMCFLAG_32KCHRR 2 // Generic UNIF code should make available 32K CHR RAM if no VROM is present(else just 8KB CHR RAM). + +static const BMAPPING bmap[] = +{ + { "BTR", BTR_Init, 0 }, + + /* MMC2 */ + { "PNROM", PNROM_Init, 0 }, + { "PEEOROM", PNROM_Init, 0}, + +/* Sachen Carts */ + { "TC-U01-1.5M", TCU01_Init,0}, + { "Sachen-8259B", S8259B_Init, 0}, + { "Sachen-8259A", S8259A_Init,0}, + { "Sachen-74LS374N", S74LS374N_Init,0}, + { "SA-016-1M", SA0161M_Init,0}, + { "SA-72007", SA72007_Init,0}, + { "SA-72008", SA72008_Init,0}, + { "SA-0036", SA0036_Init,0}, + { "SA-0037", SA0037_Init,0}, + + { "H2288", H2288_Init,0}, + { "8237", UNL8237_Init,0}, + +// /* AVE carts. */ +// { "MB-91", MB91_Init,0}, // DeathBots + { "NINA-06", NINA06_Init,0}, // F-15 City War +// { "NINA-03", NINA03_Init,0}, // Tiles of Fate +// { "NINA-001", NINA001_Init,0}, // Impossible Mission 2 + + { "HKROM", HKROM_Init,0}, + + { "EWROM", EWROM_Init,0}, + { "EKROM", EKROM_Init,0}, + { "ELROM", ELROM_Init,0}, + { "ETROM", ETROM_Init,0}, + + { "SAROM", SAROM_Init,0}, + { "SBROM", SBROM_Init,0}, + { "SCROM", SCROM_Init,0}, + { "SEROM", SEROM_Init,0}, + { "SGROM", SGROM_Init,0}, + { "SKROM", SKROM_Init,0}, + { "SLROM", SLROM_Init,0}, + { "SL1ROM", SL1ROM_Init,0}, + { "SNROM", SNROM_Init,0}, + { "SOROM", SOROM_Init,0}, + + { "TGROM", TGROM_Init,0}, + { "TR1ROM", TFROM_Init,BMCFLAG_FORCE4}, + + { "TEROM", TEROM_Init,0}, + { "TFROM", TFROM_Init,0}, + { "TLROM", TLROM_Init,0}, + { "TKROM", TKROM_Init,0}, + { "TSROM", TSROM_Init,0}, + + { "TLSROM", TLSROM_Init,0}, + { "TKSROM", TKSROM_Init,0}, + { "TQROM", TQROM_Init,0}, + { "TVROM", TLROM_Init,BMCFLAG_FORCE4}, + + { "AOROM", AOROM_Init, 0}, + { "CPROM", CPROM_Init, BMCFLAG_32KCHRR}, + { "CNROM", CNROM_Init,0}, + { "GNROM", GNROM_Init,0}, + { "NROM", NROM256_Init,0 }, + { "RROM", NROM128_Init,0 }, + { "RROM-128", NROM128_Init,0 }, + { "NROM-128", NROM128_Init,0 }, + { "NROM-256", NROM256_Init,0 }, + { "MHROM", MHROM_Init,0}, + { "UNROM", UNROM_Init, 0}, + + { "MARIO1-MALEE2", MALEE_Init, 0}, + { "Supervision16in1", Supervision16_Init,0}, + { "NovelDiamond9999999in1", Novel_Init,0}, + { "Super24in1SC03", Super24_Init,0}, + { "BioMiracleA", BioMiracleA_Init, 0}, + + { "603-5052", UNL6035052_Init, 0}, + {0,0,0} +}; + +static const BFMAPPING bfunc[] = { + { "CTRL", CTRL }, + { "TVCI", TVCI }, + { "BATR", EnableBattery }, + { "MIRR", DoMirroring }, + { "PRG", LoadPRG }, + { "CHR", LoadCHR }, + //{ "CCK", CCK }, + //{ "PCK", PCK }, + { "NAME", NAME }, + { "MAPR", SetBoardName }, + { "DINF", DINF }, + { 0, 0 } +}; + +int LoadUNIFChunks(MDFNFILE *fp) +{ + int x; + int t; + for(;;) + { + t = fp->fread(&uchead,1,4); + if(t<4) + { + if(t>0) + return 0; + return 1; + } + if(!(fp->read32le(&uchead.info))) + return 0; + t=0; + x=0; + //printf("Funky: %s\n",((uint8 *)&uchead)); + while(bfunc[x].name) + { + if(!memcmp(&uchead,bfunc[x].name,strlen(bfunc[x].name))) + { + if(!bfunc[x].init(fp)) + return 0; + t=1; + break; + } + x++; + } + if(!t) + if(fp->fseek(uchead.info, SEEK_CUR)) + return(0); + } +} + +static int InitializeBoard(void) +{ + int x=0; + + if(!sboardname) return(0); + + while(bmap[x].name) + { + if(!strcmp((char *)sboardname,(char *)bmap[x].name)) + { + if(!malloced[16]) + { + if(bmap[x].flags & BMCFLAG_32KCHRR) + CHRRAMSize = 32768; + else + CHRRAMSize = 8192; + if((UNIFchrrama=(uint8 *)malloc(CHRRAMSize))) + { + SetupCartCHRMapping(0,UNIFchrrama,CHRRAMSize,1); + } + else + return(-1); + } + + if(bmap[x].flags&BMCFLAG_FORCE4) + mirrortodo=4; + InitBoardMirroring(); + bmap[x].init(&UNIFCart); + return(1); + } + x++; + } + MDFN_PrintError(_("Board type not supported.")); + return(0); +} + +static void UNIF_Reset(void) +{ + if(UNIFCart.Reset) + UNIFCart.Reset(&UNIFCart); +} + +static void UNIF_Power(void) +{ + if(UNIFCart.Power) + UNIFCart.Power(&UNIFCart); + if(UNIFchrrama) memset(UNIFchrrama, 0xFF, CHRRAMSize); +} + +static void UNIF_Close(void) +{ + MDFN_SaveGameSave(&UNIFCart); + if(UNIFCart.Close) + UNIFCart.Close(); + FreeUNIF(); +} + +bool UNIF_TestMagic(const char *name, MDFNFILE *fp) +{ + if(fp->size < 4) + return(FALSE); + + if(memcmp(fp->data, "UNIF", 4)) + return(FALSE); + + return(TRUE); +} + + +bool UNIFLoad(const char *name, MDFNFILE *fp, NESGameType *gt) +{ + if(!UNIF_TestMagic(name, fp)) + return(FALSE); + + fp->fseek(4, SEEK_SET); + + ResetCartMapping(); + + ResetUNIF(); + memset(WantInput, 0, sizeof(WantInput)); + + if(!fp->read32le(&unhead.info)) + goto aborto; + if(fp->fseek(0x20,SEEK_SET)<0) + goto aborto; + if(!LoadUNIFChunks(fp)) + goto aborto; + { + int x; + md5_context md5; + + md5.starts(); + + for(x=0;x<32;x++) + if(malloced[x]) + { + md5.update(malloced[x],mallocedsizes[x]); + } + md5.finish(UNIFCart.MD5); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(UNIFCart.MD5, 0).c_str()); + memcpy(MDFNGameInfo->MD5,UNIFCart.MD5,sizeof(UNIFCart.MD5)); + MDFN_printf("\n"); + } + + if(!InitializeBoard()) + goto aborto; + + MDFN_LoadGameSave(&UNIFCart); + + gt->Power = UNIF_Power; + gt->Reset = UNIF_Reset; + gt->Close = UNIF_Close; + gt->StateAction = UNIF_StateAction; + + if(UNIFCart.CartExpSound.HiFill) + GameExpSound.push_back(UNIFCart.CartExpSound); + + MDFNGameInfo->DesiredInput.push_back(WantInput[0]); + MDFNGameInfo->DesiredInput.push_back(WantInput[1]); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + + MDFNGameInfo->DesiredInput.push_back(WantInput[2]); + + + return 1; + + aborto: + + FreeUNIF(); + ResetUNIF(); + return 0; +} diff --git a/libmednahawk/src/nes/unif.h b/libmednahawk/src/nes/unif.h new file mode 100644 index 0000000000..7b44bfe986 --- /dev/null +++ b/libmednahawk/src/nes/unif.h @@ -0,0 +1,76 @@ +int UNL6035052_Init(CartInfo *info); + + +int BIC43_Init(CartInfo *info); +int BIC48_Init(CartInfo *info); +int BIC62_Init(CartInfo *info); +int BIC64_Init(CartInfo *info); + +int AGCI50282_Init(CartInfo *info); +int BioMiracleA_Init(CartInfo *info); +int NINA06_Init(CartInfo *info); + +int AOROM_Init(CartInfo *info); +int BTR_Init(CartInfo *info); + +int TCU01_Init(CartInfo *info); +int S8259B_Init(CartInfo *info); +int S8259A_Init(CartInfo *info); +int S74LS374N_Init(CartInfo *info); +int SA0161M_Init(CartInfo *info); + +int SA72007_Init(CartInfo *info); +int SA72008_Init(CartInfo *info); +int SA0036_Init(CartInfo *info); +int SA0037_Init(CartInfo *info); + +int H2288_Init(CartInfo *info); +int UNL8237_Init(CartInfo *info); + +int HKROM_Init(CartInfo *info); + +int ETROM_Init(CartInfo *info); +int EKROM_Init(CartInfo *info); +int ELROM_Init(CartInfo *info); +int EWROM_Init(CartInfo *info); + +int SAROM_Init(CartInfo *info); +int SBROM_Init(CartInfo *info); +int SCROM_Init(CartInfo *info); +int SEROM_Init(CartInfo *info); +int SGROM_Init(CartInfo *info); +int SKROM_Init(CartInfo *info); +int SLROM_Init(CartInfo *info); +int SL1ROM_Init(CartInfo *info); +int SNROM_Init(CartInfo *info); +int SOROM_Init(CartInfo *info); + +int NROM_Init(CartInfo *info); +int NROM256_Init(CartInfo *info); +int NROM128_Init(CartInfo *info); +int MHROM_Init(CartInfo *info); +int UNROM_Init(CartInfo *info); +int MALEE_Init(CartInfo *info); +int Supervision16_Init(CartInfo *info); +int Super24_Init(CartInfo *info); +int Novel_Init(CartInfo *info); +int CNROM_Init(CartInfo *info); +int CPROM_Init(CartInfo *info); +int GNROM_Init(CartInfo *info); + +int TEROM_Init(CartInfo *info); +int TFROM_Init(CartInfo *info); +int TGROM_Init(CartInfo *info); +int TKROM_Init(CartInfo *info); +int TSROM_Init(CartInfo *info); +int TLROM_Init(CartInfo *info); +int TLSROM_Init(CartInfo *info); +int TKSROM_Init(CartInfo *info); +int TQROM_Init(CartInfo *info); +int TQROM_Init(CartInfo *info); + +int MMC4_Init(CartInfo *info); +int PNROM_Init(CartInfo *info); + +extern uint8 *UNIFchrrama; // Meh. So I can stop CHR RAM + // bank switcherooing with certain boards... diff --git a/libmednahawk/src/nes/vsuni.cpp b/libmednahawk/src/nes/vsuni.cpp new file mode 100644 index 0000000000..b606cf3591 --- /dev/null +++ b/libmednahawk/src/nes/vsuni.cpp @@ -0,0 +1,403 @@ +/* Mednafen - Multi-system Emulator + * + * Copyright notice for this file: + * Copyright (C) 2003 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "x6502.h" +#include "input.h" +#include "vsuni.h" +#include "cart.h" +#include "ppu/palette.h" + +static uint8 WRAM[8192]; + +#define IOPTION_GUN 0x1 +#define IOPTION_SWAPDIRAB 0x2 + +#define IOPTION_PREDIP 0x10 +typedef struct +{ + const char *name; + uint64 md5partial; + int mapper; + int mirroring; + int ppu; + int ioption; + int predip; +} VSUNIENTRY; + +VSUNIENTRY *curvs; + +static uint8 DIPS=0; +uint8 vsdip=0; + +void MDFN_VSUniToggleDIPView(void) +{ + DIPS=!DIPS; +} + +void MDFN_VSUniToggleDIP(int w) +{ + vsdip^=1<> w) & 1) != state) + MDFN_VSUniToggleDIP(w); +} + +uint8 MDFNI_VSUniGetDIPs(void) +{ + return(vsdip); +} + +static uint8 secdata[2][32]= +{ + { + 0xff, 0xbf, 0xb7, 0x97, 0x97, 0x17, 0x57, 0x4f, + 0x6f, 0x6b, 0xeb, 0xa9, 0xb1, 0x90, 0x94, 0x14, + 0x56, 0x4e, 0x6f, 0x6b, 0xeb, 0xa9, 0xb1, 0x90, + 0xd4, 0x5c, 0x3e, 0x26, 0x87, 0x83, 0x13, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } +}; + +static uint8 *secptr; + +static uint8 VSindex; + +static DECLFR(VSSecRead) +{ + switch(A) + { + case 0x5e00: VSindex=0;return X.DB; + case 0x5e01: return(secptr[(VSindex++)&0x1F]); + } + return(0x00); +} +uint8 coinon=0; + +void MDFN_VSUniCoin(void) +{ + coinon=6; +} + +static int curppu; +static int64 curmd5; + +#define RP2C04_001 1 +#define RP2C04_002 2 +#define RP2C04_003 3 +#define RP2C04_004 4 +#define RCP2C03B 5 +#define RC2C05_01 6 +#define RC2C05_02 7 +#define RC2C05_03 8 +#define RC2C05_04 9 + +static readfunc OldReadPPU; +static writefunc OldWritePPU[2]; + +static DECLFR(A2002_Gumshoe) +{ + return( (OldReadPPU(A)&~0x3F) | 0x1C); +} + +static DECLFR(A2002_Topgun) +{ + return( (OldReadPPU(A)&~0x3F) | 0x1B); +} + +static DECLFR(A2002_MBJ) // Mighty Bomb Jack +{ + return( (OldReadPPU(A)&~0x3F) | 0x3D); +} + +static DECLFW(B2000_2001_2C05) +{ + OldWritePPU[(A&1)^1](A ^ 1, V); +} +static uint8 xevselect = 0; +static DECLFR(XevRead) +{ + //printf("%04x\n",A); + if(A == 0x54FF) + { + return(0x5); + } + else if(A == 0x5678) + { + return(xevselect?0:1); + } + else if(A == 0x578F) + { + return(xevselect?0xd1:0x89); + } + else if(A == 0x5567) + { + xevselect ^=1; + return(xevselect?0x37:0x3E); + } + return(X.DB); +} + +void MDFN_VSUniSwap(uint8 *j0, uint8 *j1) +{ + if(curvs->ioption & IOPTION_SWAPDIRAB) + { + uint16 t=*j0; + *j0=(*j0&0xC)|(*j1&0xF3); + *j1=(*j1&0xC)|(t&0xF3); + } +} + +void MDFN_VSUniInstallRWHooks(void) +{ + assert(NESIsVSUni); + + if(secptr) + SetReadHandler(0x5e00,0x5e01,VSSecRead); + + if(curppu == RC2C05_04) + { + OldReadPPU = GetReadHandler(0x2002); + SetReadHandler(0x2002, 0x2002, A2002_Topgun); + } + else if(curppu == RC2C05_03) + { + OldReadPPU = GetReadHandler(0x2002); + SetReadHandler(0x2002, 0x2002, A2002_Gumshoe); + } + else if(curppu == RC2C05_02) + { + OldReadPPU = GetReadHandler(0x2002); + SetReadHandler(0x2002, 0x2002, A2002_MBJ); + } + if(curppu == RC2C05_04 || curppu == RC2C05_01 || curppu == RC2C05_03 || curppu == RC2C05_02) + { + OldWritePPU[0] = GetWriteHandler(0x2000); + OldWritePPU[1] = GetWriteHandler(0x2001); + SetWriteHandler(0x2000, 0x2001, B2000_2001_2C05); + } + if(curmd5 == 0x2d396247cf58f9faLL) /* Super Xevious */ + { + SetReadHandler(0x5400,0x57FF,XevRead); + } +} + +void MDFN_VSUniPower(void) +{ + coinon = 0; + VSindex = 0; + + memset(WRAM, 0xFF, 8192); + setprg8r(0x10, 0x6000, 0); +} + +/* Games that will probably not be supported ever(or for a long time), since they require + dual-system: + + Balloon Fight + VS Mahjong + VS Tennis + Wrecking Crew +*/ + +VSUNIENTRY VSUniGames[] = +{ + {"Baseball", 0x691d4200ea42be45LL, 99, 2,RP2C04_001,0}, + {"Battle City", 0x8540949d74c4d0ebLL, 99, 2,RP2C04_001,0}, + {"Battle City(Bootleg)",0x8093cbe7137ac031LL, 99, 2,RP2C04_001,0}, + + {"Clu Clu Land", 0x1b8123218f62b1eeLL, 99, 2,RP2C04_004,IOPTION_SWAPDIRAB}, + {"Dr Mario", 0xe1af09c477dc0081LL, 1, 0,RP2C04_003,IOPTION_SWAPDIRAB}, + {"Duck Hunt", 0x47735d1e5f1205bbLL, 99, 2,RCP2C03B ,IOPTION_GUN}, + {"Excitebike", 0x3dcd1401bcafde77LL, 99, 2,RP2C04_003,0}, + {"Excitebike (J)", 0x7ea51c9d007375f0LL, 99, 2,RP2C04_004,0}, + {"Freedom Force", 0xed96436bd1b5e688LL, 4, 0,RP2C04_001,IOPTION_GUN}, + {"Stroke and Match Golf",0x612325606e82bc66LL, 99, 2,RP2C04_002,IOPTION_SWAPDIRAB|IOPTION_PREDIP,0x01}, + + {"Goonies", 0x3b0085c4ff29098eLL, 151,1,RP2C04_003,0}, + {"Goonies", 0xb4032d694e1d2733LL, 151, 1, RP2C04_003, 0 }, + {"Gradius", 0x50687ae63bdad976LL,151, 1,RP2C04_001,IOPTION_SWAPDIRAB}, + {"Gumshoe", 0xb8500780bf69ce29LL, 99, 2,RC2C05_03,IOPTION_GUN}, + {"Hogan's Alley", 0xd78b7f0bb621fb45LL, 99, 2,RP2C04_001,IOPTION_GUN}, + {"Ice Climber", 0xd21e999513435e2aLL, 99, 2,RP2C04_004,IOPTION_SWAPDIRAB}, + {"Ladies Golf", 0x781b24be57ef6785LL, 99, 2,RP2C04_002,IOPTION_SWAPDIRAB|IOPTION_PREDIP,0x1}, + + {"Mach Rider", 0x015672618af06441LL, 99, 2, RP2C04_002,0}, + {"Mach Rider (J)", 0xa625afb399811a8aLL, 99, 2, RP2C04_001,0}, + {"Mighty Bomb Jack", 0xe6a89f4873fac37bLL, 0, 2, RC2C05_02,0}, + {"Ninja Jajamaru Kun", 0xb26a2c31474099c0LL, 99, 2,RC2C05_01 ,IOPTION_SWAPDIRAB}, + {"Pinball", 0xc5f49d3de7f2e9b8LL, 99, 2,RP2C04_001,IOPTION_PREDIP,0x01}, + {"Pinball (J)", 0x66ab1a3828cc901cLL, 99, 2,RCP2C03B,IOPTION_PREDIP,0x1}, + {"Platoon", 0x160f237351c19f1fLL, 68, 1,RP2C04_001,0}, + {"RBI Baseball", 0x6a02d345812938afLL, 4, 1,RP2C04_001 ,IOPTION_SWAPDIRAB}, + {"Soccer", 0xd4e7a9058780eda3LL, 99, 2,RP2C04_003,IOPTION_SWAPDIRAB}, + {"Star Luster", 0x8360e134b316d94cLL, 99, 2,RCP2C03B ,0}, + {"Stroke and Match Golf (J)",0x869bb83e02509747LL, 99, 2,RCP2C03B,IOPTION_SWAPDIRAB|IOPTION_PREDIP,0x1}, + {"Super Sky Kid", 0x78d04c1dd4ec0101LL, 4, 1,RCP2C03B ,IOPTION_SWAPDIRAB | IOPTION_PREDIP,0x20}, + + {"Super Xevious", 0x2d396247cf58f9faLL, 206, 0,RP2C04_001,0}, + {"Tetris", 0x531a5e8eea4ce157LL, 99, 2,RCP2C03B ,IOPTION_PREDIP,0x20}, + {"Top Gun", 0xf1dea36e6a7b531dLL, 2, 0,RC2C05_04 ,0}, + {"VS Castlevania", 0x92fd6909c81305b9LL, 2, 1,RP2C04_002,0}, + {"VS Slalom", 0x4889b5a50a623215LL, 0, 1,RP2C04_002,0}, + + {"VS Super Mario Bros",0x39d8cfa788e20b6cLL, 99, 2,RP2C04_004,0}, // Bad? + {"VS Super Mario Bros",0xfc182e5aefbce14dLL, 99, 2,RP2C04_004,0}, + + {"VS TKO Boxing", 0x6e1ee06171d8ce3aLL,4, 1,RP2C04_003,IOPTION_PREDIP,0x00}, + {0} +}; + +static unsigned int wpal; + +unsigned int MDFN_VSUniGetPaletteNum(void) +{ + return(wpal); +} + +void MDFN_VSUniCheck(uint64 md5partial, int *MapperNo, int *Mirroring) +{ + VSUNIENTRY *vs = VSUniGames; + + while(vs->name) + { + if(md5partial == vs->md5partial) + { + if(vs->ppu < RCP2C03B) + wpal = vs->ppu; + else + wpal = 5; + //puts(vs->name); + *MapperNo = vs->mapper; + *Mirroring = vs->mirroring; + + NESIsVSUni = TRUE; + MDFNGameInfo->GameType = GMT_ARCADE; + + curppu = vs->ppu; + curmd5 = md5partial; + + secptr = 0; + + { + static const uint64 tko=0x6e1ee06171d8ce3aULL, rbi=0x6a02d345812938afULL; + if(md5partial == tko) + secptr=secdata[0]; + if(md5partial == rbi) + secptr = secdata[1]; + } + + vsdip = 0x0; + if(vs->ioption & IOPTION_PREDIP) + { + vsdip= vs->predip; + } + if(vs->ioption & IOPTION_GUN) + { + MDFNGameInfo->DesiredInput.push_back("zapper"); + MDFNGameInfo->DesiredInput.push_back("none"); + MDFNGameInfo->DesiredInput.push_back("none"); + MDFNGameInfo->DesiredInput.push_back("none"); + + MDFNGameInfo->DesiredInput.push_back("none"); + } + else + { + MDFNGameInfo->DesiredInput.push_back("gamepad"); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + MDFNGameInfo->DesiredInput.push_back("gamepad"); + + MDFNGameInfo->DesiredInput.push_back("none"); + } + curvs = vs; + SetupCartPRGMapping(0x10, WRAM, 8192, 1); + SetReadHandler(0x6000, 0x7FFF, CartBR); + SetWriteHandler(0x6000, 0x7FFF, CartBW); + + return; + } + vs++; + } +} + +void MDFN_VSUniDraw(MDFN_Surface *surface) +{ + uint32 *XBuf = surface->pixels; + + uint32 *dest; + int y,x; + + if(!DIPS) return; + + dest=(uint32 *)(XBuf+256*12+164); + for(y=24;y;y--,dest+=256-72) + { + for(x=72;x;x--,dest++) + *dest = surface->MakeColor(0, 0, 0); + } + + dest=(uint32 *)(XBuf+256*(12+4)+164+6 ); + for(y=16;y;y--,dest+=256-64) + for(x=8;x;x--) + { + uint32 col = surface->MakeColor(0xE0, 0xE0, 0xE0); + *dest=col; //0x01010101; + *(dest + 1) = col; + *(dest + 2) = col; + *(dest + 3) = col; + dest+=8; + } + + dest=(uint32 *)(XBuf+256*(12+4)+164+6 ); + for(x=0;x<8;x++,dest+=8) + { + uint32 *da=dest+256; + + if(!((vsdip>>x)&1)) + da+=256*10; + for(y=4;y;y--,da+=256) + { + *da = *(da + 1) = *(da + 2) = *(da + 3) = surface->MakeColor(0x70, 0x10, 0x70); + } + } + +} + +int MDFNNES_VSUNIStateAction(StateMem *sm, int load, int state_only) +{ + SFORMAT StateRegs[]= + { + SFVAR(vsdip), SFVAR(coinon), SFVAR(VSindex), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, state_only, StateRegs, "VSUN"); + + return(ret); +} diff --git a/libmednahawk/src/nes/vsuni.h b/libmednahawk/src/nes/vsuni.h new file mode 100644 index 0000000000..13eb6b4e94 --- /dev/null +++ b/libmednahawk/src/nes/vsuni.h @@ -0,0 +1,15 @@ +void MDFN_VSUniPower(void); +void MDFN_VSUniCheck(uint64 md5partial, int *, int *); +void MDFN_VSUniDraw(MDFN_Surface *surface); + +void MDFN_VSUniToggleDIPView(void); +void MDFN_VSUniToggleDIP(int); /* For movies and netplay */ +void MDFN_VSUniCoin(void); +void MDFN_VSUniSwap(uint8 *j0, uint8 *j1); + +int MDFNNES_VSUNIStateAction(StateMem *sm, int load, int state_only); + +void MDFN_VSUniInstallRWHooks(void); + +unsigned int MDFN_VSUniGetPaletteNum(void); + diff --git a/libmednahawk/src/nes/x6502.cpp b/libmednahawk/src/nes/x6502.cpp new file mode 100644 index 0000000000..bcf5f3da3b --- /dev/null +++ b/libmednahawk/src/nes/x6502.cpp @@ -0,0 +1,733 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "nes.h" +#include "x6502.h" +#include "sound.h" +#include "debug.h" + +X6502 X; + +#ifdef WANT_DEBUGGER +void (*X6502_Run)(int32 cycles); +#endif + +uint32 timestamp; +void (*MapIRQHook)(int a); + +#define _PC X.PC +#define _A X.A +#define _X X.X +#define _Y X.Y +#define _S X.S +#define _P X.P +#define _PI X.mooPI +#define _DB X.DB +#define _count X.count +#define _tcount X.tcount +#define _IRQlow X.IRQlow +#define _jammed X.jammed + +#define ADDCYC(x) \ +{ \ + int __x=x; \ + _tcount+=__x; \ + _count-=__x*48; \ + timestamp+=__x; \ +} + +extern uint8 *Page[32]; + +static INLINE uint8 RdMemNorm(unsigned int A) +{ + return(_DB=ARead[A](A)); +} + +static INLINE void WrMemNorm(unsigned int A, uint8 V) +{ + BWrite[A](A,V); +} + +#ifdef WANT_DEBUGGER +X6502 XSave; /* This is getting ugly. */ +//#define RdMemHook(A) ( X.ReadHook?(_DB=X.ReadHook(&X,A)):(_DB=ARead[A](A)) ) +//#define WrMemHook(A,V) { if(X.WriteHook) X.WriteHook(&X,A,V); else BWrite[A](A,V); } + +static INLINE uint8 RdMemHook(unsigned int A) +{ + if(X.ReadHook) + return(_DB = X.ReadHook(&X,A) ); + else + return(_DB=ARead[A](A)); +} + +static INLINE void WrMemHook(unsigned int A, uint8 V) +{ + if(X.WriteHook) + X.WriteHook(&X,A,V); + else if(!X.preexec) + BWrite[A](A,V); +} +#endif + +uint8 X6502_DMR(uint32 A) +{ + ADDCYC(1); + return(X.DB=ARead[A](A)); +} + +void X6502_DMW(uint32 A, uint8 V) +{ + ADDCYC(1); + BWrite[A](A,V); +} + +#define PUSH(V) \ +{ \ + uint8 VTMP=V; \ + WrMem(0x100+_S,VTMP); \ + _S--; \ +} + +#define POP() RdMem(0x100+(++_S)) + +static uint8 ZNTable[256]; +/* Some of these operations will only make sense if you know what the flag + constants are. */ + +#define X_ZN(zort) _P&=~(Z_FLAG|N_FLAG);_P|=ZNTable[zort] +#define X_ZNT(zort) _P|=ZNTable[zort] + +#define JR(cond); \ +{ \ + if(cond) \ + { \ + uint32 tmp; \ + int32 disp; \ + disp=(int8)RdMem(_PC); \ + _PC++; \ + ADDCYC(1); \ + tmp=_PC; \ + _PC+=disp; \ + if((tmp^_PC)&0x100) \ + ADDCYC(1); \ + \ + ADDBT(_PC); \ + } \ + else _PC++; \ +} + + +#define LDA _A=x;X_ZN(_A) +#define LDX _X=x;X_ZN(_X) +#define LDY _Y=x;X_ZN(_Y) + +/* All of the freaky arithmetic operations. */ +#define AND _A&=x;X_ZN(_A) +#define BIT _P&=~(Z_FLAG|V_FLAG|N_FLAG);_P|=ZNTable[x&_A]&Z_FLAG;_P|=x&(V_FLAG|N_FLAG) +#define EOR _A^=x;X_ZN(_A) +#define ORA _A|=x;X_ZN(_A) + +#define ADC { \ + uint32 l=_A+x+(_P&1); \ + _P&=~(Z_FLAG|C_FLAG|N_FLAG|V_FLAG); \ + _P|=((((_A^x)&0x80)^0x80) & ((_A^l)&0x80))>>1; \ + _P|=(l>>8)&C_FLAG; \ + _A=l; \ + X_ZNT(_A); \ + } + +#define SBC { \ + uint32 l=_A-x-((_P&1)^1); \ + _P&=~(Z_FLAG|C_FLAG|N_FLAG|V_FLAG); \ + _P|=((_A^l)&(_A^x)&0x80)>>1; \ + _P|=((l>>8)&C_FLAG)^C_FLAG; \ + _A=l; \ + X_ZNT(_A); \ + } + +#define CMPL(a1,a2) { \ + uint32 t=a1-a2; \ + X_ZN(t&0xFF); \ + _P&=~C_FLAG; \ + _P|=((t>>8)&C_FLAG)^C_FLAG; \ + } + +/* Special undocumented operation. Very similar to CMP. */ +#define AXS { \ + uint32 t=(_A&_X)-x; \ + X_ZN(t&0xFF); \ + _P&=~C_FLAG; \ + _P|=((t>>8)&C_FLAG)^C_FLAG; \ + _X=t; \ + } + +#define CMP CMPL(_A,x) +#define CPX CMPL(_X,x) +#define CPY CMPL(_Y,x) + +/* The following operations modify the byte being worked on. */ +#define DEC x--;X_ZN(x) +#define INC x++;X_ZN(x) + +#define ASL _P&=~C_FLAG;_P|=x>>7;x<<=1;X_ZN(x) +#define LSR _P&=~(C_FLAG|N_FLAG|Z_FLAG);_P|=x&1;x>>=1;X_ZNT(x) + +/* For undocumented instructions, maybe for other things later... */ +#define LSRA _P&=~(C_FLAG|N_FLAG|Z_FLAG);_P|=_A&1;_A>>=1;X_ZNT(_A) + +#define ROL { \ + uint8 l=x>>7; \ + x<<=1; \ + x|=_P&C_FLAG; \ + _P&=~(Z_FLAG|N_FLAG|C_FLAG); \ + _P|=l; \ + X_ZNT(x); \ + } +#define ROR { \ + uint8 l=x&1; \ + x>>=1; \ + x|=(_P&C_FLAG)<<7; \ + _P&=~(Z_FLAG|N_FLAG|C_FLAG); \ + _P|=l; \ + X_ZNT(x); \ + } + +/* Icky icky thing for some undocumented instructions. Can easily be + broken if names of local variables are changed. +*/ + +/* Absolute */ +#define GetAB(target) \ +{ \ + target=RdMem(_PC); \ + _PC++; \ + target|=RdMem(_PC)<<8; \ + _PC++; \ +} + +/* Absolute Indexed(for reads) */ +#define GetABIRD(target, i) \ +{ \ + unsigned int tmp; \ + GetAB(tmp); \ + target=tmp; \ + target+=i; \ + if((target^tmp)&0x100) \ + { \ + RdMem(target - 0x100); \ + ADDCYC(1); \ + } \ +} + +/* Absolute Indexed(for writes and rmws) */ +#define GetABIWR(target, i) \ +{ \ + unsigned int rt; \ + GetAB(rt); \ + target=rt; \ + target+=i; \ + RdMem((target&0x00FF)|(rt&0xFF00)); \ +} + +/* Zero Page */ +#define GetZP(target) \ +{ \ + target=RdMem(_PC); \ + _PC++; \ +} + +/* Zero Page Indexed */ +#define GetZPI(target,i) \ +{ \ + target=i+RdMem(_PC); \ + _PC++; \ +} + +/* Indexed Indirect */ +#define GetIX(target) \ +{ \ + uint8 tmp; \ + tmp=RdMem(_PC); \ + _PC++; \ + tmp+=_X; \ + target=RdMem(tmp); \ + tmp++; \ + target|=RdMem(tmp)<<8; \ +} + +/* Indirect Indexed(for reads) */ +#define GetIYRD(target) \ +{ \ + unsigned int rt; \ + uint8 tmp; \ + tmp=RdMem(_PC); \ + _PC++; \ + rt=RdMem(tmp); \ + tmp++; \ + rt|=RdMem(tmp)<<8; \ + target=rt; \ + target+=_Y; \ + if((target^rt)&0x100) \ + { \ + RdMem(target - 0x100); \ + ADDCYC(1); \ + } \ +} + +/* Indirect Indexed(for writes and rmws) */ +#define GetIYWR(target) \ +{ \ + unsigned int rt; \ + uint8 tmp; \ + tmp=RdMem(_PC); \ + _PC++; \ + rt=RdMem(tmp); \ + tmp++; \ + rt|=RdMem(tmp)<<8; \ + target=rt; \ + target+=_Y; \ + RdMem((target&0x00FF)|(rt&0xFF00)); \ +} + +/* Now come the macros to wrap up all of the above stuff addressing mode functions + and operation macros. Note that operation macros will always operate(redundant + redundant) on the variable "x". +*/ + +#define RMW_A(op) {uint8 x=_A; op; _A=x; break; } /* Meh... */ +#define RMW_AB(op) {unsigned int A; uint8 x; GetAB(A); x=RdMem(A); WrMem(A,x); op; WrMem(A,x); break; } +#define RMW_ABI(reg,op) {unsigned int A; uint8 x; GetABIWR(A,reg); x=RdMem(A); WrMem(A,x); op; WrMem(A,x); break; } +#define RMW_ABX(op) RMW_ABI(_X,op) +#define RMW_ABY(op) RMW_ABI(_Y,op) +#define RMW_IX(op) {unsigned int A; uint8 x; GetIX(A); x=RdMem(A); WrMem(A,x); op; WrMem(A,x); break; } +#define RMW_IY(op) {unsigned int A; uint8 x; GetIYWR(A); x=RdMem(A); WrMem(A,x); op; WrMem(A,x); break; } +#define RMW_ZP(op) {uint8 A; uint8 x; GetZP(A); x=RdMem(A); op; WrMem(A,x); break; } +#define RMW_ZPX(op) {uint8 A; uint8 x; GetZPI(A,_X); x=RdMem(A); op; WrMem(A,x); break;} + +#define LD_IM(op) {uint8 x; x=RdMem(_PC); _PC++; op; break;} +#define LD_ZP(op) {uint8 A; uint8 x; GetZP(A); x=RdMem(A); op; break;} +#define LD_ZPX(op) {uint8 A; uint8 x; GetZPI(A,_X); x=RdMem(A); op; break;} +#define LD_ZPY(op) {uint8 A; uint8 x; GetZPI(A,_Y); x=RdMem(A); op; break;} +#define LD_AB(op) {unsigned int A; uint8 x; GetAB(A); x=RdMem(A); op; break; } +#define LD_ABI(reg,op) {unsigned int A; uint8 x; GetABIRD(A,reg); x=RdMem(A); op; break;} +#define LD_ABX(op) LD_ABI(_X,op) +#define LD_ABY(op) LD_ABI(_Y,op) +#define LD_IX(op) {unsigned int A; uint8 x; GetIX(A); x=RdMem(A); op; break;} +#define LD_IY(op) {unsigned int A; uint8 x; GetIYRD(A); x=RdMem(A); op; break;} + +#define ST_ZP(r) {uint8 A; GetZP(A); WrMem(A,r); break;} +#define ST_ZPX(r) {uint8 A; GetZPI(A,_X); WrMem(A,r); break;} +#define ST_ZPY(r) {uint8 A; GetZPI(A,_Y); WrMem(A,r); break;} +#define ST_AB(r) {unsigned int A; GetAB(A); WrMem(A,r); break;} +#define ST_ABI(reg,r) {unsigned int A; GetABIWR(A,reg); WrMem(A,r); break; } +#define ST_ABX(r) ST_ABI(_X,r) +#define ST_ABY(r) ST_ABI(_Y,r) +#define ST_IX(r) {unsigned int A; GetIX(A); WrMem(A,r); break; } +#define ST_IY(r) {unsigned int A; GetIYWR(A); WrMem(A,r); break; } + +static const uint8 CycTable[256] = +{ +/*0x00*/ 7,6,2,8,3,3,5,5,3,2,2,2,4,4,6,6, +/*0x10*/ 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7, +/*0x20*/ 6,6,2,8,3,3,5,5,4,2,2,2,4,4,6,6, +/*0x30*/ 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7, +/*0x40*/ 6,6,2,8,3,3,5,5,3,2,2,2,3,4,6,6, +/*0x50*/ 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7, +/*0x60*/ 6,6,2,8,3,3,5,5,4,2,2,2,5,4,6,6, +/*0x70*/ 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7, +/*0x80*/ 2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4, +/*0x90*/ 2,6,2,6,4,4,4,4,2,5,2,5,5,5,5,5, +/*0xA0*/ 2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4, +/*0xB0*/ 2,5,2,5,4,4,4,4,2,4,2,4,4,4,4,4, +/*0xC0*/ 2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6, +/*0xD0*/ 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7, +/*0xE0*/ 2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6, +/*0xF0*/ 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7, +}; + +void X6502_IRQBegin(int w) +{ + //printf("IRQ begin: %d; %d\n", w, _IRQlow); + _IRQlow|=w; +} + +void X6502_IRQEnd(int w) +{ + //printf("IRQ end: %d; %d\n", w, _IRQlow); + _IRQlow&=~w; +} + +void TriggerNMI(void) +{ + _IRQlow|=MDFN_IQNMI; +} + +void TriggerNMI2(void) +{ + _IRQlow|=MDFN_IQNMI2; +} + +/* Called from debugger. */ +void MDFNI_NMI(void) +{ + _IRQlow|=MDFN_IQNMI; +} + +void MDFNI_IRQ(void) +{ + _IRQlow|=MDFN_IQTEMP; +} + +void X6502_GetIVectors(uint16 *reset, uint16 *irq, uint16 *nmi) +{ + fceuindbg=1; + + *reset=RdMemNorm(0xFFFC); + *reset|=RdMemNorm(0xFFFD)<<8; + *nmi=RdMemNorm(0xFFFA); + *nmi|=RdMemNorm(0xFFFB)<<8; + *irq=RdMemNorm(0xFFFE); + *irq|=RdMemNorm(0xFFFF)<<8; + fceuindbg=0; +} +static int debugmode; + +void X6502_Reset(void) +{ + _IRQlow=MDFN_IQRESET; +} + +void X6502_Init(void) +{ + int x; + + memset((void *)&X,0,sizeof(X)); + for(x=0;x<256;x++) + if(!x) ZNTable[x]=Z_FLAG; + else if (x&0x80) ZNTable[x]=N_FLAG; + else ZNTable[x]=0; + #ifdef WANT_DEBUGGER + X6502_Debug(0,0,0); + #endif +} + +void X6502_Power(void) +{ + _count=_tcount=_IRQlow=_PC=_A=_X=_Y=_S=_P=_PI=_DB=_jammed=0; + timestamp=0; + X6502_Reset(); +} + +#ifdef WANT_DEBUGGER +static void X6502_RunDebug(int32 cycles) +{ + #define RdMem RdMemHook + #define WrMem WrMemHook + #define ADDBT(to) NESDBG_AddBranchTrace(old_PC, to, 0) + + if(PAL) + cycles*=15; // 15*4=60 + else + cycles*=16; // 16*4=64 + + _count+=cycles; + + PenguinPower: + while(_count>0) + { + const uint16 old_PC = _PC; + int32 temp; + uint8 b1; + + if(_IRQlow && !X.cpoint) // Don't run IRQ stuff if we weren't here in a save state + { + if(_IRQlow&MDFN_IQRESET) + { + _PC=RdMem(0xFFFC); + _PC|=RdMem(0xFFFD)<<8; + NESDBG_AddBranchTrace(old_PC, _PC, 0xFFFC); // ADDBT(_PC); + _jammed=0; + _PI=_P=I_FLAG; + _IRQlow&=~MDFN_IQRESET; + } + else if(_IRQlow&MDFN_IQNMI2) + { + _IRQlow&=~MDFN_IQNMI2; + _IRQlow|=MDFN_IQNMI; + } + else if(_IRQlow&MDFN_IQNMI) + { + if(!_jammed) + { + ADDCYC(7); + PUSH(_PC>>8); + PUSH(_PC); + PUSH((_P&~B_FLAG)|(U_FLAG)); + _P|=I_FLAG; + _PC=RdMem(0xFFFA); + _PC|=RdMem(0xFFFB)<<8; + NESDBG_AddBranchTrace(old_PC, _PC, 0xFFFA); // ADDBT(_PC); + _IRQlow&=~MDFN_IQNMI; + } + } + else + { + if(!(_PI&I_FLAG) && !_jammed) + { + ADDCYC(7); + PUSH(_PC>>8); + PUSH(_PC); + PUSH((_P&~B_FLAG)|(U_FLAG)); + _P|=I_FLAG; + _PC=RdMem(0xFFFE); + _PC|=RdMem(0xFFFF)<<8; + NESDBG_AddBranchTrace(old_PC, _PC, 0xFFFE); //ADDBT(_PC); + } + } + _IRQlow&=~(MDFN_IQTEMP); + if(_count<=0) + { + _PI=_P; + return; + } /* Should increase accuracy without a */ + /* major speed hit. */ + } + + /* Ok, now the real fun starts. */ + /* Do the pre-exec voodoo. */ + + if(X.ReadHook || X.WriteHook) + { + uint32 tsave=timestamp; + XSave=X; + + fceuindbg=1; + X.preexec=1; + b1=RdMem(_PC); + _PC++; + switch(b1) + { + #include "ops.h" + } + + timestamp=tsave; + + X=XSave; + fceuindbg=0; + } + + X.cpoint = 1; + + NESDBG_TestFoundBPoint(); + if(X.CPUHook) X.CPUHook(_PC); + if(!X.cpoint) + goto PenguinPower; + X.cpoint = 0; + + _PI = _P; + b1=RdMem(_PC); + ADDCYC(CycTable[b1]); + + temp=_tcount; + _tcount=0; + if(MapIRQHook) MapIRQHook(temp); + + MDFN_SoundCPUHook(temp); + + _PC++; + switch(b1) + { + #include "ops.h" + } + _PC &= 0xFFFF; + } + #undef RdMem + #undef WrMem + #undef ADDBT +} + +static void X6502_RunNormal(int32 cycles) +{ +#else +void X6502_Run(int32 cycles) +{ +#endif + #define RdMem RdMemNorm + #define WrMem WrMemNorm + #define ADDBT(x) + + uint32 pbackus; + + pbackus=_PC; + + #undef _PC + #define _PC pbackus + + if(PAL) + cycles*=15; // 15*4=60 + else + cycles*=16; // 16*4=64 + + _count+=cycles; + + // This handles the (rare) case of a save state being saved in step mode in the debugger + if(X.cpoint && _count > 0) + { + X.cpoint = 0; + goto SephirothBishie; + } + + while(_count>0) + { + int32 temp; + static uint8 b1; + + if(_IRQlow) + { + if(_IRQlow&MDFN_IQRESET) + { + _PC=RdMem(0xFFFC); + _PC|=RdMem(0xFFFD)<<8; + _jammed=0; + _PI=_P=I_FLAG; + _IRQlow&=~MDFN_IQRESET; + } + else if(_IRQlow&MDFN_IQNMI2) + { + _IRQlow&=~MDFN_IQNMI2; + _IRQlow|=MDFN_IQNMI; + } + else if(_IRQlow&MDFN_IQNMI) + { + if(!_jammed) + { + ADDCYC(7); + PUSH(_PC>>8); + PUSH(_PC); + PUSH((_P&~B_FLAG)|(U_FLAG)); + _P|=I_FLAG; + _PC=RdMem(0xFFFA); + _PC|=RdMem(0xFFFB)<<8; + _IRQlow&=~MDFN_IQNMI; + } + } + else + { + if(!(_PI&I_FLAG) && !_jammed) + { + ADDCYC(7); + PUSH(_PC>>8); + PUSH(_PC); + PUSH((_P&~B_FLAG)|(U_FLAG)); + _P|=I_FLAG; + _PC=RdMem(0xFFFE); + _PC|=RdMem(0xFFFF)<<8; + } + } + _IRQlow&=~(MDFN_IQTEMP); + if(_count<=0) + { + _PI=_P; + X.PC = pbackus; + return; + } /* Should increase accuracy without a major speed hit. */ + } + + SephirothBishie: + + _PI = _P; + b1=RdMem(_PC); + + ADDCYC(CycTable[b1]); + + temp=_tcount; + _tcount=0; + if(MapIRQHook) MapIRQHook(temp); + MDFN_SoundCPUHook(temp); + _PC++; + + switch(b1) + { + #include "ops.h" + } + _PC &= 0xFFFF; + } + + #undef _PC + #define _PC X.PC + #undef ADDBT + _PC=pbackus; +} + +int X6502_StateAction(StateMem *sm, int load, int data_only) +{ + extern uint8 RAM[0x800]; // from nes.cpp + + SFORMAT SFCPU[]={ + SFVARN(X.PC, "PC"), + SFVARN(X.A, "A"), + SFVARN(X.P, "P"), + SFVARN(X.mooPI, "PI"), + SFVARN(X.X, "X"), + SFVARN(X.Y, "Y"), + SFVARN(X.S, "S"), + SFARRAYN(RAM, 0x800, "RAM"), + SFEND + }; + + SFORMAT SFCPUC[]={ + SFVARN(X.jammed, "jammed"), + SFVARN(X.IRQlow, "IRQLow"), + SFVARN(X.tcount, "tcount"), + SFVARN(X.count, "count"), + SFVARN(timestampbase, "timestampbase"), + SFVARN(X.cpoint, "CPoint"), + SFEND + }; + + std::vector love; + love.push_back(SSDescriptor(SFCPU, "CPU")); + love.push_back(SSDescriptor(SFCPUC, "CPUC")); + + + int ret = MDFNSS_StateAction(sm, load, data_only, love); + + if(load) + { + X.PC &= 0xFFFF; + } + + return(ret); +} + +#ifdef WANT_DEBUGGER +void X6502_Debug(void (*CPUHook)(uint32), + uint8 (*ReadHook)(X6502 *, unsigned int), + void (*WriteHook)(X6502 *, unsigned int, uint8)) +{ + debugmode=(ReadHook || WriteHook || CPUHook)?1:0; + X.ReadHook=ReadHook; + X.WriteHook=WriteHook; + X.CPUHook=CPUHook; + + if(!debugmode) + X6502_Run=X6502_RunNormal; + else + X6502_Run=X6502_RunDebug; +} +#endif diff --git a/libmednahawk/src/nes/x6502.h b/libmednahawk/src/nes/x6502.h new file mode 100644 index 0000000000..2f803ec6b3 --- /dev/null +++ b/libmednahawk/src/nes/x6502.h @@ -0,0 +1,58 @@ +#ifndef _X6502H + +#include "x6502struct.h" + +#ifdef WANT_DEBUGGER +void X6502_Debug(void (*CPUHook)(uint32), + uint8 (*ReadHook)(X6502 *, unsigned int), + void (*WriteHook)(X6502 *, unsigned int, uint8)); + +extern void (*X6502_Run)(int32 cycles); +#else +void X6502_Run(int32 cycles); +#endif + +extern uint32 timestamp; +extern X6502 X; + +#define N_FLAG 0x80 +#define V_FLAG 0x40 +#define U_FLAG 0x20 +#define B_FLAG 0x10 +#define D_FLAG 0x08 +#define I_FLAG 0x04 +#define Z_FLAG 0x02 +#define C_FLAG 0x01 + +extern void (*MapIRQHook)(int a); + +#define NTSC_CPU 1789772.7272727272727272 +#define PAL_CPU 1662607.125 + +#define MDFN_IQEXT 0x001 +#define MDFN_IQEXT2 0x002 +/* ... */ +#define MDFN_IQRESET 0x020 +#define MDFN_IQNMI2 0x040 // Delayed NMI, gets converted to *_IQNMI +#define MDFN_IQNMI 0x080 +#define MDFN_IQDPCM 0x100 +#define MDFN_IQFCOUNT 0x200 +#define MDFN_IQTEMP 0x800 + +void X6502_Init(void); +void X6502_Reset(void); +void X6502_Power(void); + +void TriggerNMI(void); +void TriggerNMI2(void); + +uint8 X6502_DMR(uint32 A); +void X6502_DMW(uint32 A, uint8 V); + +void X6502_IRQBegin(int w); +void X6502_IRQEnd(int w); + +int X6502_StateAction(StateMem *sm, int load, int data_only); + +#define _X6502H +#endif diff --git a/libmednahawk/src/nes/x6502struct.h b/libmednahawk/src/nes/x6502struct.h new file mode 100644 index 0000000000..539458d321 --- /dev/null +++ b/libmednahawk/src/nes/x6502struct.h @@ -0,0 +1,25 @@ +#ifndef _X6502STRUCTH + +typedef struct __X6502 +{ + int32 tcount; /* Temporary cycle counter */ + uint32 PC; + uint8 A,X,Y,S,P,mooPI; + uint8 jammed; + + int32 count; + uint32 IRQlow; /* Simulated IRQ pin held low(or is it high?). + And other junk hooked on for speed reasons.*/ + uint8 DB; /* Data bus "cache" for reads from certain areas */ + + int preexec; /* Pre-exec'ing for debug breakpoints. */ + int cpoint; + + #ifdef WANT_DEBUGGER + void (*CPUHook)(uint32); + uint8 (*ReadHook)(struct __X6502 *, unsigned int); + void (*WriteHook)(struct __X6502 *, unsigned int, uint8); + #endif +} X6502; +#define _X6502STRUCTH +#endif diff --git a/libmednahawk/src/netplay-driver.h b/libmednahawk/src/netplay-driver.h new file mode 100644 index 0000000000..4e6bcdd665 --- /dev/null +++ b/libmednahawk/src/netplay-driver.h @@ -0,0 +1,46 @@ +/* Network interface */ + +void MDFNI_NetplayChangeNick(UTF8 *newnick); + +/* Call when network play needs to stop. */ +void MDFNI_NetplayStop(void); + +/* Note: YOU MUST NOT CALL ANY MDFNI_* FUNCTIONS WHILE IN MDFND_SendData() or + MDFND_RecvData(). +*/ + +void MDFND_SendData(const void *data, uint32 len); // thrown std::exception will be handled +void MDFND_RecvData(void *data, uint32 len); // thrown std::exception will be handled + +/* Display text received over the network. */ +/* NetEcho will be set to TRUE if the displayed text is a network + echo of what we typed. +*/ +void MDFND_NetplayText(const uint8 *text, bool NetEcho); + +/* Encode and send text over the network. */ +void MDFNI_NetplayText(const uint8 *text); + + +void MDFNI_NetplayQuit(const char *quit_message); +void MDFNI_NetplaySwap(uint8 a, uint8 b); +void MDFNI_NetplayTake(uint32 mask); +void MDFNI_NetplayDrop(uint32 mask); +void MDFNI_NetplayDupe(uint32 mask); + +void MDFNI_NetplayList(void); + +/* Starts a process to determine the integrity(synchronization) of all players + in the current game session on the server. Outputs result via MDFND_NetplayText() + when they are received from the server(not in this function). +*/ +void MDFNI_NetplayIntegrity(void); + +/* Pings the server. Outputs result via MDFND_NetplayText() when received from the server(not in this function). */ +void MDFNI_NetplayPing(void); + +/* Called when a fatal error occurred and network play can't continue. This function + should call MDFNI_NetplayStop() after it has deinitialized the network on the driver + side. +*/ +void MDFND_NetworkClose(void); diff --git a/libmednahawk/src/netplay.cpp b/libmednahawk/src/netplay.cpp new file mode 100644 index 0000000000..fac87139a9 --- /dev/null +++ b/libmednahawk/src/netplay.cpp @@ -0,0 +1,846 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// Protocol versions: +// 1 - I forgot! +// 2 - Added support for more versatile input configurations...somewhat +// 3 - + +#include "mednafen.h" + +#include +#include +#include +#include +#include +#include + +#include "netplay.h" +#include "netplay-driver.h" +#include "general.h" +#include "state.h" +#include "movie.h" +#include "md5.h" + +#include "driver.h" + +int MDFNnetplay=0; + +static char *OurNick = NULL; + +static bool Joined = 0; +static uint32 LocalPlayersMask = 0; +static uint32 TotalInputStateSize = 0; +static uint32 LocalInputStateSize = 0; + +static void NetError(const char *format, ...) +{ + char *temp = NULL; + va_list ap; + + va_start(ap, format); + temp = trio_vaprintf(format, ap); + va_end(ap); + + MDFND_NetplayText((UTF8 *)temp, FALSE); + MDFND_NetworkClose(); + free(temp); +} + +void MDFNI_NetplayStop(void) +{ + if(MDFNnetplay) + { + Joined = false; + MDFNnetplay = 0; + MDFN_FlushGameCheats(1); /* Don't save netplay cheats. */ + MDFN_LoadGameCheats(0); /* Reload our original cheats. */ + if(OurNick) + { + free(OurNick); + OurNick = NULL; + } + } + else puts("Check your code!"); +} + +int NetplayStart(const char *PortDeviceCache[16], const uint32 PortDataLenCache[16], uint32 local_players, const std::string &nickname, const std::string &game_key, const std::string &connect_password) +{ + uint8 *sendbuf; + uint32 sblen; + const char *emu_id = PACKAGE " " MEDNAFEN_VERSION; + + try + { + sblen = 4 + 16 + 16 + 64 + 1 + nickname.size() + strlen(emu_id); + sendbuf = (uint8 *)malloc(sblen); + memset(sendbuf, 0, sblen); + + MDFN_en32lsb(sendbuf, sblen - 4); + if(game_key != "") + { + md5_context md5; + uint8 md5out[16]; + + md5.starts(); + md5.update(MDFNGameInfo->MD5, 16); + md5.update((uint8 *)game_key.c_str(), game_key.size()); + md5.finish(md5out); + memcpy(sendbuf + 4, md5out, 16); + } + else + memcpy(sendbuf + 4, MDFNGameInfo->MD5, 16); + + if(connect_password != "") + { + md5_context md5; + uint8 md5out[16]; + + md5.starts(); + md5.update((uint8*)connect_password.c_str(), connect_password.size()); + md5.finish(md5out); + memcpy(sendbuf + 4 + 16, md5out, 16); + } + + uint8 *extra = sendbuf + 4 + 16 + 16; + + extra[0] = 3; // Protocol version + + // Set input device number thingies here. + extra[1] = MDFNGameInfo->InputInfo->InputPorts; // Total number of ports + + // The size of the giganto string with the controller types + MDFN_en32lsb(&extra[4], strlen(emu_id)); + + // 16-32, controller data sizes + for(int x = 0; x < MDFNGameInfo->InputInfo->InputPorts; x++) + extra[16 + x] = PortDataLenCache[x]; + + + sendbuf[4 + 16 + 16 + 64] = local_players; + + if(nickname != "") + memcpy(sendbuf + 4 + 16 + 16 + 64 + 1, nickname.c_str(), nickname.size()); + + memcpy(sendbuf + 4 + 16 + 16 + 64 + 1 + nickname.size(), emu_id, strlen(emu_id)); + + MDFND_SendData(sendbuf, sblen); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + return(false); + } + + TotalInputStateSize = 0; + for(int x = 0; x < MDFNGameInfo->InputInfo->InputPorts; x++) + TotalInputStateSize += PortDataLenCache[x]; + + // Hack so the server can always encode its command data length properly(a matching "hack" exists in the server). + if(TotalInputStateSize < 4) + TotalInputStateSize = 4; + + LocalPlayersMask = 0; + LocalInputStateSize = 0; + Joined = 0; + + MDFN_FlushGameCheats(0); /* Save our pre-netplay cheats. */ + MDFNnetplay = 1; + + if(MDFNMOV_IsPlaying()) /* Recording's ok during netplay, playback is not. */ + MDFNMOV_Stop(); + + //printf("%d\n", TotalInputStateSize); + + return(1); +} + +static void SendCommand(uint8 cmd, uint32 len) +{ + uint8 buf[1 + LocalInputStateSize + 4]; // Command, unused, command length + + memset(buf, 0, sizeof(buf)); + + buf[0] = cmd; + MDFN_en32lsb(&buf[1 + LocalInputStateSize], len); + MDFND_SendData(buf,LocalInputStateSize + 1 + 4); +} + +bool NetplaySendCommand(uint8 cmd, uint32 len) +{ + try + { + SendCommand(cmd, len); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + return(false); + } + return(true); +} + +void MDFNI_NetplaySwap(uint8 a, uint8 b) +{ + try + { + SendCommand(MDFNNPCMD_CTRLR_SWAP, (a << 0) | (b << 8)); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayTake(uint32 mask) +{ + try + { + SendCommand(MDFNNPCMD_CTRLR_TAKE, mask); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayDrop(uint32 mask) +{ + try + { + SendCommand(MDFNNPCMD_CTRLR_DROP, mask); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayDupe(uint32 mask) +{ + try + { + SendCommand(MDFNNPCMD_CTRLR_DUPE, mask); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayList(void) +{ + try + { + SendCommand(MDFNNPCMD_REQUEST_LIST, 0); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + + +void MDFNI_NetplayPing(void) +{ + try + { + uint64 now_time; + + now_time = MDFND_GetTime(); + + SendCommand(MDFNNPCMD_ECHO, sizeof(now_time)); + + // Endianness doesn't matter, since it will be echoed back only to us. + MDFND_SendData(&now_time, sizeof(now_time)); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayIntegrity(void) +{ + try + { + SendCommand(MDFNNPCMD_INTEGRITY, 0); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayText(const uint8 *text) +{ + try + { + uint32 len; + + if(!Joined) return; + + len = strlen((char *)text); + + SendCommand(MDFNNPCMD_TEXT, len); + + MDFND_SendData(text,len); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayChangeNick(UTF8 *newnick) +{ + try + { + uint32 len; + + if(!Joined) return; + + len = strlen((char *)newnick); + + SendCommand(MDFNNPCMD_SETNICK, len); + + MDFND_SendData(newnick, len); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void MDFNI_NetplayQuit(const char *quit_message) +{ + try + { + SendCommand(MDFNNPCMD_QUIT, strlen(quit_message)); + MDFND_SendData(quit_message, strlen(quit_message)); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + + +// Integrity checking is experimental, and needs work to function properly(in the emulator cores). +static int SendIntegrity(void) +{ + StateMem sm; + md5_context md5; + uint8 digest[16]; + + memset(&sm, 0, sizeof(StateMem)); + + // Do not do a raw/data-only state for speed, due to lack of endian and bool conversion. + if(!MDFNSS_SaveSM(&sm, 0, false)) + { + throw MDFN_Error(0, _("Error during save state generation.")); + } + + md5.starts(); + md5.update(sm.data, sm.len); + md5.finish(digest); + + free(sm.data); + + //for(int i = 15; i >= 0; i--) + // printf("%02x", digest[i]); + //puts(""); + + SendCommand(MDFNNPCMD_INTEGRITY_RES, 16); + MDFND_SendData(digest, 16); + + return(1); +} + + +static void SendState(void) +{ + StateMem sm; + uLongf clen; + std::vector cbuf; + + memset(&sm, 0, sizeof(StateMem)); + + if(!MDFNSS_SaveSM(&sm, 0, 0)) + { + throw MDFN_Error(0, _("Error during save state generation.")); + } + + clen = sm.len + sm.len / 1000 + 12; + cbuf.resize(4 + clen); + MDFN_en32lsb(&cbuf[0], sm.len); + compress2((Bytef *)&cbuf[0] + 4, &clen, (Bytef *)sm.data, sm.len, 7); + free(sm.data); + + SendCommand(MDFNNPCMD_LOADSTATE, clen + 4); + MDFND_SendData(&cbuf[0], clen + 4); +} + +static void RecvState(const uint32 clen) +{ + StateMem sm; + std::vector cbuf; + std::vector buf; + + memset(&sm, 0, sizeof(StateMem)); + + if(clen < 4) + { + throw MDFN_Error(0, _("Compressed save state data is too small: %u"), clen); + } + + if(clen > 8 * 1024 * 1024) // Compressed length sanity check - 8 MiB max. + { + throw MDFN_Error(0, _("Compressed save state data is too large: %u"), clen); + } + + cbuf.resize(clen); + + MDFND_RecvData(&cbuf[0], clen); + + uLongf len = MDFN_de32lsb(&cbuf[0]); + if(len > 12 * 1024 * 1024) // Uncompressed length sanity check - 12 MiB max. + { + throw MDFN_Error(0, _("Uncompressed save state data is too large: %u"), len); + } + + buf.resize(len); + + uncompress((Bytef *)&buf[0], &len, (Bytef *)&cbuf[0] + 4, clen - 4); + + sm.data = &buf[0]; + sm.len = len; + + if(!MDFNSS_LoadSM(&sm, 0, 0)) + { + throw MDFN_Error(0, _("Error during save state loading.")); + } + + if(MDFNMOV_IsRecording()) + MDFNMOV_RecordState(); +} + +static std::string GenerateMPSString(uint32 mps, bool ctlr_string = false) +{ + char tmpbuf[256]; + + tmpbuf[0] = 0; + + if(!mps) + { + if(!ctlr_string) + trio_snprintf(tmpbuf, sizeof(tmpbuf), _("a lurker")); + } + else + trio_snprintf(tmpbuf, sizeof(tmpbuf), ("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"), ctlr_string ? ((mps == round_up_pow2(mps)) ? _("controller") : _("controllers")) : ((mps == round_up_pow2(mps)) ? _("player") : _("players")), + (mps & 0x0001) ? " 1" : "", + (mps & 0x0002) ? " 2" : "", + (mps & 0x0004) ? " 3" : "", + (mps & 0x0008) ? " 4" : "", + (mps & 0x0010) ? " 5" : "", + (mps & 0x0020) ? " 6" : "", + (mps & 0x0040) ? " 7" : "", + (mps & 0x0080) ? " 8" : "", + (mps & 0x0100) ? " 9" : "", + (mps & 0x0200) ? " 10" : "", + (mps & 0x0400) ? " 11" : "", + (mps & 0x0800) ? " 12" : "", + (mps & 0x1000) ? " 13" : "", + (mps & 0x2000) ? " 14" : "", + (mps & 0x4000) ? " 15" : "", + (mps & 0x8000) ? " 16" : ""); + + + return(std::string(tmpbuf)); +} + +void NetplaySendState(void) +{ + try + { + SendState(); + } + catch(std::exception &e) + { + NetError("%s", e.what()); + } +} + +void NetplayUpdate(const char **PortDNames, void *PortData[], uint32 PortLen[], int NumPorts) +{ + uint8 buf[TotalInputStateSize + 1]; + +// +// +try +{ + if(Joined) + { + uint8 outgoing_buffer[1 + LocalInputStateSize]; + bool Taken[NumPorts]; + + memset(Taken, 0, sizeof(Taken)); + + outgoing_buffer[0] = 0; // This is not a command, duh! + + int wpos = 1; + + for(int x = 0; x < NumPorts; x++) + { + if(LocalPlayersMask & (1 << x)) + { + + for(int n = 0; n <= x; n++) + { + if(!Taken[n] && !strcmp(PortDNames[n], PortDNames[x])) + { + memcpy(outgoing_buffer + wpos, PortData[n], PortLen[n]); + Taken[n] = TRUE; + wpos += PortLen[n]; + break; + } + } + + } + } + MDFND_SendData(outgoing_buffer, 1 + LocalInputStateSize); + } + + do + { + MDFND_RecvData(buf, TotalInputStateSize + 1); + + switch(buf[TotalInputStateSize]) + { + case 0: break; // No command + + default: MDFN_DoSimpleCommand(buf[TotalInputStateSize]);break; + + case MDFNNPCMD_INTEGRITY: + SendIntegrity(); + break; + + case MDFNNPCMD_REQUEST_STATE: + SendState(); + break; + + case MDFNNPCMD_LOADSTATE: + RecvState(MDFN_de32lsb(buf)); + MDFN_DispMessage(_("Remote state loaded.")); + break; + + case MDFNNPCMD_SERVERTEXT: + { + static const uint32 MaxLength = 2000; + uint8 neobuf[MaxLength + 1]; + char *textbuf = NULL; + const uint32 totallen = MDFN_de32lsb(buf); + + if(totallen > MaxLength) // Sanity check + { + throw MDFN_Error(0, _("Text length is too long: %u"), totallen); + } + + MDFND_RecvData(neobuf, totallen); + + neobuf[totallen] = 0; + trio_asprintf(&textbuf, "** %s", neobuf); + MDFND_NetplayText((UTF8*)textbuf, FALSE); + free(textbuf); + } + break; + + case MDFNNPCMD_ECHO: + { + uint32 totallen = MDFN_de32lsb(buf); + uint64 then_time; + uint64 now_time; + + if(totallen != sizeof(then_time)) + { + throw MDFN_Error(0, _("Echo response length is incorrect size: %u"), totallen); + } + + MDFND_RecvData(&then_time, sizeof(then_time)); + + now_time = MDFND_GetTime(); + + char *textbuf = NULL; + trio_asprintf(&textbuf, "*** Round-trip time: %llu ms", now_time - then_time); + MDFND_NetplayText((UTF8*)textbuf, FALSE); + free(textbuf); + } + break; + + case MDFNNPCMD_TEXT: + { + static const uint32 MaxLength = 2000; + uint8 neobuf[MaxLength + 1]; + const uint32 totallen = MDFN_de32lsb(buf); + uint32 nicklen; + bool NetEcho = false; + char *textbuf = NULL; + + if(totallen < 4) + { + throw MDFN_Error(0, _("Text command length is too short: %u"), totallen); + } + + if(totallen > MaxLength) // Sanity check + { + throw MDFN_Error(0, _("Text command length is too long: %u"), totallen); + } + + MDFND_RecvData(neobuf, totallen); + + nicklen = MDFN_de32lsb(neobuf); + if(nicklen > (totallen - 4)) // Sanity check + { + throw MDFN_Error(0, _("Received nickname length is too long: %u"), nicklen); + } + + neobuf[totallen] = 0; + + if(nicklen) + { + uint8 nickbuf[nicklen + 1]; + memcpy(nickbuf, neobuf + 4, nicklen); + nickbuf[nicklen] = 0; + if(OurNick && !strcasecmp(OurNick, (char *)nickbuf)) + { + trio_asprintf(&textbuf, "> %s", &neobuf[4 + nicklen]); + NetEcho = true; + } + else + trio_asprintf(&textbuf, "<%s> %s", nickbuf, &neobuf[4 + nicklen]); + } + else + { + trio_asprintf(&textbuf, "* %s", &neobuf[4]); + } + MDFND_NetplayText((UTF8*)textbuf, NetEcho); + free(textbuf); + } + break; + + case MDFNNPCMD_NICKCHANGED: + { + static const uint32 MaxLength = 2000; + uint8 neobuf[MaxLength + 1]; + uint8 *newnick; + char *textbuf = NULL; + const uint32 len = MDFN_de32lsb(buf); + + if(len > MaxLength) // Sanity check + { + throw MDFN_Error(0, _("Nickname change length is too long: %u"), len); + } + + MDFND_RecvData(neobuf, len); + + neobuf[len] = 0; + + newnick = (uint8*)strchr((char*)neobuf, '\n'); + + if(newnick) + { + bool IsMeow = FALSE; + *newnick = 0; + newnick++; + if(OurNick) + { + if(!strcasecmp((char*)neobuf, (char*)OurNick)) + { + free(OurNick); + OurNick = strdup((char*)newnick); + textbuf = trio_aprintf(_("* You are now known as <%s>."), newnick); + IsMeow = TRUE; + } + } + if(!textbuf) + textbuf = trio_aprintf(_("* <%s> is now known as <%s>"), neobuf, newnick); + MDFND_NetplayText((UTF8*)textbuf, IsMeow); + free(textbuf); + } + } + break; + + case MDFNNPCMD_CTRL_CHANGE: + { + const uint32 len = MDFN_de32lsb(buf); + + // + // Joined = true; + SendCommand(MDFNNPCMD_CTRL_CHANGE_ACK, len); + // + // + LocalInputStateSize = 0; + LocalPlayersMask = len; + + for(int x = 0; x < MDFNGameInfo->InputInfo->InputPorts; x++) + { + if(LocalPlayersMask & (1 << x)) + LocalInputStateSize += PortLen[x]; + } + } + break; + + case MDFNNPCMD_CTRLR_SWAP_NOTIF: + { + const uint32 cm = MDFN_de32lsb(buf); + char textbuf[512]; + + trio_snprintf(textbuf, sizeof(textbuf), _("* All instances of controllers %u and %u have been swapped."), ((cm & 0xFF) + 1), ((cm >> 8) & 0xFF) + 1); + MDFND_NetplayText((UTF8*)textbuf, false); + } + break; + + case MDFNNPCMD_CTRLR_TAKE_NOTIF: + case MDFNNPCMD_CTRLR_DROP_NOTIF: + case MDFNNPCMD_CTRLR_DUPE_NOTIF: + { + static const uint32 MaxNicknameLength = 1000; + static const uint32 MaxLength = 12 + MaxNicknameLength; + const char *fstr = NULL; + const uint32 len = MDFN_de32lsb(buf); + uint8 ntf_buf[MaxLength + 1]; + char *textbuf = NULL; + + if(len < 12) + throw MDFN_Error(0, _("Take/drop/dupe notification is too short: %u"), len); + + if(len > MaxLength) + throw MDFN_Error(0, _("Take/drop/dupe notification is too long: %u"), len); + + MDFND_RecvData(ntf_buf, len); + ntf_buf[len] = 0; + + switch(buf[TotalInputStateSize]) + { + case MDFNNPCMD_CTRLR_TAKE_NOTIF: + fstr = _("* <%s> took all instances of %s, and is now %s."); + break; + + case MDFNNPCMD_CTRLR_DUPE_NOTIF: + fstr = _("* <%s> took copies of %s, and is now %s."); + break; + + case MDFNNPCMD_CTRLR_DROP_NOTIF: + fstr = _("* <%s> dropped %s, and is now %s."); + break; + } + trio_asprintf(&textbuf, fstr, ntf_buf + 12, GenerateMPSString(MDFN_de32lsb(&ntf_buf[0]), true).c_str(), GenerateMPSString(MDFN_de32lsb(&ntf_buf[4]), false).c_str()); + MDFND_NetplayText((UTF8*)textbuf, false); + free(textbuf); + } + break; + + case MDFNNPCMD_YOUJOINED: + case MDFNNPCMD_YOULEFT: + case MDFNNPCMD_PLAYERLEFT: + case MDFNNPCMD_PLAYERJOINED: + { + static const uint32 MaxLength = 2000; + uint8 neobuf[MaxLength + 1]; + char *textbuf = NULL; + uint32 mps; + std::string mps_string; + const uint32 len = MDFN_de32lsb(buf); + + if(len < 8) + { + throw MDFN_Error(0, _("Join/Left length is too short: %u"), len); + } + + if(len > MaxLength) // Sanity check + { + throw MDFN_Error(0, _("Join/Left length is too long: %u"), len); + } + + MDFND_RecvData(neobuf, len); + neobuf[len] = 0; // NULL-terminate the string + + mps = MDFN_de32lsb(&neobuf[0]); + + mps_string = GenerateMPSString(mps); + + if(buf[TotalInputStateSize] == MDFNNPCMD_YOULEFT) + { + // Uhm, not supported yet! + LocalPlayersMask = 0; + LocalInputStateSize = 0; + Joined = FALSE; + } + else if(buf[TotalInputStateSize] == MDFNNPCMD_YOUJOINED) + { + if(OurNick) // This shouldn't happen, really... + { + free(OurNick); + OurNick = NULL; + } + OurNick = strdup((char*)neobuf + 8); + + trio_asprintf(&textbuf, _("* You, %s, have connected as: %s"), neobuf + 8, mps_string.c_str()); + + LocalInputStateSize = 0; + LocalPlayersMask = mps; + + for(int x = 0; x < MDFNGameInfo->InputInfo->InputPorts; x++) + { + if(LocalPlayersMask & (1 << x)) + LocalInputStateSize += PortLen[x]; + } + Joined = TRUE; + SendCommand(MDFNNPCMD_SETFPS, MDFNGameInfo->fps); + } + else if(buf[TotalInputStateSize] == MDFNNPCMD_PLAYERLEFT) + { + trio_asprintf(&textbuf, _("* %s(%s) has left"), neobuf + 8, mps_string.c_str()); + } + else + { + trio_asprintf(&textbuf, _("* %s has connected as: %s"), neobuf + 8, mps_string.c_str()); + } + MDFND_NetplayText((UTF8*)textbuf, FALSE); + free(textbuf); + } + break; + } + } while(buf[TotalInputStateSize]); + + int rpos = 0; + for(int x = 0; x < NumPorts; x++) + { + //printf("%d %d\n", x, PortLen[x]); + //memset(PortData[x], 0, PortLen[x]); + memcpy(PortData[x], buf + rpos, PortLen[x]); + rpos += PortLen[x]; + } +} +catch(std::exception &e) +{ + NetError("%s", e.what()); +} +// +// + +} diff --git a/libmednahawk/src/netplay.h b/libmednahawk/src/netplay.h new file mode 100644 index 0000000000..1350823045 --- /dev/null +++ b/libmednahawk/src/netplay.h @@ -0,0 +1,78 @@ +#ifndef _MDFN_NETPLAY_H +#define _MDFN_NETPLAY_H + +int InitNetplay(void); + +void NetplayUpdate(const char **, void *PortData[], uint32 PortLen[], int NumPorts); +int NetplayStart(const char *PortDeviceCache[16], const uint32 PortDataLenCache[16], uint32 local_players, const std::string &nickname, const std::string &game_key, const std::string &connect_password); +void NetplaySendState(void); +bool NetplaySendCommand(uint8, uint32); + +extern int MDFNnetplay; + +#define MDFNNPCMD_RESET MDFN_MSC_RESET +#define MDFNNPCMD_POWER MDFN_MSC_POWER + +#define MDFNNPCMD_VSUNICOIN MDFN_MSC_INSERT_COIN +#define MDFNNPCMD_VSUNIDIP0 MDFN_MSC_TOGGLE_DIP0 +#define MDFNNPCMD_FDSINSERTx MDFN_MSC_INSERT_DISK0 +#define MDFNNPCMD_FDSINSERT MDFN_MSC_INSERT_DISK +#define MDFNNPCMD_FDSEJECT MDFN_MSC_EJECT_DISK +#define MDFNNPCMD_FDSSELECT MDFN_MSC_SELECT_DISK + +#define MDFNNPCMD_SETFPS 0x40 // Client->server. It should be ignored server-side if it's not from the first + // active player for the game). + +#define MDFNNPCMD_NOP 0x41 // Client->server. + +// +#define MDFNNPCMD_CTRL_CHANGE 0x43 // Server->client. +#define MDFNNPCMD_CTRL_CHANGE_ACK 0x44 // Client->server. Acknowledge controller change. Sent using old local data length, everything after + // this should be new data size. +// + +#define MDFNNPCMD_CTRLR_SWAP_NOTIF 0x68 // Server->Client + +#define MDFNNPCMD_CTRLR_TAKE 0x70 // Client->server. Take the specified controllers(from other clients) +#define MDFNNPCMD_CTRLR_DROP 0x71 // Client->server. Drop(relinquish) the specified controllers. +#define MDFNNPCMD_CTRLR_DUPE 0x72 // Client->server. Take the specified controllers(but let other clients still keep their control). + + +#define MDFNNPCMD_CTRLR_SWAP 0x78 // Client->server. + +#define MDFNNPCMD_REQUEST_LIST 0x7F // client->server + +#define MDFNNPCMD_LOADSTATE 0x80 // Client->server, and server->client +#define MDFNNPCMD_REQUEST_STATE 0x81 // Server->client + +#define MDFNNPCMD_TEXT 0x90 + +#define MDFNNPCMD_SERVERTEXT 0x93 // Server text message(informational), server->client +#define MDFNNPCMD_ECHO 0x94 // Echos the string(no larger than 256 bytes) back to the client(used for pinging). + +#define MDFNNPCMD_INTEGRITY 0x95 // Send from a client to a server, then from the server to all clients. +#define MDFNNPCMD_INTEGRITY_RES 0x96 // Integrity result, sent from the clients to the server. The result should be no larger + // than 256 bytes. + +#define MDFNNPCMD_SETNICK 0x98 /* Sent from client to server only. */ + +#define MDFNNPCMD_PLAYERJOINED 0xA0 // Data: + // +#define MDFNNPCMD_PLAYERLEFT 0xA1 // Data: (see above) + +#define MDFNNPCMD_YOUJOINED 0xB0 +#define MDFNNPCMD_YOULEFT 0xB1 + +#define MDFNNPCMD_NICKCHANGED 0xB8 + +#define MDFNNPCMD_LIST 0xC0 // Server->client + +#define MDFNNPCMD_CTRLR_TAKE_NOTIF 0xF0 // Server->client +#define MDFNNPCMD_CTRLR_DROP_NOTIF 0xF1 // Server->client +#define MDFNNPCMD_CTRLR_DUPE_NOTIF 0xF2 // Server->client + + +#define MDFNNPCMD_QUIT 0xFF // Client->server + +int MDFNNET_SendCommand(uint8, uint32); +#endif diff --git a/libmednahawk/src/ngp/Makefile.am b/libmednahawk/src/ngp/Makefile.am new file mode 100644 index 0000000000..9533c94d8f --- /dev/null +++ b/libmednahawk/src/ngp/Makefile.am @@ -0,0 +1,15 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ -fno-strict-aliasing +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/src/ngp -ITLCS-900h -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/intl -I$(top_srcdir) + +noinst_LIBRARIES = libngp.a +ngp_SOURCES = bios.cpp biosHLE.cpp dma.cpp flash.cpp gfx.cpp T6W28_Apu.cpp \ + gfx_scanline_mono.cpp gfx_scanline_colour.cpp interrupt.cpp mem.cpp neopop.cpp \ + rom.cpp rtc.cpp sound.cpp Z80_interface.cpp \ + TLCS-900h/TLCS900h_disassemble_extra.cpp TLCS-900h/TLCS900h_disassemble_reg.cpp \ + TLCS-900h/TLCS900h_interpret_single.cpp TLCS-900h/TLCS900h_disassemble_src.cpp \ + TLCS-900h/TLCS900h_interpret.cpp TLCS-900h/TLCS900h_registers.cpp TLCS-900h/TLCS900h_interpret_reg.cpp \ + TLCS-900h/TLCS900h_disassemble.cpp TLCS-900h/TLCS900h_interpret_src.cpp \ + TLCS-900h/TLCS900h_interpret_dst.cpp TLCS-900h/TLCS900h_disassemble_dst.cpp + +libngp_a_SOURCES = $(ngp_SOURCES) diff --git a/libmednahawk/src/ngp/Makefile.in b/libmednahawk/src/ngp/Makefile.in new file mode 100644 index 0000000000..87e8fe8fc3 --- /dev/null +++ b/libmednahawk/src/ngp/Makefile.in @@ -0,0 +1,689 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/ngp +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libngp_a_AR = $(AR) $(ARFLAGS) +libngp_a_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am__objects_1 = bios.$(OBJEXT) biosHLE.$(OBJEXT) dma.$(OBJEXT) \ + flash.$(OBJEXT) gfx.$(OBJEXT) T6W28_Apu.$(OBJEXT) \ + gfx_scanline_mono.$(OBJEXT) gfx_scanline_colour.$(OBJEXT) \ + interrupt.$(OBJEXT) mem.$(OBJEXT) neopop.$(OBJEXT) \ + rom.$(OBJEXT) rtc.$(OBJEXT) sound.$(OBJEXT) \ + Z80_interface.$(OBJEXT) \ + TLCS-900h/TLCS900h_disassemble_extra.$(OBJEXT) \ + TLCS-900h/TLCS900h_disassemble_reg.$(OBJEXT) \ + TLCS-900h/TLCS900h_interpret_single.$(OBJEXT) \ + TLCS-900h/TLCS900h_disassemble_src.$(OBJEXT) \ + TLCS-900h/TLCS900h_interpret.$(OBJEXT) \ + TLCS-900h/TLCS900h_registers.$(OBJEXT) \ + TLCS-900h/TLCS900h_interpret_reg.$(OBJEXT) \ + TLCS-900h/TLCS900h_disassemble.$(OBJEXT) \ + TLCS-900h/TLCS900h_interpret_src.$(OBJEXT) \ + TLCS-900h/TLCS900h_interpret_dst.$(OBJEXT) \ + TLCS-900h/TLCS900h_disassemble_dst.$(OBJEXT) +am_libngp_a_OBJECTS = $(am__objects_1) +libngp_a_OBJECTS = $(am_libngp_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libngp_a_SOURCES) +DIST_SOURCES = $(libngp_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ -fno-strict-aliasing +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/src/ngp -ITLCS-900h -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/intl -I$(top_srcdir) +noinst_LIBRARIES = libngp.a +ngp_SOURCES = bios.cpp biosHLE.cpp dma.cpp flash.cpp gfx.cpp T6W28_Apu.cpp \ + gfx_scanline_mono.cpp gfx_scanline_colour.cpp interrupt.cpp mem.cpp neopop.cpp \ + rom.cpp rtc.cpp sound.cpp Z80_interface.cpp \ + TLCS-900h/TLCS900h_disassemble_extra.cpp TLCS-900h/TLCS900h_disassemble_reg.cpp \ + TLCS-900h/TLCS900h_interpret_single.cpp TLCS-900h/TLCS900h_disassemble_src.cpp \ + TLCS-900h/TLCS900h_interpret.cpp TLCS-900h/TLCS900h_registers.cpp TLCS-900h/TLCS900h_interpret_reg.cpp \ + TLCS-900h/TLCS900h_disassemble.cpp TLCS-900h/TLCS900h_interpret_src.cpp \ + TLCS-900h/TLCS900h_interpret_dst.cpp TLCS-900h/TLCS900h_disassemble_dst.cpp + +libngp_a_SOURCES = $(ngp_SOURCES) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ngp/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/ngp/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +TLCS-900h/$(am__dirstamp): + @$(MKDIR_P) TLCS-900h + @: > TLCS-900h/$(am__dirstamp) +TLCS-900h/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) TLCS-900h/$(DEPDIR) + @: > TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_disassemble_extra.$(OBJEXT): \ + TLCS-900h/$(am__dirstamp) TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_disassemble_reg.$(OBJEXT): \ + TLCS-900h/$(am__dirstamp) TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_interpret_single.$(OBJEXT): \ + TLCS-900h/$(am__dirstamp) TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_disassemble_src.$(OBJEXT): \ + TLCS-900h/$(am__dirstamp) TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_interpret.$(OBJEXT): TLCS-900h/$(am__dirstamp) \ + TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_registers.$(OBJEXT): TLCS-900h/$(am__dirstamp) \ + TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_interpret_reg.$(OBJEXT): TLCS-900h/$(am__dirstamp) \ + TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_disassemble.$(OBJEXT): TLCS-900h/$(am__dirstamp) \ + TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_interpret_src.$(OBJEXT): TLCS-900h/$(am__dirstamp) \ + TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_interpret_dst.$(OBJEXT): TLCS-900h/$(am__dirstamp) \ + TLCS-900h/$(DEPDIR)/$(am__dirstamp) +TLCS-900h/TLCS900h_disassemble_dst.$(OBJEXT): \ + TLCS-900h/$(am__dirstamp) TLCS-900h/$(DEPDIR)/$(am__dirstamp) +libngp.a: $(libngp_a_OBJECTS) $(libngp_a_DEPENDENCIES) + $(AM_V_at)-rm -f libngp.a + $(AM_V_AR)$(libngp_a_AR) libngp.a $(libngp_a_OBJECTS) $(libngp_a_LIBADD) + $(AM_V_at)$(RANLIB) libngp.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_disassemble.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_disassemble_dst.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_disassemble_extra.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_disassemble_reg.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_disassemble_src.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_interpret.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_interpret_dst.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_interpret_reg.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_interpret_single.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_interpret_src.$(OBJEXT) + -rm -f TLCS-900h/TLCS900h_registers.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/T6W28_Apu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Z80_interface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bios.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/biosHLE.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flash.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_scanline_colour.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx_scanline_mono.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interrupt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/neopop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_disassemble.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_disassemble_dst.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_disassemble_extra.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_disassemble_reg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_disassemble_src.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_interpret.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_interpret_dst.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_interpret_reg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_interpret_single.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_interpret_src.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@TLCS-900h/$(DEPDIR)/TLCS900h_registers.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f TLCS-900h/$(DEPDIR)/$(am__dirstamp) + -rm -f TLCS-900h/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) TLCS-900h/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) TLCS-900h/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/ngp/T6W28_Apu.cpp b/libmednahawk/src/ngp/T6W28_Apu.cpp new file mode 100644 index 0000000000..8c807d2449 --- /dev/null +++ b/libmednahawk/src/ngp/T6W28_Apu.cpp @@ -0,0 +1,414 @@ +// T6W28_Snd_Emu + +#include "../mednafen.h" +#include "T6W28_Apu.h" + +/* Copyright (C) 2003-2006 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +more details. You should have received a copy of the GNU Lesser General +Public License along with this module; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +// T6W28_Osc + +T6W28_Osc::T6W28_Osc() +{ + outputs [0] = NULL; // always stays NULL + outputs [1] = NULL; + outputs [2] = NULL; + outputs [3] = NULL; +} + +void T6W28_Osc::reset() +{ + delay = 0; + last_amp_left = 0; + last_amp_right = 0; + + volume_left = 0; + volume_right = 0; +} + +// T6W28_Square + +blip_inline void T6W28_Square::reset() +{ + period = 0; + phase = 0; + T6W28_Osc::reset(); +} + +void T6W28_Square::run( sms_time_t time, sms_time_t end_time ) +{ + if ((!volume_left && !volume_right) || period <= 128 ) + { + // ignore 16kHz and higher + if ( last_amp_left ) + { + synth->offset( time, -last_amp_left, outputs[2] ); + last_amp_left = 0; + } + + if ( last_amp_right ) + { + synth->offset( time, -last_amp_right, outputs[1] ); + last_amp_right = 0; + } + + time += delay; + if ( !period ) + { + time = end_time; + } + else if ( time < end_time ) + { + // keep calculating phase + int count = (end_time - time + period - 1) / period; + phase = (phase + count) & 1; + time += count * period; + } + } + else + { + int amp_left = phase ? volume_left : -volume_left; + int amp_right = phase ? volume_right : -volume_right; + + int delta_left = amp_left - last_amp_left; + int delta_right = amp_right - last_amp_right; + + if ( delta_left ) + { + last_amp_left = amp_left; + synth->offset( time, delta_left, outputs[2] ); + } + + if ( delta_right ) + { + last_amp_right = amp_right; + synth->offset( time, delta_right, outputs[1] ); + } + + time += delay; + if ( time < end_time ) + { + Blip_Buffer* const output_left = this->outputs[2]; + Blip_Buffer* const output_right = this->outputs[1]; + + int delta_left = amp_left * 2; + int delta_right = amp_right * 2; + do + { + delta_left = -delta_left; + delta_right = -delta_right; + + synth->offset_inline( time, delta_left, output_left ); + synth->offset_inline( time, delta_right, output_right ); + time += period; + phase ^= 1; + } + while ( time < end_time ); + + this->last_amp_left = phase ? volume_left : -volume_left; + this->last_amp_right = phase ? volume_right : -volume_right; + } + } + delay = time - end_time; +} + +// T6W28_Noise + +static const int noise_periods [3] = { 0x100, 0x200, 0x400 }; + +blip_inline void T6W28_Noise::reset() +{ + period = &noise_periods [0]; + shifter = 0x4000; + tap = 13; + T6W28_Osc::reset(); +} + +void T6W28_Noise::run( sms_time_t time, sms_time_t end_time ) +{ + int amp_left = volume_left; + int amp_right = volume_right; + + if ( shifter & 1 ) + { + amp_left = -amp_left; + amp_right = -amp_right; + } + + int delta_left = amp_left - last_amp_left; + int delta_right = amp_right - last_amp_right; + + if ( delta_left ) + { + last_amp_left = amp_left; + synth.offset( time, delta_left, outputs[2] ); + } + + if ( delta_right ) + { + last_amp_right = amp_right; + synth.offset( time, delta_right, outputs[1] ); + } + + time += delay; + + if ( !volume_left && !volume_right ) + time = end_time; + + if ( time < end_time ) + { + Blip_Buffer* const output_left = this->outputs[2]; + Blip_Buffer* const output_right = this->outputs[1]; + + unsigned shifter = this->shifter; + int delta_left = amp_left * 2; + int delta_right = amp_right * 2; + + int period = *this->period * 2; + if ( !period ) + period = 16; + + do + { + int changed = (shifter + 1) & 2; // set if prev and next bits differ + shifter = (((shifter << 14) ^ (shifter << tap)) & 0x4000) | (shifter >> 1); + if ( changed ) + { + delta_left = -delta_left; + synth.offset_inline( time, delta_left, output_left ); + + delta_right = -delta_right; + synth.offset_inline( time, delta_right, output_right ); + } + time += period; + } + while ( time < end_time ); + + this->shifter = shifter; + this->last_amp_left = delta_left >> 1; + this->last_amp_right = delta_right >> 1; + } + delay = time - end_time; +} + +// T6W28_Apu + +T6W28_Apu::T6W28_Apu() +{ + for ( int i = 0; i < 3; i++ ) + { + squares [i].synth = &square_synth; + oscs [i] = &squares [i]; + } + oscs [3] = &noise; + + volume( 1.0 ); + reset(); +} + +T6W28_Apu::~T6W28_Apu() +{ +} + +void T6W28_Apu::volume( double vol ) +{ + vol *= 0.85 / (osc_count * 64 * 2); + square_synth.volume( vol ); + noise.synth.volume( vol ); +} + +void T6W28_Apu::treble_eq( const blip_eq_t& eq ) +{ + square_synth.treble_eq( eq ); + noise.synth.treble_eq( eq ); +} + +void T6W28_Apu::osc_output( int index, Blip_Buffer* center, Blip_Buffer* left, Blip_Buffer* right ) +{ + require( (unsigned) index < osc_count ); + require( (center && left && right) || (!center && !left && !right) ); + T6W28_Osc& osc = *oscs [index]; + osc.outputs [1] = right; + osc.outputs [2] = left; + osc.outputs [3] = center; +} + +void T6W28_Apu::output( Blip_Buffer* center, Blip_Buffer* left, Blip_Buffer* right ) +{ + for ( int i = 0; i < osc_count; i++ ) + osc_output( i, center, left, right ); +} + +void T6W28_Apu::reset() +{ + last_time = 0; + latch_left = 0; + latch_right = 0; + + squares [0].reset(); + squares [1].reset(); + squares [2].reset(); + noise.reset(); +} + +void T6W28_Apu::run_until( sms_time_t end_time ) +{ + require( end_time >= last_time ); // end_time must not be before previous time + + if ( end_time > last_time ) + { + // run oscillators + for ( int i = 0; i < osc_count; ++i ) + { + T6W28_Osc& osc = *oscs [i]; + if ( osc.outputs[1] ) + { + if ( i < 3 ) + squares [i].run( last_time, end_time ); + else + noise.run( last_time, end_time ); + } + } + + last_time = end_time; + } +} + +bool T6W28_Apu::end_frame( sms_time_t end_time ) +{ + if ( end_time > last_time ) + run_until( end_time ); + + assert( last_time >= end_time ); + last_time -= end_time; + + return(1); +} + +static const unsigned char volumes [16] = { + // volumes [i] = 64 * pow( 1.26, 15 - i ) / pow( 1.26, 15 ) + 64, 50, 39, 31, 24, 19, 15, 12, 9, 7, 5, 4, 3, 2, 1, 0 +}; + +void T6W28_Apu::write_data_left( sms_time_t time, int data ) +{ + require( (unsigned) data <= 0xFF ); + + run_until( time ); + + if ( data & 0x80 ) + latch_left = data; + + int index = (latch_left >> 5) & 3; + + if ( latch_left & 0x10 ) + { + oscs [index]->volume_left = volumes [data & 15]; + } + else if ( index < 3 ) + { + T6W28_Square& sq = squares [index]; + if ( data & 0x80 ) + sq.period = (sq.period & 0xFF00) | (data << 4 & 0x00FF); + else + sq.period = (sq.period & 0x00FF) | (data << 8 & 0x3F00); + } +} + +void T6W28_Apu::write_data_right( sms_time_t time, int data ) +{ + require( (unsigned) data <= 0xFF ); + + run_until( time ); + + if ( data & 0x80 ) + latch_right = data; + + int index = (latch_right >> 5) & 3; + //printf("%d\n", index); + + if ( latch_right & 0x10 ) + { + oscs [index]->volume_right = volumes [data & 15]; + } + else if ( index == 2 ) + { + if ( data & 0x80 ) + noise.period_extra = (noise.period_extra & 0xFF00) | (data << 4 & 0x00FF); + else + noise.period_extra = (noise.period_extra & 0x00FF) | (data << 8 & 0x3F00); + } + else if(index == 3) + { + int select = data & 3; + if ( select < 3 ) + noise.period = &noise_periods [select]; + else + noise.period = &noise.period_extra; + + int const tap_disabled = 16; + noise.tap = (data & 0x04) ? 13 : tap_disabled; + noise.shifter = 0x4000; + } +} + + +T6W28_ApuState *T6W28_Apu::save_state(void) +{ + T6W28_ApuState *ret = (T6W28_ApuState *)malloc(sizeof(T6W28_ApuState)); + + for(int x = 0; x < 4; x++) + { + ret->volume_left[x] = oscs[x]->volume_left; + ret->volume_right[x] = oscs[x]->volume_right; + } + for(int x = 0; x < 3; x++) + { + ret->sq_period[x] = squares[x].period; + ret->sq_phase[x] = squares[x].phase; + } + ret->noise_shifter = noise.shifter; + ret->noise_tap = noise.tap; + + if(noise.period == &noise_periods[0]) + ret->noise_period = 0; + else if(noise.period == &noise_periods[1]) + ret->noise_period = 1; + else if(noise.period == &noise_periods[2]) + ret->noise_period = 2; + else ret->noise_period = 3; + + return(ret); +} + +void T6W28_Apu::load_state(T6W28_ApuState *state) +{ + for(int x = 0; x < 4; x++) + { + oscs[x]->volume_left = state->volume_left[x]; + oscs[x]->volume_right = state->volume_right[x]; + } + for(int x = 0; x < 3; x++) + { + squares[x].period = state->sq_period[x]; + squares[x].phase = state->sq_phase[x]; + } + noise.shifter = state->noise_shifter; + noise.tap = state->noise_tap = noise.tap; + + int select = state->noise_period; + + if ( select < 3 ) + noise.period = &noise_periods [select]; + else + noise.period = &noise.period_extra; +} + diff --git a/libmednahawk/src/ngp/T6W28_Apu.h b/libmednahawk/src/ngp/T6W28_Apu.h new file mode 100644 index 0000000000..7f5296fefa --- /dev/null +++ b/libmednahawk/src/ngp/T6W28_Apu.h @@ -0,0 +1,84 @@ +// T6W28_Snd_Emu + +#ifndef SMS_APU_H +#define SMS_APU_H + +typedef long sms_time_t; // clock cycle count + +#include "T6W28_Oscs.h" + +typedef struct +{ + int32 sq_period[3]; + int32 sq_phase[3]; + int32 noise_period; + uint32 noise_shifter; + uint32 noise_tap; + + int32 volume_left[4]; + int32 volume_right[4]; + uint8 latch_left, latch_right; +} T6W28_ApuState; + +class T6W28_Apu { +public: + // Set overall volume of all oscillators, where 1.0 is full volume + void volume( double ); + + // Set treble equalization + void treble_eq( const blip_eq_t& ); + + // Outputs can be assigned to a single buffer for mono output, or to three + // buffers for stereo output (using Stereo_Buffer to do the mixing). + + // Assign all oscillator outputs to specified buffer(s). If buffer + // is NULL, silences all oscillators. + void output( Blip_Buffer* mono ); + void output( Blip_Buffer* center, Blip_Buffer* left, Blip_Buffer* right ); + + // Assign single oscillator output to buffer(s). Valid indicies are 0 to 3, + // which refer to Square 1, Square 2, Square 3, and Noise. If buffer is NULL, + // silences oscillator. + enum { osc_count = 4 }; + void osc_output( int index, Blip_Buffer* mono ); + void osc_output( int index, Blip_Buffer* center, Blip_Buffer* left, Blip_Buffer* right ); + + // Reset oscillators and internal state + void reset(); + + // Write to data port + void write_data_left( sms_time_t, int ); + void write_data_right( sms_time_t, int ); + + // Run all oscillators up to specified time, end current frame, then + // start a new frame at time 0. Returns true if any oscillators added + // sound to one of the left/right buffers, false if they only added + // to the center buffer. + bool end_frame( sms_time_t ); + + T6W28_ApuState *save_state(void); + void load_state(T6W28_ApuState*); +public: + T6W28_Apu(); + ~T6W28_Apu(); +private: + // noncopyable + T6W28_Apu( const T6W28_Apu& ); + T6W28_Apu& operator = ( const T6W28_Apu& ); + + T6W28_Osc* oscs [osc_count]; + T6W28_Square squares [3]; + T6W28_Square::Synth square_synth; // used by squares + sms_time_t last_time; + int latch_left, latch_right; + T6W28_Noise noise; + + void run_until( sms_time_t ); +}; + +inline void T6W28_Apu::output( Blip_Buffer* b ) { output( b, b, b ); } + +inline void T6W28_Apu::osc_output( int i, Blip_Buffer* b ) { osc_output( i, b, b, b ); } + +#endif + diff --git a/libmednahawk/src/ngp/T6W28_Oscs.h b/libmednahawk/src/ngp/T6W28_Oscs.h new file mode 100644 index 0000000000..7d7fd90419 --- /dev/null +++ b/libmednahawk/src/ngp/T6W28_Oscs.h @@ -0,0 +1,55 @@ + +// Private oscillators used by T6W28_Apu + +// T6W28_Snd_Emu + +#ifndef SMS_OSCS_H +#define SMS_OSCS_H + +#include + +struct T6W28_Osc +{ + Blip_Buffer* outputs [4]; // NULL, right, left, center + Blip_Buffer* output; + int output_select; + + int delay; + int last_amp_left; + int last_amp_right; + + int volume_left; + int volume_right; + + T6W28_Osc(); + void reset(); +}; + +struct T6W28_Square : T6W28_Osc +{ + int period; + int phase; + + typedef Blip_Synth Synth; + const Synth* synth; + + void reset(); + void run( sms_time_t, sms_time_t ); +}; + +struct T6W28_Noise : T6W28_Osc +{ + const int* period; + int period_extra; + unsigned shifter; + unsigned tap; + + typedef Blip_Synth Synth; + Synth synth; + + void reset(); + void run( sms_time_t, sms_time_t ); +}; + +#endif + diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.cpp new file mode 100644 index 0000000000..12ae626bbf --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.cpp @@ -0,0 +1,641 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_disassemble.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +25 JUL 2002 - neopop_uk +======================================= +- Added missing registers to disassmbly table (unused, I hope!) + +//--------------------------------------------------------------------------- +*/ + +//========================================================================= + +#include "neopop.h" +#include "TLCS900h_disassemble.h" +#include "TLCS900h_registers.h" +#include "TLCS900h_interpret.h" +#include "mem.h" + +namespace TLCS900H +{ + +void TLCS900h_disassemble_extra(void); +void TLCS900h_disassemble_src(int size); +void TLCS900h_disassemble_dst(void); +void TLCS900h_disassemble_reg(int size); + +//========================================================================= + +char str_R[8]; //Big R +char str_r[8]; //Little R + +//Control register names +const char* crName[3][0x40] = +{ + { + 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, "DMAM0", 0, + 0,0, "DMAM1", 0, + 0,0, "DMAM2", 0, + 0,0, "DMAM3", 0, + }, + + { + 0,0, + 0,0, + 0,0, + 0,0, + 0,0, + 0,0, + 0,0, + 0,0, + + "DMAC0", 0, + "DMAC1", 0, + "DMAC2", 0, + "DMAC3", 0, + + 0,0, //30 + 0,0, + 0,0, + "NSP",0, //3C + }, + + { + "DMAS0", //00 + "DMAS1", + "DMAS2", + "DMAS3", + "DMAD0", //10 + "DMAD1", + "DMAD2", + "DMAD3", + 0, //20 + 0, + 0, + 0, + 0, //30 + 0, + 0, + "XNSP", //3C + } +}; + +//Register names +const char* gprName[8][3] = +{ + {"W", "WA", "XWA"}, + {"A", "BC", "XBC"}, + {"B", "DE", "XDE"}, + {"C", "HL", "XHL"}, + {"D", "IX", "XIX"}, + {"E", "IY", "XIY"}, + {"H", "IZ", "XIZ"}, + {"L", "SP", "XSP"} +}; + +//Condition Code names +const char* ccName[] = +{ + "F","LT","LE","ULE", + "OV","MI","Z","C", + "T","GE","GT","UGT", + "NOV","PL","NZ","NC" +}; + +const char* regCodeName[3][256] = +{ + { + "RA0","RW0","QA0","QW0","RC0","RB0","QC0","QB0", //BANK 0 + "RE0","RD0","QE0","QD0","RL0","RH0","QL0","QH0", + "RA1","RW1","QA1","QW1","RC1","RB1","QC1","QB1", //BANK 1 + "RE1","RD1","QE1","QD1","RL1","RH1","QL1","QH1", + "RA2","RW2","QA2","QW2","RC2","RB2","QC2","QB2", //BANK 2 + "RE2","RD2","QE2","QD2","RL2","RH2","QL2","QH2", + "RA3","RW3","QA3","QW3","RC3","RB3","QC3","QB3", //BANK 3 + "RE3","RD3","QE3","QD3","RL3","RH3","QL3","QH3", + + 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,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,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,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, + + "A'","W'","QA'","QW'","C'","B'","QC'","QB'", //Previous Bank + "E'","D'","QE'","QD'","L'","H'","QL'","QH'", + "A","W","QA","QW","C","B","QC","QB", //Current Bank + "E","D","QE","QD","L","H","QL","QH", + + "IXL","IXH","QIXL","QIXH","IYL","IYH","QIYL","QIYH", + "IZL","IZH","QIZL","QIZH","SPL","SPH","QSPL","QSPX" + }, + + { + "RWA0","QWA0","RBC0","QBC0", //BANK 0 + "RDE0","QDE0","RHL0","QHL0", + "RWA1","QWA1","RBC1","QBC1", //BANK 1 + "RDE1","QDE1","RHL1","QHL1", + "RWA2","QWA2","RBC2","QBC2", //BANK 2 + "RDE2","QDE2","RHL2","QHL2", + "RWA3","QWA3","RBC3","QBC3", //BANK 3 + "RDE3","QDE3","RHL3","QHL3", + + 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,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, + + "WA'","QWA'","BC'","QBC'","DE'","QDE'","HL'","QHL'",//Previous Bank + "WA","QWA","BC","QBC","DE","QDE","HL","QHL", //Current Bank + + "IX","QIX","IY","QIY","IZ","QIZ","SP","QSP" + }, + + { + "XWA0","XBC0","XDE0","XHL0", //BANK 0 + "XWA1","XBC1","XDE1","XHL1", //BANK 1 + "XWA2","XBC2","XDE2","XHL2", //BANK 2 + "XWA3","XBC3","XDE3","XHL3", //BANK 3 + + 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, + + "XWA'","XBC'","XDE'","XHL'", //Previous Bank + "XWA","XBC","XDE","XHL", //Current Bank + + "XIX","XIY","XIZ","XSP" + } +}; + +//========================================================================= + +void get_rr_Name(void) +{ + sprintf(str_r, "???"); + + if (size == 0 && first == 0xC7) + { + sprintf(str_r, "%s", extra); + return; + } + + switch(first & 7) + { + case 0: if (size == 1) sprintf(str_r, "XWA"); break; + case 1: + if (size == 0) sprintf(str_r, "WA"); + if (size == 1) sprintf(str_r, "XBC"); + break; + case 2: if (size == 1) sprintf(str_r, "XDE"); break; + case 3: + if (size == 0) sprintf(str_r, "BC"); + if (size == 1) sprintf(str_r, "XHL"); + break; + case 4: if (size == 1) sprintf(str_r, "XIX"); break; + case 5: + if (size == 0) sprintf(str_r, "DE"); + if (size == 1) sprintf(str_r, "XIY"); + break; + case 6: if (size == 1) sprintf(str_r, "XIZ"); break; + case 7: + if (size == 0) sprintf(str_r, "HL"); + if (size == 1) sprintf(str_r, "XSP"); + break; + } +} + +void get_RR_Name(void) +{ + sprintf(str_R, "???"); + + switch(second & 7) + { + case 0: if (size == 1) sprintf(str_R, "XWA"); break; + case 1: + if (size == 0) sprintf(str_R, "WA"); + if (size == 1) sprintf(str_R, "XBC"); + break; + case 2: if (size == 1) sprintf(str_R, "XDE"); break; + case 3: + if (size == 0) sprintf(str_R, "BC"); + if (size == 1) sprintf(str_R, "XHL"); + break; + case 4: if (size == 1) sprintf(str_R, "XIX"); break; + case 5: + if (size == 0) sprintf(str_R, "DE"); + if (size == 1) sprintf(str_R, "XIY"); + break; + case 6: if (size == 1) sprintf(str_R, "XIZ"); break; + case 7: + if (size == 0) sprintf(str_R, "HL"); + if (size == 1) sprintf(str_R, "XSP"); + break; + } +} + +//============================================================================= + +char instr[128]; //Print the disassembled instruction to this string +uint8 bytes[16]; //Stores the bytes used +uint8 bcnt; //Byte Counter for above + +//============================================================================= + +uint8 get8_dis(void) +{ + uint8 a = bytes[bcnt++] = loadB(pc++); + return a; +} + +uint16 get16_dis(void) +{ + uint16 a = *(uint16*)(uint8*)(bytes + bcnt) = loadW(pc); + pc += 2; bcnt += 2; + return a; +} + +uint32 get24_dis(void) +{ + uint8 b; uint16 a; + a = *(uint16*)(uint8*)(bytes + bcnt) = loadW(pc); + pc += 2; bcnt += 2; + b = bytes[bcnt++] = loadB(pc++); + return ((uint32)b << 16) | (uint32)a; +} + +uint32 get32_dis(void) +{ + uint32 a = *(uint32*)(uint8*)(bytes + bcnt) = loadL(pc); + pc += 4; bcnt += 4; + return a; +} + +//========================================================================= + +static void src_B() { TLCS900h_disassemble_src(0); } +static void src_W() { TLCS900h_disassemble_src(1); } +static void src_L() { TLCS900h_disassemble_src(2); } +static void dst() { TLCS900h_disassemble_dst(); } +static void reg_B() { TLCS900h_disassemble_reg(0);} +static void reg_W() { TLCS900h_disassemble_reg(1);} +static void reg_L() { TLCS900h_disassemble_reg(2);} + +//========================================================================= + +//Single Byte Opcode + +static void NOP() +{ + sprintf(instr, "NOP"); +} + +static void NORMAL() +{ + sprintf(instr, "NORMAL"); +} + +static void PUSHSR() +{ + sprintf(instr, "PUSH SR"); +} + +static void POPSR() +{ + sprintf(instr, "POP SR"); +} + +static void MAX() +{ + sprintf(instr, "MAX"); +} + +static void HALT() +{ + sprintf(instr, "HALT"); +} + +static void EI() +{ + uint8 value = get8_dis(); + + if (value == 7) + sprintf(instr, "DI"); + else + sprintf(instr, "EI %d", value); +} + +static void RETI() +{ + sprintf(instr, "RETI"); +} + +static void LD8_8() +{ + uint8 dst = get8_dis(), src = get8_dis(); + sprintf(instr, "LD (0x%02X),0x%02X", dst, src); +} + +static void PUSH8() +{ + sprintf(instr, "PUSH 0x%02X", get8_dis()); +} + +static void LD8_16() +{ + uint8 dst = get8_dis(); + uint16 src = get16_dis(); + sprintf(instr, "LD.w (0x%02X),0x%04X", dst, src); +} + +static void PUSH16() +{ + sprintf(instr, "PUSH 0x%04X", get16_dis()); +} + +static void INCF() +{ + sprintf(instr, "INCF"); +} + +static void DECF() +{ + sprintf(instr, "DECF"); +} + +static void RET() +{ + sprintf(instr, "RET"); +} + +static void RETD() +{ + sprintf(instr, "RETD %d", get16_dis()); +} + +static void RCF() +{ + sprintf(instr, "RCF"); +} + +static void SCF() +{ + sprintf(instr, "SCF"); +} + +static void CCF() +{ + sprintf(instr, "CCF"); +} + +static void ZCF() +{ + sprintf(instr, "ZCF"); +} + +static void PUSHA() +{ + sprintf(instr, "PUSH A"); +} + +static void POPA() +{ + sprintf(instr, "POP A"); +} + +static void EX() +{ + sprintf(instr, "EX F,F'"); +} + +static void LDF() +{ + sprintf(instr, "LDF 0x%02X", get8_dis()); +} + +static void PUSHF() +{ + sprintf(instr, "PUSH F"); +} + +static void POPF() +{ + sprintf(instr, "POP F"); +} + +static void JP16() +{ + sprintf(instr, "JP 0x%04X", get16_dis()); +} + +static void JP24() +{ + sprintf(instr, "JP 0x%06X", get24_dis()); +} + +static void CALL16() +{ + sprintf(instr, "CALL 0x%04X", get16_dis()); +} + +static void CALL24() +{ + sprintf(instr, "CALL 0x%06X", get24_dis()); +} + +static void CALR() +{ + sprintf(instr, "CALR 0x%06X", (int16)get16_dis() + pc); +} + +static void LDB() +{ + sprintf(instr, "LD %s,0x%02X", gprName[first & 7][0], get8_dis()); +} + +static void PUSHW() +{ + sprintf(instr, "PUSH %s", gprName[first & 7][1]); +} + +static void LDW() +{ + sprintf(instr, "LD %s,0x%04X", gprName[first & 7][1], get16_dis()); +} + +static void PUSHL() +{ + sprintf(instr, "PUSH %s", gprName[first & 7][2]); +} + +static void LDL() +{ + sprintf(instr, "LD %s,0x%08X", gprName[first & 7][2], get32_dis()); +} + +static void POPW() +{ + sprintf(instr, "POP %s", gprName[first & 7][1]); +} + +static void POPL() +{ + sprintf(instr, "POP %s", gprName[first & 7][2]); +} + +static void JR() +{ + sprintf(instr, "JR %s,0x%06X", ccName[first & 0xF], (int8)get8_dis() + pc); +} + +static void JRL() +{ + sprintf(instr, "JRL %s,0x%06X", ccName[first & 0xF], (int16)get16_dis() + pc); +} + +static void LDX() +{ + uint8 dst, src; + + get8_dis(); //00 + dst = get8_dis(); //#8 + get8_dis(); //00 + src = get8_dis(); //# + get8_dis(); //00 + sprintf(instr, "LDX (0x%02X),0x%02X", dst, src); +} + +static void SWI() +{ + sprintf(instr, "SWI %d", first & 7); +} + +//========================================================================= + +static void dBIOSHLE() +{ + sprintf(instr, "BIOS-HLE"); +} + +//========================================================================= + +//Primary Instruction decode +static void (*decode[256])() = +{ +/*0*/ NOP, NORMAL, PUSHSR, POPSR, MAX, HALT, EI, RETI, + LD8_8, PUSH8, LD8_16, PUSH16, INCF, DECF, RET, RETD, +/*1*/ RCF, SCF, CCF, ZCF, PUSHA, POPA, EX, LDF, + PUSHF, POPF, JP16, JP24, CALL16, CALL24, CALR, dBIOSHLE, +/*2*/ LDB, LDB, LDB, LDB, LDB, LDB, LDB, LDB, + PUSHW, PUSHW, PUSHW, PUSHW, PUSHW, PUSHW, PUSHW, PUSHW, +/*3*/ LDW, LDW, LDW, LDW, LDW, LDW, LDW, LDW, + PUSHL, PUSHL, PUSHL, PUSHL, PUSHL, PUSHL, PUSHL, PUSHL, +/*4*/ LDL, LDL, LDL, LDL, LDL, LDL, LDL, LDL, + POPW, POPW, POPW, POPW, POPW, POPW, POPW, POPW, +/*5*/ 0, 0, 0, 0, 0, 0, 0, 0, + POPL, POPL, POPL, POPL, POPL, POPL, POPL, POPL, +/*6*/ JR, JR, JR, JR, JR, JR, JR, JR, + JR, JR, JR, JR, JR, JR, JR, JR, +/*7*/ JRL, JRL, JRL, JRL, JRL, JRL, JRL, JRL, + JRL, JRL, JRL, JRL, JRL, JRL, JRL, JRL, +/*8*/ src_B, src_B, src_B, src_B, src_B, src_B, src_B, src_B, + src_B, src_B, src_B, src_B, src_B, src_B, src_B, src_B, +/*9*/ src_W, src_W, src_W, src_W, src_W, src_W, src_W, src_W, + src_W, src_W, src_W, src_W, src_W, src_W, src_W, src_W, +/*A*/ src_L, src_L, src_L, src_L, src_L, src_L, src_L, src_L, + src_L, src_L, src_L, src_L, src_L, src_L, src_L, src_L, +/*B*/ dst, dst, dst, dst, dst, dst, dst, dst, + dst, dst, dst, dst, dst, dst, dst, dst, +/*C*/ src_B, src_B, src_B, src_B, src_B, src_B, 0, reg_B, + reg_B, reg_B, reg_B, reg_B, reg_B, reg_B, reg_B, reg_B, +/*D*/ src_W, src_W, src_W, src_W, src_W, src_W, 0, reg_W, + reg_W, reg_W, reg_W, reg_W, reg_W, reg_W, reg_W, reg_W, +/*E*/ src_L, src_L, src_L, src_L, src_L, src_L, 0, reg_L, + reg_L, reg_L, reg_L, reg_L, reg_L, reg_L, reg_L, reg_L, +/*F*/ dst, dst, dst, dst, dst, dst, 0, LDX, + SWI, SWI, SWI, SWI, SWI, SWI, SWI, SWI +}; + +//============================================================================= + +char* TLCS900h_disassemble(void) +{ + char str[80]; + unsigned int i; + + memset(str, 0, 80); + + //Reset + bcnt = 0; + brCode = FALSE; + sprintf(instr, "unknown"); + sprintf(extra, "unknown"); + + //Fix big addresses + pc &= 0xFFFFFF; + + //Add the program counter + sprintf(str, "%06X: ", pc); + + first = get8_dis(); //Get the first opcode + + //Disassemble + if (decode[first]) + { + //Decode any extra data + TLCS900h_disassemble_extra(); + (*decode[first])(); + } + + //Add the instruction + strcat(str, instr); + + //Add the bytes used + for (i = strlen(str); i < 32; i++) + str[i] = ' '; + str[32] = '\"'; + for (i = 0; i < bcnt; i++) + { + char tmp[80]; + sprintf(tmp, "%02X ", bytes[i]); + strcat(str, tmp); + } + str[strlen(str) - 1] = '\"'; + + return strdup(str); +} +}; +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.h new file mode 100644 index 0000000000..f8add14411 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble.h @@ -0,0 +1,77 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_disassemble.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_DISASSEMBLE__ +#define __TLCS900H_DISASSEMBLE__ + +namespace TLCS900H +{ +//============================================================================= + +//Disassembles a single instruction from 'pc', +//pc is incremented to the start of the next instruction. +char* TLCS900h_disassemble(void); + +//Print to this string the disassembled instruction +extern char instr[128]; + +//Print the mnemonic for the addressing mode / reg code. +extern char extra[256]; + +//============================================================================= + +extern char str_R[8]; //Big R +extern char str_r[8]; //Little R + +//Translate an rr or RR value for MUL/MULS/DIV/DIVS +void get_rr_Name(void); +void get_RR_Name(void); + +extern uint8 bytes[16]; //Stores the bytes used +extern uint8 bcnt; //Byte Counter for above + +extern const char* gprName[8][3]; //8 regs * 3 names (byte, word, long) +extern const char* regCodeName[3][256]; +extern const char* crName[3][0x40]; + +extern const char* ccName[]; + +uint8 get8_dis(void); +uint16 get16_dis(void); +uint32 get24_dis(void); +uint32 get32_dis(void); + +}; + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_dst.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_dst.cpp new file mode 100644 index 0000000000..1d3a9ed939 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_dst.cpp @@ -0,0 +1,240 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_disassemble_dst.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + +//========================================================================= + +#include "neopop.h" +#include "TLCS900h_disassemble.h" +#include "TLCS900h_registers.h" +#include "TLCS900h_interpret.h" + +//========================================================================= +namespace TLCS900H +{ + +static void LDBi() +{ + sprintf(instr, "LD (%s),0x%02X", extra, get8_dis()); +} + +static void LDWi() +{ + sprintf(instr, "LD (%s),0x%04X", extra, get16_dis()); +} + +static void POPB() +{ + sprintf(instr, "POP.b (%s)", extra); +} + +static void POPW() +{ + sprintf(instr, "POP.w (%s)", extra); +} + +static void LDBm16() +{ + sprintf(instr, "LD.b (%s),(0x%04X)", extra, get16_dis()); +} + +static void LDWm16() +{ + sprintf(instr, "LD.w (%s),(0x%04X)", extra, get16_dis()); +} + +static void LDAW() +{ + sprintf(instr, "LDA %s,%s", gprName[second & 7][1], extra); +} + +static void LDAL() +{ + sprintf(instr, "LDA %s,%s", gprName[second & 7][2], extra); +} + +static void ANDCFA() +{ + sprintf(instr, "ANDCF A,(%s)", extra); +} + +static void ORCFA() +{ + sprintf(instr, "ORCF A,(%s)", extra); +} + +static void XORCFA() +{ + sprintf(instr, "XORCF A,(%s)", extra); +} + +static void LDCFA() +{ + sprintf(instr, "LDCF A,(%s)", extra); +} + +static void STCFA() +{ + sprintf(instr, "STCF A,(%s)", extra); +} + +static void LDBR() +{ + sprintf(instr, "LD (%s),%s", extra, gprName[second&7][0]); +} + +static void LDWR() +{ + sprintf(instr, "LD (%s),%s", extra, gprName[second&7][1]); +} + +static void LDLR() +{ + sprintf(instr, "LD (%s),%s", extra, gprName[second&7][2]); +} + +static void ANDCF() +{ + sprintf(instr, "ANDCF %d,(%s)", second & 7, extra); +} + +static void ORCF() +{ + sprintf(instr, "ORCF %d,(%s)", second & 7, extra); +} + +static void XORCF() +{ + sprintf(instr, "XORCF %d,(%s)", second & 7, extra); +} + +static void LDCF() +{ + sprintf(instr, "LDCF %d,(%s)", second & 7, extra); +} + +static void STCF() +{ + sprintf(instr, "STCF %d,(%s)", second & 7, extra); +} + +static void TSET() +{ + sprintf(instr, "TSET %d,(%s)", second & 7, extra); +} + +static void RES() +{ + sprintf(instr, "RES %d,(%s)", second & 7, extra); +} + +static void SET() +{ + sprintf(instr, "SET %d,(%s)", second & 7, extra); +} + +static void CHG() +{ + sprintf(instr, "CHG %d,(%s)", second & 7, extra); +} + +static void BIT() +{ + sprintf(instr, "BIT %d,(%s)", second & 7, extra); +} + +static void JP() +{ + sprintf(instr, "JP %s,%s", ccName[second & 0xF], extra); +} + +static void CALL() +{ + sprintf(instr, "CALL %s,%s", ccName[second & 0xF], extra); +} + +static void RET() +{ + sprintf(instr, "RET %s", ccName[second & 0xF]); +} + +//========================================================================= + +//Secondary (DST) Instruction decode +static void (*decode[256])() = +{ +/*0*/ LDBi, 0, LDWi, 0, POPB, 0, POPW, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/*1*/ 0, 0, 0, 0, LDBm16, 0, LDWm16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/*2*/ LDAW, LDAW, LDAW, LDAW, LDAW, LDAW, LDAW, LDAW, + ANDCFA, ORCFA, XORCFA, LDCFA, STCFA, 0, 0, 0, +/*3*/ LDAL, LDAL, LDAL, LDAL, LDAL, LDAL, LDAL, LDAL, + 0, 0, 0, 0, 0, 0, 0, 0, +/*4*/ LDBR, LDBR, LDBR, LDBR, LDBR, LDBR, LDBR, LDBR, + 0, 0, 0, 0, 0, 0, 0, 0, +/*5*/ LDWR, LDWR, LDWR, LDWR, LDWR, LDWR, LDWR, LDWR, + 0, 0, 0, 0, 0, 0, 0, 0, +/*6*/ LDLR, LDLR, LDLR, LDLR, LDLR, LDLR, LDLR, LDLR, + 0, 0, 0, 0, 0, 0, 0, 0, +/*7*/ 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/*8*/ ANDCF, ANDCF, ANDCF, ANDCF, ANDCF, ANDCF, ANDCF, ANDCF, + ORCF, ORCF, ORCF, ORCF, ORCF, ORCF, ORCF, ORCF, +/*9*/ XORCF, XORCF, XORCF, XORCF, XORCF, XORCF, XORCF, XORCF, + LDCF, LDCF, LDCF, LDCF, LDCF, LDCF, LDCF, LDCF, +/*A*/ STCF, STCF, STCF, STCF, STCF, STCF, STCF, STCF, + TSET, TSET, TSET, TSET, TSET, TSET, TSET, TSET, +/*B*/ RES, RES, RES, RES, RES, RES, RES, RES, + SET, SET, SET, SET, SET, SET, SET, SET, +/*C*/ CHG, CHG, CHG, CHG, CHG, CHG, CHG, CHG, + BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, +/*D*/ JP, JP, JP, JP, JP, JP, JP, JP, + JP, JP, JP, JP, JP, JP, JP, JP, +/*E*/ CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, + CALL, CALL, CALL, CALL, CALL, CALL, CALL, CALL, +/*F*/ RET, RET, RET, RET, RET, RET, RET, RET, + RET, RET, RET, RET, RET, RET, RET, RET +}; + +//============================================================================= + +void TLCS900h_disassemble_dst(void) +{ + second = get8_dis(); //Get the second opcode + + if (decode[second]) + (*decode[second])(); + else + sprintf(instr, "unknown dst instr. %02X", second); +} +}; diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_extra.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_extra.cpp new file mode 100644 index 0000000000..4aa24f8ae5 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_extra.cpp @@ -0,0 +1,199 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_disassemble_extra.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +02 SEP 2002 - neopop_uk +======================================= +- Added the undocumented type 0x13 R32 address mode. + +//--------------------------------------------------------------------------- +*/ + +//========================================================================= + +#include "neopop.h" +#include "TLCS900h_disassemble.h" +#include "TLCS900h_interpret.h" + +#define RCN_fetch(_a, _b) (regCodeName[(_a)][(_b)] ? regCodeName[(_a)][(_b)] : "-UNK-") + +namespace TLCS900H +{ + +//========================================================================= + +char extra[256]; //Print the mnemonic for the addressing mode here. + +//========================================================================= + +static void ExXWA() {sprintf(extra, "XWA");} +static void ExXBC() {sprintf(extra, "XBC");} +static void ExXDE() {sprintf(extra, "XDE");} +static void ExXHL() {sprintf(extra, "XHL");} +static void ExXIX() {sprintf(extra, "XIX");} +static void ExXIY() {sprintf(extra, "XIY");} +static void ExXIZ() {sprintf(extra, "XIZ");} +static void ExXSP() {sprintf(extra, "XSP");} + +static void ExXWAd() {sprintf(extra, "XWA %+d", (int8)get8_dis());} +static void ExXBCd() {sprintf(extra, "XBC %+d", (int8)get8_dis());} +static void ExXDEd() {sprintf(extra, "XDE %+d", (int8)get8_dis());} +static void ExXHLd() {sprintf(extra, "XHL %+d", (int8)get8_dis());} +static void ExXIXd() {sprintf(extra, "XIX %+d", (int8)get8_dis());} +static void ExXIYd() {sprintf(extra, "XIY %+d", (int8)get8_dis());} +static void ExXIZd() {sprintf(extra, "XIZ %+d", (int8)get8_dis());} +static void ExXSPd() {sprintf(extra, "XSP %+d", (int8)get8_dis());} + +static void Ex8() {sprintf(extra, "0x%02X", get8_dis());} +static void Ex16() {sprintf(extra, "0x%04X", get16_dis());} +static void Ex24() {sprintf(extra, "0x%06X", get24_dis());} + +static void ExR32() +{ + uint8 data = get8_dis(); + + if (data == 0x03) + { + uint8 rIndex, r32; + r32 = get8_dis(); //r32, upper 6 bits + rIndex = get8_dis(); //r8 / r16 + sprintf(extra, "%s + %s", + RCN_fetch(2, r32 >> 2), RCN_fetch(0, rIndex >> 0)); + return; + } + + if (data == 0x07) + { + uint8 rIndex, r32; + r32 = get8_dis(); //r32, upper 6 bits + rIndex = get8_dis(); //r8 / r16 + sprintf(extra, "%s + %s", + RCN_fetch(2, r32 >> 2), RCN_fetch(1, rIndex >> 1)); + return; + } + + //Undocumented mode. + if (data == 0x13) + { + sprintf(extra, "pc %+d", (int16)get16_dis()); + return; + } + + if ((data & 3) == 1) + sprintf(extra, "%s %+d", RCN_fetch(2, data >> 2), (int16)get16_dis()); + else + sprintf(extra, "%s", RCN_fetch(2, data >> 2)); +} + +static void ExDec() +{ + uint8 data = get8_dis(); + uint8 r32 = data & 0xFC; + + switch(data & 3) + { + case 0: sprintf(extra, "1--%s", RCN_fetch(2, r32 >> 2)); break; + case 1: sprintf(extra, "2--%s", RCN_fetch(2, r32 >> 2)); break; + case 2: sprintf(extra, "4--%s", RCN_fetch(2, r32 >> 2)); break; + } +} + +static void ExInc() +{ + uint8 data = get8_dis(); + uint8 r32 = data & 0xFC; + + switch(data & 3) + { + case 0: sprintf(extra, "%s++1", RCN_fetch(2, r32 >> 2)); break; + case 1: sprintf(extra, "%s++2", RCN_fetch(2, r32 >> 2)); break; + case 2: sprintf(extra, "%s++4", RCN_fetch(2, r32 >> 2)); break; + } +} + +static void ExRCB() +{ + uint8 data = get8_dis(); + sprintf(extra, "%s", RCN_fetch(0, data >> 0)); + brCode = TRUE; +} + +static void ExRCW() +{ + uint8 data = get8_dis(); + sprintf(extra, "%s", RCN_fetch(1, data >> 1)); + brCode = TRUE; +} + +static void ExRCL() +{ + uint8 data = get8_dis(); + sprintf(extra, "%s", RCN_fetch(2, data >> 2)); + brCode = TRUE; +} + +//========================================================================= + +//Address Mode & Register Code +static void (*decodeExtra[256])() = +{ +/*0*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*1*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*2*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*3*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*4*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*5*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*6*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*7*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*8*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*9*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*A*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*B*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*C*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, ExRCB, + 0, 0, 0, 0, 0, 0, 0, 0, +/*D*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, ExRCW, + 0, 0, 0, 0, 0, 0, 0, 0, +/*E*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, ExRCL, + 0, 0, 0, 0, 0, 0, 0, 0, +/*F*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +void TLCS900h_disassemble_extra(void) +{ + //Is any extra data used by this instruction? + if (decodeExtra[first]) + (*decodeExtra[first])(); +} + +}; diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_reg.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_reg.cpp new file mode 100644 index 0000000000..7da9d6fe18 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_reg.cpp @@ -0,0 +1,662 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_disassemble_reg.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +22 JUL 2002 - neopop_uk +======================================= +- Fixed disassembly of Link, it's second operand is signed. + +28 JUL 2002 - neopop_uk +======================================= +- Better disassembly of MUL/MULS/DIV/DIVS - operand size is shown. + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_disassemble.h" +#include "TLCS900h_registers.h" +#include "TLCS900h_interpret.h" + +//========================================================================= + +namespace TLCS900H +{ + +static void LDi() +{ + switch(size) + { + case 0: sprintf(instr, "LD %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "LD %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "LD %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void PUSH() +{ + sprintf(instr, "PUSH %s", str_r); +} + +static void POP() +{ + sprintf(instr, "POP %s", str_r); +} + +static void CPL() +{ + sprintf(instr, "CPL %s", str_r); +} + +static void NEG() +{ + sprintf(instr, "NEG %s", str_r); +} + +static void MULi() +{ + get_rr_Name(); + + switch(size) + { + case 0: sprintf(instr, "MUL.b %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "MUL.w %s,0x%04X", str_r, get16_dis()); break; + } +} + +static void MULSi() +{ + get_rr_Name(); + + switch(size) + { + case 0: sprintf(instr, "MULS.b %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "MULS.w %s,0x%04X", str_r, get16_dis()); break; + } +} + +static void DIVi() +{ + get_rr_Name(); + + switch(size) + { + case 0: sprintf(instr, "DIV.b %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "DIV.w %s,0x%04X", str_r, get16_dis()); break; + } +} + +static void DIVSi() +{ + get_rr_Name(); + + switch(size) + { + case 0: sprintf(instr, "DIVS.b %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "DIVS.w %s,0x%04X", str_r, get16_dis()); break; + } +} + +static void LINK() +{ + sprintf(instr, "LINK %s, %d", str_r, (int16)get16_dis()); +} + +static void UNLK() +{ + sprintf(instr, "UNLK %s", str_r); +} + +static void BS1F() +{ + sprintf(instr, "BS1F A,%s", str_r); +} + +static void BS1B() +{ + sprintf(instr, "BS1B A,%s", str_r); +} + +static void DAA() +{ + sprintf(instr, "DAA %s", str_r); +} + +static void EXTZ() +{ + sprintf(instr, "EXTZ %s", str_r); +} + +static void EXTS() +{ + sprintf(instr, "EXTS %s", str_r); +} + +static void PAA() +{ + sprintf(instr, "PAA %s", str_r); +} + +static void MIRR() +{ + sprintf(instr, "MIRR %s", str_r); +} + +static void MULA() +{ + sprintf(instr, "MULA %s", str_r); +} + +static void DJNZ() +{ + sprintf(instr, "DJNZ %s,0x%06X", str_r, (int8)get8_dis() + pc); +} + +static void ANDCFi() +{ + sprintf(instr, "ANDCF %d,%s", get8_dis() & 0xF, str_r); +} + +static void ORCFi() +{ + sprintf(instr, "ORCF %d,%s", get8_dis() & 0xF, str_r); +} + +static void XORCFi() +{ + sprintf(instr, "XORCF %d,%s", get8_dis() & 0xF, str_r); +} + +static void LDCFi() +{ + sprintf(instr, "LDCF %d,%s", get8_dis() & 0xF, str_r); +} + +static void STCFi() +{ + sprintf(instr, "STCF %d,%s", get8_dis() & 0xF, str_r); +} + +static void ANDCFA() +{ + sprintf(instr, "ANDCF A,%s", str_r); +} + +static void ORCFA() +{ + sprintf(instr, "ORCF A,%s", str_r); +} + +static void XORCFA() +{ + sprintf(instr, "XORCF A,%s", str_r); +} + +static void LDCFA() +{ + sprintf(instr, "LDCF A,%s", str_r); +} + +static void STCFA() +{ + sprintf(instr, "STCF A,%s", str_r); +} + +static void LDCcrr() +{ + uint8 cr = get8_dis(); + sprintf(instr, "LDC %s,%s", crName[size][cr >> size], str_r); +} + +static void LDCrcr() +{ + uint8 cr = get8_dis(); + sprintf(instr, "LDC %s,%s", str_r, crName[size][cr >> size]); +} + +static void RES() +{ + sprintf(instr, "RES %d,%s", get8_dis() & 0xF, str_r); +} + +static void SET() +{ + sprintf(instr, "SET %d,%s", get8_dis() & 0xF, str_r); +} + +static void CHG() +{ + sprintf(instr, "CHG %d,%s", get8_dis() & 0xF, str_r); +} + +static void BIT() +{ + sprintf(instr, "BIT %d,%s", get8_dis() & 0xF, str_r); +} + +static void TSET() +{ + sprintf(instr, "TSET %d,%s", get8_dis() & 0xF, str_r); +} + +static void MINC1() +{ + sprintf(instr, "MINC1 %d,%s", get16_dis()+1, str_r); +} + +static void MINC2() +{ + sprintf(instr, "MINC2 %d,%s", get16_dis()+2, str_r); +} + +static void MINC4() +{ + sprintf(instr, "MINC4 %d,%s", get16_dis()+4, str_r); +} + +static void MDEC1() +{ + sprintf(instr, "MDEC1 %d,%s", get16_dis()+1, str_r); +} + +static void MDEC2() +{ + sprintf(instr, "MDEC2 %d,%s", get16_dis()+2, str_r); +} + +static void MDEC4() +{ + sprintf(instr, "MDEC4 %d,%s", get16_dis()+4, str_r); +} + +static void MUL() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "MUL.b %s,%s", str_R, str_r); break; + case 1: sprintf(instr, "MUL.w %s,%s", str_R, str_r); break; + } +} + +static void MULS() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "MULS.b %s,%s", str_R, str_r); break; + case 1: sprintf(instr, "MULS.w %s,%s", str_R, str_r); break; + } +} + +static void DIV() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "DIV.b %s,%s", str_R, str_r); break; + case 1: sprintf(instr, "DIV.w %s,%s", str_R, str_r); break; + } +} + +static void DIVS() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "DIVS.b %s,%s", str_R, str_r); break; + case 1: sprintf(instr, "DIVS.w %s,%s", str_R, str_r); break; + } +} + +static void INC() +{ + uint8 val = (second & 7); + if (val == 0) + val = 8; + + sprintf(instr, "INC %d,%s", val, str_r); +} + +static void DEC() +{ + uint8 val = (second & 7); + if (val == 0) + val = 8; + + sprintf(instr, "DEC %d,%s", val, str_r); +} + +static void SCC() +{ + sprintf(instr, "SCC %s,%s", ccName[second & 0xF], str_r); +} + +static void ADD() +{ + sprintf(instr, "ADD %s,%s", str_R, str_r); +} + +static void LDRr() +{ + sprintf(instr, "LD %s,%s", str_R, str_r); +} + +static void LDrR() +{ + sprintf(instr, "LD %s,%s", str_r, str_R); +} + +static void ADC() +{ + sprintf(instr, "ADC %s,%s", str_R, str_r); +} + +static void SUB() +{ + sprintf(instr, "SUB %s,%s", str_R, str_r); +} + +static void SBC() +{ + sprintf(instr, "SBC %s,%s", str_R, str_r); +} + +static void LDr3() +{ + sprintf(instr, "LD %s,%d", str_r, second & 7); +} + +static void EX() +{ + sprintf(instr, "EX %s,%s", str_R, str_r); +} + +static void AND() +{ + sprintf(instr, "AND %s,%s", str_R, str_r); +} + +static void ADDi() +{ + switch(size) + { + case 0: sprintf(instr, "ADD %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "ADD %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "ADD %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void ADCi() +{ + switch(size) + { + case 0: sprintf(instr, "ADC %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "ADC %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "ADC %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void SUBi() +{ + switch(size) + { + case 0: sprintf(instr, "SUB %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "SUB %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "SUB %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void SBCi() +{ + switch(size) + { + case 0: sprintf(instr, "SBC %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "SBC %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "SBC %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void ANDi() +{ + switch(size) + { + case 0: sprintf(instr, "AND %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "AND %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "AND %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void XORi() +{ + switch(size) + { + case 0: sprintf(instr, "XOR %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "XOR %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "XOR %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void ORi() +{ + switch(size) + { + case 0: sprintf(instr, "OR %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "OR %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "OR %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void CPi() +{ + switch(size) + { + case 0: sprintf(instr, "CP %s,0x%02X", str_r, get8_dis()); break; + case 1: sprintf(instr, "CP %s,0x%04X", str_r, get16_dis()); break; + case 2: sprintf(instr, "CP %s,0x%08X", str_r, get32_dis()); break; + } +} + +static void XOR() +{ + sprintf(instr, "XOR %s,%s", str_R, str_r); +} + +static void CPr3() +{ + sprintf(instr,"CP %s,%d", str_r, second&7); +} + +static void OR() +{ + sprintf(instr, "OR %s,%s", str_R, str_r); +} + +static void RLCi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "RLC %d,%s", val, str_r); +} + +static void RRCi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "RRC %d,%s", val, str_r); +} + +static void RLi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "RL %d,%s", val, str_r); +} + +static void RRi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "RR %d,%s", val, str_r); +} + +static void SLAi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "SLA %d,%s", val, str_r); +} + +static void SRAi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "SRA %d,%s", val, str_r); +} + +static void SLLi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "SLL %d,%s", val, str_r); +} + +static void SRLi() +{ + uint8 val = get8_dis() & 0xF; + if (val == 0) val = 16; + sprintf(instr, "SRL %d,%s", val, str_r); +} + +static void CP() +{ + sprintf(instr, "CP %s,%s", str_R, str_r); +} + +static void RLCA() +{ + sprintf(instr, "RLC A,%s", str_r); +} + +static void RRCA() +{ + sprintf(instr, "RRC A,%s", str_r); +} + +static void RLA() +{ + sprintf(instr, "RL A,%s", str_r); +} + +static void RRA() +{ + sprintf(instr, "RR A,%s", str_r); +} + +static void SLAA() +{ + sprintf(instr, "SLA A,%s", str_r); +} + +static void SRAA() +{ + sprintf(instr, "SRA A,%s", str_r); +} + +static void SLLA() +{ + sprintf(instr, "SLL A,%s", str_r); +} + +static void SRLA() +{ + sprintf(instr, "SRL A,%s", str_r); +} + +//========================================================================= + +//Secondary (REG) Instruction decode +static void (*decode[256])() = +{ +/*0*/ 0, 0, 0, LDi, PUSH, POP, CPL, NEG, + MULi, MULSi, DIVi, DIVSi, LINK, UNLK, BS1F, BS1B, +/*1*/ DAA, 0, EXTZ, EXTS, PAA, 0, MIRR, 0, + 0, MULA, 0, 0, DJNZ, 0, 0, 0, +/*2*/ ANDCFi, ORCFi, XORCFi, LDCFi, STCFi, 0, 0, 0, + ANDCFA, ORCFA, XORCFA, LDCFA, STCFA, 0, LDCcrr, LDCrcr, +/*3*/ RES, SET, CHG, BIT, TSET, 0, 0, 0, + MINC1, MINC2, MINC4, 0, MDEC1, MDEC2, MDEC4, 0, +/*4*/ MUL, MUL, MUL, MUL, MUL, MUL, MUL, MUL, + MULS, MULS, MULS, MULS, MULS, MULS, MULS, MULS, +/*5*/ DIV, DIV, DIV, DIV, DIV, DIV, DIV, DIV, + DIVS, DIVS, DIVS, DIVS, DIVS, DIVS, DIVS, DIVS, +/*6*/ INC, INC, INC, INC, INC, INC, INC, INC, + DEC, DEC, DEC, DEC, DEC, DEC, DEC, DEC, +/*7*/ SCC, SCC, SCC, SCC, SCC, SCC, SCC, SCC, + SCC, SCC, SCC, SCC, SCC, SCC, SCC, SCC, +/*8*/ ADD, ADD, ADD, ADD, ADD, ADD, ADD, ADD, + LDRr, LDRr, LDRr, LDRr, LDRr, LDRr, LDRr, LDRr, +/*9*/ ADC, ADC, ADC, ADC, ADC, ADC, ADC, ADC, + LDrR, LDrR, LDrR, LDrR, LDrR, LDrR, LDrR, LDrR, +/*A*/ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, + LDr3, LDr3, LDr3, LDr3, LDr3, LDr3, LDr3, LDr3, +/*B*/ SBC, SBC, SBC, SBC, SBC, SBC, SBC, SBC, + EX, EX, EX, EX, EX, EX, EX, EX, +/*C*/ AND, AND, AND, AND, AND, AND, AND, AND, + ADDi, ADCi, SUBi, SBCi, ANDi, XORi, ORi, CPi, +/*D*/ XOR, XOR, XOR, XOR, XOR, XOR, XOR, XOR, + CPr3, CPr3, CPr3, CPr3, CPr3, CPr3, CPr3, CPr3, +/*E*/ OR, OR, OR, OR, OR, OR, OR, OR, + RLCi, RRCi, RLi, RRi, SLAi, SRAi, SLLi, SRLi, +/*F*/ CP, CP, CP, CP, CP, CP, CP, CP, + RLCA, RRCA, RLA, RRA, SLAA, SRAA, SLLA, SRLA +}; + +//============================================================================= + +void TLCS900h_disassemble_reg(int opsize) +{ + second = get8_dis(); //Get the second opcode + size = opsize; + + //Prepare 'Big R' + sprintf(str_R, "%s", gprName[second & 7][size]); + + //Prepare 'little r' + if (brCode) + sprintf(str_r, "%s", extra); + else + sprintf(str_r, "%s", gprName[first & 7][opsize]); + + if (decode[second]) + (*decode[second])(); + else + sprintf(instr, "unknown reg instr. %02X", second); +} +}; diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_src.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_src.cpp new file mode 100644 index 0000000000..ae68f4016e --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_disassemble_src.cpp @@ -0,0 +1,507 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_disassemble_src.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +28 JUL 2002 - neopop_uk +======================================= +- Better disassembly of MUL/MULS/DIV/DIVS - operand size is shown. + +//--------------------------------------------------------------------------- +*/ + +//========================================================================= + +#include "neopop.h" +#include "TLCS900h_disassemble.h" +#include "TLCS900h_registers.h" +#include "TLCS900h_interpret.h" + +//========================================================================= + +namespace TLCS900H +{ + +static void PUSH() +{ + sprintf(instr, "PUSH (%s)", extra); +} + +static void RLD() +{ + sprintf(instr, "RLD A,(%s)", extra); +} + +static void RRD() +{ + sprintf(instr, "RRD A,(%s)", extra); +} + +static void LDI() +{ + if ((first & 0xF) == 3) + { + switch(size) + { + case 0: sprintf(instr, "LDI.b (XDE+),(XHL+)"); break; + case 1: sprintf(instr, "LDI.w (XDE+),(XHL+)"); break; + } + } + + if ((first & 0xF) == 5) + { + switch(size) + { + case 0: sprintf(instr, "LDI.b (XIX+),(XIY+)"); break; + case 1: sprintf(instr, "LDI.w (XIX+),(XIY+)"); break; + } + } +} + +static void LDIR() +{ + if ((first & 0xF) == 3) + { + switch(size) + { + case 0: sprintf(instr, "LDIR.b (XDE+),(XHL+)"); break; + case 1: sprintf(instr, "LDIR.w (XDE+),(XHL+)"); break; + } + } + + if ((first & 0xF) == 5) + { + switch(size) + { + case 0: sprintf(instr, "LDIR.b (XIX+),(XIY+)"); break; + case 1: sprintf(instr, "LDIR.w (XIX+),(XIY+)"); break; + } + } +} + +static void LDD() +{ + if ((first & 0xF) == 3) + { + switch(size) + { + case 0: sprintf(instr, "LDD.b (XDE-),(XHL-)"); break; + case 1: sprintf(instr, "LDD.w (XDE-),(XHL-)"); break; + } + } + + if ((first & 0xF) == 5) + { + switch(size) + { + case 0: sprintf(instr, "LDD.b (XIX-),(XIY-)"); break; + case 1: sprintf(instr, "LDD.w (XIX-),(XIY-)"); break; + } + } +} + +static void LDDR() +{ + if ((first & 0xF) == 3) + { + switch(size) + { + case 0: sprintf(instr, "LDDR.b (XDE-),(XHL-)"); break; + case 1: sprintf(instr, "LDDR.w (XDE-),(XHL-)"); break; + } + } + + if ((first & 0xF) == 5) + { + switch(size) + { + case 0: sprintf(instr, "LDDR.b (XIX-),(XIY-)"); break; + case 1: sprintf(instr, "LDDR.w (XIX-),(XIY-)"); break; + } + } +} + +static void CPI() +{ + sprintf(instr, "CPI"); +} + +static void CPIR() +{ + switch(size) + { + case 0: sprintf(instr, "CPIR.b A,(%s+)", gprName[first & 7][2]); break; + case 1: sprintf(instr, "CPIR.w WA,(%s+)", gprName[first & 7][2]); break; + } +} + +static void CPD() +{ + switch(size) + { + case 0: sprintf(instr, "CPD.b A,(%s+)", gprName[first & 7][2]); break; + case 1: sprintf(instr, "CPD.w WA,(%s+)", gprName[first & 7][2]); break; + } +} + +static void CPDR() +{ + switch(size) + { + case 0: sprintf(instr, "CPDR.b A,(%s+)", gprName[first & 7][2]); break; + case 1: sprintf(instr, "CPDR.w WA,(%s+)", gprName[first & 7][2]); break; + } +} + +static void LD16m() +{ + sprintf(instr, "LD (0x%04X),(%s)", get16_dis(), extra); +} + +static void LD() +{ + sprintf(instr, "LD %s,(%s)", str_R, extra); +} + +static void EX() +{ + switch(size) + { + case 0: sprintf(instr, "EX.b (%s),%s", extra, str_R); break; + case 1: sprintf(instr, "EX.w (%s),%s", extra, str_R); break; + } + +} + +static void ADDi() +{ + switch(size) + { + case 0: sprintf(instr, "ADD (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "ADD (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void ADCi() +{ + switch(size) + { + case 0: sprintf(instr, "ADC (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "ADC (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void SUBi() +{ + switch(size) + { + case 0: sprintf(instr, "SUB (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "SUB (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void SBCi() +{ + switch(size) + { + case 0: sprintf(instr, "SBC (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "SBC (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void ANDi() +{ + switch(size) + { + case 0: sprintf(instr, "AND (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "AND (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void XORi() +{ + switch(size) + { + case 0: sprintf(instr, "XOR (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "XOR (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void ORi() +{ + switch(size) + { + case 0: sprintf(instr, "OR (%s), 0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "OR (%s), 0x%04X", extra, get16_dis()); break; + } +} + +static void CPi() +{ + switch(size) + { + case 0: sprintf(instr, "CP (%s),0x%02X", extra, get8_dis()); break; + case 1: sprintf(instr, "CP (%s),0x%04X", extra, get16_dis()); break; + } +} + +static void MUL() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "MUL.b (%s),(%s)",str_R, extra); break; + case 1: sprintf(instr, "MUL.w (%s),(%s)",str_R, extra); break; + } +} + +static void MULS() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "MULS.b (%s),(%s)",str_R, extra); break; + case 1: sprintf(instr, "MULS.w (%s),(%s)",str_R, extra); break; + } +} + +static void DIV() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "DIV.b (%s),(%s)",str_R, extra); break; + case 1: sprintf(instr, "DIV.w (%s),(%s)",str_R, extra); break; + } +} + +static void DIVS() +{ + get_RR_Name(); + switch(size) + { + case 0: sprintf(instr, "DIVS.b (%s),(%s)",str_R, extra); break; + case 1: sprintf(instr, "DIVS.w (%s),(%s)",str_R, extra); break; + } +} + +static void INC() +{ + uint8 val = (second & 7); + if (val == 0) + val = 8; + + sprintf(instr, "INC %d,(%s)", val, extra); +} + +static void DEC() +{ + uint8 val = (second & 7); + if (val == 0) + val = 8; + + sprintf(instr, "DEC %d,(%s)", val, extra); +} + +static void RLC() +{ + sprintf(instr, "RLC (%s)", extra); +} + +static void RRC() +{ + sprintf(instr, "RRC (%s)", extra); +} + +static void RL() +{ + sprintf(instr, "RL (%s)", extra); +} + +static void RR() +{ + sprintf(instr, "RR (%s)", extra); +} + +static void SLA() +{ + sprintf(instr, "SLA (%s)", extra); +} + +static void SRA() +{ + sprintf(instr, "SRA (%s)", extra); +} + +static void SLL() +{ + sprintf(instr, "SLL (%s)", extra); +} + +static void SRL() +{ + sprintf(instr, "SRL (%s)", extra); +} + +static void ADDRm() +{ + sprintf(instr, "ADD %s,(%s)", str_R, extra); +} + +static void ADDmR() +{ + sprintf(instr, "ADD (%s),%s", extra, str_R); +} + +static void ADCRm() +{ + sprintf(instr, "ADC %s,(%s)", str_R, extra); +} + +static void ADCmR() +{ + sprintf(instr, "ADC (%s),%s", extra, str_R); +} + +static void SUBRm() +{ + sprintf(instr, "SUB %s,(%s)", str_R, extra); +} + +static void SUBmR() +{ + sprintf(instr, "SUB (%s),%s", extra, str_R); +} + +static void SBCRm() +{ + sprintf(instr, "SBC %s,(%s)", str_R, extra); +} + +static void SBCmR() +{ + sprintf(instr, "SBC (%s),%s", extra, str_R); +} + +static void ANDmR() +{ + sprintf(instr, "AND (%s),%s", extra, str_R); +} + +static void ANDRm() +{ + sprintf(instr, "AND %s,(%s)", str_R, extra); +} + +static void XORmR() +{ + sprintf(instr, "XOR (%s),%s", extra, str_R); +} + +static void XORRm() +{ + sprintf(instr, "XOR %s,(%s)", str_R, extra); +} + +static void ORmR() +{ + sprintf(instr, "OR (%s),%s", extra, str_R); +} + +static void ORRm() +{ + sprintf(instr, "OR %s,(%s)", str_R, extra); +} + +static void CPmR() +{ + sprintf(instr, "CP (%s),%s", extra, str_R); +} + +static void CPRm() +{ + sprintf(instr, "CP %s,(%s)", str_R, extra); +} + +//========================================================================= + +//Secondary (SRC) Instruction decode +static void (*decode[256])() = +{ +/*0*/ 0, 0, 0, 0, PUSH, 0, RLD, RRD, + 0, 0, 0, 0, 0, 0, 0, 0, +/*1*/ LDI, LDIR, LDD, LDDR, CPI, CPIR, CPD, CPDR, + 0, LD16m, 0, 0, 0, 0, 0, 0, +/*2*/ LD, LD, LD, LD, LD, LD, LD, LD, + 0, 0, 0, 0, 0, 0, 0, 0, +/*3*/ EX, EX, EX, EX, EX, EX, EX, EX, + ADDi, ADCi, SUBi, SBCi, ANDi, XORi, ORi, CPi, +/*4*/ MUL, MUL, MUL, MUL, MUL, MUL, MUL, MUL, + MULS, MULS, MULS, MULS, MULS, MULS, MULS, MULS, +/*5*/ DIV, DIV, DIV, DIV, DIV, DIV, DIV, DIV, + DIVS, DIVS, DIVS, DIVS, DIVS, DIVS, DIVS, DIVS, +/*6*/ INC, INC, INC, INC, INC, INC, INC, INC, + DEC, DEC, DEC, DEC, DEC, DEC, DEC, DEC, +/*7*/ 0, 0, 0, 0, 0, 0, 0, 0, + RLC, RRC, RL, RR, SLA, SRA, SLL, SRL, +/*8*/ ADDRm, ADDRm, ADDRm, ADDRm, ADDRm, ADDRm, ADDRm, ADDRm, + ADDmR, ADDmR, ADDmR, ADDmR, ADDmR, ADDmR, ADDmR, ADDmR, +/*9*/ ADCRm, ADCRm, ADCRm, ADCRm, ADCRm, ADCRm, ADCRm, ADCRm, + ADCmR, ADCmR, ADCmR, ADCmR, ADCmR, ADCmR, ADCmR, ADCmR, +/*A*/ SUBRm, SUBRm, SUBRm, SUBRm, SUBRm, SUBRm, SUBRm, SUBRm, + SUBmR, SUBmR, SUBmR, SUBmR, SUBmR, SUBmR, SUBmR, SUBmR, +/*B*/ SBCRm, SBCRm, SBCRm, SBCRm, SBCRm, SBCRm, SBCRm, SBCRm, + SBCmR, SBCmR, SBCmR, SBCmR, SBCmR, SBCmR, SBCmR, SBCmR, +/*C*/ ANDRm, ANDRm, ANDRm, ANDRm, ANDRm, ANDRm, ANDRm, ANDRm, + ANDmR, ANDmR, ANDmR, ANDmR, ANDmR, ANDmR, ANDmR, ANDmR, +/*D*/ XORRm, XORRm, XORRm, XORRm, XORRm, XORRm, XORRm, XORRm, + XORmR, XORmR, XORmR, XORmR, XORmR, XORmR, XORmR, XORmR, +/*E*/ ORRm, ORRm, ORRm, ORRm, ORRm, ORRm, ORRm, ORRm, + ORmR, ORmR, ORmR, ORmR, ORmR, ORmR, ORmR, ORmR, +/*F*/ CPRm, CPRm, CPRm, CPRm, CPRm, CPRm, CPRm, CPRm, + CPmR, CPmR, CPmR, CPmR, CPmR, CPmR, CPmR, CPmR +}; + +//============================================================================= + +void TLCS900h_disassemble_src(int opsize) +{ + second = get8_dis(); //Get the second opcode + size = opsize; + + //Prepare 'Big R' + sprintf(str_R, "%s", gprName[second & 7][size]); + + if (decode[second]) + (*decode[second])(); + else + sprintf(instr, "unknown src instr. %02X", second); +} +}; + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.cpp new file mode 100644 index 0000000000..6ee7f2e978 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.cpp @@ -0,0 +1,975 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +26 JUL 2002 - neopop_uk +======================================= +- Fixed a nasty bug that only affects [src]"EX (mem), XWA", + it was executing "EX F,F'" instead - Very bad! + +28 JUL 2002 - neopop_uk +======================================= +- Added generic DIV and DIVS functions + +30 AUG 2002 - neopop_uk +======================================= +- Fixed detection of R32+d16 addressing mode. + +02 SEP 2002 - neopop_uk +======================================= +- Added the undocumented type 0x13 R32 address mode. + +09 SEP 2002 - neopop_uk +======================================= +- Extra cycles for addressing modes. + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_registers.h" +#include "interrupt.h" +#include "mem.h" +#include "bios.h" +#include "TLCS900h_interpret.h" +#include "TLCS900h_interpret_single.h" +#include "TLCS900h_interpret_src.h" +#include "TLCS900h_interpret_dst.h" +#include "TLCS900h_interpret_reg.h" + +namespace TLCS900H +{ + +static void DUMMY_instruction_error(const char* vaMessage,...) +{ + + +} + +void (*instruction_error)(const char* vaMessage,...) = DUMMY_instruction_error; + +//========================================================================= + +uint32 mem; //Result of addressing mode +int size; //operand size, 0 = Byte, 1 = Word, 2 = Long + +uint8 first; //The first byte +uint8 R; //big R +uint8 second; //The second opcode + +bool brCode; //Register code used? +uint8 rCode; //The code + +int32 cycles; //How many state changes? +int32 cycles_extra; //How many extra state changes? + +//========================================================================= + +uint16 fetch16(void) +{ + uint16 a = loadW(pc); + pc += 2; + return a; +} + +uint32 fetch24(void) +{ + uint32 b, a = loadW(pc); + pc += 2; + b = loadB(pc++); + return (b << 16) | a; +} + +uint32 fetch32(void) +{ + uint32 a = loadL(pc); + pc += 4; + return a; +} + +//============================================================================= + +void parityB(uint8 value) +{ + uint8 count = 0, i; + + for (i = 0; i < 8; i++) + { + if (value & 1) count++; + value >>= 1; + } + + // if (count & 1) == FALSE, means even, thus SET + SETFLAG_V((count & 1) == 0); +} + +void parityW(uint16 value) +{ + uint8 count = 0, i; + + for (i = 0; i < 16; i++) + { + if (value & 1) count++; + value >>= 1; + } + + // if (count & 1) == FALSE, means even, thus SET + SETFLAG_V((count & 1) == 0); +} + +//========================================================================= + +void push8(uint8 data) { REGXSP -= 1; storeB(REGXSP, data);} +void push16(uint16 data) { REGXSP -= 2; storeW(REGXSP, data);} +void push32(uint32 data) { REGXSP -= 4; storeL(REGXSP, data);} + +uint8 pop8(void) { uint8 temp = loadB(REGXSP); REGXSP += 1; return temp;} +uint16 pop16(void) { uint16 temp = loadW(REGXSP); REGXSP += 2; return temp;} +uint32 pop32(void) { uint32 temp = loadL(REGXSP); REGXSP += 4; return temp;} + +//============================================================================= + +uint16 generic_DIV_B(uint16 val, uint8 div) +{ + if (div == 0) + { + SETFLAG_V1 + return (val << 8) | ((val >> 8) ^ 0xFF); + } + else + { + uint16 quo = val / (uint16)div; + uint16 rem = val % (uint16)div; + if (quo > 0xFF) SETFLAG_V1 else SETFLAG_V0 + return (quo & 0xFF) | ((rem & 0xFF) << 8); + } +} + +uint32 generic_DIV_W(uint32 val, uint16 div) +{ + if (div == 0) + { + SETFLAG_V1 + return (val << 16) | ((val >> 16) ^ 0xFFFF); + } + else + { + uint32 quo = val / (uint32)div; + uint32 rem = val % (uint32)div; + if (quo > 0xFFFF) SETFLAG_V1 else SETFLAG_V0 + return (quo & 0xFFFF) | ((rem & 0xFFFF) << 16); + } +} + +//============================================================================= + +uint16 generic_DIVS_B(int16 val, int8 div) +{ + if (div == 0) + { + SETFLAG_V1 + return (val << 8) | ((val >> 8) ^ 0xFF); + } + else + { + int16 quo = val / (int16)div; + int16 rem = val % (int16)div; + if (quo > 0xFF) SETFLAG_V1 else SETFLAG_V0 + return (quo & 0xFF) | ((rem & 0xFF) << 8); + } +} + +uint32 generic_DIVS_W(int32 val, int16 div) +{ + if (div == 0) + { + SETFLAG_V1 + return (val << 16) | ((val >> 16) ^ 0xFFFF); + } + else + { + int32 quo = val / (int32)div; + int32 rem = val % (int32)div; + if (quo > 0xFFFF) SETFLAG_V1 else SETFLAG_V0 + return (quo & 0xFFFF) | ((rem & 0xFFFF) << 16); + } +} + +//============================================================================= + +uint8 generic_ADD_B(uint8 dst, uint8 src) +{ + uint8 half = (dst & 0xF) + (src & 0xF); + uint32 resultC = (uint32)dst + (uint32)src; + uint8 result = (uint8)(resultC & 0xFF); + + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int8)dst >= 0) && ((int8)src >= 0) && ((int8)result < 0)) || + (((int8)dst < 0) && ((int8)src < 0) && ((int8)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N0; + SETFLAG_C(resultC > 0xFF); + + return result; +} + +uint16 generic_ADD_W(uint16 dst, uint16 src) +{ + uint16 half = (dst & 0xF) + (src & 0xF); + uint32 resultC = (uint32)dst + (uint32)src; + uint16 result = (uint16)(resultC & 0xFFFF); + + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int16)dst >= 0) && ((int16)src >= 0) && ((int16)result < 0)) || + (((int16)dst < 0) && ((int16)src < 0) && ((int16)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N0; + SETFLAG_C(resultC > 0xFFFF); + + return result; +} + +uint32 generic_ADD_L(uint32 dst, uint32 src) +{ + uint64 resultC = (uint64)dst + (uint64)src; + uint32 result = (uint32)(resultC & 0xFFFFFFFF); + + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + + if ((((int32)dst >= 0) && ((int32)src >= 0) && ((int32)result < 0)) || + (((int32)dst < 0) && ((int32)src < 0) && ((int32)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N0; + SETFLAG_C(resultC > 0xFFFFFFFF); + + return result; +} + +//============================================================================= + +uint8 generic_ADC_B(uint8 dst, uint8 src) +{ + uint8 half = (dst & 0xF) + (src & 0xF) + FLAG_C; + uint32 resultC = (uint32)dst + (uint32)src + (uint32)FLAG_C; + uint8 result = (uint8)(resultC & 0xFF); + + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int8)dst >= 0) && ((int8)src >= 0) && ((int8)result < 0)) || + (((int8)dst < 0) && ((int8)src < 0) && ((int8)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N0; + SETFLAG_C(resultC > 0xFF); + + return result; +} + +uint16 generic_ADC_W(uint16 dst, uint16 src) +{ + uint16 half = (dst & 0xF) + (src & 0xF) + FLAG_C; + uint32 resultC = (uint32)dst + (uint32)src + (uint32)FLAG_C; + uint16 result = (uint16)(resultC & 0xFFFF); + + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int16)dst >= 0) && ((int16)src >= 0) && ((int16)result < 0)) || + (((int16)dst < 0) && ((int16)src < 0) && ((int16)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N0; + SETFLAG_C(resultC > 0xFFFF); + + return result; +} + +uint32 generic_ADC_L(uint32 dst, uint32 src) +{ + uint64 resultC = (uint64)dst + (uint64)src + (uint64)FLAG_C; + uint32 result = (uint32)(resultC & 0xFFFFFFFF); + + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + + if ((((int32)dst >= 0) && ((int32)src >= 0) && ((int32)result < 0)) || + (((int32)dst < 0) && ((int32)src < 0) && ((int32)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N0; + SETFLAG_C(resultC > 0xFFFFFFFF); + + return result; +} + +//============================================================================= + +uint8 generic_SUB_B(uint8 dst, uint8 src) +{ + uint8 half = (dst & 0xF) - (src & 0xF); + uint32 resultC = (uint32)dst - (uint32)src; + uint8 result = (uint8)(resultC & 0xFF); + + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int8)dst >= 0) && ((int8)src < 0) && ((int8)result < 0)) || + (((int8)dst < 0) && ((int8)src >= 0) && ((int8)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N1; + SETFLAG_C(resultC > 0xFF); + + return result; +} + +uint16 generic_SUB_W(uint16 dst, uint16 src) +{ + uint16 half = (dst & 0xF) - (src & 0xF); + uint32 resultC = (uint32)dst - (uint32)src; + uint16 result = (uint16)(resultC & 0xFFFF); + + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int16)dst >= 0) && ((int16)src < 0) && ((int16)result < 0)) || + (((int16)dst < 0) && ((int16)src >= 0) && ((int16)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N1; + SETFLAG_C(resultC > 0xFFFF); + + return result; +} + +uint32 generic_SUB_L(uint32 dst, uint32 src) +{ + uint64 resultC = (uint64)dst - (uint64)src; + uint32 result = (uint32)(resultC & 0xFFFFFFFF); + + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + + if ((((int32)dst >= 0) && ((int32)src < 0) && ((int32)result < 0)) || + (((int32)dst < 0) && ((int32)src >= 0) && ((int32)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N1; + SETFLAG_C(resultC > 0xFFFFFFFF); + + return result; +} + +//============================================================================= + +uint8 generic_SBC_B(uint8 dst, uint8 src) +{ + uint8 half = (dst & 0xF) - (src & 0xF) - FLAG_C; + uint32 resultC = (uint32)dst - (uint32)src - (uint32)FLAG_C; + uint8 result = (uint8)(resultC & 0xFF); + + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int8)dst >= 0) && ((int8)src < 0) && ((int8)result < 0)) || + (((int8)dst < 0) && ((int8)src >= 0) && ((int8)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N1; + SETFLAG_C(resultC > 0xFF); + + return result; +} + +uint16 generic_SBC_W(uint16 dst, uint16 src) +{ + uint16 half = (dst & 0xF) - (src & 0xF) - FLAG_C; + uint32 resultC = (uint32)dst - (uint32)src - (uint32)FLAG_C; + uint16 result = (uint16)(resultC & 0xFFFF); + + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if ((((int16)dst >= 0) && ((int16)src < 0) && ((int16)result < 0)) || + (((int16)dst < 0) && ((int16)src >= 0) && ((int16)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N1; + SETFLAG_C(resultC > 0xFFFF); + + return result; +} + +uint32 generic_SBC_L(uint32 dst, uint32 src) +{ + uint64 resultC = (uint64)dst - (uint64)src - (uint64)FLAG_C; + uint32 result = (uint32)(resultC & 0xFFFFFFFF); + + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + + if ((((int32)dst >= 0) && ((int32)src < 0) && ((int32)result < 0)) || + (((int32)dst < 0) && ((int32)src >= 0) && ((int32)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_N1; + SETFLAG_C(resultC > 0xFFFFFFFF); + + return result; +} + +//============================================================================= + +bool conditionCode(int cc) +{ + switch(cc) + { + case 0: return 0; //(F) + case 1: if (FLAG_S ^ FLAG_V) return 1; else return 0; //(LT) + case 2: if (FLAG_Z | (FLAG_S ^ FLAG_V)) return 1; else return 0; //(LE) + case 3: if (FLAG_C | FLAG_Z) return 1; else return 0; //(ULE) + case 4: if (FLAG_V) return 1; else return 0; //(OV) + case 5: if (FLAG_S) return 1; else return 0; //(MI) + case 6: if (FLAG_Z) return 1; else return 0; //(Z) + case 7: if (FLAG_C) return 1; else return 0; //(C) + case 8: return 1; //always True + case 9: if (FLAG_S ^ FLAG_V) return 0; else return 1; //(GE) + case 10:if (FLAG_Z | (FLAG_S ^ FLAG_V)) return 0; else return 1; //(GT) + case 11:if (FLAG_C | FLAG_Z) return 0; else return 1; //(UGT) + case 12:if (FLAG_V) return 0; else return 1; //(NOV) + case 13:if (FLAG_S) return 0; else return 1; //(PL) + case 14:if (FLAG_Z) return 0; else return 1; //(NZ) + case 15:if (FLAG_C) return 0; else return 1; //(NC) + } + +#ifdef NEOPOP_DEBUG + system_debug_message("Unknown Condition Code %d", cc); +#endif + return FALSE; +} + +//============================================================================= + +uint8 get_rr_Target(void) +{ + uint8 target = 0x80; + + if (size == 0 && first == 0xC7) + return rCode; + + //Create a regCode + switch(first & 7) + { + case 0: if (size == 1) target = 0xE0; break; + case 1: + if (size == 0) target = 0xE0; + if (size == 1) target = 0xE4; + break; + case 2: if (size == 1) target = 0xE8; break; + case 3: + if (size == 0) target = 0xE4; + if (size == 1) target = 0xEC; + break; + case 4: if (size == 1) target = 0xF0; break; + case 5: + if (size == 0) target = 0xE8; + if (size == 1) target = 0xF4; + break; + case 6: if (size == 1) target = 0xF8; break; + case 7: + if (size == 0) target = 0xEC; + if (size == 1) target = 0xFC; + break; + } + + return target; +} + +uint8 get_RR_Target(void) +{ + uint8 target = 0x80; + + //Create a regCode + switch(second & 7) + { + case 0: if (size == 1) target = 0xE0; break; + case 1: + if (size == 0) target = 0xE0; + if (size == 1) target = 0xE4; + break; + case 2: if (size == 1) target = 0xE8; break; + case 3: + if (size == 0) target = 0xE4; + if (size == 1) target = 0xEC; + break; + case 4: if (size == 1) target = 0xF0; break; + case 5: + if (size == 0) target = 0xE8; + if (size == 1) target = 0xF4; + break; + case 6: if (size == 1) target = 0xF8; break; + case 7: + if (size == 0) target = 0xEC; + if (size == 1) target = 0xFC; + break; + } + + return target; +} + +//========================================================================= + +static void ExXWA() {mem = regL(0);} +static void ExXBC() {mem = regL(1);} +static void ExXDE() {mem = regL(2);} +static void ExXHL() {mem = regL(3);} +static void ExXIX() {mem = regL(4);} +static void ExXIY() {mem = regL(5);} +static void ExXIZ() {mem = regL(6);} +static void ExXSP() {mem = regL(7);} + +static void ExXWAd() {mem = regL(0) + (int8)FETCH8; cycles_extra = 2;} +static void ExXBCd() {mem = regL(1) + (int8)FETCH8; cycles_extra = 2;} +static void ExXDEd() {mem = regL(2) + (int8)FETCH8; cycles_extra = 2;} +static void ExXHLd() {mem = regL(3) + (int8)FETCH8; cycles_extra = 2;} +static void ExXIXd() {mem = regL(4) + (int8)FETCH8; cycles_extra = 2;} +static void ExXIYd() {mem = regL(5) + (int8)FETCH8; cycles_extra = 2;} +static void ExXIZd() {mem = regL(6) + (int8)FETCH8; cycles_extra = 2;} +static void ExXSPd() {mem = regL(7) + (int8)FETCH8; cycles_extra = 2;} + +static void Ex8() {mem = FETCH8; cycles_extra = 2;} +static void Ex16() {mem = fetch16(); cycles_extra = 2;} +static void Ex24() {mem = fetch24(); cycles_extra = 3;} + +static void ExR32() +{ + uint8 data = FETCH8; + + if (data == 0x03) + { + uint8 rIndex, r32; + r32 = FETCH8; //r32 + rIndex = FETCH8; //r8 + mem = rCodeL(r32) + (int8)rCodeB(rIndex); + cycles_extra = 8; + return; + } + + if (data == 0x07) + { + uint8 rIndex, r32; + r32 = FETCH8; //r32 + rIndex = FETCH8; //r16 + mem = rCodeL(r32) + (int16)rCodeW(rIndex); + cycles_extra = 8; + return; + } + + //Undocumented mode! + if (data == 0x13) + { + mem = pc + (int16)fetch16(); + cycles_extra = 8; //Unconfirmed... doesn't make much difference + return; + } + + cycles_extra = 5; + + if ((data & 3) == 1) + mem = rCodeL(data) + (int16)fetch16(); + else + mem = rCodeL(data); +} + +static void ExDec() +{ + uint8 data = FETCH8; + uint8 r32 = data & 0xFC; + + cycles_extra = 3; + + switch(data & 3) + { + case 0: rCodeL(r32) -= 1; mem = rCodeL(r32); break; + case 1: rCodeL(r32) -= 2; mem = rCodeL(r32); break; + case 2: rCodeL(r32) -= 4; mem = rCodeL(r32); break; + } +} + +static void ExInc() +{ + uint8 data = FETCH8; + uint8 r32 = data & 0xFC; + + cycles_extra = 3; + + switch(data & 3) + { + case 0: mem = rCodeL(r32); rCodeL(r32) += 1; break; + case 1: mem = rCodeL(r32); rCodeL(r32) += 2; break; + case 2: mem = rCodeL(r32); rCodeL(r32) += 4; break; + } +} + +static void ExRC() +{ + brCode = TRUE; + rCode = FETCH8; + cycles_extra = 1; +} + +//========================================================================= + +//Address Mode & Register Code +static void (*decodeExtra[256])() = +{ +/*0*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*1*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*2*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*3*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*4*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*5*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*6*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*7*/ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +/*8*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*9*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*A*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*B*/ ExXWA, ExXBC, ExXDE, ExXHL, ExXIX, ExXIY, ExXIZ, ExXSP, + ExXWAd, ExXBCd, ExXDEd, ExXHLd, ExXIXd, ExXIYd, ExXIZd, ExXSPd, +/*C*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, ExRC, + 0, 0, 0, 0, 0, 0, 0, 0, +/*D*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, ExRC, + 0, 0, 0, 0, 0, 0, 0, 0, +/*E*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, ExRC, + 0, 0, 0, 0, 0, 0, 0, 0, +/*F*/ Ex8, Ex16, Ex24, ExR32, ExDec, ExInc, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +//========================================================================= + +static void e(void) +{ + instruction_error("Unknown instruction %02X", first); +} + +static void es(void) +{ + //instruction_error("Unknown [src] instruction %02X", second); +} + +static void ed(void) +{ + //instruction_error("Unknown [dst] instruction %02X", second); +} + +static void er(void) +{ + //instruction_error("Unknown [reg] instruction %02X", second); +} + +//========================================================================= + +//Secondary (SRC) Instruction decode +static void (*srcDecode[256])() = +{ +/*0*/ es, es, es, es, srcPUSH, es, srcRLD, srcRRD, + es, es, es, es, es, es, es, es, +/*1*/ srcLDI, srcLDIR, srcLDD, srcLDDR, srcCPI, srcCPIR, srcCPD, srcCPDR, + es, srcLD16m, es, es, es, es, es, es, +/*2*/ srcLD, srcLD, srcLD, srcLD, srcLD, srcLD, srcLD, srcLD, + es, es, es, es, es, es, es, es, +/*3*/ srcEX, srcEX, srcEX, srcEX, srcEX, srcEX, srcEX, srcEX, + srcADDi, srcADCi, srcSUBi, srcSBCi, srcANDi, srcXORi, srcORi, srcCPi, +/*4*/ srcMUL, srcMUL, srcMUL, srcMUL, srcMUL, srcMUL, srcMUL, srcMUL, + srcMULS, srcMULS, srcMULS, srcMULS, srcMULS, srcMULS, srcMULS, srcMULS, +/*5*/ srcDIV, srcDIV, srcDIV, srcDIV, srcDIV, srcDIV, srcDIV, srcDIV, + srcDIVS, srcDIVS, srcDIVS, srcDIVS, srcDIVS, srcDIVS, srcDIVS, srcDIVS, +/*6*/ srcINC, srcINC, srcINC, srcINC, srcINC, srcINC, srcINC, srcINC, + srcDEC, srcDEC, srcDEC, srcDEC, srcDEC, srcDEC, srcDEC, srcDEC, +/*7*/ es, es, es, es, es, es, es, es, + srcRLC, srcRRC, srcRL, srcRR, srcSLA, srcSRA, srcSLL, srcSRL, +/*8*/ srcADDRm, srcADDRm, srcADDRm, srcADDRm, srcADDRm, srcADDRm, srcADDRm, srcADDRm, + srcADDmR, srcADDmR, srcADDmR, srcADDmR, srcADDmR, srcADDmR, srcADDmR, srcADDmR, +/*9*/ srcADCRm, srcADCRm, srcADCRm, srcADCRm, srcADCRm, srcADCRm, srcADCRm, srcADCRm, + srcADCmR, srcADCmR, srcADCmR, srcADCmR, srcADCmR, srcADCmR, srcADCmR, srcADCmR, +/*A*/ srcSUBRm, srcSUBRm, srcSUBRm, srcSUBRm, srcSUBRm, srcSUBRm, srcSUBRm, srcSUBRm, + srcSUBmR, srcSUBmR, srcSUBmR, srcSUBmR, srcSUBmR, srcSUBmR, srcSUBmR, srcSUBmR, +/*B*/ srcSBCRm, srcSBCRm, srcSBCRm, srcSBCRm, srcSBCRm, srcSBCRm, srcSBCRm, srcSBCRm, + srcSBCmR, srcSBCmR, srcSBCmR, srcSBCmR, srcSBCmR, srcSBCmR, srcSBCmR, srcSBCmR, +/*C*/ srcANDRm, srcANDRm, srcANDRm, srcANDRm, srcANDRm, srcANDRm, srcANDRm, srcANDRm, + srcANDmR, srcANDmR, srcANDmR, srcANDmR, srcANDmR, srcANDmR, srcANDmR, srcANDmR, +/*D*/ srcXORRm, srcXORRm, srcXORRm, srcXORRm, srcXORRm, srcXORRm, srcXORRm, srcXORRm, + srcXORmR, srcXORmR, srcXORmR, srcXORmR, srcXORmR, srcXORmR, srcXORmR, srcXORmR, +/*E*/ srcORRm, srcORRm, srcORRm, srcORRm, srcORRm, srcORRm, srcORRm, srcORRm, + srcORmR, srcORmR, srcORmR, srcORmR, srcORmR, srcORmR, srcORmR, srcORmR, +/*F*/ srcCPRm, srcCPRm, srcCPRm, srcCPRm, srcCPRm, srcCPRm, srcCPRm, srcCPRm, + srcCPmR, srcCPmR, srcCPmR, srcCPmR, srcCPmR, srcCPmR, srcCPmR, srcCPmR +}; + +//Secondary (DST) Instruction decode +static void (*dstDecode[256])() = +{ +/*0*/ dstLDBi, ed, dstLDWi, ed, dstPOPB, ed, dstPOPW, ed, + ed, ed, ed, ed, ed, ed, ed, ed, +/*1*/ ed, ed, ed, ed, dstLDBm16, ed, dstLDWm16, ed, + ed, ed, ed, ed, ed, ed, ed, ed, +/*2*/ dstLDAW, dstLDAW, dstLDAW, dstLDAW, dstLDAW, dstLDAW, dstLDAW, dstLDAW, + dstANDCFA, dstORCFA, dstXORCFA, dstLDCFA, dstSTCFA, ed, ed, ed, +/*3*/ dstLDAL, dstLDAL, dstLDAL, dstLDAL, dstLDAL, dstLDAL, dstLDAL, dstLDAL, + ed, ed, ed, ed, ed, ed, ed, ed, +/*4*/ dstLDBR, dstLDBR, dstLDBR, dstLDBR, dstLDBR, dstLDBR, dstLDBR, dstLDBR, + ed, ed, ed, ed, ed, ed, ed, ed, +/*5*/ dstLDWR, dstLDWR, dstLDWR, dstLDWR, dstLDWR, dstLDWR, dstLDWR, dstLDWR, + ed, ed, ed, ed, ed, ed, ed, ed, +/*6*/ dstLDLR, dstLDLR, dstLDLR, dstLDLR, dstLDLR, dstLDLR, dstLDLR, dstLDLR, + ed, ed, ed, ed, ed, ed, ed, ed, +/*7*/ ed, ed, ed, ed, ed, ed, ed, ed, + ed, ed, ed, ed, ed, ed, ed, ed, +/*8*/ dstANDCF, dstANDCF, dstANDCF, dstANDCF, dstANDCF, dstANDCF, dstANDCF, dstANDCF, + dstORCF, dstORCF, dstORCF, dstORCF, dstORCF, dstORCF, dstORCF, dstORCF, +/*9*/ dstXORCF, dstXORCF, dstXORCF, dstXORCF, dstXORCF, dstXORCF, dstXORCF, dstXORCF, + dstLDCF, dstLDCF, dstLDCF, dstLDCF, dstLDCF, dstLDCF, dstLDCF, dstLDCF, +/*A*/ dstSTCF, dstSTCF, dstSTCF, dstSTCF, dstSTCF, dstSTCF, dstSTCF, dstSTCF, + dstTSET, dstTSET, dstTSET, dstTSET, dstTSET, dstTSET, dstTSET, dstTSET, +/*B*/ dstRES, dstRES, dstRES, dstRES, dstRES, dstRES, dstRES, dstRES, + dstSET, dstSET, dstSET, dstSET, dstSET, dstSET, dstSET, dstSET, +/*C*/ dstCHG, dstCHG, dstCHG, dstCHG, dstCHG, dstCHG, dstCHG, dstCHG, + dstBIT, dstBIT, dstBIT, dstBIT, dstBIT, dstBIT, dstBIT, dstBIT, +/*D*/ dstJP, dstJP, dstJP, dstJP, dstJP, dstJP, dstJP, dstJP, + dstJP, dstJP, dstJP, dstJP, dstJP, dstJP, dstJP, dstJP, +/*E*/ dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, + dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, dstCALL, +/*F*/ dstRET, dstRET, dstRET, dstRET, dstRET, dstRET, dstRET, dstRET, + dstRET, dstRET, dstRET, dstRET, dstRET, dstRET, dstRET, dstRET +}; + +//Secondary (REG) Instruction decode +static void (*regDecode[256])() = +{ +/*0*/ er, er, er, regLDi, regPUSH, regPOP, regCPL, regNEG, + regMULi, regMULSi, regDIVi, regDIVSi, regLINK, regUNLK, regBS1F, regBS1B, +/*1*/ regDAA, er, regEXTZ, regEXTS, regPAA, er, regMIRR, er, + er, regMULA, er, er, regDJNZ, er, er, er, +/*2*/ regANDCFi, regORCFi, regXORCFi, regLDCFi, regSTCFi, er, er, er, + regANDCFA, regORCFA, regXORCFA, regLDCFA, regSTCFA, er, regLDCcrr, regLDCrcr, +/*3*/ regRES, regSET, regCHG, regBIT, regTSET, er, er, er, + regMINC1, regMINC2, regMINC4, er, regMDEC1, regMDEC2, regMDEC4, er, +/*4*/ regMUL, regMUL, regMUL, regMUL, regMUL, regMUL, regMUL, regMUL, + regMULS, regMULS, regMULS, regMULS, regMULS, regMULS, regMULS, regMULS, +/*5*/ regDIV, regDIV, regDIV, regDIV, regDIV, regDIV, regDIV, regDIV, + regDIVS, regDIVS, regDIVS, regDIVS, regDIVS, regDIVS, regDIVS, regDIVS, +/*6*/ regINC, regINC, regINC, regINC, regINC, regINC, regINC, regINC, + regDEC, regDEC, regDEC, regDEC, regDEC, regDEC, regDEC, regDEC, +/*7*/ regSCC, regSCC, regSCC, regSCC, regSCC, regSCC, regSCC, regSCC, + regSCC, regSCC, regSCC, regSCC, regSCC, regSCC, regSCC, regSCC, +/*8*/ regADD, regADD, regADD, regADD, regADD, regADD, regADD, regADD, + regLDRr, regLDRr, regLDRr, regLDRr, regLDRr, regLDRr, regLDRr, regLDRr, +/*9*/ regADC, regADC, regADC, regADC, regADC, regADC, regADC, regADC, + regLDrR, regLDrR, regLDrR, regLDrR, regLDrR, regLDrR, regLDrR, regLDrR, +/*A*/ regSUB, regSUB, regSUB, regSUB, regSUB, regSUB, regSUB, regSUB, + regLDr3, regLDr3, regLDr3, regLDr3, regLDr3, regLDr3, regLDr3, regLDr3, +/*B*/ regSBC, regSBC, regSBC, regSBC, regSBC, regSBC, regSBC, regSBC, + regEX, regEX, regEX, regEX, regEX, regEX, regEX, regEX, +/*C*/ regAND, regAND, regAND, regAND, regAND, regAND, regAND, regAND, + regADDi, regADCi, regSUBi, regSBCi, regANDi, regXORi, regORi, regCPi, +/*D*/ regXOR, regXOR, regXOR, regXOR, regXOR, regXOR, regXOR, regXOR, + regCPr3, regCPr3, regCPr3, regCPr3, regCPr3, regCPr3, regCPr3, regCPr3, +/*E*/ regOR, regOR, regOR, regOR, regOR, regOR, regOR, regOR, + regRLCi, regRRCi, regRLi, regRRi, regSLAi, regSRAi, regSLLi, regSRLi, +/*F*/ regCP, regCP, regCP, regCP, regCP, regCP, regCP, regCP, + regRLCA, regRRCA, regRLA, regRRA, regSLAA, regSRAA, regSLLA, regSRLA +}; + +//========================================================================= + +static void src_B() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + size = 0; //Byte Size + + (*srcDecode[second])(); //Call +} + +static void src_W() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + size = 1; //Word Size + + (*srcDecode[second])(); //Call +} + +static void src_L() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + size = 2; //Long Size + + (*srcDecode[second])(); //Call +} + +static void dst() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + + (*dstDecode[second])(); //Call +} + +static uint8 rCodeConversionB[8] = { 0xE1, 0xE0, 0xE5, 0xE4, 0xE9, 0xE8, 0xED, 0xEC }; +static uint8 rCodeConversionW[8] = { 0xE0, 0xE4, 0xE8, 0xEC, 0xF0, 0xF4, 0xF8, 0xFC }; +static uint8 rCodeConversionL[8] = { 0xE0, 0xE4, 0xE8, 0xEC, 0xF0, 0xF4, 0xF8, 0xFC }; + +static void reg_B() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + size = 0; //Byte Size + + if (brCode == FALSE) + { + brCode = TRUE; + rCode = rCodeConversionB[first & 7]; + } + + (*regDecode[second])(); //Call +} + +static void reg_W() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + size = 1; //Word Size + + if (brCode == FALSE) + { + brCode = TRUE; + rCode = rCodeConversionW[first & 7]; + } + + (*regDecode[second])(); //Call +} + +static void reg_L() +{ + second = FETCH8; //Get the second opcode + R = second & 7; + size = 2; //Long Size + + if (brCode == FALSE) + { + brCode = TRUE; + rCode = rCodeConversionL[first & 7]; + } + + (*regDecode[second])(); //Call +} + +//============================================================================= + +//Primary Instruction decode +static void (*decode[256])() = +{ +/*0*/ sngNOP, sngNORMAL, sngPUSHSR, sngPOPSR, sngMAX, sngHALT, sngEI, sngRETI, + sngLD8_8, sngPUSH8, sngLD8_16, sngPUSH16, sngINCF, sngDECF, sngRET, sngRETD, +/*1*/ sngRCF, sngSCF, sngCCF, sngZCF, sngPUSHA, sngPOPA, sngEX, sngLDF, + sngPUSHF, sngPOPF, sngJP16, sngJP24, sngCALL16, sngCALL24, sngCALR, iBIOSHLE, +/*2*/ sngLDB, sngLDB, sngLDB, sngLDB, sngLDB, sngLDB, sngLDB, sngLDB, + sngPUSHW, sngPUSHW, sngPUSHW, sngPUSHW, sngPUSHW, sngPUSHW, sngPUSHW, sngPUSHW, +/*3*/ sngLDW, sngLDW, sngLDW, sngLDW, sngLDW, sngLDW, sngLDW, sngLDW, + sngPUSHL, sngPUSHL, sngPUSHL, sngPUSHL, sngPUSHL, sngPUSHL, sngPUSHL, sngPUSHL, +/*4*/ sngLDL, sngLDL, sngLDL, sngLDL, sngLDL, sngLDL, sngLDL, sngLDL, + sngPOPW, sngPOPW, sngPOPW, sngPOPW, sngPOPW, sngPOPW, sngPOPW, sngPOPW, +/*5*/ e, e, e, e, e, e, e, e, + sngPOPL, sngPOPL, sngPOPL, sngPOPL, sngPOPL, sngPOPL, sngPOPL, sngPOPL, +/*6*/ sngJR, sngJR, sngJR, sngJR, sngJR, sngJR, sngJR, sngJR, + sngJR, sngJR, sngJR, sngJR, sngJR, sngJR, sngJR, sngJR, +/*7*/ sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, + sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, sngJRL, +/*8*/ src_B, src_B, src_B, src_B, src_B, src_B, src_B, src_B, + src_B, src_B, src_B, src_B, src_B, src_B, src_B, src_B, +/*9*/ src_W, src_W, src_W, src_W, src_W, src_W, src_W, src_W, + src_W, src_W, src_W, src_W, src_W, src_W, src_W, src_W, +/*A*/ src_L, src_L, src_L, src_L, src_L, src_L, src_L, src_L, + src_L, src_L, src_L, src_L, src_L, src_L, src_L, src_L, +/*B*/ dst, dst, dst, dst, dst, dst, dst, dst, + dst, dst, dst, dst, dst, dst, dst, dst, +/*C*/ src_B, src_B, src_B, src_B, src_B, src_B, e, reg_B, + reg_B, reg_B, reg_B, reg_B, reg_B, reg_B, reg_B, reg_B, +/*D*/ src_W, src_W, src_W, src_W, src_W, src_W, e, reg_W, + reg_W, reg_W, reg_W, reg_W, reg_W, reg_W, reg_W, reg_W, +/*E*/ src_L, src_L, src_L, src_L, src_L, src_L, e, reg_L, + reg_L, reg_L, reg_L, reg_L, reg_L, reg_L, reg_L, reg_L, +/*F*/ dst, dst, dst, dst, dst, dst, e, sngLDX, + sngSWI, sngSWI, sngSWI, sngSWI, sngSWI, sngSWI, sngSWI, sngSWI +}; + +//============================================================================= + +int32 TLCS900h_interpret(void) +{ + brCode = FALSE; + + first = FETCH8; //Get the first byte + + //Is any extra data used by this instruction? + cycles_extra = 0; + if (decodeExtra[first]) + (*decodeExtra[first])(); + + (*decode[first])(); //Decode + + return cycles + cycles_extra; +} + +}; + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.h new file mode 100644 index 0000000000..17d6072ebc --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret.h @@ -0,0 +1,137 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +21 JUL 2002 - neopop_uk +======================================= +- Added the 'instruction_error' function declaration here. + +28 JUL 2002 - neopop_uk +======================================= +- Removed CYCLE_WARNING as it is now obsolete. +- Added generic DIV prototypes. + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_INTERPRET__ +#define __TLCS900H_INTERPRET__ +namespace TLCS900H +{ + +//============================================================================= + +//Interprets a single instruction from 'pc', +//pc is incremented to the start of the next instruction. +//Returns the number of cycles taken for this instruction +int32 TLCS900h_interpret(void); + +//============================================================================= + +extern uint32 mem; +extern int size; +extern uint8 first; //First byte +extern uint8 second; //Second byte +extern uint8 R; //(second & 7) +extern uint8 rCode; +extern int32 cycles; +extern bool brCode; + +//============================================================================= + +extern void (*instruction_error)(const char* vaMessage,...); + +//============================================================================= + +#define FETCH8 loadB(pc++) + +uint16 fetch16(void); +uint32 fetch24(void); +uint32 fetch32(void); + +//============================================================================= + +void parityB(uint8 value); +void parityW(uint16 value); + +//============================================================================= + +void push8(uint8 data); +void push16(uint16 data); +void push32(uint32 data); + +uint8 pop8(void); +uint16 pop16(void); +uint32 pop32(void); + +//============================================================================= + +//DIV =============== +uint16 generic_DIV_B(uint16 val, uint8 div); +uint32 generic_DIV_W(uint32 val, uint16 div); + +//DIVS =============== +uint16 generic_DIVS_B(int16 val, int8 div); +uint32 generic_DIVS_W(int32 val, int16 div); + +//ADD =============== +uint8 generic_ADD_B(uint8 dst, uint8 src); +uint16 generic_ADD_W(uint16 dst, uint16 src); +uint32 generic_ADD_L(uint32 dst, uint32 src); + +//ADC =============== +uint8 generic_ADC_B(uint8 dst, uint8 src); +uint16 generic_ADC_W(uint16 dst, uint16 src); +uint32 generic_ADC_L(uint32 dst, uint32 src); + +//SUB =============== +uint8 generic_SUB_B(uint8 dst, uint8 src); +uint16 generic_SUB_W(uint16 dst, uint16 src); +uint32 generic_SUB_L(uint32 dst, uint32 src); + +//SBC =============== +uint8 generic_SBC_B(uint8 dst, uint8 src); +uint16 generic_SBC_W(uint16 dst, uint16 src); +uint32 generic_SBC_L(uint32 dst, uint32 src); + +//============================================================================= + +//Confirms a condition code check +bool conditionCode(int cc); + +//============================================================================= + +//Translate an rr or RR value for MUL/MULS/DIV/DIVS +uint8 get_rr_Target(void); +uint8 get_RR_Target(void); + +}; + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.cpp new file mode 100644 index 0000000000..7c38c77216 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.cpp @@ -0,0 +1,315 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_dst.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +22 JUL 2002 - neopop_uk +======================================= +- Added ANDCF,ORCF and XORCF in # and A modes. These were being used + by one of the obscure pachinko "games". + +23 JUL 2002 - neopop_uk +======================================= +- Added cycle count for TSET. + +16 AUG 2002 - neopop_uk +======================================= +- Replaced 'second & 7' with 'R', clearer, faster - and for some reason + more accurate... oh well! + +21 AUG 2002 - neopop_uk +======================================= +- Added TSET. + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_interpret.h" +#include "TLCS900h_registers.h" +#include "mem.h" + +namespace TLCS900H +{ + +//========================================================================= + +//===== LD (mem),# +void dstLDBi() +{ + storeB(mem, FETCH8); + cycles = 5; +} + +//===== LD (mem),# +void dstLDWi() +{ + storeW(mem, fetch16()); + cycles = 6; +} + +//===== POP (mem) +void dstPOPB() +{ + storeB(mem, pop8()); + cycles = 6; +} + +//===== POP (mem) +void dstPOPW() +{ + storeW(mem, pop16()); + cycles = 6; +} + +//===== LD (mem),(nn) +void dstLDBm16() +{ + storeB(mem, loadB(fetch16())); + cycles = 8; +} + +//===== LD (mem),(nn) +void dstLDWm16() +{ + storeW(mem, loadW(fetch16())); + cycles = 8; +} + +//===== LDA R,mem +void dstLDAW() +{ + regW(R) = (uint16)mem; + cycles = 4; +} + +//===== LDA R,mem +void dstLDAL() +{ + regL(R) = (uint32)mem; + cycles = 4; +} + +//===== ANDCF A,(mem) +void dstANDCFA() +{ + uint8 bit = REGA & 0xF; + uint8 mbit = (loadB(mem) >> bit) & 1; + if (bit < 8) SETFLAG_C(mbit & FLAG_C); + cycles = 8; +} + +//===== ORCF A,(mem) +void dstORCFA() +{ + uint8 bit = REGA & 0xF; + uint8 mbit = (loadB(mem) >> bit) & 1; + if (bit < 8) SETFLAG_C(mbit | FLAG_C); + cycles = 8; +} + +//===== XORCF A,(mem) +void dstXORCFA() +{ + uint8 bit = REGA & 0xF; + uint8 mbit = (loadB(mem) >> bit) & 1; + if (bit < 8) SETFLAG_C(mbit ^ FLAG_C); + cycles = 8; +} + +//===== LDCF A,(mem) +void dstLDCFA() +{ + uint8 bit = REGA & 0xF; + uint8 mask = (1 << bit); + if (bit < 8) SETFLAG_C(loadB(mem) & mask); + cycles = 8; +} + +//===== STCF A,(mem) +void dstSTCFA() +{ + uint8 bit = REGA & 0xF; + uint8 cmask = ~(1 << bit); + uint8 set = FLAG_C << bit; + if (bit < 8) storeB(mem, (loadB(mem) & cmask) | set); + cycles = 8; +} + +//===== LD (mem),R +void dstLDBR() +{ + storeB(mem, regB(R)); + cycles = 4; +} + +//===== LD (mem),R +void dstLDWR() +{ + storeW(mem, regW(R)); + cycles = 4; +} + +//===== LD (mem),R +void dstLDLR() +{ + storeL(mem, regL(R)); + cycles = 6; +} + +//===== ANDCF #3,(mem) +void dstANDCF() +{ + uint8 bit = R; + uint8 mbit = (loadB(mem) >> bit) & 1; + SETFLAG_C(mbit & FLAG_C); + cycles = 8; +} + +//===== ORCF #3,(mem) +void dstORCF() +{ + uint8 bit = R; + uint8 mbit = (loadB(mem) >> bit) & 1; + SETFLAG_C(mbit | FLAG_C); + cycles = 8; +} + +//===== XORCF #3,(mem) +void dstXORCF() +{ + uint8 bit = R; + uint8 mbit = (loadB(mem) >> bit) & 1; + SETFLAG_C(mbit ^ FLAG_C); + cycles = 8; +} + +//===== LDCF #3,(mem) +void dstLDCF() +{ + uint8 bit = R; + uint32 mask = (1 << bit); + SETFLAG_C(loadB(mem) & mask); + cycles = 8; +} + +//===== STCF #3,(mem) +void dstSTCF() +{ + uint8 bit = R; + uint8 cmask = ~(1 << bit); + uint8 set = FLAG_C << bit; + storeB(mem, (loadB(mem) & cmask) | set); + cycles = 8; +} + +//===== TSET #3,(mem) +void dstTSET() +{ + SETFLAG_Z(! (loadB(mem) & (1 << R)) ); + storeB(mem, loadB(mem) | (1 << R)); + + SETFLAG_H1 + SETFLAG_N0 + cycles = 10; +} + +//===== RES #3,(mem) +void dstRES() +{ + storeB(mem, loadB(mem) & (~(1 << R))); + cycles = 8; +} + +//===== SET #3,(mem) +void dstSET() +{ + storeB(mem, loadB(mem) | (1 << R)); + cycles = 8; +} + +//===== CHG #3,(mem) +void dstCHG() +{ + storeB(mem, loadB(mem) ^ (1 << R)); + cycles = 8; +} + +//===== BIT #3,(mem) +void dstBIT() +{ + SETFLAG_Z(! (loadB(mem) & (1 << R)) ); + SETFLAG_H1; + SETFLAG_N0; + cycles = 8; +} + +//===== JP cc,mem +void dstJP() +{ + if (conditionCode(second & 0xF)) + { + pc = mem; + cycles = 9; + } + else + { + cycles = 6; + } +} + +//===== CALL cc,mem +void dstCALL() +{ + if (conditionCode(second & 0xF)) + { + push32(pc); + pc = mem; + cycles = 12; + } + else + { + cycles = 6; + } +} + +//===== RET cc +void dstRET() +{ + if (conditionCode(second & 0xF)) + { + pc = pop32(); + cycles = 12; + } + else + { + cycles = 6; + } +} +}; +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.h new file mode 100644 index 0000000000..6dda156ff5 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_dst.h @@ -0,0 +1,132 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_dst.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_DST__ +#define __TLCS900H_DST__ + +namespace TLCS900H +{ + +//========================================================================= + +//===== LD (mem),# +void dstLDBi(void); + +//===== LD (mem),# +void dstLDWi(void); + +//===== POP (mem) +void dstPOPB(void); + +//===== POP (mem) +void dstPOPW(void); + +//===== LD (mem),(nn) +void dstLDBm16(void); + +//===== LD (mem),(nn) +void dstLDWm16(void); + +//===== LDA R,mem +void dstLDAW(void); + +//===== LDA R,mem +void dstLDAL(void); + +//===== ANDCF A,(mem) +void dstANDCFA(void); + +//===== ORCF A,(mem) +void dstORCFA(void); + +//===== XORCF A,(mem) +void dstXORCFA(void); + +//===== LDCF A,(mem) +void dstLDCFA(void); + +//===== STCF A,(mem) +void dstSTCFA(void); + +//===== LD (mem),R +void dstLDBR(void); + +//===== LD (mem),R +void dstLDWR(void); + +//===== LD (mem),R +void dstLDLR(void); + +//===== ANDCF #3,(mem) +void dstANDCF(void); + +//===== ORCF #3,(mem) +void dstORCF(void); + +//===== XORCF #3,(mem) +void dstXORCF(void); + +//===== LDCF #3,(mem) +void dstLDCF(void); + +//===== STCF #3,(mem) +void dstSTCF(void); + +//===== TSET #3,(mem) +void dstTSET(void); + +//===== RES #3,(mem) +void dstRES(void); + +//===== SET #3,(mem) +void dstSET(void); + +//===== CHG #3,(mem) +void dstCHG(void); + +//===== BIT #3,(mem) +void dstBIT(void); + +//===== JP cc,mem +void dstJP(void); + +//===== CALL cc,mem +void dstCALL(void); + +//===== RET cc +void dstRET(void); + +}; + +//========================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.cpp new file mode 100644 index 0000000000..2982bb9fef --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.cpp @@ -0,0 +1,2187 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_reg.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +22 JUL 2002 - neopop_uk +======================================= +- Added ANDCF,ORCF and XORCF in A mode and improved the remaining ones. + +22 JUL 2002 - neopop_uk +======================================= +- Added LINK and UNLK to fix "Rockman Battle and Fighters" + +23 JUL 2002 - neopop_uk +======================================= +- Added MIRR to fix "Card Fighters 2" +- Added cycle counts for TSET. + +28 JUL 2002 - neopop_uk +======================================= +- Converted DIV/DIVS to use the generic function + +16 AUG 2002 - neopop_uk +======================================= +- Removed all of the 'second & 7' with R as it's pre-calculated anyway. +- Fixed V flag emulation of INC/DEC, fixes "Cotton" menus +- Fixed MINC4 + +21 AUG 2002 - neopop_uk +======================================= +- Added TSET and MULA, both untested. + +04 SEP 2002 - neopop_uk +======================================= +- Fixed GCC compatibility. + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_interpret.h" +#include "TLCS900h_registers.h" +#include "mem.h" +#include "dma.h" + +namespace TLCS900H +{ + +//========================================================================= + +//===== LD r,# +void regLDi() +{ + switch(size) + { + case 0: rCodeB(rCode) = FETCH8; cycles = 4; break; + case 1: rCodeW(rCode) = fetch16(); cycles = 4; break; + case 2: rCodeL(rCode) = fetch32(); cycles = 6; break; + } +} + +//===== PUSH r +void regPUSH() +{ + switch(size) + { + case 0: push8(rCodeB(rCode)); cycles = 5;break; + case 1: push16(rCodeW(rCode)); cycles = 5;break; + case 2: push32(rCodeL(rCode)); cycles = 7;break; + } +} + +//===== POP r +void regPOP() +{ + switch(size) + { + case 0: rCodeB(rCode) = pop8(); cycles = 6;break; + case 1: rCodeW(rCode) = pop16(); cycles = 6;break; + case 2: rCodeL(rCode) = pop32(); cycles = 8;break; + } +} + +//===== CPL r +void regCPL() +{ + switch(size) + { + case 0: rCodeB(rCode) = ~ rCodeB(rCode); break; + case 1: rCodeW(rCode) = ~ rCodeW(rCode); break; + } + + SETFLAG_H1; + SETFLAG_N1; + cycles = 4; +} + +//===== NEG r +void regNEG() +{ + switch(size) + { + case 0: rCodeB(rCode) = generic_SUB_B(0, rCodeB(rCode)); break; + case 1: rCodeW(rCode) = generic_SUB_W(0, rCodeW(rCode)); break; + } + cycles = 5; +} + +//===== MUL rr,# +void regMULi() +{ + uint8 target = get_rr_Target(); + if (target == 0x80) + { +#ifdef NEOPOP_DEBUG + instruction_error("reg: MULi bad \'rr\' dst code"); +#endif + return; + } + + switch(size) + { + case 0: rCodeW(target) = (rCodeW(target) & 0xFF) * FETCH8; + cycles = 18; break; + case 1: rCodeL(target) = (rCodeL(target) & 0xFFFF) * fetch16(); + cycles = 26; break; + } +} + +//===== MULS rr,# +void regMULSi() +{ + uint8 target = get_rr_Target(); + if (target == 0x80) + { + instruction_error("reg: MULSi bad \'rr\' dst code"); + return; + } + + switch(size) + { + case 0: rCodeW(target) = (int8)(rCodeW(target) & 0xFF) * (int8)FETCH8; + cycles = 18; break; + case 1: rCodeL(target) = (int16)(rCodeL(target) & 0xFFFF) * (int16)fetch16(); + cycles = 26; break; + } +} + +//===== DIV rr,# +void regDIVi() +{ + uint8 target = get_rr_Target(); + if (target == 0x80) + { + instruction_error("reg: DIVi bad \'rr\' dst code"); + return; + } + + switch(size) + { + case 0: { rCodeW(target) = generic_DIV_B(rCodeW(target), FETCH8); + cycles = 22; + break; } + + case 1: { rCodeL(target) = generic_DIV_W(rCodeL(target), fetch16()); + cycles = 30; + break; } + } +} + +//===== DIVS rr,# +void regDIVSi() +{ + uint8 target = get_rr_Target(); + if (target == 0x80) + { + instruction_error("reg: DIVSi bad \'rr\' dst code"); + return; + } + + switch(size) + { + case 0: { rCodeW(target) = generic_DIVS_B(rCodeW(target), FETCH8); + cycles = 24; + break; } + + case 1: { rCodeL(target) = generic_DIVS_W(rCodeL(target), fetch16()); + cycles = 32; + break; } + } +} + +//===== LINK r,dd +void regLINK() +{ + int16 d = (int16)fetch16(); + push32(rCodeL(rCode)); + rCodeL(rCode) = REGXSP; + REGXSP += d; + cycles = 10; +} + +//===== UNLK r +void regUNLK() +{ + REGXSP = rCodeL(rCode); + rCodeL(rCode) = pop32(); + cycles = 8; +} + +//===== BS1F A,r +void regBS1F() +{ + uint16 data = rCodeW(rCode), mask = 0x0001; + uint8 i; + + SETFLAG_V0; + for (i = 0; i < 15; i++) + { + if (data & mask) + { + REGA = i; + return; + } + + mask <<= 1; + } + + SETFLAG_V1; + cycles = 4; +} + +//===== BS1B A,r +void regBS1B() +{ + uint16 data = rCodeW(rCode), mask = 0x8000; + uint8 i; + + SETFLAG_V0; + for (i = 0; i < 15; i++) + { + if (data & mask) + { + REGA = 15 - i; + return; + } + + mask >>= 1; + } + + SETFLAG_V1; + cycles = 4; +} + +//===== DAA r +void regDAA() +{ + uint16 resultC; + uint8 src = rCodeB(rCode), result, added = 0, half; + bool setC = FALSE; + + uint8 upper4 = (src & 0xF0); + uint8 lower4 = (src & 0x0F); + + if (FLAG_C) // {C = 1} + { + if (FLAG_H) // {H = 1} + { + setC = TRUE; + added = 0x66; + } + else // {H = 0} + { + if (lower4 < 0x0a) { added = 0x60; } + else { added = 0x66; } + setC = TRUE; + } + } + else // {C = 0} + { + if (FLAG_H) // {H = 1} + { + if (src < 0x9A) { added = 0x06; } + else { added = 0x66; } + } + else // {H = 0} + { + if ((upper4 < 0x90) && (lower4 > 0x9)) { added = 0x06; } + else if ((upper4 > 0x80) && (lower4 > 0x9)) { added = 0x66; } + else if ((upper4 > 0x90) && (lower4 < 0xa)) { added = 0x60; } + } + } + + if (FLAG_N) + { + resultC = (uint16)src - (uint16)added; + half = (src & 0xF) - (added & 0xF); + } + else + { + resultC = (uint16)src + (uint16)added; + half = (src & 0xF) + (added & 0xF); + } + + result = (uint8)(resultC & 0xFF); + + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + + if (FLAG_N) SETFLAG_C(result > src || setC) + else SETFLAG_C(result < src || setC) + + parityB(result); + rCodeB(rCode) = result; + cycles = 6; +} + +//===== EXTZ r +void regEXTZ() +{ + switch(size) + { + case 1: rCodeW(rCode) &= 0xFF; break; + case 2: rCodeL(rCode) &= 0xFFFF; break; + } + + cycles = 4; +} + +//===== EXTS r +void regEXTS() +{ + switch(size) + { + case 1: if (rCodeW(rCode) & 0x0080) + { rCodeW(rCode) |= 0xFF00; } else + { rCodeW(rCode) &= 0x00FF; } + break; + + case 2: if (rCodeL(rCode) & 0x00008000) + { rCodeL(rCode) |= 0xFFFF0000; } else + { rCodeL(rCode) &= 0x0000FFFF; } + break; + } + + cycles = 5; +} + +//===== PAA r +void regPAA() +{ + switch(size) + { + case 1: if (rCodeW(rCode) & 0x1) rCodeW(rCode)++; break; + case 2: if (rCodeL(rCode) & 0x1) rCodeL(rCode)++; break; + } + cycles = 4; +} + +//===== MIRR r +void regMIRR() +{ + uint16 src = rCodeW(rCode), dst = 0, bit; + + //Undocumented - see p165 of CPU .PDF + //Seems to mirror bits completely, ie. 1234 -> 4321 + + for (bit = 0; bit < 16; bit++) + if (src & (1 << bit)) + dst |= (1 << (15 - bit)); + + rCodeW(rCode) = dst; + cycles = 4; +} + +//===== MULA rr +void regMULA() +{ + uint32 src = (int16)loadW(regL(2/*XDE*/)) * (int16)loadW(regL(3/*XHL*/)); + uint32 dst = rCodeL(rCode); + uint32 result = dst + src; + + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + + if ((((int32)dst >= 0) && ((int32)src >= 0) && ((int32)result < 0)) || + (((int32)dst < 0) && ((int32)src < 0) && ((int32)result >= 0))) + {SETFLAG_V1} else {SETFLAG_V0} + + cycles = 31; +} + +//===== DJNZ r,d +void regDJNZ() +{ + int8 offset = FETCH8; + + cycles = 7; + + switch(size) + { + case 0: + rCodeB(rCode) --; + if (rCodeB(rCode) != 0) + { + cycles = 11; + pc = pc + offset; + } + break; + + case 1: + rCodeW(rCode) --; + if (rCodeW(rCode) != 0) + { + cycles = 11; + pc = pc + offset; + } + break; + } +} + +//===== ANDCF #,r +void regANDCFi() +{ + uint8 data, bit = FETCH8 & 0xF; + switch(size) + { + case 0: { data = (rCodeB(rCode) >> bit) & 1; + if (bit < 8) SETFLAG_C(FLAG_C & data); + break; } + + case 1: { data = (rCodeW(rCode) >> bit) & 1; + SETFLAG_C(FLAG_C & data); + break; } + } + cycles = 4; +} + +//===== ORCF #,r +void regORCFi() +{ + uint8 data, bit = FETCH8 & 0xF; + switch(size) + { + case 0: { data = (rCodeB(rCode) >> bit) & 1; + if (bit < 8) SETFLAG_C(FLAG_C | data); + break; } + + case 1: { data = (rCodeW(rCode) >> bit) & 1; + SETFLAG_C(FLAG_C | data); + break; } + } + cycles = 4; +} + +//===== XORCF #,r +void regXORCFi() +{ + uint8 data, bit = FETCH8 & 0xF; + switch(size) + { + case 0: { data = (rCodeB(rCode) >> bit) & 1; + if (bit < 8) SETFLAG_C(FLAG_C ^ data); + break; } + + case 1: { data = (rCodeW(rCode) >> bit) & 1; + SETFLAG_C(FLAG_C ^ data); + break; } + } + cycles = 4; +} + +//===== LDCF #,r +void regLDCFi() +{ + uint8 bit = FETCH8 & 0xF; + switch(size) + { + case 0: { uint8 mask = (1 << bit); + if (bit < 8) + SETFLAG_C(rCodeB(rCode) & mask); + break; } + + + case 1: { uint16 mask = (1 << bit); + SETFLAG_C(rCodeW(rCode) & mask); + break; } + } + + cycles = 4; +} + +//===== STCF #,r +void regSTCFi() +{ + uint8 bit = FETCH8 & 0xF; + switch(size) + { + case 0: { uint8 cmask = ~(1 << bit); + uint8 set = FLAG_C << bit; + if (bit < 8) rCodeB(rCode) = (rCodeB(rCode) & cmask) | set; + break; } + + case 1: { uint16 cmask = ~(1 << bit); + uint16 set = FLAG_C << bit; + rCodeW(rCode) = (rCodeW(rCode) & cmask) | set; + break; } + } + + cycles = 4; +} + +//===== ANDCF A,r +void regANDCFA() +{ + uint8 data, bit = REGA & 0xF; + switch(size) + { + case 0: { data = (rCodeB(rCode) >> bit) & 1; + if (bit < 8) SETFLAG_C(FLAG_C & data); + break; } + + case 1: { data = (rCodeW(rCode) >> bit) & 1; + SETFLAG_C(FLAG_C & data); + break; } + } + cycles = 4; +} + +//===== ORCF A,r +void regORCFA() +{ + uint8 data, bit = REGA & 0xF; + switch(size) + { + case 0: { data = (rCodeB(rCode) >> bit) & 1; + if (bit < 8) SETFLAG_C(FLAG_C | data); + break; } + + case 1: { data = (rCodeW(rCode) >> bit) & 1; + SETFLAG_C(FLAG_C | data); + break; } + } + cycles = 4; +} + +//===== XORCF A,r +void regXORCFA() +{ + uint8 data, bit = REGA & 0xF; + switch(size) + { + case 0: { data = (rCodeB(rCode) >> bit) & 1; + if (bit < 8) SETFLAG_C(FLAG_C ^ data); + break; } + + case 1: { data = (rCodeW(rCode) >> bit) & 1; + SETFLAG_C(FLAG_C ^ data); + break; } + } + cycles = 4; +} + +//===== LDCF A,r +void regLDCFA() +{ + uint8 bit = REGA & 0xF; + uint32 mask = (1 << bit); + + switch(size) + { + case 0: if (bit < 8) SETFLAG_C(rCodeB(rCode) & mask); break; + case 1: SETFLAG_C(rCodeW(rCode) & mask); break; + } + + cycles = 4; +} + +//===== STCF A,r +void regSTCFA() +{ + switch(size) + { + case 0: { uint8 bit = REGA & 0xF; + uint8 cmask = ~(1 << bit); + uint8 set = FLAG_C << bit; + if (bit < 8) rCodeB(rCode) = (rCodeB(rCode) & cmask) | set; + break; } + + case 1: { uint8 bit = REGA & 0xF; + uint16 cmask = ~(1 << bit); + uint16 set = FLAG_C << bit; + rCodeW(rCode) = (rCodeW(rCode) & cmask) | set; + break; } + } + + cycles = 4; +} + +//===== LDC cr,r +void regLDCcrr() +{ + uint8 cr = FETCH8; + + switch(size) + { + case 0: dmaStoreB(cr, rCodeB(rCode)); break; + case 1: dmaStoreW(cr, rCodeW(rCode)); break; + case 2: dmaStoreL(cr, rCodeL(rCode)); break; + } + + cycles = 8; +} + +//===== LDC r,cr +void regLDCrcr() +{ + uint8 cr = FETCH8; + + switch(size) + { + case 0: rCodeB(rCode) = dmaLoadB(cr); break; + case 1: rCodeW(rCode) = dmaLoadW(cr); break; + case 2: rCodeL(rCode) = dmaLoadL(cr); break; + } + + cycles = 8; +} + +//===== RES #,r +void regRES() +{ + uint8 b = FETCH8 & 0xF; + + switch(size) + { + case 0: rCodeB(rCode) &= ~(uint8)(1 << b); break; + case 1: rCodeW(rCode) &= ~(uint16)(1 << b); break; + } + + cycles = 4; +} + +//===== SET #,r +void regSET() +{ + uint8 b = FETCH8 & 0xF; + + switch(size) + { + case 0: rCodeB(rCode) |= (1 << b); break; + case 1: rCodeW(rCode) |= (1 << b); break; + } + + cycles = 4; +} + +//===== CHG #,r +void regCHG() +{ + uint8 b = FETCH8 & 0xF; + + switch(size) + { + case 0: rCodeB(rCode) ^= (1 << b); break; + case 1: rCodeW(rCode) ^= (1 << b); break; + } + + cycles = 4; +} + +//===== BIT #,r +void regBIT() +{ + uint8 b = FETCH8 & 0xF; + + switch(size) + { + case 0: SETFLAG_Z(! (rCodeB(rCode) & (1 << b)) ); break; + case 1: SETFLAG_Z(! (rCodeW(rCode) & (1 << b)) ); break; + } + + SETFLAG_H1; + SETFLAG_N0; + cycles = 4; +} + +//===== TSET #,r +void regTSET() +{ + uint8 b = FETCH8 & 0xF; + + switch(size) + { + case 0: SETFLAG_Z(! (rCodeB(rCode) & (1 << b)) ); + rCodeB(rCode) |= (1 << b); + break; + + case 1: SETFLAG_Z(! (rCodeW(rCode) & (1 << b)) ); + rCodeW(rCode) |= (1 << b); + break; + } + + SETFLAG_H1 + SETFLAG_N0 + cycles = 6; +} + +//===== MINC1 #,r +void regMINC1() +{ + uint16 num = fetch16() + 1; + + if (size == 1) + { + if ((rCodeW(rCode) % num) == (num - 1)) + rCodeW(rCode) -= (num - 1); + else + rCodeW(rCode) += 1; + } + + cycles = 8; +} + +//===== MINC2 #,r +void regMINC2() +{ + uint16 num = fetch16() + 2; + + if (size == 1) + { + if ((rCodeW(rCode) % num) == (num - 2)) + rCodeW(rCode) -= (num - 2); + else + rCodeW(rCode) += 2; + } + + cycles = 8; +} + +//===== MINC4 #,r +void regMINC4() +{ + uint16 num = fetch16() + 4; + + if (size == 1) + { + if ((rCodeW(rCode) % num) == (num - 4)) + rCodeW(rCode) -= (num - 4); + else + rCodeW(rCode) += 4; + } + + cycles = 8; +} + +//===== MDEC1 #,r +void regMDEC1() +{ + uint16 num = fetch16() + 1; + + if (size == 1) + { + if ((rCodeW(rCode) % num) == 0) + rCodeW(rCode) += (num - 1); + else + rCodeW(rCode) -= 1; + } + + cycles = 7; +} + +//===== MDEC2 #,r +void regMDEC2() +{ + uint16 num = fetch16() + 2; + + if (size == 1) + { + if ((rCodeW(rCode) % num) == 0) + rCodeW(rCode) += (num - 2); + else + rCodeW(rCode) -= 2; + } + + cycles = 7; +} + +//===== MDEC4 #,r +void regMDEC4() +{ + uint16 num = fetch16() + 4; + + if (size == 1) + { + if ((rCodeW(rCode) % num) == 0) + rCodeW(rCode) += (num - 4); + else + rCodeW(rCode) -= 4; + } + + cycles = 7; +} + +//===== MUL RR,r +void regMUL() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("reg: MUL bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: rCodeW(target) = (rCodeW(target) & 0xFF) * rCodeB(rCode); + cycles = 18; break; + case 1: rCodeL(target) = (rCodeL(target) & 0xFFFF) * rCodeW(rCode); + cycles = 26; break; + } +} + +//===== MULS RR,r +void regMULS() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("reg: MUL bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: rCodeW(target) = (int8)(rCodeW(target) & 0xFF) * (int8)rCodeB(rCode); + cycles = 18; break; + case 1: rCodeL(target) = (int16)(rCodeL(target) & 0xFFFF) * (int16)rCodeW(rCode); + cycles = 26; break; + } +} + +//===== DIV RR,r +void regDIV() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("reg: DIV bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: { rCodeW(target) = generic_DIV_B(rCodeW(target), rCodeB(rCode)); + cycles = 22; + break; } + + case 1: { rCodeL(target) = generic_DIV_W(rCodeL(target), rCodeW(rCode)); + cycles = 30; + break; } + } +} + +//===== DIVS RR,r +void regDIVS() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("reg: DIVS bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: { rCodeW(target) = generic_DIVS_B(rCodeW(target), rCodeB(rCode)); + cycles = 24; + break; } + + case 1: { rCodeL(target) = generic_DIVS_W(rCodeL(target), rCodeW(rCode)); + cycles = 32; + break; } + } +} + +//===== INC #3,r +void regINC() +{ + uint8 val = R; + if (val == 0) + val = 8; + + switch(size) + { + case 0: { uint8 dst = rCodeB(rCode); + uint8 half = (dst & 0xF) + val; + uint32 resultC = dst + val; + uint8 result = (uint8)(resultC & 0xFF); + SETFLAG_S(result & 0x80); + + if (((int8)dst >= 0) && ((int8)result < 0)) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_H(half > 0xF); + SETFLAG_Z(result == 0); + SETFLAG_N0; + rCodeB(rCode) = result; + break; } + + case 1: { rCodeW(rCode) += val; break; } + + case 2: { rCodeL(rCode) += val; break; } + } + + cycles = 4; +} + +//===== DEC #3,r +void regDEC() +{ + uint8 val = R; + if (val == 0) + val = 8; + + switch(size) + { + case 0: { uint8 dst = rCodeB(rCode); + uint8 half = (dst & 0xF) - val; + uint32 resultC = dst - val; + uint8 result = (uint8)(resultC & 0xFF); + SETFLAG_S(result & 0x80); + + if (((int8)dst < 0) && ((int8)result >= 0)) + {SETFLAG_V1} else {SETFLAG_V0} + + SETFLAG_H(half > 0xF); + SETFLAG_Z(result == 0); + SETFLAG_N1; + rCodeB(rCode) = result; + cycles = 4; + break; } + + case 1: { rCodeW(rCode) -= val; cycles = 4; break; } + + case 2: { rCodeL(rCode) -= val; cycles = 5; break; } + } +} + +//===== SCC cc,r +void regSCC() +{ + uint32 result; + + if (conditionCode(second & 0xF)) + result = 1; + else + result = 0; + + switch(size) + { + case 0: rCodeB(rCode) = (uint8)result; break; + case 1: rCodeW(rCode) = (uint16)result; break; + } + + cycles = 6; +} + +//===== LD R,r +void regLDRr() +{ + switch(size) + { + case 0: regB(R) = rCodeB(rCode); break; + case 1: regW(R) = rCodeW(rCode); break; + case 2: regL(R) = rCodeL(rCode); break; + } + + cycles = 4; +} + +//===== LD r,R +void regLDrR() +{ + switch(size) + { + case 0: rCodeB(rCode) = regB(R); break; + case 1: rCodeW(rCode) = regW(R); break; + case 2: rCodeL(rCode) = regL(R); break; + } + + cycles = 4; +} + +//===== ADD R,r +void regADD() +{ + switch(size) + { + case 0: regB(R) = generic_ADD_B(regB(R), rCodeB(rCode)); cycles = 4; break; + case 1: regW(R) = generic_ADD_W(regW(R), rCodeW(rCode)); cycles = 4; break; + case 2: regL(R) = generic_ADD_L(regL(R), rCodeL(rCode)); cycles = 7; break; + } +} + +//===== ADC R,r +void regADC() +{ + switch(size) + { + case 0: regB(R) = generic_ADC_B(regB(R), rCodeB(rCode)); cycles = 4; break; + case 1: regW(R) = generic_ADC_W(regW(R), rCodeW(rCode)); cycles = 4; break; + case 2: regL(R) = generic_ADC_L(regL(R), rCodeL(rCode)); cycles = 7; break; + } +} + +//===== SUB R,r +void regSUB() +{ + switch(size) + { + case 0: regB(R) = generic_SUB_B(regB(R), rCodeB(rCode)); cycles = 4; break; + case 1: regW(R) = generic_SUB_W(regW(R), rCodeW(rCode)); cycles = 4; break; + case 2: regL(R) = generic_SUB_L(regL(R), rCodeL(rCode)); cycles = 7; break; + } +} + +//===== SBC R,r +void regSBC() +{ + switch(size) + { + case 0: regB(R) = generic_SBC_B(regB(R), rCodeB(rCode)); cycles = 4; break; + case 1: regW(R) = generic_SBC_W(regW(R), rCodeW(rCode)); cycles = 4; break; + case 2: regL(R) = generic_SBC_L(regL(R), rCodeL(rCode)); cycles = 7; break; + } +} + +//===== LD r,#3 +void regLDr3() +{ + switch(size) + { + case 0: rCodeB(rCode) = R; break; + case 1: rCodeW(rCode) = R; break; + case 2: rCodeL(rCode) = R; break; + } + + cycles = 4; +} + +//===== EX R,r +void regEX() +{ + switch(size) + { + case 0: { uint8 temp = regB(R); regB(R) = rCodeB(rCode); rCodeB(rCode) = temp; break;} + case 1: { uint16 temp = regW(R); regW(R) = rCodeW(rCode); rCodeW(rCode) = temp; break;} + case 2: { uint32 temp = regL(R); regL(R) = rCodeL(rCode); rCodeL(rCode) = temp; break;} + } + + cycles = 5; +} + +//===== ADD r,# +void regADDi() +{ + switch(size) + { + case 0: rCodeB(rCode) = generic_ADD_B(rCodeB(rCode), FETCH8); cycles = 4;break; + case 1: rCodeW(rCode) = generic_ADD_W(rCodeW(rCode), fetch16()); cycles = 4;break; + case 2: rCodeL(rCode) = generic_ADD_L(rCodeL(rCode), fetch32()); cycles = 7;break; + } +} + +//===== ADC r,# +void regADCi() +{ + switch(size) + { + case 0: rCodeB(rCode) = generic_ADC_B(rCodeB(rCode), FETCH8); cycles = 4;break; + case 1: rCodeW(rCode) = generic_ADC_W(rCodeW(rCode), fetch16()); cycles = 4;break; + case 2: rCodeL(rCode) = generic_ADC_L(rCodeL(rCode), fetch32()); cycles = 7;break; + } +} + +//===== SUB r,# +void regSUBi() +{ + switch(size) + { + case 0: rCodeB(rCode) = generic_SUB_B(rCodeB(rCode), FETCH8); cycles = 4;break; + case 1: rCodeW(rCode) = generic_SUB_W(rCodeW(rCode), fetch16()); cycles = 4;break; + case 2: rCodeL(rCode) = generic_SUB_L(rCodeL(rCode), fetch32()); cycles = 7;break; + } +} + +//===== SBC r,# +void regSBCi() +{ + switch(size) + { + case 0: rCodeB(rCode) = generic_SBC_B(rCodeB(rCode), FETCH8); cycles = 4;break; + case 1: rCodeW(rCode) = generic_SBC_W(rCodeW(rCode), fetch16()); cycles = 4;break; + case 2: rCodeL(rCode) = generic_SBC_L(rCodeL(rCode), fetch32()); cycles = 7;break; + } +} + +//===== CP r,# +void regCPi() +{ + switch(size) + { + case 0: generic_SUB_B(rCodeB(rCode), FETCH8); cycles = 4;break; + case 1: generic_SUB_W(rCodeW(rCode), fetch16());cycles = 4; break; + case 2: generic_SUB_L(rCodeL(rCode), fetch32());cycles = 7; break; + } +} + +//===== AND r,# +void regANDi() +{ + switch(size) + { + case 0: { uint8 result = rCodeB(rCode) & FETCH8; + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = rCodeW(rCode) & fetch16(); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = rCodeL(rCode) & fetch32(); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 7; + break; } + } + + SETFLAG_H1; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== OR r,# +void regORi() +{ + switch(size) + { + case 0: { uint8 result = rCodeB(rCode) | FETCH8; + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + rCodeB(rCode) = result; + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = rCodeW(rCode) | fetch16(); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + rCodeW(rCode) = result; + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = rCodeL(rCode) | fetch32(); + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + rCodeL(rCode) = result; + cycles = 7; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== XOR r,# +void regXORi() +{ + switch(size) + { + case 0: { uint8 result = rCodeB(rCode) ^ FETCH8; + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + rCodeB(rCode) = result; + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = rCodeW(rCode) ^ fetch16(); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + rCodeW(rCode) = result; + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = rCodeL(rCode) ^ fetch32(); + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + rCodeL(rCode) = result; + cycles = 7; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== AND R,r +void regAND() +{ + switch(size) + { + case 0: { uint8 result = regB(R) & rCodeB(rCode); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + regB(R) = result; + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = regW(R) & rCodeW(rCode); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + regW(R) = result; + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = regL(R) & rCodeL(rCode); + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + regL(R) = result; + cycles = 7; + break; } + } + + SETFLAG_H1; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== OR R,r +void regOR() +{ + switch(size) + { + case 0: { uint8 result = regB(R) | rCodeB(rCode); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + regB(R) = result; + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = regW(R) | rCodeW(rCode); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + regW(R) = result; + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = regL(R) | rCodeL(rCode); + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + regL(R) = result; + cycles = 7; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== XOR R,r +void regXOR() +{ + switch(size) + { + case 0: { uint8 result = regB(R) ^ rCodeB(rCode); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + regB(R) = result; + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = regW(R) ^ rCodeW(rCode); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + regW(R) = result; + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = regL(R) ^ rCodeL(rCode); + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + regL(R) = result; + cycles = 7; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== CP r,#3 +void regCPr3() +{ + switch(size) + { + case 0: generic_SUB_B(rCodeB(rCode), R); break; + case 1: generic_SUB_W(rCodeW(rCode), R); break; + } + + cycles = 4; +} + +//===== CP R,r +void regCP() +{ + switch(size) + { + case 0: generic_SUB_B(regB(R), rCodeB(rCode));cycles = 4; break; + case 1: generic_SUB_W(regW(R), rCodeW(rCode));cycles = 4; break; + case 2: generic_SUB_L(regL(R), rCodeL(rCode));cycles = 7; break; + } +} + +//===== RLC #,r +void regRLCi() +{ + int i; + uint8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeB(rCode) & 0x80); + rCodeB(rCode) <<= 1; + if (FLAG_C) rCodeB(rCode) |= 1; + } + SETFLAG_S(rCodeB(rCode) & 0x80); + SETFLAG_Z(rCodeB(rCode) == 0); + parityB(rCodeB(rCode)); + cycles = 6 + (2*sa); + break; + + case 1: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeW(rCode) & 0x8000); + rCodeW(rCode) <<= 1; + if (FLAG_C) rCodeW(rCode) |= 1; + } + SETFLAG_S(rCodeW(rCode) & 0x8000); + SETFLAG_Z(rCodeW(rCode) == 0); + parityW(rCodeW(rCode)); + cycles = 6 + (2*sa); + break; + + case 2: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeL(rCode) & 0x80000000); + rCodeL(rCode) <<= 1; + if (FLAG_C) rCodeL(rCode) |= 1; + } + SETFLAG_S(rCodeL(rCode) & 0x80000000); + SETFLAG_Z(rCodeL(rCode) == 0); + cycles = 8 + (2*sa); + break; + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RRC #,r +void regRRCi() +{ + int i; + uint8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeB(rCode) & 1); + rCodeB(rCode) >>= 1; + if (FLAG_C) rCodeB(rCode) |= 0x80; + } + SETFLAG_S(rCodeB(rCode) & 0x80); + SETFLAG_Z(rCodeB(rCode) == 0); + parityB(rCodeB(rCode)); + cycles = 6 + (2*sa); + break; + + case 1: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeW(rCode) & 1); + rCodeW(rCode) >>= 1; + if (FLAG_C) rCodeW(rCode) |= 0x8000; + } + SETFLAG_S(rCodeW(rCode) & 0x8000); + SETFLAG_Z(rCodeW(rCode) == 0); + parityW(rCodeW(rCode)); + cycles = 6 + (2*sa); + break; + + case 2: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeL(rCode) & 1); + rCodeL(rCode) >>= 1; + if (FLAG_C) rCodeL(rCode) |= 0x80000000; + } + SETFLAG_S(rCodeL(rCode) & 0x80000000); + SETFLAG_Z(rCodeL(rCode) == 0); + cycles = 8 + (2*sa); + break; + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RL #,r +void regRLi() +{ + int i; + bool tempC; + uint8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: { uint8 result; + for (i = 0; i < sa; i++) + { + result = rCodeB(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x80); + result <<= 1; + if (tempC) result |= 1; + rCodeB(rCode) = result; + } + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + (2*sa); + break; } + + case 1: { uint16 result; + for (i = 0; i < sa; i++) + { + result = rCodeW(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x8000); + result <<= 1; + if (tempC) result |= 1; + rCodeW(rCode) = result; + } + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + (2*sa); + break; } + + case 2: { uint32 result; + for (i = 0; i < sa; i++) + { + result = rCodeL(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x80000000); + result <<= 1; + if (tempC) result |= 1; + rCodeL(rCode) = result; + } + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + cycles = 8 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RR #,r +void regRRi() +{ + int i; + bool tempC; + uint8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: { uint8 result; + for (i = 0; i < sa; i++) + { + result = rCodeB(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x01); + result >>= 1; + if (tempC) result |= 0x80; + rCodeB(rCode) = result; + } + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + cycles = 6 + (2*sa); + parityB(result); + break; } + + case 1: { uint16 result; + for (i = 0; i < sa; i++) + { + result = rCodeW(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x01); + result >>= 1; + if (tempC) result |= 0x8000; + rCodeW(rCode) = result; + } + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + cycles = 6 + (2*sa); + parityW(result); + break; } + + case 2: { uint32 result; + for (i = 0; i < sa; i++) + { + result = rCodeL(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x01); + result >>= 1; + if (tempC) result |= 0x80000000; + rCodeL(rCode) = result; + } + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + cycles = 8 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SLA #,r +void regSLAi() +{ + int8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { int8 result, data = (int8)rCodeB(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80); + result <<= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { int16 result, data = (int16)rCodeW(rCode); + result = (data << sa); + SETFLAG_C(result & 0x8000); + result <<= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { int32 result, data = (int32)rCodeL(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80000000); + result <<= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SRA #,r +void regSRAi() +{ + int8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { int8 data = (int8)rCodeB(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { int16 data = (int16)rCodeW(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { int32 data = (int32)rCodeL(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SLL #,r +void regSLLi() +{ + uint8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { uint8 result, data = rCodeB(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80); + result <<= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { uint16 result, data = rCodeW(rCode); + result = (data << sa); + SETFLAG_C(result & 0x8000); + result <<= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { uint32 result, data = rCodeL(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80000000); + result <<= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SRL #,r +void regSRLi() +{ + uint8 sa = FETCH8 & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { uint8 data = rCodeB(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { uint16 data = rCodeW(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { uint32 data = rCodeL(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RLC A,r +void regRLCA() +{ + int i; + uint8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeB(rCode) & 0x80); + rCodeB(rCode) <<= 1; + if (FLAG_C) rCodeB(rCode) |= 1; + } + SETFLAG_S(rCodeB(rCode) & 0x80); + SETFLAG_Z(rCodeB(rCode) == 0); + cycles = 6 + (2*sa); + parityB(rCodeB(rCode)); + break; + + case 1: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeW(rCode) & 0x8000); + rCodeW(rCode) <<= 1; + if (FLAG_C) rCodeW(rCode) |= 1; + } + SETFLAG_S(rCodeW(rCode) & 0x8000); + SETFLAG_Z(rCodeW(rCode) == 0); + cycles = 6 + (2*sa); + parityW(rCodeW(rCode)); + break; + + case 2: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeL(rCode) & 0x80000000); + rCodeL(rCode) <<= 1; + if (FLAG_C) rCodeL(rCode) |= 1; + } + SETFLAG_S(rCodeL(rCode) & 0x80000000); + SETFLAG_Z(rCodeL(rCode) == 0); + cycles = 8 + (2*sa); + break; + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RRC A,r +void regRRCA() +{ + int i; + uint8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeB(rCode) & 1); + rCodeB(rCode) >>= 1; + if (FLAG_C) rCodeB(rCode) |= 0x80; + } + SETFLAG_S(rCodeB(rCode) & 0x80); + SETFLAG_Z(rCodeB(rCode) == 0); + parityB(rCodeB(rCode)); + cycles = 6 + (2*sa); + break; + + case 1: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeW(rCode) & 1); + rCodeW(rCode) >>= 1; + if (FLAG_C) rCodeW(rCode) |= 0x8000; + } + SETFLAG_S(rCodeW(rCode) & 0x8000); + SETFLAG_Z(rCodeW(rCode) == 0); + parityW(rCodeW(rCode)); + cycles = 6 + (2*sa); + break; + + case 2: for (i = 0; i < sa; i++) + { + SETFLAG_C(rCodeL(rCode) & 1); + rCodeL(rCode) >>= 1; + if (FLAG_C) rCodeL(rCode) |= 0x80000000; + } + SETFLAG_S(rCodeL(rCode) & 0x80000000); + SETFLAG_Z(rCodeL(rCode) == 0); + cycles = 8 + (2*sa); + break; + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RL A,r +void regRLA() +{ + int i; + bool tempC; + uint8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: { uint8 result; + for (i = 0; i < sa; i++) + { + result = rCodeB(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x80); + result <<= 1; + if (tempC) result |= 1; + rCodeB(rCode) = result; + } + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + cycles = 6 + (2*sa); + parityB(result); + break; } + + case 1: { uint16 result; + for (i = 0; i < sa; i++) + { + result = rCodeW(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x8000); + result <<= 1; + if (tempC) result |= 1; + rCodeW(rCode) = result; + } + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + cycles = 6 + (2*sa); + parityW(result); + break; } + + case 2: { uint32 result; + for (i = 0; i < sa; i++) + { + result = rCodeL(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x80000000); + result <<= 1; + if (tempC) result |= 1; + rCodeL(rCode) = result; + } + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + cycles = 8 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== RR A,r +void regRRA() +{ + int i; + bool tempC; + uint8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + + switch(size) + { + case 0: { uint8 result; + for (i = 0; i < sa; i++) + { + result = rCodeB(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x01); + result >>= 1; + if (tempC) result |= 0x80; + rCodeB(rCode) = result; + } + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + cycles = 6 + (2*sa); + parityB(result); + break; } + + case 1: { uint16 result; + for (i = 0; i < sa; i++) + { + result = rCodeW(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x01); + result >>= 1; + if (tempC) result |= 0x8000; + rCodeW(rCode) = result; + } + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + cycles = 6 + (2*sa); + parityW(result); + break; } + + case 2: { uint32 result; + for (i = 0; i < sa; i++) + { + result = rCodeL(rCode); + tempC = FLAG_C; + SETFLAG_C(result & 0x01); + result >>= 1; + if (tempC) result |= 0x80000000; + rCodeL(rCode) = result; + } + SETFLAG_S(result & 0x80000000); + SETFLAG_Z(result == 0); + cycles = 8 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SLA A,r +void regSLAA() +{ + int8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { int8 result, data = (int8)rCodeB(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80); + result <<= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { int16 result, data = (int16)rCodeW(rCode); + result = (data << sa); + SETFLAG_C(result & 0x8000); + result <<= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { int32 result, data = (int32)rCodeL(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80000000); + result <<= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SRA A,r +void regSRAA() +{ + int8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { int8 data = (int8)rCodeB(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { int16 data = (int16)rCodeW(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { int32 data = (int32)rCodeL(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SLL A,r +void regSLLA() +{ + uint8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { uint8 result, data = rCodeB(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80); + result <<= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { uint16 result, data = rCodeW(rCode); + result = (data << sa); + SETFLAG_C(result & 0x8000); + result <<= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { uint32 result, data = rCodeL(rCode); + result = (data << sa); + SETFLAG_C(result & 0x80000000); + result <<= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== SRL A,r +void regSRLA() +{ + uint8 sa = REGA & 0xF; + if (sa == 0) sa = 16; + sa--; + + switch(size) + { + case 0: { uint8 data = rCodeB(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80); + rCodeB(rCode) = result; + SETFLAG_Z(result == 0); + parityB(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 1: { uint16 data = rCodeW(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x8000); + rCodeW(rCode) = result; + SETFLAG_Z(result == 0); + parityW(result); + cycles = 6 + 2 + (2*sa); + break; } + + case 2: { uint32 data = rCodeL(rCode), result; + result = (data >> sa); + SETFLAG_C(result & 1); + result >>= 1; + SETFLAG_S(result & 0x80000000); + rCodeL(rCode) = result; + SETFLAG_Z(result == 0); + cycles = 8 + 2 + (2*sa); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; +} + +}; + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.h new file mode 100644 index 0000000000..e98476c1f3 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_reg.h @@ -0,0 +1,305 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_reg.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_REG__ +#define __TLCS900H_REG__ +//========================================================================= + +namespace TLCS900H +{ + +//===== LD r,# +void regLDi(void); + +//===== PUSH r +void regPUSH(void); + +//===== POP r +void regPOP(void); + +//===== CPL r +void regCPL(void); + +//===== NEG r +void regNEG(void); + +//===== MUL rr,# +void regMULi(void); + +//===== MULS rr,# +void regMULSi(void); + +//===== DIV rr,# +void regDIVi(void); + +//===== DIVS rr,# +void regDIVSi(void); + +//===== LINK r,dd +void regLINK(void); + +//===== UNLK r +void regUNLK(void); + +//===== BS1F A,r +void regBS1F(void); + +//===== BS1B A,r +void regBS1B(void); + +//===== DAA r +void regDAA(void); + +//===== EXTZ r +void regEXTZ(void); + +//===== EXTS r +void regEXTS(void); + +//===== PAA r +void regPAA(void); + +//===== MIRR r +void regMIRR(void); + +//===== MULA r +void regMULA(void); + +//===== DJNZ r,d +void regDJNZ(void); + +//===== ANDCF #,r +void regANDCFi(void); + +//===== ORCF #,r +void regORCFi(void); + +//===== XORCF #,r +void regXORCFi(void); + +//===== LDCF #,r +void regLDCFi(void); + +//===== STCF #,r +void regSTCFi(void); + +//===== ANDCF A,r +void regANDCFA(void); + +//===== ORCF A,r +void regORCFA(void); + +//===== XORCF A,r +void regXORCFA(void); + +//===== LDCF A,r +void regLDCFA(void); + +//===== STCF A,r +void regSTCFA(void); + +//===== LDC cr,r +void regLDCcrr(void); + +//===== LDC r,cr +void regLDCrcr(void); + +//===== RES #,r +void regRES(void); + +//===== SET #,r +void regSET(void); + +//===== CHG #,r +void regCHG(void); + +//===== BIT #,r +void regBIT(void); + +//===== TSET #,r +void regTSET(void); + +//===== MINC1 #,r +void regMINC1(void); + +//===== MINC2 #,r +void regMINC2(void); + +//===== MINC4 #,r +void regMINC4(void); + +//===== MDEC1 #,r +void regMDEC1(void); + +//===== MDEC2 #,r +void regMDEC2(void); + +//===== MDEC4 #,r +void regMDEC4(void); + +//===== MUL RR,r +void regMUL(void); + +//===== MULS RR,r +void regMULS(void); + +//===== DIV RR,r +void regDIV(void); + +//===== DIVS RR,r +void regDIVS(void); + +//===== INC #3,r +void regINC(void); + +//===== DEC #3,r +void regDEC(void); + +//===== SCC cc,r +void regSCC(void); + +//===== LD R,r +void regLDRr(void); + +//===== LD r,R +void regLDrR(void); + +//===== ADD R,r +void regADD(void); + +//===== ADC R,r +void regADC(void); + +//===== SUB R,r +void regSUB(void); + +//===== SBC R,r +void regSBC(void); + +//===== LD r,#3 +void regLDr3(void); + +//===== EX R,r +void regEX(void); + +//===== ADD r,# +void regADDi(void); + +//===== ADC r,# +void regADCi(void); + +//===== SUB r,# +void regSUBi(void); + +//===== SBC r,# +void regSBCi(void); + +//===== CP r,# +void regCPi(void); + +//===== AND r,# +void regANDi(void); + +//===== OR r,# +void regORi(void); + +//===== XOR r,# +void regXORi(void); + +//===== AND R,r +void regAND(void); + +//===== OR R,r +void regOR(void); + +//===== XOR R,r +void regXOR(void); + +//===== CP r,#3 +void regCPr3(void); + +//===== CP R,r +void regCP(void); + +//===== RLC #,r +void regRLCi(void); + +//===== RRC #,r +void regRRCi(void); + +//===== RL #,r +void regRLi(void); + +//===== RR #,r +void regRRi(void); + +//===== SLA #,r +void regSLAi(void); + +//===== SRA #,r +void regSRAi(void); + +//===== SLL #,r +void regSLLi(void); + +//===== SRL #,r +void regSRLi(void); + +//===== RLC A,r +void regRLCA(void); + +//===== RRC A,r +void regRRCA(void); + +//===== RL A,r +void regRLA(void); + +//===== RR A,r +void regRRA(void); + +//===== SLA A,r +void regSLAA(void); + +//===== SRA A,r +void regSRAA(void); + +//===== SLL A,r +void regSLLA(void); + +//===== SRL A,r +void regSRLA(void); + +}; + +//========================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.cpp new file mode 100644 index 0000000000..3b03098467 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.cpp @@ -0,0 +1,428 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_single.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +22 JUL 2002 - neopop_uk +======================================= +- Removed setting the register file pointer to 3 in the SWI instruction + This has fixed "Metal Slug 2" and flash saving in many games. + +26 JUL 2002 - neopop_uk +======================================= +- Prefixed all instruction functions with "sng" to avoid a repeat of the + the 'EX' fiasco. + +30 JUL 2002 - neopop_uk +======================================= +- Um... SWI doesn't cause a problem if IFF is set to 3... why did +"Metal Slug 2" start working??? + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_interpret.h" +#include "TLCS900h_registers.h" +#include "mem.h" +#include "interrupt.h" + +namespace TLCS900H +{ + +//========================================================================= + +//===== NOP +void sngNOP() +{ + cycles = 2; +} + +//===== NORMAL +void sngNORMAL() +{ + //Not supported + cycles = 4; +} + +//===== PUSH SR +void sngPUSHSR() +{ + push16(sr); + cycles = 4; +} + +//===== POP SR +void sngPOPSR() +{ + sr = pop16(); changedSP(); + cycles = 6; +} + +//===== MAX +void sngMAX() +{ + //Not supported + cycles = 4; +} + +//===== HALT +void sngHALT() +{ + MDFN_printf("CPU halt requested and ignored.\nPlease send me a saved state."); + cycles = 8; +} + +//===== EI #3 +void sngEI() +{ + setStatusIFF(FETCH8); + int_check_pending(); + cycles = 5; +} + +//===== RETI +void sngRETI() +{ + uint16 temp = pop16(); + pc = pop32(); + sr = temp; changedSP(); + cycles = 12; +} + +//===== LD (n), n +void sngLD8_8() +{ + uint8 dst = FETCH8; + uint8 src = FETCH8; + storeB(dst, src); + cycles = 5; +} + +//===== PUSH n +void sngPUSH8() +{ + uint8 data = FETCH8; + push8(data); + cycles = 4; +} + +//===== LD (n), nn +void sngLD8_16() +{ + uint8 dst = FETCH8; + uint16 src = fetch16(); + storeW(dst, src); + cycles = 6; +} + +//===== PUSH nn +void sngPUSH16() +{ + push16(fetch16()); + cycles = 5; +} + +//===== INCF +void sngINCF() +{ + setStatusRFP(((sr & 0x300) >> 8) + 1); + cycles = 2; +} + +//===== DECF +void sngDECF() +{ + setStatusRFP(((sr & 0x300) >> 8) - 1); + cycles = 2; +} + +//===== RET condition +void sngRET() +{ + pc = pop32(); + cycles = 9; +} + +//===== RETD dd +void sngRETD() +{ + int16 d = (int16)fetch16(); + pc = pop32(); + REGXSP += d; + cycles = 9; +} + +//===== RCF +void sngRCF() +{ + SETFLAG_N0; + SETFLAG_V0; + SETFLAG_C0; + cycles = 2; +} + +//===== SCF +void sngSCF() +{ + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C1; + cycles = 2; +} + +//===== CCF +void sngCCF() +{ + SETFLAG_N0; + SETFLAG_C(!FLAG_C); + cycles = 2; +} + +//===== ZCF +void sngZCF() +{ + SETFLAG_N0; + SETFLAG_C(!FLAG_Z); + cycles = 2; +} + +//===== PUSH A +void sngPUSHA() +{ + push8(REGA); + cycles = 3; +} + +//===== POP A +void sngPOPA() +{ + REGA = pop8(); + cycles = 4; +} + +//===== EX F,F' +void sngEX() +{ + uint8 f = sr & 0xFF; + sr = (sr & 0xFF00) | f_dash; + f_dash = f; + cycles = 2; +} + +//===== LDF #3 +void sngLDF() +{ + setStatusRFP(FETCH8); + cycles = 2; +} + +//===== PUSH F +void sngPUSHF() +{ + push8(sr & 0xFF); + cycles = 3; +} + +//===== POP F +void sngPOPF() +{ + sr = (sr & 0xFF00) | pop8(); + cycles = 4; +} + +//===== JP nn +void sngJP16() +{ + pc = fetch16(); + cycles = 7; +} + +//===== JP nnn +void sngJP24() +{ + pc = fetch24(); + cycles = 7; +} + +//===== CALL #16 +void sngCALL16() +{ + uint32 target = fetch16(); + push32(pc); + pc = target; + cycles = 12; +} + +//===== CALL #24 +void sngCALL24() +{ + uint32 target = fetch24(); + push32(pc); + pc = target; + cycles = 12; +} + +//===== CALR $+3+d16 +void sngCALR() +{ + int16 displacement = (int16)fetch16(); + uint32 target = pc + displacement; + push32(pc); + pc = target; + cycles = 12; +} + +//===== LD R, n +void sngLDB() +{ + regB(first & 7) = FETCH8; + cycles = 2; +} + +//===== PUSH RR +void sngPUSHW() +{ + push16(regW(first & 7)); + cycles = 3; +} + +//===== LD RR, nn +void sngLDW() +{ + regW(first & 7) = fetch16(); + cycles = 3; +} + +//===== PUSH XRR +void sngPUSHL() +{ + push32(regL(first & 7)); + cycles = 5; +} + +//===== LD XRR, nnnn +void sngLDL() +{ + regL(first & 7) = fetch32(); + cycles = 5; +} + +//===== POP RR +void sngPOPW() +{ + regW(first & 7) = pop16(); + cycles = 4; +} + +//===== POP XRR +void sngPOPL() +{ + regL(first & 7) = pop32(); + cycles = 6; +} + +//===== JR cc,PC + d +void sngJR() +{ + if (conditionCode(first & 0xF)) + { + int8 displacement = (int8)FETCH8; + + cycles = 8; + pc += displacement; + } + else + { + cycles = 4; + FETCH8; + } +} + +//===== JR cc,PC + dd +void sngJRL() +{ + if (conditionCode(first & 0xF)) + { + int16 displacement = (int16)fetch16(); + cycles = 8; + pc += displacement; + } + else + { + cycles = 4; + fetch16(); + } +} + +//===== LDX dst,src +void sngLDX() +{ + uint8 dst, src; + + FETCH8; //00 + dst = FETCH8; //#8 + FETCH8; //00 + src = FETCH8; //# + FETCH8; //00 + + storeB(dst, src); + cycles = 9; +} + +//===== SWI num +void sngSWI() +{ + cycles = 16; + + printf("SWI: %02x\n", first & 0x7); + switch(first & 7) + { + //System Call + case 1: push32(pc); + pc = loadL(0xFFFE00 + ((rCodeB(0x31) & 0x1F) << 2)); + break; + + case 3: interrupt(0); //SWI 3 + break; + + case 4: interrupt(1); //SWI 4 + break; + + case 5: interrupt(2); //SWI 5 + break; + + case 6: interrupt(3); //SWI 6 + break; + + default: instruction_error("SWI %d is not valid.", first & 7); + break; + } +} +}; +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.h new file mode 100644 index 0000000000..c1f865ff8b --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_single.h @@ -0,0 +1,170 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_single.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_SINGLE__ +#define __TLCS900H_SINGLE__ +//========================================================================= + +namespace TLCS900H +{ + +//===== NOP +void sngNOP(void); + +//===== NORMAL +void sngNORMAL(void); + +//===== PUSH SR +void sngPUSHSR(void); + +//===== POP SR +void sngPOPSR(void); + +//===== MAX +void sngMAX(void); + +//===== HALT +void sngHALT(void); + +//===== EI #3 +void sngEI(void); + +//===== RETI +void sngRETI(void); + +//===== LD (n), n +void sngLD8_8(void); + +//===== PUSH n +void sngPUSH8(void); + +//===== LD (n), nn +void sngLD8_16(void); + +//===== PUSH nn +void sngPUSH16(void); + +//===== INCF +void sngINCF(void); + +//===== DECF +void sngDECF(void); + +//===== RET condition +void sngRET(void); + +//===== RETD dd +void sngRETD(void); + +//===== RCF +void sngRCF(void); + +//===== SCF +void sngSCF(void); + +//===== CCF +void sngCCF(void); + +//===== ZCF +void sngZCF(void); + +//===== PUSH A +void sngPUSHA(void); + +//===== POP A +void sngPOPA(void); + +//===== EX F,F' +void sngEX(void); + +//===== LDF #3 +void sngLDF(void); + +//===== PUSH F +void sngPUSHF(void); + +//===== POP F +void sngPOPF(void); + +//===== JP nn +void sngJP16(void); + +//===== JP nnn +void sngJP24(void); + +//===== CALL #16 +void sngCALL16(void); + +//===== CALL #24 +void sngCALL24(void); + +//===== CALR $+3+d16 +void sngCALR(void); + +//===== LD R, n +void sngLDB(void); + +//===== PUSH RR +void sngPUSHW(void); + +//===== LD RR, nn +void sngLDW(void); + +//===== PUSH XRR +void sngPUSHL(void); + +//===== LD XRR, nnnn +void sngLDL(void); + +//===== POP RR +void sngPOPW(void); + +//===== POP XRR +void sngPOPL(void); + +//===== JR cc,PC + d +void sngJR(void); + +//===== JR cc,PC + dd +void sngJRL(void); + +//===== LDX dst,src +void sngLDX(void); + +//===== SWI num +void sngSWI(void); + +}; + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.cpp new file mode 100644 index 0000000000..69d1a2710c --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.cpp @@ -0,0 +1,1266 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_src.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +24 JUL 2002 - neopop_uk +======================================= +- Fixed S flag in "RRC (mem)" + +25 JUL 2002 - neopop_uk +======================================= +- Removed unneeded Long mode from EX. + +28 JUL 2002 - neopop_uk +======================================= +- Improved the LDIR/LDDR/CPIR/CPDR instructions so that they + finish with the correct register settings, even if there is + a memory error. +- Converted DIV/DIVS to use the generic function + +16 AUG 2002 - neopop_uk +======================================= +- Replaced 'second & 7' with 'R', clearer, faster - and for some reason + more accurate... oh well! +- Fixed V flag emulation of INC/DEC, fixes "Cotton" menus + +21 AUG 2002 - neopop_uk +======================================= +- Fixed "RR (mem)" - It was actually the [REG] version that hadn't been + changed to use memory accesses! + +30 AUG 2002 - neopop_uk +======================================= +- Fixed "DIV RR,(mem)" in long mode, wrong operand size. + +04 SEP 2002 - neopop_uk +======================================= +- Fixed GCC compatibility. + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_interpret.h" +#include "TLCS900h_registers.h" +#include "mem.h" + +namespace TLCS900H +{ + +//========================================================================= + +//===== PUSH (mem) +void srcPUSH() +{ + switch(size) + { + case 0: push8(loadB(mem)); break; + case 1: push16(loadW(mem)); break; + } + cycles = 7; +} + +//===== RLD A,(mem) +void srcRLD() +{ + uint8 al = REGA & 0xF, m, mh, ml; + + m = loadB(mem); + mh = (m & 0xF0) >> 4; + ml = (m & 0x0F) << 4; + + REGA = (REGA & 0xF0) | mh; + storeB(mem, ml | al); + + SETFLAG_S(REGA & 0x80); + SETFLAG_Z(REGA == 0); + SETFLAG_H0 + SETFLAG_N0 + parityB(REGA); + + cycles = 12; +} + +//===== RRD A,(mem) +void srcRRD() +{ + uint8 al = (REGA & 0xF) << 4, m, mh, ml; + + m = loadB(mem); + mh = (m & 0xF0) >> 4; + ml = m & 0x0F; + + REGA = (REGA & 0xF0) | ml; + storeB(mem, al | mh); + + SETFLAG_S(REGA & 0x80); + SETFLAG_Z(REGA == 0); + SETFLAG_H0 + SETFLAG_N0 + parityB(REGA); + + cycles = 12; +} + +//===== LDI +void srcLDI() +{ + uint8 dst = 2/*XDE*/, src = 3/*XHL*/; + if ((first & 0xF) == 5) { dst = 4/*XIX*/; src = 5/*XIY*/; } + + switch(size) + { + case 0: + storeB(regL(dst), loadB(regL(src))); + regL(dst) += 1; + regL(src) += 1; + break; + + case 1: + storeW(regL(dst), loadW(regL(src))); + regL(dst) += 2; + regL(src) += 2; + break; + } + + REGBC --; + SETFLAG_V(REGBC); + + SETFLAG_H0; + SETFLAG_N0; + cycles = 10; +} + +//===== LDIR +void srcLDIR() +{ + uint8 dst = 2/*XDE*/, src = 3/*XHL*/; + if ((first & 0xF) == 5) { dst = 4/*XIX*/; src = 5/*XIY*/; } + + cycles = 10; + + do + { + switch(size) + { + case 0: if (debug_abort_memory == FALSE) + storeB(regL(dst), loadB(regL(src))); + regL(dst) += 1; + regL(src) += 1; + break; + + case 1: if (debug_abort_memory == FALSE) + storeW(regL(dst), loadW(regL(src))); + regL(dst) += 2; + regL(src) += 2; + break; + } + + REGBC --; + SETFLAG_V(REGBC); + + cycles += 14; + } + while (FLAG_V); + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== LDD +void srcLDD() +{ + uint8 dst = 2/*XDE*/, src = 3/*XHL*/; + if ((first & 0xF) == 5) { dst = 4/*XIX*/; src = 5/*XIY*/; } + + switch(size) + { + case 0: + storeB(regL(dst), loadB(regL(src))); + regL(dst) -= 1; + regL(src) -= 1; + break; + + case 1: + storeW(regL(dst), loadW(regL(src))); + regL(dst) -= 2; + regL(src) -= 2; + break; + } + + REGBC --; + SETFLAG_V(REGBC); + + SETFLAG_H0; + SETFLAG_N0; + cycles = 10; +} + +//===== LDDR +void srcLDDR() +{ + uint8 dst = 2/*XDE*/, src = 3/*XHL*/; + if ((first & 0xF) == 5) { dst = 4/*XIX*/; src = 5/*XIY*/; } + + cycles = 10; + + do + { + switch(size) + { + case 0: + if (debug_abort_memory == FALSE) + storeB(regL(dst), loadB(regL(src))); + regL(dst) -= 1; + regL(src) -= 1; + break; + + case 1: + if (debug_abort_memory == FALSE) + storeW(regL(dst), loadW(regL(src))); + regL(dst) -= 2; + regL(src) -= 2; + break; + } + + REGBC --; + SETFLAG_V(REGBC); + + cycles += 14; + } + while (FLAG_V); + + SETFLAG_H0; + SETFLAG_N0; +} + +//===== CPI +void srcCPI() +{ + uint8 R = first & 7; + + switch(size) + { + case 0: generic_SUB_B(REGA, loadB(regL(R))); + regL(R) ++; break; + + case 1: generic_SUB_W(REGWA, loadW(regL(R))); + regL(R) += 2; break; + } + + REGBC --; + SETFLAG_V(REGBC); + + cycles = 8; +} + +//===== CPIR +void srcCPIR() +{ + uint8 R = first & 7; + + cycles = 10; + + do + { + switch(size) + { + case 0: if (debug_abort_memory == FALSE) + generic_SUB_B(REGA, loadB(regL(R))); + regL(R) ++; break; + + case 1: if (debug_abort_memory == FALSE) + generic_SUB_W(REGWA, loadW(regL(R))); + regL(R) += 2; break; + } + + REGBC --; + SETFLAG_V(REGBC); + + cycles += 14; + } + while (FLAG_V && (FLAG_Z == FALSE)); +} + +//===== CPD +void srcCPD() +{ + uint8 R = first & 7; + + switch(size) + { + case 0: generic_SUB_B(REGA, loadB(regL(R))); + regL(R) --; break; + + case 1: generic_SUB_W(REGWA, loadW(regL(R))); + regL(R) -= 2; break; + } + + REGBC --; + SETFLAG_V(REGBC); + + cycles = 8; +} + +//===== CPDR +void srcCPDR() +{ + uint8 R = first & 7; + + cycles = 10; + + do + { + switch(size) + { + case 0: if (debug_abort_memory == FALSE) + generic_SUB_B(REGA, loadB(regL(R))); + regL(R) -= 1; break; + + case 1: if (debug_abort_memory == FALSE) + generic_SUB_W(REGWA, loadW(regL(R))); + regL(R) -= 2; break; + } + + REGBC --; + SETFLAG_V(REGBC); + + cycles += 14; + } + while (FLAG_V && (FLAG_Z == FALSE)); +} + +//===== LD (nn),(mem) +void srcLD16m() +{ + switch(size) + { + case 0: storeB(fetch16(), loadB(mem)); break; + case 1: storeW(fetch16(), loadW(mem)); break; + } + + cycles = 8; +} + +//===== LD R,(mem) +void srcLD() +{ + switch(size) + { + case 0: regB(R) = loadB(mem); cycles = 4; break; + case 1: regW(R) = loadW(mem); cycles = 4; break; + case 2: regL(R) = loadL(mem); cycles = 6; break; + } +} + +//===== EX (mem),R +void srcEX() +{ + switch(size) + { + case 0: { uint8 temp = regB(R); + regB(R) = loadB(mem); + storeB(mem, temp); break; } + + case 1: { uint16 temp = regW(R); + regW(R) = loadW(mem); + storeW(mem, temp); break; } + } + + cycles = 6; +} + +//===== ADD (mem),# +void srcADDi() +{ + switch(size) + { + case 0: storeB(mem, generic_ADD_B(loadB(mem), FETCH8)); cycles = 7;break; + case 1: storeW(mem, generic_ADD_W(loadW(mem), fetch16())); cycles = 8;break; + } +} + +//===== ADC (mem),# +void srcADCi() +{ + switch(size) + { + case 0: storeB(mem, generic_ADC_B(loadB(mem), FETCH8)); cycles = 7;break; + case 1: storeW(mem, generic_ADC_W(loadW(mem), fetch16())); cycles = 8;break; + } +} + +//===== SUB (mem),# +void srcSUBi() +{ + switch(size) + { + case 0: storeB(mem, generic_SUB_B(loadB(mem), FETCH8)); cycles = 7;break; + case 1: storeW(mem, generic_SUB_W(loadW(mem), fetch16())); cycles = 8;break; + } +} + +//===== SBC (mem),# +void srcSBCi() +{ + switch(size) + { + case 0: storeB(mem, generic_SBC_B(loadB(mem), FETCH8)); cycles = 7;break; + case 1: storeW(mem, generic_SBC_W(loadW(mem), fetch16())); cycles = 8;break; + } +} + +//===== AND (mem),# +void srcANDi() +{ + switch(size) + { + case 0: { uint8 result = loadB(mem) & FETCH8; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + cycles = 7; + break; } + + case 1: { uint16 result = loadW(mem) & fetch16(); + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + cycles = 8; + break; } + } + + SETFLAG_H1; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== OR (mem),# +void srcORi() +{ + switch(size) + { + case 0: { uint8 result = loadB(mem) | FETCH8; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + cycles = 7; + break; } + + case 1: { uint16 result = loadW(mem) | fetch16(); + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + cycles = 8; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== XOR (mem),# +void srcXORi() +{ + switch(size) + { + case 0: { uint8 result = loadB(mem) ^ FETCH8; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + cycles = 7; + break; } + + case 1: { uint16 result = loadW(mem) ^ fetch16(); + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + cycles = 8; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== CP (mem),# +void srcCPi() +{ + switch(size) + { + case 0: generic_SUB_B(loadB(mem), FETCH8); break; + case 1: generic_SUB_W(loadW(mem), fetch16()); break; + } + + cycles = 6; +} + +//===== MUL RR,(mem) +void srcMUL() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("src: MUL bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: rCodeW(target) = (rCodeW(target) & 0xFF) * loadB(mem); + cycles = 18; break; + case 1: rCodeL(target) = (rCodeL(target) & 0xFFFF) * loadW(mem); + cycles = 26; break; + } +} + +//===== MULS RR,(mem) +void srcMULS() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("src: MUL bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: rCodeW(target) = (int8)(rCodeW(target) & 0xFF) * (int8)loadB(mem); + cycles = 18; break; + case 1: rCodeL(target) = (int16)(rCodeL(target) & 0xFFFF) * (int16)loadW(mem); + cycles = 26; break; + } +} + +//===== DIV RR,(mem) +void srcDIV() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("src: DIV bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: { rCodeW(target) = generic_DIV_B(rCodeW(target), loadB(mem)); + cycles = 22; + break; } + + case 1: { rCodeL(target) = generic_DIV_W(rCodeL(target), loadW(mem)); + cycles = 30; + break; } + } +} + +//===== DIVS RR,(mem) +void srcDIVS() +{ + uint8 target = get_RR_Target(); + if (target == 0x80) + { + instruction_error("src: DIVS bad \'RR\' dst code"); + return; + } + + switch(size) + { + case 0: { rCodeW(target) = generic_DIVS_B(rCodeW(target), loadB(mem)); + cycles = 24; + break; } + + case 1: { rCodeL(target) = generic_DIVS_W(rCodeL(target), loadW(mem)); + cycles = 32; + break; } + } +} + +//===== INC #3,(mem) +void srcINC() +{ + uint8 val = R; + if (val == 0) + val = 8; + + switch(size) + { + case 0: { uint8 dst = loadB(mem); + uint32 resultC = dst + val; + uint8 half = (dst & 0xF) + val; + uint8 result = (uint8)(resultC & 0xFF); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + SETFLAG_S(result & 0x80); + SETFLAG_N0; + + if (((int8)dst >= 0) && ((int8)result < 0)) + {SETFLAG_V1} else {SETFLAG_V0} + + storeB(mem, result); + break; } + + case 1: { uint16 dst = loadW(mem); + uint32 resultC = dst + val; + uint8 half = (dst & 0xF) + val; + uint16 result = (uint16)(resultC & 0xFFFF); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + SETFLAG_S(result & 0x8000); + SETFLAG_N0; + + if (((int16)dst >= 0) && ((int16)result < 0)) + {SETFLAG_V1} else {SETFLAG_V0} + + storeW(mem, result); + break; } + } + + cycles = 6; +} + +//===== DEC #3,(mem) +void srcDEC() +{ + uint8 val = R; + if (val == 0) + val = 8; + + switch(size) + { + case 0: { uint8 dst = loadB(mem); + uint32 resultC = dst - val; + uint8 half = (dst & 0xF) - val; + uint8 result = (uint8)(resultC & 0xFF); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + SETFLAG_S(result & 0x80); + SETFLAG_N1; + + if (((int8)dst < 0) && ((int8)result >= 0)) + {SETFLAG_V1} else {SETFLAG_V0} + + storeB(mem, result); + break; } + + case 1: { uint16 dst = loadW(mem); + uint32 resultC = dst - val; + uint8 half = (dst & 0xF) - val; + uint16 result = (uint16)(resultC & 0xFFFF); + SETFLAG_Z(result == 0); + SETFLAG_H(half > 0xF); + SETFLAG_S(result & 0x8000); + SETFLAG_N1; + + if (((int16)dst < 0) && ((int16)result >= 0)) + {SETFLAG_V1} else {SETFLAG_V0} + + storeW(mem, result); + break; } + } + + cycles = 6; +} + +//===== RLC (mem) +void srcRLC() +{ + switch(size) + { + case 0: { uint8 result = loadB(mem); + SETFLAG_C(result & 0x80); + result <<= 1; + if (FLAG_C) result |= 1; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result = loadW(mem); + SETFLAG_C(result & 0x8000); + result <<= 1; + if (FLAG_C) result |= 1; + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + + cycles = 8; +} + +//===== RRC (mem) +void srcRRC() +{ + switch(size) + { + case 0: { uint8 data = loadB(mem), result; + SETFLAG_C(data & 1); + result = data >> 1; + if (FLAG_C) result |= 0x80; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 data = loadW(mem), result; + SETFLAG_C(data & 1); + result = data >> 1; + if (FLAG_C) result |= 0x8000; + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + + cycles = 8; +} + +//===== RL (mem) +void srcRL() +{ + bool tempC; + + switch(size) + { + case 0: { uint8 result = loadB(mem); + tempC = FLAG_C; + SETFLAG_C(result & 0x80); + result <<= 1; + if (tempC) result |= 1; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result = loadW(mem); + tempC = FLAG_C; + SETFLAG_C(result & 0x8000); + result <<= 1; + if (tempC) result |= 1; + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + cycles = 8; +} + +//===== RR (mem) +void srcRR() +{ + bool tempC; + + switch(size) + { + case 0: { uint8 result = loadB(mem); + tempC = FLAG_C; + SETFLAG_C(result & 1); + result >>= 1; + if (tempC) result |= 0x80; + storeB(mem, result); + SETFLAG_S(result & 0x80); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result = loadW(mem); + tempC = FLAG_C; + SETFLAG_C(result & 1); + result >>= 1; + if (tempC) result |= 0x8000; + storeW(mem, result); + SETFLAG_S(result & 0x8000); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + cycles = 8; +} + +//===== SLA (mem) +void srcSLA() +{ + switch(size) + { + case 0: { uint8 result, data = loadB(mem); + SETFLAG_C(data & 0x80); + result = ((int8)data << 1); + SETFLAG_S(result & 0x80); + storeB(mem, result); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result, data = loadW(mem); + SETFLAG_C(data & 0x8000); + result = ((int16)data << 1); + SETFLAG_S(result & 0x8000); + storeW(mem, result); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + + cycles = 8; +} + +//===== SRA (mem) +void srcSRA() +{ + switch(size) + { + case 0: { uint8 result, data = loadB(mem); + SETFLAG_C(data & 0x1); + result = ((int8)data >> 1); + SETFLAG_S(result & 0x80); + storeB(mem, result); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result, data = loadW(mem); + SETFLAG_C(data & 0x1); + result = ((int16)data >> 1); + SETFLAG_S(result & 0x8000); + storeW(mem, result); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + + cycles = 8; +} + +//===== SLL (mem) +void srcSLL() +{ + switch(size) + { + case 0: { uint8 result, data = loadB(mem); + SETFLAG_C(data & 0x80); + result = (data << 1); + SETFLAG_S(result & 0x80); + storeB(mem, result); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result, data = loadW(mem); + SETFLAG_C(data & 0x8000); + result = (data << 1); + SETFLAG_S(result & 0x8000); + storeW(mem, result); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + + cycles = 8; +} + +//===== SRL (mem) +void srcSRL() +{ + switch(size) + { + case 0: { uint8 result, data = loadB(mem); + SETFLAG_C(data & 0x01); + result = (data >> 1); + SETFLAG_S(result & 0x80); + storeB(mem, result); + SETFLAG_Z(result == 0); + parityB(result); + break; } + + case 1: { uint16 result, data = loadW(mem); + SETFLAG_C(data & 0x0001); + result = (data >> 1); + SETFLAG_S(result & 0x8000); + storeW(mem, result); + SETFLAG_Z(result == 0); + parityW(result); + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + + cycles = 8; +} + +//===== ADD R,(mem) +void srcADDRm() +{ + switch(size) + { + case 0: regB(R) = generic_ADD_B(regB(R), loadB(mem)); cycles = 4;break; + case 1: regW(R) = generic_ADD_W(regW(R), loadW(mem)); cycles = 4;break; + case 2: regL(R) = generic_ADD_L(regL(R), loadL(mem)); cycles = 6;break; + } +} + +//===== ADD (mem),R +void srcADDmR() +{ + switch(size) + { + case 0: storeB(mem, generic_ADD_B(loadB(mem), regB(R))); cycles = 6;break; + case 1: storeW(mem, generic_ADD_W(loadW(mem), regW(R))); cycles = 6;break; + case 2: storeL(mem, generic_ADD_L(loadL(mem), regL(R))); cycles = 10;break; + } +} + +//===== ADC R,(mem) +void srcADCRm() +{ + switch(size) + { + case 0: regB(R) = generic_ADC_B(regB(R), loadB(mem)); cycles = 4;break; + case 1: regW(R) = generic_ADC_W(regW(R), loadW(mem)); cycles = 4;break; + case 2: regL(R) = generic_ADC_L(regL(R), loadL(mem)); cycles = 6;break; + } +} + +//===== ADC (mem),R +void srcADCmR() +{ + switch(size) + { + case 0: storeB(mem, generic_ADC_B(loadB(mem), regB(R))); cycles = 6;break; + case 1: storeW(mem, generic_ADC_W(loadW(mem), regW(R))); cycles = 6;break; + case 2: storeL(mem, generic_ADC_L(loadL(mem), regL(R))); cycles = 10;break; + } +} + +//===== SUB R,(mem) +void srcSUBRm() +{ + switch(size) + { + case 0: regB(R) = generic_SUB_B(regB(R), loadB(mem)); cycles = 4;break; + case 1: regW(R) = generic_SUB_W(regW(R), loadW(mem)); cycles = 4;break; + case 2: regL(R) = generic_SUB_L(regL(R), loadL(mem)); cycles = 6;break; + } +} + +//===== SUB (mem),R +void srcSUBmR() +{ + switch(size) + { + case 0: storeB(mem, generic_SUB_B(loadB(mem), regB(R))); cycles = 6;break; + case 1: storeW(mem, generic_SUB_W(loadW(mem), regW(R))); cycles = 6;break; + case 2: storeL(mem, generic_SUB_L(loadL(mem), regL(R))); cycles = 10;break; + } +} + +//===== SBC R,(mem) +void srcSBCRm() +{ + switch(size) + { + case 0: regB(R) = generic_SBC_B(regB(R), loadB(mem)); cycles = 4;break; + case 1: regW(R) = generic_SBC_W(regW(R), loadW(mem)); cycles = 4;break; + case 2: regL(R) = generic_SBC_L(regL(R), loadL(mem)); cycles = 6;break; + } +} + +//===== SBC (mem),R +void srcSBCmR() +{ + switch(size) + { + case 0: storeB(mem, generic_SBC_B(loadB(mem), regB(R))); cycles = 6;break; + case 1: storeW(mem, generic_SBC_W(loadW(mem), regW(R))); cycles = 6;break; + case 2: storeL(mem, generic_SBC_L(loadL(mem), regL(R))); cycles = 10;break; + } +} + +//===== AND R,(mem) +void srcANDRm() +{ + switch(size) + { + case 0: { uint8 result = regB(R) & loadB(mem); + regB(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = regW(R) & loadW(mem); + regW(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = regL(R) & loadL(mem); + regL(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 6; + break; } + } + + SETFLAG_H1; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== AND (mem),R +void srcANDmR() +{ + switch(size) + { + case 0: { uint8 result = regB(R) & loadB(mem); + storeB(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 6; + break; } + + case 1: { uint16 result = regW(R) & loadW(mem); + storeW(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 6; + break; } + + case 2: { uint32 result = regL(R) & loadL(mem); + storeL(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 10; + break; } + } + + SETFLAG_H1; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== XOR R,(mem) +void srcXORRm() +{ + switch(size) + { + case 0: { uint8 result = regB(R) ^ loadB(mem); + regB(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = regW(R) ^ loadW(mem); + regW(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = regL(R) ^ loadL(mem); + regL(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 6; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== XOR (mem),R +void srcXORmR() +{ + switch(size) + { + case 0: { uint8 result = regB(R) ^ loadB(mem); + storeB(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 6; + break; } + + case 1: { uint16 result = regW(R) ^ loadW(mem); + storeW(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 6; + break; } + + case 2: { uint32 result = regL(R) ^ loadL(mem); + storeL(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 10; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== OR R,(mem) +void srcORRm() +{ + switch(size) + { + case 0: { uint8 result = regB(R) | loadB(mem); + regB(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 4; + break; } + + case 1: { uint16 result = regW(R) | loadW(mem); + regW(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 4; + break; } + + case 2: { uint32 result = regL(R) | loadL(mem); + regL(R) = result; + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 6; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== OR (mem),R +void srcORmR() +{ + switch(size) + { + case 0: { uint8 result = regB(R) | loadB(mem); + storeB(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80); + parityB(result); + cycles = 6; + break; } + + case 1: { uint16 result = regW(R) | loadW(mem); + storeW(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x8000); + parityW(result); + cycles = 6; + break; } + + case 2: { uint32 result = regL(R) | loadL(mem); + storeL(mem, result); + SETFLAG_Z(result == 0); + SETFLAG_S(result & 0x80000000); + cycles = 10; + break; } + } + + SETFLAG_H0; + SETFLAG_N0; + SETFLAG_C0; +} + +//===== CP R,(mem) +void srcCPRm() +{ + switch(size) + { + case 0: generic_SUB_B(regB(R), loadB(mem)); cycles = 4; break; + case 1: generic_SUB_W(regW(R), loadW(mem)); cycles = 4; break; + case 2: generic_SUB_L(regL(R), loadL(mem)); cycles = 6; break; + } +} + +//===== CP (mem),R +void srcCPmR() +{ + switch(size) + { + case 0: generic_SUB_B(loadB(mem), regB(R)); break; + case 1: generic_SUB_W(loadW(mem), regW(R)); break; + case 2: generic_SUB_L(loadL(mem), regL(R)); break; + } + + cycles = 6; +} +}; +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.h new file mode 100644 index 0000000000..a7d18efa3e --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_interpret_src.h @@ -0,0 +1,200 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_interpret_src.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_SRC__ +#define __TLCS900H_SRC__ +//========================================================================= +namespace TLCS900H +{ + + +//===== PUSH (mem) +void srcPUSH(void); + +//===== RLD A,(mem) +void srcRLD(void); + +//===== RRD A,(mem) +void srcRRD(void); + +//===== LDI +void srcLDI(void); + +//===== LDIR +void srcLDIR(void); + +//===== LDD +void srcLDD(void); + +//===== LDDR +void srcLDDR(void); + +//===== CPI +void srcCPI(void); + +//===== CPIR +void srcCPIR(void); + +//===== CPD +void srcCPD(void); + +//===== CPDR +void srcCPDR(void); + +//===== LD (nn),(mem) +void srcLD16m(void); + +//===== LD R,(mem) +void srcLD(void); + +//===== EX (mem),R +void srcEX(void); + +//===== ADD (mem),# +void srcADDi(void); + +//===== ADC (mem),# +void srcADCi(void); + +//===== SUB (mem),# +void srcSUBi(void); + +//===== SBC (mem),# +void srcSBCi(void); + +//===== AND (mem),# +void srcANDi(void); + +//===== OR (mem),# +void srcORi(void); + +//===== XOR (mem),# +void srcXORi(void); + +//===== CP (mem),# +void srcCPi(void); + +//===== MUL RR,(mem) +void srcMUL(void); + +//===== MULS RR,(mem) +void srcMULS(void); + +//===== DIV RR,(mem) +void srcDIV(void); + +//===== DIVS RR,(mem) +void srcDIVS(void); + +//===== INC #3,(mem) +void srcINC(void); + +//===== DEC #3,(mem) +void srcDEC(void); + +//===== RLC (mem) +void srcRLC(void); + +//===== RRC (mem) +void srcRRC(void); + +//===== RL (mem) +void srcRL(void); + +//===== RR (mem) +void srcRR(void); + +//===== SLA (mem) +void srcSLA(void); + +//===== SRA (mem) +void srcSRA(void); + +//===== SLL (mem) +void srcSLL(void); + +//===== SRL (mem) +void srcSRL(void); + +//===== ADD R,(mem) +void srcADDRm(void); + +//===== ADD (mem),R +void srcADDmR(void); + +//===== ADC R,(mem) +void srcADCRm(void); + +//===== ADC (mem),R +void srcADCmR(void); + +//===== SUB R,(mem) +void srcSUBRm(void); + +//===== SUB (mem),R +void srcSUBmR(void); + +//===== SBC R,(mem) +void srcSBCRm(void); + +//===== SBC (mem),R +void srcSBCmR(void); + +//===== AND R,(mem) +void srcANDRm(void); + +//===== AND (mem),R +void srcANDmR(void); + +//===== XOR R,(mem) +void srcXORRm(void); + +//===== XOR (mem),R +void srcXORmR(void); + +//===== OR R,(mem) +void srcORRm(void); + +//===== OR (mem),R +void srcORmR(void); + +//===== CP R,(mem) +void srcCPRm(void); + +//===== CP (mem),R +void srcCPmR(void); + +}; + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.cpp b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.cpp new file mode 100644 index 0000000000..f08aa5ce28 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.cpp @@ -0,0 +1,205 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +10 AUG 2002 - neopop_uk +======================================= +- Moved default PC setup to the 'reset_registers' function. + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "interrupt.h" +#include "TLCS900h_registers.h" + +namespace TLCS900H +{ + +#ifdef MSB_FIRST +#define BYTE0 3 +#define BYTE1 2 +#define BYTE2 1 +#define BYTE3 0 +#define WORD0 2 +#define WORD1 0 +#else +#define BYTE0 0 +#define BYTE1 1 +#define BYTE2 2 +#define BYTE3 3 +#define WORD0 0 +#define WORD1 2 +#endif + +//============================================================================= + +uint32 pc, gprBank[4][4], gpr[4]; +uint16 sr; +uint8 f_dash; + +//============================================================================= + +//Bank Data +uint8* gprMapB[4][8] = +{ + #include "TLCS900h_registers_mapB.h" +}; + +uint16* gprMapW[4][8] = +{ + #include "TLCS900h_registers_mapW.h" +}; + +uint32* gprMapL[4][8] = +{ + #include "TLCS900h_registers_mapL.h" +}; + +//============================================================================= + +uint32 rErr; + +uint8* regCodeMapB[4][256] = +{ + { + #include "TLCS900h_registers_mapCodeB0.h" + }, + + { + #include "TLCS900h_registers_mapCodeB1.h" + }, + + { + #include "TLCS900h_registers_mapCodeB2.h" + }, + + { + #include "TLCS900h_registers_mapCodeB3.h" + } +}; + +uint16* regCodeMapW[4][128] = +{ + { + #include "TLCS900h_registers_mapCodeW0.h" + }, + + { + #include "TLCS900h_registers_mapCodeW1.h" + }, + + { + #include "TLCS900h_registers_mapCodeW2.h" + }, + + { + #include "TLCS900h_registers_mapCodeW3.h" + } +}; + +uint32* regCodeMapL[4][64] = +{ + { + #include "TLCS900h_registers_mapCodeL0.h" + }, + + { + #include "TLCS900h_registers_mapCodeL1.h" + }, + + { + #include "TLCS900h_registers_mapCodeL2.h" + }, + + { + #include "TLCS900h_registers_mapCodeL3.h" + } +}; + +//============================================================================= + +uint8 statusIFF(void) +{ + uint8 iff = (sr & 0x7000) >> 12; + + if (iff == 1) + return 0; + else + return iff; +} + +void setStatusIFF(uint8 iff) +{ + sr = (sr & 0x8FFF) | ((iff & 0x7) << 12); +} + +//============================================================================= + +uint8 statusRFP; + +void setStatusRFP(uint8 rfp) +{ + sr = (sr & 0xF8FF) | ((rfp & 0x3) << 8); + changedSP(); +} + +void changedSP(void) +{ + //Store global RFP for optimisation. + statusRFP = ((sr & 0x300) >> 8); + int_check_pending(); +} + +//============================================================================= + +void reset_registers(void) +{ + memset(gprBank, 0, sizeof(gprBank)); + memset(gpr, 0, sizeof(gpr)); + + if (ngpc_rom.data) + pc = le32toh(rom_header->startPC) & 0xFFFFFF; + else + pc = 0xFFFFFE; + + sr = 0xF800; // = %11111000???????? (?) are undefined in the manual) + changedSP(); + + f_dash = 00; + + rErr = RERR_VALUE; + + REGXSP = 0x00006C00; //Confirmed from BIOS, + //immediately changes value from default of 0x100 +} + +}; + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.h new file mode 100644 index 0000000000..5cf35eed7c --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers.h @@ -0,0 +1,126 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +21 AUG 2002 - neopop_uk +======================================= +- Fixed potential precidence problems in regX and rCodeX by using ()'s + +//--------------------------------------------------------------------------- +*/ + +#ifndef __TLCS900H_REGISTERS__ +#define __TLCS900H_REGISTERS__ +//============================================================================= + +namespace TLCS900H +{ + +void reset_registers(void); +void dump_registers_TLCS900h(void); + +//The value read by bad rCodes, leave 0, improves "Gals Fighters" +#define RERR_VALUE 0 + +//============================================================================= + +extern uint32 pc; +extern uint16 sr; +extern uint8 f_dash; + +extern uint32 gprBank[4][4], gpr[4]; + +extern uint32 rErr; + +extern uint8 statusRFP; + +//GPR Access +extern uint8* gprMapB[4][8]; +extern uint16* gprMapW[4][8]; +extern uint32* gprMapL[4][8]; + +#define regB(x) (*(gprMapB[statusRFP][(x)])) +#define regW(x) (*(gprMapW[statusRFP][(x)])) +#define regL(x) (*(gprMapL[statusRFP][(x)])) + +//Reg.Code Access +extern uint8* regCodeMapB[4][256]; +extern uint16* regCodeMapW[4][128]; +extern uint32* regCodeMapL[4][64]; + +#define rCodeB(r) (*(regCodeMapB[statusRFP][(r)])) +#define rCodeW(r) (*(regCodeMapW[statusRFP][(r) >> 1])) +#define rCodeL(r) (*(regCodeMapL[statusRFP][(r) >> 2])) + +//Common Registers +#define REGA (regB(1)) +#define REGWA (regW(0)) +#define REGBC (regW(1)) +#define REGXSP (gpr[3]) + +//============================================================================= + +uint8 statusIFF(void); +void setStatusIFF(uint8 iff); + +void setStatusRFP(uint8 rfp); +void changedSP(void); + +#define FLAG_S ((sr & 0x0080) >> 7) +#define FLAG_Z ((sr & 0x0040) >> 6) +#define FLAG_H ((sr & 0x0010) >> 4) +#define FLAG_V ((sr & 0x0004) >> 2) +#define FLAG_N ((sr & 0x0002) >> 1) +#define FLAG_C (sr & 1) + +#define SETFLAG_S(s) { uint16 sr1 = sr & 0xFF7F; if (s) sr1 |= 0x0080; sr = sr1; } +#define SETFLAG_Z(z) { uint16 sr1 = sr & 0xFFBF; if (z) sr1 |= 0x0040; sr = sr1; } +#define SETFLAG_H(h) { uint16 sr1 = sr & 0xFFEF; if (h) sr1 |= 0x0010; sr = sr1; } +#define SETFLAG_V(v) { uint16 sr1 = sr & 0xFFFB; if (v) sr1 |= 0x0004; sr = sr1; } +#define SETFLAG_N(n) { uint16 sr1 = sr & 0xFFFD; if (n) sr1 |= 0x0002; sr = sr1; } +#define SETFLAG_C(c) { uint16 sr1 = sr & 0xFFFE; if (c) sr1 |= 0x0001; sr = sr1; } + +#define SETFLAG_S0 { sr &= 0xFF7F; } +#define SETFLAG_Z0 { sr &= 0xFFBF; } +#define SETFLAG_H0 { sr &= 0xFFEF; } +#define SETFLAG_V0 { sr &= 0xFFFB; } +#define SETFLAG_N0 { sr &= 0xFFFD; } +#define SETFLAG_C0 { sr &= 0xFFFE; } + +#define SETFLAG_S1 { sr |= 0x0080; } +#define SETFLAG_Z1 { sr |= 0x0040; } +#define SETFLAG_H1 { sr |= 0x0010; } +#define SETFLAG_V1 { sr |= 0x0004; } +#define SETFLAG_N1 { sr |= 0x0002; } +#define SETFLAG_C1 { sr |= 0x0001; } + +}; + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapB.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapB.h new file mode 100644 index 0000000000..61be9766b6 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapB.h @@ -0,0 +1,83 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapB.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //Bank 0 + { + (uint8*)&(gprBank[0][0]) + BYTE1, + (uint8*)&(gprBank[0][0]) + BYTE0, + (uint8*)&(gprBank[0][1]) + BYTE1, + (uint8*)&(gprBank[0][1]) + BYTE0, + (uint8*)&(gprBank[0][2]) + BYTE1, + (uint8*)&(gprBank[0][2]) + BYTE0, + (uint8*)&(gprBank[0][3]) + BYTE1, + (uint8*)&(gprBank[0][3]) + BYTE0, + }, + + //Bank 1 + { + (uint8*)&(gprBank[1][0]) + BYTE1, + (uint8*)&(gprBank[1][0]) + BYTE0, + (uint8*)&(gprBank[1][1]) + BYTE1, + (uint8*)&(gprBank[1][1]) + BYTE0, + (uint8*)&(gprBank[1][2]) + BYTE1, + (uint8*)&(gprBank[1][2]) + BYTE0, + (uint8*)&(gprBank[1][3]) + BYTE1, + (uint8*)&(gprBank[1][3]) + BYTE0, + }, + + //Bank 2 + { + (uint8*)&(gprBank[2][0]) + BYTE1, + (uint8*)&(gprBank[2][0]) + BYTE0, + (uint8*)&(gprBank[2][1]) + BYTE1, + (uint8*)&(gprBank[2][1]) + BYTE0, + (uint8*)&(gprBank[2][2]) + BYTE1, + (uint8*)&(gprBank[2][2]) + BYTE0, + (uint8*)&(gprBank[2][3]) + BYTE1, + (uint8*)&(gprBank[2][3]) + BYTE0, + }, + + //Bank 3 + { + (uint8*)&(gprBank[3][0]) + BYTE1, + (uint8*)&(gprBank[3][0]) + BYTE0, + (uint8*)&(gprBank[3][1]) + BYTE1, + (uint8*)&(gprBank[3][1]) + BYTE0, + (uint8*)&(gprBank[3][2]) + BYTE1, + (uint8*)&(gprBank[3][2]) + BYTE0, + (uint8*)&(gprBank[3][3]) + BYTE1, + (uint8*)&(gprBank[3][3]) + BYTE0, + } + +//============================================================================= + diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB0.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB0.h new file mode 100644 index 0000000000..caa3a4f5a8 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB0.h @@ -0,0 +1,105 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeB0.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + ((uint8*)&gprBank[0][0]) + BYTE0,((uint8*)&gprBank[0][0]) + BYTE1, //BANK 0 + ((uint8*)&gprBank[0][0]) + BYTE2, ((uint8*)&gprBank[0][0]) + BYTE3, + ((uint8*)&gprBank[0][1]) + BYTE0,((uint8*)&gprBank[0][1]) + BYTE1, + ((uint8*)&gprBank[0][1]) + BYTE2, ((uint8*)&gprBank[0][1]) + BYTE3, + ((uint8*)&gprBank[0][2]) + BYTE0,((uint8*)&gprBank[0][2]) + BYTE1, + ((uint8*)&gprBank[0][2]) + BYTE2, ((uint8*)&gprBank[0][2]) + BYTE3, + ((uint8*)&gprBank[0][3]) + BYTE0,((uint8*)&gprBank[0][3]) + BYTE1, + ((uint8*)&gprBank[0][3]) + BYTE2, ((uint8*)&gprBank[0][3]) + BYTE3, + + ((uint8*)&gprBank[1][0]) + BYTE0,((uint8*)&gprBank[1][0]) + BYTE1, //BANK 1 + ((uint8*)&gprBank[1][0]) + BYTE2, ((uint8*)&gprBank[1][0]) + BYTE3, + ((uint8*)&gprBank[1][1]) + BYTE0,((uint8*)&gprBank[1][1]) + BYTE1, + ((uint8*)&gprBank[1][1]) + BYTE2, ((uint8*)&gprBank[1][1]) + BYTE3, + ((uint8*)&gprBank[1][2]) + BYTE0,((uint8*)&gprBank[1][2]) + BYTE1, + ((uint8*)&gprBank[1][2]) + BYTE2, ((uint8*)&gprBank[1][2]) + BYTE3, + ((uint8*)&gprBank[1][3]) + BYTE0,((uint8*)&gprBank[1][3]) + BYTE1, + ((uint8*)&gprBank[1][3]) + BYTE2, ((uint8*)&gprBank[1][3]) + BYTE3, + + ((uint8*)&gprBank[2][0]) + BYTE0,((uint8*)&gprBank[2][0]) + BYTE1, //BANK 2 + ((uint8*)&gprBank[2][0]) + BYTE2, ((uint8*)&gprBank[2][0]) + BYTE3, + ((uint8*)&gprBank[2][1]) + BYTE0,((uint8*)&gprBank[2][1]) + BYTE1, + ((uint8*)&gprBank[2][1]) + BYTE2, ((uint8*)&gprBank[2][1]) + BYTE3, + ((uint8*)&gprBank[2][2]) + BYTE0,((uint8*)&gprBank[2][2]) + BYTE1, + ((uint8*)&gprBank[2][2]) + BYTE2, ((uint8*)&gprBank[2][2]) + BYTE3, + ((uint8*)&gprBank[2][3]) + BYTE0,((uint8*)&gprBank[2][3]) + BYTE1, + ((uint8*)&gprBank[2][3]) + BYTE2, ((uint8*)&gprBank[2][3]) + BYTE3, + + ((uint8*)&gprBank[3][0]) + BYTE0,((uint8*)&gprBank[3][0]) + BYTE1, //BANK 3 + ((uint8*)&gprBank[3][0]) + BYTE2, ((uint8*)&gprBank[3][0]) + BYTE3, + ((uint8*)&gprBank[3][1]) + BYTE0,((uint8*)&gprBank[3][1]) + BYTE1, + ((uint8*)&gprBank[3][1]) + BYTE2, ((uint8*)&gprBank[3][1]) + BYTE3, + ((uint8*)&gprBank[3][2]) + BYTE0,((uint8*)&gprBank[3][2]) + BYTE1, + ((uint8*)&gprBank[3][2]) + BYTE2, ((uint8*)&gprBank[3][2]) + BYTE3, + ((uint8*)&gprBank[3][3]) + BYTE0,((uint8*)&gprBank[3][3]) + BYTE1, + ((uint8*)&gprBank[3][3]) + BYTE2, ((uint8*)&gprBank[3][3]) + BYTE3, + + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + + //Previous Bank + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr, + + //Current Bank + ((uint8*)&gprBank[0][0]) + BYTE0,((uint8*)&gprBank[0][0]) + BYTE1, + ((uint8*)&gprBank[0][0]) + BYTE2, ((uint8*)&gprBank[0][0]) + BYTE3, + ((uint8*)&gprBank[0][1]) + BYTE0,((uint8*)&gprBank[0][1]) + BYTE1, + ((uint8*)&gprBank[0][1]) + BYTE2, ((uint8*)&gprBank[0][1]) + BYTE3, + ((uint8*)&gprBank[0][2]) + BYTE0,((uint8*)&gprBank[0][2]) + BYTE1, + ((uint8*)&gprBank[0][2]) + BYTE2, ((uint8*)&gprBank[0][2]) + BYTE3, + ((uint8*)&gprBank[0][3]) + BYTE0,((uint8*)&gprBank[0][3]) + BYTE1, + ((uint8*)&gprBank[0][3]) + BYTE2, ((uint8*)&gprBank[0][3]) + BYTE3, + + ((uint8*)&gpr[0]) + BYTE0, ((uint8*)&gpr[0]) + BYTE1, + ((uint8*)&gpr[0]) + BYTE2, ((uint8*)&gpr[0]) + BYTE3, + ((uint8*)&gpr[1]) + BYTE0, ((uint8*)&gpr[1]) + BYTE1, + ((uint8*)&gpr[1]) + BYTE2, ((uint8*)&gpr[1]) + BYTE3, + ((uint8*)&gpr[2]) + BYTE0, ((uint8*)&gpr[2]) + BYTE1, + ((uint8*)&gpr[2]) + BYTE2, ((uint8*)&gpr[2]) + BYTE3, + ((uint8*)&gpr[3]) + BYTE0, ((uint8*)&gpr[3]) + BYTE1, + ((uint8*)&gpr[3]) + BYTE2, ((uint8*)&gpr[3]) + BYTE3 + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB1.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB1.h new file mode 100644 index 0000000000..c3d855e18b --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB1.h @@ -0,0 +1,105 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeB1.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + ((uint8*)&gprBank[0][0]) + BYTE0,((uint8*)&gprBank[0][0]) + BYTE1, //BANK 0 + ((uint8*)&gprBank[0][0]) + BYTE2, ((uint8*)&gprBank[0][0]) + BYTE3, + ((uint8*)&gprBank[0][1]) + BYTE0,((uint8*)&gprBank[0][1]) + BYTE1, + ((uint8*)&gprBank[0][1]) + BYTE2, ((uint8*)&gprBank[0][1]) + BYTE3, + ((uint8*)&gprBank[0][2]) + BYTE0,((uint8*)&gprBank[0][2]) + BYTE1, + ((uint8*)&gprBank[0][2]) + BYTE2, ((uint8*)&gprBank[0][2]) + BYTE3, + ((uint8*)&gprBank[0][3]) + BYTE0,((uint8*)&gprBank[0][3]) + BYTE1, + ((uint8*)&gprBank[0][3]) + BYTE2, ((uint8*)&gprBank[0][3]) + BYTE3, + + ((uint8*)&gprBank[1][0]) + BYTE0,((uint8*)&gprBank[1][0]) + BYTE1, //BANK 1 + ((uint8*)&gprBank[1][0]) + BYTE2, ((uint8*)&gprBank[1][0]) + BYTE3, + ((uint8*)&gprBank[1][1]) + BYTE0,((uint8*)&gprBank[1][1]) + BYTE1, + ((uint8*)&gprBank[1][1]) + BYTE2, ((uint8*)&gprBank[1][1]) + BYTE3, + ((uint8*)&gprBank[1][2]) + BYTE0,((uint8*)&gprBank[1][2]) + BYTE1, + ((uint8*)&gprBank[1][2]) + BYTE2, ((uint8*)&gprBank[1][2]) + BYTE3, + ((uint8*)&gprBank[1][3]) + BYTE0,((uint8*)&gprBank[1][3]) + BYTE1, + ((uint8*)&gprBank[1][3]) + BYTE2, ((uint8*)&gprBank[1][3]) + BYTE3, + + ((uint8*)&gprBank[2][0]) + BYTE0,((uint8*)&gprBank[2][0]) + BYTE1, //BANK 2 + ((uint8*)&gprBank[2][0]) + BYTE2, ((uint8*)&gprBank[2][0]) + BYTE3, + ((uint8*)&gprBank[2][1]) + BYTE0,((uint8*)&gprBank[2][1]) + BYTE1, + ((uint8*)&gprBank[2][1]) + BYTE2, ((uint8*)&gprBank[2][1]) + BYTE3, + ((uint8*)&gprBank[2][2]) + BYTE0,((uint8*)&gprBank[2][2]) + BYTE1, + ((uint8*)&gprBank[2][2]) + BYTE2, ((uint8*)&gprBank[2][2]) + BYTE3, + ((uint8*)&gprBank[2][3]) + BYTE0,((uint8*)&gprBank[2][3]) + BYTE1, + ((uint8*)&gprBank[2][3]) + BYTE2, ((uint8*)&gprBank[2][3]) + BYTE3, + + ((uint8*)&gprBank[3][0]) + BYTE0,((uint8*)&gprBank[3][0]) + BYTE1, //BANK 3 + ((uint8*)&gprBank[3][0]) + BYTE2, ((uint8*)&gprBank[3][0]) + BYTE3, + ((uint8*)&gprBank[3][1]) + BYTE0,((uint8*)&gprBank[3][1]) + BYTE1, + ((uint8*)&gprBank[3][1]) + BYTE2, ((uint8*)&gprBank[3][1]) + BYTE3, + ((uint8*)&gprBank[3][2]) + BYTE0,((uint8*)&gprBank[3][2]) + BYTE1, + ((uint8*)&gprBank[3][2]) + BYTE2, ((uint8*)&gprBank[3][2]) + BYTE3, + ((uint8*)&gprBank[3][3]) + BYTE0,((uint8*)&gprBank[3][3]) + BYTE1, + ((uint8*)&gprBank[3][3]) + BYTE2, ((uint8*)&gprBank[3][3]) + BYTE3, + + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + + //Previous Bank + ((uint8*)&gprBank[0][0]) + BYTE0,((uint8*)&gprBank[0][0]) + BYTE1, + ((uint8*)&gprBank[0][0]) + BYTE2, ((uint8*)&gprBank[0][0]) + BYTE3, + ((uint8*)&gprBank[0][1]) + BYTE0,((uint8*)&gprBank[0][1]) + BYTE1, + ((uint8*)&gprBank[0][1]) + BYTE2, ((uint8*)&gprBank[0][1]) + BYTE3, + ((uint8*)&gprBank[0][2]) + BYTE0,((uint8*)&gprBank[0][2]) + BYTE1, + ((uint8*)&gprBank[0][2]) + BYTE2, ((uint8*)&gprBank[0][2]) + BYTE3, + ((uint8*)&gprBank[0][3]) + BYTE0,((uint8*)&gprBank[0][3]) + BYTE1, + ((uint8*)&gprBank[0][3]) + BYTE2, ((uint8*)&gprBank[0][3]) + BYTE3, + + //Current Bank + ((uint8*)&gprBank[1][0]) + BYTE0,((uint8*)&gprBank[1][0]) + BYTE1, + ((uint8*)&gprBank[1][0]) + BYTE2, ((uint8*)&gprBank[1][0]) + BYTE3, + ((uint8*)&gprBank[1][1]) + BYTE0,((uint8*)&gprBank[1][1]) + BYTE1, + ((uint8*)&gprBank[1][1]) + BYTE2, ((uint8*)&gprBank[1][1]) + BYTE3, + ((uint8*)&gprBank[1][2]) + BYTE0,((uint8*)&gprBank[1][2]) + BYTE1, + ((uint8*)&gprBank[1][2]) + BYTE2, ((uint8*)&gprBank[1][2]) + BYTE3, + ((uint8*)&gprBank[1][3]) + BYTE0,((uint8*)&gprBank[1][3]) + BYTE1, + ((uint8*)&gprBank[1][3]) + BYTE2, ((uint8*)&gprBank[1][3]) + BYTE3, + + ((uint8*)&gpr[0]) + BYTE0, ((uint8*)&gpr[0]) + BYTE1, + ((uint8*)&gpr[0]) + BYTE2, ((uint8*)&gpr[0]) + BYTE3, + ((uint8*)&gpr[1]) + BYTE0, ((uint8*)&gpr[1]) + BYTE1, + ((uint8*)&gpr[1]) + BYTE2, ((uint8*)&gpr[1]) + BYTE3, + ((uint8*)&gpr[2]) + BYTE0, ((uint8*)&gpr[2]) + BYTE1, + ((uint8*)&gpr[2]) + BYTE2, ((uint8*)&gpr[2]) + BYTE3, + ((uint8*)&gpr[3]) + BYTE0, ((uint8*)&gpr[3]) + BYTE1, + ((uint8*)&gpr[3]) + BYTE2, ((uint8*)&gpr[3]) + BYTE3 + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB2.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB2.h new file mode 100644 index 0000000000..1a29397deb --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB2.h @@ -0,0 +1,105 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeB2.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + ((uint8*)&gprBank[0][0]) + BYTE0,((uint8*)&gprBank[0][0]) + BYTE1, //BANK 0 + ((uint8*)&gprBank[0][0]) + BYTE2, ((uint8*)&gprBank[0][0]) + BYTE3, + ((uint8*)&gprBank[0][1]) + BYTE0,((uint8*)&gprBank[0][1]) + BYTE1, + ((uint8*)&gprBank[0][1]) + BYTE2, ((uint8*)&gprBank[0][1]) + BYTE3, + ((uint8*)&gprBank[0][2]) + BYTE0,((uint8*)&gprBank[0][2]) + BYTE1, + ((uint8*)&gprBank[0][2]) + BYTE2, ((uint8*)&gprBank[0][2]) + BYTE3, + ((uint8*)&gprBank[0][3]) + BYTE0,((uint8*)&gprBank[0][3]) + BYTE1, + ((uint8*)&gprBank[0][3]) + BYTE2, ((uint8*)&gprBank[0][3]) + BYTE3, + + ((uint8*)&gprBank[1][0]) + BYTE0,((uint8*)&gprBank[1][0]) + BYTE1, //BANK 1 + ((uint8*)&gprBank[1][0]) + BYTE2, ((uint8*)&gprBank[1][0]) + BYTE3, + ((uint8*)&gprBank[1][1]) + BYTE0,((uint8*)&gprBank[1][1]) + BYTE1, + ((uint8*)&gprBank[1][1]) + BYTE2, ((uint8*)&gprBank[1][1]) + BYTE3, + ((uint8*)&gprBank[1][2]) + BYTE0,((uint8*)&gprBank[1][2]) + BYTE1, + ((uint8*)&gprBank[1][2]) + BYTE2, ((uint8*)&gprBank[1][2]) + BYTE3, + ((uint8*)&gprBank[1][3]) + BYTE0,((uint8*)&gprBank[1][3]) + BYTE1, + ((uint8*)&gprBank[1][3]) + BYTE2, ((uint8*)&gprBank[1][3]) + BYTE3, + + ((uint8*)&gprBank[2][0]) + BYTE0,((uint8*)&gprBank[2][0]) + BYTE1, //BANK 2 + ((uint8*)&gprBank[2][0]) + BYTE2, ((uint8*)&gprBank[2][0]) + BYTE3, + ((uint8*)&gprBank[2][1]) + BYTE0,((uint8*)&gprBank[2][1]) + BYTE1, + ((uint8*)&gprBank[2][1]) + BYTE2, ((uint8*)&gprBank[2][1]) + BYTE3, + ((uint8*)&gprBank[2][2]) + BYTE0,((uint8*)&gprBank[2][2]) + BYTE1, + ((uint8*)&gprBank[2][2]) + BYTE2, ((uint8*)&gprBank[2][2]) + BYTE3, + ((uint8*)&gprBank[2][3]) + BYTE0,((uint8*)&gprBank[2][3]) + BYTE1, + ((uint8*)&gprBank[2][3]) + BYTE2, ((uint8*)&gprBank[2][3]) + BYTE3, + + ((uint8*)&gprBank[3][0]) + BYTE0,((uint8*)&gprBank[3][0]) + BYTE1, //BANK 3 + ((uint8*)&gprBank[3][0]) + BYTE2, ((uint8*)&gprBank[3][0]) + BYTE3, + ((uint8*)&gprBank[3][1]) + BYTE0,((uint8*)&gprBank[3][1]) + BYTE1, + ((uint8*)&gprBank[3][1]) + BYTE2, ((uint8*)&gprBank[3][1]) + BYTE3, + ((uint8*)&gprBank[3][2]) + BYTE0,((uint8*)&gprBank[3][2]) + BYTE1, + ((uint8*)&gprBank[3][2]) + BYTE2, ((uint8*)&gprBank[3][2]) + BYTE3, + ((uint8*)&gprBank[3][3]) + BYTE0,((uint8*)&gprBank[3][3]) + BYTE1, + ((uint8*)&gprBank[3][3]) + BYTE2, ((uint8*)&gprBank[3][3]) + BYTE3, + + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + + //Previous Bank + ((uint8*)&gprBank[1][0]) + BYTE0,((uint8*)&gprBank[1][0]) + BYTE1, + ((uint8*)&gprBank[1][0]) + BYTE2, ((uint8*)&gprBank[1][0]) + BYTE3, + ((uint8*)&gprBank[1][1]) + BYTE0,((uint8*)&gprBank[1][1]) + BYTE1, + ((uint8*)&gprBank[1][1]) + BYTE2, ((uint8*)&gprBank[1][1]) + BYTE3, + ((uint8*)&gprBank[1][2]) + BYTE0,((uint8*)&gprBank[1][2]) + BYTE1, + ((uint8*)&gprBank[1][2]) + BYTE2, ((uint8*)&gprBank[1][2]) + BYTE3, + ((uint8*)&gprBank[1][3]) + BYTE0,((uint8*)&gprBank[1][3]) + BYTE1, + ((uint8*)&gprBank[1][3]) + BYTE2, ((uint8*)&gprBank[1][3]) + BYTE3, + + //Current Bank + ((uint8*)&gprBank[2][0]) + BYTE0,((uint8*)&gprBank[2][0]) + BYTE1, + ((uint8*)&gprBank[2][0]) + BYTE2, ((uint8*)&gprBank[2][0]) + BYTE3, + ((uint8*)&gprBank[2][1]) + BYTE0,((uint8*)&gprBank[2][1]) + BYTE1, + ((uint8*)&gprBank[2][1]) + BYTE2, ((uint8*)&gprBank[2][1]) + BYTE3, + ((uint8*)&gprBank[2][2]) + BYTE0,((uint8*)&gprBank[2][2]) + BYTE1, + ((uint8*)&gprBank[2][2]) + BYTE2, ((uint8*)&gprBank[2][2]) + BYTE3, + ((uint8*)&gprBank[2][3]) + BYTE0,((uint8*)&gprBank[2][3]) + BYTE1, + ((uint8*)&gprBank[2][3]) + BYTE2, ((uint8*)&gprBank[2][3]) + BYTE3, + + ((uint8*)&gpr[0]) + BYTE0, ((uint8*)&gpr[0]) + BYTE1, + ((uint8*)&gpr[0]) + BYTE2, ((uint8*)&gpr[0]) + BYTE3, + ((uint8*)&gpr[1]) + BYTE0, ((uint8*)&gpr[1]) + BYTE1, + ((uint8*)&gpr[1]) + BYTE2, ((uint8*)&gpr[1]) + BYTE3, + ((uint8*)&gpr[2]) + BYTE0, ((uint8*)&gpr[2]) + BYTE1, + ((uint8*)&gpr[2]) + BYTE2, ((uint8*)&gpr[2]) + BYTE3, + ((uint8*)&gpr[3]) + BYTE0, ((uint8*)&gpr[3]) + BYTE1, + ((uint8*)&gpr[3]) + BYTE2, ((uint8*)&gpr[3]) + BYTE3 + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB3.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB3.h new file mode 100644 index 0000000000..b67989261d --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeB3.h @@ -0,0 +1,105 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeB3.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + ((uint8*)&gprBank[0][0]) + BYTE0,((uint8*)&gprBank[0][0]) + BYTE1, //BANK 0 + ((uint8*)&gprBank[0][0]) + BYTE2, ((uint8*)&gprBank[0][0]) + BYTE3, + ((uint8*)&gprBank[0][1]) + BYTE0,((uint8*)&gprBank[0][1]) + BYTE1, + ((uint8*)&gprBank[0][1]) + BYTE2, ((uint8*)&gprBank[0][1]) + BYTE3, + ((uint8*)&gprBank[0][2]) + BYTE0,((uint8*)&gprBank[0][2]) + BYTE1, + ((uint8*)&gprBank[0][2]) + BYTE2, ((uint8*)&gprBank[0][2]) + BYTE3, + ((uint8*)&gprBank[0][3]) + BYTE0,((uint8*)&gprBank[0][3]) + BYTE1, + ((uint8*)&gprBank[0][3]) + BYTE2, ((uint8*)&gprBank[0][3]) + BYTE3, + + ((uint8*)&gprBank[1][0]) + BYTE0,((uint8*)&gprBank[1][0]) + BYTE1, //BANK 1 + ((uint8*)&gprBank[1][0]) + BYTE2, ((uint8*)&gprBank[1][0]) + BYTE3, + ((uint8*)&gprBank[1][1]) + BYTE0,((uint8*)&gprBank[1][1]) + BYTE1, + ((uint8*)&gprBank[1][1]) + BYTE2, ((uint8*)&gprBank[1][1]) + BYTE3, + ((uint8*)&gprBank[1][2]) + BYTE0,((uint8*)&gprBank[1][2]) + BYTE1, + ((uint8*)&gprBank[1][2]) + BYTE2, ((uint8*)&gprBank[1][2]) + BYTE3, + ((uint8*)&gprBank[1][3]) + BYTE0,((uint8*)&gprBank[1][3]) + BYTE1, + ((uint8*)&gprBank[1][3]) + BYTE2, ((uint8*)&gprBank[1][3]) + BYTE3, + + ((uint8*)&gprBank[2][0]) + BYTE0,((uint8*)&gprBank[2][0]) + BYTE1, //BANK 2 + ((uint8*)&gprBank[2][0]) + BYTE2, ((uint8*)&gprBank[2][0]) + BYTE3, + ((uint8*)&gprBank[2][1]) + BYTE0,((uint8*)&gprBank[2][1]) + BYTE1, + ((uint8*)&gprBank[2][1]) + BYTE2, ((uint8*)&gprBank[2][1]) + BYTE3, + ((uint8*)&gprBank[2][2]) + BYTE0,((uint8*)&gprBank[2][2]) + BYTE1, + ((uint8*)&gprBank[2][2]) + BYTE2, ((uint8*)&gprBank[2][2]) + BYTE3, + ((uint8*)&gprBank[2][3]) + BYTE0,((uint8*)&gprBank[2][3]) + BYTE1, + ((uint8*)&gprBank[2][3]) + BYTE2, ((uint8*)&gprBank[2][3]) + BYTE3, + + ((uint8*)&gprBank[3][0]) + BYTE0,((uint8*)&gprBank[3][0]) + BYTE1, //BANK 3 + ((uint8*)&gprBank[3][0]) + BYTE2, ((uint8*)&gprBank[3][0]) + BYTE3, + ((uint8*)&gprBank[3][1]) + BYTE0,((uint8*)&gprBank[3][1]) + BYTE1, + ((uint8*)&gprBank[3][1]) + BYTE2, ((uint8*)&gprBank[3][1]) + BYTE3, + ((uint8*)&gprBank[3][2]) + BYTE0,((uint8*)&gprBank[3][2]) + BYTE1, + ((uint8*)&gprBank[3][2]) + BYTE2, ((uint8*)&gprBank[3][2]) + BYTE3, + ((uint8*)&gprBank[3][3]) + BYTE0,((uint8*)&gprBank[3][3]) + BYTE1, + ((uint8*)&gprBank[3][3]) + BYTE2, ((uint8*)&gprBank[3][3]) + BYTE3, + + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + (uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr,(uint8*)&rErr, + + //Previous Bank + ((uint8*)&gprBank[2][0]) + BYTE0,((uint8*)&gprBank[2][0]) + BYTE1, + ((uint8*)&gprBank[2][0]) + BYTE2, ((uint8*)&gprBank[2][0]) + BYTE3, + ((uint8*)&gprBank[2][1]) + BYTE0,((uint8*)&gprBank[2][1]) + BYTE1, + ((uint8*)&gprBank[2][1]) + BYTE2, ((uint8*)&gprBank[2][1]) + BYTE3, + ((uint8*)&gprBank[2][2]) + BYTE0,((uint8*)&gprBank[2][2]) + BYTE1, + ((uint8*)&gprBank[2][2]) + BYTE2, ((uint8*)&gprBank[2][2]) + BYTE3, + ((uint8*)&gprBank[2][3]) + BYTE0,((uint8*)&gprBank[2][3]) + BYTE1, + ((uint8*)&gprBank[2][3]) + BYTE2, ((uint8*)&gprBank[2][3]) + BYTE3, + + //Current Bank + ((uint8*)&gprBank[3][0]) + BYTE0,((uint8*)&gprBank[3][0]) + BYTE1, + ((uint8*)&gprBank[3][0]) + BYTE2, ((uint8*)&gprBank[3][0]) + BYTE3, + ((uint8*)&gprBank[3][1]) + BYTE0,((uint8*)&gprBank[3][1]) + BYTE1, + ((uint8*)&gprBank[3][1]) + BYTE2, ((uint8*)&gprBank[3][1]) + BYTE3, + ((uint8*)&gprBank[3][2]) + BYTE0,((uint8*)&gprBank[3][2]) + BYTE1, + ((uint8*)&gprBank[3][2]) + BYTE2, ((uint8*)&gprBank[3][2]) + BYTE3, + ((uint8*)&gprBank[3][3]) + BYTE0,((uint8*)&gprBank[3][3]) + BYTE1, + ((uint8*)&gprBank[3][3]) + BYTE2, ((uint8*)&gprBank[3][3]) + BYTE3, + + ((uint8*)&gpr[0]) + BYTE0, ((uint8*)&gpr[0]) + BYTE1, + ((uint8*)&gpr[0]) + BYTE2, ((uint8*)&gpr[0]) + BYTE3, + ((uint8*)&gpr[1]) + BYTE0, ((uint8*)&gpr[1]) + BYTE1, + ((uint8*)&gpr[1]) + BYTE2, ((uint8*)&gpr[1]) + BYTE3, + ((uint8*)&gpr[2]) + BYTE0, ((uint8*)&gpr[2]) + BYTE1, + ((uint8*)&gpr[2]) + BYTE2, ((uint8*)&gpr[2]) + BYTE3, + ((uint8*)&gpr[3]) + BYTE0, ((uint8*)&gpr[3]) + BYTE1, + ((uint8*)&gpr[3]) + BYTE2, ((uint8*)&gpr[3]) + BYTE3 + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL0.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL0.h new file mode 100644 index 0000000000..1553895fe6 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL0.h @@ -0,0 +1,60 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeL0.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + &(gprBank[0][0]), &(gprBank[0][1]), &(gprBank[0][2]), &(gprBank[0][3]), + + //BANK 1 + &(gprBank[1][0]), &(gprBank[1][1]), &(gprBank[1][2]), &(gprBank[1][3]), + + //BANK 2 + &(gprBank[2][0]), &(gprBank[2][1]), &(gprBank[2][2]), &(gprBank[2][3]), + + //BANK 3 + &(gprBank[3][0]), &(gprBank[3][1]), &(gprBank[3][2]), &(gprBank[3][3]), + + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr, + + //Previous Bank + &rErr,&rErr,&rErr,&rErr, + + //Current Bank + &(gprBank[0][0]), &(gprBank[0][1]), &(gprBank[0][2]), &(gprBank[0][3]), + + &(gpr[0]), &(gpr[1]), &(gpr[2]), &(gpr[3]) + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL1.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL1.h new file mode 100644 index 0000000000..c93e793c8a --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL1.h @@ -0,0 +1,60 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeL1.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + &(gprBank[0][0]), &(gprBank[0][1]), &(gprBank[0][2]), &(gprBank[0][3]), + + //BANK 1 + &(gprBank[1][0]), &(gprBank[1][1]), &(gprBank[1][2]), &(gprBank[1][3]), + + //BANK 2 + &(gprBank[2][0]), &(gprBank[2][1]), &(gprBank[2][2]), &(gprBank[2][3]), + + //BANK 3 + &(gprBank[3][0]), &(gprBank[3][1]), &(gprBank[3][2]), &(gprBank[3][3]), + + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr, + + //Previous Bank + &(gprBank[0][0]), &(gprBank[0][1]), &(gprBank[0][2]), &(gprBank[0][3]), + + //Current Bank + &(gprBank[1][0]), &(gprBank[1][1]), &(gprBank[1][2]), &(gprBank[1][3]), + + &(gpr[0]), &(gpr[1]), &(gpr[2]), &(gpr[3]) + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL2.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL2.h new file mode 100644 index 0000000000..6457f39d3a --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL2.h @@ -0,0 +1,60 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeL2.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + &(gprBank[0][0]), &(gprBank[0][1]), &(gprBank[0][2]), &(gprBank[0][3]), + + //BANK 1 + &(gprBank[1][0]), &(gprBank[1][1]), &(gprBank[1][2]), &(gprBank[1][3]), + + //BANK 2 + &(gprBank[2][0]), &(gprBank[2][1]), &(gprBank[2][2]), &(gprBank[2][3]), + + //BANK 3 + &(gprBank[3][0]), &(gprBank[3][1]), &(gprBank[3][2]), &(gprBank[3][3]), + + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr, + + //Previous Bank + &(gprBank[1][0]), &(gprBank[1][1]), &(gprBank[1][2]), &(gprBank[1][3]), + + //Current Bank + &(gprBank[2][0]), &(gprBank[2][1]), &(gprBank[2][2]), &(gprBank[2][3]), + + &(gpr[0]), &(gpr[1]), &(gpr[2]), &(gpr[3]) + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL3.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL3.h new file mode 100644 index 0000000000..e15c4ba835 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeL3.h @@ -0,0 +1,60 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeL3.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + &(gprBank[0][0]), &(gprBank[0][1]), &(gprBank[0][2]), &(gprBank[0][3]), + + //BANK 1 + &(gprBank[1][0]), &(gprBank[1][1]), &(gprBank[1][2]), &(gprBank[1][3]), + + //BANK 2 + &(gprBank[2][0]), &(gprBank[2][1]), &(gprBank[2][2]), &(gprBank[2][3]), + + //BANK 3 + &(gprBank[3][0]), &(gprBank[3][1]), &(gprBank[3][2]), &(gprBank[3][3]), + + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr,&rErr, + &rErr,&rErr,&rErr,&rErr, + + //Previous Bank + &(gprBank[2][0]), &(gprBank[2][1]), &(gprBank[2][2]), &(gprBank[2][3]), + + //Current Bank + &(gprBank[3][0]), &(gprBank[3][1]), &(gprBank[3][2]), &(gprBank[3][3]), + + &(gpr[0]), &(gpr[1]), &(gpr[2]), &(gpr[3]) + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW0.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW0.h new file mode 100644 index 0000000000..e04f9f87d9 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW0.h @@ -0,0 +1,94 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeW0.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), (uint16*)(((uint8*)&gprBank[0][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), (uint16*)(((uint8*)&gprBank[0][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), (uint16*)(((uint8*)&gprBank[0][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), (uint16*)(((uint8*)&gprBank[0][3]) + WORD1), + + //BANK 1 + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), (uint16*)(((uint8*)&gprBank[1][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), (uint16*)(((uint8*)&gprBank[1][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), (uint16*)(((uint8*)&gprBank[1][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), (uint16*)(((uint8*)&gprBank[1][3]) + WORD1), + + //BANK 2 + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), (uint16*)(((uint8*)&gprBank[2][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), (uint16*)(((uint8*)&gprBank[2][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), (uint16*)(((uint8*)&gprBank[2][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), (uint16*)(((uint8*)&gprBank[2][3]) + WORD1), + + //BANK 3 + (uint16*)(((uint8*)&gprBank[3][0]) + WORD0), (uint16*)(((uint8*)&gprBank[3][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][1]) + WORD0), (uint16*)(((uint8*)&gprBank[3][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][2]) + WORD0), (uint16*)(((uint8*)&gprBank[3][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][3]) + WORD0), (uint16*)(((uint8*)&gprBank[3][3]) + WORD1), + + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + + //Previous Bank + (uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr, + + //Current Bank + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), (uint16*)(((uint8*)&gprBank[0][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), (uint16*)(((uint8*)&gprBank[0][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), (uint16*)(((uint8*)&gprBank[0][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), (uint16*)(((uint8*)&gprBank[0][3]) + WORD1), + + (uint16*)((uint8*)&(gpr[0]) + WORD0), (uint16*)((uint8*)&(gpr[0]) + WORD1), + (uint16*)((uint8*)&(gpr[1]) + WORD0), (uint16*)((uint8*)&(gpr[1]) + WORD1), + (uint16*)((uint8*)&(gpr[2]) + WORD0), (uint16*)((uint8*)&(gpr[2]) + WORD1), + (uint16*)((uint8*)&(gpr[3]) + WORD0), (uint16*)((uint8*)&(gpr[3]) + WORD1), + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW1.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW1.h new file mode 100644 index 0000000000..11182cfaa0 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW1.h @@ -0,0 +1,94 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeW1.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), (uint16*)(((uint8*)&gprBank[0][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), (uint16*)(((uint8*)&gprBank[0][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), (uint16*)(((uint8*)&gprBank[0][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), (uint16*)(((uint8*)&gprBank[0][3]) + WORD1), + + //BANK 1 + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), (uint16*)(((uint8*)&gprBank[1][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), (uint16*)(((uint8*)&gprBank[1][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), (uint16*)(((uint8*)&gprBank[1][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), (uint16*)(((uint8*)&gprBank[1][3]) + WORD1), + + //BANK 2 + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), (uint16*)(((uint8*)&gprBank[2][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), (uint16*)(((uint8*)&gprBank[2][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), (uint16*)(((uint8*)&gprBank[2][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), (uint16*)(((uint8*)&gprBank[2][3]) + WORD1), + + //BANK 3 + (uint16*)(((uint8*)&gprBank[3][0]) + WORD0), (uint16*)(((uint8*)&gprBank[3][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][1]) + WORD0), (uint16*)(((uint8*)&gprBank[3][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][2]) + WORD0), (uint16*)(((uint8*)&gprBank[3][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][3]) + WORD0), (uint16*)(((uint8*)&gprBank[3][3]) + WORD1), + + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + + //Previous Bank + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), (uint16*)(((uint8*)&gprBank[0][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), (uint16*)(((uint8*)&gprBank[0][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), (uint16*)(((uint8*)&gprBank[0][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), (uint16*)(((uint8*)&gprBank[0][3]) + WORD1), + + //Current Bank + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), (uint16*)(((uint8*)&gprBank[1][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), (uint16*)(((uint8*)&gprBank[1][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), (uint16*)(((uint8*)&gprBank[1][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), (uint16*)(((uint8*)&gprBank[1][3]) + WORD1), + + (uint16*)((uint8*)&(gpr[0]) + WORD0), (uint16*)((uint8*)&(gpr[0]) + WORD1), + (uint16*)((uint8*)&(gpr[1]) + WORD0), (uint16*)((uint8*)&(gpr[1]) + WORD1), + (uint16*)((uint8*)&(gpr[2]) + WORD0), (uint16*)((uint8*)&(gpr[2]) + WORD1), + (uint16*)((uint8*)&(gpr[3]) + WORD0), (uint16*)((uint8*)&(gpr[3]) + WORD1), + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW2.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW2.h new file mode 100644 index 0000000000..1a3725616d --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW2.h @@ -0,0 +1,94 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeW2.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), (uint16*)(((uint8*)&gprBank[0][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), (uint16*)(((uint8*)&gprBank[0][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), (uint16*)(((uint8*)&gprBank[0][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), (uint16*)(((uint8*)&gprBank[0][3]) + WORD1), + + //BANK 1 + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), (uint16*)(((uint8*)&gprBank[1][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), (uint16*)(((uint8*)&gprBank[1][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), (uint16*)(((uint8*)&gprBank[1][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), (uint16*)(((uint8*)&gprBank[1][3]) + WORD1), + + //BANK 2 + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), (uint16*)(((uint8*)&gprBank[2][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), (uint16*)(((uint8*)&gprBank[2][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), (uint16*)(((uint8*)&gprBank[2][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), (uint16*)(((uint8*)&gprBank[2][3]) + WORD1), + + //BANK 3 + (uint16*)(((uint8*)&gprBank[3][0]) + WORD0), (uint16*)(((uint8*)&gprBank[3][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][1]) + WORD0), (uint16*)(((uint8*)&gprBank[3][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][2]) + WORD0), (uint16*)(((uint8*)&gprBank[3][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][3]) + WORD0), (uint16*)(((uint8*)&gprBank[3][3]) + WORD1), + + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + + //Previous Bank + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), (uint16*)(((uint8*)&gprBank[1][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), (uint16*)(((uint8*)&gprBank[1][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), (uint16*)(((uint8*)&gprBank[1][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), (uint16*)(((uint8*)&gprBank[1][3]) + WORD1), + + //Current Bank + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), (uint16*)(((uint8*)&gprBank[2][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), (uint16*)(((uint8*)&gprBank[2][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), (uint16*)(((uint8*)&gprBank[2][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), (uint16*)(((uint8*)&gprBank[2][3]) + WORD1), + + (uint16*)((uint8*)&(gpr[0]) + WORD0), (uint16*)((uint8*)&(gpr[0]) + WORD1), + (uint16*)((uint8*)&(gpr[1]) + WORD0), (uint16*)((uint8*)&(gpr[1]) + WORD1), + (uint16*)((uint8*)&(gpr[2]) + WORD0), (uint16*)((uint8*)&(gpr[2]) + WORD1), + (uint16*)((uint8*)&(gpr[3]) + WORD0), (uint16*)((uint8*)&(gpr[3]) + WORD1), + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW3.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW3.h new file mode 100644 index 0000000000..eae1f579b2 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapCodeW3.h @@ -0,0 +1,94 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapCodeW3.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //BANK 0 + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), (uint16*)(((uint8*)&gprBank[0][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), (uint16*)(((uint8*)&gprBank[0][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), (uint16*)(((uint8*)&gprBank[0][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), (uint16*)(((uint8*)&gprBank[0][3]) + WORD1), + + //BANK 1 + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), (uint16*)(((uint8*)&gprBank[1][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), (uint16*)(((uint8*)&gprBank[1][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), (uint16*)(((uint8*)&gprBank[1][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), (uint16*)(((uint8*)&gprBank[1][3]) + WORD1), + + //BANK 2 + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), (uint16*)(((uint8*)&gprBank[2][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), (uint16*)(((uint8*)&gprBank[2][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), (uint16*)(((uint8*)&gprBank[2][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), (uint16*)(((uint8*)&gprBank[2][3]) + WORD1), + + //BANK 3 + (uint16*)(((uint8*)&gprBank[3][0]) + WORD0), (uint16*)(((uint8*)&gprBank[3][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][1]) + WORD0), (uint16*)(((uint8*)&gprBank[3][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][2]) + WORD0), (uint16*)(((uint8*)&gprBank[3][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][3]) + WORD0), (uint16*)(((uint8*)&gprBank[3][3]) + WORD1), + + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + (uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr,(uint16*)&rErr, + + //Previous Bank + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), (uint16*)(((uint8*)&gprBank[2][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), (uint16*)(((uint8*)&gprBank[2][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), (uint16*)(((uint8*)&gprBank[2][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), (uint16*)(((uint8*)&gprBank[2][3]) + WORD1), + + //Current Bank + (uint16*)(((uint8*)&gprBank[3][0]) + WORD0), (uint16*)(((uint8*)&gprBank[3][0]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][1]) + WORD0), (uint16*)(((uint8*)&gprBank[3][1]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][2]) + WORD0), (uint16*)(((uint8*)&gprBank[3][2]) + WORD1), + (uint16*)(((uint8*)&gprBank[3][3]) + WORD0), (uint16*)(((uint8*)&gprBank[3][3]) + WORD1), + + (uint16*)((uint8*)&(gpr[0]) + WORD0), (uint16*)((uint8*)&(gpr[0]) + WORD1), + (uint16*)((uint8*)&(gpr[1]) + WORD0), (uint16*)((uint8*)&(gpr[1]) + WORD1), + (uint16*)((uint8*)&(gpr[2]) + WORD0), (uint16*)((uint8*)&(gpr[2]) + WORD1), + (uint16*)((uint8*)&(gpr[3]) + WORD0), (uint16*)((uint8*)&(gpr[3]) + WORD1), + +//============================================================================= diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapL.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapL.h new file mode 100644 index 0000000000..1457c49fa9 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapL.h @@ -0,0 +1,84 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapL.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //Bank 0 + { + (uint32*)&(gprBank[0][0]), + (uint32*)&(gprBank[0][1]), + (uint32*)&(gprBank[0][2]), + (uint32*)&(gprBank[0][3]), + (uint32*)&(gpr[0]), + (uint32*)&(gpr[1]), + (uint32*)&(gpr[2]), + (uint32*)&(gpr[3]), + }, + + //Bank 1 + { + (uint32*)&(gprBank[1][0]), + (uint32*)&(gprBank[1][1]), + (uint32*)&(gprBank[1][2]), + (uint32*)&(gprBank[1][3]), + (uint32*)&(gpr[0]), + (uint32*)&(gpr[1]), + (uint32*)&(gpr[2]), + (uint32*)&(gpr[3]), + }, + + //Bank 2 + { + (uint32*)&(gprBank[2][0]), + (uint32*)&(gprBank[2][1]), + (uint32*)&(gprBank[2][2]), + (uint32*)&(gprBank[2][3]), + (uint32*)&(gpr[0]), + (uint32*)&(gpr[1]), + (uint32*)&(gpr[2]), + (uint32*)&(gpr[3]), + }, + + //Bank 3 + { + (uint32*)&(gprBank[3][0]), + (uint32*)&(gprBank[3][1]), + (uint32*)&(gprBank[3][2]), + (uint32*)&(gprBank[3][3]), + (uint32*)&(gpr[0]), + (uint32*)&(gpr[1]), + (uint32*)&(gpr[2]), + (uint32*)&(gpr[3]), + }, + +//============================================================================= + + diff --git a/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapW.h b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapW.h new file mode 100644 index 0000000000..2607a3f023 --- /dev/null +++ b/libmednahawk/src/ngp/TLCS-900h/TLCS900h_registers_mapW.h @@ -0,0 +1,84 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + TLCS900h_registers_mapW.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +//--------------------------------------------------------------------------- +*/ + + //Bank 0 + { + (uint16*)(((uint8*)&gprBank[0][0]) + WORD0), + (uint16*)(((uint8*)&gprBank[0][1]) + WORD0), + (uint16*)(((uint8*)&gprBank[0][2]) + WORD0), + (uint16*)(((uint8*)&gprBank[0][3]) + WORD0), + (uint16*)(((uint8*)&gpr[0]) + WORD0), + (uint16*)(((uint8*)&gpr[1]) + WORD0), + (uint16*)(((uint8*)&gpr[2]) + WORD0), + (uint16*)(((uint8*)&gpr[3]) + WORD0), + }, + + //Bank 1 + { + (uint16*)(((uint8*)&gprBank[1][0]) + WORD0), + (uint16*)(((uint8*)&gprBank[1][1]) + WORD0), + (uint16*)(((uint8*)&gprBank[1][2]) + WORD0), + (uint16*)(((uint8*)&gprBank[1][3]) + WORD0), + (uint16*)(((uint8*)&gpr[0]) + WORD0), + (uint16*)(((uint8*)&gpr[1]) + WORD0), + (uint16*)(((uint8*)&gpr[2]) + WORD0), + (uint16*)(((uint8*)&gpr[3]) + WORD0), + }, + + //Bank 2 + { + (uint16*)(((uint8*)&gprBank[2][0]) + WORD0), + (uint16*)(((uint8*)&gprBank[2][1]) + WORD0), + (uint16*)(((uint8*)&gprBank[2][2]) + WORD0), + (uint16*)(((uint8*)&gprBank[2][3]) + WORD0), + (uint16*)(((uint8*)&gpr[0]) + WORD0), + (uint16*)(((uint8*)&gpr[1]) + WORD0), + (uint16*)(((uint8*)&gpr[2]) + WORD0), + (uint16*)(((uint8*)&gpr[3]) + WORD0), + }, + + //Bank 3 + { + (uint16*)(((uint8*)&gprBank[3][0]) + WORD0), + (uint16*)(((uint8*)&gprBank[3][1]) + WORD0), + (uint16*)(((uint8*)&gprBank[3][2]) + WORD0), + (uint16*)(((uint8*)&gprBank[3][3]) + WORD0), + (uint16*)(((uint8*)&gpr[0]) + WORD0), + (uint16*)(((uint8*)&gpr[1]) + WORD0), + (uint16*)(((uint8*)&gpr[2]) + WORD0), + (uint16*)(((uint8*)&gpr[3]) + WORD0), + }, + +//============================================================================= + + diff --git a/libmednahawk/src/ngp/Z80_interface.cpp b/libmednahawk/src/ngp/Z80_interface.cpp new file mode 100644 index 0000000000..4376166b33 --- /dev/null +++ b/libmednahawk/src/ngp/Z80_interface.cpp @@ -0,0 +1,148 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "mem.h" +#include "sound.h" +#include "Z80_interface.h" +#include "TLCS900h_registers.h" +#include "interrupt.h" +#include "dma.h" + +static uint8 CommByte; +static bool Z80Enabled; + +uint8 Z80_ReadComm(void) +{ + return(CommByte); +} + +void Z80_WriteComm(uint8 data) +{ + CommByte = data; +} + +static uint8 NGP_z80_readbyte(uint16 address) +{ + if (address <= 0xFFF) + return loadB(0x7000 + address); + + if (address == 0x8000) + { + return CommByte; + } + return 0; +} + +//============================================================================= + +static void NGP_z80_writebyte(uint16 address, uint8 value) +{ + if (address <= 0x0FFF) + { + storeB(0x7000 + address, value); + return; + } + + if (address == 0x8000) + { + CommByte = value; + return; + } + + if (address == 0x4001) { Write_SoundChipLeft(value); return; } + if (address == 0x4000) { Write_SoundChipRight(value); return; } + + if (address == 0xC000) + { + TestIntHDMA(6, 0x0C); + } +} + +//============================================================================= + +static void NGP_z80_writeport(uint16 port, uint8 value) +{ + //printf("Portout: %04x %02x\n", port, value); + z80_set_interrupt(0); +} + +static uint8 NGP_z80_readport(uint16 port) +{ + //printf("Portin: %04x\n", port); + return 0; +} + +void Z80_nmi(void) +{ + z80_nmi(); +} + +void Z80_irq(void) +{ + z80_set_interrupt(1); +} + +void Z80_reset(void) +{ + Z80Enabled = 0; + + z80_writebyte = NGP_z80_writebyte; + z80_readbyte = NGP_z80_readbyte; + z80_writeport = NGP_z80_writeport; + z80_readport = NGP_z80_readport; + + z80_init(); + z80_reset(); +} + +void Z80_SetEnable(bool set) +{ + Z80Enabled = set; + if(!set) + z80_reset(); +} + +bool Z80_IsEnabled(void) +{ + return(Z80Enabled); +} + +int Z80_RunOP(void) +{ + if(!Z80Enabled) + return(-1); + + return(z80_do_opcode()); +} + +int MDFNNGPCZ80_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(CommByte), + SFVAR(Z80Enabled), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "Z80X")) + { + return(0); + } + + if(!z80_state_action(sm, load, data_only, "Z80")) + return(0); + + return(1); +} diff --git a/libmednahawk/src/ngp/Z80_interface.h b/libmednahawk/src/ngp/Z80_interface.h new file mode 100644 index 0000000000..7d48a32de7 --- /dev/null +++ b/libmednahawk/src/ngp/Z80_interface.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __Z80_CONTROL__ +#define __Z80_CONTROL__ +//============================================================================= + +#include "z80-fuse/z80.h" + +uint8 Z80_ReadComm(void); +void Z80_WriteComm(uint8 data); + +void Z80_reset(void); // z80 reset + +void Z80_irq(void); // Cause an interrupt +void Z80_nmi(void); // Cause an NMI +void Z80_SetEnable(bool set); +bool Z80_IsEnabled(void); +int Z80_RunOP(void); + +int MDFNNGPCZ80_StateAction(StateMem *sm, int load, int data_only); + +#endif diff --git a/libmednahawk/src/ngp/bios.cpp b/libmednahawk/src/ngp/bios.cpp new file mode 100644 index 0000000000..dc1bcc856d --- /dev/null +++ b/libmednahawk/src/ngp/bios.cpp @@ -0,0 +1,237 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "TLCS900h_registers.h" +#include "Z80_interface.h" +#include "gfx.h" +#include "mem.h" +#include "interrupt.h" +#include "sound.h" +#include "dma.h" +#include "bios.h" + +//============================================================================= + +uint8 ngpc_bios[0x10000]; //Holds bios program data + +//============================================================================= + +void reset(void) +{ + NGPGfx->power(); + Z80_reset(); + reset_int(); + reset_timers(); + + reset_memory(); + BIOSHLE_Reset(); + reset_registers(); // TLCS900H registers + reset_dma(); +} + +//============================================================================= + +static const uint8 font[0x800] = { + + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00, + 0x00,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, + 0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, + 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x20,0x30,0x38,0x3C,0x38,0x30,0x20,0x00,0x04,0x0C,0x1C,0x3C,0x1C,0x0C,0x04,0x00, + 0x00,0x00,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0x00,0x00, + 0x20,0x3C,0x08,0x3C,0x28,0x7E,0x08,0x00,0x3C,0x24,0x3C,0x24,0x3C,0x24,0x24,0x00, + 0x3C,0x24,0x24,0x3C,0x24,0x24,0x3C,0x00,0x10,0x10,0x54,0x54,0x10,0x28,0xC6,0x00, + 0x10,0x12,0xD4,0x58,0x54,0x92,0x10,0x00,0x10,0x10,0x7C,0x10,0x38,0x54,0x92,0x00, + 0x10,0x28,0x7C,0x92,0x38,0x54,0xFE,0x00,0x10,0x10,0x10,0x7C,0x10,0x10,0xFE,0x00, + 0x7F,0xFF,0xE0,0xFF,0x7F,0x01,0xFF,0xFF,0xDC,0xDE,0x1F,0x9F,0xDF,0xDD,0xDC,0x9C, + 0x3B,0x3B,0x3B,0xBB,0xFB,0xFB,0xFB,0x7B,0x8F,0x9E,0xBC,0xF8,0xF8,0xBC,0x9E,0x8F, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x08,0x10,0x00,0x18,0x00, + 0x6C,0x6C,0x24,0x48,0x00,0x00,0x00,0x00,0x14,0x14,0xFE,0x28,0xFE,0x50,0x50,0x00, + 0x10,0x7C,0x90,0x7C,0x12,0xFC,0x10,0x00,0x42,0xA4,0xA8,0x54,0x2A,0x4A,0x84,0x00, + 0x30,0x48,0x38,0x62,0x94,0x88,0x76,0x00,0x18,0x18,0x08,0x10,0x00,0x00,0x00,0x00, + 0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00,0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00, + 0x10,0x92,0x54,0x38,0x38,0x54,0x92,0x00,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x00, + 0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00, + 0x3C,0x42,0x46,0x5A,0x62,0x42,0x3C,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x00, + 0x3C,0x42,0x42,0x0C,0x30,0x40,0x7E,0x00,0x3C,0x42,0x02,0x1C,0x02,0x42,0x3C,0x00, + 0x0C,0x14,0x24,0x44,0x7E,0x04,0x04,0x00,0x7E,0x40,0x7C,0x02,0x02,0x42,0x3C,0x00, + 0x3C,0x40,0x7C,0x42,0x42,0x42,0x3C,0x00,0x7E,0x02,0x04,0x08,0x08,0x10,0x10,0x00, + 0x3C,0x42,0x42,0x3C,0x42,0x42,0x3C,0x00,0x3C,0x42,0x42,0x42,0x3E,0x02,0x3C,0x00, + 0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x08,0x10,0x00, + 0x00,0x08,0x10,0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x3C,0x00,0x3C,0x00,0x00,0x00, + 0x00,0x10,0x08,0x04,0x08,0x10,0x00,0x00,0x3C,0x62,0x62,0x0C,0x18,0x00,0x18,0x00, + 0x7C,0x82,0xBA,0xA2,0xBA,0x82,0x7C,0x00,0x10,0x28,0x28,0x44,0x7C,0x82,0x82,0x00, + 0x7C,0x42,0x42,0x7C,0x42,0x42,0x7C,0x00,0x1C,0x22,0x40,0x40,0x40,0x22,0x1C,0x00, + 0x78,0x44,0x42,0x42,0x42,0x44,0x78,0x00,0x7E,0x40,0x40,0x7E,0x40,0x40,0x7E,0x00, + 0x7E,0x40,0x40,0x7C,0x40,0x40,0x40,0x00,0x3C,0x42,0x80,0x9E,0x82,0x46,0x3A,0x00, + 0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00, + 0x02,0x02,0x02,0x02,0x42,0x42,0x3C,0x00,0x42,0x44,0x48,0x50,0x68,0x44,0x42,0x00, + 0x40,0x40,0x40,0x40,0x40,0x40,0x7E,0x00,0x82,0xC6,0xAA,0x92,0x82,0x82,0x82,0x00, + 0x42,0x62,0x52,0x4A,0x46,0x42,0x42,0x00,0x38,0x44,0x82,0x82,0x82,0x44,0x38,0x00, + 0x7C,0x42,0x42,0x7C,0x40,0x40,0x40,0x00,0x38,0x44,0x82,0x82,0x8A,0x44,0x3A,0x00, + 0x7C,0x42,0x42,0x7C,0x48,0x44,0x42,0x00,0x3C,0x42,0x40,0x3C,0x02,0x42,0x3C,0x00, + 0xFE,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00, + 0x82,0x82,0x44,0x44,0x28,0x28,0x10,0x00,0x82,0x92,0x92,0xAA,0xAA,0x44,0x44,0x00, + 0x82,0x44,0x28,0x10,0x28,0x44,0x82,0x00,0x82,0x44,0x28,0x10,0x10,0x10,0x10,0x00, + 0x7E,0x04,0x08,0x10,0x20,0x40,0x7E,0x00,0x18,0x10,0x10,0x10,0x10,0x10,0x18,0x00, + 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x18,0x08,0x08,0x08,0x08,0x08,0x18,0x00, + 0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00, + 0x08,0x10,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x78,0x04,0x7C,0x84,0x84,0x7E,0x00, + 0x40,0x40,0x7C,0x42,0x42,0x42,0x3C,0x00,0x00,0x00,0x3C,0x42,0x40,0x42,0x3C,0x00, + 0x02,0x02,0x3E,0x42,0x42,0x42,0x3C,0x00,0x00,0x00,0x3C,0x42,0x7E,0x40,0x3E,0x00, + 0x0C,0x10,0x3E,0x10,0x10,0x10,0x10,0x00,0x00,0x3C,0x42,0x42,0x3E,0x02,0x7C,0x00, + 0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x00,0x18,0x18,0x00,0x08,0x08,0x08,0x08,0x00, + 0x06,0x06,0x00,0x02,0x42,0x42,0x3C,0x00,0x20,0x20,0x26,0x28,0x30,0x28,0x26,0x00, + 0x30,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x80,0xEC,0x92,0x92,0x92,0x92,0x00, + 0x00,0x40,0x78,0x44,0x44,0x44,0x44,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x3C,0x00, + 0x00,0x3C,0x42,0x42,0x7C,0x40,0x40,0x00,0x00,0x78,0x84,0x84,0x7C,0x04,0x06,0x00, + 0x00,0x00,0x5C,0x62,0x40,0x40,0x40,0x00,0x00,0x00,0x3E,0x40,0x3C,0x02,0x7C,0x00, + 0x00,0x10,0x7C,0x10,0x10,0x10,0x0E,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x3F,0x00, + 0x00,0x00,0x42,0x42,0x24,0x24,0x18,0x00,0x00,0x00,0x92,0x92,0x92,0x92,0x6C,0x00, + 0x00,0x00,0x42,0x24,0x18,0x24,0x42,0x00,0x00,0x00,0x42,0x42,0x3E,0x02,0x7C,0x00, + 0x00,0x00,0x7E,0x02,0x3C,0x40,0x7E,0x00,0x08,0x10,0x10,0x20,0x10,0x10,0x08,0x00, + 0x10,0x10,0x10,0x00,0x10,0x10,0x10,0x00,0x20,0x10,0x10,0x08,0x10,0x10,0x20,0x00, + 0x00,0x00,0x60,0x92,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x90,0x90,0x60,0x00, + 0x1E,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0xF0,0x00, + 0x00,0x00,0x00,0x80,0x40,0x60,0x60,0x00,0x00,0x00,0x00,0x30,0x78,0x30,0x00,0x00, + 0x20,0xF8,0x26,0x78,0xD0,0x80,0x7C,0x00,0x00,0x10,0x3A,0x1C,0x36,0x5A,0x36,0x00, + 0x00,0x00,0x44,0x42,0x42,0x42,0x30,0x00,0x00,0x3C,0x00,0x3C,0x42,0x02,0x3C,0x00, + 0x00,0x3C,0x00,0x7C,0x08,0x38,0x66,0x00,0x00,0x14,0x72,0x1C,0x32,0x52,0x34,0x00, + 0x00,0x28,0x2C,0x3A,0x62,0x16,0x10,0x00,0x00,0x08,0x5C,0x6A,0x4A,0x0C,0x18,0x00, + 0x00,0x08,0x0C,0x38,0x4C,0x4A,0x38,0x00,0x00,0x00,0x00,0x1C,0x62,0x02,0x1C,0x00, + 0x00,0x00,0x80,0x7E,0x00,0x00,0x00,0x00,0x28,0xF2,0x3C,0x6A,0xAA,0xB6,0xEC,0x00, + 0x80,0x88,0x84,0x84,0x82,0x92,0x70,0x00,0x78,0x00,0x3C,0xC2,0x02,0x04,0x78,0x00, + 0x78,0x00,0xFC,0x08,0x30,0x50,0x9E,0x00,0x2C,0xF2,0x20,0x7C,0xA2,0xA2,0xE4,0x00, + 0x28,0xF4,0x2A,0x4A,0x4A,0x88,0xB0,0x00,0x20,0xFC,0x12,0xFC,0x08,0xC2,0x7C,0x00, + 0x04,0x18,0x60,0x80,0xC0,0x30,0x0E,0x00,0x84,0xBE,0x84,0x84,0x84,0x84,0x58,0x00, + 0x00,0x7C,0x02,0x00,0x80,0x82,0x7E,0x00,0x20,0xFE,0x10,0x78,0x8C,0xC0,0x7C,0x00, + 0x80,0x80,0x80,0x80,0x82,0x84,0x78,0x00,0x04,0xFE,0x3C,0x44,0x7C,0x04,0x78,0x00, + 0x44,0x5E,0xF4,0x44,0x48,0x40,0x3E,0x00,0x44,0x58,0xE0,0x3E,0xC0,0x40,0x3C,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x90,0x90,0x60,0x00, + 0x1E,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0xF0,0x00, + 0x00,0x00,0x00,0x80,0x40,0x60,0x60,0x00,0x00,0x00,0x00,0x30,0x78,0x30,0x00,0x00, + 0x1E,0x62,0x1E,0x62,0x04,0x0C,0x30,0x00,0x00,0x00,0x1E,0x6A,0x0E,0x08,0x18,0x00, + 0x00,0x00,0x06,0x18,0x68,0x08,0x08,0x00,0x00,0x10,0x1C,0x72,0x42,0x04,0x38,0x00, + 0x00,0x00,0x0C,0x78,0x10,0x10,0x7E,0x00,0x00,0x08,0x08,0x7C,0x18,0x28,0x48,0x00, + 0x00,0x00,0x26,0x1A,0x72,0x10,0x08,0x00,0x00,0x00,0x0C,0x34,0x04,0x08,0x7E,0x00, + 0x00,0x00,0x78,0x04,0x3C,0x04,0x78,0x00,0x00,0x00,0x52,0x4A,0x22,0x04,0x38,0x00, + 0x00,0x00,0x80,0x7E,0x00,0x00,0x00,0x00,0x3C,0xC2,0x14,0x1C,0x10,0x30,0x60,0x00, + 0x02,0x0C,0x38,0xC8,0x08,0x08,0x08,0x00,0x60,0x3C,0xE2,0x82,0x82,0x04,0x38,0x00, + 0x00,0x1C,0x70,0x10,0x10,0x1C,0xE2,0x00,0x08,0xFE,0x18,0x38,0x68,0xC8,0x18,0x00, + 0x10,0x3E,0xD2,0x12,0x22,0x62,0xCC,0x00,0x20,0x3C,0xF0,0x1E,0xF0,0x08,0x08,0x00, + 0x10,0x3E,0x62,0xC2,0x04,0x0C,0x70,0x00,0x40,0x7E,0x44,0x84,0x84,0x08,0x30,0x00, + 0x3E,0xC2,0x02,0x02,0x02,0x02,0xFC,0x00,0x44,0x5E,0xE4,0x44,0x44,0x08,0xF0,0x00, + 0x60,0x12,0xC2,0x22,0x04,0x04,0xF8,0x00,0x3C,0xC6,0x0C,0x08,0x38,0x6C,0xC6,0x00, + 0x40,0x4E,0x72,0xC4,0x4C,0x40,0x3E,0x00,0x82,0x42,0x62,0x04,0x04,0x08,0x70,0x00, + 0x3C,0x42,0x72,0x8A,0x04,0x0C,0x70,0x00,0x0C,0xF8,0x10,0xFE,0x10,0x10,0x60,0x00, + 0x22,0xA2,0x92,0x42,0x04,0x08,0x70,0x00,0x3C,0x40,0x1E,0xE8,0x08,0x10,0x60,0x00, + 0x40,0x40,0x70,0x4C,0x42,0x40,0x40,0x00,0x08,0x3E,0xC8,0x08,0x08,0x18,0x70,0x00, + 0x00,0x1C,0x60,0x00,0x00,0x3C,0xC2,0x00,0x3C,0xC2,0x26,0x38,0x1C,0x36,0xE2,0x00, + 0x10,0x3C,0xC6,0x1C,0x38,0xD6,0x12,0x00,0x02,0x02,0x02,0x06,0x04,0x1C,0xF0,0x00, + 0x18,0x4C,0x44,0x46,0x42,0x82,0x82,0x00,0x80,0x86,0xBC,0xE0,0x80,0x80,0x7E,0x00, + 0x3C,0xC2,0x02,0x02,0x04,0x08,0x30,0x00,0x30,0x48,0x4C,0x84,0x86,0x02,0x02,0x00, + 0x10,0xFE,0x10,0x54,0x52,0x92,0x92,0x00,0x3C,0xC2,0x02,0x44,0x28,0x10,0x0C,0x00, + 0x70,0x0C,0x60,0x18,0xC4,0x30,0x0E,0x00,0x30,0x40,0x4C,0x84,0x8E,0xBA,0x62,0x00, + 0x04,0x04,0x64,0x18,0x0C,0x16,0xE2,0x00,0x1C,0xE0,0x3E,0xE0,0x20,0x20,0x1E,0x00, + 0x4E,0x52,0x62,0xE4,0x20,0x10,0x18,0x00,0x1C,0x64,0x04,0x08,0x08,0x10,0xFE,0x00, + 0x1C,0x62,0x02,0x3E,0x02,0x02,0x7C,0x00,0x3C,0xC0,0x3E,0xC2,0x02,0x04,0x78,0x00, + 0x44,0x42,0x42,0x42,0x22,0x04,0x78,0x00,0x50,0x50,0x52,0x52,0x52,0x54,0x88,0x00, + 0x80,0x80,0x82,0x82,0x84,0x88,0xF0,0x00,0x1C,0xE2,0x82,0x82,0x82,0x4C,0x74,0x00, + 0x3C,0xC2,0x82,0x82,0x02,0x04,0x38,0x00,0xC0,0x62,0x22,0x02,0x04,0x08,0xF0,0x00, + 0x00,0x00,0x00,0x00,0x0A,0x05,0x05,0x00,0x00,0x00,0x00,0x00,0x02,0x05,0x02,0x00, + 0x20,0xF8,0x40,0x5E,0x80,0xA0,0x9E,0x00,0x20,0xFE,0x40,0x7C,0xC2,0x86,0x3C,0x00, + 0x00,0x3C,0xC6,0x02,0x02,0x0C,0x38,0x00,0x0E,0xF8,0x10,0x20,0x20,0x10,0x0E,0x00, + 0x40,0x4C,0x30,0x40,0x80,0x80,0x7E,0x00,0x44,0xF2,0x4A,0x9C,0xA4,0xA6,0x3A,0x00, + 0x40,0x5C,0x82,0x80,0xA0,0xA0,0x9E,0x00,0x48,0x7C,0x52,0xB2,0xBE,0xAA,0x4C,0x00, + 0x20,0xFC,0x32,0x62,0xEE,0xAA,0x2C,0x00,0x38,0x54,0x92,0x92,0xB2,0xA2,0x4C,0x00, + 0x44,0x5E,0x84,0x9C,0xA4,0xA6,0x9C,0x00,0x28,0xEE,0x44,0x84,0x84,0x44,0x38,0x00, + 0x78,0x10,0x64,0x34,0x8A,0x8A,0x30,0x00,0x30,0x58,0x48,0x84,0x84,0x02,0x02,0x00, + 0xBC,0x88,0xBE,0x84,0xBC,0xA6,0x9C,0x00,0x68,0x1E,0x68,0x1E,0x78,0x8C,0x7A,0x00, + 0x70,0x14,0x7C,0x96,0x94,0x94,0x68,0x00,0x2C,0xF2,0x60,0xA0,0xA2,0xC2,0x7C,0x00, + 0x48,0x7C,0x6A,0xAA,0xB2,0xB2,0x6C,0x00,0x10,0xF8,0x20,0xF8,0x22,0x22,0x1C,0x00, + 0x48,0x5C,0x6A,0xC2,0x64,0x20,0x18,0x00,0x10,0xBC,0xD6,0xCA,0xAA,0x1C,0x70,0x00, + 0x10,0x1C,0x12,0x70,0x9C,0x92,0x70,0x00,0xE0,0x18,0x40,0x7C,0xC2,0x82,0x3C,0x00, + 0x44,0x42,0x82,0xA2,0x62,0x04,0x78,0x00,0x7C,0x38,0x7C,0xC2,0xBA,0x26,0x3C,0x00, + 0x48,0xD4,0x64,0x64,0xC4,0xC4,0x46,0x00,0x7C,0x30,0x7C,0xC2,0x82,0x06,0x3C,0x00, + 0x20,0xFC,0x32,0x62,0xE2,0xA2,0x2C,0x00,0x10,0x30,0x60,0x72,0xD2,0x92,0x9C,0x00, + 0x00,0x00,0x00,0x00,0x0A,0x05,0x05,0x00,0x00,0x00,0x00,0x00,0x02,0x05,0x02,0x00 +}; + +bool bios_install(void) +{ + //=== Install the reverse engineered bios + int i; + + uint32 vectable[] = + { + 0xFF27A2, //0 VECT_SHUTDOWN + 0xFF1030, //1 VECT_CLOCKGEARSET + 0xFF1440, //2 VECT_RTCGET + 0xFF12B4, //3 ? + 0xFF1222, //4 VECT_INTLVSET + 0xFF8D8A, //5 VECT_SYSFONTSET + 0xFF6FD8, //6 VECT_FLASHWRITE + 0xFF7042, //7 VECT_FLASHALLERS + 0xFF7082, //8 VECT_FLASHERS + 0xFF149B, //9 VECT_ALARMSET + 0xFF1033, //10 ? + 0xFF1487, //11 VECT_ALARMDOWNSET + 0xFF731F, //12 ? + 0xFF70CA, //13 VECT_FLASHPROTECT + 0xFF17C4, //14 VECT_GEMODESET + 0xFF1032, //15 ? + + 0xFF2BBD, //0x10 VECT_COMINIT + 0xFF2C0C, //0x11 VECT_COMSENDSTART + 0xFF2C44, //0x12 VECT_COMRECIVESTART + 0xFF2C86, //0x13 VECT_COMCREATEDATA + 0xFF2CB4, //0x14 VECT_COMGETDATA + 0xFF2D27, //0x15 VECT_COMONRTS + 0xFF2D33, //0x16 VECT_COMOFFRTS + 0xFF2D3A, //0x17 VECT_COMSENDSTATUS + 0xFF2D4E, //0x18 VECT_COMRECIVESTATUS + 0xFF2D6C, //0x19 VECT_COMCREATEBUFDATA + 0xFF2D85, //0x1a VECT_COMGETBUFDATA + }; + + //System Call Table, install iBIOSHLE instructions + for (i = 0; i <= 0x1A; i++) + { + *(uint32*)(ngpc_bios + 0xFE00 + (i * 4)) = htole32(vectable[i]); + ngpc_bios[vectable[i] & 0xFFFF] = 0x1F; //iBIOSHLE + } + + //System Font + memcpy(ngpc_bios + 0x8DCF, font, 0x800); + + //Default Interrupt handler + ngpc_bios[0x23DF] = 0x07; //RETI + + // ========== + + //Install a Quick and Dirty Bios + ngpc_bios[0xFFFE] = 0x68; // - JR 0xFFFFFE (Infinite loop!) + ngpc_bios[0xFFFF] = 0xFE; + + return TRUE; //Success +} + +//============================================================================= diff --git a/libmednahawk/src/ngp/bios.h b/libmednahawk/src/ngp/bios.h new file mode 100644 index 0000000000..57293352a4 --- /dev/null +++ b/libmednahawk/src/ngp/bios.h @@ -0,0 +1,52 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + bios.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +18 AUG 2002 - neopop_uk +======================================= +- Moved reset() and biosInstall() to neopop.h + +//--------------------------------------------------------------------------- +*/ + +#ifndef __BIOS__ +#define __BIOS__ +//============================================================================= + +extern uint8 ngpc_bios[0x10000]; + +void iBIOSHLE(void); + +void biosDecode(int function); +void BIOSHLE_Reset(void); +int BIOSHLE_StateAction(StateMem *sm, int load, int data_only); + +//============================================================================= +#endif + diff --git a/libmednahawk/src/ngp/biosHLE.cpp b/libmednahawk/src/ngp/biosHLE.cpp new file mode 100644 index 0000000000..6a83a3047c --- /dev/null +++ b/libmednahawk/src/ngp/biosHLE.cpp @@ -0,0 +1,629 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "bios.h" +#include "TLCS900h_registers.h" +#include "TLCS900h_interpret.h" +#include "mem.h" +#include "flash.h" +#include "dma.h" +#include "interrupt.h" + + +static uint8 CacheIntPrio[0xB]; // Iinterrupt prio registers at 0x0070-0x007a don't have priority readable. + // This should probably be stored in BIOS work RAM somewhere instead of a separate array, but I don't know where! + + +void BIOSHLE_Reset(void) +{ + memset(CacheIntPrio, 0, sizeof(CacheIntPrio)); + CacheIntPrio[0] = 0x02; + CacheIntPrio[1] = 0x32; + + for(int x = 0; x < 0xB; x++) + storeB(0x70 + x, CacheIntPrio[x]); +} + +/* This is the custom HLE instruction. I considered it was the fastest and +most streamlined way of intercepting a bios call. The operation performed +is dependant on the current program counter. */ + +void iBIOSHLE(void) +{ + //Only works within the bios + if ((pc & 0xFF0000) != 0xFF0000) + return; + + pc --; //Compensate for processing this instruction. + + cycles = 8; //TODO: Correct cycle counts (or approx?) + + //if(pc != 0xff1222) + //printf("SPOON: %08x\n", pc); + + switch (pc & 0xffffff) + { + + //default: printf("SPOON: %08x\n", pc); break; + //VECT_SHUTDOWN + case 0xFF27A2: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + if (a != 0xBAADC0DE) + system_debug_message("VECT_SHUTDOWN: called before %06X", a); + push32(a); + } + + system_debug_stop(); +#endif + { + //Cheap bit of code to stop the message appearing repeatedly. + uint32 a = pop32(); + if (a != 0xBAADC0DE) + MDFN_printf("IDS_POWER"); + push32(0xBAADC0DE); //Sure is! + } + + return; //Don't pop a return address, stay here + + //VECT_CLOCKGEARSET + case 0xFF1030: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_CLOCKGEARSET: called before %06X", a); + push32(a); + } +#endif + //MDFN_printf("%d\n", rCodeB(0x35)); + //TODO + // if (rCodeB(0x35) > 0) + // system_message("Unsupported clock gear %d set\nPlease inform the author", rCodeB(0x35)); + + break; + + //VECT_RTCGET + case 0xFF1440: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_RTCGET: called before %06X", a); + push32(a); + } +#endif + + if (rCodeL(0x3C) < 0xC000) + { + //Copy data from hardware area + storeB(rCodeL(0x3C) + 0, loadB(0x91)); + storeB(rCodeL(0x3C) + 1, loadB(0x92)); + storeB(rCodeL(0x3C) + 2, loadB(0x93)); + storeB(rCodeL(0x3C) + 3, loadB(0x94)); + storeB(rCodeL(0x3C) + 4, loadB(0x95)); + storeB(rCodeL(0x3C) + 5, loadB(0x96)); + storeB(rCodeL(0x3C) + 6, loadB(0x97)); + } + + break; + + //? + //case 0xFF12B4: + // break; + + //VECT_INTLVSET + case 0xFF1222: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_INTLVSET: called before %06X", a); + push32(a); + } +#endif + + { + + uint8 level = rCodeB(0x35); //RB3 + uint8 interrupt = rCodeB(0x34); //RC3 + + // 0 - Interrupt from RTC alarm + // 1 - Interrupt from the Z80 CPU + // 2 - Interrupt from the 8 bit timer 0 + // 3 - Interrupt from the 8 bit timer 1 + // 4 - Interrupt from the 8 bit timer 2 + // 5 - Interrupt from the 8 bit timer 3 + // 6 - End of transfer interrupt from DMA channel 0 + // 7 - End of transfer interrupt from DMA channel 1 + // 8 - End of transfer interrupt from DMA channel 2 + // 9 - End of transfer interrupt from DMA channel 3 + + switch(interrupt) + { + case 0x00: CacheIntPrio[0x0] = (CacheIntPrio[0x0] & 0xf0) | (level & 0x07); + storeB(0x70, CacheIntPrio[0x0]); + break; + + case 0x01: CacheIntPrio[0x1] = (CacheIntPrio[0x1] & 0x0f) | ((level & 0x07)<<4); + storeB(0x71, CacheIntPrio[0x1]); + break; + + case 0x02: CacheIntPrio[0x3] = (CacheIntPrio[0x3] & 0xf0) | (level & 0x07); + storeB(0x73, CacheIntPrio[0x3]); + break; + + case 0x03: CacheIntPrio[0x3] = (CacheIntPrio[0x3] & 0x0f) | ((level & 0x07)<<4); + storeB(0x73, CacheIntPrio[0x3]); + break; + + case 0x04: CacheIntPrio[0x4] = (CacheIntPrio[0x4] & 0xf0) | (level & 0x07); + storeB(0x74, CacheIntPrio[0x4]); + break; + + case 0x05: CacheIntPrio[0x4] = (CacheIntPrio[0x4] & 0x0f) | ((level & 0x07)<<4); + storeB(0x74, CacheIntPrio[0x4]); + break; + + case 0x06: CacheIntPrio[0x9] = (CacheIntPrio[0x9] & 0xf0) | (level & 0x07); + storeB(0x79, CacheIntPrio[0x9]); + break; + + case 0x07: CacheIntPrio[0x9] = (CacheIntPrio[0x9] & 0x0f) | ((level & 0x07)<<4); + storeB(0x79, CacheIntPrio[0x9]); + break; + + case 0x08: CacheIntPrio[0xa] = (CacheIntPrio[0xa] & 0xf0) | (level & 0x07); + storeB(0x7a, CacheIntPrio[0xa]); + break; + + case 0x09: CacheIntPrio[0xa] = (CacheIntPrio[0xa] & 0x0f) | ((level & 0x07)<<4); + storeB(0x7a, CacheIntPrio[0xa]); + break; + default: puts("DOH"); break; + } + } + break; + + //VECT_SYSFONTSET + case 0xFF8D8A: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_SYSFONTSET: called before %06X", a); + push32(a); + } +#endif + { + uint8 a,b,c, j; + uint16 i, dst = 0xA000; + + b = rCodeB(0x30) >> 4; + a = rCodeB(0x30) & 3; + + for (i = 0; i < 0x800; i++) + { + c = ngpc_bios[0x8DCF + i]; + + for (j = 0; j < 8; j++, c<<=1) + { + uint16 data16; + + data16 = loadW(dst); + data16 <<= 2; + storeW(dst, data16); + + if (c & 0x80) storeB(dst, loadB(dst) | a); + else storeB(dst, loadB(dst) | b); + } + + dst += 2; + } + } + + break; + + //VECT_FLASHWRITE + case 0xFF6FD8: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_FLASHWRITE: called before %06X", a); + push32(a); + } +#endif + { + uint32 i, bank = 0x200000; + + //Select HI rom? + if (rCodeB(0x30) == 1) + bank = 0x800000; + +#ifdef NEOPOP_DEBUG + if (filter_bios) + system_debug_message("VECT_FLASHWRITE: Copy %06X -> %06X, %d bytes", + rCodeL(0x3C), rCodeL(0x38) + bank, rCodeW(0x34) * 256); +#endif + + memory_flash_error = FALSE; + memory_unlock_flash_write = TRUE; + //Copy as 32 bit values for speed + for (i = 0; i < rCodeW(0x34) * 64ul; i++) + storeL(rCodeL(0x38) + bank + (i * 4), loadL(rCodeL(0x3C) + (i * 4))); + memory_unlock_flash_write = FALSE; + + if (memory_flash_error) + { +#ifdef NEOPOP_DEBUG + if (filter_bios) + system_debug_message("VECT_FLASHWRITE: Error"); +#endif + rCodeB(0x30) = 0xFF; //RA3 = SYS_FAILURE + } + else + { + uint32 address = rCodeL(0x38); + if (rCodeB(0x30) == 1) + address += 0x800000; + else + address += 0x200000; + + //Save this data to an external file + flash_write(address, rCodeW(0x34) * 256); + + rCodeB(0x30) = 0; //RA3 = SYS_SUCCESS + } + } + + break; + + //VECT_FLASHALLERS + case 0xFF7042: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_FLASHALLERS: called before %06X", a); + push32(a); + } +#endif + //TODO + rCodeB(0x30) = 0; //RA3 = SYS_SUCCESS + break; + + //VECT_FLASHERS + case 0xFF7082: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_FLASHERS: called before %06X", a); + push32(a); + } +#endif +#ifdef NEOPOP_DEBUG + if (filter_bios) + system_debug_message("VECT_FLASHERS: bank %d, block %d (?)", rCodeB(0x30), rCodeB(0x35)); +#endif + //TODO + rCodeB(0x30) = 0; //RA3 = SYS_SUCCESS + break; + + //VECT_ALARMSET + case 0xFF149B: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_ALARMSET: called before %06X", a); + push32(a); + } +#endif + //TODO + rCodeB(0x30) = 0; //RA3 = SYS_SUCCESS + break; + + //? + //case 0xFF1033: break; + + //VECT_ALARMDOWNSET + case 0xFF1487: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_ALARMDOWNSET: called before %06X", a); + push32(a); + } +#endif + //TODO + rCodeB(0x30) = 0; //RA3 = SYS_SUCCESS + break; + + //? + //case 0xFF731F: break; + + //VECT_FLASHPROTECT + case 0xFF70CA: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_FLASHPROTECT: called before %06X", a); + push32(a); + } +#endif + //TODO + rCodeB(0x30) = 0; //RA3 = SYS_SUCCESS + break; + + //VECT_GEMODESET + case 0xFF17C4: +#ifdef NEOPOP_DEBUG + if (filter_bios) + { + uint32 a = pop32(); + system_debug_message("VECT_GEMODESET: called before %06X", a); + push32(a); + } +#endif + //TODO + break; + + //? + //case 0xFF1032: break; + + //VECT_COMINIT + case 0xFF2BBD: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMINIT: called before %06X", a); + push32(a); + } +#endif + // Nothing to do. + rCodeB(0x30) = 0; //RA3 = COM_BUF_OK + break; + + //VECT_COMSENDSTART + case 0xFF2C0C: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMSENDSTART: called before %06X", a); + push32(a); + } +#endif + // Nothing to do. + break; + + //VECT_COMRECIVESTART + case 0xFF2C44: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMRECIVESTART: called before %06X", a); + push32(a); + } +#endif + // Nothing to do. + break; + + //VECT_COMCREATEDATA + case 0xFF2C86: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMCREATEDATA: called before %06X", a); + push32(a); + } +#endif + { + //Write the byte + uint8 data = rCodeB(0x35); + system_comms_write(data); + } + + //Restore $PC after BIOS-HLE instruction + pc = pop32(); + + TestIntHDMA(11, 0x18); + + //Always COM_BUF_OK because the write call always succeeds. + rCodeB(0x30) = 0x0; //RA3 = COM_BUF_OK + return; + + //VECT_COMGETDATA + case 0xFF2CB4: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMGETDATA: called before %06X", a); + push32(a); + } +#endif + { + uint8 data; + + if (system_comms_read(&data)) + { + rCodeB(0x30) = 0; //COM_BUF_OK + rCodeB(0x35) = data; + + pc = pop32(); + + //Comms. Read interrupt + storeB(0x50, data); + TestIntHDMA(12, 0x19); + + return; + } + else + { + rCodeB(0x30) = 1; //COM_BUF_EMPTY + } + } + + break; + + //VECT_COMONRTS + case 0xFF2D27: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMONRTS: called before %06X", a); + push32(a); + } +#endif + storeB(0xB2, 0); + break; + + //VECT_COMOFFRTS + case 0xFF2D33: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMOFFRTS: called before %06X", a); + push32(a); + } +#endif + storeB(0xB2, 1); + break; + + //VECT_COMSENDSTATUS + case 0xFF2D3A: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMSENDSTATUS: called before %06X", a); + push32(a); + } +#endif + // Nothing to do. + rCodeW(0x30) = 0; //Send Buffer Count, never any pending data! + break; + + //VECT_COMRECIVESTATUS + case 0xFF2D4E: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMRECIVESTATUS: called before %06X", a); + push32(a); + } +#endif + + // Receive Buffer Count + rCodeW(0x30) = system_comms_read(NULL); + + break; + + //VECT_COMCREATEBUFDATA + case 0xFF2D6C: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMCREATEBUFDATA: called before %06X", a); + push32(a); + } +#endif + pc = pop32(); + + while(rCodeB(0x35) > 0) + { + uint8 data; + data = loadB(rCodeL(0x3C)); + + //Write data from (XHL3++) + system_comms_write(data); + rCodeL(0x3C)++; //Next data + + rCodeB(0x35)--; //RB3 = Count Left + } + + TestIntHDMA(11, 0x18); + return; + + //VECT_COMGETBUFDATA + case 0xFF2D85: +#ifdef NEOPOP_DEBUG + if (filter_comms) + { + uint32 a = pop32(); + system_debug_message("VECT_COMGETBUFDATA: called before %06X", a); + push32(a); + } +#endif + { + pc = pop32(); + + while(rCodeB(0x35) > 0) + { + uint8 data; + + if (system_comms_read(&data)) + { + //Read data into (XHL3++) + storeB(rCodeL(0x3C), data); + rCodeL(0x3C)++; //Next data + rCodeB(0x35)--; //RB3 = Count Left + + //Comms. Read interrupt + storeB(0x50, data); + TestIntHDMA(12, 0x19); + return; + } + else + break; + } + + } + + return; + } + + //RET + pc = pop32(); +} + +int BIOSHLE_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(CacheIntPrio, 0xB), + SFEND + }; + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "BHLE")) + return(0); + + return(1); +} + +//============================================================================= diff --git a/libmednahawk/src/ngp/dma.cpp b/libmednahawk/src/ngp/dma.cpp new file mode 100644 index 0000000000..ba9f3a3ef0 --- /dev/null +++ b/libmednahawk/src/ngp/dma.cpp @@ -0,0 +1,314 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + dma.c + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +25 JUL 2002 - neopop_uk +======================================= +- Removed incorrect quick-fix code and added new DMA_update functions + to process the dma values. +- Fixed setting of C and M registers +- Added source copy byte and word mode DMA, seems to be only ones used. + +26 JUL 2002 - neopop_uk +======================================= +- Added more DMA modes - "Kikouseki Unitron (J)" uses counter mode + and 4 byte memory to I/O transfer. +- Added load *from* dma control register. + +30 JUL 2002 - neopop_uk +======================================= +- Made DMA_update more secure in it's ability to detect unknown DMA modes. +- DMA mode and count are printed in decimal, for internal consistancy. + +01 AUG 2002 - neopop_uk +======================================= +- Re-written DMA_update for clarity, and added missing modes, + fixes "Super Real Mahjong" + +//--------------------------------------------------------------------------- +*/ + +#include "neopop.h" +#include "TLCS900h_disassemble.h" +#include "dma.h" +#include "mem.h" +#include "interrupt.h" + +//============================================================================= + +static uint32 dmaS[4], dmaD[4]; +static uint16 dmaC[4]; +static uint8 dmaM[4]; + +//============================================================================= + +void reset_dma(void) +{ + memset(dmaS, 0, sizeof(dmaS)); + memset(dmaD, 0, sizeof(dmaD)); + memset(dmaC, 0, sizeof(dmaC)); + memset(dmaM, 0, sizeof(dmaM)); +} + +//============================================================================= + +void DMA_update(int channel) +{ + uint8 mode = (dmaM[channel] & 0x1C) >> 2; + uint8 size = (dmaM[channel] & 0x03); //byte, word or long + + // Correct? + if (dmaC[channel] == 0) + return; + + switch (mode) + { + case 0: // Destination INC mode, I/O to Memory transfer + switch(size) + { + case 0: storeB(dmaD[channel], loadB(dmaS[channel])); + dmaD[channel] += 1; //Byte increment + break; + + case 1: storeW(dmaD[channel], loadW(dmaS[channel])); + dmaD[channel] += 2; //Word increment + break; + + case 2: storeL(dmaD[channel], loadL(dmaS[channel])); + dmaD[channel] += 4; //Long increment + break; + } + break; + + case 1: // Destination DEC mode, I/O to Memory transfer + switch(size) + { + case 0: storeB(dmaD[channel], loadB(dmaS[channel])); + dmaD[channel] -= 1; //Byte decrement + break; + + case 1: storeW(dmaD[channel], loadW(dmaS[channel])); + dmaD[channel] -= 2; //Word decrement + break; + + case 2: storeL(dmaD[channel], loadL(dmaS[channel])); + dmaD[channel] -= 4; //Long decrement + break; + } + break; + + case 2: // Source INC mode, Memory to I/O transfer + switch(size) + { + case 0: storeB(dmaD[channel], loadB(dmaS[channel])); + dmaS[channel] += 1; //Byte increment + break; + + case 1: storeW(dmaD[channel], loadW(dmaS[channel])); + dmaS[channel] += 2; //Word increment + break; + + case 2: storeL(dmaD[channel], loadL(dmaS[channel])); + dmaS[channel] += 4; //Long increment + break; + } + break; + + case 3: // Source DEC mode, Memory to I/O transfer + switch(size) + { + case 0: storeB(dmaD[channel], loadB(dmaS[channel])); + dmaS[channel] -= 1; //Byte decrement + break; + + case 1: storeW(dmaD[channel], loadW(dmaS[channel])); + dmaS[channel] -= 2; //Word decrement + break; + + case 2: storeL(dmaD[channel], loadL(dmaS[channel])); + dmaS[channel] -= 4; //Long decrement + break; + } + break; + + case 4: // Fixed Address Mode + switch(size) + { + case 0: storeB(dmaD[channel], loadB(dmaS[channel])); + break; + + case 1: storeW(dmaD[channel], loadW(dmaS[channel])); + break; + + case 2: storeL(dmaD[channel], loadL(dmaS[channel])); + break; + } + break; + + case 5: // Counter Mode + dmaS[channel] ++; + break; + + default: + MDFN_printf("Bad DMA mode %d\nPlease report this to the author.", dmaM[channel]); + return; + } + + // Perform common counter decrement, + // vector clearing, and interrupt handling. + + dmaC[channel] --; + if (dmaC[channel] == 0) + { + interrupt(14 + channel); + storeB(0x7C + channel, 0); + } +} + +//============================================================================= + +void dmaStoreB(uint8 cr, uint8 data) +{ + switch(cr) + { + case 0x22: dmaM[0] = data; break; + case 0x26: dmaM[1] = data; break; + case 0x2A: dmaM[2] = data; break; + case 0x2E: dmaM[3] = data; break; + + default: + MDFN_printf("dmaStoreB: Unknown register 0x%02X <- %02X\nPlease report this to the author.\n", cr, data); + break; + } +} + +void dmaStoreW(uint8 cr, uint16 data) +{ + switch(cr) + { + case 0x20: dmaC[0] = data; break; + case 0x24: dmaC[1] = data; break; + case 0x28: dmaC[2] = data; break; + case 0x2C: dmaC[3] = data; break; + + default: + MDFN_printf("dmaStoreW: Unknown register 0x%02X <- %04X\nPlease report this to the author.\n", cr, data); + break; + } +} + +void dmaStoreL(uint8 cr, uint32 data) +{ + switch(cr) + { + case 0x00: dmaS[0] = data; break; + case 0x04: dmaS[1] = data; break; + case 0x08: dmaS[2] = data; break; + case 0x0C: dmaS[3] = data; break; + + case 0x10: dmaD[0] = data; break; + case 0x14: dmaD[1] = data; break; + case 0x18: dmaD[2] = data; break; + case 0x1C: dmaD[3] = data; break; + + default: + MDFN_printf("dmaStoreL: Unknown register 0x%02X <- %08X\nPlease report this to the author.\n", cr, data); + break; + } +} + +//============================================================================= + +uint8 dmaLoadB(uint8 cr) +{ + + switch(cr) + { + case 0x22: return dmaM[0]; break; + case 0x26: return dmaM[1]; break; + case 0x2A: return dmaM[2]; break; + case 0x2E: return dmaM[3]; break; + + default: + MDFN_printf("dmaLoadB: Unknown register 0x%02X\nPlease report this to the author.", cr); + return 0; + } +} + +uint16 dmaLoadW(uint8 cr) +{ + switch(cr) + { + case 0x20: return dmaC[0]; break; + case 0x24: return dmaC[1]; break; + case 0x28: return dmaC[2]; break; + case 0x2C: return dmaC[3]; break; + + default: + MDFN_printf("dmaLoadW: Unknown register 0x%02X\nPlease report this to the author.", cr); + return 0; + } +} + +uint32 dmaLoadL(uint8 cr) +{ + switch(cr) + { + case 0x00: return dmaS[0]; break; + case 0x04: return dmaS[1]; break; + case 0x08: return dmaS[2]; break; + case 0x0C: return dmaS[3]; break; + + case 0x10: return dmaD[0]; break; + case 0x14: return dmaD[1]; break; + case 0x18: return dmaD[2]; break; + case 0x1C: return dmaD[3]; break; + + default: + MDFN_printf("dmaLoadL: Unknown register 0x%02X\nPlease report this to the author.", cr); + return 0; + } +} + +int MDFNNGPCDMA_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY32N(dmaS, 4, "DMAS"), + SFARRAY32N(dmaD, 4, "DMAD"), + SFARRAY16N(dmaC, 4, "DMAC"), + SFARRAYN(dmaM, 4, "DMAM"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "DMA")) + return(0); + + return(1); +} diff --git a/libmednahawk/src/ngp/dma.h b/libmednahawk/src/ngp/dma.h new file mode 100644 index 0000000000..01396939fc --- /dev/null +++ b/libmednahawk/src/ngp/dma.h @@ -0,0 +1,57 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +/* +//--------------------------------------------------------------------------- +//========================================================================= + + dma.h + +//========================================================================= +//--------------------------------------------------------------------------- + + History of changes: + =================== + +20 JUL 2002 - neopop_uk +======================================= +- Cleaned and tidied up for the source release + +25 JUL 2002 - neopop_uk +======================================= +- Added function prototype for DMA_update + +//--------------------------------------------------------------------------- +*/ + +#ifndef __DMA__ +#define __DMA__ +//============================================================================= + +void reset_dma(void); + +void DMA_update(int channel); + +uint8 dmaLoadB(uint8 cr); +uint16 dmaLoadW(uint8 cr); +uint32 dmaLoadL(uint8 cr); + +void dmaStoreB(uint8 cr, uint8 data); +void dmaStoreW(uint8 cr, uint16 data); +void dmaStoreL(uint8 cr, uint32 data); + +int MDFNNGPCDMA_StateAction(StateMem *sm, int load, int data_only); + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/flash.cpp b/libmednahawk/src/ngp/flash.cpp new file mode 100644 index 0000000000..5eee29fd62 --- /dev/null +++ b/libmednahawk/src/ngp/flash.cpp @@ -0,0 +1,339 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "flash.h" +#include "mem.h" + +//----------------------------------------------------------------------------- +// Local Definitions +//----------------------------------------------------------------------------- +//This value is used to verify flash data - it is set to the +//version number that the flash description was modified for. + +#define FLASH_VALID_ID 0x0053 + +//Number of different flash blocks, this should be enough. + +#define FLASH_MAX_BLOCKS 256 + +typedef struct +{ + //Flash Id + uint16 valid_flash_id; // = FLASH_VALID_ID + + uint16 block_count; //Number of flash data blocks + + uint32 total_file_length; // header + block[0 - block_count] + +} FlashFileHeader; + +typedef struct +{ + uint32 start_address; // 24 bit address + uint16 data_length; // length of following data + + //Followed by data_length bytes of the actual data. + +} FlashFileBlockHeader; + +//----------------------------------------------------------------------------- +// Local Data +//----------------------------------------------------------------------------- +static FlashFileBlockHeader blocks[256]; +static uint16 block_count; + +//============================================================================= + +//----------------------------------------------------------------------------- +// optimise_blocks() +//----------------------------------------------------------------------------- +static void optimise_blocks(void) +{ + int i, j; + + // Bubble Sort by address + for (i = 0; i < block_count - 1; i++) + { + for (j = i+1; j < block_count; j++) + { + //Swap? + if (blocks[i].start_address > blocks[j].start_address) + { + uint32 temp32; + uint16 temp16; + + temp32 = blocks[i].start_address; + blocks[i].start_address = blocks[j].start_address; + blocks[j].start_address = temp32; + + temp16 = blocks[i].data_length; + blocks[i].data_length = blocks[j].data_length; + blocks[j].data_length = temp16; + } + } + } + + //Join contiguous blocks + //Only advance 'i' if required, this will allow subsequent + //blocks to be compared to the newly expanded block. + for (i = 0; i < block_count - 1; /**/) + { + //Next block lies within (or borders) this one? + if (blocks[i+1].start_address <= + (blocks[i].start_address + blocks[i].data_length)) + { + //Extend the first block + blocks[i].data_length = + (uint16)((blocks[i+1].start_address + blocks[i+1].data_length) - + blocks[i].start_address); + + //Remove the next one. + for (j = i+2; j < block_count; j++) + { + blocks[j-1].start_address = blocks[j].start_address; + blocks[j-1].data_length = blocks[j].data_length; + } + block_count --; + } + else + { + i++; // Try the next block + } + } +} + +void do_flash_read(uint8 *flashdata) +{ + FlashFileHeader header; + uint8 *fileptr; + uint16 i; + uint32 j; + bool PREV_memory_unlock_flash_write = memory_unlock_flash_write; // kludge, hack, FIXME + + memcpy(&header, flashdata, sizeof(header)); + + //Read header + block_count = header.block_count; + fileptr = flashdata + sizeof(FlashFileHeader); + + //Copy blocks + memory_unlock_flash_write = TRUE; + for (i = 0; i < block_count; i++) + { + FlashFileBlockHeader* current = (FlashFileBlockHeader*)fileptr; + fileptr += sizeof(FlashFileBlockHeader); + + blocks[i].start_address = current->start_address; + blocks[i].data_length = current->data_length; + + //Copy data + for (j = 0; j < blocks[i].data_length; j++) + { + storeB(blocks[i].start_address + j, *fileptr); + fileptr++; + } + } + memory_unlock_flash_write = PREV_memory_unlock_flash_write; + + optimise_blocks(); //Optimise + + + //Output block list... +/* for (i = 0; i < block_count; i++) + system_debug_message("flash block: %06X, %d bytes", + blocks[i].start_address, blocks[i].data_length);*/ +} + + +//----------------------------------------------------------------------------- +// flash_read() +//----------------------------------------------------------------------------- +void flash_read(void) +{ + FlashFileHeader header; + uint8* flashdata; + + //Initialise the internal flash configuration + block_count = 0; + + //Read flash buffer header + if (system_io_flash_read((uint8*)&header, sizeof(FlashFileHeader)) == FALSE) + return; //Silent failure - no flash data yet. + + //Verify correct flash id + if (header.valid_flash_id != FLASH_VALID_ID) + { + MDFN_PrintError("IDS_BADFLASH"); + return; + } + + //Read the flash data + flashdata = (uint8*)malloc(header.total_file_length * sizeof(uint8)); + system_io_flash_read(flashdata, header.total_file_length); + + do_flash_read(flashdata); + + free(flashdata); +} + + +//----------------------------------------------------------------------------- +// flash_write() +//----------------------------------------------------------------------------- +void flash_write(uint32 start_address, uint16 length) +{ + uint16 i; + + //Now we need a new flash command before the next flash write will work! + memory_flash_command = FALSE; + +// system_debug_message("flash write: %06X, %d bytes", start_address, length); + + for (i = 0; i < block_count; i++) + { + //Got this block with enough bytes to cover it + if (blocks[i].start_address == start_address && + blocks[i].data_length >= length) + { + return; //Nothing to do, block already registered. + } + + //Got this block with but it's length is too short + if (blocks[i].start_address == start_address && + blocks[i].data_length < length) + { + blocks[i].data_length = length; //Enlarge block updating. + return; + } + } + + // New block needs to be added + blocks[block_count].start_address = start_address; + blocks[block_count].data_length = length; + block_count++; +} + +static uint8 *make_flash_commit(int32 *length) +{ + int i; + FlashFileHeader header; + uint8 *flashdata, *fileptr; + + //No flash data? + if (block_count == 0) + return(NULL); + + //Optimise before writing + optimise_blocks(); + + //Build a header; + header.valid_flash_id = FLASH_VALID_ID; + header.block_count = block_count; + header.total_file_length = sizeof(FlashFileHeader); + for (i = 0; i < block_count; i++) + { + header.total_file_length += sizeof(FlashFileBlockHeader); + header.total_file_length += blocks[i].data_length; + } + + //Write the flash data + flashdata = (uint8*)malloc(header.total_file_length * sizeof(uint8)); + + //Copy header + memcpy(flashdata, &header, sizeof(FlashFileHeader)); + fileptr = flashdata + sizeof(FlashFileHeader); + + //Copy blocks + for (i = 0; i < block_count; i++) + { + uint32 j; + + memcpy(fileptr, &blocks[i], sizeof(FlashFileBlockHeader)); + fileptr += sizeof(FlashFileBlockHeader); + + //Copy data + for (j = 0; j < blocks[i].data_length; j++) + { + *fileptr = loadB(blocks[i].start_address + j); + fileptr++; + } + } + + *length = header.total_file_length; + return(flashdata); +} + +void flash_commit(void) +{ + int32 length = 0; + uint8 *flashdata = make_flash_commit(&length); + + if(flashdata) + { + system_io_flash_write(flashdata, length); + free(flashdata); + } +} + + +int FLASH_StateAction(StateMem *sm, int load, int data_only) +{ + int32 FlashLength = 0; + uint8 *flashdata = NULL; + + if(!load) + { + flashdata = make_flash_commit(&FlashLength); + } + + SFORMAT FINF_StateRegs[] = + { + SFVAR(FlashLength), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, FINF_StateRegs, "FINF")) + return(0); + + if(!FlashLength) // No flash data to save, OR no flash data to load. + { + if(flashdata) free(flashdata); + return(1); + } + + if(load) + flashdata = (uint8 *)malloc(FlashLength); + + SFORMAT FLSH_StateRegs[] = + { + SFARRAY(flashdata, FlashLength), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, FLSH_StateRegs, "FLSH")) + { + free(flashdata); + return(0); + } + + if(load) + { + memcpy(ngpc_rom.data, ngpc_rom.orig_data, ngpc_rom.length); + do_flash_read(flashdata); + } + + free(flashdata); + return(1); +} diff --git a/libmednahawk/src/ngp/flash.h b/libmednahawk/src/ngp/flash.h new file mode 100644 index 0000000000..ae03e28031 --- /dev/null +++ b/libmednahawk/src/ngp/flash.h @@ -0,0 +1,31 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __FLASH__ +#define __FLASH__ +//============================================================================= + +void flash_read(void); + +//Marks flash blocks for saving. +void flash_write(uint32 start_address, uint16 length); + +//Stores the flash data +void flash_commit(void); + + +int FLASH_StateAction(StateMem *sm, int load, int data_only); + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/gfx.cpp b/libmednahawk/src/ngp/gfx.cpp new file mode 100644 index 0000000000..4f85121b88 --- /dev/null +++ b/libmednahawk/src/ngp/gfx.cpp @@ -0,0 +1,367 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "mem.h" +#include "gfx.h" +#include "interrupt.h" +#include "dma.h" +#include "TLCS900h_registers.h" + +NGPGFX_CLASS::NGPGFX_CLASS(void) +{ + layer_enable = 1 | 2 | 4; +} + +NGPGFX_CLASS::~NGPGFX_CLASS() +{ + + +} + +void NGPGFX_CLASS::reset(void) +{ + memset(SPPLT, 0x7, sizeof(SPPLT)); + memset(SCRP1PLT, 0x7, sizeof(SCRP1PLT)); + memset(SCRP2PLT, 0x7, sizeof(SCRP2PLT)); + + raster_line = 0; + S1SO_H = 0; + S1SO_V = 0; + S2SO_H = 0; + S2SO_V = 0; + WBA_H = 0; + WBA_V = 0; + + WSI_H = 0xFF; + WSI_V = 0xFF; + + C_OVR = 0; + BLNK = 0; + + PO_H = 0; + PO_V = 0; + P_F = 0; + + BG_COL = 0x7; + CONTROL_2D = 0; + CONTROL_INT = 0; + SCREEN_PERIOD = 0xC6; + K2GE_MODE = 0; + + delayed_settings(); +} + +void NGPGFX_CLASS::power(void) +{ + reset(); + + memset(ScrollVRAM, 0, sizeof(ScrollVRAM)); + memset(CharacterRAM, 0, sizeof(CharacterRAM)); + memset(SpriteVRAM, 0, sizeof(SpriteVRAM)); + memset(SpriteVRAMColor, 0, sizeof(SpriteVRAMColor)); + memset(ColorPaletteRAM, 0, sizeof(ColorPaletteRAM)); +} + +void NGPGFX_CLASS::delayed_settings(void) +{ + //Window dimensions + winx = WBA_H; + winy = WBA_V; + winw = WSI_H; + winh = WSI_V; + + //Scroll Planes (Confirmed delayed) + scroll1x = S1SO_H; + scroll1y = S1SO_V; + + scroll2x = S2SO_H; + scroll2y = S2SO_V; + + //Sprite offset (Confirmed delayed) + scrollsprx = PO_H; + scrollspry = PO_V; + + //Plane Priority (Confirmed delayed) + planeSwap = P_F & 0x80; + + //Background colour register (Confirmed delayed) + bgc = BG_COL; + + //2D Control register (Confirmed delayed) + oowc = CONTROL_2D & 7; + negative = CONTROL_2D & 0x80; +} + +bool NGPGFX_CLASS::hint(void) +{ + //H_Int / Delayed settings + if ((raster_line < SCREEN_HEIGHT-1 || raster_line == SCREEN_PERIOD)) + { + delayed_settings(); //Get delayed settings + + //Allowed? + if (CONTROL_INT & 0x40) + return(1); + } + return(0); +} + +void NGPGFX_CLASS::set_pixel_format(const MDFN_PixelFormat &format) +{ + for(int x = 0; x < 4096; x++) + { + int r = (x & 0xF) * 17; + int g = ((x >> 4) & 0xF) * 17; + int b = ((x >> 8) & 0xF) * 17; + + ColorMap[x] = format.MakeColor(r, g, b); + } +} + +bool NGPGFX_CLASS::draw(MDFN_Surface *surface, bool skip) +{ + bool ret = 0; + + //Draw the scanline + if (raster_line < SCREEN_HEIGHT && !skip) + { + if (!K2GE_MODE) draw_scanline_colour(layer_enable, raster_line); + else draw_scanline_mono(layer_enable, raster_line); + + uint32 *dest = surface->pixels + surface->pitch32 * raster_line; + for(int x = 0; x < SCREEN_WIDTH; x++) + dest[x] = ColorMap[cfb_scanline[x] & 4095]; + } + raster_line++; + + //V_Int? + if (raster_line == SCREEN_HEIGHT) + { + BLNK = 1; + ret = 1; + + if(CONTROL_INT & 0x80) // (statusIFF() <= 4 + TestIntHDMA(5, 0x0B); + } + + //End of V_Int + if(raster_line == SCREEN_PERIOD + 1) //Last scanline + 1 + { + raster_line = 0; + C_OVR = 0; + BLNK = 0; + } + + return(ret); +} + +int NGPGFX_CLASS::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(raster_line), + SFVAR(S1SO_H), SFVAR(S1SO_V), SFVAR(S2SO_H), SFVAR(S2SO_V), + SFVAR(WBA_H), SFVAR(WBA_V), SFVAR(WSI_H), SFVAR(WSI_V), + SFVAR(C_OVR), SFVAR(BLNK), + SFVAR(PO_H), SFVAR(PO_V), + SFVAR(P_F), + SFVAR(BG_COL), + SFVAR(CONTROL_2D), + SFVAR(CONTROL_INT), + SFVAR(SCREEN_PERIOD), + SFVAR(K2GE_MODE), + + SFARRAY(SPPLT, 6), + SFARRAY(SCRP1PLT, 6), + SFARRAY(SCRP2PLT, 6), + + SFVAR(winx), SFVAR(winw), + SFVAR(winy), SFVAR(winh), + SFVAR(scroll1x), SFVAR(scroll1y), + SFVAR(scroll2x), SFVAR(scroll2y), + SFVAR(scrollsprx), SFVAR(scrollspry), + SFVAR(planeSwap), + SFVAR(bgc), SFVAR(oowc), + + SFVAR(negative), + + SFARRAY(ScrollVRAM, 4096), + SFARRAY(CharacterRAM, 8192), + SFARRAY(SpriteVRAM, 256), + SFARRAY(SpriteVRAMColor, 0x40), + SFARRAY(ColorPaletteRAM, 0x200), + + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "GFX")) + return(0); + + return(1); +} + +void NGPGFX_CLASS::SetLayerEnableMask(uint64 mask) +{ + layer_enable = mask; +} + +//extern uint32 ngpc_soundTS; +void NGPGFX_CLASS::write8(uint32 address, uint8 data) +{ + //if(address >= 0x8032 && address <= 0x8035) + // printf("%08x %02x %d\n", address, data, ngpc_soundTS); + + if(address >= 0x9000 && address <= 0x9fff) + ScrollVRAM[address - 0x9000] = data; + else if(address >= 0xa000 && address <= 0xbfff) + CharacterRAM[address - 0xa000] = data; + else if(address >= 0x8800 && address <= 0x88ff) + SpriteVRAM[address - 0x8800] = data; + else if(address >= 0x8c00 && address <= 0x8c3f) + SpriteVRAMColor[address - 0x8c00] = data & 0x0f; + else if(address >= 0x8200 && address <= 0x83ff) + ColorPaletteRAM[address - 0x8200] = data; + else switch(address) + { + //default: printf("HuhW: %08x\n", address); break; + + case 0x8000: CONTROL_INT = data & 0xC0; break; + case 0x8002: WBA_H = data; break; + case 0x8003: WBA_V = data; break; + case 0x8004: WSI_H = data; break; + case 0x8005: WSI_V = data; break; + case 0x8006: SCREEN_PERIOD = data; break; + case 0x8012: CONTROL_2D = data & 0x87; break; + case 0x8020: PO_H = data; break; + case 0x8021: PO_V = data; break; + case 0x8030: P_F = data & 0x80; break; + case 0x8032: S1SO_H = data; break; + case 0x8033: S1SO_V = data; break; + case 0x8034: S2SO_H = data; break; + case 0x8035: S2SO_V = data; break; + + case 0x8101: SPPLT[0] = data & 0x7; break; + case 0x8102: SPPLT[1] = data & 0x7; break; + case 0x8103: SPPLT[2] = data & 0x7; break; + + case 0x8105: SPPLT[3] = data & 0x7; break; + case 0x8106: SPPLT[4] = data & 0x7; break; + case 0x8107: SPPLT[5] = data & 0x7; break; + + case 0x8109: SCRP1PLT[0] = data & 0x7; break; + case 0x810a: SCRP1PLT[1] = data & 0x7; break; + case 0x810b: SCRP1PLT[2] = data & 0x7; break; + + case 0x810d: SCRP1PLT[3] = data & 0x7; break; + case 0x810e: SCRP1PLT[4] = data & 0x7; break; + case 0x810f: SCRP1PLT[5] = data & 0x7; break; + + case 0x8111: SCRP2PLT[0] = data & 0x7; break; + case 0x8112: SCRP2PLT[1] = data & 0x7; break; + case 0x8113: SCRP2PLT[2] = data & 0x7; break; + + case 0x8115: SCRP2PLT[3] = data & 0x7; break; + case 0x8116: SCRP2PLT[4] = data & 0x7; break; + case 0x8117: SCRP2PLT[5] = data & 0x7; break; + + case 0x8118: BG_COL = data & 0xC7; break; + + case 0x87e0: if(data == 0x52) + { + puts("GEreset"); + reset(); + } + break; + case 0x87e2: K2GE_MODE = data & 0x80; break; + } +} + +void NGPGFX_CLASS::write16(uint32 address, uint16 data) +{ + write8(address, data & 0xFF); + write8(address + 1, data >> 8); +} + +uint8 NGPGFX_CLASS::read8(uint32 address) +{ + if(address >= 0x9000 && address <= 0x9fff) + return(ScrollVRAM[address - 0x9000]); + else if(address >= 0xa000 && address <= 0xbfff) + return(CharacterRAM[address - 0xa000]); + else if(address >= 0x8800 && address <= 0x88ff) + return(SpriteVRAM[address - 0x8800]); + else if(address >= 0x8c00 && address <= 0x8c3f) + return(SpriteVRAMColor[address - 0x8c00]); + else if(address >= 0x8200 && address <= 0x83ff) + return(ColorPaletteRAM[address - 0x8200]); + else switch(address) + { + //default: printf("Huh: %08x\n", address); break; + case 0x8000: return(CONTROL_INT); + case 0x8002: return(WBA_H); + case 0x8003: return(WBA_V); + case 0x8004: return(WSI_H); + case 0x8005: return(WSI_V); + case 0x8006: return(SCREEN_PERIOD); + + case 0x8008: return( (uint8)((abs(TIMER_HINT_RATE - (int)timer_hint)) >> 2) ); //RAS.H read (Simulated horizontal raster position) + case 0x8009: return(raster_line); + case 0x8010: return((C_OVR ? 0x80 : 0x00) | (BLNK ? 0x40 : 0x00)); + case 0x8012: return(CONTROL_2D); + case 0x8020: return(PO_H); + case 0x8021: return(PO_V); + case 0x8030: return(P_F); + case 0x8032: return(S1SO_H); + case 0x8033: return(S1SO_V); + case 0x8034: return(S2SO_H); + case 0x8035: return(S2SO_V); + + case 0x8101: return(SPPLT[0]); break; + case 0x8102: return(SPPLT[1]); break; + case 0x8103: return(SPPLT[2]); break; + + case 0x8105: return(SPPLT[3]); break; + case 0x8106: return(SPPLT[4]); break; + case 0x8107: return(SPPLT[5]); break; + + case 0x8108: return(SCRP1PLT[0]); break; + case 0x8109: return(SCRP1PLT[1]); break; + case 0x810a: return(SCRP1PLT[2]); break; + + case 0x810d: return(SCRP1PLT[3]); break; + case 0x810e: return(SCRP1PLT[4]); break; + case 0x810f: return(SCRP1PLT[5]); break; + + case 0x8111: return(SCRP2PLT[0]); break; + case 0x8112: return(SCRP2PLT[1]); break; + case 0x8113: return(SCRP2PLT[2]); break; + + case 0x8115: return(SCRP2PLT[3]); break; + case 0x8116: return(SCRP2PLT[4]); break; + case 0x8117: return(SCRP2PLT[5]); break; + + case 0x8118: return(BG_COL); + + case 0x87e2: return(K2GE_MODE); + } + + return(0); +} + +uint16 NGPGFX_CLASS::read16(uint32 address) +{ + return(read8(address) | (read8(address + 1) << 8)); +} + diff --git a/libmednahawk/src/ngp/gfx.h b/libmednahawk/src/ngp/gfx.h new file mode 100644 index 0000000000..629de89f34 --- /dev/null +++ b/libmednahawk/src/ngp/gfx.h @@ -0,0 +1,107 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __GFX__ +#define __GFX__ +//============================================================================= + +#define ZDEPTH_BACK_SPRITE 2 +#define ZDEPTH_BACKGROUND_SCROLL 3 +#define ZDEPTH_MIDDLE_SPRITE 4 +#define ZDEPTH_FOREGROUND_SCROLL 5 +#define ZDEPTH_FRONT_SPRITE 6 + +class NGPGFX_CLASS +{ + public: + + NGPGFX_CLASS(); + ~NGPGFX_CLASS(); + + void write8(uint32 address, uint8 data); + void write16(uint32 address, uint16 data); + + uint8 read8(uint32 address); + uint16 read16(uint32 address); + + int StateAction(StateMem *sm, int load, int data_only); + void SetLayerEnableMask(uint64 mask); + void set_pixel_format(const MDFN_PixelFormat &format); + + bool draw(MDFN_Surface *surface, bool skip); + bool hint(void); + + void power(void); + + private: + + // TODO: Alignment for faster memset + uint8 zbuffer[256]; // __attribute__ ((aligned (8))); //Line z-buffer + uint16 cfb_scanline[256]; // __attribute__ ((aligned (8))); + + uint8 winx, winw; + uint8 winy, winh; + uint8 scroll1x, scroll1y; + uint8 scroll2x, scroll2y; + uint8 scrollsprx, scrollspry; + uint8 planeSwap; + uint8 bgc, oowc, negative; + + void reset(void); + void delayed_settings(void); + + void draw_scanline_colour(int, int); + void drawColourPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror, + uint16* palette_ptr, uint8 pal, uint8 depth); + void draw_colour_scroll1(uint8 depth, int ngpc_scanline); + void draw_colour_scroll2(uint8 depth, int ngpc_scanline); + + void draw_scanline_mono(int, int); + void MonoPlot(uint8 x, uint8* palette_ptr, uint16 pal_hi, uint8 index, uint8 depth); + void drawMonoPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror, + uint8* palette_ptr, uint16 pal, uint8 depth); + void draw_mono_scroll1(uint8 depth, int ngpc_scanline); + void draw_mono_scroll2(uint8 depth, int ngpc_scanline); + + + + uint8 ScrollVRAM[4096]; // 9000-9fff + uint8 CharacterRAM[8192]; // a000-bfff + uint8 SpriteVRAM[256]; // 8800-88ff + uint8 SpriteVRAMColor[0x40]; // 8C00-8C3F + uint8 ColorPaletteRAM[0x200]; // 8200-83ff + + uint8 SPPLT[6]; + uint8 SCRP1PLT[6]; + uint8 SCRP2PLT[6]; + + uint8 raster_line; + uint8 S1SO_H, S1SO_V, S2SO_H, S2SO_V; + uint8 WBA_H, WBA_V, WSI_H, WSI_V; + bool C_OVR, BLNK; + uint8 PO_H, PO_V; + uint8 P_F; + uint8 BG_COL; + uint8 CONTROL_2D; + uint8 CONTROL_INT; + uint8 SCREEN_PERIOD; + uint8 K2GE_MODE; + + uint32 ColorMap[4096]; + + int layer_enable; +}; + +#endif + diff --git a/libmednahawk/src/ngp/gfx_scanline_colour.cpp b/libmednahawk/src/ngp/gfx_scanline_colour.cpp new file mode 100644 index 0000000000..0371d9335b --- /dev/null +++ b/libmednahawk/src/ngp/gfx_scanline_colour.cpp @@ -0,0 +1,265 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "mem.h" +#include "gfx.h" + +//============================================================================= + +static const unsigned char mirrored[] = { + 0x00, 0x40, 0x80, 0xc0, 0x10, 0x50, 0x90, 0xd0, + 0x20, 0x60, 0xa0, 0xe0, 0x30, 0x70, 0xb0, 0xf0, + 0x04, 0x44, 0x84, 0xc4, 0x14, 0x54, 0x94, 0xd4, + 0x24, 0x64, 0xa4, 0xe4, 0x34, 0x74, 0xb4, 0xf4, + 0x08, 0x48, 0x88, 0xc8, 0x18, 0x58, 0x98, 0xd8, + 0x28, 0x68, 0xa8, 0xe8, 0x38, 0x78, 0xb8, 0xf8, + 0x0c, 0x4c, 0x8c, 0xcc, 0x1c, 0x5c, 0x9c, 0xdc, + 0x2c, 0x6c, 0xac, 0xec, 0x3c, 0x7c, 0xbc, 0xfc, + 0x01, 0x41, 0x81, 0xc1, 0x11, 0x51, 0x91, 0xd1, + 0x21, 0x61, 0xa1, 0xe1, 0x31, 0x71, 0xb1, 0xf1, + 0x05, 0x45, 0x85, 0xc5, 0x15, 0x55, 0x95, 0xd5, + 0x25, 0x65, 0xa5, 0xe5, 0x35, 0x75, 0xb5, 0xf5, + 0x09, 0x49, 0x89, 0xc9, 0x19, 0x59, 0x99, 0xd9, + 0x29, 0x69, 0xa9, 0xe9, 0x39, 0x79, 0xb9, 0xf9, + 0x0d, 0x4d, 0x8d, 0xcd, 0x1d, 0x5d, 0x9d, 0xdd, + 0x2d, 0x6d, 0xad, 0xed, 0x3d, 0x7d, 0xbd, 0xfd, + 0x02, 0x42, 0x82, 0xc2, 0x12, 0x52, 0x92, 0xd2, + 0x22, 0x62, 0xa2, 0xe2, 0x32, 0x72, 0xb2, 0xf2, + 0x06, 0x46, 0x86, 0xc6, 0x16, 0x56, 0x96, 0xd6, + 0x26, 0x66, 0xa6, 0xe6, 0x36, 0x76, 0xb6, 0xf6, + 0x0a, 0x4a, 0x8a, 0xca, 0x1a, 0x5a, 0x9a, 0xda, + 0x2a, 0x6a, 0xaa, 0xea, 0x3a, 0x7a, 0xba, 0xfa, + 0x0e, 0x4e, 0x8e, 0xce, 0x1e, 0x5e, 0x9e, 0xde, + 0x2e, 0x6e, 0xae, 0xee, 0x3e, 0x7e, 0xbe, 0xfe, + 0x03, 0x43, 0x83, 0xc3, 0x13, 0x53, 0x93, 0xd3, + 0x23, 0x63, 0xa3, 0xe3, 0x33, 0x73, 0xb3, 0xf3, + 0x07, 0x47, 0x87, 0xc7, 0x17, 0x57, 0x97, 0xd7, + 0x27, 0x67, 0xa7, 0xe7, 0x37, 0x77, 0xb7, 0xf7, + 0x0b, 0x4b, 0x8b, 0xcb, 0x1b, 0x5b, 0x9b, 0xdb, + 0x2b, 0x6b, 0xab, 0xeb, 0x3b, 0x7b, 0xbb, 0xfb, + 0x0f, 0x4f, 0x8f, 0xcf, 0x1f, 0x5f, 0x9f, 0xdf, + 0x2f, 0x6f, 0xaf, 0xef, 0x3f, 0x7f, 0xbf, 0xff +}; + +//============================================================================= + + +void NGPGFX_CLASS::drawColourPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror, + uint16* palette_ptr, uint8 pal, uint8 depth) +{ + int index, x, left, right, highmark, xx; + uint16 data16; + + x = screenx; + if (x > 0xf8) + x -= 256; + if (x >= SCREEN_WIDTH) + return; + + //Get the data for the "tiley'th" line of "tile". + index = LoadU16_LE((uint16*)(CharacterRAM + (tile * 16) + (tiley * 2))); + + //Horizontal Flip + if (mirror) + index = mirrored[(index & 0xff00)>>8] | (mirrored[(index & 0xff)] << 8); + + palette_ptr += pal << 2; + left = max(max(x, winx), 0); + right = x+7; + + highmark = min(winw+winx, SCREEN_WIDTH)-1; + + if (right > highmark) { + index >>= (right - highmark)*2; + right = highmark; + } + + for (xx=right; xx>=left; --xx,index>>=2) { + if (depth <= zbuffer[xx] || (index&3)==0) + continue; + zbuffer[xx] = depth; + + //Get the colour of the pixel + data16 = LoadU16_LE(&palette_ptr[index&3]); + + if (negative) + cfb_scanline[xx] = ~data16; + else + cfb_scanline[xx] = data16; + } +} + +void NGPGFX_CLASS::draw_colour_scroll1(uint8 depth, int ngpc_scanline) +{ + uint8 tx, row, line; + uint16 data16; + + line = ngpc_scanline + scroll1y; + row = line & 7; //Which row? + + //Draw Foreground scroll plane (Scroll 1) + for (tx = 0; tx < 32; tx++) + { + data16 = LoadU16_LE((uint16*)(ScrollVRAM + ((tx + ((line >> 3) << 5)) << 1))); + + //Draw the line of the tile + drawColourPattern((tx << 3) - scroll1x, data16 & 0x01FF, + (data16 & 0x4000) ? (7 - row) : row, data16 & 0x8000, (uint16*)(ColorPaletteRAM + 0x0080), + (data16 & 0x1E00) >> 9, depth); + } +} + +void NGPGFX_CLASS::draw_colour_scroll2(uint8 depth, int ngpc_scanline) +{ + uint8 tx, row, line; + uint16 data16; + + line = ngpc_scanline + scroll2y; + row = line & 7; //Which row? + + //Draw Background scroll plane (Scroll 2) + for (tx = 0; tx < 32; tx++) + { + data16 = LoadU16_LE((uint16*)(ScrollVRAM + 0x0800 + ((tx + ((line >> 3) << 5)) << 1))); + + //Draw the line of the tile + drawColourPattern((tx << 3) - scroll2x, data16 & 0x01FF, + (data16 & 0x4000) ? (7 - row) : row, data16 & 0x8000, (uint16*)(ColorPaletteRAM + 0x0100), + (data16 & 0x1E00) >> 9, depth); + } +} + +void NGPGFX_CLASS::draw_scanline_colour(int layer_enable, int ngpc_scanline) +{ + int16 lastSpriteX; + int16 lastSpriteY; + int spr; + uint16 data16; + + memset(cfb_scanline, 0, SCREEN_WIDTH * sizeof(uint16)); + memset(zbuffer, 0, SCREEN_WIDTH); + + //Window colour + data16 = LoadU16_LE((uint16*)(ColorPaletteRAM + 0x01F0 + (oowc << 1))); + if (negative) data16 = ~data16; + + //Top + if (ngpc_scanline < winy) + { + for (int x = 0; x < SCREEN_WIDTH; x++) + cfb_scanline[x] = data16; + } + else + { + //Middle + if (ngpc_scanline < winy + winh) + { + for (int x = 0; x < min(winx, SCREEN_WIDTH); x++) + cfb_scanline[x] = data16; + + for (int x = min(winx + winw, SCREEN_WIDTH); x < SCREEN_WIDTH; x++) + cfb_scanline[x] = data16; + } + else //Bottom + { + for (int x = 0; x < SCREEN_WIDTH; x++) + cfb_scanline[x] = data16; + } + } + + //Ignore above and below the window's top and bottom + if (ngpc_scanline >= winy && ngpc_scanline < winy + winh) + { + //Background colour Enabled? HACK: 01 AUG 2002 - Always on! + // if ((bgc & 0xC0) == 0x80) + { + data16 = LoadU16_LE((uint16*)(uint8*)(ColorPaletteRAM + 0x01E0 + ((bgc & 7) << 1))); + } + // else data16 = 0; + + if (negative) data16 = ~data16; + + //Draw background! + for (int x = winx; x < min(winx + winw, SCREEN_WIDTH); x++) + cfb_scanline[x] = data16; + + //Swap Front/Back scroll planes? + if (planeSwap) + { + if(layer_enable & 1) + draw_colour_scroll1(ZDEPTH_BACKGROUND_SCROLL, ngpc_scanline); //Swap + if(layer_enable & 2) + draw_colour_scroll2(ZDEPTH_FOREGROUND_SCROLL, ngpc_scanline); + } + else + { + if(layer_enable & 1) + draw_colour_scroll2(ZDEPTH_BACKGROUND_SCROLL, ngpc_scanline); //Normal + if(layer_enable & 2) + draw_colour_scroll1(ZDEPTH_FOREGROUND_SCROLL, ngpc_scanline); + } + + //Draw Sprites + //Last sprite position, (defaults to top-left, sure?) + lastSpriteX = 0; + lastSpriteY = 0; + + if(layer_enable & 4) + for (spr = 0; spr < 64; spr++) + { + uint8 priority, row; + uint8 sx = SpriteVRAM[(spr * 4) + 2]; //X position + uint8 sy = SpriteVRAM[(spr * 4) + 3]; //Y position + int16 x = sx; + int16 y = sy; + uint16 data16; + + data16 = LoadU16_LE((uint16*)(SpriteVRAM + (spr * 4))); + priority = (data16 & 0x1800) >> 11; + + if (data16 & 0x0400) x = lastSpriteX + sx; //Horizontal chain? + if (data16 & 0x0200) y = lastSpriteY + sy; //Vertical chain? + + //Store the position for chaining + lastSpriteX = x; + lastSpriteY = y; + + //Visible? + if (priority == 0) continue; + + //Scroll the sprite + x += scrollsprx; + y += scrollspry; + + //Off-screen? + if (x > 248 && x < 256) x = x - 256; else x &= 0xFF; + if (y > 248 && y < 256) y = y - 256; else y &= 0xFF; + + //In range? + if (ngpc_scanline >= y && ngpc_scanline <= y + 7) + { + row = (ngpc_scanline - y) & 7; //Which row? + drawColourPattern((uint8)x, data16 & 0x01FF, + (data16 & 0x4000) ? 7 - row : row, data16 & 0x8000, + (uint16*)ColorPaletteRAM, SpriteVRAMColor[spr] & 0xF, priority << 1); + } + } + + //========== + } + +} + +//============================================================================= diff --git a/libmednahawk/src/ngp/gfx_scanline_mono.cpp b/libmednahawk/src/ngp/gfx_scanline_mono.cpp new file mode 100644 index 0000000000..f4f56cc11a --- /dev/null +++ b/libmednahawk/src/ngp/gfx_scanline_mono.cpp @@ -0,0 +1,248 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "mem.h" +#include "gfx.h" + +//============================================================================= + +void NGPGFX_CLASS::MonoPlot(uint8 x, uint8* palette_ptr, uint16 pal_hi, uint8 index, uint8 depth) +{ + uint8 data8; + + //Clip + if (index == 0 || x < winx || x >= (winw + winx) || x >= SCREEN_WIDTH) + return; + + //Depth check, <= to stop later sprites overwriting pixels! + if (depth <= zbuffer[x]) return; + zbuffer[x] = depth; + + //Get the colour of the pixel + if (pal_hi) + data8 = palette_ptr[3 + index - 1]; + else + data8 = palette_ptr[0 + index - 1]; + + uint16 r = (data8 & 7) << 1; + uint16 g = (data8 & 7) << 5; + uint16 b = (data8 & 7) << 9; + + if (negative) + cfb_scanline[x] = (r | g | b); + else + cfb_scanline[x] = ~(r | g | b); +} + +void NGPGFX_CLASS::drawMonoPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror, + uint8* palette_ptr, uint16 pal, uint8 depth) +{ + //Get the data for th e "tiley'th" line of "tile". + uint16 data = LoadU16_LE((uint16*)(CharacterRAM + (tile * 16) + (tiley * 2))); + + //Horizontal Flip + if (mirror) + { + MonoPlot(screenx + 7, palette_ptr, pal, (data & 0xC000) >> 0xE, depth); + MonoPlot(screenx + 6, palette_ptr, pal, (data & 0x3000) >> 0xC, depth); + MonoPlot(screenx + 5, palette_ptr, pal, (data & 0x0C00) >> 0xA, depth); + MonoPlot(screenx + 4, palette_ptr, pal, (data & 0x0300) >> 0x8, depth); + MonoPlot(screenx + 3, palette_ptr, pal, (data & 0x00C0) >> 0x6, depth); + MonoPlot(screenx + 2, palette_ptr, pal, (data & 0x0030) >> 0x4, depth); + MonoPlot(screenx + 1, palette_ptr, pal, (data & 0x000C) >> 0x2, depth); + MonoPlot(screenx + 0, palette_ptr, pal, (data & 0x0003) >> 0x0, depth); + } + else + //Normal + { + MonoPlot(screenx + 0, palette_ptr, pal, (data & 0xC000) >> 0xE, depth); + MonoPlot(screenx + 1, palette_ptr, pal, (data & 0x3000) >> 0xC, depth); + MonoPlot(screenx + 2, palette_ptr, pal, (data & 0x0C00) >> 0xA, depth); + MonoPlot(screenx + 3, palette_ptr, pal, (data & 0x0300) >> 0x8, depth); + MonoPlot(screenx + 4, palette_ptr, pal, (data & 0x00C0) >> 0x6, depth); + MonoPlot(screenx + 5, palette_ptr, pal, (data & 0x0030) >> 0x4, depth); + MonoPlot(screenx + 6, palette_ptr, pal, (data & 0x000C) >> 0x2, depth); + MonoPlot(screenx + 7, palette_ptr, pal, (data & 0x0003) >> 0x0, depth); + } +} + +void NGPGFX_CLASS::draw_mono_scroll1(uint8 depth, int ngpc_scanline) +{ + uint8 tx, row, line; + uint16 data16; + + line = ngpc_scanline + scroll1y; + row = line & 7; //Which row? + + //Draw Foreground scroll plane (Scroll 1) + for (tx = 0; tx < 32; tx++) + { + data16 = LoadU16_LE((uint16*)(ScrollVRAM + ((tx + ((line >> 3) << 5)) << 1))); + + //Draw the line of the tile + drawMonoPattern((tx << 3) - scroll1x, data16 & 0x01FF, + (data16 & 0x4000) ? 7 - row : row, data16 & 0x8000, SCRP1PLT, + data16 & 0x2000, depth); + } +} + +void NGPGFX_CLASS::draw_mono_scroll2(uint8 depth, int ngpc_scanline) +{ + uint8 tx, row, line; + uint16 data16; + + line = ngpc_scanline + scroll2y; + row = line & 7; //Which row? + + //Draw Background scroll plane (Scroll 2) + for (tx = 0; tx < 32; tx++) + { + data16 = LoadU16_LE((uint16*)(ScrollVRAM + 0x0800 + ((tx + ((line >> 3) << 5)) << 1))); + + //Draw the line of the tile + drawMonoPattern((tx << 3) - scroll2x, data16 & 0x01FF, + (data16 & 0x4000) ? 7 - row : row, data16 & 0x8000, SCRP2PLT, + data16 & 0x2000, depth); + } +} + +void NGPGFX_CLASS::draw_scanline_mono(int layer_enable, int ngpc_scanline) +{ + int16 lastSpriteX; + int16 lastSpriteY; + int spr; + uint16 data16; + + memset(cfb_scanline, 0, SCREEN_WIDTH * sizeof(uint16)); + memset(zbuffer, 0, SCREEN_WIDTH); + + //Window colour + uint16 r = (uint16)oowc << 1; + uint16 g = (uint16)oowc << 5; + uint16 b = (uint16)oowc << 9; + + if (negative) + data16 = (r | g | b); + else + data16 = ~(r | g | b); + + //Top + if (ngpc_scanline < winy) + { + for (int x = 0; x < SCREEN_WIDTH; x++) + cfb_scanline[x] = data16; + } + else + { + //Middle + if (ngpc_scanline < winy + winh) + { + for (int x = 0; x < min(winx, SCREEN_WIDTH); x++) + cfb_scanline[x] = data16; + for (int x = min(winx + winw, SCREEN_WIDTH); x < SCREEN_WIDTH; x++) + cfb_scanline[x] = data16; + } + else //Bottom + { + for (int x = 0; x < SCREEN_WIDTH; x++) + cfb_scanline[x] = data16; + } + } + + //Ignore above and below the window's top and bottom + if (ngpc_scanline >= winy && ngpc_scanline < winy + winh) + { + //Background colour Enabled? + if ((bgc & 0xC0) == 0x80) + { + r = (uint16)(bgc & 7) << 1; + g = (uint16)(bgc & 7) << 5; + b = (uint16)(bgc & 7) << 9; + data16 = ~(r | g | b); + } + else data16 = 0x0FFF; + + if (negative) data16 = ~data16; + + //Draw background! + for (int x = winx; x < min(winx + winw, SCREEN_WIDTH); x++) + cfb_scanline[x] = data16; + + //Swap Front/Back scroll planes? + if (planeSwap) + { + if(layer_enable & 1) + draw_mono_scroll1(ZDEPTH_BACKGROUND_SCROLL, ngpc_scanline); //Swap + if(layer_enable & 2) + draw_mono_scroll2(ZDEPTH_FOREGROUND_SCROLL, ngpc_scanline); + } + else + { + if(layer_enable & 1) + draw_mono_scroll2(ZDEPTH_BACKGROUND_SCROLL, ngpc_scanline); //Normal + if(layer_enable & 2) + draw_mono_scroll1(ZDEPTH_FOREGROUND_SCROLL, ngpc_scanline); + } + + //Draw Sprites + //Last sprite position, (defaults to top-left, sure?) + lastSpriteX = 0; + lastSpriteY = 0; + if(layer_enable & 4) + for (spr = 0; spr < 64; spr++) + { + uint8 priority, row; + uint8 sx = SpriteVRAM[(spr * 4) + 2]; //X position + uint8 sy = SpriteVRAM[(spr * 4) + 3]; //Y position + int16 x = sx; + int16 y = sy; + + data16 = LoadU16_LE((uint16*)(SpriteVRAM + (spr * 4))); + priority = (data16 & 0x1800) >> 11; + + if (data16 & 0x0400) x = lastSpriteX + sx; //Horizontal chain? + if (data16 & 0x0200) y = lastSpriteY + sy; //Vertical chain? + + //Store the position for chaining + lastSpriteX = x; + lastSpriteY = y; + + //Visible? + if (priority == 0) continue; + + //Scroll the sprite + x += scrollsprx; + y += scrollspry; + + //Off-screen? + if (x > 248 && x < 256) x = x - 256; else x &= 0xFF; + if (y > 248 && y < 256) y = y - 256; else y &= 0xFF; + + //In range? + if (ngpc_scanline >= y && ngpc_scanline <= y + 7) + { + row = (ngpc_scanline - y) & 7; //Which row? + drawMonoPattern((uint8)x, data16 & 0x01FF, + (data16 & 0x4000) ? 7 - row : row, data16 & 0x8000, + SPPLT, data16 & 0x2000, priority << 1); + } + } + + } + + //========== +} + +//============================================================================= diff --git a/libmednahawk/src/ngp/interrupt.cpp b/libmednahawk/src/ngp/interrupt.cpp new file mode 100644 index 0000000000..1d3ae25058 --- /dev/null +++ b/libmednahawk/src/ngp/interrupt.cpp @@ -0,0 +1,554 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "TLCS900h_registers.h" +#include "mem.h" +#include "gfx.h" +#include "interrupt.h" +#include "TLCS900h_interpret.h" +#include "Z80_interface.h" +#include "dma.h" + +//============================================================================= + +uint32 timer_hint; +static uint32 timer_clock[4]; +static uint8 timer[4]; //Up-counters +static uint8 timer_threshold[4]; + +static uint8 TRUN; +static uint8 T01MOD, T23MOD; +static uint8 TRDC; +static uint8 TFFCR; +static uint8 HDMAStartVector[4]; + +static int32 ipending[24]; +static int32 IntPrio[0xB]; // 0070-007a +static bool h_int, timer0, timer2; + +// The way interrupt processing is set up is still written towards BIOS HLE emulation, which assumes +// that the interrupt handler will immediately call DI, clear the interrupt latch(so the interrupt won't happen again when interrupts are re-enabled), +// and then call the game's interrupt handler. + +// We automatically clear the interrupt latch when the interrupt is accepted, and the interrupt latch is not checked every instruction, +// but only when: an EI/DI, POP SR, or RETI instruction occurs; after a write to an interrupt priority register occurs; and when +// a device sets the virual interrupt latch register, signaling it wants an interrupt. + +// FIXME in the future if we ever add real bios support? +void interrupt(uint8 index) +{ + //printf("INT: %d\n", index); + push32(pc); + push16(sr); + + //Up the IFF + if (((sr & 0x7000) >> 12) < 7) + setStatusIFF(((sr & 0x7000) >> 12) + 1); + + //Access the interrupt vector table to find the jump destination + pc = loadL(0x6FB8 + index * 4); +} + +void set_interrupt(uint8 index, bool set) +{ + assert(index < 24); + + ipending[index] = set; + int_check_pending(); +} + +void int_check_pending(void) +{ + uint8 prio; + uint8 curIFF = statusIFF(); + + // Technically, the BIOS should clear the interrupt pending flag by writing with IxxC set to "0", but + // we'll actually need to implement a BIOS to do that! + + prio = IntPrio[0x1] & 0x07; // INT4 + if(ipending[5] && curIFF <= prio && prio && prio != 7) + { + ipending[5] = 0; + interrupt(5); + return; + } + + prio = (IntPrio[0x1] & 0x70) >> 4; // INT5 (Z80) + if(ipending[6] && curIFF <= prio && prio && prio != 7) + { + ipending[6] = 0; + interrupt(6); + return; + } + + prio = IntPrio[0x3] & 0x07; // INTT0 + if(ipending[7] && curIFF <= prio && prio && prio != 7) + { + ipending[7] = 0; + interrupt(7); + return; + } + + prio = (IntPrio[0x3] & 0x70) >> 4; // INTT1 + if(ipending[8] && curIFF <= prio && prio && prio != 7) + { + ipending[8] = 0; + interrupt(8); + return; + } + + prio = (IntPrio[0x4] & 0x07); // INTT2 + if(ipending[9] && curIFF <= prio && prio && prio != 7) + { + ipending[9] = 0; + interrupt(9); + return; + } + + prio = ((IntPrio[0x4] & 0x70) >> 4); // INTT3 + if(ipending[10] && curIFF <= prio && prio && prio != 7) + { + ipending[10] = 0; + interrupt(10); + return; + } + + prio = (IntPrio[0x7] & 0x07); // INTRX0 + if(ipending[11] && curIFF <= prio && prio && prio != 7) + { + ipending[11] = 0; + interrupt(11); + return; + } + + prio = ((IntPrio[0x7] & 0x70) >> 4); // INTTX0 + if(ipending[12] && curIFF <= prio && prio && prio != 7) + { + ipending[12] = 0; + interrupt(12); + return; + } + +} + +void int_write8(uint32 address, uint8 data) +{ + switch(address) + { + case 0x71: if(!(data & 0x08)) ipending[5] = 0; + if(!(data & 0x80)) ipending[6] = 0; + break; + case 0x73: if(!(data & 0x08)) ipending[7] = 0; + if(!(data & 0x80)) ipending[8] = 0; + break; + case 0x74: if(!(data & 0x08)) ipending[9] = 0; + if(!(data & 0x80)) ipending[10] = 0; + break; + case 0x77: if(!(data & 0x08)) ipending[11] = 0; + if(!(data & 0x80)) ipending[12] = 0; + break; + case 0x7C: HDMAStartVector[0] = data; break; + case 0x7D: HDMAStartVector[1] = data; break; + case 0x7E: HDMAStartVector[2] = data; break; + case 0x7F: HDMAStartVector[3] = data; break; + } + if(address >= 0x70 && address <= 0x7A) + { + IntPrio[address - 0x70] = data; + int_check_pending(); + } +} + +uint8 int_read8(uint32 address) +{ + uint8 ret = 0; + switch(address) + { + case 0x71: ret = ((ipending[5] ? 0x08 : 0x00) | (ipending[6] ? 0x80 : 0x00)); break; + case 0x73: ret = ((ipending[7] ? 0x08 : 0x00) | (ipending[8] ? 0x80 : 0x00)); break; + case 0x74: ret = ((ipending[9] ? 0x08 : 0x00) | (ipending[10] ? 0x80 : 0x00)); break; + case 0x77: ret = ((ipending[11] ? 0x08 : 0x00) | (ipending[12] ? 0x80 : 0x00)); break; + } + + return(ret); +} + +void TestIntHDMA(int bios_num, int vec_num) +{ + bool WasDMA = 0; + + if (HDMAStartVector[0] == vec_num) + { + WasDMA = 1; + DMA_update(0); + } + else + { + if (HDMAStartVector[1] == vec_num) + { + WasDMA = 1; + DMA_update(1); + } + else + { + if (HDMAStartVector[2] == vec_num) + { + WasDMA = 1; + DMA_update(2); + } + else + { + if (HDMAStartVector[3] == vec_num) + { + WasDMA = 1; + DMA_update(3); + } + } + } + } + if(!WasDMA) + set_interrupt(bios_num, TRUE); +} + + +extern int32 ngpc_soundTS; +extern bool NGPFrameSkip; + +bool updateTimers(MDFN_Surface *surface, int cputicks) +{ + bool ret = 0; + + ngpc_soundTS += cputicks; + //increment H-INT timer + timer_hint += cputicks; + + //======================= + + //End of scanline / Start of Next one + if (timer_hint >= TIMER_HINT_RATE) + { + uint8 data; + + // ============= END OF CURRENT SCANLINE ============= + + h_int = NGPGfx->hint(); + ret = NGPGfx->draw(surface, NGPFrameSkip); + + // ============= START OF NEXT SCANLINE ============= + + timer_hint -= TIMER_HINT_RATE; //Start of next scanline + + //Comms. Read interrupt + if ((COMMStatus & 1) == 0 && system_comms_poll(&data)) + { + storeB(0x50, data); + TestIntHDMA(12, 0x19); + } + } + + //======================= + + //Tick the Clock Generator + timer_clock[0] += cputicks; + timer_clock[1] += cputicks; + + timer0 = FALSE; //Clear the timer0 tick, for timer1 chain mode. + + //======================= + + //Run Timer 0 (TRUN)? + if ((TRUN & 0x01)) + { + //T01MOD + switch(T01MOD & 0x03) + { + case 0: if (h_int) //Horizontal interrupt trigger + { + timer[0]++; + + timer_clock[0] = 0; + h_int = FALSE; // Stop h_int remaining active + } + break; + + case 1: while (timer_clock[0] >= TIMER_T1_RATE) + { + timer[0]++; + timer_clock[0] -= TIMER_T1_RATE; + } + break; + + case 2: while(timer_clock[0] >= TIMER_T4_RATE) + { + timer[0]++; + timer_clock[0] -= TIMER_T4_RATE; + } + break; + + case 3: while (timer_clock[0] >= TIMER_T16_RATE) + { + timer[0]++; + timer_clock[0] -= TIMER_T16_RATE; + } + break; + } + + + //Threshold check + if (timer_threshold[0] && timer[0] >= timer_threshold[0]) + { + timer[0] = 0; + timer0 = TRUE; + + TestIntHDMA(7, 0x10); + } + } + + //======================= + + //Run Timer 1 (TRUN)? + if ((TRUN & 0x02)) + { + //T01MOD + switch((T01MOD & 0x0C) >> 2) + { + case 0: if (timer0) //Timer 0 chain mode. + { + timer[1] += timer0; + timer_clock[1] = 0; + } + break; + + case 1: while (timer_clock[1] >= TIMER_T1_RATE) + { + timer[1]++; + timer_clock[1] -= TIMER_T1_RATE; + } + break; + + case 2: while (timer_clock[1] >= TIMER_T16_RATE) + { + timer[1]++; + timer_clock[1] -= TIMER_T16_RATE; + } + break; + + case 3: while (timer_clock[1] >= TIMER_T256_RATE) + { + timer[1]++; + timer_clock[1] -= TIMER_T256_RATE; + } + break; + } + + //Threshold check + if (timer_threshold[1] && timer[1] >= timer_threshold[1]) + { + timer[1] = 0; + + TestIntHDMA(8, 0x11); + } + } + + //======================= + + //Tick the Clock Generator + timer_clock[2] += cputicks; + timer_clock[3] += cputicks; + + timer2 = FALSE; //Clear the timer2 tick, for timer3 chain mode. + + //======================= + + //Run Timer 2 (TRUN)? + if ((TRUN & 0x04)) + { + //T23MOD + switch(T23MOD & 0x03) + { + case 0: // - + break; + + case 1: while (timer_clock[2] >= TIMER_T1_RATE / 2) // Kludge :( + { + timer[2]++; + timer_clock[2] -= TIMER_T1_RATE / 2; + } + break; + + case 2: while (timer_clock[2] >= TIMER_T4_RATE) + { + timer[2]++; + timer_clock[2] -= TIMER_T4_RATE; + } + break; + + case 3: while (timer_clock[2] >= TIMER_T16_RATE) + { + timer[2]++; + timer_clock[2] -= TIMER_T16_RATE; + } + break; + } + + //Threshold check + if (timer_threshold[2] && timer[2] >= timer_threshold[2]) + { + timer[2] = 0; + timer2 = TRUE; + + TestIntHDMA(9, 0x12); + } + } + + //======================= + + //Run Timer 3 (TRUN)? + if ((TRUN & 0x08)) + { + //T23MOD + switch((T23MOD & 0x0C) >> 2) + { + case 0: if(timer2) //Timer 2 chain mode. + { + timer[3] += timer2; + timer_clock[3] = 0; + } + break; + + case 1: while (timer_clock[3] >= TIMER_T1_RATE) + { + timer[3]++; + timer_clock[3] -= TIMER_T1_RATE; + } + break; + + case 2: while (timer_clock[3] >= TIMER_T16_RATE) + { + timer[3]++; + timer_clock[3] -= TIMER_T16_RATE; + } + break; + + case 3: while (timer_clock[3] >= TIMER_T256_RATE) + { + timer[3]++; + timer_clock[3] -= TIMER_T256_RATE; + } + break; + } + + //Threshold check + if (timer_threshold[3] && timer[3] >= timer_threshold[3]) + { + timer[3] = 0; + + Z80_irq(); + TestIntHDMA(10, 0x13); + } + } + return(ret); +} + +void reset_timers(void) +{ + timer_hint = 0; + + memset(timer, 0, sizeof(timer)); + memset(timer_clock, 0, sizeof(timer_clock)); + memset(timer_threshold, 0, sizeof(timer_threshold)); + + timer0 = FALSE; + timer2 = FALSE; +} + +void reset_int(void) +{ + TRUN = 0; + T01MOD = 0; + T23MOD = 0; + TRDC = 0; + TFFCR = 0; + + memset(HDMAStartVector, 0, sizeof(HDMAStartVector)); + memset(ipending, 0, sizeof(ipending)); + memset(IntPrio, 0, sizeof(IntPrio)); + + h_int = FALSE; +} + +void timer_write8(uint32 address, uint8 data) +{ + switch(address) + { + case 0x20: TRUN = data; + if ((TRUN & 0x01) == 0) timer[0] = 0; + if ((TRUN & 0x02) == 0) timer[1] = 0; + if ((TRUN & 0x04) == 0) timer[2] = 0; + if ((TRUN & 0x08) == 0) timer[3] = 0; + break; + case 0x22: timer_threshold[0] = data; break; + case 0x23: timer_threshold[1] = data; break; + case 0x24: T01MOD = data; break; + case 0x25: TFFCR = data & 0x33; break; + case 0x26: timer_threshold[2] = data; break; + case 0x27: timer_threshold[3] = data; break; + case 0x28: T23MOD = data; break; + case 0x29: TRDC = data & 0x3; break; + } +} + +uint8 timer_read8(uint32 address) +{ + uint8 ret = 0; + + switch(address) + { + //default: printf("Baaaad: %08x\n", address); break; + // Cool boarders is stupid and tries to read from a write-only register >_< + // Returning 4 makes the game run ok, so 4 it is! + default: ret = 0x4; break; + case 0x20: ret = TRUN; break; + case 0x29: ret = TRDC; break; + } + + //printf("UNK B R: %08x\n", address); + return(ret); +} + +int int_timer_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(timer_hint), + SFARRAY32(timer_clock, 4), + SFARRAY(timer, 4), + SFARRAY(timer_threshold, 4), + SFVAR(TRUN), + SFVAR(T01MOD), SFVAR(T23MOD), + SFVAR(TRDC), + SFVAR(TFFCR), + SFARRAY(HDMAStartVector, 4), + SFARRAY32(ipending, 24), + SFARRAY32(IntPrio, 0xB), + SFVAR(h_int), + SFVAR(timer0), + SFVAR(timer2), + SFEND + }; + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "INTT")) + return(0); + return(1); +} diff --git a/libmednahawk/src/ngp/interrupt.h b/libmednahawk/src/ngp/interrupt.h new file mode 100644 index 0000000000..76069ca60b --- /dev/null +++ b/libmednahawk/src/ngp/interrupt.h @@ -0,0 +1,59 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __INTERRUPT__ +#define __INTERRUPT__ +//============================================================================= + +void interrupt(uint8 index); + +#define TIMER_HINT_RATE 515 //CPU Ticks between horizontal interrupts + +#define TIMER_BASE_RATE 32 //1 //ticks + +#define TIMER_T1_RATE (8 * TIMER_BASE_RATE) +#define TIMER_T4_RATE (32 * TIMER_BASE_RATE) +#define TIMER_T16_RATE (128 * TIMER_BASE_RATE) +#define TIMER_T256_RATE (2048 * TIMER_BASE_RATE) + +void reset_timers(void); +void reset_int(void); + +//Call this after each instruction +bool updateTimers(MDFN_Surface *surface, int cputicks); + +//H-INT Timer +extern uint32 timer_hint; + +void timer_write8(uint32 address, uint8 data); +uint8 timer_read8(uint32 address); + + +// Set this value to fix problems with glitching extra lines. +extern bool gfx_hack; + + +void int_write8(uint32 address, uint8 data); +uint8 int_read8(uint32 address); +void int_check_pending(void); +void TestIntHDMA(int bios_num, int vec_num); + +int int_timer_StateAction(StateMem *sm, int load, int data_only); + +//============================================================================= +#endif + + + + diff --git a/libmednahawk/src/ngp/mem.cpp b/libmednahawk/src/ngp/mem.cpp new file mode 100644 index 0000000000..a7faa2d912 --- /dev/null +++ b/libmednahawk/src/ngp/mem.cpp @@ -0,0 +1,648 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "TLCS900h_registers.h" +#include "Z80_interface.h" +#include "bios.h" +#include "gfx.h" +#include "mem.h" +#include "interrupt.h" +#include "sound.h" +#include "flash.h" +#include "rtc.h" + +//============================================================================= + +//Hack way of returning good Flash status. +bool FlashStatusEnable = FALSE; +static uint32 FlashStatus; + +uint8 CPUExRAM[16384]; + +bool debug_abort_memory = FALSE; +bool debug_mask_memory_error_messages = FALSE; + +bool memory_unlock_flash_write = FALSE; +bool memory_flash_error = FALSE; +bool memory_flash_command = FALSE; + + +uint8 SC0BUF; // Serial channel 0 buffer. +uint8 COMMStatus; + +// In very very very rare conditions(like on embedded platforms with no virtual memory and very limited RAM and +// malloc happens to return a pointer aligned to a 64KiB boundary), a FastReadMap entry may be NULL even if +// it points to valid data when it's added to the address of the read, but +// if this happens, it will only make the emulator slightly slower. +static uint8 *FastReadMap[256], *FastReadMapReal[256]; + + +void SetFRM(void) // Call this function after rom is loaded +{ + for(unsigned int x = 0; x < 256; x++) + FastReadMapReal[x] = NULL; + + for(unsigned int x = 0x20; x <= 0x3f; x++) + { + if(ngpc_rom.length > (x * 65536 + 65535 - 0x20000)) + FastReadMapReal[x] = &ngpc_rom.data[x * 65536 - 0x200000] - x * 65536; + } + + for(unsigned int x = 0x80; x <= 0x9f; x++) + { + if(ngpc_rom.length > (x * 65536 + 65535 - 0x80000)) + FastReadMapReal[x] = &ngpc_rom.data[x * 65536 - 0x800000] - x * 65536; + } + +} + +void RecacheFRM(void) +{ + for(int x = 0; x < 256; x++) + FastReadMap[x] = FlashStatusEnable ? NULL : FastReadMapReal[x]; +} + +static void* translate_address_read(uint32 address) +{ + address &= 0xFFFFFF; + + //Get Flash status? + if (FlashStatusEnable) + { + if ((address >= ROM_START && address <= ROM_END) || (address >= HIROM_START && address <= HIROM_END)) + { + FlashStatusEnable = FALSE; + RecacheFRM(); + if (address == 0x220000 || address == 0x230000) + { + FlashStatus = 0xFFFFFFFF; + return &FlashStatus; + } + } + } + + //ROM (LOW) + if (address >= ROM_START && address <= ROM_END) + { + if (address <= ROM_START + ngpc_rom.length) + return ngpc_rom.data + (address - ROM_START); + else + return NULL; + } + + //ROM (HIGH) + if (address >= HIROM_START && address <= HIROM_END) + { + if (address <= HIROM_START + (ngpc_rom.length - 0x200000)) + return ngpc_rom.data + 0x200000 + (address - HIROM_START); + else + return NULL; + } + + // =================================== + + //BIOS Access? + if ((address & 0xFF0000) == 0xFF0000) + { + return ngpc_bios + (address & 0xFFFF); // BIOS ROM + } + return NULL; +} + +//============================================================================= + +static void* translate_address_write(uint32 address) +{ + address &= 0xFFFFFF; + + if (memory_unlock_flash_write) + { + //ROM (LOW) + if (address >= ROM_START && address <= ROM_END) + { + if (address <= ROM_START + ngpc_rom.length) + return ngpc_rom.data + (address - ROM_START); + else + return NULL; + } + + //ROM (HIGH) + if (address >= HIROM_START && address <= HIROM_END) + { + if (address <= HIROM_START + (ngpc_rom.length - 0x200000)) + return ngpc_rom.data + 0x200000 + (address - HIROM_START); + else + return NULL; + } + } + else + { + //ROM (LOW) + if (address >= ROM_START && address <= ROM_END) + { + //Ignore Flash commands + if (address == 0x202AAA || address == 0x205555) + { + // system_debug_message("%06X: Enable Flash command from %06X", pc, address); + memory_flash_command = TRUE; + return NULL; + } + + //Set Flash status reading? + if (address == 0x220000 || address == 0x230000) + { + // system_debug_message("%06X: Flash status read from %06X", pc, address); + FlashStatusEnable = TRUE; + RecacheFRM(); + return NULL; + } + + if (memory_flash_command) + { + //Write the 256byte block around the flash data + flash_write(address & 0xFFFF00, 256); + + //Need to issue a new command before writing will work again. + memory_flash_command = FALSE; + + // system_debug_message("%06X: Direct Flash write to %06X", pc, address & 0xFFFF00); + // system_debug_stop(); + + //Write to the rom itself. + if (address <= ROM_START + ngpc_rom.length) + return ngpc_rom.data + (address - ROM_START); + } + } + } + + // =================================== + return NULL; +} + +/* WARNING: 32-bit loads and stores apparently DON'T have to be 4-byte-aligned(so we must +2 instead of |2). */ +/* Treat all 32-bit operations as two 16-bit operations */ +extern uint32 pc; + +uint8 lastpoof = 0; + +uint8 loadB(uint32 address) +{ + address &= 0xFFFFFF; + + if(FastReadMap[address >> 16]) + return(FastReadMap[address >> 16][address]); + + + uint8* ptr = (uint8*)translate_address_read(address); + + if (ptr) + return *ptr; + + if(address >= 0x8000 && address <= 0xbfff) + return(NGPGfx->read8(address)); + if(address >= 0x4000 && address <= 0x7fff) + { + return(*(uint8 *)(CPUExRAM + address - 0x4000)); + } + + if(address >= 0x70 && address <= 0x7F) + { + return(int_read8(address)); + } + + if(address >= 0x90 && address <= 0x97) + { + return(rtc_read8(address)); + } + + if(address >= 0x20 && address <= 0x29) + { + return(timer_read8(address)); + } + + if(address == 0x50) + return(SC0BUF); + + if(address == 0xBC) + return Z80_ReadComm(); + + //printf("UNK B R: %08x\n", address); + + return(0); +} + +uint16 loadW(uint32 address) +{ + address &= 0xFFFFFF; + + if(address & 1) + return(loadB(address) | (loadB(address + 1) << 8)); + + if(FastReadMap[address >> 16]) + return(LoadU16_LE((uint16*)&FastReadMap[address >> 16][address])); + + uint16* ptr = (uint16*)translate_address_read(address); + if(ptr) + return LoadU16_LE(ptr); + + if(address >= 0x8000 && address <= 0xbfff) + return(NGPGfx->read16(address)); + + if(address >= 0x4000 && address <= 0x7fff) + { + return(LoadU16_LE((uint16 *)(CPUExRAM + address - 0x4000))); + } + if(address == 0x50) + return(SC0BUF); + + if(address >= 0x70 && address <= 0x7F) + return(int_read8(address) | (int_read8(address + 1) << 8)); + + if(address >= 0x90 && address <= 0x97) + return(rtc_read8(address) | (rtc_read8(address + 1) << 8)); + + if(address >= 0x20 && address <= 0x29) + return(timer_read8(address) | (timer_read8(address + 1) << 8)); + + if(address == 0xBC) + return Z80_ReadComm(); + + //printf("UNK W R: %08x\n", address); + + return(0); +} + +uint32 loadL(uint32 address) +{ + uint32 ret; + + ret = loadW(address); + ret |= loadW(address + 2) << 16; + + return(ret); +} + +//============================================================================= + +void storeB(uint32 address, uint8 data) +{ + address &= 0xFFFFFF; + + + if(address < 0x80) + { + lastpoof = data; + } + + if(address >= 0x8000 && address <= 0xbfff) + { + NGPGfx->write8(address, data); + return; + } + if(address >= 0x4000 && address <= 0x7fff) + { + *(uint8 *)(CPUExRAM + address - 0x4000) = data; + return; + } + if(address >= 0x70 && address <= 0x7F) + { + int_write8(address, data); + return; + } + if(address >= 0x20 && address <= 0x29) + { + timer_write8(address, data); + return; + } + + if(address == 0x50) + { + SC0BUF = data; + return; + } + + if(address == 0x6f) // Watchdog timer + { + return; + } + + if(address == 0xb2) // Comm? + { + COMMStatus = data & 1; + return; + } + + if(address == 0xb9) + { + if(data == 0x55) + Z80_SetEnable(1); + else if(data == 0xAA) + Z80_SetEnable(0); + return; + } + + if(address == 0xb8) + { + if(data == 0x55) + MDFNNGPCSOUND_SetEnable(1); + else if(data == 0xAA) + MDFNNGPCSOUND_SetEnable(0); + return; + } + + if (address == 0xBA) + { + Z80_nmi(); + return; + } + + if(address == 0xBC) + { + Z80_WriteComm(data); + return; + } + + if(address >= 0xa0 && address <= 0xA3) + { + if(!Z80_IsEnabled()) + { + if (address == 0xA1) Write_SoundChipLeft(data); + else if (address == 0xA0) Write_SoundChipRight(data); + } + //DAC Write + if (address == 0xA2) + { + dac_write_left(data); + } + else if (address == 0xA3) + { + dac_write_right(data); + } + return; + } + + //printf("%08x %02x\n", address, data); + uint8* ptr = (uint8*)translate_address_write(address); + + //Write + if (ptr) + { + *ptr = data; + } + //else + // printf("ACK: %08x %02x\n", address, data); + +} + +void storeW(uint32 address, uint16 data) +{ + address &= 0xFFFFFF; + + if(address & 1) + { + storeB(address + 0, data & 0xFF); + storeB(address + 1, data >> 8); + return; + } + + if(address < 0x80) + { + lastpoof = data >> 8; + } + + if(address >= 0x8000 && address <= 0xbfff) + { + NGPGfx->write16(address, data); + return; + } + if(address >= 0x4000 && address <= 0x7fff) + { + StoreU16_LE((uint16 *)(CPUExRAM + address - 0x4000), data); + return; + } + if(address >= 0x70 && address <= 0x7F) + { + int_write8(address, data & 0xFF); + int_write8(address + 1, data >> 8); + return; + } + + if(address >= 0x20 && address <= 0x29) + { + timer_write8(address, data & 0xFF); + timer_write8(address + 1, data >> 8); + } + + if(address == 0x50) + { + SC0BUF = data & 0xFF; + return; + } + + if(address == 0x6e) // Watchdog timer(technically 0x6f) + { + return; + } + + if(address == 0xb2) // Comm? + { + COMMStatus = data & 1; + return; + } + + if(address == 0xb8) + { + if((data & 0xFF00) == 0x5500) + Z80_SetEnable(1); + else if((data & 0xFF00) == 0xAA00) + Z80_SetEnable(0); + + if((data & 0xFF) == 0x55) + MDFNNGPCSOUND_SetEnable(1); + else if((data & 0xFF) == 0xAA) + MDFNNGPCSOUND_SetEnable(0); + return; + } + + if (address == 0xBA) + { + Z80_nmi(); + return; + } + + if(address == 0xBC) + { + Z80_WriteComm(data); + return; + } + + if(address >= 0xa0 && address <= 0xA3) + { + storeB(address, data & 0xFF); + storeB(address + 1, data >> 8); + return; + } + + uint16* ptr = (uint16*)translate_address_write(address); + + //Write + if (ptr) + { + StoreU16_LE(ptr, data); + } + //else + // printf("ACK16: %08x %04x\n", address, data); + +} + +void storeL(uint32 address, uint32 data) +{ + storeW(address, data & 0xFFFF); + storeW(address + 2, data >> 16); +} + +//============================================================================= + +static const uint8 systemMemory[] = +{ + // 0x00 // 0x08 + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xFF, 0xFF, + // 0x10 // 0x18 + 0x34, 0x3C, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x3F, 0xFF, 0x2D, 0x01, 0xFF, 0xFF, 0x03, 0xB2, + // 0x20 // 0x28 + 0x80, 0x00, 0x01, 0x90, 0x03, 0xB0, 0x90, 0x62, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x4C, 0x4C, + // 0x30 // 0x38 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0xFF, 0x80, 0x7F, + // 0x40 // 0x48 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0x50 // 0x58 + 0x00, 0x20, 0x69, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + // 0x60 // 0x68 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x03, 0x03, 0x02, 0x00, 0x00, 0x4E, + // 0x70 // 0x78 + 0x02, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0x80 // 0x88 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0x90 // 0x98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0xA0 // 0xA8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0xB0 // 0xB8 + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0xC0 // 0xC8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0xD0 // 0xD8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0xE0 // 0xE8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // 0xF0 // 0xF8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +//============================================================================= + +void reset_memory(void) +{ + unsigned int i; + + FlashStatusEnable = FALSE; + RecacheFRM(); + + memory_flash_command = FALSE; + +//============================================================================= +//000000 -> 000100 CPU Internal RAM (Timers/DMA/Z80) +//===================================================== + + for (i = 0; i < sizeof(systemMemory); i++) + storeB(i, systemMemory[i]); + +//============================================================================= +//006C00 -> 006FFF BIOS Workspace +//================================== + + storeL(0x6C00, rom_header->startPC); //Start + + storeW(0x6C04, rom_header->catalog); + storeW(0x6E82, rom_header->catalog); + + storeB(0x6C06, rom_header->subCatalog); + storeB(0x6E84, rom_header->subCatalog); + + for(i = 0; i < 12; i++) + storeB(0x6c08 + i, ngpc_rom.data[0x24 + i]); + + storeB(0x6C58, 0x01); + + //32MBit cart? + if (ngpc_rom.length > 0x200000) + storeB(0x6C59, 0x01); + else + storeB(0x6C59, 0x00); + + storeB(0x6C55, 1); //Commercial game + + storeB(0x6F80, 0xFF); //Lots of battery power! + storeB(0x6F81, 0x03); + + storeB(0x6F84, 0x40); // "Power On" startup + storeB(0x6F85, 0x00); // No shutdown request + storeB(0x6F86, 0x00); // No user answer (?) + + //Language: 0 = Japanese, 1 = English + storeB(0x6F87, MDFN_GetSettingB("ngp.language")); + + //Color Mode Selection: 0x00 = B&W, 0x10 = Colour + storeB(0x6F91, rom_header->mode); + storeB(0x6F95, rom_header->mode); + + //Interrupt table + for (i = 0; i < 0x12; i++) + storeL(0x6FB8 + i * 4, 0x00FF23DF); + + +//============================================================================= +//008000 -> 00BFFF Video RAM +//============================= + + storeB(0x8000, 0xC0); // Both interrupts allowed + + //Hardware window + storeB(0x8002, 0x00); + storeB(0x8003, 0x00); + storeB(0x8004, 0xFF); + storeB(0x8005, 0xFF); + + storeB(0x8006, 0xc6); // Frame Rate Register + + storeB(0x8012, 0x00); // NEG / OOWC setting. + + storeB(0x8118, 0x80); // BGC on! + + storeB(0x83E0, 0xFF); // Default background colour + storeB(0x83E1, 0x0F); + + storeB(0x83F0, 0xFF); // Default window colour + storeB(0x83F1, 0x0F); + + storeB(0x8400, 0xFF); // LED on + storeB(0x8402, 0x80); // Flash cycle = 1.3s + + storeB(0x87E2, loadB(0x6F95) ? 0x00 : 0x80); +} + +//============================================================================= + + diff --git a/libmednahawk/src/ngp/mem.h b/libmednahawk/src/ngp/mem.h new file mode 100644 index 0000000000..82123a637b --- /dev/null +++ b/libmednahawk/src/ngp/mem.h @@ -0,0 +1,56 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __MEM__ +#define __MEM__ +//============================================================================= + +#define ROM_START 0x200000 +#define ROM_END 0x3FFFFF + +#define HIROM_START 0x800000 +#define HIROM_END 0x9FFFFF + +#define BIOS_START 0xFF0000 +#define BIOS_END 0xFFFFFF + +void reset_memory(void); + +void dump_memory(uint32 start, uint32 length); + +extern bool debug_abort_memory; +extern bool debug_mask_memory_error_messages; + +extern bool memory_unlock_flash_write; +extern bool memory_flash_error; +extern bool memory_flash_command; + +extern bool FlashStatusEnable; +extern uint8 COMMStatus; + +//============================================================================= + +uint8 loadB(uint32 address); +uint16 loadW(uint32 address); +uint32 loadL(uint32 address); + +void storeB(uint32 address, uint8 data); +void storeW(uint32 address, uint16 data); +void storeL(uint32 address, uint32 data); + +void SetFRM(void); +void RecacheFRM(void); + +//============================================================================= +#endif diff --git a/libmednahawk/src/ngp/neopop.cpp b/libmednahawk/src/ngp/neopop.cpp new file mode 100644 index 0000000000..f913a50765 --- /dev/null +++ b/libmednahawk/src/ngp/neopop.cpp @@ -0,0 +1,417 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "../general.h" +#include "../md5.h" + +#include "TLCS900h_interpret.h" +#include "TLCS900h_registers.h" +#include "Z80_interface.h" +#include "interrupt.h" +#include "mem.h" +#include "gfx.h" +#include "sound.h" +#include "dma.h" +#include "bios.h" +#include "flash.h" + +#include + +extern uint8 CPUExRAM[16384]; + +NGPGFX_CLASS *NGPGfx; + +COLOURMODE system_colour = COLOURMODE_AUTO; + +uint8 NGPJoyLatch; + +bool system_comms_read(uint8* buffer) +{ + return(0); +} + +bool system_comms_poll(uint8* buffer) +{ + return(0); +} + +void system_comms_write(uint8 data) +{ + return; +} + +void instruction_error(char* vaMessage,...) +{ + char message[1000]; + va_list vl; + + va_start(vl, vaMessage); + vsprintf(message, vaMessage, vl); + va_end(vl); + + MDFN_printf("[PC %06X] %s\n", pc, message); +} + +static uint8 *chee; + +bool NGPFrameSkip; +int32 ngpc_soundTS = 0; +//static int32 main_timeaccum; +static int32 z80_runtime; + +static void Emulate(EmulateSpecStruct *espec) +{ + bool MeowMeow = 0; + + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + espec->DisplayRect.w = 160; + espec->DisplayRect.h = 152; + + if(espec->VideoFormatChanged) + NGPGfx->set_pixel_format(espec->surface->format); + //espec->surface->format.Rshift, espec->surface->format.Gshift, + //espec->surface->format.Bshift); + + if(espec->SoundFormatChanged) + MDFNNGPC_SetSoundRate(espec->SoundRate); + + + NGPJoyLatch = *chee; + storeB(0x6F82, *chee); + + MDFNMP_ApplyPeriodicCheats(); + + ngpc_soundTS = 0; + NGPFrameSkip = espec->skip; + + do + { +#if 0 + int32 timetime; + + if(main_timeaccum == 0) + { + main_timeaccum = TLCS900h_interpret(); + if(main_timeaccum > 255) + { + main_timeaccum = 255; + printf("%d\n", main_timeaccum); + } + } + + timetime = std::min(main_timeaccum, 24); + main_timeaccum -= timetime; +#else + int32 timetime = (uint8)TLCS900h_interpret(); // This is sooo not right, but it's replicating the old behavior(which is necessary + // now since I've fixed the TLCS900h core and other places not to truncate cycle counts + // internally to 8-bits). Switch to the #if 0'd block of code once we fix cycle counts in the + // TLCS900h core(they're all sorts of messed up), and investigate if certain long + // instructions are interruptable(by interrupts) and later resumable, RE Rockman Battle + // & Fighters voice sample playback. +#endif + //if(timetime > 255) + // printf("%d\n", timetime); + + // Note: Don't call updateTimers with a time/tick/cycle/whatever count greater than 255. + MeowMeow |= updateTimers(espec->surface, timetime); + + z80_runtime += timetime; + + while(z80_runtime > 0) + { + int z80rantime = Z80_RunOP(); + + if(z80rantime < 0) // Z80 inactive, so take up all run time! + { + z80_runtime = 0; + break; + } + + z80_runtime -= z80rantime << 1; + + } + } while(!MeowMeow); + + + espec->MasterCycles = ngpc_soundTS; + espec->SoundBufSize = MDFNNGPCSOUND_Flush(espec->SoundBuf, espec->SoundBufMaxSize); +} + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(strcasecmp(fp->ext, "ngp") && strcasecmp(fp->ext, "ngpc") && strcasecmp(fp->ext, "ngc") && strcasecmp(fp->ext, "npc")) + return(FALSE); + + return(TRUE); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + if(!(ngpc_rom.data = (uint8 *)MDFN_malloc(fp->size, _("Cart ROM")))) + return(0); + + ngpc_rom.length = fp->size; + memcpy(ngpc_rom.data, fp->data, fp->size); + + md5_context md5; + md5.starts(); + md5.update(ngpc_rom.data, ngpc_rom.length); + md5.finish(MDFNGameInfo->MD5); + + rom_loaded(); + MDFN_printf(_("ROM: %dKiB\n"), (ngpc_rom.length + 1023) / 1024); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + MDFNMP_Init(1024, 1024 * 1024 * 16 / 1024); + + NGPGfx = new NGPGFX_CLASS(); + + MDFNGameInfo->fps = (uint32)((uint64)6144000 * 65536 * 256 / 515 / 198); // 3072000 * 2 * 10000 / 515 / 198 + MDFNGameInfo->GameSetMD5Valid = FALSE; + + MDFNNGPCSOUND_Init(); + + MDFNMP_AddRAM(16384, 0x4000, CPUExRAM); + + SetFRM(); // Set up fast read memory mapping + + bios_install(); + + //main_timeaccum = 0; + z80_runtime = 0; + + reset(); + + return(1); +} + +static void CloseGame(void) +{ + rom_unload(); +} + +static void SetInput(int port, const char *type, void *ptr) +{ + if(!port) chee = (uint8 *)ptr; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(z80_runtime), + SFARRAY(CPUExRAM, 16384), + SFVAR(FlashStatusEnable), + SFEND + }; + + SFORMAT TLCS_StateRegs[] = + { + SFVARN(pc, "PC"), + SFVARN(sr, "SR"), + SFVARN(f_dash, "F_DASH"), + SFARRAY32N(gpr, 4, "GPR"), + SFARRAY32N(gprBank[0], 4, "GPRB0"), + SFARRAY32N(gprBank[1], 4, "GPRB1"), + SFARRAY32N(gprBank[2], 4, "GPRB2"), + SFARRAY32N(gprBank[3], 4, "GPRB3"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN")) + return(0); + + if(!MDFNSS_StateAction(sm, load, data_only, TLCS_StateRegs, "TLCS")) + return(0); + + if(!MDFNNGPCDMA_StateAction(sm, load, data_only)) + return(0); + + if(!MDFNNGPCSOUND_StateAction(sm, load, data_only)) + return(0); + + if(!NGPGfx->StateAction(sm, load, data_only)) + return(0); + + if(!MDFNNGPCZ80_StateAction(sm, load, data_only)) + return(0); + + if(!int_timer_StateAction(sm, load, data_only)) + return(0); + + if(!BIOSHLE_StateAction(sm, load, data_only)) + return(0); + + if(!FLASH_StateAction(sm, load, data_only)) + return(0); + + if(load) + { + RecacheFRM(); + changedSP(); + } + return(1); +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_POWER: + case MDFN_MSC_RESET: reset(); + break; + } +} + +static const MDFNSetting_EnumList LanguageList[] = +{ + { "japanese", 0, gettext_noop("Japanese") }, + { "0", 0 }, + + { "english", 1, gettext_noop("English") }, + { "1", 1 }, + + { NULL, 0 }, +}; + +static MDFNSetting NGPSettings[] = +{ + { "ngp.language", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Language games should display text in."), NULL, MDFNST_ENUM, "english", NULL, NULL, NULL, NULL, LanguageList }, + { NULL } +}; + + +bool system_io_flash_read(uint8* buffer, uint32 bufferLength) +{ + FILE *fp = fopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "flash").c_str(), "rb"); + if(!fp) return(0); + + if(!fread(buffer, 1, bufferLength, fp)) + { + fclose(fp); + return(0); + } + + fclose(fp); + + return(1); +} + +bool system_io_flash_write(uint8* buffer, uint32 bufferLength) +{ + FILE *fp = fopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "flash").c_str(), "wb"); + if(!fp) return(0); + + if(!fwrite(buffer, 1, bufferLength, fp)) + { + fclose(fp); + return(0); + } + + fclose(fp); + + return(1); +} + +static void SetLayerEnableMask(uint64 mask) +{ + NGPGfx->SetLayerEnableMask(mask); +} + +static const InputDeviceInputInfoStruct IDII[] = +{ + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "a", "A", 5, IDIT_BUTTON_CAN_RAPID, NULL }, + { "b", "B", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "option", "OPTION", 4, IDIT_BUTTON, NULL }, +}; +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), + IDII, + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" } +}; + +static InputInfoStruct InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".ngp", gettext_noop("Neo Geo Pocket ROM Image") }, + { ".ngc", gettext_noop("Neo Geo Pocket Color ROM Image") }, + { NULL, NULL } +}; + +MDFNGI EmulatedNGP = +{ + "ngp", + "Neo Geo Pocket (Color)", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + NULL, + &InputInfo, + Load, + TestMagic, + NULL, + NULL, + CloseGame, + SetLayerEnableMask, + "Background Scroll\0Foreground Scroll\0Sprites\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + SetInput, + DoSimpleCommand, + NGPSettings, + MDFN_MASTERCLOCK_FIXED(6144000), + 0, + + false, // Multires possible? + + 160, // lcm_width + 152, // lcm_height + NULL, // Dummy + + 160, // Nominal width + 152, // Nominal height + + 160, // Framebuffer width + 152, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/ngp/neopop.h b/libmednahawk/src/ngp/neopop.h new file mode 100644 index 0000000000..cc8478c469 --- /dev/null +++ b/libmednahawk/src/ngp/neopop.h @@ -0,0 +1,220 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __NEOPOP__ +#define __NEOPOP__ +//============================================================================= + +#include "../mednafen.h" +#include "../mempatcher.h" +#include + +#include +#include +#include +#include + +#include "TLCS900h_disassemble.h" +#include "TLCS900h_interpret_dst.h" +#include "TLCS900h_interpret.h" +#include "TLCS900h_interpret_reg.h" +#include "TLCS900h_interpret_single.h" +#include "TLCS900h_interpret_src.h" +#include "TLCS900h_registers.h" + + +// I put the TLCS900h code in its own namespace, so it doesn't +// pollute the global namespace with all of its CARAZZZY short-named global variables. +// (I'm too lazy to clean up and turn it into an object :b) +using namespace TLCS900H; + +//============================================================================= + + +//=========================== +// GCC specific +//=========================== + +#ifndef max +#define max(a,b) ((a)>(b)?(a):(b)) +#endif + +#ifndef min +#define min(a,b) ((a)<(b)?(a):(b)) +#endif + +//COLOURMODE +typedef enum +{ + COLOURMODE_GREYSCALE, + COLOURMODE_COLOUR, + COLOURMODE_AUTO +} +COLOURMODE; + +//RomInfo +typedef struct +{ + uint8* data; //Pointer to the rom data + uint8 *orig_data; // Original data(without flash writes during emulation; necessary for save states) + + uint32 length; //Length of the rom + + uint8 name[16]; //Null terminated string, holding the Game name +} +RomInfo; + +//RomHeader +typedef struct +{ + uint8 licence[28]; // 0x00 - 0x1B + uint32 startPC; // 0x1C - 0x1F + uint16 catalog; // 0x20 - 0x21 + uint8 subCatalog; // 0x22 + uint8 mode; // 0x23 + uint8 name[12]; // 0x24 - 0x2F + + uint32 reserved1; // 0x30 - 0x33 + uint32 reserved2; // 0x34 - 0x37 + uint32 reserved3; // 0x38 - 0x3B + uint32 reserved4; // 0x3C - 0x3F +} __attribute__((__packed__)) RomHeader; + +//============================================================================= + +//----------------------------------------------------------------------------- +// Core <--> System-Main Interface +//----------------------------------------------------------------------------- + + void reset(void); + +/* Fill the bios rom area with a bios. call once at program start */ + bool bios_install(void); + + extern RomInfo ngpc_rom; + + extern RomHeader* rom_header; + +/*! Emulate a single instruction with correct TLCS900h:Z80 timing */ + + void emulate(void); + +/*! Call this function when a rom has just been loaded, it will perform + the system independent actions required. */ + + void rom_loaded(void); + +/*! Tidy up the rom and free the resources used. */ + + void rom_unload(void); + + //========================================= + +/*! Used to generate a critical message for the user. After the message + has been displayed, the function should return. The message is not + necessarily a fatal error. */ + + void system_message(char* vaMessage,...); + +/*! Called at the start of the vertical blanking period, this function is + designed to perform many of the critical hardware interface updates + Here is a list of recommended actions to take: + + - The frame buffer should be copied to the screen. + - The frame rate should be throttled to 59.95hz + - The sound chips should be polled for the next chunk of data + - Input should be polled and the current status written to "ram[0x6F82]" */ + + void system_VBL(void); + + +//----------------------------------------------------------------------------- +// Core <--> System-Graphics Interface +//----------------------------------------------------------------------------- + + // Physical screen dimensions +#define SCREEN_WIDTH 160 +#define SCREEN_HEIGHT 152 + + extern COLOURMODE system_colour; + + +//----------------------------------------------------------------------------- +// Core <--> System-Sound Interface +//----------------------------------------------------------------------------- + + // Speed of DAC playback +#define DAC_FREQUENCY 8000 //hz + + extern bool mute; + +/*! Fills the given buffer with sound data */ + + void sound_update(uint16* chip_buffer, int length_bytes); + void dac_update(uint8* dac_buffer, int length_bytes); + +/*! Initialises the sound chips using the given SampleRate */ + + void sound_init(int SampleRate); + + //========================================= + +//----------------------------------------------------------------------------- +// Core <--> System-IO Interface +//----------------------------------------------------------------------------- + +/*! Reads a byte from the other system. If no data is available or no + high-level communications have been established, then return FALSE. + If buffer is NULL, then no data is read, only status is returned */ + + bool system_comms_read(uint8* buffer); + + +/*! Peeks at any data from the other system. If no data is available or + no high-level communications have been established, then return FALSE. + If buffer is NULL, then no data is read, only status is returned */ + + bool system_comms_poll(uint8* buffer); + + +/*! Writes a byte from the other system. This function should block until + the data is written. USE RELIABLE COMMS! Data cannot be re-requested. */ + + void system_comms_write(uint8 data); + + +/*! Reads as much of the file specified by 'filename' into the given, + preallocated buffer. This is rom data */ + + bool system_io_rom_read(char* filename, uint8* buffer, uint32 bufferLength); + + +/*! Reads the "appropriate" (system specific) flash data into the given + preallocated buffer. The emulation core doesn't care where from. */ + + bool system_io_flash_read(uint8* buffer, uint32 bufferLength); + + +/*! Writes the given flash data into an "appropriate" (system specific) + place. The emulation core doesn't care where to. */ + + bool system_io_flash_write(uint8* buffer, uint32 bufferLength); + +void int_redo_icache(void); + +#include "gfx.h" + +extern NGPGFX_CLASS *NGPGfx; +extern uint8 NGPJoyLatch; +#endif diff --git a/libmednahawk/src/ngp/rom.cpp b/libmednahawk/src/ngp/rom.cpp new file mode 100644 index 0000000000..b9a8c9729b --- /dev/null +++ b/libmednahawk/src/ngp/rom.cpp @@ -0,0 +1,181 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include "flash.h" +#include "interrupt.h" +#include "TLCS900h_disassemble.h" + +//============================================================================= + +RomInfo ngpc_rom; +RomHeader* rom_header; + +#define MATCH_CATALOG(c, s) (rom_header->catalog == htole16(c) \ + && rom_header->subCatalog == (s)) + +//============================================================================= + +static void rom_hack(void) +{ + //============================= + // SPECIFIC ROM HACKS ! + //============================= + + //"Neo-Neo! V1.0 (PD)" + if (MATCH_CATALOG(0, 16)) + { + ngpc_rom.data[0x23] = 0x10; // Fix rom header + + MDFN_printf("HACK: \"Neo-Neo! V1.0 (PD)\"\n"); + } + + //"Cool Cool Jam SAMPLE (U)" + if (MATCH_CATALOG(4660, 161)) + { + ngpc_rom.data[0x23] = 0x10; // Fix rom header + + MDFN_printf("HACK: \"Cool Cool Jam SAMPLE (U)\"\n"); + } + + //"Dokodemo Mahjong (J)" + if (MATCH_CATALOG(51, 33)) + { + ngpc_rom.data[0x23] = 0x00; // Fix rom header + + MDFN_printf("HACK: \"Dokodemo Mahjong (J)\"\n"); + } + + //"Puyo Pop (V05) (JUE)" + if (MATCH_CATALOG(65, 5)) + { + int i; + for (i = 0x8F0; i < 0x8FC; i++) + ngpc_rom.data[i] = 0; + + MDFN_printf("HACK: \"Puyo Pop (V05) (JUE)\"\n"); + } + + //"Puyo Pop (V06) (JUE)" + if (MATCH_CATALOG(65, 6)) + { + int i; + for (i = 0x8F0; i < 0x8FC; i++) + ngpc_rom.data[i] = 0; + //extern uint32 pc; + //pc = 0x200000 + 0x100; + //for(int x = 0; x < 65536; x++) + //puts(TLCS900h_disassemble()); + MDFN_printf("HACK: \"Puyo Pop (V06) (JUE)\"\n"); + } + + //"Metal Slug - 2nd Mission (JUE) [!]" + //"Metal Slug - 2nd Mission (JUE) [h1]" + if (MATCH_CATALOG(97, 4)) + { + //Enable dev-kit code path, because otherwise it doesn't + //allow jumping or firing (for some reason!) + + ngpc_rom.data[0x1f] = 0xFF; + + //Enables in-game voices ("Pineapple", etc.) + //that were aren't supposed to be available in Dev-kit mode. + ngpc_rom.data[0x8DDF8] = 0xF0; //28DDF7: "RET NZ" -> "RET F" + + MDFN_printf("HACK: \"Metal Slug - 2nd Mission (JUE)\"\n"); + } +} + +//============================================================================= + +static void rom_display_header(void) +{ + MDFN_printf(_("Name: %s\n"), ngpc_rom.name); + MDFN_printf(_("System: ")); + + if(rom_header->mode & 0x10) + MDFN_printf(_("Color")); + else + MDFN_printf(_("Greyscale")); + + MDFN_printf("\n"); + + MDFN_printf(_("Catalog: %d (sub %d)\n"), + le16toh(rom_header->catalog), + rom_header->subCatalog); + + //Starting PC + MDFN_printf(_("Starting PC: 0x%06X\n"), le32toh(rom_header->startPC) & 0xFFFFFF); +} + +//============================================================================= + +//----------------------------------------------------------------------------- +// rom_loaded() +//----------------------------------------------------------------------------- +void rom_loaded(void) +{ + int i; + + ngpc_rom.orig_data = (uint8 *)malloc(ngpc_rom.length); + memcpy(ngpc_rom.orig_data, ngpc_rom.data, ngpc_rom.length); + + //Extract the header + rom_header = (RomHeader*)(ngpc_rom.data); + + //Rom Name + for(i = 0; i < 12; i++) + { + if (rom_header->name[i] >= 32 && rom_header->name[i] < 128) + ngpc_rom.name[i] = rom_header->name[i]; + else + ngpc_rom.name[i] = ' '; + } + ngpc_rom.name[i] = 0; + + rom_hack(); //Apply a hack if required! + + rom_display_header(); + + flash_read(); +} + +//----------------------------------------------------------------------------- +// rom_unload() +//----------------------------------------------------------------------------- +void rom_unload(void) +{ + if (ngpc_rom.data) + { + int i; + + flash_commit(); + + free(ngpc_rom.data); + ngpc_rom.data = NULL; + ngpc_rom.length = 0; + rom_header = 0; + + for (i = 0; i < 16; i++) + ngpc_rom.name[i] = 0; + } + + if(ngpc_rom.orig_data) + { + free(ngpc_rom.orig_data); + ngpc_rom.orig_data = NULL; + } +} + +//============================================================================= diff --git a/libmednahawk/src/ngp/rtc.cpp b/libmednahawk/src/ngp/rtc.cpp new file mode 100644 index 0000000000..cf051c2f55 --- /dev/null +++ b/libmednahawk/src/ngp/rtc.cpp @@ -0,0 +1,66 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#include "neopop.h" +#include + +static uint8 rtc_latch[7]; + +static void update_rtc_latch(void) +{ + uint8 low, high; + + struct tm *localTime; + time_t long_time; + + //Get the system time + time(&long_time); + localTime = localtime(&long_time); + if (localTime) + { + low = localTime->tm_year - 100; high = low; //Years + rtc_latch[0x00] = ((high / 10) << 4) | (low % 10); + + low = localTime->tm_mon + 1; high = low; //Months + rtc_latch[0x01] = ((high / 10) << 4) | (low % 10); + + low = localTime->tm_mday; high = low; //Days + rtc_latch[0x02] = ((high / 10) << 4) | (low % 10); + + low = localTime->tm_hour; high = low; //Hours + rtc_latch[0x03] = ((high / 10) << 4) | (low % 10); + + low = localTime->tm_min; high = low; //Minutes + rtc_latch[0x04] = ((high / 10) << 4) | (low % 10); + + low = localTime->tm_sec; high = low; //Seconds + rtc_latch[0x05] = ((high / 10) << 4) | (low % 10); + + rtc_latch[0x06] = ((rtc_latch[0x00] % 4)<<4) | (localTime->tm_wday & 0x0F); + } +} + + + +uint8 rtc_read8(uint32 address) +{ + if(address >= 0x0091 && address <= 0x0097) + { + if(address == 0x0091) + update_rtc_latch(); + + return(rtc_latch[address - 0x0091]); + } + return(0); +} diff --git a/libmednahawk/src/ngp/rtc.h b/libmednahawk/src/ngp/rtc.h new file mode 100644 index 0000000000..8164c1b2e1 --- /dev/null +++ b/libmednahawk/src/ngp/rtc.h @@ -0,0 +1,6 @@ +#ifndef __NGP_RTC_H +#define __NGP_RTC_H + +uint8 rtc_read8(uint32 address); + +#endif diff --git a/libmednahawk/src/ngp/sound.cpp b/libmednahawk/src/ngp/sound.cpp new file mode 100644 index 0000000000..9f26e8dad1 --- /dev/null +++ b/libmednahawk/src/ngp/sound.cpp @@ -0,0 +1,146 @@ +#include "neopop.h" +#include "sound.h" + +#include +#include "T6W28_Apu.h" +#include + +static T6W28_Apu apu; + +static Stereo_Buffer buf; + +static uint8 LastDACLeft = 0, LastDACRight = 0; +static uint8 CurrentDACLeft = 0, CurrentDACRight = 0; + +typedef Blip_Synth Synth; +static Synth synth; +extern int32 ngpc_soundTS; +static bool schipenable = 0; + +void MDFNNGPCSOUND_SetEnable(bool set) +{ + schipenable = set; + if(!set) + apu.reset(); +} + +void Write_SoundChipLeft(uint8 data) +{ + if(schipenable) + apu.write_data_left(ngpc_soundTS >> 1, data); +} + +void Write_SoundChipRight(uint8 data) +{ + if(schipenable) + apu.write_data_right(ngpc_soundTS >> 1, data); +} + + +void dac_write_left(uint8 data) +{ + CurrentDACLeft = data; + + synth.offset_inline(ngpc_soundTS >> 1, CurrentDACLeft - LastDACLeft, buf.left()); + + LastDACLeft = data; +} + +void dac_write_right(uint8 data) +{ + CurrentDACRight = data; + + synth.offset_inline(ngpc_soundTS >> 1, CurrentDACRight - LastDACRight, buf.right()); + + LastDACRight = data; +} + + +int32 MDFNNGPCSOUND_Flush(int16 *SoundBuf, const int32 MaxSoundFrames) +{ + int32 FrameCount = 0; + + apu.end_frame(ngpc_soundTS >> 1); + + buf.end_frame(ngpc_soundTS >> 1); + + if(SoundBuf) + FrameCount = buf.read_samples(SoundBuf, MaxSoundFrames * 2) / 2; + else + buf.clear(); + + return(FrameCount); +} + +static void RedoVolume(void) +{ + apu.output(buf.center(), buf.left(), buf.right()); + apu.volume(0.30); + synth.volume(0.40); +} + +void MDFNNGPCSOUND_Init(void) +{ + MDFNNGPC_SetSoundRate(0); + buf.clock_rate((long)(3072000)); + + RedoVolume(); + buf.bass_freq(20); +} + +bool MDFNNGPC_SetSoundRate(uint32 rate) +{ + buf.set_sample_rate(rate?rate:44100, 60); + return(TRUE); +} + +int MDFNNGPCSOUND_StateAction(StateMem *sm, int load, int data_only) +{ + T6W28_ApuState *sn_state; + + if(!load) + { + sn_state = apu.save_state(); + } + else + { + sn_state = (T6W28_ApuState *)malloc(sizeof(T6W28_ApuState)); + } + + SFORMAT StateRegs[] = + { + SFVAR(CurrentDACLeft), + SFVAR(CurrentDACRight), + + SFVAR(schipenable), + + SFARRAY32N(sn_state->volume_left, 4, "VolumeLeft"), + SFARRAY32N(sn_state->volume_right, 4, "VolumeRight"), + SFARRAY32N(sn_state->sq_period, 3, "SQPeriod"), + SFARRAY32N(sn_state->sq_phase, 3, "SQPhase"), + SFVARN(sn_state->noise_period, "NPeriod"), + SFVARN(sn_state->noise_shifter, "NShifter"), + SFVARN(sn_state->noise_tap, "NTap"), + SFVARN(sn_state->latch_left, "LatchLeft"), + SFVARN(sn_state->latch_right, "LatchRight"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "SND")) + { + free(sn_state); + return(0); + } + + if(load) + { + apu.load_state(sn_state); + synth.offset(ngpc_soundTS >> 1, CurrentDACLeft - LastDACLeft, buf.left()); + synth.offset(ngpc_soundTS >> 1, CurrentDACRight - LastDACRight, buf.right()); + LastDACLeft = CurrentDACLeft; + LastDACRight = CurrentDACRight; + } + + free(sn_state); + return(1); +} diff --git a/libmednahawk/src/ngp/sound.h b/libmednahawk/src/ngp/sound.h new file mode 100644 index 0000000000..2882464e36 --- /dev/null +++ b/libmednahawk/src/ngp/sound.h @@ -0,0 +1,30 @@ +//--------------------------------------------------------------------------- +// NEOPOP : Emulator as in Dreamland +// +// Copyright (c) 2001-2002 by neopop_uk +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. See also the license.txt file for +// additional informations. +//--------------------------------------------------------------------------- + +#ifndef __SOUND__ +#define __SOUND__ + +void Write_SoundChipLeft(uint8 data); +void Write_SoundChipRight(uint8 data); + +void dac_write_left(uint8); +void dac_write_right(uint8); + +int32 MDFNNGPCSOUND_Flush(int16 *SoundBuf, const int32 MaxSoundFrames); +void MDFNNGPCSOUND_Init(void); +bool MDFNNGPC_SetSoundRate(uint32 rate); +int MDFNNGPCSOUND_StateAction(StateMem *sm, int load, int data_only); +void MDFNNGPCSOUND_SetEnable(bool set); + +#endif diff --git a/libmednahawk/src/okiadpcm-deltatable.h b/libmednahawk/src/okiadpcm-deltatable.h new file mode 100644 index 0000000000..e12289da03 --- /dev/null +++ b/libmednahawk/src/okiadpcm-deltatable.h @@ -0,0 +1,98 @@ +{ +2, 6, 10, 14, 18, 22, 26, 30, -2, -6, -10, -14, -18, -22, -26, -30 }, +{ +2, 6, 10, 14, 19, 23, 27, 31, -2, -6, -10, -14, -19, -23, -27, -31 }, +{ +2, 6, 11, 15, 21, 25, 30, 34, -2, -6, -11, -15, -21, -25, -30, -34 }, +{ +2, 7, 12, 17, 23, 28, 33, 38, -2, -7, -12, -17, -23, -28, -33, -38 }, +{ +2, 7, 13, 18, 25, 30, 36, 41, -2, -7, -13, -18, -25, -30, -36, -41 }, +{ +3, 9, 15, 21, 28, 34, 40, 46, -3, -9, -15, -21, -28, -34, -40, -46 }, +{ +3, 10, 17, 24, 31, 38, 45, 52, -3, -10, -17, -24, -31, -38, -45, -52 }, +{ +3, 10, 18, 25, 34, 41, 49, 56, -3, -10, -18, -25, -34, -41, -49, -56 }, +{ +4, 12, 21, 29, 38, 46, 55, 63, -4, -12, -21, -29, -38, -46, -55, -63 }, +{ +4, 13, 22, 31, 41, 50, 59, 68, -4, -13, -22, -31, -41, -50, -59, -68 }, +{ +5, 15, 25, 35, 46, 56, 66, 76, -5, -15, -25, -35, -46, -56, -66, -76 }, +{ +5, 16, 27, 38, 50, 61, 72, 83, -5, -16, -27, -38, -50, -61, -72, -83 }, +{ +6, 18, 31, 43, 56, 68, 81, 93, -6, -18, -31, -43, -56, -68, -81, -93 }, +{ +6, 19, 33, 46, 61, 74, 88, 101, -6, -19, -33, -46, -61, -74, -88, -101 }, +{ +7, 22, 37, 52, 67, 82, 97, 112, -7, -22, -37, -52, -67, -82, -97, -112 }, +{ +8, 24, 41, 57, 74, 90, 107, 123, -8, -24, -41, -57, -74, -90, -107, -123 }, +{ +9, 27, 45, 63, 82, 100, 118, 136, -9, -27, -45, -63, -82, -100, -118, -136 }, +{ +10, 30, 50, 70, 90, 110, 130, 150, -10, -30, -50, -70, -90, -110, -130, -150 }, +{ +11, 33, 55, 77, 99, 121, 143, 165, -11, -33, -55, -77, -99, -121, -143, -165 }, +{ +12, 36, 60, 84, 109, 133, 157, 181, -12, -36, -60, -84, -109, -133, -157, -181 }, +{ +13, 39, 66, 92, 120, 146, 173, 199, -13, -39, -66, -92, -120, -146, -173, -199 }, +{ +14, 43, 73, 102, 132, 161, 191, 220, -14, -43, -73, -102, -132, -161, -191, -220 }, +{ +16, 48, 81, 113, 146, 178, 211, 243, -16, -48, -81, -113, -146, -178, -211, -243 }, +{ +17, 52, 88, 123, 160, 195, 231, 266, -17, -52, -88, -123, -160, -195, -231, -266 }, +{ +19, 58, 97, 136, 176, 215, 254, 293, -19, -58, -97, -136, -176, -215, -254, -293 }, +{ +21, 64, 107, 150, 194, 237, 280, 323, -21, -64, -107, -150, -194, -237, -280, -323 }, +{ +23, 70, 118, 165, 213, 260, 308, 355, -23, -70, -118, -165, -213, -260, -308, -355 }, +{ +26, 78, 130, 182, 235, 287, 339, 391, -26, -78, -130, -182, -235, -287, -339, -391 }, +{ +28, 85, 143, 200, 258, 315, 373, 430, -28, -85, -143, -200, -258, -315, -373, -430 }, +{ +31, 94, 157, 220, 284, 347, 410, 473, -31, -94, -157, -220, -284, -347, -410, -473 }, +{ +34, 103, 173, 242, 313, 382, 452, 521, -34, -103, -173, -242, -313, -382, -452, -521 }, +{ +38, 114, 191, 267, 345, 421, 498, 574, -38, -114, -191, -267, -345, -421, -498, -574 }, +{ +42, 126, 210, 294, 379, 463, 547, 631, -42, -126, -210, -294, -379, -463, -547, -631 }, +{ +46, 138, 231, 323, 417, 509, 602, 694, -46, -138, -231, -323, -417, -509, -602, -694 }, +{ +51, 153, 255, 357, 459, 561, 663, 765, -51, -153, -255, -357, -459, -561, -663, -765 }, +{ +56, 168, 280, 392, 505, 617, 729, 841, -56, -168, -280, -392, -505, -617, -729, -841 }, +{ +61, 184, 308, 431, 555, 678, 802, 925, -61, -184, -308, -431, -555, -678, -802, -925 }, +{ +68, 204, 340, 476, 612, 748, 884, 1020, -68, -204, -340, -476, -612, -748, -884, -1020 }, +{ +74, 223, 373, 522, 672, 821, 971, 1120, -74, -223, -373, -522, -672, -821, -971, -1120 }, +{ +82, 246, 411, 575, 740, 904, 1069, 1233, -82, -246, -411, -575, -740, -904, -1069, -1233 }, +{ +90, 271, 452, 633, 814, 995, 1176, 1357, -90, -271, -452, -633, -814, -995, -1176, -1357 }, +{ +99, 298, 497, 696, 895, 1094, 1293, 1492, -99, -298, -497, -696, -895, -1094, -1293, -1492 }, +{ +109, 328, 547, 766, 985, 1204, 1423, 1642, -109, -328, -547, -766, -985, -1204, -1423, -1642 }, +{ +120, 360, 601, 841, 1083, 1323, 1564, 1804, -120, -360, -601, -841, -1083, -1323, -1564, -1804 }, +{ +132, 397, 662, 927, 1192, 1457, 1722, 1987, -132, -397, -662, -927, -1192, -1457, -1722, -1987 }, +{ +145, 436, 728, 1019, 1311, 1602, 1894, 2185, -145, -436, -728, -1019, -1311, -1602, -1894, -2185 }, +{ +160, 480, 801, 1121, 1442, 1762, 2083, 2403, -160, -480, -801, -1121, -1442, -1762, -2083, -2403 }, +{ +176, 528, 881, 1233, 1587, 1939, 2292, 2644, -176, -528, -881, -1233, -1587, -1939, -2292, -2644 }, +{ +194, 582, 970, 1358, 1746, 2134, 2522, 2910, -194, -582, -970, -1358, -1746, -2134, -2522, -2910 }, diff --git a/libmednahawk/src/okiadpcm.cpp b/libmednahawk/src/okiadpcm.cpp new file mode 100644 index 0000000000..a2445b3f89 --- /dev/null +++ b/libmednahawk/src/okiadpcm.cpp @@ -0,0 +1,49 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "okiadpcm.h" +#include + +const int OKIADPCM_StepSizes[49] = +{ + // These can also be generated like: + // double start = 16; + // for(int x = 0; x < 49; x++) + // { + // printf("%d, ", (int)start); + // start *= 1.1; + // } + 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, + 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, + 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, + 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, +}; + +const int OKIADPCM_StepIndexDeltas[16] = +{ + -1, -1, -1, -1, 2, 4, 6, 8, + -1, -1, -1, -1, 2, 4, 6, 8 +}; + +const int32 OKIADPCM_DeltaTable[49][16] = +{ + #ifndef OKIADPCM_GENERATE_DELTATABLE + #include "okiadpcm-deltatable.h" + #endif +}; + diff --git a/libmednahawk/src/okiadpcm.h b/libmednahawk/src/okiadpcm.h new file mode 100644 index 0000000000..1c4406b9ba --- /dev/null +++ b/libmednahawk/src/okiadpcm.h @@ -0,0 +1,165 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __MDFN_OKIADPCM_H +#define __MDFN_OKIADPCM_H + +// PC-FX ADPCM decoder not finished! + +typedef enum +{ + OKIADPCM_MSM5205 = 0, + OKIADPCM_MSM5218 = 1, + OKIADPCM_COUNT +} OKIADPCM_Chip; + +extern const int OKIADPCM_StepSizes[49]; +extern const int OKIADPCM_StepIndexDeltas[16]; +extern const int32 OKIADPCM_DeltaTable[49][16]; + +template +class OKIADPCM_Decoder +{ + public: + + OKIADPCM_Decoder() + { + assert(CHIP_TYPE < OKIADPCM_COUNT); + + CurSample = 0x0800; + + StepSizeIndex = 0; + } + ~OKIADPCM_Decoder() + { + + } + + INLINE uint16 GetSample(void) + { + return(CurSample); + } + + INLINE void SetSample(uint16 new_sample) + { + assert(new_sample <= 0xFFF); + CurSample = new_sample; + } + + INLINE uint8 GetSSI(void) + { + return(StepSizeIndex); + } + + INLINE void SetSSI(uint8 new_ssi) + { + assert(new_ssi <= 48); + StepSizeIndex = new_ssi; + } + + // DecodeDelta returns the coded delta for the given nibble and (previous) predictor. + // It will not wrap nor saturate the returned value, and CurSample is not updated. + INLINE int32 DecodeDelta(const uint8 nibble) + { + int32 ret = OKIADPCM_DeltaTable[StepSizeIndex][nibble]; + + StepSizeIndex += OKIADPCM_StepIndexDeltas[nibble]; + + if(StepSizeIndex < 0) + StepSizeIndex = 0; + + if(StepSizeIndex > 48) + StepSizeIndex = 48; + + return(ret); + } + + // This function will return the full 12-bits, it's up to the caller to + // truncate as necessary(MSM5205 only has a 10-bit D/A, MSM5218 has a 12-bit D/A) + INLINE uint16 Decode(const uint8 nibble) + { + CurSample += DecodeDelta(nibble); + + if(CHIP_TYPE == OKIADPCM_MSM5205) + { + CurSample &= 0xFFF; + } + else if(CHIP_TYPE == OKIADPCM_MSM5218) + { + if(CurSample > 0xFFF) + CurSample = 0xFFF; + if(CurSample < 0) + CurSample = 0; + } + return(CurSample); + } + + private: + int32 CurSample; + int32 StepSizeIndex; +}; + +template +class OKIADPCM_Encoder +{ + public: + + OKIADPCM_Encoder() + { + Accum = 0x800; + StepSizeIndex = 0; + } + + ~OKIADPCM_Encoder() + { + + } + + uint8 EncodeSample(uint16 in_sample) + { + uint8 nibble = 0; + int32 sample_delta = in_sample - Accum; + int piece; + + piece = (abs(sample_delta) * 4 / OKIADPCM_StepSizes[StepSizeIndex]); + if(piece > 0x7) + piece = 0x7; + + nibble = ((uint32)(sample_delta >> 31) & 0x8) | piece; + + // Update Accum and StepSizeIndex! + Accum += OKIADPCM_DeltaTable[StepSizeIndex][nibble]; + StepSizeIndex += OKIADPCM_StepIndexDeltas[nibble]; + + if(Accum > 0xFFF) Accum = 0xFFF; + if(Accum < 0) Accum = 0; + + if(StepSizeIndex < 0) + StepSizeIndex = 0; + + if(StepSizeIndex > 48) + StepSizeIndex = 48; + + return(nibble); + } + + private: + int32 Accum; + int32 StepSizeIndex; + OKIADPCM_Chip ChipType; +}; +#endif diff --git a/libmednahawk/src/okiadpcm_generate.cpp b/libmednahawk/src/okiadpcm_generate.cpp new file mode 100644 index 0000000000..7bb8e9a030 --- /dev/null +++ b/libmednahawk/src/okiadpcm_generate.cpp @@ -0,0 +1,78 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* Generates okiadpcm-deltatable.h for okiadpcm.cpp */ +/* WARNING: Not compiled/updated automatically. */ + +#define OKIADPCM_GENERATE_DELTATABLE +#include "okiadpcm.cpp" // EVIL EVIL BE GONE YE EVIL + +static void BuildDeltaTable(int32 DeltaTable[49][16]) +{ + int32 extra_accuracy_mul; + int32 extra_accuracy_div; + + extra_accuracy_mul = 1; + extra_accuracy_div = 1; + + for(int ssi = 0; ssi < 49; ssi++) + { + for(int nibbles = 0; nibbles < 16; nibbles++) + { + int32 ssn = OKIADPCM_StepSizes[ssi]; + int32 delta = 0; + + if(nibbles & 0x4) + delta += ssn * extra_accuracy_mul; + + if(nibbles & 0x2) + delta += ssn * extra_accuracy_mul / 2; + + if(nibbles & 0x1) + delta += ssn * extra_accuracy_mul / 4; + + delta += ssn * extra_accuracy_mul / 8; + + // Divide(or shift right in the future!) before inverting the sign so there won't be any asymmetric rounding issues + // for negative numbers. + delta /= extra_accuracy_div; + + if(nibbles & 8) + delta = -delta; + + DeltaTable[ssi][nibbles] = delta; + } + } +} + +int main(int argc, char *argv[]) +{ + int32 DeltaTable[49][16]; + + BuildDeltaTable(DeltaTable); + + for(int ssi = 0; ssi < 49; ssi++) + { + puts("{"); + for(int nibbles = 0; nibbles < 16; nibbles++) + { + printf((nibbles == 15) ? "%d ":"%d, ", DeltaTable[ssi][nibbles]); + } + puts("},"); + } + + return(0); +} diff --git a/libmednahawk/src/pce/EVENT_SYSTEM_NOTES b/libmednahawk/src/pce/EVENT_SYSTEM_NOTES new file mode 100644 index 0000000000..702eb0895e --- /dev/null +++ b/libmednahawk/src/pce/EVENT_SYSTEM_NOTES @@ -0,0 +1,7 @@ +On virtual power/reset, don't reset event system(timestamps such as lastts and such; but recalculating events based on new emulated register settings caused by the + power/reset is good). + +All Reset()/Power() functions should be passed a timestamp(of the reset/power event). + +All users of the event system should initialize internal timestamp(lastts) to 0 on initialization, and only reset to 0 when its EndFrame() or ResetTS() or similar +function is called. diff --git a/libmednahawk/src/pce/Makefile.am b/libmednahawk/src/pce/Makefile.am new file mode 100644 index 0000000000..079945fe9a --- /dev/null +++ b/libmednahawk/src/pce/Makefile.am @@ -0,0 +1,12 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/src/hw_misc -I$(top_srcdir)/src/hw_sound -I$(top_srcdir)/src/hw_video + +noinst_LIBRARIES = libpce.a +mednafen_SOURCES = vce.cpp pce.cpp input.cpp huc.cpp hes.cpp tsushin.cpp subhw.cpp mcgenjin.cpp +mednafen_SOURCES += input/gamepad.cpp input/tsushinkb.cpp input/mouse.cpp +if WANT_DEBUGGER +mednafen_SOURCES += debug.cpp +endif + +libpce_a_SOURCES = $(mednafen_SOURCES) diff --git a/libmednahawk/src/pce/Makefile.in b/libmednahawk/src/pce/Makefile.in new file mode 100644 index 0000000000..086f4f3337 --- /dev/null +++ b/libmednahawk/src/pce/Makefile.in @@ -0,0 +1,638 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WANT_DEBUGGER_TRUE@am__append_1 = debug.cpp +subdir = src/pce +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libpce_a_AR = $(AR) $(ARFLAGS) +libpce_a_LIBADD = +am__libpce_a_SOURCES_DIST = vce.cpp pce.cpp input.cpp huc.cpp hes.cpp \ + tsushin.cpp subhw.cpp mcgenjin.cpp input/gamepad.cpp \ + input/tsushinkb.cpp input/mouse.cpp debug.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@WANT_DEBUGGER_TRUE@am__objects_1 = debug.$(OBJEXT) +am__objects_2 = vce.$(OBJEXT) pce.$(OBJEXT) input.$(OBJEXT) \ + huc.$(OBJEXT) hes.$(OBJEXT) tsushin.$(OBJEXT) subhw.$(OBJEXT) \ + mcgenjin.$(OBJEXT) input/gamepad.$(OBJEXT) \ + input/tsushinkb.$(OBJEXT) input/mouse.$(OBJEXT) \ + $(am__objects_1) +am_libpce_a_OBJECTS = $(am__objects_2) +libpce_a_OBJECTS = $(am_libpce_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libpce_a_SOURCES) +DIST_SOURCES = $(am__libpce_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/src/hw_misc -I$(top_srcdir)/src/hw_sound -I$(top_srcdir)/src/hw_video +noinst_LIBRARIES = libpce.a +mednafen_SOURCES = vce.cpp pce.cpp input.cpp huc.cpp hes.cpp \ + tsushin.cpp subhw.cpp mcgenjin.cpp input/gamepad.cpp \ + input/tsushinkb.cpp input/mouse.cpp $(am__append_1) +libpce_a_SOURCES = $(mednafen_SOURCES) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/pce/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/pce/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +input/$(am__dirstamp): + @$(MKDIR_P) input + @: > input/$(am__dirstamp) +input/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) input/$(DEPDIR) + @: > input/$(DEPDIR)/$(am__dirstamp) +input/gamepad.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/tsushinkb.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/mouse.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +libpce.a: $(libpce_a_OBJECTS) $(libpce_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpce.a + $(AM_V_AR)$(libpce_a_AR) libpce.a $(libpce_a_OBJECTS) $(libpce_a_LIBADD) + $(AM_V_at)$(RANLIB) libpce.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f input/gamepad.$(OBJEXT) + -rm -f input/mouse.$(OBJEXT) + -rm -f input/tsushinkb.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcgenjin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pce.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subhw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsushin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vce.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gamepad.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mouse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/tsushinkb.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f input/$(DEPDIR)/$(am__dirstamp) + -rm -f input/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) input/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) input/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/pce/SUBTITLE_FORMAT b/libmednahawk/src/pce/SUBTITLE_FORMAT new file mode 100644 index 0000000000..cb6232c2fd --- /dev/null +++ b/libmednahawk/src/pce/SUBTITLE_FORMAT @@ -0,0 +1,80 @@ +PRELIMINARY, hypothetical, do not use as-is! + +---- Subtitle text format ---- + +*** 0 + +> 0:13:13->0:13:19 +This is text. Blah Blah Blah blah blah. +BLAH BLAH BLAH BLAH BLAH BLAH BLAH. + +> 0:15:49->0:16:01 +This is more text lalalalalalalalalalaladelalala + +> 0:15:55->0:16:09 +This is temporal-overlapping text lalalalala. + + + +---- Subtitle binary format ---- + +*** NOTES *** + +Big-endian for multi-byte sequences + +Glyphs are rendered top-bottom, left-right. + +*** END NOTES *** + +Header: + +4 bytes - Magic ID: GN1S +4 bytes - Number of glyphs +4 bytes - Number of sequences +4 bytes - (PADDING) + +Palette data(256 * 2 bytes): + 2 bytes - 16-bit ARGB(4 bits for each component; A = 0 is fully transparent, A = 0xF is max opacity) + [...] + +Glyph table: + Entry: + 4 bytes - Offset(from start of file to glyph data) + 1 byte - Width + 1 byte - Height (all glyphs should typically have the same height, unless you're using separate fonts + or are including "graphics" data). + 2 bytes - (PADDING) + +Sequence table: + 4 bytes - Offset(from start of file to start of sequence) + +Glyph data: + (Width * Height + 7) & ~ 7 bytes - Pixel data, with padding of zeroes at the end of each glyph to 8 byte boundary. + Pixel data should be stored top-bottom, left right. + [...] + +Sequence data(actual subtitles): + + 0x00-0x1F - Control codes. + 0x0X - Add 4-bit signed X to draw x coordinate(-8 to 7), can be used for kerning. + 0x10 - RTS(or end sequence; doesn't affect video output) + 0x11 - NOP + 0x12 - Flip video buffer. + + 0x14 XX - Set draw X coordinate(0-255). + 0x15 YY - Set draw Y coordinate(0-255). + 0x16 XX - Add XX to X coordinate. + 0x17 YY - Add YY to Y coordinate. + + 0x18 TT TT - Wait for 16-bit time TTTT(relative to the last wait; or in other words, relative + to the current time in the case that script processing takes zero time) + + 0x1C NN NN NN NN - JSR to specified sequence. + + 0x1F OO CC [PP PP] [...] - Set palette data starting at offset OO, count CC, followed by 16-bit * CC palette + data. + + 0x20-0x7F - Glyphs 0x00 through 0x5F + 0x80-0xFF - Glyphs 0x60 through 0xFFFFFFFF + Load up lower 7 bits, shift left by 7, and read next byte. End after D7 of the byte read is cleared. + (Note: Last byte can be 0x00-0x1F, and should not be interpreted as a control code) diff --git a/libmednahawk/src/pce/SUBTITLE_NOTES b/libmednahawk/src/pce/SUBTITLE_NOTES new file mode 100644 index 0000000000..bc72a4a549 --- /dev/null +++ b/libmednahawk/src/pce/SUBTITLE_NOTES @@ -0,0 +1,70 @@ +68K at 10.74 MHz + +256x256 centered image(equivalent to 5.37 MHz VCE pixel clock) overlayed on PCE video output + +FB RAM should run at 10.74MHz. FB RAM back buffer is automatically cleared after page swap. FB RAM writes +in CPU address space are bytewise-conditional(each byte in the unit written is only written to the corresponding address +in FB RAM if the byte to be written is != 0). + +Palette: + 256x16 + + Format: + ORGB(4-bit opacity, 4-bit R, 4-bit G, 4-bit B). + + +68K Memory Map: + +0x000000-0x0FFFFF - (R/W) 1MiB RAM +0x100000-0x10FFFF - (W) Back framebuffer RAM +0x110000-0x11FFFF - (W) Back framebuffer RAM (A0-A7, A8-A15 swap) +0x200000-0x2001FF - (W) Palette RAM (16-bit access only) + +I/O(16-bit accesses only): +0x400000 - (R/W) Comm port 0 (dual-ported) +0x400002 - (R/W) Comm port 1 (dual-ported) +0x400004 - (R/W) Comm port 2 (dual-ported) +0x400006 - (R/W) Comm port 3 (dual-ported) +0x400100 - (R) Status + D15 - 1 = Pending framebuffer swap + D14 - 1 = Auto clear in progress(starts at vsync page swap; FB access prohibited) + D7-D0 - vsync counter(increments when vsync starts) + + (W) Control + D8 - Write with 1 set to acknowledge interrupt 1 + D1 - 0 = overlay disabled, 1 = overlay enabled (only controls visibility, hardware otherwise + runs as normal even when disabled) + D0 - When written with 1, set a pending flag, to swap display framebuffer at next vsync + start. + + ***PROCEDURE*** + Draw your screen to the (back) FB. Wait until program's vsync counter(derived from D7-D0) + >= frame event time - 1. Write 0x3 to Control. Wait until D15 and D14 + of status are both 0. REPEAT. + +0x800000-0xFFFFFF - (Mirrors of 1MiB RAM) + + +HuC6280 Memory map: + +Page 0xFE: - (R/W) 8KiB RAM(last ~1KiB is mirror of 0x1C00-0x1FEF) +Page 0xFF: + 0x1C00-0x1FEF - (R/W) Scratch & patch RAM. + 0x1FF0-0x1FF3 - (R/W) Comm port 0 through 3 (dual-ported) + 0x1FF4 - (W) 1MIB RAM write offset 4-11 + 0x1FF5 - (W) 1MiB RAM write offset 12-19 (and latch the 20-bit address(lower 4 bits are 0)). + 0x1FF6 - (W) 1MiB RAM write port. (address autoincrement) + 0x1FF7 - (W) Control (Initialized as if 0x03 were written, on reset). + D0 - Master the 1MiB RAM when 1, halting the 68K's execution. Access to the write port when this bit is + cleared will be ignored. Probably should do a few NOPs when going from 0->1 and writing to the + write port. + + D1 - When written with 1 in this bit, reset the 68K. + + D2 - When written with 1 in this bit, request 68K interrupt 1. + + D7 - 0 = overlay disabled, 1 = overlay enabled. (Same underlying bit as Control on 68K side) + + Write the byte sequence: + 0x47, 0x6E, 0x31, 0x14, 0xB3, 0xEB, 0xEC, 0x2B, to any address in 0x1C00-0x1FFF to enable subtitle + hardware functionality. diff --git a/libmednahawk/src/pce/debug.cpp b/libmednahawk/src/pce/debug.cpp new file mode 100644 index 0000000000..79c7dc796b --- /dev/null +++ b/libmednahawk/src/pce/debug.cpp @@ -0,0 +1,1184 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITPCES FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include +#include +#include + +#include "huc6280/huc6280.h" +#include "huc6280/dis6280.h" +#include "debug.h" +#include "vce.h" +#include "huc.h" +#include "huc6270/vdc.h" +#include "../cdrom/pcecd.h" +#include "pce_psg/pce_psg.h" +#include "../cdrom/scsicd.h" +#include "arcade_card/arcade_card.h" + +namespace MDFN_IEN_PCE +{ + +static HuC6280 *ShadowCPU = NULL; + + +extern VCE *vce; +extern ArcadeCard *arcade_card; + +static PCE_PSG *psg = NULL; + +static bool IsSGX; + +static int BTIndex = 0; + +#define NUMBT 64 //24 + +//static uint32 BTEntries[32]; + +struct BTEntry +{ + uint32 from; + uint32 to; + uint32 vector; + uint32 branch_count; +}; + +static BTEntry BTEntries[NUMBT]; + +typedef struct __PCE_BPOINT +{ + unsigned int A[2]; + int type; + bool logical; +} PCE_BPOINT; + +static std::vector BreakPointsRead, BreakPointsWrite, BreakPointsAux0Read, BreakPointsAux0Write; + +static uint8 BreakPointsPC[65536 / 8]; +static bool BreakPointsPCUsed; + +static uint8 BreakPointsOp[256]; +static bool BreakPointsOpUsed; + + +static bool NeedExecSimu; // Cache variable, recalculated in RedoDH(). + +static void (*CPUCB)(uint32 PC) = NULL; +static bool FoundBPoint = 0; +static void (*BPCallB)(uint32 PC) = NULL; +static void (*LogFunc)(const char *, const char *); +bool PCE_LoggingOn = FALSE; +static uint16 LastPC = 0xBEEF; + +static void AddBranchTrace(uint32 from, uint32 to, uint32 vector) +{ + BTEntry *prevbt = &BTEntries[(BTIndex + NUMBT - 1) % NUMBT]; + + from &= 0xFFFF; + to &= 0xFFFF; + + //if(BTEntries[(BTIndex - 1) & 0xF] == PC) return; + + if(prevbt->from == from && prevbt->to == to && prevbt->vector == vector && prevbt->branch_count < 0xFFFFFFFF) + prevbt->branch_count++; + else + { + BTEntries[BTIndex].from = from; + BTEntries[BTIndex].to = to; + BTEntries[BTIndex].vector = vector; + BTEntries[BTIndex].branch_count = 1; + + BTIndex = (BTIndex + 1) % NUMBT; + } +} + + +static std::vector GetBranchTrace(void) +{ + BranchTraceResult tmp; + std::vector ret; + + for(int x = 0; x < NUMBT; x++) + { + const BTEntry *bt = &BTEntries[(x + BTIndex) % NUMBT]; + + tmp.count = bt->branch_count; + trio_snprintf(tmp.from, sizeof(tmp.from), "%04X", bt->from); + trio_snprintf(tmp.to, sizeof(tmp.to), "%04X", bt->to); + + tmp.code[1] = 0; + switch(bt->vector) + { + default: tmp.code[0] = 0; + break; + + case 0xFFFE: + tmp.code[0] = 'R'; // RESET + break; + + case 0xFFFA: + tmp.code[0] = 'T'; // TIMER + break; + + case 0xFFF8: + tmp.code[0] = '1'; // IRQ1 + break; + + case 0xFFF6: + tmp.code[0] = '2'; // IRQ2 + break; + } + + ret.push_back(tmp); + } + return(ret); +} + +static INLINE bool TestOpBP(uint8 opcode) +{ + return(BreakPointsOp[opcode]); +} + +static INLINE bool TestPCBP(uint16 PC) +{ + return((BreakPointsPC[PC >> 3] >> (PC & 0x7)) & 1); +} + +void PCEDBG_CheckBP(int type, uint32 address, unsigned int len) +{ + std::vector::iterator bpit, bpit_end; + + if(type == BPOINT_READ) + { + bpit = BreakPointsRead.begin(); + bpit_end = BreakPointsRead.end(); + } + else if(type == BPOINT_WRITE) + { + bpit = BreakPointsWrite.begin(); + bpit_end = BreakPointsWrite.end(); + } + else if(type == BPOINT_AUX_READ) + { + bpit = BreakPointsAux0Read.begin(); + bpit_end = BreakPointsAux0Read.end(); + } + else if(type == BPOINT_AUX_WRITE) + { + bpit = BreakPointsAux0Write.begin(); + bpit_end = BreakPointsAux0Write.end(); + } + else + return; + + for(; bpit != bpit_end; bpit++) + { + uint32 tmp_address = address; + uint32 tmp_len = len; + + while(tmp_len--) + { + if(tmp_address >= bpit->A[0] && tmp_address <= bpit->A[1]) + { + FoundBPoint = TRUE; + break; + } + tmp_address++; + } + } +} + + +uint32 PCEDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical) +{ + uint32 ret = 0; + + PCE_InDebug++; + + for(unsigned int i = 0; i < bsize; i++) + { + if(logical) + { + A &= 0xFFFF; + + ret |= HuCPU->PeekLogical(A) << (i * 8); + } + else + { + A &= (1 << 21) - 1; + + ret |= HuCPU->PeekPhysical(A) << (i * 8); + } + + A++; + } + + PCE_InDebug--; + + return(ret); +} + +void PCEDBG_IRQ(int level) +{ + if(level == 0) // NMI + { + + } + else if(level == 1) + HuCPU->IRQBegin(HuC6280::IQIRQ1); + else if(level == 2) + HuCPU->IRQBegin(HuC6280::IQIRQ2); + else if(level == 3) + HuCPU->IRQBegin(HuC6280::IQTIMER); +} + +class DisPCE : public Dis6280 +{ + public: + DisPCE(void) + { + + } + + uint8 GetX(void) + { + return(HuCPU->GetRegister(HuC6280::GSREG_X)); + } + + uint8 GetY(void) + { + return(HuCPU->GetRegister(HuC6280::GSREG_Y)); + } + + uint8 Read(uint16 A) + { + uint8 ret; + + PCE_InDebug++; + + ret = HuCPU->PeekLogical(A); + + PCE_InDebug--; + + return(ret); + } +}; + +static DisPCE DisObj; + +void PCEDBG_Disassemble(uint32 &a, uint32 SpecialA, char *TextBuf) +{ + uint16 tmpa = a; + std::string ret; + + DisObj.Disassemble(tmpa, SpecialA, TextBuf); + + a = tmpa; +} + +static void TestRWBP(void) NO_INLINE; +static void TestRWBP(void) +{ + ShadowCPU->LoadShadow(*HuCPU); + + vce->ResetSimulateVDC(); + + ShadowCPU->Run(TRUE); + + //printf("%d, %02x\n",ShadowCPU->IRQlow); + //assert(!ShadowCPU->IRQlow); +} + +static void CPUHandler(uint32 PC) +{ + //PCECD_Run(HuCPU->Timestamp()); + + PCE_InDebug++; + + FoundBPoint = TestPCBP(PC) | TestOpBP(HuCPU->PeekLogical(PC)); + + if(NeedExecSimu) + TestRWBP(); + + if(FoundBPoint) + BPCallB(PC); + + if(CPUCB) + CPUCB(PC); + + if(PC == 0xe060 && PCE_LoggingOn && PCE_IsCD) + { + uint16 sjis_glyph; + + sjis_glyph = HuCPU->PeekLogical(0x20F8) | (HuCPU->PeekLogical(0x20F9) << 8); + PCEDBG_DoLog("BIOS", "Call EX_GETFNT from $%04X, ax=0x%04x = %s", LastPC, sjis_glyph, PCEDBG_ShiftJIS_to_UTF8(sjis_glyph)); + } + LastPC = PC; + PCE_InDebug--; + assert(!PCE_InDebug); +} + +static DECLFR(ReadHandler) +{ + std::vector::iterator bpit; + + if((A & 0x1FFFFF) >= (0xFF * 8192) && (A & 0x1FFFFF) <= (0xFF * 8192 + 0x3FF)) + { + VDC_SimulateResult result; + + int which_vdc = vce->SimulateReadVDC(A & 0x80000003, &result); + + if(result.ReadCount) + PCEDBG_CheckBP(BPOINT_AUX_READ, (which_vdc << 16) | result.ReadStart, result.ReadCount); + + if(result.WriteCount) + PCEDBG_CheckBP(BPOINT_AUX_WRITE, (which_vdc << 16) | result.WriteStart, result.WriteCount); + } + + for(bpit = BreakPointsRead.begin(); bpit != BreakPointsRead.end(); bpit++) + { + unsigned int testA = bpit->logical ? ShadowCPU->GetLastLogicalReadAddr() : A; + + if(testA >= bpit->A[0] && testA <= bpit->A[1]) + { + FoundBPoint = 1; + break; + } + } + + return(HuCPU->PeekPhysical(A)); +} + +static DECLFW(WriteHandler) +{ + std::vector::iterator bpit; + + if((A & 0x1FFFFF) >= (0xFF * 8192) && (A & 0x1FFFFF) <= (0xFF * 8192 + 0x3FF)) + { + VDC_SimulateResult result; + + int which_vdc = vce->SimulateWriteVDC(A & 0x80000003, V, &result); + + if(result.ReadCount) + PCEDBG_CheckBP(BPOINT_AUX_READ, (which_vdc << 16) | result.ReadStart, result.ReadCount); + + if(result.WriteCount) + PCEDBG_CheckBP(BPOINT_AUX_WRITE, (which_vdc << 16) | result.WriteStart, result.WriteCount); + } + + + for(bpit = BreakPointsWrite.begin(); bpit != BreakPointsWrite.end(); bpit++) + { + unsigned int testA; + + if(!bpit->logical) + testA = A; + else + { + if(A & 0x80000000) continue; // Ignore ST0/ST1/ST2 writes, which always use hardcoded physical addresses. + + testA = ShadowCPU->GetLastLogicalWriteAddr(); + } + + if(testA >= bpit->A[0] && testA <= bpit->A[1]) + { + FoundBPoint = 1; + break; + } + } +} + +static void RedoDH(void) +{ + bool BPointsUsed; + + NeedExecSimu = BreakPointsRead.size() || BreakPointsWrite.size() || BreakPointsAux0Read.size() || BreakPointsAux0Write.size(); + + BPointsUsed = BreakPointsPCUsed || BreakPointsOpUsed || BreakPointsRead.size() || BreakPointsWrite.size() || + BreakPointsAux0Read.size() || BreakPointsAux0Write.size(); + + if(BPointsUsed || CPUCB || PCE_LoggingOn) + HuCPU->SetCPUHook(CPUHandler, AddBranchTrace); + else + HuCPU->SetCPUHook(NULL, NULL); +} + +void PCEDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) +{ + PCE_BPOINT tmp; + + tmp.A[0] = A1; + tmp.A[1] = A2; + tmp.type =type; + tmp.logical = logical; + + if(type == BPOINT_READ) + BreakPointsRead.push_back(tmp); + else if(type == BPOINT_WRITE) + BreakPointsWrite.push_back(tmp); + else if(type == BPOINT_PC) + { + for(unsigned int i = A1; i <= A2; i++) + { + if((unsigned int)i < 65536) + { + BreakPointsPCUsed = true; + BreakPointsPC[i >> 3] |= 1 << (i & 0x7); + } + } + } + else if(type == BPOINT_AUX_READ) + BreakPointsAux0Read.push_back(tmp); + else if(type == BPOINT_AUX_WRITE) + BreakPointsAux0Write.push_back(tmp); + else if(type == BPOINT_OP) + { + for(unsigned int i = A1; i <= A2; i++) + { + if((unsigned int)i < 256) + { + BreakPointsOpUsed = true; + BreakPointsOp[i] = 1; + } + } + } + + RedoDH(); +} + +void PCEDBG_FlushBreakPoints(int type) +{ + std::vector::iterator bpit; + + if(type == BPOINT_READ) + BreakPointsRead.clear(); + else if(type == BPOINT_WRITE) + BreakPointsWrite.clear(); + else if(type == BPOINT_PC) + { + memset(BreakPointsPC, 0, sizeof(BreakPointsPC)); + BreakPointsPCUsed = false; + } + else if(type == BPOINT_AUX_READ) + BreakPointsAux0Read.clear(); + else if(type == BPOINT_AUX_WRITE) + BreakPointsAux0Write.clear(); + else if(type == BPOINT_OP) + { + memset(BreakPointsOp, 0, sizeof(BreakPointsOp)); + BreakPointsOpUsed = false; + } + + RedoDH(); +} + +void PCEDBG_SetCPUCallback(void (*callb)(uint32 PC)) +{ + CPUCB = callb; + RedoDH(); +} + +void PCEDBG_SetBPCallback(void (*callb)(uint32 PC)) +{ + BPCallB = callb; +} + +void PCEDBG_DoLog(const char *type, const char *format, ...) +{ + if(LogFunc) + { + char *temp; + + va_list ap; + va_start(ap, format); + + temp = trio_vaprintf(format, ap); + LogFunc(type, temp); + free(temp); + + va_end(ap); + } +} + +static iconv_t sjis_ict = (iconv_t)-1; + +void PCEDBG_SetLogFunc(void (*func)(const char *, const char *)) +{ + LogFunc = func; + + PCE_LoggingOn = func ? TRUE : FALSE; + SCSICD_SetLog(func ? PCEDBG_DoLog : NULL); + + if(PCE_LoggingOn) + { + if(sjis_ict == (iconv_t)-1) + sjis_ict = iconv_open("UTF-8", "shift_jis"); + } + else + { + if(sjis_ict != (iconv_t)-1) + { + iconv_close(sjis_ict); + sjis_ict = (iconv_t)-1; + } + } + RedoDH(); +} + +char *PCEDBG_ShiftJIS_to_UTF8(const uint16 sjc) +{ + static char ret[16]; + char inbuf[3]; + char *in_ptr, *out_ptr; + size_t ibl, obl; + + ret[0] = 0; + + if(sjc < 256) + { + inbuf[0] = sjc; + inbuf[1] = 0; + ibl = 1; + } + else + { + inbuf[0] = sjc >> 8; + inbuf[1] = sjc >> 0; + inbuf[2] = 0; + ibl = 2; + } + + in_ptr = inbuf; + out_ptr = ret; + obl = 16; + + iconv(sjis_ict, (ICONV_CONST char **)&in_ptr, &ibl, &out_ptr, &obl); + + return(ret); +} + +extern uint64 PCE_TimestampBase; +static uint32 GetRegister_HuC6280(const unsigned int id, char *special, const uint32 special_len) +{ + if(id == HuC6280::GSREG_STAMP) + { + return(PCE_TimestampBase + HuCPU->GetRegister(id, special, special_len)); + } + return(HuCPU->GetRegister(id, special, special_len)); +} + +static void SetRegister_HuC6280(const unsigned int id, uint32 value) +{ + HuCPU->SetRegister(id, value); +} + +static uint32 GetRegister_PSG(const unsigned int id, char *special, const uint32 special_len) +{ + return(psg->GetRegister(id, special, special_len)); +} + +static void SetRegister_PSG(const unsigned int id, uint32 value) +{ + psg->SetRegister(id, value); +} + +static uint32 GetRegister_VDC(const unsigned int id, char *special, const uint32 special_len) +{ + if(id & 0x8000) + return(vce->GetRegister(id &~ 0x8000, special, special_len)); + + return(vce->GetRegisterVDC(0, id, special, special_len)); +} + +static void SetRegister_VDC(const unsigned int id, uint32 value) +{ + if(id & 0x8000) + { + vce->SetRegister(id &~ 0x8000, value); + return; + } + + vce->SetRegisterVDC(0, id, value); +} + +static uint32 GetRegister_SGXVDC(const unsigned int id, char *special, const uint32 special_len) +{ + if(id & 0x8000) + return(vce->GetRegister(id &~ 0x8000, special, special_len)); + + return(vce->GetRegisterVDC(1, id, special, special_len)); +} + +static void SetRegister_SGXVDC(const unsigned int id, uint32 value) +{ + if(id & 0x8000) + { + vce->SetRegister(id &~ 0x8000, value); + return; + } + + vce->SetRegisterVDC(1, id, value); +} + +static uint32 GetRegister_CD(const unsigned int id, char *special, const uint32 special_len) +{ + return(PCECD_GetRegister(id, special, special_len)); +} + +static void SetRegister_CD(const unsigned int id, uint32 value) +{ + PCECD_SetRegister(id, value); +} + + +static RegType Regs_HuC6280[] = +{ + { HuC6280::GSREG_PC, "PC", "Program Counter", 2 }, + { HuC6280::GSREG_A, "A", "Accumulator", 1 }, + { HuC6280::GSREG_X, "X", "X Index Register", 1 }, + { HuC6280::GSREG_Y, "Y", "Y Index Register", 1 }, + { HuC6280::GSREG_SP, "SP", "Stack Pointer", 1 }, + { HuC6280::GSREG_P, "P", "Status", 1 }, + { HuC6280::GSREG_MPR0, "MPR0", "MPR0", 1}, + { HuC6280::GSREG_MPR1, "MPR1", "MPR1", 1}, + { HuC6280::GSREG_MPR2, "MPR2", "MPR2", 1}, + { HuC6280::GSREG_MPR3, "MPR3", "MPR3", 1}, + { HuC6280::GSREG_MPR4, "MPR4", "MPR4", 1}, + { HuC6280::GSREG_MPR5, "MPR5", "MPR5", 1}, + { HuC6280::GSREG_MPR6, "MPR6", "MPR6", 1}, + { HuC6280::GSREG_MPR7, "MPR7", "MPR7", 1}, + { HuC6280::GSREG_SPD, "SPD", "CPU Speed", 1 }, + { HuC6280::GSREG_IRQM, "IRQM", "IRQ Mask", 1}, + { HuC6280::GSREG_TIMS, "TIMS", "Timer Status", 1}, + { HuC6280::GSREG_TIMV, "TIMV", "Timer Value", 1}, + { HuC6280::GSREG_TIML, "TIML", "Timer Load", 1}, + { HuC6280::GSREG_TIMD, "TIMD", "Timer Div Counter", 2}, + { 0, "------", "", 0xFFFF }, \ + { HuC6280::GSREG_STAMP, "TS", "Timestamp", 4 }, + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_HuC6280 = +{ + "HuC6280", + Regs_HuC6280, + GetRegister_HuC6280, + SetRegister_HuC6280 +}; + + +#define CHPDMOO(n) \ + { 0, "------", "", 0xFFFF }, \ + { PSG_GSREG_CH0_FREQ | (n << 8), "CH"#n"Freq", "PSG Ch"#n" Frequency(Period)", 2 }, \ + { PSG_GSREG_CH0_CTRL | (n << 8), "CH"#n"Ctrl", "PSG Ch"#n" Control", 1 }, \ + { PSG_GSREG_CH0_BALANCE | (n << 8), "CH"#n"Balance", "PSG Ch"#n" Balance", 1 }, \ + { PSG_GSREG_CH0_WINDEX | (n << 8), "CH"#n"WIndex", "PSG Ch"#n" Waveform Index", 1}, \ + { PSG_GSREG_CH0_SCACHE | (n << 8), "CH"#n"SCache", "PSG Ch"#n" Sample Cache", 1 } + +static RegType Regs_PSG[] = +{ + { PSG_GSREG_SELECT, "Select", "PSG Channel Select", 1 }, + { PSG_GSREG_GBALANCE, "GBalance", "PSG Global Balance", 1 }, + { PSG_GSREG_LFOFREQ, "LFOFreq", "PSG LFO Freq", 1 }, + { PSG_GSREG_LFOCTRL, "LFOCtrl", "PSG LFO Control", 1 }, + + CHPDMOO(0), + CHPDMOO(1), + CHPDMOO(2), + CHPDMOO(3), + CHPDMOO(4), + { PSG_GSREG_CH4_NCTRL, "CH4NCtrl", "PSG Ch4 Noise Control", 1 }, + { PSG_GSREG_CH4_LFSR, "CH4LFSR", "PSG Ch4 Noise LFSR", 2 }, + CHPDMOO(5), + { PSG_GSREG_CH5_NCTRL, "CH5NCtrl", "PSG Ch5 Noise Control", 1 }, + { PSG_GSREG_CH5_LFSR, "CH5LFSR", "PSG Ch5 Noise LFSR", 2 }, + + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_PSG = +{ + "PSG", + Regs_PSG, + GetRegister_PSG, + SetRegister_PSG +}; + +static RegType Regs_VDC[] = +{ + { VDC::GSREG_SELECT, "Select", "Register Select", 1 }, + { VDC::GSREG_STATUS, "Status", "Status", 1 }, + + { VDC::GSREG_MAWR, "MAWR", "Memory Write Address", 2 }, + { VDC::GSREG_MARR, "MARR", "Memory Read Address", 2 }, + { VDC::GSREG_CR, "CR", "Control", 2 }, + { VDC::GSREG_RCR, "RCR", "Raster Counter", 2 }, + { VDC::GSREG_BXR, "BXR", "X Scroll", 2 }, + { VDC::GSREG_BYR, "BYR", "Y Scroll", 2 }, + { VDC::GSREG_MWR, "MWR", "Memory Width", 2 }, + + { VDC::GSREG_HSR, "HSR", "HSR", 2 }, + { VDC::GSREG_HDR, "HDR", "HDR", 2 }, + { VDC::GSREG_VSR, "VSR", "VSR", 2 }, + { VDC::GSREG_VDR, "VDR", "VDR", 2 }, + + { VDC::GSREG_VCR, "VCR", "VCR", 2 }, + { VDC::GSREG_DCR, "DCR", "DMA Control", 2 }, + { VDC::GSREG_SOUR, "SOUR", "VRAM DMA Source Address", 2 }, + { VDC::GSREG_DESR, "DESR", "VRAM DMA Dest Address", 2 }, + { VDC::GSREG_LENR, "LENR", "VRAM DMA Length", 2 }, + { VDC::GSREG_DVSSR, "DVSSR", "DVSSR Update Address", 2 }, + { 0, "------", "", 0xFFFF }, + + { 0x8000 | VCE::GSREG_CR, "VCECR", "VCE Control Register", 1 }, + { 0x8000 | VCE::GSREG_CTA, "VCECTA", "VCE Color/Palette Table Address", 2 }, + { 0x8000 | VCE::GSREG_SCANLINE, "Line", "Current Scanline", 2 }, + + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_VDC = +{ + "VDC", + Regs_VDC, + GetRegister_VDC, + SetRegister_VDC +}; + + +static RegType Regs_SGXVDC[] = +{ + { VDC::GSREG_SELECT, "Select", "Register Select, VDC-B", 1 }, + { VDC::GSREG_STATUS, "Status", "Status, VDC-B", 1 }, + + { VDC::GSREG_MAWR, "MAWR-B", "Memory Write Address, VDC-B", 2 }, + { VDC::GSREG_MARR, "MARR-B", "Memory Read Address, VDC-B", 2 }, + { VDC::GSREG_CR, "CR-B", "Control, VDC-B", 2 }, + { VDC::GSREG_RCR, "RCR-B", "Raster Counter, VDC-B", 2 }, + { VDC::GSREG_BXR, "BXR-B", "X Scroll, VDC-B", 2 }, + { VDC::GSREG_BYR, "BYR-B", "Y Scroll, VDC-B", 2 }, + { VDC::GSREG_MWR, "MWR-B", "Memory Width, VDC-B", 2 }, + + { VDC::GSREG_HSR, "HSR-B", "HSR, VDC-B", 2 }, + { VDC::GSREG_HDR, "HDR-B", "HDR, VDC-B", 2 }, + { VDC::GSREG_VSR, "VSR-B", "VSR, VDC-B", 2 }, + { VDC::GSREG_VDR, "VDR-B", "VDR, VDC-B", 2 }, + + { VDC::GSREG_VCR, "VCR-B", "VCR, VDC-B", 2 }, + { VDC::GSREG_DCR, "DCR-B", "DMA Control, VDC-B", 2 }, + { VDC::GSREG_SOUR, "SOUR-B", "VRAM DMA Source Address, VDC-B", 2 }, + { VDC::GSREG_DESR, "DESR-B", "VRAM DMA Dest Address, VDC-B", 2 }, + { VDC::GSREG_LENR, "LENR-B", "VRAM DMA Length, VDC-B", 2 }, + { VDC::GSREG_DVSSR, "DVSSR-B", "DVSSR Update Address, VDC-B", 2 }, + { 0, "------", "", 0xFFFF }, + + { 0x8000 | VCE::GSREG_ST_MODE, "STMode", "ST(ST0/ST1/ST2) Mode/Target", 1 }, + { 0x8000 | VCE::GSREG_PRIORITY_0, "PRIO0", "VPC Priority Register 0", 1 }, + { 0x8000 | VCE::GSREG_PRIORITY_1, "PRIO1", "VPC Priority Register 1", 1 }, + { 0x8000 | VCE::GSREG_WINDOW_WIDTH_0, "WIND0", "VPC Window Width Register 0", 2 }, + { 0x8000 | VCE::GSREG_WINDOW_WIDTH_1, "WIND1", "VPC Window Width Register 1", 2 }, + + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_SGXVDC = +{ + "VDC-B", + Regs_SGXVDC, + GetRegister_SGXVDC, + SetRegister_SGXVDC +}; + +static RegType Regs_CD[] = +{ + { CD_GSREG_BSY, "BSY", "SCSI BSY", 1 }, + { CD_GSREG_REQ, "REQ", "SCSI REQ", 1 }, + { CD_GSREG_MSG, "MSG", "SCSI MSG", 1 }, + { CD_GSREG_IO, "IO", "SCSI IO", 1 }, + { CD_GSREG_CD, "CD", "SCSI CD", 1 }, + { CD_GSREG_SEL, "SEL", "SCSI SEL", 1 }, + + { 0, "---ADPCM:---", "", 0xFFFF }, + { CD_GSREG_ADPCM_CONTROL, "Control", "ADPCM Control", 1 }, + { CD_GSREG_ADPCM_FREQ, "Freq", "ADPCM Frequency", 1 }, + { CD_GSREG_ADPCM_CUR, "CUR", "ADPCM Current 12-bit Value", 2 }, + { CD_GSREG_ADPCM_WRADDR, "WrAddr", "ADPCM Write Address", 2 }, + { CD_GSREG_ADPCM_RDADDR, "RdAddr", "ADPCM Read Address", 2 }, + { CD_GSREG_ADPCM_LENGTH, "Length", "ADPCM Length", 2 }, + { CD_GSREG_ADPCM_PLAYNIBBLE, "PlNibble", "ADPCM Play Nibble Select", 1 }, + + { CD_GSREG_ADPCM_PLAYING, "Playing", "ADPCM Playing Flag", 1 }, + { CD_GSREG_ADPCM_HALFREACHED, "Half", "ADPCM Half-point Reached Flag", 1 }, + { CD_GSREG_ADPCM_ENDREACHED, "End", "ADPCM End Reached Flag", 1 } , + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_CD = +{ + "CD", + Regs_CD, + GetRegister_CD, + SetRegister_CD +}; + +static void Do16BitGet(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + int wc = 0; + + if(!strcmp(name, "vram0")) + wc = 0; + else if(!strcmp(name, "vram1")) + wc = 1; + else if(!strcmp(name, "sat0")) + wc = 2; + else if(!strcmp(name, "sat1")) + wc = 3; + else if(!strcmp(name, "pram")) + wc = 4; + + while(Length) + { + uint16 data; + + if(wc == 4) + data = vce->PeekPRAM((Address >> 1) & 0x1FF); + else if(wc & 2) + data = vce->PeekVDCSAT(wc & 1, (Address >> 1) & 0xFF); + else + data = vce->PeekVDCVRAM(wc & 1, (Address >> 1) & 0x7FFF); + + if((Address & 1) || Length == 1) + { + *Buffer = data >> ((Address & 1) << 3); + Buffer++; + Address++; + Length--; + } + else + { + Buffer[0] = data & 0xFF; + Buffer[1] = data >> 8; + + Buffer += 2; + Address += 2; + Length -= 2; + } + } +} + +static void Do16BitPut(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + int wc = 0; + + if(!strcmp(name, "vram0")) + wc = 0; + else if(!strcmp(name, "vram1")) + wc = 1; + else if(!strcmp(name, "sat0")) + wc = 2; + else if(!strcmp(name, "sat1")) + wc = 3; + else if(!strcmp(name, "pram")) + wc = 4; + + while(Length) + { + uint16 data; + int inc_amount; + + if((Address & 1) || Length == 1) + { + if(wc == 4) + data = vce->PeekPRAM((Address >> 1) & 0x1FF); + else if(wc & 2) + data = vce->PeekVDCSAT(wc & 1, (Address >> 1) & 0xFF); + else + data = vce->PeekVDCVRAM(wc & 1, (Address >> 1) & 0x7FFF); + + data &= ~(0xFF << ((Address & 1) << 3)); + data |= *Buffer << ((Address & 1) << 3); + + inc_amount = 1; + } + else + { + data = Buffer[0] | (Buffer[1] << 8); + inc_amount = 2; + } + + if(wc == 4) + vce->PokePRAM((Address >> 1) & 0x1FF, data); + else if(wc & 2) + vce->PokeVDCSAT(wc & 1, (Address >> 1) & 0xFF, data); + else + vce->PokeVDCVRAM(wc & 1, (Address >> 1) & 0x7FFF, data); + + Buffer += inc_amount; + Address += inc_amount; + Length -= inc_amount; + } +} + + +static void GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + PCE_InDebug++; + + if(!strcmp(name, "cpu")) + { + while(Length--) + { + Address &= 0xFFFF; + + *Buffer = HuCPU->PeekLogical(Address); + + Address++; + Buffer++; + } + } + else if(!strcmp(name, "physical")) + { + while(Length--) + { + Address &= 0x1FFFFF; + + *Buffer = HuCPU->PeekPhysical(Address); + + Address++; + Buffer++; + } + + } + else if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= (IsSGX ? 32768 : 8192) - 1; + *Buffer = PCE_PeekMainRAM(Address); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "adpcm")) + ADPCM_PeekRAM(Address, Length, Buffer); + else if(!strcmp(name, "acram")) + arcade_card->PeekRAM(Address, Length, Buffer); + else if(!strcmp(name, "bram")) + { + while(Length--) + { + Address &= 0x7FF; + *Buffer = HuC_PeekBRAM(Address); + Address++; + Buffer++; + } + } + else if(!strncmp(name, "psgram", 6)) + psg->PeekWave(name[6] - '0', Address, Length, Buffer); + + PCE_InDebug--; +} + +static void PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + PCE_InDebug++; + + if(!strcmp(name, "cpu")) + { + while(Length--) + { + Address &= 0xFFFF; + + HuCPU->PokeLogical(Address, *Buffer, hl); + + Address++; + Buffer++; + } + } + else if(!strcmp(name, "physical")) + { + while(Length--) + { + Address &= 0x1FFFFF; + + HuCPU->PokePhysical(Address, *Buffer, hl); + + Address++; + Buffer++; + } + + } + else if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= (IsSGX ? 32768 : 8192) - 1; + PCE_PokeMainRAM(Address, *Buffer); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "adpcm")) + ADPCM_PokeRAM(Address, Length, Buffer); + else if(!strcmp(name, "acram")) + arcade_card->PokeRAM(Address, Length, Buffer); + else if(!strcmp(name, "bram")) + { + while(Length--) + { + Address &= 0x7FF; + HuC_PokeBRAM(Address, *Buffer); + Address++; + Buffer++; + } + } + else if(!strncmp(name, "psgram", 6)) + psg->PokeWave(name[6] - '0', Address, Length, Buffer); + + PCE_InDebug--; +} + + +static void SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn) +{ + vce->SetGraphicsDecode(surface, line, which, xscroll, yscroll, pbn); +} + +DebuggerInfoStruct PCEDBGInfo = +{ + "shift_jis", + 7, + 1, // Instruction alignment(bytes) + 16, + 21, + 0x2000, + 0x2000, // ZP + + PCEDBG_MemPeek, + PCEDBG_Disassemble, + NULL, + PCEDBG_IRQ, + NULL, //NESDBG_GetVector, + PCEDBG_FlushBreakPoints, + PCEDBG_AddBreakPoint, + PCEDBG_SetCPUCallback, + PCEDBG_SetBPCallback, + GetBranchTrace, + SetGraphicsDecode, + PCEDBG_SetLogFunc, +}; + +bool PCEDBG_Init(bool sgx, PCE_PSG *new_psg) +{ + BreakPointsPCUsed = false; + BreakPointsOpUsed = false; + + memset(BreakPointsOp, 0, sizeof(BreakPointsOp)); + memset(BreakPointsPC, 0, sizeof(BreakPointsPC)); + + ShadowCPU = new HuC6280(); + + for(int x = 0; x < 0x100; x++) + { + ShadowCPU->SetFastRead(x, NULL); + + ShadowCPU->SetReadHandler(x, ReadHandler); + ShadowCPU->SetWriteHandler(x, WriteHandler); + } + + ShadowCPU->Power(); + + psg = new_psg; + + IsSGX = sgx; + + MDFNDBG_AddRegGroup(&RegsGroup_HuC6280); + MDFNDBG_AddRegGroup(&RegsGroup_VDC); + + if(IsSGX) + MDFNDBG_AddRegGroup(&RegsGroup_SGXVDC); + + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "cpu", "CPU Logical", 16); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "physical", "CPU Physical", 21); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "ram", "RAM", IsSGX ? 15 : 13); + + ASpace_Add(Do16BitGet, Do16BitPut, "pram", "VCE Palette RAM", 10); + + if(IsSGX) + { + ASpace_Add(Do16BitGet, Do16BitPut, "vram0", "VDC-A VRAM", 15 + 1); + ASpace_Add(Do16BitGet, Do16BitPut, "sat0", "VDC-A SAT", 8 + 1); + ASpace_Add(Do16BitGet, Do16BitPut, "vram1", "VDC-B VRAM", 15 + 1); + ASpace_Add(Do16BitGet, Do16BitPut, "sat1", "VDC-B SAT", 8 + 1); + } + else + { + ASpace_Add(Do16BitGet, Do16BitPut, "vram0", "VDC VRAM", 15 + 1); + ASpace_Add(Do16BitGet, Do16BitPut, "sat0", "VDC SAT", 8 + 1); + } + + if(PCE_IsCD) + { + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "adpcm", "ADPCM RAM", 16); + MDFNDBG_AddRegGroup(&RegsGroup_CD); + } + + if(arcade_card) + { + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "acram", "Arcade Card RAM", 21); + } + + if(HuC_IsBRAMAvailable()) + { + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "bram", "BRAM", 11); + } + + for(int x = 0; x < 6; x++) + { + AddressSpaceType newt; + char tmpname[128], tmpinfo[128]; + + trio_snprintf(tmpname, 128, "psgram%d", x); + trio_snprintf(tmpinfo, 128, "PSG Ch %d RAM", x); + + memset(&newt, 0, sizeof(AddressSpaceType)); + + newt.GetAddressSpaceBytes = GetAddressSpaceBytes; + newt.PutAddressSpaceBytes = PutAddressSpaceBytes; + + newt.name = strdup(tmpname); + newt.long_name = strdup(tmpinfo); + newt.TotalBits = 5; + newt.NP2Size = 0; + newt.IsSegmented = FALSE; + newt.SegmentBits = 0; + newt.OffsetBits = 0; + newt.BitsOverlapped = 0; + + newt.IsWave = TRUE; + newt.WaveFormat = ASPACE_WFMT_UNSIGNED; + newt.WaveBits = 5; + ASpace_Add(newt); //PSG_GetAddressSpaceBytes, PSG_PutAddressSpaceBytes, tmpname, tmpinfo, 5); + } + MDFNDBG_AddRegGroup(&RegsGroup_PSG); + + return(TRUE); +} + + +}; diff --git a/libmednahawk/src/pce/debug.h b/libmednahawk/src/pce/debug.h new file mode 100644 index 0000000000..f1e0c32c09 --- /dev/null +++ b/libmednahawk/src/pce/debug.h @@ -0,0 +1,48 @@ +#ifndef _PCE_DEBUG_H +#define _PCE_DEBUG_H + +#ifdef WANT_DEBUGGER + +#include "pce_psg/pce_psg.h" + +namespace MDFN_IEN_PCE +{ + +void PCEDBG_SetCPUCallback(void (*callb)(uint32 PC)); +void PCEDBG_SetBPCallback(void (*callb)(uint32 PC)); + +void PCEDBG_FlushBreakPoints(int type); +void PCEDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical); + +uint32 PCEDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical); +void PCEDBG_IRQ(int level); +uint32 PCEDBG_GetVector(int level); +void PCEDBG_Disassemble(uint32 &a, uint32 SpecialA, char *); +uint32 PCEDBG_GetRegister(const std::string &name, std::string *special); +void PCEDBG_SetRegister(const std::string &name, uint32 value); + +void PCEDBG_CheckBP(int type, uint32 address, unsigned int len); + +void PCEDBG_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer); +void PCEDBG_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer); + + +void PCEDBG_SetLogFunc(void (*func)(const char *, const char *)); + +void PCEDBG_DoLog(const char *type, const char *format, ...); +char *PCEDBG_ShiftJIS_to_UTF8(const uint16 sjc); + +void PCEDBG_EnableUsageMap(bool); + +extern bool PCE_LoggingOn; +extern bool PCE_UsageMapOn; + +extern DebuggerInfoStruct PCEDBGInfo; + +bool PCEDBG_Init(bool sgx, PCE_PSG *psg); + +}; + +#endif + +#endif diff --git a/libmednahawk/src/pce/hes.cpp b/libmednahawk/src/pce/hes.cpp new file mode 100644 index 0000000000..17f305e508 --- /dev/null +++ b/libmednahawk/src/pce/hes.cpp @@ -0,0 +1,297 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "hes.h" +#include "huc.h" +#include "../cdrom/pcecd.h" +#include "../player.h" + +namespace MDFN_IEN_PCE +{ + +static uint8 mpr_start[8]; +static uint8 IBP[0x100]; +static uint8 *rom = NULL, *rom_backup = NULL; + +static uint8 CurrentSong; +static bool bootstrap; +static bool ROMWriteWarningGiven; + +uint8 ReadIBP(unsigned int A) +{ + if(!(A & 0x100)) + return(IBP[A & 0xFF]); + + if(bootstrap && !PCE_InDebug) + { + memcpy(rom + 0x1FF0, rom_backup + 0x1FF0, 16); + bootstrap = false; + return(CurrentSong); + } + + return(0xFF); +} + +static DECLFW(HESROMWrite) +{ + if(bootstrap) + { + puts("Write during bootstrap?"); + return; + } + + rom[A] = V; + //printf("%08x: %02x\n", A, V); + if(!ROMWriteWarningGiven) + { + MDFN_printf(_("Warning: HES is writing to physical address %08x. Future warnings of this nature are temporarily disabled for this HES file.\n"), A); + ROMWriteWarningGiven = TRUE; + } +} + +static const uint8 BootROM[16] = { 0xA9, 0xFF, 0x53, 0x01, 0xEA, 0xEA, 0xEA, 0xEA, + 0xEA, 0xEA, 0xEA, 0x4C, 0x00, 0x1C, 0xF0, 0xFF }; + +static DECLFR(HESROMRead) +{ + return(rom[A]); +} + +int PCE_HESLoad(const uint8 *buf, uint32 size) +{ + uint32 LoadAddr, LoadSize; + uint32 CurPos; + uint16 InitAddr; + uint8 StartingSong; + int TotalSongs; + + if(size < 0x10) + { + MDFN_PrintError(_("HES header is too small.")); + return(0); + } + + if(memcmp(buf, "HESM", 4)) + { + MDFN_PrintError(_("HES header magic is invalid.")); + return(0); + } + + InitAddr = MDFN_de16lsb(&buf[0x6]); + + CurPos = 0x10; + + if(!(rom = (uint8 *)MDFN_malloc(0x88 * 8192, _("HES ROM")))) + { + return(0); + } + + if(!(rom_backup = (uint8 *)MDFN_malloc(0x88 * 8192, _("HES ROM")))) + { + return(0); + } + + MDFN_printf(_("HES Information:\n")); + MDFN_indent(1); + + StartingSong = buf[5]; + + MDFN_printf(_("Init address: 0x%04x\n"), InitAddr); + MDFN_printf(_("Starting song: %d\n"), StartingSong + 1); + + for(int x = 0; x < 8; x++) + { + mpr_start[x] = buf[0x8 + x]; + MDFN_printf("MPR%d: %02x\n", x, mpr_start[x]); + } + + memset(rom, 0, 0x88 * 8192); + memset(rom_backup, 0, 0x88 * 8192); + + while(CurPos < (size - 0x10)) + { + LoadSize = MDFN_de32lsb(&buf[CurPos + 0x4]); + LoadAddr = MDFN_de32lsb(&buf[CurPos + 0x8]); + + //printf("Size: %08x(%d), Addr: %08x, La: %02x\n", LoadSize, LoadSize, LoadAddr, LoadAddr / 8192); + MDFN_printf(_("Chunk load:\n")); + MDFN_indent(1); + MDFN_printf(_("File offset: 0x%08x\n"), CurPos); + MDFN_printf(_("Load size: 0x%08x\n"), LoadSize); + MDFN_printf(_("Load target address: 0x%08x\n"), LoadAddr); + + CurPos += 0x10; + + if(((uint64)LoadSize + CurPos) > size) + { + uint32 NewLoadSize = size - CurPos; + + MDFN_printf(_("Warning: HES is trying to load more data than is present in the file(%u attempted, %u left)!\n"), LoadSize, NewLoadSize); + + LoadSize = NewLoadSize; + } + + // 0x88 * 8192 = 0x110000 + if(((uint64)LoadAddr + LoadSize) > 0x110000) + { + MDFN_printf(_("Warning: HES is trying to load data past boundary.\n")); + + if(LoadAddr >= 0x110000) + break; + + LoadSize = 0x110000 - LoadAddr; + } + MDFN_indent(-1); + memcpy(rom + LoadAddr, &buf[CurPos], LoadSize); + CurPos += LoadSize; + } + + memcpy(rom_backup, rom, 0x88 * 8192); + + CurrentSong = StartingSong; + TotalSongs = 256; + uint8 *IBP_WR = IBP; + + for(int i = 0; i < 8; i++) + { + *IBP_WR++ = 0xA9; // LDA (immediate) + *IBP_WR++ = mpr_start[i]; + *IBP_WR++ = 0x53; // TAM + *IBP_WR++ = 1 << i; + } + + // Initialize VDC registers. + { + // uint8 vdc_init_rom[] = { 0xA2, 0x0A, 0xA9, 0xFF, 0x8E, 0x00, 0x00, 0x8D, 0x02, 0x00, 0x8D, 0x03, 0x00, 0xE8, 0xE0, 0x0F, 0xD0, 0xF2 }; + // uint8 vdc_init_rom[] = { 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEa, 0xEA }; + + static const uint8 vdc_init_rom[] = { + 0xA2, 0x1F, 0x8E, 0x00, + 0x00, 0x9C, 0x02, 0x00, + 0x9C, 0x03, 0x00, 0xCA, + 0x10, 0xF4, 0x03, 0x0A, + 0x13, 0x02, 0x23, 0x02, + 0x03, 0x0B, 0x13, 0x1F, + 0x23, 0x04, 0x03, 0x0C, + 0x13, 0x02, 0x23, 0x0D, + 0x03, 0x0D, 0x13, 0xEF, + 0x23, 0x00, 0x03, 0x0E, + 0x13, 0x04, 0xA9, 0x04, + 0x8D, 0x00, 0x04 + }; + + memcpy(IBP_WR, vdc_init_rom, sizeof(vdc_init_rom)); + IBP_WR += sizeof(vdc_init_rom); + } + + + *IBP_WR++ = 0xAD; // LDA(absolute) + *IBP_WR++ = 0x00; // + *IBP_WR++ = 0x1D; // + *IBP_WR++ = 0x20; // JSR + *IBP_WR++ = InitAddr; // JSR target LSB + *IBP_WR++ = InitAddr >> 8; // JSR target MSB + *IBP_WR++ = 0x58; // CLI + *IBP_WR++ = 0xCB; // (Mednafen Special) + *IBP_WR++ = 0x80; // BRA + *IBP_WR++ = 0xFD; // -3 + + assert((unsigned int)(IBP_WR - IBP) <= sizeof(IBP)); + + Player_Init(TotalSongs, "", "", ""); //NULL, NULL, NULL, NULL); //UTF8 **snames); + + for(int x = 0; x < 0x88; x++) + { + if(x) + HuCPU->SetFastRead(x, rom + x * 8192); + HuCPU->SetReadHandler(x, HESROMRead); + HuCPU->SetWriteHandler(x, HESROMWrite); + } + + ROMWriteWarningGiven = FALSE; + + MDFN_indent(-1); + + return(1); +} + +void HES_Reset(void) +{ + memcpy(rom, rom_backup, 0x88 * 8192); + memcpy(rom + 0x1FF0, BootROM, 16); + bootstrap = true; +} + +void HES_Update(EmulateSpecStruct *espec, uint16 jp_data) +{ + static uint8 last = 0; + bool needreload = 0; + + if((jp_data & 0x20) && !(last & 0x20)) + { + CurrentSong++; + needreload = 1; + } + + if((jp_data & 0x80) && !(last & 0x80)) + { + CurrentSong--; + needreload = 1; + } + + if((jp_data & 0x8) && !(last & 0x8)) + needreload = 1; + + if((jp_data & 0x10) && !(last & 0x10)) + { + CurrentSong += 10; + needreload = 1; + } + + if((jp_data & 0x40) && !(last & 0x40)) + { + CurrentSong -= 10; + needreload = 1; + } + + last = jp_data; + + if(needreload) + PCE_Power(); + + if(!espec->skip) + Player_Draw(espec->surface, &espec->DisplayRect, CurrentSong, espec->SoundBuf, espec->SoundBufSize); +} + +void HES_Close(void) +{ + if(rom) + { + MDFN_free(rom); + rom = NULL; + } + + if(rom_backup) + { + MDFN_free(rom_backup); + rom_backup = NULL; + } +} + + +}; diff --git a/libmednahawk/src/pce/hes.h b/libmednahawk/src/pce/hes.h new file mode 100644 index 0000000000..f1f22ae0fe --- /dev/null +++ b/libmednahawk/src/pce/hes.h @@ -0,0 +1,15 @@ +#ifndef __MDFN_PCE_HES_H +#define __MDFN_PCE_HES_H + +namespace MDFN_IEN_PCE +{ + +uint8 ReadIBP(unsigned int A); +int PCE_HESLoad(const uint8 *buf, uint32 size); +void HES_Reset(void); +void HES_Update(EmulateSpecStruct *espec, uint16 jp_data); +void HES_Close(void); + +}; + +#endif diff --git a/libmednahawk/src/pce/huc.cpp b/libmednahawk/src/pce/huc.cpp new file mode 100644 index 0000000000..b3b9109f41 --- /dev/null +++ b/libmednahawk/src/pce/huc.cpp @@ -0,0 +1,620 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "huc.h" +#include "../cdrom/pcecd.h" +#include "arcade_card/arcade_card.h" +#include "../md5.h" +#include "../file.h" +#include "../cdrom/cdromif.h" +#include "../mempatcher.h" + +#include +#include +#include "mcgenjin.h" + +namespace MDFN_IEN_PCE +{ + +static const uint8 BRAM_Init_String[8] = { 'H', 'U', 'B', 'M', 0x00, 0x88, 0x10, 0x80 }; //"HUBM\x00\x88\x10\x80"; +static bool BRAM_Disabled; // Cached at game load, don't remove this caching behavior or save game loss may result(if we ever get a GUI). + +ArcadeCard *arcade_card = NULL; + +extern Blip_Buffer huc_sbuf; +static MCGenjin *mcg = NULL; +static uint8 *HuCROM = NULL; +static uint8 *ROMMap[0x100] = { NULL }; + +static bool IsPopulous; +bool IsTsushin; +bool PCE_IsCD; + +static uint8 *TsushinRAM = NULL; // 0x8000 +static uint8 *PopRAM = NULL; // 0x8000 +static uint8 SaveRAM[2048]; +static uint8 *CDRAM = NULL; //262144; + +static uint8 *SysCardRAM = NULL; + +static void Cleanup(void) +{ + if(HuCROM) + { + MDFN_free(HuCROM); + HuCROM = NULL; + } + + if(PopRAM) + { + MDFN_free(PopRAM); + PopRAM = NULL; + } + + if(TsushinRAM) + { + MDFN_free(TsushinRAM); + TsushinRAM = NULL; + } + + if(CDRAM) + { + MDFN_free(CDRAM); + CDRAM = NULL; + } + + if(SysCardRAM) + { + MDFN_free(SysCardRAM); + SysCardRAM = NULL; + } + + if(arcade_card) + { + delete arcade_card; + arcade_card = NULL; + } +} + + +static DECLFR(AC_PhysRead) +{ + return(arcade_card->PhysRead(A, PCE_InDebug)); +} + +static DECLFW(AC_PhysWrite) +{ + return(arcade_card->PhysWrite(A, V)); +} + +static DECLFW(SysCardRAMWrite) +{ + SysCardRAM[A - 0x68 * 8192] = V; +} + +static DECLFR(SysCardRAMRead) +{ + return(SysCardRAM[A - 0x68 * 8192]); +} + +static DECLFW(CDRAMWrite) +{ + CDRAM[A - 0x80 * 8192] = V; +} + +static DECLFR(CDRAMRead) +{ + return(CDRAM[A - 0x80 * 8192]); +} + +static DECLFR(SaveRAMRead) +{ + if(BRAM_Disabled) + return(0xFF); + + if((!PCE_IsCD || PCECD_IsBRAMEnabled()) && (A & 8191) < 2048) + return(SaveRAM[A & 2047]); + else + return(0xFF); +} + +static DECLFW(SaveRAMWrite) +{ + if(BRAM_Disabled) + return; + + if((!PCE_IsCD || PCECD_IsBRAMEnabled()) && (A & 8191) < 2048) + SaveRAM[A & 2047] = V; +} + +static DECLFR(HuCRead) +{ + return(ROMMap[A >> 13][A]); +} + +static DECLFW(HuCRAMWrite) +{ + ROMMap[A >> 13][A] = V; +} + +static uint8 HuCSF2Latch; +static uint8 HuCSF2BankMask; + +static DECLFR(HuCSF2ReadLow) +{ + return(HuCROM[A]); +} + +static DECLFR(HuCSF2Read) +{ + return(HuCROM[(A & 0x7FFFF) + 0x80000 + (HuCSF2Latch & HuCSF2BankMask) * 0x80000 ]); +} + +static DECLFW(HuCSF2Write) +{ + if((A & 0x1FF0) == 0x1FF0) + HuCSF2Latch = A & 0xF; +} + +static DECLFR(MCG_ReadHandler) +{ + return mcg->Read(HuCPU->Timestamp(), A); +} + +static DECLFW(MCG_WriteHandler) +{ + mcg->Write(HuCPU->Timestamp(), A, V); +} + +int HuCLoad(const uint8 *data, uint32 len, uint32 crc32, bool DisableBRAM, SysCardType syscard) +{ + const uint32 sf2_threshold = 2048 * 1024; + uint32 m_len = (len + 8191) &~ 8191; + bool sf2_mapper = FALSE; + bool mcg_mapper = FALSE; + bool UseBRAM = FALSE; + + if(len >= 8192 && !memcmp(data + 0x1FD0, "MCGENJIN", 8)) + mcg_mapper = TRUE; + + if(!syscard && m_len >= sf2_threshold && !mcg_mapper) + { + sf2_mapper = TRUE; + + // Only used the "extended" SF2 mapper if it's considerably larger than the normal SF2 mapper size. + if(m_len < (512 * 1024 * 6)) + m_len = 512 * 1024 * 5; + else + m_len = round_up_pow2(m_len - 512 * 1024) + 512 * 1024; + + if(m_len > 8912896) + { + MDFN_PrintError(_("ROM image is too large!")); + m_len = 8912896; + } + + HuCSF2BankMask = ((m_len - 512 * 1024) / (512 * 1024)) - 1; + + //printf("%d %d, %02x\n", len, m_len, HuCSF2BankMask); + } + + IsPopulous = 0; + PCE_IsCD = 0; + + if(syscard == SYSCARD_NONE) + { + md5_context md5; + md5.starts(); + md5.update(data, len); + md5.finish(MDFNGameInfo->MD5); + + MDFN_printf(_("ROM: %dKiB\n"), (len + 1023) / 1024); + MDFN_printf(_("ROM CRC32: 0x%08x\n"), crc32); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + } + + if(syscard != SYSCARD_NONE) + { + if(!(CDRAM = (uint8 *)MDFN_calloc(1, 8 * 8192, _("CD RAM")))) + { + Cleanup(); + return(0); + } + + for(int x = 0x80; x < 0x88; x++) + { + ROMMap[x] = &CDRAM[(x - 0x80) * 8192] - x * 8192; + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + + HuCPU->SetReadHandler(x, CDRAMRead); + HuCPU->SetWriteHandler(x, CDRAMWrite); + } + MDFNMP_AddRAM(8 * 8192, 0x80 * 8192, CDRAM); + + UseBRAM = TRUE; + } + + if(mcg_mapper) + { + mcg = new MCGenjin(&huc_sbuf, data, len); + + for(unsigned i = 0; i < 128; i++) + { + HuCPU->SetFastRead(i, NULL); + HuCPU->SetReadHandler(i, MCG_ReadHandler); + HuCPU->SetWriteHandler(i, MCG_WriteHandler); + } + + goto BRAM_Init; // SO EVIL YES EVVIIIIIL(FIXME) + } + + if(!(HuCROM = (uint8 *)MDFN_malloc(m_len, _("HuCard ROM")))) + { + return(0); + } + + memset(HuCROM, 0xFF, m_len); + memcpy(HuCROM, data, (m_len < len) ? m_len : len); + + if(m_len == 0x60000) + { + for(int x = 0; x < 128; x++) + { + ROMMap[x] = &HuCROM[(x & 0x1F) * 8192] - x * 8192; + + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + HuCPU->SetReadHandler(x, HuCRead); + } + + for(int x = 64; x < 128; x++) + { + ROMMap[x] = &HuCROM[((x & 0xF) + 32) * 8192] - x * 8192; + + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + HuCPU->SetReadHandler(x, HuCRead); + } + } + else if(m_len == 0x80000) + { + for(int x = 0; x < 64; x++) + { + ROMMap[x] = &HuCROM[(x & 0x3F) * 8192] - x * 8192; + + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + HuCPU->SetReadHandler(x, HuCRead); + } + for(int x = 64; x < 128; x++) + { + ROMMap[x] = &HuCROM[((x & 0x1F) + 32) * 8192] - x * 8192; + + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + HuCPU->SetReadHandler(x, HuCRead); + } + } + else + { + for(int x = 0; x < 128; x++) + { + uint8 bank = x % (m_len / 8192); + + ROMMap[x] = &HuCROM[bank * 8192] - x * 8192; + + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + HuCPU->SetReadHandler(x, HuCRead); + } + } + + if(syscard) + { + if(syscard == SYSCARD_3 || syscard == SYSCARD_ARCADE) + { + if(!(SysCardRAM = (uint8 *)MDFN_calloc(1, 24 * 8192, _("System Card RAM")))) + { + Cleanup(); + return(0); + } + + for(int x = 0x68; x < 0x80; x++) + { + ROMMap[x] = &SysCardRAM[(x - 0x68) * 8192] - x * 8192; + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + + HuCPU->SetReadHandler(x, SysCardRAMRead); + HuCPU->SetWriteHandler(x, SysCardRAMWrite); + } + MDFNMP_AddRAM(24 * 8192, 0x68 * 8192, SysCardRAM); + } + + if(syscard == SYSCARD_ARCADE) + { + try + { + arcade_card = new ArcadeCard(); + } + catch(std::exception &e) + { + MDFN_PrintError(_("Error creating %s object: %s"), "ArcadeCard", e.what()); + Cleanup(); + return(0); + } + + for(int x = 0x40; x < 0x44; x++) + { + ROMMap[x] = NULL; + HuCPU->SetFastRead(x, NULL); + + HuCPU->SetReadHandler(x, AC_PhysRead); + HuCPU->SetWriteHandler(x, AC_PhysWrite); + } + } + } + else + { + if(!memcmp(HuCROM + 0x1F26, "POPULOUS", strlen("POPULOUS"))) + { + gzFile fp; + + if(!(PopRAM = (uint8 *)MDFN_malloc(32768, _("Populous RAM")))) + { + Cleanup(); + return(0); + } + memset(PopRAM, 0xFF, 32768); + if((fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(fp, PopRAM, 32768); + gzclose(fp); + } + IsPopulous = 1; + MDFN_printf("Populous\n"); + for(int x = 0x40; x < 0x44; x++) + { + ROMMap[x] = &PopRAM[(x & 3) * 8192] - x * 8192; + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + + HuCPU->SetReadHandler(x, HuCRead); + HuCPU->SetWriteHandler(x, HuCRAMWrite); + } + MDFNMP_AddRAM(32768, 0x40 * 8192, PopRAM); + } + else if(crc32 == 0x34dc65c4) // Tsushin Booster + { + gzFile fp; + + if(!(TsushinRAM = (uint8*)MDFN_malloc(0x8000, _("Tsushin Booster RAM")))) + { + Cleanup(); + return(0); + } + memset(TsushinRAM, 0xFF, 0x8000); + + if((fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(fp, TsushinRAM, 32768); + gzclose(fp); + } + IsTsushin = 1; + MDFN_printf("Tsushin Booster\n"); + for(int x = 0x88; x < 0x8C; x++) + { + ROMMap[x] = &TsushinRAM[(x & 3) * 8192] - x * 8192; + HuCPU->SetFastRead(x, ROMMap[x] + x * 8192); + + HuCPU->SetReadHandler(x, HuCRead); + HuCPU->SetWriteHandler(x, HuCRAMWrite); + } + MDFNMP_AddRAM(32768, 0x88 * 8192, TsushinRAM); + } + else + UseBRAM = TRUE; + + // 0x1A558 + if(sf2_mapper) + { + for(int x = 0x20; x < 0x40; x++) + HuCPU->SetReadHandler(x, HuCSF2ReadLow); + for(int x = 0x40; x < 0x80; x++) + { + HuCPU->SetFastRead(x, NULL); // Make sure our reads go through our read function, and not a table lookup + HuCPU->SetReadHandler(x, HuCSF2Read); + } + HuCPU->SetWriteHandler(0, HuCSF2Write); + + MDFN_printf("Street Fighter 2 Mapper\n"); + HuCSF2Latch = 0; + } + } // end else to if(syscard) + + BRAM_Init: + + BRAM_Disabled = DisableBRAM; + if(BRAM_Disabled) + UseBRAM = false; + + if(UseBRAM) + { + gzFile fp; + + memset(SaveRAM, 0x00, 2048); + memcpy(SaveRAM, BRAM_Init_String, 8); // So users don't have to manually intialize the file cabinet + // in the CD BIOS screen. + if((fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(fp, SaveRAM, 2048); + gzclose(fp); + } + + HuCPU->SetWriteHandler(0xF7, SaveRAMWrite); + HuCPU->SetReadHandler(0xF7, SaveRAMRead); + MDFNMP_AddRAM(2048, 0xF7 * 8192, SaveRAM); + } + + return(1); +} + +bool IsBRAMUsed(void) +{ + if(BRAM_Disabled) + return(false); + + if(memcmp(SaveRAM, BRAM_Init_String, 8)) // HUBM string is modified/missing + return(1); + + for(int x = 8; x < 2048; x++) + if(SaveRAM[x]) return(1); + + return(0); +} + +int HuC_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(PopRAM, IsPopulous ? 32768 : 0), + SFARRAY(TsushinRAM, IsTsushin ? 32768 : 0), + SFARRAY(SaveRAM, (IsPopulous || IsTsushin || BRAM_Disabled) ? 0 : 2048), + SFARRAY(CDRAM, CDRAM ? (8192 * 8) : 0), + SFARRAY(SysCardRAM, SysCardRAM ? (8192 * 24) : 0), + SFVAR(HuCSF2Latch), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "HuC"); + + if(load) + HuCSF2Latch &= 0xF; + + if(PCE_IsCD) + { + if(arcade_card) + ret &= arcade_card->StateAction(sm, load, data_only); + + ret &= PCECD_StateAction(sm, load, data_only); + } + + if(mcg) + ret &= mcg->StateAction(sm, load, data_only); + + return(ret); +} + +void HuCClose(void) +{ + if(mcg) + { + for(unsigned i = 0; i < mcg->GetNVPDC(); i++) + { + uint32 nvs = mcg->GetNVSize(i); + + if(nvs) + { + char buf[32]; + std::vector tmp_buf; + + tmp_buf.resize(nvs); + + mcg->ReadNV(i, &tmp_buf[0], 0, tmp_buf.size()); + + trio_snprintf(buf, sizeof(buf), "mg%d", i); + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, buf).c_str(), 6, &tmp_buf[0], tmp_buf.size()); + } + } + + delete mcg; + mcg = NULL; + } + + if(IsPopulous) + { + if(PopRAM) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, PopRAM, 32768); + } + } + else if(IsTsushin) + { + if(TsushinRAM) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, TsushinRAM, 32768); + MDFN_free(TsushinRAM); + TsushinRAM = NULL; + } + } + else if(!BRAM_Disabled && IsBRAMUsed()) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, SaveRAM, 2048); + } + + Cleanup(); +} + +void HuC_EndFrame(int32 timestamp) +{ + if(mcg) + mcg->EndFrame(timestamp); +} + + +void HuC_Power(void) +{ + if(CDRAM) + memset(CDRAM, 0x00, 8 * 8192); + + if(SysCardRAM) + memset(SysCardRAM, 0x00, 24 * 8192); + + if(arcade_card) + arcade_card->Power(); + + HuCSF2Latch = 0; + + if(mcg) + mcg->Power(); +} + + +bool HuC_IsBRAMAvailable(void) +{ + if(IsPopulous) + return(false); + + if(IsTsushin) + return(false); + + if(BRAM_Disabled) + return(false); + + return(true); +} + +uint8 HuC_PeekBRAM(uint32 A) +{ + assert(HuC_IsBRAMAvailable()); + + return(SaveRAM[A & 2047]); +} + +void HuC_PokeBRAM(uint32 A, uint8 V) +{ + assert(HuC_IsBRAMAvailable()); + + SaveRAM[A & 2047] = V; +} + + +}; diff --git a/libmednahawk/src/pce/huc.h b/libmednahawk/src/pce/huc.h new file mode 100644 index 0000000000..53d314134e --- /dev/null +++ b/libmednahawk/src/pce/huc.h @@ -0,0 +1,37 @@ +#ifndef __MDFN_PCE_HUC_H +#define __MDFN_PCE_HUC_H + +namespace MDFN_IEN_PCE +{ + +typedef enum +{ + SYSCARD_NONE = 0, + SYSCARD_1, + SYSCARD_2, + SYSCARD_3, + SYSCARD_ARCADE // 3.0 + extras +} SysCardType; + +int HuCLoad(const uint8 *data, uint32 len, uint32 crc32, bool DisableBRAM = false, SysCardType syscard = SYSCARD_NONE); + +void HuC_EndFrame(int32 timestamp); + +void HuCClose(void); +int HuC_StateAction(StateMem *sm, int load, int data_only); + +void HuC_Power(void); + +DECLFR(PCE_ACRead); +DECLFW(PCE_ACWrite); + +extern bool PCE_IsCD; +extern bool IsTsushin; + +// Debugger support functions. +bool HuC_IsBRAMAvailable(void); +uint8 HuC_PeekBRAM(uint32 A); +void HuC_PokeBRAM(uint32 A, uint8 V); +}; + +#endif diff --git a/libmednahawk/src/pce/input.cpp b/libmednahawk/src/pce/input.cpp new file mode 100644 index 0000000000..6eea504d85 --- /dev/null +++ b/libmednahawk/src/pce/input.cpp @@ -0,0 +1,402 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "input.h" +#include "huc.h" + +#include "vce.h" // For debugging only(but not the debugger :b) + +#include "input/gamepad.h" +#include "input/mouse.h" +#include "input/tsushinkb.h" + +namespace MDFN_IEN_PCE +{ + +enum +{ + PCEINPUT_NONE = 0, + PCEINPUT_GAMEPAD = 1, + PCEINPUT_MOUSE = 2, + PCEINPUT_TSUSHINKB = 3, +}; + +//PCE_Input_Device::PCE_Input_Device(int which) +//{ +// +//} + +PCE_Input_Device::~PCE_Input_Device() +{ + +} + +void PCE_Input_Device::Power(int32 timestamp) +{ + + +} + +void PCE_Input_Device::AdjustTS(int32 delta) +{ + +} + +void PCE_Input_Device::Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR) +{ + +} + +uint8 PCE_Input_Device::Read(int32 timestamp) +{ + return(0xF); +} + +void PCE_Input_Device::Update(const void *data) +{ + +} + +int PCE_Input_Device::StateAction(StateMem *sm, int load, int data_only, const char *section_name) +{ + return(1); +} + +static PCE_Input_Device *devices[5] = { NULL }; +static bool MultiTapEnabled = TRUE; +static int InputTypes[5] = { 0 }; +static uint8 *data_ptr[5]; +static bool SEL, CLR; +static uint8 read_index = 0; + +static void RemakeDevices(int which = -1) +{ + int s = 0; + int e = 5; + + if(which != -1) + { + s = which; + e = which + 1; + } + + for(int i = s; i < e; i++) + { + if(devices[i]) + delete devices[i]; + devices[i] = NULL; + + switch(InputTypes[i]) + { + default: + case PCEINPUT_NONE: break; + case PCEINPUT_GAMEPAD: devices[i] = PCEINPUT_MakeGamepad(i); break; + case PCEINPUT_MOUSE: devices[i] = PCEINPUT_MakeMouse(); break; + case PCEINPUT_TSUSHINKB: devices[i] = PCEINPUT_MakeTsushinKB(); break; + } + } +} + + +static void SyncSettings(void); + +void PCEINPUT_SettingChanged(const char *name) +{ + SyncSettings(); +} + +void PCEINPUT_Init(void) +{ + SyncSettings(); + RemakeDevices(); +} + +void PCEINPUT_SetInput(int port, const char *type, void *ptr) +{ + assert(port < 5); + + if(!strcasecmp(type, "gamepad")) + InputTypes[port] = PCEINPUT_GAMEPAD; + else if(!strcasecmp(type, "mouse")) + InputTypes[port] = PCEINPUT_MOUSE; + else if(!strcasecmp(type, "tsushinkb")) + InputTypes[port] = PCEINPUT_TSUSHINKB; + else + InputTypes[port] = PCEINPUT_NONE; + + data_ptr[port] = (uint8 *)ptr; + + RemakeDevices(port); +} + +uint16 INPUT_HESHack(void) +{ + uint16 ret = 0; + + switch(InputTypes[0]) + { + case PCEINPUT_GAMEPAD: ret = MDFN_de16lsb(data_ptr[0]); + break; + } + return(ret); +} + +void INPUT_Frame(void) +{ + for(int i = 0; i < 5; i++) + if(devices[i]) + devices[i]->Update(data_ptr[i]); +} + +void INPUT_FixTS(int32 timestamp) +{ + for(int i = 0; i < 5; i++) + if(devices[i]) + devices[i]->AdjustTS(-timestamp); +} + +static INLINE uint8 RealPortRead(int32 timestamp, int which) +{ + uint8 ret = 0xF; + + //printf("RealInputRead: %d %d\n", which, timestamp); + if(devices[which]) + ret = devices[which]->Read(timestamp); + + return(ret); +} + +static INLINE void RealPortWrite(int32 timestamp, int which, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR) +{ + if(devices[which]) + devices[which]->Write(timestamp, old_SEL, new_SEL, old_CLR, new_CLR); +} + +static INLINE uint8 MultiTapRead(int32 timestamp) +{ + uint8 ret = 0xF; + + if(read_index > 4) + ret = 0; + else + ret = RealPortRead(timestamp, read_index); + + return(ret); +} + +static INLINE void MultiTapWrite(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR) +{ + for(int i = 0; i < 5; i++) + RealPortWrite(timestamp, i, old_SEL, new_SEL, old_CLR, new_CLR); + + // SEL held high, CLR transitions from 0->1, reset counter. + // Scratch that, only check if SEL is high on the write that changes CLR from 0 to 1, to fix "Strip Fighter". + if(/*old_SEL &&*/ new_SEL && !old_CLR && new_CLR) + { + //puts("Reset read index"); + + read_index = 0; + } + // CLR held low, SEL transitions from 0->1, increment counter. + else if(!old_CLR && !new_CLR && !old_SEL && new_SEL) + { + //puts("Increment read index"); + if(read_index < 255) + read_index++; + } +} + +uint8 INPUT_Read(int32 timestamp, unsigned int A) +{ + uint8 ret; + + //{ + // extern VCE *vce; + // printf("Input Read: %04x, %d\n", A, vce->GetScanlineNo()); + //} + + if(MultiTapEnabled && InputTypes[0] != PCEINPUT_TSUSHINKB) + ret = MultiTapRead(timestamp); + else + ret = RealPortRead(timestamp, 0); + + //printf("Input read: %04x, %02x\n",A,ret); + + if(!PCE_IsCD) + ret |= 0x80; // Set when CDROM is not attached + + //ret |= 0x40; // PC Engine if set, TG16 if clear. Let's leave it clear, PC Engine games don't seem to mind if it's clear, but TG16 games barf if it's set. + + ret |= 0x30; // Always-set? + + return(ret); +} + +void INPUT_Write(int32 timestamp, unsigned int A, uint8 V) +{ + //printf("Input Write: %04x, %02x\n", A, V); + bool new_SEL = V & 0x1; + bool new_CLR = V & 0x2; + + if(MultiTapEnabled) + MultiTapWrite(timestamp, SEL, new_SEL, CLR, new_CLR); + else + RealPortWrite(timestamp, 0, SEL, new_SEL, CLR, new_CLR); + + SEL = new_SEL; + CLR = new_CLR; +} + +void PCEINPUT_Power(int32 timestamp) +{ + read_index = 0; + SEL = 0; + CLR = 0; + + for(int i = 0; i < 5; i++) + if(devices[i]) + devices[i]->Power(timestamp); +} + +int INPUT_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(SEL), + SFVAR(CLR), + SFVAR(read_index), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "JOY"); + + for(int i = 0; i < 5; i++) + { + if(devices[i]) + { + char sn[8]; + snprintf(sn, 8, "INP%d", i); + ret &= devices[i]->StateAction(sm, load, data_only, sn); + } + } + + return(ret); +} + +// If we add more devices to these arrays before "gamepad", REMEMBER TO UPDATE the hackish array indexing in the SyncSettings() function +// below. + +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(PCE_GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + PCE_GamepadIDII, + }, + + // Mouse + { + "mouse", + "Mouse", + NULL, + NULL, + sizeof(PCE_MouseIDII) / sizeof(InputDeviceInputInfoStruct), + PCE_MouseIDII, + }, +}; + +static InputDeviceInfoStruct InputDeviceInfoPort1[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(PCE_GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + PCE_GamepadIDII, + }, + + // Mouse + { + "mouse", + "Mouse", + NULL, + NULL, + sizeof(PCE_MouseIDII) / sizeof(InputDeviceInputInfoStruct), + PCE_MouseIDII, + }, + + // Tsushin Keyboard + { + "tsushinkb", + "Tsushin Keyboard", + NULL, + NULL, + sizeof(PCE_TsushinKBIDII) / sizeof(InputDeviceInputInfoStruct), + PCE_TsushinKBIDII, + }, +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "port1", "Port 1", sizeof(InputDeviceInfoPort1) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPort1, "gamepad" }, + { "port2", "Port 2", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port3", "Port 3", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port4", "Port 4", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port5", "Port 5", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, +}; + +InputInfoStruct PCEInputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +static void SyncSettings(void) +{ + MDFNGameInfo->mouse_sensitivity = MDFN_GetSettingF("pce.mouse_sensitivity"); + InputDeviceInfo[1].IDII = MDFN_GetSettingB("pce.disable_softreset") ? PCE_GamepadIDII_DSR : PCE_GamepadIDII; + MultiTapEnabled = MDFN_GetSettingB("pce.input.multitap"); +} + +}; diff --git a/libmednahawk/src/pce/input.h b/libmednahawk/src/pce/input.h new file mode 100644 index 0000000000..d1550a629d --- /dev/null +++ b/libmednahawk/src/pce/input.h @@ -0,0 +1,35 @@ +#ifndef __PCE_INPUT_H +#define __PCE_INPUT_H + +namespace MDFN_IEN_PCE +{ + +class PCE_Input_Device +{ + public: +// PCE_Input_Device(int which); // "which" is advisory and only should be used in status messages. + virtual ~PCE_Input_Device(); + virtual void AdjustTS(int32 delta); + virtual void Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR); + virtual uint8 Read(int32 timestamp); + virtual void Power(int32 timestamp); + virtual void Update(const void *data); + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name); +}; + +void PCEINPUT_Power(int32 timestamp); +void PCEINPUT_Init(void); +void PCEINPUT_SettingChanged(const char *name); +void PCEINPUT_SetInput(int port, const char *type, void *ptr); +uint8 INPUT_Read(int32 timestamp, unsigned int A); +void INPUT_Write(int32 timestamp, unsigned int A, uint8 V); +void INPUT_Frame(void); +int INPUT_StateAction(StateMem *sm, int load, int data_only); +extern InputInfoStruct PCEInputInfo; +void INPUT_FixTS(int32 timestamp); + +uint16 INPUT_HESHack(void); + +}; + +#endif diff --git a/libmednahawk/src/pce/input/gamepad.cpp b/libmednahawk/src/pce/input/gamepad.cpp new file mode 100644 index 0000000000..9994f1057b --- /dev/null +++ b/libmednahawk/src/pce/input/gamepad.cpp @@ -0,0 +1,162 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../pce.h" +#include "../input.h" +#include "gamepad.h" + +namespace MDFN_IEN_PCE +{ + +class PCE_Input_Gamepad : public PCE_Input_Device +{ + public: + PCE_Input_Gamepad(int which); + virtual void Power(int32 timestamp); + virtual void Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR); + virtual uint8 Read(int32 timestamp); + virtual void Update(const void *data); + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name); + + + private: + bool SEL, CLR; + uint16 buttons; + bool AVPad6Which; + bool AVPad6Enabled; + int which_this; +}; + +PCE_Input_Gamepad::PCE_Input_Gamepad(int which) +{ + which_this = which; + Power(0); // FIXME? +} + +void PCE_Input_Gamepad::Power(int32 timestamp) +{ + SEL = 0; + CLR = 0; + buttons = 0; + AVPad6Which = 0; + AVPad6Enabled = 0; +} + +void PCE_Input_Gamepad::Update(const void *data) +{ + uint16 new_data = MDFN_de16lsb((uint8 *)data); + + if((new_data & 0x1000) && !(buttons & 0x1000)) + { + AVPad6Enabled = !AVPad6Enabled; + MDFN_DispMessage("%d-button mode selected for pad %d", AVPad6Enabled ? 6 : 2, which_this + 1); + } + + buttons = new_data; +} + +uint8 PCE_Input_Gamepad::Read(int32 timestamp) +{ + uint8 ret = 0xF; + + if(AVPad6Which && AVPad6Enabled) + { + if(SEL) + ret ^= 0xF; + else + ret ^= (buttons >> 8) & 0x0F; + } + else + { + if(SEL) + ret ^= (buttons >> 4) & 0x0F; + else + ret ^= buttons & 0x0F; + } + + //if(CLR) + // ret = 0; + + return(ret); +} + +void PCE_Input_Gamepad::Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR) +{ + SEL = new_SEL; + CLR = new_CLR; + + //if(old_SEL && new_SEL && old_CLR && !new_CLR) + if(!old_SEL && new_SEL) + AVPad6Which = !AVPad6Which; +} + +int PCE_Input_Gamepad::StateAction(StateMem *sm, int load, int data_only, const char *section_name) +{ + SFORMAT StateRegs[] = + { + SFVAR(SEL), + SFVAR(CLR), + SFVAR(buttons), + SFVAR(AVPad6Which), + SFVAR(AVPad6Enabled), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); + + return(ret); +} + +// GamepadIDII and GamepadIDII_DSR must be EXACTLY the same except for the RUN+SELECT exclusion in the latter. +const InputDeviceInputInfoStruct PCE_GamepadIDII[0xD] = +{ + { "i", "I", 12, IDIT_BUTTON_CAN_RAPID, NULL }, + { "ii", "II", 11, IDIT_BUTTON_CAN_RAPID, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "run", "RUN", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "iii", "III", 10, IDIT_BUTTON, NULL }, + { "iv", "IV", 7, IDIT_BUTTON, NULL }, + { "v", "V", 8, IDIT_BUTTON, NULL }, + { "vi", "VI", 9, IDIT_BUTTON, NULL }, + { "mode_select", "2/6 Mode Select", 6, IDIT_BUTTON, NULL }, +}; +const InputDeviceInputInfoStruct PCE_GamepadIDII_DSR[0xD] = +{ + { "i", "I", 12, IDIT_BUTTON_CAN_RAPID, NULL }, + { "ii", "II", 11, IDIT_BUTTON_CAN_RAPID, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, "run" }, + { "run", "RUN", 5, IDIT_BUTTON, "select" }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "iii", "III", 10, IDIT_BUTTON, NULL }, + { "iv", "IV", 7, IDIT_BUTTON, NULL }, + { "v", "V", 8, IDIT_BUTTON, NULL }, + { "vi", "VI", 9, IDIT_BUTTON, NULL }, + { "mode_select", "2/6 Mode Select", 6, IDIT_BUTTON, NULL }, +}; + +PCE_Input_Device *PCEINPUT_MakeGamepad(int which) +{ + return(new PCE_Input_Gamepad(which)); +} + +}; diff --git a/libmednahawk/src/pce/input/gamepad.h b/libmednahawk/src/pce/input/gamepad.h new file mode 100644 index 0000000000..8ec7c4475a --- /dev/null +++ b/libmednahawk/src/pce/input/gamepad.h @@ -0,0 +1,14 @@ +#ifndef __PCE_INPUT_GAMEPAD_H +#define __PCE_INPUT_GAMEPAD_H + +namespace MDFN_IEN_PCE +{ + +extern const InputDeviceInputInfoStruct PCE_GamepadIDII[0xD]; +extern const InputDeviceInputInfoStruct PCE_GamepadIDII_DSR[0xD]; + +PCE_Input_Device *PCEINPUT_MakeGamepad(int which); + +}; + +#endif diff --git a/libmednahawk/src/pce/input/mouse.cpp b/libmednahawk/src/pce/input/mouse.cpp new file mode 100644 index 0000000000..b1ff30c493 --- /dev/null +++ b/libmednahawk/src/pce/input/mouse.cpp @@ -0,0 +1,171 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../pce.h" +#include "../input.h" +#include "mouse.h" + +namespace MDFN_IEN_PCE +{ + +class PCE_Input_Mouse : public PCE_Input_Device +{ + public: + PCE_Input_Mouse(); + virtual void Power(int32 timestamp); + + virtual void AdjustTS(int32 delta); + virtual void Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR); + virtual uint8 Read(int32 timestamp); + virtual void Update(const void *data); + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name); + + private: + bool SEL, CLR; + int64 mouse_last_meow; + + int32 mouse_x, mouse_y; + uint8 pce_mouse_button; + uint8 mouse_index; + + + uint16 mouse_shifter; +}; + +void PCE_Input_Mouse::Power(int32 timestamp) +{ + SEL = CLR = 0; + mouse_last_meow = 0; + mouse_x = mouse_y = 0; + pce_mouse_button = 0; + mouse_index = 0; + mouse_shifter = 0; +} + +PCE_Input_Mouse::PCE_Input_Mouse() +{ + Power(0); +} + +void PCE_Input_Mouse::Update(const void *data) +{ + //puts("Frame"); + uint8 *data_ptr = (uint8 *)data; + + mouse_x += (int32)MDFN_de32lsb(data_ptr + 0); + mouse_y += (int32)MDFN_de32lsb(data_ptr + 4); + pce_mouse_button = *(uint8 *)(data_ptr + 8); +} + +void PCE_Input_Mouse::AdjustTS(int32 delta) +{ + //printf("Adjust: %d\n", delta); + mouse_last_meow += delta; +} + +void PCE_Input_Mouse::Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR) +{ + //printf("Write: %d old_SEL=%d, new_SEL=%d, old_CLR=%d, new_CLR=%d\n", timestamp, old_SEL, new_SEL, old_CLR, new_CLR); + if(!old_CLR && new_CLR) + { + //printf("%lld\n", (int64)timestamp - mouse_last_meow); + if(((int64)timestamp - mouse_last_meow) > 10000 * 3) + { + mouse_last_meow = timestamp; + + int32 rel_x = (int32)((0-mouse_x)); + int32 rel_y = (int32)((0-mouse_y)); + + if(rel_x < -127) rel_x = -127; + if(rel_x > 127) rel_x = 127; + if(rel_y < -127) rel_y = -127; + if(rel_y > 127) rel_y = 127; + + mouse_shifter = ((rel_x & 0xF0) >> 4) | ((rel_x & 0x0F) << 4); + mouse_shifter |= (((rel_y & 0xF0) >> 4) | ((rel_y & 0x0F) << 4)) << 8; + + mouse_x += (int32)(rel_x); + mouse_y += (int32)(rel_y); + + //printf("Latch: %d %d, %04x\n", rel_x, rel_y, mouse_shifter); + } + else + { + //puts("Shift"); + mouse_shifter >>= 4; + } + } + + SEL = new_SEL; + CLR = new_CLR; +} + +uint8 PCE_Input_Mouse::Read(int32 timestamp) +{ + uint8 ret = 0xF; + + //printf("Read: %d\n", timestamp); + + if(SEL) + { + ret = (mouse_shifter & 0xF); + //printf("Read: %02x\n", ret); + } + else + { + ret ^= pce_mouse_button & 0xF; + } + + return(ret); +} + +int PCE_Input_Mouse::StateAction(StateMem *sm, int load, int data_only, const char *section_name) +{ + SFORMAT StateRegs[] = + { + SFVAR(SEL), + SFVAR(CLR), + SFVAR(mouse_last_meow), + SFVAR(mouse_x), + SFVAR(mouse_y), + SFVAR(pce_mouse_button), + SFVAR(mouse_index), + SFVAR(mouse_shifter), + + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); + + return(ret); +} + +const InputDeviceInputInfoStruct PCE_MouseIDII[0x6] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS_REL }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS_REL }, + { "right", "Right Button", 3, IDIT_BUTTON, NULL }, + { "left", "Left Button", 2, IDIT_BUTTON, NULL }, + { "select", "SELECT", 0, IDIT_BUTTON, NULL }, + { "run", "RUN", 1, IDIT_BUTTON, NULL }, +}; + +PCE_Input_Device *PCEINPUT_MakeMouse(void) +{ + return(new PCE_Input_Mouse()); +} + +}; diff --git a/libmednahawk/src/pce/input/mouse.h b/libmednahawk/src/pce/input/mouse.h new file mode 100644 index 0000000000..b49b7d86fc --- /dev/null +++ b/libmednahawk/src/pce/input/mouse.h @@ -0,0 +1,13 @@ +#ifndef __PCE_INPUT_MOUSE_H +#define __PCE_INPUT_MOUSE_H + +namespace MDFN_IEN_PCE +{ + +extern const InputDeviceInputInfoStruct PCE_MouseIDII[0x6]; + +PCE_Input_Device *PCEINPUT_MakeMouse(void); + +}; + +#endif diff --git a/libmednahawk/src/pce/input/tsushinkb.cpp b/libmednahawk/src/pce/input/tsushinkb.cpp new file mode 100644 index 0000000000..bc9fc31a4c --- /dev/null +++ b/libmednahawk/src/pce/input/tsushinkb.cpp @@ -0,0 +1,304 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../pce.h" +#include "../input.h" +#include "tsushinkb.h" + +namespace MDFN_IEN_PCE +{ + +class PCE_Input_TsushinKB : public PCE_Input_Device +{ + public: + + PCE_Input_TsushinKB(); + + virtual void Power(int32 timestamp); + virtual void Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR); + virtual uint8 Read(int32 timestamp); + virtual void Update(const void *data); + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name); + + + private: + bool SEL, CLR; + uint8 TsuKBState[16]; + uint8 TsuKBLatch[16 + 2 + 1]; + uint32 TsuKBIndex; + bool last_capslock; +}; + +void PCE_Input_TsushinKB::Power(int32 timestamp) +{ + SEL = CLR = 0; + memset(TsuKBState, 0, sizeof(TsuKBState)); + memset(TsuKBLatch, 0, sizeof(TsuKBLatch)); + TsuKBIndex = 0; + last_capslock = 0; +} + +PCE_Input_TsushinKB::PCE_Input_TsushinKB() +{ + Power(0); +} + +void PCE_Input_TsushinKB::Update(const void *data) +{ + uint8 *data_ptr = (uint8 *)data; + bool capslock = TsuKBState[0xE] & 0x10; + bool new_capslock = data_ptr[0xE] & 0x10; + + if(!last_capslock && new_capslock) + capslock ^= 1; + + for(int i = 0; i < 16; i++) + { + TsuKBState[i] = data_ptr[i]; + } + + TsuKBState[0xE] = (TsuKBState[0xE] & ~0x10) | (capslock ? 0x10 : 0x00); + + last_capslock = new_capslock; +} + +uint8 PCE_Input_TsushinKB::Read(int32 timestamp) +{ + uint8 ret; + + ret = ((TsuKBLatch[TsuKBIndex] >> (SEL * 4)) & 0xF); + + return(ret); +} + +void PCE_Input_TsushinKB::Write(int32 timestamp, bool old_SEL, bool new_SEL, bool old_CLR, bool new_CLR) +{ + SEL = new_SEL; + CLR = new_CLR; + + //printf("Write: %d %d %d %d\n", old_SEL, new_SEL, old_CLR, new_CLR); + + if(!old_CLR && new_CLR) + { + TsuKBLatch[0] = 0x02; + + for(int i = 0; i < 16; i++) + TsuKBLatch[i + 1] = TsuKBState[i] ^ 0xFF; + + TsuKBLatch[17] = 0x02; + TsuKBIndex = 0; + //puts("Latched"); + } + else if(!old_SEL && new_SEL) + { + TsuKBIndex = (TsuKBIndex + 1) % 18; + if(!TsuKBIndex) + { + for(int i = 0; i < 16; i++) + TsuKBLatch[i + 1] = TsuKBState[i] ^ 0xFF; + } + } +} + +int PCE_Input_TsushinKB::StateAction(StateMem *sm, int load, int data_only, const char *section_name) +{ + SFORMAT StateRegs[] = + { + SFVAR(SEL), + SFVAR(CLR), + SFARRAY(TsuKBState, sizeof(TsuKBState)), + SFARRAY(TsuKBLatch, sizeof(TsuKBLatch)), + SFVAR(TsuKBIndex), + SFVAR(last_capslock), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); + + return(ret); +} + +const InputDeviceInputInfoStruct PCE_TsushinKBIDII[0x80] = +{ + // 0 - DONE! + { "kp_0", "Keypad 0", 0, IDIT_BUTTON }, + { "kp_1", "Keypad 1", 0, IDIT_BUTTON }, + { "kp_2", "Keypad 2", 0, IDIT_BUTTON }, + { "kp_3", "Keypad 3", 0, IDIT_BUTTON }, + { "kp_4", "Keypad 4", 0, IDIT_BUTTON }, + { "kp_5", "Keypad 5", 0, IDIT_BUTTON }, + { "kp_6", "Keypad 6", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 1 - DONE! + { "kp_8", "Keypad 8", 0, IDIT_BUTTON }, + { "kp_9", "Keypad 9", 0, IDIT_BUTTON }, + { "kp_multiply", "Keypad *", 0, IDIT_BUTTON }, + { "kp_plus", "Keypad +", 0, IDIT_BUTTON }, + { "kp_equals", "Keypad =", 0, IDIT_BUTTON }, + { "kp_comma", "Keypad ,", 0, IDIT_BUTTON }, + { "kp_period", "Keypad .", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 2 - DONE! + { "at", "@", 0, IDIT_BUTTON }, + { "a", "a", 0, IDIT_BUTTON }, + { "b", "b", 0, IDIT_BUTTON }, + { "c", "c", 0, IDIT_BUTTON }, + { "d", "d", 0, IDIT_BUTTON }, + { "e", "e", 0, IDIT_BUTTON }, + { "f", "f", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 3 - DONE! + { "h", "h", 0, IDIT_BUTTON }, + { "i", "i", 0, IDIT_BUTTON }, + { "j", "j", 0, IDIT_BUTTON }, + { "k", "k", 0, IDIT_BUTTON }, + { "l", "l", 0, IDIT_BUTTON }, + { "m", "m", 0, IDIT_BUTTON }, + { "n", "n", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 4 - DONE! + { "p", "p", 0, IDIT_BUTTON }, + { "q", "q", 0, IDIT_BUTTON }, + { "r", "r", 0, IDIT_BUTTON }, + { "s", "s", 0, IDIT_BUTTON }, + { "t", "t", 0, IDIT_BUTTON }, + { "u", "u", 0, IDIT_BUTTON }, + { "v", "v", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 5 - DONE! + { "x", "x", 0, IDIT_BUTTON }, + { "y", "y", 0, IDIT_BUTTON }, + { "z", "z", 0, IDIT_BUTTON }, + { "left_bracket", "[", 0, IDIT_BUTTON }, + { "yen", "Yen", 0, IDIT_BUTTON }, + { "right_bracket", "]", 0, IDIT_BUTTON }, + { "caret", "^", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 6 - DONE! + { "0", "0", 0, IDIT_BUTTON }, + { "1", "1", 0, IDIT_BUTTON }, + { "2", "2", 0, IDIT_BUTTON }, + { "3", "3", 0, IDIT_BUTTON }, + { "4", "4", 0, IDIT_BUTTON }, + { "5", "5", 0, IDIT_BUTTON }, + { "6", "6", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 7 - DONE! + { "8", "8", 0, IDIT_BUTTON }, + { "9", "9", 0, IDIT_BUTTON }, + { "colon", ":", 0, IDIT_BUTTON }, + { "semicolon", ";", 0, IDIT_BUTTON }, + { "comma", ",", 0, IDIT_BUTTON }, + { "period", ".", 0, IDIT_BUTTON }, + { "slash", "/", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 8 - DONE enough + { "clear", "clear", 0, IDIT_BUTTON }, + { "up", "up", 0, IDIT_BUTTON }, + { "right", "right", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // Alternate backspace key on PC-88 keyboard??? { "unk80", "unknown", 0, IDIT_BUTTON }, + { "grph", "GRPH", 0, IDIT_BUTTON }, + { "kana", "カナ", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // Alternate shift key on PC-88 keyboard??? { "unk83", "unknown", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// 9 - DONE! + { "stop", "STOP", 0, IDIT_BUTTON }, // Break / STOP + { "f1", "F1", 0, IDIT_BUTTON }, + { "f2", "F2", 0, IDIT_BUTTON }, + { "f3", "F3", 0, IDIT_BUTTON }, + { "f4", "F4", 0, IDIT_BUTTON }, + { "f5", "F5", 0, IDIT_BUTTON }, + { "space", "space", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// A - DONE! + { "tab", "Tab", 0, IDIT_BUTTON }, // Tab + { "down", "down", 0, IDIT_BUTTON }, + { "left", "left", 0, IDIT_BUTTON }, + { "help", "Help", 0, IDIT_BUTTON }, // -624 + { "copy", "Copy", 0, IDIT_BUTTON }, // -623 + { "kp_minus", "Keypad Minus", 0, IDIT_BUTTON }, + { "kp_divide", "Keypad Divide", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + + // B - DONE(most likely) + { "roll_down", "ROLL DOWN", 0, IDIT_BUTTON }, + { "roll_up", "ROLL UP", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownB2", "unknown", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownB3", "unknown", 0, IDIT_BUTTON }, + { "o", "o", 0, IDIT_BUTTON }, + { "underscore", "Underscore", 0, IDIT_BUTTON }, + { "g", "g", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// C - DONE! + { "f6", "f6", 0, IDIT_BUTTON }, + { "f7", "f7", 0, IDIT_BUTTON }, + { "f8", "f8", 0, IDIT_BUTTON }, + { "f9", "f9", 0, IDIT_BUTTON }, + { "f10", "F10", 0, IDIT_BUTTON }, + { "backspace", "backspace", 0, IDIT_BUTTON }, + { "insert", "insert", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// D - DONE! + { "convert", "変æ›", 0, IDIT_BUTTON }, // (-620) Begin marking entered text, and disable marking after pressing the + // end-of-block key. + { "nonconvert", "決定", 0, IDIT_BUTTON }, // (-619) End text marking block + { "pc", "PC", 0, IDIT_BUTTON }, // (-617) Selects between Rgana and Rkana. SHIFT+this key switches between + // latin and kana/gana mode? + { "width", "変æ›", 0, IDIT_BUTTON }, // (-618) Chooses font width? + { "ctrl", "CTRL/Control", 0, IDIT_BUTTON }, // CTRL + { "kp_7", "Keypad 7", 0, IDIT_BUTTON }, + { "w", "w", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// E - DONE! + { "return", "return", 0, IDIT_BUTTON }, // enter + { "kp_enter", "Keypad Enter", 0, IDIT_BUTTON }, // enter + { "left_shift", "Left Shift", 0, IDIT_BUTTON }, // Left Shift + { "right_shift", "Right Shift", 0, IDIT_BUTTON }, // Right Shift + { "caps_lock", "Caps Lock", 0, IDIT_BUTTON }, // Caps Lock(mechanically-locking...) + { "delete", "Delete", 0, IDIT_BUTTON }, + { "escape", "Escape", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + +// F - DONE(most likely) + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownF0", "unknown", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownF1", "unknown", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownF2", "unknown", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownF3", "unknown", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, // { "unknownF4", "unknown", 0, IDIT_BUTTON }, + { "minus", "Minus", 0, IDIT_BUTTON }, + { "7", "7", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, +}; + +PCE_Input_Device *PCEINPUT_MakeTsushinKB(void) +{ + return(new PCE_Input_TsushinKB()); +} + +}; diff --git a/libmednahawk/src/pce/input/tsushinkb.h b/libmednahawk/src/pce/input/tsushinkb.h new file mode 100644 index 0000000000..6db529ee2a --- /dev/null +++ b/libmednahawk/src/pce/input/tsushinkb.h @@ -0,0 +1,13 @@ +#ifndef __PCE_INPUT_TSUSHINKB_H +#define __PCE_INPUT_TSUSHINKB_H + +namespace MDFN_IEN_PCE +{ + +extern const InputDeviceInputInfoStruct PCE_TsushinKBIDII[0x80]; + +PCE_Input_Device *PCEINPUT_MakeTsushinKB(void); + +}; + +#endif diff --git a/libmednahawk/src/pce/mcgenjin.cpp b/libmednahawk/src/pce/mcgenjin.cpp new file mode 100644 index 0000000000..88e0f4c3a0 --- /dev/null +++ b/libmednahawk/src/pce/mcgenjin.cpp @@ -0,0 +1,260 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "mcgenjin.h" + +MCGenjin_CS_Device::MCGenjin_CS_Device() +{ + +} + +MCGenjin_CS_Device::~MCGenjin_CS_Device() +{ + +} + +void MCGenjin_CS_Device::Power(void) +{ + +} + +void MCGenjin_CS_Device::EndFrame(int32 timestamp) +{ + +} + +int MCGenjin_CS_Device::StateAction(StateMem *sm, int load, int data_only, const char *sname) +{ + return 1; +} + + +uint8 MCGenjin_CS_Device::Read(int32 timestamp, uint32 A) +{ + return 0xFF; +} + +void MCGenjin_CS_Device::Write(int32 timestamp, uint32 A, uint8 V) +{ + +} + +uint32 MCGenjin_CS_Device::GetNVSize(void) +{ + return 0; +} + +void MCGenjin_CS_Device::ReadNV(uint8 *buffer, uint32 offset, uint32 count) +{ + memset(buffer, 0, count); +} + +void MCGenjin_CS_Device::WriteNV(const uint8 *buffer, uint32 offset, uint32 count) +{ + +} + +class MCGenjin_CS_Device_RAM : public MCGenjin_CS_Device +{ + public: + + MCGenjin_CS_Device_RAM(uint32 size, bool nv) + { + assert(round_up_pow2(size) == size); + + ram.resize(size); + nonvolatile = nv; + } + + virtual ~MCGenjin_CS_Device_RAM() + { + + } + + virtual void Power(void) + { + if(!nonvolatile) + ram.assign(ram.size(), 0xFF); + + bank_select = 0; + } + + virtual int StateAction(StateMem *sm, int load, int data_only, const char *sname) + { + SFORMAT StateRegs[] = + { + SFARRAY(&ram[0], ram.size()), + SFVAR(bank_select), + SFEND + }; + int ret = 1; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, sname); + + return ret; + } + + + virtual uint8 Read(int32 timestamp, uint32 A) + { + return ram[(A | (bank_select << 18)) & (ram.size() - 1)]; + } + + virtual void Write(int32 timestamp, uint32 A, uint8 V) + { + if(!A) + bank_select = V; + + ram[(A | (bank_select << 18)) & (ram.size() - 1)] = V; + } + + virtual uint32 GetNVSize(void) + { + return nonvolatile ? ram.size() : 0; + } + + virtual void ReadNV(uint8 *buffer, uint32 offset, uint32 count) + { + while(count) + { + *buffer = ram[offset % ram.size()]; + buffer++; + offset++; + count--; + } + } + + virtual void WriteNV(const uint8 *buffer, uint32 offset, uint32 count) + { + while(count) + { + ram[offset % ram.size()] = *buffer; + buffer++; + offset++; + count--; + } + } + + private: + std::vector ram; + bool nonvolatile; + uint8 bank_select; +}; + +#include "mcgenjin_ym2413.inc" + +void MCGenjin::Power(void) +{ + bank_select = 0; + dlr = 0; + + for(unsigned i = 0; i < 2; i++) + cs[i]->Power(); +} + +void MCGenjin::EndFrame(int32 timestamp) +{ + for(unsigned i = 0; i < 2; i++) + cs[i]->EndFrame(timestamp); +} + +uint32 MCGenjin::GetNVSize(const unsigned di) +{ + return cs[di]->GetNVSize(); +} + + +void MCGenjin::ReadNV(const unsigned di, uint8 *buffer, uint32 offset, uint32 count) +{ + cs[di]->ReadNV(buffer, offset, count); +} + +void MCGenjin::WriteNV(const unsigned di, const uint8 *buffer, uint32 offset, uint32 count) +{ + cs[di]->WriteNV(buffer, offset, count); +} + +MCGenjin::MCGenjin(Blip_Buffer *bb, const uint8 *rr, uint32 rr_size) +{ + uint8 revision, num256_pages, region, cs_di[2]; + + if(rr_size < 8192) + throw MDFN_Error(0, _("MCGenjin ROM size is too small!")); + + if(memcmp(rr + 0x1FD0, "MCGENJIN", 8)) + throw MDFN_Error(0, _("MC Genjin header magic missing!")); + + rom.resize(round_up_pow2(rr_size)); + + memcpy(&rom[0], rr, rr_size); + + revision = rom[0x1FD8]; + num256_pages = rom[0x1FD9]; + region = rom[0x1FDA]; + cs_di[0] = rom[0x1FDB]; + cs_di[1] = rom[0x1FDC]; + + for(unsigned i = 0; i < 2; i++) + { + switch(cs_di[i]) + { + default: + for(unsigned si = 0; si < i; si++) // FIXME: auto ptr to make this not necessary + delete cs[si]; + + throw MDFN_Error(0, _("Unsupported MCGENJIN device on CS%d: 0x%02x"), i, cs_di[i]); + break; + + case 0x00: + MDFN_printf(_("CS%d: Unused\n"), i); + cs[i] = new MCGenjin_CS_Device(); + break; + + case 0x10 ... 0x18: + case 0x20 ... 0x28: + MDFN_printf(_("CS%d: %uKiB %sRAM\n"), i, 8 << (cs_di[i] & 0xF), (cs_di[i] & 0x20) ? "Nonvolatile " : ""); + cs[i] = new MCGenjin_CS_Device_RAM(8192 << (cs_di[i] & 0xF), (bool)(cs_di[i] & 0x20)); + break; + } + } +} + +MCGenjin::~MCGenjin() +{ + for(unsigned i = 0; i < 2; i++) + delete cs[i]; +} + +int MCGenjin::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(bank_select), + SFVAR(dlr), + SFEND + }; + int ret = 1; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MCGENJIN"); + + for(unsigned i = 0; i < 2; i++) + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, i ? "MCGENJIN_CS1" : "MCGENJIN_CS0"); + + return ret; +} + diff --git a/libmednahawk/src/pce/mcgenjin.h b/libmednahawk/src/pce/mcgenjin.h new file mode 100644 index 0000000000..05af22fa5c --- /dev/null +++ b/libmednahawk/src/pce/mcgenjin.h @@ -0,0 +1,136 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __MDFN_PCE_MCGENJIN_H +#define __MDFN_PCE_MCGENJIN_H + +#include +#include + +class MCGenjin_CS_Device +{ + public: + + MCGenjin_CS_Device(); + virtual ~MCGenjin_CS_Device(); + + virtual void Power(void); + virtual void EndFrame(int32 timestamp); + + virtual int StateAction(StateMem *sm, int load, int data_only, const char *sname); + + virtual uint8 Read(int32 timestamp, uint32 A); + virtual void Write(int32 timestamp, uint32 A, uint8 V); + + virtual uint32 GetNVSize(void); + virtual void ReadNV(uint8 *buffer, uint32 offset, uint32 count); + virtual void WriteNV(const uint8 *buffer, uint32 offset, uint32 count); +}; + +class MCGenjin +{ + public: + + MCGenjin(Blip_Buffer *bb, const uint8 *rr, uint32 rr_size); + ~MCGenjin(); + + void Power(void); + void EndFrame(int32 timestamp); + int StateAction(StateMem *sm, int load, int data_only); + + INLINE unsigned GetNVPDC(void) { return 2; } + uint32 GetNVSize(const unsigned di); + void ReadNV(const unsigned di, uint8 *buffer, uint32 offset, uint32 count); + void WriteNV(const unsigned di, const uint8 *buffer, uint32 offset, uint32 count); + + INLINE uint8 combobble(uint8 v) + { + if(dlr) + return ((((v * 0x80200802ULL) & 0x0884422110ULL) * 0x0101010101ULL) >> 32); + else + return v; + } + + template + INLINE uint8 ReadTP(int32 timestamp, uint32 A) + { + uint8 ret = 0xFF; + + switch(ar) + { + case 0: ret = combobble(rom[A & 0x3FFFF & (rom.size() - 1)]); + case 1: ret = combobble(rom[((A & 0x3FFFF) | (bank_select << 18)) & (rom.size() - 1)]); + case 2: ret = cs[0]->Read(timestamp, A & 0x3FFFF); + case 3: ret = cs[1]->Read(timestamp, A & 0x3FFFF); + } + + return ret; + } + + template + INLINE void WriteTP(int32 timestamp, uint32 A, uint8 V) + { + switch(ar) + { + case 0: + case 1: + if(A & 1) + bank_select = V; + else + dlr = V & 0x01; + break; + + case 2: return cs[0]->Write(timestamp, A & 0x3FFFF, V); + case 3: return cs[1]->Write(timestamp, A & 0x3FFFF, V); + } + } + + + INLINE uint8 Read(int32 timestamp, uint32 A) + { + switch((A >> 18) & 0x3) + { + default: return 0xFF; + case 0: return ReadTP<0>(timestamp, A); + case 1: return ReadTP<1>(timestamp, A); + case 2: return ReadTP<2>(timestamp, A); + case 3: return ReadTP<3>(timestamp, A); + } + } + + INLINE void Write(int32 timestamp, uint32 A, uint8 V) + { + switch((A >> 18) & 0x3) + { + case 0: WriteTP<0>(timestamp, A, V); + case 1: WriteTP<1>(timestamp, A, V); + case 2: WriteTP<2>(timestamp, A, V); + case 3: WriteTP<3>(timestamp, A, V); + } + } + + private: + + std::vector rom; + + MCGenjin_CS_Device *cs[2]; + + uint8 bank_select; + uint8 dlr; +}; + +#endif diff --git a/libmednahawk/src/pce/mcgenjin_ym2413.inc b/libmednahawk/src/pce/mcgenjin_ym2413.inc new file mode 100644 index 0000000000..fe425f231b --- /dev/null +++ b/libmednahawk/src/pce/mcgenjin_ym2413.inc @@ -0,0 +1,97 @@ +#include + +class MCGenjin_CS_Device_YM2413 : public MCGenjin_CS_Device +{ + public: + + MCGenjin_CS_Device_YM2413(Blip_Buffer *bb) + { + zec = EMU2413_new(3579545); + fm_last_value = 0; + + sbuf = bb; + } + + virtual ~MCGenjin_CS_Device_YM2413() + { + EMU2413_delete(zec); + } + + virtual void Power(void) + { + EMU2413_reset(zec); + last_ts = 0; + fm_div = 0; + } + + virtual int StateAction(StateMem *sm, int load, int data_only, const char *sname) + { + SFORMAT StateRegs[] = + { + SFEND + }; + int ret = 1; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, sname); + + return ret; + } + + virtual uint8 Read(int32 timestamp, uint32 A) + { + return 0xFF; + } + + virtual void Write(int32 timestamp, uint32 A, uint8 V) + { + Update(timestamp / 3); + EMU2413_writeIO(zec, A & 1, V); + } + + virtual void EndFrame(int32 timestamp) + { + Update(timestamp / 3); + last_ts = 0; + sbuf->set_modified(); + } + + private: + + void Update(int32 timestamp) + { + int32 cycles = timestamp - last_ts; + + fm_div -= cycles; + while(fm_div <= 0) + { + int32 new_value; + + new_value = EMU2413_calc(zec) >> 1; + + if(new_value > 32767) + new_value = 32767; + + if(new_value < -32768) + new_value = -32768; + + fmsynth.offset(timestamp + fm_div, new_value - fm_last_value, sbuf); + + fm_last_value = new_value; + fm_div += 72; + } + + last_ts = timestamp; + } + + EMU2413 *zec; + Blip_Buffer *sbuf; + + typedef Blip_Synth FMSynth_t; + FMSynth_t fmsynth; + + int32 fm_div; + int32 fm_last_value; + + int32 last_ts; +}; + diff --git a/libmednahawk/src/pce/pce.cpp b/libmednahawk/src/pce/pce.cpp new file mode 100644 index 0000000000..d0e9599b57 --- /dev/null +++ b/libmednahawk/src/pce/pce.cpp @@ -0,0 +1,1165 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "vce.h" +#include "pce_psg/pce_psg.h" +#include "input.h" +#include "huc.h" +#include "subhw.h" +#include "../cdrom/pcecd.h" +#include "../cdrom/scsicd.h" +#include "hes.h" +#include "debug.h" +#include "tsushin.h" +#include "arcade_card/arcade_card.h" +#include "../mempatcher.h" +#include "../cdrom/cdromif.h" +#include "../md5.h" + +#include +#include + +#define PCE_DEBUG(x, ...) { /* printf(x, ## __VA_ARGS__); */ } + +namespace MDFN_IEN_PCE +{ + +static const MDFNSetting_EnumList PSGRevisionList[] = +{ + { "huc6280", PCE_PSG::REVISION_HUC6280, "HuC6280", gettext_noop("HuC6280 as found in the original PC Engine.") }, + { "huc6280a", PCE_PSG::REVISION_HUC6280A, "HuC6280A", gettext_noop("HuC6280A as found in the SuperGrafx and CoreGrafx I. Provides proper channel amplitude centering, but may cause clicking in a few games designed with the original HuC6280's sound characteristics in mind.") }, + { "enhanced", PCE_PSG::REVISION_ENHANCED, "Enhanced", gettext_noop("Emulator-only pseudo-revision, designed to reduce clicking and audio artifacts in games designed for either real revision.") }, + { "match", PCE_PSG::_REVISION_COUNT, gettext_noop("Match emulation mode."), gettext_noop("Selects \"huc6280\" for non-SuperGrafx mode, and \"huc6280a\" for SuperGrafx(full) mode.") }, + { NULL, 0 }, +}; + +static std::vector *cdifs = NULL; +static bool CD_TrayOpen; +static int CD_SelectedDisc; // -1 for no disc + +HuC6280 *HuCPU; + +VCE *vce = NULL; + +static PCE_PSG *psg = NULL; + +extern ArcadeCard *arcade_card; // Bah, lousy globals. + +Blip_Buffer huc_sbuf; +static Blip_Buffer sbuf[2]; +static bool SetSoundRate(double rate); + + +bool PCE_ACEnabled; +uint32 PCE_InDebug = 0; +uint64 PCE_TimestampBase; // Only used with the debugger for the time being. + +extern MDFNGI EmulatedPCE; +static bool IsSGX; +static bool IsHES; + +// Accessed in debug.cpp +static uint8 BaseRAM[32768]; // 8KB for PCE, 32KB for Super Grafx +uint8 PCE_PeekMainRAM(uint32 A) +{ + return BaseRAM[A & ((IsSGX ? 32768 : 8192) - 1)]; +} + +void PCE_PokeMainRAM(uint32 A, uint8 V) +{ + BaseRAM[A & ((IsSGX ? 32768 : 8192) - 1)] = V; +} + + + +HuC6280::readfunc NonCheatPCERead[0x100]; + +static DECLFR(PCEBusRead) +{ + if(!PCE_InDebug) + { + PCE_DEBUG("Unmapped Read: %02x %04x\n", A >> 13, A); + } + return(0xFF); +} + +static DECLFW(PCENullWrite) +{ + if(!PCE_InDebug) + { + PCE_DEBUG("Unmapped Write: %02x, %08x %02x\n", A >> 13, A, V); + } +} + +static DECLFR(BaseRAMReadSGX) +{ + return(BaseRAM[A & 0x7FFF]); +} + +static DECLFW(BaseRAMWriteSGX) +{ + BaseRAM[A & 0x7FFF] = V; +} + +static DECLFR(BaseRAMRead) +{ + return(BaseRAM[A & 0x1FFF]); +} + +static DECLFW(BaseRAMWrite) +{ + BaseRAM[A & 0x1FFF] = V; +} + +static DECLFR(IORead) +{ + A &= 0x1FFF; + + switch(A & 0x1c00) + { + case 0x0000: if(!PCE_InDebug) + HuCPU->StealCycle(); + return(vce->ReadVDC(A)); + + case 0x0400: if(!PCE_InDebug) + HuCPU->StealCycle(); + return(vce->Read(A)); + + case 0x0800: if(HuCPU->InBlockMove()) + return(0); + return(HuCPU->GetIODataBuffer()); + + case 0x0c00: if(HuCPU->InBlockMove()) + return(0); + { + uint8 ret = HuCPU->TimerRead(A, PCE_InDebug); + if(!PCE_InDebug) + HuCPU->SetIODataBuffer(ret); + return(ret); + } + + case 0x1000: if(HuCPU->InBlockMove()) + return(0); + { + uint8 ret = INPUT_Read(HuCPU->Timestamp(), A); + if(!PCE_InDebug) + HuCPU->SetIODataBuffer(ret); + return(ret); + } + + case 0x1400: if(HuCPU->InBlockMove()) + return(0); + { + uint8 ret = HuCPU->IRQStatusRead(A, PCE_InDebug); + if(!PCE_InDebug) + HuCPU->SetIODataBuffer(ret); + return(ret); + } + + case 0x1800: if(IsTsushin) + return(PCE_TsushinRead(A)); + + if(!PCE_IsCD) + break; + if((A & 0x1E00) == 0x1A00) + { + if(arcade_card) + return(arcade_card->Read(A, PCE_InDebug)); + else + return(0); + } + else + { + int32 next_cd_event; + uint8 ret; + + ret = PCECD_Read(HuCPU->Timestamp(), A, next_cd_event, PCE_InDebug); + + vce->SetCDEvent(next_cd_event); + + return(ret); + } + + case 0x1C00: if(IsHES) + return(ReadIBP(A)); + return(SubHW_ReadIOPage(A)); + break; // Expansion + } + + if(!PCE_InDebug) + { + PCE_DEBUG("I/O Unmapped Read: %04x\n", A); + } + + return(0xFF); +} + +static DECLFW(IOWrite) +{ + switch(A & 0x1c00) + { + case 0x0000: HuCPU->StealCycle(); + vce->WriteVDC(A & 0x80001FFF, V); + break; + + case 0x0400: HuCPU->StealCycle(); + vce->Write(A & 0x1FFF, V); + break; + + case 0x0800: HuCPU->SetIODataBuffer(V); + psg->Write(HuCPU->Timestamp() / 3, A & 0x1FFF, V); + break; + + case 0x0c00: HuCPU->SetIODataBuffer(V); + HuCPU->TimerWrite(A & 0x1FFF, V); + break; + + case 0x1000: HuCPU->SetIODataBuffer(V); + INPUT_Write(HuCPU->Timestamp(), A & 0x1FFF, V); + break; + + case 0x1400: HuCPU->SetIODataBuffer(V); + HuCPU->IRQStatusWrite(A & 0x1FFF, V); + break; + + case 0x1800: if(IsTsushin) + PCE_TsushinWrite(A & 0x1FFF, V); + + if(!PCE_IsCD) + { + if(!PCE_InDebug) + { + PCE_DEBUG("I/O Unmapped Write: %04x %02x\n", A, V); + } + break; + } + + if((A & 0x1E00) == 0x1A00) + { + if(arcade_card) + arcade_card->Write(A& 0x1FFF, V); + } + else + { + int32 next_cd_event = PCECD_Write(HuCPU->Timestamp(), A & 0x1FFF, V); + + vce->SetCDEvent(next_cd_event); + } + + break; + + case 0x1C00: //if(!PCE_InDebug) + //{ + // PCE_DEBUG("I/O Unmapped Write: %04x %02x\n", A, V); + //} + SubHW_WriteIOPage(A, V); + break; + } +} + +static void PCECDIRQCB(bool asserted) +{ + if(asserted) + HuCPU->IRQBegin(HuC6280::IQIRQ2); + else + HuCPU->IRQEnd(HuC6280::IQIRQ2); +} + +static bool LoadCustomPalette(const char *path) +{ + uint8 CustomColorMap[1024 * 3]; + + MDFN_printf(_("Loading custom palette from \"%s\"...\n"), path); + MDFN_indent(1); + + gzFile gp = gzopen(path, "rb"); + if(!gp) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error opening file: %s\n"), ene.StrError()); // FIXME, zlib and errno... + MDFN_indent(-1); + return(FALSE); + } + else + { + long length_read; + + length_read = gzread(gp, CustomColorMap, 1024 * 3); + + if(length_read == 512 * 3) + MDFN_printf("Palette only has 512 entries. Calculating the strip-colorburst entries.\n"); + + if(length_read != 1024 * 3 && length_read != 512 * 3) + { + MDFN_printf(_("Error reading file\n")); + MDFN_indent(-1); + return(FALSE); + } + + vce->SetCustomColorMap(CustomColorMap, length_read / 3); + } + MDFN_indent(-1); + + return(TRUE); +} + + +static int LoadCommon(void); +static void LoadCommonPre(void); + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(memcmp(fp->data, "HESM", 4) && strcasecmp(fp->ext, "pce") && strcasecmp(fp->ext, "sgx")) + return(FALSE); + + return(TRUE); +} + +static void SetCDSettings(bool silent_status = false) +{ + PCECD_Settings cd_settings; + memset(&cd_settings, 0, sizeof(PCECD_Settings)); + + cd_settings.CDDA_Volume = (double)MDFN_GetSettingUI("pce.cddavolume") / 100; + cd_settings.CD_Speed = 1; + + cd_settings.ADPCM_Volume = (double)MDFN_GetSettingUI("pce.adpcmvolume") / 100; + cd_settings.ADPCM_LPF = MDFN_GetSettingB("pce.adpcmlp"); + + PCECD_SetSettings(&cd_settings); + + if(!silent_status) + { + if(cd_settings.CDDA_Volume != 1.0) + MDFN_printf(_("CD-DA Volume: %d%%\n"), (int)(100 * cd_settings.CDDA_Volume)); + + if(cd_settings.ADPCM_Volume != 1.0) + MDFN_printf(_("ADPCM Volume: %d%%\n"), (int)(100 * cd_settings.ADPCM_Volume)); + } + + + unsigned int cdpsgvolume = MDFN_GetSettingUI("pce.cdpsgvolume"); + + if(cdpsgvolume != 100) + { + MDFN_printf(_("CD PSG Volume: %d%%\n"), cdpsgvolume); + } + + psg->SetVolume(0.678 * cdpsgvolume / 100); +} + +static void CDSettingChanged(const char *name) +{ + SetCDSettings(true); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + uint32 headerlen = 0; + uint32 r_size; + + IsHES = 0; + IsSGX = 0; + + if(!memcmp(fp->data, "HESM", 4)) + IsHES = 1; + + LoadCommonPre(); + + if(!IsHES) + { + if(fp->size & 0x200) // 512 byte header! + headerlen = 512; + } + + r_size = fp->size - headerlen; + if(r_size > 4096 * 1024) r_size = 4096 * 1024; + + uint32 crc = crc32(0, fp->data + headerlen, fp->size - headerlen); + + + if(IsHES) + { + if(!PCE_HESLoad(fp->data, fp->size)) + return(0); + + PCE_IsCD = 1; + PCECD_Init(NULL, PCECDIRQCB, PCE_MASTER_CLOCK, 1, &sbuf[0], &sbuf[1]); + } + else + { + HuCLoad(fp->data + headerlen, fp->size - headerlen, crc, MDFN_GetSettingB("pce.disable_bram_hucard")); + #if 0 // For testing + PCE_IsCD = 1; + PCECD_Init(NULL, PCECDIRQCB, PCE_MASTER_CLOCK, 1, &sbuf[0], &sbuf[1]); + #endif + } + if(!strcasecmp(fp->ext, "sgx")) + IsSGX = TRUE; + + if(fp->size >= 8192 && !memcmp(fp->data + headerlen, "DARIUS Version 1.11b", strlen("DARIUS VERSION 1.11b"))) + { + MDFN_printf("SuperGfx: Darius Plus\n"); + IsSGX = 1; + } + + if(crc == 0x4c2126b0) + { + MDFN_printf("SuperGfx: Aldynes\n"); + IsSGX = 1; + } + + if(crc == 0x8c4588e2) + { + MDFN_printf("SuperGfx: 1941 - Counter Attack\n"); + IsSGX = 1; + } + if(crc == 0x1f041166) + { + MDFN_printf("SuperGfx: Madouou Granzort\n"); + IsSGX = 1; + } + if(crc == 0xb486a8ed) + { + MDFN_printf("SuperGfx: Daimakaimura\n"); + IsSGX = 1; + } + if(crc == 0x3b13af61) + { + MDFN_printf("SuperGfx: Battle Ace\n"); + IsSGX = 1; + } + + return(LoadCommon()); +} + +static void LoadCommonPre(void) +{ + // Initialize sound buffers + for(unsigned i = 0; i < 2; i++) + sbuf[i].clear(); + + huc_sbuf.clear(); + + // FIXME: Make these globals less global! + PCE_ACEnabled = MDFN_GetSettingB("pce.arcadecard"); + + HuCPU = new HuC6280(IsHES); + + for(int x = 0; x < 0x100; x++) + { + HuCPU->SetFastRead(x, NULL); + HuCPU->SetReadHandler(x, PCEBusRead); + HuCPU->SetWriteHandler(x, PCENullWrite); + } + + MDFNMP_Init(1024, (1 << 21) / 1024); +} + +static int LoadCommon(void) +{ + IsSGX |= MDFN_GetSettingB("pce.forcesgx") ? 1 : 0; + + if(IsHES) + IsSGX = 1; + // Don't modify IsSGX past this point. + + vce = new VCE(IsSGX, MDFN_GetSettingB("pce.nospritelimit")); + + if(IsSGX) + MDFN_printf("SuperGrafx Emulation Enabled.\n"); + + for(int i = 0xF8; i < 0xFC; i++) + { + HuCPU->SetReadHandler(i, IsSGX ? BaseRAMReadSGX : BaseRAMRead); + HuCPU->SetWriteHandler(i, IsSGX ? BaseRAMWriteSGX : BaseRAMWrite); + + if(IsSGX) + HuCPU->SetFastRead(i, BaseRAM + (i & 0x3) * 8192); + else + HuCPU->SetFastRead(i, BaseRAM); + } + + LoadCustomPalette(MDFN_MakeFName(MDFNMKF_PALETTE, 0, NULL).c_str()); + + MDFNMP_AddRAM(IsSGX ? 32768 : 8192, 0xf8 * 8192, BaseRAM); + + HuCPU->SetReadHandler(0xFF, IORead); + HuCPU->SetWriteHandler(0xFF, IOWrite); + + { + int psgrevision = MDFN_GetSettingI("pce.psgrevision"); + + if(psgrevision == PCE_PSG::_REVISION_COUNT) + { + psgrevision = IsSGX ? PCE_PSG::REVISION_HUC6280A : PCE_PSG::REVISION_HUC6280; + } + + for(const MDFNSetting_EnumList *el = PSGRevisionList; el->string; el++) + { + if(el->number == psgrevision) + { + MDFN_printf(_("PSG Revision: %s\n"), el->description); + break; + } + } + psg = new PCE_PSG(&sbuf[0], &sbuf[1], psgrevision); + } + + psg->SetVolume(1.0); + + if(PCE_IsCD) + SetCDSettings(); + + SetSoundRate(0); + + PCEINPUT_Init(); + + // + // + // + SubHW_Init(); + HuCPU->SetReadHandler(0xFE, SubHW_ReadFEPage); + HuCPU->SetWriteHandler(0xFE, SubHW_WriteFEPage); + // + // + // + + PCE_Power(); + + // + // REMOVE ME, debugging stuff + // + #if 0 + { + uint8 er[8] = { 0x47, 0x6E, 0x31, 0x14, 0xB3, 0xEB, 0xEC, 0x2B }; + + for(int i = 0; i < 8; i++) + SubHW_WriteIOPage(0x1C00, er[i]); + + SubHW_WriteIOPage(0x1FF7, 0x80); + } + #endif + // + // + // + + MDFNGameInfo->LayerNames = IsSGX ? "BG0\0SPR0\0BG1\0SPR1\0" : "Background\0Sprites\0"; + MDFNGameInfo->fps = (uint32)((double)7159090.90909090 / 455 / 263 * 65536 * 256); + + + for(unsigned int i = 0; i < 0x100; i++) + NonCheatPCERead[i] = HuCPU->GetReadHandler(i); + + if(!IsHES) + { + MDFNGameInfo->nominal_height = MDFN_GetSettingUI("pce.slend") - MDFN_GetSettingUI("pce.slstart") + 1; + MDFNGameInfo->nominal_width = MDFN_GetSettingB("pce.h_overscan") ? 320 : 288; + + MDFNGameInfo->lcm_width = MDFN_GetSettingB("pce.h_overscan") ? 1120 : 1024; + MDFNGameInfo->lcm_height = MDFNGameInfo->nominal_height; + } + + vce->SetShowHorizOS(MDFN_GetSettingB("pce.h_overscan")); + +#ifdef WANT_DEBUGGER + PCEDBG_Init(IsSGX, psg); +#endif + + + return(1); +} + +static bool DetectGECD(CDIF *cdiface) // Very half-assed detection until(if) we get ISO-9660 reading code. +{ + uint8 sector_buffer[2048]; + CDUtility::TOC toc; + + cdiface->ReadTOC(&toc); + + // Now, test for the Games Express CD games. The GE BIOS seems to always look at sector 0x10, but only if the first track is a + // data track. + if(toc.first_track == 1 && (toc.tracks[1].control & 0x4)) + { + if(cdiface->ReadSector(sector_buffer, 0x10, 1) == 0x1) + { + if(!memcmp((char *)sector_buffer + 0x8, "HACKER CD ROM SYSTEM", 0x14)) + return(true); + + if(!memcmp((char *)sector_buffer + 0x01, "CD001", 0x5)) + { + if(cdiface->ReadSector(sector_buffer, 0x14, 1) == 0x1) + { + static const uint32 known_crcs[] = + { + 0xd7b47c06, // AV Tanjou + 0x86aec522, // Bishoujo Jyanshi [...] + 0xc8d1b5ef, // CD Bishoujo [...] + 0x0bdbde64, // CD Pachisuro [...] + }; + uint32 zecrc = crc32(0, sector_buffer, 2048); + + //printf("%04x\n", zecrc); + for(unsigned int i = 0; i < sizeof(known_crcs) / sizeof(uint32); i++) + if(known_crcs[i] == zecrc) + return(true); + } + } + } + } + + return(false); +} + +static bool TestMagicCD(std::vector *CDInterfaces) +{ + static const uint8 magic_test[0x20] = { 0x82, 0xB1, 0x82, 0xCC, 0x83, 0x76, 0x83, 0x8D, 0x83, 0x4F, 0x83, 0x89, 0x83, 0x80, 0x82, 0xCC, + 0x92, 0x98, 0x8D, 0xEC, 0x8C, 0xA0, 0x82, 0xCD, 0x8A, 0x94, 0x8E, 0xAE, 0x89, 0xEF, 0x8E, 0xD0 + }; + CDIF *cdiface = (*CDInterfaces)[0]; + uint8 sector_buffer[2048]; + CDUtility::TOC toc; + bool ret = FALSE; + + memset(sector_buffer, 0, sizeof(sector_buffer)); + + cdiface->ReadTOC(&toc); + + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(toc.tracks[track].control & 0x4) + { + if(cdiface->ReadSector(sector_buffer, toc.tracks[track].lba, 1) != 0x1) + break; + + if(!memcmp((char*)sector_buffer, (char *)magic_test, 0x20)) + ret = TRUE; + + // PCE CD BIOS apparently only looks at the first data track. + break; + } + } + + // If it's a PC-FX CD(Battle Heat), return false. + // This is very kludgy. + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(toc.tracks[track].control & 0x4) + { + cdiface->ReadSector(sector_buffer, toc.tracks[track].lba, 1); + if(!strncmp("PC-FX:Hu_CD-ROM", (char*)sector_buffer, strlen("PC-FX:Hu_CD-ROM"))) + { + return(false); + } + } + } + + if(DetectGECD(cdiface)) + ret = true; + + return(ret); +} + +static int LoadCD(std::vector *CDInterfaces) +{ + static const FileExtensionSpecStruct KnownBIOSExtensions[] = + { + { ".pce", gettext_noop("PC Engine ROM Image") }, + { ".bin", gettext_noop("PC Engine ROM Image") }, + { ".bios", gettext_noop("BIOS Image") }, + { NULL, NULL } + }; + md5_context md5; + uint32 headerlen = 0; + + MDFNFILE fp; + + IsHES = 0; + IsSGX = 0; + + LoadCommonPre(); + + const char *bios_sname = DetectGECD((*CDInterfaces)[0]) ? "pce.gecdbios" : "pce.cdbios"; + std::string bios_path = MDFN_MakeFName(MDFNMKF_FIRMWARE, 0, MDFN_GetSettingS(bios_sname).c_str() ); + + if(!fp.Open(bios_path, KnownBIOSExtensions, _("CD BIOS"))) + { + return(0); + } + + if(fp.Size() & 0x200) + headerlen = 512; + + + //md5.starts(); + //md5.update(fp.Data(), fp.Size()); + //md5.update(MDFNGameInfo->MD5, 16); + //md5.finish(MDFNGameInfo->MD5); + + bool disable_bram_cd = MDFN_GetSettingB("pce.disable_bram_cd"); + + if(disable_bram_cd) + MDFN_printf(_("Warning: BRAM is disabled per pcfx.disable_bram_cd setting. This is simulating a malfunction.\n")); + + if(!HuCLoad(fp.Data() + headerlen, fp.Size() - headerlen, 0, disable_bram_cd, PCE_ACEnabled ? SYSCARD_ARCADE : SYSCARD_3)) + { + return(0); + } + + PCE_IsCD = 1; + + if(!PCECD_Init(NULL, PCECDIRQCB, PCE_MASTER_CLOCK, 1, &sbuf[0], &sbuf[1])) + { + HuCClose(); + return(0); + } + + MDFNGameInfo->GameType = GMT_CDROM; + CD_TrayOpen = false; + CD_SelectedDisc = 0; + cdifs = CDInterfaces; + + SCSICD_SetDisc(true, NULL, true); + SCSICD_SetDisc(false, (*CDInterfaces)[0], true); + + + MDFN_printf(_("CD Layout: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + MDFN_printf(_("Arcade Card Emulation: %s\n"), PCE_ACEnabled ? _("Enabled") : _("Disabled")); + + return(LoadCommon()); +} + + +static void CloseGame(void) +{ + if(PCE_IsCD) + { + PCECD_Close(); + } + + if(IsHES) + HES_Close(); + else + { + HuCClose(); + } + + if(vce) + { + delete vce; + vce = NULL; + } + + if(psg) + { + delete psg; + psg = NULL; + } + + if(HuCPU) + { + delete HuCPU; + HuCPU = NULL; + } +} + +static EmulateSpecStruct *es; +static void Emulate(EmulateSpecStruct *espec) +{ + es = espec; + + espec->MasterCycles = 0; + espec->SoundBufSize = 0; + + MDFNMP_ApplyPeriodicCheats(); + + if(espec->VideoFormatChanged) + vce->SetPixelFormat(espec->surface->format); + + if(espec->SoundFormatChanged) + SetSoundRate(espec->SoundRate); + + vce->StartFrame(espec->surface, &espec->DisplayRect, espec->LineWidths, IsHES ? 1 : espec->skip); + + // Begin loop here: + //for(int i = 0; i < 2; i++) + bool rp_rv; + do + { + INPUT_Frame(); + + //vce->RunFrame(espec->surface, &espec->DisplayRect, espec->LineWidths, IsHES ? 1 : espec->skip); + rp_rv = vce->RunPartial(); + + INPUT_FixTS(HuCPU->Timestamp()); + + SubHW_EndFrame(HuCPU->Timestamp()); + + psg->EndFrame(HuCPU->Timestamp() / 3); + + HuC_EndFrame(HuCPU->Timestamp()); + + //assert(!(HuCPU->Timestamp() % 3)); + + if(espec->SoundBuf) + { + int32 new_sc; + + huc_sbuf.end_frame(HuCPU->Timestamp() / 3); + + for(int y = 0; y < 2; y++) + { + sbuf[y].end_frame(HuCPU->Timestamp() / 3); + + new_sc = sbuf[y].read_samples(espec->SoundBuf + espec->SoundBufSize * 2 + y, espec->SoundBufMaxSize - espec->SoundBufSize, 1); + } + + if(huc_sbuf.clear_modified()) + { + + } + else + huc_sbuf.remove_samples(huc_sbuf.samples_avail()); + + espec->SoundBufSize += new_sc; + } + + PCE_TimestampBase += HuCPU->Timestamp(); + espec->MasterCycles += HuCPU->Timestamp(); + + HuCPU->SyncAndResetTimestamp(); + + if(PCE_IsCD) + PCECD_ResetTS(); + + if(!rp_rv) + { + MDFN_MidSync(espec); + } + } while(!rp_rv); + + // End loop here. + //printf("%d\n", vce->GetScanlineNo()); + + if(IsHES) + HES_Update(espec, INPUT_HESHack()); //Draw(espec->skip ? NULL : espec->surface, espec->skip ? NULL : &espec->DisplayRect, espec->SoundBuf, espec->SoundBufSize, INPUT_HESHack()); + +#if 0 + if(espec->SoundRate) + { + unsigned long long crf = (unsigned long long)sbuf[0].clock_rate_factor(sbuf[0].clock_rate()); + double real_rate = (double)crf * sbuf[0].clock_rate() / (1ULL << BLIP_BUFFER_ACCURACY); + + printf("%f\n", real_rate); + } +#endif +} + +void PCE_MidSync(void) +{ + INPUT_Frame(); + + es->MasterCycles = HuCPU->Timestamp(); + + //MDFN_MidSync(es); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(BaseRAM, IsSGX? 32768 : 8192), + SFVAR(PCE_TimestampBase), + + SFVAR(CD_TrayOpen), + SFVAR(CD_SelectedDisc), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + + ret &= HuCPU->StateAction(sm, load, data_only); + ret &= vce->StateAction(sm, load, data_only); + ret &= psg->StateAction(sm, load, data_only); + ret &= INPUT_StateAction(sm, load, data_only); + ret &= HuC_StateAction(sm, load, data_only); + ret &= SubHW_StateAction(sm, load, data_only); + + + if(load) + { + if(cdifs) + { + // Sanity check. + if(CD_SelectedDisc >= (int)cdifs->size()) + CD_SelectedDisc = (int)cdifs->size() - 1; + + SCSICD_SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL, true); + } + } + + return(ret); +} + +void PCE_Power(void) +{ + memset(BaseRAM, 0x00, sizeof(BaseRAM)); + + HuCPU->Power(); + PCE_TimestampBase = 0; + const int32 timestamp = HuCPU->Timestamp(); + + vce->Reset(timestamp); + psg->Power(timestamp); + + if(IsHES) + HES_Reset(); + else + HuC_Power(); + + PCEINPUT_Power(timestamp); + + SubHW_Power(); + + if(PCE_IsCD) + { + vce->SetCDEvent(PCECD_Power(timestamp)); + } +} + +static void CDInsertEject(void) +{ + CD_TrayOpen = !CD_TrayOpen; + + for(unsigned disc = 0; disc < cdifs->size(); disc++) + { + if(!(*cdifs)[disc]->Eject(CD_TrayOpen)) + { + MDFN_DispMessage(_("Eject error.")); + CD_TrayOpen = !CD_TrayOpen; + } + } + + if(CD_TrayOpen) + MDFN_DispMessage(_("Virtual CD Drive Tray Open")); + else + MDFN_DispMessage(_("Virtual CD Drive Tray Closed")); + + SCSICD_SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL); +} + +static void CDEject(void) +{ + if(!CD_TrayOpen) + CDInsertEject(); +} + +static void CDSelect(void) +{ + if(cdifs && CD_TrayOpen) + { + CD_SelectedDisc = (CD_SelectedDisc + 1) % (cdifs->size() + 1); + + if((unsigned)CD_SelectedDisc == cdifs->size()) + CD_SelectedDisc = -1; + + if(CD_SelectedDisc == -1) + MDFN_DispMessage(_("Disc absence selected.")); + else + MDFN_DispMessage(_("Disc %d of %d selected."), CD_SelectedDisc + 1, (int)cdifs->size()); + } +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_RESET: PCE_Power(); break; + case MDFN_MSC_POWER: PCE_Power(); break; + + case MDFN_MSC_INSERT_DISK: + CDInsertEject(); + break; + + case MDFN_MSC_SELECT_DISK: + CDSelect(); + break; + + case MDFN_MSC_EJECT_DISK: + CDEject(); + break; + } +} + +static MDFNSetting PCESettings[] = +{ + { "pce.input.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap(TurboTap) emulation."), NULL, MDFNST_BOOL, "1" }, + + { "pce.slstart", MDFNSF_NOFLAGS, gettext_noop("First rendered scanline."), NULL, MDFNST_UINT, "4", "0", "239" }, + { "pce.slend", MDFNSF_NOFLAGS, gettext_noop("Last rendered scanline."), NULL, MDFNST_UINT, "235", "0", "239" }, + + { "pce.h_overscan", MDFNSF_NOFLAGS, gettext_noop("Show horizontal overscan area."), NULL, MDFNST_BOOL, "0" }, + + { "pce.mouse_sensitivity", MDFNSF_NOFLAGS, gettext_noop("Emulated mouse sensitivity."), NULL, MDFNST_FLOAT, "0.50", NULL, NULL, NULL, PCEINPUT_SettingChanged }, + { "pce.disable_softreset", MDFNSF_NOFLAGS, gettext_noop("If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily."), NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, PCEINPUT_SettingChanged }, + + { "pce.disable_bram_cd", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Disable BRAM(saved game memory) for CD games."), gettext_noop("It is intended for viewing CD games' error screens that may be different from simple BRAM full and uninitialized BRAM error screens, though it can cause the game to crash outright."), MDFNST_BOOL, "0" }, + { "pce.disable_bram_hucard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Disable BRAM(saved game memory) for HuCard games."), gettext_noop("It is intended for changing the behavior(passwords vs save games) of some HuCard games."), MDFNST_BOOL, "0" }, + + { "pce.forcesgx", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Force SuperGrafx emulation."), + gettext_noop("Enabling this option is not necessary to run unrecognized PCE ROM images in SuperGrafx mode, and enabling it is discouraged; ROM images with a file extension of \".sgx\" will automatically enable SuperGrafx emulation."), MDFNST_BOOL, "0" }, + + { "pce.arcadecard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable Arcade Card emulation."), + gettext_noop("Leaving this option enabled is recommended, unless you want to see special warning screens on ACD games, or you prefer the non-enhanced modes of ACD-enhanced SCD games. Additionally, you may want to disable it you you wish to use state rewinding with a SCD ACD-enhanced game on a slow CPU, as the extra 2MiB of RAM the Arcade Card offers is difficult to compress in real-time."), MDFNST_BOOL, "1" }, + + { "pce.nospritelimit", MDFNSF_NOFLAGS, gettext_noop("Remove 16-sprites-per-scanline hardware limit."), + gettext_noop("WARNING: Enabling this option may cause undesirable graphics glitching on some games(such as \"Bloody Wolf\")."), MDFNST_BOOL, "0" }, + + { "pce.cdbios", MDFNSF_EMU_STATE, gettext_noop("Path to the CD BIOS"), NULL, MDFNST_STRING, "syscard3.pce" }, + { "pce.gecdbios", MDFNSF_EMU_STATE, gettext_noop("Path to the GE CD BIOS"), gettext_noop("Games Express CD Card BIOS (Unlicensed)"), MDFNST_STRING, "gecard.pce" }, + + { "pce.adpcmlp", MDFNSF_NOFLAGS, gettext_noop("Enable lowpass filter with rolloff dependent on playback-frequency."), + gettext_noop("This makes ADPCM voices sound less \"harsh\", however, the downside is that it will cause many ADPCM sound effects to sound a bit muffled."), MDFNST_BOOL, "0", NULL, NULL, NULL, CDSettingChanged }, + + { "pce.psgrevision", MDFNSF_NOFLAGS, gettext_noop("Select PSG revision."), gettext_noop("WARNING: HES playback will always use the \"huc6280a\" revision if this setting is set to \"match\", since HES playback is always done with SuperGrafx emulation enabled."), MDFNST_ENUM, "huc6280a", NULL, NULL, NULL, NULL, PSGRevisionList }, + + { "pce.cdpsgvolume", MDFNSF_NOFLAGS, gettext_noop("PSG volume when playing a CD game."), NULL, MDFNST_UINT, "100", "0", "200", NULL, CDSettingChanged }, + { "pce.cddavolume", MDFNSF_NOFLAGS, gettext_noop("CD-DA volume."), NULL, MDFNST_UINT, "100", "0", "200", NULL, CDSettingChanged }, + { "pce.adpcmvolume", MDFNSF_NOFLAGS, gettext_noop("ADPCM volume."), NULL, MDFNST_UINT, "100", "0", "200", NULL, CDSettingChanged }, + + { "pce.vramsize", MDFNSF_NOFLAGS, gettext_noop("Size of emulated VRAM per VDC in 16-bit words. DO NOT CHANGE THIS UNLESS YOU KNOW WTF YOU ARE DOING."), NULL, MDFNST_UINT, "32768", "32768", "65536" }, + { NULL } +}; + +static DECLFR(CheatReadFunc) +{ + std::vector::iterator chit; + uint8 retval = NonCheatPCERead[(A / 8192) & 0xFF](A); + + for(chit = SubCheats[A & 0x7].begin(); chit != SubCheats[A & 0x7].end(); chit++) + { + if(A == chit->addr) + { + if(chit->compare == -1 || chit->compare == retval) + { + retval = chit->value; + break; + } + } + } + return(retval); +} + +static uint8 MemRead(uint32 addr) +{ + return(NonCheatPCERead[(addr / 8192) & 0xFF](addr)); +} + +static void InstallReadPatch(uint32 address) +{ + HuCPU->SetFastRead(address >> 13, NULL); + HuCPU->SetReadHandler(address >> 13, CheatReadFunc); +} + +static void RemoveReadPatches(void) +{ + for(int x = 0; x < 0x100; x++) + HuCPU->SetReadHandler(x, NonCheatPCERead[x]); +} + +static void SetLayerEnableMask(uint64 mask) +{ + vce->SetLayerEnableMask(mask); +} + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".pce", gettext_noop("PC Engine ROM Image") }, + { ".hes", gettext_noop("PC Engine Music Rip") }, + { ".sgx", gettext_noop("SuperGrafx ROM Image") }, + { NULL, NULL } +}; + +static bool SetSoundRate(double rate) +{ + huc_sbuf.set_sample_rate(rate ? rate : 44100, 50); + huc_sbuf.clock_rate((long)(PCE_MASTER_CLOCK / 3)); + huc_sbuf.bass_freq(20); + + for(int y = 0; y < 2; y++) + { + sbuf[y].set_sample_rate(rate ? rate : 44100, 50); + sbuf[y].clock_rate((long)(PCE_MASTER_CLOCK / 3)); + sbuf[y].bass_freq(20); + } + + return(TRUE); +} + +}; + +using namespace MDFN_IEN_PCE; + +MDFNGI EmulatedPCE = +{ + "pce", + "PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + #ifdef WANT_DEBUGGER + &PCEDBGInfo, + #else + NULL, + #endif + &PCEInputInfo, + Load, + TestMagic, + LoadCD, + TestMagicCD, + CloseGame, + SetLayerEnableMask, + NULL, + NULL, + NULL, + InstallReadPatch, + RemoveReadPatches, + MemRead, + false, + StateAction, + Emulate, + PCEINPUT_SetInput, + DoSimpleCommand, + PCESettings, + MDFN_MASTERCLOCK_FIXED(PCE_MASTER_CLOCK), + 0, + TRUE, // Multires possible? + + 0, // lcm_width + 0, // lcm_height + NULL, // Dummy + + 320, // Nominal width + 232, // Nominal height + 1365, // Framebuffer width + 270, // Framebuffer height(TODO: decrease to 264(263 + spillover line)) + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/pce/pce.h b/libmednahawk/src/pce/pce.h new file mode 100644 index 0000000000..27ba5b1b60 --- /dev/null +++ b/libmednahawk/src/pce/pce.h @@ -0,0 +1,35 @@ +#ifndef _PCE_H + +#include "../mednafen.h" +#include "../state.h" +#include "../general.h" + +namespace MDFN_IEN_PCE +{ + +#define PCE_MASTER_CLOCK 21477272.727273 + +#define DECLFR(x) uint8 x (uint32 A) +#define DECLFW(x) void x (uint32 A, uint8 V) + +}; + +#include "huc6280/huc6280.h" + +namespace MDFN_IEN_PCE +{ +extern HuC6280 *HuCPU; + +extern uint32 PCE_InDebug; +extern bool PCE_ACEnabled; // Arcade Card emulation enabled? +void PCE_Power(void); + +void PCE_MidSync(void); + +uint8 PCE_PeekMainRAM(uint32 A); +void PCE_PokeMainRAM(uint32 A, uint8 V); + +}; + +#define _PCE_H +#endif diff --git a/libmednahawk/src/pce/subhw.cpp b/libmednahawk/src/pce/subhw.cpp new file mode 100644 index 0000000000..de9277f08c --- /dev/null +++ b/libmednahawk/src/pce/subhw.cpp @@ -0,0 +1,565 @@ +#include "pce.h" +#include "c68k/c68k.h" + +static inline uint8 READ8_MSB(const uint8 *base, const unsigned int addr) +{ + return(base[addr + 0]); +} + +static inline uint16 READ16_MSB(const uint8 *base, const unsigned int addr) +{ + return((base[addr + 0] << 8) | (base[addr + 1] << 0)); +} + +static inline void WRITE8_MSB(uint8 *base, const unsigned int addr, const uint8 value) +{ + base[addr + 0] = value; +} + +static inline void WRITE16_MSB(uint8 *base, const unsigned int addr, const uint16 value) +{ + base[addr + 0] = value >> 8; + base[addr + 1] = value; +} + +namespace MDFN_IEN_PCE +{ + +static const uint8 VROM[8] = { 0x47, 0x6E, 0x31, 0x14, 0xB3, 0xEB, 0xEC, 0x2B }; +static uint8 VROM_Index; +static bool HuVisible; + + +static uint8 ExHuRAM[8192]; +static uint8 *BigRAM = NULL; +static uint8 *FBRAM[2] = { NULL, NULL }; +static uint16 PalRAM[0x100]; + +static uint32 BigRAMWOTemp, BigRAMWO; + +static uint8 CommPort[4]; + +static bool HuBigMaster; +static bool M68KResetPending; +//static bool M68KIntPending; +static bool OverlayEnabled; + +static bool CurDisplayFB; +static bool FBSwapPending; +static uint8 VSyncCounter; +static uint32 DisplayScanline; + +static uint32 AutoClearAddr; +static int32 AutoClearCount; + +static c68k_struc M68K; +static uint8 M68K_ReadMemory8(uint32 A); +static uint16 M68K_ReadMemory16(uint32 A); +static void M68K_WriteMemory8(uint32 A, uint8 V); +static void M68K_WriteMemory16(uint32 A, uint16 V); + +static int32 lastts; +static int32 M68K_cycle_counter; + +static void AllocSubHWMem(void) +{ + if(!BigRAM) + BigRAM = (uint8 *)MDFN_calloc(1 << 20, 1, "BIG RAM RAM"); + + if(!FBRAM[0]) + FBRAM[0] = (uint8 *)MDFN_calloc(65536, 1, "FB RAM"); + + if(!FBRAM[1]) + FBRAM[1] = (uint8 *)MDFN_calloc(65536, 1, "FB RAM"); + + memset(FBRAM[0], 0xFF, 65536); + memset(FBRAM[1], 0xFF, 65536); +} + +static void FreeSubHWMem(void) +{ + if(BigRAM) + { + MDFN_free(BigRAM); + BigRAM = NULL; + } + + if(FBRAM[0]) + { + MDFN_free(FBRAM[0]); + FBRAM[0] = NULL; + } + + if(FBRAM[1]) + { + MDFN_free(FBRAM[1]); + FBRAM[1] = NULL; + } +} + + +#if 0 +#include + +static uint16_t dis_callb(uint32_t A, void *private_data) +{ + //printf("%04x\n", M68K_ReadMemory16(A & 0xFFFFFF)); + return(M68K_ReadMemory16(A & 0xFFFFFF)); +} +#endif + +static void UpdateM68K(const int32 timestamp) +{ + int32 hucycles = timestamp - lastts; + lastts = timestamp; + + if(HuBigMaster) + return; + + if(M68KResetPending) + { + M68KResetPending = false; + C68k_Reset(&M68K); + } + + M68K_cycle_counter += hucycles; + + while(M68K_cycle_counter > 0) + { +#if 0 + char TextBuf[256]; + DESA68parm_t d; + strcpy(TextBuf, "Invalid"); + memset(&d, 0, sizeof(DESA68parm_t)); + + d.mem_callb = dis_callb; + d.memmsk = 0xFFFFFF; + d.pc = M68K.PC; + d.str = TextBuf; + d.strmax = 255; // FIXME, MDFN API change + + desa68(&d); + printf("%08x: %s\n", M68K.PC, TextBuf); +#endif + //M68K_cycle_counter -= C68k_Exec(&M68K) * 2; + M68K.timestamp = 0; + C68k_Exec(&M68K); + M68K_cycle_counter -= M68K.timestamp * 2; + } +} + +void SubHW_EndFrame(const int32 timestamp) +{ + UpdateM68K(timestamp); + lastts = 0; +} + + +static int M68K_Int_Ack_Callback(int level) +{ + return C68K_INT_ACK_AUTOVECTOR; +} + +void SubHW_Init(void) +{ + C68k_Init(&M68K, M68K_Int_Ack_Callback); + + C68k_Set_ReadB(&M68K, M68K_ReadMemory8); + C68k_Set_ReadW(&M68K, M68K_ReadMemory16); + + C68k_Set_WriteB(&M68K, M68K_WriteMemory8); + C68k_Set_WriteW(&M68K, M68K_WriteMemory16); +} + +void SubHW_Kill(void) +{ + FreeSubHWMem(); + + if(BigRAM) + { + MDFN_free(BigRAM); + BigRAM = NULL; + } + + if(FBRAM[0]) + { + MDFN_free(FBRAM[0]); + FBRAM[0] = NULL; + } + + if(FBRAM[1]) + { + MDFN_free(FBRAM[1]); + FBRAM[1] = NULL; + } +} + +static INLINE uint16 M68K_ReadIO(uint32 A) +{ + if(A & 0x100) + { + uint16 ret = (FBSwapPending << 15) | ((AutoClearCount > 0) ? 0x4000 : 0) | VSyncCounter; + + //printf("Moo: %04x\n", ret); + + return(ret); + } + else + { + return(CommPort[(A >> 1) & 0x3]); + } +} + +static INLINE void M68K_WriteIO(uint32 A, uint16 V) +{ + if(A & 0x100) + { + if(V & 0x100) + C68k_Set_IRQ(&M68K, 0); + OverlayEnabled = (bool)(V & 0x2); + FBSwapPending |= (bool)(V & 0x1); + } + else + { + CommPort[(A >> 1) & 0x3] = V; + } +} + + +static uint8 M68K_ReadMemory8(uint32 A) +{ + switch((A >> 20) & 0xF) + { + default: return(0xFF); + + case 0x0: + return READ8_MSB(BigRAM, A & 0x7FFFF); + + case 0x4: + return M68K_ReadIO(A); + } +} + +static uint16 M68K_ReadMemory16(uint32 A) +{ + //printf("Read16: %08x\n", A); + switch((A >> 20) & 0xF) + { + default: return(0xFFFF); + + case 0x0 ... 0x3: + return READ16_MSB(BigRAM, A & 0x7FFFF); + + case 0x4: + return M68K_ReadIO(A); + } +} + +static void M68K_WriteMemory8(uint32 A, uint8 V) +{ + //printf("Write8 %08x %02x\n", A, V); + switch((A >> 20) & 0xF) + { + default: break; + + case 0x0: + WRITE8_MSB(BigRAM, A & 0x7FFFF, V); + break; + + case 0x1: + if(AutoClearCount > 0) + { + puts("Write during autoclear"); + return; + } + { + uint16 fba = A & 0xFFFF; + + if(A & 0x10000) + fba = (fba << 8) | (fba >> 8); + + if(V) + FBRAM[CurDisplayFB ^ 1][fba] = V; + } + break; + + case 0x4: + M68K_WriteIO(A, V); + break; + } +} +static void M68K_WriteMemory16(uint32 A, uint16 V) +{ + //printf("Write16 %08x %02x\n", A, V); + switch((A >> 20) & 0xF) + { + default: break; + + case 0x0: + WRITE16_MSB(BigRAM, A & 0x7FFFF, V); + break; + + case 0x1: + if(AutoClearCount > 0) + { + puts("Write during autoclear"); + return; + } + + { + uint16 fba = A & 0xFFFF; + + if(A & 0x10000) + fba = (fba << 8) | (fba >> 8); + + if(V & 0xFF00) + FBRAM[CurDisplayFB ^ 1][(fba + 0) & 0xFFFF] = V >> 8; + if(V & 0x00FF) + FBRAM[CurDisplayFB ^ 1][(fba + 1) & 0xFFFF] = V >> 0; + } + break; + + case 0x2: + PalRAM[(A >> 1) & 0xFF] = V; + break; + + case 0x4: + M68K_WriteIO(A, V); + break; + } +} + +void SubHW_WriteIOPage(uint32 A, uint8 V) +{ + if(!HuVisible) + { + if(VROM[VROM_Index] == V) + VROM_Index++; + else + VROM_Index = 0; + + if(VROM_Index == 8) + { + printf("Overlay hardware enabled."); + MDFN_DispMessage("Overlay hardware enabled."); + HuVisible = true; + + AllocSubHWMem(); + } + return; + } + + switch(A & 0x1FFF) + { + case 0x1C00 ... 0x1FEF: + ExHuRAM[A & 0x1FFF] = V; + break; + + case 0x1FF0 ... 0x1FF3: + UpdateM68K(HuCPU->Timestamp()); + CommPort[A & 0x3] = V; + break; + + case 0x1FF4: + BigRAMWOTemp &= 0xFF00; + BigRAMWOTemp |= V; + break; + + case 0x1FF5: + BigRAMWOTemp &= 0x00FF; + BigRAMWOTemp |= V << 8; + BigRAMWO = BigRAMWOTemp << 4; + break; + + case 0x1FF6: + if(HuBigMaster) + { + //printf("BIG: %08x %02x\n", BigRAMWO, V); + BigRAM[BigRAMWO] = V; + BigRAMWO = (BigRAMWO + 1) & ((1 << 20) - 1); + } + break; + + case 0x1FF7: + UpdateM68K(HuCPU->Timestamp()); + HuBigMaster = V & 0x01; + M68KResetPending |= (bool)(V & 0x02); + C68k_Set_IRQ(&M68K, (bool)(V & 0x04)); + //M68KIntPending |= (bool)(V & 0x04); + OverlayEnabled = (bool)(V & 0x80); + break; + } +} + +uint8 SubHW_ReadIOPage(uint32 A) +{ + if(!HuVisible) + return(0xFF); + + switch(A & 0x1FFF) + { + case 0x1C00 ... 0x1FEF: + return ExHuRAM[A & 0x1FFF]; + break; + + case 0x1FF0 ... 0x1FF3: + UpdateM68K(HuCPU->Timestamp()); + return CommPort[A & 0x3]; + break; + } + + return(0xFF); +} + +DECLFW(SubHW_WriteFEPage) +{ + if(!HuVisible) + return; + + ExHuRAM[A & 0x1FFF] = V; +} + +DECLFR(SubHW_ReadFEPage) +{ + if(!HuVisible) + return(0xFF); + + return(ExHuRAM[A & 0x1FFF]); +} + +void SubHW_CVSync(void) +{ + if(!HuVisible) + return; + + UpdateM68K(HuCPU->Timestamp()); + + if(FBSwapPending) + { + FBSwapPending = false; + CurDisplayFB = !CurDisplayFB; + + AutoClearAddr = 0; + AutoClearCount = 65536; + } + VSyncCounter++; + DisplayScanline = 0; +} + +bool SubHW_DisplayLine(uint16 *out_buffer) +{ + if(!HuVisible) + return(false); + + UpdateM68K(HuCPU->Timestamp()); + + if(OverlayEnabled) + for(int x = 0; x < 256; x++) + out_buffer[x] = PalRAM[FBRAM[CurDisplayFB][(((DisplayScanline - 17) & 0xFF) << 8) | x]]; + + DisplayScanline++; + + for(int i = 0; i < 683; i++) + { + if(AutoClearCount <= 0) + break; + + FBRAM[CurDisplayFB ^ 1][AutoClearAddr++] = 0; + AutoClearCount--; + } + + return(OverlayEnabled); +} + +void SubHW_Power(void) +{ + memset(ExHuRAM, 0xFF, sizeof(ExHuRAM)); + + HuVisible = false; + VROM_Index = 0; + HuBigMaster = true; + M68KResetPending = true; + //M68KIntPending = false; + C68k_Set_IRQ(&M68K, 0); + + OverlayEnabled = false; + + CurDisplayFB = 0; + FBSwapPending = false; + VSyncCounter = 0; + + AutoClearAddr = 0; + AutoClearCount = 0; + + CommPort[0] = 0xFF; + CommPort[1] = 0xFF; + CommPort[2] = 0xFF; + CommPort[3] = 0xFF; +} + +int SubHW_StateAction(StateMem *sm, int load, int data_only) +{ + int ret; + + SFORMAT VisibleStateRegs[] = + { + SFVAR(HuVisible), + SFEND + }; + + // Since "SubHWV" section is optional, we need to default to not being visible if the section isn't there. + if(load) + HuVisible = false; + + ret = MDFNSS_StateAction(sm, load, data_only, VisibleStateRegs, "SubHWV", true); + + if(HuVisible) + { + unsigned int c68k_state_len = C68k_Get_State_Max_Len(); + uint8 c68k_state[c68k_state_len]; + + C68k_Save_State(&M68K, c68k_state); + + SFORMAT StateRegs[] = + { + SFVAR(VROM_Index), + SFARRAY(ExHuRAM, 8192), + SFARRAY(BigRAM, 1 << 20), + SFARRAY(FBRAM[0], 65536), + SFARRAY(FBRAM[1], 65536), + SFARRAY16(PalRAM, 0x100), + SFVAR(BigRAMWOTemp), + SFVAR(BigRAMWO), + SFARRAY(CommPort, 4), + SFVAR(HuBigMaster), + SFVAR(M68KResetPending), + SFVAR(OverlayEnabled), + SFVAR(CurDisplayFB), + SFVAR(FBSwapPending), + SFVAR(VSyncCounter), + SFVAR(DisplayScanline), + SFVAR(AutoClearAddr), + SFVAR(AutoClearCount), + + SFARRAY(c68k_state, c68k_state_len), + SFEND + }; + AllocSubHWMem(); + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "SubHW"); + if(load) + { + C68k_Load_State(&M68K, c68k_state); + } + } + else + { + FreeSubHWMem(); + } + + + return(ret); +} + + +} diff --git a/libmednahawk/src/pce/subhw.h b/libmednahawk/src/pce/subhw.h new file mode 100644 index 0000000000..71f230f590 --- /dev/null +++ b/libmednahawk/src/pce/subhw.h @@ -0,0 +1,19 @@ +namespace MDFN_IEN_PCE +{ +void SubHW_Init(void); +void SubHW_Kill(void); + +void SubHW_WriteIOPage(uint32 A, uint8 V); +uint8 SubHW_ReadIOPage(uint32 A); + +DECLFW(SubHW_WriteFEPage); +DECLFR(SubHW_ReadFEPage); + +void SubHW_Power(void); + +void SubHW_EndFrame(const int32 timestamp); +void SubHW_CVSync(void); +bool SubHW_DisplayLine(uint16 *out_buffer); + +int SubHW_StateAction(StateMem *sm, int load, int data_only); +} diff --git a/libmednahawk/src/pce/tsushin.cpp b/libmednahawk/src/pce/tsushin.cpp new file mode 100644 index 0000000000..405b37a4a8 --- /dev/null +++ b/libmednahawk/src/pce/tsushin.cpp @@ -0,0 +1,53 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#include "pce.h" + +namespace MDFN_IEN_PCE +{ + +/* + Startup: + 0x80 -> $1830 + 0x40 -> $1823 + 0x50 -> $1823 + 0x02 -> $1821 + 0x40 -> $1823 + + Read from $1822 16 times, expecting (return value & 0xC0) == 0x80 each time + + 0x50 -> $1823 + 0x01 -> $1821 + 0x40 -> $1823 + 0x04 -> $1822 + +*/ + +DECLFR(PCE_TsushinRead) +{ + //printf("Read: %04x, %04x\n", A, HuCPU.PC); + + return(0x80); +} + +DECLFW(PCE_TsushinWrite) +{ + //printf("Write: %04x %02x, %04x\n", A, V, HuCPU.PC); +} + +}; diff --git a/libmednahawk/src/pce/tsushin.h b/libmednahawk/src/pce/tsushin.h new file mode 100644 index 0000000000..531cf2d1cf --- /dev/null +++ b/libmednahawk/src/pce/tsushin.h @@ -0,0 +1,12 @@ +#ifndef __PCE_TSUSHIN_H +#define __PCE_TSUSHIN_H + +namespace MDFN_IEN_PCE +{ + +DECLFR(PCE_TsushinRead); +DECLFW(PCE_TsushinWrite); + +}; + +#endif diff --git a/libmednahawk/src/pce/vce.cpp b/libmednahawk/src/pce/vce.cpp new file mode 100644 index 0000000000..8d96f19c7a --- /dev/null +++ b/libmednahawk/src/pce/vce.cpp @@ -0,0 +1,843 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* VCE and VPC emulation */ + +/* +<_Ki> So here is what I found today: the /Hblank signal is not affected (at all) by VCE's dot clock selection. + It seems to be completely fixed; /HBlank-L-period = 237 x master clock cycles, and /HBlank-H-period = 1128, and + that makes h-period = 1365 x master clock cycles as a whole. +*/ + +#include "pce.h" +#include "huc.h" +#include +#include "../video.h" +#include "vce.h" +#include "huc6270/vdc.h" +#include "debug.h" +#include "subhw.h" +#include "../cdrom/pcecd.h" +#include + +namespace MDFN_IEN_PCE +{ + +#define SUPERDUPERMODE 0 + +static const int vce_ratios[4] = { 4, 3, 2, 2 }; + +static void IRQChange_Hook(bool newstatus) +{ + extern VCE *vce; //HORRIBLE + vce->IRQChangeCheck(); +} + +bool VCE::WS_Hook(int32 vdc_cycles) +{ + bool ret = true; + int32 to_steal; + + if(vdc_cycles == -1) // Special event-based wait-stating + to_steal = CalcNextEvent(); + else + to_steal = ((vdc_cycles * dot_clock_ratio - clock_divider) + 2) / 3; + + if(to_steal <= 0) // This should never happen. But in case it does... + { + printf("Bad steal: %d; Wanted VDC: %d; Dot clock ratio: %d; Clock divider: %d\n", to_steal, vdc_cycles, dot_clock_ratio, clock_divider); + to_steal = 1; + } + + if((to_steal + ws_counter) > 455 * 64) + { + printf("WS Over: Wanted: %d, could: %d\n", to_steal, 455 * 64 - ws_counter); + to_steal = 455 * 64 - ws_counter; + + if(to_steal < 0) + to_steal = 0; + + ret = FALSE; + } + + if(to_steal > 0) + { + HuCPU->StealCycles(to_steal); + ws_counter += to_steal; + } + + return(ret); +} + +static bool WS_Hook(int32 vdc_cycles) +{ + extern VCE *vce; + + return(vce->WS_Hook(vdc_cycles)); +} + +void VCE::IRQChangeCheck(void) +{ + bool irqtmp = 0; + + for(int chip = 0; chip < chip_count; chip++) + irqtmp |= vdc[chip]->PeekIRQ(); + + if(irqtmp) + HuCPU->IRQBegin(HuC6280::IQIRQ1); + else + HuCPU->IRQEnd(HuC6280::IQIRQ1); +} + +void VCE::SetShowHorizOS(bool show) +{ + ShowHorizOS = show; +} + + +VCE::VCE(bool want_sgfx, bool nospritelimit) +{ + ShowHorizOS = false; + + sgfx = want_sgfx; + chip_count = sgfx ? 2 : 1; + + cd_event = 1; + + fb = NULL; + pitch32 = 0; + RunHook = NULL; + HBlankHook = NULL; + VBlankHook = NULL; + + vdc[0] = vdc[1] = NULL; + for(int chip = 0; chip < chip_count; chip++) + { + vdc[chip] = new VDC(nospritelimit, MDFN_GetSettingUI("pce.vramsize")); + vdc[chip]->SetIRQHook(IRQChange_Hook); + vdc[chip]->SetWSHook(MDFN_IEN_PCE::WS_Hook); + } + + CustomColorMap = NULL; + CustomColorMapLen = 0; + + memset(systemColorMap32, 0, sizeof(systemColorMap32)); + memset(bw_systemColorMap32, 0, sizeof(bw_systemColorMap32)); + + #ifdef WANT_DEBUGGER + GfxDecode_Buf = NULL; + GfxDecode_Line = -1; + GfxDecode_Layer = 0; + GfxDecode_Scroll = 0; + GfxDecode_Pbn = 0; + #endif + + + SetShowHorizOS(false); +} + +VCE::~VCE() +{ + for(int chip = 0; chip < chip_count; chip++) + delete vdc[chip]; +} + +void VCE::Reset(const int32 timestamp) +{ + last_ts = 0; + + pixel_offset = 0; + dot_clock = 0; + dot_clock_ratio = vce_ratios[dot_clock]; + clock_divider = 0; + + ws_counter = 0; + scanline = 0; + scanline_out_ptr = NULL; + CR = 0; + lc263 = 0; + bw = 0; + + memset(color_table, 0, sizeof(color_table)); + memset(color_table_cache, 0, sizeof(color_table_cache)); + + ctaddress = 0; + + hblank = 1; + vblank = 1; + + NeedSLReset = false; + + hblank_counter = 237; + vblank_counter = 4095 + 30; + + for(int chip = 0; chip < chip_count; chip++) + child_event[chip] = vdc[chip]->Reset(); + + // SuperGrafx VPC init + priority[0] = 0x11; + priority[1] = 0x11; + winwidths[0] = 0; + winwidths[1] = 0; + st_mode = 0; + window_counter[0] = 0x40; + window_counter[1] = 0x40; + + if(fb) + scanline_out_ptr = &fb[scanline * pitch32]; + + /// + // + // + SubTValid = false; +} + +static MDFN_Rect *LW; + +static bool skipframe; + +/* + Note: If we're skipping the frame, don't write to the data behind the pXBuf, DisplayRect, and LineWidths + pointers at all. There's no need to, and HES playback depends on these structures being left alone; if they're not, + there will be graphics distortion, and maybe memory corruption. +*/ + +void VCE::StartFrame(MDFN_Surface *surface, MDFN_Rect *DisplayRect, MDFN_Rect *LineWidths, int skip) +{ + uint32 *pXBuf = surface->pixels; + + FrameDone = false; + + //printf("Clock divider: %d\n", clock_divider); + + color_table_cache[0x200] = color_table_cache[0x300] = surface->format.MakeColor(0x00, 0xFE, 0x00); + + if(!skip) + { + DisplayRect->x = 0; + DisplayRect->w = 1365; + DisplayRect->y = 0 + 14; + DisplayRect->h = 240; //263 - 14; + + DisplayRect->y = 14 + MDFN_GetSettingUI("pce.slstart"); + DisplayRect->h = MDFN_GetSettingUI("pce.slend") - MDFN_GetSettingUI("pce.slstart") + 1; + + for(int y = 0; y < 263; y++) + LineWidths[y].w = 0; + + pitch32 = surface->pitch32; + fb = pXBuf; + LW = LineWidths; + scanline_out_ptr = &fb[scanline * pitch32]; + } + else + { + pitch32 = 0; + fb = NULL; + LW = NULL; + scanline_out_ptr = NULL; + } + + skipframe = skip; +} + +bool VCE::RunPartial(void) +{ + HuCPU->SetEventHandler(this); + + if(!PCE_IsCD) + cd_event = 0x3FFFFFFF; + + ws_counter = 0; + HuCPU->Run(); + + if(!skipframe) + { + MDFN_Rect LW_Fix; + + // Worst-case fallback + LW_Fix.x = 0; + LW_Fix.w = 256; + LW_Fix.y = 0; + LW_Fix.h = 0; + + for(int y = 0; y < 263; y++) + { + if(LW[y].w) + { + LW_Fix = LW[y]; + break; + } + } + + for(int y = 0; y < 263; y++) + { + if(!LW[y].w) + LW[y] = LW_Fix; + } + + } + + if(PCE_IsCD) + SetCDEvent(PCECD_Run(HuCPU->Timestamp())); + + HuCPU->SetEvent(Sync(HuCPU->Timestamp())); + + last_ts = 0; + + return(FrameDone); +} + +// If we ignore the return value of Sync(), we must do "HuCPU->SetEvent(CalcNextEvent());" +// before the function(read/write functions) that called Sync() return! +int32 VCE::Sync(const int32 timestamp) +{ + int32 clocks = timestamp - last_ts; + + cd_event -= clocks; + if(cd_event <= 0) + cd_event = PCECD_Run(timestamp); + + + if(sgfx) + { + #define VCE_SGFX_MODE 1 + #include "vce_sync.inc" + #undef VCE_SGFX_MODE + } + else + { + #include "vce_sync.inc" + } + + int32 ret = CalcNextEvent(); + + last_ts = timestamp; + + return(ret); +} + +void VCE::FixPCache(int entry) +{ + uint32 *cm32 = bw ? bw_systemColorMap32 : systemColorMap32; + + if(!(entry & 0xFF)) + { + for(int x = 0; x < 16; x++) + color_table_cache[(entry & 0x100) + (x << 4)] = cm32[color_table[entry & 0x100]]; + } + if(!(entry & 0xF)) + return; + + color_table_cache[entry] = cm32[color_table[entry]]; +} + +void VCE::SetVCECR(uint8 V) +{ + if(((V & 0x80) >> 7) != bw) + { + bw = V & 0x80; + for(int x = 0; x < 512; x++) + FixPCache(x); + } + + lc263 = (V & 0x04); + + #if 0 + int new_dot_clock = V & 1; + if(V & 2) + new_dot_clock = 2; + + dot_clock = new_dot_clock; + #endif + + dot_clock = V & 0x3; + if(dot_clock == 3) // Remove this once we determine any relevant differences between 2 and 3. + dot_clock = 2; + + dot_clock_ratio = vce_ratios[dot_clock]; + + CR = V; +} + +void VCE::SetPixelFormat(const MDFN_PixelFormat &format) +{ + for(int x = 0; x < 512; x++) + { + int r, g, b; + int sc_r, sc_g, sc_b; + + if(CustomColorMap) + { + r = CustomColorMap[x * 3 + 0]; + g = CustomColorMap[x * 3 + 1]; + b = CustomColorMap[x * 3 + 2]; + } + else + { + b = 36 * (x & 0x007); + r = 36 * ((x & 0x038) >> 3); + g = 36 * ((x & 0x1c0) >> 6); + } + + if(CustomColorMap && CustomColorMapLen == 1024) + { + sc_r = CustomColorMap[(512 + x) * 3 + 0]; + sc_g = CustomColorMap[(512 + x) * 3 + 1]; + sc_b = CustomColorMap[(512 + x) * 3 + 2]; + } + else + { + double y; + + y = round(0.300 * r + 0.589 * g + 0.111 * b); + + if(y < 0) + y = 0; + + if(y > 255) + y = 255; + + sc_r = sc_g = sc_b = y; + } + + systemColorMap32[x] = format.MakeColor(r, g, b); + bw_systemColorMap32[x] = format.MakeColor(sc_r, sc_g, sc_b); + } + + // I know the temptation is there, but don't combine these two loops just + // because they loop 512 times ;) + for(int x = 0; x < 512; x++) + FixPCache(x); + + // + // Make the subtitle overlay LUT + // + for(int n = 0; n < 4096; n++) + { +#if 0 + float y = (float)((n >> 8) & 0xF) / 15; + float i = (float)((n >> 4) & 0xF) / 16; + float q = (float)((n >> 0) & 0xF) / 16; + int r, g, b; + + i *= 1.1914; + q *= 1.0452; + + i -= 0.5957; + q -= 0.5226; + + r = 255 * (y + (0.9563 * i) + (0.6210 * q)); + g = 255 * (y + (-0.2721 * i) + (-0.6474 * q)); + b = 255 * (y + (-1.1070 * i) + (1.7046 * q)); + if(r < 0) r = 0; if(r > 255) r = 255; + if(g < 0) g = 0; if(g > 255) g = 255; + if(b < 0) b = 0; if(b > 255) b = 255; +#else + int r, g, b; + + r = ((n >> 8) & 0xF) * 17; + g = ((n >> 4) & 0xF) * 17; + b = ((n >> 0) & 0xF) * 17; +#endif + SubTLUT[n] = format.MakeColor(r, g, b); + } +} + +bool VCE::SetCustomColorMap(const uint8 *triplets, const uint32 count) +{ + assert(count == 512 || count == 1024); + assert(triplets); + + if(!(CustomColorMap = (uint8*)MDFN_malloc(count * 3, _("custom color map")))) + return(FALSE); + + CustomColorMapLen = count; + + memcpy(CustomColorMap, triplets, 3 * count); + + return(TRUE); +} + +uint8 VCE::Read(uint32 A) +{ + uint8 ret = 0xFF; + + if(!PCE_InDebug) + Sync(HuCPU->Timestamp()); + + switch(A & 0x7) + { + case 4: ret = color_table[ctaddress & 0x1FF]; + break; + + case 5: ret = color_table[ctaddress & 0x1FF] >> 8; + ret &= 1; + ret |= 0xFE; + if(!PCE_InDebug) + ctaddress++; + break; + } + + if(!PCE_InDebug) + HuCPU->SetEvent(CalcNextEvent()); + + return(ret); +} + +void VCE::Write(uint32 A, uint8 V) +{ + Sync(HuCPU->Timestamp()); + + //printf("VCE Write(vce scanline=%d, HuCPU.timestamp=%d): %04x %02x\n", scanline, HuCPU.timestamp, A, V); + switch(A&0x7) + { + case 0: + { + int old_dot_clock = dot_clock; + + SetVCECR(V); + + if(old_dot_clock != dot_clock) // FIXME, this is wrong. A total fix will require changing the meaning + // of clock_divider variable. + { + clock_divider = 0; + } + } + break; + + case 2: ctaddress &= 0x100; ctaddress |= V; break; + case 3: ctaddress &= 0x0FF; ctaddress |= (V & 1) << 8; break; + case 4: color_table[ctaddress & 0x1FF] &= 0x100; + color_table[ctaddress & 0x1FF] |= V; + FixPCache(ctaddress & 0x1FF); + break; + case 5: color_table[ctaddress & 0x1FF] &= 0xFF; + color_table[ctaddress & 0x1FF] |= (V & 1) << 8; + FixPCache(ctaddress & 0x1FF); + ctaddress++; + break; + } + + HuCPU->SetEvent(CalcNextEvent()); +} + +uint8 VCE::ReadVDC(uint32 A) +{ + uint8 ret; + + if(!PCE_InDebug) + Sync(HuCPU->Timestamp()); + + if(!sgfx) + { + ret = vdc[0]->Read(A, child_event[0], PCE_InDebug); + } + else + { + int chip = 0; + + A &= 0x1F; + + if(A & 0x8) + { + ret = 0; + + switch(A) + { + case 0x8: ret = priority[0]; break; + case 0x9: ret = priority[1]; break; + case 0xA: ret = winwidths[0]; break; + case 0xB: ret = winwidths[0] >> 8; break; + case 0xC: ret = winwidths[1]; break; + case 0xD: ret = winwidths[1] >> 8; break; + case 0xE: ret = 0; break; + } + } + else + { + chip = (A & 0x10) >> 4; + ret = vdc[chip]->Read(A & 0x3, child_event[chip], PCE_InDebug); + } + } + + if(!PCE_InDebug) + HuCPU->SetEvent(CalcNextEvent()); + + return(ret); +} + +void VCE::WriteVDC(uint32 A, uint8 V) +{ + Sync(HuCPU->Timestamp()); + + if(!sgfx) + { + vdc[0]->Write(A & 0x1FFF, V, child_event[0]); + } + else + { + int chip = 0; + + // For ST0/ST1/ST2 + A |= ((A >> 31) & st_mode) << 4; + + A &= 0x1F; + + if(A & 0x8) + { + switch(A) + { + case 0x8: priority[0] = V; break; + case 0x9: priority[1] = V; break; + case 0xA: winwidths[0] &= 0x300; winwidths[0] |= V; break; + case 0xB: winwidths[0] &= 0x0FF; winwidths[0] |= (V & 3) << 8; break; + case 0xC: winwidths[1] &= 0x300; winwidths[1] |= V; break; + case 0xD: winwidths[1] &= 0x0FF; winwidths[1] |= (V & 3) << 8; break; + case 0xE: st_mode = V & 1; break; + } + } + else + { + chip = (A & 0x10) >> 4; + vdc[chip]->Write(A & 0x3, V, child_event[chip]); + } + } + + HuCPU->SetEvent(CalcNextEvent()); +} + +void VCE::WriteVDC_ST(uint32 A, uint8 V) +{ + Sync(HuCPU->Timestamp()); + + if(!sgfx) + { + vdc[0]->Write(A, V, child_event[0]); + } + else + { + int chip = st_mode & 1; + vdc[chip]->Write(A, V, child_event[chip]); + } + + HuCPU->SetEvent(CalcNextEvent()); +} + +void VCE::SetLayerEnableMask(uint64 mask) +{ + for(unsigned chip = 0; chip < (unsigned)chip_count; chip++) + { + vdc[chip]->SetLayerEnableMask((mask >> (chip * 2)) & 0x3); + } +} + +int VCE::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT VCE_StateRegs[] = + { + SFVARN(CR, "VCECR"), + + SFVAR(ws_counter), + + SFVARN(ctaddress, "ctaddress"), + SFARRAY16N(color_table, 0x200, "color_table"), + + SFVARN(clock_divider, "clock_divider"), + SFARRAY32N(child_event, 2, "child_event"), + SFVARN(scanline, "scanline"), + SFVARN(pixel_offset, "pixel_offset"), + SFVARN(hblank_counter, "hblank_counter"), + SFVARN(vblank_counter, "vblank_counter"), + SFVAR(hblank), + SFVAR(vblank), + SFVAR(NeedSLReset), + + SFVAR(last_ts), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, VCE_StateRegs, "VCE"); + + if(sgfx) + { + SFORMAT VPC_StateRegs[] = + { + SFARRAYN(priority, 2, "priority"), + SFARRAY16N(winwidths, 2, "winwidths"), + SFVARN(st_mode, "st_mode"), + SFARRAY32N(window_counter, 2, "window_counter"), + SFEND + }; + + ret &= MDFNSS_StateAction(sm, load, data_only, VPC_StateRegs, "VPC"); + } + + if(load) + { + // TODO/FIXME: Integrity checks to prevent buffer overflows. + SetVCECR(CR); + for(int x = 0; x < 512; x++) + FixPCache(x); + } + + for(int chip = 0; chip < chip_count; chip++) + ret &= vdc[chip]->StateAction(sm, load, data_only, chip ? "VDCB" : "VDC"); + + return(ret); +} + + +#ifdef WANT_DEBUGGER + +uint32 VCE::GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 value = 0xDEADBEEF; + + switch(id) + { + case GSREG_CR: + value = CR; + if(special) + { + trio_snprintf(special, special_len, "Clock: %.2fMHz, %d lines/frame, Strip colorburst: %s", + round(PCE_MASTER_CLOCK / 1e4 / vce_ratios[(value & 0x3) &~ ((value & 0x2) >> 1)]) / 100, + (value & 0x04) ? 263 : 262, + (value & 0x80) ? "On" : "Off"); + } + break; + + case GSREG_CTA: + value = ctaddress; + break; + + case GSREG_SCANLINE: + value = scanline; + break; + + // VPC: + case GSREG_ST_MODE: + value = st_mode; + break; + + case GSREG_WINDOW_WIDTH_0: + case GSREG_WINDOW_WIDTH_1: + value = winwidths[id - GSREG_WINDOW_WIDTH_0]; + if(special) + { + trio_snprintf(special, special_len, "Window width: %d%s", value - 0x40, (value <= 0x40) ? "(window disabled)" : ""); + } + break; + + case GSREG_PRIORITY_0: + case GSREG_PRIORITY_1: + value = priority[id - GSREG_PRIORITY_0]; + break; + } + return(value); +} + +void VCE::SetRegister(const unsigned int id, const uint32 value) +{ + switch(id) + { + case GSREG_CR: + SetVCECR(value); + break; + + case GSREG_CTA: + ctaddress = value & 0x1FF; + break; + // VPC: + case GSREG_ST_MODE: + st_mode = (bool)value; + break; + + case GSREG_WINDOW_WIDTH_0: + case GSREG_WINDOW_WIDTH_1: + winwidths[id - GSREG_WINDOW_WIDTH_0] = value & 0x3FF; + break; + + case GSREG_PRIORITY_0: + case GSREG_PRIORITY_1: + priority[id - GSREG_PRIORITY_0] = value; + break; + + } +} + +void VCE::SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn) +{ + GfxDecode_Buf = surface; + GfxDecode_Line = line; + GfxDecode_Layer = which; + GfxDecode_Scroll = yscroll; + GfxDecode_Pbn = pbn; + + if(GfxDecode_Buf && GfxDecode_Line == -1) + DoGfxDecode(); +} + +uint32 VCE::GetRegisterVDC(const unsigned int which_vdc, const unsigned int id, char *special, const uint32 special_len) +{ + assert(which_vdc < (unsigned int)chip_count); + + return(vdc[which_vdc]->GetRegister(id, special, special_len)); +} + +void VCE::SetRegisterVDC(const unsigned int which_vdc, const unsigned int id, const uint32 value) +{ + assert(which_vdc < (unsigned int)chip_count); + + vdc[which_vdc]->SetRegister(id, value); +} + + +uint16 VCE::PeekPRAM(const uint16 Address) +{ + return(color_table[Address & 0x1FF]); +} + +void VCE::PokePRAM(const uint16 Address, const uint16 Data) +{ + color_table[Address & 0x1FF] = Data & 0x1FF; + FixPCache(Address); +} + + +void VCE::DoGfxDecode(void) +{ + const int which_vdc = (GfxDecode_Layer >> 1) & 1; + const bool DecodeSprites = GfxDecode_Layer & 1; + uint32 neo_palette[16]; + + assert(GfxDecode_Buf); + + if(GfxDecode_Pbn == -1) + { + for(int x = 0; x < 16; x++) + neo_palette[x] = GfxDecode_Buf->MakeColor(x * 17, x * 17, x * 17, 0xFF); + } + else + for(int x = 0; x < 16; x++) + neo_palette[x] = color_table_cache[x | (DecodeSprites ? 0x100 : 0x000) | ((GfxDecode_Pbn & 0xF) << 4)] | GfxDecode_Buf->MakeColor(0, 0, 0, 0xFF); + + vdc[which_vdc]->DoGfxDecode(GfxDecode_Buf->pixels, neo_palette, GfxDecode_Buf->MakeColor(0, 0, 0, 0xFF), DecodeSprites, GfxDecode_Buf->w, GfxDecode_Buf->h, GfxDecode_Scroll); +} +#endif + +}; diff --git a/libmednahawk/src/pce/vce.h b/libmednahawk/src/pce/vce.h new file mode 100644 index 0000000000..8ee8f817c2 --- /dev/null +++ b/libmednahawk/src/pce/vce.h @@ -0,0 +1,316 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __PCE_VCE_H +#define __PCE_VCE_H + +#include "huc6280/huc6280.h" +#include "huc6270/vdc.h" + +namespace MDFN_IEN_PCE +{ + +//class VDC; +//#include "vdc.h" + +class VCE : public HuC6280_Support +{ + public: + + VCE(bool want_sgfx, bool nospritelimit); + ~VCE(); + + void SetShowHorizOS(bool show); + + int StateAction(StateMem *sm, int load, int data_only); + + void SetPixelFormat(const MDFN_PixelFormat &format); + bool SetCustomColorMap(const uint8 *triplets, const uint32 count); // count = 512 or 1024 + + void StartFrame(MDFN_Surface *surface, MDFN_Rect *DisplayRect, MDFN_Rect *LineWidths, int skip); + bool RunPartial(void); + + inline int GetScanlineNo(void) + { + return(scanline); + } + + virtual int32 Sync(const int32 timestamp); + + void Reset(const int32 timestamp); + + void Write(uint32 A, uint8 V); + uint8 Read(uint32 A); + + uint8 ReadVDC(uint32 A); + void WriteVDC(uint32 A, uint8 V); + void WriteVDC_ST(uint32 A, uint8 V); + + void SetLayerEnableMask(uint64 mask); + + #ifdef WANT_DEBUGGER + + uint16 PeekPRAM(const uint16 Address); + void PokePRAM(const uint16 Address, const uint16 Data); + + + // Peek(VRAM/SAT) and Poke(VRAM/SAT) work in 16-bit VRAM word units(Address and Length, both). + INLINE uint16 PeekVDCVRAM(unsigned int which, uint16 Address) + { + assert(which < (unsigned int)chip_count); + + return(vdc[which]->PeekVRAM(Address)); + } + + INLINE uint16 PeekVDCSAT(unsigned int which, uint8 Address) + { + assert(which < (unsigned int)chip_count); + + return(vdc[which]->PeekSAT(Address)); + } + + INLINE void PokeVDCVRAM(const unsigned int which, const uint16 Address, const uint16 Data) + { + assert(which < (unsigned int)chip_count); + + vdc[which]->PokeVRAM(Address, Data); + } + + INLINE void PokeVDCSAT(const unsigned int which, const uint8 Address, const uint16 Data) + { + assert(which < (unsigned int)chip_count); + + vdc[which]->PokeSAT(Address, Data); + } + + void SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn); + + enum + { + GSREG_CR = 0, + GSREG_CTA, + GSREG_SCANLINE, + + // VPC: + GSREG_PRIORITY_0, + GSREG_PRIORITY_1, + GSREG_WINDOW_WIDTH_0, + GSREG_WINDOW_WIDTH_1, + GSREG_ST_MODE + }; + + uint32 GetRegister(const unsigned int id, char *special, const uint32 special_len); + void SetRegister(const unsigned int id, const uint32 value); + + + uint32 GetRegisterVDC(const unsigned int which_vdc, const unsigned int id, char *special, const uint32 special_len); + void SetRegisterVDC(const unsigned int which_vdc, const unsigned int id, const uint32 value); + + INLINE void ResetSimulateVDC(void) + { + for(int chip = 0; chip < chip_count; chip++) + vdc[chip]->ResetSimulate(); + } + + INLINE int SimulateReadVDC(uint32 A, VDC_SimulateResult *result) + { + if(!sgfx) + { + vdc[0]->SimulateRead(A, result); + return(0); + } + else + { + int chip = 0; + + A &= 0x1F; + + if(!(A & 0x8)) + { + chip = (A & 0x10) >> 4; + vdc[chip]->SimulateRead(A & 0x3, result); + return(chip); + } + } + + result->ReadCount = result->WriteCount = 0; + return(0); + } + + // If the simulated write is due to a ST0, ST1, or ST2 instruction, set the high bit of the passed address to 1. + INLINE int SimulateWriteVDC(uint32 A, uint8 V, VDC_SimulateResult *result) + { + if(!sgfx) + { + vdc[0]->SimulateWrite(A, V, result); + return(0); + } + else + { + // For ST0/ST1/ST2 + A |= ((A >> 31) & st_mode) << 4; + + A &= 0x1F; + + if(!(A & 0x8)) + { + int chip = (A & 0x10) >> 4; + vdc[chip]->SimulateWrite(A & 0x3, V, result); + return(chip); + } + } + + result->ReadCount = result->WriteCount = 0; + result->ReadStart = result->WriteStart = 0; + return(0); + } + #endif + + void IRQChangeCheck(void); + + bool WS_Hook(int32 vdc_cycles); + + + // So wrong, but feels so...MUSHROOMY. + // THIS IS BROKEN! + // We need to put Sync() call before that, or bias + // cd_event and the value to HuCPU->SetEvent by (HuCPU->timestamp - last_ts) + INLINE void SetCDEvent(const int32 cycles) + { + const int32 time_behind = HuCPU->Timestamp() - last_ts; + + assert(time_behind >= 0); + + cd_event = cycles + time_behind; + HuCPU->SetEvent(CalcNextEvent() - time_behind); + } + + private: + + void FixPCache(int entry); + void SetVCECR(uint8 V); + + #ifdef WANT_DEBUGGER + void DoGfxDecode(void); + #endif + + INLINE int32 CalcNextEvent(void) + { + int32 next_event = hblank_counter; + + if(next_event > vblank_counter) + next_event = vblank_counter; + + if(next_event > cd_event) + next_event = cd_event; + + for(int chip = 0; chip < chip_count; chip++) + { + int fwoom = (child_event[chip] * dot_clock_ratio - clock_divider); + + if(fwoom < 1) + fwoom = 1; + + if(next_event > fwoom) + next_event = fwoom; + } + + if(next_event < 1) + next_event = 1; + + return(next_event); + } + + int32 child_event[2]; + + int32 cd_event; + + uint32 *fb; // Pointer to the framebuffer. + uint32 pitch32; // Pitch(in 32-bit pixels) + bool FrameDone; + + void (*RunHook)(int32 clocks, uint16 *pixels); + + // Called when the state changes, with the new state. + void (*HBlankHook)(bool status); + void (*VBlankHook)(bool status); + + int32 clock_divider; + + int32 scanline; + uint32 *scanline_out_ptr; // Pointer into fb + int32 pixel_offset; + + int32 hblank_counter; + int32 vblank_counter; + + bool hblank; // TRUE if in HBLANK, FALSE if not. + bool vblank; // TRUE if in vblank, FALSE if not + + bool NeedSLReset; + + + uint8 CR; // Control Register + bool lc263; // CR->263 line count if set, 262 if not + bool bw; // CR->Black and White + uint8 dot_clock; // CR->Dot Clock(5, 7, or 10 MHz = 0, 1, 2/3) + int32 dot_clock_ratio; // CR->Dot Clock ratio cache + + int32 ws_counter; + + uint16 color_table[0x200]; + uint32 color_table_cache[0x200 * 2]; // * 2 for user layer disabling stuff. + uint16 ctaddress; + + + uint8 *CustomColorMap; // 1024 * 3 + uint32 CustomColorMapLen; // 512 or 1024 + + uint32 systemColorMap32[512], bw_systemColorMap32[512]; + + int32 last_ts; + + VDC *vdc[2]; + + // SuperGrafx stuff: + bool sgfx; + int chip_count; // = 1 when sgfx is FALSE, = 2 when sgfx is TRUE + uint8 priority[2]; + uint16 winwidths[2]; + uint8 st_mode; + int32 window_counter[2]; + + + #ifdef WANT_DEBUGGER + MDFN_Surface *GfxDecode_Buf;// = NULL; + int GfxDecode_Line;// = -1; + int GfxDecode_Layer;// = 0; + int GfxDecode_Scroll;// = 0; + int GfxDecode_Pbn;// = 0; + #endif + + bool ShowHorizOS; + + bool SubTValid; + uint16 SubTBuffer[0x100]; + uint32 SubTLUT[4096]; +}; + + +}; + +#endif diff --git a/libmednahawk/src/pce/vce_sync.inc b/libmednahawk/src/pce/vce_sync.inc new file mode 100644 index 0000000000..3728757d65 --- /dev/null +++ b/libmednahawk/src/pce/vce_sync.inc @@ -0,0 +1,272 @@ + while(clocks > 0) + { + int32 div_clocks; + int32 chunk_clocks = clocks; + + if(chunk_clocks > hblank_counter) + chunk_clocks = hblank_counter; + + if(chunk_clocks > vblank_counter) + chunk_clocks = vblank_counter; + + #ifdef VCE_SGFX_MODE + for(int chip = 0; chip < 2; chip++) + { + #else + { + const int chip = 0; + #endif + int fwoom = (child_event[chip] * dot_clock_ratio - clock_divider); + + assert(fwoom >= 1); + + if(chunk_clocks > fwoom) + chunk_clocks = fwoom; + } + + clock_divider += chunk_clocks; + div_clocks = clock_divider / dot_clock_ratio; + clock_divider -= div_clocks * dot_clock_ratio; + + child_event[0] -= div_clocks; + #ifdef VCE_SGFX_MODE + child_event[1] -= div_clocks; + #endif + + if(div_clocks > 0) + { + #ifdef VCE_SGFX_MODE + uint16 pixels[2][div_clocks]; + #else + uint16 pixels[1][div_clocks]; + #endif + + child_event[0] = vdc[0]->Run(div_clocks, pixels[0], skipframe); + #ifdef VCE_SGFX_MODE + child_event[1] = vdc[1]->Run(div_clocks, pixels[1], skipframe); + #endif + + if(!skipframe) + { + #ifdef VCE_SGFX_MODE + { + for(int32 i = 0; i < div_clocks; i++) // * vce_ratios[dot_clock]; i++) + { + static const int prio_select[4] = { 1, 1, 0, 0 }; + static const int prio_shift[4] = { 4, 0, 4, 0 }; + uint32 pix; + int in_window = 0; + + if(window_counter[0] > 0x40) + { + in_window |= 1; + window_counter[0]--; + } + + if(window_counter[1] > 0x40) + { + in_window |= 2; + window_counter[1]--; + } + + uint8 pb = (priority[prio_select[in_window]] >> prio_shift[in_window]) & 0xF; + uint32 vdc2_pixel, vdc1_pixel; + + vdc2_pixel = vdc1_pixel = 0; + + if(pb & 1) + vdc1_pixel = pixels[0][i]; + if(pb & 2) + vdc2_pixel = pixels[1][i]; + + /* Dai MakaiMura uses setting 1, and expects VDC #2 sprites in front of VDC #1 background, but + behind VDC #1's sprites. + */ + switch(pb >> 2) + { + case 1: + if((vdc2_pixel & 0x100) && !(vdc1_pixel & 0x100) && (vdc2_pixel & 0xF)) + vdc1_pixel = 0; //amask; + break; + case 2: + if((vdc1_pixel & 0x100) && !(vdc2_pixel & 0x100) && (vdc2_pixel & 0xF)) + vdc1_pixel = 0; //|= amask; + break; + } + pix = color_table_cache[((vdc1_pixel & 0xF) ? vdc1_pixel : vdc2_pixel) & 0x1FF]; + + #if SUPERDUPERMODE + for(int32 s_i = 0; s_i < dot_clock_ratio; s_i++) + #endif + { + scanline_out_ptr[pixel_offset] = pix; + pixel_offset++; + } + } + } + #else + { + #if SUPERDUPERMODE + for(int32 i = 0; i < div_clocks; i++) + { + for(int32 si = 0; si < dot_clock_ratio; si++) + { + uint32 pix = color_table_cache[pixels[0][i] & 0x3FF]; + + scanline_out_ptr[pixel_offset] = pix; + pixel_offset++; + } + } + #else + for(int32 i = 0; i < div_clocks; i++) // * vce_ratios[dot_clock]; i++) + { + uint32 pix = color_table_cache[pixels[0][i] & 0x3FF]; + scanline_out_ptr[pixel_offset] = pix; + pixel_offset++; + } + #endif + + } + #endif + } + //pixel_offset += div_clocks * dot_clock_ratio; + } + + clocks -= chunk_clocks; + hblank_counter -= chunk_clocks; + if(hblank_counter <= 0) + { + hblank ^= 1; + + if(hblank) + { + // Clock gets stretched and "synchronized" at the beginning of the 237-master-cycle hsync period. + //clock_divider = 0; + } + else + { + uint32 *prev_sop = scanline_out_ptr; + + if(sgfx) + { + int add = 0; + if(dot_clock & 2) + add = 8 + 96; + else + add = 8 + (dot_clock ? 38 : 24); + window_counter[0] = winwidths[0] + add; + window_counter[1] = winwidths[1] + add; + } + + if(NeedSLReset) + scanline = 0; + else + scanline++; + + if(scanline == 14 + 240) + FrameDone = true; + + if((scanline == 14 + 240) || (scanline == 123)) + { + HuCPU->Exit(); + } + +#if 0 // Testing code + HuCPU->Exit(); +#endif + + //printf("VCE New scanline: %d\n", scanline); + + scanline_out_ptr = &fb[scanline * pitch32]; + +#ifdef WANT_DEBUGGER + if(GfxDecode_Buf && GfxDecode_Line == scanline) + DoGfxDecode(); +#endif + + pixel_offset = 0; + NeedSLReset = FALSE; + + if(!skipframe) + { + static const int x_offsets[2][4] = { + { 8 + 24, 8 + 38, 8 + 96, 8 + 96 }, + { 8 + 24 - 12, 8 + 38 - 16, 8 + 96 - 24, 8 + 96 - 24 }, + }; + static const int w_cows[2][4] = { + { 256, 341, 512, 512 }, + { 256 + 24, 341 + 32, 512 + 48, 512 + 48 }, + }; + + int rect_x, rect_w; + + #if SUPERDUPERMODE + { + if(dot_clock >= 2) + rect_x = 208; + else if(dot_clock == 1) + rect_x = 136; + else + rect_x = 128; + rect_w = 1024; + + if(ShowHorizOS) + { + rect_x -= 48; + rect_w += 96; + } + } + #else + { + rect_x = x_offsets[ShowHorizOS][dot_clock]; + rect_w = w_cows[ShowHorizOS][dot_clock]; + } + #endif + + LW[scanline].x = rect_x; + LW[scanline].w = rect_w; + + if(SubTValid && prev_sop) + { + uint32 *slp = prev_sop + x_offsets[0][dot_clock]; + uint32 scale_factor = 256 * 65536 / w_cows[0][dot_clock]; + for(int x = 0; x < w_cows[0][dot_clock]; x++) + { + uint32 src_x = (x * scale_factor) >> 16; + uint32 mul_front = (SubTBuffer[src_x] >> 12) & 0xF; + uint32 mul_back = 16 - mul_front; + uint32 front = SubTLUT[SubTBuffer[src_x] & 0xFFF]; + uint32 back = slp[x]; + + front = (((front & 0xF0F0F0F0) >> 4) * mul_front) + ((((front & 0x0F0F0F0F) * mul_front) >> 4) & 0x0F0F0F0F); + back = (((back & 0xF0F0F0F0) >> 4) * mul_back) + ((((back & 0x0F0F0F0F) * mul_back) >> 4) & 0x0F0F0F0F); + + slp[x] = front + back; + } + } + } + SubTValid = SubHW_DisplayLine(SubTBuffer); + } + hblank_counter = hblank ? 237 : 1128; + + for(int chip = 0; chip < chip_count; chip++) + child_event[chip] = vdc[chip]->HSync(hblank); + } + + vblank_counter -= chunk_clocks; + if(vblank_counter <= 0) + { + vblank ^= 1; + vblank_counter = vblank ? 4095 : ((lc263 ? 358995 : 357630) - 4095); + + if(!vblank) + { + NeedSLReset = TRUE; + } + else + SubHW_CVSync(); + + for(int chip = 0; chip < chip_count; chip++) + child_event[chip] = vdc[chip]->VSync(vblank); + } + } diff --git a/libmednahawk/src/pce_fast/Makefile.am b/libmednahawk/src/pce_fast/Makefile.am new file mode 100644 index 0000000000..015d59357c --- /dev/null +++ b/libmednahawk/src/pce_fast/Makefile.am @@ -0,0 +1,8 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)/src/hw_misc -I$(top_srcdir)/src/hw_sound + +noinst_LIBRARIES = libpce_fast.a +mednafen_SOURCES = huc6280.cpp pce.cpp vdc.cpp input.cpp huc.cpp hes.cpp tsushin.cpp + +libpce_fast_a_SOURCES = $(mednafen_SOURCES) diff --git a/libmednahawk/src/pce_fast/Makefile.in b/libmednahawk/src/pce_fast/Makefile.in new file mode 100644 index 0000000000..9ac553b969 --- /dev/null +++ b/libmednahawk/src/pce_fast/Makefile.in @@ -0,0 +1,605 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/pce_fast +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libpce_fast_a_AR = $(AR) $(ARFLAGS) +libpce_fast_a_LIBADD = +am__objects_1 = huc6280.$(OBJEXT) pce.$(OBJEXT) vdc.$(OBJEXT) \ + input.$(OBJEXT) huc.$(OBJEXT) hes.$(OBJEXT) tsushin.$(OBJEXT) +am_libpce_fast_a_OBJECTS = $(am__objects_1) +libpce_fast_a_OBJECTS = $(am_libpce_fast_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libpce_fast_a_SOURCES) +DIST_SOURCES = $(libpce_fast_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)/src/hw_misc -I$(top_srcdir)/src/hw_sound +noinst_LIBRARIES = libpce_fast.a +mednafen_SOURCES = huc6280.cpp pce.cpp vdc.cpp input.cpp huc.cpp hes.cpp tsushin.cpp +libpce_fast_a_SOURCES = $(mednafen_SOURCES) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/pce_fast/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/pce_fast/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libpce_fast.a: $(libpce_fast_a_OBJECTS) $(libpce_fast_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpce_fast.a + $(AM_V_AR)$(libpce_fast_a_AR) libpce_fast.a $(libpce_fast_a_OBJECTS) $(libpce_fast_a_LIBADD) + $(AM_V_at)$(RANLIB) libpce_fast.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huc6280.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pce.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsushin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdc.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/pce_fast/hes.cpp b/libmednahawk/src/pce_fast/hes.cpp new file mode 100644 index 0000000000..82762bc9ae --- /dev/null +++ b/libmednahawk/src/pce_fast/hes.cpp @@ -0,0 +1,249 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "hes.h" +#include "huc.h" +#include "../cdrom/pcecd.h" +#include "../player.h" +#include "../endian.h" + +namespace PCE_Fast +{ + + +static uint8 mpr_start[8]; +static uint8 IBP_Bank[0x2000]; +static uint8 *rom = NULL, *rom_backup = NULL; + +static uint8 CurrentSong; +static bool bootstrap; +static bool ROMWriteWarningGiven; + +uint8 ReadIBP(unsigned int A) +{ + if(!(A & 0x100)) + return(IBP_Bank[0x1C00 + (A & 0xF)]); + + if(bootstrap) + { + memcpy(rom + 0x1FF0, rom_backup + 0x1FF0, 16); + bootstrap = false; + return(CurrentSong); + } + return(0xFF); +} + +static DECLFW(HESROMWrite) +{ + rom[A] = V; + //printf("%08x: %02x\n", A, V); + if(!ROMWriteWarningGiven) + { + MDFN_printf(_("Warning: HES is writing to physical address %08x. Future warnings of this nature are temporarily disabled for this HES file.\n"), A); + ROMWriteWarningGiven = TRUE; + } +} + +static DECLFR(HESROMRead) +{ + return(rom[A]); +} + +int PCE_HESLoad(const uint8 *buf, uint32 size) +{ + uint32 LoadAddr, LoadSize; + uint32 CurPos; + uint16 InitAddr; + uint8 StartingSong; + int TotalSongs; + + InitAddr = MDFN_de16lsb(&buf[0x6]); + + CurPos = 0x10; + + if(!(rom = (uint8 *)MDFN_malloc(0x88 * 8192, _("HES ROM")))) + { + return(0); + } + + if(!(rom_backup = (uint8 *)MDFN_malloc(0x88 * 8192, _("HES ROM")))) + { + return(0); + } + + memset(rom, 0, 0x88 * 8192); + memset(rom_backup, 0, 0x88 * 8192); + + while(CurPos < (size - 0x10)) + { + LoadSize = MDFN_de32lsb(&buf[CurPos + 0x4]); + LoadAddr = MDFN_de32lsb(&buf[CurPos + 0x8]); + + //printf("Size: %08x(%d), Addr: %08x, La: %02x\n", LoadSize, LoadSize, LoadAddr, LoadAddr / 8192); + + CurPos += 0x10; + + if(((uint64)LoadSize + CurPos) > size) + { + uint32 NewLoadSize = size - CurPos; + + MDFN_printf(_("Warning: HES is trying to load more data than is present in the file(%u attempted, %u left)!\n"), LoadSize, NewLoadSize); + + LoadSize = NewLoadSize; + } + + // 0x88 * 8192 = 0x110000 + if(((uint64)LoadAddr + LoadSize) > 0x110000) + { + MDFN_printf(_("Warning: HES is trying to load data past boundary.\n")); + + if(LoadAddr >= 0x110000) + break; + + LoadSize = 0x110000 - LoadAddr; + } + + memcpy(rom + LoadAddr, &buf[CurPos], LoadSize); + CurPos += LoadSize; + } + + for(int x = 0; x < 8; x++) + mpr_start[x] = buf[0x8 + x]; + + memcpy(rom_backup, rom, 0x88 * 8192); + + CurrentSong = StartingSong = buf[5]; + TotalSongs = 256; + + memset(IBP_Bank, 0, 0x2000); + + uint8 *IBP_WR = IBP_Bank + 0x1C00; + + for(int i = 0; i < 8; i++) + { + *IBP_WR++ = 0xA9; // LDA (immediate) + *IBP_WR++ = mpr_start[i]; + *IBP_WR++ = 0x53; // TAM + *IBP_WR++ = 1 << i; + } + + *IBP_WR++ = 0xAD; // LDA(absolute) + *IBP_WR++ = 0x00; // + *IBP_WR++ = 0x1D; // + *IBP_WR++ = 0x20; // JSR + *IBP_WR++ = InitAddr; // JSR target LSB + *IBP_WR++ = InitAddr >> 8; // JSR target MSB + *IBP_WR++ = 0x58; // CLI + *IBP_WR++ = 0xFC; // (Mednafen Special) + *IBP_WR++ = 0x80; // BRA + *IBP_WR++ = 0xFD; // -3 + + Player_Init(TotalSongs, "", "", ""); //NULL, NULL, NULL, NULL); //UTF8 **snames); + + for(int x = 0; x < 0x80; x++) + { + HuCPUFastMap[x] = rom; + PCERead[x] = HESROMRead; + PCEWrite[x] = HESROMWrite; + } + + HuCPUFastMap[0xFF] = IBP_Bank - (0xFF * 8192); + + // FIXME: If a HES rip tries to execute a SCSI command, the CD emulation code will probably crash. Obviously, a HES rip shouldn't do this, + // but Mednafen shouldn't crash either. ;) + PCE_IsCD = 1; + PCE_InitCD(); + + ROMWriteWarningGiven = FALSE; + + return(1); +} + + +static const uint8 BootROM[16] = { 0xA9, 0xFF, 0x53, 0x01, 0xEA, 0xEA, 0xEA, 0xEA, + 0xEA, 0xEA, 0xEA, 0x4C, 0x00, 0x1C, 0xF0, 0xFF }; +void HES_Reset(void) +{ + memcpy(rom, rom_backup, 0x88 * 8192); + memcpy(rom + 0x1FF0, BootROM, 16); + bootstrap = true; +} + + +void HES_Draw(MDFN_Surface *surface, MDFN_Rect *DisplayRect, int16 *SoundBuf, int32 SoundBufSize) +{ + extern uint16 pce_jp_data[5]; + static uint8 last = 0; + bool needreload = 0; + uint8 newset = (pce_jp_data[0] ^ last) & pce_jp_data[0]; + + if(newset & 0x20) + { + CurrentSong++; + needreload = 1; + } + + if(newset & 0x80) + { + CurrentSong--; + needreload = 1; + } + + if(newset & 0x08) + needreload = 1; + + if(newset & 0x10) + { + CurrentSong += 10; + needreload = 1; + } + + if(newset & 0x40) + { + CurrentSong -= 10; + needreload = 1; + } + + last = pce_jp_data[0]; + + if(needreload) + PCE_Power(); + + Player_Draw(surface, DisplayRect, CurrentSong, SoundBuf, SoundBufSize); +} + +void HES_Close(void) +{ + PCECD_Close(); + + if(rom) + { + MDFN_free(rom); + rom = NULL; + } + + if(rom_backup) + { + MDFN_free(rom_backup); + rom_backup = NULL; + } +} + + + +}; diff --git a/libmednahawk/src/pce_fast/hes.h b/libmednahawk/src/pce_fast/hes.h new file mode 100644 index 0000000000..d578d31b12 --- /dev/null +++ b/libmednahawk/src/pce_fast/hes.h @@ -0,0 +1,10 @@ +namespace PCE_Fast +{ + +uint8 ReadIBP(unsigned int A); +int PCE_HESLoad(const uint8 *buf, uint32 size); +void HES_Reset(void); +void HES_Draw(MDFN_Surface *surface, MDFN_Rect *DisplayRect, int16 *samples, int32 sampcount); +void HES_Close(void); + +}; diff --git a/libmednahawk/src/pce_fast/huc.cpp b/libmednahawk/src/pce_fast/huc.cpp new file mode 100644 index 0000000000..52da79ded0 --- /dev/null +++ b/libmednahawk/src/pce_fast/huc.cpp @@ -0,0 +1,447 @@ +/* Mednafen - Multi-system Emulator + * + * Portions of this file Copyright (C) 2004 Ki + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include +#include "../cdrom/pcecd.h" +#include "arcade_card/arcade_card.h" +#include "../md5.h" +#include "../file.h" +#include "../cdrom/cdromif.h" +#include "../mempatcher.h" + +namespace PCE_Fast +{ + +static const uint8 BRAM_Init_String[8] = { 'H', 'U', 'B', 'M', 0x00, 0x88, 0x10, 0x80 }; //"HUBM\x00\x88\x10\x80"; + +ArcadeCard *arcade_card = NULL; + +static uint8 *HuCROM = NULL; + +static bool IsPopulous; +bool IsTsushin; +bool PCE_IsCD; + +static uint8 *TsushinRAM = NULL; // 0x8000 +static uint8 SaveRAM[2048]; + +static DECLFW(ACPhysWrite) +{ + arcade_card->PhysWrite(A, V); +} + +static DECLFR(ACPhysRead) +{ + return(arcade_card->PhysRead(A)); +} + +static DECLFR(SaveRAMRead) +{ + if((!PCE_IsCD || PCECD_IsBRAMEnabled()) && (A & 8191) < 2048) + return(SaveRAM[A & 2047]); + else + return(0xFF); +} + +static DECLFW(SaveRAMWrite) +{ + if((!PCE_IsCD || PCECD_IsBRAMEnabled()) && (A & 8191) < 2048) + SaveRAM[A & 2047] = V; +} + +static DECLFR(HuCRead) +{ + return ROMSpace[A]; +} + +static DECLFW(HuCRAMWrite) +{ + ROMSpace[A] = V; +} + +static DECLFW(HuCRAMWriteCDSpecial) // Hyper Dyne Special hack +{ + BaseRAM[0x2000 | (A & 0x1FFF)] = V; + ROMSpace[A] = V; +} + +static uint8 HuCSF2Latch = 0; + +static DECLFR(HuCSF2Read) +{ + return(HuCROM[(A & 0x7FFFF) + 0x80000 + HuCSF2Latch * 0x80000 ]); // | (HuCSF2Latch << 19) ]); +} + +static DECLFW(HuCSF2Write) +{ + if((A & 0x1FFC) == 0x1FF0) + { + HuCSF2Latch = (A & 0x3); + } +} + +int HuCLoad(const uint8 *data, uint32 len, uint32 crc32) +{ + uint32 sf2_threshold = 2048 * 1024; + uint32 sf2_required_size = 2048 * 1024 + 512 * 1024; + uint32 m_len = (len + 8191)&~8191; + bool sf2_mapper = FALSE; + + if(m_len >= sf2_threshold) + { + sf2_mapper = TRUE; + + if(m_len != sf2_required_size) + m_len = sf2_required_size; + } + + IsPopulous = 0; + PCE_IsCD = 0; + + md5_context md5; + md5.starts(); + md5.update(data, len); + md5.finish(MDFNGameInfo->MD5); + + MDFN_printf(_("ROM: %dKiB\n"), (len + 1023) / 1024); + MDFN_printf(_("ROM CRC32: 0x%04x\n"), crc32); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + if(!(HuCROM = (uint8 *)MDFN_malloc(m_len, _("HuCard ROM")))) + { + return(0); + } + + memset(HuCROM, 0xFF, m_len); + memcpy(HuCROM, data, len); + + memset(ROMSpace, 0xFF, 0x88 * 8192 + 8192); + + if(m_len == 0x60000) + { + memcpy(ROMSpace + 0x00 * 8192, HuCROM, 0x20 * 8192); + memcpy(ROMSpace + 0x20 * 8192, HuCROM, 0x20 * 8192); + memcpy(ROMSpace + 0x40 * 8192, HuCROM + 0x20 * 8192, 0x10 * 8192); + memcpy(ROMSpace + 0x50 * 8192, HuCROM + 0x20 * 8192, 0x10 * 8192); + memcpy(ROMSpace + 0x60 * 8192, HuCROM + 0x20 * 8192, 0x10 * 8192); + memcpy(ROMSpace + 0x70 * 8192, HuCROM + 0x20 * 8192, 0x10 * 8192); + } + else if(m_len == 0x80000) + { + memcpy(ROMSpace + 0x00 * 8192, HuCROM, 0x40 * 8192); + memcpy(ROMSpace + 0x40 * 8192, HuCROM + 0x20 * 8192, 0x20 * 8192); + memcpy(ROMSpace + 0x60 * 8192, HuCROM + 0x20 * 8192, 0x20 * 8192); + } + else + { + memcpy(ROMSpace + 0x00 * 8192, HuCROM, (m_len < 1024 * 1024) ? m_len : 1024 * 1024); + } + + for(int x = 0x00; x < 0x80; x++) + { + HuCPUFastMap[x] = ROMSpace; + PCERead[x] = HuCRead; + } + + if(!memcmp(HuCROM + 0x1F26, "POPULOUS", strlen("POPULOUS"))) + { + uint8 *PopRAM = ROMSpace + 0x40 * 8192; + gzFile fp; + + memset(PopRAM, 0xFF, 32768); + if((fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(fp, PopRAM, 32768); + gzclose(fp); + } + + IsPopulous = 1; + + MDFN_printf("Populous\n"); + + for(int x = 0x40; x < 0x44; x++) + { + HuCPUFastMap[x] = &PopRAM[(x & 3) * 8192] - x * 8192; + PCERead[x] = HuCRead; + PCEWrite[x] = HuCRAMWrite; + } + MDFNMP_AddRAM(32768, 0x40 * 8192, PopRAM); + } + else if(crc32 == 0x34dc65c4) // Tsushin Booster + { + gzFile fp; + + if(!(TsushinRAM = (uint8*)MDFN_calloc(1, 0x8000 + 8192, _("Tsushin Booster RAM")))) // + 8192 for PC-as-ptr safety padding + { + MDFN_free(HuCROM); + return(0); + } + memset(TsushinRAM, 0xFF, 0x8000); + + if((fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(fp, TsushinRAM, 32768); + gzclose(fp); + } + IsTsushin = 1; + MDFN_printf("Tsushin Booster\n"); + for(int x = 0x88; x < 0x8C; x++) + { + HuCPUFastMap[x] = &TsushinRAM[(x & 3) * 8192] - x * 8192; + PCERead[x] = HuCRead; + PCEWrite[x] = HuCRAMWrite; + } + MDFNMP_AddRAM(32768, 0x88 * 8192, TsushinRAM); + } + else + { + gzFile fp; + + memset(SaveRAM, 0x00, 2048); + memcpy(SaveRAM, BRAM_Init_String, 8); // So users don't have to manually intialize the file cabinet + // in the CD BIOS screen. + if((fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(fp, SaveRAM, 2048); + gzclose(fp); + } + PCEWrite[0xF7] = SaveRAMWrite; + PCERead[0xF7] = SaveRAMRead; + MDFNMP_AddRAM(2048, 0xF7 * 8192, SaveRAM); + } + + // 0x1A558 + //if(len >= 0x20000 && !memcmp(HuCROM + 0x1A558, "STREET FIGHTER#", strlen("STREET FIGHTER#"))) + if(sf2_mapper) + { + for(int x = 0x40; x < 0x80; x++) + { + // FIXME: PCE_FAST + HuCPUFastMap[x] = NULL; // Make sure our reads go through our read function, and not a table lookup + PCERead[x] = HuCSF2Read; + } + PCEWrite[0] = HuCSF2Write; + MDFN_printf("Street Fighter 2 Mapper\n"); + HuCSF2Latch = 0; + } + + return(1); +} + +bool IsBRAMUsed(void) +{ + if(memcmp(SaveRAM, BRAM_Init_String, 8)) // HUBM string is modified/missing + return(1); + + for(int x = 8; x < 2048; x++) + if(SaveRAM[x]) return(1); + + return(0); +} + +int HuCLoadCD(const char *bios_path) +{ + static const FileExtensionSpecStruct KnownBIOSExtensions[] = + { + { ".pce", gettext_noop("PC Engine ROM Image") }, + { ".bin", gettext_noop("PC Engine ROM Image") }, + { ".bios", gettext_noop("BIOS Image") }, + { NULL, NULL } + }; + + MDFNFILE fp; + + if(!fp.Open(bios_path, KnownBIOSExtensions, _("CD BIOS"))) + { + return(0); + } + + memset(ROMSpace, 0xFF, 262144); + + memcpy(ROMSpace, fp.Data() + (fp.Size() & 512), ((fp.Size() & ~512) > 262144) ? 262144 : (fp.Size() &~ 512) ); + + fp.Close(); + + PCE_IsCD = 1; + PCE_InitCD(); + + md5_context md5; + md5.starts(); +// md5_update(&md5, HuCROM, 262144); + +#if 0 + int32 track = CDIF_GetFirstTrack(); + int32 last_track = CDIF_GetLastTrack(); + bool DTFound = 0; + for(; track <= last_track; track++) + { + CDIF_Track_Format format; + + if(CDIF_GetTrackFormat(track, format) && format == CDIF_FORMAT_MODE1) + { + DTFound = 1; + break; + } + } + + if(DTFound) // Only add the MD5 hash if we were able to find a data track. + { + uint32 start_sector = CDIF_GetTrackStartPositionLBA(track); + uint8 sector_buffer[2048]; + + for(int x = 0; x < 128; x++) + { + memset(sector_buffer, 0, 2048); + CDIF_ReadSector(sector_buffer, NULL, start_sector + x, 1); + md5.update(sector_buffer, 2048); + } + } + md5.finish(MDFNGameInfo->MD5); + MDFN_printf(_("CD MD5(first 256KiB): 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + #endif + + MDFN_printf(_("Arcade Card Emulation: %s\n"), PCE_ACEnabled ? _("Enabled") : _("Disabled")); + for(int x = 0; x < 0x40; x++) + { + HuCPUFastMap[x] = ROMSpace; + PCERead[x] = HuCRead; + } + + for(int x = 0x68; x < 0x88; x++) + { + HuCPUFastMap[x] = ROMSpace; + PCERead[x] = HuCRead; + PCEWrite[x] = HuCRAMWrite; + } + PCEWrite[0x80] = HuCRAMWriteCDSpecial; // Hyper Dyne Special hack + MDFNMP_AddRAM(262144, 0x68 * 8192, ROMSpace + 0x68 * 8192); + + if(PCE_ACEnabled) + { + try + { + arcade_card = new ArcadeCard(); + } + catch(std::exception &e) + { + MDFN_PrintError(_("Error creating %s object: %s"), "ArcadeCard", e.what()); + //Cleanup(); // TODO + return(0); + } + + for(int x = 0x40; x < 0x44; x++) + { + HuCPUFastMap[x] = NULL; + PCERead[x] = ACPhysRead; + PCEWrite[x] = ACPhysWrite; + } + } + + gzFile srp; + + memset(SaveRAM, 0x00, 2048); + memcpy(SaveRAM, BRAM_Init_String, 8); // So users don't have to manually intialize the file cabinet + // in the CD BIOS screen. + + if((srp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(srp, SaveRAM, 2048); + gzclose(srp); + } + PCEWrite[0xF7] = SaveRAMWrite; + PCERead[0xF7] = SaveRAMRead; + MDFNMP_AddRAM(2048, 0xF7 * 8192, SaveRAM); + return(1); +} + +int HuC_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(ROMSpace + 0x40 * 8192, IsPopulous ? 32768 : 0), + SFARRAY(TsushinRAM, IsTsushin ? 32768 : 0), + SFARRAY(SaveRAM, (IsPopulous || IsTsushin) ? 0 : 2048), + SFARRAY(ROMSpace + 0x68 * 8192, PCE_IsCD ? 262144 : 0), + SFVAR(HuCSF2Latch), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "HuC"); + + if(load) + HuCSF2Latch &= 0x3; + + if(PCE_IsCD) + { + ret &= PCECD_StateAction(sm, load, data_only); + + if(arcade_card) + ret &= arcade_card->StateAction(sm, load, data_only); + } + return(ret); +} + +void HuCClose(void) +{ + if(IsPopulous) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, ROMSpace + 0x40 * 8192, 32768); + } + else if(IsTsushin) + { + if(TsushinRAM) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, TsushinRAM, 32768); + MDFN_free(TsushinRAM); + TsushinRAM = NULL; + } + } + else if(IsBRAMUsed()) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, SaveRAM, 2048); + } + + if(arcade_card) + { + delete arcade_card; + arcade_card = NULL; + } + + if(PCE_IsCD) + { + PCECD_Close(); + } + + if(HuCROM) + { + MDFN_free(HuCROM); + HuCROM = NULL; + } +} + +void HuC_Power(void) +{ + if(PCE_IsCD) + memset(ROMSpace + 0x68 * 8192, 0x00, 262144); + + if(arcade_card) + arcade_card->Power(); +} + +}; diff --git a/libmednahawk/src/pce_fast/huc.h b/libmednahawk/src/pce_fast/huc.h new file mode 100644 index 0000000000..7997d7f08a --- /dev/null +++ b/libmednahawk/src/pce_fast/huc.h @@ -0,0 +1,17 @@ +namespace PCE_Fast +{ + +int HuCLoad(const uint8 *data, uint32 len, uint32 crc32); +int HuCLoadCD(const char *bios_path); +void HuCClose(void); +int HuC_StateAction(StateMem *sm, int load, int data_only); + +void HuC_Power(void); + +DECLFR(PCE_ACRead); +DECLFW(PCE_ACWrite); + +extern bool PCE_IsCD; +extern bool IsTsushin; + +}; diff --git a/libmednahawk/src/pce_fast/huc6280.cpp b/libmednahawk/src/pce_fast/huc6280.cpp new file mode 100644 index 0000000000..ba3b9eacdf --- /dev/null +++ b/libmednahawk/src/pce_fast/huc6280.cpp @@ -0,0 +1,784 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "vdc.h" + +namespace PCE_Fast +{ + +HuC6280 HuCPU; +uint8 *HuCPUFastMap[0x100]; + +#define HU_PC PC_local //HuCPU.PC +#define HU_PC_base HuCPU.PC_base +#define HU_A HuCPU.A +#define HU_X X_local //HuCPU.X +#define HU_Y Y_local //HuCPU.Y +#define HU_S HuCPU.S +#define HU_P P_local //HuCPU.P +#define HU_PI HuCPU.mooPI +#define HU_IRQlow HuCPU.IRQlow +#define HU_Page1 Page1_local +//HuCPU.Page1 +//Page1_local //HuCPU.Page1 + +#ifdef HUC6280_LAZY_FLAGS + #define HU_ZNFlags HuCPU.ZNFlags +#endif + + +#ifdef HUC6280_CRAZY_VERSION +#define LOAD_LOCALS_PC() register uint8 *PC_local = HuCPU.PC; +#else +#define LOAD_LOCALS_PC() register uint32 PC_local /*asm ("edi")*/ = HuCPU.PC; // asm ("edi") = HuCPU.PC; +#endif + +#define LOAD_LOCALS() \ + LOAD_LOCALS_PC(); \ + uint8 X_local = HuCPU.X; \ + uint8 Y_local = HuCPU.Y; \ + uint8 P_local = HuCPU.P; \ + uint8 *Page1_local = HuCPU.Page1; + +#define SAVE_LOCALS() HuCPU.PC = PC_local; \ + HuCPU.X = X_local; \ + HuCPU.Y = Y_local; \ + HuCPU.P = P_local; \ + HuCPU.Page1 = Page1_local; + +#ifdef HUC6280_LAZY_FLAGS + #define COMPRESS_FLAGS() HU_P &= ~(N_FLAG | Z_FLAG); HU_P |= ((HU_ZNFlags >> 24) & 0x80) | ((HU_ZNFlags & 0xFF) ? 0 : Z_FLAG); + //((((HU_ZNFlags & 0xFF) - 1) >> 8) & Z_FLAG); + #define EXPAND_FLAGS() HU_ZNFlags = (HU_P << 24) | ((HU_P & Z_FLAG) ^ Z_FLAG); +#else + #define COMPRESS_FLAGS() + #define EXPAND_FLAGS() +#endif + +#ifdef HUC6280_CRAZY_VERSION + #define GetRealPC() ((unsigned int)(HU_PC - HU_PC_base)) + #define GetRealPC_EXTERNAL() ((unsigned int)(HuCPU.PC - HuCPU.PC_base)) +#else + #define GetRealPC() (HU_PC) + #define GetRealPC_EXTERNAL() (HuCPU.PC) +#endif + +#ifdef HUC6280_CRAZY_VERSION + #define SetPC(value) { unsigned int tempmoo = value; HU_PC = &HuCPU.FastPageR[tempmoo >> 13][tempmoo]; \ + HU_PC_base = HU_PC - tempmoo; } + #define SetPC_EXTERNAL(value) { unsigned int tempmoo = value; \ + HuCPU.PC = &HuCPU.FastPageR[tempmoo >> 13][tempmoo]; HuCPU.PC_base = HuCPU.PC - tempmoo; } +#else + #define SetPC(value) { HU_PC = (value); } + #define SetPC_EXTERNAL(value) { HuCPU.PC = (value); } +#endif + +// Page change PC, GET IT?! +#ifdef HUC6280_CRAZY_VERSION + #define FixPC_PC() SetPC(GetRealPC()); +#else + #define FixPC_PC() +#endif + +//#define IncPC() { HU_PC++; if(!(GetRealPC() & 0x1FFF)) printf("Bank crossing: %04x\n", GetRealPC()); } +//#define IncPC() HU_PC++; +#if 0 +#define IncPC() { HU_PC++; if(!(GetRealPC() & 0x1FFF) && \ + HuCPU.MPR[(GetRealPC() - 1) >> 13] != (HuCPU.MPR[(GetRealPC()) >> 13] - 1)) \ + printf("Bank crossing: %04x, %02x, %02x\n", GetRealPC(), HuCPU.MPR[(GetRealPC() - 1) >> 13], \ + HuCPU.MPR[GetRealPC() >> 13]); } +#else +#define IncPC() HU_PC++; +#endif + +#ifdef HUC6280_CRAZY_VERSION + #define RdAtPC() (*HU_PC) + //#define RdAtAndIncPC_16() (HU_PC += 2, *(uint16 *)(HU_PC - 2)) +#else + #define RdAtPC() RdOp(HU_PC) + //#define RdAtAndIncPC_16() (RdOp(HU_PC++) | ((RdOp(HU_PC++) << 8))) +#endif + +// If we change this definition, we'll need to also fix HuC6280_StealCycle() in huc6280.h +#define ADDCYC(x) { HuCPU.timestamp += x; } + +static uint8 dummy_bank[8192 + 8192]; // + 8192 for PC-as-ptr safety padding + +#define SET_MPR(arg_i, arg_v) \ +{ \ + const unsigned int wmpr = arg_i, wbank = arg_v; \ + if(wmpr == 1) \ + { \ + if(wbank != 0xF8 || !HuCPUFastMap[wbank]) \ + printf("Crazy page 1: %02x\n", wbank); \ + HU_Page1 = HuCPUFastMap[wbank] ? HuCPUFastMap[wbank] + wbank * 8192 : dummy_bank; \ + } \ + HuCPU.MPR[wmpr] = wbank; \ + HuCPU.FastPageR[wmpr] = HuCPUFastMap[wbank] ? (HuCPUFastMap[wbank] + wbank * 8192) - wmpr * 8192 : (dummy_bank - wmpr * 8192); \ +} + +void HuC6280_SetMPR(int i, int v) +{ + uint8 *Page1_local = HuCPU.Page1; + + SET_MPR(i, v); + + HuCPU.Page1 = Page1_local; +} + + +static void HuC6280_FlushMPRCache(void) +{ + for(int x = 0; x < 9; x++) + HuC6280_SetMPR(x, HuCPU.MPR[x & 0x7]); +} + +static INLINE uint8 RdMem(unsigned int A) +{ + uint8 wmpr = HuCPU.MPR[A >> 13]; + return(PCERead[wmpr]((wmpr << 13) | (A & 0x1FFF))); +} + +static INLINE uint16 RdMem16(unsigned int A) +{ + return(RdMem(A) | (RdMem(A + 1) << 8)); +} + +static INLINE void WrMem(unsigned int A, uint8 V) +{ + uint8 wmpr = HuCPU.MPR[A >> 13]; + PCEWrite[wmpr]((wmpr << 13) | (A & 0x1FFF), V); +} + +static INLINE uint8 RdOp(unsigned int A) +{ + return(HuCPU.FastPageR[A >> 13][A]); +} + +#define PUSH(V) \ +{ \ + HU_Page1[0x100 + HU_S] = V; \ + HU_S--; \ +} + +#define PUSH_PC() \ +{ \ + unsigned int real_pc = GetRealPC(); \ + PUSH(real_pc >> 8); \ + PUSH(real_pc); \ +} + +#define POP() HU_Page1[0x100 + ++HU_S] + +#define POP_PC() \ +{ \ + unsigned int npc; \ + npc = POP(); \ + npc |= POP() << 8; \ + SetPC(npc); \ +} + +// Hopefully we never RTS to 0x0000. ;) +#define POP_PC_AP() \ +{ \ + uint32 npc; \ + npc = POP(); \ + npc |= POP() << 8; \ + npc++; \ + SetPC(npc); \ +} + +/* Some of these operations will only make sense if you know what the flag + constants are. */ + +#ifdef HUC6280_LAZY_FLAGS + #define X_ZN(zort) { HU_ZNFlags = (int32)(int8)(uint8)(zort); } + #define X_ZN_BIT(opres, argie) { HU_ZNFlags = (opres) | ((argie) << 24); } +#else + static uint8 ZNTable[256]; + #define X_ZN(zort) HU_P&=~(Z_FLAG|N_FLAG);HU_P|=ZNTable[zort] + #define X_ZN_BIT(opres, argie) { HU_P &= ~(Z_FLAG | N_FLAG); HU_P |= ZNTable[opres] & Z_FLAG; HU_P |= argie & N_FLAG; } +#endif + +#define JR(cond) \ +{ \ + if(cond) \ + { \ + int32 disp; \ + disp = 1 + (int8)RdAtPC(); \ + ADDCYC(2); \ + HU_PC+=disp; \ + } \ + else IncPC(); \ +} + +#define BRA \ +{ \ + int32 disp; \ + disp = 1 + (int8)RdAtPC(); \ + HU_PC+=disp; \ +} + +#define BBRi(bitto) JR(!(x & (1 << bitto))) +#define BBSi(bitto) JR(x & (1 << bitto)) + +#define ST0 VDC_Write_ST(0, x) +#define ST1 VDC_Write_ST(2, x) +#define ST2 VDC_Write_ST(3, x) + +#define LDA HU_A=x;X_ZN(HU_A) +#define LDX HU_X=x;X_ZN(HU_X) +#define LDY HU_Y=x;X_ZN(HU_Y) + +/* All of the freaky arithmetic operations. */ +#define AND HU_A&=x;X_ZN(HU_A); + +// FIXME: +#define BIT HU_P&=~V_FLAG; X_ZN_BIT(x & HU_A, x); HU_P |= x & V_FLAG; +#define EOR HU_A^=x;X_ZN(HU_A); +#define ORA HU_A|=x;X_ZN(HU_A); + +#define ADC { \ + if(HU_P & D_FLAG) \ + { \ + uint32 low = (HU_A & 0x0F) + (x & 0x0F) + (HU_P & 1); \ + uint32 high = (HU_A & 0xF0) + (x & 0xF0); \ + HU_P &= ~C_FLAG; \ + if(low > 0x09) { high += 0x10; low += 0x06; } \ + if(high > 0x90) { high += 0x60; } \ + HU_P |= (high >> 8) & C_FLAG; \ + HU_A = (low & 0x0F) | (high & 0xF0); \ + X_ZN(HU_A); \ + } \ + else \ + { \ + uint32 l=HU_A+x+(HU_P&1); \ + HU_P&=~(C_FLAG|V_FLAG); \ + HU_P|=((((HU_A^x)&0x80)^0x80) & ((HU_A^l)&0x80))>>1; \ + HU_P|=(l>>8)&C_FLAG; \ + HU_A=l; \ + X_ZN(HU_A); \ + } \ + } + +#define SBC if(HU_P & D_FLAG) \ + { \ + uint32 c = (HU_P & 1) ^ 1; \ + uint32 l = HU_A - x - c; \ + uint32 low = (HU_A & 0x0f) - (x & 0x0f) - c; \ + uint32 high = (HU_A & 0xf0) - (x & 0xf0); \ + HU_P &= ~(C_FLAG); \ + if(low & 0xf0) low -= 0x06; \ + if(low & 0x80) high -= 0x10; \ + if(high & 0x0f00) high -= 0x60; \ + HU_P |= ((l >> 8) & C_FLAG) ^ C_FLAG; \ + HU_A = (low & 0x0F) | (high & 0xf0); \ + X_ZN(HU_A); \ + } else { \ + uint32 l=HU_A-x-((HU_P&1)^1); \ + HU_P&=~(C_FLAG|V_FLAG); \ + HU_P|=((HU_A^l)&(HU_A^x)&0x80)>>1; \ + HU_P|=((l>>8)&C_FLAG)^C_FLAG; \ + HU_A=l; \ + X_ZN(HU_A); \ + } + +#define CMPL(a1,a2) { \ + uint32 t=a1-a2; \ + X_ZN(t&0xFF); \ + HU_P&=~C_FLAG; \ + HU_P|=((t>>8)&C_FLAG)^C_FLAG; \ + } + +#define TAM for(int i = 0; i < 8; i ++) { \ + if(x & (1 << i)) \ + { \ + SET_MPR(i, HU_A); \ + } \ + } SET_MPR(8, HuCPU.MPR[0]); + +#define TMA for(int i = 0; i < 8; i ++) { \ + if(x & (1 << i)) \ + HU_A = HuCPU.MPR[i]; \ + } + +#define CSL +#define CSH + +#define RMB(bitto) x &= ~(1 << (bitto & 7)) +#define SMB(bitto) x |= 1 << (bitto & 7) + +// FIXME +#define TSB { HU_P &= ~V_FLAG; X_ZN_BIT(x | HU_A, x); HU_P |= x & V_FLAG; x |= HU_A; } +#define TRB { HU_P &= ~V_FLAG; X_ZN_BIT(x & ~HU_A, x); HU_P |= x & V_FLAG; x &= ~HU_A; } +#define TST { HU_P &= ~V_FLAG; X_ZN_BIT(x & zoomhack, x); HU_P |= x & V_FLAG; } + +#define CMP CMPL(HU_A,x) +#define CPX CMPL(HU_X,x) +#define CPY CMPL(HU_Y,x) + +/* The following operations modify the byte being worked on. */ +#define DEC x--;X_ZN(x) +#define INC x++;X_ZN(x) + +#define ASL HU_P&=~C_FLAG;HU_P|=x>>7;x<<=1;X_ZN(x) +#define LSR HU_P&=~C_FLAG;HU_P|=x&1;x>>=1;X_ZN(x) + +#define ROL { \ + uint8 l=x>>7; \ + x<<=1; \ + x|=HU_P&C_FLAG; \ + HU_P&=~C_FLAG; \ + HU_P|=l; \ + X_ZN(x); \ + } +#define ROR { \ + uint8 l=x&1; \ + x>>=1; \ + x|=(HU_P&C_FLAG)<<7; \ + HU_P&=~C_FLAG; \ + HU_P|=l; \ + X_ZN(x); \ + } + +/* Absolute */ +#define GetAB(target) \ +{ \ + target=RdAtPC(); \ + IncPC(); \ + target|=RdAtPC()<<8; \ + IncPC(); \ +} + +/* Absolute Indexed(for reads) */ +#define GetABI(target, i) \ +{ \ + unsigned int tmp; \ + GetAB(tmp); \ + target=tmp; \ + target+=i; \ +} + +/* Zero Page */ +#define GetZP(target) \ +{ \ + target=RdAtPC(); \ + IncPC(); \ +} + +/* Zero Page Indexed */ +#define GetZPI(target,i) \ +{ \ + target=i+RdAtPC(); \ + IncPC(); \ +} + +/* Indirect */ +#define GetIND(target) \ +{ \ + uint8 tmp; \ + tmp=RdAtPC(); \ + IncPC(); \ + target=HU_Page1[tmp]; \ + tmp++; \ + target|=HU_Page1[tmp]<<8; \ +} + + +/* Indexed Indirect */ +#define GetIX(target) \ +{ \ + uint8 tmp; \ + tmp=RdAtPC(); \ + IncPC(); \ + tmp+=HU_X; \ + target=HU_Page1[tmp]; \ + tmp++; \ + target|=HU_Page1[tmp] <<8; \ +} + +/* Indirect Indexed(for reads) */ +#define GetIY(target) \ +{ \ + unsigned int rt; \ + uint8 tmp; \ + tmp=RdAtPC(); \ + rt=HU_Page1[tmp]; \ + tmp++; \ + rt|=HU_Page1[tmp]<<8; \ + target = (rt + HU_Y); \ + IncPC(); \ +} + +/* Now come the macros to wrap up all of the above stuff addressing mode functions + and operation macros. Note that operation macros will always operate(redundant + redundant) on the variable "x". +*/ + +#define RMW_A(op) {uint8 x=HU_A; op; HU_A=x; break; } /* Meh... */ +#define RMW_AB(op) {unsigned int EA; uint8 x; GetAB(EA); x=RdMem(EA); op; WrMem(EA,x); break; } +#define RMW_ABI(reg,op) {unsigned int EA; uint8 x; GetABI(EA,reg); x=RdMem(EA); op; WrMem(EA,x); break; } +#define RMW_ABX(op) RMW_ABI(HU_X,op) +#define RMW_ABY(op) RMW_ABI(HU_Y,op) +#define RMW_IND(op) { unsigned int EA; uint8 x; GetIND(EA); x = RdMem(EA); op; WrMem(EA, x); break; } +#define RMW_IX(op) { unsigned int EA; uint8 x; GetIX(EA); x=RdMem(EA); op; WrMem(EA,x); break; } +#define RMW_IY(op) { unsigned int EA; uint8 x; GetIY(EA); x=RdMem(EA); op; WrMem(EA,x); break; } +#define RMW_ZP(op) { uint8 EA; uint8 x; GetZP(EA); x=HU_Page1[EA]; op; HU_Page1[EA] = x; break; } +#define RMW_ZPX(op) { uint8 EA; uint8 x; GetZPI(EA,HU_X); x=HU_Page1[EA]; op; HU_Page1[EA] = x; break;} + +#define LD_IM(op) { uint8 x; x=RdAtPC(); IncPC(); op; break; } +#define LD_ZP(op) { uint8 EA; uint8 x; GetZP(EA); x=HU_Page1[EA]; op; break; } +#define LD_ZPX(op) { uint8 EA; uint8 x; GetZPI(EA,HU_X); x=HU_Page1[EA]; op; break; } +#define LD_ZPY(op) { uint8 EA; uint8 x; GetZPI(EA,HU_Y); x=HU_Page1[EA]; op; break; } +#define LD_AB(op) { unsigned int EA; uint8 x; GetAB(EA); x=RdMem(EA); op; break; } +#define LD_ABI(reg,op) { unsigned int EA; uint8 x; GetABI(EA,reg); x=RdMem(EA); op; break; } +#define LD_ABX(op) LD_ABI(HU_X,op) +#define LD_ABY(op) LD_ABI(HU_Y,op) + +#define LD_IND(op) { unsigned int EA; uint8 x; GetIND(EA); x=RdMem(EA); op; break; } +#define LD_IX(op) { unsigned int EA; uint8 x; GetIX(EA); x=RdMem(EA); op; break; } +#define LD_IY(op) { unsigned int EA; uint8 x; GetIY(EA); x=RdMem(EA); op; break; } + +#define BMT_PREHONK(pork) HuCPU.in_block_move = IBM_##pork; +#define BMT_HONKHONK(pork) if(HuCPU.timestamp >= next_user_event) goto GetOutBMT; continue_the_##pork: + +#define BMT_TDD BMT_PREHONK(TDD); do { ADDCYC(6); WrMem(HuCPU.bmt_dest, RdMem(HuCPU.bmt_src)); HuCPU.bmt_src--; HuCPU.bmt_dest--; BMT_HONKHONK(TDD); HuCPU.bmt_length--; } while(HuCPU.bmt_length); +#define BMT_TAI BMT_PREHONK(TAI); {HuCPU.bmt_alternate = 0; do { ADDCYC(6); WrMem(HuCPU.bmt_dest, RdMem(HuCPU.bmt_src + HuCPU.bmt_alternate)); HuCPU.bmt_dest++; HuCPU.bmt_alternate ^= 1; BMT_HONKHONK(TAI); HuCPU.bmt_length--; } while(HuCPU.bmt_length); } +#define BMT_TIA BMT_PREHONK(TIA); {HuCPU.bmt_alternate = 0; do { ADDCYC(6); WrMem(HuCPU.bmt_dest + HuCPU.bmt_alternate, RdMem(HuCPU.bmt_src)); HuCPU.bmt_src++; HuCPU.bmt_alternate ^= 1; BMT_HONKHONK(TIA); HuCPU.bmt_length--; } while(HuCPU.bmt_length); } +#define BMT_TII BMT_PREHONK(TII); do { ADDCYC(6); WrMem(HuCPU.bmt_dest, RdMem(HuCPU.bmt_src)); HuCPU.bmt_src++; HuCPU.bmt_dest++; BMT_HONKHONK(TII); HuCPU.bmt_length--; } while(HuCPU.bmt_length); +#define BMT_TIN BMT_PREHONK(TIN); do { ADDCYC(6); WrMem(HuCPU.bmt_dest, RdMem(HuCPU.bmt_src)); HuCPU.bmt_src++; BMT_HONKHONK(TIN); HuCPU.bmt_length--; } while(HuCPU.bmt_length); + +// Block memory transfer load +#define LD_BMT(op) { PUSH(HU_Y); PUSH(HU_A); PUSH(HU_X); GetAB(HuCPU.bmt_src); GetAB(HuCPU.bmt_dest); GetAB(HuCPU.bmt_length); op; HuCPU.in_block_move = 0; HU_X = POP(); HU_A = POP(); HU_Y = POP(); break; } + +#define ST_ZP(r) {uint8 EA; GetZP(EA); HU_Page1[EA] = r; break;} +#define ST_ZPX(r) {uint8 EA; GetZPI(EA,HU_X); HU_Page1[EA] = r; break;} +#define ST_ZPY(r) {uint8 EA; GetZPI(EA,HU_Y); HU_Page1[EA] = r; break;} +#define ST_AB(r) {unsigned int EA; GetAB(EA); WrMem(EA, r); break;} +#define ST_ABI(reg,r) {unsigned int EA; GetABI(EA,reg); WrMem(EA,r); break; } +#define ST_ABX(r) ST_ABI(HU_X,r) +#define ST_ABY(r) ST_ABI(HU_Y,r) + +#define ST_IND(r) {unsigned int EA; GetIND(EA); WrMem(EA,r); break; } +#define ST_IX(r) {unsigned int EA; GetIX(EA); WrMem(EA,r); break; } +#define ST_IY(r) {unsigned int EA; GetIY(EA); WrMem(EA,r); break; } + +static const uint8 CycTable[256] = +{ + /*0x00*/ 8, 7, 3, 4, 6, 4, 6, 7, 3, 2, 2, 2, 7, 5, 7, 6, + /*0x10*/ 2, 7, 7, 4, 6, 4, 6, 7, 2, 5, 2, 2, 7, 5, 7, 6, + /*0x20*/ 7, 7, 3, 4, 4, 4, 6, 7, 4, 2, 2, 2, 5, 5, 7, 6, + /*0x30*/ 2, 7, 7, 2, 4, 4, 6, 7, 2, 5, 2, 2, 5, 5, 7, 6, + /*0x40*/ 7, 7, 3, 4, 8, 4, 6, 7, 3, 2, 2, 2, 4, 5, 7, 6, + /*0x50*/ 2, 7, 7, 5, 3, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6, + /*0x60*/ 7, 7, 2, 2, 4, 4, 6, 7, 4, 2, 2, 2, 7, 5, 7, 6, + /*0x70*/ 2, 7, 7, 17, 4, 4, 6, 7, 2, 5, 4, 2, 7, 5, 7, 6, + + /*0x80*/ 4, 7, 2, 7, 4, 4, 4, 7, 2, 2, 2, 2, 5, 5, 5, 6, + /*0x90*/ 2, 7, 7, 8, 4, 4, 4, 7, 2, 5, 2, 2, 5, 5, 5, 6, + /*0xA0*/ 2, 7, 2, 7, 4, 4, 4, 7, 2, 2, 2, 2, 5, 5, 5, 6, + /*0xB0*/ 2, 7, 7, 8, 4, 4, 4, 7, 2, 5, 2, 2, 5, 5, 5, 6, + /*0xC0*/ 2, 7, 2, 17, 4, 4, 6, 7, 2, 2, 2, 2, 5, 5, 7, 6, + /*0xD0*/ 2, 7, 7, 17, 3, 4, 6, 7, 2, 5, 3, 2, 2, 5, 7, 6, + /*0xE0*/ 2, 7, 2, 17, 4, 4, 6, 7, 2, 2, 2, 2, 5, 5, 7, 6, + /*0xF0*/ 2, 7, 7, 17, 2, 4, 6, 7, 2, 5, 4, 2, 2, 5, 7, 6, +}; +#if 0 +static bool WillIRQOccur(void) NO_INLINE; +static bool WillIRQOccur(void) +{ + bool ret = false; + + if(HU_IRQlow) + { + if(!(HU_PI&I_FLAG)) + { + if(HU_IRQlow & MDFN_IQTIMER & HuCPU.IRQMaskDelay) + ret = true; + else if((HU_IRQlow & MDFN_IQIRQ1 & HuCPU.IRQMaskDelay) || ((HU_IRQlow >> 8) & MDFN_IQIRQ1 & HuCPU.IRQMaskDelay)) + ret = true; + else if(HU_IRQlow & MDFN_IQIRQ2 & HuCPU.IRQMaskDelay) + ret = true; + } + } + + return(true); +} +#endif + +void HuC6280_IRQBegin(int w) +{ + HU_IRQlow|=w; +} + +void HuC6280_IRQEnd(int w) +{ + HU_IRQlow&=~w; +} + +void HuC6280_Reset(void) +{ + HuCPU.timer_next_timestamp = HuCPU.timestamp + 1024; + + HuCPU.timer_load = 0; + HuCPU.timer_value = 0; + HuCPU.timer_status = 0; + HuCPU.in_block_move = 0; + + unsigned int npc; + + HuCPU.IRQMask = HuCPU.IRQMaskDelay = 7; + + HuC6280_SetMPR(0, 0xFF); + HuC6280_SetMPR(1, 0xF8); + + for(int i = 2; i < 8; i++) + HuC6280_SetMPR(i, 0); + + npc = RdMem16(0xFFFE); + + #define PC_local HuCPU.PC + SetPC(npc); + #undef PC_local + + HuCPU.mooPI = I_FLAG; + HuCPU.P = I_FLAG; + + HU_IRQlow = 0; +} + +void HuC6280_Init(void) +{ + memset((void *)&HuCPU,0,sizeof(HuCPU)); + memset(dummy_bank, 0, sizeof(dummy_bank)); + + #ifdef HUC6280_LAZY_FLAGS + + #else + for(int x=0; x < 256; x++) + if(!x) ZNTable[x]=Z_FLAG; + else if (x&0x80) ZNTable[x]=N_FLAG; + else ZNTable[x]=0; + #endif +} + +void HuC6280_Power(void) +{ + HuCPU.IRQlow = 0; + + HuCPU.A = 0; + HuCPU.X = 0; + HuCPU.Y = 0; + HuCPU.S = 0; + HuCPU.P = 0; + HuCPU.mooPI = 0; + + #if 0 + HU_PC = HU_PC_base = NULL; + #else + HuCPU.PC = 0; + #endif + + HuCPU.timestamp = 0; + + for(int i = 0; i < 9; i++) + { + HuCPU.MPR[i] = 0; + HuCPU.FastPageR[i] = NULL; + } + HuC6280_Reset(); +} + +void HuC6280_Run(int32 cycles) +{ + const int32 next_user_event = HuCPU.previous_next_user_event + cycles * pce_overclocked; + + HuCPU.previous_next_user_event = next_user_event; + + LOAD_LOCALS(); + + if(HuCPU.timestamp >= next_user_event) + return; + + int32 next_event; + + if(HuCPU.in_block_move) + { + next_event = (next_user_event < HuCPU.timer_next_timestamp) ? next_user_event : HuCPU.timer_next_timestamp; + + switch(HuCPU.in_block_move) + { + case IBM_TIA: goto continue_the_TIA; + case IBM_TAI: goto continue_the_TAI; + case IBM_TDD: goto continue_the_TDD; + case IBM_TII: goto continue_the_TII; + case IBM_TIN: goto continue_the_TIN; + } + } + + while(HuCPU.timestamp < next_user_event) + { + next_event = (next_user_event < HuCPU.timer_next_timestamp) ? next_user_event : HuCPU.timer_next_timestamp; + + while(HuCPU.timestamp < next_event) + { + uint8 b1; + + if(HU_IRQlow) + { + if(!(HU_PI&I_FLAG)) + { + uint32 tmpa = 0; + + if(HU_IRQlow & MDFN_IQTIMER & HuCPU.IRQMaskDelay) + tmpa = 0xFFFA; + else if((HU_IRQlow & MDFN_IQIRQ1 & HuCPU.IRQMaskDelay) || ((HU_IRQlow >> 8) & MDFN_IQIRQ1 & HuCPU.IRQMaskDelay)) + tmpa = 0xFFF8; + else if(HU_IRQlow & MDFN_IQIRQ2 & HuCPU.IRQMaskDelay) + tmpa = 0xFFF6; + + if(tmpa) + { + unsigned int npc; + + ADDCYC(8); + PUSH_PC(); + + COMPRESS_FLAGS(); + PUSH((HU_P&~B_FLAG)); + HU_P |= I_FLAG; + HU_P &= ~(T_FLAG | D_FLAG); + HU_PI = HU_P; + + npc = RdMem16(tmpa); + SetPC(npc); + + if(tmpa == 0xFFF8) + HU_IRQlow &= ~0x200; + + continue; + } + } + } // end if(HU_IRQlow) + + //printf("%04x\n", GetRealPC()); + HU_PI = HU_P; + HuCPU.IRQMaskDelay = HuCPU.IRQMask; + + b1 = RdAtPC(); + + ADDCYC(CycTable[b1]); + + IncPC(); + + switch(b1) + { + #include "huc6280_ops.inc" + } + + #ifndef HUC6280_EXTRA_CRAZY + FixPC_PC(); + #endif + } // end while(HuCPU.timestamp < next_event) + + while(HuCPU.timestamp >= HuCPU.timer_next_timestamp) + { + HuCPU.timer_next_timestamp += 1024 * pce_overclocked; + + if(HuCPU.timer_status) + { + HuCPU.timer_value --; + if(HuCPU.timer_value < 0) + { + HuCPU.timer_value = HuCPU.timer_load; + HuC6280_IRQBegin(MDFN_IQTIMER); + } + } + } + } // end while(HuCPU.timestamp < next_user_event) + + GetOutBMT: + + SAVE_LOCALS(); +} + +void HuC6280_ResetTS(void) +{ + HuCPU.timer_next_timestamp -= HuCPU.timestamp; + HuCPU.previous_next_user_event -= HuCPU.timestamp; + HuCPU.timestamp = 0; +} + +int HuC6280_StateAction(StateMem *sm, int load, int data_only) +{ + uint16 tmp_PC = GetRealPC_EXTERNAL(); + + #define P_local HuCPU.P + COMPRESS_FLAGS(); + + SFORMAT SFCPU[]= + { + SFVARN(tmp_PC, "PC"), + SFVARN(HuCPU.A, "A"), + SFVARN(HuCPU.P, "P"), + SFVARN(HuCPU.X, "X"), + SFVARN(HuCPU.Y, "Y"), + SFVARN(HuCPU.S, "S"), + SFVARN(HuCPU.mooPI, "PI"), + + SFVARN(HuCPU.IRQMask, "IRQMask"), + SFVARN(HuCPU.IRQMaskDelay, "IRQMaskDelay"), + SFARRAYN(HuCPU.MPR, 8, "MPR"), + SFVARN(HuCPU.timer_status, "timer_status"), + SFVARN(HuCPU.timer_value, "timer_value"), + SFVARN(HuCPU.timer_load, "timer_load"), + + + SFVARN(HuCPU.IRQlow, "IRQlow"), + SFVARN(HuCPU.in_block_move, "IBM"), + SFVARN(HuCPU.bmt_src, "IBM_SRC"), + SFVARN(HuCPU.bmt_dest, "IBM_DEST"), + SFVARN(HuCPU.bmt_length, "IBM_LENGTH"), + SFVARN(HuCPU.bmt_alternate, "IBM_ALTERNATE"), + + SFVARN(HuCPU.timestamp, "timestamp"), + SFVARN(HuCPU.timer_next_timestamp, "timer_next_timestamp"), + SFVARN(HuCPU.previous_next_user_event, "previous_next_user_event"), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, SFCPU, "CPU"); + + if(load) + { + // Update MPR cache + HuC6280_FlushMPRCache(); + + // This must be after the MPR cache is updated: + SetPC_EXTERNAL(tmp_PC); + } + + EXPAND_FLAGS(); + #undef P_local + + return(ret); +} + + +}; diff --git a/libmednahawk/src/pce_fast/huc6280.h b/libmednahawk/src/pce_fast/huc6280.h new file mode 100644 index 0000000000..9f62ee2318 --- /dev/null +++ b/libmednahawk/src/pce_fast/huc6280.h @@ -0,0 +1,156 @@ +#ifndef _HuC6280H + +#define HUC6280_CRAZY_VERSION +//#define HUC6280_EXTRA_CRAZY + +#define HUC6280_LAZY_FLAGS + +namespace PCE_Fast +{ + + +typedef struct __HuC6280 +{ + #ifdef HUC6280_CRAZY_VERSION + uint8 *PC, *PC_base; + #else + uint16 PC; + #endif + + uint8 A,X,Y,S,P,mooPI; + #ifdef HUC6280_LAZY_FLAGS + uint32 ZNFlags; + #endif + uint8 MPR[9]; // 8, + 1 for PC overflow from $ffff to $10000 + uint8 *FastPageR[9]; + uint8 *Page1; + //uint8 *PAGE1_W; + //const uint8 *PAGE1_R; + + uint32 IRQlow; /* Simulated IRQ pin held low(or is it high?). + And other junk hooked on for speed reasons.*/ + int32 timestamp; + + uint8 IRQMask, IRQMaskDelay; + uint8 timer_status; + int32 timer_value, timer_load; + int32 timer_next_timestamp; + + uint32 in_block_move; + uint16 bmt_src, bmt_dest, bmt_length; + uint32 bmt_alternate; + #define IBM_TIA 1 + #define IBM_TAI 2 + #define IBM_TDD 3 + #define IBM_TII 4 + #define IBM_TIN 5 + + int32 previous_next_user_event; +} HuC6280; + +void HuC6280_Run(int32 cycles); +void HuC6280_ResetTS(void); + +extern HuC6280 HuCPU; +extern uint8 *HuCPUFastMap[0x100]; + +#define N_FLAG 0x80 +#define V_FLAG 0x40 +#define T_FLAG 0x20 +#define B_FLAG 0x10 +#define D_FLAG 0x08 +#define I_FLAG 0x04 +#define Z_FLAG 0x02 +#define C_FLAG 0x01 + +#define NTSC_CPU 1789772.7272727272727272 +#define PAL_CPU 1662607.125 + +#define MDFN_IQIRQ1 0x002 +#define MDFN_IQIRQ2 0x001 +#define MDFN_IQTIMER 0x004 +#define MDFN_IQRESET 0x020 + +void HuC6280_Init(void); +void HuC6280_Reset(void); +void HuC6280_Power(void); + +void HuC6280_IRQBegin(int w); +void HuC6280_IRQEnd(int w); + +int HuC6280_StateAction(StateMem *sm, int load, int data_only); + +static INLINE void HuC6280_StealCycle(void) +{ + HuCPU.timestamp++; +} + +static INLINE uint8 HuC6280_TimerRead(unsigned int A) +{ + #if 0 + return(HuCPU.timer_value | (PCEIODataBuffer & 0x80)); + #endif + + uint8 tvr = HuCPU.timer_value; + + if(HuCPU.timer_next_timestamp == HuCPU.timestamp) + tvr = (tvr - 1) & 0x7F; + + return(tvr | (PCEIODataBuffer & 0x80)); +} + +static INLINE void HuC6280_TimerWrite(unsigned int A, uint8 V) +{ + switch(A & 1) + { + case 0: HuCPU.timer_load = (V & 0x7F); break; + case 1: if(V & 1) // Enable counter + { + if(HuCPU.timer_status == 0) + { + HuCPU.timer_next_timestamp = HuCPU.timestamp + 1024; + HuCPU.timer_value = HuCPU.timer_load; + } + } + HuCPU.timer_status = V & 1; + break; + } +} + +static INLINE uint8 HuC6280_IRQStatusRead(unsigned int A) +{ + if(!(A & 2)) + return(PCEIODataBuffer); + + switch(A & 1) + { + case 0: + HuC6280_IRQEnd(MDFN_IQTIMER); + return(HuCPU.IRQMask ^ 0x7); + case 1: + { + int status = 0; + if(HuCPU.IRQlow & MDFN_IQIRQ1) status |= 2; + if(HuCPU.IRQlow & MDFN_IQIRQ2) status |= 1; + if(HuCPU.IRQlow & MDFN_IQTIMER) status |= 4; + return(status | (PCEIODataBuffer & ~(1 | 2 | 4))); + } + } + return(PCEIODataBuffer); +} + +static INLINE void HuC6280_IRQStatusWrite(unsigned int A, uint8 V) +{ + if(!(A & 2)) return; + switch(A & 1) + { + case 0: HuCPU.IRQMask = (V & 0x7) ^ 0x7; break; + case 1: HuC6280_IRQEnd(MDFN_IQTIMER); break; + } +} + + +}; + +#define _HuC6280H +#endif diff --git a/libmednahawk/src/pce_fast/huc6280_ops.inc b/libmednahawk/src/pce_fast/huc6280_ops.inc new file mode 100644 index 0000000000..1040752a47 --- /dev/null +++ b/libmednahawk/src/pce_fast/huc6280_ops.inc @@ -0,0 +1,635 @@ +/* Mednafen - NES/Famicom Emulator + * + * Copyright notice for this file: + * Copyright (C) 2002 Xodnizel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define TEST_WEIRD_TFLAG(n) { if(HU_P & T_FLAG) puts("RAWR" n); } + +case 0x00: /* BRK */ + IncPC(); + HU_P &= ~T_FLAG; + PUSH_PC(); + + COMPRESS_FLAGS(); + PUSH(HU_P|B_FLAG); + HU_P|=I_FLAG; + HU_P &= ~D_FLAG; + HU_PI|=I_FLAG; + { + unsigned int npc; + + npc=RdOp(0xFFF6); + npc|=RdOp(0xFFF7)<<8; + + SetPC(npc); + } + break; + +case 0x40: /* RTI */ + HU_P = POP(); + EXPAND_FLAGS(); + /* HU_PI=HU_P; This is probably incorrect, so it's commented out. */ + HU_PI = HU_P; + POP_PC(); + + // T-flag handling here: + TEST_WEIRD_TFLAG("RTI"); + break; + +case 0x60: /* RTS */ + POP_PC_AP(); + break; + +case 0x48: /* PHA */ + PUSH(HU_A); + break; + +case 0x08: /* PHP */ + HU_P &= ~T_FLAG; + COMPRESS_FLAGS(); + PUSH(HU_P|B_FLAG); + break; + +case 0xDA: // PHX 65C02 + PUSH(HU_X); + break; + +case 0x5A: // PHY 65C02 + PUSH(HU_Y); + break; + +case 0x68: /* PLA */ + HU_A = POP(); + X_ZN(HU_A); + break; + +case 0xFA: // PLX 65C02 + HU_X = POP(); + X_ZN(HU_X); + break; + +case 0x7A: // PLY 65C02 + HU_Y = POP(); + X_ZN(HU_Y); + break; + +case 0x28: /* PLP */ + HU_P = POP(); + EXPAND_FLAGS(); + + // T-flag handling here: + TEST_WEIRD_TFLAG("PLP"); + break; + +case 0x4C: + { + unsigned int npc; + + npc = RdAtPC(); + IncPC(); + npc|=RdAtPC() << 8; + + SetPC(npc); + } + break; /* JMP ABSOLUTE */ + +case 0x6C: /* JMP Indirect */ + { + uint32 tmp; + unsigned int npc; + + GetAB(tmp); + + npc=RdMem(tmp); + npc|=RdMem(tmp + 1)<<8; + + SetPC(npc); + } + break; + +case 0x7C: // JMP Indirect X - 65C02 + { + uint32 tmp; + unsigned int npc; + + GetAB(tmp); + tmp += HU_X; + + npc=RdMem(tmp); + npc|=RdMem(tmp + 1)<<8; + + SetPC(npc); + } + break; + +case 0x20: /* JSR */ + { + unsigned int npc; + + npc = RdAtPC(); + + IncPC(); + PUSH_PC(); + + npc |= RdAtPC() <<8; + + SetPC(npc); + } + break; + +case 0xAA: /* TAX */ + HU_X=HU_A; + X_ZN(HU_A); + break; + +case 0x8A: /* TXA */ + HU_A=HU_X; + X_ZN(HU_A); + break; + +case 0xA8: /* TAY */ + HU_Y=HU_A; + X_ZN(HU_A); + break; +case 0x98: /* TYA */ + HU_A=HU_Y; + X_ZN(HU_A); + break; + +case 0xBA: /* TSX */ + HU_X=HU_S; + X_ZN(HU_X); + break; +case 0x9A: /* TXS */ + HU_S=HU_X; + break; + +case 0xCA: /* DEX */ + HU_X--; + X_ZN(HU_X); + break; +case 0x88: /* DEY */ + HU_Y--; + X_ZN(HU_Y); + break; + +case 0xE8: /* INX */ + HU_X++; + X_ZN(HU_X); + break; +case 0xC8: /* INY */ + HU_Y++; + X_ZN(HU_Y); + break; + +case 0x54: CSL; break; +case 0xD4: CSH; break; + +case 0x62: HU_A = 0; break; // CLA +case 0x82: HU_X = 0; break; // CLX +case 0xC2: HU_Y = 0; break; // CLY + +case 0x18: /* CLC */ + HU_P&=~C_FLAG; + break; + +case 0xD8: /* CLD */ + HU_P&=~D_FLAG; + break; + +case 0x58: /* CLI */ + if((HU_P & I_FLAG) && (HU_IRQlow & MDFN_IQIRQ1)) + { + uint8 moo_op = RdAtPC(); + if((moo_op == 0xAC || moo_op == 0xAD || moo_op == 0xAE) && + ((RdOp(GetRealPC() + 1) & 0x3) == 0) && ((RdOp(GetRealPC() + 2) & 0xFC) == 0)) + { + HU_IRQlow |= 0x200; + //puts("CLI/LDA madness!"); + } + } + HU_P&=~I_FLAG; + break; + +case 0xB8: /* CLV */ + HU_P&=~V_FLAG; + break; + +case 0x38: /* SEC */ + HU_P|=C_FLAG; + break; + +case 0xF8: /* SED */ + HU_P|=D_FLAG; + break; + +case 0x78: /* SEI */ + HU_P|=I_FLAG; + break; + +case 0xEA: /* NOP */ + break; + +case 0x0A: RMW_A(ASL); +case 0x06: RMW_ZP(ASL); +case 0x16: RMW_ZPX(ASL); +case 0x0E: RMW_AB(ASL); +case 0x1E: RMW_ABX(ASL); + +case 0x3A: RMW_A(DEC); +case 0xC6: RMW_ZP(DEC); +case 0xD6: RMW_ZPX(DEC); +case 0xCE: RMW_AB(DEC); +case 0xDE: RMW_ABX(DEC); + +case 0x1A: RMW_A(INC); // 65C02 +case 0xE6: RMW_ZP(INC); +case 0xF6: RMW_ZPX(INC); +case 0xEE: RMW_AB(INC); +case 0xFE: RMW_ABX(INC); + +case 0x4A: RMW_A(LSR); +case 0x46: RMW_ZP(LSR); +case 0x56: RMW_ZPX(LSR); +case 0x4E: RMW_AB(LSR); +case 0x5E: RMW_ABX(LSR); + +case 0x2A: RMW_A(ROL); +case 0x26: RMW_ZP(ROL); +case 0x36: RMW_ZPX(ROL); +case 0x2E: RMW_AB(ROL); +case 0x3E: RMW_ABX(ROL); + +case 0x6A: RMW_A(ROR); +case 0x66: RMW_ZP(ROR); +case 0x76: RMW_ZPX(ROR); +case 0x6E: RMW_AB(ROR); +case 0x7E: RMW_ABX(ROR); + +case 0x69: LD_IM(ADC); +case 0x65: LD_ZP(ADC); +case 0x75: LD_ZPX(ADC); +case 0x6D: LD_AB(ADC); +case 0x7D: LD_ABX(ADC); +case 0x79: LD_ABY(ADC); +case 0x72: LD_IND(ADC); +case 0x61: LD_IX(ADC); +case 0x71: LD_IY(ADC); + +case 0x29: LD_IM(AND); +case 0x25: LD_ZP(AND); +case 0x35: LD_ZPX(AND); +case 0x2D: LD_AB(AND); +case 0x3D: LD_ABX(AND); +case 0x39: LD_ABY(AND); +case 0x32: LD_IND(AND); +case 0x21: LD_IX(AND); +case 0x31: LD_IY(AND); + +case 0x89: LD_IM(BIT); +case 0x24: LD_ZP(BIT); +case 0x34: LD_ZPX(BIT); +case 0x2C: LD_AB(BIT); +case 0x3C: LD_ABX(BIT); + +case 0xC9: LD_IM(CMP); +case 0xC5: LD_ZP(CMP); +case 0xD5: LD_ZPX(CMP); +case 0xCD: LD_AB(CMP); +case 0xDD: LD_ABX(CMP); +case 0xD9: LD_ABY(CMP); +case 0xD2: LD_IND(CMP); +case 0xC1: LD_IX(CMP); +case 0xD1: LD_IY(CMP); + +case 0xE0: LD_IM(CPX); +case 0xE4: LD_ZP(CPX); +case 0xEC: LD_AB(CPX); + +case 0xC0: LD_IM(CPY); +case 0xC4: LD_ZP(CPY); +case 0xCC: LD_AB(CPY); + +case 0x49: LD_IM(EOR); +case 0x45: LD_ZP(EOR); +case 0x55: LD_ZPX(EOR); +case 0x4D: LD_AB(EOR); +case 0x5D: LD_ABX(EOR); +case 0x59: LD_ABY(EOR); +case 0x52: LD_IND(EOR); +case 0x41: LD_IX(EOR); +case 0x51: LD_IY(EOR); + +case 0xA9: LD_IM(LDA); +case 0xA5: LD_ZP(LDA); +case 0xB5: LD_ZPX(LDA); +case 0xAD: LD_AB(LDA); +case 0xBD: LD_ABX(LDA); +case 0xB9: LD_ABY(LDA); +case 0xB2: LD_IND(LDA); +case 0xA1: LD_IX(LDA); +case 0xB1: LD_IY(LDA); + +case 0xA2: LD_IM(LDX); +case 0xA6: LD_ZP(LDX); +case 0xB6: LD_ZPY(LDX); +case 0xAE: LD_AB(LDX); +case 0xBE: LD_ABY(LDX); + +case 0xA0: LD_IM(LDY); +case 0xA4: LD_ZP(LDY); +case 0xB4: LD_ZPX(LDY); +case 0xAC: LD_AB(LDY); +case 0xBC: LD_ABX(LDY); + +case 0x09: LD_IM(ORA); +case 0x05: LD_ZP(ORA); +case 0x15: LD_ZPX(ORA); +case 0x0D: LD_AB(ORA); +case 0x1D: LD_ABX(ORA); +case 0x19: LD_ABY(ORA); +case 0x12: LD_IND(ORA); +case 0x01: LD_IX(ORA); +case 0x11: LD_IY(ORA); + +case 0xE9: LD_IM(SBC); +case 0xE5: LD_ZP(SBC); +case 0xF5: LD_ZPX(SBC); +case 0xED: LD_AB(SBC); +case 0xFD: LD_ABX(SBC); +case 0xF9: LD_ABY(SBC); +case 0xF2: LD_IND(SBC); +case 0xE1: LD_IX(SBC); +case 0xF1: LD_IY(SBC); + +case 0x85: ST_ZP(HU_A); +case 0x95: ST_ZPX(HU_A); +case 0x8D: ST_AB(HU_A); +case 0x9D: ST_ABX(HU_A); +case 0x99: ST_ABY(HU_A); +case 0x92: ST_IND(HU_A); +case 0x81: ST_IX(HU_A); +case 0x91: ST_IY(HU_A); + +case 0x86: ST_ZP(HU_X); +case 0x96: ST_ZPY(HU_X); +case 0x8E: ST_AB(HU_X); + +case 0x84: ST_ZP(HU_Y); +case 0x94: ST_ZPX(HU_Y); +case 0x8C: ST_AB(HU_Y); + +/* BBRi */ +case 0x0F: LD_ZP(BBRi(0)); +case 0x1F: LD_ZP(BBRi(1)); +case 0x2F: LD_ZP(BBRi(2)); +case 0x3F: LD_ZP(BBRi(3)); +case 0x4F: LD_ZP(BBRi(4)); +case 0x5F: LD_ZP(BBRi(5)); +case 0x6F: LD_ZP(BBRi(6)); +case 0x7F: LD_ZP(BBRi(7)); + +/* BBSi */ +case 0x8F: LD_ZP(BBSi(0)); +case 0x9F: LD_ZP(BBSi(1)); +case 0xAF: LD_ZP(BBSi(2)); +case 0xBF: LD_ZP(BBSi(3)); +case 0xCF: LD_ZP(BBSi(4)); +case 0xDF: LD_ZP(BBSi(5)); +case 0xEF: LD_ZP(BBSi(6)); +case 0xFF: LD_ZP(BBSi(7)); + +/* BRA */ +case 0x80: BRA; break; + +/* BSR */ +case 0x44: + { + PUSH_PC(); + BRA; + } + break; + +/* BCC */ +case 0x90: JR(!(HU_P&C_FLAG)); break; + +/* BCS */ +case 0xB0: JR(HU_P&C_FLAG); break; + +/* BVC */ +case 0x50: JR(!(HU_P&V_FLAG)); break; + +/* BVS */ +case 0x70: JR(HU_P&V_FLAG); break; + +#ifdef HUC6280_LAZY_FLAGS + + /* BEQ */ + case 0xF0: JR(!(HU_ZNFlags & 0xFF)); break; + + /* BNE */ + case 0xD0: JR((HU_ZNFlags & 0xFF)); break; + + /* BMI */ + case 0x30: JR((HU_ZNFlags & 0x80000000)); break; + + /* BPL */ + case 0x10: JR(!(HU_ZNFlags & 0x80000000)); break; + +#else + + /* BEQ */ + case 0xF0: JR(HU_P&Z_FLAG); break; + + /* BNE */ + case 0xD0: JR(!(HU_P&Z_FLAG)); break; + + /* BMI */ + case 0x30: JR(HU_P&N_FLAG); break; + + /* BPL */ + case 0x10: JR(!(HU_P&N_FLAG)); break; + +#endif + +// RMB 65SC02 +case 0x07: RMW_ZP(RMB(0)); +case 0x17: RMW_ZP(RMB(1)); +case 0x27: RMW_ZP(RMB(2)); +case 0x37: RMW_ZP(RMB(3)); +case 0x47: RMW_ZP(RMB(4)); +case 0x57: RMW_ZP(RMB(5)); +case 0x67: RMW_ZP(RMB(6)); +case 0x77: RMW_ZP(RMB(7)); + +// SMB 65SC02 +case 0x87: RMW_ZP(SMB(0)); +case 0x97: RMW_ZP(SMB(1)); +case 0xa7: RMW_ZP(SMB(2)); +case 0xb7: RMW_ZP(SMB(3)); +case 0xc7: RMW_ZP(SMB(4)); +case 0xd7: RMW_ZP(SMB(5)); +case 0xe7: RMW_ZP(SMB(6)); +case 0xf7: RMW_ZP(SMB(7)); + +// STZ 65C02 +case 0x64: ST_ZP(0); +case 0x74: ST_ZPX(0); +case 0x9C: ST_AB(0); +case 0x9E: ST_ABX(0); + +// TRB 65SC02 +case 0x14: RMW_ZP(TRB); +case 0x1C: RMW_AB(TRB); + +// TSB 65SC02 +case 0x04: RMW_ZP(TSB); +case 0x0C: RMW_AB(TSB); + +// TST +case 0x83: { uint8 zoomhack=RdAtPC(); IncPC(); LD_ZP(TST); } +case 0xA3: { uint8 zoomhack=RdAtPC(); IncPC(); LD_ZPX(TST); } +case 0x93: { uint8 zoomhack=RdAtPC(); IncPC(); LD_AB(TST); } +case 0xB3: { uint8 zoomhack=RdAtPC(); IncPC(); LD_ABX(TST); } + +case 0x22: // SAX(amaphone!) + { + uint8 tmp = HU_X; + HU_X = HU_A; + HU_A = tmp; + } + break; + +case 0x42: // SAY(what?) + { + uint8 tmp = HU_Y; + HU_Y = HU_A; + HU_A = tmp; + } + break; + +case 0x02: // SXY + { + uint8 tmp = HU_X; + HU_X = HU_Y; + HU_Y = tmp; + } + break; + +case 0x73: // TII + LD_BMT(BMT_TII); + +case 0xC3: // TDD + LD_BMT(BMT_TDD); + +case 0xD3: // TIN + LD_BMT(BMT_TIN); + +case 0xE3: // TIA + LD_BMT(BMT_TIA); + +case 0xF3: // TAI + LD_BMT(BMT_TAI); + +case 0x43: // TMAi + LD_IM(TMA); + +case 0x53: // TAMi + LD_IM(TAM); + +case 0x03: // ST0 + LD_IM(ST0); + +case 0x13: // ST1 + LD_IM(ST1); + +case 0x23: // ST2 + LD_IM(ST2); + + +case 0xF4: /* SET */ + { + // AND, EOR, ORA, ADC + uint8 Abackup = HU_A; + + ADDCYC(3); + HU_A = HU_Page1[HU_X]; //PAGE1_R[HU_X]; + + switch(RdAtPC()) + { + default: //puts("Bad SET"); + break; + + case 0x69: IncPC(); LD_IM(ADC); + case 0x65: IncPC(); LD_ZP(ADC); + case 0x75: IncPC(); LD_ZPX(ADC); + case 0x6D: IncPC(); LD_AB(ADC); + case 0x7D: IncPC(); LD_ABX(ADC); + case 0x79: IncPC(); LD_ABY(ADC); + case 0x72: IncPC(); LD_IND(ADC); + case 0x61: IncPC(); LD_IX(ADC); + case 0x71: IncPC(); LD_IY(ADC); + + case 0x29: IncPC(); LD_IM(AND); + case 0x25: IncPC(); LD_ZP(AND); + case 0x35: IncPC(); LD_ZPX(AND); + case 0x2D: IncPC(); LD_AB(AND); + case 0x3D: IncPC(); LD_ABX(AND); + case 0x39: IncPC(); LD_ABY(AND); + case 0x32: IncPC(); LD_IND(AND); + case 0x21: IncPC(); LD_IX(AND); + case 0x31: IncPC(); LD_IY(AND); + + case 0x49: IncPC(); LD_IM(EOR); + case 0x45: IncPC(); LD_ZP(EOR); + case 0x55: IncPC(); LD_ZPX(EOR); + case 0x4D: IncPC(); LD_AB(EOR); + case 0x5D: IncPC(); LD_ABX(EOR); + case 0x59: IncPC(); LD_ABY(EOR); + case 0x52: IncPC(); LD_IND(EOR); + case 0x41: IncPC(); LD_IX(EOR); + case 0x51: IncPC(); LD_IY(EOR); + + case 0x09: IncPC(); LD_IM(ORA); + case 0x05: IncPC(); LD_ZP(ORA); + case 0x15: IncPC(); LD_ZPX(ORA); + case 0x0D: IncPC(); LD_AB(ORA); + case 0x1D: IncPC(); LD_ABX(ORA); + case 0x19: IncPC(); LD_ABY(ORA); + case 0x12: IncPC(); LD_IND(ORA); + case 0x01: IncPC(); LD_IX(ORA); + case 0x11: IncPC(); LD_IY(ORA); + } + HU_Page1[HU_X] /*PAGE1_W[HU_X]*/ = HU_A; + HU_A = Abackup; + } + break; + +case 0xFC: + { + int32 ec_tmp; + ec_tmp = next_event - HuCPU.timestamp; + if(ec_tmp > 0) + { + ADDCYC(ec_tmp); + } + } + break; + +default: MDFN_printf("Bad %02x at $%04x\n", b1, GetRealPC()); + break; diff --git a/libmednahawk/src/pce_fast/input.cpp b/libmednahawk/src/pce_fast/input.cpp new file mode 100644 index 0000000000..571bf56413 --- /dev/null +++ b/libmednahawk/src/pce_fast/input.cpp @@ -0,0 +1,338 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include "input.h" +#include "huc.h" +#include "../movie.h" +#include "../endian.h" + +namespace PCE_Fast +{ + +static int InputTypes[5]; +static uint8 *data_ptr[5]; + +static bool AVPad6Which[5]; // Lower(8 buttons) or higher(4 buttons). +static bool AVPad6Enabled[5]; + +uint16 pce_jp_data[5]; + +static int64 mouse_last_meow[5]; + +static int32 mouse_x[5], mouse_y[5]; +static uint16 mouse_rel[5]; + +uint8 pce_mouse_button[5]; +uint8 mouse_index[5]; + +static uint8 sel; +static uint8 read_index = 0; + +static void SyncSettings(void); + +void PCEINPUT_SettingChanged(const char *name) +{ + SyncSettings(); +} + +void PCEINPUT_Init(void) +{ + SyncSettings(); +} + +void PCEINPUT_SetInput(int port, const char *type, void *ptr) +{ + assert(port < 5); + + if(!strcasecmp(type, "gamepad")) + InputTypes[port] = 1; + else if(!strcasecmp(type, "mouse")) + InputTypes[port] = 2; + else + InputTypes[port] = 0; + data_ptr[port] = (uint8 *)ptr; +} + +void INPUT_Frame(void) +{ + for(int x = 0; x < 5; x++) + { + if(InputTypes[x] == 1) + { + uint16 new_data = data_ptr[x][0] | (data_ptr[x][1] << 8); + + if((new_data & 0x1000) && !(pce_jp_data[x] & 0x1000)) + { + AVPad6Enabled[x] = !AVPad6Enabled[x]; + MDFN_DispMessage("%d-button mode selected for pad %d", AVPad6Enabled[x] ? 6 : 2, x + 1); + } + + pce_jp_data[x] = new_data; + } + else if(InputTypes[x] == 2) + { + mouse_x[x] += (int32)MDFN_de32lsb(data_ptr[x] + 0); + mouse_y[x] += (int32)MDFN_de32lsb(data_ptr[x] + 4); + pce_mouse_button[x] = *(uint8 *)(data_ptr[x] + 8); + } + } +} + +void INPUT_FixTS(void) +{ + for(int x = 0; x < 5; x++) + { + if(InputTypes[x] == 2) + mouse_last_meow[x] -= HuCPU.timestamp; + } +} + +static INLINE bool CheckLM(int n) +{ + if((int64)HuCPU.timestamp - mouse_last_meow[n] > 10000) + { + mouse_last_meow[n] = HuCPU.timestamp; + + int32 rel_x = (int32)((0-mouse_x[n])); + int32 rel_y = (int32)((0-mouse_y[n])); + + if(rel_x < -127) rel_x = -127; + if(rel_x > 127) rel_x = 127; + if(rel_y < -127) rel_y = -127; + if(rel_y > 127) rel_y = 127; + + mouse_rel[n] = ((rel_x & 0xF0) >> 4) | ((rel_x & 0x0F) << 4); + mouse_rel[n] |= (((rel_y & 0xF0) >> 4) | ((rel_y & 0x0F) << 4)) << 8; + + mouse_x[n] += (int32)(rel_x); + mouse_y[n] += (int32)(rel_y); + + return(1); + } + return(0); +} + +uint8 INPUT_Read(unsigned int A) +{ + uint8 ret = 0xF; + int tmp_ri = read_index; + + if(tmp_ri > 4) + ret ^= 0xF; + else + { + if(!InputTypes[tmp_ri]) + ret ^= 0xF; + else if(InputTypes[tmp_ri] == 2) // Mouse + { + if(sel & 1) + { + CheckLM(tmp_ri); + ret ^= 0xF; + ret ^= mouse_rel[tmp_ri] & 0xF; + + mouse_rel[tmp_ri] >>= 4; + } + else + { + if(pce_mouse_button[tmp_ri] & 1) + ret ^= 0x3; //pce_mouse_button[tmp_ri]; + + if(pce_mouse_button[tmp_ri] & 0x2) + ret ^= 0x8; + } + } + else + { + if(InputTypes[tmp_ri] == 1) // Gamepad + { + if(AVPad6Which[tmp_ri] && AVPad6Enabled[tmp_ri]) + { + if(sel & 1) + ret ^= 0x0F; + else + ret ^= (pce_jp_data[tmp_ri] >> 8) & 0x0F; + } + else + { + if(sel & 1) + ret ^= (pce_jp_data[tmp_ri] >> 4) & 0x0F; + else + ret ^= pce_jp_data[tmp_ri] & 0x0F; + } + if(!(sel & 1)) + AVPad6Which[tmp_ri] = !AVPad6Which[tmp_ri]; + } + } + } + + if(!PCE_IsCD) + ret |= 0x80; // Set when CDROM is not attached + + //ret |= 0x40; // PC Engine if set, TG16 if clear. Let's leave it clear, PC Engine games don't seem to mind if it's clear, but TG16 games barf if it's set. + + ret |= 0x30; // Always-set? + + return(ret); +} + +void INPUT_Write(unsigned int A, uint8 V) +{ + if((V & 1) && !(sel & 2) && (V & 2)) + { + read_index = 0; + } + else if((V & 1) && !(sel & 1)) + { + if(read_index < 255) + read_index++; + } + sel = V & 3; +} + +int INPUT_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + // 0.8.A fix: + SFARRAYB(AVPad6Enabled, 5), + SFARRAYB(AVPad6Which, 5), + + SFVARN(mouse_last_meow[0], "mlm_0"), + SFVARN(mouse_last_meow[1], "mlm_1"), + SFVARN(mouse_last_meow[2], "mlm_2"), + SFVARN(mouse_last_meow[3], "mlm_3"), + SFVARN(mouse_last_meow[4], "mlm_4"), + + SFARRAY32(mouse_x, 5), + SFARRAY32(mouse_y, 5), + SFARRAY16(mouse_rel, 5), + SFARRAY(pce_mouse_button, 5), + SFARRAY(mouse_index, 5), + // end 0.8.A fix + + SFARRAY16(pce_jp_data, 5), + SFVAR(sel), + SFVAR(read_index), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "JOY"); + + return(ret); +} + +// GamepadIDII and GamepadIDII_DSR must be EXACTLY the same except for the RUN+SELECT exclusion in the latter. +static const InputDeviceInputInfoStruct GamepadIDII[] = +{ + { "i", "I", 12, IDIT_BUTTON_CAN_RAPID, NULL }, + { "ii", "II", 11, IDIT_BUTTON_CAN_RAPID, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "run", "RUN", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "iii", "III", 10, IDIT_BUTTON, NULL }, + { "iv", "IV", 7, IDIT_BUTTON, NULL }, + { "v", "V", 8, IDIT_BUTTON, NULL }, + { "vi", "VI", 9, IDIT_BUTTON, NULL }, + { "mode_select", "2/6 Mode Select", 6, IDIT_BUTTON, NULL }, +}; +static const InputDeviceInputInfoStruct GamepadIDII_DSR[] = +{ + { "i", "I", 12, IDIT_BUTTON_CAN_RAPID, NULL }, + { "ii", "II", 11, IDIT_BUTTON_CAN_RAPID, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, "run" }, + { "run", "RUN", 5, IDIT_BUTTON, "select" }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "iii", "III", 10, IDIT_BUTTON, NULL }, + { "iv", "IV", 7, IDIT_BUTTON, NULL }, + { "v", "V", 8, IDIT_BUTTON, NULL }, + { "vi", "VI", 9, IDIT_BUTTON, NULL }, + { "mode_select", "2/6 Mode Select", 6, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct MouseIDII[] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS_REL }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS_REL }, + { "left", "Left Button", 0, IDIT_BUTTON, NULL }, + { "right", "Right Button", 1, IDIT_BUTTON, NULL }, +}; + +// If we add more devices to this array, REMEMBER TO UPDATE the hackish array indexing in the SyncSettings() function +// below. +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + GamepadIDII, + }, + + // Mouse + { + "mouse", + "Mouse", + NULL, + NULL, + sizeof(MouseIDII) / sizeof(InputDeviceInputInfoStruct), + MouseIDII, + }, + +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "port1", "Port 1", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port2", "Port 2", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port3", "Port 3", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port4", "Port 4", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port5", "Port 5", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, +}; + +InputInfoStruct PCEInputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +static void SyncSettings(void) +{ + MDFNGameInfo->mouse_sensitivity = MDFN_GetSettingF("pce_fast.mouse_sensitivity"); + InputDeviceInfo[1].IDII = MDFN_GetSettingB("pce_fast.disable_softreset") ? GamepadIDII_DSR : GamepadIDII; +} + +}; diff --git a/libmednahawk/src/pce_fast/input.h b/libmednahawk/src/pce_fast/input.h new file mode 100644 index 0000000000..14c9402d55 --- /dev/null +++ b/libmednahawk/src/pce_fast/input.h @@ -0,0 +1,19 @@ +#ifndef __PCE_INPUT_H +#define __PCE_INPUT_H + +namespace PCE_Fast +{ + +void PCEINPUT_Init(void); +void PCEINPUT_SettingChanged(const char *name); +void PCEINPUT_SetInput(int port, const char *type, void *ptr); +uint8 INPUT_Read(unsigned int A); +void INPUT_Write(unsigned int A, uint8 V); +void INPUT_Frame(void); +int INPUT_StateAction(StateMem *sm, int load, int data_only); +extern InputInfoStruct PCEInputInfo; +void INPUT_FixTS(void); + +}; + +#endif diff --git a/libmednahawk/src/pce_fast/ioread.inc b/libmednahawk/src/pce_fast/ioread.inc new file mode 100644 index 0000000000..60102d9625 --- /dev/null +++ b/libmednahawk/src/pce_fast/ioread.inc @@ -0,0 +1,119 @@ + const void * const IOReadHandlers[0x20] = + { + &&VDC_00, &&VDC_01, &&VDC_02, &&VDC_03, + &&VCE_00, &&VCE_01, &&VCE_02, &&VCE_03, + &&PSG, &&PSG, &&PSG, &&PSG, + &&TIMER_00, &&TIMER_01, &&TIMER_02, &&TIMER_03, + &&INPUT_00, &&INPUT_01, &&INPUT_02, &&INPUT_03, + &&IRQ_00, &&IRQ_01, &&IRQ_02, &&IRQ_03, + &&CDROM, &&CDROM, &&CDROM, &&CDROM, + &&EXP, &&EXP, &&EXP, &&EXP + }; + + A &= 0x1FFF; + + goto *IOReadHandlers[((A & 0x1C00) >> 8) | (A & 0x3)]; + +#if IOREAD_SGX==1 + VDC_00: + VDC_01: + VDC_02: + VDC_03: HuC6280_StealCycle(); + return(VDC_Read(A&0x1F, TRUE)); +#else + + VDC_00: + HuC6280_StealCycle(); + return(VDC_Read(0, FALSE)); + + VDC_01: + HuC6280_StealCycle(); + return(VDC_Read(1, FALSE)); + + VDC_02: + HuC6280_StealCycle(); + return(VDC_Read(2, FALSE)); + + VDC_03: + HuC6280_StealCycle(); + return(VDC_Read(3, FALSE)); +#endif + + VCE_00: + VCE_01: + VCE_02: + VCE_03: + HuC6280_StealCycle(); + return(VCE_Read(A)); + + PSG: + if(HuCPU.in_block_move) + return(0); + return(PCEIODataBuffer); + + + TIMER_00: + TIMER_01: + TIMER_02: + TIMER_03: + + if(HuCPU.in_block_move) + return(0); + { + uint8 ret = HuC6280_TimerRead(A); + PCEIODataBuffer = ret; + return(ret); + } + + INPUT_00: + INPUT_01: + INPUT_02: + INPUT_03: + if(HuCPU.in_block_move) + return(0); + { + uint8 ret = INPUT_Read(A); + PCEIODataBuffer = ret; + return(ret); + } + + IRQ_00: + IRQ_01: + IRQ_02: + IRQ_03: + if(HuCPU.in_block_move) + return(0); + { + uint8 ret = HuC6280_IRQStatusRead(A); + PCEIODataBuffer = ret; + return(ret); + } + + CDROM: + if(IsTsushin) + return(PCE_TsushinRead(A)); + + if(!PCE_IsCD) + return(0xFF); + + if((A & 0x1E00) == 0x1A00) + { + if(arcade_card) + return(arcade_card->Read(A & 0x1FFF)); + else + return(0); + } + else + { + int32 next_cd_event; + + return(PCECD_Read(HuCPU.timestamp * 3, A, next_cd_event)); + } + + + EXP: + if(IsHES) + return(ReadIBP(A)); + + //printf("Meow: %08x, %02x:%04x\n", A, A >> 13, A & 0x1FFF); + return(0xFF); diff --git a/libmednahawk/src/pce_fast/pce.cpp b/libmednahawk/src/pce_fast/pce.cpp new file mode 100644 index 0000000000..d8d09b592f --- /dev/null +++ b/libmednahawk/src/pce_fast/pce.cpp @@ -0,0 +1,676 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pce.h" +#include +#include "vdc.h" +#include "pce_psg/pce_psg.h" +#include "input.h" +#include "huc.h" +#include "../cdrom/pcecd.h" +#include "../cdrom/scsicd.h" +#include "hes.h" +#include "tsushin.h" +#include "arcade_card/arcade_card.h" +#include "../mempatcher.h" +#include "../cdrom/cdromif.h" + +namespace PCE_Fast +{ + +static PCE_PSG *psg = NULL; +extern ArcadeCard *arcade_card; // Bah, lousy globals. + +static Blip_Buffer sbuf[2]; + +bool PCE_ACEnabled; + +static bool IsSGX; +static bool IsHES; +int pce_overclocked; + +// Statically allocated for speed...or something. +uint8 ROMSpace[0x88 * 8192 + 8192]; // + 8192 for PC-as-pointer safety padding + +uint8 BaseRAM[32768 + 8192]; // 8KB for PCE, 32KB for Super Grafx // + 8192 for PC-as-pointer safety padding + +uint8 PCEIODataBuffer; +readfunc PCERead[0x100]; +writefunc PCEWrite[0x100]; + +static DECLFR(PCEBusRead) +{ + //printf("BUS Read: %02x %04x\n", A >> 13, A); + return(0xFF); +} + +static DECLFW(PCENullWrite) +{ + //printf("Null Write: %02x, %08x %02x\n", A >> 13, A, V); +} + +static DECLFR(BaseRAMReadSGX) +{ + return((BaseRAM - (0xF8 * 8192))[A]); +} + +static DECLFW(BaseRAMWriteSGX) +{ + (BaseRAM - (0xF8 * 8192))[A] = V; +} + +static DECLFR(BaseRAMRead) +{ + return((BaseRAM - (0xF8 * 8192))[A]); +} + +static DECLFR(BaseRAMRead_Mirrored) +{ + return(BaseRAM[A & 0x1FFF]); +} + +static DECLFW(BaseRAMWrite) +{ + (BaseRAM - (0xF8 * 8192))[A] = V; +} + +static DECLFW(BaseRAMWrite_Mirrored) +{ + BaseRAM[A & 0x1FFF] = V; +} + +static DECLFR(IORead) +{ + #define IOREAD_SGX 0 + #include "ioread.inc" + #undef IOREAD_SGX +} + +static DECLFR(IOReadSGX) +{ + #define IOREAD_SGX 1 + #include "ioread.inc" + #undef IOREAD_SGX +} + +static DECLFW(IOWrite) +{ + A &= 0x1FFF; + + switch(A & 0x1c00) + { + case 0x0000: HuC6280_StealCycle(); + VDC_Write(A, V); + break; + case 0x0400: HuC6280_StealCycle(); + VCE_Write(A, V); + break; + + case 0x0800: PCEIODataBuffer = V; + psg->Write(HuCPU.timestamp / pce_overclocked, A, V); + break; + + case 0x0c00: PCEIODataBuffer = V; + HuC6280_TimerWrite(A, V); + break; + + case 0x1000: PCEIODataBuffer = V; INPUT_Write(A, V); break; + case 0x1400: PCEIODataBuffer = V; HuC6280_IRQStatusWrite(A, V); break; + case 0x1800: if(IsTsushin) + PCE_TsushinWrite(A, V); + + if(!PCE_IsCD) + break; + + if((A & 0x1E00) == 0x1A00) + { + if(arcade_card) + arcade_card->Write(A & 0x1FFF, V); + } + else + { + int32 dummy_ne; + + dummy_ne = PCECD_Write(HuCPU.timestamp * 3, A, V); + } + break; + //case 0x1C00: break; // Expansion + //default: printf("Eep: %04x\n", A); break; + } + +} + +static void PCECDIRQCB(bool asserted) +{ + if(asserted) + HuC6280_IRQBegin(MDFN_IQIRQ2); + else + HuC6280_IRQEnd(MDFN_IQIRQ2); +} + +bool PCE_InitCD(void) +{ + PCECD_Settings cd_settings; + memset(&cd_settings, 0, sizeof(PCECD_Settings)); + + cd_settings.CDDA_Volume = (double)MDFN_GetSettingUI("pce_fast.cddavolume") / 100; + cd_settings.CD_Speed = MDFN_GetSettingUI("pce_fast.cdspeed"); + + cd_settings.ADPCM_Volume = (double)MDFN_GetSettingUI("pce_fast.adpcmvolume") / 100; + cd_settings.ADPCM_LPF = MDFN_GetSettingB("pce_fast.adpcmlp"); + + if(cd_settings.CDDA_Volume != 1.0) + MDFN_printf(_("CD-DA Volume: %d%%\n"), (int)(100 * cd_settings.CDDA_Volume)); + + if(cd_settings.ADPCM_Volume != 1.0) + MDFN_printf(_("ADPCM Volume: %d%%\n"), (int)(100 * cd_settings.ADPCM_Volume)); + + return(PCECD_Init(&cd_settings, PCECDIRQCB, PCE_MASTER_CLOCK, pce_overclocked, &sbuf[0], &sbuf[1])); +} + + +static int LoadCommon(void); +static void LoadCommonPre(void); + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(memcmp(fp->data, "HESM", 4) && strcasecmp(fp->ext, "pce") && strcasecmp(fp->ext, "sgx")) + return(FALSE); + + return(TRUE); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + uint32 headerlen = 0; + uint32 r_size; + + IsHES = 0; + IsSGX = 0; + + if(!memcmp(fp->data, "HESM", 4)) + IsHES = 1; + + LoadCommonPre(); + + if(!IsHES) + { + if(fp->size & 0x200) // 512 byte header! + headerlen = 512; + } + + r_size = fp->size - headerlen; + if(r_size > 4096 * 1024) r_size = 4096 * 1024; + + for(int x = 0; x < 0x100; x++) + { + PCERead[x] = PCEBusRead; + PCEWrite[x] = PCENullWrite; + } + + uint32 crc = crc32(0, fp->data + headerlen, fp->size - headerlen); + + + if(IsHES) + { + if(!PCE_HESLoad(fp->data, fp->size)) + return(0); + } + else + HuCLoad(fp->data + headerlen, fp->size - headerlen, crc); + + if(!strcasecmp(fp->ext, "sgx")) + IsSGX = TRUE; + + if(fp->size >= 8192 && !memcmp(fp->data + headerlen, "DARIUS Version 1.11b", strlen("DARIUS VERSION 1.11b"))) + { + MDFN_printf("SuperGfx: Darius Plus\n"); + IsSGX = 1; + } + + if(crc == 0x4c2126b0) + { + MDFN_printf("SuperGfx: Aldynes\n"); + IsSGX = 1; + } + + if(crc == 0x8c4588e2) + { + MDFN_printf("SuperGfx: 1941 - Counter Attack\n"); + IsSGX = 1; + } + if(crc == 0x1f041166) + { + MDFN_printf("SuperGfx: Madouou Granzort\n"); + IsSGX = 1; + } + if(crc == 0xb486a8ed) + { + MDFN_printf("SuperGfx: Daimakaimura\n"); + IsSGX = 1; + } + if(crc == 0x3b13af61) + { + MDFN_printf("SuperGfx: Battle Ace\n"); + IsSGX = 1; + } + + return(LoadCommon()); +} + +static void LoadCommonPre(void) +{ + // FIXME: Make these globals less global! + pce_overclocked = MDFN_GetSettingUI("pce_fast.ocmultiplier"); + PCE_ACEnabled = MDFN_GetSettingB("pce_fast.arcadecard"); + + if(pce_overclocked > 1) + MDFN_printf(_("CPU overclock: %dx\n"), pce_overclocked); + + if(MDFN_GetSettingUI("pce_fast.cdspeed") > 1) + MDFN_printf(_("CD-ROM speed: %ux\n"), (unsigned int)MDFN_GetSettingUI("pce_fast.cdspeed")); + + memset(HuCPUFastMap, 0, sizeof(HuCPUFastMap)); + for(int x = 0; x < 0x100; x++) + { + PCERead[x] = PCEBusRead; + PCEWrite[x] = PCENullWrite; + } + + MDFNMP_Init(1024, (1 << 21) / 1024); +} + +static int LoadCommon(void) +{ + IsSGX |= MDFN_GetSettingB("pce_fast.forcesgx") ? 1 : 0; + + if(IsHES) + IsSGX = 1; + // Don't modify IsSGX past this point. + + VDC_Init(IsSGX); + + if(IsSGX) + { + MDFN_printf("SuperGrafx Emulation Enabled.\n"); + PCERead[0xF8] = PCERead[0xF9] = PCERead[0xFA] = PCERead[0xFB] = BaseRAMReadSGX; + PCEWrite[0xF8] = PCEWrite[0xF9] = PCEWrite[0xFA] = PCEWrite[0xFB] = BaseRAMWriteSGX; + + for(int x = 0xf8; x < 0xfb; x++) + HuCPUFastMap[x] = BaseRAM - 0xf8 * 8192; + + PCERead[0xFF] = IOReadSGX; + } + else + { + PCERead[0xF8] = BaseRAMRead; + PCERead[0xF9] = PCERead[0xFA] = PCERead[0xFB] = BaseRAMRead_Mirrored; + + PCEWrite[0xF8] = BaseRAMWrite; + PCEWrite[0xF9] = PCEWrite[0xFA] = PCEWrite[0xFB] = BaseRAMWrite_Mirrored; + + for(int x = 0xf8; x < 0xfb; x++) + HuCPUFastMap[x] = BaseRAM - x * 8192; + + PCERead[0xFF] = IORead; + } + + MDFNMP_AddRAM(IsSGX ? 32768 : 8192, 0xf8 * 8192, BaseRAM); + + PCEWrite[0xFF] = IOWrite; + + HuC6280_Init(); + + psg = new PCE_PSG(&sbuf[0], &sbuf[1], PCE_PSG::REVISION_ENHANCED); //HUC6280A); + + psg->SetVolume(1.0); + + if(PCE_IsCD) + { + unsigned int cdpsgvolume = MDFN_GetSettingUI("pce_fast.cdpsgvolume"); + + if(cdpsgvolume != 100) + { + MDFN_printf(_("CD PSG Volume: %d%%\n"), cdpsgvolume); + } + + psg->SetVolume(0.678 * cdpsgvolume / 100); + + } + + PCEINPUT_Init(); + + PCE_Power(); + + MDFNGameInfo->LayerNames = IsSGX ? "BG0\0SPR0\0BG1\0SPR1\0" : "Background\0Sprites\0"; + MDFNGameInfo->fps = (uint32)((double)7159090.90909090 / 455 / 263 * 65536 * 256); + + // Clean this up: + if(!MDFN_GetSettingB("pce_fast.correct_aspect")) + MDFNGameInfo->fb_width = 682; + + if(!IsHES) + { + MDFNGameInfo->nominal_width = MDFN_GetSettingB("pce_fast.correct_aspect") ? 320 : 341; + MDFNGameInfo->nominal_height = MDFN_GetSettingUI("pce_fast.slend") - MDFN_GetSettingUI("pce_fast.slstart") + 1; + + MDFNGameInfo->lcm_width = MDFN_GetSettingB("pce_fast.correct_aspect") ? 1024 : 341; + MDFNGameInfo->lcm_height = MDFNGameInfo->nominal_height; + } + + return(1); +} + +static bool TestMagicCD(std::vector *CDInterfaces) +{ + static const uint8 magic_test[0x20] = { 0x82, 0xB1, 0x82, 0xCC, 0x83, 0x76, 0x83, 0x8D, 0x83, 0x4F, 0x83, 0x89, 0x83, 0x80, 0x82, 0xCC, + 0x92, 0x98, 0x8D, 0xEC, 0x8C, 0xA0, 0x82, 0xCD, 0x8A, 0x94, 0x8E, 0xAE, 0x89, 0xEF, 0x8E, 0xD0 + }; + uint8 sector_buffer[2048]; + CDIF *cdiface = (*CDInterfaces)[0]; + CDUtility::TOC toc; + bool ret = FALSE; + + memset(sector_buffer, 0, sizeof(sector_buffer)); + + cdiface->ReadTOC(&toc); + + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(toc.tracks[track].control & 0x4) + { + cdiface->ReadSector(sector_buffer, toc.tracks[track].lba, 1); + + if(!memcmp((char*)sector_buffer, (char *)magic_test, 0x20)) + ret = TRUE; + + // PCE CD BIOS apparently only looks at the first data track. + break; + } + } + + + // If it's a PC-FX CD(Battle Heat), return false. + // This is very kludgy. + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(toc.tracks[track].control & 0x4) + { + cdiface->ReadSector(sector_buffer, toc.tracks[track].lba, 1); + if(!strncmp("PC-FX:Hu_CD-ROM", (char*)sector_buffer, strlen("PC-FX:Hu_CD-ROM"))) + { + return(false); + } + } + } + + + // Now, test for the Games Express CD games. The GE BIOS seems to always look at sector 0x10, but only if the first track is a + // data track. + if(toc.first_track == 1 && (toc.tracks[1].control & 0x4)) + { + if(cdiface->ReadSector(sector_buffer, 0x10, 1)) + { + if(!memcmp((char *)sector_buffer + 0x8, "HACKER CD ROM SYSTEM", 0x14)) + { + ret = TRUE; + } + } + } + + return(ret); +} + +static int LoadCD(std::vector *CDInterfaces) +{ + std::string bios_path = MDFN_MakeFName(MDFNMKF_FIRMWARE, 0, MDFN_GetSettingS("pce_fast.cdbios").c_str() ); + + IsHES = 0; + IsSGX = 0; + + LoadCommonPre(); + + if(!HuCLoadCD(bios_path.c_str())) + return(0); + + SCSICD_SetDisc(true, NULL, true); + SCSICD_SetDisc(false, (*CDInterfaces)[0], true); + + return(LoadCommon()); +} + + +static void CloseGame(void) +{ + if(IsHES) + HES_Close(); + else + { + HuCClose(); + } + VDC_Close(); + if(psg) + { + delete psg; + psg = NULL; + } +} + +static void Emulate(EmulateSpecStruct *espec) +{ + INPUT_Frame(); + + MDFNMP_ApplyPeriodicCheats(); + + if(espec->VideoFormatChanged) + VDC_SetPixelFormat(espec->surface->format); //.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + + if(espec->SoundFormatChanged) + { + for(int y = 0; y < 2; y++) + { + sbuf[y].set_sample_rate(espec->SoundRate ? espec->SoundRate : 44100, 50); + sbuf[y].clock_rate((long)(PCE_MASTER_CLOCK / 3)); + sbuf[y].bass_freq(20); + } + } + VDC_RunFrame(espec->surface, &espec->DisplayRect, espec->LineWidths, IsHES ? 1 : espec->skip); + + + if(PCE_IsCD) + { + int32 dummy_ne; + + dummy_ne = PCECD_Run(HuCPU.timestamp * 3); + } + + psg->EndFrame(HuCPU.timestamp / pce_overclocked); + + if(espec->SoundBuf) + { + for(int y = 0; y < 2; y++) + { + sbuf[y].end_frame(HuCPU.timestamp / pce_overclocked); + espec->SoundBufSize = sbuf[y].read_samples(espec->SoundBuf + y, espec->SoundBufMaxSize, 1); + } + } + + espec->MasterCycles = HuCPU.timestamp * 3; + + INPUT_FixTS(); + + HuC6280_ResetTS(); + + if(PCE_IsCD) + PCECD_ResetTS(); + + if(IsHES && !espec->skip) + HES_Draw(espec->surface, &espec->DisplayRect, espec->SoundBuf, espec->SoundBufSize); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(BaseRAM, IsSGX? 32768 : 8192), + SFVAR(PCEIODataBuffer), + SFEND + }; + + //for(int i = 8192; i < 32768; i++) + // if(BaseRAM[i] != 0xFF) + // printf("%d %02x\n", i, BaseRAM[i]); + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + + ret &= HuC6280_StateAction(sm, load, data_only); + ret &= VDC_StateAction(sm, load, data_only); + ret &= psg->StateAction(sm, load, data_only); + ret &= INPUT_StateAction(sm, load, data_only); + ret &= HuC_StateAction(sm, load, data_only); + + if(load) + { + + } + + return(ret); +} + +void PCE_Power(void) +{ + memset(BaseRAM, 0x00, sizeof(BaseRAM)); + + if(!IsSGX) + for(int i = 8192; i < 32768; i++) + BaseRAM[i] = 0xFF; + + PCEIODataBuffer = 0xFF; + + if(IsHES) + HES_Reset(); + + HuC6280_Power(); + VDC_Power(); + psg->Power(HuCPU.timestamp / pce_overclocked); + HuC_Power(); + + if(PCE_IsCD) + { + int32 dummy_ne; + + dummy_ne = PCECD_Power(HuCPU.timestamp * 3); + } +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_RESET: PCE_Power(); break; + case MDFN_MSC_POWER: PCE_Power(); break; + } +} + +static MDFNSetting PCESettings[] = +{ +/* + { "pce_fast.input.port1", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 1."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pce_fast.input.port2", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 2."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pce_fast.input.port3", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 3."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pce_fast.input.port4", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 4."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pce_fast.input.port5", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 5."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, +*/ + + { "pce_fast.correct_aspect", MDFNSF_CAT_VIDEO, gettext_noop("Correct the aspect ratio."), NULL, MDFNST_BOOL, "1" }, + { "pce_fast.slstart", MDFNSF_NOFLAGS, gettext_noop("First rendered scanline."), NULL, MDFNST_UINT, "4", "0", "239" }, + { "pce_fast.slend", MDFNSF_NOFLAGS, gettext_noop("Last rendered scanline."), NULL, MDFNST_UINT, "235", "0", "239" }, + { "pce_fast.mouse_sensitivity", MDFNSF_NOFLAGS, gettext_noop("Mouse sensitivity."), NULL, MDFNST_FLOAT, "0.50", NULL, NULL, NULL, PCEINPUT_SettingChanged }, + { "pce_fast.disable_softreset", MDFNSF_NOFLAGS, gettext_noop("If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily."), NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, PCEINPUT_SettingChanged }, + { "pce_fast.forcesgx", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Force SuperGrafx emulation."), NULL, MDFNST_BOOL, "0" }, + { "pce_fast.arcadecard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable Arcade Card emulation."), NULL, MDFNST_BOOL, "1" }, + { "pce_fast.ocmultiplier", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("CPU overclock multiplier."), NULL, MDFNST_UINT, "1", "1", "100"}, + { "pce_fast.cdspeed", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("CD-ROM data transfer speed multiplier."), NULL, MDFNST_UINT, "1", "1", "100" }, + { "pce_fast.nospritelimit", MDFNSF_NOFLAGS, gettext_noop("Remove 16-sprites-per-scanline hardware limit."), NULL, MDFNST_BOOL, "0" }, + + { "pce_fast.cdbios", MDFNSF_EMU_STATE, gettext_noop("Path to the CD BIOS"), NULL, MDFNST_STRING, "syscard3.pce" }, + { "pce_fast.adpcmlp", MDFNSF_NOFLAGS, gettext_noop("Enable lowpass filter dependent on playback-frequency."), NULL, MDFNST_BOOL, "0" }, + { "pce_fast.cdpsgvolume", MDFNSF_NOFLAGS, gettext_noop("PSG volume when playing a CD game."), NULL, MDFNST_UINT, "100", "0", "200" }, + { "pce_fast.cddavolume", MDFNSF_NOFLAGS, gettext_noop("CD-DA volume."), NULL, MDFNST_UINT, "100", "0", "200" }, + { "pce_fast.adpcmvolume", MDFNSF_NOFLAGS, gettext_noop("ADPCM volume."), NULL, MDFNST_UINT, "100", "0", "200" }, + { NULL } +}; + +static uint8 MemRead(uint32 addr) +{ + return(PCERead[(addr / 8192) & 0xFF](addr)); +} + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".pce", gettext_noop("PC Engine ROM Image") }, + { ".hes", gettext_noop("PC Engine Music Rip") }, + { ".sgx", gettext_noop("SuperGrafx ROM Image") }, + { NULL, NULL } +}; + +}; + +MDFNGI EmulatedPCE_Fast = +{ + "pce_fast", + "PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx", + KnownExtensions, + MODPRIO_INTERNAL_LOW, + NULL, + &PCEInputInfo, + Load, + TestMagic, + LoadCD, + TestMagicCD, + CloseGame, + VDC_SetLayerEnableMask, + NULL, + NULL, + NULL, + NULL, + NULL, + MemRead, + false, + StateAction, + Emulate, + PCEINPUT_SetInput, + DoSimpleCommand, + PCESettings, + MDFN_MASTERCLOCK_FIXED(PCE_MASTER_CLOCK), + 0, + + true, // Multires possible? + + 0, // lcm_width + 0, // lcm_height + NULL, // Dummy + + 320, // Nominal width + 232, // Nominal height + + 512, // Framebuffer width + 242, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/pce_fast/pce.h b/libmednahawk/src/pce_fast/pce.h new file mode 100644 index 0000000000..d0b5cee729 --- /dev/null +++ b/libmednahawk/src/pce_fast/pce.h @@ -0,0 +1,45 @@ +#ifndef _PCE_H + +#include "../types.h" +#include "../mednafen.h" +#include "../state.h" +#include "../general.h" +#include "../memory.h" + +#define PCE_MASTER_CLOCK 21477272.727273 + +#define DECLFR(x) uint8 MDFN_FASTCALL x (uint32 A) +#define DECLFW(x) void MDFN_FASTCALL x (uint32 A, uint8 V) + +namespace PCE_Fast +{ +extern uint8 ROMSpace[0x88 * 8192 + 8192]; + +typedef void (MDFN_FASTCALL *writefunc)(uint32 A, uint8 V); +typedef uint8 (MDFN_FASTCALL *readfunc)(uint32 A); + +extern uint8 PCEIODataBuffer; + +bool PCE_InitCD(void); + +}; + +#include "huc6280.h" + +namespace PCE_Fast +{ +extern bool PCE_ACEnabled; // Arcade Card emulation enabled? +void PCE_Power(void); + +extern readfunc PCERead[0x100]; +extern writefunc PCEWrite[0x100]; +extern int pce_overclocked; + +extern uint8 BaseRAM[32768 + 8192]; + +}; + +using namespace PCE_Fast; + +#define _PCE_H +#endif diff --git a/libmednahawk/src/pce_fast/tsushin.cpp b/libmednahawk/src/pce_fast/tsushin.cpp new file mode 100644 index 0000000000..de3f7297f3 --- /dev/null +++ b/libmednahawk/src/pce_fast/tsushin.cpp @@ -0,0 +1,53 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + +#include "pce.h" + +namespace PCE_Fast +{ + +/* + Startup: + 0x80 -> $1830 + 0x40 -> $1823 + 0x50 -> $1823 + 0x02 -> $1821 + 0x40 -> $1823 + + Read from $1822 16 times, expecting (return value & 0xC0) == 0x80 each time + + 0x50 -> $1823 + 0x01 -> $1821 + 0x40 -> $1823 + 0x04 -> $1822 + +*/ + +DECLFR(PCE_TsushinRead) +{ + printf("Read: %04x\n", A); + + return(0x80); +} + +DECLFW(PCE_TsushinWrite) +{ + printf("Write: %04x %02x\n", A, V); +} + +}; diff --git a/libmednahawk/src/pce_fast/tsushin.h b/libmednahawk/src/pce_fast/tsushin.h new file mode 100644 index 0000000000..d1be97c24f --- /dev/null +++ b/libmednahawk/src/pce_fast/tsushin.h @@ -0,0 +1,12 @@ +#ifndef __PCE_TSUSHIN_H +#define __PCE_TSUSHIN_H + +namespace PCE_Fast +{ + +DECLFR(PCE_TsushinRead); +DECLFW(PCE_TsushinWrite); + +}; + +#endif diff --git a/libmednahawk/src/pce_fast/vdc.cpp b/libmednahawk/src/pce_fast/vdc.cpp new file mode 100644 index 0000000000..0885f0b880 --- /dev/null +++ b/libmednahawk/src/pce_fast/vdc.cpp @@ -0,0 +1,1748 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* VDC and VCE emulation */ + +/* +"Tonight I hooked up my Turbo Duo(with no games or CDs in it)'s video output to my PC sound card, recorded it, +and did a FFT and looked at the spectrum(around the line rate, 15-16KHz), and I also counted the number +of samples between the ~60Hz peaks(just to verify that the math shown below is remotely accurate). + +The spectrum peaked at 15734 Hz. 21477272.727272... / 3 / 15734 = 455.00(CPU cycles per scanline)" +*/ + +#include "pce.h" +#include "../video.h" +#include "vdc.h" +#include "huc.h" +#include "../cdrom/pcecd.h" +#include +#include + +namespace PCE_Fast +{ + +static uint8 *CustomColorMap = NULL; // 1024 * 3 +static uint32 CustomColorMapLen; // 512 or 1024 +static uint32 systemColorMap32[512], bw_systemColorMap32[512]; +static uint32 amask; // Alpha channel maskaroo +static uint32 amask_shift; +static uint32 userle; // User layer enable. +static uint32 disabled_layer_color; + +static bool unlimited_sprites; +static bool correct_aspect; + +#define ULE_BG0 1 +#define ULE_SPR0 2 +#define ULE_BG1 4 +#define ULE_SPR1 8 + +static const unsigned int bat_width_tab[4] = { 32, 64, 128, 128 }; +static const unsigned int bat_width_shift_tab[4] = { 5, 6, 7, 7 }; +static const unsigned int bat_height_tab[2] = { 32, 64 }; + +static unsigned int VDS; +static unsigned int VSW; +static unsigned int VDW; +static unsigned int VCR; +static unsigned int VBlankFL; + +vce_t vce; + +int VDC_TotalChips = 0; + +vdc_t *vdc_chips[2] = { NULL, NULL }; + +static INLINE void FixPCache(int entry) +{ + uint32 *cm32 = vce.bw ? bw_systemColorMap32 : systemColorMap32; + + if(!(entry & 0xFF)) + { + for(int x = 0; x < 16; x++) + vce.color_table_cache[(entry & 0x100) + (x << 4)] = cm32[vce.color_table[entry & 0x100]] | amask; + } + + if(entry & 0xF) + { + uint32 color = cm32[vce.color_table[entry]]; + + // For SuperGrafx VPCsprite handling to work + if(entry & 0x100) + color |= amask << 2; + + vce.color_table_cache[entry] = color; + } +} + +static INLINE void FixTileCache(vdc_t *which_vdc, uint16 A) +{ + uint32 charname = (A >> 4); + uint32 y = (A & 0x7); + uint64 *tc = &which_vdc->bg_tile_cache[charname][y]; + + uint32 bitplane01 = which_vdc->VRAM[y + charname * 16]; + uint32 bitplane23 = which_vdc->VRAM[y+ 8 + charname * 16]; + + *tc = 0; + + for(int x = 0; x < 8; x++) + { + uint32 raw_pixel = ((bitplane01 >> x) & 1); + raw_pixel |= ((bitplane01 >> (x + 8)) & 1) << 1; + raw_pixel |= ((bitplane23 >> x) & 1) << 2; + raw_pixel |= ((bitplane23 >> (x + 8)) & 1) << 3; + + #ifdef MSB_FIRST + *tc |= (uint64)raw_pixel << ((x) * 8); + #else + *tc |= (uint64)raw_pixel << ((7 - x) * 8); + #endif + } +} + +static INLINE void CheckFixSpriteTileCache(vdc_t *which_vdc, uint16 no, uint32 special) +{ + if(special != 0x4 && special != 0x5) + special = 0; + + if((special | 0x80) == which_vdc->spr_tile_clean[no]) + return; + + //printf("Oops: %d, %d, %d\n", no, special | 0x100, which_vdc->spr_tile_clean[no]); + if((no * 64) >= VRAM_Size) + { + //printf("Unmapped: %d\n", no); + //VDC_UNDEFINED("Unmapped VRAM sprite tile read"); + // Unnecessary, since we reset the sprite tile cache to 0 on reset/init anyway. + //memset(which_vdc->spr_tile_cache[no], 0x00, 16 * 16 * sizeof(uint16)); + } + else if(special) + { + for(int y = 0; y < 16; y++) + { + uint8 *tc = which_vdc->spr_tile_cache[no][y]; + + uint32 bitplane0 = which_vdc->VRAM[y + 0x00 + no * 0x40 + ((special & 1) << 5)]; + uint32 bitplane1 = which_vdc->VRAM[y + 0x10 + no * 0x40 + ((special & 1) << 5)]; + + for(int x = 0; x < 16; x++) + { + uint32 raw_pixel; + raw_pixel = ((bitplane0 >> x) & 1) << 0; + raw_pixel |= ((bitplane1 >> x) & 1) << 1; + tc[x] = raw_pixel; + } + } + } + else + { + for(int y = 0; y < 16; y++) + { + uint8 *tc = which_vdc->spr_tile_cache[no][y]; + + uint32 bitplane0 = which_vdc->VRAM[y + 0x00 + no * 0x40]; + uint32 bitplane1 = which_vdc->VRAM[y + 0x10 + no * 0x40]; + uint32 bitplane2 = which_vdc->VRAM[y + 0x20 + no * 0x40]; + uint32 bitplane3 = which_vdc->VRAM[y + 0x30 + no * 0x40]; + + for(int x = 0; x < 16; x++) + { + uint32 raw_pixel; + raw_pixel = ((bitplane0 >> x) & 1) << 0; + raw_pixel |= ((bitplane1 >> x) & 1) << 1; + raw_pixel |= ((bitplane2 >> x) & 1) << 2; + raw_pixel |= ((bitplane3 >> x) & 1) << 3; + tc[x] = raw_pixel; + } + } + } + + which_vdc->spr_tile_clean[no] = special | 0x80; +} + + +static INLINE void SetVCECR(uint8 V) +{ + if(((V & 0x80) >> 7) != vce.bw) + { + vce.bw = V & 0x80; + for(int x = 0; x < 512; x++) + FixPCache(x); + } + + vce.lc263 = (V & 0x04); + vce.dot_clock = V & 1; + if(V & 2) + vce.dot_clock = 2; + vce.CR = V; +} + +static unsigned int frame_counter; +static int32 need_vbi[2] = { 0, 0 }; +static int32 line_leadin1 = 0; +static int32 magical, cyc_tot; + +vpc_t vpc; + +// Some virtual vdc macros to make code simpler to read +#define M_vdc_HSW (vdc->HSR & 0x1F) // Horizontal Synchro Width +#define M_vdc_HDS ((vdc->HSR >> 8) & 0x7F) // Horizontal Display Start +#define M_vdc_HDW (vdc->HDR & 0x7F) // Horizontal Display Width +#define M_vdc_HDE ((vdc->HDR >> 8) & 0x7F) // Horizontal Display End + +#define M_vdc_VSW (vdc->VSR & 0x1F) // Vertical synchro width +#define M_vdc_VDS ((vdc->VSR >> 8) & 0xFF) // Vertical Display Start +#define M_vdc_VDW (vdc->VDR & 0x1FF) // Vertical Display Width(Height? :b) +#define M_vdc_VCR (vdc->VCR & 0xFF) + +#define VDCS_CR 0x01 // Sprite #0 collision interrupt occurred +#define VDCS_OR 0x02 // sprite overflow "" "" +#define VDCS_RR 0x04 // RCR "" "" +#define VDCS_DS 0x08 // VRAM to SAT DMA completion interrupt occurred +#define VDCS_DV 0x10 // VRAM to VRAM DMA completion interrupt occurred +#define VDCS_VD 0x20 // Vertical blank interrupt occurred +#define VDCS_BSY 0x40 // VDC is waiting for a CPU access slot during the active display area?? + +void VDC_SetPixelFormat(const MDFN_PixelFormat &format) +{ + amask = 1 << format.Ashift; + amask_shift = format.Ashift; + + for(int x = 0; x < 512; x++) + { + int r, g, b; + int sc_r, sc_g, sc_b; + + if(CustomColorMap) + { + r = CustomColorMap[x * 3 + 0]; + g = CustomColorMap[x * 3 + 1]; + b = CustomColorMap[x * 3 + 2]; + } + else + { + b = 36 * (x & 0x007); + r = 36 * ((x & 0x038) >> 3); + g = 36 * ((x & 0x1c0) >> 6); + } + + if(CustomColorMap && CustomColorMapLen == 1024) + { + sc_r = CustomColorMap[(512 + x) * 3 + 0]; + sc_g = CustomColorMap[(512 + x) * 3 + 1]; + sc_b = CustomColorMap[(512 + x) * 3 + 2]; + } + else + { + double y; + + y = round(0.300 * r + 0.589 * g + 0.111 * b); + + if(y < 0) + y = 0; + + if(y > 255) + y = 255; + + sc_r = sc_g = sc_b = y; + } + + systemColorMap32[x] = format.MakeColor(r, g, b); + bw_systemColorMap32[x] = format.MakeColor(sc_r, sc_g, sc_b); + } + + // I know the temptation is there, but don't combine these two loops just + // because they loop 512 times ;) + for(int x = 0; x < 512; x++) + FixPCache(x); + + disabled_layer_color = format.MakeColor(0x00, 0xFE, 0x00); +} + +DECLFR(VCE_Read) +{ + switch(A & 0x7) + { + case 4: return(vce.color_table[vce.ctaddress & 0x1FF]); + case 5: { + uint8 ret = vce.color_table[vce.ctaddress & 0x1FF] >> 8; + ret &= 1; + ret |= 0xFE; + vce.ctaddress++; + return(ret); + } + } + return(0xFF); +} + +DECLFW(VCE_Write) +{ + //printf("%04x %02x, %04x\n", A, V, HuCPU.PC); + switch(A&0x7) + { + case 0: SetVCECR(V); break; + case 2: vce.ctaddress &= 0x100; vce.ctaddress |= V; break; + case 3: vce.ctaddress &= 0x0FF; vce.ctaddress |= (V & 1) << 8; break; + case 4: vce.color_table[vce.ctaddress & 0x1FF] &= 0x100; + vce.color_table[vce.ctaddress & 0x1FF] |= V; + FixPCache(vce.ctaddress & 0x1FF); + break; + case 5: vce.color_table[vce.ctaddress & 0x1FF] &= 0xFF; + vce.color_table[vce.ctaddress & 0x1FF] |= (V & 1) << 8; + FixPCache(vce.ctaddress & 0x1FF); + vce.ctaddress++; + break; + } +} + + +void VDC_SetLayerEnableMask(uint64 mask) +{ + userle = mask; +} + +DECLFW(VDC_Write_ST) +{ + if(VDC_TotalChips == 2) + A |= vpc.st_mode ? 0x10 : 0; + + //printf("WriteST: %04x %02x\n", A, V); + VDC_Write(A, V); +} + +static void DoDMA(vdc_t *vdc) +{ + // Assuming one cycle for reads, one cycle for write, with DMA? + for(int i = 0; i < 455; i++) + { + if(!vdc->DMAReadWrite) + { + if(vdc->SOUR >= VRAM_Size) + VDC_UNDEFINED("Unmapped VRAM DMA read"); + + vdc->DMAReadBuffer = vdc->VRAM[vdc->SOUR]; + } + else + { + if(vdc->DESR < VRAM_Size) + { + vdc->VRAM[vdc->DESR] = vdc->DMAReadBuffer; + FixTileCache(vdc, vdc->DESR); + vdc->spr_tile_clean[vdc->DESR >> 6] = 0; + } + + //if(vdc->DCR & 0xC) + //printf("Pllal: %02x\n", vdc->DCR); + + vdc->SOUR += (((vdc->DCR & 0x4) >> 1) ^ 2) - 1; + vdc->DESR += (((vdc->DCR & 0x8) >> 2) ^ 2) - 1; + vdc->LENR--; + if(vdc->LENR == 0xFFFF) // DMA is done. + { + vdc->DMARunning = 0; + if(vdc->DCR & 0x02) + { + vdc->status |= VDCS_DV; + HuC6280_IRQBegin(MDFN_IQIRQ1); + VDC_DEBUG("DMA IRQ"); + } + break; + } + } + vdc->DMAReadWrite ^= 1; + } // for() +} + +DECLFW(VDC_Write) +{ + int msb = A & 1; + int chip = 0; + vdc_t *vdc; + + //printf("VDC Write: %04x %02x\n", A, V); + if(VDC_TotalChips == 2) + { + A &= 0x1F; + switch(A) + { + case 0x8: vpc.priority[0] = V; break; + case 0x9: vpc.priority[1] = V; break; + case 0xA: vpc.winwidths[0] &= 0x300; vpc.winwidths[0] |= V; break; + case 0xB: vpc.winwidths[0] &= 0x0FF; vpc.winwidths[0] |= (V & 3) << 8; break; + case 0xC: vpc.winwidths[1] &= 0x300; vpc.winwidths[1] |= V; break; + case 0xD: vpc.winwidths[1] &= 0x0FF; vpc.winwidths[1] |= (V & 3) << 8; break; + case 0xE: vpc.st_mode = V & 1; break; + } + if(A & 0x8) return; + + chip = (A & 0x10) >> 4; + vdc = vdc_chips[chip]; + A &= 0x3; + } + else + { + vdc = vdc_chips[0]; + A &= 0x3; + } + //if((A == 0x2 || A == 0x3) && ((vdc->select & 0x1f) >= 0x09) && ((vdc->select & 0x1f) <= 0x13)) + + //printf("%04x, %02x: %02x, %d\n", A, vdc->select, V, vdc->display_counter); + + switch(A) + { + case 0x0: vdc->select = V & 0x1F; break; + case 0x2: + case 0x3: + switch(vdc->select & 0x1F) + { + case 0x00: REGSETP(vdc->MAWR, V, msb); break; + case 0x01: REGSETP(vdc->MARR, V, msb); + if(msb) + { + if(vdc->MARR >= VRAM_Size) + VDC_UNDEFINED("Unmapped VRAM VRR(MARR set) read"); + + vdc->read_buffer = vdc->VRAM[vdc->MARR]; + } + break; + case 0x02: if(!msb) vdc->write_latch = V; + else + { + if(vdc->MAWR < VRAM_Size) + { + // A hack to fix Crest of Wolf, and maybe others. + while(vdc->DMARunning) + DoDMA(vdc); + + vdc->VRAM[vdc->MAWR] = (V << 8) | vdc->write_latch; + FixTileCache(vdc, vdc->MAWR); + vdc->spr_tile_clean[vdc->MAWR >> 6] = 0; + } + else + { + //VDC_UNDEFINED("Unmapped VRAM write"); + //printf("VROOM: %04x, %02x\n", vdc->MAWR, (vdc->CR >> 11) & 0x3); + } + vdc->MAWR += vram_inc_tab[(vdc->CR >> 11) & 0x3]; + } + break; + case 0x05: REGSETP(vdc->CR, V, msb); break; + case 0x06: REGSETP(vdc->RCR, V, msb); vdc->RCR &= 0x3FF; break; + case 0x07: REGSETP(vdc->BXR, V, msb); vdc->BXR &= 0x3FF; break; + case 0x08: REGSETP(vdc->BYR, V, msb); vdc->BYR &= 0x1FF; + vdc->BG_YOffset = vdc->BYR; // Set it on LSB and MSB writes(only changing on MSB breaks Youkai Douchuuki) + //printf("%04x\n", HuCPU.PC); + break; + case 0x09: REGSETP(vdc->MWR, V, msb); break; + case 0x0a: REGSETP(vdc->HSR, V, msb); break; + case 0x0b: REGSETP(vdc->HDR, V, msb); break; + case 0x0c: REGSETP(vdc->VSR, V, msb); break; + case 0x0d: REGSETP(vdc->VDR, V, msb); break; + case 0x0e: REGSETP(vdc->VCR, V, msb); break; + case 0x0f: REGSETP(vdc->DCR, V, msb); break; + case 0x10: REGSETP(vdc->SOUR, V, msb); break; + case 0x11: REGSETP(vdc->DESR, V, msb); break; + case 0x12: REGSETP(vdc->LENR, V, msb); + if(msb) + { + vdc->DMARunning = 1; + vdc->DMAReadWrite = 0; + if(vdc->burst_mode && !(vdc->DCR & 0x02)) + DoDMA(vdc); // Do one line's worth of DMA transfers + // because Cosmic Fantasy 4 is evil + // and uses timed writes to the DMA + // start register, rather than waiting until + // the machine says we're done, + // which would require cycle-accurate VDC emulation...like that's + // going to happen when I don't even have accurate values + // for HuC6280 instruction timings. :b + } + break; + case 0x13: REGSETP(vdc->SATB, V, msb); vdc->SATBPending = 1; break; +// default: printf("Oops 2: %04x %02x\n", vdc->select, V);break; + } + break; + } +} + + +// 682 + 8 + 128 = 818. +static INLINE void CalcStartEnd(const vdc_t *vdc, uint32 &start, uint32 &end) +{ + //static const unsigned int ClockModeWidths[3] = { 288, 384, 576 }; + static const unsigned int ClockPixelWidths[3] = { 341, 455, 682 }; + + start = (M_vdc_HDS + 1) * 8; + // Semi-hack for Asuka 120% + if(vce.dot_clock == 1 && M_vdc_HDS == 5 && M_vdc_HDE == 6 && M_vdc_HDW == 43 && M_vdc_HSW == 2) + start -= 8; + else if(vce.dot_clock == 0 && M_vdc_HDS == 2 && M_vdc_HDE == 3 && M_vdc_HDW == 33 && M_vdc_HSW == 2) + start -= 4; + // and for Addams Family + else if(vce.dot_clock == 1 && M_vdc_HDS == 4 && M_vdc_HDE == 4 && M_vdc_HDW == 43 && M_vdc_HSW == 9) + start -= 4; + end = start + (M_vdc_HDW + 1) * 8; + + if(start > (ClockPixelWidths[vce.dot_clock])) + start = ClockPixelWidths[vce.dot_clock]; + + if(end > (ClockPixelWidths[vce.dot_clock])) + end = ClockPixelWidths[vce.dot_clock]; + + if(start == end) // In case HDS is way off-screen, REMOVE when we confirm the rest of the code won't flip out + start = end - 8; // when start == end; + + // For: start - (vdc->BG_XOffset & 7) + end += 8; + start += 8; + + // For: alignment space when correct_aspect == 0 + end += 128; + start += 128; + +#if 0 + uint32 display_width; + display_width = (M_vdc_HDW + 1) * 8; + + if(display_width > ClockModeWidths[vce.dot_clock]) + display_width = ClockModeWidths[vce.dot_clock]; + + start = (ClockModeWidths[vce.dot_clock] - display_width) / 2; + + // For: start - (vdc->BG_XOffset & 7) + start += 8; + + // For: alignment space when correct_aspect == 0 + start += 128; + + // Semi-hack for Asuka 120% + if(vce.dot_clock == 1 && M_vdc_HDS == 5 && M_vdc_HDE == 6 && M_vdc_HDW == 43 && M_vdc_HSW == 2) + start += 8; + else if(vce.dot_clock == 0 && M_vdc_HDS == 2 && M_vdc_HDE == 3 && M_vdc_HDW == 33 && M_vdc_HSW == 2) + start += 4; + // and for Addams Family + else if(vce.dot_clock == 1 && M_vdc_HDS == 4 && M_vdc_HDE == 4 && M_vdc_HDW == 43 && M_vdc_HSW == 9) + start += 4; + + //MDFN_DispMessage((UTF8*)"dc: %d, %d %d %d %d; %d %d\n", vce.dot_clock, M_vdc_HDS, M_vdc_HDE, M_vdc_HDW, M_vdc_HSW, start, (M_vdc_HDS + 1) * 8); + + end = start + display_width; + if(end > (ClockModeWidths[vce.dot_clock] + 8 + 128)) + end = ClockModeWidths[vce.dot_clock] + 8 + 128; +#endif +} + +#define CB_EXL(n) (((n) << 4) | ((n) << 12) | ((n) << 20) | ((n) << 28) | ((n) << 36) | ((n) << 44) | ((n) << 52) | ((n) << 60)) +static const uint64 cblock_exlut[16] = { + CB_EXL(0ULL), CB_EXL(1ULL), CB_EXL(2ULL), CB_EXL(3ULL), CB_EXL(4ULL), CB_EXL(5ULL), CB_EXL(6ULL), CB_EXL(7ULL), + CB_EXL(8ULL), CB_EXL(9ULL), CB_EXL(10ULL), CB_EXL(11ULL), CB_EXL(12ULL), CB_EXL(13ULL), CB_EXL(14ULL), CB_EXL(15ULL) + }; + +static void DrawBG(const vdc_t *vdc, const uint32 count, uint8 *target) NO_INLINE; +static void DrawBG(const vdc_t *vdc, const uint32 count, uint8 *target) +{ + int bat_width = bat_width_tab[(vdc->MWR >> 4) & 3]; + int bat_width_mask = bat_width - 1; + int bat_width_shift = bat_width_shift_tab[(vdc->MWR >> 4) & 3]; + int bat_height_mask = bat_height_tab[(vdc->MWR >> 6) & 1] - 1; + uint64 *target64 = (uint64 *)target; + + { + int bat_y = ((vdc->BG_YOffset >> 3) & bat_height_mask) << bat_width_shift; + + int bat_boom = (vdc->BG_XOffset >> 3) & bat_width_mask; + int line_sub = vdc->BG_YOffset & 7; + + const uint16 *BAT_Base = &vdc->VRAM[bat_y]; + const uint64 *CG_Base = &vdc->bg_tile_cache[0][line_sub]; + + if((vdc->MWR & 0x3) == 0x3) + { + const uint64 cg_mask = (vdc->MWR & 0x80) ? 0xCCCCCCCCCCCCCCCCULL : 0x3333333333333333ULL; + + for(int x = count - 1; x >= 0; x -= 8) + { + const uint16 bat = BAT_Base[bat_boom]; + const uint64 color_or = cblock_exlut[bat >> 12]; + + *target64 = (CG_Base[(bat & 0xFFF) * 8] & cg_mask) | color_or; + + bat_boom = (bat_boom + 1) & bat_width_mask; + target64++; + } + } // End 2-bit CG rendering + else + { + for(int x = count - 1; x >= 0; x -= 8) + { + const uint16 bat = BAT_Base[bat_boom]; + const uint64 color_or = cblock_exlut[bat >> 12]; + + *target64 = CG_Base[(bat & 0xFFF) * 8] | color_or; + + bat_boom = (bat_boom + 1) & bat_width_mask; + target64++; + } + } // End normal CG rendering + } +} + +#define SPRF_PRIORITY 0x00080 +#define SPRF_HFLIP 0x00800 +#define SPRF_VFLIP 0x08000 +#define SPRF_SPRITE0 0x10000 + +static const unsigned int sprite_height_tab[4] = { 16, 32, 64, 64 }; +static const unsigned int sprite_height_no_mask[4] = { ~0U, ~2U, ~6U, ~6U }; + +static INLINE void RebuildSATCache(vdc_t *vdc) +{ + SAT_Cache_t *sat_ptr = vdc->SAT_Cache; + + vdc->SAT_Cache_Valid = 0; + + for(int i = 0; i < 64; i++) + { + const uint16 SATR0 = vdc->SAT[i * 4 + 0x0]; + const uint16 SATR1 = vdc->SAT[i * 4 + 0x1]; + const uint16 SATR2 = vdc->SAT[i * 4 + 0x2]; + const uint16 SATR3 = vdc->SAT[i * 4 + 0x3]; + + int16 y; + uint16 height; + uint16 x; + uint16 no; + uint16 flags; + bool cgmode; + uint32 width; + + y = (int16)(SATR0 & 0x3FF) - 0x40; + x = SATR1 & 0x3FF; + no = (SATR2 >> 1) & 0x3FF; + flags = (SATR3); + cgmode = SATR2 & 0x1; + + width = ((flags >> 8) & 1); + flags &= ~0x100; + + height = sprite_height_tab[(flags >> 12) & 3]; + no &= sprite_height_no_mask[(flags >> 12) & 3]; + + no = ((no & ~width) | 0) ^ ((flags & SPRF_HFLIP) ? width : 0); + + sat_ptr->y = y; + sat_ptr->height = height; + sat_ptr->x = x; + sat_ptr->no = no; + sat_ptr->flags = flags; + sat_ptr->cgmode = cgmode; + + sat_ptr++; + vdc->SAT_Cache_Valid++; + + if(width) + { + no = ((no & ~width) | 1) ^ ((flags & SPRF_HFLIP) ? width : 0); + x += 16; + + *sat_ptr = *(sat_ptr - 1); + + sat_ptr->no = no; + sat_ptr->x = x; + + sat_ptr++; + vdc->SAT_Cache_Valid++; + } + } +} + +static INLINE void DoSATDMA(vdc_t *vdc) +{ + if(vdc->SATB > (VRAM_Size - 0x100)) + VDC_UNDEFINED("Unmapped VRAM SATB DMA read"); + + for(int i = 0; i < 256; i++) + vdc->SAT[i] = vdc->VRAM[(vdc->SATB + i) & 0xFFFF]; + + RebuildSATCache(vdc); +} + + +typedef struct +{ + uint32 x; + uint32 flags; + uint8 palette_index; + uint16 no; + uint16 sub_y; +} SPRLE; + +static const unsigned int spr_hpmask = 0x8000; // High priority bit mask + +// DrawSprites will write up to 0x20 units before the start of the pointer it's passed. +static void DrawSprites(vdc_t *vdc, const int32 end, uint16 *spr_linebuf) NO_INLINE; +static void DrawSprites(vdc_t *vdc, const int32 end, uint16 *spr_linebuf) +{ + int active_sprites = 0; + SPRLE SpriteList[64 * 2]; // (see unlimited_sprites option, *2 to accomodate 32-pixel-width sprites ) //16]; + + // First, grab the up to 16(or 128 for unlimited_sprites) sprite units(16xWHATEVER; each 32xWHATEVER sprite counts as 2 sprite units when + // rendering a scanline) for this scanline. + for(int i = 0; i < vdc->SAT_Cache_Valid; i++) + { + const SAT_Cache_t *SATR = &vdc->SAT_Cache[i]; + + int16 y = SATR->y; + uint16 x = SATR->x; + uint16 no = SATR->no; + const uint16 flags = SATR->flags; + const uint8 cgmode = SATR->cgmode; + const uint16 height = SATR->height; + const uint32 palette_index = (flags & 0xF) << 4; + + uint32 y_offset = vdc->RCRCount - y; + if(y_offset < height) + { + if(active_sprites == 16) + { + if(vdc->CR & 0x2) + { + vdc->status |= VDCS_OR; + HuC6280_IRQBegin(MDFN_IQIRQ1); + VDC_DEBUG("Overflow IRQ"); + } + if(!unlimited_sprites) + break; + } + + if(flags & SPRF_VFLIP) + y_offset = height - 1 - y_offset; + + no |= (y_offset & 0x30) >> 3; + + SpriteList[active_sprites].flags = flags; + + //printf("Found: %d %d\n", vdc->RCRCount, x); + SpriteList[active_sprites].x = x; + SpriteList[active_sprites].palette_index = palette_index; + + SpriteList[active_sprites].no = no; + SpriteList[active_sprites].sub_y = (y_offset & 15); + + + CheckFixSpriteTileCache(vdc, no, (vdc->MWR & 0xC) | cgmode); + + SpriteList[active_sprites].flags |= i ? 0 : SPRF_SPRITE0; + + active_sprites++; + } + } + + //if(!active_sprites) + // return; + + //memset(spr_linebuf, 0, sizeof(uint16) * end); + MDFN_FastU32MemsetM8((uint32 *)spr_linebuf, 0, ((end + 3) >> 1) & ~1); + + if(!active_sprites) + return; + + for(int i = (active_sprites - 1) ; i >= 0; i--) + { + int32 pos = SpriteList[i].x - 0x20; + uint32 prio_or; + uint16 *dest_pix; + + if(pos > end) + continue; + + dest_pix = &spr_linebuf[pos]; + + prio_or = 0x100 | SpriteList[i].palette_index; + + if(SpriteList[i].flags & SPRF_PRIORITY) + prio_or |= spr_hpmask; + + if((SpriteList[i].flags & SPRF_SPRITE0) && (vdc->CR & 0x01)) + { + const uint8 *pix_source = vdc->spr_tile_cache[SpriteList[i].no][SpriteList[i].sub_y]; + + if(SpriteList[i].flags & SPRF_HFLIP) + { + for(int32 x = 0; x < 16; x++) + { + const uint32 raw_pixel = pix_source[x]; + if(raw_pixel) + { + if(((uint32)pos + x) >= (uint32)end) // Covers negative and overflowing the right side(to prevent spurious sprite hits) + continue; + + if(dest_pix[x] & 0x100) + { + vdc->status |= VDCS_CR; + VDC_DEBUG("Sprite hit IRQ"); + HuC6280_IRQBegin(MDFN_IQIRQ1); + } + dest_pix[x] = raw_pixel | prio_or; + } + } + } + else + { + for(int32 x = 0; x < 16; x++) + { + const uint32 raw_pixel = pix_source[15 - x]; + if(raw_pixel) + { + if(((uint32)pos + x) >= (uint32)end) // Covers negative and overflowing the right side(to prevent spurious sprite hits) + continue; + + if(dest_pix[x] & 0x100) + { + vdc->status |= VDCS_CR; + VDC_DEBUG("Sprite hit IRQ"); + HuC6280_IRQBegin(MDFN_IQIRQ1); + } + dest_pix[x] = raw_pixel | prio_or; + } + } + } + } // End sprite0 handling + else // No sprite0 hit: + { + const uint8 *pix_source = vdc->spr_tile_cache[SpriteList[i].no][SpriteList[i].sub_y]; + + // x must be signed, for "pos + x" to not be promoted to unsigned, which will cause a stack overflow. + if(SpriteList[i].flags & SPRF_HFLIP) + { + for(int32 x = 0; x < 16; x++) + { + const uint32 raw_pixel = pix_source[x]; + if(raw_pixel) + dest_pix[x] = raw_pixel | prio_or; + } + } + else + { + for(int32 x = 0; x < 16; x++) + { + const uint32 raw_pixel = pix_source[15 - x]; + if(raw_pixel) + dest_pix[x] = raw_pixel | prio_or; + } + } + + } // End no sprite0 hit + } +} + +void (*MixBGSPR)(const uint32 count, const uint8 *bg_linebuf, const uint16 *spr_linebuf, uint32 *target) = NULL; + +void MixBGSPR_Generic(const uint32 count_in, const uint8 *bg_linebuf_in, const uint16 *spr_linebuf_in, uint32 *target_in) +{ +#if 0 + #if SIZEOF_VOID_P > 4 + int64 count = 0 - (int64)count_in; + #else + int32 count = 0 - (int32)count_in; + #endif + const uint8 *bg_linebuf = bg_linebuf_in + count_in; + const uint16 *spr_linebuf = spr_linebuf_in + count_in; + uint32 *target = target_in + count_in; + + if(!count) + return; + + do + { + const uint32 bg_pixel = bg_linebuf[count]; + const uint32 spr_pixel = spr_linebuf[count]; + uint32 pixel = bg_pixel; + + if(((int16)(spr_pixel | ((bg_pixel & 0x0F) - 1))) < 0) + pixel = spr_pixel; + + target[count] = vce.color_table_cache[pixel & 0x1FF]; + } while(++count); +#else + for(unsigned int x = 0; x < count_in; x++) + { + const uint32 bg_pixel = bg_linebuf_in[x]; + const uint32 spr_pixel = spr_linebuf_in[x]; + uint32 pixel = bg_pixel; + + if(((int16)(spr_pixel | ((bg_pixel & 0x0F) - 1))) < 0) + pixel = spr_pixel; + + target_in[x] = vce.color_table_cache[pixel & 0x1FF]; + } +#endif +} + + +void MixBGSPR_16BPP(const uint32 count_in, const uint8 *bg_linebuf_in, const uint16 *spr_linebuf_in, uint16 *target_in) +{ + for(unsigned int x = 0; x < count_in; x++) + { + const uint32 bg_pixel = bg_linebuf_in[x]; + const uint32 spr_pixel = spr_linebuf_in[x]; + uint32 pixel = bg_pixel; + + if(((int16)(spr_pixel | ((bg_pixel & 0x0F) - 1))) < 0) + pixel = spr_pixel; + + target_in[x] = vce.color_table_cache[pixel & 0x1FF]; + } +} + + +#ifdef ARCH_X86 + +#ifdef __x86_64__ + +void MixBGSPR_x86(const uint32 count, const uint8 *bg_linebuf, const uint16 *spr_linebuf, uint32 *target) +{ + // rdx: bg_linebuf + // rsi: spr_linebuf + // rbp: vce.color_table_cache + // rdi: target + // rcx: count + + // eax: bg pixel + // ebx: spr pixel + int dummy; + + asm volatile( + "push %%rbx\n\t" + + "movq %%rax, %%rbp\n\t" + "negq %%rcx\n\t" + "xorq %%rax, %%rax\n\t" + "xorq %%rbx, %%rbx\n\t" + + "BoomBuggy:\n\t" + "movzbl (%%rdx, %%rcx, 1), %%eax\n\t" + "movswl (%%rsi, %%rcx, 2), %%ebx\n\t" + + "testl $15, %%eax\n\t" + "bt $15, %%ebx\n\t" + + "cmovbe %%ebx, %%eax\n\t" + "andl $511, %%eax\n\t" + + "movl (%%rbp, %%rax, 4), %%ebx\n\t" + "movl %%ebx, (%%rdi, %%rcx, 4)\n\t" + + "addq $1, %%rcx\n\t" + "jnz BoomBuggy\n\t" + + "pop %%rbx\n\t" + : "=c" (dummy), "=a" (dummy) + : "d" (bg_linebuf + count), "S" (spr_linebuf + count), "D" (target + count), "c" (count), "a" (vce.color_table_cache) + : "memory", "cc", "rbp" + ); +} + +#else // else to __x86_64__ +void MixBGSPR_x86(const uint32 count, const uint8 *bg_linebuf, const uint16 *spr_linebuf, uint32 *target) +{ + // edx: bg_linebuf + // esi: spr_linebuf + // ebp: vce.color_table_cache + // edi: target + // ecx: count + + // eax: bg pixel + // ebx: spr pixel + int dummy; + + asm volatile( + "push %%ebx\n\t" + + "movl %%eax, %%ebp\n\t" + "negl %%ecx\n\t" + "xorl %%eax, %%eax\n\t" + "xorl %%ebx, %%ebx\n\t" + + "BoomBuggy:\n\t" + "movzbl (%%edx, %%ecx, 1), %%eax\n\t" + "movswl (%%esi, %%ecx, 2), %%ebx\n\t" + + "testl $15, %%eax\n\t" + "bt $15, %%ebx\n\t" + + "cmovbe %%ebx, %%eax\n\t" + "andl $511, %%eax\n\t" + + //"jnbe SkipMove\n\t" + //"movl %%ebx, %%eax\n\t" + //"andl $511, %%eax\n\t" + //"SkipMove:\n\t" + + "movl (%%ebp, %%eax, 4), %%ebx\n\t" + "movl %%ebx, (%%edi, %%ecx, 4)\n\t" + + "addl $1, %%ecx\n\t" + "jnz BoomBuggy\n\t" + + "pop %%ebx\n\t" + : "=c" (dummy), "=a" (dummy) + : "d" (bg_linebuf + count), "S" (spr_linebuf + count), "D" (target + count), "c" (count), "a" (vce.color_table_cache) + : "memory", "cc", "ebp" + ); +} +#endif + +#endif // ARCH_X86 + +template +void MixBGOnly(const uint32 count, const uint8 *bg_linebuf, T *target) +{ + for(unsigned int x = 0; x < count; x++) + target[x] = vce.color_table_cache[bg_linebuf[x]]; +} + +template +void MixSPROnly(const uint32 count, const uint16 *spr_linebuf, T *target) +{ + for(unsigned int x = 0; x < count; x++) + target[x] = vce.color_table_cache[(spr_linebuf[x] | 0x100) & 0x1FF]; +} + +template +void MixNone(const uint32 count, T *target) +{ + uint32 bg_color = vce.color_table_cache[0x000]; + + for(unsigned int x = 0; x < count; x++) + target[x] = bg_color; +} + +//static void MixVPC(const uint32 count, const uint32 *lb0, const uint32 *lb1, uint32 *target) NO_INLINE; + +template +static void MixVPC(const uint32 count, const uint32 *lb0, const uint32 *lb1, T *target) +{ + static const int prio_select[4] = { 1, 1, 0, 0 }; + static const int prio_shift[4] = { 4, 0, 4, 0 }; + + // Windowing disabled. + if(vpc.winwidths[0] <= 0x40 && vpc.winwidths[1] <= 0x40) + { + const uint8 pb = (vpc.priority[prio_select[0]] >> prio_shift[0]) & 0xF; + + switch(pb) + { + default: + //printf("%02x\n", pb); + for(int x = 0; x < (int)count; x++) + { + #include "vpc_mix_inner.inc" + } + break; + + case 0x3: + for(int x = 0; x < (int)count; x++) + { + #include "vpc_mix_inner.inc" + } + break; + + case 0x7: + for(int x = 0; x < (int)count; x++) + { + #include "vpc_mix_inner.inc" + } + break; + + case 0xB: + for(int x = 0; x < (int)count; x++) + { + #include "vpc_mix_inner.inc" + } + break; + + case 0xF: + for(int x = 0; x < (int)count; x++) + { + #include "vpc_mix_inner.inc" + } + break; + } + + //switch(pb & 0xF) + //{ + // case 0x0: for(int x = 0; x < (int)count; x++) + // { + // #include "vpc_mix_inner.inc" + // } + // break; + //} + } + else for(int x = 0; x < (int)count; x++) + { + int in_window = 0; + + if(x < (vpc.winwidths[0] - 0x40)) + in_window |= 1; + + if(x < (vpc.winwidths[1] - 0x40)) + in_window |= 2; + + uint8 pb = (vpc.priority[prio_select[in_window]] >> prio_shift[in_window]) & 0xF; + + #include "vpc_mix_inner.inc" + } +} + +template +void DrawOverscan(const vdc_t *vdc, T *target, const MDFN_Rect *lw, const bool full = true, const int32 vpl = 0, const int32 vpr = 0) +{ + uint32 os_color = vce.color_table_cache[0x100]; + + //printf("%d %d\n", lw->x, lw->w); + + if(full) + { + // Fill in entire viewport(horizontally!) with overscan color + for(int x = lw->x; x < lw->x + lw->w; x++) + target[x] = os_color; + } + else + { + // Fill in viewport to the left of HDW with overscan color. + for(int x = lw->x; x < vpl; x++) + target[x] = os_color; + + // Fill in viewport to the right of HDW with overscan color. + for(int x = vpr; x < lw->x + lw->w; x++) + target[x] = os_color; + } +} + +void VDC_RunFrame(MDFN_Surface *surface, MDFN_Rect *DisplayRect, MDFN_Rect *LineWidths, int skip) +{ + vdc_t *vdc = vdc_chips[0]; + int max_dc = 0; + + #if 0 + { + MDFN_PixelFormat nf; + + nf.bpp = 16; + nf.colorspace = MDFN_COLORSPACE_RGB; + nf.Rshift = 11; + nf.Gshift = 5; + nf.Bshift = 0; + nf.Ashift = 16; + + nf.Rprec = 5; + nf.Gprec = 6; + nf.Bprec = 5; + nf.Aprec = 8; + + surface->SetFormat(nf, false); + VDC_SetPixelFormat(nf); + } + #endif + + // x and w should be overwritten in the big loop + + if(!skip) + { + DisplayRect->x = 0; + DisplayRect->w = 256; + + DisplayRect->y = MDFN_GetSettingUI("pce_fast.slstart"); + DisplayRect->h = MDFN_GetSettingUI("pce_fast.slend") - DisplayRect->y + 1; + + // Hack for the input latency-reduction hack, part 1. + for(int y = DisplayRect->y; y < DisplayRect->y + DisplayRect->h; y++) + LineWidths[y].w = 0; + } + + do + { + const bool SHOULD_DRAW = (!skip && (int)frame_counter >= (DisplayRect->y + 14) && (int)frame_counter < (DisplayRect->y + DisplayRect->h + 14)); + + vdc = vdc_chips[0]; + + if(frame_counter == 0) + { + VDS = M_vdc_VDS; + VSW = M_vdc_VSW; + VDW = M_vdc_VDW; + VCR = M_vdc_VCR; + VBlankFL = VDS + VSW + VDW + 1; + + if(VBlankFL > 261) + VBlankFL = 261; + } + + uint32 line_buffer[2][1024]; // For super grafx emulation + + need_vbi[0] = need_vbi[1] = 0; + + #if 1 + line_leadin1 = 0; + + magical = M_vdc_HDS + (M_vdc_HDW + 1) + M_vdc_HDE; + magical = (magical + 2) & ~1; + magical -= M_vdc_HDW + 1; + cyc_tot = magical * 8; //ClockPixelWidths[vce.dot_clock] - magical * 8; + cyc_tot-=2; + switch(vce.dot_clock) + { + case 0: cyc_tot = 4 * cyc_tot / 3; break; + case 1: break; + case 2: cyc_tot = 2 * cyc_tot / 3; break; + } + + if(cyc_tot < 0) cyc_tot = 0; + line_leadin1 = cyc_tot; + #endif + + #if 0 + { + int vdc_to_master = 4; + + line_leadin1 = 1365 - ((M_vdc_HDW + 1) * 8 - 4 + 6) * vdc_to_master; + + if(line_leadin1 < 0) + { + line_leadin1 = 0; + puts("Eep"); + } + + if(M_vdc_HDS > 2) + line_leadin1 += 2; + + line_leadin1 = line_leadin1 / 3; + } + + if(line_leadin1 < 0) + line_leadin1 = 0; + else if(line_leadin1 > 400) + line_leadin1 = 400; + #endif + + //printf("%d\n", line_leadin1); + if(max_dc < vce.dot_clock) + max_dc = vce.dot_clock; + + if(!skip) + { + static const int ws[2][3] = { + { 341, 341, 682 }, + { 256, 341, 512 } + }; + + DisplayRect->x = 0; //128 + 8 + xs[correct_aspect][vce.dot_clock]; + DisplayRect->w = ws[correct_aspect][vce.dot_clock]; + } + + for(int chip = 0; chip < VDC_TotalChips; chip++) + { + vdc = vdc_chips[chip]; + if(frame_counter == 0) + { + vdc->display_counter = 0; + vdc->burst_mode = !(vdc->CR & 0xC0); + } + + if(vdc->display_counter == (VDS + VSW)) + { + vdc->burst_mode = !(vdc->CR & 0xC0); + vdc->RCRCount = 0; + } + int have_free_time = 1; + + if(!vdc->burst_mode && vdc->display_counter >= (VDS + VSW) && vdc->display_counter < (VDS + VSW + VDW + 1)) + have_free_time = 0; + + if(have_free_time) // We're outside of the active display area. Weehee + { + if(vdc->DMARunning) + DoDMA(vdc); + } + + if(vdc->display_counter == VBlankFL) + { + need_vbi[chip] = 1; + if(vdc->SATBPending || (vdc->DCR & 0x10)) + { + vdc->SATBPending = 0; + vdc->sat_dma_slcounter = 2; + + DoSATDMA(vdc); + } + } + if((int)vdc->RCRCount == ((int)vdc->RCR - 0x40) && (vdc->CR & 0x04)) + { + VDC_DEBUG("RCR IRQ"); + vdc->status |= VDCS_RR; + HuC6280_IRQBegin(MDFN_IQIRQ1); + } + } + + HuC6280_Run(line_leadin1); + + for(int chip = 0; chip < VDC_TotalChips; chip++) + { + MDFN_ALIGN(8) uint8 bg_linebuf[8 + 1024]; + MDFN_ALIGN(8) uint16 spr_linebuf[16 + 1024]; + + uint32 *target_ptr = NULL; + uint16 *target_ptr16 = NULL; + vdc = vdc_chips[chip]; + + if(VDC_TotalChips == 2) + target_ptr = line_buffer[chip]; + else + { + if(surface->format.bpp == 16) + target_ptr16 = surface->pixels16 + (frame_counter - 14) * surface->pitchinpix; + else + target_ptr = surface->pixels + (frame_counter - 14) * surface->pitchinpix; + } + + if(frame_counter >= 14 && frame_counter < (14 + 242) && !skip) + LineWidths[frame_counter - 14] = *DisplayRect; + + if(vdc->burst_mode) + { + if(frame_counter >= 14 && frame_counter < (14 + 242)) + { + if(SHOULD_DRAW) + { + if(target_ptr16) + DrawOverscan(vdc, target_ptr16, DisplayRect); + else + DrawOverscan(vdc, target_ptr, DisplayRect); + } + } + } + else if(vdc->display_counter >= (VDS + VSW) && vdc->display_counter < (VDS + VSW + VDW + 1)) + { + if(vdc->display_counter == (VDS + VSW)) + vdc->BG_YOffset = vdc->BYR; + else + vdc->BG_YOffset++; + vdc->BG_XOffset = vdc->BXR; + + if(frame_counter >= 14 && frame_counter < (14 + 242)) + { + uint32 start, end; + + CalcStartEnd(vdc, start, end); + + if((vdc->CR & 0x80) && SHOULD_DRAW) + { + if(userle & (chip ? ULE_BG1 : ULE_BG0)) + DrawBG(vdc, end - start + (vdc->BG_XOffset & 7), bg_linebuf); + else + memset(bg_linebuf, 0, end - start + (vdc->BG_XOffset & 7)); + } + + if((vdc->CR & 0x40) && (SHOULD_DRAW || (vdc->CR & 0x03))) // Don't skip sprite drawing if we can generate sprite #0 or sprite overflow IRQs. + { + if((userle & (chip ? ULE_SPR1 : ULE_SPR0)) || (vdc->CR & 0x03)) + DrawSprites(vdc, end - start, spr_linebuf + 0x20); + + if(!(userle & (chip ? ULE_SPR1 : ULE_SPR0))) + memset(spr_linebuf + 0x20, 0, sizeof(uint16) * (end - start)); + } + + if(SHOULD_DRAW) + { + static const int xs[2][3] = { + { 24 - 43, 38, 96 - 43 * 2 }, + { 24, 38, 96 } + }; + + int32 width = end - start; + int32 source_offset = 0; + int32 target_offset = start - (128 + 8 + xs[correct_aspect][vce.dot_clock]); + + if(target_offset < 0) + { + width += target_offset; + source_offset += 0 - target_offset; + target_offset = 0; + } + + if((target_offset + width) > DisplayRect->w) + width = (int32)DisplayRect->w - target_offset; + + //if(vdc->display_counter == 50) + // MDFN_DispMessage("soffset=%d, toffset=%d, width=%d", source_offset, target_offset, width); + + if(width > 0) + { + if(target_ptr16) + switch(vdc->CR & 0xC0) + { + case 0xC0: MixBGSPR_16BPP(width, bg_linebuf + (vdc->BG_XOffset & 7) + source_offset, spr_linebuf + 0x20 + source_offset, target_ptr16 + target_offset); + break; + + case 0x80: MixBGOnly(width, bg_linebuf + (vdc->BG_XOffset & 7) + source_offset, target_ptr16 + target_offset); + break; + + case 0x40: MixSPROnly(width, spr_linebuf + 0x20 + source_offset, target_ptr16 + target_offset); + break; + + case 0x00: MixNone(width, target_ptr16 + target_offset); + break; + } + else + switch(vdc->CR & 0xC0) + { + case 0xC0: MixBGSPR(width, bg_linebuf + (vdc->BG_XOffset & 7) + source_offset, spr_linebuf + 0x20 + source_offset, target_ptr + target_offset); + break; + + case 0x80: MixBGOnly(width, bg_linebuf + (vdc->BG_XOffset & 7) + source_offset, target_ptr + target_offset); + break; + + case 0x40: MixSPROnly(width, spr_linebuf + 0x20 + source_offset, target_ptr + target_offset); + break; + + case 0x00: MixNone(width, target_ptr + target_offset); + break; + } + } + + if(target_ptr16) + DrawOverscan(vdc, target_ptr16, DisplayRect, false, target_offset, target_offset + width); + else + DrawOverscan(vdc, target_ptr, DisplayRect, false, target_offset, target_offset + width); + } // end if(SHOULD_DRAW) + } + + } + else // Hmm, overscan... + { + if(frame_counter >= 14 && frame_counter < (14 + 242)) + { + if(SHOULD_DRAW) + { + if(target_ptr16) + DrawOverscan(vdc, target_ptr16, DisplayRect); + else + DrawOverscan(vdc, target_ptr, DisplayRect); + } + } + } + } + + if(VDC_TotalChips == 2 && SHOULD_DRAW) + if(frame_counter >= 14 && frame_counter < (14 + 242)) + { + if(surface->format.bpp == 16) + MixVPC(DisplayRect->w, line_buffer[0] + DisplayRect->x, line_buffer[1] + DisplayRect->x, surface->pixels16 + (frame_counter - 14) * surface->pitchinpix + DisplayRect->x); + else + MixVPC(DisplayRect->w, line_buffer[0] + DisplayRect->x, line_buffer[1] + DisplayRect->x, surface->pixels + (frame_counter - 14) * surface->pitchinpix + DisplayRect->x); + } + + for(int chip = 0; chip < VDC_TotalChips; chip++) + if((vdc_chips[chip]->CR & 0x08) && need_vbi[chip]) + vdc_chips[chip]->status |= VDCS_VD; + + HuC6280_Run(2); + + for(int chip = 0; chip < VDC_TotalChips; chip++) + if(vdc_chips[chip]->status & VDCS_VD) + { + VDC_DEBUG("VBlank IRQ"); + HuC6280_IRQBegin(MDFN_IQIRQ1); + } + + HuC6280_Run(455 - line_leadin1 - 2); + + if(PCE_IsCD) + { + int32 dummy_ne; + + dummy_ne = PCECD_Run(HuCPU.timestamp * 3); + } + for(int chip = 0; chip < VDC_TotalChips; chip++) + { + vdc = vdc_chips[chip]; + vdc->RCRCount++; + + //vdc->BG_YOffset = (vdc->BG_YOffset + 1); + vdc->display_counter++; + + if(vdc->sat_dma_slcounter) + { + vdc->sat_dma_slcounter--; + if(!vdc->sat_dma_slcounter) + { + if(vdc->DCR & 0x01) + { + VDC_DEBUG("Sprite DMA IRQ"); + vdc->status |= VDCS_DS; + HuC6280_IRQBegin(MDFN_IQIRQ1); + } + } + } + + if(vdc->display_counter == (VDS + VSW + VDW + VCR + 3)) + { + vdc->display_counter = 0; + } + } + + frame_counter = (frame_counter + 1) % (vce.lc263 ? 263 : 262); + //printf("%d\n", vce.lc263); + } while(frame_counter != VBlankFL); // big frame loop! + + // Hack for the input latency-reduction hack, part 2. + if(!skip) + { + for(int y = DisplayRect->y; y < DisplayRect->y + DisplayRect->h; y++) + { + if(!LineWidths[y].w) + { + uint32 *target_ptr = NULL; + uint16 *target_ptr16 = NULL; + + if(surface->format.bpp == 16) + target_ptr16 = surface->pixels16 + y * surface->pitchinpix; + else + target_ptr = surface->pixels + y * surface->pitchinpix; + + LineWidths[y] = *DisplayRect; + if(target_ptr16) + DrawOverscan(vdc_chips[0], target_ptr16, DisplayRect); + else + DrawOverscan(vdc_chips[0], target_ptr, DisplayRect); + } + } + } +} + +void VDC_Reset(void) +{ + vdc_chips[0]->read_buffer = 0xFFFF; + + vpc.priority[0] = vpc.priority[1] = 0x11; + + vdc_chips[0]->HSR = vdc_chips[0]->HDR = vdc_chips[0]->VSR = vdc_chips[0]->VDR = vdc_chips[0]->VCR = 0xFF; // Needed for Body Conquest 2 + + if(vdc_chips[1]) + { + vdc_chips[1]->read_buffer = 0xFFFF; + vdc_chips[1]->HSR = vdc_chips[1]->HDR = vdc_chips[1]->VSR = vdc_chips[1]->VDR = vdc_chips[1]->VCR = 0xFF; // and for HES playback to not go bonkers + } + frame_counter = 0; +} + +void VDC_Power(void) +{ + for(int chip = 0; chip < VDC_TotalChips; chip++) + memset(vdc_chips[chip], 0, sizeof(vdc_t)); + VDC_Reset(); +} + +#include +// Warning: As of 0.8.x, this custom colormap function will only work if it's called from VDC_Init(), in the Load() +// game load path. +static bool LoadCustomPalette(const char *path) +{ + MDFN_printf(_("Loading custom palette from \"%s\"...\n"), path); + MDFN_indent(1); + gzFile gp = gzopen(path, "rb"); + if(!gp) + { + MDFN_printf(_("Error opening file: %m\n")); // FIXME, zlib and errno... + MDFN_indent(-1); + return(FALSE); + } + else if((CustomColorMap = (uint8*)MDFN_malloc(1024 * 3, _("custom color map")))) + { + long length_read; + + length_read = gzread(gp, CustomColorMap, 1024 * 3); + + if(length_read == 512 * 3) + MDFN_printf("Palette only has 512 entries. Calculating the strip-colorburst entries.\n"); + + if(length_read != 1024 * 3 && length_read != 512 * 3) + { + MDFN_printf(_("Error reading file\n")); + MDFN_indent(-1); + MDFN_free(CustomColorMap); + CustomColorMap = NULL; + return(FALSE); + } + + CustomColorMapLen = length_read / 3; + } + MDFN_indent(-1); + + return(TRUE); +} + + +void VDC_Init(int sgx) +{ + unlimited_sprites = MDFN_GetSettingB("pce_fast.nospritelimit"); + correct_aspect = MDFN_GetSettingB("pce_fast.correct_aspect"); + userle = ~0; + + VDC_TotalChips = sgx ? 2 : 1; + + for(int chip = 0; chip < VDC_TotalChips; chip++) + { + vdc_chips[chip] = (vdc_t *)MDFN_malloc(sizeof(vdc_t), "VDC"); + } + + LoadCustomPalette(MDFN_MakeFName(MDFNMKF_PALETTE, 0, NULL).c_str()); + + MixBGSPR = MixBGSPR_Generic; + + #ifdef ARCH_X86 + // FIXME: cmov + MixBGSPR = MixBGSPR_x86; + #endif + +} + +void VDC_Close(void) +{ + for(int chip = 0; chip < VDC_TotalChips; chip++) + { + if(vdc_chips[chip]) + MDFN_free(vdc_chips[chip]); + vdc_chips[chip] = NULL; + } + VDC_TotalChips = 0; +} + +int VDC_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT VCE_StateRegs[] = + { + SFVARN(vce.CR, "VCECR"), + SFVARN(vce.lc263, "lc263"), + SFVARN(vce.bw, "bw"), + SFVARN(vce.dot_clock, "dot clock"), + SFVARN(vce.ctaddress, "ctaddress"), + SFARRAY16N(vce.color_table, 0x200, "color_table"), + SFEND + }; + + + int ret = MDFNSS_StateAction(sm, load, data_only, VCE_StateRegs, "VCE"); + + int max_chips = VDC_TotalChips; + + if(VDC_TotalChips == 2) + { + SFORMAT VPC_StateRegs[] = + { + SFVARN(vpc.st_mode, "st_mode"), + SFARRAYN(vpc.priority, 2, "priority"), + SFARRAY16N(vpc.winwidths, 2, "winwidths"), + SFEND + }; + ret &= MDFNSS_StateAction(sm, load, data_only, VPC_StateRegs, "VPC"); + } + + for(int chip = 0; chip < max_chips; chip++) + { + vdc_t *vdc = vdc_chips[chip]; + SFORMAT VDC_StateRegs[] = + { + SFVARN(vdc->display_counter, "display_counter"), + SFVARN(vdc->sat_dma_slcounter, "sat_dma_slcounter"), + + SFVARN(vdc->select, "select"), + SFVARN(vdc->MAWR, "MAWR"), + SFVARN(vdc->MARR, "MARR"), + SFVARN(vdc->CR, "CR"), + SFVARN(vdc->RCR, "RCR"), + SFVARN(vdc->BXR, "BXR"), + SFVARN(vdc->BYR, "BYR"), + SFVARN(vdc->MWR, "MWR"), + + SFVARN(vdc->HSR, "HSR"), + SFVARN(vdc->HDR, "HDR"), + SFVARN(vdc->VSR, "VSR"), + SFVARN(vdc->VDR, "VDR"), + + SFVARN(vdc->VCR, "VCR"), + SFVARN(vdc->DCR, "DCR"), + SFVARN(vdc->SOUR, "SOUR"), + SFVARN(vdc->DESR, "DESR"), + SFVARN(vdc->LENR, "LENR"), + SFVARN(vdc->SATB, "SATB"), + + SFVARN(vdc->RCRCount, "RCRCount"), + + + SFVARN(vdc->read_buffer, "read_buffer"), + SFVARN(vdc->write_latch, "write_latch"), + SFVARN(vdc->status, "status"), + + SFARRAY16N(vdc->SAT, 0x100, "SAT"), + + SFARRAY16N(vdc->VRAM, VRAM_Size, "VRAM"), + SFVARN(vdc->DMAReadBuffer, "DMAReadBuffer"), + SFVARN(vdc->DMAReadWrite, "DMAReadWrite"), + SFVARN(vdc->DMARunning, "DMARunning"), + SFVARN(vdc->SATBPending, "SATBPending"), + SFVARN(vdc->burst_mode, "burst_mode"), + + SFVARN(vdc->BG_YOffset, "BG_YOffset"), + SFVARN(vdc->BG_XOffset, "BG_XOffset"), + SFVAR(frame_counter), + SFVARN(VDS, "VDS_cache"), + SFVARN(VSW, "VSW_cache"), + SFVARN(VDW, "VDW_cache"), + SFVARN(VCR, "VCR_cache"), + SFVARN(VBlankFL, "VBlankFL_cache"), + + SFARRAY32(need_vbi, 2), + SFVAR(line_leadin1), + SFVAR(magical), + SFVAR(cyc_tot), + SFEND + }; + + ret &= MDFNSS_StateAction(sm, load, data_only, VDC_StateRegs, chip ? "VDC1" : "VDC0"); + + if(load) + { + for(int x = 0; x < VRAM_Size; x++) + { + FixTileCache(vdc, x); + vdc->spr_tile_clean[x >> 6] = 0; + } + for(int x = 0; x < 512; x++) + FixPCache(x); + RebuildSATCache(vdc); + } + + } + + return(ret); +} + +}; diff --git a/libmednahawk/src/pce_fast/vdc.h b/libmednahawk/src/pce_fast/vdc.h new file mode 100644 index 0000000000..2e0d61006f --- /dev/null +++ b/libmednahawk/src/pce_fast/vdc.h @@ -0,0 +1,211 @@ +#ifndef _PCE_VDC_H +#define _PCE_VDC_H + +namespace PCE_Fast +{ + +#define REGSETP(_reg, _data, _msb) { _reg &= 0xFF << ((_msb) ? 0 : 8); _reg |= (_data) << ((_msb) ? 8 : 0); } +#define REGGETP(_reg, _msb) ((_reg >> ((_msb) ? 8 : 0)) & 0xFF) + +#define VDC_DEBUG(x) +//printf("%s: %d\n", x, vdc->display_counter); +#define VDC_UNDEFINED(x) { } +//{ printf("%s: %d\n", x, vdc->display_counter); } + +static const unsigned int vram_inc_tab[4] = { 1, 32, 64, 128 }; + +typedef struct +{ + uint8 priority[2]; + uint16 winwidths[2]; + uint8 st_mode; +} vpc_t; + +extern vpc_t vpc; + +static const int VRAM_Size = 0x8000; +static const int VRAM_SizeMask = VRAM_Size - 1; //0x7FFF; +static const int VRAM_BGTileNoMask = VRAM_SizeMask / 16; //0x7FF; + +typedef struct +{ + uint8 CR; + + bool lc263; // 263 line count if set, 262 if not + bool bw; // Black and White + uint8 dot_clock; // Dot Clock(5, 7, or 10 MHz = 0, 1, 2) + uint16 color_table[0x200]; + uint32 color_table_cache[0x200]; + uint16 ctaddress; +} vce_t; + +extern vce_t vce; + +typedef struct +{ + int16 y; + uint16 height; + uint16 x; + uint16 no; + uint16 flags; + bool cgmode; +} SAT_Cache_t; + +typedef struct +{ + uint32 display_counter; + + int32 sat_dma_slcounter; + + uint8 select; + uint16 MAWR; // Memory Address Write Register + uint16 MARR; // Memory Address Read Register + + uint16 CR; // Control Register + uint16 RCR; // Raster Compare Register + uint16 BXR; // Background X-Scroll Register + uint16 BYR; // Background Y-Scroll Register + uint16 MWR; // Memory Width Register + + uint16 HSR; // Horizontal Sync Register + uint16 HDR; // Horizontal Display Register + uint16 VSR; + uint16 VDR; + + uint16 VCR; + uint16 DCR; + uint16 SOUR; + uint16 DESR; + uint16 LENR; + uint16 SATB; + + uint32 RCRCount; + + uint16 read_buffer; + uint8 write_latch; + uint8 status; + + uint16 DMAReadBuffer; + bool DMAReadWrite; + bool DMARunning; + bool SATBPending; + bool burst_mode; + + uint32 BG_YOffset; + uint32 BG_XOffset; + + + + int SAT_Cache_Valid; // 64 through 128, depending on the number of 32-pixel-wide sprites. + SAT_Cache_t SAT_Cache[128]; //64]; + + uint16 SAT[0x100]; + + uint16 VRAM[65536]; //VRAM_Size]; + uint64 bg_tile_cache[65536][8]; // Tile, y, x + uint8 spr_tile_cache[1024][16][16]; // Tile, y, x + uint8 spr_tile_clean[1024]; //VRAM_Size / 64]; +} vdc_t; + +extern vdc_t *vdc_chips[2]; +extern int VDC_TotalChips; + + +void VDC_SetPixelFormat(const MDFN_PixelFormat &format); +void VDC_RunFrame(MDFN_Surface *surface, MDFN_Rect *DisplayRect, MDFN_Rect *LineWidths, int skip); +void VDC_SetLayerEnableMask(uint64 mask); + +DECLFW(VDC_Write); +DECLFW(VDC_Write_ST); + +DECLFR(VCE_Read); + +static INLINE uint8 VDC_Read(unsigned int A, bool SGX) +{ + uint8 ret = 0; + int msb = A & 1; + int chip = 0; + vdc_t *vdc; + + if(SGX) + { + A &= 0x1F; + switch(A) + { + case 0x8: return(vpc.priority[0]); + case 0x9: return(vpc.priority[1]); + case 0xA: return(vpc.winwidths[0]); + case 0xB: return(vpc.winwidths[0] >> 8); + case 0xC: return(vpc.winwidths[1]); + case 0xD: return(vpc.winwidths[1] >> 8); + case 0xE: return(0); + } + if(A & 0x8) return(0); + chip = (A & 0x10) >> 4; + vdc = vdc_chips[chip]; + A &= 0x3; + } + else + { + vdc = vdc_chips[0]; + A &= 0x3; + } + + switch(A) + { + case 0x0: ret = vdc->status; + + vdc->status &= ~0x3F; + + if(SGX) + { + if(!(vdc_chips[0]->status & 0x3F) && !(vdc_chips[1]->status & 0x3F)) + HuC6280_IRQEnd(MDFN_IQIRQ1); + } + else + HuC6280_IRQEnd(MDFN_IQIRQ1); // Clear VDC IRQ line + + break; + + case 0x2: + case 0x3: + ret = REGGETP(vdc->read_buffer, msb); + if(vdc->select == 0x2) // VRR - VRAM Read Register + { + if(msb) + { + vdc->MARR += vram_inc_tab[(vdc->CR >> 11) & 0x3]; + + if(vdc->MARR >= VRAM_Size) + VDC_UNDEFINED("Unmapped VRAM VRR read"); + + vdc->read_buffer = vdc->VRAM[vdc->MARR & VRAM_SizeMask]; + } + } + break; + } + + //if(HuCPU.isopread && (A == 1 || A == 3)) //(A == 2 || A == 3)) // && A == 1) + if(A == 1) + { + //if(vdc->display_counter >= (VDS + VSW) && vdc->display_counter < (VDS + VSW + VDW + 1) && vce.dot_clock > 0) + if(vce.dot_clock > 0) + ret = 0x40; + //printf("%d %d %02x\n", vdc->display_counter, vce.dot_clock, ret); + //ret = 0x40; + } + return(ret); +} + +DECLFW(VCE_Write); + +void VDC_Init(int sgx); +void VDC_Close(void); +void VDC_Reset(void); +void VDC_Power(void); + +int VDC_StateAction(StateMem *sm, int load, int data_only); + +}; + +#endif diff --git a/libmednahawk/src/pce_fast/vpc_mix_inner.inc b/libmednahawk/src/pce_fast/vpc_mix_inner.inc new file mode 100644 index 0000000000..d3fbe0df94 --- /dev/null +++ b/libmednahawk/src/pce_fast/vpc_mix_inner.inc @@ -0,0 +1,35 @@ + + uint32 vdc2_pixel, vdc1_pixel; + + vdc2_pixel = vdc1_pixel = vce.color_table_cache[0]; + + if(pb & 1) + vdc1_pixel = lb0[x]; + + if(pb & 2) + vdc2_pixel = lb1[x]; + + /* Dai MakaiMura uses setting 1, and expects VDC #2 sprites in front of VDC #1 background, but + behind VDC #1's sprites. + */ + switch(pb >> 2) + { + case 1: + //if((vdc2_pixel & (amask << 2)) && !(vdc1_pixel & (amask << 2))) + // vdc1_pixel |= amask; + vdc1_pixel |= (((vdc2_pixel ^ vdc1_pixel) & vdc2_pixel) >> 2) & amask; + break; + + case 2: + //if((vdc1_pixel & (amask << 2)) && !(vdc2_pixel & (amask << 2)) && !(vdc2_pixel & amask)) + // vdc1_pixel |= amask; + puts("MOO"); + // TODO: Verify that this is correct logic. + { + const uint32 intermediate = ((vdc1_pixel ^ vdc2_pixel) & vdc1_pixel) >> 2; + vdc1_pixel |= (intermediate ^ vdc2_pixel) & intermediate & amask; + } + break; + } + target[x] = (vdc1_pixel & amask) ? vdc2_pixel : vdc1_pixel; + diff --git a/libmednahawk/src/pcfx/Makefile.am b/libmednahawk/src/pcfx/Makefile.am new file mode 100644 index 0000000000..493be6210e --- /dev/null +++ b/libmednahawk/src/pcfx/Makefile.am @@ -0,0 +1,12 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/src/hw_sound -I$(top_srcdir)/src/hw_video + +noinst_LIBRARIES = libpcfx.a +libpcfx_a_SOURCES = king.cpp soundbox.cpp pcfx.cpp interrupt.cpp input.cpp timer.cpp rainbow.cpp jrevdct.cpp huc6273.cpp fxscsi.cpp + +libpcfx_a_SOURCES += input/gamepad.cpp input/mouse.cpp + +if WANT_DEBUGGER +libpcfx_a_SOURCES += debug.cpp +endif diff --git a/libmednahawk/src/pcfx/Makefile.in b/libmednahawk/src/pcfx/Makefile.in new file mode 100644 index 0000000000..53528651d4 --- /dev/null +++ b/libmednahawk/src/pcfx/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WANT_DEBUGGER_TRUE@am__append_1 = debug.cpp +subdir = src/pcfx +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libpcfx_a_AR = $(AR) $(ARFLAGS) +libpcfx_a_LIBADD = +am__libpcfx_a_SOURCES_DIST = king.cpp soundbox.cpp pcfx.cpp \ + interrupt.cpp input.cpp timer.cpp rainbow.cpp jrevdct.cpp \ + huc6273.cpp fxscsi.cpp input/gamepad.cpp input/mouse.cpp \ + debug.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@WANT_DEBUGGER_TRUE@am__objects_1 = debug.$(OBJEXT) +am_libpcfx_a_OBJECTS = king.$(OBJEXT) soundbox.$(OBJEXT) \ + pcfx.$(OBJEXT) interrupt.$(OBJEXT) input.$(OBJEXT) \ + timer.$(OBJEXT) rainbow.$(OBJEXT) jrevdct.$(OBJEXT) \ + huc6273.$(OBJEXT) fxscsi.$(OBJEXT) input/gamepad.$(OBJEXT) \ + input/mouse.$(OBJEXT) $(am__objects_1) +libpcfx_a_OBJECTS = $(am_libpcfx_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libpcfx_a_SOURCES) +DIST_SOURCES = $(am__libpcfx_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/src/hw_sound -I$(top_srcdir)/src/hw_video +noinst_LIBRARIES = libpcfx.a +libpcfx_a_SOURCES = king.cpp soundbox.cpp pcfx.cpp interrupt.cpp \ + input.cpp timer.cpp rainbow.cpp jrevdct.cpp huc6273.cpp \ + fxscsi.cpp input/gamepad.cpp input/mouse.cpp $(am__append_1) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/pcfx/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/pcfx/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +input/$(am__dirstamp): + @$(MKDIR_P) input + @: > input/$(am__dirstamp) +input/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) input/$(DEPDIR) + @: > input/$(DEPDIR)/$(am__dirstamp) +input/gamepad.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/mouse.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +libpcfx.a: $(libpcfx_a_OBJECTS) $(libpcfx_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpcfx.a + $(AM_V_AR)$(libpcfx_a_AR) libpcfx.a $(libpcfx_a_OBJECTS) $(libpcfx_a_LIBADD) + $(AM_V_at)$(RANLIB) libpcfx.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f input/gamepad.$(OBJEXT) + -rm -f input/mouse.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fxscsi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huc6273.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interrupt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jrevdct.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/king.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcfx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rainbow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soundbox.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gamepad.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mouse.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f input/$(DEPDIR)/$(am__dirstamp) + -rm -f input/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) input/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) input/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/pcfx/debug.cpp b/libmednahawk/src/pcfx/debug.cpp new file mode 100644 index 0000000000..5026ff77f5 --- /dev/null +++ b/libmednahawk/src/pcfx/debug.cpp @@ -0,0 +1,657 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pcfx.h" + +#include +#include +#include +#include + +#include "debug.h" +#include "v810/v810_cpuD.h" +#include "interrupt.h" +#include "timer.h" +#include "king.h" +#include "input.h" +#include "../cdrom/scsicd.h" + +static void (*CPUHook)(uint32); +static void (*BPCallB)(uint32 PC) = NULL; +static void (*LogFunc)(const char *, const char *); +static iconv_t sjis_ict = (iconv_t)-1; +bool PCFX_LoggingOn = FALSE; + +typedef struct __PCFX_BPOINT { + uint32 A[2]; + int type; + bool logical; +} PCFX_BPOINT; + +static std::vector BreakPointsPC, BreakPointsRead, BreakPointsWrite, BreakPointsIORead, BreakPointsIOWrite; +static std::vector BreakPointsAux0Read, BreakPointsAux0Write; +static bool FoundBPoint = 0; + +struct BTEntry +{ + uint32 from; + uint32 to; + uint32 branch_count; + uint32 ecode; +}; + +#define NUMBT 24 +static BTEntry BTEntries[NUMBT]; +static int BTIndex = 0; + +static void AddBranchTrace(uint32 from, uint32 to, uint32 ecode) +{ + BTEntry *prevbt = &BTEntries[(BTIndex + NUMBT - 1) % NUMBT]; + + //if(BTEntries[(BTIndex - 1) & 0xF] == PC) return; + + if(prevbt->from == from && prevbt->to == to && prevbt->ecode == ecode && prevbt->branch_count < 0xFFFFFFFF) + prevbt->branch_count++; + else + { + BTEntries[BTIndex].from = from; + BTEntries[BTIndex].to = to; + BTEntries[BTIndex].ecode = ecode; + BTEntries[BTIndex].branch_count = 1; + + BTIndex = (BTIndex + 1) % NUMBT; + } +} + +std::vector PCFXDBG_GetBranchTrace(void) +{ + BranchTraceResult tmp; + std::vector ret; + + for(int x = 0; x < NUMBT; x++) + { + const BTEntry *bt = &BTEntries[(x + BTIndex) % NUMBT]; + + tmp.count = bt->branch_count; + trio_snprintf(tmp.from, sizeof(tmp.from), "%08x", bt->from); + trio_snprintf(tmp.to, sizeof(tmp.to), "%08x", bt->to); + + tmp.code[0] = 0; + + switch(bt->ecode) + { + case 0: break; + default: trio_snprintf(tmp.code, sizeof(tmp.code), "e"); + break; + + case 0xFFF0: // Reset + trio_snprintf(tmp.code, sizeof(tmp.code), "R"); + break; + + case 0xFFD0: // NMI + trio_snprintf(tmp.code, sizeof(tmp.code), "NMI"); + break; + + case 0xFFC0: // Address trap + trio_snprintf(tmp.code, sizeof(tmp.code), "ADTR"); + break; + + case 0xFFA0 ... 0xFFBF: // TRAP + trio_snprintf(tmp.code, sizeof(tmp.code), "TRAP"); + break; + + case 0xFF90: // Illegal/invalid instruction code + trio_snprintf(tmp.code, sizeof(tmp.code), "ILL"); + break; + + case 0xFF80: // Zero division + trio_snprintf(tmp.code, sizeof(tmp.code), "ZD"); + break; + + case 0xFF70: + trio_snprintf(tmp.code, sizeof(tmp.code), "FIV"); // FIV + break; + + case 0xFF68: + trio_snprintf(tmp.code, sizeof(tmp.code), "FZD"); // FZD + break; + + case 0xFF64: + trio_snprintf(tmp.code, sizeof(tmp.code), "FOV"); // FOV + break; + + case 0xFF62: + trio_snprintf(tmp.code, sizeof(tmp.code), "FUD"); // FUD + break; + + case 0xFF61: + trio_snprintf(tmp.code, sizeof(tmp.code), "FPR"); // FPR + break; + + case 0xFF60: + trio_snprintf(tmp.code, sizeof(tmp.code), "FRO"); // FRO + break; + + case 0xFE00 ... 0xFEFF: + trio_snprintf(tmp.code, sizeof(tmp.code), "INT%d", (bt->ecode >> 4) & 0xF); + break; + } + + ret.push_back(tmp); + } + return(ret); +} + +void PCFXDBG_CheckBP(int type, uint32 address, unsigned int len) +{ + std::vector::iterator bpit, bpit_end; + + if(type == BPOINT_READ) + { + bpit = BreakPointsRead.begin(); + bpit_end = BreakPointsRead.end(); + } + else if(type == BPOINT_WRITE) + { + bpit = BreakPointsWrite.begin(); + bpit_end = BreakPointsWrite.end(); + } + else if(type == BPOINT_IO_READ) + { + bpit = BreakPointsIORead.begin(); + bpit_end = BreakPointsIORead.end(); + } + else if(type == BPOINT_IO_WRITE) + { + bpit = BreakPointsIOWrite.begin(); + bpit_end = BreakPointsIOWrite.end(); + } + else if(type == BPOINT_AUX_READ) + { + bpit = BreakPointsAux0Read.begin(); + bpit_end = BreakPointsAux0Read.end(); + } + else if(type == BPOINT_AUX_WRITE) + { + bpit = BreakPointsAux0Write.begin(); + bpit_end = BreakPointsAux0Write.end(); + } + else + return; + + for(; bpit != bpit_end; bpit++) + { + uint32 tmp_address = address; + uint32 tmp_len = len; + + while(tmp_len--) + { + if(tmp_address >= bpit->A[0] && tmp_address <= bpit->A[1]) + { + FoundBPoint = TRUE; + break; + } + tmp_address++; + } + } +} + +enum +{ + SVT_NONE = 0, + SVT_PTR, + SVT_STRINGPTR, + SVT_INT, + SVT_UCHAR, + SVT_LONG, + SVT_ULONG, +}; + +typedef struct +{ + unsigned int number; + const char *name; + int arguments; + int argument_types[16]; +} syscall_t; + +static const syscall_t SysDefs[] = +{ + { 0, "fsys_init", 3, { SVT_PTR, SVT_PTR, SVT_PTR} }, + { 1, "fsys_mount", 2, { SVT_PTR, SVT_PTR } }, + { 2, "fsys_ctrl", 4, { SVT_STRINGPTR, SVT_INT, SVT_PTR, SVT_INT } }, + { 3, "fsys_getfsys", 1, { SVT_PTR } }, + { 4, "fsys_format", 2, { SVT_PTR, SVT_PTR } }, + { 5, "fsys_diskfree", 1, { SVT_STRINGPTR } }, + { 6, "fsys_getblocks", 1, { SVT_PTR } }, + { 7, "fsys_open", 2, { SVT_STRINGPTR, SVT_INT } }, + { 8, "fsys_read", 3, { SVT_INT, SVT_PTR, SVT_INT } }, + { 9, "fsys_write", 3, { SVT_INT, SVT_PTR, SVT_INT } }, + { 10, "fsys_seek", 3, { SVT_INT, SVT_LONG, SVT_INT } }, + { 11, "fsys_htime", 2, { SVT_INT, SVT_LONG} }, + { 12, "fsys_close", 1, { SVT_INT } }, + { 13, "fsys_delete", 1, { SVT_STRINGPTR } }, + { 14, "fsys_rename", 2, { SVT_STRINGPTR } }, + { 15, "fsys_mkdir", 1, { SVT_STRINGPTR } }, + { 16, "fsys_rmdir", 1, { SVT_STRINGPTR } }, + { 17, "fsys_chdir", 1, { SVT_STRINGPTR } }, + { 18, "fsys_curdir", 1, { SVT_PTR } }, + { 19, "fsys_ffiles", 2, { SVT_PTR, SVT_PTR } }, + { 20, "fsys_nfiles", 1, { SVT_PTR } }, + { 21, "fsys_efiles", 1, { SVT_PTR } }, + { 22, "fsys_datetime", 1, { SVT_ULONG } }, + { 23, "fsys_m_init", 2, { SVT_PTR, SVT_PTR } }, + { 24, "fsys_malloc", 1, { SVT_INT } }, + { 25, "fsys_free", 1, { SVT_INT } }, + { 26, "fsys_setblock", 2, { SVT_PTR, SVT_INT } }, +}; + +static void DoSyscallLog(void) +{ + uint32 ws = 0; + unsigned int which = 0; + unsigned int nargs = 0; + const char *func_name = ""; + char argsbuffer[2048]; + + for(unsigned int i = 0; i < sizeof(SysDefs) / sizeof(syscall_t); i++) + { + if(SysDefs[i].number == PCFX_V810.GetPR(10)) + { + nargs = SysDefs[i].arguments; + func_name = SysDefs[i].name; + which = i; + break; + } + } + + { + char *pos = argsbuffer; + + argsbuffer[0] = 0; + + pos += trio_sprintf(pos, "("); + for(unsigned int i = 0; i < nargs; i++) + { + if(SysDefs[which].argument_types[i] == SVT_STRINGPTR) + { + uint8 quickiebuf[64 + 1]; + int qbuf_index = 0; + bool error_thing = FALSE; + + do + { + uint32 A = PCFX_V810.GetPR(6 + i) + qbuf_index; + + quickiebuf[qbuf_index] = 0; + + if(A >= 0x80000000 && A < 0xF0000000) + { + error_thing = TRUE; + break; + } + + quickiebuf[qbuf_index] = mem_peekbyte(ws, A); + } while(quickiebuf[qbuf_index] && ++qbuf_index < 64); + + if(qbuf_index == 64) + error_thing = TRUE; + + quickiebuf[64] = 0; + + if(error_thing) + pos += trio_sprintf(pos, "0x%08x, ", PCFX_V810.GetPR(6 + i)); + else + { + uint8 quickiebuf_utf8[64 * 6 + 1]; + char *in_ptr, *out_ptr; + size_t ibl, obl; + + ibl = qbuf_index; + obl = sizeof(quickiebuf_utf8) - 1; + + in_ptr = (char *)quickiebuf; + out_ptr = (char *)quickiebuf_utf8; + + if(iconv(sjis_ict, (ICONV_CONST char **)&in_ptr, &ibl, &out_ptr, &obl) == (size_t) -1) + { + pos += trio_sprintf(pos, "0x%08x, ", PCFX_V810.GetPR(6 + i)); + } + else + { + *out_ptr = 0; + pos += trio_sprintf(pos, "@0x%08x=\"%s\", ", PCFX_V810.GetPR(6 + i), quickiebuf_utf8); + } + } + } + else + pos += trio_sprintf(pos, "0x%08x, ", PCFX_V810.GetPR(6 + i)); + } + + // Get rid of the trailing comma and space + if(nargs) + pos-=2; + + trio_sprintf(pos, ");"); + } + + PCFXDBG_DoLog("SYSCALL", "0x%02x, %s: %s", PCFX_V810.GetPR(10), func_name, argsbuffer); +} + +static void CPUHandler(uint32 PC) +{ + std::vector::iterator bpit; + + for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++) + { + if(PC >= bpit->A[0] && PC <= bpit->A[1]) + { + FoundBPoint = TRUE; + break; + } + } + PCFX_V810.CheckBreakpoints(PCFXDBG_CheckBP, mem_peekhword, NULL); // FIXME: mem_peekword + + if(PCFX_LoggingOn) + { + // FIXME: There is a little race condition if a user turns on logging right between jump instruction and the first + // instruction at 0xFFF0000C, in which case the call-from address will be wrong. + static uint32 lastPC = ~0; + + if(PC == 0xFFF0000C) + { + static const char *font_sizes[6] = + { + "KANJI16x16", "KANJI12x12", "ANK8x16", "ANK6x12", "ANK8x8", "ANK8x12" + }; + + // FIXME, overflow possible and speed + PCFXDBG_DoLog("ROMFONT", "0x%08x->0xFFF0000C, PR7=0x%08x=%s, PR6=0x%04x = %s", lastPC, PCFX_V810.GetPR(7), (PCFX_V810.GetPR(7) > 5) ? "?" : font_sizes[PCFX_V810.GetPR(7)], PCFX_V810.GetPR(6) & 0xFFFF, PCFXDBG_ShiftJIS_to_UTF8(PCFX_V810.GetPR(6) & 0xFFFF)); + setvbuf(stdout, NULL, _IONBF, 0); + printf("%s", PCFXDBG_ShiftJIS_to_UTF8(PCFX_V810.GetPR(6) & 0xFFFF)); + } + else if(PC == 0xFFF00008) + DoSyscallLog(); + + lastPC = PC; + } + + if(FoundBPoint) + { + BPCallB(PC); + FoundBPoint = 0; + } + + if(CPUHook) + CPUHook(PC); +} + +static void RedoCPUHook(void) +{ + bool HappyTest; + + HappyTest = PCFX_LoggingOn || BreakPointsPC.size() || BreakPointsRead.size() || BreakPointsWrite.size() || + BreakPointsIOWrite.size() || BreakPointsIORead.size() || BreakPointsAux0Read.size() || BreakPointsAux0Write.size(); + + void (*cpuh)(uint32); + + cpuh = HappyTest ? CPUHandler : CPUHook; + + PCFX_V810.SetCPUHook(cpuh, cpuh ? AddBranchTrace : NULL); +} + +void PCFXDBG_FlushBreakPoints(int type) +{ + std::vector::iterator bpit; + + if(type == BPOINT_READ) + BreakPointsRead.clear(); + else if(type == BPOINT_WRITE) + BreakPointsWrite.clear(); + else if(type == BPOINT_IO_READ) + BreakPointsIORead.clear(); + else if(type == BPOINT_IO_WRITE) + BreakPointsIOWrite.clear(); + else if(type == BPOINT_AUX_READ) + BreakPointsAux0Read.clear(); + else if(type == BPOINT_AUX_WRITE) + BreakPointsAux0Write.clear(); + else if(type == BPOINT_PC) + BreakPointsPC.clear(); + + RedoCPUHook(); + KING_NotifyOfBPE(BreakPointsAux0Read.size(), BreakPointsAux0Write.size()); +} + +void PCFXDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) +{ + PCFX_BPOINT tmp; + + tmp.A[0] = A1; + tmp.A[1] = A2; + tmp.type = type; + + if(type == BPOINT_READ) + BreakPointsRead.push_back(tmp); + else if(type == BPOINT_WRITE) + BreakPointsWrite.push_back(tmp); + else if(type == BPOINT_IO_READ) + BreakPointsIORead.push_back(tmp); + else if(type == BPOINT_IO_WRITE) + BreakPointsIOWrite.push_back(tmp); + else if(type == BPOINT_AUX_READ) + BreakPointsAux0Read.push_back(tmp); + else if(type == BPOINT_AUX_WRITE) + BreakPointsAux0Write.push_back(tmp); + else if(type == BPOINT_PC) + BreakPointsPC.push_back(tmp); + + RedoCPUHook(); + KING_NotifyOfBPE(BreakPointsAux0Read.size(), BreakPointsAux0Write.size()); +} + +static uint16 dis_readhw(uint32 A) +{ + return(mem_peekhword(0, A)); +} + +void PCFXDBG_Disassemble(uint32 &a, uint32 SpecialA, char *TextBuf) +{ + return(v810_dis(a, 1, TextBuf, dis_readhw)); +} + +uint32 PCFXDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical) +{ + uint32 ret = 0; + uint32 ws = 0; + + for(unsigned int i = 0; i < bsize; i++) + { + A &= 0xFFFFFFFF; + ret |= mem_peekbyte(ws, A) << (i * 8); + A++; + } + + return(ret); +} + +uint32 PCFXDBG_GetRegister(const std::string &name, std::string *special) +{ + if(name == "PC") + { + return(PCFX_V810.GetPC()); + } + const char *thestring = name.c_str(); + + if(!strncmp(thestring, "PR", 2)) + { + return(PCFX_V810.GetPR(atoi(thestring + 2))); + } + else if(!strcmp(thestring, "HSP")) + return(PCFX_V810.GetPR(2)); + else if(!strcmp(thestring, "SP")) + return(PCFX_V810.GetPR(3)); + else if(!strcmp(thestring, "GP")) + return(PCFX_V810.GetPR(4)); + else if(!strcmp(thestring, "TP")) + return(PCFX_V810.GetPR(5)); + else if(!strcmp(thestring, "LP")) + return(PCFX_V810.GetPR(31)); + else if(!strcmp(thestring, "TStamp")) + return(PCFX_V810.v810_timestamp); + else if(!strncmp(thestring, "SR", 2)) + { + int which_one = atoi(thestring + 2); + uint32 val = PCFX_V810.GetSR(which_one); + + if(special && which_one == PSW) + { + char buf[256]; + snprintf(buf, 256, "Z: %d, S: %d, OV: %d, CY: %d, ID: %d, AE: %d, EP: %d, NP: %d, IA: %2d", + (int)(bool)(val & PSW_Z), (int)(bool)(val & PSW_S), (int)(bool)(val & PSW_OV), (int)(bool)(val & PSW_CY), + (int)(bool)(val & PSW_ID), (int)(bool)(val & PSW_AE), (int)(bool)(val & PSW_EP), (int)(bool)(val & PSW_NP), + (val & PSW_IA) >> 16); + *special = std::string(buf); + } + return(val); + } + uint32 val = 0; + + if(PCFXIRQ_GetRegister(name, val, special) || FXTIMER_GetRegister(name, val, special) || FXINPUT_GetRegister(name, val, special)) + return(val); + + return(val); +} + +void PCFXDBG_SetRegister(const std::string &name, uint32 value) +{ + if(name == "PC") + { + PCFX_V810.SetPC(value & ~1); + return; + } + + const char *thestring = name.c_str(); + + if(!strncmp(thestring, "PR", 2)) + { + PCFX_V810.SetPR(atoi(thestring + 2), value); + } + else if(!strcmp(thestring, "HSP")) + PCFX_V810.SetPR(2, value); + else if(!strcmp(thestring, "SP")) + PCFX_V810.SetPR(3, value); + else if(!strcmp(thestring, "GP")) + PCFX_V810.SetPR(4, value); + else if(!strcmp(thestring, "TP")) + PCFX_V810.SetPR(5, value); + else if(!strcmp(thestring, "LP")) + PCFX_V810.SetPR(31, value); + else if(!strncmp(thestring, "SR", 2)) + { + PCFX_V810.SetSR(atoi(thestring + 2), value); + } + else if(PCFXIRQ_SetRegister(name, value)) + { + + } + +} + +void PCFXDBG_SetCPUCallback(void (*callb)(uint32 PC)) +{ + CPUHook = callb; + RedoCPUHook(); +} + +void PCFXDBG_SetBPCallback(void (*callb)(uint32 PC)) +{ + BPCallB = callb; +} + +void PCFXDBG_DoLog(const char *type, const char *format, ...) +{ + if(LogFunc) + { + char *temp; + + va_list ap; + va_start(ap, format); + + temp = trio_vaprintf(format, ap); + LogFunc(type, temp); + free(temp); + + va_end(ap); + } +} + +void PCFXDBG_SetLogFunc(void (*func)(const char *, const char *)) +{ + LogFunc = func; + + PCFX_LoggingOn = func ? TRUE : FALSE; + SCSICD_SetLog(func ? PCFXDBG_DoLog : NULL); + KING_SetLogFunc(func ? PCFXDBG_DoLog : NULL); + + if(PCFX_LoggingOn) + { + if(sjis_ict == (iconv_t)-1) + sjis_ict = iconv_open("UTF-8", "shift_jis"); + } + else + { + if(sjis_ict != (iconv_t)-1) + { + iconv_close(sjis_ict); + sjis_ict = (iconv_t)-1; + } + } + RedoCPUHook(); +} + +char *PCFXDBG_ShiftJIS_to_UTF8(const uint16 sjc) +{ + static char ret[16]; + char inbuf[3]; + char *in_ptr, *out_ptr; + size_t ibl, obl; + + if(sjc < 256) + { + inbuf[0] = sjc; + inbuf[1] = 0; + ibl = 1; + } + else + { + inbuf[0] = sjc >> 8; + inbuf[1] = sjc >> 0; + inbuf[2] = 0; + ibl = 2; + } + + in_ptr = inbuf; + out_ptr = ret; + obl = 16; + + iconv(sjis_ict, (ICONV_CONST char **)&in_ptr, &ibl, &out_ptr, &obl); + + *out_ptr = 0; + + return(ret); +} diff --git a/libmednahawk/src/pcfx/debug.h b/libmednahawk/src/pcfx/debug.h new file mode 100644 index 0000000000..483e7be7a4 --- /dev/null +++ b/libmednahawk/src/pcfx/debug.h @@ -0,0 +1,31 @@ +#ifndef __PCFX_DEBUG_H +#define __PCFX_DEBUG_H + +#ifdef WANT_DEBUGGER + +void PCFXDBG_FlushBreakPoints(int type); +void PCFXDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical); +void PCFXDBG_Disassemble(uint32 &a, uint32 SpecialA, char *); + +uint32 PCFXDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical); +uint32 PCFXDBG_GetRegister(const std::string &name, std::string *special); +void PCFXDBG_SetRegister(const std::string &name, uint32 value); + +void PCFXDBG_SetCPUCallback(void (*callb)(uint32 PC)); +void PCFXDBG_SetBPCallback(void (*callb)(uint32 PC)); + +std::vector PCFXDBG_GetBranchTrace(void); + +void PCFXDBG_CheckBP(int type, uint32 address, unsigned int len); + +void PCFXDBG_SetLogFunc(void (*func)(const char *, const char *)); + +void PCFXDBG_DoLog(const char *type, const char *format, ...); +char *PCFXDBG_ShiftJIS_to_UTF8(const uint16 sjc); + + +extern bool PCFX_LoggingOn; + +#endif + +#endif diff --git a/libmednahawk/src/pcfx/fxscsi.cpp b/libmednahawk/src/pcfx/fxscsi.cpp new file mode 100644 index 0000000000..9b0043ebed --- /dev/null +++ b/libmednahawk/src/pcfx/fxscsi.cpp @@ -0,0 +1,38 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pcfx.h" +#include "fxscsi.h" + +bool FXSCSI_Init(void) +{ + + return true; +} + +uint8 FXSCSI_CtrlRead(uint32 A) +{ + uint8 ret = 0; //rand(); + //printf("FXSCSI: %08x(ret=%02x)\n", A, ret); + return(ret); +} + + +void FXSCSI_CtrlWrite(uint32 A, uint8 V) +{ + printf("FXSCSI Write: %08x %02x\n", A, V); +} diff --git a/libmednahawk/src/pcfx/fxscsi.h b/libmednahawk/src/pcfx/fxscsi.h new file mode 100644 index 0000000000..214fdf6f5b --- /dev/null +++ b/libmednahawk/src/pcfx/fxscsi.h @@ -0,0 +1,8 @@ +#ifndef __MDFN_FXSCSI_H +#define __MDFN_FXSCSI_H + +bool FXSCSI_Init(void); +uint8 FXSCSI_CtrlRead(uint32 A); +void FXSCSI_CtrlWrite(uint32 A, uint8 V); + +#endif diff --git a/libmednahawk/src/pcfx/gamedb.inc b/libmednahawk/src/pcfx/gamedb.inc new file mode 100644 index 0000000000..0a395fbe06 --- /dev/null +++ b/libmednahawk/src/pcfx/gamedb.inc @@ -0,0 +1,1731 @@ +// Names taken from http://pcecp.com/ and http://www.necstasy.net/ + +{ + "Aa! Megami Sama", + "ã‚ã‚ã£å¥³ç¥žã•ã¾ã£", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 10504 }, + { 3, CDGE_FORMAT_DATA, 10890 }, + { -1, -1, 240939 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 10163 }, + { 3, CDGE_FORMAT_DATA, 10890 }, + { -1, -1, 211853 }, + } + } +}, + +{ + "Akazukin Cha Cha", + "赤ãšãã‚“ã¡ã‚ƒã¡ã‚ƒ ーãŠé¨’ã‹ã›ï¼ãƒ‘ニックレースï¼ãƒ¼", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5088 }, + { 3, CDGE_FORMAT_AUDIO, 203157 }, + { 4, CDGE_FORMAT_AUDIO, 207261 }, + { 5, CDGE_FORMAT_AUDIO, 209849 }, + { 6, CDGE_FORMAT_AUDIO, 216868 }, + { -1, -1, 220342 }, + } + } +}, + +{ + "All Japan Female Pro Wrestle - Queen of Queens", + "全日本女å­ãƒ—ロレス Queen of Queens", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2368 }, + { -1, -1, 254165 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2368 }, + { -1, -1, 326478 }, + } + } +}, + +{ + "Angelique Special", + "アンジェリークスペシャル", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 4829 }, + { 4, CDGE_FORMAT_DATA, 8963 }, + { 5, CDGE_FORMAT_DATA, 66446 }, + { 6, CDGE_FORMAT_AUDIO, 194334 }, + { -1, -1, 198505 }, + } + } +}, + +{ + "Angelique Special 2", + "アンジェリークスペシャル2", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 4737 }, + { -1, -1, 313941 }, + } + } +}, + +{ + "Angelique Tenkuu No Requim", + "アンジェリーク天空ã®ãƒ¬ã‚¯ã‚¤ã‚¨ãƒ ", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 4737 }, + { 4, CDGE_FORMAT_DATA, 110846 }, + { -1, -1, 263180 }, + } + } +}, + +{ + "Anime Freak FX Volume 1", + "アニメフリークFX Vol.1", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5140 }, + { -1, -1, 323367 }, + } + } +}, + +{ + "Anime Freak FX Volume 2", + "アニメフリークFX Vol.2", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1523 }, + { -1, -1, 306483 }, + } + } +}, + +{ + "Anime Freak FX Volume 2 (Sample)", + NULL, + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5140 }, + { -1, -1, 309756 }, + } + } +}, + +{ + "Anime Freak FX Volume 3", + "アニメフリークFX Vol.3", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1964 }, + { -1, -1, 322351 }, + } + } +}, + +{ + "Anime Freak FX Volume 4", + "アニメフリークFX Vol.4", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 3286 }, + { -1, -1, 312713 }, + } + } +}, + +{ + "Anime Freak FX Volume 5", + "アニメフリークFX Vol.5", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2943 }, + { -1, -1, 231075 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5268 }, + { -1, -1, 267842 }, + } + } +}, + +{ + "Anime Freak FX Volume 6", + "アニメフリークFX Vol.6", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4732 }, + { -1, -1, 290461 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 17408 }, + { -1, -1, 306629 }, + } + } +}, + +{ + "Aruberea's Maiden", + "アルãƒãƒ¬ã‚¢ã®ä¹™å¥³", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2381 }, + { 3, CDGE_FORMAT_DATA, 3729 }, + { 4, CDGE_FORMAT_DATA, 11919 }, + { 5, CDGE_FORMAT_DATA, 67010 }, + { 6, CDGE_FORMAT_DATA, 68706 }, + { 7, CDGE_FORMAT_DATA, 69119 }, + { 8, CDGE_FORMAT_DATA, 69538 }, + { 9, CDGE_FORMAT_DATA, 69958 }, + { 10, CDGE_FORMAT_DATA, 70425 }, + { 11, CDGE_FORMAT_DATA, 72558 }, + { 12, CDGE_FORMAT_DATA, 74956 }, + { 13, CDGE_FORMAT_DATA, 77246 }, + { 14, CDGE_FORMAT_DATA, 83332 }, + { 15, CDGE_FORMAT_DATA, 101273 }, + { 16, CDGE_FORMAT_DATA, 113096 }, + { 17, CDGE_FORMAT_DATA, 125676 }, + { 18, CDGE_FORMAT_DATA, 144119 }, + { 19, CDGE_FORMAT_DATA, 163556 }, + { -1, -1, 234498 }, + } + } +}, + +{ + "Battle Heat", + "ãƒãƒˆãƒ«ãƒ’ート", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 6253 }, + { 4, CDGE_FORMAT_AUDIO, 16083 }, + { 5, CDGE_FORMAT_DATA, 35549 }, + { 6, CDGE_FORMAT_DATA, 39544 }, + { 7, CDGE_FORMAT_DATA, 40834 }, + { 8, CDGE_FORMAT_DATA, 101620 }, + { 9, CDGE_FORMAT_DATA, 120156 }, + { 10, CDGE_FORMAT_DATA, 142691 }, + { 11, CDGE_FORMAT_DATA, 154690 }, + { 12, CDGE_FORMAT_DATA, 164535 }, + { 13, CDGE_FORMAT_DATA, 178064 }, + { 14, CDGE_FORMAT_DATA, 194891 }, + { 15, CDGE_FORMAT_DATA, 205807 }, + { 16, CDGE_FORMAT_DATA, 216414 }, + { 17, CDGE_FORMAT_DATA, 234950 }, + { 18, CDGE_FORMAT_DATA, 257485 }, + { 19, CDGE_FORMAT_DATA, 269642 }, + { 20, CDGE_FORMAT_DATA, 280175 }, + { 21, CDGE_FORMAT_DATA, 293704 }, + { 22, CDGE_FORMAT_DATA, 310531 }, + { -1, -1, 311822 }, + } + } +}, + +{ + "Blue Breaker", + "ブルーブレイカー 剣よりも微笑ã¿ã‚’", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5804 }, + { -1, -1, 314954 }, + } + } +}, + +{ + "Blue Chicago Blues", + "J.B. Harold ブルーシカゴブルース", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 241908 }, + { -1, -1, 242250 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 308890 }, + { 3, CDGE_FORMAT_AUDIO, 322135 }, + { -1, -1, 322477 }, + } + } +}, + +{ + "Boundary Gate - Daughter of Kingdom", + "ãƒã‚¦ãƒ³ãƒ€ãƒªãƒ¼ã‚²ãƒ¼ãƒˆ Daughter of Kingdom", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 31797 }, + { 4, CDGE_FORMAT_AUDIO, 34840 }, + { 5, CDGE_FORMAT_AUDIO, 38383 }, + { 6, CDGE_FORMAT_AUDIO, 38898 }, + { 7, CDGE_FORMAT_AUDIO, 40365 }, + { 8, CDGE_FORMAT_AUDIO, 41223 }, + { 9, CDGE_FORMAT_AUDIO, 41543 }, + { 10, CDGE_FORMAT_AUDIO, 44293 }, + { 11, CDGE_FORMAT_AUDIO, 47722 }, + { 12, CDGE_FORMAT_AUDIO, 48042 }, + { 13, CDGE_FORMAT_AUDIO, 50396 }, + { 14, CDGE_FORMAT_AUDIO, 50716 }, + { 15, CDGE_FORMAT_AUDIO, 51078 }, + { 16, CDGE_FORMAT_AUDIO, 51477 }, + { 17, CDGE_FORMAT_AUDIO, 52240 }, + { 18, CDGE_FORMAT_AUDIO, 53430 }, + { 19, CDGE_FORMAT_AUDIO, 54573 }, + { 20, CDGE_FORMAT_AUDIO, 56949 }, + { 21, CDGE_FORMAT_AUDIO, 59248 }, + { 22, CDGE_FORMAT_AUDIO, 61753 }, + { 23, CDGE_FORMAT_AUDIO, 62577 }, + { 24, CDGE_FORMAT_AUDIO, 63746 }, + { 25, CDGE_FORMAT_AUDIO, 64827 }, + { 26, CDGE_FORMAT_AUDIO, 66673 }, + { 27, CDGE_FORMAT_AUDIO, 69156 }, + { 28, CDGE_FORMAT_AUDIO, 71742 }, + { 29, CDGE_FORMAT_AUDIO, 74427 }, + { 30, CDGE_FORMAT_AUDIO, 76953 }, + { 31, CDGE_FORMAT_AUDIO, 78144 }, + { 32, CDGE_FORMAT_AUDIO, 78464 }, + { 33, CDGE_FORMAT_AUDIO, 83018 }, + { 34, CDGE_FORMAT_AUDIO, 83528 }, + { 35, CDGE_FORMAT_AUDIO, 87939 }, + { 36, CDGE_FORMAT_AUDIO, 88861 }, + { 37, CDGE_FORMAT_AUDIO, 91647 }, + { 38, CDGE_FORMAT_AUDIO, 92172 }, + { 39, CDGE_FORMAT_AUDIO, 94556 }, + { 40, CDGE_FORMAT_AUDIO, 97820 }, + { 41, CDGE_FORMAT_AUDIO, 98140 }, + { 42, CDGE_FORMAT_AUDIO, 98614 }, + { 43, CDGE_FORMAT_AUDIO, 98951 }, + { 44, CDGE_FORMAT_AUDIO, 99691 }, + { 45, CDGE_FORMAT_AUDIO, 100379 }, + { 46, CDGE_FORMAT_AUDIO, 100699 }, + { 47, CDGE_FORMAT_AUDIO, 101019 }, + { 48, CDGE_FORMAT_AUDIO, 101339 }, + { 49, CDGE_FORMAT_AUDIO, 103185 }, + { 50, CDGE_FORMAT_AUDIO, 103500 }, + { 51, CDGE_FORMAT_AUDIO, 107791 }, + { 52, CDGE_FORMAT_AUDIO, 108111 }, + { 53, CDGE_FORMAT_AUDIO, 108583 }, + { 54, CDGE_FORMAT_AUDIO, 109161 }, + { 55, CDGE_FORMAT_AUDIO, 113732 }, + { 56, CDGE_FORMAT_AUDIO, 114657 }, + { 57, CDGE_FORMAT_AUDIO, 115080 }, + { 58, CDGE_FORMAT_AUDIO, 115645 }, + { 59, CDGE_FORMAT_AUDIO, 115996 }, + { 60, CDGE_FORMAT_AUDIO, 117096 }, + { 61, CDGE_FORMAT_AUDIO, 117649 }, + { 62, CDGE_FORMAT_AUDIO, 117969 }, + { 63, CDGE_FORMAT_AUDIO, 118832 }, + { 64, CDGE_FORMAT_AUDIO, 120283 }, + { 65, CDGE_FORMAT_AUDIO, 122653 }, + { 66, CDGE_FORMAT_AUDIO, 122973 }, + { 67, CDGE_FORMAT_AUDIO, 123340 }, + { 68, CDGE_FORMAT_AUDIO, 123676 }, + { 69, CDGE_FORMAT_AUDIO, 123996 }, + { 70, CDGE_FORMAT_AUDIO, 126275 }, + { 71, CDGE_FORMAT_AUDIO, 130217 }, + { 72, CDGE_FORMAT_AUDIO, 137425 }, + { 73, CDGE_FORMAT_AUDIO, 143256 }, + { 74, CDGE_FORMAT_AUDIO, 145854 }, + { 75, CDGE_FORMAT_AUDIO, 149728 }, + { 76, CDGE_FORMAT_AUDIO, 151589 }, + { 77, CDGE_FORMAT_AUDIO, 151909 }, + { 78, CDGE_FORMAT_AUDIO, 152356 }, + { 79, CDGE_FORMAT_AUDIO, 156214 }, + { 80, CDGE_FORMAT_AUDIO, 158157 }, + { 81, CDGE_FORMAT_AUDIO, 159612 }, + { 82, CDGE_FORMAT_AUDIO, 162307 }, + { 83, CDGE_FORMAT_AUDIO, 163569 }, + { 84, CDGE_FORMAT_AUDIO, 166452 }, + { 85, CDGE_FORMAT_AUDIO, 169513 }, + { 86, CDGE_FORMAT_AUDIO, 174406 }, + { 87, CDGE_FORMAT_AUDIO, 191526 }, + { 88, CDGE_FORMAT_AUDIO, 197689 }, + { 89, CDGE_FORMAT_AUDIO, 197990 }, + { 90, CDGE_FORMAT_AUDIO, 198291 }, + { 91, CDGE_FORMAT_AUDIO, 201334 }, + { -1, -1, 201636 }, + } + } +}, + +{ + "Can Can Bunny Extra DX", + "ãゃんãゃんãƒãƒ‹ãƒ¼ã‚¨ã‚¯ã‚¹ãƒˆãƒ©DX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2936 }, + { 3, CDGE_FORMAT_DATA, 3322 }, + { 4, CDGE_FORMAT_AUDIO, 279473 }, + { 5, CDGE_FORMAT_AUDIO, 291019 }, + { 6, CDGE_FORMAT_AUDIO, 303173 }, + { 7, CDGE_FORMAT_AUDIO, 309557 }, + { -1, -1, 316447 }, + } + } +}, + +{ + "Chip Chan Kick", + "ãƒãƒƒãƒ—ãゃんキイーック", + CDGE_FLAG_ACCURATE_V810, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5128 }, + { 3, CDGE_FORMAT_AUDIO, 66911 }, + { 4, CDGE_FORMAT_AUDIO, 68734 }, + { 5, CDGE_FORMAT_AUDIO, 73420 }, + { 6, CDGE_FORMAT_AUDIO, 78046 }, + { 7, CDGE_FORMAT_AUDIO, 83671 }, + { 8, CDGE_FORMAT_AUDIO, 103981 }, + { 9, CDGE_FORMAT_AUDIO, 123333 }, + { 10, CDGE_FORMAT_AUDIO, 139735 }, + { 11, CDGE_FORMAT_AUDIO, 143207 }, + { 12, CDGE_FORMAT_AUDIO, 145857 }, + { 13, CDGE_FORMAT_AUDIO, 158775 }, + { 14, CDGE_FORMAT_AUDIO, 177806 }, + { 15, CDGE_FORMAT_AUDIO, 194978 }, + { 16, CDGE_FORMAT_AUDIO, 195667 }, + { 17, CDGE_FORMAT_AUDIO, 197608 }, + { 18, CDGE_FORMAT_AUDIO, 198320 }, + { 19, CDGE_FORMAT_AUDIO, 203445 }, + { 20, CDGE_FORMAT_AUDIO, 221182 }, + { 21, CDGE_FORMAT_AUDIO, 237322 }, + { 22, CDGE_FORMAT_AUDIO, 256767 }, + { 23, CDGE_FORMAT_AUDIO, 257949 }, + { -1, -1, 274921 }, + } + } +}, + +{ + "Comic Road", + "ã“ã¿ã£ãã‚ーã©", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4232 }, + { 3, CDGE_FORMAT_DATA, 5258 }, + { -1, -1, 330932 }, + } + } +}, + +{ + "Cutey Honey FX", + "キューテイーãƒãƒ‹ãƒ¼ FX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { -1, -1, 283315 }, + } + } +}, + +{ + "Deep Blue Fleet", + "紺碧ã®è‰¦éšŠ", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2284 }, + { 3, CDGE_FORMAT_AUDIO, 183701 }, + { 4, CDGE_FORMAT_AUDIO, 184477 }, + { 5, CDGE_FORMAT_AUDIO, 191254 }, + { 6, CDGE_FORMAT_AUDIO, 197407 }, + { 7, CDGE_FORMAT_AUDIO, 206666 }, + { 8, CDGE_FORMAT_AUDIO, 211927 }, + { 9, CDGE_FORMAT_AUDIO, 217685 }, + { 10, CDGE_FORMAT_AUDIO, 225936 }, + { 11, CDGE_FORMAT_AUDIO, 229784 }, + { -1, -1, 230085 }, + } + } +}, + +{ + "Der Langrisser FX", + "デアラングリッサーFX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1971 }, + { 3, CDGE_FORMAT_AUDIO, 323127 }, + { -1, -1, 330256 }, + } + } +}, + +{ + "Doukyusei II", + "åŒç´šç”Ÿï¼’", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 4909 }, + { 4, CDGE_FORMAT_DATA, 5941 }, + { 5, CDGE_FORMAT_DATA, 42059 }, + { 6, CDGE_FORMAT_AUDIO, 220795 }, + { 7, CDGE_FORMAT_AUDIO, 225646 }, + { 8, CDGE_FORMAT_AUDIO, 235498 }, + { -1, -1, 246680 }, + } + } +}, + +{ + "Dragon Knight IV", + "ドラゴンナイト4", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 177212 }, + { 4, CDGE_FORMAT_AUDIO, 196193 }, + { -1, -1, 218037 }, + } + } +}, + +{ + "Farland Story FX", + "ファーランドストーリー", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 232538 }, + { 4, CDGE_FORMAT_AUDIO, 236403 }, + { 5, CDGE_FORMAT_AUDIO, 238396 }, + { -1, -1, 242433 }, + } + } +}, + +{ + "Fire Woman Matoi-gumi", + "ファイアーウーマンçºçµ„", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5119 }, + { -1, -1, 257764 }, + } + } +}, + +{ + "First Kiss Monogatari", + "ファーストKiss物語", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1356 }, + { 3, CDGE_FORMAT_AUDIO, 318011 }, + { 4, CDGE_FORMAT_AUDIO, 324526 }, + { -1, -1, 325039 }, + } + } +}, + +{ + "Fushigi No Kuni No Angelique", + "ãµã—ãŽã®å›½ã®ã‚¢ãƒ³ã‚¸ã‚§ãƒªãƒ¼ã‚¯", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 4829 }, + { 4, CDGE_FORMAT_DATA, 5202 }, + { 5, CDGE_FORMAT_DATA, 7172 }, + { 6, CDGE_FORMAT_DATA, 53781 }, + { -1, -1, 142498 }, + } + } +}, + +{ + "Ginga Ojousama Densetsu Yuna FX", + "銀河ãŠå¬¢æ§˜ä¼èª¬ãƒ¦ãƒŠï¼¦ï¼¸", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2276 }, + { -1, -1, 301707 }, + } + } +}, + +{ + "Ginga Ojousama Densetsu Yuna FX Special Edition", + "銀河ãŠå¬¢æ§˜ä¼èª¬ãƒ¦ãƒŠï¼¦ï¼¸ Special Edition", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 52049 }, + { -1, -1, 61102 }, + } + } +}, + +{ + "Graduation REAL", + "å’æ¥­ï¼² Graduation Real", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 5165 }, + { -1, -1, 213907 }, + } + } +}, + +{ + "Kishin Douji Zenki FX", + "é¬¼ç¥žç«¥å­ ï¼ºï¼¥ï¼®ï¼«ï¼© FX", + CDGE_FLAG_ACCURATE_V810, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 7171 }, + { 3, CDGE_FORMAT_AUDIO, 107872 }, + { 4, CDGE_FORMAT_AUDIO, 110438 }, + { 5, CDGE_FORMAT_AUDIO, 112940 }, + { 6, CDGE_FORMAT_AUDIO, 131362 }, + { 7, CDGE_FORMAT_AUDIO, 147425 }, + { 8, CDGE_FORMAT_AUDIO, 163839 }, + { 9, CDGE_FORMAT_AUDIO, 174752 }, + { 10, CDGE_FORMAT_AUDIO, 190392 }, + { 11, CDGE_FORMAT_AUDIO, 201880 }, + { 12, CDGE_FORMAT_AUDIO, 220717 }, + { 13, CDGE_FORMAT_AUDIO, 230587 }, + { 14, CDGE_FORMAT_AUDIO, 247515 }, + { 15, CDGE_FORMAT_AUDIO, 263803 }, + { 16, CDGE_FORMAT_AUDIO, 265987 }, + { 17, CDGE_FORMAT_AUDIO, 272735 }, + { 18, CDGE_FORMAT_AUDIO, 290382 }, + { 19, CDGE_FORMAT_AUDIO, 305690 }, + { 20, CDGE_FORMAT_AUDIO, 322430 }, + { -1, -1, 329141 }, + } + } +}, + +{ + "Kokuu Hyouryuu Nirgends", + "虚空漂æµãƒ‹ãƒ«ã‚²ãƒ³ãƒ„", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4492 }, + { -1, -1, 330162 }, + } + } +}, + + +{ + "Last Imperial Prince", + "ラストインペリアルプリンス", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 10187 }, + { 4, CDGE_FORMAT_AUDIO, 24124 }, + { 5, CDGE_FORMAT_AUDIO, 40686 }, + { 6, CDGE_FORMAT_AUDIO, 56583 }, + { 7, CDGE_FORMAT_AUDIO, 63025 }, + { 8, CDGE_FORMAT_AUDIO, 69646 }, + { 9, CDGE_FORMAT_AUDIO, 75144 }, + { 10, CDGE_FORMAT_AUDIO, 81208 }, + { 11, CDGE_FORMAT_AUDIO, 86132 }, + { 12, CDGE_FORMAT_AUDIO, 101745 }, + { 13, CDGE_FORMAT_AUDIO, 107871 }, + { 14, CDGE_FORMAT_AUDIO, 121487 }, + { 15, CDGE_FORMAT_AUDIO, 134835 }, + { 16, CDGE_FORMAT_AUDIO, 148385 }, + { 17, CDGE_FORMAT_AUDIO, 163372 }, + { 18, CDGE_FORMAT_AUDIO, 176996 }, + { 19, CDGE_FORMAT_AUDIO, 216456 }, + { 20, CDGE_FORMAT_AUDIO, 238672 }, + { 21, CDGE_FORMAT_AUDIO, 241036 }, + { 22, CDGE_FORMAT_AUDIO, 242389 }, + { 23, CDGE_FORMAT_DATA, 246767 }, + { 24, CDGE_FORMAT_DATA, 277470 }, + { -1, -1, 290164 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 10187 }, + { 4, CDGE_FORMAT_AUDIO, 24124 }, + { 5, CDGE_FORMAT_AUDIO, 40686 }, + { 6, CDGE_FORMAT_AUDIO, 56583 }, + { 7, CDGE_FORMAT_AUDIO, 63025 }, + { 8, CDGE_FORMAT_AUDIO, 69646 }, + { 9, CDGE_FORMAT_AUDIO, 75144 }, + { 10, CDGE_FORMAT_AUDIO, 81208 }, + { 11, CDGE_FORMAT_AUDIO, 86132 }, + { 12, CDGE_FORMAT_AUDIO, 100599 }, + { 13, CDGE_FORMAT_AUDIO, 114101 }, + { 14, CDGE_FORMAT_AUDIO, 128505 }, + { 15, CDGE_FORMAT_AUDIO, 142903 }, + { 16, CDGE_FORMAT_AUDIO, 156648 }, + { 17, CDGE_FORMAT_AUDIO, 170424 }, + { 18, CDGE_FORMAT_AUDIO, 188071 }, + { 19, CDGE_FORMAT_AUDIO, 230603 }, + { 20, CDGE_FORMAT_AUDIO, 254521 }, + { 21, CDGE_FORMAT_AUDIO, 259922 }, + { 22, CDGE_FORMAT_DATA, 262475 }, + { -1, -1, 318842 }, + } + } +}, + +{ + "Lunatic Dawn", + "ルナテイックドーンFX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 69072 }, + { 4, CDGE_FORMAT_AUDIO, 73053 }, + { 5, CDGE_FORMAT_AUDIO, 81372 }, + { 6, CDGE_FORMAT_AUDIO, 95658 }, + { 7, CDGE_FORMAT_AUDIO, 107310 }, + { 8, CDGE_FORMAT_AUDIO, 113597 }, + { 9, CDGE_FORMAT_AUDIO, 123146 }, + { 10, CDGE_FORMAT_AUDIO, 133358 }, + { 11, CDGE_FORMAT_AUDIO, 144357 }, + { 12, CDGE_FORMAT_AUDIO, 154059 }, + { 13, CDGE_FORMAT_AUDIO, 164189 }, + { 14, CDGE_FORMAT_AUDIO, 172197 }, + { 15, CDGE_FORMAT_AUDIO, 182157 }, + { 16, CDGE_FORMAT_AUDIO, 186336 }, + { 17, CDGE_FORMAT_AUDIO, 192222 }, + { 18, CDGE_FORMAT_AUDIO, 202203 }, + { 19, CDGE_FORMAT_AUDIO, 208274 }, + { 20, CDGE_FORMAT_AUDIO, 212338 }, + { 21, CDGE_FORMAT_AUDIO, 220499 }, + { 22, CDGE_FORMAT_AUDIO, 229850 }, + { 23, CDGE_FORMAT_AUDIO, 240178 }, + { 24, CDGE_FORMAT_AUDIO, 241376 }, + { 25, CDGE_FORMAT_AUDIO, 242050 }, + { 26, CDGE_FORMAT_AUDIO, 246855 }, + { 27, CDGE_FORMAT_AUDIO, 253026 }, + { 28, CDGE_FORMAT_AUDIO, 260509 }, + { 29, CDGE_FORMAT_AUDIO, 260844 }, + { 30, CDGE_FORMAT_AUDIO, 261554 }, + { 31, CDGE_FORMAT_AUDIO, 262591 }, + { -1, -1, 263219 }, + } + } +}, + +{ + "Mahjong Goku Tenjiku", + "麻雀悟空天竺", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 8376 }, + { 4, CDGE_FORMAT_AUDIO, 11607 }, + { 5, CDGE_FORMAT_AUDIO, 19873 }, + { 6, CDGE_FORMAT_AUDIO, 24171 }, + { 7, CDGE_FORMAT_AUDIO, 29994 }, + { 8, CDGE_FORMAT_AUDIO, 34978 }, + { 9, CDGE_FORMAT_AUDIO, 41359 }, + { 10, CDGE_FORMAT_AUDIO, 47803 }, + { 11, CDGE_FORMAT_AUDIO, 54204 }, + { 12, CDGE_FORMAT_AUDIO, 60619 }, + { 13, CDGE_FORMAT_AUDIO, 67006 }, + { 14, CDGE_FORMAT_AUDIO, 73397 }, + { 15, CDGE_FORMAT_AUDIO, 79790 }, + { 16, CDGE_FORMAT_AUDIO, 86179 }, + { 17, CDGE_FORMAT_AUDIO, 92574 }, + { 18, CDGE_FORMAT_AUDIO, 115478 }, + { 19, CDGE_FORMAT_AUDIO, 138537 }, + { 20, CDGE_FORMAT_AUDIO, 161434 }, + { 21, CDGE_FORMAT_AUDIO, 184314 }, + { 22, CDGE_FORMAT_AUDIO, 197815 }, + { 23, CDGE_FORMAT_AUDIO, 216216 }, + { 24, CDGE_FORMAT_AUDIO, 230140 }, + { 25, CDGE_FORMAT_AUDIO, 239554 }, + { 26, CDGE_FORMAT_AUDIO, 240045 }, + { 27, CDGE_FORMAT_AUDIO, 240661 }, + { 28, CDGE_FORMAT_AUDIO, 241040 }, + { 29, CDGE_FORMAT_AUDIO, 241632 }, + { 30, CDGE_FORMAT_AUDIO, 242579 }, + { 31, CDGE_FORMAT_AUDIO, 243054 }, + { 32, CDGE_FORMAT_AUDIO, 243354 }, + { 33, CDGE_FORMAT_AUDIO, 243796 }, + { 34, CDGE_FORMAT_AUDIO, 245294 }, + { 35, CDGE_FORMAT_AUDIO, 247298 }, + { 36, CDGE_FORMAT_AUDIO, 249208 }, + { 37, CDGE_FORMAT_AUDIO, 250388 }, + { 38, CDGE_FORMAT_AUDIO, 251862 }, + { 39, CDGE_FORMAT_AUDIO, 253227 }, + { 40, CDGE_FORMAT_AUDIO, 254796 }, + { 41, CDGE_FORMAT_AUDIO, 256032 }, + { -1, -1, 264625 }, + } + } +}, + +{ + "Makeruna! Makendou Z", + "è² ã‘ã‚‹ãªï¼é­”剣é“Z", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 5165 }, + { 4, CDGE_FORMAT_DATA, 5677 }, + { 5, CDGE_FORMAT_DATA, 6477 }, + { 6, CDGE_FORMAT_DATA, 7645 }, + { 7, CDGE_FORMAT_DATA, 8157 }, + { 8, CDGE_FORMAT_DATA, 16349 }, + { 9, CDGE_FORMAT_DATA, 52294 }, + { 10, CDGE_FORMAT_AUDIO, 174749 }, + { 11, CDGE_FORMAT_DATA, 191888 }, + { -1, -1, 192401 }, + } + } +}, + +{ + "Megami Paradise II", + "女神天国II", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 3381 }, + { 3, CDGE_FORMAT_AUDIO, 296237 }, + { 4, CDGE_FORMAT_DATA, 306322 }, + { -1, -1, 306835 }, + } + } +}, + +{ + "Minimum Nanonic", + "ã¿ã«ã¾ã‚€ãªã®ã«ã£ã", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 208813 }, + { 4, CDGE_FORMAT_AUDIO, 227341 }, + { 5, CDGE_FORMAT_AUDIO, 245834 }, + { -1, -1, 250005 }, + } + } +}, + +{ + "Miraculum: The Last Revelation", + "ミラークルム ーサ・ラスト・レベレーションー", + 0, //CDGE_FLAG_ACCURATE_V810, // 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { -1, -1, 315726 }, + } + } +}, + +{ + "Nnyuu", + NULL, + CDGE_FLAG_FXGA, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 13517 }, + { 4, CDGE_FORMAT_AUDIO, 25819 }, + { 5, CDGE_FORMAT_AUDIO, 32862 }, + { 6, CDGE_FORMAT_AUDIO, 42340 }, + { 7, CDGE_FORMAT_AUDIO, 51288 }, + { 8, CDGE_FORMAT_AUDIO, 63538 }, + { 9, CDGE_FORMAT_AUDIO, 72521 }, + { 10, CDGE_FORMAT_AUDIO, 83392 }, + { -1, -1, 91836 }, + }, + { + { 1, CDGE_FORMAT_DATA, 0 }, + { -1, -1, 9495 }, + } + } +}, + +{ + "Ojousama Sousamou", + "ãŠå¬¢æ§˜æœæŸ»ç¶²", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 9083 }, + { 3, CDGE_FORMAT_DATA, 10935 }, + { 4, CDGE_FORMAT_DATA, 12489 }, + { 5, CDGE_FORMAT_DATA, 13054 }, + { 6, CDGE_FORMAT_DATA, 38195 }, + { 7, CDGE_FORMAT_AUDIO, 120164 }, + { 8, CDGE_FORMAT_AUDIO, 127204 }, + { 9, CDGE_FORMAT_AUDIO, 134263 }, + { 10, CDGE_FORMAT_AUDIO, 134597 }, + { 11, CDGE_FORMAT_AUDIO, 136291 }, + { 12, CDGE_FORMAT_AUDIO, 137881 }, + { 13, CDGE_FORMAT_AUDIO, 143424 }, + { 14, CDGE_FORMAT_AUDIO, 150212 }, + { 15, CDGE_FORMAT_AUDIO, 156807 }, + { 16, CDGE_FORMAT_AUDIO, 163988 }, + { 17, CDGE_FORMAT_AUDIO, 170768 }, + { 18, CDGE_FORMAT_AUDIO, 177616 }, + { 19, CDGE_FORMAT_AUDIO, 183555 }, + { 20, CDGE_FORMAT_AUDIO, 185138 }, + { 21, CDGE_FORMAT_AUDIO, 185557 }, + { 22, CDGE_FORMAT_AUDIO, 187160 }, + { 23, CDGE_FORMAT_AUDIO, 187507 }, + { 24, CDGE_FORMAT_AUDIO, 188122 }, + { 25, CDGE_FORMAT_AUDIO, 196158 }, + { 26, CDGE_FORMAT_AUDIO, 204161 }, + { 27, CDGE_FORMAT_AUDIO, 206297 }, + { 28, CDGE_FORMAT_AUDIO, 224106 }, + { 29, CDGE_FORMAT_AUDIO, 227826 }, + { 30, CDGE_FORMAT_AUDIO, 235934 }, + { 31, CDGE_FORMAT_AUDIO, 237516 }, + { -1, -1, 244557 }, + } + } +}, + +{ + "Pachio-kun FX", + "パãƒå¤«ãんFX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 5037 }, + { 4, CDGE_FORMAT_DATA, 7830 }, + { 5, CDGE_FORMAT_DATA, 157279 }, + { 6, CDGE_FORMAT_DATA, 158364 }, + { 7, CDGE_FORMAT_DATA, 180499 }, + { 8, CDGE_FORMAT_AUDIO, 205401 }, + { 9, CDGE_FORMAT_AUDIO, 206401 }, + { 10, CDGE_FORMAT_AUDIO, 219890 }, + { 11, CDGE_FORMAT_AUDIO, 224061 }, + { 12, CDGE_FORMAT_AUDIO, 228389 }, + { 13, CDGE_FORMAT_AUDIO, 232550 }, + { 14, CDGE_FORMAT_AUDIO, 239291 }, + { -1, -1, 253825 }, + } + } +}, + +{ + "PCE Fan Special CD-Rom Vol. 2", + "PC Engine Fan Special CDROM Vol.2", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2938 }, + { 3, CDGE_FORMAT_DATA, 4778 }, + { 4, CDGE_FORMAT_DATA, 62548 }, + { 5, CDGE_FORMAT_DATA, 125244 }, + { 6, CDGE_FORMAT_AUDIO, 144311 }, + { 7, CDGE_FORMAT_AUDIO, 150877 }, + { 8, CDGE_FORMAT_AUDIO, 210027 }, + { 9, CDGE_FORMAT_AUDIO, 213928 }, + { 10, CDGE_FORMAT_AUDIO, 217629 }, + { 11, CDGE_FORMAT_AUDIO, 220644 }, + { 12, CDGE_FORMAT_AUDIO, 224512 }, + { 13, CDGE_FORMAT_AUDIO, 231187 }, + { 14, CDGE_FORMAT_AUDIO, 234309 }, + { 15, CDGE_FORMAT_AUDIO, 239072 }, + { -1, -1, 240786 }, + } + } +}, + +{ + "PCE Fan Special CD-Rom Vol. 3", + "PC Engine Fan Special CDROM Vol.3", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1831 }, + { 3, CDGE_FORMAT_DATA, 5239 }, + { 4, CDGE_FORMAT_DATA, 12377 }, + { 5, CDGE_FORMAT_AUDIO, 25381 }, + { 6, CDGE_FORMAT_AUDIO, 29358 }, + { 7, CDGE_FORMAT_AUDIO, 35924 }, + { 8, CDGE_FORMAT_AUDIO, 93272 }, + { 9, CDGE_FORMAT_DATA, 144485 }, + { -1, -1, 146604 }, + } + } +}, + +{ + "Pia Carrot He Youkoso", + "PIAキャロットã¸ã‚ˆã†ã“ãï¼ï¼", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 6923 }, + { 3, CDGE_FORMAT_AUDIO, 294030 }, + { 4, CDGE_FORMAT_AUDIO, 300770 }, + { 5, CDGE_FORMAT_AUDIO, 307627 }, + { -1, -1, 314486 }, + } + } +}, + +{ + "Power Dolls FX", + "パワードールFX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 5165 }, + { 4, CDGE_FORMAT_DATA, 5507 }, + { 5, CDGE_FORMAT_DATA, 6279 }, + { 6, CDGE_FORMAT_DATA, 6647 }, + { 7, CDGE_FORMAT_DATA, 7079 }, + { 8, CDGE_FORMAT_DATA, 9480 }, + { 9, CDGE_FORMAT_DATA, 9854 }, + { 10, CDGE_FORMAT_DATA, 10366 }, + { 11, CDGE_FORMAT_DATA, 11184 }, + { 12, CDGE_FORMAT_DATA, 11952 }, + { 13, CDGE_FORMAT_DATA, 12499 }, + { 14, CDGE_FORMAT_AUDIO, 33090 }, + { 15, CDGE_FORMAT_AUDIO, 47464 }, + { 16, CDGE_FORMAT_DATA, 67672 }, + { 17, CDGE_FORMAT_DATA, 68440 }, + { 18, CDGE_FORMAT_DATA, 73582 }, + { 19, CDGE_FORMAT_AUDIO, 74650 }, + { 20, CDGE_FORMAT_AUDIO, 86120 }, + { 21, CDGE_FORMAT_AUDIO, 115719 }, + { 22, CDGE_FORMAT_AUDIO, 130093 }, + { 23, CDGE_FORMAT_AUDIO, 143954 }, + { 24, CDGE_FORMAT_AUDIO, 162477 }, + { 25, CDGE_FORMAT_AUDIO, 180206 }, + { 26, CDGE_FORMAT_AUDIO, 192167 }, + { 27, CDGE_FORMAT_AUDIO, 208417 }, + { 28, CDGE_FORMAT_AUDIO, 218607 }, + { 29, CDGE_FORMAT_AUDIO, 238590 }, + { 30, CDGE_FORMAT_AUDIO, 258179 }, + { -1, -1, 258734 }, + } + } +}, + +{ + "Return to Zork", + "Return to Zork", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { -1, -1, 166265 }, + } + } +}, + +{ + "Ruruli Ra Rura", + "ルルリ・ラ・ルラ", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 3230 }, + { 3, CDGE_FORMAT_AUDIO, 158649 }, + { 4, CDGE_FORMAT_AUDIO, 169395 }, + { 5, CDGE_FORMAT_AUDIO, 184829 }, + { 6, CDGE_FORMAT_AUDIO, 197368 }, + { 7, CDGE_FORMAT_AUDIO, 210123 }, + { 8, CDGE_FORMAT_AUDIO, 223314 }, + { 9, CDGE_FORMAT_AUDIO, 237257 }, + { 10, CDGE_FORMAT_AUDIO, 251315 }, + { 11, CDGE_FORMAT_AUDIO, 266763 }, + { 12, CDGE_FORMAT_AUDIO, 281719 }, + { 13, CDGE_FORMAT_AUDIO, 295240 }, + { 14, CDGE_FORMAT_AUDIO, 295721 }, + { 15, CDGE_FORMAT_AUDIO, 296390 }, + { 16, CDGE_FORMAT_AUDIO, 297080 }, + { 17, CDGE_FORMAT_AUDIO, 297655 }, + { 18, CDGE_FORMAT_AUDIO, 298209 }, + { 19, CDGE_FORMAT_AUDIO, 301612 }, + { 20, CDGE_FORMAT_AUDIO, 303020 }, + { 21, CDGE_FORMAT_AUDIO, 303964 }, + { -1, -1, 322241 }, + } + } +}, + +{ + "Same Game FX", + NULL, + CDGE_FLAG_FXGA, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 3270 }, + { -1, -1, 3859 }, + } + } +}, + +{ + "Shanghai: The Great Wall", + "上海 万里ã®é•·åŸŽ", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 9611 }, + { 4, CDGE_FORMAT_AUDIO, 15872 }, + { 5, CDGE_FORMAT_AUDIO, 21570 }, + { 6, CDGE_FORMAT_AUDIO, 27001 }, + { 7, CDGE_FORMAT_AUDIO, 32506 }, + { 8, CDGE_FORMAT_AUDIO, 38675 }, + { 9, CDGE_FORMAT_AUDIO, 44503 }, + { 10, CDGE_FORMAT_AUDIO, 49867 }, + { 11, CDGE_FORMAT_AUDIO, 55328 }, + { 12, CDGE_FORMAT_AUDIO, 61187 }, + { 13, CDGE_FORMAT_AUDIO, 66669 }, + { 14, CDGE_FORMAT_AUDIO, 72147 }, + { 15, CDGE_FORMAT_AUDIO, 77654 }, + { 16, CDGE_FORMAT_AUDIO, 83325 }, + { 17, CDGE_FORMAT_AUDIO, 89000 }, + { 18, CDGE_FORMAT_AUDIO, 94305 }, + { 19, CDGE_FORMAT_AUDIO, 97879 }, + { 20, CDGE_FORMAT_AUDIO, 103439 }, + { 21, CDGE_FORMAT_AUDIO, 108929 }, + { 22, CDGE_FORMAT_AUDIO, 114689 }, + { 23, CDGE_FORMAT_AUDIO, 115109 }, + { 24, CDGE_FORMAT_AUDIO, 115553 }, + { 25, CDGE_FORMAT_AUDIO, 117222 }, + { 26, CDGE_FORMAT_AUDIO, 117672 }, + { 27, CDGE_FORMAT_AUDIO, 122812 }, + { 28, CDGE_FORMAT_AUDIO, 123948 }, + { 29, CDGE_FORMAT_AUDIO, 124631 }, + { -1, -1, 130162 }, + } + } +}, + +{ + "Neo Generation II FX", + "å’æ¥­ï¼©ï¼© FX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 13481 }, + { 3, CDGE_FORMAT_AUDIO, 209349 }, + { 4, CDGE_FORMAT_AUDIO, 215587 }, + { 5, CDGE_FORMAT_AUDIO, 227412 }, + { 6, CDGE_FORMAT_AUDIO, 239413 }, + { 7, CDGE_FORMAT_AUDIO, 243045 }, + { -1, -1, 243387 }, + } + } +}, + +{ + "Sparkling Feather", + "スパークリングフェザー", + CDGE_FLAG_ACCURATE_V810, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1661 }, + { 3, CDGE_FORMAT_DATA, 182640 }, + { 4, CDGE_FORMAT_DATA, 183177 }, + { 5, CDGE_FORMAT_DATA, 183670 }, + { 6, CDGE_FORMAT_DATA, 184717 }, + { 7, CDGE_FORMAT_DATA, 185671 }, + { 8, CDGE_FORMAT_DATA, 187043 }, + { 9, CDGE_FORMAT_DATA, 187983 }, + { 10, CDGE_FORMAT_DATA, 188881 }, + { 11, CDGE_FORMAT_DATA, 189642 }, + { 12, CDGE_FORMAT_DATA, 194036 }, + { 13, CDGE_FORMAT_DATA, 195380 }, + { 14, CDGE_FORMAT_DATA, 196675 }, + { 15, CDGE_FORMAT_DATA, 197976 }, + { 16, CDGE_FORMAT_DATA, 199266 }, + { 17, CDGE_FORMAT_DATA, 200580 }, + { 18, CDGE_FORMAT_DATA, 201926 }, + { 19, CDGE_FORMAT_DATA, 203260 }, + { 20, CDGE_FORMAT_DATA, 204619 }, + { 21, CDGE_FORMAT_DATA, 206050 }, + { 22, CDGE_FORMAT_DATA, 209018 }, + { 23, CDGE_FORMAT_DATA, 211978 }, + { 24, CDGE_FORMAT_DATA, 214198 }, + { 25, CDGE_FORMAT_DATA, 215837 }, + { 26, CDGE_FORMAT_DATA, 217272 }, + { -1, -1, 218870 }, + } + } +}, + +{ + "Super PCE Fan Deluxe Special CD-Rom Vol. 1", + "SUPER PCエンジンファン DELUXE VOL.1", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 52049 }, + { 4, CDGE_FORMAT_DATA, 61101 }, + { 5, CDGE_FORMAT_DATA, 62381 }, + { 6, CDGE_FORMAT_DATA, 156844 }, + { 7, CDGE_FORMAT_DATA, 228449 }, + { 8, CDGE_FORMAT_DATA, 249299 }, + { 9, CDGE_FORMAT_DATA, 254167 }, + { 10, CDGE_FORMAT_DATA, 266033 }, + { 11, CDGE_FORMAT_DATA, 276018 }, + { 12, CDGE_FORMAT_DATA, 282558 }, + { 13, CDGE_FORMAT_AUDIO, 299212 }, + { -1, -1, 305779 }, + } + } +}, + +{ + "Super PCE Fan Deluxe Special CD-Rom Vol. 2", + "SUPER PCエンジンファン DELUXE VOL.2", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 10251 }, + { 4, CDGE_FORMAT_DATA, 26494 }, + { 5, CDGE_FORMAT_DATA, 51756 }, + { 6, CDGE_FORMAT_DATA, 57179 }, + { 7, CDGE_FORMAT_DATA, 68238 }, + { 8, CDGE_FORMAT_DATA, 76683 }, + { 9, CDGE_FORMAT_DATA, 82991 }, + { 10, CDGE_FORMAT_DATA, 89072 }, + { 11, CDGE_FORMAT_DATA, 96938 }, + { 12, CDGE_FORMAT_DATA, 104587 }, + { 13, CDGE_FORMAT_DATA, 115120 }, + { 14, CDGE_FORMAT_DATA, 137766 }, + { 15, CDGE_FORMAT_DATA, 169372 }, + { 16, CDGE_FORMAT_DATA, 191451 }, + { 17, CDGE_FORMAT_AUDIO, 193018 }, + { 18, CDGE_FORMAT_AUDIO, 206955 }, + { 19, CDGE_FORMAT_AUDIO, 223517 }, + { 20, CDGE_FORMAT_AUDIO, 229959 }, + { 21, CDGE_FORMAT_AUDIO, 236580 }, + { 22, CDGE_FORMAT_AUDIO, 242078 }, + { 23, CDGE_FORMAT_AUDIO, 247002 }, + { 24, CDGE_FORMAT_DATA, 260851 }, + { 25, CDGE_FORMAT_DATA, 273544 }, + { 26, CDGE_FORMAT_AUDIO, 304547 }, + { -1, -1, 311114 }, + } + } +}, + +{ + "Super Power League FX", + "スーパーパワーリーグFX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 3590 }, + { 3, CDGE_FORMAT_DATA, 4344 }, + { 4, CDGE_FORMAT_AUDIO, 14637 }, + { 5, CDGE_FORMAT_DATA, 102512 }, + { -1, -1, 166532 }, + } + } +}, + +{ + "Super Real Mahjong P V FX", + "スーパーリアル麻雀P5", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2590 }, + { 3, CDGE_FORMAT_DATA, 2976 }, + { 4, CDGE_FORMAT_DATA, 3350 }, + { 5, CDGE_FORMAT_DATA, 89885 }, + { 6, CDGE_FORMAT_DATA, 90695 }, + { 7, CDGE_FORMAT_AUDIO, 94331 }, + { 8, CDGE_FORMAT_AUDIO, 105090 }, + { 9, CDGE_FORMAT_AUDIO, 114148 }, + { 10, CDGE_FORMAT_AUDIO, 125335 }, + { 11, CDGE_FORMAT_AUDIO, 136932 }, + { 12, CDGE_FORMAT_AUDIO, 147480 }, + { 13, CDGE_FORMAT_AUDIO, 160406 }, + { 14, CDGE_FORMAT_AUDIO, 171875 }, + { 15, CDGE_FORMAT_AUDIO, 178636 }, + { 16, CDGE_FORMAT_AUDIO, 180766 }, + { -1, -1, 183547 }, + } + } +}, + + +{ + "Team Innocent", + "ãƒãƒ¼ãƒ ã‚¤ãƒŽã‚»ãƒ³ãƒˆã€€The point of no return", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 218041 }, + { 4, CDGE_FORMAT_AUDIO, 241208 }, + { 5, CDGE_FORMAT_AUDIO, 247705 }, + { 6, CDGE_FORMAT_AUDIO, 254586 }, + { 7, CDGE_FORMAT_AUDIO, 260797 }, + { 8, CDGE_FORMAT_AUDIO, 267971 }, + { 9, CDGE_FORMAT_AUDIO, 275080 }, + { 10, CDGE_FORMAT_AUDIO, 285655 }, + { 11, CDGE_FORMAT_AUDIO, 289111 }, + { 12, CDGE_FORMAT_AUDIO, 300772 }, + { 13, CDGE_FORMAT_AUDIO, 305057 }, + { 14, CDGE_FORMAT_AUDIO, 317734 }, + { -1, -1, 324695 }, + } + } +}, + +{ + "Tekipaki Working Love", + "ã¯ãŸã‚‰ã☆少女 ã¦ãã±ãワーキンラブ FX", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 2474 }, + { 3, CDGE_FORMAT_DATA, 3500 }, + { 4, CDGE_FORMAT_AUDIO, 181612 }, + { 5, CDGE_FORMAT_AUDIO, 194776 }, + { -1, -1, 211869 }, + }, + } +}, + +{ + "Tenchi Muyo FX", + "天地無用! 魎皇鬼 FX", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4135 }, + { -1, -1, 301916 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4621 }, + { -1, -1, 74055 }, + } + } +}, + +{ + "Tengai Makyou Karakuri Kakutouden", + "天外魔境電脳çµç¹°æ ¼é—˜ä¼", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 9515 }, + { 4, CDGE_FORMAT_DATA, 27125 }, + { 5, CDGE_FORMAT_DATA, 49259 }, + { 6, CDGE_FORMAT_DATA, 74712 }, + { 7, CDGE_FORMAT_DATA, 101125 }, + { 8, CDGE_FORMAT_DATA, 129079 }, + { 9, CDGE_FORMAT_DATA, 156743 }, + { 10, CDGE_FORMAT_DATA, 192741 }, + { 11, CDGE_FORMAT_DATA, 215240 }, + { 12, CDGE_FORMAT_DATA, 240217 }, + { 13, CDGE_FORMAT_DATA, 260898 }, + { -1, -1, 279663 }, + } + } +}, + +{ + "Tokimeki Card Paradise", + "ã¨ãã‚ãカードパラダイス", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_AUDIO, 9731 }, + { 4, CDGE_FORMAT_AUDIO, 10223 }, + { 5, CDGE_FORMAT_AUDIO, 10676 }, + { 6, CDGE_FORMAT_AUDIO, 11182 }, + { 7, CDGE_FORMAT_AUDIO, 11813 }, + { 8, CDGE_FORMAT_AUDIO, 12472 }, + { 9, CDGE_FORMAT_AUDIO, 18522 }, + { 10, CDGE_FORMAT_AUDIO, 31943 }, + { 11, CDGE_FORMAT_AUDIO, 45364 }, + { 12, CDGE_FORMAT_AUDIO, 58258 }, + { 13, CDGE_FORMAT_AUDIO, 69409 }, + { 14, CDGE_FORMAT_AUDIO, 80560 }, + { 15, CDGE_FORMAT_AUDIO, 91711 }, + { 16, CDGE_FORMAT_AUDIO, 95691 }, + { 17, CDGE_FORMAT_DATA, 99896 }, + { 18, CDGE_FORMAT_DATA, 105396 }, + { 19, CDGE_FORMAT_DATA, 106280 }, + { 20, CDGE_FORMAT_DATA, 107391 }, + { 21, CDGE_FORMAT_DATA, 108375 }, + { 22, CDGE_FORMAT_DATA, 109360 }, + { 23, CDGE_FORMAT_DATA, 110659 }, + { 24, CDGE_FORMAT_DATA, 111616 }, + { 25, CDGE_FORMAT_DATA, 113281 }, + { 26, CDGE_FORMAT_DATA, 113745 }, + { 27, CDGE_FORMAT_DATA, 115386 }, + { 28, CDGE_FORMAT_DATA, 119952 }, + { 29, CDGE_FORMAT_DATA, 121377 }, + { 30, CDGE_FORMAT_DATA, 123944 }, + { 31, CDGE_FORMAT_DATA, 125477 }, + { 32, CDGE_FORMAT_DATA, 126472 }, + { 33, CDGE_FORMAT_DATA, 127545 }, + { 34, CDGE_FORMAT_DATA, 128993 }, + { 35, CDGE_FORMAT_DATA, 130345 }, + { 36, CDGE_FORMAT_DATA, 132774 }, + { 37, CDGE_FORMAT_DATA, 133299 }, + { 38, CDGE_FORMAT_DATA, 134847 }, + { 39, CDGE_FORMAT_DATA, 139225 }, + { 40, CDGE_FORMAT_DATA, 142224 }, + { 41, CDGE_FORMAT_DATA, 143967 }, + { 42, CDGE_FORMAT_DATA, 145100 }, + { 43, CDGE_FORMAT_DATA, 146002 }, + { 44, CDGE_FORMAT_DATA, 147556 }, + { 45, CDGE_FORMAT_DATA, 148650 }, + { 46, CDGE_FORMAT_DATA, 150461 }, + { 47, CDGE_FORMAT_DATA, 151891 }, + { 48, CDGE_FORMAT_DATA, 152514 }, + { 49, CDGE_FORMAT_DATA, 153988 }, + { 50, CDGE_FORMAT_DATA, 157541 }, + { 51, CDGE_FORMAT_DATA, 158440 }, + { 52, CDGE_FORMAT_DATA, 161036 }, + { 53, CDGE_FORMAT_DATA, 162032 }, + { 54, CDGE_FORMAT_DATA, 162793 }, + { 55, CDGE_FORMAT_DATA, 164308 }, + { 56, CDGE_FORMAT_DATA, 165420 }, + { 57, CDGE_FORMAT_DATA, 167152 }, + { 58, CDGE_FORMAT_DATA, 168284 }, + { 59, CDGE_FORMAT_DATA, 169303 }, + { 60, CDGE_FORMAT_DATA, 169718 }, + { 61, CDGE_FORMAT_DATA, 173432 }, + { 62, CDGE_FORMAT_DATA, 177351 }, + { 63, CDGE_FORMAT_DATA, 178477 }, + { 64, CDGE_FORMAT_DATA, 179599 }, + { 65, CDGE_FORMAT_DATA, 180174 }, + { 66, CDGE_FORMAT_DATA, 181222 }, + { 67, CDGE_FORMAT_DATA, 182108 }, + { 68, CDGE_FORMAT_DATA, 182838 }, + { 69, CDGE_FORMAT_DATA, 183745 }, + { 70, CDGE_FORMAT_DATA, 184759 }, + { 71, CDGE_FORMAT_DATA, 185526 }, + { -1, -1, 186254 }, + } + } +}, + +{ + "Tonari no Princess Rolfee", + "ã¨ãªã‚Šã®ãƒ—リンセス ロルフィー", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1431 }, + { -1, -1, 330127 }, + } + } +}, + +{ + "Tyoushin Heiki Zeroigar", + "超神兵器セロイガー", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 1982 }, + { 3, CDGE_FORMAT_AUDIO, 180819 }, + { 4, CDGE_FORMAT_AUDIO, 193570 }, + { 5, CDGE_FORMAT_AUDIO, 213671 }, + { -1, -1, 269144 }, + } + } +}, + + +{ + "Voice Paradise", + "ボイスパラダイス", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 5165 }, + { 4, CDGE_FORMAT_DATA, 19592 }, + { 5, CDGE_FORMAT_AUDIO, 149410 }, + { 6, CDGE_FORMAT_AUDIO, 159592 }, + { 7, CDGE_FORMAT_AUDIO, 164141 }, + { 8, CDGE_FORMAT_AUDIO, 180174 }, + { 9, CDGE_FORMAT_AUDIO, 195993 }, + { 10, CDGE_FORMAT_AUDIO, 212538 }, + { 11, CDGE_FORMAT_AUDIO, 217086 }, + { 12, CDGE_FORMAT_AUDIO, 232175 }, + { 13, CDGE_FORMAT_AUDIO, 253002 }, + { 14, CDGE_FORMAT_AUDIO, 268287 }, + { 15, CDGE_FORMAT_AUDIO, 283159 }, + { 16, CDGE_FORMAT_AUDIO, 284331 }, + { 17, CDGE_FORMAT_AUDIO, 285878 }, + { 18, CDGE_FORMAT_AUDIO, 300515 }, + { -1, -1, 300890 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { 3, CDGE_FORMAT_DATA, 5165 }, + { 4, CDGE_FORMAT_DATA, 19592 }, + { 5, CDGE_FORMAT_AUDIO, 153285 }, + { 6, CDGE_FORMAT_AUDIO, 163467 }, + { 7, CDGE_FORMAT_AUDIO, 168016 }, + { 8, CDGE_FORMAT_AUDIO, 184049 }, + { 9, CDGE_FORMAT_AUDIO, 199868 }, + { 10, CDGE_FORMAT_AUDIO, 216413 }, + { 11, CDGE_FORMAT_AUDIO, 220961 }, + { 12, CDGE_FORMAT_AUDIO, 236050 }, + { 13, CDGE_FORMAT_AUDIO, 256877 }, + { 14, CDGE_FORMAT_AUDIO, 272162 }, + { 15, CDGE_FORMAT_AUDIO, 287034 }, + { 16, CDGE_FORMAT_AUDIO, 288206 }, + { 17, CDGE_FORMAT_AUDIO, 289753 }, + { 18, CDGE_FORMAT_AUDIO, 304390 }, + { -1, -1, 304765 }, + } + } +}, + +{ + "Wakusei-koukitai Little Cats", + "惑星攻機隊りã¨ã‚‹ã‚­ãƒ£ãƒƒãƒ„", + 0, + 1, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 5163 }, + { 3, CDGE_FORMAT_DATA, 5933 }, + { 4, CDGE_FORMAT_DATA, 95878 }, + { 5, CDGE_FORMAT_AUDIO, 209401 }, + { 6, CDGE_FORMAT_AUDIO, 213777 }, + { 7, CDGE_FORMAT_AUDIO, 219527 }, + { 8, CDGE_FORMAT_AUDIO, 225871 }, + { 9, CDGE_FORMAT_AUDIO, 232693 }, + { 10, CDGE_FORMAT_AUDIO, 242452 }, + { 11, CDGE_FORMAT_AUDIO, 248960 }, + { 12, CDGE_FORMAT_AUDIO, 255249 }, + { 13, CDGE_FORMAT_AUDIO, 265891 }, + { 14, CDGE_FORMAT_AUDIO, 268646 }, + { 15, CDGE_FORMAT_AUDIO, 282287 }, + { 16, CDGE_FORMAT_AUDIO, 282743 }, + { -1, -1, 283044 }, + } + } +}, + +{ + "Zoku Hakutoi Monogatari", + "ç¶šåˆæ‹ç‰©èªž", + 0, + 2, + { + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { -1, -1, 332106 }, + }, + { + { 1, CDGE_FORMAT_AUDIO, 0 }, + { 2, CDGE_FORMAT_DATA, 4395 }, + { -1, -1, 333025 }, + } + } +}, + diff --git a/libmednahawk/src/pcfx/huc6273.cpp b/libmednahawk/src/pcfx/huc6273.cpp new file mode 100644 index 0000000000..91a605dbd6 --- /dev/null +++ b/libmednahawk/src/pcfx/huc6273.cpp @@ -0,0 +1,252 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Emulation for HuC6273, FXGA 3D chip */ +/* Definitions: + CMT = Command Macro Table +*/ + +enum +{ + OP_NOP = 0x00, + OP_TRIANGLE_STRIP = 0x01, + OP_TRIANGLE_LIST = 0x02, + OP_POLY_LINE = 0x03, + OP_LINE_LIST = 0x04, + OP_RESERVED0 = 0x05, + OP_PUT_IMAGE = 0x06, + OP_READ_PIXEL = 0x07, + OP_WRITE_TE_REGISTERS = 0x08, + OP_WRITE_PE_REGISTERS = 0x09, + OP_MISC = 0x0A, + OP_RESERVED1 = 0x0B, + OP_READ_TE_REGISTERS = 0x0C, + OP_READ_PE_REGISTERS = 0x0D, + OP_WRITE_LUT = 0x0E, + OP_READ_LUT = 0x0F, +}; + +#include "pcfx.h" +#include "huc6273.h" + +enum +{ + INT_RHIT = 15, // Raster Hit + INT_HBL = 14, // H blank + INT_VBL = 13, // V blank + INT_HSY = 12, // H sync + INT_VSY = 11, // V sync + INT_RBDONE = 10, // Read back done + INT_TESYNC = 9, // TE Sync + INT_SPDONE = 8, // Sprite done + INT_CMDONE = 7, // Command macro done + INT_PESYNC = 6, // PE sync + INT_AEMP = 5, // Almost empty + INT_CSE = 4, // Command sync error + INT_AFL = 3, // Almost full + INT_OVF = 2, // Overflow + INT_FSY = 1, // Frame sync +}; + +static uint16 FIFO[0x20]; +static uint8 InFIFO; +#define AFW (0x20 - InFIFO) + +#define AEMPWD ((FIFOControl >> 4) & 0xFF) +#define AFLWD (FIFOControl & 0xF) +static uint16 FIFOControl; // 0x00004 + +static uint8 CMTBankSelect; +static uint16 CMTStartAddress; +static uint16 CMTByteCount; + +static uint16 InterruptMask; +static uint16 InterruptStatus; + +static uint16 ReadBack; + +static uint16 HorizontalTiming, VerticalTiming; + +static uint16 SCTAddressHi; +static uint16 SpriteControl; +static uint16 CDResult[2]; +static uint16 SPWindowX[2]; // left and right +static uint16 SPWindowY[2]; // top and bottom +static uint16 MiscStatus; +static uint16 ErrorStatus; // Read only! +static uint16 DisplayControl; +static uint16 StatusControl; +static uint16 Config; + +static uint16 RasterHit; + + +static uint16 Results[0x10]; + +static void CheckIRQ(void) +{ + //uint16 MaskedResults = InterruptStatus & InterruptMask; + + + +} + + +static void ProcessFIFO(void) +{ + uint8 length = FIFO[0] & 0xFF; + + if(length > 0x20) + { + length = 0x20; + puts("Length too long"); + } + + if(InFIFO >= length) + { + int opcode = FIFO[0] >> 12; + int option = (FIFO[0] >> 8) & 0x0F; + + printf("Op: %02x, option: %02x\n", opcode, option); + + InFIFO -= length; + for(int i = 0; i < InFIFO; i++) + FIFO[i] = FIFO[length + i]; + } +} + + +static void StoreInFIFO(uint16 V) +{ + if(AFW > 0) + { + FIFO[InFIFO] = V; + InFIFO++; + + ProcessFIFO(); + } +} + +uint8 HuC6273_Read8(uint32 A) +{ + puts("73 Read8"); + return(0); +} + +uint16 HuC6273_Read16(uint32 A) +{ + A &= 0xfffff; + + printf("HuC6273 Read: %04x\n", A); + + switch(A) + { + case 0x00000: + case 0x00002: return(AFW); // Command FIFO status + + case 0x00004: return(FIFOControl); + case 0x00006: return(CMTBankSelect); + case 0x00008: return(CMTStartAddress); + case 0x0000A: return(CMTByteCount); + case 0x0000C: return(InterruptMask); + case 0x0000E: return(0); + case 0x00010: return(InterruptStatus); + case 0x00012: return(ReadBack); + case 0x00014: return(HorizontalTiming); + case 0x00016: return(VerticalTiming); + case 0x00018: return(SCTAddressHi); + case 0x0001A: return(SpriteControl); + case 0x0001C: return(CDResult[0]); + case 0x0001E: return(CDResult[1]); + case 0x00020: return(SPWindowX[0]); + case 0x00022: return(SPWindowY[0]); + case 0x00024: return(SPWindowX[1]); + case 0x00026: return(SPWindowY[1]); + case 0x00028: return(MiscStatus); + case 0x0002A: return(ErrorStatus); + case 0x0002C: return(DisplayControl); + case 0x0002E: return(Config); + } + if(A >= 0x00060 && A <= 0x0007E) + { + return(Results[(A >> 1) & 0xF]); + } + return(0); +} + + +void HuC6273_Write16(uint32 A, uint16 V) +{ + A &= 0xfffff; + + printf("HuC6273 Write: %04x:%04x\n", A, V); + + switch(A) + { + case 0x00000: + case 0x00002: StoreInFIFO(V); break; + + case 0x00004: FIFOControl = V; break; + case 0x00006: CMTBankSelect = V & 0x1F; break; + case 0x00008: CMTStartAddress = V & 0xFFFE; break; + case 0x0000A: CMTByteCount = V & 0xFFFE; break; + case 0x0000C: InterruptMask = V; + CheckIRQ(); + break; + case 0x0000E: // Interrupt Clear + CheckIRQ(); + break; + case 0x00010: InterruptStatus = V; + CheckIRQ(); + break; + case 0x00012: ReadBack = V; break; + case 0x00014: HorizontalTiming = V; break; + case 0x00016: VerticalTiming = V; break; + case 0x00018: SCTAddressHi = V; break; + case 0x0001A: SpriteControl = V; break; + case 0x0001C: CDResult[0] = V; break; + case 0x0001E: CDResult[1] = V; break; + case 0x00020: SPWindowX[0] = V; break; // X Left + case 0x00022: SPWindowY[0] = V; break; // Y Top + case 0x00024: SPWindowX[1] = V; break; // X Right + case 0x00026: SPWindowY[1] = V; break; // Y Bottom + case 0x00028: MiscStatus = V; break; + case 0x0002C: DisplayControl = V; break; + case 0x0002E: StatusControl = V; break; + + case 0x0003C: RasterHit = V; break; + } +} + +void HuC6273_Write8(uint32 A, uint8 V) +{ + puts("73 Write8"); +} + +void HuC6273_Reset(void) +{ + InFIFO = 0; + FIFOControl = 0x5 | (0x20 << 4); +} + + + +bool HuC6273_Init(void) +{ + + return(TRUE); +} diff --git a/libmednahawk/src/pcfx/huc6273.h b/libmednahawk/src/pcfx/huc6273.h new file mode 100644 index 0000000000..9a72e2f367 --- /dev/null +++ b/libmednahawk/src/pcfx/huc6273.h @@ -0,0 +1,13 @@ +#ifndef __PCFX_HUC6273_H +#define __PCFX_HUC6273_H + +bool HuC6273_Init(void); + +uint8 HuC6273_Read8(uint32 A); +uint16 HuC6273_Read16(uint32 A); +void HuC6273_Write16(uint32 A, uint16 V); +void HuC6273_Write8(uint32 A, uint8 V); +void HuC6273_Reset(void); + + +#endif diff --git a/libmednahawk/src/pcfx/input.cpp b/libmednahawk/src/pcfx/input.cpp new file mode 100644 index 0000000000..1be24f681e --- /dev/null +++ b/libmednahawk/src/pcfx/input.cpp @@ -0,0 +1,435 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pcfx.h" +#include "interrupt.h" +#include "input.h" + +#include "input/gamepad.h" +#include "input/mouse.h" + +#define PCFX_PORTS 2 +#define TOTAL_PORTS 8 + +#define TAP_PORTS 4 + +static const int TapMap[2][TAP_PORTS] = +{ + { 0, 2, 3, 4 }, + { 1, 5, 6, 7 }, +}; + + +static void RemakeDevices(int which = -1); +static uint8 MultiTapEnabled; + +// Mednafen-specific input type numerics +enum +{ + FXIT_NONE = 0, + FXIT_GAMEPAD = 1, + FXIT_MOUSE = 2, +}; + +PCFX_Input_Device::~PCFX_Input_Device() +{ + +} + +uint32 PCFX_Input_Device::ReadTransferTime(void) +{ + return(1536); +} + +uint32 PCFX_Input_Device::WriteTransferTime(void) +{ + return(1536); +} + +uint32 PCFX_Input_Device::Read(void) +{ + return(0); +} + +void PCFX_Input_Device::Write(uint32 data) +{ + + +} + +void PCFX_Input_Device::Power(void) +{ + +} + +void PCFX_Input_Device::Frame(const void *data) +{ + +} + +int PCFX_Input_Device::StateAction(StateMem *sm, int load, int data_only, const char *section_name) +{ + return(1); +} + +static PCFX_Input_Device *devices[TOTAL_PORTS] = { NULL }; + + +// D0 = TRG, trigger bit +// D1 = MOD, multi-tap clear mode? +// D2 = IOS, data direction. 0 = output, 1 = input + +static uint8 TapCounter[PCFX_PORTS]; +static uint8 control[PCFX_PORTS]; +static bool latched[PCFX_PORTS]; +static int32 LatchPending[PCFX_PORTS]; + +static int InputTypes[TOTAL_PORTS]; +static void *data_ptr[TOTAL_PORTS]; +static uint32 data_latch[TOTAL_PORTS]; + +static void SyncSettings(void); + +void FXINPUT_Init(void) +{ + SyncSettings(); + RemakeDevices(); +} + +void FXINPUT_SettingChanged(const char *name) +{ + SyncSettings(); +} + + +#ifdef WANT_DEBUGGER +bool FXINPUT_GetRegister(const std::string &name, uint32 &value, std::string *special) +{ + if(name == "KPCTRL0" || name == "KPCTRL1") + { + value = control[name[6] - '0']; + if(special) + { + char buf[256]; + + snprintf(buf, 256, "Trigger: %d, MOD: %d, IOS: %s", value & 0x1, value & 0x2, (value & 0x4) ? "Input" : "Output"); + + *special = std::string(buf); + } + return(TRUE); + } + return(FALSE); +} +#endif + +static INLINE int32 min(int32 a, int32 b, int32 c) +{ + int32 ret = a; + + if(b < ret) + ret = b; + if(c < ret) + ret = c; + + return(ret); +} + +static INLINE int32 CalcNextEventTS(const v810_timestamp_t timestamp) +{ + return(min(LatchPending[0] > 0 ? (timestamp + LatchPending[0]) : PCFX_EVENT_NONONO, LatchPending[1] > 0 ? (timestamp + LatchPending[1]) : PCFX_EVENT_NONONO, PCFX_EVENT_NONONO)); +} + +static void RemakeDevices(int which) +{ + int s = 0; + int e = TOTAL_PORTS; + + if(which != -1) + { + s = which; + e = which + 1; + } + + for(int i = s; i < e; i++) + { + if(devices[i]) + delete devices[i]; + devices[i] = NULL; + + switch(InputTypes[i]) + { + default: + case FXIT_NONE: devices[i] = new PCFX_Input_Device(); break; + case FXIT_GAMEPAD: devices[i] = PCFXINPUT_MakeGamepad(i); break; + case FXIT_MOUSE: devices[i] = PCFXINPUT_MakeMouse(i); break; + } + } +} + +void FXINPUT_SetInput(int port, const char *type, void *ptr) +{ + data_ptr[port] = ptr; + + if(!strcasecmp(type, "mouse")) + { + InputTypes[port] = FXIT_MOUSE; + } + else if(!strcasecmp(type, "gamepad")) + InputTypes[port] = FXIT_GAMEPAD; + else + InputTypes[port] = FXIT_NONE; + RemakeDevices(port); +} + +uint8 FXINPUT_Read8(uint32 A, const v810_timestamp_t timestamp) +{ + //printf("Read8: %04x\n", A); + + return(FXINPUT_Read16(A &~1, timestamp) >> ((A & 1) * 8)); +} + +uint16 FXINPUT_Read16(uint32 A, const v810_timestamp_t timestamp) +{ + FXINPUT_Update(timestamp); + + uint16 ret = 0; + + A &= 0xC2; + + //printf("Read: %04x\n", A); + + if(A == 0x00 || A == 0x80) + { + int w = (A & 0x80) >> 7; + + if(latched[w]) + ret = 0x8; + else + ret = 0x0; + } + else + { + int which = (A >> 7) & 1; + + ret = data_latch[which] >> ((A & 2) ? 16 : 0); + + // Which way is correct? Clear on low reads, or both? Official docs only say low... + if(!(A & 0x2)) + latched[which] = FALSE; + } + + if(!latched[0] && !latched[1]) + PCFXIRQ_Assert(PCFXIRQ_SOURCE_INPUT, FALSE); + + return(ret); +} + +void FXINPUT_Write16(uint32 A, uint16 V, const v810_timestamp_t timestamp) +{ + FXINPUT_Update(timestamp); + + //printf("Write16: %04x:%02x, %d\n", A, V, timestamp / 1365); + + //PCFXIRQ_Assert(PCFXIRQ_SOURCE_INPUT, FALSE); + //if(V != 7 && V != 5) + //printf("PAD Write16: %04x %04x %d\n", A, V, timestamp); + + switch(A & 0xC0) + { + case 0x80: + case 0x00: + { + int w = (A & 0x80) >> 7; + + if((V & 0x1) && !(control[w] & 0x1)) + { + //printf("Start: %d\n", w); + if(MultiTapEnabled & (1 << w)) + { + if(V & 0x2) + TapCounter[w] = 0; + } + LatchPending[w] = 1536; + PCFX_SetEvent(PCFX_EVENT_PAD, CalcNextEventTS(timestamp)); + } + control[w] = V & 0x7; + } + break; + } +} + +void FXINPUT_Write8(uint32 A, uint8 V, const v810_timestamp_t timestamp) +{ + FXINPUT_Write16(A, V, timestamp); +} + +void FXINPUT_Frame(void) +{ + for(int i = 0; i < TOTAL_PORTS; i++) + { + devices[i]->Frame(data_ptr[i]); + } +} + +static v810_timestamp_t lastts; + +v810_timestamp_t FXINPUT_Update(const v810_timestamp_t timestamp) +{ + int32 run_time = timestamp - lastts; + + for(int i = 0; i < 2; i++) + { + if(LatchPending[i] > 0) + { + LatchPending[i] -= run_time; + if(LatchPending[i] <= 0) + { + //printf("Update: %d, %d\n", i, timestamp / 1365); + + if(MultiTapEnabled & (1 << i)) + { + if(TapCounter[i] >= TAP_PORTS) + data_latch[i] = FX_SIG_TAP << 28; + else + { + data_latch[i] = devices[TapMap[i][TapCounter[i]]]->Read(); + } + } + else + { + data_latch[i] = devices[i]->Read(); + } + // printf("Moo: %d, %d, %08x\n", i, TapCounter[i], data_latch[i]); + latched[i] = TRUE; + control[i] &= ~1; + PCFXIRQ_Assert(PCFXIRQ_SOURCE_INPUT, TRUE); + + if(MultiTapEnabled & (1 << i)) + { + if(TapCounter[i] < TAP_PORTS) + { + TapCounter[i]++; + } + } + + } + } + } + + lastts = timestamp; + + return(CalcNextEventTS(timestamp)); +} + +void FXINPUT_ResetTS(void) +{ + lastts = 0; +} + + +int FXINPUT_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(TapCounter, 2), + SFARRAY32(LatchPending, 2), + SFARRAY(control, 2), + SFARRAYB(latched, 2), + SFARRAY32(data_latch, 2), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPUT"); + + for(int i = 0; i < TOTAL_PORTS; i++) + { + char sname[256]; + snprintf(sname, 256, "INPUT%d:%d", i, InputTypes[i]); + ret &= devices[i]->StateAction(sm, load, data_only, sname); + } + + if(load) + { + + } + + return(ret); +} + +// If we add more devices to this array, REMEMBER TO UPDATE the hackish array indexing in the SyncSettings() function +// below. +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL, + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(PCFX_GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + PCFX_GamepadIDII, + }, + + // Mouse + { + "mouse", + "Mouse", + NULL, + NULL, + sizeof(PCFX_MouseIDII) / sizeof(InputDeviceInputInfoStruct), + PCFX_MouseIDII + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "port1", "Port 1", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port2", "Port 2", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port3", "Port 3", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port4", "Port 4", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port5", "Port 5", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port6", "Port 6", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port7", "Port 7", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, + { "port8", "Port 8", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" }, +}; + +InputInfoStruct PCFXInputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + + +static void SyncSettings(void) +{ + MDFNGameInfo->mouse_sensitivity = MDFN_GetSettingF("pcfx.mouse_sensitivity"); + InputDeviceInfo[1].IDII = MDFN_GetSettingB("pcfx.disable_softreset") ? PCFX_GamepadIDII_DSR : PCFX_GamepadIDII; + + MultiTapEnabled = MDFN_GetSettingB("pcfx.input.port1.multitap"); + MultiTapEnabled |= MDFN_GetSettingB("pcfx.input.port2.multitap") << 1; +} + diff --git a/libmednahawk/src/pcfx/input.h b/libmednahawk/src/pcfx/input.h new file mode 100644 index 0000000000..3a1b670650 --- /dev/null +++ b/libmednahawk/src/pcfx/input.h @@ -0,0 +1,56 @@ +#ifndef __PCFX_PAD_H +#define __PCFX_PAD_H + +enum +{ + FX_SIG_MOUSE = 0xD, + FX_SIG_TAP = 0xE, + FX_SIG_PAD = 0xF +}; + +class PCFX_Input_Device +{ + public: +// PCFX_Input_Device(int which); // "which" is advisory and only should be used in status messages. + + virtual ~PCFX_Input_Device(); + + virtual uint32 ReadTransferTime(void); + virtual uint32 WriteTransferTime(void); + + virtual uint32 Read(void); + virtual void Write(uint32 data); + + + virtual void Power(void); + + virtual void Frame(const void *data); + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name); +}; + + +void FXINPUT_Init(void); +void FXINPUT_SettingChanged(const char *name); + + +void FXINPUT_SetInput(int port, const char *type, void *ptr); + +uint16 FXINPUT_Read16(uint32 A, const v810_timestamp_t timestamp); +uint8 FXINPUT_Read8(uint32 A, const v810_timestamp_t timestamp); + +void FXINPUT_Write8(uint32 A, uint8 V, const v810_timestamp_t timestamp); +void FXINPUT_Write16(uint32 A, uint16 V, const v810_timestamp_t timestamp); + +void FXINPUT_Frame(void); +int FXINPUT_StateAction(StateMem *sm, int load, int data_only); + +v810_timestamp_t FXINPUT_Update(const v810_timestamp_t timestamp); +void FXINPUT_ResetTS(void); + +extern InputInfoStruct PCFXInputInfo; + +#ifdef WANT_DEBUGGER +bool FXINPUT_GetRegister(const std::string &name, uint32 &value, std::string *special); +#endif + +#endif diff --git a/libmednahawk/src/pcfx/input/gamepad.cpp b/libmednahawk/src/pcfx/input/gamepad.cpp new file mode 100644 index 0000000000..662d06c0c8 --- /dev/null +++ b/libmednahawk/src/pcfx/input/gamepad.cpp @@ -0,0 +1,175 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../pcfx.h" +#include "../input.h" +#include "gamepad.h" + +class PCFX_Input_Gamepad : public PCFX_Input_Device +{ + public: + PCFX_Input_Gamepad(int which_param) + { + old_raw_buttons = 0; + mode1 = false; + mode2 = false; + buttons = 0; + which = which_param; + } + + virtual ~PCFX_Input_Gamepad() + { + + } + + virtual uint32 ReadTransferTime(void) + { + return(1536); + } + + virtual uint32 WriteTransferTime(void) + { + return(1536); + } + + virtual uint32 Read(void) + { + return(buttons | (FX_SIG_PAD << 28)); + } + + virtual void Write(uint32 data) + { + + } + + + virtual void Power(void) + { + buttons = 0; + } + + virtual void Frame(const void *data) + { + uint16 new_buttons = MDFN_de16lsb((uint8 *)data); + bool mode_changed = false; + + if((old_raw_buttons ^ new_buttons) & (1 << 12) & new_buttons) + { + mode1 = !mode1; + mode_changed = true; + } + + if((old_raw_buttons ^ new_buttons) & (1 << 14) & new_buttons) + { + mode2 = !mode2; + mode_changed = true; + } + + if(mode_changed) + MDFN_DispMessage(_("Pad %d - MODE 1: %s, MODE 2: %s"), which + 1, (mode1 ? "B" : "A"), (mode2 ? "B" : "A")); + + buttons = new_buttons & ~( (1 << 12) | (1 << 14)); + buttons |= mode1 << 12; + buttons |= mode2 << 14; + + old_raw_buttons = new_buttons; + //printf("%d %08x\n", which, buttons); + } + + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name) + { + SFORMAT StateRegs[] = + { + SFVAR(buttons), + SFVAR(old_raw_buttons), + SFVAR(mode1), + SFVAR(mode2), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); + + return(ret); + } + + private: + + uint16 buttons; + uint16 old_raw_buttons; + bool mode1; + bool mode2; + int which; +}; + +#if 0 +int PCFX_Input_Gamepad::StateAction(StateMem *sm, int load, int data_only, const char *section_name) +{ + #if 0 + SFORMAT StateRegs[] = + { + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); + + return(ret); + #endif +} +#endif +// GamepadIDII and GamepadIDII_DSR must be EXACTLY the same except for the RUN+SELECT exclusion in the latter. +const InputDeviceInputInfoStruct PCFX_GamepadIDII[] = +{ + { "i", "I", 11, IDIT_BUTTON, NULL }, + { "ii", "II", 10, IDIT_BUTTON, NULL }, + { "iii", "III", 9, IDIT_BUTTON, NULL }, + { "iv", "IV", 6, IDIT_BUTTON, NULL }, + { "v", "V", 7, IDIT_BUTTON, NULL }, + { "vi", "VI", 8, IDIT_BUTTON, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "run", "RUN", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + + { "mode1", "MODE 1 (Switch)", 12, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON }, + { "mode2", "MODE 2 (Switch)", 13, IDIT_BUTTON, NULL }, +}; + +const InputDeviceInputInfoStruct PCFX_GamepadIDII_DSR[] = +{ + { "i", "I", 11, IDIT_BUTTON, NULL }, + { "ii", "II", 10, IDIT_BUTTON, NULL }, + { "iii", "III", 9, IDIT_BUTTON, NULL }, + { "iv", "IV", 6, IDIT_BUTTON, NULL }, + { "v", "V", 7, IDIT_BUTTON, NULL }, + { "vi", "VI", 8, IDIT_BUTTON, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, "run" }, + { "run", "RUN", 5, IDIT_BUTTON, "select" }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + + { "mode1", "MODE 1 (Switch)", 12, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON }, + { "mode2", "MODE 2 (Switch)", 13, IDIT_BUTTON, NULL }, +}; + +PCFX_Input_Device *PCFXINPUT_MakeGamepad(int which) +{ + return(new PCFX_Input_Gamepad(which)); +} diff --git a/libmednahawk/src/pcfx/input/gamepad.h b/libmednahawk/src/pcfx/input/gamepad.h new file mode 100644 index 0000000000..7b9dae463b --- /dev/null +++ b/libmednahawk/src/pcfx/input/gamepad.h @@ -0,0 +1,9 @@ +#ifndef __PCFX_INPUT_GAMEPAD_H +#define __PCFX_INPUT_GAMEPAD_H + +extern const InputDeviceInputInfoStruct PCFX_GamepadIDII[0xF]; +extern const InputDeviceInputInfoStruct PCFX_GamepadIDII_DSR[0xF]; + +PCFX_Input_Device *PCFXINPUT_MakeGamepad(int which); + +#endif diff --git a/libmednahawk/src/pcfx/input/mouse.cpp b/libmednahawk/src/pcfx/input/mouse.cpp new file mode 100644 index 0000000000..efb49e07f8 --- /dev/null +++ b/libmednahawk/src/pcfx/input/mouse.cpp @@ -0,0 +1,121 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../pcfx.h" +#include "../input.h" +#include "mouse.h" + +class PCFX_Input_Mouse : public PCFX_Input_Device +{ + public: + PCFX_Input_Mouse(int which) + { + x = 0; + y = 0; + button = 0; + } + + virtual ~PCFX_Input_Mouse() + { + + } + + virtual uint32 ReadTransferTime(void) + { + return(1536); + } + + virtual uint32 WriteTransferTime(void) + { + return(1536); + } + + virtual uint32 Read(void) + { + uint32 moo = FX_SIG_MOUSE << 28; + int32 rel_x = (int32)(x); + int32 rel_y = (int32)(y); + + if(rel_x < -127) rel_x = -127; + if(rel_x > 127) rel_x = 127; + if(rel_y < -127) rel_y = -127; + if(rel_y > 127) rel_y = 127; + + moo |= ((rel_x & 0xFF) << 8) | ((rel_y & 0xFF) << 0); + + x += (int32)(0 - rel_x); + y += (int32)(0 - rel_y); + + moo |= button << 16; + + return(moo); + } + + virtual void Write(uint32 data) + { + + } + + + virtual void Power(void) + { + button = 0; + x = 0; + y = 0; + } + + virtual void Frame(const void *data) + { + x += (int32)MDFN_de32lsb((uint8 *)data + 0); + y += (int32)MDFN_de32lsb((uint8 *)data + 4); + button = *(uint8 *)((uint8 *)data + 8); + } + + virtual int StateAction(StateMem *sm, int load, int data_only, const char *section_name) + { + SFORMAT StateRegs[] = + { + SFVAR(x), + SFVAR(y), + SFVAR(button), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); + + return(ret); + } + + private: + + + int32 x, y; + uint8 button; +}; + +PCFX_Input_Device *PCFXINPUT_MakeMouse(int which) +{ + return(new PCFX_Input_Mouse(which)); +} + +const InputDeviceInputInfoStruct PCFX_MouseIDII[4] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS_REL }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS_REL }, + { "left", "Left Button", 0, IDIT_BUTTON, NULL }, + { "right", "Right Button", 1, IDIT_BUTTON, NULL }, +}; + diff --git a/libmednahawk/src/pcfx/input/mouse.h b/libmednahawk/src/pcfx/input/mouse.h new file mode 100644 index 0000000000..4ea4d56529 --- /dev/null +++ b/libmednahawk/src/pcfx/input/mouse.h @@ -0,0 +1,8 @@ +#ifndef __PCFX_INPUT_MOUSE_H +#define __PCFX_INPUT_MOUSE_H + +extern const InputDeviceInputInfoStruct PCFX_MouseIDII[4]; + +PCFX_Input_Device *PCFXINPUT_MakeMouse(int which); + +#endif diff --git a/libmednahawk/src/pcfx/interrupt.cpp b/libmednahawk/src/pcfx/interrupt.cpp new file mode 100644 index 0000000000..7875483227 --- /dev/null +++ b/libmednahawk/src/pcfx/interrupt.cpp @@ -0,0 +1,230 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pcfx.h" +#include "interrupt.h" +#include + +static uint16 InterruptAsserted; +static uint16 InterruptMask; +static uint16 InterruptPriority[2]; + +static void BuildInterruptCache(void) +{ + uint32 iwithmask = InterruptAsserted &~ InterruptMask; + int InterruptCache = -1; + int last_prio = -1; + + for(int level = 8; level < 16; level++) + if(iwithmask & (1 << (15 - level))) + { + int tmp_prio; + + if(level >= 12) + tmp_prio = (InterruptPriority[0] >> ((15 - level) * 3)) & 0x7; + else + tmp_prio = (InterruptPriority[1] >> ((11 - level) * 3)) & 0x7; + + if(tmp_prio >= last_prio) + { + if(tmp_prio == last_prio) + { + FXDBG("Undefined IRQ behavior: %d, %d\n", level, tmp_prio); + } + InterruptCache = 8 + tmp_prio; + last_prio = tmp_prio; + } + } + + PCFX_V810.SetInt(InterruptCache); +} + +void PCFXIRQ_Assert(int source, bool assert) +{ + assert(source >= 0 && source <= 7); + + InterruptAsserted &= ~(1 << (7 - source)); + + if(assert) + InterruptAsserted |= (1 << (7 - source)); + + BuildInterruptCache(); +} + + +uint16 PCFXIRQ_Read16(uint32 A) +{ + uint32 ret = 0x00; + + switch(A & 0xC0) + { + case 0x00: ret = InterruptAsserted; break; + case 0x40: ret = InterruptMask; break; + case 0x80: ret = InterruptPriority[0]; break; + case 0xC0: ret = InterruptPriority[1]; break; + } + + return(ret); +} + +uint8 PCFXIRQ_Read8(uint32 A) +{ + return(PCFXIRQ_Read16(A&~1) >> ((A & 1) * 8)); +} + +void PCFXIRQ_Write16(uint32 A, uint16 V) +{ +// printf("IRQ Controller Write: %08x %04x\n", A, V); + switch(A & 0xC0) + { + case 0x00: puts("Address error clear"); + break; + + case 0x40: InterruptMask = V & 0x7F; + BuildInterruptCache(); + break; + + case 0x80: if(InterruptMask == 0x7F) + { + InterruptPriority[0] = V & 0xFFF; + BuildInterruptCache(); + } + break; + + case 0xC0: if(InterruptMask == 0x7F) + { + InterruptPriority[1] = V & 0x1FF; + BuildInterruptCache(); + } + break; + } +} + +int PCFXIRQ_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(InterruptAsserted), + SFVAR(InterruptMask), + SFARRAY16(InterruptPriority, 2), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "IRQ"); + + if(load) + BuildInterruptCache(); + + return(ret); +} + +bool PCFXIRQ_SetRegister(const std::string &name, uint32 value) +{ + if(name == "IMASK") + { + InterruptMask = value & 0x7F; + BuildInterruptCache(); + } + else if(name == "IPRIO0") + { + InterruptPriority[0] = value & 0xFFF; + BuildInterruptCache(); + } + else if(name == "IPRIO1") + { + InterruptPriority[1] = value & 0x1FF; + BuildInterruptCache(); + } + else if(name == "IPEND") + { + InterruptAsserted = value; + BuildInterruptCache(); + } + return(FALSE); +} + +bool PCFXIRQ_GetRegister(const std::string &name, uint32 &value, std::string *special) +{ + if(name == "IMASK") + { + value = InterruptMask; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "IRQ Allowed; HuC6273: %s, HuC6270-B: %s, HuC6272: %s, HuC6270-A: %s, Pad: %s, Timer: %s, Reset: %s", + (InterruptMask & (1 << 0)) ? "No" : "Yes", (InterruptMask & (1 << 1)) ? "No" : "Yes", + (InterruptMask & (1 << 2)) ? "No" : "Yes", (InterruptMask & (1 << 3)) ? "No" : "Yes", + (InterruptMask & (1 << 4)) ? "No" : "Yes", (InterruptMask & (1 << 6)) ? "No" : "Yes", + (InterruptMask & (1 << 7)) ? "No" : "Yes"); + *special = std::string(buf); + } + return(TRUE); + } + else if(name == "IPRIO0") + { + value = InterruptPriority[0]; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "HuC6273: %d, HuC6270-B: %d, HuC6272: %d, HuC6270-A: %d", + (InterruptPriority[0] >> 0) & 0x7, (InterruptPriority[0] >> 3) & 0x7, + (InterruptPriority[0] >> 6) & 0x7, (InterruptPriority[0] >> 9) & 0x7); + *special = std::string(buf); + } + return(TRUE); + } + else if(name == "IPRIO1") + { + value = InterruptPriority[1]; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Pad: %d, ??: %d, Timer: %d, Reset: %d", + (InterruptPriority[1] >> 0) & 0x7, (InterruptPriority[1] >> 3) & 0x7, + (InterruptPriority[1] >> 6) & 0x7, (InterruptPriority[1] >> 9) & 0x7); + *special = std::string(buf); + } + return(TRUE); + } + else if(name == "IPEND") + { + value = InterruptAsserted; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "HuC6273: %d, HuC6270-B: %d, HuC6272: %d, HuC6270-A: %d, Pad: %d, ??: %d, Timer: %d, Reset: %d", (int)(bool)(value & 0x01), (int)(bool)(value & 0x02), + (int)(bool)(value & 0x04), (int)(bool)(value & 0x08), (int)(bool)(value & 0x10), (int)(bool)(value & 0x20), + (int)(bool)(value & 0x40), (int)(bool)(value & 0x80)); + *special = std::string(buf); + } + return(TRUE); + } + else + return(FALSE); +} + +void PCFXIRQ_Reset(void) +{ + InterruptAsserted = 0; + InterruptMask = 0xFFFF; + + InterruptPriority[0] = 0; + InterruptPriority[1] = 0; + + BuildInterruptCache(); +} + diff --git a/libmednahawk/src/pcfx/interrupt.h b/libmednahawk/src/pcfx/interrupt.h new file mode 100644 index 0000000000..3a9a91a09e --- /dev/null +++ b/libmednahawk/src/pcfx/interrupt.h @@ -0,0 +1,23 @@ +#ifndef __PCFX_INTERRUPT_H +#define __PCFX_INTERRUPT_H + +#define PCFXIRQ_SOURCE_TIMER 1 +#define PCFXIRQ_SOURCE_EX 2 +#define PCFXIRQ_SOURCE_INPUT 3 +#define PCFXIRQ_SOURCE_VDCA 4 +#define PCFXIRQ_SOURCE_KING 5 +#define PCFXIRQ_SOURCE_VDCB 6 +#define PCFXIRQ_SOURCE_HUC6273 7 + +void PCFXIRQ_Assert(int source, bool assert); +void PCFXIRQ_Write16(uint32 A, uint16 V); +uint16 PCFXIRQ_Read16(uint32 A); +uint8 PCFXIRQ_Read8(uint32 A); +int PCFXIRQ_StateAction(StateMem *sm, int load, int data_only); + +void PCFXIRQ_Reset(void); + +bool PCFXIRQ_GetRegister(const std::string &name, uint32 &value, std::string *special); +bool PCFXIRQ_SetRegister(const std::string &name, uint32 value); + +#endif diff --git a/libmednahawk/src/pcfx/io-handler.inc b/libmednahawk/src/pcfx/io-handler.inc new file mode 100644 index 0000000000..92066e918e --- /dev/null +++ b/libmednahawk/src/pcfx/io-handler.inc @@ -0,0 +1,290 @@ +static uint8 MDFN_FASTCALL port_rbyte(v810_timestamp_t ×tamp, uint32 A) +{ + if(A >= 0x000 && A <= 0x0FF) + return(FXINPUT_Read8(A, timestamp)); + else if(A >= 0x100 && A <= 0x1FF) // SOUNDBOX dummy + { + timestamp += 4; + } + else if(A >= 0x200 && A <= 0x2FF) // RAINBOW dummy + { + timestamp += 4; + } + else if(A >= 0x300 && A <= 0x3FF) // FXVCE + { + timestamp += 4; + return(FXVCE_Read16(A)); + } + else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B + { + timestamp += 4; + return(fx_vdc_chips[(A >> 8) & 0x1]->Read16((A & 4) >> 2)); + } + else if(A >= 0x600 && A <= 0x6FF) + { + timestamp += 4; + return(KING_Read8(timestamp, A)); + } + else if(A >= 0x700 && A <= 0x7FF) + { + if(!(A & 1)) + { + FXDBG("ExBusReset B Read"); + return(ExBusReset); + } + return(0); + } + else if(A >= 0xc00 && A <= 0xCFF) // Backup memory control + { + switch(A & 0xC0) + { + case 0x80: return(BackupControl); + case 0x00: return(Last_VDC_AR[0]); + case 0x40: return(Last_VDC_AR[1]); + } + } + else if(A >= 0xe00 && A <= 0xeff) + { + return(PCFXIRQ_Read8(A)); + } + else if(A >= 0xf00 && A <= 0xfff) + { + return(FXTIMER_Read8(A, timestamp)); + } + else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff) + { + if(WantHuC6273) + return(HuC6273_Read8(A)); + } + else if(FXSCSIROM && A >= 0x780000 && A <= 0x7FFFFF) + { + return(FXSCSIROM[A & 0x7FFFF]); + } + else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF) + { + return(FXSCSI_CtrlRead(A)); + } + FXDBG("Unknown 8-bit port read: %08x", A); + + return(0x00); +} + +static uint16 MDFN_FASTCALL port_rhword(v810_timestamp_t ×tamp, uint32 A) +{ + if(A >= 0x000 && A <= 0x0FF) + return(FXINPUT_Read16(A, timestamp)); + else if(A >= 0x100 && A <= 0x1FF) // SOUNDBOX dummy + { + timestamp += 4; + } + else if(A >= 0x200 && A <= 0x2FF) // RAINBOW dummy + { + timestamp += 4; + } + else if(A >= 0x300 && A <= 0x3FF) + { + timestamp += 4; + return(FXVCE_Read16(A)); + } + else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B + { + timestamp += 4; + return(fx_vdc_chips[(A >> 8) & 0x1]->Read16((A & 4) >> 2)); + } + else if(A >= 0x600 && A <= 0x6FF) + { + timestamp += 4; + return(KING_Read16(timestamp, A)); + } + else if(A >= 0x700 && A <= 0x7FF) + { + FXDBG("ExBusReset H Read"); + + return(ExBusReset); + } + else if(A >= 0xc00 && A <= 0xCFF) // Backup memory control + { + switch(A & 0xC0) + { + case 0x80: return(BackupControl); + case 0x00: return(Last_VDC_AR[0]); + case 0x40: return(Last_VDC_AR[1]); + } + } + else if(A >= 0xe00 && A <= 0xeff) + { + return(PCFXIRQ_Read16(A)); + } + else if(A >= 0xf00 && A <= 0xfff) + { + return(FXTIMER_Read16(A, timestamp)); + } + else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff) + { + if(WantHuC6273) + return(HuC6273_Read16(A)); + } + else if(FXSCSIROM && A >= 0x780000 && A <= 0x7FFFFF) + { + return(le16toh(*(uint16*)&FXSCSIROM[A & 0x7FFFF])); + } + else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF) + { + puts("FXSCSI 16-bit:"); + return(FXSCSI_CtrlRead(A)); + } + + FXDBG("Unknown 16-bit port read: %08x", A); + + return(0x00); +} + +static void MDFN_FASTCALL port_wbyte(v810_timestamp_t ×tamp, uint32 A, uint8 V) +{ + if(A >= 0x000 && A <= 0x0FF) + FXINPUT_Write8(A, V, timestamp); + else if(A >= 0x100 && A <= 0x1FF) + { + timestamp += 2; + SoundBox_Write(A, V, timestamp); + } + else if(A >= 0x200 && A <= 0x2FF) + { + timestamp += 2; + RAINBOW_Write8(A, V); + } + else if(A >= 0x300 && A <= 0x3FF) // FXVCE + { + timestamp += 2; + FXVCE_Write16(A, V); + } + else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B + { + timestamp += 2; + + if(!(A & 4)) + Last_VDC_AR[(A >> 8) & 0x1] = V; + + fx_vdc_chips[(A >> 8) & 0x1]->Write16((A & 4) >> 2, V); + } + else if(A >= 0x600 && A <= 0x6FF) + { + timestamp += 2; + KING_Write8(timestamp, A, V); + } + else if(A >= 0x700 && A <= 0x7FF) + { + if(!(A & 1)) + { + FXDBG("ExBusReset B Write: %02x", V & 1); + ExBusReset = V & 1; + } + } + else if(A >= 0xc00 && A <= 0xCFF) + { + switch(A & 0xC1) + { + case 0x80: BackupControl = V & 0x3; + break; + + default: FXDBG("Port 8-bit write: %08x %02x", A, V); + break; + } + } + else if(A >= 0xe00 && A <= 0xeff) + { + FXDBG("IRQ write8: %08x %02x", A, V); + PCFXIRQ_Write16(A, V); + } + else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff) + { + if(WantHuC6273) + HuC6273_Write16(A, V); + } + else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF) + { + FXSCSI_CtrlWrite(A, V); + } + else + { + FXDBG("Port 8-bit write: %08x %02x", A, V); + } +} + +static void MDFN_FASTCALL port_whword(v810_timestamp_t ×tamp, uint32 A, uint16 V) +{ + if(A >= 0x000 && A <= 0x0FF) + FXINPUT_Write16(A, V, timestamp); + else if(A >= 0x100 && A <= 0x1FF) + { + timestamp += 2; + SoundBox_Write(A, V, timestamp); + } + else if(A >= 0x200 && A <= 0x2FF) + { + timestamp += 2; + RAINBOW_Write16(A, V); + } + else if(A >= 0x300 && A <= 0x3FF) + { + timestamp += 2; + FXVCE_Write16(A, V); + } + else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B + { + timestamp += 2; + + if(!(A & 4)) + Last_VDC_AR[(A >> 8) & 0x1] = V; + + fx_vdc_chips[(A >> 8) & 0x1]->Write16((A & 4) >> 2, V); + } + else if(A >= 0x600 && A <= 0x6FF) + { + timestamp += 2; + KING_Write16(timestamp, A, V); + } + else if(A >= 0x700 && A <= 0x7FF) + { + ExBusReset = V & 1; + FXDBG("ExBusReset H Write: %04x", V); + } + else if(A >= 0x800 && A <= 0x8FF) // ?? LIP writes here + { + FXDBG("Port 16-bit write: %08x %04x", A, V); + } + else if(A >= 0xc00 && A <= 0xCFF) + { + switch(A & 0xC0) + { + case 0x80: BackupControl = V & 0x3; + break; + + default: FXDBG("Port 16-bit write: %08x %04x", A, V); + break; + } + } + else if(A >= 0xe00 && A <= 0xeff) + { + PCFXIRQ_Write16(A, V); + } + else if(A >= 0xF00 && A <= 0xFFF) + { + FXTIMER_Write16(A, V, timestamp); + } + else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff) + { + if(WantHuC6273) + HuC6273_Write16(A, V); + } + else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF) + { + puts("FXSCSI 16-bit:"); + FXSCSI_CtrlWrite(A, V); + } + else + { + FXDBG("Port 16-bit write: %08x %04x", A, V); + } +} + diff --git a/libmednahawk/src/pcfx/jrevdct.cpp b/libmednahawk/src/pcfx/jrevdct.cpp new file mode 100644 index 0000000000..2b62024960 --- /dev/null +++ b/libmednahawk/src/pcfx/jrevdct.cpp @@ -0,0 +1,280 @@ +/* + * jrevdct.c + * + * Copyright (C) 1991, 1992, Thomas G. Lane. + * This file is part of the Independent JPEG Group's software. + * For conditions of distribution and use, see the accompanying README file. + * + * This file contains the basic inverse-DCT transformation subroutine. + * + * This implementation is based on an algorithm described in + * C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT + * Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics, + * Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991. + * The primary algorithm described there uses 11 multiplies and 29 adds. + * We use their alternate method with 12 multiplies and 32 adds. + * The advantage of this method is that no data path contains more than one + * multiplication; this allows a very simple and accurate implementation in + * scaled fixed-point arithmetic, with a minimal number of shifts. + */ + +/* Modified 2007 for usage in Mednafen */ + +#include "../types.h" +#include "jrevdct.h" + +/* + * This routine is specialized to the case DCTSIZE = 8. + */ +#define DCTSIZE 8 + +/* + * A 2-D IDCT can be done by 1-D IDCT on each row followed by 1-D IDCT + * on each column. Direct algorithms are also available, but they are + * much more complex and seem not to be any faster when reduced to code. + * + * The poop on this scaling stuff is as follows: + * + * Each 1-D IDCT step produces outputs which are a factor of sqrt(N) + * larger than the true IDCT outputs. The final outputs are therefore + * a factor of N larger than desired; since N=8 this can be cured by + * a simple right shift at the end of the algorithm. The advantage of + * this arrangement is that we save two multiplications per 1-D IDCT, + * because the y0 and y4 inputs need not be divided by sqrt(N). + * + * We have to do addition and subtraction of the integer inputs, which + * is no problem, and multiplication by fractional constants, which is + * a problem to do in integer arithmetic. We multiply all the constants + * by CONST_SCALE and convert them to integer constants (thus retaining + * CONST_BITS bits of precision in the constants). After doing a + * multiplication we have to divide the product by CONST_SCALE, with proper + * rounding, to produce the correct output. This division can be done + * cheaply as a right shift of CONST_BITS bits. We postpone shifting + * as long as possible so that partial sums can be added together with + * full fractional precision. + * + * The outputs of the first pass are scaled up by PASS1_BITS bits so that + * they are represented to better-than-integral precision. These outputs + * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word + * with the recommended scaling. (To scale up 12-bit sample data further, an + * intermediate INT32 array would be needed.) + * + * To avoid overflow of the 32-bit intermediate results in pass 2, we must + * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 26. Error analysis + * shows that the values given below are the most effective. + */ + +#define CONST_BITS 13 +#define PASS1_BITS 2 + +#if ((8 + CONST_BITS + PASS1_BITS) > 26) + #error "Too many bits1!" +#endif + +#define ONE ((INT32) 1) + +#define CONST_SCALE (ONE << CONST_BITS) + +/* Convert a positive real constant to an integer scaled by CONST_SCALE. */ + +#define FIX(x) ((INT32) ((x) * CONST_SCALE + 0.5)) + +/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus + * causing a lot of useless floating-point operations at run time. + * To get around this we use the following pre-calculated constants. + * If you change CONST_BITS you may want to add appropriate values. + * (With a reasonable C compiler, you can just rely on the FIX() macro...) + */ + +#if CONST_BITS == 13 +#define FIX_0_298631336 ((INT32) 2446) /* FIX(0.298631336) */ +#define FIX_0_390180644 ((INT32) 3196) /* FIX(0.390180644) */ +#define FIX_0_541196100 ((INT32) 4433) /* FIX(0.541196100) */ +#define FIX_0_765366865 ((INT32) 6270) /* FIX(0.765366865) */ +#define FIX_0_899976223 ((INT32) 7373) /* FIX(0.899976223) */ +#define FIX_1_175875602 ((INT32) 9633) /* FIX(1.175875602) */ +#define FIX_1_501321110 ((INT32) 12299) /* FIX(1.501321110) */ +#define FIX_1_847759065 ((INT32) 15137) /* FIX(1.847759065) */ +#define FIX_1_961570560 ((INT32) 16069) /* FIX(1.961570560) */ +#define FIX_2_053119869 ((INT32) 16819) /* FIX(2.053119869) */ +#define FIX_2_562915447 ((INT32) 20995) /* FIX(2.562915447) */ +#define FIX_3_072711026 ((INT32) 25172) /* FIX(3.072711026) */ +#else +#define FIX_0_298631336 FIX(0.298631336) +#define FIX_0_390180644 FIX(0.390180644) +#define FIX_0_541196100 FIX(0.541196100) +#define FIX_0_765366865 FIX(0.765366865) +#define FIX_0_899976223 FIX(0.899976223) +#define FIX_1_175875602 FIX(1.175875602) +#define FIX_1_501321110 FIX(1.501321110) +#define FIX_1_847759065 FIX(1.847759065) +#define FIX_1_961570560 FIX(1.961570560) +#define FIX_2_053119869 FIX(2.053119869) +#define FIX_2_562915447 FIX(2.562915447) +#define FIX_3_072711026 FIX(3.072711026) +#endif + + +/* Descale and correctly round an INT32 value that's scaled by N bits. + * We assume RIGHT_SHIFT rounds towards minus infinity, so adding + * the fudge factor is correct for either sign of X. + */ + +#define RIGHT_SHIFT(x,shft) ((x) >> (shft)) +#define DESCALE(x,n) RIGHT_SHIFT((x) + (ONE << ((n)-1)), n) +#define MULTIPLY(var,const) ((var) * (const)) + + +/* + * Perform the inverse DCT on one block of coefficients. + */ + +void j_rev_dct(DCTBLOCK data) +{ + INT32 tmp0, tmp1, tmp2, tmp3; + INT32 tmp10, tmp11, tmp12, tmp13; + INT32 z1, z2, z3, z4, z5; + register DCTELEM *dataptr; + int rowctr; + + /* Pass 1: process rows. */ + /* Note results are scaled up by sqrt(8) compared to a true IDCT; */ + /* furthermore, we scale the results by 2**PASS1_BITS. */ + + dataptr = data; + for (rowctr = DCTSIZE-1; rowctr >= 0; rowctr--) + { + /* Even part: reverse the even part of the forward DCT. */ + /* The rotator is sqrt(2)*c(-6). */ + + z2 = (INT32) dataptr[2]; + z3 = (INT32) dataptr[6]; + + z1 = MULTIPLY(z2 + z3, FIX_0_541196100); + tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065); + tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865); + + tmp0 = ((INT32) dataptr[0] + (INT32) dataptr[4]) << CONST_BITS; + tmp1 = ((INT32) dataptr[0] - (INT32) dataptr[4]) << CONST_BITS; + + tmp10 = tmp0 + tmp3; + tmp13 = tmp0 - tmp3; + tmp11 = tmp1 + tmp2; + tmp12 = tmp1 - tmp2; + + /* Odd part per figure 8; the matrix is unitary and hence its + * transpose is its inverse. i0..i3 are y7,y5,y3,y1 respectively. + */ + + tmp0 = (INT32) dataptr[7]; + tmp1 = (INT32) dataptr[5]; + tmp2 = (INT32) dataptr[3]; + tmp3 = (INT32) dataptr[1]; + + z1 = tmp0 + tmp3; + z2 = tmp1 + tmp2; + z3 = tmp0 + tmp2; + z4 = tmp1 + tmp3; + z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */ + + tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */ + tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */ + tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */ + tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */ + z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */ + z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */ + z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */ + z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */ + + z3 += z5; + z4 += z5; + + tmp0 += z1 + z3; + tmp1 += z2 + z4; + tmp2 += z2 + z3; + tmp3 += z1 + z4; + + /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */ + + dataptr[0] = (DCTELEM) DESCALE(tmp10 + tmp3, CONST_BITS-PASS1_BITS); + dataptr[7] = (DCTELEM) DESCALE(tmp10 - tmp3, CONST_BITS-PASS1_BITS); + dataptr[1] = (DCTELEM) DESCALE(tmp11 + tmp2, CONST_BITS-PASS1_BITS); + dataptr[6] = (DCTELEM) DESCALE(tmp11 - tmp2, CONST_BITS-PASS1_BITS); + dataptr[2] = (DCTELEM) DESCALE(tmp12 + tmp1, CONST_BITS-PASS1_BITS); + dataptr[5] = (DCTELEM) DESCALE(tmp12 - tmp1, CONST_BITS-PASS1_BITS); + dataptr[3] = (DCTELEM) DESCALE(tmp13 + tmp0, CONST_BITS-PASS1_BITS); + dataptr[4] = (DCTELEM) DESCALE(tmp13 - tmp0, CONST_BITS-PASS1_BITS); + + dataptr += DCTSIZE; /* advance pointer to next row */ + } + + /* Pass 2: process columns. */ + /* Note that we must descale the results by a factor of 8 == 2**3, */ + /* and also undo the PASS1_BITS scaling. */ + + dataptr = data; + for (rowctr = DCTSIZE-1; rowctr >= 0; rowctr--) { + /* Even part: reverse the even part of the forward DCT. */ + /* The rotator is sqrt(2)*c(-6). */ + + z2 = (INT32) dataptr[DCTSIZE*2]; + z3 = (INT32) dataptr[DCTSIZE*6]; + + z1 = MULTIPLY(z2 + z3, FIX_0_541196100); + tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065); + tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865); + + tmp0 = ((INT32) dataptr[DCTSIZE*0] + (INT32) dataptr[DCTSIZE*4]) << CONST_BITS; + tmp1 = ((INT32) dataptr[DCTSIZE*0] - (INT32) dataptr[DCTSIZE*4]) << CONST_BITS; + + tmp10 = tmp0 + tmp3; + tmp13 = tmp0 - tmp3; + tmp11 = tmp1 + tmp2; + tmp12 = tmp1 - tmp2; + + /* Odd part per figure 8; the matrix is unitary and hence its + * transpose is its inverse. i0..i3 are y7,y5,y3,y1 respectively. + */ + + tmp0 = (INT32) dataptr[DCTSIZE*7]; + tmp1 = (INT32) dataptr[DCTSIZE*5]; + tmp2 = (INT32) dataptr[DCTSIZE*3]; + tmp3 = (INT32) dataptr[DCTSIZE*1]; + + z1 = tmp0 + tmp3; + z2 = tmp1 + tmp2; + z3 = tmp0 + tmp2; + z4 = tmp1 + tmp3; + z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */ + + tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */ + tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */ + tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */ + tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */ + z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */ + z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */ + z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */ + z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */ + + z3 += z5; + z4 += z5; + + tmp0 += z1 + z3; + tmp1 += z2 + z4; + tmp2 += z2 + z3; + tmp3 += z1 + z4; + + /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */ + + dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp3, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp10 - tmp3, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp11 + tmp2, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(tmp11 - tmp2, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(tmp12 + tmp1, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp12 - tmp1, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp13 + tmp0, CONST_BITS+PASS1_BITS+1); + dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp13 - tmp0, CONST_BITS+PASS1_BITS+1); + + dataptr++; /* advance pointer to next column */ + } +} diff --git a/libmednahawk/src/pcfx/jrevdct.h b/libmednahawk/src/pcfx/jrevdct.h new file mode 100644 index 0000000000..b51fe87fd7 --- /dev/null +++ b/libmednahawk/src/pcfx/jrevdct.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_JREVDCT_H +#define __MDFN_JREVDCT_H + +typedef int32* DCTBLOCK; +typedef int32 DCTELEM; + +void j_rev_dct(DCTBLOCK data); + +typedef int32 INT32; + +#endif diff --git a/libmednahawk/src/pcfx/king-bgfast-blit.inc b/libmednahawk/src/pcfx/king-bgfast-blit.inc new file mode 100644 index 0000000000..0b65082639 --- /dev/null +++ b/libmednahawk/src/pcfx/king-bgfast-blit.inc @@ -0,0 +1,103 @@ + switch(bgmode & 0x7) + { + case 0x01: // 4 color, 1/4 byte per pixel :b + sexy_y_pos >>= 3; + for(int x = 0; x < 256 + 8; x+= 8) + { + DRAWBG8x1_LPRE(); + const uint16 *cgptr; + uint32 pbn = 0; + + if(BGFAST_BATMODE) + { + uint16 bat = king_bat_base[(bat_offset + (bat_x + bat_y)) & 0x1FFFF]; + pbn = (bat >> 12) << 2; + bat &= 0x0FFF; + cgptr = &king_cg_base[(cg_offset + (bat * 8) + ysmall) & 0x1FFFF]; + } + else + cgptr = &king_cg_base[(cg_offset + (bat_x * 1) + sexy_y_pos) & 0x1FFFF]; + + DRAWBG8x1_4(target + x, cgptr, palette_ptr + pbn, layer_or); + DRAWBG8x1_LPOST(); + } + break; + case 0x02: // 16 color, 1/2 byte per pixel + sexy_y_pos >>= 2; + for(int x = 0; x < 256 + 8; x+= 8) + { + DRAWBG8x1_LPRE(); + const uint16 *cgptr; + uint32 pbn = 0; + + if(BGFAST_BATMODE) + { + uint16 bat = king_bat_base[(bat_offset + (bat_x + bat_y)) & 0x1FFFF]; + pbn = ((bat >> 12) << 4); + bat &= 0x0FFF; + cgptr = &king_cg_base[(cg_offset + (bat * 16) + ysmall * 2) & 0x1FFFF]; + } + else + cgptr = &king_cg_base[(cg_offset + (bat_x * 2) + sexy_y_pos) & 0x1FFFF]; + + DRAWBG8x1_16(target + x, cgptr, palette_ptr + pbn, layer_or); + DRAWBG8x1_LPOST(); + } + break; + case 0x03: // 256 color, 1 byte per pixel palettized - OK + sexy_y_pos >>= 1; + for(int x = 0; x < 256 + 8; x+= 8) + { + DRAWBG8x1_LPRE(); + const uint16 *cgptr; + + if(BGFAST_BATMODE) + { + uint16 bat = king_bat_base[(bat_offset + (bat_x + bat_y)) & 0x1FFFF]; + cgptr = &king_cg_base[(cg_offset + (bat * 32) + ysmall * 4) & 0x1FFFF]; + } + else + cgptr = &king_cg_base[(cg_offset + (bat_x * 4) + sexy_y_pos) & 0x1FFFF]; + + DRAWBG8x1_256(target + x, cgptr, palette_ptr, layer_or); + DRAWBG8x1_LPOST(); + } + break; + + case 0x04: // 64K color, 2 bytes per pixel - OK + for(int x = 0; x < 256 + 8; x+=8) + { + DRAWBG8x1_LPRE(); + const uint16 *cgptr; + + if(BGFAST_BATMODE) + { + uint16 bat = king_bat_base[(bat_offset + (bat_x + bat_y)) & 0x1FFFF]; + cgptr = &king_cg_base[(cg_offset + (bat * 64) + ysmall * 8) & 0x1FFFF]; + } + else + cgptr = &king_cg_base[(cg_offset + (bat_x * 8) + sexy_y_pos) & 0x1FFFF]; + + DRAWBG8x1_64K(target + x, cgptr, palette_ptr, layer_or); + DRAWBG8x1_LPOST(); + } + break; + + case 0x05: // 16M color, 2 bytes per pixel - OK + for(int x = 0; x < 256 + 8; x+=8) + { + DRAWBG8x1_LPRE(); + const uint16 *cgptr; + if(BGFAST_BATMODE) + { + uint16 bat = king_bat_base[(bat_offset + (bat_x + bat_y)) & 0x1FFFF]; + cgptr = &king_cg_base[(cg_offset + (bat * 64) + ysmall * 8) & 0x1FFFF]; + } + else + cgptr = &king_cg_base[(cg_offset + (bat_x * 8) + sexy_y_pos) & 0x1FFFF]; + + DRAWBG8x1_16M(target + x, cgptr, palette_ptr, layer_or); + DRAWBG8x1_LPOST(); + } + break; + } diff --git a/libmednahawk/src/pcfx/king-bgfast.inc b/libmednahawk/src/pcfx/king-bgfast.inc new file mode 100644 index 0000000000..ceeeddb58d --- /dev/null +++ b/libmednahawk/src/pcfx/king-bgfast.inc @@ -0,0 +1,252 @@ +// Loop prefix non-endless +#define DRAWBG8x1_LPRE() if(bat_x < bat_width) { + +// Loop postfix non-endless +#define DRAWBG8x1_LPOST() } bat_x = (bat_x + 1) & bat_width_mask; + +#define CDBG_REASON(format, ...) +//printf("BG%d Reason: " format "\n", n, ## __VA_ARGS__); +static bool CanDrawBG_Fast(int n) +{ + static const int cg_per_mode[0x8] = + { + 0, // Invalid mode + 1, // 2-bit mode + 2, // 4-bit mode + 4, // 8-bit mode + 8, // 16-bit mode + 8, // 16-bit mode + 8, // 16-bit mode + 8, // 16-bit mode + }; + + const unsigned int bgmode = (king->bgmode >> (n * 4)) & 0xF; + const uint32 bat_offset = king->BGBATAddr[n] * 1024; + const uint32 cg_offset = king->BGCGAddr[n] * 1024; + const uint32 bg_width = (king->BGSize[n] & 0xF0) >> 4; + const uint32 bg_height = king->BGSize[n] & 0x0F; + const uint32 bg_maxsize = n ? 0x9 : 0xA; + + // If the bgmode is 0, or 6/7(EXT DOT modes), abort. + if(!(bgmode & 0x7) || ((bgmode & 0x7) >= 6)) + { + CDBG_REASON("Mode %02x out of range", bgmode); + return(FALSE); + } + + // BG width out of range? + if(bg_width < 0x3 || bg_width > bg_maxsize) + { + CDBG_REASON("Width %02x out of range", bg_width); + return(FALSE); + } + + // BG height out of range? + if(bg_height < 0x3 || bg_height > bg_maxsize) + { + CDBG_REASON("Height %02x out of range", bg_height); + return(FALSE); + } + + // Time for very stringent checks for BG0! Don't draw if the sub-screen is a different size than the main screen, + // or the subscreen CG base != the main screen CG base, or the subscreen BAT base != main screen BAT base(when bgmode & 0x8 is TRUE) + if(!n) + { + if(king->priority & 0x1000) + { + CDBG_REASON("Affine transform enabled"); + return(FALSE); + } + + if((king->BGSize[0] & 0xFF) != (king->BGSize[0] >> 8)) + { + CDBG_REASON("Main Screen/Sub Screen Size Mismatch"); + return(FALSE); + } + + // Since we already made sure the main screen/sub screen sizes match, we only + // care if BG base or CG base don't match if endless/repeat scrolling is enabled. + // Otherwise, the subscreen won't show at all. + if(king->BGScrollMode & 0x1) + { + if(king->BGCGAddr[0] != king->BG0SubCGAddr) + { + CDBG_REASON("Main Screen/Sub Screen CG base mismatch"); + return(FALSE); + } + + if(bgmode & 0x8) + { + if(king->BGBATAddr[0] != king->BG0SubBATAddr) + { + CDBG_REASON("Main Screen/Sub Screen BAT base mismatch"); + return(FALSE); + } + } + } + } + + + // If microprogram fetching is disabled, abort. + if(!(king->MPROGControl & 0x1)) + { + CDBG_REASON("Microprogram disabled"); + return(FALSE); + } + else + { + int remap_thing = 0; + bool bat_fetch = FALSE; + + for(int x = 0; x < 16; x++) + { + uint16 mpd; + + // Forcing CG and BAT to 0 if the affine bit != rotate_mode is not technically correct. + // If there is a mismatch, it's more likely the effective CG and BAT address for the pixel/segment + // being drawn won't be calculated correctly, likely being just the initial offsets. + + mpd = king->MPROGData[x]; + + // Fetching for this BG number? + if(((mpd >> 6) & 0x3) != n) + continue; + + // NOP + if(mpd & 0x100) + continue; + + // Affine bit. + if(mpd & 0x20) + { + CDBG_REASON("Affine bit set"); + return(FALSE); + } + + // BAT fetch + if(mpd & 0x10) + { + if(((bat_offset & 0x20000) >> 14) != (x & 8)) + { + CDBG_REASON("BAT MPROG/base bank mismatch"); + return(FALSE); + } + + bat_fetch = TRUE; + } + else // CG fetch: + { + // CG offset/bank mismatch... + if(((cg_offset & 0x20000) >> 14) != (x & 8)) + { + CDBG_REASON("CG MPROG/base bank mismatch"); + return(FALSE); + } + + // Mismatch between CG fetch type and BG mode! + if((mpd & 0x8) != (bgmode & 0x8)) + { + CDBG_REASON("Mismatch between CG fetch type and bg mode"); + return(FALSE); + } + + // Skewed CG fetch order + if((mpd & 0x7) != remap_thing) + { + CDBG_REASON("Skewed CG fetch order"); + return(FALSE); + } + remap_thing++; + } + } + + // CG fetch count mismatch + if(remap_thing != cg_per_mode[bgmode & 0x7]) + { + CDBG_REASON("CG fetch count mismatch"); + return(FALSE); + } + + // BG mode demands a BAT fetch, but we don't have one! + if((bgmode & 0x8) && !bat_fetch) + { + CDBG_REASON("Missing BAT fetch"); + return(FALSE); + } + } + + + return(TRUE); +} + +static void DrawBG_Fast(uint32 *target, int n) +{ + const uint16 bgmode = (king->bgmode >> (n * 4)) & 0xF; + const bool endless = (king->BGScrollMode >> n) & 0x1; + const uint32 XScroll = king->BGXScroll[n]; + const uint32 YScroll = king->BGYScroll[n]; + const uint32 bat_offset = king->BGBATAddr[n] * 1024; + const uint32 cg_offset = king->BGCGAddr[n] * 1024; + const uint32 bat_and_cg_page = (king->PageSetting & 0x0010) ? 1 : 0; + + const int max_size_setting = n ? 0x9 : 0xA; + + const uint32 YOffset = (YScroll + (fx_vce.raster_counter - 22)) & 0xFFFF; + const uint32 layer_or = (LAYER_BG0 + n) << 28; + const int ysmall = YOffset & 0x7; + + const unsigned int bat_width_shift = (king->BGSize[n] & 0xF0) >> 4; + const unsigned int bat_width = (1 << bat_width_shift) >> 3; + const unsigned int bat_width_mask = endless ? (bat_width - 1) : ((((1 << max_size_setting) * 2) / 8) - 1); + + const int bat_height_shift = king->BGSize[n] & 0x0F; + const int bat_height = (1 << bat_height_shift) >> 3; + const int bat_height_mask = endless ? (bat_height - 1) : ((((1 << max_size_setting) * 2) / 8) - 1); + + // We don't need to &= cg_offset and bat_offset with 0x1ffff after here, as the effective addresses + // calculated with them are anded with 0x1ffff in the rendering code already. + const uint16 * const king_cg_base = &king->KRAM[bat_and_cg_page][cg_offset & 0x20000]; + const uint16 * const king_bat_base = &king->KRAM[bat_and_cg_page][bat_offset & 0x20000]; + + int bat_y = (YOffset >> 3) & bat_height_mask; + uint32 bat_x = (XScroll >> 3) & bat_width_mask; + + target += 8 - (XScroll & 0x7); + + // If we're in non-endless scroll mode, and we've scrolled past our visible area in the vertical direction, so return. + if(!endless && bat_y >= bat_height) // Draw this line as transparency and return? + { + return; + } + + // Adjust/corrupt bat_y to be faster in our blitting code + bat_y = (bat_y << bat_width_shift) >> 3; + + const uint32 palette_offset = ((vce_rendercache.palette_offset[1 + (n >> 1)] >> ((n & 1) ? 8 : 0)) << 1) & 0x1FF; + const uint32 * const palette_ptr = &vce_rendercache.palette_table_cache[palette_offset]; + + { + int wmul = (1 << bat_width_shift), wmask = (1 << bat_height_shift) - 1; + int sexy_y_pos = (YOffset & wmask) * wmul; + + #if 0 + #define BGFAST_BATMODE (bgmode & 0x8) + #include "king-bgfast-blit.inc" + + #else + if(bgmode & 0x8) + { + #define BGFAST_BATMODE 1 + #include "king-bgfast-blit.inc" + #undef BGFAST_BATMODE + } + else + { + #define BGFAST_BATMODE 0 + #include "king-bgfast-blit.inc" + #undef BGFAST_BATMODE + } + #endif + } +} + diff --git a/libmednahawk/src/pcfx/king.cpp b/libmednahawk/src/pcfx/king.cpp new file mode 100644 index 0000000000..72beb93a05 --- /dev/null +++ b/libmednahawk/src/pcfx/king.cpp @@ -0,0 +1,4045 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Emulation for HuC6261(descendant of the VCE) and the HuC6272(KING) */ +/* Note: Some technical comments may be outdated */ + +/* + Current issues: + VCE "natural" priorities for the layers when their priorities are the same(technically an illegal condition) are probably not correct. A game test case: "Miraculum" erroneously sets + up the priority registers like this after exiting the airship(I believe). + + SCSI RST interrupt timing is guessed(and with nothing to go on), so it definitely needs to be tested on the real thing. + + The data bus is not handled/asserted properly. Excluding pseudo-DMA and DMA modes(which I'd need to test), the data bus will only be asserted if the lower bit of register 0x1 is set, and the + phase match bits must match the state of the C/D, I/O, and MSG signals(IE there isn't a bus mismatch state). + + Raw subchannel reading timing is probably wrong. + + KRAM mode register is not emulated(I'm not even sure what it does exactly). +*/ + +#include "pcfx.h" +#include "king.h" +#include "../cdrom/scsicd.h" +#include "interrupt.h" +#include "rainbow.h" +#include "soundbox.h" +#include "input.h" +#include "timer.h" +#include "debug.h" +#include +#include +#include "../video.h" +#include "../clamp.h" + +#ifdef __MMX__ +#include +#endif + +#define KINGDBG(format, ...) (void)0 +//#define KINGDBG FXDBG +#define KING_UNDEF FXDBG +#define ADPCMDBG(format, ...) (void)0 +//FXDBG + +/* + SCSI Questions(this list needs to be revised more and merged into the issues list at the beginning of the file): + + What happens when there is no more data to transfer during DMA and the status SCSI bus phase is entered(before the DMA count reaches 0)? + + Why is the "sequential DMA" bit needed? + + Which SCSI registers return the values of the SCSI bus, and which return latched values(from previous writes or pseudo-DMA)? + + Is real DMA layered on top of pseudo-DMA? Reading the developer documents, it looks that way. + + What triggers the setting of ACK during pseudo-DMA? A timer? Reading from the upper 16-bits of KING register 0x05? The lower bits(in which case, + the value would be latched..)? + +*/ + +// 16 bit YUV format: upper 8 bits Y, next 4 bits U, lower 4 bits V, transformed to 8-bit U and 8-bit V by shifting in 0 in lower bits. + +typedef struct +{ + uint8 AR; + + uint16 priority[2]; /* uint16 0: + bit 3-0: Legacy VDC BG priority? + bit 7-4: Legacy VDC SPR priority? + bit 11-8: RAINBOW(MJPEG) priority + uint16 1: + bit 3-0: KING BG0 priority + bit 7-4: KING BG1 priority + bit 11-8: KING BG2 priority + bit 15-12: KING BG3 priority + */ + + bool odd_field; /* TRUE if interlaced mode is enabled and we're in the odd field, FALSE otherwise. */ + + bool in_hblank; /* TRUE if we're in H-blank */ + bool in_vdc_hsync; + + bool frame_interlaced; + + uint16 picture_mode; + + bool dot_clock; // Cached from picture_mode in hblank + uint32 dot_clock_ratio; // Cached from picture mode in hblank + int32 clock_divider; + + int32 vdc_event[2]; + + + uint32 raster_counter; + + uint16 palette_rw_offset; // Read/write offset + uint16 palette_rw_latch; + + uint16 palette_offset[4]; // + // BMG1 and BMG 0 in [1](BMG1 in upper 8 bits, BMG0 in lower), BMG2 and 3 in [2] + // RAINBOW in lower(?) 8 bits of [3]? + + uint16 palette_table[512]; // The YUV palette, woohoo! + + // Chroma keys, minimum value in lower 8 bits, maximum value in upper 8 bits + uint16 ChromaKeyY; // Register 0xA + uint16 ChromaKeyU; // Register 0xB + uint16 ChromaKeyV; // register 0xC + + uint16 CCR; // Register 0x0D, fixed color register, 16-bit YUV + uint16 BLE; // Register 0x0E, cellophane setting register + // 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + // F/B |E/D | IDU |CTRL BMG3|CTRL BMG2|CTRL BMG1|CTRL BMG0| VDP SP | VDP BG + // IDU is AKA Rainbow + // F/B + // 0 = Back cellophane. + // 1 = Front cellophane. + // E/D + // 0 = Back/Front cellophane off + // 1 = Back/Front cellophane on + // Ctrl format: + // 00 = Cellophane disabled. + // 01 = Cellophane with 1A/1B(Coeffs 0, 1?) + // 02 = Cellophane with 2A/2B(Coeffs 2, 3?) + // 03 = Cellophane with 3A/3B(Coeffs 4, 5?) + + uint16 SPBL; // Register 0x0F, Sprite cellophane setting register + // Specifies a color palette bank for which cellophane will always be disabled. + + uint16 coefficients[6]; // Cellophane coefficients, YUV, 4-bits each, on the least-significant end(xxxxYYYYUUUUVVVV). + // Valid settings: 0(cellophane disabled for layer), 1-8. 9-F are "unsupported". +} fx_vce_t; + +fx_vce_t fx_vce; + +// +// VCE render cache, including registers cached at hblank +// +typedef struct +{ + uint16 priority[2]; + uint16 picture_mode; + + uint16 palette_offset[4]; + uint32 palette_table_cache[512 * 2]; // 24-bit YUV cache for SPEED(HAH), * 2 to remove need for & 0x1FF in rendering code + + uint16 ChromaKeyY; + uint16 ChromaKeyU; + uint16 ChromaKeyV; + + uint16 CCR; + uint16 BLE; + + uint16 SPBL; + + uint16 coefficients[6]; + + uint8 coefficient_mul_table_y[16][256]; + int8 coefficient_mul_table_uv[16][256]; + + uint32 LayerPriority[8]; // [LAYER_n] = ordered_priority_for_n(real priority 0-15 mapped to 1-7) + // priority = 0, layer is disabled(via the layer enable bit not being set) +} vce_rendercache_t; + +static vce_rendercache_t vce_rendercache; + +static int32 scsicd_ne; + +enum +{ + HPHASE_ACTIVE = 0, + HPHASE_HBLANK_PART1, + HPHASE_HBLANK_PART3, + HPHASE_HBLANK_PART4, + HPHASE_COUNT +}; + +static int32 HPhase; +static int32 HPhaseCounter; +static int32 vdc_lb_pos; + +static MDFN_ALIGN(8) uint16 vdc_linebuffers[2][512]; +static MDFN_ALIGN(8) uint32 vdc_linebuffer[512]; +static MDFN_ALIGN(8) uint32 vdc_linebuffer_yuved[512]; +static MDFN_ALIGN(8) uint32 rainbow_linebuffer[256]; + +// 8 * 2 for left + right padding for scrolling +static MDFN_ALIGN(8) uint32 bg_linebuffer[256 + 8 + 8]; + + + +// Don't change these enums, there are some hardcoded values still used(particularly, LAYER_NONE). +enum +{ + LAYER_NONE = 0, + LAYER_BG0, + LAYER_BG1, + LAYER_BG2, + LAYER_BG3, + LAYER_VDC_BG, + LAYER_VDC_SPR, + LAYER_RAINBOW +}; + +static uint8 VCEPrioMap[8][8][8][4]; // [n][n][n][3] is dummy, for padding to a power of 2. + +static void BuildCMT(void) +{ + for(int coeff = 0; coeff < 16; coeff++) + { + for(int value = 0; value < 256; value++) + { + vce_rendercache.coefficient_mul_table_y[coeff][value] = (value * coeff / 8); // Y + vce_rendercache.coefficient_mul_table_uv[coeff][value] = ((value - 128) * coeff / 8); // UV + } + } + +} + +static INLINE void RebuildLayerPrioCache(void) +{ + vce_rendercache_t *vr = &vce_rendercache; + + vr->LayerPriority[LAYER_NONE] = 0; + + for(int n = 0; n < 4; n++) + { + if(((fx_vce.picture_mode >> (10 + n)) & 1)) + { + vr->LayerPriority[LAYER_BG0 + n] = (((vce_rendercache.priority[1] >> (n * 4)) & 0xF) + 1); + if(vr->LayerPriority[LAYER_BG0 + n] > 8) + { + printf("KING BG%d Priority Too Large: %d\n", n, vr->LayerPriority[LAYER_BG0 + n] - 1); + vr->LayerPriority[LAYER_BG0 + n] = 0; + } + } + else + vr->LayerPriority[LAYER_BG0 + n] = 0; + } + + if(fx_vce.picture_mode & 0x0100) + { + vr->LayerPriority[LAYER_VDC_BG] = ((vce_rendercache.priority[0] & 0xF) + 1); + if(vr->LayerPriority[LAYER_VDC_BG] > 8) + { + printf("VDC BG Priority Too Large: %d\n", vr->LayerPriority[LAYER_VDC_BG] - 1); + vr->LayerPriority[LAYER_VDC_BG] = 0; + } + } + else + vr->LayerPriority[LAYER_VDC_BG] = 0; + + if(fx_vce.picture_mode & 0x0200) + { + vr->LayerPriority[LAYER_VDC_SPR] = (((vce_rendercache.priority[0] >> 4) & 0xF) + 1); + if(vr->LayerPriority[LAYER_VDC_SPR] > 8) + { + printf("VDC SPR Priority Too Large: %d\n", vr->LayerPriority[LAYER_VDC_SPR] - 1); + vr->LayerPriority[LAYER_VDC_SPR] = 0; + } + } + else + vr->LayerPriority[LAYER_VDC_SPR] = 0; + + if(fx_vce.picture_mode & 0x4000) + { + vr->LayerPriority[LAYER_RAINBOW] = (((vce_rendercache.priority[0] >> 8) & 0xF) + 1); + if(vr->LayerPriority[LAYER_RAINBOW] > 8) + { + printf("RAINBOW Priority Too Large: %d\n", vr->LayerPriority[LAYER_RAINBOW] - 1); + vr->LayerPriority[LAYER_RAINBOW] = 0; + } + } + else + vr->LayerPriority[LAYER_RAINBOW] = 0; + + + // At this point, all entries in vr->LayerPriority should be one of 0 through 8(inclusive). + + int RemapPriority = 1; + bool Done[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + + for(unsigned int i = 1; i < (1 + 8); i++) + { + for(int n = 0; n < 4; n++) + { + if(vr->LayerPriority[LAYER_BG0 + n] == i && !Done[LAYER_BG0 + n]) + { + vr->LayerPriority[LAYER_BG0 + n] = RemapPriority++; + Done[LAYER_BG0 + n] = true; + } + } + + if(vr->LayerPriority[LAYER_VDC_BG] == i && !Done[LAYER_VDC_BG]) + { + vr->LayerPriority[LAYER_VDC_BG] = RemapPriority++; + Done[LAYER_VDC_BG] = true; + } + + if(vr->LayerPriority[LAYER_VDC_SPR] == i && !Done[LAYER_VDC_SPR]) + { + vr->LayerPriority[LAYER_VDC_SPR] = RemapPriority++; + Done[LAYER_VDC_SPR] = true; + } + + if(vr->LayerPriority[LAYER_RAINBOW] == i && !Done[LAYER_RAINBOW]) + { + vr->LayerPriority[LAYER_RAINBOW] = RemapPriority++; + Done[LAYER_RAINBOW] = true; + } + } + assert(RemapPriority <= 8); + + //if(fx_vce.raster_counter == 50) + // MDFN_DispMessage("%d BG0: %d %d %d %d, VBG: %d, VSPR: %d, RAIN: %d", vr->LayerPriority[0], vr->LayerPriority[1], vr->LayerPriority[2], vr->LayerPriority[3], + // vr->LayerPriority[4], vr->LayerPriority[5], vr->LayerPriority[6], vr->LayerPriority[7]); +} + +// Call this function in FX VCE hblank(or at the end/immediate start of active display) +static void DoHBlankVCECaching(void) +{ + const fx_vce_t *source = &fx_vce; + vce_rendercache_t *dest = &vce_rendercache; + + dest->picture_mode = source->picture_mode; + + fx_vce.dot_clock = (bool)(fx_vce.picture_mode & 0x08); + fx_vce.dot_clock_ratio = (fx_vce.picture_mode & 0x08) ? 3 : 4; + + for(int i = 0; i < 2; i++) + dest->priority[i] = source->priority[i]; + + + for(int i = 0; i < 4; i++) + dest->palette_offset[i] = source->palette_offset[i]; + + dest->ChromaKeyY = source->ChromaKeyY; + dest->ChromaKeyU = source->ChromaKeyU; + dest->ChromaKeyV = source->ChromaKeyV; + + dest->CCR = source->CCR; + dest->BLE = source->BLE; + dest->SPBL = source->SPBL; + + for(int i = 0; i < 6; i++) + dest->coefficients[i] = source->coefficients[i]; + + RebuildLayerPrioCache(); +} + +static INLINE void RedoPaletteCache(int n) +{ + uint32 YUV = fx_vce.palette_table[n]; + uint8 Y = (YUV >> 8) & 0xFF; + uint8 U = (YUV & 0xF0); + uint8 V = (YUV & 0x0F) << 4; + + vce_rendercache.palette_table_cache[n] = + vce_rendercache.palette_table_cache[0x200 | n] = (Y << 16) | (U << 8) | (V << 0); +} + +enum +{ + BGMODE_INVALID = 0, + BGMODE_4 = 1, + BGMODE_16 = 2, + BGMODE_256 = 3, + BGMODE_64K = 4, + BGMODE_16M = 5, + BGMODE_64K_EXTDOT = 6, + BGMODE_16M_EXTDOT = 7, +}; + +typedef struct +{ + uint8 AR; + + uint32 KRAMRA, KRAMWA; + uint8 KRAM_Mode; + + uint32 PageSetting; + uint16 *RainbowPagePtr, *DMAPagePtr; // Calculated off of PageSetting + + uint16 bgmode; // 4 bits each BG: 3333 2222 1111 0000 + /* Possible settings: + 0x0: Invalid? + 0x1: 4-color palette, 1 byte for 4 pixels, transparent on entry 0 + 0x2: 16-color palette, 1 byte for 2 pixels, transparent on entry 0 + 0x3: 256-color palette, 1 byte for 1 pixel, transparent on entry 0 + 0x4: 64K color(Y-8, U-4, V-4), 1 halfword for 1 pixel, transparent on Y=0 + 0x5: 16M colors(Y-8, Y-8, U-8, V-8, 4 bytes for 2 pixels), transparent on Y=0 + + If & 8, enable palette bank mode(only for 4 and 16-colors)??? + BAT format would be PPPPCCCCCCCCCCCC in this mode. + 4 color: 00PPPPnn 16 color: PPPPnnnn, where "n" is the 2 or 4-bit pixel data + */ + uint16 priority; + + uint16 BGScrollMode; // Register 0x16 + uint16 BGSize[4]; + + uint8 BGBATAddr[4]; + uint8 BGCGAddr[4]; + uint8 BG0SubBATAddr, BG0SubCGAddr; + + uint16 BGXScroll[4]; + uint16 BGYScroll[4]; + + uint16 BGXScrollCache[4]; + uint16 BGYScrollCache[4]; + + uint16 BGAffinA, BGAffinB, BGAffinC, BGAffinD; + uint16 BGAffinCenterX, BGAffinCenterY; + + uint16 ADPCMControl; + uint16 ADPCMBufferMode[2]; + + uint16 ADPCMSAL[2]; + + uint32 ADPCMEndAddress[2]; + uint32 ADPCMPlayAddress[2]; + uint16 ADPCMIntermediateAddress[2]; + uint16 ADPCMStatus[2]; // Register 0x53, a bit maimed :) + bool ADPCMIRQPending; + + uint16 RAINBOWTransferControl; // Register 0x40 + uint32 RAINBOWKRAMA; // Register 0x41 + uint16 RAINBOWTransferStartPosition; // Register 0x42, line number(0-262) + uint16 RAINBOWTransferBlockCount; // Register 0x43 + + + bool RAINBOWStartPending; + int32 RAINBOWBusyCount, RAINBOWBlockCount; + + uint16 RasterIRQLine; // Register 0x44 + bool RasterIRQPending; + + uint32 RAINBOWKRAMReadPos; + + bool DMATransferFlipFlop; + uint32 DMATransferAddr; // Register 0x09 + uint32 DMATransferSize; // Register 0x0A + uint16 DMAStatus; // Register 0x0B + uint8 DMALatch; + + + uint16 MPROGControl; // register 0x15 + uint16 MPROGControlCache; + uint16 MPROGAddress; + uint16 MPROGData[0x10]; + + bool DMAInterrupt; + uint8 Reg00; + uint8 Reg01; + uint8 Reg02; + uint8 Reg03; + + + uint8 SubChannelControl; + + bool CDInterrupt, SubChannelInterrupt; + uint8 SubChannelBuf; + uint8 data_cache; + + bool DRQ; + bool dma_receive_active; + bool dma_send_active; + int32 dma_cycle_counter; + int32 lastts; + + + uint16 KRAM[2][262144]; + + #define KING_MAGIC_INTERVAL 10 //4 //32 //10 +} king_t; + +static king_t *king = NULL; + +static uint8 BGLayerDisable; +static bool RAINBOWLayerDisable; + +static void RedoKINGIRQCheck(void); + +static INLINE void REGSETP(uint16 ®, const uint8 data, const bool msb) +{ + reg &= 0xFF << (msb ? 0 : 8); + reg |= data << (msb ? 8 : 0); +} + +#ifdef WANT_DEBUGGER +static bool KRAMReadBPE = FALSE; +static bool KRAMWriteBPE = FALSE; + +void KING_NotifyOfBPE(bool read, bool write) +{ + KRAMReadBPE = read; + KRAMWriteBPE = write; + + //FXVDC_SetAux0BPBpase(fx_vdc_chips[0], (read || write) ? 0x80000 : ~0); + //FXVDC_SetAux0BPBpase(fx_vdc_chips[1], (read || write) ? 0x90000 : ~0); +} + +static void (*KINGLog)(const char *, const char *, ...) = NULL; +void KING_SetLogFunc(void (*logfunc)(const char *, const char *, ...)) +{ + KINGLog = logfunc; +} + +static MDFN_Surface *GfxDecode_Buf = NULL; +static int GfxDecode_Line = -1; +static int GfxDecode_Layer = 0; +static int GfxDecode_Scroll = 0; +static int GfxDecode_PBN = 0; +static void DoGfxDecode(void); + +uint8 KING_MemPeek(uint32 A) +{ + uint8 ret = king->KRAM[(A & 0x80000) ? 1 : 0][A >> 1] >> ((A & 1) * 8); + + return(ret); +} + +static void KING_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + int which; + + if(!strcmp(name, "kram0") || !strcmp(name, "kram1")) + { + int wk = name[4] - '0'; + + while(Length--) + { + *Buffer = king->KRAM[wk][(Address >> 1) & 0x3ffff] >> ((Address & 1) * 8); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "vce")) + { + while(Length--) + { + Address &= 0x3FF; + *Buffer = fx_vce.palette_table[Address >> 1] >> ((Address & 1) * 8); + Address++; + Buffer++; + } + } + else if(trio_sscanf(name, "vdcvram%d", &which) == 1) + { + //FXVDC_GetAddressSpaceBytes(fx_vdc_chips[which], "vram", Address, Length, Buffer); + } + +} + +static void KING_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + int which; + + if(!strcmp(name, "kram0") || !strcmp(name, "kram1")) + { + int wk = name[4] - '0'; + + while(Length--) + { + REGSETP(king->KRAM[wk][(Address >> 1) & 0x3ffff], *Buffer, Address & 1); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "vce")) + { + while(Length--) + { + Address &= 0x3FF; + REGSETP(fx_vce.palette_table[Address >> 1], *Buffer, Address & 1); + RedoPaletteCache(Address >> 1); + Address++; + Buffer++; + } + } + else if(trio_sscanf(name, "vdcvram%d", &which) == 1) + { + //FXVDC_PutAddressSpaceBytes(fx_vdc_chips[which], "vram", Address, Length, Granularity, hl, Buffer); + } + +} +#endif + +static void RecalcKRAMPagePtrs(void) +{ + king->RainbowPagePtr = king->KRAM[(king->PageSetting & 0x1000) ? 1 : 0]; + king->DMAPagePtr = king->KRAM[king->PageSetting & 1]; +} + +uint8 KING_RB_Fetch(void) +{ + uint8 ret = king->RainbowPagePtr[(king->RAINBOWKRAMReadPos >> 1) & 0x3FFFF] >> ((king->RAINBOWKRAMReadPos & 1) * 8); + + king->RAINBOWKRAMReadPos = ((king->RAINBOWKRAMReadPos + 1) & 0x3FFFF) | (king->RAINBOWKRAMReadPos & 0x40000); + + return(ret); +} + +static void DoRealDMA(uint8 db) +{ + if(!king->DMATransferFlipFlop) + king->DMALatch = db; + else + { + king->DMAPagePtr[king->DMATransferAddr & 0x3FFFF] = king->DMALatch | (db << 8); + king->DMATransferAddr = ((king->DMATransferAddr + 1) & 0x1FFFF) | (king->DMATransferAddr & 0x20000); + king->DMATransferSize = (king->DMATransferSize - 2) & 0x3FFFF; + if(!king->DMATransferSize) + { + KINGDBG("DMA Done\n"); + king->DMAInterrupt = TRUE; + RedoKINGIRQCheck(); + king->DMAStatus &= ~1; + return; + } + } + king->DMATransferFlipFlop ^= 1; +} + +uint16 FXVCE_Read16(uint32 A) +{ + // bit 4-0: Register number + // bit 13-5: Raster counter + // bit 14: In interlace mode and when on odd fields set bit. + // bit 15: "0" during blanking(h or v), "1" during active screen area + // Raster counter increments a few cycles after the start of hblank. + + if(!(A & 0x4)) + { + uint16 fullret = 0; + + fullret |= fx_vce.AR; + fullret |= fx_vce.odd_field ? 0x4000 : 0x0000; + fullret |= fx_vce.raster_counter << 5; + + if(fx_vce.in_hblank || fx_vce.raster_counter < 22 || fx_vce.raster_counter == 262) + fullret |= 0 << 15; // Clear on blanking + else + fullret |= 1 << 15; // Set on active display. + + return(fullret); + } + else + { + switch(fx_vce.AR) // No idea which registers are readable, so make them all readable :b + { + default: break; + case 0x00: return(fx_vce.picture_mode); + case 0x01: return(fx_vce.palette_rw_offset); + case 0x03: // Boundary Gate reads from 0x03 expecting palette data... + case 0x02: + { + uint16 ret = fx_vce.palette_rw_latch; + fx_vce.palette_rw_offset = (fx_vce.palette_rw_offset + 1) & 0x1FF; + fx_vce.palette_rw_latch = fx_vce.palette_table[fx_vce.palette_rw_offset]; + return(ret); + } + case 0x04: return(fx_vce.palette_offset[0]); + case 0x05: return(fx_vce.palette_offset[1]); + case 0x06: return(fx_vce.palette_offset[2]); + case 0x07: return(fx_vce.palette_offset[3]); + case 0x08: return(fx_vce.priority[0]); + case 0x09: return(fx_vce.priority[1]); + case 0x0a: return(fx_vce.ChromaKeyY); + case 0x0b: return(fx_vce.ChromaKeyU); + case 0x0c: return(fx_vce.ChromaKeyV); + + case 0x0d: return(fx_vce.CCR); + case 0x0e: return(fx_vce.BLE); + case 0x0f: return(fx_vce.SPBL); + case 0x10: return(fx_vce.coefficients[0]); + case 0x11: return(fx_vce.coefficients[1]); + + case 0x12: return(fx_vce.coefficients[2]); + case 0x13: return(fx_vce.coefficients[3]); + + case 0x14: return(fx_vce.coefficients[4]); + case 0x15: return(fx_vce.coefficients[5]); + } + } + + return(0); +} + +void FXVCE_Write16(uint32 A, uint16 V) +{ + if(!(A & 0x4)) + { + fx_vce.AR = V & 0x1F; + } + else + { + switch(fx_vce.AR) + { + case 0x00: fx_vce.picture_mode = V; + break; + + case 0x01: fx_vce.palette_rw_offset = V & 0x1FF; + fx_vce.palette_rw_latch = fx_vce.palette_table[fx_vce.palette_rw_offset]; + break; + + case 0x02: fx_vce.palette_rw_latch = V; + fx_vce.palette_table[fx_vce.palette_rw_offset] = fx_vce.palette_rw_latch; + RedoPaletteCache(fx_vce.palette_rw_offset); + fx_vce.palette_rw_offset = (fx_vce.palette_rw_offset + 1) & 0x1FF; + break; + + case 0x04: fx_vce.palette_offset[0] = V; break; + case 0x05: fx_vce.palette_offset[1] = V; break; + case 0x06: fx_vce.palette_offset[2] = V; break; + case 0x07: fx_vce.palette_offset[3] = V & 0x00FF; break; + case 0x08: fx_vce.priority[0] = V & 0x0777; break; + case 0x09: fx_vce.priority[1] = V & 0x7777; break; + + case 0x0a: fx_vce.ChromaKeyY = V; break; + case 0x0b: fx_vce.ChromaKeyU = V; break; + case 0x0c: fx_vce.ChromaKeyV = V; break; + + case 0x0d: fx_vce.CCR = V; break; + case 0x0e: fx_vce.BLE = V; break; + case 0x0f: fx_vce.SPBL = V; break; + + case 0x10: fx_vce.coefficients[0] = V & 0xFFF; break; + case 0x11: fx_vce.coefficients[1] = V & 0xFFF; break; + + case 0x12: fx_vce.coefficients[2] = V & 0xFFF; break; + case 0x13: fx_vce.coefficients[3] = V & 0xFFF; break; + + case 0x14: fx_vce.coefficients[4] = V & 0xFFF; break; + case 0x15: fx_vce.coefficients[5] = V & 0xFFF; break; + } + } +} + +static void RedoKINGIRQCheck(void) +{ + bool asserted = 0; + + if(king->ADPCMIRQPending) + { + asserted = 1; + } + + if(king->DMAInterrupt && (king->DMAStatus & 0x2)) + { + asserted = 1; + } + + if(king->CDInterrupt) + { + asserted = 1; + } + + if(king->SubChannelInterrupt) + asserted = 1; + + if(king->RasterIRQPending) + asserted = 1; + + PCFXIRQ_Assert(PCFXIRQ_SOURCE_KING, asserted); +} + +void KING_CDIRQ(int type) +{ + if(type == SCSICD_IRQ_MAGICAL_REQ) + { + if(king->Reg02 & 0x2) + { + if(SCSICD_GetIO() != ((king->Reg03 >> 0) & 1) || + SCSICD_GetCD() != ((king->Reg03 >> 1) & 1) || + SCSICD_GetMSG() != ((king->Reg03 >> 2) & 1)) + { + KINGDBG("Phase mismatch interrupt asserted.\n"); + king->CDInterrupt = TRUE; + RedoKINGIRQCheck(); + } + } + } +} + +void KING_StuffSubchannels(uint8 subchannels, int subindex) +{ + if(king->SubChannelControl & 0x1) + { + if(subindex == -2) + king->SubChannelBuf = 0x00; + else if(subindex == -1) + king->SubChannelBuf = 0x80; + else + king->SubChannelBuf = (subchannels & 0x7F); + + if(king->SubChannelControl & 0x2) + { + king->SubChannelInterrupt = TRUE; + RedoKINGIRQCheck(); + } + } + + +} + +uint8 KING_Read8(const v810_timestamp_t timestamp, uint32 A) +{ + uint8 ret = KING_Read16(timestamp, A & ~1) >> ((A & 1) * 8); + + //printf("Read8: %04x\n", A); + return(ret); +} + +void KING_EndFrame(v810_timestamp_t timestamp) +{ + PCFX_SetEvent(PCFX_EVENT_KING, KING_Update(timestamp)); + scsicd_ne = SCSICD_Run(timestamp); + + SCSICD_ResetTS(); + + king->lastts = 0; + + if(king->dma_cycle_counter & 0x40000000) + { + king->dma_cycle_counter = 0x7FFFFFFF; + } +} + +//static INLINE void StartKingMagic(void) +//{ +// king->lastts = v810_timestamp; +// king->dma_cycle_counter = KING_MAGIC_INTERVAL; +// PCFX_SetEvent(PCFX_EVENT_KING, KING_MAGIC_INTERVAL); +//} + +static INLINE int32 CalcNextEvent(int32 next_event) +{ + if(king->dma_cycle_counter < next_event) + next_event = king->dma_cycle_counter; + + if(scsicd_ne < next_event) + next_event = scsicd_ne; + + return(next_event); +} + +static int32 CalcNextExternalEvent(int32 next_event) +{ + // 100 = Hack to make the emulator go faster during CD DMA transfers. + if(king->dma_cycle_counter < next_event) + next_event = 100; //king->dma_cycle_counter; + + if(scsicd_ne < next_event) + next_event = scsicd_ne; + + if(next_event > HPhaseCounter) + next_event = HPhaseCounter; + + //printf("KING: %d %d %d; %d\n", king->dma_cycle_counter, scsicd_ne, HPhaseCounter, next_event); + + for(int chip = 0; chip < 2; chip++) + { + int fwoom = (fx_vce.vdc_event[chip] * fx_vce.dot_clock_ratio - fx_vce.clock_divider); + + if(fwoom < 1) + fwoom = 1; + + if(next_event > fwoom) + next_event = fwoom; + } + + return(next_event); +} + +static void MDFN_FASTCALL KING_RunGfx(int32 clocks); + +v810_timestamp_t MDFN_FASTCALL KING_Update(const v810_timestamp_t timestamp) +{ + int32 clocks = timestamp - king->lastts; + uint32 running_timestamp = king->lastts; + + //printf("KING Run for: %d\n", clocks); + + king->lastts = timestamp; + + KING_RunGfx(clocks); + + while(clocks > 0) + { + int32 chunk_clocks = CalcNextEvent(clocks); + + running_timestamp += chunk_clocks; + clocks -= chunk_clocks; + + scsicd_ne -= chunk_clocks; + if(scsicd_ne <= 0) + scsicd_ne = SCSICD_Run(running_timestamp); + + king->dma_cycle_counter -= chunk_clocks; + if(king->dma_cycle_counter <= 0) + { + //assert(king->dma_receive_active || king->dma_send_active); + king->dma_cycle_counter += KING_MAGIC_INTERVAL; + if(king->dma_receive_active) + { + if(!SCSICD_GetCD() && SCSICD_GetIO()) + { + if(SCSICD_GetREQ() && !SCSICD_GetACK()) + { + if(!king->DRQ) + { + king->DRQ = TRUE; + king->data_cache = SCSICD_GetDB(); + //SCSICD_SetACK(TRUE); + //PCFX_SetEvent(PCFX_EVENT_SCSI, SCSICD_Run(timestamp)); + + if(king->DMAStatus & 0x1) + { + king->DRQ = FALSE; + DoRealDMA(king->data_cache); + SCSICD_SetACK(TRUE); + scsicd_ne = SCSICD_Run(running_timestamp); + } + } + } + else if(SCSICD_GetACK() && !SCSICD_GetREQ()) + { + SCSICD_SetACK(FALSE); + scsicd_ne = SCSICD_Run(running_timestamp); + } + } + } + else if(king->dma_send_active) + { + if(!SCSICD_GetIO()) + { + if(SCSICD_GetREQ() && !SCSICD_GetACK()) + { + if(!king->DRQ) + { + //KINGDBG("Did write: %02x\n", king->data_cache); + SCSICD_SetDB(king->data_cache); + SCSICD_SetACK(TRUE); + scsicd_ne = SCSICD_Run(running_timestamp); + king->DRQ = TRUE; + } + } + else if(SCSICD_GetACK() && !SCSICD_GetREQ()) + { + SCSICD_SetACK(FALSE); + scsicd_ne = SCSICD_Run(running_timestamp); + } + } + } + } + } // end while(clocks > 0) + + return(timestamp + CalcNextExternalEvent(0x4FFFFFFF)); +} + +uint16 KING_Read16(const v810_timestamp_t timestamp, uint32 A) +{ + int msh = A & 2; + uint16 ret = 0; + + KING_Update(timestamp); + + //printf("KRead16: %08x, %d; %04x\n", A, timestamp, king->AR); + + switch(A & 0x704) + { + case 0x600: // ?CDSRP?? AAAAAAAA + // C = 0x4000, SCSI interrupt + // D = 0x2000, DMA IRQ + // S = 0x1000, CD Subchannel IRQ? + // R = 0x0800, Raster IRQ + // P = 0x0400, ADPCM IRQ + + if(!msh) + { + ret = king->AR; + + if(king->ADPCMIRQPending) + ret |= 0x400; + + if(king->SubChannelInterrupt) + ret |= 0x1000; + + // Gaaah, this is probably a hack...Anime Freak FX Vol 4 gets confused and crashes + // if both bits are set at once. + if(king->DMAInterrupt && (king->DMAStatus & 0x2)) + ret |= 0x2000; + else if(king->CDInterrupt) + ret |= 0x4000; + + if(king->RasterIRQPending) + ret |= 0x800; + + king->SubChannelInterrupt = FALSE; + king->RasterIRQPending = FALSE; + RedoKINGIRQCheck(); + } + else + { + ret |= SCSICD_GetSEL() ? 0x02: 0x00; + ret |= SCSICD_GetIO() ? 0x04 : 0x00; + ret |= SCSICD_GetCD() ? 0x08 : 0x00; + ret |= SCSICD_GetMSG() ? 0x10 : 0x00; + ret |= SCSICD_GetREQ() ? 0x20 : 0x00; + ret |= SCSICD_GetBSY() ? 0x40 : 0x00; + ret |= SCSICD_GetRST() ? 0x80 : 0x00; + + ret |= king->SubChannelBuf << 8; + } + break; // status... + + case 0x604: switch(king->AR) + { + default: + KINGDBG("Unknown 16-bit register read: %02x\n", king->AR); + break; + + case 0x00: + ret = SCSICD_GetDB(); + break; + + case 0x01: + ret = REGGETHW(king->Reg01, msh); + break; + + case 0x02: + ret = REGGETHW(king->Reg02, msh); + break; + + case 0x03: + ret = REGGETHW(king->Reg03, msh); + break; + + case 0x04: + if(!msh) + { + ret |= SCSICD_GetSEL() ? 0x02: 0x00; + ret |= SCSICD_GetIO() ? 0x04 : 0x00; + ret |= SCSICD_GetCD() ? 0x08 : 0x00; + ret |= SCSICD_GetMSG() ? 0x10 : 0x00; + ret |= SCSICD_GetREQ() ? 0x20 : 0x00; + ret |= SCSICD_GetBSY() ? 0x40 : 0x00; + ret |= SCSICD_GetRST() ? 0x80 : 0x00; + } + break; + + case 0x05: + if(king->Reg01 & 0x80) + { + ret = 0x00; + break; + } + + if(msh) + { + ret = king->data_cache; + //printf("Fooball: %02x\n", ret); + if(king->dma_receive_active) + { + king->DRQ = FALSE; + SCSICD_SetACK(TRUE); + scsicd_ne = 1; + } + } + else + { + ret |= SCSICD_GetACK() ? 0x01 : 0x00; + ret |= SCSICD_GetATN() ? 0x02 : 0x00; + + if(king->dma_receive_active || king->dma_send_active) + if(king->DRQ) + ret |= 0x40; + + // Gaaah, this is probably a hack...Anime Freak FX Vol 4 gets confused and crashes + // if both bits are set at once. + if(!king->DMAInterrupt) + ret |= king->CDInterrupt ? 0x10 : 0x00; + + if(SCSICD_GetIO() == ((king->Reg03 >> 0) & 1) && + SCSICD_GetCD() == ((king->Reg03 >> 1) & 1) && + SCSICD_GetMSG() == ((king->Reg03 >> 2) & 1)) + { + ret |= 0x8; // Phase match + } + } + break; + + case 0x06: // SCSI Input Data Register, same value returned as reading D16-D23 of register 0x05? + KINGDBG("Input data for...?\n"); + ret = king->data_cache; + break; + + case 0x07: + // SCSI IRQ acknowledge/reset + KINGDBG("SCSI IRQ acknowledge\n"); + king->CDInterrupt = FALSE; + RedoKINGIRQCheck(); + ret = 0xFF; + break; + + case 0x08: // Sub-channel data + if(!msh) + { + ret = king->SubChannelBuf; + king->SubChannelBuf = 0; + //puts("Sub-channel data read."); + } + break; + + case 0x09: + ret = REGGETHW(king->DMATransferAddr, msh); + break; + + case 0x0A: + ret = REGGETHW(king->DMATransferSize, msh); + break; + + case 0x0B: // Value read in the BIOS always seems to be discarded... DMA IRQ acknowledge? + if(!msh) + { + ret = king->DMAInterrupt ? 1 : 0; + KINGDBG("DMA IRQ Acknowledge: %d\n", ret); + king->DMAInterrupt = 0; + RedoKINGIRQCheck(); + } + break; + + case 0x0C: + ret = REGGETHW(king->KRAMRA, msh); + break; + + case 0x0D: + ret = REGGETHW(king->KRAMWA, msh); + break; + + case 0x0E: + { + unsigned int page = (king->KRAMRA & 0x80000000) ? 1 : 0; + int32 inc_amount = ((int32)((king->KRAMRA & (0x3FF << 18)) << 4)) >> 22; // Convert from 10-bit signed 2's complement + + ret = king->KRAM[page][king->KRAMRA & 0x3FFFF]; + + #ifdef WANT_DEBUGGER + if(KRAMReadBPE) + PCFXDBG_CheckBP(BPOINT_AUX_READ, (king->KRAMRA & 0x3FFFF) | (page ? 0x40000 : 0), 1); + #endif + + king->KRAMRA = (king->KRAMRA &~ 0x1FFFF) | ((king->KRAMRA + inc_amount) & 0x1FFFF); + } + break; + + case 0x0F: ret = king->PageSetting; + break; + + case 0x10: ret = REGGETHW(king->bgmode, msh); + break; + + case 0x15: ret = king->MPROGControl; + break; + + //case 0x40: break; // Super Power League FX reads this, but I think it's write-only. + + case 0x53: + { + ret = king->ADPCMStatus[0] | (king->ADPCMStatus[1] << 2); + + king->ADPCMStatus[0] = king->ADPCMStatus[1] = 0; + king->ADPCMIRQPending = 0; + + RedoKINGIRQCheck(); + + ADPCMDBG("Status read: %02x\n", ret); + } + break; + } + break; + + } + + PCFX_SetEvent(PCFX_EVENT_KING, timestamp + CalcNextExternalEvent(0x4FFFFFFF)); // TODO: Optimize this to only be called when necessary. + + return(ret); +} + +void KING_Write8(const v810_timestamp_t timestamp, uint32 A, uint8 V) +{ + KING_Write16(timestamp, A & 0x706, V << ((A & 1) ? 8 : 0)); +} + +static INLINE void SCSI_Reg0_Write(const v810_timestamp_t timestamp, uint8 V, bool delay_run = 0) +{ + king->Reg00 = V; + SCSICD_SetDB(V); + + KINGDBG("WriteDB: %02x\n", V); + + if(!delay_run) + { + scsicd_ne = 1; //SCSICD_Run(timestamp); + } +} + +static INLINE void SCSI_Reg2_Write(const v810_timestamp_t timestamp, uint8 V, bool delay_run = 0) +{ + KINGDBG("SCSI Mode: %04x\n", V); + + /* SCSI Mode Register + D0 = SED: When using with sequential DMA mode, you use. + (It sets the normal DMA mode time to "0".) + Sequential DMA, the number of transfer data bytes which are set to the SCSI device (m) HuC6272 (REG.A) the number + of transfer bytes (n) it sets more largely, abbreviates the status message command phase after the n byte + transferring and being something which makes the transfer after the n + 1 byte possible, it is possible to + increase the transfer performance from the slow SCSI device of CD-ROM and the like. + Sequential DMA cannot use with imitation DMA. When this bit is designated as 1, because -ACK the signal + mandatorily ãƒã‚²ãƒ¼ãƒˆ it is done, other than the stipulated sequence please do not use. + + D1 = DMA Mode: + When using the SCSI control section with normal DMA mode, "1" is set. + */ + if(!(V & 0x2) && (king->Reg02 & 0x2)) + { + + { // HACK(probably) + king->CDInterrupt = FALSE; + RedoKINGIRQCheck(); + } + + SCSICD_SetACK(0); + + if(!delay_run) + { + scsicd_ne = 1; //SCSICD_Run(timestamp); + } + king->DRQ = FALSE; + + king->dma_receive_active = FALSE; + king->dma_send_active = FALSE; + king->dma_cycle_counter = 0x7FFFFFFF; + } + + king->Reg02 = V; +} + +static INLINE void SCSI_Reg3_Write(const v810_timestamp_t timestamp, uint8 V, bool delay_run = 0) +{ + KINGDBG("Set phase match SCSI bus bits: IO: %d, CD: %d, MSG: %d\n", (int)(bool)(V & 1), (int)(bool)(V & 2), (int)(bool)(V & 4)); + king->Reg03 = V & 0x7; + + if(!delay_run) + { + scsicd_ne = 1; //SCSICD_Run(timestamp); + } +} + +void KING_Write16(const v810_timestamp_t timestamp, uint32 A, uint16 V) +{ + int msh = A & 0x2; + + //printf("Write16: %08x %04x\n", A, V); + + + if(!(A & 0x4)) + { + if(!msh) + king->AR = V & 0x7F; + } + else + { + //if(king->AR != 0x0E) + // printf("KING: %02x %04x, %d\n", king->AR, V, fx_vce.raster_counter); + KING_Update(timestamp); + + if(king->AR >= 0x50 && king->AR <= 0x5E) + { + //ADPCMDBG("Write: %02x(%d), %04x", king->AR, msh, V); + } + + switch(king->AR) + { + default: + KINGDBG("Unknown 16-bit register write: %02x %04x %d\n", king->AR, V, msh); + break; + + case 0x00: if(king->Reg01 & 0x80) + break; + + if(!msh) + { + SCSI_Reg0_Write(timestamp, V); + } + break; + + case 0x01: if(!msh) + { + KINGDBG("Set SCSI BUS bits; Assert DB: %d, ATN: %d, SEL: %d, ACK: %d, RST: %d, %02x\n", + (int)(bool)(V & 1), (int)(bool)(V & 2), (int)(bool)(V & 4), + (int)(bool)(V & 0x10), (int)(bool)(V &0x80), SCSICD_GetDB()); + + if(V & 0x80) // RST, silly KING, resets SCSI internal control registers too! + { + if(!(king->Reg01 & 0x80)) + { + SCSI_Reg0_Write(timestamp, 0, TRUE); + SCSI_Reg2_Write(timestamp, 0, TRUE); + SCSI_Reg3_Write(timestamp, 0, TRUE); + king->data_cache = 0x00; + + //king->CDInterrupt = true; + //RedoKINGIRQCheck(); + //puts("KING RST IRQ"); + } + + king->Reg01 = V & 0x80; // Only this bit remains...how lonely. + } + else + { + king->Reg01 = V & (1 | 2 | 4 | 0x10 | 0x80); + + SCSICD_SetATN(V & 2); + SCSICD_SetSEL(V & 4); + SCSICD_SetACK(V & 0x10); + } + SCSICD_SetRST(V & 0x80); + scsicd_ne = 1; + } + break; + + case 0x02: if(king->Reg01 & 0x80) + break; + + if(!msh) + { + SCSI_Reg2_Write(timestamp, V); + } + break; + + case 0x03: if(king->Reg01 & 0x80) + break; + + if(!msh) + { + SCSI_Reg3_Write(timestamp, V); + } + break; + + case 0x05: if(king->Reg01 & 0x80) + break; + + if(!msh) // Start DMA target receive + { + KINGDBG("DMA target receive: %04x, %d\n", V, msh); + king->dma_receive_active = FALSE; + king->dma_send_active = TRUE; + king->DRQ = TRUE; + //StartKingMagic(); + king->dma_cycle_counter = KING_MAGIC_INTERVAL; + } + else + { + if(king->dma_send_active && king->DRQ) + { + //KINGDBG("%02x\n", V); + king->data_cache = V; + king->DRQ = FALSE; + } + } + break; + + case 0x06: break; // Not used for writes? + + case 0x07: if(king->Reg01 & 0x80) + break; + + KINGDBG("Start DMA initiator receive: %04x\n", V); + + if(king->Reg02 & 0x2) + { + king->dma_receive_active = TRUE; + king->dma_send_active = FALSE; + //StartKingMagic(); + king->dma_cycle_counter = KING_MAGIC_INTERVAL; + } + break; + + case 0x08: // Sub-channel control + KINGDBG("Sub-channel control: %02x\n", V); + + king->SubChannelControl = V & 0x3; + king->SubChannelInterrupt = FALSE; + RedoKINGIRQCheck(); + break; + + case 0x09: REGSETHW(king->DMATransferAddr, V, msh); king->DMATransferAddr &= 0x3FFFF; break; + case 0x0A: REGSETHW(king->DMATransferSize, V, msh); king->DMATransferSize &= 0x3FFFE; king->DMATransferFlipFlop = 0; break; + case 0x0B: REGSETHW(king->DMAStatus, V, msh); + king->DMAStatus &= 0x3; + king->DMAInterrupt = 0; + RedoKINGIRQCheck(); + + king->DMATransferFlipFlop = 0; + + KINGDBG("SCSI DMA: %04x, dest=%06x, page=%d, size=%06x(16-bit words)\n", V, king->DMATransferAddr, king->PageSetting & 1, king->DMATransferSize >> 1); + + #ifdef WANT_DEBUGGER + if(KINGLog) + { + //if(V & 1) + // KINGLog("KING", "SCSI DMA: dest=%06x, page=%d, size=%06x(16-bit words)", king->DMATransferAddr, king->PageSetting & 1, king->DMATransferSize >> 1); + } + #endif + break; + case 0x0C: REGSETHW(king->KRAMRA, V, msh); break; + case 0x0D: REGSETHW(king->KRAMWA, V, msh); break; + case 0x0E: + { + unsigned int page = (king->KRAMWA & 0x80000000) ? 1 : 0; + int32 inc_amount = ((int32)((king->KRAMWA & (0x3FF << 18)) << 4)) >> 22; // Convert from 10-bit signed 2's complement + + #ifdef WANT_DEBUGGER + if(KRAMWriteBPE) + PCFXDBG_CheckBP(BPOINT_AUX_WRITE, (king->KRAMWA & 0x3FFFF) | (page ? 0x40000 : 0), 1); + #endif + + king->KRAM[page][king->KRAMWA & 0x3FFFF] = V; + king->KRAMWA = (king->KRAMWA &~ 0x1FFFF) | ((king->KRAMWA + inc_amount) & 0x1FFFF); + } + break; + + + // Page settings(0/1) for BG, DMA, ADPCM, and RAINBOW transfers. + case 0x0F: REGSETHW(king->PageSetting, V, msh); + RecalcKRAMPagePtrs(); + break; + + + // Background Modes + case 0x10: REGSETHW(king->bgmode, V, msh); + break; + + + // Background priorities and affine transform master enable. + case 0x12: if(!msh) + { + king->priority = V; + if(king->priority & ~0x1FFF) + { + KING_UNDEF("Invalid priority bits set: %04x\n", king->priority); + } + } + break; + + + // Microprogram Address + case 0x13: if(!msh) + { + king->MPROGAddress = V & 0xF; + } + break; + + + // Microprogram Data Port + case 0x14: if(!msh) + { + king->MPROGData[king->MPROGAddress] = V; + king->MPROGAddress = (king->MPROGAddress + 1) & 0xF; + } + break; + + case 0x15: REGSETHW(king->MPROGControl, V, msh); king->MPROGControl &= 0x1; break; + + case 0x16: REGSETHW(king->BGScrollMode, V, msh); king->BGScrollMode &= 0xF; break; + + case 0x20: REGSETHW(king->BGBATAddr[0], V, msh); break; + case 0x21: REGSETHW(king->BGCGAddr[0], V, msh); break; + case 0x22: REGSETHW(king->BG0SubBATAddr, V, msh); break; + case 0x23: REGSETHW(king->BG0SubCGAddr, V, msh); break; + + case 0x24: REGSETHW(king->BGBATAddr[1], V, msh); break; + case 0x25: REGSETHW(king->BGCGAddr[1], V, msh); break; + case 0x28: REGSETHW(king->BGBATAddr[2], V, msh); break; + case 0x29: REGSETHW(king->BGCGAddr[2], V, msh); break; + case 0x2A: REGSETHW(king->BGBATAddr[3], V, msh); break; + case 0x2B: REGSETHW(king->BGCGAddr[3], V, msh); break; + + case 0x2C: REGSETHW(king->BGSize[0], V, msh); break; + case 0x2D: REGSETHW(king->BGSize[1], V, msh); king->BGSize[1] &= 0x00FF; break; + case 0x2E: REGSETHW(king->BGSize[2], V, msh); king->BGSize[2] &= 0x00FF; break; + case 0x2F: REGSETHW(king->BGSize[3], V, msh); king->BGSize[3] &= 0x00FF; break; + + case 0x30: REGSETHW(king->BGXScroll[0], V, msh); king->BGXScroll[0] &= 0x7FF; break; + case 0x31: REGSETHW(king->BGYScroll[0], V, msh); king->BGYScroll[0] &= 0x7FF; break; + + case 0x32: REGSETHW(king->BGXScroll[1], V, msh); king->BGXScroll[1] &= 0x3FF; break; + case 0x33: REGSETHW(king->BGYScroll[1], V, msh); king->BGYScroll[1] &= 0x3FF; break; + + case 0x34: REGSETHW(king->BGXScroll[2], V, msh); king->BGXScroll[2] &= 0x3FF; break; + case 0x35: REGSETHW(king->BGYScroll[2], V, msh); king->BGYScroll[2] &= 0x3FF; break; + + case 0x36: REGSETHW(king->BGXScroll[3], V, msh); king->BGXScroll[3] &= 0x3FF; break; + case 0x37: REGSETHW(king->BGYScroll[3], V, msh); king->BGYScroll[3] &= 0x3FF; break; + + + case 0x38: REGSETHW(king->BGAffinA, V, msh); break; + case 0x39: REGSETHW(king->BGAffinB, V, msh); break; + case 0x3a: REGSETHW(king->BGAffinC, V, msh); break; + case 0x3b: REGSETHW(king->BGAffinD, V, msh); break; + case 0x3c: REGSETHW(king->BGAffinCenterX, V, msh); break; + case 0x3d: REGSETHW(king->BGAffinCenterY, V, msh); break; + + + case 0x40: // ------IE + // I = 1, interrupt enable?? + // E = 1, rainbow transfer enable + if(!msh) + { + king->RAINBOWTransferControl = V & 0x3; + if(!(V & 1)) + { + //if(king->RAINBOWBusyCount || king->RAINBOWBlockCount) + // puts("RAINBOW transfer reset"); + // Not sure if this is completely correct or not. Test cases: "Tonari no Princess Rolfee", (others?) + //king->RAINBOWBusyCount = 0; + //king->RAINBOWBlockCount = 0; + //RAINBOW_ForceTransferReset(); + king->RAINBOWBlockCount = 0; + } + } + king->RasterIRQPending = FALSE; + RedoKINGIRQCheck(); + //printf("Transfer Control: %d, %08x\n", fx_vce.raster_counter, king->RAINBOWTransferControl); + break; + + // Rainbow transfer address + case 0x41: REGSETHW(king->RAINBOWKRAMA, V, msh); + king->RAINBOWKRAMA &= 0x3FFFF; + //printf("KRAM Transfer Addr: %d, %08x\n", fx_vce.raster_counter, king->RAINBOWKRAMA); + break; + + // 0-262 + case 0x42: if(!msh) + { + king->RAINBOWTransferStartPosition = V & 0x1FF; + //fprintf(stderr, "%d\n", king->RAINBOWTransferStartPosition); + //printf("RAINBOW Start Line: %d, %08x\n", fx_vce.raster_counter, king->RAINBOWTransferStartPosition); + } + break; + + case 0x43: REGSETHW(king->RAINBOWTransferBlockCount, V, msh); + king->RAINBOWTransferBlockCount &= 0x1F; + //printf("KRAM Transfer Block Count: %d, %08x\n", fx_vce.raster_counter, king->RAINBOWTransferBlockCount); + break; + + // Raster IRQ line + case 0x44: if(!msh) + { + king->RasterIRQLine = V & 0x1FF; + //printf("Raster IRQ scanline: %d, %08x\n", fx_vce.raster_counter, king->RasterIRQLine); + } + break; + + case 0x50: + if(!msh) + { + for(int ch = 0; ch < 2; ch++) + { + if(!(king->ADPCMControl & (1 << ch)) && (V & (1 << ch))) + { + king->ADPCMPlayAddress[ch] = king->ADPCMSAL[ch] * 256; + } + } + king->ADPCMControl = V; + RedoKINGIRQCheck(); + SoundBox_SetKINGADPCMControl(king->ADPCMControl); + } + break; + + case 0x51: REGSETHW(king->ADPCMBufferMode[0], V, msh); + RedoKINGIRQCheck(); + break; + + case 0x52: REGSETHW(king->ADPCMBufferMode[1], V, msh); + RedoKINGIRQCheck(); + break; + + case 0x58: REGSETHW(king->ADPCMSAL[0], V, msh); king->ADPCMSAL[0] &= 0x3FF; break; + case 0x59: REGSETHW(king->ADPCMEndAddress[0], V, msh); king->ADPCMEndAddress[0] &= 0x3FFFF; break; + case 0x5A: REGSETHW(king->ADPCMIntermediateAddress[0], V, msh); king->ADPCMIntermediateAddress[0] &= 0xFFF; break; + + case 0x5C: REGSETHW(king->ADPCMSAL[1], V, msh); king->ADPCMSAL[1] &= 0x3FF; break; + case 0x5D: REGSETHW(king->ADPCMEndAddress[1], V, msh); king->ADPCMEndAddress[1] &= 0x3FFFF; break; + case 0x5E: REGSETHW(king->ADPCMIntermediateAddress[1], V, msh); king->ADPCMIntermediateAddress[1] &= 0xFFF; break; + + + case 0x61: if(king->KRAM_Mode ^ V) + { + KINGDBG("KRAM Mode Change To: %02x\n", V & 1); + king->KRAM_Mode = V & 0x1; + } + break; + } + + PCFX_SetEvent(PCFX_EVENT_KING, timestamp + CalcNextExternalEvent(0x4FFFFFFF)); // TODO: Optimize this to only be called when necessary. + } +} + +uint16 KING_GetADPCMHalfWord(int ch) +{ + int page = (king->PageSetting & 0x0100) ? 1 : 0; + uint16 ret = king->KRAM[page][king->ADPCMPlayAddress[ch] & 0x3FFFF]; + + king->ADPCMPlayAddress[ch] = (king->ADPCMPlayAddress[ch] & 0x20000) | ((king->ADPCMPlayAddress[ch] + 1) & 0x1FFFF); + + if(!(king->ADPCMPlayAddress[ch] & 0x1FFFF)) + { + ADPCMDBG("Ch %d Wrapped", ch); + } + + if(king->ADPCMPlayAddress[ch] == (((king->ADPCMEndAddress[ch] + 1) & 0x1FFFF) | (king->ADPCMEndAddress[ch] & 0x20000)) ) + { + ADPCMDBG("Ch %d End", ch); + + if(!(king->ADPCMBufferMode[ch] & 1)) + { + king->ADPCMControl &= ~(1 << ch); + SoundBox_SetKINGADPCMControl(king->ADPCMControl); + } + else + { + king->ADPCMPlayAddress[ch] = king->ADPCMSAL[ch] << 8; + } + + king->ADPCMStatus[ch] |= 1; + + if(king->ADPCMBufferMode[ch] & (0x1 << 1)) + { + king->ADPCMIRQPending = TRUE; + RedoKINGIRQCheck(); + } + } + else if(king->ADPCMPlayAddress[ch] == ((uint32)king->ADPCMIntermediateAddress[ch] << 6) ) + { + ADPCMDBG("Ch %d Intermediate", ch); + king->ADPCMStatus[ch] |= 2; + + if(king->ADPCMBufferMode[ch] & (0x2 << 1)) + { + king->ADPCMIRQPending = TRUE; + RedoKINGIRQCheck(); + } + } + + return(ret); +} + +static uint32 HighDotClockWidth; +extern Blip_Buffer FXsbuf[2]; // FIXME, externals are evil! + +bool KING_Init(void) +{ + if(!(king = (king_t*)MDFN_malloc(sizeof(king_t), _("KING Data")))) + return(0); + + HighDotClockWidth = MDFN_GetSettingUI("pcfx.high_dotclock_width"); + BGLayerDisable = 0; + + BuildCMT(); + + // Build VCE priority map. + // Don't change this unless you know what you're doing! + // There may appear to be a bug in the pixel mixing + // code elsewhere, because it accesses this array like [vdc][bg][rainbow], but it's not a bug. + // This multi-dimensional array has no concept of bg, vdc, rainbow, or their orders per-se, it just + // contains priority information for 3 different layers. + + for(int bg_prio = 0; bg_prio < 8; bg_prio++) + for(int vdc_prio = 0; vdc_prio < 8; vdc_prio++) + for(int rainbow_prio = 0; rainbow_prio < 8; rainbow_prio++) + { + int bg_prio_test = bg_prio ? bg_prio : 0x10; + int vdc_prio_test = vdc_prio ? vdc_prio : 0x10; + int rainbow_prio_test = rainbow_prio ? rainbow_prio : 0x10; + + if(bg_prio_test >= 8) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][0] = 3; + else + { + if(bg_prio_test < vdc_prio_test && bg_prio_test < rainbow_prio_test) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][0] = 0; + else if(bg_prio_test > vdc_prio_test && bg_prio_test > rainbow_prio_test) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][0] = 2; + else + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][0] = 1; + } + + if(vdc_prio_test >= 8) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][1] = 3; + else + { + if(vdc_prio_test < bg_prio_test && vdc_prio_test < rainbow_prio_test) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][1] = 0; + else if(vdc_prio_test > bg_prio_test && vdc_prio_test > rainbow_prio_test) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][1] = 2; + else + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][1] = 1; + } + + if(rainbow_prio_test >= 8) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][2] = 3; + else + { + if(rainbow_prio_test < bg_prio_test && rainbow_prio_test < vdc_prio_test) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][2] = 0; + else if(rainbow_prio_test > bg_prio_test && rainbow_prio_test > vdc_prio_test) + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][2] = 2; + else + VCEPrioMap[bg_prio][vdc_prio][rainbow_prio][2] = 1; + } + } + + #ifdef WANT_DEBUGGER + ASpace_Add(KING_GetAddressSpaceBytes, KING_PutAddressSpaceBytes, "kram0", "KRAM Page 0", 19); + ASpace_Add(KING_GetAddressSpaceBytes, KING_PutAddressSpaceBytes, "kram1", "KRAM Page 1", 19); + ASpace_Add(KING_GetAddressSpaceBytes, KING_PutAddressSpaceBytes, "vdcvram0", "VDC-A VRAM", 17); + ASpace_Add(KING_GetAddressSpaceBytes, KING_PutAddressSpaceBytes, "vdcvram1", "VDC-B VRAM", 17); + ASpace_Add(KING_GetAddressSpaceBytes, KING_PutAddressSpaceBytes, "vce", "VCE Palette RAM", 10); + #endif + + SCSICD_Init(SCSICD_PCFX, 3, &FXsbuf[0], &FXsbuf[1], 153600 * MDFN_GetSettingUI("pcfx.cdspeed"), 21477273, KING_CDIRQ, KING_StuffSubchannels); + + return(1); +} + +void KING_Close(void) +{ + if(king) + { + free(king); + king = NULL; + } + SCSICD_Close(); +} + + +void KING_Reset(void) +{ + memset(&fx_vce, 0, sizeof(fx_vce)); + memset(king, 0, sizeof(king_t)); + + king->Reg00 = 0; + king->Reg01 = 0; + king->Reg02 = 0; + king->Reg03 = 0; + king->dma_receive_active = FALSE; + king->dma_send_active = FALSE; + king->dma_cycle_counter = 0x7FFFFFFF; + + + RecalcKRAMPagePtrs(); + + HPhase = HPHASE_HBLANK_PART1; + HPhaseCounter = 1; + vdc_lb_pos = 0; + + memset(vdc_linebuffers, 0, sizeof(vdc_linebuffers)); + memset(vdc_linebuffer, 0, sizeof(vdc_linebuffer)); + memset(vdc_linebuffer_yuved, 0, sizeof(vdc_linebuffer_yuved)); + memset(rainbow_linebuffer, 0, sizeof(rainbow_linebuffer)); + memset(bg_linebuffer, 0, sizeof(bg_linebuffer)); + + + king->dma_cycle_counter = 0x7FFFFFFF; + scsicd_ne = 1; // FIXME + + RedoKINGIRQCheck(); + + for(unsigned int x = 0; x < 0x200; x++) + RedoPaletteCache(x); + + DoHBlankVCECaching(); + + SoundBox_SetKINGADPCMControl(0); + + SCSICD_Power(0); // FIXME + + memset(king->KRAM, 0xFF, sizeof(king->KRAM)); +} + + +static INLINE void DRAWBG8x1_4(uint32 *target, const uint16 *cg, const uint32 *palette_ptr, const uint32 layer_or) +{ + if(*cg >> 14) target[0] = palette_ptr[(*cg >> 14)] | layer_or; + if((*cg >> 12) & 0x3) target[1] = palette_ptr[((*cg >> 12) & 0x3)] | layer_or; + if((*cg >> 10) & 0x3) target[2] = palette_ptr[((*cg >> 10) & 0x3)] | layer_or; + if((*cg >> 8) & 0x3) target[3] = palette_ptr[((*cg >> 8) & 0x3)] | layer_or; + if((*cg >> 6) & 0x3) target[4] = palette_ptr[((*cg >> 6) & 0x3)] | layer_or; + if((*cg >> 4) & 0x3) target[5] = palette_ptr[((*cg >> 4) & 0x3)] | layer_or; + if((*cg >> 2) & 0x3) target[6] = palette_ptr[((*cg >> 2) & 0x3)] | layer_or; + if((*cg >> 0) & 0x3) target[7] = palette_ptr[((*cg >> 0) & 0x3)] | layer_or; +} + +static INLINE void DRAWBG8x1_16(uint32 *target, const uint16 *cgptr, const uint32 *palette_ptr, const uint32 layer_or) +{ + if(cgptr[0] >> 12) target[0] = palette_ptr[((cgptr[0] >> 12))] | layer_or; + if((cgptr[0] >> 8) & 0xF) target[1] = palette_ptr[(((cgptr[0] >> 8) & 0xF))] | layer_or; + if((cgptr[0] >> 4) & 0xF) target[2] = palette_ptr[(((cgptr[0] >> 4) & 0xF))] | layer_or; + if((cgptr[0] >> 0) & 0xF) target[3] = palette_ptr[(((cgptr[0] >> 0) & 0xF))] | layer_or; + + if(cgptr[1] >> 12) target[4] = palette_ptr[((cgptr[1] >> 12))] | layer_or; + if((cgptr[1] >> 8) & 0xF) target[5] = palette_ptr[(((cgptr[1] >> 8) & 0xF))] | layer_or; + if((cgptr[1] >> 4) & 0xF) target[6] = palette_ptr[(((cgptr[1] >> 4) & 0xF))] | layer_or; + if((cgptr[1] >> 0) & 0xF) target[7] = palette_ptr[(((cgptr[1] >> 0) & 0xF))] | layer_or; +} + +static INLINE void DRAWBG8x1_256(uint32 *target, const uint16 *cgptr, const uint32 *palette_ptr, const uint32 layer_or) +{ + if(cgptr[0] >> 8) target[0] = palette_ptr[(cgptr[0] >> 0x8)] | layer_or; + if(cgptr[0] & 0xFF) target[1] = palette_ptr[(cgptr[0] & 0xFF)] | layer_or; + if(cgptr[1] >> 8) target[2] = palette_ptr[(cgptr[1] >> 0x8)] | layer_or; + if(cgptr[1] & 0xFF) target[3] = palette_ptr[(cgptr[1] & 0xFF)] | layer_or; + if(cgptr[2] >> 8) target[4] = palette_ptr[(cgptr[2] >> 0x8)] | layer_or; + if(cgptr[2] & 0xFF) target[5] = palette_ptr[(cgptr[2] & 0xFF)] | layer_or; + if(cgptr[3] >> 8) target[6] = palette_ptr[(cgptr[3] >> 0x8)] | layer_or; + if(cgptr[3] & 0xFF) target[7] = palette_ptr[(cgptr[3] & 0xFF)] | layer_or; +} + +static INLINE void DRAWBG8x1_64K(uint32 *target, const uint16 *cgptr, const uint32 *palette_ptr, const uint32 layer_or) +{ + if(cgptr[0] & 0xFF00) target[0] = ((cgptr[0x0] & 0x00F0) << 8) | ((cgptr[0] & 0x000F)<<4) | ((cgptr[0] & 0xFF00) << 8) | layer_or; + if(cgptr[1] & 0xFF00) target[1] = ((cgptr[0x1] & 0x00F0) << 8) | ((cgptr[1] & 0x000F)<<4) | ((cgptr[1] & 0xFF00) << 8) | layer_or; + if(cgptr[2] & 0xFF00) target[2] = ((cgptr[0x2] & 0x00F0) << 8) | ((cgptr[2] & 0x000F)<<4) | ((cgptr[2] & 0xFF00) << 8) | layer_or; + if(cgptr[3] & 0xFF00) target[3] = ((cgptr[0x3] & 0x00F0) << 8) | ((cgptr[3] & 0x000F)<<4) | ((cgptr[3] & 0xFF00) << 8) | layer_or; + if(cgptr[4] & 0xFF00) target[4] = ((cgptr[0x4] & 0x00F0) << 8) | ((cgptr[4] & 0x000F)<<4) | ((cgptr[4] & 0xFF00) << 8) | layer_or; + if(cgptr[5] & 0xFF00) target[5] = ((cgptr[0x5] & 0x00F0) << 8) | ((cgptr[5] & 0x000F)<<4) | ((cgptr[5] & 0xFF00) << 8) | layer_or; + if(cgptr[6] & 0xFF00) target[6] = ((cgptr[0x6] & 0x00F0) << 8) | ((cgptr[6] & 0x000F)<<4) | ((cgptr[6] & 0xFF00) << 8) | layer_or; + if(cgptr[7] & 0xFF00) target[7] = ((cgptr[0x7] & 0x00F0) << 8) | ((cgptr[7] & 0x000F)<<4) | ((cgptr[7] & 0xFF00) << 8) | layer_or; +} + +static INLINE void DRAWBG8x1_16M(uint32 *target, const uint16 *cgptr, const uint32 *palette_ptr, const uint32 layer_or) +{ + if(cgptr[0] >> 8) target[0] = ((cgptr[0x0] & 0xFF00) << 8) | (cgptr[1] & 0xFF00) | (cgptr[1] & 0xFF) | layer_or; + if(cgptr[0] & 0xFF) target[1] = ((cgptr[0x0] & 0x00FF) << 16) | (cgptr[1] & 0xFF00) | (cgptr[1] & 0xFF) | layer_or; + if(cgptr[2] >> 8) target[2] = ((cgptr[0x2] & 0xFF00) << 8) | (cgptr[3] & 0xFF00) | (cgptr[3] & 0xFF) | layer_or; + if(cgptr[2] & 0xFF) target[3] = ((cgptr[0x2] & 0x00FF) << 16) | (cgptr[3] & 0xFF00) | (cgptr[3] & 0xFF) | layer_or; + if(cgptr[4] >> 8) target[4] = ((cgptr[0x4] & 0xFF00) << 8) | (cgptr[5] & 0xFF00) | (cgptr[5] & 0xFF) | layer_or; + if(cgptr[4] & 0xFF) target[5] = ((cgptr[0x4] & 0x00FF) << 16) | (cgptr[5] & 0xFF00) | (cgptr[5] & 0xFF) | layer_or; + if(cgptr[6] >> 8) target[6] = ((cgptr[0x6] & 0xFF00) << 8) | (cgptr[7] & 0xFF00) | (cgptr[7] & 0xFF) | layer_or; + if(cgptr[6] & 0xFF) target[7] = ((cgptr[0x6] & 0x00FF) << 16) | (cgptr[7] & 0xFF00) | (cgptr[7] & 0xFF) | layer_or; +} + +static bool bgmode_warning = 0; // Debug + +#include "king-bgfast.inc" + +static INLINE int32 max(int32 a, int32 b) +{ + if(a > b) + return(a); + + return(b); +} + +static void DrawBG(uint32 *target, int n, bool sub) +{ + // TODO: Verify behavior when size is out of bounds on BG1-3. + // With BG0 at least, it behaves as if the size is at its minimum, with caveats(TO BE INVESTIGATED). + const uint32 bg_ss_table[2][0x10] = + { + { 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0x3, 0x3, 0x3, 0x3, 0x3 }, + { 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3 }, + }; + + const bool bg_ss_invalid_table[2][0x10] = + { + { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 }, + { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 }, + }; + +#if 0 + const uint32 cg_per_mode[0x8] = + { + 0, // Invalid mode + 1, // 2-bit mode + 2, // 4-bit mode + 4, // 8-bit mode + 8, // 16-bit mode + 8, // 16-bit mode + 8, // 16-bit mode + 8, // 16-bit mode + }; +#endif + const uint32 layer_or = (LAYER_BG0 + n) << 28; + + const uint32 palette_offset = ((fx_vce.palette_offset[1 + (n >> 1)] >> ((n & 1) ? 8 : 0)) << 1) & 0x1FF; + const uint32 *palette_ptr = &vce_rendercache.palette_table_cache[palette_offset]; + const uint32 bat_and_cg_page = (king->PageSetting & 0x0010) ? 1 : 0; + + const uint16 bgmode = (king->bgmode >> (n * 4)) & 0xF; + const bool endless = (king->BGScrollMode >> n) & 0x1; + const uint32 XScroll = king->BGXScroll[n]; + const uint32 YScroll = king->BGYScroll[n]; + + const uint32 YOffset = (YScroll + (fx_vce.raster_counter - 22)) & 0xFFFF; + + const uint32 bat_offset = king->BGBATAddr[n] * 1024; + const uint32 bat_sub_offset = n ? bat_offset : (king->BG0SubBATAddr * 1024); + const uint16 *bat_base = &king->KRAM[bat_and_cg_page][bat_offset & 0x20000]; + const uint16 *bat_sub_base = &king->KRAM[bat_and_cg_page][bat_sub_offset & 0x20000]; + + const uint32 cg_offset = king->BGCGAddr[n] * 1024; + const uint32 cg_sub_offset = n ? cg_offset : (king->BG0SubCGAddr * 1024); + const uint16 *cg_base = &king->KRAM[bat_and_cg_page][cg_offset & 0x20000]; + const uint16 *cg_sub_base = &king->KRAM[bat_and_cg_page][cg_sub_offset & 0x20000]; + + const int bat_bitsize_mask = (n ? 0x3FF : 0x7FF) >> 3; + + const uint32 bat_width_shift = bg_ss_table[(bool)n][(king->BGSize[n] & 0xF0) >> 4]; + const bool bat_width_invalid = bg_ss_invalid_table[(bool)n][(king->BGSize[n] & 0xF0) >> 4]; + const uint32 bat_width = (1 << bat_width_shift) >> 3; + + const int32 bat_height_shift = bg_ss_table[(bool)n][king->BGSize[n] & 0x0F]; + //const bool bat_height_invalid = bg_ss_invalid_table[(bool)n][king->BGSize[n] & 0x0F]; + const int32 bat_height = (1 << bat_height_shift) >> 3; + + const bool bat_sub_width_invalid = n ? bat_width_invalid : bg_ss_invalid_table[(bool)n][(king->BGSize[n] & 0xF000) >> 12]; + const uint32 bat_sub_width_shift = n ? bat_width_shift : bg_ss_table[(bool)n][(king->BGSize[n] & 0xF000) >> 12]; + const uint32 bat_sub_width = (1 << bat_sub_width_shift) >> 3; + const uint32 bat_sub_width_mask = bat_sub_width - 1; + const uint32 bat_sub_width_test = endless ? (bat_bitsize_mask + 1) : max(bat_width, bat_sub_width); + + const int32 bat_sub_height_shift = n ? bat_height_shift : bg_ss_table[(bool)n][(king->BGSize[n] & 0x0F00) >> 8]; + const int32 bat_sub_height = (1 << bat_sub_height_shift) >> 3; + const int32 bat_sub_height_mask = bat_sub_height - 1; + const int32 bat_sub_height_test = endless ? (bat_bitsize_mask + 1) : max(bat_height, bat_sub_height); + + uint16 cg_mask[8]; + uint16 cg_remap[8]; + bool cg_ofbat[8]; + + uint16 cg_sub_mask[8]; + uint16 cg_sub_remap[8]; + bool cg_sub_ofbat[8]; + + bool BATFetchCycle = FALSE; + bool BATSubFetchCycle = FALSE; + + const bool rotate_mode = (n == 0) && (king->priority & 0x1000); + + // If the bg mode is invalid, don't draw this layer, duuhhhh + if(!(bgmode & 0x7)) + return; + + if((bgmode & 0x7) >= 6) + { + if(!bgmode_warning) + { + printf("Unsupported KING BG Mode for KING BG %d: %02x\n", n, bgmode); + bgmode_warning = TRUE; + } + return; + } + + memset(cg_mask, 0, sizeof(cg_mask)); + memset(cg_remap, 0, sizeof(cg_remap)); + memset(cg_ofbat, 0, sizeof(cg_ofbat)); + memset(cg_sub_mask, 0, sizeof(cg_sub_mask)); + memset(cg_sub_remap, 0, sizeof(cg_sub_remap)); + memset(cg_sub_ofbat, 0, sizeof(cg_sub_ofbat)); + + if(king->MPROGControl & 0x1) + { + int remap_thing = 0; + int remap_sub_thing = 0; + + for(int x = 0; x < 8; x++) + { + uint16 mpd; + + // Forcing CG and BAT to 0 if the affine bit != rotate_mode is not technically correct. + // If there is a mismatch, it's more likely the effective CG and BAT address for the pixel/segment + // being drawn won't be calculated correctly, likely being just the initial offsets. + + mpd = king->MPROGData[((cg_offset & 0x20000) ? 0x8 : 0x0) + x]; + if(((mpd >> 6) & 0x3) == n && !(mpd & 0x100) && !(mpd & 0x010)) + { + cg_mask[remap_thing] = 0xFFFF; + cg_remap[remap_thing] = mpd & 0x7; + cg_ofbat[remap_thing] = mpd & 0x8; + + if((bool)(mpd & 0x20) != rotate_mode) + { + KINGDBG("Affine bit != rotate_mode?"); + cg_mask[remap_thing] = 0; + } + remap_thing++; + } + + mpd = king->MPROGData[((cg_sub_offset & 0x20000) ? 0x8 : 0x0) + x]; + if(((mpd >> 6) & 0x3) == n && !(mpd & 0x100) && !(mpd & 0x010)) + { + cg_sub_mask[remap_sub_thing] = 0xFFFF; + cg_sub_remap[remap_sub_thing] = mpd & 0x7; + cg_sub_ofbat[remap_sub_thing] = mpd & 0x8; + + if((bool)(mpd & 0x20) != rotate_mode) + { + KINGDBG("Affine bit != rotate_mode? (SUB)"); + cg_sub_mask[remap_sub_thing] = 0; + } + remap_sub_thing++; + } + } + + for(int x = 0; x < 8; x++) + { + uint16 mpd; + + mpd = king->MPROGData[((bat_offset & 0x20000) ? 0x8 : 0x0) + x]; + if(((mpd >> 6) & 0x3) == n && !(mpd & 0x100) && (mpd & 0x010) && (bool)(mpd & 0x020) == rotate_mode) + BATFetchCycle = TRUE; + + mpd = king->MPROGData[((bat_sub_offset & 0x20000) ? 0x8 : 0x0) + x]; + if(((mpd >> 6) & 0x3) == n && !(mpd & 0x100) && (mpd & 0x010) && (bool)(mpd & 0x020) == rotate_mode) + BATSubFetchCycle = TRUE; + } + } + + int bat_y = (YOffset >> 3) & bat_bitsize_mask; + uint32 bat_x = (XScroll >> 3) & bat_bitsize_mask; + int ysmall = YOffset & 0x7; + + const uint32 bat_invalid_y_mask = bat_width_invalid ? 0 : 0xFFFFFFFF; + const uint32 bat_invalid_sub_y_mask = bat_sub_width_invalid ? 0 : 0xFFFFFFFF; + + if(rotate_mode) + target += 8; + else + target += 8 - (XScroll & 0x7); + + + { + int32 wmul = (1 << bat_width_shift), wmask = ((1 << bat_height_shift) - 1) & bat_invalid_y_mask; + int32 sexy_y_pos = (YOffset & wmask) * wmul; + + int32 wmul_sub = (1 << bat_sub_width_shift), wmask_sub = ((1 << bat_sub_height_shift) - 1) & bat_invalid_sub_y_mask; + int32 sexy_y_sub_pos = (YOffset & wmask_sub) * wmul_sub; + + + #define ROTCODE_PRE \ + const int32 bat_width_mask = endless ? (bat_width - 1) : 0xFFFF; \ + const int32 bat_height_mask = endless ? (bat_height - 1) : 0xFFFF; \ + int32 a, b, c, d; \ + int32 raw_x_coord = (int32)sign_11_to_s16(XScroll) - (int16)king->BGAffinCenterX; \ + int32 raw_y_coord = fx_vce.raster_counter + (int32)sign_11_to_s16(YScroll) - 22 - (int16)king->BGAffinCenterY; \ + int32 xaccum; \ + int32 yaccum; \ + \ + a = (int16)king->BGAffinA; \ + b = (int16)king->BGAffinB; \ + c = (int16)king->BGAffinC; \ + d = (int16)king->BGAffinD; \ + \ + xaccum = raw_x_coord * a + raw_y_coord * b; \ + yaccum = raw_y_coord * d + raw_x_coord * c; \ + xaccum += (int16)king->BGAffinCenterX << 8; \ + yaccum += (int16)king->BGAffinCenterY << 8; \ + + #define ROTCODE_LOOP_PRE \ + for(int x = 0; x < 256; x++) \ + { \ + uint16 new_x = (xaccum >> 8); \ + uint16 new_y = (yaccum >> 8); \ + const uint16 *cgptr; \ + bat_x = (new_x >> 3) & bat_width_mask; \ + bat_y = (new_y >> 3) & bat_height_mask; \ + ysmall = new_y & 0x7; + + #define ROTCODE_LOOP_POST \ + xaccum += a; \ + yaccum += c; \ + } + + if((bgmode & 0x7) == BGMODE_4 && rotate_mode) + { + ROTCODE_PRE; + + ROTCODE_LOOP_PRE; + uint32 pbn = 0; + if(bgmode & 0x8) + { + uint16 bat = bat_base[(bat_offset + (bat_x + ((bat_y << bat_width_shift) >> 3) )) & 0x1FFFF]; + pbn = ((bat >> 12) << 2); + bat &= 0x0FFF; + cgptr = &cg_base[(cg_offset + (bat * 8) + ysmall) & 0x1FFFF]; + } + else + { + cgptr = &cg_base[(cg_offset + bat_x + ((new_y & wmask) * wmul / 8)) & 0x1FFFF]; + } + uint8 ze_cg = (cgptr[0] >> ((7 - (new_x & 7)) << 1)) & 0x03; + + if(endless || (bat_x < bat_width && bat_y < bat_height)) + { + if(ze_cg) target[x] = palette_ptr[pbn + ze_cg] | layer_or; + } + ROTCODE_LOOP_POST; + } + else if((bgmode & 0x7) == BGMODE_16 && rotate_mode) + { + ROTCODE_PRE; + + ROTCODE_LOOP_PRE; + uint32 pbn = 0; + + if(bgmode & 0x8) + { + uint16 bat = bat_base[(bat_offset + (bat_x + ((bat_y << bat_width_shift) >> 3) )) & 0x1FFFF]; + pbn = ((bat >> 12) << 4); + bat &= 0x0FFF; + cgptr = &cg_base[(cg_offset + (bat * 16) + ysmall * 2) & 0x1FFFF]; + } + else + { + cgptr = &cg_base[(cg_offset + (bat_x * 2) + ((new_y & wmask) * wmul / 4)) & 0x1FFFF]; + } + uint8 ze_cg = (cgptr[(new_x >> 2) & 0x1] >> ((3 - (new_x & 3)) << 2)) & 0x0F; + + if(endless || (bat_x < bat_width && bat_y < bat_height)) + { + if(ze_cg) target[x] = palette_ptr[pbn + ze_cg] | layer_or; + } + ROTCODE_LOOP_POST; + } + else if((bgmode & 0x7) == BGMODE_256 && rotate_mode) + { + ROTCODE_PRE; + + ROTCODE_LOOP_PRE; + if(bgmode & 0x8) + { + uint16 bat = bat_base[(bat_offset + (bat_x + ((bat_y << bat_width_shift) >> 3) )) & 0x1FFFF]; + cgptr = &cg_base[(cg_offset + (bat * 32) + ysmall * 4) & 0x1FFFF]; + } + else + { + cgptr = &cg_base[(cg_offset + (bat_x * 4) + ((new_y & wmask) * wmul / 2)) & 0x1FFFF]; + } + uint8 ze_cg = cgptr[(new_x >> 1) & 0x3] >> (((new_x & 1) ^ 1) << 3); + + if(endless || (bat_x < bat_width && bat_y < bat_height)) + { + if(ze_cg) target[x] = palette_ptr[ze_cg] | layer_or; + } + ROTCODE_LOOP_POST; + } + else if((bgmode & 0x7) == BGMODE_64K && rotate_mode) + { + ROTCODE_PRE; + ROTCODE_LOOP_PRE; + if(bgmode & 0x8) + { + uint16 bat = bat_base[(bat_offset + (bat_x + ((bat_y << bat_width_shift) >> 3) )) & 0x1FFFF]; + cgptr = &cg_base[(cg_offset + (bat * 64) + ysmall * 8) & 0x1FFFF]; + } + else + { + cgptr = &cg_base[(cg_offset + (bat_x * 8) + ((new_y & wmask) * wmul)) & 0x1FFFF]; + } + uint16 ze_cg = cgptr[new_x & 0x7]; + + if(endless || (bat_x < bat_width && bat_y < bat_height)) + { + if(ze_cg >> 8) target[x] = ((ze_cg & 0x00F0) << 8) | ((ze_cg & 0x000F)<<4) | ((ze_cg & 0xFF00) << 8) | layer_or; + } + ROTCODE_LOOP_POST; + } + else switch(bgmode & 0x7) + { +#define DRAWBG8x1_MAC(cg_needed, blit_suffix, pbn_arg) \ + for(int x = 0; x < 256 + 8; x+= 8) \ + { \ + if(bat_x < bat_width && bat_y < bat_height) \ + { \ + uint32 eff_bat_loc = bat_offset; \ + uint16 bat = 0; \ + uint16 pbn = 0; \ + const uint16 *cgptr[2]; \ + uint16 cg[cg_needed]; \ + \ + if(bgmode & 0x8) \ + eff_bat_loc += bat_x + (((bat_y & bat_invalid_y_mask) << bat_width_shift) >> 3); \ + \ + eff_bat_loc &= 0x1FFFF; \ + \ + if(BATFetchCycle) \ + bat = bat_base[eff_bat_loc]; \ + \ + if(bgmode & 0x08) \ + pbn = bat >> 12; \ + bat &= 0xFFF; \ + \ + cgptr[0] = &cg_base[(cg_offset + (bat_x * cg_needed) + sexy_y_pos) \ + & 0x1FFFF]; \ + cgptr[1] = &cg_base[(cg_offset + (bat * 8 * cg_needed) + ysmall * cg_needed) \ + & 0x1FFFF]; \ + \ + for(int cow = 0; cow < cg_needed; cow++) \ + cg[cow] = cgptr[cg_ofbat[cow]][cg_remap[cow]] & cg_mask[cow]; \ + \ + DRAWBG8x1_##blit_suffix(target + x, cg, palette_ptr + pbn_arg, layer_or); \ + } \ + else if(bat_x < bat_sub_width_test && bat_y < bat_sub_height_test) \ + { \ + uint32 eff_bat_loc = bat_sub_offset; \ + uint16 bat = 0; \ + uint16 pbn = 0; \ + const uint16 *cgptr[2]; \ + uint16 cg[cg_needed]; \ + \ + if(bgmode & 0x8) \ + eff_bat_loc += (bat_x & bat_sub_width_mask) + (((bat_y & bat_invalid_sub_y_mask & bat_sub_height_mask) << bat_sub_width_shift) >> 3); \ + \ + eff_bat_loc &= 0x1FFFF; \ + \ + if(BATSubFetchCycle) \ + bat = bat_sub_base[eff_bat_loc]; \ + \ + if(bgmode & 0x08) \ + pbn = bat >> 12; \ + bat &= 0xFFF; \ + \ + cgptr[0] = &cg_sub_base[(cg_sub_offset + ((bat_x & bat_sub_width_mask) * cg_needed) + sexy_y_sub_pos) \ + & 0x1FFFF]; \ + cgptr[1] = &cg_sub_base[(cg_sub_offset + (bat * 8 * cg_needed) + ysmall * cg_needed) \ + & 0x1FFFF]; \ + \ + for(int cow = 0; cow < cg_needed; cow++) \ + cg[cow] = cgptr[cg_sub_ofbat[cow]][cg_sub_remap[cow]] & cg_sub_mask[cow]; \ + \ + DRAWBG8x1_##blit_suffix(target + x, cg, palette_ptr + pbn_arg, layer_or); \ + } \ + bat_x = (bat_x + 1) & bat_bitsize_mask; \ + } + + + case 0x01: // 4 color, 1/4 byte per pixel :b + sexy_y_pos >>= 3; + sexy_y_sub_pos >>= 3; + + DRAWBG8x1_MAC(1, 4, (pbn << 2)); + break; + + case 0x02: // 16 color, 1/2 byte per pixel + sexy_y_pos >>= 2; + sexy_y_sub_pos >>= 2; + + DRAWBG8x1_MAC(2, 16, (pbn << 4)); + break; + + case 0x03: // 256 color, 1 byte per pixel palettized - OK + sexy_y_pos >>= 1; + sexy_y_sub_pos >>= 1; + + DRAWBG8x1_MAC(4, 256, 0); + break; + + case 0x04: // 64K color, 2 bytes per pixel - OK + DRAWBG8x1_MAC(8, 64K, 0); + break; + + case 0x05: // 16M color, 2 bytes per pixel - OK + DRAWBG8x1_MAC(8, 16M, 0); + break; + #if 0 + case BGMODE_64K_EXTDOT: + break; + + case BGMODE_16M_EXTDOT: + { + uint32 fat_bat = ((YOffset & ((1 << bat_height_shift) - 1)) << bat_width_shift) + (((XScroll & ~ 7) & ((1 << bat_width_shift) - 1)); + } + break; + #endif + } + } +} + +static int16 UVLUT[65536][3]; +static uint8 RGBDeflower[1152]; // 0 is at 384 +static uint32 CbCrLUT[65536]; + +static void RebuildUVLUT(const MDFN_PixelFormat &format) +{ + for(int ur = 0; ur < 256; ur++) + { + for(int vr = 0; vr < 256; vr++) + { + int r, g, b; + int u, v; + + u = ur - 128; + v = vr - 128; + + // FIXME: Use lrint() ? + r = (int)(0 - 0.000039457070707 * u + 1.139827967171717 * v); + g = (int)(0 - 0.394610164141414 * u - 0.580500315656566 * v); + b = (int)(0 + 2.031999684343434 * u - 0.000481376262626 * v); + + UVLUT[vr + ur * 256][0] = r; + UVLUT[vr + ur * 256][1] = g; + UVLUT[vr + ur * 256][2] = b; + + CbCrLUT[vr + ur * 256] = clamp_to_u8(128 + ((r * -9699 + g * -19071 + b * 28770) >> 16)) << format.Cbshift; + CbCrLUT[vr + ur * 256] |= clamp_to_u8(128 + ((r * 28770 + g * -24117 + b * -4653) >> 16)) << format.Crshift; + + //printf("%d %d %d, %08x\n", r, g, b, CbCrLUT[vr + ur * 256]); + } + } + for(int x = 0; x < 1152; x++) + { + if(x < 384) RGBDeflower[x] = 0; + else if(x > (384 + 255)) RGBDeflower[x] = 255; + else + RGBDeflower[x] = x - 384; + } +} + +// FIXME +static int rs, gs, bs; + +static uint32 INLINE YUV888_TO_RGB888(uint32 yuv) +{ + int32 r, g, b; + uint8 y = yuv >> 16; + + r = y + UVLUT[yuv & 0xFFFF][0]; + g = y + UVLUT[yuv & 0xFFFF][1]; + b = y + UVLUT[yuv & 0xFFFF][2]; + + r = clamp_to_u8(r); + g = clamp_to_u8(g); + b = clamp_to_u8(b); + + return((r << rs) | (g << gs) | (b << bs)); +} + +static uint32 INLINE YUV888_TO_YCbCr888(uint32 yuv) +{ + uint32 y; + + y = 16 + ((((yuv >> 16) & 0xFF) * 220) >> 8); + + return(y | CbCrLUT[yuv & 0xFFFF]); +} + +// FIXME: +//static unsigned int lines_per_frame; //= (fx_vce.picture_mode & 0x1) ? 262 : 263; +static VDC **vdc_chips; +static MDFN_Surface *surface; +static MDFN_Rect *DisplayRect; +static MDFN_Rect *LineWidths; +static int skip; + +void KING_StartFrame(VDC **arg_vdc_chips, EmulateSpecStruct *espec) //MDFN_Surface *arg_surface, MDFN_Rect *arg_DisplayRect, MDFN_Rect *arg_LineWidths, int arg_skip) +{ + ::vdc_chips = arg_vdc_chips; + ::surface = espec->surface; + ::DisplayRect = &espec->DisplayRect; + ::LineWidths = espec->LineWidths; + ::skip = espec->skip; + + //MDFN_DispMessage("P0:%06x P1:%06x; I0: %06x I1: %06x", king->ADPCMPlayAddress[0], king->ADPCMPlayAddress[1], king->ADPCMIntermediateAddress[0] << 6, king->ADPCMIntermediateAddress[1] << 6); + //MDFN_DispMessage("%d %d\n", SCSICD_GetACK(), SCSICD_GetREQ()); + + // For the case of interlaced mode(clear ~0 state) + LineWidths[0].x = 0; + LineWidths[0].w = 0; + + // These 2 should be overwritten in the big loop below. + DisplayRect->x = 0; + DisplayRect->w = 256; + + DisplayRect->y = MDFN_GetSettingUI("pcfx.slstart"); + DisplayRect->h = MDFN_GetSettingUI("pcfx.slend") - DisplayRect->y + 1; + + if(fx_vce.frame_interlaced) + { + skip = false; + + espec->InterlaceOn = true; + espec->InterlaceField = fx_vce.odd_field; + DisplayRect->y *= 2; + DisplayRect->h *= 2; + } +} + +static int rb_type; +// unsigned int width = (fx_vce.picture_mode & 0x08) ? 341 : 256; + +static void DrawActive(void) +{ + rb_type = -1; + + #ifdef WANT_DEBUGGER + if(GfxDecode_Buf && GfxDecode_Line == (int32)fx_vce.raster_counter) + DoGfxDecode(); + #endif + + if(fx_vce.raster_counter == king->RAINBOWTransferStartPosition && (king->RAINBOWTransferControl & 1)) + { + king->RAINBOWStartPending = TRUE; + + //printf("Rainbow start pending: line=%d, busycount=%d, blockcount=%d\n", fx_vce.raster_counter, king->RAINBOWBusyCount, king->RAINBOWBlockCount); + + //if(fx_vce.raster_counter == 262) + // puts("MOOO"); + } + + if(fx_vce.raster_counter < 262) + { + if(king->RAINBOWBusyCount) + { + king->RAINBOWBusyCount--; + if(!king->RAINBOWBusyCount) + RAINBOW_SwapBuffers(); + } + + if(!king->RAINBOWBusyCount) + { + bool WantDecode = FALSE; + bool FirstDecode = FALSE; + + if(!king->RAINBOWBlockCount && king->RAINBOWStartPending) + { + //printf("Rainbow start real: %d %d\n", fx_vce.raster_counter, king->RAINBOWTransferBlockCount); + king->RAINBOWBlockCount = king->RAINBOWTransferBlockCount; + if(king->RAINBOWBlockCount) + { + king->RAINBOWKRAMReadPos = king->RAINBOWKRAMA << 1; + FirstDecode = TRUE; + } + } + + if(king->RAINBOWBlockCount) + { + king->RAINBOWBlockCount--; + WantDecode = TRUE; + } + + if(WantDecode) + { + king->RAINBOWBusyCount = 16; + + if(fx_vce.raster_counter == 262) + king->RAINBOWBusyCount++; + + // If we ever change the emulation time range from the current 0 through 262/263, we will need to readjust this + // statement to prevent the previous frame's skip value to mess up the current frame's graphics data, since + // RAINBOW data is delayed by 16 scanlines from when it's decoded(16 + 15 maximum delay). + RAINBOW_DecodeBlock(FirstDecode, skip && fx_vce.raster_counter < 246); + } + } + + rb_type = RAINBOW_FetchRaster(skip ? NULL : rainbow_linebuffer, LAYER_RAINBOW << 28, &vce_rendercache.palette_table_cache[((fx_vce.palette_offset[3] >> 0) & 0xFF) << 1]); + + king->RAINBOWStartPending = FALSE; + } // end if(fx_vce.raster_counter < 262) + + if(fx_vce.raster_counter >= 22 && fx_vce.raster_counter < 262) + { + if(!skip) + { + if(rb_type == 1) // YUV + { + // Only chroma key when we're not in 7.16MHz pixel mode + if(!(fx_vce.picture_mode & 0x08)) + { + const unsigned int ymin = fx_vce.ChromaKeyY & 0xFF; + const unsigned int ymax = fx_vce.ChromaKeyY >> 8; + const unsigned int umin = fx_vce.ChromaKeyU & 0xFF; + const unsigned int umax = fx_vce.ChromaKeyU >> 8; + const unsigned int vmin = fx_vce.ChromaKeyV & 0xFF; + const unsigned int vmax = fx_vce.ChromaKeyV >> 8; + + if((fx_vce.ChromaKeyY | fx_vce.ChromaKeyU | fx_vce.ChromaKeyV) == 0) + { + //puts("Opt: 0 chroma key"); + for(int x = 0; x < 256; x++) + { + if(!(rainbow_linebuffer[x] & 0xFFFFFF)) + rainbow_linebuffer[x] = 0; + } + } + else if(ymin == ymax && umin == umax && vmin == vmax) + { + const uint32 compare_color = (ymin << 16) | (umin << 8) | (vmin << 0); + + //puts("Opt: Single color chroma key"); + + for(int x = 0; x < 256; x++) + { + if((rainbow_linebuffer[x] & 0xFFFFFF) == compare_color) + rainbow_linebuffer[x] = 0; + } + } + else if(ymin <= ymax && umin <= umax && vmin <= vmax) + { + const uint32 yv_min_sub = (ymin << 16) | vmin; + const uint32 u_min_sub = umin << 8; + const uint32 yv_max_add = ((0xFF - ymax) << 16) | (0xFF - vmax); + const uint32 u_max_add = (0xFF - umax) << 8; + + for(int x = 0; x < 256; x++) + { + const uint32 pixel = rainbow_linebuffer[x]; + const uint32 yv = pixel & 0xFF00FF; + const uint32 u = pixel & 0x00FF00; + uint32 testie; + + testie = ((yv - yv_min_sub) | (yv + yv_max_add)) & 0xFF00FF00; + testie |= ((u - u_min_sub) | (u + u_max_add)) & 0x00FF00FF; + + if(!testie) + rainbow_linebuffer[x] = 0; + } + } + else + { + //puts("Opt: color keying off\n"); + } + } + } + + /* + 4 = Foremost + 1 = Hindmost + 0 = Hidden + */ + + MDFN_FastU32MemsetM8(bg_linebuffer + 8, 0, 256); + + // Only bother to draw the BGs if the microprogram is enabled. + if(king->MPROGControl & 0x1) + { + for(int prio = 1; prio <= 7; prio++) + { + for(int x = 0; x < 4; x++) + { + int thisprio = (king->priority >> (x * 3)) & 0x7; + + if(BGLayerDisable & (1 << x)) continue; + + if(thisprio == prio) + { + //if(fx_vce.raster_counter == 50) + // CanDrawBG_Fast(x); + + // TODO/FIXME: TEST MORE + if(CanDrawBG_Fast(x)) // && (rand() & 1)) + DrawBG_Fast(bg_linebuffer, x); + else + DrawBG(bg_linebuffer, x, 0); + } + } + } + } + + } // end if(!skip) + } // end if(fx_vce.raster_counter >= 22 && fx_vce.raster_counter < 262) +} + +static INLINE void VDC_PIXELMIX(bool SPRCOMBO_ON, bool BGCOMBO_ON) +{ + static const uint32 vdc_layer_num[2] = { LAYER_VDC_BG << 28, LAYER_VDC_SPR << 28}; + const uint32 vdc_poffset[2] = { + ((fx_vce.palette_offset[0] >> 0) & 0xFF) << 1, // BG + ((fx_vce.palette_offset[0] >> 8) & 0xFF) << 1 // SPR + }; + + const int width = fx_vce.dot_clock ? 342 : 256; // 342, not 341, to prevent garbage pixels in high dot clock mode. + + for(int x = 0; x < width; x++) + { + const uint32 zort[2] = { vdc_linebuffers[0][x], vdc_linebuffers[1][x] }; + uint32 tmp_pixel; + + /* SPR combination */ + if(SPRCOMBO_ON && (zort[1] & 0x18F) > 0x180) + tmp_pixel = (zort[1] & 0xF) | ((zort[0] & 0xF) << 4) | 0x100; + /* BG combination */ + else if(BGCOMBO_ON && ((zort[1] ^ 0x100) & 0x18F) > 0x180) + tmp_pixel = (zort[1] & 0xF) | ((zort[0] & 0xF) << 4); + else + tmp_pixel = (zort[1] & 0xF) ? zort[1] : zort[0]; + + vdc_linebuffer[x] = tmp_pixel; + vdc_linebuffer_yuved[x] = 0; + if(tmp_pixel & 0xF) + vdc_linebuffer_yuved[x] = vce_rendercache.palette_table_cache[(tmp_pixel & 0xFF) + vdc_poffset[(tmp_pixel >> 8) & 1]] | vdc_layer_num[(tmp_pixel >> 8) & 1]; + } +} + +static void MixVDC(void) NO_INLINE; +static void MixVDC(void) +{ + // Optimization for when both layers are disabled in the VCE. + if(!vce_rendercache.LayerPriority[LAYER_VDC_BG] && !vce_rendercache.LayerPriority[LAYER_VDC_SPR]) + { + MDFN_FastU32MemsetM8(vdc_linebuffer_yuved, 0, 512); + } + else switch(fx_vce.picture_mode & 0xC0) + { + case 0x00: VDC_PIXELMIX(0, 0); break; // None on + case 0x40: VDC_PIXELMIX(0, 1); break; // BG combo on + case 0x80: VDC_PIXELMIX(1, 0); break; // SPR combo on + case 0xC0: VDC_PIXELMIX(1, 1); break; // Both on + } +} + + +static void MixLayers(void) +{ + uint32 *pXBuf = surface->pixels; + + // Now we have to mix everything together... I'm scared, mommy. + // We have, vdc_linebuffer[0] and bg_linebuffer + // Which layer is specified in bits 28-31(check the enum earlier on) + uint32 priority_remap[8]; + uint32 ble_cache[8]; + bool ble_cache_any = FALSE; + + for(int n = 0; n < 8; n++) + { + priority_remap[n] = vce_rendercache.LayerPriority[n]; + //printf("%d: %d\n", n, priority_remap[n]); + } + + // Rainbow layer disabled? + if(rb_type == -1 || RAINBOWLayerDisable) + priority_remap[LAYER_RAINBOW] = 0; + + ble_cache[LAYER_NONE] = 0; + for(int x = 0; x < 4; x++) + ble_cache[LAYER_BG0 + x] = (vce_rendercache.BLE >> (4 + x * 2)) & 0x3; + + ble_cache[LAYER_VDC_BG] = (vce_rendercache.BLE >> 0) & 0x3; + ble_cache[LAYER_VDC_SPR] = (vce_rendercache.BLE >> 2) & 0x3; + ble_cache[LAYER_RAINBOW] = (vce_rendercache.BLE >> 12) & 0x3; + + for(int x = 0; x < 8; x++) + if(ble_cache[x]) + { + ble_cache_any = TRUE; + break; + } + + uint8 *coeff_cache_y_back[3]; + int8 *coeff_cache_u_back[3], *coeff_cache_v_back[3]; + uint8 *coeff_cache_y_fore[3]; + int8 *coeff_cache_u_fore[3], *coeff_cache_v_fore[3]; + + for(int x = 0; x < 3; x++) + { + coeff_cache_y_fore[x] = vce_rendercache.coefficient_mul_table_y[(vce_rendercache.coefficients[x * 2 + 0] >> 8) & 0xF]; + coeff_cache_u_fore[x] = vce_rendercache.coefficient_mul_table_uv[(vce_rendercache.coefficients[x * 2 + 0] >> 4) & 0xF]; + coeff_cache_v_fore[x] = vce_rendercache.coefficient_mul_table_uv[(vce_rendercache.coefficients[x * 2 + 0] >> 0) & 0xF]; + + coeff_cache_y_back[x] = vce_rendercache.coefficient_mul_table_y[(vce_rendercache.coefficients[x * 2 + 1] >> 8) & 0xF]; + coeff_cache_u_back[x] = vce_rendercache.coefficient_mul_table_uv[(vce_rendercache.coefficients[x * 2 + 1] >> 4) & 0xF]; + coeff_cache_v_back[x] = vce_rendercache.coefficient_mul_table_uv[(vce_rendercache.coefficients[x * 2 + 1] >> 0) & 0xF]; + } + + uint32 *target; + uint32 BPC_Cache = (LAYER_NONE << 28); // Backmost pixel color(cache) + + if(fx_vce.frame_interlaced) + target = pXBuf + surface->pitch32 * ((fx_vce.raster_counter - 22) * 2 + fx_vce.odd_field); + else + target = pXBuf + surface->pitch32 * (fx_vce.raster_counter - 22); + + + // If at least one layer is enabled with the HuC6261, hindmost color is palette[0] + // If no layers are on, this color is black. + // If front cellophane is enabled, this color is forced to black(TODO: Confirm on a real system. Black or from CCR). + // If back cellophane is enabled, this color is forced to the value in CCR + // (back and front conditions are handled closer to the pixel mixing loops down below) + // TODO: Test on a real PC-FX to see if CCR is used or not if back cellophane is enabled even if all layers are disabled in the HuC6261, + // or if it just outputs black. + // TODO: See if enabling front/back cellophane in high dot-clock mode will set the hindmost color, even though the cellophane color mixing + // is disabled in high dot-clock mode. + if(vce_rendercache.picture_mode & 0x7F00) + BPC_Cache |= vce_rendercache.palette_table_cache[0]; + else + BPC_Cache |= 0x008080; + +#define DOCELLO(pixpoo) \ + if((pixel[pixpoo] >> 28) != LAYER_VDC_SPR || ((vce_rendercache.SPBL >> ((vdc_linebuffer[x] & 0xF0)>> 4)) & 1)) \ + { \ + int which_co = (ble_cache[pixel[pixpoo] >> 28] - 1); \ + uint8 back_y = coeff_cache_y_back[which_co][(zeout >> 16) & 0xFF]; \ + int8 back_u = coeff_cache_u_back[which_co][(zeout >> 8) & 0xFF]; \ + int8 back_v = coeff_cache_v_back[which_co][(zeout >> 0) & 0xFF]; \ + uint8 fore_y = coeff_cache_y_fore[which_co][(pixel[pixpoo] >> 16) & 0xFF]; \ + int8 fore_u = coeff_cache_u_fore[which_co][(pixel[pixpoo] >> 8) & 0xFF]; \ + int8 fore_v = coeff_cache_v_fore[which_co][(pixel[pixpoo] >> 0) & 0xFF]; \ + zeout = (pixel[pixpoo] & 0xFF000000) | ((RGBDeflower + 384)[back_y + fore_y] << 16) | ((RGBDeflower + 384)[back_u + fore_u + 128] << 8) | ((RGBDeflower + 384)[back_v + fore_v + 128] << 0); \ + } else zeout = pixel[pixpoo]; \ + +#define DOCELLOSPECIALFRONT() \ + { \ + uint8 y = coeff_cache_y_back[0][(zeout >> 16) & 0xFF]; \ + int8 u = coeff_cache_u_back[0][(zeout >> 8) & 0xFF]; \ + int8 v = coeff_cache_v_back[0][(zeout >> 0) & 0xFF]; \ + zeout = (zeout & 0xFF000000) | ((RGBDeflower + 384)[CCR_Y_front + y] << 16) | ((RGBDeflower + 384)[CCR_U_front + u + 128] << 8) | \ + ((RGBDeflower + 384)[CCR_V_front + v + 128] << 0); \ + } + +#define LAYER_MIX_BODY(index_256, index_341) \ + { uint32 pixel[4]; \ + uint32 prio[3]; \ + uint32 zeout = BPC_Cache; \ + prio[0] = priority_remap[vdc_linebuffer_yuved[index_341] >> 28]; \ + prio[1] = priority_remap[(bg_linebuffer + 8)[index_256] >> 28]; \ + prio[2] = priority_remap[rainbow_linebuffer[index_256] >> 28]; \ + pixel[0] = 0; \ + pixel[1] = 0; \ + pixel[2] = 0; \ + { \ + uint8 pi0 = VCEPrioMap[prio[0]][prio[1]][prio[2]][0]; \ + uint8 pi1 = VCEPrioMap[prio[0]][prio[1]][prio[2]][1]; \ + uint8 pi2 = VCEPrioMap[prio[0]][prio[1]][prio[2]][2]; \ + /*assert(pi0 == 3 || !pixel[pi0]);*/ pixel[pi0] = vdc_linebuffer_yuved[index_341]; \ + /*assert(pi1 == 3 || !pixel[pi1]);*/ pixel[pi1] = (bg_linebuffer + 8)[index_256]; \ + /*assert(pi2 == 3 || !pixel[pi2]);*/ pixel[pi2] = rainbow_linebuffer[index_256]; \ + } + +#define LAYER_MIX_FINAL_NOCELLO \ + if(pixel[0]) \ + zeout = pixel[0]; \ + if(pixel[1]) \ + zeout = pixel[1]; \ + if(pixel[2]) \ + zeout = pixel[2]; \ + target[x] = YUV888_TO_xxx(zeout); \ + } + +// For back cellophane, the hindmost pixel is always a valid pixel to mix with, a "layer" in its own right, +// so we don't need to check the current pixel value before mixing. +#define LAYER_MIX_FINAL_BACK_CELLO \ + if(pixel[0]) \ + { \ + if(ble_cache[pixel[0] >> 28]) \ + { \ + DOCELLO(0); \ + } \ + else \ + zeout = pixel[0]; \ + } \ + if(pixel[1]) \ + { \ + if(ble_cache[pixel[1] >> 28]) \ + { \ + DOCELLO(1); \ + } \ + else \ + zeout = pixel[1]; \ + } \ + if(pixel[2]) \ + { \ + if(ble_cache[pixel[2] >> 28]) \ + { \ + DOCELLO(2); \ + } \ + else \ + zeout = pixel[2]; \ + } \ + target[x] = YUV888_TO_xxx(zeout); \ + } + +// ..however, for front and "normal" cellophane, we need to make sure that the +// layer is indeed a real layer(KBG, VDC, RAINBOW) before mixing. +// Note: We need to check the upper 4 bits in determining whether the previous pixel is from a real layer or not, because the default +// hindmost non-layer color in front cellophane and normal cellophane modes is black, and black is represented in YUV as non-zero. We COULD bias/XOR each of U/V +// by 0x80 in the rendering code so that it would work if we just tested for the non-zeroness of the previous pixel, and adjust the YUV->RGB +// to compensate...TODO as a future possible optimization(MAYBE, it would obfuscate things more than they already are). +// +// Also, since the hindmost real layer pixel will never mix with anything behind it, we can leave +// out a few checks for the first possible hindmost real pixel. +// +// Also, the front cellophane effect itself doesn't need to check if the effective pixel output is a real layer (TODO: Confirm on real hardware!) +// +#define LAYER_MIX_FINAL_FRONT_CELLO \ + if(pixel[0]) \ + zeout = pixel[0]; \ + if(pixel[1]) \ + { \ + if(ble_cache[pixel[1] >> 28] && (zeout & (0xF << 28))) \ + { \ + DOCELLO(1); \ + } \ + else \ + zeout = pixel[1]; \ + } \ + if(pixel[2]) \ + { \ + if(ble_cache[pixel[2] >> 28] && (zeout & (0xF << 28))) \ + { \ + DOCELLO(2); \ + } \ + else \ + zeout = pixel[2]; \ + } \ + DOCELLOSPECIALFRONT(); \ + target[x] = YUV888_TO_xxx(zeout); \ + } + +#define LAYER_MIX_FINAL_CELLO \ + if(pixel[0]) \ + zeout = pixel[0]; \ + if(pixel[1]) \ + { \ + if(ble_cache[pixel[1] >> 28] && (zeout & (0xF << 28))) \ + { \ + DOCELLO(1); \ + } \ + else \ + zeout = pixel[1]; \ + } \ + if(pixel[2]) \ + { \ + if(ble_cache[pixel[2] >> 28] && (zeout & (0xF << 28))) \ + { \ + DOCELLO(2); \ + } \ + else \ + zeout = pixel[2]; \ + } \ + target[x] = YUV888_TO_xxx(zeout); \ + } + + if(surface->format.colorspace == MDFN_COLORSPACE_YCbCr) + { + #define YUV888_TO_xxx YUV888_TO_YCbCr888 + #include "king_mix_body.inc" + #undef YUV888_TO_xxx + } + else + { + #define YUV888_TO_xxx YUV888_TO_RGB888 + #include "king_mix_body.inc" + #undef YUV888_TO_xxx + } + DisplayRect->w = fx_vce.dot_clock ? HighDotClockWidth : 256; + DisplayRect->x = 0; + + // FIXME + if(fx_vce.frame_interlaced) + LineWidths[(fx_vce.raster_counter - 22) * 2 + fx_vce.odd_field] = *DisplayRect; + else + LineWidths[fx_vce.raster_counter - 22] = *DisplayRect; +} + +static INLINE void RunVDCs(const int master_cycles, uint16 *pixels0, uint16 *pixels1) +{ + int32 div_clocks; + + fx_vce.clock_divider += master_cycles; + div_clocks = fx_vce.clock_divider / fx_vce.dot_clock_ratio; + fx_vce.clock_divider -= div_clocks * fx_vce.dot_clock_ratio; + + if(pixels0) + pixels0 += vdc_lb_pos; + + if(pixels1) + pixels1 += vdc_lb_pos; + + assert((vdc_lb_pos + div_clocks) <= 512); + + fx_vce.vdc_event[0] = vdc_chips[0]->Run(div_clocks, pixels0, pixels0 ? false : true); + fx_vce.vdc_event[1] = vdc_chips[1]->Run(div_clocks, pixels1, pixels1 ? false : true); + + vdc_lb_pos += div_clocks; + +// printf("%d\n", vdc_lb_pos); +// if(fx_vce.dot_clock) +// assert(vdc_lb_pos <= 342); +// else +// assert(vdc_lb_pos <= 257); +} + +static void MDFN_FASTCALL KING_RunGfx(int32 clocks) +{ + while(clocks > 0) + { + int32 chunk_clocks = clocks; + + if(chunk_clocks > HPhaseCounter) + chunk_clocks = HPhaseCounter; + + clocks -= chunk_clocks; + HPhaseCounter -= chunk_clocks; + + if(skip) + RunVDCs(chunk_clocks, NULL, NULL); + else if(fx_vce.in_hblank) + { + static uint16 dummybuf[1024]; + RunVDCs(chunk_clocks, dummybuf, dummybuf); + } + else + { + RunVDCs(chunk_clocks, vdc_linebuffers[0], vdc_linebuffers[1]); + } + + assert(HPhaseCounter >= 0); + + while(HPhaseCounter <= 0) + { + HPhase = (HPhase + 1) % HPHASE_COUNT; + switch(HPhase) + { + case HPHASE_ACTIVE: vdc_lb_pos = 0; + fx_vce.in_hblank = false; + DoHBlankVCECaching(); + DrawActive(); + HPhaseCounter += 1024; + break; + + case HPHASE_HBLANK_PART1: + if(!skip) + { + if(fx_vce.raster_counter >= 22 && fx_vce.raster_counter < 262) + { + MixVDC(); + MixLayers(); + } + } + fx_vce.in_hblank = true; + fx_vce.in_vdc_hsync = true; + + for(int chip = 0; chip < 2; chip++) + vdc_chips[chip]->HSync(true); + + HPhaseCounter += 48; + break; + + case HPHASE_HBLANK_PART3: + fx_vce.raster_counter = (fx_vce.raster_counter + 1) % ((fx_vce.picture_mode & 0x1) ? 262 : 263); //lines_per_frame; + + if(fx_vce.raster_counter == 0) + for(int chip = 0; chip < 2; chip++) + vdc_chips[chip]->VSync(true); + + if(fx_vce.raster_counter == 3) + for(int chip = 0; chip < 2; chip++) + vdc_chips[chip]->VSync(false); + + if(!fx_vce.raster_counter) + { + bool previous_interlaced = fx_vce.frame_interlaced; + + fx_vce.frame_interlaced = fx_vce.picture_mode & 2; + + if(fx_vce.frame_interlaced && previous_interlaced) + fx_vce.odd_field ^= 1; + + if(!fx_vce.frame_interlaced) + fx_vce.odd_field = 0; + + PCFX_V810.Exit(); + } + + if(fx_vce.raster_counter == king->RasterIRQLine && (king->RAINBOWTransferControl & 0x2)) + { + //printf("Wovely: %d, %d, %d\n", fx_vce.raster_counter, king->RAINBOWRasterCounter, king->RAINBOWTransferControl); + + //if(fx_vce.raster_counter == 262) + //{ + // printf("Rainbow raster IRQ on line 262?\n"); + //} + //else + { + king->RasterIRQPending = TRUE; + RedoKINGIRQCheck(); + } + } + + // This -18(and +18) may or may not be correct in regards to how a real PC-FX adjusts the VDC layer horizontal position + // versus the KING and RAINBOW layers. + + if(fx_vce.dot_clock) + HPhaseCounter += 173 - 18; + else + HPhaseCounter += 165; + break; + + case HPHASE_HBLANK_PART4: + fx_vce.in_vdc_hsync = false; + for(int chip = 0; chip < 2; chip++) + vdc_chips[chip]->HSync(false); + + if(fx_vce.dot_clock) + HPhaseCounter += 120 + 18; + else + HPhaseCounter += 128; + break; + + } // end: switch(HPhase) + } // end: while(HPhaseCounter <= 0) + } // end: while(clocks > 0) +} // end KING_RunGfx() + +void KING_SetPixelFormat(const MDFN_PixelFormat &format) +{ + rs = format.Rshift; + gs = format.Gshift; + bs = format.Bshift; + RebuildUVLUT(format); +} + +void KING_SetLayerEnableMask(uint64 mask) +{ + uint64 ms = mask; + // "BG0\0BG1\0BG2\0BG3\0VDC-A BG\0VDC-A SPR\0VDC-B BG\0VDC-B SPR\0RAINBOW\0", + + BGLayerDisable = (~ms) & 0xF; + ms >>= 4; + + for(unsigned chip = 0; chip < 2; chip++) + { + fx_vdc_chips[chip]->SetLayerEnableMask(ms & 0x3); + ms >>= 2; + } + + RAINBOWLayerDisable = (~ms) & 0x1; + ms >>= 1; + +#if 0 + if(which < 4) + { + BGLayerDisable ^= 1 << which; + return( !((BGLayerDisable >> which) & 1)); + } + else if(which == 4 || which == 5) + { + return(fx_vdc_chips[0]->ToggleLayer(which - 4)); + } + else if(which == 6 || which == 7) + { + return(fx_vdc_chips[1]->ToggleLayer(which - 6)); + } + else if(which == 8) + { + RAINBOWLayerDisable = !RAINBOWLayerDisable; + return(!RAINBOWLayerDisable); + } + else + return(0); +#endif +} + + +int KING_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT KINGStateRegs[] = + { + SFVARN(king->AR, "AR"), + SFARRAY16N(king->KRAM[0], 262144, "KRAM0"), + SFARRAY16N(king->KRAM[1], 262144, "KRAM1"), + SFVARN(king->KRAMWA, "KRAMWA"), + SFVARN(king->KRAMRA, "KRAMRA"), + SFVARN(king->KRAM_Mode, "KRAM_Mode"), + SFVARN(king->PageSetting, "PageSetting"), + SFVARN(king->bgmode, "bgmode"), + SFVARN(king->priority, "priority"), + SFVARN(king->BGScrollMode, "BGScrollMode"), + SFARRAY16N(king->BGSize, 4, "BGSize"), + + SFARRAYN(king->BGBATAddr, 4, "BGBATAddr"), + SFARRAYN(king->BGCGAddr, 4, "BGCGAddr"), + SFVARN(king->BG0SubBATAddr, "BG0SubBATAddr"), + SFVARN(king->BG0SubCGAddr, "BG0SubCGAddr"), + + SFARRAY16N(king->BGXScroll, 4, "BGXScroll"), + SFARRAY16N(king->BGYScroll, 4, "BGYScroll"), + SFVARN(king->BGAffinA, "BGAffinA"), + SFVARN(king->BGAffinB, "BGAffinB"), + SFVARN(king->BGAffinC, "BGAffinC"), + SFVARN(king->BGAffinD, "BGAffinD"), + SFVARN(king->BGAffinCenterX, "BGAffinCenterX"), + SFVARN(king->BGAffinCenterY, "BGAffinCenterY"), + + SFVARN(king->ADPCMControl, "ADPCMControl"), + SFARRAY16N(king->ADPCMBufferMode, 2, "ADPCMBufferMode"), + SFARRAY16N(king->ADPCMSAL, 2, "ADPCMSAL"), + SFARRAY32N(king->ADPCMEndAddress, 2, "ADPCMEndAddress"), + SFARRAY32N(king->ADPCMPlayAddress, 2, "ADPCMPlayAddress"), + SFARRAY16N(king->ADPCMIntermediateAddress, 2, "ADPCMIntermediateAddress"), + SFARRAY16N(king->ADPCMStatus, 2, "ADPCMStatus"), + SFVARN(king->ADPCMIRQPending, "ADPCMIRQPending"), + SFVARN(king->RAINBOWTransferControl, "RAINBOWTransferControl"), + SFVARN(king->RAINBOWKRAMA, "RAINBOWKRAMA"), + SFVARN(king->RAINBOWTransferStartPosition, "RAINBOWTransferStartPosition"), + SFVARN(king->RAINBOWTransferBlockCount, "RAINBOWTransferBlockCount"), + + SFVARN(king->RAINBOWStartPending, "RAINBOWStartPending"), + SFVARN(king->RAINBOWBusyCount, "RAINBOWBusyCount"), + SFVARN(king->RAINBOWBlockCount, "RAINBOWBlockCount"), + + SFVARN(king->RasterIRQLine, "RasterIRQLine"), + SFVARN(king->RasterIRQPending, "RasterIRQPending"), + SFVARN(king->RAINBOWKRAMReadPos, "RAINBOWKRAMReadPos"), + SFVARN(king->DMATransferFlipFlop, "DMATransferFlipFlop"), + SFVARN(king->DMATransferAddr, "DMATransferAddr"), + SFVARN(king->DMATransferSize, "DMATransferSize"), + SFVARN(king->DMAStatus, "DMAStatus"), + SFVARN(king->DMAInterrupt, "DMAInterrupt"), + SFVARN(king->DMALatch, "DMALatch"), + SFVARN(king->MPROGControl, "MPROGControl"), + SFVARN(king->MPROGAddress, "MPROGAddress"), + SFARRAY16N(king->MPROGData, 16, "MPROGData"), + SFVARN(king->Reg00, "Port00"), + SFVARN(king->Reg01, "Port01"), + SFVARN(king->Reg02, "Port02"), + SFVARN(king->Reg03, "Port03"), + SFVARN(king->CDInterrupt, "CDInterrupt"), + SFVARN(king->data_cache, "data_cache"), + SFVARN(king->DRQ, "DRQ"), + SFVARN(king->dma_receive_active, "dma_receive_active"), + SFVARN(king->dma_send_active, "dma_send_active"), + SFVARN(king->dma_cycle_counter, "dma_cycle_counter"), + + SFVARN(king->SubChannelBuf, "SubChannelBuf"), + SFVARN(king->SubChannelInterrupt, "SubChannelInterrupt"), + SFVARN(king->SubChannelControl, "SubChannelControl"), + + SFVAR(scsicd_ne), + // scsicd_ne here?? + SFEND + }; + + SFORMAT VCEStateRegs[] = + { + SFVARN(fx_vce.AR, "AR"), + SFARRAY16N(fx_vce.priority, 2, "priority"), + SFVARN(fx_vce.odd_field, "odd_field"), + SFVARN(fx_vce.in_hblank, "in_hblank"), + SFVARN(fx_vce.in_vdc_hsync, "in_vdc_hsync"), + SFVARN(fx_vce.picture_mode, "picture_mode"), + + SFVARN(HPhase, "HPhase"), + SFVARN(HPhaseCounter, "HPhaseCounter"), + SFVAR(vdc_lb_pos), + + SFVARN(fx_vce.dot_clock, "dot_clock"), + SFVARN(fx_vce.clock_divider, "clock_divider"), + + SFARRAY32N(fx_vce.vdc_event, 2, "vdc_event"), + + SFVARN(fx_vce.raster_counter, "raster_counter"), + SFVARN(fx_vce.palette_rw_offset, "palette_rw_offset"), + SFVARN(fx_vce.palette_rw_latch, "palette_rw_latch"), + SFARRAY16N(fx_vce.palette_offset, 4, "palette_offset"), + SFARRAY16N(fx_vce.palette_table, 512, "palette_table"), + SFVARN(fx_vce.ChromaKeyY, "ChromaKeyY"), + SFVARN(fx_vce.ChromaKeyU, "ChromaKeyU"), + SFVARN(fx_vce.ChromaKeyV, "ChromaKeyV"), + SFVARN(fx_vce.CCR, "CCR"), + SFVARN(fx_vce.BLE, "BLE"), + SFVARN(fx_vce.SPBL, "SPBL"), + SFARRAY16N(fx_vce.coefficients, 6, "coefficients"), + + + // HB render cache: + // FIXME + SFARRAY16N(vce_rendercache.priority, 2, "rc_priority"), + SFVARN(vce_rendercache.picture_mode, "rc_picture_mode"), + SFARRAY16N(vce_rendercache.palette_offset, 4, "rc_palette_offset"), + SFVARN(vce_rendercache.ChromaKeyY, "rc_ChromaKeyY"), + SFVARN(vce_rendercache.ChromaKeyU, "rc_ChromaKeyU"), + SFVARN(vce_rendercache.ChromaKeyV, "rc_ChromaKeyV"), + SFVARN(vce_rendercache.CCR, "rc_CCR"), + SFVARN(vce_rendercache.BLE, "rc_BLE"), + SFVARN(vce_rendercache.SPBL, "rc_SPBL"), + SFARRAY16N(vce_rendercache.coefficients, 6, "rc_coefficients"), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, KINGStateRegs, "KING"); + + ret &= MDFNSS_StateAction(sm, load, data_only, VCEStateRegs, "VCE"); + + if(load) + { + RecalcKRAMPagePtrs(); + + fx_vce.dot_clock_ratio = fx_vce.dot_clock ? 3 : 4; + + fx_vce.palette_rw_offset &= 0x1FF; + fx_vce.palette_offset[3] &= 0x00FF; + fx_vce.priority[0] &= 0x0777; + fx_vce.priority[1] &= 0x7777; + + for(int x = 0; x < 6; x++) + fx_vce.coefficients[x] &= 0x0FFF; + + for(int x = 0; x < 0x200; x++) + RedoPaletteCache(x); + + vdc_lb_pos &= 0x1FF; // FIXME: Better checks(in case we remove the assert() elsewhere)? + + RedoKINGIRQCheck(); + SoundBox_SetKINGADPCMControl(king->ADPCMControl); + } + return(ret); +} + +#ifdef WANT_DEBUGGER +void KING_SetRegister(const std::string &name, uint32 value) +{ + + if(name == "AR") + king->AR = value & 0x7F; + else if(name == "MPROGADDR") + king->MPROGAddress = value & 0xF; + else if(name == "MPROGCTRL") + king->MPROGControl = value & 0x1; + else if(name == "MPROG0" || name == "MPROG1" || name == "MPROG2" || name == "MPROG3" || name == "MPROG4" || name == "MPROG5" || name == "MPROG6" || name == "MPROG7" || + name == "MPROG8" || name == "MPROG9" || name == "MPROGA" || name == "MPROGB" || name == "MPROGC" || name == "MPROGD" || name == "MPROGE" || name == "MPROGF") + { + int which; + if(name[5] >= 'A' && name[5] <= 'F') + which = name[5] + 0xA - 'A'; + else + which = name[5] - '0'; + king->MPROGData[which] = value; + } + else if(name == "PAGESET") + { + king->PageSetting = value; + RecalcKRAMPagePtrs(); + } + else if(name == "BGMODE") + { + king->bgmode = value; + } + else if(name == "BGPRIO") + { + king->priority = value; + } + else if(name == "BGSCRM") + { + king->BGScrollMode = value; + } + else if(name == "BGSIZ0") + king->BGSize[0] = value; + else if(name == "BGSIZ1") + king->BGSize[1] = value & 0x00FF; + else if(name == "BGSIZ2") + king->BGSize[2] = value & 0x00FF; + else if(name == "BGSIZ3") + king->BGSize[3] = value & 0x00FF; + else if(name == "BGXSC0") + king->BGXScroll[0] = value & 0x7FF; + else if(name == "BGXSC1") + king->BGXScroll[1] = value & 0x3FF; + else if(name == "BGXSC2") + king->BGXScroll[2] = value & 0x3FF; + else if(name == "BGXSC3") + king->BGXScroll[3] = value & 0x3FF; + else if(name == "BGYSC0") + king->BGYScroll[0] = value & 0x7FF; + else if(name == "BGYSC1") + king->BGYScroll[1] = value & 0x3FF; + else if(name == "BGYSC2") + king->BGYScroll[2] = value & 0x3FF; + else if(name == "BGYSC3") + king->BGYScroll[3] = value & 0x3FF; + else if(name == "AFFINA") + king->BGAffinA = value; + else if(name == "AFFINB") + king->BGAffinB = value; + else if(name == "AFFINC") + king->BGAffinC = value; + else if(name == "AFFIND") + king->BGAffinD = value; + else if(name == "AFFINX") + king->BGAffinCenterX = value; + else if(name == "AFFINY") + king->BGAffinCenterY = value; + else if(name == "BGBAT0") + king->BGBATAddr[0] = value; + else if(name == "BGBATS") + king->BG0SubBATAddr = value; + else if(name == "BGBAT1") + king->BGBATAddr[1] = value; + else if(name == "BGBAT2") + king->BGBATAddr[2] = value; + else if(name == "BGBAT3") + king->BGBATAddr[3] = value; + else if(name == "BGCG0" || name == "BGCGS" || name == "BGCG1" || name == "BGCG2" || name == "BGCG3") + { + char which = name[4]; + if(which == 'S') + king->BG0SubCGAddr = value; + else + king->BGCGAddr[which - '0'] = value; + } + else if(name == "RTCTRL") + king->RAINBOWTransferControl = value & 0x3; + else if(name == "RKRAMA") + king->RAINBOWKRAMA = value & 0x3FFFF; + else if(name == "RSTART") + king->RAINBOWTransferStartPosition = value & 0x1FF; + else if(name == "RCOUNT") + king->RAINBOWTransferBlockCount = value & 0x1F; + else if(name == "RIRQLINE") + king->RasterIRQLine = value; + else if(name == "KRAMRA") + { + king->KRAMRA = value; + } + else if(name == "KRAMWA") + { + king->KRAMWA = value; + } + else if(name == "DMATA") + king->DMATransferAddr = value; + else if(name == "DMATS") + king->DMATransferSize = value; + else if(name == "DMASTT") + king->DMAStatus = value; + else if(name == "ADPCMCTRL") + { + king->ADPCMControl = value; + SoundBox_SetKINGADPCMControl(king->ADPCMControl); + } + else if(name == "ADPCMBM0" || name == "ADPCMBM1") + { + unsigned int which = name[7] - '0'; + king->ADPCMBufferMode[which] = value; + } + else if(name == "ADPCMPA0" || name == "ADPCMPA1") + { + unsigned int which = name[7] - '0'; + king->ADPCMPlayAddress[which] = value; + } + else if(name == "ADPCMSA0" || name == "ADPCMSA1") + { + unsigned int which = name[7] - '0'; + king->ADPCMSAL[which] = value; + } + else if(name == "ADPCMIA0" || name == "ADPCMIA1") + { + unsigned int which = name[7] - '0'; + king->ADPCMIntermediateAddress[which] = value; + } + else if(name == "ADPCMEA0" || name == "ADPCMEA1") + { + unsigned int which = name[7] - '0'; + king->ADPCMEndAddress[which] = value; + } + else if(name == "ADPCMStat") + { + + } + else if(name == "Reg01") + { + king->Reg01 = value; + } + else if(name == "Reg02") + { + king->Reg02 = value; + } + else if(name == "Reg03") + { + king->Reg03 = value; + } + else if(name == "SUBCC") + { + king->SubChannelControl = value & 0x3; + } +} + +uint32 KING_GetRegister(const std::string &name, std::string *special) +{ + uint32 value = 0xDEADBEEF; + + if(name == "AR") + { + value = king->AR; + } + else if(name == "MPROGADDR") + value = king->MPROGAddress; + else if(name == "MPROGCTRL") + { + value = king->MPROGControl; + } + else if(name == "MPROG0" || name == "MPROG1" || name == "MPROG2" || name == "MPROG3" || name == "MPROG4" || name == "MPROG5" || name == "MPROG6" || name == "MPROG7" || + name == "MPROG8" || name == "MPROG9" || name == "MPROGA" || name == "MPROGB" || name == "MPROGC" || name == "MPROGD" || name == "MPROGE" || name == "MPROGF") + { + int which; + if(name[5] >= 'A' && name[5] <= 'F') + which = name[5] + 0xA - 'A'; + else + which = name[5] - '0'; + value = king->MPROGData[which]; + if(special) + { + char buf[256]; + static const char *atypes[4] = { "CG", "CG of BAT", "BAT", "???" }; + + trio_snprintf(buf, 256, "Offset: %d, Access Type: %s, Rotation: %d, BG Number: %d, NOP: %d", + value & 0x7, atypes[(value >> 3) & 0x3], (int)(bool)(value & 0x20), + (value >> 6) & 0x3, (int)(bool)(value & 0x100)); + + *special = std::string(buf); + } + + } + else if(name == "PAGESET") + { + value = king->PageSetting; + + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "SCSI: %d, BG: %d, ADPCM: %d, RAINBOW: %d", (int)(bool)(value & 0x1), (int)(bool)(value & 0x10), (int)(bool)(value & 0x100), (int)(bool)(value & 0x1000)); + *special = std::string(buf); + } + } + else if(name == "BGMODE") + { + value = king->bgmode; + if(special) + { + static const char *bgmodes[16] = { "Disabled", "4-color", "16-color", "256-color", "64K-color", "16M-color", "Undefined", "Undefined", + "Disabled", "4-color w/BAT", "16-color w/BAT", "256-color w/BAT", "64K-color w/BAT", "16M-color w/BAT", "Undefined", "Undefined" + }; + char buf[256]; + trio_snprintf(buf, 256, "BG0: %2d(%s), BG1: %2d(%s), BG2: %2d(%s), BG3: %2d(%s)", value & 0xF, bgmodes[value & 0xF], (value >> 4) & 0xF, bgmodes[(value >> 4) & 0xF], (value >> 8) & 0xF, bgmodes[(value >> 8) & 0xf], (value >> 12) & 0xF, bgmodes[(value >> 12) & 0xf]); + *special = std::string(buf); + } + } + else if(name == "BGPRIO") + { + value = king->priority; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Affine enable: %s - BG0: %2d, BG1: %2d, BG2: %2d, BG3: %2d", (value & (1 << 12)) ? "Yes" : "No", value & 0x7, (value >> 3) & 0x7, (value >> 6) & 0x7, (value >> 9) & 0x7); + *special = std::string(buf); + } + } + else if(name == "BGSCRM") + { + value = king->BGScrollMode; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "BG0: %s, BG1: %s, BG2: %s, BG3: %s", (value & 1) ? "Endless" : "Non-endless",(value & 2) ? "Endless" : "Non-endless", + (value & 4) ? "Endless" : "Non-endless", (value & 8) ? "Endless" : "Non-endless"); + *special = std::string(buf); + } + } + else if(name == "BGSIZ0") + value = king->BGSize[0]; + + else if(name == "BGSIZ1") + value = king->BGSize[1]; + + else if(name == "BGSIZ2") + value = king->BGSize[2]; + + else if(name == "BGSIZ3") + value = king->BGSize[3]; + + else if(name == "BGXSC0") + value = king->BGXScroll[0]; + else if(name == "BGXSC1") + value = king->BGXScroll[1]; + else if(name == "BGXSC2") + value = king->BGXScroll[2]; + else if(name == "BGXSC3") + value = king->BGXScroll[3]; + + else if(name == "BGYSC0") + value = king->BGYScroll[0]; + else if(name == "BGYSC1") + value = king->BGYScroll[1]; + else if(name == "BGYSC2") + value = king->BGYScroll[2]; + else if(name == "BGYSC3") + value = king->BGYScroll[3]; + else if(name == "AFFINA" || name == "AFFINB" || name == "AFFINC" || name == "AFFIND") + { + const uint16 *coeffs[4] = { &king->BGAffinA, &king->BGAffinB, &king->BGAffinC, &king->BGAffinD }; + value = *coeffs[name[5] - 'A']; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "%f", (double)(int16)value / 256); + *special = std::string(buf); + } + } + else if(name == "AFFINX") + value = king->BGAffinCenterX; + else if(name == "AFFINY") + value = king->BGAffinCenterY; + else if(name == "BGBAT0" || name == "BGBATS" || name == "BGBAT1" || name == "BGBAT2" || name == "BGBAT3") + { + char which = name[5]; + if(which == 'S') + value = king->BG0SubBATAddr; + else + value = king->BGBATAddr[which - '0']; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "0x%04x * 1024 = 0x%05x", value, (value * 1024) & 0x3FFFF); + *special = std::string(buf); + } + } + + else if(name == "BGCG0" || name == "BGCGS" || name == "BGCG1" || name == "BGCG2" || name == "BGCG3") + { + char which = name[4]; + if(which == 'S') + value = king->BG0SubCGAddr; + else + value = king->BGCGAddr[which - '0']; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "0x%04x * 1024 = 0x%05x", value, (value * 1024) & 0x3FFFF); + *special = std::string(buf); + } + } + + else if(name == "RTCTRL") + { + value = king->RAINBOWTransferControl; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Raster Interrupt: %s, Rainbow Transfer: %s", (value & 2) ? "On" : "Off", (value & 1) ? "On" : "Off"); + *special = std::string(buf); + } + } + else if(name == "RKRAMA") + value = king->RAINBOWKRAMA; + else if(name == "RSTART") + value = king->RAINBOWTransferStartPosition; + else if(name == "RCOUNT") + value = king->RAINBOWTransferBlockCount; + else if(name == "RIRQLINE") + value = king->RasterIRQLine; + else if(name == "KRAMRA") + { + value = king->KRAMRA; + } + else if(name == "KRAMWA") + { + value = king->KRAMWA; + } + else if(name == "DMATA") + value = king->DMATransferAddr; + else if(name == "DMATS") + value = king->DMATransferSize; + else if(name == "DMASTT") + value = king->DMAStatus; + else if(name == "ADPCMCTRL") + { + value = king->ADPCMControl; + + } + else if(name == "ADPCMBM0" || name == "ADPCMBM1") + { + unsigned int which = name[7] - '0'; + value = king->ADPCMBufferMode[which]; + + } + else if(name == "ADPCMPA0" || name == "ADPCMPA1") + { + unsigned int which = name[7] - '0'; + value = king->ADPCMPlayAddress[which]; + + } + else if(name == "ADPCMSA0" || name == "ADPCMSA1") + { + unsigned int which = name[7] - '0'; + value = king->ADPCMSAL[which]; + + } + else if(name == "ADPCMIA0" || name == "ADPCMIA1") + { + unsigned int which = name[7] - '0'; + value = king->ADPCMIntermediateAddress[which]; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "0x%03x * 64 = 0x%08x", king->ADPCMIntermediateAddress[which], king->ADPCMIntermediateAddress[which] << 6); + *special = std::string(buf); + } + } + else if(name == "ADPCMEA0" || name == "ADPCMEA1") + { + unsigned int which = name[7] - '0'; + value = king->ADPCMEndAddress[which]; + } + else if(name == "ADPCMStat") + { + value = king->ADPCMStatus[0] | (king->ADPCMStatus[1] << 2); + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Ch0 End: %d, Ch0 Intermediate: %d, Ch1 End: %d, Ch1 Intermediate: %d", (int)(bool)(value & 0x1), + (int)(bool)(value & 0x2), + (int)(bool)(value & 0x4), + (int)(bool)(value & 0x8)); + *special = std::string(buf); + } + } + else if(name == "Reg01") + { + value = king->Reg01; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "BSY: %d, ATN: %d, SEL: %d, ACK: %d, RST: %d", (int)(bool)(value & 1), (int)(bool)(value & 2), (int)(bool)(value & 4), + (int)(bool)(value & 0x10), (int)(bool)(value & 0x80)); + *special = std::string(buf); + } + } + else if(name == "Reg02") + { + value = king->Reg02; + } + else if(name == "Reg03") + { + value = king->Reg03; + if(special) + { + char buf[256]; + + trio_snprintf(buf, 256, "I/O: %d, C/D: %d, MSG: %d", (int)(bool)(value & 1), (int)(bool)(value & 2), (int)(bool)(value & 4)); + *special = std::string(buf); + } + } + else if(name == "SUBCC") + { + value = king->SubChannelControl; + if(special) + { + char buf[256]; + + trio_snprintf(buf, 256, "Subchannel reading: %s, Subchannel read IRQ: %s", (value & 0x1) ? "Enabled" : "Disabled", (value & 0x2) ? "On" : "Off"); + *special = std::string(buf); + } + } + else if(name == "DB") + value = SCSICD_GetDB(); + else if(name == "BSY") + value = SCSICD_GetBSY(); + else if(name == "REQ") + value = SCSICD_GetREQ(); + else if(name == "ACK") + value = SCSICD_GetACK(); + else if(name == "MSG") + value = SCSICD_GetMSG(); + else if(name == "CD") + value = SCSICD_GetCD(); + else if(name == "IO") + value = SCSICD_GetIO(); + else if(name == "SEL") + value = SCSICD_GetSEL(); + + return(value); +} + +void FXVDCVCE_SetRegister(const std::string &name, uint32 value) +{ + if(name == "VCEPRIO0") + { + fx_vce.priority[0] = value & 0x0777; + } + else if(name == "PRIO1") + { + fx_vce.priority[1] = value & 0x7777; + } + else if(name == "PICMODE") + { + fx_vce.picture_mode = value; + } + else if(name == "VCEPALRWOF") + { + fx_vce.palette_rw_offset = value; + fx_vce.palette_rw_offset &= 0x1FF; + } + else if(name == "VCEPALRWLA") + fx_vce.palette_rw_latch = value; + else if(name == "VCEPALOFS0") + fx_vce.palette_offset[0] = value; + else if(name == "VCEPALOFS1") + fx_vce.palette_offset[1] = value; + else if(name == "VCEPALOFS2") + fx_vce.palette_offset[2] = value; + else if(name == "VCEPALOFS3") + { + fx_vce.palette_offset[3] = value; + fx_vce.palette_offset[3] &= 0x00FF; + } + else if(name == "VCECCR") + fx_vce.CCR = value; + else if(name == "VCEBLE") + fx_vce.BLE = value; + else if(name == "VCESPBL") + fx_vce.SPBL = value; + else if(!strncasecmp(name.c_str(), "VCECOEFF", strlen("VCECOEFF"))) + { + int which = name.c_str()[strlen("VCECOEFF")] - '0'; + fx_vce.coefficients[which] = value; + } +} + + +uint32 FXVDCVCE_GetRegister(const std::string &name, std::string *special) +{ + uint32 value = 0xDEADBEEF; + + if(name == "PRIO0") + { + value = fx_vce.priority[0]; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "VDC BG: %2d, VDC SPR: %2d, RAINBOW: %2d", value & 0xF, (value >> 4) & 0xF, (value >> 8) & 0xF); + *special = std::string(buf); + } + } + else if(name == "PRIO1") + { + value = fx_vce.priority[1]; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "BG0: %2d, BG1: %2d, BG2: %2d, BG3: %2d", value & 0xF, (value >> 4) & 0xF, (value >> 8) & 0xF, (value >> 12) & 0xF); + *special = std::string(buf); + } + } + else if(name == "PICMODE") + { + value = fx_vce.picture_mode; + if(special) + { + char buf[256]; + static const char *DCCModes[4] = + { + "263 lines/frame", "262 lines/frame", "Interlaced", "Interlaced+1/2 dot shift" + }; + + trio_snprintf(buf, 256, "BG0: %s, BG1: %s, BG2: %s, BG3: %s, VDC BG: %s%s, VDC SPR: %s%s, RAINBOW: %s, VDC Clk: %sMHz, %s", + (value & (1 << 10)) ? "On" : "Off", (value & (1 << 11)) ? "On": "Off", + (value & (1 << 12)) ? "On" : "Off", (value & (1 << 13)) ? "On": "Off", + (value & 0x0100) ? "On" : "Off", (value & 0x0040) ? "+merge mode" : "", (value & 0x0200) ? "On" : "Off", (value & 0x0080) ? "+merge mode" : "", + (value & 0x4000) ? "On" : "Off", (value & 0x0008) ? "7.16":"5.37", DCCModes[value & 0x3]); + *special = std::string(buf); + } + } + else if(name == "Line") + value = fx_vce.raster_counter; + else if(name == "PALRWOF") + value = fx_vce.palette_rw_offset; + else if(name == "PALRWLA") + value = fx_vce.palette_rw_latch; + else if(name == "PALOFS0") + value = fx_vce.palette_offset[0]; + else if(name == "PALOFS1") + value = fx_vce.palette_offset[1]; + else if(name == "PALOFS2") + value = fx_vce.palette_offset[2]; + else if(name == "PALOFS3") + value = fx_vce.palette_offset[3]; + else if(name == "CKeyY") + value = fx_vce.ChromaKeyY; + else if(name == "CKeyU") + value = fx_vce.ChromaKeyU; + else if(name == "CKeyV") + value = fx_vce.ChromaKeyV; + + else if(name == "CCR") + value = fx_vce.CCR; + else if(name == "BLE") + { + value = fx_vce.BLE; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "%s(%s), Rainbow: %d, BG3: %d, BG2: %d, BG1: %d, BG0: %d, VDC SP: %d, VDC BG: %d", (value & 0x8000) ? "Front" : "Back", (value & 0x4000) ? "On" : "Off", (value >> 12) & 0x3, + (value >> 10) & 3, (value >> 8) & 3, (value >> 6) & 3, (value >> 4) & 3, (value >> 2) & 3, value & 3); + *special = std::string(buf); + } + } + else if(name == "SPBL") + value = fx_vce.SPBL; + else if(!strncasecmp(name.c_str(), "COEFF", strlen("COEFF"))) + { + int which = name.c_str()[strlen("COEFF")] - '0'; + value = fx_vce.coefficients[which]; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Y: %1d, U: %1d, V: %1d", (value >> 8) & 0xF, (value >> 4) & 0xf, value & 0xf); + *special = std::string(buf); + } + } + + return(value); +} + +void KING_SetGraphicsDecode(MDFN_Surface *decode_surface, int line, int which, int xscroll, int yscroll, int pbn) +{ + GfxDecode_Buf = decode_surface; + GfxDecode_Line = line; + GfxDecode_Layer = which; + GfxDecode_Scroll = yscroll; + GfxDecode_PBN = pbn; + + if(GfxDecode_Buf && GfxDecode_Line == -1) + DoGfxDecode(); +} + +static void DoGfxDecode(void) +{ + const uint32 alpha_or = (0xFF << GfxDecode_Buf->format.Ashift); + int pbn = GfxDecode_PBN; + + if(GfxDecode_Layer >= 4 && GfxDecode_Layer <= 7) + { + uint32 palette_offset = fx_vce.palette_offset[0] >> (((GfxDecode_Layer - 4) & 1) * 8); + palette_offset <<= 1; + palette_offset &= 0x1FF; + uint32 *palette_ptr = &vce_rendercache.palette_table_cache[palette_offset]; + uint32 neo_palette[16]; + + if(pbn == -1) + { + for(int x = 0; x < 16; x++) + { + int ccval = (int)(255 * pow((double)x / 15, 1.0f / 2.2)); + neo_palette[x] = GfxDecode_Buf->MakeColor(ccval, ccval, ccval, 0xFF); + } + } + else + { + pbn &= 0x0F; + palette_ptr += pbn * 16; + + for(int x = 0; x < 16; x++) + neo_palette[x] = YUV888_TO_RGB888(palette_ptr[x]) | alpha_or; + } + + //FXVDC_DoGfxDecode(fx_vdc_chips[(GfxDecode_Layer - 4) / 2], neo_palette, GfxDecode_Buf, GfxDecode_Scroll, (GfxDecode_Layer - 4) & 1); + fx_vdc_chips[(GfxDecode_Layer - 4) / 2]->DoGfxDecode(GfxDecode_Buf->pixels, neo_palette, GfxDecode_Buf->MakeColor(0, 0, 0, 0xFF), (GfxDecode_Layer - 4) & 1, GfxDecode_Buf->w, GfxDecode_Buf->h, GfxDecode_Scroll); + } + else if(GfxDecode_Layer < 4) + { + int n = GfxDecode_Layer; + uint16 bgmode = (king->bgmode >> (n * 4)) & 0xF; + uint32 cg_offset = king->BGCGAddr[n] * 1024; + uint32 bat_and_cg_page = (king->PageSetting & 0x0010) ? 1 : 0; + uint32 *target = GfxDecode_Buf->pixels; + uint32 layer_or = 0; + uint32 page_addr_or = bat_and_cg_page ? 0x40000 : 0x00000; + uint32 palette_offset = fx_vce.palette_offset[1 + (n >> 1)] >> ((n & 1) ? 8 : 0); + palette_offset <<= 1; + palette_offset &= 0x1FF; + uint32 *palette_ptr = &vce_rendercache.palette_table_cache[palette_offset]; + int tile_width = 8; + int tile_height = 8; + + if(!(bgmode & 0x8)) + { + int shiftmoo = (king->BGSize[n] & 0xF0) >> 4; + if(shiftmoo < 3) shiftmoo = 3; + if(shiftmoo > 0xA) shiftmoo = 0xA; + tile_width = 1 << shiftmoo; + + shiftmoo = (king->BGSize[n] & 0x0F); + if(shiftmoo < 3) shiftmoo = 3; + if(shiftmoo > 0xA) shiftmoo = 0xA; + tile_height = 1 << shiftmoo; + + if(tile_width > GfxDecode_Buf->w) tile_width = GfxDecode_Buf->w; + if(tile_height > GfxDecode_Buf->h) tile_height = GfxDecode_Buf->h; + } + + switch(bgmode & 0x7) + { + default: memset(target, 0, GfxDecode_Buf->w * GfxDecode_Buf->h * sizeof(uint32) * 3); + break; + + case 0x01: // 4 + { + pbn *= 4; + pbn &= 0x1FF; + + for(int y = 0; y < GfxDecode_Buf->h; y++) + { + for(int x = 0; x < GfxDecode_Buf->w; x+=8) + { + int which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8); + uint16 cg = king->KRAM[bat_and_cg_page][(cg_offset + (which_tile * 8) + (y & 0x7)) & 0x3FFFF]; + + DRAWBG8x1_4(target + x, &cg, palette_ptr + pbn, layer_or); + + target[x + GfxDecode_Buf->w * 2 + 0] = target[x + GfxDecode_Buf->w * 2 + 1] = target[x + GfxDecode_Buf->w * 2 + 2] = target[x + GfxDecode_Buf->w * 2 + 3] = + target[x + GfxDecode_Buf->w * 2 + 4] = target[x + GfxDecode_Buf->w * 2 + 5] = target[x + GfxDecode_Buf->w * 2 + 6] = target[x + GfxDecode_Buf->w * 2 + 7] = ((cg_offset + (which_tile * 8)) & 0x3FFFF) | page_addr_or; + + target[x + GfxDecode_Buf->w*1 + 0]=target[x + GfxDecode_Buf->w*1 + 1]=target[x + GfxDecode_Buf->w*1 + 2]=target[x + GfxDecode_Buf->w*1 + 3] = + target[x + GfxDecode_Buf->w*1 + 4]=target[x + GfxDecode_Buf->w*1 + 5]=target[x + GfxDecode_Buf->w*1 + 6]=target[x + GfxDecode_Buf->w*1 + 7] = which_tile; + } + for(int x = 0; x < GfxDecode_Buf->w; x++) + target[x] = YUV888_TO_RGB888(target[x]) | alpha_or; + target += GfxDecode_Buf->w * 3; + } + } + break; + + case 0x02: // 16 + { + pbn *= 8; + pbn &= 0x1FF; + for(int y = 0; y < GfxDecode_Buf->h; y++) + { + for(int x = 0; x < GfxDecode_Buf->w; x+=8) + { + int which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8); + uint16 *cgptr = &king->KRAM[bat_and_cg_page][(cg_offset + (which_tile * 16) + (y & 0x7) * 2) & 0x3FFFF]; + + DRAWBG8x1_16(target + x, cgptr, palette_ptr + pbn, layer_or); + + target[x + GfxDecode_Buf->w*2 + 0] = target[x + GfxDecode_Buf->w*2 + 1] = target[x + GfxDecode_Buf->w*2 + 2] = target[x + GfxDecode_Buf->w*2 + 3] = + target[x + GfxDecode_Buf->w*2 + 4] = target[x + GfxDecode_Buf->w*2 + 5] = target[x + GfxDecode_Buf->w*2 + 6] = target[x + GfxDecode_Buf->w*2 + 7] = ((cg_offset + (which_tile * 16)) & 0x3FFFF) | page_addr_or; + + target[x + GfxDecode_Buf->w*1 + 0]=target[x + GfxDecode_Buf->w*1 + 1]=target[x + GfxDecode_Buf->w*1 + 2]=target[x + GfxDecode_Buf->w*1 + 3] = + target[x + GfxDecode_Buf->w*1 + 4]=target[x + GfxDecode_Buf->w*1 + 5]=target[x + GfxDecode_Buf->w*1 + 6]=target[x + GfxDecode_Buf->w*1 + 7] = which_tile; + } + for(int x = 0; x < GfxDecode_Buf->w; x++) + target[x] = YUV888_TO_RGB888(target[x]) | alpha_or; + target += GfxDecode_Buf->w * 3; + } + } + break; + + case 0x03: // 256 + { + for(int y = 0; y < GfxDecode_Buf->h; y++) + { + for(int x = 0; x < GfxDecode_Buf->w; x+=8) + { + int which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8); + uint16 *cgptr = &king->KRAM[bat_and_cg_page][(cg_offset + (which_tile * 32) + (y & 0x7) * 4) & 0x3FFFF]; + + DRAWBG8x1_256(target + x, cgptr, palette_ptr, layer_or); + + target[x + GfxDecode_Buf->w*2 + 0] = target[x + GfxDecode_Buf->w*2 + 1] = target[x + GfxDecode_Buf->w*2 + 2] = target[x + GfxDecode_Buf->w*2 + 3] = + target[x + GfxDecode_Buf->w*2 + 4] = target[x + GfxDecode_Buf->w*2 + 5] = target[x + GfxDecode_Buf->w*2 + 6] = target[x + GfxDecode_Buf->w*2 + 7] = ((cg_offset + (which_tile * 32)) & 0x3FFFF) | page_addr_or; + + target[x + GfxDecode_Buf->w*1 + 0]=target[x + GfxDecode_Buf->w*1 + 1]=target[x + GfxDecode_Buf->w*1 + 2]=target[x + GfxDecode_Buf->w*1 + 3] = + target[x + GfxDecode_Buf->w*1 + 4]=target[x + GfxDecode_Buf->w*1 + 5]=target[x + GfxDecode_Buf->w*1 + 6]=target[x + GfxDecode_Buf->w*1 + 7] = which_tile; + } + + for(int x = 0; x < GfxDecode_Buf->w; x++) + target[x] = YUV888_TO_RGB888(target[x]) | alpha_or; + + target += GfxDecode_Buf->w * 3; + } + } + break; + + case 0x04: // 64K + for(int y = 0; y < GfxDecode_Buf->h; y++) + { + for(int x = 0; x < GfxDecode_Buf->w; x+=8) + { + int which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8); + uint16 *cgptr = &king->KRAM[bat_and_cg_page][(cg_offset + (which_tile * 64) + (y & 0x7) * 8) & 0x3FFFF]; + + DRAWBG8x1_64K(target + x, cgptr, palette_ptr, layer_or); + } + + for(int x = 0; x < GfxDecode_Buf->w; x++) + target[x] = YUV888_TO_RGB888(target[x]) | alpha_or; + + target += GfxDecode_Buf->w * 3; + } + break; + + case 0x05: // 16M + for(int y = 0; y < GfxDecode_Buf->h; y++) + { + for(int x = 0; x < GfxDecode_Buf->w; x+=8) + { + int which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8); + uint16 *cgptr = &king->KRAM[bat_and_cg_page][(cg_offset + (which_tile * 64) + (y & 0x7) * 8) & 0x3FFFF]; + + DRAWBG8x1_16M(target + x, cgptr, palette_ptr, layer_or); + } + + for(int x = 0; x < GfxDecode_Buf->w; x++) + target[x] = YUV888_TO_RGB888(target[x]) | alpha_or; + + target += GfxDecode_Buf->w * 3; + } + break; + + } + } + else + memset(GfxDecode_Buf->pixels, 0, GfxDecode_Buf->w * GfxDecode_Buf->h * sizeof(uint32) * 3); +} + +#endif diff --git a/libmednahawk/src/pcfx/king.h b/libmednahawk/src/pcfx/king.h new file mode 100644 index 0000000000..634231b8b1 --- /dev/null +++ b/libmednahawk/src/pcfx/king.h @@ -0,0 +1,47 @@ +#ifndef __PCFX_KING_H +#define __PCFX_KING_H + +void KING_StartFrame(VDC **, EmulateSpecStruct *espec); //MDFN_Surface *surface, MDFN_Rect *DisplayRect, MDFN_Rect *LineWidths, int skip); +void KING_SetPixelFormat(const MDFN_PixelFormat &format); //int rshift, int gshift, int bshift); +uint16 FXVCE_Read16(uint32 A); +void FXVCE_Write16(uint32 A, uint16 V); + +#ifdef WANT_DEBUGGER +uint32 FXVDCVCE_GetRegister(const std::string &name, std::string *special); +void FXVDCVCE_SetRegister(const std::string &name, uint32 value); +#endif + +uint8 KING_Read8(const v810_timestamp_t timestamp, uint32 A); +uint16 KING_Read16(const v810_timestamp_t timestamp, uint32 A); + +void KING_Write8(const v810_timestamp_t timestamp, uint32 A, uint8 V); +void KING_Write16(const v810_timestamp_t timestamp, uint32 A, uint16 V); +bool KING_Init(void); +void KING_Close(void); +void KING_Reset(void); + +uint16 KING_GetADPCMHalfWord(int ch); + +uint8 KING_MemPeek(uint32 A); + +uint8 KING_RB_Fetch(); + +void KING_SetLayerEnableMask(uint64 mask); + +int KING_StateAction(StateMem *sm, int load, int data_only); + +#ifdef WANT_DEBUGGER +uint32 KING_GetRegister(const std::string &name, std::string *special); +void KING_SetRegister(const std::string &name, uint32 value); +#endif + +void KING_SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn); + +void KING_NotifyOfBPE(bool read, bool write); + +void KING_SetLogFunc(void (*logfunc)(const char *, const char *, ...)); + +void KING_EndFrame(v810_timestamp_t timestamp); + +v810_timestamp_t MDFN_FASTCALL KING_Update(const v810_timestamp_t timestamp); +#endif diff --git a/libmednahawk/src/pcfx/king_mix_body.inc b/libmednahawk/src/pcfx/king_mix_body.inc new file mode 100644 index 0000000000..9b613fb2bf --- /dev/null +++ b/libmednahawk/src/pcfx/king_mix_body.inc @@ -0,0 +1,62 @@ + if(fx_vce.dot_clock) // No cellophane in 7.16MHz pixel mode + { + if(HighDotClockWidth == 341) + for(unsigned int x = 0; x < 341; x++) + { + LAYER_MIX_BODY(x * 256 / 341, x); + LAYER_MIX_FINAL_NOCELLO; + } + else if(HighDotClockWidth == 256) + for(unsigned int x = 0; x < 256; x++) + { + LAYER_MIX_BODY(x, x * 341 / 256); + LAYER_MIX_FINAL_NOCELLO; + } + else + for(unsigned int x = 0; x < 1024; x++) + { + LAYER_MIX_BODY(x / 4, x / 3); + LAYER_MIX_FINAL_NOCELLO; + } + } + else if((vce_rendercache.BLE & 0xC000) == 0xC000) // Front cellophane + { + uint8 CCR_Y_front = vce_rendercache.coefficient_mul_table_y[(vce_rendercache.coefficients[0] >> 8) & 0xF][(vce_rendercache.CCR >> 8) & 0xFF]; + int8 CCR_U_front = vce_rendercache.coefficient_mul_table_uv[(vce_rendercache.coefficients[0] >> 4) & 0xF][(vce_rendercache.CCR & 0xF0)]; + int8 CCR_V_front = vce_rendercache.coefficient_mul_table_uv[(vce_rendercache.coefficients[0] >> 0) & 0xF][(vce_rendercache.CCR << 4) & 0xF0]; + + BPC_Cache = 0x008080 | (LAYER_NONE << 28); + + for(unsigned int x = 0; x < 256; x++) + { + LAYER_MIX_BODY(x, x); + LAYER_MIX_FINAL_FRONT_CELLO; + } + } + else if((vce_rendercache.BLE & 0xC000) == 0x4000) // Back cellophane + { + BPC_Cache = ((vce_rendercache.CCR & 0xFF00) << 8) | ((vce_rendercache.CCR & 0xF0) << 8) | ((vce_rendercache.CCR & 0x0F) << 4) | (LAYER_NONE << 28); + + for(unsigned int x = 0; x < 256; x++) + { + LAYER_MIX_BODY(x, x); + LAYER_MIX_FINAL_BACK_CELLO; + } + } + else if(ble_cache_any) // No front/back cello, but cellophane on at least 1 layer + { + for(unsigned int x = 0; x < 256; x++) + { + LAYER_MIX_BODY(x, x); + LAYER_MIX_FINAL_CELLO + } + } + else // No cellophane at all + { + for(unsigned int x = 0; x < 256; x++) + { + LAYER_MIX_BODY(x, x); + LAYER_MIX_FINAL_NOCELLO + } + } + diff --git a/libmednahawk/src/pcfx/mem-handler.inc b/libmednahawk/src/pcfx/mem-handler.inc new file mode 100644 index 0000000000..a4638d789e --- /dev/null +++ b/libmednahawk/src/pcfx/mem-handler.inc @@ -0,0 +1,324 @@ +uint8 MDFN_FASTCALL mem_peekbyte(const v810_timestamp_t timestamp, const uint32 A) +{ + if(A <= 0x001FFFFF) + return(RAM[A]); + else if(A <= 0x00FFFFFF) + return(0xFF); + else if(A >= 0xF0000000) + return(BIOSROM[A & 0xFFFFF]); + else if(FXSCSIROM && A >= 0x80780000 && A <= 0x807FFFFF) + { + return(FXSCSIROM[A & 0x7FFFF]); + } + return(0xFF); +} + +uint16 MDFN_FASTCALL mem_peekhword(const v810_timestamp_t timestamp, const uint32 A) // TODO: Full memory map peeking. +{ + if(A <= 0x001FFFFF) + return(le16toh(*(uint16*)&RAM[A])); + else if(A <= 0x00FFFFFF) + return(0xFFFF); + else if(A >= 0xF0000000) + return(le16toh(*(uint16 *)&BIOSROM[A & 0xFFFFF])); + else if(FXSCSIROM && A >= 0x80780000 && A <= 0x807FFFFF) + { + return(le16toh(*(uint16*)&FXSCSIROM[A & 0x7FFFF])); + } + return(0xFFFF); +} + +static uint8 MDFN_FASTCALL mem_rbyte(v810_timestamp_t ×tamp, uint32 A) +{ + if(A <= 0x001FFFFF) + { + RAMLPCHECK; + return(RAM[A]); + } + else if(A <= 0x00FFFFFF) + { + RAMLPCHECK; + return(0xFF); + } + else if(A >= 0xF0000000) // BIOS ROM mirrored throughout 0xF0000000-0xFFFFFFFF, the "official" location + // is at 0xFFF00000(what about on a PC-FXGA??) + { + timestamp += 2; + return(BIOSROM[A & 0xFFFFF]); + } + else if(A >= 0xE0000000 && A <= 0xE7FFFFFF && !(A & 1)) + { + if(BRAMDisabled) + return(0xFF); + + //printf("%d\n", (A - 0xE0000000) >> 1); + return(BackupRAM[(A & 0xFFFF) >> 1]); + } + else if(A >= 0xE8000000 && A <= 0xE9FFFFFF) + { + if(BRAMDisabled) + return(0xFF); + + if(!(BackupControl & 0x2)) + { + FXDBG("Read8 from external BRAM when not enabled."); + } + + return(ExBackupRAM[(A & 0xFFFF) >> 1]); + } + else if(A >= 0x80000000 && A <= 0x807FFFFF) + { + //FXDBG("Mem->IO B Read Translation: %08x -> %08x", A, A & 0x7FFFFF); + return(port_rbyte(timestamp, A & 0x7FFFFF)); + } + FXDBG("Unknown byte read: %08x", A); + return(0xFF); +} + +static uint16 MDFN_FASTCALL mem_rhword(v810_timestamp_t ×tamp, uint32 A) +{ + if(A <= 0x001FFFFF) + { + RAMLPCHECK; + return(le16toh(*(uint16*)&RAM[A])); + } + else if(A <= 0x00FFFFFF) + { + RAMLPCHECK; + return(0xFFFF); + } + else if(A >= 0xF0000000) // BIOS ROM mirrored throughout 0xF0000000-0xFFFFFFFF, the "official" location + // is at 0xFFF00000 + { + timestamp += 2; + return(le16toh(*(uint16 *)&BIOSROM[A & 0xFFFFF])); + } + else if(A >= 0xA0000000 && A <= 0xA3FFFFFF) + { + timestamp += 4; + return(FXVCE_Read16(0x4)); + } + else if(A >= 0xA4000000 && A <= 0xA7FFFFFF) + { + timestamp += 4; + return(fx_vdc_chips[0]->Read16(1)); + } + else if(A >= 0xA8000000 && A <= 0xABFFFFFF) + { + timestamp += 4; + return(fx_vdc_chips[1]->Read16(1)); + } + else if(A >= 0xAC000000 && A <= 0xAFFFFFFF) + { + timestamp += 4; + return(KING_Read16(timestamp, 0x604)); + } + else if(A >= 0xB0000000 && A <= 0xBFFFFFFF) // Write only + { + return(0); + } + else if(A >= 0xE0000000 && A <= 0xE7FFFFFF) + { + if(BRAMDisabled) + return(0xFFFF); + + //printf("%d\n", (A - 0xE0000000) >> 1); + return(BackupRAM[(A & 0xFFFF) >> 1]); + } + else if(A >= 0xE8000000 && A <= 0xE9FFFFFF) + { + if(BRAMDisabled) + return(0xFFFF); + + if(!(BackupControl & 0x2)) + { + FXDBG("Read16 from external BRAM when not enabled."); + } + + return(ExBackupRAM[(A & 0xFFFF) >> 1]); + } + else if(A >= 0xF8000000 && A <= 0xFFEFFFFF) // PIO + { + FXDBG("PIO H Read: %08x", A); + + return(0x00); + } + else if(A >= 0x80000000 && A <= 0x807FFFFF) + { + //FXDBG("Mem->IO H Read Translation: %08x -> %08x", A, A & 0x7FFFFF); + + return(port_rhword(timestamp, A & 0x7FFFFF)); + } + FXDBG("Unknown hword read: %08x", A); + + return(0xFFFF); +} + +static uint32 MDFN_FASTCALL mem_rword(v810_timestamp_t ×tamp, uint32 A) +{ + if(A <= 0x001FFFFF) + { + RAMLPCHECK; + return(le32toh(*(uint32*)&RAM[A])); + } + else if(A <= 0x00FFFFFF) + { + RAMLPCHECK; + return(0xFFFFFFFF); + } + else if(A >= 0xB0000000 && A <= 0xBFFFFFFF) // Write only + { + return(0); + } + else + { + FXDBG("Warning: mem_rword() called for 16-bit bus access: %08x", A); + return(mem_rhword(timestamp, A) | (mem_rhword(timestamp, A | 2) << 16)); + } + + FXDBG("Unknown word read: %08x", A); + + return(0xFFFFFFFF); +} + +static void MDFN_FASTCALL mem_wbyte(v810_timestamp_t ×tamp, uint32 A, uint8 V) +{ + if(A <= 0x001FFFFF) + { + RAMLPCHECK; + RAM[A] = V; + } + else if(A <= 0x00FFFFFF) + { + RAMLPCHECK; + } + else if(A >= 0xE0000000 && A <= 0xE7FFFFFF && !(A & 1)) + { + if(BRAMDisabled) + return; + + if(BackupControl & 0x1) + { + BackupRAM[(A & 0xFFFF) >> 1] = V; + } + } + else if(A >= 0xE8000000 && A <= 0xE9FFFFFF) + { + //printf("ExWrite: %08x", A); + if(BRAMDisabled) + return; + + if(BackupControl & 0x2) + { + ExBackupRAM[(A & 0xFFFF) >> 1] = V; + } + } + else if(A >= 0xF8000000 && A <= 0xFFEFFFFF) + { + FXDBG("PIO B Write: %08x %02x", A, V); + + // PIO? + } + else if(A >= 0x80000000 && A <= 0x807FFFFF) + { + //FXDBG("Mem->IO B Write Translation: %08x %02x -> %08x", A, V, A & 0x7FFFFF); + port_wbyte(timestamp, A & 0x7FFFFF, V); + } +} + +static void MDFN_FASTCALL mem_whword(v810_timestamp_t ×tamp, uint32 A, uint16 V) +{ + if(A <= 0x001FFFFF) + { + RAMLPCHECK; + *(uint16*)&RAM[A] = htole16(V); + } + else if(A <= 0x00FFFFFF) + { + RAMLPCHECK; + } + else if(A >= 0xE0000000 && A <= 0xE7FFFFFF) + { + if(BRAMDisabled) + return; + + if(BackupControl & 0x1) + { + BackupRAM[(A & 0xFFFF) >> 1] = (uint8)V; + } + } + else if(A >= 0xE8000000 && A <= 0xE9FFFFFF) + { + //printf("ExWrite16: %08x", A); + if(BRAMDisabled) + return; + + if(BackupControl & 0x2) + { + ExBackupRAM[(A & 0xFFFF) >> 1] = (uint8)V; + } + } + else if(A >= 0xF8000000 && A <= 0xFFEFFFFF) + { + FXDBG("PIO H Write: %08x %04x", A, V); + + // PIO? + } + else if(A >= 0xA0000000 && A <= 0xAFFFFFFF) // Read only + { + + } + else if(A >= 0xB0000000 && A <= 0xB3FFFFFF) + { + timestamp += 2; + FXVCE_Write16(0x4, V); + } + else if(A >= 0xB4000000 && A <= 0xB7FFFFFF) + { + timestamp += 2; + fx_vdc_chips[0]->Write16(1, V); + } + else if(A >= 0xB8000000 && A <= 0xBBFFFFFF) + { + timestamp += 2; + fx_vdc_chips[1]->Write16(1, V); + } + else if(A >= 0xBC000000 && A <= 0xBFFFFFFF) + { + timestamp += 2; + KING_Write16(timestamp, 0x604, V); + } + else if(A >= 0x80000000 && A <= 0x807FFFFF) + { + //FXDBG("Mem->IO H Write Translation: %08x %04x -> %08x", A, V, A & 0x7FFFFF); + + port_whword(timestamp, A & 0x7FFFFF, V); + } + else + { + FXDBG("Unknown hword write: %08x %04x", A, V); + } +} + +static void MDFN_FASTCALL mem_wword(v810_timestamp_t ×tamp, uint32 A, uint32 V) +{ + if(A <= 0x001FFFFF) + { + RAMLPCHECK; + *(uint32*)&RAM[A] = htole32(V); + } + else if(A <= 0x00FFFFFF) + { + RAMLPCHECK; + } + else if(A >= 0xA0000000 && A <= 0xAFFFFFFF) // Read only + { + + } + else + { + FXDBG("Warning: mem_wword() called for 16-bit bus access: %08x", A); + mem_whword(timestamp, A, V); + mem_whword(timestamp, A | 2, V >> 16); + } +} diff --git a/libmednahawk/src/pcfx/pcfx.cpp b/libmednahawk/src/pcfx/pcfx.cpp new file mode 100644 index 0000000000..319430b767 --- /dev/null +++ b/libmednahawk/src/pcfx/pcfx.cpp @@ -0,0 +1,1427 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pcfx.h" +#include "soundbox.h" +#include "input.h" +#include "king.h" +#include "timer.h" +#include "interrupt.h" +#include "debug.h" +#include "rainbow.h" +#include "huc6273.h" +#include "fxscsi.h" +#include "../cdrom/scsicd.h" +#include "../mempatcher.h" +#include "../cdrom/cdromif.h" +#include "../md5.h" +#include "../clamp.h" + +#include +#include +#include +#include + +/* FIXME: soundbox, vce, vdc, rainbow, and king store wait states should be 4, not 2, but V810 has write buffers which can mask wait state penalties. + This is a hack to somewhat address the issue, but to really fix it, we need to handle write buffer emulation in the V810 emulation core itself. +*/ + +static std::vector *cdifs = NULL; +static bool CD_TrayOpen; +static int CD_SelectedDisc; // -1 for no disc + +V810 PCFX_V810; + +int64 pcfx_timestamp_base; + +static uint8 *BIOSROM = NULL; // 1MB +static uint8 *RAM = NULL; // 2MB +static uint8 *FXSCSIROM = NULL; // 512KiB + +static uint32 RAM_LPA; // Last page access + +static const int RAM_PageSize = 2048; +static const int RAM_PageNOTMask = ~(RAM_PageSize - 1); + +static uint16 Last_VDC_AR[2]; + +static bool WantHuC6273 = FALSE; + +//static +VDC *fx_vdc_chips[2]; + +static uint16 BackupControl; +static uint8 BackupRAM[0x8000], ExBackupRAM[0x8000]; +static uint8 ExBusReset; // I/O Register at 0x0700 + +static bool BRAMDisabled; // Cached at game load, don't remove this caching behavior or save game loss may result(if we ever get a GUI). + +// Checks to see if this main-RAM-area access +// is in the same DRAM page as the last access. +#define RAMLPCHECK \ +{ \ + if((A & RAM_PageNOTMask) != RAM_LPA) \ + { \ + timestamp += 3; \ + RAM_LPA = A & RAM_PageNOTMask; \ + } \ +} + +static v810_timestamp_t next_pad_ts, next_timer_ts, next_adpcm_ts, next_king_ts; + +void PCFX_FixNonEvents(void) +{ + if(next_pad_ts & 0x40000000) + next_pad_ts = PCFX_EVENT_NONONO; + + if(next_timer_ts & 0x40000000) + next_timer_ts = PCFX_EVENT_NONONO; + + if(next_adpcm_ts & 0x40000000) + next_adpcm_ts = PCFX_EVENT_NONONO; + + if(next_king_ts & 0x40000000) + next_king_ts = PCFX_EVENT_NONONO; +} + +void PCFX_Event_Reset(void) +{ + next_pad_ts = PCFX_EVENT_NONONO; + next_timer_ts = PCFX_EVENT_NONONO; + next_adpcm_ts = PCFX_EVENT_NONONO; + next_king_ts = PCFX_EVENT_NONONO; +} + +static INLINE uint32 CalcNextTS(void) +{ + v810_timestamp_t next_timestamp = next_king_ts; + + if(next_timestamp > next_pad_ts) + next_timestamp = next_pad_ts; + + if(next_timestamp > next_timer_ts) + next_timestamp = next_timer_ts; + + if(next_timestamp > next_adpcm_ts) + next_timestamp = next_adpcm_ts; + + return(next_timestamp); +} + +static void RebaseTS(const v810_timestamp_t timestamp) +{ + assert(next_pad_ts > timestamp); + assert(next_timer_ts > timestamp); + assert(next_adpcm_ts > timestamp); + assert(next_king_ts > timestamp); + + next_pad_ts -= timestamp; + next_timer_ts -= timestamp; + next_adpcm_ts -= timestamp; + next_king_ts -= timestamp; +} + + +void PCFX_SetEvent(const int type, const v810_timestamp_t next_timestamp) +{ + //assert(next_timestamp > PCFX_V810.v810_timestamp); + + if(type == PCFX_EVENT_PAD) + next_pad_ts = next_timestamp; + else if(type == PCFX_EVENT_TIMER) + next_timer_ts = next_timestamp; + else if(type == PCFX_EVENT_ADPCM) + next_adpcm_ts = next_timestamp; + else if(type == PCFX_EVENT_KING) + next_king_ts = next_timestamp; + + if(next_timestamp < PCFX_V810.GetEventNT()) + PCFX_V810.SetEventNT(next_timestamp); +} + +int32 MDFN_FASTCALL pcfx_event_handler(const v810_timestamp_t timestamp) +{ + if(timestamp >= next_king_ts) + next_king_ts = KING_Update(timestamp); + + if(timestamp >= next_pad_ts) + next_pad_ts = FXINPUT_Update(timestamp); + + if(timestamp >= next_timer_ts) + next_timer_ts = FXTIMER_Update(timestamp); + + if(timestamp >= next_adpcm_ts) + next_adpcm_ts = SoundBox_ADPCMUpdate(timestamp); + +#if 1 + assert(next_king_ts > timestamp); + assert(next_pad_ts > timestamp); + assert(next_timer_ts > timestamp); + assert(next_adpcm_ts > timestamp); +#endif + return(CalcNextTS()); +} + +static void ForceEventUpdates(const uint32 timestamp) +{ + next_king_ts = KING_Update(timestamp); + next_pad_ts = FXINPUT_Update(timestamp); + next_timer_ts = FXTIMER_Update(timestamp); + next_adpcm_ts = SoundBox_ADPCMUpdate(timestamp); + + //printf("Meow: %d\n", CalcNextTS()); + PCFX_V810.SetEventNT(CalcNextTS()); +} + +#include "io-handler.inc" +#include "mem-handler.inc" + +typedef struct +{ + int8 tracknum; + int8 format; + uint32 lba; +} CDGameEntryTrack; + +typedef struct +{ + const char *name; + const char *name_original; // Original non-Romanized text. + const uint32 flags; // Emulation flags. + const unsigned int discs; // Number of discs for this game. + CDGameEntryTrack tracks[2][100]; // 99 tracks and 1 leadout track +} CDGameEntry; + +#define CDGE_FORMAT_AUDIO 0 +#define CDGE_FORMAT_DATA 1 + +#define CDGE_FLAG_ACCURATE_V810 0x01 +#define CDGE_FLAG_FXGA 0x02 + +static uint32 EmuFlags; + +static CDGameEntry GameList[] = +{ + #include "gamedb.inc" +}; + + +static void Emulate(EmulateSpecStruct *espec) +{ + v810_timestamp_t v810_timestamp; + + FXINPUT_Frame(); + + MDFNMP_ApplyPeriodicCheats(); + + if(espec->VideoFormatChanged) + KING_SetPixelFormat(espec->surface->format); //.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + + if(espec->SoundFormatChanged) + SoundBox_SetSoundRate(espec->SoundRate); + + + KING_StartFrame(fx_vdc_chips, espec); //espec->surface, &espec->DisplayRect, espec->LineWidths, espec->skip); + + v810_timestamp = PCFX_V810.Run(pcfx_event_handler); + + + PCFX_FixNonEvents(); + + // Call before resetting v810_timestamp to 0 + ForceEventUpdates(v810_timestamp); + + espec->SoundBufSize = SoundBox_Flush(v810_timestamp, espec->SoundBuf, espec->SoundBufMaxSize); + + KING_EndFrame(v810_timestamp); + FXTIMER_ResetTS(); + FXINPUT_ResetTS(); + SoundBox_ResetTS(); + + // Call this AFTER all the EndFrame/Flush/ResetTS stuff + RebaseTS(v810_timestamp); + + espec->MasterCycles = v810_timestamp; + + pcfx_timestamp_base += v810_timestamp; + + PCFX_V810.ResetTS(); +} + +static void PCFX_Reset(void) +{ + PCFX_Event_Reset(); + + RAM_LPA = 0; + + ExBusReset = 0; + BackupControl = 0; + + Last_VDC_AR[0] = 0; + Last_VDC_AR[1] = 0; + + memset(RAM, 0x00, 2048 * 1024); + + for(int i = 0; i < 2; i++) + { + int32 dummy_ne; + + dummy_ne = fx_vdc_chips[i]->Reset(); + } + + KING_Reset(); // SCSICD_Power() is called from KING_Reset() + SoundBox_Reset(); + RAINBOW_Reset(); + + if(WantHuC6273) + HuC6273_Reset(); + + PCFXIRQ_Reset(); + FXTIMER_Reset(); + PCFX_V810.Reset(); + pcfx_timestamp_base = 0; + + ForceEventUpdates(0); +} + +static void PCFX_Power(void) +{ + PCFX_Reset(); +} + +#ifdef WANT_DEBUGGER + +static uint8 GAS_SectorCache[2048]; +static int32 GAS_SectorCacheWhich = -1; // disc num is |'d in after << 24 + +static void PCFXDBG_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + int32 ws = 0; + + if(!strcmp(name, "cpu")) + { + while(Length--) + { + Address &= 0xFFFFFFFF; + *Buffer = mem_rbyte(ws, Address); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= 2048 * 1024 - 1; + *Buffer = RAM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "backup")) + { + while(Length--) + { + Address &= 0x7FFF; + *Buffer = BackupRAM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "exbackup")) + { + while(Length--) + { + Address &= 0x7FFF; + *Buffer = ExBackupRAM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "bios")) + { + while(Length--) + { + Address &= 1024 * 1024 - 1; + *Buffer = BIOSROM[Address]; + Address++; + Buffer++; + } + } + else if(!strncmp(name, "track", strlen("track"))) + { + int disc = 0, track = 0, sector_base = 0; + + trio_sscanf(name, "track%d-%d-%d", &disc, &track, §or_base); + + while(Length--) + { + int32 sector = (Address / 2048) + sector_base; + int32 sector_offset = Address % 2048; + + if((sector | (disc << 24)) != GAS_SectorCacheWhich) + { + if(!(*cdifs)[disc]->ReadSector(GAS_SectorCache, sector, 1)) + memset(GAS_SectorCache, 0, 2048); + + GAS_SectorCacheWhich = sector | (disc << 24); + } + + *Buffer = GAS_SectorCache[sector_offset]; + + Address++; + Buffer++; + } + } +} + +static void PCFXDBG_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + while(Length--) + { + Address &= 0xFFFFFFFF; + if(Address >= 0xFFF00000 && Address <= 0xFFFFFFFF) + { + BIOSROM[Address & 0xFFFFF] = *Buffer; + } + else if(Address <= 0x1FFFFF) + { + RAM[Address & 0x1FFFFF] = *Buffer; + } + else if(Address >= 0xE0000000 && Address <= 0xE7FFFFFF) + { + if(!(Address & 1)) + BackupRAM[(Address & 0xFFFF) >> 1] = *Buffer; + } + else if(Address >= 0xE8000000 && Address <= 0xE9FFFFFF) + { + if(!(Address & 1)) + ExBackupRAM[(Address & 0xFFFF) >> 1] = *Buffer; + } + Address++; + Buffer++; + } + } + else if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= 2048 * 1024 - 1; + RAM[Address] = *Buffer; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "backup")) + { + while(Length--) + { + Address &= 0x7FFF; + BackupRAM[Address] = *Buffer; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "exbackup")) + { + while(Length--) + { + Address &= 0x7FFF; + ExBackupRAM[Address] = *Buffer; + Address++; + Buffer++; + } + } + + else if(!strcmp(name, "bios")) + { + while(Length--) + { + Address &= 1024 * 1024 - 1; + BIOSROM[Address] = *Buffer; + Address++; + Buffer++; + } + } + +} +#endif + +static void VDCA_IRQHook(bool asserted) +{ + PCFXIRQ_Assert(PCFXIRQ_SOURCE_VDCA, asserted); +} + +static void VDCB_IRQHook(bool asserted) +{ + PCFXIRQ_Assert(PCFXIRQ_SOURCE_VDCB, asserted); +} + +static void SetRegGroups(void); + +static bool LoadCommon(std::vector *CDInterfaces) +{ + std::string biospath = MDFN_MakeFName(MDFNMKF_FIRMWARE, 0, MDFN_GetSettingS("pcfx.bios").c_str()); + std::string fxscsi_path = MDFN_GetSettingS("pcfx.fxscsi"); // For developers only, so don't make it convenient. + MDFNFILE BIOSFile; + V810_Emu_Mode cpu_mode; + + #ifdef WANT_DEBUGGER + SetRegGroups(); + #endif + + if(!BIOSFile.Open(biospath, NULL, "BIOS")) + return(0); + + cpu_mode = (V810_Emu_Mode)MDFN_GetSettingI("pcfx.cpu_emulation"); + if(cpu_mode == _V810_EMU_MODE_COUNT) + { + cpu_mode = (EmuFlags & CDGE_FLAG_ACCURATE_V810) ? V810_EMU_MODE_ACCURATE : V810_EMU_MODE_FAST; + } + + if(EmuFlags & CDGE_FLAG_FXGA) + { + //WantHuC6273 = TRUE; + } + + MDFN_printf(_("V810 Emulation Mode: %s\n"), (cpu_mode == V810_EMU_MODE_ACCURATE) ? _("Accurate") : _("Fast")); + PCFX_V810.Init(cpu_mode, false); + + uint32 RAM_Map_Addresses[1] = { 0x00000000 }; + uint32 BIOSROM_Map_Addresses[1] = { 0xFFF00000 }; + + // todo: cleanup on error + if(!(RAM = PCFX_V810.SetFastMap(RAM_Map_Addresses, 0x00200000, 1, _("RAM")))) + { + return(0); + } + + if(!(BIOSROM = PCFX_V810.SetFastMap(BIOSROM_Map_Addresses, 0x00100000, 1, _("BIOS ROM")))) + { + return(0); + } + + if(BIOSFile.Size() != 1024 * 1024) + { + MDFN_PrintError(_("BIOS ROM file is incorrect size.\n")); + return(0); + } + + memcpy(BIOSROM, BIOSFile.Data(), 1024 * 1024); + + BIOSFile.Close(); + + if(fxscsi_path != "0" && fxscsi_path != "" && fxscsi_path != "none") + { + MDFNFILE FXSCSIFile; + + if(!FXSCSIFile.Open(fxscsi_path, NULL, "FX-SCSI ROM")) + return(0); + + if(FXSCSIFile.Size() != 1024 * 512) + { + MDFN_PrintError(_("BIOS ROM file is incorrect size.\n")); + return(0); + } + + uint32 FXSCSI_Map_Addresses[1] = { 0x80780000 }; + + if(!(FXSCSIROM = PCFX_V810.SetFastMap(FXSCSI_Map_Addresses, 0x0080000, 1, _("FX-SCSI ROM")))) + { + return(0); + } + + memcpy(FXSCSIROM, FXSCSIFile.Data(), 1024 * 512); + + FXSCSIFile.Close(); + } + + #ifdef WANT_DEBUGGER + ASpace_Add(PCFXDBG_GetAddressSpaceBytes, PCFXDBG_PutAddressSpaceBytes, "cpu", "CPU Physical", 32); + ASpace_Add(PCFXDBG_GetAddressSpaceBytes, PCFXDBG_PutAddressSpaceBytes, "ram", "RAM", 21); + ASpace_Add(PCFXDBG_GetAddressSpaceBytes, PCFXDBG_PutAddressSpaceBytes, "backup", "Internal Backup Memory", 15); + ASpace_Add(PCFXDBG_GetAddressSpaceBytes, PCFXDBG_PutAddressSpaceBytes, "exbackup", "External Backup Memory", 15); + ASpace_Add(PCFXDBG_GetAddressSpaceBytes, PCFXDBG_PutAddressSpaceBytes, "bios", "BIOS ROM", 20); + #endif + + for(int i = 0; i < 2; i++) + { + fx_vdc_chips[i] = new VDC(MDFN_GetSettingB("pcfx.nospritelimit"), 65536); + fx_vdc_chips[i]->SetWSHook(NULL); + fx_vdc_chips[i]->SetIRQHook(i ? VDCB_IRQHook : VDCA_IRQHook); + + //fx_vdc_chips[0] = FXVDC_Init(PCFXIRQ_SOURCE_VDCA, MDFN_GetSettingB("pcfx.nospritelimit")); + //fx_vdc_chips[1] = FXVDC_Init(PCFXIRQ_SOURCE_VDCB, MDFN_GetSettingB("pcfx.nospritelimit")); + } + + SoundBox_Init(MDFN_GetSettingB("pcfx.adpcm.emulate_buggy_codec"), MDFN_GetSettingB("pcfx.adpcm.suppress_channel_reset_clicks")); + RAINBOW_Init(MDFN_GetSettingB("pcfx.rainbow.chromaip")); + FXINPUT_Init(); + + if(WantHuC6273) + HuC6273_Init(); + + if(!KING_Init()) + { + MDFN_free(BIOSROM); + MDFN_free(RAM); + BIOSROM = NULL; + RAM = NULL; + return(0); + } + + CD_TrayOpen = false; + CD_SelectedDisc = 0; + + SCSICD_SetDisc(true, NULL, true); + SCSICD_SetDisc(false, (*CDInterfaces)[0], true); + + + #ifdef WANT_DEBUGGER + for(unsigned disc = 0; disc < CDInterfaces->size(); disc++) + { + CDUtility::TOC toc; + + (*CDInterfaces)[disc]->ReadTOC(&toc); + + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(toc.tracks[track].control & 0x4) + { + char tmpn[256], tmpln[256]; + uint32 sectors; + + trio_snprintf(tmpn, 256, "track%d-%d-%d", disc, track, toc.tracks[track].lba); + trio_snprintf(tmpln, 256, "CD - Disc %d/%d - Track %d/%d", disc + 1, CDInterfaces->size(), track, toc.last_track - toc.first_track + 1); + + sectors = toc.tracks[track + 1].lba - toc.tracks[track].lba; + ASpace_Add(PCFXDBG_GetAddressSpaceBytes, PCFXDBG_PutAddressSpaceBytes, tmpn, tmpln, 0, sectors * 2048); + } + } + } + #endif + + + MDFNGameInfo->fps = (uint32)((double)7159090.90909090 / 455 / 263 * 65536 * 256); + + MDFNGameInfo->nominal_height = MDFN_GetSettingUI("pcfx.slend") - MDFN_GetSettingUI("pcfx.slstart") + 1; + + // Emulation raw framebuffer image should always be of 256 width when the pcfx.high_dotclock_width setting is set to "256", + // but it could be either 256 or 341 when the setting is set to "341", so stay with 1024 in that case so we won't have + // a messed up aspect ratio in our recorded QuickTime movies. + MDFNGameInfo->lcm_width = (MDFN_GetSettingUI("pcfx.high_dotclock_width") == 256) ? 256 : 1024; + MDFNGameInfo->lcm_height = MDFNGameInfo->nominal_height; + + MDFNMP_Init(1024 * 1024, ((uint64)1 << 32) / (1024 * 1024)); + MDFNMP_AddRAM(2048 * 1024, 0x00000000, RAM); + + + BRAMDisabled = MDFN_GetSettingB("pcfx.disable_bram"); + + if(BRAMDisabled) + MDFN_printf(_("Warning: BRAM is disabled per pcfx.disable_bram setting. This is simulating a malfunction.\n")); + + if(!BRAMDisabled) + { + // Initialize backup RAM + memset(BackupRAM, 0, sizeof(BackupRAM)); + memset(ExBackupRAM, 0, sizeof(ExBackupRAM)); + + static const uint8 BRInit00[] = { 0x24, 0x8A, 0xDF, 0x50, 0x43, 0x46, 0x58, 0x53, 0x72, 0x61, 0x6D, 0x80, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0xF9, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + static const uint8 BRInit80[] = { 0xF9, 0xFF, 0xFF }; + + memcpy(BackupRAM + 0x00, BRInit00, sizeof(BRInit00)); + memcpy(BackupRAM + 0x80, BRInit80, sizeof(BRInit80)); + + + static const uint8 ExBRInit00[] = { 0x24, 0x8A, 0xDF, 0x50, 0x43, 0x46, 0x58, 0x43, 0x61, 0x72, 0x64, 0x80, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0xF9, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + static const uint8 ExBRInit80[] = { 0xF9, 0xFF, 0xFF }; + + memcpy(ExBackupRAM + 0x00, ExBRInit00, sizeof(ExBRInit00)); + memcpy(ExBackupRAM + 0x80, ExBRInit80, sizeof(ExBRInit80)); + + gzFile savefp; + if((savefp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"))) + { + gzread(savefp, BackupRAM, 0x8000); + gzread(savefp, ExBackupRAM, 0x8000); + gzclose(savefp); + } + } + + // Default to 16-bit bus. + for(int i = 0; i < 256; i++) + { + PCFX_V810.SetMemReadBus32(i, FALSE); + PCFX_V810.SetMemWriteBus32(i, FALSE); + } + + // 16MiB RAM area. + PCFX_V810.SetMemReadBus32(0, TRUE); + PCFX_V810.SetMemWriteBus32(0, TRUE); + + // Bitstring read range + for(int i = 0xA0; i <= 0xAF; i++) + { + PCFX_V810.SetMemReadBus32(i, FALSE); // Reads to the read range are 16-bit, and + PCFX_V810.SetMemWriteBus32(i, TRUE); // writes are 32-bit. + } + + // Bitstring write range + for(int i = 0xB0; i <= 0xBF; i++) + { + PCFX_V810.SetMemReadBus32(i, TRUE); // Reads to the write range are 32-bit, + PCFX_V810.SetMemWriteBus32(i, FALSE); // but writes are 16-bit! + } + + // BIOS area + for(int i = 0xF0; i <= 0xFF; i++) + { + PCFX_V810.SetMemReadBus32(i, FALSE); + PCFX_V810.SetMemWriteBus32(i, FALSE); + } + + PCFX_V810.SetMemReadHandlers(mem_rbyte, mem_rhword, mem_rword); + PCFX_V810.SetMemWriteHandlers(mem_wbyte, mem_whword, mem_wword); + + PCFX_V810.SetIOReadHandlers(port_rbyte, port_rhword, NULL); + PCFX_V810.SetIOWriteHandlers(port_wbyte, port_whword, NULL); + + + + return(1); +} + +static void DoMD5CDVoodoo(std::vector *CDInterfaces) +{ + const CDGameEntry *found_entry = NULL; + CDUtility::TOC toc; + + #if 0 + puts("{"); + puts(" ,"); + puts(" ,"); + puts(" 0,"); + puts(" 1,"); + puts(" {"); + puts(" {"); + + for(int i = CDIF_GetFirstTrack(); i <= CDIF_GetLastTrack(); i++) + { + CDIF_Track_Format tf; + + CDIF_GetTrackFormat(i, tf); + + printf(" { %d, %s, %d },\n", i, (tf == CDIF_FORMAT_AUDIO) ? "CDIF_FORMAT_AUDIO" : "CDIF_FORMAT_MODE1", CDIF_GetTrackStartPositionLBA(i)); + } + printf(" { -1, (CDIF_Track_Format)-1, %d },\n", CDIF_GetSectorCountLBA()); + puts(" }"); + puts(" }"); + puts("},"); + //exit(1); + #endif + + for(unsigned if_disc = 0; if_disc < CDInterfaces->size(); if_disc++) + { + (*CDInterfaces)[if_disc]->ReadTOC(&toc); + + if(toc.first_track == 1) + { + for(unsigned int g = 0; g < sizeof(GameList) / sizeof(CDGameEntry); g++) + { + const CDGameEntry *entry = &GameList[g]; + + assert(entry->discs == 1 || entry->discs == 2); + + for(unsigned int disc = 0; disc < entry->discs; disc++) + { + const CDGameEntryTrack *et = entry->tracks[disc]; + bool GameFound = TRUE; + + while(et->tracknum != -1 && GameFound) + { + assert(et->tracknum > 0 && et->tracknum < 100); + + if(toc.tracks[et->tracknum].lba != et->lba) + GameFound = FALSE; + + if( ((et->format == CDGE_FORMAT_DATA) ? 0x4 : 0x0) != (toc.tracks[et->tracknum].control & 0x4)) + GameFound = FALSE; + + et++; + } + + if(et->tracknum == -1) + { + if((et - 1)->tracknum != toc.last_track) + GameFound = FALSE; + + if(et->lba != toc.tracks[100].lba) + GameFound = FALSE; + } + + if(GameFound) + { + found_entry = entry; + goto FoundIt; + } + } // End disc count loop + } + } + + FoundIt: ; + + if(found_entry) + { + EmuFlags = found_entry->flags; + + if(found_entry->discs > 1) + { + const char *hash_prefix = "Mednafen PC-FX Multi-Game Set"; + md5_context md5_gameset; + + md5_gameset.starts(); + + md5_gameset.update_string(hash_prefix); + + for(unsigned int disc = 0; disc < found_entry->discs; disc++) + { + const CDGameEntryTrack *et = found_entry->tracks[disc]; + + while(et->tracknum) + { + md5_gameset.update_u32_as_lsb(et->tracknum); + md5_gameset.update_u32_as_lsb((uint32)et->format); + md5_gameset.update_u32_as_lsb(et->lba); + + if(et->tracknum == -1) + break; + et++; + } + } + md5_gameset.finish(MDFNGameInfo->GameSetMD5); + MDFNGameInfo->GameSetMD5Valid = TRUE; + } + //printf("%s\n", found_entry->name); + MDFNGameInfo->name = (UTF8*)strdup(found_entry->name); + break; + } + } // end: for(unsigned if_disc = 0; if_disc < CDInterfaces->size(); if_disc++) + + MDFN_printf(_("CD Layout MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + if(MDFNGameInfo->GameSetMD5Valid) + MDFN_printf(_("GameSet MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->GameSetMD5, 0).c_str()); +} + +// PC-FX BIOS will look at all data tracks(not just the first one), in contrast to the PCE CD BIOS, which only looks +// at the first data track. +static bool TestMagicCD(std::vector *CDInterfaces) +{ + CDIF *cdiface = (*CDInterfaces)[0]; + CDUtility::TOC toc; + uint8 sector_buffer[2048]; + + memset(sector_buffer, 0, sizeof(sector_buffer)); + + cdiface->ReadTOC(&toc); + + for(int32 track = toc.first_track; track <= toc.last_track; track++) + { + if(toc.tracks[track].control & 0x4) + { + cdiface->ReadSector(sector_buffer, toc.tracks[track].lba, 1); + if(!strncmp("PC-FX:Hu_CD-ROM", (char*)sector_buffer, strlen("PC-FX:Hu_CD-ROM"))) + { + return(TRUE); + } + + if(!strncmp((char *)sector_buffer + 64, "PPPPHHHHOOOOTTTTOOOO____CCCCDDDD", 32)) + return(true); + } + } + return(FALSE); +} + +static int LoadCD(std::vector *CDInterfaces) +{ + EmuFlags = 0; + + cdifs = CDInterfaces; + + DoMD5CDVoodoo(CDInterfaces); + + if(!LoadCommon(CDInterfaces)) + return(0); + + MDFN_printf(_("Emulated CD-ROM drive speed: %ux\n"), (unsigned int)MDFN_GetSettingUI("pcfx.cdspeed")); + + MDFNGameInfo->GameType = GMT_CDROM; + + PCFX_Power(); + + return(1); +} + +static void PCFX_CDInsertEject(void) +{ + CD_TrayOpen = !CD_TrayOpen; + + for(unsigned disc = 0; disc < cdifs->size(); disc++) + { + if(!(*cdifs)[disc]->Eject(CD_TrayOpen)) + { + MDFN_DispMessage(_("Eject error.")); + CD_TrayOpen = !CD_TrayOpen; + } + } + + if(CD_TrayOpen) + MDFN_DispMessage(_("Virtual CD Drive Tray Open")); + else + MDFN_DispMessage(_("Virtual CD Drive Tray Closed")); + + SCSICD_SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL); +} + +static void PCFX_CDEject(void) +{ + if(!CD_TrayOpen) + PCFX_CDInsertEject(); +} + +static void PCFX_CDSelect(void) +{ + if(cdifs && CD_TrayOpen) + { + CD_SelectedDisc = (CD_SelectedDisc + 1) % (cdifs->size() + 1); + + if((unsigned)CD_SelectedDisc == cdifs->size()) + CD_SelectedDisc = -1; + + if(CD_SelectedDisc == -1) + MDFN_DispMessage(_("Disc absence selected.")); + else + MDFN_DispMessage(_("Disc %d of %d selected."), CD_SelectedDisc + 1, (int)cdifs->size()); + } +} + +static void CloseGame(void) +{ + if(!BRAMDisabled) + { + std::vector EvilRams; + + EvilRams.push_back(PtrLengthPair(BackupRAM, 0x8000)); + EvilRams.push_back(PtrLengthPair(ExBackupRAM, 0x8000)); + + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, EvilRams); + } + + for(int i = 0; i < 2; i++) + if(fx_vdc_chips[i]) + { + delete fx_vdc_chips[i]; + fx_vdc_chips[i] = NULL; + } + + RAINBOW_Close(); + KING_Close(); + PCFX_V810.Kill(); + + // The allocated memory RAM and BIOSROM is free'd in V810_Kill() + RAM = NULL; + BIOSROM = NULL; +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_INSERT_DISK: + PCFX_CDInsertEject(); + break; + + case MDFN_MSC_SELECT_DISK: + PCFX_CDSelect(); + break; + + case MDFN_MSC_EJECT_DISK: + PCFX_CDEject(); + break; + + case MDFN_MSC_RESET: PCFX_Reset(); break; + case MDFN_MSC_POWER: PCFX_Power(); break; + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(RAM, 0x200000), + SFARRAY16(Last_VDC_AR, 2), + SFVAR(BackupControl), + SFVAR(ExBusReset), + SFARRAY(BackupRAM, BRAMDisabled ? 0 : 0x8000), + SFARRAY(ExBackupRAM, BRAMDisabled ? 0 : 0x8000), + + SFVAR(pcfx_timestamp_base), + + SFVAR(next_pad_ts), + SFVAR(next_timer_ts), + SFVAR(next_adpcm_ts), + SFVAR(next_king_ts), + + SFVAR(CD_TrayOpen), + SFVAR(CD_SelectedDisc), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + + for(int i = 0; i < 2; i++) + ret &= fx_vdc_chips[i]->StateAction(sm, load, data_only, i ? "VDC1" : "VDC0"); + + ret &= FXINPUT_StateAction(sm, load, data_only); + ret &= PCFXIRQ_StateAction(sm, load, data_only); + ret &= KING_StateAction(sm, load, data_only); + ret &= PCFX_V810.StateAction(sm, load, data_only); + ret &= FXTIMER_StateAction(sm, load, data_only); + ret &= SoundBox_StateAction(sm, load, data_only); + ret &= SCSICD_StateAction(sm, load, data_only, "CDRM"); + ret &= RAINBOW_StateAction(sm, load, data_only); + + if(load) + { + //clamp(&PCFX_V810.v810_timestamp, 0, 30 * 1000 * 1000); + //PCFX_SetEvent(PCFX_EVENT_SCSI, SCSICD_Run(v810_timestamp)); // hmm, fixme? + + if(cdifs) + { + // Sanity check. + if(CD_SelectedDisc >= (int)cdifs->size()) + CD_SelectedDisc = (int)cdifs->size() - 1; + + SCSICD_SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL, true); + } + } + + return(ret); +} + +static const MDFNSetting_EnumList V810Mode_List[] = +{ + { "fast", (int)V810_EMU_MODE_FAST, gettext_noop("Fast Mode"), gettext_noop("Fast mode trades timing accuracy, cache emulation, and executing from hardware registers and RAM not intended for code use for performance.")}, + { "accurate", (int)V810_EMU_MODE_ACCURATE, gettext_noop("Accurate Mode"), gettext_noop("Increased timing accuracy, though not perfect, along with cache emulation, at the cost of decreased performance. Additionally, even the pipeline isn't correctly and fully emulated in this mode.") }, + { "auto", (int)_V810_EMU_MODE_COUNT, gettext_noop("Auto Mode"), gettext_noop("Selects \"fast\" or \"accurate\" automatically based on an internal database. If the CD image is not recognized, defaults to \"fast\".") }, + { NULL, 0 }, +}; + + +static const MDFNSetting_EnumList HDCWidthList[] = +{ + { "256", 256, "256 pixels", gettext_noop("This value will cause heavy pixel distortion.") }, + { "341", 341, "341 pixels", gettext_noop("This value will cause moderate pixel distortion.") }, + { "1024", 1024, "1024 pixels", gettext_noop("This value will cause no pixel distortion as long as interpolation is enabled on the video output device and the resolution is sufficiently high, but it will use a lot of CPU time.") }, + { NULL, 0 }, +}; + +static MDFNSetting PCFXSettings[] = +{ +/* + { "pcfx.input.port1", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 1."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port2", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 2."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port3", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 3."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port4", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 4."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port5", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 5."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port6", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 6."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port7", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 7."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, + { "pcfx.input.port8", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input device for input port 8."), NULL, MDFNST_STRING, "gamepad", NULL, NULL }, +*/ + + { "pcfx.input.port1.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap on PC-FX port 1."), gettext_noop("EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5."), MDFNST_BOOL, "0", NULL, NULL }, + { "pcfx.input.port2.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap on PC-FX port 2."), gettext_noop("EXPERIMENTAL emulation of the unreleased multitap. Enables ports 6 7 8."), MDFNST_BOOL, "0", NULL, NULL }, + + + { "pcfx.mouse_sensitivity", MDFNSF_NOFLAGS, gettext_noop("Mouse sensitivity."), NULL, MDFNST_FLOAT, "1.25", NULL, NULL }, + { "pcfx.disable_softreset", MDFNSF_NOFLAGS, gettext_noop("When RUN+SEL are pressed simultaneously, disable both buttons temporarily."), NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, FXINPUT_SettingChanged }, + + { "pcfx.cpu_emulation", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("CPU emulation mode."), NULL, MDFNST_ENUM, "auto", NULL, NULL, NULL, NULL, V810Mode_List }, + { "pcfx.bios", MDFNSF_EMU_STATE, gettext_noop("Path to the ROM BIOS"), NULL, MDFNST_STRING, "pcfx.rom" }, + { "pcfx.fxscsi", MDFNSF_EMU_STATE, gettext_noop("Path to the FX-SCSI ROM"), gettext_noop("Intended for developers only."), MDFNST_STRING, "0" }, + { "pcfx.disable_bram", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Disable internal and external BRAM."), gettext_noop("It is intended for viewing games' error screens that may be different from simple BRAM full and uninitialized BRAM error screens, though it can cause the game to crash outright."), MDFNST_BOOL, "0" }, + { "pcfx.cdspeed", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulated CD-ROM speed."), gettext_noop("Setting the value higher than 2, the default, will decrease loading times in most games by some degree."), MDFNST_UINT, "2", "2", "10" }, + + { "pcfx.nospritelimit", MDFNSF_NOFLAGS, gettext_noop("Remove 16-sprites-per-scanline hardware limit."), NULL, MDFNST_BOOL, "0" }, + { "pcfx.high_dotclock_width", MDFNSF_NOFLAGS, gettext_noop("Emulated width for 7.16MHz dot-clock mode."), gettext_noop("Lower values are faster, but will cause some degree of pixel distortion."), MDFNST_ENUM, "1024", NULL, NULL, NULL, NULL, HDCWidthList }, + + { "pcfx.slstart", MDFNSF_NOFLAGS, gettext_noop("First rendered scanline."), NULL, MDFNST_UINT, "4", "0", "239" }, + { "pcfx.slend", MDFNSF_NOFLAGS, gettext_noop("Last rendered scanline."), NULL, MDFNST_UINT, "235", "0", "239" }, + + { "pcfx.rainbow.chromaip", MDFNSF_NOFLAGS, gettext_noop("Enable bilinear interpolation on the chroma channel of RAINBOW YUV output."), NULL, MDFNST_BOOL, "1" }, + + { "pcfx.adpcm.suppress_channel_reset_clicks", MDFNSF_NOFLAGS, gettext_noop("Hack to suppress clicks caused by forced channel resets."), NULL, MDFNST_BOOL, "1" }, + + // Hack that emulates the codec a buggy ADPCM encoder used for some games' ADPCM. Not enabled by default because it makes some games(with + //correctly-encoded ADPCM?) sound worse + { "pcfx.adpcm.emulate_buggy_codec", MDFNSF_NOFLAGS, gettext_noop("Hack that emulates the codec a buggy ADPCM encoder used for some games' ADPCM."), NULL, MDFNST_BOOL, "0" }, + + { NULL } +}; + +#ifdef WANT_DEBUGGER +static RegType PCFXRegs0[] = +{ + { 0, "PC", "Program Counter", 4 }, + { 0, "PR1", "Program Register 1", 4 }, + { 0, "HSP", "Program Register 2(Handler Stack Pointer)", 4 }, + { 0, "SP", "Program Register 3(Stack Pointer)", 4 }, + { 0, "GP", "Program Register 4(Global Pointer)", 4 }, + { 0, "TP", "Program Register 5(Text Pointer)", 4 }, + { 0, "PR6", "Program Register 6", 4 }, + { 0, "PR7", "Program Register 7", 4 }, + { 0, "PR8", "Program Register 8", 4 }, + { 0, "PR9", "Program Register 9", 4 }, + { 0, "PR10", "Program Register 10", 4 }, + { 0, "PR11", "Program Register 11", 4 }, + { 0, "PR12", "Program Register 12", 4 }, + { 0, "PR13", "Program Register 13", 4 }, + { 0, "PR14", "Program Register 14", 4 }, + { 0, "PR15", "Program Register 15", 4 }, + { 0, "PR16", "Program Register 16", 4 }, + { 0, "PR17", "Program Register 17", 4 }, + { 0, "PR18", "Program Register 18", 4 }, + { 0, "PR19", "Program Register 19", 4 }, + { 0, "PR20", "Program Register 20", 4 }, + { 0, "PR21", "Program Register 21", 4 }, + { 0, "PR22", "Program Register 22", 4 }, + { 0, "PR23", "Program Register 23", 4 }, + { 0, "PR24", "Program Register 24", 4 }, + { 0, "PR25", "Program Register 25", 4 }, + { 0, "PR26", "Program Register 26(String Dest Bit Offset)", 4 }, + { 0, "PR27", "Program Register 27(String Source Bit Offset)", 4 }, + { 0, "PR28", "Program Register 28(String Length)", 4 }, + { 0, "PR29", "Program Register 29(String Dest)", 4 }, + { 0, "PR30", "Program Register 30(String Source)", 4 }, + { 0, "LP", "Program Register 31(Link Pointer)", 4 }, + { 0, "SR0", "Exception/Interrupt PC", 4 }, + { 0, "SR1", "Exception/Interrupt PSW", 4 }, + { 0, "SR2", "Fatal Error PC", 4 }, + { 0, "SR3", "Fatal Error PSW", 4 }, + { 0, "SR4", "Exception Cause Register", 4 }, + { 0, "SR5", "Program Status Word", 4 }, + { 0, "SR6", "Processor ID Register", 4 }, + { 0, "SR7", "Task Control Word", 4 }, + { 0, "SR24", "Cache Control Word", 4 }, + { 0, "SR25", "Address Trap Register", 4 }, + { 0, "IPEND", "Interrupts Pending", 2 }, + { 0, "IMASK", "Interrupt Mask", 2 }, + { 0, "IPRIO0", "Interrupt Priority Register 0", 2 }, + { 0, "IPRIO1", "Interrupt Priority Register 1", 2 }, + { 0, "TCTRL", "Timer Control", 2 }, + { 0, "TPRD", "Timer Period", 2 }, + { 0, "TCNTR", "Timer Counter", 3 }, + + { 0, "KPCTRL0", "Keyport 0 Control", 1 }, + { 0, "KPCTRL1", "Keyport 1 Control", 1 }, + + { 0, "TStamp", "Timestamp", 3 }, + { 0, "", "", 0 }, +}; + +static RegType PCFXRegs1[] = +{ + { 0, "AR", "Active Register", 1 }, + { 0, "MPROGADDR", "Micro-program Address", 2 }, + { 0, "MPROGCTRL", "Micro-program Control", 2 }, + + { 0, "PAGESET", "KRAM Page Settings", 2 }, + { 0, "RTCTRL", "Rainbow Transfer Control", 2 }, + { 0, "RKRAMA", "Rainbow Transfer K-RAM Address", 3}, + { 0, "RSTART", "Rainbow Transfer Start Position", 2}, + { 0, "RCOUNT", "Rainbow Transfer Block Count", 2 }, + { 0, "RIRQLINE", "Raster IRQ Line", 2 }, + { 0, "KRAMWA", "K-RAM Write Address", 4 }, + { 0, "KRAMRA", "K-RAM Read Address", 4 }, + { 0, "DMATA", "DMA Transfer Address", 3 }, + { 0, "DMATS", "DMA Transfer Size", 4 }, + { 0, "DMASTT", "DMA Status", 2 }, + { 0, "ADPCMCTRL", "ADPCM Control", 2 }, + { 0, "ADPCMBM0", "ADPCM Buffer Mode Ch0", 2 }, + { 0, "ADPCMBM1", "ADPCM Buffer Mode Ch1", 2 }, + { 0, "ADPCMPA0", "ADPCM PlayAddress Ch0", 0x100 | 18 }, + { 0, "ADPCMPA1", "ADPCM PlayAddress Ch1", 0x100 | 18 }, + { 0, "ADPCMSA0", "ADPCM Start Address Ch0", 2 }, + { 0, "ADPCMSA1", "ADPCM Start Address Ch1", 2 }, + { 0, "ADPCMIA0", "ADPCM Intermediate Address Ch0", 2 }, + { 0, "ADPCMIA1", "ADPCM Intermediate Address Ch1", 2 }, + { 0, "ADPCMEA0", "ADPCM End Address Ch0", 0x100 | 18 }, + { 0, "ADPCMEA1", "ADPCM End Address Ch1", 0x100 | 18 }, + { 0, "ADPCMStat", "ADPCM Status Register", 1 }, + { 0, "Reg01", "KING Register 0x01", 1 }, + { 0, "Reg02", "KING Register 0x02", 1 }, + { 0, "Reg03", "KING Register 0x03", 1 }, + { 0, "SUBCC", "Sub-channel Control", 1 }, + { 0, "------", "", 0xFFFF }, + { 0, "DB", "SCSI Data Bus", 0x100 | 8 }, + { 0, "BSY", "SCSI BSY", 0x100 | 1 }, + { 0, "REQ", "SCSI REQ", 0x100 | 1 }, + { 0, "ACK", "SCSI ACK", 0x100 | 1 }, + { 0, "MSG", "SCSI MSG", 0x100 | 1 }, + { 0, "IO", "SCSI IO", 0x100 | 1 }, + { 0, "CD", "SCSI CD", 0x100 | 1 }, + { 0, "SEL", "SCSI SEL", 0x100 | 1 }, + + { 0, "", "", 0 }, +}; + +static RegType PCFXRegs4[] = +{ + { 0, "--VCE--", "", 0xFFFF }, + { 0, "Line", "VCE Frame Counter", 0x100 | 9 }, + { 0, "PRIO0", "VCE Priority 0", 0x100 | 12 }, + { 0, "PRIO1", "VCE Priority 1", 2 }, + { 0, "PICMODE", "VCE Picture Mode", 2}, + { 0, "PALRWOF", "VCE Palette R/W Offset", 2 }, + { 0, "PALRWLA", "VCE Palette R/W Latch", 2 }, + { 0, "PALOFS0", "VCE Palette Offset 0", 2 } , + { 0, "PALOFS1", "VCE Palette Offset 1", 2 }, + { 0, "PALOFS2", "VCE Palette Offset 2", 2 }, + { 0, "PALOFS3", "VCE Palette Offset 3", 1 }, + { 0, "CCR", "VCE Fixed Color Register", 2 }, + { 0, "BLE", "VCE Cellophane Setting Register", 2 }, + { 0, "SPBL", "VCE Sprite Cellophane Setting Register", 2 }, + { 0, "COEFF0", "VCE Cellophane Coefficient 0(1A)", 0x100 | 12 }, + { 0, "COEFF1", "VCE Cellophane Coefficient 1(1B)", 0x100 | 12 }, + { 0, "COEFF2", "VCE Cellophane Coefficient 2(2A)", 0x100 | 12 }, + { 0, "COEFF3", "VCE Cellophane Coefficient 3(2B)", 0x100 | 12 }, + { 0, "COEFF4", "VCE Cellophane Coefficient 4(3A)", 0x100 | 12 }, + { 0, "COEFF5", "VCE Cellophane Coefficient 5(3B)", 0x100 | 12 }, + { 0, "CKeyY", "VCE Chroma Key Y", 2 }, + { 0, "CKeyU", "VCE Chroma Key U", 2 }, + { 0, "CKeyV", "VCE Chroma Key V", 2 }, + { 0, "", "", 0 }, +}; + +static uint32 GetRegister_VDC(const unsigned int id, char *special, const uint32 special_len) +{ + return(fx_vdc_chips[(id >> 15) & 1]->GetRegister(id &~0x8000, special, special_len)); +} + +static void SetRegister_VDC(const unsigned int id, uint32 value) +{ + fx_vdc_chips[(id >> 15) & 1]->SetRegister(id &~0x8000, value); +} + + +static RegType VDCRegs[] = +{ + { 0, "--VDC-A--", "", 0xFFFF }, + + { VDC::GSREG_SELECT, "Select", "Register Select, VDC-A", 1 }, + { VDC::GSREG_STATUS, "Status", "Status, VDC-A", 1 }, + + { VDC::GSREG_MAWR, "MAWR", "Memory Write Address, VDC-A", 2 }, + { VDC::GSREG_MARR, "MARR", "Memory Read Address, VDC-A", 2 }, + { VDC::GSREG_CR, "CR", "Control, VDC-A", 2 }, + { VDC::GSREG_RCR, "RCR", "Raster Counter, VDC-A", 2 }, + { VDC::GSREG_BXR, "BXR", "X Scroll, VDC-A", 2 }, + { VDC::GSREG_BYR, "BYR", "Y Scroll, VDC-A", 2 }, + { VDC::GSREG_MWR, "MWR", "Memory Width, VDC-A", 2 }, + + { VDC::GSREG_HSR, "HSR", "HSR, VDC-A", 2 }, + { VDC::GSREG_HDR, "HDR", "HDR, VDC-A", 2 }, + { VDC::GSREG_VSR, "VSR", "VSR, VDC-A", 2 }, + { VDC::GSREG_VDR, "VDR", "VDR, VDC-A", 2 }, + + { VDC::GSREG_VCR, "VCR", "VCR, VDC-A", 2 }, + { VDC::GSREG_DCR, "DCR", "DMA Control, VDC-A", 2 }, + { VDC::GSREG_SOUR, "SOUR", "VRAM DMA Source Address, VDC-A", 2 }, + { VDC::GSREG_DESR, "DESR", "VRAM DMA Dest Address, VDC-A", 2 }, + { VDC::GSREG_LENR, "LENR", "VRAM DMA Length, VDC-A", 2 }, + { VDC::GSREG_DVSSR, "DVSSR", "DVSSR Update Address, VDC-A", 2 }, + { 0, "------", "", 0xFFFF }, + + { 0, "--VDC-B--", "", 0xFFFF }, + + { 0x8000 | VDC::GSREG_SELECT, "Select", "Register Select, VDC-B", 1 }, + { 0x8000 | VDC::GSREG_STATUS, "Status", "Status, VDC-B", 1 }, + + { 0x8000 | VDC::GSREG_MAWR, "MAWR", "Memory Write Address, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_MARR, "MARR", "Memory Read Address, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_CR, "CR", "Control, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_RCR, "RCR", "Raster Counter, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_BXR, "BXR", "X Scroll, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_BYR, "BYR", "Y Scroll, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_MWR, "MWR", "Memory Width, VDC-B", 2 }, + + { 0x8000 | VDC::GSREG_HSR, "HSR", "HSR, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_HDR, "HDR", "HDR, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_VSR, "VSR", "VSR, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_VDR, "VDR", "VDR, VDC-B", 2 }, + + { 0x8000 | VDC::GSREG_VCR, "VCR", "VCR, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_DCR, "DCR", "DMA Control, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_SOUR, "SOUR", "VRAM DMA Source Address, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_DESR, "DESR", "VRAM DMA Dest Address, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_LENR, "LENR", "VRAM DMA Length, VDC-B", 2 }, + { 0x8000 | VDC::GSREG_DVSSR, "DVSSR", "DVSSR Update Address, VDC-B", 2 }, + + { 0, "", "", 0 }, +}; + +static RegGroupType PCFXRegs0Group = +{ + NULL, + PCFXRegs0, + NULL, + NULL, + PCFXDBG_GetRegister, + PCFXDBG_SetRegister, +}; + +static RegGroupType PCFXRegs1Group = +{ + NULL, + PCFXRegs1, + NULL, + NULL, + KING_GetRegister, + KING_SetRegister +}; + + +static RegGroupType PCFXRegs4Group = +{ + NULL, + PCFXRegs4, + NULL, + NULL, + FXVDCVCE_GetRegister, + FXVDCVCE_SetRegister +}; + +static RegGroupType VDCRegsGroup = +{ + NULL, + VDCRegs, + GetRegister_VDC, + SetRegister_VDC +}; + + +static void SetRegGroups(void) +{ + MDFNDBG_AddRegGroup(&PCFXRegs0Group); + MDFNDBG_AddRegGroup(&PCFXRegs4Group); + MDFNDBG_AddRegGroup(&VDCRegsGroup); + MDFNDBG_AddRegGroup(&PCFXRegs1Group); +} + +static void ForceIRQ(int level) +{ + //v810_int(level); +} + +static DebuggerInfoStruct DBGInfo = +{ + "shift_jis", + 4, + 2, // Instruction alignment(bytes) + 32, + 32, + 0x00000000, + ~0, + + PCFXDBG_MemPeek, + PCFXDBG_Disassemble, + NULL, + ForceIRQ, + NULL, //NESDBG_GetVector, + PCFXDBG_FlushBreakPoints, + PCFXDBG_AddBreakPoint, + PCFXDBG_SetCPUCallback, + PCFXDBG_SetBPCallback, + PCFXDBG_GetBranchTrace, + KING_SetGraphicsDecode, + PCFXDBG_SetLogFunc, +}; +#endif + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + //{ ".ex", gettext_noop("PC-FX HuEXE") }, + { NULL, NULL } +}; + +MDFNGI EmulatedPCFX = +{ + "pcfx", + "PC-FX", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + #ifdef WANT_DEBUGGER + &DBGInfo, + #else + NULL, + #endif + &PCFXInputInfo, + NULL, + NULL, + LoadCD, + TestMagicCD, + CloseGame, + KING_SetLayerEnableMask, + "BG0\0BG1\0BG2\0BG3\0VDC-A BG\0VDC-A SPR\0VDC-B BG\0VDC-B SPR\0RAINBOW\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + FXINPUT_SetInput, + DoSimpleCommand, + PCFXSettings, + MDFN_MASTERCLOCK_FIXED(PCFX_MASTER_CLOCK), + 0, + TRUE, // Multires possible? + + 0, // lcm_width + 0, // lcm_height + NULL, // Dummy + + 288, // Nominal width + 240, // Nominal height + + 1024, // Framebuffer width + 512, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/pcfx/pcfx.h b/libmednahawk/src/pcfx/pcfx.h new file mode 100644 index 0000000000..bb1445bf1f --- /dev/null +++ b/libmednahawk/src/pcfx/pcfx.h @@ -0,0 +1,45 @@ +#ifndef __PCFX_PCFX_H +#define __PCFX_PCFX_H + +#include "../mednafen.h" +#include "../state.h" +#include "../general.h" + +#define PCFX_MASTER_CLOCK 21477272.72 + +#if 0 + #define FXDBG(format, ...) MDFN_DebugPrint(format, ## __VA_ARGS__) +#else + #define FXDBG(format, ...) ((void)0) +#endif + +#include "v810/v810_cpu.h" +#include "huc6270/vdc.h" + +extern V810 PCFX_V810; + +uint8 MDFN_FASTCALL mem_peekbyte(const v810_timestamp_t timestamp, const uint32 A); +uint16 MDFN_FASTCALL mem_peekhword(const v810_timestamp_t timestamp, const uint32 A); + +int32 MDFN_FASTCALL pcfx_event_handler(const v810_timestamp_t timestamp); + +extern VDC *fx_vdc_chips[2]; +extern int64 pcfx_timestamp_base; + +#define REGSETHW(_reg, _data, _msh) { _reg &= 0xFFFF << (_msh ? 0 : 16); _reg |= _data << (_msh ? 16 : 0); } +#define REGGETHW(_reg, _msh) ((_reg >> (_msh ? 16 : 0)) & 0xFFFF) + +enum +{ + PCFX_EVENT_PAD = 0, + PCFX_EVENT_TIMER, + PCFX_EVENT_KING, + PCFX_EVENT_ADPCM +}; + +#define PCFX_EVENT_NONONO 0x7fffffff + +void PCFX_SetEvent(const int type, const v810_timestamp_t next_timestamp); + + +#endif diff --git a/libmednahawk/src/pcfx/rainbow.cpp b/libmednahawk/src/pcfx/rainbow.cpp new file mode 100644 index 0000000000..bcee0bcbbf --- /dev/null +++ b/libmednahawk/src/pcfx/rainbow.cpp @@ -0,0 +1,1152 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* MJPEG-ish decoder based on the algorithm and huffman data tables provided by David Michel of MagicEngine and MagicEngine-FX */ + +#include "pcfx.h" +#include "rainbow.h" +#include "king.h" +#include "interrupt.h" +#include "jrevdct.h" +#include "../clamp.h" + +static bool ChromaIP; // Bilinearly interpolate chroma channel + +/* Y = luminance/luma, UV = chrominance/chroma */ + +typedef struct +{ + const uint8 *base; + const uint8 *codes; + const uint32 *minimum; + const uint32 *maximum; +} HuffmanTable; + +typedef struct +{ + uint8 *lut; // LUT for getting the code. + uint8 *lut_bits; // Bit count for the code +} HuffmanQuickLUT; + +/* Luma DC Huffman tables */ +static const uint8 dc_y_base[17] = +{ + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x09, + 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 +}; + +static const uint8 dc_y_codes[27] = +{ + 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x01, + 0x08, 0x09, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, + 0x1D, 0x1E, 0x1F +}; + +static const uint32 dc_y_minimum[17] = +{ + 0x0000, 0x0000, 0x0000, 0x0000, 0x000E, 0x0000, 0x003C, 0x007A, + 0x0000, 0x01F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000 +}; + +static const uint32 dc_y_maximum[17] = +{ + 0xFFFF, 0xFFFF, 0xFFFF, 0x0006, 0x000E, 0xFFFF, 0x003C, 0x007B, + 0xFFFF, 0x01FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF +}; + +static const HuffmanTable dc_y_table = +{ + dc_y_base, + dc_y_codes, + dc_y_minimum, + dc_y_maximum +}; + +/* Chroma DC Huffman tables */ + +static const uint8 dc_uv_base[17] = +{ + 0x00, 0x00, 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00 +}; + +static const uint8 dc_uv_codes[10] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09 +}; + +static const uint32 dc_uv_minimum[17] = +{ + 0x0000, 0x0000, 0x0000, 0x0006, 0x000E, 0x001E, 0x003E, 0x007E, + 0x00FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000 +}; + +static const uint32 dc_uv_maximum[17] = +{ + 0xFFFF, 0xFFFF, 0x0002, 0x0006, 0x000E, 0x001E, 0x003E, 0x007E, + 0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF +}; + +static const HuffmanTable dc_uv_table = +{ + dc_uv_base, + dc_uv_codes, + dc_uv_minimum, + dc_uv_maximum +}; + +/* Luma AC Huffman tables */ +static const uint8 ac_y_base[17] = +{ + 0x00, 0x00, 0x00, 0x02, 0x03, 0x05, 0x09, 0x0D, + 0x00, 0x10, 0x00, 0x12, 0x22, 0x00, 0x00, 0x00, + 0x00 +}; + +static const uint8 ac_y_codes[146] = +{ + 0x01, 0x02, 0x03, 0x04, 0x11, 0x05, 0x12, 0x21, + 0x00, 0x06, 0x31, 0x41, 0x51, 0x13, 0x22, 0x61, + 0x07, 0x71, 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, + 0x69, 0x79, 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, + 0xE9, 0xF9, 0x08, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x43, 0x44, + 0x45, 0x46, 0x47, 0x48, 0x52, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, + 0xA8, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, + 0xB8, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, + 0xD8, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, + 0xE8, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, + 0xF8, 0x10 +}; + +static const uint32 ac_y_minimum[17] = +{ + 0x0000, 0x0000, 0x0000, 0x0004, 0x000A, 0x0018, 0x0036, 0x0074, + 0x0000, 0x01DC, 0x0000, 0x0778, 0x0F10, 0x0000, 0x0000, 0x0000, + 0x0000 +}; + +static const uint32 ac_y_maximum[17] = +{ + 0xFFFF, 0xFFFF, 0x0001, 0x0004, 0x000B, 0x001A, 0x0039, 0x0076, + 0xFFFF, 0x01DD, 0xFFFF, 0x0787, 0x0F7F, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF +}; + +static const HuffmanTable ac_y_table = +{ + ac_y_base, + ac_y_codes, + ac_y_minimum, + ac_y_maximum +}; + +/* Chroma AC Huffman tables */ +static const uint8 ac_uv_base[17] = +{ + 0x00, 0x00, 0x00, 0x02, 0x03, 0x05, 0x0A, 0x0B, + 0x00, 0x10, 0x00, 0x12, 0x22, 0x00, 0x00, 0x00, + 0x00 +}; + +static const uint8 ac_uv_codes[146] = +{ + 0x01, 0x02, 0x11, 0x03, 0x21, 0x04, 0x12, 0x31, + 0x41, 0x00, 0x51, 0x05, 0x13, 0x22, 0x61, 0x71, + 0x32, 0x81, 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, + 0x69, 0x79, 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, + 0xE9, 0xF9, 0x06, 0x07, 0x08, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x42, 0x43, + 0x44, 0x45, 0x46, 0x47, 0x48, 0x52, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x62, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x72, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, + 0xA8, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, + 0xB8, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, + 0xD8, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, + 0xE8, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, + 0xF8, 0x10 +}; + +static const uint32 ac_uv_minimum[17] = +{ + 0x0000, 0x0000, 0x0000, 0x0004, 0x000A, 0x0018, 0x0038, 0x0072, + 0x0000, 0x01DC, 0x0000, 0x0778, 0x0F10, 0x0000, 0x0000, 0x0000, + 0x0000 +}; + +static const uint32 ac_uv_maximum[17] = +{ + 0xFFFF, 0xFFFF, 0x0001, 0x0004, 0x000B, 0x001B, 0x0038, 0x0076, + 0xFFFF, 0x01DD, 0xFFFF, 0x0787, 0x0F7F, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF +}; + +static const HuffmanTable ac_uv_table = +{ + ac_uv_base, + ac_uv_codes, + ac_uv_minimum, + ac_uv_maximum +}; + +static const uint8 zigzag[63] = +{ + 0x01, 0x08, 0x10, 0x09, 0x02, 0x03, 0x0A, 0x11, + 0x18, 0x20, 0x19, 0x12, 0x0B, 0x04, 0x05, 0x0C, + 0x13, 0x1A, 0x21, 0x28, 0x30, 0x29, 0x22, 0x1B, + 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1C, 0x23, + 0x2A, 0x31, 0x38, 0x39, 0x32, 0x2B, 0x24, 0x1D, + 0x16, 0x0F, 0x17, 0x1E, 0x25, 0x2C, 0x33, 0x3A, + 0x3B, 0x34, 0x2D, 0x26, 0x1F, 0x27, 0x2E, 0x35, + 0x3C, 0x3D, 0x36, 0x2F, 0x37, 0x3E, 0x3F +}; + +static HuffmanQuickLUT dc_y_qlut = { NULL }, dc_uv_qlut = { NULL}, ac_y_qlut = { NULL }, ac_uv_qlut = { NULL }; + +static void KillHuffmanLUT(HuffmanQuickLUT *qlut) +{ + if(qlut->lut) + MDFN_free(qlut->lut); + + if(qlut->lut_bits) + MDFN_free(qlut->lut_bits); + + qlut->lut = NULL; + qlut->lut_bits = NULL; +} + +static bool BuildHuffmanLUT(const HuffmanTable *table, HuffmanQuickLUT *qlut, const int bitmax) +{ + // TODO: Allocate only (1 << bitmax) entries. + // TODO: What should we set invalid bitsequences/entries to? 0? ~0? Something else? + + if(!(qlut->lut = (uint8 *)MDFN_calloc(1 << 12, 1, _("Huffman LUT")))) + return(FALSE); + + if(!(qlut->lut_bits = (uint8 *)MDFN_calloc(1 << 12, 1, _("Huffman LUT")))) + return(FALSE); + + for(int numbits = 2; numbits <= 12; numbits++) + { + if(table->maximum[numbits] != 0xFFFF) + { + for(unsigned int i = table->minimum[numbits]; i <= table->maximum[numbits]; i++) + { + for(int b = 0; b < (1 << (bitmax - numbits)); b++) + { + int lut_index = (i << (bitmax - numbits)) + b; + + assert(lut_index < (1 << bitmax)); + + qlut->lut[lut_index] = table->codes[table->base[numbits] + (i - table->minimum[numbits])]; + qlut->lut_bits[lut_index] = numbits; + } + } + } + } + + //printf("\n\n%d\n", bitmax); + for(int i = 0; i < (1 << bitmax); i++) + { + //if(!qlut->lut_bits[i]) + // printf("%d %d\n", i, qlut->lut_bits[i]); + } + + return(TRUE); +} + + +static uint8 *DecodeBuffer[2] = { NULL, NULL }; +static int32 DecodeFormat[2]; // The format each buffer is in(-1 = invalid, 0 = palettized 8-bit, 1 = YUV) +static uint32 QuantTables[2][64], QuantTablesBase[2][64]; // 0 = Y, 1 = UV + +static uint32 DecodeBufferWhichRead; + +static int32 RasterReadPos; +static uint16 Control; +static uint16 NullRunY, NullRunU, NullRunV, HSync; +static uint16 HScroll; + +static uint32 bits_buffer; +static uint32 bits_buffered_bits; +static int32 bits_bytes_left; + +static void InitBits(int32 bcount) +{ + bits_bytes_left = bcount; + bits_buffer = 0; + bits_buffered_bits = 0; +} + +static INLINE uint8 FetchWidgywabbit(void) +{ + if(bits_bytes_left <= 0) + return(0); + + uint8 ret = KING_RB_Fetch(); + if(ret == 0xFF) + KING_RB_Fetch(); + + bits_bytes_left--; + + return(ret); +} + +enum +{ + MDFNBITS_PEEK = 1, + MDFNBITS_FUNNYSIGN = 2, +}; + +static INLINE uint32 GetBits(const unsigned int count, const unsigned int how = 0) +{ + uint32 ret; + + while(bits_buffered_bits < count) + { + bits_buffer <<= 8; + bits_buffer |= FetchWidgywabbit(); + bits_buffered_bits += 8; + } + + ret = (bits_buffer >> (bits_buffered_bits - count)) & ((1 << count) - 1); + + if(!(how & MDFNBITS_PEEK)) + bits_buffered_bits -= count; + + if((how & MDFNBITS_FUNNYSIGN) && count) + { + if(ret < (1U << (count - 1))) + ret += 1 - (1 << count); + } + + return(ret); +} + +// Note: SkipBits is intended to be called right after GetBits() with "how" MDFNBITS_PEEK, +// and the count pass to SkipBits must be less than or equal to the count passed to GetBits(). +static INLINE void SkipBits(const unsigned int count) +{ + bits_buffered_bits -= count; +} + + +static uint32 HappyColor; // Cached, calculated from null run yuv registers; +static void CalcHappyColor(void) +{ + uint8 y_c = (int16)NullRunY + 0x80; + uint8 u_c = (int16)NullRunU + 0x80; + uint8 v_c = (int16)NullRunV + 0x80; + + HappyColor = (y_c << 16) | (u_c << 8) | (v_c << 0); +} + +static uint32 get_ac_coeff(const HuffmanQuickLUT *table, int32 *zeroes) +{ + unsigned int numbits; + uint32 rawbits; + uint32 code; + + rawbits = GetBits(12, MDFNBITS_PEEK); + if((rawbits & 0xF80) == 0xF80) + //if(rawbits >= 0xF80) + { + SkipBits(5); + *zeroes = 0; + return(0); + } + + if(!table->lut_bits[rawbits]) + { + FXDBG("Invalid AC bit sequence: %03x\n", rawbits); + } + + code = table->lut[rawbits]; + SkipBits(table->lut_bits[rawbits]); + + numbits = code & 0xF; + *zeroes = code >> 4; + + return(GetBits(numbits, MDFNBITS_FUNNYSIGN)); +} + +static uint32 get_dc_coeff(const HuffmanQuickLUT *table, int32 *zeroes, int maxbits) +{ + uint32 code; + + for(;;) + { + uint32 rawbits = GetBits(maxbits, MDFNBITS_PEEK); + + if(!table->lut_bits[rawbits]) + { + FXDBG("Invalid DC bit sequence: %03x\n", rawbits); + } + + code = table->lut[rawbits]; + SkipBits(table->lut_bits[rawbits]); + + if(code < 0xF) + { + *zeroes = 0; + return(GetBits(code, MDFNBITS_FUNNYSIGN)); + } + else if(code == 0xF) + { + get_ac_coeff(&ac_y_qlut, zeroes); + (*zeroes)++; + return(0); + } + else if(code >= 0x10) + { + code -= 0x10; + + for(int i = 0; i < 64; i++) + { + // Y + uint32 coeff = (QuantTablesBase[0][i] * code) >> 2; + + if(coeff < 1) + coeff = 1; + else if(coeff > 0xFE) + coeff = 0xFE; + + QuantTables[0][i] = coeff; + + // UV + if(i) + coeff = (QuantTablesBase[1][i] * code) >> 2; + else + coeff = (QuantTablesBase[1][i]) >> 2; + + if(coeff < 1) + coeff = 1; + else if(coeff > 0xFE) + coeff = 0xFE; + + QuantTables[1][i] = coeff; + } + + } + } + +} + +static INLINE uint32 get_dc_y_coeff(int32 *zeroes) +{ + return(get_dc_coeff(&dc_y_qlut, zeroes, 9)); +} + +static uint32 get_dc_uv_coeff(void) +{ + const HuffmanQuickLUT *table = &dc_uv_qlut; + uint32 code; + uint32 rawbits = GetBits(8, MDFNBITS_PEEK); + + code = table->lut[rawbits]; + SkipBits(table->lut_bits[rawbits]); + + return(GetBits(code, MDFNBITS_FUNNYSIGN)); +} + + +static void decode(int32 *dct, const uint32 *QuantTable, const int32 dc, const HuffmanQuickLUT *table) +{ + int32 coeff; + int zeroes; + int count; + int index; + + dct[0] = (int16)(QuantTable[0] * dc); + count = 0; + + do + { + coeff = get_ac_coeff(table, &zeroes); + if(!coeff) + { + if(!zeroes) + { + while(count < 63) + { + dct[zigzag[count++]] = 0; + } + break; + } + else if(zeroes == 1) + zeroes = 0xF; + } + + while(zeroes-- && count < 63) + { + dct[zigzag[count++]] = 0; + } + zeroes = 0; + if(count < 63) + { + index = zigzag[count++]; + dct[index] = (int16)(QuantTable[index] * coeff); + } + } while(count < 63); + +} + +#ifdef WANT_DEBUGGER +static RegType RainbowRegs[] = +{ + { 0, "RSCRLL", "Rainbow Horizontal Scroll", 2 }, + { 0, "RCTRL", "Rainbow Control", 2 }, + { 0, "RHSYNC", "Rainbow HSync?", 1 }, + { 0, "RNRY", "Rainbow Null Run Y", 2 }, + { 0, "RNRU", "Rainbow Null Run U", 2 }, + { 0, "RNRV", "Rainbow Null Run V", 2 }, + { 0, "------", "", 0xFFFF }, + { 0, "BGMODE", "Background Mode", 2 }, + { 0, "BGPRIO", "Background Priority", 2 }, + { 0, "BGSCRM", "Background Scroll Mode", 2 }, + { 0, "BGSIZ0", "Background 0 Size", 2 }, + { 0, "BGSIZ1", "Background 1 Size", 1 }, + { 0, "BGSIZ2", "Background 2 Size", 1 }, + { 0, "BGSIZ3", "Background 3 Size", 1 }, + { 0, "BGXSC0", "Background 0 X Scroll", 0x100 | 11 }, + { 0, "BGXSC1", "Background 1 X Scroll", 0x100 | 10 }, + { 0, "BGXSC2", "Background 2 X Scroll", 0x100 | 10 }, + { 0, "BGXSC3", "Background 3 X Scroll", 0x100 | 10 }, + { 0, "BGYSC0", "Background 0 Y Scroll", 0x100 | 11 }, + { 0, "BGYSC1", "Background 1 Y Scroll", 0x100 | 10 }, + { 0, "BGYSC2", "Background 2 Y Scroll", 0x100 | 10 }, + { 0, "BGYSC3", "Background 3 Y Scroll", 0x100 | 10 }, + + { 0, "BGBAT0", "Background 0 BAT Address", 1 }, + { 0, "BGBATS", "Background SUB BAT Address", 1 }, + { 0, "BGBAT1", "Background 1 BAT Address", 1 }, + { 0, "BGBAT2", "Background 2 BAT Address", 1 }, + { 0, "BGBAT3", "Background 3 BAT Address", 1 }, + { 0, "BGCG0", "Background 0 CG Address", 1 }, + { 0, "BGCGS", "Background SUB CG Address", 1 }, + { 0, "BGCG1", "Background 1 CG Address", 1 }, + { 0, "BGCG2", "Background 2 CG Address", 1 }, + { 0, "BGCG3", "Background 3 CG Address", 1 }, + + { 0, "AFFINA", "Background Affin Coefficient A", 2 }, + { 0, "AFFINB", "Background Affin Coefficient B", 2 }, + { 0, "AFFINC", "Background Affin Coefficient C", 2 }, + { 0, "AFFIND", "Background Affin Coefficient D", 2 }, + { 0, "AFFINX", "Background Affin Center X", 2 }, + { 0, "AFFINY", "Background Affin Center Y", 2 }, + { 0, "MPROG0", "Micro-program", 2}, + { 0, "MPROG1", "Micro-program", 2}, + { 0, "MPROG2", "Micro-program", 2}, + { 0, "MPROG3", "Micro-program", 2}, + { 0, "MPROG4", "Micro-program", 2}, + { 0, "MPROG5", "Micro-program", 2}, + { 0, "MPROG6", "Micro-program", 2}, + { 0, "MPROG7", "Micro-program", 2}, + { 0, "MPROG8", "Micro-program", 2}, + { 0, "MPROG9", "Micro-program", 2}, + { 0, "MPROGA", "Micro-program", 2}, + { 0, "MPROGB", "Micro-program", 2}, + { 0, "MPROGC", "Micro-program", 2}, + { 0, "MPROGD", "Micro-program", 2}, + { 0, "MPROGE", "Micro-program", 2}, + { 0, "MPROGF", "Micro-program", 2}, + + // EVIL EVIL: + + { 0, "", "", 0 }, +}; + +static uint32 RainbowDBG_GetRegister(const std::string &name, std::string *special) +{ + uint32 value = 0xDEADBEEF; + + if(name == "RSCRLL") + value = HScroll; + else if(name == "RCTRL") + value = Control; + else if(name == "RNRY") + value = NullRunY; + else if(name == "RNRU") + value = NullRunU; + else if(name == "RNRV") + value = NullRunV; + else if(name == "RHSYNC") + value = HSync; + else + value = KING_GetRegister(name, special); // EVIL EVIL + return(value); +} + +static void RainbowDBG_SetRegister(const std::string &name, uint32 value) +{ + if(name == "RSCRLL") + HScroll = value & 0x1FF; + else if(name == "RCTRL") + Control = value; + else if(name == "RNRY") + NullRunY = value; + else if(name == "RNRU") + NullRunU = value; + else if(name == "RNRV") + NullRunV = value; + else + KING_SetRegister(name, value); +} + +static RegGroupType RainbowRegsGroup = +{ + NULL, + RainbowRegs, + NULL, + NULL, + RainbowDBG_GetRegister, + RainbowDBG_SetRegister +}; + +#endif + +static uint32 LastLine[256]; +static bool FirstDecode; +static bool GarbageData; + +bool RAINBOW_Init(bool arg_ChromaIP) +{ + #ifdef WANT_DEBUGGER + MDFNDBG_AddRegGroup(&RainbowRegsGroup); + #endif + + ChromaIP = arg_ChromaIP; + + for(int i = 0; i < 2; i++) + { + if(!(DecodeBuffer[i] = (uint8*)MDFN_malloc(0x2000 * 4, _("RAINBOW buffer RAM")))) + return(0); + memset(DecodeBuffer[i], 0, 0x2000 * 4); + } + + if(!BuildHuffmanLUT(&dc_y_table, &dc_y_qlut, 9)) + return(FALSE); + + if(!BuildHuffmanLUT(&dc_uv_table, &dc_uv_qlut, 8)) + return(FALSE); + + if(!BuildHuffmanLUT(&ac_y_table, &ac_y_qlut, 12)) + return(FALSE); + + if(!BuildHuffmanLUT(&ac_uv_table, &ac_uv_qlut, 12)) + return(FALSE); + + DecodeFormat[0] = DecodeFormat[1] = -1; + DecodeBufferWhichRead = 0; + GarbageData = FALSE; + FirstDecode = TRUE; + RasterReadPos = 0; + + return(1); +} + +void RAINBOW_Close(void) +{ + for(int i = 0; i < 2; i++) + if(DecodeBuffer[i]) + { + free(DecodeBuffer[i]); + DecodeBuffer[i] = NULL; + } + + KillHuffmanLUT(&dc_y_qlut); + KillHuffmanLUT(&dc_uv_qlut); + KillHuffmanLUT(&ac_y_qlut); + KillHuffmanLUT(&ac_uv_qlut); +} + +// RAINBOW base I/O port address: 0x200 + +#define REGSETBOFW(_reg, _data, _wb) { (_reg) &= ~(0xFF << ((_wb) * 8)); (_reg) |= (_data) << ((_wb) * 8); } +#define REGSETBOFH REGSETBOFW + +// The horizontal scroll register is set up kind of weird...D0-D7 of writes to $200 set the lower byte, D0-D7 of writes to $202 set the upper byte + +void RAINBOW_Write8(uint32 A, uint8 V) +{ + //printf("RAINBOW Wr8: %08x %02x\n", A, V); + switch(A & 0x1C) + { + case 0x00: REGSETBOFH(HScroll, V, (A & 0x2) >> 1); HScroll &= 0x1FF; break; + case 0x04: REGSETBOFH(Control, V, A & 0x3); break; + case 0x08: REGSETBOFH(NullRunY, V, A & 0x3); CalcHappyColor(); break; + case 0x0C: REGSETBOFH(NullRunU, V, A & 0x3); CalcHappyColor(); break; + case 0x10: REGSETBOFH(NullRunV, V, A & 0x3); CalcHappyColor(); break; + case 0x14: REGSETBOFH(HSync, V, A & 0x3); break; + } +} + +void RAINBOW_Write16(uint32 A, uint16 V) +{ + int msh = A & 0x2; + + //printf("RAINBOW Wr16: %08x %04x\n", A, V); + switch(A & 0x1C) + { + case 0x00: REGSETBOFH(HScroll, V & 0xFF, (A & 0x2) >> 1); HScroll &= 0x1FF; break; + case 0x04: REGSETHW(Control, V, msh); break; + case 0x08: REGSETHW(NullRunY, V, msh); CalcHappyColor(); break; + case 0x0C: REGSETHW(NullRunU, V, msh); CalcHappyColor(); break; + case 0x10: REGSETHW(NullRunV, V, msh); CalcHappyColor(); break; + case 0x14: REGSETHW(HSync, V, msh); break; + } +} + +void RAINBOW_ForceTransferReset(void) +{ + RasterReadPos = 0; + DecodeFormat[0] = DecodeFormat[1] = -1; +} + +void RAINBOW_SwapBuffers(void) +{ + DecodeBufferWhichRead ^= 1; + RasterReadPos = 0; +} + +void RAINBOW_DecodeBlock(bool arg_FirstDecode, bool Skip) +{ + uint8 block_type; + int32 block_size; + int icount; + int which_buffer = DecodeBufferWhichRead ^ 1; + + if(!(Control & 0x01)) + { + puts("Rainbow decode when disabled!!"); + return; + } + + if(arg_FirstDecode) + { + FirstDecode = TRUE; + GarbageData = FALSE; + } + + if(GarbageData) + icount = 0; + else + icount = 0x200; + + do + { + do + { + while(KING_RB_Fetch() != 0xFF && icount > 0) + icount--; + + block_type = KING_RB_Fetch(); + //if(icount > 0 && block_type != 0xF0 && block_type != 0xF1 && block_type != 0xF2 && block_type != 0xF3 && block_type != 0xF8 && block_type != 0xFF) + //if(icount > 0 && block_type == 0x11) + // printf("%02x\n", block_type); + icount--; + } while(block_type != 0xF0 && block_type != 0xF1 && block_type != 0xF2 && block_type != 0xF3 && block_type != 0xF8 && block_type != 0xFF && icount > 0); + + block_size = (int16)((KING_RB_Fetch() << 8) | (KING_RB_Fetch())); + block_size -= 2; + if(block_type == 0xFF && block_size <= 0) + for(int i = 0; i < 128; i++,icount--) KING_RB_Fetch(); + + //fprintf(stderr, "Block: %d\n", block_size); + } while(block_size <= 0 && icount > 0); + + //if(!GarbageData && icount < 500) + //{ + // FXDBG("Partial garbage data. %d", icount); + //} + + //printf("%d\n", icount); + if(icount <= 0) + { + FXDBG("Garbage data."); + GarbageData = TRUE; + //printf("Dooom: %d\n"); + DecodeFormat[which_buffer] = 0; + memset(DecodeBuffer[which_buffer], 0, 0x2000); + goto BufferNoDecode; + } + + if(block_type == 0xf8 || block_type == 0xff) + DecodeFormat[which_buffer] = 1; + else + DecodeFormat[which_buffer] = 0; + + if(block_type == 0xF8 || block_type == 0xFF) + { + if(block_type == 0xFF) + { + for(int q = 0; q < 2; q++) + for(int i = 0; i < 64; i++) + { + uint8 meow = KING_RB_Fetch(); + + QuantTables[q][i] = meow; + QuantTablesBase[q][i] = meow; + } + block_size -= 128; + } + + InitBits(block_size); + + int32 dc_y = 0, dc_u = 0, dc_v = 0; + uint32 *dest_base = (uint32 *)DecodeBuffer[which_buffer]; + for(int column = 0; column < 16; column++) + { + uint32 *dest_base_column = &dest_base[column * 16]; + int zeroes = 0; + + dc_y += get_dc_y_coeff(&zeroes); + + if(zeroes) // If set, clear the number of columns + { + do + { + if(column < 16) + { + dest_base_column = &dest_base[column * 16]; + + for(int y = 0; y < 16; y++) + for(int x = 0; x < 16; x++) + dest_base_column[y * 256 + x] = HappyColor; + } + column++; + zeroes--; + } while(zeroes); + column--; // Fix for the column autoincrement in the while(zeroes) loop + dc_y = dc_u = dc_v = 0; + } + else + { + int32 dct_y[256]; + int32 dct_u[64]; + int32 dct_v[64]; + + // Y/Luma, 16x16 components + // --------- + // | A | C | + // |-------| + // | B | D | + // --------- + // A (0, 0) + decode(&dct_y[0x00], QuantTables[0], dc_y, &ac_y_qlut); + + // B (0, 1) + dc_y += get_dc_y_coeff(&zeroes); + decode(&dct_y[0x40], QuantTables[0], dc_y, &ac_y_qlut); + + // C (1, 0) + dc_y += get_dc_y_coeff(&zeroes); + decode(&dct_y[0x80], QuantTables[0], dc_y, &ac_y_qlut); + + // D (1, 1) + dc_y += get_dc_y_coeff(&zeroes); + decode(&dct_y[0xC0], QuantTables[0], dc_y, &ac_y_qlut); + + // U, 8x8 components + dc_u += get_dc_uv_coeff(); + decode(&dct_u[0x00], QuantTables[1], dc_u, &ac_uv_qlut); + + // V, 8x8 components + dc_v += get_dc_uv_coeff(); + decode(&dct_v[0x00], QuantTables[1], dc_v, &ac_uv_qlut); + + if(Skip) + continue; + + j_rev_dct(&dct_y[0x00]); + j_rev_dct(&dct_y[0x40]); + j_rev_dct(&dct_y[0x80]); + j_rev_dct(&dct_y[0xC0]); + j_rev_dct(&dct_u[0x00]); + j_rev_dct(&dct_v[0x00]); + + for(int y = 0; y < 16; y++) + for(int x = 0; x < 16; x++) + dest_base_column[y * 256 + x] = clamp_to_u8(dct_y[y * 8 + (x & 0x7) + ((x & 0x8) << 4)] + 0x80) << 16; + + if(!ChromaIP) + { + for(int y = 0; y < 8; y++) + { + for(int x = 0; x < 8; x++) + { + uint32 component_uv = (clamp_to_u8(dct_u[y * 8 + x] + 0x80) << 8) | clamp_to_u8(dct_v[y * 8 + x] + 0x80); + dest_base_column[y * 512 + (256 * 0) + x * 2 + 0] |= component_uv; + dest_base_column[y * 512 + (256 * 0) + x * 2 + 1] |= component_uv; + dest_base_column[y * 512 + (256 * 1) + x * 2 + 0] |= component_uv; + dest_base_column[y * 512 + (256 * 1) + x * 2 + 1] |= component_uv; + } + } + } + else + { + for(int y = 0; y < 8; y++) + { + for(int x = 0; x < 8; x++) + { + uint32 component_uv = (clamp_to_u8(dct_u[y * 8 + x] + 0x80) << 8) | clamp_to_u8(dct_v[y * 8 + x] + 0x80); + dest_base_column[y * 512 + (256 * 1) + x * 2 + 0] |= component_uv; + } + } + } + } + } + + // Do bilinear interpolation on the chroma channels: + if(!Skip && ChromaIP) + { + for(int y = 0; y < 16; y+= 2) + { + uint32 *linebase = &dest_base[y * 256]; + uint32 *linebase1 = &dest_base[(y + 1) * 256]; + + for(int x = 0; x < 254; x += 2) + { + unsigned int u, v; + + u = (((linebase1[x] >> 8) & 0xFF) + ((linebase1[x + 2] >> 8) & 0xFF)) >> 1; + v = (((linebase1[x] >> 0) & 0xFF) + ((linebase1[x + 2] >> 0) & 0xFF)) >> 1; + + linebase1[x + 1] = (linebase1[x + 1] & ~ 0xFFFF) | (u << 8) | v; + } + + linebase1[0xFF] = (linebase1[0xFF] & ~ 0xFFFF) | (linebase1[0xFE] & 0xFFFF); + + if(FirstDecode) + { + for(int x = 0; x < 256; x++) linebase[x] = (linebase[x] & ~ 0xFFFF) | (linebase1[x] & 0xFFFF); + FirstDecode = 0; + } + else + for(int x = 0; x < 256; x++) + { + unsigned int u, v; + + u = (((LastLine[x] >> 8) & 0xFF) + ((linebase1[x] >> 8) & 0xFF)) >> 1; + v = (((LastLine[x] >> 0) & 0xFF) + ((linebase1[x] >> 0) & 0xFF)) >> 1; + + linebase[x] = (linebase[x] & ~ 0xFFFF) | (u << 8) | v; + } + + memcpy(LastLine, linebase1, 256 * 4); + } + } // End chroma interpolation + } // end jpeg-like decoding + else + { + // Earlier code confines the set to F0,F1,F2, and F3. + // F0 = (4, 0xF), F1 = (3, 0x7), F2 = (0x2, 0x3), F3 = 0x1, 0x1) + const unsigned int plt_shift = 4 - (block_type & 0x3); + const unsigned int crl_mask = (1 << plt_shift) - 1; + int x = 0; + + while(block_size > 0) + { + uint8 boot; + unsigned int rle_count; + + boot = KING_RB_Fetch(); + block_size--; + + if(boot == 0xFF) + { + KING_RB_Fetch(); + block_size--; + } + + if(!(boot & crl_mask)) // Expand mode? + { + rle_count = KING_RB_Fetch(); + block_size--; + if(rle_count == 0xFF) + { + KING_RB_Fetch(); + block_size--; + } + rle_count++; + } + else + rle_count = boot & crl_mask; + + for(unsigned int i = 0; i < rle_count; i++) + { + if(x >= 0x2000) + { + //puts("Oops"); + break; // Don't overflow our decode buffer! + } + DecodeBuffer[which_buffer][x] = (boot >> plt_shift); + x++; + } + } + } // end RLE decoding + + //for(int i = 0; i < 8 + block_size; i++) + // KING_RB_Fetch(); + + BufferNoDecode: ; +} + +void KING_Moo(void); + +// NOTE: layer_or and palette_ptr are optimizations, the real RAINBOW chip knows not of such things. +int RAINBOW_FetchRaster(uint32 *linebuffer, uint32 layer_or, uint32 *palette_ptr) +{ + int ret; + + ret = DecodeFormat[DecodeBufferWhichRead]; + + if(linebuffer) + { + if(DecodeFormat[DecodeBufferWhichRead] == -1) // None + { + if(linebuffer) + MDFN_FastU32MemsetM8(linebuffer, 0, 256); + } + else if(DecodeFormat[DecodeBufferWhichRead] == 1) // YUV + { + uint32 *in_ptr = (uint32*)&DecodeBuffer[DecodeBufferWhichRead][RasterReadPos * 256 * 4]; + + if(Control & 0x2) // Endless scroll mode: + { + uint8 tmpss = HScroll; + + for(int x = 0; x < 256; x++) + { + linebuffer[x] = in_ptr[tmpss] | layer_or; + tmpss++; + } + } + else // Non-endless + { + uint16 tmpss = HScroll & 0x1FF; + + for(int x = 0; x < 256; x++) + { + linebuffer[x] = (tmpss < 256) ? (in_ptr[tmpss] | layer_or) : 0; + tmpss = (tmpss + 1) & 0x1FF; + } + } + MDFN_FastU32MemsetM8(in_ptr, 0, 256); + } + else if(DecodeFormat[DecodeBufferWhichRead] == 0) // Palette + { + uint8 *in_ptr = &DecodeBuffer[DecodeBufferWhichRead][RasterReadPos * 256]; + + if(Control & 0x2) // Endless scroll mode: + { + uint8 tmpss = HScroll; + + for(int x = 0; x < 256; x++) + { + linebuffer[x] = in_ptr[tmpss] ? (palette_ptr[in_ptr[tmpss]] | layer_or) : 0; + tmpss++; + } + } + else // Non-endless + { + uint16 tmpss = HScroll & 0x1FF; + + for(int x = 0; x < 256; x++) + { + linebuffer[x] = (tmpss < 256 && in_ptr[tmpss]) ? (palette_ptr[in_ptr[tmpss]] | layer_or) : 0; + tmpss = (tmpss + 1) & 0x1FF; + } + } + //MDFN_FastU32MemsetM8((uint32 *)in_ptr, 0, 256 / 4); + } + } + + RasterReadPos = (RasterReadPos + 1) & 0xF; + + if(!RasterReadPos) + DecodeFormat[DecodeBufferWhichRead] = -1; // Invalidate this buffer. + + //printf("Fetch: %d, buffer: %d\n", RasterReadPos, DecodeBufferWhichRead); + return(ret); +} + +void RAINBOW_Reset(void) +{ + Control = 0; + NullRunY = NullRunU = NullRunV = 0; + HScroll = 0; + RasterReadPos = 0; + DecodeBufferWhichRead = 0; + + memset(QuantTables, 0, sizeof(QuantTables)); + memset(QuantTablesBase, 0, sizeof(QuantTablesBase)); + DecodeFormat[0] = DecodeFormat[1] = -1; + + CalcHappyColor(); +} + + +int RAINBOW_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(HScroll), + SFVAR(Control), + SFVAR(RasterReadPos), + SFVAR(DecodeBufferWhichRead), + SFVAR(NullRunY), + SFVAR(NullRunU), + SFVAR(NullRunV), + SFVAR(HSync), + SFARRAY32(DecodeFormat, 2), + // if(!(DecodeBuffer[i] = (uint8*)MDFN_malloc(0x2000 * 4, _("RAINBOW buffer RAM")))) + SFARRAY(DecodeBuffer[0], 0x2000 * 4), + SFARRAY(DecodeBuffer[1], 0x2000 * 4), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "RBOW"); + + if(load) + { + RasterReadPos &= 0xF; + CalcHappyColor(); + } + return(ret); +} + diff --git a/libmednahawk/src/pcfx/rainbow.h b/libmednahawk/src/pcfx/rainbow.h new file mode 100644 index 0000000000..c4e63dfe6d --- /dev/null +++ b/libmednahawk/src/pcfx/rainbow.h @@ -0,0 +1,18 @@ +#ifndef __PCFX_RAINBOW_H +#define __PCFX_RAINBOW_H + +void RAINBOW_Write8(uint32 A, uint8 V); +void RAINBOW_Write16(uint32 A, uint16 V); + +void RAINBOW_ForceTransferReset(void); +void RAINBOW_SwapBuffers(void); +void RAINBOW_DecodeBlock(bool arg_FirstDecode, bool Skip); + +int RAINBOW_FetchRaster(uint32 *, uint32 layer_or, uint32 *palette_ptr); +int RAINBOW_StateAction(StateMem *sm, int load, int data_only); + +bool RAINBOW_Init(bool arg_ChromaIP); +void RAINBOW_Close(void); +void RAINBOW_Reset(void); + +#endif diff --git a/libmednahawk/src/pcfx/soundbox.cpp b/libmednahawk/src/pcfx/soundbox.cpp new file mode 100644 index 0000000000..5b66b7fa2f --- /dev/null +++ b/libmednahawk/src/pcfx/soundbox.cpp @@ -0,0 +1,654 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "pcfx.h" +#include "soundbox.h" +#include "king.h" +#include "../cdrom/scsicd.h" +#include "pce_psg/pce_psg.h" +#include "../clamp.h" + +#include +#include + +static const int StepSizes[49] = +{ + 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, + 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, + 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, + 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552 +}; + +static const int StepIndexDeltas[16] = +{ + -1, -1, -1, -1, 2, 4, 6, 8, + -1, -1, -1, -1, 2, 4, 6, 8 +}; + + +typedef Blip_Synth ADSynth; +static ADSynth ADPCMSynth; + +Blip_Buffer FXsbuf[2]; // Used in the CDROM code + +static PCE_PSG *pce_psg = NULL; + + +static bool SoundEnabled; +static uint32 adpcm_lastts; + +static t_soundbox psg; +static double ADPCMVolTable[0x40]; + +static bool EmulateBuggyCodec; // If true, emulate the buggy codec/algorithm used by an official PC-FX ADPCM encoder, rather than how the + // hardware actually works. +static bool ResetAntiClickEnabled; // = true; + + +#ifdef WANT_DEBUGGER + + +enum +{ + GSREG_ADPCM_CTRL = _PSG_GSREG_COUNT, + GSREG_ADPCM0_LVOL, + GSREG_ADPCM0_RVOL, + + GSREG_ADPCM1_LVOL, + GSREG_ADPCM1_RVOL, + + GSREG_ADPCM0_CUR, + GSREG_ADPCM1_CUR, + + GSREG_CDDA_LVOL, + GSREG_CDDA_RVOL +}; + +#define CHPDMOO(n) \ + { 0, "--CH"#n"--:", "", 0xFFFF }, \ + { PSG_GSREG_CH0_FREQ | (n << 8), "Freq", "PSG Ch"#n" Frequency(Period)", 2 }, \ + { PSG_GSREG_CH0_CTRL | (n << 8), "Ctrl", "PSG Ch"#n" Control", 1 }, \ + { PSG_GSREG_CH0_BALANCE | (n << 8), "Balance", "PSG Ch"#n" Balance", 1 }, \ + { PSG_GSREG_CH0_WINDEX | (n << 8), "WIndex", "PSG Ch"#n" Waveform Index", 1}, \ + { PSG_GSREG_CH0_SCACHE | (n << 8), "SCache", "PSG Ch"#n" Sample Cache", 1 } + +static RegType SBoxRegs[] = +{ + { PSG_GSREG_SELECT, "Select", "PSG Channel Select", 1 }, + { PSG_GSREG_GBALANCE, "GBal", "PSG Global Balance", 1 }, + { PSG_GSREG_LFOFREQ, "LFOFreq", "PSG LFO Freq", 1 }, + { PSG_GSREG_LFOCTRL, "LFOCtrl", "PSG LFO Control", 1 }, + + CHPDMOO(0), + CHPDMOO(1), + CHPDMOO(2), + CHPDMOO(3), + CHPDMOO(4), + { PSG_GSREG_CH4_NCTRL, "NCtrl", "PSG Ch4 Noise Control", 1 }, + { PSG_GSREG_CH4_LFSR, "LFSR", "PSG Ch4 Noise LFSR", 2 }, + CHPDMOO(5), + { PSG_GSREG_CH5_NCTRL, "NCtrl", "PSG Ch5 Noise Control", 1 }, + { PSG_GSREG_CH5_LFSR, "LFSR", "PSG Ch5 Noise LFSR", 2 }, + + { 0, "--ADPCM:--", "", 0xFFFF }, + + { GSREG_ADPCM_CTRL, "Ctrl", "ADPCM Control", 2 }, + { GSREG_ADPCM0_LVOL, "CH0LVol", "ADPCM Ch0 Left Volume", 1 }, + { GSREG_ADPCM0_RVOL, "CH0RVol", "ADPCM Ch0 Right Volume", 1 }, + { GSREG_ADPCM1_LVOL, "CH1LVol", "ADPCM Ch1 Left Volume", 1 }, + { GSREG_ADPCM1_RVOL, "CH1RVol", "ADPCM Ch1 Right Volume", 1 }, + + { GSREG_ADPCM0_CUR, "CH0Prc", "ADPCM Ch0 Predictor Value", 2 }, + { GSREG_ADPCM1_CUR, "CH1Prc", "ADPCM Ch1 Predictor Value", 2 }, + + { 0, "--CD-DA:--", "", 0xFFFF }, + { GSREG_CDDA_LVOL, "CDLVol", "CD-DA Left Volume", 1 }, + { GSREG_CDDA_RVOL, "CDRVol", "CD-DA Right Volume", 1 }, + { 0, "", "", 0 }, +}; + +static uint32 SBoxDBG_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 value = 0xDEADBEEF; + + switch(id) + { + case GSREG_ADPCM_CTRL: + value = psg.ADPCMControl; + if(special) + { + int tmp_freq = 32 / (1 << (value & 0x3)); + snprintf(special, special_len, "Frequency: ~%dKHz, Ch0 Interpolation: %s, Ch1 Interpolation: %s, Ch0 Reset: %d, Ch1 Reset: %d", tmp_freq, (value & 0x4) ? "On" : "Off", (value & 0x8) ? "On":"Off", + (int)(bool)(value & 0x10), (int)(bool)(value & 0x20)); + } + break; + + case GSREG_ADPCM0_LVOL: + value = psg.ADPCMVolume[0][0]; + break; + + case GSREG_ADPCM0_RVOL: + value = psg.ADPCMVolume[0][1]; + break; + + case GSREG_ADPCM1_LVOL: + value = psg.ADPCMVolume[1][0]; + break; + + case GSREG_ADPCM1_RVOL: + value = psg.ADPCMVolume[1][1]; + break; + + case GSREG_CDDA_LVOL: + value = psg.CDDAVolume[0]; + break; + + case GSREG_CDDA_RVOL: + value = psg.CDDAVolume[1]; + break; + + case GSREG_ADPCM0_CUR: + value = psg.ADPCMPredictor[0] + 0x4000; + break; + + case GSREG_ADPCM1_CUR: + value = psg.ADPCMPredictor[1] + 0x4000; + break; + + default: + value = pce_psg->GetRegister(id, special, special_len); + break; + } + return(value); +} + +static void SBoxDBG_SetRegister(const unsigned int id, uint32 value) +{ + if(id < _PSG_GSREG_COUNT) + pce_psg->SetRegister(id, value); + else switch(id) + { + case GSREG_ADPCM_CTRL: + psg.ADPCMControl = value & 0xFFFF; + break; + + case GSREG_ADPCM0_LVOL: + psg.ADPCMVolume[0][0] = value & 0x3F; + break; + + case GSREG_ADPCM0_RVOL: + psg.ADPCMVolume[0][1] = value & 0x3F; + break; + + case GSREG_ADPCM1_LVOL: + psg.ADPCMVolume[1][0] = value & 0x3F; + break; + + case GSREG_ADPCM1_RVOL: + psg.ADPCMVolume[1][1] = value & 0x3F; + break; + + case GSREG_CDDA_LVOL: + psg.CDDAVolume[0] = value & 0x3F; + SCSICD_SetCDDAVolume(0.50f * psg.CDDAVolume[0] / 63, 0.50f * psg.CDDAVolume[1] / 63); + break; + + case GSREG_CDDA_RVOL: + psg.CDDAVolume[1] = value & 0x3F; + SCSICD_SetCDDAVolume(0.50f * psg.CDDAVolume[0] / 63, 0.50f * psg.CDDAVolume[1] / 63); + break; + + case GSREG_ADPCM0_CUR: + psg.ADPCMPredictor[0] = ((int32)value & 0x7FFF) - 0x4000; + break; + + case GSREG_ADPCM1_CUR: + psg.ADPCMPredictor[1] = ((int32)value & 0x7FFF) - 0x4000; + break; + } +} + +static RegGroupType SBoxRegsGroup = +{ + "SndBox", + SBoxRegs, + SBoxDBG_GetRegister, + SBoxDBG_SetRegister +}; + + +#endif + +static void RedoVolume(void) +{ + pce_psg->SetVolume(0.681); //0.227 * 0.50); + ADPCMSynth.volume(0.50); +} + +bool SoundBox_SetSoundRate(uint32 rate) +{ + SoundEnabled = (bool)rate; + + for(int y = 0; y < 2; y++) + { + FXsbuf[y].set_sample_rate(rate ? rate : 44100, 50); + FXsbuf[y].clock_rate((long)(1789772.727272 * 4)); + FXsbuf[y].bass_freq(20); + } + + RedoVolume(); + + return(TRUE); +} + +int SoundBox_Init(bool arg_EmulateBuggyCodec, bool arg_ResetAntiClickEnabled) +{ + int x; + + SoundEnabled = false; + + EmulateBuggyCodec = arg_EmulateBuggyCodec; + ResetAntiClickEnabled = arg_ResetAntiClickEnabled; + + + pce_psg = new PCE_PSG(&FXsbuf[0], &FXsbuf[1], PCE_PSG::REVISION_HUC6280A); + + #ifdef WANT_DEBUGGER + MDFNDBG_AddRegGroup(&SBoxRegsGroup); + #endif + + memset(&psg, 0, sizeof(psg)); + + // Build ADPCM volume table, 1.5dB per step, ADPCM volume settings of 0x0 through 0x1B result in silence. + for(x = 0; x < 0x40; x++) + { + double flub = 1; + int vti = 0x3F - x; + + if(x) + flub /= pow(2, (double)1 / 4 * x); + + if(vti <= 0x1B) + ADPCMVolTable[vti] = 0; + else + ADPCMVolTable[vti] = flub / 8; + } + + return (1); +} + +void SoundBox_Kill(void) +{ + if(pce_psg) + { + delete pce_psg; + pce_psg = NULL; + } +} + +/* Macro to access currently selected PSG channel */ +void SoundBox_Write(uint32 A, uint16 V, const v810_timestamp_t timestamp) +{ + A &= 0x3F; + + if(A < 0x20) + { + pce_psg->Write(timestamp / 3, A >> 1, V); + } + else + { + //printf("%04x %04x %d\n", A, V, timestamp); + switch(A & 0x3F) + { + //default: printf("HARUM: %04x %04x\n", A, V); break; + case 0x20: SoundBox_ADPCMUpdate(timestamp); + for(int ch = 0; ch < 2; ch++) + { + if(!(psg.ADPCMControl & (0x10 << ch)) && (V & (0x10 << ch))) + { + //printf("Reset: %d\n", ch); + + if(ResetAntiClickEnabled) + { + psg.ResetAntiClick[ch] += (int64)psg.ADPCMPredictor[ch] << 32; + if(psg.ResetAntiClick[ch] > ((int64)0x3FFF << 32)) + psg.ResetAntiClick[ch] = (int64)0x3FFF << 32; + if(psg.ResetAntiClick[ch] < ((int64)-0x4000 << 32)) + psg.ResetAntiClick[ch] = (int64)-0x4000 << 32; + } + + psg.ADPCMPredictor[ch] = 0; + psg.StepSizeIndex[ch] = 0; + } + } + psg.ADPCMControl = V; + break; + + case 0x22: SoundBox_ADPCMUpdate(timestamp); + psg.ADPCMVolume[0][0] = V & 0x3F; + break; + + case 0x24: SoundBox_ADPCMUpdate(timestamp); + psg.ADPCMVolume[0][1] = V & 0x3F; + break; + + case 0x26: SoundBox_ADPCMUpdate(timestamp); + psg.ADPCMVolume[1][0] = V & 0x3F; + break; + + case 0x28: SoundBox_ADPCMUpdate(timestamp); + psg.ADPCMVolume[1][1] = V & 0x3F; + break; + + case 0x2A: psg.CDDAVolume[0] = V & 0x3F; + SCSICD_SetCDDAVolume(0.50f * psg.CDDAVolume[0] / 63, 0.50f * psg.CDDAVolume[1] / 63); + break; + + case 0x2C: psg.CDDAVolume[1] = V & 0x3F; + SCSICD_SetCDDAVolume(0.50f * psg.CDDAVolume[0] / 63, 0.50f * psg.CDDAVolume[1] / 63); + break; + } + } +} + +static uint32 KINGADPCMControl; + +void SoundBox_SetKINGADPCMControl(uint32 value) +{ + KINGADPCMControl = value; +} + +/* Digital filter designed by mkfilter/mkshape/gencode A.J. Fisher + Command line: /www/usr/fisher/helpers/mkfilter -Bu -Lp -o 1 -a 1.5888889125e-04 0.0000000000e+00 -l */ +static void DoVolumeFilter(int ch, int lr) +{ + psg.vf_xv[ch][lr][0] = psg.vf_xv[ch][lr][1]; + psg.vf_xv[ch][lr][1] = (double)ADPCMVolTable[psg.ADPCMVolume[ch][lr]] / 2.004348738e+03; + + psg.vf_yv[ch][lr][0] = psg.vf_yv[ch][lr][1]; + psg.vf_yv[ch][lr][1] = (psg.vf_xv[ch][lr][0] + psg.vf_xv[ch][lr][1]) + ( 0.9990021696 * psg.vf_yv[ch][lr][0]); + psg.VolumeFiltered[ch][lr] = psg.vf_yv[ch][lr][1]; +} + +v810_timestamp_t SoundBox_ADPCMUpdate(const v810_timestamp_t timestamp) +{ + int32 run_time = timestamp - adpcm_lastts; + + adpcm_lastts = timestamp; + + psg.bigdiv -= run_time * 2; + + while(psg.bigdiv <= 0) + { + psg.smalldiv--; + while(psg.smalldiv <= 0) + { + psg.smalldiv += 1 << ((KINGADPCMControl >> 2) & 0x3); + for(int ch = 0; ch < 2; ch++) + { + // Keep playing our last halfword fetched even if KING ADPCM is disabled + if(psg.ADPCMHaveHalfWord[ch] || KINGADPCMControl & (1 << ch)) + { + if(!psg.ADPCMWhichNibble[ch]) + { + psg.ADPCMHalfWord[ch] = KING_GetADPCMHalfWord(ch); + psg.ADPCMHaveHalfWord[ch] = TRUE; + } + + // If the channel's reset bit is set, don't update its ADPCM state. + if(psg.ADPCMControl & (0x10 << ch)) + { + psg.ADPCMDelta[ch] = 0; + } + else + { + uint8 nibble = (psg.ADPCMHalfWord[ch] >> (psg.ADPCMWhichNibble[ch])) & 0xF; + int32 BaseStepSize = StepSizes[psg.StepSizeIndex[ch]]; + + //if(!ch) + //printf("Nibble: %02x\n", nibble); + + if(EmulateBuggyCodec) + { + if(BaseStepSize == 1552) + BaseStepSize = 1522; + + psg.ADPCMDelta[ch] = BaseStepSize * ((nibble & 0x7) + 1) * 2; + } + else + psg.ADPCMDelta[ch] = BaseStepSize * ((nibble & 0x7) + 1); + + // Linear interpolation turned on? + if(psg.ADPCMControl & (0x4 << ch)) + psg.ADPCMDelta[ch] >>= (KINGADPCMControl >> 2) & 0x3; + + if(nibble & 0x8) + psg.ADPCMDelta[ch] = -psg.ADPCMDelta[ch]; + + psg.StepSizeIndex[ch] += StepIndexDeltas[nibble]; + + if(psg.StepSizeIndex[ch] < 0) + psg.StepSizeIndex[ch] = 0; + + if(psg.StepSizeIndex[ch] > 48) + psg.StepSizeIndex[ch] = 48; + } + psg.ADPCMHaveDelta[ch] = 1; + + // Linear interpolation turned on? + if(psg.ADPCMControl & (0x4 << ch)) + psg.ADPCMHaveDelta[ch] = 1 << ((KINGADPCMControl >> 2) & 0x3); + + psg.ADPCMWhichNibble[ch] = (psg.ADPCMWhichNibble[ch] + 4) & 0xF; + + if(!psg.ADPCMWhichNibble[ch]) + psg.ADPCMHaveHalfWord[ch] = FALSE; + } + } // for(int ch...) + } // while(psg.smalldiv <= 0) + + for(int ch = 0; ch < 2; ch++) + { + //static int32 last_synthtime = 0; + //uint32 synthtime = (timestamp + psg.bigdiv / 2) / 3; + // This is as correct as the divide(I think), but may be faster(or maybe not?) + uint32 synthtime = (timestamp - ((0 - psg.bigdiv) >> 1)) / 3; + + //if(!ch) + //{ + // printf("%d\n", synthtime - last_synthtime); + // last_synthtime = synthtime; + //} + + if(psg.ADPCMHaveDelta[ch]) + { + psg.ADPCMPredictor[ch] += psg.ADPCMDelta[ch]; + + psg.ADPCMHaveDelta[ch]--; + + if(psg.ADPCMPredictor[ch] > 0x3FFF) { psg.ADPCMPredictor[ch] = 0x3FFF; /*printf("Overflow: %d\n", ch);*/ } + if(psg.ADPCMPredictor[ch] < -0x4000) { psg.ADPCMPredictor[ch] = -0x4000; /*printf("Underflow: %d\n", ch);*/ } + } + else + { + + } + + if(SoundEnabled) + { + int32 samp[2]; + + if(EmulateBuggyCodec) + { + samp[0] = (int32)(((psg.ADPCMPredictor[ch] >> 1) + (psg.ResetAntiClick[ch] >> 33)) * psg.VolumeFiltered[ch][0]); + samp[1] = (int32)(((psg.ADPCMPredictor[ch] >> 1) + (psg.ResetAntiClick[ch] >> 33)) * psg.VolumeFiltered[ch][1]); + } + else + { + samp[0] = (int32)((psg.ADPCMPredictor[ch] + (psg.ResetAntiClick[ch] >> 32)) * psg.VolumeFiltered[ch][0]); + samp[1] = (int32)((psg.ADPCMPredictor[ch] + (psg.ResetAntiClick[ch] >> 32)) * psg.VolumeFiltered[ch][1]); + } + ADPCMSynth.offset(synthtime, samp[0] - psg.ADPCM_last[ch][0], &FXsbuf[0]); + ADPCMSynth.offset(synthtime, samp[1] - psg.ADPCM_last[ch][1], &FXsbuf[1]); + + psg.ADPCM_last[ch][0] = samp[0]; + psg.ADPCM_last[ch][1] = samp[1]; + } + } + + for(int ch = 0; ch < 2; ch++) + { + psg.ResetAntiClick[ch] -= psg.ResetAntiClick[ch] >> 8; + //if(ch) + // MDFN_DispMessage("%d", (int)(psg.ResetAntiClick[ch] >> 32)); + } + + for(int ch = 0; ch < 2; ch++) + for(int lr = 0; lr < 2; lr++) + { + DoVolumeFilter(ch, lr); + } + psg.bigdiv += 1365 * 2 / 2; + } + + + assert((psg.bigdiv + 1) / 2); + return(timestamp + (psg.bigdiv + 1) / 2); +} + +int32 SoundBox_Flush(const uint32 v810_timestamp, int16 *SoundBuf, const int32 MaxSoundFrames) +{ + int32 timestamp; + int32 FrameCount = 0; + + timestamp = v810_timestamp / 3; + + pce_psg->EndFrame(timestamp); + + if(SoundEnabled) + { + for(int y = 0; y < 2; y++) + { + FXsbuf[y].end_frame(timestamp); + FrameCount = FXsbuf[y].read_samples(SoundBuf + y, MaxSoundFrames, 1); + } + } + + return(FrameCount); +} + +void SoundBox_ResetTS(void) +{ + //assert(adpcm_lastts == PCFX_V810.v810_timestamp); + adpcm_lastts = 0; +} + +void SoundBox_Reset(void) +{ + pce_psg->Power(0); // FIXME + + psg.ADPCMControl = 0; + + memset(&psg.vf_xv, 0, sizeof(psg.vf_xv)); + memset(&psg.vf_yv, 0, sizeof(psg.vf_yv)); + + for(int lr = 0; lr < 2; lr++) + { + for(int ch = 0; ch < 2; ch++) + { + psg.ADPCMVolume[ch][lr] = 0; + psg.VolumeFiltered[ch][lr] = 0; + } + + psg.CDDAVolume[lr] = 0; + } + + for(int ch = 0; ch < 2; ch++) + { + psg.ADPCMPredictor[ch] = 0; + psg.StepSizeIndex[ch] = 0; + } + + memset(psg.ADPCMWhichNibble, 0, sizeof(psg.ADPCMWhichNibble)); + memset(psg.ADPCMHalfWord, 0, sizeof(psg.ADPCMHalfWord)); + memset(psg.ADPCMHaveHalfWord, 0, sizeof(psg.ADPCMHaveHalfWord)); + + SCSICD_SetCDDAVolume(0.50f * psg.CDDAVolume[0] / 63, 0.50f * psg.CDDAVolume[1] / 63); + + psg.bigdiv = 2; // TODO: KING->SBOX ADPCM Synch //(1365 - 85 * 4) * 2; //1365 * 2 / 2; + psg.smalldiv = 0; + adpcm_lastts = 0; +} + +int SoundBox_StateAction(StateMem *sm, int load, int data_only) +{ + int ret = 1; + + ret &= pce_psg->StateAction(sm, load, data_only); + + SFORMAT SoundBox_StateRegs[] = + { + SFVARN(psg.ADPCMControl, "ADPCMControl"), + SFARRAYN(&psg.ADPCMVolume[0][0], 2 * 2, "ADPCMVolume"), + SFARRAYN(psg.CDDAVolume, 2, "CDDAVolume"), + SFVARN(psg.bigdiv, "bigdiv"), + SFVARN(psg.smalldiv, "smalldiv"), + + SFARRAY64N(&psg.ResetAntiClick[0], 2, "ResetAntiClick"), + SFARRAYDN(&psg.VolumeFiltered[0][0], 2 * 2, "VolumeFiltered"), + SFARRAYDN(&psg.vf_xv[0][0][0], 2 * 2 * (1 + 1), "vf_xv"), + SFARRAYDN(&psg.vf_yv[0][0][0], 2 * 2 * (1 + 1), "vf_yv"), + + SFARRAY32N(psg.ADPCMDelta, 2, "ADPCMDelta"), + SFARRAY32N(psg.ADPCMHaveDelta, 2, "ADPCMHaveDelta"), + + SFARRAY32N(&psg.ADPCMPredictor[0], 2, "ADPCMPredictor"), + SFARRAY32N(&psg.StepSizeIndex[0], 2, "ADPCMStepSizeIndex"), + + SFARRAY32N(psg.ADPCMWhichNibble, 2, "ADPCMWNibble"), + SFARRAY16N(psg.ADPCMHalfWord, 2, "ADPCMHalfWord"), + SFARRAYBN(psg.ADPCMHaveHalfWord, 2, "ADPCMHHW"), + + SFEND + }; + + ret &= MDFNSS_StateAction(sm, load, data_only, SoundBox_StateRegs, "SBOX"); + + if(load) + { + for(int ch = 0; ch < 2; ch++) + { + clamp(&psg.ADPCMPredictor[ch], -0x4000, 0x3FFF); + clamp(&psg.ResetAntiClick[ch], (int64)-0x4000 << 32, (int64)0x3FFF << 32); + + if(!ResetAntiClickEnabled) + psg.ResetAntiClick[ch] = 0; + + clamp(&psg.StepSizeIndex[ch], 0, 48); + + clamp(&psg.bigdiv, 1, 1365); + clamp(&psg.smalldiv, 1, 8); + + for(int lr = 0; lr < 2; lr++) + { + + } + } + SCSICD_SetCDDAVolume(0.50f * psg.CDDAVolume[0] / 63, 0.50f * psg.CDDAVolume[1] / 63); + } + return(ret); +} diff --git a/libmednahawk/src/pcfx/soundbox.h b/libmednahawk/src/pcfx/soundbox.h new file mode 100644 index 0000000000..fb65fd3152 --- /dev/null +++ b/libmednahawk/src/pcfx/soundbox.h @@ -0,0 +1,45 @@ +#ifndef _PCFX_SOUNDBOX_H +#define _PCFX_SOUNDBOX_H + +typedef struct { + uint16 ADPCMControl; + uint8 ADPCMVolume[2][2]; // ADPCMVolume[channel(0 or 1)][left(0) or right(1)] + uint8 CDDAVolume[2]; + int32 bigdiv; + int32 smalldiv; + + int64 ResetAntiClick[2]; + double VolumeFiltered[2][2]; + double vf_xv[2][2][1+1], vf_yv[2][2][1+1]; + + int32 ADPCMDelta[2]; + int32 ADPCMHaveDelta[2]; + + int32 ADPCMPredictor[2]; + int32 StepSizeIndex[2]; + + uint32 ADPCMWhichNibble[2]; + uint16 ADPCMHalfWord[2]; + bool ADPCMHaveHalfWord[2]; + + int32 ADPCM_last[2][2]; +} t_soundbox; + +bool SoundBox_SetSoundRate(uint32 rate); +int32 SoundBox_Flush(const uint32, int16 *SoundBuf, const int32 MaxSoundFrames); +void SoundBox_Write(uint32 A, uint16 V, const v810_timestamp_t timestamp); +int SoundBox_Init(bool arg_EmulateBuggyCodec, bool arg_ResetAntiClickEnabled); + +void SoundBox_Reset(void); + +int SoundBox_StateAction(StateMem *sm, int load, int data_only); + +void SoundBox_SetKINGADPCMControl(uint32); + +v810_timestamp_t SoundBox_ADPCMUpdate(const v810_timestamp_t timestamp); + +void SoundBox_ResetTS(void); + +#include +#include +#endif diff --git a/libmednahawk/src/pcfx/timer.cpp b/libmednahawk/src/pcfx/timer.cpp new file mode 100644 index 0000000000..7705f684e6 --- /dev/null +++ b/libmednahawk/src/pcfx/timer.cpp @@ -0,0 +1,180 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* + TODO: Determine if the interrupt request bit can be manually set even if timer enable and/or timer int enable bits are 0. +*/ + + +#include "pcfx.h" +#include "interrupt.h" +#include "timer.h" +#include + +static uint16 control; +static uint16 period; +static int32 counter; + +static int32 lastts; + +static INLINE v810_timestamp_t CalcNextEventTS(const v810_timestamp_t timestamp) +{ + return((control & 0x2) ? (timestamp + counter) : PCFX_EVENT_NONONO); +} + +#define EFF_PERIOD ((period ? period : 0x10000) * 15) + +v810_timestamp_t FXTIMER_Update(const v810_timestamp_t timestamp) +{ + if(control & 0x2) + { + int32 cycles = timestamp - lastts; + counter -= cycles; + while(counter <= 0) + { + counter += EFF_PERIOD; + if(control & 0x1) + { + control |= 0x4; + PCFXIRQ_Assert(PCFXIRQ_SOURCE_TIMER, TRUE); + } + } + } + + lastts = timestamp; + + return(CalcNextEventTS(timestamp)); +} + +void FXTIMER_ResetTS(void) +{ + lastts = 0; +} + +uint16 FXTIMER_Read16(uint32 A, const v810_timestamp_t timestamp) +{ + FXTIMER_Update(timestamp); + switch(A & 0xFC0) + { + default: return(0); + + case 0xF00: return(control); + + case 0xF80: return(period); + + case 0xFC0: return((counter + 14) / 15); + } + return(0); +} + +uint8 FXTIMER_Read8(uint32 A, const v810_timestamp_t timestamp) +{ + FXTIMER_Update(timestamp); + return(FXTIMER_Read16(A&~1, timestamp) >> ((A & 1) * 8)); +} + +void FXTIMER_Write16(uint32 A, uint16 V, const v810_timestamp_t timestamp) +{ + FXTIMER_Update(timestamp); + + switch(A & 0xFC0) + { + default: break; + + case 0xF00: if(!(control & 0x2) && (V & 0x2)) + counter = EFF_PERIOD; + control = V & 0x7; + + if(V & 0x4) + FXDBG("Timer control write with D2 set?"); + + PCFXIRQ_Assert(PCFXIRQ_SOURCE_TIMER, (bool)(control & 0x4)); + PCFX_SetEvent(PCFX_EVENT_TIMER, CalcNextEventTS(timestamp)); + break; + + case 0xF80: period = V; + PCFX_SetEvent(PCFX_EVENT_TIMER, CalcNextEventTS(timestamp)); + break; + } +} + +int FXTIMER_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(counter), + SFVAR(period), + SFVAR(control), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "TIMR"); + + if(load) + { + + } + return(ret); +} + + + +bool FXTIMER_GetRegister(const std::string &name, uint32 &value, std::string *special) +{ + if(name == "TCTRL") + { + value = control; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Counting Enabled: %d, IRQ Enabled: %d, IRQ Asserted: %d", (int)(bool)(control & 2), (int)(bool)(control & 1), (int)(bool)(control & 4)); + *special = std::string(buf); + } + return(TRUE); + } + else if(name == "TPRD") + { + value = period; + if(special) + { + char buf[256]; + trio_snprintf(buf, 256, "Effective Period: %d; 21477272 / %d = %fHz", EFF_PERIOD, EFF_PERIOD, (double)21477272 / (EFF_PERIOD)); + *special = std::string(buf); + } + return(TRUE); + } + else if(name == "TCNTR") + { + value = counter; + if(special) + { + //char buf[256]; + //trio_snprintf(buf, 256, "Pad: %d, ??: %d, Timer: %d, Reset: %d", + //*special = std::string(buf); + } + return(TRUE); + } + else + return(FALSE); +} + +void FXTIMER_Reset(void) +{ + control = 0; + period = 0; + counter = 0; +} + diff --git a/libmednahawk/src/pcfx/timer.h b/libmednahawk/src/pcfx/timer.h new file mode 100644 index 0000000000..16a30fc14f --- /dev/null +++ b/libmednahawk/src/pcfx/timer.h @@ -0,0 +1,14 @@ +#ifndef __PCFX_TIMER_H +#define __PCFX_TIMER_H + +void FXTIMER_Write16(uint32 A, uint16 V, const v810_timestamp_t timestamp); +uint16 FXTIMER_Read16(uint32 A, const v810_timestamp_t timestamp); +uint8 FXTIMER_Read8(uint32 A, const v810_timestamp_t timestamp); +v810_timestamp_t FXTIMER_Update(const v810_timestamp_t timestamp); +void FXTIMER_ResetTS(void); +void FXTIMER_Reset(void); + +int FXTIMER_StateAction(StateMem *sm, int load, int data_only); +bool FXTIMER_GetRegister(const std::string &name, uint32 &value, std::string *special); + +#endif diff --git a/libmednahawk/src/player.cpp b/libmednahawk/src/player.cpp new file mode 100644 index 0000000000..ef0e1de004 --- /dev/null +++ b/libmednahawk/src/player.cpp @@ -0,0 +1,224 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" + +#include + +#include "video.h" +#include "player.h" + +static std::string AlbumName, Artist, Copyright; +static std::vector SongNames; +static int TotalSongs; + +static INLINE void DrawLine(MDFN_Surface *surface, uint32 color, uint32 bmatch, uint32 breplace, int x1, int y1, int x2, int y2) +{ + uint32 *buf = surface->pixels; + float dy_dx = (float)(y2 - y1) / (x2 - x1); + int x; + + float r_ys = 0; //x1 * dy_dx; + float r_ye = (x2 - x1) * dy_dx; + + for(x = x1; x <= x2; x++) + { + float ys = dy_dx * (x - 1 - x1) + dy_dx / 2; + float ye = dy_dx * (x + 1 - x1) - dy_dx / 2; + + if(dy_dx > 0) + { + ys = round(ys); + ye = round(ye); + + if(ys < r_ys) ys = r_ys; + if(ye > r_ye) ye = r_ye; + if(bmatch != ~0U) + for(unsigned int y = (unsigned int) ys; y <= (unsigned int)ye; y++) + { + uint32 tmpcolor = color; + if(buf[x + (y + y1) * surface->pitch32] == bmatch) tmpcolor = breplace; + if(buf[x + (y + y1) * surface->pitch32] != breplace) + buf[x + (y + y1) * surface->pitch32] = tmpcolor; + } + else + for(unsigned int y = (unsigned int)ys; y <= (unsigned int)ye; y++) + buf[x + (y + y1) * surface->pitch32] = color; + } + else + { + ys = round(ys); + ye = round(ye); + + if(ys > r_ys) ys = r_ys; + if(ye < r_ye) ye = r_ye; + + if(bmatch != ~0U) + for(int y = (int)ys; y >= (int)ye; y--) + { + uint32 tmpcolor = color; + + if(buf[x + (y + y1) * surface->pitch32] == bmatch) + tmpcolor = breplace; + + if(buf[x + (y + y1) * surface->pitch32] != breplace) + buf[x + (y + y1) * surface->pitch32] = tmpcolor; + } + else + for(int y = (int)ys; y >= (int)ye; y--) + { + buf[x + (y + y1) * surface->pitch32] = color; + } + } + } +} + +int Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right, const std::vector &snames) +{ + AlbumName = album; + Artist = artist; + Copyright = copyright; + SongNames = snames; + + TotalSongs = tsongs; + + MDFNGameInfo->nominal_width = 384; + MDFNGameInfo->nominal_height = 240; + + MDFNGameInfo->fb_width = 384; + MDFNGameInfo->fb_height = 240; + + MDFNGameInfo->lcm_width = 384; + MDFNGameInfo->lcm_height = 240; + + MDFNGameInfo->GameType = GMT_PLAYER; + + return(1); +} + +int Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right, char **snames) +{ + std::vector tmpvec; + + if(snames) + { + for(int i = 0; i < tsongs; i++) + tmpvec.push_back(snames[i] ? snames[i] : ""); + } + + return Player_Init(tsongs, album, artist, copyright, tmpvec); +} + +void Player_Draw(MDFN_Surface *surface, MDFN_Rect *dr, int CurrentSong, int16 *samples, int32 sampcount) +{ + uint32 *XBuf = surface->pixels; + //MDFN_Rect *dr = &MDFNGameInfo->DisplayRect; + int x,y; + const uint32 text_color = surface->MakeColor(0xE8, 0xE8, 0xE8); + const uint32 text_shadow_color = surface->MakeColor(0x00, 0x18, 0x10); + const uint32 bg_color = surface->MakeColor(0x20, 0x00, 0x08); + const uint32 left_color = surface->MakeColor(0x80, 0x80, 0xFF); + const uint32 right_color = surface->MakeColor(0x80, 0xff, 0x80); + const uint32 center_color = surface->MakeColor(0x80, 0xCC, 0xCC); + + dr->x = 0; + dr->y = 0; + dr->w = 384; + dr->h = 240; + + // Draw the background color + for(y = 0; y < dr->h; y++) + MDFN_FastU32MemsetM8(&XBuf[y * surface->pitch32], bg_color, dr->w); + + // Now we draw the waveform data. It should be centered vertically, and extend the screen horizontally from left to right. + int32 x_scale; + float y_scale; + int lastX, lastY; + + + x_scale = (sampcount << 8) / dr->w; + + y_scale = (float)dr->h; + + if(sampcount) + { + for(int wc = 0; wc < MDFNGameInfo->soundchan; wc++) + { + uint32 color = wc ? right_color : left_color; //MK_COLOR(0x80, 0xff, 0x80) : MK_COLOR(0x80, 0x80, 0xFF); + + if(MDFNGameInfo->soundchan == 1) + color = center_color; //MK_COLOR(0x80, 0xc0, 0xc0); + + lastX = -1; + lastY = 0; + + for(x = 0; x < dr->w; x++) + { + float samp = ((float)-samples[wc + (x * x_scale >> 8) * MDFNGameInfo->soundchan]) / 32768; + int ypos; + + ypos = (dr->h / 2) + (int)(y_scale * samp); + + if(ypos >= dr->h) + ypos = dr->h - 1; + + if(ypos < 0) + ypos = 0; + + if(lastX >= 0) + DrawLine(surface, color, wc ? left_color : ~0, center_color, lastX, lastY, x, ypos); + lastX = x; + lastY = ypos; + } + } + } + + // Quick warning: DrawTextTransShadow() has the possibility of drawing past the visible display area by 1 pixel on each axis. This should only be a cosmetic issue + // if 1-pixel line overflowing occurs onto the next line. Fixme in the future? + + XBuf += 2 * surface->pitch32; + DrawTextTransShadow(XBuf, surface->pitch32 * sizeof(uint32), dr->w, AlbumName, text_color, text_shadow_color, 1); + + XBuf += (13 + 2) * surface->pitch32; + DrawTextTransShadow(XBuf, surface->pitch32 * sizeof(uint32), dr->w, Artist, text_color, text_shadow_color, 1); + + XBuf += (13 + 2) * surface->pitch32; + DrawTextTransShadow(XBuf, surface->pitch32 * sizeof(uint32), dr->w, Copyright, text_color, text_shadow_color, 1); + + XBuf += (13 * 2) * surface->pitch32; + + // If each song has an individual name, show this song's name. + { + std::string tmpsong = ""; + + if((unsigned int)CurrentSong < SongNames.size()) + tmpsong = SongNames[CurrentSong]; + + if(tmpsong == "" && TotalSongs > 1) + tmpsong = std::string(_("Song:")); + + DrawTextTransShadow(XBuf, surface->pitch32 * sizeof(uint32), dr->w, tmpsong, text_color, text_shadow_color, 1); + } + + XBuf += (13 + 2) * surface->pitch32; + if(TotalSongs > 1) + { + char snbuf[32]; + snprintf(snbuf, 32, "<%d/%d>", CurrentSong + 1, TotalSongs); + DrawTextTransShadow(XBuf, surface->pitch32 * sizeof(uint32), dr->w, (uint8*)snbuf, text_color, text_shadow_color, 1); + } +} diff --git a/libmednahawk/src/player.h b/libmednahawk/src/player.h new file mode 100644 index 0000000000..e21dfa499e --- /dev/null +++ b/libmednahawk/src/player.h @@ -0,0 +1,9 @@ +#ifndef __MDFN_PLAYER_H +#define __MDFN_PLAYER_H + +int Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right,const std::vector &snames = std::vector()); +int Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right, char **snames); + +void Player_Draw(MDFN_Surface *surface, MDFN_Rect *dr, int CurrentSong, int16 *samples, int32 sampcount); + +#endif diff --git a/libmednahawk/src/psx/.Tpo b/libmednahawk/src/psx/.Tpo new file mode 100644 index 0000000000..5322eb8528 --- /dev/null +++ b/libmednahawk/src/psx/.Tpo @@ -0,0 +1,411 @@ +cpu.o: cpu.cpp psx.h ../../mednafen/mednafen.h ../../mednafen/types.h \ + ../../include/config.h /usr/include/assert.h /usr/include/features.h \ + /usr/include/bits/predefs.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/inttypes.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h ../../mednafen/error.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h \ + /usr/include/xlocale.h /usr/include/c++/4.4/exception \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/c++config.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/os_defines.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/cpu_defines.h \ + /usr/include/stdio.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h ../../mednafen/gettext.h /usr/include/libintl.h \ + ../../mednafen/math_ops.h ../../mednafen/git.h \ + /usr/include/c++/4.4/string /usr/include/c++/4.4/bits/stringfwd.h \ + /usr/include/c++/4.4/bits/char_traits.h \ + /usr/include/c++/4.4/bits/stl_algobase.h /usr/include/c++/4.4/cstddef \ + /usr/include/c++/4.4/bits/functexcept.h \ + /usr/include/c++/4.4/exception_defines.h \ + /usr/include/c++/4.4/bits/cpp_type_traits.h \ + /usr/include/c++/4.4/ext/type_traits.h \ + /usr/include/c++/4.4/ext/numeric_traits.h \ + /usr/include/c++/4.4/bits/stl_pair.h /usr/include/c++/4.4/bits/move.h \ + /usr/include/c++/4.4/bits/concept_check.h \ + /usr/include/c++/4.4/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.4/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.4/bits/stl_iterator.h \ + /usr/include/c++/4.4/debug/debug.h /usr/include/c++/4.4/bits/postypes.h \ + /usr/include/c++/4.4/cwchar /usr/include/c++/4.4/bits/allocator.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/c++allocator.h \ + /usr/include/c++/4.4/ext/new_allocator.h /usr/include/c++/4.4/new \ + /usr/include/c++/4.4/bits/localefwd.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/c++locale.h \ + /usr/include/c++/4.4/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/c++/4.4/iosfwd \ + /usr/include/c++/4.4/cctype /usr/include/ctype.h \ + /usr/include/c++/4.4/bits/ostream_insert.h \ + /usr/include/c++/4.4/cxxabi-forced.h \ + /usr/include/c++/4.4/bits/stl_function.h \ + /usr/include/c++/4.4/backward/binders.h \ + /usr/include/c++/4.4/bits/basic_string.h \ + /usr/include/c++/4.4/ext/atomicity.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + /usr/include/c++/4.4/x86_64-linux-gnu/bits/atomic_word.h \ + /usr/include/c++/4.4/initializer_list \ + /usr/include/c++/4.4/bits/basic_string.tcc ../../mednafen/video.h \ + ../../mednafen/video/surface.h /usr/include/c++/4.4/vector \ + /usr/include/c++/4.4/bits/stl_construct.h \ + /usr/include/c++/4.4/bits/stl_uninitialized.h \ + /usr/include/c++/4.4/bits/stl_vector.h \ + /usr/include/c++/4.4/bits/stl_bvector.h \ + /usr/include/c++/4.4/bits/vector.tcc ../../mednafen/video/primitives.h \ + ../../mednafen/video/text.h /usr/include/c++/4.4/algorithm \ + /usr/include/c++/4.4/bits/stl_algo.h /usr/include/c++/4.4/cstdlib \ + /usr/include/c++/4.4/bits/algorithmfwd.h \ + /usr/include/c++/4.4/bits/stl_heap.h \ + /usr/include/c++/4.4/bits/stl_tempbuf.h ../../mednafen/sound.h \ + ../../mednafen/file.h ../../mednafen/state.h /usr/include/zlib.h \ + /usr/include/zconf.h /usr/include/zlibdefs.h \ + ../../mednafen/state-common.h ../../mednafen/settings-common.h \ + ../../mednafen/debug.h ../../mednafen/git-virtb.h \ + ../../mednafen/settings.h ../../mednafen/mednafen-driver.h \ + ../../mednafen/endian.h ../../mednafen/memory.h \ + ../../include/trio/trio.h ../../include/trio/triop.h \ + ../../include/trio/triodef.h ../cdrom/cdromif.h ../cdrom/CDUtility.h \ + /usr/include/c++/4.4/queue /usr/include/c++/4.4/deque \ + /usr/include/c++/4.4/bits/stl_deque.h \ + /usr/include/c++/4.4/bits/deque.tcc \ + /usr/include/c++/4.4/bits/stl_queue.h ../general.h ../FileWrapper.h \ + dis.h cpu.h gte.h irq.h gpu.h ../cdrom/SimpleFIFO.h \ + ../cdrom/../math_ops.h dma.h debug.h + +psx.h: + +../../mednafen/mednafen.h: + +../../mednafen/types.h: + +../../include/config.h: + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/bits/predefs.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/include/inttypes.h: + +/usr/include/stdint.h: + +/usr/include/bits/wchar.h: + +../../mednafen/error.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/c++/4.4/exception: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/c++config.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/os_defines.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/cpu_defines.h: + +/usr/include/stdio.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +../../mednafen/gettext.h: + +/usr/include/libintl.h: + +../../mednafen/math_ops.h: + +../../mednafen/git.h: + +/usr/include/c++/4.4/string: + +/usr/include/c++/4.4/bits/stringfwd.h: + +/usr/include/c++/4.4/bits/char_traits.h: + +/usr/include/c++/4.4/bits/stl_algobase.h: + +/usr/include/c++/4.4/cstddef: + +/usr/include/c++/4.4/bits/functexcept.h: + +/usr/include/c++/4.4/exception_defines.h: + +/usr/include/c++/4.4/bits/cpp_type_traits.h: + +/usr/include/c++/4.4/ext/type_traits.h: + +/usr/include/c++/4.4/ext/numeric_traits.h: + +/usr/include/c++/4.4/bits/stl_pair.h: + +/usr/include/c++/4.4/bits/move.h: + +/usr/include/c++/4.4/bits/concept_check.h: + +/usr/include/c++/4.4/bits/stl_iterator_base_types.h: + +/usr/include/c++/4.4/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/4.4/bits/stl_iterator.h: + +/usr/include/c++/4.4/debug/debug.h: + +/usr/include/c++/4.4/bits/postypes.h: + +/usr/include/c++/4.4/cwchar: + +/usr/include/c++/4.4/bits/allocator.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/c++allocator.h: + +/usr/include/c++/4.4/ext/new_allocator.h: + +/usr/include/c++/4.4/new: + +/usr/include/c++/4.4/bits/localefwd.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/c++locale.h: + +/usr/include/c++/4.4/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/4.4/iosfwd: + +/usr/include/c++/4.4/cctype: + +/usr/include/ctype.h: + +/usr/include/c++/4.4/bits/ostream_insert.h: + +/usr/include/c++/4.4/cxxabi-forced.h: + +/usr/include/c++/4.4/bits/stl_function.h: + +/usr/include/c++/4.4/backward/binders.h: + +/usr/include/c++/4.4/bits/basic_string.h: + +/usr/include/c++/4.4/ext/atomicity.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/signal.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/c++/4.4/x86_64-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/4.4/initializer_list: + +/usr/include/c++/4.4/bits/basic_string.tcc: + +../../mednafen/video.h: + +../../mednafen/video/surface.h: + +/usr/include/c++/4.4/vector: + +/usr/include/c++/4.4/bits/stl_construct.h: + +/usr/include/c++/4.4/bits/stl_uninitialized.h: + +/usr/include/c++/4.4/bits/stl_vector.h: + +/usr/include/c++/4.4/bits/stl_bvector.h: + +/usr/include/c++/4.4/bits/vector.tcc: + +../../mednafen/video/primitives.h: + +../../mednafen/video/text.h: + +/usr/include/c++/4.4/algorithm: + +/usr/include/c++/4.4/bits/stl_algo.h: + +/usr/include/c++/4.4/cstdlib: + +/usr/include/c++/4.4/bits/algorithmfwd.h: + +/usr/include/c++/4.4/bits/stl_heap.h: + +/usr/include/c++/4.4/bits/stl_tempbuf.h: + +../../mednafen/sound.h: + +../../mednafen/file.h: + +../../mednafen/state.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +/usr/include/zlibdefs.h: + +../../mednafen/state-common.h: + +../../mednafen/settings-common.h: + +../../mednafen/debug.h: + +../../mednafen/git-virtb.h: + +../../mednafen/settings.h: + +../../mednafen/mednafen-driver.h: + +../../mednafen/endian.h: + +../../mednafen/memory.h: + +../../include/trio/trio.h: + +../../include/trio/triop.h: + +../../include/trio/triodef.h: + +../cdrom/cdromif.h: + +../cdrom/CDUtility.h: + +/usr/include/c++/4.4/queue: + +/usr/include/c++/4.4/deque: + +/usr/include/c++/4.4/bits/stl_deque.h: + +/usr/include/c++/4.4/bits/deque.tcc: + +/usr/include/c++/4.4/bits/stl_queue.h: + +../general.h: + +../FileWrapper.h: + +dis.h: + +cpu.h: + +gte.h: + +irq.h: + +gpu.h: + +../cdrom/SimpleFIFO.h: + +../cdrom/../math_ops.h: + +dma.h: + +debug.h: diff --git a/libmednahawk/src/psx/Makefile.am b/libmednahawk/src/psx/Makefile.am new file mode 100644 index 0000000000..77606c107f --- /dev/null +++ b/libmednahawk/src/psx/Makefile.am @@ -0,0 +1,12 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ @MMX_CFLAGS@ @SSE_CFLAGS@ @SSE2_CFLAGS@ -funroll-loops +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) + +noinst_LIBRARIES = libpsx.a +libpsx_a_SOURCES = psx.cpp irq.cpp timer.cpp dma.cpp frontio.cpp sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp gpu.cpp mdec.cpp + +libpsx_a_SOURCES += input/gamepad.cpp input/dualanalog.cpp input/dualshock.cpp input/memcard.cpp input/multitap.cpp input/mouse.cpp input/negcon.cpp input/guncon.cpp input/justifier.cpp + +if WANT_DEBUGGER +libpsx_a_SOURCES += debug.cpp +endif diff --git a/libmednahawk/src/psx/Makefile.in b/libmednahawk/src/psx/Makefile.in new file mode 100644 index 0000000000..54000e60eb --- /dev/null +++ b/libmednahawk/src/psx/Makefile.in @@ -0,0 +1,675 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WANT_DEBUGGER_TRUE@am__append_1 = debug.cpp +subdir = src/psx +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libpsx_a_AR = $(AR) $(ARFLAGS) +libpsx_a_LIBADD = +am__libpsx_a_SOURCES_DIST = psx.cpp irq.cpp timer.cpp dma.cpp \ + frontio.cpp sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp \ + gpu.cpp mdec.cpp input/gamepad.cpp input/dualanalog.cpp \ + input/dualshock.cpp input/memcard.cpp input/multitap.cpp \ + input/mouse.cpp input/negcon.cpp input/guncon.cpp \ + input/justifier.cpp debug.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@WANT_DEBUGGER_TRUE@am__objects_1 = debug.$(OBJEXT) +am_libpsx_a_OBJECTS = psx.$(OBJEXT) irq.$(OBJEXT) timer.$(OBJEXT) \ + dma.$(OBJEXT) frontio.$(OBJEXT) sio.$(OBJEXT) cpu.$(OBJEXT) \ + gte.$(OBJEXT) dis.$(OBJEXT) cdc.$(OBJEXT) spu.$(OBJEXT) \ + gpu.$(OBJEXT) mdec.$(OBJEXT) input/gamepad.$(OBJEXT) \ + input/dualanalog.$(OBJEXT) input/dualshock.$(OBJEXT) \ + input/memcard.$(OBJEXT) input/multitap.$(OBJEXT) \ + input/mouse.$(OBJEXT) input/negcon.$(OBJEXT) \ + input/guncon.$(OBJEXT) input/justifier.$(OBJEXT) \ + $(am__objects_1) +libpsx_a_OBJECTS = $(am_libpsx_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libpsx_a_SOURCES) +DIST_SOURCES = $(am__libpsx_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ @MMX_CFLAGS@ @SSE_CFLAGS@ @SSE2_CFLAGS@ -funroll-loops +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) +noinst_LIBRARIES = libpsx.a +libpsx_a_SOURCES = psx.cpp irq.cpp timer.cpp dma.cpp frontio.cpp \ + sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp gpu.cpp \ + mdec.cpp input/gamepad.cpp input/dualanalog.cpp \ + input/dualshock.cpp input/memcard.cpp input/multitap.cpp \ + input/mouse.cpp input/negcon.cpp input/guncon.cpp \ + input/justifier.cpp $(am__append_1) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/psx/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/psx/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +input/$(am__dirstamp): + @$(MKDIR_P) input + @: > input/$(am__dirstamp) +input/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) input/$(DEPDIR) + @: > input/$(DEPDIR)/$(am__dirstamp) +input/gamepad.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/dualanalog.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/dualshock.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/memcard.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/multitap.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/mouse.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/negcon.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/guncon.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +input/justifier.$(OBJEXT): input/$(am__dirstamp) \ + input/$(DEPDIR)/$(am__dirstamp) +libpsx.a: $(libpsx_a_OBJECTS) $(libpsx_a_DEPENDENCIES) + $(AM_V_at)-rm -f libpsx.a + $(AM_V_AR)$(libpsx_a_AR) libpsx.a $(libpsx_a_OBJECTS) $(libpsx_a_LIBADD) + $(AM_V_at)$(RANLIB) libpsx.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f input/dualanalog.$(OBJEXT) + -rm -f input/dualshock.$(OBJEXT) + -rm -f input/gamepad.$(OBJEXT) + -rm -f input/guncon.$(OBJEXT) + -rm -f input/justifier.$(OBJEXT) + -rm -f input/memcard.$(OBJEXT) + -rm -f input/mouse.$(OBJEXT) + -rm -f input/multitap.$(OBJEXT) + -rm -f input/negcon.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dis.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frontio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irq.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/dualanalog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/dualshock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gamepad.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/guncon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/justifier.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/memcard.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mouse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/multitap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/negcon.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f input/$(DEPDIR)/$(am__dirstamp) + -rm -f input/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) input/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) input/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/psx/NOTES b/libmednahawk/src/psx/NOTES new file mode 100644 index 0000000000..c509916665 --- /dev/null +++ b/libmednahawk/src/psx/NOTES @@ -0,0 +1,3 @@ +Capcom games(MMX4, MMX5, etc) - Sensitive about CD access and XA timing(XA playback problems). + +Viewpoint - Extra-sensitive about GPU LL DMA timing? (It was generating exceptions for some timings...) diff --git a/libmednahawk/src/psx/PSX-TODO b/libmednahawk/src/psx/PSX-TODO new file mode 100644 index 0000000000..138a45a1be --- /dev/null +++ b/libmednahawk/src/psx/PSX-TODO @@ -0,0 +1,46 @@ +Soul Reaver - Legacy of Kain has CD load time pauses where it probably shouldn't. + +Battle Arena Toshinden, Final Fantasy 7 have some kind of GPU timing issues. + +Zero Divide runs too fast(related to CPU emulation speed?). + +Chrono Cross has several-second freezes during some large special attack/magic sequences. +----------------------------------------------------------------------------------------------- + + +Tiny Toon Adventures - Plucky's Big Adventure is failing and BREAK'ing for some reason, maybe memcard related. + +Shadow Master might have broken startup images. + +Crusaders of Might and Magic - The CD-XA buffering increase for ToD II is apparently exacerbating the early voice cutoff problem in this game. + +Crash Team Racing - Noticed a game lockup once in the arcade mode stage select screen, having trouble reproducing it. +----------------------------------------------------------------------------------------------- + + +Test time delta between GPU LL DMA end and GPU non-busy status for various primitive types in sequence on a PS1. + +Test IRQ and COP0 latencies; PSX IRQ controller latency, software IRQ bit latency, latency of both relevant COP0 IRQ enable bits. + +Test IRQ with LWC2. + +Test IRQ with COP0 instructions(interrupted execution or not?). + +Determine maximum quad height and width. See if drawing is an all-or-nothing thing, or if one triangle of the pair will still be drawn +if it's not too large. + +Test 0x0 and 1x1 polygon throughput for all triangle and quad drawing commands. + +Fix line drawing algorithm to match test results on the real thing. + +Instruction cache emulation(MAYBE). + + +Test time between voice on and envelope reset; test time between voice on and first ADPCM block memory fetch. + +The SPU in the PS1 might sometimes drop voice on events when playing an ADPCM block that loops to itself(and was also the first and only +ADPCM block, at least in the test program I noticed the issue in); investigate further. + + + +Make sure debugger COPn disassembly is correct(no typos or whatnot). diff --git a/libmednahawk/src/psx/README.NOW b/libmednahawk/src/psx/README.NOW new file mode 100644 index 0000000000..6b57dc297f --- /dev/null +++ b/libmednahawk/src/psx/README.NOW @@ -0,0 +1,2 @@ +This PSX emulation code is horribly unfinished! Please don't take and use any pieces of it in any other project unless you have +a very good reason to! diff --git a/libmednahawk/src/psx/SOURCES b/libmednahawk/src/psx/SOURCES new file mode 100644 index 0000000000..38eb7550a0 --- /dev/null +++ b/libmednahawk/src/psx/SOURCES @@ -0,0 +1,38 @@ +Sources of helpful information used in PS1 emulation(though some of it, especially older compiled information, +is wrong to some degree or incomplete, but it's still useful): + +PCSX(and derivatives/forks) +MAME/MESS +P.E.Op.S + +Blade Lib +psxsdk + +doomed's PSX documents +bITmASTER's document +Neill Corlett's SPU documents +T.Fujita's SIO documents +ChrlyMac +Exophase +mizvekov +notaz +pSXAuthor +smf(blog) +shalma(forum posts, changelogs) +drhell's site +jac's CD-XA document +"The PlayStation 1 Video (STR) Format" - M. Sabin +Various PS1 emulator compatibility lists(for identifying problematic games) + + +MIPS RISC Architecture - Gerry Kane (1st and 2nd editions) +MIPS Programmer's Handbook, The + +----------- +General(non-PS1-specific) CD/CDROM information and code: + +SCSI-3 Multimedia Commands Revision 10A +ECMA-130 + +cdrdao +dvdisaster diff --git a/libmednahawk/src/psx/cdc.cpp b/libmednahawk/src/psx/cdc.cpp new file mode 100644 index 0000000000..fe59a30c44 --- /dev/null +++ b/libmednahawk/src/psx/cdc.cpp @@ -0,0 +1,2108 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// TODO: async command counter and async command phase? +/* + + TODO: + Implement missing commands. + + SPU CD-DA and CD-XA streaming semantics. +*/ + +/* + After eject(doesn't appear to occur when drive is in STOP state): + * Does not appear to occur in STOP state. + * Does not appear to occur in PAUSE state. + * DOES appear to occur in STANDBY state. (TODO: retest) + +% Result 0: 16 +% Result 1: 08 +% IRQ Result: e5 +% 19 e0 + + Command abortion tests(NOP tested): + Does not appear to occur when in STOP or PAUSE states(STOP or PAUSE command just executed). + + DOES occur after a ReadTOC completes, if ReadTOC is not followed by a STOP or PAUSE. Odd. +*/ + +#include "psx.h" +#include "cdc.h" +#include "spu.h" + +using namespace CDUtility; + +namespace MDFN_IEN_PSX +{ + +PS_CDC::PS_CDC() : DMABuffer(4096) +{ + IsPSXDisc = false; + Cur_CDIF = NULL; +} + +PS_CDC::~PS_CDC() +{ + +} + +void PS_CDC::SetDisc(bool tray_open, CDIF *cdif, const char *disc_id) +{ + if(tray_open) + cdif = NULL; + + Cur_CDIF = cdif; + IsPSXDisc = false; + memset(DiscID, 0, sizeof(DiscID)); + + if(!Cur_CDIF) + { + PSRCounter = 0; + + if((DriveStatus != DS_PAUSED && DriveStatus != DS_STOPPED) || PendingCommandPhase > 0) + { + PendingCommand = 0x00; + PendingCommandCounter = 0; + PendingCommandPhase = 0; + } + + HeaderBufValid = false; + DriveStatus = DS_STOPPED; + ClearAIP(); + } + else + { + HeaderBufValid = false; + DiscStartupDelay = (int64)1000 * 33868800 / 1000; + DiscChanged = true; + + Cur_CDIF->ReadTOC(&toc); + + if(disc_id) + { + strncpy((char *)DiscID, disc_id, 4); + IsPSXDisc = true; + } + } +} + +int32 PS_CDC::CalcNextEvent(void) +{ + int32 next_event = SPUCounter; + + if(PSRCounter > 0 && next_event > PSRCounter) + next_event = PSRCounter; + + if(PendingCommandCounter > 0 && next_event > PendingCommandCounter) + next_event = PendingCommandCounter; + + if(!IRQBuffer) + { + if(CDCReadyReceiveCounter > 0 && next_event > CDCReadyReceiveCounter) + next_event = CDCReadyReceiveCounter; + } + + if(DiscStartupDelay > 0 && next_event > DiscStartupDelay) + next_event = DiscStartupDelay; + + //fprintf(stderr, "%d %d %d %d --- %d\n", PSRCounter, PendingCommandCounter, CDCReadyReceiveCounter, DiscStartupDelay, next_event); + + return(next_event); +} + +void PS_CDC::SoftReset(void) +{ + ClearAudioBuffers(); + + // Not sure about initial volume state + Pending_DecodeVolume[0][0] = 0x80; + Pending_DecodeVolume[0][1] = 0x00; + Pending_DecodeVolume[1][0] = 0x00; + Pending_DecodeVolume[1][1] = 0x80; + memcpy(DecodeVolume, Pending_DecodeVolume, sizeof(DecodeVolume)); + + RegSelector = 0; + memset(ArgsBuf, 0, sizeof(ArgsBuf)); + ArgsIn = 0; + + memset(ResultsBuffer, 0, sizeof(ResultsBuffer)); + ResultsWP = 0; + ResultsRP = 0; + ResultsIn = 0; + + CDCReadyReceiveCounter = 0; + + IRQBuffer = 0; + IRQOutTestMask = 0; + RecalcIRQ(); + + DMABuffer.Flush(); + SB_In = 0; + + memset(SubQBuf, 0, sizeof(SubQBuf)); + memset(SubQBuf_Safe, 0, sizeof(SubQBuf_Safe)); + SubQChecksumOK = false; + + memset(HeaderBuf, 0, sizeof(HeaderBuf)); + + + FilterFile = 0; + FilterChan = 0; + + PendingCommand = 0; + PendingCommandPhase = 0; + PendingCommandCounter = 0; + + Mode = 0; + + HeaderBufValid = false; + DriveStatus = DS_STOPPED; + ClearAIP(); + StatusAfterSeek = DS_STOPPED; + + Forward = false; + Backward = false; + Muted = false; + + PlayTrackMatch = 0; + + PSRCounter = 0; + + CurSector = 0; + + ClearAIP(); + + SeekTarget = 0; + + CommandLoc = 0; + CommandLoc_Dirty = true; + + DiscChanged = true; +} + +void PS_CDC::Power(void) +{ + SPU->Power(); + + SoftReset(); + + DiscStartupDelay = 0; + + SPUCounter = SPU->UpdateFromCDC(0); + lastts = 0; +} + +int PS_CDC::StateAction(StateMem *sm, int load, int data_only) +{ + assert(AudioBuffer_Count == 4); + + SFORMAT StateRegs[] = + { + SFVAR(DiscChanged), + SFVAR(DiscStartupDelay), + +#define SFAB(n) SFARRAY16N(&AudioBuffer[n].Samples[0][0], sizeof(AudioBuffer[n].Samples) / sizeof(AudioBuffer[n].Samples[0][0]), #n "Samples"), \ + SFVARN(AudioBuffer[n].Size, #n "Size"), \ + SFVARN(AudioBuffer[n].Freq, #n "Freq") + + SFAB(0), + SFAB(1), + SFAB(2), + SFAB(3), + + SFVAR(AudioBuffer_ReadPos), + SFVAR(AudioBuffer_WritePos), + SFVAR(AudioBuffer_UsedCount), + SFVAR(AudioBuffer_InPrebuffer), + + SFARRAY(&Pending_DecodeVolume[0][0], 2 * 2), + SFARRAY(&DecodeVolume[0][0], 2 * 2), + + SFVAR(RegSelector), + SFARRAY(ArgsBuf, 16), + SFVAR(ArgsIn), + + SFARRAY(ResultsBuffer, 16), + SFVAR(ResultsIn), + SFVAR(ResultsWP), + SFVAR(ResultsRP), + +// +// +// + SFARRAY(&DMABuffer.data[0], DMABuffer.data.size()), + SFVAR(DMABuffer.read_pos), + SFVAR(DMABuffer.write_pos), + SFVAR(DMABuffer.in_count), +// +// +// + + SFARRAY(SB, sizeof(SB) / sizeof(SB[0])), + SFVAR(SB_In), + SFARRAY(SubQBuf, sizeof(SubQBuf) / sizeof(SubQBuf[0])), + SFARRAY(SubQBuf_Safe, sizeof(SubQBuf_Safe) / sizeof(SubQBuf_Safe[0])), + + SFVAR(SubQChecksumOK), + SFARRAY(HeaderBuf, sizeof(HeaderBuf) / sizeof(HeaderBuf[0])), + + SFVAR(IRQBuffer), + SFVAR(IRQOutTestMask), + SFVAR(CDCReadyReceiveCounter), + + + + SFVAR(FilterFile), + SFVAR(FilterChan), + + + SFVAR(PendingCommand), + SFVAR(PendingCommandPhase), + SFVAR(PendingCommandCounter), + + SFVAR(SPUCounter), + + SFVAR(Mode), + SFVAR(DriveStatus), + SFVAR(StatusAfterSeek), + SFVAR(Forward), + SFVAR(Backward), + SFVAR(Muted), + + SFVAR(PlayTrackMatch), + + SFVAR(PSRCounter), + + SFVAR(CurSector), + + SFVAR(AsyncIRQPending), + SFARRAY(AsyncResultsPending, sizeof(AsyncResultsPending) / sizeof(AsyncResultsPending[0])), + SFVAR(AsyncResultsPendingCount), + + + SFVAR(SeekTarget), + + SFVAR(lastts), + +#if 0 + CDUtility::TOC toc; + bool IsPSXDisc; + uint8 DiscID[4]; +#endif + SFVAR(CommandLoc), + SFVAR(CommandLoc_Dirty), + SFARRAY16(&xa_previous[0][0], sizeof(xa_previous) / sizeof(xa_previous[0][0])), + + SFVAR(xa_cur_set), + SFVAR(xa_cur_file), + SFVAR(xa_cur_chan), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "CDC"); + + if(load) + { + + } + return(ret); +} + +void PS_CDC::ResetTS(void) +{ + lastts = 0; +} + +void PS_CDC::RecalcIRQ(void) +{ + IRQ_Assert(IRQ_CD, (bool)(IRQBuffer & (IRQOutTestMask & 0x1F))); +} + +void PS_CDC::WriteIRQ(uint8 V) +{ + assert(CDCReadyReceiveCounter <= 0); + assert(!IRQBuffer); + + CDCReadyReceiveCounter = 1024; + + IRQBuffer = V; + RecalcIRQ(); +} + +void PS_CDC::BeginResults(void) +{ + //if(ResultsIn) + // { + // printf("Cleared %d results. IRQBuffer=0x%02x\n", ResultsIn, IRQBuffer); + //} + + // TODO: test semantics on real thing. + ResultsIn = 0; + ResultsWP = 0; + ResultsRP = 0; +} + +void PS_CDC::WriteResult(uint8 V) +{ + ResultsBuffer[ResultsWP] = V; + ResultsWP = (ResultsWP + 1) & 0xF; + ResultsIn = (ResultsIn + 1) & 0x1F; + + if(!ResultsIn) + PSX_WARNING("[CDC] Results buffer overflow!"); +} + +uint8 PS_CDC::ReadResult(void) +{ + uint8 ret = ResultsBuffer[ResultsRP]; + + ResultsRP = (ResultsRP + 1) & 0xF; + ResultsIn = (ResultsIn - 1) & 0x1F; + + return ret; +} + +uint8 PS_CDC::MakeStatus(bool cmd_error) +{ + uint8 ret = 0; + + // Are these bit positions right? + + if(DriveStatus == DS_PLAYING) + ret |= 0x80; + + if(DriveStatus == DS_SEEKING || DriveStatus == DS_SEEKING_LOGICAL) + ret |= 0x40; + + if(DriveStatus == DS_READING) + ret |= 0x20; + + // TODO: shell open and seek error + if(!Cur_CDIF || DiscChanged) + ret |= 0x10; + + if(DriveStatus != DS_STOPPED) + ret |= 0x02; + + if(cmd_error) + ret |= 0x01; + + DiscChanged = false; + + return(ret); +} + +bool PS_CDC::DecodeSubQ(uint8 *subpw) +{ + uint8 tmp_q[0xC]; + + memset(tmp_q, 0, 0xC); + + for(int i = 0; i < 96; i++) + tmp_q[i >> 3] |= ((subpw[i] & 0x40) >> 6) << (7 - (i & 7)); + + if((tmp_q[0] & 0xF) == 1) + { + memcpy(SubQBuf, tmp_q, 0xC); + SubQChecksumOK = subq_check_checksum(tmp_q); + + if(SubQChecksumOK) + { + memcpy(SubQBuf_Safe, tmp_q, 0xC); + return(true); + } + } + + return(false); +} + +struct XA_Subheader +{ + uint8 file; + uint8 channel; + uint8 submode; + uint8 coding; + + uint8 file_dup; + uint8 channel_dup; + uint8 submode_dup; + uint8 coding_dup; + +}; // __attribute__((__packed__)); //zero 07-feb-2012 + +struct XA_SoundGroup +{ + uint8 params[16]; + uint8 samples[112]; +}; // __attribute__((__packed__)); //zero 07-feb-2012 + +#define XA_SUBMODE_EOF 0x80 +#define XA_SUBMODE_REALTIME 0x40 +#define XA_SUBMODE_FORM 0x20 +#define XA_SUBMODE_TRIGGER 0x10 +#define XA_SUBMODE_DATA 0x08 +#define XA_SUBMODE_AUDIO 0x04 +#define XA_SUBMODE_VIDEO 0x02 +#define XA_SUBMODE_EOR 0x01 + +#define XA_CODING_EMPHASIS 0x40 + +//#define XA_CODING_BPS_MASK 0x30 +//#define XA_CODING_BPS_4BIT 0x00 +//#define XA_CODING_BPS_8BIT 0x10 +//#define XA_CODING_SR_MASK 0x0C +//#define XA_CODING_SR_378 0x00 +//#define XA_CODING_SR_ + +#define XA_CODING_8BIT 0x10 +#define XA_CODING_189 0x04 +#define XA_CODING_STEREO 0x01 + +// Special regression prevention test cases: +// Um Jammer Lammy (start doing poorly) +// Yarudora Series Vol.1 - Double Cast (non-FMV speech) + +bool PS_CDC::XA_Test(const uint8 *sdata) +{ + const XA_Subheader *sh = (const XA_Subheader *)&sdata[12 + 4]; + + if(!(Mode & MODE_STRSND)) + return false; + + if(!(sh->submode & XA_SUBMODE_AUDIO)) + return false; + + //printf("Test File: 0x%02x 0x%02x - Channel: 0x%02x 0x%02x - Submode: 0x%02x 0x%02x - Coding: 0x%02x 0x%02x - \n", sh->file, sh->file_dup, sh->channel, sh->channel_dup, sh->submode, sh->submode_dup, sh->coding, sh->coding_dup); + + if((Mode & MODE_SF) && (sh->file != FilterFile || sh->channel != FilterChan)) + return false; + + if(!xa_cur_set || (Mode & MODE_SF)) + { + xa_cur_set = true; + xa_cur_file = sh->file; + xa_cur_chan = sh->channel; + } + else if(sh->file != xa_cur_file || sh->channel != xa_cur_chan) + return false; + + if(sh->submode & XA_SUBMODE_EOF) + { + //puts("YAY"); + xa_cur_set = false; + xa_cur_file = 0; + xa_cur_chan = 0; + } + + return true; +} + +void PS_CDC::ClearAudioBuffers(void) +{ + memset(AudioBuffer, 0, sizeof(AudioBuffer)); + memset(xa_previous, 0, sizeof(xa_previous)); + + xa_cur_set = false; + xa_cur_file = 0; + xa_cur_chan = 0; + + AudioBuffer_ReadPos = 0; + AudioBuffer_WritePos = 0; + AudioBuffer_UsedCount = 0; + + AudioBuffer_InPrebuffer = true; +} + +void PS_CDC::XA_ProcessSector(const uint8 *sdata, CD_Audio_Buffer *ab) +{ + const XA_Subheader *sh = (const XA_Subheader *)&sdata[12 + 4]; + const unsigned unit_index_shift = (sh->coding & XA_CODING_8BIT) ? 0 : 1; + + //printf("File: 0x%02x 0x%02x - Channel: 0x%02x 0x%02x - Submode: 0x%02x 0x%02x - Coding: 0x%02x 0x%02x - \n", sh->file, sh->file_dup, sh->channel, sh->channel_dup, sh->submode, sh->submode_dup, sh->coding, sh->coding_dup); + + ab->Size = 18 * (4 << unit_index_shift) * 28; + + if(sh->coding & XA_CODING_STEREO) + ab->Size >>= 1; + + ab->Freq = (sh->coding & XA_CODING_189) ? 3 : 6; + + //fprintf(stderr, "Coding: %02x %02x\n", sh->coding, sh->coding_dup); + + for(unsigned group = 0; group < 18; group++) + { + const XA_SoundGroup *sg = (const XA_SoundGroup *)&sdata[12 + 4 + 8 + group * 128]; + + for(unsigned unit = 0; unit < (4U << unit_index_shift); unit++) + { + const uint8 param = sg->params[(unit & 3) | ((unit & 4) << 1)]; + const uint8 param_copy = sg->params[4 | (unit & 3) | ((unit & 4) << 1)]; + uint8 ibuffer[28]; + int16 obuffer[2 + 28]; + + if(param != param_copy) + printf("%d %02x %02x\n", unit, param, param_copy); + + for(unsigned i = 0; i < 28; i++) + { + uint8 tmp = sg->samples[i * 4 + (unit >> unit_index_shift)]; + + if(unit_index_shift) + { + tmp <<= (unit & 1) ? 0 : 4; + tmp &= 0xf0; + } + + ibuffer[i] = tmp; + } + + const bool ocn = (bool)(unit & 1) && (sh->coding & XA_CODING_STEREO); + + obuffer[0] = xa_previous[ocn][0]; + obuffer[1] = xa_previous[ocn][1]; + + PS_SPU::DecodeADPCM(ibuffer, &obuffer[2], param & 0x0F, param >> 4); + + xa_previous[ocn][0] = obuffer[28]; + xa_previous[ocn][1] = obuffer[29]; + + if(param != param_copy) + memset(obuffer, 0, sizeof(obuffer)); + + if(sh->coding & XA_CODING_STEREO) + { + for(unsigned s = 0; s < 28; s++) + { + ab->Samples[ocn][group * (2 << unit_index_shift) * 28 + (unit >> 1) * 28 + s] = obuffer[2 + s]; + } + } + else + { + for(unsigned s = 0; s < 28; s++) + { + ab->Samples[0][group * (4 << unit_index_shift) * 28 + unit * 28 + s] = obuffer[2 + s]; + ab->Samples[1][group * (4 << unit_index_shift) * 28 + unit * 28 + s] = obuffer[2 + s]; + } + } + } + } +} + +void PS_CDC::ClearAIP(void) +{ + AsyncResultsPendingCount = 0; + AsyncIRQPending = 0; +} + +void PS_CDC::CheckAIP(void) +{ + if(AsyncIRQPending && CDCReadyReceiveCounter <= 0) + { + BeginResults(); + + for(unsigned i = 0; i < AsyncResultsPendingCount; i++) + WriteResult(AsyncResultsPending[i]); + + WriteIRQ(AsyncIRQPending); + + ClearAIP(); + } +} + +void PS_CDC::SetAIP(unsigned irq, unsigned result_count, uint8 *r) +{ + if(AsyncIRQPending) + { + PSX_WARNING("***WARNING*** Previous notification skipped: CurSector=%d, old_notification=0x%02x", CurSector, AsyncIRQPending); + } + ClearAIP(); + + AsyncResultsPendingCount = result_count; + + for(unsigned i = 0; i < result_count; i++) + AsyncResultsPending[i] = r[i]; + + AsyncIRQPending = irq; + + CheckAIP(); +} + +void PS_CDC::SetAIP(unsigned irq, uint8 result0) +{ + uint8 tr[1] = { result0 }; + SetAIP(irq, 1, tr); +} + +void PS_CDC::SetAIP(unsigned irq, uint8 result0, uint8 result1) +{ + uint8 tr[2] = { result0, result1 }; + SetAIP(irq, 2, tr); +} + + +pscpu_timestamp_t PS_CDC::Update(const pscpu_timestamp_t timestamp) +{ + int32 clocks = timestamp - lastts; + + while(clocks > 0) + { + int32 chunk_clocks = clocks; + + if(PSRCounter > 0 && chunk_clocks > PSRCounter) + chunk_clocks = PSRCounter; + + if(PendingCommandCounter > 0 && chunk_clocks > PendingCommandCounter) + chunk_clocks = PendingCommandCounter; + + if(chunk_clocks > SPUCounter) + chunk_clocks = SPUCounter; + + if(DiscStartupDelay > 0) + { + if(chunk_clocks > DiscStartupDelay) + chunk_clocks = DiscStartupDelay; + + DiscStartupDelay -= chunk_clocks; + + if(DiscStartupDelay <= 0) + { + DriveStatus = DS_PAUSED; // or is it supposed to be DS_STANDBY? + } + } + + //MDFN_DispMessage("%02x %d -- %d %d -- %02x", IRQBuffer, CDCReadyReceiveCounter, PSRCounter, PendingCommandCounter, PendingCommand); + + if(!IRQBuffer) + { + if(CDCReadyReceiveCounter > 0 && chunk_clocks > CDCReadyReceiveCounter) + chunk_clocks = CDCReadyReceiveCounter; + + if(CDCReadyReceiveCounter > 0) + CDCReadyReceiveCounter -= chunk_clocks; + } + + CheckAIP(); + + if(PSRCounter > 0) + { + uint8 buf[2352 + 96]; + + PSRCounter -= chunk_clocks; + + if(PSRCounter <= 0) + { + if(DriveStatus == DS_RESETTING) + { + SetAIP(CDCIRQ_COMPLETE, MakeStatus()); + + Muted = false; // Does it get reset here? + ClearAudioBuffers(); + + SB_In = 0; + + Mode = 0; + CurSector = 0; + CommandLoc = 0; + + DriveStatus = DS_PAUSED; // or DS_STANDBY? + ClearAIP(); + } + else if(DriveStatus == DS_SEEKING) + { + CurSector = SeekTarget; + Cur_CDIF->ReadRawSector(buf, CurSector); + DecodeSubQ(buf + 2352); + + DriveStatus = StatusAfterSeek; + + if(DriveStatus != DS_PAUSED && DriveStatus != DS_STANDBY) + { + PSRCounter = 33868800 / (75 * ((Mode & MODE_SPEED) ? 2 : 1)); + } + } + else if(DriveStatus == DS_SEEKING_LOGICAL) + { + CurSector = SeekTarget; + Cur_CDIF->ReadRawSector(buf, CurSector); + DecodeSubQ(buf + 2352); + memcpy(HeaderBuf, buf + 12, 12); + + DriveStatus = StatusAfterSeek; + + if(DriveStatus != DS_PAUSED && DriveStatus != DS_STANDBY) + { + PSRCounter = 33868800 / (75 * ((Mode & MODE_SPEED) ? 2 : 1)); + } + } + else if(DriveStatus == DS_READING) + { + if(CurSector >= (int32)toc.tracks[100].lba) + { + PSX_WARNING("[CDC] Beyond end!"); + DriveStatus = DS_STOPPED; + + SetAIP(CDCIRQ_DISC_ERROR, MakeStatus() | 0x04, 0x04); + } + else if((Mode & MODE_STRSND) && AudioBuffer_UsedCount == AudioBuffer_Count) + { + PSRCounter += 33868800 / (75 * ((Mode & MODE_SPEED) ? 2 : 1)) / 4; + } + else + { + //PSX_WARNING("Read sector: %d", CurSector); + + Cur_CDIF->ReadRawSector(buf, CurSector); // FIXME: error out on error. + DecodeSubQ(buf + 2352); + + memcpy(HeaderBuf, buf + 12, 12); + HeaderBufValid = true; + + if((Mode & MODE_STRSND) && (buf[12 + 3] == 0x2) && (buf[12 + 6] & 0x20) && (buf[12 + 6] & 0x04)) + { + if(XA_Test(buf)) + { + if(AudioBuffer_ReadPos & 0xFFF) + printf("readpos=%04x(rabl=%04x) writepos=%04x\n", AudioBuffer_ReadPos, AudioBuffer[AudioBuffer_ReadPos >> 12].Size, AudioBuffer_WritePos); + + //if(AudioBuffer_UsedCount == 0) + // AudioBuffer_InPrebuffer = true; + + XA_ProcessSector(buf, &AudioBuffer[AudioBuffer_WritePos >> 12]); + AudioBuffer_UsedCount++; + + if(AudioBuffer_UsedCount == AudioBuffer_PreBufferCount) + AudioBuffer_InPrebuffer = false; + + AudioBuffer_WritePos = (AudioBuffer_WritePos & 0xFFF) | ((((AudioBuffer_WritePos >> 12) + 1) % AudioBuffer_Count) << 12); + } + } + else + { + // maybe if(!(Mode & 0x30)) too? + if(!(buf[12 + 6] & 0x20)) + { + if(!edc_lec_check_correct(buf, true)) + { + MDFN_DispMessage("Bad sector? - %d", CurSector); + } + } + + if(!(Mode & 0x30) && (buf[12 + 6] & 0x20)) + PSX_WARNING("BORK: %d", CurSector); + + { + int32 offs = (Mode & 0x20) ? 0 : 12; + int32 size = (Mode & 0x20) ? 2340 : 2048; + + if(Mode & 0x10) + { + offs = 12; + size = 2328; + } + + memcpy(SB, buf + 12 + offs, size); + SB_In = size; + } + + SetAIP(CDCIRQ_DATA_READY, MakeStatus()); + } + + PSRCounter += 33868800 / (75 * ((Mode & MODE_SPEED) ? 2 : 1)); + CurSector++; + } + } + else if(DriveStatus == DS_PLAYING) + { + if(CurSector >= (int32)toc.tracks[100].lba) + { + HeaderBufValid = false; + DriveStatus = DS_STOPPED; + SetAIP(CDCIRQ_DISC_ERROR, MakeStatus() | 0x04, 0x04); // TODO: Verify + } + else + { + if(AudioBuffer_UsedCount < AudioBuffer_Count) + { + Cur_CDIF->ReadRawSector(buf, CurSector); // FIXME: error out on error. + DecodeSubQ(buf + 2352); + + // Note: Some game(s) start playing in the pregap of a track(so don't replace this with a simple subq index == 0 check for autopause). + if(PlayTrackMatch == -1 && SubQChecksumOK) + PlayTrackMatch = SubQBuf_Safe[0x1]; + + if(1) //if(Mode & MODE_CDDA) MODE_CDDA doesn't seem to be required for CD-DA playback, so then what is it for? + { + CD_Audio_Buffer *ab = &AudioBuffer[AudioBuffer_WritePos >> 12]; + + ab->Freq = 7 * ((Mode & MODE_SPEED) ? 2 : 1); + ab->Size = 588; + + if(SubQBuf_Safe[0] & 0x40) + { + for(int i = 0; i < 588; i++) + { + ab->Samples[0][i] = 0; + ab->Samples[1][i] = 0; + } + } + else + { + for(int i = 0; i < 588; i++) + { + ab->Samples[0][i] = (int16)MDFN_de16lsb(&buf[i * sizeof(int16) * 2 + 0]); + ab->Samples[1][i] = (int16)MDFN_de16lsb(&buf[i * sizeof(int16) * 2 + 2]); + } + } + + //if(AudioBuffer_UsedCount == 0) + // AudioBuffer_InPrebuffer = true; + + AudioBuffer_UsedCount++; + + if(AudioBuffer_UsedCount == AudioBuffer_PreBufferCount) + AudioBuffer_InPrebuffer = false; + + AudioBuffer_WritePos = (AudioBuffer_WritePos & 0xFFF) | ((((AudioBuffer_WritePos >> 12) + 1) % AudioBuffer_Count) << 12); + } + + PSRCounter += 33868800 / (75 * ((Mode & MODE_SPEED) ? 2 : 1)); + + if((Mode & MODE_AUTOPAUSE) && PlayTrackMatch != -1 && SubQBuf_Safe[0x1] != PlayTrackMatch) + { + // Status needs to be taken before we're paused(IE it should still report playing). + SetAIP(CDCIRQ_DATA_END, MakeStatus()); + + DriveStatus = DS_PAUSED; + PSRCounter = 0; + } + else if((Mode & MODE_REPORT) && (!(SubQBuf_Safe[0x9] & 0xF) || Forward || Backward) && SubQChecksumOK) // Not sure about accurate notification behavior for corrupt SubQ data + { + uint8 tr[8]; + + tr[0] = MakeStatus(); + tr[1] = SubQBuf_Safe[0x1]; // Track + tr[2] = SubQBuf_Safe[0x2]; // Index + + if(SubQBuf_Safe[0x9] & 0x10) + { + tr[3] = SubQBuf_Safe[0x3]; // R M + tr[4] = SubQBuf_Safe[0x4] | 0x80; // R S + tr[5] = SubQBuf_Safe[0x5]; // R F + } + else + { + tr[3] = SubQBuf_Safe[0x7]; // A M + tr[4] = SubQBuf_Safe[0x8]; // A S + tr[5] = SubQBuf_Safe[0x9]; // A F + } + + tr[6] = 0; // ?? + tr[7] = 0; // ?? + + SetAIP(CDCIRQ_DATA_READY, 8, tr); + } + + // FIXME: What's the real fast-forward and backward speed? + if(Forward) + CurSector += 12; + else if(Backward) + { + CurSector -= 12; + + if(CurSector < 0) // FIXME: How does a real PS handle this condition? + CurSector = 0; + } + else + CurSector++; + } + else + PSX_WARNING("[CDC] BUG CDDA buffer full"); + + } + } // end if playing + } + } + + if(PendingCommandCounter > 0) + { + PendingCommandCounter -= chunk_clocks; + + if(PendingCommandCounter <= 0 && CDCReadyReceiveCounter > 0) + { + PendingCommandCounter = CDCReadyReceiveCounter; //256; + } + //else if(PendingCommandCounter <= 0 && PSRCounter > 0 && PSRCounter < 2000) + //{ + // PendingCommandCounter = PSRCounter + 1; + //} + else if(PendingCommandCounter <= 0) + { + int32 next_time = 0; + + BeginResults(); + + if(PendingCommandPhase) + { + const CDC_CTEntry *command = &Commands[PendingCommand]; + + next_time = (this->*(command->func2))(); + } + else if(PendingCommand >= 0x20 || !Commands[PendingCommand].func) + { + PSX_WARNING("[CDC] Unknown command: 0x%02x", PendingCommand); + + WriteResult(MakeStatus(true)); + WriteResult(ERRCODE_BAD_COMMAND); + WriteIRQ(CDCIRQ_DISC_ERROR); + + ArgsIn = 0; + } + else if(ArgsIn < Commands[PendingCommand].args_min || ArgsIn > Commands[PendingCommand].args_max) + { + PSX_WARNING("[CDC] Bad number(%d) of args(first check) for command 0x%02x", ArgsIn, PendingCommand); + + WriteResult(MakeStatus(true)); + WriteResult(ERRCODE_BAD_NUMARGS); + WriteIRQ(CDCIRQ_DISC_ERROR); + + ArgsIn = 0; + } + else + { + const CDC_CTEntry *command = &Commands[PendingCommand]; + //PSX_WARNING("[CDC] Command: %s --- %d", command->name, Results.CanRead()); + +#if 1 + printf("[CDC] Command: %s --- ", command->name); + for(unsigned int i = 0; i < ArgsIn; i++) + printf(" 0x%02x", ArgsBuf[i]); + printf("\n"); +#endif + next_time = (this->*(command->func))(ArgsIn, ArgsBuf); + PendingCommandPhase = 1; + ArgsIn = 0; + } + + if(!next_time) + PendingCommandCounter = 0; + else + PendingCommandCounter += next_time; + } + } + + SPUCounter = SPU->UpdateFromCDC(chunk_clocks); + + clocks -= chunk_clocks; + } // end while(clocks > 0) + + lastts = timestamp; + + return(timestamp + CalcNextEvent()); +} + +void PS_CDC::Write(const pscpu_timestamp_t timestamp, uint32 A, uint8 V) +{ + A &= 0x3; + + //printf("Write: %08x %02x\n", A, V); + + if(A == 0x00) + { + RegSelector = V & 0x3; + } + else + { + const unsigned reg_index = ((RegSelector & 0x3) * 3) + (A - 1); + + Update(timestamp); + //PSX_WARNING("[CDC] Write to register 0x%02x: 0x%02x @ %d --- 0x%02x\n", reg_index, V, timestamp, DMABuffer.CanRead()); + + switch(reg_index) + { + default: + PSX_WARNING("[CDC] Unknown write to register 0x%02x: 0x%02x\n", reg_index, V); + break; + + case 0x00: + if(PendingCommandCounter > 0) + { + PSX_WARNING("[CDC] WARNING: Interrupting command 0x%02x, phase=%d, timeleft=%d with command=0x%02x", PendingCommand, PendingCommandPhase, + PendingCommandCounter, V); + } + + if(IRQBuffer) + { + PSX_WARNING("[CDC] Attempting to start command(0x%02x) while IRQBuffer is not clear.", V); + } + + if(ResultsIn > 0) + { + PSX_WARNING("[CDC] Attempting to start command(0x%02x) while command results(count=%d) still in buffer.", V, ResultsIn); + } + + PendingCommandCounter = 8192; //1024; //128; //256; //16; //1024; + PendingCommand = V; + PendingCommandPhase = 0; + break; + + case 0x01: + ArgsBuf[ArgsIn & 0xF] = V; + ArgsIn = (ArgsIn + 1) & 0x1F; + + if(!(ArgsIn & 0x0F)) + { + PSX_WARNING("[CDC] Argument buffer overflow"); + } + break; + + case 0x02: + if(V & 0x80) + { + if(!DMABuffer.CanRead()) + { + if(!SB_In) + { + PSX_WARNING("[CDC] Data read begin when no data to read!"); + + DMABuffer.Write(SB, 2340); + + while(DMABuffer.CanWrite()) + DMABuffer.WriteByte(0x00); + } + else + { + DMABuffer.Write(SB, SB_In); + SB_In = 0; + } + } + else + { + //PSX_WARNING("[CDC] Attempt to start data transfer via 0x80->1803 when %d bytes still in buffer", DMABuffer.CanRead()); + } + } + else if(V & 0x40) // Something CD-DA related(along with & 0x20 ???)? + { + for(unsigned i = 0; i < 4 && DMABuffer.CanRead(); i++) + DMABuffer.ReadByte(); + } + else + { + DMABuffer.Flush(); + } + + if(V & 0x20) + { + PSX_WARNING("[CDC] Mystery IRQ trigger bit set."); + IRQBuffer |= 0x10; + } + break; + + case 0x04: + IRQOutTestMask = V; + RecalcIRQ(); + break; + + case 0x05: + IRQBuffer &= ~V; + RecalcIRQ(); + + if(V & 0x80) // Forced CD hardware reset of some kind(interface, controller, and drive?) Seems to take a while(relatively speaking) to complete. + { + PSX_WARNING("[CDC] Soft Reset"); + SoftReset(); + } + + if(V & 0x40) // Does it clear more than arguments buffer? Doesn't appear to clear results buffer. + { + ArgsIn = 0; + } + break; + + case 0x07: + Pending_DecodeVolume[0][0] = V; + break; + + case 0x08: + Pending_DecodeVolume[0][1] = V; + break; + + case 0x09: + Pending_DecodeVolume[1][1] = V; + break; + + case 0x0A: + Pending_DecodeVolume[1][0] = V; + break; + + case 0x0B: + if(V & 0x20) + { + memcpy(DecodeVolume, Pending_DecodeVolume, sizeof(DecodeVolume)); + + for(int i = 0; i < 2; i++) + { + for(int o = 0; o < 2; o++) + { + //fprintf(stderr, "Input Channel %d, Output Channel %d -- Volume=%d\n", i, o, DecodeVolume[i][o]); + } + } + } + break; + } + PSX_SetEventNT(PSX_EVENT_CDC, timestamp + CalcNextEvent()); + } +} + +uint8 PS_CDC::Read(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint8 ret = 0; + + A &= 0x03; + + //printf("Read %08x\n", A); + + if(A == 0x00) + { + ret = RegSelector & 0x3; + + ret |= 0x18; // Unknown purpose + + if(ResultsIn) + ret |= 0x20; + + if(DMABuffer.CanRead()) + ret |= 0x40; + + if(PendingCommandCounter > 0 && PendingCommandPhase == 0) + ret |= 0x80; + } + else + { + switch(A & 0x3) + { + case 0x01: + ret = ReadResult(); + break; + + case 0x02: + if(DMABuffer.CanRead()) + ret = DMABuffer.ReadByte(); + else + { + PSX_WARNING("[CDC] CD data transfer port read, but no data present!"); + } + break; + + case 0x03: + if(RegSelector & 0x1) + { + ret = 0xE0 | IRQBuffer; + } + else + { + ret = 0xFF; + } + break; + } + } + + return(ret); +} + + +bool PS_CDC::DMACanRead(void) +{ + return(DMABuffer.CanRead()); +} + +uint32 PS_CDC::DMARead(void) +{ + uint32 data = 0; + + for(int i = 0; i < 4; i++) + { + if(DMABuffer.CanRead()) + data |= DMABuffer.ReadByte() << (i * 8); + else + { + //assert(0); + } + } + + return(data); +} + +bool PS_CDC::CommandCheckDiscPresent(void) +{ + if(!Cur_CDIF || DiscStartupDelay > 0) + { + WriteResult(MakeStatus(true)); + WriteResult(ERRCODE_NOT_READY); + + WriteIRQ(CDCIRQ_DISC_ERROR); + + return(false); + } + + return(true); +} + +int32 PS_CDC::Command_Sync(const int arg_count, const uint8 *args) +{ + PSX_WARNING("[CDC] Unimplemented command: 0x%02x", PendingCommand); + return(0); +} + +int32 PS_CDC::Command_Nop(const int arg_count, const uint8 *args) +{ + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_Setloc(const int arg_count, const uint8 *args) +{ + uint8 m, s, f; + + m = BCD_to_U8(args[0] & 0x7F); + s = BCD_to_U8(args[1]); + f = BCD_to_U8(args[2]); + + CommandLoc = f + 75 * s + 75 * 60 * m - 150; + CommandLoc_Dirty = true; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::CalcSeekTime(int32 initial, int32 target, bool motor_on, bool paused) +{ + int32 ret = 0; + + if(!motor_on) + { + initial = 0; + ret += 33868800; + } + + ret += std::max((int64)abs(initial - target) * 33868800 * 1000 / (72 * 60 * 75) / 1000, 10000); + + if(abs(initial - target) >= 2250) + ret += (int64)33868800 * 300 / 1000; + else if(paused) + { + // The delay to restart from a Pause state is...very....WEIRD. The time it takes is related to the amount of time that has passed since the pause, and + // where on the disc the laser head is, with generally more time passed = longer to resume, except that there's a window of time where it takes a + // ridiculous amount of time when not much time has passed. + // + // What we have here will be EXTREMELY simplified. + + // + // + + //if(time_passed >= 67737) + //{ + //} + //else + { + // Take twice as long for 1x mode. + ret += 1247952 * ((Mode & MODE_SPEED) ? 1 : 2); + } + } + + printf("%d\n", ret); + + return(ret); +} + +#if 0 +void PS_CDC::BeginSeek(uint32 target, int after_seek) +{ + SeekTarget = target; + StatusAfterSeek = after_seek; + + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); +} +#endif + +// Remove this function when we have better seek emulation; it's here because the Rockman complete works games(at least 2 and 4) apparently have finicky fubared CD +// access code. +void PS_CDC::PreSeekHack(uint32 target) +{ + uint8 buf[2352 + 96]; + int max_try = 32; + + CurSector = target; + + if(target < toc.tracks[100].lba) + { + do + { + Cur_CDIF->ReadRawSector(buf, target++); + } while(!DecodeSubQ(buf + 2352) && --max_try > 0 && target < toc.tracks[100].lba); + } +} + +int32 PS_CDC::Command_Play(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + ClearAIP(); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + Forward = Backward = false; + + if(arg_count && args[0]) + { + int track = BCD_to_U8(args[0]); + + if(track < toc.first_track) + { + PSX_WARNING("[CDC] Attempt to play track before first track."); + track = toc.first_track; + } + else if(track > toc.last_track) + { + PSX_WARNING("[CDC] Attempt to play track before first track."); + track = toc.last_track; + } + + ClearAudioBuffers(); + + PlayTrackMatch = track; + + printf("[CDC] Play track: %d\n", track); + SeekTarget = toc.tracks[track].lba; + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); + HeaderBufValid = false; + PreSeekHack(SeekTarget); + + DriveStatus = DS_SEEKING; + StatusAfterSeek = DS_PLAYING; + } + else + { + if(CommandLoc_Dirty || (DriveStatus != DS_PLAYING && DriveStatus != DS_PAUSED && DriveStatus != DS_STANDBY)) + { + ClearAudioBuffers(); + SeekTarget = CommandLoc; + PlayTrackMatch = -1; + + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); + HeaderBufValid = false; + PreSeekHack(SeekTarget); + + DriveStatus = DS_SEEKING; + StatusAfterSeek = DS_PLAYING; + } + else if(DriveStatus != DS_PLAYING) + { + ClearAudioBuffers(); + SeekTarget = CurSector; + PlayTrackMatch = -1; + + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); + HeaderBufValid = false; + PreSeekHack(SeekTarget); + + DriveStatus = DS_SEEKING; + StatusAfterSeek = DS_PLAYING; + } + } + + CommandLoc_Dirty = false; + return(0); +} + +int32 PS_CDC::Command_Forward(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + Backward = false; + Forward = true; + + return(0); +} + +int32 PS_CDC::Command_Backward(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + Backward = true; + Forward = false; + + return(0); +} + + +void PS_CDC::ReadBase(void) +{ + if(!CommandCheckDiscPresent()) + return; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + if(DriveStatus == DS_SEEKING_LOGICAL && SeekTarget == CommandLoc && StatusAfterSeek == DS_READING) + { + CommandLoc_Dirty = false; + return; + } + + if(CommandLoc_Dirty || DriveStatus != DS_READING) + { + CommandLoc_Dirty = false; + + + ClearAIP(); + ClearAudioBuffers(); + DMABuffer.Flush(); + SB_In = 0; + + // TODO: separate motor start from seek phase? + + SeekTarget = CommandLoc; + + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); + HeaderBufValid = false; + PreSeekHack(SeekTarget); + + DriveStatus = DS_SEEKING_LOGICAL; + StatusAfterSeek = DS_READING; + } +} + +int32 PS_CDC::Command_ReadN(const int arg_count, const uint8 *args) +{ + ReadBase(); + return 0; +} + +int32 PS_CDC::Command_ReadS(const int arg_count, const uint8 *args) +{ + ReadBase(); + return 0; +} + +int32 PS_CDC::Command_Stop(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + if(DriveStatus == DS_STOPPED) + { + return(5000); + } + else + { + ClearAudioBuffers(); + ClearAIP(); + DriveStatus = DS_STOPPED; + HeaderBufValid = false; + + return(33868); // FIXME, should be much higher. + } +} + +int32 PS_CDC::Command_Stop_Part2(void) +{ + PSRCounter = 0; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); +} + +int32 PS_CDC::Command_Standby(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + if(DriveStatus != DS_STOPPED) + { + WriteResult(MakeStatus(true)); + WriteResult(0x20); + WriteIRQ(CDCIRQ_DISC_ERROR); + return(0); + } + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + ClearAudioBuffers(); + ClearAIP(); + DriveStatus = DS_STANDBY; + + return((int64)33868800 * 100 / 1000); // No idea, FIXME. +} + +int32 PS_CDC::Command_Standby_Part2(void) +{ + PSRCounter = 0; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); +} + +int32 PS_CDC::Command_Pause(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + if(DriveStatus == DS_PAUSED || DriveStatus == DS_STOPPED) + { + return(5000); + } + else + { + // "Viewpoint" flips out and crashes if reading isn't stopped (almost?) immediately. + ClearAudioBuffers(); + ClearAIP(); + DriveStatus = DS_PAUSED; + + // An approximation. + return((1124584 + ((int64)CurSector * 42596 / (75 * 60))) * ((Mode & MODE_SPEED) ? 1 : 2)); + } +} + +int32 PS_CDC::Command_Pause_Part2(void) +{ + PSRCounter = 0; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); +} + +int32 PS_CDC::Command_Reset(const int arg_count, const uint8 *args) +{ + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + if(DriveStatus != DS_RESETTING) + { + HeaderBufValid = false; + DriveStatus = DS_RESETTING; + PSRCounter = 1136000; + } + + return(0); +} + +int32 PS_CDC::Command_Mute(const int arg_count, const uint8 *args) +{ + Muted = true; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_Demute(const int arg_count, const uint8 *args) +{ + Muted = false; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_Setfilter(const int arg_count, const uint8 *args) +{ + FilterFile = args[0]; + FilterChan = args[1]; + + //PSX_WARNING("[CDC] Setfilter: %02x %02x", args[0], args[1]); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_Setmode(const int arg_count, const uint8 *args) +{ + PSX_DBGINFO("[CDC] Set mode 0x%02x", args[0]); + Mode = args[0]; + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_Getparam(const int arg_count, const uint8 *args) +{ + WriteResult(MakeStatus()); + WriteResult(Mode); + WriteResult(0x00); + WriteResult(FilterFile); + WriteResult(FilterChan); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + + return(0); +} + +int32 PS_CDC::Command_GetlocL(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + if(!HeaderBufValid) + { + WriteResult(MakeStatus(true)); + WriteResult(0x80); + WriteIRQ(CDCIRQ_DISC_ERROR); + return(0); + } + + for(unsigned i = 0; i < 8; i++) + { + //printf("%d %d: %02x\n", DriveStatus, i, HeaderBuf[i]); + WriteResult(HeaderBuf[i]); + } + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_GetlocP(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(SubQBuf_Safe[0x1]); // Track + WriteResult(SubQBuf_Safe[0x2]); // Index + WriteResult(SubQBuf_Safe[0x3]); // R M + WriteResult(SubQBuf_Safe[0x4]); // R S + WriteResult(SubQBuf_Safe[0x5]); // R F + WriteResult(SubQBuf_Safe[0x7]); // A M + WriteResult(SubQBuf_Safe[0x8]); // A S + WriteResult(SubQBuf_Safe[0x9]); // A F + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_ReadT(const int arg_count, const uint8 *args) +{ + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(44100 * 768 / 1000); +} + +int32 PS_CDC::Command_ReadT_Part2(void) +{ + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); +} + +int32 PS_CDC::Command_GetTN(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteResult(U8_to_BCD(toc.first_track)); + WriteResult(U8_to_BCD(toc.last_track)); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_GetTD(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + int track; + uint8 m, s, f; + + if(!args[0] || args[0] == 0xAA) + track = 100; + else + { + track= BCD_to_U8(args[0]); + + if(track < toc.first_track || track > toc.last_track) // Error + { + WriteResult(MakeStatus(true)); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + return(0); + } + } + + LBA_to_AMSF(toc.tracks[track].lba, &m, &s, &f); + + WriteResult(MakeStatus()); + WriteResult(U8_to_BCD(m)); + WriteResult(U8_to_BCD(s)); + //WriteResult(U8_to_BCD(f)); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return(0); +} + +int32 PS_CDC::Command_SeekL(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + SeekTarget = CommandLoc; + + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); + HeaderBufValid = false; + PreSeekHack(SeekTarget); + DriveStatus = DS_SEEKING_LOGICAL; + StatusAfterSeek = DS_STANDBY; + ClearAIP(); + + return(PSRCounter); +} + +int32 PS_CDC::Command_SeekP(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + SeekTarget = CommandLoc; + + PSRCounter = CalcSeekTime(CurSector, SeekTarget, DriveStatus != DS_STOPPED, DriveStatus == DS_PAUSED); + HeaderBufValid = false; + PreSeekHack(SeekTarget); + DriveStatus = DS_SEEKING; + StatusAfterSeek = DS_STANDBY; + ClearAIP(); + + return(PSRCounter); +} + +int32 PS_CDC::Command_Seek_PartN(void) +{ + if(DriveStatus == DS_STANDBY) + { + BeginResults(); + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); + } + else + { + return(std::max(PSRCounter, 256)); + } +} + +int32 PS_CDC::Command_Test(const int arg_count, const uint8 *args) +{ + //PSX_WARNING("[CDC] Test command sub-operation: 0x%02x", args[0]); + + switch(args[0]) + { + default: + PSX_WARNING("[CDC] Unknown Test command sub-operation: 0x%02x", args[0]); + WriteResult(MakeStatus(true)); + WriteResult(0x10); + WriteIRQ(CDCIRQ_DISC_ERROR); + break; + + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + PSX_WARNING("[CDC] Unknown Test command sub-operation: 0x%02x", args[0]); + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + break; + +#if 0 + case 0x50: // *Need to retest this test command, it takes additional arguments??? Or in any case, it generates a different error code(0x20) than most other Test + // sub-commands that generate an error code(0x10). + break; + + // Same with 0x60, 0x71-0x76 + +#endif + + case 0x51: // *Need to retest this test command + PSX_WARNING("[CDC] Unknown Test command sub-operation: 0x%02x", args[0]); + WriteResult(0x01); + WriteResult(0x00); + WriteResult(0x00); + break; + + case 0x75: // *Need to retest this test command + PSX_WARNING("[CDC] Unknown Test command sub-operation: 0x%02x", args[0]); + WriteResult(0x00); + WriteResult(0xC0); + WriteResult(0x00); + WriteResult(0x00); + break; + + // + // SCEx counters not reset by command 0x0A. + // + + case 0x04: // Reset SCEx counters + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + break; + + case 0x05: // Read SCEx counters + WriteResult(0x00); // Number of TOC/leadin reads? (apparently increases by 1 or 2 per ReadTOC, even on non-PSX music CD) + WriteResult(0x00); // Number of SCEx strings received? (Stays at zero on music CD) + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + break; + + case 0x20: + { + WriteResult(0x97); + WriteResult(0x01); + WriteResult(0x10); + WriteResult(0xC2); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + } + break; + + case 0x21: // *Need to retest this test command. + { + WriteResult(0x01); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + } + break; + + case 0x22: + { + static const uint8 td[7] = { 0x66, 0x6f, 0x72, 0x20, 0x55, 0x2f, 0x43 }; + + for(unsigned i = 0; i < 7; i++) + WriteResult(td[i]); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + } + break; + + case 0x23: + case 0x24: + { + static const uint8 td[8] = { 0x43, 0x58, 0x44, 0x32, 0x35, 0x34, 0x35, 0x51 }; + + for(unsigned i = 0; i < 8; i++) + WriteResult(td[i]); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + } + break; + + case 0x25: + { + static const uint8 td[8] = { 0x43, 0x58, 0x44, 0x31, 0x38, 0x31, 0x35, 0x51 }; + + for(unsigned i = 0; i < 8; i++) + WriteResult(td[i]); + + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + } + break; + } + return(0); +} + +int32 PS_CDC::Command_ID(const int arg_count, const uint8 *args) +{ + if(!CommandCheckDiscPresent()) + return(0); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + HeaderBufValid = false; + PSRCounter = 0; + DriveStatus = DS_PAUSED; // or DS_STANDBY? + ClearAIP(); + + return(33868); +} + +int32 PS_CDC::Command_ID_Part2(void) +{ + if(IsPSXDisc) + { + WriteResult(MakeStatus()); + WriteResult(0x00); + WriteResult(0x20); + WriteResult(0x00); + } + else + { + WriteResult(MakeStatus() | 0x08); + WriteResult(0x90); + WriteResult(0x00); + WriteResult(0x00); + } + + if(IsPSXDisc) + { + WriteResult(DiscID[0]); + WriteResult(DiscID[1]); + WriteResult(DiscID[2]); + WriteResult(DiscID[3]); + } + else + { + WriteResult(0xff); + WriteResult(0); + WriteResult(0); + WriteResult(0); + } + + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); +} + +int32 PS_CDC::Command_Init(const int arg_count, const uint8 *args) +{ + return(0); +} + +int32 PS_CDC::Command_ReadTOC(const int arg_count, const uint8 *args) +{ + // Tested; ReadTOC doesn't error out if the tray is open, and it completes rather quickly in that case. + // + //if(!CommandCheckDiscPresent()) + // return(0); + + HeaderBufValid = false; + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + + return((int64)33868800 * 500 / 1000); +} + +int32 PS_CDC::Command_ReadTOC_Part2(void) +{ + DriveStatus = DS_PAUSED; // or DS_STANDBY? + ClearAIP(); + + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_COMPLETE); + + return(0); +} + +int32 PS_CDC::Command_0x1d(const int arg_count, const uint8 *args) +{ + WriteResult(MakeStatus()); + WriteIRQ(CDCIRQ_ACKNOWLEDGE); + return(0); +} + +PS_CDC::CDC_CTEntry PS_CDC::Commands[0x20] = +{ + { /* 0x00, */ 0, 0, "Sync", &PS_CDC::Command_Sync, NULL }, + { /* 0x01, */ 0, 0, "Nop", &PS_CDC::Command_Nop, NULL }, + { /* 0x02, */ 3, 3, "Setloc", &PS_CDC::Command_Setloc, NULL }, + { /* 0x03, */ 0, 1, "Play", &PS_CDC::Command_Play, NULL }, + { /* 0x04, */ 0, 0, "Forward", &PS_CDC::Command_Forward, NULL }, + { /* 0x05, */ 0, 0, "Backward", &PS_CDC::Command_Backward, NULL }, + { /* 0x06, */ 0, 0, "ReadN", &PS_CDC::Command_ReadN, NULL }, + { /* 0x07, */ 0, 0, "Standby", &PS_CDC::Command_Standby, &PS_CDC::Command_Standby_Part2 }, + { /* 0x08, */ 0, 0, "Stop", &PS_CDC::Command_Stop, &PS_CDC::Command_Stop_Part2 }, + { /* 0x09, */ 0, 0, "Pause", &PS_CDC::Command_Pause, &PS_CDC::Command_Pause_Part2 }, + { /* 0x0A, */ 0, 0, "Reset", &PS_CDC::Command_Reset, NULL }, + { /* 0x0B, */ 0, 0, "Mute", &PS_CDC::Command_Mute, NULL }, + { /* 0x0C, */ 0, 0, "Demute", &PS_CDC::Command_Demute, NULL }, + { /* 0x0D, */ 2, 2, "Setfilter", &PS_CDC::Command_Setfilter, NULL }, + { /* 0x0E, */ 1, 1, "Setmode", &PS_CDC::Command_Setmode, NULL }, + { /* 0x0F, */ 0, 0, "Getparam", &PS_CDC::Command_Getparam, NULL }, + { /* 0x10, */ 0, 0, "GetlocL", &PS_CDC::Command_GetlocL, NULL }, + { /* 0x11, */ 0, 0, "GetlocP", &PS_CDC::Command_GetlocP, NULL }, + { /* 0x12, */ 1, 1, "ReadT", &PS_CDC::Command_ReadT, &PS_CDC::Command_ReadT_Part2 }, + { /* 0x13, */ 0, 0, "GetTN", &PS_CDC::Command_GetTN, NULL }, + { /* 0x14, */ 1, 1, "GetTD", &PS_CDC::Command_GetTD, NULL }, + { /* 0x15, */ 0, 0, "SeekL", &PS_CDC::Command_SeekL, &PS_CDC::Command_Seek_PartN }, + { /* 0x16, */ 0, 0, "SeekP", &PS_CDC::Command_SeekP, &PS_CDC::Command_Seek_PartN }, + + { /* 0x17, */ 0, 0, NULL, NULL, NULL }, + { /* 0x18, */ 0, 0, NULL, NULL, NULL }, + + { /* 0x19, */ 1, 1/* ??? */, "Test", &PS_CDC::Command_Test, NULL }, + { /* 0x1A, */ 0, 0, "ID", &PS_CDC::Command_ID, &PS_CDC::Command_ID_Part2 }, + { /* 0x1B, */ 0, 0, "ReadS", &PS_CDC::Command_ReadS, NULL }, + { /* 0x1C, */ 0, 0, "Init", &PS_CDC::Command_Init, NULL }, + { /* 0x1D, */ 2, 2, "Unknown 0x1D", &PS_CDC::Command_0x1d, NULL }, + { /* 0x1E, */ 0, 0, "ReadTOC", &PS_CDC::Command_ReadTOC, &PS_CDC::Command_ReadTOC_Part2 }, + { /* 0x1F, */ 0, 0, NULL, NULL, NULL }, +}; + + +} diff --git a/libmednahawk/src/psx/cdc.h b/libmednahawk/src/psx/cdc.h new file mode 100644 index 0000000000..4bd3765e1f --- /dev/null +++ b/libmednahawk/src/psx/cdc.h @@ -0,0 +1,311 @@ +#ifndef __MDFN_PSX_CDC_H +#define __MDFN_PSX_CDC_H + +#include "../cdrom/cdromif.h" +#include "../cdrom/SimpleFIFO.h" +#include "../clamp.h" + +namespace MDFN_IEN_PSX +{ + +struct CD_Audio_Buffer +{ + int16 Samples[2][0x1000]; // [0][...] = l, [1][...] = r + int32 Size; + uint32 Freq; +}; + +class PS_CDC +{ + public: + + PS_CDC(); + ~PS_CDC(); + + void SetDisc(bool tray_open, CDIF *cdif, const char disc_id[4]); + + void Power(void); + int StateAction(StateMem *sm, int load, int data_only); + void ResetTS(void); + + int32 CalcNextEvent(void); // Returns in master cycles to next event. + + pscpu_timestamp_t Update(const pscpu_timestamp_t timestamp); + + void Write(const pscpu_timestamp_t timestamp, uint32 A, uint8 V); + uint8 Read(const pscpu_timestamp_t timestamp, uint32 A); + + bool DMACanRead(void); + uint32 DMARead(void); + + INLINE uint32 GetCDAudioFreq(void) + { + if(AudioBuffer_UsedCount && !AudioBuffer_InPrebuffer) + { + const unsigned wb = AudioBuffer_ReadPos >> 12; + return AudioBuffer[wb].Freq; + } + return 0; + } + + private: + inline void ApplyVolume(int32 samples[2]) + { + int32 left_source = samples[0]; //(int16)MDFN_de16lsb(&buf[i * sizeof(int16) * 2 + 0]); + int32 right_source = samples[1]; //(int16)MDFN_de16lsb(&buf[i * sizeof(int16) * 2 + 2]); + int32 left_out = ((left_source * DecodeVolume[0][0]) >> 7) + ((right_source * DecodeVolume[1][0]) >> 7); + int32 right_out = ((left_source * DecodeVolume[0][1]) >> 7) + ((right_source * DecodeVolume[1][1]) >> 7); + + clamp(&left_out, -32768, 32767); + clamp(&right_out, -32768, 32767); + + if(Muted) + { + left_out = right_out = 0; + } + + samples[0] = left_out; + samples[1] = right_out; + } + public: + + INLINE void GetCDAudio(int32 &l, int32 &r) + { + if(AudioBuffer_UsedCount && !AudioBuffer_InPrebuffer) + { + const unsigned wb = AudioBuffer_ReadPos >> 12; + int32 samples[2] = { AudioBuffer[wb].Samples[0][AudioBuffer_ReadPos & 0xFFF], AudioBuffer[wb].Samples[1][AudioBuffer_ReadPos & 0xFFF] }; + + ApplyVolume(samples); + + l = samples[0]; + r = samples[1]; + + AudioBuffer_ReadPos = ((AudioBuffer_ReadPos + 1) & 0xFFF) | (AudioBuffer_ReadPos & ~0xFFF); + + if((AudioBuffer_ReadPos & 0xFFF) == (AudioBuffer[wb].Size & 0xFFF)) + { + //printf("RP == size; usedcount(predec)= %d, PSRCounter=%d\n", AudioBuffer_UsedCount, PSRCounter); + AudioBuffer_ReadPos = ((((AudioBuffer_ReadPos >> 12) + 1) % AudioBuffer_Count) << 12); + AudioBuffer_UsedCount--; + } + } + } + + private: + + void SoftReset(void); + + CDIF *Cur_CDIF; + bool DiscChanged; + int32 DiscStartupDelay; + + + enum { AudioBuffer_PreBufferCount = 2 }; + enum { AudioBuffer_Count = 4 }; + + CD_Audio_Buffer AudioBuffer[AudioBuffer_Count]; + uint32 AudioBuffer_ReadPos; + uint32 AudioBuffer_WritePos; + uint32 AudioBuffer_UsedCount; + bool AudioBuffer_InPrebuffer; + + uint8 Pending_DecodeVolume[2][2], DecodeVolume[2][2]; // [data_source][output_port] + + void ClearAudioBuffers(void); + + uint8 RegSelector; + uint8 ArgsBuf[16]; + uint32 ArgsIn; // 5-bit(0 ... 31) + + uint8 ResultsBuffer[16]; + uint8 ResultsIn; // 5-bit(0 ... 31) + uint8 ResultsWP; // Write position, 4 bit(0 ... 15). + uint8 ResultsRP; // Read position, 4 bit(0 ... 15). + + SimpleFIFO DMABuffer; + uint8 SB[2340]; + uint32 SB_In; + + + uint8 SubQBuf[0xC]; + uint8 SubQBuf_Safe[0xC]; + bool SubQChecksumOK; + + bool HeaderBufValid; + uint8 HeaderBuf[12]; + + void RecalcIRQ(void); + enum + { + CDCIRQ_NONE = 0, + CDCIRQ_DATA_READY = 1, + CDCIRQ_COMPLETE = 2, + CDCIRQ_ACKNOWLEDGE = 3, + CDCIRQ_DATA_END = 4, + CDCIRQ_DISC_ERROR = 5 + }; + + // Names are just guessed for these based on what conditions cause them: + enum + { + ERRCODE_BAD_ARGVAL = 0x10, + ERRCODE_BAD_NUMARGS = 0x20, + ERRCODE_BAD_COMMAND = 0x40, + ERRCODE_NOT_READY = 0x80, // 0x80 (happens with getlocl when drive isn't reading, pause when tray is open, and MAYBE when trying to run an async + // command while another async command is currently in its asynch phase being executed[pause when in readtoc, todo test more]) + }; + + uint8 IRQBuffer; + uint8 IRQOutTestMask; + int32 CDCReadyReceiveCounter; // IRQBuffer being non-zero prevents new results and new IRQ from coming in and erasing the current results, + // but apparently at least one CONFOUNDED game is clearing the IRQ state BEFORE reading the results, so we need to have a delay + // between IRQBuffer being cleared to when we allow new results to come in. (The real thing should be like this too, + // but the mechanism is probably more nuanced and complex and ugly and I like anchovy pizza) + + void BeginResults(void); + void WriteIRQ(uint8); + void WriteResult(uint8); + uint8 ReadResult(void); + + uint8 FilterFile; + uint8 FilterChan; + + + uint8 PendingCommand; + bool PendingCommandPhase; + int32 PendingCommandCounter; + + int32 SPUCounter; + + enum { MODE_SPEED = 0x80 }; + enum { MODE_STRSND = 0x40 }; + enum { MODE_SIZE = 0x20 }; + enum { MODE_SIZE2 = 0x10 }; + enum { MODE_SF = 0x08 }; + enum { MODE_REPORT = 0x04 }; + enum { MODE_AUTOPAUSE = 0x02 }; + enum { MODE_CDDA = 0x01 }; + uint8 Mode; + + enum + { + DS_STANDBY = -2, + DS_PAUSED = -1, + DS_STOPPED = 0, + DS_SEEKING, + DS_SEEKING_LOGICAL, + DS_PLAY_SEEKING, + DS_PLAYING, + DS_READING, + DS_RESETTING + }; + int DriveStatus; + int StatusAfterSeek; + bool Forward; + bool Backward; + bool Muted; + + int32 PlayTrackMatch; + + int32 PSRCounter; + + int32 CurSector; + + unsigned AsyncIRQPending; + uint8 AsyncResultsPending[16]; + uint8 AsyncResultsPendingCount; + + int32 CalcSeekTime(int32 initial, int32 target, bool motor_on, bool paused); + + void ClearAIP(void); + void CheckAIP(void); + void SetAIP(unsigned irq, unsigned result_count, uint8 *r); + void SetAIP(unsigned irq, uint8 result0); + void SetAIP(unsigned irq, uint8 result0, uint8 result1); + + int32 SeekTarget; + + pscpu_timestamp_t lastts; + + CDUtility::TOC toc; + bool IsPSXDisc; + uint8 DiscID[4]; + + int32 CommandLoc; + bool CommandLoc_Dirty; + + uint8 MakeStatus(bool cmd_error = false); + bool DecodeSubQ(uint8 *subpw); + bool CommandCheckDiscPresent(void); + + bool XA_Test(const uint8 *sdata); + void XA_ProcessSector(const uint8 *sdata, CD_Audio_Buffer *ab); + int16 xa_previous[2][2]; + bool xa_cur_set; + uint8 xa_cur_file; + uint8 xa_cur_chan; + + struct CDC_CTEntry + { + uint8 args_min; + uint8 args_max; + const char *name; + int32 (PS_CDC::*func)(const int arg_count, const uint8 *args); + int32 (PS_CDC::*func2)(void); + }; + + void BeginSeek(uint32 target); + void PreSeekHack(uint32 target); + void ReadBase(void); + + static CDC_CTEntry Commands[0x20]; + + int32 Command_Sync(const int arg_count, const uint8 *args); + int32 Command_Nop(const int arg_count, const uint8 *args); + int32 Command_Setloc(const int arg_count, const uint8 *args); + int32 Command_Play(const int arg_count, const uint8 *args); + int32 Command_Forward(const int arg_count, const uint8 *args); + int32 Command_Backward(const int arg_count, const uint8 *args); + int32 Command_ReadN(const int arg_count, const uint8 *args); + int32 Command_Standby(const int arg_count, const uint8 *args); + int32 Command_Standby_Part2(void); + int32 Command_Stop(const int arg_count, const uint8 *args); + int32 Command_Stop_Part2(void); + int32 Command_Pause(const int arg_count, const uint8 *args); + int32 Command_Pause_Part2(void); + int32 Command_Reset(const int arg_count, const uint8 *args); + int32 Command_Mute(const int arg_count, const uint8 *args); + int32 Command_Demute(const int arg_count, const uint8 *args); + int32 Command_Setfilter(const int arg_count, const uint8 *args); + int32 Command_Setmode(const int arg_count, const uint8 *args); + int32 Command_Getparam(const int arg_count, const uint8 *args); + int32 Command_GetlocL(const int arg_count, const uint8 *args); + int32 Command_GetlocP(const int arg_count, const uint8 *args); + + int32 Command_ReadT(const int arg_count, const uint8 *args); + int32 Command_ReadT_Part2(void); + + int32 Command_GetTN(const int arg_count, const uint8 *args); + int32 Command_GetTD(const int arg_count, const uint8 *args); + int32 Command_SeekL(const int arg_count, const uint8 *args); + int32 Command_SeekP(const int arg_count, const uint8 *args); + int32 Command_Seek_PartN(void); + + int32 Command_Test(const int arg_count, const uint8 *args); + + int32 Command_ID(const int arg_count, const uint8 *args); + int32 Command_ID_Part2(void); + + int32 Command_ReadS(const int arg_count, const uint8 *args); + int32 Command_Init(const int arg_count, const uint8 *args); + + int32 Command_ReadTOC(const int arg_count, const uint8 *args); + int32 Command_ReadTOC_Part2(void); + + int32 Command_0x1d(const int arg_count, const uint8 *args); +}; + +} + +#endif diff --git a/libmednahawk/src/psx/cpu.cpp b/libmednahawk/src/psx/cpu.cpp new file mode 100644 index 0000000000..3f79d47b89 --- /dev/null +++ b/libmednahawk/src/psx/cpu.cpp @@ -0,0 +1,1994 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "cpu.h" +#include + +//#define DPRINT(...) +#define NOPRINT(...) +#define DPRINT(...) fprintf(__VA_ARGS__) +#define DEBUG(...) NOPRINT(stderr,__VA_ARGS__) +#define DEBUG_PRINT(...) NOPRINT(stderr,__VA_ARGS__) +#define DEBUG_LOAD(...) NOPRINT(stderr,__VA_ARGS__) +#define DEBUG_STORE(...) NOPRINT(stderr,__VA_ARGS__) +#define DEBUG_TRACE(...) DPRINT(stderr,__VA_ARGS__) + +bool dotrace = false; +uint64 counter = 0; + +/* TODO + Make sure load delays are correct. + + Consider preventing IRQs being taken while in a branch delay slot, to prevent potential problems with games that like to be too clever and perform + un-restartable sequences of instructions. +*/ + +namespace MDFN_IEN_PSX +{ + + +PS_CPU::PS_CPU() +{ + Halted = false; + + memset(FastMap, 0, sizeof(FastMap)); + memset(DummyPage, 0xFF, sizeof(DummyPage)); // 0xFF to trigger an illegal instruction exception, so we'll know what's up when debugging. + + for(uint64 a = 0x00000000; a < (1ULL << 32); a += FAST_MAP_PSIZE) + SetFastMap(DummyPage, a, FAST_MAP_PSIZE); + + CPUHook = NULL; + ADDBT = NULL; +} + +PS_CPU::~PS_CPU() +{ + + +} + +void PS_CPU::SetFastMap(void *region_mem, uint32 region_address, uint32 region_size) +{ + // FAST_MAP_SHIFT + // FAST_MAP_PSIZE + + for(uint64 A = region_address; A < (uint64)region_address + region_size; A += FAST_MAP_PSIZE) + { + FastMap[A >> FAST_MAP_SHIFT] = ((uint8 *)region_mem - region_address); + } +} + +INLINE void PS_CPU::RecalcIPCache(void) +{ + IPCache = 0; + + if((CP0.SR & CP0.CAUSE & 0xFF00) && (CP0.SR & 1)) + IPCache = 0x80; + + if(Halted) + IPCache = 0x80; +} + +void PS_CPU::SetHalt(bool status) +{ + Halted = status; + RecalcIPCache(); +} + +void PS_CPU::Power(void) +{ + memset(GPR, 0, sizeof(GPR)); + memset(&CP0, 0, sizeof(CP0)); + LO = 0; + HI = 0; + + gte_ts_done = 0; + + BACKED_PC = 0xBFC00000; + BACKED_new_PC = 4; + BACKED_new_PC_mask = ~0U; + + BACKED_LDWhich = 0x20; + BACKED_LDValue = 0; + + CP0.SR |= (1 << 22); // BEV + CP0.SR |= (1 << 21); // TS + + CP0.PRID = 0x300; // PRId: FIXME(test on real thing) + + RecalcIPCache(); + + GTE_Power(); +} + +int PS_CPU::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY32(GPR, 32), + SFVAR(LO), + SFVAR(HI), + SFVAR(BACKED_PC), + SFVAR(BACKED_new_PC), + SFVAR(BACKED_new_PC_mask), + + SFVAR(IPCache), + SFVAR(Halted), + + SFVAR(BACKED_LDWhich), + SFVAR(BACKED_LDValue), + + SFVAR(next_event_ts), + SFVAR(gte_ts_done), + + SFARRAY32(CP0.Regs, 32), + + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "CPU"); + + ret &= GTE_StateAction(sm, load, data_only); + + if(load) + { + + } + + return(ret); +} + +void PS_CPU::AssertIRQ(int which, bool asserted) +{ + assert(which >= 0 && which <= 5); + + CP0.CAUSE &= ~(1 << (10 + which)); + + if(asserted) + CP0.CAUSE |= 1 << (10 + which); + + RecalcIPCache(); +} + +template +INLINE T PS_CPU::ReadMemory(pscpu_timestamp_t ×tamp, uint32 address, bool DS24) +{ + T ret; + + timestamp += 2; + //timestamp++; + //assert(!(CP0.SR & 0x10000)); + + if(sizeof(T) == 1) + ret = PSX_MemRead8(timestamp, address); + else if(sizeof(T) == 2) + ret = PSX_MemRead16(timestamp, address); + else + { + if(DS24) + ret = PSX_MemRead24(timestamp, address) & 0xFFFFFF; + else + ret = PSX_MemRead32(timestamp, address); + } + + return(ret); +} + +template +INLINE void PS_CPU::WriteMemory(pscpu_timestamp_t ×tamp, uint32 address, uint32 value, bool DS24) +{ + DEBUG_STORE("[0x%08X] = 0x%08X\n",address,value); + if(!(CP0.SR & 0x10000)) + { + if(sizeof(T) == 1) + PSX_MemWrite8(timestamp, address, value); + else if(sizeof(T) == 2) + PSX_MemWrite16(timestamp, address, value); + else + { + if(DS24) + PSX_MemWrite24(timestamp, address, value); + else + PSX_MemWrite32(timestamp, address, value); + } + } + //else + // printf("ISC WRITE%d %08x %08x\n", (int)sizeof(T), address, value); +} + +uint32 PS_CPU::Exception(uint32 code, uint32 PC, const uint32 NPM) +{ + const bool InBDSlot = !(NPM & 0x3); + uint32 handler = 0x80000080; + + assert(code < 16); + + if(code==EXCEPTION_INT) + { + int zzz=9; + } + if(code != EXCEPTION_INT && code != EXCEPTION_BP && code != EXCEPTION_SYSCALL) + { + printf("Exception: %08x @ PC=0x%08x(IBDS=%d) -- IPCache=0x%02x -- IPEND=0x%02x -- SR=0x%08x ; IRQC_Status=0x%04x -- IRQC_Mask=0x%04x\n", code, PC, InBDSlot, IPCache, (CP0.CAUSE >> 8) & 0xFF, CP0.SR, + IRQ_GetRegister(IRQ_GSREG_STATUS, NULL, 0), IRQ_GetRegister(IRQ_GSREG_MASK, NULL, 0)); + //assert(0); + } + + if(CP0.SR & (1 << 22)) // BEV + handler = 0xBFC00180; + + CP0.EPC = PC; + if(InBDSlot) + CP0.EPC -= 4; + + if(ADDBT) + ADDBT(PC, handler, true); + + // "Push" IEc and KUc(so that the new IEc and KUc are 0) + CP0.SR = (CP0.SR & ~0x3F) | ((CP0.SR << 2) & 0x3F); + + // Setup cause register + CP0.CAUSE &= 0x0000FF00; + CP0.CAUSE |= code << 2; + + // If EPC was adjusted -= 4 because we were in a branch delay slot, set the bit. + if(InBDSlot) + CP0.CAUSE |= 0x80000000; + + RecalcIPCache(); + + return(handler); +} + +//zero 07-feb-2012 - alternate computed goto approach +static __int32 op_goto_table[256] = {0}; +static __int32* op_goto_table_ptr = &op_goto_table[0]; +# define STORE_ADDRESS(index,label) { int _idx = index; \ + __asm lea eax, label\ + __asm mov edx,op_goto_table_ptr\ + __asm mov ebx, _idx\ + __asm mov [edx + ebx*4],eax\ +} +# define JUMP_TO_IP(opf) { int addr = op_goto_table[opf]; __asm jmp addr } + + +#define BACKING_TO_ACTIVE \ + PC = BACKED_PC; \ + new_PC = BACKED_new_PC; \ + new_PC_mask = BACKED_new_PC_mask; \ + LDWhich = BACKED_LDWhich; \ + LDValue = BACKED_LDValue; + +#define ACTIVE_TO_BACKING \ + BACKED_PC = PC; \ + BACKED_new_PC = new_PC; \ + BACKED_new_PC_mask = new_PC_mask; \ + BACKED_LDWhich = LDWhich; \ + BACKED_LDValue = LDValue; + + +template +pscpu_timestamp_t PS_CPU::RunReal(pscpu_timestamp_t timestamp_in) +{ + register pscpu_timestamp_t timestamp = timestamp_in; + + register uint32 PC; + register uint32 new_PC; + register uint32 new_PC_mask; + register uint32 LDWhich; + register uint32 LDValue; + + BACKING_TO_ACTIVE; + + do + { + //printf("Running: %d %d\n", timestamp, next_event_ts); + while(timestamp < next_event_ts) + { + uint32 instr; + uint32 opf; + + // Zero must be zero...until the Master Plan is enacted. + GPR[0] = 0; + + if(DebugMode && CPUHook) + { + ACTIVE_TO_BACKING; + + CPUHook(PC); + + BACKING_TO_ACTIVE; + } + + if(!ILHMode) + { + if(PC == 0xB0) + { + if(GPR[9] == 0x3D) + { + //if(GPR[4] == 'L') + // DBG_Break(); + fputc(GPR[4], stderr); + //if(GPR[4] == '\n') + //{ + // fputc('%', stderr); + // fputc(' ', stderr); + //} + } + } + //if(GPR[9] == 0x35) + //{ + // const int len = GPR[6]; + // for(int i=0;i> FAST_MAP_SHIFT][PC]); + + //printf("PC=%08x, SP=%08x - op=0x%02x - funct=0x%02x - instr=0x%08x\n", PC, GPR[29], instr >> 26, instr & 0x3F, instr); + //for(int i = 0; i < 32; i++) + // printf("%02x : %08x\n", i, GPR[i]); + //printf("\n"); + + opf = instr & 0x3F; + + if(instr & (0x3F << 26)) + opf = 0x40 | (instr >> 26); + + opf |= IPCache; + + timestamp++; + + #define DO_LDS() { GPR[LDWhich] = LDValue; LDWhich = 0x20; } + #define BEGIN_OPF(name, arg_op, arg_funct) { op_##name: /*assert( ((arg_op) ? (0x40 | (arg_op)) : (arg_funct)) == opf); */ + #define END_OPF goto OpDone; } + + #define DO_BRANCH(offset, mask) \ + { \ + if(ILHMode) \ + { \ + uint32 old_PC = PC; \ + PC = (PC & new_PC_mask) + new_PC; \ + if(old_PC == ((PC & (mask)) + (offset))) \ + { \ + if(*(uint32 *)&FastMap[PC >> FAST_MAP_SHIFT][PC] == 0) \ + { \ + if(next_event_ts > timestamp) /* Necessary since next_event_ts might be set to something like "0" to force a call to the event handler. */ \ + { \ + timestamp = next_event_ts; \ + } \ + } \ + } \ + } \ + else \ + PC = (PC & new_PC_mask) + new_PC; \ + new_PC = (offset); \ + new_PC_mask = (mask) & ~3; \ + /* Lower bits of new_PC_mask being clear signifies being in a branch delay slot. (overloaded behavior for performance) */ \ + \ + if(DebugMode && ADDBT) \ + { \ + ADDBT(PC, (PC & new_PC_mask) + new_PC, false); \ + } \ + goto SkipNPCStuff; \ + } + + //zero 07-feb-2012 - removed __attribute__((unused)) + //#define ITYPE uint32 rs __attribute__((unused)) = (instr >> 21) & 0x1F; uint32 rt __attribute__((unused)) = (instr >> 16) & 0x1F; int32 immediate = (int16)(instr & 0xFFFF); /*printf(" rs=%02x(%08x), rt=%02x(%08x), immediate=(%08x) ", rs, GPR[rs], rt, GPR[rt], immediate);*/ + //#define ITYPE_ZE uint32 rs __attribute__((unused)) = (instr >> 21) & 0x1F; uint32 rt __attribute__((unused)) = (instr >> 16) & 0x1F; uint32 immediate = instr & 0xFFFF; /*printf(" rs=%02x(%08x), rt=%02x(%08x), immediate=(%08x) ", rs, GPR[rs], rt, GPR[rt], immediate);*/ + //#define JTYPE uint32 target = instr & ((1 << 26) - 1); /*printf(" target=(%08x) ", target);*/ + //#define RTYPE uint32 rs __attribute__((unused)) = (instr >> 21) & 0x1F; uint32 rt __attribute__((unused)) = (instr >> 16) & 0x1F; uint32 rd __attribute__((unused)) = (instr >> 11) & 0x1F; uint32 shamt __attribute__((unused)) = (instr >> 6) & 0x1F; /*printf(" rs=%02x(%08x), rt=%02x(%08x), rd=%02x(%08x) ", rs, GPR[rs], rt, GPR[rt], rd, GPR[rd]);*/ + #define ITYPE uint32 rs = (instr >> 21) & 0x1F; uint32 rt = (instr >> 16) & 0x1F; int32 immediate = (int16)(instr & 0xFFFF); /*printf(" rs=%02x(%08x), rt=%02x(%08x), immediate=(%08x) ", rs, GPR[rs], rt, GPR[rt], immediate);*/ + #define ITYPE_ZE uint32 rs = (instr >> 21) & 0x1F; uint32 rt = (instr >> 16) & 0x1F; uint32 immediate = instr & 0xFFFF; /*printf(" rs=%02x(%08x), rt=%02x(%08x), immediate=(%08x) ", rs, GPR[rs], rt, GPR[rt], immediate);*/ + #define JTYPE uint32 target = instr & ((1 << 26) - 1); /*printf(" target=(%08x) ", target);*/ + #define RTYPE uint32 rs = (instr >> 21) & 0x1F; uint32 rt = (instr >> 16) & 0x1F; uint32 rd = (instr >> 11) & 0x1F; uint32 shamt = (instr >> 6) & 0x1F; /*printf(" rs=%02x(%08x), rt=%02x(%08x), rd=%02x(%08x) ", rs, GPR[rs], rt, GPR[rt], rd, GPR[rd]);*/ + + //zero 07-feb-2012 - alternate computed goto approach (courtesy of http://abepralle.wordpress.com/2009/01/25/how-not-to-make-a-virtual-machine-label-based-threading/ ) + static bool table_generated = false; + if(!table_generated) + { + table_generated = true; + int __ctr=0; + STORE_ADDRESS(__ctr++,op_SLL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_SRL); STORE_ADDRESS(__ctr++,op_SRA); STORE_ADDRESS(__ctr++,op_SLLV); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_SRLV); STORE_ADDRESS(__ctr++,op_SRAV); + STORE_ADDRESS(__ctr++,op_JR); STORE_ADDRESS(__ctr++,op_JALR); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_SYSCALL); STORE_ADDRESS(__ctr++,op_BREAK); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_MFHI); STORE_ADDRESS(__ctr++,op_MTHI); STORE_ADDRESS(__ctr++,op_MFLO); STORE_ADDRESS(__ctr++,op_MTLO); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_MULT); STORE_ADDRESS(__ctr++,op_MULTU); STORE_ADDRESS(__ctr++,op_DIV); STORE_ADDRESS(__ctr++,op_DIVU); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_ADD); STORE_ADDRESS(__ctr++,op_ADDU); STORE_ADDRESS(__ctr++,op_SUB); STORE_ADDRESS(__ctr++,op_SUBU); STORE_ADDRESS(__ctr++,op_AND); STORE_ADDRESS(__ctr++,op_OR); STORE_ADDRESS(__ctr++,op_XOR); STORE_ADDRESS(__ctr++,op_NOR); + STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_SLT); STORE_ADDRESS(__ctr++,op_SLTU); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + + __ctr++; STORE_ADDRESS(__ctr++,op_BCOND); STORE_ADDRESS(__ctr++,op_J); STORE_ADDRESS(__ctr++,op_JAL); STORE_ADDRESS(__ctr++,op_BEQ); STORE_ADDRESS(__ctr++,op_BNE); STORE_ADDRESS(__ctr++,op_BLEZ); STORE_ADDRESS(__ctr++,op_BGTZ); + STORE_ADDRESS(__ctr++,op_ADDI); STORE_ADDRESS(__ctr++,op_ADDIU); STORE_ADDRESS(__ctr++,op_SLTI); STORE_ADDRESS(__ctr++,op_SLTIU); STORE_ADDRESS(__ctr++,op_ANDI); STORE_ADDRESS(__ctr++,op_ORI); STORE_ADDRESS(__ctr++,op_XORI); STORE_ADDRESS(__ctr++,op_LUI); + STORE_ADDRESS(__ctr++,op_COP0); STORE_ADDRESS(__ctr++,op_COP1); STORE_ADDRESS(__ctr++,op_COP2); STORE_ADDRESS(__ctr++,op_COP3); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_LB); STORE_ADDRESS(__ctr++,op_LH); STORE_ADDRESS(__ctr++,op_LWL); STORE_ADDRESS(__ctr++,op_LW); STORE_ADDRESS(__ctr++,op_LBU); STORE_ADDRESS(__ctr++,op_LHU); STORE_ADDRESS(__ctr++,op_LWR); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_SB); STORE_ADDRESS(__ctr++,op_SH); STORE_ADDRESS(__ctr++,op_SWL); STORE_ADDRESS(__ctr++,op_SW); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_SWR); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_LWC0); STORE_ADDRESS(__ctr++,op_LWC1); STORE_ADDRESS(__ctr++,op_LWC2); STORE_ADDRESS(__ctr++,op_LWC3); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + STORE_ADDRESS(__ctr++,op_SWC0); STORE_ADDRESS(__ctr++,op_SWC1); STORE_ADDRESS(__ctr++,op_SWC2); STORE_ADDRESS(__ctr++,op_SWC3); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); STORE_ADDRESS(__ctr++,op_ILL); + + // Interrupt portion of this table is constructed so that an interrupt won't be taken when the PC is pointing to a GTE instruction, + // to avoid problems caused by pipeline vs coprocessor nuances that aren't emulated. + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + + __ctr++; STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_COP2); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); STORE_ADDRESS(__ctr++,op_INTERRUPT); + } + + counter++; +const uint32 opc = instr>>26; + const uint32 func = instr&0x3F; + if(dotrace) DEBUG_TRACE("{%12lld} %08X: [%08X] (%d,%d) %s\n",counter,PC, instr,opc,func,MDFN_IEN_PSX::DisassembleMIPS(PC,instr).c_str()); + + JUMP_TO_IP(opf); + //goto *op_goto_table[opf]; + + { + BEGIN_OPF(ILL, 0, 0); + PSX_WARNING("[CPU] Unknown instruction @%08x = %08x, op=%02x, funct=%02x", PC, instr, instr >> 26, (instr & 0x3F)); + DO_LDS(); + new_PC = Exception(EXCEPTION_RI, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // ADD - Add Word + // + BEGIN_OPF(ADD, 0, 0x20); + RTYPE; + uint32 result = GPR[rs] + GPR[rt]; + bool ep = ((~(GPR[rs] ^ GPR[rt])) & (GPR[rs] ^ result)) & 0x80000000; + + DO_LDS(); + + if(ep) + { + new_PC = Exception(EXCEPTION_OV, PC, new_PC_mask); + new_PC_mask = 0; + } + else + GPR[rd] = result; + + END_OPF; + + // + // ADDI - Add Immediate Word + // + BEGIN_OPF(ADDI, 0x08, 0); + ITYPE; + uint32 result = GPR[rs] + immediate; + bool ep = ((~(GPR[rs] ^ immediate)) & (GPR[rs] ^ result)) & 0x80000000; + + DO_LDS(); + + if(ep) + { + new_PC = Exception(EXCEPTION_OV, PC, new_PC_mask); + new_PC_mask = 0; + } + else + GPR[rt] = result; + + END_OPF; + + // + // ADDIU - Add Immediate Unsigned Word + // + BEGIN_OPF(ADDIU, 0x09, 0); + ITYPE; + uint32 result = GPR[rs] + immediate; + + DO_LDS(); + + GPR[rt] = result; + + END_OPF; + + // + // ADDU - Add Unsigned Word + // + BEGIN_OPF(ADDU, 0, 0x21); + RTYPE; + uint32 result = GPR[rs] + GPR[rt]; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + // + // AND - And + // + BEGIN_OPF(AND, 0, 0x24); + RTYPE; + uint32 result = GPR[rs] & GPR[rt]; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + // + // ANDI - And Immediate + // + BEGIN_OPF(ANDI, 0x0C, 0); + ITYPE_ZE; + uint32 result = GPR[rs] & immediate; + + DO_LDS(); + + GPR[rt] = result; + + END_OPF; + + // + // BEQ - Branch on Equal + // + BEGIN_OPF(BEQ, 0x04, 0); + ITYPE; + bool result = (GPR[rs] == GPR[rt]); + + DO_LDS(); + + if(result) + { + DO_BRANCH((immediate << 2), ~0U); + } + END_OPF; + + // Bah, why does MIPS encoding have to be funky like this. :( + // Handles BGEZ, BGEZAL, BLTZ, BLTZAL + BEGIN_OPF(BCOND, 0x01, 0); + const uint32 tv = GPR[(instr >> 21) & 0x1F]; + uint32 riv = (instr >> 16) & 0x1F; + int32 immediate = (int16)(instr & 0xFFFF); + bool result = (int32)(tv ^ (riv << 31)) < 0; + //if(riv & ~(0x11)) + //PSX_WARNING("[CPU] Unknown instruction %08x, op=%02x, funct=%02x", instr, instr >> 26, (instr & 0x3F)) + + DO_LDS(); + + if(riv & 0x10) // Unconditional link reg setting. + GPR[31] = PC + 8; + + if(result) + { + DO_BRANCH((immediate << 2), ~0U); + } + + END_OPF; + + + // + // BGTZ - Branch on Greater than Zero + // + BEGIN_OPF(BGTZ, 0x07, 0); + ITYPE; + bool result = (int32)GPR[rs] > 0; + + DO_LDS(); + + if(result) + { + DO_BRANCH((immediate << 2), ~0U); + } + END_OPF; + + // + // BLEZ - Branch on Less Than or Equal to Zero + // + BEGIN_OPF(BLEZ, 0x06, 0); + ITYPE; + bool result = (int32)GPR[rs] <= 0; + + DO_LDS(); + + if(result) + { + DO_BRANCH((immediate << 2), ~0U); + } + + END_OPF; + + // + // BNE - Branch on Not Equal + // + BEGIN_OPF(BNE, 0x05, 0); + ITYPE; + bool result = GPR[rs] != GPR[rt]; + + DO_LDS(); + + if(result) + { + DO_BRANCH((immediate << 2), ~0U); + } + + END_OPF; + + // + // BREAK - Breakpoint + // + BEGIN_OPF(BREAK, 0, 0x0D); + PSX_WARNING("[CPU] BREAK BREAK BREAK BREAK DAAANCE -- PC=0x%08x", PC); + + DO_LDS(); + new_PC = Exception(EXCEPTION_BP, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // Cop "instructions": CFCz(no CP0), COPz, CTCz(no CP0), LWCz(no CP0), MFCz, MTCz, SWCz(no CP0) + // + // COP0 instructions + BEGIN_OPF(COP0, 0x10, 0); + uint32 sub_op = (instr >> 21) & 0x1F; + + if(sub_op & 0x10) + sub_op = 0x10 + (instr & 0x3F); + + //printf("COP0 thing: %02x\n", sub_op); + switch(sub_op) + { + default: + DO_LDS(); + break; + + case 0x00: // MFC0 - Move from Coprocessor + { + uint32 rt = (instr >> 16) & 0x1F; + uint32 rd = (instr >> 11) & 0x1F; + + //printf("MFC0: rt=%d <- rd=%d(%08x)\n", rt, rd, CP0.Regs[rd]); + DO_LDS(); + + LDWhich = rt; + LDValue = CP0.Regs[rd]; + } + break; + + case 0x04: // MTC0 - Move to Coprocessor + { + uint32 rt = (instr >> 16) & 0x1F; + uint32 rd = (instr >> 11) & 0x1F; + uint32 val = GPR[rt]; + + if(rd != CP0REG_CAUSE && rd != CP0REG_SR && val) + { + PSX_WARNING("[CPU] Unimplemented MTC0: rt=%d(%08x) -> rd=%d", rt, GPR[rt], rd); + } + + switch(rd) + { + case CP0REG_BPC: + CP0.BPC = val; + break; + + case CP0REG_BDA: + CP0.BDA = val; + break; + + case CP0REG_TAR: + CP0.TAR = val; + break; + + case CP0REG_DCIC: + CP0.DCIC = val & 0xFF80003F; + break; + + case CP0REG_BDAM: + CP0.BDAM = val; + break; + + case CP0REG_BPCM: + CP0.BPCM = val; + break; + + case CP0REG_CAUSE: + CP0.CAUSE &= ~(0x3 << 8); + CP0.CAUSE |= val & (0x3 << 8); + RecalcIPCache(); + break; + + case CP0REG_SR: + CP0.SR = val & ~( (0x3 << 26) | (0x3 << 23) | (0x3 << 6)); + RecalcIPCache(); + + if(CP0.SR & 0x10000) + PSX_WARNING("[CPU] IsC set"); + break; + } + } + DO_LDS(); + break; + + case (0x10 + 0x10): // RFE + // "Pop" + DO_LDS(); + CP0.SR = (CP0.SR & ~0x0F) | ((CP0.SR >> 2) & 0x0F); + RecalcIPCache(); + break; + } + END_OPF; + + // + // COP1 + // + BEGIN_OPF(COP1, 0x11, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // COP2 + // + BEGIN_OPF(COP2, 0x12, 0); + uint32 sub_op = (instr >> 21) & 0x1F; + + switch(sub_op) + { + default: + DO_LDS(); + break; + + case 0x00: // MFC2 - Move from Coprocessor + { + uint32 rt = (instr >> 16) & 0x1F; + uint32 rd = (instr >> 11) & 0x1F; + + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + + DO_LDS(); + + LDWhich = rt; + LDValue = GTE_ReadDR(rd); + } + break; + + case 0x04: // MTC2 - Move to Coprocessor + { + uint32 rt = (instr >> 16) & 0x1F; + uint32 rd = (instr >> 11) & 0x1F; + uint32 val = GPR[rt]; + + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + + //printf("GTE WriteDR: %d %d\n", rd, val); + GTE_WriteDR(rd, val); + DO_LDS(); + } + break; + + case 0x02: // CFC2 + { + uint32 rt = (instr >> 16) & 0x1F; + uint32 rd = (instr >> 11) & 0x1F; + + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + + DO_LDS(); + + LDWhich = rt; + LDValue = GTE_ReadCR(rd); + //printf("GTE ReadCR: %d %d\n", rd, GPR[rt]); + } + break; + + case 0x06: // CTC2 + { + uint32 rt = (instr >> 16) & 0x1F; + uint32 rd = (instr >> 11) & 0x1F; + uint32 val = GPR[rt]; + + //printf("GTE WriteCR: %d %d\n", rd, val); + + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + + GTE_WriteCR(rd, val); + DO_LDS(); + } + break; + + //zero 07-feb-2012 - remove case range + case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: case 0x1D: case 0x1E: case 0x1F: + //printf("%08x\n", PC); + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + gte_ts_done = timestamp + GTE_Instruction(instr); + DO_LDS(); + break; + } + END_OPF; + + // + // COP3 + // + BEGIN_OPF(COP3, 0x13, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // LWC0 + // + BEGIN_OPF(LWC0, 0x30, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // LWC1 + // + BEGIN_OPF(LWC1, 0x31, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // LWC2 + // + BEGIN_OPF(LWC2, 0x32, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + if(address & 3) + { + new_PC = Exception(EXCEPTION_ADEL, PC, new_PC_mask); + new_PC_mask = 0; + } + else + { + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + + GTE_WriteDR(rt, PSX_MemRead32(timestamp, address)); + } + DO_LDS(); + // GTE stuff here + END_OPF; + + // + // LWC3 + // + BEGIN_OPF(LWC3, 0x33, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + + // + // SWC0 + // + BEGIN_OPF(SWC0, 0x38, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // SWC1 + // + BEGIN_OPF(SWC1, 0x39, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_COPU, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + // + // SWC2 + // + BEGIN_OPF(SWC2, 0x3A, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + if(address & 0x3) + { + new_PC = Exception(EXCEPTION_ADES, PC, new_PC_mask); + new_PC_mask = 0; + } + else if(!(CP0.SR & 0x10000)) + { + if(timestamp < gte_ts_done) + timestamp = gte_ts_done; + + PSX_MemWrite32(timestamp, address, GTE_ReadDR(rt)); + } + DO_LDS(); + END_OPF; + + // + // SWC3 + /// + BEGIN_OPF(SWC3, 0x3B, 0); + DO_LDS(); + new_PC = Exception(EXCEPTION_RI, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + + // + // DIV - Divide Word + // + BEGIN_OPF(DIV, 0, 0x1A); + RTYPE; + + if(!GPR[rt]) + { + //PSX_WARNING("[CPU] Division(signed) by zero at PC=%08x", PC); + + if(GPR[rs] & 0x80000000) + LO = 1; + else + LO = 0xFFFFFFFF; + + HI = GPR[rs]; + } + else if(GPR[rs] == 0x80000000 && GPR[rt] == 0xFFFFFFFF) + { + LO = 0x80000000; + HI = 0; + } + else + { + LO = (int32)GPR[rs] / (int32)GPR[rt]; + HI = (int32)GPR[rs] % (int32)GPR[rt]; + } + + DO_LDS(); + + END_OPF; + + + // + // DIVU - Divide Unsigned Word + // + BEGIN_OPF(DIVU, 0, 0x1B); + RTYPE; + + if(!GPR[rt]) + { + //PSX_WARNING("[CPU] Division(unsigned) by zero at PC=%08x", PC); + + LO = 0xFFFFFFFF; + HI = GPR[rs]; + } + else + { + LO = GPR[rs] / GPR[rt]; + HI = GPR[rs] % GPR[rt]; + } + + DO_LDS(); + END_OPF; + + // + // J - Jump + // + BEGIN_OPF(J, 0x02, 0); + JTYPE; + + DO_LDS(); + + DO_BRANCH(target << 2, 0xF0000000); + END_OPF; + + // + // JAL - Jump and Link + // + BEGIN_OPF(JAL, 0x03, 0); + JTYPE; + + DO_LDS(); + + GPR[31] = PC + 8; + + DO_BRANCH(target << 2, 0xF0000000); + END_OPF; + + // + // JALR - Jump and Link Register + // + BEGIN_OPF(JALR, 0, 0x09); + RTYPE; + uint32 tmp = GPR[rs]; + + DO_LDS(); + + GPR[rd] = PC + 8; + + DO_BRANCH(tmp, 0); + + END_OPF; + + // + // JR - Jump Register + // + BEGIN_OPF(JR, 0, 0x08); + RTYPE; + uint32 bt = GPR[rs]; + + DO_LDS(); + + DO_BRANCH(bt, 0); + + END_OPF; + + // + // LUI - Load Upper Immediate + // + BEGIN_OPF(LUI, 0x0F, 0); + ITYPE_ZE; // Actually, probably would be sign-extending...if we were emulating a 64-bit MIPS chip :b + + DO_LDS(); + + GPR[rt] = immediate << 16; + + END_OPF; + + // + // MFHI - Move from HI + // + BEGIN_OPF(MFHI, 0, 0x10); + RTYPE; + + DO_LDS(); + + GPR[rd] = HI; + + END_OPF; + + + // + // MFLO - Move from LO + // + BEGIN_OPF(MFLO, 0, 0x12); + RTYPE; + + DO_LDS(); + + GPR[rd] = LO; + + END_OPF; + + + // + // MTHI - Move to HI + // + BEGIN_OPF(MTHI, 0, 0x11); + RTYPE; + + HI = GPR[rs]; + + DO_LDS(); + + END_OPF; + + // + // MTLO - Move to LO + // + BEGIN_OPF(MTLO, 0, 0x13); + RTYPE; + + LO = GPR[rs]; + + DO_LDS(); + + END_OPF; + + + // + // MULT - Multiply Word + // + BEGIN_OPF(MULT, 0, 0x18); + RTYPE; + uint64 result; + + result = (int64)(int32)GPR[rs] * (int32)GPR[rt]; + + DO_LDS(); + + LO = result; + HI = result >> 32; + + END_OPF; + + // + // MULTU - Multiply Unsigned Word + // + BEGIN_OPF(MULTU, 0, 0x19); + RTYPE; + uint64 result; + + result = (uint64)GPR[rs] * GPR[rt]; + + DO_LDS(); + + LO = result; + HI = result >> 32; + + END_OPF; + + + // + // NOR - NOR + // + BEGIN_OPF(NOR, 0, 0x27); + RTYPE; + uint32 result = ~(GPR[rs] | GPR[rt]); + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + // + // OR - OR + // + BEGIN_OPF(OR, 0, 0x25); + RTYPE; + uint32 result = GPR[rs] | GPR[rt]; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // ORI - OR Immediate + // + BEGIN_OPF(ORI, 0x0D, 0); + ITYPE_ZE; + uint32 result = GPR[rs] | immediate; + + DO_LDS(); + + GPR[rt] = result; + + END_OPF; + + + // + // SLL - Shift Word Left Logical + // + BEGIN_OPF(SLL, 0, 0x00); // SLL + RTYPE; + uint32 result = GPR[rt] << shamt; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SLLV - Shift Word Left Logical Variable + // + BEGIN_OPF(SLLV, 0, 0x04); + RTYPE; + uint32 result = GPR[rt] << (GPR[rs] & 0x1F); + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + // + // SLT - Set on Less Than + // + BEGIN_OPF(SLT, 0, 0x2A); + RTYPE; + uint32 result = (bool)((int32)GPR[rs] < (int32)GPR[rt]); + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SLTI - Set on Less Than Immediate + // + BEGIN_OPF(SLTI, 0x0A, 0); + ITYPE; + uint32 result = (bool)((int32)GPR[rs] < immediate); + + DO_LDS(); + + GPR[rt] = result; + + END_OPF; + + + // + // SLTIU - Set on Less Than Immediate, Unsigned + // + BEGIN_OPF(SLTIU, 0x0B, 0); + ITYPE; + uint32 result = (bool)(GPR[rs] < (uint32)immediate); + + DO_LDS(); + + GPR[rt] = result; + + END_OPF; + + + // + // SLTU - Set on Less Than, Unsigned + // + BEGIN_OPF(SLTU, 0, 0x2B); + RTYPE; + uint32 result = (bool)(GPR[rs] < GPR[rt]); + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SRA - Shift Word Right Arithmetic + // + BEGIN_OPF(SRA, 0, 0x03); + RTYPE; + uint32 result = ((int32)GPR[rt]) >> shamt; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SRAV - Shift Word Right Arithmetic Variable + // + BEGIN_OPF(SRAV, 0, 0x07); + RTYPE; + uint32 result = ((int32)GPR[rt]) >> (GPR[rs] & 0x1F); + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SRL - Shift Word Right Logical + // + BEGIN_OPF(SRL, 0, 0x02); + RTYPE; + uint32 result = GPR[rt] >> shamt; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + // + // SRLV - Shift Word Right Logical Variable + // + BEGIN_OPF(SRLV, 0, 0x06); + RTYPE; + uint32 result = GPR[rt] >> (GPR[rs] & 0x1F); + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SUB - Subtract Word + // + BEGIN_OPF(SUB, 0, 0x22); + RTYPE; + uint32 result = GPR[rs] - GPR[rt]; + bool ep = (((GPR[rs] ^ GPR[rt])) & (GPR[rs] ^ result)) & 0x80000000; + + DO_LDS(); + + if(ep) + { + new_PC = Exception(EXCEPTION_OV, PC, new_PC_mask); + new_PC_mask = 0; + } + else + GPR[rd] = result; + + END_OPF; + + + // + // SUBU - Subtract Unsigned Word + // + BEGIN_OPF(SUBU, 0, 0x23); // SUBU + RTYPE; + uint32 result = GPR[rs] - GPR[rt]; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + + // + // SYSCALL + // + BEGIN_OPF(SYSCALL, 0, 0x0C); + DO_LDS(); + + new_PC = Exception(EXCEPTION_SYSCALL, PC, new_PC_mask); + new_PC_mask = 0; + END_OPF; + + + // + // XOR + // + BEGIN_OPF(XOR, 0, 0x26); + RTYPE; + uint32 result = GPR[rs] ^ GPR[rt]; + + DO_LDS(); + + GPR[rd] = result; + + END_OPF; + + // + // XORI - Exclusive OR Immediate + // + BEGIN_OPF(XORI, 0x0E, 0); + ITYPE_ZE; + uint32 result = GPR[rs] ^ immediate; + + DO_LDS(); + + GPR[rt] = result; + END_OPF; + + // + // Memory access instructions(besides the coprocessor ones) follow: + // + + // + // LB - Load Byte + // + BEGIN_OPF(LB, 0x20, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + DO_LDS(); + + LDWhich = rt; + LDValue = (int32)ReadMemory(timestamp, address); + END_OPF; + + // + // LBU - Load Byte Unsigned + // + BEGIN_OPF(LBU, 0x24, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + DO_LDS(); + + LDWhich = rt; + LDValue = ReadMemory(timestamp, address); + END_OPF; + + // + // LH - Load Halfword + // + BEGIN_OPF(LH, 0x21, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + DO_LDS(); + + if(address & 1) + { + new_PC = Exception(EXCEPTION_ADEL, PC, new_PC_mask); + new_PC_mask = 0; + } + else + { + LDWhich = rt; + LDValue = (int32)ReadMemory(timestamp, address); + } + END_OPF; + + // + // LHU - Load Halfword Unsigned + // + BEGIN_OPF(LHU, 0x25, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + DO_LDS(); + + if(address & 1) + { + new_PC = Exception(EXCEPTION_ADEL, PC, new_PC_mask); + new_PC_mask = 0; + } + else + { + LDWhich = rt; + LDValue = ReadMemory(timestamp, address); + } + END_OPF; + + + // + // LW - Load Word + // + BEGIN_OPF(LW, 0x23, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + DO_LDS(); + + if(address & 3) + { + new_PC = Exception(EXCEPTION_ADEL, PC, new_PC_mask); + new_PC_mask = 0; + } + else + { + LDWhich = rt; + LDValue = ReadMemory(timestamp, address); + } + END_OPF; + + // + // SB - Store Byte + // + BEGIN_OPF(SB, 0x28, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + WriteMemory(timestamp, address, GPR[rt]); + + DO_LDS(); + END_OPF; + + // + // SH - Store Halfword + // + BEGIN_OPF(SH, 0x29, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + if(address & 0x1) + { + new_PC = Exception(EXCEPTION_ADES, PC, new_PC_mask); + new_PC_mask = 0; + } + else + WriteMemory(timestamp, address, GPR[rt]); + + DO_LDS(); + END_OPF; + + // + // SW - Store Word + // + BEGIN_OPF(SW, 0x2B, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + if(address & 0x3) + { + new_PC = Exception(EXCEPTION_ADES, PC, new_PC_mask); + new_PC_mask = 0; + } + else + WriteMemory(timestamp, address, GPR[rt]); + + DO_LDS(); + END_OPF; + + // LWL and LWR load delay slot tomfoolery appears to apply even to MFC0! (and probably MFCn and CFCn as well, though they weren't explicitly tested) + + // + // LWL - Load Word Left + // + BEGIN_OPF(LWL, 0x22, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + uint32 v = GPR[rt]; + + if(LDWhich == rt) + { + v = LDValue; + } + else + { + DO_LDS(); + } + + LDWhich = rt; + switch(address & 0x3) + { + case 0: LDValue = (v & ~(0xFF << 24)) | (ReadMemory(timestamp, address & ~3) << 24); + break; + + case 1: LDValue = (v & ~(0xFFFF << 16)) | (ReadMemory(timestamp, address & ~3) << 16); + break; + + case 2: LDValue = (v & ~(0xFFFFFF << 8)) | (ReadMemory(timestamp, address & ~3, true) << 8); + break; + + case 3: LDValue = (v & ~(0xFFFFFFFF << 0)) | (ReadMemory(timestamp, address & ~3) << 0); + break; + } + END_OPF; + + // + // SWL - Store Word Left + // + BEGIN_OPF(SWL, 0x2A, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + switch(address & 0x3) + { + case 0: WriteMemory(timestamp, address & ~3, GPR[rt] >> 24); + break; + + case 1: WriteMemory(timestamp, address & ~3, GPR[rt] >> 16); + break; + + case 2: WriteMemory(timestamp, address & ~3, GPR[rt] >> 8, true); + break; + + case 3: WriteMemory(timestamp, address & ~3, GPR[rt] >> 0); + break; + } + DO_LDS(); + + END_OPF; + + // + // LWR - Load Word Right + // + BEGIN_OPF(LWR, 0x26, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + uint32 v = GPR[rt]; + + if(LDWhich == rt) + { + v = LDValue; + } + else + { + DO_LDS(); + } + + LDWhich = rt; + switch(address & 0x3) + { + case 0: LDValue = (v & ~(0xFFFFFFFF)) | ReadMemory(timestamp, address); + break; + + case 1: LDValue = (v & ~(0xFFFFFF)) | ReadMemory(timestamp, address, true); + break; + + case 2: LDValue = (v & ~(0xFFFF)) | ReadMemory(timestamp, address); + break; + + case 3: LDValue = (v & ~(0xFF)) | ReadMemory(timestamp, address); + break; + } + END_OPF; + + // + // SWR - Store Word Right + // + BEGIN_OPF(SWR, 0x2E, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + switch(address & 0x3) + { + case 0: WriteMemory(timestamp, address, GPR[rt]); + break; + + case 1: WriteMemory(timestamp, address, GPR[rt], true); + break; + + case 2: WriteMemory(timestamp, address, GPR[rt]); + break; + + case 3: WriteMemory(timestamp, address, GPR[rt]); + break; + } + + DO_LDS(); + + END_OPF; + + // + // Mednafen special instruction + // + BEGIN_OPF(INTERRUPT, 0x3F, 0); + if(Halted) + { + goto SkipNPCStuff; + } + else + { + DO_LDS(); + + new_PC = Exception(EXCEPTION_INT, PC, new_PC_mask); + new_PC_mask = 0; + } + END_OPF; + } + + OpDone: ; + + PC = (PC & new_PC_mask) + new_PC; + new_PC_mask = ~0U; + new_PC = 4; + + SkipNPCStuff: ; + + //printf("\n"); + } + } while(PSX_EventHandler(timestamp)); + + if(gte_ts_done > 0) + gte_ts_done -= timestamp; + + ACTIVE_TO_BACKING; + + return(timestamp); +} + +pscpu_timestamp_t PS_CPU::Run(pscpu_timestamp_t timestamp_in, bool ILHMode) +{ + if(CPUHook || ADDBT) + return(RunReal(timestamp_in)); + else + { + if(ILHMode) + return(RunReal(timestamp_in)); + else + return(RunReal(timestamp_in)); + } +} + +void PS_CPU::SetCPUHook(void (*cpuh)(uint32 pc), void (*addbt)(uint32 from, uint32 to, bool exception)) +{ + ADDBT = addbt; + CPUHook = cpuh; +} + +uint32 PS_CPU::GetRegister(unsigned int which, char *special, const uint32 special_len) +{ + uint32 ret = 0; + + if(which >= GSREG_GPR && which < (GSREG_GPR + 32)) + ret = GPR[which]; + else switch(which) + { + case GSREG_PC: + ret = BACKED_PC; + break; + + case GSREG_PC_NEXT: + ret = BACKED_new_PC; + break; + + case GSREG_IN_BD_SLOT: + ret = !(BACKED_new_PC_mask & 3); + break; + + case GSREG_LO: + ret = LO; + break; + + case GSREG_HI: + ret = HI; + break; + + case GSREG_SR: + ret = CP0.SR; + break; + + case GSREG_CAUSE: + ret = CP0.CAUSE; + break; + + case GSREG_EPC: + ret = CP0.EPC; + break; + + } + + return(ret); +} + +void PS_CPU::SetRegister(unsigned int which, uint32 value) +{ + if(which >= GSREG_GPR && which < (GSREG_GPR + 32)) + { + if(which != (GSREG_GPR + 0)) + GPR[which] = value; + } + else switch(which) + { + case GSREG_PC: + BACKED_PC = value & ~0x3; // Remove masking if we ever add proper misaligned PC exception + break; + + case GSREG_LO: + LO = value; + break; + + case GSREG_HI: + HI = value; + break; + + case GSREG_SR: + CP0.SR = value; // TODO: mask + break; + + case GSREG_CAUSE: + CP0.CAUSE = value; + break; + + case GSREG_EPC: + CP0.EPC = value & ~0x3U; + break; + + + } +} + +#undef BEGIN_OPF +#undef END_OPF +#undef MK_OPF + +#define MK_OPF(op, funct) ((op) ? (0x40 | (op)) : (funct)) +#define BEGIN_OPF(op, funct) case MK_OPF(op, funct): { +#define END_OPF } break; + +// FIXME: should we breakpoint on an illegal address? And with LWC2/SWC2 if CP2 isn't enabled? +void PS_CPU::CheckBreakpoints(void (*callback)(bool write, uint32 address, unsigned int len), uint32 instr) +{ + uint32 opf; + + opf = instr & 0x3F; + + if(instr & (0x3F << 26)) + opf = 0x40 | (instr >> 26); + + + switch(opf) + { + default: + break; + + // + // LB - Load Byte + // + BEGIN_OPF(0x20, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(false, address, 1); + END_OPF; + + // + // LBU - Load Byte Unsigned + // + BEGIN_OPF(0x24, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(false, address, 1); + END_OPF; + + // + // LH - Load Halfword + // + BEGIN_OPF(0x21, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(false, address, 2); + END_OPF; + + // + // LHU - Load Halfword Unsigned + // + BEGIN_OPF(0x25, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(false, address, 2); + END_OPF; + + + // + // LW - Load Word + // + BEGIN_OPF(0x23, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(false, address, 4); + END_OPF; + + // + // SB - Store Byte + // + BEGIN_OPF(0x28, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(true, address, 1); + END_OPF; + + // + // SH - Store Halfword + // + BEGIN_OPF(0x29, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(true, address, 2); + END_OPF; + + // + // SW - Store Word + // + BEGIN_OPF(0x2B, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(true, address, 4); + END_OPF; + + // + // LWL - Load Word Left + // + BEGIN_OPF(0x22, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + do + { + callback(false, address, 1); + } while((address--) & 0x3); + + END_OPF; + + // + // SWL - Store Word Left + // + BEGIN_OPF(0x2A, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + do + { + callback(true, address, 1); + } while((address--) & 0x3); + + END_OPF; + + // + // LWR - Load Word Right + // + BEGIN_OPF(0x26, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + do + { + callback(false, address, 1); + } while((++address) & 0x3); + + END_OPF; + + // + // SWR - Store Word Right + // + BEGIN_OPF(0x2E, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + do + { + callback(true, address, 1); + } while((++address) & 0x3); + + END_OPF; + + // + // LWC2 + // + BEGIN_OPF(0x32, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(false, address, 4); + END_OPF; + + // + // SWC2 + // + BEGIN_OPF(0x3A, 0); + ITYPE; + uint32 address = GPR[rs] + immediate; + + callback(true, address, 4); + END_OPF; + + } +} + + +} diff --git a/libmednahawk/src/psx/cpu.h b/libmednahawk/src/psx/cpu.h new file mode 100644 index 0000000000..d58aeee2be --- /dev/null +++ b/libmednahawk/src/psx/cpu.h @@ -0,0 +1,167 @@ +#ifndef __MDFN_PSX_CPU_H +#define __MDFN_PSX_CPU_H + +#include "gte.h" + +namespace MDFN_IEN_PSX +{ + +class PS_CPU +{ + public: + + PS_CPU(); + ~PS_CPU(); + + // FAST_MAP_* enums are in BYTES(8-bit), not in 32-bit units("words" in MIPS context), but the sizes + // will always be multiples of 4. + enum { FAST_MAP_SHIFT = 16 }; + enum { FAST_MAP_PSIZE = 1 << FAST_MAP_SHIFT }; + + void SetFastMap(void *region_mem, uint32 region_address, uint32 region_size); + + INLINE void SetEventNT(const pscpu_timestamp_t next_event_ts_arg) + { + next_event_ts = next_event_ts_arg; + } + + pscpu_timestamp_t Run(pscpu_timestamp_t timestamp_in, bool ILHMode); + + void Power(void); + + // which ranges 0-5, inclusive + void AssertIRQ(int which, bool asserted); + + void SetHalt(bool status); + + int StateAction(StateMem *sm, int load, int data_only); + + private: + + struct + { + uint32 GPR[32]; + uint32 GPR_dummy; // Used in load delay simulation(indexing past the end of GPR) + }; + uint32 LO; + uint32 HI; + + + uint32 BACKED_PC; + uint32 BACKED_new_PC; + uint32 BACKED_new_PC_mask; + + uint32 IPCache; + void RecalcIPCache(void); + bool Halted; + + uint32 BACKED_LDWhich; + uint32 BACKED_LDValue; + + pscpu_timestamp_t next_event_ts; + pscpu_timestamp_t gte_ts_done; + + uint8 *FastMap[1 << (32 - FAST_MAP_SHIFT)]; + uint8 DummyPage[FAST_MAP_PSIZE]; + + enum + { + CP0REG_BPC = 3, // PC breakpoint address. + CP0REG_BDA = 5, // Data load/store breakpoint address. + CP0REG_TAR = 6, // Target address(???) + CP0REG_DCIC = 7, // Cache control + CP0REG_BDAM = 9, // Data load/store address mask. + CP0REG_BPCM = 11, // PC breakpoint address mask. + CP0REG_SR = 12, + CP0REG_CAUSE = 13, + CP0REG_EPC = 14, + CP0REG_PRID = 15, // Product ID + CP0REG_ERREG = 16 + }; + + struct + { + union + { + uint32 Regs[32]; + struct + { + uint32 Unused00; + uint32 Unused01; + uint32 Unused02; + uint32 BPC; // RW + uint32 Unused04; + uint32 BDA; // RW + uint32 TAR; + uint32 DCIC; // RW + uint32 Unused08; + uint32 BDAM; // R/W + uint32 Unused0A; + uint32 BPCM; // R/W + uint32 SR; // R/W + uint32 CAUSE; // R/W(partial) + uint32 EPC; // R + uint32 PRID; // R + uint32 ERREG; // ?(may not exist, test) + }; + }; + } CP0; + + //PS_GTE GTE; + + enum + { + EXCEPTION_INT = 0, + EXCEPTION_MOD = 1, + EXCEPTION_TLBL = 2, + EXCEPTION_TLBS = 3, + EXCEPTION_ADEL = 4, // Address error on load + EXCEPTION_ADES = 5, // Address error on store + EXCEPTION_IBE = 6, // Instruction bus error + EXCEPTION_DBE = 7, // Data bus error + EXCEPTION_SYSCALL = 8, // System call + EXCEPTION_BP = 9, // Breakpoint + EXCEPTION_RI = 10, // Reserved instruction + EXCEPTION_COPU = 11, // Coprocessor unusable + EXCEPTION_OV = 12 // Arithmetic overflow + }; + + uint32 Exception(uint32 code, uint32 PC, const uint32 NPM) MDFN_WARN_UNUSED_RESULT; + + template pscpu_timestamp_t RunReal(pscpu_timestamp_t timestamp_in); + + template T ReadMemory(pscpu_timestamp_t ×tamp, uint32 address, bool DS24 = false); + template void WriteMemory(pscpu_timestamp_t ×tamp, uint32 address, uint32 value, bool DS24 = false); + + + // + // Mednafen debugger stuff follows: + // + public: + void SetCPUHook(void (*cpuh)(uint32 pc), void (*addbt)(uint32 from, uint32 to, bool exception)); + void CheckBreakpoints(void (*callback)(bool write, uint32 address, unsigned int len), uint32 instr); + + enum + { + GSREG_GPR = 0, + GSREG_PC = 32, + GSREG_PC_NEXT, + GSREG_IN_BD_SLOT, + GSREG_LO, + GSREG_HI, + GSREG_SR, + GSREG_CAUSE, + GSREG_EPC, + }; + + uint32 GetRegister(unsigned int which, char *special, const uint32 special_len); + void SetRegister(unsigned int which, uint32 value); + + private: + void (*CPUHook)(uint32 pc); + void (*ADDBT)(uint32 from, uint32 to, bool exception); +}; + +} + +#endif diff --git a/libmednahawk/src/psx/debug.cpp b/libmednahawk/src/psx/debug.cpp new file mode 100644 index 0000000000..0ffa8fa75f --- /dev/null +++ b/libmednahawk/src/psx/debug.cpp @@ -0,0 +1,674 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "timer.h" +#include "cdc.h" +#include "spu.h" + +namespace MDFN_IEN_PSX +{ + +extern PS_GPU *GPU; +extern PS_SPU *SPU; + +static void (*CPUHook)(uint32) = NULL; +static void (*BPCallB)(uint32 PC) = NULL; + +struct PSX_BPOINT +{ + uint32 A[2]; + int type; +}; + +static std::vector BreakPointsPC, BreakPointsRead, BreakPointsWrite; +static bool FoundBPoint; + +static int BTIndex = 0; + +struct BTEntry +{ + uint32 from; + uint32 to; + uint32 branch_count; + bool exception; +}; + +#define NUMBT 24 +static BTEntry BTEntries[NUMBT]; + +void DBG_Break(void) +{ + FoundBPoint = true; +} + +static void AddBranchTrace(uint32 from, uint32 to, bool exception) +{ + BTEntry *prevbt = &BTEntries[(BTIndex + NUMBT - 1) % NUMBT]; + + //if(BTEntries[(BTIndex - 1) & 0xF] == PC) return; + + if(prevbt->from == from && prevbt->to == to && prevbt->exception == exception && prevbt->branch_count < 0xFFFFFFFF) + prevbt->branch_count++; + else + { + BTEntries[BTIndex].from = from; + BTEntries[BTIndex].to = to; + BTEntries[BTIndex].exception = exception; + BTEntries[BTIndex].branch_count = 1; + + BTIndex = (BTIndex + 1) % NUMBT; + } +} + +static std::vector GetBranchTrace(void) +{ + BranchTraceResult tmp; + std::vector ret; + + for(int x = 0; x < NUMBT; x++) + { + const BTEntry *bt = &BTEntries[(x + BTIndex) % NUMBT]; + + tmp.count = bt->branch_count; + trio_snprintf(tmp.from, sizeof(tmp.from), "%08x", bt->from); + trio_snprintf(tmp.to, sizeof(tmp.to), "%08x", bt->to); + trio_snprintf(tmp.code, sizeof(tmp.code), "%s", bt->exception ? "e" : ""); + + ret.push_back(tmp); + } + return(ret); +} + +void CheckCPUBPCallB(bool write, uint32 address, unsigned int len) +{ + std::vector::iterator bpit; + std::vector::iterator bpit_end; + + if(write) + { + bpit = BreakPointsWrite.begin(); + bpit_end = BreakPointsWrite.end(); + } + else + { + bpit = BreakPointsRead.begin(); + bpit_end = BreakPointsRead.end(); + } + + while(bpit != bpit_end) + { + if(address >= bpit->A[0] && address <= bpit->A[1]) + { + FoundBPoint = true; + break; + } + bpit++; + } +} + +static void CPUHandler(uint32 PC) +{ + std::vector::iterator bpit; + + if(PC == 0xB0 && CPU->GetRegister(PS_CPU::GSREG_GPR + 9, NULL, 0) == 0x3D) + { + putchar(CPU->GetRegister(PS_CPU::GSREG_GPR + 4, NULL, 0)); + //exit(1); + //puts((const char *)&MainRAM[CPU->GetRegister(PS_CPU::GSREG_GPR + 4, NULL, 0) & 0x1FFFFF]); + } + + + // FIXME/TODO: Call ForceEventUpdates() somewhere + + for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++) + { + if(PC >= bpit->A[0] && PC <= bpit->A[1]) + { + FoundBPoint = true; + break; + } + } + + CPU->CheckBreakpoints(CheckCPUBPCallB, PSX_MemPeek32(PC)); + + if(FoundBPoint) + { + BPCallB(PC); + FoundBPoint = 0; + } + + if(CPUHook) + CPUHook(PC); +} + + +static void RedoCPUHook(void) +{ + const bool HappyTest = BreakPointsPC.size() || BreakPointsRead.size() || BreakPointsWrite.size(); + void (*cpuh)(uint32); + + cpuh = HappyTest ? CPUHandler : CPUHook; + + CPU->SetCPUHook(cpuh, cpuh ? AddBranchTrace : NULL); +} + +static void FlushBreakPoints(int type) +{ + if(type == BPOINT_READ) + BreakPointsRead.clear(); + else if(type == BPOINT_WRITE) + BreakPointsWrite.clear(); + else if(type == BPOINT_PC) + BreakPointsPC.clear(); + + RedoCPUHook(); +} + +static void AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) +{ + PSX_BPOINT tmp; + + tmp.A[0] = A1; + tmp.A[1] = A2; + tmp.type = type; + + if(type == BPOINT_READ) + BreakPointsRead.push_back(tmp); + else if(type == BPOINT_WRITE) + BreakPointsWrite.push_back(tmp); + else if(type == BPOINT_PC) + BreakPointsPC.push_back(tmp); + + RedoCPUHook(); +} + +static void SetCPUCallback(void (*callb)(uint32 PC)) +{ + CPUHook = callb; + RedoCPUHook(); +} + +static void SetBPCallback(void (*callb)(uint32 PC)) +{ + BPCallB = callb; +} + + +static void GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + while(Length--) + { + Address &= 0xFFFFFFFF; + *Buffer = PSX_MemPeek8(Address); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= 0x1FFFFF; + *Buffer = PSX_MemPeek8(Address); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "spu")) + { + while(Length--) + { + Address &= 0x7FFFF; + *Buffer = SPU->PeekSPURAM(Address >> 1) >> ((Address & 1) * 8); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "gpu")) + { + while(Length--) + { + Address &= 0xFFFFF; + *Buffer = GPU->PeekRAM(Address >> 1) >> ((Address & 1) * 8); + Address++; + Buffer++; + } + } +} + + +static void PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + while(Length--) + { + Address &= 0xFFFFFFFF; + + // TODO + PSX_MemWrite8(0, Address, *Buffer); + + Address++; + Buffer++; + } + } + else if(!strcmp(name, "gpu")) + { + while(Length--) + { + Address &= 0xFFFFF; + + uint16 peeko = GPU->PeekRAM(Address >> 1); + + GPU->PokeRAM(Address >> 1, (*Buffer << ((Address & 1) * 8)) | (peeko & (0xFF00 >> ((Address & 1) * 8))) ); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "spu")) + { + while(Length--) + { + Address &= 0x7FFFF; + + uint16 peeko = SPU->PeekSPURAM(Address >> 1); + + SPU->PokeSPURAM(Address >> 1, (*Buffer << ((Address & 1) * 8)) | (peeko & (0xFF00 >> ((Address & 1) * 8))) ); + Address++; + Buffer++; + } + } + +} + +static uint32 MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical) +{ + uint32 ret = 0; + + for(unsigned int i = 0; i < bsize; i++) + ret |= PSX_MemPeek8(A + i) << (i * 8); + + return(ret); +} + +static void Disassemble(uint32 &A, uint32 SpecialA, char *TextBuf) +{ + assert(!(A & 0x3)); + + const uint32 instr = PSX_MemPeek32(A); + + + strncpy(TextBuf, DisassembleMIPS(A, instr).c_str(), 256); + TextBuf[255] = 0; + +// trio_snprintf(TextBuf, 256, "0x%08x", instr); + + A += 4; +} + +static MDFN_Surface *GfxDecode_Buf = NULL; +static int GfxDecode_Line = -1; +static int GfxDecode_Layer = 0; +static int GfxDecode_Scroll = 0; +static int GfxDecode_PBN = 0; + +static void DoGfxDecode(void) +{ + unsigned tp_w, tp_h; + + tp_w = 256; + tp_h = 256; + + if(GfxDecode_Buf) + { + for(int sy = 0; sy < GfxDecode_Buf->h; sy++) + { + for(int sx = 0; sx < GfxDecode_Buf->w; sx++) + { + unsigned fb_x = ((sx % GfxDecode_Buf->w) + ((sy + GfxDecode_Scroll) / GfxDecode_Buf->w * GfxDecode_Buf->w)) & 1023; + unsigned fb_y = (((sy + GfxDecode_Scroll) % GfxDecode_Buf->w) + ((((sx % GfxDecode_Buf->w) + ((sy + GfxDecode_Scroll) / GfxDecode_Buf->w * GfxDecode_Buf->w)) / 1024) * 256)) & 511; + + uint16 pixel = GPU->PeekRAM(fb_y * 1024 + fb_x); + + GfxDecode_Buf->pixels[(sy * GfxDecode_Buf->w * 3) + sx] = GfxDecode_Buf->MakeColor(((pixel >> 0) & 0x1F) * 255 / 31, + ((pixel >> 5) & 0x1F) * 255 / 31, + ((pixel >> 10) & 0x1F) * 255 / 31, 0xFF); + } + } + } +} + + +void DBG_GPUScanlineHook(unsigned scanline) +{ + if((int)scanline == GfxDecode_Line) + { + DoGfxDecode(); + } +} + + +static void SetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn) +{ + GfxDecode_Buf = surface; + GfxDecode_Line = line; + GfxDecode_Layer = which; + GfxDecode_Scroll = yscroll; + GfxDecode_PBN = pbn; + + if(GfxDecode_Buf && GfxDecode_Line == -1) + DoGfxDecode(); +} + +DebuggerInfoStruct PSX_DBGInfo = +{ + "shift_jis", + 4, // Max instruction byte size + 4, // Instruction alignment(bytes) + 32, // Logical address bits + 32, // Physical address bits + 0x00000000, // Default watch addr + ~0U, // ZP addr + + MemPeek, + Disassemble, + NULL, + NULL, //ForceIRQ, + NULL, //NESDBG_GetVector, + FlushBreakPoints, + AddBreakPoint, + SetCPUCallback, + SetBPCallback, + GetBranchTrace, + SetGraphicsDecode, + NULL, //PCFXDBG_SetLogFunc, +}; + +static RegType Regs_Misc[] = +{ + { TIMER_GSREG_COUNTER0, "COUNTER0", "Counter 0", 2 }, + { TIMER_GSREG_MODE0, "MODE0", "Mode 0", 2 }, + { TIMER_GSREG_TARGET0, "TARGET0", "Target 0", 2 }, + + { 0, "------", "", 0xFFFF }, + + + { TIMER_GSREG_COUNTER1, "COUNTER1", "Counter 1", 2 }, + { TIMER_GSREG_MODE1, "MODE1", "Mode 1", 2 }, + { TIMER_GSREG_TARGET1, "TARGET1", "Target 1", 2 }, + + { 0, "------", "", 0xFFFF }, + + { TIMER_GSREG_COUNTER2, "COUNTER2", "Counter 2", 2 }, + { TIMER_GSREG_MODE2, "MODE2", "Mode 2", 2 }, + { TIMER_GSREG_TARGET2, "TARGET2", "Target 2", 2 }, + + { 0, "------", "", 0xFFFF }, + { 0, "------", "", 0xFFFF }, + + { 0x10000 | IRQ_GSREG_ASSERTED, "ASSERTED", "IRQ Asserted", 2 }, + { 0x10000 | IRQ_GSREG_STATUS, "STATUS", "IRQ Status", 2 }, + { 0x10000 | IRQ_GSREG_MASK, "MASK", "IRQ Mask", 2 }, + + { 0, "", "", 0 } +}; + + +static uint32 GetRegister_Misc(const unsigned int id, char *special, const uint32 special_len) +{ + if(id & 0x10000) + return(IRQ_GetRegister(id & 0xFFFF, special, special_len)); + else + return(TIMER_GetRegister(id & 0xFFFF, special, special_len)); +} + +static void SetRegister_Misc(const unsigned int id, uint32 value) +{ + if(id & 0x10000) + IRQ_SetRegister(id & 0xFFFF, value); + else + TIMER_SetRegister(id & 0xFFFF, value); +} + +static RegGroupType MiscRegsGroup = +{ + NULL, + Regs_Misc, + GetRegister_Misc, + SetRegister_Misc +}; + +static RegType Regs_SPU[] = +{ + { PS_SPU::GSREG_SPUCONTROL, "SPUCTRL", "SPU Control", 2 }, + + { PS_SPU::GSREG_FM_ON, "FMOn", "FM Enable", 3 }, + { PS_SPU::GSREG_NOISE_ON, "NoiseOn", "Noise Enable", 3 }, + { PS_SPU::GSREG_REVERB_ON, "ReverbOn", "Reverb Enable", 3 }, + + { PS_SPU::GSREG_CDVOL_L, "CDVolL", "CD Volume Left", 2 }, + { PS_SPU::GSREG_CDVOL_R, "CDVolR", "CD Volume Right", 2 }, + + { PS_SPU::GSREG_DRYVOL_CTRL_L, "DryVolCL", "Dry Volume Control Left", 2 }, + { PS_SPU::GSREG_DRYVOL_CTRL_R, "DryVolCR", "Dry Volume Control Right", 2 }, + + { PS_SPU::GSREG_DRYVOL_L, "DryVolL", "Dry Volume Left", 2 }, + { PS_SPU::GSREG_DRYVOL_R, "DryVolR", "Dry Volume Right", 2 }, + + { PS_SPU::GSREG_WETVOL_L, "WetVolL", "Wet Volume Left", 2 }, + { PS_SPU::GSREG_WETVOL_R, "WetVolR", "Wet Volume Right", 2 }, + + { PS_SPU::GSREG_RWADDR, "RWAddr", "SPURAM Read/Write Address", 3 }, + + { PS_SPU::GSREG_IRQADDR, "IRQAddr", "IRQ Compare Address", 3 }, + + { PS_SPU::GSREG_REVERBWA, "ReverbWA", "Reverb Work Area(Raw)", 2 }, + + { PS_SPU::GSREG_VOICEON, "VoiceOn", "Voice On", 3 }, + { PS_SPU::GSREG_VOICEOFF, "VoiceOff", "Voice Off", 3 }, + { PS_SPU::GSREG_BLOCKEND, "BlockEnd", "Block End", 3 }, + + + { 0, "------", "", 0xFFFF }, + + { PS_SPU::GSREG_FB_SRC_A, "FB_SRC_A", "", 2 }, + { PS_SPU::GSREG_FB_SRC_B, "FB_SRC_B", "", 2 }, + { PS_SPU::GSREG_IIR_ALPHA, "IIR_ALPHA", "", 2 }, + { PS_SPU::GSREG_ACC_COEF_A, "ACC_COEF_A", "", 2 }, + { PS_SPU::GSREG_ACC_COEF_B, "ACC_COEF_B", "", 2 }, + { PS_SPU::GSREG_ACC_COEF_C, "ACC_COEF_C", "", 2 }, + { PS_SPU::GSREG_ACC_COEF_D, "ACC_COEF_D", "", 2 }, + { PS_SPU::GSREG_IIR_COEF, "IIR_COEF", "", 2 }, + { PS_SPU::GSREG_FB_ALPHA, "FB_ALPHA", "", 2 }, + { PS_SPU::GSREG_FB_X, "FB_X", "", 2 }, + { PS_SPU::GSREG_IIR_DEST_A0, "IIR_DEST_A0", "", 2 }, + { PS_SPU::GSREG_IIR_DEST_A1, "IIR_DEST_A1", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_A0, "ACC_SRC_A0", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_A1, "ACC_SRC_A1", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_B0, "ACC_SRC_B0", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_B1, "ACC_SRC_B1", "", 2 }, + { PS_SPU::GSREG_IIR_SRC_A0, "IIR_SRC_A0", "", 2 }, + { PS_SPU::GSREG_IIR_SRC_A1, "IIR_SRC_A1", "", 2 }, + { PS_SPU::GSREG_IIR_DEST_B0, "IIR_DEST_B0", "", 2 }, + { PS_SPU::GSREG_IIR_DEST_B1, "IIR_DEST_B1", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_C0, "ACC_SRC_C0", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_C1, "ACC_SRC_C1", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_D0, "ACC_SRC_D0", "", 2 }, + { PS_SPU::GSREG_ACC_SRC_D1, "ACC_SRC_D1", "", 2 }, + { PS_SPU::GSREG_IIR_SRC_B1, "IIR_SRC_B1", "", 2 }, + { PS_SPU::GSREG_IIR_SRC_B0, "IIR_SRC_B0", "", 2 }, + { PS_SPU::GSREG_MIX_DEST_A0, "MIX_DEST_A0", "", 2 }, + { PS_SPU::GSREG_MIX_DEST_A1, "MIX_DEST_A1", "", 2 }, + { PS_SPU::GSREG_MIX_DEST_B0, "MIX_DEST_B0", "", 2 }, + { PS_SPU::GSREG_MIX_DEST_B1, "MIX_DEST_B1", "", 2 }, + { PS_SPU::GSREG_IN_COEF_L, "IN_COEF_L", "", 2 }, + { PS_SPU::GSREG_IN_COEF_R, "IN_COEF_R", "", 2 }, + + { 0, "", "", 0 }, +}; + +#define VOICE_HELPER(v) \ + { 0, "--V"#v"--", "", 0xFFFF }, \ + { PS_SPU:: GSREG_V0_VOL_CTRL_L + v * 256, "VolCL", "Volume Control Left", 2 }, \ + { PS_SPU:: GSREG_V0_VOL_CTRL_R + v * 256, "VolCR", "Volume Control Right", 2 }, \ + { PS_SPU:: GSREG_V0_VOL_L + v * 256, "VolL", "Volume Left", 2 }, \ + { PS_SPU:: GSREG_V0_VOL_R + v * 256, "VolR", "Volume Right", 2 }, \ + { PS_SPU:: GSREG_V0_PITCH + v * 256, "Pitch", "Pitch", 2 }, \ + { PS_SPU:: GSREG_V0_STARTADDR + v * 256, "SAddr", "Start Address", 3 }, \ + { PS_SPU:: GSREG_V0_ADSR_CTRL + v * 256, "ADSRCTRL", "ADSR Control", 4 }, \ + { PS_SPU:: GSREG_V0_ADSR_LEVEL + v * 256, "ADSRLev", "ADSR Level", 2 }, \ + { PS_SPU:: GSREG_V0_LOOP_ADDR + v * 256, "LAddr", "Loop Address", 3 }, \ + { PS_SPU:: GSREG_V0_READ_ADDR + v * 256, "RAddr", "Read Address", 3 } + + +static RegType Regs_SPU_Voices[] = +{ +#if 1 + VOICE_HELPER(0), + VOICE_HELPER(1), + VOICE_HELPER(2), + VOICE_HELPER(3), +#else + VOICE_HELPER(9), + VOICE_HELPER(12), + VOICE_HELPER(17), + VOICE_HELPER(22), + + //VOICE_HELPER(20), + //VOICE_HELPER(21), + //VOICE_HELPER(22), + //VOICE_HELPER(23), +#endif + { 0, "", "", 0 }, +}; + + +static uint32 GetRegister_SPU(const unsigned int id, char *special, const uint32 special_len) +{ + return(SPU->GetRegister(id, special, special_len)); +} + +static void SetRegister_SPU(const unsigned int id, uint32 value) +{ + SPU->SetRegister(id, value); +} + +static RegGroupType SPURegsGroup = +{ + NULL, + Regs_SPU, + GetRegister_SPU, + SetRegister_SPU +}; + + +static RegGroupType SPUVoicesRegsGroup = +{ + NULL, + Regs_SPU_Voices, + GetRegister_SPU, + SetRegister_SPU +}; + +static RegType Regs_CPU[] = +{ + { PS_CPU::GSREG_PC, "PC", "PC", 4 }, + { PS_CPU::GSREG_PC_NEXT, "NPC", "Next PC", 4 }, + { PS_CPU::GSREG_IN_BD_SLOT, "INBD", "In Branch Delay Slot", 1 }, + { 0, "------", "", 0xFFFF }, + { PS_CPU::GSREG_GPR + 1, "at", "Assembler Temporary", 4 }, + { PS_CPU::GSREG_GPR + 2, "v0", "Return Value 0", 4 }, + { PS_CPU::GSREG_GPR + 3, "v1", "Return Value 1", 4 }, + { PS_CPU::GSREG_GPR + 4, "a0", "Argument 0", 4 }, + { PS_CPU::GSREG_GPR + 5, "a1", "Argument 1", 4 }, + { PS_CPU::GSREG_GPR + 6, "a2", "Argument 2", 4 }, + { PS_CPU::GSREG_GPR + 7, "a3", "Argument 3", 4 }, + { PS_CPU::GSREG_GPR + 8, "t0", "Temporary 0", 4 }, + { PS_CPU::GSREG_GPR + 9, "t1", "Temporary 1", 4 }, + { PS_CPU::GSREG_GPR + 10, "t2", "Temporary 2", 4 }, + { PS_CPU::GSREG_GPR + 11, "t3", "Temporary 3", 4 }, + { PS_CPU::GSREG_GPR + 12, "t4", "Temporary 4", 4 }, + { PS_CPU::GSREG_GPR + 13, "t5", "Temporary 5", 4 }, + { PS_CPU::GSREG_GPR + 14, "t6", "Temporary 6", 4 }, + { PS_CPU::GSREG_GPR + 15, "t7", "Temporary 7", 4 }, + { PS_CPU::GSREG_GPR + 16, "s0", "Subroutine Reg Var 0", 4 }, + { PS_CPU::GSREG_GPR + 17, "s1", "Subroutine Reg Var 1", 4 }, + { PS_CPU::GSREG_GPR + 18, "s2", "Subroutine Reg Var 2", 4 }, + { PS_CPU::GSREG_GPR + 19, "s3", "Subroutine Reg Var 3", 4 }, + { PS_CPU::GSREG_GPR + 20, "s4", "Subroutine Reg Var 4", 4 }, + { PS_CPU::GSREG_GPR + 21, "s5", "Subroutine Reg Var 5", 4 }, + { PS_CPU::GSREG_GPR + 22, "s6", "Subroutine Reg Var 6", 4 }, + { PS_CPU::GSREG_GPR + 23, "s7", "Subroutine Reg Var 7", 4 }, + { PS_CPU::GSREG_GPR + 24, "t8", "Temporary 8", 4 }, + { PS_CPU::GSREG_GPR + 25, "t9", "Temporary 9", 4 }, + { PS_CPU::GSREG_GPR + 26, "k0", "Interrupt/Trap Handler Reg 0", 4 }, + { PS_CPU::GSREG_GPR + 27, "k1", "Interrupt/Trap Handler Reg 1", 4 }, + { PS_CPU::GSREG_GPR + 28, "gp", "Global Pointer", 4 }, + { PS_CPU::GSREG_GPR + 29, "sp", "Stack Pointer", 4 }, + { PS_CPU::GSREG_GPR + 30, "s8", "Subroutine Reg Var 8/Frame Pointer", 4 }, + { PS_CPU::GSREG_GPR + 31, "ra", "Return Address", 4 }, + { 0, "------", "", 0xFFFF }, + + { PS_CPU::GSREG_SR, "SR", "Status Register", 4 }, + { PS_CPU::GSREG_CAUSE, "CAU","Cause Register", 4 }, + { PS_CPU::GSREG_EPC, "EPC", "EPC Register", 4 }, + { 0, "", "", 0 } +}; + +static uint32 GetRegister_CPU(const unsigned int id, char *special, const uint32 special_len) +{ + return(CPU->GetRegister(id, special, special_len)); +} + +static void SetRegister_CPU(const unsigned int id, uint32 value) +{ + CPU->SetRegister(id, value); +} + +static RegGroupType CPURegsGroup = +{ + NULL, + Regs_CPU, + GetRegister_CPU, + SetRegister_CPU +}; + + +bool DBG_Init(void) +{ + CPUHook = NULL; + BPCallB = NULL; + FoundBPoint = false; + + MDFNDBG_AddRegGroup(&CPURegsGroup); + MDFNDBG_AddRegGroup(&MiscRegsGroup); + MDFNDBG_AddRegGroup(&SPURegsGroup); + MDFNDBG_AddRegGroup(&SPUVoicesRegsGroup); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "cpu", "CPU Physical", 32); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "ram", "CPU Main Ram", 21); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "spu", "SPU RAM", 19); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "gpu", "GPU RAM", 20); + return(true); +} + + + +} + diff --git a/libmednahawk/src/psx/debug.h b/libmednahawk/src/psx/debug.h new file mode 100644 index 0000000000..9657f32d36 --- /dev/null +++ b/libmednahawk/src/psx/debug.h @@ -0,0 +1,21 @@ +#ifndef __MDFN_PSX_DEBUG_H +#define __MDFN_PSX_DEBUG_H + +#ifdef WANT_DEBUGGER + +namespace MDFN_IEN_PSX +{ + +extern DebuggerInfoStruct PSX_DBGInfo; + +bool DBG_Init(void); + +void DBG_Break(void); + +void DBG_GPUScanlineHook(unsigned scanline); + +} + +#endif + +#endif diff --git a/libmednahawk/src/psx/dis.cpp b/libmednahawk/src/psx/dis.cpp new file mode 100644 index 0000000000..7afef082ea --- /dev/null +++ b/libmednahawk/src/psx/dis.cpp @@ -0,0 +1,408 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" + +namespace MDFN_IEN_PSX +{ + +struct OpEntry +{ + uint32 mask; + uint32 value; + const char *mnemonic; + const char *format; +}; + +#define MASK_OP (0x3FU << 26) +#define MASK_FUNC (0x3FU) +#define MASK_RS (0x1FU << 21) +#define MASK_RT (0x1FU << 16) +#define MASK_RD (0x1FU << 11) +#define MASK_SA (0x1FU << 6) + +#define MK_OP(mnemonic, format, op, func, extra_mask) { MASK_OP | (op ? 0 : MASK_FUNC) | extra_mask, ((unsigned)op << 26) | func, mnemonic, format } + +#define MK_OP_REGIMM(mnemonic, regop) { MASK_OP | MASK_RT, (0x01U << 26) | (regop << 16), mnemonic, "s, p" } + + +#define MK_COPZ(z) { MASK_OP | (0x1U << 25), (0x1U << 25) | ((0x10U | z) << 26), "cop" #z, "F" } +#define MK_COP0_FUNC(mnemonic, func) { MASK_OP | (0x1U << 25) | MASK_FUNC, (0x10U << 26) | (0x1U << 25) | func, mnemonic, "" } + +#define MK_COPZ_XFER(z, mnemonic, format, xf) { MASK_OP | (0x1FU << 21), ((0x10U | z) << 26) | (xf << 21), mnemonic, format } + +#define MK_GTE(mnemonic, format, func) { MASK_OP | (0x1U << 25) | MASK_FUNC, (0x1U << 25) | (0x12U << 26) | func, mnemonic, format } + +static OpEntry ops[] = +{ + MK_OP("nop", "", 0, 0, MASK_RT | MASK_RD | MASK_SA), + + // + // + // + MK_OP("sll", "d, t, a", 0, 0, 0), + MK_OP("srl", "d, t, a", 0, 2, 0), + MK_OP("sra", "d, t, a", 0, 3, 0), + + MK_OP("sllv", "d, t, s", 0, 4, 0), + MK_OP("srlv", "d, t, s", 0, 6, 0), + MK_OP("srav", "d, t, s", 0, 7, 0), + + MK_OP("jr", "s", 0, 8, 0), + MK_OP("jalr", "d, s", 0, 9, 0), + + MK_OP("syscall", "", 0, 12, 0), // TODO + MK_OP("break", "", 0, 13, 0), // TODO + + MK_OP("mfhi", "d", 0, 16, 0), + MK_OP("mthi", "s", 0, 17, 0), + MK_OP("mflo", "d", 0, 18, 0), + MK_OP("mtlo", "s", 0, 19, 0), + + MK_OP("mult", "s, t", 0, 24, 0), + MK_OP("multu", "s, t", 0, 25, 0), + MK_OP("div", "s, t", 0, 26, 0), + MK_OP("divu", "s, t", 0, 27, 0), + + MK_OP("add", "d, s, t", 0, 32, 0), + MK_OP("addu", "d, s, t", 0, 33, 0), + MK_OP("sub", "d, s, t", 0, 34, 0), + MK_OP("subu", "d, s, t", 0, 35, 0), + MK_OP("and", "d, s, t", 0, 36, 0), + MK_OP("or", "d, s, t", 0, 37, 0), + MK_OP("xor", "d, s, t", 0, 38, 0), + MK_OP("nor", "d, s, t", 0, 39, 0), + MK_OP("slt", "d, s, t", 0, 42, 0), + MK_OP("sltu", "d, s, t", 0, 43, 0), + + MK_OP_REGIMM("bgez", 0x01), + MK_OP_REGIMM("bgezal", 0x11), + MK_OP_REGIMM("bltz", 0x00), + MK_OP_REGIMM("bltzal", 0x10), + + + MK_OP("j", "P", 2, 0, 0), + MK_OP("jal", "P", 3, 0, 0), + + MK_OP("beq", "s, t, p", 4, 0, 0), + MK_OP("bne", "s, t, p", 5, 0, 0), + MK_OP("blez", "s, p", 6, 0, 0), + MK_OP("bgtz", "s, p", 7, 0, 0), + + MK_OP("addi", "t, s, i", 8, 0, 0), + MK_OP("addiu", "t, s, i", 9, 0, 0), + MK_OP("slti", "t, s, i", 10, 0, 0), + MK_OP("sltiu", "t, s, i", 11, 0, 0), + + MK_OP("andi", "t, s, z", 12, 0, 0), + + MK_OP("ori", "t, s, z", 13, 0, 0), + MK_OP("xori", "t, s, z", 14, 0, 0), + MK_OP("lui", "t, z", 15, 0, 0), + + MK_COPZ_XFER(0, "mfc0", "t, 0", 0x00), + MK_COPZ_XFER(1, "mfc1", "t, ?", 0x00), + MK_COPZ_XFER(2, "mfc2", "t, g", 0x00), + MK_COPZ_XFER(3, "mfc3", "t, ?", 0x00), + + MK_COPZ_XFER(0, "mtc0", "t, 0", 0x04), + MK_COPZ_XFER(1, "mtc1", "t, ?", 0x04), + MK_COPZ_XFER(2, "mtc2", "t, g", 0x04), + MK_COPZ_XFER(3, "mtc3", "t, ?", 0x04), + + MK_COPZ_XFER(0, "cfc0", "t, ?", 0x02), + MK_COPZ_XFER(1, "cfc1", "t, ?", 0x02), + MK_COPZ_XFER(2, "cfc2", "t, G", 0x02), + MK_COPZ_XFER(3, "cfc3", "t, ?", 0x02), + + MK_COPZ_XFER(0, "ctc0", "t, ?", 0x06), + MK_COPZ_XFER(1, "ctc1", "t, ?", 0x06), + MK_COPZ_XFER(2, "ctc2", "t, G", 0x06), + MK_COPZ_XFER(3, "ctc3", "t, ?", 0x06), + + // COP0 stuff here + MK_COP0_FUNC("rfe", 0x10), + + MK_OP("lwc0", "?, i(s)", 0x30, 0, 0), + MK_OP("lwc1", "?, i(s)", 0x31, 0, 0), + MK_OP("lwc2", "h, i(s)", 0x32, 0, 0), + MK_OP("lwc3", "?, i(s)", 0x33, 0, 0), + + MK_OP("swc0", "?, i(s)", 0x38, 0, 0), + MK_OP("swc1", "?, i(s)", 0x39, 0, 0), + MK_OP("swc2", "h, i(s)", 0x3A, 0, 0), + MK_OP("swc3", "?, i(s)", 0x3B, 0, 0), + + MK_OP("lb", "t, i(s)", 0x20, 0, 0), + MK_OP("lh", "t, i(s)", 0x21, 0, 0), + MK_OP("lwl", "t, i(s)", 0x22, 0, 0), + MK_OP("lw", "t, i(s)", 0x23, 0, 0), + MK_OP("lbu", "t, i(s)", 0x24, 0, 0), + MK_OP("lhu", "t, i(s)", 0x25, 0, 0), + MK_OP("lwr", "t, i(s)", 0x26, 0, 0), + + MK_OP("sb", "t, i(s)", 0x28, 0, 0), + MK_OP("sh", "t, i(s)", 0x29, 0, 0), + MK_OP("swl", "t, i(s)", 0x2A, 0, 0), + MK_OP("sw", "t, i(s)", 0x2B, 0, 0), + MK_OP("swr", "t, i(s)", 0x2E, 0, 0), + + // + // GTE specific instructions + // + // sf mx v cv lm + // + MK_GTE("rtps", "#sf# #lm#", 0x00), + MK_GTE("rtps", "#sf# #lm#", 0x01), + MK_GTE("nclip", "", 0x06), + MK_GTE("op", "#sf# #lm#", 0x0C), + + MK_GTE("dpcs", "#sf# #lm#", 0x10), + MK_GTE("intpl", "#sf# #lm#", 0x11), + MK_GTE("mvmva", "#sf# #mx# #v# #cv# #lm#", 0x12), + MK_GTE("ncds", "#sf# #lm#", 0x13), + MK_GTE("cdp", "#sf# #lm#", 0x14), + MK_GTE("ncdt", "#sf# #lm#", 0x16), + MK_GTE("dcpl", "#sf# #lm#", 0x1A), + MK_GTE("nccs", "#sf# #lm#", 0x1B), + MK_GTE("cc", "#sf# #lm#", 0x1C), + MK_GTE("ncs", "#sf# #lm#", 0x1E), + MK_GTE("nct", "#sf# #lm#", 0x20), + MK_GTE("sqr", "#sf# #lm#", 0x28), + MK_GTE("dcpl", "#sf# #lm#", 0x29), + MK_GTE("dpct", "#sf# #lm#", 0x2A), + MK_GTE("avsz3", "", 0x2D), + MK_GTE("avsz4", "", 0x2E), + MK_GTE("rtpt", "#sf# #lm#", 0x30), + MK_GTE("gpf", "#sf# #lm#", 0x3D), + MK_GTE("gpl", "#sf# #lm#", 0x3E), + MK_GTE("ncct", "#sf# #lm#", 0x3F), + + + // + // + // + MK_COPZ(0), + MK_COPZ(1), + MK_COPZ(2), + MK_COPZ(3), + + { 0, 0, NULL, NULL } +}; + +std::string DisassembleMIPS(uint32 PC, uint32 instr) +{ + std::string ret = "UNKNOWN"; + unsigned int rs = (instr >> 21) & 0x1F; + unsigned int rt = (instr >> 16) & 0x1F; + unsigned int rd = (instr >> 11) & 0x1F; + unsigned int shamt = (instr >> 6) & 0x1F; + unsigned int immediate = (int32)(int16)(instr & 0xFFFF); + unsigned int immediate_ze = (instr & 0xFFFF); + unsigned int jt = instr & ((1 << 26) - 1); + + static const char *gpr_names[32] = + { + "r0", "at", "v0", "v1", "a0", "a1", "a2", "a3", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", + "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "t8", "t9", "k0", "k1", "gp", "sp", "fp", "ra" + }; + + static const char *cop0_names[32] = + { + "CPR0", "CPR1", "CPR2", "BPC", "CPR4", "BDA", "TAR", "DCIC", "CPR8", "BDAM", "CPR10", "BPCM", "SR", "CAUSE", "EPC", "PRID", + "ERREG", "CPR17", "CPR18", "CPR19", "CPR20", "CPR21", "CPR22", "CPR23", "CPR24", "CPR25", "CPR26", "CPR27", "CPR28", "CPR29", "CPR30", "CPR31" + }; + + static const char *gte_cr_names[32] = + { + "R11R12", "R13R21", "R22R23", "R31R32", "R33", "TRX", "TRY", "TRZ", "L11L12", "L13L21", "L22L23", "L31L32", "L33", "RBK", "GBK", "BBK", + "LR1LR2", "LR3LG1", "LG2LG3", "LB1LB2", "LB3", "RFC", "GFC", "BFC", "OFX", "OFY", "H", "DQA", "DQB", "ZSF3", "ZSF4", "FLAG" + }; + + static const char *gte_dr_names[32] = + { + "VXY0", "VZ0", "VXY1", "VZ1", "VXY2", "VZ2", "RGB", "OTZ", "IR0", "IR1", "IR2", "IR3", "SXY0", "SXY1", "SXY2", "SXYP", + "SZ0", "SZ1", "SZ2", "SZ3", "RGB0", "RGB1", "RGB2", "RES1", "MAC0", "MAC1", "MAC2", "MAC3", "IRGB", "ORGB", "LZCS", "LZCR" + }; + + OpEntry *op = ops; + + while(op->mnemonic) + { + if((instr & op->mask) == op->value) + { + // a = shift amount + // s = rs + // t = rt + // d = rd + // i = immediate + // z = immediate, zero-extended + // p = PC + 4 + immediate + // P = ((PC + 4) & 0xF0000000) | (26bitval << 2) + // + // 0 = rd(cop0 registers) + // c = rd(copz data registers) + // C = rd(copz control registers) + // g = rd(GTE data registers) + // G = rd(GTE control registers) + // h = rt(GTE data registers) + + char s_a[16]; + char s_i[16]; + char s_z[16]; + char s_p[16]; + char s_P[16]; + char s_c[16]; + char s_C[16]; + + snprintf(s_a, sizeof(s_a), "%d", shamt); + + if(immediate < 0) + snprintf(s_i, sizeof(s_i), "%d", immediate); + else + snprintf(s_i, sizeof(s_i), "0x%04x", (uint32)immediate); + + snprintf(s_z, sizeof(s_z), "0x%04x", immediate_ze); + + snprintf(s_p, sizeof(s_p), "0x%08x", PC + 4 + (immediate << 2)); + + snprintf(s_P, sizeof(s_P), "0x%08x", ((PC + 4) & 0xF0000000) | (jt << 2)); + + snprintf(s_c, sizeof(s_c), "CPR%d", rd); + snprintf(s_C, sizeof(s_C), "CCR%d", rd); + + ret = std::string(op->mnemonic); + ret.append(10 - ret.size(), ' '); + + for(unsigned int i = 0; i < strlen(op->format); i++) + { + switch(op->format[i]) + { + case '#': + // sf mx v cv lm + { + char as[16]; + + as[0] = 0; + if(!strncmp(&op->format[i], "#sf#", 4)) + { + i += 3; + snprintf(as, 16, "sf=%d", (int)(bool)(instr & (1 << 19))); + } + else if(!strncmp(&op->format[i], "#mx#", 4)) + { + i += 3; + snprintf(as, 16, "mx=%d", (instr >> 17) & 0x3); + } + else if(!strncmp(&op->format[i], "#v#", 3)) + { + i += 2; + snprintf(as, 16, "v=%d", (instr >> 15) & 0x3); + } + else if(!strncmp(&op->format[i], "#cv#", 4)) + { + i += 3; + snprintf(as, 16, "cv=%d", (instr >> 13) & 0x3); + } + else if(!strncmp(&op->format[i], "#lm#", 4)) + { + i += 3; + snprintf(as, 16, "lm=%d", (int)(bool)(instr & (1 << 10))); + } + ret.append(as); + } + break; + case 'F': + { + char s_F[16]; + + snprintf(s_F, 16, "0x%07x", instr & 0x1FFFFFF); + ret.append(s_F); + } + break; + + case 'h': + ret.append(gte_dr_names[rt]); + break; + + case 'g': + ret.append(gte_dr_names[rd]); + break; + + case 'G': + ret.append(gte_cr_names[rd]); + break; + + case '0': + ret.append(cop0_names[rd]); + break; + + case 'c': + ret.append(s_c); + break; + + case 'C': + ret.append(s_C); + break; + + case 'a': + ret.append(s_a); + break; + + case 'i': + ret.append(s_i); + break; + + case 'z': + ret.append(s_z); + break; + + case 'p': + ret.append(s_p); + break; + + case 'P': + ret.append(s_P); + break; + + case 's': + ret.append(gpr_names[rs]); + break; + + case 't': + ret.append(gpr_names[rt]); + break; + + case 'd': + ret.append(gpr_names[rd]); + break; + + default: + ret.append(1, op->format[i]); + break; + } + } + break; + } + op++; + } + + return(ret); +} + +} + diff --git a/libmednahawk/src/psx/dis.h b/libmednahawk/src/psx/dis.h new file mode 100644 index 0000000000..6bdc9a1082 --- /dev/null +++ b/libmednahawk/src/psx/dis.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_DIS_H +#define __MDFN_PSX_DIS_H + +namespace MDFN_IEN_PSX +{ + +std::string DisassembleMIPS(uint32 PC, uint32 instr); + +} + +#endif diff --git a/libmednahawk/src/psx/dma.cpp b/libmednahawk/src/psx/dma.cpp new file mode 100644 index 0000000000..01a396ea61 --- /dev/null +++ b/libmednahawk/src/psx/dma.cpp @@ -0,0 +1,634 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "mdec.h" +#include "cdc.h" +#include "spu.h" + +// FIXME: 0-length block count? + + +/* Notes: + + Channel 4(SPU): + Write: + Doesn't seem to work properly with CHCR=0x01000001 + Hung when CHCR=0x11000601 + + Channel 6: + DMA hangs if D28 of CHCR is 0? + D1 did not have an apparent effect. + +*/ + +enum +{ + CH_MDEC_IN = 0, + CH_MDEC_OUT = 1, + CH_GPU = 2, + CH_CDC = 3, + CH_SPU = 4, + CH_OT = 6, +}; + + +// RunChannels(128 - whatevercounter); +// +// GPU next event, std::max<128, wait_time>, or something similar, for handling FIFO. + +namespace MDFN_IEN_PSX +{ + +static int32 DMACycleCounter; + +static uint32 DMAControl; +static uint32 DMAIntControl; +static uint8 DMAIntStatus; +static bool IRQOut; + +struct Channel +{ + uint32 BaseAddr; + uint32 BlockControl; + uint32 ChanControl; + + // + // + // + uint32 CurAddr; + uint32 NextAddr; + + uint16 BlockCounter; + uint16 WordCounter; + + int32 ClockCounter; +}; + +static Channel DMACH[7]; +static pscpu_timestamp_t lastts; + + +static const char *PrettyChannelNames[7] = { "MDEC IN", "MDEC OUT", "GPU", "CDC", "SPU", "PIO", "OTC" }; + +void DMA_Init(void) +{ + +} + +void DMA_Kill(void) +{ + +} + +static INLINE void RecalcIRQOut(void) +{ + bool irqo; + + irqo = (bool)(DMAIntStatus & ((DMAIntControl >> 16) & 0x7F)); + irqo &= (DMAIntControl >> 23) & 1; + + // I think it's logical OR, not XOR/invert. Still kind of weird, maybe it actually does something more complicated? + //irqo ^= (DMAIntControl >> 15) & 1; + irqo |= (DMAIntControl >> 15) & 1; + + IRQOut = irqo; + IRQ_Assert(IRQ_DMA, irqo); +} + +void DMA_ResetTS(void) +{ + lastts = 0; +} + +void DMA_Power(void) +{ + lastts = 0; + + memset(DMACH, 0, sizeof(DMACH)); + + DMACycleCounter = 128; + + DMAControl = 0; + DMAIntControl = 0; + DMAIntStatus = 0; + RecalcIRQOut(); +} + +static void RecalcHalt(void) +{ + bool Halt = false; + + if((DMACH[0].WordCounter || (DMACH[0].ChanControl & (1 << 24))) && (DMACH[0].ChanControl & 0x200) /*&& MDEC_DMACanWrite()*/) + Halt = true; + + if((DMACH[1].WordCounter || (DMACH[1].ChanControl & (1 << 24))) && (DMACH[1].ChanControl & 0x200) && (DMACH[1].WordCounter || MDEC_DMACanRead())) + Halt = true; + + if((DMACH[2].WordCounter || (DMACH[2].ChanControl & (1 << 24))) && (DMACH[2].ChanControl & 0x200) && ((DMACH[2].ChanControl & 0x1) && (DMACH[2].WordCounter || GPU->DMACanWrite()))) + Halt = true; + + if((DMACH[3].WordCounter || (DMACH[3].ChanControl & (1 << 24))) && !(DMACH[3].ChanControl & 0x100)) + Halt = true; + + if(DMACH[6].WordCounter || (DMACH[6].ChanControl & (1 << 24))) + Halt = true; + + //printf("Halt: %d\n", Halt); + + CPU->SetHalt(Halt); +} + +template +static INLINE bool ChCan(void) +{ +#if 0 + if(ch != 3) + { + if((DMACH[3].WordCounter || (DMACH[3].ChanControl & (1 << 24))) && !(DMACH[3].ChanControl & 0x100)) + { + return(false); + } + } +#endif + + switch(ch) + { + case 0: return(true); // MDEC IN + case 1: return(MDEC_DMACanRead()); // MDEC out + case 2: + if(write_mode) + return(GPU->DMACanWrite()); + else + return(true); // GPU + case 3: return(true); // CDC + case 4: return(true); // SPU + case 5: return(true); // ?? + case 6: return(true); // OT + } + abort(); +} + +template +static INLINE void ChRW(int32 timestamp, uint32 *V) +{ + switch(ch) + { + default: + abort(); + + case CH_MDEC_IN: + MDEC_DMAWrite(*V); + break; + + case CH_MDEC_OUT: + *V = MDEC_DMARead(); + break; + + case CH_GPU: + if(write_mode) + GPU->WriteDMA(*V); + else + *V = GPU->Read(timestamp, 0); + break; + + case CH_CDC: + // 0x1f801018 affects CDC DMA timing. +#if 0 + if(DMACH[ch].ChanControl & 0x100) // For CDC DMA(at least): When this bit is set, DMA controller doesn't appear to hog the (RAM?) bus. + { + if(DMACH[ch].ChanControl & 0x00400000) // For CDC DMA(at least): When this bit is set, DMA controller appears to get even less bus time(or has a lower priority??) + { + DMACH[ch].ClockCounter -= 44 * 20 / 12; + } + else + { + DMACH[ch].ClockCounter -= 29 * 20 / 12; + } + } + else + { + DMACH[ch].ClockCounter -= 23 * 20 / 12; // (23 + 1) = 24. (Though closer to 24.5 or 24.4 on average per tests on a PS1) + } +#endif + *V = CDC->DMARead(); + break; + + case CH_SPU: + // 0x1f801014 affects SPU DMA timing. + // Wild conjecture about 0x1f801014: + // + // & 0x0000000F + // & 0x000001E0 --- Used if (& 0x20000000) == 0? + // & 0x00001000 --- Double total bus cycle time if value == 0? + // & 0x0f000000 --- (value << 1) 33MHz cycles, bus cycle extension(added to 4?)? + // & 0x20000000 --- + // + // + // TODO?: SPU DMA will "complete" much faster if there's a mismatch between the CHCR read/write mode bit and the SPU control register DMA mode. + // + // + // Investigate: SPU DMA doesn't seem to work right if the value written to 0x1F801DAA doesn't have the upper bit set to 1(0x8000) on a PS1. + + DMACH[ch].ClockCounter -= 47; // Should be closer to 69, average, but actual timing is...complicated. + if(write_mode) + SPU->WriteDMA(*V); + else + *V = SPU->ReadDMA(); + break; + + case CH_OT: + if(DMACH[ch].WordCounter == 1) + *V = 0xFFFFFF; + else + *V = (DMACH[ch].CurAddr - 4) & 0x1FFFFF; + break; + } +} + +template +static INLINE void RunChannelT(pscpu_timestamp_t timestamp, int32 clocks) +{ + //const uint32 dc = (DMAControl >> (ch * 4)) & 0xF; + + DMACH[ch].ClockCounter += clocks; + + while(DMACH[ch].ClockCounter > 0) + { + if(!DMACH[ch].WordCounter) + { + if(!(DMACH[ch].ChanControl & (1 << 24))) + { + break; + } + + if(DMACH[ch].NextAddr & 0x800000) + { + //if(ch == 2) + // PSX_WARNING("[DMA] LL Channel 2 ended normally: %d\n", GPU->GetScanlineNum()); + DMACH[ch].ChanControl &= ~(0x11 << 24); + if(DMAIntControl & (1 << (16 + ch))) + { + DMAIntStatus |= 1 << ch; + RecalcIRQOut(); + } + break; + } + + if(!ChCan()) + break; + + if((DMACH[ch].ChanControl & (1 << 10)) && write_mode) + { + uint32 header; + + DMACH[ch].CurAddr = DMACH[ch].NextAddr & 0x1FFFFC; + header = MainRAM.ReadU32(DMACH[ch].CurAddr); + DMACH[ch].CurAddr = (DMACH[ch].CurAddr + 4) & 0x1FFFFF; + + DMACH[ch].WordCounter = header >> 24; + DMACH[ch].NextAddr = header & 0xFFFFFF; + + if(DMACH[ch].WordCounter > 0x10) + printf("What the lala? 0x%02x @ 0x%08x\n", DMACH[ch].WordCounter, DMACH[ch].CurAddr - 4); + + if(DMACH[ch].WordCounter) + DMACH[ch].ClockCounter -= 15; + else + DMACH[ch].ClockCounter -= 10; + + continue; + } + else + { + DMACH[ch].CurAddr = DMACH[ch].NextAddr & 0x1FFFFC; + DMACH[ch].WordCounter = DMACH[ch].BlockControl & 0xFFFF; + DMACH[ch].BlockCounter--; + + if(!DMACH[ch].BlockCounter || ch == 6 || ch == 3) + DMACH[ch].NextAddr = 0xFFFFFF; + else + DMACH[ch].NextAddr = (DMACH[ch].CurAddr + ((DMACH[ch].BlockControl & 0xFFFF) << 2)) & 0x1FFFFF; + } + } + + if(ch != 2 && ch != 1) + { + if(!ChCan()) + break; + } + + + { + uint32 vtmp; + + if(write_mode) + vtmp = MainRAM.ReadU32(DMACH[ch].CurAddr); + + ChRW(timestamp, &vtmp); + + if(!write_mode) + MainRAM.WriteU32(DMACH[ch].CurAddr, vtmp); + } + + if(ch == 6) + DMACH[ch].CurAddr = (DMACH[ch].CurAddr - 4) & 0x1FFFFF; + else + DMACH[ch].CurAddr = (DMACH[ch].CurAddr + 4) & 0x1FFFFF; + + DMACH[ch].WordCounter--; + DMACH[ch].ClockCounter--; + } + + + if(DMACH[ch].ClockCounter > 0) + DMACH[ch].ClockCounter = 0; +} + +static INLINE void RunChannel(pscpu_timestamp_t timestamp, int32 clocks, int ch) +{ + switch(ch) + { + default: abort(); + + case 0: + RunChannelT<0, true>(timestamp, clocks); + break; + + case 1: + RunChannelT<1, false>(timestamp, clocks); + break; + + case 2: + if(DMACH[2].ChanControl & 0x1) + RunChannelT<2, true>(timestamp, clocks); + else + RunChannelT<2, false>(timestamp, clocks); + break; + + case 3: + RunChannelT<3, false>(timestamp, clocks); + break; + + case 4: + if(DMACH[4].ChanControl & 0x1) + RunChannelT<4, true>(timestamp, clocks); + else + RunChannelT<4, false>(timestamp, clocks); + break; + + case 6: + RunChannelT<6, false>(timestamp, clocks); + break; + } +} + +static INLINE int32 CalcNextEvent(int32 next_event) +{ + if(DMACycleCounter < next_event) + next_event = DMACycleCounter; + + return(next_event); +} + +pscpu_timestamp_t DMA_Update(const pscpu_timestamp_t timestamp) +{ +// uint32 dc = (DMAControl >> (ch * 4)) & 0xF; + int32 clocks = timestamp - lastts; + lastts = timestamp; + + GPU->Update(timestamp); + MDEC_Run(clocks); + + RunChannel(timestamp, clocks, 0); + RunChannel(timestamp, clocks, 1); + RunChannel(timestamp, clocks, 2); + RunChannel(timestamp, clocks, 3); + RunChannel(timestamp, clocks, 4); + RunChannel(timestamp, clocks, 6); + + DMACycleCounter -= clocks; + while(DMACycleCounter <= 0) + DMACycleCounter += 128; + + RecalcHalt(); + + return(timestamp + CalcNextEvent(0x10000000)); +} + +void DMA_Write(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + int ch = (A & 0x7F) >> 4; + + //if(ch == 2 || ch == 7) + //PSX_WARNING("[DMA] Write: %08x %08x, DMAIntStatus=%08x", A, V, DMAIntStatus); + + // FIXME if we ever have "accurate" bus emulation + V <<= (A & 3) * 8; + + DMA_Update(timestamp); + + if(ch == 7) + { + switch(A & 0xC) + { + case 0x0: //fprintf(stderr, "Global DMA control: 0x%08x\n", V); + DMAControl = V; + RecalcHalt(); + break; + + case 0x4: + //for(int x = 0; x < 7; x++) + //{ + // if(DMACH[x].WordCounter || (DMACH[x].ChanControl & (1 << 24))) + // { + // fprintf(stderr, "Write DMAIntControl while channel %d active: 0x%08x\n", x, V); + // } + //} + DMAIntControl = V & 0x00ff803f; + DMAIntStatus &= ~(V >> 24); + + //if(DMAIntStatus ^ (DMAIntStatus & (V >> 16))) + // fprintf(stderr, "DMAINT Fudge: %02x\n", DMAIntStatus ^ (DMAIntStatus & (V >> 16))); + DMAIntStatus &= (V >> 16); // THIS IS ALMOST CERTAINLY WRONG AND A HACK. Remove when CDC emulation is better. + RecalcIRQOut(); + break; + + default: PSX_WARNING("[DMA] Unknown write: %08x %08x", A, V); + assert(0); + break; + } + return; + } + switch(A & 0xC) + { + case 0x0: DMACH[ch].BaseAddr = V & 0xFFFFFF; + break; + + case 0x4: DMACH[ch].BlockControl = V; + break; + + case 0xC: + case 0x8: + { + uint32 OldCC = DMACH[ch].ChanControl; + + // + // Kludge for DMA timing granularity and other issues. Needs to occur before setting all bits of ChanControl to the new value, to accommodate the + // case of a game cancelling DMA and changing the type of DMA(read/write, etc.) at the same time. + // + if((DMACH[ch].ChanControl & (1 << 24)) && !(V & (1 << 24))) + { + DMACH[ch].ChanControl &= ~(1 << 24); // Clear bit before RunChannel(), so it will only finish the block it's on at most. + RunChannel(timestamp, 128 * 16, ch); + DMACH[ch].BlockCounter = 0; + DMACH[ch].WordCounter = 0; + +#if 0 // TODO(maybe, need to work out worst-case performance for abnormally/brokenly large block sizes) + DMACH[ch].ClockCounter = (1 << 30); + RunChannel(timestamp, 1, ch); + DMACH[ch].ClockCounter = 0; +#endif + + if(ch == 2) + { + GPU->AbortDMA(); + } + + PSX_WARNING("[DMA] Forced stop for channel %d -- scanline=%d", ch, GPU->GetScanlineNum()); + //MDFN_DispMessage("[DMA] Forced stop for channel %d", ch); + } + + if(ch == 6) + DMACH[ch].ChanControl = V & 0x51000002; // Not 100% sure, but close. + else + DMACH[ch].ChanControl = V & 0x71770703; + + if(!(OldCC & (1 << 24)) && (V & (1 << 24))) + { + //if(ch == 2) + //if(ch == 4) + //PSX_WARNING("[DMA] Started DMA for channel=%d --- CHCR=0x%08x --- BCR=0x%08x --- scanline=%d", ch, DMACH[ch].ChanControl, DMACH[ch].BlockControl, GPU->GetScanlineNum()); + + DMACH[ch].ClockCounter = 0; + DMACH[ch].NextAddr = DMACH[ch].BaseAddr & 0x1FFFFC; + DMACH[ch].BlockCounter = DMACH[ch].BlockControl >> 16; + + // + // Viewpoint starts a short MEM->GPU LL DMA and apparently has race conditions that can cause a crash if it doesn't finish almost immediately( + // or at least very quickly, which the current DMA granularity has issues with, so run the channel ahead a bit to take of this issue and potentially + // games with similar issues). + // + // Though, Viewpoint isn't exactly a good game, so maybe we shouldn't bother? ;) + // + RunChannel(timestamp, 64, ch); //std::max(128 - DMACycleCounter, 1)); //64); //1); //128 - DMACycleCounter); + } + + RecalcHalt(); + } + break; + } + PSX_SetEventNT(PSX_EVENT_DMA, timestamp + CalcNextEvent(0x10000000)); +} + +uint32 DMA_Read(const pscpu_timestamp_t timestamp, uint32 A) +{ + int ch = (A & 0x7F) >> 4; + uint32 ret = 0; + + if(ch == 7) + { + switch(A & 0xC) + { + default: PSX_WARNING("[DMA] Unknown read: %08x", A); + assert(0); + break; + + case 0x0: ret = DMAControl; + break; + + case 0x4: ret = DMAIntControl | (DMAIntStatus << 24) | (IRQOut << 31); + break; + } + } + else switch(A & 0xC) + { + case 0x0: ret = DMACH[ch].BaseAddr; + break; + + case 0x4: ret = DMACH[ch].BlockControl; + break; + + case 0xC: + case 0x8: ret = DMACH[ch].ChanControl; + break; + + } + + ret >>= (A & 3) * 8; + + //PSX_WARNING("[DMA] Read: %08x %08x", A, ret); + + return(ret); +} + + +int DMA_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(DMACycleCounter), + SFVAR(DMAControl), + SFVAR(DMAIntControl), + SFVAR(DMAIntStatus), + SFVAR(IRQOut), + +#define SFDMACH(n) SFVARN(DMACH[n].BaseAddr, #n "BaseAddr"), \ + SFVARN(DMACH[n].BlockControl, #n "BlockControl"), \ + SFVARN(DMACH[n].ChanControl, #n "ChanControl"), \ + SFVARN(DMACH[n].CurAddr, #n "CurAddr"), \ + SFVARN(DMACH[n].NextAddr, #n "NextAddr"), \ + SFVARN(DMACH[n].BlockCounter, #n "BlockCounter"), \ + SFVARN(DMACH[n].WordCounter, #n "WordCounter"), \ + SFVARN(DMACH[n].ClockCounter, #n "ClockCounter") + + SFDMACH(0), + SFDMACH(1), + SFDMACH(2), + SFDMACH(3), + SFDMACH(4), + SFDMACH(5), + SFDMACH(6), + +#undef SFDMACH + + SFVAR(lastts), + + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "DMA"); + + if(load) + { + + } + + return(ret); +} + + +} diff --git a/libmednahawk/src/psx/dma.h b/libmednahawk/src/psx/dma.h new file mode 100644 index 0000000000..e3be1ea57d --- /dev/null +++ b/libmednahawk/src/psx/dma.h @@ -0,0 +1,24 @@ +#ifndef __MDFN_PSX_DMA_H +#define __MDFN_PSX_DMA_H + +namespace MDFN_IEN_PSX +{ + +bool DMA_GPUWriteActive(void); + +pscpu_timestamp_t DMA_Update(const pscpu_timestamp_t timestamp); +void DMA_Write(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); +uint32 DMA_Read(const pscpu_timestamp_t timestamp, uint32 A); + +void DMA_ResetTS(void); + +void DMA_Power(void); + +void DMA_Init(void); +void DMA_Kill(void); + +int DMA_StateAction(StateMem *sm, int load, int data_only); + +} + +#endif diff --git a/libmednahawk/src/psx/frontio.cpp b/libmednahawk/src/psx/frontio.cpp new file mode 100644 index 0000000000..723b6ac5cf --- /dev/null +++ b/libmednahawk/src/psx/frontio.cpp @@ -0,0 +1,918 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "frontio.h" +#include "../FileWrapper.h" + +#define PSX_CLOCK 33868800 + +#include "input/gamepad.h" +#include "input/dualanalog.h" +#include "input/dualshock.h" +#include "input/mouse.h" +#include "input/negcon.h" +#include "input/guncon.h" +#include "input/justifier.h" + +#include "input/memcard.h" + +#include "input/multitap.h" + +extern bool dotrace; + +#define PSX_FIODBGINFO(format, ...) { /* printf(format " -- timestamp=%d -- PAD temp\n", ## __VA_ARGS__, timestamp); */ } + +namespace MDFN_IEN_PSX +{ + +InputDevice::InputDevice() +{ +} + +InputDevice::~InputDevice() +{ +} + +void InputDevice::Power(void) +{ +} + +void InputDevice::Update(const pscpu_timestamp_t timestamp) +{ + +} + +void InputDevice::ResetTS(void) +{ + +} + +void InputDevice::SetAMCT(bool) +{ + +} + +void InputDevice::SetCrosshairsColor(uint32 color) +{ + +} + +bool InputDevice::RequireNoFrameskip(void) +{ + return(false); +} + +pscpu_timestamp_t InputDevice::GPULineHook(const pscpu_timestamp_t timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock) +{ + return(PSX_EVENT_MAXTS); +} + + +void InputDevice::UpdateInput(const void *data) +{ +} + + +void InputDevice::SetDTR(bool new_dtr) +{ + +} + +bool InputDevice::GetDSR(void) +{ + return(0); +} + +bool InputDevice::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + dsr_pulse_delay = 0; + + return(1); +} + +uint32 InputDevice::GetNVSize(void) +{ + return(0); +} + +void InputDevice::ReadNV(uint8 *buffer, uint32 offset, uint32 count) +{ + +} + +void InputDevice::WriteNV(const uint8 *buffer, uint32 offset, uint32 count) +{ + +} + +uint64 InputDevice::GetNVDirtyCount(void) +{ + return(0); +} + +void InputDevice::ResetNVDirtyCount(void) +{ + +} + +static INLINE unsigned EP_to_MP(unsigned ep) +{ +#if 0 + return((bool)(ep & 0x4)); +#else + return(ep == 1 || ep >= 5); +#endif +} + +static INLINE unsigned EP_to_SP(unsigned ep) +{ +#if 0 + return(ep & 0x3); +#else + if(ep < 2) + return(0); + else if(ep < 5) + return(ep - 2 + 1); + else + return(ep - 5 + 1); +#endif +} + +void FrontIO::MapDevicesToPorts(void) +{ + for(unsigned i = 0; i < 2; i++) + { + if(emulate_multitap[i]) + { + Ports[i] = DevicesTap[i]; + MCPorts[i] = DummyDevice; + } + else + { + Ports[i] = Devices[i]; + MCPorts[i] = emulate_memcards[i] ? DevicesMC[i] : DummyDevice; + } + } + + for(unsigned i = 0; i < 8; i++) + { + unsigned mp = EP_to_MP(i); + + if(emulate_multitap[mp]) + DevicesTap[mp]->SetSubDevice(EP_to_SP(i), Devices[i], emulate_memcards[i] ? DevicesMC[i] : DummyDevice); + else + DevicesTap[mp]->SetSubDevice(EP_to_SP(i), DummyDevice, DummyDevice); + } +} + +FrontIO::FrontIO(bool emulate_memcards_[8], bool emulate_multitap_[2]) +{ + memcpy(emulate_memcards, emulate_memcards_, sizeof(emulate_memcards)); + memcpy(emulate_multitap, emulate_multitap_, sizeof(emulate_multitap)); + + DummyDevice = new InputDevice(); + + for(unsigned i = 0; i < 8; i++) + { + DeviceData[i] = NULL; + Devices[i] = new InputDevice(); + DevicesMC[i] = Device_Memcard_Create(); + chair_colors[i] = 1 << 24; + Devices[i]->SetCrosshairsColor(chair_colors[i]); + } + + for(unsigned i = 0; i < 2; i++) + { + DevicesTap[i] = new InputDevice_Multitap(); + } + + MapDevicesToPorts(); +} + +void FrontIO::SetAMCT(bool enabled) +{ + for(unsigned i = 0; i < 8; i++) + { + Devices[i]->SetAMCT(enabled); + } + amct_enabled = enabled; +} + +void FrontIO::SetCrosshairsColor(unsigned port, uint32 color) +{ + assert(port >= 0 && port < 8); + + chair_colors[port] = color; + Devices[port]->SetCrosshairsColor(color); +} + +FrontIO::~FrontIO() +{ + for(int i = 0; i < 8; i++) + { + if(Devices[i]) + { + delete Devices[i]; + Devices[i] = NULL; + } + if(DevicesMC[i]) + { + delete DevicesMC[i]; + DevicesMC[i] = NULL; + } + } + + for(unsigned i = 0; i < 2; i++) + { + if(DevicesTap[i]) + { + delete DevicesTap[i]; + DevicesTap[i] = NULL; + } + } + + if(DummyDevice) + { + delete DummyDevice; + DummyDevice = NULL; + } +} + +pscpu_timestamp_t FrontIO::CalcNextEventTS(pscpu_timestamp_t timestamp, int32 next_event) +{ + pscpu_timestamp_t ret; + + if(ClockDivider > 0 && ClockDivider < next_event) + next_event = ClockDivider; + + for(int i = 0; i < 4; i++) + if(dsr_pulse_delay[i] > 0 && next_event > dsr_pulse_delay[i]) + next_event = dsr_pulse_delay[i]; + + ret = timestamp + next_event; + + if(irq10_pulse_ts[0] < ret) + ret = irq10_pulse_ts[0]; + + if(irq10_pulse_ts[1] < ret) + ret = irq10_pulse_ts[1]; + + return(ret); +} + +void FrontIO::CheckStartStopPending(pscpu_timestamp_t timestamp, bool skip_event_set) +{ + //const bool prior_ReceiveInProgress = ReceiveInProgress; + //const bool prior_TransmitInProgress = TransmitInProgress; + bool trigger_condition = false; + + trigger_condition = (ReceivePending && (Control & 0x4)) || (TransmitPending && (Control & 0x1)); + + if(trigger_condition) + { + if(ReceivePending) + { + ReceivePending = false; + ReceiveInProgress = true; + ReceiveBufferAvail = false; + ReceiveBuffer = 0; + ReceiveBitCounter = 0; + } + + if(TransmitPending) + { + TransmitPending = false; + TransmitInProgress = true; + TransmitBitCounter = 0; + } + + ClockDivider = 0x44; + } + + if(!(Control & 0x5)) + { + ReceiveInProgress = false; + TransmitInProgress = false; + } + + if(!ReceiveInProgress && !TransmitInProgress) + ClockDivider = 0; + + if(!(skip_event_set)) + PSX_SetEventNT(PSX_EVENT_FIO, CalcNextEventTS(timestamp, 0x10000000)); +} + +// DSR IRQ bit setting appears(from indirect tests on real PS1) to be level-sensitive, not edge-sensitive +INLINE void FrontIO::DoDSRIRQ(void) +{ + if(Control & 0x1000) + { + PSX_FIODBGINFO("[DSR] IRQ"); + istatus = true; + IRQ_Assert(IRQ_SIO, true); + } +} + + +void FrontIO::Write(pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + assert(!(A & 0x1)); + + Update(timestamp); + + switch(A & 0xF) + { + case 0x0: + TransmitBuffer = V; + TransmitPending = true; + TransmitInProgress = false; + break; + + case 0x8: + Mode = V & 0x013F; + break; + + case 0xa: + if(ClockDivider > 0 && ((V & 0x2000) != (Control & 0x2000)) && ((Control & 0x2) == (V & 0x2)) ) + fprintf(stderr, "FIO device selection changed during comm %04x->%04x", Control, V); + + //printf("Control: %d, %04x\n", timestamp, V); + Control = V & 0x3F2F; + + if(V & 0x10) + { + istatus = false; + IRQ_Assert(IRQ_SIO, false); + } + + if(V & 0x40) // Reset + { + istatus = false; + IRQ_Assert(IRQ_SIO, false); + + ClockDivider = 0; + ReceivePending = false; + TransmitPending = false; + + ReceiveInProgress = false; + TransmitInProgress = false; + + ReceiveBufferAvail = false; + + TransmitBuffer = 0; + ReceiveBuffer = 0; + + ReceiveBitCounter = 0; + TransmitBitCounter = 0; + + Mode = 0; + Control = 0; + Baudrate = 0; + } + + Ports[0]->SetDTR((Control & 0x2) && !(Control & 0x2000)); + MCPorts[0]->SetDTR((Control & 0x2) && !(Control & 0x2000)); + Ports[1]->SetDTR((Control & 0x2) && (Control & 0x2000)); + MCPorts[1]->SetDTR((Control & 0x2) && (Control & 0x2000)); + +#if 1 +if(!((Control & 0x2) && !(Control & 0x2000))) +{ + dsr_pulse_delay[0] = 0; + dsr_pulse_delay[2] = 0; + dsr_active_until_ts[0] = -1; + dsr_active_until_ts[2] = -1; +} + +if(!((Control & 0x2) && (Control & 0x2000))) +{ + dsr_pulse_delay[1] = 0; + dsr_pulse_delay[3] = 0; + dsr_active_until_ts[1] = -1; + dsr_active_until_ts[3] = -1; +} + +#endif + // TODO: Uncomment out in the future once our CPU emulation is a bit more accurate with timing, to prevent causing problems with games + // that may clear the IRQ in an unsafe pattern that only works because its execution was slow enough to allow DSR to go inactive. (Whether or not + // such games even exist though is unknown!) + //if(timestamp < dsr_active_until_ts[0] || timestamp < dsr_active_until_ts[1] || timestamp < dsr_active_until_ts[2] || timestamp < dsr_active_until_ts[3]) + // DoDSRIRQ(); + + break; + + case 0xe: + Baudrate = V; + //MDFN_DispMessage("%02x\n", V); + break; + } + + CheckStartStopPending(timestamp, false); +} + + +uint32 FrontIO::Read(pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 ret = 0; + fflush(stderr); + + assert(!(A & 0x1)); + + Update(timestamp); + + switch(A & 0xF) + { + case 0x0: + ret = ReceiveBuffer | (ReceiveBuffer << 8) | (ReceiveBuffer << 16) | (ReceiveBuffer << 24); + ReceiveBufferAvail = false; + ReceivePending = true; + ReceiveInProgress = false; + CheckStartStopPending(timestamp, false); + break; + + case 0x4: + ret = 0; + + if(!TransmitPending && !TransmitInProgress) + ret |= 0x1; + + if(ReceiveBufferAvail) + ret |= 0x2; + + if(timestamp < dsr_active_until_ts[0] || timestamp < dsr_active_until_ts[1] || timestamp < dsr_active_until_ts[2] || timestamp < dsr_active_until_ts[3]) + ret |= 0x80; + + if(istatus) + ret |= 0x200; + + break; + + case 0x8: + ret = Mode; + break; + + case 0xa: + ret = Control; + break; + + case 0xe: + ret = Baudrate; + break; + } + + if((A & 0xF) != 0x4) + PSX_FIODBGINFO("[FIO] Read: %08x %08x", A, ret); + + return(ret); +} + +pscpu_timestamp_t FrontIO::Update(pscpu_timestamp_t timestamp) +{ + int32 clocks = timestamp - lastts; + bool need_start_stop_check = false; + + for(int i = 0; i < 4; i++) + if(dsr_pulse_delay[i] > 0) + { + dsr_pulse_delay[i] -= clocks; + if(dsr_pulse_delay[i] <= 0) + { + dsr_active_until_ts[i] = timestamp + 32 + dsr_pulse_delay[i]; + DoDSRIRQ(); + } + } + + for(int i = 0; i < 2; i++) + { + if(timestamp >= irq10_pulse_ts[i]) + { + //printf("Yay: %d %u\n", i, timestamp); + irq10_pulse_ts[i] = PSX_EVENT_MAXTS; + IRQ_Assert(IRQ_PIO, true); + IRQ_Assert(IRQ_PIO, false); + } + } + + if(ClockDivider > 0) + { + ClockDivider -= clocks; + + while(ClockDivider <= 0) + { + if(ReceiveInProgress || TransmitInProgress) + { + bool rxd = 0, txd = 0; + const uint32 BCMask = 0x07; + + if(TransmitInProgress) + { + txd = (TransmitBuffer >> TransmitBitCounter) & 1; + TransmitBitCounter = (TransmitBitCounter + 1) & BCMask; + if(!TransmitBitCounter) + { + need_start_stop_check = true; + PSX_FIODBGINFO("[FIO] Data transmitted: %08x", TransmitBuffer); + TransmitInProgress = false; + + if(Control & 0x400) + { + istatus = true; + IRQ_Assert(IRQ_SIO, true); + } + } + } + + rxd = Ports[0]->Clock(txd, dsr_pulse_delay[0]) & Ports[1]->Clock(txd, dsr_pulse_delay[1]) & + MCPorts[0]->Clock(txd, dsr_pulse_delay[2]) & MCPorts[1]->Clock(txd, dsr_pulse_delay[3]); + + if(ReceiveInProgress) + { + ReceiveBuffer &= ~(1 << ReceiveBitCounter); + ReceiveBuffer |= rxd << ReceiveBitCounter; + + ReceiveBitCounter = (ReceiveBitCounter + 1) & BCMask; + + if(!ReceiveBitCounter) + { + need_start_stop_check = true; + PSX_FIODBGINFO("[FIO] Data received: %08x", ReceiveBuffer); + + ReceiveInProgress = false; + ReceiveBufferAvail = true; + + if(Control & 0x800) + { + istatus = true; + IRQ_Assert(IRQ_SIO, true); + } + } + } + ClockDivider += 0x44; //88; //99; + } + else + break; + } + } + + + lastts = timestamp; + + + if(need_start_stop_check) + { + CheckStartStopPending(timestamp, true); + } + + return(CalcNextEventTS(timestamp, 0x10000000)); +} + +void FrontIO::ResetTS(void) +{ + for(int i = 0; i < 8; i++) + { + Devices[i]->Update(lastts); // Maybe eventually call Update() from FrontIO::Update() and remove this(but would hurt speed)? + Devices[i]->ResetTS(); + + DevicesMC[i]->Update(lastts); // Maybe eventually call Update() from FrontIO::Update() and remove this(but would hurt speed)? + DevicesMC[i]->ResetTS(); + } + + for(int i = 0; i < 2; i++) + { + DevicesTap[i]->Update(lastts); + DevicesTap[i]->ResetTS(); + } + + for(int i = 0; i < 2; i++) + { + if(irq10_pulse_ts[i] != PSX_EVENT_MAXTS) + irq10_pulse_ts[i] -= lastts; + } + + for(int i = 0; i < 4; i++) + { + if(dsr_active_until_ts[i] >= 0) + { + dsr_active_until_ts[i] -= lastts; + //printf("SPOOONY: %d %d\n", i, dsr_active_until_ts[i]); + } + } + lastts = 0; +} + + +void FrontIO::Power(void) +{ + for(int i = 0; i < 4; i++) + { + dsr_pulse_delay[i] = 0; + dsr_active_until_ts[i] = -1; + } + + for(int i = 0; i < 2; i++) + { + irq10_pulse_ts[i] = PSX_EVENT_MAXTS; + } + + lastts = 0; + + // + // + + ClockDivider = 0; + + ReceivePending = false; + TransmitPending = false; + + ReceiveInProgress = false; + TransmitInProgress = false; + + ReceiveBufferAvail = false; + + TransmitBuffer = 0; + ReceiveBuffer = 0; + + ReceiveBitCounter = 0; + TransmitBitCounter = 0; + + Mode = 0; + Control = 0; + Baudrate = 0; + + for(int i = 0; i < 8; i++) + { + Devices[i]->Power(); + DevicesMC[i]->Power(); + } + + istatus = false; +} + +void FrontIO::UpdateInput(void) +{ + for(int i = 0; i < 8; i++) + Devices[i]->UpdateInput(DeviceData[i]); +} + +void FrontIO::SetInput(unsigned int port, const char *type, void *ptr) +{ + delete Devices[port]; + Devices[port] = NULL; + + if(port < 2) + irq10_pulse_ts[port] = PSX_EVENT_MAXTS; + + if(!strcmp(type, "gamepad") || !strcmp(type, "dancepad")) + Devices[port] = Device_Gamepad_Create(); + else if(!strcmp(type, "dualanalog")) + Devices[port] = Device_DualAnalog_Create(false); + else if(!strcmp(type, "analogjoy")) + Devices[port] = Device_DualAnalog_Create(true); + else if(!strcmp(type, "dualshock")) + { + char name[256]; + trio_snprintf(name, 256, _("DualShock on port %u"), port + 1); + Devices[port] = Device_DualShock_Create(std::string(name)); + } + else if(!strcmp(type, "mouse")) + Devices[port] = Device_Mouse_Create(); + else if(!strcmp(type, "negcon")) + Devices[port] = Device_neGcon_Create(); + else if(!strcmp(type, "guncon")) + Devices[port] = Device_GunCon_Create(); + else if(!strcmp(type, "justifier")) + Devices[port] = Device_Justifier_Create(); + else + Devices[port] = new InputDevice(); + + Devices[port]->SetAMCT(amct_enabled); + Devices[port]->SetCrosshairsColor(chair_colors[port]); + DeviceData[port] = ptr; + + MapDevicesToPorts(); +} + +uint64 FrontIO::GetMemcardDirtyCount(unsigned int which) +{ + assert(which < 8); + + return(DevicesMC[which]->GetNVDirtyCount()); +} + +void FrontIO::LoadMemcard(unsigned int which, const char *path) +{ + assert(which < 8); + + try + { + if(DevicesMC[which]->GetNVSize()) + { + FileWrapper mf(path, FileWrapper::MODE_READ); + std::vector tmpbuf; + + tmpbuf.resize(DevicesMC[which]->GetNVSize()); + + if(mf.size() != (int64)tmpbuf.size()) + throw(MDFN_Error(0, _("Memory card file \"%s\" is an incorrect size(%d bytes). The correct size is %d bytes."), path, (int)mf.size(), (int)tmpbuf.size())); + + mf.read(&tmpbuf[0], tmpbuf.size()); + + DevicesMC[which]->WriteNV(&tmpbuf[0], 0, tmpbuf.size()); + DevicesMC[which]->ResetNVDirtyCount(); // There's no need to rewrite the file if it's the same data. + } + } + catch(MDFN_Error &e) + { + if(e.GetErrno() != ENOENT) + throw(e); + } +} + +void FrontIO::SaveMemcard(unsigned int which, const char *path) +{ + assert(which < 8); + + if(DevicesMC[which]->GetNVSize() && DevicesMC[which]->GetNVDirtyCount()) + { + FileWrapper mf(path, FileWrapper::MODE_WRITE); // TODO: MODE_WRITE_ATOMIC_OVERWRITE + std::vector tmpbuf; + + tmpbuf.resize(DevicesMC[which]->GetNVSize()); + + DevicesMC[which]->ReadNV(&tmpbuf[0], 0, tmpbuf.size()); + mf.write(&tmpbuf[0], tmpbuf.size()); + + mf.close(); // Call before resetting the NV dirty count! + + DevicesMC[which]->ResetNVDirtyCount(); + } +} + +bool FrontIO::RequireNoFrameskip(void) +{ + for(unsigned i = 0; i < 8; i++) + if(Devices[i]->RequireNoFrameskip()) + return(true); + + return(false); +} + +void FrontIO::GPULineHook(const pscpu_timestamp_t timestamp, const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock) +{ + Update(timestamp); + + for(unsigned i = 0; i < 8; i++) + { + pscpu_timestamp_t plts = Devices[i]->GPULineHook(line_timestamp, vsync, pixels, format, width, pix_clock_offset, pix_clock); + + if(i < 2) + { + irq10_pulse_ts[i] = plts; + + if(irq10_pulse_ts[i] <= timestamp) + { + irq10_pulse_ts[i] = PSX_EVENT_MAXTS; + IRQ_Assert(IRQ_PIO, true); + IRQ_Assert(IRQ_PIO, false); + } + } + } + + PSX_SetEventNT(PSX_EVENT_FIO, CalcNextEventTS(timestamp, 0x10000000)); +} + +static InputDeviceInfoStruct InputDeviceInfoPSXPort[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad(SCPH-1080) + { + "gamepad", + "Digital Gamepad", + "PlayStation digital gamepad; SCPH-1080.", + NULL, + sizeof(Device_Gamepad_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_Gamepad_IDII, + }, + + // Dual Shock Gamepad(SCPH-1200) + { + "dualshock", + "DualShock", + "DualShock gamepad; SCPH-1200. Emulation in Mednafen includes the analog mode toggle button.", + NULL, + sizeof(Device_DualShock_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_DualShock_IDII, + }, + + // Dual Analog Gamepad(SCPH-1180), forced to analog mode. + { + "dualanalog", + "Dual Analog", + "Dual Analog gamepad; SCPH-1180. It is the predecessor/prototype to the more advanced DualShock. Emulated in Mednafen as forced to analog mode, and without rumble.", + NULL, + sizeof(Device_DualAnalog_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_DualAnalog_IDII, + }, + + + // Analog joystick(SCPH-1110), forced to analog mode - emulated through a tweak to dual analog gamepad emulation. + { + "analogjoy", + "Analog Joystick", + "Flight-game-oriented dual-joystick controller; SCPH-1110. Emulated in Mednafen as forced to analog mode.", + NULL, + sizeof(Device_AnalogJoy_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_AnalogJoy_IDII, + }, + + { + "mouse", + "Mouse", + NULL, + NULL, + sizeof(Device_Mouse_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_Mouse_IDII, + }, + + { + "negcon", + "neGcon", + "Namco's unconventional twisty racing-game-oriented gamepad; NPC-101.", + NULL, + sizeof(Device_neGcon_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_neGcon_IDII, + }, + + { + "guncon", + "GunCon", + "Namco's light gun; NPC-103.", + NULL, + sizeof(Device_GunCon_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_GunCon_IDII, + }, + + { + "justifier", + "Konami Justifier", + "Konami's light gun; SLUH-00017. Rumored to be wrought of the coagulated rage of all who tried to shoot The Dog. If the game you want to play supports the \"GunCon\", you should use that instead. NOTE: Currently does not work properly when on any of ports 1B-1D and 2B-2D.", + NULL, + sizeof(Device_Justifier_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_Justifier_IDII, + }, + + { + "dancepad", + "Dance Pad", + "Dingo Dingo Rodeo!", + NULL, + sizeof(Device_Dancepad_IDII) / sizeof(InputDeviceInputInfoStruct), + Device_Dancepad_IDII, + }, + +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "port1", "Port 1/1A", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port2", "Port 2/2A", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port3", "Port 1B", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port4", "Port 1C", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port5", "Port 1D", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port6", "Port 2B", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port7", "Port 2C", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, + { "port8", "Port 2D", sizeof(InputDeviceInfoPSXPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoPSXPort, "gamepad" }, +}; + +InputInfoStruct FIO_InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + + +} diff --git a/libmednahawk/src/psx/frontio.h b/libmednahawk/src/psx/frontio.h new file mode 100644 index 0000000000..b44cc9c5e9 --- /dev/null +++ b/libmednahawk/src/psx/frontio.h @@ -0,0 +1,142 @@ +#ifndef __MDFN_PSX_FRONTIO_H +#define __MDFN_PSX_FRONTIO_H + +namespace MDFN_IEN_PSX +{ + +class InputDevice_Multitap; + +class InputDevice +{ + public: + + InputDevice(); + virtual ~InputDevice(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + + virtual bool RequireNoFrameskip(void); + virtual pscpu_timestamp_t GPULineHook(const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock); + + virtual void Update(const pscpu_timestamp_t timestamp); // Partially-implemented, don't rely on for timing any more fine-grained than a video frame for now. + virtual void ResetTS(void); + + // + // + // + virtual void SetAMCT(bool enabled); + virtual void SetCrosshairsColor(uint32 color); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); // Currently unused. + + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + // + // + virtual uint32 GetNVSize(void); + virtual void ReadNV(uint8 *buffer, uint32 offset, uint32 count); + virtual void WriteNV(const uint8 *buffer, uint32 offset, uint32 count); + + // + // Dirty count should be incremented on each call to a method this class that causes at least 1 write to occur to the + // nonvolatile memory(IE Clock() in the correct command phase, and WriteNV()). + // + virtual uint64 GetNVDirtyCount(void); + virtual void ResetNVDirtyCount(void); +}; + +class FrontIO +{ + public: + + FrontIO(bool emulate_memcards_[8], bool emulate_multitap_[2]); + ~FrontIO(); + + void Power(void); + void Write(pscpu_timestamp_t timestamp, uint32 A, uint32 V); + uint32 Read(pscpu_timestamp_t timestamp, uint32 A); + pscpu_timestamp_t CalcNextEventTS(pscpu_timestamp_t timestamp, int32 next_event); + pscpu_timestamp_t Update(pscpu_timestamp_t timestamp); + void ResetTS(void); + + bool RequireNoFrameskip(void); + void GPULineHook(const pscpu_timestamp_t timestamp, const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock); + + void UpdateInput(void); + void SetInput(unsigned int port, const char *type, void *ptr); + void SetAMCT(bool enabled); + void SetCrosshairsColor(unsigned port, uint32 color); + + uint64 GetMemcardDirtyCount(unsigned int which); + void LoadMemcard(unsigned int which, const char *path); + void SaveMemcard(unsigned int which, const char *path); //, bool force_save = false); + + private: + + void DoDSRIRQ(void); + void CheckStartStopPending(pscpu_timestamp_t timestamp, bool skip_event_set = false); + + void MapDevicesToPorts(void); + + bool emulate_memcards[8]; + bool emulate_multitap[2]; + + InputDevice *Ports[2]; + InputDevice *MCPorts[2]; + + InputDevice *DummyDevice; + InputDevice_Multitap *DevicesTap[2]; + + InputDevice *Devices[8]; + void *DeviceData[8]; + + InputDevice *DevicesMC[8]; + + // + // + // + + int32 ClockDivider; + + bool ReceivePending; + bool TransmitPending; + + bool ReceiveInProgress; + bool TransmitInProgress; + + bool ReceiveBufferAvail; + + uint8 ReceiveBuffer; + uint8 TransmitBuffer; + + int32 ReceiveBitCounter; + int32 TransmitBitCounter; + + uint16 Mode; + uint16 Control; + uint16 Baudrate; + + + bool istatus; + // + // + pscpu_timestamp_t irq10_pulse_ts[2]; + + int32 dsr_pulse_delay[4]; + int32 dsr_active_until_ts[4]; + int32 lastts; + // + // + bool amct_enabled; + uint32 chair_colors[8]; +}; + +extern InputInfoStruct FIO_InputInfo; + +} +#endif diff --git a/libmednahawk/src/psx/gpu.cpp b/libmednahawk/src/psx/gpu.cpp new file mode 100644 index 0000000000..5eeb497c43 --- /dev/null +++ b/libmednahawk/src/psx/gpu.cpp @@ -0,0 +1,1398 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "timer.h" + +/* + TODO: + Test and clean up line, particularly polyline, drawing. + + "abe" transparency testing might be not correct, the transparency in regards to mask bit setting and evaluation may not be correct. + + Not everything is returned in the status port read yet(double check). + + "dfe" bit of drawing mode is probably not implemented 100% correctly. + + Initialize more stuff in the Power() function. + + Fix triangle span rendering order(it's bottom-to-up sometimes on the real thing, to avoid negative x step/increment values). +*/ + +/* + GPU display timing master clock is nominally 53.693182 MHz for NTSC PlayStations, and 53.203425 MHz for PAL PlayStations. + + Non-interlaced NTSC mode line timing notes(real-world times calculated via PS1 timer and math with nominal CPU clock value): + + 263 lines per frame + + ~16714.85 us per frame, average. + ~63.55456 us per line, average. + + Multiplying the results of counter 0 in pixel clock mode by the clock divider of the current dot clock mode/width gives a result that's slightly less + than expected; the dot clock divider is probably being reset each scanline. + + Non-interlaced PAL mode(but with an NTSC source clock in an NTSC PS1; calculated same way as NTSC values): + + 314 lines per frame + + ~19912.27 us per frame, average. + ~63.41486 us per line, average. + + FB X and Y display positions can be changed during active display; and Y display position appears to be treated as an offset to the current Y readout + position that gets reset around vsync time. + +*/ + +/* + Known problematic games to do regression testing on: + + Dukes of Hazzard: Racing For Home + Sensitive about the GPU busy status flag being set long enough; double-check if we ever make CPU emulation more timing-accurate( + the fix will likely just involve reducing the timing granularity for DMA and GPU updates). + + Final Fantasy 7 + WHERE DO I BEGIN?! (Currently broken as of Jan. 1, 2012) + + Pro Pinball (series) + Sensitive to correct interlace and draw line skipping emulation. + + Valkyrie Profile + Battle scenes will go all kaka with no graphics updates if GPU LL DMA completes too soon. + +*/ + +namespace MDFN_IEN_PSX +{ +//FILE *fp; + +static const int32 dither_table[4][4] = +{ + { -4, 0, -3, 1 }, + { 2, -2, 3, -1 }, + { -3, 1, -4, 0 }, + { 3, -1, 2, -2 }, +}; + +PS_GPU::PS_GPU(bool pal_clock_and_tv) : BlitterFIFO(0x20) // 0x10 on actual PS1 GPU, 0x20 here(see comment at top of gpu.h) // 0x10) +{ + HardwarePALType = pal_clock_and_tv; + + for(int y = 0; y < 4; y++) + for(int x = 0; x < 4; x++) + for(int v = 0; v < 512; v++) + { + int value = v + dither_table[y][x]; + + value >>= 3; + + if(value < 0) + value = 0; + + if(value > 0x1F) + value = 0x1F; + + DitherLUT[y][x][v] = value; + } + + if(HardwarePALType == false) // NTSC clock + { + GPUClockRatio = 103896; // 65536 * 53693181.818 / (44100 * 768) + } + else // PAL clock + { + GPUClockRatio = 102948; // 65536 * 53203425 / (44100 * 768) + } + + memset(RGB8SAT_Under, 0, sizeof(RGB8SAT_Under)); + + for(int i = 0; i < 256; i++) + RGB8SAT[i] = i; + + memset(RGB8SAT_Over, 0xFF, sizeof(RGB8SAT_Over)); +} + +PS_GPU::~PS_GPU() +{ + +} + +void PS_GPU::SoftReset(void) // Control command 0x00 +{ + DMAControl = 0; + + if(DrawTimeAvail < 0) + DrawTimeAvail = 0; + + BlitterFIFO.Flush(); + InCmd = INCMD_NONE; + + DisplayMode = 0; + DisplayOff = 1; + DisplayFB_XStart = 0; + DisplayFB_YStart = 0; + + HorizStart = 0; + HorizEnd = 0; + + VertStart = 0; + VertEnd = 0; +} + +void PS_GPU::Power(void) +{ + memset(GPURAM, 0, sizeof(GPURAM)); + + DMAControl = 0; + + ClipX0 = 0; + ClipY0 = 0; + ClipX1 = 1023; + ClipY1 = 1023; + + OffsX = 0; + OffsY = 0; + + dtd = false; + dfe = false; + + MaskSetOR = 0; + MaskEvalAND = 0; + + tww = 0; + twh = 0; + twx = 0; + twy = 0; + + RecalcTexWindowLUT(); + + TexPageX = 0; + TexPageY = 0; + SpriteFlip = 0; + + abr = 0; + TexMode = 0; + + BlitterFIFO.Flush(); + + InCmd = INCMD_NONE; + FBRW_X = 0; + FBRW_Y = 0; + FBRW_W = 0; + FBRW_H = 0; + FBRW_CurY = 0; + FBRW_CurX = 0; + + DisplayMode = 0; + DisplayOff = 1; + DisplayFB_XStart = 0; + DisplayFB_YStart = 0; + + HorizStart = 0; + HorizEnd = 0; + + VertStart = 0; + VertEnd = 0; + + // + // + // + DisplayFB_CurYOffset = 0; + DisplayFB_CurLineYReadout = 0; + DisplayHeightCounter = 0; + + + // TODO: factor out in a separate function. + LinesPerField = 263; + VisibleStartLine = 23; + + // + // + // + FrameInterlaced = false; + PALMode = false; + HeightMode = false; + scanline = 0; + field = 0; + field_atvs = 0; + PhaseChange = 0; + + // + // + // + DotClockCounter = 0; + GPUClockCounter = 0; + LineClockCounter = 3412 - 200; + LinePhase = 0; + + DrawTimeAvail = 0; + + lastts = 0; +} + +void PS_GPU::ResetTS(void) +{ + lastts = 0; +} + +#define COORD_FBS 20 +#define COORD_MF_INT(n) ((n) << COORD_FBS) + +static INLINE int32 COORD_GET_INT(int32 n) +{ + return(n >> COORD_FBS); +} + + +template +INLINE void PS_GPU::PlotPixel(int32 x, int32 y, uint16 fore_pix) +{ + y &= 511; // More Y precision bits than GPU RAM installed in (non-arcade, at least) Playstation hardware. + + if(BlendMode >= 0 && (fore_pix & 0x8000)) + { + uint16 bg_pix = GPURAM[y][x]; // Don't use bg_pix for mask evaluation, it's modified in blending code paths. + uint16 pix; // = fore_pix & 0x8000; + +/* + static const int32 tab[4][2] = + { + { 2, 2 }, + { 4, 4 }, + { 4, -4 }, + { 4, 1 } + }; +*/ + // Efficient 15bpp pixel math algorithms from blargg + switch(BlendMode) + { + case 0: + bg_pix |= 0x8000; + pix = ((fore_pix + bg_pix) - ((fore_pix ^ bg_pix) & 0x0421)) >> 1; + break; + + case 1: + { + bg_pix &= ~0x8000; + + uint32 sum = fore_pix + bg_pix; + uint32 carry = (sum - ((fore_pix ^ bg_pix) & 0x8421)) & 0x8420; + + pix = (sum - carry) | (carry - (carry >> 5)); + } + break; + + case 2: + { + bg_pix |= 0x8000; + fore_pix &= ~0x8000; + + uint32 diff = bg_pix - fore_pix + 0x108420; + uint32 borrow = (diff - ((bg_pix ^ fore_pix) & 0x108420)) & 0x108420; + + pix = (diff - borrow) & (borrow - (borrow >> 5)); + } + break; + + case 3: + { + bg_pix &= ~0x8000; + fore_pix = ((fore_pix >> 2) & 0x1CE7) | 0x8000; + + uint32 sum = fore_pix + bg_pix; + uint32 carry = (sum - ((fore_pix ^ bg_pix) & 0x8421)) & 0x8420; + + pix = (sum - carry) | (carry - (carry >> 5)); + } + break; + } + + if(!MaskEval_TA || !(GPURAM[y][x] & 0x8000)) + GPURAM[y][x] = (textured ? pix : (pix & 0x7FFF)) | MaskSetOR; + } + else + { + if(!MaskEval_TA || !(GPURAM[y][x] & 0x8000)) + GPURAM[y][x] = (textured ? fore_pix : (fore_pix & 0x7FFF)) | MaskSetOR; + } +} + +INLINE uint16 PS_GPU::ModTexel(uint16 texel, int32 r, int32 g, int32 b, const int32 dither_x, const int32 dither_y) +{ + uint16 ret = texel & 0x8000; + + ret |= DitherLUT[dither_y][dither_x][(((texel & 0x1F) * r) >> (5 - 1))] << 0; + ret |= DitherLUT[dither_y][dither_x][(((texel & 0x3E0) * g) >> (10 - 1))] << 5; + ret |= DitherLUT[dither_y][dither_x][(((texel & 0x7C00) * b) >> (15 - 1))] << 10; + + return(ret); +} + +template +INLINE uint16 PS_GPU::GetTexel(const uint32 clut_offset, int32 u_arg, int32 v_arg) +{ + uint32 u = TexWindowXLUT[u_arg]; + uint32 v = TexWindowYLUT[v_arg]; + uint32 fbtex_x = TexPageX + (u >> (2 - TexMode_TA)); + uint32 fbtex_y = TexPageY + v; + uint16 fbw = GPURAM[fbtex_y][fbtex_x & 1023]; + + if(TexMode_TA != 2) + { + if(TexMode_TA == 0) + fbw = (fbw >> ((u & 3) * 4)) & 0xF; + else + fbw = (fbw >> ((u & 1) * 8)) & 0xFF; + + fbw = GPURAM[(clut_offset >> 10) & 511][(clut_offset + fbw) & 1023]; + } + + return(fbw); +} + +INLINE bool PS_GPU::LineSkipTest(unsigned y) +{ + //DisplayFB_XStart >= OffsX && DisplayFB_YStart >= OffsY && + // ((y & 1) == (DisplayFB_CurLineYReadout & 1)) + + if((DisplayMode & 0x24) != 0x24) + return false; + + if(HeightMode && !dfe && ((y & 1) == ((DisplayFB_YStart + !field_atvs) & 1))/* && !DisplayOff*/) //&& (y >> 1) >= DisplayFB_YStart && (y >> 1) < (DisplayFB_YStart + (VertEnd - VertStart))) + return true; + + return false; +} + +#include "gpu_polygon.inc" +#include "gpu_sprite.inc" +#include "gpu_line.inc" + +// Special RAM write mode(16 pixels at a time), does *not* appear to use mask drawing environment settings. +void PS_GPU::Command_FBFill(const uint32 *cb) +{ + int32 r = cb[0] & 0xFF; + int32 g = (cb[0] >> 8) & 0xFF; + int32 b = (cb[0] >> 16) & 0xFF; + const uint16 fill_value = ((r >> 3) << 0) | ((g >> 3) << 5) | ((b >> 3) << 10); + + int32 destX = (cb[1] >> 0) & 0x3F0; + int32 destY = (cb[1] >> 16) & 0x3FF; + + int32 width = (((cb[2] >> 0) & 0x3FF) + 0xF) & ~0xF; + int32 height = (cb[2] >> 16) & 0x1FF; + + //printf("[GPU] FB Fill %d:%d w=%d, h=%d\n", destX, destY, width, height); + DrawTimeAvail -= 46; // Approximate + DrawTimeAvail -= ((width * height) >> 3) + (height * 9); + + for(int32 y = 0; y < height; y++) + { + const int32 d_y = (y + destY) & 511; + + if(LineSkipTest(d_y)) + continue; + + for(int32 x = 0; x < width; x++) + { + const int32 d_x = (x + destX) & 1023; + + GPURAM[d_y][d_x] = fill_value; + } + } + +} + +void PS_GPU::Command_FBCopy(const uint32 *cb) +{ + int32 sourceX = (cb[1] >> 0) & 0x3FF; + int32 sourceY = (cb[1] >> 16) & 0x3FF; + int32 destX = (cb[2] >> 0) & 0x3FF; + int32 destY = (cb[2] >> 16) & 0x3FF; + + int32 width = (cb[3] >> 0) & 0x3FF; + int32 height = (cb[3] >> 16) & 0x1FF; + + if(!width) + width = 0x400; + + if(!height) + height = 0x200; + + //printf("FB Copy: %d %d %d %d %d %d\n", sourceX, sourceY, destX, destY, width, height); + + DrawTimeAvail -= (width * height) * 2; + + for(int32 y = 0; y < height; y++) + { + for(int32 x = 0; x < width; x++) + { + int32 s_y = (y + sourceY) & 511; + int32 s_x = (x + sourceX) & 1023; + int32 d_y = (y + destY) & 511; + int32 d_x = (x + destX) & 1023; + + if(!(GPURAM[d_y][d_x] & MaskEvalAND)) + GPURAM[d_y][d_x] = GPURAM[s_y][s_x] | MaskSetOR; + } + } + +} + +void PS_GPU::Command_FBWrite(const uint32 *cb) +{ + assert(InCmd == INCMD_NONE); + + FBRW_X = (cb[1] >> 0) & 0x3FF; + FBRW_Y = (cb[1] >> 16) & 0x3FF; + + FBRW_W = (cb[2] >> 0) & 0x7FF; + FBRW_H = (cb[2] >> 16) & 0x3FF; + + if(FBRW_W > 0x400) + FBRW_W &= 0x3FF; + + if(FBRW_H > 0x200) + FBRW_H &= 0x1FF; + + FBRW_CurX = FBRW_X; + FBRW_CurY = FBRW_Y; + + if(FBRW_W != 0 && FBRW_H != 0) + InCmd = INCMD_FBWRITE; +} + +void PS_GPU::Command_FBRead(const uint32 *cb) +{ + assert(InCmd == INCMD_NONE); + + FBRW_X = (cb[1] >> 0) & 0x3FF; + FBRW_Y = (cb[1] >> 16) & 0x3FF; + + FBRW_W = (cb[2] >> 0) & 0x7FF; + FBRW_H = (cb[2] >> 16) & 0x3FF; + + if(FBRW_W > 0x400) + FBRW_W &= 0x3FF; + + if(FBRW_H > 0x200) + FBRW_H &= 0x1FF; + + FBRW_CurX = FBRW_X; + FBRW_CurY = FBRW_Y; + + if(FBRW_W != 0 && FBRW_H != 0) + InCmd = INCMD_FBREAD; +} + + +void PS_GPU::RecalcTexWindowLUT(void) +{ + const unsigned TexWindowX_AND = ~(tww << 3); + const unsigned TexWindowX_OR = (twx & tww) << 3; + + const unsigned TexWindowY_AND = ~(twh << 3); + const unsigned TexWindowY_OR = (twy & twh) << 3; + +// printf("TWX: 0x%02x, TWW: 0x%02x\n", twx, tww); +// printf("TWY: 0x%02x, TWH: 0x%02x\n", twy, twh); + + for(unsigned x = 0; x < 256; x++) + { + TexWindowXLUT[x] = (x & TexWindowX_AND) | TexWindowX_OR; + } + + for(unsigned y = 0; y < 256; y++) + { + TexWindowYLUT[y] = (y & TexWindowY_AND) | TexWindowY_OR; + } + + memset(TexWindowXLUT_Pre, TexWindowXLUT[0], sizeof(TexWindowXLUT_Pre)); + memset(TexWindowXLUT_Post, TexWindowXLUT[255], sizeof(TexWindowXLUT_Post)); + + memset(TexWindowYLUT_Pre, TexWindowYLUT[0], sizeof(TexWindowYLUT_Pre)); + memset(TexWindowYLUT_Post, TexWindowYLUT[255], sizeof(TexWindowYLUT_Post)); +} + +void PS_GPU::Command_DrawMode(const uint32 *cb) +{ + TexPageX = (*cb & 0xF) * 64; + TexPageY = (*cb & 0x10) * 16; + + SpriteFlip = *cb & 0x3000; + + abr = (*cb >> 5) & 0x3; + TexMode = (*cb >> 7) & 0x3; + + dtd = (*cb >> 9) & 1; + dfe = (*cb >> 10) & 1; + //printf("*******************DFE: %d -- scanline=%d\n", dfe, scanline); +} + +void PS_GPU::Command_TexWindow(const uint32 *cb) +{ + tww = (*cb & 0x1F); + twh = ((*cb >> 5) & 0x1F); + twx = ((*cb >> 10) & 0x1F); + twy = ((*cb >> 15) & 0x1F); + + RecalcTexWindowLUT(); +} + +void PS_GPU::Command_Clip0(const uint32 *cb) +{ + ClipX0 = *cb & 1023; + ClipY0 = (*cb >> 10) & 1023; +} + +void PS_GPU::Command_Clip1(const uint32 *cb) +{ + ClipX1 = *cb & 1023; + ClipY1 = (*cb >> 10) & 1023; +} + +void PS_GPU::Command_DrawingOffset(const uint32 *cb) +{ + OffsX = sign_x_to_s32(11, (*cb & 2047)); + OffsY = sign_x_to_s32(11, ((*cb >> 11) & 2047)); + + //fprintf(stderr, "[GPU] Drawing offset: %d(raw=%d) %d(raw=%d) -- %d\n", OffsX, *cb, OffsY, *cb >> 11, scanline); +} + +void PS_GPU::Command_MaskSetting(const uint32 *cb) +{ + //printf("Mask setting: %08x\n", *cb); + MaskSetOR = (*cb & 1) ? 0x8000 : 0x0000; + MaskEvalAND = (*cb & 2) ? 0x8000 : 0x0000; +} + +void PS_GPU::Command_ClearCache(const uint32 *cb) +{ + +} + +//zero 04-nov-2012 - change the way this table is setup to actually compile under msvc in under 1000 years +//-------------- + +//CTEntry PS_GPU::Commands[4][256] = +//{ +// #define BLENDMODE_MAC 0 +// { +// #include "gpu_command_table.inc" +// }, +// #undef BLENDMODE_MAC +// +// #define BLENDMODE_MAC 1 +// { +// #include "gpu_command_table.inc" +// }, +// #undef BLENDMODE_MAC +// +// #define BLENDMODE_MAC 2 +// { +// #include "gpu_command_table.inc" +// }, +// #undef BLENDMODE_MAC +// +// #define BLENDMODE_MAC 3 +// { +// #include "gpu_command_table.inc" +// }, +// #undef BLENDMODE_MAC +//}; + +CTEntry PS_GPU::Commands_MAC_0[256] = + #define BLENDMODE_MAC 0 + { + #include "gpu_command_table.inc" + }; + #undef BLENDMODE_MAC + +CTEntry PS_GPU::Commands_MAC_1[256] = + #define BLENDMODE_MAC 1 + { + #include "gpu_command_table.inc" + }; + #undef BLENDMODE_MAC + +CTEntry PS_GPU::Commands_MAC_2[256] = + #define BLENDMODE_MAC 2 + { + #include "gpu_command_table.inc" + }; + #undef BLENDMODE_MAC + +CTEntry PS_GPU::Commands_MAC_3[256] = + #define BLENDMODE_MAC 3 + { + #include "gpu_command_table.inc" + }; + #undef BLENDMODE_MAC + +CTEntry* PS_GPU::Commands[4] = { Commands_MAC_0, Commands_MAC_1, Commands_MAC_2, Commands_MAC_3 }; + +static uint64 PrimitiveCounter[256] = { 0 }; // Debug + +void PS_GPU::ProcessFIFO(void) +{ + if(!BlitterFIFO.CanRead()) + return; + + switch(InCmd) + { + default: + abort(); + break; + + case INCMD_NONE: + break; + + case INCMD_FBREAD: + puts("BOGUS SALAMANDERS, CAPTAIN!"); + return; + + case INCMD_FBWRITE: + { + uint32 InData = BlitterFIFO.ReadUnit(); + + for(int i = 0; i < 2; i++) + { + if(!(GPURAM[FBRW_CurY & 511][FBRW_CurX & 1023] & MaskEvalAND)) + GPURAM[FBRW_CurY & 511][FBRW_CurX & 1023] = InData | MaskSetOR; + + FBRW_CurX++; + if(FBRW_CurX == (FBRW_X + FBRW_W)) + { + FBRW_CurX = FBRW_X; + FBRW_CurY++; + if(FBRW_CurY == (FBRW_Y + FBRW_H)) + { + InCmd = INCMD_NONE; + break; // Break out of the for() loop. + } + } + InData >>= 16; + } + return; + } + break; + + case INCMD_QUAD: + { + if(DrawTimeAvail < 0) + return; + + const uint32 cc = InCmd_CC; + const CTEntry *command = &Commands[abr][cc]; + unsigned vl = 1 + (bool)(cc & 0x4) + (bool)(cc & 0x10); + uint32 CB[3]; + + if(BlitterFIFO.CanRead() >= vl) + { + for(unsigned i = 0; i < vl; i++) + { + CB[i] = BlitterFIFO.ReadUnit(); + } + + ((this)->*(command->func[TexMode | (MaskEvalAND ? 0x4 : 0x0)]))(CB); + } + return; + } + break; + + case INCMD_PLINE: + { + if(DrawTimeAvail < 0) + return; + + const uint32 cc = InCmd_CC; + const CTEntry *command = &Commands[abr][cc]; + unsigned vl = 1 + (bool)(InCmd_CC & 0x10); + uint32 CB[2]; + + if((BlitterFIFO.ReadUnit(true) & 0xF000F000) == 0x50005000) + { + BlitterFIFO.ReadUnit(); + InCmd = INCMD_NONE; + return; + } + + if(BlitterFIFO.CanRead() >= vl) + { + for(unsigned i = 0; i < vl; i++) + { + CB[i] = BlitterFIFO.ReadUnit(); + } + + ((this)->*(command->func[TexMode | (MaskEvalAND ? 0x4 : 0x0)]))(CB); + } + return; + } + break; + } + + const uint32 cc = BlitterFIFO.ReadUnit(true) >> 24; + const CTEntry *command = &Commands[0][cc]; + + if(DrawTimeAvail < 0 && !command->ss_cmd) + return; + + if(BlitterFIFO.CanRead() >= command->len) + { + uint32 CB[0x10]; + + for(unsigned i = 0; i < command->len; i++) + CB[i] = BlitterFIFO.ReadUnit(); + + if(!command->ss_cmd) + DrawTimeAvail -= 2; + + PrimitiveCounter[cc]++; + + if(!command->func[TexMode]) + { + //if(CB[0]) + // PSX_WARNING("[GPU] Unknown command: %08x, %d", CB[0], scanline); + } + else + { +#if 0 + PSX_WARNING("[GPU] Command: %08x %s %d %d %d", CB[0], command->name, command->len, scanline, DrawTimeAvail); + if(1) + { + printf("[GPU] "); + for(unsigned i = 0; i < command->len; i++) + printf("0x%08x ", CB[i]); + printf("\n"); + } +#endif + // A very very ugly kludge to support texture mode specialization. fixme/cleanup/SOMETHING in the future. + if(cc >= 0x20 && cc <= 0x3F && (cc & 0x4)) + { + uint32 tpage; + + tpage = CB[4 + ((cc >> 4) & 0x1)] >> 16; + + TexPageX = (tpage & 0xF) * 64; + TexPageY = (tpage & 0x10) * 16; + + SpriteFlip = tpage & 0x3000; + + abr = (tpage >> 5) & 0x3; + TexMode = (tpage >> 7) & 0x3; + } + + command = &Commands[abr][cc]; + + //int32 olddt = DrawTimeAvail; + ((this)->*(command->func[TexMode | (MaskEvalAND ? 0x4 : 0x0)]))(CB); + //printf("COMMAND: %08x -- %8d ---- scanline=%d -- adta=%8d\n", CB[0], DrawTimeAvail - olddt, scanline, DrawTimeAvail); + } + } +} + +INLINE void PS_GPU::WriteCB(uint32 InData) +{ + if(BlitterFIFO.CanRead() >= 0x10 && (InCmd != INCMD_NONE || (BlitterFIFO.CanRead() - 0x10) >= Commands[0][BlitterFIFO.ReadUnit(true) >> 24].fifo_fb_len)) + { + MDFN_DispMessage("GPU FIFO overflow!!!"); + fprintf(stderr, "GPU FIFO overflow!!!"); + return; + } + + BlitterFIFO.WriteUnit(InData); + ProcessFIFO(); +} + +void PS_GPU::Write(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + V <<= (A & 3) * 8; + + if(A & 4) // GP1 ("Control") + { + uint32 command = V >> 24; + + //fputc(1, fp); + //fwrite(&V, 1, 4, fp); + + + V &= 0x00FFFFFF; + + //PSX_WARNING("[GPU] Control command: %02x %06x %d", command, V, scanline); + + switch(command) + { + default: PSX_WARNING("[GPU] Unknown control command %02x - %06x", command, V); + break; + + case 0x00: // Reset GPU + SoftReset(); + break; + + case 0x01: // Reset command buffer + if(DrawTimeAvail < 0) + DrawTimeAvail = 0; + BlitterFIFO.Flush(); + InCmd = INCMD_NONE; + break; + + case 0x02: // Reset IRQ ??? + break; + + case 0x03: // Display enable + DisplayOff = V & 1; + break; + + case 0x04: // DMA Setup + DMAControl = V & 0x3; + break; + + case 0x05: // Start of display area in framebuffer + DisplayFB_XStart = V & 0x3FF; + DisplayFB_YStart = (V >> 10) & 0x1FF; + //printf("Xstart: %d -- Ystart: %d -- scanline=%d\n", DisplayFB_XStart, DisplayFB_YStart, scanline); + break; + + case 0x06: // Horizontal display range + HorizStart = V & 0xFFF; + HorizEnd = (V >> 12) & 0xFFF; + break; + + case 0x07: + VertStart = V & 0x3FF; + VertEnd = (V >> 10) & 0x3FF; // & 0x3FF or & 0x7FF? + //printf("VS: %04x\n", VertStart); + break; + + case 0x08: + DisplayMode = V & 0xFF; + //printf("DM: %02x, %d\n", V, scanline); + break; + + case 0x10: // GPU info(?) + switch(V & 0xF) + { + default: PSX_WARNING("[GPU] Unknown control command GPU info param - %01x", V & 0xF); + DataReadBuffer = 0; + //assert(0); + break; + + case 0x2: DataReadBuffer = (tww << 0) | (twh << 5) | (twx << 10) | (twy << 15); + break; + + case 0x3: DataReadBuffer = (ClipY0 << 10) | ClipX0; + break; + + case 0x4: DataReadBuffer = (ClipY1 << 10) | ClipX1; + break; + + case 0x5: + case 0x6: DataReadBuffer = (OffsX & 2047) | ((OffsY & 2047) << 11); + break; + + case 0x7: DataReadBuffer = 2; + break; + } + break; + + } + } + else // GP0 ("Data") + { + //uint32 command = V >> 24; + //printf("Meow command: %02x\n", command); + //assert(!(DMAControl & 2)); + WriteCB(V); + } +} + + +void PS_GPU::WriteDMA(uint32 V) +{ + WriteCB(V); +} + +uint32 PS_GPU::Read(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 ret = 0; + + if(A & 4) // Status + { + ret = (((DisplayMode << 1) & 0x7F) | ((DisplayMode >> 6) & 1)) << 16; + + ret |= DMAControl << 29; + + ret |= (DisplayFB_CurLineYReadout & 1) << 31; + + ret |= field << 13; + + if(DMAControl & 0x02) + ret |= 1 << 25; + + ret |= DisplayOff << 23; + + if(InCmd == INCMD_NONE && DrawTimeAvail >= 0 && BlitterFIFO.CanRead() == 0x00) // GPU idle bit. + ret |= 1 << 26; + + if(InCmd == INCMD_FBREAD) // Might want to more accurately emulate this in the future? + ret |= (1 << 27); + + ret |= CalcFIFOReadyBit() << 28; // FIFO has room bit? (kinda). + + // + // + ret |= TexPageX >> 6; + ret |= TexPageY >> 4; + ret |= abr << 5; + ret |= TexMode << 7; + + ret |= dtd << 9; + ret |= dfe << 10; + + if(MaskSetOR) + ret |= 1 << 11; + + if(MaskEvalAND) + ret |= 1 << 12; + } + else // "Data" + { + if(InCmd == INCMD_FBREAD) + { + DataReadBuffer = 0; + for(int i = 0; i < 2; i++) + { + DataReadBuffer |= GPURAM[FBRW_CurY & 511][FBRW_CurX & 1023] << (i * 16); + + FBRW_CurX++; + if(FBRW_CurX == (FBRW_X + FBRW_W)) + { + FBRW_CurX = FBRW_X; + FBRW_CurY++; + if(FBRW_CurY == (FBRW_Y + FBRW_H)) + { + InCmd = INCMD_NONE; + break; + } + } + } + } + + ret = DataReadBuffer; + } + + if(DMAControl & 2) + { + //PSX_WARNING("[GPU READ WHEN (DMACONTROL&2)] 0x%08x - ret=0x%08x, scanline=%d", A, ret, scanline); + } + + return(ret >> ((A & 3) * 8)); +} + +INLINE void PS_GPU::ReorderRGB_Var(uint32 out_Rshift, uint32 out_Gshift, uint32 out_Bshift, bool bpp24, const uint16 *src, uint32 *dest, const int32 dx_start, const int32 dx_end, int32 fb_x) +{ + if(bpp24) // 24bpp + { + for(int32 x = dx_start; x < dx_end; x++) + { + uint32 srcpix; + + srcpix = src[(fb_x >> 1) + 0] | (src[((fb_x >> 1) + 1) & 0x7FF] << 16); + srcpix >>= (fb_x & 1) * 8; + + dest[x] = (((srcpix >> 0) << out_Rshift) & (0xFF << out_Rshift)) | (((srcpix >> 8) << out_Gshift) & (0xFF << out_Gshift)) | + (((srcpix >> 16) << out_Bshift) & (0xFF << out_Bshift)); + + fb_x = (fb_x + 3) & 0x7FF; + } + } // 15bpp + else + { + for(int32 x = dx_start; x < dx_end; x++) + { + uint32 srcpix = src[fb_x >> 1]; + + //dest[x] = (((srcpix >> 0) << out_Rshift) & (0xFF << out_Rshift)) | (((srcpix >> 8) << out_Gshift) & (0xFF << out_Gshift)) | + // (((srcpix >> 16) << out_Bshift) & (0xFF << out_Bshift)); + dest[x] = OutputLUT[srcpix & 0x7FFF]; + + fb_x = (fb_x + 2) & 0x7FF; + } + } + +} + + +template +void PS_GPU::ReorderRGB(bool bpp24, const uint16 *src, uint32 *dest, const int32 dx_start, const int32 dx_end, int32 fb_x) +{ + ReorderRGB_Var(out_Rshift, out_Gshift, out_Bshift, bpp24, src, dest, dx_start, dx_end, fb_x); +} + +pscpu_timestamp_t PS_GPU::Update(const pscpu_timestamp_t sys_timestamp) +{ + static const uint32 DotClockRatios[5] = { 10, 8, 5, 4, 7 }; + const uint32 dmc = (DisplayMode & 0x40) ? 4 : (DisplayMode & 0x3); + const uint32 dmw = 2720 / DotClockRatios[dmc]; // Must be <= 768 + + int32 sys_clocks = sys_timestamp - lastts; + int32 gpu_clocks; + + //printf("GPUISH: %d\n", sys_timestamp - lastts); + + if(!sys_clocks) + goto TheEnd; + + DrawTimeAvail += sys_clocks << 1; + + if(DrawTimeAvail > 256) + DrawTimeAvail = 256; + + ProcessFIFO(); + + //puts("GPU Update Start"); + + GPUClockCounter += (uint64)sys_clocks * GPUClockRatio; + + gpu_clocks = GPUClockCounter >> 16; + GPUClockCounter -= gpu_clocks << 16; + + while(gpu_clocks > 0) + { + int32 chunk_clocks = gpu_clocks; + int32 dot_clocks; + + if(chunk_clocks > LineClockCounter) + { + //printf("Chunk: %u, LCC: %u\n", chunk_clocks, LineClockCounter); + chunk_clocks = LineClockCounter; + } + + gpu_clocks -= chunk_clocks; + LineClockCounter -= chunk_clocks; + + DotClockCounter += chunk_clocks; + dot_clocks = DotClockCounter / DotClockRatios[DisplayMode & 0x3]; + DotClockCounter -= dot_clocks * DotClockRatios[DisplayMode & 0x3]; + + TIMER_AddDotClocks(dot_clocks); + + + if(!LineClockCounter) + { + PSX_SetEventNT(PSX_EVENT_TIMER, TIMER_Update(sys_timestamp)); // We could just call this at the top of GPU_Update(), but do it here for slightly less CPU usage(presumably). + + LinePhase = (LinePhase + 1) & 1; + + if(LinePhase) + { + TIMER_SetHRetrace(true); + LineClockCounter = 200; + TIMER_ClockHRetrace(); + } + else + { + TIMER_SetHRetrace(false); + if(PALMode) + LineClockCounter = 3405 - 200; + else + LineClockCounter = 3412 + PhaseChange - 200; + + scanline = (scanline + 1) % LinesPerField; + PhaseChange = !PhaseChange; + + if(scanline == (LinesPerField - 1)) + { + //printf("Exit: scanline=%u, st=%u\n", scanline, sys_timestamp); + PSX_RequestMLExit(); + } + +#ifdef WANT_DEBUGGER + DBG_GPUScanlineHook(scanline); +#endif + + // printf("[GPU] DTA scanline=%3d --- %8d\n", scanline, DrawTimeAvail); + + if(scanline == 0) + { +#if 0 + printf("Primitive Counts for previous frame:\n"); + for(unsigned i = 0; i < 256; i++) + if(PrimitiveCounter[i]) + { + printf("0x%02x: %8u\n", i, (unsigned int)PrimitiveCounter[i]); + } + + printf("\n"); + memset(PrimitiveCounter, 0, sizeof(PrimitiveCounter)); +#endif + + IRQ_Assert(IRQ_VSYNC, true); + IRQ_Assert(IRQ_VSYNC, false); + } + + // Might not be right: + if(scanline == 0) + TIMER_SetVBlank(true); + else if(scanline == VisibleStartLine) + TIMER_SetVBlank(false); + + + if(scanline == 0) + { + field_atvs = field; + DisplayHeightCounter = 0; + + PALMode = (bool)(DisplayMode & 0x08); + + if(PALMode) // PAL + VisibleStartLine = 26; + else // NTSC + VisibleStartLine = 22; + + FrameInterlaced = (bool)(DisplayMode & 0x20); + HeightMode = (bool)(DisplayMode & 0x04) && FrameInterlaced; + + if(espec) + { + if(PALMode != HardwarePALType) + { + const uint32 black = surface->MakeColor(0, 0, 0); + + DisplayRect->w = 384; + DisplayRect->h = (HardwarePALType ? 288 : 240); + + for(int32 y = 0; y < DisplayRect->h; y++) + { + uint32 *dest = surface->pixels + y * surface->pitch32; + + LineWidths[y].x = 0; + LineWidths[y].w = 384; + + for(int32 x = 0; x < 384; x++) + { + dest[x] = black; + } + } + char buffer[256]; + + trio_snprintf(buffer, sizeof(buffer), _("VIDEO STANDARD MISMATCH")); + DrawTextTrans(surface->pixels + ((DisplayRect->h / 2) - (13 / 2)) * surface->pitch32, surface->pitch32 << 2, DisplayRect->w, (UTF8*)buffer, + surface->MakeColor(0x00, 0xFF, 0x00), true, MDFN_FONT_6x13_12x13); + } + else + { + espec->InterlaceOn = FrameInterlaced; + espec->InterlaceField = !field; + DisplayRect->h = (HardwarePALType ? 288 : 240) << FrameInterlaced; + } + } + + DisplayFB_CurYOffset = 0; + } + + const uint32 VS_Adjust = 7; //PALMode ? (34 - 6) : 7; + + if(scanline == (5U + field_atvs)) + { + if(FrameInterlaced) + { + skip = false; + field = !field; + + if(PALMode) // PAL + LinesPerField = 313 - field; + else // NTSC + LinesPerField = 263 - field; + } + else + { + field = 0; // May not be correct. + + if(PALMode) // PAL + LinesPerField = 314; + else // NTSC + LinesPerField = 263; + } + } + + if(scanline == (VertStart + VS_Adjust)) + { + DisplayHeightCounter = (VertEnd - VertStart); + + // Note to self: X-Men Mutant Academy relies on this being set on the proper scanline in 480i mode(otherwise it locks up on startup). + if(HeightMode) + DisplayFB_CurYOffset = field; + + //printf("%d\n", DisplayFB_CurYOffset); + } + + // Needs to occur even in vblank. + DisplayFB_CurLineYReadout = (DisplayFB_YStart + DisplayFB_CurYOffset) & 0x1FF; + + if(scanline >= VisibleStartLine && scanline < (VisibleStartLine + (HardwarePALType ? 288 : 240)) && !skip && espec && PALMode == HardwarePALType) + { + uint32 *dest; // = surface->pixels + (scanline - VisibleStartLine) * surface->pitch32; + int32 dest_line; + int32 fb_x = DisplayFB_XStart * 2; + int32 dx_start = HorizStart, dx_end = HorizEnd; + + dest_line = ((scanline - VisibleStartLine) << FrameInterlaced) + field; + dest = surface->pixels + dest_line * surface->pitch32; + + if(dx_end < dx_start) + dx_end = dx_start; + + dx_start = dx_start / DotClockRatios[dmc]; + dx_end = dx_end / DotClockRatios[dmc]; + + dx_start -= 528 / DotClockRatios[dmc]; + dx_end -= 528 / DotClockRatios[dmc]; + + if(dx_start < 0) + { + fb_x -= dx_start * ((DisplayMode & 0x10) ? 3 : 2); + fb_x &= 0x7FF; //0x3FF; + dx_start = 0; + } + + if((uint32)dx_end > dmw) + dx_end = dmw; + + if(!DisplayHeightCounter || DisplayOff) + dx_start = dx_end = 0; + + // TODO, but there are problems with this, as not all blitter busy cycles(crudely abstracted with DrawTimeAvail) are GPU RAM access cycles. + // Also, it shouldn't be here per-se, since this code won't be all if we're frameskipping or there's a video standard mismatch + //DrawTimeAvail -= (dx_end - dx_start) + ((DisplayMode & 0x10) ? ((dx_end - dx_start + 1) >> 1) : 0); + + LineWidths[dest_line].x = 0; + LineWidths[dest_line].w = dmw; + + { + const uint16 *src = GPURAM[DisplayFB_CurLineYReadout]; + const uint32 black = surface->MakeColor(0, 0, 0); + + for(int32 x = 0; x < dx_start; x++) + dest[x] = black; + + //printf("%d %d %d - %d %d\n", scanline, dx_start, dx_end, HorizStart, HorizEnd); + if(surface->format.Rshift == 0 && surface->format.Gshift == 8 && surface->format.Bshift == 16) + ReorderRGB<0, 8, 16>(DisplayMode & 0x10, src, dest, dx_start, dx_end, fb_x); + else if(surface->format.Rshift == 8 && surface->format.Gshift == 16 && surface->format.Bshift == 24) + ReorderRGB<8, 16, 24>(DisplayMode & 0x10, src, dest, dx_start, dx_end, fb_x); + else if(surface->format.Rshift == 16 && surface->format.Gshift == 8 && surface->format.Bshift == 0) + ReorderRGB<16, 8, 0>(DisplayMode & 0x10, src, dest, dx_start, dx_end, fb_x); + else if(surface->format.Rshift == 24 && surface->format.Gshift == 16 && surface->format.Bshift == 8) + ReorderRGB<24, 16, 8>(DisplayMode & 0x10, src, dest, dx_start, dx_end, fb_x); + else + ReorderRGB_Var(surface->format.Rshift, surface->format.Gshift, surface->format.Bshift, DisplayMode & 0x10, src, dest, dx_start, dx_end, fb_x); + + for(uint32 x = dx_end; x < dmw; x++) + dest[x] = black; + } + + //if(scanline == 64) + // printf("%u\n", sys_timestamp - ((uint64)gpu_clocks * 65536) / GPUClockRatio); + + PSX_GPULineHook(sys_timestamp, sys_timestamp - ((uint64)gpu_clocks * 65536) / GPUClockRatio, scanline == 0, dest, &surface->format, dmw, (528 - 146) / DotClockRatios[dmc], (HardwarePALType ? 53203425 : 53693182) / DotClockRatios[dmc]); + } + else + { + PSX_GPULineHook(sys_timestamp, sys_timestamp - ((uint64)gpu_clocks * 65536) / GPUClockRatio, scanline == 0, NULL, &surface->format, 0, 0, 0); + } + + if(DisplayHeightCounter) + { + if(HeightMode) + DisplayFB_CurYOffset = (DisplayFB_CurYOffset + 2) & 0x1FF; + else + DisplayFB_CurYOffset = (DisplayFB_CurYOffset + 1) & 0x1FF; + + DisplayHeightCounter--; + } + } + } + } + + //puts("GPU Update End"); + + TheEnd: + lastts = sys_timestamp; + + { + int32 next_dt = LineClockCounter; + + next_dt = (((int64)next_dt << 16) - GPUClockCounter + GPUClockRatio - 1) / GPUClockRatio; + + next_dt = std::max(1, next_dt); + next_dt = std::min(128, next_dt); + + //printf("%d\n", next_dt); + + return(sys_timestamp + next_dt); + } +} + +void PS_GPU::StartFrame(EmulateSpecStruct *espec_arg) +{ + if(!espec_arg) + { + espec = NULL; + surface = NULL; + DisplayRect = NULL; + LineWidths = NULL; + skip = true; + return; + } + + espec = espec_arg; + + surface = espec->surface; + DisplayRect = &espec->DisplayRect; + LineWidths = espec->LineWidths; + skip = espec->skip; + + DisplayRect->x = 0; + DisplayRect->y = 0; + DisplayRect->w = 256; + DisplayRect->h = 240; + + // Clear ~0 state. + LineWidths[0].x = LineWidths[0].w = 0; + + for(int i = 0; i < 240; i++) + { + LineWidths[i].x = 0; + LineWidths[i].w = 0; + } + + if(espec->VideoFormatChanged) + { + for(int rc = 0; rc < 0x8000; rc++) + { + uint32 r, g, b; + + r = ((rc >> 0) & 0x1F) * 255 / 31; + g = ((rc >> 5) & 0x1F) * 255 / 31; + b = ((rc >> 10) & 0x1F) * 255 / 31; + OutputLUT[rc] = espec->surface->format.MakeColor(r, g, b, 0); + } + } +} + +} diff --git a/libmednahawk/src/psx/gpu.h b/libmednahawk/src/psx/gpu.h new file mode 100644 index 0000000000..f3f1e27628 --- /dev/null +++ b/libmednahawk/src/psx/gpu.h @@ -0,0 +1,330 @@ +// WARNING WARNING WARNING: ONLY use CanRead() method of BlitterFIFO, and NOT CanWrite(), since the FIFO is larger than the actual PS1 GPU FIFO to accommodate +// our lack of fancy superscalarish command sequencer. + +#ifndef __MDFN_PSX_GPU_H +#define __MDFN_PSX_GPU_H + +#include "../cdrom/SimpleFIFO.h" + +namespace MDFN_IEN_PSX +{ + +class PS_GPU; + +struct CTEntry +{ + uint8 len; + uint8 fifo_fb_len; + bool ss_cmd; + const char *name; + void (PS_GPU::*func[8])(const uint32 *cb); +}; + +struct tri_vertex +{ + int32 x, y; + int32 u, v; + int32 r, g, b; +}; + +struct i_group; +struct i_deltas; + +struct line_point +{ + int32 x, y; + uint8 r, g, b; +}; + +class PS_GPU +{ + public: + + PS_GPU(bool pal_clock_and_tv); + ~PS_GPU(); + + void Power(void); + + void ResetTS(void); + + void StartFrame(EmulateSpecStruct *espec); + + pscpu_timestamp_t Update(const pscpu_timestamp_t timestamp); + + void Write(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); + + INLINE bool CalcFIFOReadyBit(void) + { + if(InCmd & (INCMD_PLINE | INCMD_QUAD)) + return(false); + + if(BlitterFIFO.CanRead() == 0) + return(true); + + if(InCmd & (INCMD_FBREAD | INCMD_FBWRITE)) + return(false); + + if(BlitterFIFO.CanRead() >= Commands[0][BlitterFIFO.ReadUnit(true) >> 24].fifo_fb_len) + return(false); + + return(true); + } + + INLINE bool DMACanWrite(void) + { + return CalcFIFOReadyBit(); + } + + INLINE void AbortDMA(void) + { + BlitterFIFO.Flush(); + InCmd = INCMD_NONE; + } + + void WriteDMA(uint32 V); + + uint32 Read(const pscpu_timestamp_t timestamp, uint32 A); + + inline int32 GetScanlineNum(void) + { + return(scanline); + } + + INLINE uint16 PeekRAM(uint32 A) + { + return(GPURAM[(A >> 10) & 0x1FF][A & 0x3FF]); + } + + INLINE void PokeRAM(uint32 A, uint16 V) + { + GPURAM[(A >> 10) & 0x1FF][A & 0x3FF] = V; + } + + private: + + void ProcessFIFO(void); + void WriteCB(uint32 data); + void SoftReset(void); + + // Y, X + uint16 GPURAM[512][1024]; + + uint32 DMAControl; + + // + // Drawing stuff + // + //int32 TexPageX; // 0, 64, 128, 192, etc up to 960 + //int32 TexPageY; // 0 or 256 + //uint32 abr; // Semi-transparency mode(0~3) + //bool dtd; // Dithering enable + + int32 ClipX0; + int32 ClipY0; + int32 ClipX1; + int32 ClipY1; + + int32 OffsX; + int32 OffsY; + + bool dtd; + bool dfe; + + uint32 MaskSetOR; + uint32 MaskEvalAND; + + uint8 tww, twh, twx, twy; + struct + { + uint8 TexWindowXLUT_Pre[16]; + uint8 TexWindowXLUT[256]; + uint8 TexWindowXLUT_Post[16]; + }; + + struct + { + uint8 TexWindowYLUT_Pre[16]; + uint8 TexWindowYLUT[256]; + uint8 TexWindowYLUT_Post[16]; + }; + void RecalcTexWindowLUT(void); + + int32 TexPageX; + int32 TexPageY; + + uint32 SpriteFlip; + + uint32 abr; + uint32 TexMode; + + struct + { + uint8 RGB8SAT_Under[256]; + uint8 RGB8SAT[256]; + uint8 RGB8SAT_Over[256]; + }; + + uint8 DitherLUT[4][4][512]; // Y, X, 8-bit source value(256 extra for saturation) + + bool LineSkipTest(unsigned y); + + template + void PlotPixel(int32 x, int32 y, uint16 pix); + + template + uint16 GetTexel(uint32 clut_offset, int32 u, int32 v); + + uint16 ModTexel(uint16 texel, int32 r, int32 g, int32 b, const int32 dither_x, const int32 dither_y); + + template + void DrawSpan(int y, uint32 clut_offset, const int32 x_start, const int32 x_bound, const int32 bv_x, i_group ig, const i_deltas &idl); + + template + void DrawTriangle(tri_vertex *vertices, uint32 clut); + + template + void Command_DrawPolygon(const uint32 *cb); + + template + void DrawSprite(int32 x_arg, int32 y_arg, int32 w, int32 h, uint8 u_arg, uint8 v_arg, uint32 color, uint32 clut_offset); + + template + void Command_DrawSprite(const uint32 *cb); + + template + void DrawLine(line_point *vertices); + + template + void Command_DrawLine(const uint32 *cb); + + void Command_ClearCache(const uint32 *cb); + + void Command_FBFill(const uint32 *cb); + void Command_FBCopy(const uint32 *cb); + void Command_FBWrite(const uint32 *cb); + void Command_FBRead(const uint32 *cb); + + void Command_DrawMode(const uint32 *cb); + void Command_TexWindow(const uint32 *cb); + void Command_Clip0(const uint32 *cb); + void Command_Clip1(const uint32 *cb); + void Command_DrawingOffset(const uint32 *cb); + void Command_MaskSetting(const uint32 *cb); + + //zero 04-nov-2012 - change the way this table is setup to actually compile under msvc in under 1000 years + static CTEntry* Commands[4]; + static CTEntry Commands_MAC_0[256]; + static CTEntry Commands_MAC_1[256]; + static CTEntry Commands_MAC_2[256]; + static CTEntry Commands_MAC_3[256]; + + SimpleFIFO BlitterFIFO; + + uint32 DataReadBuffer; + + // + // + // + // Powers of 2 for faster multiple equality testing(just for multi-testing; InCmd itself will only contain 0, or a power of 2). + enum + { + INCMD_NONE = 0, + INCMD_PLINE = (1 << 0), + INCMD_QUAD = (1 << 1), + INCMD_FBWRITE = (1 << 2), + INCMD_FBREAD = (1 << 3) + }; + uint8 InCmd; + uint8 InCmd_CC; + + tri_vertex InQuad_F3Vertices[3]; + uint32 InQuad_clut; + + line_point InPLine_PrevPoint; + + uint32 FBRW_X; + uint32 FBRW_Y; + uint32 FBRW_W; + uint32 FBRW_H; + uint32 FBRW_CurY; + uint32 FBRW_CurX; + + // + // Display Parameters + // + uint32 DisplayMode; + + bool DisplayOff; + uint32 DisplayFB_XStart; + uint32 DisplayFB_YStart; + + uint32 HorizStart; + uint32 HorizEnd; + + uint32 VertStart; + uint32 VertEnd; + + // + // Display work vars + // +/* + uint32 DisplayMode_Latch; + + bool DisplayOff_Latch; + uint32 DisplayFB_XStart_Latch; + uint32 DisplayFB_YStart_Latch; + + uint32 HorizStart_Latch; + uint32 HorizEnd_Latch; + + uint32 VertStart_Latch; + uint32 VertEnd_Latch; +*/ + uint32 DisplayFB_CurYOffset; + uint32 DisplayFB_CurLineYReadout; + + uint32 DisplayHeightCounter; + + // + // + // + uint32 LinesPerField; + uint32 VisibleStartLine; + bool FrameInterlaced; + bool PALMode; + bool HeightMode; + uint32 scanline; + bool field; + bool field_atvs; + bool PhaseChange; + + uint32 DotClockCounter; + + uint64 GPUClockCounter; + uint32 GPUClockRatio; + int32 LineClockCounter; + int32 LinePhase; + + int32 DrawTimeAvail; + + pscpu_timestamp_t lastts; + + // + // + // + EmulateSpecStruct *espec; + MDFN_Surface *surface; + MDFN_Rect *DisplayRect; + MDFN_Rect *LineWidths; + bool skip; + bool HardwarePALType; + + uint32 OutputLUT[32768]; + void ReorderRGB_Var(uint32 out_Rshift, uint32 out_Gshift, uint32 out_Bshift, bool bpp24, const uint16 *src, uint32 *dest, const int32 dx_start, const int32 dx_end, int32 fb_x); + + template + NO_INLINE void ReorderRGB(bool bpp24, const uint16 *src, uint32 *dest, const int32 dx_start, const int32 dx_end, int32 fb_x); +}; + +} +#endif diff --git a/libmednahawk/src/psx/gpu_command_table.inc b/libmednahawk/src/psx/gpu_command_table.inc new file mode 100644 index 0000000000..8bf59f6265 --- /dev/null +++ b/libmednahawk/src/psx/gpu_command_table.inc @@ -0,0 +1,195 @@ +#define POLY_HELPER_SUB(cv, tm, mam) \ + &PS_GPU::Command_DrawPolygon<3 + ((cv & 0x8) >> 3), ((cv & 0x10) >> 4), ((cv & 0x4) >> 2), ((cv & 0x2) >> 1) ? BLENDMODE_MAC : -1, ((cv & 1) ^ 1) & ((cv & 0x4) >> 2), tm, mam > + +#define POLY_HELPER(cv) { 1 + (3 /*+ ((cv & 0x8) >> 3)*/) * ( 1 + ((cv & 0x4) >> 2) + ((cv & 0x10) >> 4) ) - ((cv & 0x10) >> 4), \ + 1, false, "Polygon", { POLY_HELPER_SUB(cv, ((cv & 0x4) ? 0 : 0), 0), POLY_HELPER_SUB(cv, ((cv & 0x4) ? 1 : 0), 0), \ + POLY_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 0), POLY_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 0), \ + POLY_HELPER_SUB(cv, ((cv & 0x4) ? 0 : 0), 1), POLY_HELPER_SUB(cv, ((cv & 0x4) ? 1 : 0), 1), \ + POLY_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 1), POLY_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 1), \ + } } + +// +// + +#define SPR_HELPER_SUB(cv, tm, mam) &PS_GPU::Command_DrawSprite<(cv >> 3) & 0x3, ((cv & 0x4) >> 2), ((cv & 0x2) >> 1) ? BLENDMODE_MAC : -1, ((cv & 1) ^ 1) & ((cv & 0x4) >> 2), tm, mam> + +#define SPR_HELPER(cv) { 2 + ((cv & 0x4) >> 2) + ((cv & 0x18) ? 0 : 1), 2 | ((cv & 0x4) >> 2) | ((cv & 0x18) ? 0 : 1), false, "Sprite", { \ + SPR_HELPER_SUB(cv, ((cv & 0x4) ? 0 : 0), 0), SPR_HELPER_SUB(cv, ((cv & 0x4) ? 1 : 0), 0), \ + SPR_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 0), SPR_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 0), \ + SPR_HELPER_SUB(cv, ((cv & 0x4) ? 0 : 0), 1), SPR_HELPER_SUB(cv, ((cv & 0x4) ? 1 : 0), 1), \ + SPR_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 1), SPR_HELPER_SUB(cv, ((cv & 0x4) ? 2 : 0), 1), \ + } } + +// +// + +#define LINE_HELPER_SUB(cv, mam) &PS_GPU::Command_DrawLine<((cv & 0x08) >> 3), ((cv & 0x10) >> 4), ((cv & 0x2) >> 1) ? BLENDMODE_MAC : -1, mam> + +#define LINE_HELPER(cv) { 3 + ((cv & 0x10) >> 4), 1, false, "Line", \ + { LINE_HELPER_SUB(cv, 0), LINE_HELPER_SUB(cv, 0), LINE_HELPER_SUB(cv, 0), LINE_HELPER_SUB(cv, 0), \ + LINE_HELPER_SUB(cv, 1), LINE_HELPER_SUB(cv, 1), LINE_HELPER_SUB(cv, 1), LINE_HELPER_SUB(cv, 1), } } + +// +// + +#define OTHER_HELPER(arg_cs, arg_fbcs, arg_ss, arg_name, arg_ptr) { arg_cs, arg_fbcs, arg_ss, arg_name, { arg_ptr, arg_ptr, arg_ptr, arg_ptr, arg_ptr, arg_ptr, arg_ptr, arg_ptr } } + +#define NULLCMD() { 1, 1, true, NULL, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } } + + + /* 0x00 */ + NULLCMD(), + OTHER_HELPER(1, 2, false, "Clear Cache", &PS_GPU::Command_ClearCache), + OTHER_HELPER(3, 3, false, "FB Fill", &PS_GPU::Command_FBFill), + + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0x10 */ + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0x20 */ + POLY_HELPER(0x20), + POLY_HELPER(0x21), + POLY_HELPER(0x22), + POLY_HELPER(0x23), + POLY_HELPER(0x24), + POLY_HELPER(0x25), + POLY_HELPER(0x26), + POLY_HELPER(0x27), + POLY_HELPER(0x28), + POLY_HELPER(0x29), + POLY_HELPER(0x2a), + POLY_HELPER(0x2b), + POLY_HELPER(0x2c), + POLY_HELPER(0x2d), + POLY_HELPER(0x2e), + POLY_HELPER(0x2f), + POLY_HELPER(0x30), + POLY_HELPER(0x31), + POLY_HELPER(0x32), + POLY_HELPER(0x33), + POLY_HELPER(0x34), + POLY_HELPER(0x35), + POLY_HELPER(0x36), + POLY_HELPER(0x37), + POLY_HELPER(0x38), + POLY_HELPER(0x39), + POLY_HELPER(0x3a), + POLY_HELPER(0x3b), + POLY_HELPER(0x3c), + POLY_HELPER(0x3d), + POLY_HELPER(0x3e), + POLY_HELPER(0x3f), + + LINE_HELPER(0x40), + LINE_HELPER(0x41), + LINE_HELPER(0x42), + LINE_HELPER(0x43), + LINE_HELPER(0x44), + LINE_HELPER(0x45), + LINE_HELPER(0x46), + LINE_HELPER(0x47), + LINE_HELPER(0x48), + LINE_HELPER(0x49), + LINE_HELPER(0x4a), + LINE_HELPER(0x4b), + LINE_HELPER(0x4c), + LINE_HELPER(0x4d), + LINE_HELPER(0x4e), + LINE_HELPER(0x4f), + LINE_HELPER(0x50), + LINE_HELPER(0x51), + LINE_HELPER(0x52), + LINE_HELPER(0x53), + LINE_HELPER(0x54), + LINE_HELPER(0x55), + LINE_HELPER(0x56), + LINE_HELPER(0x57), + LINE_HELPER(0x58), + LINE_HELPER(0x59), + LINE_HELPER(0x5a), + LINE_HELPER(0x5b), + LINE_HELPER(0x5c), + LINE_HELPER(0x5d), + LINE_HELPER(0x5e), + LINE_HELPER(0x5f), + + SPR_HELPER(0x60), + SPR_HELPER(0x61), + SPR_HELPER(0x62), + SPR_HELPER(0x63), + SPR_HELPER(0x64), + SPR_HELPER(0x65), + SPR_HELPER(0x66), + SPR_HELPER(0x67), + SPR_HELPER(0x68), + SPR_HELPER(0x69), + SPR_HELPER(0x6a), + SPR_HELPER(0x6b), + SPR_HELPER(0x6c), + SPR_HELPER(0x6d), + SPR_HELPER(0x6e), + SPR_HELPER(0x6f), + SPR_HELPER(0x70), + SPR_HELPER(0x71), + SPR_HELPER(0x72), + SPR_HELPER(0x73), + SPR_HELPER(0x74), + SPR_HELPER(0x75), + SPR_HELPER(0x76), + SPR_HELPER(0x77), + SPR_HELPER(0x78), + SPR_HELPER(0x79), + SPR_HELPER(0x7a), + SPR_HELPER(0x7b), + SPR_HELPER(0x7c), + SPR_HELPER(0x7d), + SPR_HELPER(0x7e), + SPR_HELPER(0x7f), + + /* 0x80 */ + OTHER_HELPER(4, 2, false, "FB Copy", &PS_GPU::Command_FBCopy), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0x90 */ + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0xA0 */ + OTHER_HELPER(3, 2, false, "FB Write", &PS_GPU::Command_FBWrite), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0xB0 */ + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0xC0 */ + OTHER_HELPER(3, 2, false, "FB Read", &PS_GPU::Command_FBRead), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0xD0 */ + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0xE0 */ + + NULLCMD(), + OTHER_HELPER(1, 2, false, "Draw mode settings", &PS_GPU::Command_DrawMode), + OTHER_HELPER(1, 2, false, "Texture window settings", &PS_GPU::Command_TexWindow), + OTHER_HELPER(1, 1, true, "Drawing area top left", &PS_GPU::Command_Clip0), + OTHER_HELPER(1, 1, true, "Drawing area bottom right", &PS_GPU::Command_Clip1), + OTHER_HELPER(1, 1, true, "Drawing offset", &PS_GPU::Command_DrawingOffset), + OTHER_HELPER(1, 2, false, "Mask settings", &PS_GPU::Command_MaskSetting), + + NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + + /* 0xF0 */ + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), NULLCMD(), + diff --git a/libmednahawk/src/psx/gpu_line.inc b/libmednahawk/src/psx/gpu_line.inc new file mode 100644 index 0000000000..5e02b52500 --- /dev/null +++ b/libmednahawk/src/psx/gpu_line.inc @@ -0,0 +1,249 @@ +struct line_fxp_coord +{ + int64 x, y; + int32 r, g, b; +}; + +struct line_fxp_step +{ + int64 dx_dk, dy_dk; + int32 dr_dk, dg_dk, db_dk; +}; + +enum { Line_XY_FractBits = 32 }; +enum { Line_RGB_FractBits = 12 }; + +template +static INLINE void LinePointToFXPCoord(const line_point &point, const line_fxp_step &step, line_fxp_coord &coord) +{ + coord.x = ((int64)point.x << Line_XY_FractBits) | (1LL << (Line_XY_FractBits - 1)); + coord.y = ((int64)point.y << Line_XY_FractBits) | (1LL << (Line_XY_FractBits - 1)); + + if(goraud) + { + coord.r = (point.r << Line_RGB_FractBits) | (1 << (Line_RGB_FractBits - 1)); + coord.g = (point.g << Line_RGB_FractBits) | (1 << (Line_RGB_FractBits - 1)); + coord.b = (point.b << Line_RGB_FractBits) | (1 << (Line_RGB_FractBits - 1)); + } + + // Not sure if this is correct or just roughly corresponds to behavior of real system(need more testing): + if(step.dx_dk < 0) + coord.x--; + + if(step.dy_dk < 0) + coord.y--; + + if(step.dr_dk < 0) + coord.r--; + + if(step.dg_dk < 0) + coord.g--; + + if(step.db_dk < 0) + coord.b--; +} + +template +static INLINE T LineDivide(T delta, int32 dk) +{ + delta <<= bits; + + if(delta < 0) + delta -= dk - 1; + if(delta > 0) + delta += dk - 1; + + return(delta / dk); +} + +template +static INLINE void LinePointsToFXPStep(const line_point &point0, const line_point &point1, const int32 dk, line_fxp_step &step) +{ + if(!dk) + { + step.dx_dk = 0; + step.dy_dk = 0; + + if(goraud) + { + step.dr_dk = 0; + step.dg_dk = 0; + step.db_dk = 0; + } + return; + } + + step.dx_dk = LineDivide(point1.x - point0.x, dk); + step.dy_dk = LineDivide(point1.y - point0.y, dk); + + if(goraud) + { + step.dr_dk = LineDivide(point1.r - point0.r, dk); + step.dg_dk = LineDivide(point1.g - point0.g, dk); + step.db_dk = LineDivide(point1.b - point0.b, dk); + } +} + +template +static INLINE void AddLineStep(line_fxp_coord &point, const line_fxp_step &step, int32 count = 1) +{ + point.x += step.dx_dk * count; + point.y += step.dy_dk * count; + + if(goraud) + { + point.r += step.dr_dk * count; + point.g += step.dg_dk * count; + point.b += step.db_dk * count; + } +} + +template +void PS_GPU::DrawLine(line_point *points) +{ + int32 i_dx; + int32 i_dy; + int32 k; + line_fxp_coord cur_point; + line_fxp_step step; + + i_dx = abs(points[1].x - points[0].x); + i_dy = abs(points[1].y - points[0].y); + k = (i_dx > i_dy) ? i_dx : i_dy; + + if(i_dx >= 1024) + { + //PSX_WARNING("[GPU] Line too long: i_dx=%d", i_dx); + return; + } + + if(i_dy >= 512) + { + //PSX_WARNING("[GPU] Line too long: i_dy=%d", i_dy); + return; + } + + // May not be correct(do tests for the case of k == i_dy on real thing. + if(points[0].x > points[1].x) + { + line_point tmp = points[1]; + + points[1] = points[0]; + points[0] = tmp; + } + + DrawTimeAvail -= k * ((BlendMode >= 0) ? 2 : 1); + + // + // + // + + LinePointsToFXPStep(points[0], points[1], k, step); + LinePointToFXPCoord(points[0], step, cur_point); + + // + // + // + for(int32 i = 0; i <= k; i++) // <= is not a typo. + { + // Sign extension is not necessary here for x and y, due to the maximum values that ClipX1 and ClipY1 can contain. + const int32 x = (cur_point.x >> Line_XY_FractBits) & 2047; + const int32 y = (cur_point.y >> Line_XY_FractBits) & 2047; + uint16 pix = 0x8000; + + if(!LineSkipTest(y)) + { + uint8 r, g, b; + + if(goraud) + { + r = cur_point.r >> Line_RGB_FractBits; + g = cur_point.g >> Line_RGB_FractBits; + b = cur_point.b >> Line_RGB_FractBits; + } + else + { + r = points[0].r; + g = points[0].g; + b = points[0].b; + } + + if(goraud && dtd) + { + pix |= DitherLUT[y & 3][x & 3][r] << 0; + pix |= DitherLUT[y & 3][x & 3][g] << 5; + pix |= DitherLUT[y & 3][x & 3][b] << 10; + } + else + { + pix |= (r >> 3) << 0; + pix |= (g >> 3) << 5; + pix |= (b >> 3) << 10; + } + + // FIXME: There has to be a faster way than checking for being inside the drawing area for each pixel. + if(x >= ClipX0 && x <= ClipX1 && y >= ClipY0 && y <= ClipY1) + PlotPixel(x, y, pix); + } + + AddLineStep(cur_point, step); + } +} + +template +void PS_GPU::Command_DrawLine(const uint32 *cb) +{ + const uint8 cc = cb[0] >> 24; // For pline handling later. + line_point points[2]; + + DrawTimeAvail -= 16; // FIXME, correct time. + + if(polyline && InCmd == INCMD_PLINE) + { + //printf("PLINE N\n"); + points[0] = InPLine_PrevPoint; + } + else + { + points[0].r = (*cb >> 0) & 0xFF; + points[0].g = (*cb >> 8) & 0xFF; + points[0].b = (*cb >> 16) & 0xFF; + cb++; + + points[0].x = sign_x_to_s32(11, ((*cb >> 0) & 0xFFFF)) + OffsX; + points[0].y = sign_x_to_s32(11, ((*cb >> 16) & 0xFFFF)) + OffsY; + cb++; + } + + if(goraud) + { + points[1].r = (*cb >> 0) & 0xFF; + points[1].g = (*cb >> 8) & 0xFF; + points[1].b = (*cb >> 16) & 0xFF; + cb++; + } + else + { + points[1].r = points[0].r; + points[1].g = points[0].g; + points[1].b = points[0].b; + } + + points[1].x = sign_x_to_s32(11, ((*cb >> 0) & 0xFFFF)) + OffsX; + points[1].y = sign_x_to_s32(11, ((*cb >> 16) & 0xFFFF)) + OffsY; + cb++; + + if(polyline) + { + InPLine_PrevPoint = points[1]; + + if(InCmd != INCMD_PLINE) + { + InCmd = INCMD_PLINE; + InCmd_CC = cc; + } + } + + DrawLine(points); +} + diff --git a/libmednahawk/src/psx/gpu_polygon.inc b/libmednahawk/src/psx/gpu_polygon.inc new file mode 100644 index 0000000000..d2726399ca --- /dev/null +++ b/libmednahawk/src/psx/gpu_polygon.inc @@ -0,0 +1,489 @@ +struct i_group +{ + int32 u, v; + int32 r, g, b; + int32 dummy0[3]; +}; + +struct i_deltas +{ + int32 du_dx, dv_dx; + int32 dr_dx, dg_dx, db_dx; + int32 dummy0[3]; + + int32 du_dy, dv_dy; + int32 dr_dy, dg_dy, db_dy; + int32 dummy1[3]; +}; + +static INLINE int64 MakePolyXFP(int32 x) +{ + return ((int64)x << 32) + ((1LL << 32) - (1 << 11)); +} + +static INLINE int64 MakePolyXFPStep(int32 dx, int32 dy) +{ + int64 ret; + int64 dx_ex = (int64)dx << 32; + + if(dx_ex < 0) + dx_ex -= dy - 1; + + if(dx_ex > 0) + dx_ex += dy - 1; + + ret = dx_ex / dy; + + return(ret); +} + +static INLINE int32 GetPolyXFP_Int(int64 xfp) +{ + return(xfp >> 32); +} + +//#define CALCIS(x,y) ( A.x * (B.y - C.y) + B.x * (C.y - A.y) + C.x * (A.y - B.y) ) +#define CALCIS(x,y) (((B.x - A.x) * (C.y - B.y)) - ((C.x - B.x) * (B.y - A.y))) +static INLINE bool CalcIDeltas(i_deltas &idl, const tri_vertex &A, const tri_vertex &B, const tri_vertex &C) +{ + int64 num = ((int64)COORD_MF_INT(1)) << 32; + int64 denom = CALCIS(x, y); + int64 one_div; + + if(!denom) + return(false); + +//num -= abs(denom) - 1; +// num += abs(denom) >> 1; + + one_div = num / denom; + + idl.dr_dx = ((one_div * CALCIS(r, y)) + 0x00000000) >> 32; + idl.dr_dy = ((one_div * CALCIS(x, r)) + 0x00000000) >> 32; + + idl.dg_dx = ((one_div * CALCIS(g, y)) + 0x00000000) >> 32; + idl.dg_dy = ((one_div * CALCIS(x, g)) + 0x00000000) >> 32; + + idl.db_dx = ((one_div * CALCIS(b, y)) + 0x00000000) >> 32; + idl.db_dy = ((one_div * CALCIS(x, b)) + 0x00000000) >> 32; + + idl.du_dx = ((one_div * CALCIS(u, y)) + 0x00000000) >> 32; + idl.du_dy = ((one_div * CALCIS(x, u)) + 0x00000000) >> 32; + + idl.dv_dx = ((one_div * CALCIS(v, y)) + 0x00000000) >> 32; + idl.dv_dy = ((one_div * CALCIS(x, v)) + 0x00000000) >> 32; + +// printf(" du_dx=%08x, du_dy=%08x\n", idl.du_dx, idl.du_dy); + + return(true); +} +#undef CALCIS + +template +static INLINE void AddIDeltas_DX(i_group &ig, const i_deltas &idl) +{ + if(textured) + { + ig.u += idl.du_dx; + ig.v += idl.dv_dx; + } + + if(goraud) + { + ig.r += idl.dr_dx; + ig.g += idl.dg_dx; + ig.b += idl.db_dx; + } +} + +template +static INLINE void AddIDeltas_DY(i_group &ig, const i_deltas &idl, int32 count = 1) +{ + if(textured) + { + ig.u += idl.du_dy * count; + ig.v += idl.dv_dy * count; + } + + if(goraud) + { + ig.r += idl.dr_dy * count; + ig.g += idl.dg_dy * count; + ig.b += idl.db_dy * count; + } +} + +template +INLINE void PS_GPU::DrawSpan(int y, uint32 clut_offset, const int32 x_start, const int32 x_bound, const int32 bv_x, i_group ig, const i_deltas &idl) +{ + int32 xs = x_start, xb = x_bound; + + if(LineSkipTest(y)) + return; + + if(xs < xb) // (xs != xb) + { + if(xs < ClipX0) + xs = ClipX0; + + if(xb > (ClipX1 + 1)) + xb = ClipX1 + 1; + + if(xs < xb) + { + DrawTimeAvail -= (xb - xs); + + if(goraud || textured) + { + DrawTimeAvail -= (xb - xs); + } + else if((BlendMode >= 0) || MaskEval_TA) + { + DrawTimeAvail -= (((xb + 1) & ~1) - (xs & ~1)) >> 1; + } + } + + if(textured) + { + ig.u += (xs - bv_x) * idl.du_dx; + ig.v += (xs - bv_x) * idl.dv_dx; + } + + if(goraud) + { + ig.r += (xs - bv_x) * idl.dr_dx; + ig.g += (xs - bv_x) * idl.dg_dx; + ig.b += (xs - bv_x) * idl.db_dx; + } + + for(int32 x = xs; x < xb; x++) + { + uint32 r, g, b; + + if(goraud) + { + r = RGB8SAT[COORD_GET_INT(ig.r)]; + g = RGB8SAT[COORD_GET_INT(ig.g)]; + b = RGB8SAT[COORD_GET_INT(ig.b)]; + } + else + { + r = COORD_GET_INT(ig.r); + g = COORD_GET_INT(ig.g); + b = COORD_GET_INT(ig.b); + } + + if(textured) + { + uint16 fbw = GetTexel(clut_offset, COORD_GET_INT(ig.u), COORD_GET_INT(ig.v)); + + if(fbw) + { + if(TexMult) + { + if(dtd) + fbw = ModTexel(fbw, r, g, b, x & 3, y & 3); + else + fbw = ModTexel(fbw, r, g, b, 3, 2); //x & 3, y & 3); + } + PlotPixel(x, y, fbw); + } + } + else + { + uint16 pix = 0x8000; + + if(goraud && dtd) + { + pix |= DitherLUT[y & 3][x & 3][r] << 0; + pix |= DitherLUT[y & 3][x & 3][g] << 5; + pix |= DitherLUT[y & 3][x & 3][b] << 10; + } + else + { + pix |= (r >> 3) << 0; + pix |= (g >> 3) << 5; + pix |= (b >> 3) << 10; + } + + PlotPixel(x, y, pix); + } + + AddIDeltas_DX(ig, idl); + //AddStep(perp_coord, perp_step); + } + } +} + +template +void PS_GPU::DrawTriangle(tri_vertex *vertices, uint32 clut) +{ + i_deltas idl; + +#if 0 + vertices[0].y = COORD_MF_INT(rand()); + vertices[1].y = COORD_MF_INT(rand()); + vertices[2].y = COORD_MF_INT(rand()); + + vertices[0].x = COORD_MF_INT(rand()); + vertices[1].x = COORD_MF_INT(rand()); + vertices[2].x = COORD_MF_INT(rand()); +#endif + + if(vertices[2].y < vertices[1].y) + { + tri_vertex tmp = vertices[1]; + vertices[1] = vertices[2]; + vertices[2] = tmp; + } + + if(vertices[1].y < vertices[0].y) + { + tri_vertex tmp = vertices[0]; + vertices[0] = vertices[1]; + vertices[1] = tmp; + } + + if(vertices[2].y < vertices[1].y) + { + tri_vertex tmp = vertices[1]; + vertices[1] = vertices[2]; + vertices[2] = tmp; + } + + if(vertices[0].y == vertices[2].y) + return; + + if((vertices[2].y - vertices[0].y) >= 512) + { + //PSX_WARNING("[GPU] Triangle height too large: %d", (vertices[2].y - vertices[0].y)); + return; + } + + if(abs(vertices[2].x - vertices[0].x) >= 1024 || + abs(vertices[2].x - vertices[1].x) >= 1024 || + abs(vertices[1].x - vertices[0].x) >= 1024) + { + //PSX_WARNING("[GPU] Triangle width too large: %d %d %d", abs(vertices[2].x - vertices[0].x), abs(vertices[2].x - vertices[1].x), abs(vertices[1].x - vertices[0].x)); + return; + } + + if(!CalcIDeltas(idl, vertices[0], vertices[1], vertices[2])) + return; + + // [0] should be top vertex, [2] should be bottom vertex, [1] should be off to the side vertex. + // + // + int32 y_start = vertices[0].y; + int32 y_middle = vertices[1].y; + int32 y_bound = vertices[2].y; + + int64 base_coord; + int64 base_step; + + int64 bound_coord_ul; + int64 bound_coord_us; + + int64 bound_coord_ll; + int64 bound_coord_ls; + + bool right_facing; + //bool bottom_up; + i_group ig; + + ig.u = COORD_MF_INT(vertices[0].u) + (1 << (COORD_FBS - 1)); + ig.v = COORD_MF_INT(vertices[0].v) + (1 << (COORD_FBS - 1)); + ig.r = COORD_MF_INT(vertices[0].r); + ig.g = COORD_MF_INT(vertices[0].g); + ig.b = COORD_MF_INT(vertices[0].b); + + base_coord = MakePolyXFP(vertices[0].x); //COORD_MF_INT(vertices[0].x) + ((1 << COORD_FBS) - 1); + base_step = MakePolyXFPStep((vertices[2].x - vertices[0].x), (vertices[2].y - vertices[0].y)); //ROUND_HELPER(COORD_MF_INT(vertices[2].x - vertices[0].x), (vertices[2].y - vertices[0].y)); + + bound_coord_ul = MakePolyXFP(vertices[0].x); // + ((1 << COORD_FBS) - 1); + bound_coord_ll = MakePolyXFP(vertices[1].x); // + ((1 << COORD_FBS) - 1); + + // + // + // + + + if(vertices[1].y == vertices[0].y) + { + bound_coord_us = 0; + right_facing = (bool)(vertices[1].x > vertices[0].x); + } + else + { + bound_coord_us = MakePolyXFPStep((vertices[1].x - vertices[0].x), (vertices[1].y - vertices[0].y)); + right_facing = (bool)(bound_coord_us > base_step); + } + + if(vertices[2].y == vertices[1].y) + bound_coord_ls = 0; + else + bound_coord_ls = MakePolyXFPStep((vertices[2].x - vertices[1].x), (vertices[2].y - vertices[1].y)); + + if(y_start < ClipY0) + { + int32 count = ClipY0 - y_start; + + y_start = ClipY0; + base_coord += base_step * count; + bound_coord_ul += bound_coord_us * count; + + AddIDeltas_DY(ig, idl, count); + + if(y_middle < ClipY0) + { + int32 count_ls = ClipY0 - y_middle; + + y_middle = ClipY0; + bound_coord_ll += bound_coord_ls * count_ls; + } + } + + if(y_bound > (ClipY1 + 1)) + { + y_bound = ClipY1 + 1; + + if(y_middle > y_bound) + y_middle = y_bound; + } + + if(right_facing) + { + for(int32 y = y_start; y < y_middle; y++) + { + DrawSpan(y, clut, GetPolyXFP_Int(base_coord), GetPolyXFP_Int(bound_coord_ul), vertices[0].x, ig, idl); + base_coord += base_step; + bound_coord_ul += bound_coord_us; + AddIDeltas_DY(ig, idl); + } + + for(int32 y = y_middle; y < y_bound; y++) + { + DrawSpan(y, clut, GetPolyXFP_Int(base_coord), GetPolyXFP_Int(bound_coord_ll), vertices[0].x, ig, idl); + base_coord += base_step; + bound_coord_ll += bound_coord_ls; + AddIDeltas_DY(ig, idl); + } + } + else + { + for(int32 y = y_start; y < y_middle; y++) + { + DrawSpan(y, clut, GetPolyXFP_Int(bound_coord_ul), GetPolyXFP_Int(base_coord), vertices[0].x, ig, idl); + base_coord += base_step; + bound_coord_ul += bound_coord_us; + AddIDeltas_DY(ig, idl); + } + + for(int32 y = y_middle; y < y_bound; y++) + { + DrawSpan(y, clut, GetPolyXFP_Int(bound_coord_ll), GetPolyXFP_Int(base_coord), vertices[0].x, ig, idl); + base_coord += base_step; + bound_coord_ll += bound_coord_ls; + AddIDeltas_DY(ig, idl); + } + } + +#if 0 + printf("[GPU] Vertices: %d:%d(r=%d, g=%d, b=%d) -> %d:%d(r=%d, g=%d, b=%d) -> %d:%d(r=%d, g=%d, b=%d)\n\n\n", vertices[0].x, vertices[0].y, + vertices[0].r, vertices[0].g, vertices[0].b, + vertices[1].x, vertices[1].y, + vertices[1].r, vertices[1].g, vertices[1].b, + vertices[2].x, vertices[2].y, + vertices[2].r, vertices[2].g, vertices[2].b); +#endif +} + +template +void PS_GPU::Command_DrawPolygon(const uint32 *cb) +{ + const unsigned cb0 = cb[0]; + tri_vertex vertices[3]; + uint32 clut = 0; + unsigned sv = 0; + //uint32 tpage = 0; + + // Base timing is approximate, and could be improved. + if(numvertices == 4 && InCmd == INCMD_QUAD) + DrawTimeAvail -= (28 + 18); + else + DrawTimeAvail -= (64 + 18); + + if(goraud && textured) + DrawTimeAvail -= 150 * 3; + else if(goraud) + DrawTimeAvail -= 96 * 3; + else if(textured) + DrawTimeAvail -= 60 * 3; + + if(numvertices == 4) + { + if(InCmd == INCMD_QUAD) + { + memcpy(&vertices[0], &InQuad_F3Vertices[1], 2 * sizeof(tri_vertex)); + clut = InQuad_clut; + sv = 2; + } + } + //else + // memset(vertices, 0, sizeof(vertices)); + + for(unsigned v = sv; v < 3; v++) + { + if(v == 0 || goraud) + { + uint32 raw_color = (*cb & 0xFFFFFF); + + vertices[v].r = raw_color & 0xFF; + vertices[v].g = (raw_color >> 8) & 0xFF; + vertices[v].b = (raw_color >> 16) & 0xFF; + + cb++; + } + else + { + vertices[v].r = vertices[0].r; + vertices[v].g = vertices[0].g; + vertices[v].b = vertices[0].b; + } + + vertices[v].x = sign_x_to_s32(11, ((int16)(*cb & 0xFFFF))) + OffsX; + vertices[v].y = sign_x_to_s32(11, ((int16)(*cb >> 16))) + OffsY; + cb++; + + if(textured) + { + vertices[v].u = (*cb & 0xFF); + vertices[v].v = (*cb >> 8) & 0xFF; + + if(v == 0) + { + clut = ((*cb >> 16) & 0xFFFF) << 4; + } + + cb++; + } + } + + if(numvertices == 4) + { + if(InCmd == INCMD_QUAD) + { + InCmd = INCMD_NONE; + } + else + { + InCmd = INCMD_QUAD; + InCmd_CC = cb0 >> 24; + memcpy(&InQuad_F3Vertices[0], &vertices[0], sizeof(tri_vertex) * 3); + InQuad_clut = clut; + } + } + + DrawTriangle(vertices, clut); +} + diff --git a/libmednahawk/src/psx/gpu_sprite.inc b/libmednahawk/src/psx/gpu_sprite.inc new file mode 100644 index 0000000000..a72e4617bc --- /dev/null +++ b/libmednahawk/src/psx/gpu_sprite.inc @@ -0,0 +1,232 @@ +template +void PS_GPU::DrawSprite(int32 x_arg, int32 y_arg, int32 w, int32 h, uint8 u_arg, uint8 v_arg, uint32 color, uint32 clut_offset) +{ + const int32 r = color & 0xFF; + const int32 g = (color >> 8) & 0xFF; + const int32 b = (color >> 16) & 0xFF; + const uint16 fill_color = 0x8000 | ((r >> 3) << 0) | ((g >> 3) << 5) | ((b >> 3) << 10); + + int32 x_start, x_bound; + int32 y_start, y_bound; + uint8 u, v; + int v_inc = 1, u_inc = 1; + + //printf("[GPU] Sprite: x=%d, y=%d, w=%d, h=%d\n", x_arg, y_arg, w, h); + + x_start = x_arg; + x_bound = x_arg + w; + + y_start = y_arg; + y_bound = y_arg + h; + + if(textured) + { + u = u_arg; + v = v_arg; + + if(FlipX) + { + u_inc = -1; + u |= 1; + } + // FIXME: Something weird happens when lower bit of u is set and we're not doing horizontal flip, but I'm not sure what it is exactly(needs testing) + // It may only happen to the first pixel, so look for that case too during testing. + //else + // u = (u + 1) & ~1; + + if(FlipY) + { + v_inc = -1; + } + } + + if(x_start < ClipX0) + { + if(textured) + u += (ClipX0 - x_start) * u_inc; + + x_start = ClipX0; + } + + if(y_start < ClipY0) + { + if(textured) + v += (ClipY0 - y_start) * v_inc; + + y_start = ClipY0; + } + + if(x_bound > (ClipX1 + 1)) + x_bound = ClipX1 + 1; + + if(y_bound > (ClipY1 + 1)) + y_bound = ClipY1 + 1; + + if(y_bound > y_start && x_bound > x_start) + { + // + // Note(TODO): From tests on a PS1, even a 0-width sprite takes up time to "draw" proportional to its height. + // + int32 suck_time = (x_bound - x_start) * (y_bound - y_start); + + // Disabled until we can get it to take into account texture windowing, which can cause large sprites to be drawn entirely from cache(and not suffer from a texturing + // penalty); and disabled until we find a game that needs more accurate sprite draw timing. :b +#if 0 + if(textured) + { + // Empirically-observed approximations of time(66MHz cycles) taken to draw large textured sprites in the various texture depths, when the texture data and CLUT data + // was zero(non-zero takes longer to draw, TODO test that more): + // 4bpp - area * 2 + // 8bpp - area * 3 + // 15/16bpp - area * 5 + // (other factors come into more importance for smaller sprites) + static const int cw[4] = { 64, 32, 32, 32 }; + static const int ch[4] = { 64, 64, 32, 32 }; + static const int mm[4] = { 2 - 1, 3 - 1, 5 - 1, 5 - 1 }; + + // Parts of the first few(up to texture cache height) horizontal lines can be in cache, so assume they are. + suck_time += mm[TexMode_TA] * std::max(0, (x_bound - x_start) - cw[TexMode_TA]) * std::min(ch[TexMode_TA], y_bound - y_start); + + // The rest of the horizontal lines should not possibly have parts in the cache now. + suck_time += mm[TexMode_TA] * (x_bound - x_start) * std::max(0, (y_bound - y_start) - ch[TexMode_TA]); + } + else +#endif + + if((BlendMode >= 0) || MaskEval_TA) + { + suck_time += ((((x_bound + 1) & ~1) - (x_start & ~1)) * (y_bound - y_start)) >> 1; + } + + DrawTimeAvail -= suck_time; + } + + + //HeightMode && !dfe && ((y & 1) == ((DisplayFB_YStart + !field_atvs) & 1)) && !DisplayOff + //printf("%d:%d, %d, %d ---- heightmode=%d displayfb_ystart=%d field_atvs=%d displayoff=%d\n", w, h, scanline, dfe, HeightMode, DisplayFB_YStart, field_atvs, DisplayOff); + + for(int32 y = y_start; y < y_bound; y++) + { + uint8 u_r; + + if(textured) + u_r = u; + + if(!LineSkipTest(y)) + { + for(int32 x = x_start; x < x_bound; x++) + { + if(textured) + { + uint16 fbw = GetTexel(clut_offset, u_r, v); + + if(fbw) + { + if(TexMult) + { + fbw = ModTexel(fbw, r, g, b, 3, 2); + } + PlotPixel(x, y, fbw); + } + } + else + PlotPixel(x, y, fill_color); + + if(textured) + u_r += u_inc; + } + } + if(textured) + v += v_inc; + } +} + +template +void PS_GPU::Command_DrawSprite(const uint32 *cb) +{ + int32 x, y; + int32 w, h; + uint8 u = 0, v = 0; + uint32 color = 0; + uint32 clut = 0; + + DrawTimeAvail -= 16; // FIXME, correct time. + + color = *cb & 0x00FFFFFF; + cb++; + + x = sign_x_to_s32(11, (*cb & 0xFFFF)); + y = sign_x_to_s32(11, (*cb >> 16)); + cb++; + + if(textured) + { + u = *cb & 0xFF; + v = (*cb >> 8) & 0xFF; + clut = ((*cb >> 16) & 0xFFFF) << 4; + cb++; + } + + switch(raw_size) + { + default: + case 0: + w = (*cb & 0x3FF); + h = (*cb >> 16) & 0x1FF; + cb++; + break; + + case 1: + w = 1; + h = 1; + break; + + case 2: + w = 8; + h = 8; + break; + + case 3: + w = 16; + h = 16; + break; + } + + //printf("SPRITE: %d %d %d -- %d %d\n", raw_size, x, y, w, h); + + x = sign_x_to_s32(11, x + OffsX); + y = sign_x_to_s32(11, y + OffsY); + + switch(SpriteFlip & 0x3000) + { + case 0x0000: + if(!TexMult || color == 0x808080) + DrawSprite(x, y, w, h, u, v, color, clut); + else + DrawSprite(x, y, w, h, u, v, color, clut); + break; + + case 0x1000: + if(!TexMult || color == 0x808080) + DrawSprite(x, y, w, h, u, v, color, clut); + else + DrawSprite(x, y, w, h, u, v, color, clut); + break; + + case 0x2000: + if(!TexMult || color == 0x808080) + DrawSprite(x, y, w, h, u, v, color, clut); + else + DrawSprite(x, y, w, h, u, v, color, clut); + break; + + case 0x3000: + if(!TexMult || color == 0x808080) + DrawSprite(x, y, w, h, u, v, color, clut); + else + DrawSprite(x, y, w, h, u, v, color, clut); + break; + } +} + + diff --git a/libmednahawk/src/psx/gte.cpp b/libmednahawk/src/psx/gte.cpp new file mode 100644 index 0000000000..f902b4fe66 --- /dev/null +++ b/libmednahawk/src/psx/gte.cpp @@ -0,0 +1,1741 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PSXDEV_GTE_TESTING +#include "psx.h" +#include "gte.h" +#endif + +static uint32 ReciprocalTable[0x8000] = +{ + #include "gte_divrecip.inc" +}; + +/* Notes: + + AVSZ3/AVSZ4: + OTZ is MAC0 >> 12 + OTZ overflow/underflow flag is set in an overflow condition even if MAC0 == 0. + sf field bit has no effect? + + FLAG register: + Bits present mask: 0xfffff000 + + Checksum bit can't be directly set, it's apparently calculated like (bool)(FLAGS & 0x7f87e000) + + Instructions effectively clear it 0 at start. (todo: test "invalid" instructions) + + X/Y FIFO [3] register write pushes a copy down to [2] + +*/ + +#ifndef PSXDEV_GTE_TESTING +namespace MDFN_IEN_PSX +{ +#endif + +//zero 07-feb-2012 removed packed +typedef struct +{ + int16 MX[3][3]; + int16 dummy; +} /*__attribute__((__packed__))*/ gtematrix; + +typedef struct +{ + union + { + struct + { + uint8 R; + uint8 G; + uint8 B; + uint8 CD; + }; + uint8 Raw8[4]; + }; +} gtergb; + +typedef struct +{ + int16 X; + int16 Y; +} gtexy; + +int16 Lm_B(unsigned int which, int32 value, int lm); +uint8 Lm_C(unsigned int which, int32 value); + + + +int32 Lm_G(unsigned int which, int32 value); +int32 Lm_H(int32 value); + +void MAC_to_RGB_FIFO(void); +void MAC_to_IR(int lm); + +void MultiplyMatrixByVector(const gtematrix *matrix, const int16 *v, const int32 *crv, uint32 sf, int lm); + +static uint32 CR[32]; +static uint32 FLAGS; // Temporary for instruction execution, copied into CR[31] at end of instruction execution. + +typedef union +{ + gtematrix All[4]; + int32 Raw[4][5]; // Don't read from this(Raw[][]), only write(and when writing, if running on a big-endian platform, swap the upper 16-bits with the lower 16-bits) + int16 Raw16[4][10]; + + struct + { + gtematrix Rot; + gtematrix Light; + gtematrix Color; + gtematrix AbbyNormal; + }; +} Matrices_t; + +static Matrices_t Matrices; + +static union +{ + int32 All[4][4]; // Really only [4][3], but [4] to ease address calculation. + + struct + { + int32 T[4]; + int32 B[4]; + int32 FC[4]; + int32 Null[4]; + }; +} CRVectors; + +static int32 OFX; +static int32 OFY; +static uint16 H; +static int16 DQA; +static int32 DQB; + +static int16 ZSF3; +static int16 ZSF4; + + +// Begin DR +static int16 Vectors[3][4]; +static gtergb RGB; +static uint16 OTZ; + +static int16 IR[4]; + +#define IR0 IR[0] +#define IR1 IR[1] +#define IR2 IR[2] +#define IR3 IR[3] + +static gtexy XY_FIFO[4]; +static uint16 Z_FIFO[4]; +static gtergb RGB_FIFO[3]; +static int32 MAC[4]; +static uint32 LZCS; +static uint32 LZCR; + +static uint32 Reg23; +// end DR + +int32 RTPS(uint32 instr); +int32 RTPT(uint32 instr); + +int32 NCLIP(uint32 instr); + +void NormColor(uint32 sf, int lm, uint32 v); +int32 NCS(uint32 instr); +int32 NCT(uint32 instr); + + +void NormColorColor(uint32 v, uint32 sf, int lm); +int32 NCCS(uint32 instr); +int32 NCCT(uint32 instr); + +void NormColorDepthCue(uint32 v, uint32 sf, int lm); +int32 NCDS(uint32 instr); +int32 NCDT(uint32 instr); + +int32 AVSZ3(uint32 instr); +int32 AVSZ4(uint32 instr); + +int32 OP(uint32 instr); + +int32 GPF(uint32 instr); +int32 GPL(uint32 instr); + +void DepthCue(int mult_IR123, int RGB_from_FIFO, uint32 sf, int lm); +int32 DCPL(uint32 instr); +int32 DPCS(uint32 instr); +int32 DPCT(uint32 instr); +int32 INTPL(uint32 instr); + +int32 SQR(uint32 instr); +int32 MVMVA(uint32 instr); + +static INLINE uint8 Sat5(int16 cc) +{ + if(cc < 0) + cc = 0; + if(cc > 0x1F) + cc = 0x1F; + return(cc); +} + + + +void GTE_Power(void) +{ + memset(CR, 0, sizeof(CR)); + //memset(DR, 0, sizeof(DR)); + + memset(Matrices.All, 0, sizeof(Matrices.All)); + memset(CRVectors.All, 0, sizeof(CRVectors.All)); + OFX = 0; + OFY = 0; + H = 0; + DQA = 0; + DQB = 0; + ZSF3 = 0; + ZSF4 = 0; + + + memset(Vectors, 0, sizeof(Vectors)); + memset(&RGB, 0, sizeof(RGB)); + OTZ = 0; + IR0 = 0; + IR1 = 0; + IR2 = 0; + IR3 = 0; + + memset(XY_FIFO, 0, sizeof(XY_FIFO)); + memset(Z_FIFO, 0, sizeof(Z_FIFO)); + memset(RGB_FIFO, 0, sizeof(RGB_FIFO)); + memset(MAC, 0, sizeof(MAC)); + LZCS = 0; + LZCR = 0; + + Reg23 = 0; +} + +// TODO: Don't save redundant state, regarding CR cache variables +int GTE_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY32(CR, 32), + SFVAR(FLAGS), + + SFARRAY16(&Matrices.Raw16[0][0], 4 * 10), + + SFARRAY32(&CRVectors.All[0][0], 4 * 4), + + SFVAR(OFX), + SFVAR(OFY), + SFVAR(H), + SFVAR(DQA), + SFVAR(DQB), + + SFVAR(ZSF3), + SFVAR(ZSF4), + SFARRAY16(&Vectors[0][0], 3 * 4), + + SFARRAY(RGB.Raw8, 4), + SFVAR(OTZ), + SFARRAY16(IR, 4), + + SFVAR(XY_FIFO[0].X), + SFVAR(XY_FIFO[0].Y), + SFVAR(XY_FIFO[1].X), + SFVAR(XY_FIFO[1].Y), + SFVAR(XY_FIFO[2].X), + SFVAR(XY_FIFO[2].Y), + SFVAR(XY_FIFO[3].X), + SFVAR(XY_FIFO[3].Y), + + SFARRAY16(Z_FIFO, 4), + + SFARRAY(RGB_FIFO[0].Raw8, 4), + SFARRAY(RGB_FIFO[1].Raw8, 4), + SFARRAY(RGB_FIFO[2].Raw8, 4), + SFARRAY(RGB_FIFO[3].Raw8, 4), + + SFARRAY32(MAC, 4), + + SFVAR(LZCS), + SFVAR(LZCR), + SFVAR(Reg23), + + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "GTE"); + + if(load) + { + + } + + return(ret); +} + + +void GTE_WriteCR(unsigned int which, uint32 value) +{ + static const uint32 mask_table[32] = { + /* 0x00 */ + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + + /* 0x08 */ + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + + /* 0x10 */ + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + + /* 0x18 */ + 0xFFFFFFFF, 0xFFFFFFFF, 0x0000FFFF, 0x0000FFFF, 0xFFFFFFFF, 0x0000FFFF, 0x0000FFFF, 0xFFFFFFFF + }; + + //PSX_WARNING("[GTE] Write CR %d, 0x%08x", which, value); + + value &= mask_table[which]; + + CR[which] = value | (CR[which] & ~mask_table[which]); + + if(which < 24) + { + int we = which >> 3; + which &= 0x7; + + if(which >= 5) + CRVectors.All[we][which - 5] = value; + else + { + #ifdef MSB_FIRST + Matrices.Raw[we][which] = (value << 16) | (value >> 16); + #else + Matrices.Raw[we][which] = value; + #endif + } + return; + } + + switch(which) + { + case 24: + OFX = value; + break; + + case 25: + OFY = value; + break; + + case 26: + H = value; + break; + + case 27: + DQA = value; + break; + + case 28: + DQB = value; + break; + + case 29: + ZSF3 = value; + break; + + case 30: + ZSF4 = value; + break; + + case 31: + CR[31] = (value & 0x7ffff000) | ((value & 0x7f87e000) ? (1 << 31) : 0); + break; + } +} + +uint32 GTE_ReadCR(unsigned int which) +{ + uint32 ret = 0; + + switch(which) + { + default: + ret = CR[which]; + if(which == 4 || which == 12 || which == 20) + ret = (int16)ret; + break; + + case 24: + ret = OFX; + break; + + case 25: + ret = OFY; + break; + + case 26: + ret = (int16)H; + break; + + case 27: + ret = (int16)DQA; + break; + + case 28: + ret = DQB; + break; + + case 29: + ret = (int16)ZSF3; + break; + + case 30: + ret = (int16)ZSF4; + break; + + case 31: + ret = CR[31]; + break; + } + + return(ret); +} + +void GTE_WriteDR(unsigned int which, uint32 value) +{ + switch(which & 0x1F) + { + case 0: + Vectors[0][0] = value; + Vectors[0][1] = value >> 16; + break; + + case 1: + Vectors[0][2] = value; + break; + + case 2: + Vectors[1][0] = value; + Vectors[1][1] = value >> 16; + break; + + case 3: + Vectors[1][2] = value; + break; + + case 4: + Vectors[2][0] = value; + Vectors[2][1] = value >> 16; + break; + + case 5: + Vectors[2][2] = value; + break; + + case 6: + RGB.R = value >> 0; + RGB.G = value >> 8; + RGB.B = value >> 16; + RGB.CD = value >> 24; + break; + + case 7: + OTZ = value; + break; + + case 8: + IR0 = value; + break; + + case 9: + IR1 = value; + break; + + case 10: + IR2 = value; + break; + + case 11: + IR3 = value; + break; + + case 12: + XY_FIFO[0].X = value; + XY_FIFO[0].Y = value >> 16; + break; + + case 13: + XY_FIFO[1].X = value; + XY_FIFO[1].Y = value >> 16; + break; + + case 14: + XY_FIFO[2].X = value; + XY_FIFO[2].Y = value >> 16; + XY_FIFO[3].X = value; + XY_FIFO[3].Y = value >> 16; + break; + + case 15: + XY_FIFO[3].X = value; + XY_FIFO[3].Y = value >> 16; + + XY_FIFO[0] = XY_FIFO[1]; + XY_FIFO[1] = XY_FIFO[2]; + XY_FIFO[2] = XY_FIFO[3]; + break; + + case 16: + Z_FIFO[0] = value; + break; + + case 17: + Z_FIFO[1] = value; + break; + + case 18: + Z_FIFO[2] = value; + break; + + case 19: + Z_FIFO[3] = value; + break; + + case 20: + RGB_FIFO[0].R = value; + RGB_FIFO[0].G = value >> 8; + RGB_FIFO[0].B = value >> 16; + RGB_FIFO[0].CD = value >> 24; + break; + + case 21: + RGB_FIFO[1].R = value; + RGB_FIFO[1].G = value >> 8; + RGB_FIFO[1].B = value >> 16; + RGB_FIFO[1].CD = value >> 24; + break; + + case 22: + RGB_FIFO[2].R = value; + RGB_FIFO[2].G = value >> 8; + RGB_FIFO[2].B = value >> 16; + RGB_FIFO[2].CD = value >> 24; + break; + + case 23: + Reg23 = value; + break; + + case 24: + MAC[0] = value; + break; + + case 25: + MAC[1] = value; + break; + + case 26: + MAC[2] = value; + break; + + case 27: + MAC[3] = value; + break; + + case 28: + IR1 = ((value >> 0) & 0x1F) << 7; + IR2 = ((value >> 5) & 0x1F) << 7; + IR3 = ((value >> 10) & 0x1F) << 7; + break; + + case 29: // Read-only + break; + + case 30: + LZCS = value; + { + uint32 test = value & 0x80000000; + LZCR = 0; + + while((value & 0x80000000) == test && LZCR < 32) + { + LZCR++; + value <<= 1; + } + } + break; + + case 31: // Read-only + break; + } +} + +uint32 GTE_ReadDR(unsigned int which) +{ + uint32 ret = 0; + + switch(which & 0x1F) + { + case 0: + ret = (uint16)Vectors[0][0] | ((uint16)Vectors[0][1] << 16); + break; + + case 1: + ret = (int16)Vectors[0][2]; + break; + + case 2: + ret = (uint16)Vectors[1][0] | ((uint16)Vectors[1][1] << 16); + break; + + case 3: + ret = (int16)Vectors[1][2]; + break; + + case 4: + ret = (uint16)Vectors[2][0] | ((uint16)Vectors[2][1] << 16); + break; + + case 5: + ret = (int16)Vectors[2][2]; + break; + + case 6: + ret = RGB.R | (RGB.G << 8) | (RGB.B << 16) | (RGB.CD << 24); + break; + + case 7: + ret = (uint16)OTZ; + break; + + case 8: + ret = (int16)IR0; + break; + + case 9: + ret = (int16)IR1; + break; + + case 10: + ret = (int16)IR2; + break; + + case 11: + ret = (int16)IR3; + break; + + case 12: + ret = (uint16)XY_FIFO[0].X | ((uint16)XY_FIFO[0].Y << 16); + break; + + case 13: + ret = (uint16)XY_FIFO[1].X | ((uint16)XY_FIFO[1].Y << 16); + break; + + case 14: + ret = (uint16)XY_FIFO[2].X | ((uint16)XY_FIFO[2].Y << 16); + break; + + case 15: + ret = (uint16)XY_FIFO[3].X | ((uint16)XY_FIFO[3].Y << 16); + break; + + case 16: + ret = (uint16)Z_FIFO[0]; + break; + + case 17: + ret = (uint16)Z_FIFO[1]; + break; + + case 18: + ret = (uint16)Z_FIFO[2]; + break; + + case 19: + ret = (uint16)Z_FIFO[3]; + break; + + case 20: + ret = RGB_FIFO[0].R | (RGB_FIFO[0].G << 8) | (RGB_FIFO[0].B << 16) | (RGB_FIFO[0].CD << 24); + break; + + case 21: + ret = RGB_FIFO[1].R | (RGB_FIFO[1].G << 8) | (RGB_FIFO[1].B << 16) | (RGB_FIFO[1].CD << 24); + break; + + case 22: + ret = RGB_FIFO[2].R | (RGB_FIFO[2].G << 8) | (RGB_FIFO[2].B << 16) | (RGB_FIFO[2].CD << 24); + break; + + case 23: + ret = Reg23; + break; + + case 24: + ret = MAC[0]; + break; + + case 25: + ret = MAC[1]; + break; + + case 26: + ret = MAC[2]; + break; + + case 27: + ret = MAC[3]; + break; + + case 28: + case 29: + ret = Sat5(IR1 >> 7) | (Sat5(IR2 >> 7) << 5) | (Sat5(IR3 >> 7) << 10); + break; + + case 30: + ret = LZCS; + break; + + case 31: + ret = LZCR; + break; + } + return(ret); +} + +#define sign_x_to_s64(_bits, _value) (((int64)((uint64)(_value) << (64 - _bits))) >> (64 - _bits)) +INLINE int64 A_MV(unsigned which, int64 value) +{ + if(value >= (1LL << 43)) + FLAGS |= 1 << (30 - which); + + if(value < -(1LL << 43)) + FLAGS |= 1 << (27 - which); + + return sign_x_to_s64(44, value); +} + +INLINE int64 F(int64 value) +{ + if(value < -2147483648LL) + { + // flag set here + FLAGS |= 1 << 15; + } + + if(value > 2147483647LL) + { + // flag set here + FLAGS |= 1 << 16; + } + return(value); +} + + +INLINE int16 Lm_B(unsigned int which, int32 value, int lm) +{ + int32 tmp = lm << 15; + + if(value < (-32768 + tmp)) + { + // set flag here + FLAGS |= 1 << (24 - which); + value = -32768 + tmp; + } + + if(value > 32767) + { + // Set flag here + FLAGS |= 1 << (24 - which); + value = 32767; + } + + return(value); +} + + +INLINE int16 Lm_B_PTZ(unsigned int which, int32 value, int32 ftv_value, int lm) +{ + int32 tmp = lm << 15; + + if(ftv_value < -32768) + { + FLAGS |= 1 << (24 - which); + } + + if(ftv_value > 32767) + { + FLAGS |= 1 << (24 - which); + } + + if(value < (-32768 + tmp)) + { + value = -32768 + tmp; + } + + if(value > 32767) + { + value = 32767; + } + + return(value); +} + +INLINE uint8 Lm_C(unsigned int which, int32 value) +{ + if(value & ~0xFF) + { + // Set flag here + FLAGS |= 1 << (21 - which); // Tested with GPF + + if(value < 0) + value = 0; + + if(value > 255) + value = 255; + } + + return(value); +} + +INLINE int32 Lm_D(int32 value, int unchained) +{ + // Not sure if we should have it as int64, or just chain on to and special case when the F flags are set. + if(!unchained) + { + if(FLAGS & (1 << 15)) + { + FLAGS |= 1 << 18; + return(0); + } + + if(FLAGS & (1 << 16)) + { + FLAGS |= 1 << 18; + return(0xFFFF); + } + } + + if(value < 0) + { + // Set flag here + value = 0; + FLAGS |= 1 << 18; // Tested with AVSZ3 + } + else if(value > 65535) + { + // Set flag here. + value = 65535; + FLAGS |= 1 << 18; // Tested with AVSZ3 + } + + return(value); +} + +INLINE int32 Lm_G(unsigned int which, int32 value) +{ + if(value < -1024) + { + // Set flag here + value = -1024; + FLAGS |= 1 << (14 - which); + } + + if(value > 1023) + { + // Set flag here. + value = 1023; + FLAGS |= 1 << (14 - which); + } + + return(value); +} + +// limit to 4096, not 4095 +INLINE int32 Lm_H(int32 value) +{ +#if 0 + if(FLAGS & (1 << 15)) + { + value = 0; + FLAGS |= 1 << 12; + return value; + } + + if(FLAGS & (1 << 16)) + { + value = 4096; + FLAGS |= 1 << 12; + return value; + } +#endif + + if(value < 0) + { + value = 0; + FLAGS |= 1 << 12; + } + + if(value > 4096) + { + value = 4096; + FLAGS |= 1 << 12; + } + + return(value); +} + +INLINE void MAC_to_RGB_FIFO(void) +{ + RGB_FIFO[0] = RGB_FIFO[1]; + RGB_FIFO[1] = RGB_FIFO[2]; + RGB_FIFO[2].R = Lm_C(0, MAC[1] >> 4); + RGB_FIFO[2].G = Lm_C(1, MAC[2] >> 4); + RGB_FIFO[2].B = Lm_C(2, MAC[3] >> 4); + RGB_FIFO[2].CD = RGB.CD; +} + + +INLINE void MAC_to_IR(int lm) +{ + IR1 = Lm_B(0, MAC[1], lm); + IR2 = Lm_B(1, MAC[2], lm); + IR3 = Lm_B(2, MAC[3], lm); +} + +INLINE void MultiplyMatrixByVector(const gtematrix *matrix, const int16 *v, const int32 *crv, uint32 sf, int lm) +{ + unsigned i; + + for(i = 0; i < 3; i++) + { + int64 tmp; + int32 mulr[3]; + + tmp = (int64)crv[i] << 12; + + if(matrix == &Matrices.AbbyNormal) + { + if(i == 0) + { + mulr[0] = -((RGB.R << 4) * v[0]); + mulr[1] = (RGB.R << 4) * v[1]; + mulr[2] = IR0 * v[2]; + } + else + { + mulr[0] = (int16)CR[i] * v[0]; + mulr[1] = (int16)CR[i] * v[1]; + mulr[2] = (int16)CR[i] * v[2]; + } + } + else + { + mulr[0] = matrix->MX[i][0] * v[0]; + mulr[1] = matrix->MX[i][1] * v[1]; + mulr[2] = matrix->MX[i][2] * v[2]; + } + + tmp = A_MV(i, tmp + mulr[0]); + if(crv == CRVectors.FC) + { + Lm_B(i, tmp >> sf, FALSE); + tmp = 0; + } + + tmp = A_MV(i, tmp + mulr[1]); + tmp = A_MV(i, tmp + mulr[2]); + + MAC[1 + i] = tmp >> sf; + } + + + MAC_to_IR(lm); +} + + +INLINE void MultiplyMatrixByVector_PT(const gtematrix *matrix, const int16 *v, const int32 *crv, uint32 sf, int lm) +{ + int64 tmp[3]; + unsigned i; + + for(i = 0; i < 3; i++) + { + int32 mulr[3]; + + tmp[i] = (int64)crv[i] << 12; + + mulr[0] = matrix->MX[i][0] * v[0]; + mulr[1] = matrix->MX[i][1] * v[1]; + mulr[2] = matrix->MX[i][2] * v[2]; + + tmp[i] = A_MV(i, tmp[i] + mulr[0]); + tmp[i] = A_MV(i, tmp[i] + mulr[1]); + tmp[i] = A_MV(i, tmp[i] + mulr[2]); + + MAC[1 + i] = tmp[i] >> sf; + } + + IR1 = Lm_B(0, MAC[1], lm); + IR2 = Lm_B(1, MAC[2], lm); + //printf("FTV: %08x %08x\n", crv[2], (uint32)(tmp[2] >> 12)); + IR3 = Lm_B_PTZ(2, MAC[3], tmp[2] >> 12, lm); + + Z_FIFO[0] = Z_FIFO[1]; + Z_FIFO[1] = Z_FIFO[2]; + Z_FIFO[2] = Z_FIFO[3]; + Z_FIFO[3] = Lm_D(tmp[2] >> 12, TRUE); +} + +//zero 07-feb-2012 removed unused +//#define VAR_UNUSED __attribute__((unused)) +#define VAR_UNUSED + +#define DECODE_FIELDS \ + const uint32 sf VAR_UNUSED = (instr & (1 << 19)) ? 12 : 0; \ + const uint32 mx VAR_UNUSED = (instr >> 17) & 0x3; \ + const uint32 v_i = (instr >> 15) & 0x3; \ + const int32* cv VAR_UNUSED = CRVectors.All[(instr >> 13) & 0x3]; \ + const int lm VAR_UNUSED = (instr >> 10) & 1; \ + int16 v[3]; \ + if(v_i == 3) \ + { \ + v[0] = IR1; \ + v[1] = IR2; \ + v[2] = IR3; \ + } \ + else \ + { \ + v[0] = Vectors[v_i][0]; \ + v[1] = Vectors[v_i][1]; \ + v[2] = Vectors[v_i][2]; \ + } + + +int32 SQR(uint32 instr) +{ + DECODE_FIELDS; + + MAC[1] = ((IR1 * IR1) >> sf); + MAC[2] = ((IR2 * IR2) >> sf); + MAC[3] = ((IR3 * IR3) >> sf); + + MAC_to_IR(lm); + + return(5); +} + + +int32 MVMVA(uint32 instr) +{ + DECODE_FIELDS; + + MultiplyMatrixByVector(&Matrices.All[mx], v, cv, sf, lm); + + return(8); +} + +static INLINE unsigned CountLeadingZeroU16(uint16 val) +{ + unsigned ret = 0; + + while(!(val & 0x8000) && ret < 16) + { + val <<= 1; + ret++; + } + + return ret; +} + +static INLINE uint32 Divide(uint32 dividend, uint32 divisor) +{ + //if((Z_FIFO[3] * 2) > H) + if((divisor * 2) > dividend) + { + unsigned shift_bias = CountLeadingZeroU16(divisor); + + dividend <<= shift_bias; + divisor <<= shift_bias; + + return ((int64)dividend * ReciprocalTable[divisor & 0x7FFF] + 32768) >> 16; + } + else + { + FLAGS |= 1 << 17; + return 0x1FFFF; + } +} + +static INLINE void TransformXY(int64 h_div_sz) +{ + MAC[0] = F((int64)OFX + IR1 * h_div_sz) >> 16; + XY_FIFO[3].X = Lm_G(0, MAC[0]); + + MAC[0] = F((int64)OFY + IR2 * h_div_sz) >> 16; + XY_FIFO[3].Y = Lm_G(1, MAC[0]); + + XY_FIFO[0] = XY_FIFO[1]; + XY_FIFO[1] = XY_FIFO[2]; + XY_FIFO[2] = XY_FIFO[3]; +} + +static INLINE void TransformDQ(int64 h_div_sz) +{ + MAC[0] = F((int64)DQB + DQA * h_div_sz); + IR0 = Lm_H(((int64)DQB + DQA * h_div_sz) >> 12); +} + +int32 RTPS(uint32 instr) +{ + DECODE_FIELDS; + int64 h_div_sz; + + MultiplyMatrixByVector_PT(&Matrices.Rot, Vectors[0], CRVectors.T, sf, lm); + h_div_sz = Divide(H, Z_FIFO[3]); + + TransformXY(h_div_sz); + TransformDQ(h_div_sz); + + return(15); +} + +int32 RTPT(uint32 instr) +{ + DECODE_FIELDS; + int i; + + for(i = 0; i < 3; i++) + { + int64 h_div_sz; + + MultiplyMatrixByVector_PT(&Matrices.Rot, Vectors[i], CRVectors.T, sf, lm); + h_div_sz = Divide(H, Z_FIFO[3]); + + TransformXY(h_div_sz); + + if(i == 2) + TransformDQ(h_div_sz); + } + + return(23); +} + +INLINE void NormColor(uint32 sf, int lm, uint32 v) +{ + int16 tmp_vector[3]; + + MultiplyMatrixByVector(&Matrices.Light, Vectors[v], CRVectors.Null, sf, lm); + + tmp_vector[0] = IR1; tmp_vector[1] = IR2; tmp_vector[2] = IR3; + MultiplyMatrixByVector(&Matrices.Color, tmp_vector, CRVectors.B, sf, lm); + + MAC_to_RGB_FIFO(); +} + +int32 NCS(uint32 instr) +{ + DECODE_FIELDS; + + NormColor(sf, lm, 0); + + return(14); +} + +int32 NCT(uint32 instr) +{ + DECODE_FIELDS; + int i; + + for(i = 0; i < 3; i++) + NormColor(sf, lm, i); + + return(30); +} + +INLINE void NormColorColor(uint32 v, uint32 sf, int lm) +{ + int16 tmp_vector[3]; + + MultiplyMatrixByVector(&Matrices.Light, Vectors[v], CRVectors.Null, sf, lm); + + tmp_vector[0] = IR1; tmp_vector[1] = IR2; tmp_vector[2] = IR3; + MultiplyMatrixByVector(&Matrices.Color, tmp_vector, CRVectors.B, sf, lm); + + MAC[1] = ((RGB.R << 4) * IR1) >> sf; + MAC[2] = ((RGB.G << 4) * IR2) >> sf; + MAC[3] = ((RGB.B << 4) * IR3) >> sf; + + MAC_to_IR(lm); + + MAC_to_RGB_FIFO(); +} + +int32 NCCS(uint32 instr) +{ + DECODE_FIELDS; + + NormColorColor(0, sf, lm); + return(17); +} + + +int32 NCCT(uint32 instr) +{ + int i; + DECODE_FIELDS; + + for(i = 0; i < 3; i++) + NormColorColor(i, sf, lm); + + return(39); +} + +INLINE void DepthCue(int mult_IR123, int RGB_from_FIFO, uint32 sf, int lm) +{ + int32 RGB_temp[3]; + int32 IR_temp[3] = { IR1, IR2, IR3 }; + int i; + + //assert(sf); + + if(RGB_from_FIFO) + { + RGB_temp[0] = RGB_FIFO[0].R << 4; + RGB_temp[1] = RGB_FIFO[0].G << 4; + RGB_temp[2] = RGB_FIFO[0].B << 4; + } + else + { + RGB_temp[0] = RGB.R << 4; + RGB_temp[1] = RGB.G << 4; + RGB_temp[2] = RGB.B << 4; + } + + if(mult_IR123) + { + for(i = 0; i < 3; i++) + { + MAC[1 + i] = A_MV(i, (((int64)CRVectors.FC[i] << 12) - RGB_temp[i] * IR_temp[i])) >> sf; + MAC[1 + i] = A_MV(i, (RGB_temp[i] * IR_temp[i] + IR0 * Lm_B(i, MAC[1 + i], FALSE))) >> sf; + } + } + else + { + for(i = 0; i < 3; i++) + { + MAC[1 + i] = A_MV(i, (((int64)CRVectors.FC[i] << 12) - (RGB_temp[i] << 12))) >> sf; + MAC[1 + i] = A_MV(i, (((int64)RGB_temp[i] << 12) + IR0 * Lm_B(i, MAC[1 + i], FALSE))) >> sf; + } + } + + MAC_to_IR(lm); + + MAC_to_RGB_FIFO(); +} + + +int32 DCPL(uint32 instr) +{ + DECODE_FIELDS; + + DepthCue(TRUE, FALSE, sf, lm); + + return(8); +} + + +int32 DPCS(uint32 instr) +{ + DECODE_FIELDS; + + DepthCue(FALSE, FALSE, sf, lm); + + return(8); +} + +int32 DPCT(uint32 instr) +{ + int i; + DECODE_FIELDS; + + for(i = 0; i < 3; i++) + { + DepthCue(FALSE, TRUE, sf, lm); + } + + return(17); +} + +int32 INTPL(uint32 instr) +{ + DECODE_FIELDS; + + MAC[1] = A_MV(0, (((int64)CRVectors.FC[0] << 12) - (IR1 << 12))) >> sf; + MAC[2] = A_MV(1, (((int64)CRVectors.FC[1] << 12) - (IR2 << 12))) >> sf; + MAC[3] = A_MV(2, (((int64)CRVectors.FC[2] << 12) - (IR3 << 12))) >> sf; + + MAC[1] = A_MV(0, (((int64)IR1 << 12) + IR0 * Lm_B(0, MAC[1], FALSE)) >> sf); + MAC[2] = A_MV(1, (((int64)IR2 << 12) + IR0 * Lm_B(1, MAC[2], FALSE)) >> sf); + MAC[3] = A_MV(2, (((int64)IR3 << 12) + IR0 * Lm_B(2, MAC[3], FALSE)) >> sf); + + MAC_to_IR(lm); + + MAC_to_RGB_FIFO(); + + return(8); +} + + +INLINE void NormColorDepthCue(uint32 v, uint32 sf, int lm) +{ + int16 tmp_vector[3]; + + MultiplyMatrixByVector(&Matrices.Light, Vectors[v], CRVectors.Null, sf, lm); + + tmp_vector[0] = IR1; tmp_vector[1] = IR2; tmp_vector[2] = IR3; + MultiplyMatrixByVector(&Matrices.Color, tmp_vector, CRVectors.B, sf, lm); + + DepthCue(TRUE, FALSE, sf, lm); +} + +int32 NCDS(uint32 instr) +{ + DECODE_FIELDS; + + NormColorDepthCue(0, sf, lm); + + return(19); +} + +int32 NCDT(uint32 instr) +{ + int i; + DECODE_FIELDS; + + for(i = 0; i < 3; i++) + { + NormColorDepthCue(i, sf, lm); + } + + return(44); +} + +int32 CC(uint32 instr) +{ + DECODE_FIELDS; + int16 tmp_vector[3]; + + tmp_vector[0] = IR1; tmp_vector[1] = IR2; tmp_vector[2] = IR3; + MultiplyMatrixByVector(&Matrices.Color, tmp_vector, CRVectors.B, sf, lm); + + MAC[1] = ((RGB.R << 4) * IR1) >> sf; + MAC[2] = ((RGB.G << 4) * IR2) >> sf; + MAC[3] = ((RGB.B << 4) * IR3) >> sf; + + MAC_to_IR(lm); + + MAC_to_RGB_FIFO(); + + return(11); +} + +int32 CDP(uint32 instr) +{ + DECODE_FIELDS; + int16 tmp_vector[3]; + + tmp_vector[0] = IR1; tmp_vector[1] = IR2; tmp_vector[2] = IR3; + MultiplyMatrixByVector(&Matrices.Color, tmp_vector, CRVectors.B, sf, lm); + + DepthCue(TRUE, FALSE, sf, lm); + + return(13); +} + +int32 NCLIP(uint32 instr) +{ + DECODE_FIELDS; + + MAC[0] = F( (int64)(XY_FIFO[0].X * (XY_FIFO[1].Y - XY_FIFO[2].Y)) + (XY_FIFO[1].X * (XY_FIFO[2].Y - XY_FIFO[0].Y)) + (XY_FIFO[2].X * (XY_FIFO[0].Y - XY_FIFO[1].Y)) + ); + + return(8); +} + +int32 AVSZ3(uint32 instr) +{ + DECODE_FIELDS; + + MAC[0] = F(((int64)ZSF3 * (Z_FIFO[1] + Z_FIFO[2] + Z_FIFO[3]))); + + OTZ = Lm_D(MAC[0] >> 12, FALSE); + + return(5); +} + +int32 AVSZ4(uint32 instr) +{ + DECODE_FIELDS; + + MAC[0] = F(((int64)ZSF4 * (Z_FIFO[0] + Z_FIFO[1] + Z_FIFO[2] + Z_FIFO[3]))); + + OTZ = Lm_D(MAC[0] >> 12, FALSE); + + return(5); +} + + +// -32768 * -32768 - 32767 * -32768 = 2147450880 +// (2 ^ 31) - 1 = 2147483647 +int32 OP(uint32 instr) +{ + DECODE_FIELDS; + + MAC[1] = ((Matrices.Rot.MX[1][1] * IR3) - (Matrices.Rot.MX[2][2] * IR2)) >> sf; + MAC[2] = ((Matrices.Rot.MX[2][2] * IR1) - (Matrices.Rot.MX[0][0] * IR3)) >> sf; + MAC[3] = ((Matrices.Rot.MX[0][0] * IR2) - (Matrices.Rot.MX[1][1] * IR1)) >> sf; + + MAC_to_IR(lm); + + return(6); +} + +int32 GPF(uint32 instr) +{ + DECODE_FIELDS; + + MAC[1] = (IR0 * IR1) >> sf; + MAC[2] = (IR0 * IR2) >> sf; + MAC[3] = (IR0 * IR3) >> sf; + + MAC_to_IR(lm); + + MAC_to_RGB_FIFO(); + + return(5); +} + +int32 GPL(uint32 instr) +{ + DECODE_FIELDS; + + MAC[1] = A_MV(0, ((int64)MAC[1] << sf) + (IR0 * IR1)) >> sf; + MAC[2] = A_MV(1, ((int64)MAC[2] << sf) + (IR0 * IR2)) >> sf; + MAC[3] = A_MV(2, ((int64)MAC[3] << sf) + (IR0 * IR3)) >> sf; + + MAC_to_IR(lm); + + MAC_to_RGB_FIFO(); + + return(5); +} + +/* + +--------------------------------------------------------------------------------------------- +| 24 23 22 21 20 | 19 | 18 17 | 16 15 | 14 13 | 12 11 | 10 | 9 8 7 6 | 5 4 3 2 1 0 | +|-------------------------------------------------------------------------------------------| +| (unused) | sf | mx | v | cv |(unused)| lm | (unused) | opcode | +--------------------------------------------------------------------------------------------- + (unused) = unused, ignored + + sf = shift 12 + + mx = matrix selection + + v = source vector + + cv = add vector(translation/back/far color(bugged)/none) + + (unused) = unused, ignored + + lm = limit negative results to 0 + + (unused) = unused, ignored + + opcode = operation code +*/ + +int32 GTE_Instruction(uint32 instr) +{ + const unsigned code = instr & 0x3F; + int32 ret = 1; + + FLAGS = 0; + + switch(code) + { + default: +#ifndef PSXDEV_GTE_TESTING + PSX_WARNING("[GTE] Unknown instruction code: 0x%02x", code); +#endif + break; + + case 0x00: // alternate? + case 0x01: + ret = RTPS(instr); + break; + +/* + case 0x02: // UNSTABLE? + break; + + case 0x03: // UNSTABLE? + break; + + case 0x04: // Probably simple with v,cv,sf,mx,lm ignored. Same calculation as 0x3B? + break; + + case 0x05: // UNSTABLE? + break; +*/ + + case 0x06: + ret = NCLIP(instr); + break; + +/* + case 0x07: // UNSTABLE? + break; + + case 0x08: // UNSTABLE? + break; + + case 0x09: // UNSTABLE? + break; + + case 0x0A: // UNSTABLE? + break; + + case 0x0B: // UNSTABLE? + break; + +*/ + + case 0x0C: + ret = OP(instr); + break; + +/* + case 0x0D: // UNSTABLE? + break; + + case 0x0E: // UNSTABLE? + break; + + case 0x0F: // UNSTABLE? + break; +*/ + + case 0x10: + ret = DPCS(instr); + break; + + case 0x11: + ret = INTPL(instr); + break; + + case 0x12: + ret = MVMVA(instr); + break; + + case 0x13: + ret = NCDS(instr); + break; + + case 0x14: + ret = CDP(instr); + break; + + +/* + case 0x15: // does one push on RGB FIFO, what else... + break; +*/ + + case 0x16: + ret = NCDT(instr); + break; + +/* + case 0x17: // PARTIALLY UNSTABLE(depending on sf or v or cv or mx or lm???), similar behavior under some conditions to 0x16? + break; + + case 0x18: + break; + + case 0x19: + break; +*/ + + case 0x1A: // Alternate for 0x29? + ret = DCPL(instr); + break; + + case 0x1B: + ret = NCCS(instr); + break; + + case 0x1C: + ret = CC(instr); + break; + +/* + case 0x1D: + break; +*/ + + case 0x1E: + ret = NCS(instr); + break; + +/* + case 0x1F: + break; +*/ + + case 0x20: + ret = NCT(instr); + break; +/* + case 0x21: + break; + + case 0x22: // UNSTABLE? + break; + + case 0x23: + break; + + case 0x24: + break; + + case 0x25: + break; + + case 0x26: + break; + + case 0x27: + break; +*/ + + case 0x28: + ret = SQR(instr); + break; + + case 0x29: + ret = DCPL(instr); + break; + + case 0x2A: + ret = DPCT(instr); + break; + +/* + case 0x2B: + break; + + case 0x2C: + break; +*/ + + case 0x2D: + ret = AVSZ3(instr); + break; + + case 0x2E: + ret = AVSZ4(instr); + break; + +/* + case 0x2F: // UNSTABLE? + break; +*/ + + case 0x30: + ret = RTPT(instr); + break; + +/* + case 0x31: // UNSTABLE? + break; + + case 0x32: // UNSTABLE? + break; + + case 0x33: // UNSTABLE? + break; + + case 0x34: // UNSTABLE? + break; + + case 0x35: // UNSTABLE? + break; + + case 0x36: // UNSTABLE? + break; + + case 0x37: // UNSTABLE? + break; + + case 0x38: + break; + + case 0x39: // Probably simple with v,cv,sf,mx,lm ignored. + break; + + case 0x3A: // Probably simple with v,cv,sf,mx,lm ignored. + break; + + case 0x3B: // Probably simple with v,cv,sf,mx,lm ignored. Same calculation as 0x04? + break; + + case 0x3C: // UNSTABLE? + break; +*/ + + case 0x3D: + ret = GPF(instr); + break; + + case 0x3E: + ret = GPL(instr); + break; + + case 0x3F: + ret = NCCT(instr); + break; + } + + if(FLAGS & 0x7f87e000) + FLAGS |= 1 << 31; + + CR[31] = FLAGS; + + return(ret - 1); +} + +#ifndef PSXDEV_GTE_TESTING +} +#endif diff --git a/libmednahawk/src/psx/gte.h b/libmednahawk/src/psx/gte.h new file mode 100644 index 0000000000..81dd681ad8 --- /dev/null +++ b/libmednahawk/src/psx/gte.h @@ -0,0 +1,21 @@ +#ifndef __MDFN_PSX_GTE_H +#define __MDFN_PSX_GTE_H + +namespace MDFN_IEN_PSX +{ + +void GTE_Power(void); +int GTE_StateAction(StateMem *sm, int load, int data_only); + +int32 GTE_Instruction(uint32 instr); + +void GTE_WriteCR(unsigned int which, uint32 value); +void GTE_WriteDR(unsigned int which, uint32 value); + +uint32 GTE_ReadCR(unsigned int which); +uint32 GTE_ReadDR(unsigned int which); + + +} + +#endif diff --git a/libmednahawk/src/psx/gte_divrecip.inc b/libmednahawk/src/psx/gte_divrecip.inc new file mode 100644 index 0000000000..479f9b4c6d --- /dev/null +++ b/libmednahawk/src/psx/gte_divrecip.inc @@ -0,0 +1,32768 @@ +0x00020000, +0x0001fffc, +0x0001fff8, +0x0001fff4, +0x0001fff0, +0x0001ffec, +0x0001ffe8, +0x0001ffe4, +0x0001ffe0, +0x0001ffdc, +0x0001ffd8, +0x0001ffd4, +0x0001ffd0, +0x0001ffcc, +0x0001ffc8, +0x0001ffc4, +0x0001ffc0, +0x0001ffbc, +0x0001ffb8, +0x0001ffb4, +0x0001ffb0, +0x0001ffac, +0x0001ffa8, +0x0001ffa4, +0x0001ffa0, +0x0001ff9c, +0x0001ff98, +0x0001ff94, +0x0001ff90, +0x0001ff8c, +0x0001ff88, +0x0001ff84, +0x0001ff80, +0x0001ff7c, +0x0001ff78, +0x0001ff74, +0x0001ff70, +0x0001ff6c, +0x0001ff68, +0x0001ff64, +0x0001ff60, +0x0001ff5c, +0x0001ff58, +0x0001ff54, +0x0001ff50, +0x0001ff4c, +0x0001ff48, +0x0001ff44, +0x0001ff40, +0x0001ff3c, +0x0001ff38, +0x0001ff34, +0x0001ff30, +0x0001ff2c, +0x0001ff28, +0x0001ff24, +0x0001ff20, +0x0001ff1c, +0x0001ff18, +0x0001ff14, +0x0001ff10, +0x0001ff0c, +0x0001ff08, +0x0001ff04, +0x0001ff01, +0x0001fefd, +0x0001fef9, +0x0001fef5, +0x0001fef1, +0x0001feed, +0x0001fee9, +0x0001fee5, +0x0001fee1, +0x0001fedd, +0x0001fed9, +0x0001fed5, +0x0001fed1, +0x0001fecd, +0x0001fec9, +0x0001fec5, +0x0001fec1, +0x0001febd, +0x0001feb9, +0x0001feb5, +0x0001feb1, +0x0001fead, +0x0001fea9, +0x0001fea5, +0x0001fea1, +0x0001fe9d, +0x0001fe99, +0x0001fe95, +0x0001fe91, +0x0001fe8d, +0x0001fe89, +0x0001fe85, +0x0001fe81, +0x0001fe7e, +0x0001fe7a, +0x0001fe76, +0x0001fe72, +0x0001fe6e, +0x0001fe6a, +0x0001fe66, +0x0001fe62, +0x0001fe5e, +0x0001fe5a, +0x0001fe56, +0x0001fe52, +0x0001fe4e, +0x0001fe4a, +0x0001fe46, +0x0001fe42, +0x0001fe3e, +0x0001fe3a, +0x0001fe36, +0x0001fe32, +0x0001fe2e, +0x0001fe2a, +0x0001fe26, +0x0001fe22, +0x0001fe1e, +0x0001fe1a, +0x0001fe16, +0x0001fe12, +0x0001fe0e, +0x0001fe0a, +0x0001fe06, +0x0001fe02, +0x0001fdfe, +0x0001fdfa, +0x0001fdf6, +0x0001fdf2, +0x0001fdee, +0x0001fdea, +0x0001fde6, +0x0001fde2, +0x0001fdde, +0x0001fdda, +0x0001fdd6, +0x0001fdd2, +0x0001fdce, +0x0001fdca, +0x0001fdc6, +0x0001fdc2, +0x0001fdbe, +0x0001fdba, +0x0001fdb6, +0x0001fdb2, +0x0001fdae, +0x0001fdaa, +0x0001fda6, +0x0001fda2, +0x0001fd9e, +0x0001fd9a, +0x0001fd96, +0x0001fd92, +0x0001fd8e, +0x0001fd8a, +0x0001fd86, +0x0001fd82, +0x0001fd7f, +0x0001fd7b, +0x0001fd77, +0x0001fd73, +0x0001fd6f, +0x0001fd6b, +0x0001fd67, +0x0001fd63, +0x0001fd5f, +0x0001fd5b, +0x0001fd57, +0x0001fd53, +0x0001fd4f, +0x0001fd4b, +0x0001fd47, +0x0001fd43, +0x0001fd3f, +0x0001fd3b, +0x0001fd37, +0x0001fd33, +0x0001fd2f, +0x0001fd2b, +0x0001fd27, +0x0001fd23, +0x0001fd1f, +0x0001fd1b, +0x0001fd17, +0x0001fd13, +0x0001fd0f, +0x0001fd0b, +0x0001fd07, +0x0001fd04, +0x0001fd00, +0x0001fcfc, +0x0001fcf8, +0x0001fcf4, +0x0001fcf0, +0x0001fcec, +0x0001fce8, +0x0001fce4, +0x0001fce0, +0x0001fcdc, +0x0001fcd8, +0x0001fcd4, +0x0001fcd0, +0x0001fccc, +0x0001fcc8, +0x0001fcc4, +0x0001fcc0, +0x0001fcbd, +0x0001fcb9, +0x0001fcb5, +0x0001fcb1, +0x0001fcad, +0x0001fca9, +0x0001fca5, +0x0001fca1, +0x0001fc9d, +0x0001fc99, +0x0001fc95, +0x0001fc91, +0x0001fc8d, +0x0001fc89, +0x0001fc87, +0x0001fc83, +0x0001fc7f, +0x0001fc7b, +0x0001fc77, +0x0001fc73, +0x0001fc6f, +0x0001fc6b, +0x0001fc67, +0x0001fc63, +0x0001fc5f, +0x0001fc5b, +0x0001fc57, +0x0001fc53, +0x0001fc4f, +0x0001fc4b, +0x0001fc47, +0x0001fc43, +0x0001fc40, +0x0001fc3c, +0x0001fc38, +0x0001fc34, +0x0001fc30, +0x0001fc2c, +0x0001fc28, +0x0001fc24, +0x0001fc20, +0x0001fc1c, +0x0001fc18, +0x0001fc14, +0x0001fc10, +0x0001fc0c, +0x0001fc08, +0x0001fc04, +0x0001fc00, +0x0001fbfc, +0x0001fbf8, +0x0001fbf4, +0x0001fbf0, +0x0001fbec, +0x0001fbe8, +0x0001fbe4, +0x0001fbe0, +0x0001fbdc, +0x0001fbd8, +0x0001fbd4, +0x0001fbd0, +0x0001fbcc, +0x0001fbc8, +0x0001fbc4, +0x0001fbc1, +0x0001fbbd, +0x0001fbb9, +0x0001fbb5, +0x0001fbb1, +0x0001fbad, +0x0001fba9, +0x0001fba5, +0x0001fba1, +0x0001fb9d, +0x0001fb99, +0x0001fb95, +0x0001fb91, +0x0001fb8d, +0x0001fb8b, +0x0001fb87, +0x0001fb83, +0x0001fb7f, +0x0001fb7b, +0x0001fb77, +0x0001fb73, +0x0001fb6f, +0x0001fb6b, +0x0001fb67, +0x0001fb63, +0x0001fb5f, +0x0001fb5b, +0x0001fb57, +0x0001fb53, +0x0001fb4f, +0x0001fb4b, +0x0001fb47, +0x0001fb43, +0x0001fb40, +0x0001fb3c, +0x0001fb38, +0x0001fb34, +0x0001fb30, +0x0001fb2c, +0x0001fb28, +0x0001fb24, +0x0001fb20, +0x0001fb1c, +0x0001fb18, +0x0001fb14, +0x0001fb10, +0x0001fb0d, +0x0001fb09, +0x0001fb05, +0x0001fb01, +0x0001fafd, +0x0001faf9, +0x0001faf5, +0x0001faf1, +0x0001faed, +0x0001fae9, +0x0001fae5, +0x0001fae1, +0x0001fadd, +0x0001fad9, +0x0001fad5, +0x0001fad2, +0x0001face, +0x0001faca, +0x0001fac6, +0x0001fac2, +0x0001fabe, +0x0001faba, +0x0001fab6, +0x0001fab2, +0x0001faae, +0x0001faaa, +0x0001faa6, +0x0001faa2, +0x0001fa9e, +0x0001fa9a, +0x0001fa96, +0x0001fa92, +0x0001fa8e, +0x0001fa8a, +0x0001fa86, +0x0001fa82, +0x0001fa7f, +0x0001fa7b, +0x0001fa77, +0x0001fa73, +0x0001fa6f, +0x0001fa6b, +0x0001fa67, +0x0001fa65, +0x0001fa61, +0x0001fa5d, +0x0001fa59, +0x0001fa55, +0x0001fa51, +0x0001fa4d, +0x0001fa49, +0x0001fa45, +0x0001fa41, +0x0001fa3d, +0x0001fa39, +0x0001fa35, +0x0001fa31, +0x0001fa2d, +0x0001fa2a, +0x0001fa26, +0x0001fa22, +0x0001fa1e, +0x0001fa1a, +0x0001fa16, +0x0001fa12, +0x0001fa0e, +0x0001fa0a, +0x0001fa06, +0x0001fa02, +0x0001f9fe, +0x0001f9fa, +0x0001f9f6, +0x0001f9f2, +0x0001f9ee, +0x0001f9ea, +0x0001f9e6, +0x0001f9e2, +0x0001f9de, +0x0001f9da, +0x0001f9d6, +0x0001f9d3, +0x0001f9cf, +0x0001f9cb, +0x0001f9c7, +0x0001f9c3, +0x0001f9bf, +0x0001f9bd, +0x0001f9b9, +0x0001f9b5, +0x0001f9b1, +0x0001f9ad, +0x0001f9a9, +0x0001f9a5, +0x0001f9a1, +0x0001f99d, +0x0001f999, +0x0001f995, +0x0001f991, +0x0001f98d, +0x0001f989, +0x0001f985, +0x0001f982, +0x0001f97e, +0x0001f97a, +0x0001f976, +0x0001f972, +0x0001f96e, +0x0001f96a, +0x0001f966, +0x0001f962, +0x0001f95e, +0x0001f95a, +0x0001f956, +0x0001f952, +0x0001f94e, +0x0001f94a, +0x0001f946, +0x0001f942, +0x0001f93e, +0x0001f93a, +0x0001f936, +0x0001f932, +0x0001f92e, +0x0001f92b, +0x0001f927, +0x0001f923, +0x0001f91f, +0x0001f91b, +0x0001f918, +0x0001f914, +0x0001f910, +0x0001f90c, +0x0001f908, +0x0001f904, +0x0001f900, +0x0001f8fc, +0x0001f8f8, +0x0001f8f4, +0x0001f8f0, +0x0001f8ec, +0x0001f8e8, +0x0001f8e4, +0x0001f8e0, +0x0001f8dd, +0x0001f8db, +0x0001f8d7, +0x0001f8d3, +0x0001f8cf, +0x0001f8cb, +0x0001f8c7, +0x0001f8c3, +0x0001f8bf, +0x0001f8bb, +0x0001f8b7, +0x0001f8b3, +0x0001f8af, +0x0001f8ab, +0x0001f8a7, +0x0001f8a3, +0x0001f89f, +0x0001f89c, +0x0001f898, +0x0001f894, +0x0001f890, +0x0001f88c, +0x0001f888, +0x0001f884, +0x0001f880, +0x0001f87c, +0x0001f878, +0x0001f874, +0x0001f870, +0x0001f86c, +0x0001f868, +0x0001f864, +0x0001f860, +0x0001f85f, +0x0001f85b, +0x0001f857, +0x0001f853, +0x0001f84f, +0x0001f84b, +0x0001f847, +0x0001f843, +0x0001f83f, +0x0001f83b, +0x0001f837, +0x0001f833, +0x0001f82f, +0x0001f82b, +0x0001f827, +0x0001f823, +0x0001f820, +0x0001f81c, +0x0001f818, +0x0001f814, +0x0001f810, +0x0001f80c, +0x0001f808, +0x0001f804, +0x0001f800, +0x0001f7fc, +0x0001f7f8, +0x0001f7f4, +0x0001f7f0, +0x0001f7ec, +0x0001f7e8, +0x0001f7e4, +0x0001f7e2, +0x0001f7df, +0x0001f7db, +0x0001f7d7, +0x0001f7d3, +0x0001f7cf, +0x0001f7cb, +0x0001f7c7, +0x0001f7c3, +0x0001f7bf, +0x0001f7bb, +0x0001f7b7, +0x0001f7b3, +0x0001f7af, +0x0001f7ab, +0x0001f7a7, +0x0001f7a3, +0x0001f7a0, +0x0001f79c, +0x0001f798, +0x0001f794, +0x0001f790, +0x0001f78c, +0x0001f788, +0x0001f784, +0x0001f780, +0x0001f77c, +0x0001f778, +0x0001f774, +0x0001f770, +0x0001f76c, +0x0001f768, +0x0001f766, +0x0001f763, +0x0001f75f, +0x0001f75b, +0x0001f757, +0x0001f753, +0x0001f74f, +0x0001f74b, +0x0001f747, +0x0001f743, +0x0001f73f, +0x0001f73b, +0x0001f737, +0x0001f733, +0x0001f72f, +0x0001f72b, +0x0001f728, +0x0001f724, +0x0001f720, +0x0001f71c, +0x0001f718, +0x0001f714, +0x0001f711, +0x0001f70d, +0x0001f709, +0x0001f705, +0x0001f701, +0x0001f6fd, +0x0001f6f9, +0x0001f6f5, +0x0001f6f1, +0x0001f6ed, +0x0001f6e9, +0x0001f6e5, +0x0001f6e2, +0x0001f6de, +0x0001f6da, +0x0001f6d6, +0x0001f6d2, +0x0001f6ce, +0x0001f6ca, +0x0001f6c6, +0x0001f6c4, +0x0001f6c0, +0x0001f6bc, +0x0001f6b8, +0x0001f6b4, +0x0001f6b0, +0x0001f6ad, +0x0001f6a9, +0x0001f6a5, +0x0001f6a1, +0x0001f69d, +0x0001f699, +0x0001f695, +0x0001f691, +0x0001f68d, +0x0001f689, +0x0001f685, +0x0001f681, +0x0001f67e, +0x0001f67a, +0x0001f676, +0x0001f672, +0x0001f66e, +0x0001f66a, +0x0001f666, +0x0001f662, +0x0001f660, +0x0001f65c, +0x0001f658, +0x0001f654, +0x0001f650, +0x0001f64c, +0x0001f649, +0x0001f645, +0x0001f641, +0x0001f63d, +0x0001f639, +0x0001f635, +0x0001f631, +0x0001f62d, +0x0001f629, +0x0001f625, +0x0001f621, +0x0001f61d, +0x0001f619, +0x0001f616, +0x0001f612, +0x0001f60e, +0x0001f60a, +0x0001f606, +0x0001f602, +0x0001f600, +0x0001f5fc, +0x0001f5f8, +0x0001f5f4, +0x0001f5f0, +0x0001f5ec, +0x0001f5e8, +0x0001f5e5, +0x0001f5e1, +0x0001f5dd, +0x0001f5d9, +0x0001f5d5, +0x0001f5d1, +0x0001f5cd, +0x0001f5c9, +0x0001f5c5, +0x0001f5c1, +0x0001f5bd, +0x0001f5b9, +0x0001f5b5, +0x0001f5b2, +0x0001f5ae, +0x0001f5aa, +0x0001f5a6, +0x0001f5a2, +0x0001f59e, +0x0001f59c, +0x0001f598, +0x0001f594, +0x0001f590, +0x0001f58c, +0x0001f588, +0x0001f584, +0x0001f581, +0x0001f57d, +0x0001f579, +0x0001f575, +0x0001f571, +0x0001f56d, +0x0001f569, +0x0001f565, +0x0001f561, +0x0001f55d, +0x0001f559, +0x0001f555, +0x0001f551, +0x0001f54e, +0x0001f54a, +0x0001f546, +0x0001f542, +0x0001f53e, +0x0001f53a, +0x0001f537, +0x0001f533, +0x0001f52f, +0x0001f52b, +0x0001f527, +0x0001f523, +0x0001f51f, +0x0001f51b, +0x0001f517, +0x0001f513, +0x0001f511, +0x0001f50e, +0x0001f50a, +0x0001f506, +0x0001f502, +0x0001f4fe, +0x0001f4fa, +0x0001f4f6, +0x0001f4f2, +0x0001f4ee, +0x0001f4ea, +0x0001f4e6, +0x0001f4e3, +0x0001f4df, +0x0001f4db, +0x0001f4d7, +0x0001f4d3, +0x0001f4cf, +0x0001f4cb, +0x0001f4c7, +0x0001f4c3, +0x0001f4c1, +0x0001f4bd, +0x0001f4ba, +0x0001f4b6, +0x0001f4b2, +0x0001f4ae, +0x0001f4aa, +0x0001f4a6, +0x0001f4a2, +0x0001f49e, +0x0001f49a, +0x0001f496, +0x0001f492, +0x0001f48f, +0x0001f48b, +0x0001f487, +0x0001f483, +0x0001f47f, +0x0001f47b, +0x0001f477, +0x0001f473, +0x0001f46f, +0x0001f46d, +0x0001f469, +0x0001f466, +0x0001f462, +0x0001f45e, +0x0001f45a, +0x0001f456, +0x0001f452, +0x0001f44e, +0x0001f44a, +0x0001f446, +0x0001f442, +0x0001f43f, +0x0001f43b, +0x0001f437, +0x0001f433, +0x0001f42f, +0x0001f42b, +0x0001f427, +0x0001f423, +0x0001f41f, +0x0001f41d, +0x0001f419, +0x0001f415, +0x0001f412, +0x0001f40e, +0x0001f40a, +0x0001f406, +0x0001f402, +0x0001f3fe, +0x0001f3fa, +0x0001f3f6, +0x0001f3f2, +0x0001f3ee, +0x0001f3eb, +0x0001f3e7, +0x0001f3e3, +0x0001f3df, +0x0001f3db, +0x0001f3d7, +0x0001f3d3, +0x0001f3cf, +0x0001f3cd, +0x0001f3c9, +0x0001f3c5, +0x0001f3c2, +0x0001f3be, +0x0001f3ba, +0x0001f3b6, +0x0001f3b2, +0x0001f3ae, +0x0001f3aa, +0x0001f3a6, +0x0001f3a2, +0x0001f39e, +0x0001f39a, +0x0001f397, +0x0001f393, +0x0001f38f, +0x0001f38b, +0x0001f387, +0x0001f383, +0x0001f37f, +0x0001f37b, +0x0001f379, +0x0001f375, +0x0001f371, +0x0001f36e, +0x0001f36a, +0x0001f366, +0x0001f362, +0x0001f35e, +0x0001f35a, +0x0001f356, +0x0001f352, +0x0001f34f, +0x0001f34b, +0x0001f347, +0x0001f343, +0x0001f33f, +0x0001f33b, +0x0001f337, +0x0001f333, +0x0001f32f, +0x0001f32c, +0x0001f328, +0x0001f324, +0x0001f320, +0x0001f31c, +0x0001f318, +0x0001f314, +0x0001f310, +0x0001f30c, +0x0001f30b, +0x0001f307, +0x0001f303, +0x0001f2ff, +0x0001f2fb, +0x0001f2f7, +0x0001f2f3, +0x0001f2ef, +0x0001f2eb, +0x0001f2e7, +0x0001f2e4, +0x0001f2e0, +0x0001f2dc, +0x0001f2d8, +0x0001f2d4, +0x0001f2d0, +0x0001f2cc, +0x0001f2c8, +0x0001f2c6, +0x0001f2c3, +0x0001f2bf, +0x0001f2bb, +0x0001f2b7, +0x0001f2b3, +0x0001f2af, +0x0001f2ab, +0x0001f2a7, +0x0001f2a3, +0x0001f2a0, +0x0001f29c, +0x0001f298, +0x0001f294, +0x0001f290, +0x0001f28c, +0x0001f288, +0x0001f284, +0x0001f282, +0x0001f27e, +0x0001f27b, +0x0001f277, +0x0001f273, +0x0001f26f, +0x0001f26b, +0x0001f267, +0x0001f263, +0x0001f25f, +0x0001f25b, +0x0001f258, +0x0001f254, +0x0001f250, +0x0001f24c, +0x0001f248, +0x0001f244, +0x0001f240, +0x0001f23c, +0x0001f23a, +0x0001f236, +0x0001f233, +0x0001f22f, +0x0001f22b, +0x0001f227, +0x0001f223, +0x0001f21f, +0x0001f21b, +0x0001f217, +0x0001f213, +0x0001f210, +0x0001f20c, +0x0001f208, +0x0001f204, +0x0001f200, +0x0001f1fc, +0x0001f1f8, +0x0001f1f6, +0x0001f1f2, +0x0001f1ee, +0x0001f1eb, +0x0001f1e7, +0x0001f1e3, +0x0001f1df, +0x0001f1db, +0x0001f1d7, +0x0001f1d3, +0x0001f1cf, +0x0001f1cb, +0x0001f1c8, +0x0001f1c4, +0x0001f1c0, +0x0001f1bc, +0x0001f1b8, +0x0001f1b4, +0x0001f1b2, +0x0001f1ae, +0x0001f1aa, +0x0001f1a7, +0x0001f1a3, +0x0001f19f, +0x0001f19b, +0x0001f197, +0x0001f193, +0x0001f18f, +0x0001f18b, +0x0001f187, +0x0001f184, +0x0001f180, +0x0001f17c, +0x0001f178, +0x0001f174, +0x0001f170, +0x0001f16c, +0x0001f168, +0x0001f165, +0x0001f161, +0x0001f15d, +0x0001f159, +0x0001f155, +0x0001f151, +0x0001f14f, +0x0001f14b, +0x0001f147, +0x0001f144, +0x0001f140, +0x0001f13c, +0x0001f138, +0x0001f134, +0x0001f130, +0x0001f12c, +0x0001f128, +0x0001f125, +0x0001f121, +0x0001f11d, +0x0001f119, +0x0001f115, +0x0001f113, +0x0001f10f, +0x0001f10b, +0x0001f108, +0x0001f104, +0x0001f100, +0x0001f0fc, +0x0001f0f8, +0x0001f0f4, +0x0001f0f0, +0x0001f0ec, +0x0001f0e9, +0x0001f0e5, +0x0001f0e1, +0x0001f0dd, +0x0001f0d9, +0x0001f0d7, +0x0001f0d3, +0x0001f0cf, +0x0001f0cb, +0x0001f0c8, +0x0001f0c4, +0x0001f0c0, +0x0001f0bc, +0x0001f0b8, +0x0001f0b4, +0x0001f0b0, +0x0001f0ac, +0x0001f0a9, +0x0001f0a5, +0x0001f0a1, +0x0001f09d, +0x0001f09b, +0x0001f097, +0x0001f093, +0x0001f08f, +0x0001f08c, +0x0001f088, +0x0001f084, +0x0001f080, +0x0001f07c, +0x0001f078, +0x0001f074, +0x0001f070, +0x0001f06d, +0x0001f069, +0x0001f065, +0x0001f061, +0x0001f05f, +0x0001f05b, +0x0001f057, +0x0001f053, +0x0001f04f, +0x0001f04c, +0x0001f048, +0x0001f044, +0x0001f040, +0x0001f03c, +0x0001f038, +0x0001f034, +0x0001f030, +0x0001f02d, +0x0001f029, +0x0001f025, +0x0001f023, +0x0001f01f, +0x0001f01b, +0x0001f017, +0x0001f013, +0x0001f010, +0x0001f00c, +0x0001f008, +0x0001f004, +0x0001f000, +0x0001effc, +0x0001eff8, +0x0001eff4, +0x0001eff1, +0x0001efed, +0x0001efe9, +0x0001efe7, +0x0001efe3, +0x0001efdf, +0x0001efdb, +0x0001efd7, +0x0001efd3, +0x0001efd0, +0x0001efcc, +0x0001efc8, +0x0001efc4, +0x0001efc0, +0x0001efbc, +0x0001efb8, +0x0001efb4, +0x0001efb1, +0x0001efad, +0x0001efab, +0x0001efa7, +0x0001efa3, +0x0001ef9f, +0x0001ef9b, +0x0001ef97, +0x0001ef94, +0x0001ef90, +0x0001ef8b, +0x0001ef87, +0x0001ef83, +0x0001ef80, +0x0001ef7e, +0x0001ef7a, +0x0001ef76, +0x0001ef72, +0x0001ef6e, +0x0001ef6a, +0x0001ef66, +0x0001ef63, +0x0001ef5f, +0x0001ef5b, +0x0001ef57, +0x0001ef53, +0x0001ef4f, +0x0001ef4b, +0x0001ef48, +0x0001ef46, +0x0001ef42, +0x0001ef3e, +0x0001ef3a, +0x0001ef36, +0x0001ef32, +0x0001ef2e, +0x0001ef2b, +0x0001ef27, +0x0001ef23, +0x0001ef1f, +0x0001ef1b, +0x0001ef17, +0x0001ef13, +0x0001ef0f, +0x0001ef0e, +0x0001ef0a, +0x0001ef06, +0x0001ef02, +0x0001eefe, +0x0001eefa, +0x0001eef6, +0x0001eef2, +0x0001eeef, +0x0001eeeb, +0x0001eee7, +0x0001eee3, +0x0001eedf, +0x0001eedb, +0x0001eed7, +0x0001eed5, +0x0001eed2, +0x0001eece, +0x0001eeca, +0x0001eec6, +0x0001eec2, +0x0001eebe, +0x0001eeba, +0x0001eeb7, +0x0001eeb3, +0x0001eeaf, +0x0001eeab, +0x0001eea7, +0x0001eea3, +0x0001ee9f, +0x0001ee9d, +0x0001ee9a, +0x0001ee96, +0x0001ee92, +0x0001ee8e, +0x0001ee8a, +0x0001ee86, +0x0001ee82, +0x0001ee7e, +0x0001ee7b, +0x0001ee77, +0x0001ee73, +0x0001ee6f, +0x0001ee6b, +0x0001ee67, +0x0001ee63, +0x0001ee61, +0x0001ee5e, +0x0001ee5a, +0x0001ee56, +0x0001ee52, +0x0001ee4e, +0x0001ee4a, +0x0001ee46, +0x0001ee43, +0x0001ee3f, +0x0001ee3b, +0x0001ee37, +0x0001ee33, +0x0001ee2f, +0x0001ee2b, +0x0001ee29, +0x0001ee26, +0x0001ee22, +0x0001ee1e, +0x0001ee1a, +0x0001ee16, +0x0001ee12, +0x0001ee0e, +0x0001ee0a, +0x0001ee07, +0x0001ee03, +0x0001edff, +0x0001edfb, +0x0001edf7, +0x0001edf3, +0x0001edf1, +0x0001eded, +0x0001edea, +0x0001ede6, +0x0001ede2, +0x0001edde, +0x0001edda, +0x0001edd6, +0x0001edd2, +0x0001edce, +0x0001edcb, +0x0001edc7, +0x0001edc3, +0x0001edbf, +0x0001edbb, +0x0001edb9, +0x0001edb5, +0x0001edb1, +0x0001edad, +0x0001eda9, +0x0001eda6, +0x0001eda2, +0x0001eda0, +0x0001ed9c, +0x0001ed98, +0x0001ed94, +0x0001ed90, +0x0001ed8d, +0x0001ed89, +0x0001ed85, +0x0001ed81, +0x0001ed7d, +0x0001ed79, +0x0001ed75, +0x0001ed72, +0x0001ed70, +0x0001ed6c, +0x0001ed68, +0x0001ed64, +0x0001ed60, +0x0001ed5c, +0x0001ed59, +0x0001ed55, +0x0001ed51, +0x0001ed4d, +0x0001ed49, +0x0001ed45, +0x0001ed41, +0x0001ed3e, +0x0001ed3c, +0x0001ed38, +0x0001ed34, +0x0001ed30, +0x0001ed2c, +0x0001ed28, +0x0001ed25, +0x0001ed21, +0x0001ed1d, +0x0001ed19, +0x0001ed15, +0x0001ed11, +0x0001ed0d, +0x0001ed0c, +0x0001ed08, +0x0001ed04, +0x0001ed00, +0x0001ecfc, +0x0001ecf8, +0x0001ecf4, +0x0001ecf1, +0x0001eced, +0x0001ece9, +0x0001ece5, +0x0001ece1, +0x0001ecdd, +0x0001ecd9, +0x0001ecd8, +0x0001ecd4, +0x0001ecd0, +0x0001eccc, +0x0001ecc8, +0x0001ecc4, +0x0001ecc0, +0x0001ecbd, +0x0001ecb9, +0x0001ecb5, +0x0001ecb1, +0x0001ecad, +0x0001eca9, +0x0001eca7, +0x0001eca4, +0x0001eca0, +0x0001ec9c, +0x0001ec98, +0x0001ec94, +0x0001ec90, +0x0001ec8c, +0x0001ec89, +0x0001ec85, +0x0001ec81, +0x0001ec7d, +0x0001ec79, +0x0001ec75, +0x0001ec73, +0x0001ec70, +0x0001ec6c, +0x0001ec68, +0x0001ec64, +0x0001ec60, +0x0001ec5c, +0x0001ec58, +0x0001ec55, +0x0001ec51, +0x0001ec4d, +0x0001ec49, +0x0001ec45, +0x0001ec43, +0x0001ec3f, +0x0001ec3c, +0x0001ec38, +0x0001ec34, +0x0001ec30, +0x0001ec2c, +0x0001ec28, +0x0001ec24, +0x0001ec21, +0x0001ec1d, +0x0001ec19, +0x0001ec15, +0x0001ec11, +0x0001ec0f, +0x0001ec0b, +0x0001ec08, +0x0001ec04, +0x0001ec00, +0x0001ebfc, +0x0001ebf8, +0x0001ebf4, +0x0001ebf0, +0x0001ebed, +0x0001ebe9, +0x0001ebe5, +0x0001ebe1, +0x0001ebdf, +0x0001ebdb, +0x0001ebd7, +0x0001ebd3, +0x0001ebcf, +0x0001ebcb, +0x0001ebc7, +0x0001ebc6, +0x0001ebc2, +0x0001ebbe, +0x0001ebba, +0x0001ebb6, +0x0001ebb2, +0x0001ebaf, +0x0001ebab, +0x0001eba7, +0x0001eba3, +0x0001eb9f, +0x0001eb9b, +0x0001eb99, +0x0001eb96, +0x0001eb92, +0x0001eb8e, +0x0001eb8a, +0x0001eb86, +0x0001eb82, +0x0001eb7f, +0x0001eb7b, +0x0001eb77, +0x0001eb73, +0x0001eb6f, +0x0001eb6d, +0x0001eb69, +0x0001eb66, +0x0001eb62, +0x0001eb5e, +0x0001eb5a, +0x0001eb56, +0x0001eb52, +0x0001eb4f, +0x0001eb4b, +0x0001eb47, +0x0001eb43, +0x0001eb41, +0x0001eb3d, +0x0001eb3a, +0x0001eb36, +0x0001eb32, +0x0001eb2e, +0x0001eb2a, +0x0001eb26, +0x0001eb23, +0x0001eb1f, +0x0001eb1b, +0x0001eb17, +0x0001eb15, +0x0001eb11, +0x0001eb0d, +0x0001eb0a, +0x0001eb06, +0x0001eb02, +0x0001eafe, +0x0001eafa, +0x0001eaf6, +0x0001eaf3, +0x0001eaef, +0x0001eaeb, +0x0001eae9, +0x0001eae5, +0x0001eae1, +0x0001eadd, +0x0001eada, +0x0001ead6, +0x0001ead2, +0x0001eace, +0x0001eaca, +0x0001eac6, +0x0001eac3, +0x0001eabf, +0x0001eabb, +0x0001eab9, +0x0001eab5, +0x0001eab1, +0x0001eaae, +0x0001eaaa, +0x0001eaa6, +0x0001eaa2, +0x0001ea9e, +0x0001ea9a, +0x0001ea97, +0x0001ea93, +0x0001ea8f, +0x0001ea8d, +0x0001ea89, +0x0001ea85, +0x0001ea81, +0x0001ea7e, +0x0001ea7a, +0x0001ea76, +0x0001ea72, +0x0001ea6e, +0x0001ea6a, +0x0001ea67, +0x0001ea63, +0x0001ea61, +0x0001ea5d, +0x0001ea59, +0x0001ea55, +0x0001ea51, +0x0001ea4e, +0x0001ea4a, +0x0001ea46, +0x0001ea42, +0x0001ea3e, +0x0001ea3a, +0x0001ea37, +0x0001ea35, +0x0001ea31, +0x0001ea2d, +0x0001ea29, +0x0001ea25, +0x0001ea22, +0x0001ea1e, +0x0001ea1a, +0x0001ea16, +0x0001ea12, +0x0001ea0e, +0x0001ea0b, +0x0001ea09, +0x0001ea05, +0x0001ea01, +0x0001e9fc, +0x0001e9f8, +0x0001e9f5, +0x0001e9f3, +0x0001e9ef, +0x0001e9eb, +0x0001e9e7, +0x0001e9e3, +0x0001e9df, +0x0001e9dc, +0x0001e9d8, +0x0001e9d4, +0x0001e9d0, +0x0001e9cc, +0x0001e9ca, +0x0001e9c7, +0x0001e9c3, +0x0001e9bf, +0x0001e9bb, +0x0001e9b7, +0x0001e9b4, +0x0001e9b0, +0x0001e9ac, +0x0001e9a8, +0x0001e9a4, +0x0001e9a0, +0x0001e99f, +0x0001e99b, +0x0001e997, +0x0001e993, +0x0001e98f, +0x0001e98b, +0x0001e988, +0x0001e984, +0x0001e980, +0x0001e97c, +0x0001e978, +0x0001e976, +0x0001e973, +0x0001e96f, +0x0001e96b, +0x0001e967, +0x0001e963, +0x0001e960, +0x0001e95c, +0x0001e958, +0x0001e954, +0x0001e950, +0x0001e94e, +0x0001e94a, +0x0001e947, +0x0001e943, +0x0001e93f, +0x0001e93b, +0x0001e937, +0x0001e934, +0x0001e930, +0x0001e92c, +0x0001e928, +0x0001e926, +0x0001e922, +0x0001e91f, +0x0001e91b, +0x0001e917, +0x0001e913, +0x0001e90f, +0x0001e90b, +0x0001e908, +0x0001e904, +0x0001e900, +0x0001e8fe, +0x0001e8fa, +0x0001e8f6, +0x0001e8f3, +0x0001e8ef, +0x0001e8eb, +0x0001e8e7, +0x0001e8e3, +0x0001e8e0, +0x0001e8dc, +0x0001e8d8, +0x0001e8d6, +0x0001e8d2, +0x0001e8ce, +0x0001e8cb, +0x0001e8c7, +0x0001e8c3, +0x0001e8bf, +0x0001e8bb, +0x0001e8b7, +0x0001e8b4, +0x0001e8b0, +0x0001e8ae, +0x0001e8aa, +0x0001e8a6, +0x0001e8a2, +0x0001e89f, +0x0001e89b, +0x0001e897, +0x0001e893, +0x0001e88f, +0x0001e88b, +0x0001e888, +0x0001e886, +0x0001e882, +0x0001e87e, +0x0001e87a, +0x0001e876, +0x0001e873, +0x0001e86f, +0x0001e86b, +0x0001e867, +0x0001e863, +0x0001e860, +0x0001e85c, +0x0001e85a, +0x0001e856, +0x0001e852, +0x0001e84e, +0x0001e84b, +0x0001e847, +0x0001e843, +0x0001e83f, +0x0001e83b, +0x0001e837, +0x0001e834, +0x0001e832, +0x0001e82e, +0x0001e829, +0x0001e825, +0x0001e821, +0x0001e81f, +0x0001e81b, +0x0001e818, +0x0001e814, +0x0001e810, +0x0001e80c, +0x0001e808, +0x0001e805, +0x0001e801, +0x0001e7fd, +0x0001e7fb, +0x0001e7f7, +0x0001e7f4, +0x0001e7f0, +0x0001e7ec, +0x0001e7e8, +0x0001e7e4, +0x0001e7e0, +0x0001e7dd, +0x0001e7d9, +0x0001e7d5, +0x0001e7d3, +0x0001e7cf, +0x0001e7cc, +0x0001e7c8, +0x0001e7c4, +0x0001e7c0, +0x0001e7bc, +0x0001e7b9, +0x0001e7b5, +0x0001e7b1, +0x0001e7af, +0x0001e7ab, +0x0001e7a7, +0x0001e7a4, +0x0001e7a0, +0x0001e79c, +0x0001e798, +0x0001e794, +0x0001e791, +0x0001e78d, +0x0001e78b, +0x0001e787, +0x0001e783, +0x0001e77f, +0x0001e77c, +0x0001e778, +0x0001e774, +0x0001e770, +0x0001e76c, +0x0001e769, +0x0001e767, +0x0001e763, +0x0001e75f, +0x0001e75b, +0x0001e758, +0x0001e754, +0x0001e750, +0x0001e74c, +0x0001e748, +0x0001e744, +0x0001e743, +0x0001e73f, +0x0001e73b, +0x0001e737, +0x0001e733, +0x0001e730, +0x0001e72c, +0x0001e728, +0x0001e724, +0x0001e720, +0x0001e71d, +0x0001e71b, +0x0001e717, +0x0001e713, +0x0001e70f, +0x0001e70b, +0x0001e708, +0x0001e704, +0x0001e700, +0x0001e6fc, +0x0001e6f8, +0x0001e6f6, +0x0001e6f3, +0x0001e6ef, +0x0001e6eb, +0x0001e6e7, +0x0001e6e3, +0x0001e6e0, +0x0001e6dc, +0x0001e6d8, +0x0001e6d4, +0x0001e6d2, +0x0001e6cf, +0x0001e6cb, +0x0001e6c7, +0x0001e6c3, +0x0001e6bf, +0x0001e6bc, +0x0001e6b8, +0x0001e6b4, +0x0001e6b0, +0x0001e6ae, +0x0001e6aa, +0x0001e6a7, +0x0001e6a3, +0x0001e69f, +0x0001e69b, +0x0001e697, +0x0001e694, +0x0001e690, +0x0001e68c, +0x0001e688, +0x0001e686, +0x0001e682, +0x0001e67f, +0x0001e67b, +0x0001e677, +0x0001e673, +0x0001e66f, +0x0001e66c, +0x0001e668, +0x0001e664, +0x0001e662, +0x0001e65e, +0x0001e659, +0x0001e655, +0x0001e651, +0x0001e64f, +0x0001e64c, +0x0001e648, +0x0001e644, +0x0001e640, +0x0001e63c, +0x0001e639, +0x0001e635, +0x0001e631, +0x0001e62f, +0x0001e62b, +0x0001e628, +0x0001e624, +0x0001e620, +0x0001e61c, +0x0001e618, +0x0001e615, +0x0001e611, +0x0001e60d, +0x0001e60b, +0x0001e607, +0x0001e604, +0x0001e600, +0x0001e5fc, +0x0001e5f8, +0x0001e5f4, +0x0001e5f1, +0x0001e5ed, +0x0001e5eb, +0x0001e5e7, +0x0001e5e3, +0x0001e5e0, +0x0001e5dc, +0x0001e5d8, +0x0001e5d4, +0x0001e5d0, +0x0001e5cd, +0x0001e5c9, +0x0001e5c7, +0x0001e5c3, +0x0001e5bf, +0x0001e5bc, +0x0001e5b8, +0x0001e5b4, +0x0001e5b0, +0x0001e5ac, +0x0001e5a9, +0x0001e5a7, +0x0001e5a3, +0x0001e59f, +0x0001e59b, +0x0001e598, +0x0001e594, +0x0001e590, +0x0001e58c, +0x0001e588, +0x0001e585, +0x0001e583, +0x0001e57f, +0x0001e57b, +0x0001e577, +0x0001e574, +0x0001e570, +0x0001e56c, +0x0001e568, +0x0001e564, +0x0001e563, +0x0001e55f, +0x0001e55b, +0x0001e557, +0x0001e553, +0x0001e550, +0x0001e54c, +0x0001e548, +0x0001e544, +0x0001e540, +0x0001e53f, +0x0001e53b, +0x0001e537, +0x0001e533, +0x0001e52f, +0x0001e52c, +0x0001e528, +0x0001e524, +0x0001e520, +0x0001e51e, +0x0001e51b, +0x0001e517, +0x0001e513, +0x0001e50f, +0x0001e50b, +0x0001e508, +0x0001e504, +0x0001e500, +0x0001e4fc, +0x0001e4fa, +0x0001e4f7, +0x0001e4f3, +0x0001e4ef, +0x0001e4eb, +0x0001e4e7, +0x0001e4e4, +0x0001e4e0, +0x0001e4dc, +0x0001e4da, +0x0001e4d6, +0x0001e4d3, +0x0001e4cf, +0x0001e4cb, +0x0001e4c7, +0x0001e4c3, +0x0001e4c0, +0x0001e4bc, +0x0001e4b8, +0x0001e4b6, +0x0001e4b2, +0x0001e4af, +0x0001e4ab, +0x0001e4a7, +0x0001e4a3, +0x0001e49f, +0x0001e49c, +0x0001e498, +0x0001e496, +0x0001e492, +0x0001e48e, +0x0001e48a, +0x0001e486, +0x0001e482, +0x0001e47f, +0x0001e47d, +0x0001e479, +0x0001e475, +0x0001e471, +0x0001e46e, +0x0001e46a, +0x0001e466, +0x0001e462, +0x0001e45f, +0x0001e45d, +0x0001e459, +0x0001e455, +0x0001e451, +0x0001e44e, +0x0001e44a, +0x0001e446, +0x0001e442, +0x0001e43e, +0x0001e43d, +0x0001e439, +0x0001e435, +0x0001e431, +0x0001e42d, +0x0001e42a, +0x0001e426, +0x0001e422, +0x0001e41e, +0x0001e41c, +0x0001e419, +0x0001e415, +0x0001e411, +0x0001e40d, +0x0001e409, +0x0001e406, +0x0001e402, +0x0001e3fe, +0x0001e3fa, +0x0001e3f8, +0x0001e3f5, +0x0001e3f1, +0x0001e3ed, +0x0001e3e9, +0x0001e3e6, +0x0001e3e2, +0x0001e3de, +0x0001e3da, +0x0001e3d8, +0x0001e3d5, +0x0001e3d1, +0x0001e3cd, +0x0001e3c9, +0x0001e3c5, +0x0001e3c2, +0x0001e3be, +0x0001e3ba, +0x0001e3b8, +0x0001e3b4, +0x0001e3b1, +0x0001e3ad, +0x0001e3a9, +0x0001e3a5, +0x0001e3a1, +0x0001e39e, +0x0001e39a, +0x0001e398, +0x0001e394, +0x0001e390, +0x0001e38d, +0x0001e389, +0x0001e385, +0x0001e381, +0x0001e37e, +0x0001e37a, +0x0001e378, +0x0001e374, +0x0001e370, +0x0001e36d, +0x0001e369, +0x0001e365, +0x0001e361, +0x0001e35d, +0x0001e35a, +0x0001e358, +0x0001e354, +0x0001e350, +0x0001e34c, +0x0001e349, +0x0001e345, +0x0001e341, +0x0001e33d, +0x0001e339, +0x0001e338, +0x0001e334, +0x0001e330, +0x0001e32c, +0x0001e328, +0x0001e325, +0x0001e321, +0x0001e31d, +0x0001e319, +0x0001e316, +0x0001e314, +0x0001e310, +0x0001e30c, +0x0001e308, +0x0001e305, +0x0001e301, +0x0001e2fd, +0x0001e2f9, +0x0001e2f5, +0x0001e2f4, +0x0001e2f0, +0x0001e2ec, +0x0001e2e8, +0x0001e2e4, +0x0001e2e1, +0x0001e2dd, +0x0001e2d9, +0x0001e2d5, +0x0001e2d3, +0x0001e2d0, +0x0001e2cc, +0x0001e2c8, +0x0001e2c6, +0x0001e2c2, +0x0001e2be, +0x0001e2ba, +0x0001e2b7, +0x0001e2b3, +0x0001e2af, +0x0001e2ab, +0x0001e2a8, +0x0001e2a6, +0x0001e2a2, +0x0001e29e, +0x0001e29a, +0x0001e297, +0x0001e293, +0x0001e28f, +0x0001e28b, +0x0001e288, +0x0001e286, +0x0001e282, +0x0001e27e, +0x0001e27a, +0x0001e277, +0x0001e273, +0x0001e26f, +0x0001e26b, +0x0001e269, +0x0001e266, +0x0001e262, +0x0001e25e, +0x0001e25a, +0x0001e257, +0x0001e253, +0x0001e24f, +0x0001e24b, +0x0001e249, +0x0001e246, +0x0001e242, +0x0001e23e, +0x0001e23a, +0x0001e237, +0x0001e233, +0x0001e22f, +0x0001e22d, +0x0001e229, +0x0001e226, +0x0001e222, +0x0001e21e, +0x0001e21a, +0x0001e217, +0x0001e213, +0x0001e20f, +0x0001e20d, +0x0001e209, +0x0001e206, +0x0001e202, +0x0001e1fe, +0x0001e1fa, +0x0001e1f7, +0x0001e1f3, +0x0001e1f1, +0x0001e1ed, +0x0001e1e9, +0x0001e1e6, +0x0001e1e2, +0x0001e1de, +0x0001e1da, +0x0001e1d7, +0x0001e1d3, +0x0001e1d1, +0x0001e1cd, +0x0001e1c9, +0x0001e1c6, +0x0001e1c2, +0x0001e1be, +0x0001e1ba, +0x0001e1b7, +0x0001e1b5, +0x0001e1b1, +0x0001e1ad, +0x0001e1a9, +0x0001e1a6, +0x0001e1a2, +0x0001e19e, +0x0001e19a, +0x0001e197, +0x0001e195, +0x0001e191, +0x0001e18d, +0x0001e189, +0x0001e186, +0x0001e182, +0x0001e17e, +0x0001e17a, +0x0001e178, +0x0001e175, +0x0001e171, +0x0001e16d, +0x0001e169, +0x0001e166, +0x0001e162, +0x0001e15e, +0x0001e15a, +0x0001e158, +0x0001e155, +0x0001e151, +0x0001e14d, +0x0001e149, +0x0001e146, +0x0001e142, +0x0001e13e, +0x0001e13c, +0x0001e138, +0x0001e135, +0x0001e131, +0x0001e12d, +0x0001e129, +0x0001e126, +0x0001e122, +0x0001e11e, +0x0001e11c, +0x0001e118, +0x0001e115, +0x0001e111, +0x0001e10d, +0x0001e109, +0x0001e106, +0x0001e102, +0x0001e0ff, +0x0001e0fb, +0x0001e0f8, +0x0001e0f4, +0x0001e0f2, +0x0001e0ee, +0x0001e0ea, +0x0001e0e7, +0x0001e0e3, +0x0001e0df, +0x0001e0db, +0x0001e0d8, +0x0001e0d6, +0x0001e0d2, +0x0001e0ce, +0x0001e0cb, +0x0001e0c7, +0x0001e0c3, +0x0001e0bf, +0x0001e0bc, +0x0001e0ba, +0x0001e0b6, +0x0001e0b2, +0x0001e0ae, +0x0001e0ab, +0x0001e0a7, +0x0001e0a3, +0x0001e09f, +0x0001e09e, +0x0001e09a, +0x0001e096, +0x0001e092, +0x0001e08f, +0x0001e08b, +0x0001e087, +0x0001e083, +0x0001e081, +0x0001e07e, +0x0001e07a, +0x0001e076, +0x0001e072, +0x0001e06f, +0x0001e06b, +0x0001e067, +0x0001e065, +0x0001e062, +0x0001e05e, +0x0001e05a, +0x0001e056, +0x0001e053, +0x0001e04f, +0x0001e04b, +0x0001e049, +0x0001e045, +0x0001e042, +0x0001e03e, +0x0001e03a, +0x0001e036, +0x0001e033, +0x0001e02f, +0x0001e02d, +0x0001e029, +0x0001e026, +0x0001e022, +0x0001e01e, +0x0001e01a, +0x0001e017, +0x0001e013, +0x0001e011, +0x0001e00d, +0x0001e009, +0x0001e006, +0x0001e002, +0x0001dffe, +0x0001dffa, +0x0001dff7, +0x0001dff5, +0x0001dff1, +0x0001dfed, +0x0001dfea, +0x0001dfe6, +0x0001dfe2, +0x0001dfde, +0x0001dfdb, +0x0001dfd9, +0x0001dfd5, +0x0001dfd1, +0x0001dfcd, +0x0001dfca, +0x0001dfc6, +0x0001dfc2, +0x0001dfbe, +0x0001dfbd, +0x0001dfb9, +0x0001dfb5, +0x0001dfb1, +0x0001dfae, +0x0001dfaa, +0x0001dfa6, +0x0001dfa2, +0x0001dfa0, +0x0001df9d, +0x0001df99, +0x0001df95, +0x0001df91, +0x0001df8e, +0x0001df8a, +0x0001df86, +0x0001df84, +0x0001df81, +0x0001df7d, +0x0001df79, +0x0001df75, +0x0001df72, +0x0001df6e, +0x0001df6a, +0x0001df68, +0x0001df64, +0x0001df61, +0x0001df5d, +0x0001df59, +0x0001df55, +0x0001df52, +0x0001df4e, +0x0001df4c, +0x0001df48, +0x0001df45, +0x0001df41, +0x0001df3d, +0x0001df3a, +0x0001df36, +0x0001df32, +0x0001df2e, +0x0001df2b, +0x0001df27, +0x0001df23, +0x0001df21, +0x0001df1e, +0x0001df1a, +0x0001df16, +0x0001df12, +0x0001df0f, +0x0001df0b, +0x0001df07, +0x0001df05, +0x0001df02, +0x0001defe, +0x0001defa, +0x0001def6, +0x0001def3, +0x0001deef, +0x0001deed, +0x0001dee9, +0x0001dee6, +0x0001dee2, +0x0001dede, +0x0001deda, +0x0001ded7, +0x0001ded3, +0x0001ded1, +0x0001decd, +0x0001deca, +0x0001dec6, +0x0001dec2, +0x0001debe, +0x0001debb, +0x0001deb9, +0x0001deb5, +0x0001deb1, +0x0001deae, +0x0001deaa, +0x0001dea6, +0x0001dea2, +0x0001de9f, +0x0001de9d, +0x0001de99, +0x0001de95, +0x0001de92, +0x0001de8e, +0x0001de8a, +0x0001de86, +0x0001de85, +0x0001de81, +0x0001de7d, +0x0001de79, +0x0001de76, +0x0001de72, +0x0001de6e, +0x0001de6a, +0x0001de69, +0x0001de65, +0x0001de61, +0x0001de5d, +0x0001de5a, +0x0001de56, +0x0001de52, +0x0001de50, +0x0001de4d, +0x0001de49, +0x0001de45, +0x0001de41, +0x0001de3e, +0x0001de3a, +0x0001de36, +0x0001de34, +0x0001de31, +0x0001de2d, +0x0001de29, +0x0001de25, +0x0001de22, +0x0001de1e, +0x0001de1c, +0x0001de18, +0x0001de15, +0x0001de11, +0x0001de0d, +0x0001de09, +0x0001de06, +0x0001de02, +0x0001de00, +0x0001ddfc, +0x0001ddf9, +0x0001ddf5, +0x0001ddf1, +0x0001dded, +0x0001ddea, +0x0001dde8, +0x0001dde4, +0x0001dde0, +0x0001dddd, +0x0001ddd9, +0x0001ddd5, +0x0001ddd1, +0x0001ddce, +0x0001ddcc, +0x0001ddc8, +0x0001ddc4, +0x0001ddc1, +0x0001ddbd, +0x0001ddb9, +0x0001ddb5, +0x0001ddb3, +0x0001ddb0, +0x0001ddac, +0x0001dda8, +0x0001dda5, +0x0001dda1, +0x0001dd9d, +0x0001dd99, +0x0001dd97, +0x0001dd94, +0x0001dd90, +0x0001dd8c, +0x0001dd89, +0x0001dd85, +0x0001dd81, +0x0001dd7f, +0x0001dd7b, +0x0001dd77, +0x0001dd74, +0x0001dd70, +0x0001dd6c, +0x0001dd6a, +0x0001dd66, +0x0001dd63, +0x0001dd5f, +0x0001dd5b, +0x0001dd58, +0x0001dd54, +0x0001dd52, +0x0001dd4e, +0x0001dd4b, +0x0001dd47, +0x0001dd43, +0x0001dd3f, +0x0001dd3c, +0x0001dd38, +0x0001dd36, +0x0001dd32, +0x0001dd2f, +0x0001dd2b, +0x0001dd27, +0x0001dd23, +0x0001dd20, +0x0001dd1e, +0x0001dd1a, +0x0001dd16, +0x0001dd13, +0x0001dd0f, +0x0001dd0b, +0x0001dd07, +0x0001dd06, +0x0001dd02, +0x0001dcfe, +0x0001dcfa, +0x0001dcf7, +0x0001dcf3, +0x0001dcef, +0x0001dcec, +0x0001dcea, +0x0001dce6, +0x0001dce2, +0x0001dcde, +0x0001dcdb, +0x0001dcd7, +0x0001dcd3, +0x0001dcd1, +0x0001dcce, +0x0001dcca, +0x0001dcc6, +0x0001dcc3, +0x0001dcbf, +0x0001dcbb, +0x0001dcb9, +0x0001dcb5, +0x0001dcb2, +0x0001dcae, +0x0001dcaa, +0x0001dca7, +0x0001dca3, +0x0001dca1, +0x0001dc9d, +0x0001dc9a, +0x0001dc96, +0x0001dc92, +0x0001dc8e, +0x0001dc8b, +0x0001dc87, +0x0001dc85, +0x0001dc81, +0x0001dc7e, +0x0001dc7a, +0x0001dc76, +0x0001dc72, +0x0001dc6f, +0x0001dc6d, +0x0001dc69, +0x0001dc65, +0x0001dc62, +0x0001dc5e, +0x0001dc5a, +0x0001dc56, +0x0001dc55, +0x0001dc51, +0x0001dc4d, +0x0001dc49, +0x0001dc46, +0x0001dc42, +0x0001dc3e, +0x0001dc3a, +0x0001dc39, +0x0001dc35, +0x0001dc31, +0x0001dc2d, +0x0001dc2a, +0x0001dc26, +0x0001dc22, +0x0001dc20, +0x0001dc1d, +0x0001dc19, +0x0001dc15, +0x0001dc12, +0x0001dc0e, +0x0001dc0a, +0x0001dc08, +0x0001dc04, +0x0001dc01, +0x0001dbfd, +0x0001dbf9, +0x0001dbf6, +0x0001dbf2, +0x0001dbee, +0x0001dbec, +0x0001dbe9, +0x0001dbe5, +0x0001dbe1, +0x0001dbdd, +0x0001dbda, +0x0001dbd6, +0x0001dbd4, +0x0001dbd0, +0x0001dbcd, +0x0001dbc9, +0x0001dbc5, +0x0001dbc3, +0x0001dbbf, +0x0001dbbb, +0x0001dbb8, +0x0001dbb4, +0x0001dbb0, +0x0001dbae, +0x0001dbab, +0x0001dba7, +0x0001dba3, +0x0001dba0, +0x0001db9c, +0x0001db98, +0x0001db96, +0x0001db93, +0x0001db8f, +0x0001db8b, +0x0001db87, +0x0001db84, +0x0001db80, +0x0001db7e, +0x0001db7a, +0x0001db77, +0x0001db73, +0x0001db6f, +0x0001db6c, +0x0001db6a, +0x0001db66, +0x0001db62, +0x0001db5f, +0x0001db5b, +0x0001db57, +0x0001db53, +0x0001db52, +0x0001db4e, +0x0001db4a, +0x0001db47, +0x0001db43, +0x0001db3f, +0x0001db3b, +0x0001db3a, +0x0001db36, +0x0001db32, +0x0001db2e, +0x0001db2b, +0x0001db27, +0x0001db23, +0x0001db21, +0x0001db1e, +0x0001db1a, +0x0001db16, +0x0001db13, +0x0001db0f, +0x0001db0b, +0x0001db09, +0x0001db06, +0x0001db02, +0x0001dafe, +0x0001dafa, +0x0001daf7, +0x0001daf3, +0x0001daf1, +0x0001daed, +0x0001daea, +0x0001dae6, +0x0001dae2, +0x0001dadf, +0x0001dadb, +0x0001dad9, +0x0001dad5, +0x0001dad2, +0x0001dace, +0x0001daca, +0x0001dac6, +0x0001dac3, +0x0001dac1, +0x0001dabd, +0x0001dab9, +0x0001dab6, +0x0001dab2, +0x0001daae, +0x0001daab, +0x0001daa9, +0x0001daa5, +0x0001daa1, +0x0001da9e, +0x0001da9a, +0x0001da96, +0x0001da93, +0x0001da91, +0x0001da8d, +0x0001da89, +0x0001da86, +0x0001da82, +0x0001da7e, +0x0001da7a, +0x0001da79, +0x0001da75, +0x0001da71, +0x0001da6d, +0x0001da6a, +0x0001da66, +0x0001da62, +0x0001da60, +0x0001da5d, +0x0001da59, +0x0001da55, +0x0001da52, +0x0001da4e, +0x0001da4c, +0x0001da48, +0x0001da45, +0x0001da41, +0x0001da3d, +0x0001da39, +0x0001da36, +0x0001da34, +0x0001da30, +0x0001da2c, +0x0001da29, +0x0001da25, +0x0001da21, +0x0001da1e, +0x0001da1c, +0x0001da18, +0x0001da14, +0x0001da11, +0x0001da0d, +0x0001da0a, +0x0001da06, +0x0001da03, +0x0001d9ff, +0x0001d9fb, +0x0001d9f9, +0x0001d9f6, +0x0001d9f2, +0x0001d9ee, +0x0001d9eb, +0x0001d9e7, +0x0001d9e3, +0x0001d9e1, +0x0001d9de, +0x0001d9da, +0x0001d9d6, +0x0001d9d3, +0x0001d9cf, +0x0001d9cb, +0x0001d9c9, +0x0001d9c6, +0x0001d9c2, +0x0001d9be, +0x0001d9bb, +0x0001d9b7, +0x0001d9b5, +0x0001d9b1, +0x0001d9ae, +0x0001d9aa, +0x0001d9a6, +0x0001d9a3, +0x0001d99f, +0x0001d99d, +0x0001d999, +0x0001d996, +0x0001d992, +0x0001d98e, +0x0001d98b, +0x0001d989, +0x0001d985, +0x0001d981, +0x0001d97e, +0x0001d97a, +0x0001d976, +0x0001d973, +0x0001d971, +0x0001d96d, +0x0001d969, +0x0001d966, +0x0001d962, +0x0001d95e, +0x0001d95c, +0x0001d959, +0x0001d955, +0x0001d951, +0x0001d94e, +0x0001d94a, +0x0001d946, +0x0001d944, +0x0001d941, +0x0001d93d, +0x0001d939, +0x0001d936, +0x0001d932, +0x0001d930, +0x0001d92c, +0x0001d929, +0x0001d925, +0x0001d921, +0x0001d91e, +0x0001d91a, +0x0001d918, +0x0001d914, +0x0001d911, +0x0001d90d, +0x0001d909, +0x0001d906, +0x0001d902, +0x0001d900, +0x0001d8fc, +0x0001d8f9, +0x0001d8f5, +0x0001d8f1, +0x0001d8ee, +0x0001d8ec, +0x0001d8e8, +0x0001d8e4, +0x0001d8e1, +0x0001d8dd, +0x0001d8d9, +0x0001d8d6, +0x0001d8d4, +0x0001d8d0, +0x0001d8cc, +0x0001d8c9, +0x0001d8c5, +0x0001d8c1, +0x0001d8bf, +0x0001d8bc, +0x0001d8b8, +0x0001d8b4, +0x0001d8b1, +0x0001d8ad, +0x0001d8a9, +0x0001d8a7, +0x0001d8a4, +0x0001d8a0, +0x0001d89c, +0x0001d899, +0x0001d895, +0x0001d893, +0x0001d88f, +0x0001d88c, +0x0001d888, +0x0001d884, +0x0001d881, +0x0001d87d, +0x0001d87b, +0x0001d877, +0x0001d874, +0x0001d870, +0x0001d86c, +0x0001d868, +0x0001d865, +0x0001d863, +0x0001d85f, +0x0001d85c, +0x0001d858, +0x0001d854, +0x0001d851, +0x0001d84d, +0x0001d849, +0x0001d846, +0x0001d844, +0x0001d840, +0x0001d83c, +0x0001d839, +0x0001d835, +0x0001d831, +0x0001d830, +0x0001d82c, +0x0001d828, +0x0001d825, +0x0001d821, +0x0001d81d, +0x0001d819, +0x0001d818, +0x0001d814, +0x0001d810, +0x0001d80d, +0x0001d809, +0x0001d805, +0x0001d803, +0x0001d800, +0x0001d7fc, +0x0001d7f8, +0x0001d7f5, +0x0001d7f1, +0x0001d7ef, +0x0001d7ec, +0x0001d7e8, +0x0001d7e4, +0x0001d7e0, +0x0001d7dd, +0x0001d7db, +0x0001d7d7, +0x0001d7d4, +0x0001d7d0, +0x0001d7cc, +0x0001d7c9, +0x0001d7c5, +0x0001d7c3, +0x0001d7bf, +0x0001d7bc, +0x0001d7b8, +0x0001d7b4, +0x0001d7b1, +0x0001d7af, +0x0001d7ab, +0x0001d7a7, +0x0001d7a4, +0x0001d7a0, +0x0001d79c, +0x0001d79b, +0x0001d797, +0x0001d793, +0x0001d790, +0x0001d78c, +0x0001d788, +0x0001d786, +0x0001d783, +0x0001d77f, +0x0001d77b, +0x0001d778, +0x0001d774, +0x0001d770, +0x0001d76e, +0x0001d76b, +0x0001d767, +0x0001d763, +0x0001d760, +0x0001d75c, +0x0001d75a, +0x0001d756, +0x0001d753, +0x0001d74f, +0x0001d74b, +0x0001d748, +0x0001d746, +0x0001d742, +0x0001d73f, +0x0001d73b, +0x0001d737, +0x0001d734, +0x0001d732, +0x0001d72e, +0x0001d72a, +0x0001d727, +0x0001d723, +0x0001d71f, +0x0001d71c, +0x0001d71a, +0x0001d716, +0x0001d712, +0x0001d70f, +0x0001d70b, +0x0001d707, +0x0001d706, +0x0001d702, +0x0001d6fe, +0x0001d6fa, +0x0001d6f7, +0x0001d6f3, +0x0001d6f1, +0x0001d6ee, +0x0001d6ea, +0x0001d6e6, +0x0001d6e3, +0x0001d6df, +0x0001d6dd, +0x0001d6d9, +0x0001d6d6, +0x0001d6d2, +0x0001d6ce, +0x0001d6cb, +0x0001d6c7, +0x0001d6c5, +0x0001d6c1, +0x0001d6be, +0x0001d6ba, +0x0001d6b6, +0x0001d6b3, +0x0001d6b1, +0x0001d6ad, +0x0001d6aa, +0x0001d6a6, +0x0001d6a3, +0x0001d6a0, +0x0001d69c, +0x0001d698, +0x0001d695, +0x0001d691, +0x0001d68d, +0x0001d68c, +0x0001d688, +0x0001d684, +0x0001d681, +0x0001d67d, +0x0001d679, +0x0001d677, +0x0001d674, +0x0001d670, +0x0001d66c, +0x0001d669, +0x0001d665, +0x0001d663, +0x0001d65f, +0x0001d65c, +0x0001d658, +0x0001d654, +0x0001d651, +0x0001d64f, +0x0001d64b, +0x0001d648, +0x0001d644, +0x0001d640, +0x0001d63d, +0x0001d63b, +0x0001d637, +0x0001d633, +0x0001d630, +0x0001d62c, +0x0001d628, +0x0001d627, +0x0001d623, +0x0001d61f, +0x0001d61c, +0x0001d618, +0x0001d614, +0x0001d612, +0x0001d60f, +0x0001d60b, +0x0001d607, +0x0001d604, +0x0001d600, +0x0001d5fe, +0x0001d5fa, +0x0001d5f7, +0x0001d5f3, +0x0001d5ef, +0x0001d5ec, +0x0001d5ea, +0x0001d5e6, +0x0001d5e3, +0x0001d5df, +0x0001d5db, +0x0001d5d8, +0x0001d5d6, +0x0001d5d2, +0x0001d5ce, +0x0001d5cb, +0x0001d5c7, +0x0001d5c3, +0x0001d5c0, +0x0001d5be, +0x0001d5ba, +0x0001d5b7, +0x0001d5b3, +0x0001d5af, +0x0001d5ac, +0x0001d5aa, +0x0001d5a6, +0x0001d5a2, +0x0001d59f, +0x0001d59b, +0x0001d597, +0x0001d596, +0x0001d592, +0x0001d58e, +0x0001d58b, +0x0001d587, +0x0001d583, +0x0001d581, +0x0001d57e, +0x0001d57a, +0x0001d576, +0x0001d573, +0x0001d56f, +0x0001d56d, +0x0001d569, +0x0001d566, +0x0001d562, +0x0001d55e, +0x0001d55b, +0x0001d559, +0x0001d555, +0x0001d552, +0x0001d54e, +0x0001d54a, +0x0001d547, +0x0001d545, +0x0001d541, +0x0001d53d, +0x0001d53a, +0x0001d536, +0x0001d532, +0x0001d531, +0x0001d52d, +0x0001d529, +0x0001d526, +0x0001d522, +0x0001d51e, +0x0001d51c, +0x0001d519, +0x0001d515, +0x0001d511, +0x0001d50e, +0x0001d50a, +0x0001d508, +0x0001d504, +0x0001d501, +0x0001d4fd, +0x0001d4f9, +0x0001d4f6, +0x0001d4f3, +0x0001d4ef, +0x0001d4ec, +0x0001d4ea, +0x0001d4e6, +0x0001d4e3, +0x0001d4df, +0x0001d4db, +0x0001d4d8, +0x0001d4d6, +0x0001d4d2, +0x0001d4cf, +0x0001d4cb, +0x0001d4c7, +0x0001d4c4, +0x0001d4c2, +0x0001d4be, +0x0001d4ba, +0x0001d4b7, +0x0001d4b3, +0x0001d4b0, +0x0001d4ae, +0x0001d4aa, +0x0001d4a6, +0x0001d4a3, +0x0001d49f, +0x0001d49b, +0x0001d49a, +0x0001d496, +0x0001d492, +0x0001d48f, +0x0001d48b, +0x0001d489, +0x0001d485, +0x0001d482, +0x0001d47e, +0x0001d47a, +0x0001d477, +0x0001d475, +0x0001d471, +0x0001d46e, +0x0001d46a, +0x0001d466, +0x0001d463, +0x0001d461, +0x0001d45d, +0x0001d45a, +0x0001d456, +0x0001d452, +0x0001d44f, +0x0001d44d, +0x0001d449, +0x0001d445, +0x0001d442, +0x0001d43e, +0x0001d43b, +0x0001d439, +0x0001d435, +0x0001d431, +0x0001d42e, +0x0001d42a, +0x0001d426, +0x0001d425, +0x0001d421, +0x0001d41d, +0x0001d41a, +0x0001d416, +0x0001d414, +0x0001d410, +0x0001d40d, +0x0001d409, +0x0001d405, +0x0001d402, +0x0001d400, +0x0001d3fc, +0x0001d3f9, +0x0001d3f5, +0x0001d3f1, +0x0001d3ee, +0x0001d3ec, +0x0001d3e8, +0x0001d3e5, +0x0001d3e1, +0x0001d3dd, +0x0001d3da, +0x0001d3d8, +0x0001d3d4, +0x0001d3d0, +0x0001d3cd, +0x0001d3c9, +0x0001d3c6, +0x0001d3c4, +0x0001d3c0, +0x0001d3bc, +0x0001d3b9, +0x0001d3b5, +0x0001d3b3, +0x0001d3b0, +0x0001d3ac, +0x0001d3a8, +0x0001d3a5, +0x0001d3a1, +0x0001d39f, +0x0001d39b, +0x0001d398, +0x0001d394, +0x0001d390, +0x0001d38d, +0x0001d38b, +0x0001d387, +0x0001d384, +0x0001d380, +0x0001d37c, +0x0001d379, +0x0001d377, +0x0001d373, +0x0001d370, +0x0001d36c, +0x0001d368, +0x0001d365, +0x0001d363, +0x0001d35f, +0x0001d35b, +0x0001d358, +0x0001d354, +0x0001d351, +0x0001d34f, +0x0001d34b, +0x0001d348, +0x0001d344, +0x0001d340, +0x0001d33d, +0x0001d339, +0x0001d335, +0x0001d334, +0x0001d330, +0x0001d32c, +0x0001d329, +0x0001d325, +0x0001d321, +0x0001d320, +0x0001d31c, +0x0001d318, +0x0001d315, +0x0001d311, +0x0001d30f, +0x0001d30c, +0x0001d308, +0x0001d304, +0x0001d301, +0x0001d2fd, +0x0001d2fb, +0x0001d2f8, +0x0001d2f4, +0x0001d2f0, +0x0001d2ed, +0x0001d2eb, +0x0001d2e7, +0x0001d2e4, +0x0001d2e0, +0x0001d2dc, +0x0001d2d9, +0x0001d2d7, +0x0001d2d3, +0x0001d2d0, +0x0001d2cc, +0x0001d2c8, +0x0001d2c6, +0x0001d2c3, +0x0001d2bf, +0x0001d2bb, +0x0001d2b8, +0x0001d2b4, +0x0001d2b2, +0x0001d2af, +0x0001d2ab, +0x0001d2a7, +0x0001d2a4, +0x0001d2a0, +0x0001d29e, +0x0001d29b, +0x0001d297, +0x0001d293, +0x0001d290, +0x0001d28e, +0x0001d28a, +0x0001d287, +0x0001d283, +0x0001d27f, +0x0001d27c, +0x0001d27a, +0x0001d276, +0x0001d273, +0x0001d26f, +0x0001d26b, +0x0001d26a, +0x0001d266, +0x0001d262, +0x0001d25f, +0x0001d25b, +0x0001d257, +0x0001d256, +0x0001d252, +0x0001d24e, +0x0001d24b, +0x0001d247, +0x0001d245, +0x0001d242, +0x0001d23e, +0x0001d23a, +0x0001d237, +0x0001d233, +0x0001d231, +0x0001d22e, +0x0001d22a, +0x0001d226, +0x0001d223, +0x0001d21f, +0x0001d21d, +0x0001d219, +0x0001d216, +0x0001d212, +0x0001d20f, +0x0001d20d, +0x0001d209, +0x0001d205, +0x0001d202, +0x0001d1fe, +0x0001d1fb, +0x0001d1f9, +0x0001d1f5, +0x0001d1f1, +0x0001d1ee, +0x0001d1ea, +0x0001d1e8, +0x0001d1e5, +0x0001d1e1, +0x0001d1dd, +0x0001d1da, +0x0001d1d6, +0x0001d1d4, +0x0001d1d1, +0x0001d1cd, +0x0001d1c9, +0x0001d1c6, +0x0001d1c4, +0x0001d1c0, +0x0001d1bd, +0x0001d1b9, +0x0001d1b5, +0x0001d1b2, +0x0001d1b0, +0x0001d1ac, +0x0001d1a9, +0x0001d1a5, +0x0001d1a1, +0x0001d19e, +0x0001d19a, +0x0001d199, +0x0001d195, +0x0001d191, +0x0001d18e, +0x0001d18a, +0x0001d188, +0x0001d185, +0x0001d181, +0x0001d17d, +0x0001d17a, +0x0001d176, +0x0001d174, +0x0001d171, +0x0001d16d, +0x0001d169, +0x0001d166, +0x0001d164, +0x0001d160, +0x0001d15d, +0x0001d159, +0x0001d155, +0x0001d152, +0x0001d150, +0x0001d14c, +0x0001d149, +0x0001d145, +0x0001d141, +0x0001d140, +0x0001d13c, +0x0001d138, +0x0001d135, +0x0001d131, +0x0001d12d, +0x0001d12c, +0x0001d128, +0x0001d124, +0x0001d121, +0x0001d11d, +0x0001d11b, +0x0001d118, +0x0001d114, +0x0001d110, +0x0001d10d, +0x0001d10b, +0x0001d107, +0x0001d104, +0x0001d100, +0x0001d0fc, +0x0001d0f9, +0x0001d0f7, +0x0001d0f3, +0x0001d0f0, +0x0001d0ec, +0x0001d0e8, +0x0001d0e7, +0x0001d0e3, +0x0001d0df, +0x0001d0dc, +0x0001d0d8, +0x0001d0d4, +0x0001d0d3, +0x0001d0cf, +0x0001d0cb, +0x0001d0c8, +0x0001d0c4, +0x0001d0c2, +0x0001d0bf, +0x0001d0bb, +0x0001d0b7, +0x0001d0b4, +0x0001d0b0, +0x0001d0ae, +0x0001d0ab, +0x0001d0a7, +0x0001d0a3, +0x0001d0a0, +0x0001d09e, +0x0001d09a, +0x0001d097, +0x0001d093, +0x0001d08f, +0x0001d08c, +0x0001d08a, +0x0001d086, +0x0001d083, +0x0001d07f, +0x0001d07b, +0x0001d07a, +0x0001d076, +0x0001d072, +0x0001d06f, +0x0001d06b, +0x0001d069, +0x0001d066, +0x0001d062, +0x0001d05e, +0x0001d05b, +0x0001d057, +0x0001d055, +0x0001d052, +0x0001d04e, +0x0001d04a, +0x0001d047, +0x0001d045, +0x0001d041, +0x0001d03e, +0x0001d03a, +0x0001d036, +0x0001d033, +0x0001d031, +0x0001d02d, +0x0001d02a, +0x0001d026, +0x0001d022, +0x0001d021, +0x0001d01d, +0x0001d019, +0x0001d016, +0x0001d012, +0x0001d00e, +0x0001d00d, +0x0001d009, +0x0001d005, +0x0001d002, +0x0001cffe, +0x0001cffc, +0x0001cff8, +0x0001cff4, +0x0001cff2, +0x0001cfef, +0x0001cfeb, +0x0001cfe8, +0x0001cfe4, +0x0001cfe2, +0x0001cfde, +0x0001cfdb, +0x0001cfd7, +0x0001cfd4, +0x0001cfd2, +0x0001cfce, +0x0001cfcb, +0x0001cfc7, +0x0001cfc3, +0x0001cfc2, +0x0001cfbe, +0x0001cfba, +0x0001cfb7, +0x0001cfb3, +0x0001cfaf, +0x0001cfae, +0x0001cfaa, +0x0001cfa6, +0x0001cfa3, +0x0001cf9f, +0x0001cf9d, +0x0001cf9a, +0x0001cf96, +0x0001cf92, +0x0001cf8f, +0x0001cf8d, +0x0001cf89, +0x0001cf86, +0x0001cf82, +0x0001cf7f, +0x0001cf7d, +0x0001cf79, +0x0001cf76, +0x0001cf72, +0x0001cf6e, +0x0001cf6b, +0x0001cf69, +0x0001cf65, +0x0001cf62, +0x0001cf5e, +0x0001cf5a, +0x0001cf59, +0x0001cf55, +0x0001cf51, +0x0001cf4e, +0x0001cf4a, +0x0001cf48, +0x0001cf45, +0x0001cf41, +0x0001cf3d, +0x0001cf3a, +0x0001cf38, +0x0001cf34, +0x0001cf31, +0x0001cf2d, +0x0001cf2a, +0x0001cf28, +0x0001cf24, +0x0001cf21, +0x0001cf1d, +0x0001cf19, +0x0001cf16, +0x0001cf14, +0x0001cf10, +0x0001cf0d, +0x0001cf09, +0x0001cf05, +0x0001cf04, +0x0001cf00, +0x0001cefc, +0x0001cef9, +0x0001cef5, +0x0001cef3, +0x0001cef0, +0x0001ceec, +0x0001cee8, +0x0001cee5, +0x0001cee3, +0x0001cedf, +0x0001cedc, +0x0001ced8, +0x0001ced5, +0x0001ced1, +0x0001cecf, +0x0001cecc, +0x0001cec8, +0x0001cec4, +0x0001cec1, +0x0001cebf, +0x0001cebb, +0x0001ceb8, +0x0001ceb4, +0x0001ceb0, +0x0001ceaf, +0x0001ceab, +0x0001cea7, +0x0001cea4, +0x0001cea0, +0x0001ce9e, +0x0001ce9b, +0x0001ce97, +0x0001ce93, +0x0001ce90, +0x0001ce8c, +0x0001ce8a, +0x0001ce87, +0x0001ce83, +0x0001ce80, +0x0001ce7c, +0x0001ce7a, +0x0001ce77, +0x0001ce73, +0x0001ce6f, +0x0001ce6c, +0x0001ce6a, +0x0001ce66, +0x0001ce63, +0x0001ce5f, +0x0001ce5b, +0x0001ce5a, +0x0001ce57, +0x0001ce53, +0x0001ce4f, +0x0001ce4c, +0x0001ce48, +0x0001ce45, +0x0001ce43, +0x0001ce3f, +0x0001ce3c, +0x0001ce38, +0x0001ce34, +0x0001ce33, +0x0001ce2f, +0x0001ce2b, +0x0001ce28, +0x0001ce24, +0x0001ce22, +0x0001ce1f, +0x0001ce1b, +0x0001ce17, +0x0001ce14, +0x0001ce12, +0x0001ce0e, +0x0001ce0b, +0x0001ce07, +0x0001ce04, +0x0001ce02, +0x0001cdfe, +0x0001cdfb, +0x0001cdf7, +0x0001cdf3, +0x0001cdf2, +0x0001cdee, +0x0001cdea, +0x0001cde7, +0x0001cde3, +0x0001cde1, +0x0001cdde, +0x0001cdda, +0x0001cdd6, +0x0001cdd3, +0x0001cdd1, +0x0001cdcd, +0x0001cdca, +0x0001cdc6, +0x0001cdc3, +0x0001cdbf, +0x0001cdbd, +0x0001cdba, +0x0001cdb6, +0x0001cdb2, +0x0001cdaf, +0x0001cdad, +0x0001cda9, +0x0001cda6, +0x0001cda2, +0x0001cd9f, +0x0001cd9d, +0x0001cd99, +0x0001cd96, +0x0001cd92, +0x0001cd8e, +0x0001cd8d, +0x0001cd89, +0x0001cd85, +0x0001cd82, +0x0001cd7e, +0x0001cd7c, +0x0001cd79, +0x0001cd75, +0x0001cd71, +0x0001cd6e, +0x0001cd6c, +0x0001cd68, +0x0001cd65, +0x0001cd61, +0x0001cd5e, +0x0001cd5c, +0x0001cd58, +0x0001cd55, +0x0001cd51, +0x0001cd4d, +0x0001cd4c, +0x0001cd48, +0x0001cd44, +0x0001cd41, +0x0001cd3d, +0x0001cd39, +0x0001cd38, +0x0001cd34, +0x0001cd30, +0x0001cd2d, +0x0001cd29, +0x0001cd27, +0x0001cd24, +0x0001cd20, +0x0001cd1d, +0x0001cd19, +0x0001cd17, +0x0001cd14, +0x0001cd10, +0x0001cd0c, +0x0001cd09, +0x0001cd07, +0x0001cd03, +0x0001cd00, +0x0001ccfc, +0x0001ccf9, +0x0001ccf7, +0x0001ccf3, +0x0001ccef, +0x0001ccec, +0x0001cce8, +0x0001cce6, +0x0001cce3, +0x0001ccdf, +0x0001ccdc, +0x0001ccd8, +0x0001ccd6, +0x0001ccd3, +0x0001cccf, +0x0001cccb, +0x0001ccc8, +0x0001ccc6, +0x0001ccc2, +0x0001ccbf, +0x0001ccbb, +0x0001ccb8, +0x0001ccb5, +0x0001ccb2, +0x0001ccae, +0x0001ccad, +0x0001cca9, +0x0001cca5, +0x0001cca2, +0x0001cc9e, +0x0001cc9c, +0x0001cc99, +0x0001cc95, +0x0001cc92, +0x0001cc8e, +0x0001cc8c, +0x0001cc89, +0x0001cc85, +0x0001cc81, +0x0001cc7e, +0x0001cc7c, +0x0001cc78, +0x0001cc75, +0x0001cc71, +0x0001cc6e, +0x0001cc6c, +0x0001cc68, +0x0001cc65, +0x0001cc61, +0x0001cc5d, +0x0001cc5c, +0x0001cc58, +0x0001cc54, +0x0001cc51, +0x0001cc4f, +0x0001cc4b, +0x0001cc48, +0x0001cc44, +0x0001cc41, +0x0001cc3f, +0x0001cc3b, +0x0001cc38, +0x0001cc34, +0x0001cc31, +0x0001cc2f, +0x0001cc2b, +0x0001cc28, +0x0001cc24, +0x0001cc20, +0x0001cc1f, +0x0001cc1b, +0x0001cc17, +0x0001cc14, +0x0001cc10, +0x0001cc0e, +0x0001cc0b, +0x0001cc07, +0x0001cc04, +0x0001cc00, +0x0001cbfe, +0x0001cbfb, +0x0001cbf7, +0x0001cbf3, +0x0001cbf0, +0x0001cbee, +0x0001cbea, +0x0001cbe7, +0x0001cbe3, +0x0001cbe0, +0x0001cbde, +0x0001cbda, +0x0001cbd7, +0x0001cbd3, +0x0001cbcf, +0x0001cbce, +0x0001cbca, +0x0001cbc7, +0x0001cbc3, +0x0001cbbf, +0x0001cbbe, +0x0001cbba, +0x0001cbb6, +0x0001cbb3, +0x0001cbaf, +0x0001cbad, +0x0001cbaa, +0x0001cba6, +0x0001cba3, +0x0001cb9f, +0x0001cb9d, +0x0001cb9a, +0x0001cb96, +0x0001cb92, +0x0001cb8f, +0x0001cb8d, +0x0001cb89, +0x0001cb86, +0x0001cb82, +0x0001cb80, +0x0001cb7d, +0x0001cb79, +0x0001cb76, +0x0001cb72, +0x0001cb70, +0x0001cb6d, +0x0001cb69, +0x0001cb65, +0x0001cb62, +0x0001cb60, +0x0001cb5c, +0x0001cb59, +0x0001cb55, +0x0001cb52, +0x0001cb50, +0x0001cb4c, +0x0001cb49, +0x0001cb45, +0x0001cb42, +0x0001cb40, +0x0001cb3c, +0x0001cb39, +0x0001cb35, +0x0001cb31, +0x0001cb30, +0x0001cb2c, +0x0001cb28, +0x0001cb25, +0x0001cb21, +0x0001cb1f, +0x0001cb1c, +0x0001cb19, +0x0001cb15, +0x0001cb12, +0x0001cb0e, +0x0001cb0b, +0x0001cb09, +0x0001cb05, +0x0001cb02, +0x0001cafe, +0x0001cafa, +0x0001caf9, +0x0001caf5, +0x0001caf2, +0x0001caee, +0x0001caea, +0x0001cae9, +0x0001cae5, +0x0001cae1, +0x0001cade, +0x0001cadc, +0x0001cad8, +0x0001cad5, +0x0001cad1, +0x0001cace, +0x0001cacc, +0x0001cac8, +0x0001cac5, +0x0001cac1, +0x0001cabe, +0x0001cabc, +0x0001cab8, +0x0001cab5, +0x0001cab1, +0x0001caae, +0x0001caac, +0x0001caa8, +0x0001caa5, +0x0001caa1, +0x0001ca9f, +0x0001ca9c, +0x0001ca98, +0x0001ca94, +0x0001ca91, +0x0001ca8f, +0x0001ca8c, +0x0001ca88, +0x0001ca84, +0x0001ca81, +0x0001ca7f, +0x0001ca7b, +0x0001ca78, +0x0001ca74, +0x0001ca71, +0x0001ca6f, +0x0001ca6b, +0x0001ca68, +0x0001ca64, +0x0001ca62, +0x0001ca5f, +0x0001ca5b, +0x0001ca58, +0x0001ca54, +0x0001ca52, +0x0001ca4f, +0x0001ca4b, +0x0001ca48, +0x0001ca44, +0x0001ca42, +0x0001ca3f, +0x0001ca3b, +0x0001ca37, +0x0001ca34, +0x0001ca32, +0x0001ca2f, +0x0001ca2b, +0x0001ca27, +0x0001ca26, +0x0001ca22, +0x0001ca1e, +0x0001ca1b, +0x0001ca17, +0x0001ca15, +0x0001ca12, +0x0001ca0e, +0x0001ca0b, +0x0001ca07, +0x0001ca05, +0x0001ca02, +0x0001c9fe, +0x0001c9fb, +0x0001c9f7, +0x0001c9f5, +0x0001c9f2, +0x0001c9ee, +0x0001c9eb, +0x0001c9e9, +0x0001c9e5, +0x0001c9e2, +0x0001c9de, +0x0001c9da, +0x0001c9d9, +0x0001c9d5, +0x0001c9d1, +0x0001c9ce, +0x0001c9ca, +0x0001c9c9, +0x0001c9c5, +0x0001c9c1, +0x0001c9be, +0x0001c9ba, +0x0001c9b8, +0x0001c9b5, +0x0001c9b1, +0x0001c9ae, +0x0001c9ac, +0x0001c9a8, +0x0001c9a5, +0x0001c9a1, +0x0001c99e, +0x0001c99c, +0x0001c998, +0x0001c995, +0x0001c991, +0x0001c98e, +0x0001c98c, +0x0001c988, +0x0001c985, +0x0001c981, +0x0001c97f, +0x0001c97b, +0x0001c978, +0x0001c974, +0x0001c972, +0x0001c96f, +0x0001c96b, +0x0001c968, +0x0001c964, +0x0001c962, +0x0001c95f, +0x0001c95b, +0x0001c957, +0x0001c956, +0x0001c952, +0x0001c94f, +0x0001c94b, +0x0001c947, +0x0001c946, +0x0001c942, +0x0001c93e, +0x0001c93b, +0x0001c937, +0x0001c936, +0x0001c932, +0x0001c92e, +0x0001c92b, +0x0001c929, +0x0001c925, +0x0001c922, +0x0001c91e, +0x0001c91b, +0x0001c919, +0x0001c915, +0x0001c912, +0x0001c90e, +0x0001c90b, +0x0001c909, +0x0001c905, +0x0001c902, +0x0001c8fe, +0x0001c8fc, +0x0001c8f9, +0x0001c8f5, +0x0001c8f2, +0x0001c8ee, +0x0001c8ec, +0x0001c8e9, +0x0001c8e5, +0x0001c8e2, +0x0001c8de, +0x0001c8dc, +0x0001c8d9, +0x0001c8d5, +0x0001c8d2, +0x0001c8d0, +0x0001c8cc, +0x0001c8c9, +0x0001c8c5, +0x0001c8c2, +0x0001c8c0, +0x0001c8bc, +0x0001c8b9, +0x0001c8b5, +0x0001c8b3, +0x0001c8b0, +0x0001c8ac, +0x0001c8a9, +0x0001c8a5, +0x0001c8a3, +0x0001c8a0, +0x0001c89c, +0x0001c898, +0x0001c895, +0x0001c893, +0x0001c890, +0x0001c88c, +0x0001c888, +0x0001c887, +0x0001c883, +0x0001c87f, +0x0001c87c, +0x0001c878, +0x0001c877, +0x0001c873, +0x0001c86f, +0x0001c86c, +0x0001c868, +0x0001c866, +0x0001c863, +0x0001c85f, +0x0001c85c, +0x0001c85a, +0x0001c856, +0x0001c853, +0x0001c84f, +0x0001c84c, +0x0001c84a, +0x0001c846, +0x0001c843, +0x0001c83f, +0x0001c83c, +0x0001c83a, +0x0001c836, +0x0001c833, +0x0001c82f, +0x0001c82d, +0x0001c82a, +0x0001c826, +0x0001c823, +0x0001c81f, +0x0001c81d, +0x0001c81a, +0x0001c816, +0x0001c813, +0x0001c80f, +0x0001c80d, +0x0001c80a, +0x0001c806, +0x0001c803, +0x0001c801, +0x0001c7fd, +0x0001c7fa, +0x0001c7f6, +0x0001c7f2, +0x0001c7f1, +0x0001c7ed, +0x0001c7ea, +0x0001c7e7, +0x0001c7e4, +0x0001c7e0, +0x0001c7dc, +0x0001c7db, +0x0001c7d7, +0x0001c7d4, +0x0001c7d0, +0x0001c7ce, +0x0001c7cb, +0x0001c7c7, +0x0001c7c4, +0x0001c7c0, +0x0001c7be, +0x0001c7bb, +0x0001c7b7, +0x0001c7b4, +0x0001c7b2, +0x0001c7ae, +0x0001c7ab, +0x0001c7a7, +0x0001c7a4, +0x0001c7a2, +0x0001c79e, +0x0001c79b, +0x0001c797, +0x0001c795, +0x0001c792, +0x0001c78e, +0x0001c78b, +0x0001c787, +0x0001c785, +0x0001c782, +0x0001c77e, +0x0001c77b, +0x0001c779, +0x0001c775, +0x0001c772, +0x0001c76e, +0x0001c76b, +0x0001c769, +0x0001c765, +0x0001c762, +0x0001c75e, +0x0001c75c, +0x0001c759, +0x0001c755, +0x0001c752, +0x0001c74e, +0x0001c74c, +0x0001c749, +0x0001c745, +0x0001c742, +0x0001c740, +0x0001c73c, +0x0001c739, +0x0001c735, +0x0001c732, +0x0001c730, +0x0001c72c, +0x0001c729, +0x0001c725, +0x0001c724, +0x0001c720, +0x0001c71c, +0x0001c719, +0x0001c715, +0x0001c714, +0x0001c710, +0x0001c70c, +0x0001c709, +0x0001c707, +0x0001c704, +0x0001c700, +0x0001c6fc, +0x0001c6f9, +0x0001c6f7, +0x0001c6f4, +0x0001c6f0, +0x0001c6ec, +0x0001c6eb, +0x0001c6e7, +0x0001c6e4, +0x0001c6e0, +0x0001c6dc, +0x0001c6db, +0x0001c6d7, +0x0001c6d4, +0x0001c6d0, +0x0001c6ce, +0x0001c6cb, +0x0001c6c7, +0x0001c6c4, +0x0001c6c0, +0x0001c6be, +0x0001c6bb, +0x0001c6b7, +0x0001c6b4, +0x0001c6b2, +0x0001c6ae, +0x0001c6ab, +0x0001c6a7, +0x0001c6a4, +0x0001c6a2, +0x0001c69e, +0x0001c69b, +0x0001c697, +0x0001c695, +0x0001c692, +0x0001c68e, +0x0001c68b, +0x0001c687, +0x0001c685, +0x0001c682, +0x0001c67e, +0x0001c67b, +0x0001c679, +0x0001c675, +0x0001c672, +0x0001c66e, +0x0001c66b, +0x0001c669, +0x0001c665, +0x0001c662, +0x0001c65e, +0x0001c65c, +0x0001c659, +0x0001c655, +0x0001c653, +0x0001c650, +0x0001c64c, +0x0001c649, +0x0001c645, +0x0001c643, +0x0001c640, +0x0001c63c, +0x0001c639, +0x0001c637, +0x0001c633, +0x0001c630, +0x0001c62c, +0x0001c629, +0x0001c627, +0x0001c623, +0x0001c620, +0x0001c61c, +0x0001c61b, +0x0001c617, +0x0001c614, +0x0001c610, +0x0001c60c, +0x0001c60b, +0x0001c607, +0x0001c604, +0x0001c600, +0x0001c5fe, +0x0001c5fb, +0x0001c5f7, +0x0001c5f4, +0x0001c5f2, +0x0001c5ee, +0x0001c5eb, +0x0001c5e7, +0x0001c5e4, +0x0001c5e2, +0x0001c5de, +0x0001c5db, +0x0001c5d7, +0x0001c5d5, +0x0001c5d2, +0x0001c5ce, +0x0001c5cb, +0x0001c5c7, +0x0001c5c5, +0x0001c5c2, +0x0001c5be, +0x0001c5bb, +0x0001c5b9, +0x0001c5b6, +0x0001c5b2, +0x0001c5ae, +0x0001c5ad, +0x0001c5a9, +0x0001c5a6, +0x0001c5a2, +0x0001c59e, +0x0001c59d, +0x0001c599, +0x0001c596, +0x0001c592, +0x0001c590, +0x0001c58d, +0x0001c589, +0x0001c586, +0x0001c582, +0x0001c580, +0x0001c57d, +0x0001c579, +0x0001c576, +0x0001c574, +0x0001c570, +0x0001c56d, +0x0001c569, +0x0001c566, +0x0001c564, +0x0001c560, +0x0001c55d, +0x0001c559, +0x0001c558, +0x0001c554, +0x0001c550, +0x0001c54d, +0x0001c54b, +0x0001c548, +0x0001c544, +0x0001c540, +0x0001c53d, +0x0001c53b, +0x0001c538, +0x0001c534, +0x0001c531, +0x0001c52f, +0x0001c52b, +0x0001c528, +0x0001c524, +0x0001c521, +0x0001c51f, +0x0001c51b, +0x0001c518, +0x0001c514, +0x0001c512, +0x0001c50f, +0x0001c50b, +0x0001c508, +0x0001c506, +0x0001c502, +0x0001c4ff, +0x0001c4fb, +0x0001c4f8, +0x0001c4f6, +0x0001c4f2, +0x0001c4ef, +0x0001c4eb, +0x0001c4ea, +0x0001c4e6, +0x0001c4e2, +0x0001c4df, +0x0001c4db, +0x0001c4da, +0x0001c4d6, +0x0001c4d3, +0x0001c4cf, +0x0001c4cd, +0x0001c4ca, +0x0001c4c6, +0x0001c4c3, +0x0001c4c0, +0x0001c4bd, +0x0001c4b9, +0x0001c4b8, +0x0001c4b4, +0x0001c4b1, +0x0001c4ad, +0x0001c4ab, +0x0001c4a8, +0x0001c4a4, +0x0001c4a1, +0x0001c49f, +0x0001c49b, +0x0001c498, +0x0001c494, +0x0001c493, +0x0001c48f, +0x0001c48b, +0x0001c488, +0x0001c484, +0x0001c483, +0x0001c47f, +0x0001c47c, +0x0001c478, +0x0001c476, +0x0001c473, +0x0001c46f, +0x0001c46c, +0x0001c46a, +0x0001c466, +0x0001c463, +0x0001c45f, +0x0001c45e, +0x0001c45a, +0x0001c457, +0x0001c453, +0x0001c44f, +0x0001c44e, +0x0001c44a, +0x0001c447, +0x0001c443, +0x0001c441, +0x0001c43e, +0x0001c43a, +0x0001c437, +0x0001c435, +0x0001c431, +0x0001c42e, +0x0001c42a, +0x0001c427, +0x0001c425, +0x0001c422, +0x0001c41e, +0x0001c41a, +0x0001c419, +0x0001c415, +0x0001c412, +0x0001c40e, +0x0001c40c, +0x0001c409, +0x0001c405, +0x0001c402, +0x0001c400, +0x0001c3fc, +0x0001c3f9, +0x0001c3f5, +0x0001c3f2, +0x0001c3f0, +0x0001c3ed, +0x0001c3e9, +0x0001c3e6, +0x0001c3e4, +0x0001c3e0, +0x0001c3dd, +0x0001c3d9, +0x0001c3d7, +0x0001c3d4, +0x0001c3d0, +0x0001c3cd, +0x0001c3cb, +0x0001c3c8, +0x0001c3c4, +0x0001c3c0, +0x0001c3bd, +0x0001c3bb, +0x0001c3b8, +0x0001c3b4, +0x0001c3b1, +0x0001c3af, +0x0001c3ab, +0x0001c3a8, +0x0001c3a4, +0x0001c3a2, +0x0001c39f, +0x0001c39b, +0x0001c398, +0x0001c396, +0x0001c393, +0x0001c38f, +0x0001c38b, +0x0001c388, +0x0001c386, +0x0001c383, +0x0001c37f, +0x0001c37c, +0x0001c37a, +0x0001c376, +0x0001c373, +0x0001c36f, +0x0001c36d, +0x0001c36a, +0x0001c366, +0x0001c363, +0x0001c35f, +0x0001c35e, +0x0001c35a, +0x0001c357, +0x0001c353, +0x0001c351, +0x0001c34e, +0x0001c34a, +0x0001c347, +0x0001c345, +0x0001c341, +0x0001c33e, +0x0001c33a, +0x0001c338, +0x0001c335, +0x0001c332, +0x0001c32e, +0x0001c32b, +0x0001c327, +0x0001c324, +0x0001c322, +0x0001c31f, +0x0001c31b, +0x0001c317, +0x0001c316, +0x0001c312, +0x0001c30f, +0x0001c30b, +0x0001c309, +0x0001c306, +0x0001c302, +0x0001c2ff, +0x0001c2fd, +0x0001c2fa, +0x0001c2f6, +0x0001c2f3, +0x0001c2f1, +0x0001c2ed, +0x0001c2ea, +0x0001c2e6, +0x0001c2e5, +0x0001c2e1, +0x0001c2dd, +0x0001c2da, +0x0001c2d8, +0x0001c2d5, +0x0001c2d1, +0x0001c2ce, +0x0001c2ca, +0x0001c2c8, +0x0001c2c5, +0x0001c2c1, +0x0001c2be, +0x0001c2bc, +0x0001c2b9, +0x0001c2b5, +0x0001c2b2, +0x0001c2b0, +0x0001c2ac, +0x0001c2a9, +0x0001c2a5, +0x0001c2a3, +0x0001c2a0, +0x0001c29c, +0x0001c299, +0x0001c297, +0x0001c294, +0x0001c290, +0x0001c28d, +0x0001c28b, +0x0001c287, +0x0001c284, +0x0001c280, +0x0001c27f, +0x0001c27b, +0x0001c278, +0x0001c274, +0x0001c272, +0x0001c26f, +0x0001c26b, +0x0001c268, +0x0001c264, +0x0001c262, +0x0001c25f, +0x0001c25b, +0x0001c258, +0x0001c256, +0x0001c253, +0x0001c24f, +0x0001c24c, +0x0001c24a, +0x0001c246, +0x0001c243, +0x0001c23f, +0x0001c23e, +0x0001c23a, +0x0001c236, +0x0001c233, +0x0001c231, +0x0001c22e, +0x0001c22a, +0x0001c227, +0x0001c225, +0x0001c221, +0x0001c21e, +0x0001c21a, +0x0001c219, +0x0001c215, +0x0001c212, +0x0001c20e, +0x0001c20c, +0x0001c209, +0x0001c205, +0x0001c202, +0x0001c1fe, +0x0001c1fc, +0x0001c1f9, +0x0001c1f5, +0x0001c1f2, +0x0001c1f0, +0x0001c1ed, +0x0001c1e9, +0x0001c1e6, +0x0001c1e4, +0x0001c1e0, +0x0001c1dd, +0x0001c1d9, +0x0001c1d8, +0x0001c1d4, +0x0001c1d1, +0x0001c1cd, +0x0001c1cb, +0x0001c1c8, +0x0001c1c4, +0x0001c1c1, +0x0001c1bf, +0x0001c1bb, +0x0001c1b8, +0x0001c1b4, +0x0001c1b3, +0x0001c1af, +0x0001c1ac, +0x0001c1a8, +0x0001c1a5, +0x0001c1a1, +0x0001c1a0, +0x0001c19c, +0x0001c199, +0x0001c195, +0x0001c193, +0x0001c190, +0x0001c18c, +0x0001c189, +0x0001c187, +0x0001c184, +0x0001c180, +0x0001c17d, +0x0001c17b, +0x0001c177, +0x0001c174, +0x0001c170, +0x0001c16e, +0x0001c16b, +0x0001c167, +0x0001c164, +0x0001c162, +0x0001c15f, +0x0001c15b, +0x0001c158, +0x0001c156, +0x0001c152, +0x0001c14f, +0x0001c14b, +0x0001c14a, +0x0001c146, +0x0001c143, +0x0001c13f, +0x0001c13d, +0x0001c13a, +0x0001c136, +0x0001c133, +0x0001c131, +0x0001c12e, +0x0001c12a, +0x0001c127, +0x0001c125, +0x0001c121, +0x0001c11e, +0x0001c11a, +0x0001c119, +0x0001c115, +0x0001c112, +0x0001c10e, +0x0001c10c, +0x0001c109, +0x0001c105, +0x0001c102, +0x0001c100, +0x0001c0fc, +0x0001c0f9, +0x0001c0f5, +0x0001c0f4, +0x0001c0f0, +0x0001c0ed, +0x0001c0e9, +0x0001c0e7, +0x0001c0e4, +0x0001c0e0, +0x0001c0dd, +0x0001c0d9, +0x0001c0d8, +0x0001c0d4, +0x0001c0d1, +0x0001c0cd, +0x0001c0cb, +0x0001c0c8, +0x0001c0c4, +0x0001c0c1, +0x0001c0bf, +0x0001c0bc, +0x0001c0b8, +0x0001c0b5, +0x0001c0b3, +0x0001c0af, +0x0001c0ac, +0x0001c0a8, +0x0001c0a7, +0x0001c0a3, +0x0001c0a0, +0x0001c09c, +0x0001c09a, +0x0001c097, +0x0001c093, +0x0001c090, +0x0001c08e, +0x0001c08a, +0x0001c087, +0x0001c083, +0x0001c082, +0x0001c07e, +0x0001c07b, +0x0001c077, +0x0001c075, +0x0001c072, +0x0001c06e, +0x0001c06b, +0x0001c069, +0x0001c066, +0x0001c062, +0x0001c05f, +0x0001c05d, +0x0001c059, +0x0001c056, +0x0001c052, +0x0001c051, +0x0001c04d, +0x0001c04a, +0x0001c046, +0x0001c044, +0x0001c041, +0x0001c03d, +0x0001c03a, +0x0001c038, +0x0001c035, +0x0001c031, +0x0001c02e, +0x0001c02c, +0x0001c028, +0x0001c025, +0x0001c021, +0x0001c020, +0x0001c01b, +0x0001c019, +0x0001c016, +0x0001c012, +0x0001c00f, +0x0001c00d, +0x0001c009, +0x0001c006, +0x0001c002, +0x0001c001, +0x0001bffd, +0x0001bffa, +0x0001bff6, +0x0001bff4, +0x0001bff1, +0x0001bfed, +0x0001bfea, +0x0001bfe8, +0x0001bfe5, +0x0001bfe1, +0x0001bfde, +0x0001bfdc, +0x0001bfd9, +0x0001bfd5, +0x0001bfd2, +0x0001bfd0, +0x0001bfcc, +0x0001bfc9, +0x0001bfc5, +0x0001bfc4, +0x0001bfc0, +0x0001bfbd, +0x0001bfb9, +0x0001bfb7, +0x0001bfb4, +0x0001bfb0, +0x0001bfad, +0x0001bfab, +0x0001bfa8, +0x0001bfa4, +0x0001bfa1, +0x0001bf9f, +0x0001bf9b, +0x0001bf98, +0x0001bf94, +0x0001bf93, +0x0001bf8f, +0x0001bf8c, +0x0001bf88, +0x0001bf86, +0x0001bf83, +0x0001bf7f, +0x0001bf7c, +0x0001bf7a, +0x0001bf77, +0x0001bf73, +0x0001bf70, +0x0001bf6e, +0x0001bf6b, +0x0001bf67, +0x0001bf64, +0x0001bf62, +0x0001bf5e, +0x0001bf5b, +0x0001bf59, +0x0001bf56, +0x0001bf52, +0x0001bf4f, +0x0001bf4d, +0x0001bf49, +0x0001bf46, +0x0001bf42, +0x0001bf41, +0x0001bf3d, +0x0001bf3a, +0x0001bf36, +0x0001bf34, +0x0001bf31, +0x0001bf2d, +0x0001bf2a, +0x0001bf28, +0x0001bf25, +0x0001bf21, +0x0001bf1e, +0x0001bf1c, +0x0001bf18, +0x0001bf15, +0x0001bf11, +0x0001bf10, +0x0001bf0c, +0x0001bf09, +0x0001bf05, +0x0001bf03, +0x0001bf00, +0x0001befd, +0x0001bef9, +0x0001bef7, +0x0001bef4, +0x0001bef0, +0x0001beed, +0x0001beeb, +0x0001bee8, +0x0001bee4, +0x0001bee1, +0x0001bedf, +0x0001bedb, +0x0001bed8, +0x0001bed4, +0x0001bed3, +0x0001becf, +0x0001becc, +0x0001bec8, +0x0001bec6, +0x0001bec3, +0x0001bebf, +0x0001bebc, +0x0001beba, +0x0001beb7, +0x0001beb3, +0x0001beb0, +0x0001beae, +0x0001beaa, +0x0001bea7, +0x0001bea3, +0x0001bea2, +0x0001be9e, +0x0001be9b, +0x0001be97, +0x0001be96, +0x0001be92, +0x0001be8f, +0x0001be8b, +0x0001be8a, +0x0001be86, +0x0001be83, +0x0001be7f, +0x0001be7d, +0x0001be7a, +0x0001be76, +0x0001be73, +0x0001be71, +0x0001be6e, +0x0001be6a, +0x0001be67, +0x0001be65, +0x0001be62, +0x0001be5e, +0x0001be5b, +0x0001be59, +0x0001be55, +0x0001be52, +0x0001be4e, +0x0001be4d, +0x0001be49, +0x0001be46, +0x0001be42, +0x0001be40, +0x0001be3d, +0x0001be39, +0x0001be36, +0x0001be34, +0x0001be31, +0x0001be2d, +0x0001be2c, +0x0001be28, +0x0001be25, +0x0001be21, +0x0001be1f, +0x0001be1c, +0x0001be18, +0x0001be15, +0x0001be13, +0x0001be10, +0x0001be0c, +0x0001be09, +0x0001be07, +0x0001be03, +0x0001be00, +0x0001bdfd, +0x0001bdfb, +0x0001bdf7, +0x0001bdf4, +0x0001bdf0, +0x0001bdef, +0x0001bdeb, +0x0001bde8, +0x0001bde4, +0x0001bde2, +0x0001bddf, +0x0001bddb, +0x0001bdd8, +0x0001bdd6, +0x0001bdd3, +0x0001bdcf, +0x0001bdcd, +0x0001bdca, +0x0001bdc7, +0x0001bdc3, +0x0001bdc1, +0x0001bdbe, +0x0001bdba, +0x0001bdb7, +0x0001bdb5, +0x0001bdb2, +0x0001bdae, +0x0001bdab, +0x0001bda9, +0x0001bda5, +0x0001bda2, +0x0001bd9e, +0x0001bd9d, +0x0001bd99, +0x0001bd96, +0x0001bd92, +0x0001bd91, +0x0001bd8d, +0x0001bd8a, +0x0001bd86, +0x0001bd84, +0x0001bd81, +0x0001bd7d, +0x0001bd7a, +0x0001bd78, +0x0001bd75, +0x0001bd71, +0x0001bd6f, +0x0001bd6c, +0x0001bd68, +0x0001bd65, +0x0001bd63, +0x0001bd60, +0x0001bd5c, +0x0001bd59, +0x0001bd57, +0x0001bd54, +0x0001bd50, +0x0001bd4d, +0x0001bd4b, +0x0001bd47, +0x0001bd44, +0x0001bd40, +0x0001bd3f, +0x0001bd3b, +0x0001bd38, +0x0001bd34, +0x0001bd32, +0x0001bd2f, +0x0001bd2b, +0x0001bd28, +0x0001bd26, +0x0001bd23, +0x0001bd1f, +0x0001bd1c, +0x0001bd1a, +0x0001bd17, +0x0001bd13, +0x0001bd10, +0x0001bd0d, +0x0001bd0b, +0x0001bd08, +0x0001bd04, +0x0001bd01, +0x0001bcff, +0x0001bcfb, +0x0001bcf8, +0x0001bcf5, +0x0001bcf3, +0x0001bcef, +0x0001bcec, +0x0001bce8, +0x0001bce7, +0x0001bce3, +0x0001bce0, +0x0001bcde, +0x0001bcdb, +0x0001bcd7, +0x0001bcd4, +0x0001bcd2, +0x0001bcce, +0x0001bccb, +0x0001bcc7, +0x0001bcc6, +0x0001bcc2, +0x0001bcbf, +0x0001bcbb, +0x0001bcba, +0x0001bcb6, +0x0001bcb3, +0x0001bcb1, +0x0001bcad, +0x0001bcaa, +0x0001bca7, +0x0001bca5, +0x0001bca1, +0x0001bc9e, +0x0001bc9a, +0x0001bc99, +0x0001bc95, +0x0001bc92, +0x0001bc8e, +0x0001bc8c, +0x0001bc89, +0x0001bc86, +0x0001bc82, +0x0001bc80, +0x0001bc7d, +0x0001bc79, +0x0001bc78, +0x0001bc74, +0x0001bc71, +0x0001bc6d, +0x0001bc6c, +0x0001bc68, +0x0001bc65, +0x0001bc61, +0x0001bc5f, +0x0001bc5c, +0x0001bc58, +0x0001bc55, +0x0001bc53, +0x0001bc50, +0x0001bc4c, +0x0001bc4b, +0x0001bc47, +0x0001bc44, +0x0001bc40, +0x0001bc3e, +0x0001bc3b, +0x0001bc38, +0x0001bc34, +0x0001bc32, +0x0001bc2f, +0x0001bc2b, +0x0001bc28, +0x0001bc26, +0x0001bc23, +0x0001bc1f, +0x0001bc1d, +0x0001bc1a, +0x0001bc17, +0x0001bc13, +0x0001bc11, +0x0001bc0e, +0x0001bc0a, +0x0001bc07, +0x0001bc05, +0x0001bc02, +0x0001bbfe, +0x0001bbfb, +0x0001bbf9, +0x0001bbf6, +0x0001bbf2, +0x0001bbf0, +0x0001bbed, +0x0001bbe9, +0x0001bbe6, +0x0001bbe4, +0x0001bbe1, +0x0001bbdd, +0x0001bbda, +0x0001bbd8, +0x0001bbd5, +0x0001bbd1, +0x0001bbce, +0x0001bbcc, +0x0001bbc9, +0x0001bbc5, +0x0001bbc2, +0x0001bbc0, +0x0001bbbc, +0x0001bbb9, +0x0001bbb7, +0x0001bbb4, +0x0001bbb0, +0x0001bbad, +0x0001bbab, +0x0001bba8, +0x0001bba4, +0x0001bba1, +0x0001bb9f, +0x0001bb9b, +0x0001bb98, +0x0001bb94, +0x0001bb93, +0x0001bb90, +0x0001bb8c, +0x0001bb89, +0x0001bb87, +0x0001bb84, +0x0001bb80, +0x0001bb7d, +0x0001bb7b, +0x0001bb77, +0x0001bb74, +0x0001bb70, +0x0001bb6f, +0x0001bb6b, +0x0001bb68, +0x0001bb66, +0x0001bb63, +0x0001bb5f, +0x0001bb5c, +0x0001bb5a, +0x0001bb57, +0x0001bb53, +0x0001bb50, +0x0001bb4e, +0x0001bb4a, +0x0001bb47, +0x0001bb43, +0x0001bb42, +0x0001bb3e, +0x0001bb3b, +0x0001bb39, +0x0001bb36, +0x0001bb32, +0x0001bb2f, +0x0001bb2d, +0x0001bb2a, +0x0001bb26, +0x0001bb23, +0x0001bb21, +0x0001bb1d, +0x0001bb1a, +0x0001bb18, +0x0001bb15, +0x0001bb11, +0x0001bb0e, +0x0001bb0c, +0x0001bb09, +0x0001bb05, +0x0001bb02, +0x0001bb00, +0x0001bafd, +0x0001baf9, +0x0001baf6, +0x0001baf4, +0x0001baf0, +0x0001baed, +0x0001baeb, +0x0001bae8, +0x0001bae4, +0x0001bae1, +0x0001badf, +0x0001badc, +0x0001bad8, +0x0001bad5, +0x0001bad3, +0x0001bad0, +0x0001bacc, +0x0001baca, +0x0001bac7, +0x0001bac3, +0x0001bac0, +0x0001babe, +0x0001babb, +0x0001bab7, +0x0001bab4, +0x0001bab2, +0x0001baaf, +0x0001baab, +0x0001baa9, +0x0001baa6, +0x0001baa3, +0x0001ba9f, +0x0001ba9d, +0x0001ba9a, +0x0001ba96, +0x0001ba93, +0x0001ba91, +0x0001ba8e, +0x0001ba8a, +0x0001ba87, +0x0001ba85, +0x0001ba82, +0x0001ba7e, +0x0001ba7c, +0x0001ba79, +0x0001ba76, +0x0001ba72, +0x0001ba70, +0x0001ba6d, +0x0001ba69, +0x0001ba66, +0x0001ba64, +0x0001ba61, +0x0001ba5d, +0x0001ba5c, +0x0001ba58, +0x0001ba55, +0x0001ba51, +0x0001ba4f, +0x0001ba4c, +0x0001ba49, +0x0001ba45, +0x0001ba43, +0x0001ba40, +0x0001ba3c, +0x0001ba39, +0x0001ba37, +0x0001ba34, +0x0001ba30, +0x0001ba2f, +0x0001ba2b, +0x0001ba28, +0x0001ba24, +0x0001ba23, +0x0001ba1f, +0x0001ba1c, +0x0001ba18, +0x0001ba16, +0x0001ba13, +0x0001ba10, +0x0001ba0d, +0x0001ba09, +0x0001ba08, +0x0001ba04, +0x0001ba01, +0x0001b9fd, +0x0001b9fc, +0x0001b9f8, +0x0001b9f5, +0x0001b9f3, +0x0001b9ef, +0x0001b9ec, +0x0001b9e9, +0x0001b9e7, +0x0001b9e3, +0x0001b9e0, +0x0001b9dd, +0x0001b9db, +0x0001b9d7, +0x0001b9d4, +0x0001b9d2, +0x0001b9cf, +0x0001b9cb, +0x0001b9c8, +0x0001b9c6, +0x0001b9c3, +0x0001b9bf, +0x0001b9bd, +0x0001b9ba, +0x0001b9b7, +0x0001b9b3, +0x0001b9b1, +0x0001b9ae, +0x0001b9ab, +0x0001b9a7, +0x0001b9a5, +0x0001b9a2, +0x0001b99e, +0x0001b99d, +0x0001b999, +0x0001b996, +0x0001b992, +0x0001b991, +0x0001b98d, +0x0001b98a, +0x0001b988, +0x0001b985, +0x0001b981, +0x0001b97e, +0x0001b97c, +0x0001b979, +0x0001b975, +0x0001b972, +0x0001b970, +0x0001b96d, +0x0001b969, +0x0001b967, +0x0001b964, +0x0001b960, +0x0001b95d, +0x0001b95b, +0x0001b958, +0x0001b954, +0x0001b953, +0x0001b94f, +0x0001b94c, +0x0001b948, +0x0001b947, +0x0001b943, +0x0001b940, +0x0001b93c, +0x0001b93b, +0x0001b937, +0x0001b934, +0x0001b932, +0x0001b92f, +0x0001b92b, +0x0001b928, +0x0001b926, +0x0001b922, +0x0001b91f, +0x0001b91c, +0x0001b91a, +0x0001b916, +0x0001b913, +0x0001b911, +0x0001b90e, +0x0001b90a, +0x0001b907, +0x0001b905, +0x0001b902, +0x0001b8fe, +0x0001b8fd, +0x0001b8f9, +0x0001b8f6, +0x0001b8f2, +0x0001b8f0, +0x0001b8ed, +0x0001b8ea, +0x0001b8e6, +0x0001b8e4, +0x0001b8e1, +0x0001b8de, +0x0001b8dc, +0x0001b8d8, +0x0001b8d5, +0x0001b8d1, +0x0001b8d0, +0x0001b8cc, +0x0001b8c9, +0x0001b8c7, +0x0001b8c4, +0x0001b8c0, +0x0001b8bd, +0x0001b8bb, +0x0001b8b8, +0x0001b8b4, +0x0001b8b1, +0x0001b8af, +0x0001b8ac, +0x0001b8a8, +0x0001b8a6, +0x0001b8a3, +0x0001b8a0, +0x0001b89c, +0x0001b89a, +0x0001b897, +0x0001b894, +0x0001b890, +0x0001b88f, +0x0001b88b, +0x0001b888, +0x0001b884, +0x0001b883, +0x0001b87f, +0x0001b87c, +0x0001b87a, +0x0001b877, +0x0001b873, +0x0001b870, +0x0001b86e, +0x0001b86b, +0x0001b867, +0x0001b865, +0x0001b862, +0x0001b85f, +0x0001b85b, +0x0001b859, +0x0001b856, +0x0001b853, +0x0001b84f, +0x0001b84d, +0x0001b84a, +0x0001b846, +0x0001b845, +0x0001b841, +0x0001b83e, +0x0001b83a, +0x0001b839, +0x0001b835, +0x0001b832, +0x0001b830, +0x0001b82d, +0x0001b829, +0x0001b826, +0x0001b824, +0x0001b821, +0x0001b81d, +0x0001b81c, +0x0001b818, +0x0001b815, +0x0001b811, +0x0001b80f, +0x0001b80c, +0x0001b809, +0x0001b807, +0x0001b803, +0x0001b800, +0x0001b7fd, +0x0001b7fb, +0x0001b7f7, +0x0001b7f4, +0x0001b7f1, +0x0001b7ef, +0x0001b7eb, +0x0001b7e8, +0x0001b7e6, +0x0001b7e3, +0x0001b7df, +0x0001b7dc, +0x0001b7da, +0x0001b7d7, +0x0001b7d3, +0x0001b7d2, +0x0001b7ce, +0x0001b7cb, +0x0001b7c7, +0x0001b7c6, +0x0001b7c2, +0x0001b7bf, +0x0001b7bd, +0x0001b7ba, +0x0001b7b6, +0x0001b7b3, +0x0001b7b1, +0x0001b7ae, +0x0001b7aa, +0x0001b7a8, +0x0001b7a5, +0x0001b7a1, +0x0001b79e, +0x0001b79c, +0x0001b799, +0x0001b795, +0x0001b792, +0x0001b790, +0x0001b78d, +0x0001b789, +0x0001b788, +0x0001b784, +0x0001b781, +0x0001b77d, +0x0001b77c, +0x0001b778, +0x0001b775, +0x0001b773, +0x0001b770, +0x0001b76c, +0x0001b769, +0x0001b767, +0x0001b764, +0x0001b760, +0x0001b75e, +0x0001b75b, +0x0001b758, +0x0001b754, +0x0001b752, +0x0001b74f, +0x0001b74c, +0x0001b74a, +0x0001b746, +0x0001b743, +0x0001b740, +0x0001b73e, +0x0001b73a, +0x0001b737, +0x0001b733, +0x0001b732, +0x0001b72e, +0x0001b72b, +0x0001b729, +0x0001b726, +0x0001b722, +0x0001b71f, +0x0001b71d, +0x0001b71a, +0x0001b717, +0x0001b713, +0x0001b710, +0x0001b70e, +0x0001b70b, +0x0001b707, +0x0001b706, +0x0001b702, +0x0001b6ff, +0x0001b6fc, +0x0001b6fa, +0x0001b6f6, +0x0001b6f3, +0x0001b6f1, +0x0001b6ee, +0x0001b6ea, +0x0001b6e7, +0x0001b6e5, +0x0001b6e2, +0x0001b6de, +0x0001b6dd, +0x0001b6d9, +0x0001b6d6, +0x0001b6d2, +0x0001b6d1, +0x0001b6cd, +0x0001b6ca, +0x0001b6c8, +0x0001b6c5, +0x0001b6c1, +0x0001b6be, +0x0001b6bc, +0x0001b6b9, +0x0001b6b5, +0x0001b6b4, +0x0001b6b0, +0x0001b6ad, +0x0001b6a9, +0x0001b6a8, +0x0001b6a4, +0x0001b6a1, +0x0001b69f, +0x0001b69c, +0x0001b698, +0x0001b697, +0x0001b693, +0x0001b690, +0x0001b68c, +0x0001b68b, +0x0001b687, +0x0001b684, +0x0001b682, +0x0001b67f, +0x0001b67b, +0x0001b678, +0x0001b676, +0x0001b673, +0x0001b66f, +0x0001b66e, +0x0001b66a, +0x0001b667, +0x0001b663, +0x0001b662, +0x0001b65e, +0x0001b65b, +0x0001b659, +0x0001b656, +0x0001b652, +0x0001b64f, +0x0001b64d, +0x0001b64a, +0x0001b646, +0x0001b644, +0x0001b641, +0x0001b63e, +0x0001b63a, +0x0001b638, +0x0001b635, +0x0001b632, +0x0001b630, +0x0001b62c, +0x0001b629, +0x0001b626, +0x0001b624, +0x0001b621, +0x0001b61d, +0x0001b61b, +0x0001b618, +0x0001b615, +0x0001b613, +0x0001b60f, +0x0001b60c, +0x0001b609, +0x0001b607, +0x0001b603, +0x0001b600, +0x0001b5fe, +0x0001b5fb, +0x0001b5f7, +0x0001b5f4, +0x0001b5f2, +0x0001b5ef, +0x0001b5eb, +0x0001b5ea, +0x0001b5e6, +0x0001b5e3, +0x0001b5df, +0x0001b5de, +0x0001b5da, +0x0001b5d7, +0x0001b5d5, +0x0001b5d2, +0x0001b5ce, +0x0001b5cb, +0x0001b5c9, +0x0001b5c6, +0x0001b5c2, +0x0001b5c1, +0x0001b5bd, +0x0001b5ba, +0x0001b5b6, +0x0001b5b5, +0x0001b5b1, +0x0001b5ae, +0x0001b5ac, +0x0001b5a9, +0x0001b5a5, +0x0001b5a2, +0x0001b5a0, +0x0001b59d, +0x0001b59a, +0x0001b596, +0x0001b595, +0x0001b591, +0x0001b58e, +0x0001b58c, +0x0001b589, +0x0001b585, +0x0001b582, +0x0001b580, +0x0001b57d, +0x0001b579, +0x0001b577, +0x0001b574, +0x0001b571, +0x0001b56f, +0x0001b56c, +0x0001b568, +0x0001b565, +0x0001b563, +0x0001b560, +0x0001b55c, +0x0001b55a, +0x0001b557, +0x0001b554, +0x0001b550, +0x0001b54f, +0x0001b54b, +0x0001b548, +0x0001b546, +0x0001b543, +0x0001b53f, +0x0001b53d, +0x0001b53a, +0x0001b537, +0x0001b533, +0x0001b532, +0x0001b52e, +0x0001b52b, +0x0001b529, +0x0001b526, +0x0001b522, +0x0001b51f, +0x0001b51d, +0x0001b51a, +0x0001b516, +0x0001b514, +0x0001b511, +0x0001b50e, +0x0001b50a, +0x0001b509, +0x0001b505, +0x0001b502, +0x0001b500, +0x0001b4fd, +0x0001b4f9, +0x0001b4f7, +0x0001b4f4, +0x0001b4f1, +0x0001b4ed, +0x0001b4ec, +0x0001b4e8, +0x0001b4e5, +0x0001b4e3, +0x0001b4e0, +0x0001b4dc, +0x0001b4d9, +0x0001b4d7, +0x0001b4d4, +0x0001b4d0, +0x0001b4ce, +0x0001b4cb, +0x0001b4c8, +0x0001b4c6, +0x0001b4c3, +0x0001b4bf, +0x0001b4bc, +0x0001b4ba, +0x0001b4b7, +0x0001b4b3, +0x0001b4b1, +0x0001b4ae, +0x0001b4ab, +0x0001b4a7, +0x0001b4a6, +0x0001b4a2, +0x0001b49f, +0x0001b49d, +0x0001b49a, +0x0001b496, +0x0001b493, +0x0001b491, +0x0001b48e, +0x0001b48a, +0x0001b489, +0x0001b485, +0x0001b482, +0x0001b480, +0x0001b47d, +0x0001b479, +0x0001b476, +0x0001b474, +0x0001b471, +0x0001b46d, +0x0001b46b, +0x0001b468, +0x0001b465, +0x0001b461, +0x0001b460, +0x0001b45c, +0x0001b459, +0x0001b457, +0x0001b454, +0x0001b450, +0x0001b44e, +0x0001b44b, +0x0001b448, +0x0001b444, +0x0001b443, +0x0001b43f, +0x0001b43c, +0x0001b43a, +0x0001b437, +0x0001b433, +0x0001b430, +0x0001b42d, +0x0001b42b, +0x0001b428, +0x0001b424, +0x0001b421, +0x0001b41f, +0x0001b41c, +0x0001b418, +0x0001b417, +0x0001b413, +0x0001b410, +0x0001b40e, +0x0001b40b, +0x0001b407, +0x0001b404, +0x0001b402, +0x0001b3ff, +0x0001b3fb, +0x0001b3fa, +0x0001b3f6, +0x0001b3f3, +0x0001b3f1, +0x0001b3ee, +0x0001b3ea, +0x0001b3e7, +0x0001b3e5, +0x0001b3e2, +0x0001b3df, +0x0001b3dd, +0x0001b3da, +0x0001b3d6, +0x0001b3d4, +0x0001b3d1, +0x0001b3ce, +0x0001b3ca, +0x0001b3c9, +0x0001b3c5, +0x0001b3c2, +0x0001b3c0, +0x0001b3bd, +0x0001b3b9, +0x0001b3b8, +0x0001b3b4, +0x0001b3b1, +0x0001b3ad, +0x0001b3ac, +0x0001b3a8, +0x0001b3a5, +0x0001b3a3, +0x0001b3a0, +0x0001b39c, +0x0001b39b, +0x0001b397, +0x0001b394, +0x0001b390, +0x0001b38f, +0x0001b38b, +0x0001b388, +0x0001b386, +0x0001b383, +0x0001b37f, +0x0001b37e, +0x0001b37a, +0x0001b377, +0x0001b375, +0x0001b372, +0x0001b36e, +0x0001b36b, +0x0001b369, +0x0001b366, +0x0001b363, +0x0001b361, +0x0001b35d, +0x0001b35a, +0x0001b358, +0x0001b355, +0x0001b352, +0x0001b34e, +0x0001b34c, +0x0001b349, +0x0001b346, +0x0001b344, +0x0001b341, +0x0001b33d, +0x0001b33b, +0x0001b338, +0x0001b335, +0x0001b331, +0x0001b330, +0x0001b32c, +0x0001b329, +0x0001b327, +0x0001b324, +0x0001b320, +0x0001b31f, +0x0001b31b, +0x0001b318, +0x0001b314, +0x0001b313, +0x0001b30f, +0x0001b30c, +0x0001b30a, +0x0001b307, +0x0001b303, +0x0001b302, +0x0001b2fe, +0x0001b2fb, +0x0001b2f8, +0x0001b2f6, +0x0001b2f2, +0x0001b2ef, +0x0001b2ed, +0x0001b2ea, +0x0001b2e7, +0x0001b2e5, +0x0001b2e1, +0x0001b2de, +0x0001b2db, +0x0001b2d9, +0x0001b2d6, +0x0001b2d2, +0x0001b2d0, +0x0001b2cd, +0x0001b2ca, +0x0001b2c8, +0x0001b2c5, +0x0001b2c1, +0x0001b2be, +0x0001b2bc, +0x0001b2b9, +0x0001b2b5, +0x0001b2b2, +0x0001b2b0, +0x0001b2ad, +0x0001b2aa, +0x0001b2a8, +0x0001b2a4, +0x0001b2a1, +0x0001b29f, +0x0001b29c, +0x0001b299, +0x0001b295, +0x0001b293, +0x0001b290, +0x0001b28d, +0x0001b28b, +0x0001b288, +0x0001b284, +0x0001b283, +0x0001b27f, +0x0001b27c, +0x0001b27a, +0x0001b277, +0x0001b273, +0x0001b270, +0x0001b26e, +0x0001b26b, +0x0001b267, +0x0001b266, +0x0001b262, +0x0001b25f, +0x0001b25d, +0x0001b25a, +0x0001b256, +0x0001b253, +0x0001b251, +0x0001b24e, +0x0001b24b, +0x0001b249, +0x0001b246, +0x0001b242, +0x0001b240, +0x0001b23d, +0x0001b23a, +0x0001b238, +0x0001b235, +0x0001b231, +0x0001b22e, +0x0001b22c, +0x0001b229, +0x0001b225, +0x0001b224, +0x0001b220, +0x0001b21d, +0x0001b21b, +0x0001b218, +0x0001b214, +0x0001b211, +0x0001b20f, +0x0001b20c, +0x0001b208, +0x0001b207, +0x0001b203, +0x0001b200, +0x0001b1fe, +0x0001b1fb, +0x0001b1f8, +0x0001b1f6, +0x0001b1f2, +0x0001b1ef, +0x0001b1ec, +0x0001b1ea, +0x0001b1e7, +0x0001b1e3, +0x0001b1e1, +0x0001b1de, +0x0001b1db, +0x0001b1d9, +0x0001b1d6, +0x0001b1d2, +0x0001b1cf, +0x0001b1cd, +0x0001b1ca, +0x0001b1c6, +0x0001b1c5, +0x0001b1c1, +0x0001b1be, +0x0001b1bc, +0x0001b1b9, +0x0001b1b5, +0x0001b1b4, +0x0001b1b0, +0x0001b1ad, +0x0001b1aa, +0x0001b1a8, +0x0001b1a4, +0x0001b1a1, +0x0001b19f, +0x0001b19c, +0x0001b199, +0x0001b197, +0x0001b194, +0x0001b190, +0x0001b18d, +0x0001b18b, +0x0001b188, +0x0001b184, +0x0001b183, +0x0001b17f, +0x0001b17c, +0x0001b17a, +0x0001b177, +0x0001b173, +0x0001b172, +0x0001b16e, +0x0001b16b, +0x0001b167, +0x0001b166, +0x0001b162, +0x0001b15f, +0x0001b15d, +0x0001b15a, +0x0001b156, +0x0001b155, +0x0001b151, +0x0001b14e, +0x0001b14c, +0x0001b149, +0x0001b145, +0x0001b144, +0x0001b140, +0x0001b13d, +0x0001b13b, +0x0001b138, +0x0001b134, +0x0001b133, +0x0001b12f, +0x0001b12c, +0x0001b129, +0x0001b127, +0x0001b124, +0x0001b120, +0x0001b11e, +0x0001b11b, +0x0001b118, +0x0001b116, +0x0001b113, +0x0001b10f, +0x0001b10e, +0x0001b10a, +0x0001b107, +0x0001b103, +0x0001b102, +0x0001b0fe, +0x0001b0fb, +0x0001b0f9, +0x0001b0f6, +0x0001b0f2, +0x0001b0f1, +0x0001b0ed, +0x0001b0ea, +0x0001b0e8, +0x0001b0e5, +0x0001b0e2, +0x0001b0de, +0x0001b0dc, +0x0001b0d9, +0x0001b0d6, +0x0001b0d4, +0x0001b0d1, +0x0001b0cd, +0x0001b0cc, +0x0001b0c8, +0x0001b0c5, +0x0001b0c3, +0x0001b0c0, +0x0001b0bc, +0x0001b0b9, +0x0001b0b7, +0x0001b0b4, +0x0001b0b1, +0x0001b0af, +0x0001b0ab, +0x0001b0a8, +0x0001b0a6, +0x0001b0a3, +0x0001b0a0, +0x0001b09e, +0x0001b09b, +0x0001b097, +0x0001b095, +0x0001b092, +0x0001b08f, +0x0001b08b, +0x0001b08a, +0x0001b086, +0x0001b083, +0x0001b081, +0x0001b07e, +0x0001b07a, +0x0001b079, +0x0001b075, +0x0001b072, +0x0001b070, +0x0001b06d, +0x0001b069, +0x0001b066, +0x0001b064, +0x0001b061, +0x0001b05e, +0x0001b05c, +0x0001b059, +0x0001b055, +0x0001b053, +0x0001b050, +0x0001b04d, +0x0001b04b, +0x0001b048, +0x0001b044, +0x0001b041, +0x0001b03f, +0x0001b03c, +0x0001b038, +0x0001b037, +0x0001b033, +0x0001b030, +0x0001b02e, +0x0001b02b, +0x0001b028, +0x0001b026, +0x0001b022, +0x0001b01f, +0x0001b01c, +0x0001b01a, +0x0001b017, +0x0001b013, +0x0001b012, +0x0001b00e, +0x0001b00b, +0x0001b009, +0x0001b006, +0x0001b002, +0x0001b001, +0x0001affd, +0x0001affa, +0x0001aff6, +0x0001aff5, +0x0001aff1, +0x0001afee, +0x0001afec, +0x0001afe9, +0x0001afe6, +0x0001afe4, +0x0001afe0, +0x0001afde, +0x0001afdb, +0x0001afd8, +0x0001afd6, +0x0001afd2, +0x0001afcf, +0x0001afcd, +0x0001afca, +0x0001afc7, +0x0001afc5, +0x0001afc2, +0x0001afbe, +0x0001afbd, +0x0001afb9, +0x0001afb6, +0x0001afb2, +0x0001afb1, +0x0001afad, +0x0001afaa, +0x0001afa8, +0x0001afa5, +0x0001afa2, +0x0001afa0, +0x0001af9d, +0x0001af99, +0x0001af98, +0x0001af94, +0x0001af91, +0x0001af8f, +0x0001af8c, +0x0001af88, +0x0001af87, +0x0001af83, +0x0001af80, +0x0001af7e, +0x0001af7b, +0x0001af78, +0x0001af74, +0x0001af72, +0x0001af6f, +0x0001af6c, +0x0001af6a, +0x0001af67, +0x0001af63, +0x0001af62, +0x0001af5e, +0x0001af5b, +0x0001af59, +0x0001af56, +0x0001af52, +0x0001af51, +0x0001af4d, +0x0001af4a, +0x0001af48, +0x0001af45, +0x0001af42, +0x0001af3e, +0x0001af3d, +0x0001af39, +0x0001af36, +0x0001af34, +0x0001af31, +0x0001af2d, +0x0001af2c, +0x0001af28, +0x0001af25, +0x0001af23, +0x0001af20, +0x0001af1d, +0x0001af1b, +0x0001af18, +0x0001af14, +0x0001af13, +0x0001af0f, +0x0001af0c, +0x0001af08, +0x0001af07, +0x0001af03, +0x0001af00, +0x0001aefe, +0x0001aefb, +0x0001aef8, +0x0001aef6, +0x0001aef3, +0x0001aeef, +0x0001aeed, +0x0001aeea, +0x0001aee7, +0x0001aee5, +0x0001aee2, +0x0001aede, +0x0001aedd, +0x0001aed9, +0x0001aed6, +0x0001aed3, +0x0001aed1, +0x0001aecd, +0x0001aeca, +0x0001aec8, +0x0001aec5, +0x0001aec2, +0x0001aec0, +0x0001aebd, +0x0001aeb9, +0x0001aeb8, +0x0001aeb4, +0x0001aeb1, +0x0001aeaf, +0x0001aeac, +0x0001aea8, +0x0001aea7, +0x0001aea3, +0x0001aea0, +0x0001ae9e, +0x0001ae9b, +0x0001ae98, +0x0001ae94, +0x0001ae93, +0x0001ae8f, +0x0001ae8c, +0x0001ae8a, +0x0001ae87, +0x0001ae83, +0x0001ae82, +0x0001ae7e, +0x0001ae7b, +0x0001ae79, +0x0001ae76, +0x0001ae74, +0x0001ae71, +0x0001ae6d, +0x0001ae6a, +0x0001ae68, +0x0001ae65, +0x0001ae61, +0x0001ae60, +0x0001ae5c, +0x0001ae59, +0x0001ae57, +0x0001ae54, +0x0001ae51, +0x0001ae4f, +0x0001ae4c, +0x0001ae48, +0x0001ae47, +0x0001ae43, +0x0001ae40, +0x0001ae3e, +0x0001ae3b, +0x0001ae37, +0x0001ae36, +0x0001ae32, +0x0001ae2f, +0x0001ae2d, +0x0001ae2a, +0x0001ae27, +0x0001ae23, +0x0001ae22, +0x0001ae1e, +0x0001ae1b, +0x0001ae19, +0x0001ae16, +0x0001ae12, +0x0001ae11, +0x0001ae0d, +0x0001ae0a, +0x0001ae08, +0x0001ae05, +0x0001ae02, +0x0001ae00, +0x0001adfd, +0x0001adf9, +0x0001adf8, +0x0001adf4, +0x0001adf1, +0x0001adef, +0x0001adec, +0x0001ade8, +0x0001ade7, +0x0001ade3, +0x0001ade0, +0x0001addd, +0x0001addb, +0x0001add8, +0x0001add4, +0x0001add3, +0x0001adcf, +0x0001adcc, +0x0001adca, +0x0001adc7, +0x0001adc4, +0x0001adc2, +0x0001adbe, +0x0001adbb, +0x0001adb9, +0x0001adb6, +0x0001adb3, +0x0001adb1, +0x0001adae, +0x0001adaa, +0x0001ada9, +0x0001ada5, +0x0001ada2, +0x0001ada0, +0x0001ad9d, +0x0001ad9a, +0x0001ad96, +0x0001ad95, +0x0001ad91, +0x0001ad8e, +0x0001ad8c, +0x0001ad89, +0x0001ad85, +0x0001ad84, +0x0001ad80, +0x0001ad7d, +0x0001ad7b, +0x0001ad78, +0x0001ad75, +0x0001ad73, +0x0001ad70, +0x0001ad6c, +0x0001ad6b, +0x0001ad67, +0x0001ad64, +0x0001ad62, +0x0001ad5f, +0x0001ad5b, +0x0001ad5a, +0x0001ad56, +0x0001ad53, +0x0001ad50, +0x0001ad4e, +0x0001ad4b, +0x0001ad47, +0x0001ad46, +0x0001ad42, +0x0001ad3f, +0x0001ad3d, +0x0001ad3a, +0x0001ad36, +0x0001ad35, +0x0001ad31, +0x0001ad2e, +0x0001ad2c, +0x0001ad29, +0x0001ad26, +0x0001ad24, +0x0001ad21, +0x0001ad1d, +0x0001ad1c, +0x0001ad18, +0x0001ad15, +0x0001ad13, +0x0001ad10, +0x0001ad0c, +0x0001ad0a, +0x0001ad06, +0x0001ad05, +0x0001ad01, +0x0001acfe, +0x0001acfc, +0x0001acf9, +0x0001acf6, +0x0001acf4, +0x0001acf1, +0x0001aced, +0x0001acec, +0x0001ace8, +0x0001ace5, +0x0001ace3, +0x0001ace0, +0x0001acdd, +0x0001acdb, +0x0001acd8, +0x0001acd4, +0x0001acd3, +0x0001accf, +0x0001accc, +0x0001acca, +0x0001acc7, +0x0001acc4, +0x0001acc2, +0x0001acbf, +0x0001acbb, +0x0001acba, +0x0001acb6, +0x0001acb3, +0x0001acb1, +0x0001acae, +0x0001acab, +0x0001aca7, +0x0001aca6, +0x0001aca2, +0x0001ac9f, +0x0001ac9d, +0x0001ac9a, +0x0001ac96, +0x0001ac95, +0x0001ac91, +0x0001ac8e, +0x0001ac8c, +0x0001ac89, +0x0001ac86, +0x0001ac84, +0x0001ac81, +0x0001ac7d, +0x0001ac7c, +0x0001ac78, +0x0001ac75, +0x0001ac73, +0x0001ac70, +0x0001ac6d, +0x0001ac6b, +0x0001ac68, +0x0001ac64, +0x0001ac63, +0x0001ac5f, +0x0001ac5c, +0x0001ac5a, +0x0001ac57, +0x0001ac54, +0x0001ac52, +0x0001ac4f, +0x0001ac4b, +0x0001ac4a, +0x0001ac46, +0x0001ac43, +0x0001ac41, +0x0001ac3e, +0x0001ac3b, +0x0001ac39, +0x0001ac36, +0x0001ac32, +0x0001ac30, +0x0001ac2d, +0x0001ac2a, +0x0001ac28, +0x0001ac25, +0x0001ac21, +0x0001ac20, +0x0001ac1c, +0x0001ac19, +0x0001ac17, +0x0001ac14, +0x0001ac11, +0x0001ac0f, +0x0001ac0c, +0x0001ac08, +0x0001ac07, +0x0001ac03, +0x0001ac00, +0x0001abfe, +0x0001abfb, +0x0001abf8, +0x0001abf4, +0x0001abf3, +0x0001abef, +0x0001abec, +0x0001abea, +0x0001abe7, +0x0001abe4, +0x0001abe2, +0x0001abdf, +0x0001abdb, +0x0001abda, +0x0001abd6, +0x0001abd3, +0x0001abd1, +0x0001abce, +0x0001abcb, +0x0001abc9, +0x0001abc5, +0x0001abc2, +0x0001abc0, +0x0001abbd, +0x0001abba, +0x0001abb8, +0x0001abb5, +0x0001abb1, +0x0001abb0, +0x0001abac, +0x0001aba9, +0x0001aba7, +0x0001aba3, +0x0001aba2, +0x0001ab9e, +0x0001ab9b, +0x0001ab99, +0x0001ab96, +0x0001ab93, +0x0001ab91, +0x0001ab8e, +0x0001ab8a, +0x0001ab89, +0x0001ab85, +0x0001ab82, +0x0001ab80, +0x0001ab7d, +0x0001ab7a, +0x0001ab78, +0x0001ab75, +0x0001ab71, +0x0001ab70, +0x0001ab6c, +0x0001ab69, +0x0001ab67, +0x0001ab64, +0x0001ab61, +0x0001ab5f, +0x0001ab5c, +0x0001ab58, +0x0001ab57, +0x0001ab53, +0x0001ab50, +0x0001ab4e, +0x0001ab4b, +0x0001ab48, +0x0001ab46, +0x0001ab43, +0x0001ab3f, +0x0001ab3e, +0x0001ab3a, +0x0001ab37, +0x0001ab35, +0x0001ab32, +0x0001ab2f, +0x0001ab2d, +0x0001ab2a, +0x0001ab26, +0x0001ab25, +0x0001ab21, +0x0001ab1e, +0x0001ab1c, +0x0001ab19, +0x0001ab16, +0x0001ab14, +0x0001ab11, +0x0001ab0d, +0x0001ab0c, +0x0001ab08, +0x0001ab05, +0x0001ab03, +0x0001ab00, +0x0001aafd, +0x0001aafb, +0x0001aaf8, +0x0001aaf4, +0x0001aaf3, +0x0001aaef, +0x0001aaec, +0x0001aae9, +0x0001aae7, +0x0001aae4, +0x0001aae0, +0x0001aadf, +0x0001aadb, +0x0001aad8, +0x0001aad6, +0x0001aad3, +0x0001aad0, +0x0001aace, +0x0001aacb, +0x0001aac7, +0x0001aac6, +0x0001aac2, +0x0001aabf, +0x0001aabd, +0x0001aaba, +0x0001aab7, +0x0001aab5, +0x0001aab2, +0x0001aaae, +0x0001aaad, +0x0001aaa9, +0x0001aaa6, +0x0001aaa4, +0x0001aaa1, +0x0001aa9e, +0x0001aa9c, +0x0001aa99, +0x0001aa95, +0x0001aa94, +0x0001aa90, +0x0001aa8d, +0x0001aa8b, +0x0001aa88, +0x0001aa85, +0x0001aa83, +0x0001aa80, +0x0001aa7c, +0x0001aa7b, +0x0001aa77, +0x0001aa74, +0x0001aa72, +0x0001aa6f, +0x0001aa6c, +0x0001aa6a, +0x0001aa67, +0x0001aa63, +0x0001aa62, +0x0001aa5e, +0x0001aa5b, +0x0001aa59, +0x0001aa56, +0x0001aa53, +0x0001aa51, +0x0001aa4e, +0x0001aa4a, +0x0001aa49, +0x0001aa45, +0x0001aa42, +0x0001aa41, +0x0001aa3e, +0x0001aa3a, +0x0001aa39, +0x0001aa35, +0x0001aa32, +0x0001aa30, +0x0001aa2d, +0x0001aa2a, +0x0001aa28, +0x0001aa25, +0x0001aa21, +0x0001aa20, +0x0001aa1c, +0x0001aa19, +0x0001aa17, +0x0001aa14, +0x0001aa11, +0x0001aa0f, +0x0001aa0c, +0x0001aa08, +0x0001aa07, +0x0001aa03, +0x0001aa00, +0x0001a9fe, +0x0001a9fb, +0x0001a9f8, +0x0001a9f6, +0x0001a9f3, +0x0001a9ef, +0x0001a9ee, +0x0001a9ea, +0x0001a9e7, +0x0001a9e5, +0x0001a9e2, +0x0001a9df, +0x0001a9dd, +0x0001a9da, +0x0001a9d6, +0x0001a9d5, +0x0001a9d1, +0x0001a9ce, +0x0001a9cc, +0x0001a9c9, +0x0001a9c6, +0x0001a9c4, +0x0001a9c1, +0x0001a9bd, +0x0001a9bc, +0x0001a9b8, +0x0001a9b5, +0x0001a9b3, +0x0001a9b0, +0x0001a9ad, +0x0001a9ab, +0x0001a9a8, +0x0001a9a4, +0x0001a9a3, +0x0001a99f, +0x0001a99c, +0x0001a99a, +0x0001a997, +0x0001a994, +0x0001a992, +0x0001a98f, +0x0001a98c, +0x0001a98a, +0x0001a987, +0x0001a983, +0x0001a982, +0x0001a97e, +0x0001a97b, +0x0001a979, +0x0001a976, +0x0001a973, +0x0001a971, +0x0001a96e, +0x0001a96a, +0x0001a969, +0x0001a965, +0x0001a962, +0x0001a960, +0x0001a95d, +0x0001a95a, +0x0001a958, +0x0001a955, +0x0001a951, +0x0001a950, +0x0001a94c, +0x0001a949, +0x0001a947, +0x0001a944, +0x0001a941, +0x0001a93f, +0x0001a93c, +0x0001a938, +0x0001a937, +0x0001a933, +0x0001a930, +0x0001a92e, +0x0001a92b, +0x0001a928, +0x0001a926, +0x0001a923, +0x0001a91f, +0x0001a91e, +0x0001a91a, +0x0001a917, +0x0001a915, +0x0001a912, +0x0001a90f, +0x0001a90d, +0x0001a90a, +0x0001a906, +0x0001a905, +0x0001a901, +0x0001a8fe, +0x0001a8fc, +0x0001a8f9, +0x0001a8f6, +0x0001a8f4, +0x0001a8f1, +0x0001a8ed, +0x0001a8ec, +0x0001a8e8, +0x0001a8e5, +0x0001a8e3, +0x0001a8e0, +0x0001a8de, +0x0001a8db, +0x0001a8d9, +0x0001a8d6, +0x0001a8d2, +0x0001a8d1, +0x0001a8cd, +0x0001a8ca, +0x0001a8c8, +0x0001a8c5, +0x0001a8c2, +0x0001a8c0, +0x0001a8bd, +0x0001a8ba, +0x0001a8b8, +0x0001a8b5, +0x0001a8b3, +0x0001a8b0, +0x0001a8ac, +0x0001a8ab, +0x0001a8a7, +0x0001a8a4, +0x0001a8a2, +0x0001a89f, +0x0001a89c, +0x0001a89a, +0x0001a897, +0x0001a893, +0x0001a892, +0x0001a88e, +0x0001a88b, +0x0001a889, +0x0001a886, +0x0001a883, +0x0001a881, +0x0001a87e, +0x0001a87b, +0x0001a879, +0x0001a876, +0x0001a872, +0x0001a871, +0x0001a86d, +0x0001a86a, +0x0001a868, +0x0001a865, +0x0001a862, +0x0001a860, +0x0001a85d, +0x0001a85b, +0x0001a858, +0x0001a854, +0x0001a853, +0x0001a850, +0x0001a84c, +0x0001a84b, +0x0001a847, +0x0001a844, +0x0001a842, +0x0001a83f, +0x0001a83c, +0x0001a83a, +0x0001a837, +0x0001a833, +0x0001a832, +0x0001a82e, +0x0001a82b, +0x0001a829, +0x0001a826, +0x0001a823, +0x0001a821, +0x0001a81e, +0x0001a81b, +0x0001a819, +0x0001a816, +0x0001a812, +0x0001a811, +0x0001a80d, +0x0001a80a, +0x0001a808, +0x0001a805, +0x0001a803, +0x0001a800, +0x0001a7fd, +0x0001a7fb, +0x0001a7f8, +0x0001a7f4, +0x0001a7f3, +0x0001a7ef, +0x0001a7ec, +0x0001a7ea, +0x0001a7e7, +0x0001a7e4, +0x0001a7e2, +0x0001a7df, +0x0001a7dc, +0x0001a7da, +0x0001a7d7, +0x0001a7d3, +0x0001a7d2, +0x0001a7ce, +0x0001a7cb, +0x0001a7c9, +0x0001a7c6, +0x0001a7c3, +0x0001a7c1, +0x0001a7be, +0x0001a7ba, +0x0001a7b9, +0x0001a7b5, +0x0001a7b2, +0x0001a7b1, +0x0001a7ad, +0x0001a7ac, +0x0001a7a8, +0x0001a7a5, +0x0001a7a3, +0x0001a7a0, +0x0001a79d, +0x0001a79b, +0x0001a798, +0x0001a794, +0x0001a793, +0x0001a78f, +0x0001a78c, +0x0001a78a, +0x0001a787, +0x0001a784, +0x0001a782, +0x0001a77f, +0x0001a77c, +0x0001a779, +0x0001a777, +0x0001a774, +0x0001a770, +0x0001a76f, +0x0001a76b, +0x0001a76a, +0x0001a766, +0x0001a763, +0x0001a761, +0x0001a75e, +0x0001a75b, +0x0001a759, +0x0001a756, +0x0001a753, +0x0001a751, +0x0001a74e, +0x0001a74a, +0x0001a749, +0x0001a745, +0x0001a742, +0x0001a740, +0x0001a73d, +0x0001a73a, +0x0001a738, +0x0001a735, +0x0001a732, +0x0001a730, +0x0001a72d, +0x0001a72b, +0x0001a728, +0x0001a724, +0x0001a723, +0x0001a71f, +0x0001a71c, +0x0001a71a, +0x0001a717, +0x0001a714, +0x0001a712, +0x0001a70f, +0x0001a70c, +0x0001a70a, +0x0001a707, +0x0001a703, +0x0001a702, +0x0001a6fe, +0x0001a6fb, +0x0001a6f9, +0x0001a6f6, +0x0001a6f3, +0x0001a6f1, +0x0001a6ee, +0x0001a6ec, +0x0001a6e9, +0x0001a6e6, +0x0001a6e4, +0x0001a6e1, +0x0001a6dd, +0x0001a6dc, +0x0001a6d8, +0x0001a6d5, +0x0001a6d3, +0x0001a6d0, +0x0001a6cd, +0x0001a6cb, +0x0001a6c8, +0x0001a6c5, +0x0001a6c3, +0x0001a6c0, +0x0001a6bc, +0x0001a6bb, +0x0001a6b7, +0x0001a6b4, +0x0001a6b2, +0x0001a6af, +0x0001a6ad, +0x0001a6aa, +0x0001a6a7, +0x0001a6a5, +0x0001a6a2, +0x0001a69f, +0x0001a69d, +0x0001a69a, +0x0001a696, +0x0001a695, +0x0001a691, +0x0001a68e, +0x0001a68c, +0x0001a689, +0x0001a686, +0x0001a684, +0x0001a681, +0x0001a67d, +0x0001a67c, +0x0001a679, +0x0001a675, +0x0001a674, +0x0001a670, +0x0001a66f, +0x0001a66b, +0x0001a668, +0x0001a666, +0x0001a663, +0x0001a660, +0x0001a65e, +0x0001a65b, +0x0001a657, +0x0001a656, +0x0001a653, +0x0001a64f, +0x0001a64e, +0x0001a64a, +0x0001a647, +0x0001a645, +0x0001a642, +0x0001a63f, +0x0001a63d, +0x0001a63a, +0x0001a636, +0x0001a635, +0x0001a631, +0x0001a630, +0x0001a62d, +0x0001a629, +0x0001a628, +0x0001a624, +0x0001a621, +0x0001a61e, +0x0001a61b, +0x0001a619, +0x0001a616, +0x0001a614, +0x0001a611, +0x0001a60e, +0x0001a60c, +0x0001a609, +0x0001a605, +0x0001a604, +0x0001a601, +0x0001a5fd, +0x0001a5fc, +0x0001a5f8, +0x0001a5f5, +0x0001a5f3, +0x0001a5f0, +0x0001a5ee, +0x0001a5eb, +0x0001a5e8, +0x0001a5e6, +0x0001a5e3, +0x0001a5e0, +0x0001a5de, +0x0001a5db, +0x0001a5d7, +0x0001a5d6, +0x0001a5d3, +0x0001a5cf, +0x0001a5ce, +0x0001a5ca, +0x0001a5c7, +0x0001a5c5, +0x0001a5c2, +0x0001a5c0, +0x0001a5bd, +0x0001a5ba, +0x0001a5b8, +0x0001a5b5, +0x0001a5b2, +0x0001a5b0, +0x0001a5ad, +0x0001a5a9, +0x0001a5a8, +0x0001a5a4, +0x0001a5a1, +0x0001a5a0, +0x0001a59c, +0x0001a59b, +0x0001a597, +0x0001a594, +0x0001a592, +0x0001a58f, +0x0001a58c, +0x0001a58a, +0x0001a587, +0x0001a584, +0x0001a582, +0x0001a57f, +0x0001a57b, +0x0001a57a, +0x0001a576, +0x0001a575, +0x0001a571, +0x0001a56e, +0x0001a56d, +0x0001a569, +0x0001a566, +0x0001a564, +0x0001a561, +0x0001a55e, +0x0001a55c, +0x0001a559, +0x0001a556, +0x0001a554, +0x0001a551, +0x0001a54d, +0x0001a54c, +0x0001a548, +0x0001a547, +0x0001a543, +0x0001a540, +0x0001a53e, +0x0001a53b, +0x0001a538, +0x0001a536, +0x0001a533, +0x0001a530, +0x0001a52e, +0x0001a52b, +0x0001a527, +0x0001a526, +0x0001a523, +0x0001a521, +0x0001a51e, +0x0001a51a, +0x0001a519, +0x0001a515, +0x0001a512, +0x0001a510, +0x0001a50d, +0x0001a50a, +0x0001a508, +0x0001a505, +0x0001a502, +0x0001a500, +0x0001a4fd, +0x0001a4f9, +0x0001a4f8, +0x0001a4f4, +0x0001a4f3, +0x0001a4f0, +0x0001a4ec, +0x0001a4eb, +0x0001a4e7, +0x0001a4e4, +0x0001a4e2, +0x0001a4df, +0x0001a4dc, +0x0001a4da, +0x0001a4d7, +0x0001a4d4, +0x0001a4d2, +0x0001a4cf, +0x0001a4cd, +0x0001a4ca, +0x0001a4c7, +0x0001a4c3, +0x0001a4c2, +0x0001a4be, +0x0001a4bb, +0x0001a4b9, +0x0001a4b6, +0x0001a4b4, +0x0001a4b1, +0x0001a4ae, +0x0001a4ac, +0x0001a4a9, +0x0001a4a6, +0x0001a4a4, +0x0001a4a1, +0x0001a49e, +0x0001a49c, +0x0001a499, +0x0001a495, +0x0001a494, +0x0001a490, +0x0001a48f, +0x0001a48b, +0x0001a488, +0x0001a487, +0x0001a483, +0x0001a480, +0x0001a47e, +0x0001a47b, +0x0001a478, +0x0001a476, +0x0001a473, +0x0001a471, +0x0001a46e, +0x0001a46b, +0x0001a469, +0x0001a466, +0x0001a462, +0x0001a461, +0x0001a45e, +0x0001a45a, +0x0001a459, +0x0001a455, +0x0001a452, +0x0001a450, +0x0001a44d, +0x0001a44b, +0x0001a448, +0x0001a445, +0x0001a443, +0x0001a440, +0x0001a43d, +0x0001a43b, +0x0001a438, +0x0001a435, +0x0001a433, +0x0001a430, +0x0001a42c, +0x0001a42b, +0x0001a427, +0x0001a426, +0x0001a422, +0x0001a41f, +0x0001a41e, +0x0001a41a, +0x0001a417, +0x0001a415, +0x0001a412, +0x0001a40f, +0x0001a40d, +0x0001a40a, +0x0001a408, +0x0001a405, +0x0001a402, +0x0001a400, +0x0001a3fd, +0x0001a3f9, +0x0001a3f8, +0x0001a3f5, +0x0001a3f1, +0x0001a3f0, +0x0001a3ec, +0x0001a3e9, +0x0001a3e7, +0x0001a3e4, +0x0001a3e2, +0x0001a3df, +0x0001a3dc, +0x0001a3da, +0x0001a3d7, +0x0001a3d4, +0x0001a3d2, +0x0001a3cf, +0x0001a3cc, +0x0001a3ca, +0x0001a3c7, +0x0001a3c5, +0x0001a3c2, +0x0001a3be, +0x0001a3bd, +0x0001a3b9, +0x0001a3b6, +0x0001a3b5, +0x0001a3b1, +0x0001a3ae, +0x0001a3ac, +0x0001a3a9, +0x0001a3a6, +0x0001a3a4, +0x0001a3a1, +0x0001a39f, +0x0001a39c, +0x0001a399, +0x0001a397, +0x0001a394, +0x0001a390, +0x0001a38f, +0x0001a38c, +0x0001a388, +0x0001a387, +0x0001a383, +0x0001a380, +0x0001a37e, +0x0001a37b, +0x0001a379, +0x0001a376, +0x0001a373, +0x0001a371, +0x0001a36e, +0x0001a36c, +0x0001a369, +0x0001a365, +0x0001a364, +0x0001a361, +0x0001a35d, +0x0001a35c, +0x0001a358, +0x0001a357, +0x0001a353, +0x0001a350, +0x0001a34f, +0x0001a34b, +0x0001a348, +0x0001a346, +0x0001a343, +0x0001a340, +0x0001a33e, +0x0001a33b, +0x0001a339, +0x0001a336, +0x0001a333, +0x0001a331, +0x0001a32e, +0x0001a32b, +0x0001a329, +0x0001a326, +0x0001a322, +0x0001a321, +0x0001a31d, +0x0001a31c, +0x0001a319, +0x0001a315, +0x0001a314, +0x0001a310, +0x0001a30d, +0x0001a30b, +0x0001a308, +0x0001a305, +0x0001a303, +0x0001a300, +0x0001a2fe, +0x0001a2fb, +0x0001a2f8, +0x0001a2f6, +0x0001a2f3, +0x0001a2f0, +0x0001a2ee, +0x0001a2eb, +0x0001a2e7, +0x0001a2e6, +0x0001a2e3, +0x0001a2e1, +0x0001a2de, +0x0001a2da, +0x0001a2d9, +0x0001a2d5, +0x0001a2d2, +0x0001a2d1, +0x0001a2cd, +0x0001a2ca, +0x0001a2c8, +0x0001a2c5, +0x0001a2c3, +0x0001a2c0, +0x0001a2bd, +0x0001a2bb, +0x0001a2b8, +0x0001a2b5, +0x0001a2b3, +0x0001a2b0, +0x0001a2ad, +0x0001a2ab, +0x0001a2a8, +0x0001a2a4, +0x0001a2a3, +0x0001a29f, +0x0001a29e, +0x0001a29b, +0x0001a297, +0x0001a296, +0x0001a292, +0x0001a28f, +0x0001a28d, +0x0001a28a, +0x0001a287, +0x0001a285, +0x0001a282, +0x0001a280, +0x0001a27d, +0x0001a27a, +0x0001a278, +0x0001a275, +0x0001a272, +0x0001a270, +0x0001a26d, +0x0001a269, +0x0001a268, +0x0001a265, +0x0001a263, +0x0001a260, +0x0001a25c, +0x0001a25b, +0x0001a257, +0x0001a254, +0x0001a253, +0x0001a24f, +0x0001a24c, +0x0001a24a, +0x0001a247, +0x0001a245, +0x0001a242, +0x0001a23f, +0x0001a23d, +0x0001a23a, +0x0001a237, +0x0001a235, +0x0001a232, +0x0001a22f, +0x0001a22d, +0x0001a22a, +0x0001a228, +0x0001a225, +0x0001a221, +0x0001a220, +0x0001a21c, +0x0001a219, +0x0001a217, +0x0001a215, +0x0001a212, +0x0001a20e, +0x0001a20d, +0x0001a20a, +0x0001a206, +0x0001a205, +0x0001a201, +0x0001a200, +0x0001a1fc, +0x0001a1f9, +0x0001a1f8, +0x0001a1f4, +0x0001a1f1, +0x0001a1ef, +0x0001a1ec, +0x0001a1eb, +0x0001a1e7, +0x0001a1e4, +0x0001a1e2, +0x0001a1df, +0x0001a1dc, +0x0001a1da, +0x0001a1d7, +0x0001a1d5, +0x0001a1d2, +0x0001a1cf, +0x0001a1cd, +0x0001a1ca, +0x0001a1c7, +0x0001a1c5, +0x0001a1c2, +0x0001a1bf, +0x0001a1bd, +0x0001a1ba, +0x0001a1b8, +0x0001a1b5, +0x0001a1b2, +0x0001a1b0, +0x0001a1ad, +0x0001a1a9, +0x0001a1a8, +0x0001a1a5, +0x0001a1a3, +0x0001a1a0, +0x0001a19c, +0x0001a19b, +0x0001a197, +0x0001a194, +0x0001a193, +0x0001a18f, +0x0001a18e, +0x0001a18a, +0x0001a187, +0x0001a186, +0x0001a182, +0x0001a17f, +0x0001a17d, +0x0001a17a, +0x0001a179, +0x0001a175, +0x0001a172, +0x0001a170, +0x0001a16d, +0x0001a16a, +0x0001a168, +0x0001a165, +0x0001a162, +0x0001a160, +0x0001a15d, +0x0001a15b, +0x0001a158, +0x0001a155, +0x0001a153, +0x0001a150, +0x0001a14d, +0x0001a14b, +0x0001a148, +0x0001a146, +0x0001a143, +0x0001a140, +0x0001a13e, +0x0001a13b, +0x0001a137, +0x0001a136, +0x0001a132, +0x0001a131, +0x0001a12e, +0x0001a12a, +0x0001a129, +0x0001a125, +0x0001a122, +0x0001a121, +0x0001a11d, +0x0001a11c, +0x0001a118, +0x0001a115, +0x0001a114, +0x0001a110, +0x0001a10d, +0x0001a10b, +0x0001a108, +0x0001a105, +0x0001a103, +0x0001a100, +0x0001a0fe, +0x0001a0fb, +0x0001a0f8, +0x0001a0f6, +0x0001a0f3, +0x0001a0f0, +0x0001a0ee, +0x0001a0eb, +0x0001a0e9, +0x0001a0e6, +0x0001a0e3, +0x0001a0e1, +0x0001a0de, +0x0001a0db, +0x0001a0d9, +0x0001a0d6, +0x0001a0d4, +0x0001a0d1, +0x0001a0ce, +0x0001a0cc, +0x0001a0c9, +0x0001a0c5, +0x0001a0c3, +0x0001a0c0, +0x0001a0be, +0x0001a0bb, +0x0001a0b9, +0x0001a0b6, +0x0001a0b3, +0x0001a0b1, +0x0001a0ae, +0x0001a0ab, +0x0001a0a9, +0x0001a0a6, +0x0001a0a4, +0x0001a0a1, +0x0001a09e, +0x0001a09c, +0x0001a099, +0x0001a096, +0x0001a094, +0x0001a091, +0x0001a08f, +0x0001a08c, +0x0001a089, +0x0001a087, +0x0001a084, +0x0001a080, +0x0001a07f, +0x0001a07c, +0x0001a07a, +0x0001a077, +0x0001a073, +0x0001a072, +0x0001a06f, +0x0001a06b, +0x0001a06a, +0x0001a066, +0x0001a065, +0x0001a062, +0x0001a05e, +0x0001a05d, +0x0001a059, +0x0001a056, +0x0001a055, +0x0001a051, +0x0001a050, +0x0001a04c, +0x0001a049, +0x0001a048, +0x0001a044, +0x0001a041, +0x0001a03f, +0x0001a03c, +0x0001a03b, +0x0001a037, +0x0001a034, +0x0001a032, +0x0001a02f, +0x0001a02c, +0x0001a02a, +0x0001a027, +0x0001a025, +0x0001a022, +0x0001a01f, +0x0001a01d, +0x0001a01a, +0x0001a017, +0x0001a015, +0x0001a012, +0x0001a010, +0x0001a00d, +0x0001a00a, +0x0001a008, +0x0001a005, +0x0001a002, +0x0001a000, +0x00019ffd, +0x00019ffb, +0x00019ff8, +0x00019ff5, +0x00019ff3, +0x00019ff0, +0x00019fed, +0x00019feb, +0x00019fe8, +0x00019fe6, +0x00019fe3, +0x00019fe0, +0x00019fde, +0x00019fdb, +0x00019fd7, +0x00019fd6, +0x00019fd3, +0x00019fd1, +0x00019fce, +0x00019fca, +0x00019fc9, +0x00019fc6, +0x00019fc2, +0x00019fc1, +0x00019fbd, +0x00019fbc, +0x00019fb9, +0x00019fb5, +0x00019fb4, +0x00019fb0, +0x00019fad, +0x00019fac, +0x00019fa8, +0x00019fa7, +0x00019fa3, +0x00019fa0, +0x00019f9f, +0x00019f9b, +0x00019f98, +0x00019f96, +0x00019f93, +0x00019f92, +0x00019f8e, +0x00019f8b, +0x00019f89, +0x00019f86, +0x00019f83, +0x00019f81, +0x00019f7e, +0x00019f7c, +0x00019f79, +0x00019f76, +0x00019f74, +0x00019f71, +0x00019f6e, +0x00019f6d, +0x00019f69, +0x00019f66, +0x00019f65, +0x00019f61, +0x00019f5e, +0x00019f5c, +0x00019f59, +0x00019f58, +0x00019f54, +0x00019f51, +0x00019f4f, +0x00019f4c, +0x00019f49, +0x00019f47, +0x00019f44, +0x00019f42, +0x00019f3f, +0x00019f3c, +0x00019f3a, +0x00019f37, +0x00019f34, +0x00019f32, +0x00019f2f, +0x00019f2d, +0x00019f2a, +0x00019f27, +0x00019f25, +0x00019f22, +0x00019f1f, +0x00019f1d, +0x00019f1a, +0x00019f18, +0x00019f15, +0x00019f12, +0x00019f10, +0x00019f0d, +0x00019f0b, +0x00019f08, +0x00019f05, +0x00019f03, +0x00019f00, +0x00019efd, +0x00019efb, +0x00019ef8, +0x00019ef6, +0x00019ef3, +0x00019ef0, +0x00019eee, +0x00019eeb, +0x00019ee8, +0x00019ee6, +0x00019ee3, +0x00019ee1, +0x00019ede, +0x00019edb, +0x00019ed9, +0x00019ed6, +0x00019ed3, +0x00019ed1, +0x00019ece, +0x00019ecc, +0x00019ec9, +0x00019ec6, +0x00019ec4, +0x00019ec1, +0x00019ebf, +0x00019ebc, +0x00019eb9, +0x00019eb7, +0x00019eb4, +0x00019eb1, +0x00019eaf, +0x00019eac, +0x00019eaa, +0x00019ea7, +0x00019ea4, +0x00019ea2, +0x00019e9f, +0x00019e9b, +0x00019e9a, +0x00019e97, +0x00019e95, +0x00019e92, +0x00019e8f, +0x00019e8d, +0x00019e8a, +0x00019e86, +0x00019e85, +0x00019e82, +0x00019e80, +0x00019e7d, +0x00019e79, +0x00019e78, +0x00019e75, +0x00019e73, +0x00019e70, +0x00019e6c, +0x00019e6b, +0x00019e68, +0x00019e64, +0x00019e63, +0x00019e60, +0x00019e5e, +0x00019e5b, +0x00019e57, +0x00019e56, +0x00019e53, +0x00019e4f, +0x00019e4e, +0x00019e4a, +0x00019e49, +0x00019e46, +0x00019e42, +0x00019e41, +0x00019e3d, +0x00019e3a, +0x00019e39, +0x00019e35, +0x00019e34, +0x00019e31, +0x00019e2d, +0x00019e2c, +0x00019e28, +0x00019e25, +0x00019e24, +0x00019e21, +0x00019e1e, +0x00019e1c, +0x00019e19, +0x00019e15, +0x00019e14, +0x00019e11, +0x00019e0d, +0x00019e0c, +0x00019e09, +0x00019e07, +0x00019e04, +0x00019e01, +0x00019dff, +0x00019dfc, +0x00019dfa, +0x00019df7, +0x00019df4, +0x00019df2, +0x00019def, +0x00019dec, +0x00019dea, +0x00019de7, +0x00019de5, +0x00019de2, +0x00019ddf, +0x00019ddd, +0x00019dda, +0x00019dd8, +0x00019dd5, +0x00019dd2, +0x00019dd0, +0x00019dcd, +0x00019dcb, +0x00019dc8, +0x00019dc5, +0x00019dc3, +0x00019dc0, +0x00019dbd, +0x00019dbb, +0x00019db8, +0x00019db6, +0x00019db3, +0x00019db0, +0x00019dae, +0x00019dab, +0x00019da9, +0x00019da6, +0x00019da3, +0x00019da1, +0x00019d9e, +0x00019d9b, +0x00019d99, +0x00019d96, +0x00019d94, +0x00019d91, +0x00019d8e, +0x00019d8c, +0x00019d89, +0x00019d88, +0x00019d84, +0x00019d81, +0x00019d7f, +0x00019d7c, +0x00019d7b, +0x00019d77, +0x00019d74, +0x00019d73, +0x00019d6f, +0x00019d6c, +0x00019d6a, +0x00019d67, +0x00019d66, +0x00019d62, +0x00019d5f, +0x00019d5e, +0x00019d5a, +0x00019d59, +0x00019d56, +0x00019d52, +0x00019d51, +0x00019d4d, +0x00019d4a, +0x00019d49, +0x00019d45, +0x00019d44, +0x00019d41, +0x00019d3d, +0x00019d3c, +0x00019d38, +0x00019d37, +0x00019d34, +0x00019d30, +0x00019d2f, +0x00019d2c, +0x00019d28, +0x00019d27, +0x00019d23, +0x00019d22, +0x00019d1f, +0x00019d1b, +0x00019d1a, +0x00019d17, +0x00019d15, +0x00019d12, +0x00019d0f, +0x00019d0d, +0x00019d0a, +0x00019d08, +0x00019d05, +0x00019d02, +0x00019d00, +0x00019cfd, +0x00019cfa, +0x00019cf8, +0x00019cf5, +0x00019cf3, +0x00019cf0, +0x00019ced, +0x00019ceb, +0x00019ce8, +0x00019ce6, +0x00019ce3, +0x00019ce0, +0x00019cde, +0x00019cdb, +0x00019cd8, +0x00019cd6, +0x00019cd3, +0x00019cd0, +0x00019cce, +0x00019ccb, +0x00019cc9, +0x00019cc6, +0x00019cc3, +0x00019cc1, +0x00019cbe, +0x00019cbc, +0x00019cb9, +0x00019cb6, +0x00019cb4, +0x00019cb1, +0x00019cae, +0x00019cac, +0x00019ca9, +0x00019ca7, +0x00019ca4, +0x00019ca1, +0x00019c9f, +0x00019c9c, +0x00019c9b, +0x00019c97, +0x00019c94, +0x00019c92, +0x00019c8f, +0x00019c8e, +0x00019c8a, +0x00019c87, +0x00019c86, +0x00019c82, +0x00019c81, +0x00019c7e, +0x00019c7a, +0x00019c79, +0x00019c75, +0x00019c72, +0x00019c71, +0x00019c6d, +0x00019c6c, +0x00019c69, +0x00019c65, +0x00019c64, +0x00019c61, +0x00019c5f, +0x00019c5c, +0x00019c59, +0x00019c57, +0x00019c54, +0x00019c52, +0x00019c4f, +0x00019c4c, +0x00019c4a, +0x00019c47, +0x00019c44, +0x00019c42, +0x00019c3f, +0x00019c3d, +0x00019c3a, +0x00019c37, +0x00019c35, +0x00019c32, +0x00019c30, +0x00019c2d, +0x00019c2a, +0x00019c28, +0x00019c25, +0x00019c23, +0x00019c20, +0x00019c1d, +0x00019c1b, +0x00019c18, +0x00019c17, +0x00019c13, +0x00019c10, +0x00019c0e, +0x00019c0b, +0x00019c08, +0x00019c06, +0x00019c03, +0x00019c02, +0x00019bfe, +0x00019bfb, +0x00019bfa, +0x00019bf6, +0x00019bf5, +0x00019bf2, +0x00019bee, +0x00019bed, +0x00019be9, +0x00019be8, +0x00019be5, +0x00019be1, +0x00019be0, +0x00019bdd, +0x00019bdb, +0x00019bd8, +0x00019bd5, +0x00019bd3, +0x00019bd0, +0x00019bcd, +0x00019bcb, +0x00019bc8, +0x00019bc6, +0x00019bc3, +0x00019bc0, +0x00019bbe, +0x00019bbb, +0x00019bb9, +0x00019bb6, +0x00019bb3, +0x00019bb1, +0x00019bae, +0x00019bac, +0x00019ba9, +0x00019ba6, +0x00019ba4, +0x00019ba1, +0x00019b9e, +0x00019b9c, +0x00019b99, +0x00019b97, +0x00019b94, +0x00019b91, +0x00019b8f, +0x00019b8c, +0x00019b8b, +0x00019b87, +0x00019b85, +0x00019b82, +0x00019b7f, +0x00019b7d, +0x00019b7a, +0x00019b78, +0x00019b75, +0x00019b72, +0x00019b70, +0x00019b6d, +0x00019b6c, +0x00019b68, +0x00019b65, +0x00019b64, +0x00019b60, +0x00019b5f, +0x00019b5c, +0x00019b58, +0x00019b57, +0x00019b53, +0x00019b52, +0x00019b4f, +0x00019b4b, +0x00019b4a, +0x00019b47, +0x00019b45, +0x00019b42, +0x00019b3f, +0x00019b3d, +0x00019b3a, +0x00019b37, +0x00019b35, +0x00019b32, +0x00019b30, +0x00019b2d, +0x00019b2a, +0x00019b28, +0x00019b25, +0x00019b23, +0x00019b20, +0x00019b1d, +0x00019b1b, +0x00019b18, +0x00019b16, +0x00019b13, +0x00019b10, +0x00019b0e, +0x00019b0b, +0x00019b0a, +0x00019b06, +0x00019b03, +0x00019b02, +0x00019afe, +0x00019afd, +0x00019afa, +0x00019af6, +0x00019af5, +0x00019af2, +0x00019af0, +0x00019aed, +0x00019aea, +0x00019ae8, +0x00019ae5, +0x00019ae3, +0x00019ae0, +0x00019add, +0x00019adb, +0x00019ad8, +0x00019ad5, +0x00019ad3, +0x00019ad0, +0x00019ace, +0x00019acb, +0x00019ac8, +0x00019ac6, +0x00019ac3, +0x00019ac1, +0x00019abe, +0x00019abb, +0x00019ab9, +0x00019ab6, +0x00019ab5, +0x00019ab1, +0x00019aae, +0x00019aad, +0x00019aa9, +0x00019aa8, +0x00019aa4, +0x00019aa1, +0x00019aa0, +0x00019a9c, +0x00019a9b, +0x00019a98, +0x00019a94, +0x00019a93, +0x00019a90, +0x00019a8e, +0x00019a8b, +0x00019a88, +0x00019a86, +0x00019a83, +0x00019a80, +0x00019a7e, +0x00019a7b, +0x00019a79, +0x00019a76, +0x00019a73, +0x00019a71, +0x00019a6e, +0x00019a6c, +0x00019a69, +0x00019a66, +0x00019a64, +0x00019a61, +0x00019a5f, +0x00019a5c, +0x00019a59, +0x00019a57, +0x00019a54, +0x00019a53, +0x00019a4f, +0x00019a4c, +0x00019a4b, +0x00019a47, +0x00019a46, +0x00019a43, +0x00019a3f, +0x00019a3e, +0x00019a3b, +0x00019a38, +0x00019a36, +0x00019a33, +0x00019a30, +0x00019a2e, +0x00019a2b, +0x00019a2a, +0x00019a26, +0x00019a23, +0x00019a22, +0x00019a1e, +0x00019a1d, +0x00019a1a, +0x00019a16, +0x00019a15, +0x00019a12, +0x00019a10, +0x00019a0d, +0x00019a0a, +0x00019a08, +0x00019a05, +0x00019a03, +0x00019a00, +0x000199fd, +0x000199fb, +0x000199f8, +0x000199f6, +0x000199f3, +0x000199f0, +0x000199ee, +0x000199eb, +0x000199ea, +0x000199e6, +0x000199e3, +0x000199e2, +0x000199de, +0x000199dd, +0x000199da, +0x000199d6, +0x000199d5, +0x000199d2, +0x000199d0, +0x000199cd, +0x000199ca, +0x000199c8, +0x000199c5, +0x000199c3, +0x000199c0, +0x000199bd, +0x000199bb, +0x000199b8, +0x000199b6, +0x000199b3, +0x000199b0, +0x000199ae, +0x000199ab, +0x000199aa, +0x000199a6, +0x000199a3, +0x000199a2, +0x0001999e, +0x0001999d, +0x0001999a, +0x00019996, +0x00019995, +0x00019991, +0x00019990, +0x0001998d, +0x00019989, +0x00019988, +0x00019985, +0x00019983, +0x00019980, +0x0001997d, +0x0001997b, +0x00019978, +0x00019976, +0x00019973, +0x00019970, +0x0001996e, +0x0001996b, +0x00019969, +0x00019966, +0x00019963, +0x00019961, +0x0001995e, +0x0001995d, +0x00019959, +0x00019956, +0x00019955, +0x00019951, +0x00019950, +0x0001994d, +0x00019949, +0x00019948, +0x00019945, +0x00019943, +0x00019940, +0x0001993d, +0x0001993b, +0x00019938, +0x00019936, +0x00019933, +0x00019930, +0x0001992e, +0x0001992b, +0x00019929, +0x00019926, +0x00019923, +0x00019921, +0x0001991e, +0x0001991d, +0x00019919, +0x00019916, +0x00019915, +0x00019911, +0x00019910, +0x0001990d, +0x00019909, +0x00019908, +0x00019905, +0x00019903, +0x00019900, +0x000198fd, +0x000198fb, +0x000198f8, +0x000198f5, +0x000198f2, +0x000198f1, +0x000198ed, +0x000198ec, +0x000198e9, +0x000198e6, +0x000198e4, +0x000198e1, +0x000198df, +0x000198dc, +0x000198d9, +0x000198d7, +0x000198d4, +0x000198d2, +0x000198cf, +0x000198ce, +0x000198ca, +0x000198c7, +0x000198c6, +0x000198c2, +0x000198c1, +0x000198be, +0x000198ba, +0x000198b9, +0x000198b6, +0x000198b4, +0x000198b1, +0x000198ae, +0x000198ac, +0x000198a9, +0x000198a7, +0x000198a4, +0x000198a1, +0x0001989f, +0x0001989c, +0x0001989b, +0x00019897, +0x00019894, +0x00019893, +0x0001988f, +0x0001988e, +0x0001988b, +0x00019887, +0x00019886, +0x00019883, +0x00019881, +0x0001987e, +0x0001987c, +0x00019879, +0x00019876, +0x00019874, +0x00019871, +0x00019870, +0x0001986c, +0x00019869, +0x00019868, +0x00019864, +0x00019863, +0x00019860, +0x0001985c, +0x0001985b, +0x00019858, +0x00019856, +0x00019853, +0x00019850, +0x0001984e, +0x0001984b, +0x00019849, +0x00019846, +0x00019843, +0x00019841, +0x0001983e, +0x0001983d, +0x00019839, +0x00019836, +0x00019835, +0x00019831, +0x00019830, +0x0001982d, +0x0001982b, +0x00019828, +0x00019825, +0x00019823, +0x00019820, +0x0001981e, +0x0001981b, +0x00019818, +0x00019816, +0x00019813, +0x00019812, +0x0001980e, +0x0001980b, +0x0001980a, +0x00019806, +0x00019805, +0x00019802, +0x000197fe, +0x000197fd, +0x000197fa, +0x000197f8, +0x000197f5, +0x000197f2, +0x000197f0, +0x000197ed, +0x000197eb, +0x000197e8, +0x000197e5, +0x000197e3, +0x000197e0, +0x000197df, +0x000197db, +0x000197da, +0x000197d7, +0x000197d3, +0x000197d2, +0x000197cf, +0x000197cd, +0x000197ca, +0x000197c7, +0x000197c5, +0x000197c2, +0x000197c0, +0x000197bd, +0x000197ba, +0x000197b8, +0x000197b5, +0x000197b4, +0x000197b0, +0x000197ad, +0x000197ac, +0x000197a9, +0x000197a5, +0x000197a4, +0x000197a1, +0x0001979f, +0x0001979c, +0x00019799, +0x00019797, +0x00019794, +0x00019792, +0x0001978f, +0x0001978c, +0x0001978a, +0x00019787, +0x00019786, +0x00019782, +0x00019781, +0x0001977e, +0x0001977a, +0x00019779, +0x00019776, +0x00019774, +0x00019771, +0x0001976e, +0x0001976c, +0x00019769, +0x00019767, +0x00019764, +0x00019761, +0x0001975f, +0x0001975c, +0x0001975b, +0x00019757, +0x00019756, +0x00019753, +0x0001974f, +0x0001974e, +0x0001974b, +0x00019749, +0x00019746, +0x00019743, +0x00019741, +0x0001973e, +0x0001973c, +0x00019739, +0x00019736, +0x00019734, +0x00019731, +0x00019730, +0x0001972d, +0x00019729, +0x00019728, +0x00019725, +0x00019723, +0x00019720, +0x0001971e, +0x0001971b, +0x00019718, +0x00019716, +0x00019713, +0x00019711, +0x0001970e, +0x0001970b, +0x0001970a, +0x00019706, +0x00019705, +0x00019702, +0x000196fe, +0x000196fd, +0x000196fa, +0x000196f8, +0x000196f5, +0x000196f3, +0x000196f0, +0x000196ed, +0x000196eb, +0x000196e8, +0x000196e7, +0x000196e3, +0x000196e0, +0x000196df, +0x000196db, +0x000196da, +0x000196d7, +0x000196d3, +0x000196d2, +0x000196cf, +0x000196cd, +0x000196ca, +0x000196c7, +0x000196c5, +0x000196c2, +0x000196c0, +0x000196bd, +0x000196bc, +0x000196b8, +0x000196b5, +0x000196b4, +0x000196b1, +0x000196af, +0x000196ac, +0x000196a9, +0x000196a7, +0x000196a4, +0x000196a2, +0x0001969f, +0x0001969c, +0x0001969a, +0x00019697, +0x00019695, +0x00019692, +0x00019691, +0x0001968e, +0x0001968a, +0x00019689, +0x00019686, +0x00019684, +0x00019681, +0x0001967e, +0x0001967c, +0x00019679, +0x00019677, +0x00019674, +0x00019671, +0x0001966f, +0x0001966d, +0x0001966a, +0x00019667, +0x00019666, +0x00019662, +0x00019661, +0x0001965e, +0x0001965a, +0x00019659, +0x00019656, +0x00019654, +0x00019651, +0x0001964e, +0x0001964c, +0x00019649, +0x00019647, +0x00019644, +0x00019643, +0x0001963f, +0x0001963c, +0x0001963b, +0x00019638, +0x00019636, +0x00019633, +0x00019630, +0x0001962e, +0x0001962b, +0x00019629, +0x00019626, +0x00019624, +0x00019621, +0x0001961e, +0x0001961d, +0x00019619, +0x00019618, +0x00019615, +0x00019611, +0x00019610, +0x0001960d, +0x0001960b, +0x00019608, +0x00019605, +0x00019603, +0x00019600, +0x000195fe, +0x000195fb, +0x000195fa, +0x000195f6, +0x000195f3, +0x000195f2, +0x000195ef, +0x000195ed, +0x000195ea, +0x000195e7, +0x000195e5, +0x000195e2, +0x000195e0, +0x000195dd, +0x000195dc, +0x000195d8, +0x000195d5, +0x000195d4, +0x000195d0, +0x000195cf, +0x000195cc, +0x000195c8, +0x000195c7, +0x000195c4, +0x000195c2, +0x000195bf, +0x000195bc, +0x000195ba, +0x000195b7, +0x000195b5, +0x000195b2, +0x000195b1, +0x000195ae, +0x000195aa, +0x000195a9, +0x000195a6, +0x000195a4, +0x000195a1, +0x0001959e, +0x0001959c, +0x00019599, +0x00019597, +0x00019594, +0x00019593, +0x0001958f, +0x0001958c, +0x0001958b, +0x00019587, +0x00019586, +0x00019583, +0x00019580, +0x0001957e, +0x0001957b, +0x00019579, +0x00019576, +0x00019573, +0x00019571, +0x0001956e, +0x0001956d, +0x00019569, +0x00019568, +0x00019565, +0x00019561, +0x00019560, +0x0001955d, +0x0001955b, +0x00019558, +0x00019555, +0x00019553, +0x00019550, +0x0001954e, +0x0001954b, +0x0001954a, +0x00019546, +0x00019543, +0x00019542, +0x0001953f, +0x0001953d, +0x0001953a, +0x00019537, +0x00019535, +0x00019532, +0x00019530, +0x0001952d, +0x0001952b, +0x00019529, +0x00019526, +0x00019524, +0x00019521, +0x0001951e, +0x0001951c, +0x00019519, +0x00019518, +0x00019515, +0x00019511, +0x00019510, +0x0001950d, +0x0001950b, +0x00019508, +0x00019506, +0x00019503, +0x00019500, +0x000194fe, +0x000194fb, +0x000194fa, +0x000194f7, +0x000194f3, +0x000194f2, +0x000194ef, +0x000194ed, +0x000194ea, +0x000194e8, +0x000194e5, +0x000194e2, +0x000194e0, +0x000194dd, +0x000194dc, +0x000194d8, +0x000194d5, +0x000194d4, +0x000194d1, +0x000194cf, +0x000194cc, +0x000194ca, +0x000194c7, +0x000194c4, +0x000194c2, +0x000194bf, +0x000194be, +0x000194ba, +0x000194b7, +0x000194b6, +0x000194b2, +0x000194b1, +0x000194ae, +0x000194ac, +0x000194a9, +0x000194a6, +0x000194a4, +0x000194a1, +0x0001949f, +0x0001949c, +0x00019499, +0x00019498, +0x00019494, +0x00019493, +0x00019490, +0x0001948e, +0x0001948b, +0x00019488, +0x00019486, +0x00019483, +0x00019481, +0x0001947e, +0x0001947d, +0x0001947a, +0x00019476, +0x00019475, +0x00019472, +0x00019470, +0x0001946d, +0x0001946a, +0x00019468, +0x00019465, +0x00019463, +0x00019460, +0x0001945f, +0x0001945b, +0x00019458, +0x00019457, +0x00019454, +0x00019452, +0x0001944f, +0x0001944c, +0x0001944a, +0x00019447, +0x00019445, +0x00019442, +0x00019441, +0x0001943d, +0x0001943a, +0x00019439, +0x00019436, +0x00019434, +0x00019431, +0x0001942e, +0x0001942c, +0x00019429, +0x00019427, +0x00019424, +0x00019423, +0x0001941f, +0x0001941c, +0x0001941b, +0x00019417, +0x00019416, +0x00019413, +0x00019410, +0x0001940e, +0x0001940b, +0x00019409, +0x00019406, +0x00019404, +0x00019401, +0x000193fe, +0x000193fd, +0x000193f9, +0x000193f8, +0x000193f5, +0x000193f1, +0x000193f0, +0x000193ed, +0x000193eb, +0x000193e9, +0x000193e6, +0x000193e4, +0x000193e1, +0x000193de, +0x000193dc, +0x000193d9, +0x000193d8, +0x000193d5, +0x000193d3, +0x000193d0, +0x000193cd, +0x000193cb, +0x000193c8, +0x000193c6, +0x000193c3, +0x000193c0, +0x000193be, +0x000193bb, +0x000193ba, +0x000193b7, +0x000193b5, +0x000193b2, +0x000193af, +0x000193ad, +0x000193aa, +0x000193a8, +0x000193a5, +0x000193a4, +0x000193a1, +0x0001939d, +0x0001939c, +0x00019399, +0x00019397, +0x00019394, +0x00019392, +0x0001938f, +0x0001938c, +0x0001938b, +0x00019387, +0x00019386, +0x00019383, +0x00019381, +0x0001937e, +0x0001937b, +0x00019379, +0x00019376, +0x00019374, +0x00019371, +0x00019370, +0x0001936d, +0x00019369, +0x00019368, +0x00019365, +0x00019363, +0x00019360, +0x0001935e, +0x0001935b, +0x00019358, +0x00019357, +0x00019353, +0x00019352, +0x0001934f, +0x0001934d, +0x0001934a, +0x00019347, +0x00019345, +0x00019342, +0x00019341, +0x0001933d, +0x0001933a, +0x00019339, +0x00019336, +0x00019334, +0x00019331, +0x0001932f, +0x0001932c, +0x00019329, +0x00019327, +0x00019324, +0x00019323, +0x0001931f, +0x0001931e, +0x0001931b, +0x00019318, +0x00019316, +0x00019313, +0x00019311, +0x0001930e, +0x0001930d, +0x00019309, +0x00019306, +0x00019305, +0x00019302, +0x00019300, +0x000192fd, +0x000192fb, +0x000192f8, +0x000192f5, +0x000192f3, +0x000192f0, +0x000192ef, +0x000192ec, +0x000192ea, +0x000192e7, +0x000192e4, +0x000192e2, +0x000192df, +0x000192dd, +0x000192da, +0x000192d9, +0x000192d5, +0x000192d2, +0x000192d1, +0x000192ce, +0x000192cc, +0x000192c9, +0x000192c6, +0x000192c4, +0x000192c1, +0x000192bf, +0x000192bc, +0x000192bb, +0x000192b8, +0x000192b4, +0x000192b3, +0x000192b0, +0x000192ae, +0x000192ab, +0x000192a8, +0x000192a6, +0x000192a3, +0x000192a2, +0x0001929f, +0x0001929d, +0x0001929a, +0x00019297, +0x00019295, +0x00019292, +0x00019290, +0x0001928d, +0x0001928c, +0x00019289, +0x00019285, +0x00019284, +0x00019281, +0x0001927f, +0x0001927c, +0x0001927a, +0x00019277, +0x00019274, +0x00019273, +0x0001926f, +0x0001926e, +0x0001926b, +0x00019269, +0x00019266, +0x00019263, +0x00019261, +0x0001925e, +0x0001925d, +0x0001925a, +0x00019258, +0x00019255, +0x00019252, +0x00019250, +0x0001924d, +0x0001924b, +0x00019248, +0x00019247, +0x00019244, +0x00019240, +0x0001923f, +0x0001923c, +0x0001923a, +0x00019237, +0x00019235, +0x00019232, +0x0001922f, +0x0001922e, +0x0001922a, +0x00019229, +0x00019226, +0x00019224, +0x00019221, +0x0001921e, +0x0001921c, +0x00019219, +0x00019218, +0x00019214, +0x00019213, +0x00019210, +0x0001920d, +0x0001920b, +0x00019208, +0x00019206, +0x00019203, +0x00019202, +0x000191fe, +0x000191fb, +0x000191fa, +0x000191f7, +0x000191f5, +0x000191f2, +0x000191f0, +0x000191ed, +0x000191ea, +0x000191e8, +0x000191e5, +0x000191e4, +0x000191e1, +0x000191df, +0x000191dc, +0x000191d9, +0x000191d7, +0x000191d4, +0x000191d2, +0x000191cf, +0x000191ce, +0x000191cb, +0x000191c7, +0x000191c6, +0x000191c3, +0x000191c1, +0x000191be, +0x000191bc, +0x000191b9, +0x000191b6, +0x000191b5, +0x000191b1, +0x000191b0, +0x000191ad, +0x000191ab, +0x000191a8, +0x000191a5, +0x000191a3, +0x000191a0, +0x0001919f, +0x0001919c, +0x0001919a, +0x00019197, +0x00019194, +0x00019192, +0x0001918f, +0x0001918d, +0x0001918a, +0x00019189, +0x00019186, +0x00019182, +0x00019181, +0x0001917e, +0x0001917c, +0x00019179, +0x00019177, +0x00019174, +0x00019172, +0x0001916f, +0x0001916e, +0x0001916b, +0x00019167, +0x00019166, +0x00019163, +0x00019161, +0x0001915e, +0x0001915c, +0x00019159, +0x00019158, +0x00019155, +0x00019151, +0x00019150, +0x0001914d, +0x0001914b, +0x00019148, +0x00019146, +0x00019143, +0x00019140, +0x0001913f, +0x0001913c, +0x0001913a, +0x00019137, +0x00019135, +0x00019132, +0x0001912f, +0x0001912d, +0x0001912a, +0x00019129, +0x00019126, +0x00019124, +0x00019121, +0x0001911e, +0x0001911c, +0x00019119, +0x00019117, +0x00019114, +0x00019113, +0x00019110, +0x0001910e, +0x0001910b, +0x00019108, +0x00019106, +0x00019103, +0x00019102, +0x000190fe, +0x000190fd, +0x000190fa, +0x000190f7, +0x000190f5, +0x000190f2, +0x000190f0, +0x000190ed, +0x000190ec, +0x000190e9, +0x000190e5, +0x000190e4, +0x000190e1, +0x000190df, +0x000190dc, +0x000190da, +0x000190d7, +0x000190d6, +0x000190d3, +0x000190cf, +0x000190ce, +0x000190cb, +0x000190c9, +0x000190c6, +0x000190c4, +0x000190c1, +0x000190be, +0x000190bd, +0x000190ba, +0x000190b8, +0x000190b5, +0x000190b3, +0x000190b0, +0x000190ad, +0x000190ab, +0x000190a8, +0x000190a7, +0x000190a4, +0x000190a2, +0x0001909f, +0x0001909c, +0x0001909a, +0x00019097, +0x00019095, +0x00019092, +0x00019091, +0x0001908e, +0x0001908c, +0x00019089, +0x00019086, +0x00019084, +0x00019081, +0x00019080, +0x0001907c, +0x0001907b, +0x00019078, +0x00019075, +0x00019073, +0x00019070, +0x0001906e, +0x0001906b, +0x0001906a, +0x00019066, +0x00019063, +0x00019062, +0x0001905f, +0x0001905d, +0x0001905a, +0x00019058, +0x00019055, +0x00019052, +0x00019051, +0x0001904d, +0x0001904c, +0x00019049, +0x00019047, +0x00019044, +0x00019042, +0x0001903f, +0x0001903c, +0x0001903b, +0x00019038, +0x00019035, +0x00019034, +0x00019030, +0x0001902f, +0x0001902c, +0x0001902a, +0x00019027, +0x00019026, +0x00019022, +0x0001901f, +0x0001901e, +0x0001901b, +0x00019019, +0x00019016, +0x00019014, +0x00019011, +0x0001900e, +0x0001900d, +0x00019009, +0x00019008, +0x00019005, +0x00019003, +0x00019000, +0x00018ffe, +0x00018ffb, +0x00018ff8, +0x00018ff7, +0x00018ff4, +0x00018ff2, +0x00018fef, +0x00018fed, +0x00018fea, +0x00018fe7, +0x00018fe5, +0x00018fe2, +0x00018fe1, +0x00018fde, +0x00018fdc, +0x00018fd9, +0x00018fd7, +0x00018fd4, +0x00018fd1, +0x00018fd0, +0x00018fcc, +0x00018fcb, +0x00018fc8, +0x00018fc6, +0x00018fc3, +0x00018fc0, +0x00018fbe, +0x00018fbb, +0x00018fba, +0x00018fb7, +0x00018fb5, +0x00018fb2, +0x00018fb0, +0x00018fad, +0x00018faa, +0x00018fa9, +0x00018fa5, +0x00018fa4, +0x00018fa1, +0x00018f9f, +0x00018f9c, +0x00018f99, +0x00018f97, +0x00018f94, +0x00018f93, +0x00018f90, +0x00018f8e, +0x00018f8b, +0x00018f89, +0x00018f86, +0x00018f83, +0x00018f81, +0x00018f7e, +0x00018f7d, +0x00018f7a, +0x00018f78, +0x00018f75, +0x00018f72, +0x00018f70, +0x00018f6d, +0x00018f6c, +0x00018f68, +0x00018f67, +0x00018f64, +0x00018f62, +0x00018f5f, +0x00018f5c, +0x00018f5a, +0x00018f57, +0x00018f56, +0x00018f53, +0x00018f51, +0x00018f4e, +0x00018f4b, +0x00018f49, +0x00018f46, +0x00018f45, +0x00018f41, +0x00018f40, +0x00018f3d, +0x00018f3b, +0x00018f38, +0x00018f35, +0x00018f33, +0x00018f30, +0x00018f2f, +0x00018f2c, +0x00018f2a, +0x00018f27, +0x00018f24, +0x00018f22, +0x00018f1f, +0x00018f1d, +0x00018f1a, +0x00018f19, +0x00018f16, +0x00018f14, +0x00018f11, +0x00018f0e, +0x00018f0c, +0x00018f09, +0x00018f08, +0x00018f04, +0x00018f03, +0x00018f01, +0x00018efd, +0x00018efa, +0x00018ef9, +0x00018ef6, +0x00018ef4, +0x00018ef1, +0x00018eef, +0x00018eec, +0x00018eeb, +0x00018ee8, +0x00018ee5, +0x00018ee3, +0x00018ee0, +0x00018ede, +0x00018edb, +0x00018eda, +0x00018ed7, +0x00018ed5, +0x00018ed2, +0x00018ecf, +0x00018ecd, +0x00018eca, +0x00018ec9, +0x00018ec5, +0x00018ec4, +0x00018ec1, +0x00018ebf, +0x00018ebc, +0x00018eb9, +0x00018eb7, +0x00018eb4, +0x00018eb3, +0x00018eb0, +0x00018eae, +0x00018eab, +0x00018ea9, +0x00018ea6, +0x00018ea3, +0x00018ea2, +0x00018e9f, +0x00018e9d, +0x00018e9a, +0x00018e98, +0x00018e95, +0x00018e94, +0x00018e91, +0x00018e8d, +0x00018e8c, +0x00018e89, +0x00018e87, +0x00018e84, +0x00018e83, +0x00018e7f, +0x00018e7e, +0x00018e7b, +0x00018e78, +0x00018e76, +0x00018e73, +0x00018e71, +0x00018e6e, +0x00018e6d, +0x00018e6a, +0x00018e68, +0x00018e65, +0x00018e62, +0x00018e60, +0x00018e5d, +0x00018e5c, +0x00018e59, +0x00018e57, +0x00018e54, +0x00018e52, +0x00018e4f, +0x00018e4c, +0x00018e4b, +0x00018e48, +0x00018e46, +0x00018e43, +0x00018e41, +0x00018e3e, +0x00018e3d, +0x00018e3a, +0x00018e36, +0x00018e35, +0x00018e32, +0x00018e30, +0x00018e2d, +0x00018e2c, +0x00018e28, +0x00018e27, +0x00018e24, +0x00018e21, +0x00018e1f, +0x00018e1c, +0x00018e1a, +0x00018e17, +0x00018e16, +0x00018e13, +0x00018e11, +0x00018e0e, +0x00018e0b, +0x00018e09, +0x00018e06, +0x00018e05, +0x00018e02, +0x00018e00, +0x00018dfd, +0x00018dfb, +0x00018df8, +0x00018df5, +0x00018df4, +0x00018df0, +0x00018def, +0x00018dec, +0x00018dea, +0x00018de7, +0x00018de6, +0x00018de2, +0x00018ddf, +0x00018dde, +0x00018ddb, +0x00018dd9, +0x00018dd6, +0x00018dd4, +0x00018dd1, +0x00018dd0, +0x00018dcd, +0x00018dca, +0x00018dc8, +0x00018dc5, +0x00018dc3, +0x00018dc0, +0x00018dbd, +0x00018dbc, +0x00018db9, +0x00018db7, +0x00018db4, +0x00018db2, +0x00018daf, +0x00018dae, +0x00018dab, +0x00018da9, +0x00018da6, +0x00018da3, +0x00018da1, +0x00018d9e, +0x00018d9d, +0x00018d9a, +0x00018d98, +0x00018d95, +0x00018d93, +0x00018d90, +0x00018d8d, +0x00018d8c, +0x00018d88, +0x00018d87, +0x00018d84, +0x00018d82, +0x00018d7f, +0x00018d7e, +0x00018d7b, +0x00018d79, +0x00018d76, +0x00018d73, +0x00018d71, +0x00018d6e, +0x00018d6d, +0x00018d69, +0x00018d68, +0x00018d65, +0x00018d63, +0x00018d60, +0x00018d5d, +0x00018d5b, +0x00018d58, +0x00018d57, +0x00018d54, +0x00018d52, +0x00018d4f, +0x00018d4e, +0x00018d4a, +0x00018d49, +0x00018d46, +0x00018d43, +0x00018d41, +0x00018d3e, +0x00018d3c, +0x00018d39, +0x00018d38, +0x00018d35, +0x00018d33, +0x00018d30, +0x00018d2d, +0x00018d2b, +0x00018d28, +0x00018d27, +0x00018d24, +0x00018d22, +0x00018d1f, +0x00018d1d, +0x00018d1a, +0x00018d17, +0x00018d16, +0x00018d13, +0x00018d11, +0x00018d0e, +0x00018d0c, +0x00018d09, +0x00018d08, +0x00018d05, +0x00018d03, +0x00018d00, +0x00018cfd, +0x00018cfb, +0x00018cf8, +0x00018cf7, +0x00018cf4, +0x00018cf2, +0x00018cef, +0x00018ced, +0x00018cea, +0x00018ce7, +0x00018ce6, +0x00018ce3, +0x00018ce1, +0x00018cde, +0x00018cdc, +0x00018cd9, +0x00018cd8, +0x00018cd5, +0x00018cd3, +0x00018cd0, +0x00018ccd, +0x00018ccb, +0x00018cc8, +0x00018cc7, +0x00018cc4, +0x00018cc2, +0x00018cbf, +0x00018cbd, +0x00018cba, +0x00018cb7, +0x00018cb6, +0x00018cb2, +0x00018cb1, +0x00018cae, +0x00018cac, +0x00018ca9, +0x00018ca8, +0x00018ca5, +0x00018ca3, +0x00018ca0, +0x00018c9d, +0x00018c9b, +0x00018c98, +0x00018c96, +0x00018c93, +0x00018c91, +0x00018c8e, +0x00018c8d, +0x00018c8a, +0x00018c88, +0x00018c85, +0x00018c83, +0x00018c80, +0x00018c7f, +0x00018c7c, +0x00018c79, +0x00018c77, +0x00018c74, +0x00018c72, +0x00018c6f, +0x00018c6e, +0x00018c6b, +0x00018c69, +0x00018c66, +0x00018c65, +0x00018c61, +0x00018c5e, +0x00018c5d, +0x00018c5a, +0x00018c58, +0x00018c55, +0x00018c54, +0x00018c50, +0x00018c4f, +0x00018c4c, +0x00018c4a, +0x00018c47, +0x00018c44, +0x00018c43, +0x00018c3f, +0x00018c3e, +0x00018c3b, +0x00018c39, +0x00018c36, +0x00018c35, +0x00018c32, +0x00018c2e, +0x00018c2d, +0x00018c2a, +0x00018c28, +0x00018c25, +0x00018c24, +0x00018c20, +0x00018c1f, +0x00018c1c, +0x00018c1a, +0x00018c17, +0x00018c14, +0x00018c13, +0x00018c0f, +0x00018c0e, +0x00018c0b, +0x00018c09, +0x00018c06, +0x00018c05, +0x00018c02, +0x00018c00, +0x00018bfd, +0x00018bfa, +0x00018bf8, +0x00018bf5, +0x00018bf4, +0x00018bf1, +0x00018bef, +0x00018bec, +0x00018bea, +0x00018be7, +0x00018be6, +0x00018be3, +0x00018be0, +0x00018bde, +0x00018bdb, +0x00018bd9, +0x00018bd6, +0x00018bd5, +0x00018bd2, +0x00018bd0, +0x00018bcd, +0x00018bcb, +0x00018bc8, +0x00018bc5, +0x00018bc4, +0x00018bc1, +0x00018bbf, +0x00018bbc, +0x00018bba, +0x00018bb7, +0x00018bb6, +0x00018bb3, +0x00018bb1, +0x00018bae, +0x00018bab, +0x00018ba9, +0x00018ba6, +0x00018ba5, +0x00018ba2, +0x00018ba0, +0x00018b9d, +0x00018b9b, +0x00018b98, +0x00018b95, +0x00018b94, +0x00018b91, +0x00018b8f, +0x00018b8c, +0x00018b8a, +0x00018b87, +0x00018b86, +0x00018b83, +0x00018b81, +0x00018b7e, +0x00018b7b, +0x00018b79, +0x00018b76, +0x00018b75, +0x00018b72, +0x00018b70, +0x00018b6d, +0x00018b6c, +0x00018b68, +0x00018b67, +0x00018b64, +0x00018b61, +0x00018b60, +0x00018b5d, +0x00018b5b, +0x00018b58, +0x00018b55, +0x00018b53, +0x00018b50, +0x00018b4f, +0x00018b4c, +0x00018b4a, +0x00018b47, +0x00018b45, +0x00018b42, +0x00018b41, +0x00018b3e, +0x00018b3c, +0x00018b39, +0x00018b36, +0x00018b34, +0x00018b31, +0x00018b30, +0x00018b2d, +0x00018b2b, +0x00018b28, +0x00018b27, +0x00018b23, +0x00018b22, +0x00018b1f, +0x00018b1c, +0x00018b1a, +0x00018b17, +0x00018b16, +0x00018b13, +0x00018b11, +0x00018b0e, +0x00018b0c, +0x00018b09, +0x00018b08, +0x00018b05, +0x00018b02, +0x00018b00, +0x00018afd, +0x00018afb, +0x00018af8, +0x00018af7, +0x00018af4, +0x00018af2, +0x00018aef, +0x00018aed, +0x00018aea, +0x00018ae9, +0x00018ae6, +0x00018ae3, +0x00018ae1, +0x00018ade, +0x00018add, +0x00018ad9, +0x00018ad8, +0x00018ad5, +0x00018ad3, +0x00018ad0, +0x00018acf, +0x00018acc, +0x00018ac8, +0x00018ac7, +0x00018ac4, +0x00018ac2, +0x00018abf, +0x00018abe, +0x00018abb, +0x00018ab9, +0x00018ab6, +0x00018ab4, +0x00018ab1, +0x00018aae, +0x00018aad, +0x00018aaa, +0x00018aa8, +0x00018aa5, +0x00018aa3, +0x00018aa0, +0x00018a9f, +0x00018a9c, +0x00018a9a, +0x00018a97, +0x00018a96, +0x00018a92, +0x00018a8f, +0x00018a8e, +0x00018a8b, +0x00018a89, +0x00018a86, +0x00018a85, +0x00018a81, +0x00018a80, +0x00018a7d, +0x00018a7b, +0x00018a78, +0x00018a75, +0x00018a74, +0x00018a71, +0x00018a6f, +0x00018a6c, +0x00018a6a, +0x00018a67, +0x00018a66, +0x00018a63, +0x00018a61, +0x00018a5e, +0x00018a5b, +0x00018a59, +0x00018a56, +0x00018a55, +0x00018a52, +0x00018a50, +0x00018a4d, +0x00018a4b, +0x00018a48, +0x00018a47, +0x00018a44, +0x00018a42, +0x00018a3f, +0x00018a3c, +0x00018a3b, +0x00018a37, +0x00018a36, +0x00018a34, +0x00018a31, +0x00018a2e, +0x00018a2d, +0x00018a2a, +0x00018a28, +0x00018a25, +0x00018a23, +0x00018a20, +0x00018a1f, +0x00018a1c, +0x00018a1a, +0x00018a17, +0x00018a14, +0x00018a12, +0x00018a0f, +0x00018a0e, +0x00018a0b, +0x00018a09, +0x00018a06, +0x00018a05, +0x00018a02, +0x00018a00, +0x000189fd, +0x000189fb, +0x000189f8, +0x000189f5, +0x000189f4, +0x000189f1, +0x000189ef, +0x000189ec, +0x000189ea, +0x000189e7, +0x000189e6, +0x000189e3, +0x000189e1, +0x000189de, +0x000189dd, +0x000189da, +0x000189d6, +0x000189d5, +0x000189d2, +0x000189d0, +0x000189cd, +0x000189cc, +0x000189c9, +0x000189c7, +0x000189c4, +0x000189c2, +0x000189bf, +0x000189be, +0x000189bb, +0x000189b8, +0x000189b6, +0x000189b3, +0x000189b2, +0x000189ae, +0x000189ad, +0x000189aa, +0x000189a8, +0x000189a5, +0x000189a4, +0x000189a1, +0x0001899f, +0x0001899c, +0x00018999, +0x00018997, +0x00018994, +0x00018993, +0x00018990, +0x0001898e, +0x0001898b, +0x00018989, +0x00018986, +0x00018985, +0x00018982, +0x00018980, +0x0001897d, +0x0001897a, +0x00018979, +0x00018975, +0x00018974, +0x00018971, +0x0001896f, +0x0001896c, +0x0001896b, +0x00018968, +0x00018966, +0x00018963, +0x00018961, +0x0001895e, +0x0001895b, +0x0001895a, +0x00018957, +0x00018955, +0x00018952, +0x00018951, +0x0001894d, +0x0001894c, +0x00018949, +0x00018947, +0x00018944, +0x00018943, +0x00018940, +0x0001893d, +0x0001893b, +0x00018938, +0x00018936, +0x00018933, +0x00018932, +0x0001892f, +0x0001892d, +0x0001892a, +0x00018929, +0x00018925, +0x00018924, +0x00018921, +0x0001891e, +0x0001891c, +0x00018919, +0x00018918, +0x00018915, +0x00018913, +0x00018910, +0x0001890e, +0x0001890b, +0x0001890a, +0x00018907, +0x00018904, +0x00018901, +0x00018900, +0x000188fd, +0x000188fb, +0x000188f8, +0x000188f7, +0x000188f3, +0x000188f2, +0x000188ef, +0x000188ed, +0x000188ea, +0x000188e9, +0x000188e6, +0x000188e4, +0x000188e1, +0x000188e0, +0x000188dd, +0x000188d9, +0x000188d8, +0x000188d5, +0x000188d3, +0x000188d0, +0x000188cf, +0x000188cc, +0x000188ca, +0x000188c7, +0x000188c6, +0x000188c2, +0x000188c1, +0x000188be, +0x000188bc, +0x000188b9, +0x000188b6, +0x000188b5, +0x000188b2, +0x000188b0, +0x000188ad, +0x000188ac, +0x000188a8, +0x000188a7, +0x000188a4, +0x000188a2, +0x0001889f, +0x0001889e, +0x0001889b, +0x00018899, +0x00018896, +0x00018895, +0x00018891, +0x0001888e, +0x0001888d, +0x0001888a, +0x00018888, +0x00018885, +0x00018884, +0x00018881, +0x0001887f, +0x0001887c, +0x0001887b, +0x00018877, +0x00018876, +0x00018873, +0x00018871, +0x0001886e, +0x0001886b, +0x0001886a, +0x00018867, +0x00018865, +0x00018862, +0x00018860, +0x0001885d, +0x0001885c, +0x00018859, +0x00018857, +0x00018854, +0x00018853, +0x00018850, +0x0001884e, +0x0001884b, +0x0001884a, +0x00018846, +0x00018843, +0x00018842, +0x0001883f, +0x0001883d, +0x0001883a, +0x00018839, +0x00018836, +0x00018834, +0x00018831, +0x0001882f, +0x0001882c, +0x0001882b, +0x00018828, +0x00018826, +0x00018823, +0x00018820, +0x0001881f, +0x0001881c, +0x0001881a, +0x00018817, +0x00018815, +0x00018812, +0x00018811, +0x0001880e, +0x0001880c, +0x00018809, +0x00018808, +0x00018805, +0x00018803, +0x00018800, +0x000187fe, +0x000187fb, +0x000187f8, +0x000187f7, +0x000187f4, +0x000187f2, +0x000187ef, +0x000187ee, +0x000187eb, +0x000187e9, +0x000187e6, +0x000187e4, +0x000187e1, +0x000187e0, +0x000187dd, +0x000187db, +0x000187d7, +0x000187d6, +0x000187d3, +0x000187d1, +0x000187ce, +0x000187cd, +0x000187ca, +0x000187c8, +0x000187c5, +0x000187c4, +0x000187c0, +0x000187bd, +0x000187bc, +0x000187b9, +0x000187b7, +0x000187b4, +0x000187b3, +0x000187b0, +0x000187ae, +0x000187ab, +0x000187aa, +0x000187a6, +0x000187a5, +0x000187a2, +0x000187a0, +0x0001879d, +0x0001879c, +0x00018799, +0x00018796, +0x00018794, +0x00018791, +0x00018790, +0x0001878d, +0x0001878b, +0x00018788, +0x00018786, +0x00018783, +0x00018782, +0x0001877f, +0x0001877d, +0x0001877a, +0x00018779, +0x00018776, +0x00018774, +0x00018771, +0x0001876f, +0x0001876c, +0x00018769, +0x00018768, +0x00018765, +0x00018763, +0x00018760, +0x0001875f, +0x0001875c, +0x0001875a, +0x00018757, +0x00018756, +0x00018752, +0x00018751, +0x0001874e, +0x0001874c, +0x00018749, +0x00018748, +0x00018745, +0x00018743, +0x00018740, +0x0001873d, +0x0001873c, +0x00018739, +0x00018737, +0x00018734, +0x00018732, +0x0001872f, +0x0001872e, +0x0001872b, +0x00018729, +0x00018726, +0x00018725, +0x00018722, +0x00018720, +0x0001871d, +0x0001871b, +0x00018718, +0x00018715, +0x00018714, +0x00018711, +0x0001870f, +0x0001870c, +0x0001870b, +0x00018708, +0x00018706, +0x00018703, +0x00018702, +0x000186fe, +0x000186fd, +0x000186fa, +0x000186f8, +0x000186f5, +0x000186f4, +0x000186f1, +0x000186ef, +0x000186ec, +0x000186e9, +0x000186e8, +0x000186e5, +0x000186e3, +0x000186e0, +0x000186de, +0x000186db, +0x000186da, +0x000186d7, +0x000186d5, +0x000186d2, +0x000186d1, +0x000186ce, +0x000186cc, +0x000186c9, +0x000186c7, +0x000186c4, +0x000186c1, +0x000186c0, +0x000186bd, +0x000186bb, +0x000186b8, +0x000186b7, +0x000186b4, +0x000186b2, +0x000186af, +0x000186ae, +0x000186ab, +0x000186a8, +0x000186a6, +0x000186a3, +0x000186a1, +0x0001869e, +0x0001869d, +0x0001869a, +0x00018698, +0x00018695, +0x00018694, +0x00018691, +0x0001868f, +0x0001868c, +0x0001868b, +0x00018688, +0x00018686, +0x00018683, +0x00018681, +0x0001867e, +0x0001867d, +0x0001867a, +0x00018677, +0x00018675, +0x00018672, +0x00018671, +0x0001866e, +0x0001866c, +0x00018669, +0x00018668, +0x00018665, +0x00018663, +0x00018660, +0x0001865e, +0x0001865b, +0x0001865a, +0x00018657, +0x00018655, +0x00018652, +0x00018651, +0x0001864e, +0x0001864c, +0x00018649, +0x00018646, +0x00018645, +0x00018642, +0x00018640, +0x0001863d, +0x0001863b, +0x00018638, +0x00018637, +0x00018634, +0x00018632, +0x0001862f, +0x0001862e, +0x0001862b, +0x00018629, +0x00018626, +0x00018625, +0x00018622, +0x00018620, +0x0001861d, +0x0001861b, +0x00018618, +0x00018615, +0x00018614, +0x00018611, +0x0001860f, +0x0001860c, +0x0001860b, +0x00018608, +0x00018606, +0x00018603, +0x00018602, +0x000185fe, +0x000185fd, +0x000185fa, +0x000185f8, +0x000185f5, +0x000185f4, +0x000185f1, +0x000185ef, +0x000185ec, +0x000185eb, +0x000185e8, +0x000185e5, +0x000185e3, +0x000185e0, +0x000185de, +0x000185db, +0x000185da, +0x000185d7, +0x000185d5, +0x000185d2, +0x000185d1, +0x000185ce, +0x000185cc, +0x000185c9, +0x000185c8, +0x000185c5, +0x000185c3, +0x000185c0, +0x000185be, +0x000185bb, +0x000185ba, +0x000185b7, +0x000185b4, +0x000185b2, +0x000185af, +0x000185ae, +0x000185ab, +0x000185a9, +0x000185a6, +0x000185a5, +0x000185a2, +0x000185a0, +0x0001859d, +0x0001859b, +0x00018598, +0x00018597, +0x00018594, +0x00018592, +0x0001858f, +0x0001858e, +0x0001858b, +0x00018589, +0x00018586, +0x00018584, +0x00018581, +0x00018580, +0x0001857d, +0x0001857b, +0x00018578, +0x00018577, +0x00018573, +0x00018572, +0x0001856f, +0x0001856d, +0x0001856a, +0x00018569, +0x00018566, +0x00018563, +0x00018561, +0x0001855e, +0x0001855d, +0x0001855a, +0x00018558, +0x00018555, +0x00018554, +0x00018551, +0x0001854f, +0x0001854c, +0x0001854a, +0x00018547, +0x00018546, +0x00018543, +0x00018541, +0x0001853e, +0x0001853d, +0x0001853a, +0x00018538, +0x00018535, +0x00018534, +0x00018531, +0x0001852f, +0x0001852c, +0x00018529, +0x00018528, +0x00018524, +0x00018523, +0x00018520, +0x0001851e, +0x0001851b, +0x0001851a, +0x00018517, +0x00018515, +0x00018512, +0x00018511, +0x0001850e, +0x0001850c, +0x00018509, +0x00018508, +0x00018505, +0x00018503, +0x00018500, +0x000184fe, +0x000184fb, +0x000184fa, +0x000184f7, +0x000184f5, +0x000184f2, +0x000184f1, +0x000184ee, +0x000184eb, +0x000184e9, +0x000184e6, +0x000184e5, +0x000184e2, +0x000184e0, +0x000184dd, +0x000184dc, +0x000184d8, +0x000184d7, +0x000184d4, +0x000184d2, +0x000184cf, +0x000184ce, +0x000184cb, +0x000184c9, +0x000184c6, +0x000184c5, +0x000184c2, +0x000184c0, +0x000184bd, +0x000184bc, +0x000184b9, +0x000184b7, +0x000184b4, +0x000184b1, +0x000184af, +0x000184ac, +0x000184ab, +0x000184a8, +0x000184a6, +0x000184a3, +0x000184a2, +0x0001849f, +0x0001849d, +0x0001849a, +0x00018499, +0x00018496, +0x00018494, +0x00018491, +0x00018490, +0x0001848d, +0x0001848b, +0x00018488, +0x00018486, +0x00018483, +0x00018482, +0x0001847f, +0x0001847d, +0x0001847a, +0x00018477, +0x00018476, +0x00018473, +0x00018471, +0x0001846e, +0x0001846d, +0x0001846a, +0x00018468, +0x00018465, +0x00018463, +0x00018460, +0x0001845f, +0x0001845c, +0x00018459, +0x00018458, +0x00018455, +0x00018453, +0x00018450, +0x0001844f, +0x0001844c, +0x0001844a, +0x00018447, +0x00018446, +0x00018443, +0x00018441, +0x0001843e, +0x0001843d, +0x0001843a, +0x00018438, +0x00018435, +0x00018434, +0x00018431, +0x0001842f, +0x0001842c, +0x0001842a, +0x00018427, +0x00018426, +0x00018423, +0x00018421, +0x0001841e, +0x0001841d, +0x0001841a, +0x00018418, +0x00018415, +0x00018414, +0x00018411, +0x0001840e, +0x0001840c, +0x00018409, +0x00018408, +0x00018405, +0x00018403, +0x00018400, +0x000183fe, +0x000183fb, +0x000183fa, +0x000183f7, +0x000183f5, +0x000183f2, +0x000183f1, +0x000183ee, +0x000183ec, +0x000183e9, +0x000183e8, +0x000183e5, +0x000183e3, +0x000183e0, +0x000183df, +0x000183dc, +0x000183da, +0x000183d7, +0x000183d6, +0x000183d3, +0x000183d1, +0x000183ce, +0x000183cc, +0x000183c9, +0x000183c6, +0x000183c5, +0x000183c2, +0x000183c0, +0x000183bd, +0x000183bc, +0x000183b9, +0x000183b7, +0x000183b4, +0x000183b3, +0x000183b0, +0x000183ae, +0x000183ab, +0x000183aa, +0x000183a7, +0x000183a5, +0x000183a2, +0x000183a1, +0x0001839d, +0x0001839c, +0x00018399, +0x00018397, +0x00018394, +0x00018393, +0x00018390, +0x0001838e, +0x0001838b, +0x0001838a, +0x00018387, +0x00018385, +0x00018382, +0x00018381, +0x0001837e, +0x0001837b, +0x00018379, +0x00018376, +0x00018375, +0x00018372, +0x00018370, +0x0001836d, +0x0001836b, +0x00018368, +0x00018367, +0x00018364, +0x00018362, +0x0001835f, +0x0001835e, +0x0001835b, +0x00018359, +0x00018356, +0x00018355, +0x00018352, +0x00018350, +0x0001834d, +0x0001834c, +0x00018349, +0x00018347, +0x00018344, +0x00018343, +0x00018340, +0x0001833e, +0x0001833b, +0x00018339, +0x00018336, +0x00018335, +0x00018332, +0x00018330, +0x0001832d, +0x0001832c, +0x00018329, +0x00018327, +0x00018324, +0x00018323, +0x00018320, +0x0001831e, +0x0001831b, +0x0001831a, +0x00018317, +0x00018315, +0x00018312, +0x00018311, +0x0001830e, +0x0001830c, +0x00018309, +0x00018308, +0x00018305, +0x00018302, +0x00018300, +0x000182fd, +0x000182fb, +0x000182f8, +0x000182f7, +0x000182f4, +0x000182f2, +0x000182ef, +0x000182ee, +0x000182eb, +0x000182e9, +0x000182e6, +0x000182e5, +0x000182e2, +0x000182e0, +0x000182dd, +0x000182dc, +0x000182d9, +0x000182d7, +0x000182d4, +0x000182d3, +0x000182d0, +0x000182ce, +0x000182cb, +0x000182ca, +0x000182c7, +0x000182c5, +0x000182c2, +0x000182c1, +0x000182bd, +0x000182bc, +0x000182b9, +0x000182b7, +0x000182b4, +0x000182b3, +0x000182b0, +0x000182ae, +0x000182ab, +0x000182aa, +0x000182a7, +0x000182a5, +0x000182a2, +0x0001829f, +0x0001829e, +0x0001829b, +0x00018299, +0x00018296, +0x00018295, +0x00018292, +0x00018290, +0x0001828d, +0x0001828c, +0x00018289, +0x00018287, +0x00018284, +0x00018283, +0x00018280, +0x0001827e, +0x0001827b, +0x00018279, +0x00018276, +0x00018275, +0x00018272, +0x00018270, +0x0001826d, +0x0001826c, +0x00018269, +0x00018267, +0x00018264, +0x00018263, +0x00018260, +0x0001825e, +0x0001825b, +0x0001825a, +0x00018257, +0x00018255, +0x00018252, +0x00018251, +0x0001824e, +0x0001824c, +0x00018249, +0x00018248, +0x00018245, +0x00018242, +0x00018240, +0x0001823d, +0x0001823b, +0x00018238, +0x00018237, +0x00018234, +0x00018232, +0x0001822f, +0x0001822e, +0x0001822b, +0x00018229, +0x00018226, +0x00018225, +0x00018222, +0x00018220, +0x0001821d, +0x0001821c, +0x00018219, +0x00018217, +0x00018214, +0x00018214, +0x00018211, +0x0001820e, +0x0001820c, +0x00018209, +0x00018208, +0x00018205, +0x00018203, +0x00018200, +0x000181fe, +0x000181fb, +0x000181fa, +0x000181f7, +0x000181f5, +0x000181f2, +0x000181f1, +0x000181ee, +0x000181ec, +0x000181e9, +0x000181e8, +0x000181e5, +0x000181e3, +0x000181e0, +0x000181df, +0x000181dc, +0x000181da, +0x000181d7, +0x000181d6, +0x000181d3, +0x000181d1, +0x000181ce, +0x000181cd, +0x000181ca, +0x000181c8, +0x000181c5, +0x000181c4, +0x000181c1, +0x000181bf, +0x000181bc, +0x000181bb, +0x000181b8, +0x000181b6, +0x000181b3, +0x000181b2, +0x000181af, +0x000181ad, +0x000181aa, +0x000181a9, +0x000181a6, +0x000181a4, +0x000181a1, +0x000181a0, +0x0001819c, +0x0001819b, +0x00018198, +0x00018196, +0x00018193, +0x00018192, +0x0001818f, +0x0001818d, +0x0001818a, +0x00018189, +0x00018186, +0x00018184, +0x00018181, +0x0001817e, +0x0001817d, +0x0001817a, +0x00018178, +0x00018175, +0x00018174, +0x00018171, +0x0001816f, +0x0001816c, +0x0001816b, +0x00018168, +0x00018166, +0x00018163, +0x00018162, +0x0001815f, +0x0001815d, +0x0001815a, +0x00018159, +0x00018156, +0x00018154, +0x00018151, +0x00018150, +0x0001814d, +0x0001814b, +0x00018148, +0x00018147, +0x00018144, +0x00018142, +0x0001813f, +0x0001813d, +0x0001813a, +0x00018139, +0x00018136, +0x00018134, +0x00018131, +0x00018130, +0x0001812d, +0x0001812b, +0x00018128, +0x00018127, +0x00018124, +0x00018122, +0x0001811f, +0x0001811e, +0x0001811b, +0x00018119, +0x00018116, +0x00018115, +0x00018112, +0x00018110, +0x0001810d, +0x0001810c, +0x00018109, +0x00018107, +0x00018104, +0x00018103, +0x00018100, +0x000180fe, +0x000180fb, +0x000180fa, +0x000180f7, +0x000180f5, +0x000180f2, +0x000180f0, +0x000180ef, +0x000180ec, +0x000180ea, +0x000180e7, +0x000180e6, +0x000180e3, +0x000180e1, +0x000180de, +0x000180dd, +0x000180da, +0x000180d8, +0x000180d5, +0x000180d4, +0x000180d1, +0x000180cf, +0x000180cc, +0x000180cb, +0x000180c8, +0x000180c6, +0x000180c3, +0x000180c2, +0x000180bf, +0x000180bd, +0x000180ba, +0x000180b9, +0x000180b6, +0x000180b4, +0x000180b1, +0x000180b0, +0x000180ad, +0x000180ab, +0x000180a8, +0x000180a7, +0x000180a4, +0x000180a2, +0x0001809f, +0x0001809e, +0x0001809b, +0x00018099, +0x00018096, +0x00018095, +0x00018092, +0x00018090, +0x0001808d, +0x0001808c, +0x00018089, +0x00018087, +0x00018084, +0x00018083, +0x00018080, +0x0001807e, +0x0001807b, +0x0001807a, +0x00018077, +0x00018075, +0x00018072, +0x00018071, +0x0001806e, +0x0001806c, +0x00018069, +0x00018068, +0x00018065, +0x00018063, +0x00018060, +0x0001805f, +0x0001805c, +0x0001805a, +0x00018057, +0x00018056, +0x00018053, +0x00018051, +0x0001804e, +0x0001804d, +0x0001804a, +0x00018048, +0x00018045, +0x00018044, +0x00018041, +0x0001803f, +0x0001803c, +0x0001803b, +0x00018038, +0x00018036, +0x00018033, +0x00018032, +0x0001802f, +0x0001802d, +0x0001802a, +0x00018029, +0x00018026, +0x00018024, +0x00018021, +0x00018020, +0x0001801d, +0x0001801b, +0x00018018, +0x00018017, +0x00018014, +0x00018012, +0x0001800f, +0x0001800e, +0x0001800b, +0x00018009, +0x00018006, +0x00018005, +0x00018002, +0x00018000, +0x00017ffd, +0x00017ffc, +0x00017ff9, +0x00017ff7, +0x00017ff4, +0x00017ff3, +0x00017ff0, +0x00017fee, +0x00017feb, +0x00017fea, +0x00017fe7, +0x00017fe5, +0x00017fe2, +0x00017fe1, +0x00017fde, +0x00017fdc, +0x00017fd9, +0x00017fd8, +0x00017fd5, +0x00017fd3, +0x00017fd0, +0x00017fcd, +0x00017fcb, +0x00017fc8, +0x00017fc7, +0x00017fc4, +0x00017fc2, +0x00017fc0, +0x00017fbe, +0x00017fbb, +0x00017fba, +0x00017fb7, +0x00017fb5, +0x00017fb2, +0x00017fb1, +0x00017fae, +0x00017fac, +0x00017fa9, +0x00017fa8, +0x00017fa5, +0x00017fa3, +0x00017fa0, +0x00017f9f, +0x00017f9c, +0x00017f9a, +0x00017f97, +0x00017f96, +0x00017f93, +0x00017f91, +0x00017f8e, +0x00017f8d, +0x00017f8a, +0x00017f88, +0x00017f85, +0x00017f84, +0x00017f81, +0x00017f7f, +0x00017f7c, +0x00017f7b, +0x00017f78, +0x00017f76, +0x00017f73, +0x00017f72, +0x00017f6f, +0x00017f6d, +0x00017f6a, +0x00017f69, +0x00017f66, +0x00017f64, +0x00017f61, +0x00017f60, +0x00017f5d, +0x00017f5b, +0x00017f58, +0x00017f57, +0x00017f54, +0x00017f52, +0x00017f4f, +0x00017f4e, +0x00017f4b, +0x00017f49, +0x00017f46, +0x00017f45, +0x00017f42, +0x00017f40, +0x00017f3f, +0x00017f3c, +0x00017f3a, +0x00017f37, +0x00017f36, +0x00017f33, +0x00017f31, +0x00017f2e, +0x00017f2d, +0x00017f2a, +0x00017f28, +0x00017f25, +0x00017f24, +0x00017f21, +0x00017f1f, +0x00017f1c, +0x00017f1b, +0x00017f18, +0x00017f16, +0x00017f13, +0x00017f12, +0x00017f0f, +0x00017f0d, +0x00017f0a, +0x00017f09, +0x00017f06, +0x00017f04, +0x00017f01, +0x00017f00, +0x00017efd, +0x00017efc, +0x00017ef9, +0x00017ef7, +0x00017ef4, +0x00017ef3, +0x00017ef0, +0x00017eee, +0x00017eeb, +0x00017eea, +0x00017ee7, +0x00017ee5, +0x00017ee2, +0x00017ee1, +0x00017ede, +0x00017edc, +0x00017ed9, +0x00017ed8, +0x00017ed5, +0x00017ed3, +0x00017ed0, +0x00017ecf, +0x00017ecc, +0x00017eca, +0x00017ec7, +0x00017ec6, +0x00017ec3, +0x00017ec1, +0x00017ebe, +0x00017ebd, +0x00017eba, +0x00017eb8, +0x00017eb5, +0x00017eb4, +0x00017eb2, +0x00017eaf, +0x00017ead, +0x00017eaa, +0x00017ea9, +0x00017ea6, +0x00017ea4, +0x00017ea1, +0x00017ea0, +0x00017e9d, +0x00017e9b, +0x00017e98, +0x00017e97, +0x00017e94, +0x00017e92, +0x00017e8f, +0x00017e8e, +0x00017e8b, +0x00017e89, +0x00017e86, +0x00017e85, +0x00017e82, +0x00017e80, +0x00017e7d, +0x00017e7c, +0x00017e79, +0x00017e77, +0x00017e74, +0x00017e73, +0x00017e70, +0x00017e6e, +0x00017e6b, +0x00017e6a, +0x00017e67, +0x00017e65, +0x00017e62, +0x00017e61, +0x00017e5e, +0x00017e5d, +0x00017e5a, +0x00017e58, +0x00017e55, +0x00017e54, +0x00017e51, +0x00017e4f, +0x00017e4c, +0x00017e4b, +0x00017e48, +0x00017e46, +0x00017e43, +0x00017e42, +0x00017e3f, +0x00017e3d, +0x00017e3a, +0x00017e39, +0x00017e36, +0x00017e34, +0x00017e31, +0x00017e30, +0x00017e2d, +0x00017e2b, +0x00017e28, +0x00017e27, +0x00017e24, +0x00017e22, +0x00017e21, +0x00017e1e, +0x00017e1c, +0x00017e19, +0x00017e18, +0x00017e15, +0x00017e13, +0x00017e10, +0x00017e0f, +0x00017e0c, +0x00017e0a, +0x00017e07, +0x00017e06, +0x00017e03, +0x00017e01, +0x00017dff, +0x00017dfd, +0x00017dfa, +0x00017df9, +0x00017df6, +0x00017df4, +0x00017df1, +0x00017df0, +0x00017ded, +0x00017deb, +0x00017de8, +0x00017de7, +0x00017de4, +0x00017de2, +0x00017ddf, +0x00017dde, +0x00017ddb, +0x00017dd9, +0x00017dd6, +0x00017dd5, +0x00017dd2, +0x00017dd0, +0x00017dcd, +0x00017dcc, +0x00017dc9, +0x00017dc7, +0x00017dc4, +0x00017dc3, +0x00017dc0, +0x00017dbe, +0x00017dbb, +0x00017dba, +0x00017db7, +0x00017db5, +0x00017db2, +0x00017db1, +0x00017dae, +0x00017dac, +0x00017da9, +0x00017da8, +0x00017da5, +0x00017da3, +0x00017da1, +0x00017d9f, +0x00017d9c, +0x00017d9b, +0x00017d98, +0x00017d96, +0x00017d93, +0x00017d92, +0x00017d8f, +0x00017d8d, +0x00017d8a, +0x00017d89, +0x00017d86, +0x00017d84, +0x00017d81, +0x00017d80, +0x00017d7d, +0x00017d7c, +0x00017d79, +0x00017d77, +0x00017d74, +0x00017d73, +0x00017d70, +0x00017d6e, +0x00017d6b, +0x00017d6a, +0x00017d67, +0x00017d65, +0x00017d64, +0x00017d61, +0x00017d5f, +0x00017d5c, +0x00017d5b, +0x00017d58, +0x00017d56, +0x00017d53, +0x00017d52, +0x00017d4f, +0x00017d4d, +0x00017d4a, +0x00017d49, +0x00017d46, +0x00017d44, +0x00017d41, +0x00017d40, +0x00017d3d, +0x00017d3c, +0x00017d39, +0x00017d37, +0x00017d34, +0x00017d33, +0x00017d30, +0x00017d2e, +0x00017d2b, +0x00017d2a, +0x00017d27, +0x00017d25, +0x00017d22, +0x00017d21, +0x00017d1e, +0x00017d1c, +0x00017d19, +0x00017d18, +0x00017d15, +0x00017d13, +0x00017d10, +0x00017d0f, +0x00017d0c, +0x00017d0a, +0x00017d07, +0x00017d06, +0x00017d04, +0x00017d01, +0x00017d00, +0x00017cfd, +0x00017cfc, +0x00017cf9, +0x00017cf7, +0x00017cf4, +0x00017cf3, +0x00017cf0, +0x00017cee, +0x00017ceb, +0x00017cea, +0x00017ce7, +0x00017ce5, +0x00017ce2, +0x00017ce1, +0x00017cde, +0x00017cdc, +0x00017cd9, +0x00017cd8, +0x00017cd5, +0x00017cd3, +0x00017cd0, +0x00017ccf, +0x00017ccc, +0x00017cca, +0x00017cc7, +0x00017cc6, +0x00017cc3, +0x00017cc1, +0x00017cbf, +0x00017cbd, +0x00017cba, +0x00017cb9, +0x00017cb6, +0x00017cb4, +0x00017cb1, +0x00017cb0, +0x00017cad, +0x00017cab, +0x00017ca8, +0x00017ca7, +0x00017ca5, +0x00017ca2, +0x00017ca1, +0x00017c9e, +0x00017c9c, +0x00017c99, +0x00017c98, +0x00017c95, +0x00017c93, +0x00017c90, +0x00017c8f, +0x00017c8c, +0x00017c8a, +0x00017c87, +0x00017c86, +0x00017c83, +0x00017c81, +0x00017c7f, +0x00017c7d, +0x00017c7a, +0x00017c78, +0x00017c77, +0x00017c74, +0x00017c72, +0x00017c6f, +0x00017c6e, +0x00017c6b, +0x00017c69, +0x00017c66, +0x00017c65, +0x00017c62, +0x00017c60, +0x00017c5e, +0x00017c5c, +0x00017c59, +0x00017c58, +0x00017c55, +0x00017c53, +0x00017c50, +0x00017c4f, +0x00017c4c, +0x00017c4a, +0x00017c47, +0x00017c46, +0x00017c43, +0x00017c41, +0x00017c3e, +0x00017c3d, +0x00017c3a, +0x00017c38, +0x00017c35, +0x00017c34, +0x00017c32, +0x00017c30, +0x00017c2e, +0x00017c2b, +0x00017c2a, +0x00017c27, +0x00017c25, +0x00017c22, +0x00017c21, +0x00017c1e, +0x00017c1c, +0x00017c19, +0x00017c18, +0x00017c15, +0x00017c13, +0x00017c10, +0x00017c0f, +0x00017c0c, +0x00017c0a, +0x00017c07, +0x00017c06, +0x00017c03, +0x00017c01, +0x00017bff, +0x00017bfd, +0x00017bfa, +0x00017bf9, +0x00017bf6, +0x00017bf4, +0x00017bf1, +0x00017bf0, +0x00017bed, +0x00017beb, +0x00017bea, +0x00017be7, +0x00017be5, +0x00017be2, +0x00017be1, +0x00017bde, +0x00017bdc, +0x00017bd9, +0x00017bd8, +0x00017bd5, +0x00017bd3, +0x00017bd1, +0x00017bcf, +0x00017bcc, +0x00017bcb, +0x00017bc8, +0x00017bc6, +0x00017bc3, +0x00017bc2, +0x00017bbf, +0x00017bbd, +0x00017bba, +0x00017bb9, +0x00017bb6, +0x00017bb4, +0x00017bb1, +0x00017bb0, +0x00017bad, +0x00017bab, +0x00017ba8, +0x00017ba7, +0x00017ba5, +0x00017ba2, +0x00017ba1, +0x00017b9e, +0x00017b9d, +0x00017b9a, +0x00017b98, +0x00017b95, +0x00017b94, +0x00017b91, +0x00017b8f, +0x00017b8c, +0x00017b8b, +0x00017b88, +0x00017b86, +0x00017b83, +0x00017b82, +0x00017b7f, +0x00017b7d, +0x00017b7a, +0x00017b79, +0x00017b76, +0x00017b74, +0x00017b72, +0x00017b70, +0x00017b6d, +0x00017b6c, +0x00017b69, +0x00017b67, +0x00017b64, +0x00017b63, +0x00017b60, +0x00017b5f, +0x00017b5c, +0x00017b5a, +0x00017b57, +0x00017b56, +0x00017b53, +0x00017b51, +0x00017b4e, +0x00017b4d, +0x00017b4a, +0x00017b49, +0x00017b46, +0x00017b44, +0x00017b43, +0x00017b40, +0x00017b3e, +0x00017b3b, +0x00017b3a, +0x00017b37, +0x00017b35, +0x00017b32, +0x00017b31, +0x00017b2e, +0x00017b2c, +0x00017b29, +0x00017b28, +0x00017b25, +0x00017b24, +0x00017b21, +0x00017b1f, +0x00017b1c, +0x00017b1b, +0x00017b18, +0x00017b16, +0x00017b13, +0x00017b12, +0x00017b0f, +0x00017b0d, +0x00017b0a, +0x00017b09, +0x00017b07, +0x00017b04, +0x00017b03, +0x00017b00, +0x00017aff, +0x00017afc, +0x00017afa, +0x00017af7, +0x00017af6, +0x00017af3, +0x00017af1, +0x00017aee, +0x00017aed, +0x00017aea, +0x00017ae8, +0x00017ae5, +0x00017ae4, +0x00017ae1, +0x00017adf, +0x00017adc, +0x00017adb, +0x00017ad8, +0x00017ad7, +0x00017ad4, +0x00017ad2, +0x00017ad1, +0x00017ace, +0x00017acc, +0x00017ac9, +0x00017ac8, +0x00017ac5, +0x00017ac3, +0x00017ac0, +0x00017abf, +0x00017abc, +0x00017aba, +0x00017ab7, +0x00017ab6, +0x00017ab3, +0x00017ab2, +0x00017aaf, +0x00017aad, +0x00017aaa, +0x00017aa9, +0x00017aa6, +0x00017aa4, +0x00017aa1, +0x00017aa0, +0x00017a9d, +0x00017a9b, +0x00017a9a, +0x00017a97, +0x00017a95, +0x00017a92, +0x00017a91, +0x00017a8e, +0x00017a8d, +0x00017a8a, +0x00017a88, +0x00017a85, +0x00017a84, +0x00017a81, +0x00017a7f, +0x00017a7c, +0x00017a7b, +0x00017a78, +0x00017a76, +0x00017a73, +0x00017a72, +0x00017a6f, +0x00017a6d, +0x00017a6a, +0x00017a69, +0x00017a66, +0x00017a65, +0x00017a62, +0x00017a60, +0x00017a5f, +0x00017a5c, +0x00017a5a, +0x00017a57, +0x00017a56, +0x00017a53, +0x00017a51, +0x00017a4e, +0x00017a4d, +0x00017a4a, +0x00017a48, +0x00017a47, +0x00017a44, +0x00017a42, +0x00017a3f, +0x00017a3e, +0x00017a3b, +0x00017a3a, +0x00017a37, +0x00017a35, +0x00017a32, +0x00017a31, +0x00017a2e, +0x00017a2c, +0x00017a29, +0x00017a28, +0x00017a25, +0x00017a23, +0x00017a20, +0x00017a1f, +0x00017a1c, +0x00017a1b, +0x00017a18, +0x00017a16, +0x00017a15, +0x00017a12, +0x00017a10, +0x00017a0d, +0x00017a0c, +0x00017a09, +0x00017a07, +0x00017a04, +0x00017a03, +0x00017a00, +0x000179ff, +0x000179fc, +0x000179fa, +0x000179f7, +0x000179f6, +0x000179f3, +0x000179f1, +0x000179ee, +0x000179ed, +0x000179ea, +0x000179e8, +0x000179e7, +0x000179e4, +0x000179e2, +0x000179e0, +0x000179de, +0x000179db, +0x000179da, +0x000179d7, +0x000179d5, +0x000179d2, +0x000179d1, +0x000179ce, +0x000179cc, +0x000179c9, +0x000179c8, +0x000179c5, +0x000179c3, +0x000179c1, +0x000179bf, +0x000179bc, +0x000179bb, +0x000179b9, +0x000179b6, +0x000179b5, +0x000179b2, +0x000179b0, +0x000179ad, +0x000179ac, +0x000179a9, +0x000179a7, +0x000179a4, +0x000179a3, +0x000179a0, +0x0001799f, +0x0001799c, +0x0001799a, +0x00017997, +0x00017996, +0x00017993, +0x00017991, +0x0001798e, +0x0001798d, +0x0001798b, +0x00017988, +0x00017987, +0x00017984, +0x00017982, +0x00017980, +0x0001797e, +0x0001797b, +0x0001797a, +0x00017977, +0x00017975, +0x00017972, +0x00017971, +0x0001796e, +0x0001796c, +0x00017969, +0x00017968, +0x00017965, +0x00017963, +0x00017961, +0x0001795f, +0x0001795e, +0x0001795b, +0x00017959, +0x00017956, +0x00017955, +0x00017952, +0x00017950, +0x0001794d, +0x0001794c, +0x00017949, +0x00017947, +0x00017944, +0x00017943, +0x00017940, +0x0001793f, +0x0001793c, +0x0001793a, +0x00017937, +0x00017936, +0x00017933, +0x00017931, +0x0001792f, +0x0001792e, +0x0001792b, +0x00017929, +0x00017926, +0x00017925, +0x00017922, +0x00017920, +0x0001791d, +0x0001791c, +0x0001791b, +0x00017918, +0x00017916, +0x00017913, +0x00017912, +0x0001790f, +0x0001790d, +0x0001790a, +0x00017909, +0x00017906, +0x00017904, +0x00017901, +0x00017900, +0x000178fd, +0x000178fc, +0x000178f9, +0x000178f7, +0x000178f4, +0x000178f3, +0x000178f1, +0x000178ee, +0x000178ed, +0x000178ea, +0x000178e8, +0x000178e5, +0x000178e4, +0x000178e1, +0x000178e0, +0x000178dd, +0x000178db, +0x000178d8, +0x000178d7, +0x000178d4, +0x000178d2, +0x000178cf, +0x000178ce, +0x000178cc, +0x000178ca, +0x000178c8, +0x000178c5, +0x000178c4, +0x000178c1, +0x000178bf, +0x000178bc, +0x000178bb, +0x000178b8, +0x000178b6, +0x000178b3, +0x000178b2, +0x000178af, +0x000178ae, +0x000178ab, +0x000178a9, +0x000178a6, +0x000178a5, +0x000178a3, +0x000178a0, +0x0001789f, +0x0001789c, +0x0001789a, +0x00017897, +0x00017896, +0x00017893, +0x00017892, +0x0001788f, +0x0001788d, +0x0001788a, +0x00017889, +0x00017886, +0x00017884, +0x00017881, +0x00017880, +0x0001787d, +0x0001787b, +0x0001787a, +0x00017877, +0x00017876, +0x00017873, +0x00017871, +0x0001786e, +0x0001786d, +0x0001786a, +0x00017868, +0x00017865, +0x00017864, +0x00017861, +0x0001785f, +0x0001785d, +0x0001785b, +0x00017858, +0x00017857, +0x00017855, +0x00017852, +0x00017851, +0x0001784e, +0x0001784c, +0x00017849, +0x00017848, +0x00017845, +0x00017844, +0x00017841, +0x0001783f, +0x0001783c, +0x0001783b, +0x00017838, +0x00017836, +0x00017833, +0x00017832, +0x0001782f, +0x0001782d, +0x0001782c, +0x00017829, +0x00017828, +0x00017825, +0x00017823, +0x00017820, +0x0001781f, +0x0001781c, +0x0001781a, +0x00017819, +0x00017816, +0x00017815, +0x00017812, +0x00017810, +0x0001780d, +0x0001780c, +0x00017809, +0x00017807, +0x00017804, +0x00017803, +0x00017800, +0x000177ff, +0x000177fc, +0x000177fa, +0x000177f9, +0x000177f6, +0x000177f4, +0x000177f1, +0x000177f0, +0x000177ed, +0x000177eb, +0x000177e9, +0x000177e7, +0x000177e4, +0x000177e3, +0x000177e0, +0x000177de, +0x000177db, +0x000177da, +0x000177d7, +0x000177d5, +0x000177d4, +0x000177d1, +0x000177d0, +0x000177cd, +0x000177cb, +0x000177c8, +0x000177c7, +0x000177c4, +0x000177c2, +0x000177bf, +0x000177be, +0x000177bb, +0x000177ba, +0x000177b7, +0x000177b5, +0x000177b4, +0x000177b1, +0x000177af, +0x000177ac, +0x000177ab, +0x000177a8, +0x000177a6, +0x000177a3, +0x000177a2, +0x0001779f, +0x0001779e, +0x0001779b, +0x00017799, +0x00017796, +0x00017795, +0x00017792, +0x00017790, +0x0001778f, +0x0001778c, +0x0001778b, +0x00017788, +0x00017786, +0x00017783, +0x00017782, +0x0001777f, +0x0001777d, +0x0001777a, +0x00017779, +0x00017776, +0x00017774, +0x00017772, +0x00017770, +0x0001776f, +0x0001776c, +0x0001776a, +0x00017767, +0x00017766, +0x00017763, +0x00017761, +0x0001775e, +0x0001775d, +0x0001775a, +0x00017759, +0x00017756, +0x00017754, +0x00017751, +0x00017750, +0x0001774d, +0x0001774b, +0x0001774a, +0x00017747, +0x00017745, +0x00017743, +0x00017741, +0x0001773e, +0x0001773d, +0x0001773a, +0x00017738, +0x00017735, +0x00017734, +0x00017731, +0x0001772f, +0x0001772d, +0x0001772b, +0x0001772a, +0x00017727, +0x00017725, +0x00017722, +0x00017721, +0x0001771e, +0x0001771c, +0x00017719, +0x00017718, +0x00017715, +0x00017714, +0x00017711, +0x0001770f, +0x0001770c, +0x0001770b, +0x00017708, +0x00017707, +0x00017704, +0x00017703, +0x00017700, +0x000176fe, +0x000176fb, +0x000176fa, +0x000176f7, +0x000176f5, +0x000176f3, +0x000176f1, +0x000176ee, +0x000176ed, +0x000176eb, +0x000176e8, +0x000176e7, +0x000176e4, +0x000176e2, +0x000176e0, +0x000176de, +0x000176db, +0x000176da, +0x000176d7, +0x000176d5, +0x000176d2, +0x000176d1, +0x000176cf, +0x000176cd, +0x000176cb, +0x000176c8, +0x000176c7, +0x000176c4, +0x000176c2, +0x000176bf, +0x000176be, +0x000176bb, +0x000176ba, +0x000176b7, +0x000176b5, +0x000176b4, +0x000176b1, +0x000176af, +0x000176ac, +0x000176ab, +0x000176a8, +0x000176a7, +0x000176a4, +0x000176a2, +0x0001769f, +0x0001769e, +0x0001769b, +0x00017699, +0x00017698, +0x00017695, +0x00017694, +0x00017691, +0x0001768f, +0x0001768c, +0x0001768b, +0x00017688, +0x00017686, +0x00017683, +0x00017682, +0x0001767f, +0x0001767e, +0x0001767c, +0x00017679, +0x00017678, +0x00017675, +0x00017673, +0x00017670, +0x0001766f, +0x0001766c, +0x0001766b, +0x00017668, +0x00017666, +0x00017663, +0x00017662, +0x00017660, +0x0001765e, +0x0001765c, +0x00017659, +0x00017658, +0x00017655, +0x00017653, +0x00017650, +0x0001764f, +0x0001764c, +0x0001764b, +0x00017648, +0x00017646, +0x00017645, +0x00017642, +0x00017640, +0x0001763d, +0x0001763c, +0x00017639, +0x00017638, +0x00017635, +0x00017633, +0x00017630, +0x0001762f, +0x0001762c, +0x0001762a, +0x00017629, +0x00017626, +0x00017625, +0x00017622, +0x00017620, +0x0001761d, +0x0001761c, +0x00017619, +0x00017617, +0x00017614, +0x00017613, +0x00017610, +0x0001760f, +0x0001760d, +0x0001760a, +0x00017609, +0x00017606, +0x00017604, +0x00017601, +0x00017600, +0x000175fd, +0x000175fc, +0x000175f9, +0x000175f7, +0x000175f5, +0x000175f2, +0x000175f0, +0x000175ed, +0x000175ec, +0x000175e9, +0x000175e8, +0x000175e6, +0x000175e3, +0x000175e2, +0x000175df, +0x000175dd, +0x000175db, +0x000175d9, +0x000175d6, +0x000175d5, +0x000175d2, +0x000175d0, +0x000175cf, +0x000175cc, +0x000175cb, +0x000175c8, +0x000175c6, +0x000175c3, +0x000175c2, +0x000175bf, +0x000175bd, +0x000175bb, +0x000175b9, +0x000175b6, +0x000175b5, +0x000175b3, +0x000175b0, +0x000175af, +0x000175ac, +0x000175aa, +0x000175a8, +0x000175a6, +0x000175a3, +0x000175a2, +0x0001759f, +0x0001759d, +0x0001759c, +0x00017599, +0x00017598, +0x00017595, +0x00017593, +0x00017590, +0x0001758f, +0x0001758c, +0x0001758a, +0x00017588, +0x00017586, +0x00017585, +0x00017582, +0x00017580, +0x0001757d, +0x0001757c, +0x00017579, +0x00017577, +0x00017575, +0x00017573, +0x00017570, +0x0001756f, +0x0001756d, +0x0001756a, +0x00017569, +0x00017566, +0x00017565, +0x00017562, +0x00017560, +0x0001755d, +0x0001755c, +0x00017559, +0x00017557, +0x00017555, +0x00017553, +0x00017552, +0x0001754f, +0x0001754d, +0x0001754a, +0x00017549, +0x00017546, +0x00017544, +0x00017542, +0x00017540, +0x0001753d, +0x0001753c, +0x0001753a, +0x00017537, +0x00017536, +0x00017533, +0x00017532, +0x0001752f, +0x0001752d, +0x0001752a, +0x00017529, +0x00017526, +0x00017524, +0x00017523, +0x00017520, +0x0001751f, +0x0001751c, +0x0001751a, +0x00017517, +0x00017516, +0x00017513, +0x00017511, +0x0001750f, +0x0001750d, +0x0001750a, +0x00017509, +0x00017507, +0x00017504, +0x00017503, +0x00017500, +0x000174ff, +0x000174fc, +0x000174fa, +0x000174f7, +0x000174f6, +0x000174f3, +0x000174f1, +0x000174f0, +0x000174ed, +0x000174ec, +0x000174e9, +0x000174e7, +0x000174e4, +0x000174e3, +0x000174e0, +0x000174de, +0x000174db, +0x000174da, +0x000174d7, +0x000174d6, +0x000174d3, +0x000174d1, +0x000174ce, +0x000174cd, +0x000174cb, +0x000174c9, +0x000174c7, +0x000174c4, +0x000174c3, +0x000174c0, +0x000174be, +0x000174bb, +0x000174ba, +0x000174b7, +0x000174b6, +0x000174b4, +0x000174b1, +0x000174b0, +0x000174ad, +0x000174ab, +0x000174a9, +0x000174a7, +0x000174a4, +0x000174a3, +0x000174a1, +0x0001749e, +0x0001749d, +0x0001749a, +0x00017499, +0x00017496, +0x00017494, +0x00017491, +0x00017490, +0x0001748d, +0x0001748c, +0x0001748a, +0x00017487, +0x00017486, +0x00017483, +0x00017481, +0x0001747e, +0x0001747d, +0x0001747a, +0x00017479, +0x00017476, +0x00017474, +0x00017473, +0x00017470, +0x0001746e, +0x0001746c, +0x0001746a, +0x00017467, +0x00017466, +0x00017463, +0x00017461, +0x0001745e, +0x0001745d, +0x0001745c, +0x00017459, +0x00017457, +0x00017454, +0x00017453, +0x00017450, +0x0001744e, +0x0001744c, +0x0001744a, +0x00017447, +0x00017446, +0x00017444, +0x00017441, +0x00017440, +0x0001743d, +0x0001743c, +0x00017439, +0x00017437, +0x00017434, +0x00017433, +0x00017430, +0x0001742f, +0x0001742d, +0x0001742a, +0x00017429, +0x00017426, +0x00017424, +0x00017421, +0x00017420, +0x0001741d, +0x0001741c, +0x0001741a, +0x00017417, +0x00017416, +0x00017413, +0x00017411, +0x0001740f, +0x0001740d, +0x0001740a, +0x00017409, +0x00017406, +0x00017404, +0x00017403, +0x00017400, +0x000173ff, +0x000173fc, +0x000173fa, +0x000173f7, +0x000173f6, +0x000173f3, +0x000173f1, +0x000173ef, +0x000173ed, +0x000173ec, +0x000173e9, +0x000173e7, +0x000173e4, +0x000173e3, +0x000173e0, +0x000173df, +0x000173dc, +0x000173da, +0x000173d7, +0x000173d5, +0x000173d4, +0x000173d1, +0x000173cf, +0x000173cc, +0x000173cb, +0x000173c9, +0x000173c7, +0x000173c5, +0x000173c2, +0x000173c1, +0x000173be, +0x000173bc, +0x000173ba, +0x000173b8, +0x000173b7, +0x000173b4, +0x000173b2, +0x000173af, +0x000173ae, +0x000173ab, +0x000173aa, +0x000173a7, +0x000173a5, +0x000173a2, +0x000173a1, +0x0001739f, +0x0001739d, +0x0001739b, +0x00017398, +0x00017397, +0x00017394, +0x00017392, +0x0001738f, +0x0001738e, +0x0001738d, +0x0001738a, +0x00017388, +0x00017385, +0x00017384, +0x00017381, +0x00017380, +0x0001737d, +0x0001737b, +0x00017378, +0x00017377, +0x00017375, +0x00017372, +0x00017371, +0x0001736e, +0x0001736d, +0x0001736a, +0x00017368, +0x00017365, +0x00017364, +0x00017363, +0x00017360, +0x0001735e, +0x0001735b, +0x0001735a, +0x00017357, +0x00017356, +0x00017353, +0x00017351, +0x00017350, +0x0001734d, +0x0001734b, +0x00017348, +0x00017347, +0x00017344, +0x00017343, +0x00017340, +0x0001733e, +0x0001733b, +0x0001733a, +0x00017339, +0x00017336, +0x00017334, +0x00017331, +0x00017330, +0x0001732d, +0x0001732b, +0x00017329, +0x00017327, +0x00017326, +0x00017323, +0x00017321, +0x0001731e, +0x0001731d, +0x0001731a, +0x00017319, +0x00017316, +0x00017314, +0x00017311, +0x00017310, +0x0001730e, +0x0001730c, +0x0001730a, +0x00017307, +0x00017306, +0x00017303, +0x00017301, +0x000172ff, +0x000172fd, +0x000172fc, +0x000172f9, +0x000172f7, +0x000172f4, +0x000172f3, +0x000172f0, +0x000172ef, +0x000172ec, +0x000172ea, +0x000172e7, +0x000172e6, +0x000172e4, +0x000172e2, +0x000172e0, +0x000172dd, +0x000172dc, +0x000172d9, +0x000172d7, +0x000172d5, +0x000172d3, +0x000172d2, +0x000172cf, +0x000172cd, +0x000172ca, +0x000172c9, +0x000172c6, +0x000172c5, +0x000172c2, +0x000172c0, +0x000172bd, +0x000172bc, +0x000172b9, +0x000172b8, +0x000172b5, +0x000172b3, +0x000172b2, +0x000172af, +0x000172ad, +0x000172ab, +0x000172a9, +0x000172a6, +0x000172a5, +0x000172a2, +0x000172a0, +0x0001729f, +0x0001729c, +0x0001729b, +0x00017298, +0x00017296, +0x00017293, +0x00017292, +0x0001728f, +0x0001728e, +0x0001728c, +0x00017289, +0x00017288, +0x00017285, +0x00017284, +0x00017281, +0x0001727f, +0x0001727c, +0x0001727b, +0x00017279, +0x00017277, +0x00017275, +0x00017272, +0x00017271, +0x0001726e, +0x0001726c, +0x0001726a, +0x00017268, +0x00017267, +0x00017264, +0x00017262, +0x0001725f, +0x0001725e, +0x0001725b, +0x0001725a, +0x00017257, +0x00017255, +0x00017254, +0x00017251, +0x0001724f, +0x0001724d, +0x0001724b, +0x00017248, +0x00017247, +0x00017244, +0x00017242, +0x00017241, +0x0001723e, +0x0001723d, +0x0001723a, +0x00017238, +0x00017235, +0x00017234, +0x00017231, +0x00017230, +0x0001722e, +0x0001722b, +0x0001722a, +0x00017227, +0x00017226, +0x00017223, +0x00017221, +0x0001721e, +0x0001721d, +0x0001721b, +0x00017219, +0x00017217, +0x00017214, +0x00017213, +0x00017210, +0x0001720e, +0x0001720c, +0x0001720a, +0x00017209, +0x00017206, +0x00017204, +0x00017201, +0x00017200, +0x000171fd, +0x000171fc, +0x000171f9, +0x000171f7, +0x000171f6, +0x000171f3, +0x000171f2, +0x000171ef, +0x000171ed, +0x000171ea, +0x000171e9, +0x000171e6, +0x000171e5, +0x000171e3, +0x000171e0, +0x000171df, +0x000171dc, +0x000171da, +0x000171d8, +0x000171d6, +0x000171d3, +0x000171d2, +0x000171d0, +0x000171cd, +0x000171cc, +0x000171c9, +0x000171c8, +0x000171c5, +0x000171c3, +0x000171c0, +0x000171bf, +0x000171bd, +0x000171ba, +0x000171b9, +0x000171b6, +0x000171b4, +0x000171b3, +0x000171b0, +0x000171ae, +0x000171ac, +0x000171aa, +0x000171a7, +0x000171a6, +0x000171a3, +0x000171a1, +0x000171a0, +0x0001719d, +0x0001719c, +0x00017199, +0x00017197, +0x00017194, +0x00017193, +0x00017190, +0x0001718f, +0x0001718d, +0x0001718a, +0x00017189, +0x00017186, +0x00017185, +0x00017182, +0x00017180, +0x0001717f, +0x0001717c, +0x0001717b, +0x00017178, +0x00017176, +0x00017173, +0x00017172, +0x0001716f, +0x0001716e, +0x0001716c, +0x00017169, +0x00017168, +0x00017165, +0x00017163, +0x00017161, +0x0001715f, +0x0001715c, +0x0001715b, +0x00017159, +0x00017156, +0x00017155, +0x00017152, +0x00017151, +0x0001714e, +0x0001714c, +0x0001714a, +0x00017148, +0x00017147, +0x00017144, +0x00017142, +0x0001713f, +0x0001713e, +0x0001713b, +0x0001713a, +0x00017138, +0x00017135, +0x00017134, +0x00017131, +0x00017130, +0x0001712d, +0x0001712b, +0x00017128, +0x00017127, +0x00017125, +0x00017123, +0x00017121, +0x0001711e, +0x0001711d, +0x0001711a, +0x00017119, +0x00017116, +0x00017114, +0x00017113, +0x00017110, +0x0001710e, +0x0001710c, +0x0001710a, +0x00017107, +0x00017106, +0x00017103, +0x00017101, +0x00017100, +0x000170fd, +0x000170fc, +0x000170f9, +0x000170f7, +0x000170f4, +0x000170f3, +0x000170f0, +0x000170ef, +0x000170ed, +0x000170ea, +0x000170e9, +0x000170e6, +0x000170e5, +0x000170e2, +0x000170e0, +0x000170df, +0x000170dc, +0x000170db, +0x000170d8, +0x000170d6, +0x000170d3, +0x000170d2, +0x000170cf, +0x000170ce, +0x000170cc, +0x000170c9, +0x000170c8, +0x000170c5, +0x000170c3, +0x000170c1, +0x000170bf, +0x000170bc, +0x000170bb, +0x000170b9, +0x000170b6, +0x000170b5, +0x000170b2, +0x000170b1, +0x000170ae, +0x000170ad, +0x000170aa, +0x000170a8, +0x000170a5, +0x000170a4, +0x000170a2, +0x000170a0, +0x0001709e, +0x0001709b, +0x0001709a, +0x00017097, +0x00017096, +0x00017093, +0x00017091, +0x00017090, +0x0001708d, +0x0001708b, +0x00017089, +0x00017087, +0x00017084, +0x00017083, +0x00017081, +0x0001707f, +0x0001707d, +0x0001707a, +0x00017079, +0x00017076, +0x00017074, +0x00017072, +0x00017070, +0x0001706f, +0x0001706c, +0x0001706a, +0x00017068, +0x00017066, +0x00017063, +0x00017062, +0x00017060, +0x0001705d, +0x0001705c, +0x00017059, +0x00017058, +0x00017055, +0x00017053, +0x00017051, +0x0001704f, +0x0001704e, +0x0001704b, +0x00017049, +0x00017046, +0x00017045, +0x00017042, +0x00017041, +0x0001703f, +0x0001703c, +0x0001703b, +0x00017038, +0x00017037, +0x00017034, +0x00017032, +0x0001702f, +0x0001702e, +0x0001702d, +0x0001702a, +0x00017028, +0x00017025, +0x00017024, +0x00017021, +0x00017020, +0x0001701e, +0x0001701b, +0x0001701a, +0x00017017, +0x00017016, +0x00017013, +0x00017011, +0x0001700e, +0x0001700d, +0x0001700c, +0x00017009, +0x00017007, +0x00017004, +0x00017003, +0x00017000, +0x00016fff, +0x00016ffd, +0x00016ffa, +0x00016ff9, +0x00016ff6, +0x00016ff5, +0x00016ff2, +0x00016ff0, +0x00016fed, +0x00016fec, +0x00016fea, +0x00016fe8, +0x00016fe6, +0x00016fe3, +0x00016fe2, +0x00016fdf, +0x00016fde, +0x00016fdc, +0x00016fd9, +0x00016fd8, +0x00016fd5, +0x00016fd3, +0x00016fd1, +0x00016fcf, +0x00016fcc, +0x00016fcb, +0x00016fc9, +0x00016fc7, +0x00016fc5, +0x00016fc2, +0x00016fc1, +0x00016fbe, +0x00016fbc, +0x00016fbb, +0x00016fb8, +0x00016fb7, +0x00016fb4, +0x00016fb2, +0x00016fb0, +0x00016fae, +0x00016fab, +0x00016fa9, +0x00016fa8, +0x00016fa5, +0x00016fa3, +0x00016fa2, +0x00016f9f, +0x00016f9e, +0x00016f9b, +0x00016f99, +0x00016f97, +0x00016f95, +0x00016f92, +0x00016f91, +0x00016f8f, +0x00016f8c, +0x00016f8b, +0x00016f88, +0x00016f87, +0x00016f84, +0x00016f82, +0x00016f81, +0x00016f7e, +0x00016f7d, +0x00016f7a, +0x00016f78, +0x00016f76, +0x00016f74, +0x00016f73, +0x00016f70, +0x00016f6e, +0x00016f6c, +0x00016f6a, +0x00016f67, +0x00016f66, +0x00016f64, +0x00016f61, +0x00016f60, +0x00016f5d, +0x00016f5c, +0x00016f59, +0x00016f57, +0x00016f55, +0x00016f53, +0x00016f52, +0x00016f4f, +0x00016f4d, +0x00016f4b, +0x00016f49, +0x00016f46, +0x00016f45, +0x00016f43, +0x00016f41, +0x00016f3f, +0x00016f3c, +0x00016f3b, +0x00016f38, +0x00016f36, +0x00016f35, +0x00016f32, +0x00016f31, +0x00016f2e, +0x00016f2c, +0x00016f2a, +0x00016f28, +0x00016f27, +0x00016f24, +0x00016f22, +0x00016f20, +0x00016f1e, +0x00016f1b, +0x00016f1a, +0x00016f17, +0x00016f16, +0x00016f14, +0x00016f11, +0x00016f10, +0x00016f0d, +0x00016f0b, +0x00016f09, +0x00016f07, +0x00016f06, +0x00016f03, +0x00016f01, +0x00016eff, +0x00016efd, +0x00016efa, +0x00016ef9, +0x00016ef7, +0x00016ef5, +0x00016ef3, +0x00016ef0, +0x00016eef, +0x00016eec, +0x00016eea, +0x00016ee8, +0x00016ee6, +0x00016ee5, +0x00016ee2, +0x00016ee0, +0x00016ede, +0x00016edc, +0x00016ed9, +0x00016ed8, +0x00016ed6, +0x00016ed4, +0x00016ed2, +0x00016ecf, +0x00016ece, +0x00016ecb, +0x00016eca, +0x00016ec8, +0x00016ec5, +0x00016ec4, +0x00016ec1, +0x00016ebf, +0x00016ebd, +0x00016ebb, +0x00016eba, +0x00016eb7, +0x00016eb5, +0x00016eb3, +0x00016eb1, +0x00016eae, +0x00016ead, +0x00016eaa, +0x00016ea9, +0x00016ea7, +0x00016ea4, +0x00016ea3, +0x00016ea0, +0x00016e9f, +0x00016e9c, +0x00016e9a, +0x00016e98, +0x00016e96, +0x00016e93, +0x00016e92, +0x00016e90, +0x00016e8e, +0x00016e8c, +0x00016e89, +0x00016e88, +0x00016e85, +0x00016e84, +0x00016e82, +0x00016e7f, +0x00016e7e, +0x00016e7b, +0x00016e7a, +0x00016e77, +0x00016e75, +0x00016e74, +0x00016e71, +0x00016e70, +0x00016e6d, +0x00016e6b, +0x00016e68, +0x00016e67, +0x00016e66, +0x00016e63, +0x00016e61, +0x00016e5e, +0x00016e5d, +0x00016e5a, +0x00016e59, +0x00016e57, +0x00016e54, +0x00016e53, +0x00016e50, +0x00016e4f, +0x00016e4c, +0x00016e4a, +0x00016e49, +0x00016e46, +0x00016e45, +0x00016e42, +0x00016e40, +0x00016e3d, +0x00016e3c, +0x00016e3b, +0x00016e38, +0x00016e36, +0x00016e33, +0x00016e32, +0x00016e2f, +0x00016e2e, +0x00016e2c, +0x00016e29, +0x00016e28, +0x00016e25, +0x00016e24, +0x00016e21, +0x00016e1f, +0x00016e1e, +0x00016e1b, +0x00016e1a, +0x00016e17, +0x00016e15, +0x00016e13, +0x00016e11, +0x00016e10, +0x00016e0d, +0x00016e0b, +0x00016e09, +0x00016e07, +0x00016e04, +0x00016e03, +0x00016e01, +0x00016dff, +0x00016dfd, +0x00016dfa, +0x00016df9, +0x00016df6, +0x00016df5, +0x00016df3, +0x00016df0, +0x00016def, +0x00016dec, +0x00016deb, +0x00016de8, +0x00016de6, +0x00016de5, +0x00016de2, +0x00016de1, +0x00016dde, +0x00016ddc, +0x00016dd9, +0x00016dd8, +0x00016dd7, +0x00016dd4, +0x00016dd2, +0x00016dcf, +0x00016dce, +0x00016dcb, +0x00016dca, +0x00016dc8, +0x00016dc5, +0x00016dc4, +0x00016dc1, +0x00016dc0, +0x00016dbd, +0x00016dbb, +0x00016dba, +0x00016db7, +0x00016db6, +0x00016db3, +0x00016db1, +0x00016daf, +0x00016dad, +0x00016dac, +0x00016da9, +0x00016da7, +0x00016da5, +0x00016da3, +0x00016da0, +0x00016d9f, +0x00016d9d, +0x00016d9a, +0x00016d99, +0x00016d96, +0x00016d94, +0x00016d93, +0x00016d90, +0x00016d8f, +0x00016d8c, +0x00016d8a, +0x00016d87, +0x00016d86, +0x00016d85, +0x00016d82, +0x00016d80, +0x00016d7d, +0x00016d7c, +0x00016d7b, +0x00016d78, +0x00016d76, +0x00016d73, +0x00016d72, +0x00016d6f, +0x00016d6e, +0x00016d6c, +0x00016d6a, +0x00016d68, +0x00016d65, +0x00016d64, +0x00016d61, +0x00016d60, +0x00016d5e, +0x00016d5b, +0x00016d5a, +0x00016d57, +0x00016d56, +0x00016d53, +0x00016d51, +0x00016d50, +0x00016d4d, +0x00016d4c, +0x00016d49, +0x00016d47, +0x00016d44, +0x00016d43, +0x00016d42, +0x00016d3f, +0x00016d3d, +0x00016d3a, +0x00016d39, +0x00016d36, +0x00016d35, +0x00016d33, +0x00016d30, +0x00016d2f, +0x00016d2c, +0x00016d2b, +0x00016d28, +0x00016d26, +0x00016d25, +0x00016d22, +0x00016d21, +0x00016d1e, +0x00016d1d, +0x00016d1b, +0x00016d18, +0x00016d17, +0x00016d14, +0x00016d13, +0x00016d10, +0x00016d0e, +0x00016d0d, +0x00016d0a, +0x00016d09, +0x00016d06, +0x00016d04, +0x00016d01, +0x00016d00, +0x00016cff, +0x00016cfc, +0x00016cfa, +0x00016cf7, +0x00016cf6, +0x00016cf3, +0x00016cf2, +0x00016cf0, +0x00016ced, +0x00016cec, +0x00016ce9, +0x00016ce8, +0x00016ce5, +0x00016ce3, +0x00016ce2, +0x00016cdf, +0x00016cde, +0x00016cdb, +0x00016cda, +0x00016cd7, +0x00016cd5, +0x00016cd4, +0x00016cd1, +0x00016cd0, +0x00016ccd, +0x00016ccb, +0x00016cc8, +0x00016cc7, +0x00016cc6, +0x00016cc3, +0x00016cc1, +0x00016cbe, +0x00016cbd, +0x00016cba, +0x00016cb9, +0x00016cb7, +0x00016cb4, +0x00016cb3, +0x00016cb0, +0x00016caf, +0x00016cad, +0x00016caa, +0x00016ca9, +0x00016ca6, +0x00016ca5, +0x00016ca2, +0x00016ca0, +0x00016c9f, +0x00016c9c, +0x00016c9b, +0x00016c98, +0x00016c97, +0x00016c94, +0x00016c92, +0x00016c90, +0x00016c8e, +0x00016c8b, +0x00016c8a, +0x00016c89, +0x00016c86, +0x00016c84, +0x00016c81, +0x00016c80, +0x00016c7f, +0x00016c7c, +0x00016c7a, +0x00016c77, +0x00016c76, +0x00016c73, +0x00016c72, +0x00016c70, +0x00016c6d, +0x00016c6c, +0x00016c69, +0x00016c68, +0x00016c65, +0x00016c64, +0x00016c62, +0x00016c5f, +0x00016c5e, +0x00016c5b, +0x00016c5a, +0x00016c58, +0x00016c55, +0x00016c54, +0x00016c51, +0x00016c50, +0x00016c4d, +0x00016c4b, +0x00016c4a, +0x00016c47, +0x00016c46, +0x00016c43, +0x00016c41, +0x00016c3f, +0x00016c3d, +0x00016c3c, +0x00016c39, +0x00016c37, +0x00016c35, +0x00016c33, +0x00016c30, +0x00016c2f, +0x00016c2e, +0x00016c2b, +0x00016c29, +0x00016c26, +0x00016c25, +0x00016c24, +0x00016c21, +0x00016c1f, +0x00016c1c, +0x00016c1b, +0x00016c18, +0x00016c17, +0x00016c15, +0x00016c12, +0x00016c11, +0x00016c0e, +0x00016c0d, +0x00016c0a, +0x00016c09, +0x00016c07, +0x00016c04, +0x00016c03, +0x00016c00, +0x00016bff, +0x00016bfd, +0x00016bfa, +0x00016bf9, +0x00016bf6, +0x00016bf5, +0x00016bf2, +0x00016bf0, +0x00016bef, +0x00016bec, +0x00016beb, +0x00016be8, +0x00016be6, +0x00016be4, +0x00016be2, +0x00016be1, +0x00016bde, +0x00016bdc, +0x00016bda, +0x00016bd8, +0x00016bd7, +0x00016bd4, +0x00016bd3, +0x00016bd0, +0x00016bce, +0x00016bcb, +0x00016bca, +0x00016bc9, +0x00016bc6, +0x00016bc4, +0x00016bc1, +0x00016bc0, +0x00016bbd, +0x00016bbc, +0x00016bba, +0x00016bb7, +0x00016bb6, +0x00016bb3, +0x00016bb2, +0x00016baf, +0x00016bae, +0x00016bac, +0x00016ba9, +0x00016ba8, +0x00016ba5, +0x00016ba4, +0x00016ba2, +0x00016b9f, +0x00016b9e, +0x00016b9b, +0x00016b9a, +0x00016b97, +0x00016b95, +0x00016b93, +0x00016b91, +0x00016b8f, +0x00016b8e, +0x00016b8b, +0x00016b8a, +0x00016b87, +0x00016b85, +0x00016b82, +0x00016b81, +0x00016b80, +0x00016b7d, +0x00016b7b, +0x00016b79, +0x00016b77, +0x00016b76, +0x00016b73, +0x00016b71, +0x00016b6f, +0x00016b6d, +0x00016b6a, +0x00016b69, +0x00016b68, +0x00016b65, +0x00016b63, +0x00016b60, +0x00016b5f, +0x00016b5e, +0x00016b5b, +0x00016b59, +0x00016b56, +0x00016b55, +0x00016b52, +0x00016b51, +0x00016b4f, +0x00016b4d, +0x00016b4b, +0x00016b48, +0x00016b47, +0x00016b45, +0x00016b43, +0x00016b41, +0x00016b3e, +0x00016b3d, +0x00016b3a, +0x00016b39, +0x00016b37, +0x00016b34, +0x00016b33, +0x00016b30, +0x00016b2f, +0x00016b2d, +0x00016b2b, +0x00016b29, +0x00016b26, +0x00016b25, +0x00016b22, +0x00016b21, +0x00016b1f, +0x00016b1c, +0x00016b1b, +0x00016b18, +0x00016b17, +0x00016b15, +0x00016b12, +0x00016b11, +0x00016b0e, +0x00016b0d, +0x00016b0a, +0x00016b09, +0x00016b07, +0x00016b04, +0x00016b03, +0x00016b00, +0x00016aff, +0x00016afc, +0x00016afa, +0x00016af9, +0x00016af6, +0x00016af5, +0x00016af2, +0x00016af0, +0x00016aef, +0x00016aec, +0x00016aeb, +0x00016ae8, +0x00016ae6, +0x00016ae4, +0x00016ae2, +0x00016ae1, +0x00016ade, +0x00016add, +0x00016ada, +0x00016ad8, +0x00016ad7, +0x00016ad4, +0x00016ad3, +0x00016ad0, +0x00016ace, +0x00016acc, +0x00016aca, +0x00016ac9, +0x00016ac6, +0x00016ac4, +0x00016ac2, +0x00016ac0, +0x00016abf, +0x00016abc, +0x00016abb, +0x00016ab8, +0x00016ab6, +0x00016ab3, +0x00016ab2, +0x00016ab1, +0x00016aae, +0x00016aac, +0x00016aaa, +0x00016aa8, +0x00016aa7, +0x00016aa4, +0x00016aa2, +0x00016aa0, +0x00016a9e, +0x00016a9b, +0x00016a9a, +0x00016a98, +0x00016a96, +0x00016a94, +0x00016a92, +0x00016a90, +0x00016a8d, +0x00016a8c, +0x00016a89, +0x00016a88, +0x00016a86, +0x00016a84, +0x00016a82, +0x00016a7f, +0x00016a7e, +0x00016a7c, +0x00016a7a, +0x00016a78, +0x00016a75, +0x00016a74, +0x00016a71, +0x00016a70, +0x00016a6e, +0x00016a6b, +0x00016a6a, +0x00016a67, +0x00016a66, +0x00016a64, +0x00016a62, +0x00016a60, +0x00016a5d, +0x00016a5c, +0x00016a59, +0x00016a58, +0x00016a56, +0x00016a53, +0x00016a52, +0x00016a4f, +0x00016a4e, +0x00016a4c, +0x00016a4a, +0x00016a48, +0x00016a45, +0x00016a44, +0x00016a42, +0x00016a40, +0x00016a3e, +0x00016a3b, +0x00016a3a, +0x00016a37, +0x00016a36, +0x00016a34, +0x00016a31, +0x00016a30, +0x00016a2d, +0x00016a2c, +0x00016a2a, +0x00016a28, +0x00016a26, +0x00016a23, +0x00016a22, +0x00016a1f, +0x00016a1e, +0x00016a1c, +0x00016a19, +0x00016a18, +0x00016a15, +0x00016a14, +0x00016a12, +0x00016a10, +0x00016a0e, +0x00016a0b, +0x00016a0a, +0x00016a08, +0x00016a06, +0x00016a04, +0x00016a01, +0x00016a00, +0x000169fd, +0x000169fc, +0x000169fa, +0x000169f8, +0x000169f6, +0x000169f3, +0x000169f2, +0x000169f0, +0x000169ee, +0x000169ec, +0x000169e9, +0x000169e8, +0x000169e5, +0x000169e4, +0x000169e2, +0x000169df, +0x000169de, +0x000169db, +0x000169da, +0x000169d8, +0x000169d6, +0x000169d4, +0x000169d1, +0x000169d0, +0x000169cf, +0x000169cc, +0x000169ca, +0x000169c7, +0x000169c6, +0x000169c3, +0x000169c2, +0x000169c0, +0x000169be, +0x000169bc, +0x000169b9, +0x000169b8, +0x000169b6, +0x000169b4, +0x000169b2, +0x000169af, +0x000169ae, +0x000169ab, +0x000169aa, +0x000169a8, +0x000169a6, +0x000169a4, +0x000169a1, +0x000169a0, +0x0001699e, +0x0001699c, +0x0001699a, +0x00016997, +0x00016996, +0x00016994, +0x00016991, +0x00016990, +0x0001698e, +0x0001698c, +0x0001698a, +0x00016987, +0x00016986, +0x00016983, +0x00016982, +0x00016980, +0x0001697e, +0x0001697c, +0x00016979, +0x00016978, +0x00016976, +0x00016974, +0x00016972, +0x0001696f, +0x0001696e, +0x0001696d, +0x0001696a, +0x00016968, +0x00016966, +0x00016964, +0x00016961, +0x00016960, +0x0001695e, +0x0001695c, +0x0001695a, +0x00016957, +0x00016956, +0x00016955, +0x00016952, +0x00016950, +0x0001694e, +0x0001694c, +0x0001694b, +0x00016948, +0x00016947, +0x00016944, +0x00016942, +0x00016941, +0x0001693e, +0x0001693d, +0x0001693a, +0x00016938, +0x00016936, +0x00016934, +0x00016933, +0x00016930, +0x0001692f, +0x0001692c, +0x0001692a, +0x00016929, +0x00016926, +0x00016925, +0x00016922, +0x00016920, +0x0001691f, +0x0001691c, +0x0001691b, +0x00016918, +0x00016917, +0x00016915, +0x00016912, +0x00016911, +0x0001690e, +0x0001690d, +0x0001690a, +0x00016908, +0x00016907, +0x00016904, +0x00016903, +0x00016900, +0x000168ff, +0x000168fd, +0x000168fa, +0x000168f9, +0x000168f6, +0x000168f5, +0x000168f3, +0x000168f0, +0x000168ef, +0x000168ec, +0x000168eb, +0x000168e8, +0x000168e7, +0x000168e5, +0x000168e2, +0x000168e1, +0x000168de, +0x000168dd, +0x000168db, +0x000168d9, +0x000168d7, +0x000168d4, +0x000168d3, +0x000168d1, +0x000168cf, +0x000168cd, +0x000168ca, +0x000168c9, +0x000168c8, +0x000168c5, +0x000168c3, +0x000168c1, +0x000168bf, +0x000168bc, +0x000168bb, +0x000168b9, +0x000168b7, +0x000168b5, +0x000168b2, +0x000168b1, +0x000168b0, +0x000168ad, +0x000168ab, +0x000168a9, +0x000168a7, +0x000168a6, +0x000168a3, +0x000168a2, +0x0001689f, +0x0001689d, +0x0001689a, +0x00016899, +0x00016898, +0x00016895, +0x00016894, +0x00016891, +0x0001688f, +0x0001688d, +0x0001688b, +0x0001688a, +0x00016887, +0x00016886, +0x00016883, +0x00016881, +0x00016880, +0x0001687d, +0x0001687c, +0x00016879, +0x00016878, +0x00016876, +0x00016873, +0x00016872, +0x0001686f, +0x0001686e, +0x0001686b, +0x00016869, +0x00016868, +0x00016865, +0x00016864, +0x00016861, +0x00016860, +0x0001685e, +0x0001685b, +0x0001685a, +0x00016857, +0x00016856, +0x00016854, +0x00016852, +0x00016850, +0x0001684d, +0x0001684c, +0x0001684b, +0x00016848, +0x00016846, +0x00016844, +0x00016842, +0x00016841, +0x0001683e, +0x0001683c, +0x0001683a, +0x00016838, +0x00016837, +0x00016834, +0x00016833, +0x00016830, +0x0001682e, +0x0001682c, +0x0001682a, +0x00016829, +0x00016826, +0x00016825, +0x00016822, +0x00016820, +0x0001681f, +0x0001681c, +0x0001681b, +0x00016818, +0x00016817, +0x00016815, +0x00016812, +0x00016811, +0x0001680e, +0x0001680d, +0x0001680b, +0x00016808, +0x00016807, +0x00016804, +0x00016803, +0x00016801, +0x000167ff, +0x000167fd, +0x000167fa, +0x000167f9, +0x000167f8, +0x000167f5, +0x000167f3, +0x000167f1, +0x000167ef, +0x000167ec, +0x000167eb, +0x000167ea, +0x000167e7, +0x000167e5, +0x000167e2, +0x000167e1, +0x000167e0, +0x000167dd, +0x000167db, +0x000167d9, +0x000167d7, +0x000167d6, +0x000167d3, +0x000167d2, +0x000167cf, +0x000167cd, +0x000167cc, +0x000167c9, +0x000167c8, +0x000167c5, +0x000167c4, +0x000167c2, +0x000167bf, +0x000167be, +0x000167bb, +0x000167ba, +0x000167b8, +0x000167b5, +0x000167b4, +0x000167b1, +0x000167b0, +0x000167ad, +0x000167ac, +0x000167aa, +0x000167a7, +0x000167a6, +0x000167a3, +0x000167a2, +0x000167a0, +0x0001679e, +0x0001679c, +0x00016799, +0x00016797, +0x00016796, +0x00016793, +0x00016792, +0x00016790, +0x0001678e, +0x0001678c, +0x00016789, +0x00016788, +0x00016787, +0x00016784, +0x00016782, +0x00016780, +0x0001677e, +0x0001677d, +0x0001677a, +0x00016779, +0x00016776, +0x00016774, +0x00016773, +0x00016770, +0x0001676f, +0x0001676c, +0x0001676b, +0x00016769, +0x00016766, +0x00016765, +0x00016762, +0x00016761, +0x0001675f, +0x0001675d, +0x0001675b, +0x00016758, +0x00016757, +0x00016756, +0x00016753, +0x00016751, +0x0001674f, +0x0001674d, +0x0001674c, +0x00016749, +0x00016748, +0x00016745, +0x00016743, +0x00016742, +0x0001673f, +0x0001673e, +0x0001673b, +0x00016739, +0x00016738, +0x00016735, +0x00016734, +0x00016731, +0x00016730, +0x0001672e, +0x0001672b, +0x0001672a, +0x00016727, +0x00016726, +0x00016724, +0x00016722, +0x00016720, +0x0001671d, +0x0001671c, +0x0001671b, +0x00016718, +0x00016716, +0x00016714, +0x00016712, +0x0001670f, +0x0001670e, +0x0001670d, +0x0001670a, +0x00016708, +0x00016706, +0x00016704, +0x00016703, +0x00016700, +0x000166ff, +0x000166fc, +0x000166fa, +0x000166f9, +0x000166f6, +0x000166f5, +0x000166f2, +0x000166f1, +0x000166ef, +0x000166ec, +0x000166eb, +0x000166e8, +0x000166e7, +0x000166e5, +0x000166e3, +0x000166e1, +0x000166de, +0x000166dd, +0x000166dc, +0x000166d9, +0x000166d7, +0x000166d5, +0x000166d3, +0x000166d2, +0x000166cf, +0x000166ce, +0x000166cb, +0x000166c9, +0x000166c8, +0x000166c5, +0x000166c4, +0x000166c1, +0x000166bf, +0x000166be, +0x000166bb, +0x000166ba, +0x000166b7, +0x000166b6, +0x000166b4, +0x000166b1, +0x000166b0, +0x000166ad, +0x000166ac, +0x000166aa, +0x000166a8, +0x000166a6, +0x000166a3, +0x000166a2, +0x000166a1, +0x0001669e, +0x0001669d, +0x0001669a, +0x00016698, +0x00016696, +0x00016694, +0x00016693, +0x00016690, +0x0001668f, +0x0001668c, +0x0001668a, +0x00016689, +0x00016686, +0x00016685, +0x00016682, +0x00016681, +0x0001667f, +0x0001667c, +0x0001667b, +0x00016678, +0x00016677, +0x00016675, +0x00016673, +0x00016671, +0x0001666e, +0x0001666d, +0x0001666c, +0x00016669, +0x00016667, +0x00016665, +0x00016663, +0x00016662, +0x0001665f, +0x0001665e, +0x0001665b, +0x0001665a, +0x00016658, +0x00016655, +0x00016654, +0x00016651, +0x00016650, +0x0001664e, +0x0001664c, +0x0001664a, +0x00016647, +0x00016646, +0x00016645, +0x00016642, +0x00016640, +0x0001663e, +0x0001663c, +0x0001663b, +0x00016638, +0x00016637, +0x00016634, +0x00016632, +0x00016631, +0x0001662e, +0x0001662d, +0x0001662a, +0x00016629, +0x00016627, +0x00016624, +0x00016623, +0x00016620, +0x0001661f, +0x0001661d, +0x0001661b, +0x00016619, +0x00016616, +0x00016615, +0x00016614, +0x00016611, +0x0001660f, +0x0001660d, +0x0001660b, +0x0001660a, +0x00016607, +0x00016606, +0x00016603, +0x00016601, +0x00016600, +0x000165fd, +0x000165fc, +0x000165f9, +0x000165f8, +0x000165f6, +0x000165f3, +0x000165f2, +0x000165ef, +0x000165ee, +0x000165ec, +0x000165ea, +0x000165e8, +0x000165e5, +0x000165e4, +0x000165e3, +0x000165e0, +0x000165de, +0x000165dc, +0x000165da, +0x000165d9, +0x000165d6, +0x000165d5, +0x000165d2, +0x000165d0, +0x000165cf, +0x000165cc, +0x000165cb, +0x000165c8, +0x000165c7, +0x000165c5, +0x000165c2, +0x000165c1, +0x000165be, +0x000165bd, +0x000165bb, +0x000165b9, +0x000165b7, +0x000165b4, +0x000165b3, +0x000165b2, +0x000165af, +0x000165ad, +0x000165ab, +0x000165a9, +0x000165a8, +0x000165a5, +0x000165a4, +0x000165a2, +0x0001659f, +0x0001659e, +0x0001659c, +0x00016599, +0x00016598, +0x00016595, +0x00016594, +0x00016592, +0x00016590, +0x0001658e, +0x0001658b, +0x0001658a, +0x00016589, +0x00016586, +0x00016584, +0x00016582, +0x00016580, +0x0001657f, +0x0001657c, +0x0001657b, +0x00016578, +0x00016577, +0x00016575, +0x00016572, +0x00016571, +0x0001656e, +0x0001656d, +0x0001656b, +0x00016569, +0x00016567, +0x00016566, +0x00016563, +0x00016562, +0x0001655f, +0x0001655d, +0x0001655c, +0x00016559, +0x00016558, +0x00016555, +0x00016554, +0x00016552, +0x0001654f, +0x0001654e, +0x0001654b, +0x0001654a, +0x00016549, +0x00016546, +0x00016544, +0x00016542, +0x00016540, +0x0001653f, +0x0001653c, +0x0001653b, +0x00016538, +0x00016536, +0x00016535, +0x00016532, +0x00016531, +0x0001652e, +0x0001652d, +0x0001652b, +0x00016528, +0x00016527, +0x00016526, +0x00016523, +0x00016521, +0x0001651f, +0x0001651d, +0x0001651c, +0x00016519, +0x00016518, +0x00016515, +0x00016514, +0x00016512, +0x0001650f, +0x0001650e, +0x0001650b, +0x0001650a, +0x00016508, +0x00016506, +0x00016504, +0x00016501, +0x00016500, +0x000164ff, +0x000164fc, +0x000164fa, +0x000164f8, +0x000164f6, +0x000164f5, +0x000164f2, +0x000164f1, +0x000164ee, +0x000164ec, +0x000164eb, +0x000164e8, +0x000164e7, +0x000164e4, +0x000164e3, +0x000164e1, +0x000164df, +0x000164dd, +0x000164dc, +0x000164d9, +0x000164d8, +0x000164d5, +0x000164d3, +0x000164d2, +0x000164cf, +0x000164ce, +0x000164cb, +0x000164ca, +0x000164c8, +0x000164c5, +0x000164c4, +0x000164c1, +0x000164c0, +0x000164be, +0x000164bc, +0x000164ba, +0x000164b7, +0x000164b6, +0x000164b5, +0x000164b2, +0x000164b1, +0x000164ae, +0x000164ac, +0x000164ab, +0x000164a8, +0x000164a7, +0x000164a4, +0x000164a3, +0x000164a0, +0x0001649f, +0x0001649d, +0x0001649a, +0x00016499, +0x00016496, +0x00016495, +0x00016493, +0x00016491, +0x0001648f, +0x0001648e, +0x0001648b, +0x0001648a, +0x00016487, +0x00016486, +0x00016484, +0x00016481, +0x00016480, +0x0001647d, +0x0001647c, +0x0001647a, +0x00016478, +0x00016476, +0x00016473, +0x00016472, +0x00016471, +0x0001646e, +0x0001646c, +0x0001646b, +0x00016468, +0x00016467, +0x00016464, +0x00016463, +0x00016461, +0x0001645f, +0x0001645d, +0x0001645a, +0x00016459, +0x00016458, +0x00016455, +0x00016453, +0x00016451, +0x0001644f, +0x0001644e, +0x0001644b, +0x0001644a, +0x00016447, +0x00016446, +0x00016444, +0x00016441, +0x00016440, +0x0001643f, +0x0001643c, +0x0001643a, +0x00016438, +0x00016436, +0x00016435, +0x00016432, +0x00016431, +0x0001642e, +0x0001642d, +0x0001642b, +0x00016428, +0x00016427, +0x00016424, +0x00016423, +0x00016421, +0x0001641f, +0x0001641d, +0x0001641a, +0x00016419, +0x00016418, +0x00016415, +0x00016413, +0x00016412, +0x0001640f, +0x0001640e, +0x0001640b, +0x0001640a, +0x00016408, +0x00016406, +0x00016404, +0x00016401, +0x00016400, +0x000163ff, +0x000163fc, +0x000163fa, +0x000163f8, +0x000163f6, +0x000163f5, +0x000163f2, +0x000163f1, +0x000163ef, +0x000163ed, +0x000163eb, +0x000163e8, +0x000163e7, +0x000163e6, +0x000163e3, +0x000163e1, +0x000163df, +0x000163dd, +0x000163dc, +0x000163d9, +0x000163d8, +0x000163d5, +0x000163d4, +0x000163d2, +0x000163cf, +0x000163ce, +0x000163cb, +0x000163ca, +0x000163c8, +0x000163c6, +0x000163c4, +0x000163c3, +0x000163c0, +0x000163bf, +0x000163bc, +0x000163ba, +0x000163b9, +0x000163b6, +0x000163b5, +0x000163b2, +0x000163b0, +0x000163af, +0x000163ac, +0x000163ab, +0x000163a9, +0x000163a6, +0x000163a5, +0x000163a4, +0x000163a1, +0x0001639f, +0x0001639d, +0x0001639b, +0x0001639a, +0x00016397, +0x00016396, +0x00016393, +0x00016392, +0x00016390, +0x0001638d, +0x0001638c, +0x0001638b, +0x00016388, +0x00016387, +0x00016384, +0x00016382, +0x00016381, +0x0001637e, +0x0001637d, +0x0001637a, +0x00016379, +0x00016377, +0x00016374, +0x00016373, +0x00016370, +0x0001636f, +0x0001636e, +0x0001636b, +0x00016369, +0x00016368, +0x00016365, +0x00016364, +0x00016361, +0x00016360, +0x0001635e, +0x0001635c, +0x0001635a, +0x00016357, +0x00016356, +0x00016355, +0x00016352, +0x00016350, +0x0001634f, +0x0001634c, +0x0001634b, +0x00016348, +0x00016347, +0x00016345, +0x00016343, +0x00016341, +0x0001633e, +0x0001633d, +0x0001633c, +0x00016339, +0x00016337, +0x00016336, +0x00016333, +0x00016332, +0x0001632f, +0x0001632e, +0x0001632c, +0x0001632a, +0x00016328, +0x00016325, +0x00016324, +0x00016323, +0x00016320, +0x0001631f, +0x0001631c, +0x0001631a, +0x00016319, +0x00016316, +0x00016315, +0x00016313, +0x00016311, +0x0001630f, +0x0001630c, +0x0001630b, +0x0001630a, +0x00016307, +0x00016306, +0x00016303, +0x00016301, +0x00016300, +0x000162fd, +0x000162fc, +0x000162fa, +0x000162f8, +0x000162f6, +0x000162f4, +0x000162f2, +0x000162f1, +0x000162ee, +0x000162ed, +0x000162ea, +0x000162e8, +0x000162e7, +0x000162e4, +0x000162e3, +0x000162e0, +0x000162df, +0x000162dd, +0x000162db, +0x000162d9, +0x000162d8, +0x000162d5, +0x000162d4, +0x000162d1, +0x000162cf, +0x000162ce, +0x000162cb, +0x000162ca, +0x000162c7, +0x000162c6, +0x000162c4, +0x000162c2, +0x000162c0, +0x000162bf, +0x000162bc, +0x000162bb, +0x000162b8, +0x000162b7, +0x000162b4, +0x000162b2, +0x000162b1, +0x000162ae, +0x000162ad, +0x000162aa, +0x000162a9, +0x000162a7, +0x000162a5, +0x000162a3, +0x000162a2, +0x0001629f, +0x0001629e, +0x0001629b, +0x00016299, +0x00016298, +0x00016295, +0x00016294, +0x00016291, +0x00016290, +0x0001628e, +0x0001628c, +0x0001628a, +0x00016289, +0x00016286, +0x00016285, +0x00016282, +0x00016281, +0x0001627f, +0x0001627c, +0x0001627b, +0x00016278, +0x00016277, +0x00016276, +0x00016273, +0x00016271, +0x00016270, +0x0001626d, +0x0001626c, +0x00016269, +0x00016268, +0x00016266, +0x00016264, +0x00016262, +0x00016261, +0x0001625e, +0x0001625d, +0x0001625a, +0x00016259, +0x00016257, +0x00016254, +0x00016253, +0x00016250, +0x0001624f, +0x0001624d, +0x0001624b, +0x00016249, +0x00016248, +0x00016245, +0x00016244, +0x00016241, +0x00016240, +0x0001623e, +0x0001623b, +0x0001623a, +0x00016237, +0x00016236, +0x00016235, +0x00016232, +0x00016230, +0x0001622f, +0x0001622c, +0x0001622b, +0x00016228, +0x00016227, +0x00016225, +0x00016223, +0x00016221, +0x0001621e, +0x0001621d, +0x0001621c, +0x00016219, +0x00016218, +0x00016216, +0x00016213, +0x00016212, +0x0001620f, +0x0001620e, +0x0001620c, +0x0001620a, +0x00016208, +0x00016207, +0x00016204, +0x00016203, +0x00016200, +0x000161ff, +0x000161fd, +0x000161fa, +0x000161f9, +0x000161f6, +0x000161f5, +0x000161f4, +0x000161f1, +0x000161ef, +0x000161ee, +0x000161eb, +0x000161ea, +0x000161e7, +0x000161e6, +0x000161e4, +0x000161e2, +0x000161e0, +0x000161dd, +0x000161dc, +0x000161db, +0x000161d8, +0x000161d7, +0x000161d5, +0x000161d2, +0x000161d1, +0x000161ce, +0x000161cd, +0x000161cb, +0x000161c9, +0x000161c7, +0x000161c5, +0x000161c2, +0x000161c1, +0x000161c0, +0x000161bd, +0x000161bc, +0x000161b9, +0x000161b7, +0x000161b6, +0x000161b3, +0x000161b2, +0x000161b1, +0x000161ae, +0x000161ac, +0x000161aa, +0x000161a8, +0x000161a7, +0x000161a4, +0x000161a3, +0x000161a1, +0x0001619f, +0x0001619d, +0x0001619a, +0x00016199, +0x00016198, +0x00016195, +0x00016194, +0x00016192, +0x0001618f, +0x0001618e, +0x0001618b, +0x0001618a, +0x00016189, +0x00016186, +0x00016184, +0x00016182, +0x00016180, +0x0001617f, +0x0001617c, +0x0001617b, +0x00016179, +0x00016177, +0x00016175, +0x00016172, +0x00016171, +0x00016170, +0x0001616d, +0x0001616c, +0x0001616a, +0x00016167, +0x00016166, +0x00016163, +0x00016162, +0x00016161, +0x0001615e, +0x0001615c, +0x0001615b, +0x00016158, +0x00016157, +0x00016154, +0x00016153, +0x00016151, +0x0001614f, +0x0001614d, +0x0001614c, +0x00016149, +0x00016148, +0x00016145, +0x00016144, +0x00016142, +0x0001613f, +0x0001613e, +0x0001613b, +0x0001613a, +0x00016139, +0x00016136, +0x00016134, +0x00016133, +0x00016130, +0x0001612f, +0x0001612c, +0x0001612b, +0x00016129, +0x00016127, +0x00016125, +0x00016124, +0x00016121, +0x00016120, +0x0001611d, +0x0001611c, +0x0001611a, +0x00016117, +0x00016116, +0x00016115, +0x00016112, +0x00016111, +0x0001610e, +0x0001610c, +0x0001610b, +0x00016108, +0x00016107, +0x00016104, +0x00016103, +0x00016101, +0x000160ff, +0x000160fd, +0x000160fc, +0x000160f9, +0x000160f8, +0x000160f5, +0x000160f4, +0x000160f2, +0x000160ef, +0x000160ee, +0x000160ed, +0x000160ea, +0x000160e9, +0x000160e6, +0x000160e4, +0x000160e3, +0x000160e0, +0x000160df, +0x000160de, +0x000160db, +0x000160d9, +0x000160d7, +0x000160d5, +0x000160d4, +0x000160d1, +0x000160d0, +0x000160cd, +0x000160cc, +0x000160ca, +0x000160c7, +0x000160c6, +0x000160c3, +0x000160c2, +0x000160c1, +0x000160be, +0x000160bc, +0x000160bb, +0x000160b8, +0x000160b7, +0x000160b4, +0x000160b3, +0x000160b1, +0x000160af, +0x000160ad, +0x000160ac, +0x000160a9, +0x000160a8, +0x000160a5, +0x000160a4, +0x000160a2, +0x000160a0, +0x0001609e, +0x0001609d, +0x0001609a, +0x00016099, +0x00016096, +0x00016095, +0x00016093, +0x00016090, +0x0001608f, +0x0001608e, +0x0001608b, +0x0001608a, +0x00016087, +0x00016085, +0x00016084, +0x00016081, +0x00016080, +0x0001607f, +0x0001607c, +0x0001607a, +0x00016078, +0x00016076, +0x00016075, +0x00016072, +0x00016071, +0x0001606f, +0x0001606d, +0x0001606b, +0x00016069, +0x00016067, +0x00016066, +0x00016063, +0x00016062, +0x00016060, +0x0001605e, +0x0001605c, +0x00016059, +0x00016058, +0x00016057, +0x00016054, +0x00016053, +0x00016051, +0x0001604e, +0x0001604d, +0x0001604a, +0x00016049, +0x00016048, +0x00016045, +0x00016043, +0x00016042, +0x0001603f, +0x0001603e, +0x0001603b, +0x0001603a, +0x00016038, +0x00016036, +0x00016034, +0x00016033, +0x00016030, +0x0001602f, +0x0001602c, +0x0001602b, +0x00016029, +0x00016027, +0x00016025, +0x00016024, +0x00016021, +0x00016020, +0x0001601d, +0x0001601c, +0x0001601a, +0x00016017, +0x00016016, +0x00016015, +0x00016012, +0x00016011, +0x0001600e, +0x0001600c, +0x0001600b, +0x00016008, +0x00016007, +0x00016006, +0x00016003, +0x00016001, +0x00015fff, +0x00015ffd, +0x00015ffc, +0x00015ff9, +0x00015ff8, +0x00015ff6, +0x00015ff4, +0x00015ff2, +0x00015ff0, +0x00015fee, +0x00015fed, +0x00015fea, +0x00015fe9, +0x00015fe7, +0x00015fe5, +0x00015fe3, +0x00015fe0, +0x00015fde, +0x00015fdd, +0x00015fdb, +0x00015fd9, +0x00015fd7, +0x00015fd5, +0x00015fd3, +0x00015fd2, +0x00015fcf, +0x00015fce, +0x00015fcc, +0x00015fca, +0x00015fc8, +0x00015fc5, +0x00015fc4, +0x00015fc3, +0x00015fc0, +0x00015fbf, +0x00015fbd, +0x00015fba, +0x00015fb9, +0x00015fb6, +0x00015fb5, +0x00015fb4, +0x00015fb1, +0x00015fb0, +0x00015fae, +0x00015fab, +0x00015faa, +0x00015fa7, +0x00015fa6, +0x00015fa5, +0x00015fa2, +0x00015fa0, +0x00015f9f, +0x00015f9c, +0x00015f9b, +0x00015f9a, +0x00015f97, +0x00015f95, +0x00015f93, +0x00015f91, +0x00015f90, +0x00015f8d, +0x00015f8c, +0x00015f8a, +0x00015f88, +0x00015f86, +0x00015f84, +0x00015f82, +0x00015f81, +0x00015f7e, +0x00015f7d, +0x00015f7b, +0x00015f79, +0x00015f77, +0x00015f75, +0x00015f73, +0x00015f72, +0x00015f6f, +0x00015f6e, +0x00015f6c, +0x00015f6a, +0x00015f68, +0x00015f67, +0x00015f64, +0x00015f63, +0x00015f60, +0x00015f5f, +0x00015f5d, +0x00015f5a, +0x00015f59, +0x00015f58, +0x00015f55, +0x00015f54, +0x00015f51, +0x00015f50, +0x00015f4e, +0x00015f4b, +0x00015f4a, +0x00015f49, +0x00015f46, +0x00015f45, +0x00015f42, +0x00015f40, +0x00015f3f, +0x00015f3c, +0x00015f3b, +0x00015f3a, +0x00015f37, +0x00015f35, +0x00015f33, +0x00015f31, +0x00015f30, +0x00015f2d, +0x00015f2c, +0x00015f2b, +0x00015f28, +0x00015f26, +0x00015f25, +0x00015f22, +0x00015f21, +0x00015f1e, +0x00015f1d, +0x00015f1b, +0x00015f19, +0x00015f17, +0x00015f16, +0x00015f13, +0x00015f12, +0x00015f0f, +0x00015f0e, +0x00015f0c, +0x00015f0a, +0x00015f08, +0x00015f07, +0x00015f04, +0x00015f03, +0x00015f00, +0x00015eff, +0x00015efd, +0x00015efb, +0x00015ef9, +0x00015ef8, +0x00015ef5, +0x00015ef4, +0x00015ef1, +0x00015ef0, +0x00015eee, +0x00015eeb, +0x00015eea, +0x00015ee7, +0x00015ee6, +0x00015ee4, +0x00015ee2, +0x00015ee0, +0x00015edf, +0x00015edc, +0x00015edb, +0x00015ed8, +0x00015ed7, +0x00015ed5, +0x00015ed3, +0x00015ed1, +0x00015ed0, +0x00015ecd, +0x00015ecc, +0x00015eca, +0x00015ec8, +0x00015ec6, +0x00015ec4, +0x00015ec2, +0x00015ec1, +0x00015ebe, +0x00015ebd, +0x00015ebb, +0x00015eb9, +0x00015eb7, +0x00015eb4, +0x00015eb3, +0x00015eb2, +0x00015eaf, +0x00015eae, +0x00015eac, +0x00015eaa, +0x00015ea8, +0x00015ea7, +0x00015ea4, +0x00015ea3, +0x00015ea0, +0x00015e9f, +0x00015e9d, +0x00015e9a, +0x00015e99, +0x00015e98, +0x00015e95, +0x00015e94, +0x00015e92, +0x00015e90, +0x00015e8e, +0x00015e8b, +0x00015e8a, +0x00015e89, +0x00015e86, +0x00015e85, +0x00015e83, +0x00015e81, +0x00015e7f, +0x00015e7c, +0x00015e7b, +0x00015e7a, +0x00015e77, +0x00015e76, +0x00015e74, +0x00015e71, +0x00015e70, +0x00015e6f, +0x00015e6c, +0x00015e6b, +0x00015e68, +0x00015e67, +0x00015e65, +0x00015e62, +0x00015e61, +0x00015e60, +0x00015e5d, +0x00015e5c, +0x00015e59, +0x00015e58, +0x00015e56, +0x00015e53, +0x00015e52, +0x00015e51, +0x00015e4e, +0x00015e4d, +0x00015e4b, +0x00015e48, +0x00015e47, +0x00015e44, +0x00015e43, +0x00015e42, +0x00015e3f, +0x00015e3e, +0x00015e3c, +0x00015e39, +0x00015e38, +0x00015e37, +0x00015e34, +0x00015e33, +0x00015e30, +0x00015e2e, +0x00015e2d, +0x00015e2a, +0x00015e29, +0x00015e28, +0x00015e25, +0x00015e24, +0x00015e21, +0x00015e1f, +0x00015e1e, +0x00015e1b, +0x00015e1a, +0x00015e19, +0x00015e16, +0x00015e15, +0x00015e13, +0x00015e10, +0x00015e0f, +0x00015e0c, +0x00015e0b, +0x00015e0a, +0x00015e07, +0x00015e05, +0x00015e04, +0x00015e01, +0x00015e00, +0x00015dff, +0x00015dfc, +0x00015dfb, +0x00015df8, +0x00015df6, +0x00015df5, +0x00015df2, +0x00015df1, +0x00015df0, +0x00015ded, +0x00015deb, +0x00015de9, +0x00015de7, +0x00015de6, +0x00015de3, +0x00015de2, +0x00015de1, +0x00015dde, +0x00015ddc, +0x00015ddb, +0x00015dd8, +0x00015dd7, +0x00015dd4, +0x00015dd3, +0x00015dd2, +0x00015dcf, +0x00015dcd, +0x00015dcc, +0x00015dc9, +0x00015dc8, +0x00015dc5, +0x00015dc4, +0x00015dc2, +0x00015dc0, +0x00015dbe, +0x00015dbd, +0x00015dba, +0x00015db9, +0x00015db8, +0x00015db5, +0x00015db3, +0x00015db1, +0x00015daf, +0x00015dae, +0x00015dab, +0x00015daa, +0x00015da9, +0x00015da6, +0x00015da4, +0x00015da3, +0x00015da0, +0x00015d9f, +0x00015d9c, +0x00015d9b, +0x00015d99, +0x00015d97, +0x00015d95, +0x00015d94, +0x00015d91, +0x00015d90, +0x00015d8d, +0x00015d8c, +0x00015d8a, +0x00015d88, +0x00015d86, +0x00015d85, +0x00015d82, +0x00015d81, +0x00015d7f, +0x00015d7d, +0x00015d7b, +0x00015d79, +0x00015d77, +0x00015d76, +0x00015d73, +0x00015d72, +0x00015d70, +0x00015d6e, +0x00015d6c, +0x00015d6a, +0x00015d68, +0x00015d67, +0x00015d64, +0x00015d63, +0x00015d61, +0x00015d5f, +0x00015d5d, +0x00015d5c, +0x00015d59, +0x00015d58, +0x00015d55, +0x00015d54, +0x00015d52, +0x00015d50, +0x00015d4e, +0x00015d4d, +0x00015d4a, +0x00015d49, +0x00015d47, +0x00015d45, +0x00015d43, +0x00015d41, +0x00015d3f, +0x00015d3e, +0x00015d3b, +0x00015d3a, +0x00015d38, +0x00015d36, +0x00015d34, +0x00015d32, +0x00015d30, +0x00015d2f, +0x00015d2c, +0x00015d2b, +0x00015d29, +0x00015d27, +0x00015d25, +0x00015d24, +0x00015d21, +0x00015d20, +0x00015d1d, +0x00015d1c, +0x00015d1a, +0x00015d18, +0x00015d16, +0x00015d15, +0x00015d12, +0x00015d11, +0x00015d0f, +0x00015d0e, +0x00015d0c, +0x00015d0a, +0x00015d08, +0x00015d05, +0x00015d04, +0x00015d03, +0x00015d00, +0x00015cff, +0x00015cfd, +0x00015cfb, +0x00015cf9, +0x00015cf8, +0x00015cf5, +0x00015cf4, +0x00015cf1, +0x00015cf0, +0x00015cee, +0x00015cec, +0x00015cea, +0x00015ce9, +0x00015ce6, +0x00015ce5, +0x00015ce3, +0x00015ce1, +0x00015cdf, +0x00015cdd, +0x00015cdb, +0x00015cda, +0x00015cd7, +0x00015cd6, +0x00015cd4, +0x00015cd2, +0x00015cd0, +0x00015ccf, +0x00015ccc, +0x00015ccb, +0x00015cc8, +0x00015cc7, +0x00015cc5, +0x00015cc3, +0x00015cc1, +0x00015cc0, +0x00015cbd, +0x00015cbc, +0x00015cba, +0x00015cb8, +0x00015cb6, +0x00015cb4, +0x00015cb2, +0x00015cb1, +0x00015cae, +0x00015cad, +0x00015cab, +0x00015ca9, +0x00015ca7, +0x00015ca6, +0x00015ca3, +0x00015ca2, +0x00015c9f, +0x00015c9e, +0x00015c9c, +0x00015c9a, +0x00015c98, +0x00015c97, +0x00015c94, +0x00015c93, +0x00015c92, +0x00015c8f, +0x00015c8d, +0x00015c8b, +0x00015c89, +0x00015c88, +0x00015c85, +0x00015c84, +0x00015c83, +0x00015c80, +0x00015c7e, +0x00015c7d, +0x00015c7a, +0x00015c79, +0x00015c76, +0x00015c75, +0x00015c74, +0x00015c71, +0x00015c6f, +0x00015c6e, +0x00015c6b, +0x00015c6a, +0x00015c69, +0x00015c66, +0x00015c65, +0x00015c62, +0x00015c60, +0x00015c5f, +0x00015c5c, +0x00015c5b, +0x00015c5a, +0x00015c57, +0x00015c56, +0x00015c54, +0x00015c52, +0x00015c50, +0x00015c4d, +0x00015c4c, +0x00015c4b, +0x00015c48, +0x00015c47, +0x00015c45, +0x00015c43, +0x00015c41, +0x00015c40, +0x00015c3d, +0x00015c3c, +0x00015c39, +0x00015c38, +0x00015c36, +0x00015c34, +0x00015c32, +0x00015c31, +0x00015c2e, +0x00015c2d, +0x00015c2b, +0x00015c29, +0x00015c27, +0x00015c25, +0x00015c23, +0x00015c22, +0x00015c21, +0x00015c1e, +0x00015c1d, +0x00015c1b, +0x00015c18, +0x00015c17, +0x00015c14, +0x00015c13, +0x00015c12, +0x00015c0f, +0x00015c0e, +0x00015c0c, +0x00015c0a, +0x00015c08, +0x00015c07, +0x00015c04, +0x00015c03, +0x00015c01, +0x00015bff, +0x00015bfd, +0x00015bfb, +0x00015bf9, +0x00015bf8, +0x00015bf5, +0x00015bf4, +0x00015bf2, +0x00015bf0, +0x00015bee, +0x00015bed, +0x00015bea, +0x00015be9, +0x00015be8, +0x00015be5, +0x00015be3, +0x00015be1, +0x00015bdf, +0x00015bde, +0x00015bdb, +0x00015bda, +0x00015bd9, +0x00015bd6, +0x00015bd5, +0x00015bd3, +0x00015bd0, +0x00015bcf, +0x00015bcc, +0x00015bcb, +0x00015bca, +0x00015bc7, +0x00015bc6, +0x00015bc4, +0x00015bc1, +0x00015bc0, +0x00015bbf, +0x00015bbc, +0x00015bbb, +0x00015bb9, +0x00015bb7, +0x00015bb5, +0x00015bb3, +0x00015bb1, +0x00015bb0, +0x00015bad, +0x00015bac, +0x00015baa, +0x00015ba8, +0x00015ba6, +0x00015ba5, +0x00015ba2, +0x00015ba1, +0x00015b9e, +0x00015b9d, +0x00015b9b, +0x00015b99, +0x00015b97, +0x00015b96, +0x00015b93, +0x00015b92, +0x00015b91, +0x00015b8e, +0x00015b8c, +0x00015b8b, +0x00015b88, +0x00015b87, +0x00015b84, +0x00015b83, +0x00015b82, +0x00015b7f, +0x00015b7e, +0x00015b7c, +0x00015b79, +0x00015b78, +0x00015b77, +0x00015b74, +0x00015b73, +0x00015b71, +0x00015b6f, +0x00015b6d, +0x00015b6a, +0x00015b69, +0x00015b68, +0x00015b65, +0x00015b64, +0x00015b62, +0x00015b60, +0x00015b5e, +0x00015b5d, +0x00015b5a, +0x00015b59, +0x00015b56, +0x00015b55, +0x00015b53, +0x00015b51, +0x00015b4f, +0x00015b4e, +0x00015b4b, +0x00015b4a, +0x00015b48, +0x00015b46, +0x00015b44, +0x00015b43, +0x00015b40, +0x00015b3f, +0x00015b3c, +0x00015b3b, +0x00015b3a, +0x00015b37, +0x00015b36, +0x00015b34, +0x00015b32, +0x00015b31, +0x00015b2e, +0x00015b2d, +0x00015b2b, +0x00015b29, +0x00015b27, +0x00015b26, +0x00015b23, +0x00015b22, +0x00015b1f, +0x00015b1e, +0x00015b1c, +0x00015b1a, +0x00015b18, +0x00015b17, +0x00015b14, +0x00015b13, +0x00015b12, +0x00015b0f, +0x00015b0e, +0x00015b0c, +0x00015b09, +0x00015b08, +0x00015b07, +0x00015b04, +0x00015b03, +0x00015b00, +0x00015aff, +0x00015afd, +0x00015afb, +0x00015af9, +0x00015af8, +0x00015af5, +0x00015af4, +0x00015af2, +0x00015af0, +0x00015aee, +0x00015aed, +0x00015aea, +0x00015ae9, +0x00015ae6, +0x00015ae5, +0x00015ae4, +0x00015ae1, +0x00015adf, +0x00015ade, +0x00015adb, +0x00015ada, +0x00015ad9, +0x00015ad6, +0x00015ad5, +0x00015ad3, +0x00015ad1, +0x00015acf, +0x00015acc, +0x00015acb, +0x00015aca, +0x00015ac7, +0x00015ac6, +0x00015ac4, +0x00015ac2, +0x00015ac0, +0x00015abf, +0x00015abc, +0x00015abb, +0x00015aba, +0x00015ab7, +0x00015ab5, +0x00015ab4, +0x00015ab1, +0x00015ab0, +0x00015aad, +0x00015aac, +0x00015aab, +0x00015aa8, +0x00015aa7, +0x00015aa5, +0x00015aa2, +0x00015aa1, +0x00015aa0, +0x00015a9d, +0x00015a9c, +0x00015a9a, +0x00015a98, +0x00015a96, +0x00015a94, +0x00015a92, +0x00015a91, +0x00015a8e, +0x00015a8d, +0x00015a8b, +0x00015a89, +0x00015a87, +0x00015a86, +0x00015a83, +0x00015a82, +0x00015a81, +0x00015a7e, +0x00015a7d, +0x00015a7a, +0x00015a78, +0x00015a77, +0x00015a74, +0x00015a73, +0x00015a72, +0x00015a6f, +0x00015a6e, +0x00015a6c, +0x00015a6a, +0x00015a68, +0x00015a67, +0x00015a64, +0x00015a63, +0x00015a61, +0x00015a5f, +0x00015a5d, +0x00015a5b, +0x00015a59, +0x00015a58, +0x00015a55, +0x00015a54, +0x00015a53, +0x00015a50, +0x00015a4e, +0x00015a4d, +0x00015a4c, +0x00015a49, +0x00015a48, +0x00015a45, +0x00015a44, +0x00015a42, +0x00015a40, +0x00015a3e, +0x00015a3d, +0x00015a3a, +0x00015a39, +0x00015a37, +0x00015a35, +0x00015a33, +0x00015a32, +0x00015a2f, +0x00015a2e, +0x00015a2d, +0x00015a2a, +0x00015a29, +0x00015a26, +0x00015a24, +0x00015a23, +0x00015a20, +0x00015a1f, +0x00015a1e, +0x00015a1b, +0x00015a1a, +0x00015a18, +0x00015a16, +0x00015a14, +0x00015a13, +0x00015a10, +0x00015a0f, +0x00015a0e, +0x00015a0b, +0x00015a09, +0x00015a07, +0x00015a05, +0x00015a04, +0x00015a01, +0x00015a00, +0x000159ff, +0x000159fc, +0x000159fb, +0x000159f9, +0x000159f7, +0x000159f5, +0x000159f4, +0x000159f1, +0x000159f0, +0x000159ee, +0x000159ec, +0x000159ea, +0x000159e9, +0x000159e6, +0x000159e5, +0x000159e2, +0x000159e1, +0x000159e0, +0x000159dd, +0x000159dc, +0x000159da, +0x000159d7, +0x000159d6, +0x000159d5, +0x000159d2, +0x000159d1, +0x000159cf, +0x000159cd, +0x000159cb, +0x000159ca, +0x000159c7, +0x000159c6, +0x000159c3, +0x000159c2, +0x000159c0, +0x000159be, +0x000159bc, +0x000159bb, +0x000159b8, +0x000159b7, +0x000159b6, +0x000159b3, +0x000159b2, +0x000159b0, +0x000159ae, +0x000159ac, +0x000159ab, +0x000159a8, +0x000159a7, +0x000159a5, +0x000159a3, +0x000159a1, +0x0001599f, +0x0001599d, +0x0001599c, +0x00015999, +0x00015998, +0x00015997, +0x00015994, +0x00015993, +0x00015991, +0x0001598e, +0x0001598d, +0x0001598c, +0x00015989, +0x00015988, +0x00015986, +0x00015984, +0x00015982, +0x00015980, +0x0001597e, +0x0001597d, +0x0001597a, +0x00015979, +0x00015977, +0x00015975, +0x00015973, +0x00015972, +0x0001596f, +0x0001596e, +0x0001596d, +0x0001596a, +0x00015969, +0x00015967, +0x00015965, +0x00015963, +0x00015961, +0x00015960, +0x0001595e, +0x0001595c, +0x0001595a, +0x00015959, +0x00015956, +0x00015955, +0x00015952, +0x00015951, +0x00015950, +0x0001594d, +0x0001594b, +0x0001594a, +0x00015947, +0x00015946, +0x00015945, +0x00015942, +0x00015941, +0x0001593f, +0x0001593d, +0x0001593b, +0x0001593a, +0x00015937, +0x00015936, +0x00015935, +0x00015932, +0x00015931, +0x0001592f, +0x0001592c, +0x0001592b, +0x00015928, +0x00015927, +0x00015926, +0x00015923, +0x00015922, +0x00015920, +0x0001591e, +0x0001591c, +0x0001591b, +0x00015918, +0x00015917, +0x00015916, +0x00015913, +0x00015912, +0x00015910, +0x0001590d, +0x0001590c, +0x0001590b, +0x00015908, +0x00015907, +0x00015905, +0x00015903, +0x00015901, +0x000158ff, +0x000158fd, +0x000158fc, +0x000158f9, +0x000158f8, +0x000158f7, +0x000158f4, +0x000158f3, +0x000158f1, +0x000158ee, +0x000158ed, +0x000158ec, +0x000158e9, +0x000158e8, +0x000158e6, +0x000158e4, +0x000158e2, +0x000158e1, +0x000158de, +0x000158dd, +0x000158dc, +0x000158d9, +0x000158d8, +0x000158d5, +0x000158d4, +0x000158d2, +0x000158cf, +0x000158ce, +0x000158cd, +0x000158ca, +0x000158c9, +0x000158c7, +0x000158c5, +0x000158c3, +0x000158c2, +0x000158bf, +0x000158be, +0x000158bd, +0x000158ba, +0x000158b9, +0x000158b7, +0x000158b5, +0x000158b3, +0x000158b2, +0x000158af, +0x000158ae, +0x000158ab, +0x000158aa, +0x000158a8, +0x000158a6, +0x000158a4, +0x000158a3, +0x000158a0, +0x0001589f, +0x0001589e, +0x0001589b, +0x0001589a, +0x00015898, +0x00015896, +0x00015894, +0x00015893, +0x00015890, +0x0001588f, +0x0001588d, +0x0001588b, +0x00015889, +0x00015888, +0x00015885, +0x00015884, +0x00015881, +0x00015880, +0x0001587f, +0x0001587c, +0x0001587b, +0x00015879, +0x00015878, +0x00015875, +0x00015874, +0x00015872, +0x00015870, +0x0001586e, +0x0001586d, +0x0001586a, +0x00015869, +0x00015867, +0x00015865, +0x00015863, +0x00015862, +0x0001585f, +0x0001585e, +0x0001585d, +0x0001585a, +0x00015859, +0x00015856, +0x00015855, +0x00015853, +0x00015851, +0x0001584f, +0x0001584e, +0x0001584b, +0x0001584a, +0x00015849, +0x00015846, +0x00015845, +0x00015843, +0x00015841, +0x0001583f, +0x0001583e, +0x0001583b, +0x0001583a, +0x00015838, +0x00015836, +0x00015834, +0x00015833, +0x00015830, +0x0001582f, +0x0001582e, +0x0001582b, +0x0001582a, +0x00015828, +0x00015826, +0x00015824, +0x00015823, +0x00015820, +0x0001581f, +0x0001581c, +0x0001581b, +0x0001581a, +0x00015817, +0x00015816, +0x00015814, +0x00015811, +0x00015810, +0x0001580f, +0x0001580c, +0x0001580b, +0x00015809, +0x00015807, +0x00015805, +0x00015804, +0x00015801, +0x00015800, +0x000157ff, +0x000157fc, +0x000157fb, +0x000157f9, +0x000157f7, +0x000157f5, +0x000157f4, +0x000157f1, +0x000157f0, +0x000157ef, +0x000157ec, +0x000157eb, +0x000157e9, +0x000157e6, +0x000157e5, +0x000157e2, +0x000157e1, +0x000157e0, +0x000157dd, +0x000157dc, +0x000157da, +0x000157d8, +0x000157d6, +0x000157d5, +0x000157d2, +0x000157d1, +0x000157d0, +0x000157cd, +0x000157cc, +0x000157ca, +0x000157c8, +0x000157c6, +0x000157c5, +0x000157c2, +0x000157c1, +0x000157c0, +0x000157bd, +0x000157bb, +0x000157ba, +0x000157b7, +0x000157b6, +0x000157b5, +0x000157b2, +0x000157b1, +0x000157af, +0x000157ad, +0x000157ab, +0x000157a9, +0x000157a7, +0x000157a6, +0x000157a3, +0x000157a2, +0x000157a1, +0x0001579e, +0x0001579d, +0x0001579b, +0x00015799, +0x00015797, +0x00015796, +0x00015793, +0x00015792, +0x0001578f, +0x0001578e, +0x0001578d, +0x0001578a, +0x00015789, +0x00015787, +0x00015785, +0x00015783, +0x00015782, +0x0001577f, +0x0001577e, +0x0001577d, +0x0001577a, +0x00015779, +0x00015777, +0x00015775, +0x00015773, +0x00015772, +0x0001576f, +0x0001576e, +0x0001576d, +0x0001576a, +0x00015769, +0x00015767, +0x00015764, +0x00015763, +0x00015762, +0x0001575f, +0x0001575e, +0x0001575c, +0x0001575a, +0x00015758, +0x00015757, +0x00015754, +0x00015753, +0x00015752, +0x0001574f, +0x0001574e, +0x0001574b, +0x0001574a, +0x00015748, +0x00015746, +0x00015744, +0x00015743, +0x00015740, +0x0001573f, +0x0001573e, +0x0001573b, +0x0001573a, +0x00015738, +0x00015736, +0x00015734, +0x00015733, +0x00015730, +0x0001572f, +0x0001572e, +0x0001572b, +0x0001572a, +0x00015728, +0x00015726, +0x00015724, +0x00015723, +0x00015720, +0x0001571f, +0x0001571d, +0x0001571b, +0x00015719, +0x00015718, +0x00015715, +0x00015714, +0x00015713, +0x00015710, +0x0001570f, +0x0001570d, +0x0001570b, +0x00015709, +0x00015708, +0x00015705, +0x00015704, +0x00015703, +0x00015700, +0x000156ff, +0x000156fd, +0x000156fb, +0x000156f9, +0x000156f8, +0x000156f5, +0x000156f4, +0x000156f3, +0x000156f0, +0x000156ef, +0x000156ec, +0x000156eb, +0x000156e9, +0x000156e7, +0x000156e5, +0x000156e4, +0x000156e1, +0x000156e0, +0x000156df, +0x000156dc, +0x000156da, +0x000156d9, +0x000156d6, +0x000156d5, +0x000156d4, +0x000156d1, +0x000156d0, +0x000156ce, +0x000156cc, +0x000156ca, +0x000156c9, +0x000156c6, +0x000156c5, +0x000156c4, +0x000156c1, +0x000156c0, +0x000156be, +0x000156bc, +0x000156ba, +0x000156b9, +0x000156b6, +0x000156b5, +0x000156b4, +0x000156b1, +0x000156b0, +0x000156ae, +0x000156ac, +0x000156aa, +0x000156a8, +0x000156a6, +0x000156a4, +0x000156a3, +0x000156a0, +0x0001569f, +0x0001569e, +0x0001569b, +0x0001569a, +0x00015698, +0x00015696, +0x00015694, +0x00015693, +0x00015690, +0x0001568f, +0x0001568e, +0x0001568b, +0x0001568a, +0x00015688, +0x00015686, +0x00015684, +0x00015683, +0x00015680, +0x0001567f, +0x0001567e, +0x0001567b, +0x0001567a, +0x00015678, +0x00015676, +0x00015674, +0x00015673, +0x00015670, +0x0001566f, +0x0001566e, +0x0001566b, +0x0001566a, +0x00015668, +0x00015666, +0x00015664, +0x00015663, +0x00015660, +0x0001565f, +0x0001565e, +0x0001565b, +0x0001565a, +0x00015658, +0x00015656, +0x00015654, +0x00015653, +0x00015650, +0x0001564f, +0x0001564d, +0x0001564b, +0x00015649, +0x00015648, +0x00015645, +0x00015644, +0x00015643, +0x00015640, +0x0001563f, +0x0001563d, +0x0001563b, +0x00015639, +0x00015638, +0x00015635, +0x00015634, +0x00015633, +0x00015630, +0x0001562f, +0x0001562d, +0x0001562b, +0x00015629, +0x00015628, +0x00015625, +0x00015624, +0x00015623, +0x00015620, +0x0001561f, +0x0001561d, +0x0001561b, +0x00015619, +0x00015618, +0x00015615, +0x00015614, +0x00015613, +0x00015610, +0x0001560f, +0x0001560d, +0x0001560b, +0x00015609, +0x00015608, +0x00015605, +0x00015604, +0x00015603, +0x00015600, +0x000155ff, +0x000155fd, +0x000155fb, +0x000155f9, +0x000155f8, +0x000155f5, +0x000155f4, +0x000155f3, +0x000155f0, +0x000155ef, +0x000155ed, +0x000155eb, +0x000155e9, +0x000155e8, +0x000155e5, +0x000155e4, +0x000155e3, +0x000155e0, +0x000155df, +0x000155dd, +0x000155db, +0x000155d9, +0x000155d8, +0x000155d5, +0x000155d4, +0x000155d3, +0x000155d0, +0x000155cf, +0x000155cd, +0x000155cb, +0x000155c9, +0x000155c6, +0x000155c5, +0x000155c4, +0x000155c1, +0x000155c0, +0x000155be, +0x000155bc, +0x000155ba, +0x000155b9, +0x000155b6, +0x000155b5, +0x000155b4, +0x000155b1, +0x000155b0, +0x000155ae, +0x000155ac, +0x000155ab, +0x000155a9, +0x000155a7, +0x000155a5, +0x000155a4, +0x000155a1, +0x000155a0, +0x0001559f, +0x0001559c, +0x0001559b, +0x00015599, +0x00015597, +0x00015595, +0x00015594, +0x00015591, +0x00015590, +0x0001558f, +0x0001558c, +0x0001558b, +0x00015589, +0x00015587, +0x00015585, +0x00015584, +0x00015581, +0x00015580, +0x0001557f, +0x0001557c, +0x0001557b, +0x00015579, +0x00015577, +0x00015575, +0x00015574, +0x00015571, +0x00015570, +0x0001556f, +0x0001556c, +0x0001556b, +0x00015569, +0x00015567, +0x00015565, +0x00015564, +0x00015561, +0x00015560, +0x0001555f, +0x0001555c, +0x0001555b, +0x00015559, +0x00015557, +0x00015555, +0x00015554, +0x00015551, +0x00015550, +0x0001554f, +0x0001554c, +0x0001554b, +0x00015549, +0x00015547, +0x00015545, +0x00015544, +0x00015541, +0x00015540, +0x0001553f, +0x0001553c, +0x0001553b, +0x00015539, +0x00015537, +0x00015535, +0x00015534, +0x00015531, +0x00015530, +0x0001552f, +0x0001552c, +0x0001552b, +0x00015529, +0x00015527, +0x00015525, +0x00015524, +0x00015521, +0x00015520, +0x0001551f, +0x0001551c, +0x0001551b, +0x00015519, +0x00015517, +0x00015515, +0x00015514, +0x00015511, +0x00015510, +0x0001550f, +0x0001550c, +0x0001550b, +0x00015509, +0x00015507, +0x00015505, +0x00015504, +0x00015501, +0x00015500, +0x000154ff, +0x000154fc, +0x000154fb, +0x000154f9, +0x000154f7, +0x000154f5, +0x000154f4, +0x000154f1, +0x000154f0, +0x000154ef, +0x000154ec, +0x000154eb, +0x000154e9, +0x000154e7, +0x000154e5, +0x000154e3, +0x000154e2, +0x000154df, +0x000154de, +0x000154dc, +0x000154da, +0x000154d8, +0x000154d7, +0x000154d5, +0x000154d3, +0x000154d2, +0x000154cf, +0x000154ce, +0x000154cd, +0x000154ca, +0x000154c9, +0x000154c7, +0x000154c5, +0x000154c3, +0x000154c2, +0x000154bf, +0x000154be, +0x000154bd, +0x000154ba, +0x000154b9, +0x000154b7, +0x000154b5, +0x000154b3, +0x000154b2, +0x000154af, +0x000154ae, +0x000154ad, +0x000154ab, +0x000154a9, +0x000154a7, +0x000154a6, +0x000154a3, +0x000154a2, +0x000154a1, +0x0001549e, +0x0001549d, +0x0001549b, +0x00015499, +0x00015497, +0x00015496, +0x00015493, +0x00015492, +0x00015491, +0x0001548e, +0x0001548d, +0x0001548b, +0x00015489, +0x00015487, +0x00015486, +0x00015483, +0x00015482, +0x00015481, +0x0001547e, +0x0001547d, +0x0001547c, +0x00015479, +0x00015478, +0x00015476, +0x00015474, +0x00015472, +0x00015471, +0x0001546e, +0x0001546d, +0x0001546c, +0x00015469, +0x00015468, +0x00015466, +0x00015464, +0x00015462, +0x00015461, +0x0001545e, +0x0001545d, +0x0001545c, +0x00015459, +0x00015458, +0x00015456, +0x00015454, +0x00015452, +0x00015451, +0x0001544e, +0x0001544d, +0x0001544c, +0x00015449, +0x00015448, +0x00015446, +0x00015444, +0x00015442, +0x00015441, +0x0001543e, +0x0001543d, +0x0001543c, +0x0001543a, +0x00015438, +0x00015436, +0x00015435, +0x00015432, +0x00015431, +0x00015430, +0x0001542d, +0x0001542c, +0x0001542b, +0x00015428, +0x00015427, +0x00015425, +0x00015423, +0x00015421, +0x00015420, +0x0001541d, +0x0001541c, +0x0001541b, +0x00015418, +0x00015417, +0x00015415, +0x00015413, +0x00015411, +0x00015410, +0x0001540d, +0x0001540c, +0x0001540b, +0x00015408, +0x00015407, +0x00015405, +0x00015403, +0x00015401, +0x00015400, +0x000153fd, +0x000153fc, +0x000153fb, +0x000153f8, +0x000153f7, +0x000153f5, +0x000153f3, +0x000153f1, +0x000153f0, +0x000153ed, +0x000153ec, +0x000153eb, +0x000153e8, +0x000153e7, +0x000153e5, +0x000153e3, +0x000153e1, +0x000153e0, +0x000153dd, +0x000153dc, +0x000153db, +0x000153d8, +0x000153d7, +0x000153d6, +0x000153d3, +0x000153d2, +0x000153d0, +0x000153ce, +0x000153cc, +0x000153cb, +0x000153ca, +0x000153c7, +0x000153c6, +0x000153c4, +0x000153c2, +0x000153c0, +0x000153bf, +0x000153bc, +0x000153bb, +0x000153ba, +0x000153b7, +0x000153b6, +0x000153b4, +0x000153b2, +0x000153b0, +0x000153af, +0x000153ac, +0x000153ab, +0x000153aa, +0x000153a7, +0x000153a6, +0x000153a4, +0x000153a2, +0x000153a0, +0x0001539f, +0x0001539c, +0x0001539b, +0x0001539a, +0x00015397, +0x00015396, +0x00015394, +0x00015392, +0x00015390, +0x0001538f, +0x0001538c, +0x0001538b, +0x0001538a, +0x00015387, +0x00015386, +0x00015384, +0x00015382, +0x00015381, +0x0001537f, +0x0001537d, +0x0001537b, +0x0001537a, +0x00015377, +0x00015376, +0x00015375, +0x00015372, +0x00015371, +0x0001536f, +0x0001536d, +0x0001536b, +0x0001536a, +0x00015367, +0x00015366, +0x00015365, +0x00015362, +0x00015361, +0x0001535f, +0x0001535d, +0x0001535b, +0x0001535a, +0x00015359, +0x00015356, +0x00015355, +0x00015353, +0x00015351, +0x0001534f, +0x0001534e, +0x0001534b, +0x0001534a, +0x00015349, +0x00015346, +0x00015345, +0x00015343, +0x00015341, +0x0001533f, +0x0001533e, +0x0001533b, +0x0001533a, +0x00015339, +0x00015336, +0x00015335, +0x00015333, +0x00015331, +0x0001532f, +0x0001532e, +0x0001532c, +0x0001532a, +0x00015329, +0x00015326, +0x00015325, +0x00015324, +0x00015321, +0x00015320, +0x0001531e, +0x0001531d, +0x0001531a, +0x00015319, +0x00015318, +0x00015315, +0x00015314, +0x00015313, +0x00015310, +0x0001530f, +0x0001530d, +0x0001530b, +0x00015309, +0x00015308, +0x00015305, +0x00015304, +0x00015303, +0x00015300, +0x000152ff, +0x000152fd, +0x000152fb, +0x000152f9, +0x000152f8, +0x000152f5, +0x000152f4, +0x000152f3, +0x000152f0, +0x000152ef, +0x000152ed, +0x000152ec, +0x000152e9, +0x000152e8, +0x000152e7, +0x000152e4, +0x000152e3, +0x000152e2, +0x000152df, +0x000152de, +0x000152dc, +0x000152da, +0x000152d8, +0x000152d7, +0x000152d4, +0x000152d3, +0x000152d2, +0x000152cf, +0x000152ce, +0x000152cc, +0x000152ca, +0x000152c8, +0x000152c7, +0x000152c4, +0x000152c3, +0x000152c2, +0x000152bf, +0x000152be, +0x000152bc, +0x000152ba, +0x000152b8, +0x000152b7, +0x000152b5, +0x000152b3, +0x000152b2, +0x000152b1, +0x000152ae, +0x000152ad, +0x000152ab, +0x000152a9, +0x000152a7, +0x000152a6, +0x000152a3, +0x000152a2, +0x000152a1, +0x0001529e, +0x0001529d, +0x0001529b, +0x00015299, +0x00015297, +0x00015296, +0x00015293, +0x00015292, +0x00015291, +0x0001528e, +0x0001528d, +0x0001528b, +0x00015289, +0x00015287, +0x00015286, +0x00015284, +0x00015282, +0x00015281, +0x0001527e, +0x0001527d, +0x0001527c, +0x00015279, +0x00015278, +0x00015276, +0x00015274, +0x00015272, +0x00015271, +0x00015270, +0x0001526d, +0x0001526c, +0x0001526a, +0x00015268, +0x00015266, +0x00015265, +0x00015262, +0x00015261, +0x00015260, +0x0001525d, +0x0001525c, +0x0001525a, +0x00015258, +0x00015257, +0x00015255, +0x00015253, +0x00015251, +0x00015250, +0x0001524d, +0x0001524c, +0x0001524b, +0x00015248, +0x00015247, +0x00015245, +0x00015243, +0x00015241, +0x00015241, +0x0001523e, +0x0001523d, +0x0001523b, +0x00015239, +0x00015237, +0x00015236, +0x00015233, +0x00015232, +0x00015231, +0x0001522e, +0x0001522d, +0x0001522c, +0x00015229, +0x00015228, +0x00015226, +0x00015224, +0x00015222, +0x00015221, +0x0001521e, +0x0001521d, +0x0001521c, +0x00015219, +0x00015218, +0x00015216, +0x00015214, +0x00015212, +0x00015211, +0x00015210, +0x0001520d, +0x0001520c, +0x0001520b, +0x00015208, +0x00015207, +0x00015205, +0x00015203, +0x00015201, +0x00015200, +0x000151fd, +0x000151fc, +0x000151fb, +0x000151f8, +0x000151f7, +0x000151f5, +0x000151f3, +0x000151f1, +0x000151f0, +0x000151ee, +0x000151ec, +0x000151eb, +0x000151e8, +0x000151e7, +0x000151e6, +0x000151e4, +0x000151e2, +0x000151e0, +0x000151df, +0x000151dc, +0x000151db, +0x000151da, +0x000151d7, +0x000151d6, +0x000151d4, +0x000151d2, +0x000151d0, +0x000151cf, +0x000151cd, +0x000151cb, +0x000151ca, +0x000151c7, +0x000151c6, +0x000151c5, +0x000151c2, +0x000151c1, +0x000151bf, +0x000151bd, +0x000151bb, +0x000151ba, +0x000151b9, +0x000151b6, +0x000151b5, +0x000151b3, +0x000151b1, +0x000151af, +0x000151ae, +0x000151ac, +0x000151aa, +0x000151a9, +0x000151a6, +0x000151a5, +0x000151a4, +0x000151a1, +0x000151a0, +0x0001519e, +0x0001519c, +0x0001519a, +0x00015199, +0x00015196, +0x00015195, +0x00015194, +0x00015191, +0x00015190, +0x0001518e, +0x0001518d, +0x0001518a, +0x00015189, +0x00015188, +0x00015185, +0x00015184, +0x00015183, +0x00015180, +0x0001517f, +0x0001517d, +0x0001517b, +0x00015179, +0x00015178, +0x00015175, +0x00015174, +0x00015173, +0x00015170, +0x0001516f, +0x0001516d, +0x0001516b, +0x00015169, +0x00015168, +0x00015166, +0x00015164, +0x00015163, +0x00015161, +0x0001515f, +0x0001515d, +0x0001515c, +0x0001515a, +0x00015158, +0x00015157, +0x00015156, +0x00015153, +0x00015152, +0x00015150, +0x0001514e, +0x0001514c, +0x0001514b, +0x00015148, +0x00015147, +0x00015146, +0x00015143, +0x00015142, +0x00015141, +0x0001513e, +0x0001513d, +0x0001513b, +0x00015139, +0x00015137, +0x00015136, +0x00015135, +0x00015132, +0x00015131, +0x0001512f, +0x0001512d, +0x0001512b, +0x0001512a, +0x00015127, +0x00015126, +0x00015125, +0x00015122, +0x00015121, +0x00015120, +0x0001511d, +0x0001511c, +0x0001511a, +0x00015118, +0x00015116, +0x00015115, +0x00015114, +0x00015111, +0x00015110, +0x0001510e, +0x0001510c, +0x0001510b, +0x00015109, +0x00015107, +0x00015105, +0x00015104, +0x00015101, +0x00015100, +0x000150ff, +0x000150fc, +0x000150fb, +0x000150f9, +0x000150f7, +0x000150f5, +0x000150f4, +0x000150f3, +0x000150f0, +0x000150ef, +0x000150ee, +0x000150eb, +0x000150ea, +0x000150e8, +0x000150e6, +0x000150e4, +0x000150e3, +0x000150e0, +0x000150df, +0x000150de, +0x000150db, +0x000150da, +0x000150d9, +0x000150d6, +0x000150d5, +0x000150d3, +0x000150d1, +0x000150cf, +0x000150ce, +0x000150cd, +0x000150ca, +0x000150c9, +0x000150c7, +0x000150c5, +0x000150c3, +0x000150c2, +0x000150bf, +0x000150be, +0x000150bd, +0x000150ba, +0x000150b9, +0x000150b8, +0x000150b5, +0x000150b4, +0x000150b2, +0x000150b0, +0x000150ae, +0x000150ad, +0x000150ac, +0x000150a9, +0x000150a8, +0x000150a6, +0x000150a4, +0x000150a3, +0x000150a1, +0x0001509f, +0x0001509d, +0x0001509c, +0x00015099, +0x00015098, +0x00015097, +0x00015094, +0x00015093, +0x00015091, +0x0001508f, +0x0001508d, +0x0001508c, +0x0001508b, +0x00015088, +0x00015087, +0x00015086, +0x00015083, +0x00015082, +0x0001507f, +0x0001507e, +0x0001507d, +0x0001507a, +0x00015079, +0x00015077, +0x00015076, +0x00015074, +0x00015072, +0x00015071, +0x0001506e, +0x0001506d, +0x0001506c, +0x00015069, +0x00015068, +0x00015066, +0x00015064, +0x00015062, +0x00015061, +0x0001505f, +0x0001505d, +0x0001505c, +0x0001505b, +0x00015058, +0x00015057, +0x00015055, +0x00015053, +0x00015051, +0x00015050, +0x0001504d, +0x0001504c, +0x0001504b, +0x00015048, +0x00015047, +0x00015046, +0x00015043, +0x00015042, +0x00015040, +0x0001503f, +0x0001503c, +0x0001503b, +0x0001503a, +0x00015037, +0x00015036, +0x00015035, +0x00015032, +0x00015031, +0x0001502f, +0x0001502d, +0x0001502b, +0x0001502a, +0x00015027, +0x00015026, +0x00015025, +0x00015023, +0x00015021, +0x00015020, +0x0001501e, +0x0001501c, +0x0001501a, +0x00015019, +0x00015016, +0x00015015, +0x00015014, +0x00015011, +0x00015010, +0x0001500e, +0x0001500c, +0x0001500b, +0x00015009, +0x00015008, +0x00015005, +0x00015004, +0x00015003, +0x00015000, +0x00014fff, +0x00014ffd, +0x00014ffb, +0x00014ff9, +0x00014ff8, +0x00014ff6, +0x00014ff4, +0x00014ff3, +0x00014ff0, +0x00014fef, +0x00014fee, +0x00014fec, +0x00014fea, +0x00014fe8, +0x00014fe7, +0x00014fe4, +0x00014fe3, +0x00014fe2, +0x00014fdf, +0x00014fde, +0x00014fdd, +0x00014fda, +0x00014fd9, +0x00014fd7, +0x00014fd5, +0x00014fd3, +0x00014fd2, +0x00014fd1, +0x00014fce, +0x00014fcd, +0x00014fcc, +0x00014fc9, +0x00014fc8, +0x00014fc6, +0x00014fc4, +0x00014fc2, +0x00014fc1, +0x00014fbe, +0x00014fbd, +0x00014fbc, +0x00014fb9, +0x00014fb8, +0x00014fb7, +0x00014fb5, +0x00014fb3, +0x00014fb1, +0x00014fb0, +0x00014fad, +0x00014fac, +0x00014fab, +0x00014fa8, +0x00014fa6, +0x00014fa5, +0x00014fa4, +0x00014fa1, +0x00014fa0, +0x00014f9e, +0x00014f9c, +0x00014f9a, +0x00014f99, +0x00014f96, +0x00014f95, +0x00014f94, +0x00014f93, +0x00014f90, +0x00014f8f, +0x00014f8d, +0x00014f8b, +0x00014f89, +0x00014f88, +0x00014f85, +0x00014f84, +0x00014f83, +0x00014f80, +0x00014f7f, +0x00014f7e, +0x00014f7c, +0x00014f7a, +0x00014f78, +0x00014f77, +0x00014f74, +0x00014f73, +0x00014f72, +0x00014f6f, +0x00014f6e, +0x00014f6d, +0x00014f6a, +0x00014f69, +0x00014f67, +0x00014f66, +0x00014f63, +0x00014f62, +0x00014f61, +0x00014f5e, +0x00014f5d, +0x00014f5c, +0x00014f59, +0x00014f58, +0x00014f56, +0x00014f54, +0x00014f52, +0x00014f51, +0x00014f50, +0x00014f4d, +0x00014f4c, +0x00014f4b, +0x00014f48, +0x00014f47, +0x00014f45, +0x00014f43, +0x00014f41, +0x00014f40, +0x00014f3e, +0x00014f3c, +0x00014f3b, +0x00014f3a, +0x00014f37, +0x00014f36, +0x00014f34, +0x00014f32, +0x00014f30, +0x00014f2f, +0x00014f2c, +0x00014f2b, +0x00014f2a, +0x00014f27, +0x00014f26, +0x00014f25, +0x00014f22, +0x00014f21, +0x00014f1f, +0x00014f1e, +0x00014f1b, +0x00014f1a, +0x00014f19, +0x00014f16, +0x00014f15, +0x00014f14, +0x00014f11, +0x00014f10, +0x00014f0e, +0x00014f0c, +0x00014f0a, +0x00014f09, +0x00014f08, +0x00014f05, +0x00014f04, +0x00014f03, +0x00014f00, +0x00014eff, +0x00014efd, +0x00014efb, +0x00014ef9, +0x00014ef8, +0x00014ef6, +0x00014ef4, +0x00014ef3, +0x00014ef2, +0x00014eef, +0x00014eee, +0x00014eec, +0x00014eea, +0x00014ee8, +0x00014ee7, +0x00014ee5, +0x00014ee3, +0x00014ee2, +0x00014edf, +0x00014ede, +0x00014edd, +0x00014edb, +0x00014ed9, +0x00014ed7, +0x00014ed6, +0x00014ed4, +0x00014ed2, +0x00014ed1, +0x00014ece, +0x00014ecd, +0x00014ecc, +0x00014ec9, +0x00014ec8, +0x00014ec6, +0x00014ec4, +0x00014ec2, +0x00014ec1, +0x00014ebe, +0x00014ebd, +0x00014ebc, +0x00014eb9, +0x00014eb8, +0x00014eb7, +0x00014eb5, +0x00014eb3, +0x00014eb1, +0x00014eb0, +0x00014eae, +0x00014eac, +0x00014eab, +0x00014ea8, +0x00014ea7, +0x00014ea6, +0x00014ea3, +0x00014ea2, +0x00014ea0, +0x00014e9f, +0x00014e9d, +0x00014e9b, +0x00014e9a, +0x00014e97, +0x00014e96, +0x00014e95, +0x00014e92, +0x00014e91, +0x00014e90, +0x00014e8e, +0x00014e8c, +0x00014e8a, +0x00014e89, +0x00014e86, +0x00014e85, +0x00014e84, +0x00014e81, +0x00014e80, +0x00014e7f, +0x00014e7c, +0x00014e7b, +0x00014e79, +0x00014e78, +0x00014e75, +0x00014e74, +0x00014e73, +0x00014e70, +0x00014e6f, +0x00014e6e, +0x00014e6b, +0x00014e6a, +0x00014e68, +0x00014e67, +0x00014e64, +0x00014e63, +0x00014e62, +0x00014e5f, +0x00014e5e, +0x00014e5d, +0x00014e5a, +0x00014e59, +0x00014e57, +0x00014e55, +0x00014e54, +0x00014e52, +0x00014e51, +0x00014e4e, +0x00014e4d, +0x00014e4c, +0x00014e49, +0x00014e48, +0x00014e46, +0x00014e44, +0x00014e43, +0x00014e41, +0x00014e40, +0x00014e3d, +0x00014e3c, +0x00014e3b, +0x00014e38, +0x00014e37, +0x00014e35, +0x00014e33, +0x00014e32, +0x00014e30, +0x00014e2e, +0x00014e2c, +0x00014e2b, +0x00014e2a, +0x00014e27, +0x00014e26, +0x00014e25, +0x00014e22, +0x00014e21, +0x00014e1f, +0x00014e1d, +0x00014e1b, +0x00014e1a, +0x00014e19, +0x00014e16, +0x00014e15, +0x00014e14, +0x00014e11, +0x00014e10, +0x00014e0e, +0x00014e0c, +0x00014e0a, +0x00014e09, +0x00014e07, +0x00014e05, +0x00014e04, +0x00014e03, +0x00014e00, +0x00014dff, +0x00014dfd, +0x00014dfb, +0x00014df9, +0x00014df8, +0x00014df6, +0x00014df4, +0x00014df3, +0x00014df2, +0x00014def, +0x00014dee, +0x00014dec, +0x00014dea, +0x00014de9, +0x00014de7, +0x00014de5, +0x00014de3, +0x00014de2, +0x00014ddf, +0x00014dde, +0x00014ddd, +0x00014ddb, +0x00014dd9, +0x00014dd8, +0x00014dd6, +0x00014dd4, +0x00014dd2, +0x00014dd1, +0x00014dce, +0x00014dcd, +0x00014dcc, +0x00014dc9, +0x00014dc8, +0x00014dc7, +0x00014dc5, +0x00014dc3, +0x00014dc1, +0x00014dc0, +0x00014dbd, +0x00014dbc, +0x00014dbb, +0x00014db8, +0x00014db7, +0x00014db6, +0x00014db4, +0x00014db2, +0x00014db0, +0x00014daf, +0x00014dad, +0x00014dab, +0x00014daa, +0x00014da7, +0x00014da6, +0x00014da5, +0x00014da2, +0x00014da1, +0x00014d9f, +0x00014d9e, +0x00014d9c, +0x00014d9a, +0x00014d99, +0x00014d96, +0x00014d95, +0x00014d94, +0x00014d91, +0x00014d90, +0x00014d8e, +0x00014d8d, +0x00014d8b, +0x00014d89, +0x00014d88, +0x00014d85, +0x00014d84, +0x00014d83, +0x00014d80, +0x00014d7f, +0x00014d7e, +0x00014d7b, +0x00014d7a, +0x00014d78, +0x00014d77, +0x00014d74, +0x00014d73, +0x00014d72, +0x00014d6f, +0x00014d6e, +0x00014d6d, +0x00014d6a, +0x00014d69, +0x00014d67, +0x00014d66, +0x00014d63, +0x00014d62, +0x00014d61, +0x00014d5e, +0x00014d5d, +0x00014d5c, +0x00014d59, +0x00014d58, +0x00014d56, +0x00014d54, +0x00014d52, +0x00014d51, +0x00014d50, +0x00014d4d, +0x00014d4c, +0x00014d4b, +0x00014d48, +0x00014d47, +0x00014d45, +0x00014d43, +0x00014d42, +0x00014d40, +0x00014d3f, +0x00014d3c, +0x00014d3b, +0x00014d3a, +0x00014d37, +0x00014d36, +0x00014d34, +0x00014d32, +0x00014d31, +0x00014d2f, +0x00014d2d, +0x00014d2b, +0x00014d2a, +0x00014d29, +0x00014d26, +0x00014d25, +0x00014d24, +0x00014d21, +0x00014d20, +0x00014d1e, +0x00014d1c, +0x00014d1a, +0x00014d19, +0x00014d17, +0x00014d16, +0x00014d15, +0x00014d12, +0x00014d11, +0x00014d10, +0x00014d0d, +0x00014d0c, +0x00014d0a, +0x00014d09, +0x00014d07, +0x00014d05, +0x00014d04, +0x00014d01, +0x00014d00, +0x00014cff, +0x00014cfc, +0x00014cfb, +0x00014cf9, +0x00014cf8, +0x00014cf6, +0x00014cf4, +0x00014cf3, +0x00014cf0, +0x00014cef, +0x00014cee, +0x00014ceb, +0x00014cea, +0x00014ce9, +0x00014ce7, +0x00014ce5, +0x00014ce3, +0x00014ce2, +0x00014cdf, +0x00014cde, +0x00014cdd, +0x00014cda, +0x00014cd9, +0x00014cd8, +0x00014cd6, +0x00014cd4, +0x00014cd2, +0x00014cd1, +0x00014ccf, +0x00014ccd, +0x00014ccc, +0x00014cc9, +0x00014cc8, +0x00014cc7, +0x00014cc5, +0x00014cc3, +0x00014cc2, +0x00014cc0, +0x00014cbe, +0x00014cbc, +0x00014cbb, +0x00014cb8, +0x00014cb7, +0x00014cb6, +0x00014cb5, +0x00014cb2, +0x00014cb1, +0x00014caf, +0x00014cad, +0x00014cab, +0x00014caa, +0x00014ca8, +0x00014ca6, +0x00014ca5, +0x00014ca2, +0x00014ca1, +0x00014ca0, +0x00014c9e, +0x00014c9c, +0x00014c9b, +0x00014c99, +0x00014c97, +0x00014c95, +0x00014c94, +0x00014c91, +0x00014c90, +0x00014c8f, +0x00014c8e, +0x00014c8b, +0x00014c8a, +0x00014c88, +0x00014c86, +0x00014c84, +0x00014c83, +0x00014c81, +0x00014c7f, +0x00014c7e, +0x00014c7d, +0x00014c7a, +0x00014c79, +0x00014c77, +0x00014c75, +0x00014c74, +0x00014c72, +0x00014c70, +0x00014c6e, +0x00014c6d, +0x00014c6c, +0x00014c69, +0x00014c68, +0x00014c67, +0x00014c64, +0x00014c63, +0x00014c61, +0x00014c5f, +0x00014c5d, +0x00014c5c, +0x00014c5b, +0x00014c58, +0x00014c57, +0x00014c56, +0x00014c53, +0x00014c52, +0x00014c50, +0x00014c4e, +0x00014c4c, +0x00014c4b, +0x00014c4a, +0x00014c47, +0x00014c46, +0x00014c45, +0x00014c42, +0x00014c41, +0x00014c40, +0x00014c3e, +0x00014c3c, +0x00014c3a, +0x00014c39, +0x00014c38, +0x00014c35, +0x00014c34, +0x00014c33, +0x00014c30, +0x00014c2f, +0x00014c2d, +0x00014c2b, +0x00014c2a, +0x00014c28, +0x00014c27, +0x00014c24, +0x00014c23, +0x00014c22, +0x00014c1f, +0x00014c1e, +0x00014c1d, +0x00014c1a, +0x00014c19, +0x00014c17, +0x00014c16, +0x00014c13, +0x00014c12, +0x00014c11, +0x00014c0e, +0x00014c0d, +0x00014c0c, +0x00014c0a, +0x00014c08, +0x00014c06, +0x00014c05, +0x00014c03, +0x00014c01, +0x00014c00, +0x00014bfd, +0x00014bfc, +0x00014bfb, +0x00014bfa, +0x00014bf7, +0x00014bf6, +0x00014bf4, +0x00014bf2, +0x00014bf0, +0x00014bef, +0x00014bed, +0x00014beb, +0x00014bea, +0x00014be9, +0x00014be6, +0x00014be5, +0x00014be3, +0x00014be1, +0x00014be0, +0x00014bde, +0x00014bdc, +0x00014bda, +0x00014bd9, +0x00014bd8, +0x00014bd5, +0x00014bd4, +0x00014bd3, +0x00014bd0, +0x00014bcf, +0x00014bcd, +0x00014bcc, +0x00014bca, +0x00014bc8, +0x00014bc7, +0x00014bc4, +0x00014bc3, +0x00014bc2, +0x00014bbf, +0x00014bbe, +0x00014bbd, +0x00014bbb, +0x00014bb9, +0x00014bb7, +0x00014bb6, +0x00014bb3, +0x00014bb2, +0x00014bb1, +0x00014bae, +0x00014bad, +0x00014bac, +0x00014baa, +0x00014ba8, +0x00014ba7, +0x00014ba5, +0x00014ba3, +0x00014ba1, +0x00014ba0, +0x00014b9f, +0x00014b9c, +0x00014b9b, +0x00014b9a, +0x00014b97, +0x00014b96, +0x00014b94, +0x00014b92, +0x00014b90, +0x00014b8f, +0x00014b8e, +0x00014b8b, +0x00014b8a, +0x00014b89, +0x00014b86, +0x00014b85, +0x00014b84, +0x00014b81, +0x00014b80, +0x00014b7e, +0x00014b7d, +0x00014b7a, +0x00014b79, +0x00014b78, +0x00014b75, +0x00014b74, +0x00014b73, +0x00014b70, +0x00014b6f, +0x00014b6d, +0x00014b6c, +0x00014b6a, +0x00014b69, +0x00014b66, +0x00014b65, +0x00014b64, +0x00014b62, +0x00014b60, +0x00014b5e, +0x00014b5d, +0x00014b5b, +0x00014b59, +0x00014b58, +0x00014b57, +0x00014b54, +0x00014b53, +0x00014b51, +0x00014b4f, +0x00014b4e, +0x00014b4c, +0x00014b4a, +0x00014b48, +0x00014b47, +0x00014b46, +0x00014b43, +0x00014b42, +0x00014b41, +0x00014b3e, +0x00014b3d, +0x00014b3b, +0x00014b3a, +0x00014b38, +0x00014b36, +0x00014b35, +0x00014b32, +0x00014b31, +0x00014b30, +0x00014b2d, +0x00014b2c, +0x00014b2b, +0x00014b29, +0x00014b27, +0x00014b25, +0x00014b24, +0x00014b22, +0x00014b20, +0x00014b1f, +0x00014b1e, +0x00014b1b, +0x00014b1a, +0x00014b19, +0x00014b16, +0x00014b15, +0x00014b13, +0x00014b12, +0x00014b10, +0x00014b0e, +0x00014b0d, +0x00014b0a, +0x00014b09, +0x00014b08, +0x00014b05, +0x00014b04, +0x00014b03, +0x00014b01, +0x00014aff, +0x00014afd, +0x00014afc, +0x00014afa, +0x00014af8, +0x00014af7, +0x00014af6, +0x00014af3, +0x00014af2, +0x00014af0, +0x00014aee, +0x00014aed, +0x00014aeb, +0x00014ae9, +0x00014ae7, +0x00014ae6, +0x00014ae5, +0x00014ae2, +0x00014ae1, +0x00014ae0, +0x00014add, +0x00014adc, +0x00014adb, +0x00014ad9, +0x00014ad7, +0x00014ad5, +0x00014ad4, +0x00014ad1, +0x00014ad0, +0x00014acf, +0x00014ace, +0x00014acb, +0x00014aca, +0x00014ac8, +0x00014ac6, +0x00014ac5, +0x00014ac3, +0x00014ac1, +0x00014abf, +0x00014abe, +0x00014abd, +0x00014aba, +0x00014ab9, +0x00014ab8, +0x00014ab5, +0x00014ab4, +0x00014ab2, +0x00014ab1, +0x00014aaf, +0x00014aad, +0x00014aac, +0x00014aa9, +0x00014aa8, +0x00014aa7, +0x00014aa4, +0x00014aa3, +0x00014aa2, +0x00014aa0, +0x00014a9e, +0x00014a9c, +0x00014a9b, +0x00014a99, +0x00014a97, +0x00014a96, +0x00014a95, +0x00014a93, +0x00014a90, +0x00014a8f, +0x00014a8e, +0x00014a8b, +0x00014a8a, +0x00014a89, +0x00014a86, +0x00014a85, +0x00014a83, +0x00014a82, +0x00014a80, +0x00014a7e, +0x00014a7d, +0x00014a7a, +0x00014a79, +0x00014a78, +0x00014a77, +0x00014a74, +0x00014a73, +0x00014a71, +0x00014a6f, +0x00014a6e, +0x00014a6c, +0x00014a6b, +0x00014a68, +0x00014a67, +0x00014a66, +0x00014a63, +0x00014a62, +0x00014a61, +0x00014a5f, +0x00014a5d, +0x00014a5c, +0x00014a5a, +0x00014a58, +0x00014a56, +0x00014a55, +0x00014a54, +0x00014a51, +0x00014a50, +0x00014a4f, +0x00014a4c, +0x00014a4b, +0x00014a49, +0x00014a47, +0x00014a46, +0x00014a44, +0x00014a43, +0x00014a40, +0x00014a3f, +0x00014a3e, +0x00014a3b, +0x00014a3a, +0x00014a39, +0x00014a37, +0x00014a35, +0x00014a34, +0x00014a32, +0x00014a30, +0x00014a2e, +0x00014a2d, +0x00014a2c, +0x00014a29, +0x00014a28, +0x00014a27, +0x00014a24, +0x00014a23, +0x00014a22, +0x00014a20, +0x00014a1e, +0x00014a1c, +0x00014a1b, +0x00014a18, +0x00014a17, +0x00014a16, +0x00014a15, +0x00014a12, +0x00014a11, +0x00014a0f, +0x00014a0d, +0x00014a0c, +0x00014a0a, +0x00014a09, +0x00014a06, +0x00014a05, +0x00014a04, +0x00014a01, +0x00014a00, +0x000149ff, +0x000149fc, +0x000149fb, +0x000149fa, +0x000149f8, +0x000149f6, +0x000149f4, +0x000149f3, +0x000149f1, +0x000149ef, +0x000149ee, +0x000149ed, +0x000149ea, +0x000149e9, +0x000149e8, +0x000149e5, +0x000149e4, +0x000149e2, +0x000149e1, +0x000149de, +0x000149dd, +0x000149dc, +0x000149d9, +0x000149d8, +0x000149d7, +0x000149d5, +0x000149d3, +0x000149d2, +0x000149d0, +0x000149ce, +0x000149cc, +0x000149cb, +0x000149ca, +0x000149c7, +0x000149c6, +0x000149c5, +0x000149c2, +0x000149c1, +0x000149c0, +0x000149bd, +0x000149bc, +0x000149ba, +0x000149b8, +0x000149b6, +0x000149b5, +0x000149b4, +0x000149b1, +0x000149b0, +0x000149af, +0x000149ac, +0x000149ab, +0x000149aa, +0x000149a8, +0x000149a6, +0x000149a5, +0x000149a3, +0x000149a1, +0x0001499f, +0x0001499e, +0x0001499d, +0x0001499a, +0x00014999, +0x00014998, +0x00014995, +0x00014994, +0x00014993, +0x00014991, +0x0001498f, +0x0001498d, +0x0001498c, +0x0001498a, +0x00014988, +0x00014987, +0x00014986, +0x00014983, +0x00014982, +0x00014981, +0x0001497e, +0x0001497d, +0x0001497b, +0x0001497a, +0x00014978, +0x00014976, +0x00014975, +0x00014972, +0x00014971, +0x00014970, +0x0001496f, +0x0001496c, +0x0001496b, +0x00014969, +0x00014967, +0x00014966, +0x00014964, +0x00014963, +0x00014960, +0x0001495f, +0x0001495e, +0x0001495b, +0x0001495a, +0x00014959, +0x00014957, +0x00014955, +0x00014954, +0x00014952, +0x00014950, +0x0001494e, +0x0001494d, +0x0001494c, +0x00014949, +0x00014948, +0x00014947, +0x00014944, +0x00014943, +0x00014942, +0x00014940, +0x0001493e, +0x0001493c, +0x0001493b, +0x00014939, +0x00014937, +0x00014936, +0x00014935, +0x00014932, +0x00014931, +0x00014930, +0x0001492d, +0x0001492c, +0x0001492a, +0x00014929, +0x00014927, +0x00014925, +0x00014924, +0x00014921, +0x00014920, +0x0001491f, +0x0001491e, +0x0001491b, +0x0001491a, +0x00014918, +0x00014916, +0x00014915, +0x00014913, +0x00014912, +0x0001490f, +0x0001490e, +0x0001490d, +0x0001490a, +0x00014909, +0x00014908, +0x00014906, +0x00014904, +0x00014903, +0x00014901, +0x000148ff, +0x000148fd, +0x000148fc, +0x000148fb, +0x000148f8, +0x000148f7, +0x000148f6, +0x000148f3, +0x000148f2, +0x000148f1, +0x000148ef, +0x000148ed, +0x000148eb, +0x000148ea, +0x000148e8, +0x000148e6, +0x000148e5, +0x000148e4, +0x000148e1, +0x000148e0, +0x000148df, +0x000148dc, +0x000148db, +0x000148d9, +0x000148d8, +0x000148d6, +0x000148d4, +0x000148d3, +0x000148d0, +0x000148cf, +0x000148ce, +0x000148cd, +0x000148ca, +0x000148c9, +0x000148c7, +0x000148c5, +0x000148c4, +0x000148c2, +0x000148c1, +0x000148be, +0x000148bd, +0x000148bc, +0x000148b9, +0x000148b8, +0x000148b7, +0x000148b5, +0x000148b3, +0x000148b2, +0x000148b0, +0x000148ae, +0x000148ac, +0x000148ab, +0x000148aa, +0x000148a7, +0x000148a6, +0x000148a5, +0x000148a2, +0x000148a1, +0x000148a0, +0x0001489e, +0x0001489c, +0x0001489a, +0x00014899, +0x00014897, +0x00014895, +0x00014894, +0x00014893, +0x00014890, +0x0001488f, +0x0001488e, +0x0001488b, +0x0001488a, +0x00014888, +0x00014887, +0x00014885, +0x00014883, +0x00014882, +0x00014881, +0x0001487e, +0x0001487d, +0x0001487c, +0x00014879, +0x00014878, +0x00014876, +0x00014875, +0x00014873, +0x00014871, +0x00014870, +0x0001486d, +0x0001486c, +0x0001486b, +0x0001486a, +0x00014867, +0x00014866, +0x00014864, +0x00014862, +0x00014861, +0x0001485f, +0x0001485e, +0x0001485c, +0x0001485a, +0x00014859, +0x00014856, +0x00014855, +0x00014854, +0x00014853, +0x00014850, +0x0001484f, +0x0001484d, +0x0001484b, +0x0001484a, +0x00014848, +0x00014847, +0x00014844, +0x00014843, +0x00014842, +0x0001483f, +0x0001483e, +0x0001483d, +0x0001483b, +0x00014839, +0x00014838, +0x00014836, +0x00014834, +0x00014832, +0x00014831, +0x00014830, +0x0001482d, +0x0001482c, +0x0001482b, +0x00014828, +0x00014827, +0x00014826, +0x00014824, +0x00014822, +0x00014820, +0x0001481f, +0x0001481d, +0x0001481b, +0x0001481a, +0x00014819, +0x00014817, +0x00014816, +0x00014813, +0x00014812, +0x00014811, +0x0001480f, +0x0001480d, +0x0001480c, +0x0001480a, +0x00014808, +0x00014806, +0x00014805, +0x00014804, +0x00014801, +0x00014800, +0x000147ff, +0x000147fd, +0x000147fb, +0x000147fa, +0x000147f8, +0x000147f6, +0x000147f4, +0x000147f3, +0x000147f2, +0x000147ef, +0x000147ee, +0x000147ed, +0x000147ea, +0x000147e9, +0x000147e8, +0x000147e6, +0x000147e4, +0x000147e3, +0x000147e1, +0x000147df, +0x000147dd, +0x000147dc, +0x000147db, +0x000147d8, +0x000147d7, +0x000147d6, +0x000147d3, +0x000147d2, +0x000147d1, +0x000147cf, +0x000147cd, +0x000147cb, +0x000147ca, +0x000147c9, +0x000147c6, +0x000147c5, +0x000147c4, +0x000147c1, +0x000147c0, +0x000147bf, +0x000147bd, +0x000147bb, +0x000147ba, +0x000147b8, +0x000147b6, +0x000147b4, +0x000147b3, +0x000147b2, +0x000147af, +0x000147ae, +0x000147ad, +0x000147aa, +0x000147a9, +0x000147a8, +0x000147a6, +0x000147a4, +0x000147a2, +0x000147a1, +0x0001479f, +0x0001479d, +0x0001479c, +0x0001479b, +0x00014798, +0x00014797, +0x00014796, +0x00014794, +0x00014792, +0x00014791, +0x0001478f, +0x0001478d, +0x0001478b, +0x0001478a, +0x00014789, +0x00014786, +0x00014785, +0x00014784, +0x00014781, +0x00014780, +0x0001477f, +0x0001477d, +0x0001477b, +0x00014779, +0x00014778, +0x00014776, +0x00014774, +0x00014773, +0x00014772, +0x0001476f, +0x0001476e, +0x0001476d, +0x0001476a, +0x00014769, +0x00014768, +0x00014766, +0x00014764, +0x00014762, +0x00014761, +0x00014760, +0x0001475d, +0x0001475c, +0x0001475b, +0x00014758, +0x00014757, +0x00014756, +0x00014754, +0x00014752, +0x00014750, +0x0001474f, +0x0001474d, +0x0001474b, +0x0001474a, +0x00014749, +0x00014746, +0x00014745, +0x00014744, +0x00014742, +0x00014740, +0x0001473f, +0x0001473d, +0x0001473c, +0x00014739, +0x00014738, +0x00014737, +0x00014734, +0x00014733, +0x00014732, +0x00014731, +0x0001472e, +0x0001472d, +0x0001472b, +0x0001472a, +0x00014728, +0x00014726, +0x00014725, +0x00014722, +0x00014721, +0x00014720, +0x0001471f, +0x0001471c, +0x0001471b, +0x0001471a, +0x00014717, +0x00014716, +0x00014714, +0x00014713, +0x00014711, +0x0001470f, +0x0001470e, +0x0001470d, +0x0001470a, +0x00014709, +0x00014708, +0x00014705, +0x00014704, +0x00014703, +0x00014701, +0x000146ff, +0x000146fd, +0x000146fc, +0x000146fa, +0x000146f8, +0x000146f7, +0x000146f6, +0x000146f3, +0x000146f2, +0x000146f1, +0x000146ef, +0x000146ed, +0x000146ec, +0x000146ea, +0x000146e8, +0x000146e6, +0x000146e5, +0x000146e4, +0x000146e1, +0x000146e0, +0x000146df, +0x000146de, +0x000146db, +0x000146da, +0x000146d8, +0x000146d6, +0x000146d5, +0x000146d3, +0x000146d2, +0x000146cf, +0x000146ce, +0x000146cd, +0x000146ca, +0x000146c9, +0x000146c8, +0x000146c7, +0x000146c4, +0x000146c3, +0x000146c1, +0x000146c0, +0x000146be, +0x000146bc, +0x000146bb, +0x000146b8, +0x000146b7, +0x000146b6, +0x000146b5, +0x000146b2, +0x000146b1, +0x000146b0, +0x000146ad, +0x000146ac, +0x000146aa, +0x000146a9, +0x000146a7, +0x000146a5, +0x000146a4, +0x000146a3, +0x000146a0, +0x0001469f, +0x0001469e, +0x0001469b, +0x0001469a, +0x00014699, +0x00014697, +0x00014695, +0x00014693, +0x00014692, +0x00014690, +0x0001468e, +0x0001468d, +0x0001468c, +0x00014689, +0x00014688, +0x00014687, +0x00014685, +0x00014683, +0x00014682, +0x00014680, +0x0001467e, +0x0001467c, +0x0001467b, +0x0001467a, +0x00014677, +0x00014676, +0x00014675, +0x00014673, +0x00014671, +0x00014670, +0x0001466e, +0x0001466c, +0x0001466b, +0x0001466a, +0x00014667, +0x00014666, +0x00014665, +0x00014662, +0x00014661, +0x00014660, +0x0001465e, +0x0001465c, +0x0001465a, +0x00014659, +0x00014658, +0x00014655, +0x00014654, +0x00014653, +0x00014650, +0x0001464f, +0x0001464e, +0x0001464c, +0x0001464a, +0x00014649, +0x00014647, +0x00014646, +0x00014643, +0x00014642, +0x00014641, +0x0001463e, +0x0001463d, +0x0001463c, +0x0001463b, +0x00014638, +0x00014637, +0x00014635, +0x00014634, +0x00014632, +0x00014630, +0x0001462f, +0x0001462d, +0x0001462b, +0x0001462a, +0x00014629, +0x00014626, +0x00014625, +0x00014624, +0x00014622, +0x00014620, +0x0001461f, +0x0001461d, +0x0001461b, +0x00014619, +0x00014618, +0x00014617, +0x00014614, +0x00014613, +0x00014612, +0x00014611, +0x0001460e, +0x0001460d, +0x0001460b, +0x00014609, +0x00014608, +0x00014606, +0x00014605, +0x00014603, +0x00014601, +0x00014600, +0x000145ff, +0x000145fc, +0x000145fb, +0x000145fa, +0x000145f7, +0x000145f6, +0x000145f5, +0x000145f3, +0x000145f1, +0x000145ef, +0x000145ee, +0x000145ed, +0x000145ea, +0x000145e9, +0x000145e8, +0x000145e5, +0x000145e4, +0x000145e3, +0x000145e1, +0x000145df, +0x000145de, +0x000145dc, +0x000145db, +0x000145d9, +0x000145d7, +0x000145d6, +0x000145d3, +0x000145d2, +0x000145d1, +0x000145d0, +0x000145cd, +0x000145cc, +0x000145cb, +0x000145c9, +0x000145c7, +0x000145c5, +0x000145c4, +0x000145c2, +0x000145c0, +0x000145bf, +0x000145be, +0x000145bb, +0x000145ba, +0x000145b9, +0x000145b7, +0x000145b5, +0x000145b4, +0x000145b2, +0x000145b0, +0x000145af, +0x000145ad, +0x000145ac, +0x000145a9, +0x000145a8, +0x000145a7, +0x000145a5, +0x000145a3, +0x000145a1, +0x000145a0, +0x0001459f, +0x0001459c, +0x0001459b, +0x0001459a, +0x00014598, +0x00014596, +0x00014595, +0x00014593, +0x00014592, +0x0001458f, +0x0001458e, +0x0001458d, +0x0001458a, +0x00014589, +0x00014588, +0x00014587, +0x00014584, +0x00014583, +0x00014581, +0x00014580, +0x0001457e, +0x0001457c, +0x0001457b, +0x00014579, +0x00014577, +0x00014576, +0x00014575, +0x00014572, +0x00014571, +0x00014570, +0x0001456e, +0x0001456c, +0x0001456b, +0x00014569, +0x00014568, +0x00014566, +0x00014564, +0x00014563, +0x00014560, +0x0001455f, +0x0001455e, +0x0001455d, +0x0001455a, +0x00014559, +0x00014558, +0x00014556, +0x00014554, +0x00014553, +0x00014551, +0x0001454f, +0x0001454d, +0x0001454c, +0x0001454b, +0x00014548, +0x00014547, +0x00014546, +0x00014545, +0x00014542, +0x00014541, +0x0001453f, +0x0001453e, +0x0001453c, +0x0001453a, +0x00014539, +0x00014537, +0x00014535, +0x00014534, +0x00014533, +0x00014530, +0x0001452f, +0x0001452e, +0x0001452c, +0x0001452a, +0x00014529, +0x00014527, +0x00014525, +0x00014524, +0x00014522, +0x00014521, +0x0001451e, +0x0001451d, +0x0001451c, +0x0001451b, +0x00014518, +0x00014517, +0x00014516, +0x00014513, +0x00014512, +0x00014511, +0x0001450f, +0x0001450d, +0x0001450b, +0x0001450a, +0x00014509, +0x00014506, +0x00014505, +0x00014504, +0x00014503, +0x00014500, +0x000144ff, +0x000144fd, +0x000144fb, +0x000144fa, +0x000144f8, +0x000144f7, +0x000144f5, +0x000144f3, +0x000144f2, +0x000144f1, +0x000144ee, +0x000144ed, +0x000144ec, +0x000144e9, +0x000144e8, +0x000144e7, +0x000144e5, +0x000144e3, +0x000144e2, +0x000144e0, +0x000144df, +0x000144dc, +0x000144db, +0x000144da, +0x000144d9, +0x000144d6, +0x000144d5, +0x000144d2, +0x000144d1, +0x000144d0, +0x000144ce, +0x000144cc, +0x000144cb, +0x000144c9, +0x000144c8, +0x000144c5, +0x000144c4, +0x000144c3, +0x000144c2, +0x000144bf, +0x000144be, +0x000144bd, +0x000144ba, +0x000144b9, +0x000144b8, +0x000144b6, +0x000144b4, +0x000144b2, +0x000144b1, +0x000144b0, +0x000144ad, +0x000144ac, +0x000144ab, +0x000144aa, +0x000144a7, +0x000144a6, +0x000144a5, +0x000144a3, +0x000144a1, +0x0001449f, +0x0001449e, +0x0001449c, +0x0001449a, +0x00014499, +0x00014498, +0x00014495, +0x00014494, +0x00014493, +0x00014492, +0x0001448f, +0x0001448e, +0x0001448c, +0x0001448b, +0x00014489, +0x00014487, +0x00014486, +0x00014484, +0x00014482, +0x00014481, +0x00014480, +0x0001447d, +0x0001447c, +0x0001447b, +0x0001447a, +0x00014477, +0x00014476, +0x00014474, +0x00014473, +0x00014471, +0x0001446f, +0x0001446e, +0x0001446c, +0x0001446a, +0x00014469, +0x00014468, +0x00014465, +0x00014464, +0x00014463, +0x00014461, +0x0001445f, +0x0001445e, +0x0001445c, +0x0001445b, +0x00014459, +0x00014457, +0x00014456, +0x00014454, +0x00014452, +0x00014451, +0x00014450, +0x0001444d, +0x0001444c, +0x0001444b, +0x00014449, +0x00014447, +0x00014446, +0x00014444, +0x00014443, +0x00014441, +0x0001443f, +0x0001443e, +0x0001443d, +0x0001443a, +0x00014439, +0x00014438, +0x00014435, +0x00014434, +0x00014433, +0x00014431, +0x0001442f, +0x0001442e, +0x0001442c, +0x0001442b, +0x00014429, +0x00014427, +0x00014426, +0x00014425, +0x00014422, +0x00014421, +0x00014420, +0x0001441d, +0x0001441c, +0x0001441b, +0x00014419, +0x00014417, +0x00014416, +0x00014414, +0x00014413, +0x00014410, +0x0001440f, +0x0001440e, +0x0001440d, +0x0001440a, +0x00014409, +0x00014408, +0x00014405, +0x00014404, +0x00014403, +0x00014401, +0x000143ff, +0x000143fd, +0x000143fc, +0x000143fb, +0x000143f8, +0x000143f7, +0x000143f6, +0x000143f5, +0x000143f2, +0x000143f1, +0x000143f0, +0x000143ed, +0x000143ec, +0x000143ea, +0x000143e9, +0x000143e7, +0x000143e5, +0x000143e4, +0x000143e3, +0x000143e0, +0x000143df, +0x000143de, +0x000143dd, +0x000143da, +0x000143d9, +0x000143d8, +0x000143d6, +0x000143d4, +0x000143d2, +0x000143d1, +0x000143cf, +0x000143cd, +0x000143cc, +0x000143cb, +0x000143c8, +0x000143c7, +0x000143c6, +0x000143c5, +0x000143c2, +0x000143c1, +0x000143bf, +0x000143be, +0x000143bc, +0x000143ba, +0x000143b9, +0x000143b7, +0x000143b5, +0x000143b4, +0x000143b3, +0x000143b0, +0x000143af, +0x000143ae, +0x000143ac, +0x000143aa, +0x000143a9, +0x000143a7, +0x000143a6, +0x000143a4, +0x000143a2, +0x000143a1, +0x0001439f, +0x0001439d, +0x0001439c, +0x0001439b, +0x00014398, +0x00014397, +0x00014396, +0x00014394, +0x00014392, +0x00014391, +0x0001438f, +0x0001438e, +0x0001438c, +0x0001438a, +0x00014389, +0x00014387, +0x00014385, +0x00014384, +0x00014383, +0x00014380, +0x0001437f, +0x0001437e, +0x0001437c, +0x0001437a, +0x00014379, +0x00014377, +0x00014376, +0x00014374, +0x00014372, +0x00014371, +0x00014370, +0x0001436d, +0x0001436c, +0x0001436b, +0x00014368, +0x00014367, +0x00014366, +0x00014364, +0x00014362, +0x00014361, +0x0001435f, +0x0001435e, +0x0001435b, +0x0001435a, +0x00014359, +0x00014358, +0x00014355, +0x00014354, +0x00014353, +0x00014350, +0x0001434f, +0x0001434e, +0x0001434c, +0x0001434a, +0x00014348, +0x00014347, +0x00014346, +0x00014343, +0x00014342, +0x00014341, +0x00014340, +0x0001433d, +0x0001433d, +0x0001433a, +0x00014339, +0x00014338, +0x00014336, +0x00014334, +0x00014332, +0x00014331, +0x00014330, +0x0001432d, +0x0001432c, +0x0001432b, +0x0001432a, +0x00014327, +0x00014326, +0x00014325, +0x00014323, +0x00014321, +0x00014320, +0x0001431e, +0x0001431d, +0x0001431a, +0x00014319, +0x00014318, +0x00014315, +0x00014314, +0x00014313, +0x00014312, +0x0001430f, +0x0001430e, +0x0001430d, +0x0001430b, +0x00014309, +0x00014308, +0x00014306, +0x00014305, +0x00014303, +0x00014301, +0x00014300, +0x000142ff, +0x000142fc, +0x000142fb, +0x000142fa, +0x000142f7, +0x000142f6, +0x000142f5, +0x000142f3, +0x000142f1, +0x000142f0, +0x000142ee, +0x000142ed, +0x000142eb, +0x000142e9, +0x000142e8, +0x000142e7, +0x000142e4, +0x000142e3, +0x000142e2, +0x000142e0, +0x000142de, +0x000142dd, +0x000142db, +0x000142da, +0x000142d8, +0x000142d6, +0x000142d5, +0x000142d3, +0x000142d1, +0x000142d0, +0x000142cf, +0x000142cc, +0x000142cb, +0x000142ca, +0x000142c8, +0x000142c6, +0x000142c5, +0x000142c3, +0x000142c2, +0x000142c0, +0x000142be, +0x000142bd, +0x000142bc, +0x000142b9, +0x000142b8, +0x000142b7, +0x000142b6, +0x000142b3, +0x000142b2, +0x000142b1, +0x000142ae, +0x000142ad, +0x000142ab, +0x000142aa, +0x000142a8, +0x000142a6, +0x000142a5, +0x000142a4, +0x000142a1, +0x000142a0, +0x0001429f, +0x0001429e, +0x0001429b, +0x0001429a, +0x00014299, +0x00014297, +0x00014295, +0x00014293, +0x00014292, +0x00014290, +0x0001428e, +0x0001428d, +0x0001428c, +0x00014289, +0x00014288, +0x00014287, +0x00014286, +0x00014283, +0x00014282, +0x00014281, +0x0001427f, +0x0001427d, +0x0001427c, +0x0001427a, +0x00014279, +0x00014276, +0x00014275, +0x00014274, +0x00014273, +0x00014271, +0x0001426f, +0x0001426d, +0x0001426c, +0x0001426a, +0x00014268, +0x00014267, +0x00014266, +0x00014263, +0x00014262, +0x00014261, +0x00014260, +0x0001425d, +0x0001425c, +0x0001425b, +0x00014259, +0x00014257, +0x00014256, +0x00014254, +0x00014253, +0x00014251, +0x0001424f, +0x0001424e, +0x0001424d, +0x0001424a, +0x00014249, +0x00014248, +0x00014246, +0x00014244, +0x00014243, +0x00014241, +0x00014240, +0x0001423e, +0x0001423c, +0x0001423b, +0x00014239, +0x00014237, +0x00014236, +0x00014235, +0x00014232, +0x00014231, +0x00014230, +0x0001422f, +0x0001422c, +0x0001422b, +0x0001422a, +0x00014228, +0x00014226, +0x00014224, +0x00014223, +0x00014222, +0x0001421f, +0x0001421e, +0x0001421d, +0x0001421c, +0x00014219, +0x00014218, +0x00014217, +0x00014215, +0x00014213, +0x00014212, +0x00014210, +0x0001420f, +0x0001420d, +0x0001420b, +0x0001420a, +0x00014208, +0x00014206, +0x00014205, +0x00014204, +0x00014201, +0x00014200, +0x000141ff, +0x000141fd, +0x000141fb, +0x000141fa, +0x000141f8, +0x000141f7, +0x000141f5, +0x000141f3, +0x000141f2, +0x000141f1, +0x000141ee, +0x000141ed, +0x000141ec, +0x000141eb, +0x000141e8, +0x000141e7, +0x000141e6, +0x000141e4, +0x000141e2, +0x000141e1, +0x000141df, +0x000141de, +0x000141dc, +0x000141da, +0x000141d9, +0x000141d6, +0x000141d5, +0x000141d4, +0x000141d3, +0x000141d0, +0x000141cf, +0x000141ce, +0x000141cc, +0x000141ca, +0x000141c9, +0x000141c7, +0x000141c6, +0x000141c4, +0x000141c2, +0x000141c1, +0x000141c0, +0x000141bd, +0x000141bc, +0x000141bb, +0x000141ba, +0x000141b7, +0x000141b6, +0x000141b5, +0x000141b3, +0x000141b1, +0x000141b0, +0x000141ae, +0x000141ad, +0x000141aa, +0x000141a9, +0x000141a8, +0x000141a6, +0x000141a4, +0x000141a3, +0x000141a1, +0x0001419f, +0x0001419e, +0x0001419d, +0x0001419a, +0x00014199, +0x00014198, +0x00014196, +0x00014194, +0x00014193, +0x00014191, +0x00014190, +0x0001418e, +0x0001418c, +0x0001418b, +0x0001418a, +0x00014187, +0x00014186, +0x00014185, +0x00014184, +0x00014181, +0x00014180, +0x0001417f, +0x0001417d, +0x0001417b, +0x0001417a, +0x00014178, +0x00014177, +0x00014175, +0x00014173, +0x00014172, +0x00014171, +0x0001416e, +0x0001416d, +0x0001416c, +0x0001416b, +0x00014168, +0x00014167, +0x00014166, +0x00014164, +0x00014162, +0x00014161, +0x0001415f, +0x0001415e, +0x0001415c, +0x0001415a, +0x00014159, +0x00014158, +0x00014155, +0x00014154, +0x00014153, +0x00014152, +0x0001414f, +0x0001414e, +0x0001414c, +0x0001414b, +0x00014149, +0x00014147, +0x00014146, +0x00014145, +0x00014142, +0x00014141, +0x00014140, +0x0001413d, +0x0001413c, +0x0001413b, +0x0001413a, +0x00014137, +0x00014136, +0x00014135, +0x00014133, +0x00014131, +0x00014130, +0x0001412e, +0x0001412d, +0x0001412b, +0x00014129, +0x00014128, +0x00014127, +0x00014124, +0x00014123, +0x00014122, +0x00014121, +0x0001411e, +0x0001411d, +0x0001411c, +0x0001411a, +0x00014118, +0x00014117, +0x00014115, +0x00014114, +0x00014112, +0x00014110, +0x0001410f, +0x0001410e, +0x0001410b, +0x0001410a, +0x00014109, +0x00014108, +0x00014105, +0x00014104, +0x00014103, +0x00014101, +0x000140ff, +0x000140fd, +0x000140fc, +0x000140fb, +0x000140f8, +0x000140f7, +0x000140f6, +0x000140f5, +0x000140f2, +0x000140f1, +0x000140f0, +0x000140ee, +0x000140ec, +0x000140eb, +0x000140e9, +0x000140e8, +0x000140e6, +0x000140e4, +0x000140e3, +0x000140e2, +0x000140df, +0x000140de, +0x000140dc, +0x000140db, +0x000140da, +0x000140d7, +0x000140d6, +0x000140d5, +0x000140d3, +0x000140d1, +0x000140d0, +0x000140ce, +0x000140cd, +0x000140cb, +0x000140c9, +0x000140c8, +0x000140c7, +0x000140c4, +0x000140c3, +0x000140c2, +0x000140c1, +0x000140be, +0x000140bd, +0x000140bc, +0x000140ba, +0x000140b8, +0x000140b7, +0x000140b5, +0x000140b4, +0x000140b2, +0x000140b0, +0x000140af, +0x000140ae, +0x000140ab, +0x000140aa, +0x000140a9, +0x000140a8, +0x000140a5, +0x000140a4, +0x000140a3, +0x000140a1, +0x0001409f, +0x0001409e, +0x0001409c, +0x0001409b, +0x00014099, +0x00014097, +0x00014096, +0x00014095, +0x00014092, +0x00014091, +0x00014090, +0x0001408f, +0x0001408c, +0x0001408b, +0x0001408a, +0x00014088, +0x00014086, +0x00014085, +0x00014083, +0x00014082, +0x00014080, +0x0001407e, +0x0001407d, +0x0001407c, +0x00014079, +0x00014078, +0x00014077, +0x00014076, +0x00014073, +0x00014072, +0x00014071, +0x0001406f, +0x0001406d, +0x0001406c, +0x0001406a, +0x00014069, +0x00014067, +0x00014065, +0x00014064, +0x00014063, +0x00014060, +0x0001405f, +0x0001405e, +0x0001405d, +0x0001405a, +0x00014059, +0x00014058, +0x00014056, +0x00014054, +0x00014053, +0x00014051, +0x00014050, +0x0001404e, +0x0001404c, +0x0001404b, +0x0001404a, +0x00014047, +0x00014046, +0x00014045, +0x00014044, +0x00014041, +0x00014040, +0x0001403f, +0x0001403d, +0x0001403b, +0x0001403a, +0x00014038, +0x00014037, +0x00014035, +0x00014033, +0x00014032, +0x00014031, +0x0001402e, +0x0001402d, +0x0001402c, +0x0001402b, +0x00014028, +0x00014027, +0x00014026, +0x00014024, +0x00014022, +0x00014021, +0x0001401f, +0x0001401e, +0x0001401c, +0x0001401a, +0x00014019, +0x00014018, +0x00014015, +0x00014014, +0x00014013, +0x00014012, +0x0001400f, +0x0001400e, +0x0001400d, +0x0001400b, +0x00014009, +0x00014008, +0x00014006, +0x00014005, +0x00014003, +0x00014001, +0x00014000, +0x00013fff, +0x00013ffc, +0x00013ffb, +0x00013ffa, +0x00013ff9, +0x00013ff6, +0x00013ff5, +0x00013ff4, +0x00013ff2, +0x00013ff0, +0x00013fef, +0x00013fed, +0x00013fec, +0x00013fea, +0x00013fe8, +0x00013fe7, +0x00013fe6, +0x00013fe3, +0x00013fe2, +0x00013fe1, +0x00013fe0, +0x00013fdd, +0x00013fdc, +0x00013fdb, +0x00013fd9, +0x00013fd7, +0x00013fd6, +0x00013fd4, +0x00013fd3, +0x00013fd1, +0x00013fcf, +0x00013fce, +0x00013fcd, +0x00013fca, +0x00013fc9, +0x00013fc8, +0x00013fc7, +0x00013fc4, +0x00013fc3, +0x00013fc2, +0x00013fc0, +0x00013fbe, +0x00013fbd, +0x00013fbb, +0x00013fba, +0x00013fb8, +0x00013fb6, +0x00013fb5, +0x00013fb4, +0x00013fb1, +0x00013fb0, +0x00013faf, +0x00013fae, +0x00013fab, +0x00013faa, +0x00013fa9, +0x00013fa7, +0x00013fa5, +0x00013fa4, +0x00013fa2, +0x00013fa1, +0x00013f9f, +0x00013f9d, +0x00013f9c, +0x00013f9b, +0x00013f98, +0x00013f97, +0x00013f96, +0x00013f95, +0x00013f92, +0x00013f91, +0x00013f90, +0x00013f8e, +0x00013f8c, +0x00013f8b, +0x00013f89, +0x00013f88, +0x00013f86, +0x00013f84, +0x00013f83, +0x00013f82, +0x00013f7f, +0x00013f7e, +0x00013f7d, +0x00013f7c, +0x00013f79, +0x00013f78, +0x00013f77, +0x00013f75, +0x00013f73, +0x00013f72, +0x00013f70, +0x00013f6f, +0x00013f6d, +0x00013f6b, +0x00013f6a, +0x00013f69, +0x00013f66, +0x00013f65, +0x00013f64, +0x00013f63, +0x00013f60, +0x00013f5f, +0x00013f5e, +0x00013f5c, +0x00013f5a, +0x00013f59, +0x00013f57, +0x00013f56, +0x00013f54, +0x00013f52, +0x00013f51, +0x00013f50, +0x00013f4d, +0x00013f4c, +0x00013f4b, +0x00013f4a, +0x00013f48, +0x00013f46, +0x00013f45, +0x00013f43, +0x00013f42, +0x00013f40, +0x00013f3e, +0x00013f3d, +0x00013f3c, +0x00013f39, +0x00013f38, +0x00013f37, +0x00013f36, +0x00013f33, +0x00013f32, +0x00013f31, +0x00013f2f, +0x00013f2d, +0x00013f2c, +0x00013f2a, +0x00013f29, +0x00013f27, +0x00013f25, +0x00013f24, +0x00013f23, +0x00013f20, +0x00013f1f, +0x00013f1e, +0x00013f1d, +0x00013f1a, +0x00013f19, +0x00013f18, +0x00013f16, +0x00013f14, +0x00013f13, +0x00013f11, +0x00013f10, +0x00013f0e, +0x00013f0c, +0x00013f0b, +0x00013f0a, +0x00013f07, +0x00013f06, +0x00013f05, +0x00013f04, +0x00013f01, +0x00013f00, +0x00013eff, +0x00013efe, +0x00013efb, +0x00013efa, +0x00013ef9, +0x00013ef7, +0x00013ef5, +0x00013ef4, +0x00013ef2, +0x00013ef1, +0x00013eef, +0x00013eed, +0x00013eec, +0x00013eeb, +0x00013eea, +0x00013ee7, +0x00013ee6, +0x00013ee5, +0x00013ee3, +0x00013ee1, +0x00013ee0, +0x00013ede, +0x00013edd, +0x00013edb, +0x00013ed9, +0x00013ed8, +0x00013ed7, +0x00013ed4, +0x00013ed3, +0x00013ed2, +0x00013ed1, +0x00013ece, +0x00013ecd, +0x00013ecc, +0x00013eca, +0x00013ec8, +0x00013ec7, +0x00013ec5, +0x00013ec4, +0x00013ec2, +0x00013ec0, +0x00013ebf, +0x00013ebe, +0x00013ebb, +0x00013eba, +0x00013eb9, +0x00013eb8, +0x00013eb5, +0x00013eb4, +0x00013eb3, +0x00013eb1, +0x00013eaf, +0x00013eae, +0x00013ead, +0x00013eab, +0x00013ea9, +0x00013ea8, +0x00013ea6, +0x00013ea5, +0x00013ea3, +0x00013ea1, +0x00013ea0, +0x00013e9f, +0x00013e9c, +0x00013e9b, +0x00013e9a, +0x00013e99, +0x00013e96, +0x00013e95, +0x00013e94, +0x00013e92, +0x00013e90, +0x00013e8f, +0x00013e8d, +0x00013e8c, +0x00013e8a, +0x00013e88, +0x00013e87, +0x00013e86, +0x00013e84, +0x00013e82, +0x00013e81, +0x00013e80, +0x00013e7d, +0x00013e7c, +0x00013e7b, +0x00013e7a, +0x00013e77, +0x00013e76, +0x00013e75, +0x00013e74, +0x00013e71, +0x00013e70, +0x00013e6f, +0x00013e6d, +0x00013e6b, +0x00013e6a, +0x00013e68, +0x00013e67, +0x00013e65, +0x00013e63, +0x00013e62, +0x00013e61, +0x00013e5e, +0x00013e5d, +0x00013e5c, +0x00013e5b, +0x00013e58, +0x00013e57, +0x00013e56, +0x00013e54, +0x00013e53, +0x00013e51, +0x00013e50, +0x00013e4e, +0x00013e4d, +0x00013e4b, +0x00013e49, +0x00013e48, +0x00013e47, +0x00013e44, +0x00013e43, +0x00013e42, +0x00013e41, +0x00013e3e, +0x00013e3d, +0x00013e3c, +0x00013e3a, +0x00013e38, +0x00013e37, +0x00013e35, +0x00013e34, +0x00013e32, +0x00013e30, +0x00013e2f, +0x00013e2e, +0x00013e2b, +0x00013e2a, +0x00013e29, +0x00013e28, +0x00013e25, +0x00013e24, +0x00013e23, +0x00013e22, +0x00013e20, +0x00013e1e, +0x00013e1d, +0x00013e1b, +0x00013e1a, +0x00013e18, +0x00013e16, +0x00013e15, +0x00013e14, +0x00013e11, +0x00013e10, +0x00013e0f, +0x00013e0e, +0x00013e0b, +0x00013e0a, +0x00013e09, +0x00013e07, +0x00013e05, +0x00013e04, +0x00013e02, +0x00013e01, +0x00013dff, +0x00013dfe, +0x00013dfc, +0x00013dfb, +0x00013df9, +0x00013df7, +0x00013df6, +0x00013df5, +0x00013df2, +0x00013df1, +0x00013df0, +0x00013def, +0x00013ded, +0x00013deb, +0x00013dea, +0x00013de8, +0x00013de7, +0x00013de5, +0x00013de3, +0x00013de2, +0x00013de1, +0x00013dde, +0x00013ddd, +0x00013ddc, +0x00013ddb, +0x00013dd8, +0x00013dd7, +0x00013dd6, +0x00013dd5, +0x00013dd2, +0x00013dd1, +0x00013dd0, +0x00013dce, +0x00013dcc, +0x00013dcb, +0x00013dc9, +0x00013dc8, +0x00013dc6, +0x00013dc4, +0x00013dc3, +0x00013dc2, +0x00013dc0, +0x00013dbf, +0x00013dbc, +0x00013dbb, +0x00013dba, +0x00013db9, +0x00013db6, +0x00013db5, +0x00013db4, +0x00013db2, +0x00013db0, +0x00013daf, +0x00013dad, +0x00013dac, +0x00013daa, +0x00013da8, +0x00013da7, +0x00013da6, +0x00013da3, +0x00013da2, +0x00013da1, +0x00013da0, +0x00013d9f, +0x00013d9c, +0x00013d9b, +0x00013d9a, +0x00013d98, +0x00013d96, +0x00013d95, +0x00013d93, +0x00013d92, +0x00013d90, +0x00013d8e, +0x00013d8d, +0x00013d8c, +0x00013d89, +0x00013d88, +0x00013d87, +0x00013d86, +0x00013d83, +0x00013d82, +0x00013d81, +0x00013d80, +0x00013d7e, +0x00013d7c, +0x00013d7b, +0x00013d79, +0x00013d78, +0x00013d76, +0x00013d74, +0x00013d73, +0x00013d72, +0x00013d6f, +0x00013d6e, +0x00013d6d, +0x00013d6c, +0x00013d69, +0x00013d68, +0x00013d67, +0x00013d66, +0x00013d63, +0x00013d62, +0x00013d61, +0x00013d5f, +0x00013d5e, +0x00013d5c, +0x00013d5a, +0x00013d59, +0x00013d58, +0x00013d55, +0x00013d54, +0x00013d53, +0x00013d52, +0x00013d4f, +0x00013d4e, +0x00013d4d, +0x00013d4c, +0x00013d49, +0x00013d48, +0x00013d47, +0x00013d45, +0x00013d43, +0x00013d42, +0x00013d40, +0x00013d3f, +0x00013d3d, +0x00013d3b, +0x00013d3a, +0x00013d39, +0x00013d38, +0x00013d35, +0x00013d34, +0x00013d33, +0x00013d32, +0x00013d2f, +0x00013d2e, +0x00013d2d, +0x00013d2b, +0x00013d29, +0x00013d28, +0x00013d26, +0x00013d25, +0x00013d23, +0x00013d21, +0x00013d20, +0x00013d1f, +0x00013d1c, +0x00013d1b, +0x00013d1a, +0x00013d19, +0x00013d18, +0x00013d15, +0x00013d14, +0x00013d13, +0x00013d11, +0x00013d0f, +0x00013d0e, +0x00013d0c, +0x00013d0b, +0x00013d09, +0x00013d07, +0x00013d06, +0x00013d05, +0x00013d02, +0x00013d01, +0x00013d00, +0x00013cff, +0x00013cfc, +0x00013cfb, +0x00013cfa, +0x00013cf9, +0x00013cf7, +0x00013cf5, +0x00013cf4, +0x00013cf2, +0x00013cf1, +0x00013cef, +0x00013ced, +0x00013cec, +0x00013ceb, +0x00013ce8, +0x00013ce7, +0x00013ce6, +0x00013ce5, +0x00013ce2, +0x00013ce1, +0x00013ce0, +0x00013cdf, +0x00013cdc, +0x00013cdb, +0x00013cda, +0x00013cd8, +0x00013cd7, +0x00013cd5, +0x00013cd3, +0x00013cd2, +0x00013cd1, +0x00013cce, +0x00013ccd, +0x00013ccc, +0x00013ccb, +0x00013cc8, +0x00013cc7, +0x00013cc6, +0x00013cc5, +0x00013cc2, +0x00013cc1, +0x00013cc0, +0x00013cbe, +0x00013cbc, +0x00013cbb, +0x00013cb9, +0x00013cb8, +0x00013cb7, +0x00013cb4, +0x00013cb3, +0x00013cb2, +0x00013cb1, +0x00013cae, +0x00013cad, +0x00013cac, +0x00013cab, +0x00013ca8, +0x00013ca7, +0x00013ca6, +0x00013ca4, +0x00013ca2, +0x00013ca1, +0x00013c9f, +0x00013c9e, +0x00013c9c, +0x00013c9a, +0x00013c99, +0x00013c98, +0x00013c97, +0x00013c94, +0x00013c93, +0x00013c92, +0x00013c91, +0x00013c8e, +0x00013c8d, +0x00013c8c, +0x00013c8a, +0x00013c88, +0x00013c87, +0x00013c85, +0x00013c84, +0x00013c82, +0x00013c80, +0x00013c7f, +0x00013c7e, +0x00013c7c, +0x00013c7a, +0x00013c79, +0x00013c78, +0x00013c77, +0x00013c74, +0x00013c73, +0x00013c72, +0x00013c70, +0x00013c6e, +0x00013c6d, +0x00013c6b, +0x00013c6a, +0x00013c68, +0x00013c66, +0x00013c65, +0x00013c64, +0x00013c62, +0x00013c60, +0x00013c5f, +0x00013c5e, +0x00013c5b, +0x00013c5a, +0x00013c59, +0x00013c58, +0x00013c56, +0x00013c54, +0x00013c53, +0x00013c51, +0x00013c50, +0x00013c4e, +0x00013c4c, +0x00013c4b, +0x00013c4a, +0x00013c47, +0x00013c46, +0x00013c45, +0x00013c44, +0x00013c41, +0x00013c40, +0x00013c3f, +0x00013c3e, +0x00013c3b, +0x00013c3a, +0x00013c39, +0x00013c38, +0x00013c36, +0x00013c35, +0x00013c33, +0x00013c31, +0x00013c30, +0x00013c2f, +0x00013c2c, +0x00013c2b, +0x00013c2a, +0x00013c29, +0x00013c26, +0x00013c25, +0x00013c24, +0x00013c23, +0x00013c20, +0x00013c1f, +0x00013c1e, +0x00013c1c, +0x00013c1b, +0x00013c19, +0x00013c17, +0x00013c16, +0x00013c15, +0x00013c13, +0x00013c11, +0x00013c10, +0x00013c0f, +0x00013c0c, +0x00013c0b, +0x00013c0a, +0x00013c09, +0x00013c07, +0x00013c05, +0x00013c04, +0x00013c02, +0x00013c01, +0x00013bff, +0x00013bfe, +0x00013bfc, +0x00013bfb, +0x00013bf9, +0x00013bf7, +0x00013bf6, +0x00013bf5, +0x00013bf2, +0x00013bf1, +0x00013bf0, +0x00013bef, +0x00013bed, +0x00013beb, +0x00013bea, +0x00013be9, +0x00013be7, +0x00013be5, +0x00013be4, +0x00013be2, +0x00013be1, +0x00013bdf, +0x00013bdd, +0x00013bdc, +0x00013bdb, +0x00013bd9, +0x00013bd7, +0x00013bd6, +0x00013bd5, +0x00013bd4, +0x00013bd1, +0x00013bd0, +0x00013bcf, +0x00013bcd, +0x00013bcb, +0x00013bca, +0x00013bc8, +0x00013bc7, +0x00013bc5, +0x00013bc4, +0x00013bc2, +0x00013bc1, +0x00013bbf, +0x00013bbd, +0x00013bbc, +0x00013bbb, +0x00013bba, +0x00013bb7, +0x00013bb6, +0x00013bb5, +0x00013bb3, +0x00013bb1, +0x00013bb0, +0x00013baf, +0x00013bad, +0x00013bab, +0x00013baa, +0x00013ba8, +0x00013ba7, +0x00013ba6, +0x00013ba3, +0x00013ba2, +0x00013ba1, +0x00013ba0, +0x00013b9d, +0x00013b9c, +0x00013b9b, +0x00013b9a, +0x00013b97, +0x00013b96, +0x00013b95, +0x00013b93, +0x00013b91, +0x00013b90, +0x00013b8e, +0x00013b8d, +0x00013b8c, +0x00013b8a, +0x00013b88, +0x00013b87, +0x00013b86, +0x00013b83, +0x00013b82, +0x00013b81, +0x00013b80, +0x00013b7d, +0x00013b7c, +0x00013b7b, +0x00013b79, +0x00013b77, +0x00013b76, +0x00013b75, +0x00013b74, +0x00013b71, +0x00013b70, +0x00013b6f, +0x00013b6e, +0x00013b6b, +0x00013b6a, +0x00013b69, +0x00013b67, +0x00013b65, +0x00013b64, +0x00013b62, +0x00013b61, +0x00013b60, +0x00013b5e, +0x00013b5c, +0x00013b5b, +0x00013b5a, +0x00013b57, +0x00013b56, +0x00013b55, +0x00013b54, +0x00013b51, +0x00013b50, +0x00013b4f, +0x00013b4e, +0x00013b4c, +0x00013b4a, +0x00013b49, +0x00013b47, +0x00013b46, +0x00013b44, +0x00013b42, +0x00013b41, +0x00013b40, +0x00013b3e, +0x00013b3c, +0x00013b3b, +0x00013b3a, +0x00013b39, +0x00013b36, +0x00013b35, +0x00013b34, +0x00013b32, +0x00013b30, +0x00013b2f, +0x00013b2e, +0x00013b2c, +0x00013b2a, +0x00013b29, +0x00013b27, +0x00013b26, +0x00013b25, +0x00013b22, +0x00013b21, +0x00013b20, +0x00013b1f, +0x00013b1c, +0x00013b1b, +0x00013b1a, +0x00013b19, +0x00013b16, +0x00013b15, +0x00013b14, +0x00013b12, +0x00013b11, +0x00013b0f, +0x00013b0e, +0x00013b0c, +0x00013b0b, +0x00013b09, +0x00013b07, +0x00013b06, +0x00013b05, +0x00013b02, +0x00013b01, +0x00013b00, +0x00013aff, +0x00013afe, +0x00013afb, +0x00013afa, +0x00013af9, +0x00013af7, +0x00013af5, +0x00013af4, +0x00013af2, +0x00013af1, +0x00013aef, +0x00013aee, +0x00013aec, +0x00013aeb, +0x00013aea, +0x00013ae7, +0x00013ae6, +0x00013ae5, +0x00013ae4, +0x00013ae1, +0x00013ae0, +0x00013adf, +0x00013ade, +0x00013adb, +0x00013ada, +0x00013ad9, +0x00013ad7, +0x00013ad6, +0x00013ad4, +0x00013ad2, +0x00013ad1, +0x00013ad0, +0x00013ace, +0x00013acc, +0x00013acb, +0x00013aca, +0x00013ac7, +0x00013ac6, +0x00013ac5, +0x00013ac4, +0x00013ac2, +0x00013ac0, +0x00013abf, +0x00013abe, +0x00013abc, +0x00013aba, +0x00013ab9, +0x00013ab7, +0x00013ab6, +0x00013ab4, +0x00013ab3, +0x00013ab1, +0x00013aaf, +0x00013aae, +0x00013aad, +0x00013aaa, +0x00013aa9, +0x00013aa8, +0x00013aa7, +0x00013aa4, +0x00013aa3, +0x00013aa2, +0x00013aa1, +0x00013a9f, +0x00013a9d, +0x00013a9c, +0x00013a9b, +0x00013a99, +0x00013a97, +0x00013a96, +0x00013a94, +0x00013a93, +0x00013a92, +0x00013a90, +0x00013a8e, +0x00013a8d, +0x00013a8c, +0x00013a89, +0x00013a88, +0x00013a87, +0x00013a86, +0x00013a83, +0x00013a82, +0x00013a81, +0x00013a80, +0x00013a7e, +0x00013a7c, +0x00013a7b, +0x00013a79, +0x00013a78, +0x00013a76, +0x00013a75, +0x00013a73, +0x00013a72, +0x00013a71, +0x00013a6e, +0x00013a6d, +0x00013a6c, +0x00013a6b, +0x00013a68, +0x00013a67, +0x00013a66, +0x00013a65, +0x00013a62, +0x00013a61, +0x00013a60, +0x00013a5e, +0x00013a5d, +0x00013a5b, +0x00013a5a, +0x00013a58, +0x00013a57, +0x00013a55, +0x00013a53, +0x00013a52, +0x00013a51, +0x00013a50, +0x00013a4d, +0x00013a4c, +0x00013a4b, +0x00013a4a, +0x00013a47, +0x00013a46, +0x00013a45, +0x00013a43, +0x00013a42, +0x00013a40, +0x00013a3f, +0x00013a3d, +0x00013a3c, +0x00013a3a, +0x00013a38, +0x00013a37, +0x00013a36, +0x00013a34, +0x00013a32, +0x00013a31, +0x00013a30, +0x00013a2f, +0x00013a2c, +0x00013a2b, +0x00013a2a, +0x00013a28, +0x00013a26, +0x00013a25, +0x00013a24, +0x00013a22, +0x00013a21, +0x00013a1f, +0x00013a1d, +0x00013a1c, +0x00013a1b, +0x00013a19, +0x00013a17, +0x00013a16, +0x00013a15, +0x00013a12, +0x00013a11, +0x00013a10, +0x00013a0f, +0x00013a0d, +0x00013a0b, +0x00013a0a, +0x00013a09, +0x00013a07, +0x00013a05, +0x00013a04, +0x00013a02, +0x00013a01, +0x00013a00, +0x000139fe, +0x000139fc, +0x000139fb, +0x000139fa, +0x000139f7, +0x000139f6, +0x000139f5, +0x000139f4, +0x000139f3, +0x000139f0, +0x000139ef, +0x000139ee, +0x000139ec, +0x000139ea, +0x000139e9, +0x000139e7, +0x000139e6, +0x000139e4, +0x000139e3, +0x000139e1, +0x000139e0, +0x000139df, +0x000139dc, +0x000139db, +0x000139da, +0x000139d9, +0x000139d6, +0x000139d5, +0x000139d4, +0x000139d3, +0x000139d1, +0x000139cf, +0x000139ce, +0x000139cc, +0x000139cb, +0x000139c9, +0x000139c8, +0x000139c6, +0x000139c5, +0x000139c3, +0x000139c1, +0x000139c0, +0x000139bf, +0x000139be, +0x000139bb, +0x000139ba, +0x000139b9, +0x000139b8, +0x000139b5, +0x000139b4, +0x000139b3, +0x000139b2, +0x000139b0, +0x000139ae, +0x000139ad, +0x000139ab, +0x000139aa, +0x000139a8, +0x000139a6, +0x000139a5, +0x000139a4, +0x000139a2, +0x000139a0, +0x0001399f, +0x0001399e, +0x0001399d, +0x0001399a, +0x00013999, +0x00013998, +0x00013997, +0x00013994, +0x00013993, +0x00013992, +0x00013990, +0x0001398f, +0x0001398d, +0x0001398b, +0x0001398a, +0x00013989, +0x00013987, +0x00013985, +0x00013984, +0x00013983, +0x00013982, +0x0001397f, +0x0001397e, +0x0001397d, +0x0001397c, +0x00013979, +0x00013978, +0x00013977, +0x00013975, +0x00013973, +0x00013972, +0x00013970, +0x0001396f, +0x0001396e, +0x0001396c, +0x0001396a, +0x00013969, +0x00013968, +0x00013965, +0x00013964, +0x00013963, +0x00013962, +0x00013961, +0x0001395e, +0x0001395d, +0x0001395c, +0x0001395a, +0x00013958, +0x00013957, +0x00013956, +0x00013954, +0x00013952, +0x00013951, +0x0001394f, +0x0001394e, +0x0001394d, +0x0001394a, +0x00013949, +0x00013948, +0x00013947, +0x00013944, +0x00013943, +0x00013942, +0x00013941, +0x0001393f, +0x0001393d, +0x0001393c, +0x0001393b, +0x00013939, +0x00013937, +0x00013936, +0x00013934, +0x00013933, +0x00013932, +0x00013931, +0x0001392e, +0x0001392d, +0x0001392c, +0x0001392b, +0x00013928, +0x00013927, +0x00013926, +0x00013925, +0x00013923, +0x00013921, +0x00013920, +0x0001391f, +0x0001391d, +0x0001391b, +0x0001391a, +0x00013918, +0x00013917, +0x00013916, +0x00013914, +0x00013912, +0x00013911, +0x00013910, +0x0001390d, +0x0001390c, +0x0001390b, +0x0001390a, +0x00013909, +0x00013906, +0x00013905, +0x00013904, +0x00013902, +0x00013900, +0x000138ff, +0x000138fe, +0x000138fc, +0x000138fb, +0x000138f9, +0x000138f7, +0x000138f6, +0x000138f5, +0x000138f3, +0x000138f1, +0x000138f0, +0x000138ef, +0x000138ee, +0x000138eb, +0x000138ea, +0x000138e9, +0x000138e8, +0x000138e5, +0x000138e4, +0x000138e3, +0x000138e1, +0x000138e0, +0x000138de, +0x000138dd, +0x000138db, +0x000138da, +0x000138d8, +0x000138d6, +0x000138d5, +0x000138d4, +0x000138d3, +0x000138d0, +0x000138cf, +0x000138ce, +0x000138cd, +0x000138ca, +0x000138c9, +0x000138c8, +0x000138c7, +0x000138c4, +0x000138c3, +0x000138c2, +0x000138c0, +0x000138bf, +0x000138bd, +0x000138bc, +0x000138ba, +0x000138b9, +0x000138b7, +0x000138b5, +0x000138b4, +0x000138b3, +0x000138b2, +0x000138af, +0x000138ae, +0x000138ad, +0x000138ac, +0x000138a9, +0x000138a8, +0x000138a7, +0x000138a6, +0x000138a4, +0x000138a2, +0x000138a1, +0x0001389f, +0x0001389e, +0x0001389c, +0x0001389b, +0x00013899, +0x00013898, +0x00013897, +0x00013894, +0x00013893, +0x00013892, +0x00013891, +0x0001388e, +0x0001388d, +0x0001388c, +0x0001388b, +0x00013889, +0x00013887, +0x00013886, +0x00013885, +0x00013883, +0x00013881, +0x00013880, +0x0001387e, +0x0001387d, +0x0001387c, +0x0001387a, +0x00013878, +0x00013877, +0x00013876, +0x00013873, +0x00013873, +0x00013871, +0x00013870, +0x0001386e, +0x0001386c, +0x0001386b, +0x0001386a, +0x00013868, +0x00013866, +0x00013865, +0x00013864, +0x00013863, +0x00013860, +0x0001385f, +0x0001385e, +0x0001385d, +0x0001385b, +0x00013859, +0x00013858, +0x00013857, +0x00013855, +0x00013853, +0x00013852, +0x00013850, +0x0001384f, +0x0001384e, +0x0001384c, +0x0001384a, +0x00013849, +0x00013848, +0x00013845, +0x00013844, +0x00013843, +0x00013842, +0x00013841, +0x0001383e, +0x0001383d, +0x0001383c, +0x0001383b, +0x00013838, +0x00013837, +0x00013836, +0x00013834, +0x00013833, +0x00013831, +0x00013830, +0x0001382e, +0x0001382d, +0x0001382c, +0x00013829, +0x00013828, +0x00013827, +0x00013826, +0x00013823, +0x00013822, +0x00013821, +0x00013820, +0x0001381e, +0x0001381c, +0x0001381b, +0x0001381a, +0x00013818, +0x00013816, +0x00013815, +0x00013814, +0x00013812, +0x00013811, +0x0001380f, +0x0001380d, +0x0001380c, +0x0001380b, +0x00013809, +0x00013807, +0x00013806, +0x00013805, +0x00013804, +0x00013801, +0x00013800, +0x000137ff, +0x000137fe, +0x000137fc, +0x000137fa, +0x000137f9, +0x000137f7, +0x000137f6, +0x000137f4, +0x000137f3, +0x000137f1, +0x000137f0, +0x000137ef, +0x000137ed, +0x000137eb, +0x000137ea, +0x000137e9, +0x000137e6, +0x000137e5, +0x000137e4, +0x000137e3, +0x000137e2, +0x000137df, +0x000137de, +0x000137dd, +0x000137db, +0x000137d9, +0x000137d8, +0x000137d7, +0x000137d5, +0x000137d4, +0x000137d2, +0x000137d0, +0x000137cf, +0x000137ce, +0x000137cd, +0x000137ca, +0x000137c9, +0x000137c8, +0x000137c7, +0x000137c4, +0x000137c3, +0x000137c2, +0x000137c1, +0x000137bf, +0x000137bd, +0x000137bc, +0x000137bb, +0x000137b9, +0x000137b7, +0x000137b6, +0x000137b4, +0x000137b3, +0x000137b1, +0x000137b0, +0x000137ae, +0x000137ad, +0x000137ab, +0x000137aa, +0x000137a9, +0x000137a6, +0x000137a5, +0x000137a4, +0x000137a3, +0x000137a0, +0x0001379f, +0x0001379e, +0x0001379d, +0x0001379c, +0x00013799, +0x00013798, +0x00013797, +0x00013795, +0x00013794, +0x00013792, +0x00013791, +0x0001378f, +0x0001378e, +0x0001378c, +0x0001378a, +0x00013789, +0x00013788, +0x00013787, +0x00013784, +0x00013783, +0x00013782, +0x00013781, +0x00013780, +0x0001377d, +0x0001377c, +0x0001377b, +0x00013779, +0x00013777, +0x00013776, +0x00013775, +0x00013773, +0x00013772, +0x00013770, +0x0001376f, +0x0001376d, +0x0001376c, +0x0001376b, +0x00013768, +0x00013767, +0x00013766, +0x00013765, +0x00013762, +0x00013761, +0x00013760, +0x0001375f, +0x0001375e, +0x0001375b, +0x0001375a, +0x00013759, +0x00013757, +0x00013756, +0x00013754, +0x00013753, +0x00013751, +0x00013750, +0x0001374e, +0x0001374d, +0x0001374b, +0x0001374a, +0x00013749, +0x00013746, +0x00013745, +0x00013744, +0x00013743, +0x00013740, +0x0001373f, +0x0001373e, +0x0001373d, +0x0001373c, +0x00013739, +0x00013738, +0x00013737, +0x00013735, +0x00013734, +0x00013732, +0x00013731, +0x0001372f, +0x0001372e, +0x0001372c, +0x0001372b, +0x00013729, +0x00013728, +0x00013727, +0x00013724, +0x00013723, +0x00013722, +0x00013721, +0x00013720, +0x0001371d, +0x0001371c, +0x0001371b, +0x0001371a, +0x00013717, +0x00013716, +0x00013715, +0x00013713, +0x00013712, +0x00013710, +0x0001370f, +0x0001370d, +0x0001370c, +0x0001370b, +0x00013709, +0x00013707, +0x00013706, +0x00013705, +0x00013702, +0x00013701, +0x00013700, +0x000136ff, +0x000136fe, +0x000136fb, +0x000136fa, +0x000136f9, +0x000136f7, +0x000136f6, +0x000136f4, +0x000136f3, +0x000136f1, +0x000136f0, +0x000136ee, +0x000136ed, +0x000136eb, +0x000136ea, +0x000136e9, +0x000136e6, +0x000136e5, +0x000136e4, +0x000136e3, +0x000136e2, +0x000136df, +0x000136de, +0x000136dd, +0x000136dc, +0x000136d9, +0x000136d8, +0x000136d7, +0x000136d5, +0x000136d4, +0x000136d2, +0x000136d1, +0x000136cf, +0x000136ce, +0x000136cd, +0x000136cb, +0x000136c9, +0x000136c8, +0x000136c7, +0x000136c4, +0x000136c3, +0x000136c2, +0x000136c1, +0x000136c0, +0x000136bd, +0x000136bc, +0x000136bb, +0x000136ba, +0x000136b8, +0x000136b6, +0x000136b5, +0x000136b3, +0x000136b2, +0x000136b0, +0x000136af, +0x000136ad, +0x000136ac, +0x000136ab, +0x000136a9, +0x000136a7, +0x000136a6, +0x000136a5, +0x000136a4, +0x000136a1, +0x000136a0, +0x0001369f, +0x0001369e, +0x0001369b, +0x0001369a, +0x00013699, +0x00013698, +0x00013696, +0x00013694, +0x00013693, +0x00013691, +0x00013690, +0x0001368e, +0x0001368d, +0x0001368b, +0x0001368a, +0x00013689, +0x00013687, +0x00013685, +0x00013684, +0x00013683, +0x00013682, +0x0001367f, +0x0001367e, +0x0001367d, +0x0001367c, +0x00013679, +0x00013678, +0x00013677, +0x00013676, +0x00013674, +0x00013672, +0x00013671, +0x0001366f, +0x0001366e, +0x0001366d, +0x0001366b, +0x00013669, +0x00013668, +0x00013667, +0x00013665, +0x00013663, +0x00013662, +0x00013661, +0x00013660, +0x0001365d, +0x0001365c, +0x0001365b, +0x0001365a, +0x00013658, +0x00013656, +0x00013655, +0x00013653, +0x00013652, +0x00013650, +0x0001364f, +0x0001364d, +0x0001364c, +0x0001364b, +0x00013649, +0x00013647, +0x00013646, +0x00013645, +0x00013644, +0x00013641, +0x00013640, +0x0001363f, +0x0001363e, +0x0001363b, +0x0001363b, +0x00013639, +0x00013638, +0x00013636, +0x00013635, +0x00013633, +0x00013632, +0x00013630, +0x0001362f, +0x0001362e, +0x0001362c, +0x0001362a, +0x00013629, +0x00013628, +0x00013627, +0x00013624, +0x00013623, +0x00013622, +0x00013621, +0x0001361e, +0x0001361d, +0x0001361c, +0x0001361b, +0x00013619, +0x00013617, +0x00013616, +0x00013615, +0x00013613, +0x00013612, +0x00013610, +0x0001360f, +0x0001360d, +0x0001360c, +0x0001360b, +0x00013608, +0x00013607, +0x00013606, +0x00013605, +0x00013602, +0x00013601, +0x00013600, +0x000135ff, +0x000135fe, +0x000135fb, +0x000135fa, +0x000135f9, +0x000135f8, +0x000135f6, +0x000135f4, +0x000135f3, +0x000135f1, +0x000135f0, +0x000135ef, +0x000135ed, +0x000135eb, +0x000135ea, +0x000135e9, +0x000135e7, +0x000135e5, +0x000135e4, +0x000135e3, +0x000135e2, +0x000135df, +0x000135de, +0x000135dd, +0x000135dc, +0x000135da, +0x000135d8, +0x000135d7, +0x000135d6, +0x000135d4, +0x000135d3, +0x000135d1, +0x000135d0, +0x000135ce, +0x000135cd, +0x000135cb, +0x000135ca, +0x000135c8, +0x000135c7, +0x000135c6, +0x000135c3, +0x000135c2, +0x000135c1, +0x000135c0, +0x000135bf, +0x000135bc, +0x000135bb, +0x000135ba, +0x000135b9, +0x000135b7, +0x000135b5, +0x000135b4, +0x000135b3, +0x000135b1, +0x000135af, +0x000135ae, +0x000135ac, +0x000135ab, +0x000135aa, +0x000135a8, +0x000135a6, +0x000135a5, +0x000135a4, +0x000135a3, +0x000135a0, +0x0001359f, +0x0001359e, +0x0001359d, +0x0001359b, +0x00013599, +0x00013598, +0x00013597, +0x00013595, +0x00013593, +0x00013592, +0x00013591, +0x0001358f, +0x0001358e, +0x0001358c, +0x0001358b, +0x00013589, +0x00013588, +0x00013587, +0x00013584, +0x00013583, +0x00013582, +0x00013581, +0x0001357f, +0x0001357e, +0x0001357c, +0x0001357b, +0x00013579, +0x00013577, +0x00013576, +0x00013575, +0x00013574, +0x00013571, +0x00013570, +0x0001356f, +0x0001356e, +0x0001356d, +0x0001356a, +0x00013569, +0x00013568, +0x00013567, +0x00013565, +0x00013563, +0x00013562, +0x00013561, +0x0001355f, +0x0001355d, +0x0001355c, +0x0001355b, +0x00013559, +0x00013558, +0x00013556, +0x00013554, +0x00013553, +0x00013552, +0x00013551, +0x0001354e, +0x0001354d, +0x0001354c, +0x0001354b, +0x0001354a, +0x00013547, +0x00013546, +0x00013545, +0x00013544, +0x00013542, +0x00013540, +0x0001353f, +0x0001353e, +0x0001353c, +0x0001353b, +0x00013539, +0x00013538, +0x00013536, +0x00013535, +0x00013533, +0x00013531, +0x00013530, +0x0001352f, +0x0001352e, +0x0001352b, +0x0001352a, +0x00013529, +0x00013528, +0x00013527, +0x00013524, +0x00013523, +0x00013522, +0x00013521, +0x0001351f, +0x0001351d, +0x0001351c, +0x0001351b, +0x00013519, +0x00013518, +0x00013516, +0x00013515, +0x00013513, +0x00013512, +0x00013511, +0x0001350e, +0x0001350d, +0x0001350c, +0x0001350b, +0x00013508, +0x00013507, +0x00013506, +0x00013505, +0x00013504, +0x00013501, +0x00013500, +0x000134ff, +0x000134fe, +0x000134fc, +0x000134fa, +0x000134f9, +0x000134f8, +0x000134f6, +0x000134f5, +0x000134f3, +0x000134f2, +0x000134f0, +0x000134ef, +0x000134ee, +0x000134eb, +0x000134ea, +0x000134e9, +0x000134e8, +0x000134e7, +0x000134e4, +0x000134e3, +0x000134e2, +0x000134e1, +0x000134de, +0x000134dd, +0x000134dc, +0x000134db, +0x000134d9, +0x000134d7, +0x000134d6, +0x000134d5, +0x000134d3, +0x000134d2, +0x000134d0, +0x000134cf, +0x000134cd, +0x000134cc, +0x000134cb, +0x000134c8, +0x000134c7, +0x000134c6, +0x000134c4, +0x000134c3, +0x000134c2, +0x000134bf, +0x000134be, +0x000134bd, +0x000134bc, +0x000134ba, +0x000134b8, +0x000134b7, +0x000134b6, +0x000134b4, +0x000134b3, +0x000134b1, +0x000134b0, +0x000134ae, +0x000134ad, +0x000134ac, +0x000134aa, +0x000134a8, +0x000134a7, +0x000134a6, +0x000134a5, +0x000134a2, +0x000134a1, +0x000134a0, +0x0001349f, +0x0001349e, +0x0001349b, +0x0001349a, +0x00013499, +0x00013498, +0x00013496, +0x00013494, +0x00013493, +0x00013492, +0x00013490, +0x0001348e, +0x0001348d, +0x0001348c, +0x0001348a, +0x00013489, +0x00013487, +0x00013486, +0x00013484, +0x00013483, +0x00013482, +0x00013480, +0x0001347e, +0x0001347d, +0x0001347c, +0x0001347b, +0x00013478, +0x00013477, +0x00013476, +0x00013475, +0x00013474, +0x00013471, +0x00013470, +0x0001346f, +0x0001346d, +0x0001346c, +0x0001346a, +0x00013469, +0x00013467, +0x00013466, +0x00013465, +0x00013463, +0x00013461, +0x00013460, +0x0001345f, +0x0001345e, +0x0001345b, +0x0001345a, +0x00013459, +0x00013458, +0x00013457, +0x00013454, +0x00013453, +0x00013452, +0x00013451, +0x0001344f, +0x0001344d, +0x0001344c, +0x0001344b, +0x00013449, +0x00013448, +0x00013446, +0x00013445, +0x00013443, +0x00013442, +0x00013441, +0x0001343f, +0x0001343d, +0x0001343c, +0x0001343b, +0x0001343a, +0x00013437, +0x00013436, +0x00013435, +0x00013434, +0x00013431, +0x00013430, +0x0001342f, +0x0001342e, +0x0001342d, +0x0001342a, +0x00013429, +0x00013428, +0x00013427, +0x00013425, +0x00013423, +0x00013422, +0x00013420, +0x0001341f, +0x0001341e, +0x0001341c, +0x0001341a, +0x00013419, +0x00013418, +0x00013417, +0x00013414, +0x00013413, +0x00013412, +0x00013411, +0x00013410, +0x0001340d, +0x0001340c, +0x0001340b, +0x0001340a, +0x00013408, +0x00013406, +0x00013405, +0x00013404, +0x00013402, +0x00013401, +0x000133ff, +0x000133fe, +0x000133fc, +0x000133fb, +0x000133fa, +0x000133f8, +0x000133f6, +0x000133f5, +0x000133f4, +0x000133f3, +0x000133f0, +0x000133ef, +0x000133ee, +0x000133ed, +0x000133ec, +0x000133e9, +0x000133e8, +0x000133e7, +0x000133e6, +0x000133e4, +0x000133e2, +0x000133e1, +0x000133e0, +0x000133de, +0x000133dd, +0x000133db, +0x000133da, +0x000133d8, +0x000133d7, +0x000133d5, +0x000133d3, +0x000133d2, +0x000133d1, +0x000133d0, +0x000133cd, +0x000133cc, +0x000133cb, +0x000133ca, +0x000133c9, +0x000133c6, +0x000133c5, +0x000133c4, +0x000133c3, +0x000133c1, +0x000133bf, +0x000133be, +0x000133bd, +0x000133bb, +0x000133ba, +0x000133b8, +0x000133b7, +0x000133b5, +0x000133b4, +0x000133b3, +0x000133b1, +0x000133af, +0x000133ae, +0x000133ad, +0x000133ac, +0x000133a9, +0x000133a8, +0x000133a7, +0x000133a6, +0x000133a5, +0x000133a2, +0x000133a1, +0x000133a0, +0x0001339f, +0x0001339d, +0x0001339b, +0x0001339a, +0x00013399, +0x00013397, +0x00013396, +0x00013394, +0x00013393, +0x00013391, +0x00013390, +0x0001338f, +0x0001338d, +0x0001338b, +0x0001338a, +0x00013389, +0x00013388, +0x00013385, +0x00013384, +0x00013383, +0x00013382, +0x00013380, +0x0001337e, +0x0001337d, +0x0001337c, +0x0001337a, +0x00013378, +0x00013377, +0x00013376, +0x00013374, +0x00013373, +0x00013371, +0x00013370, +0x0001336e, +0x0001336d, +0x0001336c, +0x0001336a, +0x00013368, +0x00013367, +0x00013366, +0x00013365, +0x00013362, +0x00013361, +0x00013360, +0x0001335f, +0x0001335e, +0x0001335b, +0x0001335a, +0x00013359, +0x00013358, +0x00013356, +0x00013354, +0x00013353, +0x00013352, +0x00013350, +0x0001334f, +0x0001334e, +0x0001334c, +0x0001334a, +0x00013349, +0x00013348, +0x00013347, +0x00013344, +0x00013343, +0x00013342, +0x00013341, +0x00013340, +0x0001333d, +0x0001333c, +0x0001333b, +0x0001333a, +0x00013338, +0x00013336, +0x00013335, +0x00013334, +0x00013332, +0x00013331, +0x0001332f, +0x0001332e, +0x0001332c, +0x0001332b, +0x0001332a, +0x00013328, +0x00013326, +0x00013325, +0x00013324, +0x00013323, +0x00013320, +0x0001331f, +0x0001331e, +0x0001331d, +0x0001331c, +0x00013319, +0x00013318, +0x00013317, +0x00013316, +0x00013314, +0x00013312, +0x00013311, +0x00013310, +0x0001330e, +0x0001330d, +0x0001330b, +0x0001330a, +0x00013308, +0x00013307, +0x00013306, +0x00013304, +0x00013302, +0x00013301, +0x00013300, +0x000132ff, +0x000132fc, +0x000132fb, +0x000132fa, +0x000132f9, +0x000132f8, +0x000132f6, +0x000132f4, +0x000132f3, +0x000132f2, +0x000132f0, +0x000132ef, +0x000132ed, +0x000132ec, +0x000132ea, +0x000132e9, +0x000132e8, +0x000132e6, +0x000132e4, +0x000132e3, +0x000132e2, +0x000132e1, +0x000132de, +0x000132dd, +0x000132dc, +0x000132db, +0x000132da, +0x000132d7, +0x000132d6, +0x000132d5, +0x000132d4, +0x000132d2, +0x000132d0, +0x000132cf, +0x000132ce, +0x000132cc, +0x000132cb, +0x000132c9, +0x000132c8, +0x000132c6, +0x000132c5, +0x000132c4, +0x000132c2, +0x000132c0, +0x000132bf, +0x000132be, +0x000132bd, +0x000132ba, +0x000132b9, +0x000132b8, +0x000132b7, +0x000132b6, +0x000132b3, +0x000132b2, +0x000132b1, +0x000132b0, +0x000132ae, +0x000132ac, +0x000132ab, +0x000132aa, +0x000132a8, +0x000132a7, +0x000132a5, +0x000132a4, +0x000132a2, +0x000132a1, +0x000132a0, +0x0001329e, +0x0001329c, +0x0001329b, +0x0001329a, +0x00013298, +0x00013297, +0x00013295, +0x00013294, +0x00013293, +0x00013291, +0x0001328f, +0x0001328e, +0x0001328d, +0x0001328c, +0x00013289, +0x00013288, +0x00013287, +0x00013286, +0x00013285, +0x00013282, +0x00013281, +0x00013280, +0x0001327f, +0x0001327e, +0x0001327b, +0x0001327a, +0x00013279, +0x00013278, +0x00013276, +0x00013274, +0x00013273, +0x00013272, +0x00013270, +0x0001326f, +0x0001326d, +0x0001326c, +0x0001326a, +0x00013269, +0x00013268, +0x00013266, +0x00013264, +0x00013263, +0x00013262, +0x00013261, +0x0001325e, +0x0001325d, +0x0001325c, +0x0001325b, +0x0001325a, +0x00013258, +0x00013256, +0x00013255, +0x00013254, +0x00013252, +0x00013251, +0x0001324f, +0x0001324e, +0x0001324d, +0x0001324b, +0x0001324a, +0x00013248, +0x00013247, +0x00013245, +0x00013244, +0x00013243, +0x00013241, +0x0001323f, +0x0001323e, +0x0001323d, +0x0001323c, +0x00013239, +0x00013238, +0x00013237, +0x00013236, +0x00013235, +0x00013232, +0x00013231, +0x00013230, +0x0001322f, +0x0001322d, +0x0001322b, +0x0001322a, +0x00013229, +0x00013227, +0x00013226, +0x00013224, +0x00013223, +0x00013221, +0x00013220, +0x0001321f, +0x0001321e, +0x0001321b, +0x0001321a, +0x00013219, +0x00013218, +0x00013217, +0x00013214, +0x00013213, +0x00013212, +0x00013211, +0x00013210, +0x0001320d, +0x0001320c, +0x0001320b, +0x0001320a, +0x00013208, +0x00013206, +0x00013205, +0x00013204, +0x00013202, +0x00013201, +0x000131ff, +0x000131fe, +0x000131fc, +0x000131fb, +0x000131fa, +0x000131f8, +0x000131f6, +0x000131f5, +0x000131f4, +0x000131f3, +0x000131f0, +0x000131ef, +0x000131ee, +0x000131ed, +0x000131ec, +0x000131e9, +0x000131e8, +0x000131e7, +0x000131e6, +0x000131e5, +0x000131e3, +0x000131e1, +0x000131e0, +0x000131df, +0x000131dd, +0x000131dc, +0x000131da, +0x000131d9, +0x000131d7, +0x000131d6, +0x000131d5, +0x000131d3, +0x000131d1, +0x000131d0, +0x000131cf, +0x000131ce, +0x000131cb, +0x000131ca, +0x000131c9, +0x000131c8, +0x000131c7, +0x000131c4, +0x000131c3, +0x000131c2, +0x000131c1, +0x000131bf, +0x000131bd, +0x000131bc, +0x000131bb, +0x000131b9, +0x000131b8, +0x000131b6, +0x000131b5, +0x000131b4, +0x000131b2, +0x000131b1, +0x000131af, +0x000131ae, +0x000131ac, +0x000131ab, +0x000131aa, +0x000131a8, +0x000131a6, +0x000131a5, +0x000131a4, +0x000131a3, +0x000131a2, +0x0001319f, +0x0001319e, +0x0001319d, +0x0001319c, +0x0001319a, +0x00013198, +0x00013197, +0x00013196, +0x00013194, +0x00013193, +0x00013191, +0x00013190, +0x0001318e, +0x0001318d, +0x0001318c, +0x0001318a, +0x00013188, +0x00013187, +0x00013186, +0x00013185, +0x00013182, +0x00013181, +0x00013180, +0x0001317f, +0x0001317e, +0x0001317b, +0x0001317a, +0x00013179, +0x00013178, +0x00013177, +0x00013174, +0x00013173, +0x00013172, +0x00013171, +0x0001316f, +0x0001316d, +0x0001316c, +0x0001316b, +0x00013169, +0x00013168, +0x00013167, +0x00013165, +0x00013163, +0x00013162, +0x00013161, +0x00013160, +0x0001315d, +0x0001315c, +0x0001315b, +0x0001315a, +0x00013159, +0x00013156, +0x00013155, +0x00013154, +0x00013153, +0x00013151, +0x0001314f, +0x0001314e, +0x0001314d, +0x0001314c, +0x0001314a, +0x00013148, +0x00013147, +0x00013146, +0x00013144, +0x00013143, +0x00013141, +0x00013140, +0x0001313e, +0x0001313d, +0x0001313c, +0x0001313a, +0x00013138, +0x00013137, +0x00013136, +0x00013135, +0x00013132, +0x00013131, +0x00013130, +0x0001312f, +0x0001312e, +0x0001312c, +0x0001312b, +0x0001312a, +0x00013129, +0x00013126, +0x00013125, +0x00013124, +0x00013123, +0x00013121, +0x00013120, +0x0001311e, +0x0001311d, +0x0001311b, +0x0001311a, +0x00013119, +0x00013117, +0x00013115, +0x00013114, +0x00013113, +0x00013112, +0x0001310f, +0x0001310e, +0x0001310d, +0x0001310c, +0x0001310b, +0x00013108, +0x00013107, +0x00013106, +0x00013105, +0x00013104, +0x00013102, +0x00013100, +0x000130ff, +0x000130fe, +0x000130fc, +0x000130fb, +0x000130f9, +0x000130f8, +0x000130f6, +0x000130f5, +0x000130f4, +0x000130f2, +0x000130f1, +0x000130ef, +0x000130ee, +0x000130ed, +0x000130eb, +0x000130e9, +0x000130e8, +0x000130e7, +0x000130e6, +0x000130e3, +0x000130e2, +0x000130e1, +0x000130e0, +0x000130df, +0x000130dd, +0x000130db, +0x000130da, +0x000130d9, +0x000130d7, +0x000130d6, +0x000130d4, +0x000130d3, +0x000130d2, +0x000130d0, +0x000130cf, +0x000130cd, +0x000130cc, +0x000130ca, +0x000130c9, +0x000130c8, +0x000130c6, +0x000130c4, +0x000130c3, +0x000130c2, +0x000130c1, +0x000130c0, +0x000130bd, +0x000130bc, +0x000130bb, +0x000130ba, +0x000130b9, +0x000130b6, +0x000130b5, +0x000130b4, +0x000130b3, +0x000130b1, +0x000130af, +0x000130ae, +0x000130ad, +0x000130ab, +0x000130aa, +0x000130a8, +0x000130a7, +0x000130a5, +0x000130a4, +0x000130a3, +0x000130a1, +0x0001309f, +0x0001309e, +0x0001309d, +0x0001309c, +0x0001309b, +0x00013098, +0x00013097, +0x00013096, +0x00013095, +0x00013094, +0x00013091, +0x00013090, +0x0001308f, +0x0001308e, +0x0001308c, +0x0001308a, +0x00013089, +0x00013088, +0x00013086, +0x00013085, +0x00013083, +0x00013082, +0x00013081, +0x0001307f, +0x0001307e, +0x0001307d, +0x0001307b, +0x00013079, +0x00013078, +0x00013077, +0x00013076, +0x00013074, +0x00013072, +0x00013071, +0x00013070, +0x0001306e, +0x0001306d, +0x0001306c, +0x0001306a, +0x00013069, +0x00013067, +0x00013066, +0x00013065, +0x00013063, +0x00013061, +0x00013060, +0x0001305f, +0x0001305e, +0x0001305b, +0x0001305a, +0x00013059, +0x00013058, +0x00013057, +0x00013056, +0x00013053, +0x00013052, +0x00013051, +0x00013050, +0x0001304e, +0x0001304c, +0x0001304b, +0x0001304a, +0x00013048, +0x00013047, +0x00013045, +0x00013044, +0x00013043, +0x00013041, +0x00013040, +0x0001303f, +0x0001303d, +0x0001303b, +0x0001303a, +0x00013039, +0x00013038, +0x00013035, +0x00013034, +0x00013033, +0x00013032, +0x00013031, +0x0001302e, +0x0001302d, +0x0001302c, +0x0001302b, +0x0001302a, +0x00013028, +0x00013026, +0x00013025, +0x00013024, +0x00013022, +0x00013021, +0x0001301f, +0x0001301e, +0x0001301d, +0x0001301b, +0x0001301a, +0x00013018, +0x00013017, +0x00013015, +0x00013014, +0x00013013, +0x00013012, +0x0001300f, +0x0001300e, +0x0001300d, +0x0001300c, +0x0001300b, +0x00013008, +0x00013007, +0x00013006, +0x00013005, +0x00013004, +0x00013001, +0x00013000, +0x00012fff, +0x00012ffe, +0x00012ffc, +0x00012ffb, +0x00012ff9, +0x00012ff8, +0x00012ff7, +0x00012ff5, +0x00012ff4, +0x00012ff2, +0x00012ff1, +0x00012fef, +0x00012fee, +0x00012fed, +0x00012feb, +0x00012fe9, +0x00012fe8, +0x00012fe7, +0x00012fe6, +0x00012fe5, +0x00012fe2, +0x00012fe1, +0x00012fe0, +0x00012fdf, +0x00012fde, +0x00012fdb, +0x00012fda, +0x00012fd9, +0x00012fd8, +0x00012fd6, +0x00012fd4, +0x00012fd3, +0x00012fd2, +0x00012fd1, +0x00012fcf, +0x00012fce, +0x00012fcc, +0x00012fcb, +0x00012fc9, +0x00012fc8, +0x00012fc7, +0x00012fc5, +0x00012fc3, +0x00012fc2, +0x00012fc1, +0x00012fbf, +0x00012fbd, +0x00012fbc, +0x00012fbb, +0x00012fba, +0x00012fb7, +0x00012fb6, +0x00012fb5, +0x00012fb4, +0x00012fb3, +0x00012fb2, +0x00012faf, +0x00012fae, +0x00012fad, +0x00012fac, +0x00012faa, +0x00012fa8, +0x00012fa7, +0x00012fa6, +0x00012fa5, +0x00012fa3, +0x00012fa2, +0x00012fa0, +0x00012f9f, +0x00012f9d, +0x00012f9c, +0x00012f9b, +0x00012f99, +0x00012f98, +0x00012f96, +0x00012f95, +0x00012f94, +0x00012f93, +0x00012f90, +0x00012f8f, +0x00012f8e, +0x00012f8d, +0x00012f8c, +0x00012f89, +0x00012f88, +0x00012f87, +0x00012f86, +0x00012f85, +0x00012f82, +0x00012f81, +0x00012f80, +0x00012f7f, +0x00012f7d, +0x00012f7c, +0x00012f7a, +0x00012f79, +0x00012f78, +0x00012f76, +0x00012f75, +0x00012f73, +0x00012f72, +0x00012f70, +0x00012f6f, +0x00012f6e, +0x00012f6d, +0x00012f6b, +0x00012f69, +0x00012f68, +0x00012f67, +0x00012f66, +0x00012f63, +0x00012f62, +0x00012f61, +0x00012f60, +0x00012f5f, +0x00012f5e, +0x00012f5b, +0x00012f5a, +0x00012f59, +0x00012f58, +0x00012f56, +0x00012f54, +0x00012f53, +0x00012f52, +0x00012f50, +0x00012f4f, +0x00012f4e, +0x00012f4c, +0x00012f4b, +0x00012f49, +0x00012f48, +0x00012f47, +0x00012f45, +0x00012f43, +0x00012f42, +0x00012f41, +0x00012f40, +0x00012f3e, +0x00012f3c, +0x00012f3b, +0x00012f3a, +0x00012f39, +0x00012f38, +0x00012f35, +0x00012f34, +0x00012f33, +0x00012f32, +0x00012f31, +0x00012f2e, +0x00012f2d, +0x00012f2c, +0x00012f2b, +0x00012f29, +0x00012f28, +0x00012f26, +0x00012f25, +0x00012f24, +0x00012f22, +0x00012f21, +0x00012f1f, +0x00012f1e, +0x00012f1c, +0x00012f1b, +0x00012f1a, +0x00012f19, +0x00012f16, +0x00012f15, +0x00012f14, +0x00012f13, +0x00012f12, +0x00012f0f, +0x00012f0e, +0x00012f0d, +0x00012f0c, +0x00012f0b, +0x00012f09, +0x00012f07, +0x00012f06, +0x00012f05, +0x00012f04, +0x00012f02, +0x00012f00, +0x00012eff, +0x00012efe, +0x00012efc, +0x00012efb, +0x00012ef9, +0x00012ef8, +0x00012ef7, +0x00012ef5, +0x00012ef4, +0x00012ef3, +0x00012ef1, +0x00012eef, +0x00012eee, +0x00012eed, +0x00012eec, +0x00012eea, +0x00012ee8, +0x00012ee7, +0x00012ee6, +0x00012ee5, +0x00012ee4, +0x00012ee1, +0x00012ee0, +0x00012edf, +0x00012ede, +0x00012edc, +0x00012eda, +0x00012ed9, +0x00012ed8, +0x00012ed7, +0x00012ed5, +0x00012ed4, +0x00012ed2, +0x00012ed1, +0x00012ecf, +0x00012ece, +0x00012ecd, +0x00012ecb, +0x00012eca, +0x00012ec8, +0x00012ec7, +0x00012ec6, +0x00012ec5, +0x00012ec2, +0x00012ec1, +0x00012ec0, +0x00012ebf, +0x00012ebe, +0x00012ebb, +0x00012eba, +0x00012eb9, +0x00012eb8, +0x00012eb7, +0x00012eb5, +0x00012eb3, +0x00012eb2, +0x00012eb1, +0x00012eb0, +0x00012eae, +0x00012eac, +0x00012eab, +0x00012eaa, +0x00012ea8, +0x00012ea7, +0x00012ea5, +0x00012ea4, +0x00012ea2, +0x00012ea1, +0x00012ea0, +0x00012e9f, +0x00012e9d, +0x00012e9b, +0x00012e9a, +0x00012e99, +0x00012e98, +0x00012e95, +0x00012e94, +0x00012e93, +0x00012e92, +0x00012e91, +0x00012e90, +0x00012e8d, +0x00012e8c, +0x00012e8b, +0x00012e8a, +0x00012e88, +0x00012e86, +0x00012e85, +0x00012e84, +0x00012e83, +0x00012e81, +0x00012e80, +0x00012e7e, +0x00012e7d, +0x00012e7b, +0x00012e7a, +0x00012e79, +0x00012e77, +0x00012e76, +0x00012e74, +0x00012e73, +0x00012e72, +0x00012e71, +0x00012e6e, +0x00012e6d, +0x00012e6c, +0x00012e6b, +0x00012e6a, +0x00012e67, +0x00012e66, +0x00012e65, +0x00012e64, +0x00012e63, +0x00012e60, +0x00012e5f, +0x00012e5e, +0x00012e5d, +0x00012e5c, +0x00012e5a, +0x00012e58, +0x00012e57, +0x00012e56, +0x00012e55, +0x00012e53, +0x00012e51, +0x00012e50, +0x00012e4f, +0x00012e4e, +0x00012e4d, +0x00012e4a, +0x00012e49, +0x00012e48, +0x00012e47, +0x00012e46, +0x00012e43, +0x00012e42, +0x00012e41, +0x00012e40, +0x00012e3f, +0x00012e3d, +0x00012e3b, +0x00012e3a, +0x00012e39, +0x00012e37, +0x00012e36, +0x00012e34, +0x00012e33, +0x00012e32, +0x00012e30, +0x00012e2f, +0x00012e2e, +0x00012e2c, +0x00012e2a, +0x00012e29, +0x00012e28, +0x00012e27, +0x00012e25, +0x00012e23, +0x00012e22, +0x00012e21, +0x00012e20, +0x00012e1f, +0x00012e1c, +0x00012e1b, +0x00012e1a, +0x00012e19, +0x00012e18, +0x00012e16, +0x00012e14, +0x00012e13, +0x00012e12, +0x00012e11, +0x00012e0f, +0x00012e0d, +0x00012e0c, +0x00012e0b, +0x00012e09, +0x00012e08, +0x00012e07, +0x00012e05, +0x00012e04, +0x00012e02, +0x00012e01, +0x00012e00, +0x00012dfe, +0x00012dfc, +0x00012dfb, +0x00012dfa, +0x00012df9, +0x00012df8, +0x00012df5, +0x00012df4, +0x00012df3, +0x00012df2, +0x00012df1, +0x00012dee, +0x00012ded, +0x00012dec, +0x00012deb, +0x00012dea, +0x00012de8, +0x00012de6, +0x00012de5, +0x00012de4, +0x00012de3, +0x00012de1, +0x00012de0, +0x00012dde, +0x00012ddd, +0x00012ddb, +0x00012dda, +0x00012dd9, +0x00012dd7, +0x00012dd6, +0x00012dd4, +0x00012dd3, +0x00012dd2, +0x00012dd1, +0x00012dce, +0x00012dcd, +0x00012dcc, +0x00012dcb, +0x00012dca, +0x00012dc7, +0x00012dc6, +0x00012dc5, +0x00012dc4, +0x00012dc3, +0x00012dc1, +0x00012dbf, +0x00012dbe, +0x00012dbd, +0x00012dbc, +0x00012dba, +0x00012db8, +0x00012db7, +0x00012db6, +0x00012db5, +0x00012db3, +0x00012db2, +0x00012db0, +0x00012daf, +0x00012dad, +0x00012dac, +0x00012dab, +0x00012da9, +0x00012da8, +0x00012da6, +0x00012da5, +0x00012da3, +0x00012da2, +0x00012da1, +0x00012da0, +0x00012d9e, +0x00012d9c, +0x00012d9b, +0x00012d9a, +0x00012d99, +0x00012d97, +0x00012d95, +0x00012d94, +0x00012d93, +0x00012d92, +0x00012d91, +0x00012d8e, +0x00012d8d, +0x00012d8c, +0x00012d8b, +0x00012d8a, +0x00012d88, +0x00012d86, +0x00012d85, +0x00012d84, +0x00012d83, +0x00012d81, +0x00012d7f, +0x00012d7e, +0x00012d7d, +0x00012d7b, +0x00012d7a, +0x00012d79, +0x00012d77, +0x00012d76, +0x00012d74, +0x00012d73, +0x00012d72, +0x00012d71, +0x00012d6f, +0x00012d6d, +0x00012d6c, +0x00012d6b, +0x00012d6a, +0x00012d67, +0x00012d66, +0x00012d65, +0x00012d64, +0x00012d63, +0x00012d62, +0x00012d5f, +0x00012d5e, +0x00012d5d, +0x00012d5c, +0x00012d5b, +0x00012d59, +0x00012d57, +0x00012d56, +0x00012d55, +0x00012d53, +0x00012d52, +0x00012d51, +0x00012d4f, +0x00012d4e, +0x00012d4c, +0x00012d4b, +0x00012d4a, +0x00012d48, +0x00012d47, +0x00012d45, +0x00012d44, +0x00012d43, +0x00012d42, +0x00012d3f, +0x00012d3e, +0x00012d3d, +0x00012d3c, +0x00012d3b, +0x00012d3a, +0x00012d37, +0x00012d36, +0x00012d35, +0x00012d34, +0x00012d33, +0x00012d30, +0x00012d2f, +0x00012d2e, +0x00012d2d, +0x00012d2c, +0x00012d2a, +0x00012d28, +0x00012d27, +0x00012d26, +0x00012d24, +0x00012d23, +0x00012d22, +0x00012d20, +0x00012d1f, +0x00012d1d, +0x00012d1c, +0x00012d1b, +0x00012d19, +0x00012d18, +0x00012d16, +0x00012d15, +0x00012d14, +0x00012d13, +0x00012d10, +0x00012d0f, +0x00012d0e, +0x00012d0d, +0x00012d0c, +0x00012d0b, +0x00012d08, +0x00012d07, +0x00012d06, +0x00012d05, +0x00012d04, +0x00012d01, +0x00012d00, +0x00012cff, +0x00012cfe, +0x00012cfc, +0x00012cfb, +0x00012cf9, +0x00012cf8, +0x00012cf7, +0x00012cf5, +0x00012cf4, +0x00012cf3, +0x00012cf1, +0x00012cf0, +0x00012cee, +0x00012ced, +0x00012cec, +0x00012cea, +0x00012ce8, +0x00012ce7, +0x00012ce6, +0x00012ce5, +0x00012ce4, +0x00012ce1, +0x00012ce0, +0x00012cdf, +0x00012cde, +0x00012cdd, +0x00012cdc, +0x00012cd9, +0x00012cd8, +0x00012cd7, +0x00012cd6, +0x00012cd4, +0x00012cd3, +0x00012cd1, +0x00012cd0, +0x00012ccf, +0x00012ccd, +0x00012ccc, +0x00012cca, +0x00012cc9, +0x00012cc8, +0x00012cc6, +0x00012cc5, +0x00012cc4, +0x00012cc2, +0x00012cc1, +0x00012cbf, +0x00012cbe, +0x00012cbd, +0x00012cbc, +0x00012cb9, +0x00012cb8, +0x00012cb7, +0x00012cb6, +0x00012cb5, +0x00012cb2, +0x00012cb1, +0x00012cb0, +0x00012caf, +0x00012cae, +0x00012cad, +0x00012caa, +0x00012ca9, +0x00012ca8, +0x00012ca7, +0x00012ca5, +0x00012ca4, +0x00012ca2, +0x00012ca1, +0x00012ca0, +0x00012c9e, +0x00012c9d, +0x00012c9b, +0x00012c9a, +0x00012c99, +0x00012c97, +0x00012c96, +0x00012c95, +0x00012c93, +0x00012c91, +0x00012c90, +0x00012c8f, +0x00012c8e, +0x00012c8d, +0x00012c8a, +0x00012c89, +0x00012c88, +0x00012c87, +0x00012c86, +0x00012c83, +0x00012c82, +0x00012c81, +0x00012c80, +0x00012c7f, +0x00012c7d, +0x00012c7b, +0x00012c7a, +0x00012c79, +0x00012c78, +0x00012c76, +0x00012c75, +0x00012c73, +0x00012c72, +0x00012c71, +0x00012c6f, +0x00012c6e, +0x00012c6c, +0x00012c6b, +0x00012c6a, +0x00012c68, +0x00012c67, +0x00012c66, +0x00012c64, +0x00012c62, +0x00012c61, +0x00012c60, +0x00012c5f, +0x00012c5e, +0x00012c5b, +0x00012c5a, +0x00012c59, +0x00012c58, +0x00012c57, +0x00012c56, +0x00012c53, +0x00012c52, +0x00012c51, +0x00012c50, +0x00012c4e, +0x00012c4c, +0x00012c4b, +0x00012c4a, +0x00012c49, +0x00012c47, +0x00012c46, +0x00012c45, +0x00012c43, +0x00012c42, +0x00012c40, +0x00012c3f, +0x00012c3e, +0x00012c3d, +0x00012c3b, +0x00012c39, +0x00012c38, +0x00012c37, +0x00012c36, +0x00012c35, +0x00012c32, +0x00012c31, +0x00012c30, +0x00012c2f, +0x00012c2e, +0x00012c2d, +0x00012c2a, +0x00012c29, +0x00012c28, +0x00012c27, +0x00012c26, +0x00012c24, +0x00012c22, +0x00012c21, +0x00012c20, +0x00012c1e, +0x00012c1d, +0x00012c1c, +0x00012c1a, +0x00012c19, +0x00012c17, +0x00012c16, +0x00012c15, +0x00012c13, +0x00012c12, +0x00012c10, +0x00012c0f, +0x00012c0e, +0x00012c0d, +0x00012c0b, +0x00012c09, +0x00012c08, +0x00012c07, +0x00012c06, +0x00012c05, +0x00012c02, +0x00012c01, +0x00012c00, +0x00012bff, +0x00012bfe, +0x00012bfc, +0x00012bfa, +0x00012bf9, +0x00012bf8, +0x00012bf7, +0x00012bf5, +0x00012bf4, +0x00012bf2, +0x00012bf1, +0x00012bf0, +0x00012bee, +0x00012bed, +0x00012beb, +0x00012bea, +0x00012be9, +0x00012be7, +0x00012be6, +0x00012be5, +0x00012be3, +0x00012be2, +0x00012be0, +0x00012bdf, +0x00012bde, +0x00012bdd, +0x00012bdb, +0x00012bd9, +0x00012bd8, +0x00012bd7, +0x00012bd6, +0x00012bd5, +0x00012bd2, +0x00012bd1, +0x00012bd0, +0x00012bcf, +0x00012bce, +0x00012bcc, +0x00012bca, +0x00012bc9, +0x00012bc8, +0x00012bc7, +0x00012bc5, +0x00012bc4, +0x00012bc2, +0x00012bc1, +0x00012bc0, +0x00012bbe, +0x00012bbd, +0x00012bbb, +0x00012bba, +0x00012bb9, +0x00012bb7, +0x00012bb6, +0x00012bb5, +0x00012bb3, +0x00012bb1, +0x00012bb0, +0x00012baf, +0x00012bae, +0x00012bad, +0x00012baa, +0x00012ba9, +0x00012ba8, +0x00012ba7, +0x00012ba6, +0x00012ba5, +0x00012ba2, +0x00012ba1, +0x00012ba0, +0x00012b9f, +0x00012b9e, +0x00012b9c, +0x00012b9a, +0x00012b99, +0x00012b98, +0x00012b97, +0x00012b94, +0x00012b93, +0x00012b92, +0x00012b91, +0x00012b90, +0x00012b8e, +0x00012b8c, +0x00012b8b, +0x00012b8a, +0x00012b89, +0x00012b87, +0x00012b86, +0x00012b84, +0x00012b83, +0x00012b82, +0x00012b80, +0x00012b7f, +0x00012b7e, +0x00012b7c, +0x00012b7b, +0x00012b79, +0x00012b78, +0x00012b77, +0x00012b76, +0x00012b74, +0x00012b72, +0x00012b71, +0x00012b70, +0x00012b6f, +0x00012b6e, +0x00012b6b, +0x00012b6a, +0x00012b69, +0x00012b68, +0x00012b67, +0x00012b66, +0x00012b63, +0x00012b62, +0x00012b61, +0x00012b60, +0x00012b5f, +0x00012b5d, +0x00012b5b, +0x00012b5a, +0x00012b59, +0x00012b58, +0x00012b56, +0x00012b55, +0x00012b53, +0x00012b52, +0x00012b51, +0x00012b4f, +0x00012b4e, +0x00012b4d, +0x00012b4b, +0x00012b4a, +0x00012b48, +0x00012b47, +0x00012b46, +0x00012b45, +0x00012b43, +0x00012b41, +0x00012b40, +0x00012b3f, +0x00012b3e, +0x00012b3c, +0x00012b3a, +0x00012b39, +0x00012b38, +0x00012b37, +0x00012b36, +0x00012b33, +0x00012b32, +0x00012b31, +0x00012b30, +0x00012b2f, +0x00012b2e, +0x00012b2b, +0x00012b2a, +0x00012b29, +0x00012b28, +0x00012b27, +0x00012b25, +0x00012b23, +0x00012b22, +0x00012b21, +0x00012b20, +0x00012b1e, +0x00012b1d, +0x00012b1b, +0x00012b1a, +0x00012b19, +0x00012b17, +0x00012b16, +0x00012b15, +0x00012b13, +0x00012b12, +0x00012b10, +0x00012b0f, +0x00012b0e, +0x00012b0d, +0x00012b0b, +0x00012b09, +0x00012b08, +0x00012b07, +0x00012b06, +0x00012b05, +0x00012b02, +0x00012b01, +0x00012b00, +0x00012aff, +0x00012afe, +0x00012afc, +0x00012afa, +0x00012af9, +0x00012af8, +0x00012af7, +0x00012af5, +0x00012af4, +0x00012af2, +0x00012af1, +0x00012af0, +0x00012aee, +0x00012aed, +0x00012aec, +0x00012aea, +0x00012ae9, +0x00012ae7, +0x00012ae6, +0x00012ae5, +0x00012ae4, +0x00012ae2, +0x00012ae0, +0x00012adf, +0x00012ade, +0x00012add, +0x00012adc, +0x00012ad9, +0x00012ad8, +0x00012ad7, +0x00012ad6, +0x00012ad5, +0x00012ad4, +0x00012ad1, +0x00012ad0, +0x00012acf, +0x00012ace, +0x00012acd, +0x00012acb, +0x00012ac9, +0x00012ac8, +0x00012ac7, +0x00012ac6, +0x00012ac4, +0x00012ac3, +0x00012ac1, +0x00012ac0, +0x00012abf, +0x00012abd, +0x00012abc, +0x00012abb, +0x00012ab9, +0x00012ab8, +0x00012ab6, +0x00012ab5, +0x00012ab4, +0x00012ab3, +0x00012ab1, +0x00012aaf, +0x00012aae, +0x00012aad, +0x00012aac, +0x00012aab, +0x00012aa8, +0x00012aa7, +0x00012aa6, +0x00012aa5, +0x00012aa4, +0x00012aa3, +0x00012aa0, +0x00012a9f, +0x00012a9e, +0x00012a9d, +0x00012a9c, +0x00012a9a, +0x00012a98, +0x00012a97, +0x00012a96, +0x00012a95, +0x00012a93, +0x00012a92, +0x00012a90, +0x00012a8f, +0x00012a8e, +0x00012a8c, +0x00012a8b, +0x00012a89, +0x00012a88, +0x00012a87, +0x00012a85, +0x00012a84, +0x00012a83, +0x00012a81, +0x00012a80, +0x00012a7e, +0x00012a7d, +0x00012a7c, +0x00012a7b, +0x00012a79, +0x00012a77, +0x00012a76, +0x00012a75, +0x00012a74, +0x00012a73, +0x00012a70, +0x00012a6f, +0x00012a6e, +0x00012a6d, +0x00012a6c, +0x00012a6b, +0x00012a68, +0x00012a67, +0x00012a66, +0x00012a65, +0x00012a63, +0x00012a62, +0x00012a60, +0x00012a5f, +0x00012a5e, +0x00012a5c, +0x00012a5b, +0x00012a5a, +0x00012a58, +0x00012a57, +0x00012a55, +0x00012a54, +0x00012a53, +0x00012a52, +0x00012a50, +0x00012a4e, +0x00012a4d, +0x00012a4c, +0x00012a4b, +0x00012a4a, +0x00012a47, +0x00012a46, +0x00012a45, +0x00012a44, +0x00012a43, +0x00012a42, +0x00012a3f, +0x00012a3e, +0x00012a3d, +0x00012a3c, +0x00012a3b, +0x00012a39, +0x00012a38, +0x00012a37, +0x00012a36, +0x00012a34, +0x00012a33, +0x00012a31, +0x00012a30, +0x00012a2f, +0x00012a2d, +0x00012a2c, +0x00012a2b, +0x00012a29, +0x00012a28, +0x00012a26, +0x00012a25, +0x00012a24, +0x00012a23, +0x00012a21, +0x00012a1f, +0x00012a1e, +0x00012a1d, +0x00012a1c, +0x00012a1b, +0x00012a18, +0x00012a17, +0x00012a16, +0x00012a15, +0x00012a14, +0x00012a13, +0x00012a10, +0x00012a0f, +0x00012a0e, +0x00012a0d, +0x00012a0c, +0x00012a0a, +0x00012a08, +0x00012a07, +0x00012a06, +0x00012a05, +0x00012a03, +0x00012a02, +0x00012a00, +0x000129ff, +0x000129fe, +0x000129fd, +0x000129fb, +0x000129fa, +0x000129f8, +0x000129f7, +0x000129f6, +0x000129f4, +0x000129f3, +0x000129f2, +0x000129f0, +0x000129ef, +0x000129ed, +0x000129ec, +0x000129eb, +0x000129ea, +0x000129e8, +0x000129e6, +0x000129e5, +0x000129e4, +0x000129e3, +0x000129e2, +0x000129e1, +0x000129de, +0x000129dd, +0x000129dc, +0x000129db, +0x000129da, +0x000129d8, +0x000129d6, +0x000129d5, +0x000129d4, +0x000129d3, +0x000129d1, +0x000129d0, +0x000129ce, +0x000129cd, +0x000129cc, +0x000129ca, +0x000129c9, +0x000129c8, +0x000129c6, +0x000129c5, +0x000129c3, +0x000129c2, +0x000129c1, +0x000129c0, +0x000129be, +0x000129bc, +0x000129bb, +0x000129ba, +0x000129b9, +0x000129b8, +0x000129b6, +0x000129b4, +0x000129b3, +0x000129b2, +0x000129b1, +0x000129b0, +0x000129ad, +0x000129ac, +0x000129ab, +0x000129aa, +0x000129a9, +0x000129a8, +0x000129a5, +0x000129a4, +0x000129a3, +0x000129a2, +0x000129a1, +0x0001299f, +0x0001299d, +0x0001299c, +0x0001299b, +0x0001299a, +0x00012998, +0x00012997, +0x00012995, +0x00012994, +0x00012993, +0x00012991, +0x00012990, +0x0001298f, +0x0001298e, +0x0001298c, +0x0001298a, +0x00012989, +0x00012988, +0x00012987, +0x00012985, +0x00012984, +0x00012982, +0x00012981, +0x00012980, +0x0001297e, +0x0001297d, +0x0001297c, +0x0001297b, +0x00012979, +0x00012977, +0x00012976, +0x00012975, +0x00012974, +0x00012973, +0x00012971, +0x0001296f, +0x0001296e, +0x0001296d, +0x0001296c, +0x0001296b, +0x00012968, +0x00012967, +0x00012966, +0x00012965, +0x00012964, +0x00012963, +0x00012960, +0x0001295f, +0x0001295e, +0x0001295d, +0x0001295c, +0x0001295a, +0x00012959, +0x00012957, +0x00012956, +0x00012955, +0x00012954, +0x00012952, +0x00012951, +0x0001294f, +0x0001294e, +0x0001294d, +0x0001294b, +0x0001294a, +0x00012949, +0x00012947, +0x00012946, +0x00012944, +0x00012943, +0x00012942, +0x00012941, +0x0001293f, +0x0001293d, +0x0001293c, +0x0001293b, +0x0001293a, +0x00012939, +0x00012938, +0x00012935, +0x00012934, +0x00012933, +0x00012932, +0x00012931, +0x00012930, +0x0001292d, +0x0001292c, +0x0001292b, +0x0001292a, +0x00012929, +0x00012927, +0x00012925, +0x00012924, +0x00012923, +0x00012922, +0x00012920, +0x0001291f, +0x0001291d, +0x0001291c, +0x0001291b, +0x0001291a, +0x00012918, +0x00012917, +0x00012915, +0x00012914, +0x00012913, +0x00012911, +0x00012910, +0x0001290f, +0x0001290e, +0x0001290c, +0x0001290a, +0x00012909, +0x00012908, +0x00012907, +0x00012906, +0x00012903, +0x00012902, +0x00012901, +0x00012900, +0x000128ff, +0x000128fe, +0x000128fb, +0x000128fa, +0x000128f9, +0x000128f8, +0x000128f7, +0x000128f6, +0x000128f3, +0x000128f2, +0x000128f1, +0x000128f0, +0x000128ef, +0x000128ed, +0x000128ec, +0x000128ea, +0x000128e9, +0x000128e8, +0x000128e6, +0x000128e5, +0x000128e4, +0x000128e2, +0x000128e1, +0x000128e0, +0x000128de, +0x000128dd, +0x000128dc, +0x000128da, +0x000128d9, +0x000128d7, +0x000128d6, +0x000128d5, +0x000128d4, +0x000128d2, +0x000128d0, +0x000128cf, +0x000128ce, +0x000128cd, +0x000128cc, +0x000128cb, +0x000128c8, +0x000128c7, +0x000128c6, +0x000128c5, +0x000128c4, +0x000128c3, +0x000128c0, +0x000128bf, +0x000128be, +0x000128bd, +0x000128bc, +0x000128ba, +0x000128b8, +0x000128b7, +0x000128b6, +0x000128b5, +0x000128b3, +0x000128b2, +0x000128b0, +0x000128af, +0x000128ae, +0x000128ac, +0x000128ab, +0x000128aa, +0x000128a9, +0x000128a7, +0x000128a6, +0x000128a4, +0x000128a3, +0x000128a2, +0x000128a1, +0x0001289f, +0x0001289d, +0x0001289c, +0x0001289b, +0x0001289a, +0x00012899, +0x00012896, +0x00012895, +0x00012894, +0x00012893, +0x00012892, +0x00012891, +0x0001288e, +0x0001288d, +0x0001288c, +0x0001288b, +0x0001288a, +0x00012889, +0x00012887, +0x00012885, +0x00012884, +0x00012883, +0x00012882, +0x00012880, +0x0001287f, +0x0001287d, +0x0001287c, +0x0001287b, +0x00012879, +0x00012878, +0x00012877, +0x00012875, +0x00012874, +0x00012872, +0x00012871, +0x00012870, +0x0001286f, +0x0001286d, +0x0001286c, +0x0001286a, +0x00012869, +0x00012868, +0x00012867, +0x00012866, +0x00012863, +0x00012862, +0x00012861, +0x00012860, +0x0001285f, +0x0001285e, +0x0001285b, +0x0001285a, +0x00012859, +0x00012858, +0x00012857, +0x00012855, +0x00012853, +0x00012852, +0x00012851, +0x00012850, +0x0001284e, +0x0001284d, +0x0001284b, +0x0001284a, +0x00012849, +0x00012848, +0x00012846, +0x00012845, +0x00012844, +0x00012842, +0x00012841, +0x0001283f, +0x0001283e, +0x0001283d, +0x0001283c, +0x0001283a, +0x00012838, +0x00012837, +0x00012836, +0x00012835, +0x00012834, +0x00012833, +0x00012832, +0x0001282f, +0x0001282e, +0x0001282d, +0x0001282c, +0x0001282b, +0x0001282a, +0x00012827, +0x00012826, +0x00012825, +0x00012824, +0x00012823, +0x00012822, +0x00012820, +0x0001281e, +0x0001281d, +0x0001281c, +0x0001281b, +0x00012819, +0x00012818, +0x00012816, +0x00012815, +0x00012814, +0x00012813, +0x00012811, +0x00012810, +0x0001280e, +0x0001280d, +0x0001280c, +0x0001280a, +0x00012809, +0x00012808, +0x00012807, +0x00012805, +0x00012803, +0x00012802, +0x00012801, +0x00012800, +0x000127ff, +0x000127fd, +0x000127fb, +0x000127fa, +0x000127f9, +0x000127f8, +0x000127f7, +0x000127f6, +0x000127f3, +0x000127f2, +0x000127f1, +0x000127f0, +0x000127ef, +0x000127ee, +0x000127eb, +0x000127ea, +0x000127e9, +0x000127e8, +0x000127e7, +0x000127e5, +0x000127e3, +0x000127e2, +0x000127e1, +0x000127e0, +0x000127de, +0x000127dd, +0x000127dc, +0x000127da, +0x000127d9, +0x000127d8, +0x000127d6, +0x000127d5, +0x000127d4, +0x000127d2, +0x000127d1, +0x000127cf, +0x000127ce, +0x000127cd, +0x000127cc, +0x000127cb, +0x000127c9, +0x000127c7, +0x000127c6, +0x000127c5, +0x000127c4, +0x000127c3, +0x000127c0, +0x000127bf, +0x000127be, +0x000127bd, +0x000127bc, +0x000127bb, +0x000127b8, +0x000127b7, +0x000127b6, +0x000127b5, +0x000127b4, +0x000127b3, +0x000127b1, +0x000127af, +0x000127ae, +0x000127ad, +0x000127ac, +0x000127aa, +0x000127a9, +0x000127a7, +0x000127a6, +0x000127a5, +0x000127a4, +0x000127a2, +0x000127a1, +0x000127a0, +0x0001279e, +0x0001279d, +0x0001279b, +0x0001279a, +0x00012799, +0x00012798, +0x00012796, +0x00012794, +0x00012793, +0x00012792, +0x00012791, +0x00012790, +0x0001278e, +0x0001278c, +0x0001278b, +0x0001278a, +0x00012789, +0x00012787, +0x00012786, +0x00012785, +0x00012783, +0x00012782, +0x00012781, +0x00012780, +0x0001277e, +0x0001277c, +0x0001277b, +0x0001277a, +0x00012779, +0x00012778, +0x00012776, +0x00012774, +0x00012773, +0x00012772, +0x00012771, +0x00012770, +0x0001276f, +0x0001276c, +0x0001276b, +0x0001276a, +0x00012769, +0x00012768, +0x00012767, +0x00012764, +0x00012763, +0x00012762, +0x00012761, +0x00012760, +0x0001275e, +0x0001275d, +0x0001275b, +0x0001275a, +0x00012759, +0x00012758, +0x00012756, +0x00012755, +0x00012754, +0x00012752, +0x00012751, +0x00012750, +0x0001274e, +0x0001274d, +0x0001274c, +0x0001274a, +0x00012749, +0x00012747, +0x00012746, +0x00012745, +0x00012744, +0x00012743, +0x00012741, +0x0001273f, +0x0001273e, +0x0001273d, +0x0001273c, +0x0001273b, +0x00012738, +0x00012737, +0x00012736, +0x00012735, +0x00012734, +0x00012733, +0x00012732, +0x0001272f, +0x0001272e, +0x0001272d, +0x0001272c, +0x0001272b, +0x00012729, +0x00012727, +0x00012726, +0x00012725, +0x00012724, +0x00012723, +0x00012721, +0x00012720, +0x0001271e, +0x0001271d, +0x0001271c, +0x0001271b, +0x00012719, +0x00012718, +0x00012716, +0x00012715, +0x00012714, +0x00012712, +0x00012711, +0x00012710, +0x0001270f, +0x0001270d, +0x0001270c, +0x0001270a, +0x00012709, +0x00012708, +0x00012707, +0x00012706, +0x00012703, +0x00012702, +0x00012701, +0x00012700, +0x000126ff, +0x000126fe, +0x000126fb, +0x000126fa, +0x000126f9, +0x000126f8, +0x000126f7, +0x000126f6, +0x000126f4, +0x000126f2, +0x000126f1, +0x000126f0, +0x000126ef, +0x000126ee, +0x000126ec, +0x000126ea, +0x000126e9, +0x000126e8, +0x000126e7, +0x000126e5, +0x000126e4, +0x000126e3, +0x000126e1, +0x000126e0, +0x000126df, +0x000126dd, +0x000126dc, +0x000126db, +0x000126d9, +0x000126d8, +0x000126d7, +0x000126d5, +0x000126d4, +0x000126d3, +0x000126d2, +0x000126d0, +0x000126ce, +0x000126cd, +0x000126cc, +0x000126cb, +0x000126ca, +0x000126c9, +0x000126c6, +0x000126c5, +0x000126c4, +0x000126c3, +0x000126c2, +0x000126c1, +0x000126be, +0x000126bd, +0x000126bc, +0x000126bb, +0x000126ba, +0x000126b9, +0x000126b7, +0x000126b5, +0x000126b4, +0x000126b3, +0x000126b2, +0x000126b0, +0x000126af, +0x000126ad, +0x000126ac, +0x000126ab, +0x000126aa, +0x000126a8, +0x000126a7, +0x000126a6, +0x000126a4, +0x000126a3, +0x000126a2, +0x000126a0, +0x0001269f, +0x0001269e, +0x0001269c, +0x0001269b, +0x00012699, +0x00012698, +0x00012697, +0x00012696, +0x00012695, +0x00012693, +0x00012691, +0x00012690, +0x0001268f, +0x0001268e, +0x0001268d, +0x0001268c, +0x00012689, +0x00012688, +0x00012687, +0x00012686, +0x00012685, +0x00012684, +0x00012681, +0x00012680, +0x0001267f, +0x0001267e, +0x0001267d, +0x0001267b, +0x0001267a, +0x00012678, +0x00012677, +0x00012676, +0x00012675, +0x00012673, +0x00012672, +0x00012670, +0x0001266f, +0x0001266e, +0x0001266d, +0x0001266b, +0x0001266a, +0x00012669, +0x00012667, +0x00012666, +0x00012664, +0x00012663, +0x00012662, +0x00012661, +0x0001265f, +0x0001265e, +0x0001265c, +0x0001265b, +0x0001265a, +0x00012659, +0x00012658, +0x00012655, +0x00012654, +0x00012653, +0x00012652, +0x00012651, +0x00012650, +0x0001264d, +0x0001264c, +0x0001264b, +0x0001264a, +0x00012649, +0x00012648, +0x00012646, +0x00012644, +0x00012643, +0x00012642, +0x00012641, +0x00012640, +0x0001263e, +0x0001263d, +0x0001263b, +0x0001263a, +0x00012639, +0x00012637, +0x00012637, +0x00012635, +0x00012634, +0x00012633, +0x00012631, +0x00012630, +0x0001262f, +0x0001262d, +0x0001262c, +0x0001262a, +0x00012629, +0x00012628, +0x00012627, +0x00012626, +0x00012624, +0x00012622, +0x00012621, +0x00012620, +0x0001261f, +0x0001261e, +0x0001261d, +0x0001261a, +0x00012619, +0x00012618, +0x00012617, +0x00012616, +0x00012615, +0x00012612, +0x00012611, +0x00012610, +0x0001260f, +0x0001260e, +0x0001260d, +0x0001260b, +0x00012609, +0x00012608, +0x00012607, +0x00012606, +0x00012605, +0x00012603, +0x00012602, +0x00012600, +0x000125ff, +0x000125fe, +0x000125fd, +0x000125fb, +0x000125fa, +0x000125f9, +0x000125f7, +0x000125f6, +0x000125f5, +0x000125f3, +0x000125f2, +0x000125f1, +0x000125ef, +0x000125ee, +0x000125ec, +0x000125eb, +0x000125ea, +0x000125e9, +0x000125e8, +0x000125e6, +0x000125e4, +0x000125e3, +0x000125e2, +0x000125e1, +0x000125e0, +0x000125df, +0x000125dc, +0x000125db, +0x000125da, +0x000125d9, +0x000125d8, +0x000125d7, +0x000125d6, +0x000125d3, +0x000125d2, +0x000125d1, +0x000125d0, +0x000125cf, +0x000125cd, +0x000125cb, +0x000125ca, +0x000125c9, +0x000125c8, +0x000125c7, +0x000125c5, +0x000125c4, +0x000125c2, +0x000125c1, +0x000125c0, +0x000125bf, +0x000125bd, +0x000125bc, +0x000125bb, +0x000125b9, +0x000125b8, +0x000125b7, +0x000125b5, +0x000125b4, +0x000125b3, +0x000125b2, +0x000125b0, +0x000125ae, +0x000125ad, +0x000125ac, +0x000125ab, +0x000125aa, +0x000125a8, +0x000125a6, +0x000125a5, +0x000125a4, +0x000125a3, +0x000125a2, +0x000125a1, +0x0001259e, +0x0001259d, +0x0001259c, +0x0001259b, +0x0001259a, +0x00012599, +0x00012597, +0x00012595, +0x00012594, +0x00012593, +0x00012592, +0x00012591, +0x0001258f, +0x0001258e, +0x0001258d, +0x0001258a, +0x00012589, +0x00012588, +0x00012587, +0x00012586, +0x00012585, +0x00012584, +0x00012581, +0x00012580, +0x0001257f, +0x0001257e, +0x0001257d, +0x0001257c, +0x0001257a, +0x00012578, +0x00012577, +0x00012576, +0x00012575, +0x00012574, +0x00012572, +0x00012571, +0x0001256f, +0x0001256e, +0x0001256d, +0x0001256c, +0x0001256a, +0x00012569, +0x00012568, +0x00012566, +0x00012565, +0x00012564, +0x00012562, +0x00012561, +0x00012560, +0x0001255f, +0x0001255d, +0x0001255c, +0x0001255a, +0x00012559, +0x00012558, +0x00012557, +0x00012556, +0x00012554, +0x00012552, +0x00012551, +0x00012550, +0x0001254f, +0x0001254e, +0x0001254d, +0x0001254a, +0x00012549, +0x00012548, +0x00012547, +0x00012546, +0x00012545, +0x00012544, +0x00012541, +0x00012540, +0x0001253f, +0x0001253e, +0x0001253d, +0x0001253c, +0x0001253a, +0x00012538, +0x00012537, +0x00012536, +0x00012535, +0x00012534, +0x00012532, +0x00012530, +0x0001252f, +0x0001252e, +0x0001252d, +0x0001252b, +0x0001252a, +0x00012529, +0x00012527, +0x00012526, +0x00012525, +0x00012523, +0x00012522, +0x00012521, +0x00012520, +0x0001251e, +0x0001251d, +0x0001251b, +0x0001251a, +0x00012519, +0x00012518, +0x00012517, +0x00012515, +0x00012513, +0x00012512, +0x00012511, +0x00012510, +0x0001250f, +0x0001250e, +0x0001250b, +0x0001250a, +0x00012509, +0x00012508, +0x00012507, +0x00012506, +0x00012505, +0x00012502, +0x00012501, +0x00012500, +0x000124ff, +0x000124fe, +0x000124fd, +0x000124fb, +0x000124f9, +0x000124f8, +0x000124f7, +0x000124f6, +0x000124f5, +0x000124f3, +0x000124f2, +0x000124f0, +0x000124ef, +0x000124ee, +0x000124ed, +0x000124eb, +0x000124ea, +0x000124e9, +0x000124e7, +0x000124e6, +0x000124e5, +0x000124e3, +0x000124e2, +0x000124e1, +0x000124e0, +0x000124de, +0x000124dd, +0x000124db, +0x000124da, +0x000124d9, +0x000124d8, +0x000124d7, +0x000124d5, +0x000124d3, +0x000124d2, +0x000124d1, +0x000124d0, +0x000124cf, +0x000124ce, +0x000124cb, +0x000124ca, +0x000124c9, +0x000124c8, +0x000124c7, +0x000124c6, +0x000124c3, +0x000124c2, +0x000124c1, +0x000124c0, +0x000124bf, +0x000124be, +0x000124bc, +0x000124ba, +0x000124b9, +0x000124b8, +0x000124b7, +0x000124b6, +0x000124b4, +0x000124b3, +0x000124b1, +0x000124b0, +0x000124af, +0x000124ae, +0x000124ac, +0x000124ab, +0x000124aa, +0x000124a8, +0x000124a7, +0x000124a6, +0x000124a4, +0x000124a3, +0x000124a2, +0x000124a1, +0x0001249f, +0x0001249e, +0x0001249c, +0x0001249b, +0x0001249a, +0x00012499, +0x00012498, +0x00012496, +0x00012494, +0x00012493, +0x00012492, +0x00012491, +0x00012490, +0x0001248f, +0x0001248c, +0x0001248b, +0x0001248a, +0x00012489, +0x00012488, +0x00012487, +0x00012486, +0x00012483, +0x00012482, +0x00012481, +0x00012480, +0x0001247f, +0x0001247e, +0x0001247c, +0x0001247a, +0x00012479, +0x00012478, +0x00012477, +0x00012476, +0x00012474, +0x00012473, +0x00012471, +0x00012470, +0x0001246f, +0x0001246e, +0x0001246c, +0x0001246b, +0x0001246a, +0x00012468, +0x00012467, +0x00012465, +0x00012464, +0x00012463, +0x00012462, +0x00012461, +0x0001245f, +0x0001245d, +0x0001245c, +0x0001245b, +0x0001245a, +0x00012459, +0x00012457, +0x00012455, +0x00012454, +0x00012453, +0x00012452, +0x00012451, +0x00012450, +0x0001244d, +0x0001244c, +0x0001244b, +0x0001244a, +0x00012449, +0x00012448, +0x00012447, +0x00012444, +0x00012443, +0x00012442, +0x00012441, +0x00012440, +0x0001243f, +0x0001243e, +0x0001243c, +0x0001243b, +0x00012439, +0x00012438, +0x00012437, +0x00012436, +0x00012434, +0x00012433, +0x00012432, +0x00012430, +0x0001242f, +0x0001242e, +0x0001242c, +0x0001242b, +0x0001242a, +0x00012429, +0x00012427, +0x00012426, +0x00012425, +0x00012423, +0x00012422, +0x00012421, +0x00012420, +0x0001241e, +0x0001241d, +0x0001241b, +0x0001241a, +0x00012419, +0x00012418, +0x00012417, +0x00012416, +0x00012413, +0x00012412, +0x00012411, +0x00012410, +0x0001240f, +0x0001240e, +0x0001240d, +0x0001240a, +0x00012409, +0x00012408, +0x00012407, +0x00012406, +0x00012405, +0x00012403, +0x00012401, +0x00012400, +0x000123ff, +0x000123fe, +0x000123fd, +0x000123fb, +0x000123fa, +0x000123f8, +0x000123f7, +0x000123f6, +0x000123f5, +0x000123f3, +0x000123f2, +0x000123f1, +0x000123ef, +0x000123ee, +0x000123ed, +0x000123eb, +0x000123ea, +0x000123e9, +0x000123e8, +0x000123e6, +0x000123e5, +0x000123e3, +0x000123e2, +0x000123e1, +0x000123e0, +0x000123df, +0x000123dd, +0x000123dc, +0x000123da, +0x000123d9, +0x000123d8, +0x000123d7, +0x000123d6, +0x000123d4, +0x000123d2, +0x000123d1, +0x000123d0, +0x000123cf, +0x000123ce, +0x000123cd, +0x000123ca, +0x000123c9, +0x000123c8, +0x000123c7, +0x000123c6, +0x000123c5, +0x000123c4, +0x000123c2, +0x000123c0, +0x000123bf, +0x000123be, +0x000123bd, +0x000123bc, +0x000123ba, +0x000123b9, +0x000123b7, +0x000123b6, +0x000123b5, +0x000123b4, +0x000123b2, +0x000123b1, +0x000123b0, +0x000123ae, +0x000123ad, +0x000123ac, +0x000123aa, +0x000123a9, +0x000123a8, +0x000123a7, +0x000123a5, +0x000123a4, +0x000123a2, +0x000123a1, +0x000123a0, +0x0001239f, +0x0001239e, +0x0001239c, +0x0001239a, +0x00012399, +0x00012398, +0x00012397, +0x00012395, +0x00012394, +0x00012393, +0x00012392, +0x00012390, +0x0001238f, +0x0001238e, +0x0001238d, +0x0001238b, +0x0001238a, +0x00012388, +0x00012387, +0x00012386, +0x00012385, +0x00012384, +0x00012382, +0x00012380, +0x0001237f, +0x0001237e, +0x0001237d, +0x0001237c, +0x0001237b, +0x00012378, +0x00012377, +0x00012376, +0x00012375, +0x00012374, +0x00012373, +0x00012372, +0x00012371, +0x0001236e, +0x0001236d, +0x0001236c, +0x0001236b, +0x0001236a, +0x00012369, +0x00012367, +0x00012365, +0x00012364, +0x00012363, +0x00012362, +0x00012361, +0x0001235f, +0x0001235e, +0x0001235c, +0x0001235b, +0x0001235a, +0x00012359, +0x00012358, +0x00012356, +0x00012355, +0x00012354, +0x00012352, +0x00012351, +0x00012350, +0x0001234e, +0x0001234d, +0x0001234c, +0x0001234b, +0x00012349, +0x00012348, +0x00012346, +0x00012345, +0x00012344, +0x00012343, +0x00012342, +0x00012340, +0x0001233f, +0x0001233d, +0x0001233c, +0x0001233b, +0x0001233a, +0x00012339, +0x00012337, +0x00012335, +0x00012334, +0x00012333, +0x00012332, +0x00012331, +0x00012330, +0x0001232f, +0x0001232c, +0x0001232b, +0x0001232a, +0x00012329, +0x00012328, +0x00012327, +0x00012326, +0x00012323, +0x00012322, +0x00012321, +0x00012320, +0x0001231f, +0x0001231e, +0x0001231c, +0x0001231a, +0x00012319, +0x00012318, +0x00012317, +0x00012316, +0x00012314, +0x00012313, +0x00012312, +0x00012310, +0x0001230f, +0x0001230e, +0x0001230d, +0x0001230b, +0x0001230a, +0x00012309, +0x00012307, +0x00012306, +0x00012305, +0x00012303, +0x00012302, +0x00012301, +0x00012300, +0x000122fe, +0x000122fd, +0x000122fb, +0x000122fa, +0x000122f9, +0x000122f8, +0x000122f7, +0x000122f6, +0x000122f3, +0x000122f2, +0x000122f1, +0x000122f0, +0x000122ef, +0x000122ee, +0x000122ed, +0x000122ea, +0x000122e9, +0x000122e8, +0x000122e7, +0x000122e6, +0x000122e5, +0x000122e4, +0x000122e1, +0x000122e0, +0x000122df, +0x000122de, +0x000122dd, +0x000122dc, +0x000122da, +0x000122d9, +0x000122d7, +0x000122d6, +0x000122d5, +0x000122d4, +0x000122d3, +0x000122d1, +0x000122d0, +0x000122ce, +0x000122cd, +0x000122cc, +0x000122cb, +0x000122c9, +0x000122c8, +0x000122c7, +0x000122c5, +0x000122c4, +0x000122c3, +0x000122c1, +0x000122c0, +0x000122bf, +0x000122be, +0x000122bd, +0x000122bb, +0x000122ba, +0x000122b8, +0x000122b7, +0x000122b6, +0x000122b5, +0x000122b4, +0x000122b2, +0x000122b0, +0x000122af, +0x000122ae, +0x000122ad, +0x000122ac, +0x000122ab, +0x000122a8, +0x000122a7, +0x000122a6, +0x000122a5, +0x000122a4, +0x000122a3, +0x000122a2, +0x000122a1, +0x0001229e, +0x0001229d, +0x0001229c, +0x0001229b, +0x0001229a, +0x00012299, +0x00012297, +0x00012295, +0x00012294, +0x00012293, +0x00012292, +0x00012291, +0x0001228f, +0x0001228e, +0x0001228c, +0x0001228b, +0x0001228a, +0x00012289, +0x00012288, +0x00012286, +0x00012285, +0x00012283, +0x00012282, +0x00012281, +0x00012280, +0x0001227e, +0x0001227d, +0x0001227c, +0x0001227b, +0x00012279, +0x00012278, +0x00012276, +0x00012275, +0x00012274, +0x00012273, +0x00012272, +0x00012270, +0x0001226f, +0x0001226d, +0x0001226c, +0x0001226b, +0x0001226a, +0x00012269, +0x00012267, +0x00012265, +0x00012264, +0x00012263, +0x00012262, +0x00012261, +0x00012260, +0x0001225f, +0x0001225c, +0x0001225b, +0x0001225a, +0x00012259, +0x00012258, +0x00012257, +0x00012255, +0x00012253, +0x00012252, +0x00012251, +0x00012250, +0x0001224f, +0x0001224e, +0x0001224c, +0x0001224b, +0x0001224a, +0x00012249, +0x00012247, +0x00012246, +0x00012245, +0x00012243, +0x00012242, +0x00012241, +0x0001223f, +0x0001223e, +0x0001223d, +0x0001223c, +0x0001223b, +0x00012239, +0x00012238, +0x00012236, +0x00012235, +0x00012234, +0x00012233, +0x00012232, +0x00012230, +0x0001222e, +0x0001222d, +0x0001222c, +0x0001222b, +0x0001222a, +0x00012229, +0x00012228, +0x00012225, +0x00012224, +0x00012223, +0x00012222, +0x00012221, +0x00012220, +0x0001221f, +0x0001221c, +0x0001221b, +0x0001221a, +0x00012219, +0x00012218, +0x00012217, +0x00012216, +0x00012214, +0x00012212, +0x00012211, +0x00012210, +0x0001220f, +0x0001220e, +0x0001220c, +0x0001220b, +0x00012209, +0x00012208, +0x00012207, +0x00012206, +0x00012205, +0x00012203, +0x00012202, +0x00012201, +0x000121ff, +0x000121fe, +0x000121fd, +0x000121fb, +0x000121fa, +0x000121f9, +0x000121f8, +0x000121f6, +0x000121f5, +0x000121f4, +0x000121f2, +0x000121f1, +0x000121f0, +0x000121ef, +0x000121ee, +0x000121ec, +0x000121ea, +0x000121e9, +0x000121e8, +0x000121e7, +0x000121e6, +0x000121e5, +0x000121e3, +0x000121e1, +0x000121e0, +0x000121df, +0x000121de, +0x000121dd, +0x000121dc, +0x000121db, +0x000121d8, +0x000121d7, +0x000121d6, +0x000121d5, +0x000121d4, +0x000121d3, +0x000121d2, +0x000121cf, +0x000121ce, +0x000121cd, +0x000121cc, +0x000121cb, +0x000121ca, +0x000121c8, +0x000121c7, +0x000121c5, +0x000121c4, +0x000121c3, +0x000121c2, +0x000121c1, +0x000121bf, +0x000121be, +0x000121bc, +0x000121bb, +0x000121ba, +0x000121b9, +0x000121b8, +0x000121b6, +0x000121b5, +0x000121b4, +0x000121b2, +0x000121b1, +0x000121b0, +0x000121ae, +0x000121ad, +0x000121ac, +0x000121ab, +0x000121a9, +0x000121a8, +0x000121a6, +0x000121a5, +0x000121a4, +0x000121a3, +0x000121a1, +0x000121a0, +0x0001219f, +0x0001219e, +0x0001219c, +0x0001219b, +0x0001219a, +0x00012198, +0x00012197, +0x00012196, +0x00012195, +0x00012194, +0x00012192, +0x00012191, +0x0001218f, +0x0001218e, +0x0001218d, +0x0001218c, +0x0001218b, +0x0001218a, +0x00012187, +0x00012186, +0x00012185, +0x00012184, +0x00012183, +0x00012182, +0x00012181, +0x0001217e, +0x0001217d, +0x0001217c, +0x0001217b, +0x0001217a, +0x00012179, +0x00012178, +0x00012177, +0x00012174, +0x00012173, +0x00012172, +0x00012171, +0x00012170, +0x0001216f, +0x0001216e, +0x0001216c, +0x0001216a, +0x00012169, +0x00012168, +0x00012167, +0x00012166, +0x00012164, +0x00012163, +0x00012162, +0x00012160, +0x0001215f, +0x0001215e, +0x0001215d, +0x0001215b, +0x0001215a, +0x00012159, +0x00012158, +0x00012156, +0x00012155, +0x00012154, +0x00012152, +0x00012151, +0x00012150, +0x0001214f, +0x0001214d, +0x0001214c, +0x0001214b, +0x00012149, +0x00012148, +0x00012147, +0x00012146, +0x00012145, +0x00012143, +0x00012141, +0x00012140, +0x0001213f, +0x0001213e, +0x0001213d, +0x0001213c, +0x0001213b, +0x00012138, +0x00012137, +0x00012136, +0x00012135, +0x00012134, +0x00012133, +0x00012132, +0x00012131, +0x0001212e, +0x0001212d, +0x0001212c, +0x0001212b, +0x0001212a, +0x00012129, +0x00012128, +0x00012125, +0x00012124, +0x00012123, +0x00012122, +0x00012121, +0x00012120, +0x0001211e, +0x0001211d, +0x0001211b, +0x0001211a, +0x00012119, +0x00012118, +0x00012117, +0x00012115, +0x00012114, +0x00012113, +0x00012111, +0x00012110, +0x0001210f, +0x0001210e, +0x0001210c, +0x0001210b, +0x0001210a, +0x00012109, +0x00012107, +0x00012106, +0x00012105, +0x00012103, +0x00012102, +0x00012101, +0x00012100, +0x000120fe, +0x000120fd, +0x000120fb, +0x000120fa, +0x000120f9, +0x000120f8, +0x000120f7, +0x000120f6, +0x000120f4, +0x000120f2, +0x000120f1, +0x000120f0, +0x000120ef, +0x000120ee, +0x000120ed, +0x000120ec, +0x000120e9, +0x000120e8, +0x000120e7, +0x000120e6, +0x000120e5, +0x000120e4, +0x000120e3, +0x000120e2, +0x000120df, +0x000120de, +0x000120dd, +0x000120dc, +0x000120db, +0x000120da, +0x000120d8, +0x000120d6, +0x000120d5, +0x000120d4, +0x000120d3, +0x000120d2, +0x000120d1, +0x000120cf, +0x000120ce, +0x000120cc, +0x000120cb, +0x000120ca, +0x000120c9, +0x000120c8, +0x000120c6, +0x000120c5, +0x000120c4, +0x000120c2, +0x000120c1, +0x000120c0, +0x000120bf, +0x000120bd, +0x000120bc, +0x000120bb, +0x000120ba, +0x000120b8, +0x000120b7, +0x000120b5, +0x000120b4, +0x000120b3, +0x000120b2, +0x000120b1, +0x000120af, +0x000120ae, +0x000120ac, +0x000120ab, +0x000120aa, +0x000120a9, +0x000120a8, +0x000120a7, +0x000120a5, +0x000120a3, +0x000120a2, +0x000120a1, +0x000120a0, +0x0001209f, +0x0001209e, +0x0001209d, +0x0001209a, +0x00012099, +0x00012098, +0x00012097, +0x00012096, +0x00012095, +0x00012094, +0x00012092, +0x00012090, +0x0001208f, +0x0001208e, +0x0001208d, +0x0001208c, +0x0001208b, +0x00012089, +0x00012087, +0x00012086, +0x00012085, +0x00012084, +0x00012083, +0x00012082, +0x00012080, +0x0001207f, +0x0001207d, +0x0001207c, +0x0001207b, +0x0001207a, +0x00012079, +0x00012077, +0x00012076, +0x00012075, +0x00012073, +0x00012072, +0x00012071, +0x00012070, +0x0001206e, +0x0001206d, +0x0001206c, +0x0001206b, +0x00012069, +0x00012068, +0x00012066, +0x00012065, +0x00012064, +0x00012063, +0x00012062, +0x00012061, +0x00012060, +0x0001205f, +0x0001205c, +0x0001205b, +0x0001205a, +0x00012059, +0x00012058, +0x00012057, +0x00012056, +0x00012054, +0x00012052, +0x00012051, +0x00012050, +0x0001204f, +0x0001204e, +0x0001204d, +0x0001204b, +0x0001204a, +0x00012048, +0x00012047, +0x00012046, +0x00012045, +0x00012044, +0x00012042, +0x00012041, +0x00012040, +0x0001203e, +0x0001203d, +0x0001203c, +0x0001203b, +0x00012039, +0x00012038, +0x00012037, +0x00012036, +0x00012034, +0x00012033, +0x00012032, +0x00012030, +0x0001202f, +0x0001202e, +0x0001202d, +0x0001202c, +0x0001202a, +0x00012029, +0x00012027, +0x00012026, +0x00012025, +0x00012024, +0x00012023, +0x00012022, +0x00012020, +0x0001201e, +0x0001201d, +0x0001201c, +0x0001201b, +0x0001201a, +0x00012019, +0x00012018, +0x00012015, +0x00012014, +0x00012013, +0x00012012, +0x00012011, +0x00012010, +0x0001200f, +0x0001200e, +0x0001200b, +0x0001200a, +0x00012009, +0x00012008, +0x00012007, +0x00012006, +0x00012005, +0x00012003, +0x00012001, +0x00012000, +0x00011fff, +0x00011ffe, +0x00011ffd, +0x00011ffc, +0x00011ffa, +0x00011ff9, +0x00011ff7, +0x00011ff6, +0x00011ff5, +0x00011ff4, +0x00011ff3, +0x00011ff1, +0x00011ff0, +0x00011fef, +0x00011fed, +0x00011fec, +0x00011feb, +0x00011fea, +0x00011fe8, +0x00011fe7, +0x00011fe6, +0x00011fe5, +0x00011fe3, +0x00011fe2, +0x00011fe1, +0x00011fdf, +0x00011fde, +0x00011fdd, +0x00011fdc, +0x00011fdb, +0x00011fd9, +0x00011fd8, +0x00011fd6, +0x00011fd5, +0x00011fd4, +0x00011fd3, +0x00011fd2, +0x00011fd1, +0x00011fcf, +0x00011fcd, +0x00011fcc, +0x00011fcb, +0x00011fca, +0x00011fc9, +0x00011fc8, +0x00011fc7, +0x00011fc4, +0x00011fc3, +0x00011fc2, +0x00011fc1, +0x00011fc0, +0x00011fbf, +0x00011fbc, +0x00011fbb, +0x00011fba, +0x00011fb9, +0x00011fb8, +0x00011fb7, +0x00011fb6, +0x00011fb4, +0x00011fb2, +0x00011fb1, +0x00011fb0, +0x00011faf, +0x00011fae, +0x00011fad, +0x00011fac, +0x00011faa, +0x00011fa8, +0x00011fa7, +0x00011fa6, +0x00011fa5, +0x00011fa4, +0x00011fa3, +0x00011fa1, +0x00011fa0, +0x00011f9e, +0x00011f9d, +0x00011f9c, +0x00011f9b, +0x00011f9a, +0x00011f98, +0x00011f97, +0x00011f96, +0x00011f95, +0x00011f93, +0x00011f92, +0x00011f91, +0x00011f90, +0x00011f8e, +0x00011f8d, +0x00011f8c, +0x00011f8b, +0x00011f89, +0x00011f88, +0x00011f87, +0x00011f85, +0x00011f84, +0x00011f83, +0x00011f82, +0x00011f81, +0x00011f7f, +0x00011f7e, +0x00011f7c, +0x00011f7b, +0x00011f7a, +0x00011f79, +0x00011f78, +0x00011f77, +0x00011f75, +0x00011f73, +0x00011f72, +0x00011f71, +0x00011f70, +0x00011f6f, +0x00011f6e, +0x00011f6d, +0x00011f6c, +0x00011f69, +0x00011f68, +0x00011f67, +0x00011f66, +0x00011f65, +0x00011f64, +0x00011f63, +0x00011f62, +0x00011f5f, +0x00011f5e, +0x00011f5d, +0x00011f5c, +0x00011f5b, +0x00011f5a, +0x00011f59, +0x00011f57, +0x00011f55, +0x00011f54, +0x00011f53, +0x00011f52, +0x00011f51, +0x00011f50, +0x00011f4e, +0x00011f4d, +0x00011f4b, +0x00011f4a, +0x00011f49, +0x00011f48, +0x00011f47, +0x00011f46, +0x00011f44, +0x00011f43, +0x00011f42, +0x00011f40, +0x00011f3f, +0x00011f3e, +0x00011f3d, +0x00011f3b, +0x00011f3a, +0x00011f39, +0x00011f38, +0x00011f36, +0x00011f35, +0x00011f34, +0x00011f32, +0x00011f31, +0x00011f30, +0x00011f2f, +0x00011f2e, +0x00011f2c, +0x00011f2b, +0x00011f29, +0x00011f28, +0x00011f27, +0x00011f26, +0x00011f25, +0x00011f24, +0x00011f22, +0x00011f21, +0x00011f1f, +0x00011f1e, +0x00011f1d, +0x00011f1c, +0x00011f1b, +0x00011f1a, +0x00011f19, +0x00011f16, +0x00011f15, +0x00011f14, +0x00011f13, +0x00011f12, +0x00011f11, +0x00011f10, +0x00011f0f, +0x00011f0c, +0x00011f0b, +0x00011f0a, +0x00011f09, +0x00011f08, +0x00011f07, +0x00011f06, +0x00011f04, +0x00011f02, +0x00011f01, +0x00011f00, +0x00011eff, +0x00011efe, +0x00011efd, +0x00011efc, +0x00011efa, +0x00011ef8, +0x00011ef7, +0x00011ef6, +0x00011ef5, +0x00011ef4, +0x00011ef3, +0x00011ef1, +0x00011ef0, +0x00011eef, +0x00011eed, +0x00011eec, +0x00011eeb, +0x00011eea, +0x00011ee8, +0x00011ee7, +0x00011ee6, +0x00011ee5, +0x00011ee3, +0x00011ee2, +0x00011ee1, +0x00011edf, +0x00011ede, +0x00011edd, +0x00011edc, +0x00011edb, +0x00011ed9, +0x00011ed8, +0x00011ed7, +0x00011ed5, +0x00011ed4, +0x00011ed3, +0x00011ed2, +0x00011ed1, +0x00011ed0, +0x00011ece, +0x00011ecc, +0x00011ecb, +0x00011eca, +0x00011ec9, +0x00011ec8, +0x00011ec7, +0x00011ec6, +0x00011ec3, +0x00011ec2, +0x00011ec1, +0x00011ec0, +0x00011ebf, +0x00011ebe, +0x00011ebd, +0x00011ebc, +0x00011eb9, +0x00011eb8, +0x00011eb7, +0x00011eb6, +0x00011eb5, +0x00011eb4, +0x00011eb3, +0x00011eb2, +0x00011eaf, +0x00011eae, +0x00011ead, +0x00011eac, +0x00011eab, +0x00011eaa, +0x00011ea9, +0x00011ea7, +0x00011ea6, +0x00011ea4, +0x00011ea3, +0x00011ea2, +0x00011ea1, +0x00011ea0, +0x00011e9e, +0x00011e9d, +0x00011e9c, +0x00011e9a, +0x00011e99, +0x00011e98, +0x00011e97, +0x00011e95, +0x00011e94, +0x00011e93, +0x00011e92, +0x00011e90, +0x00011e8f, +0x00011e8e, +0x00011e8d, +0x00011e8b, +0x00011e8a, +0x00011e89, +0x00011e88, +0x00011e86, +0x00011e85, +0x00011e84, +0x00011e82, +0x00011e81, +0x00011e80, +0x00011e7f, +0x00011e7d, +0x00011e7c, +0x00011e7b, +0x00011e7a, +0x00011e79, +0x00011e78, +0x00011e76, +0x00011e75, +0x00011e73, +0x00011e72, +0x00011e71, +0x00011e70, +0x00011e6f, +0x00011e6d, +0x00011e6c, +0x00011e6b, +0x00011e6a, +0x00011e68, +0x00011e67, +0x00011e66, +0x00011e65, +0x00011e63, +0x00011e62, +0x00011e61, +0x00011e60, +0x00011e5e, +0x00011e5d, +0x00011e5c, +0x00011e5a, +0x00011e59, +0x00011e58, +0x00011e57, +0x00011e56, +0x00011e55, +0x00011e53, +0x00011e52, +0x00011e50, +0x00011e4f, +0x00011e4e, +0x00011e4d, +0x00011e4c, +0x00011e4b, +0x00011e49, +0x00011e48, +0x00011e46, +0x00011e45, +0x00011e44, +0x00011e43, +0x00011e42, +0x00011e41, +0x00011e40, +0x00011e3d, +0x00011e3c, +0x00011e3b, +0x00011e3a, +0x00011e39, +0x00011e38, +0x00011e37, +0x00011e36, +0x00011e33, +0x00011e32, +0x00011e31, +0x00011e30, +0x00011e2f, +0x00011e2e, +0x00011e2d, +0x00011e2c, +0x00011e2a, +0x00011e28, +0x00011e27, +0x00011e26, +0x00011e25, +0x00011e24, +0x00011e23, +0x00011e22, +0x00011e20, +0x00011e1e, +0x00011e1d, +0x00011e1c, +0x00011e1b, +0x00011e1a, +0x00011e19, +0x00011e17, +0x00011e16, +0x00011e15, +0x00011e13, +0x00011e12, +0x00011e11, +0x00011e10, +0x00011e0f, +0x00011e0d, +0x00011e0c, +0x00011e0b, +0x00011e09, +0x00011e08, +0x00011e07, +0x00011e06, +0x00011e04, +0x00011e03, +0x00011e02, +0x00011e01, +0x00011e00, +0x00011dfe, +0x00011dfd, +0x00011dfc, +0x00011dfa, +0x00011df9, +0x00011df8, +0x00011df7, +0x00011df6, +0x00011df4, +0x00011df3, +0x00011df1, +0x00011df0, +0x00011def, +0x00011dee, +0x00011ded, +0x00011dec, +0x00011deb, +0x00011de9, +0x00011de7, +0x00011de6, +0x00011de5, +0x00011de4, +0x00011de3, +0x00011de2, +0x00011de1, +0x00011de0, +0x00011ddd, +0x00011ddc, +0x00011ddb, +0x00011dda, +0x00011dd9, +0x00011dd8, +0x00011dd7, +0x00011dd6, +0x00011dd3, +0x00011dd2, +0x00011dd1, +0x00011dd0, +0x00011dcf, +0x00011dce, +0x00011dcd, +0x00011dcb, +0x00011dca, +0x00011dc8, +0x00011dc7, +0x00011dc6, +0x00011dc5, +0x00011dc4, +0x00011dc3, +0x00011dc1, +0x00011dc0, +0x00011dbe, +0x00011dbd, +0x00011dbc, +0x00011dbb, +0x00011dba, +0x00011db9, +0x00011db7, +0x00011db6, +0x00011db5, +0x00011db3, +0x00011db2, +0x00011db1, +0x00011db0, +0x00011dae, +0x00011dad, +0x00011dac, +0x00011dab, +0x00011da9, +0x00011da8, +0x00011da7, +0x00011da6, +0x00011da4, +0x00011da3, +0x00011da2, +0x00011da1, +0x00011da0, +0x00011d9e, +0x00011d9d, +0x00011d9b, +0x00011d9a, +0x00011d99, +0x00011d98, +0x00011d97, +0x00011d96, +0x00011d94, +0x00011d93, +0x00011d91, +0x00011d90, +0x00011d8f, +0x00011d8e, +0x00011d8d, +0x00011d8c, +0x00011d8b, +0x00011d88, +0x00011d87, +0x00011d86, +0x00011d85, +0x00011d84, +0x00011d83, +0x00011d82, +0x00011d81, +0x00011d7e, +0x00011d7d, +0x00011d7c, +0x00011d7b, +0x00011d7a, +0x00011d79, +0x00011d78, +0x00011d77, +0x00011d75, +0x00011d73, +0x00011d72, +0x00011d71, +0x00011d70, +0x00011d6f, +0x00011d6e, +0x00011d6d, +0x00011d6b, +0x00011d69, +0x00011d68, +0x00011d67, +0x00011d66, +0x00011d65, +0x00011d64, +0x00011d62, +0x00011d61, +0x00011d60, +0x00011d5e, +0x00011d5d, +0x00011d5c, +0x00011d5b, +0x00011d5a, +0x00011d58, +0x00011d57, +0x00011d56, +0x00011d54, +0x00011d53, +0x00011d52, +0x00011d51, +0x00011d4f, +0x00011d4e, +0x00011d4d, +0x00011d4c, +0x00011d4b, +0x00011d49, +0x00011d48, +0x00011d47, +0x00011d45, +0x00011d44, +0x00011d43, +0x00011d42, +0x00011d41, +0x00011d3f, +0x00011d3e, +0x00011d3d, +0x00011d3c, +0x00011d3b, +0x00011d3a, +0x00011d39, +0x00011d37, +0x00011d35, +0x00011d34, +0x00011d33, +0x00011d32, +0x00011d31, +0x00011d30, +0x00011d2f, +0x00011d2e, +0x00011d2b, +0x00011d2a, +0x00011d29, +0x00011d28, +0x00011d27, +0x00011d26, +0x00011d25, +0x00011d24, +0x00011d23, +0x00011d20, +0x00011d1f, +0x00011d1e, +0x00011d1d, +0x00011d1c, +0x00011d1b, +0x00011d1a, +0x00011d18, +0x00011d17, +0x00011d15, +0x00011d14, +0x00011d13, +0x00011d12, +0x00011d11, +0x00011d10, +0x00011d0e, +0x00011d0d, +0x00011d0b, +0x00011d0a, +0x00011d09, +0x00011d08, +0x00011d07, +0x00011d06, +0x00011d04, +0x00011d03, +0x00011d02, +0x00011d00, +0x00011cff, +0x00011cfe, +0x00011cfd, +0x00011cfc, +0x00011cfa, +0x00011cf9, +0x00011cf8, +0x00011cf7, +0x00011cf5, +0x00011cf4, +0x00011cf3, +0x00011cf2, +0x00011cf0, +0x00011cef, +0x00011cee, +0x00011ced, +0x00011cec, +0x00011cea, +0x00011ce9, +0x00011ce8, +0x00011ce6, +0x00011ce5, +0x00011ce4, +0x00011ce3, +0x00011ce2, +0x00011ce1, +0x00011cdf, +0x00011cdd, +0x00011cdc, +0x00011cdb, +0x00011cda, +0x00011cd9, +0x00011cd8, +0x00011cd7, +0x00011cd6, +0x00011cd3, +0x00011cd2, +0x00011cd1, +0x00011cd0, +0x00011ccf, +0x00011cce, +0x00011ccd, +0x00011ccc, +0x00011cc9, +0x00011cc8, +0x00011cc7, +0x00011cc6, +0x00011cc5, +0x00011cc4, +0x00011cc3, +0x00011cc2, +0x00011cc1, +0x00011cbe, +0x00011cbd, +0x00011cbc, +0x00011cbb, +0x00011cba, +0x00011cb9, +0x00011cb8, +0x00011cb7, +0x00011cb5, +0x00011cb3, +0x00011cb2, +0x00011cb1, +0x00011cb0, +0x00011caf, +0x00011cae, +0x00011cad, +0x00011cab, +0x00011caa, +0x00011ca8, +0x00011ca7, +0x00011ca6, +0x00011ca5, +0x00011ca4, +0x00011ca2, +0x00011ca1, +0x00011ca0, +0x00011c9f, +0x00011c9e, +0x00011c9c, +0x00011c9a, +0x00011c99, +0x00011c98, +0x00011c97, +0x00011c96, +0x00011c95, +0x00011c94, +0x00011c92, +0x00011c91, +0x00011c8f, +0x00011c8e, +0x00011c8d, +0x00011c8c, +0x00011c8b, +0x00011c8a, +0x00011c88, +0x00011c87, +0x00011c86, +0x00011c84, +0x00011c83, +0x00011c82, +0x00011c81, +0x00011c80, +0x00011c7e, +0x00011c7d, +0x00011c7c, +0x00011c7b, +0x00011c7a, +0x00011c78, +0x00011c77, +0x00011c76, +0x00011c74, +0x00011c73, +0x00011c72, +0x00011c71, +0x00011c70, +0x00011c6f, +0x00011c6d, +0x00011c6c, +0x00011c6b, +0x00011c69, +0x00011c68, +0x00011c67, +0x00011c66, +0x00011c65, +0x00011c64, +0x00011c62, +0x00011c61, +0x00011c5f, +0x00011c5e, +0x00011c5d, +0x00011c5c, +0x00011c5b, +0x00011c5a, +0x00011c59, +0x00011c57, +0x00011c55, +0x00011c54, +0x00011c53, +0x00011c52, +0x00011c51, +0x00011c50, +0x00011c4f, +0x00011c4e, +0x00011c4b, +0x00011c4a, +0x00011c49, +0x00011c48, +0x00011c47, +0x00011c46, +0x00011c45, +0x00011c44, +0x00011c43, +0x00011c40, +0x00011c3f, +0x00011c3e, +0x00011c3d, +0x00011c3c, +0x00011c3b, +0x00011c3a, +0x00011c39, +0x00011c37, +0x00011c35, +0x00011c34, +0x00011c33, +0x00011c32, +0x00011c31, +0x00011c30, +0x00011c2f, +0x00011c2d, +0x00011c2c, +0x00011c2b, +0x00011c29, +0x00011c28, +0x00011c27, +0x00011c26, +0x00011c25, +0x00011c24, +0x00011c22, +0x00011c21, +0x00011c20, +0x00011c1e, +0x00011c1d, +0x00011c1c, +0x00011c1b, +0x00011c1a, +0x00011c18, +0x00011c17, +0x00011c16, +0x00011c15, +0x00011c13, +0x00011c12, +0x00011c11, +0x00011c10, +0x00011c0e, +0x00011c0d, +0x00011c0c, +0x00011c0b, +0x00011c0a, +0x00011c08, +0x00011c07, +0x00011c06, +0x00011c04, +0x00011c03, +0x00011c02, +0x00011c01, +0x00011c00, +0x00011bff, +0x00011bfd, +0x00011bfc, +0x00011bfa, +0x00011bf9, +0x00011bf8, +0x00011bf7, +0x00011bf6, +0x00011bf5, +0x00011bf4, +0x00011bf2, +0x00011bf0, +0x00011bef, +0x00011bee, +0x00011bed, +0x00011bec, +0x00011beb, +0x00011bea, +0x00011be9, +0x00011be6, +0x00011be5, +0x00011be4, +0x00011be3, +0x00011be2, +0x00011be1, +0x00011be0, +0x00011bdf, +0x00011bde, +0x00011bdd, +0x00011bda, +0x00011bd9, +0x00011bd8, +0x00011bd7, +0x00011bd6, +0x00011bd5, +0x00011bd4, +0x00011bd3, +0x00011bd1, +0x00011bcf, +0x00011bce, +0x00011bcd, +0x00011bcc, +0x00011bcb, +0x00011bca, +0x00011bc9, +0x00011bc7, +0x00011bc6, +0x00011bc4, +0x00011bc3, +0x00011bc2, +0x00011bc1, +0x00011bc0, +0x00011bbf, +0x00011bbd, +0x00011bbc, +0x00011bbb, +0x00011bb9, +0x00011bb8, +0x00011bb7, +0x00011bb6, +0x00011bb5, +0x00011bb3, +0x00011bb2, +0x00011bb1, +0x00011bb0, +0x00011bae, +0x00011bad, +0x00011bac, +0x00011bab, +0x00011ba9, +0x00011ba8, +0x00011ba7, +0x00011ba6, +0x00011ba5, +0x00011ba3, +0x00011ba2, +0x00011ba1, +0x00011b9f, +0x00011b9e, +0x00011b9d, +0x00011b9c, +0x00011b9b, +0x00011b9a, +0x00011b98, +0x00011b97, +0x00011b96, +0x00011b94, +0x00011b93, +0x00011b92, +0x00011b91, +0x00011b90, +0x00011b8f, +0x00011b8e, +0x00011b8c, +0x00011b8a, +0x00011b89, +0x00011b88, +0x00011b87, +0x00011b86, +0x00011b85, +0x00011b84, +0x00011b83, +0x00011b80, +0x00011b7f, +0x00011b7e, +0x00011b7d, +0x00011b7c, +0x00011b7b, +0x00011b7a, +0x00011b79, +0x00011b78, +0x00011b75, +0x00011b74, +0x00011b73, +0x00011b72, +0x00011b71, +0x00011b70, +0x00011b6f, +0x00011b6e, +0x00011b6c, +0x00011b6a, +0x00011b69, +0x00011b68, +0x00011b67, +0x00011b66, +0x00011b65, +0x00011b63, +0x00011b62, +0x00011b61, +0x00011b60, +0x00011b5f, +0x00011b5e, +0x00011b5c, +0x00011b5b, +0x00011b5a, +0x00011b58, +0x00011b57, +0x00011b56, +0x00011b55, +0x00011b54, +0x00011b53, +0x00011b51, +0x00011b50, +0x00011b4e, +0x00011b4d, +0x00011b4c, +0x00011b4b, +0x00011b4a, +0x00011b49, +0x00011b48, +0x00011b47, +0x00011b45, +0x00011b43, +0x00011b42, +0x00011b41, +0x00011b40, +0x00011b3f, +0x00011b3e, +0x00011b3d, +0x00011b3c, +0x00011b39, +0x00011b38, +0x00011b37, +0x00011b36, +0x00011b35, +0x00011b34, +0x00011b33, +0x00011b32, +0x00011b31, +0x00011b30, +0x00011b2d, +0x00011b2c, +0x00011b2b, +0x00011b2a, +0x00011b29, +0x00011b28, +0x00011b27, +0x00011b26, +0x00011b24, +0x00011b22, +0x00011b21, +0x00011b20, +0x00011b1f, +0x00011b1e, +0x00011b1d, +0x00011b1c, +0x00011b1b, +0x00011b19, +0x00011b18, +0x00011b16, +0x00011b15, +0x00011b14, +0x00011b13, +0x00011b12, +0x00011b11, +0x00011b0f, +0x00011b0e, +0x00011b0d, +0x00011b0b, +0x00011b0a, +0x00011b09, +0x00011b08, +0x00011b07, +0x00011b06, +0x00011b04, +0x00011b03, +0x00011b02, +0x00011b00, +0x00011aff, +0x00011afe, +0x00011afd, +0x00011afc, +0x00011afa, +0x00011af9, +0x00011af8, +0x00011af7, +0x00011af6, +0x00011af4, +0x00011af3, +0x00011af2, +0x00011af1, +0x00011aef, +0x00011aee, +0x00011aed, +0x00011aec, +0x00011aeb, +0x00011ae9, +0x00011ae8, +0x00011ae7, +0x00011ae5, +0x00011ae4, +0x00011ae3, +0x00011ae2, +0x00011ae1, +0x00011ae0, +0x00011adf, +0x00011add, +0x00011adc, +0x00011ada, +0x00011ad9, +0x00011ad8, +0x00011ad7, +0x00011ad6, +0x00011ad5, +0x00011ad4, +0x00011ad2, +0x00011ad0, +0x00011acf, +0x00011ace, +0x00011acd, +0x00011acc, +0x00011acb, +0x00011aca, +0x00011ac7, +0x00011ac6, +0x00011ac5, +0x00011ac4, +0x00011ac3, +0x00011ac2, +0x00011ac1, +0x00011ac0, +0x00011abf, +0x00011abc, +0x00011abb, +0x00011aba, +0x00011ab9, +0x00011ab8, +0x00011ab7, +0x00011ab6, +0x00011ab5, +0x00011ab4, +0x00011ab2, +0x00011ab0, +0x00011aaf, +0x00011aae, +0x00011aad, +0x00011aac, +0x00011aab, +0x00011aaa, +0x00011aa9, +0x00011aa7, +0x00011aa6, +0x00011aa4, +0x00011aa3, +0x00011aa2, +0x00011aa1, +0x00011aa0, +0x00011a9f, +0x00011a9e, +0x00011a9c, +0x00011a9b, +0x00011a9a, +0x00011a98, +0x00011a97, +0x00011a96, +0x00011a95, +0x00011a94, +0x00011a93, +0x00011a91, +0x00011a90, +0x00011a8f, +0x00011a8e, +0x00011a8c, +0x00011a8b, +0x00011a8a, +0x00011a89, +0x00011a87, +0x00011a86, +0x00011a85, +0x00011a84, +0x00011a83, +0x00011a82, +0x00011a80, +0x00011a7f, +0x00011a7e, +0x00011a7c, +0x00011a7b, +0x00011a7a, +0x00011a79, +0x00011a78, +0x00011a77, +0x00011a75, +0x00011a74, +0x00011a73, +0x00011a71, +0x00011a70, +0x00011a6f, +0x00011a6e, +0x00011a6d, +0x00011a6c, +0x00011a6b, +0x00011a69, +0x00011a68, +0x00011a66, +0x00011a65, +0x00011a64, +0x00011a63, +0x00011a62, +0x00011a61, +0x00011a60, +0x00011a5f, +0x00011a5d, +0x00011a5b, +0x00011a5a, +0x00011a59, +0x00011a58, +0x00011a57, +0x00011a56, +0x00011a55, +0x00011a54, +0x00011a53, +0x00011a50, +0x00011a4f, +0x00011a4e, +0x00011a4d, +0x00011a4c, +0x00011a4b, +0x00011a4a, +0x00011a49, +0x00011a48, +0x00011a47, +0x00011a44, +0x00011a43, +0x00011a42, +0x00011a41, +0x00011a40, +0x00011a3f, +0x00011a3e, +0x00011a3d, +0x00011a3b, +0x00011a3a, +0x00011a38, +0x00011a37, +0x00011a36, +0x00011a35, +0x00011a34, +0x00011a33, +0x00011a32, +0x00011a30, +0x00011a2f, +0x00011a2e, +0x00011a2c, +0x00011a2b, +0x00011a2a, +0x00011a29, +0x00011a28, +0x00011a27, +0x00011a25, +0x00011a24, +0x00011a23, +0x00011a21, +0x00011a20, +0x00011a1f, +0x00011a1e, +0x00011a1d, +0x00011a1c, +0x00011a1a, +0x00011a19, +0x00011a18, +0x00011a17, +0x00011a15, +0x00011a14, +0x00011a13, +0x00011a12, +0x00011a11, +0x00011a0f, +0x00011a0e, +0x00011a0d, +0x00011a0c, +0x00011a0b, +0x00011a09, +0x00011a08, +0x00011a07, +0x00011a06, +0x00011a04, +0x00011a03, +0x00011a02, +0x00011a01, +0x00011a00, +0x000119ff, +0x000119fd, +0x000119fc, +0x000119fa, +0x000119f9, +0x000119f8, +0x000119f7, +0x000119f6, +0x000119f5, +0x000119f4, +0x000119f3, +0x000119f1, +0x000119ef, +0x000119ee, +0x000119ed, +0x000119ec, +0x000119eb, +0x000119ea, +0x000119e9, +0x000119e8, +0x000119e7, +0x000119e4, +0x000119e3, +0x000119e2, +0x000119e1, +0x000119e0, +0x000119df, +0x000119de, +0x000119dd, +0x000119dc, +0x000119d9, +0x000119d8, +0x000119d7, +0x000119d6, +0x000119d5, +0x000119d4, +0x000119d3, +0x000119d2, +0x000119d1, +0x000119d0, +0x000119cd, +0x000119cc, +0x000119cb, +0x000119ca, +0x000119c9, +0x000119c8, +0x000119c7, +0x000119c6, +0x000119c5, +0x000119c3, +0x000119c1, +0x000119c0, +0x000119bf, +0x000119be, +0x000119bd, +0x000119bc, +0x000119bb, +0x000119ba, +0x000119b8, +0x000119b7, +0x000119b5, +0x000119b4, +0x000119b3, +0x000119b2, +0x000119b1, +0x000119b0, +0x000119ae, +0x000119ad, +0x000119ac, +0x000119ab, +0x000119a9, +0x000119a8, +0x000119a7, +0x000119a6, +0x000119a5, +0x000119a3, +0x000119a2, +0x000119a1, +0x000119a0, +0x0001199f, +0x0001199d, +0x0001199c, +0x0001199b, +0x0001199a, +0x00011998, +0x00011997, +0x00011996, +0x00011995, +0x00011994, +0x00011992, +0x00011991, +0x00011990, +0x0001198f, +0x0001198e, +0x0001198d, +0x0001198b, +0x0001198a, +0x00011988, +0x00011987, +0x00011986, +0x00011985, +0x00011984, +0x00011983, +0x00011982, +0x00011980, +0x0001197f, +0x0001197e, +0x0001197c, +0x0001197b, +0x0001197a, +0x00011979, +0x00011978, +0x00011977, +0x00011975, +0x00011974, +0x00011973, +0x00011972, +0x00011971, +0x0001196f, +0x0001196e, +0x0001196d, +0x0001196c, +0x0001196a, +0x00011969, +0x00011968, +0x00011967, +0x00011966, +0x00011965, +0x00011963, +0x00011962, +0x00011961, +0x0001195f, +0x0001195e, +0x0001195d, +0x0001195c, +0x0001195b, +0x0001195a, +0x00011959, +0x00011957, +0x00011956, +0x00011955, +0x00011953, +0x00011952, +0x00011951, +0x00011950, +0x0001194f, +0x0001194e, +0x0001194d, +0x0001194b, +0x0001194a, +0x00011948, +0x00011947, +0x00011946, +0x00011945, +0x00011944, +0x00011943, +0x00011942, +0x00011941, +0x00011940, +0x0001193d, +0x0001193c, +0x0001193b, +0x0001193a, +0x00011939, +0x00011938, +0x00011937, +0x00011936, +0x00011935, +0x00011934, +0x00011931, +0x00011930, +0x0001192f, +0x0001192e, +0x0001192d, +0x0001192c, +0x0001192b, +0x0001192a, +0x00011929, +0x00011928, +0x00011925, +0x00011924, +0x00011923, +0x00011922, +0x00011921, +0x00011920, +0x0001191f, +0x0001191e, +0x0001191d, +0x0001191b, +0x00011919, +0x00011918, +0x00011917, +0x00011916, +0x00011915, +0x00011914, +0x00011913, +0x00011912, +0x00011910, +0x0001190f, +0x0001190e, +0x0001190c, +0x0001190b, +0x0001190a, +0x00011909, +0x00011908, +0x00011907, +0x00011905, +0x00011904, +0x00011903, +0x00011902, +0x00011900, +0x000118ff, +0x000118fe, +0x000118fd, +0x000118fc, +0x000118fb, +0x000118f9, +0x000118f8, +0x000118f7, +0x000118f6, +0x000118f4, +0x000118f3, +0x000118f2, +0x000118f1, +0x000118f0, +0x000118ee, +0x000118ed, +0x000118ec, +0x000118eb, +0x000118ea, +0x000118e8, +0x000118e7, +0x000118e6, +0x000118e5, +0x000118e3, +0x000118e2, +0x000118e1, +0x000118e0, +0x000118df, +0x000118de, +0x000118dd, +0x000118db, +0x000118da, +0x000118d8, +0x000118d7, +0x000118d6, +0x000118d5, +0x000118d4, +0x000118d3, +0x000118d2, +0x000118d1, +0x000118cf, +0x000118ce, +0x000118cc, +0x000118cb, +0x000118ca, +0x000118c9, +0x000118c8, +0x000118c7, +0x000118c6, +0x000118c5, +0x000118c3, +0x000118c1, +0x000118c0, +0x000118bf, +0x000118be, +0x000118bd, +0x000118bc, +0x000118bb, +0x000118ba, +0x000118b9, +0x000118b6, +0x000118b5, +0x000118b4, +0x000118b3, +0x000118b2, +0x000118b1, +0x000118b0, +0x000118af, +0x000118ae, +0x000118ad, +0x000118ab, +0x000118a9, +0x000118a8, +0x000118a7, +0x000118a6, +0x000118a5, +0x000118a4, +0x000118a3, +0x000118a2, +0x000118a1, +0x0001189f, +0x0001189d, +0x0001189c, +0x0001189b, +0x0001189a, +0x00011899, +0x00011898, +0x00011897, +0x00011896, +0x00011894, +0x00011893, +0x00011891, +0x00011890, +0x0001188f, +0x0001188e, +0x0001188d, +0x0001188c, +0x0001188b, +0x00011889, +0x00011888, +0x00011887, +0x00011885, +0x00011884, +0x00011883, +0x00011882, +0x00011881, +0x00011880, +0x0001187e, +0x0001187d, +0x0001187c, +0x0001187b, +0x00011879, +0x00011878, +0x00011877, +0x00011876, +0x00011875, +0x00011874, +0x00011872, +0x00011871, +0x00011870, +0x0001186f, +0x0001186e, +0x0001186c, +0x0001186b, +0x0001186a, +0x00011869, +0x00011867, +0x00011866, +0x00011865, +0x00011864, +0x00011863, +0x00011862, +0x00011860, +0x0001185f, +0x0001185e, +0x0001185d, +0x0001185c, +0x0001185b, +0x0001185a, +0x00011859, +0x00011856, +0x00011855, +0x00011854, +0x00011853, +0x00011852, +0x00011851, +0x00011850, +0x0001184f, +0x0001184e, +0x0001184d, +0x0001184b, +0x00011849, +0x00011848, +0x00011847, +0x00011846, +0x00011845, +0x00011844, +0x00011843, +0x00011842, +0x00011841, +0x0001183f, +0x0001183d, +0x0001183c, +0x0001183b, +0x0001183a, +0x00011839, +0x00011838, +0x00011837, +0x00011836, +0x00011835, +0x00011833, +0x00011832, +0x00011830, +0x0001182f, +0x0001182e, +0x0001182d, +0x0001182c, +0x0001182b, +0x0001182a, +0x00011828, +0x00011827, +0x00011826, +0x00011825, +0x00011823, +0x00011822, +0x00011821, +0x00011820, +0x0001181f, +0x0001181e, +0x0001181c, +0x0001181b, +0x0001181a, +0x00011819, +0x00011817, +0x00011816, +0x00011815, +0x00011814, +0x00011813, +0x00011812, +0x00011810, +0x0001180f, +0x0001180e, +0x0001180d, +0x0001180c, +0x0001180a, +0x00011809, +0x00011808, +0x00011807, +0x00011805, +0x00011804, +0x00011803, +0x00011802, +0x00011801, +0x00011800, +0x000117ff, +0x000117fd, +0x000117fc, +0x000117fb, +0x000117f9, +0x000117f8, +0x000117f7, +0x000117f6, +0x000117f5, +0x000117f4, +0x000117f3, +0x000117f1, +0x000117f0, +0x000117ef, +0x000117ed, +0x000117ec, +0x000117eb, +0x000117ea, +0x000117e9, +0x000117e8, +0x000117e7, +0x000117e6, +0x000117e4, +0x000117e2, +0x000117e1, +0x000117e0, +0x000117df, +0x000117de, +0x000117dd, +0x000117dc, +0x000117db, +0x000117da, +0x000117d9, +0x000117d6, +0x000117d5, +0x000117d4, +0x000117d3, +0x000117d2, +0x000117d1, +0x000117d0, +0x000117cf, +0x000117ce, +0x000117cd, +0x000117ca, +0x000117c9, +0x000117c8, +0x000117c7, +0x000117c6, +0x000117c4, +0x000117c3, +0x000117c2, +0x000117c1, +0x000117c0, +0x000117bf, +0x000117be, +0x000117bd, +0x000117bb, +0x000117b9, +0x000117b8, +0x000117b7, +0x000117b6, +0x000117b5, +0x000117b4, +0x000117b3, +0x000117b2, +0x000117b1, +0x000117af, +0x000117ae, +0x000117ac, +0x000117ab, +0x000117aa, +0x000117a9, +0x000117a8, +0x000117a7, +0x000117a6, +0x000117a5, +0x000117a3, +0x000117a2, +0x000117a1, +0x0001179f, +0x0001179e, +0x0001179d, +0x0001179c, +0x0001179b, +0x0001179a, +0x00011799, +0x00011797, +0x00011796, +0x00011795, +0x00011794, +0x00011792, +0x00011791, +0x00011790, +0x0001178f, +0x0001178e, +0x0001178d, +0x0001178c, +0x0001178a, +0x00011789, +0x00011788, +0x00011787, +0x00011785, +0x00011784, +0x00011783, +0x00011782, +0x00011781, +0x00011780, +0x0001177e, +0x0001177d, +0x0001177c, +0x0001177b, +0x0001177a, +0x00011779, +0x00011777, +0x00011776, +0x00011775, +0x00011774, +0x00011772, +0x00011771, +0x00011770, +0x0001176f, +0x0001176e, +0x0001176d, +0x0001176c, +0x0001176a, +0x00011769, +0x00011768, +0x00011766, +0x00011765, +0x00011764, +0x00011763, +0x00011762, +0x00011761, +0x00011760, +0x0001175f, +0x0001175d, +0x0001175c, +0x0001175a, +0x00011759, +0x00011758, +0x00011757, +0x00011756, +0x00011755, +0x00011754, +0x00011753, +0x00011752, +0x00011750, +0x0001174e, +0x0001174d, +0x0001174c, +0x0001174b, +0x0001174a, +0x00011749, +0x00011748, +0x00011747, +0x00011746, +0x00011745, +0x00011742, +0x00011741, +0x00011740, +0x0001173f, +0x0001173e, +0x0001173d, +0x0001173c, +0x0001173b, +0x0001173a, +0x00011739, +0x00011738, +0x00011735, +0x00011734, +0x00011733, +0x00011732, +0x00011731, +0x00011730, +0x0001172f, +0x0001172e, +0x0001172d, +0x0001172c, +0x0001172b, +0x00011728, +0x00011727, +0x00011726, +0x00011725, +0x00011724, +0x00011723, +0x00011722, +0x00011721, +0x00011720, +0x0001171f, +0x0001171d, +0x0001171b, +0x0001171a, +0x00011719, +0x00011718, +0x00011717, +0x00011716, +0x00011715, +0x00011714, +0x00011713, +0x00011711, +0x00011710, +0x0001170f, +0x0001170d, +0x0001170c, +0x0001170b, +0x0001170a, +0x00011709, +0x00011708, +0x00011707, +0x00011705, +0x00011704, +0x00011703, +0x00011702, +0x00011700, +0x000116ff, +0x000116fe, +0x000116fd, +0x000116fc, +0x000116fb, +0x000116f9, +0x000116f8, +0x000116f7, +0x000116f6, +0x000116f5, +0x000116f3, +0x000116f2, +0x000116f1, +0x000116f0, +0x000116ef, +0x000116ed, +0x000116ec, +0x000116eb, +0x000116ea, +0x000116e9, +0x000116e8, +0x000116e6, +0x000116e5, +0x000116e4, +0x000116e3, +0x000116e1, +0x000116e0, +0x000116df, +0x000116de, +0x000116dd, +0x000116dc, +0x000116db, +0x000116d9, +0x000116d8, +0x000116d7, +0x000116d5, +0x000116d4, +0x000116d3, +0x000116d2, +0x000116d1, +0x000116d0, +0x000116cf, +0x000116ce, +0x000116cc, +0x000116cb, +0x000116ca, +0x000116c8, +0x000116c7, +0x000116c6, +0x000116c5, +0x000116c4, +0x000116c3, +0x000116c2, +0x000116c1, +0x000116bf, +0x000116be, +0x000116bc, +0x000116bb, +0x000116ba, +0x000116b9, +0x000116b8, +0x000116b7, +0x000116b6, +0x000116b5, +0x000116b4, +0x000116b2, +0x000116b0, +0x000116af, +0x000116ae, +0x000116ad, +0x000116ac, +0x000116ab, +0x000116aa, +0x000116a9, +0x000116a8, +0x000116a7, +0x000116a6, +0x000116a3, +0x000116a2, +0x000116a1, +0x000116a0, +0x0001169f, +0x0001169e, +0x0001169d, +0x0001169c, +0x0001169b, +0x0001169a, +0x00011698, +0x00011696, +0x00011695, +0x00011695, +0x00011693, +0x00011692, +0x00011690, +0x0001168f, +0x0001168e, +0x0001168d, +0x0001168c, +0x0001168b, +0x0001168a, +0x00011689, +0x00011688, +0x00011686, +0x00011684, +0x00011683, +0x00011682, +0x00011681, +0x00011680, +0x0001167f, +0x0001167e, +0x0001167d, +0x0001167c, +0x0001167b, +0x0001167a, +0x00011677, +0x00011676, +0x00011675, +0x00011674, +0x00011673, +0x00011672, +0x00011671, +0x00011670, +0x0001166f, +0x0001166e, +0x0001166d, +0x0001166a, +0x00011669, +0x00011668, +0x00011667, +0x00011666, +0x00011665, +0x00011664, +0x00011663, +0x00011662, +0x00011661, +0x00011660, +0x0001165e, +0x0001165c, +0x0001165b, +0x0001165a, +0x00011659, +0x00011658, +0x00011657, +0x00011656, +0x00011655, +0x00011654, +0x00011653, +0x00011651, +0x00011650, +0x0001164e, +0x0001164d, +0x0001164c, +0x0001164b, +0x0001164a, +0x00011649, +0x00011648, +0x00011647, +0x00011646, +0x00011644, +0x00011643, +0x00011641, +0x00011640, +0x0001163f, +0x0001163e, +0x0001163d, +0x0001163c, +0x0001163b, +0x0001163a, +0x00011638, +0x00011637, +0x00011636, +0x00011635, +0x00011633, +0x00011632, +0x00011631, +0x00011630, +0x0001162f, +0x0001162e, +0x0001162d, +0x0001162b, +0x0001162a, +0x00011629, +0x00011628, +0x00011627, +0x00011625, +0x00011624, +0x00011623, +0x00011622, +0x00011621, +0x0001161f, +0x0001161e, +0x0001161d, +0x0001161c, +0x0001161b, +0x0001161a, +0x00011618, +0x00011617, +0x00011616, +0x00011615, +0x00011614, +0x00011612, +0x00011611, +0x00011610, +0x0001160f, +0x0001160e, +0x0001160d, +0x0001160c, +0x0001160a, +0x00011609, +0x00011608, +0x00011607, +0x00011605, +0x00011604, +0x00011603, +0x00011602, +0x00011601, +0x00011600, +0x000115ff, +0x000115fe, +0x000115fc, +0x000115fb, +0x000115f9, +0x000115f8, +0x000115f7, +0x000115f6, +0x000115f5, +0x000115f4, +0x000115f3, +0x000115f2, +0x000115f1, +0x000115ef, +0x000115ee, +0x000115ec, +0x000115eb, +0x000115ea, +0x000115e9, +0x000115e8, +0x000115e7, +0x000115e6, +0x000115e5, +0x000115e4, +0x000115e3, +0x000115e1, +0x000115df, +0x000115de, +0x000115dd, +0x000115dc, +0x000115db, +0x000115da, +0x000115d9, +0x000115d8, +0x000115d7, +0x000115d6, +0x000115d3, +0x000115d2, +0x000115d1, +0x000115d0, +0x000115cf, +0x000115ce, +0x000115cd, +0x000115cc, +0x000115cb, +0x000115ca, +0x000115c9, +0x000115c8, +0x000115c5, +0x000115c4, +0x000115c3, +0x000115c2, +0x000115c1, +0x000115c0, +0x000115bf, +0x000115be, +0x000115bd, +0x000115bc, +0x000115bb, +0x000115b9, +0x000115b7, +0x000115b6, +0x000115b5, +0x000115b4, +0x000115b3, +0x000115b2, +0x000115b1, +0x000115b0, +0x000115af, +0x000115ad, +0x000115ac, +0x000115aa, +0x000115a9, +0x000115a8, +0x000115a7, +0x000115a6, +0x000115a5, +0x000115a4, +0x000115a3, +0x000115a2, +0x000115a0, +0x0001159f, +0x0001159e, +0x0001159c, +0x0001159b, +0x0001159a, +0x00011599, +0x00011598, +0x00011597, +0x00011596, +0x00011594, +0x00011593, +0x00011592, +0x00011591, +0x00011590, +0x0001158e, +0x0001158d, +0x0001158c, +0x0001158b, +0x0001158a, +0x00011589, +0x00011587, +0x00011586, +0x00011585, +0x00011584, +0x00011583, +0x00011581, +0x00011580, +0x0001157f, +0x0001157e, +0x0001157d, +0x0001157c, +0x0001157a, +0x00011579, +0x00011578, +0x00011577, +0x00011576, +0x00011575, +0x00011573, +0x00011572, +0x00011571, +0x00011570, +0x0001156e, +0x0001156d, +0x0001156c, +0x0001156b, +0x0001156a, +0x00011569, +0x00011568, +0x00011567, +0x00011566, +0x00011565, +0x00011564, +0x00011561, +0x00011560, +0x0001155f, +0x0001155e, +0x0001155d, +0x0001155c, +0x0001155b, +0x0001155a, +0x00011559, +0x00011558, +0x00011557, +0x00011555, +0x00011553, +0x00011552, +0x00011551, +0x00011550, +0x0001154f, +0x0001154e, +0x0001154d, +0x0001154c, +0x0001154b, +0x0001154a, +0x00011548, +0x00011547, +0x00011545, +0x00011544, +0x00011543, +0x00011542, +0x00011541, +0x00011540, +0x0001153f, +0x0001153e, +0x0001153d, +0x0001153c, +0x0001153a, +0x00011539, +0x00011537, +0x00011536, +0x00011535, +0x00011534, +0x00011533, +0x00011532, +0x00011531, +0x00011530, +0x0001152f, +0x0001152d, +0x0001152c, +0x0001152b, +0x00011529, +0x00011528, +0x00011527, +0x00011526, +0x00011525, +0x00011524, +0x00011523, +0x00011522, +0x00011520, +0x0001151f, +0x0001151e, +0x0001151d, +0x0001151c, +0x0001151a, +0x00011519, +0x00011518, +0x00011517, +0x00011516, +0x00011515, +0x00011513, +0x00011512, +0x00011511, +0x00011510, +0x0001150f, +0x0001150e, +0x0001150c, +0x0001150b, +0x0001150a, +0x00011509, +0x00011508, +0x00011506, +0x00011505, +0x00011504, +0x00011503, +0x00011502, +0x00011501, +0x00011500, +0x000114fe, +0x000114fd, +0x000114fc, +0x000114fb, +0x000114fa, +0x000114f8, +0x000114f7, +0x000114f6, +0x000114f5, +0x000114f4, +0x000114f3, +0x000114f2, +0x000114f0, +0x000114ef, +0x000114ee, +0x000114ed, +0x000114eb, +0x000114ea, +0x000114e9, +0x000114e8, +0x000114e7, +0x000114e6, +0x000114e5, +0x000114e4, +0x000114e2, +0x000114e1, +0x000114e0, +0x000114de, +0x000114dd, +0x000114dc, +0x000114db, +0x000114da, +0x000114d9, +0x000114d8, +0x000114d7, +0x000114d6, +0x000114d4, +0x000114d3, +0x000114d1, +0x000114d0, +0x000114cf, +0x000114ce, +0x000114cd, +0x000114cc, +0x000114cb, +0x000114ca, +0x000114c9, +0x000114c8, +0x000114c7, +0x000114c4, +0x000114c3, +0x000114c2, +0x000114c1, +0x000114c0, +0x000114bf, +0x000114be, +0x000114bd, +0x000114bc, +0x000114bb, +0x000114ba, +0x000114b9, +0x000114b6, +0x000114b5, +0x000114b4, +0x000114b3, +0x000114b2, +0x000114b1, +0x000114b0, +0x000114af, +0x000114ae, +0x000114ad, +0x000114ac, +0x000114ab, +0x000114a8, +0x000114a7, +0x000114a6, +0x000114a5, +0x000114a4, +0x000114a3, +0x000114a2, +0x000114a1, +0x000114a0, +0x0001149f, +0x0001149e, +0x0001149c, +0x0001149a, +0x00011499, +0x00011498, +0x00011497, +0x00011496, +0x00011495, +0x00011494, +0x00011493, +0x00011492, +0x00011491, +0x0001148f, +0x0001148e, +0x0001148c, +0x0001148b, +0x0001148a, +0x00011489, +0x00011488, +0x00011487, +0x00011486, +0x00011485, +0x00011484, +0x00011482, +0x00011481, +0x00011480, +0x0001147f, +0x0001147d, +0x0001147c, +0x0001147b, +0x0001147a, +0x00011479, +0x00011478, +0x00011477, +0x00011476, +0x00011474, +0x00011473, +0x00011472, +0x00011471, +0x0001146f, +0x0001146e, +0x0001146d, +0x0001146c, +0x0001146b, +0x0001146a, +0x00011469, +0x00011467, +0x00011466, +0x00011465, +0x00011464, +0x00011463, +0x00011461, +0x00011460, +0x0001145f, +0x0001145e, +0x0001145d, +0x0001145c, +0x0001145a, +0x00011459, +0x00011458, +0x00011457, +0x00011456, +0x00011455, +0x00011453, +0x00011452, +0x00011451, +0x00011450, +0x0001144f, +0x0001144d, +0x0001144c, +0x0001144b, +0x0001144a, +0x00011449, +0x00011448, +0x00011447, +0x00011445, +0x00011444, +0x00011443, +0x00011442, +0x00011440, +0x0001143f, +0x0001143e, +0x0001143d, +0x0001143c, +0x0001143b, +0x0001143a, +0x00011439, +0x00011438, +0x00011437, +0x00011436, +0x00011435, +0x00011433, +0x00011432, +0x00011431, +0x0001142f, +0x0001142e, +0x0001142d, +0x0001142c, +0x0001142b, +0x0001142a, +0x00011429, +0x00011428, +0x00011427, +0x00011426, +0x00011424, +0x00011423, +0x00011421, +0x00011420, +0x0001141f, +0x0001141e, +0x0001141d, +0x0001141c, +0x0001141b, +0x0001141a, +0x00011419, +0x00011418, +0x00011417, +0x00011414, +0x00011413, +0x00011412, +0x00011411, +0x00011410, +0x0001140f, +0x0001140e, +0x0001140d, +0x0001140c, +0x0001140b, +0x0001140a, +0x00011409, +0x00011406, +0x00011405, +0x00011404, +0x00011403, +0x00011402, +0x00011401, +0x00011400, +0x000113ff, +0x000113fe, +0x000113fd, +0x000113fc, +0x000113fb, +0x000113fa, +0x000113f7, +0x000113f6, +0x000113f5, +0x000113f4, +0x000113f3, +0x000113f2, +0x000113f1, +0x000113f0, +0x000113ef, +0x000113ee, +0x000113ed, +0x000113ec, +0x000113ea, +0x000113e8, +0x000113e7, +0x000113e6, +0x000113e5, +0x000113e4, +0x000113e3, +0x000113e2, +0x000113e1, +0x000113e0, +0x000113df, +0x000113de, +0x000113dc, +0x000113db, +0x000113d9, +0x000113d8, +0x000113d7, +0x000113d6, +0x000113d5, +0x000113d4, +0x000113d3, +0x000113d2, +0x000113d1, +0x000113cf, +0x000113ce, +0x000113cd, +0x000113cc, +0x000113ca, +0x000113c9, +0x000113c8, +0x000113c7, +0x000113c6, +0x000113c5, +0x000113c4, +0x000113c3, +0x000113c1, +0x000113c0, +0x000113bf, +0x000113be, +0x000113bc, +0x000113bb, +0x000113ba, +0x000113b9, +0x000113b8, +0x000113b7, +0x000113b6, +0x000113b5, +0x000113b3, +0x000113b2, +0x000113b1, +0x000113b0, +0x000113af, +0x000113ad, +0x000113ac, +0x000113ab, +0x000113aa, +0x000113a9, +0x000113a8, +0x000113a7, +0x000113a5, +0x000113a4, +0x000113a3, +0x000113a1, +0x000113a0, +0x0001139f, +0x0001139e, +0x0001139d, +0x0001139c, +0x0001139b, +0x0001139a, +0x00011399, +0x00011397, +0x00011396, +0x00011395, +0x00011394, +0x00011392, +0x00011391, +0x00011390, +0x0001138f, +0x0001138e, +0x0001138d, +0x0001138c, +0x0001138b, +0x0001138a, +0x00011388, +0x00011387, +0x00011386, +0x00011385, +0x00011384, +0x00011382, +0x00011381, +0x00011380, +0x0001137f, +0x0001137e, +0x0001137d, +0x0001137c, +0x0001137a, +0x00011379, +0x00011378, +0x00011377, +0x00011376, +0x00011375, +0x00011373, +0x00011372, +0x00011371, +0x00011370, +0x0001136f, +0x0001136e, +0x0001136c, +0x0001136b, +0x0001136a, +0x00011369, +0x00011368, +0x00011367, +0x00011366, +0x00011365, +0x00011363, +0x00011362, +0x00011361, +0x00011360, +0x0001135f, +0x0001135d, +0x0001135c, +0x0001135b, +0x0001135a, +0x00011359, +0x00011358, +0x00011357, +0x00011356, +0x00011354, +0x00011353, +0x00011352, +0x00011351, +0x0001134f, +0x0001134e, +0x0001134d, +0x0001134c, +0x0001134b, +0x0001134a, +0x00011349, +0x00011348, +0x00011347, +0x00011346, +0x00011344, +0x00011343, +0x00011342, +0x00011340, +0x0001133f, +0x0001133e, +0x0001133d, +0x0001133c, +0x0001133b, +0x0001133a, +0x00011339, +0x00011338, +0x00011337, +0x00011335, +0x00011334, +0x00011332, +0x00011331, +0x00011330, +0x0001132f, +0x0001132e, +0x0001132d, +0x0001132c, +0x0001132b, +0x0001132a, +0x00011329, +0x00011328, +0x00011327, +0x00011325, +0x00011323, +0x00011322, +0x00011321, +0x00011320, +0x0001131f, +0x0001131e, +0x0001131d, +0x0001131c, +0x0001131b, +0x0001131a, +0x00011319, +0x00011318, +0x00011315, +0x00011314, +0x00011313, +0x00011312, +0x00011311, +0x00011310, +0x0001130f, +0x0001130e, +0x0001130d, +0x0001130c, +0x0001130b, +0x0001130a, +0x00011309, +0x00011308, +0x00011305, +0x00011304, +0x00011303, +0x00011302, +0x00011301, +0x00011300, +0x000112ff, +0x000112fe, +0x000112fd, +0x000112fc, +0x000112fb, +0x000112fa, +0x000112f8, +0x000112f6, +0x000112f5, +0x000112f4, +0x000112f3, +0x000112f2, +0x000112f1, +0x000112f0, +0x000112ef, +0x000112ee, +0x000112ed, +0x000112ec, +0x000112eb, +0x000112e9, +0x000112e8, +0x000112e6, +0x000112e5, +0x000112e4, +0x000112e3, +0x000112e2, +0x000112e1, +0x000112e0, +0x000112df, +0x000112de, +0x000112dd, +0x000112db, +0x000112da, +0x000112d9, +0x000112d7, +0x000112d6, +0x000112d5, +0x000112d4, +0x000112d3, +0x000112d2, +0x000112d1, +0x000112d0, +0x000112cf, +0x000112ce, +0x000112cc, +0x000112cb, +0x000112ca, +0x000112c9, +0x000112c7, +0x000112c6, +0x000112c5, +0x000112c4, +0x000112c3, +0x000112c2, +0x000112c1, +0x000112c0, +0x000112be, +0x000112bd, +0x000112bc, +0x000112bb, +0x000112ba, +0x000112b8, +0x000112b7, +0x000112b6, +0x000112b5, +0x000112b4, +0x000112b3, +0x000112b2, +0x000112b1, +0x000112af, +0x000112ae, +0x000112ad, +0x000112ac, +0x000112ab, +0x000112a9, +0x000112a8, +0x000112a7, +0x000112a6, +0x000112a5, +0x000112a4, +0x000112a3, +0x000112a1, +0x000112a0, +0x0001129f, +0x0001129e, +0x0001129d, +0x0001129c, +0x0001129b, +0x00011299, +0x00011298, +0x00011297, +0x00011296, +0x00011295, +0x00011294, +0x00011292, +0x00011291, +0x00011290, +0x0001128f, +0x0001128e, +0x0001128d, +0x0001128c, +0x0001128a, +0x00011289, +0x00011288, +0x00011287, +0x00011286, +0x00011284, +0x00011283, +0x00011282, +0x00011281, +0x00011280, +0x0001127f, +0x0001127d, +0x0001127c, +0x0001127b, +0x0001127a, +0x00011279, +0x00011278, +0x00011277, +0x00011276, +0x00011275, +0x00011274, +0x00011273, +0x00011271, +0x00011270, +0x0001126f, +0x0001126d, +0x0001126c, +0x0001126b, +0x0001126a, +0x00011269, +0x00011268, +0x00011267, +0x00011266, +0x00011265, +0x00011264, +0x00011262, +0x00011261, +0x00011260, +0x0001125f, +0x0001125d, +0x0001125c, +0x0001125b, +0x0001125a, +0x00011259, +0x00011258, +0x00011257, +0x00011256, +0x00011255, +0x00011253, +0x00011252, +0x00011251, +0x00011250, +0x0001124f, +0x0001124d, +0x0001124c, +0x0001124b, +0x0001124a, +0x00011249, +0x00011248, +0x00011247, +0x00011246, +0x00011245, +0x00011243, +0x00011242, +0x00011241, +0x00011240, +0x0001123f, +0x0001123d, +0x0001123c, +0x0001123b, +0x0001123a, +0x00011239, +0x00011238, +0x00011237, +0x00011236, +0x00011234, +0x00011233, +0x00011232, +0x00011231, +0x00011230, +0x0001122f, +0x0001122e, +0x0001122c, +0x0001122b, +0x0001122a, +0x00011229, +0x00011228, +0x00011227, +0x00011225, +0x00011224, +0x00011223, +0x00011222, +0x00011221, +0x00011220, +0x0001121f, +0x0001121e, +0x0001121c, +0x0001121b, +0x0001121a, +0x00011219, +0x00011218, +0x00011216, +0x00011215, +0x00011214, +0x00011213, +0x00011212, +0x00011211, +0x00011210, +0x0001120f, +0x0001120e, +0x0001120c, +0x0001120b, +0x0001120a, +0x00011209, +0x00011207, +0x00011206, +0x00011205, +0x00011204, +0x00011203, +0x00011202, +0x00011201, +0x00011200, +0x000111ff, +0x000111fe, +0x000111fc, +0x000111fb, +0x000111fa, +0x000111f9, +0x000111f7, +0x000111f6, +0x000111f5, +0x000111f4, +0x000111f3, +0x000111f2, +0x000111f1, +0x000111f0, +0x000111ef, +0x000111ee, +0x000111ed, +0x000111eb, +0x000111ea, +0x000111e8, +0x000111e7, +0x000111e6, +0x000111e5, +0x000111e4, +0x000111e3, +0x000111e2, +0x000111e1, +0x000111e0, +0x000111df, +0x000111de, +0x000111dd, +0x000111db, +0x000111d9, +0x000111d8, +0x000111d7, +0x000111d6, +0x000111d5, +0x000111d4, +0x000111d3, +0x000111d2, +0x000111d1, +0x000111d0, +0x000111cf, +0x000111ce, +0x000111cd, +0x000111ca, +0x000111c9, +0x000111c8, +0x000111c7, +0x000111c6, +0x000111c5, +0x000111c4, +0x000111c3, +0x000111c2, +0x000111c1, +0x000111c0, +0x000111bf, +0x000111be, +0x000111bd, +0x000111ba, +0x000111b9, +0x000111b8, +0x000111b7, +0x000111b6, +0x000111b5, +0x000111b4, +0x000111b3, +0x000111b2, +0x000111b1, +0x000111b0, +0x000111af, +0x000111ae, +0x000111ad, +0x000111aa, +0x000111a9, +0x000111a8, +0x000111a7, +0x000111a6, +0x000111a5, +0x000111a4, +0x000111a3, +0x000111a2, +0x000111a1, +0x000111a0, +0x0001119f, +0x0001119e, +0x0001119c, +0x0001119b, +0x00011199, +0x00011198, +0x00011197, +0x00011196, +0x00011195, +0x00011194, +0x00011193, +0x00011192, +0x00011191, +0x00011190, +0x0001118f, +0x0001118d, +0x0001118c, +0x0001118b, +0x00011189, +0x00011188, +0x00011187, +0x00011186, +0x00011185, +0x00011184, +0x00011183, +0x00011182, +0x00011181, +0x00011180, +0x0001117e, +0x0001117d, +0x0001117c, +0x0001117b, +0x00011179, +0x00011178, +0x00011177, +0x00011176, +0x00011175, +0x00011174, +0x00011173, +0x00011172, +0x00011171, +0x00011170, +0x0001116e, +0x0001116d, +0x0001116c, +0x0001116b, +0x00011169, +0x00011168, +0x00011167, +0x00011166, +0x00011165, +0x00011164, +0x00011163, +0x00011162, +0x00011161, +0x0001115f, +0x0001115e, +0x0001115d, +0x0001115c, +0x0001115b, +0x0001115a, +0x00011159, +0x00011157, +0x00011156, +0x00011155, +0x00011154, +0x00011153, +0x00011152, +0x00011151, +0x00011150, +0x0001114f, +0x0001114e, +0x0001114c, +0x0001114b, +0x0001114a, +0x00011149, +0x00011147, +0x00011146, +0x00011145, +0x00011144, +0x00011143, +0x00011142, +0x00011141, +0x00011140, +0x0001113f, +0x0001113e, +0x0001113d, +0x0001113b, +0x0001113a, +0x00011139, +0x00011137, +0x00011136, +0x00011135, +0x00011134, +0x00011133, +0x00011132, +0x00011131, +0x00011130, +0x0001112f, +0x0001112e, +0x0001112d, +0x0001112c, +0x0001112a, +0x00011129, +0x00011127, +0x00011126, +0x00011125, +0x00011124, +0x00011123, +0x00011122, +0x00011121, +0x00011120, +0x0001111f, +0x0001111e, +0x0001111d, +0x0001111c, +0x0001111b, +0x00011119, +0x00011117, +0x00011116, +0x00011115, +0x00011114, +0x00011113, +0x00011112, +0x00011111, +0x00011110, +0x0001110f, +0x0001110e, +0x0001110d, +0x0001110c, +0x0001110b, +0x0001110a, +0x00011107, +0x00011106, +0x00011105, +0x00011104, +0x00011103, +0x00011102, +0x00011101, +0x00011100, +0x000110ff, +0x000110fe, +0x000110fd, +0x000110fc, +0x000110fb, +0x000110fa, +0x000110f9, +0x000110f6, +0x000110f5, +0x000110f4, +0x000110f3, +0x000110f2, +0x000110f1, +0x000110f0, +0x000110ef, +0x000110ee, +0x000110ed, +0x000110ec, +0x000110eb, +0x000110ea, +0x000110e9, +0x000110e7, +0x000110e5, +0x000110e4, +0x000110e3, +0x000110e2, +0x000110e1, +0x000110e0, +0x000110df, +0x000110de, +0x000110dd, +0x000110dc, +0x000110db, +0x000110da, +0x000110d9, +0x000110d7, +0x000110d6, +0x000110d4, +0x000110d3, +0x000110d2, +0x000110d1, +0x000110d0, +0x000110cf, +0x000110ce, +0x000110cd, +0x000110cc, +0x000110cb, +0x000110ca, +0x000110c8, +0x000110c7, +0x000110c6, +0x000110c5, +0x000110c4, +0x000110c2, +0x000110c1, +0x000110c0, +0x000110bf, +0x000110bd, +0x000110bc, +0x000110bb, +0x000110ba, +0x000110b9, +0x000110b8, +0x000110b7, +0x000110b6, +0x000110b5, +0x000110b4, +0x000110b3, +0x000110b1, +0x000110b0, +0x000110af, +0x000110ae, +0x000110ad, +0x000110ab, +0x000110aa, +0x000110a9, +0x000110a8, +0x000110a7, +0x000110a6, +0x000110a5, +0x000110a4, +0x000110a3, +0x000110a2, +0x000110a0, +0x0001109f, +0x0001109e, +0x0001109d, +0x0001109c, +0x0001109b, +0x00011099, +0x00011098, +0x00011097, +0x00011096, +0x00011095, +0x00011094, +0x00011093, +0x00011092, +0x00011091, +0x0001108f, +0x0001108e, +0x0001108d, +0x0001108c, +0x0001108b, +0x0001108a, +0x00011089, +0x00011087, +0x00011086, +0x00011085, +0x00011084, +0x00011083, +0x00011082, +0x00011081, +0x00011080, +0x0001107e, +0x0001107d, +0x0001107c, +0x0001107b, +0x0001107a, +0x00011079, +0x00011078, +0x00011077, +0x00011075, +0x00011074, +0x00011073, +0x00011072, +0x00011071, +0x00011070, +0x0001106f, +0x0001106d, +0x0001106c, +0x0001106b, +0x0001106a, +0x00011069, +0x00011068, +0x00011067, +0x00011066, +0x00011065, +0x00011063, +0x00011062, +0x00011061, +0x00011060, +0x0001105f, +0x0001105e, +0x0001105c, +0x0001105b, +0x0001105a, +0x00011059, +0x00011058, +0x00011057, +0x00011056, +0x00011055, +0x00011054, +0x00011053, +0x00011051, +0x00011050, +0x0001104f, +0x0001104e, +0x0001104d, +0x0001104b, +0x0001104a, +0x00011049, +0x00011048, +0x00011047, +0x00011046, +0x00011045, +0x00011044, +0x00011043, +0x00011042, +0x00011041, +0x0001103f, +0x0001103e, +0x0001103d, +0x0001103c, +0x0001103a, +0x00011039, +0x00011038, +0x00011037, +0x00011036, +0x00011035, +0x00011034, +0x00011033, +0x00011032, +0x00011031, +0x00011030, +0x0001102f, +0x0001102d, +0x0001102c, +0x0001102b, +0x00011029, +0x00011028, +0x00011027, +0x00011026, +0x00011025, +0x00011024, +0x00011023, +0x00011022, +0x00011021, +0x00011020, +0x0001101f, +0x0001101e, +0x0001101d, +0x0001101b, +0x0001101a, +0x00011018, +0x00011017, +0x00011016, +0x00011015, +0x00011014, +0x00011013, +0x00011012, +0x00011011, +0x00011010, +0x0001100f, +0x0001100e, +0x0001100d, +0x0001100c, +0x0001100b, +0x00011009, +0x00011007, +0x00011006, +0x00011005, +0x00011004, +0x00011003, +0x00011002, +0x00011001, +0x00011000, +0x00010fff, +0x00010ffe, +0x00010ffd, +0x00010ffc, +0x00010ffb, +0x00010ffa, +0x00010ff9, +0x00010ff6, +0x00010ff5, +0x00010ff4, +0x00010ff3, +0x00010ff2, +0x00010ff1, +0x00010ff0, +0x00010fef, +0x00010fee, +0x00010fed, +0x00010fec, +0x00010feb, +0x00010fea, +0x00010fe9, +0x00010fe8, +0x00010fe7, +0x00010fe4, +0x00010fe3, +0x00010fe2, +0x00010fe1, +0x00010fe0, +0x00010fdf, +0x00010fde, +0x00010fdd, +0x00010fdc, +0x00010fdb, +0x00010fda, +0x00010fd9, +0x00010fd8, +0x00010fd7, +0x00010fd6, +0x00010fd4, +0x00010fd2, +0x00010fd1, +0x00010fd0, +0x00010fcf, +0x00010fce, +0x00010fcd, +0x00010fcc, +0x00010fcb, +0x00010fca, +0x00010fc9, +0x00010fc8, +0x00010fc7, +0x00010fc6, +0x00010fc5, +0x00010fc3, +0x00010fc2, +0x00010fc0, +0x00010fbf, +0x00010fbe, +0x00010fbd, +0x00010fbc, +0x00010fbb, +0x00010fba, +0x00010fb9, +0x00010fb8, +0x00010fb7, +0x00010fb6, +0x00010fb5, +0x00010fb4, +0x00010fb2, +0x00010fb1, +0x00010fb0, +0x00010fae, +0x00010fad, +0x00010fac, +0x00010fab, +0x00010faa, +0x00010fa9, +0x00010fa8, +0x00010fa6, +0x00010fa5, +0x00010fa4, +0x00010fa3, +0x00010fa2, +0x00010fa1, +0x00010fa0, +0x00010f9f, +0x00010f9e, +0x00010f9d, +0x00010f9c, +0x00010f9b, +0x00010f99, +0x00010f97, +0x00010f96, +0x00010f95, +0x00010f94, +0x00010f93, +0x00010f92, +0x00010f91, +0x00010f90, +0x00010f8f, +0x00010f8e, +0x00010f8d, +0x00010f8c, +0x00010f8b, +0x00010f8a, +0x00010f89, +0x00010f88, +0x00010f86, +0x00010f84, +0x00010f83, +0x00010f82, +0x00010f81, +0x00010f80, +0x00010f7f, +0x00010f7e, +0x00010f7d, +0x00010f7c, +0x00010f7b, +0x00010f7a, +0x00010f79, +0x00010f78, +0x00010f77, +0x00010f76, +0x00010f74, +0x00010f73, +0x00010f71, +0x00010f70, +0x00010f6f, +0x00010f6e, +0x00010f6d, +0x00010f6c, +0x00010f6b, +0x00010f6a, +0x00010f69, +0x00010f68, +0x00010f67, +0x00010f66, +0x00010f65, +0x00010f64, +0x00010f62, +0x00010f61, +0x00010f60, +0x00010f5f, +0x00010f5d, +0x00010f5c, +0x00010f5b, +0x00010f5a, +0x00010f59, +0x00010f58, +0x00010f57, +0x00010f56, +0x00010f55, +0x00010f54, +0x00010f53, +0x00010f52, +0x00010f50, +0x00010f4f, +0x00010f4e, +0x00010f4d, +0x00010f4c, +0x00010f4a, +0x00010f49, +0x00010f48, +0x00010f47, +0x00010f46, +0x00010f45, +0x00010f44, +0x00010f43, +0x00010f42, +0x00010f41, +0x00010f40, +0x00010f3e, +0x00010f3d, +0x00010f3c, +0x00010f3b, +0x00010f3a, +0x00010f39, +0x00010f37, +0x00010f36, +0x00010f35, +0x00010f34, +0x00010f33, +0x00010f32, +0x00010f31, +0x00010f30, +0x00010f2f, +0x00010f2e, +0x00010f2c, +0x00010f2b, +0x00010f2a, +0x00010f29, +0x00010f28, +0x00010f27, +0x00010f26, +0x00010f24, +0x00010f23, +0x00010f22, +0x00010f21, +0x00010f20, +0x00010f1f, +0x00010f1e, +0x00010f1d, +0x00010f1c, +0x00010f1a, +0x00010f19, +0x00010f18, +0x00010f17, +0x00010f16, +0x00010f15, +0x00010f14, +0x00010f13, +0x00010f11, +0x00010f10, +0x00010f0f, +0x00010f0e, +0x00010f0d, +0x00010f0c, +0x00010f0b, +0x00010f0a, +0x00010f08, +0x00010f07, +0x00010f06, +0x00010f05, +0x00010f04, +0x00010f03, +0x00010f02, +0x00010f01, +0x00010f00, +0x00010efe, +0x00010efd, +0x00010efc, +0x00010efb, +0x00010efa, +0x00010ef9, +0x00010ef8, +0x00010ef6, +0x00010ef5, +0x00010ef4, +0x00010ef3, +0x00010ef2, +0x00010ef1, +0x00010ef0, +0x00010eef, +0x00010eee, +0x00010eed, +0x00010eeb, +0x00010eea, +0x00010ee9, +0x00010ee8, +0x00010ee7, +0x00010ee6, +0x00010ee4, +0x00010ee3, +0x00010ee2, +0x00010ee1, +0x00010ee0, +0x00010edf, +0x00010ede, +0x00010edd, +0x00010edc, +0x00010edb, +0x00010eda, +0x00010ed8, +0x00010ed7, +0x00010ed6, +0x00010ed5, +0x00010ed4, +0x00010ed2, +0x00010ed1, +0x00010ed0, +0x00010ecf, +0x00010ece, +0x00010ecd, +0x00010ecc, +0x00010ecb, +0x00010eca, +0x00010ec9, +0x00010ec8, +0x00010ec7, +0x00010ec5, +0x00010ec4, +0x00010ec3, +0x00010ec2, +0x00010ec0, +0x00010ebf, +0x00010ebe, +0x00010ebd, +0x00010ebc, +0x00010ebb, +0x00010eba, +0x00010eb9, +0x00010eb8, +0x00010eb7, +0x00010eb6, +0x00010eb5, +0x00010eb4, +0x00010eb2, +0x00010eb1, +0x00010eb0, +0x00010eae, +0x00010ead, +0x00010eac, +0x00010eab, +0x00010eaa, +0x00010ea9, +0x00010ea8, +0x00010ea7, +0x00010ea6, +0x00010ea5, +0x00010ea4, +0x00010ea3, +0x00010ea2, +0x00010ea1, +0x00010e9f, +0x00010e9e, +0x00010e9c, +0x00010e9b, +0x00010e9a, +0x00010e99, +0x00010e98, +0x00010e97, +0x00010e96, +0x00010e95, +0x00010e94, +0x00010e93, +0x00010e92, +0x00010e91, +0x00010e90, +0x00010e8f, +0x00010e8e, +0x00010e8c, +0x00010e8a, +0x00010e89, +0x00010e88, +0x00010e88, +0x00010e86, +0x00010e85, +0x00010e84, +0x00010e83, +0x00010e82, +0x00010e81, +0x00010e80, +0x00010e7f, +0x00010e7e, +0x00010e7c, +0x00010e7b, +0x00010e7a, +0x00010e79, +0x00010e78, +0x00010e77, +0x00010e76, +0x00010e75, +0x00010e74, +0x00010e72, +0x00010e71, +0x00010e70, +0x00010e6f, +0x00010e6e, +0x00010e6d, +0x00010e6c, +0x00010e6b, +0x00010e69, +0x00010e68, +0x00010e67, +0x00010e66, +0x00010e65, +0x00010e64, +0x00010e63, +0x00010e62, +0x00010e61, +0x00010e60, +0x00010e5e, +0x00010e5d, +0x00010e5c, +0x00010e5b, +0x00010e5a, +0x00010e59, +0x00010e58, +0x00010e56, +0x00010e55, +0x00010e54, +0x00010e53, +0x00010e52, +0x00010e51, +0x00010e50, +0x00010e4f, +0x00010e4e, +0x00010e4d, +0x00010e4c, +0x00010e4a, +0x00010e49, +0x00010e48, +0x00010e47, +0x00010e46, +0x00010e45, +0x00010e44, +0x00010e42, +0x00010e41, +0x00010e40, +0x00010e3f, +0x00010e3e, +0x00010e3d, +0x00010e3c, +0x00010e3b, +0x00010e3a, +0x00010e39, +0x00010e38, +0x00010e37, +0x00010e35, +0x00010e34, +0x00010e33, +0x00010e32, +0x00010e31, +0x00010e2f, +0x00010e2e, +0x00010e2d, +0x00010e2c, +0x00010e2b, +0x00010e2a, +0x00010e29, +0x00010e28, +0x00010e27, +0x00010e26, +0x00010e25, +0x00010e24, +0x00010e23, +0x00010e21, +0x00010e20, +0x00010e1f, +0x00010e1e, +0x00010e1c, +0x00010e1b, +0x00010e1a, +0x00010e19, +0x00010e18, +0x00010e17, +0x00010e16, +0x00010e15, +0x00010e14, +0x00010e13, +0x00010e12, +0x00010e11, +0x00010e10, +0x00010e0f, +0x00010e0d, +0x00010e0c, +0x00010e0b, +0x00010e09, +0x00010e08, +0x00010e07, +0x00010e06, +0x00010e05, +0x00010e04, +0x00010e03, +0x00010e02, +0x00010e01, +0x00010e00, +0x00010dff, +0x00010dfe, +0x00010dfd, +0x00010dfc, +0x00010dfb, +0x00010dfa, +0x00010df8, +0x00010df7, +0x00010df5, +0x00010df4, +0x00010df3, +0x00010df2, +0x00010df1, +0x00010df0, +0x00010def, +0x00010dee, +0x00010ded, +0x00010dec, +0x00010deb, +0x00010dea, +0x00010de9, +0x00010de8, +0x00010de7, +0x00010de6, +0x00010de4, +0x00010de2, +0x00010de1, +0x00010de0, +0x00010ddf, +0x00010dde, +0x00010ddd, +0x00010ddc, +0x00010ddb, +0x00010dda, +0x00010dd9, +0x00010dd8, +0x00010dd7, +0x00010dd6, +0x00010dd5, +0x00010dd4, +0x00010dd3, +0x00010dd2, +0x00010dcf, +0x00010dce, +0x00010dcd, +0x00010dcc, +0x00010dcb, +0x00010dca, +0x00010dc9, +0x00010dc8, +0x00010dc7, +0x00010dc6, +0x00010dc5, +0x00010dc4, +0x00010dc3, +0x00010dc2, +0x00010dc1, +0x00010dc0, +0x00010dbf, +0x00010dbe, +0x00010dbb, +0x00010dba, +0x00010db9, +0x00010db8, +0x00010db7, +0x00010db6, +0x00010db5, +0x00010db4, +0x00010db3, +0x00010db2, +0x00010db1, +0x00010db0, +0x00010daf, +0x00010dae, +0x00010dad, +0x00010dac, +0x00010dab, +0x00010daa, +0x00010da8, +0x00010da6, +0x00010da5, +0x00010da4, +0x00010da3, +0x00010da2, +0x00010da1, +0x00010da0, +0x00010d9f, +0x00010d9e, +0x00010d9d, +0x00010d9c, +0x00010d9b, +0x00010d9a, +0x00010d99, +0x00010d98, +0x00010d97, +0x00010d95, +0x00010d94, +0x00010d92, +0x00010d91, +0x00010d90, +0x00010d8f, +0x00010d8e, +0x00010d8d, +0x00010d8c, +0x00010d8b, +0x00010d8a, +0x00010d89, +0x00010d88, +0x00010d87, +0x00010d86, +0x00010d85, +0x00010d84, +0x00010d82, +0x00010d81, +0x00010d80, +0x00010d7e, +0x00010d7d, +0x00010d7c, +0x00010d7b, +0x00010d7a, +0x00010d79, +0x00010d78, +0x00010d77, +0x00010d76, +0x00010d75, +0x00010d74, +0x00010d73, +0x00010d72, +0x00010d71, +0x00010d70, +0x00010d6e, +0x00010d6d, +0x00010d6c, +0x00010d6b, +0x00010d6a, +0x00010d69, +0x00010d68, +0x00010d67, +0x00010d65, +0x00010d64, +0x00010d63, +0x00010d62, +0x00010d61, +0x00010d60, +0x00010d5f, +0x00010d5e, +0x00010d5c, +0x00010d5b, +0x00010d5a, +0x00010d59, +0x00010d58, +0x00010d57, +0x00010d56, +0x00010d55, +0x00010d54, +0x00010d53, +0x00010d52, +0x00010d51, +0x00010d4f, +0x00010d4e, +0x00010d4d, +0x00010d4c, +0x00010d4b, +0x00010d4a, +0x00010d49, +0x00010d47, +0x00010d46, +0x00010d45, +0x00010d44, +0x00010d43, +0x00010d42, +0x00010d41, +0x00010d40, +0x00010d3f, +0x00010d3e, +0x00010d3d, +0x00010d3c, +0x00010d3b, +0x00010d39, +0x00010d38, +0x00010d37, +0x00010d36, +0x00010d35, +0x00010d33, +0x00010d32, +0x00010d31, +0x00010d30, +0x00010d2f, +0x00010d2e, +0x00010d2d, +0x00010d2c, +0x00010d2b, +0x00010d2a, +0x00010d29, +0x00010d28, +0x00010d27, +0x00010d26, +0x00010d25, +0x00010d23, +0x00010d22, +0x00010d21, +0x00010d20, +0x00010d1e, +0x00010d1d, +0x00010d1c, +0x00010d1b, +0x00010d1a, +0x00010d19, +0x00010d18, +0x00010d17, +0x00010d16, +0x00010d15, +0x00010d14, +0x00010d13, +0x00010d12, +0x00010d11, +0x00010d10, +0x00010d0e, +0x00010d0d, +0x00010d0c, +0x00010d0b, +0x00010d09, +0x00010d08, +0x00010d07, +0x00010d06, +0x00010d05, +0x00010d04, +0x00010d03, +0x00010d02, +0x00010d01, +0x00010d00, +0x00010cff, +0x00010cfe, +0x00010cfd, +0x00010cfc, +0x00010cfb, +0x00010cfa, +0x00010cf8, +0x00010cf7, +0x00010cf5, +0x00010cf4, +0x00010cf3, +0x00010cf2, +0x00010cf1, +0x00010cf0, +0x00010cef, +0x00010cee, +0x00010ced, +0x00010cec, +0x00010ceb, +0x00010cea, +0x00010ce9, +0x00010ce8, +0x00010ce7, +0x00010ce6, +0x00010ce5, +0x00010ce4, +0x00010ce2, +0x00010ce0, +0x00010cdf, +0x00010cde, +0x00010cdd, +0x00010cdc, +0x00010cdb, +0x00010cda, +0x00010cd9, +0x00010cd8, +0x00010cd7, +0x00010cd6, +0x00010cd5, +0x00010cd4, +0x00010cd3, +0x00010cd2, +0x00010cd1, +0x00010cd0, +0x00010ccf, +0x00010ccd, +0x00010ccb, +0x00010cca, +0x00010cc9, +0x00010cc8, +0x00010cc7, +0x00010cc6, +0x00010cc5, +0x00010cc4, +0x00010cc3, +0x00010cc2, +0x00010cc1, +0x00010cc0, +0x00010cbf, +0x00010cbe, +0x00010cbd, +0x00010cbc, +0x00010cbb, +0x00010cba, +0x00010cb9, +0x00010cb6, +0x00010cb5, +0x00010cb4, +0x00010cb3, +0x00010cb2, +0x00010cb1, +0x00010cb0, +0x00010caf, +0x00010cae, +0x00010cad, +0x00010cac, +0x00010cab, +0x00010caa, +0x00010ca9, +0x00010ca8, +0x00010ca7, +0x00010ca6, +0x00010ca5, +0x00010ca4, +0x00010ca2, +0x00010ca0, +0x00010c9f, +0x00010c9e, +0x00010c9d, +0x00010c9c, +0x00010c9b, +0x00010c9a, +0x00010c99, +0x00010c98, +0x00010c97, +0x00010c96, +0x00010c95, +0x00010c94, +0x00010c93, +0x00010c92, +0x00010c91, +0x00010c90, +0x00010c8f, +0x00010c8d, +0x00010c8b, +0x00010c8a, +0x00010c89, +0x00010c88, +0x00010c87, +0x00010c86, +0x00010c85, +0x00010c84, +0x00010c83, +0x00010c82, +0x00010c81, +0x00010c80, +0x00010c7f, +0x00010c7e, +0x00010c7d, +0x00010c7c, +0x00010c7b, +0x00010c7a, +0x00010c78, +0x00010c77, +0x00010c75, +0x00010c74, +0x00010c73, +0x00010c72, +0x00010c71, +0x00010c70, +0x00010c6f, +0x00010c6e, +0x00010c6d, +0x00010c6c, +0x00010c6b, +0x00010c6a, +0x00010c69, +0x00010c68, +0x00010c67, +0x00010c66, +0x00010c64, +0x00010c63, +0x00010c62, +0x00010c61, +0x00010c5f, +0x00010c5e, +0x00010c5d, +0x00010c5c, +0x00010c5b, +0x00010c5a, +0x00010c59, +0x00010c58, +0x00010c57, +0x00010c56, +0x00010c55, +0x00010c54, +0x00010c53, +0x00010c52, +0x00010c51, +0x00010c50, +0x00010c4f, +0x00010c4d, +0x00010c4c, +0x00010c4b, +0x00010c4a, +0x00010c49, +0x00010c48, +0x00010c47, +0x00010c46, +0x00010c44, +0x00010c43, +0x00010c42, +0x00010c41, +0x00010c40, +0x00010c3f, +0x00010c3e, +0x00010c3d, +0x00010c3c, +0x00010c3b, +0x00010c3a, +0x00010c39, +0x00010c37, +0x00010c36, +0x00010c35, +0x00010c34, +0x00010c33, +0x00010c32, +0x00010c31, +0x00010c30, +0x00010c2f, +0x00010c2e, +0x00010c2c, +0x00010c2b, +0x00010c2a, +0x00010c29, +0x00010c28, +0x00010c27, +0x00010c26, +0x00010c25, +0x00010c24, +0x00010c23, +0x00010c22, +0x00010c20, +0x00010c1f, +0x00010c1e, +0x00010c1d, +0x00010c1c, +0x00010c1b, +0x00010c1a, +0x00010c19, +0x00010c18, +0x00010c17, +0x00010c15, +0x00010c14, +0x00010c13, +0x00010c12, +0x00010c11, +0x00010c10, +0x00010c0f, +0x00010c0e, +0x00010c0d, +0x00010c0c, +0x00010c0a, +0x00010c09, +0x00010c08, +0x00010c07, +0x00010c06, +0x00010c05, +0x00010c04, +0x00010c03, +0x00010c02, +0x00010c01, +0x00010c00, +0x00010bfe, +0x00010bfd, +0x00010bfc, +0x00010bfb, +0x00010bfa, +0x00010bf9, +0x00010bf8, +0x00010bf7, +0x00010bf6, +0x00010bf4, +0x00010bf3, +0x00010bf2, +0x00010bf1, +0x00010bf0, +0x00010bef, +0x00010bee, +0x00010bed, +0x00010bec, +0x00010beb, +0x00010bea, +0x00010be9, +0x00010be8, +0x00010be6, +0x00010be5, +0x00010be4, +0x00010be3, +0x00010be2, +0x00010be1, +0x00010be0, +0x00010bdf, +0x00010bdd, +0x00010bdc, +0x00010bdb, +0x00010bda, +0x00010bd9, +0x00010bd8, +0x00010bd7, +0x00010bd6, +0x00010bd5, +0x00010bd4, +0x00010bd3, +0x00010bd2, +0x00010bd1, +0x00010bcf, +0x00010bce, +0x00010bcd, +0x00010bcc, +0x00010bcb, +0x00010bca, +0x00010bc9, +0x00010bc7, +0x00010bc6, +0x00010bc5, +0x00010bc4, +0x00010bc3, +0x00010bc2, +0x00010bc1, +0x00010bc0, +0x00010bbf, +0x00010bbd, +0x00010bbc, +0x00010bbb, +0x00010bba, +0x00010bb9, +0x00010bb8, +0x00010bb7, +0x00010bb5, +0x00010bb4, +0x00010bb3, +0x00010bb2, +0x00010bb1, +0x00010bb0, +0x00010baf, +0x00010bae, +0x00010bad, +0x00010bac, +0x00010bab, +0x00010baa, +0x00010ba9, +0x00010ba8, +0x00010ba7, +0x00010ba6, +0x00010ba5, +0x00010ba3, +0x00010ba2, +0x00010ba1, +0x00010ba0, +0x00010b9f, +0x00010b9d, +0x00010b9c, +0x00010b9b, +0x00010b9a, +0x00010b99, +0x00010b98, +0x00010b97, +0x00010b96, +0x00010b95, +0x00010b94, +0x00010b93, +0x00010b92, +0x00010b91, +0x00010b90, +0x00010b8f, +0x00010b8e, +0x00010b8d, +0x00010b8c, +0x00010b8a, +0x00010b89, +0x00010b88, +0x00010b87, +0x00010b86, +0x00010b84, +0x00010b83, +0x00010b82, +0x00010b81, +0x00010b80, +0x00010b7f, +0x00010b7e, +0x00010b7d, +0x00010b7c, +0x00010b7b, +0x00010b7a, +0x00010b79, +0x00010b78, +0x00010b77, +0x00010b76, +0x00010b75, +0x00010b74, +0x00010b73, +0x00010b71, +0x00010b70, +0x00010b6f, +0x00010b6e, +0x00010b6c, +0x00010b6b, +0x00010b6a, +0x00010b69, +0x00010b68, +0x00010b67, +0x00010b66, +0x00010b65, +0x00010b64, +0x00010b63, +0x00010b62, +0x00010b61, +0x00010b60, +0x00010b5f, +0x00010b5e, +0x00010b5d, +0x00010b5c, +0x00010b5b, +0x00010b5a, +0x00010b58, +0x00010b57, +0x00010b56, +0x00010b54, +0x00010b53, +0x00010b52, +0x00010b51, +0x00010b50, +0x00010b4f, +0x00010b4e, +0x00010b4d, +0x00010b4c, +0x00010b4b, +0x00010b4a, +0x00010b49, +0x00010b48, +0x00010b47, +0x00010b46, +0x00010b45, +0x00010b44, +0x00010b43, +0x00010b42, +0x00010b41, +0x00010b40, +0x00010b3e, +0x00010b3c, +0x00010b3b, +0x00010b3a, +0x00010b39, +0x00010b38, +0x00010b37, +0x00010b36, +0x00010b35, +0x00010b34, +0x00010b33, +0x00010b32, +0x00010b31, +0x00010b30, +0x00010b2f, +0x00010b2e, +0x00010b2d, +0x00010b2c, +0x00010b2b, +0x00010b2a, +0x00010b29, +0x00010b28, +0x00010b27, +0x00010b25, +0x00010b23, +0x00010b22, +0x00010b21, +0x00010b20, +0x00010b1f, +0x00010b1e, +0x00010b1d, +0x00010b1c, +0x00010b1b, +0x00010b1a, +0x00010b19, +0x00010b18, +0x00010b17, +0x00010b16, +0x00010b15, +0x00010b14, +0x00010b13, +0x00010b12, +0x00010b11, +0x00010b10, +0x00010b0f, +0x00010b0e, +0x00010b0b, +0x00010b0a, +0x00010b09, +0x00010b08, +0x00010b07, +0x00010b06, +0x00010b05, +0x00010b04, +0x00010b03, +0x00010b02, +0x00010b01, +0x00010b00, +0x00010aff, +0x00010afe, +0x00010afd, +0x00010afc, +0x00010afb, +0x00010afa, +0x00010af9, +0x00010af8, +0x00010af7, +0x00010af6, +0x00010af5, +0x00010af3, +0x00010af1, +0x00010af0, +0x00010aef, +0x00010aee, +0x00010aed, +0x00010aec, +0x00010aeb, +0x00010aea, +0x00010ae9, +0x00010ae8, +0x00010ae7, +0x00010ae6, +0x00010ae5, +0x00010ae4, +0x00010ae3, +0x00010ae2, +0x00010ae1, +0x00010ae0, +0x00010adf, +0x00010ade, +0x00010add, +0x00010adb, +0x00010ada, +0x00010ad8, +0x00010ad7, +0x00010ad6, +0x00010ad5, +0x00010ad4, +0x00010ad3, +0x00010ad2, +0x00010ad1, +0x00010ad0, +0x00010acf, +0x00010ace, +0x00010acd, +0x00010acc, +0x00010acb, +0x00010aca, +0x00010ac9, +0x00010ac8, +0x00010ac7, +0x00010ac6, +0x00010ac5, +0x00010ac4, +0x00010ac2, +0x00010ac1, +0x00010abf, +0x00010abe, +0x00010abd, +0x00010abc, +0x00010abb, +0x00010aba, +0x00010ab9, +0x00010ab8, +0x00010ab7, +0x00010ab6, +0x00010ab5, +0x00010ab4, +0x00010ab3, +0x00010ab2, +0x00010ab1, +0x00010ab0, +0x00010aaf, +0x00010aae, +0x00010aab, +0x00010aaa, +0x00010aa9, +0x00010aa8, +0x00010aa7, +0x00010aa6, +0x00010aa5, +0x00010aa4, +0x00010aa3, +0x00010aa2, +0x00010aa1, +0x00010aa0, +0x00010a9f, +0x00010a9e, +0x00010a9d, +0x00010a9c, +0x00010a9b, +0x00010a9a, +0x00010a99, +0x00010a98, +0x00010a97, +0x00010a96, +0x00010a95, +0x00010a94, +0x00010a93, +0x00010a90, +0x00010a8f, +0x00010a8e, +0x00010a8d, +0x00010a8c, +0x00010a8b, +0x00010a8a, +0x00010a89, +0x00010a88, +0x00010a87, +0x00010a86, +0x00010a85, +0x00010a84, +0x00010a83, +0x00010a82, +0x00010a81, +0x00010a80, +0x00010a7f, +0x00010a7e, +0x00010a7d, +0x00010a7c, +0x00010a7b, +0x00010a7a, +0x00010a79, +0x00010a77, +0x00010a76, +0x00010a74, +0x00010a73, +0x00010a72, +0x00010a71, +0x00010a70, +0x00010a6f, +0x00010a6e, +0x00010a6d, +0x00010a6c, +0x00010a6b, +0x00010a6a, +0x00010a69, +0x00010a68, +0x00010a67, +0x00010a66, +0x00010a65, +0x00010a64, +0x00010a63, +0x00010a62, +0x00010a61, +0x00010a60, +0x00010a5f, +0x00010a5e, +0x00010a5c, +0x00010a5b, +0x00010a59, +0x00010a58, +0x00010a57, +0x00010a56, +0x00010a55, +0x00010a54, +0x00010a53, +0x00010a52, +0x00010a51, +0x00010a50, +0x00010a4f, +0x00010a4e, +0x00010a4d, +0x00010a4c, +0x00010a4b, +0x00010a4a, +0x00010a49, +0x00010a48, +0x00010a47, +0x00010a46, +0x00010a45, +0x00010a44, +0x00010a43, +0x00010a41, +0x00010a40, +0x00010a3f, +0x00010a3d, +0x00010a3c, +0x00010a3b, +0x00010a3a, +0x00010a39, +0x00010a38, +0x00010a37, +0x00010a36, +0x00010a35, +0x00010a34, +0x00010a33, +0x00010a32, +0x00010a31, +0x00010a30, +0x00010a2f, +0x00010a2e, +0x00010a2d, +0x00010a2c, +0x00010a2b, +0x00010a2a, +0x00010a29, +0x00010a27, +0x00010a26, +0x00010a25, +0x00010a24, +0x00010a23, +0x00010a21, +0x00010a20, +0x00010a1f, +0x00010a1e, +0x00010a1d, +0x00010a1c, +0x00010a1b, +0x00010a1a, +0x00010a19, +0x00010a18, +0x00010a17, +0x00010a16, +0x00010a15, +0x00010a14, +0x00010a13, +0x00010a12, +0x00010a11, +0x00010a10, +0x00010a0f, +0x00010a0e, +0x00010a0c, +0x00010a0b, +0x00010a0a, +0x00010a09, +0x00010a08, +0x00010a06, +0x00010a05, +0x00010a04, +0x00010a03, +0x00010a02, +0x00010a01, +0x00010a00, +0x000109ff, +0x000109fe, +0x000109fd, +0x000109fc, +0x000109fb, +0x000109fa, +0x000109f9, +0x000109f8, +0x000109f7, +0x000109f6, +0x000109f5, +0x000109f4, +0x000109f2, +0x000109f1, +0x000109f0, +0x000109ef, +0x000109ee, +0x000109ed, +0x000109ec, +0x000109ea, +0x000109e9, +0x000109e8, +0x000109e7, +0x000109e6, +0x000109e5, +0x000109e4, +0x000109e3, +0x000109e2, +0x000109e1, +0x000109e0, +0x000109df, +0x000109de, +0x000109dd, +0x000109dc, +0x000109db, +0x000109da, +0x000109d9, +0x000109d7, +0x000109d6, +0x000109d5, +0x000109d4, +0x000109d3, +0x000109d2, +0x000109d1, +0x000109cf, +0x000109ce, +0x000109cd, +0x000109cc, +0x000109cb, +0x000109ca, +0x000109c9, +0x000109c8, +0x000109c7, +0x000109c6, +0x000109c5, +0x000109c4, +0x000109c3, +0x000109c2, +0x000109c1, +0x000109c0, +0x000109bf, +0x000109be, +0x000109bc, +0x000109bb, +0x000109ba, +0x000109b9, +0x000109b8, +0x000109b7, +0x000109b6, +0x000109b5, +0x000109b3, +0x000109b2, +0x000109b1, +0x000109b0, +0x000109af, +0x000109ae, +0x000109ad, +0x000109ac, +0x000109ab, +0x000109aa, +0x000109a9, +0x000109a8, +0x000109a7, +0x000109a6, +0x000109a5, +0x000109a4, +0x000109a2, +0x000109a1, +0x000109a0, +0x0001099f, +0x0001099e, +0x0001099d, +0x0001099c, +0x0001099b, +0x0001099a, +0x00010998, +0x00010997, +0x00010996, +0x00010995, +0x00010994, +0x00010993, +0x00010992, +0x00010991, +0x00010990, +0x0001098f, +0x0001098e, +0x0001098d, +0x0001098c, +0x0001098b, +0x0001098a, +0x00010989, +0x00010988, +0x00010987, +0x00010986, +0x00010985, +0x00010983, +0x00010982, +0x00010980, +0x0001097f, +0x0001097e, +0x0001097d, +0x0001097c, +0x0001097b, +0x0001097a, +0x00010979, +0x00010978, +0x00010977, +0x00010976, +0x00010975, +0x00010974, +0x00010973, +0x00010972, +0x00010971, +0x00010970, +0x0001096f, +0x0001096e, +0x0001096d, +0x0001096c, +0x0001096b, +0x0001096a, +0x00010969, +0x00010968, +0x00010966, +0x00010965, +0x00010964, +0x00010962, +0x00010961, +0x00010960, +0x0001095f, +0x0001095e, +0x0001095d, +0x0001095c, +0x0001095b, +0x0001095a, +0x00010959, +0x00010958, +0x00010957, +0x00010956, +0x00010955, +0x00010954, +0x00010953, +0x00010952, +0x00010951, +0x00010950, +0x0001094f, +0x0001094e, +0x0001094d, +0x0001094c, +0x0001094b, +0x00010949, +0x00010948, +0x00010947, +0x00010946, +0x00010945, +0x00010943, +0x00010942, +0x00010941, +0x00010940, +0x0001093f, +0x0001093e, +0x0001093d, +0x0001093c, +0x0001093b, +0x0001093a, +0x00010939, +0x00010938, +0x00010937, +0x00010936, +0x00010935, +0x00010934, +0x00010933, +0x00010932, +0x00010931, +0x00010930, +0x0001092f, +0x0001092e, +0x0001092d, +0x0001092b, +0x0001092a, +0x00010929, +0x00010928, +0x00010927, +0x00010925, +0x00010924, +0x00010923, +0x00010922, +0x00010921, +0x00010920, +0x0001091f, +0x0001091e, +0x0001091d, +0x0001091c, +0x0001091b, +0x0001091a, +0x00010919, +0x00010918, +0x00010917, +0x00010916, +0x00010915, +0x00010914, +0x00010913, +0x00010912, +0x00010911, +0x00010910, +0x0001090e, +0x0001090d, +0x0001090c, +0x0001090b, +0x0001090a, +0x00010909, +0x00010908, +0x00010906, +0x00010905, +0x00010904, +0x00010903, +0x00010902, +0x00010901, +0x00010900, +0x000108ff, +0x000108fe, +0x000108fd, +0x000108fc, +0x000108fb, +0x000108fa, +0x000108f9, +0x000108f8, +0x000108f7, +0x000108f6, +0x000108f5, +0x000108f4, +0x000108f3, +0x000108f2, +0x000108f0, +0x000108ef, +0x000108ee, +0x000108ed, +0x000108ec, +0x000108eb, +0x000108ea, +0x000108e8, +0x000108e7, +0x000108e6, +0x000108e5, +0x000108e4, +0x000108e3, +0x000108e2, +0x000108e1, +0x000108e0, +0x000108df, +0x000108de, +0x000108dd, +0x000108dc, +0x000108db, +0x000108da, +0x000108d9, +0x000108d8, +0x000108d7, +0x000108d6, +0x000108d5, +0x000108d3, +0x000108d2, +0x000108d1, +0x000108d0, +0x000108cf, +0x000108ce, +0x000108cd, +0x000108cc, +0x000108cb, +0x000108c9, +0x000108c8, +0x000108c7, +0x000108c6, +0x000108c5, +0x000108c4, +0x000108c3, +0x000108c2, +0x000108c1, +0x000108c0, +0x000108bf, +0x000108be, +0x000108bd, +0x000108bc, +0x000108bb, +0x000108ba, +0x000108b9, +0x000108b8, +0x000108b7, +0x000108b5, +0x000108b4, +0x000108b3, +0x000108b2, +0x000108b1, +0x000108b0, +0x000108af, +0x000108ae, +0x000108ad, +0x000108ab, +0x000108aa, +0x000108a9, +0x000108a8, +0x000108a7, +0x000108a6, +0x000108a5, +0x000108a4, +0x000108a3, +0x000108a2, +0x000108a1, +0x000108a0, +0x0001089f, +0x0001089e, +0x0001089d, +0x0001089c, +0x0001089b, +0x0001089a, +0x00010898, +0x00010897, +0x00010896, +0x00010895, +0x00010894, +0x00010893, +0x00010892, +0x00010891, +0x00010890, +0x0001088f, +0x0001088d, +0x0001088c, +0x0001088b, +0x0001088a, +0x00010889, +0x00010888, +0x00010887, +0x00010886, +0x00010885, +0x00010884, +0x00010883, +0x00010882, +0x00010881, +0x00010880, +0x0001087f, +0x0001087e, +0x0001087d, +0x0001087c, +0x0001087b, +0x0001087a, +0x00010879, +0x00010878, +0x00010877, +0x00010876, +0x00010874, +0x00010872, +0x00010871, +0x00010870, +0x0001086f, +0x0001086e, +0x0001086d, +0x0001086c, +0x0001086b, +0x0001086a, +0x00010869, +0x00010868, +0x00010867, +0x00010866, +0x00010865, +0x00010864, +0x00010863, +0x00010862, +0x00010861, +0x00010860, +0x0001085f, +0x0001085e, +0x0001085d, +0x0001085c, +0x0001085b, +0x0001085a, +0x00010859, +0x00010858, +0x00010857, +0x00010856, +0x00010855, +0x00010854, +0x00010851, +0x00010850, +0x0001084f, +0x0001084e, +0x0001084d, +0x0001084c, +0x0001084b, +0x0001084a, +0x00010849, +0x00010848, +0x00010847, +0x00010846, +0x00010845, +0x00010844, +0x00010843, +0x00010842, +0x00010841, +0x00010840, +0x0001083f, +0x0001083e, +0x0001083d, +0x0001083c, +0x0001083b, +0x0001083a, +0x00010839, +0x00010838, +0x00010837, +0x00010836, +0x00010835, +0x00010834, +0x00010833, +0x00010832, +0x0001082f, +0x0001082e, +0x0001082d, +0x0001082c, +0x0001082b, +0x0001082a, +0x00010829, +0x00010828, +0x00010827, +0x00010826, +0x00010825, +0x00010824, +0x00010823, +0x00010822, +0x00010821, +0x00010820, +0x0001081f, +0x0001081e, +0x0001081d, +0x0001081c, +0x0001081b, +0x0001081a, +0x00010819, +0x00010818, +0x00010817, +0x00010816, +0x00010815, +0x00010814, +0x00010813, +0x00010812, +0x00010811, +0x0001080f, +0x0001080d, +0x0001080c, +0x0001080b, +0x0001080a, +0x00010809, +0x00010808, +0x00010807, +0x00010806, +0x00010805, +0x00010804, +0x00010803, +0x00010802, +0x00010801, +0x00010800, +0x000107ff, +0x000107fe, +0x000107fd, +0x000107fc, +0x000107fb, +0x000107fa, +0x000107f9, +0x000107f8, +0x000107f7, +0x000107f6, +0x000107f5, +0x000107f4, +0x000107f3, +0x000107f2, +0x000107f1, +0x000107f0, +0x000107ee, +0x000107ed, +0x000107eb, +0x000107ea, +0x000107e9, +0x000107e8, +0x000107e7, +0x000107e6, +0x000107e5, +0x000107e4, +0x000107e3, +0x000107e2, +0x000107e1, +0x000107e0, +0x000107df, +0x000107de, +0x000107dd, +0x000107dc, +0x000107db, +0x000107da, +0x000107d9, +0x000107d8, +0x000107d7, +0x000107d6, +0x000107d5, +0x000107d4, +0x000107d3, +0x000107d2, +0x000107d1, +0x000107d0, +0x000107cf, +0x000107cd, +0x000107cc, +0x000107cb, +0x000107c9, +0x000107c8, +0x000107c7, +0x000107c6, +0x000107c5, +0x000107c4, +0x000107c3, +0x000107c2, +0x000107c1, +0x000107c0, +0x000107bf, +0x000107be, +0x000107bd, +0x000107bc, +0x000107bb, +0x000107ba, +0x000107b9, +0x000107b8, +0x000107b7, +0x000107b6, +0x000107b5, +0x000107b4, +0x000107b3, +0x000107b2, +0x000107b1, +0x000107b0, +0x000107af, +0x000107ae, +0x000107ac, +0x000107ab, +0x000107aa, +0x000107a9, +0x000107a7, +0x000107a6, +0x000107a5, +0x000107a4, +0x000107a3, +0x000107a2, +0x000107a1, +0x000107a0, +0x0001079f, +0x0001079e, +0x0001079d, +0x0001079c, +0x0001079b, +0x0001079a, +0x00010799, +0x00010798, +0x00010797, +0x00010796, +0x00010795, +0x00010794, +0x00010793, +0x00010792, +0x00010791, +0x00010790, +0x0001078f, +0x0001078e, +0x0001078d, +0x0001078b, +0x0001078a, +0x00010789, +0x00010788, +0x00010787, +0x00010785, +0x00010784, +0x00010783, +0x00010782, +0x00010781, +0x00010780, +0x0001077f, +0x0001077e, +0x0001077d, +0x0001077c, +0x0001077b, +0x0001077a, +0x00010779, +0x00010778, +0x00010777, +0x00010776, +0x00010775, +0x00010774, +0x00010773, +0x00010772, +0x00010771, +0x00010770, +0x0001076f, +0x0001076e, +0x0001076d, +0x0001076b, +0x0001076a, +0x00010769, +0x00010768, +0x00010767, +0x00010766, +0x00010765, +0x00010764, +0x00010763, +0x00010762, +0x00010761, +0x00010760, +0x0001075f, +0x0001075d, +0x0001075c, +0x0001075b, +0x0001075a, +0x00010759, +0x00010758, +0x00010757, +0x00010756, +0x00010755, +0x00010754, +0x00010753, +0x00010752, +0x00010751, +0x00010750, +0x0001074f, +0x0001074e, +0x0001074d, +0x0001074c, +0x0001074b, +0x0001074a, +0x00010749, +0x00010748, +0x00010747, +0x00010745, +0x00010744, +0x00010743, +0x00010742, +0x00010741, +0x00010740, +0x0001073f, +0x0001073e, +0x0001073d, +0x0001073c, +0x0001073b, +0x0001073a, +0x00010739, +0x00010737, +0x00010736, +0x00010735, +0x00010734, +0x00010733, +0x00010732, +0x00010731, +0x00010730, +0x0001072f, +0x0001072e, +0x0001072d, +0x0001072c, +0x0001072b, +0x0001072a, +0x00010729, +0x00010728, +0x00010727, +0x00010726, +0x00010725, +0x00010724, +0x00010723, +0x00010722, +0x00010721, +0x00010720, +0x0001071e, +0x0001071d, +0x0001071c, +0x0001071b, +0x0001071a, +0x00010719, +0x00010718, +0x00010717, +0x00010716, +0x00010715, +0x00010714, +0x00010712, +0x00010711, +0x00010710, +0x0001070f, +0x0001070e, +0x0001070d, +0x0001070c, +0x0001070b, +0x0001070a, +0x00010709, +0x00010708, +0x00010707, +0x00010706, +0x00010705, +0x00010704, +0x00010703, +0x00010702, +0x00010701, +0x00010700, +0x000106ff, +0x000106fe, +0x000106fd, +0x000106fc, +0x000106fb, +0x000106fa, +0x000106f8, +0x000106f7, +0x000106f6, +0x000106f5, +0x000106f4, +0x000106f3, +0x000106f2, +0x000106f1, +0x000106f0, +0x000106ef, +0x000106ee, +0x000106ec, +0x000106eb, +0x000106ea, +0x000106e9, +0x000106e8, +0x000106e7, +0x000106e6, +0x000106e5, +0x000106e4, +0x000106e3, +0x000106e2, +0x000106e1, +0x000106e0, +0x000106df, +0x000106de, +0x000106dd, +0x000106dc, +0x000106db, +0x000106da, +0x000106d9, +0x000106d8, +0x000106d7, +0x000106d6, +0x000106d5, +0x000106d4, +0x000106d3, +0x000106d1, +0x000106d0, +0x000106cf, +0x000106ce, +0x000106cd, +0x000106cc, +0x000106cb, +0x000106ca, +0x000106c9, +0x000106c7, +0x000106c6, +0x000106c5, +0x000106c4, +0x000106c3, +0x000106c2, +0x000106c1, +0x000106c0, +0x000106bf, +0x000106be, +0x000106bd, +0x000106bc, +0x000106bb, +0x000106ba, +0x000106b9, +0x000106b8, +0x000106b7, +0x000106b6, +0x000106b5, +0x000106b4, +0x000106b3, +0x000106b2, +0x000106b1, +0x000106b0, +0x000106af, +0x000106ae, +0x000106ad, +0x000106ac, +0x000106aa, +0x000106a9, +0x000106a8, +0x000106a7, +0x000106a6, +0x000106a5, +0x000106a4, +0x000106a3, +0x000106a1, +0x000106a0, +0x0001069f, +0x0001069e, +0x0001069d, +0x0001069c, +0x0001069b, +0x0001069a, +0x00010699, +0x00010698, +0x00010697, +0x00010696, +0x00010695, +0x00010694, +0x00010693, +0x00010692, +0x00010691, +0x00010690, +0x0001068f, +0x0001068e, +0x0001068d, +0x0001068c, +0x0001068b, +0x0001068a, +0x00010689, +0x00010688, +0x00010687, +0x00010686, +0x00010684, +0x00010683, +0x00010682, +0x00010681, +0x00010680, +0x0001067f, +0x0001067e, +0x0001067d, +0x0001067b, +0x0001067a, +0x00010679, +0x00010678, +0x00010677, +0x00010676, +0x00010675, +0x00010674, +0x00010673, +0x00010672, +0x00010671, +0x00010670, +0x0001066f, +0x0001066e, +0x0001066d, +0x0001066c, +0x0001066b, +0x0001066a, +0x00010669, +0x00010668, +0x00010666, +0x00010665, +0x00010664, +0x00010663, +0x00010662, +0x00010661, +0x00010660, +0x0001065f, +0x0001065e, +0x0001065d, +0x0001065c, +0x0001065b, +0x0001065a, +0x00010659, +0x00010658, +0x00010657, +0x00010656, +0x00010655, +0x00010654, +0x00010653, +0x00010652, +0x00010651, +0x00010650, +0x0001064f, +0x0001064e, +0x0001064d, +0x0001064c, +0x0001064b, +0x0001064a, +0x00010649, +0x00010648, +0x00010647, +0x00010646, +0x00010645, +0x00010644, +0x00010643, +0x00010642, +0x00010640, +0x0001063f, +0x0001063e, +0x0001063d, +0x0001063c, +0x0001063a, +0x00010639, +0x00010638, +0x00010637, +0x00010636, +0x00010635, +0x00010634, +0x00010633, +0x00010632, +0x00010631, +0x00010630, +0x0001062f, +0x0001062e, +0x0001062d, +0x0001062c, +0x0001062b, +0x0001062a, +0x00010629, +0x00010628, +0x00010627, +0x00010626, +0x00010625, +0x00010624, +0x00010623, +0x00010622, +0x00010621, +0x00010620, +0x0001061f, +0x0001061e, +0x0001061d, +0x0001061c, +0x0001061b, +0x0001061a, +0x00010619, +0x00010618, +0x00010617, +0x00010615, +0x00010614, +0x00010613, +0x00010612, +0x00010611, +0x00010610, +0x0001060f, +0x0001060d, +0x0001060c, +0x0001060b, +0x0001060a, +0x00010609, +0x00010608, +0x00010607, +0x00010606, +0x00010605, +0x00010604, +0x00010603, +0x00010602, +0x00010601, +0x00010600, +0x000105ff, +0x000105fe, +0x000105fd, +0x000105fc, +0x000105fb, +0x000105fa, +0x000105f9, +0x000105f8, +0x000105f7, +0x000105f6, +0x000105f5, +0x000105f4, +0x000105f3, +0x000105f2, +0x000105f1, +0x000105f0, +0x000105ef, +0x000105ee, +0x000105ed, +0x000105ec, +0x000105eb, +0x000105e9, +0x000105e8, +0x000105e7, +0x000105e6, +0x000105e5, +0x000105e4, +0x000105e3, +0x000105e2, +0x000105e0, +0x000105df, +0x000105de, +0x000105dd, +0x000105dc, +0x000105db, +0x000105da, +0x000105d9, +0x000105d8, +0x000105d7, +0x000105d6, +0x000105d5, +0x000105d4, +0x000105d3, +0x000105d2, +0x000105d1, +0x000105d0, +0x000105cf, +0x000105ce, +0x000105cd, +0x000105cc, +0x000105cb, +0x000105ca, +0x000105c9, +0x000105c8, +0x000105c7, +0x000105c6, +0x000105c5, +0x000105c4, +0x000105c3, +0x000105c2, +0x000105c1, +0x000105c0, +0x000105bf, +0x000105bd, +0x000105bc, +0x000105bb, +0x000105ba, +0x000105b9, +0x000105b8, +0x000105b7, +0x000105b6, +0x000105b4, +0x000105b3, +0x000105b2, +0x000105b1, +0x000105b0, +0x000105af, +0x000105ae, +0x000105ad, +0x000105ac, +0x000105ab, +0x000105aa, +0x000105a9, +0x000105a8, +0x000105a7, +0x000105a6, +0x000105a5, +0x000105a4, +0x000105a3, +0x000105a2, +0x000105a1, +0x000105a0, +0x0001059f, +0x0001059e, +0x0001059d, +0x0001059c, +0x0001059b, +0x0001059a, +0x00010599, +0x00010598, +0x00010597, +0x00010596, +0x00010595, +0x00010594, +0x00010592, +0x00010591, +0x00010590, +0x0001058f, +0x0001058e, +0x0001058d, +0x0001058c, +0x0001058b, +0x0001058a, +0x00010589, +0x00010587, +0x00010586, +0x00010585, +0x00010584, +0x00010583, +0x00010582, +0x00010581, +0x00010580, +0x0001057f, +0x0001057e, +0x0001057d, +0x0001057c, +0x0001057b, +0x0001057a, +0x00010579, +0x00010578, +0x00010577, +0x00010576, +0x00010575, +0x00010574, +0x00010573, +0x00010572, +0x00010571, +0x00010570, +0x0001056f, +0x0001056e, +0x0001056d, +0x0001056c, +0x0001056b, +0x0001056a, +0x00010569, +0x00010568, +0x00010566, +0x00010565, +0x00010564, +0x00010563, +0x00010562, +0x00010561, +0x00010560, +0x0001055f, +0x0001055e, +0x0001055d, +0x0001055c, +0x0001055b, +0x0001055a, +0x00010559, +0x00010558, +0x00010557, +0x00010556, +0x00010555, +0x00010554, +0x00010553, +0x00010552, +0x00010551, +0x00010550, +0x0001054f, +0x0001054d, +0x0001054c, +0x0001054b, +0x0001054a, +0x00010549, +0x00010548, +0x00010547, +0x00010546, +0x00010545, +0x00010544, +0x00010543, +0x00010542, +0x00010541, +0x00010540, +0x0001053f, +0x0001053e, +0x0001053d, +0x0001053c, +0x0001053b, +0x0001053a, +0x00010539, +0x00010538, +0x00010537, +0x00010536, +0x00010535, +0x00010533, +0x00010532, +0x00010531, +0x00010530, +0x0001052f, +0x0001052e, +0x0001052d, +0x0001052c, +0x0001052b, +0x0001052a, +0x00010529, +0x00010528, +0x00010527, +0x00010526, +0x00010525, +0x00010524, +0x00010523, +0x00010522, +0x00010521, +0x00010520, +0x0001051f, +0x0001051e, +0x0001051d, +0x0001051c, +0x0001051b, +0x00010519, +0x00010518, +0x00010517, +0x00010516, +0x00010515, +0x00010514, +0x00010513, +0x00010512, +0x00010511, +0x00010510, +0x0001050f, +0x0001050e, +0x0001050d, +0x0001050c, +0x0001050b, +0x0001050a, +0x00010509, +0x00010508, +0x00010507, +0x00010506, +0x00010505, +0x00010504, +0x00010503, +0x00010502, +0x00010501, +0x00010500, +0x000104fe, +0x000104fd, +0x000104fc, +0x000104fb, +0x000104fa, +0x000104f9, +0x000104f8, +0x000104f7, +0x000104f6, +0x000104f5, +0x000104f4, +0x000104f3, +0x000104f2, +0x000104f1, +0x000104f0, +0x000104ef, +0x000104ee, +0x000104ed, +0x000104ec, +0x000104eb, +0x000104ea, +0x000104e9, +0x000104e8, +0x000104e7, +0x000104e5, +0x000104e4, +0x000104e3, +0x000104e2, +0x000104e1, +0x000104e0, +0x000104df, +0x000104de, +0x000104dd, +0x000104dc, +0x000104db, +0x000104da, +0x000104d9, +0x000104d8, +0x000104d7, +0x000104d6, +0x000104d5, +0x000104d4, +0x000104d3, +0x000104d2, +0x000104d1, +0x000104d0, +0x000104cf, +0x000104ce, +0x000104cd, +0x000104cc, +0x000104cb, +0x000104c9, +0x000104c8, +0x000104c7, +0x000104c6, +0x000104c5, +0x000104c4, +0x000104c3, +0x000104c2, +0x000104c1, +0x000104c0, +0x000104bf, +0x000104be, +0x000104bd, +0x000104bc, +0x000104bb, +0x000104ba, +0x000104b9, +0x000104b8, +0x000104b7, +0x000104b6, +0x000104b5, +0x000104b4, +0x000104b3, +0x000104b1, +0x000104b0, +0x000104af, +0x000104ae, +0x000104ad, +0x000104ac, +0x000104ab, +0x000104aa, +0x000104a9, +0x000104a8, +0x000104a7, +0x000104a6, +0x000104a5, +0x000104a4, +0x000104a3, +0x000104a2, +0x000104a1, +0x000104a0, +0x0001049f, +0x0001049e, +0x0001049d, +0x0001049c, +0x0001049b, +0x0001049a, +0x00010499, +0x00010498, +0x00010497, +0x00010496, +0x00010495, +0x00010493, +0x00010492, +0x00010491, +0x00010490, +0x0001048f, +0x0001048e, +0x0001048d, +0x0001048c, +0x0001048b, +0x0001048a, +0x00010489, +0x00010488, +0x00010487, +0x00010486, +0x00010485, +0x00010484, +0x00010483, +0x00010482, +0x00010481, +0x00010480, +0x0001047f, +0x0001047e, +0x0001047c, +0x0001047b, +0x0001047a, +0x00010479, +0x00010478, +0x00010477, +0x00010476, +0x00010475, +0x00010474, +0x00010473, +0x00010472, +0x00010471, +0x00010470, +0x0001046f, +0x0001046e, +0x0001046d, +0x0001046c, +0x0001046b, +0x0001046a, +0x00010469, +0x00010468, +0x00010467, +0x00010466, +0x00010465, +0x00010464, +0x00010463, +0x00010462, +0x00010461, +0x00010460, +0x0001045e, +0x0001045d, +0x0001045c, +0x0001045b, +0x0001045a, +0x00010459, +0x00010458, +0x00010457, +0x00010456, +0x00010455, +0x00010454, +0x00010453, +0x00010452, +0x00010451, +0x00010450, +0x0001044f, +0x0001044e, +0x0001044d, +0x0001044c, +0x0001044b, +0x0001044a, +0x00010449, +0x00010448, +0x00010447, +0x00010446, +0x00010445, +0x00010444, +0x00010443, +0x00010442, +0x00010441, +0x00010440, +0x0001043f, +0x0001043e, +0x0001043d, +0x0001043c, +0x0001043b, +0x0001043a, +0x00010439, +0x00010438, +0x00010437, +0x00010436, +0x00010435, +0x00010434, +0x00010433, +0x00010432, +0x00010430, +0x0001042f, +0x0001042e, +0x0001042d, +0x0001042c, +0x0001042b, +0x0001042a, +0x00010429, +0x00010428, +0x00010427, +0x00010426, +0x00010425, +0x00010424, +0x00010423, +0x00010422, +0x00010421, +0x0001041f, +0x0001041e, +0x0001041d, +0x0001041c, +0x0001041b, +0x0001041a, +0x00010419, +0x00010418, +0x00010417, +0x00010416, +0x00010415, +0x00010414, +0x00010413, +0x00010412, +0x00010411, +0x00010410, +0x0001040f, +0x0001040e, +0x0001040d, +0x0001040c, +0x0001040b, +0x0001040a, +0x00010409, +0x00010408, +0x00010407, +0x00010406, +0x00010405, +0x00010404, +0x00010403, +0x00010402, +0x00010401, +0x00010400, +0x000103ff, +0x000103fe, +0x000103fd, +0x000103fc, +0x000103fb, +0x000103fa, +0x000103f9, +0x000103f8, +0x000103f7, +0x000103f6, +0x000103f5, +0x000103f4, +0x000103f3, +0x000103f2, +0x000103f1, +0x000103f0, +0x000103ee, +0x000103ed, +0x000103ec, +0x000103eb, +0x000103ea, +0x000103e9, +0x000103e8, +0x000103e7, +0x000103e6, +0x000103e5, +0x000103e4, +0x000103e3, +0x000103e2, +0x000103e1, +0x000103e0, +0x000103de, +0x000103dd, +0x000103dc, +0x000103db, +0x000103da, +0x000103d9, +0x000103d8, +0x000103d7, +0x000103d6, +0x000103d5, +0x000103d4, +0x000103d3, +0x000103d2, +0x000103d1, +0x000103d0, +0x000103cf, +0x000103ce, +0x000103cd, +0x000103cc, +0x000103cb, +0x000103ca, +0x000103c9, +0x000103c8, +0x000103c7, +0x000103c6, +0x000103c5, +0x000103c4, +0x000103c3, +0x000103c2, +0x000103c1, +0x000103c0, +0x000103bf, +0x000103be, +0x000103bd, +0x000103bc, +0x000103bb, +0x000103ba, +0x000103b9, +0x000103b8, +0x000103b7, +0x000103b6, +0x000103b5, +0x000103b4, +0x000103b3, +0x000103b2, +0x000103b1, +0x000103b0, +0x000103af, +0x000103ae, +0x000103ac, +0x000103ab, +0x000103aa, +0x000103a9, +0x000103a8, +0x000103a7, +0x000103a6, +0x000103a5, +0x000103a4, +0x000103a3, +0x000103a2, +0x000103a1, +0x000103a0, +0x0001039f, +0x0001039d, +0x0001039c, +0x0001039b, +0x0001039a, +0x00010399, +0x00010398, +0x00010397, +0x00010396, +0x00010395, +0x00010394, +0x00010393, +0x00010392, +0x00010391, +0x00010390, +0x0001038f, +0x0001038e, +0x0001038d, +0x0001038c, +0x0001038b, +0x0001038a, +0x00010389, +0x00010388, +0x00010387, +0x00010386, +0x00010385, +0x00010384, +0x00010383, +0x00010382, +0x00010381, +0x00010380, +0x0001037f, +0x0001037e, +0x0001037d, +0x0001037c, +0x0001037b, +0x0001037a, +0x00010379, +0x00010378, +0x00010377, +0x00010376, +0x00010375, +0x00010374, +0x00010373, +0x00010372, +0x00010371, +0x00010370, +0x0001036f, +0x0001036e, +0x0001036d, +0x0001036c, +0x0001036a, +0x00010369, +0x00010368, +0x00010367, +0x00010366, +0x00010365, +0x00010364, +0x00010363, +0x00010362, +0x00010361, +0x00010360, +0x0001035f, +0x0001035e, +0x0001035c, +0x0001035b, +0x0001035a, +0x00010359, +0x00010358, +0x00010357, +0x00010356, +0x00010355, +0x00010354, +0x00010353, +0x00010352, +0x00010351, +0x00010350, +0x0001034f, +0x0001034e, +0x0001034d, +0x0001034c, +0x0001034b, +0x0001034b, +0x0001034a, +0x00010349, +0x00010348, +0x00010347, +0x00010346, +0x00010345, +0x00010344, +0x00010343, +0x00010342, +0x00010341, +0x00010340, +0x0001033f, +0x0001033e, +0x0001033d, +0x0001033c, +0x0001033b, +0x0001033a, +0x00010339, +0x00010338, +0x00010337, +0x00010336, +0x00010334, +0x00010333, +0x00010332, +0x00010331, +0x00010330, +0x0001032f, +0x0001032e, +0x0001032d, +0x0001032c, +0x0001032a, +0x00010329, +0x00010328, +0x00010327, +0x00010326, +0x00010325, +0x00010324, +0x00010323, +0x00010322, +0x00010321, +0x00010320, +0x0001031f, +0x0001031e, +0x0001031d, +0x0001031c, +0x0001031b, +0x0001031a, +0x00010319, +0x00010318, +0x00010317, +0x00010316, +0x00010315, +0x00010314, +0x00010313, +0x00010312, +0x00010311, +0x00010310, +0x0001030f, +0x0001030e, +0x0001030d, +0x0001030c, +0x0001030b, +0x0001030a, +0x00010309, +0x00010308, +0x00010307, +0x00010306, +0x00010305, +0x00010304, +0x00010303, +0x00010302, +0x00010301, +0x00010300, +0x000102ff, +0x000102fe, +0x000102fd, +0x000102fc, +0x000102fb, +0x000102fa, +0x000102f9, +0x000102f8, +0x000102f7, +0x000102f6, +0x000102f5, +0x000102f4, +0x000102f3, +0x000102f2, +0x000102f1, +0x000102f0, +0x000102ef, +0x000102ee, +0x000102ed, +0x000102ec, +0x000102eb, +0x000102ea, +0x000102e9, +0x000102e8, +0x000102e7, +0x000102e6, +0x000102e5, +0x000102e4, +0x000102e3, +0x000102e2, +0x000102e1, +0x000102e0, +0x000102df, +0x000102dd, +0x000102dc, +0x000102db, +0x000102da, +0x000102d9, +0x000102d8, +0x000102d7, +0x000102d6, +0x000102d4, +0x000102d3, +0x000102d2, +0x000102d1, +0x000102d0, +0x000102cf, +0x000102ce, +0x000102cd, +0x000102cc, +0x000102cb, +0x000102ca, +0x000102c9, +0x000102c8, +0x000102c7, +0x000102c6, +0x000102c5, +0x000102c4, +0x000102c3, +0x000102c2, +0x000102c1, +0x000102c0, +0x000102bf, +0x000102be, +0x000102bd, +0x000102bc, +0x000102bb, +0x000102ba, +0x000102b9, +0x000102b8, +0x000102b7, +0x000102b6, +0x000102b5, +0x000102b4, +0x000102b3, +0x000102b2, +0x000102b1, +0x000102b0, +0x000102af, +0x000102ae, +0x000102ad, +0x000102ac, +0x000102ab, +0x000102aa, +0x000102a9, +0x000102a8, +0x000102a7, +0x000102a6, +0x000102a5, +0x000102a4, +0x000102a3, +0x000102a2, +0x000102a1, +0x000102a0, +0x0001029f, +0x0001029e, +0x0001029d, +0x0001029c, +0x0001029b, +0x0001029a, +0x00010299, +0x00010298, +0x00010297, +0x00010296, +0x00010295, +0x00010294, +0x00010293, +0x00010292, +0x00010291, +0x00010290, +0x0001028f, +0x0001028e, +0x0001028d, +0x0001028c, +0x0001028b, +0x0001028a, +0x00010289, +0x00010288, +0x00010287, +0x00010285, +0x00010284, +0x00010283, +0x00010282, +0x00010281, +0x00010280, +0x0001027f, +0x0001027d, +0x0001027c, +0x0001027b, +0x0001027a, +0x00010279, +0x00010278, +0x00010277, +0x00010276, +0x00010275, +0x00010274, +0x00010273, +0x00010272, +0x00010271, +0x00010270, +0x0001026f, +0x0001026e, +0x0001026d, +0x0001026c, +0x0001026b, +0x0001026a, +0x00010269, +0x00010268, +0x00010267, +0x00010266, +0x00010265, +0x00010264, +0x00010263, +0x00010262, +0x00010261, +0x00010260, +0x0001025f, +0x0001025e, +0x0001025d, +0x0001025c, +0x0001025b, +0x0001025a, +0x00010259, +0x00010258, +0x00010257, +0x00010256, +0x00010255, +0x00010254, +0x00010253, +0x00010252, +0x00010251, +0x00010250, +0x0001024f, +0x0001024e, +0x0001024d, +0x0001024c, +0x0001024b, +0x0001024a, +0x00010249, +0x00010248, +0x00010247, +0x00010246, +0x00010246, +0x00010244, +0x00010243, +0x00010242, +0x00010241, +0x0001023f, +0x0001023e, +0x0001023d, +0x0001023c, +0x0001023b, +0x0001023a, +0x00010239, +0x00010238, +0x00010237, +0x00010236, +0x00010235, +0x00010234, +0x00010233, +0x00010232, +0x00010231, +0x00010230, +0x0001022f, +0x0001022e, +0x0001022d, +0x0001022c, +0x0001022b, +0x0001022a, +0x00010229, +0x00010228, +0x00010227, +0x00010226, +0x00010225, +0x00010224, +0x00010223, +0x00010222, +0x00010221, +0x00010220, +0x0001021f, +0x0001021e, +0x0001021d, +0x0001021c, +0x0001021b, +0x0001021a, +0x00010219, +0x00010218, +0x00010217, +0x00010216, +0x00010215, +0x00010214, +0x00010213, +0x00010212, +0x00010211, +0x00010210, +0x0001020f, +0x0001020e, +0x0001020d, +0x0001020c, +0x0001020b, +0x0001020a, +0x00010209, +0x00010208, +0x00010207, +0x00010206, +0x00010205, +0x00010204, +0x00010203, +0x00010202, +0x00010201, +0x00010200, +0x000101ff, +0x000101fe, +0x000101fd, +0x000101fc, +0x000101fb, +0x000101fa, +0x000101f9, +0x000101f8, +0x000101f7, +0x000101f6, +0x000101f5, +0x000101f4, +0x000101f3, +0x000101f2, +0x000101f1, +0x000101f0, +0x000101ef, +0x000101ee, +0x000101ed, +0x000101ec, +0x000101eb, +0x000101ea, +0x000101e9, +0x000101e8, +0x000101e7, +0x000101e6, +0x000101e5, +0x000101e4, +0x000101e3, +0x000101e2, +0x000101e1, +0x000101e0, +0x000101df, +0x000101de, +0x000101dd, +0x000101dc, +0x000101db, +0x000101da, +0x000101d9, +0x000101d8, +0x000101d7, +0x000101d6, +0x000101d5, +0x000101d4, +0x000101d3, +0x000101d2, +0x000101d1, +0x000101d0, +0x000101cf, +0x000101ce, +0x000101cd, +0x000101cc, +0x000101cb, +0x000101ca, +0x000101c9, +0x000101c8, +0x000101c7, +0x000101c6, +0x000101c5, +0x000101c4, +0x000101c2, +0x000101c1, +0x000101c0, +0x000101be, +0x000101bd, +0x000101bc, +0x000101bb, +0x000101ba, +0x000101b9, +0x000101b8, +0x000101b7, +0x000101b6, +0x000101b5, +0x000101b4, +0x000101b3, +0x000101b2, +0x000101b1, +0x000101b0, +0x000101af, +0x000101ae, +0x000101ad, +0x000101ac, +0x000101ab, +0x000101aa, +0x000101a9, +0x000101a8, +0x000101a7, +0x000101a6, +0x000101a5, +0x000101a4, +0x000101a3, +0x000101a2, +0x000101a1, +0x000101a0, +0x0001019f, +0x0001019e, +0x0001019d, +0x0001019c, +0x0001019b, +0x0001019a, +0x00010199, +0x00010198, +0x00010197, +0x00010196, +0x00010195, +0x00010194, +0x00010193, +0x00010192, +0x00010191, +0x00010190, +0x0001018f, +0x0001018e, +0x0001018d, +0x0001018c, +0x0001018b, +0x0001018a, +0x00010189, +0x00010188, +0x00010187, +0x00010186, +0x00010185, +0x00010184, +0x00010183, +0x00010182, +0x00010181, +0x00010180, +0x0001017f, +0x0001017e, +0x0001017d, +0x0001017c, +0x0001017b, +0x0001017a, +0x00010179, +0x00010178, +0x00010177, +0x00010176, +0x00010175, +0x00010174, +0x00010173, +0x00010172, +0x00010171, +0x00010170, +0x0001016f, +0x0001016e, +0x0001016d, +0x0001016c, +0x0001016b, +0x0001016a, +0x00010169, +0x00010168, +0x00010167, +0x00010166, +0x00010165, +0x00010164, +0x00010163, +0x00010162, +0x00010161, +0x00010160, +0x0001015f, +0x0001015e, +0x0001015d, +0x0001015c, +0x0001015b, +0x0001015a, +0x00010159, +0x00010158, +0x00010157, +0x00010156, +0x00010155, +0x00010154, +0x00010153, +0x00010152, +0x00010151, +0x00010150, +0x0001014f, +0x0001014e, +0x0001014d, +0x0001014c, +0x0001014b, +0x0001014a, +0x00010149, +0x00010148, +0x00010147, +0x00010146, +0x00010145, +0x00010144, +0x00010143, +0x00010141, +0x00010140, +0x0001013f, +0x0001013e, +0x0001013d, +0x0001013c, +0x0001013b, +0x0001013a, +0x00010139, +0x00010138, +0x00010137, +0x00010136, +0x00010135, +0x00010134, +0x00010133, +0x00010132, +0x00010131, +0x00010130, +0x0001012f, +0x0001012e, +0x0001012d, +0x0001012c, +0x0001012b, +0x0001012a, +0x00010129, +0x00010128, +0x00010127, +0x00010126, +0x00010125, +0x00010124, +0x00010123, +0x00010122, +0x00010121, +0x00010120, +0x0001011f, +0x0001011e, +0x0001011d, +0x0001011c, +0x0001011b, +0x0001011a, +0x00010119, +0x00010118, +0x00010117, +0x00010116, +0x00010115, +0x00010114, +0x00010113, +0x00010112, +0x00010111, +0x00010110, +0x0001010f, +0x0001010e, +0x0001010d, +0x0001010c, +0x0001010b, +0x0001010a, +0x00010109, +0x00010108, +0x00010107, +0x00010106, +0x00010105, +0x00010104, +0x00010103, +0x00010102, +0x00010101, +0x00010100, +0x000100ff, +0x000100fe, +0x000100fd, +0x000100fc, +0x000100fb, +0x000100fa, +0x000100f9, +0x000100f8, +0x000100f7, +0x000100f6, +0x000100f5, +0x000100f4, +0x000100f3, +0x000100f2, +0x000100f1, +0x000100f0, +0x000100ef, +0x000100ee, +0x000100ed, +0x000100ec, +0x000100eb, +0x000100ea, +0x000100e9, +0x000100e8, +0x000100e7, +0x000100e6, +0x000100e5, +0x000100e4, +0x000100e3, +0x000100e2, +0x000100e1, +0x000100e0, +0x000100df, +0x000100de, +0x000100dd, +0x000100dc, +0x000100db, +0x000100da, +0x000100d9, +0x000100d8, +0x000100d7, +0x000100d6, +0x000100d5, +0x000100d4, +0x000100d3, +0x000100d2, +0x000100d1, +0x000100d0, +0x000100cf, +0x000100ce, +0x000100cd, +0x000100cc, +0x000100cb, +0x000100ca, +0x000100c9, +0x000100c8, +0x000100c7, +0x000100c6, +0x000100c5, +0x000100c4, +0x000100c3, +0x000100c2, +0x000100c1, +0x000100c0, +0x000100bf, +0x000100be, +0x000100bd, +0x000100bc, +0x000100bb, +0x000100ba, +0x000100b9, +0x000100b8, +0x000100b7, +0x000100b6, +0x000100b5, +0x000100b4, +0x000100b3, +0x000100b2, +0x000100b1, +0x000100b0, +0x000100af, +0x000100ae, +0x000100ad, +0x000100ac, +0x000100ab, +0x000100aa, +0x000100a9, +0x000100a8, +0x000100a7, +0x000100a6, +0x000100a5, +0x000100a4, +0x000100a3, +0x000100a2, +0x000100a1, +0x000100a0, +0x0001009f, +0x0001009e, +0x0001009d, +0x0001009c, +0x0001009b, +0x0001009a, +0x00010099, +0x00010098, +0x00010097, +0x00010096, +0x00010095, +0x00010094, +0x00010093, +0x00010092, +0x00010091, +0x00010090, +0x0001008f, +0x0001008e, +0x0001008d, +0x0001008c, +0x0001008b, +0x0001008a, +0x00010089, +0x00010088, +0x00010087, +0x00010086, +0x00010085, +0x00010084, +0x00010083, +0x00010082, +0x00010081, +0x0001007e, +0x0001007d, +0x0001007c, +0x0001007b, +0x0001007a, +0x00010079, +0x00010078, +0x00010077, +0x00010076, +0x00010075, +0x00010074, +0x00010073, +0x00010072, +0x00010071, +0x00010070, +0x0001006f, +0x0001006e, +0x0001006d, +0x0001006c, +0x0001006b, +0x0001006a, +0x00010069, +0x00010068, +0x00010067, +0x00010066, +0x00010065, +0x00010064, +0x00010063, +0x00010062, +0x00010061, +0x00010060, +0x0001005f, +0x0001005e, +0x0001005d, +0x0001005c, +0x0001005b, +0x0001005a, +0x00010059, +0x00010058, +0x00010057, +0x00010056, +0x00010055, +0x00010054, +0x00010053, +0x00010052, +0x00010051, +0x00010050, +0x0001004f, +0x0001004e, +0x0001004d, +0x0001004c, +0x0001004b, +0x0001004a, +0x00010049, +0x00010048, +0x00010047, +0x00010046, +0x00010045, +0x00010044, +0x00010043, +0x00010042, +0x00010041, +0x00010040, +0x0001003f, +0x0001003e, +0x0001003d, +0x0001003c, +0x0001003b, +0x0001003a, +0x00010039, +0x00010038, +0x00010037, +0x00010036, +0x00010035, +0x00010034, +0x00010033, +0x00010032, +0x00010031, +0x00010030, +0x0001002f, +0x0001002e, +0x0001002d, +0x0001002c, +0x0001002b, +0x0001002a, +0x00010029, +0x00010028, +0x00010027, +0x00010026, +0x00010025, +0x00010024, +0x00010023, +0x00010022, +0x00010021, +0x00010020, +0x0001001f, +0x0001001e, +0x0001001d, +0x0001001c, +0x0001001b, +0x0001001a, +0x00010019, +0x00010018, +0x00010017, +0x00010016, +0x00010015, +0x00010014, +0x00010013, +0x00010012, +0x00010011, +0x00010010, +0x0001000f, +0x0001000e, +0x0001000d, +0x0001000c, +0x0001000b, +0x0001000a, +0x00010009, +0x00010008, +0x00010007, +0x00010006, +0x00010005, +0x00010004, +0x00010003, +0x00010002, +0x00010001, +0x00010000, diff --git a/libmednahawk/src/psx/input/dualanalog.cpp b/libmednahawk/src/psx/input/dualanalog.cpp new file mode 100644 index 0000000000..a0a6d9d8f4 --- /dev/null +++ b/libmednahawk/src/psx/input/dualanalog.cpp @@ -0,0 +1,285 @@ +#include "../psx.h" +#include "../frontio.h" +#include "dualanalog.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_DualAnalog : public InputDevice +{ + public: + + InputDevice_DualAnalog(bool joystick_mode_); + virtual ~InputDevice_DualAnalog(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + bool joystick_mode; + bool dtr; + + uint8 buttons[2]; + uint8 axes[2][2]; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[8]; + uint32 transmit_pos; + uint32 transmit_count; +}; + +InputDevice_DualAnalog::InputDevice_DualAnalog(bool joystick_mode_) : joystick_mode(joystick_mode_) +{ + Power(); +} + +InputDevice_DualAnalog::~InputDevice_DualAnalog() +{ + +} + +void InputDevice_DualAnalog::Power(void) +{ + dtr = 0; + + buttons[0] = buttons[1] = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; +} + +void InputDevice_DualAnalog::UpdateInput(const void *data) +{ + uint8 *d8 = (uint8 *)data; + + buttons[0] = d8[0]; + buttons[1] = d8[1]; + + for(int stick = 0; stick < 2; stick++) + { + for(int axis = 0; axis < 2; axis++) + { + int32 tmp; + + tmp = 32768 + MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 4) - ((int32)MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 8) * 32768 / 32767); + tmp >>= 8; + + axes[stick][axis] = tmp; + } + } + + //printf("%d %d %d %d\n", axes[0][0], axes[0][1], axes[1][0], axes[1][1]); + +} + + +void InputDevice_DualAnalog::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } + + dtr = new_dtr; +} + +bool InputDevice_DualAnalog::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_DualAnalog::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //printf("[PAD] Receive: %02x -- command_phase=%d\n", receive_buffer, command_phase); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + transmit_buffer[0] = joystick_mode ? 0x53 : 0x73; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + //if(command != 0x42) + // fprintf(stderr, "Gamepad unhandled command: 0x%02x\n", command); + + if(command == 0x42) + { + transmit_buffer[1] = 0xFF ^ buttons[0]; + transmit_buffer[2] = 0xFF ^ buttons[1]; + transmit_buffer[3] = axes[0][0]; + transmit_buffer[4] = axes[0][1]; + transmit_buffer[5] = axes[1][0]; + transmit_buffer[6] = axes[1][1]; + transmit_pos = 0; + transmit_count = 7; + } + else + { + command_phase = -1; + transmit_buffer[1] = 0; + transmit_buffer[2] = 0; + transmit_pos = 0; + transmit_count = 0; + } + break; + case 2: + //if(receive_buffer) + // printf("%d: %02x\n", 7 - transmit_count, receive_buffer); + break; + } + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 0x40; //0x100; + + return(ret); +} + +InputDevice *Device_DualAnalog_Create(bool joystick_mode) +{ + return new InputDevice_DualAnalog(joystick_mode); +} + + +InputDeviceInputInfoStruct Device_DualAnalog_IDII[24] = +{ + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "l3", "Left Stick, Button(L3)", 18, IDIT_BUTTON, NULL }, + { "r3", "Right stick, Button(R3)", 23, IDIT_BUTTON, NULL }, + { "start", "START", 5, IDIT_BUTTON, NULL }, + { "up", "D-Pad UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "D-Pad RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "D-Pad DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "D-Pad LEFT â†", 2, IDIT_BUTTON, "right" }, + + { "l2", "L2 (rear left shoulder)", 11, IDIT_BUTTON, NULL }, + { "r2", "R2 (rear right shoulder)", 13, IDIT_BUTTON, NULL }, + { "l1", "L1 (front left shoulder)", 10, IDIT_BUTTON, NULL }, + { "r1", "R1 (front right shoulder)", 12, IDIT_BUTTON, NULL }, + + { "triangle", "â–³ (upper)", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "circle", "â—‹ (right)", 9, IDIT_BUTTON_CAN_RAPID, NULL }, + { "cross", "x (lower)", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "square", "â–¡ (left)", 8, IDIT_BUTTON_CAN_RAPID, NULL }, + + { "rstick_right", "Right Stick RIGHT →", 22, IDIT_BUTTON_ANALOG }, + { "rstick_left", "Right Stick LEFT â†", 21, IDIT_BUTTON_ANALOG }, + { "rstick_down", "Right Stick DOWN ↓", 20, IDIT_BUTTON_ANALOG }, + { "rstick_up", "Right Stick UP ↑", 19, IDIT_BUTTON_ANALOG }, + + { "lstick_right", "Left Stick RIGHT →", 17, IDIT_BUTTON_ANALOG }, + { "lstick_left", "Left Stick LEFT â†", 16, IDIT_BUTTON_ANALOG }, + { "lstick_down", "Left Stick DOWN ↓", 15, IDIT_BUTTON_ANALOG }, + { "lstick_up", "Left Stick UP ↑", 14, IDIT_BUTTON_ANALOG }, + +}; + +// Not sure if all these buttons are named correctly! +InputDeviceInputInfoStruct Device_AnalogJoy_IDII[24] = +{ + { "select", "SELECT", 8, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + { "start", "START", 9, IDIT_BUTTON, NULL }, + { "up", "Thumbstick UP ↑", 14, IDIT_BUTTON, "down" }, + { "right", "Thumbstick RIGHT →", 17, IDIT_BUTTON, "left" }, + { "down", "Thumbstick DOWN ↓", 15, IDIT_BUTTON, "up" }, + { "left", "Thumbstick LEFT â†", 16, IDIT_BUTTON, "right" }, + + { "l2", "Left stick, Trigger", 2, IDIT_BUTTON, NULL }, + { "r2", "Left stick, Pinky", 3, IDIT_BUTTON, NULL }, + { "l1", "Left stick, L-thumb", 0, IDIT_BUTTON, NULL }, + { "r1", "Left stick, R-thumb", 1, IDIT_BUTTON, NULL }, + + { "triangle", "Right stick, Pinky", 13, IDIT_BUTTON, NULL }, + { "circle", "Right stick, R-thumb", 11, IDIT_BUTTON, NULL }, + { "cross", "Right stick, L-thumb", 10, IDIT_BUTTON, NULL }, + { "square", "Right stick, Trigger", 12, IDIT_BUTTON, NULL }, + + { "rstick_right", "Right Stick, RIGHT →", 21, IDIT_BUTTON_ANALOG }, + { "rstick_left", "Right Stick, LEFT â†", 20, IDIT_BUTTON_ANALOG }, + { "rstick_down", "Right Stick, BACK ↓", 19, IDIT_BUTTON_ANALOG }, + { "rstick_up", "Right Stick, FORE ↑", 18, IDIT_BUTTON_ANALOG }, + + { "lstick_right", "Left Stick, RIGHT →", 7, IDIT_BUTTON_ANALOG }, + { "lstick_left", "Left Stick, LEFT â†", 6, IDIT_BUTTON_ANALOG }, + { "lstick_down", "Left Stick, BACK ↓", 5, IDIT_BUTTON_ANALOG }, + { "lstick_up", "Left Stick, FORE ↑", 4, IDIT_BUTTON_ANALOG }, + +}; + + +} diff --git a/libmednahawk/src/psx/input/dualanalog.h b/libmednahawk/src/psx/input/dualanalog.h new file mode 100644 index 0000000000..b6bc9afb94 --- /dev/null +++ b/libmednahawk/src/psx/input/dualanalog.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_INPUT_DUALANALOG_H +#define __MDFN_PSX_INPUT_DUALANALOG_H + +namespace MDFN_IEN_PSX +{ + +InputDevice *Device_DualAnalog_Create(bool joystick_mode); +extern InputDeviceInputInfoStruct Device_DualAnalog_IDII[24]; +extern InputDeviceInputInfoStruct Device_AnalogJoy_IDII[24]; +} +#endif diff --git a/libmednahawk/src/psx/input/dualshock.cpp b/libmednahawk/src/psx/input/dualshock.cpp new file mode 100644 index 0000000000..55b6c276b5 --- /dev/null +++ b/libmednahawk/src/psx/input/dualshock.cpp @@ -0,0 +1,1025 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../psx.h" +#include "../frontio.h" +#include "dualshock.h" + +/* + TODO: + If we ever call Update() more than once per video frame(IE 50/60Hz), we'll need to add debounce logic to the analog mode button evaluation code. +*/ + +/* Notes: + + Both DA and DS style rumblings work in both analog and digital modes. + + Regarding getting Dual Shock style rumble working, Sony is evil and/or mean. The owl tells me to burn Sony with boiling oil. + + To enable Dual Shock-style rumble, the game has to at least enter MAD MUNCHKINS MODE with command 0x43, and send the appropriate data(not the actual rumble type data per-se) + with command 0x4D. + + DualAnalog-style rumble support seems to be borked until power loss if MAD MUNCHKINS MODE is even entered once...investigate further. + + Command 0x44 in MAD MUNCHKINS MODE can turn on/off analog mode(and the light with it). + + Command 0x42 in MAD MUNCHKINS MODE will return the analog mode style gamepad data, even when analog mode is off. In combination with command 0x44, this could hypothetically + be used for using the light in the gamepad as some kind of game mechanic). + + Dual Analog-style rumble notes(some of which may apply to DS too): + Rumble appears to stop if you hold DTR active(TODO: for how long? instant?). (TODO: investigate if it's still stopped even if a memory card device number is sent. It may be, since rumble may + cause excessive current draw in combination with memory card access) + + Rumble will work even if you interrupt the communication process after you've sent the rumble data(via command 0x42). + Though if you interrupt it when you've only sent partial rumble data, dragons will eat you and I don't know(seems to have timing-dependent or random effects or something; + based on VERY ROUGH testing). +*/ + +namespace MDFN_IEN_PSX +{ + +class InputDevice_DualShock : public InputDevice +{ + public: + + InputDevice_DualShock(const std::string &arg_name); + virtual ~InputDevice_DualShock(); + + virtual void Power(void); + virtual void Update(const pscpu_timestamp_t timestamp); + virtual void ResetTS(void); + virtual void UpdateInput(const void *data); + + virtual void SetAMCT(bool enabled); + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + void CheckManualAnaModeChange(void); + + // + // + bool cur_ana_button_state; + bool prev_ana_button_state; + int64 combo_anatoggle_counter; + // + + bool da_rumble_compat; + + bool analog_mode; + bool analog_mode_locked; + + bool mad_munchkins; + uint8 rumble_magic[6]; + + uint8 rumble_param[2]; + + bool dtr; + + uint8 buttons[2]; + uint8 axes[2][2]; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[8]; + uint32 transmit_pos; + uint32 transmit_count; + + // + // + // + bool am_prev_info; + bool aml_prev_info; + std::string gp_name; + pscpu_timestamp_t lastts; + + // + // + bool amct_enabled; +}; + +InputDevice_DualShock::InputDevice_DualShock(const std::string &name) +{ + gp_name = name; + Power(); + am_prev_info = analog_mode; + aml_prev_info = analog_mode_locked; + amct_enabled = false; +} + +InputDevice_DualShock::~InputDevice_DualShock() +{ + +} + +void InputDevice_DualShock::Update(const pscpu_timestamp_t timestamp) +{ + lastts = timestamp; +} + +void InputDevice_DualShock::ResetTS(void) +{ + //printf("%lld\n", combo_anatoggle_counter); + if(combo_anatoggle_counter >= 0) + combo_anatoggle_counter += lastts; + lastts = 0; +} + +void InputDevice_DualShock::SetAMCT(bool enabled) +{ + amct_enabled = enabled; +} + +// +// This simulates the behavior of the actual DualShock(analog toggle button evaluation is suspended while DTR is active). +// Call in Update(), and whenever dtr goes inactive in the port access code. +void InputDevice_DualShock::CheckManualAnaModeChange(void) +{ + if(!dtr) + { + bool need_mode_toggle = false; + + if(amct_enabled) + { + if(buttons[0] == 0x09 && buttons[1] == 0x0f) + { + if(combo_anatoggle_counter == -1) + combo_anatoggle_counter = 0; + else if(combo_anatoggle_counter >= (44100 * 768)) + { + need_mode_toggle = true; + combo_anatoggle_counter = -2; + } + } + else + combo_anatoggle_counter = -1; + } + else + { + combo_anatoggle_counter = -1; + if(cur_ana_button_state && (cur_ana_button_state != prev_ana_button_state)) + { + need_mode_toggle = true; + } + } + + if(need_mode_toggle) + { + if(analog_mode_locked) + { + MDFN_DispMessage(_("%s: Analog mode is locked %s."), gp_name.c_str(), analog_mode ? _("on") : _("off")); + } + else + analog_mode = !analog_mode; + } + + prev_ana_button_state = cur_ana_button_state; // Don't move this outside of the if(!dtr) block! + } +} + +void InputDevice_DualShock::Power(void) +{ + combo_anatoggle_counter = -2; + lastts = 0; + // + // + + dtr = 0; + + buttons[0] = buttons[1] = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; + + analog_mode = false; + analog_mode_locked = false; + + mad_munchkins = false; + memset(rumble_magic, 0, sizeof(rumble_magic)); + memset(rumble_param, 0, sizeof(rumble_param)); + + da_rumble_compat = true; + + prev_ana_button_state = false; +} + +void InputDevice_DualShock::UpdateInput(const void *data) +{ + uint8 *d8 = (uint8 *)data; + + buttons[0] = d8[0]; + buttons[1] = d8[1]; + cur_ana_button_state = d8[2] & 0x01; + + for(int stick = 0; stick < 2; stick++) + { + for(int axis = 0; axis < 2; axis++) + { + int32 tmp; + + tmp = 32768 + MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 4) - ((int32)MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 8) * 32768 / 32767); + tmp >>= 8; + + axes[stick][axis] = tmp; + } + } + + if(da_rumble_compat == false) + { + uint8 sneaky_weaky = 0; + + if(rumble_param[0] == 0x01) + sneaky_weaky = 0xFF; + + MDFN_en32lsb(&d8[4 + 32 + 0], (sneaky_weaky << 0) | (rumble_param[1] << 8)); + } + else + { + uint8 sneaky_weaky = 0; + + if(((rumble_param[0] & 0xC0) == 0x40) && ((rumble_param[1] & 0x01) == 0x01)) + sneaky_weaky = 0xFF; + + MDFN_en32lsb(&d8[4 + 32 + 0], sneaky_weaky << 0); + } + + //printf("%d %d %d %d\n", axes[0][0], axes[0][1], axes[1][0], axes[1][1]); + + // + // + // + CheckManualAnaModeChange(); + + if(am_prev_info != analog_mode || aml_prev_info != analog_mode_locked) + { + MDFN_DispMessage(_("%s: Analog mode is %s(%s)."), gp_name.c_str(), analog_mode ? _("on") : _("off"), analog_mode_locked ? _("locked") : _("unlocked")); + } + am_prev_info = analog_mode; + aml_prev_info = analog_mode_locked; +} + + +void InputDevice_DualShock::SetDTR(bool new_dtr) +{ + const bool old_dtr = dtr; + dtr = new_dtr; // Set it to new state before we call CheckManualAnaModeChange(). + + if(!old_dtr && dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(old_dtr && !dtr) + { + CheckManualAnaModeChange(); + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } +} + +bool InputDevice_DualShock::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_DualShock::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //if(command == 0x44) + //if(mad_munchkins || command == 0x43) + // fprintf(stderr, "[PAD] Receive: %02x -- command=%02x, command_phase=%d, transmit_pos=%d\n", receive_buffer, command, command_phase, transmit_pos); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + if(mad_munchkins) + { + transmit_buffer[0] = 0xF3; + transmit_pos = 0; + transmit_count = 1; + command_phase = 101; + } + else + { + transmit_buffer[0] = analog_mode ? 0x73 : 0x41; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + } + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + //fprintf(stderr, "Gamepad command: 0x%02x\n", command); + //if(command != 0x42 && command != 0x43) + // fprintf(stderr, "Gamepad unhandled command: 0x%02x\n", command); + + if(command == 0x42) + { + transmit_buffer[0] = 0x5A; + transmit_pos = 0; + transmit_count = 1; + command_phase = (command << 8) | 0x00; + } + else if(command == 0x43) + { + transmit_pos = 0; + if(analog_mode) + { + transmit_buffer[1] = 0xFF ^ buttons[0]; + transmit_buffer[2] = 0xFF ^ buttons[1]; + transmit_buffer[3] = axes[0][0]; + transmit_buffer[4] = axes[0][1]; + transmit_buffer[5] = axes[1][0]; + transmit_buffer[6] = axes[1][1]; + transmit_count = 7; + } + else + { + transmit_buffer[1] = 0xFF ^ buttons[0]; + transmit_buffer[2] = 0xFF ^ buttons[1]; + transmit_count = 3; + } + } + else + { + command_phase = -1; + transmit_buffer[1] = 0; + transmit_buffer[2] = 0; + transmit_pos = 0; + transmit_count = 0; + } + break; + + case 2: + { + if(command == 0x43 && transmit_pos == 2 && (receive_buffer == 0x01)) + { + //fprintf(stderr, "Mad Munchkins mode entered!\n"); + mad_munchkins = true; + + if(da_rumble_compat) + { + rumble_param[0] = 0; + rumble_param[1] = 0; + da_rumble_compat = false; + } + command_phase = -1; + } + } + break; + + case 101: + command = receive_buffer; + + //fprintf(stderr, "Mad Munchkins DualShock command: 0x%02x\n", command); + + if(command >= 0x40 && command <= 0x4F) + { + transmit_buffer[0] = 0x5A; + transmit_pos = 0; + transmit_count = 1; + command_phase = (command << 8) | 0x00; + } + else + { + transmit_count = 0; + command_phase = -1; + } + break; + + /************************/ + /* MMMode 1, Command 0x40 */ + /************************/ + case 0x4000: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4001: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + + /************************/ + /* MMMode 1, Command 0x41 */ + /************************/ + case 0x4100: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4101: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /**************************/ + /* MMMode 0&1, Command 0x42 */ + /**************************/ + case 0x4200: + transmit_pos = 0; + if(analog_mode || mad_munchkins) + { + transmit_buffer[0] = 0xFF ^ buttons[0]; + transmit_buffer[1] = 0xFF ^ buttons[1]; + transmit_buffer[2] = axes[0][0]; + transmit_buffer[3] = axes[0][1]; + transmit_buffer[4] = axes[1][0]; + transmit_buffer[5] = axes[1][1]; + transmit_count = 6; + } + else + { + transmit_buffer[0] = 0xFF ^ buttons[0]; + transmit_buffer[1] = 0xFF ^ buttons[1]; + transmit_count = 2; + } + command_phase++; + break; + + case 0x4201: // Weak(in DS mode) + if(da_rumble_compat || (rumble_magic[0] == 0x00 && rumble_magic[2] != 0x00 && rumble_magic[3] != 0x00 && rumble_magic[4] != 0x00 && rumble_magic[5] != 0x00)) + rumble_param[0] = receive_buffer; + command_phase++; + break; + + case 0x4202: // Strong(in DS mode) + if(da_rumble_compat || rumble_magic[1] == 0x01) + rumble_param[1] = receive_buffer; + command_phase++; // Nowhere here we come! + break; + + /************************/ + /* MMMode 1, Command 0x43 */ + /************************/ + case 0x4300: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4301: + if(receive_buffer == 0x00) + { + //fprintf(stderr, "Mad Munchkins mode left!\n"); + mad_munchkins = false; + } + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x44 */ + /************************/ + case 0x4400: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4401: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase++; + + // Ignores locking state. + switch(receive_buffer) + { + case 0x00: + analog_mode = false; + //fprintf(stderr, "Analog mode disabled\n"); + break; + + case 0x01: + analog_mode = true; + //fprintf(stderr, "Analog mode enabled\n"); + break; + } + break; + + case 0x4402: + switch(receive_buffer) + { + case 0x02: + analog_mode_locked = false; + break; + + case 0x03: + analog_mode_locked = true; + break; + } + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x45 */ + /************************/ + case 0x4500: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0x01; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4501: + transmit_buffer[0] = 0x02; + transmit_buffer[1] = analog_mode ? 0x01 : 0x00; + transmit_buffer[2] = 0x02; + transmit_buffer[3] = 0x01; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + + /************************/ + /* MMMode 1, Command 0x46 */ + /************************/ + case 0x4600: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4601: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x01; + transmit_buffer[2] = 0x02; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x0A; + } + else if(receive_buffer == 0x01) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x01; + transmit_buffer[2] = 0x01; + transmit_buffer[3] = 0x01; + transmit_buffer[4] = 0x14; + } + else + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + } + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x47 */ + /************************/ + case 0x4700: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4701: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x02; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x01; + transmit_buffer[4] = 0x00; + } + else + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + } + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x48 */ + /************************/ + case 0x4800: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4801: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x01; + transmit_buffer[4] = rumble_param[0]; + } + else if(receive_buffer == 0x01) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x01; + transmit_buffer[4] = rumble_param[1]; + } + else + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + } + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x49 */ + /************************/ + case 0x4900: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4901: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x4A */ + /************************/ + case 0x4A00: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4A01: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x4B */ + /************************/ + case 0x4B00: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4B01: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x4C */ + /************************/ + case 0x4C00: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4C01: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x04; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + } + else if(receive_buffer == 0x01) + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x07; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + } + else + { + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + } + + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + /************************/ + /* MMMode 1, Command 0x4D */ + /************************/ + case 0x4D00: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = rumble_magic[0]; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4D01: + case 0x4D02: + case 0x4D03: + case 0x4D04: + case 0x4D05: + case 0x4D06: + { + unsigned index = command_phase - 0x4D01; + + if(index < 5) + { + transmit_buffer[0] = rumble_magic[1 + index]; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + else + command_phase = -1; + + rumble_magic[index] = receive_buffer; + } + break; + + /************************/ + /* MMMode 1, Command 0x4E */ + /************************/ + case 0x4E00: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4E01: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + + + /************************/ + /* MMMode 1, Command 0x4F */ + /************************/ + case 0x4F00: + if(receive_buffer == 0x00) + { + transmit_buffer[0] = 0; /**/ transmit_pos = 0; transmit_count = 1; /**/ + command_phase++; + } + else + command_phase = -1; + break; + + case 0x4F01: + transmit_buffer[0] = 0x00; + transmit_buffer[1] = 0x00; + transmit_buffer[2] = 0x00; + transmit_buffer[3] = 0x00; + transmit_buffer[4] = 0x00; + transmit_pos = 0; + transmit_count = 5; + command_phase = -1; + break; + } + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 0x40; //0x100; + + return(ret); +} + +InputDevice *Device_DualShock_Create(const std::string &name) +{ + return new InputDevice_DualShock(name); +} + + +InputDeviceInputInfoStruct Device_DualShock_IDII[26] = +{ + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "l3", "Left Stick, Button(L3)", 18, IDIT_BUTTON, NULL }, + { "r3", "Right stick, Button(R3)", 23, IDIT_BUTTON, NULL }, + { "start", "START", 5, IDIT_BUTTON, NULL }, + { "up", "D-Pad UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "D-Pad RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "D-Pad DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "D-Pad LEFT â†", 2, IDIT_BUTTON, "right" }, + + { "l2", "L2 (rear left shoulder)", 11, IDIT_BUTTON, NULL }, + { "r2", "R2 (rear right shoulder)", 13, IDIT_BUTTON, NULL }, + { "l1", "L1 (front left shoulder)", 10, IDIT_BUTTON, NULL }, + { "r1", "R1 (front right shoulder)", 12, IDIT_BUTTON, NULL }, + + { "triangle", "â–³ (upper)", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "circle", "â—‹ (right)", 9, IDIT_BUTTON_CAN_RAPID, NULL }, + { "cross", "x (lower)", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "square", "â–¡ (left)", 8, IDIT_BUTTON_CAN_RAPID, NULL }, + + { "analog", "Analog(mode toggle)", 24, IDIT_BUTTON, NULL }, + + { "rstick_right", "Right Stick RIGHT →", 22, IDIT_BUTTON_ANALOG }, + { "rstick_left", "Right Stick LEFT â†", 21, IDIT_BUTTON_ANALOG }, + { "rstick_down", "Right Stick DOWN ↓", 20, IDIT_BUTTON_ANALOG }, + { "rstick_up", "Right Stick UP ↑", 19, IDIT_BUTTON_ANALOG }, + + { "lstick_right", "Left Stick RIGHT →", 17, IDIT_BUTTON_ANALOG }, + { "lstick_left", "Left Stick LEFT â†", 16, IDIT_BUTTON_ANALOG }, + { "lstick_down", "Left Stick DOWN ↓", 15, IDIT_BUTTON_ANALOG }, + { "lstick_up", "Left Stick UP ↑", 14, IDIT_BUTTON_ANALOG }, + + { "rumble", "RUMBLE MONSTER RUMBA", 100, IDIT_RUMBLE }, +}; + +} diff --git a/libmednahawk/src/psx/input/dualshock.h b/libmednahawk/src/psx/input/dualshock.h new file mode 100644 index 0000000000..e40705b9ec --- /dev/null +++ b/libmednahawk/src/psx/input/dualshock.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_INPUT_DUALSHOCK_H +#define __MDFN_PSX_INPUT_DUALSHOCK_H + +#include + +namespace MDFN_IEN_PSX +{ +InputDevice *Device_DualShock_Create(const std::string &name); +extern InputDeviceInputInfoStruct Device_DualShock_IDII[26]; +} +#endif diff --git a/libmednahawk/src/psx/input/gamepad.cpp b/libmednahawk/src/psx/input/gamepad.cpp new file mode 100644 index 0000000000..65ee2fe9eb --- /dev/null +++ b/libmednahawk/src/psx/input/gamepad.cpp @@ -0,0 +1,238 @@ +#include "../psx.h" +#include "../frontio.h" +#include "gamepad.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_Gamepad : public InputDevice +{ + public: + + InputDevice_Gamepad(); + virtual ~InputDevice_Gamepad(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + bool dtr; + + uint8 buttons[2]; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[3]; + uint32 transmit_pos; + uint32 transmit_count; +}; + +InputDevice_Gamepad::InputDevice_Gamepad() +{ + Power(); +} + +InputDevice_Gamepad::~InputDevice_Gamepad() +{ + +} + +void InputDevice_Gamepad::Power(void) +{ + dtr = 0; + + buttons[0] = buttons[1] = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; +} + +void InputDevice_Gamepad::UpdateInput(const void *data) +{ + uint8 *d8 = (uint8 *)data; + + buttons[0] = d8[0]; + buttons[1] = d8[1]; +} + + +void InputDevice_Gamepad::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } + + dtr = new_dtr; +} + +bool InputDevice_Gamepad::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_Gamepad::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //printf("[PAD] Receive: %02x -- command_phase=%d\n", receive_buffer, command_phase); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + transmit_buffer[0] = 0x41; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + //if(command != 0x42) + // fprintf(stderr, "Gamepad unhandled command: 0x%02x\n", command); + //assert(command == 0x42); + if(command == 0x42) + { + transmit_buffer[1] = 0xFF ^ buttons[0]; + transmit_buffer[2] = 0xFF ^ buttons[1]; + transmit_pos = 0; + transmit_count = 3; + } + else + { + command_phase = -1; + transmit_buffer[1] = 0; + transmit_buffer[2] = 0; + transmit_pos = 0; + transmit_count = 0; + } + break; + + } + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 0x40; //0x100; + + return(ret); +} + +InputDevice *Device_Gamepad_Create(void) +{ + return new InputDevice_Gamepad(); +} + + +InputDeviceInputInfoStruct Device_Gamepad_IDII[16] = +{ + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + { "start", "START", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + + { "l2", "L2 (rear left shoulder)", 11, IDIT_BUTTON, NULL }, + { "r2", "R2 (rear right shoulder)", 13, IDIT_BUTTON, NULL }, + { "l1", "L1 (front left shoulder)", 10, IDIT_BUTTON, NULL }, + { "r1", "R1 (front right shoulder)", 12, IDIT_BUTTON, NULL }, + + { "triangle", "â–³ (upper)", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "circle", "â—‹ (right)", 9, IDIT_BUTTON_CAN_RAPID, NULL }, + { "cross", "x (lower)", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "square", "â–¡ (left)", 8, IDIT_BUTTON_CAN_RAPID, NULL }, +}; + +InputDeviceInputInfoStruct Device_Dancepad_IDII[16] = +{ + { "select", "SELECT", 0, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON }, + { NULL, "empty", 0, IDIT_BUTTON }, + { "start", "START", 1, IDIT_BUTTON, NULL }, + + { "up", "UP ↑", 3, IDIT_BUTTON, NULL }, + { "right", "RIGHT →", 6, IDIT_BUTTON, NULL }, + { "down", "DOWN ↓", 8, IDIT_BUTTON, NULL }, + { "left", "LEFT â†", 5, IDIT_BUTTON, NULL }, + + { NULL, "empty", 0, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON, NULL }, + { NULL, "empty", 0, IDIT_BUTTON, NULL }, + + { "triangle", "â–³ (lower left)", 7, IDIT_BUTTON, NULL }, + { "circle", "â—‹ (upper right)", 4, IDIT_BUTTON, NULL }, + { "cross", "x (upper left)", 2, IDIT_BUTTON, NULL }, + { "square", "â–¡ (lower right)", 9, IDIT_BUTTON, NULL }, +}; + + +} diff --git a/libmednahawk/src/psx/input/gamepad.h b/libmednahawk/src/psx/input/gamepad.h new file mode 100644 index 0000000000..f154c5af14 --- /dev/null +++ b/libmednahawk/src/psx/input/gamepad.h @@ -0,0 +1,12 @@ +#ifndef __MDFN_PSX_INPUT_GAMEPAD_H +#define __MDFN_PSX_INPUT_GAMEPAD_H + +namespace MDFN_IEN_PSX +{ + +InputDevice *Device_Gamepad_Create(void); +extern InputDeviceInputInfoStruct Device_Gamepad_IDII[16]; +extern InputDeviceInputInfoStruct Device_Dancepad_IDII[16]; + +} +#endif diff --git a/libmednahawk/src/psx/input/guncon.cpp b/libmednahawk/src/psx/input/guncon.cpp new file mode 100644 index 0000000000..a72cf62df9 --- /dev/null +++ b/libmednahawk/src/psx/input/guncon.cpp @@ -0,0 +1,396 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../psx.h" +#include "../frontio.h" +#include "guncon.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_GunCon : public InputDevice +{ + public: + + InputDevice_GunCon(void); + virtual ~InputDevice_GunCon(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + virtual void SetCrosshairsColor(uint32 color); + virtual bool RequireNoFrameskip(void); + virtual pscpu_timestamp_t GPULineHook(const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + bool dtr; + + uint8 buttons; + bool trigger_eff; + bool trigger_noclear; + uint16 hit_x, hit_y; + + int32 nom_x, nom_y; + int32 os_shot_counter; + bool prev_oss; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[16]; + uint32 transmit_pos; + uint32 transmit_count; + + // + // Video timing stuff + bool prev_vsync; + int line_counter; + + // + unsigned chair_r, chair_g, chair_b; + bool draw_chair; +}; + +InputDevice_GunCon::InputDevice_GunCon(void) : chair_r(0), chair_g(0), chair_b(0), draw_chair(false) +{ + Power(); +} + +InputDevice_GunCon::~InputDevice_GunCon() +{ + +} + +void InputDevice_GunCon::SetCrosshairsColor(uint32 color) +{ + chair_r = (color >> 16) & 0xFF; + chair_g = (color >> 8) & 0xFF; + chair_b = (color >> 0) & 0xFF; + + draw_chair = (color != (1 << 24)); +} + +void InputDevice_GunCon::Power(void) +{ + dtr = 0; + + buttons = 0; + trigger_eff = 0; + trigger_noclear = 0; + hit_x = 0; + hit_y = 0; + + nom_x = 0; + nom_y = 0; + + os_shot_counter = 0; + prev_oss = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; + + prev_vsync = 0; + line_counter = 0; +} + +void InputDevice_GunCon::UpdateInput(const void *data) +{ + uint8 *d8 = (uint8 *)data; + + nom_x = MDFN_de32lsb(&d8[0]); + nom_y = MDFN_de32lsb(&d8[4]); + + trigger_noclear = (bool)(d8[8] & 0x1); + trigger_eff |= trigger_noclear; + + buttons = d8[8] >> 1; + + if(os_shot_counter > 0) // FIXME if UpdateInput() is ever called more than once per video frame(at ~50 or ~60Hz). + os_shot_counter--; + + // Eeeeiiiiiight. + if((d8[8] & 0x8) && !prev_oss && os_shot_counter == 0) + os_shot_counter = 4; + prev_oss = d8[8] & 0x8; + + //MDFN_DispMessage("%08x %08x", nom_x, nom_y); +} + +bool InputDevice_GunCon::RequireNoFrameskip(void) +{ + return(true); +} + +pscpu_timestamp_t InputDevice_GunCon::GPULineHook(const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, + const unsigned pix_clock_offset, const unsigned pix_clock) +{ + if(vsync && !prev_vsync) + line_counter = 0; + + if(pixels && pix_clock) + { + const int avs = 22; // Not 22 for PAL, fixme. + int32 gx; + int32 gy; + + gx = ((int64)nom_x * width / MDFNGameInfo->nominal_width + 0x8000) >> 16; + gy = (nom_y + 0x8000) >> 16; + + for(int32 ix = gx; ix < (gx + (int32)(pix_clock / 762925)); ix++) + { + if(ix >= 0 && (unsigned)ix < width && line_counter >= (avs + gy) && line_counter < (avs + gy + 8)) + { + int r, g, b, a; + + format->DecodeColor(pixels[ix], r, g, b, a); + + if((r + g + b) >= 0x40) // Wrong, but not COMPLETELY ABSOLUTELY wrong, at least. ;) + { + hit_x = (int64)(ix + pix_clock_offset) * 8000000 / pix_clock; // GunCon has what appears to be an 8.00MHz ceramic resonator in it. + hit_y = line_counter; + } + } + } + + if(draw_chair) + { + if(line_counter == (avs + gy)) + { + const int ic = pix_clock / 762925; + + for(int32 x = std::max(0, gx - ic); x < std::min(width, gx + ic); x++) + { + int r, g, b, a; + int nr, ng, nb; + + format->DecodeColor(pixels[x], r, g, b, a); + + nr = (r + chair_r * 3) >> 2; + ng = (g + chair_g * 3) >> 2; + nb = (b + chair_b * 3) >> 2; + + if(abs((r * 76 + g * 150 + b * 29) - (nr * 76 + ng * 150 + nb * 29)) < 16384) + { + nr >>= 1; + ng >>= 1; + nb >>= 1; + } + + pixels[x] = format->MakeColor(nr, ng, nb, a); + } + } + else if(line_counter >= (avs + gy - 8) && line_counter <= (avs + gy + 8)) + { + int r, g, b, a; + int nr, ng, nb; + + format->DecodeColor(pixels[gx], r, g, b, a); + + nr = (r + chair_r * 3) >> 2; + ng = (g + chair_g * 3) >> 2; + nb = (b + chair_b * 3) >> 2; + + if(abs((r * 76 + g * 150 + b * 29) - (nr * 76 + ng * 150 + nb * 29)) < 16384) + { + nr >>= 1; + ng >>= 1; + nb >>= 1; + } + + pixels[gx] = format->MakeColor(nr, ng, nb, a); + } + } + } + + line_counter++; + + return(PSX_EVENT_MAXTS); +} + +void InputDevice_GunCon::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } + + dtr = new_dtr; +} + +bool InputDevice_GunCon::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_GunCon::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //printf("[PAD] Receive: %02x -- command_phase=%d\n", receive_buffer, command_phase); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + transmit_buffer[0] = 0x63; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + break; + + case 2: + //if(receive_buffer) + // printf("%02x\n", receive_buffer); + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + //puts("MOO"); + //if(command != 0x42) + // fprintf(stderr, "GunCon unhandled command: 0x%02x\n", command); + //assert(command == 0x42); + if(command == 0x42) + { + transmit_buffer[1] = 0xFF ^ ((buttons & 0x01) << 3); + transmit_buffer[2] = 0xFF ^ (trigger_eff << 5) ^ ((buttons & 0x02) << 5); + + if(os_shot_counter > 0) + { + hit_x = 0x01; + hit_y = 0x0A; + transmit_buffer[2] |= (1 << 5); + if(os_shot_counter == 2 || os_shot_counter == 3) + { + transmit_buffer[2] &= ~(1 << 5); + } + } + + MDFN_en16lsb(&transmit_buffer[3], hit_x); + MDFN_en16lsb(&transmit_buffer[5], hit_y); + + hit_x = 0x01; + hit_y = 0x0A; + + transmit_pos = 0; + transmit_count = 7; + + trigger_eff = trigger_noclear; + } + else + { + command_phase = -1; + transmit_buffer[1] = 0; + transmit_buffer[2] = 0; + transmit_pos = 0; + transmit_count = 0; + } + break; + + } + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 100; //0x80; //0x40; + + return(ret); +} + +InputDevice *Device_GunCon_Create(void) +{ + return new InputDevice_GunCon(); +} + + +InputDeviceInputInfoStruct Device_GunCon_IDII[6] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS }, + + { "trigger", "Trigger", 0, IDIT_BUTTON, NULL }, + + { "a", "A", 1, IDIT_BUTTON, NULL }, + { "b", "B", 2, IDIT_BUTTON, NULL }, + + { "offscreen_shot", "Offscreen Shot(Simulated)", 3, IDIT_BUTTON, NULL }, // Useful for "Judge Dredd", and probably not much else. +}; + + + +} diff --git a/libmednahawk/src/psx/input/guncon.h b/libmednahawk/src/psx/input/guncon.h new file mode 100644 index 0000000000..dc6b4f9a46 --- /dev/null +++ b/libmednahawk/src/psx/input/guncon.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_INPUT_GUNCON_H +#define __MDFN_PSX_INPUT_GUNCON_H + +namespace MDFN_IEN_PSX +{ + +InputDevice *Device_GunCon_Create(void); +extern InputDeviceInputInfoStruct Device_GunCon_IDII[6]; + +} +#endif diff --git a/libmednahawk/src/psx/input/justifier.cpp b/libmednahawk/src/psx/input/justifier.cpp new file mode 100644 index 0000000000..79beefc662 --- /dev/null +++ b/libmednahawk/src/psx/input/justifier.cpp @@ -0,0 +1,393 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../psx.h" +#include "../frontio.h" +#include "justifier.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_Justifier : public InputDevice +{ + public: + + InputDevice_Justifier(void); + virtual ~InputDevice_Justifier(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + virtual void SetCrosshairsColor(uint32 color); + virtual bool RequireNoFrameskip(void); + virtual pscpu_timestamp_t GPULineHook(const pscpu_timestamp_t timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + bool dtr; + + uint8 buttons; + bool trigger_eff; + bool trigger_noclear; + + bool need_hit_detect; + + int32 nom_x, nom_y; + int32 os_shot_counter; + bool prev_oss; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[16]; + uint32 transmit_pos; + uint32 transmit_count; + + // + // Video timing stuff + bool prev_vsync; + int line_counter; + + // + unsigned chair_r, chair_g, chair_b; + bool draw_chair; +}; + +InputDevice_Justifier::InputDevice_Justifier(void) : chair_r(0), chair_g(0), chair_b(0), draw_chair(false) +{ + Power(); +} + +InputDevice_Justifier::~InputDevice_Justifier() +{ + +} + +void InputDevice_Justifier::SetCrosshairsColor(uint32 color) +{ + chair_r = (color >> 16) & 0xFF; + chair_g = (color >> 8) & 0xFF; + chair_b = (color >> 0) & 0xFF; + + draw_chair = (color != (1 << 24)); +} + +void InputDevice_Justifier::Power(void) +{ + dtr = 0; + + buttons = 0; + trigger_eff = 0; + trigger_noclear = 0; + + need_hit_detect = false; + + nom_x = 0; + nom_y = 0; + + os_shot_counter = 0; + prev_oss = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; + + prev_vsync = 0; + line_counter = 0; +} + +void InputDevice_Justifier::UpdateInput(const void *data) +{ + uint8 *d8 = (uint8 *)data; + + nom_x = MDFN_de32lsb(&d8[0]); + nom_y = MDFN_de32lsb(&d8[4]); + + trigger_noclear = (bool)(d8[8] & 0x1); + trigger_eff |= trigger_noclear; + + buttons = (d8[8] >> 1) & 0x3; + + if(os_shot_counter > 0) // FIXME if UpdateInput() is ever called more than once per video frame(at ~50 or ~60Hz). + os_shot_counter--; + + if((d8[8] & 0x8) && !prev_oss && os_shot_counter == 0) + os_shot_counter = 10; + prev_oss = d8[8] & 0x8; +} + +bool InputDevice_Justifier::RequireNoFrameskip(void) +{ + return(true); +} + +pscpu_timestamp_t InputDevice_Justifier::GPULineHook(const pscpu_timestamp_t timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, + const unsigned pix_clock_offset, const unsigned pix_clock) +{ + pscpu_timestamp_t ret = PSX_EVENT_MAXTS; + + if(vsync && !prev_vsync) + line_counter = 0; + + if(pixels && pix_clock) + { + const int avs = 22; // Not 22 for PAL, fixme. + int32 gx; + int32 gy; + int32 gxa; + + gx = ((int64)nom_x * width / MDFNGameInfo->nominal_width + 0x8000) >> 16; + gy = (nom_y + 0x8000) >> 16; + gxa = gx; // - (pix_clock / 400000); + //if(gxa < 0 && gx >= 0) + // gxa = 0; + + if(!os_shot_counter && need_hit_detect && gxa >= 0 && gxa < (int)width && line_counter >= (avs + gy - 1) && line_counter <= (avs + gy + 1)) + { + int r, g, b, a; + + format->DecodeColor(pixels[gxa], r, g, b, a); + + if((r + g + b) >= 0x40) // Wrong, but not COMPLETELY ABSOLUTELY wrong, at least. ;) + { + ret = timestamp + (int64)(gxa + pix_clock_offset) * (44100 * 768) / pix_clock - 181; + } + } + + if(draw_chair) + { + if(line_counter == (avs + gy)) + { + const int ic = pix_clock / 762925; + + for(int32 x = std::max(0, gx - ic); x < std::min(width, gx + ic); x++) + { + int r, g, b, a; + int nr, ng, nb; + + format->DecodeColor(pixels[x], r, g, b, a); + + nr = (r + chair_r * 3) >> 2; + ng = (g + chair_g * 3) >> 2; + nb = (b + chair_b * 3) >> 2; + + if(abs((r * 76 + g * 150 + b * 29) - (nr * 76 + ng * 150 + nb * 29)) < 16384) + { + nr >>= 1; + ng >>= 1; + nb >>= 1; + } + + pixels[x] = format->MakeColor(nr, ng, nb, a); + } + } + else if(line_counter >= (avs + gy - 8) && line_counter <= (avs + gy + 8)) + { + int r, g, b, a; + int nr, ng, nb; + + format->DecodeColor(pixels[gx], r, g, b, a); + + nr = (r + chair_r * 3) >> 2; + ng = (g + chair_g * 3) >> 2; + nb = (b + chair_b * 3) >> 2; + + if(abs((r * 76 + g * 150 + b * 29) - (nr * 76 + ng * 150 + nb * 29)) < 16384) + { + nr >>= 1; + ng >>= 1; + nb >>= 1; + } + + pixels[gx] = format->MakeColor(nr, ng, nb, a); + } + } + } + + line_counter++; + + return(ret); +} + +void InputDevice_Justifier::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } + + dtr = new_dtr; +} + +bool InputDevice_Justifier::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_Justifier::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //printf("[PAD] Receive: %02x -- command_phase=%d\n", receive_buffer, command_phase); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + transmit_buffer[0] = 0x31; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + break; + + case 2: + //if(receive_buffer) + // printf("%02x\n", receive_buffer); + command_phase++; + break; + + case 3: + need_hit_detect = receive_buffer & 0x10; // TODO, see if it's (val&0x10) == 0x10, or some other mask value. + command_phase++; + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + //if(command != 0x42) + // fprintf(stderr, "Justifier unhandled command: 0x%02x\n", command); + //assert(command == 0x42); + if(command == 0x42) + { + transmit_buffer[1] = 0xFF ^ ((buttons & 2) << 2); + transmit_buffer[2] = 0xFF ^ (trigger_eff << 7) ^ ((buttons & 1) << 6); + + if(os_shot_counter > 0) + { + transmit_buffer[2] |= (1 << 7); + if(os_shot_counter == 6 || os_shot_counter == 5) + { + transmit_buffer[2] &= ~(1 << 7); + } + } + + transmit_pos = 0; + transmit_count = 3; + + trigger_eff = trigger_noclear; + } + else + { + command_phase = -1; + transmit_buffer[1] = 0; + transmit_buffer[2] = 0; + transmit_pos = 0; + transmit_count = 0; + } + break; + + } + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 200; + + return(ret); +} + +InputDevice *Device_Justifier_Create(void) +{ + return new InputDevice_Justifier(); +} + + +InputDeviceInputInfoStruct Device_Justifier_IDII[6] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS }, + + { "trigger", "Trigger", 0, IDIT_BUTTON, NULL }, + + { "o", "O", 1, IDIT_BUTTON, NULL }, + { "start", "Start", 2, IDIT_BUTTON, NULL }, + + { "offscreen_shot", "Offscreen Shot(Simulated)", 3, IDIT_BUTTON, NULL }, +}; + + + +} diff --git a/libmednahawk/src/psx/input/justifier.h b/libmednahawk/src/psx/input/justifier.h new file mode 100644 index 0000000000..a40534d6f2 --- /dev/null +++ b/libmednahawk/src/psx/input/justifier.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_INPUT_JUSTIFIER_H +#define __MDFN_PSX_INPUT_JUSTIFIER_H + +namespace MDFN_IEN_PSX +{ + +InputDevice *Device_Justifier_Create(void); +extern InputDeviceInputInfoStruct Device_Justifier_IDII[6]; + +} +#endif diff --git a/libmednahawk/src/psx/input/memcard.cpp b/libmednahawk/src/psx/input/memcard.cpp new file mode 100644 index 0000000000..599c51e6d1 --- /dev/null +++ b/libmednahawk/src/psx/input/memcard.cpp @@ -0,0 +1,453 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// I could find no other commands than 'R', 'W', and 'S' (not sure what 'S' is for, however) + +#include "../psx.h" +#include "../frontio.h" +#include "memcard.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_Memcard : public InputDevice +{ + public: + + InputDevice_Memcard(); + virtual ~InputDevice_Memcard(); + + virtual void Power(void); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + // + // + virtual uint32 GetNVSize(void); + virtual void ReadNV(uint8 *buffer, uint32 offset, uint32 size); + virtual void WriteNV(const uint8 *buffer, uint32 offset, uint32 size); + + virtual uint64 GetNVDirtyCount(void); + virtual void ResetNVDirtyCount(void); + + private: + + bool presence_new; + + uint8 card_data[1 << 17]; + uint8 rw_buffer[128]; + uint8 write_xor; + + uint64 dirty_count; + + bool dtr; + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + uint16 addr; + uint8 calced_xor; + + uint8 transmit_buffer; + uint32 transmit_count; +}; + +InputDevice_Memcard::InputDevice_Memcard() +{ + Power(); + + dirty_count = 0; + + // Init memcard as formatted. + assert(sizeof(card_data) == (1 << 17)); + memset(card_data, 0x00, sizeof(card_data)); + + card_data[0x00] = 0x4D; + card_data[0x01] = 0x43; + card_data[0x7F] = 0x0E; + + for(unsigned int A = 0x80; A < 0x800; A += 0x80) + { + card_data[A + 0x00] = 0xA0; + card_data[A + 0x08] = 0xFF; + card_data[A + 0x09] = 0xFF; + card_data[A + 0x7F] = 0xA0; + } + + for(unsigned int A = 0x0800; A < 0x1200; A += 0x80) + { + card_data[A + 0x00] = 0xFF; + card_data[A + 0x01] = 0xFF; + card_data[A + 0x02] = 0xFF; + card_data[A + 0x03] = 0xFF; + card_data[A + 0x08] = 0xFF; + card_data[A + 0x09] = 0xFF; + } + +} + +InputDevice_Memcard::~InputDevice_Memcard() +{ + +} + +void InputDevice_Memcard::Power(void) +{ + dtr = 0; + + //buttons[0] = buttons[1] = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + transmit_buffer = 0; + + transmit_count = 0; + + addr = 0; + + presence_new = true; +} + +void InputDevice_Memcard::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + if(command_phase > 0) + PSX_WARNING("[MCR] Communication aborted???"); + } + dtr = new_dtr; +} + +bool InputDevice_Memcard::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_Memcard::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //if(command_phase > 0 || transmit_count) + // printf("[MCRDATA] Received_data=0x%02x, Sent_data=0x%02x\n", receive_buffer, transmit_buffer); + + if(transmit_count) + { + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x81) + command_phase = -1; + else + { + //printf("[MCR] Device selected\n"); + transmit_buffer = presence_new ? 0x08 : 0x00; + transmit_count = 1; + command_phase++; + } + break; + + case 1: + command = receive_buffer; + //printf("[MCR] Command received: %c\n", command); + if(command == 'R' || command == 'W') + { + command_phase++; + transmit_buffer = 0x5A; + transmit_count = 1; + } + else + { + if(command == 'S') + { + PSX_WARNING("[MCR] Memcard S command unsupported."); + } + + command_phase = -1; + transmit_buffer = 0; + transmit_count = 0; + } + break; + + case 2: + transmit_buffer = 0x5D; + transmit_count = 1; + command_phase++; + break; + + case 3: + transmit_buffer = 0x00; + transmit_count = 1; + if(command == 'R') + command_phase = 1000; + else if(command == 'W') + command_phase = 2000; + break; + + // + // Read + // + case 1000: + addr = receive_buffer << 8; + transmit_buffer = receive_buffer; + transmit_count = 1; + command_phase++; + break; + + case 1001: + addr |= receive_buffer & 0xFF; + transmit_buffer = '\\'; + transmit_count = 1; + command_phase++; + break; + + case 1002: + //printf("[MCR] READ ADDR=0x%04x\n", addr); + if(addr >= (sizeof(card_data) >> 7)) + addr = 0xFFFF; + + calced_xor = 0; + transmit_buffer = ']'; + transmit_count = 1; + command_phase++; + + // TODO: enable this code(or something like it) when CPU instruction timing is a bit better. + // + //dsr_pulse_delay = 32000; + //goto SkipDPD; + // + + break; + + case 1003: + transmit_buffer = addr >> 8; + calced_xor ^= transmit_buffer; + transmit_count = 1; + command_phase++; + break; + + case 1004: + transmit_buffer = addr & 0xFF; + calced_xor ^= transmit_buffer; + + if(addr == 0xFFFF) + { + transmit_count = 1; + command_phase = -1; + } + else + { + transmit_count = 1; + command_phase = 1024; + } + break; + + // Transmit actual 128 bytes data + //zero 07-feb-2012 - remove case range + //case (1024 + 0) ... (1024 + 128 - 1): + case 1024: case 1025: case 1026: case 1027: case 1028: case 1029: case 1030: case 1031: case 1032: case 1033: case 1034: case 1035: case 1036: case 1037: case 1038: case 1039: case 1040: case 1041: case 1042: case 1043: case 1044: case 1045: case 1046: case 1047: case 1048: case 1049: case 1050: case 1051: case 1052: case 1053: case 1054: case 1055: case 1056: case 1057: case 1058: case 1059: case 1060: case 1061: case 1062: case 1063: case 1064: case 1065: case 1066: case 1067: case 1068: case 1069: case 1070: case 1071: case 1072: case 1073: case 1074: case 1075: case 1076: case 1077: case 1078: case 1079: case 1080: case 1081: case 1082: case 1083: case 1084: case 1085: case 1086: case 1087: case 1088: case 1089: case 1090: case 1091: case 1092: case 1093: case 1094: case 1095: case 1096: case 1097: case 1098: case 1099: case 1100: case 1101: case 1102: case 1103: case 1104: case 1105: case 1106: case 1107: case 1108: case 1109: case 1110: case 1111: case 1112: case 1113: case 1114: case 1115: case 1116: case 1117: case 1118: case 1119: case 1120: case 1121: case 1122: case 1123: case 1124: case 1125: case 1126: case 1127: case 1128: case 1129: case 1130: case 1131: case 1132: case 1133: case 1134: case 1135: case 1136: case 1137: case 1138: case 1139: case 1140: case 1141: case 1142: case 1143: case 1144: case 1145: case 1146: case 1147: case 1148: case 1149: case 1150: case 1151: + transmit_buffer = card_data[(addr << 7) + (command_phase - 1024)]; + calced_xor ^= transmit_buffer; + transmit_count = 1; + command_phase++; + break; + + // XOR + case (1024 + 128): + transmit_buffer = calced_xor; + transmit_count = 1; + command_phase++; + break; + + // End flag + case (1024 + 129): + transmit_buffer = 'G'; + transmit_count = 1; + command_phase = -1; + break; + + // + // Write + // + case 2000: + calced_xor = receive_buffer; + addr = receive_buffer << 8; + transmit_buffer = receive_buffer; + transmit_count = 1; + command_phase++; + break; + + case 2001: + calced_xor ^= receive_buffer; + addr |= receive_buffer & 0xFF; + //printf("[MCR] WRITE ADDR=0x%04x\n", addr); + transmit_buffer = receive_buffer; + transmit_count = 1; + command_phase = 2048; + break; + + + //zero 07-feb-2012 - remove case range + //case (2048 + 0) ... (2048 + 128 - 1): + case 2048: case 2049: case 2050: case 2051: case 2052: case 2053: case 2054: case 2055: case 2056: case 2057: case 2058: case 2059: case 2060: case 2061: case 2062: case 2063: case 2064: case 2065: case 2066: case 2067: case 2068: case 2069: case 2070: case 2071: case 2072: case 2073: case 2074: case 2075: case 2076: case 2077: case 2078: case 2079: case 2080: case 2081: case 2082: case 2083: case 2084: case 2085: case 2086: case 2087: case 2088: case 2089: case 2090: case 2091: case 2092: case 2093: case 2094: case 2095: case 2096: case 2097: case 2098: case 2099: case 2100: case 2101: case 2102: case 2103: case 2104: case 2105: case 2106: case 2107: case 2108: case 2109: case 2110: case 2111: case 2112: case 2113: case 2114: case 2115: case 2116: case 2117: case 2118: case 2119: case 2120: case 2121: case 2122: case 2123: case 2124: case 2125: case 2126: case 2127: case 2128: case 2129: case 2130: case 2131: case 2132: case 2133: case 2134: case 2135: case 2136: case 2137: case 2138: case 2139: case 2140: case 2141: case 2142: case 2143: case 2144: case 2145: case 2146: case 2147: case 2148: case 2149: case 2150: case 2151: case 2152: case 2153: case 2154: case 2155: case 2156: case 2157: case 2158: case 2159: case 2160: case 2161: case 2162: case 2163: case 2164: case 2165: case 2166: case 2167: case 2168: case 2169: case 2170: case 2171: case 2172: case 2173: case 2174: case 2175: + calced_xor ^= receive_buffer; + rw_buffer[command_phase - 2048] = receive_buffer; + + transmit_buffer = receive_buffer; + transmit_count = 1; + command_phase++; + break; + + case (2048 + 128): // XOR + write_xor = receive_buffer; + transmit_buffer = '\\'; + transmit_count = 1; + command_phase++; + break; + + case (2048 + 129): + transmit_buffer = ']'; + transmit_count = 1; + command_phase++; + break; + + case (2048 + 130): // End flag + //MDFN_DispMessage("%02x %02x", calced_xor, write_xor); + //printf("[MCR] Write End. Actual_XOR=0x%02x, CW_XOR=0x%02x\n", calced_xor, write_xor); + + if(calced_xor != write_xor) + transmit_buffer = 'N'; + else if(addr >= (sizeof(card_data) >> 7)) + transmit_buffer = 0xFF; + else + { + transmit_buffer = 'G'; + presence_new = false; + + // If the current data is different from the data to be written, increment the dirty count. + // memcpy()'ing over to card_data is also conditionalized here for a slight optimization. + if(memcmp(&card_data[addr << 7], rw_buffer, 128)) + { + memcpy(&card_data[addr << 7], rw_buffer, 128); + dirty_count++; + } + } + + transmit_count = 1; + command_phase = -1; + break; + + } + + //if(command_phase != -1 || transmit_count) + // printf("[MCR] Receive: 0x%02x, Send: 0x%02x -- %d\n", receive_buffer, transmit_buffer, command_phase); + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 0x100; + + //SkipDPD: ; + + return(ret); +} + +uint32 InputDevice_Memcard::GetNVSize(void) +{ + return(sizeof(card_data)); +} + +void InputDevice_Memcard::ReadNV(uint8 *buffer, uint32 offset, uint32 size) +{ + while(size--) + { + *buffer = card_data[offset & (sizeof(card_data) - 1)]; + buffer++; + offset++; + } +} + +void InputDevice_Memcard::WriteNV(const uint8 *buffer, uint32 offset, uint32 size) +{ + if(size) + dirty_count++; + + while(size--) + { + card_data[offset & (sizeof(card_data) - 1)] = *buffer; + buffer++; + offset++; + } +} + +uint64 InputDevice_Memcard::GetNVDirtyCount(void) +{ + return(dirty_count); +} + +void InputDevice_Memcard::ResetNVDirtyCount(void) +{ + dirty_count = 0; +} + + +InputDevice *Device_Memcard_Create(void) +{ + return new InputDevice_Memcard(); +} + +} diff --git a/libmednahawk/src/psx/input/memcard.h b/libmednahawk/src/psx/input/memcard.h new file mode 100644 index 0000000000..1a8fd7d074 --- /dev/null +++ b/libmednahawk/src/psx/input/memcard.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_INPUT_MEMCARD_H +#define __MDFN_PSX_INPUT_MEMCARD_H + +namespace MDFN_IEN_PSX +{ + +InputDevice *Device_Memcard_Create(void); + +} + +#endif diff --git a/libmednahawk/src/psx/input/mouse.cpp b/libmednahawk/src/psx/input/mouse.cpp new file mode 100644 index 0000000000..ee8f67397d --- /dev/null +++ b/libmednahawk/src/psx/input/mouse.cpp @@ -0,0 +1,252 @@ +#include "../psx.h" +#include "../frontio.h" +#include "mouse.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_Mouse : public InputDevice +{ + public: + + InputDevice_Mouse(); + virtual ~InputDevice_Mouse(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + + virtual void Update(const pscpu_timestamp_t timestamp); + virtual void ResetTS(void); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + int32 lastts; + int32 clear_timeout; + + bool dtr; + + uint8 button; + uint8 button_post_mask; + int32 accum_xdelta; + int32 accum_ydelta; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[5]; + uint32 transmit_pos; + uint32 transmit_count; +}; + +InputDevice_Mouse::InputDevice_Mouse() +{ + Power(); +} + +InputDevice_Mouse::~InputDevice_Mouse() +{ + +} + +void InputDevice_Mouse::Update(const pscpu_timestamp_t timestamp) +{ + int32 cycles = timestamp - lastts; + + clear_timeout += cycles; + if(clear_timeout >= (33868800 / 4)) + { + //puts("Mouse timeout\n"); + clear_timeout = 0; + accum_xdelta = 0; + accum_ydelta = 0; + button &= button_post_mask; + } + + lastts = timestamp; +} + +void InputDevice_Mouse::ResetTS(void) +{ + lastts = 0; +} + +void InputDevice_Mouse::Power(void) +{ + lastts = 0; + clear_timeout = 0; + + dtr = 0; + + button = 0; + button_post_mask = 0; + accum_xdelta = 0; + accum_ydelta = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; +} + +void InputDevice_Mouse::UpdateInput(const void *data) +{ + accum_xdelta += (int32)MDFN_de32lsb((uint8*)data + 0); + accum_ydelta += (int32)MDFN_de32lsb((uint8*)data + 4); + + if(accum_xdelta > 30 * 127) accum_xdelta = 30 * 127; + if(accum_xdelta < 30 * -128) accum_xdelta = 30 * -128; + + if(accum_ydelta > 30 * 127) accum_ydelta = 30 * 127; + if(accum_ydelta < 30 * -128) accum_ydelta = 30 * -128; + + button |= *((uint8 *)data + 8); + button_post_mask = *((uint8 *)data + 8); + + //if(button) + // MDFN_DispMessage("Button\n"); + //printf("%d %d\n", accum_xdelta, accum_ydelta); +} + + +void InputDevice_Mouse::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } + + dtr = new_dtr; +} + +bool InputDevice_Mouse::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //printf("[PAD] Receive: %02x -- command_phase=%d\n", receive_buffer, command_phase); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + transmit_buffer[0] = 0x12; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + } + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + if(command == 0x42) + { + int32 xdelta = accum_xdelta; + int32 ydelta = accum_ydelta; + + if(xdelta < -128) xdelta = -128; + if(xdelta > 127) xdelta = 127; + + if(ydelta < -128) ydelta = -128; + if(ydelta > 127) ydelta = 127; + + transmit_buffer[1] = 0xFF; + transmit_buffer[2] = 0xFC ^ (button << 2); + transmit_buffer[3] = xdelta; + transmit_buffer[4] = ydelta; + + accum_xdelta -= xdelta; + accum_ydelta -= ydelta; + + button &= button_post_mask; + + transmit_pos = 0; + transmit_count = 5; + + clear_timeout = 0; + } + else + { + command_phase = -1; + transmit_pos = 0; + transmit_count = 0; + } + break; + + } + } + + if(!bitpos && transmit_count) + dsr_pulse_delay = 0x40; //0x100; + + return(ret); +} + +InputDevice *Device_Mouse_Create(void) +{ + return new InputDevice_Mouse(); +} + + +InputDeviceInputInfoStruct Device_Mouse_IDII[4] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS_REL }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS_REL }, + { "right", "Right Button", 1, IDIT_BUTTON, NULL }, + { "left", "Left Button", 0, IDIT_BUTTON, NULL }, +}; + + + +} diff --git a/libmednahawk/src/psx/input/mouse.h b/libmednahawk/src/psx/input/mouse.h new file mode 100644 index 0000000000..db7c64f9a1 --- /dev/null +++ b/libmednahawk/src/psx/input/mouse.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_PSX_INPUT_MOUSE_H +#define __MDFN_PSX_INPUT_MOUSE_H + +namespace MDFN_IEN_PSX +{ + +InputDevice *Device_Mouse_Create(void); +extern InputDeviceInputInfoStruct Device_Mouse_IDII[4]; + +} +#endif diff --git a/libmednahawk/src/psx/input/multitap.cpp b/libmednahawk/src/psx/input/multitap.cpp new file mode 100644 index 0000000000..a1cdb4ed9c --- /dev/null +++ b/libmednahawk/src/psx/input/multitap.cpp @@ -0,0 +1,335 @@ +#include "../psx.h" +#include "../frontio.h" +#include "multitap.h" + +/* + Notes from tests on real thing(not necessarily emulated the same way here): + + Manual port selection read mode: + Write 0x01-0x04 instead of 0x01 as first byte, selects port(1=A,2=B,3=C,4=D) to access. + + Ports that don't exist(0x00, 0x05-0xFF) or don't have a device plugged in will not respond(no DSR pulse). + + Full read mode: + Bit0 of third byte(from-zero-index=0x02) should be set to 1 to enter full read mode, on subsequent reads. + + Appears to require a controller to be plugged into the port specified by the first byte as per manual port selection read mode, + to write the byte necessary to enter full-read mode; but once the third byte with the bit set has been written, no controller in + that port is required for doing full reads(and the manual port selection is ignored when doing a full read). + + However, if there are no controllers plugged in, or the first byte written in a full-mode communication has one or more bits in the upper + nybble set to 1, the returned data will be short: + % 0: 0xff + % 1: 0x80 + % 2: 0x5a + + Example full-read bytestream(with controllers plugged into port A, port B, and port C, with port D empty): + % 0: 0xff + % 1: 0x80 + % 2: 0x5a + + % 3: 0x73 (Port A controller data start) + % 4: 0x5a + % 5: 0xff + % 6: 0xff + % 7: 0x80 + % 8: 0x8c + % 9: 0x79 + % 10: 0x8f + + % 11: 0x53 (Port B controller data start) + % 12: 0x5a + % 13: 0xff + % 14: 0xff + % 15: 0x80 + % 16: 0x80 + % 17: 0x75 + % 18: 0x8e + + % 19: 0x41 (Port C controller data start) + % 20: 0x5a + % 21: 0xff + % 22: 0xff + % 23: 0xff + % 24: 0xff + % 25: 0xff + % 26: 0xff + + % 27: 0xff (Port D controller data start) + % 28: 0xff + % 29: 0xff + % 30: 0xff + % 31: 0xff + % 32: 0xff + % 33: 0xff + % 34: 0xff + +*/ + +namespace MDFN_IEN_PSX +{ + +InputDevice_Multitap::InputDevice_Multitap() +{ + for(int i = 0; i < 4; i++) + { + pad_devices[i] = NULL; + mc_devices[i] = NULL; + } + Power(); +} + +InputDevice_Multitap::~InputDevice_Multitap() +{ +} + +void InputDevice_Multitap::SetSubDevice(unsigned int sub_index, InputDevice *device, InputDevice *mc_device) +{ + assert(sub_index < 4); + + //printf("%d\n", sub_index); + + pad_devices[sub_index] = device; + mc_devices[sub_index] = mc_device; +} + + +void InputDevice_Multitap::Power(void) +{ + selected_device = -1; + bit_counter = 0; + receive_buffer = 0; + byte_counter = 0; + + mc_mode = false; + full_mode = false; + full_mode_setting = false; + + for(int i = 0; i < 4; i++) + { + if(pad_devices[i]) + pad_devices[i]->Power(); + + if(mc_devices[i]) + mc_devices[i]->Power(); + } +} + +void InputDevice_Multitap::SetDTR(bool new_dtr) +{ + bool old_dtr = dtr; + dtr = new_dtr; + + if(!dtr) + { + bit_counter = 0; + byte_counter = 0; + receive_buffer = 0; + selected_device = -1; + mc_mode = false; + full_mode = false; + } + + if(!old_dtr && dtr) + { + full_mode = full_mode_setting; + //if(full_mode) { + // printf("Full mode start\n"); } + } + + for(int i = 0; i < 4; i++) + { + pad_devices[i]->SetDTR(dtr); + mc_devices[i]->SetDTR(dtr); + } +} + +bool InputDevice_Multitap::GetDSR(void) +{ + return(0); +} + +bool InputDevice_Multitap::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + if(!dtr) + return(1); + + bool ret = 1; + bool mangled_txd = TxD; + int32 tmp_pulse_delay[2][4] = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; + + //printf("Receive bit: %d\n", TxD); + //printf("TxD %d\n", TxD); + + receive_buffer &= ~ (1 << bit_counter); + receive_buffer |= TxD << bit_counter; + + if(1) + { + uint8 sub_clock = 0; + uint8 sub_rxd_ignore = 0; + + if(full_mode) + { + if(byte_counter == 0) + { + sub_clock = 0; + sub_rxd_ignore = 0xF; + } + else if(byte_counter == 1) + { + ret = (0x80 >> bit_counter) & 1; + sub_clock = false; + sub_rxd_ignore = 0xF; + } + else if(byte_counter == 2) + { + ret = (0x5A >> bit_counter) & 1; + sub_rxd_ignore = 0xF; + + if(!mc_mode) + { + sub_clock = 0xF; + mangled_txd = (0x01 >> bit_counter) & 1; + } + } + else if(byte_counter == 0x03 || byte_counter == (0x03 + 0x08 * 1) || byte_counter == (0x03 + 0x08 * 2) || byte_counter == (0x03 + 0x08 * 3)) + { + sub_clock = 1 << selected_device; + sub_rxd_ignore = 0; + mangled_txd = (command >> bit_counter) & 1; + } + else + { + sub_clock = 1 << selected_device; + sub_rxd_ignore = 0; + // Not sure about this, would need to test with rumble-capable device on real thing? + //mangled_txd = (0x00 >> bit_counter) & 1; + } + } + else + { + if(byte_counter == 0) + { + if(bit_counter < 4) + mangled_txd = (0x01 >> bit_counter) & 1; + + sub_clock = 0xF; + sub_rxd_ignore = 0xF; + } + else if((unsigned)selected_device < 4) + { + sub_clock = 1 << selected_device; + sub_rxd_ignore = 0; + } + } + + for(int i = 0; i < 4; i++) + { + if(sub_clock & (1 << i)) + { + ret &= pad_devices[i]->Clock(mangled_txd, tmp_pulse_delay[0][i]) | ((sub_rxd_ignore >> i) & 1); + ret &= mc_devices[i]->Clock(mangled_txd, tmp_pulse_delay[1][i]) | ((sub_rxd_ignore >> i) & 1); + } + } + } + + +#if 0 + { + static uint8 sendy = 0; + + sendy &= ~(1 << bit_counter); + sendy |= ret << bit_counter; + + if(bit_counter == 7) + printf("Multitap to PSX: 0x%02x\n", sendy); + } +#endif + + + bit_counter = (bit_counter + 1) & 0x7; + if(bit_counter == 0) + { + if(byte_counter == 0) + { + mc_mode = (bool)(receive_buffer & 0xF0); + + //printf("Full mode: %d %d %d\n", full_mode, bit_counter, byte_counter); + + if(full_mode) + selected_device = 0; + else + { + //printf("Device select: %02x\n", receive_buffer); + selected_device = ((receive_buffer & 0xF) - 1) & 0xFF; + } + } + + if(byte_counter == 1) + { + command = receive_buffer; + //printf("Multitap sub-command: %02x\n", command); + } + + if((!mc_mode || full_mode) && byte_counter == 2 && command == 0x42) + { + //printf("Full mode setting: %02x\n", receive_buffer); + full_mode_setting = receive_buffer & 0x01; + } + + // Handle DSR stuff + if(full_mode) + { + if(byte_counter == 0 || byte_counter == 1) + dsr_pulse_delay = 0x40; + else if(byte_counter == 2 || byte_counter == 3) + { + //int32 td = 0; + //for(int i = 0; i < 4; i++) + //{ + // td = std::max(td, tmp_pulse_delay[0][i]); + // td = std::max(td, tmp_pulse_delay[1][i]); + //} + //dsr_pulse_delay = td; + //printf("%d %d\n", byte_counter, dsr_pulse_delay); + + // Just route the first port's DSR through here; at least one game relies on this(Formula One 2000), or else it freezes. Well, even when it doesn't + // freeze, the game crashes(as of Jan 20, 2012), but that's not the multitap emulation's fault. :b + dsr_pulse_delay = std::max(tmp_pulse_delay[0][0], tmp_pulse_delay[1][0]); + } + else if(byte_counter > 3 && byte_counter < 34) + { + dsr_pulse_delay = 0x80; + } + } + else + { + if((unsigned)selected_device < 4) + { + dsr_pulse_delay = std::max(tmp_pulse_delay[0][selected_device], tmp_pulse_delay[1][selected_device]); + } + } + + + // + // + // + + //printf("Byte Counter Increment\n"); + if(byte_counter < 255) + byte_counter++; + + if(full_mode && (byte_counter == (0x03 + 0x08 * 1) || byte_counter == (0x03 + 0x08 * 2) || byte_counter == (0x03 + 0x08 * 3))) + { + //printf("Device Select Increment\n"); + selected_device++; + } + } + + + + return(ret); +} + +} diff --git a/libmednahawk/src/psx/input/multitap.h b/libmednahawk/src/psx/input/multitap.h new file mode 100644 index 0000000000..e341a515f4 --- /dev/null +++ b/libmednahawk/src/psx/input/multitap.h @@ -0,0 +1,45 @@ +#ifndef __MDFN_PSX_INPUT_MULTITAP_H +#define __MDFN_PSX_INPUT_MULTITAP_H + +namespace MDFN_IEN_PSX +{ + +class InputDevice_Multitap : public InputDevice +{ + public: + + InputDevice_Multitap(); + virtual ~InputDevice_Multitap(); + virtual void Power(void); + + void SetSubDevice(unsigned int sub_index, InputDevice *device, InputDevice *mc_device); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + InputDevice *pad_devices[4]; + InputDevice *mc_devices[4]; + + bool dtr; + + int selected_device; + bool full_mode_setting; + + bool full_mode; + bool mc_mode; + + uint8 command; + uint8 receive_buffer; + uint8 bit_counter; + uint8 byte_counter; +}; + +} + +#endif diff --git a/libmednahawk/src/psx/input/negcon.cpp b/libmednahawk/src/psx/input/negcon.cpp new file mode 100644 index 0000000000..1626e17ed9 --- /dev/null +++ b/libmednahawk/src/psx/input/negcon.cpp @@ -0,0 +1,259 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../psx.h" +#include "../frontio.h" +#include "negcon.h" + +namespace MDFN_IEN_PSX +{ + +class InputDevice_neGcon : public InputDevice +{ + public: + + InputDevice_neGcon(void); + virtual ~InputDevice_neGcon(); + + virtual void Power(void); + virtual void UpdateInput(const void *data); + + // + // + // + virtual void SetDTR(bool new_dtr); + virtual bool GetDSR(void); + virtual bool Clock(bool TxD, int32 &dsr_pulse_delay); + + private: + + bool dtr; + + uint8 buttons[2]; + uint8 twist; + uint8 anabuttons[3]; + + int32 command_phase; + uint32 bitpos; + uint8 receive_buffer; + + uint8 command; + + uint8 transmit_buffer[8]; + uint32 transmit_pos; + uint32 transmit_count; +}; + +InputDevice_neGcon::InputDevice_neGcon(void) +{ + Power(); +} + +InputDevice_neGcon::~InputDevice_neGcon() +{ + +} + +void InputDevice_neGcon::Power(void) +{ + dtr = 0; + + buttons[0] = buttons[1] = 0; + twist = 0; + anabuttons[0] = 0; + anabuttons[1] = 0; + anabuttons[2] = 0; + + command_phase = 0; + + bitpos = 0; + + receive_buffer = 0; + + command = 0; + + memset(transmit_buffer, 0, sizeof(transmit_buffer)); + + transmit_pos = 0; + transmit_count = 0; +} + +void InputDevice_neGcon::UpdateInput(const void *data) +{ + uint8 *d8 = (uint8 *)data; + + buttons[0] = d8[0]; + buttons[1] = d8[1]; + + twist = ((32768 + MDFN_de32lsb((const uint8 *)data + 4) - (((int32)MDFN_de32lsb((const uint8 *)data + 8) * 32768 + 16383) / 32767)) * 255 + 32767) / 65535; + + anabuttons[0] = (MDFN_de32lsb((const uint8 *)data + 12) * 255 + 16383) / 32767; + anabuttons[1] = (MDFN_de32lsb((const uint8 *)data + 16) * 255 + 16383) / 32767; + anabuttons[2] = (MDFN_de32lsb((const uint8 *)data + 20) * 255 + 16383) / 32767; + + //printf("%02x %02x %02x %02x\n", twist, anabuttons[0], anabuttons[1], anabuttons[2]); +} + + +void InputDevice_neGcon::SetDTR(bool new_dtr) +{ + if(!dtr && new_dtr) + { + command_phase = 0; + bitpos = 0; + transmit_pos = 0; + transmit_count = 0; + } + else if(dtr && !new_dtr) + { + //if(bitpos || transmit_count) + // printf("[PAD] Abort communication!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); + } + + dtr = new_dtr; +} + +bool InputDevice_neGcon::GetDSR(void) +{ + if(!dtr) + return(0); + + if(!bitpos && transmit_count) + return(1); + + return(0); +} + +bool InputDevice_neGcon::Clock(bool TxD, int32 &dsr_pulse_delay) +{ + bool ret = 1; + + dsr_pulse_delay = 0; + + if(!dtr) + return(1); + + if(transmit_count) + ret = (transmit_buffer[transmit_pos] >> bitpos) & 1; + + receive_buffer &= ~(1 << bitpos); + receive_buffer |= TxD << bitpos; + bitpos = (bitpos + 1) & 0x7; + + if(!bitpos) + { + //printf("[PAD] Receive: %02x -- command_phase=%d\n", receive_buffer, command_phase); + + if(transmit_count) + { + transmit_pos++; + transmit_count--; + } + + + switch(command_phase) + { + case 0: + if(receive_buffer != 0x01) + command_phase = -1; + else + { + transmit_buffer[0] = 0x23; + transmit_pos = 0; + transmit_count = 1; + command_phase++; + dsr_pulse_delay = 256; + } + break; + + case 1: + command = receive_buffer; + command_phase++; + + transmit_buffer[0] = 0x5A; + + //if(command != 0x42) + // fprintf(stderr, "Gamepad unhandled command: 0x%02x\n", command); + + if(command == 0x42) + { + transmit_buffer[1] = 0xFF ^ buttons[0]; + transmit_buffer[2] = 0xFF ^ buttons[1]; + transmit_buffer[3] = twist; // Twist, 0x00 through 0xFF, 0x80 center. + transmit_buffer[4] = anabuttons[0]; // Analog button I, 0x00 through 0xFF, 0x00 = no pressing, 0xFF = max. + transmit_buffer[5] = anabuttons[1]; // Analog button II, "" + transmit_buffer[6] = anabuttons[2]; // Left shoulder analog button, "" + transmit_pos = 0; + transmit_count = 7; + dsr_pulse_delay = 256; + } + else + { + command_phase = -1; + transmit_buffer[1] = 0; + transmit_buffer[2] = 0; + transmit_pos = 0; + transmit_count = 0; + } + break; + + case 2: + if(transmit_count > 0) + dsr_pulse_delay = 128; + break; + } + } + + return(ret); +} + +InputDevice *Device_neGcon_Create(void) +{ + return new InputDevice_neGcon(); +} + + +InputDeviceInputInfoStruct Device_neGcon_IDII[21] = +{ + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { "start", "START", 4, IDIT_BUTTON, NULL }, + { "up", "D-Pad UP ↑", 0, IDIT_BUTTON, "down" }, + { "right", "D-Pad RIGHT →", 3, IDIT_BUTTON, "left" }, + { "down", "D-Pad DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "D-Pad LEFT â†", 2, IDIT_BUTTON, "right" }, + + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { "r", "Right Shoulder", 12, IDIT_BUTTON }, + + { "b", "B", 9, IDIT_BUTTON, NULL }, + { "a", "A", 10, IDIT_BUTTON, NULL }, + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + { NULL, "empty", -1, IDIT_BUTTON, NULL }, + + { "twist_cwise", "Twist ↓|↑ (Analog, Turn Right)", 6, IDIT_BUTTON_ANALOG }, + { "twist_ccwise", "Twist ↑|↓ (Analog, Turn Left)", 5, IDIT_BUTTON_ANALOG }, + { "i", "I (Analog)", 8, IDIT_BUTTON_ANALOG }, + { "ii", "II (Analog)", 7, IDIT_BUTTON_ANALOG }, + + { "l", "Left Shoulder (Analog)", 11, IDIT_BUTTON_ANALOG }, +}; + +} diff --git a/libmednahawk/src/psx/input/negcon.h b/libmednahawk/src/psx/input/negcon.h new file mode 100644 index 0000000000..f9b1ec4961 --- /dev/null +++ b/libmednahawk/src/psx/input/negcon.h @@ -0,0 +1,9 @@ +#ifndef __MDFN_PSX_INPUT_NEGCON_H +#define __MDFN_PSX_INPUT_NEGCON_H + +namespace MDFN_IEN_PSX +{ + InputDevice *Device_neGcon_Create(void); + extern InputDeviceInputInfoStruct Device_neGcon_IDII[21]; +} +#endif diff --git a/libmednahawk/src/psx/irq.cpp b/libmednahawk/src/psx/irq.cpp new file mode 100644 index 0000000000..7211bceb8d --- /dev/null +++ b/libmednahawk/src/psx/irq.cpp @@ -0,0 +1,174 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" + +namespace MDFN_IEN_PSX +{ + +static uint16 Asserted; +static uint16 Mask; +static uint16 Status; + +static INLINE void Recalc(void) +{ + CPU->AssertIRQ(0, (bool)(Status & Mask)); +} + +void IRQ_Power(void) +{ + Asserted = 0; + Status = 0; + Mask = 0; + + Recalc(); +} + +int IRQ_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(Asserted), + SFVAR(Mask), + SFVAR(Status), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "IRQ"); + + if(load) + { + Recalc(); + } + + return(ret); +} + + +void IRQ_Assert(int which, bool status) +{ + uint32 old_Asserted = Asserted; + //PSX_WARNING("[IRQ] Assert: %d %d", which, status); + + //if(which == IRQ_SPU && status && (Asserted & (1 << which))) + // MDFN_DispMessage("SPU IRQ glitch??"); + + Asserted &= ~(1 << which); + + if(status) + { + Asserted |= 1 << which; + //Status |= 1 << which; + Status |= (old_Asserted ^ Asserted) & Asserted; + } + + Recalc(); +} + + +void IRQ_Write(uint32 A, uint32 V) +{ + // FIXME if we ever have "accurate" bus emulation + V <<= (A & 3) * 8; + + //printf("[IRQ] Write: 0x%08x 0x%08x --- PAD TEMP\n", A, V); + + if(A & 4) + Mask = V; + else + { + Status &= V; + //Status |= Asserted; + } + + Recalc(); +} + + +uint32 IRQ_Read(uint32 A) +{ + uint32 ret = 0; + + if(A & 4) + ret = Mask; + else + ret = Status; + + // FIXME: Might want to move this out to psx.cpp eventually. + ret |= 0x1F800000; + ret >>= (A & 3) * 8; + + + //printf("[IRQ] Read: 0x%08x 0x%08x --- PAD TEMP\n", A, ret); + + return(ret); +} + + +void IRQ_Reset(void) +{ + Asserted = 0; + Status = 0; + Mask = 0; + + Recalc(); +} + + +uint32 IRQ_GetRegister(unsigned int which, char *special, const uint32 special_len) +{ + uint32 ret = 0; + + switch(which) + { + case IRQ_GSREG_ASSERTED: + ret = Asserted; + break; + + case IRQ_GSREG_STATUS: + ret = Status; + break; + + case IRQ_GSREG_MASK: + ret = Mask; + break; + } + return(ret); +} + +void IRQ_SetRegister(unsigned int which, uint32 value) +{ + switch(which) + { + case IRQ_GSREG_ASSERTED: + Asserted = value; + Recalc(); + break; + + case IRQ_GSREG_STATUS: + Status = value; + Recalc(); + break; + + case IRQ_GSREG_MASK: + Mask = value; + Recalc(); + break; + } +} + + +} diff --git a/libmednahawk/src/psx/irq.h b/libmednahawk/src/psx/irq.h new file mode 100644 index 0000000000..eddf1a50d2 --- /dev/null +++ b/libmednahawk/src/psx/irq.h @@ -0,0 +1,43 @@ +#ifndef __MDFN_PSX_IRQ_H +#define __MDFN_PSX_IRQ_H + +namespace MDFN_IEN_PSX +{ + + +enum +{ + IRQ_VSYNC = 0, + IRQ_GPU = 1, + IRQ_CD = 2, + IRQ_DMA = 3, // Probably + IRQ_TIMER_0 = 4, + IRQ_TIMER_1 = 5, + IRQ_TIMER_2 = 6, + IRQ_SIO = 7, + IRQ_SPU = 9, + IRQ_PIO = 10, // Probably +}; + +void IRQ_Power(void); +void IRQ_Assert(int which, bool asserted); + +void IRQ_Write(uint32 A, uint32 V); +uint32 IRQ_Read(uint32 A); + + +enum +{ + IRQ_GSREG_ASSERTED = 0, + IRQ_GSREG_STATUS = 1, + IRQ_GSREG_MASK = 2 +}; + +uint32 IRQ_GetRegister(unsigned int which, char *special, const uint32 special_len); +void IRQ_SetRegister(unsigned int which, uint32 value); + +int IRQ_StateAction(StateMem *sm, int load, int data_only); +}; + + +#endif diff --git a/libmednahawk/src/psx/mdec.cpp b/libmednahawk/src/psx/mdec.cpp new file mode 100644 index 0000000000..603f6feb3e --- /dev/null +++ b/libmednahawk/src/psx/mdec.cpp @@ -0,0 +1,543 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "mdec.h" + +#include "../cdrom/SimpleFIFO.h" +#include + +#if defined(__SSE2__) +#include +#include +#endif + +#if defined(ARCH_POWERPC_ALTIVEC) && defined(HAVE_ALTIVEC_H) + #include +#endif + +namespace MDFN_IEN_PSX +{ + + +static bool block_ready; +static int32 block_y[2][2][8][8]; +static int32 block_cb[8][8]; // [y >> 1][x >> 1] +static int32 block_cr[8][8]; // [y >> 1][x >> 1] + +static int32 run_time; +static uint32 Command; + +static uint8 QMatrix[2][64]; +static uint32 QMIndex; + +static MDFN_ALIGN(16) int16 IDCTMatrix[64]; //zero 07-feb-2012 - fixed +static uint32 IDCTMIndex; + +static uint8 QScale; + +static MDFN_ALIGN(16) int16 Coeff[6][64]; //zero 07-feb-2012 - fixed +static uint32 CoeffIndex; +static uint32 DecodeWB; + +static SimpleFIFO InputBuffer(65536); +static SimpleFIFO OutBuffer(384); + +static uint32 InCounter; +static bool BlockEnd; +static bool DecodeEnd; + +static const uint8 ZigZag[64] = +{ + 0x00, 0x01, 0x08, 0x10, 0x09, 0x02, 0x03, 0x0A, + 0x11, 0x18, 0x20, 0x19, 0x12, 0x0B, 0x04, 0x05, + 0x0C, 0x13, 0x1A, 0x21, 0x28, 0x30, 0x29, 0x22, + 0x1B, 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1C, + 0x23, 0x2A, 0x31, 0x38, 0x39, 0x32, 0x2B, 0x24, + 0x1D, 0x16, 0x0F, 0x17, 0x1E, 0x25, 0x2C, 0x33, + 0x3A, 0x3B, 0x34, 0x2D, 0x26, 0x1F, 0x27, 0x2E, + 0x35, 0x3C, 0x3D, 0x36, 0x2F, 0x37, 0x3E, 0x3F +}; + +void MDEC_Power(void) +{ + run_time = 0; + block_ready = false; + + Command = 0; + memset(QMatrix, 0, sizeof(QMatrix)); + QMIndex = 0; + + memset(IDCTMatrix, 0, sizeof(IDCTMatrix)); + IDCTMIndex = 0; + + QScale = 0; + + memset(Coeff, 0, sizeof(Coeff)); + CoeffIndex = 0; + DecodeWB = 0; + + OutBuffer.Flush(); + + InCounter = 0; + BlockEnd = 0; + DecodeEnd = 0; +} + +int MDEC_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(block_ready), + + SFARRAY32(&block_y[0][0][0][0], sizeof(block_y) / sizeof(block_y[0][0][0][0])), + SFARRAY32(&block_cb[0][0], sizeof(block_cb) / sizeof(block_cb[0][0])), + SFARRAY32(&block_cr[0][0], sizeof(block_cr) / sizeof(block_cr[0][0])), + + SFVAR(run_time), + SFVAR(Command), + + SFARRAY(&QMatrix[0][0], sizeof(QMatrix) / sizeof(QMatrix[0][0])), + SFVAR(QMIndex), + + SFARRAY16(&IDCTMatrix[0], sizeof(IDCTMatrix) / sizeof(IDCTMatrix[0])), + SFVAR(IDCTMIndex), + + SFVAR(QScale), + + SFARRAY16(&Coeff[0][0], sizeof(Coeff) / sizeof(Coeff[0][0])), + SFVAR(CoeffIndex), + SFVAR(DecodeWB), + +#define SFFIFO16(fifoobj) SFARRAY16(&fifoobj.data[0], fifoobj.data.size()), \ + SFVAR(fifoobj.read_pos), \ + SFVAR(fifoobj.write_pos), \ + SFVAR(fifoobj.in_count) + + SFFIFO16(InputBuffer), + SFFIFO16(OutBuffer), +#undef SFFIFO + + SFVAR(InCounter), + SFVAR(BlockEnd), + SFVAR(DecodeEnd), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MDEC"); + + if(load) + { + + } + + return(ret); +} + + +static INLINE void WriteQTab(uint8 V) +{ + QMatrix[QMIndex >> 6][QMIndex & 0x3F] = V; + QMIndex = (QMIndex + 1) & 0x7F; +} + +static void DecodeImage(void); +static INLINE void WriteImageData(uint16 V) +{ + const uint32 qmw = (bool)(DecodeWB < 2); + + //printf("MDEC DMA SubWrite: %04x\n", V); + + if(!CoeffIndex) + { + if(DecodeWB == 0 && V == 0xFE00) + { + InputBuffer.Flush(); + return; + } + QScale = V >> 10; + Coeff[DecodeWB][ZigZag[0]] = sign_10_to_s16(V & 0x3FF) * QMatrix[qmw][0]; + CoeffIndex++; + } + else + { + if(V == 0xFE00) + { + BlockEnd = true; + while(CoeffIndex < 64) + Coeff[DecodeWB][ZigZag[CoeffIndex++]] = 0; + } + else + { + uint32 rlcount = V >> 10; + + for(uint32 i = 0; i < rlcount && CoeffIndex < 64; i++) + { + Coeff[DecodeWB][ZigZag[CoeffIndex]] = 0; + CoeffIndex++; + } + + if(CoeffIndex < 64) + { + Coeff[DecodeWB][ZigZag[CoeffIndex]] = (sign_10_to_s16(V & 0x3FF) * QScale * QMatrix[qmw][CoeffIndex]) >> 3; // Arithmetic right shift or division(negative differs)? + CoeffIndex++; + } + } + } + + if(CoeffIndex == 64 && BlockEnd) + { + BlockEnd = false; + CoeffIndex = 0; + + //printf("Block %d finished\n", DecodeWB); + + DecodeWB++; + if(DecodeWB == 6) + { + DecodeWB = 0; + + DecodeImage(); + } + } +} + +static void IDCT(int16 *in_coeff, int32 *out_coeff) +{ +#if defined(__SSE2__) + for(int i = 0; i < 8 * 8; i++) + { + __m128i sum = _mm_set1_epi32(0); + __m128i m0 = _mm_load_si128((__m128i *)&IDCTMatrix[((i & 7) * 8) + 0]); + int32 tmp[4] MDFN_ALIGN(16); + + for(int v = 0; v < 8; v++) + { + __m128i c = _mm_load_si128((__m128i *)&in_coeff[v * 8]); + __m128i m1 = _mm_set1_epi16(IDCTMatrix[(i & ~7) + v]); + __m128i m = _mm_mulhi_epi16(m0, m1); + + sum = _mm_add_epi32(sum, _mm_madd_epi16(c, m)); + } + + sum = _mm_add_epi32(sum, _mm_shuffle_epi32(sum, (3 << 0) | (2 << 2) | (1 << 4) | (0 << 6))); + sum = _mm_add_epi32(sum, _mm_shuffle_epi32(sum, (1 << 0) | (0 << 2))); + sum = _mm_srai_epi32(sum, 16); + + //_mm_store_ss((float *)(out_coeff + i), (__m128)sum); + _mm_store_si128((__m128i*)tmp, sum); + + out_coeff[i] = tmp[0]; //((tmp[0] + tmp[1]) + (tmp[2] + tmp[3])) >> 16; + } +#elif defined(ARCH_POWERPC_ALTIVEC) + static const uint8 snail_cake[16] MDFN_ALIGN(16) = { + 0x00, 0x01, 0x10, 0x11, + 0x04, 0x05, 0x14, 0x15, + 0x08, 0x09, 0x18, 0x19, + 0x0C, 0x0D, 0x1C, 0x1D }; + vector unsigned char snail_pizza = vec_ld(0, snail_cake); + + for(int i = 0; i < 8 * 8; i++) + { + vector signed int sum = vec_splat_s32(0); + vector signed short m0 = vec_ld((((i & 7) * 8) + 0) * sizeof(signed short), IDCTMatrix); + int32 tmp[4] MDFN_ALIGN(16); + + for(int v = 0; v < 8; v++) + { + vector signed short c = vec_ld((v * 8) * sizeof(signed short), in_coeff); + vector signed short m1 = vec_splats(IDCTMatrix[(i & ~7) + v]); + #if 0 + vector signed short m = vec_madds(m0, m1, vec_splat_s16(0)); // Has incorrect behavior for what we need. + #endif + vector signed int te = vec_mule(m0, m1); + vector signed int to = vec_mulo(m0, m1); + vector signed short m = (vector signed short)vec_perm(te, to, snail_pizza); + + sum = vec_msum(c, m, sum); + } + vec_st(sum, 0, tmp); + out_coeff[i] = ((tmp[0] + tmp[1]) + (tmp[2] + tmp[3])) >> 16; + } +#else + for(int y = 0; y < 8; y++) + { + for(int x = 0; x < 8; x++) + { + int32 sum = 0; + + for(int v = 0; v < 8; v++) + { + int16 *c = &in_coeff[v * 8]; + int16 *m0 = &IDCTMatrix[(x * 8) + 0]; + int16 *m1 = &IDCTMatrix[(y * 8) + v]; + + for(int u = 0; u < 8; u++) + { + sum += c[u] * ((m0[u] * m1[0]) >> 16); + } + } + out_coeff[y * 8 + x] = sum >> 16; + } + } +#endif +} + +static void YCbCr_to_RGB(const int32 y, const int32 cb, const int32 cr, int &r, int &g, int &b) +{ + r = (y + 128) + ((91881 * cr) >> 16); + g = (y + 128) - ((22525 * cb) >> 16) - ((46812 * cr) >> 16); + b = (y + 128) + ((116130 * cb) >> 16); + + if(r < 0) r = 0; + if(r > 255) r = 255; + + if(g < 0) g = 0; + if(g > 255) g = 255; + + if(b < 0) b = 0; + if(b > 255) b = 255; +} + +static void DecodeImage(void) +{ + //puts("DECODE"); + run_time -= 2048; //4096; //256; //1024; //2048; //8192; //1024; //4096; + + IDCT(Coeff[0], &block_cr[0][0]); + IDCT(Coeff[1], &block_cb[0][0]); + IDCT(Coeff[2], &block_y[0][0][0][0]); + IDCT(Coeff[3], &block_y[0][1][0][0]); + IDCT(Coeff[4], &block_y[1][0][0][0]); + IDCT(Coeff[5], &block_y[1][1][0][0]); + + block_ready = true; +} + +static void EncodeImage(void) +{ + //printf("ENCODE, %d\n", (Command & 0x08000000) ? 256 : 384); + + block_ready = false; + + if(!(Command & 0x08000000)) + { + uint8 output[16][16][3]; // [y][x][cc] + + for(int y = 0; y < 16; y++) + { + for(int x = 0; x < 16; x++) + { + int r, g, b; + + YCbCr_to_RGB(block_y[(y >> 3) & 1][(x >> 3) & 1][y & 7][x & 7], block_cb[y >> 1][x >> 1], block_cr[y >> 1][x >> 1], r, g, b); + + //r = y * 15; + //g = x * 15; + //b = 0; + + output[y][x][0] = r; + output[y][x][1] = g; + output[y][x][2] = b; + } + } + + for(int i = 0; i < 384; i++) + { + if(OutBuffer.CanWrite()) + OutBuffer.WriteUnit((&output[0][0][0])[i * 2 + 0] | ((&output[0][0][0])[i * 2 + 1] << 8)); + } + } + else + { + uint16 pixel_or = (Command & 0x02000000) ? 0x8000 : 0x0000; + + for(int y = 0; y < 16; y++) + { + for(int x = 0; x < 16; x++) + { + int r, g, b; + + YCbCr_to_RGB(block_y[(y >> 3) & 1][(x >> 3) & 1][y & 7][x & 7], block_cb[y >> 1][x >> 1], block_cr[y >> 1][x >> 1], r, g, b); + + if(OutBuffer.CanWrite()) + OutBuffer.WriteUnit(pixel_or | ((r >> 3) << 0) | ((g >> 3) << 5) | ((b >> 3) << 10)); + } + } + } +} + +void MDEC_DMAWrite(uint32 V) +{ + if(Command == 0x60000000) + { + for(unsigned i = 0; i < 2; i++) + { + IDCTMatrix[((IDCTMIndex & 0x7) << 3) | ((IDCTMIndex >> 3) & 0x7)] = (int16)(V & 0xFFFF); + IDCTMIndex = (IDCTMIndex + 1) & 0x3F; + + V >>= 16; + } + } + else if(Command == 0x40000001) + { + for(int i = 0; i < 4; i++) + { + WriteQTab((uint8)V); + V >>= 8; + } + } + else if((Command & 0xF5FF0000) == 0x30000000) + { + if(InCounter > 0) + { + for(int vi = 0; vi < 2; vi++) + { + if(InputBuffer.CanWrite()) + InputBuffer.WriteUnit(V); + + V >>= 16; + } + InCounter--; + } + } + else + { + printf("MYSTERY1: %08x\n", V); + } +} + +uint32 MDEC_DMARead(void) +{ + uint32 V = 0; + + if((Command & 0xF5FF0000) == 0x30000000 && OutBuffer.CanRead() >= 2) + { + V = OutBuffer.ReadUnit() | (OutBuffer.ReadUnit() << 16); + } + else + { + puts("BONUS GNOMES"); + V = rand(); + } + return(V); +} + +bool MDEC_DMACanRead(void) +{ + return(OutBuffer.CanRead() >= 2); //(OutBuffer.CanRead() >= 2) || ((Command & 0xF5FF0000) != 0x30000000); +} + +void MDEC_Write(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + PSX_WARNING("[MDEC] Write: 0x%08x 0x%08x, %d", A, V, timestamp); + if(A & 4) + { + if(V & 0x80000000) // Reset? + { + block_ready = false; + run_time = 0; + QMIndex = 0; + IDCTMIndex = 0; + + QScale = 0; + + memset(Coeff, 0, sizeof(Coeff)); + CoeffIndex = 0; + DecodeWB = 0; + + InputBuffer.Flush(); + OutBuffer.Flush(); + + InCounter = 0; + BlockEnd = false; + } + } + else + { + Command = V; + + if((Command & 0xF5FF0000) == 0x30000000) + { + InputBuffer.Flush(); + OutBuffer.Flush(); + + block_ready = false; + BlockEnd = false; + CoeffIndex = 0; + DecodeWB = 0; + + InCounter = V & 0xFFFF; + } + else if(Command == 0x60000000) + { + IDCTMIndex = 0; + } + else if(Command == 0x40000001) + { + QMIndex = 0; + } + } +} + +uint32 MDEC_Read(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 ret = 0; + + if(A & 4) + { + ret = 0; + + if(InputBuffer.CanRead()) + ret |= 0x20000000; + } + else + { + ret = Command; + } + + //PSX_WARNING("[MDEC] Read: 0x%08x 0x%08x -- %d %d", A, ret, InputBuffer.CanRead(), InCounter); + + return(ret); +} + +void MDEC_Run(int32 clocks) +{ + run_time += clocks; + + while(run_time > 0) + { + run_time--; + + if(block_ready && !OutBuffer.CanRead()) + EncodeImage(); + + if(block_ready && OutBuffer.CanRead()) + break; + + if(!InputBuffer.CanRead()) + break; + + WriteImageData(InputBuffer.ReadUnit()); + } + + if(run_time > 0) + run_time = 0; +} + +} diff --git a/libmednahawk/src/psx/mdec.h b/libmednahawk/src/psx/mdec.h new file mode 100644 index 0000000000..8033bc472c --- /dev/null +++ b/libmednahawk/src/psx/mdec.h @@ -0,0 +1,23 @@ +#ifndef __MDFN_PSX_MDEC_H +#define __MDFN_PSX_MDEC_H + +namespace MDFN_IEN_PSX +{ + +void MDEC_DMAWrite(uint32 V); + +uint32 MDEC_DMARead(void); + +void MDEC_Write(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); +uint32 MDEC_Read(const pscpu_timestamp_t timestamp, uint32 A); + + +void MDEC_Power(void); + +bool MDEC_DMACanRead(void); +void MDEC_Run(int32 clocks); + +int MDEC_StateAction(StateMem *sm, int load, int data_only); +} + +#endif diff --git a/libmednahawk/src/psx/psx.cpp b/libmednahawk/src/psx/psx.cpp new file mode 100644 index 0000000000..314ef1de56 --- /dev/null +++ b/libmednahawk/src/psx/psx.cpp @@ -0,0 +1,1834 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "mdec.h" +#include "frontio.h" +#include "timer.h" +#include "sio.h" +#include "cdc.h" +#include "spu.h" +#include "../mempatcher.h" +#include "../PSFLoader.h" +#include "../player.h" +#include "../cputest/cputest.h" + +extern MDFNGI EmulatedPSX; + +namespace MDFN_IEN_PSX +{ + +class PSF1Loader : public PSFLoader +{ + public: + + PSF1Loader(MDFNFILE *fp); + virtual ~PSF1Loader(); + + virtual void HandleEXE(const uint8 *data, uint32 len, bool ignore_pcsp = false); + + PSFTags tags; +}; + +enum +{ + REGION_JP = 0, + REGION_NA = 1, + REGION_EU = 2, +}; + +#if 0 +static uint32 PortReadCounter[0x4000] = { 0 }; // Debugging(performance) +static uint32 ReadCounter = 0; +static uint32 WriteCounter = 0; +#endif + +static PSF1Loader *psf_loader = NULL; +static std::vector *cdifs = NULL; +static std::vector cdifs_scex_ids; +static bool CD_TrayOpen; +static int CD_SelectedDisc; // -1 for no disc + +static uint64 Memcard_PrevDC[8]; +static int64 Memcard_SaveDelay[8]; + +PS_CPU *CPU = NULL; +PS_SPU *SPU = NULL; +PS_GPU *GPU = NULL; +PS_CDC *CDC = NULL; +FrontIO *FIO = NULL; + +static MultiAccessSizeMem<512 * 1024, uint32, false> *BIOSROM = NULL; +static MultiAccessSizeMem<65536, uint32, false> *PIOMem = NULL; + +MultiAccessSizeMem<2048 * 1024, uint32, false> MainRAM; + +static uint32 TextMem_Start; +static std::vector TextMem; + +//static MultiAccessSizeMem<1024, uint32, false, PS_CPU::FAST_MAP_TRAMPOLINE_SIZE / 4, PS_CPU::FAST_MAP_TRAMPOLINE_SIZE / 4> ScratchRAM; //zero 01-apr-2012 - add padding here +static MultiAccessSizeMem<1024, uint32, false> ScratchRAM; + +static const uint32 SysControl_Mask[9] = { 0x00ffffff, 0x00ffffff, 0xffffffff, 0x2f1fffff, + 0xffffffff, 0x2f1fffff, 0x2f1fffff, 0xffffffff, + 0x0003ffff }; + +static const uint32 SysControl_OR[9] = { 0x1f000000, 0x1f000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000 }; + +static struct +{ + union + { + struct + { + uint32 PIO_Base; // 0x1f801000 // BIOS Init: 0x1f000000, Writeable bits: 0x00ffffff(assumed, verify), FixedOR = 0x1f000000 + uint32 Unknown0; // 0x1f801004 // BIOS Init: 0x1f802000, Writeable bits: 0x00ffffff, FixedOR = 0x1f000000 + uint32 Unknown1; // 0x1f801008 // BIOS Init: 0x0013243f, ???? + uint32 Unknown2; // 0x1f80100c // BIOS Init: 0x00003022, Writeable bits: 0x2f1fffff, FixedOR = 0x00000000 + + uint32 BIOS_Mapping; // 0x1f801010 // BIOS Init: 0x0013243f, ???? + uint32 SPU_Delay; // 0x1f801014 // BIOS Init: 0x200931e1, Writeable bits: 0x2f1fffff, FixedOR = 0x00000000 - Affects bus timing on access to SPU + uint32 CDC_Delay; // 0x1f801018 // BIOS Init: 0x00020843, Writeable bits: 0x2f1fffff, FixedOR = 0x00000000 + uint32 Unknown4; // 0x1f80101c // BIOS Init: 0x00070777, ???? + uint32 Unknown5; // 0x1f801020 // BIOS Init: 0x00031125(but rewritten with other values often), Writeable bits: 0x0003ffff, FixedOR = 0x00000000 -- Possibly CDC related + }; + uint32 Regs[9]; + }; +} SysControl; + + +// +// Event stuff +// +// Comment out this define for extra speeeeed. +#define PSX_EVENT_SYSTEM_CHECKS 1 + +static pscpu_timestamp_t Running; // Set to -1 when not desiring exit, and 0 when we are. + +struct event_list_entry +{ + uint32 which; + pscpu_timestamp_t event_time; + event_list_entry *prev; + event_list_entry *next; +}; + +static event_list_entry events[PSX_EVENT__COUNT]; + +static void EventReset(void) +{ + for(unsigned i = 0; i < PSX_EVENT__COUNT; i++) + { + events[i].which = i; + + if(i == PSX_EVENT__SYNFIRST) + events[i].event_time = 0; + else if(i == PSX_EVENT__SYNLAST) + events[i].event_time = 0x7FFFFFFF; + else + events[i].event_time = PSX_EVENT_MAXTS; + + events[i].prev = (i > 0) ? &events[i - 1] : NULL; + events[i].next = (i < (PSX_EVENT__COUNT - 1)) ? &events[i + 1] : NULL; +} +} + +//static void RemoveEvent(event_list_entry *e) +//{ +// e->prev->next = e->next; +// e->next->prev = e->prev; +//} + +static void RebaseTS(const pscpu_timestamp_t timestamp) +{ + for(unsigned i = 0; i < PSX_EVENT__COUNT; i++) + { + if(i == PSX_EVENT__SYNFIRST || i == PSX_EVENT__SYNLAST) + continue; + + assert(events[i].event_time > timestamp); + events[i].event_time -= timestamp; + } + + CPU->SetEventNT(events[PSX_EVENT__SYNFIRST].next->event_time); +} + +void PSX_SetEventNT(const int type, const pscpu_timestamp_t next_timestamp) +{ + assert(type > PSX_EVENT__SYNFIRST && type < PSX_EVENT__SYNLAST); + event_list_entry *e = &events[type]; + + if(next_timestamp < e->event_time) + { + event_list_entry *fe = e; + + do + { + fe = fe->prev; + } + while(next_timestamp < fe->event_time); + + // Remove this event from the list, temporarily of course. + e->prev->next = e->next; + e->next->prev = e->prev; + + // Insert into the list, just after "fe". + e->prev = fe; + e->next = fe->next; + fe->next->prev = e; + fe->next = e; + + e->event_time = next_timestamp; +} + else if(next_timestamp > e->event_time) + { + event_list_entry *fe = e; + + do +{ + fe = fe->next; + } while(next_timestamp > fe->event_time); + + // Remove this event from the list, temporarily of course + e->prev->next = e->next; + e->next->prev = e->prev; + + // Insert into the list, just BEFORE "fe". + e->prev = fe->prev; + e->next = fe; + fe->prev->next = e; + fe->prev = e; + + e->event_time = next_timestamp; +} + + CPU->SetEventNT(events[PSX_EVENT__SYNFIRST].next->event_time & Running); +} + +static void ForceEventUpdates(const pscpu_timestamp_t timestamp) +{ + PSX_SetEventNT(PSX_EVENT_GPU, GPU->Update(timestamp)); + PSX_SetEventNT(PSX_EVENT_CDC, CDC->Update(timestamp)); + + PSX_SetEventNT(PSX_EVENT_TIMER, TIMER_Update(timestamp)); + + PSX_SetEventNT(PSX_EVENT_DMA, DMA_Update(timestamp)); + + PSX_SetEventNT(PSX_EVENT_FIO, FIO->Update(timestamp)); + + CPU->SetEventNT(events[PSX_EVENT__SYNFIRST].next->event_time); +} + +bool MDFN_FASTCALL PSX_EventHandler(const pscpu_timestamp_t timestamp) +{ + event_list_entry *e = events[PSX_EVENT__SYNFIRST].next; +#ifdef PSX_EVENT_SYSTEM_CHECKS + pscpu_timestamp_t prev_event_time = 0; +#endif +#if 0 + { + printf("EventHandler - timestamp=%8d\n", timestamp); + event_list_entry *moo = &events[PSX_EVENT__SYNFIRST]; + while(moo) + { + printf("%u: %8d\n", moo->which, moo->event_time); + moo = moo->next; + } + } +#endif + +#ifdef PSX_EVENT_SYSTEM_CHECKS + assert(Running == 0 || timestamp >= e->event_time); // If Running == 0, our EventHandler +#endif + + while(timestamp >= e->event_time) // If Running = 0, PSX_EventHandler() may be called even if there isn't an event per-se, so while() instead of do { ... } while + { + event_list_entry *prev = e->prev; + pscpu_timestamp_t nt; + +#ifdef PSX_EVENT_SYSTEM_CHECKS + // Sanity test to make sure events are being evaluated in temporal order. + if(e->event_time < prev_event_time) + abort(); + prev_event_time = e->event_time; +#endif + + //printf("Event: %u %8d\n", e->which, e->event_time); +#ifdef PSX_EVENT_SYSTEM_CHECKS + if((timestamp - e->event_time) > 50) + printf("Late: %u %d --- %8d\n", e->which, timestamp - e->event_time, timestamp); +#endif + + switch(e->which) + { + default: abort(); + + case PSX_EVENT_GPU: + nt = GPU->Update(e->event_time); + break; + + case PSX_EVENT_CDC: + nt = CDC->Update(e->event_time); + break; + + case PSX_EVENT_TIMER: + nt = TIMER_Update(e->event_time); + break; + + case PSX_EVENT_DMA: + nt = DMA_Update(e->event_time); + break; + + case PSX_EVENT_FIO: + nt = FIO->Update(e->event_time); + break; +} +#ifdef PSX_EVENT_SYSTEM_CHECKS + assert(nt > e->event_time); +#endif + + PSX_SetEventNT(e->which, nt); + + // Order of events can change due to calling PSX_SetEventNT(), this prev business ensures we don't miss an event due to reordering. + e = prev->next; + } + +#ifdef PSX_EVENT_SYSTEM_CHECKS + for(int i = PSX_EVENT__SYNFIRST + 1; i < PSX_EVENT__SYNLAST; i++) +{ + if(timestamp >= events[i].event_time) + { + printf("BUG: %u\n", i); + + event_list_entry *moo = &events[PSX_EVENT__SYNFIRST]; + + while(moo) + { + printf("%u: %8d\n", moo->which, moo->event_time); + moo = moo->next; + } + + abort(); + } + } +#endif + +//#ifdef PSX_EVENT_SYSTEM_CHECKS +// abort(); +//#endif + + return(Running); +} + + +void PSX_RequestMLExit(void) +{ + Running = 0; + CPU->SetEventNT(0); +} + + +// +// End event stuff +// + +void DMA_CheckReadDebug(uint32 A); + +template static INLINE void MemRW(const pscpu_timestamp_t timestamp, uint32 A, uint32 &V) +{ + static const uint32 mask[8] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x7FFFFFFF, 0x1FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; + + //if(IsWrite) + // V = (T)V; + + if(!Peek) + { + #if 0 + if(IsWrite) + printf("Write%d: %08x(orig=%08x), %08x\n", (int)(sizeof(T) * 8), A & mask[A >> 29], A, V); + else + printf("Read%d: %08x(orig=%08x)\n", (int)(sizeof(T) * 8), A & mask[A >> 29], A); + #endif + } + + A &= mask[A >> 29]; + + //if(A == 0xa0 && IsWrite) + // DBG_Break(); + + if(A < 0x00800000) + //if(A <= 0x1FFFFF) + { + //DMA_CheckReadDebug(A); + //assert(A <= 0x1FFFFF); + if(Access24) + { + if(IsWrite) + MainRAM.WriteU24(A & 0x1FFFFF, V); + else + V = MainRAM.ReadU24(A & 0x1FFFFF); + } + else + { + if(IsWrite) + MainRAM.Write(A & 0x1FFFFF, V); + else + V = MainRAM.Read(A & 0x1FFFFF); + } + + return; + } + + if(A >= 0x1F800000 && A <= 0x1F8003FF) + { + if(Access24) + { + if(IsWrite) + ScratchRAM.WriteU24(A & 0x3FF, V); + else + V = ScratchRAM.ReadU24(A & 0x3FF); + } + else + { + if(IsWrite) + ScratchRAM.Write(A & 0x3FF, V); + else + V = ScratchRAM.Read(A & 0x3FF); + } + return; + } + + if(A >= 0x1FC00000 && A <= 0x1FC7FFFF) + { + if(!IsWrite) + { + if(Access24) + V = BIOSROM->ReadU24(A & 0x7FFFF); + else + V = BIOSROM->Read(A & 0x7FFFF); + } + + return; + } + + if(timestamp >= events[PSX_EVENT__SYNFIRST].next->event_time) + PSX_EventHandler(timestamp); + + if(A >= 0x1F801000 && A <= 0x1F802FFF && !Peek) // Hardware register region. (TODO: Implement proper peek suppor) + { +#if 0 + if(!IsWrite) + { + ReadCounter++; + PortReadCounter[A & 0x3FFF]++; + } + else + WriteCounter++; +#endif + + //if(IsWrite) + // printf("HW Write%d: %08x %08x\n", (unsigned int)(sizeof(T)*8), (unsigned int)A, (unsigned int)V); + //else + // printf("HW Read%d: %08x\n", (unsigned int)(sizeof(T)*8), (unsigned int)A); + + if(A >= 0x1F801C00 && A <= 0x1F801FFF) // SPU + { + if(sizeof(T) == 4 && !Access24) + { + if(IsWrite) + { + SPU->Write(timestamp, A | 0, V); + SPU->Write(timestamp, A | 2, V >> 16); + } + else + { + V = SPU->Read(timestamp, A) | (SPU->Read(timestamp, A | 2) << 16); + } + } + else + { + if(IsWrite) + SPU->Write(timestamp, A & ~1, V); + else + V = SPU->Read(timestamp, A & ~1); + } + return; + } // End SPU + + if(A >= 0x1f801800 && A <= 0x1f80180F) + { + if(IsWrite) + CDC->Write(timestamp, A & 0x3, V); + else + V = CDC->Read(timestamp, A & 0x3); + + return; + } + + if(A >= 0x1F801810 && A <= 0x1F801817) + { + if(IsWrite) + GPU->Write(timestamp, A, V); + else + V = GPU->Read(timestamp, A); + + return; + } + + if(A >= 0x1F801820 && A <= 0x1F801827) + { + if(IsWrite) + MDEC_Write(timestamp, A, V); + else + V = MDEC_Read(timestamp, A); + + return; + } + + if(A >= 0x1F801000 && A <= 0x1F801023) + { + unsigned index = (A & 0x1F) >> 2; + + //if(A == 0x1F801014 && IsWrite) + // fprintf(stderr, "%08x %08x\n",A,V); + + if(IsWrite) + { + V <<= (A & 3) * 8; + SysControl.Regs[index] = V & SysControl_Mask[index]; + } + else + { + V = SysControl.Regs[index] | SysControl_OR[index]; + V >>= (A & 3) * 8; + } + return; + } + + if(A >= 0x1F801040 && A <= 0x1F80104F) + { + if(IsWrite) + FIO->Write(timestamp, A, V); + else + V = FIO->Read(timestamp, A); + return; + } + + if(A >= 0x1F801050 && A <= 0x1F80105F) + { + if(IsWrite) + SIO_Write(timestamp, A, V); + else + V = SIO_Read(timestamp, A); + return; + } + +#if 0 + if(A >= 0x1F801060 && A <= 0x1F801063) + { + if(IsWrite) + { + + } + else + { + + } + + return; + } +#endif + + if(A >= 0x1F801070 && A <= 0x1F801077) // IRQ + { + if(IsWrite) + IRQ_Write(A, V); + else + V = IRQ_Read(A); + return; + } + + if(A >= 0x1F801080 && A <= 0x1F8010FF) // DMA + { + if(IsWrite) + DMA_Write(timestamp, A, V); + else + V = DMA_Read(timestamp, A); + + return; + } + + if(A >= 0x1F801100 && A <= 0x1F80113F) // Root counters + { + if(IsWrite) + TIMER_Write(timestamp, A, V); + else + V = TIMER_Read(timestamp, A); + + return; + } + } + + + if(A >= 0x1F000000 && A <= 0x1F7FFFFF) + { + if(!IsWrite) + { + //if((A & 0x7FFFFF) <= 0x84) + // PSX_WARNING("[PIO] Read%d from %08x at time %d", (int)(sizeof(T) * 8), A, timestamp); + + V = 0; + + if((A & 0x7FFFFF) < 65536) + { + if(Access24) + V = PIOMem->ReadU24(A & 0x7FFFFF); + else + V = PIOMem->Read(A & 0x7FFFFF); + } + else if((A & 0x7FFFFF) < (65536 + TextMem.size())) + { + if(Access24) + V = MDFN_de24lsb(&TextMem[(A & 0x7FFFFF) - 65536]); + else switch(sizeof(T)) + { + case 1: V = TextMem[(A & 0x7FFFFF) - 65536]; break; + case 2: V = MDFN_de16lsb(&TextMem[(A & 0x7FFFFF) - 65536]); break; + case 4: V = MDFN_de32lsb(&TextMem[(A & 0x7FFFFF) - 65536]); break; + } + } + } + return; + } + + if(!Peek) + { + if(IsWrite) + { + PSX_WARNING("[MEM] Unknown write%d to %08x at time %d, =%08x(%d)", (int)(sizeof(T) * 8), A, timestamp, V, V); + } + else + { + V = 0; + PSX_WARNING("[MEM] Unknown read%d from %08x at time %d", (int)(sizeof(T) * 8), A, timestamp); + } + } + else + V = 0; + +} + +void MDFN_FASTCALL PSX_MemWrite8(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + MemRW(timestamp, A, V); +} + +void MDFN_FASTCALL PSX_MemWrite16(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + MemRW(timestamp, A, V); +} + +void MDFN_FASTCALL PSX_MemWrite24(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + //assert(0); + MemRW(timestamp, A, V); +} + +void MDFN_FASTCALL PSX_MemWrite32(const pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + MemRW(timestamp, A, V); +} + +uint8 MDFN_FASTCALL PSX_MemRead8(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 V; + + MemRW(timestamp, A, V); + + return(V); +} + +uint16 MDFN_FASTCALL PSX_MemRead16(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 V; + + MemRW(timestamp, A, V); + + return(V); +} + +uint32 MDFN_FASTCALL PSX_MemRead24(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 V; + + //assert(0); + MemRW(timestamp, A, V); + + return(V); +} + +uint32 MDFN_FASTCALL PSX_MemRead32(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 V; + + MemRW(timestamp, A, V); + + return(V); +} + + +uint8 PSX_MemPeek8(uint32 A) +{ + uint32 V; + + MemRW(0, A, V); + + return(V); +} + +uint16 PSX_MemPeek16(uint32 A) +{ + uint32 V; + + MemRW(0, A, V); + + return(V); +} + +uint32 PSX_MemPeek32(uint32 A) +{ + uint32 V; + + MemRW(0, A, V); + + return(V); +} + +// FIXME: Add PSX_Reset() and FrontIO::Reset() so that emulated input devices don't get power-reset on reset-button reset. +static void PSX_Power(void) +{ + memset(MainRAM.data32, 0, 2048 * 1024); + memset(ScratchRAM.data32, 0, 1024); + + for(unsigned i = 0; i < 9; i++) + SysControl.Regs[i] = 0; + + CPU->Power(); + + EventReset(); + + TIMER_Power(); + + DMA_Power(); + + FIO->Power(); + SIO_Power(); + + MDEC_Power(); + CDC->Power(); + GPU->Power(); + //SPU->Power(); // Called from CDC->Power() + IRQ_Power(); + + ForceEventUpdates(0); +} + + +void PSX_GPULineHook(const pscpu_timestamp_t timestamp, const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock) +{ + FIO->GPULineHook(timestamp, line_timestamp, vsync, pixels, format, width, pix_clock_offset, pix_clock); +} + +} + +using namespace MDFN_IEN_PSX; + + +static void Emulate(EmulateSpecStruct *espec) +{ + pscpu_timestamp_t timestamp = 0; + + if(FIO->RequireNoFrameskip()) + { + //puts("MEOW"); + espec->skip = false; //TODO: Save here, and restore at end of Emulate() ? + } + + MDFNGameInfo->mouse_sensitivity = MDFN_GetSettingF("psx.input.mouse_sensitivity"); + + MDFNMP_ApplyPeriodicCheats(); + + + espec->MasterCycles = 0; + espec->SoundBufSize = 0; + + FIO->UpdateInput(); + GPU->StartFrame(psf_loader ? NULL : espec); + SPU->StartFrame(espec->SoundRate, MDFN_GetSettingUI("psx.spu.resamp_quality")); + + Running = -1; + timestamp = CPU->Run(timestamp, psf_loader != NULL); + + assert(timestamp); + + ForceEventUpdates(timestamp); + if(GPU->GetScanlineNum() < 100) + printf("[BUUUUUUUG] Frame timing end glitch; scanline=%u, st=%u\n", GPU->GetScanlineNum(), timestamp); + + //printf("scanline=%u, st=%u\n", GPU->GetScanlineNum(), timestamp); + + espec->SoundBufSize = SPU->EndFrame(espec->SoundBuf); + + CDC->ResetTS(); + TIMER_ResetTS(); + DMA_ResetTS(); + GPU->ResetTS(); + FIO->ResetTS(); + + RebaseTS(timestamp); + + espec->MasterCycles = timestamp; + + if(psf_loader) + { + if(!espec->skip) + { + espec->LineWidths[0].w = ~0; + Player_Draw(espec->surface, &espec->DisplayRect, 0, espec->SoundBuf, espec->SoundBufSize); + } + } + + // Save memcards if dirty. + for(int i = 0; i < 8; i++) + { + uint64 new_dc = FIO->GetMemcardDirtyCount(i); + + if(new_dc > Memcard_PrevDC[i]) + { + Memcard_PrevDC[i] = new_dc; + Memcard_SaveDelay[i] = 0; + } + + if(Memcard_SaveDelay[i] >= 0) + { + Memcard_SaveDelay[i] += timestamp; + if(Memcard_SaveDelay[i] >= (33868800 * 2)) // Wait until about 2 seconds of no new writes. + { + fprintf(stderr, "Saving memcard %d...\n", i); + try + { + char ext[64]; + trio_snprintf(ext, sizeof(ext), "%d.mcr", i); + FIO->SaveMemcard(i, MDFN_MakeFName(MDFNMKF_SAV, 0, ext).c_str()); + Memcard_SaveDelay[i] = -1; + Memcard_PrevDC[i] = 0; + } + catch(std::exception &e) + { + MDFN_PrintError("Memcard %d save error: %s", i, e.what()); + MDFN_DispMessage("Memcard %d save error: %s", i, e.what()); + } + //MDFN_DispMessage("Memcard %d saved.", i); + } + } + } + + #if 0 + printf("read=%6d, write=%6d\n", ReadCounter, WriteCounter); + ReadCounter = 0; + WriteCounter = 0; + printf("HW Port reads for this frame:\n"); + for(unsigned i = 0; i < 0x4000; i++) + { + if(PortReadCounter[i] > 100) + printf("0x%08x: %d\n", 0x1f800000 + i, PortReadCounter[i]); + } + memset(PortReadCounter, 0, sizeof(PortReadCounter)); + printf("\n"); + #endif +} + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(PSFLoader::TestMagic(0x01, fp)) + return(true); + + if(fp->size < 0x800) + return(false); + + if(memcmp(fp->data, "PS-X EXE", 8)) + return(false); + + return(true); +} + +static bool TestMagicCD(std::vector *CDInterfaces) +{ + uint8 buf[2048]; + CDUtility::TOC toc; + int dt; + + (*CDInterfaces)[0]->ReadTOC(&toc); + + dt = toc.FindTrackByLBA(4); + if(dt > 0 && !(toc.tracks[dt].control & 0x4)) + return(false); + + if((*CDInterfaces)[0]->ReadSector(buf, 4, 1) != 0x2) + return(false); + + if(strncmp((char *)buf + 10, "Licensed by", strlen("Licensed by"))) + return(false); + + //if(strncmp((char *)buf + 32, "Sony", 4)) + // return(false); + + //for(int i = 0; i < 2048; i++) + // printf("%d, %02x %c\n", i, buf[i], buf[i]); + //exit(1); + + return(true); +} + +static const char *CalcDiscSCEx_BySYSTEMCNF(CDIF *c, unsigned *rr) +{ + const char *ret = NULL; + Stream *fp = NULL; + CDUtility::TOC toc; + + //(*CDInterfaces)[disc]->ReadTOC(&toc); + + //if(toc.first_track > 1 || toc. + + try + { + uint8 pvd[2048]; + unsigned pvd_search_count = 0; + + fp = c->MakeStream(0, ~0U); + fp->seek(0x8000, SEEK_SET); + + do + { + if((pvd_search_count++) == 32) + throw MDFN_Error(0, "PVD search count limit met."); + + fp->read(pvd, 2048); + + if(memcmp(&pvd[1], "CD001", 5)) + throw MDFN_Error(0, "Not ISO-9660"); + + if(pvd[0] == 0xFF) + throw MDFN_Error(0, "Missing Primary Volume Descriptor"); + } while(pvd[0] != 0x01); + //[156 ... 189], 34 bytes + uint32 rdel = MDFN_de32lsb(&pvd[0x9E]); + uint32 rdel_len = MDFN_de32lsb(&pvd[0xA6]); + + if(rdel_len >= (1024 * 1024 * 10)) // Arbitrary sanity check. + throw MDFN_Error(0, "Root directory table too large"); + + fp->seek((int64)rdel * 2048, SEEK_SET); + //printf("%08x, %08x\n", rdel * 2048, rdel_len); + while(fp->tell() < (((int64)rdel * 2048) + rdel_len)) + { + uint8 len_dr = fp->get_u8(); + uint8 dr[256 + 1]; + + memset(dr, 0xFF, sizeof(dr)); + + if(!len_dr) + break; + + memset(dr, 0, sizeof(dr)); + dr[0] = len_dr; + fp->read(dr + 1, len_dr - 1); + + uint8 len_fi = dr[0x20]; + + if(len_fi == 12 && !memcmp(&dr[0x21], "SYSTEM.CNF;1", 12)) + { + uint32 file_lba = MDFN_de32lsb(&dr[0x02]); + //uint32 file_len = MDFN_de32lsb(&dr[0x0A]); + uint8 fb[2048 + 1]; + char *bootpos; + + memset(fb, 0, sizeof(fb)); + fp->seek(file_lba * 2048, SEEK_SET); + fp->read(fb, 2048); + + bootpos = strstr((char*)fb, "BOOT") + 4; + while(*bootpos == ' ' || *bootpos == '\t') bootpos++; + if(*bootpos == '=') + { + bootpos++; + while(*bootpos == ' ' || *bootpos == '\t') bootpos++; + if(!strncasecmp(bootpos, "cdrom:\\", 7)) + { + bootpos += 7; + char *tmp; + + if((tmp = strchr(bootpos, '_'))) *tmp = 0; + if((tmp = strchr(bootpos, '.'))) *tmp = 0; + if((tmp = strchr(bootpos, ';'))) *tmp = 0; + //puts(bootpos); + + if(strlen(bootpos) == 4 && bootpos[0] == 'S' && (bootpos[1] == 'C' || bootpos[1] == 'L' || bootpos[1] == 'I')) + { + switch(bootpos[2]) + { + case 'E': if(rr) + *rr = REGION_EU; + ret = "SCEE"; + goto Breakout; + + case 'U': if(rr) + *rr = REGION_NA; + ret = "SCEA"; + goto Breakout; + + case 'K': // Korea? + case 'B': + case 'P': if(rr) + *rr = REGION_JP; + ret = "SCEI"; + goto Breakout; + } + } + } + } + + //puts((char*)fb); + //puts("ASOFKOASDFKO"); + } + } + } + catch(std::exception &e) + { + //puts(e.what()); + } + catch(...) + { + + } + + Breakout: + if(fp != NULL) + { + delete fp; + fp = NULL; + } + + return(ret); +} + +static unsigned CalcDiscSCEx(void) +{ + const char *prev_valid_id = NULL; + unsigned ret_region = MDFN_GetSettingI("psx.region_default"); + + cdifs_scex_ids.clear(); + +if(cdifs) + for(unsigned i = 0; i < cdifs->size(); i++) + { + const char *id = NULL; + uint8 buf[2048]; + uint8 fbuf[2048 + 1]; + unsigned ipos, opos; + + + id = CalcDiscSCEx_BySYSTEMCNF((*cdifs)[i], (i == 0) ? &ret_region : NULL); + + memset(fbuf, 0, sizeof(fbuf)); + + if(id == NULL && (*cdifs)[i]->ReadSector(buf, 4, 1) == 0x2) + { + for(ipos = 0, opos = 0; ipos < 0x48; ipos++) + { + if(buf[ipos] > 0x20 && buf[ipos] < 0x80) + { + fbuf[opos++] = tolower(buf[ipos]); + } + } + + fbuf[opos++] = 0; + + puts((char *)fbuf); + + if(strstr((char *)fbuf, "licensedby") != NULL) + { + if(strstr((char *)fbuf, "america") != NULL) + { + id = "SCEA"; + if(!i) + ret_region = REGION_NA; + } + else if(strstr((char *)fbuf, "europe") != NULL) + { + id = "SCEE"; + if(!i) + ret_region = REGION_EU; + } + else if(strstr((char *)fbuf, "japan") != NULL) + { + id = "SCEI"; // ? + if(!i) + ret_region = REGION_JP; + } + else if(strstr((char *)fbuf, "sonycomputerentertainmentinc.") != NULL) + { + id = "SCEI"; + if(!i) + ret_region = REGION_JP; + } + else // Failure case + { + if(prev_valid_id != NULL) + id = prev_valid_id; + else + { + switch(ret_region) // Less than correct, but meh, what can we do. + { + case REGION_JP: + id = "SCEI"; + break; + + case REGION_NA: + id = "SCEA"; + break; + + case REGION_EU: + id = "SCEE"; + break; + } + } + } + } + } + + if(id != NULL) + prev_valid_id = id; + + cdifs_scex_ids.push_back(id); + } + + return ret_region; +} + +static bool InitCommon(std::vector *CDInterfaces, const bool EmulateMemcards = true) +{ + unsigned region; + bool emulate_memcard[8]; + bool emulate_multitap[2]; + + for(unsigned i = 0; i < 8; i++) + { + char buf[64]; + trio_snprintf(buf, sizeof(buf), "psx.input.port%u.memcard", i + 1); + emulate_memcard[i] = EmulateMemcards && MDFN_GetSettingB(buf); + } + + for(unsigned i = 0; i < 2; i++) + { + char buf[64]; + trio_snprintf(buf, sizeof(buf), "psx.input.port%u.multitap", i + 1); + emulate_multitap[i] = MDFN_GetSettingB(buf); + } + + + cdifs = CDInterfaces; + region = CalcDiscSCEx(); + + if(!MDFN_GetSettingB("psx.region_autodetect")) + region = MDFN_GetSettingI("psx.region_default"); + + CPU = new PS_CPU(); + SPU = new PS_SPU(); + GPU = new PS_GPU(region == REGION_EU); + CDC = new PS_CDC(); + FIO = new FrontIO(emulate_memcard, emulate_multitap); + FIO->SetAMCT(MDFN_GetSettingB("psx.input.analog_mode_ct")); + for(unsigned i = 0; i < 8; i++) + { + char buf[64]; + trio_snprintf(buf, sizeof(buf), "psx.input.port%u.gun_chairs", i + 1); + FIO->SetCrosshairsColor(i, MDFN_GetSettingUI(buf)); + } + + DMA_Init(); + + if(region == REGION_EU) + { + EmulatedPSX.nominal_width = 367; // Dunno. :( + EmulatedPSX.nominal_height = 288; + + EmulatedPSX.fb_width = 768; + EmulatedPSX.fb_height = 576; + } + else + { + EmulatedPSX.lcm_width = 2720; + EmulatedPSX.lcm_height = 480; + + EmulatedPSX.nominal_width = 310; + EmulatedPSX.nominal_height = 240; + + EmulatedPSX.fb_width = 768; + EmulatedPSX.fb_height = 480; + } + + if(cdifs) + { + CD_TrayOpen = false; + CD_SelectedDisc = 0; + } + else + { + CD_TrayOpen = true; + CD_SelectedDisc = -1; + } + + CDC->SetDisc(true, NULL, NULL); + CDC->SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL, + (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? cdifs_scex_ids[CD_SelectedDisc] : NULL); + + + BIOSROM = new MultiAccessSizeMem<512 * 1024, uint32, false>(); + PIOMem = new MultiAccessSizeMem<65536, uint32, false>(); + + for(uint32 ma = 0x00000000; ma < 0x00800000; ma += 2048 * 1024) + { + CPU->SetFastMap(MainRAM.data32, 0x00000000 + ma, 2048 * 1024); + CPU->SetFastMap(MainRAM.data32, 0x80000000 + ma, 2048 * 1024); + CPU->SetFastMap(MainRAM.data32, 0xA0000000 + ma, 2048 * 1024); + } + + CPU->SetFastMap(BIOSROM->data32, 0x1FC00000, 512 * 1024); + CPU->SetFastMap(BIOSROM->data32, 0x9FC00000, 512 * 1024); + CPU->SetFastMap(BIOSROM->data32, 0xBFC00000, 512 * 1024); + + CPU->SetFastMap(PIOMem->data32, 0x1F000000, 65536); + CPU->SetFastMap(PIOMem->data32, 0x9F000000, 65536); + CPU->SetFastMap(PIOMem->data32, 0xBF000000, 65536); + + + MDFNMP_Init(1024, ((uint64)1 << 29) / 1024); + MDFNMP_AddRAM(2048 * 1024, 0x00000000, MainRAM.data8); + MDFNMP_AddRAM(1024, 0x1F800000, ScratchRAM.data8); + + try + { + const char *biospath_sname; + std::string biospath; + + if(region == REGION_JP) + biospath_sname = "psx.bios_jp"; + else if(region == REGION_EU) + biospath_sname = "psx.bios_eu"; + else if(region == REGION_NA) + biospath_sname = "psx.bios_na"; + else + abort(); + + biospath = MDFN_MakeFName(MDFNMKF_FIRMWARE, 0, MDFN_GetSettingS(biospath_sname).c_str()); + + FileWrapper BIOSFile(biospath.c_str(), FileWrapper::MODE_READ); + + BIOSFile.read(BIOSROM->data8, 512 * 1024); + + for(int i = 0; i < 8; i++) + { + char ext[64]; + trio_snprintf(ext, sizeof(ext), "%d.mcr", i); + FIO->LoadMemcard(i, MDFN_MakeFName(MDFNMKF_SAV, 0, ext).c_str()); + } + } + catch(std::exception &e) + { + MDFN_PrintError("%s", e.what()); + return(false); + } + + for(int i = 0; i < 8; i++) + { + Memcard_PrevDC[i] = FIO->GetMemcardDirtyCount(i); + Memcard_SaveDelay[i] = -1; + } + + + #ifdef WANT_DEBUGGER + DBG_Init(); + #endif + + PSX_Power(); + + return(true); +} + +static void LoadEXE(const uint8 *data, const uint32 size, bool ignore_pcsp = false) +{ + uint32 PC; + uint32 SP; + uint32 TextStart; + uint32 TextSize; + + if(size < 0x800) + throw(MDFN_Error(0, "PS-EXE is too small.")); + + PC = MDFN_de32lsb(&data[0x10]); + SP = MDFN_de32lsb(&data[0x30]); + TextStart = MDFN_de32lsb(&data[0x18]); + TextSize = MDFN_de32lsb(&data[0x1C]); + + printf("PC=0x%08x\nTextStart=0x%08x\nTextSize=0x%08x\nSP=0x%08x\n", PC, TextStart, TextSize, SP); + + TextStart &= 0x1FFFFF; + + if(TextSize > 2048 * 1024) + { + throw(MDFN_Error(0, "Text section too large")); + } + + if(TextSize > (size - 0x800)) + throw(MDFN_Error(0, "Text section recorded size is larger than data available in file. Header=0x%08x, Available=0x%08x", TextSize, size - 0x800)); + + if(TextSize < (size - 0x800)) + throw(MDFN_Error(0, "Text section recorded size is smaller than data available in file. Header=0x%08x, Available=0x%08x", TextSize, size - 0x800)); + + if(!TextMem.size()) + { + TextMem_Start = TextStart; + TextMem.resize(TextSize); + } + + if(TextStart < TextMem_Start) + { + uint32 old_size = TextMem.size(); + + printf("RESIZE: 0x%08x\n", TextMem_Start - TextStart); + + TextMem.resize(old_size + TextMem_Start - TextStart); + memmove(&TextMem[TextMem_Start - TextStart], &TextMem[0], old_size); + + TextMem_Start = TextStart; + } + + if(TextMem.size() < (TextStart - TextMem_Start + TextSize)) + TextMem.resize(TextStart - TextMem_Start + TextSize); + + memcpy(&TextMem[TextStart - TextMem_Start], data + 0x800, TextSize); + + + // + // + // + + // BIOS patch + BIOSROM->WriteU32(0x6990, (3 << 26) | ((0xBF001000 >> 2) & ((1 << 26) - 1))); +// BIOSROM->WriteU32(0x691C, (3 << 26) | ((0xBF001000 >> 2) & ((1 << 26) - 1))); + +// printf("INSN: 0x%08x\n", BIOSROM->ReadU32(0x6990)); +// exit(1); + uint8 *po; + + po = &PIOMem->data8[0x0800]; + + MDFN_en32lsb(po, (0x0 << 26) | (31 << 21) | (0x8 << 0)); // JR + po += 4; + MDFN_en32lsb(po, 0); // NOP(kinda) + po += 4; + + po = &PIOMem->data8[0x1000]; + // Load source address into r8 + uint32 sa = 0x9F000000 + 65536; + MDFN_en32lsb(po, (0xF << 26) | (0 << 21) | (1 << 16) | (sa >> 16)); // LUI + po += 4; + MDFN_en32lsb(po, (0xD << 26) | (1 << 21) | (8 << 16) | (sa & 0xFFFF)); // ORI + po += 4; + + // Load dest address into r9 + MDFN_en32lsb(po, (0xF << 26) | (0 << 21) | (1 << 16) | (TextMem_Start >> 16)); // LUI + po += 4; + MDFN_en32lsb(po, (0xD << 26) | (1 << 21) | (9 << 16) | (TextMem_Start & 0xFFFF)); // ORI + po += 4; + + // Load size into r10 + MDFN_en32lsb(po, (0xF << 26) | (0 << 21) | (1 << 16) | (TextMem.size() >> 16)); // LUI + po += 4; + MDFN_en32lsb(po, (0xD << 26) | (1 << 21) | (10 << 16) | (TextMem.size() & 0xFFFF)); // ORI + po += 4; + + // + // Loop begin + // + + MDFN_en32lsb(po, (0x24 << 26) | (8 << 21) | (1 << 16)); // LBU to r1 + po += 4; + MDFN_en32lsb(po, 0); po += 4; // NOP + + MDFN_en32lsb(po, (0x28 << 26) | (9 << 21) | (1 << 16)); // SB from r1 + po += 4; + MDFN_en32lsb(po, 0); po += 4; // NOP + + MDFN_en32lsb(po, (0x08 << 26) | (10 << 21) | (10 << 16) | 0xFFFF); // Decrement size + po += 4; + + MDFN_en32lsb(po, (0x08 << 26) | (8 << 21) | (8 << 16) | 0x0001); // Increment source addr + po += 4; + + MDFN_en32lsb(po, (0x08 << 26) | (9 << 21) | (9 << 16) | 0x0001); // Increment dest addr + po += 4; + + MDFN_en32lsb(po, (0x05 << 26) | (0 << 21) | (10 << 16) | (-8 & 0xFFFF)); + po += 4; + MDFN_en32lsb(po, 0); po += 4; // NOP + + // + // Loop end + // + + // Load SP into r29 + if(ignore_pcsp) + { + po += 16; + } + else + { + printf("MEOWPC: %08x\n", PC); + MDFN_en32lsb(po, (0xF << 26) | (0 << 21) | (1 << 16) | (SP >> 16)); // LUI + po += 4; + MDFN_en32lsb(po, (0xD << 26) | (1 << 21) | (29 << 16) | (SP & 0xFFFF)); // ORI + po += 4; + + // Load PC into r2 + MDFN_en32lsb(po, (0xF << 26) | (0 << 21) | (1 << 16) | ((PC >> 16) | 0x8000)); // LUI + po += 4; + MDFN_en32lsb(po, (0xD << 26) | (1 << 21) | (2 << 16) | (PC & 0xFFFF)); // ORI + po += 4; + } + + // Jump to r2 + MDFN_en32lsb(po, (0x0 << 26) | (2 << 21) | (0x8 << 0)); // JR + po += 4; + MDFN_en32lsb(po, 0); // NOP(kinda) + po += 4; + +} + +PSF1Loader::PSF1Loader(MDFNFILE *fp) +{ + tags = Load(0x01, 2033664, fp); +} + +PSF1Loader::~PSF1Loader() +{ + +} + +void PSF1Loader::HandleEXE(const uint8 *data, uint32 size, bool ignore_pcsp) +{ + LoadEXE(data, size, ignore_pcsp); +} + +static void Cleanup(void); +static int Load(const char *name, MDFNFILE *fp) +{ + const bool IsPSF = PSFLoader::TestMagic(0x01, fp); + + if(!TestMagic(name, fp)) + { + MDFN_PrintError(_("File format is unknown to module \"%s\"."), MDFNGameInfo->shortname); + return(0); + } + +// For testing. +#if 0 + #warning "GREMLINS GREMLINS EVERYWHEREE IYEEEEEE" + #warning "Seriously, GREMLINS! Or peanut butter. Or maybe...DINOSAURS." + + static std::vector CDInterfaces; + + CDInterfaces.push_back(new CDIF_MT("/extra/games/PSX/Jumping Flash! (USA)/Jumping Flash! (USA).cue")); + //CDInterfaces.push_back(new CDIF("/extra/games/PSX/Tony Hawk's Pro Skater 2 (USA)/Tony Hawk's Pro Skater 2 (USA).cue")); + + if(!InitCommon(&CDInterfaces, !IsPSF)) + return(0); +#else + if(!InitCommon(NULL, !IsPSF)) + return(0); +#endif + + TextMem.resize(0); + + try + { + if(IsPSF) + { + psf_loader = new PSF1Loader(fp); + + std::vector SongNames; + + SongNames.push_back(psf_loader->tags.GetTag("title")); + + Player_Init(1, psf_loader->tags.GetTag("game"), psf_loader->tags.GetTag("artist"), psf_loader->tags.GetTag("copyright"), SongNames); + } + else + LoadEXE(fp->data, fp->size); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + Cleanup(); + return 0; + } + + return(1); +} + +static int LoadCD(std::vector *CDInterfaces) +{ + int ret = InitCommon(CDInterfaces); + + // TODO: fastboot setting + //if(MDFN_GetSettingB("psx.fastboot")) + // BIOSROM->WriteU32(0x6990, 0); + + MDFNGameInfo->GameType = GMT_CDROM; + + return(ret); +} + +static void Cleanup(void) +{ + TextMem.resize(0); + + if(psf_loader) + { + delete psf_loader; + psf_loader = NULL; + } + + if(CDC) + { + delete CDC; + CDC = NULL; + } + + if(SPU) + { + delete SPU; + SPU = NULL; + } + + if(GPU) + { + delete GPU; + GPU = NULL; + } + + if(CPU) + { + delete CPU; + CPU = NULL; + } + + if(FIO) + { + delete FIO; + FIO = NULL; + } + + DMA_Kill(); + + if(BIOSROM) + { + delete BIOSROM; + BIOSROM = NULL; + } + + if(PIOMem) + { + delete PIOMem; + PIOMem = NULL; + } + + cdifs = NULL; +} + +static void CloseGame(void) +{ + if(!psf_loader) + { + for(int i = 0; i < 8; i++) + { + // If there's an error saving one memcard, don't skip trying to save the other, since it might succeed and + // we can reduce potential data loss! + try + { + char ext[64]; + trio_snprintf(ext, sizeof(ext), "%d.mcr", i); + + FIO->SaveMemcard(i, MDFN_MakeFName(MDFNMKF_SAV, 0, ext).c_str()); + } + catch(std::exception &e) + { + MDFN_PrintError("%s", e.what()); + } + } + } + + Cleanup(); +} + + +static void SetInput(int port, const char *type, void *ptr) +{ + if(psf_loader) + FIO->SetInput(port, "none", NULL); + else + FIO->SetInput(port, type, ptr); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + return(0); + SFORMAT StateRegs[] = + { + SFVAR(CD_TrayOpen), + SFVAR(CD_SelectedDisc), + SFARRAY(MainRAM.data8, 1024 * 2048), + SFARRAY(ScratchRAM.data8, 1024), + SFARRAY32(SysControl.Regs, 9), + //SFARRAY32(next_timestamps, sizeof(next_timestamps) / sizeof(next_timestamps[0])), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + + // Call SetDisc() BEFORE we load CDC state, since SetDisc() has emulation side effects. We might want to clean this up in the future. + if(load) + { + CDC->SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL, + (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? cdifs_scex_ids[CD_SelectedDisc] : NULL); +} + + // TODO: Remember to increment dirty count in memory card state loading routine. + + ret &= CPU->StateAction(sm, load, data_only); + ret &= DMA_StateAction(sm, load, data_only); + ret &= TIMER_StateAction(sm, load, data_only); + ret &= CDC->StateAction(sm, load, data_only); + ret &= MDEC_StateAction(sm, load, data_only); + ret &= SPU->StateAction(sm, load, data_only); + //ret &= FIO->StateAction(sm, load, data_only); + //ret &= GPU->StateAction(sm, load, data_only); + ret &= IRQ_StateAction(sm, load, data_only); + + if(load) + { + + } + + return(ret); +} + +static void CDInsertEject(void) +{ + CD_TrayOpen = !CD_TrayOpen; + + for(unsigned disc = 0; disc < cdifs->size(); disc++) + { + if(!(*cdifs)[disc]->Eject(CD_TrayOpen)) + { + MDFN_DispMessage(_("Eject error.")); + CD_TrayOpen = !CD_TrayOpen; + } + } + + if(CD_TrayOpen) + MDFN_DispMessage(_("Virtual CD Drive Tray Open")); + else + MDFN_DispMessage(_("Virtual CD Drive Tray Closed")); + + CDC->SetDisc(CD_TrayOpen, (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? (*cdifs)[CD_SelectedDisc] : NULL, + (CD_SelectedDisc >= 0 && !CD_TrayOpen) ? cdifs_scex_ids[CD_SelectedDisc] : NULL); +} + +static void CDEject(void) +{ + if(!CD_TrayOpen) + CDInsertEject(); +} + +static void CDSelect(void) +{ + if(cdifs && CD_TrayOpen) + { + CD_SelectedDisc = (CD_SelectedDisc + 1) % (cdifs->size() + 1); + + if((unsigned)CD_SelectedDisc == cdifs->size()) + CD_SelectedDisc = -1; + + if(CD_SelectedDisc == -1) + MDFN_DispMessage(_("Disc absence selected.")); + else + MDFN_DispMessage(_("Disc %d of %d selected."), CD_SelectedDisc + 1, (int)cdifs->size()); + } +} + + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_RESET: PSX_Power(); break; + case MDFN_MSC_POWER: PSX_Power(); break; + + case MDFN_MSC_INSERT_DISK: + CDInsertEject(); + break; + + case MDFN_MSC_SELECT_DISK: + CDSelect(); + break; + + case MDFN_MSC_EJECT_DISK: + CDEject(); + break; + } +} + + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".psf", gettext_noop("PSF1 Rip") }, + { ".minipsf", gettext_noop("MiniPSF1 Rip") }, + { ".psx", gettext_noop("PS-X Executable") }, + { ".exe", gettext_noop("PS-X Executable") }, + { NULL, NULL } +}; + +static const MDFNSetting_EnumList Region_List[] = +{ + { "jp", REGION_JP, gettext_noop("Japan") }, + { "na", REGION_NA, gettext_noop("North America") }, + { "eu", REGION_EU, gettext_noop("Europe") }, + { NULL, 0 }, +}; + +static MDFNSetting PSXSettings[] = +{ + { "psx.input.mouse_sensitivity", MDFNSF_NOFLAGS, gettext_noop("Emulated mouse sensitivity."), NULL, MDFNST_FLOAT, "1.00", NULL, NULL }, + + { "psx.input.analog_mode_ct", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable analog mode combo-button alternate toggle."), gettext_noop("When enabled, instead of the configured Analog mode toggle button for the emulated DualShock, use a combination of buttons to toggle it instead. When Select, Start, and all four shoulder buttons are held down for about 1 second, the mode will toggle."), MDFNST_BOOL, "0", NULL, NULL }, + + { "psx.input.port1.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap on PSX port 1."), gettext_noop("Makes ports 1B-1D available."), MDFNST_BOOL, "0", NULL, NULL }, + { "psx.input.port2.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap on PSX port 2."), gettext_noop("Makes ports 2B-2D available."), MDFNST_BOOL, "0", NULL, NULL }, + + { "psx.input.port1.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 1/1A."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port2.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 2/2A."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port3.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 1B."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port4.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 1C."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port5.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 1D."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port6.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 2B."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port7.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 2C."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + { "psx.input.port8.memcard", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Emulate memcard on port 2D."), NULL, MDFNST_BOOL, "1", NULL, NULL, }, + + + { "psx.input.port1.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 1/1A."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0xFF0000", "0x000000", "0x1000000" }, + { "psx.input.port2.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 2/2A."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0x00FF00", "0x000000", "0x1000000" }, + { "psx.input.port3.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 1B."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0xFF00FF", "0x000000", "0x1000000" }, + { "psx.input.port4.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 1C."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0xFF8000", "0x000000", "0x1000000" }, + { "psx.input.port5.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 1D."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0xFFFF00", "0x000000", "0x1000000" }, + { "psx.input.port6.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 2B."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0x00FFFF", "0x000000", "0x1000000" }, + { "psx.input.port7.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 2C."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0x0080FF", "0x000000", "0x1000000" }, + { "psx.input.port8.gun_chairs", MDFNSF_NOFLAGS, gettext_noop("Crosshairs color for lightgun on port 2D."), gettext_noop("A value of 0x1000000 disables crosshair drawing."), MDFNST_UINT, "0x8000FF", "0x000000", "0x1000000" }, + + //{ "psx.fastboot", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Skip BIOS intro sequence."), gettext_noop("MAY BREAK GAMES."), MDFNST_BOOL, "0" }, + { "psx.region_autodetect", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Attempt to auto-detect region of game."), NULL, MDFNST_BOOL, "1" }, + { "psx.region_default", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Default region to use."), gettext_noop("Used if region autodetection fails or is disabled."), MDFNST_ENUM, "jp", NULL, NULL, NULL, NULL, Region_List }, + + { "psx.bios_jp", MDFNSF_EMU_STATE, gettext_noop("Path to the Japan SCPH-5500 ROM BIOS"), NULL, MDFNST_STRING, "scph5500.bin" }, + { "psx.bios_na", MDFNSF_EMU_STATE, gettext_noop("Path to the North America SCPH-5501 ROM BIOS"), gettext_noop("SHA1 0555c6fae8906f3f09baf5988f00e55f88e9f30b"), MDFNST_STRING, "scph5501.bin" }, + { "psx.bios_eu", MDFNSF_EMU_STATE, gettext_noop("Path to the Europe SCPH-5502 ROM BIOS"), NULL, MDFNST_STRING, "scph5502.bin" }, + + { "psx.spu.resamp_quality", MDFNSF_NOFLAGS, gettext_noop("SPU output resampler quality."), + gettext_noop("0 is lowest quality and CPU usage, 10 is highest quality and CPU usage. The resampler that this setting refers to is used for converting from 44.1KHz to the sampling rate of the host audio device Mednafen is using. Changing Mednafen's output rate, via the \"sound.rate\" setting, to \"44100\" will bypass the resampler, which will decrease CPU usage by Mednafen, and can increase or decrease audio quality, depending on various operating system and hardware factors."), MDFNST_UINT, "5", "0", "10" }, + { NULL }, +}; + +// Note for the future: If we ever support PSX emulation with non-8-bit RGB color components, or add a new linear RGB colorspace to MDFN_PixelFormat, we'll need +// to buffer the intermediate 24-bit non-linear RGB calculation into an array and pass that into the GPULineHook stuff, otherwise netplay could break when +// an emulated GunCon is used. This IS assuming, of course, that we ever implement save state support so that netplay actually works at all... +MDFNGI EmulatedPSX = +{ + "psx", + "Sony PlayStation", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + #ifdef WANT_DEBUGGER + &PSX_DBGInfo, + #else + NULL, + #endif + &FIO_InputInfo, + Load, + TestMagic, + LoadCD, + TestMagicCD, + CloseGame, + NULL, //ToggleLayer, + "GPU\0", //"Background Scroll\0Foreground Scroll\0Sprites\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + SetInput, + DoSimpleCommand, + PSXSettings, + MDFN_MASTERCLOCK_FIXED(33868800), + 0, + + true, // Multires possible? + + // + // Note: Following video settings will be overwritten during game load. + // + 0, // lcm_width + 0, // lcm_height + NULL, // Dummy + + 310, // Nominal width + 240, // Nominal height + + 0, // Framebuffer width + 0, // Framebuffer height + // + // + // + + 2, // Number of output sound channels + +}; diff --git a/libmednahawk/src/psx/psx.h b/libmednahawk/src/psx/psx.h new file mode 100644 index 0000000000..dc52f222f6 --- /dev/null +++ b/libmednahawk/src/psx/psx.h @@ -0,0 +1,85 @@ +#ifndef __MDFN_PSX_PSX_H +#define __MDFN_PSX_PSX_H + +#include +#include +#include + +#include "../cdrom/cdromif.h" +#include "../general.h" +#include "../FileWrapper.h" + +#define PSX_WARNING(format, ...) { printf(format "\n", ## __VA_ARGS__); } +#define PSX_DBGINFO(format, ...) { /*printf(format "\n", ## __VA_ARGS__);*/ } + +namespace MDFN_IEN_PSX +{ + typedef int32 pscpu_timestamp_t; + + bool MDFN_FASTCALL PSX_EventHandler(const pscpu_timestamp_t timestamp); + + void MDFN_FASTCALL PSX_MemWrite8(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); + void MDFN_FASTCALL PSX_MemWrite16(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); + void MDFN_FASTCALL PSX_MemWrite24(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); + void MDFN_FASTCALL PSX_MemWrite32(const pscpu_timestamp_t timestamp, uint32 A, uint32 V); + + uint8 MDFN_FASTCALL PSX_MemRead8(const pscpu_timestamp_t timestamp, uint32 A); + uint16 MDFN_FASTCALL PSX_MemRead16(const pscpu_timestamp_t timestamp, uint32 A); + uint32 MDFN_FASTCALL PSX_MemRead24(const pscpu_timestamp_t timestamp, uint32 A); + uint32 MDFN_FASTCALL PSX_MemRead32(const pscpu_timestamp_t timestamp, uint32 A); + + uint8 PSX_MemPeek8(uint32 A); + uint16 PSX_MemPeek16(uint32 A); + uint32 PSX_MemPeek32(uint32 A); + + // Should write to WO-locations if possible + #if 0 + void PSX_MemPoke8(uint32 A, uint8 V); + void PSX_MemPoke16(uint32 A, uint16 V); + void PSX_MemPoke32(uint32 A, uint32 V); + #endif + + void PSX_RequestMLExit(void); + + enum + { + PSX_EVENT__SYNFIRST = 0, + PSX_EVENT_GPU, + PSX_EVENT_CDC, + //PSX_EVENT_SPU, + PSX_EVENT_TIMER, + PSX_EVENT_DMA, + PSX_EVENT_FIO, + PSX_EVENT__SYNLAST, + PSX_EVENT__COUNT, + }; + + #define PSX_EVENT_MAXTS 0x20000000 + void PSX_SetEventNT(const int type, const pscpu_timestamp_t next_timestamp); + + void PSX_GPULineHook(const pscpu_timestamp_t timestamp, const pscpu_timestamp_t line_timestamp, bool vsync, uint32 *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock); +}; + + +#include "dis.h" +#include "cpu.h" +#include "irq.h" +#include "gpu.h" +#include "dma.h" +//#include "sio.h" +#include "debug.h" + +namespace MDFN_IEN_PSX +{ + class PS_CDC; + class PS_SPU; + + extern PS_CPU *CPU; + extern PS_GPU *GPU; + extern PS_CDC *CDC; + extern PS_SPU *SPU; + extern MultiAccessSizeMem<2048 * 1024, uint32, false> MainRAM; +}; + + +#endif diff --git a/libmednahawk/src/psx/sio.cpp b/libmednahawk/src/psx/sio.cpp new file mode 100644 index 0000000000..2c3d27d98c --- /dev/null +++ b/libmednahawk/src/psx/sio.cpp @@ -0,0 +1,106 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "sio.h" + +namespace MDFN_IEN_PSX +{ + +// Dummy implementation. + +static uint16 Status; +static uint16 Mode; +static uint16 Control; +static uint16 BaudRate; +static uint32 DataBuffer; + +void SIO_Power(void) +{ + Status = 0; + Mode = 0; + Control = 0; + BaudRate = 0; + DataBuffer = 0; +} + +uint32 SIO_Read(pscpu_timestamp_t timestamp, uint32 A) +{ + uint32 ret = 0; + + switch(A & 0xE) + { + default: + PSX_WARNING("[SIO] Unknown read: 0x%08x -- %d\n", A, timestamp); + break; + + case 0x0: + //case 0x2: + ret = DataBuffer >> ((A & 2) * 8); + break; + + case 0x4: + ret = Status; + break; + + case 0x8: + ret = Mode; + break; + + case 0xA: + ret = Control; + break; + + case 0xE: + ret = BaudRate; + break; + } + + return(ret >> ((A & 1) * 8)); +} + +void SIO_Write(pscpu_timestamp_t timestamp, uint32 A, uint32 V) +{ + V <<= (A & 1) * 8; + + switch(A & 0xE) + { + default: + PSX_WARNING("[SIO] Unknown write: 0x%08x 0x%08x -- %d\n", A, V, timestamp); + break; + + case 0x0: + //case 0x2: + V <<= (A & 2) * 8; + DataBuffer = V; + break; + + case 0x8: + Mode = V; + break; + + case 0xA: + Control = V; + break; + + case 0xE: + BaudRate = V; + break; + } +} + +} diff --git a/libmednahawk/src/psx/sio.h b/libmednahawk/src/psx/sio.h new file mode 100644 index 0000000000..03a65640a5 --- /dev/null +++ b/libmednahawk/src/psx/sio.h @@ -0,0 +1,13 @@ +#ifndef __MDFN_PSX_SIO_H +#define __MDFN_PSX_SIO_H + +namespace MDFN_IEN_PSX +{ + +void SIO_Write(pscpu_timestamp_t timestamp, uint32 A, uint32 V); +uint32 SIO_Read(pscpu_timestamp_t timestamp, uint32 A); +void SIO_Power(void); + +} + +#endif diff --git a/libmednahawk/src/psx/spu.cpp b/libmednahawk/src/psx/spu.cpp new file mode 100644 index 0000000000..eb7e7fdc45 --- /dev/null +++ b/libmednahawk/src/psx/spu.cpp @@ -0,0 +1,1642 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* TODO: + Note to self: Emulating the SPU at more timing accuracy than sample, and emulating the whole SPU RAM write port FIFO thing and hypothetical periodic FIFO commit to + SPU RAM(maybe every 32 CPU cycles, with exceptions?) will likely necessitate a much more timing-accurate CPU core, and emulation of the SPU delay register(or at least the + effects of the standard value written to it), to avoid game glitches. Probably more trouble than it's worth.... + + SPU IRQ emulation isn't totally correct, behavior is kind of complex; run more tests on PS1. + + Test reverb upsampler on the real thing. + + Alter reverb algorithm to process in the pattern of L,R,L,R,L,R on each input sample, instead of doing both L and R on every 2 input samples(make + sure the real thing does it this way too, I think it at least runs the downsampler this way); and while we're at it, implement the correct buffer + offset(probably either -39 or -40, the latter is what we have now). + + Alter reverb algorithm to perform saturation more often, as occurs on the real thing. + + See if sample flag & 0x8 does anything weird, like suppressing the program-readable block end flag setting. + + Determine the actual purpose of global register 0x2C(is it REALLY an address multiplier? And if so, does it affect the reverb offsets too?) + + For ADSR and volume sweep, should the divider be reset to 0 on &0x8000 == true, or should the upper bit be cleared? + + Should shift occur on all stages of ADPCM sample decoding, or only at the end? + + On the real thing, there's some kind of weirdness with ADSR when you voice on when attack_rate(raw) = 0x7F; the envelope level register is repeatedly + reset to 0, which you can see by manual writes to the envelope level register. Normally in the attack phase when attack_rate = 0x7F, enveloping is effectively stuck/paused such that the value you write is sticky and won't be replaced or reset. Note that after you voice on, you can write a new attack_rate < 0x7F, and enveloping will work "normally" again shortly afterwards. You can even write an attack_rate of 0x7F at that point to pause enveloping clocking. I doubt any games rely on this, but it's something to keep in mind if we ever need greater insight as to how the SPU functions at a low-level in order to emulate it at cycle granularity rather than sample granularity, and it may not be a bad idea to investigate this oddity further and emulate it in the future regardless. + + Voice 1 and 3 waveform output writes to SPURAM might not be correct(noted due to problems reading this area of SPU RAM on the real thing + based on my expectations of how this should work). +*/ + +/* + Notes: + The last half of the noise freq table was confirmed on a real PSX(more or less, number of changes * 0x8000 / samples), but the first half hasn't been yet with sufficient precision. + + All addresses(for 16-bit access, at least) within the SPU address space appear to be fully read/write as if they were RAM, though + values at some addresses(like the envelope current value) will be "overwritten" by the sound processing at certain times. + + 32-bit and 8-bit reads act as if it were RAM(not tested with all addresses, but a few, assuming the rest are the same), but 8-bit writes + to odd addresses appear to be ignored, and 8-bit writes to even addresses are treated as 16-bit writes(most likely, but, need to code custom assembly to + fully test the upper 8 bits). NOTE: the preceding information doesn't necessarily cover accesses with side effects, they still need to be tested; and it + of course covers reads/writes from the point of view of software running on the CPU. + + It doesn't appear to be possible to enable FM on the first channel/voice(channel/voice 0). + + Lower bit of channel start address appears to be masked out to 0(such that ADPCM block decoding is always 8 16-bit units, 16 bytes, aligned), as far as + block-decoding and flag-set program-readable loop address go. +*/ + +/* + Update() isn't called on Read and Writes for performance reasons, it's called with sufficient granularity from the event + system, though this will obviously need to change if we ever emulate the SPU with better precision than per-sample(pair). +*/ + +#define SPUIRQ_DBG(format, ...) { printf("[SPUIRQDBG] " format " -- Voice 22 CA=0x%06x,LA=0x%06x\n", ## __VA_ARGS__, Voices[22].CurAddr, Voices[22].LoopAddr); } + +#include "psx.h" +#include "cdc.h" +#include "spu.h" + +#include "../clamp.h" + +namespace MDFN_IEN_PSX +{ + +static const int16 FIR_Table[256][4] = +{ + #include "spu_fir_table.inc" +}; + +static const uint32 NoiseFreqTable[64] = +{ + #include "spu_nft.inc" +}; + +PS_SPU::PS_SPU() +{ + last_rate = -1; + last_quality = ~0U; + + IntermediateBufferPos = 0; + memset(IntermediateBuffer, 0, sizeof(IntermediateBuffer)); + + resampler = NULL; +} + +PS_SPU::~PS_SPU() +{ + + +} + +void PS_SPU::Power(void) +{ + //lastts = 0; + clock_divider = 768; + + memset(SPURAM, 0, sizeof(SPURAM)); + + for(int i = 0; i < 24; i++) + { + memset(Voices[i].DecodeBuffer, 0, sizeof(Voices[i].DecodeBuffer)); + + Voices[i].DecodeWritePos = 0; + + Voices[i].DecodeFlags = 0; + + Voices[i].Sweep[0].Power(); + Voices[i].Sweep[1].Power(); + + Voices[i].Pitch = 0; + Voices[i].CurPhase = 0; + Voices[i].CurPhase_SD = 0; + + Voices[i].StartAddr = 0; + + Voices[i].CurAddr = 0; + + Voices[i].ADSRControl = 0; + + Voices[i].LoopAddr = 0; + + Voices[i].PreLRSample = 0; + + memset(&Voices[i].ADSR, 0, sizeof(SPU_ADSR)); + } + + GlobalSweep[0].Power(); + GlobalSweep[1].Power(); + + NoiseCounter = 0; + LFSR = 0; + + FM_Mode = 0; + Noise_Mode = 0; + Reverb_Mode = 0; + ReverbWA = 0; + + ReverbVol[0] = ReverbVol[1] = 0; + + CDVol[0] = CDVol[1] = 0; + + ExternVol[0] = ExternVol[1] = 0; + + IRQAddr = 0; + + RWAddr = 0; + + SPUControl = 0; + + VoiceOn = 0; + VoiceOff = 0; + + BlockEnd = 0; + + CWA = 0; + + memset(CDXA_ResampBuffer, 0, sizeof(CDXA_ResampBuffer)); + CDXA_CurPhase = 0; + + memset(Regs, 0, sizeof(Regs)); + + memset(RDSB, 0, sizeof(RDSB)); + RDSB_WP = 0; + + memset(RUSB, 0, sizeof(RUSB)); + RUSB_WP = 0; + + ReverbCur = ReverbWA; + + IRQAsserted = false; +} + +static INLINE void CalcVCDelta(const uint8 zs, uint8 speed, bool log_mode, bool dec_mode, int16 Current, int &increment, int &divinco) +{ + increment = (7 - (speed & 0x3)); + + if(dec_mode) // Decrement mode + increment = ~increment; + + divinco = 32768; + + if(speed < 0x2C) + increment <<= (0x2F - speed) >> 2; + + if(speed >= 0x30) + divinco >>= (speed - 0x2C) >> 2; + + if(log_mode) + { + if(dec_mode) // Log decrement mode + increment = (Current * increment) >> 15; + else // Log increment mode + { + if(Current >= 0x6000) + { + if(speed < 0x28) + increment >>= 2; + else if(speed >= 0x2C) + divinco >>= 2; + else // 0x28 ... 0x2B + { + increment >>= 1; + divinco >>= 1; + } + } + } + } // end if(log_mode) + + if(divinco == 0 && speed < zs) //0x7F) + divinco = 1; +} + + +INLINE void SPU_Sweep::Power(void) +{ + Control = 0; + Current = 0; + Divider = 0; +} + +INLINE void SPU_Sweep::WriteControl(uint16 value) +{ + Control = value; + Divider = 0; // Not sure about this. +} + +INLINE int16 SPU_Sweep::ReadVolume(void) +{ + return(Current); +} + +void SPU_Sweep::Clock(void) +{ + const uint16 end_value = (Control & 0x2000) ? 0x0000 : 0x7FFF; + + if(!(Control & 0x8000)) + { + Current = (Control & 0x7FFF) << 1; + return; + } + + // Invert bits + if(Control & 0x1000) + Current = ~Current; + + if((Control & 0x8000) && Current != end_value) // Sweep enabled + { + int increment; + int divinco; + + CalcVCDelta(0x7F, Control & 0x7F, Control & 0x4000, Control & 0x2000, Current, increment, divinco); + + Divider += divinco; + if(Divider & 0x8000) + { + Divider = 0; + Current += increment; + } + + if(Current & 0x8000) // Overflow or underflow + Current = end_value; + } + + // Invert bits back + if(Control & 0x1000) + Current = ~Current; +} + +INLINE void SPU_Sweep::WriteVolume(int16 value) +{ + Current = value; +} + +// output should be readable at -2 and -1 +void PS_SPU::DecodeADPCM(const uint8 *input, int16 *output, const unsigned shift, const unsigned weight) +{ + // 5 through 0xF appear to be 0 on the real thing. + static const int32 Weights[16][2] = + { + // s-1 s-2 + { 0, 0 }, + { 60, 0 }, + { 115, -52 }, + { 98, -55 }, + { 122, -60 }, + }; + + for(int i = 0; i < 28; i++) + { + int32 sample; + + sample = (int16)(input[i] << 8); + sample >>= shift; + + sample += ((output[i - 1] * Weights[weight][0]) >> 6) + ((output[i - 2] * Weights[weight][1]) >> 6); + + if(sample < -32768) + sample = -32768; + + if(sample > 32767) + sample = 32767; + + output[i] = sample; + } +} + +void PS_SPU::DecodeSamples(SPU_Voice *voice) +{ + // Handle delayed flags from the previously-decoded block. + if(voice->DecodeFlags & 0x1) + { + BlockEnd |= 1 << (voice - Voices); + + if(!(voice->DecodeFlags & 0x2)) // Force enveloping to 0 if not "looping". TODO: Should we reset the ADSR divider counter too? + { + if(!(Noise_Mode & (1 << (voice - Voices)))) + { + voice->ADSR.Phase = ADSR_RELEASE; + voice->ADSR.EnvLevel = 0; + } + } + } + + // Note: Only voice->CurAddr &= 0x3FFFF at the end so IRQ address testing will work. + // 5 through 0xF appear to be 0 on the real thing. + static const int32 Weights[16][2] = + { + // s-1 s-2 + { 0, 0 }, + { 60, 0 }, + { 115, -52 }, + { 98, -55 }, + { 122, -60 }, + }; + const uint32 PrevCurAddr = voice->CurAddr; + + uint16 settings; + + uint32 flags; + uint32 shift; + uint32 weight; + + uint16 coded = 0; + + + settings = SPURAM[(voice->CurAddr++) & 0x3FFFF]; + + shift = settings & 0xF; + weight = (settings >> 4) & 0xF; + flags = (settings >> 8) & 0xFF; + + for(int i = 0; i < 28; i++) + { + int32 sample; + + if(!(i & 3)) + coded = SPURAM[(voice->CurAddr++) & 0x3FFFF]; + + sample = (int16)((coded & 0xF) << 12); + sample >>= shift; + + sample += ((voice->DecodeBuffer[(voice->DecodeWritePos - 1) & 0x1F] * Weights[weight][0]) >> 6) + + ((voice->DecodeBuffer[(voice->DecodeWritePos - 2) & 0x1F] * Weights[weight][1]) >> 6); + if(sample < -32768) + sample = -32768; + + if(sample > 32767) + sample = 32767; + + voice->DecodeBuffer[voice->DecodeWritePos] = sample; + voice->DecodeWritePos = (voice->DecodeWritePos + 1) & 0x1F; + + coded >>= 4; + } + + // SPU IRQ + if(SPUControl & 0x40) + { + uint32 TestIRQAddr = IRQAddr; + + if(TestIRQAddr < PrevCurAddr) + TestIRQAddr |= 0x40000; + + if(TestIRQAddr >= PrevCurAddr && TestIRQAddr < voice->CurAddr) + { + //SPUIRQ_DBG("SPU IRQ(sample decoding) on voice %d", (int)(voice - Voices)); + IRQAsserted = true; + IRQ_Assert(IRQ_SPU, IRQAsserted); + } + } + + voice->CurAddr &= 0x3FFFF; + + if(flags & 0x4) + { + //if((int)(voice - Voices) == 22) + //{ + // SPUIRQ_DBG("[SPU] Flag loop set for voice %d, 0x%08x", (int)(voice - Voices), PrevCurAddr); + //} + voice->LoopAddr = PrevCurAddr; + } + + voice->DecodeFlags = flags; + + //printf("DEC END: %08x\n", voice->CurAddr); + + voice->DecodeBuffer[0x20] = voice->DecodeBuffer[0x00]; + voice->DecodeBuffer[0x21] = voice->DecodeBuffer[0x01]; + voice->DecodeBuffer[0x22] = voice->DecodeBuffer[0x02]; + voice->DecodeBuffer[0x23] = voice->DecodeBuffer[0x03]; +} + +void PS_SPU::CacheEnvelope(SPU_Voice *voice) +{ + uint32 raw = voice->ADSRControl; + SPU_ADSR *ADSR = &voice->ADSR; + int32 Sl, Dr, Ar, Rr, Sr; + + Sl = (raw >> 0) & 0x0F; + Dr = (raw >> 4) & 0x0F; + Ar = (raw >> 8) & 0x7F; + + Rr = (raw >> 16) & 0x1F; + Sr = (raw >> 22) & 0x7F; + + + ADSR->AttackExp = (bool)(raw & (1 << 15)); + ADSR->ReleaseExp = (bool)(raw & (1 << 21)); + ADSR->SustainExp = (bool)(raw & (1 << 31)); + ADSR->SustainDec = (bool)(raw & (1 << 30)); + + ADSR->AttackRate = Ar; + ADSR->DecayRate = Dr << 2; + ADSR->SustainRate = Sr; + ADSR->ReleaseRate = Rr << 2; + + ADSR->SustainLevel = (Sl + 1) << 11; +} + +void PS_SPU::ResetEnvelope(SPU_Voice *voice) +{ + SPU_ADSR *ADSR = &voice->ADSR; + + ADSR->EnvLevel = 0; + ADSR->Divider = 0; + ADSR->Phase = ADSR_ATTACK; +} + +void PS_SPU::ReleaseEnvelope(SPU_Voice *voice) +{ + SPU_ADSR *ADSR = &voice->ADSR; + + ADSR->Divider = 0; + ADSR->Phase = ADSR_RELEASE; +} + + +void PS_SPU::RunEnvelope(SPU_Voice *voice) +{ + SPU_ADSR *ADSR = &voice->ADSR; + int increment; + int divinco; + int16 uoflow_reset; + + if(ADSR->Phase == ADSR_ATTACK && ADSR->EnvLevel == 0x7FFF) + ADSR->Phase++; + + //static INLINE void CalcVCDelta(const uint8 zs, uint8 speed, bool log_mode, bool decrement, int16 Current, int &increment, int &divinco) + switch(ADSR->Phase) + { + default: assert(0); + break; + + case ADSR_ATTACK: + CalcVCDelta(0x7F, ADSR->AttackRate, ADSR->AttackExp, false, (int16)ADSR->EnvLevel, increment, divinco); + uoflow_reset = 0x7FFF; + break; + + case ADSR_DECAY: + CalcVCDelta(0x1F << 2, ADSR->DecayRate, true, true, (int16)ADSR->EnvLevel, increment, divinco); + uoflow_reset = 0; + break; + + case ADSR_SUSTAIN: + CalcVCDelta(0x7F, ADSR->SustainRate, ADSR->SustainExp, ADSR->SustainDec, (int16)ADSR->EnvLevel, increment, divinco); + uoflow_reset = ADSR->SustainDec ? 0 : 0x7FFF; + break; + + case ADSR_RELEASE: + CalcVCDelta(0x1F << 2, ADSR->ReleaseRate, ADSR->ReleaseExp, true, (int16)ADSR->EnvLevel, increment, divinco); + uoflow_reset = 0; + break; + } + + ADSR->Divider += divinco; + if(ADSR->Divider & 0x8000) + { + const uint16 prev_level = ADSR->EnvLevel; + + ADSR->Divider = 0; + ADSR->EnvLevel += increment; + + if(ADSR->Phase == ADSR_ATTACK) + { + // If previous the upper bit was 0, but now it's 1, handle overflow. + if(((prev_level ^ ADSR->EnvLevel) & ADSR->EnvLevel) & 0x8000) + ADSR->EnvLevel = uoflow_reset; + } + else + { + if(ADSR->EnvLevel & 0x8000) + ADSR->EnvLevel = uoflow_reset; + } + if(ADSR->Phase == ADSR_DECAY && (uint16)ADSR->EnvLevel < ADSR->SustainLevel) + ADSR->Phase++; + } +} + +INLINE void PS_SPU::CheckIRQAddr(uint32 addr) +{ + if(SPUControl & 0x40) + { + if(IRQAddr == addr) + { + //SPUIRQ_DBG("SPU IRQ (ALT): 0x%06x", addr); + IRQAsserted = true; + IRQ_Assert(IRQ_SPU, IRQAsserted); + } + } +} + +INLINE void PS_SPU::WriteSPURAM(uint32 addr, uint16 value) +{ + CheckIRQAddr(addr); + + SPURAM[addr] = value; +} + +INLINE uint16 PS_SPU::ReadSPURAM(uint32 addr) +{ + CheckIRQAddr(addr); + return(SPURAM[addr]); +} + +#include "spu_reverb.inc" + +INLINE bool PS_SPU::GetCDAudio(int32 &l, int32 &r) +{ + unsigned freq = CDC->GetCDAudioFreq(); + + if(!freq) + return false; + + if(freq == 7 || freq == 14) + { + CDC->GetCDAudio(l, r); + if(freq == 14) + CDC->GetCDAudio(l, r); + } + else + { + const int pi = CDXA_CurPhase * 37; + int32 out_tmp[2]; + + for(unsigned i = 0; i < 2; i++) + { + out_tmp[i] = ((CDXA_ResampBuffer[i][0] * FIR_Table[pi][0]) + + (CDXA_ResampBuffer[i][1] * FIR_Table[pi][1]) + + (CDXA_ResampBuffer[i][2] * FIR_Table[pi][2]) + + (CDXA_ResampBuffer[i][3] * FIR_Table[pi][3])) >> 15; + } + + l = out_tmp[0]; + r = out_tmp[1]; + + CDXA_CurPhase += freq; + + if(CDXA_CurPhase >= 7) + { + int32 raw[2]; + CDXA_CurPhase -= 7; + + CDC->GetCDAudio(raw[0], raw[1]); + + for(unsigned i = 0; i < 2; i++) + { + CDXA_ResampBuffer[i][0] = CDXA_ResampBuffer[i][1]; + CDXA_ResampBuffer[i][1] = CDXA_ResampBuffer[i][2]; + CDXA_ResampBuffer[i][2] = CDXA_ResampBuffer[i][3]; + CDXA_ResampBuffer[i][3] = raw[i]; + } + } + } + + return true; +} + +int32 PS_SPU::UpdateFromCDC(int32 clocks) +//pscpu_timestamp_t PS_SPU::Update(const pscpu_timestamp_t timestamp) +{ + //int32 clocks = timestamp - lastts; + int32 sample_clocks = 0; + //lastts = timestamp; + + clock_divider -= clocks; + + while(clock_divider <= 0) + { + clock_divider += 768; + sample_clocks++; + } + + while(sample_clocks > 0) + { + // Accumulated normal sound output. + int32 accum_l = 0; + int32 accum_r = 0; + + // Accumulated sound output for reverb input + int32 accum_fv_l = 0; + int32 accum_fv_r = 0; + + // Output of reverb processing. + int32 reverb_l = 0; + int32 reverb_r = 0; + + // Final output. + int32 output_l = 0; + int32 output_r = 0; + + const uint32 PhaseModCache = FM_Mode & ~ 1; +/* +** +** 0x1F801DAE Notes and Conjecture: +** ------------------------------------------------------------------------------------- +** | 15 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 4 3 2 1 0 | +** | ? | *13| ? | ba | *10 | wrr|rdr| df | is | c | +** ------------------------------------------------------------------------------------- +** +** c - Appears to be delayed copy of lower 6 bits from 0x1F801DAA. +** +** is - Interrupt asserted out status. (apparently not instantaneous status though...) +** +** df - Related to (c & 0x30) == 0x20 or (c & 0x30) == 0x30, at least. +** 0 = DMA busy(FIFO not empty when in DMA write mode?)? +** 1 = DMA ready? Something to do with the FIFO? +** +** rdr - Read(DMA read?) Ready? +** +** wrr - Write(DMA write?) Ready? +** +** *10 - Unknown. Some sort of (FIFO?) busy status?(BIOS tests for this bit in places) +** +** ba - Alternates between 0 and 1, even when SPUControl bit15 is 0; might be related to CD audio and voice 1 and 3 writing to SPU RAM. +** +** *13 - Unknown, was set to 1 when testing with an SPU delay system reg value of 0x200921E1(test result might not be reliable, re-run). +*/ + SPUStatus = SPUControl & 0x3F; + SPUStatus |= IRQAsserted ? 0x40 : 0x00; + + + for(int voice_num = 0; voice_num < 24; voice_num++) + { + SPU_Voice *voice = &Voices[voice_num]; + int32 voice_pvs; + + voice->PreLRSample = 0; + + //PSX_WARNING("[SPU] Voice %d CurPhase=%08x, pitch=%04x, CurAddr=%08x", voice_num, voice->CurPhase, voice->Pitch, voice->CurAddr); + + // Decode new samples if necessary. + if(voice->DecodeFlags & 0x1) + voice->CurAddr = voice->LoopAddr & ~0x7; + + if(voice->CurPhase_SD >= (24 << 12)) + { + voice->CurPhase_SD -= 28 << 12; + DecodeSamples(voice); + } + else + { + CheckIRQAddr(voice->CurAddr); + } + // + // + // + int l, r; + + if(Noise_Mode & (1 << voice_num)) + voice_pvs = (int16)LFSR; + else + { + const int si = voice->CurPhase >> 12; + const int pi = ((voice->CurPhase & 0xFFF) >> 4); + + voice_pvs = ((voice->DecodeBuffer[si + 0] * FIR_Table[pi][0]) + + (voice->DecodeBuffer[si + 1] * FIR_Table[pi][1]) + + (voice->DecodeBuffer[si + 2] * FIR_Table[pi][2]) + + (voice->DecodeBuffer[si + 3] * FIR_Table[pi][3])) >> 15; + } + + voice_pvs = (voice_pvs * (int16)voice->ADSR.EnvLevel) >> 15; + voice->PreLRSample = voice_pvs; + + if(voice_num == 1 || voice_num == 3) + { + int index = voice_num >> 1; + + WriteSPURAM(0x400 | (index * 0x200) | CWA, voice_pvs); + } + + + l = (voice_pvs * voice->Sweep[0].ReadVolume()) >> 15; + r = (voice_pvs * voice->Sweep[1].ReadVolume()) >> 15; + + accum_l += l; + accum_r += r; + + if(Reverb_Mode & (1 << voice_num)) + { + accum_fv_l += l; + accum_fv_r += r; + } + + // Run sweep + for(int lr = 0; lr < 2; lr++) + voice->Sweep[lr].Clock(); + + // Run enveloping + RunEnvelope(voice); + + // Increment stuff + { + int32 phase_inc; + + if(PhaseModCache & (1 << voice_num)) + { + // This old formula: phase_inc = (voice->Pitch * ((voice - 1)->PreLRSample + 0x8000)) >> 15; + // is incorrect, as it does not handle carrier pitches >= 0x8000 properly. + + phase_inc = voice->Pitch + (((int16)voice->Pitch * ((voice - 1)->PreLRSample)) >> 15); + if(phase_inc < 0) + { + printf("phase_inc < 0 (THIS SHOULD NOT HAPPEN)\n"); + phase_inc = 0; + } + } + else + phase_inc = voice->Pitch; + + if(phase_inc > 0x3FFF) + phase_inc = 0x3FFF; + + voice->CurPhase = (voice->CurPhase + phase_inc) & 0x1FFFF; + voice->CurPhase_SD += phase_inc; + } + + if(VoiceOff & (1 << voice_num)) + { + if(voice->ADSR.Phase != ADSR_RELEASE) + { + ReleaseEnvelope(voice); + } + } + + if(VoiceOn & (1 << voice_num)) + { + ResetEnvelope(voice); + + voice->DecodeFlags = 0; + voice->DecodeWritePos = 0; + + BlockEnd &= ~(1 << voice_num); + + // Weight/filter previous value initialization: + voice->DecodeBuffer[0x1E] = 0; + voice->DecodeBuffer[0x1F] = 0; + + voice->CurPhase = 0; + voice->CurPhase_SD = 28 << 12; // Trigger initial sample decode + + voice->CurAddr = voice->StartAddr & ~0x7; + } + + if(!(SPUControl & 0x8000)) + { + voice->ADSR.Phase = ADSR_RELEASE; + voice->ADSR.EnvLevel = 0; + } + } + + VoiceOff = 0; + VoiceOn = 0; + + // "Mute" control doesn't seem to affect CD audio(though CD audio reverb wasn't tested...) + // TODO: If we add sub-sample timing accuracy, see if it's checked for every channel at different times, or just once. + if(!(SPUControl & 0x4000)) + { + accum_l = 0; + accum_r = 0; + accum_fv_l = 0; + accum_fv_r = 0; + } + + // Get CD-DA + { + int32 cda_raw[2] = { 0 }; + + if(GetCDAudio(cda_raw[0], cda_raw[1])) + { + int32 cdav[2]; + + for(unsigned i = 0; i < 2; i++) + cdav[i] = (cda_raw[i] * CDVol[i]) >> 15; + + if(SPUControl & 0x0001) + { + accum_l += cdav[0]; + accum_r += cdav[1]; + + if(SPUControl & 0x0004) // TODO: Test this bit(and see if it is really dependent on bit0) + { + accum_fv_l += cdav[0]; + accum_fv_r += cdav[1]; + } + } + } + WriteSPURAM(CWA | 0x000, cda_raw[0]); + WriteSPURAM(CWA | 0x200, cda_raw[1]); + } + + CWA = (CWA + 1) & 0x1FF; + + NoiseCounter += NoiseFreqTable[(SPUControl >> 8) & 0x3F]; + if(NoiseCounter >= 0x8000) + { + NoiseCounter -= 0x8000; + LFSR = (LFSR << 1) | (((LFSR >> 15) ^ (LFSR >> 12) ^ (LFSR >> 11) ^ (LFSR >> 10) ^ 1) & 1); + } + + clamp(&accum_l, -32768, 32767); + clamp(&accum_r, -32768, 32767); + clamp(&accum_fv_l, -32768, 32767); + clamp(&accum_fv_r, -32768, 32767); + +#if 0 + accum_l = 0; + accum_r = 0; + //accum_fv_l = (short)(rand()); + //accum_fv_r = (short)(rand()); +#endif + + RunReverb(accum_fv_l, accum_fv_r, reverb_l, reverb_r); + + //MDFN_DispMessage("%d %d\n", MainVol[0], MainVol[1], ReverbVol[0], ReverbVol[1]); + + // FIXME: Dry volume versus everything else + output_l = (((accum_l * GlobalSweep[0].ReadVolume()) >> 16) + ((reverb_l * ReverbVol[0]) >> 15)); + output_r = (((accum_r * GlobalSweep[1].ReadVolume()) >> 16) + ((reverb_r * ReverbVol[1]) >> 15)); + + //output_l = reverb_l; + //output_r = reverb_r; + + clamp(&output_l, -32768, 32767); + clamp(&output_r, -32768, 32767); + + assert(IntermediateBufferPos < 4096); + IntermediateBuffer[IntermediateBufferPos][0] = output_l; + IntermediateBuffer[IntermediateBufferPos][1] = output_r; + IntermediateBufferPos++; + + //resampler.buffer()[0] = (int16)(rand() & 0xFFFF) >> 1; + //resampler.buffer()[1] = (int16)(rand() & 0xFFFF) >> 1; + //resampler.write(2); + + sample_clocks--; + + // Clock global sweep + for(int lr = 0; lr < 2; lr++) + GlobalSweep[lr].Clock(); + } + + //assert(clock_divider < 768); + + return clock_divider; +} + +void PS_SPU::WriteDMA(uint32 V) +{ + //SPUIRQ_DBG("DMA Write, RWAddr after=0x%06x", RWAddr); + WriteSPURAM(RWAddr, V); + RWAddr = (RWAddr + 1) & 0x3FFFF; + + WriteSPURAM(RWAddr, V >> 16); + RWAddr = (RWAddr + 1) & 0x3FFFF; + + + CheckIRQAddr(RWAddr); +} + +uint32 PS_SPU::ReadDMA(void) +{ + uint32 ret; + + ret = (uint16)ReadSPURAM(RWAddr); + RWAddr = (RWAddr + 1) & 0x3FFFF; + + ret |= (uint32)(uint16)ReadSPURAM(RWAddr) << 16; + RWAddr = (RWAddr + 1) & 0x3FFFF; + + CheckIRQAddr(RWAddr); + + //SPUIRQ_DBG("DMA Read, RWAddr after=0x%06x", RWAddr); + + return(ret); +} + +void PS_SPU::Write(pscpu_timestamp_t timestamp, uint32 A, uint16 V) +{ + //if((A & 0x3FF) < 0x180) + // PSX_WARNING("[SPU] Write: %08x %04x", A, V); + + A &= 0x3FF; + + if(A >= 0x200) + { + //printf("Write: %08x %04x\n", A, V); + if(A < 0x260) + { + SPU_Voice *voice = &Voices[(A - 0x200) >> 2]; + voice->Sweep[(A & 2) >> 1].WriteVolume(V); + } + else if(A < 0x280) + AuxRegs[(A & 0x1F) >> 1] = V; + + return; + } + + if(A < 0x180) + { + SPU_Voice *voice = &Voices[A >> 4]; + + switch(A & 0xF) + { + case 0x00: + case 0x02: + voice->Sweep[(A & 2) >> 1].WriteControl(V); + break; + + case 0x04: voice->Pitch = V; + break; + + case 0x06: voice->StartAddr = (V << 2) & 0x3FFFF; + break; + + case 0x08: voice->ADSRControl &= 0xFFFF0000; + voice->ADSRControl |= V; + CacheEnvelope(voice); + break; + + case 0x0A: voice->ADSRControl &= 0x0000FFFF; + voice->ADSRControl |= V << 16; + CacheEnvelope(voice); + break; + + case 0x0C: voice->ADSR.EnvLevel = V; + break; + + case 0x0E: voice->LoopAddr = (V << 2) & 0x3FFFF; + //if((voice - Voices) == 22) + //{ + // SPUIRQ_DBG("Manual loop address setting for voice %d: %04x", (int)(voice - Voices), V); + //} + break; + } + } + else + { + switch(A & 0x7F) + { + case 0x00: + case 0x02: GlobalSweep[(A & 2) >> 1].WriteControl(V); + break; + + case 0x04: ReverbVol[0] = (int16)V; + break; + + case 0x06: ReverbVol[1] = (int16)V; + break; + + // Voice ON: + case 0x08: VoiceOn &= 0xFFFF0000; + VoiceOn |= V << 0; + break; + + case 0x0a: VoiceOn &= 0x0000FFFF; + VoiceOn |= (V & 0xFF) << 16; + break; + + // Voice OFF: + case 0x0c: VoiceOff &= 0xFFFF0000; + VoiceOff |= V << 0; + break; + + case 0x0e: VoiceOff &= 0x0000FFFF; + VoiceOff |= (V & 0xFF) << 16; + break; + + case 0x10: FM_Mode &= 0xFFFF0000; + FM_Mode |= V << 0; + break; + + case 0x12: FM_Mode &= 0x0000FFFF; + FM_Mode |= (V & 0xFF) << 16; + break; + + case 0x14: Noise_Mode &= 0xFFFF0000; + Noise_Mode |= V << 0; + break; + + case 0x16: Noise_Mode &= 0x0000FFFF; + Noise_Mode |= (V & 0xFF) << 16; + break; + + case 0x18: Reverb_Mode &= 0xFFFF0000; + Reverb_Mode |= V << 0; + break; + + case 0x1A: Reverb_Mode &= 0x0000FFFF; + Reverb_Mode |= (V & 0xFF) << 16; + break; + + case 0x1C: BlockEnd &= 0xFFFF0000; + BlockEnd |= V << 0; + break; + + case 0x1E: BlockEnd &= 0x0000FFFF; + BlockEnd |= V << 16; + break; + + case 0x22: ReverbWA = (V << 2) & 0x3FFFF; + ReverbCur = ReverbWA; + //PSX_WARNING("[SPU] Reverb WA set: 0x%04x", V); + break; + + case 0x24: IRQAddr = (V << 2) & 0x3FFFF; + CheckIRQAddr(RWAddr); + //SPUIRQ_DBG("Set IRQAddr=0x%06x", IRQAddr); + break; + + case 0x26: RWAddr = (V << 2) & 0x3FFFF; + CheckIRQAddr(RWAddr); + //SPUIRQ_DBG("Set RWAddr=0x%06x", RWAddr); + break; + + case 0x28: WriteSPURAM(RWAddr, V); + RWAddr = (RWAddr + 1) & 0x3FFFF; + CheckIRQAddr(RWAddr); + break; + + case 0x2A: SPUControl = V; + //SPUIRQ_DBG("Set SPUControl=0x%04x -- IRQA=%06x, RWA=%06x", V, IRQAddr, RWAddr); + //printf("SPU control write: %04x\n", V); + if(!(V & 0x40)) + { + IRQAsserted = false; + IRQ_Assert(IRQ_SPU, IRQAsserted); + } + CheckIRQAddr(RWAddr); + break; + + case 0x2C: PSX_WARNING("[SPU] Global reg 0x2c set: 0x%04x", V); + break; + + case 0x30: CDVol[0] = V; + break; + + case 0x32: CDVol[1] = V; + break; + + case 0x34: ExternVol[0] = V; + break; + + case 0x36: ExternVol[1] = V; + break; + + case 0x38: + case 0x3A: GlobalSweep[(A & 2) >> 1].WriteVolume(V); + break; + } + } + + Regs[(A & 0x1FF) >> 1] = V; +} + +uint16 PS_SPU::Read(pscpu_timestamp_t timestamp, uint32 A) +{ + A &= 0x3FF; + + PSX_DBGINFO("[SPU] Read: %08x", A); + + if(A >= 0x200) + { + if(A < 0x260) + { + SPU_Voice *voice = &Voices[(A - 0x200) >> 2]; + + //printf("Read: %08x %04x\n", A, voice->Sweep[(A & 2) >> 1].ReadVolume()); + + return voice->Sweep[(A & 2) >> 1].ReadVolume(); + } + else if(A < 0x280) + return(AuxRegs[(A & 0x1F) >> 1]); + + return(0xFFFF); + } + + + if(A < 0x180) + { + SPU_Voice *voice = &Voices[A >> 4]; + + switch(A & 0xF) + { + case 0x0C: return(voice->ADSR.EnvLevel); + case 0x0E: return(voice->LoopAddr >> 2); + } + } + else + { + switch(A & 0x7F) + { + case 0x1C: return(BlockEnd); + case 0x1E: return(BlockEnd >> 16); + + case 0x26: //PSX_WARNING("[SPU] RWADDR Read"); + break; + + case 0x28: PSX_WARNING("[SPU] SPURAM Read port(?) Read"); + + { + uint16 ret = ReadSPURAM(RWAddr); + + RWAddr = (RWAddr + 1) & 0x3FFFF; + CheckIRQAddr(RWAddr); + + return(ret); + } + + case 0x2a: + return(SPUControl); + +/* FIXME: What is this used for? */ + case 0x3C: + //PSX_WARNING("[SPU] Read Unknown: %08x", A); + return(0); + + case 0x38: + case 0x3A: return(GlobalSweep[(A & 2) >> 1].ReadVolume()); + } + } + + return(Regs[(A & 0x1FF) >> 1]); +} + + +void PS_SPU::StartFrame(double rate, uint32 quality) +{ + if((int)rate != last_rate || quality != last_quality) + { + //double ratio = (double)44100 / (rate ? rate : 44100); + //resampler.time_ratio(ratio, 0.9965); + int err = 0; + + if(resampler) + { + speex_resampler_destroy(resampler); + resampler = NULL; + } + + if((int)rate && (int)rate != 44100) + { + resampler = speex_resampler_init(2, 44100, (int)rate, quality, &err); + } + + last_rate = (int)rate; + last_quality = quality; + } + +} + +int32 PS_SPU::EndFrame(int16 *SoundBuf) +{ + //lastts = 0; + + if(last_rate == 44100) + { + int32 ret = IntermediateBufferPos; + + memcpy(SoundBuf, IntermediateBuffer, IntermediateBufferPos * 2 * sizeof(int16)); + IntermediateBufferPos = 0; + + return(ret); + } + else if(resampler) + { + spx_uint32_t in_len; + spx_uint32_t out_len; + + in_len = IntermediateBufferPos; + out_len = 524288; //8192; // FIXME, real size. + + speex_resampler_process_interleaved_int(resampler, (const spx_int16_t *)IntermediateBuffer, &in_len, (spx_int16_t *)SoundBuf, &out_len); + + assert(in_len <= IntermediateBufferPos); + + if((IntermediateBufferPos - in_len) > 0) + memmove(IntermediateBuffer, IntermediateBuffer + in_len, (IntermediateBufferPos - in_len) * sizeof(int16) * 2); + + IntermediateBufferPos -= in_len; + + return(out_len); + } + else + { + IntermediateBufferPos = 0; + return 0; + } +} + +int PS_SPU::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { +#define SFSWEEP(r) SFVAR((r).Control), \ + SFVAR((r).Current), \ + SFVAR((r).Divider) + +#define SFVOICE(n) SFARRAY32(&Voices[n].DecodeBuffer[0], sizeof(Voices[n].DecodeBuffer) / sizeof(Voices[n].DecodeBuffer[0])), \ + SFVAR(Voices[n].DecodeWritePos), \ + SFVAR(Voices[n].DecodeFlags), \ + \ + SFSWEEP(Voices[n].Sweep[0]), \ + SFSWEEP(Voices[n].Sweep[1]), \ + \ + SFVAR(Voices[n].Pitch), \ + SFVAR(Voices[n].CurPhase), \ + SFVAR(Voices[n].CurPhase_SD), \ + \ + SFVAR(Voices[n].StartAddr), \ + SFVAR(Voices[n].CurAddr), \ + SFVAR(Voices[n].ADSRControl), \ + SFVAR(Voices[n].LoopAddr), \ + SFVAR(Voices[n].PreLRSample), \ + \ + SFVAR(Voices[n].ADSR.EnvLevel), \ + SFVAR(Voices[n].ADSR.Divider), \ + SFVAR(Voices[n].ADSR.Phase), \ + \ + SFVAR(Voices[n].ADSR.AttackExp), \ + SFVAR(Voices[n].ADSR.SustainExp), \ + SFVAR(Voices[n].ADSR.SustainDec), \ + SFVAR(Voices[n].ADSR.ReleaseExp), \ + \ + SFVAR(Voices[n].ADSR.AttackRate), \ + SFVAR(Voices[n].ADSR.DecayRate), \ + SFVAR(Voices[n].ADSR.SustainRate), \ + SFVAR(Voices[n].ADSR.ReleaseRate), \ + \ + SFVAR(Voices[n].ADSR.SustainLevel) + + SFVOICE(0), + SFVOICE(1), + SFVOICE(2), + SFVOICE(3), + SFVOICE(4), + SFVOICE(5), + SFVOICE(6), + SFVOICE(7), + SFVOICE(8), + SFVOICE(9), + SFVOICE(10), + SFVOICE(11), + SFVOICE(12), + SFVOICE(13), + SFVOICE(14), + SFVOICE(15), + SFVOICE(16), + SFVOICE(17), + SFVOICE(18), + SFVOICE(19), + SFVOICE(20), + SFVOICE(21), + SFVOICE(22), + SFVOICE(23), +#undef SFVOICE + + SFVAR(NoiseCounter), + SFVAR(LFSR), + + SFVAR(FM_Mode), + SFVAR(Noise_Mode), + SFVAR(Reverb_Mode), + + SFVAR(ReverbWA), + + SFSWEEP(GlobalSweep[0]), + SFSWEEP(GlobalSweep[1]), + + SFARRAY32(ReverbVol, sizeof(ReverbVol) / sizeof(ReverbVol[0])), + + SFARRAY32(CDVol, sizeof(CDVol) / sizeof(CDVol[0])), + SFARRAY32(ExternVol, sizeof(ExternVol) / sizeof(ExternVol[0])), + + SFVAR(IRQAddr), + + SFVAR(RWAddr), + + SFVAR(SPUControl), + + SFVAR(VoiceOn), + SFVAR(VoiceOff), + + SFVAR(BlockEnd), + + SFVAR(CWA), + + SFARRAY32(&CDXA_ResampBuffer[0][0], sizeof(CDXA_ResampBuffer) / sizeof(CDXA_ResampBuffer[0][0])), + SFVAR(CDXA_CurPhase), + + SFARRAY16(Regs, sizeof(Regs) / sizeof(Regs[0])), + SFARRAY16(AuxRegs, sizeof(AuxRegs) / sizeof(AuxRegs[0])), + + SFARRAY16(&RDSB[0][0], sizeof(RDSB) / sizeof(RDSB[0][0])), + SFVAR(RDSB_WP), + + SFARRAY16(&RUSB[0][0], sizeof(RUSB) / sizeof(RUSB[0][0])), + SFVAR(RUSB_WP), + + SFVAR(ReverbCur), + SFVAR(IRQAsserted), + + SFVAR(clock_divider), + + SFARRAY16(SPURAM, 524288 / sizeof(uint16)), + SFEND + }; +#undef SFSWEEP + int ret = 1; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "SPU"); + + if(load) + { + + } + + return(ret); +} + +uint16 PS_SPU::PeekSPURAM(uint32 address) +{ + return(SPURAM[address & 0x3FFFF]); +} + +void PS_SPU::PokeSPURAM(uint32 address, uint16 value) +{ + SPURAM[address & 0x3FFFF] = value; +} + +uint32 PS_SPU::GetRegister(unsigned int which, char *special, const uint32 special_len) +{ + uint32 ret = 0xDEADBEEF; + + if(which >= 0x8000) + { + unsigned int v = (which - 0x8000) >> 8; + + switch((which & 0xFF) | 0x8000) + { + case GSREG_V0_VOL_CTRL_L: + ret = Regs[v * 8 + 0x0]; + break; + + case GSREG_V0_VOL_CTRL_R: + ret = Regs[v * 8 + 0x1]; + break; + + case GSREG_V0_VOL_L: + ret = Voices[v].Sweep[0].ReadVolume() & 0xFFFF; + break; + + case GSREG_V0_VOL_R: + ret = Voices[v].Sweep[1].ReadVolume() & 0xFFFF; + break; + + case GSREG_V0_PITCH: + ret = Voices[v].Pitch; + break; + + case GSREG_V0_STARTADDR: + ret = Voices[v].StartAddr; + break; + + case GSREG_V0_ADSR_CTRL: + ret = Voices[v].ADSRControl; + break; + + case GSREG_V0_ADSR_LEVEL: + ret = Voices[v].ADSR.EnvLevel; + break; + + case GSREG_V0_LOOP_ADDR: + ret = Voices[v].LoopAddr; + break; + + case GSREG_V0_READ_ADDR: + ret = Voices[v].CurAddr; + break; + } + } + else switch(which) + { + case GSREG_SPUCONTROL: + ret = SPUControl; + break; + + case GSREG_FM_ON: + ret = FM_Mode; + break; + + case GSREG_NOISE_ON: + ret = Noise_Mode; + break; + + case GSREG_REVERB_ON: + ret = Reverb_Mode; + break; + + case GSREG_CDVOL_L: + ret = (uint16)CDVol[0]; + break; + + case GSREG_CDVOL_R: + ret = (uint16)CDVol[1]; + break; + + case GSREG_DRYVOL_CTRL_L: + ret = Regs[0xC0]; + break; + + case GSREG_DRYVOL_CTRL_R: + ret = Regs[0xC1]; + break; + + case GSREG_DRYVOL_L: + ret = GlobalSweep[0].ReadVolume() & 0xFFFF; + break; + + case GSREG_DRYVOL_R: + ret = GlobalSweep[1].ReadVolume() & 0xFFFF; + break; + + case GSREG_WETVOL_L: + ret = (uint16)ReverbVol[0]; + break; + + case GSREG_WETVOL_R: + ret = (uint16)ReverbVol[1]; + break; + + case GSREG_RWADDR: + ret = RWAddr; + break; + + case GSREG_IRQADDR: + ret = IRQAddr; + break; + + case GSREG_REVERBWA: + ret = ReverbWA >> 2; + break; + + case GSREG_VOICEON: + ret = VoiceOn; + break; + + case GSREG_VOICEOFF: + ret = VoiceOff; + break; + + case GSREG_BLOCKEND: + ret = BlockEnd; + break; + + + //zero 07-feb-2012 - removed case range + //case GSREG_FB_SRC_A ... GSREG_IN_COEF_R: +case GSREG_FB_SRC_A: +case GSREG_FB_SRC_B: +case GSREG_IIR_ALPHA: +case GSREG_ACC_COEF_A: +case GSREG_ACC_COEF_B: +case GSREG_ACC_COEF_C: +case GSREG_ACC_COEF_D: +case GSREG_IIR_COEF: +case GSREG_FB_ALPHA: +case GSREG_FB_X: +case GSREG_IIR_DEST_A0: +case GSREG_IIR_DEST_A1: +case GSREG_ACC_SRC_A0: +case GSREG_ACC_SRC_A1: +case GSREG_ACC_SRC_B0: +case GSREG_ACC_SRC_B1: +case GSREG_IIR_SRC_A0: +case GSREG_IIR_SRC_A1: +case GSREG_IIR_DEST_B0: +case GSREG_IIR_DEST_B1: +case GSREG_ACC_SRC_C0: +case GSREG_ACC_SRC_C1: +case GSREG_ACC_SRC_D0: +case GSREG_ACC_SRC_D1: +case GSREG_IIR_SRC_B1: +case GSREG_IIR_SRC_B0: +case GSREG_MIX_DEST_A0: +case GSREG_MIX_DEST_A1: +case GSREG_MIX_DEST_B0: +case GSREG_MIX_DEST_B1: +case GSREG_IN_COEF_L: +case GSREG_IN_COEF_R: + ret = ReverbRegs[which - GSREG_FB_SRC_A] & 0xFFFF; + break; + } + + return(ret); +} + +void PS_SPU::SetRegister(unsigned int which, uint32 value) +{ + + switch(which) + { + case GSREG_SPUCONTROL: + SPUControl = value; + break; + + case GSREG_FM_ON: + FM_Mode = value & 0xFFFFFF; + break; + + case GSREG_NOISE_ON: + Noise_Mode = value & 0xFFFFFF; + break; + + case GSREG_REVERB_ON: + Reverb_Mode = value & 0xFFFFFF; + break; + + case GSREG_CDVOL_L: + CDVol[0] = (int16)value; + break; + + case GSREG_CDVOL_R: + CDVol[1] = (int16)value; + break; + + case GSREG_DRYVOL_CTRL_L: + Regs[0xC0] = value; + GlobalSweep[0].WriteControl(value); + //GlobalSweep[0].Control = value; + break; + + case GSREG_DRYVOL_CTRL_R: + Regs[0xC1] = value; + GlobalSweep[1].WriteControl(value); + //GlobalSweep[1].Control = value; + break; + + case GSREG_DRYVOL_L: + GlobalSweep[0].WriteVolume(value); + break; + + case GSREG_DRYVOL_R: + GlobalSweep[1].WriteVolume(value); + break; + + case GSREG_WETVOL_L: + ReverbVol[0] = (int16)value; + break; + + case GSREG_WETVOL_R: + ReverbVol[1] = (int16)value; + break; + + case GSREG_RWADDR: + RWAddr = value & 0x3FFFF; + break; + + case GSREG_IRQADDR: + IRQAddr = value & 0x3FFFC; + break; + + // + // REVERB_WA + // + + case GSREG_VOICEON: + VoiceOn = value & 0xFFFFFF; + break; + + case GSREG_VOICEOFF: + VoiceOff = value & 0xFFFFFF; + break; + + case GSREG_BLOCKEND: + BlockEnd = value & 0xFFFFFF; + break; + + + } +} + + + +} diff --git a/libmednahawk/src/psx/spu.h b/libmednahawk/src/psx/spu.h new file mode 100644 index 0000000000..0622b586b4 --- /dev/null +++ b/libmednahawk/src/psx/spu.h @@ -0,0 +1,341 @@ +#ifndef __MDFN_PSX_SPU_H +#define __MDFN_PSX_SPU_H + +#include + +namespace MDFN_IEN_PSX +{ + +enum +{ + ADSR_ATTACK = 0, + ADSR_DECAY = 1, + ADSR_SUSTAIN = 2, + ADSR_RELEASE = 3 +}; + +struct SPU_ADSR +{ + uint16 EnvLevel; // We typecast it to (int16) in several places, but keep it here as (uint16) to prevent signed overflow/underflow, which compilers + // may not treat consistently. + uint32 Divider; + uint32 Phase; + + bool AttackExp; + bool SustainExp; + bool SustainDec; + bool ReleaseExp; + + int32 AttackRate; // Ar + int32 DecayRate; // Dr * 4 + int32 SustainRate; // Sr + int32 ReleaseRate; // Rr * 4 + + int32 SustainLevel; // (Sl + 1) << 11 +}; + +class PS_SPU; +class SPU_Sweep +{ + friend class PS_SPU; // For save states - FIXME(remove in future?) + + public: + SPU_Sweep() { } + ~SPU_Sweep() { } + + void Power(void); + + void WriteControl(uint16 value); + int16 ReadVolume(void); + + void WriteVolume(int16 value); + + void Clock(void); + + private: + uint16 Control; + int16 Current; + uint32 Divider; +}; + +struct SPU_Voice +{ + int32 DecodeBuffer[32 + 4]; // + 4 so we don't have to do & 0x1F in our MAC + int32 DecodeWritePos; + + uint8 DecodeFlags; + + SPU_Sweep Sweep[2]; + + uint16 Pitch; + uint32 CurPhase; + int32 CurPhase_SD; // Offseted compared to CurPhase, used for triggering sample decode. + + uint32 StartAddr; + + uint32 CurAddr; + + uint32 ADSRControl; + + uint32 LoopAddr; + + int32 PreLRSample; // After enveloping, but before L/R volume. Range of -32768 to 32767 + + SPU_ADSR ADSR; +}; + +class PS_SPU +{ + public: + + PS_SPU(); + ~PS_SPU(); + + int StateAction(StateMem *sm, int load, int data_only); + + void Power(void); + void Write(pscpu_timestamp_t timestamp, uint32 A, uint16 V); + uint16 Read(pscpu_timestamp_t timestamp, uint32 A); + + void WriteDMA(uint32 V); + uint32 ReadDMA(void); + + void StartFrame(double rate, uint32 quality); + int32 EndFrame(int16 *SoundBuf); + + int32 UpdateFromCDC(int32 clocks); + //pscpu_timestamp_t Update(pscpu_timestamp_t timestamp); + + + static void DecodeADPCM(const uint8 *input, int16 *output, const unsigned shift, const unsigned weight); + + private: + + void CheckIRQAddr(uint32 addr); + void WriteSPURAM(uint32 addr, uint16 value); + uint16 ReadSPURAM(uint32 addr); + + void DecodeSamples(SPU_Voice *voice); + + void CacheEnvelope(SPU_Voice *voice); + void ResetEnvelope(SPU_Voice *voice); + void ReleaseEnvelope(SPU_Voice *voice); + void RunEnvelope(SPU_Voice *voice); + + + void RunReverb(int32 in_l, int32 in_r, int32 &out_l, int32 &out_r); + bool GetCDAudio(int32 &l, int32 &r); + + SPU_Voice Voices[24]; + + uint32 NoiseCounter; + uint16 LFSR; + + uint32 FM_Mode; + uint32 Noise_Mode; + uint32 Reverb_Mode; + + int32 ReverbWA; + + SPU_Sweep GlobalSweep[2]; // Doesn't affect reverb volume! + + int32 ReverbVol[2]; + + int32 CDVol[2]; + int32 ExternVol[2]; + + uint32 IRQAddr; + + uint32 RWAddr; + + uint16 SPUControl; + + uint32 VoiceOn; + uint32 VoiceOff; + + uint32 BlockEnd; + + uint32 CWA; + + int32 CDXA_ResampBuffer[2][4]; + int32 CDXA_CurPhase; + + union + { + uint16 Regs[0x100]; + struct + { + uint16 VoiceRegs[0xC0]; + union + { + uint16 GlobalRegs[0x20]; + struct + { + uint16 _Global0[0x17]; + uint16 SPUStatus; + uint16 _Global1[0x08]; + }; + }; + union + { + int16 ReverbRegs[0x20]; + + struct + { + int16 FB_SRC_A; + int16 FB_SRC_B; + int16 IIR_ALPHA; + int16 ACC_COEF_A; + int16 ACC_COEF_B; + int16 ACC_COEF_C; + int16 ACC_COEF_D; + int16 IIR_COEF; + int16 FB_ALPHA; + int16 FB_X; + int16 IIR_DEST_A0; + int16 IIR_DEST_A1; + int16 ACC_SRC_A0; + int16 ACC_SRC_A1; + int16 ACC_SRC_B0; + int16 ACC_SRC_B1; + int16 IIR_SRC_A0; + int16 IIR_SRC_A1; + int16 IIR_DEST_B0; + int16 IIR_DEST_B1; + int16 ACC_SRC_C0; + int16 ACC_SRC_C1; + int16 ACC_SRC_D0; + int16 ACC_SRC_D1; + int16 IIR_SRC_B1; + int16 IIR_SRC_B0; + int16 MIX_DEST_A0; + int16 MIX_DEST_A1; + int16 MIX_DEST_B0; + int16 MIX_DEST_B1; + int16 IN_COEF_L; + int16 IN_COEF_R; + }; + }; + }; + }; + + uint16 AuxRegs[0x10]; + + int16 RDSB[2][128]; // [40] + int32 RDSB_WP; + + int16 RUSB[2][128]; + int32 RUSB_WP; + + int32 ReverbCur; + + int32 Get_Reverb_Offset(int32 offset); + int32 RD_RVB(int16 raw_offs); + void WR_RVB(int16 raw_offs, int32 sample, int32 extra_offs = 0); + + bool IRQAsserted; + + //pscpu_timestamp_t lastts; + int32 clock_divider; + + uint16 SPURAM[524288 / sizeof(uint16)]; + + int last_rate; + uint32 last_quality; + SpeexResamplerState *resampler; + + // Buffers 44.1KHz samples, should have enough for one video frame(~735 frames NTSC, ~882 PAL) plus jitter plus enough for the resampler leftovers. + // We'll just go with 4096 because powers of 2 are AWESOME and such. + uint32 IntermediateBufferPos; + int16 IntermediateBuffer[4096][2]; + + public: + enum + { + GSREG_SPUCONTROL = 0, + + GSREG_FM_ON, + GSREG_NOISE_ON, + GSREG_REVERB_ON, + + GSREG_CDVOL_L, + GSREG_CDVOL_R, + + GSREG_DRYVOL_CTRL_L, + GSREG_DRYVOL_CTRL_R, + + GSREG_DRYVOL_L, + GSREG_DRYVOL_R, + + GSREG_WETVOL_L, + GSREG_WETVOL_R, + + GSREG_RWADDR, + + GSREG_IRQADDR, + + GSREG_REVERBWA, + + GSREG_VOICEON, + GSREG_VOICEOFF, + GSREG_BLOCKEND, + + // Note: the order of these should match the reverb reg array + GSREG_FB_SRC_A, + GSREG_FB_SRC_B, + GSREG_IIR_ALPHA, + GSREG_ACC_COEF_A, + GSREG_ACC_COEF_B, + GSREG_ACC_COEF_C, + GSREG_ACC_COEF_D, + GSREG_IIR_COEF, + GSREG_FB_ALPHA, + GSREG_FB_X, + GSREG_IIR_DEST_A0, + GSREG_IIR_DEST_A1, + GSREG_ACC_SRC_A0, + GSREG_ACC_SRC_A1, + GSREG_ACC_SRC_B0, + GSREG_ACC_SRC_B1, + GSREG_IIR_SRC_A0, + GSREG_IIR_SRC_A1, + GSREG_IIR_DEST_B0, + GSREG_IIR_DEST_B1, + GSREG_ACC_SRC_C0, + GSREG_ACC_SRC_C1, + GSREG_ACC_SRC_D0, + GSREG_ACC_SRC_D1, + GSREG_IIR_SRC_B1, + GSREG_IIR_SRC_B0, + GSREG_MIX_DEST_A0, + GSREG_MIX_DEST_A1, + GSREG_MIX_DEST_B0, + GSREG_MIX_DEST_B1, + GSREG_IN_COEF_L, + GSREG_IN_COEF_R, + + + // Multiply v * 256 for each extra voice + GSREG_V0_VOL_CTRL_L = 0x8000, + GSREG_V0_VOL_CTRL_R, + GSREG_V0_VOL_L, + GSREG_V0_VOL_R, + GSREG_V0_PITCH, + GSREG_V0_STARTADDR, + GSREG_V0_ADSR_CTRL, + GSREG_V0_ADSR_LEVEL, + GSREG_V0_LOOP_ADDR, + GSREG_V0_READ_ADDR + }; + + uint32 GetRegister(unsigned int which, char *special, const uint32 special_len); + void SetRegister(unsigned int which, uint32 value); + + uint16 PeekSPURAM(uint32 address); + void PokeSPURAM(uint32 address, uint16 value); +}; + + +} + +#endif diff --git a/libmednahawk/src/psx/spu_fir_table.inc b/libmednahawk/src/psx/spu_fir_table.inc new file mode 100644 index 0000000000..5f436b839b --- /dev/null +++ b/libmednahawk/src/psx/spu_fir_table.inc @@ -0,0 +1,256 @@ + { (int16)0x12c7, (int16)0x59b3, (int16)0x1307, (int16)0xffff }, + { (int16)0x1288, (int16)0x59b2, (int16)0x1347, (int16)0xffff }, + { (int16)0x1249, (int16)0x59b0, (int16)0x1388, (int16)0xffff }, + { (int16)0x120b, (int16)0x59ad, (int16)0x13c9, (int16)0xffff }, + { (int16)0x11cd, (int16)0x59a9, (int16)0x140b, (int16)0xffff }, + { (int16)0x118f, (int16)0x59a4, (int16)0x144d, (int16)0xffff }, + { (int16)0x1153, (int16)0x599e, (int16)0x1490, (int16)0xffff }, + { (int16)0x1116, (int16)0x5997, (int16)0x14d4, (int16)0xffff }, + { (int16)0x10db, (int16)0x598f, (int16)0x1517, (int16)0xffff }, + { (int16)0x109f, (int16)0x5986, (int16)0x155c, (int16)0xffff }, + { (int16)0x1065, (int16)0x597c, (int16)0x15a0, (int16)0xffff }, + { (int16)0x102a, (int16)0x5971, (int16)0x15e6, (int16)0xffff }, + { (int16)0x0ff1, (int16)0x5965, (int16)0x162c, (int16)0xffff }, + { (int16)0x0fb7, (int16)0x5958, (int16)0x1672, (int16)0xffff }, + { (int16)0x0f7f, (int16)0x5949, (int16)0x16b9, (int16)0xffff }, + { (int16)0x0f46, (int16)0x593a, (int16)0x1700, (int16)0xffff }, + { (int16)0x0f0f, (int16)0x592a, (int16)0x1747, (int16)0x0000 }, + { (int16)0x0ed7, (int16)0x5919, (int16)0x1790, (int16)0x0000 }, + { (int16)0x0ea1, (int16)0x5907, (int16)0x17d8, (int16)0x0000 }, + { (int16)0x0e6b, (int16)0x58f4, (int16)0x1821, (int16)0x0000 }, + { (int16)0x0e35, (int16)0x58e0, (int16)0x186b, (int16)0x0000 }, + { (int16)0x0e00, (int16)0x58cb, (int16)0x18b5, (int16)0x0000 }, + { (int16)0x0dcb, (int16)0x58b5, (int16)0x1900, (int16)0x0000 }, + { (int16)0x0d97, (int16)0x589e, (int16)0x194b, (int16)0x0001 }, + { (int16)0x0d63, (int16)0x5886, (int16)0x1996, (int16)0x0001 }, + { (int16)0x0d30, (int16)0x586d, (int16)0x19e2, (int16)0x0001 }, + { (int16)0x0cfd, (int16)0x5853, (int16)0x1a2e, (int16)0x0001 }, + { (int16)0x0ccb, (int16)0x5838, (int16)0x1a7b, (int16)0x0002 }, + { (int16)0x0c99, (int16)0x581c, (int16)0x1ac8, (int16)0x0002 }, + { (int16)0x0c68, (int16)0x57ff, (int16)0x1b16, (int16)0x0002 }, + { (int16)0x0c38, (int16)0x57e2, (int16)0x1b64, (int16)0x0003 }, + { (int16)0x0c07, (int16)0x57c3, (int16)0x1bb3, (int16)0x0003 }, + { (int16)0x0bd8, (int16)0x57a3, (int16)0x1c02, (int16)0x0003 }, + { (int16)0x0ba9, (int16)0x5782, (int16)0x1c51, (int16)0x0004 }, + { (int16)0x0b7a, (int16)0x5761, (int16)0x1ca1, (int16)0x0004 }, + { (int16)0x0b4c, (int16)0x573e, (int16)0x1cf1, (int16)0x0005 }, + { (int16)0x0b1e, (int16)0x571b, (int16)0x1d42, (int16)0x0005 }, + { (int16)0x0af1, (int16)0x56f6, (int16)0x1d93, (int16)0x0006 }, + { (int16)0x0ac4, (int16)0x56d1, (int16)0x1de5, (int16)0x0007 }, + { (int16)0x0a98, (int16)0x56ab, (int16)0x1e37, (int16)0x0007 }, + { (int16)0x0a6c, (int16)0x5684, (int16)0x1e89, (int16)0x0008 }, + { (int16)0x0a40, (int16)0x565b, (int16)0x1edc, (int16)0x0009 }, + { (int16)0x0a16, (int16)0x5632, (int16)0x1f2f, (int16)0x0009 }, + { (int16)0x09eb, (int16)0x5609, (int16)0x1f82, (int16)0x000a }, + { (int16)0x09c1, (int16)0x55de, (int16)0x1fd6, (int16)0x000b }, + { (int16)0x0998, (int16)0x55b2, (int16)0x202a, (int16)0x000c }, + { (int16)0x096f, (int16)0x5585, (int16)0x207f, (int16)0x000d }, + { (int16)0x0946, (int16)0x5558, (int16)0x20d4, (int16)0x000e }, + { (int16)0x091e, (int16)0x5529, (int16)0x2129, (int16)0x000f }, + { (int16)0x08f7, (int16)0x54fa, (int16)0x217f, (int16)0x0010 }, + { (int16)0x08d0, (int16)0x54ca, (int16)0x21d5, (int16)0x0011 }, + { (int16)0x08a9, (int16)0x5499, (int16)0x222c, (int16)0x0012 }, + { (int16)0x0883, (int16)0x5467, (int16)0x2282, (int16)0x0013 }, + { (int16)0x085d, (int16)0x5434, (int16)0x22da, (int16)0x0015 }, + { (int16)0x0838, (int16)0x5401, (int16)0x2331, (int16)0x0016 }, + { (int16)0x0813, (int16)0x53cc, (int16)0x2389, (int16)0x0018 }, + { (int16)0x07ef, (int16)0x5397, (int16)0x23e1, (int16)0x0019 }, + { (int16)0x07cb, (int16)0x5361, (int16)0x2439, (int16)0x001b }, + { (int16)0x07a7, (int16)0x532a, (int16)0x2492, (int16)0x001c }, + { (int16)0x0784, (int16)0x52f3, (int16)0x24eb, (int16)0x001e }, + { (int16)0x0762, (int16)0x52ba, (int16)0x2545, (int16)0x0020 }, + { (int16)0x0740, (int16)0x5281, (int16)0x259e, (int16)0x0021 }, + { (int16)0x071e, (int16)0x5247, (int16)0x25f8, (int16)0x0023 }, + { (int16)0x06fd, (int16)0x520c, (int16)0x2653, (int16)0x0025 }, + { (int16)0x06dc, (int16)0x51d0, (int16)0x26ad, (int16)0x0027 }, + { (int16)0x06bb, (int16)0x5194, (int16)0x2708, (int16)0x0029 }, + { (int16)0x069b, (int16)0x5156, (int16)0x2763, (int16)0x002c }, + { (int16)0x067c, (int16)0x5118, (int16)0x27be, (int16)0x002e }, + { (int16)0x065c, (int16)0x50da, (int16)0x281a, (int16)0x0030 }, + { (int16)0x063e, (int16)0x509a, (int16)0x2876, (int16)0x0033 }, + { (int16)0x061f, (int16)0x505a, (int16)0x28d2, (int16)0x0035 }, + { (int16)0x0601, (int16)0x5019, (int16)0x292e, (int16)0x0038 }, + { (int16)0x05e4, (int16)0x4fd7, (int16)0x298b, (int16)0x003a }, + { (int16)0x05c7, (int16)0x4f95, (int16)0x29e7, (int16)0x003d }, + { (int16)0x05aa, (int16)0x4f52, (int16)0x2a44, (int16)0x0040 }, + { (int16)0x058e, (int16)0x4f0e, (int16)0x2aa1, (int16)0x0043 }, + { (int16)0x0572, (int16)0x4ec9, (int16)0x2aff, (int16)0x0046 }, + { (int16)0x0556, (int16)0x4e84, (int16)0x2b5c, (int16)0x0049 }, + { (int16)0x053b, (int16)0x4e3e, (int16)0x2bba, (int16)0x004d }, + { (int16)0x0520, (int16)0x4df7, (int16)0x2c18, (int16)0x0050 }, + { (int16)0x0506, (int16)0x4db0, (int16)0x2c76, (int16)0x0054 }, + { (int16)0x04ec, (int16)0x4d68, (int16)0x2cd4, (int16)0x0057 }, + { (int16)0x04d2, (int16)0x4d20, (int16)0x2d33, (int16)0x005b }, + { (int16)0x04b9, (int16)0x4cd7, (int16)0x2d91, (int16)0x005f }, + { (int16)0x04a0, (int16)0x4c8d, (int16)0x2df0, (int16)0x0063 }, + { (int16)0x0488, (int16)0x4c42, (int16)0x2e4f, (int16)0x0067 }, + { (int16)0x0470, (int16)0x4bf7, (int16)0x2eae, (int16)0x006b }, + { (int16)0x0458, (int16)0x4bac, (int16)0x2f0d, (int16)0x006f }, + { (int16)0x0441, (int16)0x4b5f, (int16)0x2f6c, (int16)0x0074 }, + { (int16)0x042a, (int16)0x4b13, (int16)0x2fcc, (int16)0x0078 }, + { (int16)0x0413, (int16)0x4ac5, (int16)0x302b, (int16)0x007d }, + { (int16)0x03fc, (int16)0x4a77, (int16)0x308b, (int16)0x0082 }, + { (int16)0x03e7, (int16)0x4a29, (int16)0x30ea, (int16)0x0087 }, + { (int16)0x03d1, (int16)0x49d9, (int16)0x314a, (int16)0x008c }, + { (int16)0x03bc, (int16)0x498a, (int16)0x31aa, (int16)0x0091 }, + { (int16)0x03a7, (int16)0x493a, (int16)0x3209, (int16)0x0096 }, + { (int16)0x0392, (int16)0x48e9, (int16)0x3269, (int16)0x009c }, + { (int16)0x037e, (int16)0x4898, (int16)0x32c9, (int16)0x00a1 }, + { (int16)0x036a, (int16)0x4846, (int16)0x3329, (int16)0x00a7 }, + { (int16)0x0356, (int16)0x47f4, (int16)0x3389, (int16)0x00ad }, + { (int16)0x0343, (int16)0x47a1, (int16)0x33e9, (int16)0x00b3 }, + { (int16)0x0330, (int16)0x474e, (int16)0x3449, (int16)0x00ba }, + { (int16)0x031d, (int16)0x46fa, (int16)0x34a9, (int16)0x00c0 }, + { (int16)0x030b, (int16)0x46a6, (int16)0x3509, (int16)0x00c7 }, + { (int16)0x02f9, (int16)0x4651, (int16)0x3569, (int16)0x00cd }, + { (int16)0x02e7, (int16)0x45fc, (int16)0x35c9, (int16)0x00d4 }, + { (int16)0x02d6, (int16)0x45a6, (int16)0x3629, (int16)0x00db }, + { (int16)0x02c4, (int16)0x4550, (int16)0x3689, (int16)0x00e3 }, + { (int16)0x02b4, (int16)0x44fa, (int16)0x36e8, (int16)0x00ea }, + { (int16)0x02a3, (int16)0x44a3, (int16)0x3748, (int16)0x00f2 }, + { (int16)0x0293, (int16)0x444c, (int16)0x37a8, (int16)0x00fa }, + { (int16)0x0283, (int16)0x43f4, (int16)0x3807, (int16)0x0101 }, + { (int16)0x0273, (int16)0x439c, (int16)0x3867, (int16)0x010a }, + { (int16)0x0264, (int16)0x4344, (int16)0x38c6, (int16)0x0112 }, + { (int16)0x0255, (int16)0x42eb, (int16)0x3926, (int16)0x011b }, + { (int16)0x0246, (int16)0x4292, (int16)0x3985, (int16)0x0123 }, + { (int16)0x0237, (int16)0x4239, (int16)0x39e4, (int16)0x012c }, + { (int16)0x0229, (int16)0x41df, (int16)0x3a43, (int16)0x0135 }, + { (int16)0x021b, (int16)0x4185, (int16)0x3aa2, (int16)0x013f }, + { (int16)0x020d, (int16)0x412a, (int16)0x3b00, (int16)0x0148 }, + { (int16)0x0200, (int16)0x40d0, (int16)0x3b5f, (int16)0x0152 }, + { (int16)0x01f2, (int16)0x4074, (int16)0x3bbd, (int16)0x015c }, + { (int16)0x01e5, (int16)0x4019, (int16)0x3c1b, (int16)0x0166 }, + { (int16)0x01d9, (int16)0x3fbd, (int16)0x3c79, (int16)0x0171 }, + { (int16)0x01cc, (int16)0x3f62, (int16)0x3cd7, (int16)0x017b }, + { (int16)0x01c0, (int16)0x3f05, (int16)0x3d35, (int16)0x0186 }, + { (int16)0x01b4, (int16)0x3ea9, (int16)0x3d92, (int16)0x0191 }, + { (int16)0x01a8, (int16)0x3e4c, (int16)0x3def, (int16)0x019c }, + { (int16)0x019c, (int16)0x3def, (int16)0x3e4c, (int16)0x01a8 }, + { (int16)0x0191, (int16)0x3d92, (int16)0x3ea9, (int16)0x01b4 }, + { (int16)0x0186, (int16)0x3d35, (int16)0x3f05, (int16)0x01c0 }, + { (int16)0x017b, (int16)0x3cd7, (int16)0x3f62, (int16)0x01cc }, + { (int16)0x0171, (int16)0x3c79, (int16)0x3fbd, (int16)0x01d9 }, + { (int16)0x0166, (int16)0x3c1b, (int16)0x4019, (int16)0x01e5 }, + { (int16)0x015c, (int16)0x3bbd, (int16)0x4074, (int16)0x01f2 }, + { (int16)0x0152, (int16)0x3b5f, (int16)0x40d0, (int16)0x0200 }, + { (int16)0x0148, (int16)0x3b00, (int16)0x412a, (int16)0x020d }, + { (int16)0x013f, (int16)0x3aa2, (int16)0x4185, (int16)0x021b }, + { (int16)0x0135, (int16)0x3a43, (int16)0x41df, (int16)0x0229 }, + { (int16)0x012c, (int16)0x39e4, (int16)0x4239, (int16)0x0237 }, + { (int16)0x0123, (int16)0x3985, (int16)0x4292, (int16)0x0246 }, + { (int16)0x011b, (int16)0x3926, (int16)0x42eb, (int16)0x0255 }, + { (int16)0x0112, (int16)0x38c6, (int16)0x4344, (int16)0x0264 }, + { (int16)0x010a, (int16)0x3867, (int16)0x439c, (int16)0x0273 }, + { (int16)0x0101, (int16)0x3807, (int16)0x43f4, (int16)0x0283 }, + { (int16)0x00fa, (int16)0x37a8, (int16)0x444c, (int16)0x0293 }, + { (int16)0x00f2, (int16)0x3748, (int16)0x44a3, (int16)0x02a3 }, + { (int16)0x00ea, (int16)0x36e8, (int16)0x44fa, (int16)0x02b4 }, + { (int16)0x00e3, (int16)0x3689, (int16)0x4550, (int16)0x02c4 }, + { (int16)0x00db, (int16)0x3629, (int16)0x45a6, (int16)0x02d6 }, + { (int16)0x00d4, (int16)0x35c9, (int16)0x45fc, (int16)0x02e7 }, + { (int16)0x00cd, (int16)0x3569, (int16)0x4651, (int16)0x02f9 }, + { (int16)0x00c7, (int16)0x3509, (int16)0x46a6, (int16)0x030b }, + { (int16)0x00c0, (int16)0x34a9, (int16)0x46fa, (int16)0x031d }, + { (int16)0x00ba, (int16)0x3449, (int16)0x474e, (int16)0x0330 }, + { (int16)0x00b3, (int16)0x33e9, (int16)0x47a1, (int16)0x0343 }, + { (int16)0x00ad, (int16)0x3389, (int16)0x47f4, (int16)0x0356 }, + { (int16)0x00a7, (int16)0x3329, (int16)0x4846, (int16)0x036a }, + { (int16)0x00a1, (int16)0x32c9, (int16)0x4898, (int16)0x037e }, + { (int16)0x009c, (int16)0x3269, (int16)0x48e9, (int16)0x0392 }, + { (int16)0x0096, (int16)0x3209, (int16)0x493a, (int16)0x03a7 }, + { (int16)0x0091, (int16)0x31aa, (int16)0x498a, (int16)0x03bc }, + { (int16)0x008c, (int16)0x314a, (int16)0x49d9, (int16)0x03d1 }, + { (int16)0x0087, (int16)0x30ea, (int16)0x4a29, (int16)0x03e7 }, + { (int16)0x0082, (int16)0x308b, (int16)0x4a77, (int16)0x03fc }, + { (int16)0x007d, (int16)0x302b, (int16)0x4ac5, (int16)0x0413 }, + { (int16)0x0078, (int16)0x2fcc, (int16)0x4b13, (int16)0x042a }, + { (int16)0x0074, (int16)0x2f6c, (int16)0x4b5f, (int16)0x0441 }, + { (int16)0x006f, (int16)0x2f0d, (int16)0x4bac, (int16)0x0458 }, + { (int16)0x006b, (int16)0x2eae, (int16)0x4bf7, (int16)0x0470 }, + { (int16)0x0067, (int16)0x2e4f, (int16)0x4c42, (int16)0x0488 }, + { (int16)0x0063, (int16)0x2df0, (int16)0x4c8d, (int16)0x04a0 }, + { (int16)0x005f, (int16)0x2d91, (int16)0x4cd7, (int16)0x04b9 }, + { (int16)0x005b, (int16)0x2d33, (int16)0x4d20, (int16)0x04d2 }, + { (int16)0x0057, (int16)0x2cd4, (int16)0x4d68, (int16)0x04ec }, + { (int16)0x0054, (int16)0x2c76, (int16)0x4db0, (int16)0x0506 }, + { (int16)0x0050, (int16)0x2c18, (int16)0x4df7, (int16)0x0520 }, + { (int16)0x004d, (int16)0x2bba, (int16)0x4e3e, (int16)0x053b }, + { (int16)0x0049, (int16)0x2b5c, (int16)0x4e84, (int16)0x0556 }, + { (int16)0x0046, (int16)0x2aff, (int16)0x4ec9, (int16)0x0572 }, + { (int16)0x0043, (int16)0x2aa1, (int16)0x4f0e, (int16)0x058e }, + { (int16)0x0040, (int16)0x2a44, (int16)0x4f52, (int16)0x05aa }, + { (int16)0x003d, (int16)0x29e7, (int16)0x4f95, (int16)0x05c7 }, + { (int16)0x003a, (int16)0x298b, (int16)0x4fd7, (int16)0x05e4 }, + { (int16)0x0038, (int16)0x292e, (int16)0x5019, (int16)0x0601 }, + { (int16)0x0035, (int16)0x28d2, (int16)0x505a, (int16)0x061f }, + { (int16)0x0033, (int16)0x2876, (int16)0x509a, (int16)0x063e }, + { (int16)0x0030, (int16)0x281a, (int16)0x50da, (int16)0x065c }, + { (int16)0x002e, (int16)0x27be, (int16)0x5118, (int16)0x067c }, + { (int16)0x002c, (int16)0x2763, (int16)0x5156, (int16)0x069b }, + { (int16)0x0029, (int16)0x2708, (int16)0x5194, (int16)0x06bb }, + { (int16)0x0027, (int16)0x26ad, (int16)0x51d0, (int16)0x06dc }, + { (int16)0x0025, (int16)0x2653, (int16)0x520c, (int16)0x06fd }, + { (int16)0x0023, (int16)0x25f8, (int16)0x5247, (int16)0x071e }, + { (int16)0x0021, (int16)0x259e, (int16)0x5281, (int16)0x0740 }, + { (int16)0x0020, (int16)0x2545, (int16)0x52ba, (int16)0x0762 }, + { (int16)0x001e, (int16)0x24eb, (int16)0x52f3, (int16)0x0784 }, + { (int16)0x001c, (int16)0x2492, (int16)0x532a, (int16)0x07a7 }, + { (int16)0x001b, (int16)0x2439, (int16)0x5361, (int16)0x07cb }, + { (int16)0x0019, (int16)0x23e1, (int16)0x5397, (int16)0x07ef }, + { (int16)0x0018, (int16)0x2389, (int16)0x53cc, (int16)0x0813 }, + { (int16)0x0016, (int16)0x2331, (int16)0x5401, (int16)0x0838 }, + { (int16)0x0015, (int16)0x22da, (int16)0x5434, (int16)0x085d }, + { (int16)0x0013, (int16)0x2282, (int16)0x5467, (int16)0x0883 }, + { (int16)0x0012, (int16)0x222c, (int16)0x5499, (int16)0x08a9 }, + { (int16)0x0011, (int16)0x21d5, (int16)0x54ca, (int16)0x08d0 }, + { (int16)0x0010, (int16)0x217f, (int16)0x54fa, (int16)0x08f7 }, + { (int16)0x000f, (int16)0x2129, (int16)0x5529, (int16)0x091e }, + { (int16)0x000e, (int16)0x20d4, (int16)0x5558, (int16)0x0946 }, + { (int16)0x000d, (int16)0x207f, (int16)0x5585, (int16)0x096f }, + { (int16)0x000c, (int16)0x202a, (int16)0x55b2, (int16)0x0998 }, + { (int16)0x000b, (int16)0x1fd6, (int16)0x55de, (int16)0x09c1 }, + { (int16)0x000a, (int16)0x1f82, (int16)0x5609, (int16)0x09eb }, + { (int16)0x0009, (int16)0x1f2f, (int16)0x5632, (int16)0x0a16 }, + { (int16)0x0009, (int16)0x1edc, (int16)0x565b, (int16)0x0a40 }, + { (int16)0x0008, (int16)0x1e89, (int16)0x5684, (int16)0x0a6c }, + { (int16)0x0007, (int16)0x1e37, (int16)0x56ab, (int16)0x0a98 }, + { (int16)0x0007, (int16)0x1de5, (int16)0x56d1, (int16)0x0ac4 }, + { (int16)0x0006, (int16)0x1d93, (int16)0x56f6, (int16)0x0af1 }, + { (int16)0x0005, (int16)0x1d42, (int16)0x571b, (int16)0x0b1e }, + { (int16)0x0005, (int16)0x1cf1, (int16)0x573e, (int16)0x0b4c }, + { (int16)0x0004, (int16)0x1ca1, (int16)0x5761, (int16)0x0b7a }, + { (int16)0x0004, (int16)0x1c51, (int16)0x5782, (int16)0x0ba9 }, + { (int16)0x0003, (int16)0x1c02, (int16)0x57a3, (int16)0x0bd8 }, + { (int16)0x0003, (int16)0x1bb3, (int16)0x57c3, (int16)0x0c07 }, + { (int16)0x0003, (int16)0x1b64, (int16)0x57e2, (int16)0x0c38 }, + { (int16)0x0002, (int16)0x1b16, (int16)0x57ff, (int16)0x0c68 }, + { (int16)0x0002, (int16)0x1ac8, (int16)0x581c, (int16)0x0c99 }, + { (int16)0x0002, (int16)0x1a7b, (int16)0x5838, (int16)0x0ccb }, + { (int16)0x0001, (int16)0x1a2e, (int16)0x5853, (int16)0x0cfd }, + { (int16)0x0001, (int16)0x19e2, (int16)0x586d, (int16)0x0d30 }, + { (int16)0x0001, (int16)0x1996, (int16)0x5886, (int16)0x0d63 }, + { (int16)0x0001, (int16)0x194b, (int16)0x589e, (int16)0x0d97 }, + { (int16)0x0000, (int16)0x1900, (int16)0x58b5, (int16)0x0dcb }, + { (int16)0x0000, (int16)0x18b5, (int16)0x58cb, (int16)0x0e00 }, + { (int16)0x0000, (int16)0x186b, (int16)0x58e0, (int16)0x0e35 }, + { (int16)0x0000, (int16)0x1821, (int16)0x58f4, (int16)0x0e6b }, + { (int16)0x0000, (int16)0x17d8, (int16)0x5907, (int16)0x0ea1 }, + { (int16)0x0000, (int16)0x1790, (int16)0x5919, (int16)0x0ed7 }, + { (int16)0x0000, (int16)0x1747, (int16)0x592a, (int16)0x0f0f }, + { (int16)0xffff, (int16)0x1700, (int16)0x593a, (int16)0x0f46 }, + { (int16)0xffff, (int16)0x16b9, (int16)0x5949, (int16)0x0f7f }, + { (int16)0xffff, (int16)0x1672, (int16)0x5958, (int16)0x0fb7 }, + { (int16)0xffff, (int16)0x162c, (int16)0x5965, (int16)0x0ff1 }, + { (int16)0xffff, (int16)0x15e6, (int16)0x5971, (int16)0x102a }, + { (int16)0xffff, (int16)0x15a0, (int16)0x597c, (int16)0x1065 }, + { (int16)0xffff, (int16)0x155c, (int16)0x5986, (int16)0x109f }, + { (int16)0xffff, (int16)0x1517, (int16)0x598f, (int16)0x10db }, + { (int16)0xffff, (int16)0x14d4, (int16)0x5997, (int16)0x1116 }, + { (int16)0xffff, (int16)0x1490, (int16)0x599e, (int16)0x1153 }, + { (int16)0xffff, (int16)0x144d, (int16)0x59a4, (int16)0x118f }, + { (int16)0xffff, (int16)0x140b, (int16)0x59a9, (int16)0x11cd }, + { (int16)0xffff, (int16)0x13c9, (int16)0x59ad, (int16)0x120b }, + { (int16)0xffff, (int16)0x1388, (int16)0x59b0, (int16)0x1249 }, + { (int16)0xffff, (int16)0x1347, (int16)0x59b2, (int16)0x1288 }, + { (int16)0xffff, (int16)0x1307, (int16)0x59b3, (int16)0x12c7 }, diff --git a/libmednahawk/src/psx/spu_nft.inc b/libmednahawk/src/psx/spu_nft.inc new file mode 100644 index 0000000000..5ecba5cb93 --- /dev/null +++ b/libmednahawk/src/psx/spu_nft.inc @@ -0,0 +1,64 @@ +0x00000001, +0x00000001, +0x00000001, +0x00000001, +0x00000002, +0x00000002, +0x00000002, +0x00000002, +0x00000004, +0x00000005, +0x00000006, +0x00000007, +0x00000008, +0x0000000a, +0x0000000c, +0x0000000e, +0x00000010, +0x00000014, +0x00000018, +0x0000001c, +0x00000020, +0x00000028, +0x00000030, +0x00000038, +0x00000040, +0x00000050, +0x00000060, +0x00000070, +0x00000080, +0x000000a0, +0x000000c0, +0x000000e0, +0x00000100, +0x00000140, +0x00000180, +0x000001c0, +0x00000200, +0x00000280, +0x00000300, +0x00000380, +0x00000400, +0x00000500, +0x00000600, +0x00000700, +0x00000800, +0x00000a00, +0x00000c00, +0x00000e00, +0x00001000, +0x00001400, +0x00001800, +0x00001c00, +0x00002000, +0x00002800, +0x00003000, +0x00003800, +0x00004000, +0x00005000, +0x00006000, +0x00007000, +0x00008000, +0x00008000, +0x00008000, +0x00008000, diff --git a/libmednahawk/src/psx/spu_reverb.inc b/libmednahawk/src/psx/spu_reverb.inc new file mode 100644 index 0000000000..5e93798957 --- /dev/null +++ b/libmednahawk/src/psx/spu_reverb.inc @@ -0,0 +1,237 @@ +static int16 ReverbSat(int32 samp) MDFN_WARN_UNUSED_RESULT; +static INLINE int16 ReverbSat(int32 samp) +{ + if(samp > 32767) + samp = 32767; + + if(samp < -32768) + samp = -32768; + + return(samp); +} + + +INLINE int32 PS_SPU::Get_Reverb_Offset(int32 in_offset) +{ + int32 offset = in_offset & 0x3FFFF; + int32 wa_size = 0x40000 - ReverbWA; + + if(offset & 0x20000) + { + offset -= ReverbWA; + + if(offset < 0) + { + offset = 0; + //PSX_WARNING("[SPU] A reverb offset is broken(-)."); + } + } + else + { + if(offset >= wa_size) + { + offset = wa_size - 1; + //PSX_WARNING("[SPU] A reverb offset is broken(+): WASize=0x%04x, 0x%04x.", wa_size >> 2, in_offset >> 2); + } + } + + offset += ReverbCur; + + if(offset >= 0x40000) + offset = (offset & 0x3FFFF) + ReverbWA; + + assert(offset >= ReverbWA && offset < 0x40000); + + return(offset); +} + +int32 PS_SPU::RD_RVB(int16 raw_offs) +{ + //raw_offs = rand() & 0xFFFF; + + return((int16)SPURAM[Get_Reverb_Offset(raw_offs << 2)]); +} + +void PS_SPU::WR_RVB(int16 raw_offs, int32 sample, int32 extra_offs) +{ + //raw_offs = rand() & 0xFFFF; + + SPURAM[Get_Reverb_Offset((raw_offs << 2) + extra_offs)] = ReverbSat(sample); +} + +static INLINE int32 Reverb4422(const int16 *src) +{ + static const int16 ResampTable[40] = + { + (int16)0xffff, + (int16)0x0000, + (int16)0x0002, + (int16)0x0000, + (int16)0xfff6, + (int16)0x0000, + (int16)0x0023, + (int16)0x0000, + (int16)0xff99, + (int16)0x0000, + (int16)0x010a, + (int16)0x0000, + (int16)0xfd98, + (int16)0x0000, + (int16)0x0534, + (int16)0x0000, + (int16)0xf470, + (int16)0x0000, + (int16)0x2806, + (int16)0x4000, + (int16)0x2806, + (int16)0x0000, + (int16)0xf470, + (int16)0x0000, + (int16)0x0534, + (int16)0x0000, + (int16)0xfd98, + (int16)0x0000, + (int16)0x010a, + (int16)0x0000, + (int16)0xff99, + (int16)0x0000, + (int16)0x0023, + (int16)0x0000, + (int16)0xfff6, + (int16)0x0000, + (int16)0x0002, + (int16)0x0000, + (int16)0xffff, + (int16)0x0000, + }; + int32 out = 0; // 32-bits is adequate(it won't overflow) + + for(int i = 0; i < 40; i += 2) + out += ResampTable[i] * src[i]; + + // Middle non-zero + out += 0x4000 * src[19]; + + out >>= 15; + + if(out < -32768) + out = -32768; + + if(out > 32767) + out = 32767; + + return(out); +} + +void PS_SPU::RunReverb(int32 in_l, int32 in_r, int32 &out_l, int32 &out_r) +{ + int32 upsampled[2] = { 0, 0 }; + + RDSB[0][RDSB_WP] = in_l; + RDSB[1][RDSB_WP] = in_r; + RDSB[0][RDSB_WP | 0x40] = in_l; // So we don't have to &/bounds check in our MAC loop + RDSB[1][RDSB_WP | 0x40] = in_r; + + RDSB_WP = (RDSB_WP + 1) & 0x3F; + + if(!(RDSB_WP & 1)) + { + int32 downsampled[2]; + + for(int lr = 0; lr < 2; lr++) + downsampled[lr] = Reverb4422(&RDSB[lr][(RDSB_WP - 40) & 0x3F]); + + // + // Run algorithm + /// + if(SPUControl & 0x80) + { + int32 IIR_INPUT_A0; + int32 IIR_INPUT_A1; + int32 IIR_INPUT_B0; + int32 IIR_INPUT_B1; + int32 IIR_A0, IIR_A1, IIR_B0, IIR_B1; + int32 ACC0, ACC1; + int32 FB_A0, FB_A1, FB_B0, FB_B1; + + IIR_INPUT_A0 = ((RD_RVB(IIR_SRC_A0) * IIR_COEF) >> 15) + ((downsampled[0] * IN_COEF_L) >> 15); + IIR_INPUT_A1 = ((RD_RVB(IIR_SRC_A1) * IIR_COEF) >> 15) + ((downsampled[1] * IN_COEF_R) >> 15); + IIR_INPUT_B0 = ((RD_RVB(IIR_SRC_B0) * IIR_COEF) >> 15) + ((downsampled[0] * IN_COEF_L) >> 15); + IIR_INPUT_B1 = ((RD_RVB(IIR_SRC_B1) * IIR_COEF) >> 15) + ((downsampled[1] * IN_COEF_R) >> 15); + + + IIR_A0 = (((int64)IIR_INPUT_A0 * IIR_ALPHA) >> 15) + ((RD_RVB(IIR_DEST_A0) * (32768 - IIR_ALPHA)) >> 15); + IIR_A1 = (((int64)IIR_INPUT_A1 * IIR_ALPHA) >> 15) + ((RD_RVB(IIR_DEST_A1) * (32768 - IIR_ALPHA)) >> 15); + IIR_B0 = (((int64)IIR_INPUT_B0 * IIR_ALPHA) >> 15) + ((RD_RVB(IIR_DEST_B0) * (32768 - IIR_ALPHA)) >> 15); + IIR_B1 = (((int64)IIR_INPUT_B1 * IIR_ALPHA) >> 15) + ((RD_RVB(IIR_DEST_B1) * (32768 - IIR_ALPHA)) >> 15); + + WR_RVB(IIR_DEST_A0, IIR_A0, 1); + WR_RVB(IIR_DEST_A1, IIR_A1, 1); + WR_RVB(IIR_DEST_B0, IIR_B0, 1); + WR_RVB(IIR_DEST_B1, IIR_B1, 1); + +#if 0 + ACC0 = ((RD_RVB(ACC_SRC_A0) * ACC_COEF_A) >> 15) + + ((RD_RVB(ACC_SRC_B0) * ACC_COEF_B) >> 15) + + ((RD_RVB(ACC_SRC_C0) * ACC_COEF_C) >> 15) + + ((RD_RVB(ACC_SRC_D0) * ACC_COEF_D) >> 15); + + ACC1 = ((RD_RVB(ACC_SRC_A1) * ACC_COEF_A) >> 15) + + ((RD_RVB(ACC_SRC_B1) * ACC_COEF_B) >> 15) + + ((RD_RVB(ACC_SRC_C1) * ACC_COEF_C) >> 15) + + ((RD_RVB(ACC_SRC_D1) * ACC_COEF_D) >> 15); +#endif + + ACC0 = ((int64)(RD_RVB(ACC_SRC_A0) * ACC_COEF_A) + + (RD_RVB(ACC_SRC_B0) * ACC_COEF_B) + + (RD_RVB(ACC_SRC_C0) * ACC_COEF_C) + + (RD_RVB(ACC_SRC_D0) * ACC_COEF_D)) >> 15; + + + ACC1 = ((int64)(RD_RVB(ACC_SRC_A1) * ACC_COEF_A) + + (RD_RVB(ACC_SRC_B1) * ACC_COEF_B) + + (RD_RVB(ACC_SRC_C1) * ACC_COEF_C) + + (RD_RVB(ACC_SRC_D1) * ACC_COEF_D)) >> 15; + + + FB_A0 = RD_RVB(MIX_DEST_A0 - FB_SRC_A); + FB_A1 = RD_RVB(MIX_DEST_A1 - FB_SRC_A); + FB_B0 = RD_RVB(MIX_DEST_B0 - FB_SRC_B); + FB_B1 = RD_RVB(MIX_DEST_B1 - FB_SRC_B); + + WR_RVB(MIX_DEST_A0, ACC0 - ((FB_A0 * FB_ALPHA) >> 15)); + WR_RVB(MIX_DEST_A1, ACC1 - ((FB_A1 * FB_ALPHA) >> 15)); + + WR_RVB(MIX_DEST_B0, (((int64)FB_ALPHA * ACC0) >> 15) - ((FB_A0 * (int16)(0x8000 ^ FB_ALPHA)) >> 15) - ((FB_B0 * FB_X) >> 15)); + WR_RVB(MIX_DEST_B1, (((int64)FB_ALPHA * ACC1) >> 15) - ((FB_A1 * (int16)(0x8000 ^ FB_ALPHA)) >> 15) - ((FB_B1 * FB_X) >> 15)); + } + + // + // Get output samples + // +// RUSB[0][RUSB_WP | 0x40] = RUSB[0][RUSB_WP] = (short)rand(); +// RUSB[1][RUSB_WP | 0x40] = RUSB[1][RUSB_WP] = (short)rand(); + RUSB[0][RUSB_WP | 0x40] = RUSB[0][RUSB_WP] = (RD_RVB(MIX_DEST_A0) + RD_RVB(MIX_DEST_B0)) >> 1; + RUSB[1][RUSB_WP | 0x40] = RUSB[1][RUSB_WP] = (RD_RVB(MIX_DEST_A1) + RD_RVB(MIX_DEST_B1)) >> 1; + + RUSB_WP = (RUSB_WP + 1) & 0x3F; + + ReverbCur = (ReverbCur + 1) & 0x3FFFF; + if(!ReverbCur) + ReverbCur = ReverbWA; + } + else + { + RUSB[0][RUSB_WP | 0x40] = RUSB[0][RUSB_WP] = 0; + RUSB[1][RUSB_WP | 0x40] = RUSB[1][RUSB_WP] = 0; + + RUSB_WP = (RUSB_WP + 1) & 0x3F; + } + + for(int lr = 0; lr < 2; lr++) + upsampled[lr] = Reverb4422(&RUSB[lr][(RUSB_WP - 40) & 0x3F]); + + out_l = upsampled[0]; + out_r = upsampled[1]; +} + diff --git a/libmednahawk/src/psx/spu_xa.inc b/libmednahawk/src/psx/spu_xa.inc new file mode 100644 index 0000000000..5d2709ae68 --- /dev/null +++ b/libmednahawk/src/psx/spu_xa.inc @@ -0,0 +1,12 @@ +void PS_SPU::XA_DecodeSector(void) +{ + + + +} + +void PS_SPU::XA_ReadBuffer(int &l, int &r) +{ + + +} diff --git a/libmednahawk/src/psx/timer.cpp b/libmednahawk/src/psx/timer.cpp new file mode 100644 index 0000000000..48297a7da0 --- /dev/null +++ b/libmednahawk/src/psx/timer.cpp @@ -0,0 +1,516 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "psx.h" +#include "timer.h" + +/* + Notes(some of it may be incomplete or wrong in subtle ways) + + Control bits: + Lower 3 bits of mode, for timer1: + 0x1 = don't count during vblank + 0x3 = vblank going inactive triggers timer reset + 0x5 = vblank going inactive triggers timer reset, and only count within vblank. + 0x7 = Wait until vblank goes active then inactive, then start counting? + For timer2: + 0x1 = timer stopped(TODO: confirm on real system) + + Target mode enabled 0x008 + IRQ enable 0x010 + --?Affects 0x400 status flag?-- 0x020 + IRQ evaluation auto-reset 0x040 + --unknown-- 0x080 + Clock selection 0x100 + Divide by 8(timer 2 only?) 0x200 + + Counter: + Reset to 0 on writes to the mode/status register. + + Status flags: + Unknown flag 0x0400 + Compare flag 0x0800 + Cleared on mode/status read. + Set when: //ever Counter == 0(proooobably, need to investigate lower 3 bits in relation to this). + + + Overflow/Carry flag 0x1000 + Cleared on mode/status read. + Set when counter overflows from 0xFFFF->0. + + Hidden flags: + IRQ done + Cleared on writes to the mode/status register, on writes to the count register, and apparently automatically when the counter + increments if (Mode & 0x40) [Note: If target mode is enabled, and target is 0, IRQ done flag won't be automatically reset] + + There seems to be a brief period(edge condition?) where, if count to target is enabled, you can (sometimes?) read the target value in the count + register before it's reset to 0. I doubt any games rely on this, but who knows. Maybe a PSX equivalent of the PC Engine "Battle Royale"? ;) + + When the counter == 0, the compare flag is set. An IRQ will be generated if (Mode & 0x10), and the hidden IRQ done flag will be set. +*/ + +/* + Dec. 26, 2011 Note + Due to problems I've had with my GPU timing test program, timer2 appears to be unreliable(clocks are skipped?) when target mode is enabled and the full + 33MHz clock is used(rather than 33MHz / 8). TODO: Investigate further and confirm(or not). +*/ + +/* + FIXME: Clock appropriately(and update events) when using SetRegister() via the debugger. + + TODO: If we ever return randomish values to "simulate" open bus, remember to change the return type and such of the TIMER_Read() function to full 32-bit too. +*/ + +namespace MDFN_IEN_PSX +{ + +struct Timer +{ + uint32 Mode; + int32 Counter; // Only 16-bit, but 32-bit here for detecting counting past target. + int32 Target; + + int32 Div8Counter; + + bool IRQDone; + int32 DoZeCounting; +}; + +static bool vblank; +static bool hretrace; +static Timer Timers[3]; +static pscpu_timestamp_t lastts; + +static int32 CalcNextEvent(int32 next_event) +{ + for(int i = 0; i < 3; i++) + { + int32 target; + int32 count_delta; + + if((i == 0 || i == 1) && (Timers[i].Mode & 0x100)) // If clocked by GPU, abort for this timer(will result in poor granularity for pixel-clock-derived timer IRQs, but whatever). + continue; + + if(!(Timers[i].Mode & 0x10)) // If IRQ is disabled, abort for this timer. + continue; + + if((Timers[i].Mode & 0x8) && (Timers[i].Counter == 0) && (Timers[i].Target == 0) && !Timers[i].IRQDone) + { + next_event = 1; + continue; + } + + target = ((Timers[i].Mode & 0x8) && (Timers[i].Counter < Timers[i].Target)) ? Timers[i].Target : 0x10000; + + count_delta = target - Timers[i].Counter; + if(count_delta <= 0) + { + fprintf(stderr, "timer %d count_delta <= 0!!! %d %d\n", i, target, Timers[i].Counter); + continue; + } + + { + int32 tmp_clocks; + + if(Timers[i].DoZeCounting <= 0) + continue; + + if((i == 0x2) && (Timers[i].Mode & 0x1)) + continue; + + if((i == 0x2) && (Timers[i].Mode & 0x200)) + { + assert(Timers[i].Div8Counter >= 0 && Timers[i].Div8Counter < 8); + tmp_clocks = ((count_delta - 1) * 8) + (8 - Timers[i].Div8Counter); + } + else + tmp_clocks = count_delta; + + assert(tmp_clocks > 0); + + if(next_event > tmp_clocks) + next_event = tmp_clocks; + } + } + + return(next_event); +} + +static void ClockTimer(int i, uint32 clocks) +{ + int32 before = Timers[i].Counter; + int32 target = 0x10000; + bool zero_tm = false; + + if(Timers[i].DoZeCounting <= 0) + clocks = 0; + + if(i == 0x2) + { + uint32 d8_clocks; + + Timers[i].Div8Counter += clocks; + d8_clocks = Timers[i].Div8Counter >> 3; + Timers[i].Div8Counter -= d8_clocks << 3; + + if(Timers[i].Mode & 0x200) // Divide by 8, at least for timer 0x2 + clocks = d8_clocks; + + if(Timers[i].Mode & 1) + clocks = 0; + } + + if(Timers[i].Mode & 0x008) + target = Timers[i].Target; + + if(target == 0 && Timers[i].Counter == 0) + zero_tm = true; + else + Timers[i].Counter += clocks; + + if(clocks && (Timers[i].Mode & 0x40)) + Timers[i].IRQDone = false; + + if((before < target && Timers[i].Counter >= target) || zero_tm || Timers[i].Counter > 0xFFFF) + { +#if 1 + if(Timers[i].Mode & 0x10) + { + if((Timers[i].Counter - target) > 3) + printf("Timer %d IRQ trigger error: %d\n", i, Timers[i].Counter - target); + } + +#endif + + + Timers[i].Mode |= 0x0800; + + if(Timers[i].Counter > 0xFFFF) + { + Timers[i].Counter -= 0x10000; + + if(target == 0x10000) + Timers[i].Mode |= 0x1000; + + if(!target) + Timers[i].Counter = 0; + } + + if(target) + Timers[i].Counter -= (Timers[i].Counter / target) * target; + + if((Timers[i].Mode & 0x10) && !Timers[i].IRQDone) + { + Timers[i].IRQDone = true; + + IRQ_Assert(IRQ_TIMER_0 + i, true); + IRQ_Assert(IRQ_TIMER_0 + i, false); + } + + if(Timers[i].Counter && (Timers[i].Mode & 0x40)) + Timers[i].IRQDone = false; + } + +} + +void TIMER_SetVBlank(bool status) +{ + switch(Timers[1].Mode & 0x7) + { + case 0x1: + Timers[1].DoZeCounting = !status; + break; + + case 0x3: + if(vblank && !status) + Timers[1].Counter = 0; + break; + + case 0x5: + Timers[1].DoZeCounting = status; + if(vblank && !status) + Timers[1].Counter = 0; + break; + + case 0x7: + if(Timers[1].DoZeCounting == -1) + { + if(!vblank && status) + Timers[1].DoZeCounting = 0; + } + else if(Timers[1].DoZeCounting == 0) + { + if(vblank && !status) + Timers[1].DoZeCounting = 1; + } + break; + } + vblank = status; +} + +void TIMER_SetHRetrace(bool status) +{ + if(hretrace && !status) + { + if((Timers[0].Mode & 0x7) == 0x3) + Timers[0].Counter = 0; + } + + hretrace = status; +} + +void TIMER_AddDotClocks(uint32 count) +{ + if(Timers[0].Mode & 0x100) + ClockTimer(0, count); +} + +void TIMER_ClockHRetrace(void) +{ + if(Timers[1].Mode & 0x100) + ClockTimer(1, 1); +} + +pscpu_timestamp_t TIMER_Update(const pscpu_timestamp_t timestamp) +{ + int32 cpu_clocks = timestamp - lastts; + + for(int i = 0; i < 3; i++) + { + uint32 timer_clocks = cpu_clocks; + + if(Timers[i].Mode & 0x100) + continue; + + ClockTimer(i, timer_clocks); + } + + lastts = timestamp; + + return(timestamp + CalcNextEvent(1024)); +} + +static void CalcCountingStart(unsigned which) +{ + Timers[which].DoZeCounting = true; + + switch(which) + { + case 1: + switch(Timers[which].Mode & 0x07) + { + case 0x1: + Timers[which].DoZeCounting = !vblank; + break; + + case 0x5: + Timers[which].DoZeCounting = vblank; + break; + + case 0x7: + Timers[which].DoZeCounting = -1; + break; + } + break; + + + } +} + +void TIMER_Write(const pscpu_timestamp_t timestamp, uint32 A, uint16 V) +{ + TIMER_Update(timestamp); + + int which = (A >> 4) & 0x3; + + V <<= (A & 3) * 8; + + PSX_DBGINFO("[TIMER] Write: %08x %04x\n", A, V); + + if(which >= 3) + return; + + // TODO: See if the "Timers[which].Counter" part of the IRQ if() statements below is what a real PSX does. + switch(A & 0xC) + { + case 0x0: Timers[which].IRQDone = false; +#if 1 + if(Timers[which].Counter && (V & 0xFFFF) == 0) + { + Timers[which].Mode |= 0x0800; + if((Timers[which].Mode & 0x10) && !Timers[which].IRQDone) + { + Timers[which].IRQDone = true; + IRQ_Assert(IRQ_TIMER_0 + which, true); + IRQ_Assert(IRQ_TIMER_0 + which, false); + } + } +#endif + Timers[which].Counter = V & 0xFFFF; + break; + + case 0x4: Timers[which].Mode = (V & 0x3FF) | (Timers[which].Mode & 0x1C00); + Timers[which].IRQDone = false; +#if 1 + if(Timers[which].Counter) + { + Timers[which].Mode |= 0x0800; + if((Timers[which].Mode & 0x10) && !Timers[which].IRQDone) + { + Timers[which].IRQDone = true; + IRQ_Assert(IRQ_TIMER_0 + which, true); + IRQ_Assert(IRQ_TIMER_0 + which, false); + } + } + Timers[which].Counter = 0; +#endif + CalcCountingStart(which); // Call after setting .Mode + break; + + case 0x8: Timers[which].Target = V & 0xFFFF; + break; + + case 0xC: // Open bus + break; + } + + // TIMER_Update(timestamp); + + PSX_SetEventNT(PSX_EVENT_TIMER, timestamp + CalcNextEvent(1024)); +} + +uint16 TIMER_Read(const pscpu_timestamp_t timestamp, uint32 A) +{ + uint16 ret = 0; + int which = (A >> 4) & 0x3; + + if(which >= 3) + { + PSX_WARNING("[TIMER] Open Bus Read: 0x%08x", A); + + return(ret >> ((A & 3) * 8)); + } + + TIMER_Update(timestamp); + + switch(A & 0xC) + { + case 0x0: ret = Timers[which].Counter; + break; + + case 0x4: ret = Timers[which].Mode; + Timers[which].Mode &= ~0x1800; + break; + + case 0x8: ret = Timers[which].Target; + break; + + case 0xC: PSX_WARNING("[TIMER] Open Bus Read: 0x%08x", A); + break; + } + + return(ret >> ((A & 3) * 8)); +} + + +void TIMER_ResetTS(void) +{ + lastts = 0; +} + + +void TIMER_Power(void) +{ + lastts = 0; + + hretrace = false; + vblank = false; + memset(Timers, 0, sizeof(Timers)); +} + +int TIMER_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { +#define SFTIMER(n) SFVARN(Timers[n].Mode, #n "Mode"), \ + SFVARN(Timers[n].Counter, #n "Counter"), \ + SFVARN(Timers[n].Target, #n "Target"), \ + SFVARN(Timers[n].Div8Counter, #n "Div8Counter"), \ + SFVARN(Timers[n].IRQDone, #n "IRQDone") + SFTIMER(0), + SFTIMER(1), + SFTIMER(2), +#undef SFTIMER + SFVAR(lastts), + SFEND + }; + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "TIMER"); + + if(load) + { + + } + + return(ret); +} + +uint32 TIMER_GetRegister(unsigned int which, char *special, const uint32 special_len) +{ + int tw = (which >> 4) & 0x3; + uint32 ret = 0; + + switch(which & 0xF) + { + case TIMER_GSREG_COUNTER0: + ret = Timers[tw].Counter; + break; + + case TIMER_GSREG_MODE0: + ret = Timers[tw].Mode; + break; + + case TIMER_GSREG_TARGET0: + ret = Timers[tw].Target; + break; + } + + return(ret); +} + +void TIMER_SetRegister(unsigned int which, uint32 value) +{ + int tw = (which >> 4) & 0x3; + + switch(which & 0xF) + { + case TIMER_GSREG_COUNTER0: + Timers[tw].Counter = value & 0xFFFF; + break; + + case TIMER_GSREG_MODE0: + Timers[tw].Mode = value & 0xFFFF; + break; + + case TIMER_GSREG_TARGET0: + Timers[tw].Target = value & 0xFFFF; + break; + } + +} + + +} diff --git a/libmednahawk/src/psx/timer.h b/libmednahawk/src/psx/timer.h new file mode 100644 index 0000000000..13e4aa7008 --- /dev/null +++ b/libmednahawk/src/psx/timer.h @@ -0,0 +1,42 @@ +#ifndef __MDFN_PSX_TIMER_H +#define __MDFN_PSX_TIMER_H + +namespace MDFN_IEN_PSX +{ + +enum +{ + TIMER_GSREG_COUNTER0 = 0x00, + TIMER_GSREG_MODE0, + TIMER_GSREG_TARGET0, + + TIMER_GSREG_COUNTER1 = 0x10, + TIMER_GSREG_MODE1, + TIMER_GSREG_TARGET1, + + TIMER_GSREG_COUNTER2 = 0x20, + TIMER_GSREG_MODE2, + TIMER_GSREG_TARGET2, +}; + +uint32 TIMER_GetRegister(unsigned int which, char *special, const uint32 special_len); +void TIMER_SetRegister(unsigned int which, uint32 value); + + +void TIMER_Write(const pscpu_timestamp_t timestamp, uint32 A, uint16 V); +uint16 TIMER_Read(const pscpu_timestamp_t timestamp, uint32 A); + +void TIMER_AddDotClocks(uint32 count); +void TIMER_ClockHRetrace(void); +void TIMER_SetHRetrace(bool status); +void TIMER_SetVBlank(bool status); + +pscpu_timestamp_t TIMER_Update(const pscpu_timestamp_t); +void TIMER_ResetTS(void); + +void TIMER_Power(void); +int TIMER_StateAction(StateMem *sm, int load, int data_only); + +} + +#endif diff --git a/libmednahawk/src/qtrecord.cpp b/libmednahawk/src/qtrecord.cpp new file mode 100644 index 0000000000..0fa53ee56b --- /dev/null +++ b/libmednahawk/src/qtrecord.cpp @@ -0,0 +1,997 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include "endian.h" +#include "qtrecord.h" +#include "compress/minilzo.h" +#include "video/png.h" + +#include +#include + +void QTRecord::w8(uint8 val) +{ + qtfile.put_char(val); +} + +void QTRecord::w16(uint16 val) +{ + uint8 buf[2]; + + MDFN_en16msb(buf, val); + + qtfile.write(buf, sizeof(buf)); +} + +void QTRecord::w32(uint32 val) +{ + uint8 buf[4]; + + MDFN_en32msb(buf, val); + + qtfile.write(buf, sizeof(buf)); +} + +void QTRecord::w32s(const char *str) +{ + uint8 buf[4]; + + memset(buf, 0x20, sizeof(buf)); + + for(unsigned int i = 0; i < sizeof(buf); i++) + { + if(!str[i]) + break; + + buf[i] = str[i]; + } + + qtfile.write(buf, sizeof(buf)); +} + +void QTRecord::w64s(const char *str) +{ + uint8 buf[8]; + + memset(buf, 0x20, sizeof(buf)); + + for(unsigned int i = 0; i < sizeof(buf); i++) + { + if(!str[i]) + break; + + buf[i] = str[i]; + } + + qtfile.write(buf, sizeof(buf)); +} + + +void QTRecord::w64(uint64 val) +{ + uint8 buf[8]; + + MDFN_en64msb(buf, val); + + qtfile.write(buf, sizeof(buf)); +} + +// max_len doesn't include the leading 1-byte count +// returns number of bytes written. +uint32 QTRecord::wps(const char *str, uint32 max_len) +{ + //zero 07-feb-2012 - remove dynamic stack buffer + + if(!max_len) // Variable-size pascal string + { + max_len = strlen(str); + if(max_len > 255) + max_len = 255; + } + + uint32 count = strlen(str); + int sizeof_buf = 1+max_len; + char *buf = new char[sizeof_buf]; + + memset(buf, 0, sizeof_buf); + + if(count > max_len) + count = max_len; + + strncpy(buf + 1, str, count); + + buf[0] = count; + + qtfile.write(buf, sizeof_buf); + + delete[] buf; + return(sizeof_buf); +} + +void QTRecord::vardata_begin(void) +{ + vardata_foffsets.push_back(qtfile.tell()); + + w32(0); // Overwritten in vardata_end() +} + +void QTRecord::vardata_end(void) +{ + int64 cur_offset = qtfile.tell(); + int64 start_offset = vardata_foffsets.back(); + + vardata_foffsets.pop_back(); + + qtfile.seek(start_offset, SEEK_SET); + w32(cur_offset - start_offset); + + //printf("%d\n", cur_offset - start_offset); + + qtfile.seek(cur_offset, SEEK_SET); +} + +void QTRecord::atom_begin(uint32 type, bool small_atom) +{ + //small_atom = true; // DEBUG, REMOVE ME + + atom_foffsets.push_back(qtfile.tell()); + atom_smalls.push_back(small_atom); + + if(small_atom) + { + w32(0); + w32(type); + } + else + { + w32(0x00000001); + w32(type); + w64(0); + } +} + + +void QTRecord::atom_begin(const char *type, bool small_atom) +{ + uint32 type_num = 0; + + for(int i = 0; i < 4; i++) + { + if(!type[i]) + break; + + type_num |= (uint32)type[i] << ((3 - i) * 8); + } + atom_begin(type_num, small_atom); +} + +void QTRecord::atom_end(void) +{ + int64 cur_offset = qtfile.tell(); + int64 start_offset = atom_foffsets.back(); + bool small_atom = atom_smalls.back(); + + atom_foffsets.pop_back(); + atom_smalls.pop_back(); + + if(small_atom) + { + qtfile.seek(start_offset, SEEK_SET); + w32(cur_offset - start_offset); + } + else + { + qtfile.seek(start_offset + 8, SEEK_SET); + + w64(cur_offset - start_offset); + } + + qtfile.seek(cur_offset, SEEK_SET); +} + +QTRecord::QTRecord(const char *path, const VideoSpec &spec) : qtfile(path, FileWrapper::MODE_WRITE_SAFE) +{ + Finished = false; + + SoundFramesWritten = 0; + + SoundRate = spec.SoundRate; + SoundChan = spec.SoundChan; + + QTVideoWidth = spec.VideoWidth; + QTVideoHeight = spec.VideoHeight; + + A = 65536 * spec.AspectXAdjust; + D = 65536 * spec.AspectYAdjust; + + VideoCodec = spec.VideoCodec; + + if(VideoCodec == VCODEC_PNG) + RawVideoBuffer.resize((1 + QTVideoWidth * 3) * QTVideoHeight); + else + RawVideoBuffer.resize(QTVideoWidth * QTVideoHeight * 3); + + if(VideoCodec == VCODEC_CSCD) + CompressedVideoBuffer.resize((RawVideoBuffer.size() * 110 + 99 ) / 100); // 1.10 + else if(VideoCodec == VCODEC_PNG) + CompressedVideoBuffer.resize(compressBound(RawVideoBuffer.size())); + + { + int64 unixy_time = time(NULL); + uint32 appley_time; + + //if(unixy_time == (time_t)-1) // TODO: handle error + + //printf("%d\n", unixy_time); + + appley_time = unixy_time + 2082844800; + + CreationTS = appley_time; + ModificationTS = appley_time; + } + + Write_ftyp(); + + atom_begin("mdat", false); +} + + +void QTRecord::WriteFrame(const MDFN_Surface *surface, const MDFN_Rect &DisplayRect, const MDFN_Rect *LineWidths, + const int16 *SoundBuf, const int32 SoundBufSize) +{ + QTChunk qts; + + memset(&qts, 0, sizeof(qts)); + + if(DisplayRect.h <= 0) + { + fprintf(stderr, "[BUG] qtrecord.cpp: DisplayRect.h <= 0\n"); + return; + } + + + qts.video_foffset = qtfile.tell(); + + // Write video here + { + uint32 dest_y = 0; + int yscale_factor = QTVideoHeight / DisplayRect.h; + + for(int y = DisplayRect.y; y < DisplayRect.y + DisplayRect.h; y++) + { + int x_start; + int width; + int xscale_factor; + int32 dest_x; + uint32 *src_ptr; + uint8 *dest_line; + + if(dest_y >= QTVideoHeight) + break; + + if(VideoCodec == VCODEC_CSCD) + dest_line = &RawVideoBuffer[(QTVideoHeight - 1 - dest_y) * QTVideoWidth * 3]; + else if(VideoCodec == VCODEC_PNG) + dest_line = &RawVideoBuffer[dest_y * (QTVideoWidth * 3 + 1)]; + else + dest_line = &RawVideoBuffer[dest_y * QTVideoWidth * 3]; + + if(LineWidths[0].w == ~0) + { + x_start = DisplayRect.x; + width = DisplayRect.w; + } + else + { + x_start = LineWidths[y].x; + width = LineWidths[y].w; + } + + xscale_factor = QTVideoWidth / width; + + dest_x = 0; + + src_ptr = surface->pixels + y * surface->pitchinpix + x_start; + + if(VideoCodec == VCODEC_PNG) + { + *dest_line = 0; + dest_line++; + } + +#if 0 + while(dest_x < ((QTVideoWidth - (xscale_factor * width)) / 2)) + { + dest_line[dest_x * 3 + 0] = 0; + dest_line[dest_x * 3 + 1] = 0; + dest_line[dest_x * 3 + 2] = 0; + + dest_x++; + } +#endif + + for(int x = x_start; x < x_start + width; x++) + { + for(int sub_x = 0; sub_x < xscale_factor; sub_x++) + { + if(dest_x < QTVideoWidth) + { + int r, g, b, a; + + surface->DecodeColor(*src_ptr, r, g, b, a); + + if(VideoCodec == VCODEC_CSCD) + { + dest_line[dest_x * 3 + 0] = b; + dest_line[dest_x * 3 + 1] = g; + dest_line[dest_x * 3 + 2] = r; + } + else + { + dest_line[dest_x * 3 + 0] = r; + dest_line[dest_x * 3 + 1] = g; + dest_line[dest_x * 3 + 2] = b; + } + + dest_x++; + } + } + src_ptr++; + } + + while(dest_x < QTVideoWidth) + { + dest_line[dest_x * 3 + 0] = 0; + dest_line[dest_x * 3 + 1] = 0; + dest_line[dest_x * 3 + 2] = 0; + + dest_x++; + } + + for(int sub_y = 1; sub_y < yscale_factor; sub_y++) + { + if((dest_y + sub_y) >= QTVideoHeight) + break; + + if(VideoCodec == VCODEC_CSCD) + memcpy(&RawVideoBuffer[(QTVideoHeight - 1 - (dest_y + sub_y)) * QTVideoWidth * 3], dest_line, QTVideoWidth * 3); + else if(VideoCodec == VCODEC_PNG) + memcpy(&RawVideoBuffer[(dest_y + sub_y) * (QTVideoWidth * 3 + 1)], dest_line - 1, QTVideoWidth * 3 + 1); + else + memcpy(&RawVideoBuffer[(dest_y + sub_y) * QTVideoWidth * 3], dest_line, QTVideoWidth * 3); + } + + dest_y += yscale_factor; + } // end for(int y = DisplayRect.y; y < DisplayRect.y + DisplayRect.h; y++) + } + + if(VideoCodec == VCODEC_CSCD) + { + static uint8 workmem[LZO1X_1_MEM_COMPRESS]; + lzo_uint dst_len = CompressedVideoBuffer.size(); + + qtfile.put_char((0 << 1) | 0x1); + qtfile.put_char(0); + + lzo1x_1_compress(&RawVideoBuffer[0], RawVideoBuffer.size(), &CompressedVideoBuffer[0], &dst_len, workmem); + + qtfile.write(&CompressedVideoBuffer[0], dst_len); + } + else if(VideoCodec == VCODEC_RAW) + qtfile.write(&RawVideoBuffer[0], RawVideoBuffer.size()); + else if(VideoCodec == VCODEC_PNG) + { + //PNGWrite(qtfile, surface, DisplayRect, LineWidths); + static const uint8 png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; + uint8 IHDR[13]; + uLongf compress_buffer_size; + + qtfile.write(png_sig, sizeof(png_sig)); + + MDFN_en32msb(&IHDR[0], QTVideoWidth); + MDFN_en32msb(&IHDR[4], QTVideoHeight); + + IHDR[8] = 8; // 8 bits per color component + IHDR[9] = 2; // Color type: RGB triplet(no alpha) + IHDR[10] = 0; // Compression: deflate + IHDR[11] = 0; // Basic adaptive filter set + IHDR[12] = 0; // No interlace + + + PNGWrite::WriteChunk(qtfile, 13, "IHDR", IHDR); + + compress_buffer_size = CompressedVideoBuffer.size(); + + compress(&CompressedVideoBuffer[0], &compress_buffer_size, &RawVideoBuffer[0], RawVideoBuffer.size()); + + PNGWrite::WriteChunk(qtfile, compress_buffer_size, "IDAT", &CompressedVideoBuffer[0]); + + PNGWrite::WriteChunk(qtfile, 0, "IEND", 0); + } + + + + qts.video_byte_size = qtfile.tell() - qts.video_foffset; + + + + qts.audio_foffset = qtfile.tell(); + + // Write audio here + { + //zero 07-feb-2012 - remove dynamic stack buffer + int sizeof_abuf = SoundBufSize * SoundChan*2; + int16 *abuf = new int16[sizeof_abuf/2]; + + for(int i = 0; i < SoundBufSize * SoundChan; i++) + MDFN_en16msb((uint8 *)&abuf[i], SoundBuf[i]); + + qtfile.write(abuf, sizeof_abuf); + delete[] abuf; + } + + qts.audio_byte_size = qtfile.tell() - qts.audio_foffset; + + + QTChunks.push_back(qts); + + SoundFramesWritten += SoundBufSize; +} + +void QTRecord::Write_ftyp(void) // Leaf +{ + atom_begin("ftyp"); + + w32s("qt "); // Major brand + + w32(0x20070900); // Minor_Version + + w32s("qt "); // Compatible brand + + // Placeholders to get the mdat start at 0x20 for prettiness(and libquicktime does it, I don't know if it has another reason). + w32(0); + w32(0); + w32(0); + + atom_end(); +} + +void QTRecord::Write_mvhd(void) // Leaf +{ + atom_begin("mvhd"); + + w32(0); // Version/flags + w32(CreationTS); // Created Mac date + w32(ModificationTS); // Modified Mac date + w32(SoundRate); // Time scale + + w32(SoundFramesWritten); // Duration + w32(65536 * 1); // Preferred rate + w16(256 * 1); // Preferred volume + + for(int i = 0; i < 5; i++) + w16(0); // Reserved(5 * 2 = 10) + + w32(65536 * 1); // A + w32(0); // B + w32(0); // U + w32(0); // C + w32(65536 * 1); // D + w32(0); // V + w32(0); // X + w32(0); // Y + w32(1 << 30); // W + + w32(0); // Preview time + w32(0); // Preview duration + + w32(0); // Poster time + + w32(0); // Selection time. + w32(SoundFramesWritten); // Selection duration. + + w32(0); // Current time + + w32(3); // Next track id + + atom_end(); +} + +void QTRecord::Write_tkhd(void) // Leaf +{ + atom_begin("tkhd"); + + w32(0xF); // Version and flags + + w32(CreationTS); // Created mac date + w32(ModificationTS); // Modified mac date + + if(OnAudioTrack) + w32(2); + else + w32(1); // Track id + + w32(0); // Reserved + + w32(SoundFramesWritten); // Duration + + w64(0); // Reserved + + w16(0); // Video layer. + w16(0); // Alternate/other + w16(256); // Track audio volume + w16(0); // Reserved + + w32(A); // A + w32(0); // B + w32(0); // U + w32(0); // C + w32(D); // D + w32(0); // V + w32(0); // X + w32(0); // Y + w32(1 << 30); // W + + w32(65536 * QTVideoWidth); + w32(65536 * QTVideoHeight); + + atom_end(); +} + +// Sample description +void QTRecord::Write_stsd(void) // Leaf +{ + atom_begin("stsd"); + + w32(0); // Version and flags + + w32(1); // Number of sample descriptions + + if(OnAudioTrack) // Audio track + { + vardata_begin(); // w32(36) + + w32s("twos"); // Data format + + w32(0); // Reserved + w16(0); // Reserved + + w16(1); // dref index? + + w16(0); // Version + w16(0); // Revision level + + w32s("MDFN"); // Vendor + + w16(SoundChan); // Number of sound channels + w16(16); // Sample size + w16(0); // Audio compression ID + w16(0); // Audio packet rate + w32(SoundRate * 65536); // Audio sample rate + + vardata_end(); + } + else // Video track + { + vardata_begin(); // w32(86 + 12); // Description length (+12 for gama) + + if(VideoCodec == VCODEC_CSCD) + w32s("CSCD"); // Data format + else if(VideoCodec == VCODEC_PNG) + w32s("png "); + else + w32s("raw "); // Data format + + w32(0); // Reserved + w16(0); // Reserved + + w16(1); // dref index? + + w16(0); // Version + w16(0); // Revision level + + w32s("MDFN"); // Vendor + + w32(1024); // Video temporal quality + w32(1024); // Video spatial quality + + w16(QTVideoWidth); // Width of source image + w16(QTVideoHeight); // Height of source image + + w32(48 * 65536); // Horizontal PPI(FIXME) + + w32(48 * 65536); // Vertical PPI(FIXME) + + w32(0); // Data size must be set to 0 + + w16(1); // Frame count(per sample) + + wps("Mednafen " MEDNAFEN_VERSION, 31); // Video encoder + + w16(24); // Depth + + w16(0xFFFF); // Color table ID + + atom_begin("gama"); + w32(65536 * 2.2); + atom_end(); + + vardata_end(); + } + + atom_end(); +} + +// Time-to-sample +void QTRecord::Write_stts(void) // Leaf +{ + atom_begin("stts"); + + w32(0); // Version and flags + + if(OnAudioTrack) + { + w32(1); // Number of entries + + // Entry + w32(SoundFramesWritten); + w32(1); + } + else + { + w32(QTChunks.size()); // number of entries + + for(uint32 i = 0; i < QTChunks.size(); i++) + { + w32(1); + w32(QTChunks[i].audio_byte_size / SoundChan / sizeof(int16)); + } + } + + atom_end(); +} + +// Sample-to-chunk +void QTRecord::Write_stsc(void) // Leaf +{ + atom_begin("stsc"); + + w32(0); // Version and flags + + if(OnAudioTrack) + { + w32(QTChunks.size()); // Number of entries + for(uint32 i = 0; i < QTChunks.size(); i++) + { + w32(1 + i); // First chunk number using this entry + w32(QTChunks[i].audio_byte_size / SoundChan / sizeof(int16)); // Samples per chunk + w32(1); // Sample description ID(references stsd) + } + } + else + { + w32(1); // Number of entries + w32(1); // First chunk + w32(1); // Samples per chunk + w32(1); // Sample description ID(references data in stsd) + } + + atom_end(); +} + +void QTRecord::Write_stsz(void) // Leaf +{ + atom_begin("stsz"); + + w32(0); // Version and flags + + if(OnAudioTrack) + { + w32(1); + w32(SoundFramesWritten); + } + else + { + w32(0); // Sample size + + w32(QTChunks.size()); // Number of entries + + for(uint32 i = 0; i < QTChunks.size(); i++) + { + if(OnAudioTrack) + w32(QTChunks[i].audio_byte_size); + else + w32(QTChunks[i].video_byte_size); + } + } + + atom_end(); +} + +// Chunk offset atom(64-bit style) +void QTRecord::Write_co64(void) // Leaf +{ + atom_begin("co64"); + + w32(0); // Version and flags + + w32(QTChunks.size()); // Number of entries + + for(uint32 i = 0; i < QTChunks.size(); i++) + { + if(OnAudioTrack) + w64(QTChunks[i].audio_foffset); + else + w64(QTChunks[i].video_foffset); + } + + atom_end(); +} + +void QTRecord::Write_stco(void) // Leaf +{ + atom_begin("stco"); + + w32(0); // Version and flags + + w32(QTChunks.size()); // Number of entries + + for(uint32 i = 0; i < QTChunks.size(); i++) + { + if(OnAudioTrack) + w32(QTChunks[i].audio_foffset); + else + w32(QTChunks[i].video_foffset); + } + + atom_end(); +} + +void QTRecord::Write_stbl(void) +{ + atom_begin("stbl"); + + Write_stsd(); + + Write_stts(); + + Write_stsc(); + + Write_stsz(); + + bool need64bit_offset = false; + + if(OnAudioTrack && QTChunks.back().audio_foffset >= ((int64)1 << 32)) + need64bit_offset = true; + + if(!OnAudioTrack && QTChunks.back().video_foffset >= ((int64)1 << 32)) + need64bit_offset = true; + + if(need64bit_offset) + Write_co64(); + else + Write_stco(); + + atom_end(); +} + +// Media header atom +void QTRecord::Write_mdhd(void) // Leaf +{ + atom_begin("mdhd"); + + w32(0); // Version/flags + w32(CreationTS); // Creation date + w32(ModificationTS); // Modification date + w32(SoundRate); // Time scale + w32(SoundFramesWritten); // Duration + + w16(0); // Language + w16(0); // Quality + + atom_end(); +} + +// Sound media information header +void QTRecord::Write_smhd(void) // Leaf +{ + atom_begin("smhd"); + w32(0x1); // Version/flags + w16(0); // Balance + w16(0); // Reserved + + atom_end(); +} + +// Video media information header +void QTRecord::Write_vmhd(void) // Leaf +{ + atom_begin("vmhd"); + + w32(0x1); // Version/flags + + w16(0); // Quickdraw graphics mode (Simple Copy, no dither) + + // RGB values(unused I guess in simple copy?) + w16(0x8000); + w16(0x8000); + w16(0x8000); + + atom_end(); +} + +void QTRecord::Write_hdlr(const char *str, const char *comp_name) // Leaf +{ + atom_begin("hdlr"); + + w32(0); // Version/flags + + w64s(str); + + w32(0); // Reserved + + w32(0); // reserved + + w32(0); // Reserved + + wps(comp_name, 0); + + atom_end(); +} + +void QTRecord::Write_dinf(void) +{ + atom_begin("dinf"); + + atom_begin("dref"); + + w32(0); // Version/flags + w32(1); // Number of references + + atom_begin("alis"); + w32(0x00000001); // Version/flags + atom_end(); + + atom_end(); + + atom_end(); +} + +void QTRecord::Write_minf(void) +{ + atom_begin("minf"); + + if(OnAudioTrack) + Write_smhd(); + else + Write_vmhd(); + + Write_hdlr("dhlralis", "Mednafen Alias Data Handler"); + + Write_dinf(); + + Write_stbl(); + + atom_end(); +} + +void QTRecord::Write_mdia(void) +{ + atom_begin("mdia"); + + Write_mdhd(); + + if(OnAudioTrack) + Write_hdlr("mhlrsoun", "Mednafen Sound Media Handler"); + else + Write_hdlr("mhlrvide", "Mednafen Video Media Handler"); + + Write_minf(); + + atom_end(); +} + +void QTRecord::Write_edts(void) +{ + atom_begin("edts"); + + atom_begin("elst"); + w32(0); // version/flags + w32(1); // Number of edits + w32(SoundFramesWritten); // Duration + w32(0); // start time + w32(65536 * 1); // Rate + atom_end(); + + atom_end(); +} + +void QTRecord::Write_trak(void) +{ + atom_begin("trak"); + + Write_tkhd(); + + Write_edts(); + + Write_mdia(); + + atom_end(); +} + +void QTRecord::Write_udta(void) +{ + atom_begin("udta"); + + atom_begin("@fmt"); + + qtfile.put_string("Computer-generated via an emulator."); + + atom_end(); + + atom_begin("@swr"); + + qtfile.put_string("Mednafen " MEDNAFEN_VERSION " -- qtrecord.cpp compiled " __DATE__ " " __TIME__); + + atom_end(); + + atom_end(); +} + +void QTRecord::Write_moov(void) +{ + atom_begin("moov"); + + Write_mvhd(); + + OnAudioTrack = false; + Write_trak(); + + OnAudioTrack = true; + Write_trak(); + + Write_udta(); + + atom_end(); +} + +void QTRecord::Finish(void) +{ + if(Finished) + return; + + Finished = true; + + atom_end(); + + Write_moov(); + + qtfile.close(); +} + +QTRecord::~QTRecord(void) +{ + try + { + Finish(); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + } +} diff --git a/libmednahawk/src/qtrecord.h b/libmednahawk/src/qtrecord.h new file mode 100644 index 0000000000..7521e32064 --- /dev/null +++ b/libmednahawk/src/qtrecord.h @@ -0,0 +1,116 @@ +#ifndef __MDFN_QTRECORD_H +#define __MDFN_QTRECORD_H + +#include "mednafen.h" +#include "FileWrapper.h" + +#include +#include + +class QTRecord +{ + public: + + enum + { + VCODEC_RAW = 0, + VCODEC_CSCD, + VCODEC_PNG + }; + + struct VideoSpec + { + uint32 SoundRate; + uint32 SoundChan; // Number of sound channels + + uint32 VideoWidth; + uint32 VideoHeight; + + double AspectXAdjust; + double AspectYAdjust; + + int VideoCodec; + }; + + QTRecord(const char *path, const VideoSpec &spec_arg); + void Finish(); + ~QTRecord(); + + void WriteFrame(const MDFN_Surface *surface, const MDFN_Rect &DisplayRect, const MDFN_Rect *LineWidths, + const int16 *SoundBuf, const int32 SoundBufSize); + private: + + void w8(uint8 val); + void w16(uint16 val); + void w32(uint32 val); + void w32s(const char *str); + void w64s(const char *str); + void w64(uint64 val); + uint32 wps(const char *str, uint32 max_len); + void atom_begin(uint32 type, bool small_atom = true); + void atom_begin(const char *type, bool small_atom = true); + void atom_end(void); + + void vardata_begin(void); + void vardata_end(void); + + void Write_ftyp(void); + void Write_mvhd(void); + void Write_tkhd(void); + void Write_stsd(void); + void Write_stts(void); + void Write_stsc(void); + void Write_stsz(void); + void Write_co64(void); + void Write_stco(void); + void Write_stbl(void); + void Write_mdhd(void); + void Write_smhd(void); + void Write_vmhd(void); + void Write_hdlr(const char *str, const char *comp_name); + void Write_dinf(void); + void Write_minf(void); + void Write_mdia(void); + void Write_edts(void); + void Write_trak(void); + void Write_udta(void); + void Write_moov(void); + + + FileWrapper qtfile; + + std::vector RawVideoBuffer; + std::vector CompressedVideoBuffer; + + std::list atom_smalls; + std::list atom_foffsets; + std::list vardata_foffsets; + bool OnAudioTrack; // Yay spaghetti code power. + + struct QTChunk + { + int64 video_foffset; + int64 video_byte_size; + + int64 audio_foffset; + int64 audio_byte_size; + }; + + int VideoCodec; + uint32 QTVideoWidth; + uint32 QTVideoHeight; + uint32 SoundRate; + uint32 SoundChan; + uint32 A; + uint32 D; + + uint32 CreationTS; + uint32 ModificationTS; + + std::vector QTChunks; + uint64 SoundFramesWritten; + + bool Finished; +}; + +#endif diff --git a/libmednahawk/src/resampler/Makefile.am.inc b/libmednahawk/src/resampler/Makefile.am.inc new file mode 100644 index 0000000000..dea6c66770 --- /dev/null +++ b/libmednahawk/src/resampler/Makefile.am.inc @@ -0,0 +1 @@ +mednafen_SOURCES += resampler/resample.c diff --git a/libmednahawk/src/resampler/arch.h b/libmednahawk/src/resampler/arch.h new file mode 100644 index 0000000000..62302254e8 --- /dev/null +++ b/libmednahawk/src/resampler/arch.h @@ -0,0 +1,239 @@ +/* Copyright (C) 2003 Jean-Marc Valin */ +/** + @file arch.h + @brief Various architecture definitions Speex +*/ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Xiph.org Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef ARCH_H +#define ARCH_H + +#ifndef SPEEX_VERSION +#define SPEEX_MAJOR_VERSION 1 /**< Major Speex version. */ +#define SPEEX_MINOR_VERSION 1 /**< Minor Speex version. */ +#define SPEEX_MICRO_VERSION 15 /**< Micro Speex version. */ +#define SPEEX_EXTRA_VERSION "" /**< Extra Speex version. */ +#define SPEEX_VERSION "speex-1.2beta3" /**< Speex version string. */ +#endif + +/* A couple test to catch stupid option combinations */ +#ifdef FIXED_POINT + +#ifdef FLOATING_POINT +#error You cannot compile as floating point and fixed point at the same time +#endif +#ifdef _USE_SSE +#error SSE is only for floating-point +#endif +#if ((defined (ARM4_ASM)||defined (ARM4_ASM)) && defined(BFIN_ASM)) || (defined (ARM4_ASM)&&defined(ARM5E_ASM)) +#error Make up your mind. What CPU do you have? +#endif +#ifdef VORBIS_PSYCHO +#error Vorbis-psy model currently not implemented in fixed-point +#endif + +#else + +#ifndef FLOATING_POINT +#error You now need to define either FIXED_POINT or FLOATING_POINT +#endif +#if defined (ARM4_ASM) || defined(ARM5E_ASM) || defined(BFIN_ASM) +#error I suppose you can have a [ARM4/ARM5E/Blackfin] that has float instructions? +#endif +#ifdef FIXED_POINT_DEBUG +#error "Don't you think enabling fixed-point is a good thing to do if you want to debug that?" +#endif + + +#endif + +#ifndef OUTSIDE_SPEEX +#include "speex/speex_types.h" +#endif + +#define ABS(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute integer value. */ +#define ABS16(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute 16-bit value. */ +#define MIN16(a,b) ((a) < (b) ? (a) : (b)) /**< Maximum 16-bit value. */ +#define MAX16(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum 16-bit value. */ +#define ABS32(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute 32-bit value. */ +#define MIN32(a,b) ((a) < (b) ? (a) : (b)) /**< Maximum 32-bit value. */ +#define MAX32(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum 32-bit value. */ + +#ifdef FIXED_POINT + +typedef spx_int16_t spx_word16_t; +typedef spx_int32_t spx_word32_t; +typedef spx_word32_t spx_mem_t; +typedef spx_word16_t spx_coef_t; +typedef spx_word16_t spx_lsp_t; +typedef spx_word32_t spx_sig_t; + +#define Q15ONE 32767 + +#define LPC_SCALING 8192 +#define SIG_SCALING 16384 +#define LSP_SCALING 8192. +#define GAMMA_SCALING 32768. +#define GAIN_SCALING 64 +#define GAIN_SCALING_1 0.015625 + +#define LPC_SHIFT 13 +#define LSP_SHIFT 13 +#define SIG_SHIFT 14 +#define GAIN_SHIFT 6 + +#define VERY_SMALL 0 +#define VERY_LARGE32 ((spx_word32_t)2147483647) +#define VERY_LARGE16 ((spx_word16_t)32767) +#define Q15_ONE ((spx_word16_t)32767) + + +#ifdef FIXED_DEBUG +#include "fixed_debug.h" +#else + +#include "fixed_generic.h" + +#ifdef ARM5E_ASM +#include "fixed_arm5e.h" +#elif defined (ARM4_ASM) +#include "fixed_arm4.h" +#elif defined (BFIN_ASM) +#include "fixed_bfin.h" +#endif + +#endif + + +#else + +typedef float spx_mem_t; +typedef float spx_coef_t; +typedef float spx_lsp_t; +typedef float spx_sig_t; +typedef float spx_word16_t; +typedef float spx_word32_t; + +#define Q15ONE 1.0f +#define LPC_SCALING 1.f +#define SIG_SCALING 1.f +#define LSP_SCALING 1.f +#define GAMMA_SCALING 1.f +#define GAIN_SCALING 1.f +#define GAIN_SCALING_1 1.f + + +#define VERY_SMALL 1e-15f +#define VERY_LARGE32 1e15f +#define VERY_LARGE16 1e15f +#define Q15_ONE ((spx_word16_t)1.f) + +#define QCONST16(x,bits) (x) +#define QCONST32(x,bits) (x) + +#define NEG16(x) (-(x)) +#define NEG32(x) (-(x)) +#define EXTRACT16(x) (x) +#define EXTEND32(x) (x) +#define SHR16(a,shift) (a) +#define SHL16(a,shift) (a) +#define SHR32(a,shift) (a) +#define SHL32(a,shift) (a) +#define PSHR16(a,shift) (a) +#define PSHR32(a,shift) (a) +#define VSHR32(a,shift) (a) +#define SATURATE16(x,a) (x) +#define SATURATE32(x,a) (x) + +#define PSHR(a,shift) (a) +#define SHR(a,shift) (a) +#define SHL(a,shift) (a) +#define SATURATE(x,a) (x) + +#define ADD16(a,b) ((a)+(b)) +#define SUB16(a,b) ((a)-(b)) +#define ADD32(a,b) ((a)+(b)) +#define SUB32(a,b) ((a)-(b)) +#define MULT16_16_16(a,b) ((a)*(b)) +#define MULT16_16(a,b) ((spx_word32_t)(a)*(spx_word32_t)(b)) +#define MAC16_16(c,a,b) ((c)+(spx_word32_t)(a)*(spx_word32_t)(b)) + +#define MULT16_32_Q11(a,b) ((a)*(b)) +#define MULT16_32_Q13(a,b) ((a)*(b)) +#define MULT16_32_Q14(a,b) ((a)*(b)) +#define MULT16_32_Q15(a,b) ((a)*(b)) +#define MULT16_32_P15(a,b) ((a)*(b)) + +#define MAC16_32_Q11(c,a,b) ((c)+(a)*(b)) +#define MAC16_32_Q15(c,a,b) ((c)+(a)*(b)) + +#define MAC16_16_Q11(c,a,b) ((c)+(a)*(b)) +#define MAC16_16_Q13(c,a,b) ((c)+(a)*(b)) +#define MAC16_16_P13(c,a,b) ((c)+(a)*(b)) +#define MULT16_16_Q11_32(a,b) ((a)*(b)) +#define MULT16_16_Q13(a,b) ((a)*(b)) +#define MULT16_16_Q14(a,b) ((a)*(b)) +#define MULT16_16_Q15(a,b) ((a)*(b)) +#define MULT16_16_P15(a,b) ((a)*(b)) +#define MULT16_16_P13(a,b) ((a)*(b)) +#define MULT16_16_P14(a,b) ((a)*(b)) + +#define DIV32_16(a,b) (((spx_word32_t)(a))/(spx_word16_t)(b)) +#define PDIV32_16(a,b) (((spx_word32_t)(a))/(spx_word16_t)(b)) +#define DIV32(a,b) (((spx_word32_t)(a))/(spx_word32_t)(b)) +#define PDIV32(a,b) (((spx_word32_t)(a))/(spx_word32_t)(b)) + + +#endif + + +#if defined (CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) + +/* 2 on TI C5x DSP */ +#define BYTES_PER_CHAR 2 +#define BITS_PER_CHAR 16 +#define LOG2_BITS_PER_CHAR 4 + +#else + +#define BYTES_PER_CHAR 1 +#define BITS_PER_CHAR 8 +#define LOG2_BITS_PER_CHAR 3 + +#endif + + + +#ifdef FIXED_DEBUG +extern long long spx_mips; +#endif + + +#endif diff --git a/libmednahawk/src/resampler/fixed_generic.h b/libmednahawk/src/resampler/fixed_generic.h new file mode 100644 index 0000000000..c3a2e17c2f --- /dev/null +++ b/libmednahawk/src/resampler/fixed_generic.h @@ -0,0 +1,106 @@ +/* Copyright (C) 2003 Jean-Marc Valin */ +/** + @file fixed_generic.h + @brief Generic fixed-point operations +*/ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Xiph.org Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef FIXED_GENERIC_H +#define FIXED_GENERIC_H + +#define QCONST16(x,bits) ((spx_word16_t)(.5+(x)*(((spx_word32_t)1)<<(bits)))) +#define QCONST32(x,bits) ((spx_word32_t)(.5+(x)*(((spx_word32_t)1)<<(bits)))) + +#define NEG16(x) (-(x)) +#define NEG32(x) (-(x)) +#define EXTRACT16(x) ((spx_word16_t)(x)) +#define EXTEND32(x) ((spx_word32_t)(x)) +#define SHR16(a,shift) ((a) >> (shift)) +#define SHL16(a,shift) ((a) << (shift)) +#define SHR32(a,shift) ((a) >> (shift)) +#define SHL32(a,shift) ((a) << (shift)) +#define PSHR16(a,shift) (SHR16((a)+((1<<((shift))>>1)),shift)) +#define PSHR32(a,shift) (SHR32((a)+((EXTEND32(1)<<((shift))>>1)),shift)) +#define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift))) +#define SATURATE16(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x))) +#define SATURATE32(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x))) + +#define SHR(a,shift) ((a) >> (shift)) +#define SHL(a,shift) ((spx_word32_t)(a) << (shift)) +#define PSHR(a,shift) (SHR((a)+((EXTEND32(1)<<((shift))>>1)),shift)) +#define SATURATE(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x))) + + +#define ADD16(a,b) ((spx_word16_t)((spx_word16_t)(a)+(spx_word16_t)(b))) +#define SUB16(a,b) ((spx_word16_t)(a)-(spx_word16_t)(b)) +#define ADD32(a,b) ((spx_word32_t)(a)+(spx_word32_t)(b)) +#define SUB32(a,b) ((spx_word32_t)(a)-(spx_word32_t)(b)) + + +/* result fits in 16 bits */ +#define MULT16_16_16(a,b) ((((spx_word16_t)(a))*((spx_word16_t)(b)))) + +/* (spx_word32_t)(spx_word16_t) gives TI compiler a hint that it's 16x16->32 multiply */ +#define MULT16_16(a,b) (((spx_word32_t)(spx_word16_t)(a))*((spx_word32_t)(spx_word16_t)(b))) + +#define MAC16_16(c,a,b) (ADD32((c),MULT16_16((a),(b)))) +#define MULT16_32_Q12(a,b) ADD32(MULT16_16((a),SHR((b),12)), SHR(MULT16_16((a),((b)&0x00000fff)),12)) +#define MULT16_32_Q13(a,b) ADD32(MULT16_16((a),SHR((b),13)), SHR(MULT16_16((a),((b)&0x00001fff)),13)) +#define MULT16_32_Q14(a,b) ADD32(MULT16_16((a),SHR((b),14)), SHR(MULT16_16((a),((b)&0x00003fff)),14)) + +#define MULT16_32_Q11(a,b) ADD32(MULT16_16((a),SHR((b),11)), SHR(MULT16_16((a),((b)&0x000007ff)),11)) +#define MAC16_32_Q11(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),11)), SHR(MULT16_16((a),((b)&0x000007ff)),11))) + +#define MULT16_32_P15(a,b) ADD32(MULT16_16((a),SHR((b),15)), PSHR(MULT16_16((a),((b)&0x00007fff)),15)) +#define MULT16_32_Q15(a,b) ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)) +#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15))) + + +#define MAC16_16_Q11(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),11))) +#define MAC16_16_Q13(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),13))) +#define MAC16_16_P13(c,a,b) (ADD32((c),SHR(ADD32(4096,MULT16_16((a),(b))),13))) + +#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11)) +#define MULT16_16_Q13(a,b) (SHR(MULT16_16((a),(b)),13)) +#define MULT16_16_Q14(a,b) (SHR(MULT16_16((a),(b)),14)) +#define MULT16_16_Q15(a,b) (SHR(MULT16_16((a),(b)),15)) + +#define MULT16_16_P13(a,b) (SHR(ADD32(4096,MULT16_16((a),(b))),13)) +#define MULT16_16_P14(a,b) (SHR(ADD32(8192,MULT16_16((a),(b))),14)) +#define MULT16_16_P15(a,b) (SHR(ADD32(16384,MULT16_16((a),(b))),15)) + +#define MUL_16_32_R15(a,bh,bl) ADD32(MULT16_16((a),(bh)), SHR(MULT16_16((a),(bl)),15)) + +#define DIV32_16(a,b) ((spx_word16_t)(((spx_word32_t)(a))/((spx_word16_t)(b)))) +#define PDIV32_16(a,b) ((spx_word16_t)(((spx_word32_t)(a)+((spx_word16_t)(b)>>1))/((spx_word16_t)(b)))) +#define DIV32(a,b) (((spx_word32_t)(a))/((spx_word32_t)(b))) +#define PDIV32(a,b) (((spx_word32_t)(a)+((spx_word16_t)(b)>>1))/((spx_word32_t)(b))) + +#endif diff --git a/libmednahawk/src/resampler/resample.c b/libmednahawk/src/resampler/resample.c new file mode 100644 index 0000000000..f131ebb2e6 --- /dev/null +++ b/libmednahawk/src/resampler/resample.c @@ -0,0 +1,1158 @@ +/* Copyright (C) 2007-2008 Jean-Marc Valin + Copyright (C) 2008 Thorvald Natvig + + File: resample.c + Arbitrary resampling code + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* + The design goals of this code are: + - Very fast algorithm + - SIMD-friendly algorithm + - Low memory requirement + - Good *perceptual* quality (and not best SNR) + + Warning: This resampler is relatively new. Although I think I got rid of + all the major bugs and I don't expect the API to change anymore, there + may be something I've missed. So use with caution. + + This algorithm is based on this original resampling algorithm: + Smith, Julius O. Digital Audio Resampling Home Page + Center for Computer Research in Music and Acoustics (CCRMA), + Stanford University, 2007. + Web published at http://www-ccrma.stanford.edu/~jos/resample/. + + There is one main difference, though. This resampler uses cubic + interpolation instead of linear interpolation in the above paper. This + makes the table much smaller and makes it possible to compute that table + on a per-stream basis. In turn, being able to tweak the table for each + stream makes it possible to both reduce complexity on simple ratios + (e.g. 2/3), and get rid of the rounding operations in the inner loop. + The latter both reduces CPU time and makes the algorithm more SIMD-friendly. +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* Begin Mednafen modifications */ + +#ifdef ARCH_X86_64 +#define _USE_SSE +#define _USE_SSE2 +#endif + +#ifdef EXPORT + #undef EXPORT +#endif + +#define EXPORT + +#ifdef FIXED_POINT + #undef FIXED_POINT +#endif + +//#define FIXED_POINT 1 +#define FLOATING_POINT 1 + +#define OUTSIDE_SPEEX + +/* End Mednafen modifications */ + +#ifdef OUTSIDE_SPEEX +#include +static void *speex_alloc (int size) {return calloc(size,1);} +static void *speex_realloc (void *ptr, int size) {return realloc(ptr, size);} +static void speex_free (void *ptr) {free(ptr);} + +/* Begin Mednafen modifications */ +#include "resampler.h" +/* End Mednafen modifications */ +#include "arch.h" +#else /* OUTSIDE_SPEEX */ + +#include "speex/speex_resampler.h" +#include "arch.h" +#include "os_support.h" +#endif /* OUTSIDE_SPEEX */ + +#include "stack_alloc.h" +#include + +#ifndef M_PI +#define M_PI 3.14159263 +#endif + +#ifdef FIXED_POINT +#define WORD2INT(x) ((x) < -32767 ? -32768 : ((x) > 32766 ? 32767 : (x))) +#else +#define WORD2INT(x) ((x) < -32767.5f ? -32768 : ((x) > 32766.5f ? 32767 : floor(.5+(x)))) +#endif + +#define IMAX(a,b) ((a) > (b) ? (a) : (b)) +#define IMIN(a,b) ((a) < (b) ? (a) : (b)) + +#ifndef NULL +#define NULL 0 +#endif + +#ifdef _USE_SSE +#include "resample_sse.h" +#endif + +/* Numer of elements to allocate on the stack */ +#ifdef VAR_ARRAYS +#define FIXED_STACK_ALLOC 8192 +#else +#define FIXED_STACK_ALLOC 1024 +#endif + +typedef int (*resampler_basic_func)(SpeexResamplerState *, spx_uint32_t , const spx_word16_t *, spx_uint32_t *, spx_word16_t *, spx_uint32_t *); + +struct SpeexResamplerState_ { + spx_uint32_t in_rate; + spx_uint32_t out_rate; + spx_uint32_t num_rate; + spx_uint32_t den_rate; + + int quality; + spx_uint32_t nb_channels; + spx_uint32_t filt_len; + spx_uint32_t mem_alloc_size; + spx_uint32_t buffer_size; + int int_advance; + int frac_advance; + float cutoff; + spx_uint32_t oversample; + int initialised; + int started; + + /* These are per-channel */ + spx_int32_t *last_sample; + spx_uint32_t *samp_frac_num; + spx_uint32_t *magic_samples; + + spx_word16_t *mem; + spx_word16_t *sinc_table; + spx_uint32_t sinc_table_length; + resampler_basic_func resampler_ptr; + + int in_stride; + int out_stride; +} ; + +static double kaiser12_table[68] = { + 0.99859849, 1.00000000, 0.99859849, 0.99440475, 0.98745105, 0.97779076, + 0.96549770, 0.95066529, 0.93340547, 0.91384741, 0.89213598, 0.86843014, + 0.84290116, 0.81573067, 0.78710866, 0.75723148, 0.72629970, 0.69451601, + 0.66208321, 0.62920216, 0.59606986, 0.56287762, 0.52980938, 0.49704014, + 0.46473455, 0.43304576, 0.40211431, 0.37206735, 0.34301800, 0.31506490, + 0.28829195, 0.26276832, 0.23854851, 0.21567274, 0.19416736, 0.17404546, + 0.15530766, 0.13794294, 0.12192957, 0.10723616, 0.09382272, 0.08164178, + 0.07063950, 0.06075685, 0.05193064, 0.04409466, 0.03718069, 0.03111947, + 0.02584161, 0.02127838, 0.01736250, 0.01402878, 0.01121463, 0.00886058, + 0.00691064, 0.00531256, 0.00401805, 0.00298291, 0.00216702, 0.00153438, + 0.00105297, 0.00069463, 0.00043489, 0.00025272, 0.00013031, 0.0000527734, + 0.00001000, 0.00000000}; +/* +static double kaiser12_table[36] = { + 0.99440475, 1.00000000, 0.99440475, 0.97779076, 0.95066529, 0.91384741, + 0.86843014, 0.81573067, 0.75723148, 0.69451601, 0.62920216, 0.56287762, + 0.49704014, 0.43304576, 0.37206735, 0.31506490, 0.26276832, 0.21567274, + 0.17404546, 0.13794294, 0.10723616, 0.08164178, 0.06075685, 0.04409466, + 0.03111947, 0.02127838, 0.01402878, 0.00886058, 0.00531256, 0.00298291, + 0.00153438, 0.00069463, 0.00025272, 0.0000527734, 0.00000500, 0.00000000}; +*/ +static double kaiser10_table[36] = { + 0.99537781, 1.00000000, 0.99537781, 0.98162644, 0.95908712, 0.92831446, + 0.89005583, 0.84522401, 0.79486424, 0.74011713, 0.68217934, 0.62226347, + 0.56155915, 0.50119680, 0.44221549, 0.38553619, 0.33194107, 0.28205962, + 0.23636152, 0.19515633, 0.15859932, 0.12670280, 0.09935205, 0.07632451, + 0.05731132, 0.04193980, 0.02979584, 0.02044510, 0.01345224, 0.00839739, + 0.00488951, 0.00257636, 0.00115101, 0.00035515, 0.00000000, 0.00000000}; + +static double kaiser8_table[36] = { + 0.99635258, 1.00000000, 0.99635258, 0.98548012, 0.96759014, 0.94302200, + 0.91223751, 0.87580811, 0.83439927, 0.78875245, 0.73966538, 0.68797126, + 0.63451750, 0.58014482, 0.52566725, 0.47185369, 0.41941150, 0.36897272, + 0.32108304, 0.27619388, 0.23465776, 0.19672670, 0.16255380, 0.13219758, + 0.10562887, 0.08273982, 0.06335451, 0.04724088, 0.03412321, 0.02369490, + 0.01563093, 0.00959968, 0.00527363, 0.00233883, 0.00050000, 0.00000000}; + +static double kaiser6_table[36] = { + 0.99733006, 1.00000000, 0.99733006, 0.98935595, 0.97618418, 0.95799003, + 0.93501423, 0.90755855, 0.87598009, 0.84068475, 0.80211977, 0.76076565, + 0.71712752, 0.67172623, 0.62508937, 0.57774224, 0.53019925, 0.48295561, + 0.43647969, 0.39120616, 0.34752997, 0.30580127, 0.26632152, 0.22934058, + 0.19505503, 0.16360756, 0.13508755, 0.10953262, 0.08693120, 0.06722600, + 0.05031820, 0.03607231, 0.02432151, 0.01487334, 0.00752000, 0.00000000}; + +struct FuncDef { + double *table; + int oversample; +}; + +static struct FuncDef _KAISER12 = {kaiser12_table, 64}; +#define KAISER12 (&_KAISER12) +/*static struct FuncDef _KAISER12 = {kaiser12_table, 32}; +#define KAISER12 (&_KAISER12)*/ +static struct FuncDef _KAISER10 = {kaiser10_table, 32}; +#define KAISER10 (&_KAISER10) +static struct FuncDef _KAISER8 = {kaiser8_table, 32}; +#define KAISER8 (&_KAISER8) +static struct FuncDef _KAISER6 = {kaiser6_table, 32}; +#define KAISER6 (&_KAISER6) + +struct QualityMapping { + int base_length; + int oversample; + float downsample_bandwidth; + float upsample_bandwidth; + struct FuncDef *window_func; +}; + + +/* This table maps conversion quality to internal parameters. There are two + reasons that explain why the up-sampling bandwidth is larger than the + down-sampling bandwidth: + 1) When up-sampling, we can assume that the spectrum is already attenuated + close to the Nyquist rate (from an A/D or a previous resampling filter) + 2) Any aliasing that occurs very close to the Nyquist rate will be masked + by the sinusoids/noise just below the Nyquist rate (guaranteed only for + up-sampling). +*/ +static const struct QualityMapping quality_map[11] = { + { 8, 4, 0.830f, 0.860f, KAISER6 }, /* Q0 */ + { 16, 4, 0.850f, 0.880f, KAISER6 }, /* Q1 */ + { 32, 4, 0.882f, 0.910f, KAISER6 }, /* Q2 */ /* 82.3% cutoff ( ~60 dB stop) 6 */ + { 48, 8, 0.895f, 0.917f, KAISER8 }, /* Q3 */ /* 84.9% cutoff ( ~80 dB stop) 8 */ + { 64, 8, 0.921f, 0.940f, KAISER8 }, /* Q4 */ /* 88.7% cutoff ( ~80 dB stop) 8 */ + { 80, 16, 0.922f, 0.940f, KAISER10}, /* Q5 */ /* 89.1% cutoff (~100 dB stop) 10 */ + { 96, 16, 0.940f, 0.945f, KAISER10}, /* Q6 */ /* 91.5% cutoff (~100 dB stop) 10 */ + {128, 16, 0.950f, 0.950f, KAISER10}, /* Q7 */ /* 93.1% cutoff (~100 dB stop) 10 */ + {160, 16, 0.960f, 0.960f, KAISER10}, /* Q8 */ /* 94.5% cutoff (~100 dB stop) 10 */ + {192, 32, 0.968f, 0.968f, KAISER12}, /* Q9 */ /* 95.5% cutoff (~100 dB stop) 10 */ + {256, 32, 0.975f, 0.975f, KAISER12}, /* Q10 */ /* 96.6% cutoff (~100 dB stop) 10 */ +}; +/*8,24,40,56,80,104,128,160,200,256,320*/ +static double compute_func(float x, struct FuncDef *func) +{ + float y, frac; + double interp[4]; + int ind; + y = x*func->oversample; + ind = (int)floor(y); + frac = (y-ind); + /* CSE with handle the repeated powers */ + interp[3] = -0.1666666667*frac + 0.1666666667*(frac*frac*frac); + interp[2] = frac + 0.5*(frac*frac) - 0.5*(frac*frac*frac); + /*interp[2] = 1.f - 0.5f*frac - frac*frac + 0.5f*frac*frac*frac;*/ + interp[0] = -0.3333333333*frac + 0.5*(frac*frac) - 0.1666666667*(frac*frac*frac); + /* Just to make sure we don't have rounding problems */ + interp[1] = 1.f-interp[3]-interp[2]-interp[0]; + + /*sum = frac*accum[1] + (1-frac)*accum[2];*/ + return interp[0]*func->table[ind] + interp[1]*func->table[ind+1] + interp[2]*func->table[ind+2] + interp[3]*func->table[ind+3]; +} + +#if 0 +#include +int main(int argc, char **argv) +{ + int i; + for (i=0;i<256;i++) + { + printf ("%f\n", compute_func(i/256., KAISER12)); + } + return 0; +} +#endif + +#ifdef FIXED_POINT +/* The slow way of computing a sinc for the table. Should improve that some day */ +static spx_word16_t sinc(float cutoff, float x, int N, struct FuncDef *window_func) +{ + /*fprintf (stderr, "%f ", x);*/ + float xx = x * cutoff; + if (fabs(x)<1e-6f) + return WORD2INT(32768.*cutoff); + else if (fabs(x) > .5f*N) + return 0; + /*FIXME: Can it really be any slower than this? */ + return WORD2INT(32768.*cutoff*sin(M_PI*xx)/(M_PI*xx) * compute_func(fabs(2.*x/N), window_func)); +} +#else +/* The slow way of computing a sinc for the table. Should improve that some day */ +static spx_word16_t sinc(float cutoff, float x, int N, struct FuncDef *window_func) +{ + /*fprintf (stderr, "%f ", x);*/ + float xx = x * cutoff; + if (fabs(x)<1e-6) + return cutoff; + else if (fabs(x) > .5*N) + return 0; + /*FIXME: Can it really be any slower than this? */ + return cutoff*sin(M_PI*xx)/(M_PI*xx) * compute_func(fabs(2.*x/N), window_func); +} +#endif + +#ifdef FIXED_POINT +static void cubic_coef(spx_word16_t x, spx_word16_t interp[4]) +{ + /* Compute interpolation coefficients. I'm not sure whether this corresponds to cubic interpolation + but I know it's MMSE-optimal on a sinc */ + spx_word16_t x2, x3; + x2 = MULT16_16_P15(x, x); + x3 = MULT16_16_P15(x, x2); + interp[0] = PSHR32(MULT16_16(QCONST16(-0.16667f, 15),x) + MULT16_16(QCONST16(0.16667f, 15),x3),15); + interp[1] = EXTRACT16(EXTEND32(x) + SHR32(SUB32(EXTEND32(x2),EXTEND32(x3)),1)); + interp[3] = PSHR32(MULT16_16(QCONST16(-0.33333f, 15),x) + MULT16_16(QCONST16(.5f,15),x2) - MULT16_16(QCONST16(0.16667f, 15),x3),15); + /* Just to make sure we don't have rounding problems */ + interp[2] = Q15_ONE-interp[0]-interp[1]-interp[3]; + if (interp[2]<32767) + interp[2]+=1; +} +#else +static void cubic_coef(spx_word16_t frac, spx_word16_t interp[4]) +{ + /* Compute interpolation coefficients. I'm not sure whether this corresponds to cubic interpolation + but I know it's MMSE-optimal on a sinc */ + interp[0] = -0.16667f*frac + 0.16667f*frac*frac*frac; + interp[1] = frac + 0.5f*frac*frac - 0.5f*frac*frac*frac; + /*interp[2] = 1.f - 0.5f*frac - frac*frac + 0.5f*frac*frac*frac;*/ + interp[3] = -0.33333f*frac + 0.5f*frac*frac - 0.16667f*frac*frac*frac; + /* Just to make sure we don't have rounding problems */ + interp[2] = 1.-interp[0]-interp[1]-interp[3]; +} +#endif + +static int resampler_basic_direct_single(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len) +{ + const int N = st->filt_len; + int out_sample = 0; + int last_sample = st->last_sample[channel_index]; + spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; + const spx_word16_t *sinc_table = st->sinc_table; + const int out_stride = st->out_stride; + const int int_advance = st->int_advance; + const int frac_advance = st->frac_advance; + const spx_uint32_t den_rate = st->den_rate; + spx_word32_t sum; + int j; + + while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len)) + { + const spx_word16_t *sinc = & sinc_table[samp_frac_num*N]; + const spx_word16_t *iptr = & in[last_sample]; + +#ifndef OVERRIDE_INNER_PRODUCT_SINGLE + float accum[4] = {0,0,0,0}; + + for(j=0;j= den_rate) + { + samp_frac_num -= den_rate; + last_sample++; + } + } + + st->last_sample[channel_index] = last_sample; + st->samp_frac_num[channel_index] = samp_frac_num; + return out_sample; +} + +#ifdef FIXED_POINT +#else +/* This is the same as the previous function, except with a double-precision accumulator */ +static int resampler_basic_direct_double(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len) +{ + const int N = st->filt_len; + int out_sample = 0; + int last_sample = st->last_sample[channel_index]; + spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; + const spx_word16_t *sinc_table = st->sinc_table; + const int out_stride = st->out_stride; + const int int_advance = st->int_advance; + const int frac_advance = st->frac_advance; + const spx_uint32_t den_rate = st->den_rate; + double sum; + int j; + + while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len)) + { + const spx_word16_t *sinc = & sinc_table[samp_frac_num*N]; + const spx_word16_t *iptr = & in[last_sample]; + +#ifndef OVERRIDE_INNER_PRODUCT_DOUBLE + double accum[4] = {0,0,0,0}; + + for(j=0;j= den_rate) + { + samp_frac_num -= den_rate; + last_sample++; + } + } + + st->last_sample[channel_index] = last_sample; + st->samp_frac_num[channel_index] = samp_frac_num; + return out_sample; +} +#endif + +static int resampler_basic_interpolate_single(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len) +{ + const int N = st->filt_len; + int out_sample = 0; + int last_sample = st->last_sample[channel_index]; + spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; + const int out_stride = st->out_stride; + const int int_advance = st->int_advance; + const int frac_advance = st->frac_advance; + const spx_uint32_t den_rate = st->den_rate; + int j; + spx_word32_t sum; + + while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len)) + { + const spx_word16_t *iptr = & in[last_sample]; + + const int offset = samp_frac_num*st->oversample/st->den_rate; +#ifdef FIXED_POINT + const spx_word16_t frac = PDIV32(SHL32((samp_frac_num*st->oversample) % st->den_rate,15),st->den_rate); +#else + const spx_word16_t frac = ((float)((samp_frac_num*st->oversample) % st->den_rate))/st->den_rate; +#endif + spx_word16_t interp[4]; + + +#ifndef OVERRIDE_INTERPOLATE_PRODUCT_SINGLE + spx_word32_t accum[4] = {0,0,0,0}; + + for(j=0;jsinc_table[4+(j+1)*st->oversample-offset-2]); + accum[1] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-1]); + accum[2] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset]); + accum[3] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset+1]); + } + + cubic_coef(frac, interp); + sum = MULT16_32_Q15(interp[0],accum[0]) + MULT16_32_Q15(interp[1],accum[1]) + MULT16_32_Q15(interp[2],accum[2]) + MULT16_32_Q15(interp[3],accum[3]); +#else + cubic_coef(frac, interp); + sum = interpolate_product_single(iptr, st->sinc_table + st->oversample + 4 - offset - 2, N, st->oversample, interp); +#endif + + out[out_stride * out_sample++] = PSHR32(sum,15); + last_sample += int_advance; + samp_frac_num += frac_advance; + if (samp_frac_num >= den_rate) + { + samp_frac_num -= den_rate; + last_sample++; + } + } + + st->last_sample[channel_index] = last_sample; + st->samp_frac_num[channel_index] = samp_frac_num; + return out_sample; +} + +#ifdef FIXED_POINT +#else +/* This is the same as the previous function, except with a double-precision accumulator */ +static int resampler_basic_interpolate_double(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len) +{ + const int N = st->filt_len; + int out_sample = 0; + int last_sample = st->last_sample[channel_index]; + spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index]; + const int out_stride = st->out_stride; + const int int_advance = st->int_advance; + const int frac_advance = st->frac_advance; + const spx_uint32_t den_rate = st->den_rate; + int j; + spx_word32_t sum; + + while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len)) + { + const spx_word16_t *iptr = & in[last_sample]; + + const int offset = samp_frac_num*st->oversample/st->den_rate; +#ifdef FIXED_POINT + const spx_word16_t frac = PDIV32(SHL32((samp_frac_num*st->oversample) % st->den_rate,15),st->den_rate); +#else + const spx_word16_t frac = ((float)((samp_frac_num*st->oversample) % st->den_rate))/st->den_rate; +#endif + spx_word16_t interp[4]; + + +#ifndef OVERRIDE_INTERPOLATE_PRODUCT_DOUBLE + double accum[4] = {0,0,0,0}; + + for(j=0;jsinc_table[4+(j+1)*st->oversample-offset-2]); + accum[1] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-1]); + accum[2] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset]); + accum[3] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset+1]); + } + + cubic_coef(frac, interp); + sum = MULT16_32_Q15(interp[0],accum[0]) + MULT16_32_Q15(interp[1],accum[1]) + MULT16_32_Q15(interp[2],accum[2]) + MULT16_32_Q15(interp[3],accum[3]); +#else + cubic_coef(frac, interp); + sum = interpolate_product_double(iptr, st->sinc_table + st->oversample + 4 - offset - 2, N, st->oversample, interp); +#endif + + out[out_stride * out_sample++] = PSHR32(sum,15); + last_sample += int_advance; + samp_frac_num += frac_advance; + if (samp_frac_num >= den_rate) + { + samp_frac_num -= den_rate; + last_sample++; + } + } + + st->last_sample[channel_index] = last_sample; + st->samp_frac_num[channel_index] = samp_frac_num; + return out_sample; +} +#endif + +static void update_filter(SpeexResamplerState *st) +{ + spx_uint32_t old_length; + + old_length = st->filt_len; + st->oversample = quality_map[st->quality].oversample; + st->filt_len = quality_map[st->quality].base_length; + + if (st->num_rate > st->den_rate) + { + /* down-sampling */ + st->cutoff = quality_map[st->quality].downsample_bandwidth * st->den_rate / st->num_rate; + /* FIXME: divide the numerator and denominator by a certain amount if they're too large */ + st->filt_len = st->filt_len*st->num_rate / st->den_rate; + /* Round down to make sure we have a multiple of 4 */ + st->filt_len &= (~0x3); + if (2*st->den_rate < st->num_rate) + st->oversample >>= 1; + if (4*st->den_rate < st->num_rate) + st->oversample >>= 1; + if (8*st->den_rate < st->num_rate) + st->oversample >>= 1; + if (16*st->den_rate < st->num_rate) + st->oversample >>= 1; + if (st->oversample < 1) + st->oversample = 1; + } else { + /* up-sampling */ + st->cutoff = quality_map[st->quality].upsample_bandwidth; + } + + /* Choose the resampling type that requires the least amount of memory */ + if (st->den_rate <= st->oversample) + { + spx_uint32_t i; + if (!st->sinc_table) + st->sinc_table = (spx_word16_t *)speex_alloc(st->filt_len*st->den_rate*sizeof(spx_word16_t)); + else if (st->sinc_table_length < st->filt_len*st->den_rate) + { + st->sinc_table = (spx_word16_t *)speex_realloc(st->sinc_table,st->filt_len*st->den_rate*sizeof(spx_word16_t)); + st->sinc_table_length = st->filt_len*st->den_rate; + } + for (i=0;iden_rate;i++) + { + spx_int32_t j; + for (j=0;jfilt_len;j++) + { + st->sinc_table[i*st->filt_len+j] = sinc(st->cutoff,((j-(spx_int32_t)st->filt_len/2+1)-((float)i)/st->den_rate), st->filt_len, quality_map[st->quality].window_func); + } + } +#ifdef FIXED_POINT + st->resampler_ptr = resampler_basic_direct_single; +#else + if (st->quality>8) + st->resampler_ptr = resampler_basic_direct_double; + else + st->resampler_ptr = resampler_basic_direct_single; +#endif + /*fprintf (stderr, "resampler uses direct sinc table and normalised cutoff %f\n", cutoff);*/ + } else { + spx_int32_t i; + if (!st->sinc_table) + st->sinc_table = (spx_word16_t *)speex_alloc((st->filt_len*st->oversample+8)*sizeof(spx_word16_t)); + else if (st->sinc_table_length < st->filt_len*st->oversample+8) + { + st->sinc_table = (spx_word16_t *)speex_realloc(st->sinc_table,(st->filt_len*st->oversample+8)*sizeof(spx_word16_t)); + st->sinc_table_length = st->filt_len*st->oversample+8; + } + for (i=-4;i<(spx_int32_t)(st->oversample*st->filt_len+4);i++) + st->sinc_table[i+4] = sinc(st->cutoff,(i/(float)st->oversample - st->filt_len/2), st->filt_len, quality_map[st->quality].window_func); +#ifdef FIXED_POINT + st->resampler_ptr = resampler_basic_interpolate_single; +#else + if (st->quality>8) + st->resampler_ptr = resampler_basic_interpolate_double; + else + st->resampler_ptr = resampler_basic_interpolate_single; +#endif + /*fprintf (stderr, "resampler uses interpolated sinc table and normalised cutoff %f\n", cutoff);*/ + } + st->int_advance = st->num_rate/st->den_rate; + st->frac_advance = st->num_rate%st->den_rate; + + + /* Here's the place where we update the filter memory to take into account + the change in filter length. It's probably the messiest part of the code + due to handling of lots of corner cases. */ + if (!st->mem) + { + spx_uint32_t i; + st->mem_alloc_size = st->filt_len-1 + st->buffer_size; + st->mem = (spx_word16_t*)speex_alloc(st->nb_channels*st->mem_alloc_size * sizeof(spx_word16_t)); + for (i=0;inb_channels*st->mem_alloc_size;i++) + st->mem[i] = 0; + /*speex_warning("init filter");*/ + } else if (!st->started) + { + spx_uint32_t i; + st->mem_alloc_size = st->filt_len-1 + st->buffer_size; + st->mem = (spx_word16_t*)speex_realloc(st->mem, st->nb_channels*st->mem_alloc_size * sizeof(spx_word16_t)); + for (i=0;inb_channels*st->mem_alloc_size;i++) + st->mem[i] = 0; + /*speex_warning("reinit filter");*/ + } else if (st->filt_len > old_length) + { + spx_int32_t i; + /* Increase the filter length */ + /*speex_warning("increase filter size");*/ + int old_alloc_size = st->mem_alloc_size; + if ((st->filt_len-1 + st->buffer_size) > st->mem_alloc_size) + { + st->mem_alloc_size = st->filt_len-1 + st->buffer_size; + st->mem = (spx_word16_t*)speex_realloc(st->mem, st->nb_channels*st->mem_alloc_size * sizeof(spx_word16_t)); + } + for (i=st->nb_channels-1;i>=0;i--) + { + spx_int32_t j; + spx_uint32_t olen = old_length; + /*if (st->magic_samples[i])*/ + { + /* Try and remove the magic samples as if nothing had happened */ + + /* FIXME: This is wrong but for now we need it to avoid going over the array bounds */ + olen = old_length + 2*st->magic_samples[i]; + for (j=old_length-2+st->magic_samples[i];j>=0;j--) + st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]] = st->mem[i*old_alloc_size+j]; + for (j=0;jmagic_samples[i];j++) + st->mem[i*st->mem_alloc_size+j] = 0; + st->magic_samples[i] = 0; + } + if (st->filt_len > olen) + { + /* If the new filter length is still bigger than the "augmented" length */ + /* Copy data going backward */ + for (j=0;jmem[i*st->mem_alloc_size+(st->filt_len-2-j)] = st->mem[i*st->mem_alloc_size+(olen-2-j)]; + /* Then put zeros for lack of anything better */ + for (;jfilt_len-1;j++) + st->mem[i*st->mem_alloc_size+(st->filt_len-2-j)] = 0; + /* Adjust last_sample */ + st->last_sample[i] += (st->filt_len - olen)/2; + } else { + /* Put back some of the magic! */ + st->magic_samples[i] = (olen - st->filt_len)/2; + for (j=0;jfilt_len-1+st->magic_samples[i];j++) + st->mem[i*st->mem_alloc_size+j] = st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]]; + } + } + } else if (st->filt_len < old_length) + { + spx_uint32_t i; + /* Reduce filter length, this a bit tricky. We need to store some of the memory as "magic" + samples so they can be used directly as input the next time(s) */ + for (i=0;inb_channels;i++) + { + spx_uint32_t j; + spx_uint32_t old_magic = st->magic_samples[i]; + st->magic_samples[i] = (old_length - st->filt_len)/2; + /* We must copy some of the memory that's no longer used */ + /* Copy data going backward */ + for (j=0;jfilt_len-1+st->magic_samples[i]+old_magic;j++) + st->mem[i*st->mem_alloc_size+j] = st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]]; + st->magic_samples[i] += old_magic; + } + } + +} + +EXPORT SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels, spx_uint32_t in_rate, spx_uint32_t out_rate, int quality, int *err) +{ + return speex_resampler_init_frac(nb_channels, in_rate, out_rate, in_rate, out_rate, quality, err); +} + +EXPORT SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels, spx_uint32_t ratio_num, spx_uint32_t ratio_den, spx_uint32_t in_rate, spx_uint32_t out_rate, int quality, int *err) +{ + spx_uint32_t i; + SpeexResamplerState *st; + if (quality > 10 || quality < 0) + { + if (err) + *err = RESAMPLER_ERR_INVALID_ARG; + return NULL; + } + st = (SpeexResamplerState *)speex_alloc(sizeof(SpeexResamplerState)); + st->initialised = 0; + st->started = 0; + st->in_rate = 0; + st->out_rate = 0; + st->num_rate = 0; + st->den_rate = 0; + st->quality = -1; + st->sinc_table_length = 0; + st->mem_alloc_size = 0; + st->filt_len = 0; + st->mem = 0; + st->resampler_ptr = 0; + + st->cutoff = 1.f; + st->nb_channels = nb_channels; + st->in_stride = 1; + st->out_stride = 1; + +#ifdef FIXED_POINT + st->buffer_size = 160; +#else + st->buffer_size = 160; +#endif + + /* Per channel data */ + st->last_sample = (spx_int32_t*)speex_alloc(nb_channels*sizeof(int)); + st->magic_samples = (spx_uint32_t*)speex_alloc(nb_channels*sizeof(int)); + st->samp_frac_num = (spx_uint32_t*)speex_alloc(nb_channels*sizeof(int)); + for (i=0;ilast_sample[i] = 0; + st->magic_samples[i] = 0; + st->samp_frac_num[i] = 0; + } + + speex_resampler_set_quality(st, quality); + speex_resampler_set_rate_frac(st, ratio_num, ratio_den, in_rate, out_rate); + + + update_filter(st); + + st->initialised = 1; + if (err) + *err = RESAMPLER_ERR_SUCCESS; + + return st; +} + +EXPORT void speex_resampler_destroy(SpeexResamplerState *st) +{ + speex_free(st->mem); + speex_free(st->sinc_table); + speex_free(st->last_sample); + speex_free(st->magic_samples); + speex_free(st->samp_frac_num); + speex_free(st); +} + +static int speex_resampler_process_native(SpeexResamplerState *st, spx_uint32_t channel_index, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len) +{ + int j=0; + const int N = st->filt_len; + int out_sample = 0; + spx_word16_t *mem = st->mem + channel_index * st->mem_alloc_size; + spx_uint32_t ilen; + + st->started = 1; + + /* Call the right resampler through the function ptr */ + out_sample = st->resampler_ptr(st, channel_index, mem, in_len, out, out_len); + + if (st->last_sample[channel_index] < (spx_int32_t)*in_len) + *in_len = st->last_sample[channel_index]; + *out_len = out_sample; + st->last_sample[channel_index] -= *in_len; + + ilen = *in_len; + + for(j=0;jmagic_samples[channel_index]; + spx_word16_t *mem = st->mem + channel_index * st->mem_alloc_size; + const int N = st->filt_len; + + speex_resampler_process_native(st, channel_index, &tmp_in_len, *out, &out_len); + + st->magic_samples[channel_index] -= tmp_in_len; + + /* If we couldn't process all "magic" input samples, save the rest for next time */ + if (st->magic_samples[channel_index]) + { + spx_uint32_t i; + for (i=0;imagic_samples[channel_index];i++) + mem[N-1+i]=mem[N-1+i+tmp_in_len]; + } + *out += out_len*st->out_stride; + return out_len; +} + +#ifdef FIXED_POINT +EXPORT int speex_resampler_process_int(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_int16_t *in, spx_uint32_t *in_len, spx_int16_t *out, spx_uint32_t *out_len) +#else +EXPORT int speex_resampler_process_float(SpeexResamplerState *st, spx_uint32_t channel_index, const float *in, spx_uint32_t *in_len, float *out, spx_uint32_t *out_len) +#endif +{ + int j; + spx_uint32_t ilen = *in_len; + spx_uint32_t olen = *out_len; + spx_word16_t *x = st->mem + channel_index * st->mem_alloc_size; + const int filt_offs = st->filt_len - 1; + const spx_uint32_t xlen = st->mem_alloc_size - filt_offs; + const int istride = st->in_stride; + + if (st->magic_samples[channel_index]) + olen -= speex_resampler_magic(st, channel_index, &out, olen); + if (! st->magic_samples[channel_index]) { + while (ilen && olen) { + spx_uint32_t ichunk = (ilen > xlen) ? xlen : ilen; + spx_uint32_t ochunk = olen; + + if (in) { + for(j=0;jout_stride; + if (in) + in += ichunk * istride; + } + } + *in_len -= ilen; + *out_len -= olen; + return RESAMPLER_ERR_SUCCESS; +} + +#ifdef FIXED_POINT +EXPORT int speex_resampler_process_float(SpeexResamplerState *st, spx_uint32_t channel_index, const float *in, spx_uint32_t *in_len, float *out, spx_uint32_t *out_len) +#else +EXPORT int speex_resampler_process_int(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_int16_t *in, spx_uint32_t *in_len, spx_int16_t *out, spx_uint32_t *out_len) +#endif +{ + int j; + const int istride_save = st->in_stride; + const int ostride_save = st->out_stride; + spx_uint32_t ilen = *in_len; + spx_uint32_t olen = *out_len; + spx_word16_t *x = st->mem + channel_index * st->mem_alloc_size; + const spx_uint32_t xlen = st->mem_alloc_size - (st->filt_len - 1); +#ifdef VAR_ARRAYS + const unsigned int ylen = (olen < FIXED_STACK_ALLOC) ? olen : FIXED_STACK_ALLOC; + VARDECL(spx_word16_t *ystack); + ALLOC(ystack, ylen, spx_word16_t); +#else + const unsigned int ylen = FIXED_STACK_ALLOC; + spx_word16_t ystack[FIXED_STACK_ALLOC]; +#endif + + st->out_stride = 1; + + while (ilen && olen) { + spx_word16_t *y = ystack; + spx_uint32_t ichunk = (ilen > xlen) ? xlen : ilen; + spx_uint32_t ochunk = (olen > ylen) ? ylen : olen; + spx_uint32_t omagic = 0; + + if (st->magic_samples[channel_index]) { + omagic = speex_resampler_magic(st, channel_index, &y, ochunk); + ochunk -= omagic; + olen -= omagic; + } + if (! st->magic_samples[channel_index]) { + if (in) { + for(j=0;jfilt_len-1]=WORD2INT(in[j*istride_save]); +#else + x[j+st->filt_len-1]=in[j*istride_save]; +#endif + } else { + for(j=0;jfilt_len-1]=0; + } + + speex_resampler_process_native(st, channel_index, &ichunk, y, &ochunk); + } else { + ichunk = 0; + ochunk = 0; + } + + for (j=0;jout_stride = ostride_save; + *in_len -= ilen; + *out_len -= olen; + + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT int speex_resampler_process_interleaved_float(SpeexResamplerState *st, const float *in, spx_uint32_t *in_len, float *out, spx_uint32_t *out_len) +{ + spx_uint32_t i; + int istride_save, ostride_save; + spx_uint32_t bak_len = *out_len; + istride_save = st->in_stride; + ostride_save = st->out_stride; + st->in_stride = st->out_stride = st->nb_channels; + for (i=0;inb_channels;i++) + { + *out_len = bak_len; + if (in != NULL) + speex_resampler_process_float(st, i, in+i, in_len, out+i, out_len); + else + speex_resampler_process_float(st, i, NULL, in_len, out+i, out_len); + } + st->in_stride = istride_save; + st->out_stride = ostride_save; + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT int speex_resampler_process_interleaved_int(SpeexResamplerState *st, const spx_int16_t *in, spx_uint32_t *in_len, spx_int16_t *out, spx_uint32_t *out_len) +{ + spx_uint32_t i; + int istride_save, ostride_save; + spx_uint32_t bak_len = *out_len; + istride_save = st->in_stride; + ostride_save = st->out_stride; + st->in_stride = st->out_stride = st->nb_channels; + for (i=0;inb_channels;i++) + { + *out_len = bak_len; + if (in != NULL) + speex_resampler_process_int(st, i, in+i, in_len, out+i, out_len); + else + speex_resampler_process_int(st, i, NULL, in_len, out+i, out_len); + } + st->in_stride = istride_save; + st->out_stride = ostride_save; + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT int speex_resampler_set_rate(SpeexResamplerState *st, spx_uint32_t in_rate, spx_uint32_t out_rate) +{ + return speex_resampler_set_rate_frac(st, in_rate, out_rate, in_rate, out_rate); +} + +EXPORT void speex_resampler_get_rate(SpeexResamplerState *st, spx_uint32_t *in_rate, spx_uint32_t *out_rate) +{ + *in_rate = st->in_rate; + *out_rate = st->out_rate; +} + +EXPORT int speex_resampler_set_rate_frac(SpeexResamplerState *st, spx_uint32_t ratio_num, spx_uint32_t ratio_den, spx_uint32_t in_rate, spx_uint32_t out_rate) +{ + spx_uint32_t fact; + spx_uint32_t old_den; + spx_uint32_t i; + if (st->in_rate == in_rate && st->out_rate == out_rate && st->num_rate == ratio_num && st->den_rate == ratio_den) + return RESAMPLER_ERR_SUCCESS; + + old_den = st->den_rate; + st->in_rate = in_rate; + st->out_rate = out_rate; + st->num_rate = ratio_num; + st->den_rate = ratio_den; + /* FIXME: This is terribly inefficient, but who cares (at least for now)? */ + for (fact=2;fact<=IMIN(st->num_rate, st->den_rate);fact++) + { + while ((st->num_rate % fact == 0) && (st->den_rate % fact == 0)) + { + st->num_rate /= fact; + st->den_rate /= fact; + } + } + + if (old_den > 0) + { + for (i=0;inb_channels;i++) + { + st->samp_frac_num[i]=st->samp_frac_num[i]*st->den_rate/old_den; + /* Safety net */ + if (st->samp_frac_num[i] >= st->den_rate) + st->samp_frac_num[i] = st->den_rate-1; + } + } + + if (st->initialised) + update_filter(st); + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT void speex_resampler_get_ratio(SpeexResamplerState *st, spx_uint32_t *ratio_num, spx_uint32_t *ratio_den) +{ + *ratio_num = st->num_rate; + *ratio_den = st->den_rate; +} + +EXPORT int speex_resampler_set_quality(SpeexResamplerState *st, int quality) +{ + if (quality > 10 || quality < 0) + return RESAMPLER_ERR_INVALID_ARG; + if (st->quality == quality) + return RESAMPLER_ERR_SUCCESS; + st->quality = quality; + if (st->initialised) + update_filter(st); + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT void speex_resampler_get_quality(SpeexResamplerState *st, int *quality) +{ + *quality = st->quality; +} + +EXPORT void speex_resampler_set_input_stride(SpeexResamplerState *st, spx_uint32_t stride) +{ + st->in_stride = stride; +} + +EXPORT void speex_resampler_get_input_stride(SpeexResamplerState *st, spx_uint32_t *stride) +{ + *stride = st->in_stride; +} + +EXPORT void speex_resampler_set_output_stride(SpeexResamplerState *st, spx_uint32_t stride) +{ + st->out_stride = stride; +} + +EXPORT void speex_resampler_get_output_stride(SpeexResamplerState *st, spx_uint32_t *stride) +{ + *stride = st->out_stride; +} + +EXPORT int speex_resampler_get_input_latency(SpeexResamplerState *st) +{ + return st->filt_len / 2; +} + +EXPORT int speex_resampler_get_output_latency(SpeexResamplerState *st) +{ + return ((st->filt_len / 2) * st->den_rate + (st->num_rate >> 1)) / st->num_rate; +} + +EXPORT int speex_resampler_skip_zeros(SpeexResamplerState *st) +{ + spx_uint32_t i; + for (i=0;inb_channels;i++) + st->last_sample[i] = st->filt_len/2; + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT int speex_resampler_reset_mem(SpeexResamplerState *st) +{ + spx_uint32_t i; + for (i=0;inb_channels*(st->filt_len-1);i++) + st->mem[i] = 0; + return RESAMPLER_ERR_SUCCESS; +} + +EXPORT const char *speex_resampler_strerror(int err) +{ + switch (err) + { + case RESAMPLER_ERR_SUCCESS: + return "Success."; + case RESAMPLER_ERR_ALLOC_FAILED: + return "Memory allocation failed."; + case RESAMPLER_ERR_BAD_STATE: + return "Bad resampler state."; + case RESAMPLER_ERR_INVALID_ARG: + return "Invalid argument."; + case RESAMPLER_ERR_PTR_OVERLAP: + return "Input and output buffers overlap."; + default: + return "Unknown error. Bad error code or strange version mismatch."; + } +} diff --git a/libmednahawk/src/resampler/resample_sse.h b/libmednahawk/src/resampler/resample_sse.h new file mode 100644 index 0000000000..71fa63ce23 --- /dev/null +++ b/libmednahawk/src/resampler/resample_sse.h @@ -0,0 +1,128 @@ +/* Copyright (C) 2007-2008 Jean-Marc Valin + * Copyright (C) 2008 Thorvald Natvig + */ +/** + @file resample_sse.h + @brief Resampler functions (SSE version) +*/ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Xiph.org Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include + +#define OVERRIDE_INNER_PRODUCT_SINGLE +static inline float inner_product_single(const float *a, const float *b, unsigned int len) +{ + int i; + float ret; + __m128 sum = _mm_setzero_ps(); + for (i=0;i +#define OVERRIDE_INNER_PRODUCT_DOUBLE + +static inline double inner_product_double(const float *a, const float *b, unsigned int len) +{ + int i; + double ret; + __m128d sum = _mm_setzero_pd(); + __m128 t; + for (i=0;i +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# include +# endif +# endif +#endif + +/** + * @def ALIGN(stack, size) + * + * Aligns the stack to a 'size' boundary + * + * @param stack Stack + * @param size New size boundary + */ + +/** + * @def PUSH(stack, size, type) + * + * Allocates 'size' elements of type 'type' on the stack + * + * @param stack Stack + * @param size Number of elements + * @param type Type of element + */ + +/** + * @def VARDECL(var) + * + * Declare variable on stack + * + * @param var Variable to declare + */ + +/** + * @def ALLOC(var, size, type) + * + * Allocate 'size' elements of 'type' on stack + * + * @param var Name of variable to allocate + * @param size Number of elements + * @param type Type of element + */ + +#ifdef ENABLE_VALGRIND + +#include + +#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1)) + +#define PUSH(stack, size, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(type)),VALGRIND_MAKE_WRITABLE(stack, ((size)*sizeof(type))),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type)))) + +#else + +#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1)) + +#define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type)))) + +#endif + +#if defined(VAR_ARRAYS) +#define VARDECL(var) +#define ALLOC(var, size, type) type var[size] +#elif defined(USE_ALLOCA) +#define VARDECL(var) var +#define ALLOC(var, size, type) var = alloca(sizeof(type)*(size)) +#else +#define VARDECL(var) var +#define ALLOC(var, size, type) var = PUSH(stack, size, type) +#endif + + +#endif diff --git a/libmednahawk/src/settings-common.h b/libmednahawk/src/settings-common.h new file mode 100644 index 0000000000..7481774c1a --- /dev/null +++ b/libmednahawk/src/settings-common.h @@ -0,0 +1,76 @@ +#ifndef _MDFN_SETTINGS_COMMON_H +#define _MDFN_SETTINGS_COMMON_H +typedef enum +{ + // Actual base types + MDFNST_INT = 0, // (signed), int8, int16, int32, int64(saved as) + MDFNST_UINT, // uint8, uint16, uint32, uint64(saved as) + MDFNST_BOOL, // bool. bool. bool! + MDFNST_FLOAT, // float, double(saved as). + MDFNST_STRING, + MDFNST_ENUM, // Handled like a string, but validated against the enumeration list, and MDFN_GetSettingUI() returns the number in the enumeration list. + + MDFNST_ALIAS +} MDFNSettingType; + + +//#define MDFNST_EX_DRIVER = (1 << 16), // If this is not set, the setting is assumed to be internal. This...should probably be set automatically? + +#define MDFNSF_NOFLAGS 0 // Always 0, makes setting definitions prettier...maybe. + +// TODO(cats) +#define MDFNSF_CAT_INPUT (1 << 8) +#define MDFNSF_CAT_SOUND (1 << 9) +#define MDFNSF_CAT_VIDEO (1 << 10) + +#define MDFNSF_EMU_STATE (1 << 17) // If the setting affects emulation from the point of view of the emulated program +#define MDFNSF_UNTRUSTED_SAFE (1 << 18) // If it's safe for an untrusted source to modify it, probably only used in conjunction with + // MDFNST_EX_EMU_STATE and network play + +#define MDFNSF_SUPPRESS_DOC (1 << 19) // Suppress documentation generation for this setting. +#define MDFNSF_COMMON_TEMPLATE (1 << 20) // Auto-generated common template setting(like nes.xscale, pce.xscale, vb.xscale, nes.enable, pce.enable, vb.enable) +// TODO: +// #define MDFNSF_WILL_BREAK_GAMES (1 << ) // If changing the value of the setting from the default value will break games/programs that would otherwise work. + +// TODO(in progress): +#define MDFNSF_REQUIRES_RELOAD (1 << 24) // If a game reload is required for the setting to take effect. +#define MDFNSF_REQUIRES_RESTART (1 << 25) // If Mednafen restart is required for the setting to take effect. + +typedef struct +{ + const char *string; + int number; + const char *description; // Short + const char *description_extra; // Extra verbose text appended to the short description. +} MDFNSetting_EnumList; + +typedef struct +{ + const char *name; + uint32 flags; + const char *description; // Short + const char *description_extra; + + MDFNSettingType type; + const char *default_value; + const char *minimum; + const char *maximum; + bool (*validate_func)(const char *name, const char *value); + void (*ChangeNotification)(const char *name); + const MDFNSetting_EnumList *enum_list; +} MDFNSetting; + +typedef struct __MDFNCS +{ + char *name; + char *value; + char *game_override; // per-game setting override(netplay_override > game_override > value, in precedence) + char *netplay_override; // "value" override for network play. + + const MDFNSetting *desc; + void (*ChangeNotification)(const char *name); + + uint32 name_hash; +} MDFNCS; + +#endif diff --git a/libmednahawk/src/settings-driver.h b/libmednahawk/src/settings-driver.h new file mode 100644 index 0000000000..29f18402da --- /dev/null +++ b/libmednahawk/src/settings-driver.h @@ -0,0 +1,16 @@ +#ifndef _MDFN_SETTINGS_DRIVER_H +#define _MDFN_SETTINGS_DRIVER_H + +#include "settings-common.h" + +bool MDFNI_SetSetting(const char *name, const char *value, bool NetplayOverride = FALSE); +bool MDFNI_SetSettingB(const char *name, bool value); +bool MDFNI_SetSettingUI(const char *name, uint64 value); + +bool MDFNI_DumpSettingsDef(const char *path); + +#include + +const std::multimap *MDFNI_GetSettings(void); + +#endif diff --git a/libmednahawk/src/settings.cpp b/libmednahawk/src/settings.cpp new file mode 100644 index 0000000000..31f6b02dfd --- /dev/null +++ b/libmednahawk/src/settings.cpp @@ -0,0 +1,798 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" +#include +#include +#include +#include +#include +#include +#include +#include "settings.h" +#include "md5.h" +#include "string/world_strtod.h" +#include "string/escape.h" +#include "FileStream.h" +#include "MemoryStream.h" + +typedef struct +{ + char *name; + char *value; +} UnknownSetting_t; + +std::multimap CurrentSettings; +std::vector UnknownSettings; + +static std::string fname; // TODO: remove + +static MDFNCS *FindSetting(const char *name, bool deref_alias = true, bool dont_freak_out_on_fail = false); + + +static bool TranslateSettingValueUI(const char *value, unsigned long long &tlated_value) +{ + char *endptr = NULL; + + if(value[0] == '0' && (value[1] == 'x' || value[1] == 'X')) + tlated_value = strtoull(value + 2, &endptr, 16); + else + tlated_value = strtoull(value, &endptr, 10); + + if(!endptr || *endptr != 0) + { + return(false); + } + return(true); +} + +static bool TranslateSettingValueI(const char *value, long long &tlated_value) +{ + char *endptr = NULL; + + if(value[0] == '0' && (value[1] == 'x' || value[1] == 'X')) + tlated_value = strtoll(value + 2, &endptr, 16); + else + tlated_value = strtoll(value, &endptr, 10); + + if(!endptr || *endptr != 0) + { + return(false); + } + return(true); +} + + +static void ValidateSetting(const char *value, const MDFNSetting *setting) +{ + MDFNSettingType base_type = setting->type; + + if(base_type == MDFNST_UINT) + { + unsigned long long ullvalue; + + if(!TranslateSettingValueUI(value, ullvalue)) + { + throw MDFN_Error(0, _("Setting \"%s\", value \"%s\", is not set to a valid unsigned integer."), setting->name, value); + } + if(setting->minimum) + { + unsigned long long minimum; + + TranslateSettingValueUI(setting->minimum, minimum); + if(ullvalue < minimum) + { + throw MDFN_Error(0, _("Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s\"."), setting->name, value, setting->minimum); + } + } + if(setting->maximum) + { + unsigned long long maximum; + + TranslateSettingValueUI(setting->maximum, maximum); + if(ullvalue > maximum) + { + throw MDFN_Error(0, _("Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s\"."), setting->name, value, setting->maximum); + } + } + } + else if(base_type == MDFNST_INT) + { + long long llvalue; + + if(!TranslateSettingValueI(value, llvalue)) + { + throw MDFN_Error(0, _("Setting \"%s\", value \"%s\", is not set to a valid signed integer."), setting->name, value); + } + if(setting->minimum) + { + long long minimum; + + TranslateSettingValueI(setting->minimum, minimum); + if(llvalue < minimum) + { + throw MDFN_Error(0, _("Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s\"."), setting->name, value, setting->minimum); + } + } + if(setting->maximum) + { + long long maximum; + + TranslateSettingValueI(setting->maximum, maximum); + if(llvalue > maximum) + { + throw MDFN_Error(0, _("Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s\"."), setting->name, value, setting->maximum); + } + } + } + else if(base_type == MDFNST_FLOAT) + { + double dvalue; + char *endptr = NULL; + + dvalue = world_strtod(value, &endptr); + + if(!endptr || *endptr != 0) + { + throw MDFN_Error(0, _("Setting \"%s\", value \"%s\", is not set to a floating-point(real) number."), setting->name, value); + } + if(setting->minimum) + { + double minimum; + + minimum = world_strtod(setting->minimum, NULL); + if(dvalue < minimum) + { + throw MDFN_Error(0, _("Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s\"."), setting->name, value, setting->minimum); + } + } + if(setting->maximum) + { + double maximum; + + maximum = world_strtod(setting->maximum, NULL); + if(dvalue > maximum) + { + throw MDFN_Error(0, _("Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s\"."), setting->name, value, setting->maximum); + } + } + } + else if(base_type == MDFNST_BOOL) + { + if(strlen(value) != 1 || (value[0] != '0' && value[0] != '1')) + { + throw MDFN_Error(0, _("Setting \"%s\", value \"%s\", is not a valid boolean value."), setting->name, value); + } + } + else if(base_type == MDFNST_ENUM) + { + const MDFNSetting_EnumList *enum_list = setting->enum_list; + bool found = false; + std::string valid_string_list; + + assert(enum_list); + + while(enum_list->string) + { + if(!strcasecmp(value, enum_list->string)) + { + found = true; + break; + } + + if(enum_list->description) // Don't list out undocumented and deprecated values. + valid_string_list = valid_string_list + (enum_list == setting->enum_list ? "" : " ") + std::string(enum_list->string); + + enum_list++; + } + + if(!found) + { + throw MDFN_Error(0, _("Setting \"%s\", value \"%s\", is not a recognized string. Recognized strings: %s"), setting->name, value, valid_string_list.c_str()); + } + } + + + if(setting->validate_func && !setting->validate_func(setting->name, value)) + { + if(base_type == MDFNST_STRING) + throw MDFN_Error(0, _("Setting \"%s\" is not set to a valid string: \"%s\""), setting->name, value); + else + throw MDFN_Error(0, _("Setting \"%s\" is not set to a valid unsigned integer: \"%s\""), setting->name, value); + } +} + +static uint32 MakeNameHash(const char *name) +{ + uint32 name_hash; + + name_hash = crc32(0, (const Bytef *)name, strlen(name)); + + return(name_hash); +} + +static void ParseSettingLine(std::string &linebuf, bool IsOverrideSetting = false) +{ + MDFNCS *zesetting; + size_t spacepos = linebuf.find(' '); + + // EOF or bad line + if(spacepos == std::string::npos) + return; + + // No name(key) + if(spacepos == 0) + return; + + // No value + if((spacepos + 1) == linebuf.size()) + return; + + // Comment + if(linebuf[0] == ';') + return; + + linebuf[spacepos] = 0; + zesetting = FindSetting(linebuf.c_str(), true, true); + + if(zesetting) + { + char *nv = strdup(linebuf.c_str() + spacepos + 1); + + if(IsOverrideSetting) + { + if(zesetting->game_override) + free(zesetting->game_override); + + zesetting->game_override = nv; + } + else + { + if(zesetting->value) + free(zesetting->value); + + zesetting->value = nv; + } + + ValidateSetting(nv, zesetting->desc); // TODO: Validate later(so command line options can override invalid setting file data correctly) + } + else if(!IsOverrideSetting) + { + UnknownSetting_t unks; + + unks.name = strdup(linebuf.c_str()); + unks.value = strdup(linebuf.c_str() + spacepos + 1); + + UnknownSettings.push_back(unks); + } +} + +static void LoadSettings(Stream *fp, const char *section, bool override) +{ + bool InCorrectSection = true; // To also allow for all-game overrides at the start of the override file, might be useful in certain scenarios. + std::string linebuf; + + linebuf.reserve(1024); + + while(fp->get_line(linebuf) != -1) + { + if(linebuf[0] == '[') + { + if(section) + { + if(!strcasecmp(linebuf.c_str() + 1, section) && linebuf[1 + strlen(section)] == ']') + InCorrectSection = true; + else + InCorrectSection = false; + } + } + else if(InCorrectSection) + { + ParseSettingLine(linebuf, override); + } + } +} + +bool MDFN_LoadSettings(const char *path, const char *section, bool override) +{ + MDFN_printf(_("Loading settings from \"%s\"..."), path); + + try + { + MemoryStream mp(new FileStream(path, FileStream::MODE_READ)); + LoadSettings(&mp, section, override); + } + catch(MDFN_Error &e) + { + if(e.GetErrno() == ENOENT) + { + MDFN_indent(1); + MDFN_printf(_("Failed: %s\n"), e.what()); + MDFN_indent(-1); + return(true); + } + else + { + MDFN_printf("\n"); + MDFN_PrintError(_("Failed to load settings from \"%s\": %s"), fname.c_str(), e.what()); + return(false); + } + } + catch(std::exception &e) + { + MDFN_printf("\n"); + MDFN_PrintError(_("Failed to load settings from \"%s\": %s"), fname.c_str(), e.what()); + return(false); + } + + MDFN_printf("\n"); + + return(true); +} + +static bool compare_sname(MDFNCS *first, MDFNCS *second) +{ + return(strcmp(first->name, second->name) < 0); +} + +static void SaveSettings(Stream *fp) +{ + std::multimap ::iterator sit; + std::list SortedList; + std::list::iterator lit; + + fp->printf(";VERSION %s\n", MEDNAFEN_VERSION); + + fp->printf(_(";Edit this file at your own risk!\n")); + fp->printf(_(";File format: \n\n")); + + for(sit = CurrentSettings.begin(); sit != CurrentSettings.end(); sit++) + SortedList.push_back(&sit->second); + + SortedList.sort(compare_sname); + + for(lit = SortedList.begin(); lit != SortedList.end(); lit++) + { + if((*lit)->desc->type == MDFNST_ALIAS) + continue; + + fp->printf(";%s\n%s %s\n\n", _((*lit)->desc->description), (*lit)->name, (*lit)->value); + } + + if(UnknownSettings.size()) + { + fp->printf("\n;\n;Unrecognized settings follow:\n;\n\n"); + for(unsigned int i = 0; i < UnknownSettings.size(); i++) + { + fp->printf("%s %s\n\n", UnknownSettings[i].name, UnknownSettings[i].value); + } + } + + fp->close(); +} + +bool MDFN_SaveSettings(const char *path) +{ + try + { + FileStream fp(path, FileStream::MODE_WRITE); + SaveSettings(&fp); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + return(0); + } + + return(1); +} + + +static INLINE void MergeSettingSub(const MDFNSetting *setting) +{ + MDFNCS TempSetting; + uint32 name_hash; + + assert(setting->name); + assert(setting->default_value); + + if(FindSetting(setting->name, false, true) != NULL) + { + printf("Duplicate setting name %s\n", setting->name); + abort(); + } + + name_hash = MakeNameHash(setting->name); + + TempSetting.name = strdup(setting->name); + TempSetting.value = strdup(setting->default_value); + TempSetting.name_hash = name_hash; + TempSetting.desc = setting; + TempSetting.ChangeNotification = setting->ChangeNotification; + TempSetting.game_override = NULL; + TempSetting.netplay_override = NULL; + + CurrentSettings.insert(std::pair(name_hash, TempSetting)); //[name_hash] = TempSetting; +} + + +bool MDFN_MergeSettings(const MDFNSetting *setting) +{ + while(setting->name != NULL) + { + MergeSettingSub(setting); + setting++; + } + return(1); +} + +bool MDFN_MergeSettings(const std::vector &setting) +{ + for(unsigned int x = 0; x < setting.size(); x++) + MergeSettingSub(&setting[x]); + + return(1); +} + + +void MDFN_KillSettings(void) +{ + std::multimap ::iterator sit; + + for(sit = CurrentSettings.begin(); sit != CurrentSettings.end(); sit++) + { + if(sit->second.desc->type == MDFNST_ALIAS) + continue; + + free(sit->second.name); + free(sit->second.value); + } + + if(UnknownSettings.size()) + { + for(unsigned int i = 0; i < UnknownSettings.size(); i++) + { + free(UnknownSettings[i].name); + free(UnknownSettings[i].value); + } + } + CurrentSettings.clear(); // Call after the list is all handled + UnknownSettings.clear(); +} + +static MDFNCS *FindSetting(const char *name, bool dref_alias, bool dont_freak_out_on_fail) +{ + MDFNCS *ret = NULL; + uint32 name_hash; + + //printf("Find: %s\n", name); + + name_hash = MakeNameHash(name); + + std::pair::iterator, std::multimap ::iterator> sit_pair; + std::multimap ::iterator sit; + + sit_pair = CurrentSettings.equal_range(name_hash); + + for(sit = sit_pair.first; sit != sit_pair.second; sit++) + { + //printf("Found: %s\n", sit->second.name); + if(!strcmp(sit->second.name, name)) + { + if(dref_alias && sit->second.desc->type == MDFNST_ALIAS) + return(FindSetting(sit->second.value, dref_alias, dont_freak_out_on_fail)); + + ret = &sit->second; + } + } + + if(!ret && !dont_freak_out_on_fail) + { + printf("\n\nINCONCEIVABLE! Setting not found: %s\n\n", name); + //exit(1); //zer 03-nov-2012 - exit is annoying + abort(); + } + return(ret); +} + +static const char *GetSetting(const MDFNCS *setting) +{ + const char *value; + + if(setting->netplay_override) + value = setting->netplay_override; + else if(setting->game_override) + value = setting->game_override; + else + value = setting->value; + + return(value); +} + +static int GetEnum(const MDFNCS *setting, const char *value) +{ + const MDFNSetting_EnumList *enum_list = setting->desc->enum_list; + int ret = 0; + bool found = false; + + assert(enum_list); + + while(enum_list->string) + { + if(!strcasecmp(value, enum_list->string)) + { + found = true; + ret = enum_list->number; + break; + } + enum_list++; + } + + assert(found); + return(ret); +} + +uint64 MDFN_GetSettingUI(const char *name) +{ + const MDFNCS *setting = FindSetting(name); + const char *value = GetSetting(setting); + + if(setting->desc->type == MDFNST_ENUM) + return(GetEnum(setting, value)); + else + { + unsigned long long ret; + TranslateSettingValueUI(value, ret); + return(ret); + } +} + +int64 MDFN_GetSettingI(const char *name) +{ + const MDFNCS *setting = FindSetting(name); + const char *value = GetSetting(FindSetting(name)); + + + if(setting->desc->type == MDFNST_ENUM) + return(GetEnum(setting, value)); + else + { + long long ret; + TranslateSettingValueI(value, ret); + return(ret); + } +} + +double MDFN_GetSettingF(const char *name) +{ + return(world_strtod(GetSetting(FindSetting(name)), (char **)NULL)); +} + +bool MDFN_GetSettingB(const char *name) +{ + return((bool)MDFN_GetSettingUI(name)); +} + +std::string MDFN_GetSettingS(const char *name) +{ + const MDFNCS *setting = FindSetting(name); + const char *value = GetSetting(setting); + + // Even if we're getting the string value of an enum instead of the associated numeric value, we still need + // to make sure it's a valid enum + // (actually, not really, since it's handled in other places where the setting is actually set) + //if(setting->desc->type == MDFNST_ENUM) + // GetEnum(setting, value); + + return(std::string(value)); +} + +const std::multimap *MDFNI_GetSettings(void) +{ + return(&CurrentSettings); +} + +bool MDFNI_SetSetting(const char *name, const char *value, bool NetplayOverride) +{ + MDFNCS *zesetting = FindSetting(name, true, true); + + if(zesetting) + { + try + { + ValidateSetting(value, zesetting->desc); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + return(0); + } + + // TODO: When NetplayOverride is set, make sure the setting is an emulation-related setting, + // and that it is safe to change it(changing paths to BIOSes and such is not safe :b). + if(NetplayOverride) + { + if(zesetting->netplay_override) + free(zesetting->netplay_override); + zesetting->netplay_override = strdup(value); + } + else + { + // Overriding the per-game override. Poetic. Though not really. + if(zesetting->game_override) + { + free(zesetting->game_override); + zesetting->game_override = NULL; + } + + if(zesetting->value) + free(zesetting->value); + zesetting->value = strdup(value); + } + + // TODO, always call driver notification function, regardless of whether a game is loaded. + if(zesetting->ChangeNotification) + { + if(MDFNGameInfo) + zesetting->ChangeNotification(name); + } + return(true); + } + else + { + MDFN_PrintError(_("Unknown setting \"%s\""), name); + return(false); + } +} + +#if 0 +// TODO after a game is loaded, but should we? +void MDFN_CallSettingsNotification(void) +{ + for(unsigned int x = 0; x < CurrentSettings.size(); x++) + { + if(CurrentSettings[x].ChangeNotification) + { + // TODO, always call driver notification function, regardless of whether a game is loaded. + if(MDFNGameInfo) + CurrentSettings[x].ChangeNotification(CurrentSettings[x].name); + } + } +} +#endif + +bool MDFNI_SetSettingB(const char *name, bool value) +{ + char tmpstr[2]; + tmpstr[0] = value ? '1' : '0'; + tmpstr[1] = 0; + + return(MDFNI_SetSetting(name, tmpstr, FALSE)); +} + +bool MDFNI_SetSettingUI(const char *name, uint64 value) +{ + char tmpstr[32]; + + trio_snprintf(tmpstr, 32, "%llu", value); + return(MDFNI_SetSetting(name, tmpstr, FALSE)); +} + +void MDFNI_DumpSettingsDef(const char *path) +{ + FileStream fp(path, FileStream::MODE_WRITE); + + std::multimap ::iterator sit; + std::list SortedList; + std::list::iterator lit; + std::map tts; + std::mapfts; + + tts[MDFNST_INT] = "MDFNST_INT"; + tts[MDFNST_UINT] = "MDFNST_UINT"; + tts[MDFNST_BOOL] = "MDFNST_BOOL"; + tts[MDFNST_FLOAT] = "MDFNST_FLOAT"; + tts[MDFNST_STRING] = "MDFNST_STRING"; + tts[MDFNST_ENUM] = "MDFNST_ENUM"; + + fts[MDFNSF_CAT_INPUT] = "MDFNSF_CAT_INPUT"; + fts[MDFNSF_CAT_SOUND] = "MDFNSF_CAT_SOUND"; + fts[MDFNSF_CAT_VIDEO] = "MDFNSF_CAT_VIDEO"; + + fts[MDFNSF_EMU_STATE] = "MDFNSF_EMU_STATE"; + fts[MDFNSF_UNTRUSTED_SAFE] = "MDFNSF_UNTRUSTED_SAFE"; + + fts[MDFNSF_SUPPRESS_DOC] = "MDFNSF_SUPPRESS_DOC"; + fts[MDFNSF_COMMON_TEMPLATE] = "MDFNSF_COMMON_TEMPLATE"; + + fts[MDFNSF_REQUIRES_RELOAD] = "MDFNSF_REQUIRES_RELOAD"; + fts[MDFNSF_REQUIRES_RESTART] = "MDFNSF_REQUIRES_RESTART"; + + + for(sit = CurrentSettings.begin(); sit != CurrentSettings.end(); sit++) + SortedList.push_back(&sit->second); + + SortedList.sort(compare_sname); + + for(lit = SortedList.begin(); lit != SortedList.end(); lit++) + { + const MDFNSetting *setting = (*lit)->desc; + char *desc_escaped; + char *desc_extra_escaped; + + if(setting->type == MDFNST_ALIAS) + continue; + + fp.printf("%s\n", setting->name); + + for(unsigned int i = 0; i < 32; i++) + { + if(setting->flags & (1 << i)) + fp.printf("%s ", fts[1 << i]); + } + fp.printf("\n"); + + desc_escaped = escape_string(setting->description ? setting->description : ""); + desc_extra_escaped = escape_string(setting->description_extra ? setting->description_extra : ""); + + + fp.printf("%s\n", desc_escaped); + fp.printf("%s\n", desc_extra_escaped); + + free(desc_escaped); + free(desc_extra_escaped); + + fp.printf("%s\n", tts[setting->type]); + fp.printf("%s\n", setting->default_value ? setting->default_value : ""); + fp.printf("%s\n", setting->minimum ? setting->minimum : ""); + fp.printf("%s\n", setting->maximum ? setting->maximum : ""); + + if(!setting->enum_list) + fp.printf("0\n"); + else + { + const MDFNSetting_EnumList *el = setting->enum_list; + int count = 0; + + while(el->string) + { + count++; + el++; + } + + fp.printf("%d\n", count); + + el = setting->enum_list; + while(el->string) + { + desc_escaped = escape_string(el->description ? el->description : ""); + desc_extra_escaped = escape_string(el->description_extra ? el->description_extra : ""); + + fp.printf("%s\n", el->string); + fp.printf("%s\n", desc_escaped); + fp.printf("%s\n", desc_extra_escaped); + + free(desc_escaped); + free(desc_extra_escaped); + + el++; + } + } + } + + fp.close(); +} diff --git a/libmednahawk/src/settings.h b/libmednahawk/src/settings.h new file mode 100644 index 0000000000..2be4d3ba94 --- /dev/null +++ b/libmednahawk/src/settings.h @@ -0,0 +1,22 @@ +#ifndef MDFN_SETTINGS_H +#define MDFN_SETTINGS_H + +#include + +#include "settings-common.h" + +bool MDFN_LoadSettings(const char *path, const char *section = NULL, bool override = false); +bool MDFN_MergeSettings(const MDFNSetting *); +bool MDFN_MergeSettings(const std::vector &); +bool MDFN_SaveSettings(const char *path); + +void MDFN_KillSettings(void); // Free any resources acquired. + +// This should assert() or something if the setting isn't found, since it would +// be a totally tubular error! +uint64 MDFN_GetSettingUI(const char *name); +int64 MDFN_GetSettingI(const char *name); +double MDFN_GetSettingF(const char *name); +bool MDFN_GetSettingB(const char *name); +std::string MDFN_GetSettingS(const char *name); +#endif diff --git a/libmednahawk/src/sexyal/COPYING b/libmednahawk/src/sexyal/COPYING new file mode 100644 index 0000000000..5ab746c191 --- /dev/null +++ b/libmednahawk/src/sexyal/COPYING @@ -0,0 +1,22 @@ +SexyAL - Simple audio abstraction library. + +Copyright (c) 2005-2007 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/libmednahawk/src/sexyal/Makefile.am b/libmednahawk/src/sexyal/Makefile.am new file mode 100644 index 0000000000..82fd20af4d --- /dev/null +++ b/libmednahawk/src/sexyal/Makefile.am @@ -0,0 +1,30 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ @SDL_CFLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl + +noinst_LIBRARIES = libsexyal.a + +libsexyal_a_SOURCES = sexyal.cpp convert.cpp drivers/dummy.cpp + +if HAVE_DIRECTSOUND +TMP_DIRECTSOUND = drivers/dsound.cpp +endif + +if HAVE_OSSDSP +TMP_OSSDSP = drivers/oss.cpp +endif + +if HAVE_JACK +TMP_JACK = drivers/jack.cpp +endif + +if HAVE_SDL +TMP_SDL = drivers/sdl.cpp +libsexyal_a_CFLAGS = @SDL_CFLAGS@ +endif + +if HAVE_ALSA +TMP_ALSA = drivers/alsa.cpp +endif + +libsexyal_a_SOURCES += $(TMP_DIRECTSOUND) $(TMP_OSSDSP) $(TMP_JACK) $(TMP_SDL) $(TMP_ALSA) diff --git a/libmednahawk/src/sexyal/Makefile.in b/libmednahawk/src/sexyal/Makefile.in new file mode 100644 index 0000000000..3a0d822c29 --- /dev/null +++ b/libmednahawk/src/sexyal/Makefile.in @@ -0,0 +1,649 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/sexyal +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + COPYING +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libsexyal_a_AR = $(AR) $(ARFLAGS) +libsexyal_a_LIBADD = +am__libsexyal_a_SOURCES_DIST = sexyal.cpp convert.cpp \ + drivers/dummy.cpp drivers/dsound.cpp drivers/oss.cpp \ + drivers/jack.cpp drivers/sdl.cpp drivers/alsa.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@HAVE_DIRECTSOUND_TRUE@am__objects_1 = drivers/dsound.$(OBJEXT) +@HAVE_OSSDSP_TRUE@am__objects_2 = drivers/oss.$(OBJEXT) +@HAVE_JACK_TRUE@am__objects_3 = drivers/jack.$(OBJEXT) +@HAVE_SDL_TRUE@am__objects_4 = drivers/sdl.$(OBJEXT) +@HAVE_ALSA_TRUE@am__objects_5 = drivers/alsa.$(OBJEXT) +am_libsexyal_a_OBJECTS = sexyal.$(OBJEXT) convert.$(OBJEXT) \ + drivers/dummy.$(OBJEXT) $(am__objects_1) $(am__objects_2) \ + $(am__objects_3) $(am__objects_4) $(am__objects_5) +libsexyal_a_OBJECTS = $(am_libsexyal_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libsexyal_a_SOURCES) +DIST_SOURCES = $(am__libsexyal_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ @SDL_CFLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl +noinst_LIBRARIES = libsexyal.a +libsexyal_a_SOURCES = sexyal.cpp convert.cpp drivers/dummy.cpp \ + $(TMP_DIRECTSOUND) $(TMP_OSSDSP) $(TMP_JACK) $(TMP_SDL) \ + $(TMP_ALSA) +@HAVE_DIRECTSOUND_TRUE@TMP_DIRECTSOUND = drivers/dsound.cpp +@HAVE_OSSDSP_TRUE@TMP_OSSDSP = drivers/oss.cpp +@HAVE_JACK_TRUE@TMP_JACK = drivers/jack.cpp +@HAVE_SDL_TRUE@TMP_SDL = drivers/sdl.cpp +@HAVE_SDL_TRUE@libsexyal_a_CFLAGS = @SDL_CFLAGS@ +@HAVE_ALSA_TRUE@TMP_ALSA = drivers/alsa.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sexyal/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/sexyal/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +drivers/$(am__dirstamp): + @$(MKDIR_P) drivers + @: > drivers/$(am__dirstamp) +drivers/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) drivers/$(DEPDIR) + @: > drivers/$(DEPDIR)/$(am__dirstamp) +drivers/dummy.$(OBJEXT): drivers/$(am__dirstamp) \ + drivers/$(DEPDIR)/$(am__dirstamp) +drivers/dsound.$(OBJEXT): drivers/$(am__dirstamp) \ + drivers/$(DEPDIR)/$(am__dirstamp) +drivers/oss.$(OBJEXT): drivers/$(am__dirstamp) \ + drivers/$(DEPDIR)/$(am__dirstamp) +drivers/jack.$(OBJEXT): drivers/$(am__dirstamp) \ + drivers/$(DEPDIR)/$(am__dirstamp) +drivers/sdl.$(OBJEXT): drivers/$(am__dirstamp) \ + drivers/$(DEPDIR)/$(am__dirstamp) +drivers/alsa.$(OBJEXT): drivers/$(am__dirstamp) \ + drivers/$(DEPDIR)/$(am__dirstamp) +libsexyal.a: $(libsexyal_a_OBJECTS) $(libsexyal_a_DEPENDENCIES) + $(AM_V_at)-rm -f libsexyal.a + $(AM_V_AR)$(libsexyal_a_AR) libsexyal.a $(libsexyal_a_OBJECTS) $(libsexyal_a_LIBADD) + $(AM_V_at)$(RANLIB) libsexyal.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f drivers/alsa.$(OBJEXT) + -rm -f drivers/dsound.$(OBJEXT) + -rm -f drivers/dummy.$(OBJEXT) + -rm -f drivers/jack.$(OBJEXT) + -rm -f drivers/oss.$(OBJEXT) + -rm -f drivers/sdl.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sexyal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/alsa.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dsound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dummy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/jack.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/oss.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/sdl.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f drivers/$(DEPDIR)/$(am__dirstamp) + -rm -f drivers/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) drivers/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) drivers/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/sexyal/README b/libmednahawk/src/sexyal/README new file mode 100644 index 0000000000..8dfcfdc663 --- /dev/null +++ b/libmednahawk/src/sexyal/README @@ -0,0 +1,15 @@ +SexyAL current bugs and limitations: + + Only supports one input sample format right now: SEXYAL_FMT_PCMS16 + + Does not perform sample-rate conversion. + + The SDL driver is intended to be integrated in an application that already uses SDL, and calls SDL_Init() + before a SexyAL device is opened, and SDL_Quit() after it is closed(the SexyAL SDL sound driver will handle + initializing any SDL subsystems it needs if they're not already initialized, however). + If you want to use it in an application that otherwise does not use SDL, you will need to set the environment + variable "SEXYAL_SDL_STANDALONE" to a non-zero positive integer value before you open the SexyAL device. + + Pause() and Clear() are not completely implemented in drivers yet. + + CanWrite() semantics can be weird, read the comment in "sexyal.h". diff --git a/libmednahawk/src/sexyal/convert.cpp b/libmednahawk/src/sexyal/convert.cpp new file mode 100644 index 0000000000..08cefe0ebe --- /dev/null +++ b/libmednahawk/src/sexyal/convert.cpp @@ -0,0 +1,190 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005-2007 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "sexyal.h" + +#include +#include "convert.h" + +static inline uint16_t FLIP16(uint16_t b) +{ + return((b<<8)|((b>>8)&0xFF)); +} + +static inline uint32_t FLIP32(uint32_t b) +{ + return( (b<<24) | ((b>>8)&0xFF00) | ((b<<8)&0xFF0000) | ((b>>24)&0xFF) ); +} +#include +template +static inline dsf_t SAMP_CONVERT(int16_t in_sample) +{ + if(dsf == SEXYAL_FMT_PCMU8) + return((in_sample + 32768 /*+ (rand() & 127)*/ ) >> 8); + + if(dsf == SEXYAL_FMT_PCMS8) + return(in_sample >> 8); + + if(dsf == SEXYAL_FMT_PCMU16) + return(in_sample + 32768); + + if(dsf == SEXYAL_FMT_PCMS16) + return(in_sample); + + if(dsf == SEXYAL_FMT_PCMU24) + return((in_sample + 32768) << 8); + + if(dsf == SEXYAL_FMT_PCMS24) + return(in_sample << 8); + + if(dsf == SEXYAL_FMT_PCMU32) + return((uint32_t)(in_sample + 32768) << 16); + + if(dsf == SEXYAL_FMT_PCMS32) + return(in_sample << 16); + + if(dsf == SEXYAL_FMT_PCMFLOAT) + return((float)in_sample / 32768); +} + + +template +static void ConvertLoop(const int16_t *src, dsf_t *dest, const int src_chan, const int dest_chan, int32_t frames) +{ + if(src_chan == 1 && dest_chan >= 2) + { + for(int i = 0; i < frames; i++) + { + dsf_t temp = SAMP_CONVERT(*src); + dest[0] = temp; + dest[1] = temp; + src += 1; + dest += 2; + + for(int padc = 2; padc < dest_chan; padc++) + *dest++ = SAMP_CONVERT(0); + } + } + else if(src_chan == 2 && dest_chan == 1) + { + for(int i = 0; i < frames; i++) + { + int32_t mt = (src[0] + src[1]) >> 1; + + dest[0] = SAMP_CONVERT(mt); + src += 2; + dest += 1; + } + } + else //if(src_chan == 2 && dest_chan >= 2) + { + for(int i = 0; i < frames; i++) + { + dest[0] = SAMP_CONVERT(src[0]); + dest[1] = SAMP_CONVERT(src[1]); + src += 2; + dest += 2; + } + + for(int padc = 2; padc < dest_chan; padc++) + *dest++ = SAMP_CONVERT(0); + } +} + + +/* Only supports one input sample format right now: SEXYAL_FMT_PCMS16 */ +void SexiALI_Convert(const SexyAL_format *srcformat, const SexyAL_format *destformat, const void *vsrc, void *vdest, uint32_t frames) +{ + const int16_t *src = (int16_t *)vsrc; + + if(destformat->sampformat == srcformat->sampformat) + if(destformat->channels == srcformat->channels) + if(destformat->revbyteorder == srcformat->revbyteorder) + { + memcpy(vdest, vsrc, frames * (destformat->sampformat >> 4) * destformat->channels); + return; + } + + switch(destformat->sampformat) + { + case SEXYAL_FMT_PCMU8: + ConvertLoop(src, (uint8_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMS8: + ConvertLoop(src, (int8_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMU16: + ConvertLoop(src, (uint16_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMS16: + ConvertLoop(src, (int16_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMU24: + ConvertLoop(src, (uint32_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMS24: + ConvertLoop(src, (int32_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMU32: + ConvertLoop(src, (uint32_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMS32: + ConvertLoop(src, (int32_t*)vdest, srcformat->channels, destformat->channels, frames); + break; + + case SEXYAL_FMT_PCMFLOAT: + ConvertLoop(src, (float*)vdest, srcformat->channels, destformat->channels, frames); + break; + } + + if(destformat->revbyteorder != srcformat->revbyteorder) + { + if((destformat->sampformat >> 4) == 2) + { + uint16_t *dest = (uint16_t *)vdest; + for(uint32_t x = 0; x < frames * destformat->channels; x++) + { + *dest = FLIP16(*dest); + dest++; + } + } + else if((destformat->sampformat >> 4) == 4) + { + uint32_t *dest = (uint32_t *)vdest; + for(uint32_t x = 0; x < frames * destformat->channels; x++) + { + *dest = FLIP32(*dest); + dest++; + } + } + + } +} diff --git a/libmednahawk/src/sexyal/convert.h b/libmednahawk/src/sexyal/convert.h new file mode 100644 index 0000000000..412b7641bc --- /dev/null +++ b/libmednahawk/src/sexyal/convert.h @@ -0,0 +1,2 @@ +void SexiALI_Convert(const SexyAL_format *srcformat, const SexyAL_format *destformat, const void *vsrc, void *vdest, uint32_t frames); + diff --git a/libmednahawk/src/sexyal/drivers/alsa.cpp b/libmednahawk/src/sexyal/drivers/alsa.cpp new file mode 100644 index 0000000000..12f708c75f --- /dev/null +++ b/libmednahawk/src/sexyal/drivers/alsa.cpp @@ -0,0 +1,524 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "../sexyal.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +typedef struct +{ + snd_pcm_t *alsa_pcm; + + uint32_t period_size; + int interleaved; + //bool heavy_sync; +} ADStruct; + + +// TODO: +SexyAL_enumdevice *SexyALI_ALSA_EnumerateDevices(void) +{ + return(NULL); +} + +static int Pause(SexyAL_device *device, int state) +{ + if(0) + snd_pcm_pause(((ADStruct *)device->private_data)->alsa_pcm, state); + else + { + snd_pcm_drop(((ADStruct *)device->private_data)->alsa_pcm); + } + return(0); +} + +static int Clear(SexyAL_device *device) +{ + snd_pcm_drop(((ADStruct *)device->private_data)->alsa_pcm); + + return(1); +} + +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write) +{ + ADStruct *ads = (ADStruct *)device->private_data; + uint32_t ret; + snd_pcm_sframes_t avail; + + + while(/*(ads->heavy_sync && snd_pcm_hwsync(ads->alsa_pcm) < 0) ||*/ (avail = snd_pcm_avail_update(ads->alsa_pcm)) < 0) + { + // If the call to snd_pcm_avail() fails, try to figure out the status of the PCM stream and take the best action. + switch(snd_pcm_state(ads->alsa_pcm)) + { + // This shouldn't happen, but in case it does... + default: //puts("What1?"); + *can_write = device->buffering.buffer_size * (device->format.sampformat >> 4) * device->format.channels; + return(1); + + //default: break; + //case SND_PCM_STATE_RUNNING: break; + //case SND_PCM_STATE_PREPARED: break; + + case SND_PCM_STATE_PAUSED: + case SND_PCM_STATE_DRAINING: + case SND_PCM_STATE_OPEN: + case SND_PCM_STATE_DISCONNECTED: *can_write = device->buffering.buffer_size * (device->format.sampformat >> 4) * device->format.channels; + return(1); + + case SND_PCM_STATE_SETUP: + case SND_PCM_STATE_SUSPENDED: + case SND_PCM_STATE_XRUN: + //puts("XRun1"); + snd_pcm_prepare(ads->alsa_pcm); + *can_write = device->buffering.buffer_size * (device->format.sampformat >> 4) * device->format.channels; + return(1); + } + } + + ret = avail * (device->format.sampformat >> 4) * device->format.channels; + + if(ret < 0) + ret = 0; + + *can_write = ret; + + return(1); +} + +// TODO: Provide de-interleaving code in SexyAL outside of individual drivers + +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len) +{ + ADStruct *ads = (ADStruct *)device->private_data; + + #if 0 + RawCanWrite(device); + #endif + + + //if(ads->heavy_sync) + //{ + // uint32_t cw; + // while(RawCanWrite(device, &cw) > 0 && ((int)cw) < len) usleep(750); + //} + + while(len > 0) + { + int snore = 0; + + do + { + if(ads->interleaved) + snore = snd_pcm_writei(ads->alsa_pcm, data, len / (device->format.sampformat>>4) / device->format.channels); + else + { + if(device->format.channels == 1) + { + const void *foodata[1]; + foodata[0] = data; + snore = snd_pcm_writen(ads->alsa_pcm, (void **)foodata, len / (device->format.sampformat>>4) / device->format.channels); + } + else + { + uint8_t meowdata[device->format.channels][len / device->format.channels] __attribute__ ((aligned(4))); + void *foodata[device->format.channels]; + int i, ch; + int max_moo = len / (device->format.sampformat>>4) / device->format.channels; + int max_ch = device->format.channels; + + for(ch = 0; ch < max_ch; ch++) + foodata[ch] = meowdata[ch]; + + if((device->format.sampformat>>4) == 1) + { + for(ch = 0; ch < max_ch; ch++) + for(i = 0; i < max_moo; i++) + ((uint8_t *)meowdata[ch])[i] = ((const uint8_t *)data)[i * max_ch + ch]; + } + else if((device->format.sampformat>>4) == 2) + { + for(ch = 0; ch < max_ch; ch++) + for(i = 0; i < max_moo; i++) + ((uint16_t *)meowdata[ch])[i] = ((const uint16_t *)data)[i * max_ch + ch]; + } + else if((device->format.sampformat>>4) == 4) + { + for(ch = 0; ch < max_ch; ch++) + for(i = 0; i < max_moo; i++) + ((uint32_t *)meowdata[ch])[i] = ((const uint32_t *)data)[i * max_ch + ch]; + } + snore = snd_pcm_writen(ads->alsa_pcm, foodata, max_moo); + } + } + + if(snore <= 0) + { + switch(snd_pcm_state(ads->alsa_pcm)) + { + // This shouldn't happen, but if it does, and there was an error, exit out of the loopie. + default: //puts("What2"); + if(snore < 0) + snore = len / (device->format.sampformat>>4) / device->format.channels; + break; + + // Don't unplug your sound card, silly human! ;) + case SND_PCM_STATE_OPEN: + case SND_PCM_STATE_DISCONNECTED: snore = len / (device->format.sampformat>>4) / device->format.channels; + //usleep(1000); + break; + + case SND_PCM_STATE_SETUP: + case SND_PCM_STATE_SUSPENDED: + case SND_PCM_STATE_XRUN: //puts("XRun2"); + snd_pcm_prepare(ads->alsa_pcm); + break; + } + } + + } while(snore <= 0); + + data = (const uint8_t*)data + snore * (device->format.sampformat>>4) * device->format.channels; + + len -= snore * (device->format.sampformat>>4) * device->format.channels; + + if(snd_pcm_state(ads->alsa_pcm) == SND_PCM_STATE_PREPARED) + snd_pcm_start(ads->alsa_pcm); + } + + return(1); +} + +static int RawClose(SexyAL_device *device) +{ + if(device) + { + if(device->private_data) + { + ADStruct *ads = (ADStruct *)device->private_data; + snd_pcm_close(ads->alsa_pcm); + free(device->private_data); + } + free(device); + return(1); + } + return(0); +} + +#define ALSA_INIT_CLEANUP \ + if(hw_params) snd_pcm_hw_params_free(hw_params); \ + if(alsa_pcm) snd_pcm_close(alsa_pcm); \ + if(ads) free(ads); \ + if(device) free(device); + +#define ALSA_TRY(func) { \ + int error; \ + error = func; \ + if(error < 0) \ + { \ + printf("ALSA Error: %s %s\n", #func, snd_strerror(error)); \ + ALSA_INIT_CLEANUP \ + return(0); \ + } } + +typedef struct +{ + int sexyal; + bool sexyal_revbyteorder; + snd_pcm_format_t alsa; +} ALSA_SAL_FMAP; + +#ifdef LSB_FIRST + #define FMAP_ENTRY_EPAIR(sal, bf) { sal, false, bf##_LE }, { sal, true, bf##_BE }, +#else + #define FMAP_ENTRY_EPAIR(sal, bf) { sal, false, bf##_BE }, { sal, true, bf##_LE }, +#endif + +static ALSA_SAL_FMAP FormatMap[] = +{ + { SEXYAL_FMT_PCMU8, false, SND_PCM_FORMAT_U8 }, + { SEXYAL_FMT_PCMS8, false, SND_PCM_FORMAT_S8 }, + + + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMU16, SND_PCM_FORMAT_U16) + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMS16, SND_PCM_FORMAT_S16) + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMFLOAT, SND_PCM_FORMAT_FLOAT) + + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMU24, SND_PCM_FORMAT_U24) + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMS24, SND_PCM_FORMAT_S24) + + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMU32, SND_PCM_FORMAT_U32) + FMAP_ENTRY_EPAIR(SEXYAL_FMT_PCMS32, SND_PCM_FORMAT_S32) +}; + +static int Format_ALSA_to_SexyAL(const snd_pcm_format_t alsa_format, bool *revbyteorder) +{ + for(unsigned int i = 0; i < sizeof(FormatMap) / sizeof(ALSA_SAL_FMAP); i++) + { + if(FormatMap[i].alsa == alsa_format) + { + if(revbyteorder) + *revbyteorder = FormatMap[i].sexyal_revbyteorder; + return(FormatMap[i].sexyal); + } + } + printf("ALSA->SexyAL format not found: %d\n", alsa_format); + return(-1); +} + +static snd_pcm_format_t Format_SexyAL_to_ALSA(const int sexyal_format) +{ + for(unsigned int i = 0; i < sizeof(FormatMap) / sizeof(ALSA_SAL_FMAP); i++) + { + if(FormatMap[i].sexyal == sexyal_format) + return(FormatMap[i].alsa); + } + printf("SexyAL->ALSA format not found: %d\n", sexyal_format); + return(SND_PCM_FORMAT_UNKNOWN); +} + + +SexyAL_device *SexyALI_ALSA_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering) +{ + ADStruct *ads = NULL; + SexyAL_device *device = NULL; + snd_pcm_t *alsa_pcm = NULL; + snd_pcm_hw_params_t *hw_params = NULL; + snd_pcm_sw_params_t *sw_params = NULL; + int interleaved = 1; + int desired_pt; // Desired period time, in MICROseconds. + int desired_buffertime; // Desired buffer time, in milliseconds + //bool heavy_sync = FALSE; + snd_pcm_format_t sampformat; + + + desired_pt = buffering->period_us ? buffering->period_us : 1250; // 1.25 milliseconds + desired_buffertime = buffering->ms ? buffering->ms : 32; // 32 milliseconds + + // Try to force at least 2 channels... + if(format->channels < 2) + format->channels = 2; + + //...and at least >= 16-bit samples. Doing so will allow us to achieve lower period sizes(since minimum period sizes in the ALSA core + // are expressed in bytes). + if(format->sampformat == SEXYAL_FMT_PCMU8 || format->sampformat == SEXYAL_FMT_PCMS8) + format->sampformat = SEXYAL_FMT_PCMS16; + + sampformat = Format_SexyAL_to_ALSA(format->sampformat); + + ALSA_TRY(snd_pcm_open(&alsa_pcm, id ? id : "hw:0", SND_PCM_STREAM_PLAYBACK, 0)); + ALSA_TRY(snd_pcm_hw_params_malloc(&hw_params)); + ALSA_TRY(snd_pcm_sw_params_malloc(&sw_params)); + + ALSA_TRY(snd_pcm_hw_params_any(alsa_pcm, hw_params)); + ALSA_TRY(snd_pcm_hw_params_set_periods_integer(alsa_pcm, hw_params)); + + if(snd_pcm_hw_params_set_access(alsa_pcm, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED) < 0) + { + puts("Interleaved format not supported, trying non-interleaved instead. :("); + ALSA_TRY(snd_pcm_hw_params_set_access(alsa_pcm, hw_params, SND_PCM_ACCESS_RW_NONINTERLEAVED)); + interleaved = 0; + } + + if(snd_pcm_hw_params_set_format(alsa_pcm, hw_params, sampformat) < 0) + { + int try_format; + #define NUM_TRY_FORMATS (7 * 2 + 2) + +#ifdef LSB_FIRST + #define TRYF_EPAIR(bf) bf##_LE, bf##_BE, +#else + #define TRYF_EPAIR(bf) bf##_BE, bf##_LE, +#endif + static const snd_pcm_format_t TryFormats[NUM_TRY_FORMATS] = + { + TRYF_EPAIR(SND_PCM_FORMAT_S16) + TRYF_EPAIR(SND_PCM_FORMAT_U16) + TRYF_EPAIR(SND_PCM_FORMAT_S24) + TRYF_EPAIR(SND_PCM_FORMAT_U24) + TRYF_EPAIR(SND_PCM_FORMAT_S32) + TRYF_EPAIR(SND_PCM_FORMAT_U32) + TRYF_EPAIR(SND_PCM_FORMAT_FLOAT) + + SND_PCM_FORMAT_U8, + SND_PCM_FORMAT_S8 + }; + #undef TRYF_EPAIR + + printf("Desired sample format not supported, trying others...\n"); + + for(try_format = 0; try_format < NUM_TRY_FORMATS; try_format++) + { + // Don't retry the original format! + if(TryFormats[try_format] == sampformat) + continue; + + if(snd_pcm_hw_params_set_format(alsa_pcm, hw_params, TryFormats[try_format]) >= 0) + { + sampformat = TryFormats[try_format]; + format->sampformat = Format_ALSA_to_SexyAL(TryFormats[try_format], &format->revbyteorder); + break; + } + } + + if(try_format == NUM_TRY_FORMATS) + { + // TODO: Perhaps we should concatenate all the errors for all the formats tried? + printf("No tried formats supported?!\n"); + ALSA_INIT_CLEANUP + return(0); + } + } + + #if SND_LIB_VERSION >= 0x10009 + ALSA_TRY(snd_pcm_hw_params_set_rate_resample(alsa_pcm, hw_params, 0)); + #endif + + unsigned int rrate = format->rate; + ALSA_TRY(snd_pcm_hw_params_set_rate_near(alsa_pcm, hw_params, &rrate, 0)); + format->rate = rrate; + + // + // Set number of channels + // + { + unsigned int rchan = format->channels; + unsigned int maxchan; + unsigned int minchan; + + maxchan = 8; + ALSA_TRY(snd_pcm_hw_params_set_channels_max(alsa_pcm, hw_params, &maxchan)); + + if(format->channels > 1 && maxchan > 1) + { + minchan = 2; + ALSA_TRY(snd_pcm_hw_params_set_channels_min(alsa_pcm, hw_params, &minchan)); + } + + ALSA_TRY(snd_pcm_hw_params_set_channels_near(alsa_pcm, hw_params, &rchan)); + + assert(rchan <= 8 && rchan > 0); + format->channels = rchan; + } + + // Limit desired_buffertime to what the sound card is capable of at this playback rate. + { + unsigned int btm = 0; + int dir = 0; + ALSA_TRY(snd_pcm_hw_params_get_buffer_time_max(hw_params, &btm, &dir)); + + // btm > 32 may be unnecessary, but it's there in case ALSA returns a bogus value far too small... + if(btm > 32 && desired_buffertime > btm) + desired_buffertime = btm; + + //printf("BTM: %d\n", btm); + } + { + int dir = 0; + unsigned int max_periods; + + ALSA_TRY(snd_pcm_hw_params_get_periods_max(hw_params, &max_periods, &dir)); + if(((int64_t)desired_pt * max_periods) < ((int64_t)1000 * desired_buffertime)) + { + //puts("\nHRMMM. max_periods is not large enough to meet desired buffering size at desired period time.\n"); + desired_pt = 1000 * desired_buffertime / max_periods; + + if(desired_pt > 5400) + desired_pt = 5400; + } + //printf("Max Periods: %d\n", max_periods); + } + + { + snd_pcm_uframes_t tmpps = (int64_t)desired_pt * format->rate / (1000 * 1000); + int dir = 0; + + snd_pcm_hw_params_set_period_size_near(alsa_pcm, hw_params, &tmpps, &dir); + } + + snd_pcm_uframes_t tmp_uft; + tmp_uft = desired_buffertime * format->rate / 1000; + ALSA_TRY(snd_pcm_hw_params_set_buffer_size_near(alsa_pcm, hw_params, &tmp_uft)); + + ALSA_TRY(snd_pcm_hw_params(alsa_pcm, hw_params)); + snd_pcm_uframes_t buffer_size, period_size; + unsigned int periods; + + ALSA_TRY(snd_pcm_hw_params_get_period_size(hw_params, &period_size, NULL)); + ALSA_TRY(snd_pcm_hw_params_get_periods(hw_params, &periods, NULL)); + snd_pcm_hw_params_free(hw_params); + + ALSA_TRY(snd_pcm_sw_params_current(alsa_pcm, sw_params)); + + #if 0 + ALSA_TRY(snd_pcm_sw_params_set_xrun_mode(alsa_pcm, sw_params, SND_PCM_XRUN_NONE)); + #endif + + ALSA_TRY(snd_pcm_sw_params(alsa_pcm, sw_params)); + snd_pcm_sw_params_free(sw_params); + + buffer_size = period_size * periods; + + buffering->period_size = period_size; + buffering->buffer_size = buffer_size; + buffering->latency = buffering->buffer_size; + + device = (SexyAL_device *)calloc(1, sizeof(SexyAL_device)); + ads = (ADStruct *)calloc(1, sizeof(ADStruct)); + + ads->alsa_pcm = alsa_pcm; + ads->period_size = period_size; + ads->interleaved = interleaved; + //ads->heavy_sync = heavy_sync; + + device->private_data = ads; + device->RawWrite = RawWrite; + device->RawCanWrite = RawCanWrite; + device->RawClose = RawClose; + device->Pause = Pause; + device->Clear = Clear; + + memcpy(&device->buffering,buffering,sizeof(SexyAL_buffering)); + memcpy(&device->format,format,sizeof(SexyAL_format)); + + ALSA_TRY(snd_pcm_prepare(alsa_pcm)); + + return(device); +} + diff --git a/libmednahawk/src/sexyal/drivers/dsound.cpp b/libmednahawk/src/sexyal/drivers/dsound.cpp new file mode 100644 index 0000000000..0b907ca076 --- /dev/null +++ b/libmednahawk/src/sexyal/drivers/dsound.cpp @@ -0,0 +1,352 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "../sexyal.h" + +#include +#include +#include + +#undef WINNT +#define NONAMELESSUNION + +#define DIRECTSOUND_VERSION 0x0300 + +#include "dsound.h" + +typedef struct +{ + LPDIRECTSOUND ppDS; /* DirectSound interface object. */ + LPDIRECTSOUNDBUFFER ppbuf; /* Primary buffer. */ + LPDIRECTSOUNDBUFFER ppbufsec; /* Secondary buffer. */ + LPDIRECTSOUNDBUFFER ppbufw; /* Buffer to do writes to. */ + WAVEFORMATEX wf; /* Format of the primary and secondary buffers. */ + long DSBufferSize; /* The size of the buffer that we can write to, in bytes. */ + + long BufHowMuch; /* How many bytes we should try to buffer. */ + DWORD ToWritePos; /* Position which the next write to the buffer + should write to. + */ +} DSFobby; + + +static int Close(SexyAL_device *device); +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write); +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len); + +static int CheckStatus(DSFobby *tmp) +{ + DWORD status = 0; + + if(IDirectSoundBuffer_GetStatus(tmp->ppbufw, &status) != DS_OK) + return(0); + + if(status & DSBSTATUS_BUFFERLOST) + IDirectSoundBuffer_Restore(tmp->ppbufw); + + if(!(status&DSBSTATUS_PLAYING)) + { + tmp->ToWritePos = 0; + IDirectSoundBuffer_SetCurrentPosition(tmp->ppbufsec, 0); + IDirectSoundBuffer_SetFormat(tmp->ppbufw, &tmp->wf); + IDirectSoundBuffer_Play(tmp->ppbufw, 0, 0, DSBPLAY_LOOPING); + } + + return(1); +} + +static int Pause(SexyAL_device *device, int state) +{ + return(0); +} + + + +SexyAL_device *SexyALI_DSound_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering) +{ + SexyAL_device *dev; + DSFobby *fobby; + + DSBUFFERDESC DSBufferDesc; + DSCAPS dscaps; + //DSBCAPS dsbcaps; + + dev = (SexyAL_device *)malloc(sizeof(SexyAL_device)); + fobby = (DSFobby *)malloc(sizeof(DSFobby)); + memset(fobby,0,sizeof(DSFobby)); + + memset(&fobby->wf,0,sizeof(WAVEFORMATEX)); + fobby->wf.wFormatTag = WAVE_FORMAT_PCM; + fobby->wf.nChannels = format->channels; + fobby->wf.nSamplesPerSec = format->rate; + + if(DirectSoundCreate(0,&fobby->ppDS,0) != DS_OK) + { + free(dev); + free(fobby); + return(0); + } + + { + //HWND hWnd = GetForegroundWindow(); // Ugly. + //if(!hWnd) + //{ hWnd=GetDesktopWindow(); exit(1); } + HWND hWnd; + hWnd = GetDesktopWindow(); + IDirectSound_SetCooperativeLevel(fobby->ppDS, hWnd, DSSCL_PRIORITY); + } + memset(&dscaps,0x00,sizeof(dscaps)); + dscaps.dwSize=sizeof(dscaps); + IDirectSound_GetCaps(fobby->ppDS,&dscaps); + IDirectSound_Compact(fobby->ppDS); + + /* Create primary buffer */ + memset(&DSBufferDesc,0x00,sizeof(DSBUFFERDESC)); + DSBufferDesc.dwSize=sizeof(DSBufferDesc); + DSBufferDesc.dwFlags=DSBCAPS_PRIMARYBUFFER; + + if(IDirectSound_CreateSoundBuffer(fobby->ppDS,&DSBufferDesc,&fobby->ppbuf,0) != DS_OK) + { + IDirectSound_Release(fobby->ppDS); + free(dev); + free(fobby); + return(0); + } + + /* Set primary buffer format. */ + if(format->sampformat == SEXYAL_FMT_PCMU8) + fobby->wf.wBitsPerSample=8; + else // if(format->sampformat == SEXYAL_FMT_PCMS16) + { + fobby->wf.wBitsPerSample=16; + format->sampformat=SEXYAL_FMT_PCMS16; + } + + fobby->wf.nBlockAlign = fobby->wf.nChannels * (fobby->wf.wBitsPerSample / 8); + fobby->wf.nAvgBytesPerSec=fobby->wf.nSamplesPerSec*fobby->wf.nBlockAlign; + if(IDirectSoundBuffer_SetFormat(fobby->ppbuf,&fobby->wf) != DS_OK) + { + IDirectSound_Release(fobby->ppbuf); + IDirectSound_Release(fobby->ppDS); + free(dev); + free(fobby); + return(0); + } + + // + // Buffers yay! + // + if(!buffering->ms) + buffering->ms=53; + + buffering->buffer_size = (int64_t)format->rate * buffering->ms / 1000; + fobby->BufHowMuch = buffering->buffer_size * format->channels * (format->sampformat >> 4); + + buffering->latency = buffering->buffer_size; // TODO: Add estimated WaveOut latency when using an emulated DirectSound device. + buffering->period_size = 0; + + /* Create secondary sound buffer */ + { + int64_t padding_extra = ((int64_t)format->rate * 280 / 1000) * format->channels * (format->sampformat >> 4); + + if(padding_extra < (fobby->BufHowMuch * 2)) + padding_extra = fobby->BufHowMuch * 2; + + fobby->DSBufferSize = SexyAL_rupow2(fobby->BufHowMuch + padding_extra); + + //printf("%u\n", fobby->DSBufferSize); + + if(fobby->DSBufferSize < 65536) + fobby->DSBufferSize = 65536; + } + IDirectSoundBuffer_GetFormat(fobby->ppbuf,&fobby->wf,sizeof(WAVEFORMATEX),0); + memset(&DSBufferDesc,0x00,sizeof(DSBUFFERDESC)); + DSBufferDesc.dwSize=sizeof(DSBufferDesc); + DSBufferDesc.dwFlags=DSBCAPS_GETCURRENTPOSITION2; + DSBufferDesc.dwFlags|=DSBCAPS_GLOBALFOCUS; + DSBufferDesc.dwBufferBytes = fobby->DSBufferSize; + DSBufferDesc.lpwfxFormat=&fobby->wf; + if(IDirectSound_CreateSoundBuffer(fobby->ppDS, &DSBufferDesc, &fobby->ppbufsec, 0) != DS_OK) + { + IDirectSound_Release(fobby->ppbuf); + IDirectSound_Release(fobby->ppDS); + free(dev); + free(fobby); + return(0); + } + + IDirectSoundBuffer_SetCurrentPosition(fobby->ppbufsec,0); + fobby->ppbufw=fobby->ppbufsec; + + memcpy(&dev->format, format, sizeof(SexyAL_format)); + + //printf("%d\n",fobby->BufHowMuch); + //fflush(stdout); + + dev->private_data=fobby; + timeBeginPeriod(1); + + dev->RawWrite = RawWrite; + dev->RawCanWrite = RawCanWrite; + dev->RawClose = Close; + dev->Pause = Pause; + + return(dev); +} + +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write) +{ + DSFobby *tmp = (DSFobby *)device->private_data; + DWORD CurWritePos, CurPlayPos = 0; + + if(!CheckStatus(tmp)) + return(0); + + CurWritePos=0; + + if(IDirectSoundBuffer_GetCurrentPosition(tmp->ppbufw,&CurPlayPos,&CurWritePos)==DS_OK) + { + //MDFN_DispMessage("%d",CurWritePos-CurPlayPos); + } + CurWritePos=(CurPlayPos+tmp->BufHowMuch)%tmp->DSBufferSize; + + /* If the current write pos is >= half the buffer size less than the to write pos, + assume DirectSound has wrapped around. + */ + + if(((int32_t)tmp->ToWritePos-(int32_t)CurWritePos) >= (tmp->DSBufferSize/2)) + { + CurWritePos += tmp->DSBufferSize; + //printf("Fixit: %d,%d,%d\n",tmp->ToWritePos,CurWritePos,CurWritePos-tmp->DSBufferSize); + } + + if(tmp->ToWritePos < CurWritePos) + { + int32_t howmuch = (int32_t)CurWritePos - (int32_t)tmp->ToWritePos; + + if(howmuch > tmp->BufHowMuch) /* Oopsie. Severe buffer overflow... */ + { + tmp->ToWritePos = CurWritePos % tmp->DSBufferSize; + } + + *can_write = CurWritePos - tmp->ToWritePos; + } + else + *can_write = 0; + + return(1); +} + +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len) +{ + DSFobby *tmp = (DSFobby *)device->private_data; + + //printf("Pre: %d\n",SexyALI_DSound_RawCanWrite(device)); + //fflush(stdout); + + if(!CheckStatus(tmp)) + return(0); + + /* In this block, we write as much data as we can, then we write + the rest of it in >=1ms chunks. + */ + while(len) + { + VOID *LockPtr[2]={0,0}; + DWORD LockLen[2]={0,0}; + uint32_t curlen; + int rcw_rv; + + while((rcw_rv = RawCanWrite(device, &curlen)) && !curlen) + Sleep(1); + + // If RawCanWrite() failed, RawWrite must fail~ + if(!rcw_rv) + return(0); + + if(curlen > len) + curlen = len; + + if(IDirectSoundBuffer_Lock(tmp->ppbufw, tmp->ToWritePos, curlen, &LockPtr[0], &LockLen[0], &LockPtr[1], &LockLen[1], 0) != DS_OK) + { + return(0); + } + + if(LockPtr[1] != 0 && LockPtr[1] != LockPtr[0]) + { + memcpy(LockPtr[0], data, LockLen[0]); + memcpy(LockPtr[1], (uint8_t *)data + LockLen[0], len - LockLen[0]); + } + else if(LockPtr[0]) + { + memcpy(LockPtr[0], data, curlen); + } + + IDirectSoundBuffer_Unlock(tmp->ppbufw, LockPtr[0], LockLen[0], LockPtr[1], LockLen[1]); + + tmp->ToWritePos = (tmp->ToWritePos + curlen) % tmp->DSBufferSize; + + len -= curlen; + data = (uint8_t *)data + curlen; + + if(len) + Sleep(1); + } // end while(len) loop + + + return(1); +} + + + +static int Close(SexyAL_device *device) +{ + if(device) + { + if(device->private_data) + { + DSFobby *tmp = (DSFobby *)device->private_data; + if(tmp->ppbufsec) + { + IDirectSoundBuffer_Stop(tmp->ppbufsec); + IDirectSoundBuffer_Release(tmp->ppbufsec); + } + if(tmp->ppbuf) + { + IDirectSoundBuffer_Stop(tmp->ppbuf); + IDirectSoundBuffer_Release(tmp->ppbuf); + } + if(tmp->ppDS) + { + IDirectSound_Release(tmp->ppDS); + } + free(device->private_data); + } + free(device); + timeEndPeriod(1); + return(1); + } + return(0); +} + diff --git a/libmednahawk/src/sexyal/drivers/dummy.cpp b/libmednahawk/src/sexyal/drivers/dummy.cpp new file mode 100644 index 0000000000..2d757a8aa2 --- /dev/null +++ b/libmednahawk/src/sexyal/drivers/dummy.cpp @@ -0,0 +1,203 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "../sexyal.h" + +#include +#include +#include +//#include //zero 07-feb-2012 +//#include //zero 07-feb-2012 +#include +#include + + +// FIXME? +#ifdef WIN32 +#include +#include +#endif + + +typedef struct +{ + int paused; + int64_t paused_time; + + int64_t buffering_us; + + int64_t data_written_to; + +} Dummy_Driver_t; + +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write) +{ + Dummy_Driver_t *dstate = (Dummy_Driver_t *)device->private_data; + uint32_t ret; + int64_t curtime = SexyAL_Time64(); + + if(dstate->paused) + curtime = dstate->paused_time; + + if(curtime < dstate->data_written_to) + { + ret = 0; + //printf("%ld\n", curtime - dstate->data_written_to); + } + else + ret = (curtime - dstate->data_written_to) / 1000 * device->format.rate / 1000; + + if(ret > device->buffering.buffer_size) + { + ret = device->buffering.buffer_size; + dstate->data_written_to = curtime - dstate->buffering_us; + } + + *can_write = ret * device->format.channels * (device->format.sampformat >> 4); + + return(1); +} + +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len) +{ + Dummy_Driver_t *dstate = (Dummy_Driver_t *)device->private_data; + + while(len) + { + uint32_t can_write = 0; + + RawCanWrite(device, &can_write); + + if(can_write > len) + can_write = len; + + dstate->data_written_to += can_write / (device->format.channels * (device->format.sampformat >> 4)) * 1000000 / device->format.rate; + + len -= can_write; + + if(len) + { + #ifdef HAVE_USLEEP + usleep(1000); + #elif defined(WIN32) + Sleep(1); + #endif + } + } + + return(1); +} + +static int Pause(SexyAL_device *device, int state) +{ + Dummy_Driver_t *dstate = (Dummy_Driver_t *)device->private_data; + + if(state != dstate->paused) + { + dstate->paused = state; + + if(state) + { + dstate->paused_time = SexyAL_Time64(); + } + else + { + dstate->data_written_to = SexyAL_Time64() - (dstate->paused_time - dstate->data_written_to); + } + } + + return(dstate->paused); +} + +static int Clear(SexyAL_device *device) +{ + Dummy_Driver_t *dstate = (Dummy_Driver_t *)device->private_data; + int64_t curtime = SexyAL_Time64(); + + if(dstate->paused) + curtime = dstate->paused_time; + + dstate->data_written_to = curtime - dstate->buffering_us; + + return(1); +} + +static int RawClose(SexyAL_device *device) +{ + Dummy_Driver_t *dstate = (Dummy_Driver_t *)device->private_data; + + if(dstate) + { + free(dstate); + device->private_data = NULL; + } + + return(1); +} + + +#define DUMMY_INIT_CLEANUP \ + if(device) free(device); \ + if(dstate) free(dstate); + +SexyAL_device *SexyALI_Dummy_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering) +{ + SexyAL_device *device = NULL; + Dummy_Driver_t *dstate = NULL; + + if(!(device = (SexyAL_device *)calloc(1, sizeof(SexyAL_device)))) + { + DUMMY_INIT_CLEANUP + return(NULL); + } + + if(!(dstate = (Dummy_Driver_t *)calloc(1, sizeof(Dummy_Driver_t)))) + { + DUMMY_INIT_CLEANUP + return(NULL); + } + + device->private_data = dstate; + + if(!buffering->ms) + buffering->ms = 32; + + buffering->buffer_size = buffering->ms * format->rate / 1000; + buffering->ms = buffering->buffer_size * 1000 / format->rate; + buffering->latency = buffering->buffer_size; + + dstate->buffering_us = (int64_t)buffering->buffer_size * 1000 * 1000 / format->rate; + + memcpy(&device->format, format, sizeof(SexyAL_format)); + memcpy(&device->buffering, buffering, sizeof(SexyAL_buffering)); + + device->RawCanWrite = RawCanWrite; + device->RawWrite = RawWrite; + device->RawClose = RawClose; + device->Clear = Clear; + device->Pause = Pause; + + return(device); +} + diff --git a/libmednahawk/src/sexyal/drivers/jack.cpp b/libmednahawk/src/sexyal/drivers/jack.cpp new file mode 100644 index 0000000000..bbc2ce9451 --- /dev/null +++ b/libmednahawk/src/sexyal/drivers/jack.cpp @@ -0,0 +1,449 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "../sexyal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static int64_t Time64(void) +{ + return(jack_get_time()); +} + +typedef struct +{ + jack_port_t *output_port[2]; + jack_client_t *client; + jack_ringbuffer_t *tmpbuf[2]; + int BufferSize; + int RealBufferSize; + + int EPMaxVal; // Extra precision max value, in frames. + + // Written to in process(), read from in the main program thread. + jack_ringbuffer_t *timebuf; + + // Read/written to in the main program thread. + int64_t last_time; + int32_t write_space; + + int closed; + + uint64_t underrun_frames; + uint64_t underrun_chunks; + + bool NeedActivate; +} JACKWrap; + +static int RawClose(SexyAL_device *device); + + +static bool DoActivate(SexyAL_device *device) +{ + JACKWrap *jw = (JACKWrap *)device->private_data; + const char **ports; + + if(!jw->NeedActivate) + return(1); + + jw->NeedActivate = 0; + + jw->last_time = Time64(); + jw->write_space = jw->RealBufferSize * sizeof(float); + + if(jack_activate(jw->client)) + { + RawClose(device); + return(0); + } + + if(!(ports = jack_get_ports(jw->client, NULL, NULL, JackPortIsPhysical | JackPortIsInput))) + { + RawClose(device); + return(0); + } + jack_connect(jw->client, jack_port_name(jw->output_port[0]), ports[0]); + + if(device->format.channels == 2) + jack_connect(jw->client, jack_port_name(jw->output_port[1]), ports[1]); + else + jack_connect(jw->client, jack_port_name(jw->output_port[0]), ports[1]); + + free(ports); + + printf("%d\n", (int)jack_port_get_total_latency(jw->client, jw->output_port[0])); + + return(1); +} + +static int process(jack_nframes_t nframes, void *arg) +{ + JACKWrap *jw = (JACKWrap *)arg; + int tch = 1; + int ch; + int canread = jack_ringbuffer_read_space(jw->tmpbuf[0]) / sizeof(jack_default_audio_sample_t); + + if(jw->tmpbuf[1]) + tch = 2; + + if(tch == 2) + { + int canread2 = jack_ringbuffer_read_space(jw->tmpbuf[1]) / sizeof(jack_default_audio_sample_t); + + if(canread2 < canread) canread = canread2; + } + + if(canread > (int)nframes) + canread = nframes; + + for(ch = 0; ch < tch; ch++) + { + jack_default_audio_sample_t *out = (jack_default_audio_sample_t *) jack_port_get_buffer(jw->output_port[ch], nframes); + + jack_ringbuffer_read(jw->tmpbuf[ch], (char *)out,canread * sizeof(jack_default_audio_sample_t)); + + if((int)nframes - canread) /* Buffer underrun. Hmm. */ + { + for(int i = 0; i < (int)nframes - canread; i++) + out[i + canread] = 0; //rand() & 1; + //printf("%d\n", nframes); + } + } + + jw->underrun_frames += nframes - canread; + + if(nframes - canread) + jw->underrun_chunks++; + + { + int64_t buf[2]; + + buf[0] = Time64(); + buf[1] = jw->RealBufferSize * sizeof(float) - (int64_t)jack_ringbuffer_read_space(jw->tmpbuf[0]); + + if(jack_ringbuffer_write(jw->timebuf, (const char *)buf, sizeof(buf)) != sizeof(buf)) + { + puts("oops"); + } + } + //printf("%d\n", nframes); + // Return success(0) + return(0); +} + +static int Get_RCW(SexyAL_device *device, uint32_t *can_write, bool want_nega = false) +{ + JACKWrap *jw = (JACKWrap *)device->private_data; + int32_t cw; + size_t can_read; + int64_t buf[2]; + int32_t extra_precision; + + DoActivate(device); + + if(jw->closed) + return(0); + + can_read = jack_ringbuffer_read_space(jw->timebuf); + + can_read &= ~(sizeof(buf) - 1); + + if(can_read) + { + if(can_read - sizeof(buf)) + jack_ringbuffer_read_advance(jw->timebuf, can_read - sizeof(buf)); + + jack_ringbuffer_read(jw->timebuf, (char *)buf, sizeof(buf)); + + jw->last_time = buf[0]; + jw->write_space = buf[1]; + + //printf("%lld %lld\n", jw->last_time, jw->write_space); + } + + cw = jw->write_space - (jw->RealBufferSize - jw->BufferSize) * sizeof(float); + + extra_precision = ((Time64() - jw->last_time) / 1000 * device->format.rate / 1000); + + if(extra_precision < 0) // Shouldn't happen...maybe if jack is forced to use gettimeofday() instead of clock_gettime() it will + { + //printf("extra_precision < 0: %d\n", extra_precision); + extra_precision = 0; + } + else if(extra_precision > jw->EPMaxVal) // May happen if jackd freezes or system is heavily loaded. + { + extra_precision = jw->EPMaxVal; + //printf("extra_precision > EPMaxVal: %d %d\n", extra_precision, jw->EPMaxVal); + } + + cw += extra_precision * sizeof(float); + + if(cw < 0) + { + if(want_nega) + cw = ~0U; + else + cw = 0; + + *can_write = cw; + + return(1); + } + else if(cw > jw->RealBufferSize * sizeof(float)) + cw = jw->RealBufferSize * sizeof(float); + + *can_write = cw * device->format.channels; + + return(1); +} + +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write) +{ + return(Get_RCW(device, can_write, false)); +} + +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len) +{ + JACKWrap *jw = (JACKWrap *)device->private_data; + + DoActivate(device); + + if(jw->closed) + return(0); + + if(device->format.channels == 2) + { + const int32_t frame_count = len / 2 / sizeof(float); + float chdata[2][frame_count]; + const float *in_data = (float *)data; + + for(int x = 0; x < frame_count; x++) + { + chdata[0][x] = *in_data++; + chdata[1][x] = *in_data++; + } + + for(int ch = 0; ch < 2; ch++) + { + if(jack_ringbuffer_write(jw->tmpbuf[ch], (const char *)chdata[ch], len / 2) != len / 2) + { + puts("JACK ringbuffer write failure?"); + return(0); + } + } + jw->write_space -= len / 2; + } + else + { + if(jack_ringbuffer_write(jw->tmpbuf[0], (const char *)data, len) != len) + { + puts("JACK ringbuffer write failure?"); + return(0); + } + jw->write_space -= len; + } + + uint32_t cw_tmp; + + while(Get_RCW(device, &cw_tmp, true) && cw_tmp == ~0U) + { + usleep(1000); + } + + return(1); +} + +// TODO: How should be implement this without causing race conditions? +static int Clear(SexyAL_device *device) +{ + //JACKWrap *jw = (JACKWrap *)device->private_data; + + DoActivate(device); + + return(1); +} + +static int RawClose(SexyAL_device *device) +{ + if(device) + { + if(device->private_data) + { + JACKWrap *jw = (JACKWrap *)device->private_data; + + if(jw->client) + jack_deactivate(jw->client); + + if(jw->tmpbuf[0]) + { + jack_ringbuffer_free(jw->tmpbuf[0]); + } + + if(jw->tmpbuf[1]) + { + jack_ringbuffer_free(jw->tmpbuf[1]); + } + + if(jw->timebuf) + jack_ringbuffer_free(jw->timebuf); + + if(jw->client && !jw->closed) + jack_client_close(jw->client); + + printf("\n%llu underrun frames in %llu chunks.\n", (unsigned long long)jw->underrun_frames, (unsigned long long)jw->underrun_chunks); + free(device->private_data); + } + free(device); + return(1); + } + return(0); +} + +static void DeadSound(void *arg) +{ + JACKWrap *jw = (JACKWrap *)arg; + + jw->closed = 1; + jw->NeedActivate = 0; + + puts("AGH! Sound server hates us! Let's go on a rampage."); +} + +// TODO +static int Pause(SexyAL_device *device, int state) +{ + //JACKWrap *jw = (JACKWrap *)device->private_data; + + DoActivate(device); + + return(0); +} + +SexyAL_device *SexyALI_JACK_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering) +{ + SexyAL_device *device; + JACKWrap *jw; + + jw = (JACKWrap *)calloc(1, sizeof(JACKWrap)); + + device = (SexyAL_device *)calloc(1, sizeof(SexyAL_device)); + + device->private_data = jw; + + if(!(jw->client = jack_client_open("Mednafen", (jack_options_t)(JackServerName | JackNoStartServer), NULL, id ? id : "default"))) + { + RawClose(device); + return(0); + } + + jack_set_process_callback(jw->client, process, jw); + jack_on_shutdown(jw->client, DeadSound, jw); + + format->rate = jack_get_sample_rate(jw->client); + format->sampformat = SEXYAL_FMT_PCMFLOAT; + + if(!(jw->output_port[0] = jack_port_register(jw->client, "output", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0))) + { + RawClose(device); + return(0); + } + + if(format->channels == 2) + { + if(!(jw->output_port[1] = jack_port_register(jw->client, "output-right", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0))) + { + RawClose(device); + return(0); + } + } + + + if(!buffering->ms) + buffering->ms = 40; + + if(buffering->ms > 1000) + buffering->ms = 1000; + + jw->EPMaxVal = 8192; + + jw->BufferSize = format->rate * buffering->ms / 1000; + + // *2 for safety, perhaps make more precise in the future + jw->RealBufferSize = SexyAL_rupow2(jw->BufferSize + (jw->EPMaxVal + 2048) * 2); + + buffering->buffer_size = jw->BufferSize; + + if(!(jw->tmpbuf[0] = jack_ringbuffer_create(jw->RealBufferSize * sizeof(jack_default_audio_sample_t)))) + { + RawClose(device); + return(0); + } + + if(format->channels == 2) + { + if(!(jw->tmpbuf[1] = jack_ringbuffer_create(jw->RealBufferSize * sizeof(jack_default_audio_sample_t)))) + { + RawClose(device); + return(0); + } + //format->split_stereo = 1; + } + //else + //format->split_stereo = 0; + + // Overkill size, to be on the safe side. :3 + if(!(jw->timebuf = jack_ringbuffer_create(sizeof(int64_t) * 8192))) + { + RawClose(device); + return(0); + } + + jw->NeedActivate = 1; + + buffering->latency = jw->BufferSize; + buffering->period_size = 0; + + memcpy(&device->format,format,sizeof(SexyAL_format)); + memcpy(&device->buffering,buffering,sizeof(SexyAL_buffering)); + + device->RawCanWrite = RawCanWrite; + device->RawWrite = RawWrite; + device->RawClose = RawClose; + device->Clear = Clear; + device->Pause = Pause; + + return(device); +} + diff --git a/libmednahawk/src/sexyal/drivers/oss.cpp b/libmednahawk/src/sexyal/drivers/oss.cpp new file mode 100644 index 0000000000..f2ae85c430 --- /dev/null +++ b/libmednahawk/src/sexyal/drivers/oss.cpp @@ -0,0 +1,421 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "../sexyal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +typedef struct +{ + int fd; + bool alsa_workaround; // TRUE if we're using any OSS older than version 4, which includes ALSA(which conforms to 3.x). + // Applying the workaround on non-ALSA where it's not needed will not hurt too much, it'll + // just make the stuttering due to buffer underruns a little more severe. + // (The workaround is to fix a bug which affects, at least, ALSA 1.0.20 when used with a CS46xx card) + uint8_t *dummy_data; + uint32_t dummy_data_len; +} OSS_Wrap; + + +SexyAL_enumdevice *SexyALI_OSS_EnumerateDevices(void) +{ + SexyAL_enumdevice *ret,*tmp,*last; + struct stat buf; + char fn[64]; + char numstring[64]; + unsigned int n; + + n = 0; + + ret = tmp = last = 0; + + for(;;) + { + snprintf(numstring, 64, "%d", n); + snprintf(fn, 64, "/dev/dsp%s", numstring); + + if(stat(fn,&buf)!=0) break; + + tmp = (SexyAL_enumdevice *)calloc(1, sizeof(SexyAL_enumdevice)); + + tmp->name = strdup(fn); + tmp->id = strdup(numstring); + + if(!ret) ret = tmp; + if(last) last->next = tmp; + + last = tmp; + n++; + } + return(ret); +} + +unsigned int Log2(unsigned int value) +{ + int x=0; + + value>>=1; + while(value) + { + value>>=1; + x++; + } + return(x?x:1); +} + +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len) +{ + OSS_Wrap *ossw = (OSS_Wrap *)device->private_data; + const uint8_t *datau8 = (const uint8_t *)data; + + while(len) + { + ssize_t bytes = write(ossw->fd, datau8, len); + + if(bytes < 0) + { + if(errno == EINTR) + continue; + + fprintf(stderr, "OSS: %d, %m\n", errno); + return(0); + } + else if(bytes > len) + { + fprintf(stderr, "OSS: written bytes > len ???\n"); + bytes = len; + } + len -= bytes; + datau8 += bytes; + } + + return(1); +} + +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write) +{ + OSS_Wrap *ossw = (OSS_Wrap *)device->private_data; + struct audio_buf_info ai; + + TryAgain: + + if(!ioctl(ossw->fd, SNDCTL_DSP_GETOSPACE, &ai)) + { + if(ai.bytes < 0) + ai.bytes = 0; // ALSA is weird + + if(ossw->alsa_workaround && (unsigned int)ai.bytes >= (device->buffering.buffer_size * (device->format.sampformat >> 4) * device->format.channels)) + { + //puts("Underflow fix"); + //fprintf(stderr, "%d\n",ai.bytes); + if(!RawWrite(device, ossw->dummy_data, ossw->dummy_data_len)) + return(0); + goto TryAgain; + } + + *can_write = ai.bytes; + + return(1); + } + else + { + puts("Error"); + return(0); + } + return(1); +} + +static int Pause(SexyAL_device *device, int state) +{ + return(0); +} + +static int Clear(SexyAL_device *device) +{ + OSS_Wrap *ossw = (OSS_Wrap *)device->private_data; + + ioctl(ossw->fd, SNDCTL_DSP_RESET, 0); + return(1); +} + +static int RawClose(SexyAL_device *device) +{ + if(device) + { + if(device->private_data) + { + OSS_Wrap *ossw = (OSS_Wrap *)device->private_data; + + if(ossw->fd != -1) + { + close(ossw->fd); + ossw->fd = -1; + } + free(device->private_data); + } + free(device); + return(1); + } + return(0); +} + +#define OSS_INIT_ERROR_CLEANUP \ + if(fd != -1) \ + { \ + close(fd); \ + fd = -1; \ + } \ + if(ossw) \ + { \ + free(ossw); \ + } \ + if(device) \ + { \ + free(device); \ + device = NULL; \ + } + +SexyAL_device *SexyALI_OSS_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering) +{ + SexyAL_device *device = NULL; + int fd = -1; + unsigned int temp, try_format; + OSS_Wrap *ossw = NULL; + int version = 0; + bool alsa_workaround = FALSE; + int desired_pt; // Desired period time, in MICROseconds. + int desired_buffertime; // Desired buffer time, in milliseconds + + desired_pt = buffering->period_us ? buffering->period_us : 1250; // 1.25 milliseconds + desired_buffertime = buffering->ms ? buffering->ms : 32; // 32 milliseconds + + if((fd = open(id ? id : "/dev/dsp", O_WRONLY)) == -1) + { + puts(strerror(errno)); + return(0); + } + + if(ioctl(fd, OSS_GETVERSION, &version) == -1 || version < 0x040000) + { + puts("\nALSA SNDCTL_DSP_GETOSPACE internal-state-corruption bug workaround mode used."); + alsa_workaround = TRUE; + } + + // Try to force at least 16-bit output and 2 channels so we can get lower period sizes(assuming the low-level device driver + // expresses minimum period size in bytes). + if(format->channels < 2) + format->channels = 2; + if(format->sampformat == SEXYAL_FMT_PCMU8 || format->sampformat == SEXYAL_FMT_PCMS8) + format->sampformat = SEXYAL_FMT_PCMS16; + + /* Set sample format. */ + /* TODO: Handle devices with byte order different from native byte order. */ + /* TODO: Fix fragment size calculation to work well with lower/higher playback rates, + as reported by OSS. + */ + + if(format->sampformat == SEXYAL_FMT_PCMU8) + try_format = AFMT_U8; + else if(format->sampformat == SEXYAL_FMT_PCMS8) + try_format = AFMT_S8; + else if(format->sampformat == SEXYAL_FMT_PCMU16) + try_format = AFMT_U16_LE; + else + try_format = AFMT_S16_NE; + + format->revbyteorder = 0; + + temp = try_format; + if(ioctl(fd, SNDCTL_DSP_SETFMT, &temp) == -1 && temp == try_format) + { + puts(strerror(errno)); + close(fd); + return(0); + } + + switch(temp) + { + case AFMT_U8: format->sampformat = SEXYAL_FMT_PCMU8; + break; + + case AFMT_S8: format->sampformat = SEXYAL_FMT_PCMS8; + break; + + case AFMT_U16_LE: + #ifndef LSB_FIRST + format->revbyteorder=1; + #endif + format->sampformat = SEXYAL_FMT_PCMU16; + break; + + case AFMT_U16_BE: + #ifdef LSB_FIRST + format->revbyteorder=1; + #endif + format->sampformat = SEXYAL_FMT_PCMU16; + break; + + case AFMT_S16_LE: + #ifndef LSB_FIRST + format->revbyteorder=1; + #endif + format->sampformat = SEXYAL_FMT_PCMS16; + break; + + case AFMT_S16_BE: + #ifdef LSB_FIRST + format->revbyteorder=1; + #endif + format->sampformat = SEXYAL_FMT_PCMS16; + break; + + default: close(fd); + return(0); + } + + /* Set number of channels. */ + temp=format->channels; + if(ioctl(fd,SNDCTL_DSP_CHANNELS,&temp)==-1) + { + close(fd); + return(0); + } + + if(temp < 1 || temp > 2) + { + close(fd); + return(0); + } + + format->channels = temp; + + /* Set frame rate. */ + temp = format->rate; + if(ioctl(fd,SNDCTL_DSP_SPEED,&temp)==-1) + { + close(fd); + return(0); + } + format->rate = temp; + + device = (SexyAL_device *)malloc(sizeof(SexyAL_device)); + memcpy(&device->format,format,sizeof(SexyAL_format)); + memcpy(&device->buffering,buffering,sizeof(SexyAL_buffering)); + + int fragcount = 16; + int fragsize = SexyAL_rnearestpow2((int64_t)desired_pt * format->rate / (1000 * 1000), FALSE); //128; //256; + + // Going lower than this is unlikely to work, and since we use this value to calculate the number of fragments, we'll get + // a buffer far larger than we wanted, unless the OSS implementation is nice and adjusts the fragment count when it can't get set fragment size + // specified. + if(fragsize < 16) + fragsize = 16; + + if(fragsize > 512) + fragsize = 512; + + { + int64_t tc; + + /* 2*, >>1, |1 for crude rounding(it will always round 0.5 up, so it is a bit biased). */ + + tc=2 * desired_buffertime * format->rate / 1000 / fragsize; + fragcount=(tc>>1)+(tc&1); //1<sampformat>>4)*format->channels); + + temp|=fragcount<<16; + + ioctl(fd,SNDCTL_DSP_SETFRAGMENT,&temp); + + { + audio_buf_info info; + ioctl(fd,SNDCTL_DSP_GETOSPACE,&info); + + fragsize=info.fragsize/(format->sampformat>>4)/format->channels; + fragcount=info.fragments; + + buffering->buffer_size=fragsize * fragcount; + buffering->period_size = fragsize; + } + + if(!(ossw = (OSS_Wrap *)calloc(1, sizeof(OSS_Wrap)))) + { + OSS_INIT_ERROR_CLEANUP + return(NULL); + } + + ossw->dummy_data_len = (format->sampformat >> 4) * format->channels * (format->rate / 128); + if(!(ossw->dummy_data = (uint8_t *)calloc(1, ossw->dummy_data_len))) + { + OSS_INIT_ERROR_CLEANUP + return(NULL); + } + + if(format->sampformat == SEXYAL_FMT_PCMU8 || format->sampformat == SEXYAL_FMT_PCMU16) + memset(ossw->dummy_data, 0x80, ossw->dummy_data_len); + else + memset(ossw->dummy_data, 0, ossw->dummy_data_len); + + ossw->fd = fd; + + ossw->alsa_workaround = alsa_workaround; + + device->private_data = ossw; + device->RawCanWrite = RawCanWrite; + device->RawWrite = RawWrite; + device->RawClose = RawClose; + device->Clear = Clear; + device->Pause = Pause; + + + buffering->latency = buffering->buffer_size; + + memcpy(&device->buffering,buffering,sizeof(SexyAL_buffering)); + memcpy(&device->format,format,sizeof(SexyAL_format)); + + return(device); +} + diff --git a/libmednahawk/src/sexyal/drivers/sdl.cpp b/libmednahawk/src/sexyal/drivers/sdl.cpp new file mode 100644 index 0000000000..5466afc985 --- /dev/null +++ b/libmednahawk/src/sexyal/drivers/sdl.cpp @@ -0,0 +1,406 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + Note: SDL (incorrectly, one could argue) uses the word "sample" to refer both to monophonic sound samples and + stereo L/R sample pairs. +*/ + + +#include "../sexyal.h" + +#include +#include +#include +#include +#include +#include + +#include + +static int64_t Time64(void) +{ + // Don't use gettimeofday(), it's not monotonic. + // (SDL will use gettimeofday() on UNIXy systems if clock_gettime() is not available, however...) + int64_t ret; + + ret = (int64_t)SDL_GetTicks() * 1000; + + return(ret); +} + +typedef struct +{ + void *Buffer; + int32_t BufferSize; + int32_t RealBufferSize; + + int EPMaxVal; // Extra precision max value, in frames. + + + int32_t BufferSize_Raw; + int32_t RealBufferSize_Raw; + int32_t BufferRead; + int32_t BufferWrite; + int32_t BufferIn; + int32_t BufferGranularity; + + int StartPaused; + int ProgPaused; + + int StandAlone; + + int64_t last_time; +} SDLWrap; + +static void fillaudio(void *udata, uint8_t *stream, int len) +{ + SexyAL_device *device = (SexyAL_device *)udata; + SDLWrap *sw = (SDLWrap *)device->private_data; + int tocopy = len; + + sw->last_time = Time64(); + + if(tocopy > sw->BufferIn) + tocopy = sw->BufferIn; + + //printf("%d\n", len); + + while(len) + { + if(tocopy > 0) + { + int maxcopy = tocopy; + + if((maxcopy + sw->BufferRead) > sw->RealBufferSize_Raw) + maxcopy = sw->RealBufferSize_Raw - sw->BufferRead; + + memcpy(stream, (char *)sw->Buffer + sw->BufferRead, maxcopy); + + sw->BufferRead = (sw->BufferRead + maxcopy) % sw->RealBufferSize_Raw; + + sw->BufferIn -= maxcopy; + + stream += maxcopy; + tocopy -= maxcopy; + len -= maxcopy; + } + else + { + //printf("Underrun by: %d\n", len); + + // Set "stream" to center position. Signed is easy, we can just memset + // the entire buffer to 0. Unsigned 8-bit is easy as well, but we need to take care with unsigned 16-bit to + // take into account any byte-order reversal. + if(SEXYAL_FMT_PCMU8 == device->format.sampformat) + { + memset(stream, 0x80, len); + } + else if(SEXYAL_FMT_PCMU16 == device->format.sampformat) + { + uint16_t fill_value = 0x8000; + + if(device->format.revbyteorder) // Is byte-order reversed from native? + fill_value = 0x0080; + + for(int i = 0; i < len; i += 2) + *(uint16_t *)(stream + i) = fill_value; + } + else + memset(stream, 0, len); + + stream += len; + len = 0; + } + } +} + +static int Get_RCW(SexyAL_device *device, uint32_t *can_write, bool want_nega = false) +{ + SDLWrap *sw = (SDLWrap *)device->private_data; + int64_t curtime; + int32_t cw; + int32_t extra_precision; + + SDL_LockAudio(); + + curtime = Time64(); + + cw = sw->BufferSize_Raw - sw->BufferIn; + + extra_precision = ((curtime - sw->last_time) / 1000 * device->format.rate / 1000); + + if(extra_precision < 0) + { + //printf("extra_precision < 0: %d\n", extra_precision); + extra_precision = 0; + } + else if(extra_precision > sw->EPMaxVal) + { + //printf("extra_precision > EPMaxVal: %d %d\n", extra_precision, sw->EPMaxVal); + extra_precision = sw->EPMaxVal; + } + + cw += extra_precision * device->format.channels * (device->format.sampformat >> 4); + + if(cw < 0) + { + if(want_nega) + *can_write = ~0U; + else + *can_write = 0; + } + else if(cw > sw->BufferSize_Raw) + { + *can_write = sw->BufferSize_Raw; + } + else + *can_write = cw; + + SDL_UnlockAudio(); + + return(1); +} + +static int RawCanWrite(SexyAL_device *device, uint32_t *can_write) +{ + return(Get_RCW(device, can_write, false)); +} + +static int RawWrite(SexyAL_device *device, const void *data, uint32_t len) +{ + SDLWrap *sw = (SDLWrap *)device->private_data; + const uint8_t *data_u8 = (const uint8_t *)data; + + SDL_LockAudio(); + while(len) + { + int maxcopy = len; + + if((maxcopy + sw->BufferWrite) > sw->RealBufferSize_Raw) + maxcopy = sw->RealBufferSize_Raw - sw->BufferWrite; + + memcpy((char*)sw->Buffer + sw->BufferWrite, data_u8, maxcopy); + + sw->BufferWrite = (sw->BufferWrite + maxcopy) % sw->RealBufferSize_Raw; + sw->BufferIn += maxcopy; + + data_u8 += maxcopy; + len -= maxcopy; + } + SDL_UnlockAudio(); + + if(sw->StartPaused) + { + sw->StartPaused = 0; + SDL_PauseAudio(sw->ProgPaused); + } + + uint32_t cw_tmp; + + while(Get_RCW(device, &cw_tmp, true) && cw_tmp == ~0U) + SDL_Delay(1); + + return(1); +} + +static int Pause(SexyAL_device *device, int state) +{ + SDLWrap *sw = (SDLWrap *)device->private_data; + + sw->ProgPaused = state?1:0; + SDL_PauseAudio(sw->ProgPaused | sw->StartPaused); + + return(sw->ProgPaused); +} + +static int Clear(SexyAL_device *device) +{ + SDLWrap *sw = (SDLWrap *)device->private_data; + SDL_LockAudio(); + + SDL_PauseAudio(1); + sw->StartPaused = 1; + sw->BufferRead = sw->BufferWrite = sw->BufferIn = 0; + + SDL_UnlockAudio(); + return(1); +} + +static int RawClose(SexyAL_device *device) +{ + if(device) + { + if(device->private_data) + { + SDLWrap *sw = (SDLWrap *)device->private_data; + if(sw->Buffer) + free(sw->Buffer); + SDL_CloseAudio(); + free(device->private_data); + + if(sw->StandAlone) + { + SDL_Quit(); + //puts("SDL quit"); + } + } + free(device); + return(1); + } + return(0); +} + +SexyAL_device *SexyALI_SDL_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering) +{ + SexyAL_device *device; + SDLWrap *sw; + SDL_AudioSpec desired, obtained; + const char *env_standalone; + int iflags; + int StandAlone = 0; + + env_standalone = getenv("SEXYAL_SDL_STANDALONE"); + if(env_standalone && atoi(env_standalone)) + { + StandAlone = 1; + //puts("Standalone"); + } + + iflags = SDL_INIT_AUDIO | SDL_INIT_TIMER; + + #ifdef SDL_INIT_EVENTTHREAD + iflags |= SDL_INIT_EVENTTHREAD; + #endif + + if(StandAlone) + { + if(SDL_Init(iflags) < 0) + { + puts(SDL_GetError()); + return(0); + } + } + else + { + //printf("%08x %08x %08x\n", iflags, SDL_WasInit(iflags), SDL_WasInit(iflags) ^ iflags); + if(SDL_InitSubSystem(SDL_WasInit(iflags) ^ iflags) < 0) + { + puts(SDL_GetError()); + return(0); + } + } + + sw = (SDLWrap *)calloc(1, sizeof(SDLWrap)); + + sw->StandAlone = StandAlone; + + device = (SexyAL_device *)malloc(sizeof(SexyAL_device)); + memset(device, 0, sizeof(SexyAL_device)); + device->private_data = sw; + + memset(&desired, 0, sizeof(SDL_AudioSpec)); + memset(&obtained, 0, sizeof(SDL_AudioSpec)); + + desired.freq = format->rate; + desired.format = AUDIO_S16; + desired.channels = format->channels; + desired.callback = fillaudio; + desired.userdata = (void *)device; + desired.samples = 256; //512; // FIXME + + if(SDL_OpenAudio(&desired, &obtained) < 0) + { + puts(SDL_GetError()); + RawClose(device); + return(0); + } + + format->channels = obtained.channels; + format->rate = obtained.freq; + + if(obtained.format == AUDIO_U8) + format->sampformat = SEXYAL_FMT_PCMU8; + else if(obtained.format == AUDIO_S8) + format->sampformat = SEXYAL_FMT_PCMS8; + else if(obtained.format == AUDIO_S16LSB || obtained.format == AUDIO_S16MSB) + { + format->sampformat = SEXYAL_FMT_PCMS16; + + if(obtained.format != AUDIO_S16SYS) + format->revbyteorder = 1; + } + else if(obtained.format == AUDIO_U16LSB || obtained.format == AUDIO_U16MSB) + { + format->sampformat = SEXYAL_FMT_PCMU16; + + if(obtained.format != AUDIO_U16SYS) + format->revbyteorder = 1; + } + + if(!buffering->ms) + buffering->ms = 100; + else if(buffering->ms > 1000) + buffering->ms = 1000; + + sw->EPMaxVal = obtained.samples; //8192; + + sw->BufferSize = (format->rate * buffering->ms / 1000) - obtained.samples * 2; + + if(sw->BufferSize < obtained.samples) + sw->BufferSize = obtained.samples; + + //printf("%d\n", sw->BufferSize); + + // *2 for safety room, FIXME? + sw->RealBufferSize = SexyAL_rupow2(sw->BufferSize + (sw->EPMaxVal + 2048) * 2); + + sw->BufferIn = sw->BufferRead = sw->BufferWrite = 0; + + buffering->buffer_size = sw->BufferSize; + + buffering->latency = (obtained.samples * 2 + sw->BufferSize); + buffering->period_size = 0; + + //printf("%d\n", buffering->latency); + + sw->BufferSize_Raw = sw->BufferSize * format->channels * (format->sampformat >> 4); + sw->RealBufferSize_Raw = sw->RealBufferSize * format->channels * (format->sampformat >> 4); + + sw->Buffer = malloc(sw->RealBufferSize_Raw); + + memcpy(&device->format, format, sizeof(SexyAL_format)); + memcpy(&device->buffering, buffering, sizeof(SexyAL_buffering)); + + device->RawCanWrite = RawCanWrite; + device->RawWrite = RawWrite; + device->RawClose = RawClose; + device->Clear = Clear; + device->Pause = Pause; + + sw->StartPaused = 1; + //SDL_PauseAudio(0); + return(device); +} + diff --git a/libmednahawk/src/sexyal/sexyal.cpp b/libmednahawk/src/sexyal/sexyal.cpp new file mode 100644 index 0000000000..be8ed33e66 --- /dev/null +++ b/libmednahawk/src/sexyal/sexyal.cpp @@ -0,0 +1,380 @@ +/* SexyAL - Simple audio abstraction library. + +Copyright (c) 2005-2007 Mednafen Team + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include "sexyal.h" + +#include +#include +#include // For debugging +#include + +#ifdef HAVE_GETTIMEOFDAY +#include +#endif + +#include +#include + +#include "convert.h" + +/* kludge. yay. */ +SexyAL_enumdevice *SexyALI_OSS_EnumerateDevices(void); +SexyAL_device *SexyALI_OSS_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +SexyAL_device *SexyALI_JACK_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +SexyAL_device *SexyALI_SDL_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +SexyAL_device *SexyALI_DSound_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +SexyAL_device *SexyALI_Dummy_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); + +#ifdef HAVE_ALSA +SexyAL_enumdevice *SexyALI_ALSA_EnumerateDevices(void); +SexyAL_device *SexyALI_ALSA_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +#endif + +#ifdef DOS +SexyAL_device *SexyALI_DOS_ES1371_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +SexyAL_device *SexyALI_DOS_SB_Open(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); +#endif + +static uint32_t FtoB(const SexyAL_format *format, uint32_t frames) +{ + return(frames*format->channels*(format->sampformat>>4)); +} + +static uint32_t BtoF(const SexyAL_format *format, uint32_t bytes) +{ + return(bytes / (format->channels * (format->sampformat>>4))); +} + +static uint32_t CanWrite(SexyAL_device *device) +{ + uint32_t bytes; + + if(!device->RawCanWrite(device, &bytes)) + return(0); + + return(BtoF(&device->format, bytes)); +} + +static int Write(SexyAL_device *device, void *data, uint32_t frames) +{ + // The number of frames to convert and write to the output at once, and the chunk size + // of writes to the device when no conversion is done. + // Don't change this much, the drivers aren't written to handle enormous lengths passed to RawWrite(). + #define CONVERT_CHUNK_SIZE 512 //2048 //2048 + + static uint8_t buffer[CONVERT_CHUNK_SIZE * 4 * 8]; // Maximum frame size, 4 bytes * 8 channels + + if(device->srcformat.sampformat == device->format.sampformat && + device->srcformat.channels == device->format.channels && + device->srcformat.rate == device->format.rate && + device->srcformat.revbyteorder == device->format.revbyteorder) + { + const uint8_t *data_in = (const uint8_t *)data; + + while(frames) + { + int32_t write_this_iteration; + + write_this_iteration = frames; + if(write_this_iteration > CONVERT_CHUNK_SIZE) + write_this_iteration = CONVERT_CHUNK_SIZE; + + if(!device->RawWrite(device, data_in, FtoB(&device->format, write_this_iteration))) + return(0); + + frames -= write_this_iteration; + data_in += FtoB(&device->srcformat, write_this_iteration); + } + } + else + { + const uint8_t *data_in = (const uint8_t *)data; + + while(frames) + { + int32_t convert_this_iteration; + + convert_this_iteration = frames; + if(convert_this_iteration > CONVERT_CHUNK_SIZE) + convert_this_iteration = CONVERT_CHUNK_SIZE; + + SexiALI_Convert(&device->srcformat, &device->format, data_in, buffer, convert_this_iteration); + + if(!device->RawWrite(device, buffer, FtoB(&device->format, convert_this_iteration))) + return(0); + + frames -= convert_this_iteration; + data_in += FtoB(&device->srcformat, convert_this_iteration); + } + } + + return(1); +} + +static int Close(SexyAL_device *device) +{ + return(device->RawClose(device)); +} + +int SetConvert(struct __SexyAL_device *device, SexyAL_format *format) +{ + memcpy(&device->srcformat,format,sizeof(SexyAL_format)); + return(1); +} + +void Destroy(SexyAL *iface) +{ + free(iface); +} + +static SexyAL_driver drivers[] = +{ + #if HAVE_ALSA + { SEXYAL_TYPE_ALSA, "ALSA", "alsa", SexyALI_ALSA_Open, SexyALI_ALSA_EnumerateDevices }, + #endif + + #if HAVE_OSSDSP + { SEXYAL_TYPE_OSSDSP, "OSS(/dev/dsp*)", "oss", SexyALI_OSS_Open, SexyALI_OSS_EnumerateDevices }, + #endif + + #if HAVE_DIRECTSOUND + { SEXYAL_TYPE_DIRECTSOUND, "DirectSound", "dsound", SexyALI_DSound_Open, NULL }, + #endif + + #ifdef DOS + { SEXYAL_TYPE_DOS_ES1371, "ES1371", "dos_es1371", SexyALI_DOS_ES1371_Open, NULL }, + { SEXYAL_TYPE_DOS_SB, "Sound Blaster 2.0/Pro/16", "dos_sb", SexyALI_DOS_SB_Open, NULL }, + #endif + + #if HAVE_SDL + { SEXYAL_TYPE_SDL, "SDL", "sdl", SexyALI_SDL_Open, NULL }, + #endif + + #if HAVE_JACK + { SEXYAL_TYPE_JACK, "JACK", "jack", SexyALI_JACK_Open, NULL }, + #endif + + { SEXYAL_TYPE_DUMMY, "Dummy", "dummy", SexyALI_Dummy_Open, NULL }, + + { 0, NULL, NULL, NULL, NULL } +}; + +static SexyAL_driver *FindDriver(int type) +{ + int x = 0; + + while(drivers[x].name) + { + if(drivers[x].type == type) + return(&drivers[x]); + + x++; + } + return(0); +} + +static SexyAL_device *Open(SexyAL *iface, const char *id, SexyAL_format *format, SexyAL_buffering *buffering, int type) +{ + SexyAL_device *ret; + SexyAL_driver *driver; + + driver = FindDriver(type); + if(!driver) + return(0); + + if(id && id[0] == 0) // Set pointer to NULL on empty string. + id = NULL; + + if(id) + { + if(!strcmp(id, "default")) + id = NULL; + else if(!strncmp(id, "sexyal-literal-", strlen("sexyal-literal-"))) + id += strlen("sexyal-literal-"); + } + + assert(0 == buffering->buffer_size); + assert(0 == buffering->period_size); + assert(0 == buffering->latency); + + if(!(ret = driver->Open(id, format, buffering))) + return(0); + + assert(0 != buffering->buffer_size); + //assert(0 != buffering->period_size); + assert(0 != buffering->latency); + + buffering->ms = (uint64_t)buffering->buffer_size * 1000 / format->rate; + buffering->period_us = (uint64_t)buffering->period_size * (1000 * 1000) / format->rate; + + ret->Write = Write; + ret->Close = Close; + ret->CanWrite = CanWrite; + ret->SetConvert = SetConvert; + + return(ret); +} + +static SexyAL_enumtype *EnumerateTypes(SexyAL *sal) +{ + SexyAL_enumtype *typies; + int numdrivers = sizeof(drivers) / sizeof(SexyAL_driver); + int x; + + typies = (SexyAL_enumtype *)malloc(numdrivers * sizeof(SexyAL_enumtype)); + memset(typies, 0, numdrivers * sizeof(SexyAL_enumtype)); + + x = 0; + + do + { + typies[x].name = drivers[x].name; + typies[x].short_name = drivers[x].short_name; + typies[x].type = drivers[x].type; + } while(drivers[x++].name); + + return(typies); +} + +static SexyAL_enumdevice * EnumerateDevices(SexyAL *iface, int type) +{ + SexyAL_driver *driver; + + driver = FindDriver(type); + + if(!driver) + return(0); + + if(driver->EnumerateDevices) + return(driver->EnumerateDevices()); + + return(0); +} + +void *SexyAL_Init(int version) +{ + SexyAL *iface; + + iface = (SexyAL *)malloc(sizeof(SexyAL)); + + iface->Open=Open; + iface->Destroy=Destroy; + + iface->EnumerateTypes = EnumerateTypes; + iface->EnumerateDevices = EnumerateDevices; + return((void *)iface); +} + + +// Source: http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 +// Rounds up to the nearest power of 2. +uint32_t SexyAL_rupow2(uint32_t v) +{ + v--; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v++; + + v += (v == 0); + + return(v); +} + +int32_t SexyAL_rnearestpow2(int32_t v, bool round_halfway_up) +{ + int32_t upper, lower; + int32_t diff_upper, diff_lower; + + upper = SexyAL_rupow2(v); + lower = upper >> 1; + + if(!lower) + lower = 1; + + diff_upper = abs(v - upper); + diff_lower = abs(v - lower); + + if(diff_upper == diff_lower) + { + return(round_halfway_up ? upper : lower); + } + else if(diff_upper < diff_lower) + return(upper); + + return(lower); +} + +// Returns (preferably-monotonic) time in microseconds. +int64_t SexyAL_Time64(void) +{ + static bool cgt_fail_warning = 0; + + #if HAVE_CLOCK_GETTIME && ( _POSIX_MONOTONIC_CLOCK > 0 || defined(CLOCK_MONOTONIC)) + struct timespec tp; + + if(clock_gettime(CLOCK_MONOTONIC, &tp) == -1) + { + if(!cgt_fail_warning) + printf("clock_gettime() failed: %s\n", strerror(errno)); + cgt_fail_warning = 1; + } + else + { + static bool res_test = 0; + struct timespec res; + + if(!res_test && clock_getres(CLOCK_MONOTONIC, &res) != -1) + { + printf("%lld %ld\n", (long long)res.tv_sec, (long)res.tv_nsec); + res_test = 1; + } + + return((int64_t)tp.tv_sec * (1000 * 1000) + tp.tv_nsec / 1000); + } + #else + #pragma message "SexyAL: clock_gettime() with CLOCK_MONOTONIC not available" + #endif + + + #if HAVE_GETTIMEOFDAY + // Warning: gettimeofday() is not guaranteed to be monotonic!! + struct timeval tv; + + if(gettimeofday(&tv, NULL) == -1) + { + puts("gettimeofday() error"); + return(0); + } + + return((int64_t)tv.tv_sec * 1000000 + tv.tv_usec); + #else + #pragma message "SexyAL: gettimeofday() not available!!!" + #endif + + // Yeaaah, this isn't going to work so well. + return((int64_t)time(NULL) * 1000000); +} diff --git a/libmednahawk/src/sexyal/sexyal.h b/libmednahawk/src/sexyal/sexyal.h new file mode 100644 index 0000000000..bf7b9eab9c --- /dev/null +++ b/libmednahawk/src/sexyal/sexyal.h @@ -0,0 +1,183 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +typedef struct +{ + int type; + const char *name; + const char *short_name; +} SexyAL_enumtype; + +typedef struct +{ + uint32_t sampformat; + uint32_t channels; /* 1 = mono, 2 = stereo (actual device output channels will be 1<=ch<=8, however, + source format MUST be 1 or 2, since the converter can't handle other numbers of source + channels) */ + uint32_t rate; /* Number of frames per second, 22050, 44100, etc. */ + bool revbyteorder; /* 0 = Native(to CPU), 1 = Reversed. PDP can go to hell. */ + bool split_stereo; /* TODO: 0 = Interleaved stereo, 1 = split streams. */ +} SexyAL_format; + +typedef struct +{ + /* Inputs(requested) and Outputs(obtained; dev-note: ms and period_us outputs calculated by core SexyAL code, not sound device interface/driver code) */ + uint32_t ms; /* Desired buffer size, in milliseconds. */ + uint32_t period_us; /* Desired period size, in MICROseconds */ + + /* Outputs Only(obtained) */ + uint32_t buffer_size; /* Buffer size(as in the maximum value returned by CanWrite()). In frames. */ + uint32_t period_size; /* Period/Fragment size. In frames. */ + uint32_t latency; /* Estimated total latency(between first Write() and actual sound output; essentially equal to the maximum value of + CanWrite() plus any additional internal or external buffering). In frames. */ + + //uint32_t ms; /* Milliseconds of buffering, approximate(application code should set this value to control buffer size). */ + //uint32_t period_time; /* If non-zero, specifies the desired period/fragment size, in frames. */ + //uint32_t size; /* Shouldn't be filled in by application code. */ + //uint32_t latency; /* Estimated latency between Write() and sound output, in frames. */ +} SexyAL_buffering; + + +// Bits 4 through 7 should reflect the byte count for each sample. +// If the format is integer PCM, bit 0 should be 0 if unsigned, 1 if signed. +enum +{ + SEXYAL_FMT_PCMU8 = 0x10, + SEXYAL_FMT_PCMS8 = 0x11, + SEXYAL_FMT_PCMU16 = 0x20, + SEXYAL_FMT_PCMS16 = 0x21, + + SEXYAL_FMT_PCMU24 = 0x40, + SEXYAL_FMT_PCMS24 = 0x41, + + SEXYAL_FMT_PCMU32 = 0x42, + SEXYAL_FMT_PCMS32 = 0x43, + + SEXYAL_FMT_PCMFLOAT = 0x4F // 32-bit floating point +}; + +#if 0 +class SexyAL_Device +{ + public: + + SexyAL_Device(); + + virtual ~SexyAL_Device() + { + Close(); + } + + virtual int Open(const char *id, const SexyAL_format *format, const SexyAL_buffering *buffering, + SexyAL_format *got_format, SexyAL_buffering *got_buffering); + + virtual int Close(void); + + virtual int Pause(int state); + virtual int Clear(void); + + virtual int RawWrite(uint32_t bytes); + virtual int RawCanWrite(uint32_t *can_write); + + protected: + SexyAL_format format; + SexyAL_buffering buffering; +}; +#endif + +typedef struct __SexyAL_device +{ + int (*SetConvert)(struct __SexyAL_device *, SexyAL_format *); + int (*Write)(struct __SexyAL_device *, void *data, uint32_t frames); + + + // Returns the number of frames that can be written via Write() without blocking. + // This number may be partially estimated for some drivers, and it may be higher than the actual + // amount of data that can be written without blocking. Additionally, it will not be higher + // than the buffer size(unless there's a bug somewhere ;) ). + // So, try to use this function for advisory timing purposes only. + uint32_t (*CanWrite)(struct __SexyAL_device *); + + int (*Close)(struct __SexyAL_device *); + + // Returns 1 on success, 0 on failure(failure if the new pause state equals the old pause state, or another + // problem occurs). + int (*Pause)(struct __SexyAL_device *, int state); + + // Clears all audio data pending play on the output device. + // Returns 1 on success, 0 on failure. + int (*Clear)(struct __SexyAL_device *); + + // Writes "bytes" bytes of data from "data" to the device, blocking if necessary. + // Returns 1 on success, 0 on failure(probably fatal). + int (*RawWrite)(struct __SexyAL_device *, const void *data, uint32_t bytes); + + // Sets *count to the number of bytes that can be written to the device without blocking. + // Returns 1 on success, 0 on failure(probably fatal). + int (*RawCanWrite)(struct __SexyAL_device *, uint32_t *can_write); + + // Closes the device. + // Returns 1 on success, 0 on failure(failure should indicate some resources may be left open/allocated due to + // an erro, but calling RawClose() again is illegal). + int (*RawClose)(struct __SexyAL_device *); + + SexyAL_format format; + SexyAL_format srcformat; + SexyAL_buffering buffering; + void *private_data; +} SexyAL_device; + +typedef struct __SexyAL_enumdevice +{ + char *name; + char *id; + struct __SexyAL_enumdevice *next; +} SexyAL_enumdevice; + +typedef struct +{ + int type; + const char *name; + const char *short_name; + + SexyAL_device * (*Open)(const char *id, SexyAL_format *format, SexyAL_buffering *buffering); + SexyAL_enumdevice *(*EnumerateDevices)(void); +} SexyAL_driver; + +enum +{ + SEXYAL_TYPE_OSSDSP = 0x001, + SEXYAL_TYPE_ALSA = 0x002, + SEXYAL_TYPE_DIRECTSOUND = 0x010, + SEXYAL_OSX_COREAUDIO = 0x030, /* TODO */ + + SEXYAL_TYPE_ESOUND = 0x100, + SEXYAL_TYPE_JACK = 0x101, + SEXYAL_TYPE_SDL = 0x102, + + SEXYAL_TYPE_DOS_SB = 0x180, + SEXYAL_TYPE_DOS_ES1371 = 0x181, + + SEXYAL_TYPE_DUMMY = 0x1FF +}; + +typedef struct __SexyAL { + SexyAL_device * (*Open)(struct __SexyAL *, const char *id, SexyAL_format *, SexyAL_buffering *buffering, int type); + SexyAL_enumdevice *(*EnumerateDevices)(struct __SexyAL *, int type); + + SexyAL_enumtype * (*EnumerateTypes)(struct __SexyAL *); + void (*Destroy)(struct __SexyAL *); +} SexyAL; + +/* Initializes the library, requesting the interface of the version specified and output type. */ +void *SexyAL_Init(int version); + + + +/* Utility functions: */ +uint32_t SexyAL_rupow2(uint32_t v); +int32_t SexyAL_rnearestpow2(int32_t v, bool round_halfway_up = true); +int64_t SexyAL_Time64(void); diff --git a/libmednahawk/src/sms/Makefile.am b/libmednahawk/src/sms/Makefile.am new file mode 100644 index 0000000000..d4efee25b4 --- /dev/null +++ b/libmednahawk/src/sms/Makefile.am @@ -0,0 +1,10 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/src/hw_sound + +noinst_LIBRARIES = libsms.a + +sms_SOURCES = cart.cpp memz80.cpp pio.cpp render.cpp romdb.cpp sms.cpp sound.cpp system.cpp tms.cpp vdp.cpp + +libsms_a_SOURCES = $(sms_SOURCES) + diff --git a/libmednahawk/src/sms/Makefile.in b/libmednahawk/src/sms/Makefile.in new file mode 100644 index 0000000000..1c3269dfd0 --- /dev/null +++ b/libmednahawk/src/sms/Makefile.in @@ -0,0 +1,609 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/sms +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libsms_a_AR = $(AR) $(ARFLAGS) +libsms_a_LIBADD = +am__objects_1 = cart.$(OBJEXT) memz80.$(OBJEXT) pio.$(OBJEXT) \ + render.$(OBJEXT) romdb.$(OBJEXT) sms.$(OBJEXT) sound.$(OBJEXT) \ + system.$(OBJEXT) tms.$(OBJEXT) vdp.$(OBJEXT) +am_libsms_a_OBJECTS = $(am__objects_1) +libsms_a_OBJECTS = $(am_libsms_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libsms_a_SOURCES) +DIST_SOURCES = $(libsms_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)/src/hw_cpu -I$(top_srcdir)/src/hw_sound +noinst_LIBRARIES = libsms.a +sms_SOURCES = cart.cpp memz80.cpp pio.cpp render.cpp romdb.cpp sms.cpp sound.cpp system.cpp tms.cpp vdp.cpp +libsms_a_SOURCES = $(sms_SOURCES) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sms/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/sms/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libsms.a: $(libsms_a_OBJECTS) $(libsms_a_DEPENDENCIES) + $(AM_V_at)-rm -f libsms.a + $(AM_V_AR)$(libsms_a_AR) libsms.a $(libsms_a_OBJECTS) $(libsms_a_LIBADD) + $(AM_V_at)$(RANLIB) libsms.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memz80.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/render.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/romdb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/sms/cart.cpp b/libmednahawk/src/sms/cart.cpp new file mode 100644 index 0000000000..ae0e821190 --- /dev/null +++ b/libmednahawk/src/sms/cart.cpp @@ -0,0 +1,284 @@ +/* + Copyright (C) 1998-2004 Charles MacDonald + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "shared.h" +#include "romdb.h" +#include "cart.h" +#include "../general.h" +#include "../md5.h" + +namespace MDFN_IEN_SMS +{ + +static uint8 *rom = NULL; +static uint8 pages; +static uint32 page_mask8; +static uint32 page_mask16; +static uint32 rom_mask; +static uint32 crc; +static int mapper; +static uint8 *sram = NULL; + +static uint8 fcr[4]; +static uint8 BankAdd; + +static uint8 CodeMasters_Bank[3]; + +static uint8 *CastleRAM = NULL; + +static void writemem_mapper_sega(uint16 A, uint8 V) +{ + if(A >= 0xFFFC) + { + fcr[A & 0x3] = V; + if(A >= 0xFFFD) + { + static const int BankAddoo[4] = { 0x00, 0x18, 0x10, 0x08 }; + BankAdd = BankAddoo[fcr[0] & 0x3]; + } + } + if(fcr[0] & 0x3) + printf("%02x\n", fcr[0] & 0x3); +} + +static void writemem_mapper_codies(uint16 A, uint8 V) +{ + if(A < 0xC000) + { + if((CodeMasters_Bank[1] & 0x80) && (A >= 0xA000)) + sram[A & 0x1FFF] = V; + else + CodeMasters_Bank[A >> 14] = V; + } +} + +void SMS_CartReset(void) +{ + CodeMasters_Bank[0] = 0; + CodeMasters_Bank[1] = 0; + CodeMasters_Bank[2] = 0; + + fcr[0] = 0x00; + fcr[1] = 0x00; + fcr[2] = 0x01; + fcr[3] = 0x02; + + BankAdd = 0x00; +} + +static const char *sms_mapper_string_table[] = +{ + "None", + "Sega", + "CodeMasters", + "32KiB ROM + 8KiB RAM", +}; + +bool SMS_CartInit(const uint8 *data, uint32 size) +{ + if(!(rom = (uint8*) MDFN_malloc(size, _("Cart ROM")))) + return(0); + + pages = size / 0x2000; + page_mask8 = round_up_pow2(pages) - 1; + page_mask16 = page_mask8 >> 1; + rom_mask = (round_up_pow2(pages) * 8192) - 1; + + crc = crc32(0, data, size); + + md5_context md5; + md5.starts(); + md5.update(data, size); + md5.finish(MDFNGameInfo->MD5); + + memcpy(rom, data, size); + + if(size <= 40960) + mapper = MAPPER_NONE; + else + mapper = MAPPER_SEGA; + + const rominfo_t *romi; + + if((romi = find_rom_in_db(crc))) + { + mapper = romi->mapper; + sms.display = romi->display; + sms.territory = romi->territory; + if(romi->system != -1) + sms.console = romi->system; + } + + if(mapper == MAPPER_CASTLE) + { + CastleRAM = (uint8 *)calloc(1, 8192); + } + sram = (uint8 *)calloc(1, 0x8000); + + MDFN_printf(_("ROM: %dKiB\n"), (size + 1023) / 1024); + MDFN_printf(_("ROM CRC32: 0x%08x\n"), crc); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + MDFN_printf(_("Mapper: %s\n"), sms_mapper_string_table[mapper]); + MDFN_printf(_("Territory: %s\n"), (sms.territory == TERRITORY_DOMESTIC) ? _("Domestic") : _("Export")); + + // Load battery-backed RAM, if any. + if(sram) + { + gzFile savegame_fp; + + savegame_fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"); + if(savegame_fp) + { + gzread(savegame_fp, sram, 0x8000); + gzclose(savegame_fp); + } + } + return(TRUE); +} + +void SMS_CartClose(void) +{ + if(sram) + { + for(int i = 0; i < 0x8000; i++) + { + if(sram[i] != 0x00) + { + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, sram, 0x8000); + break; + } + } + } + + if(rom) + { + free(rom); + rom = NULL; + } + + if(CastleRAM) + { + free(CastleRAM); + CastleRAM = NULL; + } + + if(sram) + { + free(sram); + sram = NULL; + } +} + +void SMS_CartWrite(uint16 A, uint8 V) +{ + if(mapper == MAPPER_CODIES) + writemem_mapper_codies(A, V); + else if(mapper == MAPPER_SEGA) + { + if(A >= 0x8000 && A < 0xC000) + { + if(fcr[0] & 0x8) + sram[((fcr[0] & 0x4) ? 0x4000 : 0x0000) + (A & 0x3FFF)] = V; + } + else + writemem_mapper_sega(A, V); + } + else if(mapper == MAPPER_CASTLE) + { + if(A >= 0x8000 && A <= 0xBFFF) + CastleRAM[A & 0x1FFF] = V; + } + else if(A < 0xc000) + printf("Bah: %04x %02x\n", A, V); +} + +uint8 SMS_CartRead(uint16 A) +{ + if(mapper == MAPPER_CODIES) + { + if(A < 0x4000) // 0 - 0x3fff + { + return(rom[(A & 0x3FFF) + ((CodeMasters_Bank[0] & page_mask16) << 14)]); + } + else if(A < 0x8000) // 0x4000 - 0x7FFF + { + return(rom[(A & 0x3FFF) + ((CodeMasters_Bank[1] & page_mask16) << 14)]); + } + else if(A < 0xC000) // 0x8000 - 0xBFFF + { + if((CodeMasters_Bank[1] & 0x80) && (A >= 0xA000)) + return(sram[A & 0x1FFF]); + + return(rom[(A & 0x3FFF) + ((CodeMasters_Bank[2] & page_mask16) << 14)]); + } + } + else if(mapper == MAPPER_SEGA) + { + if(A < 0x4000) + { + if(A < 0x0400) + return(rom[A]); + else + return(rom[(A & 0x3FFF) + (((fcr[1] + BankAdd) & page_mask16) << 14) ]); + } + else if(A < 0x8000) + { + return(rom[(A & 0x3FFF) + (((fcr[2] + BankAdd) & page_mask16) << 14) ]); + } + else if(A < 0xC000) + { + if(fcr[0] & 0x8) + return(sram[((fcr[0] & 0x4) ? 0x4000 : 0x0000) + (A & 0x3FFF)]); + else + return(rom[(A & 0x3FFF) + (((fcr[3] + BankAdd) & page_mask16) << 14) ]); + } + } + else if(mapper == MAPPER_CASTLE) + { + if(A >= 0x8000 && A <= 0xBFFF) + return(CastleRAM[A & 0x1FFF]); + else + return(rom[A & rom_mask]); + } + else + { + return(rom[A & rom_mask]); + } + return((((A >> 8) | data_bus_pullup) & ~data_bus_pulldown)); +} + +int SMS_CartStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(sram, 0x8000), + SFARRAY(fcr, 4), + SFVAR(BankAdd), + SFARRAY(CodeMasters_Bank, 3), + SFARRAY(CastleRAM, CastleRAM ? 8192 : 0), + SFEND + }; + + int ret = 1; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "CART"); + + return(ret); +} + +} diff --git a/libmednahawk/src/sms/cart.h b/libmednahawk/src/sms/cart.h new file mode 100644 index 0000000000..3913c4bbec --- /dev/null +++ b/libmednahawk/src/sms/cart.h @@ -0,0 +1,16 @@ +#ifndef __SMS_CART_H +#define __SMS_CART_H + +namespace MDFN_IEN_SMS +{ + +bool SMS_CartInit(const uint8 *data, uint32 size); + +void SMS_CartWrite(uint16 A, uint8 V); +uint8 SMS_CartRead(uint16 A); +void SMS_CartReset(void); +void SMS_CartClose(void); +int SMS_CartStateAction(StateMem *sm, int load, int data_only); + +} +#endif diff --git a/libmednahawk/src/sms/docs/changelog b/libmednahawk/src/sms/docs/changelog new file mode 100644 index 0000000000..0922b59ca1 --- /dev/null +++ b/libmednahawk/src/sms/docs/changelog @@ -0,0 +1,108 @@ + + Change log + + [1.2] + + - Fixed smptab allocation error. + - Various source code cleanups. + - Minor tweaks to sync with Mac source changes. + - New sound update code from Richard Bannister. + - Added more support for PAL hardware. + - Added partial support for Codemasters games. + - Fixed some aspects of ROM loading. + - Fixed SRAM restore bug in save states. + - Fixed viewport size check when going from extended to normal mode, which + fixes Fantastic Dizzy opening screen and V counter test program. + - Split up VDP emulation into SMS/GG/MD specific parts. + - Added support for different port I/O port memory maps. + - Fixed mapper restore bug in save states. + - Fixed UI key management in dos/main.c + - Improved HV counter emulation. + - Added dump VRAM keyboard shortcut. (Alt+V) + - Split up DOS code into different modules. + - Fixed EXT connector and related I/O port 2 behavior. + - Added GG I/O register emulation. + - Changed SRAM management. + - Modified use of reset/poweron/poweroff functions. + - Added configuration via CRC for some Codemasters games. + - Fixed implementation of GG input port. + - Added cycle counter feature to Z80 emulator. + - Added shutdown functions to other modules. + - Mapped 2nd player inputs to keyboard numeric pad in dos/main.c + - Fixed reset button handling in dos/main.c + - Moved Z80 port handlers to memz80.c + - Fixed console type assign in loadrom.c (removed TYPE_* defines) + - Added support for I/O chip disable control. + - Rewrote I/O chip emulation. + - Fixed pixel LUT to handle sprite collision behind high priority BG tiles. + - Added emulation of sprite overflow status flag. + - Added 'granularity' member to bitmap struct and fixed DOS blur code. + - Fixed FM sound restore on state load / FM emulator change. + - Corrected screen blanking width. + - Removed sprite limit disable feature. + - Added support for extended display modes. + - Added partial support for PAL display timing. + - Removed BMP_* macros, replaced with bitmap.viewport.* variables. + - Removed Y's (J) rendering hack that was problematic in other games. + - Added error logging routines. + - Removed Game Gear specific rendering speedups. + - Replaced cart.type with sms.console, replaced access with IS_GG macro. + - Renamed INPUT_SOFT_RESET to INPUT_RESET. Use for SMS games only. + - Removed INPUT_HARD_RESET, use system_reset() instead. + - Modified vdp_ctrl_w() to update address register LSB during leading write. + - Changed path length in wram/state/snap routines to PATH_MAX in DOS code. + - Added define to specify message length in DOS code. + - Added r/w handlers for FM detection latch access, renamed fm* -> fmunit* + - Added territory/console members to struct sms (removed sms.country). + Removed TYPE_* and replaced with TERRITORY_* enums. + - Fixed FM register restore during state load when sound is disabled. + - Updated memory system to support 1K pages. + - Updated zlib to 1.2.1 and unzip.c to 1.0 + - Moved sound management out of system.c into sound/sound.c,fmintf.c + - Moved state management out of system.c into state.c + - Rearranged header file include order in system.h + - Added support for MAME YM2413 emulator + - Abstracted FM sound chip interface to support both YM2413 emulators + - Updated timeline in dos/main.c and system.c + - Removed SSL logging + - Fixed path length in loadrom.c to MAX_PATH from limits.h + - Added library version display option to dos/main.c + - Moved file I/O code to fileio.c + - Fixed loadrom.c to support 16K ROM images + - Updated documentation and porting instructions + - Modified EMU2413 to have update function for 2-channel output + - Modified dos\config.c to ensure parameters are left during option parsing + - Modified YM2413 emulator to check for NULL pointer during shutdown + - Cleaned up variable names in snd struct + - Added default mixer callback + - Made sound_shutdown() free memory + - Modified sound_init() to allow re-initialization + - Cleaned up system.h, sms.h, vdp.h + - Optimized color expansion for paletteized 8-bit format in render.c + - Added Maxim's SN76489 emulator, removed the old one + - Added YM2413 context management + - Fixed PSG/FM state save/load behavior + + [0.9.4b] + + - Removed calls to text_mode() and changed textprintf() to textprintf_ex(). + for compatability with Allegro v4.1.11 (WIP). + - Removed VERSION from shared.h and add APP_NAME, APP_VERSION to system.h. + - Changed TYPE_OVERSEAS to TYPE_EXPORT in sms.h. + - Renamed dos.c/dos.h to main.c/main.h. + - Fixed FPS meter state display. + - Moved 1P buttons from ALT/LCTRL keys to S/A keys. + - Added work RAM dump feature (Alt+W). + - Added mostly complete HV counter tables to hvc.h. + - Rewrote VDP frame and line interrupt handling. + - Added ID and version number to state files. + - Removed vdp_run(), renamed sms_run() to system_run() in system.c. + - Merged cpu_reset() with sms_reset(). + - Consolidated parts of the ROM file loading routines. + - Increased resolution of GG palette (Mean Bean Machine intro). + - Fixed GG palette write handling (RoboCop 3 intro). + - Rewrote and optimized tile caching routines. + - Made SMS/GG palette brighter. + - Fixed leftmost column drawing in SMS mode. + - Upgraded Z80 CPU emulator from V2.7 to V3.3. + diff --git a/libmednahawk/src/sms/docs/compatability.txt b/libmednahawk/src/sms/docs/compatability.txt new file mode 100644 index 0000000000..726d7416bb --- /dev/null +++ b/libmednahawk/src/sms/docs/compatability.txt @@ -0,0 +1,14 @@ + + Cool Spot + + Menu area has gap after the screen blanking part. + Caused by new interrupt handling code. + + F16 Fighting Falcon, Rozetta no Shouzou + + Uses TMS9918 display modes which are not supported yet. + + Y's (J) + + Uses specific features of SMS 1 VDP. + diff --git a/libmednahawk/src/sms/docs/license b/libmednahawk/src/sms/docs/license new file mode 100644 index 0000000000..f89b4fa4e2 --- /dev/null +++ b/libmednahawk/src/sms/docs/license @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/libmednahawk/src/sms/docs/porting.txt b/libmednahawk/src/sms/docs/porting.txt new file mode 100644 index 0000000000..5a922dde8d --- /dev/null +++ b/libmednahawk/src/sms/docs/porting.txt @@ -0,0 +1,454 @@ + + When you release a port, please include YOUR contact information for users + to report bugs and other problems. + + I get a ton of e-mails about a color problem in the Nokia P900 port of SMS + Plus because the author apparently included my e-mail address (please link + to my webpage instead) and listed NO contact information for him/herself. + + Also, let me know when you release a port, so I can forward these types + of e-mails appropriately. + + ---------------------------------------------------------------------------- + + What's changed for SMS Plus v1.2 + + I haven't finished up the porting notes so some things aren't covered yet; + look at the DOS source for an example. + + After calling system_init(), use the following functions: + + system_poweron() - Call once, can run game afterwards + system_reset() - Can call during gameplay if user wants a hard reset + system_poweroff() - Call once when done with a game. + + When loading multiple ROMs in a single session, you'd call poweroff() when + done with a game, then poweron() after the next one was loaded. + + SRAM is loaded when poweron() or reset() is called. + SRAM is saved when poweroff() is called. + + The SRAM management function has changed: + + void system_manage_sram(uint8 *sram, int slot, int mode); + + 'mode' is either SRAM_SAVE or SRAM_LOAD. + The slot parameter is ignored for now. + If there was SRAM to load, set sms.save = 1; + Otherwise, clear SRAM to zero. + See the DOS code for an implementation of this function. + + Sound emulation + + The following structure holds sound related information: + + struct { + + /* Input parameters */ + int sample_rate; + int fps; + uint32 psg_clock; + uint32 fm_clock; + int fm_which; + void (*mixer_callback)(int16 **stream, int16 **output, int length); + + /* Working data */ + int16 *stream[STREAM_MAX]; + int16 *output[2]; + + /* Outputs */ + int enabled; + int buffer_size; + int sample_count; + } snd; + + Normally you would set up this structure before calling system_init(). + You can change the input parameters and call sound_init() again to change + them. Here are how the parameters should be used: + + snd.sample_rate Set to the desired sample rate, e.g. 22050, 44100. + Set to 0 to disable sound emulation. + + snd.fps Set to 50 (PAL) or 60 (NTSC) to specify the emulated + sound replay rate. PAL consoles are not completely + supported yet, I would advise leaving this at 60. + + snd.psg_clock Set to the SN76489 clock speed. + Normally this is 3579545. (3.58 MHz) + + snd.fm_clock Set to the YM2413 clock speed. + Normally this is 3579545. (3.58 MHz) + + snd.fm_which Set to SND_EMU2413 or SND_YM2413 depending on the FM + sound chip emulator you want to use. You can change + this and call sound_init() again for realtime switching. + + snd.mixer_callback Set to NULL to use the default stream mixing routine, + or point it to your own. + + Calling sound_init() will return 0 if sound emulation was disabled or an + error occured, or 1 if initialization was successful. The following + variables will be valid for use afterwards: + + snd.enabled Set to 1 if sound emulation is enabled, 0 if disabled. + + snd.buffer_size Size of sample buffer in bytes. + + snd.sample_count Length of sample buffer in samples. + + snd.stream Sound streams for the built-in mixer function or a user + supplied one to use. + + snd.output Mixed audio generated by the built-in mixer function + that can be output to a sound device. Updated after each + call to system_frame(). + + An example of setup and use is as follows: + + // Init code + snd.sample_rate = 44100; + snd.fps = 60; + snd.psg_clock = 3579545; + snd.fm_clock = 3579545; + snd.fm_which = SND_EMU2413; + snd.mixer_callback = NULL; + system_init(); + + // Change some parameter later on + snd.fm_which = SND_YM2413; + sound_init(); + + // Update code + system_frame(); + osd_play_stream_stereo( snd.output, snd.buffer_size ); + + Custom mixing + + You can provide your own mixing routine to combine audio streams. Some + uses might include: + + - Per-stream volume adjustment, filtering, effects. + - Stereo output of YM2413 sound. + - Bass-boost on YM2413 rhythm output. + - Can take advantage of in-hardware playback/mixing (console ports, etc.) + + There are four sound streams available: + + STREAM_PSG_L SN76489 left channel output + STREAM_PSG_R SN76489 right channel output + STREAM_FM_MO YM2413 melody channel output + STREAM_FM_RO YM2413 rhythm channel output + + The two YM2413 outputs are mixed together, along with the PSG output, for + a single monoaural channel in all versions of the SMS and related hardware + that support FM sound. + + Synopsis of audio features by console: + + FM sound Stereo PSG Output + Mark III No No Mono + Mark III+FM Yes No Mono + SMS 1 No No Mono + SMS 2 No No Mono + SMS 1 (J) Yes No Mono + Game Gear No Yes Stereo (headphone jack) Mono (speaker) + + Audio from the YM2413 emulator has a lower volume than EMU2413 and will + need to be adjusted. + + See the default mixer routine in 'sound.c' for an example. + + ---------------------------------------------------------------------------- + Porting notes for earlier 0.9.x versions + ---------------------------------------------------------------------------- + + You can check out the DOS specific code to get an idea of + how to port SMS Plus. + + 0.) Machine dependant issues + ---------------------------- + + Everything should compile fine for big-endian platforms, however + I'm not sure the 8-bit pixel to 16-bit pixel conversion function + in 'render.c' is endian safe. + + You need to either define or not define 'LSB_FIRST' in your makefile, + depending on your needs. + + 1.) Graphics + ------------ + + The emulated display can be shown in either 8-bit or 16-bit color. + The following structure is used by the rendering routines to + draw the display, and you need to set it up prior to running the + emulation. + + typedef struct + { + uint8 *data; + int width; + int height; + int pitch; + int depth; + struct + { + uint8 color[PALETTE_MAX][3]; + uint8 dirty[PALETTE_MAX]; + uint8 update; + }pal; + }t_bitmap; + + 'data' - Pointer to a linear chunk of memory. This should be at least + 256x192 pixels in size. You can modify this pointer between + frames for double buffering (if it's pointed into memory mapped + video RAM), or point it to system memory so further changes + can be made. (like special effects, or for converting the + graphics data to 24 or 32-bit format) + 'width' - Width of the bitmap, in pixels. + 'height' - Height of the bitmap, in pixels. + 'pitch' - Width of the bitmap, in *bytes*. + 'depth' - Color depth. Must be 8 or 16. + 'color' - An array of 32 RGB values, each scaled up to eight bits. + 'dirty' - Each entry is nonzero if the color has been modified. + 'update' - Nonzero if one or more colors have been modified. + + If you are using 8-bit color, please note that each pixel drawn to + the bitmap uses some extra unused bits during the rendering process. + You can either mask out these bits using the PIXEL_MASK constant + from 'system.h', or set palette ranges 20-3F, 40-5F to the same + values as 00-1F. + + If you are using 16-bit color, you can ignore the members of the 'pal' + structure. Remember to adjust the MAKE_PIXEL macro in 'render.h' to + whatever format your display uses. By default it will make a 16-bit + pixel in RGB 5:6:5 format. + + The macros BMP_X_OFFSET, BMP_Y_OFFSET, give the offset into the + bitmap. This is because the SMS display takes up the entire bitmap, + while the GG display is centered in the middle. These macros provide + a convenient way to get the right offset. + + The PALETTE_MAX constant returns the size of the palette. + This is currently set to 32 entries. + + 2.) Sound + --------- + + Sound emulation is handled through the following structure: + + typedef struct + { + int fps; /* Set to 50 or 60 FPS for PAL or NTSC games */ + int sample_rate; /* Set between 8000 and 48000 */ + int enabled; /* 1= Init OK, 0= Sound disabled or error */ + int sample_count; /* Length of buffer in samples */ + int buffer_size; /* Size of buffer in bytes */ + int16 *output[2]; /* Left and right channels */ + } snd_t; + + You must call 'system_init()' and pass the desired sample rate as an + parameter to enable sound emulation. You can set the sample rate to + zero if you do not want sound emulation. Remember that 'snd.enabled' + will be set afterwards to indicate if any errors occured. + + You also must call 'system_shutdown()' when you are done running + the virtual console emulation, so some memory used by the sound + emulation code can be freed. + + 3.) Input + --------- + + Input is handled through the following structure: + + typedef struct + { + int pad[2]; + int system; + }t_input; + + 'pad[]' - Corresponds to joystick one and joystick two. + 'system' - System buttons, specifically pause, start, and reset. + + During each frame, you should clear members of this structure to zero, + then update each one using the INPUT_* constants in 'system.h'. + + 4.) Game Images + --------------- + + Game images are handled through the following structure: + + typedef struct + { + uint8 *rom; + uint8 pages; + uint8 type; + }t_cart; + + 'rom' - Pointer to the ROM image. + 'pages' - ROM size divided by 16k. + 'type' - Set to either TYPE_SMS or TYPE_GG. + + Games can be identified by their extension, which is usually '.sms' + or '.gg'. Some games have an optional 512-byte header which you must + remove. Remember to adjust the file size accordingly. + + 5.) Battery backed RAM + ---------------------- + + Some game cartridges can have up to 32k of battery backed RAM present. + There are two variables relating to this: + + typedef struct + { + uint8 sram[0x8000]; + uint8 save; + }t_sms; + + 'sram' - This is the data that should be saved and loaded. + 'save' - This is nonzero if the contents of sram[] should be saved. + + It's impossible to know if a game will use battery backed RAM, so the + emulation code waits until a game tries to read or write it, and then + sets the 'save' flag meaning the data needs to be saved. + + The basic way to deal with this is: + + 1. Load a game file + 2. If a file with the same name, and the extension .sav exists, + then load that data into 'sram' and set the 'save' flag. + 3. When exiting, check if the 'save' flag is nonzero, and if so, + write the contents of sram[] to a file with the extension .sav + and the same filename as the game file loaded. + + Note that when system_reset() is called, the function 'system_load_sram' + which has a prototype in 'system.h' will be called. You *must* implement + this function. All it has to do is see if any saved battery backed RAM + is present, and update the save/sram[] members accordingly. + + 6.) Miscellaneous + ----------------- + + Before running the virtual console emulation, you can set up + these two variables: + + sms.use_fm : 0= No YM2413 sound, 1= YM2413 sound + sms.country : Set to TYPE_DOMESTIC (Japan), TYPE_OVERSEAS + + Some games will display different text depending on the country + setting. The default value is TYPE_OVERSEAS. This is suitable for every + country but Japan. + + Some games have different music if the YM2413 sound chip is present. + If the 'fm_enable' value is set to one, then games can detect it. + + If you want to use FM sound, you must ensure that 'use_fm' is nonzero + before loading a game, since this variable controls if games can detect + the YM2413 chip as well as actual YM2413 output. + + Some games will only enable YM2413 sound if the country type is + also set to TYPE_DOMESTIC. One such example is Wonderboy 3. + + Both of these variables are preserved when system_reset() is called. + + You can call load_state/save_state to save and restore the current state + of the virtual console emulation. You need to pass a file handle as + a parameter to these functions. Therefore, you are responsible for ensuring + the file exists, and the file name. The naming convention is that all + state files are named '.st0' up to '.st9'. + + 7.) Function reference + ---------------------- + + void system_init(int sound_rate); + + You must set up the 'bitmap' and 'cart' structures prior to calling this + function. If you want sound emulation, pass the desired sample rate + (8000..44100). Afterwards, check the members of the 'snd' structure to see + if you can use sound emulation. You can now call system_frame() and the like. + + void system_shutdown(void); + + Call this when you're done with the emulation. Not terribly important + as it only frees some memory allocated by the sound emulation routines... + + void system_reset(void) + + Reset the virtual console emulation. This is called internally when + the INPUT_HARD_RESET flag for 'input.system' is set. + + void system_load_sram(void); + + Refresh the 'sms.sram[]' and 'sms.save' variables. + You must impelement this function yourself. + + void system_frame(int skip); + + You need to call this function 60 times a second. Pass zero as the + parameter to draw the current frame, otherwise pass one to omit + the drawing process. (ideal for frame skipping) Afterwards, + the 'bitmap' and 'snd' structures will be updated with the current + graphics and sound data. You should set up the 'input' structure + before calling this function. + + 8.) Example + ----------- + + Here's a brief overview of how to use all this: + + - do machine dependant initialization (audio, video, init input, etc.) + - set up bitmap structure + - set up cart structure (load game) + - call system_init() + - if snd.enabled is set, we can use sound + - load sram data if it exists for the game + in a loop: + - update input structure based on gamepad/keyboard + - call system_frame() + - play sound using 'snd.buffer' + - copy 'bitmap.data' to the video display + - quit if needed + - save sram data if the game used it + - call system_shutdown() + + 9.) Other notes on porting + -------------------------- + + - Please read the license first. + + - You must release the source code to your port in accordance with the GPL. + + If you have made *no* changes to the main source code, meaning everything + in the root directory, and the cpu and dos directories, then you + do not have to include those files. No point in wasting space. + + Otherwise, you must include those files with the changes clearly stated. + If the changes are the kind that could benefit other ports (like a bug + fix), then just let me know so I can update the main distribution, and + don't bother releasing those files. But let me know before you release + your port, however. + + If you are using some commercial libraries to take care of items like + audio output, or if you have developed some routines which you do not want + made public (i.e. an assembly optimized blitter, or some custom joypad + polling functions), then you do not have to include those files. + + I prefer it where anybody can download a port of SMS Plus and compile it + themselves, but I realize this isn't always possible. + + It would be nice, and is not required, that you could organize the + source in the same way I have it set up. For instance, maintaining the + same directory structure, but adding an '/myport' directory with your + specific files, and an appropriate makefile. + + - You must clearly state in the executable that you are the porter, + and that I wrote the program. Include YOUR contact information (e-mail + address, website URL). This is so users will not ask me questions on how + to use a specific port, which I know nothing about. + + - You need to provide documentation. Please remember to mention + the licensing stuff pertaining to SMS Plus and the MAME code that's + mentioned (for example) in the original 'readme' I wrote. Or just + include my documentation and make some additions. + + Please link to my website in the documentation, so people will know + where to get the original source code. diff --git a/libmednahawk/src/sms/docs/readme.txt b/libmednahawk/src/sms/docs/readme.txt new file mode 100644 index 0000000000..9c7c32392e --- /dev/null +++ b/libmednahawk/src/sms/docs/readme.txt @@ -0,0 +1,310 @@ + ---------------------------------------------------------------------------- + SMS Plus + ---------------------------------------------------------------------------- + + A free, open-source Sega Master System and Game Gear emulator. + + Version 1.2 + by Charles MacDonald + + What's New + ---------- + + [Version 1.2] + + - Fixed smptab allocation error. + - Various source code cleanups. + - Minor tweaks to sync with Mac source changes. + - Added more support for PAL hardware. + - Added partial support for Codemasters games. + - Fixed some aspects of ROM loading. + - Fixed SRAM restore bug in save states. + - Fixed viewport size check when going from extended to normal mode, which + fixes Fantastic Dizzy opening screen and V counter test program. + - Split up VDP emulation into SMS/GG/MD specific parts. + - Added support for different port I/O port memory maps. + - Fixed mapper restore bug in save states. + - Fixed UI key management in dos/main.c + - Improved HV counter emulation. + - Added dump VRAM keyboard shortcut. (Alt+V) + - Split up DOS code into different modules. + - Fixed EXT connector and related I/O port 2 behavior. + - Added GG I/O register emulation. + - Changed SRAM management. + - Modified use of reset/poweron/poweroff functions. + - Added configuration via CRC for some Codemasters games. + - Fixed implementation of GG input port. + - Added cycle counter feature to Z80 emulator. + - Added shutdown functions to other modules. + - Mapped 2nd player inputs to keyboard numeric pad in dos/main.c + - Fixed reset button handling in dos/main.c + - Moved Z80 port handlers to memz80.c + - Fixed console type assign in loadrom.c (removed TYPE_* defines) + - Added support for I/O chip disable control. + - Rewrote I/O chip emulation. + - Fixed pixel LUT to handle sprite collision behind high priority BG tiles. + - Added emulation of sprite overflow status flag. + - Added 'granularity' member to bitmap struct and fixed DOS blur code. + - Fixed FM sound restore on state load / FM emulator change. + - Corrected screen blanking width. + - Removed sprite limit disable feature. + - Added support for extended display modes. + - Added partial support for PAL display timing. + - Removed BMP_* macros, replaced with bitmap.viewport.* variables. + - Removed Y's (J) rendering hack that was problematic in other games. + - Added error logging routines. + - Removed Game Gear specific rendering speedups. + - Replaced cart.type with sms.console, replaced access with IS_GG macro. + - Renamed INPUT_SOFT_RESET to INPUT_RESET. Use for SMS games only. + - Removed INPUT_HARD_RESET, use system_reset() instead. + - Modified vdp_ctrl_w() to update address register LSB during leading write. + - Changed path length in wram/state/snap routines to PATH_MAX in DOS code. + - Added define to specify message length in DOS code. + - Added r/w handlers for FM detection latch access, renamed fm* -> fmunit* + - Added territory/console members to struct sms (removed sms.country). + Removed TYPE_* and replaced with TERRITORY_* enums. + - Fixed FM register restore during state load when sound is disabled. + - Updated memory system to support 1K pages. + - Updated zlib to 1.2.1 and unzip.c to 1.0 + - Moved sound management out of system.c into sound/sound.c,fmintf.c + - Moved state management out of system.c into state.c + - Rearranged header file include order in system.h + - Added support for MAME YM2413 emulator + - Abstracted FM sound chip interface to support both YM2413 emulators + - Updated timeline in dos/main.c and system.c + - Removed SSL logging + - Fixed path length in loadrom.c to MAX_PATH from limits.h + - Added library version display option to dos/main.c + - Moved file I/O code to fileio.c + - Fixed loadrom.c to support 16K ROM images + - Updated documentation and porting instructions + - Modified EMU2413 to have update function for 2-channel output + - Modified dos\config.c to ensure parameters are left during option parsing + - Modified YM2413 emulator to check for NULL pointer during shutdown + - Cleaned up variable names in snd struct + - Added default mixer callback + - Made sound_shutdown() free memory + - Modified sound_init() to allow re-initialization + - Cleaned up system.h, sms.h, vdp.h + - Optimized color expansion for paletteized 8-bit format in render.c + - Added Maxim's SN76489 emulator, removed the old one + - Added YM2413 context management + - Fixed PSG/FM state save/load behavior + + * Save state format has changed in this release, and will probably change + in future updates. Old states from version 0.9.x are not interchangable + with the new version 1.x states. + + [Version 0.9.4b] + + - Made a few minor changes to the source code. + - Added keyboard shortcut to dump work RAM. + - Fixed FPS state display. + - Fixed GG palette handling. + - Improved tile caching. + - Made SMS/GG palette brighter. + - Updated Z80 CPU emulator. + + [Version 0.9.4a] + + - A few cleanups so SMS Plus compiles with no errors or warnings. + - Use of MMX code is now automatic but can still be disabled manually. + - Replaced FM sound emulation with Mitsutaka Okazaki's EMU2413 library. + - Fixed parts of the VDP emulation. + - Removed support for PSX port. + + [Version 0.9.3] + + - Stereo Game Gear sound. + - Save states, 10 per game. + - Sound logging, output is .GYM compatible. + - Optimized memory access for improved speed. + - Screen snapshots in PCX format. + - Stereo swap option for left and right speakers. + - Added FPS meter. + - Added some option toggle keys for in-game configuration. + - Definable video driver. + - Tweaked display modes for full-screen gameplay. + - More of the usual internal changes and bug fixes. + + [Version 0.9.2] + + - Digital YM2413 FM sound emulation. Drums sound real good, too. + - System territory switch, default is overseas (Europe / USA) + - Made some internal changes and clean-ups to the source code. + - Revised document on porting to be actually useful. + - Adjusted version number to stay in sync with the Macintosh port. + - Support for ZIPped game images and games with 512-byte headers. + - Screen expansion now works for 16-bit displays. + - Fixed some centering problems with screen expansion on GG games. + - Sound output using SEAL should be a bit clearer. + - Configuration file support. + + [Version 0.9] + + Everything has been rewritten from scratch. The emulation is much more + accurate, as a result compatability has improved greatly. + + The DOS port has a lot of nice features added, including 16-bit color, + display blurring, digital sound emulation, and scanlines, which were the + most requested items. + + Also new is a Sony Playstation port, though it's highly experimental + and has some serious performance issues. + + SMS Plus is now free software; the source code is available for anyone + to use as they see fit, and is distributed under the terms of the GNU + General Public License. + + Usage + ----- + + (DOS) + + You'll need at least a Pentium 133, a VGA compatible display card, + and optionally a joystick and sound card. + + Controls are as follows: + + Arrow Keys - Directional pad + a - Button II + s - Button I + Enter - Start (GG) / PAUSE (SMS) + Tab - Soft reset (SMS) / Hard reset (GG) + Delete - Hard reset + Esc/End - Exit program + 0-9 - Select save state slot + Alt+W - Dump work RAM + ~ - Switch between EMU2413 and YM2413 FM sound chip emulators. + + F1-F4 - Set frameskip level (F1 = no skip ... F4 = skip 3 frames) + F5 - Save state file from current slot + F6 - Cycle through state slots (0-9) + F7 - Save state file to current slot + F8 - Make PCX screen snapshot + F9 - Toggle VSync + F10 - Toggle speed throttling + F11 - Toggle FPS meter + + You can only support a second player if you are using a joystick driver + that supports more than one joystick. (e.g. Sidewinder, dual pads, etc.) + + Type 'sp -help' on the command line for a list of useful options. + + -res set the display resolution. + -vdriver specify video driver. + -depth specify color depth. (8, 16) + -blur blur display. (16-bit color only) + -scanlines use scanlines effect. + -tweak force tweaked 256x192 or 160x144 8-bit display. + -scale scale display to full resolution. (slow) + -expand force 512x384 or 400x300 zoomed display. + -nommx disable use of MMX instructions. + -novga disable use of VGA vertical scaling with '-expand'. + -vsync wait for vertical sync before blitting. + -throttle limit updates to 60 frames per second. + -fps show FPS meter. + -sound enable sound. (force speed throttling) + -sndrate specify sound rate. (8000, 11025, 22050, 44100) + -sndcard specify sound card. (0-7) + -swap swap left and right stereo output. + -joy specify joystick type. + -jp use Japanese console type. + -fm required to enable YM2413 sound. + -info show library versions. + -codies force Codemasters mapper + + Here is a list of all the video drivers you can pass as a parameter + to the '-vdriver' option: + + auto, safe, vga, modex, vesa2l, vesa3, vbeaf + + Here is a list of all the joystick drivers you can pass as a parameter + to the '-joy' option: + + auto, none, standard, 2pads, 4button, 6button, 8button, fspro, wingex, + sidewinder, gamepadpro, grip, grip4, sneslpt1, sneslpt2, sneslpt3, + psxlpt1, psxlpt2, psxlpt3, n64lpt1, n64lpt2, n64lpt3, db9lpt1, db9lpt2, + db9lpt3, tglpt1, tglpt2, tglpt3, wingwar, segaisa, segapci, segapci2 + + If you use the expand option without scanlines, and the display looks + squashed vertically, then also use the '-novga' switch. + + You can disable MMX use with the '-nommx' switch. + + You can put any commandline option into a plain text file which should + be called "sp.cfg". Put one option per line, please. Command line options + will override anything in the configuration file. + + Battery back-up RAM and save states are saved to the same directory as the + game you loaded. This means running games off write-only media will not + work. These files are named after the name of the image itself, not the + name of the zipfile archive in the case of zip loading. + + Currently the zip loading code can manage a zipfile where the game + image is the first thing in it. If you try to open a huge archive of + games, only the first will be played. + + Credits and Acknowledgments + --------------------------- + + Dedicated to Chris MacDonald. + + Thanks to: + + All Allegro contributors, Bero, Carlos Hasan, Dave, Eric Quinn, + Frank Hughes, Flavio Morsoletto, Gilles Volant, Hiromitsu Shioya, Jon, + Jean-loup Gailly, James McKay, Jarek Burczynski, Kreed, Mark Adler, + Micheal Cunanan, Marcel de Kogel, Marat Fayzullin, Mitsutaka Okazaki, + Maxim, Nyef, Nick Jacobson, Omar Cornut, Paul Leaman, Ricardo Bittencourt, + Richard Mitton, Richard Talbot-Watkins, Sean Young, Tatsuyuki Satoh, + the MAME team, and the S8-DEV forum members. + + Richard Bannister for the Macintosh port. (www.bannister.org) + Richard Teather for the Win32 port. (smsplus.vintagegaming.com) + Caz Jones for the BeOS port. (http://www.infernal.currantbun.com) + Cyx for the SDL port. (http://membres.lycos.fr/cyxdown/smssdl/) + Ulrich Hecht for the Linux port. (http://www.emulinks.de/emus/) + ss_teven for the Sega Dreamcast port. (no homepage URL) + Dagolar for the Sega Saturn port. (http://phemusat.tripod.com/) + Aj0 for the GP32 port. (http://ajo.thinknerd.com/gp32/sms32/files/) + ? for the X-Box port. (http://xport.xb-power.com/smsplus.html) + ? for the Sony Playstation 2 port. (http://nik.napalm-x.com/) + + All of those responsible for many console, mobile phone, and PDA ports + of SMS Plus. + + The artists who worked on Red Zone and Sub Terrania for the cool font + used in previous DOS ports. + + I'd also like to thank everybody who contributed information, bug reports, + and gave their comments and ideas. + + Contact + ------- + + Charles MacDonald + E-mail: cgfm2 at hotmail dot com + WWW: http://cgfm2.emuviews.com + + Legal + ----- + + SMS Plus is Copyright (C) 1998-2004 Charles MacDonald + + The source code is distributed under the terms of the GNU General Public + License. + + The SN76489 emulator is written by Maxim. + (http://mwos.cjb.net) + + The EMU2413 emulator is written by Mitsutaka Okazaki. + (http://www.angel.ne.jp/~okazaki/ym2413/) + + The Z80 CPU and YM2413 emulator, and SEAL interface code are taken from the + MAME project, and terms of their use are covered under the MAME license. + (http://www.mame.net) + + The blur code is based on the 'CTV' sources from Dave's DGen emulator. + (http://www.dtmnt.com) + diff --git a/libmednahawk/src/sms/hvc.inc b/libmednahawk/src/sms/hvc.inc new file mode 100644 index 0000000000..e61cfae9a3 --- /dev/null +++ b/libmednahawk/src/sms/hvc.inc @@ -0,0 +1,158 @@ +#ifndef _HVC_H_ +#define _HVC_H_ + +uint8 vc_ntsc_192[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, + 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +}; + +uint8 vc_ntsc_224[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, + 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +}; + +uint8 vc_ntsc_256[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 +}; + +uint8 vc_pal_192[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, + 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +}; + +uint8 vc_pal_224[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + 0x00, 0x01, 0x02, + 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +}; + +uint8 vc_pal_256[] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, + 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +}; + +uint8 *vc_table[2][4] = +{ + { + vc_ntsc_192, + vc_ntsc_224, + vc_ntsc_256, + vc_ntsc_192, + }, + { + vc_pal_192, + vc_pal_224, + vc_pal_256, + vc_pal_192, + } +}; + +#endif /* _HVC_H_ */ + diff --git a/libmednahawk/src/sms/memz80.cpp b/libmednahawk/src/sms/memz80.cpp new file mode 100644 index 0000000000..5f9776838c --- /dev/null +++ b/libmednahawk/src/sms/memz80.cpp @@ -0,0 +1,353 @@ +/* + memz80.c -- + Z80 port handlers. +*/ +#include "shared.h" + +namespace MDFN_IEN_SMS +{ + +/* Pull-up resistors on data bus */ +uint8 data_bus_pullup = 0x00; +uint8 data_bus_pulldown = 0x00; + +/* Read unmapped memory */ +uint8 z80_read_unmapped(void) +{ + int pc = z80_getpc(); + uint8 data; + pc = (pc - 1) & 0xFFFF; + data = sms_readbyte(pc); + + return ((data | data_bus_pullup) & ~data_bus_pulldown); +} + +void memctrl_w(uint8 data) +{ + sms.memctrl = data; +} + +/*--------------------------------------------------------------------------*/ +/* Sega Master System port handlers */ +/*--------------------------------------------------------------------------*/ + +void sms_port_w(uint16 port, uint8 data) +{ + switch(port & 0xC1) + { + case 0x00: + memctrl_w(data); + return; + + case 0x01: + ioctrl_w(data); + return; + + case 0x40: + case 0x41: + psg_write(data); + return; + + case 0x80: + case 0x81: + vdp_write(port, data); + return; + + case 0xC0: + case 0xC1: + return; + } +} + +uint8 sms_port_r(uint16 port) +{ + switch(port & 0xC0) + { + case 0x00: + return z80_read_unmapped(); + + case 0x40: + return vdp_counter_r(port); + + case 0x80: + return vdp_read(port); + + case 0xC0: + return input_r(port); + } + + /* Just to please the compiler */ + return -1; +} + + +/*--------------------------------------------------------------------------*/ +/* Sega Master System (J) port handlers */ +/*--------------------------------------------------------------------------*/ + +void smsj_port_w(uint16 port, uint8 data) +{ + port &= 0xFF; + + if(port >= 0xF0) + { + switch(port) + { + case 0xF0: + fmunit_write(0, data); + return; + + case 0xF1: + fmunit_write(1, data); + return; + + case 0xF2: + fmunit_detect_w(data); + return; + } + } + + switch(port & 0xC1) + { + case 0x00: + memctrl_w(data); + return; + + case 0x01: + ioctrl_w(data); + return; + + case 0x40: + case 0x41: + psg_write(data); + return; + + case 0x80: + case 0x81: + vdp_write(port, data); + return; + + case 0xC0: + case 0xC1: + return; + } +} + +uint8 smsj_port_r(uint16 port) +{ + port &= 0xFF; + + if(port == 0xF2) // && !(sms.memctrl & 4)) + return fmunit_detect_r(); + + switch(port & 0xC0) + { + case 0x00: + return z80_read_unmapped(); + + case 0x40: + return vdp_counter_r(port); + + case 0x80: + return vdp_read(port); + + case 0xC0: + return input_r(port); + } + + /* Just to please the compiler */ + return -1; +} + + + +/*--------------------------------------------------------------------------*/ +/* Game Gear port handlers */ +/*--------------------------------------------------------------------------*/ + +void gg_port_w(uint16 port, uint8 data) +{ + port &= 0xFF; + + if(port <= 0x06) { + sio_w(port, data); + return; + } + + switch(port & 0xC1) + { + case 0x00: + memctrl_w(data); + return; + + case 0x01: + ioctrl_w(data); + return; + + case 0x40: + case 0x41: + psg_write(data); + return; + + case 0x80: + case 0x81: + gg_vdp_write(port, data); + return; + } +} + + +uint8 gg_port_r(uint16 port) +{ + port &= 0xFF; + + if(port <= 0x06) + return sio_r(port); + + switch(port & 0xC0) + { + case 0x00: + return z80_read_unmapped(); + + case 0x40: + return vdp_counter_r(port); + + case 0x80: + return vdp_read(port); + + case 0xC0: + switch(port) + { + case 0xC0: + case 0xC1: + case 0xDC: + case 0xDD: + return input_r(port); + } + return z80_read_unmapped(); + } + + /* Just to please the compiler */ + return -1; +} + +/*--------------------------------------------------------------------------*/ +/* Game Gear (MS) port handlers */ +/*--------------------------------------------------------------------------*/ + +void ggms_port_w(uint16 port, uint8 data) +{ + port &= 0xFF; + + switch(port & 0xC1) + { + case 0x00: + memctrl_w(data); + return; + + case 0x01: + ioctrl_w(data); + return; + + case 0x40: + case 0x41: + psg_write(data); + return; + + case 0x80: + case 0x81: + vdp_write(port, data); + return; + } +} + +uint8 ggms_port_r(uint16 port) +{ + port &= 0xFF; + + switch(port & 0xC0) + { + case 0x00: + return z80_read_unmapped(); + + case 0x40: + return vdp_counter_r(port); + + case 0x80: + return vdp_read(port); + + case 0xC0: + switch(port) + { + case 0xC0: + case 0xC1: + case 0xDC: + case 0xDD: + return input_r(port); + } + return z80_read_unmapped(); + } + + /* Just to please the compiler */ + return -1; +} + +/*--------------------------------------------------------------------------*/ +/* MegaDrive / Genesis port handlers */ +/*--------------------------------------------------------------------------*/ + +void md_port_w(uint16 port, uint8 data) +{ + switch(port & 0xC1) + { + case 0x00: + /* No memory control register */ + return; + + case 0x01: + ioctrl_w(data); + return; + + case 0x40: + case 0x41: + psg_write(data); + return; + + case 0x80: + case 0x81: + md_vdp_write(port, data); + return; + } +} + + +uint8 md_port_r(uint16 port) +{ + switch(port & 0xC0) + { + case 0x00: + return z80_read_unmapped(); + + case 0x40: + return vdp_counter_r(port); + + case 0x80: + return vdp_read(port); + + case 0xC0: + switch(port) + { + case 0xC0: + case 0xC1: + case 0xDC: + case 0xDD: + return input_r(port); + } + return z80_read_unmapped(); + } + + /* Just to please the compiler */ + return -1; +} + +} diff --git a/libmednahawk/src/sms/memz80.h b/libmednahawk/src/sms/memz80.h new file mode 100644 index 0000000000..253e8d5dbe --- /dev/null +++ b/libmednahawk/src/sms/memz80.h @@ -0,0 +1,27 @@ + +#ifndef _MEMZ80_H_ +#define _MEMZ80_H_ + +namespace MDFN_IEN_SMS +{ + +/* Global data */ +extern uint8 data_bus_pullup; +extern uint8 data_bus_pulldown; + +/* Function prototypes */ +uint8 z80_read_unmapped(void); +void gg_port_w(uint16 port, uint8 data); +uint8 gg_port_r(uint16 port); +void ggms_port_w(uint16 port, uint8 data); +uint8 ggms_port_r(uint16 port); +void sms_port_w(uint16 port, uint8 data); +uint8 sms_port_r(uint16 port); +void smsj_port_w(uint16 port, uint8 data); +uint8 smsj_port_r(uint16 port); +void md_port_w(uint16 port, uint8 data); +uint8 md_port_r(uint16 port); + +} + +#endif /* _MEMZ80_H_ */ diff --git a/libmednahawk/src/sms/pio.cpp b/libmednahawk/src/sms/pio.cpp new file mode 100644 index 0000000000..ac1a89b55c --- /dev/null +++ b/libmednahawk/src/sms/pio.cpp @@ -0,0 +1,289 @@ +/* + pio.c -- + I/O chip and peripheral emulation. +*/ +#include "shared.h" + +namespace MDFN_IEN_SMS +{ + +static io_state io_lut[2][256]; +static const io_state *io_current; + +void pio_init(void) +{ + int i, j; + + /* Make pin state LUT */ + for(j = 0; j < 2; j++) + { + for(i = 0; i < 0x100; i++) + { + /* Common control: pin direction */ + io_lut[j][i].tr_dir[0] = (i & 0x01) ? PIN_DIR_IN : PIN_DIR_OUT; + io_lut[j][i].th_dir[0] = (i & 0x02) ? PIN_DIR_IN : PIN_DIR_OUT; + io_lut[j][i].tr_dir[1] = (i & 0x04) ? PIN_DIR_IN : PIN_DIR_OUT; + io_lut[j][i].th_dir[1] = (i & 0x08) ? PIN_DIR_IN : PIN_DIR_OUT; + + if(j == 1) + { + /* Programmable output state (Export machines only) */ + io_lut[j][i].tr_level[0] = (i & 0x01) ? PIN_LVL_HI : (i & 0x10) ? PIN_LVL_HI : PIN_LVL_LO; + io_lut[j][i].th_level[0] = (i & 0x02) ? PIN_LVL_HI : (i & 0x20) ? PIN_LVL_HI : PIN_LVL_LO; + io_lut[j][i].tr_level[1] = (i & 0x04) ? PIN_LVL_HI : (i & 0x40) ? PIN_LVL_HI : PIN_LVL_LO; + io_lut[j][i].th_level[1] = (i & 0x08) ? PIN_LVL_HI : (i & 0x80) ? PIN_LVL_HI : PIN_LVL_LO; + } + else + { + /* Fixed output state (Domestic machines only) */ + io_lut[j][i].tr_level[0] = (i & 0x01) ? PIN_LVL_HI : PIN_LVL_LO; + io_lut[j][i].th_level[0] = (i & 0x02) ? PIN_LVL_HI : PIN_LVL_LO; + io_lut[j][i].tr_level[1] = (i & 0x04) ? PIN_LVL_HI : PIN_LVL_LO; + io_lut[j][i].th_level[1] = (i & 0x08) ? PIN_LVL_HI : PIN_LVL_LO; + } + } + } + + // hack dos code doesn't call system_reset + pio_reset(); +} + + +void pio_reset(void) +{ + /* GG SIO power-on defaults */ + sms.sio.pdr = 0x7F; + sms.sio.ddr = 0xFF; + sms.sio.txdata = 0x00; + sms.sio.rxdata = 0xFF; + sms.sio.sctrl = 0x00; + + /* SMS I/O power-on defaults */ + ioctrl_w(0xFF); +} + + +void pio_shutdown(void) +{ + /* Nothing to do */ +} + + +void system_assign_device(int port, int type) +{ + sms.device[port].type = type; +} + +void ioctrl_w(uint8 data) +{ + sms.ioctrl = data; + io_current = &io_lut[sms.territory][data]; +} + +uint8 device_r(int offset) +{ + uint8 temp = 0x7F; + + switch(sms.device[offset].type) + { + case DEVICE_NONE: + break; + case DEVICE_PAD2B: + break; + case DEVICE_PADDLE: + break; + } + + return temp; +} + +uint8 input_r(int offset) +{ + uint8 temp = 0xFF; + + /* + If I/O chip is disabled, reads return last byte of instruction that + read the I/O port. + */ + if(sms.memctrl & 0x04) + return z80_read_unmapped(); + + offset &= 1; + if(offset == 0) + { + /* Input port #0 */ + + if(input.pad[0] & INPUT_UP) temp &= ~0x01; /* D0 */ + if(input.pad[0] & INPUT_DOWN) temp &= ~0x02; /* D1 */ + if(input.pad[0] & INPUT_LEFT) temp &= ~0x04; /* D2 */ + if(input.pad[0] & INPUT_RIGHT) temp &= ~0x08; /* D3 */ + if(input.pad[0] & INPUT_BUTTON2) temp &= ~0x10; /* TL */ + if(input.pad[0] & INPUT_BUTTON1) temp &= ~0x20; /* TR */ + + if(sms.console == CONSOLE_GG) + { + uint8 state = sio_r(0x01); + temp = (temp & 0x3F) | (state & 0x03) << 6; /* Insert D1,D0 */ + } + else + { + if(input.pad[1] & INPUT_UP) temp &= ~0x40; /* D0 */ + if(input.pad[1] & INPUT_DOWN) temp &= ~0x80; /* D1 */ + } + + /* Adjust TR state if it is an output */ + if(io_current->tr_dir[0] == PIN_DIR_OUT) { + temp &= ~0x20; + temp |= (io_current->tr_level[0] == PIN_LVL_HI) ? 0x20 : 0x00; + } + } + else + { + /* Input port #1 */ + if(sms.console == CONSOLE_GG) + { + uint8 state = sio_r(0x01); + temp = (temp & 0xF0) | ((state & 0x3C) >> 2); /* Insert TR,TL,D3,D2 */ + temp = (temp & 0x7F) | ((state & 0x40) << 1); /* Insert TH */ + } + else + { + if(input.pad[1] & INPUT_LEFT) temp &= ~0x01; /* D2 */ + if(input.pad[1] & INPUT_RIGHT) temp &= ~0x02; /* D3 */ + if(input.pad[1] & INPUT_BUTTON2) temp &= ~0x04; /* TL */ + if(input.pad[1] & INPUT_BUTTON1) temp &= ~0x08; /* TR */ + + /* Adjust TR state if it is an output */ + if(io_current->tr_dir[1] == PIN_DIR_OUT) { + temp &= ~0x08; + temp |= (io_current->tr_level[1] == PIN_LVL_HI) ? 0x08 : 0x00; + } + + /* Adjust TH state if it is an output */ + if(io_current->th_dir[1] == PIN_DIR_OUT) { + temp &= ~0x80; + temp |= (io_current->th_level[1] == PIN_LVL_HI) ? 0x80 : 0x00; + } + + if(input.system & INPUT_RESET) temp &= ~0x10; + } + + /* /CONT fixed at '1' for SMS/SMS2/GG */ + /* /CONT fixed at '0' for GEN/MD */ + if(IS_MD) temp &= ~0x20; + + /* Adjust TH state if it is an output */ + if(io_current->th_dir[0] == PIN_DIR_OUT) { + temp &= ~0x40; + temp |= (io_current->th_level[0] == PIN_LVL_HI) ? 0x40 : 0x00; + } + } + return temp; +} + +uint8 sio_r(int offset) +{ + uint8 temp; + + switch(offset & 0xFF) + { + case 0: /* Input port #2 */ + temp = 0xE0; + if(input.system & INPUT_START) temp &= ~0x80; + if(sms.territory == TERRITORY_DOMESTIC) temp &= ~0x40; + if(sms.display == DISPLAY_NTSC) temp &= ~0x20; + return temp; + + case 1: /* Parallel data register */ + temp = 0x00; + temp |= (sms.sio.ddr & 0x01) ? 0x01 : (sms.sio.pdr & 0x01); + temp |= (sms.sio.ddr & 0x02) ? 0x02 : (sms.sio.pdr & 0x02); + temp |= (sms.sio.ddr & 0x04) ? 0x04 : (sms.sio.pdr & 0x04); + temp |= (sms.sio.ddr & 0x08) ? 0x08 : (sms.sio.pdr & 0x08); + temp |= (sms.sio.ddr & 0x10) ? 0x10 : (sms.sio.pdr & 0x10); + temp |= (sms.sio.ddr & 0x20) ? 0x20 : (sms.sio.pdr & 0x20); + temp |= (sms.sio.ddr & 0x40) ? 0x40 : (sms.sio.pdr & 0x40); + temp |= (sms.sio.pdr & 0x80); + return temp; + + case 2: /* Data direction register and NMI enable */ + return sms.sio.ddr; + + case 3: /* Transmit data buffer */ + return sms.sio.txdata; + + case 4: /* Receive data buffer */ + return sms.sio.rxdata; + + case 5: /* Serial control */ + return sms.sio.sctrl; + + case 6: /* Stereo sound control */ + return 0xFF; + } + + /* Just to please compiler */ + return -1; +} + +void sio_w(int offset, int data) +{ + switch(offset & 0xFF) + { + case 0: /* Input port #2 (read-only) */ + return; + + case 1: /* Parallel data register */ + sms.sio.pdr = data; + return; + + case 2: /* Data direction register and NMI enable */ + sms.sio.ddr = data; + return; + + case 3: /* Transmit data buffer */ + sms.sio.txdata = data; + return; + + case 4: /* Receive data buffer */ + return; + + case 5: /* Serial control */ + sms.sio.sctrl = data & 0xF8; + return; + + case 6: /* Stereo output control */ + psg_stereo_w(data); + return; + } +} + +int SMS_PIOStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(sms.sio.pdr), + SFVAR(sms.sio.ddr), + SFVAR(sms.sio.txdata), + SFVAR(sms.sio.rxdata), + SFVAR(sms.sio.sctrl), + SFVAR(sms.ioctrl), + + + SFEND + }; + + + int ret; + + ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "PIO"); + + if(load) + { + io_current = &io_lut[sms.territory][sms.ioctrl]; + } + + return(ret); +} + +} diff --git a/libmednahawk/src/sms/pio.h b/libmednahawk/src/sms/pio.h new file mode 100644 index 0000000000..89f44299c8 --- /dev/null +++ b/libmednahawk/src/sms/pio.h @@ -0,0 +1,60 @@ +#ifndef _PIO_H_ +#define _PIO_H_ + +namespace MDFN_IEN_SMS +{ + +#define SIO_TXFL (1 << 0) /* 1= Transmit buffer full */ +#define SIO_RXRD (1 << 1) /* 1= Receive buffer full */ +#define SIO_FRER (1 << 2) /* 1= Framing error occured */ + +#define MAX_DEVICE 2 +#define DEVICE_D0 (1 << 0) +#define DEVICE_D1 (1 << 1) +#define DEVICE_D2 (1 << 2) +#define DEVICE_D3 (1 << 3) +#define DEVICE_TL (1 << 4) +#define DEVICE_TR (1 << 5) +#define DEVICE_TH (1 << 6) +#define DEVICE_ALL (DEVICE_D0 | DEVICE_D1 | DEVICE_D2 | DEVICE_D3 | DEVICE_TL | DEVICE_TR | DEVICE_TH) + +#define PIN_LVL_LO 0 /* Pin outputs 0V */ +#define PIN_LVL_HI 1 /* Pin outputs +5V */ +#define PIN_DIR_OUT 0 /* Pin is is an active driving output */ +#define PIN_DIR_IN 1 /* Pin is in active-low input mode */ + +enum { + PORT_A = 0, /* I/O port A */ + PORT_B = 1 /* I/O port B */ +}; + +enum { + DEVICE_NONE = 0, /* No peripheral */ + DEVICE_PAD2B = 1, /* Standard 2-button digital joystick/gamepad */ + DEVICE_PADDLE = 2 /* Paddle controller; rotary dial with fire button */ +}; + +typedef struct { + uint8 tr_level[2]; /* TR pin output level */ + uint8 th_level[2]; /* TH pin output level */ + uint8 tr_dir[2]; /* TR pin direction */ + uint8 th_dir[2]; /* TH pin direction */ +} io_state; + +/* Function prototypes */ +void pio_init(void); +void pio_reset(void); +void pio_shutdown(void); +void system_assign_device(int port, int type); + +int SMS_PIOStateAction(StateMem *sm, int load, int data_only); + +void io_lut_init(void); +void ioctrl_w(uint8 data); +uint8 input_r(int offset); +void sio_w(int offset, int data); +uint8 sio_r(int offset); + +} + +#endif /* _PIO_H_ */ diff --git a/libmednahawk/src/sms/render.cpp b/libmednahawk/src/sms/render.cpp new file mode 100644 index 0000000000..1817e71b10 --- /dev/null +++ b/libmednahawk/src/sms/render.cpp @@ -0,0 +1,569 @@ +/* + render.c -- + Display rendering. +*/ + +#include "shared.h" + +namespace MDFN_IEN_SMS +{ + +static const uint8 tms_crom[] = +{ + 0x00, 0x00, 0x08, 0x0C, + 0x10, 0x30, 0x01, 0x3C, + 0x02, 0x03, 0x05, 0x0F, + 0x04, 0x33, 0x15, 0x3F +}; + +static void remap_8_to_32(int line); + +/* Background drawing function */ +void (*render_bg)(int line) = NULL; +void (*render_obj)(int line) = NULL; + +/* Pointer to output buffer */ +uint8 *linebuf; + +/* Internal buffer for drawing non 8-bit displays */ +uint8 internal_buffer[0x100]; + +/* Precalculated pixel table */ +uint32 pixel[PALETTE_SIZE]; + +/* Dirty pattern info */ +uint8 bg_name_dirty[0x200]; /* 1= This pattern is dirty */ +uint16 bg_name_list[0x200]; /* List of modified pattern indices */ +uint16 bg_list_index; /* # of modified patterns in list */ +uint8 bg_pattern_cache[0x20000];/* Cached and flipped patterns */ + +/* Pixel look-up table */ +uint8 lut[0x10000]; + +/* Bitplane to packed pixel LUT */ +uint32 bp_lut[0x10000]; + + +void render_shutdown(void) +{ +} + +/* Initialize the rendering data */ +void render_init(void) +{ + int i, j; + int bx, sx, b, s, bp, bf, sf, c; + + make_tms_tables(); + + /* Generate 64k of data for the look up table */ + for(bx = 0; bx < 0x100; bx++) + { + for(sx = 0; sx < 0x100; sx++) + { + /* Background pixel */ + b = (bx & 0x0F); + + /* Background priority */ + bp = (bx & 0x20) ? 1 : 0; + + /* Full background pixel + priority + sprite marker */ + bf = (bx & 0x7F); + + /* Sprite pixel */ + s = (sx & 0x0F); + + /* Full sprite pixel, w/ palette and marker bits added */ + sf = (sx & 0x0F) | 0x10 | 0x40; + + /* Overwriting a sprite pixel ? */ + if(bx & 0x40) + { + /* Return the input */ + c = bf; + } + else + { + /* Work out priority and transparency for both pixels */ + if(bp) + { + /* Underlying pixel is high priority */ + if(b) + { + c = bf | 0x40; + } + else + { + + if(s) + { + c = sf; + } + else + { + c = bf; + } + } + } + else + { + /* Underlying pixel is low priority */ + if(s) + { + c = sf; + } + else + { + c = bf; + } + } + } + + /* Store result */ + lut[(bx << 8) | (sx)] = c; + } + } + + /* Make bitplane to pixel lookup table */ + for(i = 0; i < 0x100; i++) + for(j = 0; j < 0x100; j++) + { + int x; + uint32 out = 0; + for(x = 0; x < 8; x++) + { + out |= (j & (0x80 >> x)) ? (uint32)(8 << (x << 2)) : 0; + out |= (i & (0x80 >> x)) ? (uint32)(4 << (x << 2)) : 0; + } +#if LSB_FIRST + bp_lut[(j << 8) | (i)] = out; +#else + bp_lut[(i << 8) | (j)] = out; +#endif + } + + render_reset(); + +} + + +/* Reset the rendering data */ +void render_reset(void) +{ + int i; + + /* Clear palette */ + for(i = 0; i < PALETTE_SIZE; i++) + { + palette_sync(i, 1); + } + + /* Invalidate pattern cache */ + memset(bg_name_dirty, 0, sizeof(bg_name_dirty)); + memset(bg_name_list, 0, sizeof(bg_name_list)); + bg_list_index = 0; + memset(bg_pattern_cache, 0, sizeof(bg_pattern_cache)); + + /* Pick render routine */ + render_bg = render_bg_sms; + render_obj = render_obj_sms; +} + + +/* Draw a line of the display */ +void render_line(int line, int skip) +{ + int meow_line = 0xFFFF; + // printf("%02x\n", vdp.extended); + switch(vdp.extended) + { + case 0: if(line < (192 + 24)) + meow_line = 24 + line; + else if(line >= (vdp.lines_per_frame - 24)) + meow_line = line - (vdp.lines_per_frame - 24); + break; + + case 1: if(line < (224 + 8)) + meow_line = 8 + line; + else if(line >= (vdp.lines_per_frame - 8)) + meow_line = line - (vdp.lines_per_frame - 8); + + break; + case 2: if(line < 240) + meow_line = line; + break; + } + + /* Ensure we're within the viewport range */ + if(line >= vdp.height) + { + if(meow_line < 240) + { + memset(linebuf, BACKDROP_COLOR, 256); + remap_8_to_32(meow_line); + } + return; + } + + /* Point to current line in output buffer */ + linebuf = internal_buffer; + + /* Update pattern cache */ + update_bg_pattern_cache(); + + /* Blank line (full width) */ + if(!(vdp.reg[1] & 0x40)) + { + memset(linebuf, BACKDROP_COLOR, 256); + } + else + { + /* Draw background */ + if(render_bg != NULL) + render_bg(line); + + /* Draw sprites */ + if(render_obj != NULL) + render_obj(line); + + /* Blank leftmost column of display */ + if(vdp.reg[0] & 0x20) + { + memset(linebuf, BACKDROP_COLOR, 8); + } + } + + remap_8_to_32(meow_line); +} + + +/* Draw the Master System background */ +void render_bg_sms(int line) +{ + int locked = 0; + int yscroll_mask = (vdp.extended) ? 256 : 224; + int v_line = (line + vdp.reg[9]) % yscroll_mask; + int v_row = (v_line & 7) << 3; + int hscroll = ((vdp.reg[0] & 0x40) && (line < 0x10)) ? 0 : (0x100 - vdp.reg[8]); + int column = 0; + uint16 attr; + uint8 *nt = &vdp.vram[vdp.ntab + (((v_line >> 3) << 6) & ((((vdp.reg[2] & 1) | vdp.quirk_disabled) << 10) | (~0U ^ (1 << 10)) ) )]; + int nt_scroll = (hscroll >> 3); + int shift = (hscroll & 7); + uint8 atex_mask; + + uint8 *cache_ptr; + uint8 *linebuf_ptr = &linebuf[0 - shift]; + + /* Draw first column (clipped) */ + if(shift) + { + int x; + + for(x = shift; x < 8; x++) + linebuf[(0 - shift) + (x)] = 0; + + column++; + } + + /* Draw a line of the background */ + for(; column < 32; column++) + { + /* Stop vertical scrolling for leftmost eight columns */ + if((vdp.reg[0] & 0x80) && (!locked) && (column >= 24)) + { + locked = 1; + v_row = (line & 7) << 3; + nt = &vdp.vram[((vdp.reg[2] << 10) & 0x3800) + ((line >> 3) << 6)]; + } + + /* Get name table attribute word */ + attr = nt[(((column + nt_scroll) & 0x1F) << 1) | 0] | (nt[(((column + nt_scroll) & 0x1F) << 1) | 1] << 8); + + /* Expand priority and palette bits */ + atex_mask = (attr >> 7) & 0x30; + + /* Point to a line of pattern data in cache */ + cache_ptr = &bg_pattern_cache[((attr & 0x7FF) << 6) | (v_row)]; + + for(int i = 0; i < 8; i++) + { + linebuf_ptr[column * 8 + i] = cache_ptr[i] | atex_mask; + } + } + + /* Draw last column (clipped) */ + if(shift) + { + int x, c, a; + + uint8 *p = &linebuf[(0 - shift)+(column << 3)]; + + attr = nt[(((column + nt_scroll) & 0x1F) << 1) | 0] | (nt[(((column + nt_scroll) & 0x1F) << 1) | 1] << 8); + + a = (attr >> 7) & 0x30; + + for(x = 0; x < shift; x++) + { + c = bg_pattern_cache[((attr & 0x7FF) << 6) | (v_row) | (x)]; + p[x] = ((c) | (a)); + } + } +} + + + + +/* Draw sprites */ +void render_obj_sms(int line) +{ + int i; + uint8 collision_buffer = 0; + + /* Sprite count for current line (8 max.) */ + int count = 0; + + /* Sprite dimensions */ + int width = 8; + int height = (vdp.reg[1] & 0x02) ? 16 : 8; + + /* Pointer to sprite attribute table */ + uint8 *st = (uint8 *)&vdp.vram[vdp.satb]; + + /* Adjust dimensions for double size sprites */ + if(vdp.reg[1] & 0x01) + { + width *= 2; + height *= 2; + } + + /* Draw sprites in front-to-back order */ + for(i = 0; i < 64; i++) + { + /* Sprite Y position */ + int yp = st[i]; + + /* Found end of sprite list marker for non-extended modes? */ + if(vdp.extended == 0 && yp == 208) + goto end; + + /* Actual Y position is +1 */ + yp++; + + /* Wrap Y coordinate for sprites > 240 */ + if(yp > 240) yp -= 256; + + /* Check if sprite falls on current line */ + if((line >= yp) && (line < (yp + height))) + { + uint8 *linebuf_ptr; + + /* Width of sprite */ + int start = 0; + int end = width; + + /* Sprite X position */ + int xp = st[0x80 + (i << 1)]; + + /* Pattern name */ + int n = st[0x81 + (i << 1)]; + + /* Bump sprite count */ + count++; + + /* Too many sprites on this line ? */ + if(count == 9) + { + vdp.status |= 0x40; + goto end; + } + + /* X position shift */ + if(vdp.reg[0] & 0x08) xp -= 8; + + /* Add MSB of pattern name */ + if(vdp.reg[6] & 0x04) n |= 0x0100; + + /* Mask LSB for 8x16 sprites */ + if(vdp.reg[1] & 0x02) n &= 0x01FE; + + /* Point to offset in line buffer */ + linebuf_ptr = (uint8 *)&linebuf[xp]; + + /* Clip sprites on left edge */ + if(xp < 0) + { + start = (0 - xp); + } + + /* Clip sprites on right edge */ + if((xp + width) > 256) + { + end = (256 - xp); + } + + /* Draw double size sprite */ + if(vdp.reg[1] & 0x01) + { + int x; + uint8 *cache_ptr = (uint8 *)&bg_pattern_cache[(n << 6) | (((line - yp) >> 1) << 3)]; + + /* Draw sprite line */ + for(x = start; x < end; x++) + { + /* Source pixel from cache */ + uint8 sp = cache_ptr[(x >> 1)]; + + /* Only draw opaque sprite pixels */ + if(sp) + { + /* Background pixel from line buffer */ + uint8 bg = linebuf_ptr[x]; + + /* Look up result */ + linebuf_ptr[x] = lut[(bg << 8) | (sp)]; + + /* Update collision buffer */ + collision_buffer |= bg; + } + } + } + else /* Regular size sprite (8x8 / 8x16) */ + { + int x; + uint8 *cache_ptr = (uint8 *)&bg_pattern_cache[(n << 6) | ((line - yp) << 3)]; + + /* Draw sprite line */ + for(x = start; x < end; x++) + { + /* Source pixel from cache */ + uint8 sp = cache_ptr[x]; + + /* Only draw opaque sprite pixels */ + if(sp) + { + /* Background pixel from line buffer */ + uint8 bg = linebuf_ptr[x]; + + /* Look up result */ + linebuf_ptr[x] = lut[(bg << 8) | (sp)]; + + /* Update collision buffer */ + collision_buffer |= bg; + } + } + } + } + } +end: + /* Set sprite collision flag */ + if(collision_buffer & 0x40) + vdp.status |= 0x20; +} + + + +void update_bg_pattern_cache(void) +{ + int i; + uint8 x, y; + uint16 name; + + if(!bg_list_index) return; + + for(i = 0; i < bg_list_index; i++) + { + name = bg_name_list[i]; + bg_name_list[i] = 0; + + for(y = 0; y < 8; y++) + { + if(bg_name_dirty[name] & (1 << y)) + { + uint8 *dst = &bg_pattern_cache[name << 6]; + + uint16 bp01 = vdp.vram16[(name << 4) | (y << 1) | (0)]; + uint16 bp23 = vdp.vram16[(name << 4) | (y << 1) | (1)]; + uint32 temp = (bp_lut[bp01] >> 2) | (bp_lut[bp23]); + + for(x = 0; x < 8; x++) + { + uint8 c = (temp >> (x << 2)) & 0x0F; + dst[0x00000 | (y << 3) | (x)] = (c); + dst[0x08000 | (y << 3) | (x ^ 7)] = (c); + dst[0x10000 | ((y ^ 7) << 3) | (x)] = (c); + dst[0x18000 | ((y ^ 7) << 3) | (x ^ 7)] = (c); + } + } + } + bg_name_dirty[name] = 0; + } + bg_list_index = 0; +} + +static uint32 SystemColorMap[4096]; + +/* Update a palette entry */ +void palette_sync(int index, int force) +{ + uint32 color; + + if(IS_GG) + color = SystemColorMap[(vdp.cram[(index << 1) | 0] | (vdp.cram[(index << 1) | 1] << 8)) & 4095]; + else + { + if(!(vdp.reg[0] & 0x4)) + { + color = SystemColorMap[tms_crom[index & 0x0F] & 0x3F]; + } + else + color = SystemColorMap[vdp.cram[index] & 0x3F]; + } + pixel[index] = color; +} + +static void remap_8_to_32(int line) +{ + int i; + uint32 *p = (uint32 *)&bitmap.data[(line * bitmap.pitch)]; + + for(i = 0; i < 256; i++) + { + p[i] = pixel[ internal_buffer[i] & PIXEL_MASK ]; + } +} + +void SMS_VDPSetPixelFormat(const MDFN_PixelFormat &format) +{ + int r, g, b; + + if(IS_GG) + { + for(int i = 0; i < 4096; i++) + { + /* ----BBBBGGGGRRRR */ + r = (i & 0xF) * 17; + g = ((i >> 4) & 0xF) * 17; + b = ((i >> 8) & 0xF) * 17; + + SystemColorMap[i] = format.MakeColor(r, g, b); + } + } + else + { + for(int i = 0; i < 64; i++) + { + /* --BBGGRR */ + r = (i & 0x3) * 85; + g = ((i >> 2) & 0x3) * 85; + b = ((i >> 4) & 0x3) * 85; + + SystemColorMap[i] = format.MakeColor(r, g, b); + } + } + + for(int i = 0; i < PALETTE_SIZE; i++) + palette_sync(i, 1); +} + +} diff --git a/libmednahawk/src/sms/render.h b/libmednahawk/src/sms/render.h new file mode 100644 index 0000000000..b2042b72a4 --- /dev/null +++ b/libmednahawk/src/sms/render.h @@ -0,0 +1,38 @@ + +#ifndef _RENDER_H_ +#define _RENDER_H_ + +namespace MDFN_IEN_SMS +{ + +/* Used for blanking a line in whole or in part */ +#define BACKDROP_COLOR (0x10 | (vdp.reg[7] & 0x0F)) + +extern void (*render_bg)(int line); +extern void (*render_obj)(int line); +extern uint8 *linebuf; +extern uint8 internal_buffer[0x100]; +extern uint32 pixel[]; +extern uint8 bg_name_dirty[0x200]; +extern uint16 bg_name_list[0x200]; +extern uint16 bg_list_index; +extern uint8 bg_pattern_cache[0x20000]; +extern uint8 tms_lookup[16][256][2]; +extern uint8 mc_lookup[16][256][8]; +extern uint8 txt_lookup[256][2]; +extern uint8 bp_expand[256][8]; +extern uint8 lut[0x10000]; +extern uint32 bp_lut[0x10000]; + +void render_shutdown(void); +void render_init(void); +void render_reset(void); +void render_line(int line, int skip); +void render_bg_sms(int line); +void render_obj_sms(int line); +void update_bg_pattern_cache(void); +void palette_sync(int index, int force); + +} + +#endif /* _RENDER_H_ */ diff --git a/libmednahawk/src/sms/romdb.cpp b/libmednahawk/src/sms/romdb.cpp new file mode 100644 index 0000000000..7997a99a91 --- /dev/null +++ b/libmednahawk/src/sms/romdb.cpp @@ -0,0 +1,41 @@ +#include "shared.h" +#include "romdb.h" + +namespace MDFN_IEN_SMS +{ + +static const rominfo_t game_list[] = { + { 0x29822980, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Cosmic Spacehead" }, + { 0xB9664AE1, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Fantastic Dizzy" }, + { 0xA577CE46, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Micro Machines" }, + { 0x8813514B, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Excellent Dizzy (Proto)" }, + { 0xAA140C9C, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Excellent Dizzy (Proto - GG)" }, + { 0xea5c3a6f, MAPPER_CODIES, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Dinobasher Starring Bignose the Caveman (Proto)" }, + { 0xa109a6fe, MAPPER_SEGA, DISPLAY_PAL, TERRITORY_EXPORT, -1, "Power Strike II" }, + + // Game Gear + {0xd9a7f170, MAPPER_CODIES, DISPLAY_NTSC, TERRITORY_EXPORT, -1, "S.S. Lucifer" }, + + {0x5e53c7f7, MAPPER_CODIES, DISPLAY_NTSC, TERRITORY_EXPORT, -1, "Ernie Els Golf" }, + {0xc888222b, MAPPER_CODIES, DISPLAY_NTSC, TERRITORY_EXPORT, CONSOLE_SMS, "Fantastic Dizzy" }, +/* Not working?*/ {0x152f0dcc, MAPPER_CODIES, DISPLAY_NTSC, TERRITORY_EXPORT, -1, "Drop Zone" }, +/* Not working?*/ {0x8813514b, MAPPER_CODIES, DISPLAY_NTSC, TERRITORY_EXPORT, -1, "Excellent Dizzy Collection" }, + + // SG-1000 + { 0x092f29d6, MAPPER_CASTLE, DISPLAY_NTSC, TERRITORY_DOMESTIC, -1, "The Castle" }, + { (uint32)-1, -1 , -1 , -1 , -1, NULL}, +}; + +const rominfo_t *find_rom_in_db(uint32 crc) +{ + /* Look up mapper in game list */ + for(int i = 0; game_list[i].name != NULL; i++) + { + if(crc == game_list[i].crc) + return(&game_list[i]); + } + + return(NULL); +} + +} diff --git a/libmednahawk/src/sms/romdb.h b/libmednahawk/src/sms/romdb.h new file mode 100644 index 0000000000..4083a8e035 --- /dev/null +++ b/libmednahawk/src/sms/romdb.h @@ -0,0 +1,20 @@ +#ifndef __ROMDB_H +#define __ROMDB_H + +namespace MDFN_IEN_SMS +{ + +typedef struct { + uint32 crc; + int mapper; + int display; + int territory; + int system; + const char *name; +} rominfo_t; + +const rominfo_t *find_rom_in_db(uint32 crc); + +} + +#endif diff --git a/libmednahawk/src/sms/shared.h b/libmednahawk/src/sms/shared.h new file mode 100644 index 0000000000..ac33b970b3 --- /dev/null +++ b/libmednahawk/src/sms/shared.h @@ -0,0 +1,18 @@ +#ifndef _SHARED_H_ +#define _SHARED_H_ + +#include "../mednafen.h" +#include "z80-fuse/z80.h" +#include "sms.h" +#include "pio.h" +#include "memz80.h" +#include "vdp.h" +#include "render.h" +#include "sound.h" +#include "system.h" +#include "tms.h" +#include "cart.h" + +using namespace MDFN_IEN_SMS; + +#endif /* _SHARED_H_ */ diff --git a/libmednahawk/src/sms/sms.cpp b/libmednahawk/src/sms/sms.cpp new file mode 100644 index 0000000000..d3217fcf49 --- /dev/null +++ b/libmednahawk/src/sms/sms.cpp @@ -0,0 +1,117 @@ +/* + sms.c -- + Sega Master System console emulation. +*/ +#include "shared.h" + +namespace MDFN_IEN_SMS +{ + +/* SMS context */ +sms_t sms; + +void sms_writebyte(uint16 A, uint8 V) +{ + if(A >= 0xC000) + sms.wram[A & 0x1FFF] = V; + + SMS_CartWrite(A, V); +} + +uint8 sms_readbyte(uint16 A) +{ + uint8 ret; + + if(A >= 0xC000) + ret = sms.wram[A & 0x1FFF]; + else + ret = SMS_CartRead(A); + + return(ret); +} + +void sms_init(void) +{ + z80_init(); + + /* Default: open bus */ + data_bus_pullup = 0x00; + data_bus_pulldown = 0x00; + + z80_writebyte = sms_writebyte; + z80_readbyte = sms_readbyte; + + /* Force SMS (J) console type if FM sound enabled */ + if(sms.use_fm) + { + sms.console = CONSOLE_SMSJ; + sms.territory = TERRITORY_DOMESTIC; + sms.display = DISPLAY_NTSC; + } + + /* Initialize selected console emulation */ + switch(sms.console) + { + case CONSOLE_SMS: + z80_writeport = sms_port_w; + z80_readport = sms_port_r; + break; + + case CONSOLE_SMSJ: + z80_writeport = smsj_port_w; + z80_readport = smsj_port_r; + break; + + case CONSOLE_SMS2: + z80_writeport = sms_port_w; + z80_readport = sms_port_r; + data_bus_pullup = 0xFF; + break; + + case CONSOLE_GG: + z80_writeport = gg_port_w; + z80_readport = gg_port_r; + data_bus_pullup = 0xFF; + break; + + case CONSOLE_GGMS: + z80_writeport = ggms_port_w; + z80_readport = ggms_port_r; + data_bus_pullup = 0xFF; + break; + + case CONSOLE_GEN: + case CONSOLE_MD: + z80_writeport = md_port_w; + z80_readport = md_port_r; + break; + + case CONSOLE_GENPBC: + case CONSOLE_MDPBC: + z80_writeport = md_port_w; + z80_readport = md_port_r; + data_bus_pullup = 0xFF; + break; + } +} + +void sms_shutdown(void) +{ + /* Nothing to do */ +} + +void sms_reset(void) +{ + z80_reset(); + + /* Clear SMS context */ + memset(sms.wram, 0, sizeof(sms.wram)); + + sms.paused = 0x00; + sms.save = 0x00; + sms.fm_detect = 0x00; + sms.memctrl = 0xAB; + sms.ioctrl = 0xFF; +} + +} diff --git a/libmednahawk/src/sms/sms.h b/libmednahawk/src/sms/sms.h new file mode 100644 index 0000000000..e5b9801a51 --- /dev/null +++ b/libmednahawk/src/sms/sms.h @@ -0,0 +1,99 @@ + +#ifndef _SMS_H_ +#define _SMS_H_ + +namespace MDFN_IEN_SMS +{ + +enum { + SLOT_BIOS = 0, + SLOT_CARD = 1, + SLOT_CART = 2, + SLOT_EXP = 3 +}; + +enum { + MAPPER_NONE = 0, + MAPPER_SEGA = 1, + MAPPER_CODIES = 2, + MAPPER_CASTLE = 3, +}; + +enum { + DISPLAY_NTSC = 0, + DISPLAY_PAL = 1 +}; + +enum { + CLOCK_NTSC = 3579545, + CLOCK_PAL = 3546893 +}; + +enum { + CONSOLE_SMS = 0x20, + CONSOLE_SMSJ = 0x21, + CONSOLE_SMS2 = 0x22, + + CONSOLE_GG = 0x40, + CONSOLE_GGMS = 0x41, + + CONSOLE_MD = 0x80, + CONSOLE_MDPBC = 0x81, + CONSOLE_GEN = 0x82, + CONSOLE_GENPBC = 0x83 +}; + +#define HWTYPE_SMS CONSOLE_SMS +#define HWTYPE_GG CONSOLE_GG +#define HWTYPE_MD CONSOLE_MD + +#define IS_SMS (sms.console & HWTYPE_SMS) +#define IS_GG (sms.console & HWTYPE_GG) +#define IS_MD (sms.console & HWTYPE_MD) + +enum { + TERRITORY_DOMESTIC = 0, + TERRITORY_EXPORT = 1 +}; + +/* SMS context */ +typedef struct +{ + uint8 wram[0x2000]; + uint8 paused; + uint8 save; + uint8 territory; + uint8 console; + uint8 display; + uint8 fm_detect; + uint8 use_fm; + uint8 memctrl; + uint8 ioctrl; + struct { + uint8 pdr; /* Parallel data register */ + uint8 ddr; /* Data direction register */ + uint8 txdata; /* Transmit data buffer */ + uint8 rxdata; /* Receive data buffer */ + uint8 sctrl; /* Serial mode control and status */ + } sio; + struct { + int type; + } device[2]; + + uint32 timestamp; + int32 cycle_counter; +} sms_t; + +/* Global data */ +extern sms_t sms; + +/* Function prototypes */ +uint8 sms_readbyte(uint16 A); +void sms_init(void); +void sms_reset(void); +void sms_shutdown(void); +void sms_mapper_w(int address, int data); +int sms_irq_callback(int param); + +} +#endif /* _SMS_H_ */ diff --git a/libmednahawk/src/sms/sound.cpp b/libmednahawk/src/sms/sound.cpp new file mode 100644 index 0000000000..1030e57ee6 --- /dev/null +++ b/libmednahawk/src/sms/sound.cpp @@ -0,0 +1,213 @@ +/* + Copyright (C) 1998-2004 Charles MacDonald + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "shared.h" +#include +#include + +#include "sms_apu/Sms_Apu.h" +#include "ym2413/emu2413.h" + +namespace MDFN_IEN_SMS +{ + +static Sms_Apu apu; +static Stereo_Buffer zebuf; +typedef Blip_Synth FMSynth_t; +static FMSynth_t fmsynth; +static EMU2413 *FMThing = NULL; +static uint32 SoundClock; + +/*--------------------------------------------------------------------------*/ +/* Sound chip access handlers */ +/*--------------------------------------------------------------------------*/ + +void psg_stereo_w(int data) +{ + apu.write_ggstereo(sms.timestamp, data); +} + +void psg_write(int data) +{ + //printf("Write: %d, %02x\n", sms.timestamp, data); + apu.write_data(sms.timestamp, data); +} + +/*--------------------------------------------------------------------------*/ +/* Mark III FM Unit / Master System (J) built-in FM handlers */ +/*--------------------------------------------------------------------------*/ + +int fmunit_detect_r(void) +{ + //printf("Detect_r: %02x\n", sms.fm_detect); + return sms.fm_detect; +} + +void fmunit_detect_w(int data) +{ + //printf("Detect_w: %02x\n", data); + sms.fm_detect = data; +} + +static int16 fm_last_value; +static int32 fm_last_timestamp; +static int32 fm_div; + +static void UpdateFM(void) +{ + int32 cycles = sms.timestamp - fm_last_timestamp; + + fm_div -= cycles; + while(fm_div <= 0) + { + int32 new_value; + + new_value = EMU2413_calc(FMThing); + + //if(new_value > 32767) { printf("MOO0: %d\n", new_value); new_value = 32767; } + //else if(new_value < -32768) { printf("MOO1: %d\n", new_value); new_value = -32768; } + + //if(abs(new_value) > 95) + //{ + // printf("new=%d, last=%d\n", new_value, fm_last_value); + // if(new_value < -) new_value = -95; + // else new_value = 95; + //} + + fmsynth.offset(sms.timestamp + fm_div, new_value - fm_last_value, zebuf.left()); + fmsynth.offset(sms.timestamp + fm_div, new_value - fm_last_value, zebuf.right()); + fm_last_value = new_value; + fm_div += 72; + } + + fm_last_timestamp = sms.timestamp; +} + +void fmunit_write(int offset, int data) +{ + //printf("FM Write: %d %d\n", offset, data); + if(FMThing) + { + UpdateFM(); + EMU2413_writeIO(FMThing, offset, data); + } +} + +void SMS_SoundReset(void) +{ + apu.reset(); + if(FMThing) + EMU2413_reset(FMThing); +} + + +int32 SMS_SoundFlush(int16 *SoundBuf, int32 MaxSoundFrames) +{ + int32 FrameCount = 0; + + if(FMThing) + UpdateFM(); + + apu.end_frame(sms.timestamp); + + zebuf.end_frame(sms.timestamp); + + if(SoundBuf) + FrameCount = zebuf.read_samples(SoundBuf, MaxSoundFrames * 2) / 2; + else + zebuf.clear(); + + fm_last_timestamp = 0; + + return(FrameCount); +} + +static void RedoVolume(void) +{ + apu.output(zebuf.center(), zebuf.left(), zebuf.right()); + apu.volume(0.50); + fmsynth.volume(1.0 / 16384); //32768); //1.0 / 256); // / 65536); //0.15 / 8192); +} + +void SMS_SoundInit(uint32 clock, bool WantFM) +{ + SoundClock = clock; + + SMS_SetSoundRate(0); + zebuf.clock_rate((long)(SoundClock)); + + RedoVolume(); + zebuf.bass_freq(20); + + if(WantFM) + FMThing = EMU2413_new(3579545); +} + +void SMS_SoundClose(void) +{ + if(FMThing) + { + EMU2413_delete(FMThing); + FMThing = NULL; + } + +} + +bool SMS_SetSoundRate(uint32 rate) +{ + zebuf.set_sample_rate(rate ? rate : 44100, 60); + + return(TRUE); +} + + +int SMS_SoundStateAction(StateMem *sm, int load, int data_only) +{ + Sms_ApuState sn_state; + int ret = 1; + + memset(&sn_state, 0, sizeof(Sms_ApuState)); + + if(!load) + { + apu.save_state(&sn_state); + } + + SFORMAT StateRegs[] = + { + SFARRAY32N(sn_state.volume, 4, "Volume"), + SFARRAY32N(sn_state.sq_period, 3, "SQPeriod"), + SFARRAY32N(sn_state.sq_phase, 3, "SQPhase"), + SFVARN(sn_state.noise_period, "NPeriod"), + SFVARN(sn_state.noise_shifter, "NShifter"), + SFVARN(sn_state.noise_feedback, "NFeedback"), + SFVARN(sn_state.latch, "Latch"), + SFVARN(sn_state.ggstereo, "GGStereo"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "PSG")) + ret = 0; + else if(load) + { + apu.load_state(&sn_state); + } + return(ret); +} + +} diff --git a/libmednahawk/src/sms/sound.h b/libmednahawk/src/sms/sound.h new file mode 100644 index 0000000000..811e3911e6 --- /dev/null +++ b/libmednahawk/src/sms/sound.h @@ -0,0 +1,22 @@ +#ifndef __SMS_SOUND_H +#define __SMS_SOUND_H + +namespace MDFN_IEN_SMS +{ + +/* Function prototypes */ +void psg_write(int data); +void psg_stereo_w(int data); +int fmunit_detect_r(void); +void fmunit_detect_w(int data); +void fmunit_write(int offset, int data); + +void SMS_SoundClose(void); +int32 SMS_SoundFlush(int16 *SoundBuf, int32 MaxSoundFrames); +void SMS_SoundReset(void); +bool SMS_SetSoundRate(uint32 rate); +int SMS_SoundStateAction(StateMem *sm, int load, int data_only); +void SMS_SoundInit(uint32 clock, bool WantFM); + +} +#endif diff --git a/libmednahawk/src/sms/system.cpp b/libmednahawk/src/sms/system.cpp new file mode 100644 index 0000000000..f18d345146 --- /dev/null +++ b/libmednahawk/src/sms/system.cpp @@ -0,0 +1,496 @@ +/* + Copyright (C) 1998-2004 Charles MacDonald + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "shared.h" +#include "../mempatcher.h" + +namespace MDFN_IEN_SMS +{ + +bitmap_t bitmap; +input_t input; +static int32 SoftResetCount; + +/* Run the virtual console emulation for one frame */ +void system_frame(int skip_render) +{ + /* Debounce pause key */ + if(input.system & INPUT_PAUSE) + { + if(!sms.paused) + { + sms.paused = 1; + + z80_nmi(); + } + } + else + { + sms.paused = 0; + } + + if(SoftResetCount) + { + SoftResetCount--; + if(!SoftResetCount) + input.system &= ~INPUT_RESET; + } + SMS_VDPRunFrame(skip_render); +} + + +void system_reset(void) +{ + SoftResetCount = 0; + + SMS_CartReset(); + + sms_reset(); + pio_reset(); + vdp_reset(); + render_reset(); + SMS_SoundReset(); +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(SoftResetCount), + SFVAR(sms.cycle_counter), + SFARRAYN(sms.wram, 0x2000, "RAM"), + + SFVAR(sms.paused), + + SFVAR(input.pad[0]), + SFVAR(input.pad[1]), + + SFVAR(input.analog[0]), + SFVAR(input.analog[1]), + + SFVAR(input.system), + + SFVAR(sms.fm_detect), + SFVAR(sms.memctrl), + + //SFVAR(z80_runtime), + //SFARRAY(CPUExRAM, 16384), + //SFVAR(FlashStatusEnable), + SFEND + }; + int ret = 1; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + ret &= z80_state_action(sm, load, data_only, "Z80"); + ret &= SMS_CartStateAction(sm, load, data_only); + ret &= SMS_PIOStateAction(sm, load, data_only); + ret &= SMS_SoundStateAction(sm, load, data_only); + ret &= SMS_VDPStateAction(sm, load, data_only); + + if(load) + { + if(sms.cycle_counter > 1000) + { + sms.cycle_counter = 1000; + puts("sms.cycle_counter sanity failed"); + } + } + + return(ret); +} + +static uint8 *InputPtrs[2]; + +static void SetInput(int port, const char *type, void *ptr) +{ + InputPtrs[port] = (uint8 *)ptr; +} + +static void Emulate(EmulateSpecStruct *espec) +{ + if(espec->VideoFormatChanged) + SMS_VDPSetPixelFormat(espec->surface->format); + + if(espec->SoundFormatChanged) + SMS_SetSoundRate(espec->SoundRate); + + + sms.timestamp = 0; + + input.pad[0] = *InputPtrs[0] & 0x3F; + + if(IS_SMS) + { + input.pad[1] = *InputPtrs[1] & 0x3F; + + if((*InputPtrs[0] | *InputPtrs[1]) & 0x40) + input.system |= INPUT_PAUSE; + else + input.system &= ~INPUT_PAUSE; + } + else // GG: + { + if(*InputPtrs[0] & 0x40) + { + input.system |= INPUT_START; + } + else + input.system &= ~INPUT_START; + } + + //NGPJoyLatch = *chee; + + MDFNMP_ApplyPeriodicCheats(); + + if(sms.console == CONSOLE_GG) + { + espec->DisplayRect.x = 48; + espec->DisplayRect.y = 48; + espec->DisplayRect.w = 160; + espec->DisplayRect.h = 144; + } + else + { + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + espec->DisplayRect.w = 256; + espec->DisplayRect.h = 240; + } + + bitmap.data = (uint8*)espec->surface->pixels; + bitmap.width = 256; + bitmap.height = 240; + bitmap.pitch = 256 * sizeof(uint32); + + system_frame(espec->skip); + + espec->MasterCycles = sms.timestamp; + espec->SoundBufSize = SMS_SoundFlush(espec->SoundBuf, espec->SoundBufMaxSize); +} + +static void CloseGame(void) +{ + SMS_CartClose(); + + sms_shutdown(); + pio_shutdown(); + vdp_shutdown(); + render_shutdown(); + SMS_SoundClose(); +} + +static int LoadCommon(const char *name, MDFNFILE *fp) +{ + int32 size = fp->size; + const uint8 *data_ptr = fp->data; + + if(size & 512) + { + size -= 512; + data_ptr += 512; + } + + /* Assign default settings (US NTSC machine) */ + sms.display = DISPLAY_NTSC; + + sms.territory = MDFN_GetSettingI("sms.territory"); + sms.use_fm = FALSE; + + + if(!SMS_CartInit(data_ptr, size)) + return(0); + + if(IS_SMS && sms.territory == TERRITORY_DOMESTIC) + sms.use_fm = MDFN_GetSettingB("sms.fm"); + + MDFNMP_Init(1024, 65536 / 1024); + + system_assign_device(PORT_A, DEVICE_PAD2B); + system_assign_device(PORT_B, DEVICE_PAD2B); + + MDFNMP_AddRAM(8192, 0xC000, sms.wram); + + sms_init(); + pio_init(); + vdp_init(IS_SMS && sms.territory == TERRITORY_DOMESTIC); + render_init(); + + MDFNGameInfo->GameSetMD5Valid = FALSE; + + uint32 sndclk; + + if(sms.display == DISPLAY_PAL) + { + sndclk = 3546893; + MDFNGameInfo->fps = (uint32)((uint64)65536 * 256 * sndclk / 313 / 228); //6144000 * 65536 * 256 / 515 / 198); // 3072000 * 2 * 10000 / 515 / 198 + } + else + { + sndclk = 3579545; + MDFNGameInfo->fps = (uint32)((uint64)65536 * 256 * sndclk / 262 / 228); //6144000 * 65536 * 256 / 515 / 198); // 3072000 * 2 * 10000 / 515 / 198 + } + + MDFNGameInfo->MasterClock = MDFN_MASTERCLOCK_FIXED(sndclk); + + SMS_SoundInit(sndclk, sms.use_fm); + + sms.save = 0; + + + system_reset(); + + return(1); +} + +static bool TestMagicSMS(const char *name, MDFNFILE *fp) +{ + if(strcasecmp(fp->ext, "sms") && strcasecmp(fp->ext, "sg") && strcasecmp(fp->ext, "sc")) + return(FALSE); + + return(TRUE); +} + +static bool TestMagicGG(const char *name, MDFNFILE *fp) +{ + if(strcasecmp(fp->ext, "gg")) + return(FALSE); + + return(TRUE); +} + + +static int LoadSMS(const char *name, MDFNFILE *fp) +{ + sms.console = CONSOLE_SMS; + + return(LoadCommon(name, fp)); +} + +static int LoadGG(const char *name, MDFNFILE *fp) +{ + sms.console = CONSOLE_GG; + + return(LoadCommon(name, fp)); +} + +} + +static const InputDeviceInputInfoStruct GGGamepadIDII[] = +{ + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "button1", "Button 1", 4, IDIT_BUTTON_CAN_RAPID, NULL }, + { "button2", "Button 2", 5, IDIT_BUTTON_CAN_RAPID, NULL }, + { "Start", "Start", 6, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct SMSGamepadIDII[] = +{ + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "fire1", "Fire 1/Start", 4, IDIT_BUTTON_CAN_RAPID, NULL }, + { "fire2", "Fire 2", 5, IDIT_BUTTON_CAN_RAPID, NULL }, + { "pause", "Pause", 6, IDIT_BUTTON, NULL }, +}; + +static InputDeviceInfoStruct GGInputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(GGGamepadIDII) / sizeof(InputDeviceInputInfoStruct), + GGGamepadIDII, + } +}; + +static InputDeviceInfoStruct SMSInputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(SMSGamepadIDII) / sizeof(InputDeviceInputInfoStruct), + SMSGamepadIDII, + } +}; + +static const InputPortInfoStruct GGPortInfo[] = +{ + { "builtin", "Built-In", sizeof(GGInputDeviceInfo) / sizeof(InputDeviceInfoStruct), GGInputDeviceInfo, "gamepad" }, +}; + +static const InputPortInfoStruct SMSPortInfo[] = +{ + { "port1", "Port 1", sizeof(SMSInputDeviceInfo) / sizeof(InputDeviceInfoStruct), SMSInputDeviceInfo, "gamepad" }, + { "port2", "Port 2", sizeof(SMSInputDeviceInfo) / sizeof(InputDeviceInfoStruct), SMSInputDeviceInfo, "gamepad" } +}; + +static InputInfoStruct GGInputInfo = +{ + sizeof(GGPortInfo) / sizeof(InputPortInfoStruct), + GGPortInfo +}; + +static InputInfoStruct SMSInputInfo = +{ + sizeof(SMSPortInfo) / sizeof(InputPortInfoStruct), + SMSPortInfo +}; + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_POWER: system_reset(); break; + case MDFN_MSC_RESET: if(IS_SMS) + { + input.system |= INPUT_RESET; + SoftResetCount = 20; + } + else + system_reset(); + break; + } +} + +static MDFNSetting_EnumList Territory_List[] = +{ + { "domestic", TERRITORY_DOMESTIC, gettext_noop("Domestic(Japanese)") }, + { "export", TERRITORY_EXPORT, gettext_noop("Export(World)") }, + { NULL, 0 }, +}; + +static MDFNSetting SMSSettings[] = +{ + { "sms.territory", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("System territory/region."), NULL, MDFNST_ENUM, "export", NULL, NULL, NULL, NULL, Territory_List }, + { "sms.fm", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable FM sound emulation when playing domestic/Japan-region games."), NULL, MDFNST_BOOL, "1" }, + { NULL } +}; + +static MDFNSetting GGSettings[] = +{ + { NULL } +}; + + +static const FileExtensionSpecStruct SMSKnownExtensions[] = +{ + { ".sms", gettext_noop("Sega Master System ROM Image") }, + { NULL, NULL } +}; + +static const FileExtensionSpecStruct GGKnownExtensions[] = +{ + { ".gg", gettext_noop("Game Gear ROM Image") }, + { NULL, NULL } +}; + +MDFNGI EmulatedSMS = +{ + "sms", + "Sega Master System", + SMSKnownExtensions, + MODPRIO_INTERNAL_HIGH, + NULL, + &SMSInputInfo, + LoadSMS, + TestMagicSMS, + NULL, + NULL, + CloseGame, + NULL, //ToggleLayer, + NULL, //"Hi\0Ho\0Mo\0", //"Background Scroll\0Foreground Scroll\0Sprites\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + SetInput, + DoSimpleCommand, + SMSSettings, + 0, + 0, + FALSE, // Multires possible? + + 256, // lcm_width + 240, // lcm_height + NULL, // Dummy + + 256, // Nominal width + 240, // Nominal height + + 256, // Framebuffer width + 256, // Framebuffer height + + 2, // Number of output sound channels +}; + +MDFNGI EmulatedGG = +{ + "gg", + "Sega Game Gear", + GGKnownExtensions, + MODPRIO_INTERNAL_HIGH, + NULL, + &GGInputInfo, + LoadGG, + TestMagicGG, + NULL, + NULL, + CloseGame, + NULL, //ToggleLayer, + NULL, //"Hi\0Ho\0Mo\0", //"Background Scroll\0Foreground Scroll\0Sprites\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + SetInput, + DoSimpleCommand, + GGSettings, + 0, + 0, + FALSE, // Multires possible? + + 160, // lcm_width + 144, // lcm_height + NULL, // Dummy + + + 160, // nominal width + 144, // nominal height + + 256, // Framebuffer width + 256, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/sms/system.h b/libmednahawk/src/sms/system.h new file mode 100644 index 0000000000..213d9b8d2f --- /dev/null +++ b/libmednahawk/src/sms/system.h @@ -0,0 +1,68 @@ + +#ifndef _SYSTEM_H_ +#define _SYSTEM_H_ + +namespace MDFN_IEN_SMS +{ + +#define APP_NAME "SMS Plus" +#define APP_VERSION "1.2" + +#define PALETTE_SIZE 0x20 + +/* Mask for removing unused pixel data */ +#define PIXEL_MASK 0x1F + +/* These can be used for 'input.pad[]' */ +#define INPUT_UP 0x00000001 +#define INPUT_DOWN 0x00000002 +#define INPUT_LEFT 0x00000004 +#define INPUT_RIGHT 0x00000008 +#define INPUT_BUTTON2 0x00000010 +#define INPUT_BUTTON1 0x00000020 + +/* These can be used for 'input.system' */ +#define INPUT_START 0x00000001 /* Game Gear only */ +#define INPUT_PAUSE 0x00000002 /* Master System only */ +#define INPUT_RESET 0x00000004 /* Master System only */ + +enum { + SRAM_SAVE = 0, + SRAM_LOAD = 1 +}; + + +/* User input structure */ +typedef struct +{ + uint32 pad[2]; + uint8 analog[2]; + uint32 system; +} input_t; + +/* Bitmap structure */ +typedef struct +{ + unsigned char *data; + int width; + int height; + int pitch; +} bitmap_t; + +/* Global variables */ +extern bitmap_t bitmap; /* Display bitmap */ +extern input_t input; /* Controller input */ + +/* Function prototypes */ +void system_frame(int skip_render); +void system_init(void); +void system_reset(void); +void system_manage_sram(uint8 *sram, int slot, int mode); +void system_poweron(void); +void system_poweroff(void); + +} + +#endif /* _SYSTEM_H_ */ + + diff --git a/libmednahawk/src/sms/tms.cpp b/libmednahawk/src/sms/tms.cpp new file mode 100644 index 0000000000..676ec1879c --- /dev/null +++ b/libmednahawk/src/sms/tms.cpp @@ -0,0 +1,521 @@ +/* + tms.c -- + TMS9918 and legacy video mode support. +*/ +#include "shared.h" + +namespace MDFN_IEN_SMS +{ + +int text_counter; /* Text offset counter */ +uint8 tms_lookup[16][256][2]; /* Expand BD, PG data into 8-bit pixels (G1,G2) */ +uint8 mc_lookup[16][256][8]; /* Expand BD, PG data into 8-bit pixels (MC) */ +uint8 txt_lookup[256][2]; /* Expand BD, PG data into 8-bit pixels (TX) */ +uint8 bp_expand[256][8]; /* Expand PG data into 8-bit pixels */ +uint8 tms_obj_lut[16*256]; /* Look up priority between SG and display pixels */ + +static const uint8 diff_mask[] = {0x07, 0x07, 0x0F, 0x0F}; +static const uint8 name_mask[] = {0xFF, 0xFF, 0xFC, 0xFC}; +static const uint8 diff_shift[] = {0, 1, 0, 1}; +static const uint8 size_tab[] = {8, 16, 16, 32}; + +/* Internally latched sprite data in the VDP */ +typedef struct { + int xpos; + uint8 attr; + uint8 sg[2]; +} tms_sprite; + +tms_sprite sprites[4]; +int sprites_found; + +void parse_line(int line) +{ + int yp, i; + int mode = vdp.reg[1] & 3; + int size = size_tab[mode]; + int diff, name; + uint8 *sa, *sg; + tms_sprite *p; + + /* Reset # of sprites found */ + sprites_found = 0; + + /* Parse sprites */ + for(i = 0; i < 32; i++) + { + /* Point to current sprite in SA and our current sprite record */ + p = &sprites[sprites_found]; + sa = &vdp.vram[vdp.sa + (i << 2)]; + + /* Fetch Y coordinate */ + yp = sa[0]; + + /* Check for end marker */ + if(yp == 0xD0) + goto parse_end; + + /* Wrap Y position */ + if(yp > 0xE0) + yp -= 256; + + /* Check if sprite falls on following line */ + if(line >= yp && line < (yp + size)) + { + /* Sprite overflow on this line */ + if(sprites_found == 4) + { + /* Set 5S and abort parsing */ + vdp.status |= 0x40; + goto parse_end; + } + + /* Fetch X position */ + p->xpos = sa[1]; + + /* Fetch name */ + name = sa[2] & name_mask[mode]; + + /* Load attribute into attribute storage */ + p->attr = sa[3]; + + /* Apply early clock bit */ + if(p->attr & 0x80) + p->xpos -= 32; + + /* Calculate offset in pattern */ + diff = ((line - yp) >> diff_shift[mode]) & diff_mask[mode]; + + /* Insert additional name bit for 16-pixel tall sprites */ + if(diff & 8) + name |= 1; + + /* Fetch SG data */ + sg = &vdp.vram[vdp.sg | (name << 3) | (diff & 7)]; + p->sg[0] = sg[0x00]; + p->sg[1] = sg[0x10]; + + /* Bump found sprite count */ + ++sprites_found; + } + } +parse_end: + + /* Insert number of last sprite entry processed */ + vdp.status = (vdp.status & 0xE0) | (i & 0x1F); +} + +void render_obj_tms(int line) +{ + int i, x = 0; + int size, start, end, mode; + uint8 *lb, *obj_lut, *ex[2]; + tms_sprite *p; + + mode = vdp.reg[1] & 3; + size = size_tab[mode]; + + /* Render sprites */ + for(i = 0; i < sprites_found; i++) + { + p = &sprites[i]; + lb = &linebuf[p->xpos]; + obj_lut = &tms_obj_lut[(p->attr & 0x0F) << 8]; + + /* Point to expanded PG data */ + ex[0] = bp_expand[p->sg[0]]; + ex[1] = bp_expand[p->sg[1]]; + + /* Clip left edge */ + if(p->xpos < 0) + start = 0 - p->xpos; + else + start = 0; + + /* Clip right edge */ + if(p->xpos > 256 - size) + end = 256 - p->xpos; + else + end = size; + + /* Render sprite line */ + switch(mode) + { + case 0: /* 8x8 */ + for(x = start; x < end; x++) { + if(ex[0][x]) + lb[x] = obj_lut[lb[x]]; + } + break; + + case 1: /* 8x8 zoomed */ + for(x = start; x < end; x++) { + if(ex[0][x >> 1]) + lb[x] = obj_lut[lb[x]]; + } + break; + + case 2: /* 16x16 */ + for(x = start; x < end; x++) { + if(ex[(x >> 3) & 1][x & 7]) + lb[x] = obj_lut[lb[x]]; + } + break; + + case 3: /* 16x16 zoomed */ + for(x = start; x < end; x++) { + if(ex[(x >> 4) & 1][(x >> 1) & 7]) + lb[x] = obj_lut[lb[x]]; + } + break; + } + } +} + +/**** +1.) NOTE: xpos can be negative, but the 'start' value that is added + to xpos will ensure it is positive. + + For an EC sprite that is offscreen, 'start' will be larger + than 'end' and the for-loop used for rendering will abort + on the first pass. +***/ + + +#define RENDER_TX_LINE \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; + +#define RENDER_TX_BORDER \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; \ + *lb++ = 0x10 | clut[0]; + +#define RENDER_GR_LINE \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; \ + *lb++ = 0x10 | clut[ *bpex++ ]; + +#define RENDER_MC_LINE \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; \ + *lb++ = 0x10 | *mcex++; + +void make_tms_tables(void) +{ + int i, j, x; + int bd, pg, ct; + int sx, bx; + + for(sx = 0; sx < 16; sx++) + { + for(bx = 0; bx < 256; bx++) + { +// uint8 bd = (bx & 0x0F); + uint8 bs = (bx & 0x40); +// uint8 bt = (bd == 0) ? 1 : 0; + uint8 sd = (sx & 0x0F); +// uint8 st = (sd == 0) ? 1 : 0; + + // opaque sprite pixel, choose 2nd pal and set sprite marker + if(sd && !bs) + { + tms_obj_lut[(sx<<8)|(bx)] = sd | 0x10 | 0x40; + } + else + if(sd && bs) + { + // writing over a sprite + tms_obj_lut[(sx<<8)|(bx)] = bx; + } + else + { + tms_obj_lut[(sx<<8)|(bx)] = bx; + } + } + } + + + /* Text lookup table */ + for(bd = 0; bd < 256; bd++) + { + uint8 bg = (bd >> 0) & 0x0F; + uint8 fg = (bd >> 4) & 0x0F; + + /* If foreground is transparent, use background color */ + if(fg == 0) fg = bg; + + txt_lookup[bd][0] = bg; + txt_lookup[bd][1] = fg; + } + + /* Multicolor lookup table */ + for(bd = 0; bd < 16; bd++) + { + for(pg = 0; pg < 256; pg++) + { + int l = (pg >> 4) & 0x0F; + int r = (pg >> 0) & 0x0F; + + /* If foreground is transparent, use background color */ + if(l == 0) l = bd; + if(r == 0) r = bd; + + /* Unpack 2 nibbles across eight pixels */ + for(x = 0; x < 8; x++) + { + int c = (x & 4) ? r : l; + + mc_lookup[bd][pg][x] = c; + } + } + } + + /* Make bitmap data expansion table */ + memset(bp_expand, 0, sizeof(bp_expand)); + for(i = 0; i < 256; i++) + { + for(j = 0; j < 8; j++) + { + int c = (i >> (j ^ 7)) & 1; + bp_expand[i][j] = c; + } + } + + /* Graphics I/II lookup table */ + for(bd = 0; bd < 0x10; bd++) + { + for(ct = 0; ct < 0x100; ct++) + { + int backdrop = (bd & 0x0F); + int background = (ct >> 0) & 0x0F; + int foreground = (ct >> 4) & 0x0F; + + /* If foreground is transparent, use background color */ + if(background == 0) background = backdrop; + if(foreground == 0) foreground = backdrop; + + tms_lookup[bd][ct][0] = background; + tms_lookup[bd][ct][1] = foreground; + } + } +} + + +void render_bg_tms(int line) +{ + switch(vdp.mode & 7) + { + case 0: /* Graphics I */ + render_bg_m0(line); + break; + + case 1: /* Text */ + render_bg_m1(line); + break; + + case 2: /* Graphics II */ + render_bg_m2(line); + break; + + case 3: /* Text (Extended PG) */ + render_bg_m1x(line); + break; + + case 4: /* Multicolor */ + render_bg_m3(line); + break; + + case 5: /* Invalid (1+3) */ + render_bg_inv(line); + break; + + case 6: /* Multicolor (Extended PG) */ + render_bg_m3x(line); + break; + + case 7: /* Invalid (1+2+3) */ + render_bg_inv(line); + break; + } +} + +/* Graphics I */ +void render_bg_m0(int line) +{ + int v_row = (line & 7); + int column; + int name; + + uint8 *clut; + uint8 *bpex; + uint8 *lb = &linebuf[0]; + uint8 *pn = &vdp.vram[vdp.pn + ((line >> 3) << 5)]; + uint8 *ct = &vdp.vram[vdp.ct]; + uint8 *pg = &vdp.vram[vdp.pg | (v_row)]; + + for(column = 0; column < 32; column++) + { + name = pn[column]; + clut = &tms_lookup[vdp.bd][ct[name >> 3]][0]; + bpex = &bp_expand[pg[name << 3]][0]; + RENDER_GR_LINE + } +} + +/* Text */ +void render_bg_m1(int line) +{ + int v_row = (line & 7); + int column; + + uint8 *clut; + uint8 *bpex; + uint8 *lb = &linebuf[0]; +// uint8 *pn = &vdp.vram[vdp.pn + ((line >> 3) * 40)]; + + uint8 *pn = &vdp.vram[vdp.pn + text_counter]; + + uint8 *pg = &vdp.vram[vdp.pg | (v_row)]; + uint8 bk = vdp.reg[7]; + + clut = &txt_lookup[bk][0]; + + for(column = 0; column < 40; column++) + { + bpex = &bp_expand[pg[pn[column] << 3]][0]; + RENDER_TX_LINE + } + + /* V3 */ + if((vdp.line & 7) == 7) + text_counter += 40; + + RENDER_TX_BORDER +} + +/* Text + extended PG */ +void render_bg_m1x(int line) +{ + int v_row = (line & 7); + int column; + + uint8 *clut; + uint8 *bpex; + uint8 *lb = &linebuf[0]; + uint8 *pn = &vdp.vram[vdp.pn + ((line >> 3) * 40)]; + uint8 *pg = &vdp.vram[vdp.pg + (v_row) + ((line & 0xC0) << 5)]; + uint8 bk = vdp.reg[7]; + + clut = &tms_lookup[0][bk][0]; + + for(column = 0; column < 40; column++) + { + bpex = &bp_expand[pg[pn[column] << 3]][0]; + RENDER_TX_LINE + } + RENDER_TX_BORDER +} + +/* Invalid (2+3/1+2+3) */ +void render_bg_inv(int line) +{ + int column; + uint8 *clut; + uint8 *bpex; + uint8 *lb = &linebuf[0]; + uint8 bk = vdp.reg[7]; + + clut = &txt_lookup[bk][0]; + + for(column = 0; column < 40; column++) + { + bpex = &bp_expand[0xF0][0]; + RENDER_TX_LINE + } +} + +/* Multicolor */ +void render_bg_m3(int line) +{ + int column; + uint8 *mcex; + uint8 *lb = &linebuf[0]; + + uint8 *pn = &vdp.vram[vdp.pn + ((line >> 3) << 5)]; + uint8 *pg = &vdp.vram[vdp.pg + ((line >> 2) & 7)]; + + for(column = 0; column < 32; column++) + { + mcex = &mc_lookup[vdp.bd][pg[pn[column]<<3]][0]; + RENDER_MC_LINE + } +} + +/* Multicolor + extended PG */ +void render_bg_m3x(int line) +{ + int column; + uint8 *mcex; + uint8 *lb = &linebuf[0]; + uint8 *pn = &vdp.vram[vdp.pn + ((line >> 3) << 5)]; + uint8 *pg = &vdp.vram[vdp.pg + ((line >> 2) & 7) + ((line & 0xC0) << 5)]; + + for(column = 0; column < 32; column++) + { + mcex = &mc_lookup[vdp.bd][pg[pn[column]<<3]][0]; + RENDER_MC_LINE + } +} + +/* Graphics II */ +void render_bg_m2(int line) +{ + int v_row = (line & 7); + int column; + int name; + + uint8 *clut; + uint8 *bpex; + uint8 *lb = &linebuf[0]; + uint8 *pn = &vdp.vram[vdp.pn | ((line & 0xF8) << 2)]; + uint8 *ct = &vdp.vram[(vdp.ct & 0x2000) | (v_row) | ((line & 0xC0) << 5)]; + uint8 *pg = &vdp.vram[(vdp.pg & 0x2000) | (v_row) | ((line & 0xC0) << 5)]; + + for(column = 0; column < 32; column++) + { + name = pn[column] << 3; + clut = &tms_lookup[vdp.bd][ct[name]][0]; + bpex = &bp_expand[pg[name]][0]; + RENDER_GR_LINE + } +} + +} diff --git a/libmednahawk/src/sms/tms.h b/libmednahawk/src/sms/tms.h new file mode 100644 index 0000000000..2e5f0d3988 --- /dev/null +++ b/libmednahawk/src/sms/tms.h @@ -0,0 +1,24 @@ +#ifndef _TMS_H_ +#define _TMS_H_ + +namespace MDFN_IEN_SMS +{ + +extern int text_counter; + + +void make_tms_tables(void); +void render_bg_tms(int line); +void render_bg_m0(int line); +void render_bg_m1(int line); +void render_bg_m1x(int line); +void render_bg_inv(int line); +void render_bg_m3(int line); +void render_bg_m3x(int line); +void render_bg_m2(int line); +void render_obj_tms(int line); +void parse_line(int line); + +} + +#endif /* _TMS_H_ */ diff --git a/libmednahawk/src/sms/vdp.cpp b/libmednahawk/src/sms/vdp.cpp new file mode 100644 index 0000000000..495114e575 --- /dev/null +++ b/libmednahawk/src/sms/vdp.cpp @@ -0,0 +1,656 @@ +/* + vdp.c -- + Video Display Processor (VDP) emulation. +*/ +#include "shared.h" +#include "hvc.inc" + +namespace MDFN_IEN_SMS +{ + +/* Mark a pattern as dirty */ +#define MARK_BG_DIRTY(addr) \ +{ \ + int name = (addr >> 5) & 0x1FF; \ + if(bg_name_dirty[name] == 0) \ + { \ + bg_name_list[bg_list_index] = name; \ + bg_list_index++; \ + } \ + bg_name_dirty[name] |= (1 << ((addr >> 2) & 7)); \ +} + + +/* VDP context */ +vdp_t vdp; + + +/* Initialize VDP emulation */ +void vdp_init(bool want_quirk) +{ + memset(&vdp, 0, sizeof(vdp_t)); + + vdp.lines_per_frame = (sms.display == DISPLAY_NTSC) ? 262 : 313; + vdp.quirk_disabled = !want_quirk; + + vdp_reset(); +} + +void vdp_shutdown(void) +{ + /* Nothing to do */ +} + + +/* Reset VDP emulation */ +void vdp_reset(void) +{ + memset(vdp.vram, 0, sizeof(vdp.vram)); + memset(vdp.cram, 0, sizeof(vdp.cram)); + memset(vdp.reg, 0, sizeof(vdp.reg)); + vdp.status = 0; + vdp.latch = 0; + vdp.pending = 0; + vdp.buffer = 0; + vdp.code = 0; + vdp.addr = 0; + + vdp.pn = 0; + vdp.ct = 0; + vdp.pg = 0; + vdp.sa = 0; + vdp.sg = 0; + vdp.ntab = 0; + vdp.satb = 0; + vdp.line = 0; + vdp.left = 0; + vdp.height = 192; + vdp.extended = 0; + vdp.mode = 0; + vdp.vint_pending = 0; + vdp.hint_pending = 0; + vdp.hc_latch = 0; + vdp.cram_latch = 0; + vdp.bd = 0; +} + +void vdp_hclatch(void) +{ + unsigned int pixel_pos = ((sms.timestamp % CYCLES_PER_LINE) * 3) >> 1; + + if(pixel_pos >= 0x128) + pixel_pos += 0xAA; + + vdp.hc_latch = pixel_pos >> 1; +} + +void viewport_check(void) +{ + int i; + + int m1 = (vdp.reg[1] >> 4) & 1; + int m3 = (vdp.reg[1] >> 3) & 1; + int m2 = (vdp.reg[0] >> 1) & 1; + int m4 = (vdp.reg[0] >> 2) & 1; + + vdp.mode = (m4 << 3 | m3 << 2 | m2 << 1 | m1 << 0); + + // check if this is switching out of tms + if(!IS_GG) + { + for(i = 0; i < PALETTE_SIZE; i++) + palette_sync(i, 1); + } + + /* Check for extended modes when M4 and M2 are set */ + if((vdp.reg[0] & 0x06) == 0x06) + { + /* Examine M1 and M3 to determine selected mode */ + switch(vdp.reg[1] & 0x18) + { + case 0x00: /* 192 */ + case 0x18: /* 192 */ + vdp.height = 192; + vdp.extended = 0; + vdp.ntab = (vdp.reg[2] << 10) & 0x3800; + break; + + case 0x08: /* 240 */ + vdp.height = 240; + vdp.extended = 2; + vdp.ntab = ((vdp.reg[2] << 10) & 0x3000) | 0x0700; + break; + + case 0x10: /* 224 */ + vdp.height = 224; + vdp.extended = 1; + vdp.ntab = ((vdp.reg[2] << 10) & 0x3000) | 0x0700; + break; + + } + } + else + { + vdp.height = 192; + vdp.extended = 0; + vdp.ntab = (vdp.reg[2] << 10) & 0x3800; + } + + vdp.pn = (vdp.reg[2] << 10) & 0x3C00; + vdp.ct = (vdp.reg[3] << 6) & 0x3FC0; + vdp.pg = (vdp.reg[4] << 11) & 0x3800; + vdp.sa = (vdp.reg[5] << 7) & 0x3F80; + vdp.sg = (vdp.reg[6] << 11) & 0x3800; + + render_bg = (vdp.mode & 8) ? render_bg_sms : render_bg_tms; + render_obj = (vdp.mode & 8) ? render_obj_sms : render_obj_tms; +} + + +void vdp_reg_w(uint8 r, uint8 d) +{ + /* Store register data */ + vdp.reg[r] = d; + + switch(r) + { + case 0x00: /* Mode Control No. 1 */ + if(vdp.hint_pending) + { + if(d & 0x10) + z80_set_interrupt(TRUE); + else + z80_set_interrupt(FALSE); + } + viewport_check(); + break; + + case 0x01: /* Mode Control No. 2 */ + if(vdp.vint_pending) + { + if(d & 0x20) + z80_set_interrupt(TRUE); + else + z80_set_interrupt(FALSE); + } + viewport_check(); + break; + + case 0x02: /* Name Table A Base Address */ + vdp.ntab = (vdp.reg[2] << 10) & 0x3800; + vdp.pn = (vdp.reg[2] << 10) & 0x3C00; + viewport_check(); + break; + + case 0x03: + vdp.ct = (vdp.reg[3] << 6) & 0x3FC0; + break; + + case 0x04: + vdp.pg = (vdp.reg[4] << 11) & 0x3800; + break; + + case 0x05: /* Sprite Attribute Table Base Address */ + vdp.satb = (vdp.reg[5] << 7) & 0x3F00; + vdp.sa = (vdp.reg[5] << 7) & 0x3F80; + break; + + case 0x06: + vdp.sg = (vdp.reg[6] << 11) & 0x3800; + break; + + case 0x07: + vdp.bd = (vdp.reg[7] & 0x0F); + break; + } +} + + +void vdp_write(int offset, uint8 data) +{ + int index; + + switch(offset & 1) + { + case 0: /* Data port */ + + vdp.pending = 0; + + switch(vdp.code) + { + case 0: /* VRAM write */ + case 1: /* VRAM write */ + case 2: /* VRAM write */ + index = (vdp.addr & 0x3FFF); + if(data != vdp.vram[index]) + { + vdp.vram[index] = data; + MARK_BG_DIRTY(vdp.addr); + } + break; + + case 3: /* CRAM write */ + index = (vdp.addr & 0x1F); + if(data != vdp.cram[index]) + { + vdp.cram[index] = data; + palette_sync(index, 0); + } + break; + } + vdp.addr = (vdp.addr + 1) & 0x3FFF; + return; + + case 1: /* Control port */ + if(vdp.pending == 0) + { + vdp.addr = (vdp.addr & 0x3F00) | (data & 0xFF); + vdp.latch = data; + vdp.pending = 1; + } + else + { + vdp.pending = 0; + vdp.code = (data >> 6) & 3; + vdp.addr = (data << 8 | vdp.latch) & 0x3FFF; + + if(vdp.code == 0) + { + vdp.buffer = vdp.vram[vdp.addr & 0x3FFF]; + vdp.addr = (vdp.addr + 1) & 0x3FFF; + } + + if(vdp.code == 2) + { + int r = (data & 0x0F); + int d = vdp.latch; + vdp_reg_w(r, d); + } + } + return; + } +} + +uint8 vdp_read(int offset) +{ + uint8 temp; + + switch(offset & 1) + { + case 0: /* CPU <-> VDP data buffer */ + vdp.pending = 0; + temp = vdp.buffer; + vdp.buffer = vdp.vram[vdp.addr & 0x3FFF]; + vdp.addr = (vdp.addr + 1) & 0x3FFF; + return temp; + + case 1: /* Status flags */ + temp = vdp.status; + vdp.pending = 0; + vdp.status = 0; + vdp.vint_pending = 0; + vdp.hint_pending = 0; + z80_set_interrupt(FALSE); + return temp; + } + + /* Just to please the compiler */ + return -1; +} + +uint8 vdp_counter_r(int offset) +{ + switch(offset & 1) + { + case 0: /* V Counter */ + return vc_table[sms.display][vdp.extended][vdp.line & 0x1FF]; + + case 1: /* H Counter */ + vdp_hclatch(); // FIXME, call from pio.cpp under right conditions instead. + return vdp.hc_latch; + } + + /* Just to please the compiler */ + return -1; +} + + +/*--------------------------------------------------------------------------*/ +/* Game Gear VDP handlers */ +/*--------------------------------------------------------------------------*/ + +void gg_vdp_write(int offset, uint8 data) +{ + int index; + + switch(offset & 1) + { + case 0: /* Data port */ + vdp.pending = 0; + switch(vdp.code) + { + case 0: /* VRAM write */ + case 1: /* VRAM write */ + case 2: /* VRAM write */ + index = (vdp.addr & 0x3FFF); + if(data != vdp.vram[index]) + { + vdp.vram[index] = data; + MARK_BG_DIRTY(vdp.addr); + } + break; + + case 3: /* CRAM write */ + if(vdp.addr & 1) + { + vdp.cram_latch = (vdp.cram_latch & 0x00FF) | ((data & 0xFF) << 8); + vdp.cram[(vdp.addr & 0x3E) | (0)] = (vdp.cram_latch >> 0) & 0xFF; + vdp.cram[(vdp.addr & 0x3E) | (1)] = (vdp.cram_latch >> 8) & 0xFF; + palette_sync((vdp.addr >> 1) & 0x1F, 0); + } + else + { + vdp.cram_latch = (vdp.cram_latch & 0xFF00) | ((data & 0xFF) << 0); + } + break; + } + vdp.addr = (vdp.addr + 1) & 0x3FFF; + return; + + case 1: /* Control port */ + if(vdp.pending == 0) + { + vdp.addr = (vdp.addr & 0x3F00) | (data & 0xFF); + vdp.latch = data; + vdp.pending = 1; + } + else + { + vdp.pending = 0; + vdp.code = (data >> 6) & 3; + vdp.addr = (data << 8 | vdp.latch) & 0x3FFF; + + if(vdp.code == 0) + { + vdp.buffer = vdp.vram[vdp.addr & 0x3FFF]; + vdp.addr = (vdp.addr + 1) & 0x3FFF; + } + + if(vdp.code == 2) + { + int r = (data & 0x0F); + int d = vdp.latch; + vdp_reg_w(r, d); + } + } + return; + } +} + +/*--------------------------------------------------------------------------*/ +/* MegaDrive / Genesis VDP handlers */ +/*--------------------------------------------------------------------------*/ + +void md_vdp_write(int offset, uint8 data) +{ + int index; + + switch(offset & 1) + { + case 0: /* Data port */ + + vdp.pending = 0; + + switch(vdp.code) + { + case 0: /* VRAM write */ + case 1: /* VRAM write */ + index = (vdp.addr & 0x3FFF); + if(data != vdp.vram[index]) + { + vdp.vram[index] = data; + MARK_BG_DIRTY(vdp.addr); + } + break; + + case 2: /* CRAM write */ + case 3: /* CRAM write */ + index = (vdp.addr & 0x1F); + if(data != vdp.cram[index]) + { + vdp.cram[index] = data; + palette_sync(index, 0); + } + break; + } + vdp.addr = (vdp.addr + 1) & 0x3FFF; + return; + + case 1: /* Control port */ + if(vdp.pending == 0) + { + vdp.latch = data; + vdp.pending = 1; + } + else + { + vdp.pending = 0; + vdp.code = (data >> 6) & 3; + vdp.addr = (data << 8 | vdp.latch) & 0x3FFF; + + if(vdp.code == 0) + { + vdp.buffer = vdp.vram[vdp.addr & 0x3FFF]; + vdp.addr = (vdp.addr + 1) & 0x3FFF; + } + + if(vdp.code == 2) + { + int r = (data & 0x0F); + int d = vdp.latch; + vdp_reg_w(r, d); + } + } + return; + } +} + +/*--------------------------------------------------------------------------*/ +/* TMS9918 VDP handlers */ +/*--------------------------------------------------------------------------*/ + +void tms_write(int offset, int data) +{ + int index; + + switch(offset & 1) + { + case 0: /* Data port */ + + vdp.pending = 0; + + switch(vdp.code) + { + case 0: /* VRAM write */ + case 1: /* VRAM write */ + case 2: /* VRAM write */ + case 3: /* VRAM write */ + index = (vdp.addr & 0x3FFF); + if(data != vdp.vram[index]) + { + vdp.vram[index] = data; + MARK_BG_DIRTY(vdp.addr); + } + break; + } + vdp.addr = (vdp.addr + 1) & 0x3FFF; + return; + + case 1: /* Control port */ + if(vdp.pending == 0) + { + vdp.latch = data; + vdp.pending = 1; + } + else + { + vdp.pending = 0; + vdp.code = (data >> 6) & 3; + vdp.addr = (data << 8 | vdp.latch) & 0x3FFF; + + if(vdp.code == 0) + { + vdp.buffer = vdp.vram[vdp.addr & 0x3FFF]; + vdp.addr = (vdp.addr + 1) & 0x3FFF; + } + + if(vdp.code == 2) + { + int r = (data & 0x07); + int d = vdp.latch; + vdp_reg_w(r, d); + } + } + return; + } +} + +static INLINE void ExecuteCycles(int32 count) +{ + sms.cycle_counter += count; + + while(sms.cycle_counter > 0) + { + //printf("PC: %04x\n", z80_getpc()); + + int32 temp = z80_do_opcode(); + sms.timestamp += temp; + sms.cycle_counter -= temp; + } +} + + +void SMS_VDPRunFrame(int skip_render) +{ + static const int iline_table[] = {0xC0, 0xE0, 0xF0}; + int iline; + + text_counter = 0; + + /* End of frame, parse sprites for line 0 on line 261 (VCount=$FF) */ + if(vdp.mode <= 7) + parse_line(0); + + for(vdp.line = 0; vdp.line < vdp.lines_per_frame;) + { + int moohack = CYCLES_PER_LINE; + + ExecuteCycles(228 - 32); + moohack -= 228 - 32; + + iline = iline_table[vdp.extended]; + + render_line(vdp.line, skip_render); + + if(vdp.line <= iline) + { + vdp.left -= 1; + if(vdp.left == -1) + { + vdp.left = vdp.reg[0x0A]; + vdp.hint_pending = 1; + + ExecuteCycles(16); + moohack -= 16; + + if(vdp.reg[0x00] & 0x10) + { + z80_set_interrupt(TRUE); + } + } + } + else + { vdp.left = vdp.reg[0x0A]; + } + + if(vdp.line == iline) + { + vdp.status |= 0x80; + vdp.vint_pending = 1; + + ExecuteCycles(16); + moohack -= 16; + if(vdp.reg[0x01] & 0x20) + { + z80_set_interrupt(TRUE); + } + } + + if(moohack) + ExecuteCycles(moohack); + + ++vdp.line; + + if(vdp.mode <= 7) + parse_line(vdp.line); + } +} + +int SMS_VDPStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAYN(vdp.vram, 0x4000, "vram"), + SFARRAYN(vdp.cram, 0x40, "cram"), + SFARRAYN(vdp.reg, 0x10, "reg"), + + SFVARN(vdp.status, "status"), + SFVARN(vdp.latch, "latch"), + SFVARN(vdp.pending, "pending"), + SFVARN(vdp.buffer, "buffer"), + SFVARN(vdp.code, "code"), + SFVARN(vdp.addr, "addr"), + + SFVARN(vdp.pn, "pn"), + SFVARN(vdp.ct, "ct"), + SFVARN(vdp.pg, "pg"), + SFVARN(vdp.sa, "sa"), + SFVARN(vdp.sg, "sg"), + SFVARN(vdp.ntab, "ntab"), + SFVARN(vdp.satb, "satb"), + SFVARN(vdp.line, "line"), + SFVARN(vdp.left, "left"), + SFVARN(vdp.height, "height"), + SFVARN(vdp.extended, "extended"), + SFVARN(vdp.mode, "mode"), + SFVARN(vdp.vint_pending, "vint_pending"), + SFVARN(vdp.hint_pending, "hint_pending"), + SFVARN(vdp.hc_latch, "hc_latch"), + SFVARN(vdp.cram_latch, "cram_latch"), + SFVARN(vdp.bd, "bd"), + + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "VDP"); + + if(load) + { + /* Force full pattern cache update */ + bg_list_index = 0x200; + for(int i = 0; i < 0x200; i++) + { + bg_name_list[i] = i; + bg_name_dirty[i] = -1; + } + + /* Restore palette */ + for(int i = 0; i < PALETTE_SIZE; i++) + palette_sync(i, 1); + } + + return(ret); +} + + +} diff --git a/libmednahawk/src/sms/vdp.h b/libmednahawk/src/sms/vdp.h new file mode 100644 index 0000000000..ee891e7c47 --- /dev/null +++ b/libmednahawk/src/sms/vdp.h @@ -0,0 +1,85 @@ + +#ifndef _VDP_H_ +#define _VDP_H_ + +namespace MDFN_IEN_SMS +{ + +/* + vdp1 + + mode 4 when m4 set and m1 reset + + vdp2 + + mode 4 when m4 set and m2,m1 != 1,0 + + +*/ + +/* Display timing (NTSC) */ + +#define MASTER_CLOCK 3579545 +#define LINES_PER_FRAME 262 +#define CYCLES_PER_LINE 228 + +/* VDP context */ +typedef struct +{ + union + { + uint8 vram[0x4000]; + uint16 vram16[0x2000]; + }; + + uint8 cram[0x40]; + uint8 reg[0x10]; + uint8 status; + uint8 latch; + uint8 pending; + uint8 buffer; + uint8 code; + uint16 addr; + int pn, ct, pg, sa, sg; + int ntab; + int satb; + int line; + int left; + uint8 height; + uint8 extended; + uint8 mode; + uint8 vint_pending; + uint8 hint_pending; + uint8 hc_latch; + uint16 cram_latch; + uint8 bd; + + int lines_per_frame; + int rshift, gshift, bshift; + bool quirk_disabled; +} vdp_t; + +/* Global data */ +extern vdp_t vdp; + +/* Function prototypes */ +void vdp_init(bool want_quirk); +void vdp_shutdown(void); +void vdp_reset(void); +uint8 vdp_counter_r(int offset); +uint8 vdp_read(int offset); +void vdp_write(int offset, uint8 data); +void gg_vdp_write(int offset, uint8 data); +void md_vdp_write(int offset, uint8 data); +void tms_write(int offset, int data); +void vdp_hclatch(void); + + +void SMS_VDPRunFrame(int skip_render); +void SMS_VDPSetPixelFormat(const MDFN_PixelFormat &format); +int SMS_VDPStateAction(StateMem *sm, int load, int data_only); + +} + +#endif /* _VDP_H_ */ + diff --git a/libmednahawk/src/snes/Makefile.am b/libmednahawk/src/snes/Makefile.am new file mode 100644 index 0000000000..58a6ef69cc --- /dev/null +++ b/libmednahawk/src/snes/Makefile.am @@ -0,0 +1,80 @@ +AM_CFLAGS = @AM_CFLAGS@ @SNES_EXTRA_FLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @SNES_EXTRA_FLAGS@ @SNES_EXTRA_CXXFLAGS@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ -DNOMINMAX +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)/src/snes/src/lib + +noinst_LIBRARIES = libsnes.a + +meow = interface.cpp + + +meow += src/lib/libco/libco.c + + +#meow += src/lib/nall/string.cpp + +################# +### utilities ### +################# + +meow += src/cartridge/cartridge.cpp src/cheat/cheat.cpp + +############## +### memory ### +############## + +meow += src/memory/memory.cpp src/memory/smemory/smemory.cpp + +########### +### cpu ### +########### + +meow += src/cpu/cpu.cpp src/cpu/core/core.cpp src/cpu/scpu/scpu.cpp + +########### +### smp ### +########### + +meow += src/smp/smp.cpp src/smp/core/core.cpp src/smp/ssmp/ssmp.cpp + +########### +### dsp ### +########### + +# src/dsp/adsp/adsp.cpp +meow += src/dsp/sdsp/sdsp.cpp + +########### +### ppu ### +########### + +meow += src/ppu/ppu.cpp src/ppu/bppu/bppu.cpp + +############## +### system ### +############## + +meow += src/system/system.cpp + +##################### +### special chips ### +##################### + +meow += src/chip/sa1/sa1.cpp src/chip/bsx/bsx.cpp src/chip/srtc/srtc.cpp src/chip/sdd1/sdd1.cpp +meow += src/chip/spc7110/spc7110.cpp src/chip/cx4/cx4.cpp + +meow += src/chip/dsp1/dsp1.cpp src/chip/dsp2/dsp2.cpp src/chip/dsp3/dsp3.cpp src/chip/dsp4/dsp4.cpp + +meow += src/chip/obc1/obc1.cpp + +meow += src/chip/st010/st010.cpp src/chip/st011/st011.cpp src/chip/st018/st018.cpp + +meow += src/chip/superfx/superfx.cpp + +meow += src/chip/supergameboy/supergameboy.cpp + +meow += src/chip/21fx/21fx.cpp + +libsnes_a_SOURCES = $(meow) + diff --git a/libmednahawk/src/snes/Makefile.in b/libmednahawk/src/snes/Makefile.in new file mode 100644 index 0000000000..7c8f10802c --- /dev/null +++ b/libmednahawk/src/snes/Makefile.in @@ -0,0 +1,1096 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/snes +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libsnes_a_AR = $(AR) $(ARFLAGS) +libsnes_a_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am__objects_1 = interface.$(OBJEXT) src/lib/libco/libco.$(OBJEXT) \ + src/cartridge/cartridge.$(OBJEXT) src/cheat/cheat.$(OBJEXT) \ + src/memory/memory.$(OBJEXT) \ + src/memory/smemory/smemory.$(OBJEXT) src/cpu/cpu.$(OBJEXT) \ + src/cpu/core/core.$(OBJEXT) src/cpu/scpu/scpu.$(OBJEXT) \ + src/smp/smp.$(OBJEXT) src/smp/core/core.$(OBJEXT) \ + src/smp/ssmp/ssmp.$(OBJEXT) src/dsp/sdsp/sdsp.$(OBJEXT) \ + src/ppu/ppu.$(OBJEXT) src/ppu/bppu/bppu.$(OBJEXT) \ + src/system/system.$(OBJEXT) src/chip/sa1/sa1.$(OBJEXT) \ + src/chip/bsx/bsx.$(OBJEXT) src/chip/srtc/srtc.$(OBJEXT) \ + src/chip/sdd1/sdd1.$(OBJEXT) \ + src/chip/spc7110/spc7110.$(OBJEXT) src/chip/cx4/cx4.$(OBJEXT) \ + src/chip/dsp1/dsp1.$(OBJEXT) src/chip/dsp2/dsp2.$(OBJEXT) \ + src/chip/dsp3/dsp3.$(OBJEXT) src/chip/dsp4/dsp4.$(OBJEXT) \ + src/chip/obc1/obc1.$(OBJEXT) src/chip/st010/st010.$(OBJEXT) \ + src/chip/st011/st011.$(OBJEXT) src/chip/st018/st018.$(OBJEXT) \ + src/chip/superfx/superfx.$(OBJEXT) \ + src/chip/supergameboy/supergameboy.$(OBJEXT) \ + src/chip/21fx/21fx.$(OBJEXT) +am_libsnes_a_OBJECTS = $(am__objects_1) +libsnes_a_OBJECTS = $(am_libsnes_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libsnes_a_SOURCES) +DIST_SOURCES = $(libsnes_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ @SNES_EXTRA_FLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ @SNES_EXTRA_FLAGS@ @SNES_EXTRA_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ -DNOMINMAX +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)/src/snes/src/lib +noinst_LIBRARIES = libsnes.a + +#meow += src/lib/nall/string.cpp + +################# +### utilities ### +################# + +############## +### memory ### +############## + +########### +### cpu ### +########### + +########### +### smp ### +########### + +########### +### dsp ### +########### + +# src/dsp/adsp/adsp.cpp + +########### +### ppu ### +########### + +############## +### system ### +############## + +##################### +### special chips ### +##################### +meow = interface.cpp src/lib/libco/libco.c src/cartridge/cartridge.cpp \ + src/cheat/cheat.cpp src/memory/memory.cpp \ + src/memory/smemory/smemory.cpp src/cpu/cpu.cpp \ + src/cpu/core/core.cpp src/cpu/scpu/scpu.cpp src/smp/smp.cpp \ + src/smp/core/core.cpp src/smp/ssmp/ssmp.cpp \ + src/dsp/sdsp/sdsp.cpp src/ppu/ppu.cpp src/ppu/bppu/bppu.cpp \ + src/system/system.cpp src/chip/sa1/sa1.cpp \ + src/chip/bsx/bsx.cpp src/chip/srtc/srtc.cpp \ + src/chip/sdd1/sdd1.cpp src/chip/spc7110/spc7110.cpp \ + src/chip/cx4/cx4.cpp src/chip/dsp1/dsp1.cpp \ + src/chip/dsp2/dsp2.cpp src/chip/dsp3/dsp3.cpp \ + src/chip/dsp4/dsp4.cpp src/chip/obc1/obc1.cpp \ + src/chip/st010/st010.cpp src/chip/st011/st011.cpp \ + src/chip/st018/st018.cpp src/chip/superfx/superfx.cpp \ + src/chip/supergameboy/supergameboy.cpp src/chip/21fx/21fx.cpp +libsnes_a_SOURCES = $(meow) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/snes/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/snes/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +src/lib/libco/$(am__dirstamp): + @$(MKDIR_P) src/lib/libco + @: > src/lib/libco/$(am__dirstamp) +src/lib/libco/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/lib/libco/$(DEPDIR) + @: > src/lib/libco/$(DEPDIR)/$(am__dirstamp) +src/lib/libco/libco.$(OBJEXT): src/lib/libco/$(am__dirstamp) \ + src/lib/libco/$(DEPDIR)/$(am__dirstamp) +src/cartridge/$(am__dirstamp): + @$(MKDIR_P) src/cartridge + @: > src/cartridge/$(am__dirstamp) +src/cartridge/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/cartridge/$(DEPDIR) + @: > src/cartridge/$(DEPDIR)/$(am__dirstamp) +src/cartridge/cartridge.$(OBJEXT): src/cartridge/$(am__dirstamp) \ + src/cartridge/$(DEPDIR)/$(am__dirstamp) +src/cheat/$(am__dirstamp): + @$(MKDIR_P) src/cheat + @: > src/cheat/$(am__dirstamp) +src/cheat/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/cheat/$(DEPDIR) + @: > src/cheat/$(DEPDIR)/$(am__dirstamp) +src/cheat/cheat.$(OBJEXT): src/cheat/$(am__dirstamp) \ + src/cheat/$(DEPDIR)/$(am__dirstamp) +src/memory/$(am__dirstamp): + @$(MKDIR_P) src/memory + @: > src/memory/$(am__dirstamp) +src/memory/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/memory/$(DEPDIR) + @: > src/memory/$(DEPDIR)/$(am__dirstamp) +src/memory/memory.$(OBJEXT): src/memory/$(am__dirstamp) \ + src/memory/$(DEPDIR)/$(am__dirstamp) +src/memory/smemory/$(am__dirstamp): + @$(MKDIR_P) src/memory/smemory + @: > src/memory/smemory/$(am__dirstamp) +src/memory/smemory/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/memory/smemory/$(DEPDIR) + @: > src/memory/smemory/$(DEPDIR)/$(am__dirstamp) +src/memory/smemory/smemory.$(OBJEXT): \ + src/memory/smemory/$(am__dirstamp) \ + src/memory/smemory/$(DEPDIR)/$(am__dirstamp) +src/cpu/$(am__dirstamp): + @$(MKDIR_P) src/cpu + @: > src/cpu/$(am__dirstamp) +src/cpu/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/cpu/$(DEPDIR) + @: > src/cpu/$(DEPDIR)/$(am__dirstamp) +src/cpu/cpu.$(OBJEXT): src/cpu/$(am__dirstamp) \ + src/cpu/$(DEPDIR)/$(am__dirstamp) +src/cpu/core/$(am__dirstamp): + @$(MKDIR_P) src/cpu/core + @: > src/cpu/core/$(am__dirstamp) +src/cpu/core/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/cpu/core/$(DEPDIR) + @: > src/cpu/core/$(DEPDIR)/$(am__dirstamp) +src/cpu/core/core.$(OBJEXT): src/cpu/core/$(am__dirstamp) \ + src/cpu/core/$(DEPDIR)/$(am__dirstamp) +src/cpu/scpu/$(am__dirstamp): + @$(MKDIR_P) src/cpu/scpu + @: > src/cpu/scpu/$(am__dirstamp) +src/cpu/scpu/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/cpu/scpu/$(DEPDIR) + @: > src/cpu/scpu/$(DEPDIR)/$(am__dirstamp) +src/cpu/scpu/scpu.$(OBJEXT): src/cpu/scpu/$(am__dirstamp) \ + src/cpu/scpu/$(DEPDIR)/$(am__dirstamp) +src/smp/$(am__dirstamp): + @$(MKDIR_P) src/smp + @: > src/smp/$(am__dirstamp) +src/smp/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/smp/$(DEPDIR) + @: > src/smp/$(DEPDIR)/$(am__dirstamp) +src/smp/smp.$(OBJEXT): src/smp/$(am__dirstamp) \ + src/smp/$(DEPDIR)/$(am__dirstamp) +src/smp/core/$(am__dirstamp): + @$(MKDIR_P) src/smp/core + @: > src/smp/core/$(am__dirstamp) +src/smp/core/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/smp/core/$(DEPDIR) + @: > src/smp/core/$(DEPDIR)/$(am__dirstamp) +src/smp/core/core.$(OBJEXT): src/smp/core/$(am__dirstamp) \ + src/smp/core/$(DEPDIR)/$(am__dirstamp) +src/smp/ssmp/$(am__dirstamp): + @$(MKDIR_P) src/smp/ssmp + @: > src/smp/ssmp/$(am__dirstamp) +src/smp/ssmp/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/smp/ssmp/$(DEPDIR) + @: > src/smp/ssmp/$(DEPDIR)/$(am__dirstamp) +src/smp/ssmp/ssmp.$(OBJEXT): src/smp/ssmp/$(am__dirstamp) \ + src/smp/ssmp/$(DEPDIR)/$(am__dirstamp) +src/dsp/sdsp/$(am__dirstamp): + @$(MKDIR_P) src/dsp/sdsp + @: > src/dsp/sdsp/$(am__dirstamp) +src/dsp/sdsp/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/dsp/sdsp/$(DEPDIR) + @: > src/dsp/sdsp/$(DEPDIR)/$(am__dirstamp) +src/dsp/sdsp/sdsp.$(OBJEXT): src/dsp/sdsp/$(am__dirstamp) \ + src/dsp/sdsp/$(DEPDIR)/$(am__dirstamp) +src/ppu/$(am__dirstamp): + @$(MKDIR_P) src/ppu + @: > src/ppu/$(am__dirstamp) +src/ppu/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/ppu/$(DEPDIR) + @: > src/ppu/$(DEPDIR)/$(am__dirstamp) +src/ppu/ppu.$(OBJEXT): src/ppu/$(am__dirstamp) \ + src/ppu/$(DEPDIR)/$(am__dirstamp) +src/ppu/bppu/$(am__dirstamp): + @$(MKDIR_P) src/ppu/bppu + @: > src/ppu/bppu/$(am__dirstamp) +src/ppu/bppu/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/ppu/bppu/$(DEPDIR) + @: > src/ppu/bppu/$(DEPDIR)/$(am__dirstamp) +src/ppu/bppu/bppu.$(OBJEXT): src/ppu/bppu/$(am__dirstamp) \ + src/ppu/bppu/$(DEPDIR)/$(am__dirstamp) +src/system/$(am__dirstamp): + @$(MKDIR_P) src/system + @: > src/system/$(am__dirstamp) +src/system/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/system/$(DEPDIR) + @: > src/system/$(DEPDIR)/$(am__dirstamp) +src/system/system.$(OBJEXT): src/system/$(am__dirstamp) \ + src/system/$(DEPDIR)/$(am__dirstamp) +src/chip/sa1/$(am__dirstamp): + @$(MKDIR_P) src/chip/sa1 + @: > src/chip/sa1/$(am__dirstamp) +src/chip/sa1/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/sa1/$(DEPDIR) + @: > src/chip/sa1/$(DEPDIR)/$(am__dirstamp) +src/chip/sa1/sa1.$(OBJEXT): src/chip/sa1/$(am__dirstamp) \ + src/chip/sa1/$(DEPDIR)/$(am__dirstamp) +src/chip/bsx/$(am__dirstamp): + @$(MKDIR_P) src/chip/bsx + @: > src/chip/bsx/$(am__dirstamp) +src/chip/bsx/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/bsx/$(DEPDIR) + @: > src/chip/bsx/$(DEPDIR)/$(am__dirstamp) +src/chip/bsx/bsx.$(OBJEXT): src/chip/bsx/$(am__dirstamp) \ + src/chip/bsx/$(DEPDIR)/$(am__dirstamp) +src/chip/srtc/$(am__dirstamp): + @$(MKDIR_P) src/chip/srtc + @: > src/chip/srtc/$(am__dirstamp) +src/chip/srtc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/srtc/$(DEPDIR) + @: > src/chip/srtc/$(DEPDIR)/$(am__dirstamp) +src/chip/srtc/srtc.$(OBJEXT): src/chip/srtc/$(am__dirstamp) \ + src/chip/srtc/$(DEPDIR)/$(am__dirstamp) +src/chip/sdd1/$(am__dirstamp): + @$(MKDIR_P) src/chip/sdd1 + @: > src/chip/sdd1/$(am__dirstamp) +src/chip/sdd1/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/sdd1/$(DEPDIR) + @: > src/chip/sdd1/$(DEPDIR)/$(am__dirstamp) +src/chip/sdd1/sdd1.$(OBJEXT): src/chip/sdd1/$(am__dirstamp) \ + src/chip/sdd1/$(DEPDIR)/$(am__dirstamp) +src/chip/spc7110/$(am__dirstamp): + @$(MKDIR_P) src/chip/spc7110 + @: > src/chip/spc7110/$(am__dirstamp) +src/chip/spc7110/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/spc7110/$(DEPDIR) + @: > src/chip/spc7110/$(DEPDIR)/$(am__dirstamp) +src/chip/spc7110/spc7110.$(OBJEXT): src/chip/spc7110/$(am__dirstamp) \ + src/chip/spc7110/$(DEPDIR)/$(am__dirstamp) +src/chip/cx4/$(am__dirstamp): + @$(MKDIR_P) src/chip/cx4 + @: > src/chip/cx4/$(am__dirstamp) +src/chip/cx4/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/cx4/$(DEPDIR) + @: > src/chip/cx4/$(DEPDIR)/$(am__dirstamp) +src/chip/cx4/cx4.$(OBJEXT): src/chip/cx4/$(am__dirstamp) \ + src/chip/cx4/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp1/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp1 + @: > src/chip/dsp1/$(am__dirstamp) +src/chip/dsp1/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp1/$(DEPDIR) + @: > src/chip/dsp1/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp1/dsp1.$(OBJEXT): src/chip/dsp1/$(am__dirstamp) \ + src/chip/dsp1/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp2/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp2 + @: > src/chip/dsp2/$(am__dirstamp) +src/chip/dsp2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp2/$(DEPDIR) + @: > src/chip/dsp2/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp2/dsp2.$(OBJEXT): src/chip/dsp2/$(am__dirstamp) \ + src/chip/dsp2/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp3/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp3 + @: > src/chip/dsp3/$(am__dirstamp) +src/chip/dsp3/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp3/$(DEPDIR) + @: > src/chip/dsp3/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp3/dsp3.$(OBJEXT): src/chip/dsp3/$(am__dirstamp) \ + src/chip/dsp3/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp4/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp4 + @: > src/chip/dsp4/$(am__dirstamp) +src/chip/dsp4/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/dsp4/$(DEPDIR) + @: > src/chip/dsp4/$(DEPDIR)/$(am__dirstamp) +src/chip/dsp4/dsp4.$(OBJEXT): src/chip/dsp4/$(am__dirstamp) \ + src/chip/dsp4/$(DEPDIR)/$(am__dirstamp) +src/chip/obc1/$(am__dirstamp): + @$(MKDIR_P) src/chip/obc1 + @: > src/chip/obc1/$(am__dirstamp) +src/chip/obc1/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/obc1/$(DEPDIR) + @: > src/chip/obc1/$(DEPDIR)/$(am__dirstamp) +src/chip/obc1/obc1.$(OBJEXT): src/chip/obc1/$(am__dirstamp) \ + src/chip/obc1/$(DEPDIR)/$(am__dirstamp) +src/chip/st010/$(am__dirstamp): + @$(MKDIR_P) src/chip/st010 + @: > src/chip/st010/$(am__dirstamp) +src/chip/st010/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/st010/$(DEPDIR) + @: > src/chip/st010/$(DEPDIR)/$(am__dirstamp) +src/chip/st010/st010.$(OBJEXT): src/chip/st010/$(am__dirstamp) \ + src/chip/st010/$(DEPDIR)/$(am__dirstamp) +src/chip/st011/$(am__dirstamp): + @$(MKDIR_P) src/chip/st011 + @: > src/chip/st011/$(am__dirstamp) +src/chip/st011/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/st011/$(DEPDIR) + @: > src/chip/st011/$(DEPDIR)/$(am__dirstamp) +src/chip/st011/st011.$(OBJEXT): src/chip/st011/$(am__dirstamp) \ + src/chip/st011/$(DEPDIR)/$(am__dirstamp) +src/chip/st018/$(am__dirstamp): + @$(MKDIR_P) src/chip/st018 + @: > src/chip/st018/$(am__dirstamp) +src/chip/st018/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/st018/$(DEPDIR) + @: > src/chip/st018/$(DEPDIR)/$(am__dirstamp) +src/chip/st018/st018.$(OBJEXT): src/chip/st018/$(am__dirstamp) \ + src/chip/st018/$(DEPDIR)/$(am__dirstamp) +src/chip/superfx/$(am__dirstamp): + @$(MKDIR_P) src/chip/superfx + @: > src/chip/superfx/$(am__dirstamp) +src/chip/superfx/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/superfx/$(DEPDIR) + @: > src/chip/superfx/$(DEPDIR)/$(am__dirstamp) +src/chip/superfx/superfx.$(OBJEXT): src/chip/superfx/$(am__dirstamp) \ + src/chip/superfx/$(DEPDIR)/$(am__dirstamp) +src/chip/supergameboy/$(am__dirstamp): + @$(MKDIR_P) src/chip/supergameboy + @: > src/chip/supergameboy/$(am__dirstamp) +src/chip/supergameboy/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/supergameboy/$(DEPDIR) + @: > src/chip/supergameboy/$(DEPDIR)/$(am__dirstamp) +src/chip/supergameboy/supergameboy.$(OBJEXT): \ + src/chip/supergameboy/$(am__dirstamp) \ + src/chip/supergameboy/$(DEPDIR)/$(am__dirstamp) +src/chip/21fx/$(am__dirstamp): + @$(MKDIR_P) src/chip/21fx + @: > src/chip/21fx/$(am__dirstamp) +src/chip/21fx/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/chip/21fx/$(DEPDIR) + @: > src/chip/21fx/$(DEPDIR)/$(am__dirstamp) +src/chip/21fx/21fx.$(OBJEXT): src/chip/21fx/$(am__dirstamp) \ + src/chip/21fx/$(DEPDIR)/$(am__dirstamp) +libsnes.a: $(libsnes_a_OBJECTS) $(libsnes_a_DEPENDENCIES) + $(AM_V_at)-rm -f libsnes.a + $(AM_V_AR)$(libsnes_a_AR) libsnes.a $(libsnes_a_OBJECTS) $(libsnes_a_LIBADD) + $(AM_V_at)$(RANLIB) libsnes.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f src/cartridge/cartridge.$(OBJEXT) + -rm -f src/cheat/cheat.$(OBJEXT) + -rm -f src/chip/21fx/21fx.$(OBJEXT) + -rm -f src/chip/bsx/bsx.$(OBJEXT) + -rm -f src/chip/cx4/cx4.$(OBJEXT) + -rm -f src/chip/dsp1/dsp1.$(OBJEXT) + -rm -f src/chip/dsp2/dsp2.$(OBJEXT) + -rm -f src/chip/dsp3/dsp3.$(OBJEXT) + -rm -f src/chip/dsp4/dsp4.$(OBJEXT) + -rm -f src/chip/obc1/obc1.$(OBJEXT) + -rm -f src/chip/sa1/sa1.$(OBJEXT) + -rm -f src/chip/sdd1/sdd1.$(OBJEXT) + -rm -f src/chip/spc7110/spc7110.$(OBJEXT) + -rm -f src/chip/srtc/srtc.$(OBJEXT) + -rm -f src/chip/st010/st010.$(OBJEXT) + -rm -f src/chip/st011/st011.$(OBJEXT) + -rm -f src/chip/st018/st018.$(OBJEXT) + -rm -f src/chip/superfx/superfx.$(OBJEXT) + -rm -f src/chip/supergameboy/supergameboy.$(OBJEXT) + -rm -f src/cpu/core/core.$(OBJEXT) + -rm -f src/cpu/cpu.$(OBJEXT) + -rm -f src/cpu/scpu/scpu.$(OBJEXT) + -rm -f src/dsp/sdsp/sdsp.$(OBJEXT) + -rm -f src/lib/libco/libco.$(OBJEXT) + -rm -f src/memory/memory.$(OBJEXT) + -rm -f src/memory/smemory/smemory.$(OBJEXT) + -rm -f src/ppu/bppu/bppu.$(OBJEXT) + -rm -f src/ppu/ppu.$(OBJEXT) + -rm -f src/smp/core/core.$(OBJEXT) + -rm -f src/smp/smp.$(OBJEXT) + -rm -f src/smp/ssmp/ssmp.$(OBJEXT) + -rm -f src/system/system.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/cartridge/$(DEPDIR)/cartridge.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/cheat/$(DEPDIR)/cheat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/21fx/$(DEPDIR)/21fx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/bsx/$(DEPDIR)/bsx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/cx4/$(DEPDIR)/cx4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/dsp1/$(DEPDIR)/dsp1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/dsp2/$(DEPDIR)/dsp2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/dsp3/$(DEPDIR)/dsp3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/dsp4/$(DEPDIR)/dsp4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/obc1/$(DEPDIR)/obc1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/sa1/$(DEPDIR)/sa1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/sdd1/$(DEPDIR)/sdd1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/spc7110/$(DEPDIR)/spc7110.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/srtc/$(DEPDIR)/srtc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/st010/$(DEPDIR)/st010.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/st011/$(DEPDIR)/st011.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/st018/$(DEPDIR)/st018.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/superfx/$(DEPDIR)/superfx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/chip/supergameboy/$(DEPDIR)/supergameboy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/cpu/$(DEPDIR)/cpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/cpu/core/$(DEPDIR)/core.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/cpu/scpu/$(DEPDIR)/scpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/dsp/sdsp/$(DEPDIR)/sdsp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/lib/libco/$(DEPDIR)/libco.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/memory/$(DEPDIR)/memory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/memory/smemory/$(DEPDIR)/smemory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/ppu/$(DEPDIR)/ppu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/ppu/bppu/$(DEPDIR)/bppu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/smp/$(DEPDIR)/smp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/smp/core/$(DEPDIR)/core.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/smp/ssmp/$(DEPDIR)/ssmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/system/$(DEPDIR)/system.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f src/cartridge/$(DEPDIR)/$(am__dirstamp) + -rm -f src/cartridge/$(am__dirstamp) + -rm -f src/cheat/$(DEPDIR)/$(am__dirstamp) + -rm -f src/cheat/$(am__dirstamp) + -rm -f src/chip/21fx/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/21fx/$(am__dirstamp) + -rm -f src/chip/bsx/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/bsx/$(am__dirstamp) + -rm -f src/chip/cx4/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/cx4/$(am__dirstamp) + -rm -f src/chip/dsp1/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/dsp1/$(am__dirstamp) + -rm -f src/chip/dsp2/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/dsp2/$(am__dirstamp) + -rm -f src/chip/dsp3/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/dsp3/$(am__dirstamp) + -rm -f src/chip/dsp4/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/dsp4/$(am__dirstamp) + -rm -f src/chip/obc1/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/obc1/$(am__dirstamp) + -rm -f src/chip/sa1/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/sa1/$(am__dirstamp) + -rm -f src/chip/sdd1/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/sdd1/$(am__dirstamp) + -rm -f src/chip/spc7110/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/spc7110/$(am__dirstamp) + -rm -f src/chip/srtc/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/srtc/$(am__dirstamp) + -rm -f src/chip/st010/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/st010/$(am__dirstamp) + -rm -f src/chip/st011/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/st011/$(am__dirstamp) + -rm -f src/chip/st018/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/st018/$(am__dirstamp) + -rm -f src/chip/superfx/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/superfx/$(am__dirstamp) + -rm -f src/chip/supergameboy/$(DEPDIR)/$(am__dirstamp) + -rm -f src/chip/supergameboy/$(am__dirstamp) + -rm -f src/cpu/$(DEPDIR)/$(am__dirstamp) + -rm -f src/cpu/$(am__dirstamp) + -rm -f src/cpu/core/$(DEPDIR)/$(am__dirstamp) + -rm -f src/cpu/core/$(am__dirstamp) + -rm -f src/cpu/scpu/$(DEPDIR)/$(am__dirstamp) + -rm -f src/cpu/scpu/$(am__dirstamp) + -rm -f src/dsp/sdsp/$(DEPDIR)/$(am__dirstamp) + -rm -f src/dsp/sdsp/$(am__dirstamp) + -rm -f src/lib/libco/$(DEPDIR)/$(am__dirstamp) + -rm -f src/lib/libco/$(am__dirstamp) + -rm -f src/memory/$(DEPDIR)/$(am__dirstamp) + -rm -f src/memory/$(am__dirstamp) + -rm -f src/memory/smemory/$(DEPDIR)/$(am__dirstamp) + -rm -f src/memory/smemory/$(am__dirstamp) + -rm -f src/ppu/$(DEPDIR)/$(am__dirstamp) + -rm -f src/ppu/$(am__dirstamp) + -rm -f src/ppu/bppu/$(DEPDIR)/$(am__dirstamp) + -rm -f src/ppu/bppu/$(am__dirstamp) + -rm -f src/smp/$(DEPDIR)/$(am__dirstamp) + -rm -f src/smp/$(am__dirstamp) + -rm -f src/smp/core/$(DEPDIR)/$(am__dirstamp) + -rm -f src/smp/core/$(am__dirstamp) + -rm -f src/smp/ssmp/$(DEPDIR)/$(am__dirstamp) + -rm -f src/smp/ssmp/$(am__dirstamp) + -rm -f src/system/$(DEPDIR)/$(am__dirstamp) + -rm -f src/system/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) src/cartridge/$(DEPDIR) src/cheat/$(DEPDIR) src/chip/21fx/$(DEPDIR) src/chip/bsx/$(DEPDIR) src/chip/cx4/$(DEPDIR) src/chip/dsp1/$(DEPDIR) src/chip/dsp2/$(DEPDIR) src/chip/dsp3/$(DEPDIR) src/chip/dsp4/$(DEPDIR) src/chip/obc1/$(DEPDIR) src/chip/sa1/$(DEPDIR) src/chip/sdd1/$(DEPDIR) src/chip/spc7110/$(DEPDIR) src/chip/srtc/$(DEPDIR) src/chip/st010/$(DEPDIR) src/chip/st011/$(DEPDIR) src/chip/st018/$(DEPDIR) src/chip/superfx/$(DEPDIR) src/chip/supergameboy/$(DEPDIR) src/cpu/$(DEPDIR) src/cpu/core/$(DEPDIR) src/cpu/scpu/$(DEPDIR) src/dsp/sdsp/$(DEPDIR) src/lib/libco/$(DEPDIR) src/memory/$(DEPDIR) src/memory/smemory/$(DEPDIR) src/ppu/$(DEPDIR) src/ppu/bppu/$(DEPDIR) src/smp/$(DEPDIR) src/smp/core/$(DEPDIR) src/smp/ssmp/$(DEPDIR) src/system/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) src/cartridge/$(DEPDIR) src/cheat/$(DEPDIR) src/chip/21fx/$(DEPDIR) src/chip/bsx/$(DEPDIR) src/chip/cx4/$(DEPDIR) src/chip/dsp1/$(DEPDIR) src/chip/dsp2/$(DEPDIR) src/chip/dsp3/$(DEPDIR) src/chip/dsp4/$(DEPDIR) src/chip/obc1/$(DEPDIR) src/chip/sa1/$(DEPDIR) src/chip/sdd1/$(DEPDIR) src/chip/spc7110/$(DEPDIR) src/chip/srtc/$(DEPDIR) src/chip/st010/$(DEPDIR) src/chip/st011/$(DEPDIR) src/chip/st018/$(DEPDIR) src/chip/superfx/$(DEPDIR) src/chip/supergameboy/$(DEPDIR) src/cpu/$(DEPDIR) src/cpu/core/$(DEPDIR) src/cpu/scpu/$(DEPDIR) src/dsp/sdsp/$(DEPDIR) src/lib/libco/$(DEPDIR) src/memory/$(DEPDIR) src/memory/smemory/$(DEPDIR) src/ppu/$(DEPDIR) src/ppu/bppu/$(DEPDIR) src/smp/$(DEPDIR) src/smp/core/$(DEPDIR) src/smp/ssmp/$(DEPDIR) src/system/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/snes/VERSION.BSNES b/libmednahawk/src/snes/VERSION.BSNES new file mode 100644 index 0000000000..933a89765c --- /dev/null +++ b/libmednahawk/src/snes/VERSION.BSNES @@ -0,0 +1 @@ +bsnes v0.59 + Cx4 Op10 fix patch + blargg_libco_ppc64-5 + a few minor timing/scheduler related changes for Mednafen diff --git a/libmednahawk/src/snes/interface.cpp b/libmednahawk/src/snes/interface.cpp new file mode 100644 index 0000000000..298d28e5ca --- /dev/null +++ b/libmednahawk/src/snes/interface.cpp @@ -0,0 +1,1153 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "../md5.h" +#include "../general.h" +#include <../base.hpp> +#include "../mempatcher.h" +#include "../PSFLoader.h" +#include "../player.h" +#include "Fir_Resampler.h" +#include + +static void Cleanup(void); + +static Fir_Resampler<24> resampler; +class MeowFace : public SNES::Interface +{ + virtual void video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height); + virtual void audio_sample(uint16_t l_sample, uint16_t r_sample); + virtual void input_poll(); + virtual int16_t input_poll(bool port, unsigned device, unsigned index, unsigned id); +// virtual int16_t input_poll(unsigned deviceid, unsigned id); +}; + +class SNSFLoader : public PSFLoader +{ + public: + + SNSFLoader(MDFNFILE *fp); + virtual ~SNSFLoader(); + + virtual void HandleEXE(const uint8 *data, uint32 len, bool ignore_pcsp = false); + virtual void HandleReserved(const uint8 *data, uint32 len); + + PSFTags tags; + std::vector ROM_Data; +}; + +static SNSFLoader *snsf_loader = NULL; + +static bool InProperEmu; +static bool SoundOn; +static double SoundLastRate = 0; +static MeowFace meowface; + +static int32 CycleCounter; +static MDFN_Surface *tsurf = NULL; +static MDFN_Rect *tlw = NULL; +static MDFN_Rect *tdr = NULL; + +static int InputType[2]; +static uint8 *InputPtr[8] = { NULL }; +static uint16 PadLatch[8]; +static bool MultitapEnabled[2]; +static bool HasPolledThisFrame; + +static int16 MouseXLatch[2]; +static int16 MouseYLatch[2]; +static uint8 MouseBLatch[2]; + +static uint8 *CustomColorMap = NULL; +//static uint32 ColorMap[32768]; +static std::vector ColorMap; + +static bool LoadCPalette(const char *syspalname, uint8 **ptr, uint32 num_entries) +{ + std::string colormap_fn = MDFN_MakeFName(MDFNMKF_PALETTE, 0, syspalname).c_str(); + FILE *fp; + + MDFN_printf(_("Loading custom palette from \"%s\"...\n"), colormap_fn.c_str()); + MDFN_indent(1); + + if(!(fp = fopen(colormap_fn.c_str(), "rb"))) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error opening file: %s\n"), ene.StrError()); + + MDFN_indent(-1); + + return(ene.Errno() == ENOENT); // Return fatal error if it's an error other than the file not being found. + } + + if(!(*ptr = (uint8 *)MDFN_malloc(num_entries * 3, _("custom color map")))) + { + MDFN_indent(-1); + + fclose(fp); + return(false); + } + + if(fread(*ptr, 1, num_entries * 3, fp) != (num_entries * 3)) + { + ErrnoHolder ene(errno); + + MDFN_printf(_("Error reading file: %s\n"), feof(fp) ? "EOF" : ene.StrError()); + MDFN_indent(-1); + + MDFN_free(*ptr); + *ptr = NULL; + fclose(fp); + + return(false); + } + + fclose(fp); + + MDFN_indent(-1); + + return(true); +} + + +static void BuildColorMap(MDFN_PixelFormat &format) +{ + for(int x = 0; x < 32768; x++) + { + int r, g, b; + + r = (x & (0x1F << 0)) << 3; + g = (x & (0x1F << 5)) >> (5 - 3); + b = (x & (0x1F << 10)) >> (5 * 2 - 3); + + //r = ((((x >> 0) & 0x1F) * 255 + 15) / 31); + //g = ((((x >> 5) & 0x1F) * 255 + 15) / 31); + //b = ((((x >> 10) & 0x1F) * 255 + 15) / 31); + + if(CustomColorMap) + { + r = CustomColorMap[x * 3 + 0]; + g = CustomColorMap[x * 3 + 1]; + b = CustomColorMap[x * 3 + 2]; + } + + ColorMap[x] = format.MakeColor(r, g, b); + } +} + +void MeowFace::video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height) +{ + if(snsf_loader) + return; + + if(!tsurf || !tlw || !tdr) + return; + + const uint16 *source_line = data; + uint32 *dest_line = tsurf->pixels; + + assert(!(pitch & 1)); + + //if(height != 224) + // printf("%d\n", height); + + //if(tsurf->format.bpp == 32) + //{ + // + //} + //else + { + for(int y = 0; y < height; y++, source_line += pitch >> 1, dest_line += tsurf->pitch32) + for(int x = 0; x < width; tlw[y].x = 0, tlw[y].w = (width == 512) ? line[y] : 256, x++) + dest_line[x] = ColorMap[source_line[x] & 0x7FFF]; + } + + tdr->w = width; + tdr->h = height; +} + +void MeowFace::audio_sample(uint16_t l_sample, uint16_t r_sample) +{ + CycleCounter++; + + if(!SoundOn) + return; + + if(resampler.max_write() >= 2) + { + resampler.buffer()[0] = l_sample; + resampler.buffer()[1] = r_sample; + resampler.write(2); + } + else + { + MDFN_DispMessage("Buffer overflow?"); + } +} + +#if 0 +class Input { +public: + enum Device { + DeviceNone, + DeviceJoypad, + DeviceMultitap, + DeviceMouse, + DeviceSuperScope, + DeviceJustifier, + DeviceJustifiers, + }; + + enum JoypadID { + JoypadB = 0, JoypadY = 1, + JoypadSelect = 2, JoypadStart = 3, + JoypadUp = 4, JoypadDown = 5, + JoypadLeft = 6, JoypadRight = 7, + JoypadA = 8, JoypadX = 9, + JoypadL = 10, JoypadR = 11, + }; +#endif + +void MeowFace::input_poll() +{ + if(!InProperEmu) + return; + + HasPolledThisFrame = true; + + for(int port = 0; port < 2; port++) + { + switch(InputType[port]) + { + case SNES::Input::DeviceJoypad: + PadLatch[port] = MDFN_de16lsb(InputPtr[port]); + break; + + case SNES::Input::DeviceMultitap: + for(int index = 0; index < 4; index++) + { + if(!index) + PadLatch[port] = MDFN_de16lsb(InputPtr[port]); + else + { + int pi = 2 + 3 * (port ^ 1) + (index - 1); + PadLatch[pi] = MDFN_de16lsb(InputPtr[pi]); + } + } + break; + + case SNES::Input::DeviceMouse: + MouseXLatch[port] = (int32)MDFN_de32lsb(InputPtr[port] + 0); + MouseYLatch[port] = (int32)MDFN_de32lsb(InputPtr[port] + 4); + MouseBLatch[port] = *(uint8 *)(InputPtr[port] + 8); + break; + } + } +} + +static INLINE int16 sats32tos16(int32 val) +{ + if(val > 32767) + val = 32767; + if(val < -32768) + val = -32768; + + return(val); +} + +int16_t MeowFace::input_poll(bool port, unsigned device, unsigned index, unsigned id) +{ + if(!HasPolledThisFrame) + printf("input_poll(...) before input_poll() for frame, %d %d %d %d\n", port, device, index, id); + + switch(device) + { + case SNES::Input::DeviceJoypad: + { + return((PadLatch[port] >> id) & 1); + } + break; + + case SNES::Input::DeviceMultitap: + { + if(!index) + return((PadLatch[port] >> id) & 1); + else + return((PadLatch[2 + 3 * (port ^ 1) + (index - 1)] >> id) & 1); + } + break; + + case SNES::Input::DeviceMouse: + { + assert(port < 2); + switch(id) + { + case SNES::Input::MouseX: + return(sats32tos16(MouseXLatch[port])); + break; + + case SNES::Input::MouseY: + return(sats32tos16(MouseYLatch[port])); + break; + + case SNES::Input::MouseLeft: + return((int)(bool)(MouseBLatch[port] & 1)); + break; + + case SNES::Input::MouseRight: + return((int)(bool)(MouseBLatch[port] & 2)); + break; + } + } + break; + } + + return(0); +} + +#if 0 +void MeowFace::init() +{ + + +} + +void MeowFace::term() +{ + + +} +#endif + +#if 0 + +namespace memory { + extern MappedRAM cartrom, cartram, cartrtc; + extern MappedRAM bsxflash, bsxram, bsxpram; + extern MappedRAM stArom, stAram; + extern MappedRAM stBrom, stBram; + extern MappedRAM gbrom, gbram; +}; + +#endif + +// For loading: Return false on fatal error during loading, or true on success(or file not found) +static bool SaveMemorySub(bool load, const char *extension, SNES::MappedRAM *memoryA, SNES::MappedRAM *memoryB = NULL) +{ + const std::string path = MDFN_MakeFName(MDFNMKF_SAV, 0, extension); + std::vector MemToSave; + + if(load) + { + gzFile gp; + + errno = 0; + gp = gzopen(path.c_str(), "rb"); + if(!gp) + { + ErrnoHolder ene(errno); + if(ene.Errno() == ENOENT) + return(true); + + MDFN_PrintError(_("Error opening save file \"%s\": %s"), path.c_str(), ene.StrError()); + return(false); + } + + if(memoryA && memoryA->size() != 0 && memoryA->size() != -1U) + { + errno = 0; + if(gzread(gp, memoryA->data(), memoryA->size()) != memoryA->size()) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error reading save file \"%s\": %s"), path.c_str(), ene.StrError()); + return(false); + } + } + + if(memoryB && memoryB->size() != 0 && memoryB->size() != -1U) + { + errno = 0; + if(gzread(gp, memoryB->data(), memoryB->size()) != memoryB->size()) + { + ErrnoHolder ene(errno); + + MDFN_PrintError(_("Error reading save file \"%s\": %s"), path.c_str(), ene.StrError()); + return(false); + } + } + + gzclose(gp); + + return(true); + } + else + { + if(memoryA && memoryA->size() != 0 && memoryA->size() != -1U) + MemToSave.push_back(PtrLengthPair(memoryA->data(), memoryA->size())); + + if(memoryB && memoryB->size() != 0 && memoryB->size() != -1U) + MemToSave.push_back(PtrLengthPair(memoryB->data(), memoryB->size())); + + return(MDFN_DumpToFile(path.c_str(), 6, MemToSave)); + } +} + +static bool SaveLoadMemory(bool load) +{ + if(SNES::cartridge.loaded() == false) + return(FALSE); + + bool ret = true; + + switch(SNES::cartridge.mode()) + { + case SNES::Cartridge::ModeNormal: + case SNES::Cartridge::ModeBsxSlotted: + { + ret &= SaveMemorySub(load, "srm", &SNES::memory::cartram); + ret &= SaveMemorySub(load, "rtc", &SNES::memory::cartrtc); + } + break; + + case SNES::Cartridge::ModeBsx: + { + ret &= SaveMemorySub(load, "srm", &SNES::memory::bsxram ); + ret &= SaveMemorySub(load, "psr", &SNES::memory::bsxpram); + } + break; + + case SNES::Cartridge::ModeSufamiTurbo: + { + ret &= SaveMemorySub(load, "srm", &SNES::memory::stAram, &SNES::memory::stBram); + } + break; + + case SNES::Cartridge::ModeSuperGameBoy: + { + ret &= SaveMemorySub(load, "sav", &SNES::memory::gbram); + ret &= SaveMemorySub(load, "rtc", &SNES::memory::gbrtc); + } + break; + } + + return(ret); +} + + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(PSFLoader::TestMagic(0x23, fp)) + return(true); + + if(strcasecmp(fp->ext, "smc") && strcasecmp(fp->ext, "swc") && strcasecmp(fp->ext, "sfc") && strcasecmp(fp->ext, "fig") && + strcasecmp(fp->ext, "bs") && strcasecmp(fp->ext, "st")) + { + return(false); + } + + return(true); +} + +static void SetupMisc(bool PAL) +{ + MDFNGameInfo->fps = PAL ? 838977920 : 1008307711; + MDFNGameInfo->MasterClock = MDFN_MASTERCLOCK_FIXED(32040.40); //MDFN_MASTERCLOCK_FIXED(21477272); //PAL ? PAL_CPU : NTSC_CPU); + + if(!snsf_loader) + { + MDFNGameInfo->nominal_width = MDFN_GetSettingB("snes.correct_aspect") ? 292 : 256; + MDFNGameInfo->nominal_height = PAL ? 239 : 224; + MDFNGameInfo->lcm_height = MDFNGameInfo->nominal_height * 2; + } + + resampler.buffer_size(32040 / 10); + //resampler.time_ratio((double)32040.40 / 48000, 0.9965); + SoundLastRate = 0; +} + +SNSFLoader::SNSFLoader(MDFNFILE *fp) +{ + uint32 size_tmp; + uint8 *export_ptr; + + tags = Load(0x23, 8 + 1024 * 8192, fp); + + size_tmp = ROM_Data.size(); + + assert(size_tmp <= (8192 * 1024)); + + export_ptr = new uint8[8192 * 1024]; + memset(export_ptr, 0x00, 8192 * 1024); + memcpy(export_ptr, &ROM_Data[0], size_tmp); + SNES::memory::cartrom.map(export_ptr, size_tmp); + ROM_Data.resize(0); + + SNES::cartridge.load(SNES::Cartridge::ModeNormal); +} + +SNSFLoader::~SNSFLoader() +{ + +} + +void SNSFLoader::HandleReserved(const uint8 *data, uint32 len) +{ + uint32 o = 0; + + if(len < 9) + return; + + while((o + 8) <= len) + { + uint32 header_type = MDFN_de32lsb(&data[o + 0]); + uint32 header_size = MDFN_de32lsb(&data[o + 4]); + + printf("%08x %08x\n", header_type, header_size); + + o += 8; + + switch(header_type) + { + case 0xFFFFFFFF: // EOR + if(header_size) + { + throw MDFN_Error(0, _("SNSF Reserved Section EOR has non-zero(=%u) size."), header_size); + } + + if(o < len) + { + throw MDFN_Error(0, _("SNSF Reserved Section EOR, but more data(%u bytes) available."), len - o); + } + break; + + default: + throw MDFN_Error(0, _("SNSF Reserved Section Unknown/Unsupported Data Type 0x%08x"), header_type); + break; + + case 0: // SRAM + { + uint32 srd_offset, srd_size; + + if((len - o) < 4) + { + throw MDFN_Error(0, _("SNSF Reserved Section SRAM block, insufficient data for subheader.")); + } + srd_offset = MDFN_de32lsb(&data[o]); + o += 4; + srd_size = len - o; + + if(srd_size > 0x20000) + { + throw MDFN_Error(0, _("SNSF Reserved Section SRAM block size(=%u) is too large."), srd_size); + } + + if(((uint64)srd_offset + srd_size) > 0x20000) + { + throw MDFN_Error(0, _("SNSF Reserved Section SRAM block combined offset+size(=%ull) is too large."), (unsigned long long)srd_offset + srd_size); + } + + printf("SRAM(not implemented yet): %08x %08x\n", srd_offset, srd_size); + printf("%d\n", SNES::memory::cartram.size()); + } + break; + } + + + o += header_size; + } + + printf("Reserved: %d\n", len); +} + + +void SNSFLoader::HandleEXE(const uint8 *data, uint32 size, bool ignore_pcsp) +{ + if(size < 8) + { + throw MDFN_Error(0, _("SNSF Missing full program section header.")); + } + + const uint32 header_offset = MDFN_de32lsb(&data[0]); + const uint32 header_size = MDFN_de32lsb(&data[4]); + const uint8 *rdata = &data[8]; + + printf("%08x %08x\n", header_offset, header_size); + + if(header_offset > (1024 * 8192)) + { + throw MDFN_Error(0, _("SNSF Header Field Offset(=%u) is too large."), header_offset); + } + + if(header_size > (1024 * 8192)) + { + throw MDFN_Error(0, _("SNSF Header Field Size(=%u) is too large."), header_size); + } + + if(((uint64)header_offset + header_size) > (1024 * 8192)) + { + throw MDFN_Error(0, _("SNSF Combined Header Fields Offset(=%u) + Size(=%u) is too large."), header_offset, header_size); + } + + if((size - 8) < header_size) + { + throw(MDFN_Error(0, _("SNSF Insufficient data(need %u bytes, have %u bytes)"), header_size, size - 8)); + } + + if((header_offset + header_size) > ROM_Data.size()) + ROM_Data.resize(header_offset + header_size, 0x00); + + memcpy(&ROM_Data[header_offset], rdata, header_size); +} + +static bool LoadSNSF(MDFNFILE *fp) +{ + bool PAL = false; + + SNES::system.init(&meowface); + + MultitapEnabled[0] = false; + MultitapEnabled[1] = false; + + + try + { + std::vector SongNames; + + snsf_loader = new SNSFLoader(fp); + + SongNames.push_back(snsf_loader->tags.GetTag("title")); + + Player_Init(1, snsf_loader->tags.GetTag("game"), snsf_loader->tags.GetTag("artist"), snsf_loader->tags.GetTag("copyright"), SongNames); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + Cleanup(); + return 0; + } + + SNES::system.power(); + PAL = (SNES::system.region() == SNES::System::PAL); + + SetupMisc(PAL); + + return(true); +} + +static void Cleanup(void) +{ + SNES::memory::cartrom.map(NULL, 0); // So it delete[]s the pointer it took ownership of. + + if(CustomColorMap) + { + MDFN_free(CustomColorMap); + CustomColorMap = NULL; + } + + if(snsf_loader) + { + delete snsf_loader; + snsf_loader = NULL; + } + + ColorMap.resize(0); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + bool PAL = FALSE; + + CycleCounter = 0; + + try + { + if(PSFLoader::TestMagic(0x23, fp)) + { + return LoadSNSF(fp); + } + // Allocate 8MiB of space regardless of actual ROM image size, to prevent malformed or corrupted ROM images + // from crashing the bsnes cart loading code. + + const uint32 header_adjust = (((fp->size & 0x7FFF) == 512) ? 512 : 0); + uint8 *export_ptr; + + if((fp->size - header_adjust) > (8192 * 1024)) + { + throw MDFN_Error(0, _("SNES ROM image is too large.")); + } + + md5_context md5; + + md5.starts(); + md5.update(fp->data, fp->size); + md5.finish(MDFNGameInfo->MD5); + + SNES::system.init(&meowface); + + //const SNES::Cartridge::Type rom_type = SNES::cartridge.detect_image_type((uint8 *)fp->data, fp->size); + + export_ptr = new uint8[8192 * 1024]; + memset(export_ptr, 0x00, 8192 * 1024); + memcpy(export_ptr, fp->data + header_adjust, fp->size - header_adjust); + + SNES::memory::cartrom.map(export_ptr, fp->size - header_adjust); + + SNES::cartridge.load(SNES::Cartridge::ModeNormal); + + SNES::system.power(); + + PAL = (SNES::system.region() == SNES::System::PAL); + + SetupMisc(PAL); + + MultitapEnabled[0] = MDFN_GetSettingB("snes.input.port1.multitap"); + MultitapEnabled[1] = MDFN_GetSettingB("snes.input.port2.multitap"); + + if(!SaveLoadMemory(true)) + { + Cleanup(); + return(0); + } + + //printf(" %d %d\n", FSettings.SndRate, resampler.max_write()); + + MDFNMP_Init(1024, (1 << 24) / 1024); + + MDFNMP_AddRAM(131072, 0x7E << 16, SNES::memory::wram.data()); + + ColorMap.resize(32768); + + if(!LoadCPalette(NULL, &CustomColorMap, 32768)) + { + Cleanup(); + return(0); + } + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + Cleanup(); + return 0; + } + + return(1); +} + +static void CloseGame(void) +{ + if(!snsf_loader) + { + SaveLoadMemory(false); + } + Cleanup(); +} + +static void Emulate(EmulateSpecStruct *espec) +{ + tsurf = espec->surface; + tlw = espec->LineWidths; + tdr = &espec->DisplayRect; + + if(!snsf_loader) + { + if(espec->VideoFormatChanged) + BuildColorMap(espec->surface->format); + } + + if(SoundLastRate != espec->SoundRate) + { + double ratio = (double)32040.40 / (espec->SoundRate ? espec->SoundRate : 48000); + resampler.time_ratio(ratio, 0.9965); + printf("%f, %f\n", ratio, resampler.ratio()); + SoundLastRate = espec->SoundRate; + } + + if(!snsf_loader) + { + MDFNMP_ApplyPeriodicCheats(); + } + + // Make sure to trash any leftover samples, generated from system.runtosave() in save state saving, if sound is now disabled. + if(SoundOn && !espec->SoundBuf) + { + resampler.clear(); + } + + SoundOn = espec->SoundBuf ? true : false; + + HasPolledThisFrame = false; + InProperEmu = TRUE; + SNES::system.run_mednafen_custom(); + tsurf = NULL; + tlw = NULL; + tdr = NULL; + InProperEmu = FALSE; + + espec->MasterCycles = CycleCounter; + CycleCounter = 0; + + //printf("%d\n", espec->MasterCycles); + + if(espec->SoundBuf) + espec->SoundBufSize = resampler.read(espec->SoundBuf, resampler.avail()) >> 1; + + MDFNGameInfo->mouse_sensitivity = MDFN_GetSettingF("snes.mouse_sensitivity"); + + if(snsf_loader) + { + if(!espec->skip) + { + espec->LineWidths[0].w = ~0; + Player_Draw(espec->surface, &espec->DisplayRect, 0, espec->SoundBuf, espec->SoundBufSize); + } + } +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + //if(!SNES::Cartridge::saveStatesSupported()) + //return(0); + + if(load) + { + uint32 length; + uint8 *ptr; + + SFORMAT StateLengthCat[] = + { + SFVARN(length, "length"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, 1, data_only, StateLengthCat, "LEN")) + return(0); + + ptr = (uint8 *)MDFN_calloc(1, length, _("SNES save state buffer")); + + SFORMAT StateRegs[] = + { + SFARRAYN(ptr, length, "OmniCat"), + SFARRAY16(PadLatch, 8), + SFARRAY16(MouseXLatch, 2), + SFARRAY16(MouseYLatch, 2), + SFARRAY(MouseBLatch, 2), + SFEND + }; + + if(!MDFNSS_StateAction(sm, 1, data_only, StateRegs, "DATA")) + { + free(ptr); + return(0); + } + + serializer state(ptr, length); + int result; + + result = SNES::system.unserialize(state); + + free(ptr); + return(result); + } + else // save: + { + uint32 length; + + if(SNES::scheduler.sync != SNES::Scheduler::SyncAll) + SNES::system.runtosave(); + + serializer state = SNES::system.serialize(); + + length = state.size(); + + SFORMAT StateLengthCat[] = + { + SFVARN(length, "length"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, 0, data_only, StateLengthCat, "LEN")) + return(0); + + uint8 *ptr = const_cast(state.data()); + + SFORMAT StateRegs[] = + { + SFARRAYN(ptr, length, "OmniCat"), + SFARRAY16(PadLatch, 8), + SFARRAY16(MouseXLatch, 2), + SFARRAY16(MouseYLatch, 2), + SFARRAY(MouseBLatch, 2), + SFEND + }; + + if(!MDFNSS_StateAction(sm, 0, data_only, StateRegs, "DATA")) + return(0); + + return(1); + } + +} + +struct StrToBSIT_t +{ + const char *str; + const int id; +}; + +static const StrToBSIT_t StrToBSIT[] = +{ + { "none", SNES::Input::DeviceNone }, + { "gamepad", SNES::Input::DeviceJoypad }, + { "multitap", SNES::Input::DeviceMultitap }, + { "mouse", SNES::Input::DeviceMouse }, + { "superscope", SNES::Input::DeviceSuperScope }, + { "justifier", SNES::Input::DeviceJustifier }, + { "justifiers", SNES::Input::DeviceJustifiers }, + { NULL, -1 }, +}; + + +static void SetInput(int port, const char *type, void *ptr) +{ + assert(port >= 0 && port < 8); + + if(port < 2) + { + const StrToBSIT_t *sb = StrToBSIT; + int id = -1; + + if(MultitapEnabled[port] && !strcmp(type, "gamepad")) + type = "multitap"; + + while(sb->str && id == -1) + { + if(!strcmp(type, sb->str)) + id = sb->id; + sb++; + } + assert(id != -1); + + InputType[port] = id; + + SNES::input.port_set_device(port, id); + +#if 0 + switch(config().input.port1) { default: + case ControllerPort1::None: mapper().port1 = 0; break; + case ControllerPort1::Gamepad: mapper().port1 = &Controllers::gamepad1; break; + case ControllerPort1::Asciipad: mapper().port1 = &Controllers::asciipad1; break; + case ControllerPort1::Multitap: mapper().port1 = &Controllers::multitap1; break; + case ControllerPort1::Mouse: mapper().port1 = &Controllers::mouse1; break; + } + + switch(config().input.port2) { default: + case ControllerPort2::None: mapper().port2 = 0; break; + case ControllerPort2::Gamepad: mapper().port2 = &Controllers::gamepad2; break; + case ControllerPort2::Asciipad: mapper().port2 = &Controllers::asciipad2; break; + case ControllerPort2::Multitap: mapper().port2 = &Controllers::multitap2; break; + case ControllerPort2::Mouse: mapper().port2 = &Controllers::mouse2; break; + case ControllerPort2::SuperScope: mapper().port2 = &Controllers::superscope; break; + case ControllerPort2::Justifier: mapper().port2 = &Controllers::justifier1; break; + case ControllerPort2::Justifiers: mapper().port2 = &Controllers::justifiers; break; + } +#endif + + } + + + InputPtr[port] = (uint8 *)ptr; +} + +static void SetLayerEnableMask(uint64 mask) +{ + +} + + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_RESET: SNES::system.reset(); break; + case MDFN_MSC_POWER: SNES::system.power(); break; + } +} + +static const InputDeviceInputInfoStruct GamepadIDII[] = +{ + { "b", "B (center, lower)", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "y", "Y (left)", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "select", "SELECT", 4, IDIT_BUTTON, NULL }, + { "start", "START", 5, IDIT_BUTTON, NULL }, + { "up", "UP ↑", 0, IDIT_BUTTON, "down" }, + { "down", "DOWN ↓", 1, IDIT_BUTTON, "up" }, + { "left", "LEFT â†", 2, IDIT_BUTTON, "right" }, + { "right", "RIGHT →", 3, IDIT_BUTTON, "left" }, + { "a", "A (right)", 9, IDIT_BUTTON_CAN_RAPID, NULL }, + { "x", "X (center, upper)", 8, IDIT_BUTTON_CAN_RAPID, NULL }, + { "l", "Left Shoulder", 10, IDIT_BUTTON, NULL }, + { "r", "Right Shoulder", 11, IDIT_BUTTON, NULL }, +}; + +static const InputDeviceInputInfoStruct MouseIDII[0x4] = +{ + { "x_axis", "X Axis", -1, IDIT_X_AXIS_REL }, + { "y_axis", "Y Axis", -1, IDIT_Y_AXIS_REL }, + { "left", "Left Button", 0, IDIT_BUTTON, NULL }, + { "right", "Right Button", 1, IDIT_BUTTON, NULL }, +}; + + +static InputDeviceInfoStruct InputDeviceInfoSNESPort[] = +{ + // None + { + "none", + "none", + NULL, + NULL, + 0, + NULL + }, + + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + GamepadIDII, + }, + + // Mouse + { + "mouse", + "Mouse", + NULL, + NULL, + sizeof(MouseIDII) / sizeof(InputDeviceInputInfoStruct), + MouseIDII, + }, + +}; + + +static InputDeviceInfoStruct InputDeviceInfoTapPort[] = +{ + // Gamepad + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(GamepadIDII) / sizeof(InputDeviceInputInfoStruct), + GamepadIDII, + }, +}; + + +static const InputPortInfoStruct PortInfo[] = +{ + { "port1", "Port 1/1A", sizeof(InputDeviceInfoSNESPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoSNESPort, "gamepad" }, + { "port2", "Port 2/2A", sizeof(InputDeviceInfoSNESPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoSNESPort, "gamepad" }, + { "port3", "Port 2B", sizeof(InputDeviceInfoTapPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoTapPort, "gamepad" }, + { "port4", "Port 2C", sizeof(InputDeviceInfoTapPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoTapPort, "gamepad" }, + { "port5", "Port 2D", sizeof(InputDeviceInfoTapPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoTapPort, "gamepad" }, + { "port6", "Port 1B", sizeof(InputDeviceInfoTapPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoTapPort, "gamepad" }, + { "port7", "Port 1C", sizeof(InputDeviceInfoTapPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoTapPort, "gamepad" }, + { "port8", "Port 1D", sizeof(InputDeviceInfoTapPort) / sizeof(InputDeviceInfoStruct), InputDeviceInfoTapPort, "gamepad" }, +}; + +static InputInfoStruct SNESInputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + +static const MDFNSetting SNESSettings[] = +{ + { "snes.input.port1.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap on SNES port 1."), NULL, MDFNST_BOOL, "0", NULL, NULL }, + { "snes.input.port2.multitap", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Enable multitap on SNES port 2."), NULL, MDFNST_BOOL, "0", NULL, NULL }, + + { "snes.mouse_sensitivity", MDFNSF_NOFLAGS, gettext_noop("Emulated mouse sensitivity."), NULL, MDFNST_FLOAT, "0.50", NULL, NULL, NULL }, + + { "snes.correct_aspect", MDFNSF_CAT_VIDEO, gettext_noop("Correct the aspect ratio."), gettext_noop("Note that regardless of this setting's value, \"512\" and \"256\" width modes will be scaled to the same dimensions for display."), MDFNST_BOOL, "0" }, + + { NULL } +}; + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".smc", "Super Magicom ROM Image" }, + { ".swc", "Super Wildcard ROM Image" }, + { ".sfc", "Cartridge ROM Image" }, + { ".fig", "Cartridge ROM Image" }, + + { ".bs", "BS-X EEPROM Image" }, + { ".st", "Sufami Turbo Cartridge ROM Image" }, + + { NULL, NULL } +}; + +MDFNGI EmulatedSNES = +{ + "snes", + "Super Nintendo Entertainment System/Super Famicom", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + NULL, // Debugger + &SNESInputInfo, + Load, + TestMagic, + NULL, + NULL, + CloseGame, + SetLayerEnableMask, + NULL, // Layer names, null-delimited + NULL, + NULL, + NULL, //InstallReadPatch, + NULL, //RemoveReadPatches, + NULL, //MemRead, + true, + StateAction, + Emulate, + SetInput, + DoSimpleCommand, + SNESSettings, + 0, + 0, + FALSE, // Multires + + 512, // lcm_width + 480, // lcm_height (replaced in game load) + NULL, // Dummy + + 256, // Nominal width (replaced in game load) + 240, // Nominal height (replaced in game load) + + 512, // Framebuffer width + 512, // Framebuffer height + + 2, // Number of output sound channels +}; + + diff --git a/libmednahawk/src/snes/src/Makefile b/libmednahawk/src/snes/src/Makefile new file mode 100644 index 0000000000..474662321d --- /dev/null +++ b/libmednahawk/src/snes/src/Makefile @@ -0,0 +1,227 @@ +include lib/nall/Makefile +include lib/nall/Makefile-qt +ui = ui_qt + +################ +### compiler ### +################ + +c := $(compiler) +cpp := $(subst cc,++,$(compiler)) +flags := -O3 -fomit-frame-pointer -Ilib +link := + +# profile-guided instrumentation: +# flags += -fprofile-generate +# link += -lgcov + +# profile-guided optimization: +# flags += -fprofile-use + +################ +### platform ### +################ + +ifeq ($(platform),x) + link += -s + + ruby := video.glx video.xv video.qtraster video.sdl + ruby += audio.alsa audio.openal audio.oss audio.pulseaudio audio.pulseaudiosimple audio.ao + ruby += input.sdl input.x + + link += $(if $(findstring audio.openal,$(ruby)),-lopenal) +else ifeq ($(platform),osx) + ruby := video.qtopengl video.qtraster + ruby += audio.openal + ruby += input.carbon + + link += $(if $(findstring audio.openal,$(ruby)),-framework OpenAL) +else ifeq ($(platform),win) + link += -mwindows -mthreads +# link += -mconsole -mthreads + link += -s -luuid -lkernel32 -luser32 -lgdi32 -lshell32 + # statically link Qt for Windows build + link += -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc + + ruby := video.direct3d video.wgl video.directdraw video.gdi video.qtraster + ruby += audio.directsound + ruby += input.rawinput input.directinput + + link += $(if $(findstring audio.openal,$(ruby)),-lopenal32) +else + unknown_platform: help; +endif + +############ +### ruby ### +############ + +rubyflags := $(call ifhas,.sdl,$(ruby),`sdl-config --cflags`) +rubyflags += $(call ifhas,.qt,$(ruby),$(qtinc)) + +link += $(call ifhas,.sdl,$(ruby),`sdl-config --libs`) +link += $(call ifhas,video.direct3d,$(ruby),-ld3d9) +link += $(call ifhas,video.directdraw,$(ruby),-lddraw) +link += $(call ifhas,video.glx,$(ruby),-lGL) +link += $(call ifhas,video.wgl,$(ruby),-lopengl32) +link += $(call ifhas,video.xv,$(ruby),-lXv) +link += $(call ifhas,audio.alsa,$(ruby),-lasound) +link += $(call ifhas,audio.ao,$(ruby),-lao) +link += $(call ifhas,audio.directsound,$(ruby),-ldsound) +link += $(call ifhas,audio.pulseaudio,$(ruby),-lpulse-simple) +link += $(call ifhas,input.directinput,$(ruby),-ldinput8 -ldxguid) +link += $(call ifhas,input.rawinput,$(ruby),-ldinput8 -ldxguid) + +############### +### objects ### +############### + +objects := libco ruby +objects += system cartridge cheat +objects += memory smemory cpu cpucore scpu smp smpcore ssmp sdsp ppu bppu +objects += supergameboy superfx sa1 +objects += bsx srtc sdd1 spc7110 cx4 dsp1 dsp2 dsp3 dsp4 obc1 st010 st011 st018 +objects += 21fx + +###################### +### implicit rules ### +###################### + +compile = \ + $(strip \ + $(if $(filter %.c,$<), \ + $(c) $(flags) $1 -c $< -o $@, \ + $(if $(filter %.cpp,$<), \ + $(cpp) $(flags) $1 -c $< -o $@ \ + ) \ + ) \ + ) + +%.o: $<; $(call compile) + +all: build; + +include $(ui)/Makefile +objects := $(patsubst %,obj/%.o,$(objects)) +rubydef := $(foreach c,$(subst .,_,$(call strupper,$(ruby))),-D$c) + +################# +### libraries ### +################# + +obj/ruby.o: lib/ruby/ruby.cpp $(call rwildcard,lib/ruby/*) + $(call compile,$(rubydef) $(rubyflags)) +obj/libco.o: lib/libco/libco.c lib/libco/* + +################# +### utilities ### +################# + +obj/cartridge.o: cartridge/cartridge.cpp cartridge/* +obj/cheat.o : cheat/cheat.cpp cheat/* + +############## +### memory ### +############## + +obj/memory.o : memory/memory.cpp memory/* +obj/smemory.o: memory/smemory/smemory.cpp $(call rwildcard,memory/smemory/) + +########### +### cpu ### +########### + +obj/cpu.o : cpu/cpu.cpp cpu/* +obj/cpucore.o: cpu/core/core.cpp $(call rwildcard,cpu/core/) +obj/scpu.o : cpu/scpu/scpu.cpp $(call rwildcard,cpu/scpu/) + +########### +### smp ### +########### + +obj/smp.o : smp/smp.cpp smp/* +obj/smpcore.o: smp/core/core.cpp $(call rwildcard,smp/core/) +obj/ssmp.o : smp/ssmp/ssmp.cpp $(call rwildcard,smp/ssmp/) + +########### +### dsp ### +########### + +obj/adsp.o: dsp/adsp/adsp.cpp dsp/adsp/* +obj/sdsp.o: dsp/sdsp/sdsp.cpp dsp/sdsp/* + +########### +### ppu ### +########### + +obj/ppu.o : ppu/ppu.cpp ppu/* +obj/bppu.o: ppu/bppu/bppu.cpp $(call rwildcard,ppu/bppu/) + +############## +### system ### +############## + +obj/system.o: system/system.cpp $(call rwildcard,system/) + +##################### +### special chips ### +##################### + +obj/supergameboy.o: chip/supergameboy/supergameboy.cpp $(call rwildcard,chip/supergameboy/) +obj/superfx.o : chip/superfx/superfx.cpp $(call rwildcard,chip/superfx/) +obj/sa1.o : chip/sa1/sa1.cpp $(call rwildcard,chip/sa1/) +obj/bsx.o : chip/bsx/bsx.cpp chip/bsx/* +obj/srtc.o : chip/srtc/srtc.cpp chip/srtc/* +obj/sdd1.o : chip/sdd1/sdd1.cpp chip/sdd1/* +obj/spc7110.o : chip/spc7110/spc7110.cpp chip/spc7110/* +obj/cx4.o : chip/cx4/cx4.cpp chip/cx4/* +obj/dsp1.o : chip/dsp1/dsp1.cpp chip/dsp1/* +obj/dsp2.o : chip/dsp2/dsp2.cpp chip/dsp2/* +obj/dsp3.o : chip/dsp3/dsp3.cpp chip/dsp3/* +obj/dsp4.o : chip/dsp4/dsp4.cpp chip/dsp4/* +obj/obc1.o : chip/obc1/obc1.cpp chip/obc1/* +obj/st010.o : chip/st010/st010.cpp chip/st010/* +obj/st011.o : chip/st011/st011.cpp chip/st011/* +obj/st018.o : chip/st018/st018.cpp chip/st018/* +obj/21fx.o : chip/21fx/21fx.cpp chip/21fx/* + +############### +### targets ### +############### + +build: ui_build $(objects) +ifeq ($(platform),osx) + test -d ../bsnes.app || mkdir -p ../bsnes.app/Contents/MacOS + $(strip $(cpp) -o ../bsnes.app/Contents/MacOS/bsnes $(objects) $(link)) +else + $(strip $(cpp) -o ../bsnes $(objects) $(link)) +endif + +install: + install -D -m 755 ../bsnes $(DESTDIR)$(prefix)/bin/bsnes + install -D -m 644 data/bsnes.png $(DESTDIR)$(prefix)/share/pixmaps/bsnes.png + install -D -m 644 data/bsnes.desktop $(DESTDIR)$(prefix)/share/applications/bsnes.desktop + +clean: ui_clean + -@$(call delete,obj/*.o) + -@$(call delete,*.res) + -@$(call delete,*.pgd) + -@$(call delete,*.pgc) + -@$(call delete,*.ilk) + -@$(call delete,*.pdb) + -@$(call delete,*.manifest) + +help: + @echo "Usage: $(MAKE) platform=(os) compiler=(cc) [options]" + @echo "" + @echo "Supported platforms:" + @echo " x - Linux / BSD (x86, x86-64)" + @echo " win - Windows (x86, x86-64)" + @echo "" + @echo "Supported compilers:" + @echo " gcc - GCC compiler" + @echo " mingw32-gcc - MinGW compiler" + @echo " i586-mingw32-gcc - MinGW cross compiler" + @echo "" + @echo "Example: $(MAKE) platform=x compiler=gcc" + @echo "" diff --git a/libmednahawk/src/snes/src/base.hpp b/libmednahawk/src/snes/src/base.hpp new file mode 100644 index 0000000000..eebc452bc3 --- /dev/null +++ b/libmednahawk/src/snes/src/base.hpp @@ -0,0 +1,46 @@ +static const char bsnesVersion[] = "0.059"; +static const char bsnesTitle[] = "bsnes"; +static const unsigned bsnesSerializerVersion = 4; + +//S-DSP can be encapsulated into a state machine using #define magic +//this avoids ~2.048m co_switch() calls per second (~5% speedup) +#define DSP_STATE_MACHINE + +//game genie + pro action replay code support (~2% speed hit) +#define CHEAT_SYSTEM + +//enable debugging extensions (~15% speed hit) +//#define DEBUGGER + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace nall; + +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; + +#include "interface.hpp" diff --git a/libmednahawk/src/snes/src/cartridge/cartridge.cpp b/libmednahawk/src/snes/src/cartridge/cartridge.cpp new file mode 100644 index 0000000000..eb4cb9dac4 --- /dev/null +++ b/libmednahawk/src/snes/src/cartridge/cartridge.cpp @@ -0,0 +1,133 @@ +#include <../base.hpp> +#include +#include + +#define CARTRIDGE_CPP +namespace SNES { + +#include "header.cpp" +#include "gameboyheader.cpp" +#include "serialization.cpp" + +namespace memory { + MappedRAM cartrom, cartram, cartrtc; + MappedRAM bsxflash, bsxram, bsxpram; + MappedRAM stArom, stAram; + MappedRAM stBrom, stBram; + MappedRAM gbrom, gbram, gbrtc; +}; + +Cartridge cartridge; + +void Cartridge::load(Mode cartridge_mode) { + mode = cartridge_mode; + read_header(memory::cartrom.data(), memory::cartrom.size()); + + if(ram_size > 0) { + memory::cartram.map(allocate(ram_size, 0xff), ram_size); + } + + if(has_srtc || has_spc7110rtc) { + memory::cartrtc.map(allocate(20, 0xff), 20); + } + + if(mode == ModeBsx) { + memory::bsxram.map (allocate( 32 * 1024, 0xff), 32 * 1024); + memory::bsxpram.map(allocate(512 * 1024, 0xff), 512 * 1024); + } + + if(mode == ModeSufamiTurbo) { + if(memory::stArom.data()) memory::stAram.map(allocate(128 * 1024, 0xff), 128 * 1024); + if(memory::stBrom.data()) memory::stBram.map(allocate(128 * 1024, 0xff), 128 * 1024); + } + + if(mode == ModeSuperGameBoy) { + if(memory::gbrom.data()) { + unsigned ram_size = gameboy_ram_size(); + unsigned rtc_size = gameboy_rtc_size(); + + if(ram_size) memory::gbram.map(allocate(ram_size, 0xff), ram_size); + if(rtc_size) memory::gbrtc.map(allocate(rtc_size, 0x00), rtc_size); + } + } + + memory::cartrom.write_protect(true); + memory::cartram.write_protect(false); + memory::cartrtc.write_protect(false); + memory::bsxflash.write_protect(true); + memory::bsxram.write_protect(false); + memory::bsxpram.write_protect(false); + memory::stArom.write_protect(true); + memory::stAram.write_protect(false); + memory::stBrom.write_protect(true); + memory::stBram.write_protect(false); + memory::gbrom.write_protect(true); + memory::gbram.write_protect(false); + memory::gbrtc.write_protect(false); + + unsigned checksum = ~0; + for(unsigned n = 0; n < memory::cartrom.size(); n++) checksum = crc32_adjust(checksum, memory::cartrom[n]); + if(memory::bsxflash.size() != 0 && memory::bsxflash.size() != ~0) + for(unsigned n = 0; n < memory::bsxflash.size(); n++) checksum = crc32_adjust(checksum, memory::bsxflash[n]); + if(memory::stArom.size() != 0 && memory::stArom.size() != ~0) + for(unsigned n = 0; n < memory::stArom.size(); n++) checksum = crc32_adjust(checksum, memory::stArom[n]); + if(memory::stBrom.size() != 0 && memory::stBrom.size() != ~0) + for(unsigned n = 0; n < memory::stBrom.size(); n++) checksum = crc32_adjust(checksum, memory::stBrom[n]); + if(memory::gbrom.size() != 0 && memory::gbrom.size() != ~0) + for(unsigned n = 0; n < memory::gbrom.size(); n++) checksum = crc32_adjust(checksum, memory::gbrom[n]); + crc32 = ~checksum; + +#if 0 + fprintf(stdout, "crc32 = %.8x\n", (unsigned)crc32); + + sha256_ctx sha; + uint8_t shahash[32]; + sha256_init(&sha); + sha256_chunk(&sha, memory::cartrom.data(), memory::cartrom.size()); + sha256_final(&sha); + sha256_hash(&sha, shahash); + + fprintf(stdout, "sha256 = "); + for(unsigned i = 0; i < 32; i++) fprintf(stdout, "%.2x", shahash[i]); + fprintf(stdout, "\n"); +#endif + + bus.load_cart(); + system.serialize_init(); + loaded = true; +} + +void Cartridge::unload() { + memory::cartrom.reset(); + memory::cartram.reset(); + memory::cartrtc.reset(); + memory::bsxflash.reset(); + memory::bsxram.reset(); + memory::bsxpram.reset(); + memory::stArom.reset(); + memory::stAram.reset(); + memory::stBrom.reset(); + memory::stBram.reset(); + memory::gbrom.reset(); + memory::gbram.reset(); + memory::gbrtc.reset(); + + if(loaded == false) return; + bus.unload_cart(); + loaded = false; +} + +bool Cartridge::has_21fx() const { + return s21fx.exists(); +} + +Cartridge::Cartridge() { + loaded = false; + unload(); +} + +Cartridge::~Cartridge() { + unload(); +} + +} diff --git a/libmednahawk/src/snes/src/cartridge/cartridge.hpp b/libmednahawk/src/snes/src/cartridge/cartridge.hpp new file mode 100644 index 0000000000..e88fe9b79b --- /dev/null +++ b/libmednahawk/src/snes/src/cartridge/cartridge.hpp @@ -0,0 +1,116 @@ +class Cartridge : property { +public: + enum Mode { + ModeNormal, + ModeBsxSlotted, + ModeBsx, + ModeSufamiTurbo, + ModeSuperGameBoy, + }; + + enum Type { + TypeNormal, + TypeBsxSlotted, + TypeBsxBios, + TypeBsx, + TypeSufamiTurboBios, + TypeSufamiTurbo, + TypeSuperGameBoy1Bios, + TypeSuperGameBoy2Bios, + TypeGameBoy, + TypeUnknown, + }; + + enum Region { + NTSC, + PAL, + }; + + enum MemoryMapper { + LoROM, + HiROM, + ExLoROM, + ExHiROM, + SuperFXROM, + SA1ROM, + SPC7110ROM, + BSCLoROM, + BSCHiROM, + BSXROM, + STROM, + }; + + enum DSP1MemoryMapper { + DSP1Unmapped, + DSP1LoROM1MB, + DSP1LoROM2MB, + DSP1HiROM, + }; + + readonly loaded; //is a base cartridge inserted? + readonly crc32; //crc32 of all cartridges (base+slot(s)) + + readonly mode; + readonly type; + readonly region; + readonly mapper; + readonly dsp1_mapper; + + readonly has_bsx_slot; + readonly has_superfx; + readonly has_sa1; + readonly has_srtc; + readonly has_sdd1; + readonly has_spc7110; + readonly has_spc7110rtc; + readonly has_cx4; + readonly has_dsp1; + readonly has_dsp2; + readonly has_dsp3; + readonly has_dsp4; + readonly has_obc1; + readonly has_st010; + readonly has_st011; + readonly has_st018; + bool has_21fx() const; + + void load(Mode); + void unload(); + + void serialize(serializer&); + Cartridge(); + ~Cartridge(); + +private: + enum HeaderField { + CartName = 0x00, + Mapper = 0x15, + RomType = 0x16, + RomSize = 0x17, + RamSize = 0x18, + CartRegion = 0x19, + Company = 0x1a, + Version = 0x1b, + Complement = 0x1c, //inverse checksum + Checksum = 0x1e, + ResetVector = 0x3c, + }; + + unsigned ram_size; + void read_header(const uint8_t *data, unsigned size); + unsigned find_header(const uint8_t *data, unsigned size) const; + unsigned score_header(const uint8_t *data, unsigned size, unsigned addr) const; + + unsigned gameboy_ram_size() const; + unsigned gameboy_rtc_size() const; +}; + +namespace memory { + extern MappedRAM cartrom, cartram, cartrtc; + extern MappedRAM bsxflash, bsxram, bsxpram; + extern MappedRAM stArom, stAram; + extern MappedRAM stBrom, stBram; + extern MappedRAM gbrom, gbram, gbrtc; +}; + +extern Cartridge cartridge; diff --git a/libmednahawk/src/snes/src/cartridge/gameboyheader.cpp b/libmednahawk/src/snes/src/cartridge/gameboyheader.cpp new file mode 100644 index 0000000000..e075f811a8 --- /dev/null +++ b/libmednahawk/src/snes/src/cartridge/gameboyheader.cpp @@ -0,0 +1,22 @@ +#ifdef CARTRIDGE_CPP + +unsigned Cartridge::gameboy_ram_size() const { + if(memory::gbrom.size() < 512) return 0; + switch(memory::gbrom[0x0149]) { + case 0x00: return 0 * 1024; + case 0x01: return 8 * 1024; + case 0x02: return 8 * 1024; + case 0x03: return 32 * 1024; + case 0x04: return 128 * 1024; + case 0x05: return 128 * 1024; + default: return 128 * 1024; + } +} + +unsigned Cartridge::gameboy_rtc_size() const { + if(memory::gbrom.size() < 512) return 0; + if(memory::gbrom[0x0147] == 0x0f || memory::gbrom[0x0147] == 0x10) return 4; + return 0; +} + +#endif diff --git a/libmednahawk/src/snes/src/cartridge/header.cpp b/libmednahawk/src/snes/src/cartridge/header.cpp new file mode 100644 index 0000000000..7753402065 --- /dev/null +++ b/libmednahawk/src/snes/src/cartridge/header.cpp @@ -0,0 +1,321 @@ +#ifdef CARTRIDGE_CPP + +void Cartridge::read_header(const uint8_t *data, unsigned size) { + type = TypeUnknown; + mapper = LoROM; + dsp1_mapper = DSP1Unmapped; + region = NTSC; + ram_size = 0; + + has_bsx_slot = false; + has_superfx = false; + has_sa1 = false; + has_srtc = false; + has_sdd1 = false; + has_spc7110 = false; + has_spc7110rtc = false; + has_cx4 = false; + has_dsp1 = false; + has_dsp2 = false; + has_dsp3 = false; + has_dsp4 = false; + has_obc1 = false; + has_st010 = false; + has_st011 = false; + has_st018 = false; + + //===================== + //detect Game Boy carts + //===================== + + if(size >= 0x0140) { + if(data[0x0104] == 0xce && data[0x0105] == 0xed && data[0x0106] == 0x66 && data[0x0107] == 0x66 + && data[0x0108] == 0xcc && data[0x0109] == 0x0d && data[0x010a] == 0x00 && data[0x010b] == 0x0b) { + type = TypeGameBoy; + return; + } + } + + const unsigned index = find_header(data, size); + const uint8 mapperid = data[index + Mapper]; + const uint8 rom_type = data[index + RomType]; + const uint8 rom_size = data[index + RomSize]; + const uint8 company = data[index + Company]; + const uint8 regionid = data[index + CartRegion] & 0x7f; + + ram_size = 1024 << (data[index + RamSize] & 7); + if(ram_size == 1024) ram_size = 0; //no RAM present + + //0, 1, 13 = NTSC; 2 - 12 = PAL + region = (regionid <= 1 || regionid >= 13) ? NTSC : PAL; + + //======================= + //detect BS-X flash carts + //======================= + + if(data[index + 0x13] == 0x00 || data[index + 0x13] == 0xff) { + if(data[index + 0x14] == 0x00) { + const uint8_t n15 = data[index + 0x15]; + if(n15 == 0x00 || n15 == 0x80 || n15 == 0x84 || n15 == 0x9c || n15 == 0xbc || n15 == 0xfc) { + if(data[index + 0x1a] == 0x33 || data[index + 0x1a] == 0xff) { + type = TypeBsx; + mapper = BSXROM; + region = NTSC; //BS-X only released in Japan + return; + } + } + } + } + + //========================= + //detect Sufami Turbo carts + //========================= + + if(!memcmp(data, "BANDAI SFC-ADX", 14)) { + if(!memcmp(data + 16, "SFC-ADX BACKUP", 14)) { + type = TypeSufamiTurboBios; + } else { + type = TypeSufamiTurbo; + } + mapper = STROM; + region = NTSC; //Sufami Turbo only released in Japan + return; //RAM size handled outside this routine + } + + //========================== + //detect Super Game Boy BIOS + //========================== + + if(!memcmp(data + index, "Super GAMEBOY2", 14)) { + type = TypeSuperGameBoy2Bios; + return; + } + + if(!memcmp(data + index, "Super GAMEBOY", 13)) { + type = TypeSuperGameBoy1Bios; + return; + } + + //===================== + //detect standard carts + //===================== + + //detect presence of BS-X flash cartridge connector (reads extended header information) + if(data[index - 14] == 'Z') { + if(data[index - 11] == 'J') { + uint8 n13 = data[index - 13]; + if((n13 >= 'A' && n13 <= 'Z') || (n13 >= '0' && n13 <= '9')) { + if(company == 0x33 || (data[index - 10] == 0x00 && data[index - 4] == 0x00)) { + has_bsx_slot = true; + } + } + } + } + + if(has_bsx_slot) { + if(!memcmp(data + index, "Satellaview BS-X ", 21)) { + //BS-X base cart + type = TypeBsxBios; + mapper = BSXROM; + region = NTSC; //BS-X only released in Japan + return; //RAM size handled internally by load_cart_bsx() -> BSXCart class + } else { + type = TypeBsxSlotted; + mapper = (index == 0x7fc0 ? BSCLoROM : BSCHiROM); + region = NTSC; //BS-X slotted cartridges only released in Japan + } + } else { + //standard cart + type = TypeNormal; + + if(index == 0x7fc0 && size >= 0x401000) { + mapper = ExLoROM; + } else if(index == 0x7fc0 && mapperid == 0x32) { + mapper = ExLoROM; + } else if(index == 0x7fc0) { + mapper = LoROM; + } else if(index == 0xffc0) { + mapper = HiROM; + } else { //index == 0x40ffc0 + mapper = ExHiROM; + } + } + + if(mapperid == 0x20 && (rom_type == 0x13 || rom_type == 0x14 || rom_type == 0x15 || rom_type == 0x1a)) { + has_superfx = true; + mapper = SuperFXROM; + ram_size = 1024 << (data[index - 3] & 7); + if(ram_size == 1024) ram_size = 0; + } + + if(mapperid == 0x23 && (rom_type == 0x32 || rom_type == 0x34 || rom_type == 0x35)) { + has_sa1 = true; + mapper = SA1ROM; + } + + if(mapperid == 0x35 && rom_type == 0x55) { + has_srtc = true; + } + + if(mapperid == 0x32 && (rom_type == 0x43 || rom_type == 0x45)) { + has_sdd1 = true; + } + + if(mapperid == 0x3a && (rom_type == 0xf5 || rom_type == 0xf9)) { + has_spc7110 = true; + has_spc7110rtc = (rom_type == 0xf9); + mapper = SPC7110ROM; + } + + if(mapperid == 0x20 && rom_type == 0xf3) { + has_cx4 = true; + } + + if((mapperid == 0x20 || mapperid == 0x21) && rom_type == 0x03) { + has_dsp1 = true; + } + + if(mapperid == 0x30 && rom_type == 0x05 && company != 0xb2) { + has_dsp1 = true; + } + + if(mapperid == 0x31 && (rom_type == 0x03 || rom_type == 0x05)) { + has_dsp1 = true; + } + + if(has_dsp1 == true) { + if((mapperid & 0x2f) == 0x20 && size <= 0x100000) { + dsp1_mapper = DSP1LoROM1MB; + } else if((mapperid & 0x2f) == 0x20) { + dsp1_mapper = DSP1LoROM2MB; + } else if((mapperid & 0x2f) == 0x21) { + dsp1_mapper = DSP1HiROM; + } + } + + if(mapperid == 0x20 && rom_type == 0x05) { + has_dsp2 = true; + } + + if(mapperid == 0x30 && rom_type == 0x05 && company == 0xb2) { + has_dsp3 = true; + } + + if(mapperid == 0x30 && rom_type == 0x03) { + has_dsp4 = true; + } + + if(mapperid == 0x30 && rom_type == 0x25) { + has_obc1 = true; + } + + if(mapperid == 0x30 && rom_type == 0xf6 && rom_size >= 10) { + has_st010 = true; + } + + if(mapperid == 0x30 && rom_type == 0xf6 && rom_size < 10) { + has_st011 = true; + } + + if(mapperid == 0x30 && rom_type == 0xf5) { + has_st018 = true; + } +} + +unsigned Cartridge::find_header(const uint8_t *data, unsigned size) const { + unsigned score_lo = score_header(data, size, 0x007fc0); + unsigned score_hi = score_header(data, size, 0x00ffc0); + unsigned score_ex = score_header(data, size, 0x40ffc0); + if(score_ex) score_ex += 4; //favor ExHiROM on images > 32mbits + + if(score_lo >= score_hi && score_lo >= score_ex) { + return 0x007fc0; + } else if(score_hi >= score_ex) { + return 0x00ffc0; + } else { + return 0x40ffc0; + } +} + +unsigned Cartridge::score_header(const uint8_t *data, unsigned size, unsigned addr) const { + if(size < addr + 64) return 0; //image too small to contain header at this location? + int score = 0; + + uint16 resetvector = data[addr + ResetVector] | (data[addr + ResetVector + 1] << 8); + uint16 checksum = data[addr + Checksum ] | (data[addr + Checksum + 1] << 8); + uint16 complement = data[addr + Complement ] | (data[addr + Complement + 1] << 8); + + uint8 resetop = data[(addr & ~0x7fff) | (resetvector & 0x7fff)]; //first opcode executed upon reset + uint8 mapper = data[addr + Mapper] & ~0x10; //mask off irrelevent FastROM-capable bit + + //$00:[000-7fff] contains uninitialized RAM and MMIO. + //reset vector must point to ROM at $00:[8000-ffff] to be considered valid. + if(resetvector < 0x8000) return 0; + + //some images duplicate the header in multiple locations, and others have completely + //invalid header information that cannot be relied upon. + //below code will analyze the first opcode executed at the specified reset vector to + //determine the probability that this is the correct header. + + //most likely opcodes + if(resetop == 0x78 //sei + || resetop == 0x18 //clc (clc; xce) + || resetop == 0x38 //sec (sec; xce) + || resetop == 0x9c //stz $nnnn (stz $4200) + || resetop == 0x4c //jmp $nnnn + || resetop == 0x5c //jml $nnnnnn + ) score += 8; + + //plausible opcodes + if(resetop == 0xc2 //rep #$nn + || resetop == 0xe2 //sep #$nn + || resetop == 0xad //lda $nnnn + || resetop == 0xae //ldx $nnnn + || resetop == 0xac //ldy $nnnn + || resetop == 0xaf //lda $nnnnnn + || resetop == 0xa9 //lda #$nn + || resetop == 0xa2 //ldx #$nn + || resetop == 0xa0 //ldy #$nn + || resetop == 0x20 //jsr $nnnn + || resetop == 0x22 //jsl $nnnnnn + ) score += 4; + + //implausible opcodes + if(resetop == 0x40 //rti + || resetop == 0x60 //rts + || resetop == 0x6b //rtl + || resetop == 0xcd //cmp $nnnn + || resetop == 0xec //cpx $nnnn + || resetop == 0xcc //cpy $nnnn + ) score -= 4; + + //least likely opcodes + if(resetop == 0x00 //brk #$nn + || resetop == 0x02 //cop #$nn + || resetop == 0xdb //stp + || resetop == 0x42 //wdm + || resetop == 0xff //sbc $nnnnnn,x + ) score -= 8; + + //at times, both the header and reset vector's first opcode will match ... + //fallback and rely on info validity in these cases to determine more likely header. + + //a valid checksum is the biggest indicator of a valid header. + if((checksum + complement) == 0xffff && (checksum != 0) && (complement != 0)) score += 4; + + if(addr == 0x007fc0 && mapper == 0x20) score += 2; //0x20 is usually LoROM + if(addr == 0x00ffc0 && mapper == 0x21) score += 2; //0x21 is usually HiROM + if(addr == 0x007fc0 && mapper == 0x22) score += 2; //0x22 is usually ExLoROM + if(addr == 0x40ffc0 && mapper == 0x25) score += 2; //0x25 is usually ExHiROM + + if(data[addr + Company] == 0x33) score += 2; //0x33 indicates extended header + if(data[addr + RomType] < 0x08) score++; + if(data[addr + RomSize] < 0x10) score++; + if(data[addr + RamSize] < 0x08) score++; + if(data[addr + CartRegion] < 14) score++; + + if(score < 0) score = 0; + return score; +} + +#endif diff --git a/libmednahawk/src/snes/src/cartridge/serialization.cpp b/libmednahawk/src/snes/src/cartridge/serialization.cpp new file mode 100644 index 0000000000..173c3d3c4e --- /dev/null +++ b/libmednahawk/src/snes/src/cartridge/serialization.cpp @@ -0,0 +1,37 @@ +#ifdef CARTRIDGE_CPP + +void Cartridge::serialize(serializer &s) { + if(memory::cartram.size() != 0 && memory::cartram.size() != ~0) { + s.array(memory::cartram.data(), memory::cartram.size()); + } + + if(memory::cartrtc.size() != 0 && memory::cartrtc.size() != ~0) { + s.array(memory::cartrtc.data(), memory::cartrtc.size()); + } + + if(memory::bsxram.size() != 0 && memory::bsxram.size() != ~0) { + s.array(memory::bsxram.data(), memory::bsxram.size()); + } + + if(memory::bsxpram.size() != 0 && memory::bsxpram.size() != ~0) { + s.array(memory::bsxpram.data(), memory::bsxpram.size()); + } + + if(memory::stAram.size() != 0 && memory::stAram.size() != ~0) { + s.array(memory::stAram.data(), memory::stAram.size()); + } + + if(memory::stBram.size() != 0 && memory::stBram.size() != ~0) { + s.array(memory::stBram.data(), memory::stBram.size()); + } + + if(memory::gbram.size() != 0 && memory::gbram.size() != ~0) { + s.array(memory::gbram.data(), memory::gbram.size()); + } + + if(memory::gbrtc.size() != 0 && memory::gbrtc.size() != ~0) { + s.array(memory::gbrtc.data(), memory::gbrtc.size()); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/cc.bat b/libmednahawk/src/snes/src/cc.bat new file mode 100644 index 0000000000..be183a410a --- /dev/null +++ b/libmednahawk/src/snes/src/cc.bat @@ -0,0 +1,3 @@ +@mingw32-make + +@pause diff --git a/libmednahawk/src/snes/src/cheat/cheat-inline.hpp b/libmednahawk/src/snes/src/cheat/cheat-inline.hpp new file mode 100644 index 0000000000..5d28688d88 --- /dev/null +++ b/libmednahawk/src/snes/src/cheat/cheat-inline.hpp @@ -0,0 +1,2 @@ +bool Cheat::active() const { return cheat_enabled; } +bool Cheat::exists(unsigned addr) const { return bitmask[addr >> 3] & 1 << (addr & 7); } diff --git a/libmednahawk/src/snes/src/cheat/cheat.cpp b/libmednahawk/src/snes/src/cheat/cheat.cpp new file mode 100644 index 0000000000..e7718f4264 --- /dev/null +++ b/libmednahawk/src/snes/src/cheat/cheat.cpp @@ -0,0 +1,196 @@ +#include <../base.hpp> + +#define CHEAT_CPP +namespace SNES { + +Cheat cheat; + +bool Cheat::enabled() const { + return system_enabled; +} + +void Cheat::enable(bool state) { + system_enabled = state; + cheat_enabled = system_enabled && code_enabled; +} + +void Cheat::synchronize() { + memset(bitmask, 0x00, sizeof bitmask); + code_enabled = false; + + for(unsigned i = 0; i < size(); i++) { + const CheatCode &code = operator[](i); + if(code.enabled == false) continue; + + for(unsigned n = 0; n < code.addr.size(); n++) { + code_enabled = true; + + unsigned addr = mirror(code.addr[n]); + bitmask[addr >> 3] |= 1 << (addr & 7); + if((addr & 0xffe000) == 0x7e0000) { + //mirror $7e:0000-1fff to $00-3f|80-bf:0000-1fff + unsigned mirroraddr; + for(unsigned x = 0; x <= 0x3f; x++) { + mirroraddr = ((0x00 + x) << 16) + (addr & 0x1fff); + bitmask[mirroraddr >> 3] |= 1 << (mirroraddr & 7); + + mirroraddr = ((0x80 + x) << 16) + (addr & 0x1fff); + bitmask[mirroraddr >> 3] |= 1 << (mirroraddr & 7); + } + } + } + } + + cheat_enabled = system_enabled && code_enabled; +} + +bool Cheat::read(unsigned addr, uint8 &data) const { + addr = mirror(addr); + + for(unsigned i = 0; i < size(); i++) { + const CheatCode &code = operator[](i); + if(code.enabled == false) continue; + + for(unsigned n = 0; n < code.addr.size(); n++) { + if(addr == mirror(code.addr[n])) { + data = code.data[n]; + return true; + } + } + } + + return false; +} + +Cheat::Cheat() { + system_enabled = true; + synchronize(); +} + +//=============== +//encode / decode +//=============== + +bool Cheat::decode(const char *s, unsigned &addr, uint8 &data, Type &type) { + string t = s; + strlower(t); + + #define ischr(n) ((n >= '0' && n <= '9') || (n >= 'a' && n <= 'f')) + + if(strlen(t) == 8 || (strlen(t) == 9 && t[6] == ':')) { + //strip ':' + if(strlen(t) == 9 && t[6] == ':') t = string() << substr(t, 0, 6) << substr(t, 7); + //validate input + for(unsigned i = 0; i < 8; i++) if(!ischr(t[i])) return false; + + type = ProActionReplay; + unsigned r = strhex((const char*)t); + addr = r >> 8; + data = r & 0xff; + return true; + } else if(strlen(t) == 9 && t[4] == '-') { + //strip '-' + t = string() << substr(t, 0, 4) << substr(t, 5); + //validate input + for(unsigned i = 0; i < 8; i++) if(!ischr(t[i])) return false; + + type = GameGenie; + strtr(t, "df4709156bc8a23e", "0123456789abcdef"); + unsigned r = strhex((const char*)t); + //8421 8421 8421 8421 8421 8421 + //abcd efgh ijkl mnop qrst uvwx + //ijkl qrst opab cduv wxef ghmn + addr = (!!(r & 0x002000) << 23) | (!!(r & 0x001000) << 22) + | (!!(r & 0x000800) << 21) | (!!(r & 0x000400) << 20) + | (!!(r & 0x000020) << 19) | (!!(r & 0x000010) << 18) + | (!!(r & 0x000008) << 17) | (!!(r & 0x000004) << 16) + | (!!(r & 0x800000) << 15) | (!!(r & 0x400000) << 14) + | (!!(r & 0x200000) << 13) | (!!(r & 0x100000) << 12) + | (!!(r & 0x000002) << 11) | (!!(r & 0x000001) << 10) + | (!!(r & 0x008000) << 9) | (!!(r & 0x004000) << 8) + | (!!(r & 0x080000) << 7) | (!!(r & 0x040000) << 6) + | (!!(r & 0x020000) << 5) | (!!(r & 0x010000) << 4) + | (!!(r & 0x000200) << 3) | (!!(r & 0x000100) << 2) + | (!!(r & 0x000080) << 1) | (!!(r & 0x000040) << 0); + data = r >> 24; + return true; + } else { + return false; + } + + #undef ischr +} + +bool Cheat::encode(string &s, unsigned addr, uint8 data, Type type) { + char t[16]; + + if(type == ProActionReplay) { + sprintf(t, "%.6x%.2x", addr, data); + s = t; + return true; + } else if(type == GameGenie) { + unsigned r = addr; + addr = (!!(r & 0x008000) << 23) | (!!(r & 0x004000) << 22) + | (!!(r & 0x002000) << 21) | (!!(r & 0x001000) << 20) + | (!!(r & 0x000080) << 19) | (!!(r & 0x000040) << 18) + | (!!(r & 0x000020) << 17) | (!!(r & 0x000010) << 16) + | (!!(r & 0x000200) << 15) | (!!(r & 0x000100) << 14) + | (!!(r & 0x800000) << 13) | (!!(r & 0x400000) << 12) + | (!!(r & 0x200000) << 11) | (!!(r & 0x100000) << 10) + | (!!(r & 0x000008) << 9) | (!!(r & 0x000004) << 8) + | (!!(r & 0x000002) << 7) | (!!(r & 0x000001) << 6) + | (!!(r & 0x080000) << 5) | (!!(r & 0x040000) << 4) + | (!!(r & 0x020000) << 3) | (!!(r & 0x010000) << 2) + | (!!(r & 0x000800) << 1) | (!!(r & 0x000400) << 0); + sprintf(t, "%.2x%.2x-%.4x", data, addr >> 16, addr & 0xffff); + strtr(t, "0123456789abcdef", "df4709156bc8a23e"); + s = t; + return true; + } else { + return false; + } +} + +//======== +//internal +//======== + +unsigned Cheat::mirror(unsigned addr) const { + //$00-3f|80-bf:0000-1fff -> $7e:0000-1fff + if((addr & 0x40e000) == 0x000000) return (0x7e0000 + (addr & 0x1fff)); + return addr; +} + +//========= +//CheatCode +//========= + +bool CheatCode::operator=(string s) { + addr.reset(); + data.reset(); + + lstring list; + list.split("+", s.replace(" ", "")); + + for(unsigned i = 0; i < list.size(); i++) { + unsigned addr_; + uint8 data_; + Cheat::Type type_; + if(Cheat::decode(list[i], addr_, data_, type_) == false) { + addr.reset(); + data.reset(); + return false; + } + + addr.add(addr_); + data.add(data_); + } + + return true; +} + +CheatCode::CheatCode() { + enabled = false; +} + +} diff --git a/libmednahawk/src/snes/src/cheat/cheat.hpp b/libmednahawk/src/snes/src/cheat/cheat.hpp new file mode 100644 index 0000000000..d8493e44b8 --- /dev/null +++ b/libmednahawk/src/snes/src/cheat/cheat.hpp @@ -0,0 +1,35 @@ +struct CheatCode { + bool enabled; + array addr; + array data; + + bool operator=(string); + CheatCode(); +}; + +class Cheat : public vector { +public: + enum Type { ProActionReplay, GameGenie }; + + bool enabled() const; + void enable(bool); + void synchronize(); + bool read(unsigned, uint8&) const; + + inline bool active() const; + inline bool exists(unsigned addr) const; + + Cheat(); + + static bool decode(const char*, unsigned&, uint8&, Type&); + static bool encode(string&, unsigned, uint8, Type); + +private: + uint8 bitmask[0x200000]; + bool system_enabled; + bool code_enabled; + bool cheat_enabled; + unsigned mirror(unsigned) const; +}; + +extern Cheat cheat; diff --git a/libmednahawk/src/snes/src/chip/21fx/21fx.cpp b/libmednahawk/src/snes/src/chip/21fx/21fx.cpp new file mode 100644 index 0000000000..61d5ab7592 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/21fx/21fx.cpp @@ -0,0 +1,195 @@ +#include <../base.hpp> + +//B-bus interface + +//$21f0 command port (r/w) +//------------------------- +//$00 set data port address (sr[3-0] = address) +//$01 set audio track number (sr[1-0] = track number) +//$02 set volume (sr[1] = left, sr[0] = right) +//$03 set audio state (sr[0].d1 = pause, sr[0].d0 = repeat) +// +//d7 = data port busy +//d6 = audio port busy +//d5 = audio playing +//d4 = reserved (0) +//d3-d0 = version (0) +// +// +//$21f1 parameter port (w) +//------------------------- +//(shift register) +// +// +//$21f2 data port (r) +//-------------------- +//(auto-increment read port) + +//A-bus interface + +//$2200 command port (r/w) +//------------------------- +//$00 set data port address (sr[3-0] = address) +//$01 set audio track number (sr[1-0] = track number) +//$02 set volume (sr[1] = left, sr[0] = right) +//$03 set audio state (sr[0].d1 = pause, sr[0].d0 = repeat) +// +//d7 = data port busy +//d6 = audio port busy +//d5 = audio playing +//d4 = reserved (0) +//d3-d0 = version (0) +// +//$2201 data port (r/w) +//---------------------- +//(shift register) +// +//(auto-increment read port) + +#define S21FX_CPP +namespace SNES { + +S21fx s21fx; + +#include "serialization.cpp" + +void S21fx::enter() { + scheduler.clock.cop_freq = 44100; + + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + int16 left = 0, right = 0; + + if((mmio.status & AudioPlaying) && !mmio.audio_pause) { + if(audiofile.open()) { + if(audiofile.end()) { + if(!mmio.audio_repeat) mmio.status &= ~AudioPlaying; + audiofile.seek(mmio.audio_offset = 58); + } else { + mmio.audio_offset += 4; + left = audiofile.readl(2); + right = audiofile.readl(2); + } + } else { + mmio.status &= ~AudioPlaying; + } + } + + left = sclamp<16>((double)left * (double)mmio.audio_volume_left / 255.0); + right = sclamp<16>((double)right * (double)mmio.audio_volume_right / 255.0); + + audio.coprocessor_sample(left, right); + scheduler.addclocks_cop(1); + scheduler.sync_copcpu(); + } +} + +void S21fx::init() { +} + +void S21fx::enable() { + audio.coprocessor_enable(true); + audio.coprocessor_frequency(44100.0); + + for(unsigned i = 0x21f0; i <= 0x21f7; i++) { + memory::mmio.map(i, *this); + } + + memory::mmio.map(0x2200, *this); + memory::mmio.map(0x2201, *this); + + if(datafile.open()) datafile.close(); + datafile.open(string() << basepath << "21fx.bin", file::mode_read); +} + +void S21fx::power() { + reset(); +} + +void S21fx::reset() { + mmio.status = DataPortBusy | AudioBusy; + mmio.shift_register = 0; + + mmio.data_offset = 0; + mmio.audio_offset = 0; + mmio.audio_track = 0; + mmio.audio_volume_left = 255; + mmio.audio_volume_right = 255; + mmio.audio_repeat = false; + mmio.audio_pause = false; +} + +uint8 S21fx::mmio_read(unsigned addr) { + addr &= 0xffff; + + if((addr == 0x21f0) || (addr == 0x2200)) { + return mmio.status | 0x00; + } + + if((addr == 0x21f2) || (addr == 0x2201)) { + if(mmio.status & DataPortBusy) return 0x00; + mmio.data_offset++; + if(datafile.open()) return datafile.read(); + return 0x00; + } + + return 0x00; +} + +void S21fx::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + if((addr == 0x21f0) || (addr == 0x2200)) { + if(data == 0x00) { + mmio.data_offset = mmio.shift_register & 0xffffffff; + if(datafile.open()) { + datafile.seek(mmio.data_offset); + } + mmio.status &= ~DataPortBusy; + } + + if(data == 0x01) { + mmio.audio_track = mmio.shift_register & 0xffff; + if(audiofile.open()) audiofile.close(); + char track[16]; + sprintf(track, "%.5u", mmio.audio_track); + if(audiofile.open(string() << basepath << "audio" << track << ".wav", file::mode_read)) { + audiofile.seek(mmio.audio_offset = 58); //skip WAV header + } + mmio.status &= ~(AudioBusy | AudioPlaying); + } + + if(data == 0x02) { + mmio.audio_volume_left = mmio.shift_register >> 8; + mmio.audio_volume_right = mmio.shift_register >> 0; + } + + if(data == 0x03) { + mmio.status |= AudioPlaying; + mmio.audio_repeat = mmio.shift_register & 1; + mmio.audio_pause = mmio.shift_register & 2; + } + + mmio.shift_register = 0; + } + + if((addr == 0x21f1) || (addr == 0x2201)) { + mmio.shift_register = (mmio.shift_register << 8) | data; + } +} + +void S21fx::base(const string& path) { + basepath = path; +} + +bool S21fx::exists() { + return file::exists(string() << basepath << "21fx.bin"); +} + +S21fx::S21fx() { +} + +} diff --git a/libmednahawk/src/snes/src/chip/21fx/21fx.hpp b/libmednahawk/src/snes/src/chip/21fx/21fx.hpp new file mode 100644 index 0000000000..045a83dba7 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/21fx/21fx.hpp @@ -0,0 +1,44 @@ +class S21fx : public MMIO { +public: + void enter(); + + void init(); + void enable(); + void power(); + void reset(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + void base(const string &path); + bool exists(); + + void serialize(serializer&); + S21fx(); + +private: + string basepath; + file datafile; + file audiofile; + + enum Flag { + DataPortBusy = 0x80, + AudioBusy = 0x40, + AudioPlaying = 0x20, + }; + + struct MMIO { + uint8 status; + uint64 shift_register; + + uint32 data_offset; + uint32 audio_offset; + uint16 audio_track; + uint8 audio_volume_left; + uint8 audio_volume_right; + bool audio_repeat; + bool audio_pause; + } mmio; +}; + +extern S21fx s21fx; diff --git a/libmednahawk/src/snes/src/chip/21fx/serialization.cpp b/libmednahawk/src/snes/src/chip/21fx/serialization.cpp new file mode 100644 index 0000000000..ef82848611 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/21fx/serialization.cpp @@ -0,0 +1,31 @@ +#ifdef S21FX_CPP + +void S21fx::serialize(serializer &s) { + s.integer(mmio.status); + s.integer(mmio.shift_register); + + s.integer(mmio.data_offset); + s.integer(mmio.audio_offset); + s.integer(mmio.audio_track); + s.integer(mmio.audio_volume_left); + s.integer(mmio.audio_volume_right); + s.integer(mmio.audio_repeat); + s.integer(mmio.audio_pause); + + //flush file handles and indices, as a different track may be playing, + //or the file offsets may be at the wrong location ... + + if(datafile.open()) datafile.close(); + if(datafile.open(string() << basepath << "21fx.bin", file::mode_read)) { + datafile.seek(mmio.data_offset); + } + + if(audiofile.open()) audiofile.close(); + char track[16]; + sprintf(track, "%.5u", mmio.audio_track); + if(audiofile.open(string() << basepath << "audio" << track << ".wav", file::mode_read)) { + audiofile.seek(mmio.audio_offset); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/bsx/bsx.cpp b/libmednahawk/src/snes/src/chip/bsx/bsx.cpp new file mode 100644 index 0000000000..187b4c9c90 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/bsx/bsx.cpp @@ -0,0 +1,10 @@ +#include <../base.hpp> + +#define BSX_CPP +namespace SNES { + +#include "bsx_base.cpp" +#include "bsx_cart.cpp" +#include "bsx_flash.cpp" +}; + diff --git a/libmednahawk/src/snes/src/chip/bsx/bsx.hpp b/libmednahawk/src/snes/src/chip/bsx/bsx.hpp new file mode 100644 index 0000000000..efcaaf7fea --- /dev/null +++ b/libmednahawk/src/snes/src/chip/bsx/bsx.hpp @@ -0,0 +1,71 @@ +class BSXBase : public MMIO { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + +private: + struct { + uint8 r2188, r2189, r218a, r218b; + uint8 r218c, r218d, r218e, r218f; + uint8 r2190, r2191, r2192, r2193; + uint8 r2194, r2195, r2196, r2197; + uint8 r2198, r2199, r219a, r219b; + uint8 r219c, r219d, r219e, r219f; + + uint8 r2192_counter; + uint8 r2192_hour, r2192_minute, r2192_second; + } regs; +}; + +class BSXCart : public MMIO { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + BSXCart(); + ~BSXCart(); + +private: + struct { + uint8 r[16]; + } regs; + + void update_memory_map(); +}; + +class BSXFlash : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + unsigned size() const; + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + +private: + struct { + unsigned command; + uint8 write_old; + uint8 write_new; + + bool flash_enable; + bool read_enable; + bool write_enable; + } regs; +}; + +extern BSXBase bsxbase; +extern BSXCart bsxcart; +extern BSXFlash bsxflash; diff --git a/libmednahawk/src/snes/src/chip/bsx/bsx_base.cpp b/libmednahawk/src/snes/src/chip/bsx/bsx_base.cpp new file mode 100644 index 0000000000..5dc74b48f8 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/bsx/bsx_base.cpp @@ -0,0 +1,140 @@ +#ifdef BSX_CPP + +BSXBase bsxbase; + +void BSXBase::init() { +} + +void BSXBase::enable() { + for(uint16 i = 0x2188; i <= 0x219f; i++) memory::mmio.map(i, *this); +} + +void BSXBase::power() { + reset(); +} + +void BSXBase::reset() { + memset(®s, 0x00, sizeof regs); +} + +uint8 BSXBase::mmio_read(unsigned addr) { + addr &= 0xffff; + + switch(addr) { + case 0x2188: return regs.r2188; + case 0x2189: return regs.r2189; + case 0x218a: return regs.r218a; + case 0x218c: return regs.r218c; + case 0x218e: return regs.r218e; + case 0x218f: return regs.r218f; + case 0x2190: return regs.r2190; + + case 0x2192: { + unsigned counter = regs.r2192_counter++; + if(regs.r2192_counter >= 18) regs.r2192_counter = 0; + + if(counter == 0) { + time_t rawtime; + time(&rawtime); + tm *t = localtime(&rawtime); + + regs.r2192_hour = t->tm_hour; + regs.r2192_minute = t->tm_min; + regs.r2192_second = t->tm_sec; + } + + switch(counter) { + case 0: return 0x00; //??? + case 1: return 0x00; //??? + case 2: return 0x00; //??? + case 3: return 0x00; //??? + case 4: return 0x00; //??? + case 5: return 0x01; + case 6: return 0x01; + case 7: return 0x00; + case 8: return 0x00; + case 9: return 0x00; + case 10: return regs.r2192_second; + case 11: return regs.r2192_minute; + case 12: return regs.r2192_hour; + case 13: return 0x00; //??? + case 14: return 0x00; //??? + case 15: return 0x00; //??? + case 16: return 0x00; //??? + case 17: return 0x00; //??? + } + } break; + + case 0x2193: return regs.r2193 & ~0x0c; + case 0x2194: return regs.r2194; + case 0x2196: return regs.r2196; + case 0x2197: return regs.r2197; + case 0x2199: return regs.r2199; + } + + return cpu.regs.mdr; +} + +void BSXBase::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + switch(addr) { + case 0x2188: { + regs.r2188 = data; + } break; + + case 0x2189: { + regs.r2189 = data; + } break; + + case 0x218a: { + regs.r218a = data; + } break; + + case 0x218b: { + regs.r218b = data; + } break; + + case 0x218c: { + regs.r218c = data; + } break; + + case 0x218e: { + regs.r218e = data; + } break; + + case 0x218f: { + regs.r218e >>= 1; + regs.r218e = regs.r218f - regs.r218e; + regs.r218f >>= 1; + } break; + + case 0x2191: { + regs.r2191 = data; + regs.r2192_counter = 0; + } break; + + case 0x2192: { + regs.r2190 = 0x80; + } break; + + case 0x2193: { + regs.r2193 = data; + } break; + + case 0x2194: { + regs.r2194 = data; + } break; + + case 0x2197: { + regs.r2197 = data; + } break; + + case 0x2199: { + regs.r2199 = data; + } break; + } +} + +#endif + diff --git a/libmednahawk/src/snes/src/chip/bsx/bsx_cart.cpp b/libmednahawk/src/snes/src/chip/bsx/bsx_cart.cpp new file mode 100644 index 0000000000..ce3e576e6b --- /dev/null +++ b/libmednahawk/src/snes/src/chip/bsx/bsx_cart.cpp @@ -0,0 +1,97 @@ +#ifdef BSX_CPP + +BSXCart bsxcart; + +void BSXCart::init() { +} + +void BSXCart::enable() { + for(uint16 i = 0x5000; i <= 0x5fff; i++) memory::mmio.map(i, *this); +} + +void BSXCart::power() { + reset(); +} + +void BSXCart::reset() { + for(unsigned i = 0; i < 16; i++) regs.r[i] = 0x00; + regs.r[0x07] = 0x80; + regs.r[0x08] = 0x80; + + update_memory_map(); +} + +void BSXCart::update_memory_map() { + Memory &cart = (regs.r[0x01] & 0x80) == 0x00 ? (Memory&)bsxflash : (Memory&)memory::bsxpram; + + if((regs.r[0x02] & 0x80) == 0x00) { + //LoROM mapping + bus.map(Bus::MapLinear, 0x00, 0x7d, 0x8000, 0xffff, cart); + bus.map(Bus::MapLinear, 0x80, 0xff, 0x8000, 0xffff, cart); + } else { + //HiROM mapping + bus.map(Bus::MapShadow, 0x00, 0x3f, 0x8000, 0xffff, cart); + bus.map(Bus::MapLinear, 0x40, 0x7d, 0x0000, 0xffff, cart); + bus.map(Bus::MapShadow, 0x80, 0xbf, 0x8000, 0xffff, cart); + bus.map(Bus::MapLinear, 0xc0, 0xff, 0x0000, 0xffff, cart); + } + + if(regs.r[0x03] & 0x80) { + bus.map(Bus::MapLinear, 0x60, 0x6f, 0x0000, 0xffff, memory::bsxpram); + //bus.map(Bus::MapLinear, 0x70, 0x77, 0x0000, 0xffff, memory::bsxpram); + } + + if((regs.r[0x05] & 0x80) == 0x00) { + bus.map(Bus::MapLinear, 0x40, 0x4f, 0x0000, 0xffff, memory::bsxpram); + } + + if((regs.r[0x06] & 0x80) == 0x00) { + bus.map(Bus::MapLinear, 0x50, 0x5f, 0x0000, 0xffff, memory::bsxpram); + } + + if(regs.r[0x07] & 0x80) { + bus.map(Bus::MapLinear, 0x00, 0x1f, 0x8000, 0xffff, memory::cartrom); + } + + if(regs.r[0x08] & 0x80) { + bus.map(Bus::MapLinear, 0x80, 0x9f, 0x8000, 0xffff, memory::cartrom); + } + + bus.map(Bus::MapShadow, 0x20, 0x3f, 0x6000, 0x7fff, memory::bsxpram); + bus.map(Bus::MapLinear, 0x70, 0x77, 0x0000, 0xffff, memory::bsxpram); +} + +uint8 BSXCart::mmio_read(unsigned addr) { + if((addr & 0xf0ffff) == 0x005000) { //$[00-0f]:5000 MMIO + uint8 n = (addr >> 16) & 15; + return regs.r[n]; + } + + if((addr & 0xf8f000) == 0x105000) { //$[10-17]:[5000-5fff] SRAM + return memory::bsxram.read(((addr >> 16) & 7) * 0x1000 + (addr & 0xfff)); + } + + return 0x00; +} + +void BSXCart::mmio_write(unsigned addr, uint8 data) { + if((addr & 0xf0ffff) == 0x005000) { //$[00-0f]:5000 MMIO + uint8 n = (addr >> 16) & 15; + regs.r[n] = data; + if(n == 0x0e && data & 0x80) update_memory_map(); + return; + } + + if((addr & 0xf8f000) == 0x105000) { //$[10-17]:[5000-5fff] SRAM + return memory::bsxram.write(((addr >> 16) & 7) * 0x1000 + (addr & 0xfff), data); + } +} + +BSXCart::BSXCart() { +} + +BSXCart::~BSXCart() { +} + +#endif + diff --git a/libmednahawk/src/snes/src/chip/bsx/bsx_flash.cpp b/libmednahawk/src/snes/src/chip/bsx/bsx_flash.cpp new file mode 100644 index 0000000000..ade2b87ff1 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/bsx/bsx_flash.cpp @@ -0,0 +1,119 @@ +#ifdef BSX_CPP + +BSXFlash bsxflash; + +void BSXFlash::init() {} +void BSXFlash::enable() {} + +void BSXFlash::power() { + reset(); +} + +void BSXFlash::reset() { + regs.command = 0; + regs.write_old = 0x00; + regs.write_new = 0x00; + + regs.flash_enable = false; + regs.read_enable = false; + regs.write_enable = false; + memory::bsxflash.write_protect(!regs.write_enable); +} + +unsigned BSXFlash::size() const { + return memory::bsxflash.size(); +} + +uint8 BSXFlash::read(unsigned addr) { + if(addr == 0x0002) { + if(regs.flash_enable) return 0x80; + } + + if(addr == 0x5555) { + if(regs.flash_enable) return 0x80; + } + + if(regs.read_enable && addr >= 0xff00 && addr <= 0xff13) { + //read flash cartridge vendor information + switch(addr - 0xff00) { + case 0x00: return 0x4d; + case 0x01: return 0x00; + case 0x02: return 0x50; + case 0x03: return 0x00; + case 0x04: return 0x00; + case 0x05: return 0x00; + case 0x06: return 0x2a; //0x2a = 8mbit, 0x2b = 16mbit (not known to exist, though BIOS recognizes ID) + case 0x07: return 0x00; + default: return 0x00; + } + } + + return memory::bsxflash.read(addr); +} + +void BSXFlash::write(unsigned addr, uint8 data) { + //there exist both read-only and read-write BS-X flash cartridges ... + //unfortunately, the vendor info is not stored inside memory dumps + //of BS-X flashcarts, so it is impossible to determine whether a + //given flashcart is writeable. + //however, it has been observed that LoROM-mapped BS-X carts always + //use read-write flashcarts, and HiROM-mapped BS-X carts always use + //read-only flashcarts. + //below is an unfortunately necessary workaround to this problem. + if(cartridge.mapper() == Cartridge::BSCHiROM) return; + + if((addr & 0xff0000) == 0) { + regs.write_old = regs.write_new; + regs.write_new = data; + + if(regs.write_enable && regs.write_old == regs.write_new) { + return memory::bsxflash.write(addr, data); + } + } else { + if(regs.write_enable) { + return memory::bsxflash.write(addr, data); + } + } + + if(addr == 0x0000) { + regs.command <<= 8; + regs.command |= data; + + if((regs.command & 0xffff) == 0x38d0) { + regs.flash_enable = true; + regs.read_enable = true; + } + } + + if(addr == 0x2aaa) { + regs.command <<= 8; + regs.command |= data; + } + + if(addr == 0x5555) { + regs.command <<= 8; + regs.command |= data; + + if((regs.command & 0xffffff) == 0xaa5570) { + regs.write_enable = false; + } + + if((regs.command & 0xffffff) == 0xaa55a0) { + regs.write_old = 0x00; + regs.write_new = 0x00; + regs.flash_enable = true; + regs.write_enable = true; + } + + if((regs.command & 0xffffff) == 0xaa55f0) { + regs.flash_enable = false; + regs.read_enable = false; + regs.write_enable = false; + } + + memory::bsxflash.write_protect(!regs.write_enable); + } +} + +#endif + diff --git a/libmednahawk/src/snes/src/chip/chip.hpp b/libmednahawk/src/snes/src/chip/chip.hpp new file mode 100644 index 0000000000..6ed6c7520f --- /dev/null +++ b/libmednahawk/src/snes/src/chip/chip.hpp @@ -0,0 +1,17 @@ +#include "supergameboy/supergameboy.hpp" +#include "superfx/superfx.hpp" +#include "sa1/sa1.hpp" +#include "bsx/bsx.hpp" +#include "srtc/srtc.hpp" +#include "sdd1/sdd1.hpp" +#include "spc7110/spc7110.hpp" +#include "cx4/cx4.hpp" +#include "dsp1/dsp1.hpp" +#include "dsp2/dsp2.hpp" +#include "dsp3/dsp3.hpp" +#include "dsp4/dsp4.hpp" +#include "obc1/obc1.hpp" +#include "st010/st010.hpp" +#include "st011/st011.hpp" +#include "st018/st018.hpp" +#include "21fx/21fx.hpp" diff --git a/libmednahawk/src/snes/src/chip/cx4/cx4.cpp b/libmednahawk/src/snes/src/chip/cx4/cx4.cpp new file mode 100644 index 0000000000..19bb9afc1d --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/cx4.cpp @@ -0,0 +1,210 @@ +//============= +//Cx4 emulation +//============= +//Used in Rockman X2/X3 (Megaman X2/X3) +//Portions (c) anomie, Overload, zsKnight, Nach, byuu + +#include <../base.hpp> + +#define CX4_CPP +namespace SNES { + +Cx4 cx4; + +#include "serialization.cpp" +#include "data.cpp" +#include "functions.cpp" +#include "oam.cpp" +#include "opcodes.cpp" + +void Cx4::init() { +} + +void Cx4::enable() { + bus.map(Bus::MapDirect, 0x00, 0x3f, 0x6000, 0x7fff, *this); + bus.map(Bus::MapDirect, 0x80, 0xbf, 0x6000, 0x7fff, *this); +} + +uint32 Cx4::ldr(uint8 r) { + uint16 addr = 0x0080 + (r * 3); + return (reg[addr + 0] << 0) + | (reg[addr + 1] << 8) + | (reg[addr + 2] << 16); +} + +void Cx4::str(uint8 r, uint32 data) { + uint16 addr = 0x0080 + (r * 3); + reg[addr + 0] = (data >> 0); + reg[addr + 1] = (data >> 8); + reg[addr + 2] = (data >> 16); +} + +void Cx4::mul(uint32 x, uint32 y, uint32 &rl, uint32 &rh) { + int64 rx = x & 0xffffff; + int64 ry = y & 0xffffff; + if(rx & 0x800000)rx |= ~0x7fffff; + if(ry & 0x800000)ry |= ~0x7fffff; + + rx *= ry; + + rl = (rx) & 0xffffff; + rh = (rx >> 24) & 0xffffff; +} + +uint32 Cx4::sin(uint32 rx) { + r0 = rx & 0x1ff; + if(r0 & 0x100)r0 ^= 0x1ff; + if(r0 & 0x080)r0 ^= 0x0ff; + if(rx & 0x100) { + return sin_table[r0 + 0x80]; + } else { + return sin_table[r0]; + } +} + +uint32 Cx4::cos(uint32 rx) { + return sin(rx + 0x080); +} + +void Cx4::immediate_reg(uint32 start) { + r0 = ldr(0); + for(uint32 i = start; i < 48; i++) { + if((r0 & 0x0fff) < 0x0c00) { + ram[r0 & 0x0fff] = immediate_data[i]; + } + r0++; + } + str(0, r0); +} + +void Cx4::transfer_data() { + uint32 src; + uint16 dest, count; + + src = (reg[0x40]) | (reg[0x41] << 8) | (reg[0x42] << 16); + count = (reg[0x43]) | (reg[0x44] << 8); + dest = (reg[0x45]) | (reg[0x46] << 8); + + for(uint32 i=0;i> 2; + return; + } + + switch(data) { + case 0x00: op00(); break; + case 0x01: op01(); break; + case 0x05: op05(); break; + case 0x0d: op0d(); break; + case 0x10: op10(); break; + case 0x13: op13(); break; + case 0x15: op15(); break; + case 0x1f: op1f(); break; + case 0x22: op22(); break; + case 0x25: op25(); break; + case 0x2d: op2d(); break; + case 0x40: op40(); break; + case 0x54: op54(); break; + case 0x5c: op5c(); break; + case 0x5e: op5e(); break; + case 0x60: op60(); break; + case 0x62: op62(); break; + case 0x64: op64(); break; + case 0x66: op66(); break; + case 0x68: op68(); break; + case 0x6a: op6a(); break; + case 0x6c: op6c(); break; + case 0x6e: op6e(); break; + case 0x70: op70(); break; + case 0x72: op72(); break; + case 0x74: op74(); break; + case 0x76: op76(); break; + case 0x78: op78(); break; + case 0x7a: op7a(); break; + case 0x7c: op7c(); break; + case 0x89: op89(); break; + } + } +} + +void Cx4::writeb(uint16 addr, uint8 data) { + write(addr, data); +} + +void Cx4::writew(uint16 addr, uint16 data) { + write(addr + 0, data >> 0); + write(addr + 1, data >> 8); +} + +void Cx4::writel(uint16 addr, uint32 data) { + write(addr + 0, data >> 0); + write(addr + 1, data >> 8); + write(addr + 2, data >> 16); +} + +uint8 Cx4::read(unsigned addr) { + addr &= 0x1fff; + + if(addr < 0x0c00) { + return ram[addr]; + } + + if(addr >= 0x1f00) { + return reg[addr & 0xff]; + } + + return cpu.regs.mdr; +} + +uint8 Cx4::readb(uint16 addr) { + return read(addr); +} + +uint16 Cx4::readw(uint16 addr) { + return read(addr) | (read(addr + 1) << 8); +} + +uint32 Cx4::readl(uint16 addr) { + return read(addr) | (read(addr + 1) << 8) + (read(addr + 2) << 16); +} + +void Cx4::power() { + reset(); +} + +void Cx4::reset() { + memset(ram, 0, 0x0c00); + memset(reg, 0, 0x0100); +} + +}; diff --git a/libmednahawk/src/snes/src/chip/cx4/cx4.hpp b/libmednahawk/src/snes/src/chip/cx4/cx4.hpp new file mode 100644 index 0000000000..acd44b9e3e --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/cx4.hpp @@ -0,0 +1,95 @@ +class Cx4 : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void serialize(serializer&); + +private: + uint8 ram[0x0c00]; + uint8 reg[0x0100]; + uint32 r0, r1, r2, r3, r4, r5, r6, r7, + r8, r9, r10, r11, r12, r13, r14, r15; + + static const uint8 immediate_data[48]; + static const uint16 wave_data[40]; + static const uint32 sin_table[256]; + + static const int16 SinTable[512]; + static const int16 CosTable[512]; + + int16 C4WFXVal, C4WFYVal, C4WFZVal, C4WFX2Val, C4WFY2Val, C4WFDist, C4WFScale; + int16 C41FXVal, C41FYVal, C41FAngleRes, C41FDist, C41FDistVal; + + void C4TransfWireFrame(); + void C4TransfWireFrame2(); + void C4CalcWireFrame(); + void C4DrawLine(int32 X1, int32 Y1, int16 Z1, int32 X2, int32 Y2, int16 Z2, uint8 Color); + void C4DrawWireFrame(); + void C4DoScaleRotate(int row_padding); + +public: + uint32 ldr(uint8 r); + void str(uint8 r, uint32 data); + void mul(uint32 x, uint32 y, uint32 &rl, uint32 &rh); + uint32 sin(uint32 rx); + uint32 cos(uint32 rx); + + void transfer_data(); + void immediate_reg(uint32 num); + + void op00_00(); + void op00_03(); + void op00_05(); + void op00_07(); + void op00_08(); + void op00_0b(); + void op00_0c(); + + void op00(); + void op01(); + void op05(); + void op0d(); + void op10(); + void op13(); + void op15(); + void op1f(); + void op22(); + void op25(); + void op2d(); + void op40(); + void op54(); + void op5c(); + void op5e(); + void op60(); + void op62(); + void op64(); + void op66(); + void op68(); + void op6a(); + void op6c(); + void op6e(); + void op70(); + void op72(); + void op74(); + void op76(); + void op78(); + void op7a(); + void op7c(); + void op89(); + + uint8 readb(uint16 addr); + uint16 readw(uint16 addr); + uint32 readl(uint16 addr); + + void writeb(uint16 addr, uint8 data); + void writew(uint16 addr, uint16 data); + void writel(uint16 addr, uint32 data); +}; + +extern Cx4 cx4; diff --git a/libmednahawk/src/snes/src/chip/cx4/data.cpp b/libmednahawk/src/snes/src/chip/cx4/data.cpp new file mode 100644 index 0000000000..62df820d2c --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/data.cpp @@ -0,0 +1,187 @@ +#ifdef CX4_CPP + +const uint8 Cx4::immediate_data[48] = { + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, + 0x00, 0x80, 0x00, 0xff, 0x7f, 0x00, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0xff, + 0x00, 0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x01, 0x00, 0xff, 0xfe, 0x00 +}; + +const uint16 Cx4::wave_data[40] = { + 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000a, 0x000c, 0x000e, + 0x0200, 0x0202, 0x0204, 0x0206, 0x0208, 0x020a, 0x020c, 0x020e, + 0x0400, 0x0402, 0x0404, 0x0406, 0x0408, 0x040a, 0x040c, 0x040e, + 0x0600, 0x0602, 0x0604, 0x0606, 0x0608, 0x060a, 0x060c, 0x060e, + 0x0800, 0x0802, 0x0804, 0x0806, 0x0808, 0x080a, 0x080c, 0x080e +}; + +const uint32 Cx4::sin_table[256] = { + 0x000000, 0x000324, 0x000648, 0x00096c, 0x000c8f, 0x000fb2, 0x0012d5, 0x0015f6, + 0x001917, 0x001c37, 0x001f56, 0x002273, 0x002590, 0x0028aa, 0x002bc4, 0x002edb, + 0x0031f1, 0x003505, 0x003817, 0x003b26, 0x003e33, 0x00413e, 0x004447, 0x00474d, + 0x004a50, 0x004d50, 0x00504d, 0x005347, 0x00563e, 0x005931, 0x005c22, 0x005f0e, + 0x0061f7, 0x0064dc, 0x0067bd, 0x006a9b, 0x006d74, 0x007049, 0x007319, 0x0075e5, + 0x0078ad, 0x007b70, 0x007e2e, 0x0080e7, 0x00839c, 0x00864b, 0x0088f5, 0x008b9a, + 0x008e39, 0x0090d3, 0x009368, 0x0095f6, 0x00987f, 0x009b02, 0x009d7f, 0x009ff6, + 0x00a267, 0x00a4d2, 0x00a736, 0x00a994, 0x00abeb, 0x00ae3b, 0x00b085, 0x00b2c8, + 0x00b504, 0x00b73a, 0x00b968, 0x00bb8f, 0x00bdae, 0x00bfc7, 0x00c1d8, 0x00c3e2, + 0x00c5e4, 0x00c7de, 0x00c9d1, 0x00cbbb, 0x00cd9f, 0x00cf7a, 0x00d14d, 0x00d318, + 0x00d4db, 0x00d695, 0x00d848, 0x00d9f2, 0x00db94, 0x00dd2d, 0x00debe, 0x00e046, + 0x00e1c5, 0x00e33c, 0x00e4aa, 0x00e60f, 0x00e76b, 0x00e8bf, 0x00ea09, 0x00eb4b, + 0x00ec83, 0x00edb2, 0x00eed8, 0x00eff5, 0x00f109, 0x00f213, 0x00f314, 0x00f40b, + 0x00f4fa, 0x00f5de, 0x00f6ba, 0x00f78b, 0x00f853, 0x00f912, 0x00f9c7, 0x00fa73, + 0x00fb14, 0x00fbac, 0x00fc3b, 0x00fcbf, 0x00fd3a, 0x00fdab, 0x00fe13, 0x00fe70, + 0x00fec4, 0x00ff0e, 0x00ff4e, 0x00ff84, 0x00ffb1, 0x00ffd3, 0x00ffec, 0x00fffb, + 0x000000, 0xfffcdb, 0xfff9b7, 0xfff693, 0xfff370, 0xfff04d, 0xffed2a, 0xffea09, + 0xffe6e8, 0xffe3c8, 0xffe0a9, 0xffdd8c, 0xffda6f, 0xffd755, 0xffd43b, 0xffd124, + 0xffce0e, 0xffcafa, 0xffc7e8, 0xffc4d9, 0xffc1cc, 0xffbec1, 0xffbbb8, 0xffb8b2, + 0xffb5af, 0xffb2af, 0xffafb2, 0xffacb8, 0xffa9c1, 0xffa6ce, 0xffa3dd, 0xffa0f1, + 0xff9e08, 0xff9b23, 0xff9842, 0xff9564, 0xff928b, 0xff8fb6, 0xff8ce6, 0xff8a1a, + 0xff8752, 0xff848f, 0xff81d1, 0xff7f18, 0xff7c63, 0xff79b4, 0xff770a, 0xff7465, + 0xff71c6, 0xff6f2c, 0xff6c97, 0xff6a09, 0xff6780, 0xff64fd, 0xff6280, 0xff6009, + 0xff5d98, 0xff5b2d, 0xff58c9, 0xff566b, 0xff5414, 0xff51c4, 0xff4f7a, 0xff4d37, + 0xff4afb, 0xff48c5, 0xff4697, 0xff4470, 0xff4251, 0xff4038, 0xff3e27, 0xff3c1e, + 0xff3a1b, 0xff3821, 0xff362e, 0xff3444, 0xff3260, 0xff3085, 0xff2eb2, 0xff2ce7, + 0xff2b24, 0xff296a, 0xff27b7, 0xff260d, 0xff246b, 0xff22d2, 0xff2141, 0xff1fb9, + 0xff1e3a, 0xff1cc3, 0xff1b55, 0xff19f0, 0xff1894, 0xff1740, 0xff15f6, 0xff14b4, + 0xff137c, 0xff124d, 0xff1127, 0xff100a, 0xff0ef6, 0xff0dec, 0xff0ceb, 0xff0bf4, + 0xff0b05, 0xff0a21, 0xff0945, 0xff0874, 0xff07ac, 0xff06ed, 0xff0638, 0xff058d, + 0xff04eb, 0xff0453, 0xff03c4, 0xff0340, 0xff02c5, 0xff0254, 0xff01ec, 0xff018f, + 0xff013b, 0xff00f1, 0xff00b1, 0xff007b, 0xff004e, 0xff002c, 0xff0013, 0xff0004 +}; + +const int16 Cx4::SinTable[512] = { + 0, 402, 804, 1206, 1607, 2009, 2410, 2811, + 3211, 3611, 4011, 4409, 4808, 5205, 5602, 5997, + 6392, 6786, 7179, 7571, 7961, 8351, 8739, 9126, + 9512, 9896, 10278, 10659, 11039, 11416, 11793, 12167, + 12539, 12910, 13278, 13645, 14010, 14372, 14732, 15090, + 15446, 15800, 16151, 16499, 16846, 17189, 17530, 17869, + 18204, 18537, 18868, 19195, 19519, 19841, 20159, 20475, + 20787, 21097, 21403, 21706, 22005, 22301, 22594, 22884, + 23170, 23453, 23732, 24007, 24279, 24547, 24812, 25073, + 25330, 25583, 25832, 26077, 26319, 26557, 26790, 27020, + 27245, 27466, 27684, 27897, 28106, 28310, 28511, 28707, + 28898, 29086, 29269, 29447, 29621, 29791, 29956, 30117, + 30273, 30425, 30572, 30714, 30852, 30985, 31114, 31237, + 31357, 31471, 31581, 31685, 31785, 31881, 31971, 32057, + 32138, 32214, 32285, 32351, 32413, 32469, 32521, 32568, + 32610, 32647, 32679, 32706, 32728, 32745, 32758, 32765, + 32767, 32765, 32758, 32745, 32728, 32706, 32679, 32647, + 32610, 32568, 32521, 32469, 32413, 32351, 32285, 32214, + 32138, 32057, 31971, 31881, 31785, 31685, 31581, 31471, + 31357, 31237, 31114, 30985, 30852, 30714, 30572, 30425, + 30273, 30117, 29956, 29791, 29621, 29447, 29269, 29086, + 28898, 28707, 28511, 28310, 28106, 27897, 27684, 27466, + 27245, 27020, 26790, 26557, 26319, 26077, 25832, 25583, + 25330, 25073, 24812, 24547, 24279, 24007, 23732, 23453, + 23170, 22884, 22594, 22301, 22005, 21706, 21403, 21097, + 20787, 20475, 20159, 19841, 19519, 19195, 18868, 18537, + 18204, 17869, 17530, 17189, 16846, 16499, 16151, 15800, + 15446, 15090, 14732, 14372, 14010, 13645, 13278, 12910, + 12539, 12167, 11793, 11416, 11039, 10659, 10278, 9896, + 9512, 9126, 8739, 8351, 7961, 7571, 7179, 6786, + 6392, 5997, 5602, 5205, 4808, 4409, 4011, 3611, + 3211, 2811, 2410, 2009, 1607, 1206, 804, 402, + 0, -402, -804, -1206, -1607, -2009, -2410, -2811, + -3211, -3611, -4011, -4409, -4808, -5205, -5602, -5997, + -6392, -6786, -7179, -7571, -7961, -8351, -8739, -9126, + -9512, -9896, -10278, -10659, -11039, -11416, -11793, -12167, + -12539, -12910, -13278, -13645, -14010, -14372, -14732, -15090, + -15446, -15800, -16151, -16499, -16846, -17189, -17530, -17869, + -18204, -18537, -18868, -19195, -19519, -19841, -20159, -20475, + -20787, -21097, -21403, -21706, -22005, -22301, -22594, -22884, + -23170, -23453, -23732, -24007, -24279, -24547, -24812, -25073, + -25330, -25583, -25832, -26077, -26319, -26557, -26790, -27020, + -27245, -27466, -27684, -27897, -28106, -28310, -28511, -28707, + -28898, -29086, -29269, -29447, -29621, -29791, -29956, -30117, + -30273, -30425, -30572, -30714, -30852, -30985, -31114, -31237, + -31357, -31471, -31581, -31685, -31785, -31881, -31971, -32057, + -32138, -32214, -32285, -32351, -32413, -32469, -32521, -32568, + -32610, -32647, -32679, -32706, -32728, -32745, -32758, -32765, + -32767, -32765, -32758, -32745, -32728, -32706, -32679, -32647, + -32610, -32568, -32521, -32469, -32413, -32351, -32285, -32214, + -32138, -32057, -31971, -31881, -31785, -31685, -31581, -31471, + -31357, -31237, -31114, -30985, -30852, -30714, -30572, -30425, + -30273, -30117, -29956, -29791, -29621, -29447, -29269, -29086, + -28898, -28707, -28511, -28310, -28106, -27897, -27684, -27466, + -27245, -27020, -26790, -26557, -26319, -26077, -25832, -25583, + -25330, -25073, -24812, -24547, -24279, -24007, -23732, -23453, + -23170, -22884, -22594, -22301, -22005, -21706, -21403, -21097, + -20787, -20475, -20159, -19841, -19519, -19195, -18868, -18537, + -18204, -17869, -17530, -17189, -16846, -16499, -16151, -15800, + -15446, -15090, -14732, -14372, -14010, -13645, -13278, -12910, + -12539, -12167, -11793, -11416, -11039, -10659, -10278, -9896, + -9512, -9126, -8739, -8351, -7961, -7571, -7179, -6786, + -6392, -5997, -5602, -5205, -4808, -4409, -4011, -3611, + -3211, -2811, -2410, -2009, -1607, -1206, -804, -402 +}; + +const int16 Cx4::CosTable[512] = { + 32767, 32765, 32758, 32745, 32728, 32706, 32679, 32647, + 32610, 32568, 32521, 32469, 32413, 32351, 32285, 32214, + 32138, 32057, 31971, 31881, 31785, 31685, 31581, 31471, + 31357, 31237, 31114, 30985, 30852, 30714, 30572, 30425, + 30273, 30117, 29956, 29791, 29621, 29447, 29269, 29086, + 28898, 28707, 28511, 28310, 28106, 27897, 27684, 27466, + 27245, 27020, 26790, 26557, 26319, 26077, 25832, 25583, + 25330, 25073, 24812, 24547, 24279, 24007, 23732, 23453, + 23170, 22884, 22594, 22301, 22005, 21706, 21403, 21097, + 20787, 20475, 20159, 19841, 19519, 19195, 18868, 18537, + 18204, 17869, 17530, 17189, 16846, 16499, 16151, 15800, + 15446, 15090, 14732, 14372, 14010, 13645, 13278, 12910, + 12539, 12167, 11793, 11416, 11039, 10659, 10278, 9896, + 9512, 9126, 8739, 8351, 7961, 7571, 7179, 6786, + 6392, 5997, 5602, 5205, 4808, 4409, 4011, 3611, + 3211, 2811, 2410, 2009, 1607, 1206, 804, 402, + 0, -402, -804, -1206, -1607, -2009, -2410, -2811, + -3211, -3611, -4011, -4409, -4808, -5205, -5602, -5997, + -6392, -6786, -7179, -7571, -7961, -8351, -8739, -9126, + -9512, -9896, -10278, -10659, -11039, -11416, -11793, -12167, + -12539, -12910, -13278, -13645, -14010, -14372, -14732, -15090, + -15446, -15800, -16151, -16499, -16846, -17189, -17530, -17869, + -18204, -18537, -18868, -19195, -19519, -19841, -20159, -20475, + -20787, -21097, -21403, -21706, -22005, -22301, -22594, -22884, + -23170, -23453, -23732, -24007, -24279, -24547, -24812, -25073, + -25330, -25583, -25832, -26077, -26319, -26557, -26790, -27020, + -27245, -27466, -27684, -27897, -28106, -28310, -28511, -28707, + -28898, -29086, -29269, -29447, -29621, -29791, -29956, -30117, + -30273, -30425, -30572, -30714, -30852, -30985, -31114, -31237, + -31357, -31471, -31581, -31685, -31785, -31881, -31971, -32057, + -32138, -32214, -32285, -32351, -32413, -32469, -32521, -32568, + -32610, -32647, -32679, -32706, -32728, -32745, -32758, -32765, + -32767, -32765, -32758, -32745, -32728, -32706, -32679, -32647, + -32610, -32568, -32521, -32469, -32413, -32351, -32285, -32214, + -32138, -32057, -31971, -31881, -31785, -31685, -31581, -31471, + -31357, -31237, -31114, -30985, -30852, -30714, -30572, -30425, + -30273, -30117, -29956, -29791, -29621, -29447, -29269, -29086, + -28898, -28707, -28511, -28310, -28106, -27897, -27684, -27466, + -27245, -27020, -26790, -26557, -26319, -26077, -25832, -25583, + -25330, -25073, -24812, -24547, -24279, -24007, -23732, -23453, + -23170, -22884, -22594, -22301, -22005, -21706, -21403, -21097, + -20787, -20475, -20159, -19841, -19519, -19195, -18868, -18537, + -18204, -17869, -17530, -17189, -16846, -16499, -16151, -15800, + -15446, -15090, -14732, -14372, -14010, -13645, -13278, -12910, + -12539, -12167, -11793, -11416, -11039, -10659, -10278, -9896, + -9512, -9126, -8739, -8351, -7961, -7571, -7179, -6786, + -6392, -5997, -5602, -5205, -4808, -4409, -4011, -3611, + -3211, -2811, -2410, -2009, -1607, -1206, -804, -402, + 0, 402, 804, 1206, 1607, 2009, 2410, 2811, + 3211, 3611, 4011, 4409, 4808, 5205, 5602, 5997, + 6392, 6786, 7179, 7571, 7961, 8351, 8739, 9126, + 9512, 9896, 10278, 10659, 11039, 11416, 11793, 12167, + 12539, 12910, 13278, 13645, 14010, 14372, 14732, 15090, + 15446, 15800, 16151, 16499, 16846, 17189, 17530, 17869, + 18204, 18537, 18868, 19195, 19519, 19841, 20159, 20475, + 20787, 21097, 21403, 21706, 22005, 22301, 22594, 22884, + 23170, 23453, 23732, 24007, 24279, 24547, 24812, 25073, + 25330, 25583, 25832, 26077, 26319, 26557, 26790, 27020, + 27245, 27466, 27684, 27897, 28106, 28310, 28511, 28707, + 28898, 29086, 29269, 29447, 29621, 29791, 29956, 30117, + 30273, 30425, 30572, 30714, 30852, 30985, 31114, 31237, + 31357, 31471, 31581, 31685, 31785, 31881, 31971, 32057, + 32138, 32214, 32285, 32351, 32413, 32469, 32521, 32568, + 32610, 32647, 32679, 32706, 32728, 32745, 32758, 32765 +}; + +#endif diff --git a/libmednahawk/src/snes/src/chip/cx4/functions.cpp b/libmednahawk/src/snes/src/chip/cx4/functions.cpp new file mode 100644 index 0000000000..c0d176413c --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/functions.cpp @@ -0,0 +1,251 @@ +#ifdef CX4_CPP + +#include +#define Tan(a) (CosTable[a] ? ((((int32)SinTable[a]) << 16) / CosTable[a]) : 0x80000000) +#define sar(b, n) ((b) >> (n)) +#ifdef PI +#undef PI +#endif +#define PI 3.1415926535897932384626433832795 + +//Wireframe Helpers +void Cx4::C4TransfWireFrame() { + double c4x = (double)C4WFXVal; + double c4y = (double)C4WFYVal; + double c4z = (double)C4WFZVal - 0x95; + double tanval, c4x2, c4y2, c4z2; + + //Rotate X + tanval = -(double)C4WFX2Val * PI * 2 / 128; + c4y2 = c4y * ::cos(tanval) - c4z * ::sin(tanval); + c4z2 = c4y * ::sin(tanval) + c4z * ::cos(tanval); + + //Rotate Y + tanval = -(double)C4WFY2Val * PI * 2 / 128; + c4x2 = c4x * ::cos(tanval) + c4z2 * ::sin(tanval); + c4z = c4x * -::sin(tanval) + c4z2 * ::cos(tanval); + + //Rotate Z + tanval = -(double)C4WFDist * PI * 2 / 128; + c4x = c4x2 * ::cos(tanval) - c4y2 * ::sin(tanval); + c4y = c4x2 * ::sin(tanval) + c4y2 * ::cos(tanval); + + //Scale + C4WFXVal = (int16)(c4x * C4WFScale / (0x90 * (c4z + 0x95)) * 0x95); + C4WFYVal = (int16)(c4y * C4WFScale / (0x90 * (c4z + 0x95)) * 0x95); +} + +void Cx4::C4CalcWireFrame() { + C4WFXVal = C4WFX2Val - C4WFXVal; + C4WFYVal = C4WFY2Val - C4WFYVal; + + if(abs(C4WFXVal) > abs(C4WFYVal)) { + C4WFDist = abs(C4WFXVal) + 1; + C4WFYVal = (256 * (long)C4WFYVal) / abs(C4WFXVal); + C4WFXVal = (C4WFXVal < 0) ? -256 : 256; + } else if(C4WFYVal != 0) { + C4WFDist = abs(C4WFYVal) + 1; + C4WFXVal = (256 * (long)C4WFXVal) / abs(C4WFYVal); + C4WFYVal = (C4WFYVal < 0) ? -256 : 256; + } else { + C4WFDist = 0; + } +} + +void Cx4::C4TransfWireFrame2() { + double c4x = (double)C4WFXVal; + double c4y = (double)C4WFYVal; + double c4z = (double)C4WFZVal; + double tanval, c4x2, c4y2, c4z2; + + //Rotate X + tanval = -(double)C4WFX2Val * PI * 2 / 128; + c4y2 = c4y * ::cos(tanval) - c4z * ::sin(tanval); + c4z2 = c4y * ::sin(tanval) + c4z * ::cos(tanval); + + //Rotate Y + tanval = -(double)C4WFY2Val * PI * 2 / 128; + c4x2 = c4x * ::cos(tanval) + c4z2 * ::sin(tanval); + c4z = c4x * -::sin(tanval) + c4z2 * ::cos(tanval); + + //Rotate Z + tanval = -(double)C4WFDist * PI * 2 / 128; + c4x = c4x2 * ::cos(tanval) - c4y2 * ::sin(tanval); + c4y = c4x2 * ::sin(tanval) + c4y2 * ::cos(tanval); + + //Scale + C4WFXVal = (int16)(c4x * C4WFScale / 0x100); + C4WFYVal = (int16)(c4y * C4WFScale / 0x100); +} + +void Cx4::C4DrawWireFrame() { + uint32 line = readl(0x1f80); + uint32 point1, point2; + int16 X1, Y1, Z1; + int16 X2, Y2, Z2; + uint8 Color; + + for(int32 i = ram[0x0295]; i > 0; i--, line += 5) { + if(bus.read(line) == 0xff && bus.read(line + 1) == 0xff) { + int32 tmp = line - 5; + while(bus.read(tmp + 2) == 0xff && bus.read(tmp + 3) == 0xff && (tmp + 2) >= 0) { tmp -= 5; } + point1 = (read(0x1f82) << 16) | (bus.read(tmp + 2) << 8) | bus.read(tmp + 3); + } else { + point1 = (read(0x1f82) << 16) | (bus.read(line) << 8) | bus.read(line + 1); + } + point2 = (read(0x1f82) << 16) | (bus.read(line + 2) << 8) | bus.read(line + 3); + + X1=(bus.read(point1 + 0) << 8) | bus.read(point1 + 1); + Y1=(bus.read(point1 + 2) << 8) | bus.read(point1 + 3); + Z1=(bus.read(point1 + 4) << 8) | bus.read(point1 + 5); + X2=(bus.read(point2 + 0) << 8) | bus.read(point2 + 1); + Y2=(bus.read(point2 + 2) << 8) | bus.read(point2 + 3); + Z2=(bus.read(point2 + 4) << 8) | bus.read(point2 + 5); + Color = bus.read(line + 4); + C4DrawLine(X1, Y1, Z1, X2, Y2, Z2, Color); + } +} + +void Cx4::C4DrawLine(int32 X1, int32 Y1, int16 Z1, int32 X2, int32 Y2, int16 Z2, uint8 Color) { + //Transform coordinates + C4WFXVal = (int16)X1; + C4WFYVal = (int16)Y1; + C4WFZVal = Z1; + C4WFScale = read(0x1f90); + C4WFX2Val = read(0x1f86); + C4WFY2Val = read(0x1f87); + C4WFDist = read(0x1f88); + C4TransfWireFrame2(); + X1 = (C4WFXVal + 48) << 8; + Y1 = (C4WFYVal + 48) << 8; + + C4WFXVal = (int16)X2; + C4WFYVal = (int16)Y2; + C4WFZVal = Z2; + C4TransfWireFrame2(); + X2 = (C4WFXVal + 48) << 8; + Y2 = (C4WFYVal + 48) << 8; + + //Get line info + C4WFXVal = (int16)(X1 >> 8); + C4WFYVal = (int16)(Y1 >> 8); + C4WFX2Val = (int16)(X2 >> 8); + C4WFY2Val = (int16)(Y2 >> 8); + C4CalcWireFrame(); + X2 = (int16)C4WFXVal; + Y2 = (int16)C4WFYVal; + + //Render line + for(int32 i = C4WFDist ? C4WFDist : 1; i > 0; i--) { + if(X1 > 0xff && Y1 > 0xff && X1 < 0x6000 && Y1 < 0x6000) { + uint16 addr = (((Y1 >> 8) >> 3) << 8) - (((Y1 >> 8) >> 3) << 6) + (((X1 >> 8) >> 3) << 4) + ((Y1 >> 8) & 7) * 2; + uint8 bit = 0x80 >> ((X1 >> 8) & 7); + ram[addr + 0x300] &= ~bit; + ram[addr + 0x301] &= ~bit; + if(Color & 1) ram[addr + 0x300] |= bit; + if(Color & 2) ram[addr + 0x301] |= bit; + } + X1 += X2; + Y1 += Y2; + } +} + +void Cx4::C4DoScaleRotate(int row_padding) { + int16 A, B, C, D; + + //Calculate matrix + int32 XScale = readw(0x1f8f); + int32 YScale = readw(0x1f92); + + if(XScale & 0x8000)XScale = 0x7fff; + if(YScale & 0x8000)YScale = 0x7fff; + + if(readw(0x1f80) == 0) { //no rotation + A = (int16)XScale; + B = 0; + C = 0; + D = (int16)YScale; + } else if(readw(0x1f80) == 128) { //90 degree rotation + A = 0; + B = (int16)(-YScale); + C = (int16)XScale; + D = 0; + } else if(readw(0x1f80) == 256) { //180 degree rotation + A = (int16)(-XScale); + B = 0; + C = 0; + D = (int16)(-YScale); + } else if(readw(0x1f80) == 384) { //270 degree rotation + A = 0; + B = (int16)YScale; + C = (int16)(-XScale); + D = 0; + } else { + A = (int16) sar(CosTable[readw(0x1f80) & 0x1ff] * XScale, 15); + B = (int16)(-sar(SinTable[readw(0x1f80) & 0x1ff] * YScale, 15)); + C = (int16) sar(SinTable[readw(0x1f80) & 0x1ff] * XScale, 15); + D = (int16) sar(CosTable[readw(0x1f80) & 0x1ff] * YScale, 15); + } + + //Calculate Pixel Resolution + uint8 w = read(0x1f89) & ~7; + uint8 h = read(0x1f8c) & ~7; + + //Clear the output RAM + memset(ram, 0, (w + row_padding / 4) * h / 2); + + int32 Cx = (int16)readw(0x1f83); + int32 Cy = (int16)readw(0x1f86); + + //Calculate start position (i.e. (Ox, Oy) = (0, 0)) + //The low 12 bits are fractional, so (Cx<<12) gives us the Cx we want in + //the function. We do Cx*A etc normally because the matrix parameters + //already have the fractional parts. + int32 LineX = (Cx << 12) - Cx * A - Cx * B; + int32 LineY = (Cy << 12) - Cy * C - Cy * D; + + //Start loop + uint32 X, Y; + uint8 byte; + int32 outidx = 0; + uint8 bit = 0x80; + + for(int32 y = 0; y < h; y++) { + X = LineX; + Y = LineY; + for(int32 x = 0; x < w; x++) { + if((X >> 12) >= w || (Y >> 12) >= h) { + byte = 0; + } else { + uint32 addr = (Y >> 12) * w + (X >> 12); + byte = read(0x600 + (addr >> 1)); + if(addr & 1) { byte >>= 4; } + } + + //De-bitplanify + if(byte & 1) ram[outidx ] |= bit; + if(byte & 2) ram[outidx + 1] |= bit; + if(byte & 4) ram[outidx + 16] |= bit; + if(byte & 8) ram[outidx + 17] |= bit; + + bit >>= 1; + if(!bit) { + bit = 0x80; + outidx += 32; + } + + X += A; //Add 1 to output x => add an A and a C + Y += C; + } + outidx += 2 + row_padding; + if(outidx & 0x10) { + outidx &= ~0x10; + } else { + outidx -= w * 4 + row_padding; + } + LineX += B; //Add 1 to output y => add a B and a D + LineY += D; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/cx4/oam.cpp b/libmednahawk/src/snes/src/chip/cx4/oam.cpp new file mode 100644 index 0000000000..a8306deb6a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/oam.cpp @@ -0,0 +1,228 @@ +#ifdef CX4_CPP + +//Build OAM +void Cx4::op00_00() { + uint32 oamptr = ram[0x626] << 2; + for(int32 i = 0x1fd; i > oamptr && i >= 0; i -= 4) { + //clear oam-to-be + if(i >= 0) ram[i] = 0xe0; + } + + uint16 globalx, globaly; + uint32 oamptr2; + int16 sprx, spry; + uint8 sprname, sprattr; + uint8 sprcount; + + globalx = readw(0x621); + globaly = readw(0x623); + oamptr2 = 0x200 + (ram[0x626] >> 2); + + if(!ram[0x620]) return; + + sprcount = 128 - ram[0x626]; + uint8 offset = (ram[0x626] & 3) * 2; + uint32 srcptr = 0x220; + + for(int i = ram[0x620]; i > 0 && sprcount > 0; i--, srcptr += 16) { + sprx = readw(srcptr) - globalx; + spry = readw(srcptr + 2) - globaly; + sprname = ram[srcptr + 5]; + sprattr = ram[srcptr + 4] | ram[srcptr + 6]; + + uint32 spraddr = readl(srcptr + 7); + if(bus.read(spraddr)) { + int16 x, y; + for(int sprcnt = bus.read(spraddr++); sprcnt > 0 && sprcount > 0; sprcnt--, spraddr += 4) { + x = (int8)bus.read(spraddr + 1); + if(sprattr & 0x40) { + x = -x - ((bus.read(spraddr) & 0x20) ? 16 : 8); + } + x += sprx; + if(x >= -16 && x <= 272) { + y = (int8)bus.read(spraddr + 2); + if(sprattr & 0x80) { + y = -y - ((bus.read(spraddr) & 0x20) ? 16 : 8); + } + y += spry; + if(y >= -16 && y <= 224) { + ram[oamptr ] = (uint8)x; + ram[oamptr + 1] = (uint8)y; + ram[oamptr + 2] = sprname + bus.read(spraddr + 3); + ram[oamptr + 3] = sprattr ^ (bus.read(spraddr) & 0xc0); + ram[oamptr2] &= ~(3 << offset); + if(x & 0x100) ram[oamptr2] |= 1 << offset; + if(bus.read(spraddr) & 0x20) ram[oamptr2] |= 2 << offset; + oamptr += 4; + sprcount--; + offset = (offset + 2) & 6; + if(!offset)oamptr2++; + } + } + } + } else if(sprcount > 0) { + ram[oamptr ] = (uint8)sprx; + ram[oamptr + 1] = (uint8)spry; + ram[oamptr + 2] = sprname; + ram[oamptr + 3] = sprattr; + ram[oamptr2] &= ~(3 << offset); + if(sprx & 0x100) ram[oamptr2] |= 3 << offset; + else ram[oamptr2] |= 2 << offset; + oamptr += 4; + sprcount--; + offset = (offset + 2) & 6; + if(!offset) oamptr2++; + } + } +} + +//Scale and Rotate +void Cx4::op00_03() { + C4DoScaleRotate(0); +} + +//Transform Lines +void Cx4::op00_05() { + C4WFX2Val = read(0x1f83); + C4WFY2Val = read(0x1f86); + C4WFDist = read(0x1f89); + C4WFScale = read(0x1f8c); + +//Transform Vertices +uint32 ptr = 0; + for(int32 i = readw(0x1f80); i > 0; i--, ptr += 0x10) { + C4WFXVal = readw(ptr + 1); + C4WFYVal = readw(ptr + 5); + C4WFZVal = readw(ptr + 9); + C4TransfWireFrame(); + + //Displace + writew(ptr + 1, C4WFXVal + 0x80); + writew(ptr + 5, C4WFYVal + 0x50); + } + + writew(0x600, 23); + writew(0x602, 0x60); + writew(0x605, 0x40); + writew(0x600 + 8, 23); + writew(0x602 + 8, 0x60); + writew(0x605 + 8, 0x40); + + ptr = 0xb02; + uint32 ptr2 = 0; + + for(int32 i = readw(0xb00); i > 0; i--, ptr += 2, ptr2 += 8) { + C4WFXVal = readw((read(ptr + 0) << 4) + 1); + C4WFYVal = readw((read(ptr + 0) << 4) + 5); + C4WFX2Val = readw((read(ptr + 1) << 4) + 1); + C4WFY2Val = readw((read(ptr + 1) << 4) + 5); + C4CalcWireFrame(); + writew(ptr2 + 0x600, C4WFDist ? C4WFDist : 1); + writew(ptr2 + 0x602, C4WFXVal); + writew(ptr2 + 0x605, C4WFYVal); + } +} + +//Scale and Rotate +void Cx4::op00_07() { + C4DoScaleRotate(64); +} + +//Draw Wireframe +void Cx4::op00_08() { + C4DrawWireFrame(); +} + +//Disintegrate +void Cx4::op00_0b() { + uint8 width, height; + uint32 startx, starty; + uint32 srcptr; + uint32 x, y; + int32 scalex, scaley; + int32 cx, cy; + int32 i, j; + + width = read(0x1f89); + height = read(0x1f8c); + cx = readw(0x1f80); + cy = readw(0x1f83); + + scalex = (int16)readw(0x1f86); + scaley = (int16)readw(0x1f8f); + startx = -cx * scalex + (cx << 8); + starty = -cy * scaley + (cy << 8); + srcptr = 0x600; + + for(i = 0; i < (width * height) >> 1; i++) { + write(i, 0); + } + + for(y = starty, i = 0;i < height; i++, y += scaley) { + for(x = startx, j = 0;j < width; j++, x += scalex) { + if((x >> 8) < width && (y >> 8) < height && (y >> 8) * width + (x >> 8) < 0x2000) { + uint8 pixel = (j & 1) ? (ram[srcptr] >> 4) : (ram[srcptr]); + int32 index = (y >> 11) * width * 4 + (x >> 11) * 32 + ((y >> 8) & 7) * 2; + uint8 mask = 0x80 >> ((x >> 8) & 7); + + if(pixel & 1) ram[index ] |= mask; + if(pixel & 2) ram[index + 1] |= mask; + if(pixel & 4) ram[index + 16] |= mask; + if(pixel & 8) ram[index + 17] |= mask; + } + if(j & 1) srcptr++; + } + } +} + +//Bitplane Wave +void Cx4::op00_0c() { + uint32 destptr = 0; + uint32 waveptr = read(0x1f83); + uint16 mask1 = 0xc0c0; + uint16 mask2 = 0x3f3f; + + for(int j = 0; j < 0x10; j++) { + do { + int16 height = -((int8)read(waveptr + 0xb00)) - 16; + for(int i = 0; i < 40; i++) { + uint16 temp = readw(destptr + wave_data[i]) & mask2; + if(height >= 0) { + if(height < 8) { + temp |= mask1 & readw(0xa00 + height * 2); + } else { + temp |= mask1 & 0xff00; + } + } + writew(destptr + wave_data[i], temp); + height++; + } + waveptr = (waveptr + 1) & 0x7f; + mask1 = (mask1 >> 2) | (mask1 << 6); + mask2 = (mask2 >> 2) | (mask2 << 6); + } while(mask1 != 0xc0c0); + destptr += 16; + + do { + int16 height = -((int8)read(waveptr + 0xb00)) - 16; + for(int i = 0; i < 40; i++) { + uint16 temp = readw(destptr + wave_data[i]) & mask2; + if(height >= 0) { + if(height < 8) { + temp |= mask1 & readw(0xa10 + height * 2); + } else { + temp |= mask1 & 0xff00; + } + } + writew(destptr + wave_data[i], temp); + height++; + } + waveptr = (waveptr + 1) & 0x7f; + mask1 = (mask1 >> 2) | (mask1 << 6); + mask2 = (mask2 >> 2) | (mask2 << 6); + } while(mask1 != 0xc0c0); + destptr += 16; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/cx4/opcodes.cpp b/libmednahawk/src/snes/src/chip/cx4/opcodes.cpp new file mode 100644 index 0000000000..36caf2acae --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/opcodes.cpp @@ -0,0 +1,229 @@ +#ifdef CX4_CPP + +//Sprite Functions +void Cx4::op00() { + switch(reg[0x4d]) { + case 0x00: op00_00(); break; + case 0x03: op00_03(); break; + case 0x05: op00_05(); break; + case 0x07: op00_07(); break; + case 0x08: op00_08(); break; + case 0x0b: op00_0b(); break; + case 0x0c: op00_0c(); break; + } +} + +//Draw Wireframe +void Cx4::op01() { + memset(ram + 0x300, 0, 2304); + C4DrawWireFrame(); +} + +//Propulsion +void Cx4::op05() { + int32 temp = 0x10000; + if(readw(0x1f83)) { + temp = sar((temp / readw(0x1f83)) * readw(0x1f81), 8); + } + writew(0x1f80, temp); +} + +//Set Vector length +void Cx4::op0d() { + C41FXVal = readw(0x1f80); + C41FYVal = readw(0x1f83); + C41FDistVal = readw(0x1f86); + double tanval = sqrt(((double)C41FYVal) * ((double)C41FYVal) + ((double)C41FXVal) * ((double)C41FXVal)); + tanval = (double)C41FDistVal / tanval; + C41FYVal = (int16)(((double)C41FYVal * tanval) * 0.99); + C41FXVal = (int16)(((double)C41FXVal * tanval) * 0.98); + writew(0x1f89, C41FXVal); + writew(0x1f8c, C41FYVal); +} + +//Triangle +void Cx4::op10() { + r0 = ldr(0); + r1 = ldr(1); + + r4 = r0 & 0x1ff; + + if(r1 & 0x8000)r1 |= ~0x7fff; + else r1 &= 0x7fff; + + mul(cos(r4), r1, r5, r2); + r5 = (r5 >> 16) & 0xff; + r2 = (r2 << 8) + r5; + + mul(sin(r4), r1, r5, r3); + r5 = (r5 >> 16) & 0xff; + r3 = (r3 << 8) + r5; + + str(0, r0); + str(1, r1); + str(2, r2); + str(3, r3); + str(4, r4); + str(5, r5); +} + +//Triangle +void Cx4::op13() { + r0 = ldr(0); + r1 = ldr(1); + + r4 = r0 & 0x1ff; + + mul(cos(r4), r1, r5, r2); + r5 = (r5 >> 8) & 0xffff; + r2 = (r2 << 16) + r5; + + mul(sin(r4), r1, r5, r3); + r5 = (r5 >> 8) & 0xffff; + r3 = (r3 << 16) + r5; + + str(0, r0); + str(1, r1); + str(2, r2); + str(3, r3); + str(4, r4); + str(5, r5); +} + +//Pythagorean +void Cx4::op15() { + C41FXVal = readw(0x1f80); + C41FYVal = readw(0x1f83); + C41FDist = (int16)sqrt((double)C41FXVal * (double)C41FXVal + (double)C41FYVal * (double)C41FYVal); + writew(0x1f80, C41FDist); +} + +//Calculate distance +void Cx4::op1f() { + C41FXVal = readw(0x1f80); + C41FYVal = readw(0x1f83); + if(!C41FXVal) { + C41FAngleRes = (C41FYVal > 0) ? 0x080 : 0x180; + } else { + double tanval = ((double)C41FYVal) / ((double)C41FXVal); + C41FAngleRes = (short)(atan(tanval) / (PI * 2) * 512); + C41FAngleRes = C41FAngleRes; + if(C41FXVal < 0) { + C41FAngleRes += 0x100; + } + C41FAngleRes &= 0x1ff; + } + writew(0x1f86, C41FAngleRes); +} + +//Trapezoid +void Cx4::op22() { + int16 angle1 = readw(0x1f8c) & 0x1ff; + int16 angle2 = readw(0x1f8f) & 0x1ff; + int32 tan1 = Tan(angle1); + int32 tan2 = Tan(angle2); + int16 y = readw(0x1f83) - readw(0x1f89); + int16 left, right; + + for(int32 j = 0; j < 225; j++, y++) { + if(y >= 0) { + left = sar((int32)tan1 * y, 16) - readw(0x1f80) + readw(0x1f86); + right = sar((int32)tan2 * y, 16) - readw(0x1f80) + readw(0x1f86) + readw(0x1f93); + + if(left < 0 && right < 0) { + left = 1; + right = 0; + } else if(left < 0) { + left = 0; + } else if(right < 0) { + right = 0; + } + + if(left > 255 && right > 255) { + left = 255; + right = 254; + } else if(left > 255) { + left = 255; + } else if(right > 255) { + right = 255; + } + } else { + left = 1; + right = 0; + } + ram[j + 0x800] = (uint8)left; + ram[j + 0x900] = (uint8)right; + } +} + +//Multiply +void Cx4::op25() { + r0 = ldr(0); + r1 = ldr(1); + mul(r0, r1, r0, r1); + str(0, r0); + str(1, r1); +} + +//Transform Coords +void Cx4::op2d() { + C4WFXVal = readw(0x1f81); + C4WFYVal = readw(0x1f84); + C4WFZVal = readw(0x1f87); + C4WFX2Val = read (0x1f89); + C4WFY2Val = read (0x1f8a); + C4WFDist = read (0x1f8b); + C4WFScale = readw(0x1f90); + C4TransfWireFrame2(); + writew(0x1f80, C4WFXVal); + writew(0x1f83, C4WFYVal); +} + +//Sum +void Cx4::op40() { + r0 = 0; + for(uint32 i=0;i<0x800;i++) { + r0 += ram[i]; + } + str(0, r0); +} + +//Square +void Cx4::op54() { + r0 = ldr(0); + mul(r0, r0, r1, r2); + str(1, r1); + str(2, r2); +} + +//Immediate Register +void Cx4::op5c() { + str(0, 0x000000); + immediate_reg(0); +} + +//Immediate Register (Multiple) +void Cx4::op5e() { immediate_reg( 0); } +void Cx4::op60() { immediate_reg( 3); } +void Cx4::op62() { immediate_reg( 6); } +void Cx4::op64() { immediate_reg( 9); } +void Cx4::op66() { immediate_reg(12); } +void Cx4::op68() { immediate_reg(15); } +void Cx4::op6a() { immediate_reg(18); } +void Cx4::op6c() { immediate_reg(21); } +void Cx4::op6e() { immediate_reg(24); } +void Cx4::op70() { immediate_reg(27); } +void Cx4::op72() { immediate_reg(30); } +void Cx4::op74() { immediate_reg(33); } +void Cx4::op76() { immediate_reg(36); } +void Cx4::op78() { immediate_reg(39); } +void Cx4::op7a() { immediate_reg(42); } +void Cx4::op7c() { immediate_reg(45); } + +//Immediate ROM +void Cx4::op89() { + str(0, 0x054336); + str(1, 0xffffff); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/cx4/serialization.cpp b/libmednahawk/src/snes/src/chip/cx4/serialization.cpp new file mode 100644 index 0000000000..53335dab4c --- /dev/null +++ b/libmednahawk/src/snes/src/chip/cx4/serialization.cpp @@ -0,0 +1,39 @@ +#ifdef CX4_CPP + +void Cx4::serialize(serializer &s) { + s.array(ram); + s.array(reg); + + s.integer(r0); + s.integer(r1); + s.integer(r2); + s.integer(r3); + s.integer(r4); + s.integer(r5); + s.integer(r6); + s.integer(r7); + s.integer(r8); + s.integer(r9); + s.integer(r10); + s.integer(r11); + s.integer(r12); + s.integer(r13); + s.integer(r14); + s.integer(r15); + + s.integer(C4WFXVal); + s.integer(C4WFYVal); + s.integer(C4WFZVal); + s.integer(C4WFX2Val); + s.integer(C4WFY2Val); + s.integer(C4WFDist); + s.integer(C4WFScale); + + s.integer(C41FXVal); + s.integer(C41FYVal); + s.integer(C41FAngleRes); + s.integer(C41FDist); + s.integer(C41FDistVal); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp1/dsp1.cpp b/libmednahawk/src/snes/src/chip/dsp1/dsp1.cpp new file mode 100644 index 0000000000..7e23b20754 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp1/dsp1.cpp @@ -0,0 +1,83 @@ +#include <../base.hpp> + +#define DSP1_CPP +namespace SNES { + +DSP1 dsp1; + +#include "serialization.cpp" +#include "dsp1emu.cpp" + +void DSP1::init() { +} + +void DSP1::enable() { + switch(cartridge.dsp1_mapper()) { + case Cartridge::DSP1LoROM1MB: { + bus.map(Bus::MapDirect, 0x20, 0x3f, 0x8000, 0xffff, *this); + bus.map(Bus::MapDirect, 0xa0, 0xbf, 0x8000, 0xffff, *this); + } break; + + case Cartridge::DSP1LoROM2MB: { + bus.map(Bus::MapDirect, 0x60, 0x6f, 0x0000, 0x7fff, *this); + bus.map(Bus::MapDirect, 0xe0, 0xef, 0x0000, 0x7fff, *this); + } break; + + case Cartridge::DSP1HiROM: { + bus.map(Bus::MapDirect, 0x00, 0x1f, 0x6000, 0x7fff, *this); + bus.map(Bus::MapDirect, 0x80, 0x9f, 0x6000, 0x7fff, *this); + } break; + } +} + +void DSP1::power() { + reset(); +} + +void DSP1::reset() { + dsp1.reset(); +} + +/***** + * addr_decode() + * determine whether address is accessing + * data register (DR) or status register (SR) + * -- 0 (false) = DR + * -- 1 (true ) = SR + * + * note: there is no need to bounds check addresses, + * as memory mapper will not allow DSP1 accesses outside + * of expected ranges + *****/ +bool DSP1::addr_decode(uint16 addr) { + switch(cartridge.dsp1_mapper()) { + case Cartridge::DSP1LoROM1MB: { + //$[20-3f]:[8000-bfff] = DR, $[20-3f]:[c000-ffff] = SR + return (addr >= 0xc000); + } + + case Cartridge::DSP1LoROM2MB: { + //$[60-6f]:[0000-3fff] = DR, $[60-6f]:[4000-7fff] = SR + return (addr >= 0x4000); + } + + case Cartridge::DSP1HiROM: { + //$[00-1f]:[6000-6fff] = DR, $[00-1f]:[7000-7fff] = SR + return (addr >= 0x7000); + } + } + + return 0; +} + +uint8 DSP1::read(unsigned addr) { + return (addr_decode(addr) == 0) ? dsp1.getDr() : dsp1.getSr(); +} + +void DSP1::write(unsigned addr, uint8 data) { + if(addr_decode(addr) == 0) { + dsp1.setDr(data); + } +} + +}; diff --git a/libmednahawk/src/snes/src/chip/dsp1/dsp1.hpp b/libmednahawk/src/snes/src/chip/dsp1/dsp1.hpp new file mode 100644 index 0000000000..c693a0760b --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp1/dsp1.hpp @@ -0,0 +1,20 @@ +#include "dsp1emu.hpp" + +class DSP1 : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void serialize(serializer&); + +private: + Dsp1 dsp1; + bool addr_decode(uint16 addr); +}; + +extern DSP1 dsp1; diff --git a/libmednahawk/src/snes/src/chip/dsp1/dsp1emu.cpp b/libmednahawk/src/snes/src/chip/dsp1/dsp1emu.cpp new file mode 100644 index 0000000000..f6ecd311d6 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp1/dsp1emu.cpp @@ -0,0 +1,1625 @@ +#ifdef DSP1_CPP + +// DSP-1's emulation code +// +// Based on research by Overload, The Dumper, Neviksti and Andreas Naive +// Date: June 2006 + +////////////////////////////////////////////////////////////////// + +Dsp1::Dsp1() +{ + reset(); +} + +////////////////////////////////////////////////////////////////// + +uint8 Dsp1::getSr() +{ + mSrLowByteAccess = ~mSrLowByteAccess; + if (mSrLowByteAccess) + return 0; + else + return mSr; +} + +////////////////////////////////////////////////////////////////// + +uint8 Dsp1::getDr() +{ + uint8 oDr; + + fsmStep(true, oDr); + return oDr; +} + +////////////////////////////////////////////////////////////////// + +void Dsp1::setDr(uint8 iDr) +{ + fsmStep(false, iDr); +} + +////////////////////////////////////////////////////////////////// + +void Dsp1::reset() +{ + mSr = DRC|RQM; + mSrLowByteAccess = false; + mDr = 0x0080; // Only a supposition. Is this correct? + mFreeze = false; + mFsmMajorState = WAIT_COMMAND; + memset(&shared, 0, sizeof(SharedData)); // another supposition +} + +////////////////////////////////////////////////////////////////// + +// Though the DSP-1 is unaware of the type of operation (read or write) +// we need to know what is being done by the program, as the class +// is responsible for maintaining the binding between the +// "external" and "internal" representations of the DR (data register). + +void Dsp1::fsmStep(bool read, uint8 &data) +{ + if (0 == (mSr&RQM)) return; + // Now RQM would be cleared; however, as this code is not to be used in + // a multithread environment, we will simply fake RQM operation. + // (The only exception would be Op1A's freeze.) + + // binding + if (read) + { + if (mSr&DRS) + data = static_cast(mDr>>8); + else + data = static_cast(mDr); + } + else + { + if (mSr&DRS) + { + mDr &= 0x00ff; + mDr |= data<<8; + } + else + { + mDr &= 0xff00; + mDr |= data; + } + } + + + switch (mFsmMajorState) + { + case WAIT_COMMAND: + mCommand = static_cast(mDr); + if (!(mCommand & 0xc0)) // valid command? + { + switch(mCommand) + { + // freeze cases + case 0x1a: + case 0x2a: + case 0x3a: + mFreeze = true; + break; + // normal cases + default: + mDataCounter=0; + mFsmMajorState = READ_DATA; + mSr &= ~DRC; + break; + } + } + break; + case READ_DATA: + mSr ^= DRS; + if (!(mSr&DRS)) + { + mReadBuffer[mDataCounter++] = static_cast(mDr); + if (mDataCounter >= mCommandTable[mCommand].reads) + { + (this->*mCommandTable[mCommand].callback)(mReadBuffer, mWriteBuffer); + if (0 != mCommandTable[mCommand].writes) // any output? + { + mDataCounter = 0; + mDr = static_cast(mWriteBuffer[mDataCounter]); + mFsmMajorState = WRITE_DATA; + } + else + { + mDr = 0x0080; // valid command completion + mFsmMajorState = WAIT_COMMAND; + mSr |= DRC; + } + } + } + break; + case WRITE_DATA: + mSr ^= DRS; + if (!(mSr&DRS)) + { + ++mDataCounter; + if (mDataCounter >= mCommandTable[mCommand].writes) + { + if ((mCommand == 0x0a)&&(mDr != 0x8000)) + { + // works in continuous mode + mReadBuffer[0]++; // next raster line + (this->*mCommandTable[mCommand].callback)(mReadBuffer, mWriteBuffer); + mDataCounter = 0; + mDr = static_cast(mWriteBuffer[mDataCounter]); + } + else + { + mDr = 0x0080; // valid command completion + mFsmMajorState = WAIT_COMMAND; + mSr |= DRC; + } + } + else + { + mDr = static_cast(mWriteBuffer[mDataCounter]); + } + } + break; + } + + + + // Now RQM would be set (except when executing Op1A -command equals 0x1a, 0x2a or 0x3a-). + if (mFreeze) + mSr &= ~RQM; +} + +////////////////////////////////////////////////////////////////// + +// The info on this table follows Overload's docs. + +const Dsp1::Command Dsp1::mCommandTable[0x40] = { + {&Dsp1::multiply, 2, 1}, //0x00 + {&Dsp1::attitudeA, 4, 0}, //0x01 + {&Dsp1::parameter, 7, 4}, //0x02 + {&Dsp1::subjectiveA, 3, 3}, //0x03 + {&Dsp1::triangle, 2, 2}, //0x04 + {&Dsp1::attitudeA, 4, 0}, //0x01 + {&Dsp1::project, 3, 3}, //0x06 + {&Dsp1::memoryTest, 1, 1}, //0x0f + {&Dsp1::radius, 3, 2}, //0x08 + {&Dsp1::objectiveA, 3, 3}, //0x0d + {&Dsp1::raster, 1, 4}, // 0x0a. This will normally work in continuous mode + {&Dsp1::scalarA, 3, 1}, //0x0b + {&Dsp1::rotate, 3, 2}, //0x0c + {&Dsp1::objectiveA, 3, 3}, //0x0d + {&Dsp1::target, 2, 2}, //0x0e + {&Dsp1::memoryTest, 1, 1}, //0x0f + + {&Dsp1::inverse, 2, 2}, //0x10 + {&Dsp1::attitudeB, 4, 0}, //0x11 + {&Dsp1::parameter, 7, 4}, //0x02 + {&Dsp1::subjectiveB, 3, 3}, //0x13 + {&Dsp1::gyrate, 6, 3}, //0x14 + {&Dsp1::attitudeB, 4, 0}, //0x11 + {&Dsp1::project, 3, 3}, //0x06 + {&Dsp1::memoryDump, 1, 1024}, //0x1f + {&Dsp1::range, 4, 1}, //0x18 + {&Dsp1::objectiveB, 3, 3}, //0x1d + {0, 0, 0}, // 0x1a; the chip freezes + {&Dsp1::scalarB, 3, 1}, //0x1b + {&Dsp1::polar, 6, 3}, //0x1c + {&Dsp1::objectiveB, 3, 3}, //0x1d + {&Dsp1::target, 2, 2}, //0x0e + {&Dsp1::memoryDump, 1, 1024}, //0x1f + + {&Dsp1::multiply2, 2, 1}, //0x20 + {&Dsp1::attitudeC, 4, 0}, //0x21 + {&Dsp1::parameter, 7, 4}, //0x02 + {&Dsp1::subjectiveC, 3, 3}, //0x23 + {&Dsp1::triangle, 2, 2}, //0x04 + {&Dsp1::attitudeC, 4, 0}, //0x21 + {&Dsp1::project, 3, 3}, //0x06 + {&Dsp1::memorySize, 1, 1}, //0x2f + {&Dsp1::distance, 3, 1}, //0x28 + {&Dsp1::objectiveC, 3, 3}, //0x2d + {0, 0, 0}, // 0x1a; the chip freezes + {&Dsp1::scalarC, 3, 1}, //0x2b + {&Dsp1::rotate, 3, 2}, //0x0c + {&Dsp1::objectiveC, 3, 3}, //0x2d + {&Dsp1::target, 2, 2}, //0x0e + {&Dsp1::memorySize, 1, 1}, //0x2f + + {&Dsp1::inverse, 2, 2}, //0x10 + {&Dsp1::attitudeA, 4, 0}, //0x01 + {&Dsp1::parameter, 7, 4}, //0x02 + {&Dsp1::subjectiveA, 3, 3}, //0x03 + {&Dsp1::gyrate, 6, 3}, //0x14 + {&Dsp1::attitudeA, 4, 0}, //0x01 + {&Dsp1::project, 3, 3}, //0x06 + {&Dsp1::memoryDump, 1, 1024}, //0x1f + {&Dsp1::range2, 4, 1}, //0x38 + {&Dsp1::objectiveA, 3, 3}, //0x0d + {0, 0, 0}, // 0x1a; the chip freezes + {&Dsp1::scalarA, 3, 1}, //0x0b + {&Dsp1::polar, 6, 3}, //0x1c + {&Dsp1::objectiveA, 3, 3}, //0x0d + {&Dsp1::target, 2, 2}, //0x0e + {&Dsp1::memoryDump, 1, 1024}, //0x1f +}; + +////////////////////////////////////////////////////////////////// + +void Dsp1::memoryTest(int16 *input, int16 *output) +{ + int16& Size = input[0]; + int16& Result = output[0]; + + Result = 0x0000; +} + +////////////////////////////////////////////////////////////////// + +void Dsp1::memoryDump(int16 *input, int16 *output) +{ + memcpy(output, DataRom, 1024); +} + +////////////////////////////////////////////////////////////////// + +void Dsp1::memorySize(int16 *input, int16 *output) +{ + int16& Size = output[0]; + + Size = 0x0100; +} + +////////////////////////////////////////////////////////////////// + +// 16-bit multiplication + +void Dsp1::multiply(int16 *input, int16 *output) +{ + int16& Multiplicand = input[0]; + int16& Multiplier = input[1]; + int16& Product = output[0]; + + Product = Multiplicand * Multiplier >> 15; +} + +////////////////////////////////////////////////////////////////// + +// 16-bit multiplication. 'Alternative' method. Can anyone check this carefully? + +void Dsp1::multiply2(int16 *input, int16 *output) +{ + int16& Multiplicand = input[0]; + int16& Multiplier = input[1]; + int16& Product = output[0]; + + Product = (Multiplicand * Multiplier >> 15)+1; +} + +////////////////////////////////////////////////////////////////// + +// This command determines the inverse of a floating point decimal number. + +void Dsp1::inverse(int16 *input, int16 *output) +{ + int16& Coefficient = input[0]; + int16& Exponent = input[1]; + int16& iCoefficient = output[0]; + int16& iExponent = output[1]; + + inverse(Coefficient, Exponent, iCoefficient, iExponent); +} + +////////////////////////////////////////////////////////////////// + +// Vector component calculation. Determines the X and Y components for a +// two-dimensional vector whose size and direction is known. +// Y = Radius * sin(Angle) +// X = Radius * cos(Angle) + +void Dsp1::triangle(int16 *input, int16 *output) +{ + int16& Angle = input[0]; + int16& Radius = input[1]; + int16& Y = output[0]; + int16& X = output[1]; + + Y = sin(Angle) * Radius >> 15; + X = cos(Angle) * Radius >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Determines the squared norm of a vector (X,Y,Z) +// The output is Radius = X^2+Y^2+Z^2 (double integer) + +void Dsp1::radius(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& RadiusLow = output[0]; + int16& RadiusHigh = output[1]; + + int32 Radius; + + Radius = (X * X + Y * Y + Z * Z) << 1; + RadiusLow = static_cast(Radius); + RadiusHigh = static_cast(Radius>>16); +} + +////////////////////////////////////////////////////////////////// + +// Vector size comparison. This command compares the size of the vector (X,Y,Z) and the distance (R) +// from a particular point, and so may be used to determine if a point is within the sphere or radius R. +// The output is D = X^2+Y^2+Z^2-R^2 + +void Dsp1::range(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& Radius = input[3]; + int16& Range = output[0]; + + Range = (X * X + Y * Y + Z * Z - Radius * Radius) >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Vector size comparison. 'Alternative' method. + +void Dsp1::range2(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& Radius = input[3]; + int16& Range = output[0]; + + Range = ((X * X + Y * Y + Z * Z - Radius * Radius) >> 15) + 1; +} + +////////////////////////////////////////////////////////////////// + +// This command calculates the norm of a (X,Y,Z) vector, or the distance from +// the point (X,Y,Z) to (0,0,0), as you prefer to see it. +// Distance = sqrt(X^2+Y^2+Z^2) +// The square root of a number 'a' is calculated by doing this: you +// write 'a' as b*2^2n, with 'b' between 1/4 and 1; then, you calculate +// c=sqrt(b) by using lineal interpolation between points of a +// look-up table and, finally, you output the result as c*2^n. + +void Dsp1::distance(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& Distance = output[0]; + + int32 Radius = X * X + Y * Y + Z * Z; + + if (Radius == 0) Distance = 0; + else + { + int16 C, E; + normalizeDouble(Radius, C, E); + if (E & 1) C = C * 0x4000 >> 15; + + int16 Pos = C * 0x0040 >> 15; + + int16 Node1 = DataRom[0x00d5 + Pos]; + int16 Node2 = DataRom[0x00d6 + Pos]; + + Distance = ((Node2 - Node1) * (C & 0x1ff) >> 9) + Node1; + +#if DSP1_VERSION < 0x0102 + if (Pos & 1) Distance -= (Node2 - Node1); +#endif + Distance >>= (E >> 1); + } +} + +////////////////////////////////////////////////////////////////// + +// Determines the (X2, Y2) coordinates obtained by rotating (X1, Y1) +// clockwise for an angle 'Angle'. The official documentation says +// 'counterclockwise', but it's obviously wrong (surprise! :P) +// +// In matrix notation: +// |X2| |cos(Angle) sin(Angle)| |X1| +// | | = | | | | +// |Y2| |-sin(Angle cos(Angle)| |Y1| + +void Dsp1::rotate(int16 *input, int16 *output) +{ + int16& Angle = input[0]; + int16& X1 = input[1]; + int16& Y1 = input[2]; + int16& X2 = output[0]; + int16& Y2 = output[1]; + + X2 = (Y1 * sin(Angle) >> 15) + (X1 * cos(Angle) >> 15); + Y2 = (Y1 * cos(Angle) >> 15) - (X1 * sin(Angle) >> 15); +} + +////////////////////////////////////////////////////////////////// + +// Calculate the coordinates (X2, Y2, Z2) obtained when rotating (X1, Y1, Z1) +// three-dimensionally. Rotation is done in the order of Az around the Z axis, +// Ay around the Y axis and Ax around the X axis. As occur with the "attitude" commands +// (see comments in the "gyrate" command), this doesn't match what explained in +// the official documentation, but it's coherent with what it is done in the "attitude" +// command (but not with the "gyrate" command). +// +// In matrix notation: +// |X2| |1 0 0 | |cosRy 0 -sinRy| | cosRz sinRz 0| |X1| +// |Y2| = |0 cosRx sinRx| | 0 1 0 | |-sinRz cosRz 0| |Y1| +// |Z2| |0 -sinRx cosRx| |sinRy 0 cosRy| | 0 0 1| |Z1| + +void Dsp1::polar(int16 *input, int16 *output) +{ + int16& Az = input[0]; + int16& Ay = input[1]; + int16& Ax = input[2]; + int16& X1 = input[3]; + int16& Y1 = input[4]; + int16& Z1 = input[5]; + int16& X2 = output[0]; + int16& Y2 = output[1]; + int16& Z2 = output[2]; + + int16 X, Y, Z; + + // Rotate Around Z + X = (Y1 * sin(Az) >> 15) + (X1 * cos(Az) >> 15); + Y = (Y1 * cos(Az) >> 15) - (X1 * sin(Az) >> 15); + X1 = X; Y1 = Y; + + // Rotate Around Y + Z = (X1 * sin(Ay) >> 15) + (Z1 * cos(Ay) >> 15); + X = (X1 * cos(Ay) >> 15) - (Z1 * sin(Ay) >> 15); + X2 = X; Z1 = Z; + + // Rotate Around X + Y = (Z1 * sin(Ax) >> 15) + (Y1 * cos(Ax) >> 15); + Z = (Z1 * cos(Ax) >> 15) - (Y1 * sin(Ax) >> 15); + Y2 = Y; Z2 = Z; +} + +////////////////////////////////////////////////////////////////// + +// Set up the elements of an "attitude matrix" (there are other ones): +// S | cosRz sinRz 0| |cosRy 0 -sinRy| |1 0 0 | +// MatrixA = - |-sinRz cosRz 0| | 0 1 0 | |0 cosRx sinRx| +// 2 | 0 0 1| |sinRy 0 cosRy| |0 -sinRx cosRx| +// This matrix is thought to be used within the following framework: +// let's suppose we define positive rotations around a system of orthogonal axes in this manner: +// a rotation of +90 degrees around axis3 converts axis2 into axis1 +// a rotation of +90 degrees around axis2 converts axis1 into axis3 +// a rotation of +90 degrees around axis1 converts axis3 into axis2 +// and let's suppose that we have defined a new orthonormal axes system (FLU) +// by doing the following operations about the standard one (XYZ): +// first rotating the XYZ system around Z by an angle Rz (obtaining X'Y'Z'), +// then rotating the resulting system around Y by an angle Ry (obtaining X''Y''Z'') +// and, finally, rotating the resulting system around X by an angle Rx (obtaining FLU) +// This FLU (forward/left/up) system represents an "attitude" and, then, the matrix here defined +// is the change of coordinates matrix that transform coordinates in the FLU +// system (the "object coordinates") into the standard XYZ system (the "global coordinates"), +// multiplied by a scale factor S/2, that is: +// |x| S |f| +// |y| * - = MatrixA * |l| +// |z| 2 |u| +// In a similar way, if we use the transpose of the matrix, we can transform global coordinates +// into object coordinates: +// |f| S |x| +// |l| * - = MatrixA_transposed * |y| +// |u| 2 |z| +// +// input[0]: S +// input[1]: Rz +// input[2]: Ry +// input[3]: Rx + +void Dsp1::attitudeA(int16 *input, int16 *output) +{ + int16& S = input[0]; + int16& Rz = input[1]; + int16& Ry = input[2]; + int16& Rx = input[3]; + + int16 SinRz = sin(Rz); + int16 CosRz = cos(Rz); + int16 SinRy = sin(Ry); + int16 CosRy = cos(Ry); + int16 SinRx = sin(Rx); + int16 CosRx = cos(Rx); + + S >>= 1; + + shared.MatrixA[0][0] = (S * CosRz >> 15) * CosRy >> 15; + shared.MatrixA[0][1] = ((S * SinRz >> 15) * CosRx >> 15) + (((S * CosRz >> 15) * SinRx >> 15) * SinRy >> 15); + shared.MatrixA[0][2] = ((S * SinRz >> 15) * SinRx >> 15) - (((S * CosRz >> 15) * CosRx >> 15) * SinRy >> 15); + + shared.MatrixA[1][0] = -((S * SinRz >> 15) * CosRy >> 15); + shared.MatrixA[1][1] = ((S * CosRz >> 15) * CosRx >> 15) - (((S * SinRz >> 15) * SinRx >> 15) * SinRy >> 15); + shared.MatrixA[1][2] = ((S * CosRz >> 15) * SinRx >> 15) + (((S * SinRz >> 15) * CosRx >> 15) * SinRy >> 15); + + shared.MatrixA[2][0] = S * SinRy >> 15; + shared.MatrixA[2][1] = -((S * SinRx >> 15) * CosRy >> 15); + shared.MatrixA[2][2] = (S * CosRx >> 15) * CosRy >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Same than 'attitudeA', but with a difference attitude matrix (matrixB) + +void Dsp1::attitudeB(int16 *input, int16 *output) +{ + int16& S = input[0]; + int16& Rz = input[1]; + int16& Ry = input[2]; + int16& Rx = input[3]; + + int16 SinRz = sin(Rz); + int16 CosRz = cos(Rz); + int16 SinRy = sin(Ry); + int16 CosRy = cos(Ry); + int16 SinRx = sin(Rx); + int16 CosRx = cos(Rx); + + S >>= 1; + + shared.MatrixB[0][0] = (S * CosRz >> 15) * CosRy >> 15; + shared.MatrixB[0][1] = ((S * SinRz >> 15) * CosRx >> 15) + (((S * CosRz >> 15) * SinRx >> 15) * SinRy >> 15); + shared.MatrixB[0][2] = ((S * SinRz >> 15) * SinRx >> 15) - (((S * CosRz >> 15) * CosRx >> 15) * SinRy >> 15); + + shared.MatrixB[1][0] = -((S * SinRz >> 15) * CosRy >> 15); + shared.MatrixB[1][1] = ((S * CosRz >> 15) * CosRx >> 15) - (((S * SinRz >> 15) * SinRx >> 15) * SinRy >> 15); + shared.MatrixB[1][2] = ((S * CosRz >> 15) * SinRx >> 15) + (((S * SinRz >> 15) * CosRx >> 15) * SinRy >> 15); + + shared.MatrixB[2][0] = S * SinRy >> 15; + shared.MatrixB[2][1] = -((S * SinRx >> 15) * CosRy >> 15); + shared.MatrixB[2][2] = (S * CosRx >> 15) * CosRy >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Same than 'attitudeA', but with a difference attitude matrix (matrixC) + +void Dsp1::attitudeC(int16 *input, int16 *output) +{ + int16& S = input[0]; + int16& Rz = input[1]; + int16& Ry = input[2]; + int16& Rx = input[3]; + + int16 SinRz = sin(Rz); + int16 CosRz = cos(Rz); + int16 SinRy = sin(Ry); + int16 CosRy = cos(Ry); + int16 SinRx = sin(Rx); + int16 CosRx = cos(Rx); + + S >>= 1; + + shared.MatrixC[0][0] = (S * CosRz >> 15) * CosRy >> 15; + shared.MatrixC[0][1] = ((S * SinRz >> 15) * CosRx >> 15) + (((S * CosRz >> 15) * SinRx >> 15) * SinRy >> 15); + shared.MatrixC[0][2] = ((S * SinRz >> 15) * SinRx >> 15) - (((S * CosRz >> 15) * CosRx >> 15) * SinRy >> 15); + + shared.MatrixC[1][0] = -((S * SinRz >> 15) * CosRy >> 15); + shared.MatrixC[1][1] = ((S * CosRz >> 15) * CosRx >> 15) - (((S * SinRz >> 15) * SinRx >> 15) * SinRy >> 15); + shared.MatrixC[1][2] = ((S * CosRz >> 15) * SinRx >> 15) + (((S * SinRz >> 15) * CosRx >> 15) * SinRy >> 15); + + shared.MatrixC[2][0] = S * SinRy >> 15; + shared.MatrixC[2][1] = -((S * SinRx >> 15) * CosRy >> 15); + shared.MatrixC[2][2] = (S * CosRx >> 15) * CosRy >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Convert global coordinates (X,Y,Z) to object coordinates (F,L,U) +// See the comment in "attitudeA" for a explanation about the calculation. +// +// input[0]: X ; input[1]: Y ; input[2]: Z +// output[0]: F ; output[1]: L ; output[2]: U + +void Dsp1::objectiveA(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& F = output[0]; + int16& L = output[1]; + int16& U = output[2]; + + F = (shared.MatrixA[0][0] * X >> 15) + (shared.MatrixA[1][0] * Y >> 15) + (shared.MatrixA[2][0] * Z >> 15); + L = (shared.MatrixA[0][1] * X >> 15) + (shared.MatrixA[1][1] * Y >> 15) + (shared.MatrixA[2][1] * Z >> 15); + U = (shared.MatrixA[0][2] * X >> 15) + (shared.MatrixA[1][2] * Y >> 15) + (shared.MatrixA[2][2] * Z >> 15); +} + +////////////////////////////////////////////////////////////////// + +// Same than 'objectiveA', but for the 'B' attitude + +void Dsp1::objectiveB(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& F = output[0]; + int16& L = output[1]; + int16& U = output[2]; + + F = (shared.MatrixB[0][0] * X >> 15) + (shared.MatrixB[1][0] * Y >> 15) + (shared.MatrixB[2][0] * Z >> 15); + L = (shared.MatrixB[0][1] * X >> 15) + (shared.MatrixB[1][1] * Y >> 15) + (shared.MatrixB[2][1] * Z >> 15); + U = (shared.MatrixB[0][2] * X >> 15) + (shared.MatrixB[1][2] * Y >> 15) + (shared.MatrixB[2][2] * Z >> 15); +} + +////////////////////////////////////////////////////////////////// + +// Same than 'objectiveA', but for the 'C' attitude + +void Dsp1::objectiveC(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& F = output[0]; + int16& L = output[1]; + int16& U = output[2]; + + F = (shared.MatrixC[0][0] * X >> 15) + (shared.MatrixC[1][0] * Y >> 15) + (shared.MatrixC[2][0] * Z >> 15); + L = (shared.MatrixC[0][1] * X >> 15) + (shared.MatrixC[1][1] * Y >> 15) + (shared.MatrixC[2][1] * Z >> 15); + U = (shared.MatrixC[0][2] * X >> 15) + (shared.MatrixC[1][2] * Y >> 15) + (shared.MatrixC[2][2] * Z >> 15); +} + +////////////////////////////////////////////////////////////////// + +// Convert object coordinates (F,L,U) to object coordinates (X,Y,Z) +// See the comment in "attitudeA" for a explanation about the calculation. +// +// input[0]: F ; input[1]: L ; input[2]: U +// output[0]: X ; output[1]: Y ; output[2]: Z + +void Dsp1::subjectiveA(int16 *input, int16 *output) +{ + int16& F = input[0]; + int16& L = input[1]; + int16& U = input[2]; + int16& X = output[0]; + int16& Y = output[1]; + int16& Z = output[2]; + + X = (shared.MatrixA[0][0] * F >> 15) + (shared.MatrixA[0][1] * L >> 15) + (shared.MatrixA[0][2] * U >> 15); + Y = (shared.MatrixA[1][0] * F >> 15) + (shared.MatrixA[1][1] * L >> 15) + (shared.MatrixA[1][2] * U >> 15); + Z = (shared.MatrixA[2][0] * F >> 15) + (shared.MatrixA[2][1] * L >> 15) + (shared.MatrixA[2][2] * U >> 15); +} + +////////////////////////////////////////////////////////////////// + +// Same than 'subjectiveA', but for the 'B' attitude + +void Dsp1::subjectiveB(int16 *input, int16 *output) +{ + int16& F = input[0]; + int16& L = input[1]; + int16& U = input[2]; + int16& X = output[0]; + int16& Y = output[1]; + int16& Z = output[2]; + + X = (shared.MatrixB[0][0] * F >> 15) + (shared.MatrixB[0][1] * L >> 15) + (shared.MatrixB[0][2] * U >> 15); + Y = (shared.MatrixB[1][0] * F >> 15) + (shared.MatrixB[1][1] * L >> 15) + (shared.MatrixB[1][2] * U >> 15); + Z = (shared.MatrixB[2][0] * F >> 15) + (shared.MatrixB[2][1] * L >> 15) + (shared.MatrixB[2][2] * U >> 15); +} + +////////////////////////////////////////////////////////////////// + +// Same than 'subjectiveA', but for the 'C' attitude + +void Dsp1::subjectiveC(int16 *input, int16 *output) +{ + int16& F = input[0]; + int16& L = input[1]; + int16& U = input[2]; + int16& X = output[0]; + int16& Y = output[1]; + int16& Z = output[2]; + + X = (shared.MatrixC[0][0] * F >> 15) + (shared.MatrixC[0][1] * L >> 15) + (shared.MatrixC[0][2] * U >> 15); + Y = (shared.MatrixC[1][0] * F >> 15) + (shared.MatrixC[1][1] * L >> 15) + (shared.MatrixC[1][2] * U >> 15); + Z = (shared.MatrixC[2][0] * F >> 15) + (shared.MatrixC[2][1] * L >> 15) + (shared.MatrixC[2][2] * U >> 15); +} + +////////////////////////////////////////////////////////////////// + +// This command calculates the inner product (S) of a vector (X,Y,Z) and +// the first column of MatrixA. It should be noted that that first column +// represent the global coordinates of an unity vector in the forward +// direction in the object coordinate system (coordinates (1,0,0) in the FLU +// axes system). +// +// input[0]: X ; input[1]: Y ; input[2]: Z +// output[0]: S + +void Dsp1::scalarA(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& S = output[0]; + + S = (X * shared.MatrixA[0][0] + Y * shared.MatrixA[1][0] + Z * shared.MatrixA[2][0]) >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Same than 'scalarA', but for the 'B' attitude + +void Dsp1::scalarB(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& S = output[0]; + + S = (X * shared.MatrixB[0][0] + Y * shared.MatrixB[1][0] + Z * shared.MatrixB[2][0]) >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Same than 'scalarA', but for the 'C' attitude + +void Dsp1::scalarC(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& S = output[0]; + + S = (X * shared.MatrixC[0][0] + Y * shared.MatrixC[1][0] + Z * shared.MatrixC[2][0]) >> 15; +} + +////////////////////////////////////////////////////////////////// + +// This command determines the final attitude angles after the body with attitude angles (Ax, Ay, Az) with +// respect to the global coordinates is rotated by the minor angular displacements (DeltaF, DeltaL, DeltaU). +// It means that the XYZ axes are rotated by (Ax, Ay, Az) to obtain the FLU axes and, then, these +// are rotated by (DeltaF, DeltaL, DeltaU). The command calculates and return the new FLU angles respect to the +// XYZ system (Rx, Ry, Rz) +// The formulae are: +// Rx = Ax + (DeltaU*sin(Ay)+DeltaF*cos(Ay)) +// Ry = Ay + DeltaL - tan(Ax)*(DeltaU*cos(Ay)+DeltaF*sin(Ay)) +// Rz = Az + sec(Ax)*(DeltaU*cos(Ay)-DeltaF*sin(Ay)) +// +// Now the discussion: according to the official documentation, as described in various commands, you pass from +// XYZ to FLU by doing the rotations in the order Y, X, Z. In this command, the formulae are coherent with the +// fact that Y is the first axis to do a rotation around it. However, in the "attitude" command, while the official +// document describe it that way, we have discovered, when reverse engineering the command, that the calculated +// matrix do the rotation around Y in the second place. This incoherent behaviour of various commands is, in my +// opinion, a pretty severe implementation error. However, if you only use small "minor displacements", the error term +// introduced by that incoherence should be almost negligible. + +void Dsp1::gyrate(int16 *input, int16 *output) +{ + int16& Az = input[0]; + int16& Ax = input[1]; + int16& Ay = input[2]; + int16& U = input[3]; + int16& F = input[4]; + int16& L = input[5]; + int16& Rz = output[0]; + int16& Rx = output[1]; + int16& Ry = output[2]; + + int16 CSec, ESec, CSin, C, E; + int16 SinAy = sin(Ay); + int16 CosAy = cos(Ay); + + inverse(cos(Ax), 0, CSec, ESec); + + // Rotation Around Z + normalizeDouble(U * CosAy - F * SinAy, C, E); + + E = ESec - E; + + normalize(C * CSec >> 15, C, E); + + Rz = Az + denormalizeAndClip(C, E); + + // Rotation Around X + Rx = Ax + (U * SinAy >> 15) + (F * CosAy >> 15); + + // Rotation Around Y + normalizeDouble(U * CosAy + F * SinAy, C, E); + + E = ESec - E; + + normalize(sin(Ax), CSin, E); + + normalize(-(C * (CSec * CSin >> 15) >> 15), C, E); + + Ry = Ay + denormalizeAndClip(C, E) + L; +} + +////////////////////////////////////////////////////////////////// + +const int16 Dsp1::MaxAZS_Exp[16] = { + 0x38b4, 0x38b7, 0x38ba, 0x38be, 0x38c0, 0x38c4, 0x38c7, 0x38ca, + 0x38ce, 0x38d0, 0x38d4, 0x38d7, 0x38da, 0x38dd, 0x38e0, 0x38e4 +}; + +////////////////////////////////////////////////////////////////// + + +// Set-up the projection framework. Besides returning some values, it store in RAM some values that +// will be used by the other three projection commands (raster, target an project) +// Input: +// (Fx, Fy, Fz)-> coordinates of base point (global coordinates) +// Lfe-> distance between the base point and the viewpoint (center of projection) +// Les-> distance between the base point and the screen +// Aas-> azimuth angle (0 degrees is east; 90 degrees is north) +// Azs-> zenith angle (0 degrees is zenith) +// Output: +// Vof-> raster line of imaginary center (whatever it means ;) ) +// Vva-> raster line representing the horizon line +// (Cx, Cy)-> coordinates of the projection of the center of the screen over the ground (ground coordinates) + +void Dsp1::parameter(int16 *input, int16 *output) +{ + int16& Fx = input[0]; + int16& Fy = input[1]; + int16& Fz = input[2]; + int16& Lfe = input[3]; + int16& Les = input[4]; + int16& Aas = input[5]; + int16& Azs = input[6]; + int16& Vof = output[0]; + int16& Vva = output[1]; + int16& Cx = output[2]; + int16& Cy = output[3]; + + int16 CSec, C, E; + int16 LfeNx, LfeNy, LfeNz; + int16 LesNx, LesNy, LesNz; + + // Copy Zenith angle for clipping + int16 AZS = Azs; + + // Store Les and his coefficient and exponent when normalized + shared.Les = Les; + shared.E_Les=0; + normalize(Les, shared.C_Les, shared.E_Les); + + // Store Sine and Cosine of Azimuth and Zenith angle + shared.SinAas = sin(Aas); + shared.CosAas = cos(Aas); + shared.SinAzs = sin(Azs); + shared.CosAzs = cos(Azs); + + // normal vector to the screen (norm 1, points toward the center of projection) + shared.Nx = shared.SinAzs * -shared.SinAas >> 15; + shared.Ny = shared.SinAzs * shared.CosAas >> 15; + shared.Nz = shared.CosAzs * 0x7fff >> 15; + + // horizontal vector of the screen (Hz=0, norm 1, points toward the right of the screen) + shared.Hx = shared.CosAas*0x7fff>>15; + shared.Hy = shared.SinAas*0x7fff>>15; + + // vertical vector of the screen (norm 1, points toward the top of the screen) + shared.Vx = shared.CosAzs*-shared.SinAas>>15; + shared.Vy = shared.CosAzs*shared.CosAas>>15; + shared.Vz = -shared.SinAzs*0x7fff>>15; + + LfeNx = Lfe*shared.Nx>>15; + LfeNy = Lfe*shared.Ny>>15; + LfeNz = Lfe*shared.Nz>>15; + + // Center of Projection + shared.CentreX = Fx+LfeNx; + shared.CentreY = Fy+LfeNy; + shared.CentreZ = Fz+LfeNz; + + LesNx = Les*shared.Nx>>15; + LesNy = Les*shared.Ny>>15; + LesNz = Les*shared.Nz>>15; + + // center of the screen (global coordinates) + shared.Gx=shared.CentreX-LesNx; + shared.Gy=shared.CentreY-LesNy; + shared.Gz=shared.CentreZ-LesNz; + + + E = 0; + normalize(shared.CentreZ, C, E); + + shared.CentreZ_C = C; + shared.CentreZ_E = E; + + // Determine clip boundary and clip Zenith angle if necessary + // (Why to clip? Maybe to avoid the screen can only show sky with no ground? Only a guess...) + int16 MaxAZS = MaxAZS_Exp[-E]; + + if (AZS < 0) { + MaxAZS = -MaxAZS; + if (AZS < MaxAZS + 1) AZS = MaxAZS + 1; + } else { + if (AZS > MaxAZS) AZS = MaxAZS; + } + + // Store Sine and Cosine of clipped Zenith angle + shared.SinAZS = sin(AZS); + shared.CosAZS = cos(AZS); + + // calculate the separation of (cx, cy) from the projection of + // the 'centre of projection' over the ground... (CentreZ*tg(AZS)) + inverse(shared.CosAZS, 0, shared.SecAZS_C1, shared.SecAZS_E1); + normalize(C * shared.SecAZS_C1 >> 15, C, E); + E += shared.SecAZS_E1; + C = denormalizeAndClip(C, E) * shared.SinAZS >> 15; + + // ... and then take into account the position of the centre of + // projection and the azimuth angle + shared.CentreX += C * shared.SinAas >> 15; + shared.CentreY -= C * shared.CosAas >> 15; + + Cx = shared.CentreX; + Cy = shared.CentreY; + + // Raster number of imaginary center and horizontal line + Vof = 0; + + if ((Azs != AZS) || (Azs == MaxAZS)) + { + // correct vof and vva when Azs is outside the 'non-clipping interval' + // we have only some few Taylor coefficients, so we cannot guess which ones + // are the approximated functions and, what is worse, we don't know why + // the own clipping stuff (and, particularly, this correction) is done + if (Azs == -32768) Azs = -32767; + + C = Azs - MaxAZS; + if (C >= 0) C--; + int16 Aux = ~(C << 2); + + // Vof += x+(1/3)*x^3, where x ranges from 0 to PI/4 when Azs-MaxAZS goes from 0 to 0x2000 + C = Aux * DataRom[0x0328] >> 15; + C = (C * Aux >> 15) + DataRom[0x0327]; + Vof -= (C * Aux >> 15) * Les >> 15; + + // CosAZS *= 1+(1/2)*x^2+(5/24)*x^24, where x ranges from 0 to PI/4 when Azs-MaxAZS goes from 0 to 0x2000 + C = Aux * Aux >> 15; + Aux = (C * DataRom[0x0324] >> 15) + DataRom[0x0325]; + shared.CosAZS += (C * Aux >> 15) * shared.CosAZS >> 15; + } + + // vertical offset of the screen with regard to the horizontal plane + // containing the centre of projection + shared.VOffset = Les * shared.CosAZS >> 15; + + // The horizon line (the line in the screen that is crossed by the horizon plane + // -the horizontal plane containing the 'centre of projection'-), + // will be at distance Les*cotg(AZS) from the centre of the screen. This is difficult + // to explain but easily seen in a graph. To better see it, consider it in this way: + // Les*tg(AZS-90), draw some lines and apply basic trigonometry. ;) + inverse(shared.SinAZS, 0, CSec, E); + normalize(shared.VOffset, C, E); + normalize(C * CSec >> 15, C, E); + + if (C == -32768) { C >>= 1; E++; } + + Vva = denormalizeAndClip(-C, E); + + // Store Secant of clipped Zenith angle + inverse(shared.CosAZS, 0, shared.SecAZS_C2, shared.SecAZS_E2); +} + +////////////////////////////////////////////////////////////////// + +// Calculates the matrix which transform an object situated on a raster line (Vs) into +// his projection over the ground. The modified SecAZS is used here, so +// i don't understand the fine details, but, basically, it's done +// this way: The vertical offset between the point of projection and the +// raster line is calculated (Vs*SinAzs>>15)+VOffset, then the height of +// the center of projection is measured in that units (*CentreZ_C). If, now +// you consider the "reference case" (center of projection at an unit of height), +// the projection of a thin strip containing the raster line will have the same +// width (as the raster line would be on the ground in this case, but will suffer a +// change of scale in height (as the ground and the vertical axis would form an angle of 180-Azs degrees). +// This scale factor, when the angle 'center of screen-center of projection-raster line' is small, +// can be aproximated by the one of the center of the screen, 1/cos(Azs).(**) (Here is when it's used +// SecAZS). By last, you have to consider the effect of the azimuth angle Aas, and you are done. +// +// Using matrix notation: +// |A B| Centre_ZS | cos(Aas) -sin(Aas)| |1 0| +// ProjectionMatrix = | | = ----------- * | | * | | +// |C D| Vs*sin(Azs) |sin(Aas) cos(Aas)| |0 sec(Azs)| +// +// (**) +// If Les=1, the vertical offset between the center +// of projection and the center of the screen is Cos(Azs); then, if the vertical +// offset is 1, the ratio of the projection over the ground respect to the +// line on the screen is 1/cos(Azs). + +void Dsp1::raster(int16 *input, int16 *output) +{ + int16& Vs = input[0]; + int16& An = output[0]; + int16& Bn = output[1]; + int16& Cn = output[2]; + int16& Dn = output[3]; + + int16 C, E, C1, E1; + + inverse((Vs * shared.SinAzs >> 15) + shared.VOffset, 7, C, E); + + E += shared.CentreZ_E; + C1 = C * shared.CentreZ_C >> 15; + + E1 = E + shared.SecAZS_E2; + + normalize(C1, C, E); + C = denormalizeAndClip(C, E); + + An = C * shared.CosAas >> 15; + Cn = C * shared.SinAas >> 15; + + normalize(C1 * shared.SecAZS_C2 >> 15, C, E1); + C = denormalizeAndClip(C, E1); + + Bn = C * -shared.SinAas >> 15; + Dn = C * shared.CosAas >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Calculate the projection over the ground of a selected point of screen +// It simply apply the projection matrix described in the "Raster" command +// to the vector (H,V) transposed, and add the result to the position of +// the centre of projection. +// The only special point to take into account is the directions on the screen: +// H is positive rightward, but V is positive downward; this is why +// the signs take that configuration + +void Dsp1::target(int16 *input, int16 *output) +{ + int16& H = input[0]; + int16& V = input[1]; + int16& X = output[0]; + int16& Y = output[1]; + + int16 C, E, C1, E1; + + inverse((V * shared.SinAzs >> 15) + shared.VOffset, 8, C, E); + + E += shared.CentreZ_E; + C1 = C * shared.CentreZ_C >> 15; + + E1 = E + shared.SecAZS_E1; + + H <<= 8; + normalize(C1, C, E); + C = denormalizeAndClip(C, E) * H >> 15; + + X = shared.CentreX + (C * shared.CosAas >> 15); + Y = shared.CentreY - (C * shared.SinAas >> 15); + + V <<= 8; + normalize(C1 * shared.SecAZS_C1 >> 15, C, E1); + C = denormalizeAndClip(C, E1) * V >> 15; + + X += C * -shared.SinAas >> 15; + Y += C * shared.CosAas >> 15; +} + +////////////////////////////////////////////////////////////////// + +// Calculation of the projection over the screen (H,V) of an object (X,Y,Z) and his +// 'enlargement ratio' (M). The positive directions on the screen are as described +// in the targe command. M is scaled down by 2^-7, that is, M==0x0100 means ratio 1:1 + + void Dsp1::project(int16 *input, int16 *output) +{ + int16& X = input[0]; + int16& Y = input[1]; + int16& Z = input[2]; + int16& H = output[0]; + int16& V = output[1]; + int16& M = output[2]; + + int32 aux, aux4; + int16 E, E2, E3, E4, E5, refE, E6, E7; + int16 C2, C4, C6, C8, C9, C10, C11, C12, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26; + int16 Px, Py, Pz; + + E4=E3=E2=E=E5=0; + + normalizeDouble(int32(X)-shared.Gx, Px, E4); + normalizeDouble(int32(Y)-shared.Gy, Py, E); + normalizeDouble(int32(Z)-shared.Gz, Pz, E3); + Px>>=1; E4--; // to avoid overflows when calculating the scalar products + Py>>=1; E--; + Pz>>=1; E3--; + + refE = (E>15); + C8=- (Py*shared.Ny>>15); + C9=- (Pz*shared.Nz>>15); + C12=C11+C8+C9; // this cannot overflow! + + aux4=C12; // de-normalization with 32-bits arithmetic + refE = 16-refE; // refE can be up to 3 + if (refE>=0) + aux4 <<=(refE); + else + aux4 >>=-(refE); + if (aux4==-1) aux4 = 0; // why? + aux4>>=1; + + aux = static_cast(shared.Les) + aux4; // Les - the scalar product of P with the normal vector of the screen + normalizeDouble(aux, C10, E2); + E2 = 15-E2; + + inverse(C10, 0, C4, E4); + C2=C4*shared.C_Les>>15; // scale factor + + + // H + E7=0; + C16= (Px*shared.Hx>>15); + C20= (Py*shared.Hy>>15); + C17=C16+C20; // scalar product of P with the normalized horizontal vector of the screen... + + C18=C17*C2>>15; // ... multiplied by the scale factor + normalize(C18, C19, E7); + H=denormalizeAndClip(C19, shared.E_Les-E2+refE+E7); + + // V + E6=0; + C21 = Px*shared.Vx>>15; + C22 = Py*shared.Vy>>15; + C23 = Pz*shared.Vz>>15; + C24=C21+C22+C23; // scalar product of P with the normalized vertical vector of the screen... + + C26=C24*C2>>15; // ... multiplied by the scale factor + normalize(C26, C25, E6); + V=denormalizeAndClip(C25, shared.E_Les-E2+refE+E6); + + // M + normalize(C2, C6, E4); + M=denormalizeAndClip(C6, E4+shared.E_Les-E2-7); // M is the scale factor divided by 2^7 +} + +////////////////////////////////////////////////////////////////// + +// Calculate the sine of the input parameter +// this is done by linear interpolation between +// the points of a look-up table + +int16 Dsp1::sin(int16 Angle) +{ + if (Angle < 0) { + if (Angle == -32768) return 0; + return -sin(-Angle); + } + int32 S = SinTable[Angle >> 8] + (MulTable[Angle & 0xff] * SinTable[0x40 + (Angle >> 8)] >> 15); + if (S > 32767) S = 32767; + return (int16) S; +} + +////////////////////////////////////////////////////////////////// + +// Calculate the cosine of the input parameter. +// It's used the same method than in sin(int16) + +int16 Dsp1::cos(int16 Angle) +{ + if (Angle < 0) { + if (Angle == -32768) return -32768; + Angle = -Angle; + } + int32 S = SinTable[0x40 + (Angle >> 8)] - (MulTable[Angle & 0xff] * SinTable[Angle >> 8] >> 15); + if (S < -32768) S = -32767; + return (int16) S; +} + +////////////////////////////////////////////////////////////////// + +// Determines the inverse of a floating point decimal number +// iCoefficient*2^iExponent = 1/(Coefficient*2^Exponent), with the output +// normalized (iCoefficient represents a number whose absolute value is between 1/2 and 1) +// To invert 'Coefficient' a first initial guess is taken from a look-up table +// and, then, two iterations of the Newton method (applied to the function +// f(x)=1/(2*x)-Coefficient) are done. This results in a close approximation (iCoefficient) to a number 'y' +// that verify Coefficient*y=1/2. This is why you have to correct the exponent by one +// unit at the end. + +void Dsp1::inverse(int16 Coefficient, int16 Exponent, int16 &iCoefficient, int16 &iExponent) +{ + // Step One: Division by Zero + if (Coefficient == 0x0000) + { + iCoefficient = 0x7fff; + iExponent = 0x002f; + } + else + { + int16 Sign = 1; + + // Step Two: Remove Sign + if (Coefficient < 0) + { + if (Coefficient < -32767) Coefficient = -32767; + Coefficient = -Coefficient; + Sign = -1; + } + + // Step Three: Normalize + while (Coefficient < 0x4000) + { + Coefficient <<= 1; + Exponent--; + } + + // Step Four: Special Case + if (Coefficient == 0x4000) + if (Sign == 1) iCoefficient = 0x7fff; + else { + iCoefficient = -0x4000; + Exponent--; + } + else { + // Step Five: Initial Guess + int16 i = DataRom[((Coefficient - 0x4000) >> 7) + 0x0065]; + + // Step Six: Iterate Newton's Method + i = (i + (-i * (Coefficient * i >> 15) >> 15)) << 1; + i = (i + (-i * (Coefficient * i >> 15) >> 15)) << 1; + + iCoefficient = i * Sign; + } + + iExponent = 1 - Exponent; + } +} + +////////////////////////////////////////////////////////////////// + +int16 Dsp1::denormalizeAndClip(int16 C, int16 E) +{ + if (E > 0) { + if (C > 0) return 32767; else if (C < 0) return -32767; + } else { + if (E < 0) return C * DataRom[0x0031 + E] >> 15; + } + return C; +} + +////////////////////////////////////////////////////////////////// + +// Normalize the input number (m), understood as ranging from -1 to 1, +// to the form: Coefficient*2^Exponent, +// where the absolute value of Coefficient is >= 1/2 +// (Coefficient>=0x4000 or Coefficient <= (int16)0xc001) + +void Dsp1::normalize(int16 m, int16 &Coefficient, int16 &Exponent) +{ + int16 i = 0x4000; + int16 e = 0; + + if (m < 0) + while ((m & i) && i) + { + i >>= 1; + e++; + } + else + while (!(m & i) && i) + { + i >>= 1; + e++; + } + + if (e > 0) + Coefficient = m * DataRom[0x21 + e] << 1; + else + Coefficient = m; + + Exponent -= e; +} + +////////////////////////////////////////////////////////////////// + +// Same than 'normalize' but with an int32 input + +void Dsp1::normalizeDouble(int32 Product, int16 &Coefficient, int16 &Exponent) +{ + int16 n = Product & 0x7fff; + int16 m = Product >> 15; + int16 i = 0x4000; + int16 e = 0; + + if (m < 0) + while ((m & i) && i) + { + i >>= 1; + e++; + } + else + while (!(m & i) && i) + { + i >>= 1; + e++; + } + + if (e > 0) + { + Coefficient = m * DataRom[0x0021 + e] << 1; + + if (e < 15) + Coefficient += n * DataRom[0x0040 - e] >> 15; + else + { + i = 0x4000; + + if (m < 0) + while ((n & i) && i) + { + i >>= 1; + e++; + } + else + while (!(n & i) && i) + { + i >>= 1; + e++; + } + + if (e > 15) + Coefficient = n * DataRom[0x0012 + e] << 1; + else + Coefficient += n; + } + } + else + Coefficient = m; + + Exponent = e; +} + +////////////////////////////////////////////////////////////////// + +// Shift to the right + +int16 Dsp1::shiftR(int16 C, int16 E) +{ + return (C * DataRom[0x0031 + E] >> 15); +} + +////////////////////////////////////////////////////////////////// + +// this is, indeed, only part of the Data ROM +const int16 Dsp1::SinTable[256] = { + 0x0000, 0x0324, 0x0647, 0x096a, 0x0c8b, 0x0fab, 0x12c8, 0x15e2, + 0x18f8, 0x1c0b, 0x1f19, 0x2223, 0x2528, 0x2826, 0x2b1f, 0x2e11, + 0x30fb, 0x33de, 0x36ba, 0x398c, 0x3c56, 0x3f17, 0x41ce, 0x447a, + 0x471c, 0x49b4, 0x4c3f, 0x4ebf, 0x5133, 0x539b, 0x55f5, 0x5842, + 0x5a82, 0x5cb4, 0x5ed7, 0x60ec, 0x62f2, 0x64e8, 0x66cf, 0x68a6, + 0x6a6d, 0x6c24, 0x6dca, 0x6f5f, 0x70e2, 0x7255, 0x73b5, 0x7504, + 0x7641, 0x776c, 0x7884, 0x798a, 0x7a7d, 0x7b5d, 0x7c29, 0x7ce3, + 0x7d8a, 0x7e1d, 0x7e9d, 0x7f09, 0x7f62, 0x7fa7, 0x7fd8, 0x7ff6, + 0x7fff, 0x7ff6, 0x7fd8, 0x7fa7, 0x7f62, 0x7f09, 0x7e9d, 0x7e1d, + 0x7d8a, 0x7ce3, 0x7c29, 0x7b5d, 0x7a7d, 0x798a, 0x7884, 0x776c, + 0x7641, 0x7504, 0x73b5, 0x7255, 0x70e2, 0x6f5f, 0x6dca, 0x6c24, + 0x6a6d, 0x68a6, 0x66cf, 0x64e8, 0x62f2, 0x60ec, 0x5ed7, 0x5cb4, + 0x5a82, 0x5842, 0x55f5, 0x539b, 0x5133, 0x4ebf, 0x4c3f, 0x49b4, + 0x471c, 0x447a, 0x41ce, 0x3f17, 0x3c56, 0x398c, 0x36ba, 0x33de, + 0x30fb, 0x2e11, 0x2b1f, 0x2826, 0x2528, 0x2223, 0x1f19, 0x1c0b, + 0x18f8, 0x15e2, 0x12c8, 0x0fab, 0x0c8b, 0x096a, 0x0647, 0x0324, + -0x0000, -0x0324, -0x0647, -0x096a, -0x0c8b, -0x0fab, -0x12c8, -0x15e2, + -0x18f8, -0x1c0b, -0x1f19, -0x2223, -0x2528, -0x2826, -0x2b1f, -0x2e11, + -0x30fb, -0x33de, -0x36ba, -0x398c, -0x3c56, -0x3f17, -0x41ce, -0x447a, + -0x471c, -0x49b4, -0x4c3f, -0x4ebf, -0x5133, -0x539b, -0x55f5, -0x5842, + -0x5a82, -0x5cb4, -0x5ed7, -0x60ec, -0x62f2, -0x64e8, -0x66cf, -0x68a6, + -0x6a6d, -0x6c24, -0x6dca, -0x6f5f, -0x70e2, -0x7255, -0x73b5, -0x7504, + -0x7641, -0x776c, -0x7884, -0x798a, -0x7a7d, -0x7b5d, -0x7c29, -0x7ce3, + -0x7d8a, -0x7e1d, -0x7e9d, -0x7f09, -0x7f62, -0x7fa7, -0x7fd8, -0x7ff6, + -0x7fff, -0x7ff6, -0x7fd8, -0x7fa7, -0x7f62, -0x7f09, -0x7e9d, -0x7e1d, + -0x7d8a, -0x7ce3, -0x7c29, -0x7b5d, -0x7a7d, -0x798a, -0x7884, -0x776c, + -0x7641, -0x7504, -0x73b5, -0x7255, -0x70e2, -0x6f5f, -0x6dca, -0x6c24, + -0x6a6d, -0x68a6, -0x66cf, -0x64e8, -0x62f2, -0x60ec, -0x5ed7, -0x5cb4, + -0x5a82, -0x5842, -0x55f5, -0x539b, -0x5133, -0x4ebf, -0x4c3f, -0x49b4, + -0x471c, -0x447a, -0x41ce, -0x3f17, -0x3c56, -0x398c, -0x36ba, -0x33de, + -0x30fb, -0x2e11, -0x2b1f, -0x2826, -0x2528, -0x2223, -0x1f19, -0x1c0b, + -0x18f8, -0x15e2, -0x12c8, -0x0fab, -0x0c8b, -0x096a, -0x0647, -0x0324}; + + ////////////////////////////////////////////////////////////////// + +// Optimised for Performance + const int16 Dsp1::MulTable[256] = { + 0x0000, 0x0003, 0x0006, 0x0009, 0x000c, 0x000f, 0x0012, 0x0015, + 0x0019, 0x001c, 0x001f, 0x0022, 0x0025, 0x0028, 0x002b, 0x002f, + 0x0032, 0x0035, 0x0038, 0x003b, 0x003e, 0x0041, 0x0045, 0x0048, + 0x004b, 0x004e, 0x0051, 0x0054, 0x0057, 0x005b, 0x005e, 0x0061, + 0x0064, 0x0067, 0x006a, 0x006d, 0x0071, 0x0074, 0x0077, 0x007a, + 0x007d, 0x0080, 0x0083, 0x0087, 0x008a, 0x008d, 0x0090, 0x0093, + 0x0096, 0x0099, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, + 0x00af, 0x00b3, 0x00b6, 0x00b9, 0x00bc, 0x00bf, 0x00c2, 0x00c5, + 0x00c9, 0x00cc, 0x00cf, 0x00d2, 0x00d5, 0x00d8, 0x00db, 0x00df, + 0x00e2, 0x00e5, 0x00e8, 0x00eb, 0x00ee, 0x00f1, 0x00f5, 0x00f8, + 0x00fb, 0x00fe, 0x0101, 0x0104, 0x0107, 0x010b, 0x010e, 0x0111, + 0x0114, 0x0117, 0x011a, 0x011d, 0x0121, 0x0124, 0x0127, 0x012a, + 0x012d, 0x0130, 0x0133, 0x0137, 0x013a, 0x013d, 0x0140, 0x0143, + 0x0146, 0x0149, 0x014d, 0x0150, 0x0153, 0x0156, 0x0159, 0x015c, + 0x015f, 0x0163, 0x0166, 0x0169, 0x016c, 0x016f, 0x0172, 0x0175, + 0x0178, 0x017c, 0x017f, 0x0182, 0x0185, 0x0188, 0x018b, 0x018e, + 0x0192, 0x0195, 0x0198, 0x019b, 0x019e, 0x01a1, 0x01a4, 0x01a8, + 0x01ab, 0x01ae, 0x01b1, 0x01b4, 0x01b7, 0x01ba, 0x01be, 0x01c1, + 0x01c4, 0x01c7, 0x01ca, 0x01cd, 0x01d0, 0x01d4, 0x01d7, 0x01da, + 0x01dd, 0x01e0, 0x01e3, 0x01e6, 0x01ea, 0x01ed, 0x01f0, 0x01f3, + 0x01f6, 0x01f9, 0x01fc, 0x0200, 0x0203, 0x0206, 0x0209, 0x020c, + 0x020f, 0x0212, 0x0216, 0x0219, 0x021c, 0x021f, 0x0222, 0x0225, + 0x0228, 0x022c, 0x022f, 0x0232, 0x0235, 0x0238, 0x023b, 0x023e, + 0x0242, 0x0245, 0x0248, 0x024b, 0x024e, 0x0251, 0x0254, 0x0258, + 0x025b, 0x025e, 0x0261, 0x0264, 0x0267, 0x026a, 0x026e, 0x0271, + 0x0274, 0x0277, 0x027a, 0x027d, 0x0280, 0x0284, 0x0287, 0x028a, + 0x028d, 0x0290, 0x0293, 0x0296, 0x029a, 0x029d, 0x02a0, 0x02a3, + 0x02a6, 0x02a9, 0x02ac, 0x02b0, 0x02b3, 0x02b6, 0x02b9, 0x02bc, + 0x02bf, 0x02c2, 0x02c6, 0x02c9, 0x02cc, 0x02cf, 0x02d2, 0x02d5, + 0x02d8, 0x02db, 0x02df, 0x02e2, 0x02e5, 0x02e8, 0x02eb, 0x02ee, + 0x02f1, 0x02f5, 0x02f8, 0x02fb, 0x02fe, 0x0301, 0x0304, 0x0307, + 0x030b, 0x030e, 0x0311, 0x0314, 0x0317, 0x031a, 0x031d, 0x0321}; + +////////////////////////////////////////////////////////////////// + +// Data ROM, as logged from a DSP-1B with the 0x1f command; +// it contains the tables and constants used by the commands. +// The tables used are: two shift tables (0x022-0x031 and 0x031-0x040 -this last one +// with an error in 0x03c which has survived to all the DSP-1 revisions-); a inverse +// table (used as initial guess) at 0x065-0x0e4; a square root table (used also +// as initial guess) at 0x0e5-0x115; two sin and cos tables (used as nodes to construct +// a interpolation curve) at, respectively, 0x116-0x197 and 0x196-0x215. +// As a curiosity, in the positions 0x21c-0x31c it's contained a +// 257-points arccos table that, apparently, have been not used anywhere +// (maybe for the MaxAZS_Exp table?). + const uint16 Dsp1::DataRom[1024] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, + 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, + 0x4000, 0x7fff, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, + 0x0100, 0x0080, 0x0040, 0x0020, 0x0001, 0x0008, 0x0004, 0x0002, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8000, 0xffe5, 0x0100, 0x7fff, 0x7f02, 0x7e08, + 0x7d12, 0x7c1f, 0x7b30, 0x7a45, 0x795d, 0x7878, 0x7797, 0x76ba, + 0x75df, 0x7507, 0x7433, 0x7361, 0x7293, 0x71c7, 0x70fe, 0x7038, + 0x6f75, 0x6eb4, 0x6df6, 0x6d3a, 0x6c81, 0x6bca, 0x6b16, 0x6a64, + 0x69b4, 0x6907, 0x685b, 0x67b2, 0x670b, 0x6666, 0x65c4, 0x6523, + 0x6484, 0x63e7, 0x634c, 0x62b3, 0x621c, 0x6186, 0x60f2, 0x6060, + 0x5fd0, 0x5f41, 0x5eb5, 0x5e29, 0x5d9f, 0x5d17, 0x5c91, 0x5c0c, + 0x5b88, 0x5b06, 0x5a85, 0x5a06, 0x5988, 0x590b, 0x5890, 0x5816, + 0x579d, 0x5726, 0x56b0, 0x563b, 0x55c8, 0x5555, 0x54e4, 0x5474, + 0x5405, 0x5398, 0x532b, 0x52bf, 0x5255, 0x51ec, 0x5183, 0x511c, + 0x50b6, 0x5050, 0x4fec, 0x4f89, 0x4f26, 0x4ec5, 0x4e64, 0x4e05, + 0x4da6, 0x4d48, 0x4cec, 0x4c90, 0x4c34, 0x4bda, 0x4b81, 0x4b28, + 0x4ad0, 0x4a79, 0x4a23, 0x49cd, 0x4979, 0x4925, 0x48d1, 0x487f, + 0x482d, 0x47dc, 0x478c, 0x473c, 0x46ed, 0x469f, 0x4651, 0x4604, + 0x45b8, 0x456c, 0x4521, 0x44d7, 0x448d, 0x4444, 0x43fc, 0x43b4, + 0x436d, 0x4326, 0x42e0, 0x429a, 0x4255, 0x4211, 0x41cd, 0x4189, + 0x4146, 0x4104, 0x40c2, 0x4081, 0x4040, 0x3fff, 0x41f7, 0x43e1, + 0x45bd, 0x478d, 0x4951, 0x4b0b, 0x4cbb, 0x4e61, 0x4fff, 0x5194, + 0x5322, 0x54a9, 0x5628, 0x57a2, 0x5914, 0x5a81, 0x5be9, 0x5d4a, + 0x5ea7, 0x5fff, 0x6152, 0x62a0, 0x63ea, 0x6530, 0x6672, 0x67b0, + 0x68ea, 0x6a20, 0x6b53, 0x6c83, 0x6daf, 0x6ed9, 0x6fff, 0x7122, + 0x7242, 0x735f, 0x747a, 0x7592, 0x76a7, 0x77ba, 0x78cb, 0x79d9, + 0x7ae5, 0x7bee, 0x7cf5, 0x7dfa, 0x7efe, 0x7fff, 0x0000, 0x0324, + 0x0647, 0x096a, 0x0c8b, 0x0fab, 0x12c8, 0x15e2, 0x18f8, 0x1c0b, + 0x1f19, 0x2223, 0x2528, 0x2826, 0x2b1f, 0x2e11, 0x30fb, 0x33de, + 0x36ba, 0x398c, 0x3c56, 0x3f17, 0x41ce, 0x447a, 0x471c, 0x49b4, + 0x4c3f, 0x4ebf, 0x5133, 0x539b, 0x55f5, 0x5842, 0x5a82, 0x5cb4, + 0x5ed7, 0x60ec, 0x62f2, 0x64e8, 0x66cf, 0x68a6, 0x6a6d, 0x6c24, + 0x6dca, 0x6f5f, 0x70e2, 0x7255, 0x73b5, 0x7504, 0x7641, 0x776c, + 0x7884, 0x798a, 0x7a7d, 0x7b5d, 0x7c29, 0x7ce3, 0x7d8a, 0x7e1d, + 0x7e9d, 0x7f09, 0x7f62, 0x7fa7, 0x7fd8, 0x7ff6, 0x7fff, 0x7ff6, + 0x7fd8, 0x7fa7, 0x7f62, 0x7f09, 0x7e9d, 0x7e1d, 0x7d8a, 0x7ce3, + 0x7c29, 0x7b5d, 0x7a7d, 0x798a, 0x7884, 0x776c, 0x7641, 0x7504, + 0x73b5, 0x7255, 0x70e2, 0x6f5f, 0x6dca, 0x6c24, 0x6a6d, 0x68a6, + 0x66cf, 0x64e8, 0x62f2, 0x60ec, 0x5ed7, 0x5cb4, 0x5a82, 0x5842, + 0x55f5, 0x539b, 0x5133, 0x4ebf, 0x4c3f, 0x49b4, 0x471c, 0x447a, + 0x41ce, 0x3f17, 0x3c56, 0x398c, 0x36ba, 0x33de, 0x30fb, 0x2e11, + 0x2b1f, 0x2826, 0x2528, 0x2223, 0x1f19, 0x1c0b, 0x18f8, 0x15e2, + 0x12c8, 0x0fab, 0x0c8b, 0x096a, 0x0647, 0x0324, 0x7fff, 0x7ff6, + 0x7fd8, 0x7fa7, 0x7f62, 0x7f09, 0x7e9d, 0x7e1d, 0x7d8a, 0x7ce3, + 0x7c29, 0x7b5d, 0x7a7d, 0x798a, 0x7884, 0x776c, 0x7641, 0x7504, + 0x73b5, 0x7255, 0x70e2, 0x6f5f, 0x6dca, 0x6c24, 0x6a6d, 0x68a6, + 0x66cf, 0x64e8, 0x62f2, 0x60ec, 0x5ed7, 0x5cb4, 0x5a82, 0x5842, + 0x55f5, 0x539b, 0x5133, 0x4ebf, 0x4c3f, 0x49b4, 0x471c, 0x447a, + 0x41ce, 0x3f17, 0x3c56, 0x398c, 0x36ba, 0x33de, 0x30fb, 0x2e11, + 0x2b1f, 0x2826, 0x2528, 0x2223, 0x1f19, 0x1c0b, 0x18f8, 0x15e2, + 0x12c8, 0x0fab, 0x0c8b, 0x096a, 0x0647, 0x0324, 0x0000, 0xfcdc, + 0xf9b9, 0xf696, 0xf375, 0xf055, 0xed38, 0xea1e, 0xe708, 0xe3f5, + 0xe0e7, 0xdddd, 0xdad8, 0xd7da, 0xd4e1, 0xd1ef, 0xcf05, 0xcc22, + 0xc946, 0xc674, 0xc3aa, 0xc0e9, 0xbe32, 0xbb86, 0xb8e4, 0xb64c, + 0xb3c1, 0xb141, 0xaecd, 0xac65, 0xaa0b, 0xa7be, 0xa57e, 0xa34c, + 0xa129, 0x9f14, 0x9d0e, 0x9b18, 0x9931, 0x975a, 0x9593, 0x93dc, + 0x9236, 0x90a1, 0x8f1e, 0x8dab, 0x8c4b, 0x8afc, 0x89bf, 0x8894, + 0x877c, 0x8676, 0x8583, 0x84a3, 0x83d7, 0x831d, 0x8276, 0x81e3, + 0x8163, 0x80f7, 0x809e, 0x8059, 0x8028, 0x800a, 0x6488, 0x0080, + 0x03ff, 0x0116, 0x0002, 0x0080, 0x4000, 0x3fd7, 0x3faf, 0x3f86, + 0x3f5d, 0x3f34, 0x3f0c, 0x3ee3, 0x3eba, 0x3e91, 0x3e68, 0x3e40, + 0x3e17, 0x3dee, 0x3dc5, 0x3d9c, 0x3d74, 0x3d4b, 0x3d22, 0x3cf9, + 0x3cd0, 0x3ca7, 0x3c7f, 0x3c56, 0x3c2d, 0x3c04, 0x3bdb, 0x3bb2, + 0x3b89, 0x3b60, 0x3b37, 0x3b0e, 0x3ae5, 0x3abc, 0x3a93, 0x3a69, + 0x3a40, 0x3a17, 0x39ee, 0x39c5, 0x399c, 0x3972, 0x3949, 0x3920, + 0x38f6, 0x38cd, 0x38a4, 0x387a, 0x3851, 0x3827, 0x37fe, 0x37d4, + 0x37aa, 0x3781, 0x3757, 0x372d, 0x3704, 0x36da, 0x36b0, 0x3686, + 0x365c, 0x3632, 0x3609, 0x35df, 0x35b4, 0x358a, 0x3560, 0x3536, + 0x350c, 0x34e1, 0x34b7, 0x348d, 0x3462, 0x3438, 0x340d, 0x33e3, + 0x33b8, 0x338d, 0x3363, 0x3338, 0x330d, 0x32e2, 0x32b7, 0x328c, + 0x3261, 0x3236, 0x320b, 0x31df, 0x31b4, 0x3188, 0x315d, 0x3131, + 0x3106, 0x30da, 0x30ae, 0x3083, 0x3057, 0x302b, 0x2fff, 0x2fd2, + 0x2fa6, 0x2f7a, 0x2f4d, 0x2f21, 0x2ef4, 0x2ec8, 0x2e9b, 0x2e6e, + 0x2e41, 0x2e14, 0x2de7, 0x2dba, 0x2d8d, 0x2d60, 0x2d32, 0x2d05, + 0x2cd7, 0x2ca9, 0x2c7b, 0x2c4d, 0x2c1f, 0x2bf1, 0x2bc3, 0x2b94, + 0x2b66, 0x2b37, 0x2b09, 0x2ada, 0x2aab, 0x2a7c, 0x2a4c, 0x2a1d, + 0x29ed, 0x29be, 0x298e, 0x295e, 0x292e, 0x28fe, 0x28ce, 0x289d, + 0x286d, 0x283c, 0x280b, 0x27da, 0x27a9, 0x2777, 0x2746, 0x2714, + 0x26e2, 0x26b0, 0x267e, 0x264c, 0x2619, 0x25e7, 0x25b4, 0x2581, + 0x254d, 0x251a, 0x24e6, 0x24b2, 0x247e, 0x244a, 0x2415, 0x23e1, + 0x23ac, 0x2376, 0x2341, 0x230b, 0x22d6, 0x229f, 0x2269, 0x2232, + 0x21fc, 0x21c4, 0x218d, 0x2155, 0x211d, 0x20e5, 0x20ad, 0x2074, + 0x203b, 0x2001, 0x1fc7, 0x1f8d, 0x1f53, 0x1f18, 0x1edd, 0x1ea1, + 0x1e66, 0x1e29, 0x1ded, 0x1db0, 0x1d72, 0x1d35, 0x1cf6, 0x1cb8, + 0x1c79, 0x1c39, 0x1bf9, 0x1bb8, 0x1b77, 0x1b36, 0x1af4, 0x1ab1, + 0x1a6e, 0x1a2a, 0x19e6, 0x19a1, 0x195c, 0x1915, 0x18ce, 0x1887, + 0x183f, 0x17f5, 0x17ac, 0x1761, 0x1715, 0x16c9, 0x167c, 0x162e, + 0x15df, 0x158e, 0x153d, 0x14eb, 0x1497, 0x1442, 0x13ec, 0x1395, + 0x133c, 0x12e2, 0x1286, 0x1228, 0x11c9, 0x1167, 0x1104, 0x109e, + 0x1036, 0x0fcc, 0x0f5f, 0x0eef, 0x0e7b, 0x0e04, 0x0d89, 0x0d0a, + 0x0c86, 0x0bfd, 0x0b6d, 0x0ad6, 0x0a36, 0x098d, 0x08d7, 0x0811, + 0x0736, 0x063e, 0x0519, 0x039a, 0x0000, 0x7fff, 0x0100, 0x0080, + 0x021d, 0x00c8, 0x00ce, 0x0048, 0x0a26, 0x277a, 0x00ce, 0x6488, + 0x14ac, 0x0001, 0x00f9, 0x00fc, 0x00ff, 0x00fc, 0x00f9, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}; + +////////////////////////////////////////////////////////////////// + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp1/dsp1emu.hpp b/libmednahawk/src/snes/src/chip/dsp1/dsp1emu.hpp new file mode 100644 index 0000000000..be9723cf66 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp1/dsp1emu.hpp @@ -0,0 +1,129 @@ +// DSP-1's emulation code +// +// Based on research by Overload, The Dumper, Neviksti and Andreas Naive +// Date: June 2006 + +#ifndef __DSP1EMUL_H +#define __DSP1EMUL_H + +#define DSP1_VERSION 0x0102 + +class Dsp1 +{ + public: + // The DSP-1 status register has 16 bits, but only + // the upper 8 bits can be accessed from an external device, so all these + // positions are referred to the upper byte (bits D8 to D15) + enum SrFlags {DRC=0x04, DRS=0x10, RQM=0x80}; + + // According to Overload's docs, these are the meanings of the flags: + // DRC: The Data Register Control (DRC) bit specifies the data transfer length to and from the host CPU. + // 0: Data transfer to and from the DSP-1 is 16 bits. + // 1: Data transfer to and from the DSP-1 is 8 bits. + // DRS: The Data Register Status (DRS) bit indicates the data transfer status in the case of transfering 16-bit data. + // 0: Data transfer has terminated. + // 1: Data transfer in progress. + // RQM: The Request for Master (RQM) indicates that the DSP1 is requesting host CPU for data read/write. + // 0: Internal Data Register Transfer. + // 1: External Data Register Transfer. + + Dsp1(); + uint8 getSr(); // return the status register's high byte + uint8 getDr(); + void setDr(uint8 iDr); + void reset(); + + void serialize(serializer&); + + private: + enum FsmMajorState {WAIT_COMMAND, READ_DATA, WRITE_DATA}; + enum MaxDataAccesses {MAX_READS=7, MAX_WRITES=1024}; + + struct Command { + void (Dsp1::*callback)(int16 *, int16 *); + unsigned int reads; + unsigned int writes; + }; + + static const Command mCommandTable[]; + static const int16 MaxAZS_Exp[16]; + static const int16 SinTable[]; + static const int16 MulTable[]; + static const uint16 DataRom[]; + + struct SharedData { // some RAM variables shared between commands + int16 MatrixA[3][3]; // attitude matrix A + int16 MatrixB[3][3]; + int16 MatrixC[3][3]; + int16 CentreX, CentreY, CentreZ; // center of projection + int16 CentreZ_C, CentreZ_E; + int16 VOffset; // vertical offset of the screen with regard to the centre of projection + int16 Les, C_Les, E_Les; + int16 SinAas, CosAas; + int16 SinAzs, CosAzs; + int16 SinAZS, CosAZS; + int16 SecAZS_C1, SecAZS_E1; + int16 SecAZS_C2, SecAZS_E2; + int16 Nx, Ny, Nz; // normal vector to the screen (norm 1, points toward the center of projection) + int16 Gx, Gy, Gz; // center of the screen (global coordinates) + int16 Hx, Hy; // horizontal vector of the screen (Hz=0, norm 1, points toward the right of the screen) + int16 Vx, Vy, Vz; // vertical vector of the screen (norm 1, points toward the top of the screen) + + } shared; + + uint8 mSr; // status register + int mSrLowByteAccess; + uint16 mDr; // "internal" representation of the data register + unsigned mFsmMajorState; // current major state of the FSM + uint8 mCommand; // current command processed by the FSM + uint8 mDataCounter; // #uint16 read/writes counter used by the FSM + int16 mReadBuffer[MAX_READS]; + int16 mWriteBuffer[MAX_WRITES]; + bool mFreeze; // need explanation? ;) + + void fsmStep(bool read, uint8 &data); // FSM logic + + // commands + void memoryTest(int16 *input, int16 *output); + void memoryDump(int16 *input, int16 *output); + void memorySize(int16 *input, int16 *output); + void multiply(int16* input, int16* output); + void multiply2(int16* input, int16* output); + void inverse(int16 *input, int16 *output); + void triangle(int16 *input, int16 *output); + void radius(int16 *input, int16 *output); + void range(int16 *input, int16 *output); + void range2(int16 *input, int16 *output); + void distance(int16 *input, int16 *output); + void rotate(int16 *input, int16 *output); + void polar(int16 *input, int16 *output); + void attitudeA(int16 *input, int16 *output); + void attitudeB(int16 *input, int16 *output); + void attitudeC(int16 *input, int16 *output); + void objectiveA(int16 *input, int16 *output); + void objectiveB(int16 *input, int16 *output); + void objectiveC(int16 *input, int16 *output); + void subjectiveA(int16 *input, int16 *output); + void subjectiveB(int16 *input, int16 *output); + void subjectiveC(int16 *input, int16 *output); + void scalarA(int16 *input, int16 *output); + void scalarB(int16 *input, int16 *output); + void scalarC(int16 *input, int16 *output); + void gyrate(int16 *input, int16 *output); + void parameter(int16 *input, int16 *output); + void raster(int16 *input, int16 *output); + void target(int16 *input, int16 *output); + void project(int16 *input, int16 *output); + + // auxiliar functions + int16 sin(int16 Angle); + int16 cos(int16 Angle); + void inverse(int16 Coefficient, int16 Exponent, int16 &iCoefficient, int16 &iExponent); + int16 denormalizeAndClip(int16 C, int16 E); + void normalize(int16 m, int16 &Coefficient, int16 &Exponent); + void normalizeDouble(int32 Product, int16 &Coefficient, int16 &Exponent); + int16 shiftR(int16 C, int16 E); +}; + +#endif + diff --git a/libmednahawk/src/snes/src/chip/dsp1/serialization.cpp b/libmednahawk/src/snes/src/chip/dsp1/serialization.cpp new file mode 100644 index 0000000000..2cb73cc74e --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp1/serialization.cpp @@ -0,0 +1,56 @@ +#ifdef DSP1_CPP + +void DSP1::serialize(serializer &s) { + dsp1.serialize(s); +} + +void Dsp1::serialize(serializer &s) { + for(unsigned i = 0; i < 3; i++) { + s.array(shared.MatrixA[i]); + s.array(shared.MatrixB[i]); + s.array(shared.MatrixC[i]); + } + + s.integer(shared.CentreX); + s.integer(shared.CentreY); + s.integer(shared.CentreZ); + s.integer(shared.CentreZ_C); + s.integer(shared.CentreZ_E); + s.integer(shared.VOffset); + s.integer(shared.Les); + s.integer(shared.C_Les); + s.integer(shared.E_Les); + s.integer(shared.SinAas); + s.integer(shared.CosAas); + s.integer(shared.SinAzs); + s.integer(shared.CosAzs); + s.integer(shared.SinAZS); + s.integer(shared.CosAZS); + s.integer(shared.SecAZS_C1); + s.integer(shared.SecAZS_E1); + s.integer(shared.SecAZS_C2); + s.integer(shared.SecAZS_E2); + s.integer(shared.Nx); + s.integer(shared.Ny); + s.integer(shared.Nz); + s.integer(shared.Gx); + s.integer(shared.Gy); + s.integer(shared.Gz); + s.integer(shared.Hx); + s.integer(shared.Hy); + s.integer(shared.Vx); + s.integer(shared.Vy); + s.integer(shared.Vz); + + s.integer(mSr); + s.integer(mSrLowByteAccess); + s.integer(mDr); + s.integer(mFsmMajorState); + s.integer(mCommand); + s.integer(mDataCounter); + s.array(mReadBuffer); + s.array(mWriteBuffer); + s.integer(mFreeze); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp2/dsp2.cpp b/libmednahawk/src/snes/src/chip/dsp2/dsp2.cpp new file mode 100644 index 0000000000..fe04592d81 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp2/dsp2.cpp @@ -0,0 +1,149 @@ +#include <../base.hpp> + +#define DSP2_CPP +namespace SNES { + +DSP2 dsp2; + +#include "serialization.cpp" +#include "opcodes.cpp" + +void DSP2::init() { +} + +void DSP2::enable() { + bus.map(Bus::MapDirect, 0x20, 0x3f, 0x6000, 0x6fff, *this); + bus.map(Bus::MapDirect, 0x20, 0x3f, 0x8000, 0xbfff, *this); + bus.map(Bus::MapDirect, 0xa0, 0xbf, 0x6000, 0x6fff, *this); + bus.map(Bus::MapDirect, 0xa0, 0xbf, 0x8000, 0xbfff, *this); +} + +void DSP2::power() { + reset(); +} + +void DSP2::reset() { + status.waiting_for_command = true; + status.in_count = 0; + status.in_index = 0; + status.out_count = 0; + status.out_index = 0; + + status.op05transparent = 0; + status.op05haslen = false; + status.op05len = 0; + status.op06haslen = false; + status.op06len = 0; + status.op09word1 = 0; + status.op09word2 = 0; + status.op0dhaslen = false; + status.op0doutlen = 0; + status.op0dinlen = 0; +} + +uint8 DSP2::read(unsigned addr) { + uint8 r = 0xff; + if(status.out_count) { + r = status.output[status.out_index++]; + status.out_index &= 511; + if(status.out_count == status.out_index) { + status.out_count = 0; + } + } + return r; +} + +void DSP2::write(unsigned addr, uint8 data) { + if(status.waiting_for_command) { + status.command = data; + status.in_index = 0; + status.waiting_for_command = false; + + switch(data) { + case 0x01: status.in_count = 32; break; + case 0x03: status.in_count = 1; break; + case 0x05: status.in_count = 1; break; + case 0x06: status.in_count = 1; break; + case 0x07: break; + case 0x08: break; + case 0x09: status.in_count = 4; break; + case 0x0d: status.in_count = 2; break; + case 0x0f: status.in_count = 0; break; + } + } else { + status.parameters[status.in_index++] = data; + status.in_index &= 511; + } + + if(status.in_count == status.in_index) { + status.waiting_for_command = true; + status.out_index = 0; + switch(status.command) { + case 0x01: { + status.out_count = 32; + op01(); + } break; + + case 0x03: { + op03(); + } break; + + case 0x05: { + if(status.op05haslen) { + status.op05haslen = false; + status.out_count = status.op05len; + op05(); + } else { + status.op05len = status.parameters[0]; + status.in_index = 0; + status.in_count = status.op05len * 2; + status.op05haslen = true; + if(data)status.waiting_for_command = false; + } + } break; + + case 0x06: { + if(status.op06haslen) { + status.op06haslen = false; + status.out_count = status.op06len; + op06(); + } else { + status.op06len = status.parameters[0]; + status.in_index = 0; + status.in_count = status.op06len; + status.op06haslen = true; + if(data)status.waiting_for_command = false; + } + } break; + + case 0x07: break; + case 0x08: break; + + case 0x09: { + op09(); + } break; + + case 0x0d: { + if(status.op0dhaslen) { + status.op0dhaslen = false; + status.out_count = status.op0doutlen; + op0d(); + } else { + status.op0dinlen = status.parameters[0]; + status.op0doutlen = status.parameters[1]; + status.in_index = 0; + status.in_count = (status.op0dinlen + 1) >> 1; + status.op0dhaslen = true; + if(data)status.waiting_for_command = false; + } + } break; + + case 0x0f: break; + } + } +} + +DSP2::DSP2() {} +DSP2::~DSP2() {} +}; + diff --git a/libmednahawk/src/snes/src/chip/dsp2/dsp2.hpp b/libmednahawk/src/snes/src/chip/dsp2/dsp2.hpp new file mode 100644 index 0000000000..1eb567c377 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp2/dsp2.hpp @@ -0,0 +1,45 @@ +class DSP2 : public Memory { +public: + struct { + bool waiting_for_command; + unsigned command; + unsigned in_count, in_index; + unsigned out_count, out_index; + + uint8 parameters[512]; + uint8 output[512]; + + uint8 op05transparent; + bool op05haslen; + int op05len; + bool op06haslen; + int op06len; + uint16 op09word1; + uint16 op09word2; + bool op0dhaslen; + int op0doutlen; + int op0dinlen; + } status; + + void init(); + void enable(); + void power(); + void reset(); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void serialize(serializer&); + DSP2(); + ~DSP2(); + +protected: + void op01(); + void op03(); + void op05(); + void op06(); + void op09(); + void op0d(); +}; + +extern DSP2 dsp2; diff --git a/libmednahawk/src/snes/src/chip/dsp2/opcodes.cpp b/libmednahawk/src/snes/src/chip/dsp2/opcodes.cpp new file mode 100644 index 0000000000..3e62d63d7a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp2/opcodes.cpp @@ -0,0 +1,177 @@ +#ifdef DSP2_CPP + +//convert bitmap to bitplane tile +void DSP2::op01() { +//op01 size is always 32 bytes input and output +//the hardware does strange things if you vary the size + +unsigned char c0, c1, c2, c3; +unsigned char *p1 = status.parameters; +unsigned char *p2a = status.output; +unsigned char *p2b = status.output + 16; //halfway + +//process 8 blocks of 4 bytes each + for(int j = 0; j < 8; j++) { + c0 = *p1++; + c1 = *p1++; + c2 = *p1++; + c3 = *p1++; + + *p2a++ = (c0 & 0x10) << 3 | + (c0 & 0x01) << 6 | + (c1 & 0x10) << 1 | + (c1 & 0x01) << 4 | + (c2 & 0x10) >> 1 | + (c2 & 0x01) << 2 | + (c3 & 0x10) >> 3 | + (c3 & 0x01); + + *p2a++ = (c0 & 0x20) << 2 | + (c0 & 0x02) << 5 | + (c1 & 0x20) | + (c1 & 0x02) << 3 | + (c2 & 0x20) >> 2 | + (c2 & 0x02) << 1 | + (c3 & 0x20) >> 4 | + (c3 & 0x02) >> 1; + + *p2b++ = (c0 & 0x40) << 1 | + (c0 & 0x04) << 4 | + (c1 & 0x40) >> 1 | + (c1 & 0x04) << 2 | + (c2 & 0x40) >> 3 | + (c2 & 0x04) | + (c3 & 0x40) >> 5 | + (c3 & 0x04) >> 2; + + *p2b++ = (c0 & 0x80) | + (c0 & 0x08) << 3 | + (c1 & 0x80) >> 2 | + (c1 & 0x08) << 1 | + (c2 & 0x80) >> 4 | + (c2 & 0x08) >> 1 | + (c3 & 0x80) >> 6 | + (c3 & 0x08) >> 3; + } +} + +//set transparent color +void DSP2::op03() { + status.op05transparent = status.parameters[0]; +} + +//replace bitmap using transparent color +void DSP2::op05() { +uint8 color; +// Overlay bitmap with transparency. +// Input: +// +// Bitmap 1: i[0] <=> i[size-1] +// Bitmap 2: i[size] <=> i[2*size-1] +// +// Output: +// +// Bitmap 3: o[0] <=> o[size-1] +// +// Processing: +// +// Process all 4-bit pixels (nibbles) in the bitmap +// +// if ( BM2_pixel == transparent_color ) +// pixelout = BM1_pixel +// else +// pixelout = BM2_pixel + +// The max size bitmap is limited to 255 because the size parameter is a byte +// I think size=0 is an error. The behavior of the chip on size=0 is to +// return the last value written to DR if you read DR on Op05 with +// size = 0. I don't think it's worth implementing this quirk unless it's +// proven necessary. + +unsigned char c1, c2; +unsigned char *p1 = status.parameters; +unsigned char *p2 = status.parameters + status.op05len; +unsigned char *p3 = status.output; + + color = status.op05transparent & 0x0f; + + for(int n = 0; n < status.op05len; n++) { + c1 = *p1++; + c2 = *p2++; + *p3++ = ( ((c2 >> 4) == color ) ? c1 & 0xf0 : c2 & 0xf0 ) | + ( ((c2 & 0x0f) == color ) ? c1 & 0x0f : c2 & 0x0f ); + } +} + +//reverse bitmap +void DSP2::op06() { +// Input: +// size +// bitmap + +int i, j; + for(i = 0, j = status.op06len - 1; i < status.op06len; i++, j--) { + status.output[j] = (status.parameters[i] << 4) | (status.parameters[i] >> 4); + } +} + +//multiply +void DSP2::op09() { + status.out_count = 4; + + status.op09word1 = status.parameters[0] | (status.parameters[1] << 8); + status.op09word2 = status.parameters[2] | (status.parameters[3] << 8); + +uint32 r; + r = status.op09word1 * status.op09word2; + status.output[0] = r; + status.output[1] = r >> 8; + status.output[2] = r >> 16; + status.output[3] = r >> 24; +} + +//scale bitmap +void DSP2::op0d() { +// Bit accurate hardware algorithm - uses fixed point math +// This should match the DSP2 Op0D output exactly +// I wouldn't recommend using this unless you're doing hardware debug. +// In some situations it has small visual artifacts that +// are not readily apparent on a TV screen but show up clearly +// on a monitor. Use Overload's scaling instead. +// This is for hardware verification testing. +// +// One note: the HW can do odd byte scaling but since we divide +// by two to get the count of bytes this won't work well for +// odd byte scaling (in any of the current algorithm implementations). +// So far I haven't seen Dungeon Master use it. +// If it does we can adjust the parameters and code to work with it + +uint32 multiplier; // Any size int >= 32-bits +uint32 pixloc; // match size of multiplier +int i, j; +uint8 pixelarray[512]; + if(status.op0dinlen <= status.op0doutlen) { + multiplier = 0x10000; // In our self defined fixed point 0x10000 == 1 + } else { + multiplier = (status.op0dinlen << 17) / ((status.op0doutlen << 1) + 1); + } + + pixloc = 0; + for(i = 0; i < status.op0doutlen * 2; i++) { + j = pixloc >> 16; + + if(j & 1) { + pixelarray[i] = (status.parameters[j >> 1] & 0x0f); + } else { + pixelarray[i] = (status.parameters[j >> 1] & 0xf0) >> 4; + } + + pixloc += multiplier; + } + + for(i = 0; i < status.op0doutlen; i++) { + status.output[i] = (pixelarray[i << 1] << 4) | pixelarray[(i << 1) + 1]; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp2/serialization.cpp b/libmednahawk/src/snes/src/chip/dsp2/serialization.cpp new file mode 100644 index 0000000000..45a41f67ed --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp2/serialization.cpp @@ -0,0 +1,26 @@ +#ifdef DSP2_CPP + +void DSP2::serialize(serializer &s) { + s.integer(status.waiting_for_command); + s.integer(status.command); + s.integer(status.in_count); + s.integer(status.in_index); + s.integer(status.out_count); + s.integer(status.out_index); + + s.array(status.parameters); + s.array(status.output); + + s.integer(status.op05transparent); + s.integer(status.op05haslen); + s.integer(status.op05len); + s.integer(status.op06haslen); + s.integer(status.op06len); + s.integer(status.op09word1); + s.integer(status.op09word2); + s.integer(status.op0dhaslen); + s.integer(status.op0doutlen); + s.integer(status.op0dinlen); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp3/dsp3.cpp b/libmednahawk/src/snes/src/chip/dsp3/dsp3.cpp new file mode 100644 index 0000000000..aa37616e97 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp3/dsp3.cpp @@ -0,0 +1,42 @@ +#include <../base.hpp> + +#define DSP3_CPP +namespace SNES { + +DSP3 dsp3; + +namespace DSP3i { + #define bool8 uint8 + #include "dsp3emu.c" + #undef bool8 +}; + +void DSP3::init() { +} + +void DSP3::enable() { + bus.map(Bus::MapDirect, 0x20, 0x3f, 0x8000, 0xffff, *this); + bus.map(Bus::MapDirect, 0xa0, 0xbf, 0x8000, 0xffff, *this); +} + +void DSP3::power() { + reset(); +} + +void DSP3::reset() { + DSP3i::DSP3_Reset(); +} + +uint8 DSP3::read(unsigned addr) { + DSP3i::dsp3_address = addr & 0xffff; + DSP3i::DSP3GetByte(); + return DSP3i::dsp3_byte; +} + +void DSP3::write(unsigned addr, uint8 data) { + DSP3i::dsp3_address = addr & 0xffff; + DSP3i::dsp3_byte = data; + DSP3i::DSP3SetByte(); +} + +}; diff --git a/libmednahawk/src/snes/src/chip/dsp3/dsp3.hpp b/libmednahawk/src/snes/src/chip/dsp3/dsp3.hpp new file mode 100644 index 0000000000..386963341e --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp3/dsp3.hpp @@ -0,0 +1,12 @@ +class DSP3 : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 read (unsigned addr); + void write(unsigned addr, uint8 data); +}; + +extern DSP3 dsp3; diff --git a/libmednahawk/src/snes/src/chip/dsp3/dsp3emu.c b/libmednahawk/src/snes/src/chip/dsp3/dsp3emu.c new file mode 100644 index 0000000000..78fa4d7b3b --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp3/dsp3emu.c @@ -0,0 +1,1146 @@ +#ifdef DSP3_CPP + +//DSP-3 emulator code +//Copyright (c) 2003-2006 John Weidman, Kris Bleakley, Lancer, z80 gaiden + +uint16 DSP3_DataROM[1024] = { + 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100, + 0x0080, 0x0040, 0x0020, 0x0010, 0x0008, 0x0004, 0x0002, 0x0001, + 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, + 0x0000, 0x000f, 0x0400, 0x0200, 0x0140, 0x0400, 0x0200, 0x0040, + 0x007d, 0x007e, 0x007e, 0x007b, 0x007c, 0x007d, 0x007b, 0x007c, + 0x0002, 0x0020, 0x0030, 0x0000, 0x000d, 0x0019, 0x0026, 0x0032, + 0x003e, 0x004a, 0x0056, 0x0062, 0x006d, 0x0079, 0x0084, 0x008e, + 0x0098, 0x00a2, 0x00ac, 0x00b5, 0x00be, 0x00c6, 0x00ce, 0x00d5, + 0x00dc, 0x00e2, 0x00e7, 0x00ec, 0x00f1, 0x00f5, 0x00f8, 0x00fb, + 0x00fd, 0x00ff, 0x0100, 0x0100, 0x0100, 0x00ff, 0x00fd, 0x00fb, + 0x00f8, 0x00f5, 0x00f1, 0x00ed, 0x00e7, 0x00e2, 0x00dc, 0x00d5, + 0x00ce, 0x00c6, 0x00be, 0x00b5, 0x00ac, 0x00a2, 0x0099, 0x008e, + 0x0084, 0x0079, 0x006e, 0x0062, 0x0056, 0x004a, 0x003e, 0x0032, + 0x0026, 0x0019, 0x000d, 0x0000, 0xfff3, 0xffe7, 0xffdb, 0xffce, + 0xffc2, 0xffb6, 0xffaa, 0xff9e, 0xff93, 0xff87, 0xff7d, 0xff72, + 0xff68, 0xff5e, 0xff54, 0xff4b, 0xff42, 0xff3a, 0xff32, 0xff2b, + 0xff25, 0xff1e, 0xff19, 0xff14, 0xff0f, 0xff0b, 0xff08, 0xff05, + 0xff03, 0xff01, 0xff00, 0xff00, 0xff00, 0xff01, 0xff03, 0xff05, + 0xff08, 0xff0b, 0xff0f, 0xff13, 0xff18, 0xff1e, 0xff24, 0xff2b, + 0xff32, 0xff3a, 0xff42, 0xff4b, 0xff54, 0xff5d, 0xff67, 0xff72, + 0xff7c, 0xff87, 0xff92, 0xff9e, 0xffa9, 0xffb5, 0xffc2, 0xffce, + 0xffda, 0xffe7, 0xfff3, 0x002b, 0x007f, 0x0020, 0x00ff, 0xff00, + 0xffbe, 0x0000, 0x0044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffc1, 0x0001, 0x0002, 0x0045, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffc5, 0x0003, 0x0004, 0x0005, 0x0047, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffca, 0x0006, 0x0007, 0x0008, + 0x0009, 0x004a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffd0, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x004e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffd7, 0x000f, 0x0010, 0x0011, + 0x0012, 0x0013, 0x0014, 0x0053, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffdf, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, + 0x0059, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffe8, 0x001c, 0x001d, 0x001e, + 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0060, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfff2, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, + 0x002b, 0x002c, 0x0068, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfffd, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0071, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffc7, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, + 0x003e, 0x003f, 0x0040, 0x0041, 0x007b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffd4, 0x0000, 0x0001, 0x0002, + 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, + 0x000b, 0x0044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffe2, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, + 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0050, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfff1, 0x0019, 0x001a, 0x001b, + 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x005d, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffcb, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, + 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x006b, 0x0000, 0x0000, 0x0000, 0xffdc, 0x0000, 0x0001, 0x0002, + 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, + 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0044, 0x0000, 0x0000, + 0xffee, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, + 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, + 0x001f, 0x0020, 0x0054, 0x0000, 0xffee, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, + 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0065, + 0xffbe, 0x0000, 0xfeac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffc1, 0x0001, 0x0002, 0xfead, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffc5, 0x0003, 0x0004, 0x0005, 0xfeaf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffca, 0x0006, 0x0007, 0x0008, + 0x0009, 0xfeb2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffd0, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0xfeb6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffd7, 0x000f, 0x0010, 0x0011, + 0x0012, 0x0013, 0x0014, 0xfebb, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffdf, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, + 0xfec1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffe8, 0x001c, 0x001d, 0x001e, + 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0xfec8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfff2, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, + 0x002b, 0x002c, 0xfed0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfffd, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0xfed9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffc7, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, + 0x003e, 0x003f, 0x0040, 0x0041, 0xfee3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xffd4, 0x0000, 0x0001, 0x0002, + 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, + 0x000b, 0xfeac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffe2, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, + 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0xfeb8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfff1, 0x0019, 0x001a, 0x001b, + 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0xfec5, 0x0000, 0x0000, 0x0000, 0x0000, + 0xffcb, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, + 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0xfed3, 0x0000, 0x0000, 0x0000, 0xffdc, 0x0000, 0x0001, 0x0002, + 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, + 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0xfeac, 0x0000, 0x0000, + 0xffee, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, + 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, + 0x001f, 0x0020, 0xfebc, 0x0000, 0xffee, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, + 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0xfecd, + 0x0154, 0x0218, 0x0110, 0x00b0, 0x00cc, 0x00b0, 0x0088, 0x00b0, + 0x0044, 0x00b0, 0x0000, 0x00b0, 0x00fe, 0xff07, 0x0002, 0x00ff, + 0x00f8, 0x0007, 0x00fe, 0x00ee, 0x07ff, 0x0200, 0x00ef, 0xf800, + 0x0700, 0x00ee, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, + 0xffff, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, + 0x0000, 0xffff, 0xffff, 0x0000, 0xffff, 0x0001, 0x0000, 0x0001, + 0x0001, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, + 0xffff, 0x0001, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0xffff, + 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0044, 0x0088, 0x00cc, + 0x0110, 0x0154, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, + 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff +}; + +void (*SetDSP3)(); +void DSP3_Command(); + +uint16 DSP3_DR; +uint16 DSP3_SR; +uint16 DSP3_MemoryIndex; + +void DSP3_Reset() +{ + DSP3_DR = 0x0080; + DSP3_SR = 0x0084; + SetDSP3 = &DSP3_Command; +} + +void DSP3_MemorySize() +{ + DSP3_DR = 0x0300; + SetDSP3 = &DSP3_Reset; +} + +void DSP3_TestMemory() +{ + DSP3_DR = 0x0000; + SetDSP3 = &DSP3_Reset; +} + +void DSP3_DumpDataROM() +{ + DSP3_DR = DSP3_DataROM[DSP3_MemoryIndex++]; + if (DSP3_MemoryIndex == 1024) + SetDSP3 = &DSP3_Reset; +} + +void DSP3_MemoryDump() +{ + DSP3_MemoryIndex = 0; + SetDSP3 = &DSP3_DumpDataROM; + DSP3_DumpDataROM(); +} + +int16 DSP3_WinLo; +int16 DSP3_WinHi; + +void DSP3_OP06() +{ + DSP3_WinLo = (uint8)(DSP3_DR); + DSP3_WinHi = (uint8)(DSP3_DR >> 8); + DSP3_Reset(); +} + +void DSP3_OP03() +{ + int16 Lo = (uint8)(DSP3_DR); + int16 Hi = (uint8)(DSP3_DR >> 8); + int16 Ofs = (DSP3_WinLo * Hi << 1) + (Lo << 1); + DSP3_DR = Ofs >> 1; + SetDSP3 = &DSP3_Reset; +} + +int16 DSP3_AddLo; +int16 DSP3_AddHi; + +void DSP3_OP07_B() +{ + int16 Ofs = (DSP3_WinLo * DSP3_AddHi << 1) + (DSP3_AddLo << 1); + DSP3_DR = Ofs >> 1; + SetDSP3 = &DSP3_Reset; +} + +void DSP3_OP07_A() +{ + int16 Lo = (uint8)(DSP3_DR); + int16 Hi = (uint8)(DSP3_DR >> 8); + + if (Lo & 1) Hi += (DSP3_AddLo & 1); + + DSP3_AddLo += Lo; + DSP3_AddHi += Hi; + + if (DSP3_AddLo < 0) + DSP3_AddLo += DSP3_WinLo; + else + if (DSP3_AddLo >= DSP3_WinLo) + DSP3_AddLo -= DSP3_WinLo; + + if (DSP3_AddHi < 0) + DSP3_AddHi += DSP3_WinHi; + else + if (DSP3_AddHi >= DSP3_WinHi) + DSP3_AddHi -= DSP3_WinHi; + + DSP3_DR = DSP3_AddLo | (DSP3_AddHi << 8) | ((DSP3_AddHi >> 8) & 0xff); + SetDSP3 = &DSP3_OP07_B; +} + +void DSP3_OP07() +{ + uint32 dataOfs = ((DSP3_DR << 1) + 0x03b2) & 0x03ff; + + DSP3_AddHi = DSP3_DataROM[dataOfs]; + DSP3_AddLo = DSP3_DataROM[dataOfs + 1]; + + SetDSP3 = &DSP3_OP07_A; + DSP3_SR = 0x0080; +} + +uint16 DSP3_Codewords; +uint16 DSP3_Outwords; +uint16 DSP3_Symbol; +uint16 DSP3_BitCount; +uint16 DSP3_Index; +uint16 DSP3_Codes[512]; +uint16 DSP3_BitsLeft; +uint16 DSP3_ReqBits; +uint16 DSP3_ReqData; +uint16 DSP3_BitCommand; +uint8 DSP3_BaseLength; +uint16 DSP3_BaseCodes; +uint16 DSP3_BaseCode; +uint8 DSP3_CodeLengths[8]; +uint16 DSP3_CodeOffsets[8]; +uint16 DSP3_LZCode; +uint8 DSP3_LZLength; + +uint16 DSP3_X; +uint16 DSP3_Y; + +void DSP3_Coordinate() +{ + DSP3_Index++; + + switch (DSP3_Index) + { + case 3: + { + if (DSP3_DR == 0xffff) + DSP3_Reset(); + break; + } + case 4: + { + DSP3_X = DSP3_DR; + break; + } + case 5: + { + DSP3_Y = DSP3_DR; + DSP3_DR = 1; + break; + } + case 6: + { + DSP3_DR = DSP3_X; + break; + } + case 7: + { + DSP3_DR = DSP3_Y; + DSP3_Index = 0; + break; + } + } +} + +uint8 DSP3_Bitmap[8]; +uint8 DSP3_Bitplane[8]; +uint16 DSP3_BMIndex; +uint16 DSP3_BPIndex; +uint16 DSP3_Count; + +void DSP3_Convert_A() +{ + if (DSP3_BMIndex < 8) + { + DSP3_Bitmap[DSP3_BMIndex++] = (uint8) (DSP3_DR); + DSP3_Bitmap[DSP3_BMIndex++] = (uint8) (DSP3_DR >> 8); + + if (DSP3_BMIndex == 8) + { + short i, j; + for (i=0; i < 8; i++) + for (j=0; j < 8; j++) + { + DSP3_Bitplane[j] <<= 1; + DSP3_Bitplane[j] |= (DSP3_Bitmap[i] >> j) & 1; + } + + DSP3_BPIndex = 0; + DSP3_Count--; + } + } + + if (DSP3_BMIndex == 8) + { + if (DSP3_BPIndex == 8) + { + if (!DSP3_Count) DSP3_Reset(); + DSP3_BMIndex = 0; + } + else + { + DSP3_DR = DSP3_Bitplane[DSP3_BPIndex++]; + DSP3_DR |= DSP3_Bitplane[DSP3_BPIndex++] << 8; + } + } +} + +void DSP3_Convert() +{ + DSP3_Count = DSP3_DR; + DSP3_BMIndex = 0; + SetDSP3 = &DSP3_Convert_A; +} + +bool DSP3_GetBits(uint8 Count) +{ + if (!DSP3_BitsLeft) + { + DSP3_BitsLeft = Count; + DSP3_ReqBits = 0; + } + + do { + if (!DSP3_BitCount) + { + DSP3_SR = 0xC0; + return false; + } + + DSP3_ReqBits <<= 1; + if (DSP3_ReqData & 0x8000) DSP3_ReqBits++; + DSP3_ReqData <<= 1; + + DSP3_BitCount--; + DSP3_BitsLeft--; + + } while (DSP3_BitsLeft); + + return true; +} + +void DSP3_Decode_Data() +{ + if (!DSP3_BitCount) + { + if (DSP3_SR & 0x40) + { + DSP3_ReqData = DSP3_DR; + DSP3_BitCount += 16; + } + else + { + DSP3_SR = 0xC0; + return; + } + } + + if (DSP3_LZCode == 1) + { + if (!DSP3_GetBits(1)) + return; + + if (DSP3_ReqBits) + DSP3_LZLength = 12; + else + DSP3_LZLength = 8; + + DSP3_LZCode++; + } + + if (DSP3_LZCode == 2) + { + if (!DSP3_GetBits(DSP3_LZLength)) + return; + + DSP3_LZCode = 0; + DSP3_Outwords--; + if (!DSP3_Outwords) SetDSP3 = &DSP3_Reset; + + DSP3_SR = 0x80; + DSP3_DR = DSP3_ReqBits; + return; + } + + if (DSP3_BaseCode == 0xffff) + { + if (!DSP3_GetBits(DSP3_BaseLength)) + return; + + DSP3_BaseCode = DSP3_ReqBits; + } + + if (!DSP3_GetBits(DSP3_CodeLengths[DSP3_BaseCode])) + return; + + DSP3_Symbol = DSP3_Codes[DSP3_CodeOffsets[DSP3_BaseCode] + DSP3_ReqBits]; + DSP3_BaseCode = 0xffff; + + if (DSP3_Symbol & 0xff00) + { + DSP3_Symbol += 0x7f02; + DSP3_LZCode++; + } + else + { + DSP3_Outwords--; + if (!DSP3_Outwords) + SetDSP3 = &DSP3_Reset; + } + + DSP3_SR = 0x80; + DSP3_DR = DSP3_Symbol; +} + +void DSP3_Decode_Tree() +{ + if (!DSP3_BitCount) + { + DSP3_ReqData = DSP3_DR; + DSP3_BitCount += 16; + } + + if (!DSP3_BaseCodes) + { + DSP3_GetBits(1); + if (DSP3_ReqBits) + { + DSP3_BaseLength = 3; + DSP3_BaseCodes = 8; + } + else + { + DSP3_BaseLength = 2; + DSP3_BaseCodes = 4; + } + } + + while (DSP3_BaseCodes) + { + if (!DSP3_GetBits(3)) + return; + + DSP3_ReqBits++; + + DSP3_CodeLengths[DSP3_Index] = (uint8) DSP3_ReqBits; + DSP3_CodeOffsets[DSP3_Index] = DSP3_Symbol; + DSP3_Index++; + + DSP3_Symbol += 1 << DSP3_ReqBits; + DSP3_BaseCodes--; + } + + DSP3_BaseCode = 0xffff; + DSP3_LZCode = 0; + + SetDSP3 = &DSP3_Decode_Data; + if (DSP3_BitCount) DSP3_Decode_Data(); +} + +void DSP3_Decode_Symbols() +{ + DSP3_ReqData = DSP3_DR; + DSP3_BitCount += 16; + + do { + + if (DSP3_BitCommand == 0xffff) + { + if (!DSP3_GetBits(2)) return; + DSP3_BitCommand = DSP3_ReqBits; + } + + switch (DSP3_BitCommand) + { + case 0: + { + if (!DSP3_GetBits(9)) return; + DSP3_Symbol = DSP3_ReqBits; + break; + } + case 1: + { + DSP3_Symbol++; + break; + } + case 2: + { + if (!DSP3_GetBits(1)) return; + DSP3_Symbol += 2 + DSP3_ReqBits; + break; + } + case 3: + { + if (!DSP3_GetBits(4)) return; + DSP3_Symbol += 4 + DSP3_ReqBits; + break; + } + } + + DSP3_BitCommand = 0xffff; + + DSP3_Codes[DSP3_Index++] = DSP3_Symbol; + DSP3_Codewords--; + + } while (DSP3_Codewords); + + DSP3_Index = 0; + DSP3_Symbol = 0; + DSP3_BaseCodes = 0; + + SetDSP3 = &DSP3_Decode_Tree; + if (DSP3_BitCount) DSP3_Decode_Tree(); +} + +void DSP3_Decode_A() +{ + DSP3_Outwords = DSP3_DR; + SetDSP3 = &DSP3_Decode_Symbols; + DSP3_BitCount = 0; + DSP3_BitsLeft = 0; + DSP3_Symbol = 0; + DSP3_Index = 0; + DSP3_BitCommand = 0xffff; + DSP3_SR = 0xC0; +} + +void DSP3_Decode() +{ + DSP3_Codewords = DSP3_DR; + SetDSP3 = &DSP3_Decode_A; +} + + +// Opcodes 1E/3E bit-perfect to 'dsp3-intro' log +// src: adapted from SD Gundam X/G-Next + +int16 op3e_x; +int16 op3e_y; + +int16 op1e_terrain[0x2000]; +int16 op1e_cost[0x2000]; +int16 op1e_weight[0x2000]; + +int16 op1e_cell; +int16 op1e_turn; +int16 op1e_search; + +int16 op1e_x; +int16 op1e_y; + +int16 op1e_min_radius; +int16 op1e_max_radius; + +int16 op1e_max_search_radius; +int16 op1e_max_path_radius; + +int16 op1e_lcv_radius; +int16 op1e_lcv_steps; +int16 op1e_lcv_turns; + +void DSP3_OP3E() +{ + op3e_x = (uint8)(DSP3_DR & 0x00ff); + op3e_y = (uint8)((DSP3_DR & 0xff00)>>8); + + DSP3_OP03(); + + op1e_terrain[ DSP3_DR ] = 0x00; + op1e_cost[ DSP3_DR ] = 0xff; + op1e_weight[ DSP3_DR ] = 0; + + op1e_max_search_radius = 0; + op1e_max_path_radius = 0; +} + +void DSP3_OP1E_A(); +void DSP3_OP1E_A1(); +void DSP3_OP1E_A2(); +void DSP3_OP1E_A3(); + +void DSP3_OP1E_B(); +void DSP3_OP1E_B1(); +void DSP3_OP1E_B2(); + +void DSP3_OP1E_C(); +void DSP3_OP1E_C1(); +void DSP3_OP1E_C2(); + +void DSP3_OP1E_D( int16, int16 *, int16 * ); +void DSP3_OP1E_D1( int16 move, int16 *lo, int16 *hi ); + +void DSP3_OP1E() +{ + int lcv; + + op1e_min_radius = (uint8)(DSP3_DR & 0x00ff); + op1e_max_radius = (uint8)((DSP3_DR & 0xff00)>>8); + + if( op1e_min_radius == 0 ) + op1e_min_radius++; + + if( op1e_max_search_radius >= op1e_min_radius ) + op1e_min_radius = op1e_max_search_radius+1; + + if( op1e_max_radius > op1e_max_search_radius ) + op1e_max_search_radius = op1e_max_radius; + + op1e_lcv_radius = op1e_min_radius; + op1e_lcv_steps = op1e_min_radius; + + op1e_lcv_turns = 6; + op1e_turn = 0; + + op1e_x = op3e_x; + op1e_y = op3e_y; + + for( lcv = 0; lcv < op1e_min_radius; lcv++ ) + DSP3_OP1E_D( op1e_turn, &op1e_x, &op1e_y ); + + DSP3_OP1E_A(); +} + +void DSP3_OP1E_A() +{ + int lcv; + + if( op1e_lcv_steps == 0 ) { + op1e_lcv_radius++; + + op1e_lcv_steps = op1e_lcv_radius; + + op1e_x = op3e_x; + op1e_y = op3e_y; + + for( lcv = 0; lcv < op1e_lcv_radius; lcv++ ) + DSP3_OP1E_D( op1e_turn, &op1e_x, &op1e_y ); + } + + if( op1e_lcv_radius > op1e_max_radius ) { + op1e_turn++; + op1e_lcv_turns--; + + op1e_lcv_radius = op1e_min_radius; + op1e_lcv_steps = op1e_min_radius; + + op1e_x = op3e_x; + op1e_y = op3e_y; + + for( lcv = 0; lcv < op1e_min_radius; lcv++ ) + DSP3_OP1E_D( op1e_turn, &op1e_x, &op1e_y ); + } + + if( op1e_lcv_turns == 0 ) { + DSP3_DR = 0xffff; + DSP3_SR = 0x0080; + SetDSP3 = &DSP3_OP1E_B; + return; + } + + DSP3_DR = (uint8)(op1e_x) | ((uint8)(op1e_y)<<8); + DSP3_OP03(); + + op1e_cell = DSP3_DR; + + DSP3_SR = 0x0080; + SetDSP3 = &DSP3_OP1E_A1; +} + +void DSP3_OP1E_A1() +{ + DSP3_SR = 0x0084; + SetDSP3 = &DSP3_OP1E_A2; +} + +void DSP3_OP1E_A2() +{ + op1e_terrain[ op1e_cell ] = (uint8)(DSP3_DR & 0x00ff); + + DSP3_SR = 0x0084; + SetDSP3 = &DSP3_OP1E_A3; +} + +void DSP3_OP1E_A3() +{ + op1e_cost[ op1e_cell ] = (uint8)(DSP3_DR & 0x00ff); + + if( op1e_lcv_radius == 1 ) { + if( op1e_terrain[ op1e_cell ] & 1 ) { + op1e_weight[ op1e_cell ] = 0xff; + } else { + op1e_weight[ op1e_cell ] = op1e_cost[ op1e_cell ]; + } + } + else { + op1e_weight[ op1e_cell ] = 0xff; + } + + DSP3_OP1E_D( (int16)(op1e_turn+2), &op1e_x, &op1e_y ); + op1e_lcv_steps--; + + DSP3_SR = 0x0080; + DSP3_OP1E_A(); +} + + +void DSP3_OP1E_B() +{ + op1e_x = op3e_x; + op1e_y = op3e_y; + op1e_lcv_radius = 1; + + op1e_search = 0; + + DSP3_OP1E_B1(); + + SetDSP3 = &DSP3_OP1E_C; +} + + +void DSP3_OP1E_B1() +{ + while( op1e_lcv_radius < op1e_max_radius ) { + op1e_y--; + + op1e_lcv_turns = 6; + op1e_turn = 5; + + while( op1e_lcv_turns ) { + op1e_lcv_steps = op1e_lcv_radius; + + while( op1e_lcv_steps ) { + DSP3_OP1E_D1( op1e_turn, &op1e_x, &op1e_y ); + + if( 0 <= op1e_y && op1e_y < DSP3_WinHi && + 0 <= op1e_x && op1e_x < DSP3_WinLo ) { + DSP3_DR = (uint8)(op1e_x) | ((uint8)(op1e_y)<<8); + DSP3_OP03(); + + op1e_cell = DSP3_DR; + if( op1e_cost[ op1e_cell ] < 0x80 && + op1e_terrain[ op1e_cell ] < 0x40 ) { + DSP3_OP1E_B2(); + } // end cell perimeter + } + + op1e_lcv_steps--; + } // end search line + + op1e_turn--; + if( op1e_turn == 0 ) op1e_turn = 6; + + op1e_lcv_turns--; + } // end circle search + + op1e_lcv_radius++; + } // end radius search +} + + +void DSP3_OP1E_B2() +{ + int16 cell; + int16 path; + int16 x,y; + int16 lcv_turns; + + path = 0xff; + lcv_turns = 6; + + while( lcv_turns ) { + x = op1e_x; + y = op1e_y; + + DSP3_OP1E_D1( lcv_turns, &x, &y ); + + DSP3_DR = (uint8)(x) | ((uint8)(y)<<8); + DSP3_OP03(); + + cell = DSP3_DR; + + if( 0 <= y && y < DSP3_WinHi && + 0 <= x && x < DSP3_WinLo ) { + + if( op1e_terrain[ cell ] < 0x80 || op1e_weight[ cell ] == 0 ) { + if( op1e_weight[ cell ] < path ) { + path = op1e_weight[ cell ]; + } + } + } // end step travel + + lcv_turns--; + } // end while turns + + if( path != 0xff ) { + op1e_weight[ op1e_cell ] = path + op1e_cost[ op1e_cell ]; + } +} + + +void DSP3_OP1E_C() +{ + int lcv; + + op1e_min_radius = (uint8)(DSP3_DR & 0x00ff); + op1e_max_radius = (uint8)((DSP3_DR & 0xff00)>>8); + + if( op1e_min_radius == 0 ) + op1e_min_radius++; + + if( op1e_max_path_radius >= op1e_min_radius ) + op1e_min_radius = op1e_max_path_radius+1; + + if( op1e_max_radius > op1e_max_path_radius ) + op1e_max_path_radius = op1e_max_radius; + + op1e_lcv_radius = op1e_min_radius; + op1e_lcv_steps = op1e_min_radius; + + op1e_lcv_turns = 6; + op1e_turn = 0; + + op1e_x = op3e_x; + op1e_y = op3e_y; + + for( lcv = 0; lcv < op1e_min_radius; lcv++ ) + DSP3_OP1E_D( op1e_turn, &op1e_x, &op1e_y ); + + DSP3_OP1E_C1(); +} + + +void DSP3_OP1E_C1() +{ + int lcv; + + if( op1e_lcv_steps == 0 ) { + op1e_lcv_radius++; + + op1e_lcv_steps = op1e_lcv_radius; + + op1e_x = op3e_x; + op1e_y = op3e_y; + + for( lcv = 0; lcv < op1e_lcv_radius; lcv++ ) + DSP3_OP1E_D( op1e_turn, &op1e_x, &op1e_y ); + } + + if( op1e_lcv_radius > op1e_max_radius ) { + op1e_turn++; + op1e_lcv_turns--; + + op1e_lcv_radius = op1e_min_radius; + op1e_lcv_steps = op1e_min_radius; + + op1e_x = op3e_x; + op1e_y = op3e_y; + + for( lcv = 0; lcv < op1e_min_radius; lcv++ ) + DSP3_OP1E_D( op1e_turn, &op1e_x, &op1e_y ); + } + + if( op1e_lcv_turns == 0 ) { + DSP3_DR = 0xffff; + DSP3_SR = 0x0080; + SetDSP3 = &DSP3_Reset; + return; + } + + DSP3_DR = (uint8)(op1e_x) | ((uint8)(op1e_y)<<8); + DSP3_OP03(); + + op1e_cell = DSP3_DR; + + DSP3_SR = 0x0080; + SetDSP3 = &DSP3_OP1E_C2; +} + + +void DSP3_OP1E_C2() +{ + DSP3_DR = op1e_weight[ op1e_cell ]; + + DSP3_OP1E_D( (int16)(op1e_turn+2), &op1e_x, &op1e_y ); + op1e_lcv_steps--; + + DSP3_SR = 0x0084; + SetDSP3 = &DSP3_OP1E_C1; +} + + +void DSP3_OP1E_D( int16 move, int16 *lo, int16 *hi ) +{ + uint32 dataOfs = ((move << 1) + 0x03b2) & 0x03ff; + int16 Lo; + int16 Hi; + + DSP3_AddHi = DSP3_DataROM[dataOfs]; + DSP3_AddLo = DSP3_DataROM[dataOfs + 1]; + + Lo = (uint8)(*lo); + Hi = (uint8)(*hi); + + if (Lo & 1) Hi += (DSP3_AddLo & 1); + + DSP3_AddLo += Lo; + DSP3_AddHi += Hi; + + if (DSP3_AddLo < 0) + DSP3_AddLo += DSP3_WinLo; + else + if (DSP3_AddLo >= DSP3_WinLo) + DSP3_AddLo -= DSP3_WinLo; + + if (DSP3_AddHi < 0) + DSP3_AddHi += DSP3_WinHi; + else + if (DSP3_AddHi >= DSP3_WinHi) + DSP3_AddHi -= DSP3_WinHi; + + *lo = DSP3_AddLo; + *hi = DSP3_AddHi; +} + + +void DSP3_OP1E_D1( int16 move, int16 *lo, int16 *hi ) +{ + //uint32 dataOfs = ((move << 1) + 0x03b2) & 0x03ff; + int16 Lo; + int16 Hi; + + const unsigned short HiAdd[] = { + 0x00, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00 + }; + const unsigned short LoAdd[] = { + 0x00, 0x00, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x00 + }; + + if( (*lo) & 1 ) + DSP3_AddHi = HiAdd[ move + 8 ]; + else + DSP3_AddHi = HiAdd[ move + 0 ]; + DSP3_AddLo = LoAdd[ move ]; + + Lo = (uint8)(*lo); + Hi = (uint8)(*hi); + + if (Lo & 1) Hi += (DSP3_AddLo & 1); + + DSP3_AddLo += Lo; + DSP3_AddHi += Hi; + + *lo = DSP3_AddLo; + *hi = DSP3_AddHi; +} + + +void DSP3_OP10() +{ + if( DSP3_DR == 0xffff ) { + DSP3_Reset(); + } else { + // absorb 2 bytes + DSP3_DR = DSP3_DR; + } +} + + +void DSP3_OP0C_A() +{ + // absorb 2 bytes + + DSP3_DR = 0; + SetDSP3 = &DSP3_Reset; +} + + +void DSP3_OP0C() +{ + // absorb 2 bytes + + DSP3_DR = 0; + //SetDSP3 = &DSP3_OP0C_A; + SetDSP3 = &DSP3_Reset; +} + + +void DSP3_OP1C_C() +{ + // return 2 bytes + DSP3_DR = 0; + SetDSP3 = &DSP3_Reset; +} + + +void DSP3_OP1C_B() +{ + // absorb 2 bytes + + // return 2 bytes + DSP3_DR = 0; + SetDSP3 = &DSP3_OP1C_C; +} + + +void DSP3_OP1C_A() +{ + // absorb 2 bytes + + SetDSP3 = &DSP3_OP1C_B; +} + + +void DSP3_OP1C() +{ + // absorb 2 bytes + + SetDSP3 = &DSP3_OP1C_A; +} + + +void DSP3_Command() +{ + if (DSP3_DR < 0x40) + { + switch (DSP3_DR) + { + case 0x02: SetDSP3 = &DSP3_Coordinate; break; + case 0x03: SetDSP3 = &DSP3_OP03; break; + case 0x06: SetDSP3 = &DSP3_OP06; break; + case 0x07: SetDSP3 = &DSP3_OP07; return; + case 0x0c: SetDSP3 = &DSP3_OP0C; break; + case 0x0f: SetDSP3 = &DSP3_TestMemory; break; + case 0x10: SetDSP3 = &DSP3_OP10; break; + case 0x18: SetDSP3 = &DSP3_Convert; break; + case 0x1c: SetDSP3 = &DSP3_OP1C; break; + case 0x1e: SetDSP3 = &DSP3_OP1E; break; + case 0x1f: SetDSP3 = &DSP3_MemoryDump; break; + case 0x38: SetDSP3 = &DSP3_Decode; break; + case 0x3e: SetDSP3 = &DSP3_OP3E; break; + default: + return; + } + DSP3_SR = 0x0080; + DSP3_Index = 0; + } +} + +uint8 dsp3_byte; +uint16 dsp3_address; + +void DSP3SetByte() +{ + if (dsp3_address < 0xC000) + { + if (DSP3_SR & 0x04) + { + DSP3_DR = (DSP3_DR & 0xff00) + dsp3_byte; + (*SetDSP3)(); + } + else + { + DSP3_SR ^= 0x10; + + if (DSP3_SR & 0x10) + DSP3_DR = (DSP3_DR & 0xff00) + dsp3_byte; + else + { + DSP3_DR = (DSP3_DR & 0x00ff) + (dsp3_byte << 8); + (*SetDSP3)(); + } + } + } +} + +void DSP3GetByte() +{ + if (dsp3_address < 0xC000) + { + if (DSP3_SR & 0x04) + { + dsp3_byte = (uint8) DSP3_DR; + (*SetDSP3)(); + } + else + { + DSP3_SR ^= 0x10; + + if (DSP3_SR & 0x10) + dsp3_byte = (uint8) (DSP3_DR); + else + { + dsp3_byte = (uint8) (DSP3_DR >> 8); + (*SetDSP3)(); + } + } + + } + else + { + dsp3_byte = (uint8) DSP3_SR; + } +} + +void InitDSP3() +{ + DSP3_Reset(); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp4/dsp4.cpp b/libmednahawk/src/snes/src/chip/dsp4/dsp4.cpp new file mode 100644 index 0000000000..8b6377f2f4 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp4/dsp4.cpp @@ -0,0 +1,62 @@ +#include <../base.hpp> + +#define DSP4_CPP +namespace SNES { + +DSP4 dsp4; + +void DSP4::init() { +} + +void DSP4::enable() { + bus.map(Bus::MapDirect, 0x30, 0x3f, 0x8000, 0xffff, *this); + bus.map(Bus::MapDirect, 0xb0, 0xbf, 0x8000, 0xffff, *this); +} + +namespace DSP4i { + inline uint16 READ_WORD(uint8 *addr) { + return (addr[0]) + (addr[1] << 8); + } + + inline uint32 READ_DWORD(uint8 *addr) { + return (addr[0]) + (addr[1] << 8) + (addr[2] << 16) + (addr[3] << 24); + } + + inline void WRITE_WORD(uint8 *addr, uint16 data) { + addr[0] = data; + addr[1] = data >> 8; + } + + #define bool8 uint8 + #include "dsp4emu.c" + #undef bool8 +}; + +void DSP4::power() { + reset(); +} + +void DSP4::reset() { + DSP4i::InitDSP4(); +} + +uint8 DSP4::read(unsigned addr) { + addr &= 0xffff; + if(addr < 0xc000) { + DSP4i::dsp4_address = addr; + DSP4i::DSP4GetByte(); + return DSP4i::dsp4_byte; + } + return 0x80; +} + +void DSP4::write(unsigned addr, uint8 data) { + addr &= 0xffff; + if(addr < 0xc000) { + DSP4i::dsp4_address = addr; + DSP4i::dsp4_byte = data; + DSP4i::DSP4SetByte(); + } +} + +}; diff --git a/libmednahawk/src/snes/src/chip/dsp4/dsp4.hpp b/libmednahawk/src/snes/src/chip/dsp4/dsp4.hpp new file mode 100644 index 0000000000..17d6533a0b --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp4/dsp4.hpp @@ -0,0 +1,12 @@ +class DSP4 : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 read (unsigned addr); + void write(unsigned addr, uint8 data); +}; + +extern DSP4 dsp4; diff --git a/libmednahawk/src/snes/src/chip/dsp4/dsp4emu.c b/libmednahawk/src/snes/src/chip/dsp4/dsp4emu.c new file mode 100644 index 0000000000..9fbee90bf7 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp4/dsp4emu.c @@ -0,0 +1,2150 @@ +#ifdef DSP4_CPP + +//DSP-4 emulator code +//Copyright (c) 2004-2006 Dreamer Nom, John Weidman, Kris Bleakley, Nach, z80 gaiden + +/* +Due recognition and credit are given on Overload's DSP website. +Thank those contributors for their hard work on this chip. + + +Fixed-point math reminder: + +[sign, integer, fraction] +1.15.00 * 1.15.00 = 2.30.00 -> 1.30.00 (DSP) -> 1.31.00 (LSB is '0') +1.15.00 * 1.00.15 = 2.15.15 -> 1.15.15 (DSP) -> 1.15.16 (LSB is '0') +*/ + +#include "dsp4emu.h" + +struct DSP4_t DSP4; +struct DSP4_vars_t DSP4_vars; + +////////////////////////////////////////////////////////////// + +// input protocol + +static int16 DSP4_READ_WORD() +{ + int16 out; + + out = READ_WORD(DSP4.parameters + DSP4.in_index); + DSP4.in_index += 2; + + return out; +} + +static int32 DSP4_READ_DWORD() +{ + int32 out; + + out = READ_DWORD(DSP4.parameters + DSP4.in_index); + DSP4.in_index += 4; + + return out; +} + + +////////////////////////////////////////////////////////////// + +// output protocol + +#define DSP4_CLEAR_OUT() \ +{ DSP4.out_count = 0; DSP4.out_index = 0; } + +#define DSP4_WRITE_BYTE( d ) \ +{ WRITE_WORD( DSP4.output + DSP4.out_count, ( d ) ); DSP4.out_count++; } + +#define DSP4_WRITE_WORD( d ) \ +{ WRITE_WORD( DSP4.output + DSP4.out_count, ( d ) ); DSP4.out_count += 2; } + +#ifndef MSB_FIRST +#define DSP4_WRITE_16_WORD( d ) \ +{ memcpy(DSP4.output + DSP4.out_count, ( d ), 32); DSP4.out_count += 32; } +#else +#define DSP4_WRITE_16_WORD( d ) \ +{ int16 *p = ( d ), *end = ( d )+16; \ + for (; p != end; p++) \ + { \ + WRITE_WORD( DSP4.output + DSP4.out_count, *p ); \ + } \ + DSP4.out_count += 32; \ +} +#endif + +#ifdef PRINT_OP +#define DSP4_WRITE_DEBUG( x, d ) \ + WRITE_WORD( nop + x, d ); +#endif + +#ifdef DEBUG_DSP +#define DSP4_WRITE_DEBUG( x, d ) \ + WRITE_WORD( nop + x, d ); +#endif + +////////////////////////////////////////////////////////////// + +// used to wait for dsp i/o + +#define DSP4_WAIT( x ) \ + DSP4.in_index = 0; DSP4_vars.DSP4_Logic = x; return; + +////////////////////////////////////////////////////////////// + +// 1.7.8 -> 1.15.16 +#define SEX78( a ) ( ( (int32) ( (int16) (a) ) ) << 8 ) + +// 1.15.0 -> 1.15.16 +#define SEX16( a ) ( ( (int32) ( (int16) (a) ) ) << 16 ) + +#ifdef PRINT_OP +#define U16( a ) ( (uint16) ( a ) ) +#endif + +#ifdef DEBUG_DSP +#define U16( a ) ( (uint16) ( a ) ) +#endif + +////////////////////////////////////////////////////////////// + +// Attention: This lookup table is not verified +static const uint16 div_lut[64] = { 0x0000, 0x8000, 0x4000, 0x2aaa, 0x2000, 0x1999, 0x1555, 0x1249, 0x1000, 0x0e38, + 0x0ccc, 0x0ba2, 0x0aaa, 0x09d8, 0x0924, 0x0888, 0x0800, 0x0787, 0x071c, 0x06bc, + 0x0666, 0x0618, 0x05d1, 0x0590, 0x0555, 0x051e, 0x04ec, 0x04bd, 0x0492, 0x0469, + 0x0444, 0x0421, 0x0400, 0x03e0, 0x03c3, 0x03a8, 0x038e, 0x0375, 0x035e, 0x0348, + 0x0333, 0x031f, 0x030c, 0x02fa, 0x02e8, 0x02d8, 0x02c8, 0x02b9, 0x02aa, 0x029c, + 0x028f, 0x0282, 0x0276, 0x026a, 0x025e, 0x0253, 0x0249, 0x023e, 0x0234, 0x022b, + 0x0222, 0x0219, 0x0210, 0x0208, }; +int16 DSP4_Inverse(int16 value) +{ + // saturate bounds + if (value < 0) + { + value = 0; + } + if (value > 63) + { + value = 63; + } + + return div_lut[value]; +} + +////////////////////////////////////////////////////////////// + +// Prototype +void DSP4_OP0B(bool8 *draw, int16 sp_x, int16 sp_y, int16 sp_attr, bool8 size, bool8 stop); + +////////////////////////////////////////////////////////////// + +// OP00 +void DSP4_Multiply(int16 Multiplicand, int16 Multiplier, int32 *Product) +{ + *Product = (Multiplicand * Multiplier << 1) >> 1; +} + +////////////////////////////////////////////////////////////// + + +void DSP4_OP01() +{ + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + case 3: + goto resume3; break; + } + + //////////////////////////////////////////////////// + // process initial inputs + + // sort inputs + DSP4_vars.world_y = DSP4_READ_DWORD(); + DSP4_vars.poly_bottom[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][0] = DSP4_READ_WORD(); + DSP4_vars.viewport_bottom = DSP4_READ_WORD(); + DSP4_vars.world_x = DSP4_READ_DWORD(); + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[0][0] = DSP4_READ_WORD(); + DSP4_vars.world_yofs = DSP4_READ_WORD(); + DSP4_vars.world_dy = DSP4_READ_DWORD(); + DSP4_vars.world_dx = DSP4_READ_DWORD(); + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_READ_WORD(); // 0x0000 + DSP4_vars.world_xenv = DSP4_READ_DWORD(); + DSP4_vars.world_ddy = DSP4_READ_WORD(); + DSP4_vars.world_ddx = DSP4_READ_WORD(); + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // initial (x,y,offset) at starting DSP4_vars.raster line + DSP4_vars.view_x1 = (int16)((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16); + DSP4_vars.view_y1 = (int16)(DSP4_vars.world_y >> 16); + DSP4_vars.view_xofs1 = (int16)(DSP4_vars.world_x >> 16); + DSP4_vars.view_yofs1 = DSP4_vars.world_yofs; + DSP4_vars.view_turnoff_x = 0; + DSP4_vars.view_turnoff_dx = 0; + + // first DSP4_vars.raster line + DSP4_vars.poly_raster[0][0] = DSP4_vars.poly_bottom[0][0]; + + do + { + //////////////////////////////////////////////////// + // process one iteration of projection + + // perspective projection of world (x,y,scroll) points + // based on the current projection lines + DSP4_vars.view_x2 = (int16)(( ( ( DSP4_vars.world_x + DSP4_vars.world_xenv ) >> 16 ) * DSP4_vars.distance >> 15 ) + ( DSP4_vars.view_turnoff_x * DSP4_vars.distance >> 15 )); + DSP4_vars.view_y2 = (int16)((DSP4_vars.world_y >> 16) * DSP4_vars.distance >> 15); + DSP4_vars.view_xofs2 = DSP4_vars.view_x2; + DSP4_vars.view_yofs2 = (DSP4_vars.world_yofs * DSP4_vars.distance >> 15) + DSP4_vars.poly_bottom[0][0] - DSP4_vars.view_y2; + + + // 1. World x-location before transformation + // 2. Viewer x-position at the next + // 3. World y-location before perspective projection + // 4. Viewer y-position below the horizon + // 5. Number of DSP4_vars.raster lines drawn in this iteration + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD((uint16)((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16)); + DSP4_WRITE_WORD(DSP4_vars.view_x2); + DSP4_WRITE_WORD((uint16)(DSP4_vars.world_y >> 16)); + DSP4_WRITE_WORD(DSP4_vars.view_y2); + + ////////////////////////////////////////////////////// + + // SR = 0x00 + + // determine # of DSP4_vars.raster lines used + DSP4_vars.segments = DSP4_vars.poly_raster[0][0] - DSP4_vars.view_y2; + + // prevent overdraw + if (DSP4_vars.view_y2 >= DSP4_vars.poly_raster[0][0]) + DSP4_vars.segments = 0; + else + DSP4_vars.poly_raster[0][0] = DSP4_vars.view_y2; + + // don't draw outside the window + if (DSP4_vars.view_y2 < DSP4_vars.poly_top[0][0]) + { + DSP4_vars.segments = 0; + + // flush remaining DSP4_vars.raster lines + if (DSP4_vars.view_y1 >= DSP4_vars.poly_top[0][0]) + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.poly_top[0][0]; + } + + // SR = 0x80 + + DSP4_WRITE_WORD(DSP4_vars.segments); + + ////////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + int32 px_dx, py_dy; + int32 x_scroll, y_scroll; + + // SR = 0x00 + + // linear interpolation (lerp) between projected points + px_dx = (DSP4_vars.view_xofs2 - DSP4_vars.view_xofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + py_dy = (DSP4_vars.view_yofs2 - DSP4_vars.view_yofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + + // starting step values + x_scroll = SEX16(DSP4_vars.poly_cx[0][0] + DSP4_vars.view_xofs1); + y_scroll = SEX16(-DSP4_vars.viewport_bottom + DSP4_vars.view_yofs1 + DSP4_vars.view_yofsenv + DSP4_vars.poly_cx[1][0] - DSP4_vars.world_yofs); + + // SR = 0x80 + + // rasterize line + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < DSP4_vars.segments; DSP4_vars.lcv++) + { + // 1. HDMA memory pointer (bg1) + // 2. vertical scroll offset ($210E) + // 3. horizontal scroll offset ($210D) + + DSP4_WRITE_WORD(DSP4_vars.poly_ptr[0][0]); + DSP4_WRITE_WORD((uint16)((y_scroll + 0x8000) >> 16)); + DSP4_WRITE_WORD((uint16)((x_scroll + 0x8000) >> 16)); + + + // update memory address + DSP4_vars.poly_ptr[0][0] -= 4; + + // update screen values + x_scroll += px_dx; + y_scroll += py_dy; + } + } + + //////////////////////////////////////////////////// + // Post-update + + // update new viewer (x,y,scroll) to last DSP4_vars.raster line drawn + DSP4_vars.view_x1 = DSP4_vars.view_x2; + DSP4_vars.view_y1 = DSP4_vars.view_y2; + DSP4_vars.view_xofs1 = DSP4_vars.view_xofs2; + DSP4_vars.view_yofs1 = DSP4_vars.view_yofs2; + + // add deltas for projection lines + DSP4_vars.world_dx += SEX78(DSP4_vars.world_ddx); + DSP4_vars.world_dy += SEX78(DSP4_vars.world_ddy); + + // update projection lines + DSP4_vars.world_x += (DSP4_vars.world_dx + DSP4_vars.world_xenv); + DSP4_vars.world_y += DSP4_vars.world_dy; + + // update road turnoff position + DSP4_vars.view_turnoff_x += DSP4_vars.view_turnoff_dx; + + //////////////////////////////////////////////////// + // command check + + // scan next command + DSP4.in_count = 2; + DSP4_WAIT(1) resume1 : + + // check for termination + DSP4_vars.distance = DSP4_READ_WORD(); + if (DSP4_vars.distance == -0x8000) + break; + + // road turnoff + if( (uint16) DSP4_vars.distance == 0x8001 ) + { + DSP4.in_count = 6; + DSP4_WAIT(2) resume2: + + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_vars.view_turnoff_x = DSP4_READ_WORD(); + DSP4_vars.view_turnoff_dx = DSP4_READ_WORD(); + + // factor in new changes + DSP4_vars.view_x1 += ( DSP4_vars.view_turnoff_x * DSP4_vars.distance >> 15 ); + DSP4_vars.view_xofs1 += ( DSP4_vars.view_turnoff_x * DSP4_vars.distance >> 15 ); + + // update stepping values + DSP4_vars.view_turnoff_x += DSP4_vars.view_turnoff_dx; + + DSP4.in_count = 2; + DSP4_WAIT(1) + } + + // already have 2 bytes read + DSP4.in_count = 6; + DSP4_WAIT(3) resume3 : + + // inspect inputs + DSP4_vars.world_ddy = DSP4_READ_WORD(); + DSP4_vars.world_ddx = DSP4_READ_WORD(); + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // no envelope here + DSP4_vars.world_xenv = 0; + } + while (1); + + // terminate op + DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + + +void DSP4_OP03() +{ + DSP4_vars.OAM_RowMax = 33; + memset(DSP4_vars.OAM_Row, 0, 64); +} + + +////////////////////////////////////////////////////////////// + + +void DSP4_OP05() +{ + DSP4_vars.OAM_index = 0; + DSP4_vars.OAM_bits = 0; + memset(DSP4_vars.OAM_attr, 0, 32); + DSP4_vars.sprite_count = 0; +} + + +////////////////////////////////////////////////////////////// + +void DSP4_OP06() +{ + DSP4_CLEAR_OUT(); + DSP4_WRITE_16_WORD(DSP4_vars.OAM_attr); +} + +////////////////////////////////////////////////////////////// + + +void DSP4_OP07() +{ + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + } + + //////////////////////////////////////////////////// + // sort inputs + + DSP4_vars.world_y = DSP4_READ_DWORD(); + DSP4_vars.poly_bottom[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][0] = DSP4_READ_WORD(); + DSP4_vars.viewport_bottom = DSP4_READ_WORD(); + DSP4_vars.world_x = DSP4_READ_DWORD(); + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[0][0] = DSP4_READ_WORD(); + DSP4_vars.world_yofs = DSP4_READ_WORD(); + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_vars.view_y2 = DSP4_READ_WORD(); + DSP4_vars.view_dy = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_x2 = DSP4_READ_WORD(); + DSP4_vars.view_dx = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // initial (x,y,offset) at starting DSP4_vars.raster line + DSP4_vars.view_x1 = (int16)(DSP4_vars.world_x >> 16); + DSP4_vars.view_y1 = (int16)(DSP4_vars.world_y >> 16); + DSP4_vars.view_xofs1 = DSP4_vars.view_x1; + DSP4_vars.view_yofs1 = DSP4_vars.world_yofs; + + // first DSP4_vars.raster line + DSP4_vars.poly_raster[0][0] = DSP4_vars.poly_bottom[0][0]; + + + do + { + //////////////////////////////////////////////////// + // process one iteration of projection + + // add shaping + DSP4_vars.view_x2 += DSP4_vars.view_dx; + DSP4_vars.view_y2 += DSP4_vars.view_dy; + + // vertical scroll calculation + DSP4_vars.view_xofs2 = DSP4_vars.view_x2; + DSP4_vars.view_yofs2 = (DSP4_vars.world_yofs * DSP4_vars.distance >> 15) + DSP4_vars.poly_bottom[0][0] - DSP4_vars.view_y2; + + // 1. Viewer x-position at the next + // 2. Viewer y-position below the horizon + // 3. Number of DSP4_vars.raster lines drawn in this iteration + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(DSP4_vars.view_x2); + DSP4_WRITE_WORD(DSP4_vars.view_y2); + + ////////////////////////////////////////////////////// + + // SR = 0x00 + + // determine # of DSP4_vars.raster lines used + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.view_y2; + + // prevent overdraw + if (DSP4_vars.view_y2 >= DSP4_vars.poly_raster[0][0]) + DSP4_vars.segments = 0; + else + DSP4_vars.poly_raster[0][0] = DSP4_vars.view_y2; + + // don't draw outside the window + if (DSP4_vars.view_y2 < DSP4_vars.poly_top[0][0]) + { + DSP4_vars.segments = 0; + + // flush remaining DSP4_vars.raster lines + if (DSP4_vars.view_y1 >= DSP4_vars.poly_top[0][0]) + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.poly_top[0][0]; + } + + // SR = 0x80 + + DSP4_WRITE_WORD(DSP4_vars.segments); + + ////////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + int32 px_dx, py_dy; + int32 x_scroll, y_scroll; + + // SR = 0x00 + + // linear interpolation (lerp) between projected points + px_dx = (DSP4_vars.view_xofs2 - DSP4_vars.view_xofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + py_dy = (DSP4_vars.view_yofs2 - DSP4_vars.view_yofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + + // starting step values + x_scroll = SEX16(DSP4_vars.poly_cx[0][0] + DSP4_vars.view_xofs1); + y_scroll = SEX16(-DSP4_vars.viewport_bottom + DSP4_vars.view_yofs1 + DSP4_vars.view_yofsenv + DSP4_vars.poly_cx[1][0] - DSP4_vars.world_yofs); + + // SR = 0x80 + + // rasterize line + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < DSP4_vars.segments; DSP4_vars.lcv++) + { + // 1. HDMA memory pointer (bg2) + // 2. vertical scroll offset ($2110) + // 3. horizontal scroll offset ($210F) + + DSP4_WRITE_WORD(DSP4_vars.poly_ptr[0][0]); + DSP4_WRITE_WORD((uint16)((y_scroll + 0x8000) >> 16)); + DSP4_WRITE_WORD((uint16)((x_scroll + 0x8000) >> 16)); + + // update memory address + DSP4_vars.poly_ptr[0][0] -= 4; + + // update screen values + x_scroll += px_dx; + y_scroll += py_dy; + } + } + + ///////////////////////////////////////////////////// + // Post-update + + // update new viewer (x,y,scroll) to last DSP4_vars.raster line drawn + DSP4_vars.view_x1 = DSP4_vars.view_x2; + DSP4_vars.view_y1 = DSP4_vars.view_y2; + DSP4_vars.view_xofs1 = DSP4_vars.view_xofs2; + DSP4_vars.view_yofs1 = DSP4_vars.view_yofs2; + + //////////////////////////////////////////////////// + // command check + + // scan next command + DSP4.in_count = 2; + DSP4_WAIT(1) resume1 : + + // check for opcode termination + DSP4_vars.distance = DSP4_READ_WORD(); + if (DSP4_vars.distance == -0x8000) + break; + + // already have 2 bytes in queue + DSP4.in_count = 10; + DSP4_WAIT(2) resume2 : + + // inspect inputs + DSP4_vars.view_y2 = DSP4_READ_WORD(); + DSP4_vars.view_dy = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_x2 = DSP4_READ_WORD(); + DSP4_vars.view_dx = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + } + while (1); + + DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + +void DSP4_OP08() +{ + int16 win_left, win_right; + int16 view_x[2], view_y[2]; + int16 envelope[2][2]; + + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + } + + //////////////////////////////////////////////////// + // process initial inputs for two polygons + + // clip values + DSP4_vars.poly_clipRt[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_clipRt[0][1] = DSP4_READ_WORD(); + DSP4_vars.poly_clipRt[1][0] = DSP4_READ_WORD(); + DSP4_vars.poly_clipRt[1][1] = DSP4_READ_WORD(); + + DSP4_vars.poly_clipLf[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_clipLf[0][1] = DSP4_READ_WORD(); + DSP4_vars.poly_clipLf[1][0] = DSP4_READ_WORD(); + DSP4_vars.poly_clipLf[1][1] = DSP4_READ_WORD(); + + // unknown (constant) (ex. 1P/2P = $00A6, $00A6, $00A6, $00A6) + DSP4_READ_WORD(); + DSP4_READ_WORD(); + DSP4_READ_WORD(); + DSP4_READ_WORD(); + + // unknown (constant) (ex. 1P/2P = $00A5, $00A5, $00A7, $00A7) + DSP4_READ_WORD(); + DSP4_READ_WORD(); + DSP4_READ_WORD(); + DSP4_READ_WORD(); + + // polygon centering (left,right) + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[0][1] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][1] = DSP4_READ_WORD(); + + // HDMA pointer locations + DSP4_vars.poly_ptr[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[0][1] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[1][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[1][1] = DSP4_READ_WORD(); + + // starting DSP4_vars.raster line below the horizon + DSP4_vars.poly_bottom[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_bottom[0][1] = DSP4_READ_WORD(); + DSP4_vars.poly_bottom[1][0] = DSP4_READ_WORD(); + DSP4_vars.poly_bottom[1][1] = DSP4_READ_WORD(); + + // top boundary line to clip + DSP4_vars.poly_top[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[0][1] = DSP4_READ_WORD(); + DSP4_vars.poly_top[1][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[1][1] = DSP4_READ_WORD(); + + // unknown + // (ex. 1P = $2FC8, $0034, $FF5C, $0035) + // + // (ex. 2P = $3178, $0034, $FFCC, $0035) + // (ex. 2P = $2FC8, $0034, $FFCC, $0035) + + DSP4_READ_WORD(); + DSP4_READ_WORD(); + DSP4_READ_WORD(); + DSP4_READ_WORD(); + + // look at guidelines for both polygon shapes + DSP4_vars.distance = DSP4_READ_WORD(); + view_x[0] = DSP4_READ_WORD(); + view_y[0] = DSP4_READ_WORD(); + view_x[1] = DSP4_READ_WORD(); + view_y[1] = DSP4_READ_WORD(); + + // envelope shaping guidelines (one frame only) + envelope[0][0] = DSP4_READ_WORD(); + envelope[0][1] = DSP4_READ_WORD(); + envelope[1][0] = DSP4_READ_WORD(); + envelope[1][1] = DSP4_READ_WORD(); + + // starting base values to project from + DSP4_vars.poly_start[0] = view_x[0]; + DSP4_vars.poly_start[1] = view_x[1]; + + // starting DSP4_vars.raster lines to begin drawing + DSP4_vars.poly_raster[0][0] = view_y[0]; + DSP4_vars.poly_raster[0][1] = view_y[0]; + DSP4_vars.poly_raster[1][0] = view_y[1]; + DSP4_vars.poly_raster[1][1] = view_y[1]; + + // starting distances + DSP4_vars.poly_plane[0] = DSP4_vars.distance; + DSP4_vars.poly_plane[1] = DSP4_vars.distance; + + // SR = 0x00 + + // re-center coordinates + win_left = DSP4_vars.poly_cx[0][0] - view_x[0] + envelope[0][0]; + win_right = DSP4_vars.poly_cx[0][1] - view_x[0] + envelope[0][1]; + + // saturate offscreen data for polygon #1 + if (win_left < DSP4_vars.poly_clipLf[0][0]) + { + win_left = DSP4_vars.poly_clipLf[0][0]; + } + if (win_left > DSP4_vars.poly_clipRt[0][0]) + { + win_left = DSP4_vars.poly_clipRt[0][0]; + } + if (win_right < DSP4_vars.poly_clipLf[0][1]) + { + win_right = DSP4_vars.poly_clipLf[0][1]; + } + if (win_right > DSP4_vars.poly_clipRt[0][1]) + { + win_right = DSP4_vars.poly_clipRt[0][1]; + } + + // SR = 0x80 + + // initial output for polygon #1 + DSP4_CLEAR_OUT(); + DSP4_WRITE_BYTE(win_left & 0xff); + DSP4_WRITE_BYTE(win_right & 0xff); + + + do + { + int16 polygon; + //////////////////////////////////////////////////// + // command check + + // scan next command + DSP4.in_count = 2; + DSP4_WAIT(1) resume1 : + + // terminate op + DSP4_vars.distance = DSP4_READ_WORD(); + if (DSP4_vars.distance == -0x8000) + break; + + // already have 2 bytes in queue + DSP4.in_count = 16; + + DSP4_WAIT(2) resume2 : + + // look at guidelines for both polygon shapes + view_x[0] = DSP4_READ_WORD(); + view_y[0] = DSP4_READ_WORD(); + view_x[1] = DSP4_READ_WORD(); + view_y[1] = DSP4_READ_WORD(); + + // envelope shaping guidelines (one frame only) + envelope[0][0] = DSP4_READ_WORD(); + envelope[0][1] = DSP4_READ_WORD(); + envelope[1][0] = DSP4_READ_WORD(); + envelope[1][1] = DSP4_READ_WORD(); + + //////////////////////////////////////////////////// + // projection begins + + // init + DSP4_CLEAR_OUT(); + + + ////////////////////////////////////////////// + // solid polygon renderer - 2 shapes + + for (polygon = 0; polygon < 2; polygon++) + { + int32 left_inc, right_inc; + int16 x1_final, x2_final; + int16 env[2][2]; + int16 poly; + + // SR = 0x00 + + // # DSP4_vars.raster lines to draw + DSP4_vars.segments = DSP4_vars.poly_raster[polygon][0] - view_y[polygon]; + + // prevent overdraw + if (DSP4_vars.segments > 0) + { + // bump drawing cursor + DSP4_vars.poly_raster[polygon][0] = view_y[polygon]; + DSP4_vars.poly_raster[polygon][1] = view_y[polygon]; + } + else + DSP4_vars.segments = 0; + + // don't draw outside the window + if (view_y[polygon] < DSP4_vars.poly_top[polygon][0]) + { + DSP4_vars.segments = 0; + + // flush remaining DSP4_vars.raster lines + if (view_y[polygon] >= DSP4_vars.poly_top[polygon][0]) + DSP4_vars.segments = view_y[polygon] - DSP4_vars.poly_top[polygon][0]; + } + + // SR = 0x80 + + // tell user how many DSP4_vars.raster structures to read in + DSP4_WRITE_WORD(DSP4_vars.segments); + + // normal parameters + poly = polygon; + + ///////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + int32 win_left, win_right; + + // road turnoff selection + if( (uint16) envelope[ polygon ][ 0 ] == (uint16) 0xc001 ) + poly = 1; + else if( envelope[ polygon ][ 1 ] == 0x3fff ) + poly = 1; + + /////////////////////////////////////////////// + // left side of polygon + + // perspective correction on additional shaping parameters + env[0][0] = envelope[polygon][0] * DSP4_vars.poly_plane[poly] >> 15; + env[0][1] = envelope[polygon][0] * DSP4_vars.distance >> 15; + + // project new shapes (left side) + x1_final = view_x[poly] + env[0][0]; + x2_final = DSP4_vars.poly_start[poly] + env[0][1]; + + // interpolate between projected points with shaping + left_inc = (x2_final - x1_final) * DSP4_Inverse(DSP4_vars.segments) << 1; + if (DSP4_vars.segments == 1) + left_inc = -left_inc; + + /////////////////////////////////////////////// + // right side of polygon + + // perspective correction on additional shaping parameters + env[1][0] = envelope[polygon][1] * DSP4_vars.poly_plane[poly] >> 15;; + env[1][1] = envelope[polygon][1] * DSP4_vars.distance >> 15; + + // project new shapes (right side) + x1_final = view_x[poly] + env[1][0]; + x2_final = DSP4_vars.poly_start[poly] + env[1][1]; + + + // interpolate between projected points with shaping + right_inc = (x2_final - x1_final) * DSP4_Inverse(DSP4_vars.segments) << 1; + if (DSP4_vars.segments == 1) + right_inc = -right_inc; + + /////////////////////////////////////////////// + // update each point on the line + + win_left = SEX16(DSP4_vars.poly_cx[polygon][0] - DSP4_vars.poly_start[poly] + env[0][0]); + win_right = SEX16(DSP4_vars.poly_cx[polygon][1] - DSP4_vars.poly_start[poly] + env[1][0]); + + // update DSP4_vars.distance drawn into world + DSP4_vars.poly_plane[polygon] = DSP4_vars.distance; + + // rasterize line + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < DSP4_vars.segments; DSP4_vars.lcv++) + { + int16 x_left, x_right; + + // project new coordinates + win_left += left_inc; + win_right += right_inc; + + // grab integer portion, drop fraction (no rounding) + x_left = (int16)(win_left >> 16); + x_right = (int16)(win_right >> 16); + + // saturate offscreen data + if (x_left < DSP4_vars.poly_clipLf[polygon][0]) + x_left = DSP4_vars.poly_clipLf[polygon][0]; + if (x_left > DSP4_vars.poly_clipRt[polygon][0]) + x_left = DSP4_vars.poly_clipRt[polygon][0]; + if (x_right < DSP4_vars.poly_clipLf[polygon][1]) + x_right = DSP4_vars.poly_clipLf[polygon][1]; + if (x_right > DSP4_vars.poly_clipRt[polygon][1]) + x_right = DSP4_vars.poly_clipRt[polygon][1]; + + // 1. HDMA memory pointer + // 2. Left window position ($2126/$2128) + // 3. Right window position ($2127/$2129) + + DSP4_WRITE_WORD(DSP4_vars.poly_ptr[polygon][0]); + DSP4_WRITE_BYTE(x_left & 0xff); + DSP4_WRITE_BYTE(x_right & 0xff); + + + // update memory pointers + DSP4_vars.poly_ptr[polygon][0] -= 4; + DSP4_vars.poly_ptr[polygon][1] -= 4; + } // end rasterize line + } + + //////////////////////////////////////////////// + // Post-update + + // new projection spot to continue rasterizing from + DSP4_vars.poly_start[polygon] = view_x[poly]; + } // end polygon rasterizer + } + while (1); + + // unknown output + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(0); + + + DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + +void DSP4_OP09() +{ + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + case 3: + goto resume3; break; + case 4: + goto resume4; break; + case 5: + goto resume5; break; + case 6: + goto resume6; break; + } + + //////////////////////////////////////////////////// + // process initial inputs + + // grab screen information + DSP4_vars.viewport_cx = DSP4_READ_WORD(); + DSP4_vars.viewport_cy = DSP4_READ_WORD(); + DSP4_READ_WORD(); // 0x0000 + DSP4_vars.viewport_left = DSP4_READ_WORD(); + DSP4_vars.viewport_right = DSP4_READ_WORD(); + DSP4_vars.viewport_top = DSP4_READ_WORD(); + DSP4_vars.viewport_bottom = DSP4_READ_WORD(); + + // starting DSP4_vars.raster line below the horizon + DSP4_vars.poly_bottom[0][0] = DSP4_vars.viewport_bottom - DSP4_vars.viewport_cy; + DSP4_vars.poly_raster[0][0] = 0x100; + + do + { + //////////////////////////////////////////////////// + // check for new sprites + + DSP4.in_count = 4; + DSP4_WAIT(1) resume1 : + + //////////////////////////////////////////////// + // DSP4_vars.raster overdraw check + + DSP4_vars.raster = DSP4_READ_WORD(); + + // continue updating the DSP4_vars.raster line where overdraw begins + if (DSP4_vars.raster < DSP4_vars.poly_raster[0][0]) + { + DSP4_vars.sprite_clipy = DSP4_vars.viewport_bottom - (DSP4_vars.poly_bottom[0][0] - DSP4_vars.raster); + DSP4_vars.poly_raster[0][0] = DSP4_vars.raster; + } + + ///////////////////////////////////////////////// + // identify sprite + + // op termination + DSP4_vars.distance = DSP4_READ_WORD(); + if (DSP4_vars.distance == -0x8000) + goto terminate; + + + // no sprite + if (DSP4_vars.distance == 0x0000) + { + continue; + } + + //////////////////////////////////////////////////// + // process projection information + + // vehicle sprite + if ((uint16) DSP4_vars.distance == 0x9000) + { + int16 car_left, car_right, car_back; + int16 impact_left, impact_back; + int16 world_spx, world_spy; + int16 view_spx, view_spy; + uint16 energy; + + // we already have 4 bytes we want + DSP4.in_count = 14; + DSP4_WAIT(2) resume2 : + + // filter inputs + energy = DSP4_READ_WORD(); + impact_back = DSP4_READ_WORD(); + car_back = DSP4_READ_WORD(); + impact_left = DSP4_READ_WORD(); + car_left = DSP4_READ_WORD(); + DSP4_vars.distance = DSP4_READ_WORD(); + car_right = DSP4_READ_WORD(); + + // calculate car's world (x,y) values + world_spx = car_right - car_left; + world_spy = car_back; + + // add in collision vector [needs bit-twiddling] + world_spx -= energy * (impact_left - car_left) >> 16; + world_spy -= energy * (car_back - impact_back) >> 16; + + // perspective correction for world (x,y) + view_spx = world_spx * DSP4_vars.distance >> 15; + view_spy = world_spy * DSP4_vars.distance >> 15; + + // convert to screen values + DSP4_vars.sprite_x = DSP4_vars.viewport_cx + view_spx; + DSP4_vars.sprite_y = DSP4_vars.viewport_bottom - (DSP4_vars.poly_bottom[0][0] - view_spy); + + // make the car's (x)-coordinate available + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(world_spx); + + // grab a few remaining vehicle values + DSP4.in_count = 4; + DSP4_WAIT(3) resume3 : + + // add vertical lift factor + DSP4_vars.sprite_y += DSP4_READ_WORD(); + } + // terrain sprite + else + { + int16 world_spx, world_spy; + int16 view_spx, view_spy; + + // we already have 4 bytes we want + DSP4.in_count = 10; + DSP4_WAIT(4) resume4 : + + // sort loop inputs + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_raster[0][1] = DSP4_READ_WORD(); + world_spx = DSP4_READ_WORD(); + world_spy = DSP4_READ_WORD(); + + // compute base DSP4_vars.raster line from the bottom + DSP4_vars.segments = DSP4_vars.poly_bottom[0][0] - DSP4_vars.raster; + + // perspective correction for world (x,y) + view_spx = world_spx * DSP4_vars.distance >> 15; + view_spy = world_spy * DSP4_vars.distance >> 15; + + // convert to screen values + DSP4_vars.sprite_x = DSP4_vars.viewport_cx + view_spx - DSP4_vars.poly_cx[0][0]; + DSP4_vars.sprite_y = DSP4_vars.viewport_bottom - DSP4_vars.segments + view_spy; + } + + // default sprite size: 16x16 + DSP4_vars.sprite_size = 1; + DSP4_vars.sprite_attr = DSP4_READ_WORD(); + + //////////////////////////////////////////////////// + // convert tile data to SNES OAM format + + do + { + uint16 header; + + int16 sp_x, sp_y, sp_attr, sp_dattr; + int16 sp_dx, sp_dy; + int16 pixels; + + bool8 draw; + + DSP4.in_count = 2; + DSP4_WAIT(5) resume5 : + + draw = TRUE; + + // opcode termination + DSP4_vars.raster = DSP4_READ_WORD(); + if (DSP4_vars.raster == -0x8000) + goto terminate; + + // stop code + if (DSP4_vars.raster == 0x0000 && !DSP4_vars.sprite_size) + break; + + // toggle sprite size + if (DSP4_vars.raster == 0x0000) + { + DSP4_vars.sprite_size = !DSP4_vars.sprite_size; + continue; + } + + // check for valid sprite header + header = DSP4_vars.raster; + header >>= 8; + if (header != 0x20 && + header != 0x2e && //This is for attractor sprite + header != 0x40 && + header != 0x60 && + header != 0xa0 && + header != 0xc0 && + header != 0xe0) + break; + + // read in rest of sprite data + DSP4.in_count = 4; + DSP4_WAIT(6) resume6 : + + draw = TRUE; + + ///////////////////////////////////// + // process tile data + + // sprite deltas + sp_dattr = DSP4_vars.raster; + sp_dy = DSP4_READ_WORD(); + sp_dx = DSP4_READ_WORD(); + + // update coordinates to screen space + sp_x = DSP4_vars.sprite_x + sp_dx; + sp_y = DSP4_vars.sprite_y + sp_dy; + + // update sprite nametable/attribute information + sp_attr = DSP4_vars.sprite_attr + sp_dattr; + + // allow partially visibile tiles + pixels = DSP4_vars.sprite_size ? 15 : 7; + + DSP4_CLEAR_OUT(); + + // transparent tile to clip off parts of a sprite (overdraw) + if (DSP4_vars.sprite_clipy - pixels <= sp_y && + sp_y <= DSP4_vars.sprite_clipy && + sp_x >= DSP4_vars.viewport_left - pixels && + sp_x <= DSP4_vars.viewport_right && + DSP4_vars.sprite_clipy >= DSP4_vars.viewport_top - pixels && + DSP4_vars.sprite_clipy <= DSP4_vars.viewport_bottom) + { + DSP4_OP0B(&draw, sp_x, DSP4_vars.sprite_clipy, 0x00EE, DSP4_vars.sprite_size, 0); + } + + + // normal sprite tile + if (sp_x >= DSP4_vars.viewport_left - pixels && + sp_x <= DSP4_vars.viewport_right && + sp_y >= DSP4_vars.viewport_top - pixels && + sp_y <= DSP4_vars.viewport_bottom && + sp_y <= DSP4_vars.sprite_clipy) + { + DSP4_OP0B(&draw, sp_x, sp_y, sp_attr, DSP4_vars.sprite_size, 0); + } + + + // no following OAM data + DSP4_OP0B(&draw, 0, 0x0100, 0, 0, 1); + } + while (1); + } + while (1); + + terminate : DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + +const uint16 OP0A_Values[16] = { 0x0000, 0x0030, 0x0060, 0x0090, 0x00c0, 0x00f0, 0x0120, 0x0150, 0xfe80, + 0xfeb0, 0xfee0, 0xff10, 0xff40, 0xff70, 0xffa0, 0xffd0 }; + +void DSP4_OP0A(int16 n2, int16 *o1, int16 *o2, int16 *o3, int16 *o4) +{ + *o4 = OP0A_Values[(n2 & 0x000f)]; + *o3 = OP0A_Values[(n2 & 0x00f0) >> 4]; + *o2 = OP0A_Values[(n2 & 0x0f00) >> 8]; + *o1 = OP0A_Values[(n2 & 0xf000) >> 12]; +} + +////////////////////////////////////////////////////////////// + +void DSP4_OP0B(bool8 *draw, int16 sp_x, int16 sp_y, int16 sp_attr, bool8 size, bool8 stop) +{ + int16 Row1, Row2; + + // SR = 0x00 + + // align to nearest 8-pixel row + Row1 = (sp_y >> 3) & 0x1f; + Row2 = (Row1 + 1) & 0x1f; + + // check boundaries + if (!((sp_y < 0) || ((sp_y & 0x01ff) < 0x00eb))) + { + *draw = 0; + } + if (size) + { + if (DSP4_vars.OAM_Row[Row1] + 1 >= DSP4_vars.OAM_RowMax) + *draw = 0; + if (DSP4_vars.OAM_Row[Row2] + 1 >= DSP4_vars.OAM_RowMax) + *draw = 0; + } + else + { + if (DSP4_vars.OAM_Row[Row1] >= DSP4_vars.OAM_RowMax) + { + *draw = 0; + } + } + + // emulator fail-safe (unknown if this really exists) + if (DSP4_vars.sprite_count >= 128) + { + *draw = 0; + } + + // SR = 0x80 + + if (*draw) + { + // Row tiles + if (size) + { + DSP4_vars.OAM_Row[Row1] += 2; + DSP4_vars.OAM_Row[Row2] += 2; + } + else + { + DSP4_vars.OAM_Row[Row1]++; + } + + // yield OAM output + DSP4_WRITE_WORD(1); + + // pack OAM data: x,y,name,attr + DSP4_WRITE_BYTE(sp_x & 0xff); + DSP4_WRITE_BYTE(sp_y & 0xff); + DSP4_WRITE_WORD(sp_attr); + + DSP4_vars.sprite_count++; + + // OAM: size,msb data + // save post-oam table data for future retrieval + DSP4_vars.OAM_attr[DSP4_vars.OAM_index] |= ((sp_x <0 || sp_x> 255) << DSP4_vars.OAM_bits); + DSP4_vars.OAM_bits++; + + DSP4_vars.OAM_attr[DSP4_vars.OAM_index] |= (size << DSP4_vars.OAM_bits); + DSP4_vars.OAM_bits++; + + // move to next byte in buffer + if (DSP4_vars.OAM_bits == 16) + { + DSP4_vars.OAM_bits = 0; + DSP4_vars.OAM_index++; + } + } + else if (stop) + { + // yield no OAM output + DSP4_WRITE_WORD(0); + } +} + +////////////////////////////////////////////////////////////// + +void DSP4_OP0D() +{ + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + } + + //////////////////////////////////////////////////// + // process initial inputs + + // sort inputs + DSP4_vars.world_y = DSP4_READ_DWORD(); + DSP4_vars.poly_bottom[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][0] = DSP4_READ_WORD(); + DSP4_vars.viewport_bottom = DSP4_READ_WORD(); + DSP4_vars.world_x = DSP4_READ_DWORD(); + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[0][0] = DSP4_READ_WORD(); + DSP4_vars.world_yofs = DSP4_READ_WORD(); + DSP4_vars.world_dy = DSP4_READ_DWORD(); + DSP4_vars.world_dx = DSP4_READ_DWORD(); + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_READ_WORD(); // 0x0000 + DSP4_vars.world_xenv = SEX78(DSP4_READ_WORD()); + DSP4_vars.world_ddy = DSP4_READ_WORD(); + DSP4_vars.world_ddx = DSP4_READ_WORD(); + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // initial (x,y,offset) at starting DSP4_vars.raster line + DSP4_vars.view_x1 = (int16)((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16); + DSP4_vars.view_y1 = (int16)(DSP4_vars.world_y >> 16); + DSP4_vars.view_xofs1 = (int16)(DSP4_vars.world_x >> 16); + DSP4_vars.view_yofs1 = DSP4_vars.world_yofs; + + // first DSP4_vars.raster line + DSP4_vars.poly_raster[0][0] = DSP4_vars.poly_bottom[0][0]; + + + do + { + //////////////////////////////////////////////////// + // process one iteration of projection + + // perspective projection of world (x,y,scroll) points + // based on the current projection lines + DSP4_vars.view_x2 = (int16)(( ( ( DSP4_vars.world_x + DSP4_vars.world_xenv ) >> 16 ) * DSP4_vars.distance >> 15 ) + ( DSP4_vars.view_turnoff_x * DSP4_vars.distance >> 15 )); + DSP4_vars.view_y2 = (int16)((DSP4_vars.world_y >> 16) * DSP4_vars.distance >> 15); + DSP4_vars.view_xofs2 = DSP4_vars.view_x2; + DSP4_vars.view_yofs2 = (DSP4_vars.world_yofs * DSP4_vars.distance >> 15) + DSP4_vars.poly_bottom[0][0] - DSP4_vars.view_y2; + + // 1. World x-location before transformation + // 2. Viewer x-position at the current + // 3. World y-location before perspective projection + // 4. Viewer y-position below the horizon + // 5. Number of DSP4_vars.raster lines drawn in this iteration + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD((uint16)((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16)); + DSP4_WRITE_WORD(DSP4_vars.view_x2); + DSP4_WRITE_WORD((uint16)(DSP4_vars.world_y >> 16)); + DSP4_WRITE_WORD(DSP4_vars.view_y2); + + ////////////////////////////////////////////////////////// + + // SR = 0x00 + + // determine # of DSP4_vars.raster lines used + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.view_y2; + + // prevent overdraw + if (DSP4_vars.view_y2 >= DSP4_vars.poly_raster[0][0]) + DSP4_vars.segments = 0; + else + DSP4_vars.poly_raster[0][0] = DSP4_vars.view_y2; + + // don't draw outside the window + if (DSP4_vars.view_y2 < DSP4_vars.poly_top[0][0]) + { + DSP4_vars.segments = 0; + + // flush remaining DSP4_vars.raster lines + if (DSP4_vars.view_y1 >= DSP4_vars.poly_top[0][0]) + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.poly_top[0][0]; + } + + // SR = 0x80 + + DSP4_WRITE_WORD(DSP4_vars.segments); + + ////////////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + int32 px_dx, py_dy; + int32 x_scroll, y_scroll; + + // SR = 0x00 + + // linear interpolation (lerp) between projected points + px_dx = (DSP4_vars.view_xofs2 - DSP4_vars.view_xofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + py_dy = (DSP4_vars.view_yofs2 - DSP4_vars.view_yofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + + // starting step values + x_scroll = SEX16(DSP4_vars.poly_cx[0][0] + DSP4_vars.view_xofs1); + y_scroll = SEX16(-DSP4_vars.viewport_bottom + DSP4_vars.view_yofs1 + DSP4_vars.view_yofsenv + DSP4_vars.poly_cx[1][0] - DSP4_vars.world_yofs); + + // SR = 0x80 + + // rasterize line + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < DSP4_vars.segments; DSP4_vars.lcv++) + { + // 1. HDMA memory pointer (bg1) + // 2. vertical scroll offset ($210E) + // 3. horizontal scroll offset ($210D) + + DSP4_WRITE_WORD(DSP4_vars.poly_ptr[0][0]); + DSP4_WRITE_WORD((uint16)((y_scroll + 0x8000) >> 16)); + DSP4_WRITE_WORD((uint16)((x_scroll + 0x8000) >> 16)); + + + // update memory address + DSP4_vars.poly_ptr[0][0] -= 4; + + // update screen values + x_scroll += px_dx; + y_scroll += py_dy; + } + } + + ///////////////////////////////////////////////////// + // Post-update + + // update new viewer (x,y,scroll) to last DSP4_vars.raster line drawn + DSP4_vars.view_x1 = DSP4_vars.view_x2; + DSP4_vars.view_y1 = DSP4_vars.view_y2; + DSP4_vars.view_xofs1 = DSP4_vars.view_xofs2; + DSP4_vars.view_yofs1 = DSP4_vars.view_yofs2; + + // add deltas for projection lines + DSP4_vars.world_dx += SEX78(DSP4_vars.world_ddx); + DSP4_vars.world_dy += SEX78(DSP4_vars.world_ddy); + + // update projection lines + DSP4_vars.world_x += (DSP4_vars.world_dx + DSP4_vars.world_xenv); + DSP4_vars.world_y += DSP4_vars.world_dy; + + //////////////////////////////////////////////////// + // command check + + // scan next command + DSP4.in_count = 2; + DSP4_WAIT(1) resume1 : + + // inspect input + DSP4_vars.distance = DSP4_READ_WORD(); + + // terminate op + if (DSP4_vars.distance == -0x8000) + break; + + // already have 2 bytes in queue + DSP4.in_count = 6; + DSP4_WAIT(2) resume2: + + // inspect inputs + DSP4_vars.world_ddy = DSP4_READ_WORD(); + DSP4_vars.world_ddx = DSP4_READ_WORD(); + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // no envelope here + DSP4_vars.world_xenv = 0; + } + while (1); + + DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + + +void DSP4_OP0E() +{ + DSP4_vars.OAM_RowMax = 16; + memset(DSP4_vars.OAM_Row, 0, 64); +} + + +////////////////////////////////////////////////////////////// + +void DSP4_OP0F() +{ + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + case 3: + goto resume3; break; + case 4: + goto resume4; break; + } + + //////////////////////////////////////////////////// + // process initial inputs + + // sort inputs + DSP4_READ_WORD(); // 0x0000 + DSP4_vars.world_y = DSP4_READ_DWORD(); + DSP4_vars.poly_bottom[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][0] = DSP4_READ_WORD(); + DSP4_vars.viewport_bottom = DSP4_READ_WORD(); + DSP4_vars.world_x = DSP4_READ_DWORD(); + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[0][0] = DSP4_READ_WORD(); + DSP4_vars.world_yofs = DSP4_READ_WORD(); + DSP4_vars.world_dy = DSP4_READ_DWORD(); + DSP4_vars.world_dx = DSP4_READ_DWORD(); + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_READ_WORD(); // 0x0000 + DSP4_vars.world_xenv = DSP4_READ_DWORD(); + DSP4_vars.world_ddy = DSP4_READ_WORD(); + DSP4_vars.world_ddx = DSP4_READ_WORD(); + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // initial (x,y,offset) at starting DSP4_vars.raster line + DSP4_vars.view_x1 = (int16)((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16); + DSP4_vars.view_y1 = (int16)(DSP4_vars.world_y >> 16); + DSP4_vars.view_xofs1 = (int16)(DSP4_vars.world_x >> 16); + DSP4_vars.view_yofs1 = DSP4_vars.world_yofs; + DSP4_vars.view_turnoff_x = 0; + DSP4_vars.view_turnoff_dx = 0; + + // first DSP4_vars.raster line + DSP4_vars.poly_raster[0][0] = DSP4_vars.poly_bottom[0][0]; + + + do + { + //////////////////////////////////////////////////// + // process one iteration of projection + + // perspective projection of world (x,y,scroll) points + // based on the current projection lines + DSP4_vars.view_x2 = (int16)(((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16) * DSP4_vars.distance >> 15); + DSP4_vars.view_y2 = (int16)((DSP4_vars.world_y >> 16) * DSP4_vars.distance >> 15); + DSP4_vars.view_xofs2 = DSP4_vars.view_x2; + DSP4_vars.view_yofs2 = (DSP4_vars.world_yofs * DSP4_vars.distance >> 15) + DSP4_vars.poly_bottom[0][0] - DSP4_vars.view_y2; + + // 1. World x-location before transformation + // 2. Viewer x-position at the next + // 3. World y-location before perspective projection + // 4. Viewer y-position below the horizon + // 5. Number of DSP4_vars.raster lines drawn in this iteration + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD((uint16)((DSP4_vars.world_x + DSP4_vars.world_xenv) >> 16)); + DSP4_WRITE_WORD(DSP4_vars.view_x2); + DSP4_WRITE_WORD((uint16)(DSP4_vars.world_y >> 16)); + DSP4_WRITE_WORD(DSP4_vars.view_y2); + + ////////////////////////////////////////////////////// + + // SR = 0x00 + + // determine # of DSP4_vars.raster lines used + DSP4_vars.segments = DSP4_vars.poly_raster[0][0] - DSP4_vars.view_y2; + + // prevent overdraw + if (DSP4_vars.view_y2 >= DSP4_vars.poly_raster[0][0]) + DSP4_vars.segments = 0; + else + DSP4_vars.poly_raster[0][0] = DSP4_vars.view_y2; + + // don't draw outside the window + if (DSP4_vars.view_y2 < DSP4_vars.poly_top[0][0]) + { + DSP4_vars.segments = 0; + + // flush remaining DSP4_vars.raster lines + if (DSP4_vars.view_y1 >= DSP4_vars.poly_top[0][0]) + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.poly_top[0][0]; + } + + // SR = 0x80 + + DSP4_WRITE_WORD(DSP4_vars.segments); + + ////////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + int32 px_dx, py_dy; + int32 x_scroll, y_scroll; + + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < 4; DSP4_vars.lcv++) + { + // grab inputs + DSP4.in_count = 4; + DSP4_WAIT(1); + resume1 : + for (;;) + { + int16 distance; + int16 color, red, green, blue; + + distance = DSP4_READ_WORD(); + color = DSP4_READ_WORD(); + + // U1+B5+G5+R5 + red = color & 0x1f; + green = (color >> 5) & 0x1f; + blue = (color >> 10) & 0x1f; + + // dynamic lighting + red = (red * distance >> 15) & 0x1f; + green = (green * distance >> 15) & 0x1f; + blue = (blue * distance >> 15) & 0x1f; + color = red | (green << 5) | (blue << 10); + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(color); + break; + } + } + + ////////////////////////////////////////////////////// + + // SR = 0x00 + + // linear interpolation (lerp) between projected points + px_dx = (DSP4_vars.view_xofs2 - DSP4_vars.view_xofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + py_dy = (DSP4_vars.view_yofs2 - DSP4_vars.view_yofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + + + // starting step values + x_scroll = SEX16(DSP4_vars.poly_cx[0][0] + DSP4_vars.view_xofs1); + y_scroll = SEX16(-DSP4_vars.viewport_bottom + DSP4_vars.view_yofs1 + DSP4_vars.view_yofsenv + DSP4_vars.poly_cx[1][0] - DSP4_vars.world_yofs); + + // SR = 0x80 + + // rasterize line + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < DSP4_vars.segments; DSP4_vars.lcv++) + { + // 1. HDMA memory pointer + // 2. vertical scroll offset ($210E) + // 3. horizontal scroll offset ($210D) + + DSP4_WRITE_WORD(DSP4_vars.poly_ptr[0][0]); + DSP4_WRITE_WORD((uint16)((y_scroll + 0x8000) >> 16)); + DSP4_WRITE_WORD((uint16)((x_scroll + 0x8000) >> 16)); + + // update memory address + DSP4_vars.poly_ptr[0][0] -= 4; + + // update screen values + x_scroll += px_dx; + y_scroll += py_dy; + } + } + + //////////////////////////////////////////////////// + // Post-update + + // update new viewer (x,y,scroll) to last DSP4_vars.raster line drawn + DSP4_vars.view_x1 = DSP4_vars.view_x2; + DSP4_vars.view_y1 = DSP4_vars.view_y2; + DSP4_vars.view_xofs1 = DSP4_vars.view_xofs2; + DSP4_vars.view_yofs1 = DSP4_vars.view_yofs2; + + // add deltas for projection lines + DSP4_vars.world_dx += SEX78(DSP4_vars.world_ddx); + DSP4_vars.world_dy += SEX78(DSP4_vars.world_ddy); + + // update projection lines + DSP4_vars.world_x += (DSP4_vars.world_dx + DSP4_vars.world_xenv); + DSP4_vars.world_y += DSP4_vars.world_dy; + + // update road turnoff position + DSP4_vars.view_turnoff_x += DSP4_vars.view_turnoff_dx; + + //////////////////////////////////////////////////// + // command check + + // scan next command + DSP4.in_count = 2; + DSP4_WAIT(2) resume2: + + // check for termination + DSP4_vars.distance = DSP4_READ_WORD(); + if (DSP4_vars.distance == -0x8000) + break; + + // road splice + if( (uint16) DSP4_vars.distance == 0x8001 ) + { + DSP4.in_count = 6; + DSP4_WAIT(3) resume3: + + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_vars.view_turnoff_x = DSP4_READ_WORD(); + DSP4_vars.view_turnoff_dx = DSP4_READ_WORD(); + + // factor in new changes + DSP4_vars.view_x1 += ( DSP4_vars.view_turnoff_x * DSP4_vars.distance >> 15 ); + DSP4_vars.view_xofs1 += ( DSP4_vars.view_turnoff_x * DSP4_vars.distance >> 15 ); + + // update stepping values + DSP4_vars.view_turnoff_x += DSP4_vars.view_turnoff_dx; + + DSP4.in_count = 2; + DSP4_WAIT(2) + } + + // already have 2 bytes in queue + DSP4.in_count = 6; + DSP4_WAIT(4) resume4 : + + // inspect inputs + DSP4_vars.world_ddy = DSP4_READ_WORD(); + DSP4_vars.world_ddx = DSP4_READ_WORD(); + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // no envelope here + DSP4_vars.world_xenv = 0; + } + while (1); + + // terminate op + DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + + +void DSP4_OP10() +{ + DSP4.waiting4command = FALSE; + + // op flow control + switch (DSP4_vars.DSP4_Logic) + { + case 1: + goto resume1; break; + case 2: + goto resume2; break; + case 3: + goto resume3; break; + } + + //////////////////////////////////////////////////// + // sort inputs + + DSP4_READ_WORD(); // 0x0000 + DSP4_vars.world_y = DSP4_READ_DWORD(); + DSP4_vars.poly_bottom[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_top[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_cx[1][0] = DSP4_READ_WORD(); + DSP4_vars.viewport_bottom = DSP4_READ_WORD(); + DSP4_vars.world_x = DSP4_READ_DWORD(); + DSP4_vars.poly_cx[0][0] = DSP4_READ_WORD(); + DSP4_vars.poly_ptr[0][0] = DSP4_READ_WORD(); + DSP4_vars.world_yofs = DSP4_READ_WORD(); + DSP4_vars.distance = DSP4_READ_WORD(); + DSP4_vars.view_y2 = DSP4_READ_WORD(); + DSP4_vars.view_dy = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_x2 = DSP4_READ_WORD(); + DSP4_vars.view_dx = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_yofsenv = DSP4_READ_WORD(); + + // initial (x,y,offset) at starting DSP4_vars.raster line + DSP4_vars.view_x1 = (int16)(DSP4_vars.world_x >> 16); + DSP4_vars.view_y1 = (int16)(DSP4_vars.world_y >> 16); + DSP4_vars.view_xofs1 = DSP4_vars.view_x1; + DSP4_vars.view_yofs1 = DSP4_vars.world_yofs; + + // first DSP4_vars.raster line + DSP4_vars.poly_raster[0][0] = DSP4_vars.poly_bottom[0][0]; + + do + { + //////////////////////////////////////////////////// + // process one iteration of projection + + // add shaping + DSP4_vars.view_x2 += DSP4_vars.view_dx; + DSP4_vars.view_y2 += DSP4_vars.view_dy; + + // vertical scroll calculation + DSP4_vars.view_xofs2 = DSP4_vars.view_x2; + DSP4_vars.view_yofs2 = (DSP4_vars.world_yofs * DSP4_vars.distance >> 15) + DSP4_vars.poly_bottom[0][0] - DSP4_vars.view_y2; + + // 1. Viewer x-position at the next + // 2. Viewer y-position below the horizon + // 3. Number of DSP4_vars.raster lines drawn in this iteration + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(DSP4_vars.view_x2); + DSP4_WRITE_WORD(DSP4_vars.view_y2); + + ////////////////////////////////////////////////////// + + // SR = 0x00 + + // determine # of DSP4_vars.raster lines used + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.view_y2; + + // prevent overdraw + if (DSP4_vars.view_y2 >= DSP4_vars.poly_raster[0][0]) + DSP4_vars.segments = 0; + else + DSP4_vars.poly_raster[0][0] = DSP4_vars.view_y2; + + // don't draw outside the window + if (DSP4_vars.view_y2 < DSP4_vars.poly_top[0][0]) + { + DSP4_vars.segments = 0; + + // flush remaining DSP4_vars.raster lines + if (DSP4_vars.view_y1 >= DSP4_vars.poly_top[0][0]) + DSP4_vars.segments = DSP4_vars.view_y1 - DSP4_vars.poly_top[0][0]; + } + + // SR = 0x80 + + DSP4_WRITE_WORD(DSP4_vars.segments); + + ////////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < 4; DSP4_vars.lcv++) + { + // grab inputs + DSP4.in_count = 4; + DSP4_WAIT(1); + resume1 : + for (;;) + { + int16 distance; + int16 color, red, green, blue; + + distance = DSP4_READ_WORD(); + color = DSP4_READ_WORD(); + + // U1+B5+G5+R5 + red = color & 0x1f; + green = (color >> 5) & 0x1f; + blue = (color >> 10) & 0x1f; + + // dynamic lighting + red = (red * distance >> 15) & 0x1f; + green = (green * distance >> 15) & 0x1f; + blue = (blue * distance >> 15) & 0x1f; + color = red | (green << 5) | (blue << 10); + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(color); + break; + } + } + } + + ////////////////////////////////////////////////////// + + // scan next command if no SR check needed + if (DSP4_vars.segments) + { + int32 px_dx, py_dy; + int32 x_scroll, y_scroll; + + // SR = 0x00 + + // linear interpolation (lerp) between projected points + px_dx = (DSP4_vars.view_xofs2 - DSP4_vars.view_xofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + py_dy = (DSP4_vars.view_yofs2 - DSP4_vars.view_yofs1) * DSP4_Inverse(DSP4_vars.segments) << 1; + + // starting step values + x_scroll = SEX16(DSP4_vars.poly_cx[0][0] + DSP4_vars.view_xofs1); + y_scroll = SEX16(-DSP4_vars.viewport_bottom + DSP4_vars.view_yofs1 + DSP4_vars.view_yofsenv + DSP4_vars.poly_cx[1][0] - DSP4_vars.world_yofs); + + // SR = 0x80 + + // rasterize line + for (DSP4_vars.lcv = 0; DSP4_vars.lcv < DSP4_vars.segments; DSP4_vars.lcv++) + { + // 1. HDMA memory pointer (bg2) + // 2. vertical scroll offset ($2110) + // 3. horizontal scroll offset ($210F) + + DSP4_WRITE_WORD(DSP4_vars.poly_ptr[0][0]); + DSP4_WRITE_WORD((uint16)((y_scroll + 0x8000) >> 16)); + DSP4_WRITE_WORD((uint16)((x_scroll + 0x8000) >> 16)); + + // update memory address + DSP4_vars.poly_ptr[0][0] -= 4; + + // update screen values + x_scroll += px_dx; + y_scroll += py_dy; + } + } + + ///////////////////////////////////////////////////// + // Post-update + + // update new viewer (x,y,scroll) to last DSP4_vars.raster line drawn + DSP4_vars.view_x1 = DSP4_vars.view_x2; + DSP4_vars.view_y1 = DSP4_vars.view_y2; + DSP4_vars.view_xofs1 = DSP4_vars.view_xofs2; + DSP4_vars.view_yofs1 = DSP4_vars.view_yofs2; + + //////////////////////////////////////////////////// + // command check + + // scan next command + DSP4.in_count = 2; + DSP4_WAIT(2) resume2 : + + // check for opcode termination + DSP4_vars.distance = DSP4_READ_WORD(); + if (DSP4_vars.distance == -0x8000) + break; + + // already have 2 bytes in queue + DSP4.in_count = 10; + DSP4_WAIT(3) resume3 : + + + // inspect inputs + DSP4_vars.view_y2 = DSP4_READ_WORD(); + DSP4_vars.view_dy = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + DSP4_vars.view_x2 = DSP4_READ_WORD(); + DSP4_vars.view_dx = DSP4_READ_WORD() * DSP4_vars.distance >> 15; + } + while (1); + + DSP4.waiting4command = TRUE; +} + +////////////////////////////////////////////////////////////// + +void DSP4_OP11(int16 A, int16 B, int16 C, int16 D, int16 *M) +{ + // 0x155 = 341 = Horizontal Width of the Screen + *M = ((A * 0x0155 >> 2) & 0xf000) | + ((B * 0x0155 >> 6) & 0x0f00) | + ((C * 0x0155 >> 10) & 0x00f0) | + ((D * 0x0155 >> 14) & 0x000f); +} + + + + + +///////////////////////////////////////////////////////////// +//Processing Code +///////////////////////////////////////////////////////////// +uint8 dsp4_byte; +uint16 dsp4_address; + +void InitDSP4() +{ + memset(&DSP4, 0, sizeof(DSP4)); + DSP4.waiting4command = TRUE; +} + +void DSP4SetByte() +{ + // clear pending read + if (DSP4.out_index < DSP4.out_count) + { + DSP4.out_index++; + return; + } + + if (DSP4.waiting4command) + { + if (DSP4.half_command) + { + DSP4.command |= (dsp4_byte << 8); + DSP4.in_index = 0; + DSP4.waiting4command = FALSE; + DSP4.half_command = FALSE; + DSP4.out_count = 0; + DSP4.out_index = 0; + + DSP4_vars.DSP4_Logic = 0; + + + switch (DSP4.command) + { + case 0x0000: + DSP4.in_count = 4; break; + case 0x0001: + DSP4.in_count = 44; break; + case 0x0003: + DSP4.in_count = 0; break; + case 0x0005: + DSP4.in_count = 0; break; + case 0x0006: + DSP4.in_count = 0; break; + case 0x0007: + DSP4.in_count = 34; break; + case 0x0008: + DSP4.in_count = 90; break; + case 0x0009: + DSP4.in_count = 14; break; + case 0x000a: + DSP4.in_count = 6; break; + case 0x000b: + DSP4.in_count = 6; break; + case 0x000d: + DSP4.in_count = 42; break; + case 0x000e: + DSP4.in_count = 0; break; + case 0x000f: + DSP4.in_count = 46; break; + case 0x0010: + DSP4.in_count = 36; break; + case 0x0011: + DSP4.in_count = 8; break; + default: + DSP4.waiting4command = TRUE; + break; + } + } + else + { + DSP4.command = dsp4_byte; + DSP4.half_command = TRUE; + } + } + else + { + DSP4.parameters[DSP4.in_index] = dsp4_byte; + DSP4.in_index++; + } + + if (!DSP4.waiting4command && DSP4.in_count == DSP4.in_index) + { + // Actually execute the command + DSP4.waiting4command = TRUE; + DSP4.out_index = 0; + DSP4.in_index = 0; + + switch (DSP4.command) + { + // 16-bit multiplication + case 0x0000: + { + int16 multiplier, multiplicand; + int32 product; + + multiplier = DSP4_READ_WORD(); + multiplicand = DSP4_READ_WORD(); + + DSP4_Multiply(multiplicand, multiplier, &product); + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD((uint16)(product)); + DSP4_WRITE_WORD((uint16)(product >> 16)); + } + break; + + // single-player track projection + case 0x0001: + DSP4_OP01(); break; + + // single-player selection + case 0x0003: + DSP4_OP03(); break; + + // clear OAM + case 0x0005: + DSP4_OP05(); break; + + // transfer OAM + case 0x0006: + DSP4_OP06(); break; + + // single-player track turnoff projection + case 0x0007: + DSP4_OP07(); break; + + // solid polygon projection + case 0x0008: + DSP4_OP08(); break; + + // sprite projection + case 0x0009: + DSP4_OP09(); break; + + // unknown + case 0x000A: + { + int16 in1a = DSP4_READ_WORD(); + int16 in2a = DSP4_READ_WORD(); + int16 in3a = DSP4_READ_WORD(); + int16 out1a, out2a, out3a, out4a; + + DSP4_OP0A(in2a, &out2a, &out1a, &out4a, &out3a); + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(out1a); + DSP4_WRITE_WORD(out2a); + DSP4_WRITE_WORD(out3a); + DSP4_WRITE_WORD(out4a); + } + break; + + // set OAM + case 0x000B: + { + int16 sp_x = DSP4_READ_WORD(); + int16 sp_y = DSP4_READ_WORD(); + int16 sp_attr = DSP4_READ_WORD(); + bool8 draw = 1; + + DSP4_CLEAR_OUT(); + + DSP4_OP0B(&draw, sp_x, sp_y, sp_attr, 0, 1); + } + break; + + // multi-player track projection + case 0x000D: + DSP4_OP0D(); break; + + // multi-player selection + case 0x000E: + DSP4_OP0E(); break; + + // single-player track projection with lighting + case 0x000F: + DSP4_OP0F(); break; + + // single-player track turnoff projection with lighting + case 0x0010: + DSP4_OP10(); break; + + // unknown: horizontal mapping command + case 0x0011: + { + int16 a, b, c, d, m; + + + d = DSP4_READ_WORD(); + c = DSP4_READ_WORD(); + b = DSP4_READ_WORD(); + a = DSP4_READ_WORD(); + + DSP4_OP11(a, b, c, d, &m); + + DSP4_CLEAR_OUT(); + DSP4_WRITE_WORD(m); + + break; + } + + default: + break; + } + } +} + +void DSP4GetByte() +{ + if (DSP4.out_count) + { + dsp4_byte = (uint8) DSP4.output[DSP4.out_index&0x1FF]; + DSP4.out_index++; + if (DSP4.out_count == DSP4.out_index) + DSP4.out_count = 0; + } + else + { + dsp4_byte = 0xff; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/dsp4/dsp4emu.h b/libmednahawk/src/snes/src/chip/dsp4/dsp4emu.h new file mode 100644 index 0000000000..7610387326 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/dsp4/dsp4emu.h @@ -0,0 +1,108 @@ +//DSP-4 emulator code +//Copyright (c) 2004-2006 Dreamer Nom, John Weidman, Kris Bleakley, Nach, z80 gaiden + +#ifndef DSP4EMU_H +#define DSP4EMU_H + +#undef TRUE +#undef FALSE +#define TRUE true +#define FALSE false + +struct DSP4_t +{ + bool8 waiting4command; + bool8 half_command; + uint16 command; + uint32 in_count; + uint32 in_index; + uint32 out_count; + uint32 out_index; + uint8 parameters[512]; + uint8 output[512]; +}; + +extern struct DSP4_t DSP4; + +struct DSP4_vars_t +{ + // op control + int8 DSP4_Logic; // controls op flow + + + // projection format + int16 lcv; // loop-control variable + int16 distance; // z-position into virtual world + int16 raster; // current raster line + int16 segments; // number of raster lines drawn + + // 1.15.16 or 1.15.0 [sign, integer, fraction] + int32 world_x; // line of x-projection in world + int32 world_y; // line of y-projection in world + int32 world_dx; // projection line x-delta + int32 world_dy; // projection line y-delta + int16 world_ddx; // x-delta increment + int16 world_ddy; // y-delta increment + int32 world_xenv; // world x-shaping factor + int16 world_yofs; // world y-vertical scroll + + int16 view_x1; // current viewer-x + int16 view_y1; // current viewer-y + int16 view_x2; // future viewer-x + int16 view_y2; // future viewer-y + int16 view_dx; // view x-delta factor + int16 view_dy; // view y-delta factor + int16 view_xofs1; // current viewer x-vertical scroll + int16 view_yofs1; // current viewer y-vertical scroll + int16 view_xofs2; // future viewer x-vertical scroll + int16 view_yofs2; // future viewer y-vertical scroll + int16 view_yofsenv; // y-scroll shaping factor + int16 view_turnoff_x; // road turnoff data + int16 view_turnoff_dx; // road turnoff delta factor + + + // drawing area + + int16 viewport_cx; // x-center of viewport window + int16 viewport_cy; // y-center of render window + int16 viewport_left; // x-left of viewport + int16 viewport_right; // x-right of viewport + int16 viewport_top; // y-top of viewport + int16 viewport_bottom; // y-bottom of viewport + + + // sprite structure + + int16 sprite_x; // projected x-pos of sprite + int16 sprite_y; // projected y-pos of sprite + int16 sprite_attr; // obj attributes + bool8 sprite_size; // sprite size: 8x8 or 16x16 + int16 sprite_clipy; // visible line to clip pixels off + int16 sprite_count; + + // generic projection variables designed for + // two solid polygons + two polygon sides + + int16 poly_clipLf[2][2]; // left clip boundary + int16 poly_clipRt[2][2]; // right clip boundary + int16 poly_ptr[2][2]; // HDMA structure pointers + int16 poly_raster[2][2]; // current raster line below horizon + int16 poly_top[2][2]; // top clip boundary + int16 poly_bottom[2][2]; // bottom clip boundary + int16 poly_cx[2][2]; // center for left/right points + int16 poly_start[2]; // current projection points + int16 poly_plane[2]; // previous z-plane distance + + + // OAM + int16 OAM_attr[16]; // OAM (size,MSB) data + int16 OAM_index; // index into OAM table + int16 OAM_bits; // offset into OAM table + + int16 OAM_RowMax; // maximum number of tiles per 8 aligned pixels (row) + int16 OAM_Row[32]; // current number of tiles per row +}; + +extern struct DSP4_vars_t DSP4_vars; + +#endif diff --git a/libmednahawk/src/snes/src/chip/obc1/obc1.cpp b/libmednahawk/src/snes/src/chip/obc1/obc1.cpp new file mode 100644 index 0000000000..38f18331e5 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/obc1/obc1.cpp @@ -0,0 +1,84 @@ +#include <../base.hpp> + +#define OBC1_CPP +namespace SNES { + +OBC1 obc1; + +#include "serialization.cpp" + +void OBC1::init() { +} + +void OBC1::enable() { + bus.map(Bus::MapDirect, 0x00, 0x3f, 0x6000, 0x7fff, *this); + bus.map(Bus::MapDirect, 0x80, 0xbf, 0x6000, 0x7fff, *this); +} + +void OBC1::power() { + reset(); +} + +void OBC1::reset() { + for(unsigned i = 0x0000; i <= 0x1fff; i++) ram_write(i, 0xff); + + status.baseptr = (ram_read(0x1ff5) & 1) ? 0x1800 : 0x1c00; + status.address = (ram_read(0x1ff6) & 0x7f); + status.shift = (ram_read(0x1ff6) & 3) << 1; +} + +uint8 OBC1::read(unsigned addr) { + addr &= 0x1fff; + if((addr & 0x1ff8) != 0x1ff0) return ram_read(addr); + + switch(addr) { default: //never used, avoids compiler warning + case 0x1ff0: return ram_read(status.baseptr + (status.address << 2) + 0); + case 0x1ff1: return ram_read(status.baseptr + (status.address << 2) + 1); + case 0x1ff2: return ram_read(status.baseptr + (status.address << 2) + 2); + case 0x1ff3: return ram_read(status.baseptr + (status.address << 2) + 3); + case 0x1ff4: return ram_read(status.baseptr + (status.address >> 2) + 0x200); + case 0x1ff5: case 0x1ff6: case 0x1ff7: return ram_read(addr); + } +} + +void OBC1::write(unsigned addr, uint8 data) { + addr &= 0x1fff; + if((addr & 0x1ff8) != 0x1ff0) return ram_write(addr, data); + + switch(addr) { + case 0x1ff0: ram_write(status.baseptr + (status.address << 2) + 0, data); break; + case 0x1ff1: ram_write(status.baseptr + (status.address << 2) + 1, data); break; + case 0x1ff2: ram_write(status.baseptr + (status.address << 2) + 2, data); break; + case 0x1ff3: ram_write(status.baseptr + (status.address << 2) + 3, data); break; + case 0x1ff4: { + uint8 temp = ram_read(status.baseptr + (status.address >> 2) + 0x200); + temp = (temp & ~(3 << status.shift)) | ((data & 3) << status.shift); + ram_write(status.baseptr + (status.address >> 2) + 0x200, temp); + } break; + case 0x1ff5: { + status.baseptr = (data & 1) ? 0x1800 : 0x1c00; + ram_write(addr, data); + } break; + case 0x1ff6: { + status.address = (data & 0x7f); + status.shift = (data & 3) << 1; + ram_write(addr, data); + } break; + case 0x1ff7: { + ram_write(addr, data); + } break; + } +} + +uint8 OBC1::ram_read(unsigned addr) { + return memory::cartram.read(addr & 0x1fff); +} + +void OBC1::ram_write(unsigned addr, uint8 data) { + memory::cartram.write(addr & 0x1fff, data); +} + +OBC1::OBC1() {} +OBC1::~OBC1() {} + +}; diff --git a/libmednahawk/src/snes/src/chip/obc1/obc1.hpp b/libmednahawk/src/snes/src/chip/obc1/obc1.hpp new file mode 100644 index 0000000000..8be6a912c9 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/obc1/obc1.hpp @@ -0,0 +1,26 @@ +class OBC1 : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void serialize(serializer&); + OBC1(); + ~OBC1(); + +private: + uint8 ram_read(unsigned addr); + void ram_write(unsigned addr, uint8 data); + + struct { + uint16 address; + uint16 baseptr; + uint16 shift; + } status; +}; + +extern OBC1 obc1; diff --git a/libmednahawk/src/snes/src/chip/obc1/serialization.cpp b/libmednahawk/src/snes/src/chip/obc1/serialization.cpp new file mode 100644 index 0000000000..f375c34dec --- /dev/null +++ b/libmednahawk/src/snes/src/chip/obc1/serialization.cpp @@ -0,0 +1,9 @@ +#ifdef OBC1_CPP + +void OBC1::serialize(serializer &s) { + s.integer(status.address); + s.integer(status.baseptr); + s.integer(status.shift); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/sa1/bus/bus.cpp b/libmednahawk/src/snes/src/chip/sa1/bus/bus.cpp new file mode 100644 index 0000000000..3bd6f8757f --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/bus/bus.cpp @@ -0,0 +1,243 @@ +#ifdef SA1_CPP + +VBRBus vbrbus; +SA1Bus sa1bus; + +namespace memory { + StaticRAM iram(2048); + //accessed by: + VectorSelectionPage vectorsp; //S-CPU + SA-1 + CPUIRAM cpuiram; //S-CPU + SA1IRAM sa1iram; //SA-1 + SA1BWRAM sa1bwram; //SA-1 + CC1BWRAM cc1bwram; //S-CPU + BitmapRAM bitmapram; //SA-1 +} + +//$230c (VDPL), $230d (VDPH) use this bus to read variable-length data. +//this is used both to avoid VBR-reads from accessing MMIO registers, and +//to avoid syncing the S-CPU and SA-1*; as both chips are able to access +//these ports. +//(* eg, memory::cartram is used directly, as memory::sa1bwram syncs to the S-CPU) +void VBRBus::init() { + map(MapDirect, 0x00, 0xff, 0x0000, 0xffff, memory::memory_unmapped); + + map(MapLinear, 0x00, 0x3f, 0x0000, 0x07ff, memory::iram); + map(MapLinear, 0x00, 0x3f, 0x3000, 0x37ff, memory::iram); + map(MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::cartram); + map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x40, 0x4f, 0x0000, 0xffff, memory::cartram); + map(MapLinear, 0x80, 0xbf, 0x0000, 0x07ff, memory::iram); + map(MapLinear, 0x80, 0xbf, 0x3000, 0x37ff, memory::iram); + map(MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::cartram); + map(MapLinear, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0xc0, 0xff, 0x0000, 0xffff, memory::cartrom); +} + +void SA1Bus::init() { + map(MapDirect, 0x00, 0xff, 0x0000, 0xffff, memory::memory_unmapped); + for(unsigned i = 0x2200; i <= 0x23ff; i++) memory::mmio.map(i, sa1); + + map(MapLinear, 0x00, 0x3f, 0x0000, 0x07ff, memory::sa1iram); + map(MapDirect, 0x00, 0x3f, 0x2200, 0x23ff, memory::mmio); + map(MapLinear, 0x00, 0x3f, 0x3000, 0x37ff, memory::sa1iram); + map(MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::sa1bwram); + map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x40, 0x4f, 0x0000, 0xffff, memory::sa1bwram); + map(MapLinear, 0x60, 0x6f, 0x0000, 0xffff, memory::bitmapram); + map(MapLinear, 0x80, 0xbf, 0x0000, 0x07ff, memory::sa1iram); + map(MapDirect, 0x80, 0xbf, 0x2200, 0x23ff, memory::mmio); + map(MapLinear, 0x80, 0xbf, 0x3000, 0x37ff, memory::sa1iram); + map(MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::sa1bwram); + map(MapLinear, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0xc0, 0xff, 0x0000, 0xffff, memory::cartrom); + + bus.map(MapLinear, 0x00, 0x3f, 0x3000, 0x37ff, memory::cpuiram); + bus.map(MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::cc1bwram); + bus.map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom); + bus.map(MapLinear, 0x40, 0x4f, 0x0000, 0xffff, memory::cc1bwram); + bus.map(MapLinear, 0x80, 0xbf, 0x3000, 0x37ff, memory::cpuiram); + bus.map(MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::cc1bwram); + bus.map(MapLinear, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom); + bus.map(MapLinear, 0xc0, 0xff, 0x0000, 0xffff, memory::cartrom); + + memory::vectorsp.sync(); +} + +//=================== +//VectorSelectionPage +//=================== + +//this class maps $00:[ff00-ffff] for the purpose of supporting: +//$2209.d6 IVSW (S-CPU IRQ vector selection) (0 = cart, 1 = SA-1) +//$2209.d4 NVSW (S-CPU NMI vector selection) (0 = cart, 1 = SA-1) +//when set, vector addresses are over-ridden with SA-1 register settings: +//SIV = S-CPU IRQ vector address override +//SNV = S-CPU NMI vector address override +// +//$00:[ffea-ffeb|ffee-ffef] are special cased on read; +//all other addresses return original mapped data. + +uint8 VectorSelectionPage::read(unsigned addr) { + switch(0xff00 | (addr & 0xff)) { + case 0xffea: case 0xffeb: { + if(sa1.mmio.cpu_nvsw == true) return (sa1.mmio.snv >> ((addr & 1) << 3)); + } break; + + case 0xffee: case 0xffef: { + if(sa1.mmio.cpu_ivsw == true) return (sa1.mmio.siv >> ((addr & 1) << 3)); + } break; + } + + return access->read(addr); +} + +void VectorSelectionPage::write(unsigned addr, uint8 data) { + return access->write(addr, data); +} + +//call this whenever bus is remapped. +//note: S-CPU and SA-1 bus always share $00:[ff00-ffff] as cartridge ROM data; +//the SA-1 MMC does not allow mapping these independently between processors. +//this allows this class to be shared for both, caching only ones' access class. +void VectorSelectionPage::sync() { + if(bus.page[0x00ff00 >> 8].access != this) { + //bus was re-mapped, hook access routine + access = bus.page[0x00ff00 >> 8].access; + bus.page[0x00ff00 >> 8].access = this; + sa1bus.page[0x00ff00 >> 8].access = this; + } +} + +//======= +//SA1IRAM +//======= + +unsigned SA1IRAM::size() const { + return memory::iram.size(); +} + +uint8 SA1IRAM::read(unsigned addr) { + scheduler.sync_copcpu(); + return memory::iram.read(addr); +} + +void SA1IRAM::write(unsigned addr, uint8 data) { + scheduler.sync_copcpu(); + memory::iram.write(addr, data); +} + +//======= +//CPUIRAM +//======= + +unsigned CPUIRAM::size() const { + return memory::iram.size(); +} + +uint8 CPUIRAM::read(unsigned addr) { + scheduler.sync_cpucop(); + return memory::iram.read(addr); +} + +void CPUIRAM::write(unsigned addr, uint8 data) { + scheduler.sync_cpucop(); + memory::iram.write(addr, data); +} + +//======== +//SA1BWRAM +//======== + +unsigned SA1BWRAM::size() const { + return memory::cartram.size(); +} + +uint8 SA1BWRAM::read(unsigned addr) { + scheduler.sync_copcpu(); + return memory::cartram.read(addr); +} + +void SA1BWRAM::write(unsigned addr, uint8 data) { + scheduler.sync_copcpu(); + memory::cartram.write(addr, data); +} + +//======== +//CC1BWRAM +//======== + +unsigned CC1BWRAM::size() const { + return memory::cartram.size(); +} + +uint8 CC1BWRAM::read(unsigned addr) { + scheduler.sync_cpucop(); + if(dma) return sa1.dma_cc1_read(addr); + return memory::cartram.read(addr); +} + +void CC1BWRAM::write(unsigned addr, uint8 data) { + scheduler.sync_cpucop(); + memory::cartram.write(addr, data); +} + +//========= +//BitmapRAM +//========= + +unsigned BitmapRAM::size() const { + return 0x100000; +} + +uint8 BitmapRAM::read(unsigned addr) { + scheduler.sync_copcpu(); + + if(sa1.mmio.bbf == 0) { + //4bpp + unsigned shift = addr & 1; + addr = (addr >> 1) & (memory::cartram.size() - 1); + switch(shift) { default: + case 0: return (memory::cartram.read(addr) >> 0) & 15; + case 1: return (memory::cartram.read(addr) >> 4) & 15; + } + } else { + //2bpp + unsigned shift = addr & 3; + addr = (addr >> 2) & (memory::cartram.size() - 1); + switch(shift) { default: + case 0: return (memory::cartram.read(addr) >> 0) & 3; + case 1: return (memory::cartram.read(addr) >> 2) & 3; + case 2: return (memory::cartram.read(addr) >> 4) & 3; + case 3: return (memory::cartram.read(addr) >> 6) & 3; + } + } +} + +void BitmapRAM::write(unsigned addr, uint8 data) { + scheduler.sync_copcpu(); + + if(sa1.mmio.bbf == 0) { + //4bpp + unsigned shift = addr & 1; + addr = (addr >> 1) & (memory::cartram.size() - 1); + switch(shift) { default: + case 0: data = (memory::cartram.read(addr) & 0xf0) | ((data & 15) << 0); break; + case 1: data = (memory::cartram.read(addr) & 0x0f) | ((data & 15) << 4); break; + } + } else { + //2bpp + unsigned shift = addr & 3; + addr = (addr >> 2) & (memory::cartram.size() - 1); + switch(shift) { default: + case 0: data = (memory::cartram.read(addr) & 0xfc) | ((data & 3) << 0); break; + case 1: data = (memory::cartram.read(addr) & 0xf3) | ((data & 3) << 2); break; + case 2: data = (memory::cartram.read(addr) & 0xcf) | ((data & 3) << 4); break; + case 3: data = (memory::cartram.read(addr) & 0x3f) | ((data & 3) << 6); break; + } + } + + memory::cartram.write(addr, data); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/sa1/bus/bus.hpp b/libmednahawk/src/snes/src/chip/sa1/bus/bus.hpp new file mode 100644 index 0000000000..bcdf95afb8 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/bus/bus.hpp @@ -0,0 +1,56 @@ +struct VBRBus : Bus { + void init(); +}; + +struct SA1Bus : Bus { + void init(); +}; + +struct VectorSelectionPage : Memory { + alwaysinline uint8 read(unsigned); + alwaysinline void write(unsigned, uint8); + void sync(); + Memory *access; +}; + +struct CPUIRAM : Memory { + unsigned size() const; + alwaysinline uint8 read(unsigned); + alwaysinline void write(unsigned, uint8); +}; + +struct SA1IRAM : Memory { + unsigned size() const; + alwaysinline uint8 read(unsigned); + alwaysinline void write(unsigned, uint8); +}; + +struct SA1BWRAM : Memory { + unsigned size() const; + alwaysinline uint8 read(unsigned); + alwaysinline void write(unsigned, uint8); +}; + +struct CC1BWRAM : Memory { + unsigned size() const; + alwaysinline uint8 read(unsigned); + alwaysinline void write(unsigned, uint8); + bool dma; +}; + +struct BitmapRAM : Memory { + unsigned size() const; + alwaysinline uint8 read(unsigned); + alwaysinline void write(unsigned, uint8); +}; + +namespace memory { + extern StaticRAM iram; + + extern VectorSelectionPage vectorsp; + extern CPUIRAM cpuiram; + extern SA1IRAM sa1iram; + extern SA1BWRAM sa1bwram; + extern CC1BWRAM cc1bwram; + extern BitmapRAM bitmapram; +}; diff --git a/libmednahawk/src/snes/src/chip/sa1/dma/dma.cpp b/libmednahawk/src/snes/src/chip/sa1/dma/dma.cpp new file mode 100644 index 0000000000..09e416be02 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/dma/dma.cpp @@ -0,0 +1,139 @@ +#ifdef SA1_CPP + +//==================== +//direct data transfer +//==================== + +void SA1::dma_normal() { + while(mmio.dtc--) { + uint8 data = regs.mdr; + uint32 dsa = mmio.dsa++; + uint32 dda = mmio.dda++; + + //source and destination cannot be the same + if(mmio.sd == DMA::SourceBWRAM && mmio.dd == DMA::DestBWRAM) continue; + if(mmio.sd == DMA::SourceIRAM && mmio.dd == DMA::DestIRAM ) continue; + + switch(mmio.sd) { + case DMA::SourceROM: { + if((dsa & 0x408000) == 0x008000 || (dsa & 0xc00000) == 0xc00000) { + data = sa1bus.read(dsa); + } + } break; + + case DMA::SourceBWRAM: { + if((dsa & 0x40e000) == 0x006000 || (dsa & 0xf00000) == 0x400000) { + data = sa1bus.read(dsa); + } + } break; + + case DMA::SourceIRAM: { + data = memory::iram.read(dsa & 0x07ff); + } break; + } + + switch(mmio.dd) { + case DMA::DestBWRAM: { + if((dda & 0x40e000) == 0x006000 || (dda & 0xf00000) == 0x400000) { + sa1bus.write(dda, data); + } + } break; + + case DMA::DestIRAM: { + memory::iram.write(dda & 0x07ff, data); + } break; + } + } + + mmio.dma_irqfl = true; + if(mmio.dma_irqen) mmio.dma_irqcl = 0; +} + +//((byte & 6) << 3) + (byte & 1) explanation: +//transforms a byte index (0-7) into a planar index: +//result[] = { 0, 1, 16, 17, 32, 33, 48, 49 }; +//works for 2bpp, 4bpp and 8bpp modes + +//=========================== +//type-1 character conversion +//=========================== + +void SA1::dma_cc1() { + memory::cc1bwram.dma = true; + mmio.chdma_irqfl = true; + if(mmio.chdma_irqen) { + mmio.chdma_irqcl = 0; + cpu.regs.irq = 1; + } +} + +uint8 SA1::dma_cc1_read(unsigned addr) { + //16 bytes/char (2bpp); 32 bytes/char (4bpp); 64 bytes/char (8bpp) + unsigned charmask = (1 << (6 - mmio.dmacb)) - 1; + + if((addr & charmask) == 0) { + //buffer next character to I-RAM + unsigned bpp = 2 << (2 - mmio.dmacb); + unsigned bpl = (8 << mmio.dmasize) >> mmio.dmacb; + unsigned bwmask = memory::cartram.size() - 1; + unsigned tile = ((addr - mmio.dsa) & bwmask) >> (6 - mmio.dmacb); + unsigned ty = (tile >> mmio.dmasize); + unsigned tx = tile & ((1 << mmio.dmasize) - 1); + unsigned bwaddr = mmio.dsa + ty * 8 * bpl + tx * bpp; + + for(unsigned y = 0; y < 8; y++) { + uint64 data = 0; + for(unsigned byte = 0; byte < bpp; byte++) { + data |= (uint64)memory::cartram.read((bwaddr + byte) & bwmask) << (byte << 3); + } + bwaddr += bpl; + + uint8 out[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + for(unsigned x = 0; x < 8; x++) { + out[0] |= (data & 1) << (7 - x); data >>= 1; + out[1] |= (data & 1) << (7 - x); data >>= 1; + if(mmio.dmacb == 2) continue; + out[2] |= (data & 1) << (7 - x); data >>= 1; + out[3] |= (data & 1) << (7 - x); data >>= 1; + if(mmio.dmacb == 1) continue; + out[4] |= (data & 1) << (7 - x); data >>= 1; + out[5] |= (data & 1) << (7 - x); data >>= 1; + out[6] |= (data & 1) << (7 - x); data >>= 1; + out[7] |= (data & 1) << (7 - x); data >>= 1; + } + + for(unsigned byte = 0; byte < bpp; byte++) { + unsigned p = mmio.dda + (y << 1) + ((byte & 6) << 3) + (byte & 1); + memory::iram.write(p & 0x07ff, out[byte]); + } + } + } + + return memory::iram.read((mmio.dda + (addr & charmask)) & 0x07ff); +} + +//=========================== +//type-2 character conversion +//=========================== + +void SA1::dma_cc2() { + //select register file index (0-7 or 8-15) + const uint8 *brf = &mmio.brf[(dma.line & 1) << 3]; + unsigned bpp = 2 << (2 - mmio.dmacb); + unsigned addr = mmio.dda & 0x07ff; + addr &= ~((1 << (7 - mmio.dmacb)) - 1); + addr += (dma.line & 8) * bpp; + addr += (dma.line & 7) * 2; + + for(unsigned byte = 0; byte < bpp; byte++) { + uint8 output = 0; + for(unsigned bit = 0; bit < 8; bit++) { + output |= ((brf[bit] >> byte) & 1) << (7 - bit); + } + memory::iram.write(addr + ((byte & 6) << 3) + (byte & 1), output); + } + + dma.line = (dma.line + 1) & 15; +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/sa1/dma/dma.hpp b/libmednahawk/src/snes/src/chip/sa1/dma/dma.hpp new file mode 100644 index 0000000000..383d345f74 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/dma/dma.hpp @@ -0,0 +1,11 @@ +struct DMA { + enum CDEN { DmaNormal = 0, DmaCharConversion = 1 }; + enum SD { SourceROM = 0, SourceBWRAM = 1, SourceIRAM = 2 }; + enum DD { DestIRAM = 0, DestBWRAM = 1 }; + unsigned line; +} dma; + +void dma_normal(); +void dma_cc1(); +uint8 dma_cc1_read(unsigned addr); +void dma_cc2(); diff --git a/libmednahawk/src/snes/src/chip/sa1/memory/memory.cpp b/libmednahawk/src/snes/src/chip/sa1/memory/memory.cpp new file mode 100644 index 0000000000..9d8224701b --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/memory/memory.cpp @@ -0,0 +1,24 @@ +#ifdef SA1_CPP + +//ROM, I-RAM and MMIO registers are accessed at ~10.74MHz (2 clock ticks) +//BW-RAM is accessed at ~5.37MHz (4 clock ticks) +//tick() == 2 clock ticks +//note: bus conflict delays are not emulated at this time + +void SA1::op_io() { + tick(); +} + +uint8 SA1::op_read(unsigned addr) { + tick(); + if(((addr & 0x40e000) == 0x006000) || ((addr & 0xd00000) == 0x400000)) tick(); + return sa1bus.read(addr); +} + +void SA1::op_write(unsigned addr, uint8 data) { + tick(); + if(((addr & 0x40e000) == 0x006000) || ((addr & 0xd00000) == 0x400000)) tick(); + sa1bus.write(addr, data); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/sa1/memory/memory.hpp b/libmednahawk/src/snes/src/chip/sa1/memory/memory.hpp new file mode 100644 index 0000000000..fff5e97e87 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/memory/memory.hpp @@ -0,0 +1,5 @@ +alwaysinline void op_io(); +alwaysinline uint8 op_read(unsigned addr); +alwaysinline void op_write(unsigned addr, uint8 data); + +uint8_t vbr_read(unsigned addr); diff --git a/libmednahawk/src/snes/src/chip/sa1/mmio/mmio.cpp b/libmednahawk/src/snes/src/chip/sa1/mmio/mmio.cpp new file mode 100644 index 0000000000..07f91fb335 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/mmio/mmio.cpp @@ -0,0 +1,633 @@ +#ifdef SA1_CPP + +//BS-X flash carts, when present, are mapped to 0x400000+ +Memory& SA1::mmio_access(unsigned &addr) { + if(!memory::bsxflash.data()) return memory::cartrom; + if(addr < 0x400000) return memory::cartrom; + addr &= 0x3fffff; + return bsxflash; +} + +//(CCNT) SA-1 control +void SA1::mmio_w2200(uint8 data) { + if(mmio.sa1_resb && !(data & 0x80)) { + //reset SA-1 CPU + regs.pc.w = mmio.crv; + regs.pc.b = 0x00; + } + + mmio.sa1_irq = (data & 0x80); + mmio.sa1_rdyb = (data & 0x40); + mmio.sa1_resb = (data & 0x20); + mmio.sa1_nmi = (data & 0x10); + mmio.smeg = (data & 0x0f); + + if(mmio.sa1_irq) { + mmio.sa1_irqfl = true; + if(mmio.sa1_irqen) mmio.sa1_irqcl = 0; + } + + if(mmio.sa1_nmi) { + mmio.sa1_nmifl = true; + if(mmio.sa1_nmien) mmio.sa1_nmicl = 0; + } +} + +//(SIE) S-CPU interrupt enable +void SA1::mmio_w2201(uint8 data) { + if(!mmio.cpu_irqen && (data & 0x80)) { + if(mmio.cpu_irqfl) { + mmio.cpu_irqcl = 0; + cpu.regs.irq = 1; + } + } + + if(!mmio.chdma_irqen && (data & 0x20)) { + if(mmio.chdma_irqfl) { + mmio.chdma_irqcl = 0; + cpu.regs.irq = 1; + } + } + + mmio.cpu_irqen = (data & 0x80); + mmio.chdma_irqen = (data & 0x20); +} + +//(SIC) S-CPU interrupt clear +void SA1::mmio_w2202(uint8 data) { + mmio.cpu_irqcl = (data & 0x80); + mmio.chdma_irqcl = (data & 0x20); + + if(mmio.cpu_irqcl ) mmio.cpu_irqfl = false; + if(mmio.chdma_irqcl) mmio.chdma_irqfl = false; + + if(!mmio.cpu_irqfl && !mmio.chdma_irqfl) cpu.regs.irq = 0; +} + +//(CRV) SA-1 reset vector +void SA1::mmio_w2203(uint8 data) { mmio.crv = (mmio.crv & 0xff00) | data; } +void SA1::mmio_w2204(uint8 data) { mmio.crv = (data << 8) | (mmio.crv & 0xff); } + +//(CNV) SA-1 NMI vector +void SA1::mmio_w2205(uint8 data) { mmio.cnv = (mmio.cnv & 0xff00) | data; } +void SA1::mmio_w2206(uint8 data) { mmio.cnv = (data << 8) | (mmio.cnv & 0xff); } + +//(CIV) SA-1 IRQ vector +void SA1::mmio_w2207(uint8 data) { mmio.civ = (mmio.civ & 0xff00) | data; } +void SA1::mmio_w2208(uint8 data) { mmio.civ = (data << 8) | (mmio.civ & 0xff); } + +//(SCNT) S-CPU control +void SA1::mmio_w2209(uint8 data) { + mmio.cpu_irq = (data & 0x80); + mmio.cpu_ivsw = (data & 0x40); + mmio.cpu_nvsw = (data & 0x10); + mmio.cmeg = (data & 0x0f); + + if(mmio.cpu_irq) { + mmio.cpu_irqfl = true; + if(mmio.cpu_irqen) { + mmio.cpu_irqcl = 0; + cpu.regs.irq = 1; + } + } +} + +//(CIE) SA-1 interrupt enable +void SA1::mmio_w220a(uint8 data) { + if(!mmio.sa1_irqen && (data & 0x80) && mmio.sa1_irqfl ) mmio.sa1_irqcl = 0; + if(!mmio.timer_irqen && (data & 0x40) && mmio.timer_irqfl) mmio.timer_irqcl = 0; + if(!mmio.dma_irqen && (data & 0x20) && mmio.dma_irqfl ) mmio.dma_irqcl = 0; + if(!mmio.sa1_nmien && (data & 0x10) && mmio.sa1_nmifl ) mmio.sa1_nmicl = 0; + + mmio.sa1_irqen = (data & 0x80); + mmio.timer_irqen = (data & 0x40); + mmio.dma_irqen = (data & 0x20); + mmio.sa1_nmien = (data & 0x10); +} + +//(CIC) SA-1 interrupt clear +void SA1::mmio_w220b(uint8 data) { + mmio.sa1_irqcl = (data & 0x80); + mmio.timer_irqcl = (data & 0x40); + mmio.dma_irqcl = (data & 0x20); + mmio.sa1_nmicl = (data & 0x10); + + if(mmio.sa1_irqcl) mmio.sa1_irqfl = false; + if(mmio.timer_irqcl) mmio.timer_irqfl = false; + if(mmio.dma_irqcl) mmio.dma_irqfl = false; + if(mmio.sa1_nmicl) mmio.sa1_nmifl = false; +} + +//(SNV) S-CPU NMI vector +void SA1::mmio_w220c(uint8 data) { mmio.snv = (mmio.snv & 0xff00) | data; } +void SA1::mmio_w220d(uint8 data) { mmio.snv = (data << 8) | (mmio.snv & 0xff); } + +//(SIV) S-CPU IRQ vector +void SA1::mmio_w220e(uint8 data) { mmio.siv = (mmio.siv & 0xff00) | data; } +void SA1::mmio_w220f(uint8 data) { mmio.siv = (data << 8) | (mmio.siv & 0xff); } + +//(TMC) H/V timer control +void SA1::mmio_w2210(uint8 data) { + mmio.hvselb = (data & 0x80); + mmio.ven = (data & 0x02); + mmio.hen = (data & 0x01); +} + +//(CTR) SA-1 timer restart +void SA1::mmio_w2211(uint8 data) { + status.vcounter = 0; + status.hcounter = 0; +} + +//(HCNT) H-count +void SA1::mmio_w2212(uint8 data) { mmio.hcnt = (mmio.hcnt & 0xff00) | (data << 0); } +void SA1::mmio_w2213(uint8 data) { mmio.hcnt = (mmio.hcnt & 0x00ff) | (data << 8); } + +//(VCNT) V-count +void SA1::mmio_w2214(uint8 data) { mmio.vcnt = (mmio.vcnt & 0xff00) | (data << 0); } +void SA1::mmio_w2215(uint8 data) { mmio.vcnt = (mmio.vcnt & 0x00ff) | (data << 8); } + +//(CXB) Super MMC bank C +void SA1::mmio_w2220(uint8 data) { + mmio.cbmode = (data & 0x80); + mmio.cb = (data & 0x07); + + unsigned addr = mmio.cb << 20; + Memory &access = mmio_access(addr); + + if(mmio.cbmode == 0) { + bus.map(Bus::MapLinear, 0x00, 0x1f, 0x8000, 0xffff, memory::cartrom, 0x000000); + sa1bus.map(Bus::MapLinear, 0x00, 0x1f, 0x8000, 0xffff, memory::cartrom, 0x000000); + } else { + bus.map(Bus::MapLinear, 0x00, 0x1f, 0x8000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0x00, 0x1f, 0x8000, 0xffff, access, addr); + } + + bus.map(Bus::MapLinear, 0xc0, 0xcf, 0x0000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0xc0, 0xcf, 0x0000, 0xffff, access, addr); + + memory::vectorsp.sync(); +} + +//(DXB) Super MMC bank D +void SA1::mmio_w2221(uint8 data) { + mmio.dbmode = (data & 0x80); + mmio.db = (data & 0x07); + + unsigned addr = mmio.db << 20; + Memory &access = mmio_access(addr); + + if(mmio.dbmode == 0) { + bus.map(Bus::MapLinear, 0x20, 0x3f, 0x8000, 0xffff, memory::cartrom, 0x100000); + sa1bus.map(Bus::MapLinear, 0x20, 0x3f, 0x8000, 0xffff, memory::cartrom, 0x100000); + } else { + bus.map(Bus::MapLinear, 0x20, 0x3f, 0x8000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0x20, 0x3f, 0x8000, 0xffff, access, addr); + } + + bus.map(Bus::MapLinear, 0xd0, 0xdf, 0x0000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0xd0, 0xdf, 0x0000, 0xffff, access, addr); +} + +//(EXB) Super MMC bank E +void SA1::mmio_w2222(uint8 data) { + mmio.ebmode = (data & 0x80); + mmio.eb = (data & 0x07); + + unsigned addr = mmio.eb << 20; + Memory &access = mmio_access(addr); + + if(mmio.ebmode == 0) { + bus.map(Bus::MapLinear, 0x80, 0x9f, 0x8000, 0xffff, memory::cartrom, 0x200000); + sa1bus.map(Bus::MapLinear, 0x80, 0x9f, 0x8000, 0xffff, memory::cartrom, 0x200000); + } else { + bus.map(Bus::MapLinear, 0x80, 0x9f, 0x8000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0x80, 0x9f, 0x8000, 0xffff, access, addr); + } + + bus.map(Bus::MapLinear, 0xe0, 0xef, 0x0000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0xe0, 0xef, 0x0000, 0xffff, access, addr); +} + +//(FXB) Super MMC bank F +void SA1::mmio_w2223(uint8 data) { + mmio.fbmode = (data & 0x80); + mmio.fb = (data & 0x07); + + unsigned addr = mmio.fb << 20; + Memory &access = mmio_access(addr); + + if(mmio.fbmode == 0) { + bus.map(Bus::MapLinear, 0xa0, 0xbf, 0x8000, 0xffff, memory::cartrom, 0x300000); + sa1bus.map(Bus::MapLinear, 0xa0, 0xbf, 0x8000, 0xffff, memory::cartrom, 0x300000); + } else { + bus.map(Bus::MapLinear, 0xa0, 0xbf, 0x8000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0xa0, 0xbf, 0x8000, 0xffff, access, addr); + } + + bus.map(Bus::MapLinear, 0xf0, 0xff, 0x0000, 0xffff, access, addr); + sa1bus.map(Bus::MapLinear, 0xf0, 0xff, 0x0000, 0xffff, access, addr); +} + +//(BMAPS) S-CPU BW-RAM address mapping +void SA1::mmio_w2224(uint8 data) { + mmio.sbm = (data & 0x1f); + + bus.map(Bus::MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::cc1bwram, mmio.sbm * 0x2000, 0x2000); + bus.map(Bus::MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::cc1bwram, mmio.sbm * 0x2000, 0x2000); +} + +//(BMAP) SA-1 BW-RAM address mapping +void SA1::mmio_w2225(uint8 data) { + mmio.sw46 = (data & 0x80); + mmio.cbm = (data & 0x7f); + + if(mmio.sw46 == 0) { + //$[40-43]:[0000-ffff] x 32 projection + sa1bus.map(Bus::MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::sa1bwram, (mmio.cbm & 0x1f) * 0x2000, 0x2000); + sa1bus.map(Bus::MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::sa1bwram, (mmio.cbm & 0x1f) * 0x2000, 0x2000); + } else { + //$[60-6f]:[0000-ffff] x 128 projection + sa1bus.map(Bus::MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::bitmapram, mmio.cbm * 0x2000, 0x2000); + sa1bus.map(Bus::MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::bitmapram, mmio.cbm * 0x2000, 0x2000); + } +} + +//(SWBE) S-CPU BW-RAM write enable +void SA1::mmio_w2226(uint8 data) { + mmio.swen = (data & 0x80); +} + +//(CWBE) SA-1 BW-RAM write enable +void SA1::mmio_w2227(uint8 data) { + mmio.cwen = (data & 0x80); +} + +//(BWPA) BW-RAM write-protected area +void SA1::mmio_w2228(uint8 data) { + mmio.bwp = (data & 0x0f); +} + +//(SIWP) S-CPU I-RAM write protection +void SA1::mmio_w2229(uint8 data) { + mmio.siwp = data; +} + +//(CIWP) SA-1 I-RAM write protection +void SA1::mmio_w222a(uint8 data) { + mmio.ciwp = data; +} + +//(DCNT) DMA control +void SA1::mmio_w2230(uint8 data) { + mmio.dmaen = (data & 0x80); + mmio.dprio = (data & 0x40); + mmio.cden = (data & 0x20); + mmio.cdsel = (data & 0x10); + mmio.dd = (data & 0x04); + mmio.sd = (data & 0x03); + + if(mmio.dmaen == 0) dma.line = 0; +} + +//(CDMA) character conversion DMA parameters +void SA1::mmio_w2231(uint8 data) { + mmio.chdend = (data & 0x80); + mmio.dmasize = (data >> 2) & 7; + mmio.dmacb = (data & 0x03); + + if(mmio.chdend) memory::cc1bwram.dma = false; + if(mmio.dmasize > 5) mmio.dmasize = 5; + if(mmio.dmacb > 2) mmio.dmacb = 2; +} + +//(SDA) DMA source device start address +void SA1::mmio_w2232(uint8 data) { mmio.dsa = (mmio.dsa & 0xffff00) | (data << 0); } +void SA1::mmio_w2233(uint8 data) { mmio.dsa = (mmio.dsa & 0xff00ff) | (data << 8); } +void SA1::mmio_w2234(uint8 data) { mmio.dsa = (mmio.dsa & 0x00ffff) | (data << 16); } + +//(DDA) DMA destination start address +void SA1::mmio_w2235(uint8 data) { + mmio.dda = (mmio.dda & 0xffff00) | (data << 0); +} + +void SA1::mmio_w2236(uint8 data) { + mmio.dda = (mmio.dda & 0xff00ff) | (data << 8); + + if(mmio.dmaen == true) { + if(mmio.cden == 0 && mmio.dd == DMA::DestIRAM) { + dma_normal(); + } else if(mmio.cden == 1 && mmio.cdsel == 1) { + dma_cc1(); + } + } +} + +void SA1::mmio_w2237(uint8 data) { + mmio.dda = (mmio.dda & 0x00ffff) | (data << 16); + + if(mmio.dmaen == true) { + if(mmio.cden == 0 && mmio.dd == DMA::DestBWRAM) { + dma_normal(); + } + } +} + +//(DTC) DMA terminal counter +void SA1::mmio_w2238(uint8 data) { mmio.dtc = (mmio.dtc & 0xff00) | (data << 0); } +void SA1::mmio_w2239(uint8 data) { mmio.dtc = (mmio.dtc & 0x00ff) | (data << 8); } + +//(BBF) BW-RAM bitmap format +void SA1::mmio_w223f(uint8 data) { + mmio.bbf = (data & 0x80); +} + +//(BRF) bitmap register files +void SA1::mmio_w2240(uint8 data) { mmio.brf[ 0] = data; } +void SA1::mmio_w2241(uint8 data) { mmio.brf[ 1] = data; } +void SA1::mmio_w2242(uint8 data) { mmio.brf[ 2] = data; } +void SA1::mmio_w2243(uint8 data) { mmio.brf[ 3] = data; } +void SA1::mmio_w2244(uint8 data) { mmio.brf[ 4] = data; } +void SA1::mmio_w2245(uint8 data) { mmio.brf[ 5] = data; } +void SA1::mmio_w2246(uint8 data) { mmio.brf[ 6] = data; } +void SA1::mmio_w2247(uint8 data) { mmio.brf[ 7] = data; + if(mmio.dmaen == true) { + if(mmio.cden == 1 && mmio.cdsel == 0) { + dma_cc2(); + } + } +} + +void SA1::mmio_w2248(uint8 data) { mmio.brf[ 8] = data; } +void SA1::mmio_w2249(uint8 data) { mmio.brf[ 9] = data; } +void SA1::mmio_w224a(uint8 data) { mmio.brf[10] = data; } +void SA1::mmio_w224b(uint8 data) { mmio.brf[11] = data; } +void SA1::mmio_w224c(uint8 data) { mmio.brf[12] = data; } +void SA1::mmio_w224d(uint8 data) { mmio.brf[13] = data; } +void SA1::mmio_w224e(uint8 data) { mmio.brf[14] = data; } +void SA1::mmio_w224f(uint8 data) { mmio.brf[15] = data; + if(mmio.dmaen == true) { + if(mmio.cden == 1 && mmio.cdsel == 0) { + dma_cc2(); + } + } +} + +//(MCNT) arithmetic control +void SA1::mmio_w2250(uint8 data) { + mmio.acm = (data & 0x02); + mmio.md = (data & 0x01); + + if(mmio.acm) mmio.mr = 0; +} + +//(MAL) multiplicand / dividend low +void SA1::mmio_w2251(uint8 data) { + mmio.ma = (mmio.ma & 0xff00) | data; +} + +//(MAH) multiplicand / dividend high +void SA1::mmio_w2252(uint8 data) { + mmio.ma = (data << 8) | (mmio.ma & 0x00ff); +} + +//(MBL) multiplier / divisor low +void SA1::mmio_w2253(uint8 data) { + mmio.mb = (mmio.mb & 0xff00) | data; +} + +//(MBH) multiplier / divisor high +//multiplication / cumulative sum only resets MB +//division resets both MA and MB +void SA1::mmio_w2254(uint8 data) { + mmio.mb = (data << 8) | (mmio.mb & 0x00ff); + + if(mmio.acm == 0) { + if(mmio.md == 0) { + //signed multiplication + mmio.mr = (int16)mmio.ma * (int16)mmio.mb; + mmio.mb = 0; + } else { + //unsigned division + if(mmio.mb == 0) { + mmio.mr = 0; + } else { + int16 quotient = (int16)mmio.ma / (uint16)mmio.mb; + uint16 remainder = (int16)mmio.ma % (uint16)mmio.mb; + mmio.mr = (remainder << 16) | quotient; + } + mmio.ma = 0; + mmio.mb = 0; + } + } else { + //sigma (accumulative multiplication) + mmio.mr += (int16)mmio.ma * (int16)mmio.mb; + mmio.overflow = (mmio.mr >= (1ULL << 40)); + mmio.mr &= (1ULL << 40) - 1; + mmio.mb = 0; + } +} + +//(VBD) variable-length bit processing +void SA1::mmio_w2258(uint8 data) { + mmio.hl = (data & 0x80); + mmio.vb = (data & 0x0f); + if(mmio.vb == 0) mmio.vb = 16; + + if(mmio.hl == 0) { + //fixed mode + mmio.vbit += mmio.vb; + mmio.va += (mmio.vbit >> 3); + mmio.vbit &= 7; + } +} + +//(VDA) variable-length bit game pak ROM start address +void SA1::mmio_w2259(uint8 data) { mmio.va = (mmio.va & 0xffff00) | (data << 0); } +void SA1::mmio_w225a(uint8 data) { mmio.va = (mmio.va & 0xff00ff) | (data << 8); } +void SA1::mmio_w225b(uint8 data) { mmio.va = (mmio.va & 0x00ffff) | (data << 16); mmio.vbit = 0; } + +//(SFR) S-CPU flag read +uint8 SA1::mmio_r2300() { + uint8 data; + data = mmio.cpu_irqfl << 7; + data |= mmio.cpu_ivsw << 6; + data |= mmio.chdma_irqfl << 5; + data |= mmio.cpu_nvsw << 4; + data |= mmio.cmeg; + return data; +} + +//(CFR) SA-1 flag read +uint8 SA1::mmio_r2301() { + uint8 data; + data = mmio.sa1_irqfl << 7; + data |= mmio.timer_irqfl << 6; + data |= mmio.dma_irqfl << 5; + data |= mmio.sa1_nmifl << 4; + data |= mmio.smeg; + return data; +} + +//(HCR) hcounter read +uint8 SA1::mmio_r2302() { + //latch counters + mmio.hcr = status.hcounter >> 2; + mmio.vcr = status.vcounter; + return mmio.hcr >> 0; } +uint8 SA1::mmio_r2303() { return mmio.hcr >> 8; } + +//(VCR) vcounter read +uint8 SA1::mmio_r2304() { return mmio.vcr >> 0; } +uint8 SA1::mmio_r2305() { return mmio.vcr >> 8; } + +//(MR) arithmetic result +uint8 SA1::mmio_r2306() { return mmio.mr >> 0; } +uint8 SA1::mmio_r2307() { return mmio.mr >> 8; } +uint8 SA1::mmio_r2308() { return mmio.mr >> 16; } +uint8 SA1::mmio_r2309() { return mmio.mr >> 24; } +uint8 SA1::mmio_r230a() { return mmio.mr >> 32; } + +//(OF) arithmetic overflow flag +uint8 SA1::mmio_r230b() { return mmio.overflow << 7; } + +//(VDPL) variable-length data read port low +uint8 SA1::mmio_r230c() { + uint32 data = (vbrbus.read(mmio.va + 0) << 0) + | (vbrbus.read(mmio.va + 1) << 8) + | (vbrbus.read(mmio.va + 2) << 16); + data >>= mmio.vbit; + return data >> 0; +} + +//(VDPH) variable-length data read port high +uint8 SA1::mmio_r230d() { + uint32 data = (vbrbus.read(mmio.va + 0) << 0) + | (vbrbus.read(mmio.va + 1) << 8) + | (vbrbus.read(mmio.va + 2) << 16); + data >>= mmio.vbit; + + if(mmio.hl == 1) { + //auto-increment mode + mmio.vbit += mmio.vb; + mmio.va += (mmio.vbit >> 3); + mmio.vbit &= 7; + } + + return data >> 8; +} + +//(VC) version code register +uint8 SA1::mmio_r230e() { + return 0x01; //true value unknown +} + +uint8 SA1::mmio_read(unsigned addr) { + (co_active() == scheduler.thread_cpu ? scheduler.sync_cpucop() : scheduler.sync_copcpu()); + addr &= 0xffff; + + switch(addr) { + case 0x2300: return mmio_r2300(); + case 0x2301: return mmio_r2301(); + case 0x2302: return mmio_r2302(); + case 0x2303: return mmio_r2303(); + case 0x2304: return mmio_r2304(); + case 0x2305: return mmio_r2305(); + case 0x2306: return mmio_r2306(); + case 0x2307: return mmio_r2307(); + case 0x2308: return mmio_r2308(); + case 0x2309: return mmio_r2309(); + case 0x230a: return mmio_r230a(); + case 0x230b: return mmio_r230b(); + case 0x230c: return mmio_r230c(); + case 0x230d: return mmio_r230d(); + case 0x230e: return mmio_r230e(); + } + + return 0x00; +} + +void SA1::mmio_write(unsigned addr, uint8 data) { + (co_active() == scheduler.thread_cpu ? scheduler.sync_cpucop() : scheduler.sync_copcpu()); + addr &= 0xffff; + + switch(addr) { + case 0x2200: return mmio_w2200(data); + case 0x2201: return mmio_w2201(data); + case 0x2202: return mmio_w2202(data); + case 0x2203: return mmio_w2203(data); + case 0x2204: return mmio_w2204(data); + case 0x2205: return mmio_w2205(data); + case 0x2206: return mmio_w2206(data); + case 0x2207: return mmio_w2207(data); + case 0x2208: return mmio_w2208(data); + case 0x2209: return mmio_w2209(data); + case 0x220a: return mmio_w220a(data); + case 0x220b: return mmio_w220b(data); + case 0x220c: return mmio_w220c(data); + case 0x220d: return mmio_w220d(data); + case 0x220e: return mmio_w220e(data); + case 0x220f: return mmio_w220f(data); + + case 0x2210: return mmio_w2210(data); + case 0x2211: return mmio_w2211(data); + case 0x2212: return mmio_w2212(data); + case 0x2213: return mmio_w2213(data); + case 0x2214: return mmio_w2214(data); + case 0x2215: return mmio_w2215(data); + + case 0x2220: return mmio_w2220(data); + case 0x2221: return mmio_w2221(data); + case 0x2222: return mmio_w2222(data); + case 0x2223: return mmio_w2223(data); + case 0x2224: return mmio_w2224(data); + case 0x2225: return mmio_w2225(data); + case 0x2226: return mmio_w2226(data); + case 0x2227: return mmio_w2227(data); + case 0x2228: return mmio_w2228(data); + case 0x2229: return mmio_w2229(data); + case 0x222a: return mmio_w222a(data); + + case 0x2230: return mmio_w2230(data); + case 0x2231: return mmio_w2231(data); + case 0x2232: return mmio_w2232(data); + case 0x2233: return mmio_w2233(data); + case 0x2234: return mmio_w2234(data); + case 0x2235: return mmio_w2235(data); + case 0x2236: return mmio_w2236(data); + case 0x2237: return mmio_w2237(data); + case 0x2238: return mmio_w2238(data); + case 0x2239: return mmio_w2239(data); + + case 0x223f: return mmio_w223f(data); + case 0x2240: return mmio_w2240(data); + case 0x2241: return mmio_w2241(data); + case 0x2242: return mmio_w2242(data); + case 0x2243: return mmio_w2243(data); + case 0x2244: return mmio_w2244(data); + case 0x2245: return mmio_w2245(data); + case 0x2246: return mmio_w2246(data); + case 0x2247: return mmio_w2247(data); + case 0x2248: return mmio_w2248(data); + case 0x2249: return mmio_w2249(data); + case 0x224a: return mmio_w224a(data); + case 0x224b: return mmio_w224b(data); + case 0x224c: return mmio_w224c(data); + case 0x224d: return mmio_w224d(data); + case 0x224e: return mmio_w224e(data); + case 0x224f: return mmio_w224f(data); + + case 0x2250: return mmio_w2250(data); + case 0x2251: return mmio_w2251(data); + case 0x2252: return mmio_w2252(data); + case 0x2253: return mmio_w2253(data); + case 0x2254: return mmio_w2254(data); + + case 0x2258: return mmio_w2258(data); + case 0x2259: return mmio_w2259(data); + case 0x225a: return mmio_w225a(data); + case 0x225b: return mmio_w225b(data); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/sa1/mmio/mmio.hpp b/libmednahawk/src/snes/src/chip/sa1/mmio/mmio.hpp new file mode 100644 index 0000000000..5a104513ad --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/mmio/mmio.hpp @@ -0,0 +1,256 @@ +uint8 mmio_read(unsigned addr); +void mmio_write(unsigned addr, uint8 data); +Memory& mmio_access(unsigned &addr); + +struct MMIO { + //$2200 CCNT + bool sa1_irq; + bool sa1_rdyb; + bool sa1_resb; + bool sa1_nmi; + uint8 smeg; + + //$2201 SIE + bool cpu_irqen; + bool chdma_irqen; + + //$2202 SIC + bool cpu_irqcl; + bool chdma_irqcl; + + //$2203,$2204 CRV + uint16 crv; + + //$2205,$2206 CNV + uint16 cnv; + + //$2207,$2208 CIV + uint16 civ; + + //$2209 SCNT + bool cpu_irq; + bool cpu_ivsw; + bool cpu_nvsw; + uint8 cmeg; + + //$220a CIE + bool sa1_irqen; + bool timer_irqen; + bool dma_irqen; + bool sa1_nmien; + + //$220b CIC + bool sa1_irqcl; + bool timer_irqcl; + bool dma_irqcl; + bool sa1_nmicl; + + //$220c,$220d SNV + uint16 snv; + + //$220e,$220f SIV + uint16 siv; + + //$2210 TMC + bool hvselb; + bool ven; + bool hen; + + //$2212,$2213 + uint16 hcnt; + + //$2214,$2215 + uint16 vcnt; + + //$2220 CXB + bool cbmode; + uint8 cb; + + //$2221 DXB + bool dbmode; + uint8 db; + + //$2222 EXB + bool ebmode; + uint8 eb; + + //$2223 FXB + bool fbmode; + uint8 fb; + + //$2224 BMAPS + uint8 sbm; + + //$2225 BMAP + bool sw46; + uint8 cbm; + + //$2226 SBWE + bool swen; + + //$2227 CBWE + bool cwen; + + //$2228 BWPA + uint8 bwp; + + //$2229 SIWP + uint8 siwp; + + //$222a CIWP + uint8 ciwp; + + //$2230 DCNT + bool dmaen; + bool dprio; + bool cden; + bool cdsel; + bool dd; + uint8 sd; + + //$2231 CDMA + bool chdend; + uint8 dmasize; + uint8 dmacb; + + //$2232-$2234 SDA + uint32 dsa; + + //$2235-$2237 DDA + uint32 dda; + + //$2238,$2239 DTC + uint16 dtc; + + //$223f BBF + bool bbf; + + //$2240-224f BRF + uint8 brf[16]; + + //$2250 MCNT + bool acm; + bool md; + + //$2251,$2252 MA + uint16 ma; + + //$2253,$2254 MB + uint16 mb; + + //$2258 VBD + bool hl; + uint8 vb; + + //$2259-$225b VDA + uint32 va; + uint8 vbit; + + //$2300 SFR + bool cpu_irqfl; + bool chdma_irqfl; + + //$2301 CFR + bool sa1_irqfl; + bool timer_irqfl; + bool dma_irqfl; + bool sa1_nmifl; + + //$2302,$2303 HCR + uint16 hcr; + + //$2304,$2305 VCR + uint16 vcr; + + //$2306-230a MR + uint64 mr; + + //$230b OF + bool overflow; +} mmio; + +void mmio_w2200(uint8); //CCNT +void mmio_w2201(uint8); //SIE +void mmio_w2202(uint8); //SIC +void mmio_w2203(uint8); //CRVL +void mmio_w2204(uint8); //CRVH +void mmio_w2205(uint8); //CNVL +void mmio_w2206(uint8); //CNVH +void mmio_w2207(uint8); //CIVL +void mmio_w2208(uint8); //CIVH +void mmio_w2209(uint8); //SCNT +void mmio_w220a(uint8); //CIE +void mmio_w220b(uint8); //CIC +void mmio_w220c(uint8); //SNVL +void mmio_w220d(uint8); //SNVH +void mmio_w220e(uint8); //SIVL +void mmio_w220f(uint8); //SIVH +void mmio_w2210(uint8); //TMC +void mmio_w2211(uint8); //CTR +void mmio_w2212(uint8); //HCNTL +void mmio_w2213(uint8); //HCNTH +void mmio_w2214(uint8); //VCNTL +void mmio_w2215(uint8); //VCNTH +void mmio_w2220(uint8); //CXB +void mmio_w2221(uint8); //DXB +void mmio_w2222(uint8); //EXB +void mmio_w2223(uint8); //FXB +void mmio_w2224(uint8); //BMAPS +void mmio_w2225(uint8); //BMAP +void mmio_w2226(uint8); //SBWE +void mmio_w2227(uint8); //CBWE +void mmio_w2228(uint8); //BWPA +void mmio_w2229(uint8); //SIWP +void mmio_w222a(uint8); //CIWP +void mmio_w2230(uint8); //DCNT +void mmio_w2231(uint8); //CDMA +void mmio_w2232(uint8); //SDAL +void mmio_w2233(uint8); //SDAH +void mmio_w2234(uint8); //SDAB +void mmio_w2235(uint8); //DDAL +void mmio_w2236(uint8); //DDAH +void mmio_w2237(uint8); //DDAB +void mmio_w2238(uint8); //DTCL +void mmio_w2239(uint8); //DTCH +void mmio_w223f(uint8); //BBF +void mmio_w2240(uint8); //BRF0 +void mmio_w2241(uint8); //BRF1 +void mmio_w2242(uint8); //BRF2 +void mmio_w2243(uint8); //BRF3 +void mmio_w2244(uint8); //BRF4 +void mmio_w2245(uint8); //BRF5 +void mmio_w2246(uint8); //BRF6 +void mmio_w2247(uint8); //BRF7 +void mmio_w2248(uint8); //BRF8 +void mmio_w2249(uint8); //BRF9 +void mmio_w224a(uint8); //BRFA +void mmio_w224b(uint8); //BRFB +void mmio_w224c(uint8); //BRFC +void mmio_w224d(uint8); //BRFD +void mmio_w224e(uint8); //BRFE +void mmio_w224f(uint8); //BRFF +void mmio_w2250(uint8); //MCNT +void mmio_w2251(uint8); //MAL +void mmio_w2252(uint8); //MAH +void mmio_w2253(uint8); //MBL +void mmio_w2254(uint8); //MBH +void mmio_w2258(uint8); //VBD +void mmio_w2259(uint8); //VDAL +void mmio_w225a(uint8); //VDAH +void mmio_w225b(uint8); //VDAB + +uint8 mmio_r2300(); //SFR +uint8 mmio_r2301(); //CFR +uint8 mmio_r2302(); //HCRL +uint8 mmio_r2303(); //HCRH +uint8 mmio_r2304(); //VCRL +uint8 mmio_r2305(); //VCRH +uint8 mmio_r2306(); //MR [00-07] +uint8 mmio_r2307(); //MR [08-15] +uint8 mmio_r2308(); //MR [16-23] +uint8 mmio_r2309(); //MR [24-31] +uint8 mmio_r230a(); //MR [32-40] +uint8 mmio_r230b(); //OF +uint8 mmio_r230c(); //VDPL +uint8 mmio_r230d(); //VDPH +uint8 mmio_r230e(); //VC diff --git a/libmednahawk/src/snes/src/chip/sa1/sa1.cpp b/libmednahawk/src/snes/src/chip/sa1/sa1.cpp new file mode 100644 index 0000000000..2eff37e109 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/sa1.cpp @@ -0,0 +1,327 @@ +#include <../base.hpp> + +#define SA1_CPP +namespace SNES { + +SA1 sa1; + +#include "serialization.cpp" +#include "bus/bus.cpp" +#include "dma/dma.cpp" +#include "memory/memory.cpp" +#include "mmio/mmio.cpp" + +void SA1::enter() { + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + if(mmio.sa1_rdyb || mmio.sa1_resb) { + //SA-1 co-processor is asleep + tick(); + scheduler.sync_copcpu(); + continue; + } + + if(status.interrupt_pending) { + status.interrupt_pending = false; + interrupt(status.interrupt_vector); + } + + (this->*opcode_table[op_readpc()])(); + } +} + +void SA1::last_cycle() { + if(mmio.sa1_nmi && !mmio.sa1_nmicl) { + status.interrupt_pending = true; + status.interrupt_vector = mmio.cnv; + mmio.sa1_nmifl = true; + mmio.sa1_nmicl = 1; + regs.wai = false; + } else if(!regs.p.i) { + if(mmio.timer_irqen && !mmio.timer_irqcl) { + status.interrupt_pending = true; + status.interrupt_vector = mmio.civ; + mmio.timer_irqfl = true; + regs.wai = false; + } else if(mmio.dma_irqen && !mmio.dma_irqcl) { + status.interrupt_pending = true; + status.interrupt_vector = mmio.civ; + mmio.dma_irqfl = true; + regs.wai = false; + } else if(mmio.sa1_irq && !mmio.sa1_irqcl) { + status.interrupt_pending = true; + status.interrupt_vector = mmio.civ; + mmio.sa1_irqfl = true; + regs.wai = false; + } + } +} + +void SA1::interrupt(uint16 vector) { + op_read(regs.pc.d); + op_io(); + if(!regs.e) op_writestack(regs.pc.b); + op_writestack(regs.pc.h); + op_writestack(regs.pc.l); + op_writestack(regs.e ? (regs.p & ~0x10) : regs.p); + regs.pc.w = vector; + regs.pc.b = 0x00; + regs.p.i = 1; + regs.p.d = 0; +} + +bool SA1::interrupt_pending() { + return status.interrupt_pending; +} + +void SA1::tick() { + scheduler.addclocks_cop(2); + if(++status.tick_counter == 0) scheduler.sync_copcpu(); + + //adjust counters: + //note that internally, status counters are in clocks; + //whereas MMIO register counters are in dots (4 clocks = 1 dot) + if(mmio.hvselb == 0) { + //HV timer + status.hcounter += 2; + if(status.hcounter >= 1364) { + status.hcounter = 0; + if(++status.vcounter >= status.scanlines) status.vcounter = 0; + } + } else { + //linear timer + status.hcounter += 2; + status.vcounter += (status.hcounter >> 11); + status.hcounter &= 0x07ff; + status.vcounter &= 0x01ff; + } + + //test counters for timer IRQ + switch((mmio.ven << 1) + (mmio.hen << 0)) { + case 0: break; + case 1: if(status.hcounter == (mmio.hcnt << 2)) trigger_irq(); break; + case 2: if(status.vcounter == mmio.vcnt && status.hcounter == 0) trigger_irq(); break; + case 3: if(status.vcounter == mmio.hcnt && status.hcounter == (mmio.hcnt << 2)) trigger_irq(); break; + } +} + +void SA1::trigger_irq() { + mmio.timer_irqfl = true; + if(mmio.timer_irqen) mmio.timer_irqcl = 0; +} + +void SA1::init() { +} + +void SA1::enable() { +} + +void SA1::power() { + regs.a = regs.x = regs.y = 0x0000; + regs.s = 0x01ff; + + reset(); +} + +void SA1::reset() { + memory::vectorsp.access = 0; + memory::cc1bwram.dma = false; + for(unsigned addr = 0; addr < memory::iram.size(); addr++) { + memory::iram.write(addr, 0x00); + } + vbrbus.init(); + sa1bus.init(); + + regs.pc.d = 0x000000; + regs.x.h = 0x00; + regs.y.h = 0x00; + regs.s.h = 0x01; + regs.d = 0x0000; + regs.db = 0x00; + regs.p = 0x34; + regs.e = 1; + regs.mdr = 0x00; + regs.wai = false; + CPUcore::update_table(); + + status.tick_counter = 0; + + status.interrupt_pending = false; + status.interrupt_vector = 0x0000; + + status.scanlines = (system.region() == System::NTSC ? 262 : 312); + status.vcounter = 0; + status.hcounter = 0; + + dma.line = 0; + + //$2200 CCNT + mmio.sa1_irq = false; + mmio.sa1_rdyb = false; + mmio.sa1_resb = true; + mmio.sa1_nmi = false; + mmio.smeg = 0; + + //$2201 SIE + mmio.cpu_irqen = false; + mmio.chdma_irqen = false; + + //$2202 SIC + mmio.cpu_irqcl = false; + mmio.chdma_irqcl = false; + + //$2203,$2204 CRV + mmio.crv = 0x0000; + + //$2205,$2206 CNV + mmio.cnv = 0x0000; + + //$2207,$2208 CIV + mmio.civ = 0x0000; + + //$2209 SCNT + mmio.cpu_irq = false; + mmio.cpu_ivsw = false; + mmio.cpu_nvsw = false; + mmio.cmeg = 0; + + //$220a CIE + mmio.sa1_irqen = false; + mmio.timer_irqen = false; + mmio.dma_irqen = false; + mmio.sa1_nmien = false; + + //$220b CIC + mmio.sa1_irqcl = false; + mmio.timer_irqcl = false; + mmio.dma_irqcl = false; + mmio.sa1_nmicl = false; + + //$220c,$220d SNV + mmio.snv = 0x0000; + + //$220e,$220f SIV + mmio.siv = 0x0000; + + //$2210 + mmio.hvselb = false; + mmio.ven = false; + mmio.hen = false; + + //$2212,$2213 HCNT + mmio.hcnt = 0x0000; + + //$2214,$2215 VCNT + mmio.vcnt = 0x0000; + + //$2220-2223 CXB, DXB, EXB, FXB + mmio.cbmode = 0; + mmio.dbmode = 0; + mmio.ebmode = 0; + mmio.fbmode = 0; + + mmio.cb = 0x00; + mmio.db = 0x01; + mmio.eb = 0x02; + mmio.fb = 0x03; + + //$2224 BMAPS + mmio.sbm = 0x00; + + //$2225 BMAP + mmio.sw46 = false; + mmio.cbm = 0x00; + + //$2226 SWBE + mmio.swen = false; + + //$2227 CWBE + mmio.cwen = false; + + //$2228 BWPA + mmio.bwp = 0x0f; + + //$2229 SIWP + mmio.siwp = 0x00; + + //$222a CIWP + mmio.ciwp = 0x00; + + //$2230 DCNT + mmio.dmaen = false; + mmio.dprio = false; + mmio.cden = false; + mmio.cdsel = false; + mmio.dd = 0; + mmio.sd = 0; + + //$2231 CDMA + mmio.chdend = false; + mmio.dmasize = 0; + mmio.dmacb = 0; + + //$2232-$2234 SDA + mmio.dsa = 0x000000; + + //$2235-$2237 DDA + mmio.dda = 0x000000; + + //$2238,$2239 DTC + mmio.dtc = 0x0000; + + //$223f BBF + mmio.bbf = 0; + + //$2240-$224f BRF + for(unsigned i = 0; i < 16; i++) { + mmio.brf[i] = 0x00; + } + + //$2250 MCNT + mmio.acm = 0; + mmio.md = 0; + + //$2251,$2252 MA + mmio.ma = 0x0000; + + //$2253,$2254 MB + mmio.mb = 0x0000; + + //$2258 VBD + mmio.hl = false; + mmio.vb = 16; + + //$2259-$225b + mmio.va = 0x000000; + mmio.vbit = 0; + + //$2300 SFR + mmio.cpu_irqfl = false; + mmio.chdma_irqfl = false; + + //$2301 CFR + mmio.sa1_irqfl = false; + mmio.timer_irqfl = false; + mmio.dma_irqfl = false; + mmio.sa1_nmifl = false; + + //$2302,$2303 HCR + mmio.hcr = 0x0000; + + //$2304,$2305 VCR + mmio.vcr = 0x0000; + + //$2306-$230a MR + mmio.mr = 0; + + //$230b + mmio.overflow = false; +} + +SA1::SA1() { +} + +}; diff --git a/libmednahawk/src/snes/src/chip/sa1/sa1.hpp b/libmednahawk/src/snes/src/chip/sa1/sa1.hpp new file mode 100644 index 0000000000..f3ea24e708 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/sa1.hpp @@ -0,0 +1,38 @@ +#include "bus/bus.hpp" + +class SA1 : public CPUcore, public MMIO { +public: + #include "dma/dma.hpp" + #include "memory/memory.hpp" + #include "mmio/mmio.hpp" + + struct Status { + uint8 tick_counter; + + bool interrupt_pending; + uint16 interrupt_vector; + + uint16 scanlines; + uint16 vcounter; + uint16 hcounter; + } status; + + void enter(); + void interrupt(uint16 vector); + void tick(); + + alwaysinline void trigger_irq(); + alwaysinline void last_cycle(); + alwaysinline bool interrupt_pending(); + + void init(); + void enable(); + void power(); + void reset(); + + void serialize(serializer&); + SA1(); +}; + +extern SA1 sa1; +extern SA1Bus sa1bus; diff --git a/libmednahawk/src/snes/src/chip/sa1/serialization.cpp b/libmednahawk/src/snes/src/chip/sa1/serialization.cpp new file mode 100644 index 0000000000..f22ea5a1e6 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sa1/serialization.cpp @@ -0,0 +1,150 @@ +#ifdef SA1_CPP + +void SA1::serialize(serializer &s) { + CPUcore::core_serialize(s); + + //sa1.hpp + s.integer(status.tick_counter); + + s.integer(status.interrupt_pending); + s.integer(status.interrupt_vector); + + s.integer(status.scanlines); + s.integer(status.vcounter); + s.integer(status.hcounter); + + //bus/bus.hpp + s.array(memory::iram.data(), memory::iram.size()); + + memory::vectorsp.sync(); + + s.integer(memory::cc1bwram.dma); + + //dma/dma.hpp + s.integer(dma.line); + + //mmio/mmio.hpp + s.integer(mmio.sa1_irq); + s.integer(mmio.sa1_rdyb); + s.integer(mmio.sa1_resb); + s.integer(mmio.sa1_nmi); + s.integer(mmio.smeg); + + s.integer(mmio.cpu_irqen); + s.integer(mmio.chdma_irqen); + + s.integer(mmio.cpu_irqcl); + s.integer(mmio.chdma_irqcl); + + s.integer(mmio.crv); + + s.integer(mmio.cnv); + + s.integer(mmio.civ); + + s.integer(mmio.cpu_irq); + s.integer(mmio.cpu_ivsw); + s.integer(mmio.cpu_nvsw); + s.integer(mmio.cmeg); + + s.integer(mmio.sa1_irqen); + s.integer(mmio.timer_irqen); + s.integer(mmio.dma_irqen); + s.integer(mmio.sa1_nmien); + + s.integer(mmio.sa1_irqcl); + s.integer(mmio.timer_irqcl); + s.integer(mmio.dma_irqcl); + s.integer(mmio.sa1_nmicl); + + s.integer(mmio.snv); + + s.integer(mmio.siv); + + s.integer(mmio.hvselb); + s.integer(mmio.ven); + s.integer(mmio.hen); + + s.integer(mmio.hcnt); + + s.integer(mmio.vcnt); + + s.integer(mmio.cbmode); + s.integer(mmio.cb); + + s.integer(mmio.dbmode); + s.integer(mmio.db); + + s.integer(mmio.ebmode); + s.integer(mmio.eb); + + s.integer(mmio.fbmode); + s.integer(mmio.fb); + + s.integer(mmio.sbm); + + s.integer(mmio.sw46); + s.integer(mmio.cbm); + + s.integer(mmio.swen); + + s.integer(mmio.cwen); + + s.integer(mmio.bwp); + + s.integer(mmio.siwp); + + s.integer(mmio.ciwp); + + s.integer(mmio.dmaen); + s.integer(mmio.dprio); + s.integer(mmio.cden); + s.integer(mmio.cdsel); + s.integer(mmio.dd); + s.integer(mmio.sd); + + s.integer(mmio.chdend); + s.integer(mmio.dmasize); + s.integer(mmio.dmacb); + + s.integer(mmio.dsa); + + s.integer(mmio.dda); + + s.integer(mmio.dtc); + + s.integer(mmio.bbf); + + s.array(mmio.brf); + + s.integer(mmio.acm); + s.integer(mmio.md); + + s.integer(mmio.ma); + + s.integer(mmio.mb); + + s.integer(mmio.hl); + s.integer(mmio.vb); + + s.integer(mmio.va); + s.integer(mmio.vbit); + + s.integer(mmio.cpu_irqfl); + s.integer(mmio.chdma_irqfl); + + s.integer(mmio.sa1_irqfl); + s.integer(mmio.timer_irqfl); + s.integer(mmio.dma_irqfl); + s.integer(mmio.sa1_nmifl); + + s.integer(mmio.hcr); + + s.integer(mmio.vcr); + + s.integer(mmio.mr); + + s.integer(mmio.overflow); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/sdd1/sdd1.cpp b/libmednahawk/src/snes/src/chip/sdd1/sdd1.cpp new file mode 100644 index 0000000000..e2797bfa6b --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sdd1/sdd1.cpp @@ -0,0 +1,161 @@ +#include <../base.hpp> + +#define SDD1_CPP +namespace SNES { + +SDD1 sdd1; + +#include "serialization.cpp" +#include "sdd1emu.cpp" + +void SDD1::init() {} + +void SDD1::enable() { + //hook S-CPU DMA MMIO registers to gather information for struct dma[]; + //buffer address and transfer size information for use in SDD1::read() + for(unsigned i = 0x4300; i <= 0x437f; i++) { + cpu_mmio[i & 0x7f] = memory::mmio.mmio[i - 0x2000]; + memory::mmio.map(i, *this); + } + + //hook S-DD1 MMIO registers + for(unsigned i = 0x4800; i <= 0x4807; i++) { + memory::mmio.map(i, *this); + } +} + +void SDD1::power() { + reset(); +} + +void SDD1::reset() { + sdd1_enable = 0x00; + xfer_enable = 0x00; + + mmc[0] = 0 << 20; + mmc[1] = 1 << 20; + mmc[2] = 2 << 20; + mmc[3] = 3 << 20; + + for(unsigned i = 0; i < 8; i++) { + dma[i].addr = 0; + dma[i].size = 0; + } + + buffer.ready = false; + + bus.map(Bus::MapDirect, 0xc0, 0xff, 0x0000, 0xffff, *this); +} + +uint8 SDD1::mmio_read(unsigned addr) { + addr &= 0xffff; + + if((addr & 0x4380) == 0x4300) { + return cpu_mmio[addr & 0x7f]->mmio_read(addr); + } + + switch(addr) { + case 0x4804: return mmc[0] >> 20; + case 0x4805: return mmc[1] >> 20; + case 0x4806: return mmc[2] >> 20; + case 0x4807: return mmc[3] >> 20; + } + + return cpu.regs.mdr; +} + +void SDD1::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + if((addr & 0x4380) == 0x4300) { + unsigned channel = (addr >> 4) & 7; + switch(addr & 15) { + case 2: dma[channel].addr = (dma[channel].addr & 0xffff00) + (data << 0); break; + case 3: dma[channel].addr = (dma[channel].addr & 0xff00ff) + (data << 8); break; + case 4: dma[channel].addr = (dma[channel].addr & 0x00ffff) + (data << 16); break; + + case 5: dma[channel].size = (dma[channel].size & 0xff00) + (data << 0); break; + case 6: dma[channel].size = (dma[channel].size & 0x00ff) + (data << 8); break; + } + return cpu_mmio[addr & 0x7f]->mmio_write(addr, data); + } + + switch(addr) { + case 0x4800: sdd1_enable = data; break; + case 0x4801: xfer_enable = data; break; + + case 0x4804: mmc[0] = data << 20; break; + case 0x4805: mmc[1] = data << 20; break; + case 0x4806: mmc[2] = data << 20; break; + case 0x4807: mmc[3] = data << 20; break; + } +} + +//SDD1::read() is mapped to $[c0-ff]:[0000-ffff] +//the design is meant to be as close to the hardware design as possible, thus this code +//avoids adding S-DD1 hooks inside S-CPU::DMA emulation. +// +//the real S-DD1 cannot see $420b (DMA enable) writes, as they are not placed on the bus. +//however, $43x0-$43xf writes (DMAx channel settings) most likely do appear on the bus. +//the S-DD1 also requires fixed addresses for transfers, which wouldn't be necessary if +//it could see $420b writes (eg it would know when the transfer should begin.) +// +//the hardware needs a way to distinguish program code after $4801 writes from DMA +//decompression that follows soon after. +// +//the only plausible design for hardware would be for the S-DD1 to spy on DMAx settings, +//and begin spooling decompression on writes to $4801 that activate a channel. after that, +//it feeds decompressed data only when the ROM read address matches the DMA channel address. +// +//the actual S-DD1 transfer can occur on any channel, but it is most likely limited to +//one transfer per $420b write (for spooling purposes). however, this is not known for certain. +uint8 SDD1::read(unsigned addr) { + if(sdd1_enable & xfer_enable) { + //at least one channel has S-DD1 decompression enabled ... + for(unsigned i = 0; i < 8; i++) { + if(sdd1_enable & xfer_enable & (1 << i)) { + //S-DD1 always uses fixed transfer mode, so address will not change during transfer + if(addr == dma[i].addr) { + if(!buffer.ready) { + //first byte read for channel performs full decompression. + //this really should stream byte-by-byte, but it's not necessary since the size is known + buffer.offset = 0; + buffer.size = dma[i].size ? dma[i].size : 65536; + + //sdd1emu calls this function; it needs to access uncompressed data; + //so temporarily disable decompression mode for decompress() call. + uint8 temp = sdd1_enable; + sdd1_enable = false; + sdd1emu.decompress(addr, buffer.size, buffer.data); + sdd1_enable = temp; + + buffer.ready = true; + } + + //fetch a decompressed byte; once buffer is depleted, disable channel and invalidate buffer + uint8 data = buffer.data[(uint16)buffer.offset++]; + if(buffer.offset >= buffer.size) { + buffer.ready = false; + xfer_enable &= ~(1 << i); + } + + return data; + } //address matched + } //channel enabled + } //channel loop + } //S-DD1 decompressor enabled + + //S-DD1 decompression mode inactive; return ROM data + return memory::cartrom.read(mmc[(addr >> 20) & 3] + (addr & 0x0fffff)); +} + +void SDD1::write(unsigned addr, uint8 data) { +} + +SDD1::SDD1() { +} + +SDD1::~SDD1() { +} + +}; diff --git a/libmednahawk/src/snes/src/chip/sdd1/sdd1.hpp b/libmednahawk/src/snes/src/chip/sdd1/sdd1.hpp new file mode 100644 index 0000000000..327ccbb543 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sdd1/sdd1.hpp @@ -0,0 +1,41 @@ +#include "sdd1emu.hpp" + +class SDD1 : public MMIO, public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void serialize(serializer&); + SDD1(); + ~SDD1(); + +private: + MMIO *cpu_mmio[0x80]; //bus spying hooks to glean information for struct dma[] + + uint8 sdd1_enable; //channel bit-mask + uint8 xfer_enable; //channel bit-mask + unsigned mmc[4]; //memory map controller ROM indices + + struct { + unsigned addr; //$43x2-$43x4 -- DMA transfer address + uint16 size; //$43x5-$43x6 -- DMA transfer size + } dma[8]; + + SDD1emu sdd1emu; + struct { + uint8 data[65536]; //pointer to decompressed S-DD1 data + uint16 offset; //read index into S-DD1 decompression buffer + unsigned size; //length of data buffer; reads decrement counter, set ready to false at 0 + bool ready; //true when data[] is valid; false to invoke sdd1emu.decompress() + } buffer; +}; + +extern SDD1 sdd1; diff --git a/libmednahawk/src/snes/src/chip/sdd1/sdd1emu.cpp b/libmednahawk/src/snes/src/chip/sdd1/sdd1emu.cpp new file mode 100644 index 0000000000..f1b750908e --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sdd1/sdd1emu.cpp @@ -0,0 +1,452 @@ +#ifdef SDD1_CPP + +/************************************************************************ + +S-DD1'algorithm emulation code +------------------------------ + +Author: Andreas Naive +Date: August 2003 +Last update: October 2004 + +This code is Public Domain. There is no copyright holded by the author. +Said this, the author wish to explicitly emphasize his inalienable moral rights +over this piece of intelectual work and the previous research that made it +possible, as recognized by most of the copyright laws around the world. + +This code is provided 'as-is', with no warranty, expressed or implied. +No responsability is assumed by the author in connection with it. + +The author is greatly indebted with The Dumper, without whose help and +patience providing him with real S-DD1 data the research would have never been +possible. He also wish to note that in the very beggining of his research, +Neviksti had done some steps in the right direction. By last, the author is +indirectly indebted to all the people that worked and contributed in the +S-DD1 issue in the past. + +An algorithm's documentation is available as a separate document. +The implementation is obvious when the algorithm is +understood. + +************************************************************************/ + +typedef uint8 bool8; +#define SDD1_read(__addr) (sdd1.read(__addr)) + +//////////////////////////////////////////////////// + + +void SDD1_IM::prepareDecomp(uint32 in_buf) { + + byte_ptr=in_buf; + bit_count=4; + +} + +//////////////////////////////////////////////////// + + +uint8 SDD1_IM::getCodeword(uint8 code_len) { + + uint8 codeword; + uint8 comp_count; + + codeword = (SDD1_read(byte_ptr))<>(9-bit_count); + bit_count+=code_len; + } + + if (bit_count & 0x08) { + byte_ptr++; + bit_count&=0x07; + } + + return codeword; + +} + +////////////////////////////////////////////////////// + + +SDD1_GCD::SDD1_GCD(SDD1_IM *associatedIM) : + IM(associatedIM) +{ + +} + +////////////////////////////////////////////////////// + + +void SDD1_GCD::getRunCount(uint8 code_num, uint8 *MPScount, bool8 *LPSind) { + + const uint8 run_count[] = { + 0x00, 0x00, 0x01, 0x00, 0x03, 0x01, 0x02, 0x00, + 0x07, 0x03, 0x05, 0x01, 0x06, 0x02, 0x04, 0x00, + 0x0f, 0x07, 0x0b, 0x03, 0x0d, 0x05, 0x09, 0x01, + 0x0e, 0x06, 0x0a, 0x02, 0x0c, 0x04, 0x08, 0x00, + 0x1f, 0x0f, 0x17, 0x07, 0x1b, 0x0b, 0x13, 0x03, + 0x1d, 0x0d, 0x15, 0x05, 0x19, 0x09, 0x11, 0x01, + 0x1e, 0x0e, 0x16, 0x06, 0x1a, 0x0a, 0x12, 0x02, + 0x1c, 0x0c, 0x14, 0x04, 0x18, 0x08, 0x10, 0x00, + 0x3f, 0x1f, 0x2f, 0x0f, 0x37, 0x17, 0x27, 0x07, + 0x3b, 0x1b, 0x2b, 0x0b, 0x33, 0x13, 0x23, 0x03, + 0x3d, 0x1d, 0x2d, 0x0d, 0x35, 0x15, 0x25, 0x05, + 0x39, 0x19, 0x29, 0x09, 0x31, 0x11, 0x21, 0x01, + 0x3e, 0x1e, 0x2e, 0x0e, 0x36, 0x16, 0x26, 0x06, + 0x3a, 0x1a, 0x2a, 0x0a, 0x32, 0x12, 0x22, 0x02, + 0x3c, 0x1c, 0x2c, 0x0c, 0x34, 0x14, 0x24, 0x04, + 0x38, 0x18, 0x28, 0x08, 0x30, 0x10, 0x20, 0x00, + 0x7f, 0x3f, 0x5f, 0x1f, 0x6f, 0x2f, 0x4f, 0x0f, + 0x77, 0x37, 0x57, 0x17, 0x67, 0x27, 0x47, 0x07, + 0x7b, 0x3b, 0x5b, 0x1b, 0x6b, 0x2b, 0x4b, 0x0b, + 0x73, 0x33, 0x53, 0x13, 0x63, 0x23, 0x43, 0x03, + 0x7d, 0x3d, 0x5d, 0x1d, 0x6d, 0x2d, 0x4d, 0x0d, + 0x75, 0x35, 0x55, 0x15, 0x65, 0x25, 0x45, 0x05, + 0x79, 0x39, 0x59, 0x19, 0x69, 0x29, 0x49, 0x09, + 0x71, 0x31, 0x51, 0x11, 0x61, 0x21, 0x41, 0x01, + 0x7e, 0x3e, 0x5e, 0x1e, 0x6e, 0x2e, 0x4e, 0x0e, + 0x76, 0x36, 0x56, 0x16, 0x66, 0x26, 0x46, 0x06, + 0x7a, 0x3a, 0x5a, 0x1a, 0x6a, 0x2a, 0x4a, 0x0a, + 0x72, 0x32, 0x52, 0x12, 0x62, 0x22, 0x42, 0x02, + 0x7c, 0x3c, 0x5c, 0x1c, 0x6c, 0x2c, 0x4c, 0x0c, + 0x74, 0x34, 0x54, 0x14, 0x64, 0x24, 0x44, 0x04, + 0x78, 0x38, 0x58, 0x18, 0x68, 0x28, 0x48, 0x08, + 0x70, 0x30, 0x50, 0x10, 0x60, 0x20, 0x40, 0x00, + }; + + uint8 codeword=IM->getCodeword(code_num); + + if (codeword & 0x80) { + *LPSind=1; + *MPScount=run_count[codeword>>(code_num^0x07)]; + } + else { + *MPScount=(1<getRunCount(code_num, &MPScount, &LPSind); + + if (MPScount) { + bit=0; + MPScount--; + } + else { + bit=1; + LPSind=0; + } + + if (MPScount || LPSind) (*endOfRun)=0; + else (*endOfRun)=1; + + return bit; + +} + +///////////////////////////////////////////////// + + +SDD1_PEM::SDD1_PEM(SDD1_BG *associatedBG0, SDD1_BG *associatedBG1, + SDD1_BG *associatedBG2, SDD1_BG *associatedBG3, + SDD1_BG *associatedBG4, SDD1_BG *associatedBG5, + SDD1_BG *associatedBG6, SDD1_BG *associatedBG7) { + + BG[0]=associatedBG0; + BG[1]=associatedBG1; + BG[2]=associatedBG2; + BG[3]=associatedBG3; + BG[4]=associatedBG4; + BG[5]=associatedBG5; + BG[6]=associatedBG6; + BG[7]=associatedBG7; + +} + +///////////////////////////////////////////////////////// + + +const SDD1_PEM::state SDD1_PEM::evolution_table[]={ + { 0,25,25}, + { 0, 2, 1}, + { 0, 3, 1}, + { 0, 4, 2}, + { 0, 5, 3}, + { 1, 6, 4}, + { 1, 7, 5}, + { 1, 8, 6}, + { 1, 9, 7}, + { 2,10, 8}, + { 2,11, 9}, + { 2,12,10}, + { 2,13,11}, + { 3,14,12}, + { 3,15,13}, + { 3,16,14}, + { 3,17,15}, + { 4,18,16}, + { 4,19,17}, + { 5,20,18}, + { 5,21,19}, + { 6,22,20}, + { 6,23,21}, + { 7,24,22}, + { 7,24,23}, + { 0,26, 1}, + { 1,27, 2}, + { 2,28, 4}, + { 3,29, 8}, + { 4,30,12}, + { 5,31,16}, + { 6,32,18}, + { 7,24,22} + }; + +////////////////////////////////////////////////////// + + +void SDD1_PEM::prepareDecomp(void) { + + for (uint8 i=0; i<32; i++) { + contextInfo[i].status=0; + contextInfo[i].MPS=0; + } + +} + +///////////////////////////////////////////////////////// + + +uint8 SDD1_PEM::getBit(uint8 context) { + + bool8 endOfRun; + uint8 bit; + + SDD1_ContextInfo *pContInfo=&contextInfo[context]; + uint8 currStatus = pContInfo->status; + const state *pState=&SDD1_PEM::evolution_table[currStatus]; + uint8 currentMPS=pContInfo->MPS; + + bit=(BG[pState->code_num])->getBit(&endOfRun); + + if (endOfRun) + if (bit) { + if (!(currStatus & 0xfe)) (pContInfo->MPS)^=0x01; + (pContInfo->status)=pState->nextIfLPS; + } + else + (pContInfo->status)=pState->nextIfMPS; + + return bit^currentMPS; + +} + +////////////////////////////////////////////////////////////// + + +SDD1_CM::SDD1_CM(SDD1_PEM *associatedPEM) : + PEM(associatedPEM) +{ + +} + +////////////////////////////////////////////////////////////// + + +void SDD1_CM::prepareDecomp(uint32 first_byte) { + + bitplanesInfo = SDD1_read(first_byte) & 0xc0; + contextBitsInfo = SDD1_read(first_byte) & 0x30; + bit_number=0; + for (int i=0; i<8; i++) prevBitplaneBits[i]=0; + switch (bitplanesInfo) { + case 0x00: + currBitplane = 1; + break; + case 0x40: + currBitplane = 7; + break; + case 0x80: + currBitplane = 3; + } + +} + +///////////////////////////////////////////////////////////// + + +uint8 SDD1_CM::getBit(void) { + + uint8 currContext; + uint16 *context_bits; + + switch (bitplanesInfo) { + case 0x00: + currBitplane ^= 0x01; + break; + case 0x40: + currBitplane ^= 0x01; + if (!(bit_number & 0x7f)) currBitplane = ((currBitplane+2) & 0x07); + break; + case 0x80: + currBitplane ^= 0x01; + if (!(bit_number & 0x7f)) currBitplane ^= 0x02; + break; + case 0xc0: + currBitplane = bit_number & 0x07; + } + + context_bits = &prevBitplaneBits[currBitplane]; + + currContext=(currBitplane & 0x01)<<4; + switch (contextBitsInfo) { + case 0x00: + currContext|=((*context_bits & 0x01c0)>>5)|(*context_bits & 0x0001); + break; + case 0x10: + currContext|=((*context_bits & 0x0180)>>5)|(*context_bits & 0x0001); + break; + case 0x20: + currContext|=((*context_bits & 0x00c0)>>5)|(*context_bits & 0x0001); + break; + case 0x30: + currContext|=((*context_bits & 0x0180)>>5)|(*context_bits & 0x0003); + } + + uint8 bit=PEM->getBit(currContext); + + *context_bits <<= 1; + *context_bits |= bit; + + bit_number++; + + return bit; + +} + +////////////////////////////////////////////////// + + +SDD1_OL::SDD1_OL(SDD1_CM *associatedCM) : + CM(associatedCM) +{ + +} + +/////////////////////////////////////////////////// + + +void SDD1_OL::prepareDecomp(uint32 first_byte, uint16 out_len, uint8 *out_buf) { + + bitplanesInfo = SDD1_read(first_byte) & 0xc0; + length=out_len; + buffer=out_buf; + +} + +/////////////////////////////////////////////////// + + +void SDD1_OL::launch(void) { + + uint8 i; + uint8 register1, register2; + + switch (bitplanesInfo) { + case 0x00: + case 0x40: + case 0x80: + i=1; + do { //if length==0, we output 2^16 bytes + if (!i) { + *(buffer++)=register2; + i=~i; + } + else { + for (register1=register2=0, i=0x80; i; i>>=1) { + if (CM->getBit()) register1 |= i; + if (CM->getBit()) register2 |= i; + } + *(buffer++)=register1; + } + } while (--length); + break; + case 0xc0: + do { + for (register1=0, i=0x01; i; i<<=1) { + if (CM->getBit()) register1 |= i; + } + *(buffer++)=register1; + } while (--length); + } + +} + +/////////////////////////////////////////////////////// + + +void SDD1emu::decompress(uint32 in_buf, uint16 out_len, uint8 *out_buf) { + + IM.prepareDecomp(in_buf); + BG0.prepareDecomp(); + BG1.prepareDecomp(); + BG2.prepareDecomp(); + BG3.prepareDecomp(); + BG4.prepareDecomp(); + BG5.prepareDecomp(); + BG6.prepareDecomp(); + BG7.prepareDecomp(); + PEM.prepareDecomp(); + CM.prepareDecomp(in_buf); + OL.prepareDecomp(in_buf, out_len, out_buf); + + OL.launch(); + +} + +//////////////////////////////////////////////////////////// + + +SDD1emu::SDD1emu() : + GCD(&IM), + BG0(&GCD, 0), BG1(&GCD, 1), BG2(&GCD, 2), BG3(&GCD, 3), + BG4(&GCD, 4), BG5(&GCD, 5), BG6(&GCD, 6), BG7(&GCD, 7), + PEM(&BG0, &BG1, &BG2, &BG3, &BG4, &BG5, &BG6, &BG7), + CM(&PEM), + OL(&CM) +{ + +} + +/////////////////////////////////////////////////////////// + +#endif diff --git a/libmednahawk/src/snes/src/chip/sdd1/sdd1emu.hpp b/libmednahawk/src/snes/src/chip/sdd1/sdd1emu.hpp new file mode 100644 index 0000000000..41cdf6e36a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sdd1/sdd1emu.hpp @@ -0,0 +1,164 @@ +/************************************************************************ + +S-DD1'algorithm emulation code +------------------------------ + +Author: Andreas Naive +Date: August 2003 +Last update: October 2004 + +This code is Public Domain. There is no copyright holded by the author. +Said this, the author wish to explicitly emphasize his inalienable moral rights +over this piece of intelectual work and the previous research that made it +possible, as recognized by most of the copyright laws around the world. + +This code is provided 'as-is', with no warranty, expressed or implied. +No responsability is assumed by the author in connection with it. + +The author is greatly indebted with The Dumper, without whose help and +patience providing him with real S-DD1 data the research would have never been +possible. He also wish to note that in the very beggining of his research, +Neviksti had done some steps in the right direction. By last, the author is +indirectly indebted to all the people that worked and contributed in the +S-DD1 issue in the past. + +An algorithm's documentation is available as a separate document. +The implementation is obvious when the algorithm is +understood. + +************************************************************************/ + +#define bool8 uint8 + +class SDD1_IM { //Input Manager + + public: + SDD1_IM(void) {} + void prepareDecomp(uint32 in_buf); + uint8 getCodeword(const uint8 code_len); + + private: + uint32 byte_ptr; + uint8 bit_count; + +}; + +//////////////////////////////////////////////////// + + +class SDD1_GCD { //Golomb-Code Decoder + + public: + SDD1_GCD(SDD1_IM *associatedIM); + void getRunCount(uint8 code_num, uint8 *MPScount, bool8 *LPSind); + + private: + SDD1_IM *const IM; + +}; + +////////////////////////////////////////////////////// + + +class SDD1_BG { // Bits Generator + + public: + SDD1_BG(SDD1_GCD *associatedGCD, uint8 code); + void prepareDecomp(void); + uint8 getBit(bool8 *endOfRun); + + private: + SDD1_GCD *const GCD; + const uint8 code_num; + uint8 MPScount; + bool8 LPSind; + +}; + +//////////////////////////////////////////////// + + +class SDD1_PEM { //Probability Estimation Module + + public: + SDD1_PEM(SDD1_BG *associatedBG0, SDD1_BG *associatedBG1, + SDD1_BG *associatedBG2, SDD1_BG *associatedBG3, + SDD1_BG *associatedBG4, SDD1_BG *associatedBG5, + SDD1_BG *associatedBG6, SDD1_BG *associatedBG7); + void prepareDecomp(void); + uint8 getBit(uint8 context); + + private: + struct state { + uint8 code_num; + uint8 nextIfMPS; + uint8 nextIfLPS; + }; + static const state evolution_table[]; + struct SDD1_ContextInfo { + uint8 status; + uint8 MPS; + } contextInfo[32]; + SDD1_BG * BG[8]; + +}; + +/////////////////////////////////////////////////// + + +class SDD1_CM { //Context Model + + public: + SDD1_CM(SDD1_PEM *associatedPEM); + void prepareDecomp(uint32 first_byte); + uint8 getBit(void); + + private: + uint8 bitplanesInfo; + uint8 contextBitsInfo; + uint8 bit_number; + uint8 currBitplane; + uint16 prevBitplaneBits[8]; + SDD1_PEM *const PEM; + +}; + +/////////////////////////////////////////////////// + + +class SDD1_OL { //Output Logic + + public: + SDD1_OL(SDD1_CM *associatedCM); + void prepareDecomp(uint32 first_byte, uint16 out_len, uint8 *out_buf); + void launch(void); + + private: + uint8 bitplanesInfo; + uint16 length; + uint8 *buffer; + SDD1_CM *const CM; + +}; + +///////////////////////////////////////////////////////// + + +class SDD1emu { + + public: + SDD1emu(void); + void decompress(uint32 in_buf, uint16 out_len, uint8 *out_buf); + + private: + SDD1_IM IM; + SDD1_GCD GCD; + SDD1_BG BG0; SDD1_BG BG1; SDD1_BG BG2; SDD1_BG BG3; + SDD1_BG BG4; SDD1_BG BG5; SDD1_BG BG6; SDD1_BG BG7; + SDD1_PEM PEM; + SDD1_CM CM; + SDD1_OL OL; + +}; + +#undef bool8 diff --git a/libmednahawk/src/snes/src/chip/sdd1/serialization.cpp b/libmednahawk/src/snes/src/chip/sdd1/serialization.cpp new file mode 100644 index 0000000000..4ac7ee4569 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/sdd1/serialization.cpp @@ -0,0 +1,19 @@ +#ifdef SDD1_CPP + +void SDD1::serialize(serializer &s) { + s.integer(sdd1_enable); + s.integer(xfer_enable); + s.array(mmc); + + for(unsigned n = 0; n < 8; n++) { + s.integer(dma[n].addr); + s.integer(dma[n].size); + } + + s.array(buffer.data); + s.integer(buffer.offset); + s.integer(buffer.size); + s.integer(buffer.ready); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/spc7110/decomp.cpp b/libmednahawk/src/snes/src/chip/spc7110/decomp.cpp new file mode 100644 index 0000000000..1a8ef6ca2c --- /dev/null +++ b/libmednahawk/src/snes/src/chip/spc7110/decomp.cpp @@ -0,0 +1,511 @@ +#ifdef SPC7110_CPP + +uint8 SPC7110Decomp::read() { + if(decomp_buffer_length == 0) { + //decompress at least (decomp_buffer_size / 2) bytes to the buffer + switch(decomp_mode) { + case 0: mode0(false); break; + case 1: mode1(false); break; + case 2: mode2(false); break; + default: return 0x00; + } + } + + uint8 data = decomp_buffer[decomp_buffer_rdoffset++]; + decomp_buffer_rdoffset &= decomp_buffer_size - 1; + decomp_buffer_length--; + return data; +} + +void SPC7110Decomp::write(uint8 data) { + decomp_buffer[decomp_buffer_wroffset++] = data; + decomp_buffer_wroffset &= decomp_buffer_size - 1; + decomp_buffer_length++; +} + +uint8 SPC7110Decomp::dataread() { + unsigned size = memory::cartrom.size() - 0x100000; + while(decomp_offset >= size) decomp_offset -= size; + return memory::cartrom.read(0x100000 + decomp_offset++); +} + +void SPC7110Decomp::init(unsigned mode, unsigned offset, unsigned index) { + decomp_mode = mode; + decomp_offset = offset; + + decomp_buffer_rdoffset = 0; + decomp_buffer_wroffset = 0; + decomp_buffer_length = 0; + + //reset context states + for(unsigned i = 0; i < 32; i++) { + context[i].index = 0; + context[i].invert = 0; + } + + switch(decomp_mode) { + case 0: mode0(true); break; + case 1: mode1(true); break; + case 2: mode2(true); break; + } + + //decompress up to requested output data index + while(index--) read(); +} + +// + +void SPC7110Decomp::mode0(bool init) { + static uint8 val, in, span; + static int out, inverts, lps, in_count; + + if(init == true) { + out = inverts = lps = 0; + span = 0xff; + val = dataread(); + in = dataread(); + in_count = 8; + return; + } + + while(decomp_buffer_length < (decomp_buffer_size >> 1)) { + for(unsigned bit = 0; bit < 8; bit++) { + //get context + uint8 mask = (1 << (bit & 3)) - 1; + uint8 con = mask + ((inverts & mask) ^ (lps & mask)); + if(bit > 3) con += 15; + + //get prob and mps + unsigned prob = probability(con); + unsigned mps = (((out >> 15) & 1) ^ context[con].invert); + + //get bit + unsigned flag_lps; + if(val <= span - prob) { //mps + span = span - prob; + out = (out << 1) + mps; + flag_lps = 0; + } else { //lps + val = val - (span - (prob - 1)); + span = prob - 1; + out = (out << 1) + 1 - mps; + flag_lps = 1; + } + + //renormalize + unsigned shift = 0; + while(span < 0x7f) { + shift++; + + span = (span << 1) + 1; + val = (val << 1) + (in >> 7); + + in <<= 1; + if(--in_count == 0) { + in = dataread(); + in_count = 8; + } + } + + //update processing info + lps = (lps << 1) + flag_lps; + inverts = (inverts << 1) + context[con].invert; + + //update context state + if(flag_lps & toggle_invert(con)) context[con].invert ^= 1; + if(flag_lps) context[con].index = next_lps(con); + else if(shift) context[con].index = next_mps(con); + } + + //save byte + write(out); + } +} + +void SPC7110Decomp::mode1(bool init) { + static int pixelorder[4], realorder[4]; + static uint8 in, val, span; + static int out, inverts, lps, in_count; + + if(init == true) { + for(unsigned i = 0; i < 4; i++) pixelorder[i] = i; + out = inverts = lps = 0; + span = 0xff; + val = dataread(); + in = dataread(); + in_count = 8; + return; + } + + while(decomp_buffer_length < (decomp_buffer_size >> 1)) { + for(unsigned pixel = 0; pixel < 8; pixel++) { + //get first symbol context + unsigned a = ((out >> (1 * 2)) & 3); + unsigned b = ((out >> (7 * 2)) & 3); + unsigned c = ((out >> (8 * 2)) & 3); + unsigned con = (a == b) ? (b != c) : (b == c) ? 2 : 4 - (a == c); + + //update pixel order + unsigned m, n; + for(m = 0; m < 4; m++) if(pixelorder[m] == a) break; + for(n = m; n > 0; n--) pixelorder[n] = pixelorder[n - 1]; + pixelorder[0] = a; + + //calculate the real pixel order + for(m = 0; m < 4; m++) realorder[m] = pixelorder[m]; + + //rotate reference pixel c value to top + for(m = 0; m < 4; m++) if(realorder[m] == c) break; + for(n = m; n > 0; n--) realorder[n] = realorder[n - 1]; + realorder[0] = c; + + //rotate reference pixel b value to top + for(m = 0; m < 4; m++) if(realorder[m] == b) break; + for(n = m; n > 0; n--) realorder[n] = realorder[n - 1]; + realorder[0] = b; + + //rotate reference pixel a value to top + for(m = 0; m < 4; m++) if(realorder[m] == a) break; + for(n = m; n > 0; n--) realorder[n] = realorder[n - 1]; + realorder[0] = a; + + //get 2 symbols + for(unsigned bit = 0; bit < 2; bit++) { + //get prob + unsigned prob = probability(con); + + //get symbol + unsigned flag_lps; + if(val <= span - prob) { //mps + span = span - prob; + flag_lps = 0; + } else { //lps + val = val - (span - (prob - 1)); + span = prob - 1; + flag_lps = 1; + } + + //renormalize + unsigned shift = 0; + while(span < 0x7f) { + shift++; + + span = (span << 1) + 1; + val = (val << 1) + (in >> 7); + + in <<= 1; + if(--in_count == 0) { + in = dataread(); + in_count = 8; + } + } + + //update processing info + lps = (lps << 1) + flag_lps; + inverts = (inverts << 1) + context[con].invert; + + //update context state + if(flag_lps & toggle_invert(con)) context[con].invert ^= 1; + if(flag_lps) context[con].index = next_lps(con); + else if(shift) context[con].index = next_mps(con); + + //get next context + con = 5 + (con << 1) + ((lps ^ inverts) & 1); + } + + //get pixel + b = realorder[(lps ^ inverts) & 3]; + out = (out << 2) + b; + } + + //turn pixel data into bitplanes + unsigned data = morton_2x8(out); + write(data >> 8); + write(data >> 0); + } +} + +void SPC7110Decomp::mode2(bool init) { + static int pixelorder[16], realorder[16]; + static uint8 bitplanebuffer[16], buffer_index; + static uint8 in, val, span; + static int out0, out1, inverts, lps, in_count; + + if(init == true) { + for(unsigned i = 0; i < 16; i++) pixelorder[i] = i; + buffer_index = 0; + out0 = out1 = inverts = lps = 0; + span = 0xff; + val = dataread(); + in = dataread(); + in_count = 8; + return; + } + + while(decomp_buffer_length < (decomp_buffer_size >> 1)) { + for(unsigned pixel = 0; pixel < 8; pixel++) { + //get first symbol context + unsigned a = ((out0 >> (0 * 4)) & 15); + unsigned b = ((out0 >> (7 * 4)) & 15); + unsigned c = ((out1 >> (0 * 4)) & 15); + unsigned con = 0; + unsigned refcon = (a == b) ? (b != c) : (b == c) ? 2 : 4 - (a == c); + + //update pixel order + unsigned m, n; + for(m = 0; m < 16; m++) if(pixelorder[m] == a) break; + for(n = m; n > 0; n--) pixelorder[n] = pixelorder[n - 1]; + pixelorder[0] = a; + + //calculate the real pixel order + for(m = 0; m < 16; m++) realorder[m] = pixelorder[m]; + + //rotate reference pixel c value to top + for(m = 0; m < 16; m++) if(realorder[m] == c) break; + for(n = m; n > 0; n--) realorder[n] = realorder[n - 1]; + realorder[0] = c; + + //rotate reference pixel b value to top + for(m = 0; m < 16; m++) if(realorder[m] == b) break; + for(n = m; n > 0; n--) realorder[n] = realorder[n - 1]; + realorder[0] = b; + + //rotate reference pixel a value to top + for(m = 0; m < 16; m++) if(realorder[m] == a) break; + for(n = m; n > 0; n--) realorder[n] = realorder[n - 1]; + realorder[0] = a; + + //get 4 symbols + for(unsigned bit = 0; bit < 4; bit++) { + //get prob + unsigned prob = probability(con); + + //get symbol + unsigned flag_lps; + if(val <= span - prob) { //mps + span = span - prob; + flag_lps = 0; + } else { //lps + val = val - (span - (prob - 1)); + span = prob - 1; + flag_lps = 1; + } + + //renormalize + unsigned shift = 0; + while(span < 0x7f) { + shift++; + + span = (span << 1) + 1; + val = (val << 1) + (in >> 7); + + in <<= 1; + if(--in_count == 0) { + in = dataread(); + in_count = 8; + } + } + + //update processing info + lps = (lps << 1) + flag_lps; + unsigned invertbit = context[con].invert; + inverts = (inverts << 1) + invertbit; + + //update context state + if(flag_lps & toggle_invert(con)) context[con].invert ^= 1; + if(flag_lps) context[con].index = next_lps(con); + else if(shift) context[con].index = next_mps(con); + + //get next context + con = mode2_context_table[con][flag_lps ^ invertbit] + (con == 1 ? refcon : 0); + } + + //get pixel + b = realorder[(lps ^ inverts) & 0x0f]; + out1 = (out1 << 4) + ((out0 >> 28) & 0x0f); + out0 = (out0 << 4) + b; + } + + //convert pixel data into bitplanes + unsigned data = morton_4x8(out0); + write(data >> 24); + write(data >> 16); + bitplanebuffer[buffer_index++] = data >> 8; + bitplanebuffer[buffer_index++] = data >> 0; + + if(buffer_index == 16) { + for(unsigned i = 0; i < 16; i++) write(bitplanebuffer[i]); + buffer_index = 0; + } + } +} + +// + +const uint8 SPC7110Decomp::evolution_table[53][4] = { +//{ prob, nextlps, nextmps, toggle invert }, + + { 0x5a, 1, 1, 1 }, + { 0x25, 6, 2, 0 }, + { 0x11, 8, 3, 0 }, + { 0x08, 10, 4, 0 }, + { 0x03, 12, 5, 0 }, + { 0x01, 15, 5, 0 }, + + { 0x5a, 7, 7, 1 }, + { 0x3f, 19, 8, 0 }, + { 0x2c, 21, 9, 0 }, + { 0x20, 22, 10, 0 }, + { 0x17, 23, 11, 0 }, + { 0x11, 25, 12, 0 }, + { 0x0c, 26, 13, 0 }, + { 0x09, 28, 14, 0 }, + { 0x07, 29, 15, 0 }, + { 0x05, 31, 16, 0 }, + { 0x04, 32, 17, 0 }, + { 0x03, 34, 18, 0 }, + { 0x02, 35, 5, 0 }, + + { 0x5a, 20, 20, 1 }, + { 0x48, 39, 21, 0 }, + { 0x3a, 40, 22, 0 }, + { 0x2e, 42, 23, 0 }, + { 0x26, 44, 24, 0 }, + { 0x1f, 45, 25, 0 }, + { 0x19, 46, 26, 0 }, + { 0x15, 25, 27, 0 }, + { 0x11, 26, 28, 0 }, + { 0x0e, 26, 29, 0 }, + { 0x0b, 27, 30, 0 }, + { 0x09, 28, 31, 0 }, + { 0x08, 29, 32, 0 }, + { 0x07, 30, 33, 0 }, + { 0x05, 31, 34, 0 }, + { 0x04, 33, 35, 0 }, + { 0x04, 33, 36, 0 }, + { 0x03, 34, 37, 0 }, + { 0x02, 35, 38, 0 }, + { 0x02, 36, 5, 0 }, + + { 0x58, 39, 40, 1 }, + { 0x4d, 47, 41, 0 }, + { 0x43, 48, 42, 0 }, + { 0x3b, 49, 43, 0 }, + { 0x34, 50, 44, 0 }, + { 0x2e, 51, 45, 0 }, + { 0x29, 44, 46, 0 }, + { 0x25, 45, 24, 0 }, + + { 0x56, 47, 48, 1 }, + { 0x4f, 47, 49, 0 }, + { 0x47, 48, 50, 0 }, + { 0x41, 49, 51, 0 }, + { 0x3c, 50, 52, 0 }, + { 0x37, 51, 43, 0 }, +}; + +const uint8 SPC7110Decomp::mode2_context_table[32][2] = { +//{ next 0, next 1 }, + + { 1, 2 }, + + { 3, 8 }, + { 13, 14 }, + + { 15, 16 }, + { 17, 18 }, + { 19, 20 }, + { 21, 22 }, + { 23, 24 }, + { 25, 26 }, + { 25, 26 }, + { 25, 26 }, + { 25, 26 }, + { 25, 26 }, + { 27, 28 }, + { 29, 30 }, + + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + { 31, 31 }, + + { 31, 31 }, +}; + +uint8 SPC7110Decomp::probability (unsigned n) { return evolution_table[context[n].index][0]; } +uint8 SPC7110Decomp::next_lps (unsigned n) { return evolution_table[context[n].index][1]; } +uint8 SPC7110Decomp::next_mps (unsigned n) { return evolution_table[context[n].index][2]; } +bool SPC7110Decomp::toggle_invert(unsigned n) { return evolution_table[context[n].index][3]; } + +unsigned SPC7110Decomp::morton_2x8(unsigned data) { + //reverse morton lookup: de-interleave two 8-bit values + //15, 13, 11, 9, 7, 5, 3, 1 -> 15- 8 + //14, 12, 10, 8, 6, 4, 2, 0 -> 7- 0 + return morton16[0][(data >> 0) & 255] + morton16[1][(data >> 8) & 255]; +} + +unsigned SPC7110Decomp::morton_4x8(unsigned data) { + //reverse morton lookup: de-interleave four 8-bit values + //31, 27, 23, 19, 15, 11, 7, 3 -> 31-24 + //30, 26, 22, 18, 14, 10, 6, 2 -> 23-16 + //29, 25, 21, 17, 13, 9, 5, 1 -> 15- 8 + //28, 24, 20, 16, 12, 8, 4, 0 -> 7- 0 + return morton32[0][(data >> 0) & 255] + morton32[1][(data >> 8) & 255] + + morton32[2][(data >> 16) & 255] + morton32[3][(data >> 24) & 255]; +} + +// + +void SPC7110Decomp::reset() { + //mode 3 is invalid; this is treated as a special case to always return 0x00 + //set to mode 3 so that reading decomp port before starting first decomp will return 0x00 + decomp_mode = 3; + + decomp_buffer_rdoffset = 0; + decomp_buffer_wroffset = 0; + decomp_buffer_length = 0; +} + +SPC7110Decomp::SPC7110Decomp() { + decomp_buffer = new uint8_t[decomp_buffer_size]; + reset(); + + //initialize reverse morton lookup tables + for(unsigned i = 0; i < 256; i++) { + #define map(x, y) (((i >> x) & 1) << y) + //2x8-bit + morton16[1][i] = map(7, 15) + map(6, 7) + map(5, 14) + map(4, 6) + + map(3, 13) + map(2, 5) + map(1, 12) + map(0, 4); + morton16[0][i] = map(7, 11) + map(6, 3) + map(5, 10) + map(4, 2) + + map(3, 9) + map(2, 1) + map(1, 8) + map(0, 0); + //4x8-bit + morton32[3][i] = map(7, 31) + map(6, 23) + map(5, 15) + map(4, 7) + + map(3, 30) + map(2, 22) + map(1, 14) + map(0, 6); + morton32[2][i] = map(7, 29) + map(6, 21) + map(5, 13) + map(4, 5) + + map(3, 28) + map(2, 20) + map(1, 12) + map(0, 4); + morton32[1][i] = map(7, 27) + map(6, 19) + map(5, 11) + map(4, 3) + + map(3, 26) + map(2, 18) + map(1, 10) + map(0, 2); + morton32[0][i] = map(7, 25) + map(6, 17) + map(5, 9) + map(4, 1) + + map(3, 24) + map(2, 16) + map(1, 8) + map(0, 0); + #undef map + } +} + +SPC7110Decomp::~SPC7110Decomp() { + delete[] decomp_buffer; +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/spc7110/decomp.hpp b/libmednahawk/src/snes/src/chip/spc7110/decomp.hpp new file mode 100644 index 0000000000..81d25d150a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/spc7110/decomp.hpp @@ -0,0 +1,46 @@ +class SPC7110Decomp { +public: + uint8 read(); + void init(unsigned mode, unsigned offset, unsigned index); + void reset(); + + void serialize(serializer&); + SPC7110Decomp(); + ~SPC7110Decomp(); + +private: + unsigned decomp_mode; + unsigned decomp_offset; + + //read() will spool chunks half the size of decomp_buffer_size + enum { decomp_buffer_size = 64 }; //must be >= 64, and must be a power of two + uint8 *decomp_buffer; + unsigned decomp_buffer_rdoffset; + unsigned decomp_buffer_wroffset; + unsigned decomp_buffer_length; + + void write(uint8 data); + uint8 dataread(); + + void mode0(bool init); + void mode1(bool init); + void mode2(bool init); + + static const uint8 evolution_table[53][4]; + static const uint8 mode2_context_table[32][2]; + + struct ContextState { + uint8 index; + uint8 invert; + } context[32]; + + uint8 probability(unsigned n); + uint8 next_lps(unsigned n); + uint8 next_mps(unsigned n); + bool toggle_invert(unsigned n); + + unsigned morton16[2][256]; + unsigned morton32[4][256]; + unsigned morton_2x8(unsigned data); + unsigned morton_4x8(unsigned data); +}; diff --git a/libmednahawk/src/snes/src/chip/spc7110/serialization.cpp b/libmednahawk/src/snes/src/chip/spc7110/serialization.cpp new file mode 100644 index 0000000000..d905d75e76 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/spc7110/serialization.cpp @@ -0,0 +1,81 @@ +#ifdef SPC7110_CPP + +void SPC7110Decomp::serialize(serializer &s) { + s.integer(decomp_mode); + s.integer(decomp_offset); + + s.array(decomp_buffer, decomp_buffer_size); + s.integer(decomp_buffer_rdoffset); + s.integer(decomp_buffer_wroffset); + s.integer(decomp_buffer_length); + + for(unsigned n = 0; n < 32; n++) { + s.integer(context[n].index); + s.integer(context[n].invert); + } +} + +void SPC7110::serialize(serializer &s) { + s.integer(r4801); + s.integer(r4802); + s.integer(r4803); + s.integer(r4804); + s.integer(r4805); + s.integer(r4806); + s.integer(r4807); + s.integer(r4808); + s.integer(r4809); + s.integer(r480a); + s.integer(r480b); + s.integer(r480c); + decomp.serialize(s); + + s.integer(r4811); + s.integer(r4812); + s.integer(r4813); + s.integer(r4814); + s.integer(r4815); + s.integer(r4816); + s.integer(r4817); + s.integer(r4818); + s.integer(r481x); + s.integer(r4814_latch); + s.integer(r4815_latch); + + s.integer(r4820); + s.integer(r4821); + s.integer(r4822); + s.integer(r4823); + s.integer(r4824); + s.integer(r4825); + s.integer(r4826); + s.integer(r4827); + s.integer(r4828); + s.integer(r4829); + s.integer(r482a); + s.integer(r482b); + s.integer(r482c); + s.integer(r482d); + s.integer(r482e); + s.integer(r482f); + + s.integer(r4830); + s.integer(r4831); + s.integer(r4832); + s.integer(r4833); + s.integer(r4834); + + s.integer(dx_offset); + s.integer(ex_offset); + s.integer(fx_offset); + + s.integer(r4840); + s.integer(r4841); + s.integer(r4842); + + s.integer(rtc_state); + s.integer(rtc_mode); + s.integer(rtc_index); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/spc7110/spc7110.cpp b/libmednahawk/src/snes/src/chip/spc7110/spc7110.cpp new file mode 100644 index 0000000000..f4e5bef01a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/spc7110/spc7110.cpp @@ -0,0 +1,677 @@ +#include <../base.hpp> + +#define SPC7110_CPP +namespace SNES { + +SPC7110 spc7110; + +#include "serialization.cpp" +#include "decomp.cpp" + +const unsigned SPC7110::months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +void SPC7110::init() {} + +void SPC7110::enable() { + uint16_t limit = (cartridge.has_spc7110rtc() ? 0x4842 : 0x483f); + for(uint16_t i = 0x4800; i <= limit; i++) memory::mmio.map(i, *this); +} + +void SPC7110::power() { + reset(); +} + +void SPC7110::reset() { + r4801 = 0x00; + r4802 = 0x00; + r4803 = 0x00; + r4804 = 0x00; + r4805 = 0x00; + r4806 = 0x00; + r4807 = 0x00; + r4808 = 0x00; + r4809 = 0x00; + r480a = 0x00; + r480b = 0x00; + r480c = 0x00; + + decomp.reset(); + + r4811 = 0x00; + r4812 = 0x00; + r4813 = 0x00; + r4814 = 0x00; + r4815 = 0x00; + r4816 = 0x00; + r4817 = 0x00; + r4818 = 0x00; + + r481x = 0x00; + r4814_latch = false; + r4815_latch = false; + + r4820 = 0x00; + r4821 = 0x00; + r4822 = 0x00; + r4823 = 0x00; + r4824 = 0x00; + r4825 = 0x00; + r4826 = 0x00; + r4827 = 0x00; + r4828 = 0x00; + r4829 = 0x00; + r482a = 0x00; + r482b = 0x00; + r482c = 0x00; + r482d = 0x00; + r482e = 0x00; + r482f = 0x00; + + r4830 = 0x00; + mmio_write(0x4831, 0); + mmio_write(0x4832, 1); + mmio_write(0x4833, 2); + r4834 = 0x00; + + r4840 = 0x00; + r4841 = 0x00; + r4842 = 0x00; + + if(cartridge.has_spc7110rtc()) { + rtc_state = RTCS_Inactive; + rtc_mode = RTCM_Linear; + rtc_index = 0; + } +} + +unsigned SPC7110::datarom_addr(unsigned addr) { + unsigned size = memory::cartrom.size() - 0x100000; + while(addr >= size) addr -= size; + return addr + 0x100000; +} + +unsigned SPC7110::data_pointer() { return r4811 + (r4812 << 8) + (r4813 << 16); } +unsigned SPC7110::data_adjust() { return r4814 + (r4815 << 8); } +unsigned SPC7110::data_increment() { return r4816 + (r4817 << 8); } +void SPC7110::set_data_pointer(unsigned addr) { r4811 = addr; r4812 = addr >> 8; r4813 = addr >> 16; } +void SPC7110::set_data_adjust(unsigned addr) { r4814 = addr; r4815 = addr >> 8; } + +void SPC7110::update_time(int offset) { + time_t rtc_time + = (memory::cartrtc.read(16) << 0) + | (memory::cartrtc.read(17) << 8) + | (memory::cartrtc.read(18) << 16) + | (memory::cartrtc.read(19) << 24); + time_t current_time = time(0) - offset; + + //sizeof(time_t) is platform-dependent; though memory::cartrtc needs to be platform-agnostic. + //yet platforms with 32-bit signed time_t will overflow every ~68 years. handle this by + //accounting for overflow at the cost of 1-bit precision (to catch underflow). this will allow + //memory::cartrtc timestamp to remain valid for up to ~34 years from the last update, even if + //time_t overflows. calculation should be valid regardless of number representation, time_t size, + //or whether time_t is signed or unsigned. + time_t diff + = (current_time >= rtc_time) + ? (current_time - rtc_time) + : (std::numeric_limits::max() - rtc_time + current_time + 1); //compensate for overflow + if(diff > std::numeric_limits::max() / 2) diff = 0; //compensate for underflow + + bool update = true; + if(memory::cartrtc.read(13) & 1) update = false; //do not update if CR0 timer disable flag is set + if(memory::cartrtc.read(15) & 3) update = false; //do not update if CR2 timer disable flags are set + + if(diff > 0 && update == true) { + unsigned second = memory::cartrtc.read( 0) + memory::cartrtc.read( 1) * 10; + unsigned minute = memory::cartrtc.read( 2) + memory::cartrtc.read( 3) * 10; + unsigned hour = memory::cartrtc.read( 4) + memory::cartrtc.read( 5) * 10; + unsigned day = memory::cartrtc.read( 6) + memory::cartrtc.read( 7) * 10; + unsigned month = memory::cartrtc.read( 8) + memory::cartrtc.read( 9) * 10; + unsigned year = memory::cartrtc.read(10) + memory::cartrtc.read(11) * 10; + unsigned weekday = memory::cartrtc.read(12); + + day--; + month--; + year += (year >= 90) ? 1900 : 2000; //range = 1990-2089 + + second += diff; + while(second >= 60) { + second -= 60; + + minute++; + if(minute < 60) continue; + minute = 0; + + hour++; + if(hour < 24) continue; + hour = 0; + + day++; + weekday = (weekday + 1) % 7; + unsigned days = months[month % 12]; + if(days == 28) { + bool leapyear = false; + if((year % 4) == 0) { + leapyear = true; + if((year % 100) == 0 && (year % 400) != 0) leapyear = false; + } + if(leapyear) days++; + } + if(day < days) continue; + day = 0; + + month++; + if(month < 12) continue; + month = 0; + + year++; + } + + day++; + month++; + year %= 100; + + memory::cartrtc.write( 0, second % 10); + memory::cartrtc.write( 1, second / 10); + memory::cartrtc.write( 2, minute % 10); + memory::cartrtc.write( 3, minute / 10); + memory::cartrtc.write( 4, hour % 10); + memory::cartrtc.write( 5, hour / 10); + memory::cartrtc.write( 6, day % 10); + memory::cartrtc.write( 7, day / 10); + memory::cartrtc.write( 8, month % 10); + memory::cartrtc.write( 9, month / 10); + memory::cartrtc.write(10, year % 10); + memory::cartrtc.write(11, (year / 10) % 10); + memory::cartrtc.write(12, weekday % 7); + } + + memory::cartrtc.write(16, current_time >> 0); + memory::cartrtc.write(17, current_time >> 8); + memory::cartrtc.write(18, current_time >> 16); + memory::cartrtc.write(19, current_time >> 24); +} + +uint8 SPC7110::mmio_read(unsigned addr) { + addr &= 0xffff; + + switch(addr) { + //================== + //decompression unit + //================== + + case 0x4800: { + uint16 counter = (r4809 + (r480a << 8)); + counter--; + r4809 = counter; + r480a = counter >> 8; + return decomp.read(); + } + case 0x4801: return r4801; + case 0x4802: return r4802; + case 0x4803: return r4803; + case 0x4804: return r4804; + case 0x4805: return r4805; + case 0x4806: return r4806; + case 0x4807: return r4807; + case 0x4808: return r4808; + case 0x4809: return r4809; + case 0x480a: return r480a; + case 0x480b: return r480b; + case 0x480c: { + uint8 status = r480c; + r480c &= 0x7f; + return status; + } + + //============== + //data port unit + //============== + + case 0x4810: { + if(r481x != 0x07) return 0x00; + + unsigned addr = data_pointer(); + unsigned adjust = data_adjust(); + if(r4818 & 8) adjust = (int16)adjust; //16-bit sign extend + + unsigned adjustaddr = addr; + if(r4818 & 2) { + adjustaddr += adjust; + set_data_adjust(adjust + 1); + } + + uint8 data = memory::cartrom.read(datarom_addr(adjustaddr)); + if(!(r4818 & 2)) { + unsigned increment = (r4818 & 1) ? data_increment() : 1; + if(r4818 & 4) increment = (int16)increment; //16-bit sign extend + + if((r4818 & 16) == 0) { + set_data_pointer(addr + increment); + } else { + set_data_adjust(adjust + increment); + } + } + + return data; + } + case 0x4811: return r4811; + case 0x4812: return r4812; + case 0x4813: return r4813; + case 0x4814: return r4814; + case 0x4815: return r4815; + case 0x4816: return r4816; + case 0x4817: return r4817; + case 0x4818: return r4818; + case 0x481a: { + if(r481x != 0x07) return 0x00; + + unsigned addr = data_pointer(); + unsigned adjust = data_adjust(); + if(r4818 & 8) adjust = (int16)adjust; //16-bit sign extend + + uint8 data = memory::cartrom.read(datarom_addr(addr + adjust)); + if((r4818 & 0x60) == 0x60) { + if((r4818 & 16) == 0) { + set_data_pointer(addr + adjust); + } else { + set_data_adjust(adjust + adjust); + } + } + + return data; + } + + //========= + //math unit + //========= + + case 0x4820: return r4820; + case 0x4821: return r4821; + case 0x4822: return r4822; + case 0x4823: return r4823; + case 0x4824: return r4824; + case 0x4825: return r4825; + case 0x4826: return r4826; + case 0x4827: return r4827; + case 0x4828: return r4828; + case 0x4829: return r4829; + case 0x482a: return r482a; + case 0x482b: return r482b; + case 0x482c: return r482c; + case 0x482d: return r482d; + case 0x482e: return r482e; + case 0x482f: { + uint8 status = r482f; + r482f &= 0x7f; + return status; + } + + //=================== + //memory mapping unit + //=================== + + case 0x4830: return r4830; + case 0x4831: return r4831; + case 0x4832: return r4832; + case 0x4833: return r4833; + case 0x4834: return r4834; + + //==================== + //real-time clock unit + //==================== + + case 0x4840: return r4840; + case 0x4841: { + if(rtc_state == RTCS_Inactive || rtc_state == RTCS_ModeSelect) return 0x00; + + r4842 = 0x80; + uint8 data = memory::cartrtc.read(rtc_index); + rtc_index = (rtc_index + 1) & 15; + return data; + } + case 0x4842: { + uint8 status = r4842; + r4842 &= 0x7f; + return status; + } + } + + return cpu.regs.mdr; +} + +void SPC7110::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + switch(addr) { + //================== + //decompression unit + //================== + + case 0x4801: r4801 = data; break; + case 0x4802: r4802 = data; break; + case 0x4803: r4803 = data; break; + case 0x4804: r4804 = data; break; + case 0x4805: r4805 = data; break; + case 0x4806: { + r4806 = data; + + unsigned table = (r4801 + (r4802 << 8) + (r4803 << 16)); + unsigned index = (r4804 << 2); + unsigned length = (r4809 + (r480a << 8)); + unsigned addr = datarom_addr(table + index); + unsigned mode = (memory::cartrom.read(addr + 0)); + unsigned offset = (memory::cartrom.read(addr + 1) << 16) + + (memory::cartrom.read(addr + 2) << 8) + + (memory::cartrom.read(addr + 3) << 0); + + decomp.init(mode, offset, (r4805 + (r4806 << 8)) << mode); + r480c = 0x80; + } break; + + case 0x4807: r4807 = data; break; + case 0x4808: r4808 = data; break; + case 0x4809: r4809 = data; break; + case 0x480a: r480a = data; break; + case 0x480b: r480b = data; break; + + //============== + //data port unit + //============== + + case 0x4811: r4811 = data; r481x |= 0x01; break; + case 0x4812: r4812 = data; r481x |= 0x02; break; + case 0x4813: r4813 = data; r481x |= 0x04; break; + case 0x4814: { + r4814 = data; + r4814_latch = true; + if(!r4815_latch) break; + if(!(r4818 & 2)) break; + if(r4818 & 0x10) break; + + if((r4818 & 0x60) == 0x20) { + unsigned increment = data_adjust() & 0xff; + if(r4818 & 8) increment = (int8)increment; //8-bit sign extend + set_data_pointer(data_pointer() + increment); + } else if((r4818 & 0x60) == 0x40) { + unsigned increment = data_adjust(); + if(r4818 & 8) increment = (int16)increment; //16-bit sign extend + set_data_pointer(data_pointer() + increment); + } + } break; + case 0x4815: { + r4815 = data; + r4815_latch = true; + if(!r4814_latch) break; + if(!(r4818 & 2)) break; + if(r4818 & 0x10) break; + + if((r4818 & 0x60) == 0x20) { + unsigned increment = data_adjust() & 0xff; + if(r4818 & 8) increment = (int8)increment; //8-bit sign extend + set_data_pointer(data_pointer() + increment); + } else if((r4818 & 0x60) == 0x40) { + unsigned increment = data_adjust(); + if(r4818 & 8) increment = (int16)increment; //16-bit sign extend + set_data_pointer(data_pointer() + increment); + } + } break; + case 0x4816: r4816 = data; break; + case 0x4817: r4817 = data; break; + case 0x4818: { + if(r481x != 0x07) break; + + r4818 = data; + r4814_latch = r4815_latch = false; + } break; + + //========= + //math unit + //========= + + case 0x4820: r4820 = data; break; + case 0x4821: r4821 = data; break; + case 0x4822: r4822 = data; break; + case 0x4823: r4823 = data; break; + case 0x4824: r4824 = data; break; + case 0x4825: { + r4825 = data; + + if(r482e & 1) { + //signed 16-bit x 16-bit multiplication + int16 r0 = (int16)(r4824 + (r4825 << 8)); + int16 r1 = (int16)(r4820 + (r4821 << 8)); + + signed result = r0 * r1; + r4828 = result; + r4829 = result >> 8; + r482a = result >> 16; + r482b = result >> 24; + } else { + //unsigned 16-bit x 16-bit multiplication + uint16 r0 = (uint16)(r4824 + (r4825 << 8)); + uint16 r1 = (uint16)(r4820 + (r4821 << 8)); + + unsigned result = r0 * r1; + r4828 = result; + r4829 = result >> 8; + r482a = result >> 16; + r482b = result >> 24; + } + + r482f = 0x80; + } break; + case 0x4826: r4826 = data; break; + case 0x4827: { + r4827 = data; + + if(r482e & 1) { + //signed 32-bit x 16-bit division + int32 dividend = (int32)(r4820 + (r4821 << 8) + (r4822 << 16) + (r4823 << 24)); + int16 divisor = (int16)(r4826 + (r4827 << 8)); + + int32 quotient; + int16 remainder; + + if(divisor) { + quotient = (int32)(dividend / divisor); + remainder = (int32)(dividend % divisor); + } else { + //illegal division by zero + quotient = 0; + remainder = dividend & 0xffff; + } + + r4828 = quotient; + r4829 = quotient >> 8; + r482a = quotient >> 16; + r482b = quotient >> 24; + + r482c = remainder; + r482d = remainder >> 8; + } else { + //unsigned 32-bit x 16-bit division + uint32 dividend = (uint32)(r4820 + (r4821 << 8) + (r4822 << 16) + (r4823 << 24)); + uint16 divisor = (uint16)(r4826 + (r4827 << 8)); + + uint32 quotient; + uint16 remainder; + + if(divisor) { + quotient = (uint32)(dividend / divisor); + remainder = (uint16)(dividend % divisor); + } else { + //illegal division by zero + quotient = 0; + remainder = dividend & 0xffff; + } + + r4828 = quotient; + r4829 = quotient >> 8; + r482a = quotient >> 16; + r482b = quotient >> 24; + + r482c = remainder; + r482d = remainder >> 8; + } + + r482f = 0x80; + } break; + + case 0x482e: { + //reset math unit + r4820 = r4821 = r4822 = r4823 = 0; + r4824 = r4825 = r4826 = r4827 = 0; + r4828 = r4829 = r482a = r482b = 0; + r482c = r482d = 0; + + r482e = data; + } break; + + //=================== + //memory mapping unit + //=================== + + case 0x4830: r4830 = data; break; + + case 0x4831: { + r4831 = data; + dx_offset = datarom_addr(data * 0x100000); + } break; + + case 0x4832: { + r4832 = data; + ex_offset = datarom_addr(data * 0x100000); + } break; + + case 0x4833: { + r4833 = data; + fx_offset = datarom_addr(data * 0x100000); + } break; + + case 0x4834: r4834 = data; break; + + //==================== + //real-time clock unit + //==================== + + case 0x4840: { + r4840 = data; + if(!(r4840 & 1)) { + //disable RTC + rtc_state = RTCS_Inactive; + update_time(); + } else { + //enable RTC + r4842 = 0x80; + rtc_state = RTCS_ModeSelect; + } + } break; + + case 0x4841: { + r4841 = data; + + switch(rtc_state) { + case RTCS_ModeSelect: { + if(data == RTCM_Linear || data == RTCM_Indexed) { + r4842 = 0x80; + rtc_state = RTCS_IndexSelect; + rtc_mode = (RTC_Mode)data; + rtc_index = 0; + } + } break; + + case RTCS_IndexSelect: { + r4842 = 0x80; + rtc_index = data & 15; + if(rtc_mode == RTCM_Linear) rtc_state = RTCS_Write; + } break; + + case RTCS_Write: { + r4842 = 0x80; + + //control register 0 + if(rtc_index == 13) { + //increment second counter + if(data & 2) update_time(+1); + + //round minute counter + if(data & 8) { + update_time(); + + unsigned second = memory::cartrtc.read( 0) + memory::cartrtc.read( 1) * 10; + //clear seconds + memory::cartrtc.write(0, 0); + memory::cartrtc.write(1, 0); + + if(second >= 30) update_time(+60); + } + } + + //control register 2 + if(rtc_index == 15) { + //disable timer and clear second counter + if((data & 1) && !(memory::cartrtc.read(15) & 1)) { + update_time(); + + //clear seconds + memory::cartrtc.write(0, 0); + memory::cartrtc.write(1, 0); + } + + //disable timer + if((data & 2) && !(memory::cartrtc.read(15) & 2)) { + update_time(); + } + } + + memory::cartrtc.write(rtc_index, data & 15); + rtc_index = (rtc_index + 1) & 15; + } break; + } //switch(rtc_state) + } break; + } +} + +uint8 SPC7110::read(unsigned addr) { + //$[00-0f|80-8f]:[8000-ffff], $[c0-cf]:[0000-ffff] mapped directly to memory::cartrom + + if((addr & 0xffe000) == 0x006000 || (addr & 0xffe000) == 0x306000) { + //$[00|30]:[6000-7fff] + return memory::cartram.read(addr & 0x1fff); + } + + if((addr & 0xff0000) == 0x500000) { + //$[50]:[0000-ffff] + return mmio_read(0x4800); + } + + if((addr & 0xf00000) == 0xd00000) { + //$[d0-df]:[0000-ffff] + return memory::cartrom.read(dx_offset + (addr & 0x0fffff)); + } + + if((addr & 0xf00000) == 0xe00000) { + //$[e0-ef]:[0000-ffff] + return memory::cartrom.read(ex_offset + (addr & 0x0fffff)); + } + + if((addr & 0xf00000) == 0xf00000) { + //$[f0-ff]:[0000-ffff] + return memory::cartrom.read(fx_offset + (addr & 0x0fffff)); + } + + return cpu.regs.mdr; +} + +void SPC7110::write(unsigned addr, uint8 data) { + if((addr & 0xffe000) == 0x006000 || (addr & 0xffe000) == 0x306000) { + //$[00|30]:[6000-7fff] + if(r4830 & 0x80) memory::cartram.write(addr & 0x1fff, data); + return; + } +} + +SPC7110::SPC7110() { +} + +}; diff --git a/libmednahawk/src/snes/src/chip/spc7110/spc7110.hpp b/libmednahawk/src/snes/src/chip/spc7110/spc7110.hpp new file mode 100644 index 0000000000..7c059b0f15 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/spc7110/spc7110.hpp @@ -0,0 +1,136 @@ +/***** + * SPC7110 emulator - version 0.03 (2008-08-10) + * Copyright (c) 2008, byuu and neviksti + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * The software is provided "as is" and the author disclaims all warranties + * with regard to this software including all implied warranties of + * merchantibility and fitness, in no event shall the author be liable for + * any special, direct, indirect, or consequential damages or any damages + * whatsoever resulting from loss of use, data or profits, whether in an + * action of contract, negligence or other tortious action, arising out of + * or in connection with the use or performance of this software. + *****/ + +#include "decomp.hpp" + +class SPC7110 : public MMIO, public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + unsigned datarom_addr(unsigned addr); + + unsigned data_pointer(); + unsigned data_adjust(); + unsigned data_increment(); + void set_data_pointer(unsigned addr); + void set_data_adjust(unsigned addr); + + void update_time(int offset = 0); + time_t create_time(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + //spc7110decomp + void decomp_init(); + uint8 decomp_read(); + + void serialize(serializer&); + SPC7110(); + +private: + //================== + //decompression unit + //================== + uint8 r4801; //compression table low + uint8 r4802; //compression table high + uint8 r4803; //compression table bank + uint8 r4804; //compression table index + uint8 r4805; //decompression buffer index low + uint8 r4806; //decompression buffer index high + uint8 r4807; //??? + uint8 r4808; //??? + uint8 r4809; //compression length low + uint8 r480a; //compression length high + uint8 r480b; //decompression control register + uint8 r480c; //decompression status + + SPC7110Decomp decomp; + + //============== + //data port unit + //============== + uint8 r4811; //data pointer low + uint8 r4812; //data pointer high + uint8 r4813; //data pointer bank + uint8 r4814; //data adjust low + uint8 r4815; //data adjust high + uint8 r4816; //data increment low + uint8 r4817; //data increment high + uint8 r4818; //data port control register + + uint8 r481x; + + bool r4814_latch; + bool r4815_latch; + + //========= + //math unit + //========= + uint8 r4820; //16-bit multiplicand B0, 32-bit dividend B0 + uint8 r4821; //16-bit multiplicand B1, 32-bit dividend B1 + uint8 r4822; //32-bit dividend B2 + uint8 r4823; //32-bit dividend B3 + uint8 r4824; //16-bit multiplier B0 + uint8 r4825; //16-bit multiplier B1 + uint8 r4826; //16-bit divisor B0 + uint8 r4827; //16-bit divisor B1 + uint8 r4828; //32-bit product B0, 32-bit quotient B0 + uint8 r4829; //32-bit product B1, 32-bit quotient B1 + uint8 r482a; //32-bit product B2, 32-bit quotient B2 + uint8 r482b; //32-bit product B3, 32-bit quotient B3 + uint8 r482c; //16-bit remainder B0 + uint8 r482d; //16-bit remainder B1 + uint8 r482e; //math control register + uint8 r482f; //math status + + //=================== + //memory mapping unit + //=================== + uint8 r4830; //SRAM write enable + uint8 r4831; //$[d0-df]:[0000-ffff] mapping + uint8 r4832; //$[e0-ef]:[0000-ffff] mapping + uint8 r4833; //$[f0-ff]:[0000-ffff] mapping + uint8 r4834; //??? + + unsigned dx_offset; + unsigned ex_offset; + unsigned fx_offset; + + //==================== + //real-time clock unit + //==================== + uint8 r4840; //RTC latch + uint8 r4841; //RTC index/data port + uint8 r4842; //RTC status + + enum RTC_State { RTCS_Inactive, RTCS_ModeSelect, RTCS_IndexSelect, RTCS_Write }; + enum RTC_Mode { RTCM_Linear = 0x03, RTCM_Indexed = 0x0c }; + unsigned rtc_state; + unsigned rtc_mode; + unsigned rtc_index; + + static const unsigned months[12]; +}; + +extern SPC7110 spc7110; diff --git a/libmednahawk/src/snes/src/chip/srtc/serialization.cpp b/libmednahawk/src/snes/src/chip/srtc/serialization.cpp new file mode 100644 index 0000000000..2122f191b8 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/srtc/serialization.cpp @@ -0,0 +1,8 @@ +#ifdef SRTC_CPP + +void SRTC::serialize(serializer &s) { + s.integer(rtc_mode); + s.integer(rtc_index); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/srtc/srtc.cpp b/libmednahawk/src/snes/src/chip/srtc/srtc.cpp new file mode 100644 index 0000000000..7372dfb6d2 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/srtc/srtc.cpp @@ -0,0 +1,233 @@ +#include <../base.hpp> + +#define SRTC_CPP +namespace SNES { + +SRTC srtc; + +#include "serialization.cpp" + +const unsigned SRTC::months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +void SRTC::init() { +} + +void SRTC::enable() { + memory::mmio.map(0x2800, *this); + memory::mmio.map(0x2801, *this); +} + +void SRTC::power() { + reset(); +} + +void SRTC::reset() { + rtc_mode = RtcRead; + rtc_index = -1; + update_time(); +} + +void SRTC::update_time() { + time_t rtc_time + = (memory::cartrtc.read(16) << 0) + | (memory::cartrtc.read(17) << 8) + | (memory::cartrtc.read(18) << 16) + | (memory::cartrtc.read(19) << 24); + time_t current_time = time(0); + + //sizeof(time_t) is platform-dependent; though memory::cartrtc needs to be platform-agnostic. + //yet platforms with 32-bit signed time_t will overflow every ~68 years. handle this by + //accounting for overflow at the cost of 1-bit precision (to catch underflow). this will allow + //memory::cartrtc timestamp to remain valid for up to ~34 years from the last update, even if + //time_t overflows. calculation should be valid regardless of number representation, time_t size, + //or whether time_t is signed or unsigned. + time_t diff + = (current_time >= rtc_time) + ? (current_time - rtc_time) + : (std::numeric_limits::max() - rtc_time + current_time + 1); //compensate for overflow + if(diff > std::numeric_limits::max() / 2) diff = 0; //compensate for underflow + + if(diff > 0) { + unsigned second = memory::cartrtc.read( 0) + memory::cartrtc.read( 1) * 10; + unsigned minute = memory::cartrtc.read( 2) + memory::cartrtc.read( 3) * 10; + unsigned hour = memory::cartrtc.read( 4) + memory::cartrtc.read( 5) * 10; + unsigned day = memory::cartrtc.read( 6) + memory::cartrtc.read( 7) * 10; + unsigned month = memory::cartrtc.read( 8); + unsigned year = memory::cartrtc.read( 9) + memory::cartrtc.read(10) * 10 + memory::cartrtc.read(11) * 100; + unsigned weekday = memory::cartrtc.read(12); + + day--; + month--; + year += 1000; + + second += diff; + while(second >= 60) { + second -= 60; + + minute++; + if(minute < 60) continue; + minute = 0; + + hour++; + if(hour < 24) continue; + hour = 0; + + day++; + weekday = (weekday + 1) % 7; + unsigned days = months[month % 12]; + if(days == 28) { + bool leapyear = false; + if((year % 4) == 0) { + leapyear = true; + if((year % 100) == 0 && (year % 400) != 0) leapyear = false; + } + if(leapyear) days++; + } + if(day < days) continue; + day = 0; + + month++; + if(month < 12) continue; + month = 0; + + year++; + } + + day++; + month++; + year -= 1000; + + memory::cartrtc.write( 0, second % 10); + memory::cartrtc.write( 1, second / 10); + memory::cartrtc.write( 2, minute % 10); + memory::cartrtc.write( 3, minute / 10); + memory::cartrtc.write( 4, hour % 10); + memory::cartrtc.write( 5, hour / 10); + memory::cartrtc.write( 6, day % 10); + memory::cartrtc.write( 7, day / 10); + memory::cartrtc.write( 8, month); + memory::cartrtc.write( 9, year % 10); + memory::cartrtc.write(10, (year / 10) % 10); + memory::cartrtc.write(11, year / 100); + memory::cartrtc.write(12, weekday % 7); + } + + memory::cartrtc.write(16, current_time >> 0); + memory::cartrtc.write(17, current_time >> 8); + memory::cartrtc.write(18, current_time >> 16); + memory::cartrtc.write(19, current_time >> 24); +} + +//returns day of week for specified date +//eg 0 = Sunday, 1 = Monday, ... 6 = Saturday +//usage: weekday(2008, 1, 1) returns weekday of January 1st, 2008 +unsigned SRTC::weekday(unsigned year, unsigned month, unsigned day) { + unsigned y = 1900, m = 1; //epoch is 1900-01-01 + unsigned sum = 0; //number of days passed since epoch + + year = max(1900, year); + month = max(1, min(12, month)); + day = max(1, min(31, day)); + + while(y < year) { + bool leapyear = false; + if((y % 4) == 0) { + leapyear = true; + if((y % 100) == 0 && (y % 400) != 0) leapyear = false; + } + sum += leapyear ? 366 : 365; + y++; + } + + while(m < month) { + unsigned days = months[m - 1]; + if(days == 28) { + bool leapyear = false; + if((y % 4) == 0) { + leapyear = true; + if((y % 100) == 0 && (y % 400) != 0) leapyear = false; + } + if(leapyear) days++; + } + sum += days; + m++; + } + + sum += day - 1; + return (sum + 1) % 7; //1900-01-01 was a Monday +} + +uint8 SRTC::mmio_read(unsigned addr) { + addr &= 0xffff; + + if(addr == 0x2800) { + if(rtc_mode != RtcRead) return 0x00; + + if(rtc_index < 0) { + update_time(); + rtc_index++; + return 0x0f; + } else if(rtc_index > 12) { + rtc_index = -1; + return 0x0f; + } else { + return memory::cartrtc.read(rtc_index++); + } + } + + return cpu.regs.mdr; +} + +void SRTC::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + if(addr == 0x2801) { + data &= 0x0f; //only the low four bits are used + + if(data == 0x0d) { + rtc_mode = RtcRead; + rtc_index = -1; + return; + } + + if(data == 0x0e) { + rtc_mode = RtcCommand; + return; + } + + if(data == 0x0f) return; //unknown behavior + + if(rtc_mode == RtcWrite) { + if(rtc_index >= 0 && rtc_index < 12) { + memory::cartrtc.write(rtc_index++, data); + + if(rtc_index == 12) { + //day of week is automatically calculated and written + unsigned day = memory::cartrtc.read( 6) + memory::cartrtc.read( 7) * 10; + unsigned month = memory::cartrtc.read( 8); + unsigned year = memory::cartrtc.read( 9) + memory::cartrtc.read(10) * 10 + memory::cartrtc.read(11) * 100; + year += 1000; + + memory::cartrtc.write(rtc_index++, weekday(year, month, day)); + } + } + } else if(rtc_mode == RtcCommand) { + if(data == 0) { + rtc_mode = RtcWrite; + rtc_index = 0; + } else if(data == 4) { + rtc_mode = RtcReady; + rtc_index = -1; + for(unsigned i = 0; i < 13; i++) memory::cartrtc.write(i, 0); + } else { + //unknown behavior + rtc_mode = RtcReady; + } + } + } +} + +SRTC::SRTC() { +} + +}; diff --git a/libmednahawk/src/snes/src/chip/srtc/srtc.hpp b/libmednahawk/src/snes/src/chip/srtc/srtc.hpp new file mode 100644 index 0000000000..513c9fa61a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/srtc/srtc.hpp @@ -0,0 +1,24 @@ +class SRTC : public MMIO { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + void serialize(serializer&); + SRTC(); + +private: + static const unsigned months[12]; + enum RtcMode { RtcReady, RtcCommand, RtcRead, RtcWrite }; + unsigned rtc_mode; + signed rtc_index; + + void update_time(); + unsigned weekday(unsigned year, unsigned month, unsigned day); +}; + +extern SRTC srtc; diff --git a/libmednahawk/src/snes/src/chip/st010/serialization.cpp b/libmednahawk/src/snes/src/chip/st010/serialization.cpp new file mode 100644 index 0000000000..5f374b6b17 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st010/serialization.cpp @@ -0,0 +1,7 @@ +#ifdef ST010_CPP + +void ST010::serialize(serializer &s) { + s.array(ram); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/st010/st010.cpp b/libmednahawk/src/snes/src/chip/st010/st010.cpp new file mode 100644 index 0000000000..6d533e3b64 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st010/st010.cpp @@ -0,0 +1,95 @@ +#include <../base.hpp> + +#define ST010_CPP +namespace SNES { + +ST010 st010; + +#include "st010_data.hpp" +#include "serialization.cpp" +#include "st010_op.cpp" + +void ST010::init() { +} + +void ST010::enable() { + bus.map(Bus::MapDirect, 0x68, 0x6f, 0x0000, 0x0fff, *this); + bus.map(Bus::MapDirect, 0xe8, 0xef, 0x0000, 0x0fff, *this); +} + +int16 ST010::sin(int16 theta) { + return sin_table[(theta >> 8) & 0xff]; +} + +int16 ST010::cos(int16 theta) { + return sin_table[((theta + 0x4000) >> 8) & 0xff]; +} + +uint8 ST010::readb(uint16 addr) { + return ram[addr & 0xfff]; +} + +uint16 ST010::readw(uint16 addr) { + return (readb(addr + 0) << 0) | + (readb(addr + 1) << 8); +} + +uint32 ST010::readd(uint16 addr) { + return (readb(addr + 0) << 0) | + (readb(addr + 1) << 8) | + (readb(addr + 2) << 16) | + (readb(addr + 3) << 24); +} + +void ST010::writeb(uint16 addr, uint8 data) { + ram[addr & 0xfff] = data; +} + +void ST010::writew(uint16 addr, uint16 data) { + writeb(addr + 0, data >> 0); + writeb(addr + 1, data >> 8); +} + +void ST010::writed(uint16 addr, uint32 data) { + writeb(addr + 0, data >> 0); + writeb(addr + 1, data >> 8); + writeb(addr + 2, data >> 16); + writeb(addr + 3, data >> 24); +} + +// + +void ST010::power() { + reset(); +} + +void ST010::reset() { + memset(ram, 0x00, sizeof ram); +} + +// + +uint8 ST010::read(unsigned addr) { + return readb(addr); +} + +void ST010::write(unsigned addr, uint8 data) { + writeb(addr, data); + + if((addr & 0xfff) == 0x0021 && (data & 0x80)) { + switch(ram[0x0020]) { + case 0x01: op_01(); break; + case 0x02: op_02(); break; + case 0x03: op_03(); break; + case 0x04: op_04(); break; + case 0x05: op_05(); break; + case 0x06: op_06(); break; + case 0x07: op_07(); break; + case 0x08: op_08(); break; + } + + ram[0x0021] &= ~0x80; + } +} + +}; diff --git a/libmednahawk/src/snes/src/chip/st010/st010.hpp b/libmednahawk/src/snes/src/chip/st010/st010.hpp new file mode 100644 index 0000000000..e763354e38 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st010/st010.hpp @@ -0,0 +1,44 @@ +class ST010 : public Memory { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void serialize(serializer&); + +private: + uint8 ram[0x1000]; + static const int16 sin_table[256]; + static const int16 mode7_scale[176]; + static const uint8 arctan[32][32]; + + //interfaces to sin table + int16 sin(int16 theta); + int16 cos(int16 theta); + + //interfaces to ram buffer + uint8 readb (uint16 addr); + uint16 readw (uint16 addr); + uint32 readd (uint16 addr); + void writeb(uint16 addr, uint8 data); + void writew(uint16 addr, uint16 data); + void writed(uint16 addr, uint32 data); + + //opcodes + void op_01(); + void op_02(); + void op_03(); + void op_04(); + void op_05(); + void op_06(); + void op_07(); + void op_08(); + + void op_01(int16 x0, int16 y0, int16 &x1, int16 &y1, int16 &quadrant, int16 &theta); +}; + +extern ST010 st010; diff --git a/libmednahawk/src/snes/src/chip/st010/st010_data.hpp b/libmednahawk/src/snes/src/chip/st010/st010_data.hpp new file mode 100644 index 0000000000..df7a00cf31 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st010/st010_data.hpp @@ -0,0 +1,126 @@ +const int16 ST010::sin_table[256] = { + 0x0000, 0x0324, 0x0648, 0x096a, 0x0c8c, 0x0fab, 0x12c8, 0x15e2, + 0x18f9, 0x1c0b, 0x1f1a, 0x2223, 0x2528, 0x2826, 0x2b1f, 0x2e11, + 0x30fb, 0x33df, 0x36ba, 0x398c, 0x3c56, 0x3f17, 0x41ce, 0x447a, + 0x471c, 0x49b4, 0x4c3f, 0x4ebf, 0x5133, 0x539b, 0x55f5, 0x5842, + 0x5a82, 0x5cb3, 0x5ed7, 0x60eb, 0x62f1, 0x64e8, 0x66cf, 0x68a6, + 0x6a6d, 0x6c23, 0x6dc9, 0x6f5e, 0x70e2, 0x7254, 0x73b5, 0x7504, + 0x7641, 0x776b, 0x7884, 0x7989, 0x7a7c, 0x7b5c, 0x7c29, 0x7ce3, + 0x7d89, 0x7e1d, 0x7e9c, 0x7f09, 0x7f61, 0x7fa6, 0x7fd8, 0x7ff5, + 0x7fff, 0x7ff5, 0x7fd8, 0x7fa6, 0x7f61, 0x7f09, 0x7e9c, 0x7e1d, + 0x7d89, 0x7ce3, 0x7c29, 0x7b5c, 0x7a7c, 0x7989, 0x7884, 0x776b, + 0x7641, 0x7504, 0x73b5, 0x7254, 0x70e2, 0x6f5e, 0x6dc9, 0x6c23, + 0x6a6d, 0x68a6, 0x66cf, 0x64e8, 0x62f1, 0x60eb, 0x5ed7, 0x5cb3, + 0x5a82, 0x5842, 0x55f5, 0x539b, 0x5133, 0x4ebf, 0x4c3f, 0x49b4, + 0x471c, 0x447a, 0x41ce, 0x3f17, 0x3c56, 0x398c, 0x36ba, 0x33df, + 0x30fb, 0x2e11, 0x2b1f, 0x2826, 0x2528, 0x2223, 0x1f1a, 0x1c0b, + 0x18f8, 0x15e2, 0x12c8, 0x0fab, 0x0c8c, 0x096a, 0x0648, 0x0324, + 0x0000, -0x0324, -0x0648, -0x096b, -0x0c8c, -0x0fab, -0x12c8, -0x15e2, + -0x18f9, -0x1c0b, -0x1f1a, -0x2223, -0x2528, -0x2826, -0x2b1f, -0x2e11, + -0x30fb, -0x33df, -0x36ba, -0x398d, -0x3c56, -0x3f17, -0x41ce, -0x447a, + -0x471c, -0x49b4, -0x4c3f, -0x4ebf, -0x5133, -0x539b, -0x55f5, -0x5842, + -0x5a82, -0x5cb3, -0x5ed7, -0x60ec, -0x62f1, -0x64e8, -0x66cf, -0x68a6, + -0x6a6d, -0x6c23, -0x6dc9, -0x6f5e, -0x70e2, -0x7254, -0x73b5, -0x7504, + -0x7641, -0x776b, -0x7884, -0x7989, -0x7a7c, -0x7b5c, -0x7c29, -0x7ce3, + -0x7d89, -0x7e1d, -0x7e9c, -0x7f09, -0x7f61, -0x7fa6, -0x7fd8, -0x7ff5, + -0x7fff, -0x7ff5, -0x7fd8, -0x7fa6, -0x7f61, -0x7f09, -0x7e9c, -0x7e1d, + -0x7d89, -0x7ce3, -0x7c29, -0x7b5c, -0x7a7c, -0x7989, -0x7883, -0x776b, + -0x7641, -0x7504, -0x73b5, -0x7254, -0x70e2, -0x6f5e, -0x6dc9, -0x6c23, + -0x6a6d, -0x68a6, -0x66cf, -0x64e8, -0x62f1, -0x60eb, -0x5ed7, -0x5cb3, + -0x5a82, -0x5842, -0x55f5, -0x539a, -0x5133, -0x4ebf, -0x4c3f, -0x49b3, + -0x471c, -0x447a, -0x41cd, -0x3f17, -0x3c56, -0x398c, -0x36b9, -0x33de, + -0x30fb, -0x2e10, -0x2b1f, -0x2826, -0x2527, -0x2223, -0x1f19, -0x1c0b, + -0x18f8, -0x15e2, -0x12c8, -0x0fab, -0x0c8b, -0x096a, -0x0647, -0x0324 +}; + +const int16 ST010::mode7_scale[176] = { + 0x0380, 0x0325, 0x02da, 0x029c, 0x0268, 0x023b, 0x0215, 0x01f3, + 0x01d5, 0x01bb, 0x01a3, 0x018e, 0x017b, 0x016a, 0x015a, 0x014b, + 0x013e, 0x0132, 0x0126, 0x011c, 0x0112, 0x0109, 0x0100, 0x00f8, + 0x00f0, 0x00e9, 0x00e3, 0x00dc, 0x00d6, 0x00d1, 0x00cb, 0x00c6, + 0x00c1, 0x00bd, 0x00b8, 0x00b4, 0x00b0, 0x00ac, 0x00a8, 0x00a5, + 0x00a2, 0x009e, 0x009b, 0x0098, 0x0095, 0x0093, 0x0090, 0x008d, + 0x008b, 0x0088, 0x0086, 0x0084, 0x0082, 0x0080, 0x007e, 0x007c, + 0x007a, 0x0078, 0x0076, 0x0074, 0x0073, 0x0071, 0x006f, 0x006e, + 0x006c, 0x006b, 0x0069, 0x0068, 0x0067, 0x0065, 0x0064, 0x0063, + 0x0062, 0x0060, 0x005f, 0x005e, 0x005d, 0x005c, 0x005b, 0x005a, + 0x0059, 0x0058, 0x0057, 0x0056, 0x0055, 0x0054, 0x0053, 0x0052, + 0x0051, 0x0051, 0x0050, 0x004f, 0x004e, 0x004d, 0x004d, 0x004c, + 0x004b, 0x004b, 0x004a, 0x0049, 0x0048, 0x0048, 0x0047, 0x0047, + 0x0046, 0x0045, 0x0045, 0x0044, 0x0044, 0x0043, 0x0042, 0x0042, + 0x0041, 0x0041, 0x0040, 0x0040, 0x003f, 0x003f, 0x003e, 0x003e, + 0x003d, 0x003d, 0x003c, 0x003c, 0x003b, 0x003b, 0x003a, 0x003a, + 0x003a, 0x0039, 0x0039, 0x0038, 0x0038, 0x0038, 0x0037, 0x0037, + 0x0036, 0x0036, 0x0036, 0x0035, 0x0035, 0x0035, 0x0034, 0x0034, + 0x0034, 0x0033, 0x0033, 0x0033, 0x0032, 0x0032, 0x0032, 0x0031, + 0x0031, 0x0031, 0x0030, 0x0030, 0x0030, 0x0030, 0x002f, 0x002f, + 0x002f, 0x002e, 0x002e, 0x002e, 0x002e, 0x002d, 0x002d, 0x002d, + 0x002d, 0x002c, 0x002c, 0x002c, 0x002c, 0x002b, 0x002b, 0x002b +}; + +const uint8 ST010::arctan[32][32] = { + { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }, + { 0x80, 0xa0, 0xad, 0xb3, 0xb6, 0xb8, 0xb9, 0xba, 0xbb, 0xbb, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, + 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf }, + { 0x80, 0x93, 0xa0, 0xa8, 0xad, 0xb0, 0xb3, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xb9, 0xba, 0xba, 0xbb, + 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd }, + { 0x80, 0x8d, 0x98, 0xa0, 0xa6, 0xaa, 0xad, 0xb0, 0xb1, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb7, 0xb8, + 0xb8, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 0xbc }, + { 0x80, 0x8a, 0x93, 0x9a, 0xa0, 0xa5, 0xa8, 0xab, 0xad, 0xaf, 0xb0, 0xb2, 0xb3, 0xb4, 0xb5, 0xb5, + 0xb6, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb }, + { 0x80, 0x88, 0x90, 0x96, 0x9b, 0xa0, 0xa4, 0xa7, 0xa9, 0xab, 0xad, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, + 0xb4, 0xb4, 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9 }, + { 0x80, 0x87, 0x8d, 0x93, 0x98, 0x9c, 0xa0, 0xa3, 0xa6, 0xa8, 0xaa, 0xac, 0xad, 0xae, 0xb0, 0xb0, + 0xb1, 0xb2, 0xb3, 0xb4, 0xb4, 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8 }, + { 0x80, 0x86, 0x8b, 0x90, 0x95, 0x99, 0x9d, 0xa0, 0xa3, 0xa5, 0xa7, 0xa9, 0xaa, 0xac, 0xad, 0xae, + 0xaf, 0xb0, 0xb1, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4, 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7 }, + { 0x80, 0x85, 0x8a, 0x8f, 0x93, 0x97, 0x9a, 0x9d, 0xa0, 0xa2, 0xa5, 0xa6, 0xa8, 0xaa, 0xab, 0xac, + 0xad, 0xae, 0xaf, 0xb0, 0xb0, 0xb1, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5 }, + { 0x80, 0x85, 0x89, 0x8d, 0x91, 0x95, 0x98, 0x9b, 0x9e, 0xa0, 0xa0, 0xa4, 0xa6, 0xa7, 0xa9, 0xaa, + 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4 }, + { 0x80, 0x84, 0x88, 0x8c, 0x90, 0x93, 0x96, 0x99, 0x9b, 0x9e, 0xa0, 0xa2, 0xa4, 0xa5, 0xa7, 0xa8, + 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3 }, + { 0x80, 0x84, 0x87, 0x8b, 0x8e, 0x91, 0x94, 0x97, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa3, 0xa5, 0xa6, + 0xa7, 0xa9, 0xaa, 0xab, 0xac, 0xac, 0xad, 0xae, 0xae, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1, 0xb2, 0xb2 }, + { 0x80, 0x83, 0x87, 0x8a, 0x8d, 0x90, 0x93, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa3, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xac, 0xad, 0xae, 0xae, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1 }, + { 0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x94, 0x96, 0x99, 0x9b, 0x9d, 0x9e, 0xa0, 0xa2, 0xa3, + 0xa4, 0xa5, 0xa7, 0xa8, 0xa9, 0xa9, 0xaa, 0xab, 0xac, 0xac, 0xad, 0xae, 0xae, 0xaf, 0xaf, 0xb0 }, + { 0x80, 0x83, 0x86, 0x89, 0x8b, 0x8e, 0x90, 0x93, 0x95, 0x97, 0x99, 0x9b, 0x9d, 0x9e, 0xa0, 0xa1, + 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xaa, 0xab, 0xac, 0xad, 0xad, 0xae, 0xae, 0xaf }, + { 0x80, 0x83, 0x85, 0x88, 0x8b, 0x8d, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9b, 0x9d, 0x9f, 0xa0, + 0xa1, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa8, 0xa9, 0xaa, 0xab, 0xab, 0xac, 0xad, 0xad, 0xae }, + { 0x80, 0x83, 0x85, 0x88, 0x8a, 0x8c, 0x8f, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9a, 0x9c, 0x9d, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa5, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xaa, 0xab, 0xab, 0xac, 0xad }, + { 0x80, 0x82, 0x85, 0x87, 0x89, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x97, 0x99, 0x9b, 0x9c, 0x9d, + 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa8, 0xa9, 0xaa, 0xaa, 0xab, 0xac }, + { 0x80, 0x82, 0x85, 0x87, 0x89, 0x8b, 0x8d, 0x8f, 0x91, 0x93, 0x95, 0x96, 0x98, 0x99, 0x9b, 0x9c, + 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa7, 0xa8, 0xa9, 0xa9, 0xaa, 0xab }, + { 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x95, 0x97, 0x98, 0x9a, 0x9b, + 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa6, 0xa7, 0xa8, 0xa8, 0xa9, 0xaa }, + { 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x91, 0x93, 0x94, 0x96, 0x97, 0x99, 0x9a, + 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa5, 0xa6, 0xa7, 0xa7, 0xa8, 0xa9 }, + { 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8b, 0x8d, 0x8f, 0x90, 0x92, 0x94, 0x95, 0x97, 0x98, 0x99, + 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa4, 0xa5, 0xa6, 0xa6, 0xa7, 0xa8 }, + { 0x80, 0x82, 0x84, 0x86, 0x87, 0x89, 0x8b, 0x8d, 0x8e, 0x90, 0x91, 0x93, 0x94, 0x96, 0x97, 0x98, + 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa3, 0xa4, 0xa5, 0xa6, 0xa6, 0xa7 }, + { 0x80, 0x82, 0x84, 0x85, 0x87, 0x89, 0x8a, 0x8c, 0x8e, 0x8f, 0x91, 0x92, 0x94, 0x95, 0x96, 0x98, + 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa2, 0xa3, 0xa4, 0xa5, 0xa5, 0xa6 }, + { 0x80, 0x82, 0x83, 0x85, 0x87, 0x88, 0x8a, 0x8c, 0x8d, 0x8f, 0x90, 0x92, 0x93, 0x94, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa2, 0xa3, 0xa4, 0xa5, 0xa5 }, + { 0x80, 0x82, 0x83, 0x85, 0x86, 0x88, 0x8a, 0x8b, 0x8d, 0x8e, 0x90, 0x91, 0x92, 0x94, 0x95, 0x96, + 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa2, 0xa3, 0xa4, 0xa4 }, + { 0x80, 0x82, 0x83, 0x85, 0x86, 0x88, 0x89, 0x8b, 0x8c, 0x8e, 0x8f, 0x90, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa2, 0xa3, 0xa4 }, + { 0x80, 0x82, 0x83, 0x85, 0x86, 0x87, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x90, 0x91, 0x92, 0x93, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9e, 0x9f, 0xa0, 0xa1, 0xa1, 0xa2, 0xa3 }, + { 0x80, 0x81, 0x83, 0x84, 0x86, 0x87, 0x89, 0x8a, 0x8b, 0x8d, 0x8e, 0x8f, 0x90, 0x92, 0x93, 0x94, + 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9e, 0x9f, 0xa0, 0xa1, 0xa1, 0xa2 }, + { 0x80, 0x81, 0x83, 0x84, 0x86, 0x87, 0x88, 0x8a, 0x8b, 0x8c, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, + 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0x9f, 0xa0, 0xa1, 0xa1 }, + { 0x80, 0x81, 0x83, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8b, 0x8c, 0x8d, 0x8e, 0x90, 0x91, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0x9f, 0xa0, 0xa1 }, + { 0x80, 0x81, 0x83, 0x84, 0x85, 0x87, 0x88, 0x89, 0x8a, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, + 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9c, 0x9d, 0x9e, 0x9f, 0x9f, 0xa0 } +}; diff --git a/libmednahawk/src/snes/src/chip/st010/st010_op.cpp b/libmednahawk/src/snes/src/chip/st010/st010_op.cpp new file mode 100644 index 0000000000..db6b580dbe --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st010/st010_op.cpp @@ -0,0 +1,261 @@ +#ifdef ST010_CPP + +//ST-010 emulation code - Copyright (C) 2003 The Dumper, Matthew Kendora, Overload, Feather +//bsnes port - Copyright (C) 2007 byuu + +void ST010::op_01(int16 x0, int16 y0, int16 &x1, int16 &y1, int16 &quadrant, int16 &theta) { + if((x0 < 0) && (y0 < 0)) { + x1 = -x0; + y1 = -y0; + quadrant = -0x8000; + } else if(x0 < 0) { + x1 = y0; + y1 = -x0; + quadrant = -0x4000; + } else if(y0 < 0) { + x1 = -y0; + y1 = x0; + quadrant = 0x4000; + } else { + x1 = x0; + y1 = y0; + quadrant = 0x0000; + } + + while((x1 > 0x1f) || (y1 > 0x1f)) { + if(x1 > 1) { x1 >>= 1; } + if(y1 > 1) { y1 >>= 1; } + } + + if(y1 == 0) { quadrant += 0x4000; } + + theta = (arctan[y1][x1] << 8) ^ quadrant; +} + +// + +void ST010::op_01() { + int16 x0 = readw(0x0000); + int16 y0 = readw(0x0002); + int16 x1, y1, quadrant, theta; + + op_01(x0, y0, x1, y1, quadrant, theta); + + writew(0x0000, x1); + writew(0x0002, y1); + writew(0x0004, quadrant); +//writew(0x0006, y0); //Overload's docs note this write occurs, SNES9x disagrees + writew(0x0010, theta); +} + +void ST010::op_02() { + int16 positions = readw(0x0024); + uint16 *places = (uint16*)(ram + 0x0040); + uint16 *drivers = (uint16*)(ram + 0x0080); + + bool sorted; + uint16 temp; + if(positions > 1) { + do { + sorted = true; + for(int i = 0; i < positions - 1; i++) { + if(places[i] < places[i + 1]) { + temp = places[i + 1]; + places[i + 1] = places[i]; + places[i] = temp; + + temp = drivers[i + 1]; + drivers[i + 1] = drivers[i]; + drivers[i] = temp; + + sorted = false; + } + } + positions--; + } while(!sorted); + } +} + +void ST010::op_03() { + int16 x0 = readw(0x0000); + int16 y0 = readw(0x0002); + int16 multiplier = readw(0x0004); + int32 x1, y1; + + x1 = x0 * multiplier << 1; + y1 = y0 * multiplier << 1; + + writed(0x0010, x1); + writed(0x0014, y1); +} + +void ST010::op_04() { + int16 x = readw(0x0000); + int16 y = readw(0x0002); + int16 square; + //calculate the vector length of (x,y) + square = (int16)sqrt((double)(y * y + x * x)); + + writew(0x0010, square); +} + +void ST010::op_05() { + int32 dx, dy; + int16 a1, b1, c1; + uint16 o1; + bool wrap = false; + + //target (x,y) coordinates + int16 ypos_max = readw(0x00c0); + int16 xpos_max = readw(0x00c2); + + //current coordinates and direction + int32 ypos = readd(0x00c4); + int32 xpos = readd(0x00c8); + uint16 rot = readw(0x00cc); + + //physics + uint16 speed = readw(0x00d4); + uint16 accel = readw(0x00d6); + uint16 speed_max = readw(0x00d8); + + //special condition acknowledgement + int16 system = readw(0x00da); + int16 flags = readw(0x00dc); + + //new target coordinates + int16 ypos_new = readw(0x00de); + int16 xpos_new = readw(0x00e0); + + //mask upper bit + xpos_new &= 0x7fff; + + //get the current distance + dx = xpos_max - (xpos >> 16); + dy = ypos_max - (ypos >> 16); + + //quirk: clear and move in9 + writew(0x00d2, 0xffff); + writew(0x00da, 0x0000); + + //grab the target angle + op_01(dy, dx, a1, b1, c1, (int16&)o1); + + //check for wrapping + if(abs(o1 - rot) > 0x8000) { + o1 += 0x8000; + rot += 0x8000; + wrap = true; + } + + uint16 old_speed = speed; + + //special case + if(abs(o1 - rot) == 0x8000) { + speed = 0x100; + } + + //slow down for sharp curves + else if(abs(o1 - rot) >= 0x1000) { + uint32 slow = abs(o1 - rot); + slow >>= 4; //scaling + speed -= slow; + } + + //otherwise accelerate + else { + speed += accel; + if(speed > speed_max) { + speed = speed_max; //clip speed + } + } + + //prevent negative/positive overflow + if(abs(old_speed - speed) > 0x8000) { + if(old_speed < speed) { speed = 0; } + else speed = 0xff00; + } + + //adjust direction by so many degrees + //be careful of negative adjustments + if((o1 > rot && (o1 - rot) > 0x80) || (o1 < rot && (rot - o1) >= 0x80)) { + if(o1 < rot) { rot -= 0x280; } + else if(o1 > rot) { rot += 0x280; } + } + + //turn off wrapping + if(wrap) { rot -= 0x8000; } + + //now check the distances (store for later) + dx = (xpos_max << 16) - xpos; + dy = (ypos_max << 16) - ypos; + dx >>= 16; + dy >>= 16; + + //if we're in so many units of the target, signal it + if((system && (dy <= 6 && dy >= -8) && (dx <= 126 && dx >= -128)) || (!system && (dx <= 6 && dx >= -8) && (dy <= 126 && dy >= -128))) { + //announce our new destination and flag it + xpos_max = xpos_new & 0x7fff; + ypos_max = ypos_new; + flags |= 0x08; + } + + //update position + xpos -= (cos(rot) * 0x400 >> 15) * (speed >> 8) << 1; + ypos -= (sin(rot) * 0x400 >> 15) * (speed >> 8) << 1; + + //quirk: mask upper byte + xpos &= 0x1fffffff; + ypos &= 0x1fffffff; + + writew(0x00c0, ypos_max); + writew(0x00c2, xpos_max); + writed(0x00c4, ypos); + writed(0x00c8, xpos); + writew(0x00cc, rot); + writew(0x00d4, speed); + writew(0x00dc, flags); +} + +void ST010::op_06() { + int16 multiplicand = readw(0x0000); + int16 multiplier = readw(0x0002); + int32 product; + + product = multiplicand * multiplier << 1; + + writed(0x0010, product); +} + +void ST010::op_07() { + int16 theta = readw(0x0000); + + int16 data; + for(int i = 0, offset = 0; i < 176; i++) { + data = mode7_scale[i] * cos(theta) >> 15; + writew(0x00f0 + offset, data); + writew(0x0510 + offset, data); + + data = mode7_scale[i] * sin(theta) >> 15; + writew(0x0250 + offset, data); + if(data) { data = ~data; } + writew(0x03b0 + offset, data); + + offset += 2; + } +} + +void ST010::op_08() { + int16 x0 = readw(0x0000); + int16 y0 = readw(0x0002); + int16 theta = readw(0x0004); + int16 x1, y1; + + x1 = (y0 * sin(theta) >> 15) + (x0 * cos(theta) >> 15); + y1 = (y0 * cos(theta) >> 15) - (x0 * sin(theta) >> 15); + + writew(0x0010, x1); + writew(0x0012, y1); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/st011/st011.cpp b/libmednahawk/src/snes/src/chip/st011/st011.cpp new file mode 100644 index 0000000000..eee6103e20 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st011/st011.cpp @@ -0,0 +1,20 @@ +#include <../base.hpp> + +#define ST011_CPP +namespace SNES { + +ST011 st011; + +void ST011::init() { +} + +void ST011::enable() { +} + +void ST011::power() { +} + +void ST011::reset() { +} + +}; diff --git a/libmednahawk/src/snes/src/chip/st011/st011.hpp b/libmednahawk/src/snes/src/chip/st011/st011.hpp new file mode 100644 index 0000000000..61da165fa4 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st011/st011.hpp @@ -0,0 +1,9 @@ +class ST011 { +public: + void init(); + void enable(); + void power(); + void reset(); +}; + +extern ST011 st011; diff --git a/libmednahawk/src/snes/src/chip/st018/st018.cpp b/libmednahawk/src/snes/src/chip/st018/st018.cpp new file mode 100644 index 0000000000..6fb7ccab03 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st018/st018.cpp @@ -0,0 +1,124 @@ +#include <../base.hpp> + +#define ST018_CPP +namespace SNES { + +ST018 st018; + +uint8 ST018::mmio_read(unsigned addr) { + addr &= 0xffff; + if(addr == 0x3800) return regs.r3800; + if(addr == 0x3804) return regs.r3804; + return cpu.regs.mdr; +} + +void ST018::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + if(addr == 0x3802) { + switch(regs.mode) { + case Waiting: { + switch(data) { + case 0x01: regs.r3800 = regs.r3800_01; break; + case 0xaa: op_board_upload(); break; + case 0xb2: op_b2(); break; + case 0xb3: op_b3(); break; + case 0xb4: op_b4(); break; + case 0xb5: op_b5(); break; + case 0xf1: op_query_chip(); break; + case 0xf2: op_query_chip(); break; + default: fprintf(stdout, "* ST018 w3802::%.2x\n", data); break; + } + } return; + + case BoardUpload: { + op_board_upload(data); + } return; + } + } + + if(addr == 0x3804) { + regs.w3804 <<= 8; + regs.w3804 |= data; + regs.w3804 &= 0xffffff; + return; + } +} + +void ST018::init() { +} + +void ST018::enable() { + for(unsigned i = 0x3800; i <= 0x38ff; i++) memory::mmio.map(i, *this); +} + +void ST018::power() { + reset(); +} + +void ST018::reset() { + regs.mode = Waiting; + regs.r3800 = 0x00; + regs.r3804 = 0x85; + regs.w3804 = 0; + for(unsigned i = 0; i < 97; i++) board[i] = 0; +} + +//============= +//ST018 opcodes +//============= + +void ST018::op_board_upload() { + regs.mode = BoardUpload; + regs.counter = 0; + regs.r3800 = 0xe0; +} + +void ST018::op_board_upload(uint8 data) { + board[regs.counter] = data; + regs.r3800 = 96 - regs.counter; + regs.counter++; + if(regs.counter >= 97) { + regs.mode = Waiting; + #if 0 + for(unsigned y = 0; y < 9; y++) { + for(unsigned x = 0; x < 9; x++) { + fprintf(stdout, "%.2x ", board[y * 9 + x]); + } + fprintf(stdout, "\n"); + } + for(unsigned n = 0; n < 16; n++) fprintf(stdout, "%.2x ", board[81 + n]); + fprintf(stdout, "\n\n"); + #endif + } +} + +void ST018::op_b2() { + fprintf(stdout, "* ST018 w3802::b2\n"); + regs.r3800 = 0xe0; + regs.r3800_01 = 0; //unknown +} + +void ST018::op_b3() { + fprintf(stdout, "* ST018 w3802::b3\n"); + regs.r3800 = 0xe0; + regs.r3800_01 = 1; //0 = player lost? +} + +void ST018::op_b4() { + fprintf(stdout, "* ST018 w3802::b4\n"); + regs.r3800 = 0xe0; + regs.r3800_01 = 1; //0 = player won? +} + +void ST018::op_b5() { + fprintf(stdout, "* ST018 w3802::b5\n"); + regs.r3800 = 0xe0; + regs.r3800_01 = 0; //1 = move will result in checkmate? +} + +void ST018::op_query_chip() { + regs.r3800 = 0x00; +} + +}; diff --git a/libmednahawk/src/snes/src/chip/st018/st018.hpp b/libmednahawk/src/snes/src/chip/st018/st018.hpp new file mode 100644 index 0000000000..1c20d45a48 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/st018/st018.hpp @@ -0,0 +1,51 @@ +class ST018 : public MMIO { +public: + void init(); + void enable(); + void power(); + void reset(); + + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + enum mode_t { Waiting, BoardUpload }; + struct regs_t { + mode_t mode; + + uint8 r3800; + uint8 r3800_01; + uint8 r3804; + + unsigned w3804; + unsigned counter; + } regs; + + enum PieceID { + Pawn = 0x00, //foot soldier + Lance = 0x04, //incense chariot + Knight = 0x08, //cassia horse + Silver = 0x0c, //silver general + Gold = 0x10, //gold general + Rook = 0x14, //flying chariot + Bishop = 0x18, //angle mover + King = 0x1c, //king + }; + + enum PieceFlag { + PlayerA = 0x20, + PlayerB = 0x40, + }; + + uint8 board[9 * 9 + 16]; + +private: + void op_board_upload(); + void op_board_upload(uint8 data); + void op_b2(); + void op_b3(); + void op_b4(); + void op_b5(); + void op_query_chip(); +}; + +extern ST018 st018; diff --git a/libmednahawk/src/snes/src/chip/superfx/bus/bus.cpp b/libmednahawk/src/snes/src/chip/superfx/bus/bus.cpp new file mode 100644 index 0000000000..3af1691bfa --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/bus/bus.cpp @@ -0,0 +1,106 @@ +#ifdef SUPERFX_CPP + +SuperFXBus superfxbus; + +namespace memory { + SuperFXGSUROM gsurom; + SuperFXGSURAM gsuram; + SuperFXCPUROM fxrom; + SuperFXCPURAM fxram; +} + +void SuperFXBus::init() { + map(MapDirect, 0x00, 0xff, 0x0000, 0xffff, memory::memory_unmapped); + + map(MapLinear, 0x00, 0x3f, 0x0000, 0x7fff, memory::gsurom); + map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::gsurom); + map(MapLinear, 0x40, 0x5f, 0x0000, 0xffff, memory::gsurom); + map(MapLinear, 0x60, 0x7f, 0x0000, 0xffff, memory::gsuram); + + bus.map(MapLinear, 0x00, 0x3f, 0x6000, 0x7fff, memory::fxram, 0x0000, 0x2000); + bus.map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::fxrom); + bus.map(MapLinear, 0x40, 0x5f, 0x0000, 0xffff, memory::fxrom); + bus.map(MapLinear, 0x60, 0x7d, 0x0000, 0xffff, memory::fxram); + bus.map(MapLinear, 0x80, 0xbf, 0x6000, 0x7fff, memory::fxram, 0x0000, 0x2000); + bus.map(MapLinear, 0x80, 0xbf, 0x8000, 0xffff, memory::fxrom); + bus.map(MapLinear, 0xc0, 0xdf, 0x0000, 0xffff, memory::fxrom); + bus.map(MapLinear, 0xe0, 0xff, 0x0000, 0xffff, memory::fxram); +} + +//ROM / RAM access from the SuperFX CPU + +unsigned SuperFXGSUROM::size() const { + return memory::cartrom.size(); +} + +uint8 SuperFXGSUROM::read(unsigned addr) { + while(!superfx.regs.scmr.ron && scheduler.sync != Scheduler::SyncAll) { + superfx.add_clocks(6); + scheduler.sync_copcpu(); + } + return memory::cartrom.read(addr); +} + +void SuperFXGSUROM::write(unsigned addr, uint8 data) { + while(!superfx.regs.scmr.ron && scheduler.sync != Scheduler::SyncAll) { + superfx.add_clocks(6); + scheduler.sync_copcpu(); + } + memory::cartrom.write(addr, data); +} + +unsigned SuperFXGSURAM::size() const { + return memory::cartram.size(); +} + +uint8 SuperFXGSURAM::read(unsigned addr) { + while(!superfx.regs.scmr.ran && scheduler.sync != Scheduler::SyncAll) { + superfx.add_clocks(6); + scheduler.sync_copcpu(); + } + return memory::cartram.read(addr); +} + +void SuperFXGSURAM::write(unsigned addr, uint8 data) { + while(!superfx.regs.scmr.ran && scheduler.sync != Scheduler::SyncAll) { + superfx.add_clocks(6); + scheduler.sync_copcpu(); + } + memory::cartram.write(addr, data); +} + +//ROM / RAM access from the S-CPU + +unsigned SuperFXCPUROM::size() const { + return memory::cartrom.size(); +} + +uint8 SuperFXCPUROM::read(unsigned addr) { + if(superfx.regs.sfr.g && superfx.regs.scmr.ron) { + static const uint8_t data[16] = { + 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x00, 0x01, + 0x00, 0x01, 0x08, 0x01, 0x00, 0x01, 0x0c, 0x01, + }; + return data[addr & 15]; + } + return memory::cartrom.read(addr); +} + +void SuperFXCPUROM::write(unsigned addr, uint8 data) { + memory::cartrom.write(addr, data); +} + +unsigned SuperFXCPURAM::size() const { + return memory::cartram.size(); +} + +uint8 SuperFXCPURAM::read(unsigned addr) { + if(superfx.regs.sfr.g && superfx.regs.scmr.ran) return cpu.regs.mdr; + return memory::cartram.read(addr); +} + +void SuperFXCPURAM::write(unsigned addr, uint8 data) { + memory::cartram.write(addr, data); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/bus/bus.hpp b/libmednahawk/src/snes/src/chip/superfx/bus/bus.hpp new file mode 100644 index 0000000000..548b485bf3 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/bus/bus.hpp @@ -0,0 +1,34 @@ +struct SuperFXBus : Bus { + void init(); +}; + +struct SuperFXGSUROM : Memory { + unsigned size() const; + uint8 read(unsigned); + void write(unsigned, uint8); +}; + +struct SuperFXGSURAM : Memory { + unsigned size() const; + uint8 read(unsigned); + void write(unsigned, uint8); +}; + +struct SuperFXCPUROM : Memory { + unsigned size() const; + uint8 read(unsigned); + void write(unsigned, uint8); +}; + +struct SuperFXCPURAM : Memory { + unsigned size() const; + uint8 read(unsigned); + void write(unsigned, uint8); +}; + +namespace memory { + extern SuperFXGSUROM gsurom; + extern SuperFXGSURAM gsuram; + extern SuperFXCPUROM fxrom; + extern SuperFXCPURAM fxram; +} diff --git a/libmednahawk/src/snes/src/chip/superfx/core/core.cpp b/libmednahawk/src/snes/src/chip/superfx/core/core.cpp new file mode 100644 index 0000000000..e54e5353b5 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/core/core.cpp @@ -0,0 +1,107 @@ +#ifdef SUPERFX_CPP + +#include "opcodes.cpp" +#include "opcode_table.cpp" + +uint8 SuperFX::color(uint8 source) { + if(regs.por.highnibble) return (regs.colr & 0xf0) | (source >> 4); + if(regs.por.freezehigh) return (regs.colr & 0xf0) | (source & 0x0f); + return source; +} + +void SuperFX::plot(uint8 x, uint8 y) { + uint8 color = regs.colr; + + if(regs.por.dither && regs.scmr.md != 3) { + if((x ^ y) & 1) color >>= 4; + color &= 0x0f; + } + + if(!regs.por.transparent) { + if(regs.scmr.md == 3) { + if(regs.por.freezehigh) { + if((color & 0x0f) == 0) return; + } else { + if(color == 0) return; + } + } else { + if((color & 0x0f) == 0) return; + } + } + + uint16 offset = (y << 5) + (x >> 3); + if(offset != pixelcache[0].offset) { + pixelcache_flush(pixelcache[1]); + pixelcache[1] = pixelcache[0]; + pixelcache[0].bitpend = 0x00; + pixelcache[0].offset = offset; + } + + x = (x & 7) ^ 7; + pixelcache[0].data[x] = color; + pixelcache[0].bitpend |= 1 << x; + if(pixelcache[0].bitpend == 0xff) { + pixelcache_flush(pixelcache[1]); + pixelcache[1] = pixelcache[0]; + pixelcache[0].bitpend = 0x00; + } +} + +uint8 SuperFX::rpix(uint8 x, uint8 y) { + pixelcache_flush(pixelcache[1]); + pixelcache_flush(pixelcache[0]); + + unsigned cn; //character number + switch(regs.por.obj ? 3 : regs.scmr.ht) { + case 0: cn = ((x & 0xf8) << 1) + ((y & 0xf8) >> 3); break; + case 1: cn = ((x & 0xf8) << 1) + ((x & 0xf8) >> 1) + ((y & 0xf8) >> 3); break; + case 2: cn = ((x & 0xf8) << 1) + ((x & 0xf8) << 0) + ((y & 0xf8) >> 3); break; + case 3: cn = ((y & 0x80) << 2) + ((x & 0x80) << 1) + ((y & 0x78) << 1) + ((x & 0x78) >> 3); break; + } + unsigned bpp = 2 << (regs.scmr.md - (regs.scmr.md >> 1)); // = [regs.scmr.md]{ 2, 4, 4, 8 }; + unsigned addr = 0x700000 + (cn * (bpp << 3)) + (regs.scbr << 10) + ((y & 0x07) * 2); + uint8 data = 0x00; + x = (x & 7) ^ 7; + + for(unsigned n = 0; n < bpp; n++) { + unsigned byte = ((n >> 1) << 4) + (n & 1); // = [n]{ 0, 1, 16, 17, 32, 33, 48, 49 }; + add_clocks(memory_access_speed); + data |= ((superfxbus.read(addr + byte) >> x) & 1) << n; + } + + return data; +} + +void SuperFX::pixelcache_flush(pixelcache_t &cache) { + if(cache.bitpend == 0x00) return; + + uint8 x = cache.offset << 3; + uint8 y = cache.offset >> 5; + + unsigned cn; //character number + switch(regs.por.obj ? 3 : regs.scmr.ht) { + case 0: cn = ((x & 0xf8) << 1) + ((y & 0xf8) >> 3); break; + case 1: cn = ((x & 0xf8) << 1) + ((x & 0xf8) >> 1) + ((y & 0xf8) >> 3); break; + case 2: cn = ((x & 0xf8) << 1) + ((x & 0xf8) << 0) + ((y & 0xf8) >> 3); break; + case 3: cn = ((y & 0x80) << 2) + ((x & 0x80) << 1) + ((y & 0x78) << 1) + ((x & 0x78) >> 3); break; + } + unsigned bpp = 2 << (regs.scmr.md - (regs.scmr.md >> 1)); // = [regs.scmr.md]{ 2, 4, 4, 8 }; + unsigned addr = 0x700000 + (cn * (bpp << 3)) + (regs.scbr << 10) + ((y & 0x07) * 2); + + for(unsigned n = 0; n < bpp; n++) { + unsigned byte = ((n >> 1) << 4) + (n & 1); // = [n]{ 0, 1, 16, 17, 32, 33, 48, 49 }; + uint8 data = 0x00; + for(unsigned x = 0; x < 8; x++) data |= ((cache.data[x] >> n) & 1) << x; + if(cache.bitpend != 0xff) { + add_clocks(memory_access_speed); + data &= cache.bitpend; + data |= superfxbus.read(addr + byte) & ~cache.bitpend; + } + add_clocks(memory_access_speed); + superfxbus.write(addr + byte, data); + } + + cache.bitpend = 0x00; +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/core/core.hpp b/libmednahawk/src/snes/src/chip/superfx/core/core.hpp new file mode 100644 index 0000000000..4041db2414 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/core/core.hpp @@ -0,0 +1,92 @@ +#include "registers.hpp" + +uint8 color(uint8 source); +void plot(uint8 x, uint8 y); +uint8 rpix(uint8 x, uint8 y); +void pixelcache_flush(pixelcache_t &cache); + +void (SuperFX::*opcode_table[1024])(); +void initialize_opcode_table(); + +//opcodes.cpp +template void op_adc_i(); +template void op_adc_r(); +template void op_add_i(); +template void op_add_r(); +void op_alt1(); +void op_alt2(); +void op_alt3(); +template void op_and_i(); +template void op_and_r(); +void op_asr(); +void op_bge(); +void op_bcc(); +void op_bcs(); +void op_beq(); +template void op_bic_i(); +template void op_bic_r(); +void op_blt(); +void op_bmi(); +void op_bne(); +void op_bpl(); +void op_bra(); +void op_bvc(); +void op_bvs(); +void op_cache(); +void op_cmode(); +template void op_cmp_r(); +void op_color(); +template void op_dec_r(); +void op_div2(); +void op_fmult(); +template void op_from_r(); +void op_getb(); +void op_getbl(); +void op_getbh(); +void op_getbs(); +void op_getc(); +void op_hib(); +template void op_ibt_r(); +template void op_inc_r(); +template void op_iwt_r(); +template void op_jmp_r(); +template void op_ldb_ir(); +template void op_ldw_ir(); +template void op_link(); +template void op_ljmp_r(); +template void op_lm_r(); +template void op_lms_r(); +void op_lmult(); +void op_lob(); +void op_loop(); +void op_lsr(); +void op_merge(); +template void op_mult_i(); +template void op_mult_r(); +void op_nop(); +void op_not(); +template void op_or_i(); +template void op_or_r(); +void op_plot(); +void op_ramb(); +void op_rol(); +void op_romb(); +void op_ror(); +void op_rpix(); +template void op_sbc_r(); +void op_sbk(); +void op_sex(); +template void op_sm_r(); +template void op_sms_r(); +template void op_stb_ir(); +void op_stop(); +template void op_stw_ir(); +template void op_sub_i(); +template void op_sub_r(); +void op_swap(); +template void op_to_r(); +template void op_umult_i(); +template void op_umult_r(); +template void op_with_r(); +template void op_xor_i(); +template void op_xor_r(); diff --git a/libmednahawk/src/snes/src/chip/superfx/core/opcode_table.cpp b/libmednahawk/src/snes/src/chip/superfx/core/opcode_table.cpp new file mode 100644 index 0000000000..b47ab779b0 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/core/opcode_table.cpp @@ -0,0 +1,270 @@ +#ifdef SUPERFX_CPP + +void SuperFX::initialize_opcode_table() { + #define op4(id, name) \ + op(id+ 0, name< 1>) op(id+ 1, name< 2>) op(id+ 2, name< 3>) op(id+ 3, name< 4>) + + #define op6(id, name) \ + op(id+ 0, name< 8>) op(id+ 1, name< 9>) op(id+ 2, name<10>) op(id+ 3, name<11>) \ + op(id+ 4, name<12>) op(id+ 5, name<13>) + + #define op12(id, name) \ + op(id+ 0, name< 0>) op(id+ 1, name< 1>) op(id+ 2, name< 2>) op(id+ 3, name< 3>) \ + op(id+ 4, name< 4>) op(id+ 5, name< 5>) op(id+ 6, name< 6>) op(id+ 7, name< 7>) \ + op(id+ 8, name< 8>) op(id+ 9, name< 9>) op(id+10, name<10>) op(id+11, name<11>) + + #define op15l(id, name) \ + op(id+ 0, name< 0>) op(id+ 1, name< 1>) op(id+ 2, name< 2>) op(id+ 3, name< 3>) \ + op(id+ 4, name< 4>) op(id+ 5, name< 5>) op(id+ 6, name< 6>) op(id+ 7, name< 7>) \ + op(id+ 8, name< 8>) op(id+ 9, name< 9>) op(id+10, name<10>) op(id+11, name<11>) \ + op(id+12, name<12>) op(id+13, name<13>) op(id+14, name<14>) + + #define op15h(id, name) \ + op(id+ 0, name< 1>) op(id+ 1, name< 2>) op(id+ 2, name< 3>) op(id+ 3, name< 4>) \ + op(id+ 4, name< 5>) op(id+ 5, name< 6>) op(id+ 6, name< 7>) op(id+ 7, name< 8>) \ + op(id+ 8, name< 9>) op(id+ 9, name<10>) op(id+10, name<11>) op(id+11, name<12>) \ + op(id+12, name<13>) op(id+13, name<14>) op(id+14, name<15>) + + #define op16(id, name) \ + op(id+ 0, name< 0>) op(id+ 1, name< 1>) op(id+ 2, name< 2>) op(id+ 3, name< 3>) \ + op(id+ 4, name< 4>) op(id+ 5, name< 5>) op(id+ 6, name< 6>) op(id+ 7, name< 7>) \ + op(id+ 8, name< 8>) op(id+ 9, name< 9>) op(id+10, name<10>) op(id+11, name<11>) \ + op(id+12, name<12>) op(id+13, name<13>) op(id+14, name<14>) op(id+15, name<15>) + + //====== + // ALT0 + //====== + + #define op(id, name) opcode_table[ 0 + id] = &SuperFX::op_##name; + op (0x00, stop) + op (0x01, nop) + op (0x02, cache) + op (0x03, lsr) + op (0x04, rol) + op (0x05, bra) + op (0x06, blt) + op (0x07, bge) + op (0x08, bne) + op (0x09, beq) + op (0x0a, bpl) + op (0x0b, bmi) + op (0x0c, bcc) + op (0x0d, bcs) + op (0x0e, bvc) + op (0x0f, bvs) + op16 (0x10, to_r) + op16 (0x20, with_r) + op12 (0x30, stw_ir) + op (0x3c, loop) + op (0x3d, alt1) + op (0x3e, alt2) + op (0x3f, alt3) + op12 (0x40, ldw_ir) + op (0x4c, plot) + op (0x4d, swap) + op (0x4e, color) + op (0x4f, not) + op16 (0x50, add_r) + op16 (0x60, sub_r) + op (0x70, merge) + op15h(0x71, and_r) + op16 (0x80, mult_r) + op (0x90, sbk) + op4 (0x91, link) + op (0x95, sex) + op (0x96, asr) + op (0x97, ror) + op6 (0x98, jmp_r) + op (0x9e, lob) + op (0x9f, fmult) + op16 (0xa0, ibt_r) + op16 (0xb0, from_r) + op (0xc0, hib) + op15h(0xc1, or_r) + op15l(0xd0, inc_r) + op (0xdf, getc) + op15l(0xe0, dec_r) + op (0xef, getb) + op16 (0xf0, iwt_r) + #undef op + + //====== + // ALT1 + //====== + + #define op(id, name) opcode_table[256 + id] = &SuperFX::op_##name; + op (0x00, stop) + op (0x01, nop) + op (0x02, cache) + op (0x03, lsr) + op (0x04, rol) + op (0x05, bra) + op (0x06, blt) + op (0x07, bge) + op (0x08, bne) + op (0x09, beq) + op (0x0a, bpl) + op (0x0b, bmi) + op (0x0c, bcc) + op (0x0d, bcs) + op (0x0e, bvc) + op (0x0f, bvs) + op16 (0x10, to_r) + op16 (0x20, with_r) + op12 (0x30, stb_ir) + op (0x3c, loop) + op (0x3d, alt1) + op (0x3e, alt2) + op (0x3f, alt3) + op12 (0x40, ldb_ir) + op (0x4c, rpix) + op (0x4d, swap) + op (0x4e, cmode) + op (0x4f, not) + op16 (0x50, adc_r) + op16 (0x60, sbc_r) + op (0x70, merge) + op15h(0x71, bic_r) + op16 (0x80, umult_r) + op (0x90, sbk) + op4 (0x91, link) + op (0x95, sex) + op (0x96, div2) + op (0x97, ror) + op6 (0x98, ljmp_r) + op (0x9e, lob) + op (0x9f, lmult) + op16 (0xa0, lms_r) + op16 (0xb0, from_r) + op (0xc0, hib) + op15h(0xc1, xor_r) + op15l(0xd0, inc_r) + op (0xdf, getc) + op15l(0xe0, dec_r) + op (0xef, getbh) + op16 (0xf0, lm_r) + #undef op + + //====== + // ALT2 + //====== + + #define op(id, name) opcode_table[512 + id] = &SuperFX::op_##name; + op (0x00, stop) + op (0x01, nop) + op (0x02, cache) + op (0x03, lsr) + op (0x04, rol) + op (0x05, bra) + op (0x06, blt) + op (0x07, bge) + op (0x08, bne) + op (0x09, beq) + op (0x0a, bpl) + op (0x0b, bmi) + op (0x0c, bcc) + op (0x0d, bcs) + op (0x0e, bvc) + op (0x0f, bvs) + op16 (0x10, to_r) + op16 (0x20, with_r) + op12 (0x30, stw_ir) + op (0x3c, loop) + op (0x3d, alt1) + op (0x3e, alt2) + op (0x3f, alt3) + op12 (0x40, ldw_ir) + op (0x4c, plot) + op (0x4d, swap) + op (0x4e, color) + op (0x4f, not) + op16 (0x50, add_i) + op16 (0x60, sub_i) + op (0x70, merge) + op15h(0x71, and_i) + op16 (0x80, mult_i) + op (0x90, sbk) + op4 (0x91, link) + op (0x95, sex) + op (0x96, asr) + op (0x97, ror) + op6 (0x98, jmp_r) + op (0x9e, lob) + op (0x9f, fmult) + op16 (0xa0, sms_r) + op16 (0xb0, from_r) + op (0xc0, hib) + op15h(0xc1, or_i) + op15l(0xd0, inc_r) + op (0xdf, ramb) + op15l(0xe0, dec_r) + op (0xef, getbl) + op16 (0xf0, sm_r) + #undef op + + //====== + // ALT3 + //====== + + #define op(id, name) opcode_table[768 + id] = &SuperFX::op_##name; + op (0x00, stop) + op (0x01, nop) + op (0x02, cache) + op (0x03, lsr) + op (0x04, rol) + op (0x05, bra) + op (0x06, blt) + op (0x07, bge) + op (0x08, bne) + op (0x09, beq) + op (0x0a, bpl) + op (0x0b, bmi) + op (0x0c, bcc) + op (0x0d, bcs) + op (0x0e, bvc) + op (0x0f, bvs) + op16 (0x10, to_r) + op16 (0x20, with_r) + op12 (0x30, stb_ir) + op (0x3c, loop) + op (0x3d, alt1) + op (0x3e, alt2) + op (0x3f, alt3) + op12 (0x40, ldb_ir) + op (0x4c, rpix) + op (0x4d, swap) + op (0x4e, cmode) + op (0x4f, not) + op16 (0x50, adc_i) + op16 (0x60, cmp_r) + op (0x70, merge) + op15h(0x71, bic_i) + op16 (0x80, umult_i) + op (0x90, sbk) + op4 (0x91, link) + op (0x95, sex) + op (0x96, div2) + op (0x97, ror) + op6 (0x98, ljmp_r) + op (0x9e, lob) + op (0x9f, lmult) + op16 (0xa0, lms_r) + op16 (0xb0, from_r) + op (0xc0, hib) + op15h(0xc1, xor_i) + op15l(0xd0, inc_r) + op (0xdf, romb) + op15l(0xe0, dec_r) + op (0xef, getbs) + op16 (0xf0, lm_r) + #undef op + + #undef op4 + #undef op6 + #undef op12 + #undef op15l + #undef op15h + #undef op16 +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/core/opcodes.cpp b/libmednahawk/src/snes/src/chip/superfx/core/opcodes.cpp new file mode 100644 index 0000000000..0cd3751859 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/core/opcodes.cpp @@ -0,0 +1,661 @@ +#ifdef SUPERFX_CPP + +//$00 stop +void SuperFX::op_stop() { + if(regs.cfgr.irq == 0) { + regs.sfr.irq = 1; + cpu.regs.irq = 1; + } + + regs.sfr.g = 0; + regs.pipeline = 0x01; + regs.reset(); +} + +//$01 nop +void SuperFX::op_nop() { + regs.reset(); +} + +//$02 cache +void SuperFX::op_cache() { + if(regs.cbr != (regs.r[15] & 0xfff0)) { + regs.cbr = regs.r[15] & 0xfff0; + cache_flush(); + } + regs.reset(); +} + +//$03 lsr +void SuperFX::op_lsr() { + regs.sfr.cy = (regs.sr() & 1); + regs.dr() = regs.sr() >> 1; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$04 rol +void SuperFX::op_rol() { + bool carry = (regs.sr() & 0x8000); + regs.dr() = (regs.sr() << 1) | regs.sfr.cy; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.cy = carry; + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$05 bra e +void SuperFX::op_bra() { + regs.r[15] += (int8)pipe(); +} + +//$06 blt e +void SuperFX::op_blt() { + int e = (int8)pipe(); + if((regs.sfr.s ^ regs.sfr.ov) == 0) regs.r[15] += e; +} + +//$07 bge e +void SuperFX::op_bge() { + int e = (int8)pipe(); + if((regs.sfr.s ^ regs.sfr.ov) == 1) regs.r[15] += e; +} + +//$08 bne e +void SuperFX::op_bne() { + int e = (int8)pipe(); + if(regs.sfr.z == 0) regs.r[15] += e; +} + +//$09 beq e +void SuperFX::op_beq() { + int e = (int8)pipe(); + if(regs.sfr.z == 1) regs.r[15] += e; +} + +//$0a bpl e +void SuperFX::op_bpl() { + int e = (int8)pipe(); + if(regs.sfr.s == 0) regs.r[15] += e; +} + +//$0b bmi e +void SuperFX::op_bmi() { + int e = (int8)pipe(); + if(regs.sfr.s == 1) regs.r[15] += e; +} + +//$0c bcc e +void SuperFX::op_bcc() { + int e = (int8)pipe(); + if(regs.sfr.cy == 0) regs.r[15] += e; +} + +//$0d bcs e +void SuperFX::op_bcs() { + int e = (int8)pipe(); + if(regs.sfr.cy == 1) regs.r[15] += e; +} + +//$0e bvc e +void SuperFX::op_bvc() { + int e = (int8)pipe(); + if(regs.sfr.ov == 0) regs.r[15] += e; +} + +//$0f bvs e +void SuperFX::op_bvs() { + int e = (int8)pipe(); + if(regs.sfr.ov == 1) regs.r[15] += e; +} + +//$10-1f(b0): to rN +//$10-1f(b1): move rN +template void SuperFX::op_to_r() { + if(regs.sfr.b == 0) { + regs.dreg = n; + } else { + regs.r[n] = regs.sr(); + regs.reset(); + } +} + +//$20-2f: with rN +template void SuperFX::op_with_r() { + regs.sreg = n; + regs.dreg = n; + regs.sfr.b = 1; +} + +//$30-3b(alt0): stw (rN) +template void SuperFX::op_stw_ir() { + regs.ramaddr = regs.r[n]; + rambuffer_write(regs.ramaddr ^ 0, regs.sr() >> 0); + rambuffer_write(regs.ramaddr ^ 1, regs.sr() >> 8); + regs.reset(); +} + +//$30-3b(alt1): stb (rN) +template void SuperFX::op_stb_ir() { + regs.ramaddr = regs.r[n]; + rambuffer_write(regs.ramaddr, regs.sr()); + regs.reset(); +} + +//$3c loop +void SuperFX::op_loop() { + regs.r[12]--; + regs.sfr.s = (regs.r[12] & 0x8000); + regs.sfr.z = (regs.r[12] == 0); + if(!regs.sfr.z) regs.r[15] = regs.r[13]; + regs.reset(); +} + +//$3d alt1 +void SuperFX::op_alt1() { + regs.sfr.b = 0; + regs.sfr.alt1 = 1; +} + +//$3e alt2 +void SuperFX::op_alt2() { + regs.sfr.b = 0; + regs.sfr.alt2 = 1; +} + +//$3f alt3 +void SuperFX::op_alt3() { + regs.sfr.b = 0; + regs.sfr.alt1 = 1; + regs.sfr.alt2 = 1; +} + +//$40-4b(alt0): ldw (rN) +template void SuperFX::op_ldw_ir() { + regs.ramaddr = regs.r[n]; + uint16_t data; + data = rambuffer_read(regs.ramaddr ^ 0) << 0; + data |= rambuffer_read(regs.ramaddr ^ 1) << 8; + regs.dr() = data; + regs.reset(); +} + +//$40-4b(alt1): ldb (rN) +template void SuperFX::op_ldb_ir() { + regs.ramaddr = regs.r[n]; + regs.dr() = rambuffer_read(regs.ramaddr); + regs.reset(); +} + +//$4c(alt0): plot +void SuperFX::op_plot() { + plot(regs.r[1], regs.r[2]); + regs.r[1]++; + regs.reset(); +} + +//$4c(alt1): rpix +void SuperFX::op_rpix() { + regs.dr() = rpix(regs.r[1], regs.r[2]); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$4d: swap +void SuperFX::op_swap() { + regs.dr() = (regs.sr() >> 8) | (regs.sr() << 8); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$4e(alt0): color +void SuperFX::op_color() { + regs.colr = color(regs.sr()); + regs.reset(); +} + +//$4e(alt1): cmode +void SuperFX::op_cmode() { + regs.por = regs.sr(); + regs.reset(); +} + +//$4f: not +void SuperFX::op_not() { + regs.dr() = ~regs.sr(); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$50-5f(alt0): add rN +template void SuperFX::op_add_r() { + int r = regs.sr() + regs.r[n]; + regs.sfr.ov = ~(regs.sr() ^ regs.r[n]) & (regs.r[n] ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0x10000); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$50-5f(alt1): adc rN +template void SuperFX::op_adc_r() { + int r = regs.sr() + regs.r[n] + regs.sfr.cy; + regs.sfr.ov = ~(regs.sr() ^ regs.r[n]) & (regs.r[n] ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0x10000); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$50-5f(alt2): add #N +template void SuperFX::op_add_i() { + int r = regs.sr() + n; + regs.sfr.ov = ~(regs.sr() ^ n) & (n ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0x10000); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$50-5f(alt3): adc #N +template void SuperFX::op_adc_i() { + int r = regs.sr() + n + regs.sfr.cy; + regs.sfr.ov = ~(regs.sr() ^ n) & (n ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0x10000); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$60-6f(alt0): sub rN +template void SuperFX::op_sub_r() { + int r = regs.sr() - regs.r[n]; + regs.sfr.ov = (regs.sr() ^ regs.r[n]) & (regs.sr() ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$60-6f(alt1): sbc rN +template void SuperFX::op_sbc_r() { + int r = regs.sr() - regs.r[n] - !regs.sfr.cy; + regs.sfr.ov = (regs.sr() ^ regs.r[n]) & (regs.sr() ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$60-6f(alt2): sub #N +template void SuperFX::op_sub_i() { + int r = regs.sr() - n; + regs.sfr.ov = (regs.sr() ^ n) & (regs.sr() ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0); + regs.sfr.z = ((uint16_t)r == 0); + regs.dr() = r; + regs.reset(); +} + +//$60-6f(alt3): cmp rN +template void SuperFX::op_cmp_r() { + int r = regs.sr() - regs.r[n]; + regs.sfr.ov = (regs.sr() ^ regs.r[n]) & (regs.sr() ^ r) & 0x8000; + regs.sfr.s = (r & 0x8000); + regs.sfr.cy = (r >= 0); + regs.sfr.z = ((uint16_t)r == 0); + regs.reset(); +} + +//$70: merge +void SuperFX::op_merge() { + regs.dr() = (regs.r[7] & 0xff00) | (regs.r[8] >> 8); + regs.sfr.ov = (regs.dr() & 0xc0c0); + regs.sfr.s = (regs.dr() & 0x8080); + regs.sfr.cy = (regs.dr() & 0xe0e0); + regs.sfr.z = (regs.dr() & 0xf0f0); + regs.reset(); +} + +//$71-7f(alt0): and rN +template void SuperFX::op_and_r() { + regs.dr() = regs.sr() & regs.r[n]; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$71-7f(alt1): bic rN +template void SuperFX::op_bic_r() { + regs.dr() = regs.sr() & ~regs.r[n]; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$71-7f(alt2): and #N +template void SuperFX::op_and_i() { + regs.dr() = regs.sr() & n; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$71-7f(alt3): bic #N +template void SuperFX::op_bic_i() { + regs.dr() = regs.sr() & ~n; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$80-8f(alt0): mult rN +template void SuperFX::op_mult_r() { + regs.dr() = (int8)regs.sr() * (int8)regs.r[n]; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + if(!regs.cfgr.ms0) add_clocks(2); +} + +//$80-8f(alt1): umult rN +template void SuperFX::op_umult_r() { + regs.dr() = (uint8)regs.sr() * (uint8)regs.r[n]; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + if(!regs.cfgr.ms0) add_clocks(2); +} + +//$80-8f(alt2): mult #N +template void SuperFX::op_mult_i() { + regs.dr() = (int8)regs.sr() * (int8)n; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + if(!regs.cfgr.ms0) add_clocks(2); +} + +//$80-8f(alt3): umult #N +template void SuperFX::op_umult_i() { + regs.dr() = (uint8)regs.sr() * (uint8)n; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + if(!regs.cfgr.ms0) add_clocks(2); +} + +//$90: sbk +void SuperFX::op_sbk() { + rambuffer_write(regs.ramaddr ^ 0, regs.sr() >> 0); + rambuffer_write(regs.ramaddr ^ 1, regs.sr() >> 8); + regs.reset(); +} + +//$91-94: link #N +template void SuperFX::op_link() { + regs.r[11] = regs.r[15] + n; + regs.reset(); +} + +//$95: sex +void SuperFX::op_sex() { + regs.dr() = (int8)regs.sr(); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$96(alt0): asr +void SuperFX::op_asr() { + regs.sfr.cy = (regs.sr() & 1); + regs.dr() = (int16_t)regs.sr() >> 1; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$96(alt1): div2 +void SuperFX::op_div2() { + regs.sfr.cy = (regs.sr() & 1); + regs.dr() = ((int16_t)regs.sr() >> 1) + ((regs.sr() + 1) >> 16); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$97: ror +void SuperFX::op_ror() { + bool carry = (regs.sr() & 1); + regs.dr() = (regs.sfr.cy << 15) | (regs.sr() >> 1); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.cy = carry; + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$98-9d(alt0): jmp rN +template void SuperFX::op_jmp_r() { + regs.r[15] = regs.r[n]; + regs.reset(); +} + +//$98-9d(alt1): ljmp rN +template void SuperFX::op_ljmp_r() { + regs.pbr = regs.r[n] & 0x7f; + regs.r[15] = regs.sr(); + regs.cbr = regs.r[15] & 0xfff0; + cache_flush(); + regs.reset(); +} + +//$9e: lob +void SuperFX::op_lob() { + regs.dr() = regs.sr() & 0xff; + regs.sfr.s = (regs.dr() & 0x80); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$9f(alt0): fmult +void SuperFX::op_fmult() { + uint32_t result = (int16_t)regs.sr() * (int16_t)regs.r[6]; + regs.dr() = result >> 16; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.cy = (result & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + add_clocks(4 + (regs.cfgr.ms0 << 2)); +} + +//$9f(alt1): lmult +void SuperFX::op_lmult() { + uint32_t result = (int16_t)regs.sr() * (int16_t)regs.r[6]; + regs.r[4] = result; + regs.dr() = result >> 16; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.cy = (result & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + add_clocks(4 + (regs.cfgr.ms0 << 2)); +} + +//$a0-af(alt0): ibt rN,#pp +template void SuperFX::op_ibt_r() { + regs.r[n] = (int8)pipe(); + regs.reset(); +} + +//$a0-af(alt1): lms rN,(yy) +template void SuperFX::op_lms_r() { + regs.ramaddr = pipe() << 1; + uint16_t data; + data = rambuffer_read(regs.ramaddr ^ 0) << 0; + data |= rambuffer_read(regs.ramaddr ^ 1) << 8; + regs.r[n] = data; + regs.reset(); +} + +//$a0-af(alt2): sms (yy),rN +template void SuperFX::op_sms_r() { + regs.ramaddr = pipe() << 1; + rambuffer_write(regs.ramaddr ^ 0, regs.r[n] >> 0); + rambuffer_write(regs.ramaddr ^ 1, regs.r[n] >> 8); + regs.reset(); +} + +//$b0-bf(b0): from rN +//$b0-bf(b1): moves rN +template void SuperFX::op_from_r() { + if(regs.sfr.b == 0) { + regs.sreg = n; + } else { + regs.dr() = regs.r[n]; + regs.sfr.ov = (regs.dr() & 0x80); + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); + } +} + +//$c0: hib +void SuperFX::op_hib() { + regs.dr() = regs.sr() >> 8; + regs.sfr.s = (regs.dr() & 0x80); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$c1-cf(alt0): or rN +template void SuperFX::op_or_r() { + regs.dr() = regs.sr() | regs.r[n]; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$c1-cf(alt1): xor rN +template void SuperFX::op_xor_r() { + regs.dr() = regs.sr() ^ regs.r[n]; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$c1-cf(alt2): or #N +template void SuperFX::op_or_i() { + regs.dr() = regs.sr() | n; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$c1-cf(alt3): xor #N +template void SuperFX::op_xor_i() { + regs.dr() = regs.sr() ^ n; + regs.sfr.s = (regs.dr() & 0x8000); + regs.sfr.z = (regs.dr() == 0); + regs.reset(); +} + +//$d0-de: inc rN +template void SuperFX::op_inc_r() { + regs.r[n]++; + regs.sfr.s = (regs.r[n] & 0x8000); + regs.sfr.z = (regs.r[n] == 0); + regs.reset(); +} + +//$df(alt0): getc +void SuperFX::op_getc() { + regs.colr = color(rombuffer_read()); + regs.reset(); +} + +//$df(alt2): ramb +void SuperFX::op_ramb() { + rambuffer_sync(); + regs.rambr = regs.sr(); + regs.reset(); +} + +//$df(alt3): romb +void SuperFX::op_romb() { + rombuffer_sync(); + regs.rombr = regs.sr() & 0x7f; + regs.reset(); +} + +//$e0-ee: dec rN +template void SuperFX::op_dec_r() { + regs.r[n]--; + regs.sfr.s = (regs.r[n] & 0x8000); + regs.sfr.z = (regs.r[n] == 0); + regs.reset(); +} + +//$ef(alt0): getb +void SuperFX::op_getb() { + regs.dr() = rombuffer_read(); + regs.reset(); +} + +//$ef(alt1): getbh +void SuperFX::op_getbh() { + regs.dr() = (rombuffer_read() << 8) | (regs.sr() & 0x00ff); + regs.reset(); +} + +//$ef(alt2): getbl +void SuperFX::op_getbl() { + regs.dr() = (regs.sr() & 0xff00) | (rombuffer_read() << 0); + regs.reset(); +} + +//$ef(alt3): getbs +void SuperFX::op_getbs() { + regs.dr() = (int8)rombuffer_read(); + regs.reset(); +} + +//$f0-ff(alt0): iwt rN,#xx +template void SuperFX::op_iwt_r() { + uint16_t data; + data = pipe() << 0; + data |= pipe() << 8; + regs.r[n] = data; + regs.reset(); +} + +//$f0-ff(alt1): lm rN,(xx) +template void SuperFX::op_lm_r() { + regs.ramaddr = pipe() << 0; + regs.ramaddr |= pipe() << 8; + uint16_t data; + data = rambuffer_read(regs.ramaddr ^ 0) << 0; + data |= rambuffer_read(regs.ramaddr ^ 1) << 8; + regs.r[n] = data; + regs.reset(); +} + +//$f0-ff(alt2): sm (xx),rN +template void SuperFX::op_sm_r() { + regs.ramaddr = pipe() << 0; + regs.ramaddr |= pipe() << 8; + rambuffer_write(regs.ramaddr ^ 0, regs.r[n] >> 0); + rambuffer_write(regs.ramaddr ^ 1, regs.r[n] >> 8); + regs.reset(); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/core/registers.hpp b/libmednahawk/src/snes/src/chip/superfx/core/registers.hpp new file mode 100644 index 0000000000..64247698c2 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/core/registers.hpp @@ -0,0 +1,175 @@ +//accepts a callback binding so r14 writes can trigger ROM buffering transparently +struct reg16_t : noncopyable { + uint16 data; + function on_modify; + + inline operator unsigned() const { return data; } + inline uint16 assign(uint16 i) { + if(on_modify) on_modify(i); + else data = i; + return data; + } + + inline unsigned operator++() { return assign(data + 1); } + inline unsigned operator--() { return assign(data - 1); } + inline unsigned operator++(int) { unsigned r = data; assign(data + 1); return r; } + inline unsigned operator--(int) { unsigned r = data; assign(data - 1); return r; } + inline unsigned operator = (unsigned i) { return assign(i); } + inline unsigned operator |= (unsigned i) { return assign(data | i); } + inline unsigned operator ^= (unsigned i) { return assign(data ^ i); } + inline unsigned operator &= (unsigned i) { return assign(data & i); } + inline unsigned operator <<= (unsigned i) { return assign(data << i); } + inline unsigned operator >>= (unsigned i) { return assign(data >> i); } + inline unsigned operator += (unsigned i) { return assign(data + i); } + inline unsigned operator -= (unsigned i) { return assign(data - i); } + inline unsigned operator *= (unsigned i) { return assign(data * i); } + inline unsigned operator /= (unsigned i) { return assign(data / i); } + inline unsigned operator %= (unsigned i) { return assign(data % i); } + + inline unsigned operator = (const reg16_t& i) { return assign(i); } + + reg16_t() : data(0) {} +}; + +struct sfr_t { + bool irq; //interrupt flag + bool b; //WITH flag + bool ih; //immediate higher 8-bit flag + bool il; //immediate lower 8-bit flag + bool alt2; //ALT2 mode + bool alt1; //ALT2 instruction mode + bool r; //ROM r14 read flag + bool g; //GO flag + bool ov; //overflow flag + bool s; //sign flag + bool cy; //carry flag + bool z; //zero flag + + operator unsigned() const { + return (irq << 15) | (b << 12) | (ih << 11) | (il << 10) | (alt2 << 9) | (alt1 << 8) + | (r << 6) | (g << 5) | (ov << 4) | (s << 3) | (cy << 2) | (z << 1); + } + + sfr_t& operator=(uint16_t data) { + irq = data & 0x8000; + b = data & 0x1000; + ih = data & 0x0800; + il = data & 0x0400; + alt2 = data & 0x0200; + alt1 = data & 0x0100; + r = data & 0x0040; + g = data & 0x0020; + ov = data & 0x0010; + s = data & 0x0008; + cy = data & 0x0004; + z = data & 0x0002; + return *this; + } +}; + +struct scmr_t { + unsigned ht; + bool ron; + bool ran; + unsigned md; + + operator unsigned() const { + return ((ht >> 1) << 5) | (ron << 4) | (ran << 3) | ((ht & 1) << 2) | (md); + } + + scmr_t& operator=(uint8 data) { + ht = (bool)(data & 0x20) << 1; + ht |= (bool)(data & 0x04) << 0; + ron = data & 0x10; + ran = data & 0x08; + md = data & 0x03; + return *this; + } +}; + +struct por_t { + bool obj; + bool freezehigh; + bool highnibble; + bool dither; + bool transparent; + + operator unsigned() const { + return (obj << 4) | (freezehigh << 3) | (highnibble << 2) | (dither << 1) | (transparent); + } + + por_t& operator=(uint8 data) { + obj = data & 0x10; + freezehigh = data & 0x08; + highnibble = data & 0x04; + dither = data & 0x02; + transparent = data & 0x01; + return *this; + } +}; + +struct cfgr_t { + bool irq; + bool ms0; + + operator unsigned() const { + return (irq << 7) | (ms0 << 5); + } + + cfgr_t& operator=(uint8 data) { + irq = data & 0x80; + ms0 = data & 0x20; + return *this; + } +}; + +struct regs_t { + uint8 pipeline; + uint16 ramaddr; + + reg16_t r[16]; //general purpose registers + sfr_t sfr; //status flag register + uint8 pbr; //program bank register + uint8 rombr; //game pack ROM bank register + bool rambr; //game pack RAM bank register + uint16 cbr; //cache base register + uint8 scbr; //screen base register + scmr_t scmr; //screen mode register + uint8 colr; //color register + por_t por; //plot option register + bool bramr; //back-up RAM register + uint8 vcr; //version code register + cfgr_t cfgr; //config register + bool clsr; //clock select register + + unsigned romcl; //clock ticks until romdr is valid + uint8 romdr; //ROM buffer data register + + unsigned ramcl; //clock ticks until ramdr is valid + uint16 ramar; //RAM buffer address register + uint8 ramdr; //RAM buffer data register + + unsigned sreg, dreg; + reg16_t& sr() { return r[sreg]; } //source register (from) + reg16_t& dr() { return r[dreg]; } //destination register (to) + + void reset() { + sfr.b = 0; + sfr.alt1 = 0; + sfr.alt2 = 0; + + sreg = 0; + dreg = 0; + } +} regs; + +struct cache_t { + uint8 buffer[512]; + bool valid[32]; +} cache; + +struct pixelcache_t { + uint16 offset; + uint8 bitpend; + uint8 data[8]; +} pixelcache[2]; diff --git a/libmednahawk/src/snes/src/chip/superfx/disasm/disasm.cpp b/libmednahawk/src/snes/src/chip/superfx/disasm/disasm.cpp new file mode 100644 index 0000000000..3dc1b08826 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/disasm/disasm.cpp @@ -0,0 +1,279 @@ +#ifdef SUPERFX_CPP + +void SuperFX::disassemble_opcode(char *output) { + *output = 0; + + if(!regs.sfr.alt2) { + if(!regs.sfr.alt1) { + disassemble_alt0(output); + } else { + disassemble_alt1(output); + } + } else { + if(!regs.sfr.alt1) { + disassemble_alt2(output); + } else { + disassemble_alt3(output); + } + } + + unsigned length = strlen(output); + while(length++ < 20) strcat(output, " "); +} + +#define case4(id) \ + case id+ 0: case id+ 1: case id+ 2: case id+ 3 +#define case6(id) \ + case id+ 0: case id+ 1: case id+ 2: case id+ 3: case id+ 4: case id+ 5 +#define case12(id) \ + case id+ 0: case id+ 1: case id+ 2: case id+ 3: case id+ 4: case id+ 5: case id+ 6: case id+ 7: \ + case id+ 8: case id+ 9: case id+10: case id+11 +#define case15(id) \ + case id+ 0: case id+ 1: case id+ 2: case id+ 3: case id+ 4: case id+ 5: case id+ 6: case id+ 7: \ + case id+ 8: case id+ 9: case id+10: case id+11: case id+12: case id+13: case id+14 +#define case16(id) \ + case id+ 0: case id+ 1: case id+ 2: case id+ 3: case id+ 4: case id+ 5: case id+ 6: case id+ 7: \ + case id+ 8: case id+ 9: case id+10: case id+11: case id+12: case id+13: case id+14: case id+15 + +#define op0 regs.pipeline +#define op1 superfxbus.read((regs.pbr << 16) + regs.r[15] + 0) +#define op2 superfxbus.read((regs.pbr << 16) + regs.r[15] + 1) + +void SuperFX::disassemble_alt0(char *output) { + char t[256] = ""; + switch(op0) { + case (0x00): sprintf(t, "stop"); break; + case (0x01): sprintf(t, "nop"); break; + case (0x02): sprintf(t, "cache"); break; + case (0x03): sprintf(t, "lsr"); break; + case (0x04): sprintf(t, "rol"); break; + case (0x05): sprintf(t, "bra %+d", (int8_t)op1); break; + case (0x06): sprintf(t, "blt %+d", (int8_t)op1); break; + case (0x07): sprintf(t, "bge %+d", (int8_t)op1); break; + case (0x08): sprintf(t, "bne %+d", (int8_t)op1); break; + case (0x09): sprintf(t, "beq %+d", (int8_t)op1); break; + case (0x0a): sprintf(t, "bpl %+d", (int8_t)op1); break; + case (0x0b): sprintf(t, "bmi %+d", (int8_t)op1); break; + case (0x0c): sprintf(t, "bcc %+d", (int8_t)op1); break; + case (0x0d): sprintf(t, "bcs %+d", (int8_t)op1); break; + case (0x0e): sprintf(t, "bvc %+d", (int8_t)op1); break; + case (0x0f): sprintf(t, "bvs %+d", (int8_t)op1); break; + case16(0x10): sprintf(t, "to r%u", op0 & 15); break; + case16(0x20): sprintf(t, "with r%u", op0 & 15); break; + case12(0x30): sprintf(t, "stw (r%u)", op0 & 15); break; + case (0x3c): sprintf(t, "loop"); break; + case (0x3d): sprintf(t, "alt1"); break; + case (0x3e): sprintf(t, "alt2"); break; + case (0x3f): sprintf(t, "alt3"); break; + case12(0x40): sprintf(t, "ldw (r%u)", op0 & 15); break; + case (0x4c): sprintf(t, "plot"); break; + case (0x4d): sprintf(t, "swap"); break; + case (0x4e): sprintf(t, "color"); break; + case (0x4f): sprintf(t, "not"); break; + case16(0x50): sprintf(t, "add r%u", op0 & 15); break; + case16(0x60): sprintf(t, "sub r%u", op0 & 15); break; + case (0x70): sprintf(t, "merge"); break; + case15(0x71): sprintf(t, "and r%u", op0 & 15); break; + case16(0x80): sprintf(t, "mult r%u", op0 & 15); break; + case (0x90): sprintf(t, "sbk"); break; + case4 (0x91): sprintf(t, "link #%u", op0 & 15); break; + case (0x95): sprintf(t, "sex"); break; + case (0x96): sprintf(t, "asr"); break; + case (0x97): sprintf(t, "ror"); break; + case6 (0x98): sprintf(t, "jmp r%u", op0 & 15); break; + case (0x9e): sprintf(t, "lob"); break; + case (0x9f): sprintf(t, "fmult"); break; + case16(0xa0): sprintf(t, "ibt r%u,#$%.2x", op0 & 15, op1); break; + case16(0xb0): sprintf(t, "from r%u", op0 & 15); break; + case (0xc0): sprintf(t, "hib"); + case15(0xc1): sprintf(t, "or r%u", op0 & 15); break; + case15(0xd0): sprintf(t, "inc r%u", op0 & 15); break; + case (0xdf): sprintf(t, "getc"); break; + case15(0xe0): sprintf(t, "dec r%u", op0 & 15); break; + case (0xef): sprintf(t, "getb"); break; + case16(0xf0): sprintf(t, "iwt r%u,#$%.2x%.2x", op0 & 15, op2, op1); break; + } + strcat(output, t); +} + +void SuperFX::disassemble_alt1(char *output) { + char t[256] = ""; + switch(op0) { + case (0x00): sprintf(t, "stop"); break; + case (0x01): sprintf(t, "nop"); break; + case (0x02): sprintf(t, "cache"); break; + case (0x03): sprintf(t, "lsr"); break; + case (0x04): sprintf(t, "rol"); break; + case (0x05): sprintf(t, "bra %+d", (int8_t)op1); break; + case (0x06): sprintf(t, "blt %+d", (int8_t)op1); break; + case (0x07): sprintf(t, "bge %+d", (int8_t)op1); break; + case (0x08): sprintf(t, "bne %+d", (int8_t)op1); break; + case (0x09): sprintf(t, "beq %+d", (int8_t)op1); break; + case (0x0a): sprintf(t, "bpl %+d", (int8_t)op1); break; + case (0x0b): sprintf(t, "bmi %+d", (int8_t)op1); break; + case (0x0c): sprintf(t, "bcc %+d", (int8_t)op1); break; + case (0x0d): sprintf(t, "bcs %+d", (int8_t)op1); break; + case (0x0e): sprintf(t, "bvc %+d", (int8_t)op1); break; + case (0x0f): sprintf(t, "bvs %+d", (int8_t)op1); break; + case16(0x10): sprintf(t, "to r%u", op0 & 15); break; + case16(0x20): sprintf(t, "with r%u", op0 & 15); break; + case12(0x30): sprintf(t, "stb (r%u)", op0 & 15); break; + case (0x3c): sprintf(t, "loop"); break; + case (0x3d): sprintf(t, "alt1"); break; + case (0x3e): sprintf(t, "alt2"); break; + case (0x3f): sprintf(t, "alt3"); break; + case12(0x40): sprintf(t, "ldb (r%u)", op0 & 15); break; + case (0x4c): sprintf(t, "rpix"); break; + case (0x4d): sprintf(t, "swap"); break; + case (0x4e): sprintf(t, "cmode"); break; + case (0x4f): sprintf(t, "not"); break; + case16(0x50): sprintf(t, "adc r%u", op0 & 15); break; + case16(0x60): sprintf(t, "sbc r%u", op0 & 15); break; + case (0x70): sprintf(t, "merge"); break; + case15(0x71): sprintf(t, "bic r%u", op0 & 15); break; + case16(0x80): sprintf(t, "umult r%u", op0 & 15); break; + case (0x90): sprintf(t, "sbk"); break; + case4 (0x91): sprintf(t, "link #%u", op0 & 15); break; + case (0x95): sprintf(t, "sex"); break; + case (0x96): sprintf(t, "div2"); break; + case (0x97): sprintf(t, "ror"); break; + case6 (0x98): sprintf(t, "ljmp r%u", op0 & 15); break; + case (0x9e): sprintf(t, "lob"); break; + case (0x9f): sprintf(t, "lmult"); break; + case16(0xa0): sprintf(t, "lms r%u,(#$%.4x)", op0 & 15, op1 << 1); break; + case16(0xb0): sprintf(t, "from r%u", op0 & 15); break; + case (0xc0): sprintf(t, "hib"); break; + case15(0xc1): sprintf(t, "xor r%u", op0 & 15); break; + case15(0xd0): sprintf(t, "inc r%u", op0 & 15); break; + case (0xdf): sprintf(t, "getc"); break; + case15(0xe0): sprintf(t, "dec r%u", op0 & 15); break; + case (0xef): sprintf(t, "getbh"); break; + case16(0xf0): sprintf(t, "lm r%u", op0 & 15); break; + } + strcat(output, t); +} + +void SuperFX::disassemble_alt2(char *output) { + char t[256] = ""; + switch(op0) { + case (0x00): sprintf(t, "stop"); break; + case (0x01): sprintf(t, "nop"); break; + case (0x02): sprintf(t, "cache"); break; + case (0x03): sprintf(t, "lsr"); break; + case (0x04): sprintf(t, "rol"); break; + case (0x05): sprintf(t, "bra %+d", (int8_t)op1); break; + case (0x06): sprintf(t, "blt %+d", (int8_t)op1); break; + case (0x07): sprintf(t, "bge %+d", (int8_t)op1); break; + case (0x08): sprintf(t, "bne %+d", (int8_t)op1); break; + case (0x09): sprintf(t, "beq %+d", (int8_t)op1); break; + case (0x0a): sprintf(t, "bpl %+d", (int8_t)op1); break; + case (0x0b): sprintf(t, "bmi %+d", (int8_t)op1); break; + case (0x0c): sprintf(t, "bcc %+d", (int8_t)op1); break; + case (0x0d): sprintf(t, "bcs %+d", (int8_t)op1); break; + case (0x0e): sprintf(t, "bvc %+d", (int8_t)op1); break; + case (0x0f): sprintf(t, "bvs %+d", (int8_t)op1); break; + case16(0x10): sprintf(t, "to r%u", op0 & 15); break; + case16(0x20): sprintf(t, "with r%u", op0 & 15); break; + case12(0x30): sprintf(t, "stw (r%u)", op0 & 15); break; + case (0x3c): sprintf(t, "loop"); break; + case (0x3d): sprintf(t, "alt1"); break; + case (0x3e): sprintf(t, "alt2"); break; + case (0x3f): sprintf(t, "alt3"); break; + case12(0x40): sprintf(t, "ldw (r%u)", op0 & 15); break; + case (0x4c): sprintf(t, "plot"); break; + case (0x4d): sprintf(t, "swap"); break; + case (0x4e): sprintf(t, "color"); break; + case (0x4f): sprintf(t, "not"); break; + case16(0x50): sprintf(t, "add #%u", op0 & 15); break; + case16(0x60): sprintf(t, "sub #%u", op0 & 15); break; + case (0x70): sprintf(t, "merge"); break; + case15(0x71): sprintf(t, "and #%u", op0 & 15); break; + case16(0x80): sprintf(t, "mult #%u", op0 & 15); break; + case (0x90): sprintf(t, "sbk"); break; + case4 (0x91): sprintf(t, "link #%u", op0 & 15); break; + case (0x95): sprintf(t, "sex"); break; + case (0x96): sprintf(t, "asr"); break; + case (0x97): sprintf(t, "ror"); break; + case6 (0x98): sprintf(t, "jmp r%u", op0 & 15); break; + case (0x9e): sprintf(t, "lob"); break; + case (0x9f): sprintf(t, "fmult"); break; + case16(0xa0): sprintf(t, "sms r%u,(#$%.4x)", op0 & 15, op1 << 1); break; + case16(0xb0): sprintf(t, "from r%u", op0 & 15); break; + case (0xc0): sprintf(t, "hib"); break; + case15(0xc1): sprintf(t, "or #%u", op0 & 15); break; + case15(0xd0): sprintf(t, "inc r%u", op0 & 15); break; + case (0xdf): sprintf(t, "ramb"); break; + case15(0xe0): sprintf(t, "dec r%u", op0 & 15); break; + case (0xef): sprintf(t, "getbl"); break; + case16(0xf0): sprintf(t, "sm r%u", op0 & 15); break; + } + strcat(output, t); +} + +void SuperFX::disassemble_alt3(char *output) { + char t[256] = ""; + switch(op0) { + case (0x00): sprintf(t, "stop"); break; + case (0x01): sprintf(t, "nop"); break; + case (0x02): sprintf(t, "cache"); break; + case (0x03): sprintf(t, "lsr"); break; + case (0x04): sprintf(t, "rol"); break; + case (0x05): sprintf(t, "bra %+d", (int8_t)op1); break; + case (0x06): sprintf(t, "blt %+d", (int8_t)op1); break; + case (0x07): sprintf(t, "bge %+d", (int8_t)op1); break; + case (0x08): sprintf(t, "bne %+d", (int8_t)op1); break; + case (0x09): sprintf(t, "beq %+d", (int8_t)op1); break; + case (0x0a): sprintf(t, "bpl %+d", (int8_t)op1); break; + case (0x0b): sprintf(t, "bmi %+d", (int8_t)op1); break; + case (0x0c): sprintf(t, "bcc %+d", (int8_t)op1); break; + case (0x0d): sprintf(t, "bcs %+d", (int8_t)op1); break; + case (0x0e): sprintf(t, "bvc %+d", (int8_t)op1); break; + case (0x0f): sprintf(t, "bvs %+d", (int8_t)op1); break; + case16(0x10): sprintf(t, "to r%u", op0 & 15); break; + case16(0x20): sprintf(t, "with r%u", op0 & 15); break; + case12(0x30): sprintf(t, "stb (r%u)", op0 & 15); break; + case (0x3c): sprintf(t, "loop"); break; + case (0x3d): sprintf(t, "alt1"); break; + case (0x3e): sprintf(t, "alt2"); break; + case (0x3f): sprintf(t, "alt3"); break; + case12(0x40): sprintf(t, "ldb (r%u)", op0 & 15); break; + case (0x4c): sprintf(t, "rpix"); break; + case (0x4d): sprintf(t, "swap"); break; + case (0x4e): sprintf(t, "cmode"); break; + case (0x4f): sprintf(t, "not"); break; + case16(0x50): sprintf(t, "adc #%u", op0 & 15); break; + case16(0x60): sprintf(t, "cmp r%u", op0 & 15); break; + case (0x70): sprintf(t, "merge"); break; + case15(0x71): sprintf(t, "bic #%u", op0 & 15); break; + case16(0x80): sprintf(t, "umult #%u", op0 & 15); break; + case (0x90): sprintf(t, "sbk"); break; + case4 (0x91): sprintf(t, "link #%u", op0 & 15); break; + case (0x95): sprintf(t, "sex"); break; + case (0x96): sprintf(t, "div2"); break; + case (0x97): sprintf(t, "ror"); break; + case6 (0x98): sprintf(t, "ljmp r%u", op0 & 15); break; + case (0x9e): sprintf(t, "lob"); break; + case (0x9f): sprintf(t, "lmult"); break; + case16(0xa0): sprintf(t, "lms r%u", op0 & 15); break; + case16(0xb0): sprintf(t, "from r%u", op0 & 15); break; + case (0xc0): sprintf(t, "hib"); break; + case15(0xc1): sprintf(t, "xor #%u", op0 & 15); break; + case15(0xd0): sprintf(t, "inc r%u", op0 & 15); break; + case (0xdf): sprintf(t, "romb"); break; + case15(0xe0): sprintf(t, "dec r%u", op0 & 15); break; + case (0xef): sprintf(t, "getbs"); break; + case16(0xf0): sprintf(t, "lm r%u", op0 & 15); break; + } + strcat(output, t); +} + +#undef case4 +#undef case6 +#undef case12 +#undef case15 +#undef case16 +#undef op0 +#undef op1 +#undef op2 + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/disasm/disasm.hpp b/libmednahawk/src/snes/src/chip/superfx/disasm/disasm.hpp new file mode 100644 index 0000000000..76902f8176 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/disasm/disasm.hpp @@ -0,0 +1,5 @@ +void disassemble_opcode(char *output); +void disassemble_alt0(char *output); +void disassemble_alt1(char *output); +void disassemble_alt2(char *output); +void disassemble_alt3(char *output); diff --git a/libmednahawk/src/snes/src/chip/superfx/memory/memory.cpp b/libmednahawk/src/snes/src/chip/superfx/memory/memory.cpp new file mode 100644 index 0000000000..eefda9a34a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/memory/memory.cpp @@ -0,0 +1,71 @@ +#ifdef SUPERFX_CPP + +uint8 SuperFX::op_read(uint16 addr) { + uint16 offset = addr - regs.cbr; + if(offset < 512) { + if(cache.valid[offset >> 4] == false) { + unsigned dp = offset & 0xfff0; + unsigned sp = (regs.pbr << 16) + ((regs.cbr + dp) & 0xfff0); + for(unsigned n = 0; n < 16; n++) { + add_clocks(memory_access_speed); + cache.buffer[dp++] = superfxbus.read(sp++); + } + cache.valid[offset >> 4] = true; + } else { + add_clocks(cache_access_speed); + } + return cache.buffer[offset]; + } + + if(regs.pbr <= 0x5f) { + //$[00-5f]:[0000-ffff] ROM + rombuffer_sync(); + add_clocks(memory_access_speed); + return superfxbus.read((regs.pbr << 16) + addr); + } else { + //$[60-7f]:[0000-ffff] RAM + rambuffer_sync(); + add_clocks(memory_access_speed); + return superfxbus.read((regs.pbr << 16) + addr); + } +} + +uint8 SuperFX::peekpipe() { + uint8 result = regs.pipeline; + regs.pipeline = op_read(regs.r[15]); + r15_modified = false; + return result; +} + +uint8 SuperFX::pipe() { + uint8 result = regs.pipeline; + regs.pipeline = op_read(++regs.r[15]); + r15_modified = false; + return result; +} + +void SuperFX::cache_flush() { + for(unsigned n = 0; n < 32; n++) cache.valid[n] = false; +} + +uint8 SuperFX::cache_mmio_read(uint16 addr) { + addr = (addr + regs.cbr) & 511; + return cache.buffer[addr]; +} + +void SuperFX::cache_mmio_write(uint16 addr, uint8 data) { + addr = (addr + regs.cbr) & 511; + cache.buffer[addr] = data; + if((addr & 15) == 15) cache.valid[addr >> 4] = true; +} + +void SuperFX::memory_reset() { + for(unsigned n = 0; n < 512; n++) cache.buffer[n] = 0x00; + for(unsigned n = 0; n < 32; n++) cache.valid[n] = false; + for(unsigned n = 0; n < 2; n++) { + pixelcache[n].offset = ~0; + pixelcache[n].bitpend = 0x00; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/memory/memory.hpp b/libmednahawk/src/snes/src/chip/superfx/memory/memory.hpp new file mode 100644 index 0000000000..4e6f5d6aa2 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/memory/memory.hpp @@ -0,0 +1,9 @@ +uint8 op_read(uint16 addr); +alwaysinline uint8 peekpipe(); +alwaysinline uint8 pipe(); + +void cache_flush(); +uint8 cache_mmio_read(uint16 addr); +void cache_mmio_write(uint16 addr, uint8 data); + +void memory_reset(); diff --git a/libmednahawk/src/snes/src/chip/superfx/mmio/mmio.cpp b/libmednahawk/src/snes/src/chip/superfx/mmio/mmio.cpp new file mode 100644 index 0000000000..5c14fcd75d --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/mmio/mmio.cpp @@ -0,0 +1,118 @@ +#ifdef SUPERFX_CPP + +uint8 SuperFX::mmio_read(unsigned addr) { + scheduler.sync_cpucop(); + addr &= 0xffff; + + if(addr >= 0x3100 && addr <= 0x32ff) { + return cache_mmio_read(addr - 0x3100); + } + + if(addr >= 0x3000 && addr <= 0x301f) { + return regs.r[(addr >> 1) & 15] >> ((addr & 1) << 3); + } + + switch(addr) { + case 0x3030: { + return regs.sfr >> 0; + } + + case 0x3031: { + uint8 r = regs.sfr >> 8; + regs.sfr.irq = 0; + cpu.regs.irq = 0; + return r; + } + + case 0x3034: { + return regs.pbr; + } + + case 0x3036: { + return regs.rombr; + } + + case 0x303b: { + return regs.vcr; + } + + case 0x303c: { + return regs.rambr; + } + + case 0x303e: { + return regs.cbr >> 0; + } + + case 0x303f: { + return regs.cbr >> 8; + } + } + + return 0x00; +} + +void SuperFX::mmio_write(unsigned addr, uint8 data) { + scheduler.sync_cpucop(); + addr &= 0xffff; + + if(addr >= 0x3100 && addr <= 0x32ff) { + return cache_mmio_write(addr - 0x3100, data); + } + + if(addr >= 0x3000 && addr <= 0x301f) { + unsigned n = (addr >> 1) & 15; + if((addr & 1) == 0) { + regs.r[n] = (regs.r[n] & 0xff00) | data; + } else { + regs.r[n] = (data << 8) | (regs.r[n] & 0xff); + } + + if(addr == 0x301f) regs.sfr.g = 1; + return; + } + + switch(addr) { + case 0x3030: { + bool g = regs.sfr.g; + regs.sfr = (regs.sfr & 0xff00) | (data << 0); + if(g == 1 && regs.sfr.g == 0) { + regs.cbr = 0x0000; + cache_flush(); + } + } break; + + case 0x3031: { + regs.sfr = (data << 8) | (regs.sfr & 0x00ff); + } break; + + case 0x3033: { + regs.bramr = data; + } break; + + case 0x3034: { + regs.pbr = data & 0x7f; + cache_flush(); + } break; + + case 0x3037: { + regs.cfgr = data; + update_speed(); + } break; + + case 0x3038: { + regs.scbr = data; + } break; + + case 0x3039: { + regs.clsr = data; + update_speed(); + } break; + + case 0x303a: { + regs.scmr = data; + } break; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/mmio/mmio.hpp b/libmednahawk/src/snes/src/chip/superfx/mmio/mmio.hpp new file mode 100644 index 0000000000..ec5a3a5b4a --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/mmio/mmio.hpp @@ -0,0 +1,2 @@ +uint8 mmio_read(unsigned addr); +void mmio_write(unsigned addr, uint8 data); diff --git a/libmednahawk/src/snes/src/chip/superfx/serialization.cpp b/libmednahawk/src/snes/src/chip/superfx/serialization.cpp new file mode 100644 index 0000000000..405ff58d44 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/serialization.cpp @@ -0,0 +1,94 @@ +#ifdef SUPERFX_CPP + +void SuperFX::serialize(serializer &s) { + //superfx.hpp + s.integer(clockmode); + s.integer(instruction_counter); + + //core/registers.hpp + s.integer(regs.pipeline); + s.integer(regs.ramaddr); + + s.integer(regs.r[ 0].data); + s.integer(regs.r[ 1].data); + s.integer(regs.r[ 2].data); + s.integer(regs.r[ 3].data); + s.integer(regs.r[ 4].data); + s.integer(regs.r[ 5].data); + s.integer(regs.r[ 6].data); + s.integer(regs.r[ 7].data); + s.integer(regs.r[ 8].data); + s.integer(regs.r[ 9].data); + s.integer(regs.r[10].data); + s.integer(regs.r[11].data); + s.integer(regs.r[12].data); + s.integer(regs.r[13].data); + s.integer(regs.r[14].data); + s.integer(regs.r[15].data); + + s.integer(regs.sfr.irq); + s.integer(regs.sfr.b); + s.integer(regs.sfr.ih); + s.integer(regs.sfr.il); + s.integer(regs.sfr.alt2); + s.integer(regs.sfr.alt1); + s.integer(regs.sfr.r); + s.integer(regs.sfr.g); + s.integer(regs.sfr.ov); + s.integer(regs.sfr.s); + s.integer(regs.sfr.cy); + s.integer(regs.sfr.z); + + s.integer(regs.pbr); + s.integer(regs.rombr); + s.integer(regs.rambr); + s.integer(regs.cbr); + s.integer(regs.scbr); + + s.integer(regs.scmr.ht); + s.integer(regs.scmr.ron); + s.integer(regs.scmr.ran); + s.integer(regs.scmr.md); + + s.integer(regs.colr); + + s.integer(regs.por.obj); + s.integer(regs.por.freezehigh); + s.integer(regs.por.highnibble); + s.integer(regs.por.dither); + s.integer(regs.por.transparent); + + s.integer(regs.bramr); + s.integer(regs.vcr); + + s.integer(regs.cfgr.irq); + s.integer(regs.cfgr.ms0); + + s.integer(regs.clsr); + + s.integer(regs.romcl); + s.integer(regs.romdr); + + s.integer(regs.ramcl); + s.integer(regs.ramar); + s.integer(regs.ramdr); + + s.integer(regs.sreg); + s.integer(regs.dreg); + + s.array(cache.buffer); + s.array(cache.valid); + + for(unsigned i = 0; i < 2; i++) { + s.integer(pixelcache[i].offset); + s.integer(pixelcache[i].bitpend); + s.array(pixelcache[i].data); + } + + //timing/timing.hpp + s.integer(cache_access_speed); + s.integer(memory_access_speed); + s.integer(r15_modified); +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/superfx.cpp b/libmednahawk/src/snes/src/chip/superfx/superfx.cpp new file mode 100644 index 0000000000..50fb046cd6 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/superfx.cpp @@ -0,0 +1,79 @@ +#include <../base.hpp> + +#define SUPERFX_CPP +namespace SNES { + +#include "serialization.cpp" +#include "bus/bus.cpp" +#include "core/core.cpp" +#include "memory/memory.cpp" +#include "mmio/mmio.cpp" +#include "timing/timing.cpp" +#include "disasm/disasm.cpp" + +SuperFX superfx; + +void SuperFX::enter() { + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + if(regs.sfr.g == 0) { + add_clocks(6); + scheduler.sync_copcpu(); + continue; + } + + (this->*opcode_table[(regs.sfr & 0x0300) + peekpipe()])(); + if(r15_modified == false) regs.r[15]++; + + if(++instruction_counter >= 128) { + instruction_counter = 0; + scheduler.sync_copcpu(); + } + } +} + +void SuperFX::init() { + initialize_opcode_table(); + regs.r[14].on_modify = bind(&SuperFX::r14_modify, this); + regs.r[15].on_modify = bind(&SuperFX::r15_modify, this); +} + +void SuperFX::enable() { + for(unsigned i = 0x3000; i <= 0x32ff; i++) memory::mmio.map(i, *this); +} + +void SuperFX::power() { + clockmode = config.superfx.speed; + reset(); +} + +void SuperFX::reset() { + superfxbus.init(); + instruction_counter = 0; + + for(unsigned n = 0; n < 16; n++) regs.r[n] = 0x0000; + regs.sfr = 0x0000; + regs.pbr = 0x00; + regs.rombr = 0x00; + regs.rambr = 0; + regs.cbr = 0x0000; + regs.scbr = 0x00; + regs.scmr = 0x00; + regs.colr = 0x00; + regs.por = 0x00; + regs.bramr = 0; + regs.vcr = 0x04; + regs.cfgr = 0x00; + regs.clsr = 0; + regs.pipeline = 0x01; //nop + regs.ramaddr = 0x0000; + regs.reset(); + + memory_reset(); + timing_reset(); +} + +} diff --git a/libmednahawk/src/snes/src/chip/superfx/superfx.hpp b/libmednahawk/src/snes/src/chip/superfx/superfx.hpp new file mode 100644 index 0000000000..2e67e8d7f5 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/superfx.hpp @@ -0,0 +1,26 @@ +#include "bus/bus.hpp" + +class SuperFX : public MMIO { +public: + #include "core/core.hpp" + #include "memory/memory.hpp" + #include "mmio/mmio.hpp" + #include "timing/timing.hpp" + #include "disasm/disasm.hpp" + + void enter(); + + void init(); + void enable(); + void power(); + void reset(); + + void serialize(serializer&); + +private: + unsigned clockmode; + unsigned instruction_counter; +}; + +extern SuperFX superfx; +extern SuperFXBus superfxbus; diff --git a/libmednahawk/src/snes/src/chip/superfx/timing/timing.cpp b/libmednahawk/src/snes/src/chip/superfx/timing/timing.cpp new file mode 100644 index 0000000000..e0d6494609 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/timing/timing.cpp @@ -0,0 +1,97 @@ +#ifdef SUPERFX_CPP + +void SuperFX::add_clocks(unsigned clocks) { + if(regs.romcl) { + regs.romcl -= min(clocks, regs.romcl); + if(regs.romcl == 0) { + regs.sfr.r = 0; + regs.romdr = superfxbus.read((regs.rombr << 16) + regs.r[14]); + } + } + + if(regs.ramcl) { + regs.ramcl -= min(clocks, regs.ramcl); + if(regs.ramcl == 0) { + superfxbus.write(0x700000 + (regs.rambr << 16) + regs.ramar, regs.ramdr); + } + } + + scheduler.addclocks_cop(clocks); + scheduler.sync_copcpu(); +} + +void SuperFX::rombuffer_sync() { + if(regs.romcl) add_clocks(regs.romcl); +} + +void SuperFX::rombuffer_update() { + regs.sfr.r = 1; + regs.romcl = memory_access_speed; +} + +uint8 SuperFX::rombuffer_read() { + rombuffer_sync(); + return regs.romdr; +} + +void SuperFX::rambuffer_sync() { + if(regs.ramcl) add_clocks(regs.ramcl); +} + +uint8 SuperFX::rambuffer_read(uint16 addr) { + rambuffer_sync(); + return superfxbus.read(0x700000 + (regs.rambr << 16) + addr); +} + +void SuperFX::rambuffer_write(uint16 addr, uint8 data) { + rambuffer_sync(); + regs.ramcl = memory_access_speed; + regs.ramar = addr; + regs.ramdr = data; +} + +void SuperFX::r14_modify(uint16 data) { + regs.r[14].data = data; + rombuffer_update(); +} + +void SuperFX::r15_modify(uint16 data) { + regs.r[15].data = data; + r15_modified = true; +} + +void SuperFX::update_speed() { + //force SuperFX1 mode? + if(clockmode == 1) { + cache_access_speed = 2; + memory_access_speed = 6; + return; + } + + //force SuperFX2 mode? + if(clockmode == 2) { + cache_access_speed = 1; + memory_access_speed = 5; + regs.cfgr.ms0 = 0; //cannot use high-speed multiplication in 21MHz mode + return; + } + + //default: allow S-CPU to select mode + cache_access_speed = (regs.clsr ? 1 : 2); + memory_access_speed = (regs.clsr ? 5 : 6); + if(regs.clsr) regs.cfgr.ms0 = 0; //cannot use high-speed multiplication in 21MHz mode +} + +void SuperFX::timing_reset() { + update_speed(); + r15_modified = false; + + regs.romcl = 0; + regs.romdr = 0; + + regs.ramcl = 0; + regs.ramar = 0; + regs.ramdr = 0; +} + +#endif diff --git a/libmednahawk/src/snes/src/chip/superfx/timing/timing.hpp b/libmednahawk/src/snes/src/chip/superfx/timing/timing.hpp new file mode 100644 index 0000000000..099d43e8b1 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/superfx/timing/timing.hpp @@ -0,0 +1,19 @@ +unsigned cache_access_speed; +unsigned memory_access_speed; +bool r15_modified; + +void add_clocks(unsigned clocks); + +void rombuffer_sync(); +void rombuffer_update(); +uint8 rombuffer_read(); + +void rambuffer_sync(); +uint8 rambuffer_read(uint16 addr); +void rambuffer_write(uint16 addr, uint8 data); + +void r14_modify(uint16); +void r15_modify(uint16); + +void update_speed(); +void timing_reset(); diff --git a/libmednahawk/src/snes/src/chip/supergameboy/supergameboy.cpp b/libmednahawk/src/snes/src/chip/supergameboy/supergameboy.cpp new file mode 100644 index 0000000000..a9e36fced0 --- /dev/null +++ b/libmednahawk/src/snes/src/chip/supergameboy/supergameboy.cpp @@ -0,0 +1,140 @@ +#include <../base.hpp> + +#define SUPERGAMEBOY_CPP +namespace SNES { + +SuperGameBoy supergameboy; + +void SuperGameBoy::enter() { + scheduler.clock.cop_freq = (version == SuperGameBoy1 ? 2147727 : 2097152); + + if(!sgb_run) while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + audio.coprocessor_sample(0, 0); + scheduler.addclocks_cop(1); + scheduler.sync_copcpu(); + } + + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + unsigned samples = sgb_run(samplebuffer, 16); + for(unsigned i = 0; i < samples; i++) { + int16 left = samplebuffer[i] >> 0; + int16 right = samplebuffer[i] >> 16; + + //SNES audio is notoriously quiet; lower Game Boy samples to match SGB sound effects + audio.coprocessor_sample(left / 3, right / 3); + } + + scheduler.addclocks_cop(samples); + scheduler.sync_copcpu(); + } +} + +uint8 SuperGameBoy::mmio_read(unsigned addr) { + addr &= 0xffff; + + if(addr == 0x2181) return mmio[0]->mmio_read(addr); + if(addr == 0x2182) return mmio[1]->mmio_read(addr); + if(addr == 0x420b) return mmio[2]->mmio_read(addr); + + return 0x00; +} + +void SuperGameBoy::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + if(addr == 0x2181) { + row = (row & 0xff00) | (data << 0); + mmio[0]->mmio_write(addr, data); + } + + if(addr == 0x2182) { + row = (row & 0x00ff) | (data << 8); + mmio[1]->mmio_write(addr, data); + } + + if(addr == 0x420b) { + if(data == 0x10 && sgb_row) { + if(row >= 0x5000 && row <= 0x6540) sgb_row((row - 0x5000) / 320); + if(row >= 0x6800 && row <= 0x7d40) sgb_row((row - 0x6800) / 320); + } + mmio[2]->mmio_write(addr, data); + } +} + +uint8 SuperGameBoy::read(unsigned addr) { + if(sgb_read) return sgb_read(addr); + return 0x00; +} + +void SuperGameBoy::write(unsigned addr, uint8 data) { + if(sgb_write) sgb_write(addr, data); +} + +void SuperGameBoy::init() { + if(open("supergameboy")) { + sgb_rom = sym("sgb_rom"); + sgb_ram = sym("sgb_ram"); + sgb_rtc = sym("sgb_rtc"); + sgb_init = sym("sgb_init"); + sgb_term = sym("sgb_term"); + sgb_power = sym("sgb_power"); + sgb_reset = sym("sgb_reset"); + sgb_row = sym("sgb_row"); + sgb_read = sym("sgb_read"); + sgb_write = sym("sgb_write"); + sgb_run = sym("sgb_run"); + sgb_save = sym("sgb_save"); + sgb_serialize = sym("sgb_serialize"); + } +} + +void SuperGameBoy::enable() { + mmio[0] = memory::mmio.mmio[0x2181 - 0x2000]; + mmio[1] = memory::mmio.mmio[0x2182 - 0x2000]; + mmio[2] = memory::mmio.mmio[0x420b - 0x2000]; + + memory::mmio.map(0x2181, *this); + memory::mmio.map(0x2182, *this); + memory::mmio.map(0x420b, *this); +} + +void SuperGameBoy::power() { + version = (cartridge.type() == Cartridge::TypeSuperGameBoy1Bios ? SuperGameBoy1 : SuperGameBoy2); + + audio.coprocessor_enable(true); + audio.coprocessor_frequency(version == SuperGameBoy1 ? 2147727.0 : 2097152.0); + + bus.map(Bus::MapDirect, 0x00, 0x3f, 0x6000, 0x7fff, *this); + bus.map(Bus::MapDirect, 0x80, 0xbf, 0x6000, 0x7fff, *this); + + sgb_rom(memory::gbrom.data(), memory::gbrom.size() == -1U ? 0 : memory::gbrom.size()); + sgb_ram(memory::gbram.data(), memory::gbram.size() == -1U ? 0 : memory::gbram.size()); + sgb_rtc(memory::gbrtc.data(), memory::gbrtc.size() == -1U ? 0 : memory::gbrtc.size()); + + if(sgb_init) sgb_init(version); + if(sgb_power) sgb_power(); +} + +void SuperGameBoy::reset() { + if(sgb_reset) sgb_reset(); +} + +void SuperGameBoy::unload() { + if(sgb_term) sgb_term(); +} + +void SuperGameBoy::serialize(serializer &s) { + s.integer(row); + s.integer(version); + if(sgb_serialize) sgb_serialize(s); +} + +} diff --git a/libmednahawk/src/snes/src/chip/supergameboy/supergameboy.hpp b/libmednahawk/src/snes/src/chip/supergameboy/supergameboy.hpp new file mode 100644 index 0000000000..713511dfed --- /dev/null +++ b/libmednahawk/src/snes/src/chip/supergameboy/supergameboy.hpp @@ -0,0 +1,41 @@ +class SuperGameBoy : public MMIO, public Memory, public library { +public: + void enter(); + + MMIO *mmio[3]; + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + void init(); + void enable(); + void power(); + void reset(); + void unload(); + + void serialize(serializer&); + +private: + uint32_t samplebuffer[4096]; + unsigned row; + bool version; + + enum { SuperGameBoy1 = 0, SuperGameBoy2 = 1 }; + function sgb_rom; + function sgb_ram; + function sgb_rtc; + function sgb_init; + function sgb_term; + function sgb_power; + function sgb_reset; + function sgb_row; + function sgb_read; + function sgb_write; + function sgb_run; + function sgb_save; + function sgb_serialize; +}; + +extern SuperGameBoy supergameboy; diff --git a/libmednahawk/src/snes/src/clean.bat b/libmednahawk/src/snes/src/clean.bat new file mode 100644 index 0000000000..d8bb7e0b94 --- /dev/null +++ b/libmednahawk/src/snes/src/clean.bat @@ -0,0 +1 @@ +@mingw32-make clean diff --git a/libmednahawk/src/snes/src/cpu/core/algorithms.cpp b/libmednahawk/src/snes/src/cpu/core/algorithms.cpp new file mode 100644 index 0000000000..909af64600 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/algorithms.cpp @@ -0,0 +1,369 @@ +#ifdef CPUCORE_CPP + +inline void CPUcore::op_adc_b() { + int r; + if(regs.p.d) { + uint8 n0 = (regs.a.l ) & 15; + uint8 n1 = (regs.a.l >> 4) & 15; + n0 += (rd.l & 15) + regs.p.c; + if(n0 > 9) { + n0 = (n0 - 10) & 15; + n1++; + } + n1 += ((rd.l >> 4) & 15); + if(n1 > 9) { + n1 = (n1 - 10) & 15; + regs.p.c = 1; + } else { + regs.p.c = 0; + } + r = (n1 << 4) | n0; + } else { + r = regs.a.l + rd.l + regs.p.c; + regs.p.c = r > 0xff; + } + regs.p.n = r & 0x80; + regs.p.v = ~(regs.a.l ^ rd.l) & (regs.a.l ^ r) & 0x80; + regs.p.z = (uint8)r == 0; + regs.a.l = r; +} + +inline void CPUcore::op_adc_w() { + int r; + if(regs.p.d) { + uint8 n0 = (regs.a.w ) & 15; + uint8 n1 = (regs.a.w >> 4) & 15; + uint8 n2 = (regs.a.w >> 8) & 15; + uint8 n3 = (regs.a.w >> 12) & 15; + n0 += (rd.w & 15) + regs.p.c; + if(n0 > 9) { + n0 = (n0 - 10) & 15; + n1++; + } + n1 += ((rd.w >> 4) & 15); + if(n1 > 9) { + n1 = (n1 - 10) & 15; + n2++; + } + n2 += ((rd.w >> 8) & 15); + if(n2 > 9) { + n2 = (n2 - 10) & 15; + n3++; + } + n3 += ((rd.w >> 12) & 15); + if(n3 > 9) { + n3 = (n3 - 10) & 15; + regs.p.c = 1; + } else { + regs.p.c = 0; + } + r = (n3 << 12) | (n2 << 8) | (n1 << 4) | n0; + } else { + r = regs.a.w + rd.w + regs.p.c; + regs.p.c = r > 0xffff; + } + regs.p.n = r & 0x8000; + regs.p.v = ~(regs.a.w ^ rd.w) & (regs.a.w ^ r) & 0x8000; + regs.p.z = (uint16)r == 0; + regs.a.w = r; +} + +inline void CPUcore::op_and_b() { + regs.a.l &= rd.l; + regs.p.n = regs.a.l & 0x80; + regs.p.z = regs.a.l == 0; +} + +inline void CPUcore::op_and_w() { + regs.a.w &= rd.w; + regs.p.n = regs.a.w & 0x8000; + regs.p.z = regs.a.w == 0; +} + +inline void CPUcore::op_bit_b() { + regs.p.n = rd.l & 0x80; + regs.p.v = rd.l & 0x40; + regs.p.z = (rd.l & regs.a.l) == 0; +} + +inline void CPUcore::op_bit_w() { + regs.p.n = rd.w & 0x8000; + regs.p.v = rd.w & 0x4000; + regs.p.z = (rd.w & regs.a.w) == 0; +} + +inline void CPUcore::op_cmp_b() { + int r = regs.a.l - rd.l; + regs.p.n = r & 0x80; + regs.p.z = (uint8)r == 0; + regs.p.c = r >= 0; +} + +inline void CPUcore::op_cmp_w() { + int r = regs.a.w - rd.w; + regs.p.n = r & 0x8000; + regs.p.z = (uint16)r == 0; + regs.p.c = r >= 0; +} + +inline void CPUcore::op_cpx_b() { + int r = regs.x.l - rd.l; + regs.p.n = r & 0x80; + regs.p.z = (uint8)r == 0; + regs.p.c = r >= 0; +} + +inline void CPUcore::op_cpx_w() { + int r = regs.x.w - rd.w; + regs.p.n = r & 0x8000; + regs.p.z = (uint16)r == 0; + regs.p.c = r >= 0; +} + +inline void CPUcore::op_cpy_b() { + int r = regs.y.l - rd.l; + regs.p.n = r & 0x80; + regs.p.z = (uint8)r == 0; + regs.p.c = r >= 0; +} + +inline void CPUcore::op_cpy_w() { + int r = regs.y.w - rd.w; + regs.p.n = r & 0x8000; + regs.p.z = (uint16)r == 0; + regs.p.c = r >= 0; +} + +inline void CPUcore::op_eor_b() { + regs.a.l ^= rd.l; + regs.p.n = regs.a.l & 0x80; + regs.p.z = regs.a.l == 0; +} + +inline void CPUcore::op_eor_w() { + regs.a.w ^= rd.w; + regs.p.n = regs.a.w & 0x8000; + regs.p.z = regs.a.w == 0; +} + +inline void CPUcore::op_lda_b() { + regs.a.l = rd.l; + regs.p.n = regs.a.l & 0x80; + regs.p.z = regs.a.l == 0; +} + +inline void CPUcore::op_lda_w() { + regs.a.w = rd.w; + regs.p.n = regs.a.w & 0x8000; + regs.p.z = regs.a.w == 0; +} + +inline void CPUcore::op_ldx_b() { + regs.x.l = rd.l; + regs.p.n = regs.x.l & 0x80; + regs.p.z = regs.x.l == 0; +} + +inline void CPUcore::op_ldx_w() { + regs.x.w = rd.w; + regs.p.n = regs.x.w & 0x8000; + regs.p.z = regs.x.w == 0; +} + +inline void CPUcore::op_ldy_b() { + regs.y.l = rd.l; + regs.p.n = regs.y.l & 0x80; + regs.p.z = regs.y.l == 0; +} + +inline void CPUcore::op_ldy_w() { + regs.y.w = rd.w; + regs.p.n = regs.y.w & 0x8000; + regs.p.z = regs.y.w == 0; +} + +inline void CPUcore::op_ora_b() { + regs.a.l |= rd.l; + regs.p.n = regs.a.l & 0x80; + regs.p.z = regs.a.l == 0; +} + +inline void CPUcore::op_ora_w() { + regs.a.w |= rd.w; + regs.p.n = regs.a.w & 0x8000; + regs.p.z = regs.a.w == 0; +} + +inline void CPUcore::op_sbc_b() { + int r; + if(regs.p.d) { + uint8 n0 = (regs.a.l ) & 15; + uint8 n1 = (regs.a.l >> 4) & 15; + n0 -= ((rd.l ) & 15) + !regs.p.c; + n1 -= ((rd.l >> 4) & 15); + if(n0 > 9) { + n0 += 10; + n1--; + } + if(n1 > 9) { + n1 += 10; + regs.p.c = 0; + } else { + regs.p.c = 1; + } + r = (n1 << 4) | (n0); + } else { + r = regs.a.l - rd.l - !regs.p.c; + regs.p.c = r >= 0; + } + regs.p.n = r & 0x80; + regs.p.v = (regs.a.l ^ rd.l) & (regs.a.l ^ r) & 0x80; + regs.p.z = (uint8)r == 0; + regs.a.l = r; +} + +inline void CPUcore::op_sbc_w() { + int r; + if(regs.p.d) { + uint8 n0 = (regs.a.w ) & 15; + uint8 n1 = (regs.a.w >> 4) & 15; + uint8 n2 = (regs.a.w >> 8) & 15; + uint8 n3 = (regs.a.w >> 12) & 15; + n0 -= ((rd.w ) & 15) + !regs.p.c; + n1 -= ((rd.w >> 4) & 15); + n2 -= ((rd.w >> 8) & 15); + n3 -= ((rd.w >> 12) & 15); + if(n0 > 9) { + n0 += 10; + n1--; + } + if(n1 > 9) { + n1 += 10; + n2--; + } + if(n2 > 9) { + n2 += 10; + n3--; + } + if(n3 > 9) { + n3 += 10; + regs.p.c = 0; + } else { + regs.p.c = 1; + } + r = (n3 << 12) | (n2 << 8) | (n1 << 4) | (n0); + } else { + r = regs.a.w - rd.w - !regs.p.c; + regs.p.c = r >= 0; + } + regs.p.n = r & 0x8000; + regs.p.v = (regs.a.w ^ rd.w) & (regs.a.w ^ r) & 0x8000; + regs.p.z = (uint16)r == 0; + regs.a.w = r; +} + +inline void CPUcore::op_inc_b() { + rd.l++; + regs.p.n = rd.l & 0x80; + regs.p.z = rd.l == 0; +} + +inline void CPUcore::op_inc_w() { + rd.w++; + regs.p.n = rd.w & 0x8000; + regs.p.z = rd.w == 0; +} + +inline void CPUcore::op_dec_b() { + rd.l--; + regs.p.n = rd.l & 0x80; + regs.p.z = rd.l == 0; +} + +inline void CPUcore::op_dec_w() { + rd.w--; + regs.p.n = rd.w & 0x8000; + regs.p.z = rd.w == 0; +} + +inline void CPUcore::op_asl_b() { + regs.p.c = rd.l & 0x80; + rd.l <<= 1; + regs.p.n = rd.l & 0x80; + regs.p.z = rd.l == 0; +} + +inline void CPUcore::op_asl_w() { + regs.p.c = rd.w & 0x8000; + rd.w <<= 1; + regs.p.n = rd.w & 0x8000; + regs.p.z = rd.w == 0; +} + +inline void CPUcore::op_lsr_b() { + regs.p.c = rd.l & 1; + rd.l >>= 1; + regs.p.n = rd.l & 0x80; + regs.p.z = rd.l == 0; +} + +inline void CPUcore::op_lsr_w() { + regs.p.c = rd.w & 1; + rd.w >>= 1; + regs.p.n = rd.w & 0x8000; + regs.p.z = rd.w == 0; +} + +inline void CPUcore::op_rol_b() { + unsigned carry = (unsigned)regs.p.c; + regs.p.c = rd.l & 0x80; + rd.l = (rd.l << 1) | carry; + regs.p.n = rd.l & 0x80; + regs.p.z = rd.l == 0; +} + +inline void CPUcore::op_rol_w() { + unsigned carry = (unsigned)regs.p.c; + regs.p.c = rd.w & 0x8000; + rd.w = (rd.w << 1) | carry; + regs.p.n = rd.w & 0x8000; + regs.p.z = rd.w == 0; +} + +inline void CPUcore::op_ror_b() { + unsigned carry = (unsigned)regs.p.c << 7; + regs.p.c = rd.l & 1; + rd.l = carry | (rd.l >> 1); + regs.p.n = rd.l & 0x80; + regs.p.z = rd.l == 0; +} + +inline void CPUcore::op_ror_w() { + unsigned carry = (unsigned)regs.p.c << 15; + regs.p.c = rd.w & 1; + rd.w = carry | (rd.w >> 1); + regs.p.n = rd.w & 0x8000; + regs.p.z = rd.w == 0; +} + +inline void CPUcore::op_trb_b() { + regs.p.z = (rd.l & regs.a.l) == 0; + rd.l &= ~regs.a.l; +} + +inline void CPUcore::op_trb_w() { + regs.p.z = (rd.w & regs.a.w) == 0; + rd.w &= ~regs.a.w; +} + +inline void CPUcore::op_tsb_b() { + regs.p.z = (rd.l & regs.a.l) == 0; + rd.l |= regs.a.l; +} + +inline void CPUcore::op_tsb_w() { + regs.p.z = (rd.w & regs.a.w) == 0; + rd.w |= regs.a.w; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/core.cpp b/libmednahawk/src/snes/src/cpu/core/core.cpp new file mode 100644 index 0000000000..07c320618b --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/core.cpp @@ -0,0 +1,74 @@ +#include <../base.hpp> + +#define CPUCORE_CPP +namespace SNES { + +#include "serialization.cpp" +#include "algorithms.cpp" +#include "disassembler/disassembler.cpp" + +#define L last_cycle(); +#define A 0 +#define X 1 +#define Y 2 +#define Z 3 +#define S 4 +#define D 5 +#define call(op) (this->*op)() + +#include "opcode_read.cpp" +#include "opcode_write.cpp" +#include "opcode_rmw.cpp" +#include "opcode_pc.cpp" +#include "opcode_misc.cpp" +#include "table.cpp" + +#undef L +#undef A +#undef X +#undef Y +#undef Z +#undef S +#undef D +#undef call + +//immediate, 2-cycle opcodes with I/O cycle will become bus read +//when an IRQ is to be triggered immediately after opcode completion. +//this affects the following opcodes: +// clc, cld, cli, clv, sec, sed, sei, +// tax, tay, txa, txy, tya, tyx, +// tcd, tcs, tdc, tsc, tsx, txs, +// inc, inx, iny, dec, dex, dey, +// asl, lsr, rol, ror, nop, xce. +alwaysinline void CPUcore::op_io_irq() { + if(interrupt_pending()) { + //modify I/O cycle to bus read cycle, do not increment PC + op_read(regs.pc.d); + } else { + op_io(); + } +} + +alwaysinline void CPUcore::op_io_cond2() { + if(regs.d.l != 0x00) { + op_io(); + } +} + +alwaysinline void CPUcore::op_io_cond4(uint16 x, uint16 y) { + if(!regs.p.x || (x & 0xff00) != (y & 0xff00)) { + op_io(); + } +} + +alwaysinline void CPUcore::op_io_cond6(uint16 addr) { + if(regs.e && (regs.pc.w & 0xff00) != (addr & 0xff00)) { + op_io(); + } +} + +CPUcore::CPUcore() { + initialize_opcode_table(); +} + +}; diff --git a/libmednahawk/src/snes/src/cpu/core/core.hpp b/libmednahawk/src/snes/src/cpu/core/core.hpp new file mode 100644 index 0000000000..b89b92a049 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/core.hpp @@ -0,0 +1,219 @@ +class CPUcore { +public: + #include "registers.hpp" + #include "memory.hpp" + #include "disassembler/disassembler.hpp" + + regs_t regs; + reg24_t aa, rd; + uint8_t sp, dp; + + virtual void op_io() = 0; + virtual uint8_t op_read(uint32_t addr) = 0; + virtual void op_write(uint32_t addr, uint8_t data) = 0; + virtual void last_cycle() = 0; + virtual bool interrupt_pending() = 0; + + void op_io_irq(); + void op_io_cond2(); + void op_io_cond4(uint16 x, uint16 y); + void op_io_cond6(uint16 addr); + + void op_adc_b(); + void op_adc_w(); + void op_and_b(); + void op_and_w(); + void op_bit_b(); + void op_bit_w(); + void op_cmp_b(); + void op_cmp_w(); + void op_cpx_b(); + void op_cpx_w(); + void op_cpy_b(); + void op_cpy_w(); + void op_eor_b(); + void op_eor_w(); + void op_lda_b(); + void op_lda_w(); + void op_ldx_b(); + void op_ldx_w(); + void op_ldy_b(); + void op_ldy_w(); + void op_ora_b(); + void op_ora_w(); + void op_sbc_b(); + void op_sbc_w(); + + void op_inc_b(); + void op_inc_w(); + void op_dec_b(); + void op_dec_w(); + void op_asl_b(); + void op_asl_w(); + void op_lsr_b(); + void op_lsr_w(); + void op_rol_b(); + void op_rol_w(); + void op_ror_b(); + void op_ror_w(); + void op_trb_b(); + void op_trb_w(); + void op_tsb_b(); + void op_tsb_w(); + + template void op_read_const_b(); + template void op_read_const_w(); + void op_read_bit_const_b(); + void op_read_bit_const_w(); + template void op_read_addr_b(); + template void op_read_addr_w(); + template void op_read_addrx_b(); + template void op_read_addrx_w(); + template void op_read_addry_b(); + template void op_read_addry_w(); + template void op_read_long_b(); + template void op_read_long_w(); + template void op_read_longx_b(); + template void op_read_longx_w(); + template void op_read_dp_b(); + template void op_read_dp_w(); + template void op_read_dpr_b(); + template void op_read_dpr_w(); + template void op_read_idp_b(); + template void op_read_idp_w(); + template void op_read_idpx_b(); + template void op_read_idpx_w(); + template void op_read_idpy_b(); + template void op_read_idpy_w(); + template void op_read_ildp_b(); + template void op_read_ildp_w(); + template void op_read_ildpy_b(); + template void op_read_ildpy_w(); + template void op_read_sr_b(); + template void op_read_sr_w(); + template void op_read_isry_b(); + template void op_read_isry_w(); + + template void op_write_addr_b(); + template void op_write_addr_w(); + template void op_write_addrr_b(); + template void op_write_addrr_w(); + template void op_write_longr_b(); + template void op_write_longr_w(); + template void op_write_dp_b(); + template void op_write_dp_w(); + template void op_write_dpr_b(); + template void op_write_dpr_w(); + void op_sta_idp_b(); + void op_sta_idp_w(); + void op_sta_ildp_b(); + void op_sta_ildp_w(); + void op_sta_idpx_b(); + void op_sta_idpx_w(); + void op_sta_idpy_b(); + void op_sta_idpy_w(); + void op_sta_ildpy_b(); + void op_sta_ildpy_w(); + void op_sta_sr_b(); + void op_sta_sr_w(); + void op_sta_isry_b(); + void op_sta_isry_w(); + + template void op_adjust_imm_b(); + template void op_adjust_imm_w(); + void op_asl_imm_b(); + void op_asl_imm_w(); + void op_lsr_imm_b(); + void op_lsr_imm_w(); + void op_rol_imm_b(); + void op_rol_imm_w(); + void op_ror_imm_b(); + void op_ror_imm_w(); + template void op_adjust_addr_b(); + template void op_adjust_addr_w(); + template void op_adjust_addrx_b(); + template void op_adjust_addrx_w(); + template void op_adjust_dp_b(); + template void op_adjust_dp_w(); + template void op_adjust_dpx_b(); + template void op_adjust_dpx_w(); + + template void op_branch(); + void op_bra(); + void op_brl(); + void op_jmp_addr(); + void op_jmp_long(); + void op_jmp_iaddr(); + void op_jmp_iaddrx(); + void op_jmp_iladdr(); + void op_jsr_addr(); + void op_jsr_long_e(); + void op_jsr_long_n(); + void op_jsr_iaddrx_e(); + void op_jsr_iaddrx_n(); + void op_rti_e(); + void op_rti_n(); + void op_rts(); + void op_rtl_e(); + void op_rtl_n(); + + void op_nop(); + void op_wdm(); + void op_xba(); + template void op_move_b(); + template void op_move_w(); + template void op_interrupt_e(); + template void op_interrupt_n(); + void op_stp(); + void op_wai(); + void op_xce(); + template void op_flag(); + template void op_pflag_e(); + template void op_pflag_n(); + template void op_transfer_b(); + template void op_transfer_w(); + void op_tcs_e(); + void op_tcs_n(); + void op_tsc_e(); + void op_tsc_n(); + void op_tsx_b(); + void op_tsx_w(); + void op_txs_e(); + void op_txs_n(); + template void op_push_b(); + template void op_push_w(); + void op_phd_e(); + void op_phd_n(); + void op_phb(); + void op_phk(); + void op_php(); + template void op_pull_b(); + template void op_pull_w(); + void op_pld_e(); + void op_pld_n(); + void op_plb(); + void op_plp_e(); + void op_plp_n(); + void op_pea_e(); + void op_pea_n(); + void op_pei_e(); + void op_pei_n(); + void op_per_e(); + void op_per_n(); + + void (CPUcore::**opcode_table)(); + void (CPUcore::*op_table[256 * 5])(); + void initialize_opcode_table(); + void update_table(); + + enum { + table_EM = 0, // 8-bit accumulator, 8-bit index (emulation mode) + table_MX = 256, // 8-bit accumulator, 8-bit index + table_Mx = 512, // 8-bit accumulator, 16-bit index + table_mX = 768, //16-bit accumulator, 8-bit index + table_mx = 1024, //16-bit accumulator, 16-bit index + }; + + void core_serialize(serializer&); + CPUcore(); +}; diff --git a/libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.cpp b/libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.cpp new file mode 100644 index 0000000000..da6a8421c0 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.cpp @@ -0,0 +1,483 @@ +#ifdef CPUCORE_CPP + +uint8 CPUcore::dreadb(uint32 addr) { + if((addr & 0x40ffff) >= 0x2000 && (addr & 0x40ffff) <= 0x5fff) { + //$[00-3f|80-bf]:[2000-5fff] + //do not read MMIO registers within debugger + return 0x00; + } + return bus.read(addr); +} + +uint16 CPUcore::dreadw(uint32 addr) { + uint16 r; + r = dreadb((addr + 0) & 0xffffff) << 0; + r |= dreadb((addr + 1) & 0xffffff) << 8; + return r; +} + +uint32 CPUcore::dreadl(uint32 addr) { + uint32 r; + r = dreadb((addr + 0) & 0xffffff) << 0; + r |= dreadb((addr + 1) & 0xffffff) << 8; + r |= dreadb((addr + 2) & 0xffffff) << 16; + return r; +} + +uint32 CPUcore::decode(uint8 offset_type, uint32 addr) { + uint32 r = 0; + + switch(offset_type) { + case OPTYPE_DP: + r = (regs.d + (addr & 0xffff)) & 0xffff; + break; + case OPTYPE_DPX: + r = (regs.d + regs.x + (addr & 0xffff)) & 0xffff; + break; + case OPTYPE_DPY: + r = (regs.d + regs.y + (addr & 0xffff)) & 0xffff; + break; + case OPTYPE_IDP: + addr = (regs.d + (addr & 0xffff)) & 0xffff; + r = (regs.db << 16) + dreadw(addr); + break; + case OPTYPE_IDPX: + addr = (regs.d + regs.x + (addr & 0xffff)) & 0xffff; + r = (regs.db << 16) + dreadw(addr); + break; + case OPTYPE_IDPY: + addr = (regs.d + (addr & 0xffff)) & 0xffff; + r = (regs.db << 16) + dreadw(addr) + regs.y; + break; + case OPTYPE_ILDP: + addr = (regs.d + (addr & 0xffff)) & 0xffff; + r = dreadl(addr); + break; + case OPTYPE_ILDPY: + addr = (regs.d + (addr & 0xffff)) & 0xffff; + r = dreadl(addr) + regs.y; + break; + case OPTYPE_ADDR: + r = (regs.db << 16) + (addr & 0xffff); + break; + case OPTYPE_ADDR_PC: + r = (regs.pc.b << 16) + (addr & 0xffff); + break; + case OPTYPE_ADDRX: + r = (regs.db << 16) + (addr & 0xffff) + regs.x; + break; + case OPTYPE_ADDRY: + r = (regs.db << 16) + (addr & 0xffff) + regs.y; + break; + case OPTYPE_IADDR_PC: + r = (regs.pc.b << 16) + (addr & 0xffff); + break; + case OPTYPE_IADDRX: + r = (regs.pc.b << 16) + ((addr + regs.x) & 0xffff); + break; + case OPTYPE_ILADDR: + r = addr; + break; + case OPTYPE_LONG: + r = addr; + break; + case OPTYPE_LONGX: + r = (addr + regs.x); + break; + case OPTYPE_SR: + r = (regs.s + (addr & 0xff)) & 0xffff; + break; + case OPTYPE_ISRY: + addr = (regs.s + (addr & 0xff)) & 0xffff; + r = (regs.db << 16) + dreadw(addr) + regs.y; + break; + case OPTYPE_RELB: + r = (regs.pc.b << 16) + ((regs.pc.w + 2) & 0xffff); + r += int8(addr); + break; + case OPTYPE_RELW: + r = (regs.pc.b << 16) + ((regs.pc.w + 3) & 0xffff); + r += int16(addr); + break; + } + + return(r & 0xffffff); +} + +void CPUcore::disassemble_opcode(char *output, uint32 addr) { + static reg24_t pc; + char t[256]; + char *s = output; + + if(false /* in_opcode() == true */) { + strcpy(s, "?????? "); + return; + } + + pc.d = addr; + sprintf(s, "%.6x ", (uint32)pc.d); + + uint8 op = dreadb(pc.d); pc.w++; + uint8 op0 = dreadb(pc.d); pc.w++; + uint8 op1 = dreadb(pc.d); pc.w++; + uint8 op2 = dreadb(pc.d); + + #define op8 ((op0)) + #define op16 ((op0) | (op1 << 8)) + #define op24 ((op0) | (op1 << 8) | (op2 << 16)) + #define a8 (regs.e || regs.p.m) + #define x8 (regs.e || regs.p.x) + + switch(op) { + case 0x00: sprintf(t, "brk #$%.2x ", op8); break; + case 0x01: sprintf(t, "ora ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0x02: sprintf(t, "cop #$%.2x ", op8); break; + case 0x03: sprintf(t, "ora $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0x04: sprintf(t, "tsb $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x05: sprintf(t, "ora $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x06: sprintf(t, "asl $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x07: sprintf(t, "ora [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0x08: sprintf(t, "php "); break; + case 0x09: if(a8)sprintf(t, "ora #$%.2x ", op8); + else sprintf(t, "ora #$%.4x ", op16); break; + case 0x0a: sprintf(t, "asl a "); break; + case 0x0b: sprintf(t, "phd "); break; + case 0x0c: sprintf(t, "tsb $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x0d: sprintf(t, "ora $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x0e: sprintf(t, "asl $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x0f: sprintf(t, "ora $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x10: sprintf(t, "bpl $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0x11: sprintf(t, "ora ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0x12: sprintf(t, "ora ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0x13: sprintf(t, "ora ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0x14: sprintf(t, "trb $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x15: sprintf(t, "ora $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x16: sprintf(t, "asl $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x17: sprintf(t, "ora [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0x18: sprintf(t, "clc "); break; + case 0x19: sprintf(t, "ora $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0x1a: sprintf(t, "inc "); break; + case 0x1b: sprintf(t, "tcs "); break; + case 0x1c: sprintf(t, "trb $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x1d: sprintf(t, "ora $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x1e: sprintf(t, "asl $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x1f: sprintf(t, "ora $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0x20: sprintf(t, "jsr $%.4x [%.6x]", op16, decode(OPTYPE_ADDR_PC, op16)); break; + case 0x21: sprintf(t, "and ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0x22: sprintf(t, "jsl $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x23: sprintf(t, "and $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0x24: sprintf(t, "bit $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x25: sprintf(t, "and $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x26: sprintf(t, "rol $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x27: sprintf(t, "and [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0x28: sprintf(t, "plp "); break; + case 0x29: if(a8)sprintf(t, "and #$%.2x ", op8); + else sprintf(t, "and #$%.4x ", op16); break; + case 0x2a: sprintf(t, "rol a "); break; + case 0x2b: sprintf(t, "pld "); break; + case 0x2c: sprintf(t, "bit $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x2d: sprintf(t, "and $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x2e: sprintf(t, "rol $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x2f: sprintf(t, "and $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x30: sprintf(t, "bmi $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0x31: sprintf(t, "and ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0x32: sprintf(t, "and ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0x33: sprintf(t, "and ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0x34: sprintf(t, "bit $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x35: sprintf(t, "and $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x36: sprintf(t, "rol $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x37: sprintf(t, "and [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0x38: sprintf(t, "sec "); break; + case 0x39: sprintf(t, "and $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0x3a: sprintf(t, "dec "); break; + case 0x3b: sprintf(t, "tsc "); break; + case 0x3c: sprintf(t, "bit $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x3d: sprintf(t, "and $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x3e: sprintf(t, "rol $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x3f: sprintf(t, "and $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0x40: sprintf(t, "rti "); break; + case 0x41: sprintf(t, "eor ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0x42: sprintf(t, "wdm "); break; + case 0x43: sprintf(t, "eor $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0x44: sprintf(t, "mvp $%.2x,$%.2x ", op1, op8); break; + case 0x45: sprintf(t, "eor $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x46: sprintf(t, "lsr $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x47: sprintf(t, "eor [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0x48: sprintf(t, "pha "); break; + case 0x49: if(a8)sprintf(t, "eor #$%.2x ", op8); + else sprintf(t, "eor #$%.4x ", op16); break; + case 0x4a: sprintf(t, "lsr a "); break; + case 0x4b: sprintf(t, "phk "); break; + case 0x4c: sprintf(t, "jmp $%.4x [%.6x]", op16, decode(OPTYPE_ADDR_PC, op16)); break; + case 0x4d: sprintf(t, "eor $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x4e: sprintf(t, "lsr $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x4f: sprintf(t, "eor $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x50: sprintf(t, "bvc $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0x51: sprintf(t, "eor ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0x52: sprintf(t, "eor ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0x53: sprintf(t, "eor ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0x54: sprintf(t, "mvn $%.2x,$%.2x ", op1, op8); break; + case 0x55: sprintf(t, "eor $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x56: sprintf(t, "lsr $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x57: sprintf(t, "eor [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0x58: sprintf(t, "cli "); break; + case 0x59: sprintf(t, "eor $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0x5a: sprintf(t, "phy "); break; + case 0x5b: sprintf(t, "tcd "); break; + case 0x5c: sprintf(t, "jml $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x5d: sprintf(t, "eor $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x5e: sprintf(t, "lsr $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x5f: sprintf(t, "eor $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0x60: sprintf(t, "rts "); break; + case 0x61: sprintf(t, "adc ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0x62: sprintf(t, "per $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x63: sprintf(t, "adc $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0x64: sprintf(t, "stz $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x65: sprintf(t, "adc $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x66: sprintf(t, "ror $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x67: sprintf(t, "adc [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0x68: sprintf(t, "pla "); break; + case 0x69: if(a8)sprintf(t, "adc #$%.2x ", op8); + else sprintf(t, "adc #$%.4x ", op16); break; + case 0x6a: sprintf(t, "ror a "); break; + case 0x6b: sprintf(t, "rtl "); break; + case 0x6c: sprintf(t, "jmp ($%.4x) [%.6x]", op16, decode(OPTYPE_IADDR_PC, op16)); break; + case 0x6d: sprintf(t, "adc $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x6e: sprintf(t, "ror $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x6f: sprintf(t, "adc $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x70: sprintf(t, "bvs $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0x71: sprintf(t, "adc ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0x72: sprintf(t, "adc ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0x73: sprintf(t, "adc ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0x74: sprintf(t, "stz $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x75: sprintf(t, "adc $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x76: sprintf(t, "ror $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x77: sprintf(t, "adc [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0x78: sprintf(t, "sei "); break; + case 0x79: sprintf(t, "adc $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0x7a: sprintf(t, "ply "); break; + case 0x7b: sprintf(t, "tdc "); break; + case 0x7c: sprintf(t, "jmp ($%.4x,x) [%.6x]", op16, decode(OPTYPE_IADDRX, op16)); break; + case 0x7d: sprintf(t, "adc $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x7e: sprintf(t, "ror $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x7f: sprintf(t, "adc $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0x80: sprintf(t, "bra $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0x81: sprintf(t, "sta ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0x82: sprintf(t, "brl $%.4x [%.6x]", uint16(decode(OPTYPE_RELW, op16)), decode(OPTYPE_RELW, op16)); break; + case 0x83: sprintf(t, "sta $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0x84: sprintf(t, "sty $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x85: sprintf(t, "sta $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x86: sprintf(t, "stx $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0x87: sprintf(t, "sta [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0x88: sprintf(t, "dey "); break; + case 0x89: if(a8)sprintf(t, "bit #$%.2x ", op8); + else sprintf(t, "bit #$%.4x ", op16); break; + case 0x8a: sprintf(t, "txa "); break; + case 0x8b: sprintf(t, "phb "); break; + case 0x8c: sprintf(t, "sty $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x8d: sprintf(t, "sta $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x8e: sprintf(t, "stx $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x8f: sprintf(t, "sta $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0x90: sprintf(t, "bcc $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0x91: sprintf(t, "sta ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0x92: sprintf(t, "sta ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0x93: sprintf(t, "sta ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0x94: sprintf(t, "sty $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x95: sprintf(t, "sta $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0x96: sprintf(t, "stx $%.2x,y [%.6x]", op8, decode(OPTYPE_DPY, op8)); break; + case 0x97: sprintf(t, "sta [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0x98: sprintf(t, "tya "); break; + case 0x99: sprintf(t, "sta $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0x9a: sprintf(t, "txs "); break; + case 0x9b: sprintf(t, "txy "); break; + case 0x9c: sprintf(t, "stz $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0x9d: sprintf(t, "sta $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x9e: sprintf(t, "stz $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0x9f: sprintf(t, "sta $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0xa0: if(x8)sprintf(t, "ldy #$%.2x ", op8); + else sprintf(t, "ldy #$%.4x ", op16); break; + case 0xa1: sprintf(t, "lda ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0xa2: if(x8)sprintf(t, "ldx #$%.2x ", op8); + else sprintf(t, "ldx #$%.4x ", op16); break; + case 0xa3: sprintf(t, "lda $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0xa4: sprintf(t, "ldy $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xa5: sprintf(t, "lda $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xa6: sprintf(t, "ldx $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xa7: sprintf(t, "lda [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0xa8: sprintf(t, "tay "); break; + case 0xa9: if(a8)sprintf(t, "lda #$%.2x ", op8); + else sprintf(t, "lda #$%.4x ", op16); break; + case 0xaa: sprintf(t, "tax "); break; + case 0xab: sprintf(t, "plb "); break; + case 0xac: sprintf(t, "ldy $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xad: sprintf(t, "lda $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xae: sprintf(t, "ldx $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xaf: sprintf(t, "lda $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0xb0: sprintf(t, "bcs $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0xb1: sprintf(t, "lda ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0xb2: sprintf(t, "lda ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0xb3: sprintf(t, "lda ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0xb4: sprintf(t, "ldy $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0xb5: sprintf(t, "lda $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0xb6: sprintf(t, "ldx $%.2x,y [%.6x]", op8, decode(OPTYPE_DPY, op8)); break; + case 0xb7: sprintf(t, "lda [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0xb8: sprintf(t, "clv "); break; + case 0xb9: sprintf(t, "lda $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0xba: sprintf(t, "tsx "); break; + case 0xbb: sprintf(t, "tyx "); break; + case 0xbc: sprintf(t, "ldy $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0xbd: sprintf(t, "lda $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0xbe: sprintf(t, "ldx $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0xbf: sprintf(t, "lda $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0xc0: if(x8)sprintf(t, "cpy #$%.2x ", op8); + else sprintf(t, "cpy #$%.4x ", op16); break; + case 0xc1: sprintf(t, "cmp ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0xc2: sprintf(t, "rep #$%.2x ", op8); break; + case 0xc3: sprintf(t, "cmp $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0xc4: sprintf(t, "cpy $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xc5: sprintf(t, "cmp $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xc6: sprintf(t, "dec $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xc7: sprintf(t, "cmp [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0xc8: sprintf(t, "iny "); break; + case 0xc9: if(a8)sprintf(t, "cmp #$%.2x ", op8); + else sprintf(t, "cmp #$%.4x ", op16); break; + case 0xca: sprintf(t, "dex "); break; + case 0xcb: sprintf(t, "wai "); break; + case 0xcc: sprintf(t, "cpy $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xcd: sprintf(t, "cmp $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xce: sprintf(t, "dec $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xcf: sprintf(t, "cmp $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0xd0: sprintf(t, "bne $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0xd1: sprintf(t, "cmp ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0xd2: sprintf(t, "cmp ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0xd3: sprintf(t, "cmp ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0xd4: sprintf(t, "pei ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0xd5: sprintf(t, "cmp $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0xd6: sprintf(t, "dec $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0xd7: sprintf(t, "cmp [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0xd8: sprintf(t, "cld "); break; + case 0xd9: sprintf(t, "cmp $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0xda: sprintf(t, "phx "); break; + case 0xdb: sprintf(t, "stp "); break; + case 0xdc: sprintf(t, "jmp [$%.4x] [%.6x]", op16, decode(OPTYPE_ILADDR, op16)); break; + case 0xdd: sprintf(t, "cmp $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0xde: sprintf(t, "dec $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0xdf: sprintf(t, "cmp $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + case 0xe0: if(x8)sprintf(t, "cpx #$%.2x ", op8); + else sprintf(t, "cpx #$%.4x ", op16); break; + case 0xe1: sprintf(t, "sbc ($%.2x,x) [%.6x]", op8, decode(OPTYPE_IDPX, op8)); break; + case 0xe2: sprintf(t, "sep #$%.2x ", op8); break; + case 0xe3: sprintf(t, "sbc $%.2x,s [%.6x]", op8, decode(OPTYPE_SR, op8)); break; + case 0xe4: sprintf(t, "cpx $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xe5: sprintf(t, "sbc $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xe6: sprintf(t, "inc $%.2x [%.6x]", op8, decode(OPTYPE_DP, op8)); break; + case 0xe7: sprintf(t, "sbc [$%.2x] [%.6x]", op8, decode(OPTYPE_ILDP, op8)); break; + case 0xe8: sprintf(t, "inx "); break; + case 0xe9: if(a8)sprintf(t, "sbc #$%.2x ", op8); + else sprintf(t, "sbc #$%.4x ", op16); break; + case 0xea: sprintf(t, "nop "); break; + case 0xeb: sprintf(t, "xba "); break; + case 0xec: sprintf(t, "cpx $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xed: sprintf(t, "sbc $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xee: sprintf(t, "inc $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xef: sprintf(t, "sbc $%.6x [%.6x]", op24, decode(OPTYPE_LONG, op24)); break; + case 0xf0: sprintf(t, "beq $%.4x [%.6x]", uint16(decode(OPTYPE_RELB, op8)), decode(OPTYPE_RELB, op8)); break; + case 0xf1: sprintf(t, "sbc ($%.2x),y [%.6x]", op8, decode(OPTYPE_IDPY, op8)); break; + case 0xf2: sprintf(t, "sbc ($%.2x) [%.6x]", op8, decode(OPTYPE_IDP, op8)); break; + case 0xf3: sprintf(t, "sbc ($%.2x,s),y [%.6x]", op8, decode(OPTYPE_ISRY, op8)); break; + case 0xf4: sprintf(t, "pea $%.4x [%.6x]", op16, decode(OPTYPE_ADDR, op16)); break; + case 0xf5: sprintf(t, "sbc $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0xf6: sprintf(t, "inc $%.2x,x [%.6x]", op8, decode(OPTYPE_DPX, op8)); break; + case 0xf7: sprintf(t, "sbc [$%.2x],y [%.6x]", op8, decode(OPTYPE_ILDPY, op8)); break; + case 0xf8: sprintf(t, "sed "); break; + case 0xf9: sprintf(t, "sbc $%.4x,y [%.6x]", op16, decode(OPTYPE_ADDRY, op16)); break; + case 0xfa: sprintf(t, "plx "); break; + case 0xfb: sprintf(t, "xce "); break; + case 0xfc: sprintf(t, "jsr ($%.4x,x) [%.6x]", op16, decode(OPTYPE_IADDRX, op16)); break; + case 0xfd: sprintf(t, "sbc $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0xfe: sprintf(t, "inc $%.4x,x [%.6x]", op16, decode(OPTYPE_ADDRX, op16)); break; + case 0xff: sprintf(t, "sbc $%.6x,x [%.6x]", op24, decode(OPTYPE_LONGX, op24)); break; + } + + #undef op8 + #undef op16 + #undef op24 + #undef a8 + #undef x8 + + strcat(s, t); + strcat(s, " "); + + sprintf(t, "A:%.4x X:%.4x Y:%.4x S:%.4x D:%.4x DB:%.2x ", + regs.a.w, regs.x.w, regs.y.w, regs.s.w, regs.d.w, regs.db); + strcat(s, t); + + if(regs.e) { + sprintf(t, "%c%c%c%c%c%c%c%c", + regs.p.n ? 'N' : 'n', regs.p.v ? 'V' : 'v', + regs.p.m ? '1' : '0', regs.p.x ? 'B' : 'b', + regs.p.d ? 'D' : 'd', regs.p.i ? 'I' : 'i', + regs.p.z ? 'Z' : 'z', regs.p.c ? 'C' : 'c'); + } else { + sprintf(t, "%c%c%c%c%c%c%c%c", + regs.p.n ? 'N' : 'n', regs.p.v ? 'V' : 'v', + regs.p.m ? 'M' : 'm', regs.p.x ? 'X' : 'x', + regs.p.d ? 'D' : 'd', regs.p.i ? 'I' : 'i', + regs.p.z ? 'Z' : 'z', regs.p.c ? 'C' : 'c'); + } + + strcat(s, t); + strcat(s, " "); + + sprintf(t, "V:%3d H:%4d", cpu.vcounter(), cpu.hcounter()); + strcat(s, t); +} + +//opcode_length() retrieves the length of the next opcode +//to be executed. It is used by the debugger to step over, +//disable and proceed cpu opcodes. +// +//5 and 6 are special cases, 5 is used for #consts based on +//the A register size, 6 for the X/Y register size. the +//rest are literal sizes. There's no need to test for +//emulation mode, as regs.p.m/regs.p.x should *always* be +//set in emulation mode. + +uint8 CPUcore::opcode_length() { + uint8 op, len; + static uint8 op_len_tbl[256] = { + //0,1,2,3, 4,5,6,7, 8,9,a,b, c,d,e,f + + 2,2,2,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0x0n + 2,2,2,2, 2,2,2,2, 1,3,1,1, 3,3,3,4, //0x1n + 3,2,4,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0x2n + 2,2,2,2, 2,2,2,2, 1,3,1,1, 3,3,3,4, //0x3n + + 1,2,2,2, 3,2,2,2, 1,5,1,1, 3,3,3,4, //0x4n + 2,2,2,2, 3,2,2,2, 1,3,1,1, 4,3,3,4, //0x5n + 1,2,3,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0x6n + 2,2,2,2, 2,2,2,2, 1,3,1,1, 3,3,3,4, //0x7n + + 2,2,3,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0x8n + 2,2,2,2, 2,2,2,2, 1,3,1,1, 3,3,3,4, //0x9n + 6,2,6,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0xan + 2,2,2,2, 2,2,2,2, 1,3,1,1, 3,3,3,4, //0xbn + + 6,2,2,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0xcn + 2,2,2,2, 2,2,2,2, 1,3,1,1, 3,3,3,4, //0xdn + 6,2,2,2, 2,2,2,2, 1,5,1,1, 3,3,3,4, //0xen + 2,2,2,2, 3,2,2,2, 1,3,1,1, 3,3,3,4 //0xfn + }; + + if(false /* in_opcode() == true */) { + return 0; + } + + op = dreadb(regs.pc.d); + len = op_len_tbl[op]; + if(len == 5) return (regs.e || regs.p.m) ? 2 : 3; + if(len == 6) return (regs.e || regs.p.x) ? 2 : 3; + return len; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.hpp b/libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.hpp new file mode 100644 index 0000000000..0865e38e16 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/disassembler/disassembler.hpp @@ -0,0 +1,30 @@ +enum { + OPTYPE_DP = 0, //dp + OPTYPE_DPX, //dp,x + OPTYPE_DPY, //dp,y + OPTYPE_IDP, //(dp) + OPTYPE_IDPX, //(dp,x) + OPTYPE_IDPY, //(dp),y + OPTYPE_ILDP, //[dp] + OPTYPE_ILDPY, //[dp],y + OPTYPE_ADDR, //addr + OPTYPE_ADDRX, //addr,x + OPTYPE_ADDRY, //addr,y + OPTYPE_IADDRX, //(addr,x) + OPTYPE_ILADDR, //[addr] + OPTYPE_LONG, //long + OPTYPE_LONGX, //long, x + OPTYPE_SR, //sr,s + OPTYPE_ISRY, //(sr,s),y + OPTYPE_ADDR_PC, //pbr:addr + OPTYPE_IADDR_PC, //pbr:(addr) + OPTYPE_RELB, //relb + OPTYPE_RELW, //relw +}; + +void disassemble_opcode(char *output, uint32 addr); +uint8 dreadb(uint32 addr); +uint16 dreadw(uint32 addr); +uint32 dreadl(uint32 addr); +uint32 decode(uint8 offset_type, uint32 addr); +uint8 opcode_length(); diff --git a/libmednahawk/src/snes/src/cpu/core/memory.hpp b/libmednahawk/src/snes/src/cpu/core/memory.hpp new file mode 100644 index 0000000000..2a32098724 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/memory.hpp @@ -0,0 +1,77 @@ +alwaysinline uint8_t op_readpc() { + return op_read((regs.pc.b << 16) + regs.pc.w++); +} + +alwaysinline uint8_t op_readstack() { + regs.e ? regs.s.l++ : regs.s.w++; + return op_read(regs.s.w); +} + +alwaysinline uint8_t op_readstackn() { + return op_read(++regs.s.w); +} + +alwaysinline uint8_t op_readaddr(uint32_t addr) { + return op_read(addr & 0xffff); +} + +alwaysinline uint8_t op_readlong(uint32_t addr) { + return op_read(addr & 0xffffff); +} + +alwaysinline uint8_t op_readdbr(uint32_t addr) { + return op_read(((regs.db << 16) + addr) & 0xffffff); +} + +alwaysinline uint8_t op_readpbr(uint32_t addr) { + return op_read((regs.pc.b << 16) + (addr & 0xffff)); +} + +alwaysinline uint8_t op_readdp(uint32_t addr) { + if(regs.e && regs.d.l == 0x00) { + return op_read((regs.d & 0xff00) + ((regs.d + (addr & 0xffff)) & 0xff)); + } else { + return op_read((regs.d + (addr & 0xffff)) & 0xffff); + } +} + +alwaysinline uint8_t op_readsp(uint32_t addr) { + return op_read((regs.s + (addr & 0xffff)) & 0xffff); +} + +alwaysinline void op_writestack(uint8_t data) { + op_write(regs.s.w, data); + regs.e ? regs.s.l-- : regs.s.w--; +} + +alwaysinline void op_writestackn(uint8_t data) { + op_write(regs.s.w--, data); +} + +alwaysinline void op_writeaddr(uint32_t addr, uint8_t data) { + op_write(addr & 0xffff, data); +} + +alwaysinline void op_writelong(uint32_t addr, uint8_t data) { + op_write(addr & 0xffffff, data); +} + +alwaysinline void op_writedbr(uint32_t addr, uint8_t data) { + op_write(((regs.db << 16) + addr) & 0xffffff, data); +} + +alwaysinline void op_writepbr(uint32_t addr, uint8_t data) { + op_write((regs.pc.b << 16) + (addr & 0xffff), data); +} + +alwaysinline void op_writedp(uint32_t addr, uint8_t data) { + if(regs.e && regs.d.l == 0x00) { + op_write((regs.d & 0xff00) + ((regs.d + (addr & 0xffff)) & 0xff), data); + } else { + op_write((regs.d + (addr & 0xffff)) & 0xffff, data); + } +} + +alwaysinline void op_writesp(uint32_t addr, uint8_t data) { + op_write((regs.s + (addr & 0xffff)) & 0xffff, data); +} diff --git a/libmednahawk/src/snes/src/cpu/core/opcode_misc.cpp b/libmednahawk/src/snes/src/cpu/core/opcode_misc.cpp new file mode 100644 index 0000000000..3acea35239 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/opcode_misc.cpp @@ -0,0 +1,352 @@ +#ifdef CPUCORE_CPP + +void CPUcore::op_nop() { +L op_io_irq(); +} + +void CPUcore::op_wdm() { +L op_readpc(); +} + +void CPUcore::op_xba() { + op_io(); +L op_io(); + regs.a.l ^= regs.a.h; + regs.a.h ^= regs.a.l; + regs.a.l ^= regs.a.h; + regs.p.n = (regs.a.l & 0x80); + regs.p.z = (regs.a.l == 0); +} + +template void CPUcore::op_move_b() { + dp = op_readpc(); + sp = op_readpc(); + regs.db = dp; + rd.l = op_readlong((sp << 16) | regs.x.w); + op_writelong((dp << 16) | regs.y.w, rd.l); + op_io(); + regs.x.l += adjust; + regs.y.l += adjust; +L op_io(); + if(regs.a.w--) regs.pc.w -= 3; +} + +template void CPUcore::op_move_w() { + dp = op_readpc(); + sp = op_readpc(); + regs.db = dp; + rd.l = op_readlong((sp << 16) | regs.x.w); + op_writelong((dp << 16) | regs.y.w, rd.l); + op_io(); + regs.x.w += adjust; + regs.y.w += adjust; +L op_io(); + if(regs.a.w--) regs.pc.w -= 3; +} + +template void CPUcore::op_interrupt_e() { + op_readpc(); + op_writestack(regs.pc.h); + op_writestack(regs.pc.l); + op_writestack(regs.p); + rd.l = op_readlong(vectorE + 0); + regs.pc.b = 0; + regs.p.i = 1; + regs.p.d = 0; +L rd.h = op_readlong(vectorE + 1); + regs.pc.w = rd.w; +} + +template void CPUcore::op_interrupt_n() { + op_readpc(); + op_writestack(regs.pc.b); + op_writestack(regs.pc.h); + op_writestack(regs.pc.l); + op_writestack(regs.p); + rd.l = op_readlong(vectorN + 0); + regs.pc.b = 0x00; + regs.p.i = 1; + regs.p.d = 0; +L rd.h = op_readlong(vectorN + 1); + regs.pc.w = rd.w; +} + +void CPUcore::op_stp() { + while(regs.wai = true) { +L op_io(); + } +} + +void CPUcore::op_wai() { + regs.wai = true; + while(regs.wai) { +L op_io(); + } + op_io(); +} + +void CPUcore::op_xce() { +L op_io_irq(); + bool carry = regs.p.c; + regs.p.c = regs.e; + regs.e = carry; + if(regs.e) { + regs.p |= 0x30; + regs.s.h = 0x01; + } + if(regs.p.x) { + regs.x.h = 0x00; + regs.y.h = 0x00; + } + update_table(); +} + +template void CPUcore::op_flag() { +L op_io_irq(); + regs.p = (regs.p & ~mask) | value; +} + +template void CPUcore::op_pflag_e() { + rd.l = op_readpc(); +L op_io(); + regs.p = (mode ? regs.p | rd.l : regs.p & ~rd.l); + regs.p |= 0x30; + if(regs.p.x) { + regs.x.h = 0x00; + regs.y.h = 0x00; + } + update_table(); +} + +template void CPUcore::op_pflag_n() { + rd.l = op_readpc(); +L op_io(); + regs.p = (mode ? regs.p | rd.l : regs.p & ~rd.l); + if(regs.p.x) { + regs.x.h = 0x00; + regs.y.h = 0x00; + } + update_table(); +} + +template void CPUcore::op_transfer_b() { +L op_io_irq(); + regs.r[to].l = regs.r[from].l; + regs.p.n = (regs.r[to].l & 0x80); + regs.p.z = (regs.r[to].l == 0); +} + +template void CPUcore::op_transfer_w() { +L op_io_irq(); + regs.r[to].w = regs.r[from].w; + regs.p.n = (regs.r[to].w & 0x8000); + regs.p.z = (regs.r[to].w == 0); +} + +void CPUcore::op_tcs_e() { +L op_io_irq(); + regs.s.l = regs.a.l; +} + +void CPUcore::op_tcs_n() { +L op_io_irq(); + regs.s.w = regs.a.w; +} + +void CPUcore::op_tsc_e() { +L op_io_irq(); + regs.a.w = regs.s.w; + regs.p.n = (regs.a.l & 0x80); + regs.p.z = (regs.a.l == 0); +} + +void CPUcore::op_tsc_n() { +L op_io_irq(); + regs.a.w = regs.s.w; + regs.p.n = (regs.a.w & 0x8000); + regs.p.z = (regs.a.w == 0); +} + +void CPUcore::op_tsx_b() { +L op_io_irq(); + regs.x.l = regs.s.l; + regs.p.n = (regs.x.l & 0x80); + regs.p.z = (regs.x.l == 0); +} + +void CPUcore::op_tsx_w() { +L op_io_irq(); + regs.x.w = regs.s.w; + regs.p.n = (regs.x.w & 0x8000); + regs.p.z = (regs.x.w == 0); +} + +void CPUcore::op_txs_e() { +L op_io_irq(); + regs.s.l = regs.x.l; +} + +void CPUcore::op_txs_n() { +L op_io_irq(); + regs.s.w = regs.x.w; +} + +template void CPUcore::op_push_b() { + op_io(); +L op_writestack(regs.r[n].l); +} + +template void CPUcore::op_push_w() { + op_io(); + op_writestack(regs.r[n].h); +L op_writestack(regs.r[n].l); +} + +void CPUcore::op_phd_e() { + op_io(); + op_writestackn(regs.d.h); +L op_writestackn(regs.d.l); + regs.s.h = 0x01; +} + +void CPUcore::op_phd_n() { + op_io(); + op_writestackn(regs.d.h); +L op_writestackn(regs.d.l); +} + +void CPUcore::op_phb() { + op_io(); +L op_writestack(regs.db); +} + +void CPUcore::op_phk() { + op_io(); +L op_writestack(regs.pc.b); +} + +void CPUcore::op_php() { + op_io(); +L op_writestack(regs.p); +} + +template void CPUcore::op_pull_b() { + op_io(); + op_io(); +L regs.r[n].l = op_readstack(); + regs.p.n = (regs.r[n].l & 0x80); + regs.p.z = (regs.r[n].l == 0); +} + +template void CPUcore::op_pull_w() { + op_io(); + op_io(); + regs.r[n].l = op_readstack(); +L regs.r[n].h = op_readstack(); + regs.p.n = (regs.r[n].w & 0x8000); + regs.p.z = (regs.r[n].w == 0); +} + +void CPUcore::op_pld_e() { + op_io(); + op_io(); + regs.d.l = op_readstackn(); +L regs.d.h = op_readstackn(); + regs.p.n = (regs.d.w & 0x8000); + regs.p.z = (regs.d.w == 0); + regs.s.h = 0x01; +} + +void CPUcore::op_pld_n() { + op_io(); + op_io(); + regs.d.l = op_readstackn(); +L regs.d.h = op_readstackn(); + regs.p.n = (regs.d.w & 0x8000); + regs.p.z = (regs.d.w == 0); +} + +void CPUcore::op_plb() { + op_io(); + op_io(); +L regs.db = op_readstack(); + regs.p.n = (regs.db & 0x80); + regs.p.z = (regs.db == 0); +} + +void CPUcore::op_plp_e() { + op_io(); + op_io(); +L regs.p = op_readstack() | 0x30; + if(regs.p.x) { + regs.x.h = 0x00; + regs.y.h = 0x00; + } + update_table(); +} + +void CPUcore::op_plp_n() { + op_io(); + op_io(); +L regs.p = op_readstack(); + if(regs.p.x) { + regs.x.h = 0x00; + regs.y.h = 0x00; + } + update_table(); +} + +void CPUcore::op_pea_e() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_writestackn(aa.h); +L op_writestackn(aa.l); + regs.s.h = 0x01; +} + +void CPUcore::op_pea_n() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_writestackn(aa.h); +L op_writestackn(aa.l); +} + +void CPUcore::op_pei_e() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_writestackn(aa.h); +L op_writestackn(aa.l); + regs.s.h = 0x01; +} + +void CPUcore::op_pei_n() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_writestackn(aa.h); +L op_writestackn(aa.l); +} + +void CPUcore::op_per_e() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + rd.w = regs.pc.d + (int16)aa.w; + op_writestackn(rd.h); +L op_writestackn(rd.l); + regs.s.h = 0x01; +} + +void CPUcore::op_per_n() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + rd.w = regs.pc.d + (int16)aa.w; + op_writestackn(rd.h); +L op_writestackn(rd.l); +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/opcode_pc.cpp b/libmednahawk/src/snes/src/cpu/core/opcode_pc.cpp new file mode 100644 index 0000000000..e4236d3b11 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/opcode_pc.cpp @@ -0,0 +1,181 @@ +#ifdef CPUCORE_CPP + +template void CPUcore::op_branch() { + if((bool)(regs.p & bit) != val) { +L rd.l = op_readpc(); + } else { + rd.l = op_readpc(); + aa.w = regs.pc.d + (int8)rd.l; + op_io_cond6(aa.w); +L op_io(); + regs.pc.w = aa.w; + } +} + +void CPUcore::op_bra() { + rd.l = op_readpc(); + aa.w = regs.pc.d + (int8)rd.l; + op_io_cond6(aa.w); +L op_io(); + regs.pc.w = aa.w; +} + +void CPUcore::op_brl() { + rd.l = op_readpc(); + rd.h = op_readpc(); +L op_io(); + regs.pc.w = regs.pc.d + (int16)rd.w; +} + +void CPUcore::op_jmp_addr() { + rd.l = op_readpc(); +L rd.h = op_readpc(); + regs.pc.w = rd.w; +} + +void CPUcore::op_jmp_long() { + rd.l = op_readpc(); + rd.h = op_readpc(); +L rd.b = op_readpc(); + regs.pc.d = rd.d & 0xffffff; +} + +void CPUcore::op_jmp_iaddr() { + aa.l = op_readpc(); + aa.h = op_readpc(); + rd.l = op_readaddr(aa.w + 0); +L rd.h = op_readaddr(aa.w + 1); + regs.pc.w = rd.w; +} + +void CPUcore::op_jmp_iaddrx() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + rd.l = op_readpbr(aa.w + regs.x.w + 0); +L rd.h = op_readpbr(aa.w + regs.x.w + 1); + regs.pc.w = rd.w; +} + +void CPUcore::op_jmp_iladdr() { + aa.l = op_readpc(); + aa.h = op_readpc(); + rd.l = op_readaddr(aa.w + 0); + rd.h = op_readaddr(aa.w + 1); +L rd.b = op_readaddr(aa.w + 2); + regs.pc.d = rd.d & 0xffffff; +} + +void CPUcore::op_jsr_addr() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + regs.pc.w--; + op_writestack(regs.pc.h); +L op_writestack(regs.pc.l); + regs.pc.w = aa.w; +} + +void CPUcore::op_jsr_long_e() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_writestackn(regs.pc.b); + op_io(); + aa.b = op_readpc(); + regs.pc.w--; + op_writestackn(regs.pc.h); +L op_writestackn(regs.pc.l); + regs.pc.d = aa.d & 0xffffff; + regs.s.h = 0x01; +} + +void CPUcore::op_jsr_long_n() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_writestackn(regs.pc.b); + op_io(); + aa.b = op_readpc(); + regs.pc.w--; + op_writestackn(regs.pc.h); +L op_writestackn(regs.pc.l); + regs.pc.d = aa.d & 0xffffff; +} + +void CPUcore::op_jsr_iaddrx_e() { + aa.l = op_readpc(); + op_writestackn(regs.pc.h); + op_writestackn(regs.pc.l); + aa.h = op_readpc(); + op_io(); + rd.l = op_readpbr(aa.w + regs.x.w + 0); +L rd.h = op_readpbr(aa.w + regs.x.w + 1); + regs.pc.w = rd.w; + regs.s.h = 0x01; +} + +void CPUcore::op_jsr_iaddrx_n() { + aa.l = op_readpc(); + op_writestackn(regs.pc.h); + op_writestackn(regs.pc.l); + aa.h = op_readpc(); + op_io(); + rd.l = op_readpbr(aa.w + regs.x.w + 0); +L rd.h = op_readpbr(aa.w + regs.x.w + 1); + regs.pc.w = rd.w; +} + +void CPUcore::op_rti_e() { + op_io(); + op_io(); + regs.p = op_readstack() | 0x30; + rd.l = op_readstack(); +L rd.h = op_readstack(); + regs.pc.w = rd.w; +} + +void CPUcore::op_rti_n() { + op_io(); + op_io(); + regs.p = op_readstack(); + if(regs.p.x) { + regs.x.h = 0x00; + regs.y.h = 0x00; + } + rd.l = op_readstack(); + rd.h = op_readstack(); +L rd.b = op_readstack(); + regs.pc.d = rd.d & 0xffffff; + update_table(); +} + +void CPUcore::op_rts() { + op_io(); + op_io(); + rd.l = op_readstack(); + rd.h = op_readstack(); +L op_io(); + regs.pc.w = ++rd.w; +} + +void CPUcore::op_rtl_e() { + op_io(); + op_io(); + rd.l = op_readstackn(); + rd.h = op_readstackn(); +L rd.b = op_readstackn(); + regs.pc.b = rd.b; + regs.pc.w = ++rd.w; + regs.s.h = 0x01; +} + +void CPUcore::op_rtl_n() { + op_io(); + op_io(); + rd.l = op_readstackn(); + rd.h = op_readstackn(); +L rd.b = op_readstackn(); + regs.pc.b = rd.b; + regs.pc.w = ++rd.w; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/opcode_read.cpp b/libmednahawk/src/snes/src/cpu/core/opcode_read.cpp new file mode 100644 index 0000000000..a32b2b04d9 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/opcode_read.cpp @@ -0,0 +1,279 @@ +#ifdef CPUCORE_CPP + +template void CPUcore::op_read_const_b() { +L rd.l = op_readpc(); + call(op); +} + +template void CPUcore::op_read_const_w() { + rd.l = op_readpc(); +L rd.h = op_readpc(); + call(op); +} + +void CPUcore::op_read_bit_const_b() { +L rd.l = op_readpc(); + regs.p.z = ((rd.l & regs.a.l) == 0); +} + +void CPUcore::op_read_bit_const_w() { + rd.l = op_readpc(); +L rd.h = op_readpc(); + regs.p.z = ((rd.w & regs.a.w) == 0); +} + +template void CPUcore::op_read_addr_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); +L rd.l = op_readdbr(aa.w); + call(op); +} + +template void CPUcore::op_read_addr_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + rd.l = op_readdbr(aa.w + 0); +L rd.h = op_readdbr(aa.w + 1); + call(op); +} + +template void CPUcore::op_read_addrx_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io_cond4(aa.w, aa.w + regs.x.w); +L rd.l = op_readdbr(aa.w + regs.x.w); + call(op); +} + +template void CPUcore::op_read_addrx_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io_cond4(aa.w, aa.w + regs.x.w); + rd.l = op_readdbr(aa.w + regs.x.w + 0); +L rd.h = op_readdbr(aa.w + regs.x.w + 1); + call(op); +} + +template void CPUcore::op_read_addry_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io_cond4(aa.w, aa.w + regs.y.w); +L rd.l = op_readdbr(aa.w + regs.y.w); + call(op); +} + +template void CPUcore::op_read_addry_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io_cond4(aa.w, aa.w + regs.y.w); + rd.l = op_readdbr(aa.w + regs.y.w + 0); +L rd.h = op_readdbr(aa.w + regs.y.w + 1); + call(op); +} + +template void CPUcore::op_read_long_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + aa.b = op_readpc(); +L rd.l = op_readlong(aa.d); + call(op); +} + +template void CPUcore::op_read_long_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + aa.b = op_readpc(); + rd.l = op_readlong(aa.d + 0); +L rd.h = op_readlong(aa.d + 1); + call(op); +} + +template void CPUcore::op_read_longx_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + aa.b = op_readpc(); +L rd.l = op_readlong(aa.d + regs.x.w); + call(op); +} + +template void CPUcore::op_read_longx_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + aa.b = op_readpc(); + rd.l = op_readlong(aa.d + regs.x.w + 0); +L rd.h = op_readlong(aa.d + regs.x.w + 1); + call(op); +} + +template void CPUcore::op_read_dp_b() { + dp = op_readpc(); + op_io_cond2(); +L rd.l = op_readdp(dp); + call(op); +} + +template void CPUcore::op_read_dp_w() { + dp = op_readpc(); + op_io_cond2(); + rd.l = op_readdp(dp + 0); +L rd.h = op_readdp(dp + 1); + call(op); +} + +template void CPUcore::op_read_dpr_b() { + dp = op_readpc(); + op_io_cond2(); + op_io(); +L rd.l = op_readdp(dp + regs.r[n].w); + call(op); +} + +template void CPUcore::op_read_dpr_w() { + dp = op_readpc(); + op_io_cond2(); + op_io(); +L rd.l = op_readdp(dp + regs.r[n].w + 0); + rd.h = op_readdp(dp + regs.r[n].w + 1); + call(op); +} + +template void CPUcore::op_read_idp_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); +L rd.l = op_readdbr(aa.w); + call(op); +} + +template void CPUcore::op_read_idp_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + rd.l = op_readdbr(aa.w + 0); +L rd.h = op_readdbr(aa.w + 1); + call(op); +} + +template void CPUcore::op_read_idpx_b() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + aa.l = op_readdp(dp + regs.x.w + 0); + aa.h = op_readdp(dp + regs.x.w + 1); +L rd.l = op_readdbr(aa.w); + call(op); +} + +template void CPUcore::op_read_idpx_w() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + aa.l = op_readdp(dp + regs.x.w + 0); + aa.h = op_readdp(dp + regs.x.w + 1); + rd.l = op_readdbr(aa.w + 0); +L rd.h = op_readdbr(aa.w + 1); + call(op); +} + +template void CPUcore::op_read_idpy_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_io_cond4(aa.w, aa.w + regs.y.w); +L rd.l = op_readdbr(aa.w + regs.y.w); + call(op); +} + +template void CPUcore::op_read_idpy_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_io_cond4(aa.w, aa.w + regs.y.w); + rd.l = op_readdbr(aa.w + regs.y.w + 0); +L rd.h = op_readdbr(aa.w + regs.y.w + 1); + call(op); +} + +template void CPUcore::op_read_ildp_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); +L rd.l = op_readlong(aa.d); + call(op); +} + +template void CPUcore::op_read_ildp_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); + rd.l = op_readlong(aa.d + 0); +L rd.h = op_readlong(aa.d + 1); + call(op); +} + +template void CPUcore::op_read_ildpy_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); +L rd.l = op_readlong(aa.d + regs.y.w); + call(op); +} + +template void CPUcore::op_read_ildpy_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); + rd.l = op_readlong(aa.d + regs.y.w + 0); +L rd.h = op_readlong(aa.d + regs.y.w + 1); + call(op); +} + +template void CPUcore::op_read_sr_b() { + sp = op_readpc(); + op_io(); +L rd.l = op_readsp(sp); + call(op); +} + +template void CPUcore::op_read_sr_w() { + sp = op_readpc(); + op_io(); + rd.l = op_readsp(sp + 0); +L rd.h = op_readsp(sp + 1); + call(op); +} + +template void CPUcore::op_read_isry_b() { + sp = op_readpc(); + op_io(); + aa.l = op_readsp(sp + 0); + aa.h = op_readsp(sp + 1); + op_io(); +L rd.l = op_readdbr(aa.w + regs.y.w); + call(op); +} + +template void CPUcore::op_read_isry_w() { + sp = op_readpc(); + op_io(); + aa.l = op_readsp(sp + 0); + aa.h = op_readsp(sp + 1); + op_io(); + rd.l = op_readdbr(aa.w + regs.y.w + 0); +L rd.h = op_readdbr(aa.w + regs.y.w + 1); + call(op); +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/opcode_rmw.cpp b/libmednahawk/src/snes/src/cpu/core/opcode_rmw.cpp new file mode 100644 index 0000000000..d4ec1d4c88 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/opcode_rmw.cpp @@ -0,0 +1,169 @@ +#ifdef CPUCORE_CPP + +template void CPUcore::op_adjust_imm_b() { +L op_io_irq(); + regs.r[n].l += adjust; + regs.p.n = (regs.r[n].l & 0x80); + regs.p.z = (regs.r[n].l == 0); +} + +template void CPUcore::op_adjust_imm_w() { +L op_io_irq(); + regs.r[n].w += adjust; + regs.p.n = (regs.r[n].w & 0x8000); + regs.p.z = (regs.r[n].w == 0); +} + +void CPUcore::op_asl_imm_b() { +L op_io_irq(); + regs.p.c = (regs.a.l & 0x80); + regs.a.l <<= 1; + regs.p.n = (regs.a.l & 0x80); + regs.p.z = (regs.a.l == 0); +} + +void CPUcore::op_asl_imm_w() { +L op_io_irq(); + regs.p.c = (regs.a.w & 0x8000); + regs.a.w <<= 1; + regs.p.n = (regs.a.w & 0x8000); + regs.p.z = (regs.a.w == 0); +} + +void CPUcore::op_lsr_imm_b() { +L op_io_irq(); + regs.p.c = (regs.a.l & 0x01); + regs.a.l >>= 1; + regs.p.n = (regs.a.l & 0x80); + regs.p.z = (regs.a.l == 0); +} + +void CPUcore::op_lsr_imm_w() { +L op_io_irq(); + regs.p.c = (regs.a.w & 0x0001); + regs.a.w >>= 1; + regs.p.n = (regs.a.w & 0x8000); + regs.p.z = (regs.a.w == 0); +} + +void CPUcore::op_rol_imm_b() { +L op_io_irq(); + bool carry = regs.p.c; + regs.p.c = (regs.a.l & 0x80); + regs.a.l = (regs.a.l << 1) | carry; + regs.p.n = (regs.a.l & 0x80); + regs.p.z = (regs.a.l == 0); +} + +void CPUcore::op_rol_imm_w() { +L op_io_irq(); + bool carry = regs.p.c; + regs.p.c = (regs.a.w & 0x8000); + regs.a.w = (regs.a.w << 1) | carry; + regs.p.n = (regs.a.w & 0x8000); + regs.p.z = (regs.a.w == 0); +} + +void CPUcore::op_ror_imm_b() { +L op_io_irq(); + bool carry = regs.p.c; + regs.p.c = (regs.a.l & 0x01); + regs.a.l = (carry << 7) | (regs.a.l >> 1); + regs.p.n = (regs.a.l & 0x80); + regs.p.z = (regs.a.l == 0); +} + +void CPUcore::op_ror_imm_w() { +L op_io_irq(); + bool carry = regs.p.c; + regs.p.c = (regs.a.w & 0x0001); + regs.a.w = (carry << 15) | (regs.a.w >> 1); + regs.p.n = (regs.a.w & 0x8000); + regs.p.z = (regs.a.w == 0); +} + +template void CPUcore::op_adjust_addr_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + rd.l = op_readdbr(aa.w); + op_io(); + call(op); +L op_writedbr(aa.w, rd.l); +} + +template void CPUcore::op_adjust_addr_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + rd.l = op_readdbr(aa.w + 0); + rd.h = op_readdbr(aa.w + 1); + op_io(); + call(op); + op_writedbr(aa.w + 1, rd.h); +L op_writedbr(aa.w + 0, rd.l); +} + +template void CPUcore::op_adjust_addrx_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + rd.l = op_readdbr(aa.w + regs.x.w); + op_io(); + call(op); +L op_writedbr(aa.w + regs.x.w, rd.l); +} + +template void CPUcore::op_adjust_addrx_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + rd.l = op_readdbr(aa.w + regs.x.w + 0); + rd.h = op_readdbr(aa.w + regs.x.w + 1); + op_io(); + call(op); + op_writedbr(aa.w + regs.x.w + 1, rd.h); +L op_writedbr(aa.w + regs.x.w + 0, rd.l); +} + +template void CPUcore::op_adjust_dp_b() { + dp = op_readpc(); + op_io_cond2(); + rd.l = op_readdp(dp); + op_io(); + call(op); +L op_writedp(dp, rd.l); +} + +template void CPUcore::op_adjust_dp_w() { + dp = op_readpc(); + op_io_cond2(); + rd.l = op_readdp(dp + 0); + rd.h = op_readdp(dp + 1); + op_io(); + call(op); + op_writedp(dp + 1, rd.h); +L op_writedp(dp + 0, rd.l); +} + +template void CPUcore::op_adjust_dpx_b() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + rd.l = op_readdp(dp + regs.x.w); + op_io(); + call(op); +L op_writedp(dp + regs.x.w, rd.l); +} + +template void CPUcore::op_adjust_dpx_w() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + rd.l = op_readdp(dp + regs.x.w + 0); + rd.h = op_readdp(dp + regs.x.w + 1); + op_io(); + call(op); + op_writedp(dp + regs.x.w + 1, rd.h); +L op_writedp(dp + regs.x.w + 0, rd.l); +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/opcode_write.cpp b/libmednahawk/src/snes/src/cpu/core/opcode_write.cpp new file mode 100644 index 0000000000..0c55630226 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/opcode_write.cpp @@ -0,0 +1,199 @@ +#ifdef CPUCORE_CPP + +template void CPUcore::op_write_addr_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); +L op_writedbr(aa.w, regs.r[n]); +} + +template void CPUcore::op_write_addr_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_writedbr(aa.w + 0, regs.r[n] >> 0); +L op_writedbr(aa.w + 1, regs.r[n] >> 8); +} + +template void CPUcore::op_write_addrr_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); +L op_writedbr(aa.w + regs.r[i], regs.r[n]); +} + +template void CPUcore::op_write_addrr_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + op_io(); + op_writedbr(aa.w + regs.r[i] + 0, regs.r[n] >> 0); +L op_writedbr(aa.w + regs.r[i] + 1, regs.r[n] >> 8); +} + +template void CPUcore::op_write_longr_b() { + aa.l = op_readpc(); + aa.h = op_readpc(); + aa.b = op_readpc(); +L op_writelong(aa.d + regs.r[i], regs.a.l); +} + +template void CPUcore::op_write_longr_w() { + aa.l = op_readpc(); + aa.h = op_readpc(); + aa.b = op_readpc(); + op_writelong(aa.d + regs.r[i] + 0, regs.a.l); +L op_writelong(aa.d + regs.r[i] + 1, regs.a.h); +} + +template void CPUcore::op_write_dp_b() { + dp = op_readpc(); + op_io_cond2(); +L op_writedp(dp, regs.r[n]); +} + +template void CPUcore::op_write_dp_w() { + dp = op_readpc(); + op_io_cond2(); + op_writedp(dp + 0, regs.r[n] >> 0); +L op_writedp(dp + 1, regs.r[n] >> 8); +} + +template void CPUcore::op_write_dpr_b() { + dp = op_readpc(); + op_io_cond2(); + op_io(); +L op_writedp(dp + regs.r[i], regs.r[n]); +} + +template void CPUcore::op_write_dpr_w() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + op_writedp(dp + regs.r[i] + 0, regs.r[n] >> 0); +L op_writedp(dp + regs.r[i] + 1, regs.r[n] >> 8); +} + +void CPUcore::op_sta_idp_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); +L op_writedbr(aa.w, regs.a.l); +} + +void CPUcore::op_sta_idp_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_writedbr(aa.w + 0, regs.a.l); +L op_writedbr(aa.w + 1, regs.a.h); +} + +void CPUcore::op_sta_ildp_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); +L op_writelong(aa.d, regs.a.l); +} + +void CPUcore::op_sta_ildp_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); + op_writelong(aa.d + 0, regs.a.l); +L op_writelong(aa.d + 1, regs.a.h); +} + +void CPUcore::op_sta_idpx_b() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + aa.l = op_readdp(dp + regs.x.w + 0); + aa.h = op_readdp(dp + regs.x.w + 1); +L op_writedbr(aa.w, regs.a.l); +} + +void CPUcore::op_sta_idpx_w() { + dp = op_readpc(); + op_io_cond2(); + op_io(); + aa.l = op_readdp(dp + regs.x.w + 0); + aa.h = op_readdp(dp + regs.x.w + 1); + op_writedbr(aa.w + 0, regs.a.l); +L op_writedbr(aa.w + 1, regs.a.h); +} + +void CPUcore::op_sta_idpy_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_io(); +L op_writedbr(aa.w + regs.y.w, regs.a.l); +} + +void CPUcore::op_sta_idpy_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + op_io(); + op_writedbr(aa.w + regs.y.w + 0, regs.a.l); +L op_writedbr(aa.w + regs.y.w + 1, regs.a.h); +} + +void CPUcore::op_sta_ildpy_b() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); +L op_writelong(aa.d + regs.y.w, regs.a.l); +} + +void CPUcore::op_sta_ildpy_w() { + dp = op_readpc(); + op_io_cond2(); + aa.l = op_readdp(dp + 0); + aa.h = op_readdp(dp + 1); + aa.b = op_readdp(dp + 2); + op_writelong(aa.d + regs.y.w + 0, regs.a.l); +L op_writelong(aa.d + regs.y.w + 1, regs.a.h); +} + +void CPUcore::op_sta_sr_b() { + sp = op_readpc(); + op_io(); +L op_writesp(sp, regs.a.l); +} + +void CPUcore::op_sta_sr_w() { + sp = op_readpc(); + op_io(); + op_writesp(sp + 0, regs.a.l); +L op_writesp(sp + 1, regs.a.h); +} + +void CPUcore::op_sta_isry_b() { + sp = op_readpc(); + op_io(); + aa.l = op_readsp(sp + 0); + aa.h = op_readsp(sp + 1); + op_io(); +L op_writedbr(aa.w + regs.y.w, regs.a.l); +} + +void CPUcore::op_sta_isry_w() { + sp = op_readpc(); + op_io(); + aa.l = op_readsp(sp + 0); + aa.h = op_readsp(sp + 1); + op_io(); + op_writedbr(aa.w + regs.y.w + 0, regs.a.l); +L op_writedbr(aa.w + regs.y.w + 1, regs.a.h); +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/registers.hpp b/libmednahawk/src/snes/src/cpu/core/registers.hpp new file mode 100644 index 0000000000..e9e9a5218a --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/registers.hpp @@ -0,0 +1,81 @@ +struct flag_t { + bool n, v, m, x, d, i, z, c; + + inline operator unsigned() const { + return (n << 7) + (v << 6) + (m << 5) + (x << 4) + + (d << 3) + (i << 2) + (z << 1) + (c << 0); + } + + inline unsigned operator=(uint8 data) { + n = data & 0x80; v = data & 0x40; m = data & 0x20; x = data & 0x10; + d = data & 0x08; i = data & 0x04; z = data & 0x02; c = data & 0x01; + return data; + } + + inline unsigned operator|=(unsigned data) { return operator=(operator unsigned() | data); } + inline unsigned operator^=(unsigned data) { return operator=(operator unsigned() ^ data); } + inline unsigned operator&=(unsigned data) { return operator=(operator unsigned() & data); } + + flag_t() : n(0), v(0), m(0), x(0), d(0), i(0), z(0), c(0) {} +}; + +struct reg16_t { + union { + uint16 w; + struct { uint8 order_lsb2(l, h); }; + }; + + inline operator unsigned() const { return w; } + inline unsigned operator = (unsigned i) { return w = i; } + inline unsigned operator |= (unsigned i) { return w |= i; } + inline unsigned operator ^= (unsigned i) { return w ^= i; } + inline unsigned operator &= (unsigned i) { return w &= i; } + inline unsigned operator <<= (unsigned i) { return w <<= i; } + inline unsigned operator >>= (unsigned i) { return w >>= i; } + inline unsigned operator += (unsigned i) { return w += i; } + inline unsigned operator -= (unsigned i) { return w -= i; } + inline unsigned operator *= (unsigned i) { return w *= i; } + inline unsigned operator /= (unsigned i) { return w /= i; } + inline unsigned operator %= (unsigned i) { return w %= i; } + + reg16_t() : w(0) {} +}; + +struct reg24_t { + union { + uint32 d; + struct { uint16 order_lsb2(w, wh); }; + struct { uint8 order_lsb4(l, h, b, bh); }; + }; + + inline operator unsigned() const { return d; } + inline unsigned operator = (unsigned i) { return d = uclip<24>(i); } + inline unsigned operator |= (unsigned i) { return d = uclip<24>(d | i); } + inline unsigned operator ^= (unsigned i) { return d = uclip<24>(d ^ i); } + inline unsigned operator &= (unsigned i) { return d = uclip<24>(d & i); } + inline unsigned operator <<= (unsigned i) { return d = uclip<24>(d << i); } + inline unsigned operator >>= (unsigned i) { return d = uclip<24>(d >> i); } + inline unsigned operator += (unsigned i) { return d = uclip<24>(d + i); } + inline unsigned operator -= (unsigned i) { return d = uclip<24>(d - i); } + inline unsigned operator *= (unsigned i) { return d = uclip<24>(d * i); } + inline unsigned operator /= (unsigned i) { return d = uclip<24>(d / i); } + inline unsigned operator %= (unsigned i) { return d = uclip<24>(d % i); } + + reg24_t() : d(0) {} +}; + +struct regs_t { + reg24_t pc; + reg16_t r[6], &a, &x, &y, &z, &s, &d; + flag_t p; + uint8 db; + bool e; + + bool irq; //IRQ pin (0 = low, 1 = trigger) + bool wai; //raised during wai, cleared after interrupt triggered + uint8 mdr; //memory data register + + regs_t() : a(r[0]), x(r[1]), y(r[2]), z(r[3]), s(r[4]), d(r[5]), db(0), e(false), irq(false), wai(false), mdr(0) { + z = 0; + } +}; diff --git a/libmednahawk/src/snes/src/cpu/core/serialization.cpp b/libmednahawk/src/snes/src/cpu/core/serialization.cpp new file mode 100644 index 0000000000..77fb3af85e --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/serialization.cpp @@ -0,0 +1,36 @@ +#ifdef CPUCORE_CPP + +void CPUcore::core_serialize(serializer &s) { + s.integer(regs.pc.d); + + s.integer(regs.a.w); + s.integer(regs.x.w); + s.integer(regs.y.w); + s.integer(regs.z.w); + s.integer(regs.s.w); + s.integer(regs.d.w); + + s.integer(regs.p.n); + s.integer(regs.p.v); + s.integer(regs.p.m); + s.integer(regs.p.x); + s.integer(regs.p.d); + s.integer(regs.p.i); + s.integer(regs.p.z); + s.integer(regs.p.c); + + s.integer(regs.db); + s.integer(regs.e); + s.integer(regs.irq); + s.integer(regs.wai); + s.integer(regs.mdr); + + s.integer(aa.d); + s.integer(rd.d); + s.integer(sp); + s.integer(dp); + + update_table(); +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/core/table.cpp b/libmednahawk/src/snes/src/cpu/core/table.cpp new file mode 100644 index 0000000000..5b668e25a9 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/core/table.cpp @@ -0,0 +1,312 @@ +#ifdef CPUCORE_CPP + +void CPUcore::initialize_opcode_table() { + #define opA( id, name ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name; + #define opAII(id, name, x, y ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name; + #define opE( id, name ) op_table[table_EM + id] = &CPUcore::op_##name##_e; op_table[table_MX + id] = op_table[table_Mx + id] = op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_n; + #define opEI( id, name, x ) op_table[table_EM + id] = &CPUcore::op_##name##_e; op_table[table_MX + id] = op_table[table_Mx + id] = op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_n; + #define opEII(id, name, x, y ) op_table[table_EM + id] = &CPUcore::op_##name##_e; op_table[table_MX + id] = op_table[table_Mx + id] = op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_n; + #define opM( id, name ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = &CPUcore::op_##name##_b; op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w; + #define opMI( id, name, x ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = &CPUcore::op_##name##_b; op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w; + #define opMII(id, name, x, y ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = &CPUcore::op_##name##_b; op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w; + #define opMF( id, name, fn ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = &CPUcore::op_##name##_b<&CPUcore::op_##fn##_b>; op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w<&CPUcore::op_##fn##_w>; + #define opMFI(id, name, fn, x) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_Mx + id] = &CPUcore::op_##name##_b<&CPUcore::op_##fn##_b, x>; op_table[table_mX + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w<&CPUcore::op_##fn##_w, x>; + #define opX( id, name ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_mX + id] = &CPUcore::op_##name##_b; op_table[table_Mx + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w; + #define opXI( id, name, x ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_mX + id] = &CPUcore::op_##name##_b; op_table[table_Mx + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w; + #define opXII(id, name, x, y ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_mX + id] = &CPUcore::op_##name##_b; op_table[table_Mx + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w; + #define opXF( id, name, fn ) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_mX + id] = &CPUcore::op_##name##_b<&CPUcore::op_##fn##_b>; op_table[table_Mx + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w<&CPUcore::op_##fn##_w>; + #define opXFI(id, name, fn, x) op_table[table_EM + id] = op_table[table_MX + id] = op_table[table_mX + id] = &CPUcore::op_##name##_b<&CPUcore::op_##fn##_b, x>; op_table[table_Mx + id] = op_table[table_mx + id] = &CPUcore::op_##name##_w<&CPUcore::op_##fn##_w, x>; + + opEII(0x00, interrupt, 0xfffe, 0xffe6) + opMF (0x01, read_idpx, ora) + opEII(0x02, interrupt, 0xfff4, 0xffe4) + opMF (0x03, read_sr, ora) + opMF (0x04, adjust_dp, tsb) + opMF (0x05, read_dp, ora) + opMF (0x06, adjust_dp, asl) + opMF (0x07, read_ildp, ora) + opA (0x08, php) + opMF (0x09, read_const, ora) + opM (0x0a, asl_imm) + opE (0x0b, phd) + opMF (0x0c, adjust_addr, tsb) + opMF (0x0d, read_addr, ora) + opMF (0x0e, adjust_addr, asl) + opMF (0x0f, read_long, ora) + opAII(0x10, branch, 0x80, false) + opMF (0x11, read_idpy, ora) + opMF (0x12, read_idp, ora) + opMF (0x13, read_isry, ora) + opMF (0x14, adjust_dp, trb) + opMFI(0x15, read_dpr, ora, X) + opMF (0x16, adjust_dpx, asl) + opMF (0x17, read_ildpy, ora) + opAII(0x18, flag, 0x01, 0x00) + opMF (0x19, read_addry, ora) + opMII(0x1a, adjust_imm, A, +1) + opE (0x1b, tcs) + opMF (0x1c, adjust_addr, trb) + opMF (0x1d, read_addrx, ora) + opMF (0x1e, adjust_addrx, asl) + opMF (0x1f, read_longx, ora) + opA (0x20, jsr_addr) + opMF (0x21, read_idpx, and) + opE (0x22, jsr_long) + opMF (0x23, read_sr, and) + opMF (0x24, read_dp, bit) + opMF (0x25, read_dp, and) + opMF (0x26, adjust_dp, rol) + opMF (0x27, read_ildp, and) + opE (0x28, plp) + opMF (0x29, read_const, and) + opM (0x2a, rol_imm) + opE (0x2b, pld) + opMF (0x2c, read_addr, bit) + opMF (0x2d, read_addr, and) + opMF (0x2e, adjust_addr, rol) + opMF (0x2f, read_long, and) + opAII(0x30, branch, 0x80, true) + opMF (0x31, read_idpy, and) + opMF (0x32, read_idp, and) + opMF (0x33, read_isry, and) + opMFI(0x34, read_dpr, bit, X) + opMFI(0x35, read_dpr, and, X) + opMF (0x36, adjust_dpx, rol) + opMF (0x37, read_ildpy, and) + opAII(0x38, flag, 0x01, 0x01) + opMF (0x39, read_addry, and) + opMII(0x3a, adjust_imm, A, -1) + opE (0x3b, tsc) + opMF (0x3c, read_addrx, bit) + opMF (0x3d, read_addrx, and) + opMF (0x3e, adjust_addrx, rol) + opMF (0x3f, read_longx, and) + opE (0x40, rti) + opMF (0x41, read_idpx, eor) + opA (0x42, wdm) + opMF (0x43, read_sr, eor) + opXI (0x44, move, -1) + opMF (0x45, read_dp, eor) + opMF (0x46, adjust_dp, lsr) + opMF (0x47, read_ildp, eor) + opMI (0x48, push, A) + opMF (0x49, read_const, eor) + opM (0x4a, lsr_imm) + opA (0x4b, phk) + opA (0x4c, jmp_addr) + opMF (0x4d, read_addr, eor) + opMF (0x4e, adjust_addr, lsr) + opMF (0x4f, read_long, eor) + opAII(0x50, branch, 0x40, false) + opMF (0x51, read_idpy, eor) + opMF (0x52, read_idp, eor) + opMF (0x53, read_isry, eor) + opXI (0x54, move, +1) + opMFI(0x55, read_dpr, eor, X) + opMF (0x56, adjust_dpx, lsr) + opMF (0x57, read_ildpy, eor) + opAII(0x58, flag, 0x04, 0x00) + opMF (0x59, read_addry, eor) + opXI (0x5a, push, Y) + opAII(0x5b, transfer_w, A, D) + opA (0x5c, jmp_long) + opMF (0x5d, read_addrx, eor) + opMF (0x5e, adjust_addrx, lsr) + opMF (0x5f, read_longx, eor) + opA (0x60, rts) + opMF (0x61, read_idpx, adc) + opE (0x62, per) + opMF (0x63, read_sr, adc) + opMI (0x64, write_dp, Z) + opMF (0x65, read_dp, adc) + opMF (0x66, adjust_dp, ror) + opMF (0x67, read_ildp, adc) + opMI (0x68, pull, A) + opMF (0x69, read_const, adc) + opM (0x6a, ror_imm) + opE (0x6b, rtl) + opA (0x6c, jmp_iaddr) + opMF (0x6d, read_addr, adc) + opMF (0x6e, adjust_addr, ror) + opMF (0x6f, read_long, adc) + opAII(0x70, branch, 0x40, true) + opMF (0x71, read_idpy, adc) + opMF (0x72, read_idp, adc) + opMF (0x73, read_isry, adc) + opMII(0x74, write_dpr, Z, X) + opMFI(0x75, read_dpr, adc, X) + opMF (0x76, adjust_dpx, ror) + opMF (0x77, read_ildpy, adc) + opAII(0x78, flag, 0x04, 0x04) + opMF (0x79, read_addry, adc) + opXI (0x7a, pull, Y) + opAII(0x7b, transfer_w, D, A) + opA (0x7c, jmp_iaddrx) + opMF (0x7d, read_addrx, adc) + opMF (0x7e, adjust_addrx, ror) + opMF (0x7f, read_longx, adc) + opA (0x80, bra) + opM (0x81, sta_idpx) + opA (0x82, brl) + opM (0x83, sta_sr) + opXI (0x84, write_dp, Y) + opMI (0x85, write_dp, A) + opXI (0x86, write_dp, X) + opM (0x87, sta_ildp) + opXII(0x88, adjust_imm, Y, -1) + opM (0x89, read_bit_const) + opMII(0x8a, transfer, X, A) + opA (0x8b, phb) + opXI (0x8c, write_addr, Y) + opMI (0x8d, write_addr, A) + opXI (0x8e, write_addr, X) + opMI (0x8f, write_longr, Z) + opAII(0x90, branch, 0x01, false) + opM (0x91, sta_idpy) + opM (0x92, sta_idp) + opM (0x93, sta_isry) + opXII(0x94, write_dpr, Y, X) + opMII(0x95, write_dpr, A, X) + opXII(0x96, write_dpr, X, Y) + opM (0x97, sta_ildpy) + opMII(0x98, transfer, Y, A) + opMII(0x99, write_addrr, A, Y) + opE (0x9a, txs) + opXII(0x9b, transfer, X, Y) + opMI (0x9c, write_addr, Z) + opMII(0x9d, write_addrr, A, X) + opMII(0x9e, write_addrr, Z, X) + opMI (0x9f, write_longr, X) + opXF (0xa0, read_const, ldy) + opMF (0xa1, read_idpx, lda) + opXF (0xa2, read_const, ldx) + opMF (0xa3, read_sr, lda) + opXF (0xa4, read_dp, ldy) + opMF (0xa5, read_dp, lda) + opXF (0xa6, read_dp, ldx) + opMF (0xa7, read_ildp, lda) + opXII(0xa8, transfer, A, Y) + opMF (0xa9, read_const, lda) + opXII(0xaa, transfer, A, X) + opA (0xab, plb) + opXF (0xac, read_addr, ldy) + opMF (0xad, read_addr, lda) + opXF (0xae, read_addr, ldx) + opMF (0xaf, read_long, lda) + opAII(0xb0, branch, 0x01, true) + opMF (0xb1, read_idpy, lda) + opMF (0xb2, read_idp, lda) + opMF (0xb3, read_isry, lda) + opXFI(0xb4, read_dpr, ldy, X) + opMFI(0xb5, read_dpr, lda, X) + opXFI(0xb6, read_dpr, ldx, Y) + opMF (0xb7, read_ildpy, lda) + opAII(0xb8, flag, 0x40, 0x00) + opMF (0xb9, read_addry, lda) + opX (0xba, tsx) + opXII(0xbb, transfer, Y, X) + opXF (0xbc, read_addrx, ldy) + opMF (0xbd, read_addrx, lda) + opXF (0xbe, read_addry, ldx) + opMF (0xbf, read_longx, lda) + opXF (0xc0, read_const, cpy) + opMF (0xc1, read_idpx, cmp) + opEI (0xc2, pflag, 0) + opMF (0xc3, read_sr, cmp) + opXF (0xc4, read_dp, cpy) + opMF (0xc5, read_dp, cmp) + opMF (0xc6, adjust_dp, dec) + opMF (0xc7, read_ildp, cmp) + opXII(0xc8, adjust_imm, Y, +1) + opMF (0xc9, read_const, cmp) + opXII(0xca, adjust_imm, X, -1) + opA (0xcb, wai) + opXF (0xcc, read_addr, cpy) + opMF (0xcd, read_addr, cmp) + opMF (0xce, adjust_addr, dec) + opMF (0xcf, read_long, cmp) + opAII(0xd0, branch, 0x02, false) + opMF (0xd1, read_idpy, cmp) + opMF (0xd2, read_idp, cmp) + opMF (0xd3, read_isry, cmp) + opE (0xd4, pei) + opMFI(0xd5, read_dpr, cmp, X) + opMF (0xd6, adjust_dpx, dec) + opMF (0xd7, read_ildpy, cmp) + opAII(0xd8, flag, 0x08, 0x00) + opMF (0xd9, read_addry, cmp) + opXI (0xda, push, X) + opA (0xdb, stp) + opA (0xdc, jmp_iladdr) + opMF (0xdd, read_addrx, cmp) + opMF (0xde, adjust_addrx, dec) + opMF (0xdf, read_longx, cmp) + opXF (0xe0, read_const, cpx) + opMF (0xe1, read_idpx, sbc) + opEI (0xe2, pflag, 1) + opMF (0xe3, read_sr, sbc) + opXF (0xe4, read_dp, cpx) + opMF (0xe5, read_dp, sbc) + opMF (0xe6, adjust_dp, inc) + opMF (0xe7, read_ildp, sbc) + opXII(0xe8, adjust_imm, X, +1) + opMF (0xe9, read_const, sbc) + opA (0xea, nop) + opA (0xeb, xba) + opXF (0xec, read_addr, cpx) + opMF (0xed, read_addr, sbc) + opMF (0xee, adjust_addr, inc) + opMF (0xef, read_long, sbc) + opAII(0xf0, branch, 0x02, true) + opMF (0xf1, read_idpy, sbc) + opMF (0xf2, read_idp, sbc) + opMF (0xf3, read_isry, sbc) + opE (0xf4, pea) + opMFI(0xf5, read_dpr, sbc, X) + opMF (0xf6, adjust_dpx, inc) + opMF (0xf7, read_ildpy, sbc) + opAII(0xf8, flag, 0x08, 0x08) + opMF (0xf9, read_addry, sbc) + opXI (0xfa, pull, X) + opA (0xfb, xce) + opE (0xfc, jsr_iaddrx) + opMF (0xfd, read_addrx, sbc) + opMF (0xfe, adjust_addrx, inc) + opMF (0xff, read_longx, sbc) + + #undef opA + #undef opAII + #undef opE + #undef opEI + #undef opEII + #undef opM + #undef opMI + #undef opMII + #undef opMF + #undef opMFI + #undef opX + #undef opXI + #undef opXII + #undef opXF + #undef opXFI +} + +void CPUcore::update_table() { + if(regs.e) { + opcode_table = &op_table[table_EM]; + } else if(regs.p.m) { + if(regs.p.x) { + opcode_table = &op_table[table_MX]; + } else { + opcode_table = &op_table[table_Mx]; + } + } else { + if(regs.p.x) { + opcode_table = &op_table[table_mX]; + } else { + opcode_table = &op_table[table_mx]; + } + } +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/cpu-debugger.cpp b/libmednahawk/src/snes/src/cpu/cpu-debugger.cpp new file mode 100644 index 0000000000..31f3651dac --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/cpu-debugger.cpp @@ -0,0 +1,59 @@ +#ifdef CPU_CPP + +bool CPUDebugger::property(unsigned id, string &name, string &value) { + unsigned n = 0; + + //internal + if(id == n++) { name = "S-CPU MDR"; value = string::printf("0x%.2x", mdr()); return true; } + + //$2181-2183 + if(id == n++) { name = "$2181-$2183"; value = ""; return true; } + if(id == n++) { name = "WRAM Address"; value = string::printf("0x%.6x", wram_address()); return true; } + + //$4016 + if(id == n++) { name = "$4016"; value = ""; return true; } + if(id == n++) { name = "Joypad Strobe Latch"; value = joypad_strobe_latch(); return true; } + + //$4200 + if(id == n++) { name = "$4200"; value = ""; return true; } + if(id == n++) { name = "NMI Enable"; value = nmi_enable(); return true; } + if(id == n++) { name = "H-IRQ Enable"; value = hirq_enable(); return true; } + if(id == n++) { name = "V-IRQ Enable"; value = virq_enable(); return true; } + if(id == n++) { name = "Auto Joypad Poll"; value = auto_joypad_poll(); return true; } + + //$4201 + if(id == n++) { name = "$4201"; value = ""; return true; } + if(id == n++) { name = "PIO"; value = string::printf("0x%.2x", pio_bits()); return true; } + + //$4202 + if(id == n++) { name = "$4202"; value = ""; return true; } + if(id == n++) { name = "Multiplicand"; value = string::printf("0x%.2x", multiplicand()); return true; } + + //$4203 + if(id == n++) { name = "$4203"; value = ""; return true; } + if(id == n++) { name = "Multiplier"; value = string::printf("0x%.2x", multiplier()); return true; } + + //$4204-$4205 + if(id == n++) { name = "$4204-$4205"; value = ""; return true; } + if(id == n++) { name = "Dividend"; value = string::printf("0x%.4x", dividend()); return true; } + + //$4206 + if(id == n++) { name = "$4206"; value = ""; return true; } + if(id == n++) { name = "Divisor"; value = string::printf("0x%.2x", divisor()); return true; } + + //$4207-$4208 + if(id == n++) { name = "$4207-$4208"; value = ""; return true; } + if(id == n++) { name = "H-Time"; value = string::printf("0x%.4x", htime()); return true; } + + //$4209-$420a + if(id == n++) { name = "$4209-$420a"; value = ""; return true; } + if(id == n++) { name = "V-Time"; value = string::printf("0x%.4x", vtime()); return true; } + + //$420d + if(id == n++) { name = "$420d"; value = ""; return true; } + if(id == n++) { name = "FastROM Enable"; value = fastrom_enable(); return true; } + + return false; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/cpu-debugger.hpp b/libmednahawk/src/snes/src/cpu/cpu-debugger.hpp new file mode 100644 index 0000000000..4220e231cb --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/cpu-debugger.hpp @@ -0,0 +1,42 @@ +struct CPUDebugger : ChipDebugger { + bool property(unsigned id, string &name, string &value); + + //internal + virtual unsigned mdr() { return 0; } + + //$2181-2183 + virtual unsigned wram_address() { return 0; } + + //$4016 + virtual bool joypad_strobe_latch() { return 0; } + + //$4200 + virtual bool nmi_enable() { return 0; } + virtual bool hirq_enable() { return 0; } + virtual bool virq_enable() { return 0; } + virtual bool auto_joypad_poll() { return 0; } + + //$4201 + virtual unsigned pio_bits() { return 0; } + + //$4202 + virtual unsigned multiplicand() { return 0; } + + //$4203 + virtual unsigned multiplier() { return 0; } + + //$4204-$4205 + virtual unsigned dividend() { return 0; } + + //$4206 + virtual unsigned divisor() { return 0; } + + //$4207-$4208 + virtual unsigned htime() { return 0; } + + //$4209-$420a + virtual unsigned vtime() { return 0; } + + //$420d + virtual bool fastrom_enable() { return 0; } +}; diff --git a/libmednahawk/src/snes/src/cpu/cpu.cpp b/libmednahawk/src/snes/src/cpu/cpu.cpp new file mode 100644 index 0000000000..80ce757013 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/cpu.cpp @@ -0,0 +1,29 @@ +#include <../base.hpp> + +#define CPU_CPP +namespace SNES { + +#if defined(DEBUGGER) + #include "cpu-debugger.cpp" +#endif + +void CPU::power() { + cpu_version = config.cpu.version; +} + +void CPU::reset() { + PPUcounter::reset(); +} + +void CPU::serialize(serializer &s) { + PPUcounter::serialize(s); + s.integer(cpu_version); +} + +CPU::CPU() { +} + +CPU::~CPU() { +} + +}; diff --git a/libmednahawk/src/snes/src/cpu/cpu.hpp b/libmednahawk/src/snes/src/cpu/cpu.hpp new file mode 100644 index 0000000000..c48131e79e --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/cpu.hpp @@ -0,0 +1,27 @@ +#if defined(DEBUGGER) + #include "cpu-debugger.hpp" +#endif + +class CPU : public PPUcounter, public MMIO { +public: + virtual void enter() = 0; + + //CPU version number + //* 1 and 2 are known + //* reported by $4210 + //* affects timing (DRAM refresh, HDMA init, etc) + uint8 cpu_version; + + virtual uint8 pio() = 0; + virtual bool joylatch() = 0; + virtual uint8 port_read(uint8 port) = 0; + virtual void port_write(uint8 port, uint8 value) = 0; + + virtual void scanline() = 0; + virtual void power(); + virtual void reset(); + + virtual void serialize(serializer&); + CPU(); + virtual ~CPU(); +}; diff --git a/libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.cpp b/libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.cpp new file mode 100644 index 0000000000..3731b9f96d --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.cpp @@ -0,0 +1,88 @@ +#ifdef SCPU_CPP + +void sCPUDebugger::op_step() { + bool break_event = false; + + usage[regs.pc] &= ~(UsageFlagM | UsageFlagX); + usage[regs.pc] |= UsageExec | (regs.p.m << 1) | (regs.p.x << 0); + opcode_pc = regs.pc; + + if(debugger.step_cpu) { + debugger.break_event = Debugger::CPUStep; + scheduler.exit(Scheduler::DebuggerEvent); + } else { + debugger.breakpoint_test(Debugger::Breakpoint::CPUBus, Debugger::Breakpoint::Exec, regs.pc, 0x00); + } + + if(step_event) step_event(); + sCPU::op_step(); + scheduler.sync_cpusmp(); +} + +uint8 sCPUDebugger::op_read(uint32 addr) { + uint8 data = sCPU::op_read(addr); + usage[addr] |= UsageRead; + debugger.breakpoint_test(Debugger::Breakpoint::CPUBus, Debugger::Breakpoint::Read, addr, data); + return data; +} + +void sCPUDebugger::op_write(uint32 addr, uint8 data) { + sCPU::op_write(addr, data); + usage[addr] |= UsageWrite; + usage[addr] &= ~UsageExec; + debugger.breakpoint_test(Debugger::Breakpoint::CPUBus, Debugger::Breakpoint::Write, addr, data); +} + +sCPUDebugger::sCPUDebugger() { + usage = new uint8[1 << 24](); + opcode_pc = 0x8000; +} + +sCPUDebugger::~sCPUDebugger() { + delete[] usage; +} + +//=========== +//CPUDebugger +//=========== + +//internal +unsigned sCPUDebugger::mdr() { return regs.mdr; } + +//$2181-$2183 +unsigned sCPUDebugger::wram_address() { return status.wram_addr; } + +//$4016 +bool sCPUDebugger::joypad_strobe_latch() { return status.joypad_strobe_latch; } + +//$4200 +bool sCPUDebugger::nmi_enable() { return status.nmi_enabled; } +bool sCPUDebugger::hirq_enable() { return status.hirq_enabled; } +bool sCPUDebugger::virq_enable() { return status.virq_enabled; } +bool sCPUDebugger::auto_joypad_poll() { return status.auto_joypad_poll; } + +//$4201 +unsigned sCPUDebugger::pio_bits() { return status.pio; } + +//$4202 +unsigned sCPUDebugger::multiplicand() { return status.mul_a; } + +//$4203 +unsigned sCPUDebugger::multiplier() { return status.mul_b; } + +//$4204-$4205 +unsigned sCPUDebugger::dividend() { return status.div_a; } + +//$4206 +unsigned sCPUDebugger::divisor() { return status.div_b; } + +//$4207-$4208 +unsigned sCPUDebugger::htime() { return status.hirq_pos; } + +//$4209-$420a +unsigned sCPUDebugger::vtime() { return status.virq_pos; } + +//$420d +bool sCPUDebugger::fastrom_enable() { return status.rom_speed; } + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.hpp b/libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.hpp new file mode 100644 index 0000000000..8cee02b3e6 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/debugger/debugger.hpp @@ -0,0 +1,64 @@ +class sCPUDebugger : public sCPU, public CPUDebugger { +public: + function step_event; + + enum Usage { + UsageRead = 0x80, + UsageWrite = 0x40, + UsageExec = 0x20, + UsageFlagM = 0x02, + UsageFlagX = 0x01, + }; + uint8 *usage; + uint32 opcode_pc; //points to the current opcode, used to backtrace on read/write breakpoints + + void op_step(); + uint8 op_read(uint32 addr); + void op_write(uint32 addr, uint8 data); + + sCPUDebugger(); + ~sCPUDebugger(); + + //=========== + //CPUDebugger + //=========== + + //internal + unsigned mdr(); + + //$2181-$2183 + unsigned wram_address(); + + //$4016 + bool joypad_strobe_latch(); + + //$4200 + bool nmi_enable(); + bool hirq_enable(); + bool virq_enable(); + bool auto_joypad_poll(); + + //$4201 + unsigned pio_bits(); + + //$4202 + unsigned multiplicand(); + + //$4203 + unsigned multiplier(); + + //$4204-$4205 + unsigned dividend(); + + //$4206 + unsigned divisor(); + + //$4207-$4208 + unsigned htime(); + + //$4209-$420a + unsigned vtime(); + + //$420d + bool fastrom_enable(); +}; diff --git a/libmednahawk/src/snes/src/cpu/scpu/dma/dma.cpp b/libmednahawk/src/snes/src/cpu/scpu/dma/dma.cpp new file mode 100644 index 0000000000..866c7c0331 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/dma/dma.cpp @@ -0,0 +1,272 @@ +#ifdef SCPU_CPP + +void sCPU::dma_add_clocks(unsigned clocks) { + status.dma_clocks += clocks; + add_clocks(clocks); + scheduler.sync_cpucop(); + scheduler.sync_cpuppu(); +} + +bool sCPU::dma_addr_valid(uint32 abus) { + //reads from B-bus or S-CPU registers are invalid + if((abus & 0x40ff00) == 0x2100) return false; //$[00-3f|80-bf]:[2100-21ff] + if((abus & 0x40fe00) == 0x4000) return false; //$[00-3f|80-bf]:[4000-41ff] + if((abus & 0x40ffe0) == 0x4200) return false; //$[00-3f|80-bf]:[4200-421f] + if((abus & 0x40ff80) == 0x4300) return false; //$[00-3f|80-bf]:[4300-437f] + return true; +} + +uint8 sCPU::dma_read(uint32 abus) { + if(dma_addr_valid(abus) == false) return 0x00; //does not return S-CPU MDR + return bus.read(abus); +} + +void sCPU::dma_transfer(bool direction, uint8 bbus, uint32 abus) { + if(direction == 0) { + //a->b transfer (to $21xx) + if(bbus == 0x80 && ((abus & 0xfe0000) == 0x7e0000 || (abus & 0x40e000) == 0x0000)) { + //illegal WRAM->WRAM transfer (bus conflict) + //read most likely occurs; no write occurs + //read is irrelevent, as it cannot be observed by software + dma_add_clocks(8); + } else { + dma_add_clocks(4); + uint8 data = dma_read(abus); + dma_add_clocks(4); + bus.write(0x2100 | bbus, data); + } + } else { + //b->a transfer (from $21xx) + if(bbus == 0x80 && ((abus & 0xfe0000) == 0x7e0000 || (abus & 0x40e000) == 0x0000)) { + //illegal WRAM->WRAM transfer (bus conflict) + //no read occurs; write does occur + dma_add_clocks(8); + bus.write(abus, 0x00); //does not write S-CPU MDR + } else { + dma_add_clocks(4); + uint8 data = bus.read(0x2100 | bbus); + dma_add_clocks(4); + if(dma_addr_valid(abus) == true) { + bus.write(abus, data); + } + } + } +} + +/***** + * address calculation functions + *****/ + +uint8 sCPU::dma_bbus(uint8 i, uint8 index) { + switch(channel[i].xfermode) { default: + case 0: return (channel[i].destaddr); //0 + case 1: return (channel[i].destaddr + (index & 1)); //0,1 + case 2: return (channel[i].destaddr); //0,0 + case 3: return (channel[i].destaddr + ((index >> 1) & 1)); //0,0,1,1 + case 4: return (channel[i].destaddr + (index & 3)); //0,1,2,3 + case 5: return (channel[i].destaddr + (index & 1)); //0,1,0,1 + case 6: return (channel[i].destaddr); //0,0 [2] + case 7: return (channel[i].destaddr + ((index >> 1) & 1)); //0,0,1,1 [3] + } +} + +inline uint32 sCPU::dma_addr(uint8 i) { + uint32 r = (channel[i].srcbank << 16) | (channel[i].srcaddr); + + if(channel[i].fixedxfer == false) { + if(channel[i].reversexfer == false) { + channel[i].srcaddr++; + } else { + channel[i].srcaddr--; + } + } + + return r; +} + +inline uint32 sCPU::hdma_addr(uint8 i) { + return (channel[i].srcbank << 16) | (channel[i].hdma_addr++); +} + +inline uint32 sCPU::hdma_iaddr(uint8 i) { + return (channel[i].hdma_ibank << 16) | (channel[i].hdma_iaddr++); +} + +/***** + * DMA functions + *****/ + +uint8 sCPU::dma_enabled_channels() { + uint8 r = 0; + for(unsigned i = 0; i < 8; i++) { + if(channel[i].dma_enabled) r++; + } + return r; +} + +void sCPU::dma_run() { + dma_add_clocks(8); + cycle_edge(); + + for(unsigned i = 0; i < 8; i++) { + if(channel[i].dma_enabled == false) continue; + dma_add_clocks(8); + cycle_edge(); + + unsigned index = 0; + do { + dma_transfer(channel[i].direction, dma_bbus(i, index++), dma_addr(i)); + cycle_edge(); + } while(channel[i].dma_enabled && --channel[i].xfersize); + + channel[i].dma_enabled = false; + } + + status.irq_lock = true; + event.enqueue(2, EventIrqLockRelease); +} + +/***** + * HDMA functions + *****/ + +inline bool sCPU::hdma_active(uint8 i) { + return (channel[i].hdma_enabled && !channel[i].hdma_completed); +} + +inline bool sCPU::hdma_active_after(uint8 i) { + for(unsigned n = i + 1; n < 8; n++) { + if(hdma_active(n) == true) return true; + } + return false; +} + +inline uint8 sCPU::hdma_enabled_channels() { + uint8 r = 0; + for(unsigned i = 0; i < 8; i++) { + if(channel[i].hdma_enabled) r++; + } + return r; +} + +inline uint8 sCPU::hdma_active_channels() { + uint8 r = 0; + for(unsigned i = 0; i < 8; i++) { + if(hdma_active(i) == true) r++; + } + return r; +} + +void sCPU::hdma_update(uint8 i) { + channel[i].hdma_line_counter = dma_read(hdma_addr(i)); + dma_add_clocks(8); + + channel[i].hdma_completed = (channel[i].hdma_line_counter == 0); + channel[i].hdma_do_transfer = !channel[i].hdma_completed; + + if(channel[i].hdma_indirect) { + channel[i].hdma_iaddr = dma_read(hdma_addr(i)) << 8; + dma_add_clocks(8); + + if(!channel[i].hdma_completed || hdma_active_after(i)) { + channel[i].hdma_iaddr >>= 8; + channel[i].hdma_iaddr |= dma_read(hdma_addr(i)) << 8; + dma_add_clocks(8); + } + } +} + +void sCPU::hdma_run() { + dma_add_clocks(8); + + for(unsigned i = 0; i < 8; i++) { + if(hdma_active(i) == false) continue; + channel[i].dma_enabled = false; //HDMA run during DMA will stop DMA mid-transfer + + if(channel[i].hdma_do_transfer) { + static const unsigned transfer_length[8] = { 1, 2, 2, 4, 4, 4, 2, 4 }; + unsigned length = transfer_length[channel[i].xfermode]; + for(unsigned index = 0; index < length; index++) { + unsigned addr = !channel[i].hdma_indirect ? hdma_addr(i) : hdma_iaddr(i); + dma_transfer(channel[i].direction, dma_bbus(i, index), addr); + } + } + } + + for(unsigned i = 0; i < 8; i++) { + if(hdma_active(i) == false) continue; + + channel[i].hdma_line_counter--; + channel[i].hdma_do_transfer = bool(channel[i].hdma_line_counter & 0x80); + if((channel[i].hdma_line_counter & 0x7f) == 0) { + hdma_update(i); + } else { + dma_add_clocks(8); + } + } + + status.irq_lock = true; + event.enqueue(2, EventIrqLockRelease); +} + +void sCPU::hdma_init_reset() { + for(unsigned i = 0; i < 8; i++) { + channel[i].hdma_completed = false; + channel[i].hdma_do_transfer = false; + } +} + +void sCPU::hdma_init() { + dma_add_clocks(8); + + for(unsigned i = 0; i < 8; i++) { + if(!channel[i].hdma_enabled) continue; + channel[i].dma_enabled = false; //HDMA init during DMA will stop DMA mid-transfer + + channel[i].hdma_addr = channel[i].srcaddr; + hdma_update(i); + } + + status.irq_lock = true; + event.enqueue(2, EventIrqLockRelease); +} + +/***** + * power / reset functions + *****/ + +void sCPU::dma_power() { + for(unsigned i = 0; i < 8; i++) { + channel[i].dmap = 0xff; + channel[i].direction = 1; + channel[i].hdma_indirect = true; + channel[i].reversexfer = true; + channel[i].fixedxfer = true; + channel[i].xfermode = 7; + + channel[i].destaddr = 0xff; + + channel[i].srcaddr = 0xffff; + channel[i].srcbank = 0xff; + + channel[i].xfersize = 0xffff; + //channel[i].hdma_iaddr = 0xffff; //union with xfersize + channel[i].hdma_ibank = 0xff; + + channel[i].hdma_addr = 0xffff; + channel[i].hdma_line_counter = 0xff; + channel[i].unknown = 0xff; + } +} + +void sCPU::dma_reset() { + for(unsigned i = 0; i < 8; i++) { + channel[i].dma_enabled = false; + channel[i].hdma_enabled = false; + + channel[i].hdma_completed = false; + channel[i].hdma_do_transfer = false; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/dma/dma.hpp b/libmednahawk/src/snes/src/cpu/scpu/dma/dma.hpp new file mode 100644 index 0000000000..79102f0582 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/dma/dma.hpp @@ -0,0 +1,71 @@ + struct { + //$420b + bool dma_enabled; + + //$420c + bool hdma_enabled; + + //$43x0 + uint8 dmap; + bool direction; + bool hdma_indirect; + bool reversexfer; + bool fixedxfer; + uint8 xfermode; + + //$43x1 + uint8 destaddr; + + //$43x2-$43x3 + uint16 srcaddr; + + //$43x4 + uint8 srcbank; + + //$43x5-$43x6 + union { + uint16 xfersize; + uint16 hdma_iaddr; + }; + + //$43x7 + uint8 hdma_ibank; + + //$43x8-$43x9 + uint16 hdma_addr; + + //$43xa + uint8 hdma_line_counter; + + //$43xb/$43xf + uint8 unknown; + + //internal variables + bool hdma_completed; + bool hdma_do_transfer; + } channel[8]; + + void dma_add_clocks(unsigned clocks); + bool dma_addr_valid(uint32 abus); + uint8 dma_read(uint32 abus); + void dma_transfer(bool direction, uint8 bbus, uint32 abus); + + uint8 dma_bbus(uint8 i, uint8 index); + uint32 dma_addr(uint8 i); + uint32 hdma_addr(uint8 i); + uint32 hdma_iaddr(uint8 i); + + uint8 dma_enabled_channels(); + void dma_run(); + + bool hdma_active(uint8 i); + bool hdma_active_after(uint8 i); + uint8 hdma_enabled_channels(); + uint8 hdma_active_channels(); + void hdma_update(uint8 i); + void hdma_run(); + void hdma_init_reset(); + void hdma_init(); + + void dma_power(); + void dma_reset(); diff --git a/libmednahawk/src/snes/src/cpu/scpu/memory/memory.cpp b/libmednahawk/src/snes/src/cpu/scpu/memory/memory.cpp new file mode 100644 index 0000000000..7070221513 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/memory/memory.cpp @@ -0,0 +1,35 @@ +#ifdef SCPU_CPP + +void sCPU::op_io() { + status.clock_count = 6; + cycle_edge(); + add_clocks(6); +} + +uint8 sCPU::op_read(uint32 addr) { + status.clock_count = speed(addr); + cycle_edge(); + add_clocks(status.clock_count - 4); + regs.mdr = bus.read(addr); + add_clocks(4); + return regs.mdr; +} + +void sCPU::op_write(uint32 addr, uint8 data) { + status.clock_count = speed(addr); + cycle_edge(); + add_clocks(status.clock_count); + bus.write(addr, regs.mdr = data); +} + +unsigned sCPU::speed(unsigned addr) const { + if(addr & 0x408000) { + if(addr & 0x800000) return status.rom_speed; + return 8; + } + if((addr + 0x6000) & 0x4000) return 8; + if((addr - 0x4000) & 0x7e00) return 6; + return 12; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/memory/memory.hpp b/libmednahawk/src/snes/src/cpu/scpu/memory/memory.hpp new file mode 100644 index 0000000000..c74acf3663 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/memory/memory.hpp @@ -0,0 +1,16 @@ +//============================ +//CPU<>APU communication ports +//============================ + +uint8 apu_port[4]; +uint8 port_read(uint8 port) { return apu_port[port & 3]; } +void port_write(uint8 port, uint8 data) { apu_port[port & 3] = data; } + +//====================== +//core CPU bus functions +//====================== + +void op_io(); +debugvirtual uint8 op_read(uint32 addr); +debugvirtual void op_write(uint32 addr, uint8 data); +alwaysinline unsigned speed(unsigned addr) const; diff --git a/libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.cpp b/libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.cpp new file mode 100644 index 0000000000..02c521f3b9 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.cpp @@ -0,0 +1,537 @@ +#ifdef SCPU_CPP + +uint8 sCPU::pio() { return status.pio; } +bool sCPU::joylatch() { return status.joypad_strobe_latch; } + +//WMDATA +uint8 sCPU::mmio_r2180() { + uint8 r = bus.read(0x7e0000 | status.wram_addr); + status.wram_addr = (status.wram_addr + 1) & 0x01ffff; + return r; +} + +//WMDATA +void sCPU::mmio_w2180(uint8 data) { + bus.write(0x7e0000 | status.wram_addr, data); + status.wram_addr = (status.wram_addr + 1) & 0x01ffff; +} + +//WMADDL +void sCPU::mmio_w2181(uint8 data) { + status.wram_addr = (status.wram_addr & 0xffff00) | (data); + status.wram_addr &= 0x01ffff; +} + +//WMADDM +void sCPU::mmio_w2182(uint8 data) { + status.wram_addr = (status.wram_addr & 0xff00ff) | (data << 8); + status.wram_addr &= 0x01ffff; +} + +//WMADDH +void sCPU::mmio_w2183(uint8 data) { + status.wram_addr = (status.wram_addr & 0x00ffff) | (data << 16); + status.wram_addr &= 0x01ffff; +} + +//JOYSER0 +//bit 0 is shared between JOYSER0 and JOYSER1, therefore +//strobing $4016.d0 affects both controller port latches. +//$4017 bit 0 writes are ignored. +void sCPU::mmio_w4016(uint8 data) { + status.joypad_strobe_latch = !!(data & 1); + + if(status.joypad_strobe_latch == 1) { + input.poll(); + } +} + +//JOYSER0 +//7-2 = MDR +//1-0 = Joypad serial data +// +//TODO: test whether strobe latch of zero returns +//realtime or buffered status of joypadN.b +uint8 sCPU::mmio_r4016() { + uint8 r = regs.mdr & 0xfc; + r |= input.port_read(0) & 3; + return r; +} + +//JOYSER1 +//7-5 = MDR +//4-2 = Always 1 (pins are connected to GND) +//1-0 = Joypad serial data +uint8 sCPU::mmio_r4017() { + uint8 r = (regs.mdr & 0xe0) | 0x1c; + r |= input.port_read(1) & 3; + return r; +} + +//NMITIMEN +void sCPU::mmio_w4200(uint8 data) { + status.auto_joypad_poll = !!(data & 0x01); + nmitimen_update(data); +} + +//WRIO +void sCPU::mmio_w4201(uint8 data) { + if((status.pio & 0x80) && !(data & 0x80)) { + ppu.latch_counters(); + } + status.pio = data; +} + +//WRMPYA +void sCPU::mmio_w4202(uint8 data) { + status.mul_a = data; +} + +//WRMPYB +void sCPU::mmio_w4203(uint8 data) { + status.mul_b = data; + status.r4216 = status.mul_a * status.mul_b; + + status.alu_lock = true; + event.enqueue(config.cpu.alu_mul_delay, EventAluLockRelease); +} + +//WRDIVL +void sCPU::mmio_w4204(uint8 data) { + status.div_a = (status.div_a & 0xff00) | (data); +} + +//WRDIVH +void sCPU::mmio_w4205(uint8 data) { + status.div_a = (status.div_a & 0x00ff) | (data << 8); +} + +//WRDIVB +void sCPU::mmio_w4206(uint8 data) { + status.div_b = data; + status.r4214 = (status.div_b) ? status.div_a / status.div_b : 0xffff; + status.r4216 = (status.div_b) ? status.div_a % status.div_b : status.div_a; + + status.alu_lock = true; + event.enqueue(config.cpu.alu_div_delay, EventAluLockRelease); +} + +//HTIMEL +void sCPU::mmio_w4207(uint8 data) { + status.hirq_pos = (status.hirq_pos & ~0xff) | (data); + status.hirq_pos &= 0x01ff; +} + +//HTIMEH +void sCPU::mmio_w4208(uint8 data) { + status.hirq_pos = (status.hirq_pos & 0xff) | (data << 8); + status.hirq_pos &= 0x01ff; +} + +//VTIMEL +void sCPU::mmio_w4209(uint8 data) { + status.virq_pos = (status.virq_pos & ~0xff) | (data); + status.virq_pos &= 0x01ff; +} + +//VTIMEH +void sCPU::mmio_w420a(uint8 data) { + status.virq_pos = (status.virq_pos & 0xff) | (data << 8); + status.virq_pos &= 0x01ff; +} + +//DMAEN +void sCPU::mmio_w420b(uint8 data) { + for(unsigned i = 0; i < 8; i++) { + channel[i].dma_enabled = data & (1 << i); + } + if(data) status.dma_pending = true; +} + +//HDMAEN +void sCPU::mmio_w420c(uint8 data) { + for(unsigned i = 0; i < 8; i++) { + channel[i].hdma_enabled = data & (1 << i); + } +} + +//MEMSEL +void sCPU::mmio_w420d(uint8 data) { + status.rom_speed = (data & 1 ? 6 : 8); +} + +//RDNMI +//7 = NMI acknowledge +//6-4 = MDR +//3-0 = CPU (5a22) version +uint8 sCPU::mmio_r4210() { + uint8 r = (regs.mdr & 0x70); + r |= (uint8)(rdnmi()) << 7; + r |= (cpu_version & 0x0f); + return r; +} + +//TIMEUP +//7 = IRQ acknowledge +//6-0 = MDR +uint8 sCPU::mmio_r4211() { + uint8 r = (regs.mdr & 0x7f); + r |= (uint8)(timeup()) << 7; + return r; +} + +//HVBJOY +//7 = VBLANK acknowledge +//6 = HBLANK acknowledge +//5-1 = MDR +//0 = JOYPAD acknowledge +uint8 sCPU::mmio_r4212() { + uint8 r = (regs.mdr & 0x3e); + uint16 vs = ppu.overscan() == false ? 225 : 240; + + //auto joypad polling + if(vcounter() >= vs && vcounter() <= (vs + 2))r |= 0x01; + + //hblank + if(hcounter() <= 2 || hcounter() >= 1096)r |= 0x40; + + //vblank + if(vcounter() >= vs)r |= 0x80; + + return r; +} + +//RDIO +uint8 sCPU::mmio_r4213() { + return status.pio; +} + +//RDDIVL +uint8 sCPU::mmio_r4214() { + if(status.alu_lock) return 0; + return status.r4214; +} + +//RDDIVH +uint8 sCPU::mmio_r4215() { + if(status.alu_lock) return 0; + return status.r4214 >> 8; +} + +//RDMPYL +uint8 sCPU::mmio_r4216() { + if(status.alu_lock) return 0; + return status.r4216; +} + +//RDMPYH +uint8 sCPU::mmio_r4217() { + if(status.alu_lock) return 0; + return status.r4216 >> 8; +} + +//TODO: handle reads during joypad polling (v=225-227) +uint8 sCPU::mmio_r4218() { return status.joy1l; } //JOY1L +uint8 sCPU::mmio_r4219() { return status.joy1h; } //JOY1H +uint8 sCPU::mmio_r421a() { return status.joy2l; } //JOY2L +uint8 sCPU::mmio_r421b() { return status.joy2h; } //JOY2H +uint8 sCPU::mmio_r421c() { return status.joy3l; } //JOY3L +uint8 sCPU::mmio_r421d() { return status.joy3h; } //JOY3H +uint8 sCPU::mmio_r421e() { return status.joy4l; } //JOY4L +uint8 sCPU::mmio_r421f() { return status.joy4h; } //JOY4H + +//DMAPx +uint8 sCPU::mmio_r43x0(uint8 i) { + return channel[i].dmap; +} + +//BBADx +uint8 sCPU::mmio_r43x1(uint8 i) { + return channel[i].destaddr; +} + +//A1TxL +uint8 sCPU::mmio_r43x2(uint8 i) { + return channel[i].srcaddr; +} + +//A1TxH +uint8 sCPU::mmio_r43x3(uint8 i) { + return channel[i].srcaddr >> 8; +} + +//A1Bx +uint8 sCPU::mmio_r43x4(uint8 i) { + return channel[i].srcbank; +} + +//DASxL +//union { uint16 xfersize; uint16 hdma_iaddr; }; +uint8 sCPU::mmio_r43x5(uint8 i) { + return channel[i].xfersize; +} + +//DASxH +//union { uint16 xfersize; uint16 hdma_iaddr; }; +uint8 sCPU::mmio_r43x6(uint8 i) { + return channel[i].xfersize >> 8; +} + +//DASBx +uint8 sCPU::mmio_r43x7(uint8 i) { + return channel[i].hdma_ibank; +} + +//A2AxL +uint8 sCPU::mmio_r43x8(uint8 i) { + return channel[i].hdma_addr; +} + +//A2AxH +uint8 sCPU::mmio_r43x9(uint8 i) { + return channel[i].hdma_addr >> 8; +} + +//NTRLx +uint8 sCPU::mmio_r43xa(uint8 i) { + return channel[i].hdma_line_counter; +} + +//??? +uint8 sCPU::mmio_r43xb(uint8 i) { + return channel[i].unknown; +} + +//DMAPx +void sCPU::mmio_w43x0(uint8 i, uint8 data) { + channel[i].dmap = data; + channel[i].direction = !!(data & 0x80); + channel[i].hdma_indirect = !!(data & 0x40); + channel[i].reversexfer = !!(data & 0x10); + channel[i].fixedxfer = !!(data & 0x08); + channel[i].xfermode = data & 7; +} + +//DDBADx +void sCPU::mmio_w43x1(uint8 i, uint8 data) { + channel[i].destaddr = data; +} + +//A1TxL +void sCPU::mmio_w43x2(uint8 i, uint8 data) { + channel[i].srcaddr = (channel[i].srcaddr & 0xff00) | (data); +} + +//A1TxH +void sCPU::mmio_w43x3(uint8 i, uint8 data) { + channel[i].srcaddr = (channel[i].srcaddr & 0x00ff) | (data << 8); +} + +//A1Bx +void sCPU::mmio_w43x4(uint8 i, uint8 data) { + channel[i].srcbank = data; +} + +//DASxL +//union { uint16 xfersize; uint16 hdma_iaddr; }; +void sCPU::mmio_w43x5(uint8 i, uint8 data) { + channel[i].xfersize = (channel[i].xfersize & 0xff00) | (data); +} + +//DASxH +//union { uint16 xfersize; uint16 hdma_iaddr; }; +void sCPU::mmio_w43x6(uint8 i, uint8 data) { + channel[i].xfersize = (channel[i].xfersize & 0x00ff) | (data << 8); +} + +//DASBx +void sCPU::mmio_w43x7(uint8 i, uint8 data) { + channel[i].hdma_ibank = data; +} + +//A2AxL +void sCPU::mmio_w43x8(uint8 i, uint8 data) { + channel[i].hdma_addr = (channel[i].hdma_addr & 0xff00) | (data); +} + +//A2AxH +void sCPU::mmio_w43x9(uint8 i, uint8 data) { + channel[i].hdma_addr = (channel[i].hdma_addr & 0x00ff) | (data << 8); +} + +//NTRLx +void sCPU::mmio_w43xa(uint8 i, uint8 data) { + channel[i].hdma_line_counter = data; +} + +//??? +void sCPU::mmio_w43xb(uint8 i, uint8 data) { + channel[i].unknown = data; +} + +void sCPU::mmio_power() { +} + +void sCPU::mmio_reset() { + //$2181-$2183 + status.wram_addr = 0x000000; + + //$4016-$4017 + status.joypad_strobe_latch = 0; + status.joypad1_bits = ~0; + status.joypad2_bits = ~0; + + //$4200 + status.nmi_enabled = false; + status.hirq_enabled = false; + status.virq_enabled = false; + status.auto_joypad_poll = false; + + //$4201 + status.pio = 0xff; + + //$4202-$4203 + status.mul_a = 0xff; + status.mul_b = 0xff; + + //$4204-$4206 + status.div_a = 0xffff; + status.div_b = 0xff; + + //$4207-$420a + status.hirq_pos = 0x01ff; + status.virq_pos = 0x01ff; + + //$420d + status.rom_speed = 8; + + //$4214-$4217 + status.r4214 = 0x0000; + status.r4216 = 0x0000; + + //$4218-$421f + status.joy1l = 0x00; + status.joy1h = 0x00; + status.joy2l = 0x00; + status.joy2h = 0x00; + status.joy3l = 0x00; + status.joy3h = 0x00; + status.joy4l = 0x00; + status.joy4h = 0x00; +} + +uint8 sCPU::mmio_read(unsigned addr) { + addr &= 0xffff; + + //APU + if((addr & 0xffc0) == 0x2140) { //$2140-$217f + scheduler.sync_cpusmp(); + return smp.port_read(addr & 3); + } + + //DMA + if((addr & 0xff80) == 0x4300) { //$4300-$437f + unsigned i = (addr >> 4) & 7; + switch(addr & 0xf) { + case 0x0: return mmio_r43x0(i); + case 0x1: return mmio_r43x1(i); + case 0x2: return mmio_r43x2(i); + case 0x3: return mmio_r43x3(i); + case 0x4: return mmio_r43x4(i); + case 0x5: return mmio_r43x5(i); + case 0x6: return mmio_r43x6(i); + case 0x7: return mmio_r43x7(i); + case 0x8: return mmio_r43x8(i); + case 0x9: return mmio_r43x9(i); + case 0xa: return mmio_r43xa(i); + case 0xb: return mmio_r43xb(i); + case 0xc: return regs.mdr; //unmapped + case 0xd: return regs.mdr; //unmapped + case 0xe: return regs.mdr; //unmapped + case 0xf: return mmio_r43xb(i); //mirror of $43xb + } + } + + switch(addr) { + case 0x2180: return mmio_r2180(); + case 0x4016: return mmio_r4016(); + case 0x4017: return mmio_r4017(); + case 0x4210: return mmio_r4210(); + case 0x4211: return mmio_r4211(); + case 0x4212: return mmio_r4212(); + case 0x4213: return mmio_r4213(); + case 0x4214: return mmio_r4214(); + case 0x4215: return mmio_r4215(); + case 0x4216: return mmio_r4216(); + case 0x4217: return mmio_r4217(); + case 0x4218: return mmio_r4218(); + case 0x4219: return mmio_r4219(); + case 0x421a: return mmio_r421a(); + case 0x421b: return mmio_r421b(); + case 0x421c: return mmio_r421c(); + case 0x421d: return mmio_r421d(); + case 0x421e: return mmio_r421e(); + case 0x421f: return mmio_r421f(); + } + + return regs.mdr; +} + +void sCPU::mmio_write(unsigned addr, uint8 data) { + addr &= 0xffff; + + //APU + if((addr & 0xffc0) == 0x2140) { //$2140-$217f + scheduler.sync_cpusmp(); + port_write(addr & 3, data); + return; + } + + //DMA + if((addr & 0xff80) == 0x4300) { //$4300-$437f + unsigned i = (addr >> 4) & 7; + switch(addr & 0xf) { + case 0x0: mmio_w43x0(i, data); return; + case 0x1: mmio_w43x1(i, data); return; + case 0x2: mmio_w43x2(i, data); return; + case 0x3: mmio_w43x3(i, data); return; + case 0x4: mmio_w43x4(i, data); return; + case 0x5: mmio_w43x5(i, data); return; + case 0x6: mmio_w43x6(i, data); return; + case 0x7: mmio_w43x7(i, data); return; + case 0x8: mmio_w43x8(i, data); return; + case 0x9: mmio_w43x9(i, data); return; + case 0xa: mmio_w43xa(i, data); return; + case 0xb: mmio_w43xb(i, data); return; + case 0xc: return; //unmapped + case 0xd: return; //unmapped + case 0xe: return; //unmapped + case 0xf: mmio_w43xb(i, data); return; //mirror of $43xb + } + } + + switch(addr) { + case 0x2180: mmio_w2180(data); return; + case 0x2181: mmio_w2181(data); return; + case 0x2182: mmio_w2182(data); return; + case 0x2183: mmio_w2183(data); return; + case 0x4016: mmio_w4016(data); return; + case 0x4017: return; //unmapped + case 0x4200: mmio_w4200(data); return; + case 0x4201: mmio_w4201(data); return; + case 0x4202: mmio_w4202(data); return; + case 0x4203: mmio_w4203(data); return; + case 0x4204: mmio_w4204(data); return; + case 0x4205: mmio_w4205(data); return; + case 0x4206: mmio_w4206(data); return; + case 0x4207: mmio_w4207(data); return; + case 0x4208: mmio_w4208(data); return; + case 0x4209: mmio_w4209(data); return; + case 0x420a: mmio_w420a(data); return; + case 0x420b: mmio_w420b(data); return; + case 0x420c: mmio_w420c(data); return; + case 0x420d: mmio_w420d(data); return; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.hpp b/libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.hpp new file mode 100644 index 0000000000..839d0a52cb --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/mmio/mmio.hpp @@ -0,0 +1,71 @@ + void mmio_power(); + void mmio_reset(); + uint8 mmio_read(unsigned addr); + void mmio_write(unsigned addr, uint8 data); + + uint8 pio(); + bool joylatch(); + + uint8 mmio_r2180(); + uint8 mmio_r4016(); + uint8 mmio_r4017(); + uint8 mmio_r4210(); + uint8 mmio_r4211(); + uint8 mmio_r4212(); + uint8 mmio_r4213(); + uint8 mmio_r4214(); + uint8 mmio_r4215(); + uint8 mmio_r4216(); + uint8 mmio_r4217(); + uint8 mmio_r4218(); + uint8 mmio_r4219(); + uint8 mmio_r421a(); + uint8 mmio_r421b(); + uint8 mmio_r421c(); + uint8 mmio_r421d(); + uint8 mmio_r421e(); + uint8 mmio_r421f(); + uint8 mmio_r43x0(uint8 i); + uint8 mmio_r43x1(uint8 i); + uint8 mmio_r43x2(uint8 i); + uint8 mmio_r43x3(uint8 i); + uint8 mmio_r43x4(uint8 i); + uint8 mmio_r43x5(uint8 i); + uint8 mmio_r43x6(uint8 i); + uint8 mmio_r43x7(uint8 i); + uint8 mmio_r43x8(uint8 i); + uint8 mmio_r43x9(uint8 i); + uint8 mmio_r43xa(uint8 i); + uint8 mmio_r43xb(uint8 i); + + void mmio_w2180(uint8 data); + void mmio_w2181(uint8 data); + void mmio_w2182(uint8 data); + void mmio_w2183(uint8 data); + void mmio_w4016(uint8 data); + void mmio_w4200(uint8 data); + void mmio_w4201(uint8 data); + void mmio_w4202(uint8 data); + void mmio_w4203(uint8 data); + void mmio_w4204(uint8 data); + void mmio_w4205(uint8 data); + void mmio_w4206(uint8 data); + void mmio_w4207(uint8 data); + void mmio_w4208(uint8 data); + void mmio_w4209(uint8 data); + void mmio_w420a(uint8 data); + void mmio_w420b(uint8 data); + void mmio_w420c(uint8 data); + void mmio_w420d(uint8 data); + void mmio_w43x0(uint8 i, uint8 data); + void mmio_w43x1(uint8 i, uint8 data); + void mmio_w43x2(uint8 i, uint8 data); + void mmio_w43x3(uint8 i, uint8 data); + void mmio_w43x4(uint8 i, uint8 data); + void mmio_w43x5(uint8 i, uint8 data); + void mmio_w43x6(uint8 i, uint8 data); + void mmio_w43x7(uint8 i, uint8 data); + void mmio_w43x8(uint8 i, uint8 data); + void mmio_w43x9(uint8 i, uint8 data); + void mmio_w43xa(uint8 i, uint8 data); + void mmio_w43xb(uint8 i, uint8 data); diff --git a/libmednahawk/src/snes/src/cpu/scpu/scpu.cpp b/libmednahawk/src/snes/src/cpu/scpu/scpu.cpp new file mode 100644 index 0000000000..f100acf896 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/scpu.cpp @@ -0,0 +1,113 @@ +#include <../base.hpp> + +#define SCPU_CPP +namespace SNES { + +#if defined(DEBUGGER) + #include "debugger/debugger.cpp" + sCPUDebugger cpu; +#else + sCPU cpu; +#endif + +#include "serialization.cpp" +#include "dma/dma.cpp" +#include "memory/memory.cpp" +#include "mmio/mmio.cpp" +#include "timing/timing.cpp" + +void sCPU::enter() { + while(true) { + while(scheduler.sync == Scheduler::SyncCpu) { + scheduler.sync = Scheduler::SyncAll; + scheduler.exit(Scheduler::SynchronizeEvent); + } + + if(status.interrupt_pending) { + status.interrupt_pending = false; + if(status.nmi_pending) { + status.nmi_pending = false; + status.interrupt_vector = (regs.e == false ? 0xffea : 0xfffa); + op_irq(); + } else if(status.irq_pending) { + status.irq_pending = false; + status.interrupt_vector = (regs.e == false ? 0xffee : 0xfffe); + op_irq(); + } else if(status.reset_pending) { + status.reset_pending = false; + add_clocks(186); + regs.pc.l = bus.read(0xfffc); + regs.pc.h = bus.read(0xfffd); + } + } + + op_step(); + } +} + +void sCPU::op_step() { + (this->*opcode_table[op_readpc()])(); +} + +void sCPU::op_irq() { + op_read(regs.pc.d); + op_io(); + if(!regs.e) op_writestack(regs.pc.b); + op_writestack(regs.pc.h); + op_writestack(regs.pc.l); + op_writestack(regs.e ? (regs.p & ~0x10) : regs.p); + rd.l = op_read(status.interrupt_vector + 0); + regs.pc.b = 0x00; + regs.p.i = 1; + regs.p.d = 0; + rd.h = op_read(status.interrupt_vector + 1); + regs.pc.w = rd.w; +} + +void sCPU::power() { + CPU::power(); + + regs.a = regs.x = regs.y = 0x0000; + regs.s = 0x01ff; + + mmio_power(); + dma_power(); + timing_power(); + + reset(); +} + +void sCPU::reset() { + CPU::reset(); + + //note: some registers are not fully reset by SNES + regs.pc = 0x000000; + regs.x.h = 0x00; + regs.y.h = 0x00; + regs.s.h = 0x01; + regs.d = 0x0000; + regs.db = 0x00; + regs.p = 0x34; + regs.e = 1; + regs.mdr = 0x00; + regs.wai = false; + update_table(); + + mmio_reset(); + dma_reset(); + timing_reset(); + + apu_port[0] = 0x00; + apu_port[1] = 0x00; + apu_port[2] = 0x00; + apu_port[3] = 0x00; +} + +sCPU::sCPU() : event(512, bind(&sCPU::queue_event, this)) { + PPUcounter::scanline = bind(&sCPU::scanline, this); +} + +sCPU::~sCPU() { +} + +}; diff --git a/libmednahawk/src/snes/src/cpu/scpu/scpu.hpp b/libmednahawk/src/snes/src/cpu/scpu/scpu.hpp new file mode 100644 index 0000000000..96e4082069 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/scpu.hpp @@ -0,0 +1,106 @@ +class sCPU : public CPU, public CPUcore { +public: + void enter(); + debugvirtual void op_step(); + void op_irq(); + bool interrupt_pending() { return status.interrupt_pending; } + + #include "dma/dma.hpp" + #include "memory/memory.hpp" + #include "mmio/mmio.hpp" + #include "timing/timing.hpp" + + priority_queue event; + + struct { + bool interrupt_pending; + uint16 interrupt_vector; + + unsigned clock_count; + unsigned line_clocks; + + //timing + bool irq_lock; + bool alu_lock; + unsigned dram_refresh_position; + + bool nmi_valid; + bool nmi_line; + bool nmi_transition; + bool nmi_pending; + bool nmi_hold; + + bool irq_valid; + bool irq_line; + bool irq_transition; + bool irq_pending; + bool irq_hold; + + bool reset_pending; + + //DMA + bool dma_active; + unsigned dma_counter; + unsigned dma_clocks; + bool dma_pending; + bool hdma_pending; + bool hdma_mode; //0 = init, 1 = run + + //MMIO + + //$2181-$2183 + uint32 wram_addr; + + //$4016-$4017 + bool joypad_strobe_latch; + uint32 joypad1_bits; + uint32 joypad2_bits; + + //$4200 + bool nmi_enabled; + bool hirq_enabled, virq_enabled; + bool auto_joypad_poll; + + //$4201 + uint8 pio; + + //$4202-$4203 + uint8 mul_a, mul_b; + + //$4204-$4206 + uint16 div_a; + uint8 div_b; + + //$4207-$420a + uint16 hirq_pos, virq_pos; + + //$420d + unsigned rom_speed; + + //$4214-$4217 + uint16 r4214; + uint16 r4216; + + //$4218-$421f + uint8 joy1l, joy1h; + uint8 joy2l, joy2h; + uint8 joy3l, joy3h; + uint8 joy4l, joy4h; + } status; + + void power(); + void reset(); + + void serialize(serializer&); + sCPU(); + ~sCPU(); + + friend class sCPUDebug; +}; + +#if defined(DEBUGGER) + #include "debugger/debugger.hpp" + extern sCPUDebugger cpu; +#else + extern sCPU cpu; +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/serialization.cpp b/libmednahawk/src/snes/src/cpu/scpu/serialization.cpp new file mode 100644 index 0000000000..d92e384276 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/serialization.cpp @@ -0,0 +1,105 @@ +#ifdef SCPU_CPP + +void sCPU::serialize(serializer &s) { + CPU::serialize(s); + CPUcore::core_serialize(s); + + event.serialize(s); + + s.integer(status.interrupt_pending); + s.integer(status.interrupt_vector); + + s.integer(status.clock_count); + s.integer(status.line_clocks); + + s.integer(status.irq_lock); + s.integer(status.alu_lock); + s.integer(status.dram_refresh_position); + + s.integer(status.nmi_valid); + s.integer(status.nmi_line); + s.integer(status.nmi_transition); + s.integer(status.nmi_pending); + s.integer(status.nmi_hold); + + s.integer(status.irq_valid); + s.integer(status.irq_line); + s.integer(status.irq_transition); + s.integer(status.irq_pending); + s.integer(status.irq_hold); + + s.integer(status.reset_pending); + + s.integer(status.dma_active); + s.integer(status.dma_counter); + s.integer(status.dma_clocks); + s.integer(status.dma_pending); + s.integer(status.hdma_pending); + s.integer(status.hdma_mode); + + s.integer(status.wram_addr); + + s.integer(status.joypad_strobe_latch); + s.integer(status.joypad1_bits); + s.integer(status.joypad2_bits); + + s.integer(status.nmi_enabled); + s.integer(status.hirq_enabled); + s.integer(status.virq_enabled); + s.integer(status.auto_joypad_poll); + + s.integer(status.pio); + + s.integer(status.mul_a); + s.integer(status.mul_b); + + s.integer(status.div_a); + s.integer(status.div_b); + + s.integer(status.hirq_pos); + s.integer(status.virq_pos); + + s.integer(status.rom_speed); + + s.integer(status.r4214); + s.integer(status.r4216); + + s.integer(status.joy1l); + s.integer(status.joy1h); + s.integer(status.joy2l); + s.integer(status.joy2h); + s.integer(status.joy3l); + s.integer(status.joy3h); + s.integer(status.joy4l); + s.integer(status.joy4h); + + for(unsigned i = 0; i < 8; i++) { + s.integer(channel[i].dma_enabled); + s.integer(channel[i].hdma_enabled); + s.integer(channel[i].dmap); + s.integer(channel[i].direction); + s.integer(channel[i].hdma_indirect); + s.integer(channel[i].reversexfer); + s.integer(channel[i].fixedxfer); + s.integer(channel[i].xfermode); + s.integer(channel[i].destaddr); + s.integer(channel[i].srcaddr); + s.integer(channel[i].srcbank); + s.integer(channel[i].xfersize); + s.integer(channel[i].hdma_ibank); + s.integer(channel[i].hdma_addr); + s.integer(channel[i].hdma_line_counter); + s.integer(channel[i].unknown); + s.integer(channel[i].hdma_completed); + s.integer(channel[i].hdma_do_transfer); + } + + s.integer(apu_port[0]); + s.integer(apu_port[1]); + s.integer(apu_port[2]); + s.integer(apu_port[3]); + + s.integer(cycle_edge_state); +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/timing/event.cpp b/libmednahawk/src/snes/src/cpu/scpu/timing/event.cpp new file mode 100644 index 0000000000..cbbdad12c7 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/timing/event.cpp @@ -0,0 +1,35 @@ +#ifdef SCPU_CPP + +void sCPU::queue_event(unsigned id) { + switch(id) { + //interrupts triggered during (H)DMA do not trigger immediately after + case EventIrqLockRelease: { + status.irq_lock = false; + } break; + + //ALU multiplication / division results are not immediately calculated; + //the exact formula for the calculations are unknown, but this lock at least + //allows emulation to avoid returning to fully computed results too soon. + case EventAluLockRelease: { + status.alu_lock = false; + } break; + + //S-CPU WRAM consists of two 64kbyte DRAM chips, which must be refreshed + //once per scanline to avoid memory decay. + case EventDramRefresh: { + add_clocks(40); + } break; + + //HDMA init routine; occurs once per frame + case EventHdmaInit: { + cycle_edge_state |= EventFlagHdmaInit; + } break; + + //HDMA run routine; occurs once per scanline + case EventHdmaRun: { + cycle_edge_state |= EventFlagHdmaRun; + } break; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/timing/irq.cpp b/libmednahawk/src/snes/src/cpu/scpu/timing/irq.cpp new file mode 100644 index 0000000000..497f025ecd --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/timing/irq.cpp @@ -0,0 +1,107 @@ +#ifdef SCPU_CPP + +//called once every four clock cycles; +//as NMI steps by scanlines (divisible by 4) and IRQ by PPU 4-cycle dots. +// +//ppu.(vh)counter(n) returns the value of said counters n-clocks before current time; +//it is used to emulate hardware communication delay between opcode and interrupt units. +void sCPU::poll_interrupts() { + //NMI hold + if(status.nmi_hold) { + status.nmi_hold = false; + if(status.nmi_enabled) status.nmi_transition = true; + } + + //NMI test + bool nmi_valid = (vcounter(2) >= (!ppu.overscan() ? 225 : 240)); + if(!status.nmi_valid && nmi_valid) { + //0->1 edge sensitive transition + status.nmi_line = true; + status.nmi_hold = true; //hold /NMI for four cycles + } else if(status.nmi_valid && !nmi_valid) { + //1->0 edge sensitive transition + status.nmi_line = false; + } + status.nmi_valid = nmi_valid; + + //IRQ hold + status.irq_hold = false; + if(status.irq_line) { + if(status.virq_enabled || status.hirq_enabled) status.irq_transition = true; + } + + //IRQ test + bool irq_valid = (status.virq_enabled || status.hirq_enabled); + if(irq_valid) { + if((status.virq_enabled && vcounter(10) != (status.virq_pos)) + || (status.hirq_enabled && hcounter(10) != (status.hirq_pos + 1) * 4) + || (status.virq_pos && vcounter(6) == 0) //IRQs cannot trigger on last dot of field + ) irq_valid = false; + } + if(!status.irq_valid && irq_valid) { + //0->1 edge sensitive transition + status.irq_line = true; + status.irq_hold = true; //hold /IRQ for four cycles + } + status.irq_valid = irq_valid; +} + +void sCPU::nmitimen_update(uint8 data) { + bool nmi_enabled = status.nmi_enabled; + bool virq_enabled = status.virq_enabled; + bool hirq_enabled = status.hirq_enabled; + status.nmi_enabled = data & 0x80; + status.virq_enabled = data & 0x20; + status.hirq_enabled = data & 0x10; + + //0->1 edge sensitive transition + if(!nmi_enabled && status.nmi_enabled && status.nmi_line) { + status.nmi_transition = true; + } + + //?->1 level sensitive transition + if(status.virq_enabled && !status.hirq_enabled && status.irq_line) { + status.irq_transition = true; + } + + if(!status.virq_enabled && !status.hirq_enabled) { + status.irq_line = false; + status.irq_transition = false; + } + + status.irq_lock = true; + event.enqueue(2, EventIrqLockRelease); +} + +bool sCPU::rdnmi() { + bool result = status.nmi_line; + if(!status.nmi_hold) { + status.nmi_line = false; + } + return result; +} + +bool sCPU::timeup() { + bool result = status.irq_line; + if(!status.irq_hold) { + status.irq_line = false; + status.irq_transition = false; + } + return result; +} + +bool sCPU::nmi_test() { + if(!status.nmi_transition) return false; + status.nmi_transition = false; + regs.wai = false; + return true; +} + +bool sCPU::irq_test() { + if(!status.irq_transition && !regs.irq) return false; + status.irq_transition = false; + regs.wai = false; + return !regs.p.i; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/timing/joypad.cpp b/libmednahawk/src/snes/src/cpu/scpu/timing/joypad.cpp new file mode 100644 index 0000000000..52c9e8f773 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/timing/joypad.cpp @@ -0,0 +1,28 @@ +#ifdef SCPU_CPP + +void sCPU::run_auto_joypad_poll() { + uint16 joy1 = 0, joy2 = 0, joy3 = 0, joy4 = 0; + for(unsigned i = 0; i < 16; i++) { + uint8 port0 = input.port_read(0); + uint8 port1 = input.port_read(1); + + joy1 |= (port0 & 1) ? (0x8000 >> i) : 0; + joy2 |= (port1 & 1) ? (0x8000 >> i) : 0; + joy3 |= (port0 & 2) ? (0x8000 >> i) : 0; + joy4 |= (port1 & 2) ? (0x8000 >> i) : 0; + } + + status.joy1l = joy1; + status.joy1h = joy1 >> 8; + + status.joy2l = joy2; + status.joy2h = joy2 >> 8; + + status.joy3l = joy3; + status.joy3h = joy3 >> 8; + + status.joy4l = joy4; + status.joy4h = joy4 >> 8; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/timing/timing.cpp b/libmednahawk/src/snes/src/cpu/scpu/timing/timing.cpp new file mode 100644 index 0000000000..d294fe0c46 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/timing/timing.cpp @@ -0,0 +1,172 @@ +#ifdef SCPU_CPP + +#include "event.cpp" +#include "irq.cpp" +#include "joypad.cpp" + +unsigned sCPU::dma_counter() { + return (status.dma_counter + hcounter()) & 7; +} + +void sCPU::add_clocks(unsigned clocks) { + event.tick(clocks); + unsigned ticks = clocks >> 1; + while(ticks--) { + tick(); + if(hcounter() & 2) { + input.tick(); + poll_interrupts(); + } + } + scheduler.addclocks_cpu(clocks); +} + +//called by ppu.tick() when Hcounter=0 +void sCPU::scanline() { + status.dma_counter = (status.dma_counter + status.line_clocks) & 7; + status.line_clocks = lineclocks(); + + //forcefully sync S-CPU to other processors, in case chips are not communicating + scheduler.sync_cpuppu(); + scheduler.sync_cpucop(); + scheduler.sync_cpusmp(); + system.scanline(); + + if(vcounter() == 0) { + //hdma init triggers once every frame + event.enqueue(cpu_version == 1 ? 12 + 8 - dma_counter() : 12 + dma_counter(), EventHdmaInit); + } + + //dram refresh occurs once every scanline + if(cpu_version == 2) status.dram_refresh_position = 530 + 8 - dma_counter(); + event.enqueue(status.dram_refresh_position, EventDramRefresh); + + //hdma triggers once every visible scanline + if(vcounter() <= (ppu.overscan() == false ? 224 : 239)) { + event.enqueue(1104, EventHdmaRun); + } + + if(status.auto_joypad_poll == true && vcounter() == (ppu.overscan() == false ? 227 : 242)) { + input.poll(); + run_auto_joypad_poll(); + } +} + +//used to test for H/DMA, which can trigger on the edge of every opcode cycle. +void sCPU::cycle_edge() { + while(cycle_edge_state) { + switch(bit::lowest(cycle_edge_state)) { + case EventFlagHdmaInit: { + hdma_init_reset(); + if(hdma_enabled_channels()) { + status.hdma_pending = true; + status.hdma_mode = 0; + } + } break; + + case EventFlagHdmaRun: { + if(hdma_active_channels()) { + status.hdma_pending = true; + status.hdma_mode = 1; + } + } break; + } + + cycle_edge_state = bit::clear_lowest(cycle_edge_state); + } + + //H/DMA pending && DMA inactive? + //.. Run one full CPU cycle + //.. HDMA pending && HDMA enabled ? DMA sync + HDMA run + //.. DMA pending && DMA enabled ? DMA sync + DMA run + //.... HDMA during DMA && HDMA enabled ? DMA sync + HDMA run + //.. Run one bus CPU cycle + //.. CPU sync + + if(status.dma_active == true) { + if(status.hdma_pending) { + status.hdma_pending = false; + if(hdma_enabled_channels()) { + dma_add_clocks(8 - dma_counter()); + status.hdma_mode == 0 ? hdma_init() : hdma_run(); + if(!dma_enabled_channels()) { + add_clocks(status.clock_count - (status.dma_clocks % status.clock_count)); + status.dma_active = false; + } + } + } + + if(status.dma_pending) { + status.dma_pending = false; + if(dma_enabled_channels()) { + dma_add_clocks(8 - dma_counter()); + dma_run(); + add_clocks(status.clock_count - (status.dma_clocks % status.clock_count)); + status.dma_active = false; + } + } + } + + if(status.dma_active == false) { + if(status.dma_pending || status.hdma_pending) { + status.dma_clocks = 0; + status.dma_active = true; + } + } +} + +//used to test for NMI/IRQ, which can trigger on the edge of every opcode. +//test one cycle early to simulate two-stage pipeline of x816 CPU. +// +//status.irq_lock is used to simulate hardware delay before interrupts can +//trigger during certain events (immediately after DMA, writes to $4200, etc) +void sCPU::last_cycle() { + if(!status.irq_lock) { + status.nmi_pending |= nmi_test(); + status.irq_pending |= irq_test(); + + status.interrupt_pending = (status.nmi_pending || status.irq_pending); + } +} + +void sCPU::timing_power() { +} + +void sCPU::timing_reset() { + event.reset(); + + status.clock_count = 0; + status.line_clocks = lineclocks(); + + status.irq_lock = false; + status.alu_lock = false; + status.dram_refresh_position = (cpu_version == 1 ? 530 : 538); + event.enqueue(status.dram_refresh_position, EventDramRefresh); + + status.nmi_valid = false; + status.nmi_line = false; + status.nmi_transition = false; + status.nmi_pending = false; + status.nmi_hold = false; + + status.irq_valid = false; + status.irq_line = false; + status.irq_transition = false; + status.irq_pending = false; + status.irq_hold = false; + + status.reset_pending = true; + status.interrupt_pending = true; + status.interrupt_vector = 0xfffc; //reset vector address + + status.dma_active = false; + status.dma_counter = 0; + status.dma_clocks = 0; + status.dma_pending = false; + status.hdma_pending = false; + status.hdma_mode = 0; + + cycle_edge_state = 0; +} + +#endif diff --git a/libmednahawk/src/snes/src/cpu/scpu/timing/timing.hpp b/libmednahawk/src/snes/src/cpu/scpu/timing/timing.hpp new file mode 100644 index 0000000000..f8895ab6a1 --- /dev/null +++ b/libmednahawk/src/snes/src/cpu/scpu/timing/timing.hpp @@ -0,0 +1,40 @@ + enum { + EventNone, + EventIrqLockRelease, + EventAluLockRelease, + EventDramRefresh, + EventHdmaInit, + EventHdmaRun, + + //cycle edge + EventFlagHdmaInit = 1 << 0, + EventFlagHdmaRun = 1 << 1, + }; + unsigned cycle_edge_state; + + //timing.cpp + unsigned dma_counter(); + + void add_clocks(unsigned clocks); + void scanline(); + + alwaysinline void cycle_edge(); + alwaysinline void last_cycle(); + + void timing_power(); + void timing_reset(); + + //irq.cpp + alwaysinline void poll_interrupts(); + void nmitimen_update(uint8 data); + bool rdnmi(); + bool timeup(); + + alwaysinline bool nmi_test(); + alwaysinline bool irq_test(); + + //joypad.cpp + void run_auto_joypad_poll(); + + //event.cpp + void queue_event(unsigned); //priorityqueue callback function diff --git a/libmednahawk/src/snes/src/data/bsnes.Manifest b/libmednahawk/src/snes/src/data/bsnes.Manifest new file mode 100644 index 0000000000..61ed092416 --- /dev/null +++ b/libmednahawk/src/snes/src/data/bsnes.Manifest @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/libmednahawk/src/snes/src/data/bsnes.desktop b/libmednahawk/src/snes/src/data/bsnes.desktop new file mode 100644 index 0000000000..1a9915a5b9 --- /dev/null +++ b/libmednahawk/src/snes/src/data/bsnes.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=bsnes +Comment=SNES emulator +Exec=bsnes +Icon=bsnes +Terminal=false +Type=Application +Categories=Game;Emulator; diff --git a/libmednahawk/src/snes/src/data/bsnes.ico b/libmednahawk/src/snes/src/data/bsnes.ico new file mode 100644 index 0000000000000000000000000000000000000000..54acded45d3d1e9b458bfab3c24feeb328e231d9 GIT binary patch literal 22071 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 z zZ~6IK-@pF*DEgQAuLS<%zo`9CF~d}El)r)o^$!Ap%KERAg+}uP{u95z|0IT1DvPKm z4GY{m0Uwo=Xn7!w0DrH4Do5Cna%3IA9uNq)0JsD=12_yY1S|&pIX~*SA=CrqCw~k5 zkS-9R(wI9Kw+sLCpkpwNwj8+W0(OJ$2+|s0 z1iBo^Isb|LXAL;tn#OrLe^hSuf+3aGUA#nQdtd;z3bYJUIyH7~*`s5I?Avu}jHdiMC4Z(aAWgy-&c8?jt}?)RlKV{lXjwi+310}< zoj4nK_x}v%>E(s=TYeGk$!vfh7H}8k`5lZsIlfs+U%llt%H{unYDhadSNc_D0DoHp zCQ$CE@4x1M^xNk;;89i@Z<_AUAJE6a_d36dH<}M{HU(}&-{L&udn200Q1jhd;M|9{ zqaSEXXj~sO{jYd{Hz(jUVAAg(zt?uYgtbOUu%q^YzdWE3_5I(#5X5o*S>C`64}P2j z5Co{fJ32j4E?mTCGZ=yw1sf0jF%4tRwC z1_5J$NzNd@`1A+$*)zESXEuN~;1D1fa0Flm_~ALp%)CGIM}ME+>>H=T&~p5R{%PF* znvs9-8}M2Lye9sF+uvzRG5;XV?`92U$o#=}GP8Y+Lwfn|8uvJ^&sq%l7ui$N+Lq{4T<$Z?T`>S9YKZ>3W8%q5E9%{;)7EVB5cQu zPwu|6(}pMOg^||tSyDbr;-qA9M+Fg?HxHE*L~e2oKaBYloAx;sdW?cTlM?a;yIAzJ z1|CI#0tbqEj*hl>#3$|OoV}Hu#pJf?x;;-zY z;gCNQApI-0r~D8Pwy*u5ed@f27%kFujybRf#eR(k*h9}P*8wWNV;kkr0JhlxpU(LH zyB=ox|0BfRgW4Rr%$)@GI{{%+Yhl>;NB1}j0OyQ zjkG<(1?RYL{(=MAHr#*2HrNybTm*b~f4(+E39q_tXg=hRw!@kAjlTB-?Ea2zu%!yP z1$YiX_h+Zt+czcn;LBJCcGd$z0cn6MfCGSef5$c&2kfEyPv5llm9WY4tG}E7U&Vv` z=>YX#vGXlX!GD$KkA{Qo&4BOL`DcDjAiwkvKWgWD@gZMVz*pP+XWOkHrM{QP|1}Kq zR{|6Ornke7@O~aJ|Nol*-%Ss;H~+%eVy^ZHUzrD=z;wQ z3ZnEGj3f@2r{XZalbbMfRLEi&L2yC{X%_U8piZI(!N4{QgfcKvVLJl_4FypUwn>yA z&l#rR6`hQu+Y&;6seKCNFEdy8_`m){M9?EGEqdTFKR_@tJZy(Ne*EPO{k!x}okHjE zPXSYFxT!VFFfu-_``xr?VA{Dkkaqf7bSgcKsgdR^t=OQqY+3TB^PPD3hnD3?D4+~b z2Pj4=*u9Xp^O6X4A{6qu4|oE&j!aOEMf_+&Fjk`Tgof3t-z|dpZva#C@agl?YcqKY zue*)Tf6?)FYW%+oY0m+s(oM-R{!*-6XFQipeK6;;t?MH=*RCC~hIB>K(oW79CT-k? zO}!_Rcb~nGM~D@YiU^&Foy7qCU^iem%hT2p(oLCi=i zY7_0c_!+iQAMBfokIM7r_}M*Yxhx>v4Zxqq#wa^qJj5pg(7Asx+>O{VJuRwV-owTY z>CpQQGsp3onQ_1M4r%w#ust#!!>#qL_+R_pcb*F!)6lyY0bP+?e|t^$wY>i6Z}1C& orimcq=pHZZvkre+J;NsJC(A?-;{XbLNB3QO0K-0?(xB=7AElyM(EtDd literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/bsnes.png b/libmednahawk/src/snes/src/data/bsnes.png new file mode 100644 index 0000000000000000000000000000000000000000..02986ba80bf0a5b5e46d370a4653dae60373f139 GIT binary patch literal 1368 zcmV-e1*iInP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG= z05>AI00h`cL_t(&-tCxKY}8d0#(&?PAwsLN*a3-!$Px{h5Xvsn4m3zqL@}~x z#6Uv~#u#H16Jx+F(Ff^^1`Ha6B7%w%2@hhTM5hH=tSBn0D1lI|trSbxN@wozfsqzy z)0xg6%fo!hB=hjU_nz-8-#Pa}7FlGGMHU%A8Sk*xLXlH8Mov?}hG0Yx4F-o~s&EPW zta`4iy($SrR`@$`l*$;5)Y@M4hAj!7)oXvw)9I^&fSG!(w5Nblq;QIBcEw?G-5gid z;RGUO{z-{9K`uSswx^RQ`eU{`78C)O?t;9Pz5uZ(UE={H4Q@2v!b}}Tz`^T6o!cF9 z@ld49#&!sS$oqaEFe$^Vb&?+ImUvqcpb_{I?-#m?ik*RW;@+z*FA=wwfG5&PuLe)| z`V#%)3k%00eJm+I1sQHYTHs=_(%?pkBzl(lStgbVU6Vo$RMpIO`M#*A5ZEXwH_hW- zQ7rayyJWOA)XZ@o0MB4%ZJG}oeQ|NGq~~+fmH@K_zNqNFKnVcU{;s9K#x_n*czB0+ ze1V{M`!qlyq*9AUJBxsE<8nXJJGQqr+?m;XHOrcs?hG7`^R z#N8PA2zQ~()vV;t|35_~TXB4Z=R-ztIvHQHGQU}u5-|JLC761Ap6V5i76cUVg7Y=- z9lfb!9iHuoc|c#(Mtz7}#6*l`zu+0HQ0g6x;j8W~lRe2YSeL*-p z%FH&Wv2?QoehQF49LMfHDS6kHQ5J>Xsb&ahB$!n2_cqJKox-Z&Qa zqFd`}K!e0DW~>KRIoDMDe*E|cW%g+c#vjA%9#>JZqxEU@2fC497~(dd56~SW1e`)t z0|$Zc`He%&AaUVP&rIMAiN5I%Xq*P#mRKlp))yD|A|9`j6l!MtcA&(Sm+uXHoc5jt zz^hWmd&bO|EXNs(M*qgF6VeX6e^<_}Q!Ew_{CUrN3cM$7h6VBSo)-apVPQXuMz6i% z53JrZKPcmq1XAt=LEQ)T1?-c3{GTwxdC&TQynoazeGv$PM2`0?$)py%XRG%Nq$6R* zQ14mcJ+&zsea3sf@}6mSUaGJB>vXCSF=Hq&EZK=8%{prdMHX3f a1pWnBso!rU2NnGQ0000 + + + + +

    bsnes Usage Documentation


    + +bsnes is a Super Nintendo / Super Famicom emulator that strives to provide the +most faithful hardware emulation possible. It focuses on accuracy and clean +code, rather than speed and special features. It is meant as a reference +emulator to document how the underlying hardware works. It is thus very useful +for development and research. And while it can be used for general purpose +gaming, it will require significantly more powerful hardware than a typical +emulator. +
    + +

    Modes of Operation


    + +bsnes is capable of running both in its default multi-user mode, as well as in +single-user mode. +

    + +In multi-user mode, configuration data is stored inside the user's home +directory. On Windows, this is located at "%APPDATA%/.bsnes". On other operating +systems, this is located at "~/.bsnes". +

    + +To enable single-user mode, create a blank "bsnes.cfg" file inside the same +folder as the bsnes executable. bsnes will then use this file to store +configuration data. +
    + +

    Supported Filetypes


    + +SFC: SNES cartridge — ROM image.
    +BS: Satellaview BS-X flash cartridge — EEPROM image.
    +ST: Sufami Turbo cartridge — ROM image.
    +SRM, PSR: non-volatile memory, often used to save game data — (P)SRAM image.
    +RTC: real-time clock non-volatile memory.
    +UPS: patch data, used to dynamically modify cartridge of same base filename upon load.
    +CHT: plain-text list of "Game Genie" / "Pro Action Replay" codes. +
    + +

    Known Limitations


    + +Satellaview BS-X emulation: this hardware is only partially supported. +This is mostly because the satellite network it used (St. GIGA) has been shut +down. Access to this network would be required to properly reverse engineer much +of the hardware. Working around this would require game-specific hacks, which +are contrary to the design goals of this emulator. As a result, most BS-X +software will not function correctly. +

    + +Netplay: internet multiplay is not currently supported nor planned. +
    + +

    Contributors


    +• Andreas Naive
    +• anomie
    +• _Demo_
    +• Derrick Sobodash
    +• DMV27
    +• FirebrandX
    +• FitzRoy
    +• GIGO
    +• Jonas Quinn
    +• kode54
    +• krom
    +• Matthew Callis
    +• Nach
    +• neviksti
    +• Overload
    +• RedDwarf
    +• Richard Bannister
    +• Shay Green
    +• tetsuo55
    +• TRAC
    +• zones
    + + + diff --git a/libmednahawk/src/snes/src/data/icons-16x16/accessories-text-editor.png b/libmednahawk/src/snes/src/data/icons-16x16/accessories-text-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..188e1c12bd2de0029c75eefc6c7c4753b86b7d9b GIT binary patch literal 574 zcmV-E0>S->P)2^qNERY3;<4ZcwkNNp7Zp5;AjKf{B7T6H z7K$;wTN)8fToCQSV$+QqO#Q&sZ0iseT9M6oFhjF#YAe3W{|(Ih&u?blgZ~U+lHy(Z zfEnP}R(g1dys47_mq#z10cH*!ci4`$5?D>W0r2hlIkux$PfFdaJ1vdV-c&$Y6qM6=z7>zUrb8|$BG>39|jmV1jOTU#EGRpi+xRHO?}@de@`-W?HM1Qj5D_ogg}SY zdLN|}^?H57O9w%Kn@Oz|d&_(+O?3c05d+({v28n2?E5}$CdJ@bk;TUuUX_^(h)oH!))dmc3|x7NH+_f7=kKWb2fXhZ zrnAjAMhLXlWV2a*$wSOL4(~qIS$aJMy=iu>tN_|Hp>9hMh9SE@rg`+GoBO#O-SQ{L5?nn?G7$uQNU|ANHWktGp13@enLu*Z~ zRzquzloG8qLI{Kqt=k(B1Emy><7_&0#$gJlHNNxtsVP?LWIr9x?6w7vAB@=h=0RrJHa=rxwL(NVM|!=UY`0q(4u?`Im9A{pb^nOBS}n0`N3d*14u^xRRx3%T)8e}B zU)jxOQ!LvNmH!m&MLP2~`8#>It74)E>!>k0}e?< zK~y-)Ws*xwTxA@^f8TfSyqLLnU?K?8$|G1EY%rF-;-axT+?a~Nx*!@hCPY`YH6|=g zV;Ucc#zal5HL;66@DWW+qb{%oO;sobI#?^(5$Q~)%nZZKy~7N5zR!(qD4yi(&N=@_ zj$jjx92gnWk{1QyVU!LCLwZ_@8&$P_=AF-8e`T{?Y%um{_;mNaM|-yS#tBEl2mx9{ zaka$ERDw&F=F@}2=Z^I}k_sYql2G!rxxsv4aCpEj8;Vt*gDAdsXNui%jCkNd8aq?X zjm?!eJ-u_)(7&t*w_Qm9jXpj&JYe5gE71N>h-mfgyVkVpEw*lJp?7bNXu~dpz`G5| zr=!3QdE~&z(C&RZc9yh9TUR43TjHC~L`sPe0y7XpvP7kH0;e<+1pR{q2DbOcSuSU3 zZEdEI|A+YFr$}dgcRx!ADqbI+=qHt|a`M9ms(A98snL7Fkua7QLMesMXHj;Ggz79t zUfPD=-pg}sIc(cP$QaUp5W~C4!qmsnp%?mt5~vpfnwlEO7xE~js40!(6gm3d??htV zOiWCmltOETVH%i*1f>PgWdbW&6Dzw_Iy%~^RMt>RQ7jhe?(XL0!>@Af+Er?`8d6HM zQfLiGG_W8A;-XV>So}MUQVP%W@H~%0hYpiSB*QJv%5E8_kF0oOuSo0O-88Yi?mS`RxAv zkNN-nW071T&;4y%2nK=#gCYFB05|{2kiWjd$q&xz*`?X{r{;f}1F{CdOmaH!H~m+Z zu4eW$HN>KAEv->#4UcH#K>>F>S)(m+mZ=t@1%`Q)zt z=kL2`>r-|9x)v#bCe_ X$s}Y37Q!~)00000NkvXXu0mjf?g64A literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/audio-volume-high.png b/libmednahawk/src/snes/src/data/icons-16x16/audio-volume-high.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8f00b4ad0c6138d17957a9ba6d8616bb39a6a7 GIT binary patch literal 685 zcmV;e0#f~nP)5 zlg~?3Q51l`bLY)4l3F0T>JKOcNu8G(En2v##EqsSQya-Q6RvELwP{hyD3|3JO@hzD zkW|_T{e%|5%oIVH*{UBPLA#lt=K0=f;fzc%E;?`*=YHJp+w~flY12|jE|2u_H-Y?vMc~%j+^QpbNAZ zQIzK977iY0MOCH!P$$u79U=mN2u;2)1t2O*g7lOHIUr^L-mksm!C=_}`1{x^wm|qrRww06e39#Ft9reZUxiLa{)h zSU^?rN*-Rx+YtyRj_7k$)bc~^Kwh^i#DLcZpja%jxw#3z=dWKVd8O+1TS|Ch`_A>G z!mBcg0Xa)mb#Zag7ZJ~hnO$C9O7!>j*H_kOXHH)O=t|w|0R|D%Rz}Bwn+9l5)%qX^ z>gV12Det#`eC5$fF$jXc9$DZAU7)Gl^vDm}afg8>;Gw80|HjbJ&{0gVx~Hz8DU-?k zs%Ez1wg7K|zHB;?ulW}i78YI-m=lpm#IJ#`0=Kj2L>|DZB`8Z??1HWU-z&)(v5I2X42Kx^LBZUY}D`;qn5FxciLM_ej_ug~QY53}!mSE3t?zxwHpXWK} z-YY{xLmWiP&4!4S?k*w%Kv5JTBDA%&eg3uGxLj4$`u_gV)z$UX-EZzMEG>UI@$AWS zilRV7*e4MYCSOdRpPrujfO8S}0T9e=aBy(2)6B>@GdBL1m6a8m%_acuPRe$zP^sC?ptQ@-QuCrdb+y-7#+PUpcUVtdz^5edX(lyb1*!_e$Blc8obQwH#$sup8JB=Bvc!Ow=G z*-60)+jEP)K`lbtXsaQ;_vX7l#~~rDr9s7q55D1?^Pcy->cq+1jZ7wU zlQn3qYkyT=9D4NlK21=UuUwMzXD_T<^nH(qLk}pI%cq|`ef}hzKdJx=2+Z^gX$a(w z9jEZI&}<1~=5GIr#kTnFBp0JiPWk?d?LkQ*GNyW<-J8)xZA^$>*C zq1Y(iRq@)?S0J5PtwTX&lprAhpJoaZL@8vfr+s?gTEz;V*Ee=RvcJHi~u5nQVJ14 z1Y!}QNC=`B9SYSjB8Y@!qIE^U^ISG1t1MPDUl%wcY$LzW`je V_=-2-nyCN)002ovPDHLkV1icx6Sn{W literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/folder.png b/libmednahawk/src/snes/src/data/icons-16x16/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..65bd0bbdcb9005cb8929f06e25d9cb15a926366a GIT binary patch literal 581 zcmV-L0=oT)P)2|yPkE-3> z-8b(3_?ov1cYiV%432IDm|3sa>)kUm%nWx2;PmwLe!t&8>~uQMm(4k6LI`Cz9Dc0p zx&Tx;XIE7wlL@7i6(oef_V#uMc)NrGOsCVTl=7;s>w_zRjH+U0Ymj!k-P+vTq}6H> zV^0g%)=c>R8-N-3GD0!|F@>GqJ z%4)bdf_Rm4wwyD#6GYg!0ieZcvQf+lK>!v2)x`$$R0x3iqPe(Z=9oKK7jS;E^w*b55oWe`mg~7=)i^mlj0C%nT8s$wuo= zb!&(s!bMVmQn@?FCx!@o{yMsKc&XWJj=)i68(aN%$9JEC^W*#Yp8+C_MZ$~UM;0NT T9Al?300000NkvXXu0mjfM@0T3 literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/help-browser.png b/libmednahawk/src/snes/src/data/icons-16x16/help-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..f25fc3fbf106af60de59581bf2e6fba58d489bf8 GIT binary patch literal 932 zcmV;V16%xwP)n<^0M7t*KyZHC1w??>xEt=fabLR*P`s^00F8@s%vX0ly3W2Q;1iYQ`2d{1 zn56SU!aH>A*UV&krU`gE?uNYufcfLL`>KjUEiXOnoQe)`qCG}W|1bb+O7eK1#?QvJ zs|dgU_0&(D106tZ+zosBJd?&v>qnWFmUKydqeslSKE)YIWlRZ)Gjda>n*%4R*)(?6s}$J0tF zrB0rXshXW1sfM?{P>GRo72Li*T~yy3kh%V?FTe2QhE1d6Y3FzU6LKF3;uj?|T^;O;NgH2_-9*%2UxlCj?MeRpHZ4w8sFjOr1-Y$4FjHVOs`O z6+Qs2{*%TqbaEVv&fkX!tu7E!h&mkz2FsQcy_m!>B&KO#Sq7GA5DFBqd&fqUQXD+m zfn!?;p^>;U$?D=fJf(uyMMMYXO4>Md`aVN{(Y9gut;(G&D3o z09{?N%Y*_27>1l9_a8%EHtR(M(E9O_Gnox*SF!%CmFQBU zOF`};huu%zOT%N;EOv}x2@;w%)hg>aX0MU5~e$Dv-j=Valc(v;nT_sm!fGJ@x&;<^^bV( zeDYmpd~&)e>v=ba>Hp#^rKnR%1p%a#U9+>W8+D$+wD1(hb7ZnxQ)>0#;WVhSMx1M~WOW`<`(y-`~O?lW3>LcLKl zTI-Q&y-_m`fH8&#kDju%^KPiHOVtHdSC#>A0E7_i?tf4s(+R0|vB7qwa4%ryoayflfE%+4_t0F6nNx)`Z6qVHi=FPKTS#CU}=K zz{+W!#C9YIhrSlXiNSHls7#+^Yo;a`d;);QTNPSAe+|gJYq?(Q!^i)DrRoA3o7+RD wat;teu)4CGrROk3N|^!cjmHn~jryI>0JT`*mWx6Xs{jB107*qoM6N<$f&tz34gdfE literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/input-gaming.png b/libmednahawk/src/snes/src/data/icons-16x16/input-gaming.png new file mode 100644 index 0000000000000000000000000000000000000000..9d040ee84356e8c9412d290dd72537c93d012189 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE(~iJd>I%_u3fJNif|Tq zL>4nJa0`PlBg3pY5H=O_Ny%H{9NjrPA;Aa6zVB)jVN)>&&^HED`D_W%`4R{ z&a6sJQOHcr&*QR%11>I&WK9Jl0|R3Puf*)qBn9=X%-r0>WOaq$lGMz+)FK@Pu8fkB z0xNxeh=g8lX>n$9Mq*BmUUC%|S8`EmVhPaL^30M9g_4X^1$R&103Dc?^73-M^vv7> zz5Jr|^seLX3=B+)o-U3d7N@69I-MQtC~~ZR@|`DY*DfvDX!iAD`+^;w8$|v$HB}3C zbu_I|h~PNbx|V;--3~n$F0LjIvDmA-gk3JQ?p6xfEbJnpC2DHAJ@d=6()?#Tc4W?S z+VrB4`S6Fc=KFs>)3Ca7d~?hHRdYP;%mal}rgpIe0%CEWiYw`il@t9Jc@ z4_9(?Za+J=R+EQet!b-MBKPYbmPPq;m+h|{Kas)TCb{6pXa1d`?aa^hlOn|&jdx6K z%=j3!C#+F``TF#TE6acG`qFy-z1_!ECg=XmejnHwlSeO?x>s<5?Ule%B@c*;dJSOJmD|yjJQqd#GG;VOkNkn&C>; n);_kr#}#gG-748lf6K2pz%W1Y*_t!JM9kpn>gTe~DWM4fe9c@A literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/item-check-off.png b/libmednahawk/src/snes/src/data/icons-16x16/item-check-off.png new file mode 100644 index 0000000000000000000000000000000000000000..9552941571f5b71339864499c15799497a7d159b GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5zCb*O@!q#N;XuJ= zPZ!4!i{9jf1p)?#B#at)|9f8jlTyp9%)RMA|J5M1+Eg zu&{A+*&&w>s~k1qOJ|O>Txd&VFq}1W#*B^94r|ip=qZF5%Q1Ic?zzm6Wct{!!QyOB zj|C4|;B8#_BC{frF_ z4Kt2?H8ucNTFvpzl?xe{y-F6V4G$f0$-=PrZOEJ+E82kQ=GG5Bo0s%O1sR$`Wf zq-3G=fipaX^InE=^PDwTT4!uvWb~+v@r;|qfu%Di3N9B{IJZxrfG<+Q+1O8C!Tsvg z3Emc_k2#rLY=AZjU+FOwNSu|pu-D(183??B+EmXkWMyc}l3%+<#zzV04+c+HKbLh* G2~7ZZW>?w( literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/item-radio-off.png b/libmednahawk/src/snes/src/data/icons-16x16/item-radio-off.png new file mode 100644 index 0000000000000000000000000000000000000000..e17b659f64bbb9d7571f94ccda292360fed6cc7d GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sC{fp`w%y>D~Efr9KMp1!W^H@TSDH7w=4*}Z_KZ1r?;46!(! zoUlN^;L)TRyC0tT7n`1MJ!j|7mV+*_Z3oXre9b9p=;hpHrB>3owffwfaGuOx^?z=~ zwlip}w!O`L$fLOJ70>c~JEJh5#Qw7LGhbW8ZU9n$wZF|R=GYRJy5Z8a#Dt`zw1l*@ zL?BK}NK8z$DErEJ_!M*aKDNm0c>Xd&!_)*Ia5H=G#e62~&APS-Q)3{|@ZvK5P+Yu0 z)aRzs*N3 z|M~g&|N8j-fBygbd;9-<`}#ls|Ng%Ie}Db|Klh8DJ*z)DVcGu(;UNFE>y1;{*BQv{ z{3EdX?CPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01iz601li1-u9eV00007bV*G`2iXb& z2Pq{JQEEg000IX|L_t(I%f*wiYZGx4$G`Wki#P~6S%P?_F~)Z49Y`^S6l^F(!P=uP zF2$vb62*VOfK+J)g)R=+vQ!Pm)W!4Y1sc@YJ0eD|9#M;2g;ufJrnxjt!_Pr`c(I{_ zgKzx(-uwPO@BO|H_{ZQ{T_n;uO)*Mg-CBYa@F61l-(5Nv3O46a^Fd10H9?NC{K8^b z?mGr`@**zu2cehjl5f7f{k$Y=ndbWt+ zQzwj((~<-L{GS5zj_=;(VQJT5A|ArwgE+8%AEHw;?LSQIhNp!@I;Rhaf?HhY>d@A+ z7%Pt9v7JG+Q3Vm9zo!#tLtRLubDBp$F-qcq*x|nXV&f$q)*irVtKhbI3z?4@5b+=) zoaqfhF-l>Nz^`eyySPa^iEpc`s5lNbYjwn5O@fHPaU6QPk3zSWyuTm?d?_|^D1bg4L46tV6QcTI4tXy%JI&ZP)-A8OsCpPVZ ht{5e8uU+{6@e|UO;YhkJ*VO<3002ovPDHLkV1gbxADI9E literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/media-playback-start.png b/libmednahawk/src/snes/src/data/icons-16x16/media-playback-start.png new file mode 100644 index 0000000000000000000000000000000000000000..a7de0feb09ff9e98d1eeaca81e9fbf6793ef2706 GIT binary patch literal 660 zcmV;F0&D$=P)H0h#)QuLQNI1SZtsXO8U^GGfgrxxh}+}VkxnAb?)YabMHAocX%9NxLrB| zzyY8MfO-Y6yO;d<*y~_0mS+_>8utCg%c)OS>fRtAV|%-`d2TEk2V8nL~zb!m)|pEA$SF2->jn-2hWj=^AH zPL5B%P2Stz^{Pr7#{fi4VAUxi)#JB!S3FMcd3k;2Es0696z@F%)>@ou3v24+*vND076Ixy33;9q2pAv`@ZPsg6f3A(Qi1k* zFkavM@*Aa-5I$9)h)6g*I{0=DB#I*EIzT(hNs`o~9IE3`*}+soD!;iA7_JPj`4{UQ XDQtDP+C_)X00000NkvXXu0mjf5}&Iv literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/media-record.png b/libmednahawk/src/snes/src/data/icons-16x16/media-record.png new file mode 100644 index 0000000000000000000000000000000000000000..2f66cdebbbfa20ba0407b3b76e7b684cd465132c GIT binary patch literal 653 zcmV;80&@L{P)L zlD|(=Q546&=ia{dwdoJ~#Pku{MHeYy0I>;}NE{r&iB$*x0u8%^ZY(Y`J1cV&;?#7g zO>7B6jVzV`ttCKhO5S_Cw)Y)})|z55CVZ2#+??~tJ>T;sX2x|St~Cw7H}0`O6x4vn z5?D|`5$VDo_YAze$83)U zl!zY1W@odh^>w}Hy682V@LU%%7=+(6;gm|My1DsfzS~{IU~mX15=8^C*!Q~|8#kPT z1E_WzVD6Xa0ZJj5PUAeE@7A}rUd%JU8!=G=Pj0QQM!Tn{=+*0hWdV)@*fwBUV9SDC zE+f9YtZC8ctG`SXzym#*)Gl^+p&AX4-w$aRAfn+9yj~BzRttJ6WfX{vMds$8D-hk0 zN}*FOgB=G#2(Xk8kq9Uf0RjQA>q6CP@W)~*(7#S|xPoFXbWToKo1BCof)E0N2xM76 zqXDm4g?DrWL4=E1P3pk65f2E+xA*os`pgW72sD65Df=)XpqVB}*I_prl{9l_1hByT z>8x1%%tRc@WFVvj1|SeY7zRR1OQ>hF9k}lEt8y@e zqrSb}Ij>Y+&nflh$|RPELL|gnJ&|}8N~JtsI808hCY-~=AFgdbz0aKcXOw^IBayrf nq!~zfz)ptwY+T=!fdADm63+C+aTjYY00000NkvXXu0mjfh3**Q literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/preferences-desktop.png b/libmednahawk/src/snes/src/data/icons-16x16/preferences-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..68f916c9d3793617c33986e1369c4a3be6c86508 GIT binary patch literal 440 zcmV;p0Z0CcP)5 zlf6mt?f z0AN0U2O!Ii0Db_~5TL5N0l&4)!JmNg@;GElVP^;Bwx7*8q z?>*!3c;%oBq}6J1dDjbupZkv#MS+>;<71A9P_G{bdzKDFf=aN=#)Y=sMXW9~6k=xULU18eq^Pwm5>f&c14BZf zYe95nK#JnRiH*==SAxmkLmxdrjL^?BWW`;2x>%z19x#ygF@3}wxCj{ps zol&BI3dr$TBKH?fG@Vgwj@VLE`>*x`sHT~#`1-X0&1|$C>5O7D8g(O`Q4IH5!>UCA z#B@f9T4bxM*W2c190hpr@ILWaLI!dGBA^c595S9hn=kAOg|QenCF1t1xZCGP(7 zj844Dzcfmf65S_zD3%MD6HEfSt3fc5ItMc{ zK~y-)ZIioCQ(+i~pL6L2ZH>mr;3bB}Kr47@YPbohHi(*-khrlBSo{xMIye|<92`s> zj0 zfhzpM@ALIWhKAhp&ub29c4n916Y9^A&F#&y1u(Xj-$dR3#d>J@)tT!?^ zxB;)Of@N(J5UR>rI!z!F(O2i@jx3c*X9mOJ=UQhb^X7PCW6$}40e3bY$EvSKkHsLF zL}s%av!6J@-n)0HBoY{3zj8br){Ru^=#NAqsP(AolnVvazCP5J7L<+- z`2HPr|9>&Rx53dc9cF)8t|?gl%I3HXy4zQg`&b zxfypTgs$s291eB|gVcpW$SN$#WyIXvUjZpZ4OUxP@ZP$G)9YnD9%prQ6sO07@7_H; z?d_Pk9LBeA$dwfUbSdSAnqeR;i@LTpTvd2+co^F>(SQT}{nVX0#rlH>plR6EqS^&1 zyDP=w;XqrPR!Sr&y?#yQ=T8=H-lUw#P+nXl_v#gEv$G^`-$v0ie11Rar6v2v@^W5@ zfm4IGCmR~NTZ2JYDjsL8Sgb8;>r)&K8k(9&7YgEII=x^+r#1#60#9C-Mn2yDwjT2}2(B$L*s yY<9+mt|%;SyT+{|0(y3`SA}UC&P8E)GxrC_O;YyPhW8Wz0000AjQodNDi79I5|3(RJen zPo0{EhVu`FIhs1;8#^*ol`_^Ua5ZgRTEO;6WS?JG1xHlIrtQ_)g8XMypD%bh92XZL%@y~j=r?zX#<>_Ay zj?MhVvcApGd@i4rvfN_pU)QGW`q#B_OPRhKo8-;yZEvqm4`R9-*L?7~b=36Kx*Zc}(y&$D=J@HUQ8!MxuejCZ|M!i% z&Q&&tS9kw!Gf+%;qdi-?J-PWx^^%|^_nzBbuuzY(&i>xb{m&ujZZ2vcpl1 zMZ@GK2apA{PG?ddXEM`!?RHyZ=kcza{{|ocz_G78)~3_xTfzOGVc*@!;z&{~D4M34 z#HCy|oAJK^O5@u;x%xm;z_nWd04$M+pY+%HrNI}599Zr)1O{&1Fr9gQ zRx^nN(=^?Ylb_Xc3crTMTm|}8W6tGCdm-gHU zoivEbfP*V-h@Y#f29hN4c>od3S|m}D80SwWrl%O%n5zs-y=aEVV!4n`6c;!WFs{rR zhNug$8$G1gD4`4AaS<H7=eg9>uBL$90I_nW$UopHtf^aCQMJwQhI406Q(#?y zO-@ZpM5e?TYiVd$*M}u5U8hd09vd6~!{hc8oX&FDU*~sLS6AD5dV3x{dHP7z^Tsz$ zm;I-vElqH5_&#iSZzKKk>qUmIhNJ7$iG2Xj914Xt0)Xc8`7QxKZ+qL(^TA-S6B++< zPs?7gTFc=3v)=)}CSYu?u#}a#&H(^gTU%RH&GN(C?nC&$dI>wJW|L@7q6Gi|002ov JPDHLkV1n1##MS@+ literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/text-x-generic.png b/libmednahawk/src/snes/src/data/icons-16x16/text-x-generic.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7f2d6017d823bf9f1209d9933faf612dffe9f8 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$ic-+2*wv2(<2J_t+h+ zs5rlI{^p#SO2-|aiODDi-jZP}W|aE1)~BmOR3$EA(Vi@w>U%ZDa$9qM8}c0HKK>=@ z`d4d)YqwsmShMx=n<-}wTJ%-CXPi)?Z+d)E$Kx3$zTq0>%B>G-<`ESK<06 zKLv;!Rde(>`RU=L2g~Ovo%n1M@bQ?*+>S*Vvl$k=|9v$za@qmb9gNTaiaD`NnxMxo zp5*#q&TW}{<`>WDw{ULpSLj^#x@qe3m+d`GEQ*uw+Md|dvtPsTSdE!)vF)Ukp32Aj azp#b`#_#;I)BX+6mkge+elF{r5}E*#afeO- literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/utilities-terminal.png b/libmednahawk/src/snes/src/data/icons-16x16/utilities-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b797a7dfe82a52fee3df9c7e19d49a4461ac02 GIT binary patch literal 668 zcmV;N0%QG&P)LL=FWNdBW7kS-|1Flt9VjZIBnic?*Db$yx>QG&VIP!QSJs zc<=BfKy0=M*Ov)53jjFhb^=6%sSh*s_1@*#$P<vkh+39&!fBd1N{T!K~miLpN5%0^7 zP?hbT6c8YA-0Z%^@Yn!vCnpHf3aBY5S34BA-9-fWI{S@FS1*DHD0nwMQ@+zW=FIu_ z^4U4Rs|JAcE~$}90nl-_txCE=rBeGS5Gby0{l5*X^50PdrIZG#Z$944!ootiUH7xb zBZrCN2&L5T0Mu|cH-BwxY&6)|C=!MtVYo&VMHp+a)?&9O(ORrEXrozKDQMtnAmZ=j zm%fwD&0jXgWVF_mQ8uOw*&b!BHAb7*SUV&l_x=LcqJkHgP4yiB0000IuR2CK|Gr(s_OsGcg~@t z-EQ+g;X0kp9T9n`s?$0gNNb%WR4uK%AuP^b%AZmHJ+_iDi1`G!>2x}`YPH$}5sg3$FjJ{GSE*LT8UsKP0$G-6KFo)}SJ0r!uJ_4(m*@FH zp63eysv5OUjJ=(2x6fU=c$x8&9smFU07*qoM6N<$f*XM(!~g&Q literal 0 HcmV?d00001 diff --git a/libmednahawk/src/snes/src/data/icons-16x16/view-refresh.png b/libmednahawk/src/snes/src/data/icons-16x16/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd71d6e5929ba0c40db1960e36e9acba9d7e525 GIT binary patch literal 912 zcmV;B18@9^P)oWowDaEkzU!j%l38$)o7}}cCnx7z zVrKYAWwOsS=-Lqw-t?qu)r6QQ!notg696vQmg&~r9t3cLe1UW(yG7H)Ku^~yeO+g> z(bg0Jm{BNJFfw+(d}sQhCl&9uE%R)8S2n|p?*PPznUTt5*BiPR+1l3~ipPS`iO?Jk zARN#U4H*a;0yD)$9M29{3dM>Y4K?&WE>{g^G!Zl7)jelV^{i|AG#D_%trsJC8h7YDw+>Nu`!(E)&&KfE(t5U!_KF)uRXGsl%@ z#;0eK6ZhtiUhin`+P8I6C=m!d1ufk}o{_gOutKfI-_b^R{JP z`QzJ2^LHMWS&9G(o-t)@yh1Uq9cxfG6X$C)H~ghbOC7?WrZ-yyL0>0QOs`0x)U>uAAQg z>;&LGL0Gpf^PVr@oj>}%1`wDT7wv!4sq=s3q*Oh&WftpMhqGg=O68@F-$%x80Ep=T zKm-sG?*3PXAs8nI|0Dok)RR-0Y?z4d_HJBzCO6*s&6^5?o^0No>h2ra)My_p{u2^&LcltM%9%NL@3OcL;J5G-fbF(raxE|ez + + + + +

    GNU GENERAL PUBLIC LICENSE
    +Version 2, June 1991

    +
    + +

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION


    + +0. +This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

    +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

    + +1. +You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

    +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    + +2. +You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

    +
      +
    • a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
    • +
    • b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
    • +
    • c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
    • +
    +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

    +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    + +3. +You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: +
      +
    • a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    • +
    • b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    • +
    • c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
    • +
    +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

    + +4. +You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    + +5. +You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

    + +6. +Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

    + +7. +If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

    +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

    +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    + +8. +If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    + +9. +The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

    + +10. +If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    + +NO WARRANTY

    + +11. +BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    + +12. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    + +

    END OF TERMS AND CONDITIONS

    + + + diff --git a/libmednahawk/src/snes/src/data/logo.png b/libmednahawk/src/snes/src/data/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e78ef27fc2162e5ea94ac1f85bdc42f8dc73a93c GIT binary patch literal 16733 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%0D2JO; zjrtQlwDAoBmdRG-y`)Q^^vTINh(biM0k0*5+s#~l_0V<@ayBp2eTe8*fTQG|mTbIZ zq|+mSG2T9ZY!r4wc@Y(pWclJkgux~(>uxh2ct5&02K(xN45~M+;DoGZ!GM|Ge&9!1 zL=Nm>rSHSh&Ee6@z02hrxc1(_Un2oIka;7hBJiXgAQ| z-ks&^x%){ms?b1N#3%1brKWJ1U!P&lJ* zBoKv3s)cF9%SgYbV~~DJLPX!cOj-4r5~o50NUd2Ol0E}5oUShfQ3$6g;vV8O zIxQ*%JBM|w-;Dksse7wTaL@CF+p7QGsAhB_CZ-|jP55F5Y#dvRj4r9g>p%D!uvf- z;4lrTBciS=-}m}vHM@q<`e$pZ!A6UAA_tW9JVo1w8F-g&Bo0GzQJIk!8YJRkNED}w zi3^lEga%{RYA}0+nV5T_OXlx+Tnuw!h$0+p;F|uxdW^mteO=?YrxR@RfwIxt?Op5C z%95v<85prR2DwAS@)Z$;TG32fw1cE?6Oq49D!k>9fP>AA^hxHf!$l<0-?+zGA}XU% zu!v(5E4y@mH4Z-$Zo3Pg`l$aJcT!~0HSEN{-L;X;{bV4l1?axwT!fryEXDRi8GK1% z?b-5l!UVu_$%*Xnm12iHE%P2)POeyg3@%HEo0J+%Z+UrezkC?%{Q;>!?Q(0?2GI== z(h{`ibdE;P#w+ra8Y>n$QwYjwb{>QNWA~Hq`SJ*d9JXRAH;OE-V6|2Zb(<%c70uO$zzvy~y&Lcq8l-cYd%`)iGW%{qi`0@x zFtPW1i0a;zkehe&`zLL1DwvAYVdLg#*RR5ngzXAQ480r+pRV)$w{fJ-N+%j4qS=PHs&&8T3 zmuE7NM?c5Mk&UtFzqromc6QM99H!vzmHopDlHEymsqC>H&s)O-Wb_teZ=yE*o=w!Q zfGe_F&|JOP|IlV(2ETM#_)BXn;gziuxkqL0q0=%k=du5#BPaJ+{nF2mR7*ytrb^kd zVlg_Fs+nKlpO0DbfG{e*vrEalFe>r~Q&dklA6DLWv=+>_&+w^l`NY}}{GgFJ8gI^y z$gZ3Z)WcB^=L~EfrvA|dp1xAqq-XeTSO>1E!qi_(;H*waylTqNjqDo)Rp%GI9^qO; z34z4uCP3H7`4s)tURg2UoU?zHWo^-^&ig$n9ev3akQO8;ygSevs|IdMR9IX?mo~&O zZEDMf2ehU8)kiEi;Ga&#KlEXncA3BJoU|mapYi<@Z=xreuw;TFGKQgT`zs#za2hk~ zO+D=L-YeFg(dIo1d4OQr$L)ogUAq3$4MT?DS#8ANlf`=L)z`vt=$9LH->%4>GeJIs%tBkG50Zx*ebOh z?yu$*8yN^e(XC1?!8v-r%ohUaR;VKIjYCC&%0c@a}8Zh!0pt#(2wD*5|xO$_eVO?j)T6EfkEQw<-`EL{jB-ve!>!9%H9!n*e7q* zLCp3uTL*va^b&2BFR7m1bW*7gr{zG^gmH;C)k+E5r@wWqY(Exc4~xnyK^XRv5H$RK z=;$Qmw#~~cyf*N60yyq~Z-3U928gi;3hzyVoA0g^R0|7Jh(P)~mTym=pL`OhsaFNwpRscm9tyEm zoa_FasMfi!CN?%Ax9F8g&f2NCKt3!71Q5kWxz?nGi?%>J?NxvprB)z=6EG6VLe|y` z&)?kw`3XpD1}ub&lS=zc9HtsLchTIMZi5uR!Fz9L_0m`yqy z7VBVn11BcUF@%gN8fNR+qpmpYJda*2`GAWsmtAE*j`PjWtd*LU13CD3O&-P8u51DGKceR6A!IVTuOBe7X0HeM6_$fyq=ZaqI8O^jwy-wiK?)vqpuk2TPm=Tn30 zt#!Py2!P;`LsLwGfw3DH7J~vrS3|;wSAyGfV(4!vkc#Up`N}~o{{MQ@|LxlTf3GJf di2nq`AUFTv;#FMq^}YmvwD@ + +#define ADSP_CPP +namespace SNES { + +aDSP dsp; + +#include "adsp_tables.cpp" + +void aDSP::enter() { loop: + run(); + goto loop; +} + +uint8 aDSP::readb(uint16 addr) { + return spcram[addr]; +} + +void aDSP::writeb(uint16 addr, uint8 data) { + spcram[addr] = data; +} + +uint16 aDSP::readw(uint16 addr) { + return (readb(addr + 0)) | (readb(addr + 1) << 8); +} + +void aDSP::writew(uint16 addr, uint16 data) { + writeb(addr + 0, data); + writeb(addr + 1, data >> 8); +} + +uint8 aDSP::read(uint8 addr) { + addr &= 127; +int v = addr >> 4; +int n = addr & 15; + + switch(addr) { + case 0x00: case 0x10: case 0x20: case 0x30: + case 0x40: case 0x50: case 0x60: case 0x70: + return voice[v].VOLL; + case 0x01: case 0x11: case 0x21: case 0x31: + case 0x41: case 0x51: case 0x61: case 0x71: + return voice[v].VOLR; + case 0x02: case 0x12: case 0x22: case 0x32: + case 0x42: case 0x52: case 0x62: case 0x72: + return voice[v].PITCH; + case 0x03: case 0x13: case 0x23: case 0x33: + case 0x43: case 0x53: case 0x63: case 0x73: + return voice[v].PITCH >> 8; + case 0x04: case 0x14: case 0x24: case 0x34: + case 0x44: case 0x54: case 0x64: case 0x74: + return voice[v].SRCN; + case 0x05: case 0x15: case 0x25: case 0x35: + case 0x45: case 0x55: case 0x65: case 0x75: + return voice[v].ADSR1; + case 0x06: case 0x16: case 0x26: case 0x36: + case 0x46: case 0x56: case 0x66: case 0x76: + return voice[v].ADSR2; + case 0x07: case 0x17: case 0x27: case 0x37: + case 0x47: case 0x57: case 0x67: case 0x77: + return voice[v].GAIN; + case 0x08: case 0x18: case 0x28: case 0x38: + case 0x48: case 0x58: case 0x68: case 0x78: + return voice[v].ENVX; + case 0x09: case 0x19: case 0x29: case 0x39: + case 0x49: case 0x59: case 0x69: case 0x79: + return voice[v].OUTX; + + case 0x0f: case 0x1f: case 0x2f: case 0x3f: + case 0x4f: case 0x5f: case 0x6f: case 0x7f: + return status.FIR[v]; + + case 0x0c: return status.MVOLL; + case 0x1c: return status.MVOLR; + case 0x2c: return status.EVOLL; + case 0x3c: return status.EVOLR; + case 0x4c: return status.KON; + case 0x5c: return status.KOFF; + case 0x6c: return status.FLG; + case 0x7c: return status.ENDX; + + case 0x0d: return status.EFB; + case 0x2d: return status.PMON; + case 0x3d: return status.NON; + case 0x4d: return status.EON; + case 0x5d: return status.DIR; + case 0x6d: return status.ESA; + case 0x7d: return status.EDL; + } + + return dspram[addr]; +} + +void aDSP::write(uint8 addr, uint8 data) { +//0x80-0xff is a read-only mirror of 0x00-0x7f + if(addr & 0x80)return; + +int v = addr >> 4; +int n = addr & 15; + + switch(addr) { + case 0x00: case 0x10: case 0x20: case 0x30: + case 0x40: case 0x50: case 0x60: case 0x70: + voice[v].VOLL = data; + break; + case 0x01: case 0x11: case 0x21: case 0x31: + case 0x41: case 0x51: case 0x61: case 0x71: + voice[v].VOLR = data; + break; + case 0x02: case 0x12: case 0x22: case 0x32: + case 0x42: case 0x52: case 0x62: case 0x72: + voice[v].PITCH &= 0xff00; + voice[v].PITCH |= data; + break; + case 0x03: case 0x13: case 0x23: case 0x33: + case 0x43: case 0x53: case 0x63: case 0x73: + voice[v].PITCH &= 0x00ff; + voice[v].PITCH |= data << 8; + break; + case 0x04: case 0x14: case 0x24: case 0x34: + case 0x44: case 0x54: case 0x64: case 0x74: + voice[v].SRCN = data; + break; + case 0x05: case 0x15: case 0x25: case 0x35: + case 0x45: case 0x55: case 0x65: case 0x75: + voice[v].ADSR1 = data; + voice[v].AdjustEnvelope(); + break; + case 0x06: case 0x16: case 0x26: case 0x36: + case 0x46: case 0x56: case 0x66: case 0x76: + voice[v].ADSR2 = data; + //sustain_level = 0-7, 7 is a special case handled by ATTACK envx mode + voice[v].env_sustain = (voice[v].ADSR_sus_level() + 1) << 8; + voice[v].AdjustEnvelope(); + break; + case 0x07: case 0x17: case 0x27: case 0x37: + case 0x47: case 0x57: case 0x67: case 0x77: + voice[v].GAIN = data; + voice[v].AdjustEnvelope(); + break; + case 0x08: case 0x18: case 0x28: case 0x38: + case 0x48: case 0x58: case 0x68: case 0x78: + voice[v].ENVX = data; + break; + case 0x09: case 0x19: case 0x29: case 0x39: + case 0x49: case 0x59: case 0x69: case 0x79: + voice[v].OUTX = data; + break; + + case 0x0f: case 0x1f: case 0x2f: case 0x3f: + case 0x4f: case 0x5f: case 0x6f: case 0x7f: + status.FIR[v] = data; + break; + + case 0x0c: status.MVOLL = data; break; + case 0x1c: status.MVOLR = data; break; + case 0x2c: status.EVOLL = data; break; + case 0x3c: status.EVOLR = data; break; + + case 0x4c: + status.KON = data; + status.kon = data; + break; + case 0x5c: + status.KOFF = data; + break; + case 0x6c: + status.FLG = data; + status.noise_rate = rate_table[data & 0x1f]; + break; + + case 0x7c: + //read-only register, writes clear all bits of ENDX + status.ENDX = 0; + break; + + case 0x0d: status.EFB = data; break; + case 0x2d: status.PMON = data; break; + case 0x3d: status.NON = data; break; + case 0x4d: status.EON = data; break; + case 0x5d: status.DIR = data; break; + case 0x6d: status.ESA = data; break; + case 0x7d: status.EDL = data; break; + } + + dspram[addr] = data; +} + +void aDSP::power() { + spcram = r_smp->get_spcram_handle(); + memset(dspram, 0x00, 128); + + for(int v = 0; v < 8; v++) { + voice[v].VOLL = 0; + voice[v].VOLR = 0; + voice[v].PITCH = 0; + voice[v].SRCN = 0; + voice[v].ADSR1 = 0; + voice[v].ADSR2 = 0; + voice[v].GAIN = 0; + + status.FIR[v] = 0; + } + + status.FLG = 0xe0; + status.MVOLL = status.MVOLR = 0; + status.EVOLL = status.EVOLR = 0; + status.ENDX = 0; + status.EFB = 0; + status.PMON = 0; + status.NON = 0; + status.EON = 0; + status.DIR = 0; + status.ESA = 0; + status.EDL = 0; + + status.echo_length = 0; + + reset(); +} + +void aDSP::reset() { + status.KON = 0x00; + status.KOFF = 0x00; + status.FLG |= 0xe0; + + status.kon = 0x00; + status.esa = 0x00; + + status.noise_ctr = 0; + status.noise_rate = 0; + status.noise_sample = 0x4000; + + status.echo_index = 0; + status.fir_buffer_index = 0; + + for(int v = 0; v < 8; v++) { + voice[v].ENVX = 0; + voice[v].OUTX = 0; + + voice[v].pitch_ctr = 0; + + voice[v].brr_index = 0; + voice[v].brr_ptr = readw((status.DIR << 8) + (voice[v].SRCN << 2)); + voice[v].brr_looped = false; + voice[v].brr_data[0] = 0; + voice[v].brr_data[1] = 0; + voice[v].brr_data[2] = 0; + voice[v].brr_data[3] = 0; + voice[v].brr_data_index = 0; + + voice[v].envx = 0; + voice[v].env_ctr = 0; + voice[v].env_rate = 0; + voice[v].env_state = SILENCE; + voice[v].env_mode = DIRECT; + + status.fir_buffer[0][v] = 0; + status.fir_buffer[1][v] = 0; + } + + dsp_counter = 0; +} + +void aDSP::run() { +uint8 pmon; +int32 sample; +int32 msamplel, msampler; +int32 esamplel, esampler; +int32 fir_samplel, fir_sampler; + pmon = status.PMON & ~status.NON & ~1; + + if((dsp_counter++ & 1) == 0) { + for(uint v = 0; v < 8; v++) { + if(status.soft_reset()) { + if(voice[v].env_state != SILENCE) { + voice[v].env_state = SILENCE; + voice[v].AdjustEnvelope(); + } + } + if(status.KOFF & (1 << v)) { + if(voice[v].env_state != SILENCE && voice[v].env_state != RELEASE) { + voice[v].env_state = RELEASE; + voice[v].AdjustEnvelope(); + } + } + if(status.kon & (1 << v)) { + voice[v].brr_ptr = readw((status.DIR << 8) + (voice[v].SRCN << 2)); + voice[v].brr_index = -9; + voice[v].brr_looped = false; + voice[v].brr_data[0] = 0; + voice[v].brr_data[1] = 0; + voice[v].brr_data[2] = 0; + voice[v].brr_data[3] = 0; + voice[v].envx = 0; + voice[v].env_state = ATTACK; + voice[v].AdjustEnvelope(); + } + } + status.ENDX &= ~status.kon; + status.kon = 0; + } + +/***** + * update noise + *****/ + status.noise_ctr += status.noise_rate; + if(status.noise_ctr >= 0x7800) { + status.noise_ctr -= 0x7800; + status.noise_sample = (status.noise_sample >> 1) | (((status.noise_sample << 14) ^ (status.noise_sample << 13)) & 0x4000); + } + + msamplel = msampler = 0; + esamplel = esampler = 0; + +/***** + * process voice channels + *****/ + for(int v = 0; v < 8; v++) { + if(voice[v].brr_index < -1) { + voice[v].brr_index++; + voice[v].OUTX = voice[v].outx = 0; + voice[v].ENVX = 0; + continue; + } + + if(voice[v].brr_index >= 0) { + if(pmon & (1 << v)) { + voice[v].pitch_ctr += (voice[v].pitch_rate() * (voice[v - 1].outx + 0x8000)) >> 15; + } else { + voice[v].pitch_ctr += voice[v].pitch_rate(); + } + } else { + voice[v].pitch_ctr = 0x3000; + voice[v].brr_index = 0; + } + + /***** + * decode BRR samples + *****/ + while(voice[v].pitch_ctr >= 0) { + voice[v].pitch_ctr -= 0x1000; + + voice[v].brr_data_index++; + voice[v].brr_data_index &= 3; + + if(voice[v].brr_index == 0) { + voice[v].brr_header = readb(voice[v].brr_ptr); + + if(voice[v].brr_header_flags() == BRR_END) { + status.ENDX |= (1 << v); + voice[v].env_state = SILENCE; + voice[v].AdjustEnvelope(); + } + } + +#define S(x) voice[v].brr_data[(voice[v].brr_data_index + (x)) & 3] + if(voice[v].env_state != SILENCE) { + sample = readb(voice[v].brr_ptr + 1 + (voice[v].brr_index >> 1)); + if(voice[v].brr_index & 1) { + sample = sclip<4>(sample); + } else { + sample = sclip<4>(sample >> 4); + } + + if(voice[v].brr_header_shift() <= 12) { + sample = (sample << voice[v].brr_header_shift() >> 1); + } else { + sample &= ~0x7ff; + } + + switch(voice[v].brr_header_filter()) { + case 0: //direct + break; + case 1: //15/16 + sample += S(-1) + ((-S(-1)) >> 4); + break; + case 2: //61/32 - 15/16 + sample += (S(-1) << 1) + ((-((S(-1) << 1) + S(-1))) >> 5) + - S(-2) + (S(-2) >> 4); + break; + case 3: //115/64 - 13/16 + sample += (S(-1) << 1) + ((-(S(-1) + (S(-1) << 2) + (S(-1) << 3))) >> 6) + - S(-2) + (((S(-2) << 1) + S(-2)) >> 4); + break; + } + + S(0) = sample = sclip<15>(sclamp<16>(sample)); + } else { + S(0) = sample = 0; + } + + if(++voice[v].brr_index > 15) { + voice[v].brr_index = 0; + if(voice[v].brr_header_flags() & BRR_END) { + if(voice[v].brr_header_flags() & BRR_LOOP) { + status.ENDX |= (1 << v); + } + voice[v].brr_ptr = readw((status.DIR << 8) + (voice[v].SRCN << 2) + 2); + voice[v].brr_looped = true; + } else { + voice[v].brr_ptr += 9; + } + } + } + + /***** + * volume envelope adjust + *****/ + voice[v].env_ctr += voice[v].env_rate; + + if(voice[v].env_ctr >= 0x7800) { + voice[v].env_ctr -= 0x7800; + switch(voice[v].env_mode) { + case DIRECT: + voice[v].env_rate = 0; + break; + case LINEAR_DEC: + voice[v].envx -= 32; + if(voice[v].envx <= 0) { + voice[v].envx = 0; + voice[v].env_rate = 0; + voice[v].env_mode = DIRECT; + } + break; + case LINEAR_INC: + voice[v].envx += 32; + if(voice[v].envx >= 0x7ff) { + voice[v].envx = 0x7ff; + voice[v].env_rate = 0; + voice[v].env_mode = DIRECT; + if(voice[v].ADSR_enabled() && voice[v].env_state == ATTACK) { + voice[v].env_state = ((voice[v].env_sustain == 0x800) ? SUSTAIN : DECAY); + voice[v].AdjustEnvelope(); + } + } + break; + case EXP_DEC: + //multiply by 255/256ths + voice[v].envx -= ((voice[v].envx - 1) >> 8) + 1; + if(voice[v].ADSR_enabled() && voice[v].env_state == DECAY && voice[v].envx <= voice[v].env_sustain) { + voice[v].env_state = SUSTAIN; + voice[v].AdjustEnvelope(); + } else if(voice[v].envx <= 0) { + voice[v].envx = 0; + voice[v].env_rate = 0; + voice[v].env_mode = DIRECT; + } + break; + case BENT_INC: + if(voice[v].envx < 0x600) { + voice[v].envx += 32; + } else { + voice[v].envx += 8; + + if(voice[v].envx >= 0x7ff) { + voice[v].envx = 0x7ff; + voice[v].env_rate = 0; + voice[v].env_mode = DIRECT; + } + } + break; + case FAST_ATTACK: + voice[v].envx += 0x400; + if(voice[v].envx >= 0x7ff) { + voice[v].envx = 0x7ff; + + //attack raises to max envx. if sustain is also set to max envx, skip decay phase + voice[v].env_state = ((voice[v].env_sustain == 0x800) ? SUSTAIN : DECAY); + voice[v].AdjustEnvelope(); + } + break; + case RELEASE_DEC: + voice[v].envx -= 8; + if(voice[v].envx <= 0) { + voice[v].env_state = SILENCE; + voice[v].AdjustEnvelope(); + } + break; + } + } + + voice[v].ENVX = voice[v].envx >> 4; + + /***** + * gaussian interpolation / noise + *****/ + if(status.NON & (1 << v)) { + sample = sclip<15>(status.noise_sample); + } else { + int32 d = voice[v].pitch_ctr >> 4; //-256 <= sample <= -1 + sample = ((gaussian_table[ -1 - d] * S(-3)) >> 11); + sample += ((gaussian_table[255 - d] * S(-2)) >> 11); + sample += ((gaussian_table[512 + d] * S(-1)) >> 11); + sample = sclip <15>(sample); + sample += ((gaussian_table[256 + d] * S( 0)) >> 11); + sample = sclamp<15>(sample); + } +#undef S + + /***** + * envelope / volume adjust + *****/ + sample = (sample * voice[v].envx) >> 11; + voice[v].outx = sample << 1; + voice[v].OUTX = sample >> 7; + + if(!status.mute()) { + msamplel += ((sample * voice[v].VOLL) >> 7) << 1; + msampler += ((sample * voice[v].VOLR) >> 7) << 1; + } + + if((status.EON & (1 << v)) && status.echo_write()) { + esamplel += ((sample * voice[v].VOLL) >> 7) << 1; + esampler += ((sample * voice[v].VOLR) >> 7) << 1; + } + } + +/***** + * echo (FIR) adjust + *****/ +#define F(c,x) status.fir_buffer[c][(status.fir_buffer_index + (x)) & 7] + status.fir_buffer_index++; + F(0,0) = readw((status.esa << 8) + status.echo_index + 0); + F(1,0) = readw((status.esa << 8) + status.echo_index + 2); + + fir_samplel = (F(0,-0) * status.FIR[7] + + F(0,-1) * status.FIR[6] + + F(0,-2) * status.FIR[5] + + F(0,-3) * status.FIR[4] + + F(0,-4) * status.FIR[3] + + F(0,-5) * status.FIR[2] + + F(0,-6) * status.FIR[1] + + F(0,-7) * status.FIR[0]); + + fir_sampler = (F(1,-0) * status.FIR[7] + + F(1,-1) * status.FIR[6] + + F(1,-2) * status.FIR[5] + + F(1,-3) * status.FIR[4] + + F(1,-4) * status.FIR[3] + + F(1,-5) * status.FIR[2] + + F(1,-6) * status.FIR[1] + + F(1,-7) * status.FIR[0]); +#undef F + +/***** + * update echo buffer + *****/ + if(status.echo_write()) { + esamplel += (fir_samplel * status.EFB) >> 14; + esampler += (fir_sampler * status.EFB) >> 14; + + esamplel = sclamp<16>(esamplel); + esampler = sclamp<16>(esampler); + + writew((status.esa << 8) + status.echo_index + 0, esamplel); + writew((status.esa << 8) + status.echo_index + 2, esampler); + } + + status.echo_index += 4; + if(status.echo_index >= status.echo_length) { + status.echo_index = 0; + status.echo_length = (status.EDL & 0x0f) << 11; + } + +//ESA read occurs at roughly 22/32th sample +//ESA fetch occurs at roughly 29/32th sample +//as this is not a subsample-level S-DSP emulator, +//simulate ~25/32th delay by caching ESA for one +//complete sample ... + status.esa = status.ESA; + +/***** + * main output adjust + *****/ + if(!status.mute()) { + msamplel = (msamplel * status.MVOLL) >> 7; + msampler = (msampler * status.MVOLR) >> 7; + + msamplel += (fir_samplel * status.EVOLL) >> 14; + msampler += (fir_sampler * status.EVOLR) >> 14; + + msamplel = sclamp<16>(msamplel); + msampler = sclamp<16>(msampler); + } + + audio.sample(msamplel, msampler); + scheduler.addclocks_dsp(32 * 3 * 8); + scheduler.sync_dspsmp(); +} + +aDSP::aDSP() {} +aDSP::~aDSP() {} + +}; diff --git a/libmednahawk/src/snes/src/dsp/adsp/adsp.hpp b/libmednahawk/src/snes/src/dsp/adsp/adsp.hpp new file mode 100644 index 0000000000..fa1e68d378 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/adsp/adsp.hpp @@ -0,0 +1,174 @@ +class aDSP : public DSP { +private: +uint8 dspram[128]; +uint8 *spcram; + +uint32 dsp_counter; + +enum { BRR_END = 1, BRR_LOOP = 2 }; + +uint8 readb (uint16 addr); +uint16 readw (uint16 addr); +void writeb(uint16 addr, uint8 data); +void writew(uint16 addr, uint16 data); + +public: +static const uint16 rate_table[32]; +static const int16 gaussian_table[512]; + +enum EnvelopeStates { + ATTACK, + DECAY, + SUSTAIN, + RELEASE, + SILENCE +}; + +enum EnvelopeModes { + DIRECT, + LINEAR_DEC, + EXP_DEC, + LINEAR_INC, + BENT_INC, + + FAST_ATTACK, + RELEASE_DEC +}; + +private: +struct Status { +//$0c,$1c + int8 MVOLL, MVOLR; +//$2c,$3c + int8 EVOLL, EVOLR; +//$4c,$5c + uint8 KON, KOFF; +//$6c + uint8 FLG; +//$7c + uint8 ENDX; +//$0d + int8 EFB; +//$2d,$3d,$4d + uint8 PMON, NON, EON; +//$5d + uint8 DIR; +//$6d,$7d + uint8 ESA, EDL; + +//$xf + int8 FIR[8]; + +//internal variables + uint8 kon, esa; + + int16 noise_ctr, noise_rate; + uint16 noise_sample; + + uint16 echo_index, echo_length; + int16 fir_buffer[2][8]; + uint8 fir_buffer_index; + +//functions + bool soft_reset() { return !!(FLG & 0x80); } + bool mute() { return !!(FLG & 0x40); } + bool echo_write() { return !(FLG & 0x20); } +} status; + +struct Voice { +//$x0-$x1 + int8 VOLL, VOLR; +//$x2-$x3 + int16 PITCH; +//$x4 + uint8 SRCN; +//$x5-$x7 + uint8 ADSR1, ADSR2, GAIN; +//$x8-$x9 + uint8 ENVX, OUTX; + +//internal variables + int16 pitch_ctr; + + int8 brr_index; + uint16 brr_ptr; + uint8 brr_header; + bool brr_looped; + + int16 brr_data[4]; + uint8 brr_data_index; + + int16 envx; + uint16 env_ctr, env_rate, env_sustain; + enum EnvelopeStates env_state; + enum EnvelopeModes env_mode; + + int16 outx; + +//functions + int16 pitch_rate() { return PITCH & 0x3fff; } + + uint8 brr_header_shift() { return brr_header >> 4; } + uint8 brr_header_filter() { return (brr_header >> 2) & 3; } + uint8 brr_header_flags() { return brr_header & 3; } + + bool ADSR_enabled() { return !!(ADSR1 & 0x80); } + uint8 ADSR_decay() { return (ADSR1 >> 4) & 7; } + uint8 ADSR_attack() { return ADSR1 & 15; } + uint8 ADSR_sus_level() { return ADSR2 >> 5; } + uint8 ADSR_sus_rate() { return ADSR2 & 31; } + + void AdjustEnvelope() { + if(env_state == SILENCE) { + env_mode = DIRECT; + env_rate = 0; + envx = 0; + } else if(env_state == RELEASE) { + env_mode = RELEASE_DEC; + env_rate = 0x7800; + } else if(ADSR_enabled()) { + switch(env_state) { + case ATTACK: + env_rate = rate_table[(ADSR_attack() << 1) + 1]; + env_mode = (env_rate == 0x7800) ? FAST_ATTACK : LINEAR_INC; + break; + case DECAY: + env_rate = rate_table[(ADSR_decay() << 1) + 0x10]; + env_mode = EXP_DEC; + break; + case SUSTAIN: + env_rate = rate_table[ADSR_sus_rate()]; + env_mode = (env_rate == 0) ? DIRECT : EXP_DEC; + break; + } + } else if(GAIN & 0x80) { + switch(GAIN & 0x60) { + case 0x00: env_mode = LINEAR_DEC; break; + case 0x20: env_mode = EXP_DEC; break; + case 0x40: env_mode = LINEAR_INC; break; + case 0x60: env_mode = BENT_INC; break; + } + env_rate = rate_table[GAIN & 0x1f]; + } else { + env_mode = DIRECT; + env_rate = 0; + envx = (GAIN & 0x7f) << 4; + } + } +} voice[8]; + +public: + void enter(); + void run(); + + uint8 read (uint8 addr); + void write(uint8 addr, uint8 data); + + void power(); + void reset(); + + aDSP(); + ~aDSP(); +}; + +extern aDSP dsp; diff --git a/libmednahawk/src/snes/src/dsp/adsp/adsp_tables.cpp b/libmednahawk/src/snes/src/dsp/adsp/adsp_tables.cpp new file mode 100644 index 0000000000..6a9d0d934b --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/adsp/adsp_tables.cpp @@ -0,0 +1,77 @@ +#ifdef ADSP_CPP + +const uint16 aDSP::rate_table[32] = { + 0x0000, 0x000F, 0x0014, 0x0018, 0x001E, 0x0028, 0x0030, 0x003C, + 0x0050, 0x0060, 0x0078, 0x00A0, 0x00C0, 0x00F0, 0x0140, 0x0180, + 0x01E0, 0x0280, 0x0300, 0x03C0, 0x0500, 0x0600, 0x0780, 0x0A00, + 0x0C00, 0x0F00, 0x1400, 0x1800, 0x1E00, 0x2800, 0x3C00, 0x7800 +}; + +const int16 aDSP::gaussian_table[512] = { + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x001, 0x001, 0x001, 0x001, 0x001, 0x001, 0x001, 0x001, + 0x001, 0x001, 0x001, 0x002, 0x002, 0x002, 0x002, 0x002, + 0x002, 0x002, 0x003, 0x003, 0x003, 0x003, 0x003, 0x004, + 0x004, 0x004, 0x004, 0x004, 0x005, 0x005, 0x005, 0x005, + 0x006, 0x006, 0x006, 0x006, 0x007, 0x007, 0x007, 0x008, + 0x008, 0x008, 0x009, 0x009, 0x009, 0x00A, 0x00A, 0x00A, + 0x00B, 0x00B, 0x00B, 0x00C, 0x00C, 0x00D, 0x00D, 0x00E, + 0x00E, 0x00F, 0x00F, 0x00F, 0x010, 0x010, 0x011, 0x011, + 0x012, 0x013, 0x013, 0x014, 0x014, 0x015, 0x015, 0x016, + 0x017, 0x017, 0x018, 0x018, 0x019, 0x01A, 0x01B, 0x01B, + 0x01C, 0x01D, 0x01D, 0x01E, 0x01F, 0x020, 0x020, 0x021, + 0x022, 0x023, 0x024, 0x024, 0x025, 0x026, 0x027, 0x028, + 0x029, 0x02A, 0x02B, 0x02C, 0x02D, 0x02E, 0x02F, 0x030, + 0x031, 0x032, 0x033, 0x034, 0x035, 0x036, 0x037, 0x038, + 0x03A, 0x03B, 0x03C, 0x03D, 0x03E, 0x040, 0x041, 0x042, + 0x043, 0x045, 0x046, 0x047, 0x049, 0x04A, 0x04C, 0x04D, + 0x04E, 0x050, 0x051, 0x053, 0x054, 0x056, 0x057, 0x059, + 0x05A, 0x05C, 0x05E, 0x05F, 0x061, 0x063, 0x064, 0x066, + 0x068, 0x06A, 0x06B, 0x06D, 0x06F, 0x071, 0x073, 0x075, + 0x076, 0x078, 0x07A, 0x07C, 0x07E, 0x080, 0x082, 0x084, + 0x086, 0x089, 0x08B, 0x08D, 0x08F, 0x091, 0x093, 0x096, + 0x098, 0x09A, 0x09C, 0x09F, 0x0A1, 0x0A3, 0x0A6, 0x0A8, + 0x0AB, 0x0AD, 0x0AF, 0x0B2, 0x0B4, 0x0B7, 0x0BA, 0x0BC, + 0x0BF, 0x0C1, 0x0C4, 0x0C7, 0x0C9, 0x0CC, 0x0CF, 0x0D2, + 0x0D4, 0x0D7, 0x0DA, 0x0DD, 0x0E0, 0x0E3, 0x0E6, 0x0E9, + 0x0EC, 0x0EF, 0x0F2, 0x0F5, 0x0F8, 0x0FB, 0x0FE, 0x101, + 0x104, 0x107, 0x10B, 0x10E, 0x111, 0x114, 0x118, 0x11B, + 0x11E, 0x122, 0x125, 0x129, 0x12C, 0x130, 0x133, 0x137, + 0x13A, 0x13E, 0x141, 0x145, 0x148, 0x14C, 0x150, 0x153, + 0x157, 0x15B, 0x15F, 0x162, 0x166, 0x16A, 0x16E, 0x172, + 0x176, 0x17A, 0x17D, 0x181, 0x185, 0x189, 0x18D, 0x191, + 0x195, 0x19A, 0x19E, 0x1A2, 0x1A6, 0x1AA, 0x1AE, 0x1B2, + 0x1B7, 0x1BB, 0x1BF, 0x1C3, 0x1C8, 0x1CC, 0x1D0, 0x1D5, + 0x1D9, 0x1DD, 0x1E2, 0x1E6, 0x1EB, 0x1EF, 0x1F3, 0x1F8, + 0x1FC, 0x201, 0x205, 0x20A, 0x20F, 0x213, 0x218, 0x21C, + 0x221, 0x226, 0x22A, 0x22F, 0x233, 0x238, 0x23D, 0x241, + 0x246, 0x24B, 0x250, 0x254, 0x259, 0x25E, 0x263, 0x267, + 0x26C, 0x271, 0x276, 0x27B, 0x280, 0x284, 0x289, 0x28E, + 0x293, 0x298, 0x29D, 0x2A2, 0x2A6, 0x2AB, 0x2B0, 0x2B5, + 0x2BA, 0x2BF, 0x2C4, 0x2C9, 0x2CE, 0x2D3, 0x2D8, 0x2DC, + 0x2E1, 0x2E6, 0x2EB, 0x2F0, 0x2F5, 0x2FA, 0x2FF, 0x304, + 0x309, 0x30E, 0x313, 0x318, 0x31D, 0x322, 0x326, 0x32B, + 0x330, 0x335, 0x33A, 0x33F, 0x344, 0x349, 0x34E, 0x353, + 0x357, 0x35C, 0x361, 0x366, 0x36B, 0x370, 0x374, 0x379, + 0x37E, 0x383, 0x388, 0x38C, 0x391, 0x396, 0x39B, 0x39F, + 0x3A4, 0x3A9, 0x3AD, 0x3B2, 0x3B7, 0x3BB, 0x3C0, 0x3C5, + 0x3C9, 0x3CE, 0x3D2, 0x3D7, 0x3DC, 0x3E0, 0x3E5, 0x3E9, + 0x3ED, 0x3F2, 0x3F6, 0x3FB, 0x3FF, 0x403, 0x408, 0x40C, + 0x410, 0x415, 0x419, 0x41D, 0x421, 0x425, 0x42A, 0x42E, + 0x432, 0x436, 0x43A, 0x43E, 0x442, 0x446, 0x44A, 0x44E, + 0x452, 0x455, 0x459, 0x45D, 0x461, 0x465, 0x468, 0x46C, + 0x470, 0x473, 0x477, 0x47A, 0x47E, 0x481, 0x485, 0x488, + 0x48C, 0x48F, 0x492, 0x496, 0x499, 0x49C, 0x49F, 0x4A2, + 0x4A6, 0x4A9, 0x4AC, 0x4AF, 0x4B2, 0x4B5, 0x4B7, 0x4BA, + 0x4BD, 0x4C0, 0x4C3, 0x4C5, 0x4C8, 0x4CB, 0x4CD, 0x4D0, + 0x4D2, 0x4D5, 0x4D7, 0x4D9, 0x4DC, 0x4DE, 0x4E0, 0x4E3, + 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, + 0x4F5, 0x4F6, 0x4F8, 0x4FA, 0x4FB, 0x4FD, 0x4FF, 0x500, + 0x502, 0x503, 0x504, 0x506, 0x507, 0x508, 0x50A, 0x50B, + 0x50C, 0x50D, 0x50E, 0x50F, 0x510, 0x511, 0x511, 0x512, + 0x513, 0x514, 0x514, 0x515, 0x516, 0x516, 0x517, 0x517, + 0x517, 0x518, 0x518, 0x518, 0x518, 0x518, 0x519, 0x519 +}; + +#endif diff --git a/libmednahawk/src/snes/src/dsp/dsp.hpp b/libmednahawk/src/snes/src/dsp/dsp.hpp new file mode 100644 index 0000000000..34719d99f8 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/dsp.hpp @@ -0,0 +1,12 @@ +class DSP { +public: + virtual void enter() = 0; + + virtual uint8 read(uint8 addr) = 0; + virtual void write(uint8 addr, uint8 data) = 0; + + virtual void power() = 0; + virtual void reset() = 0; + + virtual void serialize(serializer&) {} +}; diff --git a/libmednahawk/src/snes/src/dsp/sdsp/brr.cpp b/libmednahawk/src/snes/src/dsp/sdsp/brr.cpp new file mode 100644 index 0000000000..bf17740227 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/brr.cpp @@ -0,0 +1,62 @@ +#ifdef SDSP_CPP + +void sDSP::brr_decode(voice_t &v) { + //state.t_brr_byte = ram[v.brr_addr + v.brr_offset] cached from previous clock cycle + int nybbles = (state.t_brr_byte << 8) + memory::apuram[(uint16)(v.brr_addr + v.brr_offset + 1)]; + + const int filter = (state.t_brr_header >> 2) & 3; + const int scale = (state.t_brr_header >> 4); + + //decode four samples + for(unsigned i = 0; i < 4; i++) { + //bits 12-15 = current nybble; sign extend, then shift right to 4-bit precision + //result: s = 4-bit sign-extended sample value + int s = (int16)nybbles >> 12; + nybbles <<= 4; //slide nybble so that on next loop iteration, bits 12-15 = current nybble + + if(scale <= 12) { + s <<= scale; + s >>= 1; + } else { + s &= ~0x7ff; + } + + //apply IIR filter (2 is the most commonly used) + const int p1 = v.buffer[v.buf_pos - 1]; + const int p2 = v.buffer[v.buf_pos - 2] >> 1; + + switch(filter) { + case 0: break; //no filter + + case 1: { + //s += p1 * 0.46875 + s += p1 >> 1; + s += (-p1) >> 5; + } break; + + case 2: { + //s += p1 * 0.953125 - p2 * 0.46875 + s += p1; + s -= p2; + s += p2 >> 4; + s += (p1 * -3) >> 6; + } break; + + case 3: { + //s += p1 * 0.8984375 - p2 * 0.40625 + s += p1; + s -= p2; + s += (p1 * -13) >> 7; + s += (p2 * 3) >> 4; + } break; + } + + //adjust and write sample + s = sclamp<16>(s); + s = (int16)(s << 1); + v.buffer.write(v.buf_pos++, s); + if(v.buf_pos >= brr_buf_size) v.buf_pos = 0; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/counter.cpp b/libmednahawk/src/snes/src/dsp/sdsp/counter.cpp new file mode 100644 index 0000000000..23bba0181e --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/counter.cpp @@ -0,0 +1,52 @@ +#ifdef SDSP_CPP + +//counter_rate = number of samples per counter event +//all rates are evenly divisible by counter_range (0x7800, 30720, or 2048 * 5 * 3) +//note that rate[0] is a special case, which never triggers + +const uint16 sDSP::counter_rate[32] = { + 0, 2048, 1536, + 1280, 1024, 768, + 640, 512, 384, + 320, 256, 192, + 160, 128, 96, + 80, 64, 48, + 40, 32, 24, + 20, 16, 12, + 10, 8, 6, + 5, 4, 3, + 2, + 1, +}; + +//counter_offset = counter offset from zero +//counters do not appear to be aligned at zero for all rates + +const uint16 sDSP::counter_offset[32] = { + 0, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 536, 0, 1040, + 0, + 0, +}; + +inline void sDSP::counter_tick() { + state.counter--; + if(state.counter < 0) state.counter = counter_range - 1; +} + +//return true if counter event should trigger + +inline bool sDSP::counter_poll(unsigned rate) { + if(rate == 0) return false; + return (((unsigned)state.counter + counter_offset[rate]) % counter_rate[rate]) == 0; +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.cpp b/libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.cpp new file mode 100644 index 0000000000..10b7761c03 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.cpp @@ -0,0 +1,3 @@ +#ifdef SDSP_CPP + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.hpp b/libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.hpp new file mode 100644 index 0000000000..35fdffa833 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/debugger/debugger.hpp @@ -0,0 +1,3 @@ +class sDSPDebugger : public sDSP { +public: +}; diff --git a/libmednahawk/src/snes/src/dsp/sdsp/echo.cpp b/libmednahawk/src/snes/src/dsp/sdsp/echo.cpp new file mode 100644 index 0000000000..e725846f36 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/echo.cpp @@ -0,0 +1,135 @@ +#ifdef SDSP_CPP + +int sDSP::calc_fir(int i, bool channel) { + int s = state.echo_hist[channel][state.echo_hist_pos + i + 1]; + return (s * (int8)REG(fir + i * 0x10)) >> 6; +} + +int sDSP::echo_output(bool channel) { + int output = (int16)((state.t_main_out[channel] * (int8)REG(mvoll + channel * 0x10)) >> 7) + + (int16)((state.t_echo_in [channel] * (int8)REG(evoll + channel * 0x10)) >> 7); + return sclamp<16>(output); +} + +void sDSP::echo_read(bool channel) { + unsigned addr = state.t_echo_ptr + channel * 2; + uint8 lo = memory::apuram[(uint16)(addr + 0)]; + uint8 hi = memory::apuram[(uint16)(addr + 1)]; + int s = (int16)((hi << 8) + lo); + state.echo_hist[channel].write(state.echo_hist_pos, s >> 1); +} + +void sDSP::echo_write(bool channel) { + if(!(state.t_echo_disabled & 0x20)) { + unsigned addr = state.t_echo_ptr + channel * 2; + int s = state.t_echo_out[channel]; + memory::apuram[(uint16)(addr + 0)] = s; + memory::apuram[(uint16)(addr + 1)] = s >> 8; + } + + state.t_echo_out[channel] = 0; +} + +void sDSP::echo_22() { + //history + state.echo_hist_pos++; + if(state.echo_hist_pos >= echo_hist_size) state.echo_hist_pos = 0; + + state.t_echo_ptr = (uint16)((state.t_esa << 8) + state.echo_offset); + echo_read(0); + + //FIR + int l = calc_fir(0, 0); + int r = calc_fir(0, 1); + + state.t_echo_in[0] = l; + state.t_echo_in[1] = r; +} + +void sDSP::echo_23() { + int l = calc_fir(1, 0) + calc_fir(2, 0); + int r = calc_fir(1, 1) + calc_fir(2, 1); + + state.t_echo_in[0] += l; + state.t_echo_in[1] += r; + + echo_read(1); +} + +void sDSP::echo_24() { + int l = calc_fir(3, 0) + calc_fir(4, 0) + calc_fir(5, 0); + int r = calc_fir(3, 1) + calc_fir(4, 1) + calc_fir(5, 1); + + state.t_echo_in[0] += l; + state.t_echo_in[1] += r; +} + +void sDSP::echo_25() { + int l = state.t_echo_in[0] + calc_fir(6, 0); + int r = state.t_echo_in[1] + calc_fir(6, 1); + + l = (int16)l; + r = (int16)r; + + l += (int16)calc_fir(7, 0); + r += (int16)calc_fir(7, 1); + + state.t_echo_in[0] = sclamp<16>(l) & ~1; + state.t_echo_in[1] = sclamp<16>(r) & ~1; +} + +void sDSP::echo_26() { + //left output volumes + //(save sample for next clock so we can output both together) + state.t_main_out[0] = echo_output(0); + + //echo feedback + int l = state.t_echo_out[0] + (int16)((state.t_echo_in[0] * (int8)REG(efb)) >> 7); + int r = state.t_echo_out[1] + (int16)((state.t_echo_in[1] * (int8)REG(efb)) >> 7); + + state.t_echo_out[0] = sclamp<16>(l) & ~1; + state.t_echo_out[1] = sclamp<16>(r) & ~1; +} + +void sDSP::echo_27() { + //output + int outl = state.t_main_out[0]; + int outr = echo_output(1); + state.t_main_out[0] = 0; + state.t_main_out[1] = 0; + + //TODO: global muting isn't this simple + //(turns DAC on and off or something, causing small ~37-sample pulse when first muted) + if(REG(flg) & 0x40) { + outl = 0; + outr = 0; + } + + //output sample to DAC + audio.sample(outl, outr); +} + +void sDSP::echo_28() { + state.t_echo_disabled = REG(flg); +} + +void sDSP::echo_29() { + state.t_esa = REG(esa); + + if(!state.echo_offset) state.echo_length = (REG(edl) & 0x0f) << 11; + + state.echo_offset += 4; + if(state.echo_offset >= state.echo_length) state.echo_offset = 0; + + //write left echo + echo_write(0); + + state.t_echo_disabled = REG(flg); +} + +void sDSP::echo_30() { + //write right echo + echo_write(1); +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/envelope.cpp b/libmednahawk/src/snes/src/dsp/sdsp/envelope.cpp new file mode 100644 index 0000000000..5e6a446a98 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/envelope.cpp @@ -0,0 +1,62 @@ +#ifdef SDSP_CPP + +void sDSP::envelope_run(voice_t &v) { + int env = v.env; + + if(v.env_mode == env_release) { //60% + env -= 0x8; + if(env < 0) env = 0; + v.env = env; + return; + } + + int rate; + int env_data = VREG(adsr1); + if(state.t_adsr0 & 0x80) { //99% ADSR + if(v.env_mode >= env_decay) { //99% + env--; + env -= env >> 8; + rate = env_data & 0x1f; + if(v.env_mode == env_decay) { //1% + rate = ((state.t_adsr0 >> 3) & 0x0e) + 0x10; + } + } else { //env_attack + rate = ((state.t_adsr0 & 0x0f) << 1) + 1; + env += rate < 31 ? 0x20 : 0x400; + } + } else { //GAIN + env_data = VREG(gain); + int mode = env_data >> 5; + if(mode < 4) { //direct + env = env_data << 4; + rate = 31; + } else { + rate = env_data & 0x1f; + if(mode == 4) { //4: linear decrease + env -= 0x20; + } else if(mode < 6) { //5: exponential decrease + env--; + env -= env >> 8; + } else { //6, 7: linear increase + env += 0x20; + if(mode > 6 && (unsigned)v.hidden_env >= 0x600) { + env += 0x8 - 0x20; //7: two-slope linear increase + } + } + } + } + + //sustain level + if((env >> 8) == (env_data >> 5) && v.env_mode == env_decay) v.env_mode = env_sustain; + v.hidden_env = env; + + //unsigned cast because linear decrease underflowing also triggers this + if((unsigned)env > 0x7ff) { + env = (env < 0 ? 0 : 0x7ff); + if(v.env_mode == env_attack) v.env_mode = env_decay; + } + + if(counter_poll(rate) == true) v.env = env; +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/gaussian.cpp b/libmednahawk/src/snes/src/dsp/sdsp/gaussian.cpp new file mode 100644 index 0000000000..36aa319325 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/gaussian.cpp @@ -0,0 +1,54 @@ +#ifdef SDSP_CPP + +const int16 sDSP::gaussian_table[512] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, + 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, + 11, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 16, 16, 17, 17, + 18, 19, 19, 20, 20, 21, 21, 22, 23, 23, 24, 24, 25, 26, 27, 27, + 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 36, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 58, 59, 60, 61, 62, 64, 65, 66, 67, 69, 70, 71, 73, 74, 76, 77, + 78, 80, 81, 83, 84, 86, 87, 89, 90, 92, 94, 95, 97, 99, 100, 102, + 104, 106, 107, 109, 111, 113, 115, 117, 118, 120, 122, 124, 126, 128, 130, 132, + 134, 137, 139, 141, 143, 145, 147, 150, 152, 154, 156, 159, 161, 163, 166, 168, + 171, 173, 175, 178, 180, 183, 186, 188, 191, 193, 196, 199, 201, 204, 207, 210, + 212, 215, 218, 221, 224, 227, 230, 233, 236, 239, 242, 245, 248, 251, 254, 257, + 260, 263, 267, 270, 273, 276, 280, 283, 286, 290, 293, 297, 300, 304, 307, 311, + 314, 318, 321, 325, 328, 332, 336, 339, 343, 347, 351, 354, 358, 362, 366, 370, + 374, 378, 381, 385, 389, 393, 397, 401, 405, 410, 414, 418, 422, 426, 430, 434, + 439, 443, 447, 451, 456, 460, 464, 469, 473, 477, 482, 486, 491, 495, 499, 504, + 508, 513, 517, 522, 527, 531, 536, 540, 545, 550, 554, 559, 563, 568, 573, 577, + 582, 587, 592, 596, 601, 606, 611, 615, 620, 625, 630, 635, 640, 644, 649, 654, + 659, 664, 669, 674, 678, 683, 688, 693, 698, 703, 708, 713, 718, 723, 728, 732, + 737, 742, 747, 752, 757, 762, 767, 772, 777, 782, 787, 792, 797, 802, 806, 811, + 816, 821, 826, 831, 836, 841, 846, 851, 855, 860, 865, 870, 875, 880, 884, 889, + 894, 899, 904, 908, 913, 918, 923, 927, 932, 937, 941, 946, 951, 955, 960, 965, + 969, 974, 978, 983, 988, 992, 997, 1001, 1005, 1010, 1014, 1019, 1023, 1027, 1032, 1036, + 1040, 1045, 1049, 1053, 1057, 1061, 1066, 1070, 1074, 1078, 1082, 1086, 1090, 1094, 1098, 1102, + 1106, 1109, 1113, 1117, 1121, 1125, 1128, 1132, 1136, 1139, 1143, 1146, 1150, 1153, 1157, 1160, + 1164, 1167, 1170, 1174, 1177, 1180, 1183, 1186, 1190, 1193, 1196, 1199, 1202, 1205, 1207, 1210, + 1213, 1216, 1219, 1221, 1224, 1227, 1229, 1232, 1234, 1237, 1239, 1241, 1244, 1246, 1248, 1251, + 1253, 1255, 1257, 1259, 1261, 1263, 1265, 1267, 1269, 1270, 1272, 1274, 1275, 1277, 1279, 1280, + 1282, 1283, 1284, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1297, 1298, + 1299, 1300, 1300, 1301, 1302, 1302, 1303, 1303, 1303, 1304, 1304, 1304, 1304, 1304, 1305, 1305, +}; + +int sDSP::gaussian_interpolate(const voice_t &v) { + //make pointers into gaussian table based on fractional position between samples + int offset = (v.interp_pos >> 4) & 0xff; + const int16 *fwd = gaussian_table + 255 - offset; + const int16 *rev = gaussian_table + offset; //mirror left half of gaussian table + + offset = v.buf_pos + (v.interp_pos >> 12); + int output; + output = (fwd[ 0] * v.buffer[offset + 0]) >> 11; + output += (fwd[256] * v.buffer[offset + 1]) >> 11; + output += (rev[256] * v.buffer[offset + 2]) >> 11; + output = (int16)output; + output += (rev[ 0] * v.buffer[offset + 3]) >> 11; + return sclamp<16>(output) & ~1; +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/misc.cpp b/libmednahawk/src/snes/src/dsp/sdsp/misc.cpp new file mode 100644 index 0000000000..49181728f3 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/misc.cpp @@ -0,0 +1,35 @@ +#ifdef SDSP_CPP + +void sDSP::misc_27() { + state.t_pmon = REG(pmon) & ~1; //voice 0 doesn't support PMON +} + +void sDSP::misc_28() { + state.t_non = REG(non); + state.t_eon = REG(eon); + state.t_dir = REG(dir); +} + +void sDSP::misc_29() { + state.every_other_sample ^= 1; + if(state.every_other_sample) { + state.new_kon &= ~state.kon; //clears KON 63 clocks after it was last read + } +} + +void sDSP::misc_30() { + if(state.every_other_sample) { + state.kon = state.new_kon; + state.t_koff = REG(koff); + } + + counter_tick(); + + //noise + if(counter_poll(REG(flg) & 0x1f) == true) { + int feedback = (state.noise << 13) ^ (state.noise << 14); + state.noise = (feedback & 0x4000) ^ (state.noise >> 1); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/sdsp.cpp b/libmednahawk/src/snes/src/dsp/sdsp/sdsp.cpp new file mode 100644 index 0000000000..6a6a76d79e --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/sdsp.cpp @@ -0,0 +1,338 @@ +//S-DSP emulator +//note: this is basically a C++ cothreaded implementation of Shay Green's (blargg's) S-DSP emulator. +//the actual algorithms, timing information, tables, variable names, etc were all from him. + +#include <../base.hpp> + +#define SDSP_CPP +namespace SNES { + +#if defined(DEBUGGER) + #include "debugger/debugger.cpp" + sDSPDebugger dsp; +#else + sDSP dsp; +#endif + +#include "serialization.cpp" + +#define REG(n) state.regs[r_##n] +#define VREG(n) state.regs[v.vidx + v_##n] + +#if !defined(DSP_STATE_MACHINE) + #define phase_start() while(true) { \ + while(scheduler.sync == Scheduler::SyncAll) { \ + scheduler.exit(Scheduler::SynchronizeEvent); \ + } + #define phase(n) + #define tick() scheduler.addclocks_dsp(3 * 8); scheduler.sync_dspsmp() + #define phase_end() } +#else + #define phase_start() switch(phase_index) { + #define phase(n) case n: + #define tick() scheduler.addclocks_dsp(3 * 8); break + #define phase_end() } phase_index = (phase_index + 1) & 31; +#endif + +#include "gaussian.cpp" +#include "counter.cpp" +#include "envelope.cpp" +#include "brr.cpp" +#include "misc.cpp" +#include "voice.cpp" +#include "echo.cpp" + +/* timing */ + +void sDSP::enter() { + phase_start() + + phase(0) + voice_5(voice[0]); + voice_2(voice[1]); + tick(); + + phase(1) + voice_6(voice[0]); + voice_3(voice[1]); + tick(); + + phase(2) + voice_7(voice[0]); + voice_4(voice[1]); + voice_1(voice[3]); + tick(); + + phase(3) + voice_8(voice[0]); + voice_5(voice[1]); + voice_2(voice[2]); + tick(); + + phase(4) + voice_9(voice[0]); + voice_6(voice[1]); + voice_3(voice[2]); + tick(); + + phase(5) + voice_7(voice[1]); + voice_4(voice[2]); + voice_1(voice[4]); + tick(); + + phase(6) + voice_8(voice[1]); + voice_5(voice[2]); + voice_2(voice[3]); + tick(); + + phase(7) + voice_9(voice[1]); + voice_6(voice[2]); + voice_3(voice[3]); + tick(); + + phase(8) + voice_7(voice[2]); + voice_4(voice[3]); + voice_1(voice[5]); + tick(); + + phase(9) + voice_8(voice[2]); + voice_5(voice[3]); + voice_2(voice[4]); + tick(); + + phase(10) + voice_9(voice[2]); + voice_6(voice[3]); + voice_3(voice[4]); + tick(); + + phase(11) + voice_7(voice[3]); + voice_4(voice[4]); + voice_1(voice[6]); + tick(); + + phase(12) + voice_8(voice[3]); + voice_5(voice[4]); + voice_2(voice[5]); + tick(); + + phase(13) + voice_9(voice[3]); + voice_6(voice[4]); + voice_3(voice[5]); + tick(); + + phase(14) + voice_7(voice[4]); + voice_4(voice[5]); + voice_1(voice[7]); + tick(); + + phase(15) + voice_8(voice[4]); + voice_5(voice[5]); + voice_2(voice[6]); + tick(); + + phase(16) + voice_9(voice[4]); + voice_6(voice[5]); + voice_3(voice[6]); + tick(); + + phase(17) + voice_1(voice[0]); + voice_7(voice[5]); + voice_4(voice[6]); + tick(); + + phase(18) + voice_8(voice[5]); + voice_5(voice[6]); + voice_2(voice[7]); + tick(); + + phase(19) + voice_9(voice[5]); + voice_6(voice[6]); + voice_3(voice[7]); + tick(); + + phase(20) + voice_1(voice[1]); + voice_7(voice[6]); + voice_4(voice[7]); + tick(); + + phase(21) + voice_8(voice[6]); + voice_5(voice[7]); + voice_2(voice[0]); + tick(); + + phase(22) + voice_3a(voice[0]); + voice_9(voice[6]); + voice_6(voice[7]); + echo_22(); + tick(); + + phase(23) + voice_7(voice[7]); + echo_23(); + tick(); + + phase(24) + voice_8(voice[7]); + echo_24(); + tick(); + + phase(25) + voice_3b(voice[0]); + voice_9(voice[7]); + echo_25(); + tick(); + + phase(26) + echo_26(); + tick(); + + phase(27) + misc_27(); + echo_27(); + tick(); + + phase(28) + misc_28(); + echo_28(); + tick(); + + phase(29) + misc_29(); + echo_29(); + tick(); + + phase(30) + misc_30(); + voice_3c(voice[0]); + echo_30(); + tick(); + + phase(31) + voice_4(voice[0]); + voice_1(voice[2]); + tick(); + + phase_end() +} + +/* register interface for S-SMP $00f2,$00f3 */ + +uint8 sDSP::read(uint8 addr) { + return state.regs[addr]; +} + +void sDSP::write(uint8 addr, uint8 data) { + state.regs[addr] = data; + + if((addr & 0x0f) == v_envx) { + state.envx_buf = data; + } else if((addr & 0x0f) == v_outx) { + state.outx_buf = data; + } else if(addr == r_kon) { + state.new_kon = data; + } else if(addr == r_endx) { + //always cleared, regardless of data written + state.endx_buf = 0; + state.regs[r_endx] = 0; + } +} + +/* initialization */ + +void sDSP::power() { + memset(&state.regs, 0, sizeof state.regs); + state.echo_hist_pos = 0; + state.every_other_sample = false; + state.kon = 0; + state.noise = 0; + state.counter = 0; + state.echo_offset = 0; + state.echo_length = 0; + state.new_kon = 0; + state.endx_buf = 0; + state.envx_buf = 0; + state.outx_buf = 0; + state.t_pmon = 0; + state.t_non = 0; + state.t_eon = 0; + state.t_dir = 0; + state.t_koff = 0; + state.t_brr_next_addr = 0; + state.t_adsr0 = 0; + state.t_brr_header = 0; + state.t_brr_byte = 0; + state.t_srcn = 0; + state.t_esa = 0; + state.t_echo_disabled = 0; + state.t_dir_addr = 0; + state.t_pitch = 0; + state.t_output = 0; + state.t_looped = 0; + state.t_echo_ptr = 0; + state.t_main_out[0] = state.t_main_out[1] = 0; + state.t_echo_out[0] = state.t_echo_out[1] = 0; + state.t_echo_in[0] = state.t_echo_in[1] = 0; + + for(unsigned i = 0; i < 8; i++) { + voice[i].buf_pos = 0; + voice[i].interp_pos = 0; + voice[i].brr_addr = 0; + voice[i].brr_offset = 1; + voice[i].vbit = 1 << i; + voice[i].vidx = i * 0x10; + voice[i].kon_delay = 0; + voice[i].env_mode = env_release; + voice[i].env = 0; + voice[i].t_envx_out = 0; + voice[i].hidden_env = 0; + } + + reset(); +} + +void sDSP::reset() { + REG(flg) = 0xe0; + + state.noise = 0x4000; + state.echo_hist_pos = 0; + state.every_other_sample = 1; + state.echo_offset = 0; + state.counter = 0; + + phase_index = 0; +} + +sDSP::sDSP() { + nall_static_assert= 32 / 8>(); //int >= 32-bits + nall_static_assert<(int8)0x80 == -0x80>(); //8-bit sign extension + nall_static_assert<(int16)0x8000 == -0x8000>(); //16-bit sign extension + nall_static_assert<(uint16)0xffff0000 == 0>(); //16-bit unsigned clip + nall_static_assert<(-1 >> 1) == -1>(); //arithmetic shift right + + //-0x8000 <= n <= +0x7fff + assert(sclamp<16>(+0x8000) == +0x7fff); + assert(sclamp<16>(-0x8001) == -0x8000); +} + +sDSP::~sDSP() { +} + +}; diff --git a/libmednahawk/src/snes/src/dsp/sdsp/sdsp.hpp b/libmednahawk/src/snes/src/dsp/sdsp/sdsp.hpp new file mode 100644 index 0000000000..10cc6704e5 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/sdsp.hpp @@ -0,0 +1,176 @@ +class sDSP : public DSP { +public: + void enter(); + + uint8 read(uint8 addr); + void write(uint8 addr, uint8 data); + + void power(); + void reset(); + + void serialize(serializer&); + sDSP(); + ~sDSP(); + +private: + //DSP_STATE_MACHINE variable + unsigned phase_index; + + //global registers + enum global_reg_t { + r_mvoll = 0x0c, r_mvolr = 0x1c, + r_evoll = 0x2c, r_evolr = 0x3c, + r_kon = 0x4c, r_koff = 0x5c, + r_flg = 0x6c, r_endx = 0x7c, + r_efb = 0x0d, r_pmon = 0x2d, + r_non = 0x3d, r_eon = 0x4d, + r_dir = 0x5d, r_esa = 0x6d, + r_edl = 0x7d, r_fir = 0x0f, //8 coefficients at 0x0f, 0x1f, ... 0x7f + }; + + //voice registers + enum voice_reg_t { + v_voll = 0x00, v_volr = 0x01, + v_pitchl = 0x02, v_pitchh = 0x03, + v_srcn = 0x04, v_adsr0 = 0x05, + v_adsr1 = 0x06, v_gain = 0x07, + v_envx = 0x08, v_outx = 0x09, + }; + + //internal envelope modes + enum env_mode_t { env_release, env_attack, env_decay, env_sustain }; + + //internal constants + enum { echo_hist_size = 8 }; + enum { brr_buf_size = 12 }; + enum { brr_block_size = 9 }; + + //global state + struct state_t { + uint8 regs[128]; + + modulo_array echo_hist[2]; //echo history keeps most recent 8 samples + int echo_hist_pos; + + bool every_other_sample; //toggles every sample + int kon; //KON value when last checked + int noise; + int counter; + int echo_offset; //offset from ESA in echo buffer + int echo_length; //number of bytes that echo_offset will stop at + + //hidden registers also written to when main register is written to + int new_kon; + int endx_buf; + int envx_buf; + int outx_buf; + + //temporary state between clocks + + //read once per sample + int t_pmon; + int t_non; + int t_eon; + int t_dir; + int t_koff; + + //read a few clocks ahead before used + int t_brr_next_addr; + int t_adsr0; + int t_brr_header; + int t_brr_byte; + int t_srcn; + int t_esa; + int t_echo_disabled; + + //internal state that is recalculated every sample + int t_dir_addr; + int t_pitch; + int t_output; + int t_looped; + int t_echo_ptr; + + //left/right sums + int t_main_out[2]; + int t_echo_out[2]; + int t_echo_in [2]; + } state; + + //voice state + struct voice_t { + modulo_array buffer; //decoded samples + int buf_pos; //place in buffer where next samples will be decoded + int interp_pos; //relative fractional position in sample (0x1000 = 1.0) + int brr_addr; //address of current BRR block + int brr_offset; //current decoding offset in BRR block + int vbit; //bitmask for voice: 0x01 for voice 0, 0x02 for voice 1, etc + int vidx; //voice channel register index: 0x00 for voice 0, 0x10 for voice 1, etc + int kon_delay; //KON delay/current setup phase + int env_mode; + int env; //current envelope level + int t_envx_out; + int hidden_env; //used by GAIN mode 7, very obscure quirk + } voice[8]; + + //gaussian + static const int16 gaussian_table[512]; + int gaussian_interpolate(const voice_t &v); + + //counter + enum { counter_range = 2048 * 5 * 3 }; //30720 (0x7800) + static const uint16 counter_rate[32]; + static const uint16 counter_offset[32]; + void counter_tick(); + bool counter_poll(unsigned rate); + + //envelope + void envelope_run(voice_t &v); + + //brr + void brr_decode(voice_t &v); + + //misc + void misc_27(); + void misc_28(); + void misc_29(); + void misc_30(); + + //voice + void voice_output(voice_t &v, bool channel); + void voice_1 (voice_t &v); + void voice_2 (voice_t &v); + void voice_3 (voice_t &v); + void voice_3a(voice_t &v); + void voice_3b(voice_t &v); + void voice_3c(voice_t &v); + void voice_4 (voice_t &v); + void voice_5 (voice_t &v); + void voice_6 (voice_t &v); + void voice_7 (voice_t &v); + void voice_8 (voice_t &v); + void voice_9 (voice_t &v); + + //echo + int calc_fir(int i, bool channel); + int echo_output(bool channel); + void echo_read(bool channel); + void echo_write(bool channel); + void echo_22(); + void echo_23(); + void echo_24(); + void echo_25(); + void echo_26(); + void echo_27(); + void echo_28(); + void echo_29(); + void echo_30(); + + friend class sDSPDebug; +}; + +#if defined(DEBUGGER) + #include "debugger/debugger.hpp" + extern sDSPDebugger dsp; +#else + extern sDSP dsp; +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/serialization.cpp b/libmednahawk/src/snes/src/dsp/sdsp/serialization.cpp new file mode 100644 index 0000000000..4541353a64 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/serialization.cpp @@ -0,0 +1,68 @@ +#ifdef SDSP_CPP + +void sDSP::serialize(serializer &s) { + DSP::serialize(s); + + s.integer(phase_index); + + s.array(state.regs, 128); + state.echo_hist[0].serialize(s); + state.echo_hist[1].serialize(s); + s.integer(state.echo_hist_pos); + + s.integer(state.every_other_sample); + s.integer(state.kon); + s.integer(state.noise); + s.integer(state.counter); + s.integer(state.echo_offset); + s.integer(state.echo_length); + + s.integer(state.new_kon); + s.integer(state.endx_buf); + s.integer(state.envx_buf); + s.integer(state.outx_buf); + + s.integer(state.t_pmon); + s.integer(state.t_non); + s.integer(state.t_eon); + s.integer(state.t_dir); + s.integer(state.t_koff); + + s.integer(state.t_brr_next_addr); + s.integer(state.t_adsr0); + s.integer(state.t_brr_header); + s.integer(state.t_brr_byte); + s.integer(state.t_srcn); + s.integer(state.t_esa); + s.integer(state.t_echo_disabled); + + s.integer(state.t_dir_addr); + s.integer(state.t_pitch); + s.integer(state.t_output); + s.integer(state.t_looped); + s.integer(state.t_echo_ptr); + + s.integer(state.t_main_out[0]); + s.integer(state.t_main_out[1]); + s.integer(state.t_echo_out[0]); + s.integer(state.t_echo_out[1]); + s.integer(state.t_echo_in [0]); + s.integer(state.t_echo_in [1]); + + for(unsigned n = 0; n < 8; n++) { + voice[n].buffer.serialize(s); + s.integer(voice[n].buf_pos); + s.integer(voice[n].interp_pos); + s.integer(voice[n].brr_addr); + s.integer(voice[n].brr_offset); + s.integer(voice[n].vbit); + s.integer(voice[n].vidx); + s.integer(voice[n].kon_delay); + s.integer(voice[n].env_mode); + s.integer(voice[n].env); + s.integer(voice[n].t_envx_out); + s.integer(voice[n].hidden_env); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/dsp/sdsp/voice.cpp b/libmednahawk/src/snes/src/dsp/sdsp/voice.cpp new file mode 100644 index 0000000000..249786f173 --- /dev/null +++ b/libmednahawk/src/snes/src/dsp/sdsp/voice.cpp @@ -0,0 +1,174 @@ +#ifdef SDSP_CPP + +inline void sDSP::voice_output(voice_t &v, bool channel) { + //apply left/right volume + int amp = (state.t_output * (int8)VREG(voll + channel)) >> 7; + + //add to output total + state.t_main_out[channel] += amp; + state.t_main_out[channel] = sclamp<16>(state.t_main_out[channel]); + + //optionally add to echo total + if(state.t_eon & v.vbit) { + state.t_echo_out[channel] += amp; + state.t_echo_out[channel] = sclamp<16>(state.t_echo_out[channel]); + } +} + +void sDSP::voice_1(voice_t &v) { + state.t_dir_addr = (state.t_dir << 8) + (state.t_srcn << 2); + state.t_srcn = VREG(srcn); +} + +void sDSP::voice_2(voice_t &v) { + //read sample pointer (ignored if not needed) + uint16 addr = state.t_dir_addr; + if(!v.kon_delay) addr += 2; + uint8 lo = memory::apuram[(uint16)(addr + 0)]; + uint8 hi = memory::apuram[(uint16)(addr + 1)]; + state.t_brr_next_addr = ((hi << 8) + lo); + + state.t_adsr0 = VREG(adsr0); + + //read pitch, spread over two clocks + state.t_pitch = VREG(pitchl); +} + +void sDSP::voice_3(voice_t &v) { + voice_3a(v); + voice_3b(v); + voice_3c(v); +} + +void sDSP::voice_3a(voice_t &v) { + state.t_pitch += (VREG(pitchh) & 0x3f) << 8; +} + +void sDSP::voice_3b(voice_t &v) { + state.t_brr_byte = memory::apuram[(uint16)(v.brr_addr + v.brr_offset)]; + state.t_brr_header = memory::apuram[(uint16)(v.brr_addr)]; +} + +void sDSP::voice_3c(voice_t &v) { + //pitch modulation using previous voice's output + + if(state.t_pmon & v.vbit) { + state.t_pitch += ((state.t_output >> 5) * state.t_pitch) >> 10; + } + + if(v.kon_delay) { + //get ready to start BRR decoding on next sample + if(v.kon_delay == 5) { + v.brr_addr = state.t_brr_next_addr; + v.brr_offset = 1; + v.buf_pos = 0; + state.t_brr_header = 0; //header is ignored on this sample + } + + //envelope is never run during KON + v.env = 0; + v.hidden_env = 0; + + //disable BRR decoding until last three samples + v.interp_pos = 0; + v.kon_delay--; + if(v.kon_delay & 3) v.interp_pos = 0x4000; + + //pitch is never added during KON + state.t_pitch = 0; + } + + //gaussian interpolation + int output = gaussian_interpolate(v); + + //noise + if(state.t_non & v.vbit) { + output = (int16)(state.noise << 1); + } + + //apply envelope + state.t_output = ((output * v.env) >> 11) & ~1; + v.t_envx_out = v.env >> 4; + + //immediate silence due to end of sample or soft reset + if(REG(flg) & 0x80 || (state.t_brr_header & 3) == 1) { + v.env_mode = env_release; + v.env = 0; + } + + if(state.every_other_sample) { + //KOFF + if(state.t_koff & v.vbit) { + v.env_mode = env_release; + } + + //KON + if(state.kon & v.vbit) { + v.kon_delay = 5; + v.env_mode = env_attack; + } + } + + //run envelope for next sample + if(!v.kon_delay) envelope_run(v); +} + +void sDSP::voice_4(voice_t &v) { + //decode BRR + state.t_looped = 0; + if(v.interp_pos >= 0x4000) { + brr_decode(v); + v.brr_offset += 2; + if(v.brr_offset >= 9) { + //start decoding next BRR block + v.brr_addr = (uint16)(v.brr_addr + 9); + if(state.t_brr_header & 1) { + v.brr_addr = state.t_brr_next_addr; + state.t_looped = v.vbit; + } + v.brr_offset = 1; + } + } + + //apply pitch + v.interp_pos = (v.interp_pos & 0x3fff) + state.t_pitch; + + //keep from getting too far ahead (when using pitch modulation) + if(v.interp_pos > 0x7fff) v.interp_pos = 0x7fff; + + //output left + voice_output(v, 0); +} + +void sDSP::voice_5(voice_t &v) { + //output right + voice_output(v, 1); + + //ENDX, OUTX and ENVX won't update if you wrote to them 1-2 clocks earlier + state.endx_buf = REG(endx) | state.t_looped; + + //clear bit in ENDX if KON just began + if(v.kon_delay == 5) state.endx_buf &= ~v.vbit; +} + +void sDSP::voice_6(voice_t &v) { + state.outx_buf = state.t_output >> 8; +} + +void sDSP::voice_7(voice_t &v) { + //update ENDX + REG(endx) = (uint8)state.endx_buf; + state.envx_buf = v.t_envx_out; +} + +void sDSP::voice_8(voice_t &v) { + //update OUTX + VREG(outx) = (uint8)state.outx_buf; +} + +void sDSP::voice_9(voice_t &v) { + //update ENVX + VREG(envx) = (uint8)state.envx_buf; +} + +#endif diff --git a/libmednahawk/src/snes/src/interface.hpp b/libmednahawk/src/snes/src/interface.hpp new file mode 100644 index 0000000000..bbdeb5a90a --- /dev/null +++ b/libmednahawk/src/snes/src/interface.hpp @@ -0,0 +1,39 @@ +#ifdef DEBUGGER + #define debugvirtual virtual +#else + #define debugvirtual +#endif + +namespace SNES { + struct ChipDebugger { + virtual bool property(unsigned id, string &name, string &value) = 0; + }; + + #include "memory/memory.hpp" + #include "memory/smemory/smemory.hpp" + + #include "ppu/ppu.hpp" + #include "ppu/bppu/bppu.hpp" + + #include "cpu/cpu.hpp" + #include "cpu/core/core.hpp" + #include "cpu/scpu/scpu.hpp" + + #include "smp/smp.hpp" + #include "smp/core/core.hpp" + #include "smp/ssmp/ssmp.hpp" + + #include "dsp/dsp.hpp" + #include "dsp/sdsp/sdsp.hpp" + + #include "system/system.hpp" + #include "chip/chip.hpp" + #include "cartridge/cartridge.hpp" + #include "cheat/cheat.hpp" + + #include "memory/memory-inline.hpp" + #include "ppu/ppu-inline.hpp" + #include "cheat/cheat-inline.hpp" +}; + +#undef debugvirtual diff --git a/libmednahawk/src/snes/src/lib/libco/amd64.c b/libmednahawk/src/snes/src/lib/libco/amd64.c new file mode 100644 index 0000000000..95e7009aab --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/amd64.c @@ -0,0 +1,104 @@ +/* + libco.amd64 (2009-10-12) + author: byuu + license: public domain +*/ + +#define LIBCO_C +#include "libco.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +static thread_local long long co_active_buffer[64]; +static thread_local cothread_t co_active_handle = 0; +static void (*co_swap)(cothread_t, cothread_t) = 0; + +#ifdef _WIN32 + //ABI: Win64 + static unsigned char co_swap_function[] = { + 0x48, 0x89, 0x22, 0x48, 0x8B, 0x21, 0x58, 0x48, 0x89, 0x6A, 0x08, 0x48, 0x89, 0x72, 0x10, 0x48, + 0x89, 0x7A, 0x18, 0x48, 0x89, 0x5A, 0x20, 0x4C, 0x89, 0x62, 0x28, 0x4C, 0x89, 0x6A, 0x30, 0x4C, + 0x89, 0x72, 0x38, 0x4C, 0x89, 0x7A, 0x40, 0x48, 0x81, 0xC2, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, + 0xE2, 0xF0, 0x0F, 0x29, 0x32, 0x0F, 0x29, 0x7A, 0x10, 0x44, 0x0F, 0x29, 0x42, 0x20, 0x44, 0x0F, + 0x29, 0x4A, 0x30, 0x44, 0x0F, 0x29, 0x52, 0x40, 0x44, 0x0F, 0x29, 0x5A, 0x50, 0x44, 0x0F, 0x29, + 0x62, 0x60, 0x44, 0x0F, 0x29, 0x6A, 0x70, 0x44, 0x0F, 0x29, 0xB2, 0x80, 0x00, 0x00, 0x00, 0x44, + 0x0F, 0x29, 0xBA, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x69, 0x08, 0x48, 0x8B, 0x71, 0x10, 0x48, + 0x8B, 0x79, 0x18, 0x48, 0x8B, 0x59, 0x20, 0x4C, 0x8B, 0x61, 0x28, 0x4C, 0x8B, 0x69, 0x30, 0x4C, + 0x8B, 0x71, 0x38, 0x4C, 0x8B, 0x79, 0x40, 0x48, 0x81, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, + 0xE1, 0xF0, 0x0F, 0x29, 0x31, 0x0F, 0x29, 0x79, 0x10, 0x44, 0x0F, 0x29, 0x41, 0x20, 0x44, 0x0F, + 0x29, 0x49, 0x30, 0x44, 0x0F, 0x29, 0x51, 0x40, 0x44, 0x0F, 0x29, 0x59, 0x50, 0x44, 0x0F, 0x29, + 0x61, 0x60, 0x44, 0x0F, 0x29, 0x69, 0x70, 0x44, 0x0F, 0x29, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x44, + 0x0F, 0x29, 0xB9, 0x90, 0x00, 0x00, 0x00, 0xFF, 0xE0, + }; + + #include + + void co_init() { + DWORD old_privileges; + VirtualProtect(co_swap_function, sizeof co_swap_function, PAGE_EXECUTE_READWRITE, &old_privileges); + } +#else + //ABI: SystemV + static unsigned char co_swap_function[] = { + 0x48, 0x89, 0x26, 0x48, 0x8B, 0x27, 0x58, 0x48, 0x89, 0x6E, 0x08, 0x48, 0x89, 0x5E, 0x10, 0x4C, + 0x89, 0x66, 0x18, 0x4C, 0x89, 0x6E, 0x20, 0x4C, 0x89, 0x76, 0x28, 0x4C, 0x89, 0x7E, 0x30, 0x48, + 0x8B, 0x6F, 0x08, 0x48, 0x8B, 0x5F, 0x10, 0x4C, 0x8B, 0x67, 0x18, 0x4C, 0x8B, 0x6F, 0x20, 0x4C, + 0x8B, 0x77, 0x28, 0x4C, 0x8B, 0x7F, 0x30, 0xFF, 0xE0, + }; + + #include + #include + + void co_init() { + unsigned long long addr = (unsigned long long)co_swap_function; + unsigned long long base = addr - (addr % sysconf(_SC_PAGESIZE)); + unsigned long long size = (addr - base) + sizeof co_swap_function; + mprotect((void*)base, size, PROT_READ | PROT_WRITE | PROT_EXEC); + } +#endif + +static void crash() { + assert(0); /* called only if cothread_t entrypoint returns */ +} + +cothread_t co_active() { + if(!co_active_handle) co_active_handle = &co_active_buffer; + return co_active_handle; +} + +cothread_t co_create(unsigned int size, void (*entrypoint)(void)) { + cothread_t handle; + if(!co_swap) { + co_init(); + co_swap = (void (*)(cothread_t, cothread_t))co_swap_function; + } + if(!co_active_handle) co_active_handle = &co_active_buffer; + size += 512; /* allocate additional space for storage */ + size &= ~15; /* align stack to 16-byte boundary */ + + if(handle = (cothread_t)malloc(size)) { + long long *p = (long long*)((char*)handle + size); /* seek to top of stack */ + *--p = (long long)crash; /* crash if entrypoint returns */ + *--p = (long long)entrypoint; /* start of function */ + *(long long*)handle = (long long)p; /* stack pointer */ + } + + return handle; +} + +void co_delete(cothread_t handle) { + free(handle); +} + +void co_switch(cothread_t handle) { + register cothread_t co_previous_handle = co_active_handle; + co_swap(co_active_handle = handle, co_previous_handle); +} + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark.c new file mode 100644 index 0000000000..5b37f9b0f4 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark.c @@ -0,0 +1,123 @@ +/* Measures absolute and relative performance of co_switch() +versus function call. */ + +#include "libco/libco.h" + +#include +#include +#include +#include +#include "testing.h" + +/* Keep calling this until it returns non-zero value. Result +is number of calls made per second. */ +double calls_per_sec( void ); + +/* Something to do in addition to func call/co_switch */ +static volatile int counter; +#define DO_SOMETHING() counter++ + + +void benchmark_func( void ); + +static double time_func( void ) +{ + int const iter = 100000; + double rate; + while ( !(rate = calls_per_sec()) ) + { + int n; + for ( n = iter / 4; n--; ) + { + benchmark_func(); + benchmark_func(); + benchmark_func(); + benchmark_func(); + } + } + return rate * iter; +} + + +/* co_switch timing */ +static cothread_t main_thread; + +static void thread_func( void ) +{ + while ( 1 ) + { + co_switch( main_thread ); DO_SOMETHING(); + co_switch( main_thread ); DO_SOMETHING(); + co_switch( main_thread ); DO_SOMETHING(); + co_switch( main_thread ); DO_SOMETHING(); + } +} + +static double time_co_switch( void ) +{ + int const iter = 1000; + double rate; + cothread_t thread; + + main_thread = co_active(); + thread = co_create( 16 * 1024, thread_func ); + assert( thread && main_thread ); + + while ( !(rate = calls_per_sec()) ) + { + int n; + for ( n = iter / 4; n--; ) + { + co_switch( thread ); + co_switch( thread ); + co_switch( thread ); + co_switch( thread ); + } + } + return rate * iter; +} + + +/* Time both and compare */ +int main( void ) +{ + double func_rate = time_func(); + double co_rate = time_co_switch(); + + print_libco_opts(); + + printf( "%6.2f M function calls per sec\n", func_rate / 1000000 ); + printf( "%6.2f M co_switch()x2 per sec\n", co_rate / 1000000 ); + + printf( "Function call is %.1fX faster than two co_switch() calls.\n\n", func_rate / co_rate ); + + return 0; +} + + +/* Utility */ +double calls_per_sec( void ) +{ + #define DURATION CLOCKS_PER_SEC + + static clock_t s_end; + static int s_iter; + clock_t const present = clock(); + int const iter = s_iter++; + if ( iter <= 1 ) /* throw away first iteration since it'll be slower due to setup */ + { + if ( CLOCKS_PER_SEC < 10 ) + { + fprintf( stderr, "Not enough clock() resolution\n" ); + exit( EXIT_FAILURE ); + } + while ( clock() == present ) { } + s_end = clock() + DURATION; + } + else if ( present >= s_end ) + { + s_iter = 0; + return (double) (iter - 1) * CLOCKS_PER_SEC / (present - s_end + DURATION); + } + return 0; +} diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark_impl.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark_impl.c new file mode 100644 index 0000000000..a3ad023f90 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark_impl.c @@ -0,0 +1,5 @@ + +/* Function timing */ +void benchmark_func( void ) +{ +} diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.c new file mode 100644 index 0000000000..0e725e7db2 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.c @@ -0,0 +1,23 @@ +/* + libco + auto-selection module + license: public domain +*/ + +#if defined(__GNUC__) && defined(__i386__) + #include "x86.c" +#elif defined(__GNUC__) && defined(__amd64__) + #include "amd64.c" +#elif defined(__GNUC__) && defined(_ARCH_PPC) + #include "ppc.c" +#elif defined(__GNUC__) + #include "sjlj.c" +#elif defined(_MSC_VER) && defined(_M_IX86) + #include "x86.c" +#elif defined(_MSC_VER) && defined(_M_AMD64) + #include "amd64.c" +#elif defined(_MSC_VER) + #include "fiber.c" +#else + #error "libco: unsupported processor, compiler or operating system" +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.h b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.h new file mode 100644 index 0000000000..40f3cce8c1 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.h @@ -0,0 +1,34 @@ +/* + libco + version: 0.15 (2009-10-12) + license: public domain +*/ + +#ifndef LIBCO_H +#define LIBCO_H + +#ifdef LIBCO_C + #ifdef LIBCO_MP + #define thread_local __thread + #else + #define thread_local + #endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void* cothread_t; + +cothread_t co_active(); +cothread_t co_create(unsigned int, void (*)(void)); +void co_delete(cothread_t); +void co_switch(cothread_t); + +#ifdef __cplusplus +} +#endif + +/* ifndef LIBCO_H */ +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/ppc.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/ppc.c new file mode 100644 index 0000000000..22dc104842 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/ppc.c @@ -0,0 +1,407 @@ +/* + libco.ppc (2010-10-17) + author: blargg + license: public domain +*/ + +/* PowerPC 32/64 using embedded or external asm, with optional +floating-point and AltiVec save/restore */ + +#define LIBCO_C +#include "libco.h" +#include +#include +#include + +#define LIBCO_MPROTECT (__unix__ && !LIBCO_PPC_ASM) + +#if LIBCO_MPROTECT + #include + #include +#endif + +/* State format (offsets in 32-bit words) + ++0 Pointer to swap code + Rest of function descriptor for entry function ++8 PC ++10 SP + Special regs + GPRs + FPRs + VRs + stack +*/ + +enum { state_size = 1024 }; +enum { above_stack = 2048 }; +enum { stack_align = 256 }; + +static thread_local cothread_t co_active_handle = 0; + +/**** Determine environment ****/ + +#define LIBCO_PPC64 (_ARCH_PPC64 || __PPC64__ || __ppc64__ || __powerpc64__) + +/* Whether function calls are indirect through a descriptor, +or are directly to function */ +#ifndef LIBCO_PPCDESC + #if !_CALL_SYSV && (_CALL_AIX || _CALL_AIXDESC || LIBCO_PPC64) + #define LIBCO_PPCDESC 1 + #endif +#endif + +#ifdef LIBCO_PPC_ASM + + #ifdef __cplusplus + extern "C" + #endif + + /* Swap code is in ppc.S */ + void co_swap_asm( cothread_t, cothread_t ); + #define CO_SWAP_ASM( x, y ) co_swap_asm( x, y ) + +#else + +/* Swap code is here in array. Please leave dieassembly comments, +as they make it easy to see what it does, and reorder instructions +if one wants to see whether that improves performance. */ +static const uint32_t libco_ppc_code [] = { +#if LIBCO_PPC64 + 0x7d000026, /* mfcr r8 */ + 0xf8240028, /* std r1,40(r4) */ + 0x7d2802a6, /* mflr r9 */ + 0xf9c40048, /* std r14,72(r4) */ + 0xf9e40050, /* std r15,80(r4) */ + 0xfa040058, /* std r16,88(r4) */ + 0xfa240060, /* std r17,96(r4) */ + 0xfa440068, /* std r18,104(r4) */ + 0xfa640070, /* std r19,112(r4) */ + 0xfa840078, /* std r20,120(r4) */ + 0xfaa40080, /* std r21,128(r4) */ + 0xfac40088, /* std r22,136(r4) */ + 0xfae40090, /* std r23,144(r4) */ + 0xfb040098, /* std r24,152(r4) */ + 0xfb2400a0, /* std r25,160(r4) */ + 0xfb4400a8, /* std r26,168(r4) */ + 0xfb6400b0, /* std r27,176(r4) */ + 0xfb8400b8, /* std r28,184(r4) */ + 0xfba400c0, /* std r29,192(r4) */ + 0xfbc400c8, /* std r30,200(r4) */ + 0xfbe400d0, /* std r31,208(r4) */ + 0xf9240020, /* std r9,32(r4) */ + 0xe8e30020, /* ld r7,32(r3) */ + 0xe8230028, /* ld r1,40(r3) */ + 0x48000009, /* bl 1 */ + 0x7fe00008, /* trap */ + 0x91040030,/*1:stw r8,48(r4) */ + 0x80c30030, /* lwz r6,48(r3) */ + 0x7ce903a6, /* mtctr r7 */ + 0xe9c30048, /* ld r14,72(r3) */ + 0xe9e30050, /* ld r15,80(r3) */ + 0xea030058, /* ld r16,88(r3) */ + 0xea230060, /* ld r17,96(r3) */ + 0xea430068, /* ld r18,104(r3) */ + 0xea630070, /* ld r19,112(r3) */ + 0xea830078, /* ld r20,120(r3) */ + 0xeaa30080, /* ld r21,128(r3) */ + 0xeac30088, /* ld r22,136(r3) */ + 0xeae30090, /* ld r23,144(r3) */ + 0xeb030098, /* ld r24,152(r3) */ + 0xeb2300a0, /* ld r25,160(r3) */ + 0xeb4300a8, /* ld r26,168(r3) */ + 0xeb6300b0, /* ld r27,176(r3) */ + 0xeb8300b8, /* ld r28,184(r3) */ + 0xeba300c0, /* ld r29,192(r3) */ + 0xebc300c8, /* ld r30,200(r3) */ + 0xebe300d0, /* ld r31,208(r3) */ + 0x7ccff120, /* mtcr r6 */ +#else + 0x7d000026, /* mfcr r8 */ + 0x90240028, /* stw r1,40(r4) */ + 0x7d2802a6, /* mflr r9 */ + 0x91a4003c, /* stw r13,60(r4) */ + 0x91c40040, /* stw r14,64(r4) */ + 0x91e40044, /* stw r15,68(r4) */ + 0x92040048, /* stw r16,72(r4) */ + 0x9224004c, /* stw r17,76(r4) */ + 0x92440050, /* stw r18,80(r4) */ + 0x92640054, /* stw r19,84(r4) */ + 0x92840058, /* stw r20,88(r4) */ + 0x92a4005c, /* stw r21,92(r4) */ + 0x92c40060, /* stw r22,96(r4) */ + 0x92e40064, /* stw r23,100(r4) */ + 0x93040068, /* stw r24,104(r4) */ + 0x9324006c, /* stw r25,108(r4) */ + 0x93440070, /* stw r26,112(r4) */ + 0x93640074, /* stw r27,116(r4) */ + 0x93840078, /* stw r28,120(r4) */ + 0x93a4007c, /* stw r29,124(r4) */ + 0x93c40080, /* stw r30,128(r4) */ + 0x93e40084, /* stw r31,132(r4) */ + 0x91240020, /* stw r9,32(r4) */ + 0x80e30020, /* lwz r7,32(r3) */ + 0x80230028, /* lwz r1,40(r3) */ + 0x48000009, /* bl 1 */ + 0x7fe00008, /* trap */ + 0x91040030,/*1:stw r8,48(r4) */ + 0x80c30030, /* lwz r6,48(r3) */ + 0x7ce903a6, /* mtctr r7 */ + 0x81a3003c, /* lwz r13,60(r3) */ + 0x81c30040, /* lwz r14,64(r3) */ + 0x81e30044, /* lwz r15,68(r3) */ + 0x82030048, /* lwz r16,72(r3) */ + 0x8223004c, /* lwz r17,76(r3) */ + 0x82430050, /* lwz r18,80(r3) */ + 0x82630054, /* lwz r19,84(r3) */ + 0x82830058, /* lwz r20,88(r3) */ + 0x82a3005c, /* lwz r21,92(r3) */ + 0x82c30060, /* lwz r22,96(r3) */ + 0x82e30064, /* lwz r23,100(r3) */ + 0x83030068, /* lwz r24,104(r3) */ + 0x8323006c, /* lwz r25,108(r3) */ + 0x83430070, /* lwz r26,112(r3) */ + 0x83630074, /* lwz r27,116(r3) */ + 0x83830078, /* lwz r28,120(r3) */ + 0x83a3007c, /* lwz r29,124(r3) */ + 0x83c30080, /* lwz r30,128(r3) */ + 0x83e30084, /* lwz r31,132(r3) */ + 0x7ccff120, /* mtcr r6 */ +#endif + +#ifndef LIBCO_PPC_NOFP + 0xd9c400e0, /* stfd f14,224(r4) */ + 0xd9e400e8, /* stfd f15,232(r4) */ + 0xda0400f0, /* stfd f16,240(r4) */ + 0xda2400f8, /* stfd f17,248(r4) */ + 0xda440100, /* stfd f18,256(r4) */ + 0xda640108, /* stfd f19,264(r4) */ + 0xda840110, /* stfd f20,272(r4) */ + 0xdaa40118, /* stfd f21,280(r4) */ + 0xdac40120, /* stfd f22,288(r4) */ + 0xdae40128, /* stfd f23,296(r4) */ + 0xdb040130, /* stfd f24,304(r4) */ + 0xdb240138, /* stfd f25,312(r4) */ + 0xdb440140, /* stfd f26,320(r4) */ + 0xdb640148, /* stfd f27,328(r4) */ + 0xdb840150, /* stfd f28,336(r4) */ + 0xdba40158, /* stfd f29,344(r4) */ + 0xdbc40160, /* stfd f30,352(r4) */ + 0xdbe40168, /* stfd f31,360(r4) */ + 0xc9c300e0, /* lfd f14,224(r3) */ + 0xc9e300e8, /* lfd f15,232(r3) */ + 0xca0300f0, /* lfd f16,240(r3) */ + 0xca2300f8, /* lfd f17,248(r3) */ + 0xca430100, /* lfd f18,256(r3) */ + 0xca630108, /* lfd f19,264(r3) */ + 0xca830110, /* lfd f20,272(r3) */ + 0xcaa30118, /* lfd f21,280(r3) */ + 0xcac30120, /* lfd f22,288(r3) */ + 0xcae30128, /* lfd f23,296(r3) */ + 0xcb030130, /* lfd f24,304(r3) */ + 0xcb230138, /* lfd f25,312(r3) */ + 0xcb430140, /* lfd f26,320(r3) */ + 0xcb630148, /* lfd f27,328(r3) */ + 0xcb830150, /* lfd f28,336(r3) */ + 0xcba30158, /* lfd f29,344(r3) */ + 0xcbc30160, /* lfd f30,352(r3) */ + 0xcbe30168, /* lfd f31,360(r3) */ +#endif + +#ifdef __ALTIVEC__ + 0x7ca042a6, /* mfvrsave r5 */ + 0x39040180, /* addi r8,r4,384 */ + 0x39240190, /* addi r9,r4,400 */ + 0x70a00fff, /* andi. r0,r5,4095 */ + 0x90a40034, /* stw r5,52(r4) */ + 0x4182005c, /* beq- 2 */ + 0x7e8041ce, /* stvx v20,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ea049ce, /* stvx v21,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7ec041ce, /* stvx v22,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ee049ce, /* stvx v23,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f0041ce, /* stvx v24,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f2049ce, /* stvx v25,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f4041ce, /* stvx v26,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f6049ce, /* stvx v27,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f8041ce, /* stvx v28,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7fa049ce, /* stvx v29,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7fc041ce, /* stvx v30,r0,r8 */ + 0x7fe049ce, /* stvx v31,r0,r9 */ + 0x80a30034,/*2:lwz r5,52(r3) */ + 0x39030180, /* addi r8,r3,384 */ + 0x39230190, /* addi r9,r3,400 */ + 0x70a00fff, /* andi. r0,r5,4095 */ + 0x7ca043a6, /* mtvrsave r5 */ + 0x4d820420, /* beqctr */ + 0x7e8040ce, /* lvx v20,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ea048ce, /* lvx v21,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7ec040ce, /* lvx v22,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ee048ce, /* lvx v23,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f0040ce, /* lvx v24,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f2048ce, /* lvx v25,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f4040ce, /* lvx v26,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f6048ce, /* lvx v27,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f8040ce, /* lvx v28,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7fa048ce, /* lvx v29,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7fc040ce, /* lvx v30,r0,r8 */ + 0x7fe048ce, /* lvx v31,r0,r9 */ +#endif + + 0x4e800420, /* bctr */ +}; + + #if LIBCO_PPCDESC + /* Function call goes through indirect descriptor */ + #define CO_SWAP_ASM( x, y ) \ + ((void (*)( cothread_t, cothread_t )) (uintptr_t) x)( x, y ) + #else + /* Function call goes directly to code */ + #define CO_SWAP_ASM( x, y ) \ + ((void (*)( cothread_t, cothread_t )) (uintptr_t) libco_ppc_code)( x, y ) + #endif + +#endif + +static uint32_t* co_create_( unsigned size, uintptr_t entry ) +{ + uint32_t* t = (uint32_t*) malloc( size ); + + (void) entry; + + #if LIBCO_PPCDESC + if ( t ) + { + /* Copy entry's descriptor */ + memcpy( t, (void*) entry, sizeof (void*) * 3 ); + + /* Set function pointer to swap routine */ + #ifdef LIBCO_PPC_ASM + *(const void**) t = *(void**) &co_swap_asm; + #else + *(const void**) t = libco_ppc_code; + #endif + } + #endif + + return t; +} + +cothread_t co_create( unsigned int size, void (*entry_)( void ) ) +{ + uintptr_t entry = (uintptr_t) entry_; + uint32_t* t = NULL; + + /* Be sure main thread was successfully allocated */ + if ( co_active() ) + { + size += state_size + above_stack + stack_align; + t = co_create_( size, entry ); + } + + if ( t ) + { + uintptr_t sp; + int shift; + + /* Save current registers into new thread, so that any special ones will + have proper values when thread is begun */ + CO_SWAP_ASM( t, t ); + + #if LIBCO_PPCDESC + /* Get real address */ + entry = (uintptr_t) *(void**) entry; + #endif + + /* Put stack near end of block, and align */ + sp = (uintptr_t) t + size - above_stack; + sp -= sp % stack_align; + + /* On PPC32, we save and restore GPRs as 32 bits. For PPC64, we + save and restore them as 64 bits, regardless of the size the ABI + uses. So, we manually write pointers at the proper size. We always + save and restore at the same address, and since PPC is big-endian, + we must put the low byte first on PPC32. */ + + /* If uintptr_t is 32 bits, >>32 is undefined behavior, so we do two shifts + and don't have to care how many bits uintptr_t is. */ + #if LIBCO_PPC64 + shift = 16; + #else + shift = 0; + #endif + + /* Set up so entry will be called on next swap */ + t [8] = (uint32_t) (entry >> shift >> shift); + t [9] = (uint32_t) entry; + + t [10] = (uint32_t) (sp >> shift >> shift); + t [11] = (uint32_t) sp; + } + + return t; +} + +void co_delete( cothread_t t ) +{ + free( t ); +} + +static void co_init_( void ) +{ + #if LIBCO_MPROTECT + /* TODO: pre- and post-pad PPC code so that this doesn't make other + data executable and writable */ + long page_size = sysconf( _SC_PAGESIZE ); + if ( page_size > 0 ) + { + uintptr_t align = page_size; + uintptr_t begin = (uintptr_t) libco_ppc_code; + uintptr_t end = begin + sizeof libco_ppc_code; + + /* Align beginning and end */ + end += align - 1; + end -= end % align; + begin -= begin % align; + + mprotect( (void*) begin, end - begin, PROT_READ | PROT_WRITE | PROT_EXEC ); + } + #endif + + co_active_handle = co_create_( state_size, (uintptr_t) &co_switch ); +} + +cothread_t co_active() +{ + if ( !co_active_handle ) + co_init_(); + + return co_active_handle; +} + +void co_switch( cothread_t t ) +{ + cothread_t old = co_active_handle; + co_active_handle = t; + + CO_SWAP_ASM( t, old ); +} diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc.S b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc.S new file mode 100644 index 0000000000..858b17e734 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc.S @@ -0,0 +1,265 @@ +// Core processor state swap function. +// Only used by ppc.c if LIBCO_PPC_ASM is defined. +// Main purpose of this asm file is to allow easy development of improvements. + +// If this isn't available, you can just do -mregnames when compiling +#include "ppc-asm.h" + +.section ".text" +.align 5 +.globl co_swap_asm +.type co_swap_asm, @function + +// Wrap GPR load/stores so that we can use the same code for +// PPC and PPC64. +#if _ARCH_PPC64 || __PPC64__ || __ppc64__ || __powerpc64__ + #define STWD std + #define LWZD ld + #define GPR_SIZE 8 +#else + #define LIBCO_PPC32 1 + #define STWD stw + #define LWZD lwz + #define GPR_SIZE 4 +#endif + +// Offsets of values in memory +#define PC_OFF 32 +#define SP_OFF 40 +#define CR_OFF 48 +#define VRSAVE_OFF 52 +#define GPR_OFF 56 +#define FPR_OFF 224 +#define VR_OFF 384 + +// Avoid stupid coding errors by letting the preprocessor +// keep things consistent for us. +#define FPR(n) FPR_OFF - 8*14 + 8*n +#define GPR(n) GPR_OFF - GPR_SIZE*12 + GPR_SIZE*n + +#define FPR_NAME(n) f##n +#define GPR_NAME(n) r##n + +// REG_MEM(FPR,31) turns into f31,FPR_OFF+8*(31-14) +#define REG_MEM( reg, n ) reg##_NAME(n), reg(n) + +// void co_swap_asm( cothread_t new, cothread_t old ) +co_swap_asm: + // We must save current state into old, and load + // new state from new. Might be called with old=new, + // so we must not load a particular register before + // having saved it. I don't think this hurts + // performance, since there are enough instructions + // to mix in. + + // Improve performance by reordering things somewhat. + // Try to keep GPR saves/loads in block, for clarity. + + /* new old + r3 pointer + r4 pointer + r5 flags flags + r6 CR + r7 PC + r8 CR + r9 PC + */ + + mfcr r8 + STWD sp, SP_OFF (r4) + mflr r9 + + // Save GPRs +#if LIBCO_PPC32 + STWD REG_MEM(GPR,13) (r4) +#endif + STWD REG_MEM(GPR,14) (r4) + STWD REG_MEM(GPR,15) (r4) + STWD REG_MEM(GPR,16) (r4) + STWD REG_MEM(GPR,17) (r4) + STWD REG_MEM(GPR,18) (r4) + STWD REG_MEM(GPR,19) (r4) + STWD REG_MEM(GPR,20) (r4) + STWD REG_MEM(GPR,21) (r4) + STWD REG_MEM(GPR,22) (r4) + STWD REG_MEM(GPR,23) (r4) + STWD REG_MEM(GPR,24) (r4) + STWD REG_MEM(GPR,25) (r4) + STWD REG_MEM(GPR,26) (r4) + STWD REG_MEM(GPR,27) (r4) + STWD REG_MEM(GPR,28) (r4) + STWD REG_MEM(GPR,29) (r4) + STWD REG_MEM(GPR,30) (r4) + STWD REG_MEM(GPR,31) (r4) + + STWD r9, PC_OFF (r4) + LWZD r7, PC_OFF (r3) + LWZD sp, SP_OFF (r3) + bl 1f // Crash if entry function returns + trap +1: stw r8, CR_OFF (r4) + lwz r6, CR_OFF (r3) + mtctr r7 + + // Load GPRs +#if LIBCO_PPC32 + LWZD REG_MEM(GPR,13) (r3) +#endif + LWZD REG_MEM(GPR,14) (r3) + LWZD REG_MEM(GPR,15) (r3) + LWZD REG_MEM(GPR,16) (r3) + LWZD REG_MEM(GPR,17) (r3) + LWZD REG_MEM(GPR,18) (r3) + LWZD REG_MEM(GPR,19) (r3) + LWZD REG_MEM(GPR,20) (r3) + LWZD REG_MEM(GPR,21) (r3) + LWZD REG_MEM(GPR,22) (r3) + LWZD REG_MEM(GPR,23) (r3) + LWZD REG_MEM(GPR,24) (r3) + LWZD REG_MEM(GPR,25) (r3) + LWZD REG_MEM(GPR,26) (r3) + LWZD REG_MEM(GPR,27) (r3) + LWZD REG_MEM(GPR,28) (r3) + LWZD REG_MEM(GPR,29) (r3) + LWZD REG_MEM(GPR,30) (r3) + LWZD REG_MEM(GPR,31) (r3) + + mtcr r6 + +#ifndef LIBCO_PPC_NOFP + // Save FPRs + stfd REG_MEM(FPR,14) (r4) + stfd REG_MEM(FPR,15) (r4) + stfd REG_MEM(FPR,16) (r4) + stfd REG_MEM(FPR,17) (r4) + stfd REG_MEM(FPR,18) (r4) + stfd REG_MEM(FPR,19) (r4) + stfd REG_MEM(FPR,20) (r4) + stfd REG_MEM(FPR,21) (r4) + stfd REG_MEM(FPR,22) (r4) + stfd REG_MEM(FPR,23) (r4) + stfd REG_MEM(FPR,24) (r4) + stfd REG_MEM(FPR,25) (r4) + stfd REG_MEM(FPR,26) (r4) + stfd REG_MEM(FPR,27) (r4) + stfd REG_MEM(FPR,28) (r4) + stfd REG_MEM(FPR,29) (r4) + stfd REG_MEM(FPR,30) (r4) + stfd REG_MEM(FPR,31) (r4) + + // Load FPRs + lfd REG_MEM(FPR,14) (r3) + lfd REG_MEM(FPR,15) (r3) + lfd REG_MEM(FPR,16) (r3) + lfd REG_MEM(FPR,17) (r3) + lfd REG_MEM(FPR,18) (r3) + lfd REG_MEM(FPR,19) (r3) + lfd REG_MEM(FPR,20) (r3) + lfd REG_MEM(FPR,21) (r3) + lfd REG_MEM(FPR,22) (r3) + lfd REG_MEM(FPR,23) (r3) + lfd REG_MEM(FPR,24) (r3) + lfd REG_MEM(FPR,25) (r3) + lfd REG_MEM(FPR,26) (r3) + lfd REG_MEM(FPR,27) (r3) + lfd REG_MEM(FPR,28) (r3) + lfd REG_MEM(FPR,29) (r3) + lfd REG_MEM(FPR,30) (r3) + lfd REG_MEM(FPR,31) (r3) +#endif + +#ifdef __ALTIVEC__ + // Performance testing showed that conditionally saving/restoring + // individual registers was worse than just doing them all. + + // Save VRSAVE + mfspr r5, 256 // get VRSAVE + addi r8, r4,VR_OFF + addi r9, r4,VR_OFF + 16 + andi. r0, r5,0x0FFF // see whether anything to save + stw r5, VRSAVE_OFF(r4) + beq 2f // skip if nothing to save + + // Save VRs + + // we use two pointers to avoid stalls + stvx v20,0,r8 + addi r8,r8,32 + + stvx v21,0,r9 + addi r9,r9,32 + + stvx v22,0,r8 + addi r8,r8,32 + + stvx v23,0,r9 + addi r9,r9,32 + + stvx v24,0,r8 + addi r8,r8,32 + + stvx v25,0,r9 + addi r9,r9,32 + + stvx v26,0,r8 + addi r8,r8,32 + + stvx v27,0,r9 + addi r9,r9,32 + + stvx v28,0,r8 + addi r8,r8,32 + + stvx v29,0,r9 + addi r9,r9,32 + + stvx v30,0,r8 + + stvx v31,0,r9 + +2: + // Load VRSAVE + lwz r5, VRSAVE_OFF(r3) + addi r8, r3,VR_OFF + addi r9, r3,VR_OFF + 16 + andi. r0, r5,0x0FFF + mtspr 256,r5 // set VRSAVE + beqctr // return if nothing to restore + + // Load VRs + lvx v20,0,r8 + addi r8,r8,32 + + lvx v21,0,r9 + addi r9,r9,32 + + lvx v22,0,r8 + addi r8,r8,32 + + lvx v23,0,r9 + addi r9,r9,32 + + lvx v24,0,r8 + addi r8,r8,32 + + lvx v25,0,r9 + addi r9,r9,32 + + lvx v26,0,r8 + addi r8,r8,32 + + lvx v27,0,r9 + addi r9,r9,32 + + lvx v28,0,r8 + addi r8,r8,32 + + lvx v29,0,r9 + addi r9,r9,32 + + lvx v30,0,r8 + + lvx v31,0,r9 +#endif + + bctr diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.S b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.S new file mode 100644 index 0000000000..413f757934 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.S @@ -0,0 +1,329 @@ +.section ".text" +.align 5 +.globl save_ppc_regs +.globl load_ppc_regs + +.type save_ppc_regs, @function +.type load_ppc_regs, @function + +#if _ARCH_PPC64 || __PPC64__ || __ppc64__ || __powerpc64__ + #define STWD std + #define LWZD ld + #define GPR_EXTRA 0 +#else + #define STWD stw + #define LWZD lwz + #define GPR_EXTRA 4 +#endif + +#define VR_OFF 0 +#define FPR_OFF 512 +#define GPR_OFF 768 +#define SPR_OFF 1024 + +#define FPR(n) FPR_OFF + 8*n +#define GPR(n) GPR_OFF + GPR_EXTRA + 8*n +#define SPR(n) SPR_OFF + 4*n + +#define FPR_NAME(n) f##n +#define GPR_NAME(n) r##n + +#define REG_MEM( reg, n ) reg##_NAME(n), reg(n) + +save_ppc_regs: + mfcr r0 + stw r0, SPR(0) (r3) + + mfspr r0,256 /* VRSAVE */ + stw r0, SPR(1) (r3) + + mfctr r0 + stw r0, SPR(2) (r3) + + mfxer r0 + stw r0, SPR(3) (r3) + + STWD REG_MEM(GPR, 0) (r3) + STWD REG_MEM(GPR, 1) (r3) + STWD REG_MEM(GPR, 2) (r3) + STWD REG_MEM(GPR, 3) (r3) + STWD REG_MEM(GPR, 4) (r3) + STWD REG_MEM(GPR, 5) (r3) + STWD REG_MEM(GPR, 6) (r3) + STWD REG_MEM(GPR, 7) (r3) + STWD REG_MEM(GPR, 8) (r3) + STWD REG_MEM(GPR, 9) (r3) + STWD REG_MEM(GPR,10) (r3) + STWD REG_MEM(GPR,11) (r3) + STWD REG_MEM(GPR,12) (r3) + STWD REG_MEM(GPR,13) (r3) + STWD REG_MEM(GPR,14) (r3) + STWD REG_MEM(GPR,15) (r3) + STWD REG_MEM(GPR,16) (r3) + STWD REG_MEM(GPR,17) (r3) + STWD REG_MEM(GPR,18) (r3) + STWD REG_MEM(GPR,19) (r3) + STWD REG_MEM(GPR,20) (r3) + STWD REG_MEM(GPR,21) (r3) + STWD REG_MEM(GPR,22) (r3) + STWD REG_MEM(GPR,23) (r3) + STWD REG_MEM(GPR,24) (r3) + STWD REG_MEM(GPR,25) (r3) + STWD REG_MEM(GPR,26) (r3) + STWD REG_MEM(GPR,27) (r3) + STWD REG_MEM(GPR,28) (r3) + STWD REG_MEM(GPR,29) (r3) + STWD REG_MEM(GPR,30) (r3) + STWD REG_MEM(GPR,31) (r3) + + stfd REG_MEM(FPR, 0) (r3) + stfd REG_MEM(FPR, 1) (r3) + stfd REG_MEM(FPR, 2) (r3) + stfd REG_MEM(FPR, 3) (r3) + stfd REG_MEM(FPR, 4) (r3) + stfd REG_MEM(FPR, 5) (r3) + stfd REG_MEM(FPR, 6) (r3) + stfd REG_MEM(FPR, 7) (r3) + stfd REG_MEM(FPR, 8) (r3) + stfd REG_MEM(FPR, 9) (r3) + stfd REG_MEM(FPR,10) (r3) + stfd REG_MEM(FPR,11) (r3) + stfd REG_MEM(FPR,12) (r3) + stfd REG_MEM(FPR,13) (r3) + stfd REG_MEM(FPR,14) (r3) + stfd REG_MEM(FPR,15) (r3) + stfd REG_MEM(FPR,16) (r3) + stfd REG_MEM(FPR,17) (r3) + stfd REG_MEM(FPR,18) (r3) + stfd REG_MEM(FPR,19) (r3) + stfd REG_MEM(FPR,20) (r3) + stfd REG_MEM(FPR,21) (r3) + stfd REG_MEM(FPR,22) (r3) + stfd REG_MEM(FPR,23) (r3) + stfd REG_MEM(FPR,24) (r3) + stfd REG_MEM(FPR,25) (r3) + stfd REG_MEM(FPR,26) (r3) + stfd REG_MEM(FPR,27) (r3) + stfd REG_MEM(FPR,28) (r3) + stfd REG_MEM(FPR,29) (r3) + stfd REG_MEM(FPR,30) (r3) + stfd REG_MEM(FPR,31) (r3) + + mffs f0 + stfd f0, SPR(4) (r3) + + addi r5, r3, VR_OFF + stvx v0, 0, r5 + addi r5, r5, 16 + stvx v1, 0, r5 + addi r5, r5, 16 + stvx v2, 0, r5 + addi r5, r5, 16 + stvx v3, 0, r5 + addi r5, r5, 16 + stvx v4, 0, r5 + addi r5, r5, 16 + stvx v5, 0, r5 + addi r5, r5, 16 + stvx v6, 0, r5 + addi r5, r5, 16 + stvx v7, 0, r5 + addi r5, r5, 16 + stvx v8, 0, r5 + addi r5, r5, 16 + stvx v9, 0, r5 + addi r5, r5, 16 + stvx v10, 0, r5 + addi r5, r5, 16 + stvx v11, 0, r5 + addi r5, r5, 16 + stvx v12, 0, r5 + addi r5, r5, 16 + stvx v13, 0, r5 + addi r5, r5, 16 + stvx v14, 0, r5 + addi r5, r5, 16 + stvx v15, 0, r5 + addi r5, r5, 16 + stvx v16, 0, r5 + addi r5, r5, 16 + stvx v17, 0, r5 + addi r5, r5, 16 + stvx v18, 0, r5 + addi r5, r5, 16 + stvx v19, 0, r5 + addi r5, r5, 16 + stvx v20, 0, r5 + addi r5, r5, 16 + stvx v21, 0, r5 + addi r5, r5, 16 + stvx v22, 0, r5 + addi r5, r5, 16 + stvx v23, 0, r5 + addi r5, r5, 16 + stvx v24, 0, r5 + addi r5, r5, 16 + stvx v25, 0, r5 + addi r5, r5, 16 + stvx v26, 0, r5 + addi r5, r5, 16 + stvx v27, 0, r5 + addi r5, r5, 16 + stvx v28, 0, r5 + addi r5, r5, 16 + stvx v29, 0, r5 + addi r5, r5, 16 + stvx v30, 0, r5 + addi r5, r5, 16 + stvx v31, 0, r5 + + blr + +load_ppc_regs: + lwz r0, SPR(0) (r3) + mtcr r0 + + lwz r0, SPR(1) (r3) + mtspr 256, r0 + + lwz r0, SPR(2) (r3) + mtctr r0 + + lwz r0, SPR(3) (r3) + mtxer r0 + + lfd f0, SPR(4) (r3) + mtfsf 255, f0 + + LWZD REG_MEM(GPR, 0) (r3) + + + + LWZD REG_MEM(GPR, 4) (r3) + LWZD REG_MEM(GPR, 5) (r3) + LWZD REG_MEM(GPR, 6) (r3) + LWZD REG_MEM(GPR, 7) (r3) + LWZD REG_MEM(GPR, 8) (r3) + LWZD REG_MEM(GPR, 9) (r3) + LWZD REG_MEM(GPR,10) (r3) + LWZD REG_MEM(GPR,11) (r3) + LWZD REG_MEM(GPR,12) (r3) + LWZD REG_MEM(GPR,13) (r3) + LWZD REG_MEM(GPR,14) (r3) + LWZD REG_MEM(GPR,15) (r3) + LWZD REG_MEM(GPR,16) (r3) + LWZD REG_MEM(GPR,17) (r3) + LWZD REG_MEM(GPR,18) (r3) + LWZD REG_MEM(GPR,19) (r3) + LWZD REG_MEM(GPR,20) (r3) + LWZD REG_MEM(GPR,21) (r3) + LWZD REG_MEM(GPR,22) (r3) + LWZD REG_MEM(GPR,23) (r3) + LWZD REG_MEM(GPR,24) (r3) + LWZD REG_MEM(GPR,25) (r3) + LWZD REG_MEM(GPR,26) (r3) + LWZD REG_MEM(GPR,27) (r3) + LWZD REG_MEM(GPR,28) (r3) + LWZD REG_MEM(GPR,29) (r3) + LWZD REG_MEM(GPR,30) (r3) + LWZD REG_MEM(GPR,31) (r3) + + lfd REG_MEM(FPR, 0) (r3) + lfd REG_MEM(FPR, 1) (r3) + lfd REG_MEM(FPR, 2) (r3) + lfd REG_MEM(FPR, 3) (r3) + lfd REG_MEM(FPR, 4) (r3) + lfd REG_MEM(FPR, 5) (r3) + lfd REG_MEM(FPR, 6) (r3) + lfd REG_MEM(FPR, 7) (r3) + lfd REG_MEM(FPR, 8) (r3) + lfd REG_MEM(FPR, 9) (r3) + lfd REG_MEM(FPR,10) (r3) + lfd REG_MEM(FPR,11) (r3) + lfd REG_MEM(FPR,12) (r3) + lfd REG_MEM(FPR,13) (r3) + lfd REG_MEM(FPR,14) (r3) + lfd REG_MEM(FPR,15) (r3) + lfd REG_MEM(FPR,16) (r3) + lfd REG_MEM(FPR,17) (r3) + lfd REG_MEM(FPR,18) (r3) + lfd REG_MEM(FPR,19) (r3) + lfd REG_MEM(FPR,20) (r3) + lfd REG_MEM(FPR,21) (r3) + lfd REG_MEM(FPR,22) (r3) + lfd REG_MEM(FPR,23) (r3) + lfd REG_MEM(FPR,24) (r3) + lfd REG_MEM(FPR,25) (r3) + lfd REG_MEM(FPR,26) (r3) + lfd REG_MEM(FPR,27) (r3) + lfd REG_MEM(FPR,28) (r3) + lfd REG_MEM(FPR,29) (r3) + lfd REG_MEM(FPR,30) (r3) + lfd REG_MEM(FPR,31) (r3) + + addi r5, r3, VR_OFF + lvx v0, 0, r5 + addi r5, r5, 16 + lvx v1, 0, r5 + addi r5, r5, 16 + lvx v2, 0, r5 + addi r5, r5, 16 + lvx v3, 0, r5 + addi r5, r5, 16 + lvx v4, 0, r5 + addi r5, r5, 16 + lvx v5, 0, r5 + addi r5, r5, 16 + lvx v6, 0, r5 + addi r5, r5, 16 + lvx v7, 0, r5 + addi r5, r5, 16 + lvx v8, 0, r5 + addi r5, r5, 16 + lvx v9, 0, r5 + addi r5, r5, 16 + lvx v10, 0, r5 + addi r5, r5, 16 + lvx v11, 0, r5 + addi r5, r5, 16 + lvx v12, 0, r5 + addi r5, r5, 16 + lvx v13, 0, r5 + addi r5, r5, 16 + lvx v14, 0, r5 + addi r5, r5, 16 + lvx v15, 0, r5 + addi r5, r5, 16 + lvx v16, 0, r5 + addi r5, r5, 16 + lvx v17, 0, r5 + addi r5, r5, 16 + lvx v18, 0, r5 + addi r5, r5, 16 + lvx v19, 0, r5 + addi r5, r5, 16 + lvx v20, 0, r5 + addi r5, r5, 16 + lvx v21, 0, r5 + addi r5, r5, 16 + lvx v22, 0, r5 + addi r5, r5, 16 + lvx v23, 0, r5 + addi r5, r5, 16 + lvx v24, 0, r5 + addi r5, r5, 16 + lvx v25, 0, r5 + addi r5, r5, 16 + lvx v26, 0, r5 + addi r5, r5, 16 + lvx v27, 0, r5 + addi r5, r5, 16 + lvx v28, 0, r5 + addi r5, r5, 16 + lvx v29, 0, r5 + addi r5, r5, 16 + lvx v30, 0, r5 + addi r5, r5, 16 + lvx v31, 0, r5 + + blr diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.h b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.h new file mode 100644 index 0000000000..4f859fd2f0 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/ppc_regs.h @@ -0,0 +1,32 @@ +/* Saves/loads most user-level PowerPC registers */ + +#ifndef PPC_REGS_H +#define PPC_REGS_H + +#include + +typedef __attribute__((aligned(16))) struct ppc_regs_t +{ + uint64_t vr [32] [2]; + double fpr [32]; + uint64_t gpr [32]; + uint32_t cr; + uint32_t vrsave; + uint32_t ctr; + uint32_t xer; + uint32_t garbage; + uint32_t fpscr; +} ppc_regs_t; + +#ifdef __cplusplus + extern "C" { +#endif + +void save_ppc_regs( ppc_regs_t* ); +void load_ppc_regs( ppc_regs_t const* ); + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/readme.txt b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/readme.txt new file mode 100644 index 0000000000..9054c76d87 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/readme.txt @@ -0,0 +1,34 @@ +Run run_tests to test things fairly well, including the embedded and +separate versions, 32-bit and 64-bit, and with or without FP and vector +support. It will stop on the first error. Verifies that proper registers +are saved/restored, and that no others are modified, and lists incorrect +ones. Runs a bunch of threads and randomly creates/destroys, verifying +that they all switch properly. Then runs benchmark. I'd have included +one of the other portable versions, but they all crash. + +* Supports PowerPC 32-bit and 64-bit. Detects based on compiler +settings. + +* Uses embedded PowerPC code. To use separate ppc.S, define +LIBCO_PPC_ASM. + +* Saves floating-point registers by default. To avoid this and improve +performance, define LIBCO_PPC_NOFP. + +* Saves Altivec registers only if compiler is generating Altivec code. + +* Assembly code merely saves current state to buffer pointed to by r4, +then restores from r3. This eliminates almost all dependency on the ABI, +stack format, etc. and is easier to get right. C code does all the +setup. + +* C code attempts to avoid depending on whether ABI stores pointers as +32-bit or 64-bit (independently from whether it's a 64-bit PPC). + +* Everything outside of libco/ is just for +developing/testing/benchmarking. + +* Code even works on my old Mac OS Classic machine. + +-- +Shay Green diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests new file mode 100644 index 0000000000..5ddfb9ff7a --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests @@ -0,0 +1,41 @@ +#!/bin/bash + +# Enable exit on error and error on use of undefined variables +set -e -u + +echo "32-bit tests" + +# General +gcc -O3 libco/libco.c test_libco.c -mno-powerpc64 -maltivec ; ./a.out + +# Stress +gcc -O3 libco/libco.c test_threads.c -mno-powerpc64 -DLIBCO_PPC_NOFP ; ./a.out +gcc -O3 libco/libco.c test_threads.c -mno-powerpc64 -maltivec ; ./a.out + +# Benchmark +gcc -O3 libco/libco.c benchmark*.c -mno-powerpc64 -DLIBCO_PPC_NOFP ; ./a.out +gcc -O3 libco/libco.c benchmark*.c -mno-powerpc64 ; ./a.out +gcc -O3 libco/libco.c benchmark*.c -mno-powerpc64 -maltivec ; ./a.out + +# Register preservation +gcc -mregnames --omit-frame-pointer libco/libco.c ppc_regs.S test_regs.c -mno-powerpc64 -DLIBCO_PPC_NOFP ; ./a.out +gcc -mregnames --omit-frame-pointer libco/libco.c ppc_regs.S test_regs.c -mno-powerpc64 -D__ALTIVEC__ ; ./a.out + +echo +echo "64-bit tests" + +# General +gcc -O3 libco/libco.c test_libco.c -mpowerpc64 -D__ALTIVEC__ ; ./a.out + +# Stress +gcc -O3 libco/libco.c test_threads.c -mpowerpc64 -DLIBCO_PPC_NOFP ; ./a.out +gcc -O3 libco/libco.c test_threads.c -mpowerpc64 -maltivec ; ./a.out + +# Benchmark +gcc -O3 libco/libco.c benchmark*.c -mpowerpc64 -DLIBCO_PPC_NOFP ; ./a.out +gcc -O3 libco/libco.c benchmark*.c -mpowerpc64 ; ./a.out +gcc -O3 libco/libco.c benchmark*.c -mpowerpc64 -maltivec ; ./a.out + +# Register preservation +gcc -mregnames --omit-frame-pointer libco/libco.c ppc_regs.S test_regs.c -mpowerpc64 -DLIBCO_PPC_NOFP ; ./a.out +gcc -mregnames --omit-frame-pointer libco/libco.c ppc_regs.S test_regs.c -mpowerpc64 -D__ALTIVEC__ ; ./a.out diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests.txt b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests.txt new file mode 100644 index 0000000000..392e8a7a4e --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/run_tests.txt @@ -0,0 +1,106 @@ +$ cat /proc/cpuinfo +processor : 0 +cpu : PPC970, altivec supported +clock : 2000.000000MHz +revision : 2.2 (pvr 0039 0202) + +processor : 1 +cpu : PPC970, altivec supported +clock : 2000.000000MHz +revision : 2.2 (pvr 0039 0202) + +timebase : 33333333 +platform : PowerMac +model : PowerMac7,2 +machine : PowerMac7,2 +motherboard : PowerMac7,2 MacRISC4 Power Macintosh +detected as : 336 (PowerMac G5) +pmac flags : 00000000 +L2 cache : 512K unified +pmac-generation : NewWorld + +$ ./run_tests +32-bit tests +Basic test +PPC32 FP ALTIVEC +Passed + +Thread test +PPC32 +Passed + +Thread test +PPC32 FP ALTIVEC +Passed + +PPC32 +291.30 M function calls per sec + 18.93 M co_switch()x2 per sec +Function call is 15.4X faster than two co_switch() calls. + +PPC32 FP +291.20 M function calls per sec + 12.74 M co_switch()x2 per sec +Function call is 22.9X faster than two co_switch() calls. + +PPC32 FP ALTIVEC +291.90 M function calls per sec + 9.64 M co_switch()x2 per sec +Function call is 30.3X faster than two co_switch() calls. + +Register test +PPC32 +Checking for modified system registers +Checking for unpreserved non-volatiles +Checking for unnecessarily preserved volatiles +Passed + +Register test +PPC32 FP ALTIVEC +Checking for modified system registers +Checking for unpreserved non-volatiles +Checking for unnecessarily preserved volatiles +Passed + + +64-bit tests +Basic test +PPC64 FP ALTIVEC +Passed + +Thread test +PPC64 +Passed + +Thread test +PPC64 FP ALTIVEC +Passed + +PPC64 +291.70 M function calls per sec + 15.25 M co_switch()x2 per sec +Function call is 19.1X faster than two co_switch() calls. + +PPC64 FP +292.00 M function calls per sec + 12.69 M co_switch()x2 per sec +Function call is 23.0X faster than two co_switch() calls. + +PPC64 FP ALTIVEC +291.60 M function calls per sec + 9.57 M co_switch()x2 per sec +Function call is 30.5X faster than two co_switch() calls. + +Register test +PPC64 +Checking for modified system registers +Checking for unpreserved non-volatiles +Checking for unnecessarily preserved volatiles +Passed + +Register test +PPC64 FP ALTIVEC +Checking for modified system registers +Checking for unpreserved non-volatiles +Checking for unnecessarily preserved volatiles +Passed diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_libco.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_libco.c new file mode 100644 index 0000000000..16298422b3 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_libco.c @@ -0,0 +1,134 @@ +#include "libco/libco.h" + +#include +#include +#include +#include "testing.h" + +/* Verifies co_active() initial behavior */ +static void test_initial( void ) +{ + int n; + + if ( !co_active() ) + assert( 0 ); + + for ( n = 1000; n--; ) + co_switch( co_active() ); +} + +static void thread_func( void ) +{ } + +/* Creates and deletes threads many times to ensure nothing is leaked */ +static void test_leaks( void ) +{ + enum { thread_count = 10 }; + cothread_t threads [thread_count] = { 0 }; + int i = 0; + int n; + + for ( n = 10000; n--; ) + { + if ( threads [i] ) + co_delete( threads [i] ); + + threads [i] = co_create( 256 * 1024, thread_func ); + assert( threads [i] ); + + i = (i + 1) % thread_count; + } + + for ( i = 0; i < thread_count; i++ ) + if ( threads [i] ) + co_delete( threads [i] ); +} + +static cothread_t threads [10]; +static int next; + +static void next_thread( void ) +{ + co_switch( threads [next++] ); +} + +static void preserved_func( void ) +{ + int seed = next; + + #define INIT(type,n) \ + register type type##n = rand(); + + #define CHECK(type,n) \ + assert( type##n == rand() ); + + #define REGS_(type,op,base) \ + op(type,base##0)\ + op(type,base##1)\ + op(type,base##2)\ + op(type,base##3)\ + op(type,base##4)\ + op(type,base##5)\ + op(type,base##6)\ + op(type,base##7)\ + op(type,base##8)\ + op(type,base##9) + + /* Invokes op(type,n), with n going from 00 through 49 */ + #define REGS(type,op) \ + REGS_(type,op,0)\ + REGS_(type,op,1)\ + REGS_(type,op,2)\ + REGS_(type,op,3)\ + REGS_(type,op,4) + + srand(seed); + { + /* Fill int and FP registers with random values */ + REGS(size_t,INIT) + + #if LIBCO_PPC_FP + REGS(double,INIT) + #endif + + /* Run second copy of this func that puts different random values + in registers, and then switches back to us */ + next_thread(); + + /* Verify that registers match random values */ + srand(seed); + + REGS(size_t,CHECK) + + #if LIBCO_PPC_FP + REGS(double,CHECK) + #endif + } + + next_thread(); +} + +/* Verifies that registers are saved and restored by co_switch() */ +static void test_preserved( void ) +{ + threads [0] = co_create( 64 * 1024, preserved_func ); + threads [1] = co_create( 64 * 1024, preserved_func ); + threads [2] = threads [0]; + threads [3] = co_active(); + + next = 0; + next_thread(); +} + +int main( void ) +{ + printf( "Basic test\n" ); + print_libco_opts(); + + test_initial(); + test_leaks(); + test_preserved(); + + printf( "Passed\n\n" ); + return 0; +} diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_regs.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_regs.c new file mode 100644 index 0000000000..d6c5f88232 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_regs.c @@ -0,0 +1,274 @@ +/* Verifies that correct registers are saved and restored by co_switch(), +that it doesn't unnecessarily preserve volatile registers, and that it +never touches system registers. MUST be compiled with --omit-frame-pointer */ + +#include "libco/libco.h" +#include "ppc_regs.h" + +#include +#include +#include +#include +#include "testing.h" + +enum { + spr_cr = 1 << 0, + spr_xer = 1 << 8, + spr_ctr = 1 << 9, + spr_fpscr = 1 << 10, + spr_vrsave = 1 << 11, +}; + +typedef struct { + unsigned spr; + unsigned gpr; + unsigned fpr; + unsigned vr; +} regmask_t; + +enum { fpscr_mask = ~0x60000800 }; + +/* Single register and range of registers (inclusive) */ +#define REG( b ) (1 << (b)) +#define RANGE( start, end ) ((~0 << (start)) & ~(~0 << (end) << 1)) + +/* Error if modified. FPRs and VRs included here since they shouldn't be +modified or needed during switching. */ +static const regmask_t system_regs = { + spr_fpscr | (spr_vrsave*!LIBCO_PPC_ALTIVEC), + REG(2) | (REG(13)*LIBCO_PPC32), + RANGE(0,LIBCO_PPC_FP ? 12 : 31), + RANGE(0,LIBCO_PPC_ALTIVEC ? 19 : 31) +}; + +/* Error if not saved and restored */ +static const regmask_t switched_regs = { + 0x7E | (spr_vrsave*LIBCO_PPC_ALTIVEC), + REG(1) | RANGE(14-LIBCO_PPC32,31), + RANGE(14,31)*LIBCO_PPC_FP, + RANGE(20,31)*LIBCO_PPC_ALTIVEC +}; + +/* Error if saved and restored; fine if modified */ +static const regmask_t volatile_regs = { + spr_xer | spr_ctr, + RANGE(3,13-LIBCO_PPC32) | REG(0), + 0, + 0 +}; + +#undef RANGE +#undef REG + +/* Everything is broken into a separate function to avoid the compiler loading +addresses into registers between operations, since we clear all registers. */ + +static int zero_enabled; + +static ppc_regs_t regs_saved; +static ppc_regs_t regs_in; +static ppc_regs_t regs_zero; +static ppc_regs_t regs_out; + +static void save_regs_saved() +{ + save_ppc_regs( ®s_saved ); + + /* We must not trash these when restoring registers */ + regs_in.gpr [1] = regs_saved.gpr [1]; + regs_in.gpr [2] = regs_saved.gpr [2]; + + regs_out = regs_in; +} + +static void load_regs_saved() { load_ppc_regs( ®s_saved ); } +static void load_regs_in() { load_ppc_regs( ®s_in ); } +static void load_regs_zero() { load_ppc_regs( ®s_zero ); } +static void save_regs_out() { save_ppc_regs( ®s_out ); } + +static cothread_t main_thread; +static cothread_t test_thread; +static cothread_t zero_thread; + +static void switch_main_thread() { co_switch( main_thread ); } +static void switch_test_thread() { co_switch( test_thread ); } +static void switch_zero_thread() { if ( zero_enabled ) co_switch( zero_thread ); } + +static void test_thread_func() +{ + for ( ;; ) + { + /* Save current registers, load random registers, switch to another + thread which then loads zero into registers and switches back to us, + save our registers to see whether they match, then restore originals. */ + save_regs_saved(); + load_regs_in(); + switch_zero_thread(); + save_regs_out(); + load_regs_saved(); + switch_main_thread(); + } +} + +static void zero_thread_func() +{ + for ( ;; ) + { + load_regs_zero(); + switch_test_thread(); + } +} + +/* Determines which registers are modified by co_switch(). If enable_zero_fill +is true, clears registers between two co_switch() calls. ORs result to +*out. */ +static void find_modified( regmask_t* out, int enable_zero_fill ) +{ + int i; + + zero_enabled = enable_zero_fill; + + for ( i = 0; i < sizeof regs_in; i++ ) + ((unsigned char*) ®s_in) [i] = rand() >> 4; + + switch_test_thread(); + + regs_out.fpscr = (regs_out.fpscr & fpscr_mask) | (regs_in.fpscr & ~fpscr_mask); + + #define SPR( name ) \ + if ( regs_out.name != regs_in.name )\ + out->spr |= spr_##name; + + SPR( xer ); + SPR( ctr ); + SPR( fpscr ); + SPR( vrsave ); + + #undef SPR + + for ( i = 0; i < 8; i++ ) + if ( (regs_out.cr ^ regs_in.cr) >> (i*4) & 0x0F ) + out->spr |= spr_cr << i; + + #define REG( name ) \ + {\ + for ( i = 0; i < 32; i++ )\ + if ( memcmp( ®s_out.name [i], ®s_in.name [i], sizeof regs_in.name [i] ) )\ + out->name |= 1 << i;\ + } + + REG( gpr ); + REG( fpr ); + REG( vr ); + + #undef REG +} + +static void print_diffs( unsigned diff, const char name [] ) +{ + if ( diff ) + { + int i; + + printf( "%s: ", name ); + + for ( i = 0; i < 32; i++ ) + if ( diff >> i & 1 ) + printf( "%d ", i ); + + printf( "\n" ); + } +} + +static unsigned check_regs( regmask_t regs, regmask_t mask, regmask_t cmp ) +{ + unsigned any_diffs = 0; + unsigned diff; + + diff = (regs.spr & mask.spr) ^ cmp.spr; + any_diffs |= diff; + if ( diff ) + { + int i; + for ( i = 0; i < 8; i++ ) + if ( diff >> i & 1 ) + printf( "CR%d ", 7 - i ); + + #define SPR( name ) \ + if ( diff & spr_##name )\ + printf( #name " " ); + + SPR( xer ); + SPR( ctr ); + SPR( fpscr ); + SPR( vrsave ); + + #undef SPR + + printf( "\n" ); + } + + diff = (regs.gpr & mask.gpr) ^ cmp.gpr; + any_diffs |= diff; + print_diffs( diff, "GPR" ); + + diff = (regs.fpr & mask.fpr) ^ cmp.fpr; + any_diffs |= diff; + print_diffs( diff, "FPR" ); + + diff = (regs.vr & mask.vr) ^ cmp.vr; + any_diffs |= diff; + print_diffs( diff, "VR " ); + + return any_diffs; +} + +static void test( void ) +{ + /* Run a bunch of trials and accumulate which registers are modified by co_switch(), + and which aren't swapped by it. */ + regmask_t modified = { 0 }; + regmask_t unswitched = { 0 }; + int n; + + for ( n = 2000; n--; ) + { + find_modified( &modified, 0 ); + find_modified( &unswitched, 1 ); + } + + { + regmask_t zero = { 0 }; + unsigned error = 0; + + printf( "Checking for modified system registers\n" ); + error |= check_regs( modified, system_regs, zero ); + + printf( "Checking for unpreserved non-volatiles\n" ); + error |= check_regs( unswitched, switched_regs, zero ); + + printf( "Checking for unnecessarily preserved volatiles\n" ); + error |= check_regs( unswitched, volatile_regs, volatile_regs ); + + if ( error ) + { + printf( "Failed\n" ); + exit( EXIT_FAILURE ); + } + } +} + +int main( void ) +{ + printf( "Register test\n" ); + print_libco_opts(); + + main_thread = co_active(); + test_thread = co_create( 32 * 1024, test_thread_func ); + zero_thread = co_create( 32 * 1024, zero_thread_func ); + + test(); + + printf( "Passed\n\n" ); + return 0; +} diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_threads.c b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_threads.c new file mode 100644 index 0000000000..9c0d242365 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/test_threads.c @@ -0,0 +1,188 @@ +/* Stress tests cothreads + +Randomly creates, deletes, switches threads, and randomly +shuffles random data between locals and shared globals, +and randomly calls deeper and returns shallower in call +chain of each thread. After running for a while, prints +XOR of all the global data, and verifies that this matches +correct value. + +STRESS_EXCEPTIONS uses C++ exceptions rather than longjmp. +*/ + +#include "libco/libco.h" + +#include +#include +#include +#include +#include +#include "testing.h" + +#if BLARGG_DEV + int const iter = 300; + unsigned const final_data = 0x4E914B5A; +#else + int const iter = 100000; + unsigned const final_data = 0x1FED4BE2; +#endif + +int const stack_size = 256 * 1024; + +enum { max_threads = 16 }; +static cothread_t threads [max_threads]; + +static unsigned shared [16]; + +static unsigned rnd() +{ + static unsigned n = 1; + return n = (n >> 1) ^ (0xEDB88320 & -(n & 1)); +} + +static void run( jmp_buf, int depth ); + +static void entry( void ) +{ + run( NULL, 0 ); +} + +static int max_depth = 0; + +static void run( jmp_buf jb, int depth ) +{ + unsigned local [16]; + memcpy( local, shared, sizeof local ); + + if ( depth > max_depth ) + max_depth = depth; + + while ( 1 ) + { + co_switch( threads [0] ); + + switch ( rnd() & 7 ) + { + case 0: + if ( depth > 0 ) + { + if ( rnd() & 1 ) + #if STRESS_EXCEPTIONS + throw 0; + #else + longjmp( jb, 1 ); + #endif + goto ret; + } + break; + + case 1: + if ( depth < 50 ) + { + #if STRESS_EXCEPTIONS + { + try { + run( jb, depth + 1 ); + } + catch ( ... ) + { } + } + #else + { + jmp_buf jb2; + if ( !setjmp( jb2 ) ) + run( jb2, depth + 1 ); + } + #endif + } + break; + + case 2: { + int i; + for ( i = 0; i < max_threads; i++ ) + { + if ( !threads [i] ) + { + threads [i] = co_create( stack_size, entry ); + assert( threads [i] ); + break; + } + } + break; + } + + case 3: + { + int i = rnd() & (max_threads - 1); + if ( i > 0 && threads [i] && threads [i] != co_active() ) + { + co_delete( threads [i] ); + threads [i] = 0; + } + break; + } + + case 4: + case 5: + case 6: + case 7: { + int n; + for ( n = 10; n--; ) + { + unsigned r; + r = rnd(); local [r & 15] += rnd(); + r = rnd(); shared [r & 15] += rnd(); + r = rnd(); local [r & 15] ^= shared [rnd() & 15]; + r = rnd(); shared [r & 15] ^= local [rnd() & 15]; + } + break; + } + + } + + { + int i = rnd() & (max_threads - 1); + if ( threads [i] && threads [i] != co_active() ) + co_switch( threads [i] ); + } + } +ret:; +} + +int main( void ) +{ + int i, n; + + printf( "Thread test\n" ); + print_libco_opts(); + + threads [0] = co_active(); + threads [1] = co_create( stack_size, entry ); + assert( threads [1] ); + for ( n = 0; n < iter; n++ ) + { + /* + if ( !(n & (n - 1)) ) + printf( "%d\n", n );*/ + + for ( i = 1; i < max_threads; i++ ) + if ( threads [i] ) + co_switch( threads [i] ); + } + + { + unsigned all = 0; + for ( i = 0; i < 16; i++ ) + all ^= shared [i]; + + if ( all != final_data ) + { + printf( "0x%08X\n", all ); + printf( "Incorrect CRC\n" ); + return EXIT_FAILURE; + } + } + + printf( "Passed\n\n" ); + return 0; +} diff --git a/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/testing.h b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/testing.h new file mode 100644 index 0000000000..55401dbccf --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/blargg_libco_ppc64-5/testing.h @@ -0,0 +1,36 @@ +#if _ARCH_PPC64 || __PPC64__ || __ppc64__ || __powerpc64__ + #define LIBCO_PPC32 0 +#else + #define LIBCO_PPC32 1 +#endif + +#ifdef LIBCO_PPC_NOFP + #define LIBCO_PPC_FP 0 +#else + #define LIBCO_PPC_FP 1 +#endif + +#ifdef __ALTIVEC__ + #define LIBCO_PPC_ALTIVEC 1 +#else + #define LIBCO_PPC_ALTIVEC 0 +#endif + +static void print_libco_opts( void ) +{ + #if LIBCO_PPC32 + printf( "PPC32 " ); + #else + printf( "PPC64 " ); + #endif + + #if LIBCO_PPC_FP + printf( "FP " ); + #endif + + #if LIBCO_PPC_ALTIVEC + printf( "ALTIVEC " ); + #endif + + printf( "\n" ); +} diff --git a/libmednahawk/src/snes/src/lib/libco/fiber.c b/libmednahawk/src/snes/src/lib/libco/fiber.c new file mode 100644 index 0000000000..63a0e72e55 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/fiber.c @@ -0,0 +1,51 @@ +/* + libco.win (2008-01-28) + authors: Nach, byuu + license: public domain +*/ + +#define LIBCO_C +#include "libco.h" +#define WINVER 0x0400 +#define _WIN32_WINNT 0x0400 +#define WIN32_LEAN_AND_MEAN +#include + +#ifdef __cplusplus +extern "C" { +#endif + +static thread_local cothread_t co_active_ = 0; + +static void __stdcall co_thunk(void *coentry) { + ((void (*)(void))coentry)(); +} + +cothread_t co_active() { + if(!co_active_) { + ConvertThreadToFiber(0); + co_active_ = GetCurrentFiber(); + } + return co_active_; +} + +cothread_t co_create(unsigned int heapsize, void (*coentry)(void)) { + if(!co_active_) { + ConvertThreadToFiber(0); + co_active_ = GetCurrentFiber(); + } + return (cothread_t)CreateFiber(heapsize, co_thunk, (void*)coentry); +} + +void co_delete(cothread_t cothread) { + DeleteFiber(cothread); +} + +void co_switch(cothread_t cothread) { + co_active_ = cothread; + SwitchToFiber(cothread); +} + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/libco.c b/libmednahawk/src/snes/src/lib/libco/libco.c new file mode 100644 index 0000000000..0e725e7db2 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/libco.c @@ -0,0 +1,23 @@ +/* + libco + auto-selection module + license: public domain +*/ + +#if defined(__GNUC__) && defined(__i386__) + #include "x86.c" +#elif defined(__GNUC__) && defined(__amd64__) + #include "amd64.c" +#elif defined(__GNUC__) && defined(_ARCH_PPC) + #include "ppc.c" +#elif defined(__GNUC__) + #include "sjlj.c" +#elif defined(_MSC_VER) && defined(_M_IX86) + #include "x86.c" +#elif defined(_MSC_VER) && defined(_M_AMD64) + #include "amd64.c" +#elif defined(_MSC_VER) + #include "fiber.c" +#else + #error "libco: unsupported processor, compiler or operating system" +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/libco.h b/libmednahawk/src/snes/src/lib/libco/libco.h new file mode 100644 index 0000000000..40f3cce8c1 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/libco.h @@ -0,0 +1,34 @@ +/* + libco + version: 0.15 (2009-10-12) + license: public domain +*/ + +#ifndef LIBCO_H +#define LIBCO_H + +#ifdef LIBCO_C + #ifdef LIBCO_MP + #define thread_local __thread + #else + #define thread_local + #endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void* cothread_t; + +cothread_t co_active(); +cothread_t co_create(unsigned int, void (*)(void)); +void co_delete(cothread_t); +void co_switch(cothread_t); + +#ifdef __cplusplus +} +#endif + +/* ifndef LIBCO_H */ +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/ppc-elf.c b/libmednahawk/src/snes/src/lib/libco/ppc-elf.c new file mode 100644 index 0000000000..5740f77f61 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/ppc-elf.c @@ -0,0 +1,325 @@ +/* + * libco.ppc-elf + * author: Kernigh + * license: public domain + * + * PowerPC 32-bit ELF implementation of libco (for compile with GCC), + * ported from PowerPC Mac OS X implementation (ppc.s) by Vas Crabb. + * This ELF version works for OpenBSD, and might also work for FreeBSD, + * NetBSD and Linux. + * + * Note 1: This implementation does not handle the AltiVec/VMX + * registers, because the ELF ABI does not mention them, + * and my OpenBSD system is not using them. + * + * Note 2: If you want position-independent code, then you must + * define __PIC__. gcc -fpic or -fPIC defines __PIC__, but + * gcc -fpie or -fPIE might not. If you want to use -fpie + * or -fPIE, then you might need a manual definition: + * gcc -fpie -D__PIC__=1 + * gcc -fPIE -D__PIC__=2 + * + * The ELF ABI is "System V Application Binary Interface, PowerPC + * Processor Supplement", which you can get from + * + * (PDF file, hosted by Linux Foundation). + * + * ELF and Mac OS X use similar conventions to allocate the registers, + * and to pass arguments and return values through registers. The main + * differences are that ELF has a slightly different stack format, that + * symbols are different (and without an extra underscore at the start), + * and that the assembly syntax is different. + * + * A function may destroy the values of volatile registers, but must + * preserve the values of nonvolatile registers. So the co_switch() + * function only saves the nonvolatile registers. + * + * [nonvolatile registers in ELF] + * %r1, %r14..%r31 + * %f14..%f31 + * %cr2..%cr4 in cr + * + * [volatile registers in ELF] + * %r0, %r3..%r10 + * %f0..%f13 + * %cr0, %cr1, %cr5..%cr7 in cr + * ctr, lr, xer + * + * lr (link register) is volatile, but it contains the return address, + * so co_switch must save lr. + * + * %r13 is the small data pointer. This is constant across threads, so + * co_switch() does not touch %r13. + * + * %r2 is a reserved register, so co_switch() does not touch %r2. Some + * systems might borrow an idea from the PowerPC Embedded ABI, and might + * use %r2 as a small read-only data pointer, which is constant across + * threads. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void * cothread_t; + +/* + * co_active_context is either in a global offset table (if we are + * compiling -fPIC or -fPIE) or has an absolute position. + */ +static void *co_main_stack_pointer; +static cothread_t co_active_context = &co_main_stack_pointer; + +extern cothread_t co_active() { + return co_active_context; +} + +/* + * Embedded assembly. + * + * We are not using the percent-sign substitution feature, + * so we must write "%r1", not "%%r1". + * + * We always write 'bl malloc@plt', not 'bl malloc'. The '@plt' + * is necessary in position-indepent code and seems to have no + * significant effect in fixed-position code. + * + * We never use the 'lmw' or 'stmw' instructions. The ELF ABI + * mentions that these instructions "are usually slower than + * a sequence of other instructions that have the same effect." + * We instead use sequences of 'lwz' or 'stz' instructions. + */ +__asm__("\n" +"### embedded assembly \n" +".section \".text\" \n" +" .balign 4 \n" +" \n" +/* + * void co_switch(co_thread to %r3) + * + * Allocate our stack frame of 240 bytes: + * Old New Value + * 4(%r1) 244(%r1) return address, used by us + * 0(%r1) 240(%r1) frame pointer + * 232(%r1) %f31 + * 224(%r1) %f30 + * ... + * 96(%r1) %f14 + * 92(%r1) %r31 + * 88(%r1) %r30 + * ... + * 24(%r1) %r14 + * 20(%r1) condition register + * 8(%r1) padding of 12 bytes + * 4(%r1) return address, never used + * 0(%r1) frame pointer + * + * Save our registers in our stack frame. + * Save our stack pointer in 0(%r4). + * Switch to the stack of the other thread. + * Restore registers and return. + */ +" .globl co_switch \n" +" .type co_switch, @function \n" +"co_switch: \n" +" mflr %r0 # %r0 = return address \n" +" mfcr %r9 # %r9 = condition register \n" +" stwu %r1, -240(%r1) # allocate stack frame \n" +" \n" +" stw %r0, 244(%r1) # save return address \n" +" stfd %f31, 232(%r1) # save floating-point regs \n" +" stfd %f30, 224(%r1) \n" +" stfd %f29, 216(%r1) \n" +" stfd %f28, 208(%r1) \n" +" stfd %f27, 200(%r1) \n" +" stfd %f26, 192(%r1) \n" +" stfd %f25, 184(%r1) \n" +" stfd %f24, 176(%r1) \n" +" stfd %f23, 168(%r1) \n" +" stfd %f22, 160(%r1) \n" +" stfd %f21, 152(%r1) \n" +" stfd %f20, 144(%r1) \n" +" stfd %f19, 136(%r1) \n" +" stfd %f18, 128(%r1) \n" +" stfd %f17, 120(%r1) \n" +" stfd %f16, 112(%r1) \n" +" stfd %f16, 104(%r1) \n" +" stfd %f14, 96(%r1) \n" +" stw %r31, 92(%r1) # save general-purpose regs \n" +" stw %r30, 88(%r1) \n" +" stw %r29, 84(%r1) \n" +" stw %r28, 80(%r1) \n" +" stw %r27, 76(%r1) \n" +" stw %r26, 72(%r1) \n" +" stw %r25, 68(%r1) \n" +" stw %r24, 64(%r1) \n" +" stw %r23, 60(%r1) \n" +" stw %r22, 56(%r1) \n" +" stw %r21, 52(%r1) \n" +" stw %r20, 48(%r1) \n" +" stw %r19, 44(%r1) \n" +" stw %r18, 40(%r1) \n" +" stw %r17, 36(%r1) \n" +" stw %r16, 32(%r1) \n" +" stw %r15, 28(%r1) \n" +" stw %r14, 24(%r1) \n" +" stw %r9, 20(%r1) # save condition reg \n" +" \n" +" # save current context, set new context \n" +" # %r4 = co_active_context \n" +" # co_active_context = %r3 \n" +#if __PIC__ == 2 +" # position-independent code, large model (-fPIC) \n" +" bl _GLOBAL_OFFSET_TABLE_@local-4 \n" +" mflr %r8 # %r8 = address of got \n" +" addis %r7, %r8, co_active_context@got@ha \n" +" lwz %r6, co_active_context@got@l(%r7) \n" +" lwz %r4, 0(%r6) \n" +" stw %r3, 0(%r6) \n" +#elif __PIC__ == 1 +" # position-independent code, small model (-fpic) \n" +" bl _GLOBAL_OFFSET_TABLE_@local-4 \n" +" mflr %r8 # %r8 = address of got \n" +" lwz %r7, co_active_context@got(%r8) \n" +" lwz %r4, 0(%r7) \n" +" stw %r3, 0(%r7) \n" +#else +" # fixed-position code \n" +" lis %r8, co_active_context@ha \n" +" lwz %r4, co_active_context@l(%r8) \n" +" stw %r3, co_active_context@l(%r8) \n" +#endif +" \n" +" # save current stack pointer \n" +" stw %r1, 0(%r4) \n" +" # get new stack pointer \n" +" lwz %r1, 0(%r3) \n" +" \n" +" lwz %r0, 244(%r1) # get return address \n" +" lfd %f31, 232(%r1) # restore floating-point regs \n" +" lfd %f30, 224(%r1) \n" +" lfd %f29, 216(%r1) \n" +" lfd %f28, 208(%r1) \n" +" lfd %f27, 200(%r1) \n" +" lfd %f26, 192(%r1) \n" +" lfd %f25, 184(%r1) \n" +" lfd %f24, 176(%r1) \n" +" lfd %f23, 168(%r1) \n" +" lfd %f22, 160(%r1) \n" +" lfd %f21, 152(%r1) \n" +" lfd %f20, 144(%r1) \n" +" lfd %f19, 136(%r1) \n" +" lfd %f18, 128(%r1) \n" +" lfd %f17, 120(%r1) \n" +" lfd %f16, 112(%r1) \n" +" lfd %f16, 104(%r1) \n" +" lfd %f14, 96(%r1) \n" +" lwz %r31, 92(%r1) # restore general-purpose regs \n" +" lwz %r30, 88(%r1) \n" +" lwz %r29, 84(%r1) \n" +" lwz %r28, 80(%r1) \n" +" lwz %r27, 76(%r1) \n" +" lwz %r26, 72(%r1) \n" +" lwz %r25, 68(%r1) \n" +" lwz %r24, 64(%r1) \n" +" lwz %r23, 60(%r1) \n" +" lwz %r22, 56(%r1) \n" +" lwz %r21, 52(%r1) \n" +" lwz %r20, 48(%r1) \n" +" lwz %r19, 44(%r1) \n" +" lwz %r18, 40(%r1) \n" +" lwz %r17, 36(%r1) \n" +" lwz %r16, 32(%r1) \n" +" lwz %r15, 28(%r1) \n" +" lwz %r14, 24(%r1) \n" +" lwz %r9, 20(%r1) # get condition reg \n" +" \n" +" addi %r1, %r1, 240 # free stack frame \n" +" mtlr %r0 # restore return address \n" +" mtcr %r9 # restore condition register \n" +" blr # return \n" +" .size co_switch, . - co_switch \n" +" \n" +/* + * cothread_t %r3 co_create(unsigned int stack_size %r3, + * void (*coentry %r4)()) + * + * Allocate a new stack, such that when you co_switch to that + * stack, then co_switch returns to coentry. + */ +" .globl co_create \n" +" .type co_create, @function \n" +"co_create: \n" +" mflr %r0 # %r0 = return address \n" +" stwu %r1, -16(%r1) # allocate my stack frame \n" +" stw %r0, 20(%r1) # save return address \n" +" stw %r31, 12(%r1) # save %r31 \n" +" stw %r30, 8(%r1) # save %r30 \n" +" \n" +" mr %r30, %r3 # %r30 = stack_size \n" +" mr %r31, %r4 # %r31 = coentry \n" +" \n" +" # Call malloc(stack_size %r3) to allocate stack; \n" +" # malloc() probably uses good alignment. \n" +" # \n" +" bl malloc@plt # returns %r3 = low end \n" +" cmpwi %r3, 0 # if returned NULL, \n" +" beq- 1f # then abort \n" +" \n" +" # we return %r3 = low end of stack \n" +" add %r4, %r3, %r30 # %r4 = high end of stack \n" +" \n" +" # uncomment if malloc() uses wrong alignment \n" +" #rlwinm %r4,%r4,0,0,27 # force 16-byte alignment \n" +" \n" + /* + * Allocate two stack frames: + * 16 bytes for stack frame with return address + * 240 bytes for co_switch stack frame + * + * Old New Value + * -8(%r4) 248(%r5) padding of 8 bytes + * -12(%r4) 244(%r5) return address = coentry + * -16(%r4) 240(%r5) frame pointer = NULL + * 232(%r5) %f31 = 0 + * ... + * 20(%r5) condition register = 0 + * 0(%r5) frame pointer + */ +" li %r9, (240-20)/4+1 \n" +" addi %r5, %r4, -16 # allocate first stack frame \n" +" li %r0, 0 \n" +" stwu %r5, -240(%r5) # allocate second stack frame \n" +" li %r8, 20 \n" +" mtctr %r9 # loop %r9 times \n" +"2: # loop to store zero to 20(%r5) through 240(%r5) \n" +" stwx %r0, %r5, %r8 \n" +" addi %r8, %r8, 4 # index += 4 \n" +" bdnz+ 2b # ctr -= 1, branch if nonzero \n" +" \n" +" stw %r31, 244(%r5) # return address = coentry \n" +" stw %r5, 0(%r3) # save stack pointer \n" +" \n" +" lwz %r0, 20(%r1) # get return address \n" +" lwz %r31, 12(%r1) # restore %r31 \n" +" lwz %r30, 8(%r1) # restore %r30 \n" +" mtlr %r0 # restore return address \n" +" addi %r1, %r1, 16 # free stack frame \n" +" blr # return \n" +" \n" +"1: b abort@plt # branch 1f to abort \n" +" .size co_create, . - co_create \n" +" \n" +/* + * void co_delete(cothread_t) => void free(void *) + */ +" .globl co_delete \n" +" .type co_delete, @function \n" +"co_delete: \n" +" b free@plt \n" +" \n" +); + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/ppc.c b/libmednahawk/src/snes/src/lib/libco/ppc.c new file mode 100644 index 0000000000..22dc104842 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/ppc.c @@ -0,0 +1,407 @@ +/* + libco.ppc (2010-10-17) + author: blargg + license: public domain +*/ + +/* PowerPC 32/64 using embedded or external asm, with optional +floating-point and AltiVec save/restore */ + +#define LIBCO_C +#include "libco.h" +#include +#include +#include + +#define LIBCO_MPROTECT (__unix__ && !LIBCO_PPC_ASM) + +#if LIBCO_MPROTECT + #include + #include +#endif + +/* State format (offsets in 32-bit words) + ++0 Pointer to swap code + Rest of function descriptor for entry function ++8 PC ++10 SP + Special regs + GPRs + FPRs + VRs + stack +*/ + +enum { state_size = 1024 }; +enum { above_stack = 2048 }; +enum { stack_align = 256 }; + +static thread_local cothread_t co_active_handle = 0; + +/**** Determine environment ****/ + +#define LIBCO_PPC64 (_ARCH_PPC64 || __PPC64__ || __ppc64__ || __powerpc64__) + +/* Whether function calls are indirect through a descriptor, +or are directly to function */ +#ifndef LIBCO_PPCDESC + #if !_CALL_SYSV && (_CALL_AIX || _CALL_AIXDESC || LIBCO_PPC64) + #define LIBCO_PPCDESC 1 + #endif +#endif + +#ifdef LIBCO_PPC_ASM + + #ifdef __cplusplus + extern "C" + #endif + + /* Swap code is in ppc.S */ + void co_swap_asm( cothread_t, cothread_t ); + #define CO_SWAP_ASM( x, y ) co_swap_asm( x, y ) + +#else + +/* Swap code is here in array. Please leave dieassembly comments, +as they make it easy to see what it does, and reorder instructions +if one wants to see whether that improves performance. */ +static const uint32_t libco_ppc_code [] = { +#if LIBCO_PPC64 + 0x7d000026, /* mfcr r8 */ + 0xf8240028, /* std r1,40(r4) */ + 0x7d2802a6, /* mflr r9 */ + 0xf9c40048, /* std r14,72(r4) */ + 0xf9e40050, /* std r15,80(r4) */ + 0xfa040058, /* std r16,88(r4) */ + 0xfa240060, /* std r17,96(r4) */ + 0xfa440068, /* std r18,104(r4) */ + 0xfa640070, /* std r19,112(r4) */ + 0xfa840078, /* std r20,120(r4) */ + 0xfaa40080, /* std r21,128(r4) */ + 0xfac40088, /* std r22,136(r4) */ + 0xfae40090, /* std r23,144(r4) */ + 0xfb040098, /* std r24,152(r4) */ + 0xfb2400a0, /* std r25,160(r4) */ + 0xfb4400a8, /* std r26,168(r4) */ + 0xfb6400b0, /* std r27,176(r4) */ + 0xfb8400b8, /* std r28,184(r4) */ + 0xfba400c0, /* std r29,192(r4) */ + 0xfbc400c8, /* std r30,200(r4) */ + 0xfbe400d0, /* std r31,208(r4) */ + 0xf9240020, /* std r9,32(r4) */ + 0xe8e30020, /* ld r7,32(r3) */ + 0xe8230028, /* ld r1,40(r3) */ + 0x48000009, /* bl 1 */ + 0x7fe00008, /* trap */ + 0x91040030,/*1:stw r8,48(r4) */ + 0x80c30030, /* lwz r6,48(r3) */ + 0x7ce903a6, /* mtctr r7 */ + 0xe9c30048, /* ld r14,72(r3) */ + 0xe9e30050, /* ld r15,80(r3) */ + 0xea030058, /* ld r16,88(r3) */ + 0xea230060, /* ld r17,96(r3) */ + 0xea430068, /* ld r18,104(r3) */ + 0xea630070, /* ld r19,112(r3) */ + 0xea830078, /* ld r20,120(r3) */ + 0xeaa30080, /* ld r21,128(r3) */ + 0xeac30088, /* ld r22,136(r3) */ + 0xeae30090, /* ld r23,144(r3) */ + 0xeb030098, /* ld r24,152(r3) */ + 0xeb2300a0, /* ld r25,160(r3) */ + 0xeb4300a8, /* ld r26,168(r3) */ + 0xeb6300b0, /* ld r27,176(r3) */ + 0xeb8300b8, /* ld r28,184(r3) */ + 0xeba300c0, /* ld r29,192(r3) */ + 0xebc300c8, /* ld r30,200(r3) */ + 0xebe300d0, /* ld r31,208(r3) */ + 0x7ccff120, /* mtcr r6 */ +#else + 0x7d000026, /* mfcr r8 */ + 0x90240028, /* stw r1,40(r4) */ + 0x7d2802a6, /* mflr r9 */ + 0x91a4003c, /* stw r13,60(r4) */ + 0x91c40040, /* stw r14,64(r4) */ + 0x91e40044, /* stw r15,68(r4) */ + 0x92040048, /* stw r16,72(r4) */ + 0x9224004c, /* stw r17,76(r4) */ + 0x92440050, /* stw r18,80(r4) */ + 0x92640054, /* stw r19,84(r4) */ + 0x92840058, /* stw r20,88(r4) */ + 0x92a4005c, /* stw r21,92(r4) */ + 0x92c40060, /* stw r22,96(r4) */ + 0x92e40064, /* stw r23,100(r4) */ + 0x93040068, /* stw r24,104(r4) */ + 0x9324006c, /* stw r25,108(r4) */ + 0x93440070, /* stw r26,112(r4) */ + 0x93640074, /* stw r27,116(r4) */ + 0x93840078, /* stw r28,120(r4) */ + 0x93a4007c, /* stw r29,124(r4) */ + 0x93c40080, /* stw r30,128(r4) */ + 0x93e40084, /* stw r31,132(r4) */ + 0x91240020, /* stw r9,32(r4) */ + 0x80e30020, /* lwz r7,32(r3) */ + 0x80230028, /* lwz r1,40(r3) */ + 0x48000009, /* bl 1 */ + 0x7fe00008, /* trap */ + 0x91040030,/*1:stw r8,48(r4) */ + 0x80c30030, /* lwz r6,48(r3) */ + 0x7ce903a6, /* mtctr r7 */ + 0x81a3003c, /* lwz r13,60(r3) */ + 0x81c30040, /* lwz r14,64(r3) */ + 0x81e30044, /* lwz r15,68(r3) */ + 0x82030048, /* lwz r16,72(r3) */ + 0x8223004c, /* lwz r17,76(r3) */ + 0x82430050, /* lwz r18,80(r3) */ + 0x82630054, /* lwz r19,84(r3) */ + 0x82830058, /* lwz r20,88(r3) */ + 0x82a3005c, /* lwz r21,92(r3) */ + 0x82c30060, /* lwz r22,96(r3) */ + 0x82e30064, /* lwz r23,100(r3) */ + 0x83030068, /* lwz r24,104(r3) */ + 0x8323006c, /* lwz r25,108(r3) */ + 0x83430070, /* lwz r26,112(r3) */ + 0x83630074, /* lwz r27,116(r3) */ + 0x83830078, /* lwz r28,120(r3) */ + 0x83a3007c, /* lwz r29,124(r3) */ + 0x83c30080, /* lwz r30,128(r3) */ + 0x83e30084, /* lwz r31,132(r3) */ + 0x7ccff120, /* mtcr r6 */ +#endif + +#ifndef LIBCO_PPC_NOFP + 0xd9c400e0, /* stfd f14,224(r4) */ + 0xd9e400e8, /* stfd f15,232(r4) */ + 0xda0400f0, /* stfd f16,240(r4) */ + 0xda2400f8, /* stfd f17,248(r4) */ + 0xda440100, /* stfd f18,256(r4) */ + 0xda640108, /* stfd f19,264(r4) */ + 0xda840110, /* stfd f20,272(r4) */ + 0xdaa40118, /* stfd f21,280(r4) */ + 0xdac40120, /* stfd f22,288(r4) */ + 0xdae40128, /* stfd f23,296(r4) */ + 0xdb040130, /* stfd f24,304(r4) */ + 0xdb240138, /* stfd f25,312(r4) */ + 0xdb440140, /* stfd f26,320(r4) */ + 0xdb640148, /* stfd f27,328(r4) */ + 0xdb840150, /* stfd f28,336(r4) */ + 0xdba40158, /* stfd f29,344(r4) */ + 0xdbc40160, /* stfd f30,352(r4) */ + 0xdbe40168, /* stfd f31,360(r4) */ + 0xc9c300e0, /* lfd f14,224(r3) */ + 0xc9e300e8, /* lfd f15,232(r3) */ + 0xca0300f0, /* lfd f16,240(r3) */ + 0xca2300f8, /* lfd f17,248(r3) */ + 0xca430100, /* lfd f18,256(r3) */ + 0xca630108, /* lfd f19,264(r3) */ + 0xca830110, /* lfd f20,272(r3) */ + 0xcaa30118, /* lfd f21,280(r3) */ + 0xcac30120, /* lfd f22,288(r3) */ + 0xcae30128, /* lfd f23,296(r3) */ + 0xcb030130, /* lfd f24,304(r3) */ + 0xcb230138, /* lfd f25,312(r3) */ + 0xcb430140, /* lfd f26,320(r3) */ + 0xcb630148, /* lfd f27,328(r3) */ + 0xcb830150, /* lfd f28,336(r3) */ + 0xcba30158, /* lfd f29,344(r3) */ + 0xcbc30160, /* lfd f30,352(r3) */ + 0xcbe30168, /* lfd f31,360(r3) */ +#endif + +#ifdef __ALTIVEC__ + 0x7ca042a6, /* mfvrsave r5 */ + 0x39040180, /* addi r8,r4,384 */ + 0x39240190, /* addi r9,r4,400 */ + 0x70a00fff, /* andi. r0,r5,4095 */ + 0x90a40034, /* stw r5,52(r4) */ + 0x4182005c, /* beq- 2 */ + 0x7e8041ce, /* stvx v20,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ea049ce, /* stvx v21,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7ec041ce, /* stvx v22,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ee049ce, /* stvx v23,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f0041ce, /* stvx v24,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f2049ce, /* stvx v25,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f4041ce, /* stvx v26,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f6049ce, /* stvx v27,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f8041ce, /* stvx v28,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7fa049ce, /* stvx v29,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7fc041ce, /* stvx v30,r0,r8 */ + 0x7fe049ce, /* stvx v31,r0,r9 */ + 0x80a30034,/*2:lwz r5,52(r3) */ + 0x39030180, /* addi r8,r3,384 */ + 0x39230190, /* addi r9,r3,400 */ + 0x70a00fff, /* andi. r0,r5,4095 */ + 0x7ca043a6, /* mtvrsave r5 */ + 0x4d820420, /* beqctr */ + 0x7e8040ce, /* lvx v20,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ea048ce, /* lvx v21,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7ec040ce, /* lvx v22,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7ee048ce, /* lvx v23,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f0040ce, /* lvx v24,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f2048ce, /* lvx v25,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f4040ce, /* lvx v26,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7f6048ce, /* lvx v27,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7f8040ce, /* lvx v28,r0,r8 */ + 0x39080020, /* addi r8,r8,32 */ + 0x7fa048ce, /* lvx v29,r0,r9 */ + 0x39290020, /* addi r9,r9,32 */ + 0x7fc040ce, /* lvx v30,r0,r8 */ + 0x7fe048ce, /* lvx v31,r0,r9 */ +#endif + + 0x4e800420, /* bctr */ +}; + + #if LIBCO_PPCDESC + /* Function call goes through indirect descriptor */ + #define CO_SWAP_ASM( x, y ) \ + ((void (*)( cothread_t, cothread_t )) (uintptr_t) x)( x, y ) + #else + /* Function call goes directly to code */ + #define CO_SWAP_ASM( x, y ) \ + ((void (*)( cothread_t, cothread_t )) (uintptr_t) libco_ppc_code)( x, y ) + #endif + +#endif + +static uint32_t* co_create_( unsigned size, uintptr_t entry ) +{ + uint32_t* t = (uint32_t*) malloc( size ); + + (void) entry; + + #if LIBCO_PPCDESC + if ( t ) + { + /* Copy entry's descriptor */ + memcpy( t, (void*) entry, sizeof (void*) * 3 ); + + /* Set function pointer to swap routine */ + #ifdef LIBCO_PPC_ASM + *(const void**) t = *(void**) &co_swap_asm; + #else + *(const void**) t = libco_ppc_code; + #endif + } + #endif + + return t; +} + +cothread_t co_create( unsigned int size, void (*entry_)( void ) ) +{ + uintptr_t entry = (uintptr_t) entry_; + uint32_t* t = NULL; + + /* Be sure main thread was successfully allocated */ + if ( co_active() ) + { + size += state_size + above_stack + stack_align; + t = co_create_( size, entry ); + } + + if ( t ) + { + uintptr_t sp; + int shift; + + /* Save current registers into new thread, so that any special ones will + have proper values when thread is begun */ + CO_SWAP_ASM( t, t ); + + #if LIBCO_PPCDESC + /* Get real address */ + entry = (uintptr_t) *(void**) entry; + #endif + + /* Put stack near end of block, and align */ + sp = (uintptr_t) t + size - above_stack; + sp -= sp % stack_align; + + /* On PPC32, we save and restore GPRs as 32 bits. For PPC64, we + save and restore them as 64 bits, regardless of the size the ABI + uses. So, we manually write pointers at the proper size. We always + save and restore at the same address, and since PPC is big-endian, + we must put the low byte first on PPC32. */ + + /* If uintptr_t is 32 bits, >>32 is undefined behavior, so we do two shifts + and don't have to care how many bits uintptr_t is. */ + #if LIBCO_PPC64 + shift = 16; + #else + shift = 0; + #endif + + /* Set up so entry will be called on next swap */ + t [8] = (uint32_t) (entry >> shift >> shift); + t [9] = (uint32_t) entry; + + t [10] = (uint32_t) (sp >> shift >> shift); + t [11] = (uint32_t) sp; + } + + return t; +} + +void co_delete( cothread_t t ) +{ + free( t ); +} + +static void co_init_( void ) +{ + #if LIBCO_MPROTECT + /* TODO: pre- and post-pad PPC code so that this doesn't make other + data executable and writable */ + long page_size = sysconf( _SC_PAGESIZE ); + if ( page_size > 0 ) + { + uintptr_t align = page_size; + uintptr_t begin = (uintptr_t) libco_ppc_code; + uintptr_t end = begin + sizeof libco_ppc_code; + + /* Align beginning and end */ + end += align - 1; + end -= end % align; + begin -= begin % align; + + mprotect( (void*) begin, end - begin, PROT_READ | PROT_WRITE | PROT_EXEC ); + } + #endif + + co_active_handle = co_create_( state_size, (uintptr_t) &co_switch ); +} + +cothread_t co_active() +{ + if ( !co_active_handle ) + co_init_(); + + return co_active_handle; +} + +void co_switch( cothread_t t ) +{ + cothread_t old = co_active_handle; + co_active_handle = t; + + CO_SWAP_ASM( t, old ); +} diff --git a/libmednahawk/src/snes/src/lib/libco/ppc.s b/libmednahawk/src/snes/src/lib/libco/ppc.s new file mode 100644 index 0000000000..386e968af9 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/ppc.s @@ -0,0 +1,478 @@ +;***** +;libco.ppc (2007-11-29) +;author: Vas Crabb +;license: public domain +; +;cross-platform PowerPC implementation of libco +;special thanks to byuu for writing the original version +; +;[ABI compatibility] +;- gcc; mac os x; ppc +; +;[nonvolatile registers] +;- GPR1, GPR13 - GPR31 +;- FPR14 - FPR31 +;- V20 - V31 +;- VRSAVE, CR2 - CR4 +; +;[volatile registers] +;- GPR0, GPR2 - GPR12 +;- FPR0 - FPR13 +;- V0 - V19 +;- LR, CTR, XER, CR0, CR1, CR5 - CR7 +;***** + + +;Declare some target-specific stuff + + .section __TEXT,__text,regular,pure_instructions + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .machine ppc + + +;Constants + + .cstring + .align 2 + +_sysctl_altivec: + .ascii "hw.optional.altivec\0" + + +;Declare space for variables + +.lcomm _co_environ,4,2 ;bit 0 = initialised, bit 1 = have Altivec/VMX +.lcomm _co_primary_buffer,1024,2 ;buffer (will be zeroed by loader) + + .data + .align 2 + +_co_active_context: + .long _co_primary_buffer + + + .text + .align 2 + + +;Declare exported names + +.globl _co_active +.globl _co_create +.globl _co_delete +.globl _co_switch + + +;***** +;extern "C" cothread_t co_active(); +;return = GPR3 +;***** + +_co_active: + mflr r0 ;GPR0 = return address + bcl 20,31,L_co_active$spb +L_co_active$spb: + mflr r2 ;GPR2 set for position-independance + addis r3,r2,ha16(_co_active_context-L_co_active$spb) ;get value in GPR3 + lwz r3,lo16(_co_active_context-L_co_active$spb)(r3) + mtlr r0 ;LR = return address + blr ;return + + +;***** +;extern "C" cothread_t co_create(unsigned int heapsize, void (*coentry)()); +;GPR3 = heapsize +;GPR4 = coentry +;return = GPR3 +;***** + +_co_create: + mflr r0 ;GPR0 = return address + stmw r30,-8(r1) ;save GPR30 and GPR31 + stw r0,8(r1) ;save return address + stwu r1,-(2*4+16+24)(r1) ;allocate 16 bytes for locals/parameters + +;create heap space (stack + register storage) + addi r31,r3,1024-24 ;subtract space for linkage + mr r30,r4 ;GPR30 = coentry + addi r3,r3,1024 ;allocate extra memory for contextual info + bl L_malloc$stub ;GPR3 = malloc(heapsize + 1024) + add r4,r3,r31 ;GPR4 points to top-of-stack + rlwinm r5,r4,0,0,27 ;force 16-byte alignment + +;store thread entry point + registers, so that first call to co_switch will execute coentry + stw r30,8(r5) ;store entry point + addi r6,0,2+19+18*2+12*4+1 ;clear for CR, old GPR1, 19 GPRs, 18 FPRs, 12 VRs, VRSAVE + addi r0,0,0 + addi r7,0,4 ;start at 4(GPR5) + mtctr r6 +L_co_create$clear_loop: + stwx r0,r5,r7 ;clear a word + addi r7,r7,-4 ;increment pointer + bdnz L_co_create$clear_loop ;loop + stwu r5,-448(r5) ;store top of stack + +;initialize context memory heap and return + stw r5,0(r3) ;*cothread_t = stack heap pointer (GPR1) + lwz r1,0(r1) ;deallocate stack frame + lwz r8,8(r1) ;fetch return address + lmw r30,-8(r1) ;restore GPR30 and GPR31 + mtlr r8 ;return address in LR + blr ;return + + +;***** +;extern "C" void co_delete(cothread_t cothread); +;GPR3 = cothread +;***** + +_co_delete: + b L_free$stub ;free(GPR3) + + +;***** +;extern "C" void co_switch(cothread_t cothread); +;GPR3 = cothread +;***** +; +;Frame looks like: +; +;Old New Value +; 8(r1) 456(r1) Saved LR +; 4(r1) 452(r1) Saved CR +; 0(r1) 448(r1) Old GPR1 +; -4(r1) 444(r1) Saved GPR31 +; -8(r1) 440(r1) Saved GPR30 +;... ... ... +; -72(r1) 376(r1) Saved GPR14 +; -76(r1) 372(r1) Saved GPR13 +; -80(r1) 368(r1) Saved VRSAVE +; -84(r1) 364(r1) +++ +; -88(r1) 360(r1) Saved FPR31 +; -92(r1) 356(r1) +++ +; -96(r1) 352(r1) Saved FPR30 +;... ... ... +;-212(r1) 236(r1) +++ +;-216(r1) 232(r1) Saved FPR15 +;-220(r1) 228(r1) +++ +;-224(r1) 224(r1) Saved FPR14 +;-228(r1) 220(r1) +++ value +;-232(r1) 216(r1) +++ len +;-236(r1) 212(r1) +++ +;-240(r1) 208(r1) Saved VR31 +;-244(r1) 204(r1) +++ +;-248(r1) 200(r1) +++ +;-252(r1) 196(r1) +++ +;-256(r1) 192(r1) Saved VR30 +;... ... ... +;-388(r1) 60(r1) +++ +;-392(r1) 56(r1) +++ +;-396(r1) 52(r1) +++ +;-400(r1) 48(r1) Saved VR21 +;-404(r1) 44(r1) +++ +;-408(r1) 40(r1) +++ Param 5 (GPR7) +;-412(r1) 36(r1) +++ Param 4 (GPR6) +;-416(r1) 32(r1) Saved VR20 Param 3 (GPR5) +;-420(r1) 28(r1) - Param 2 (GPR4) +;-424(r1) 24(r1) - Param 1 (GPR3) +;-428(r1) 20(r1) - Reserved +;-432(r1) 16(r1) - Reserved +;-436(r1) 12(r1) - Reserved +;-440(r1) 8(r1) - New LR +;-444(r1) 4(r1) - New CR +;-448(r1) 0(r1) Saved GPR1 + + +_co_switch: + stmw r13,-76(r1) ;save preserved GPRs + stfd f14,-224(r1) ;save preserved FPRs + stfd f15,-216(r1) + stfd f16,-208(r1) + stfd f17,-200(r1) + stfd f18,-192(r1) + stfd f19,-184(r1) + stfd f20,-176(r1) + stfd f21,-168(r1) + stfd f22,-160(r1) + stfd f23,-152(r1) + stfd f24,-144(r1) + stfd f25,-136(r1) + stfd f26,-128(r1) + stfd f27,-120(r1) + stfd f28,-112(r1) + stfd f29,-104(r1) + stfd f30,-96(r1) + stfd f31,-88(r1) + mflr r0 ;save return address + stw r0,8(r1) + mfcr r2 ;save condition codes + stw r2,4(r1) + stwu r1,-448(r1) ;create stack frame (save 19 GPRs, 18 FRPs, 12 VRs, VRSAVE) + + mr r30,r3 ;save new context pointer + bcl 20,31,L_co_switch$spb ;get address of co_active_context +L_co_switch$spb: + mflr r31 + + addis r29,r31,ha16(_co_environ-L_co_switch$spb) ;get environment flags + lwz r8,lo16(_co_environ-L_co_switch$spb)(r29) + andis. r9,r8,0x8000 ;is it initialised? + bne+ L_co_switch$initialised + + addi r0,0,4 ;len = sizeof(int) + stw r0,216(r1) + addis r3,r31,ha16(_sysctl_altivec-L_co_switch$spb) ;GPR3 = "hw.optional.altivec" + addi r3,r3,lo16(_sysctl_altivec-L_co_switch$spb) + addi r4,r1,220 ;GPR4 = &value + addi r5,r1,216 ;GPR5 = &len + addi r6,0,0 ;newp = 0 + addi r7,0,0 ;newlen = 0 + bl L_sysctlbyname$stub ;call sysctlbyname + lwz r2,220(r1) ;fetch result + addis r8,0,0x8000 ;set initialised bit + cmpwi cr5,r3,0 ;assume error means not present + cmpwi cr6,r2,0 ;test result + blt- cr5,L_co_switch$store_environ + beq cr6,L_co_switch$store_environ + oris r8,r8,0x4000 ;set the flag to say we have it! +L_co_switch$store_environ: + stw r8,lo16(_co_environ-L_co_switch$spb)(r29) ;store environment flags +L_co_switch$initialised: + + andis. r10,r8,0x4000 ;do we have Altivec/VMX? + beq L_co_switch$save_no_vmx + mfspr r11,256 ;save VRSAVE + andi. r0,r11,0x0FFF ;short-circuit if it's zero + stw r11,368(r1) + beq L_co_switch$save_no_vmx + andi. r0,r11,0x0800 ;check bit 20 + addi r2,0,32 ;starting index + beq L_co_switch$save_skip_vr20 + stvx v20,r1,r2 ;save VR20 +L_co_switch$save_skip_vr20: + addi r2,r2,16 ;stride + andi. r0,r11,0x0400 ;check bit 21 + beq L_co_switch$save_skip_vr21 + stvx v21,r1,r2 ;save VR21 +L_co_switch$save_skip_vr21: + addi r2,r2,16 ;stride + andi. r0,r11,0x0200 ;check bit 22 + beq L_co_switch$save_skip_vr22 + stvx v22,r1,r2 ;save VR22 +L_co_switch$save_skip_vr22: + addi r2,r2,16 ;stride + andi. r0,r11,0x0100 ;check bit 23 + beq L_co_switch$save_skip_vr23 + stvx v23,r1,r2 ;save VR23 +L_co_switch$save_skip_vr23: + addi r2,r2,16 ;stride + andi. r0,r11,0x0080 ;check bit 24 + beq L_co_switch$save_skip_vr24 + stvx v24,r1,r2 ;save VR24 +L_co_switch$save_skip_vr24: + addi r2,r2,16 ;stride + andi. r0,r11,0x0040 ;check bit 25 + beq L_co_switch$save_skip_vr25 + stvx v25,r1,r2 ;save VR25 +L_co_switch$save_skip_vr25: + addi r2,r2,16 ;stride + andi. r0,r11,0x0020 ;check bit 26 + beq L_co_switch$save_skip_vr26 + stvx v26,r1,r2 ;save VR26 +L_co_switch$save_skip_vr26: + addi r2,r2,16 ;stride + andi. r0,r11,0x0010 ;check bit 27 + beq L_co_switch$save_skip_vr27 + stvx v27,r1,r2 ;save VR27 +L_co_switch$save_skip_vr27: + addi r2,r2,16 ;stride + andi. r0,r11,0x0008 ;check bit 28 + beq L_co_switch$save_skip_vr28 + stvx v28,r1,r2 ;save VR28 +L_co_switch$save_skip_vr28: + addi r2,r2,16 ;stride + andi. r0,r11,0x0004 ;check bit 29 + beq L_co_switch$save_skip_vr29 + stvx v29,r1,r2 ;save VR29 +L_co_switch$save_skip_vr29: + addi r2,r2,16 ;stride + andi. r0,r11,0x0002 ;check bit 30 + beq L_co_switch$save_skip_vr30 + stvx v30,r1,r2 ;save VR30 +L_co_switch$save_skip_vr30: + addi r2,r2,16 ;stride + andi. r0,r11,0x0001 ;check bit 31 + beq L_co_switch$save_skip_vr31 + stvx v31,r1,r2 ;save VR31 +L_co_switch$save_skip_vr31: +L_co_switch$save_no_vmx: + + addis r4,r31,ha16(_co_active_context-L_co_switch$spb) ;save current context + lwz r5,lo16(_co_active_context-L_co_switch$spb)(r4) + stw r30,lo16(_co_active_context-L_co_switch$spb)(r4);set new context + stw r1,0(r5) ;save current stack pointer + lwz r1,0(r30) ;get new stack pointer + + andis. r10,r8,0x4000 ;do we have Altivec/VMX? + beq L_co_switch$restore_no_vmx + lwz r11,368(r1) ;restore VRSAVE + andi. r0,r11,0x0FFF ;short-circuit if it's zero + mtspr 256,r11 + beq L_co_switch$restore_no_vmx + andi. r0,r11,0x0800 ;check bit 20 + addi r2,0,32 ;starting index + beq L_co_switch$restore_skip_vr20 + lvx v20,r1,r2 ;restore VR20 +L_co_switch$restore_skip_vr20: + addi r2,r2,16 ;stride + andi. r0,r11,0x0400 ;check bit 21 + beq L_co_switch$restore_skip_vr21 + lvx v21,r1,r2 ;restore VR21 +L_co_switch$restore_skip_vr21: + addi r2,r2,16 ;stride + andi. r0,r11,0x0200 ;check bit 22 + beq L_co_switch$restore_skip_vr22 + lvx v22,r1,r2 ;restore VR22 +L_co_switch$restore_skip_vr22: + addi r2,r2,16 ;stride + andi. r0,r11,0x0100 ;check bit 23 + beq L_co_switch$restore_skip_vr23 + lvx v23,r1,r2 ;restore VR23 +L_co_switch$restore_skip_vr23: + addi r2,r2,16 ;stride + andi. r0,r11,0x0080 ;check bit 24 + beq L_co_switch$restore_skip_vr24 + lvx v24,r1,r2 ;restore VR24 +L_co_switch$restore_skip_vr24: + addi r2,r2,16 ;stride + andi. r0,r11,0x0040 ;check bit 25 + beq L_co_switch$restore_skip_vr25 + lvx v25,r1,r2 ;restore VR25 +L_co_switch$restore_skip_vr25: + addi r2,r2,16 ;stride + andi. r0,r11,0x0020 ;check bit 26 + beq L_co_switch$restore_skip_vr26 + lvx v26,r1,r2 ;restore VR26 +L_co_switch$restore_skip_vr26: + addi r2,r2,16 ;stride + andi. r0,r11,0x0010 ;check bit 27 + beq L_co_switch$restore_skip_vr27 + lvx v27,r1,r2 ;restore VR27 +L_co_switch$restore_skip_vr27: + addi r2,r2,16 ;stride + andi. r0,r11,0x0008 ;check bit 28 + beq L_co_switch$restore_skip_vr28 + lvx v28,r1,r2 ;restore VR28 +L_co_switch$restore_skip_vr28: + addi r2,r2,16 ;stride + andi. r0,r11,0x0004 ;check bit 29 + beq L_co_switch$restore_skip_vr29 + lvx v29,r1,r2 ;restore VR29 +L_co_switch$restore_skip_vr29: + addi r2,r2,16 ;stride + andi. r0,r11,0x0002 ;check bit 30 + beq L_co_switch$restore_skip_vr30 + lvx v30,r1,r2 ;restore VR30 +L_co_switch$restore_skip_vr30: + addi r2,r2,16 ;stride + andi. r0,r11,0x0001 ;check bit 31 + beq L_co_switch$restore_skip_vr31 + lvx v31,r1,r2 ;restore VR31 +L_co_switch$restore_skip_vr31: +L_co_switch$restore_no_vmx: + + lwz r1,0(r1) ;deallocate stack frame + lwz r6,8(r1) ;return address in GPR6 + lwz r7,4(r1) ;condition codes in GPR7 + addi r0,0,0 ;make thread main crash if it returns + lmw r13,-76(r1) ;restore preserved GPRs + lfd f14,-224(r1) ;restore preserved FPRs + lfd f15,-216(r1) + lfd f16,-208(r1) + lfd f17,-200(r1) + lfd f18,-192(r1) + lfd f19,-184(r1) + lfd f20,-176(r1) + lfd f21,-168(r1) + lfd f22,-160(r1) + lfd f23,-152(r1) + lfd f24,-144(r1) + lfd f25,-136(r1) + lfd f26,-128(r1) + lfd f27,-120(r1) + lfd f28,-112(r1) + lfd f29,-104(r1) + lfd f30,-96(r1) + lfd f31,-88(r1) + mtlr r0 + mtctr r6 ;restore return address + mtcrf 32,r7 ;restore preserved condition codes + mtcrf 16,r7 + mtcrf 8,r7 + bctr ;return + + + +;Import external functions + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_malloc$stub: + .indirect_symbol _malloc + mflr r0 + bcl 20,31,L_malloc$spb +L_malloc$spb: + mflr r11 + addis r11,r11,ha16(L_malloc$lazy_ptr-L_malloc$spb) + mtlr r0 + lwzu r12,lo16(L_malloc$lazy_ptr-L_malloc$spb)(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_malloc$lazy_ptr: + .indirect_symbol _malloc + .long dyld_stub_binding_helper + + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_free$stub: + .indirect_symbol _free + mflr r0 + bcl 20,31,L_free$spb +L_free$spb: + mflr r11 + addis r11,r11,ha16(L_free$lazy_ptr-L_free$spb) + mtlr r0 + lwzu r12,lo16(L_free$lazy_ptr-L_free$spb)(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_free$lazy_ptr: + .indirect_symbol _free + .long dyld_stub_binding_helper + + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_sysctlbyname$stub: + .indirect_symbol _sysctlbyname + mflr r0 + bcl 20,31,L_sysctlbyname$spb +L_sysctlbyname$spb: + mflr r11 + addis r11,r11,ha16(L_sysctlbyname$lazy_ptr-L_sysctlbyname$spb) + mtlr r0 + lwzu r12,lo16(L_sysctlbyname$lazy_ptr-L_sysctlbyname$spb)(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_sysctlbyname$lazy_ptr: + .indirect_symbol _sysctlbyname + .long dyld_stub_binding_helper + + +;This needs to be here! + + .subsections_via_symbols + diff --git a/libmednahawk/src/snes/src/lib/libco/ppc64.s b/libmednahawk/src/snes/src/lib/libco/ppc64.s new file mode 100644 index 0000000000..3a79eae7a3 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/ppc64.s @@ -0,0 +1,513 @@ +;***** +;libco.ppc64 (2007-12-05) +;author: Vas Crabb +;license: public domain +; +;cross-platform 64-bit PowerPC implementation of libco +;special thanks to byuu for writing the original version +; +;[ABI compatibility] +;- gcc; mac os x; ppc64 +; +;[nonvolatile registers] +;- GPR1, GPR13 - GPR31 +;- FPR14 - FPR31 +;- V20 - V31 +;- VRSAVE, CR2 - CR4 +; +;[volatile registers] +;- GPR0, GPR2 - GPR12 +;- FPR0 - FPR13 +;- V0 - V19 +;- LR, CTR, XER, CR0, CR1, CR5 - CR7 +;***** + + +;Declare some target-specific stuff + + .section __TEXT,__text,regular,pure_instructions + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .machine ppc64 + + +;Constants + + .cstring + .align 3 + +_sysctl_altivec: + .ascii "hw.optional.altivec\0" + + +;Declare space for variables + +.lcomm _co_environ,4,2 ;bit 0 = initialised, bit 1 = have Altivec/VMX +.lcomm _co_primary_buffer,1024,3 ;buffer (will be zeroed by loader) + + .data + .align 3 + +_co_active_context: + .quad _co_primary_buffer + + + .text + .align 2 + + +;Declare exported names + +.globl _co_active +.globl _co_create +.globl _co_delete +.globl _co_switch + + +;***** +;extern "C" cothread_t co_active(); +;return = GPR3 +;***** + +_co_active: + mflr r0 ;GPR0 = return address + bcl 20,31,L_co_active$spb +L_co_active$spb: + mflr r2 ;GPR2 set for position-independance + addis r3,r2,ha16(_co_active_context-L_co_active$spb) ;get value in GPR3 + ld r3,lo16(_co_active_context-L_co_active$spb)(r3) + mtlr r0 ;LR = return address + blr ;return + + +;***** +;extern "C" cothread_t co_create(unsigned int heapsize, void (*coentry)()); +;GPR3 = heapsize +;GPR4 = coentry +;return = GPR3 +;***** + +_co_create: + mflr r0 ;GPR0 = return address + std r30,-16(r1) ;save GPR30 and GPR31 + std r31,-8(r1) + std r0,16(r1) ;save return address + stdu r1,-(2*8+16+48)(r1) ;allocate 16 bytes for locals/parameters + +;create heap space (stack + register storage) + addi r31,r3,1024-48 ;subtract space for linkage + mr r30,r4 ;GPR30 = coentry + addi r3,r3,1024 ;allocate extra memory for contextual info + bl L_malloc$stub ;GPR3 = malloc(heapsize + 1024) + add r4,r3,r31 ;GPR4 points to top-of-stack + rldicr r5,r4,0,59 ;force 16-byte alignment + +;store thread entry point + registers, so that first call to co_switch will execute coentry + std r30,16(r5) ;store entry point + addi r6,0,2+19+18+12*2+1 ;clear for CR, old GPR1, 19 GPRs, 18 FPRs, 12 VRs, VRSAVE + addi r0,0,0 + addi r7,0,8 ;start at 8(GPR5) + mtctr r6 +L_co_create$clear_loop: + stdx r0,r5,r7 ;clear a double + addi r7,r7,-8 ;increment pointer + bdnz L_co_create$clear_loop ;loop + stdu r5,-544(r5) ;store top of stack + +;initialize context memory heap and return + addis r9,0,0x8000 ;GPR13 not set (system TLS) + std r5,0(r3) ;*cothread_t = stack heap pointer (GPR1) + stw r9,8(r3) ;this is a flag word + ld r1,0(r1) ;deallocate stack frame + ld r8,16(r1) ;fetch return address + ld r30,-16(r1) ;restore GPR30 and GPR31 + ld r31,-8(r1) + mtlr r8 ;return address in LR + blr ;return + + +;***** +;extern "C" void co_delete(cothread_t cothread); +;GPR3 = cothread +;***** + +_co_delete: + b L_free$stub ;free(GPR3) + + +;***** +;extern "C" void co_switch(cothread_t cothread); +;GPR3 = cothread +;***** +; +;Frame looks like: +; +;Old New Value +; 16(r1) 560(r1) Saved LR +; 8(r1) 552(r1) Saved CR +; 0(r1) 544(r1) Old GPR1 +; -8(r1) 536(r1) Saved GPR31 +; -16(r1) 528(r1) Saved GPR30 +;... ... ... +;-144(r1) 400(r1) Saved GPR14 +;-152(r1) 392(r1) Saved GPR13 +;-160(r1) 384(r1) Saved FPR31 +;-168(r1) 376(r1) Saved FPR30 +;... ... ... +;-288(r1) 256(r1) Saved FPR15 +;-296(r1) 248(r1) Saved FPR14 +;-304(r1) 240(r1) Saved VRSAVE +;-312(r1) 232(r1) +++ value +;-320(r1) 224(r1) Saved VR31 len +;-328(r1) 216(r1) +++ +;-336(r1) 208(r1) Saved VR30 +;... ... ... +;-456(r1) 88(r1) +++ +;-464(r1) 80(r1) Saved VR22 Param 5 (GPR7) +;-472(r1) 72(r1) +++ Param 4 (GPR6) +;-480(r1) 64(r1) Saved VR21 Param 3 (GPR5) +;-488(r1) 56(r1) +++ Param 2 (GPR4) +;-496(r1) 48(r1) Saved VR20 Param 1 (GPR3) +;-504(r1) 40(r1) - Reserved +;-512(r1) 32(r1) - Reserved +;-520(r1) 24(r1) - Reserved +;-528(r1) 16(r1) - New LR +;-536(r1) 8(r1) - New CR +;-544(r1) 0(r1) Saved GPR1 + + +_co_switch: + std r13,-152(r1) ;save preserved GPRs + std r14,-144(r1) + std r15,-136(r1) + std r16,-128(r1) + std r17,-120(r1) + std r18,-112(r1) + std r19,-104(r1) + std r20,-96(r1) + std r21,-88(r1) + std r22,-80(r1) + std r23,-72(r1) + std r24,-64(r1) + std r25,-56(r1) + std r26,-48(r1) + std r27,-40(r1) + std r28,-32(r1) + std r29,-24(r1) + std r30,-16(r1) + std r31,-8(r1) + mflr r0 ;save return address + std r0,16(r1) + mfcr r2 ;save condition codes + stw r2,8(r1) + stdu r1,-544(r1) ;create stack frame (save 19 GPRs, 18 FRPs, 12 VRs, VRSAVE) + stfd f14,248(r1) ;save preserved FPRs + stfd f15,256(r1) + stfd f16,264(r1) + stfd f17,272(r1) + stfd f18,280(r1) + stfd f19,288(r1) + stfd f20,296(r1) + stfd f21,304(r1) + stfd f22,312(r1) + stfd f23,320(r1) + stfd f24,328(r1) + stfd f25,336(r1) + stfd f26,344(r1) + stfd f27,352(r1) + stfd f28,360(r1) + stfd f29,368(r1) + stfd f30,376(r1) + stfd f31,384(r1) + + mr r30,r3 ;save new context pointer + bcl 20,31,L_co_switch$spb ;get address of co_active_context +L_co_switch$spb: + mflr r31 + + addis r29,r31,ha16(_co_environ-L_co_switch$spb) ;get environment flags + lwz r8,lo16(_co_environ-L_co_switch$spb)(r29) + andis. r9,r8,0x8000 ;is it initialised? + bne+ L_co_switch$initialised + + addi r0,0,4 ;len = sizeof(int) + std r0,224(r1) + addis r3,r31,ha16(_sysctl_altivec-L_co_switch$spb) ;GPR3 = "hw.optional.altivec" + addi r3,r3,lo16(_sysctl_altivec-L_co_switch$spb) + addi r4,r1,232 ;GPR4 = &value + addi r5,r1,224 ;GPR5 = &len + addi r6,0,0 ;newp = 0 + addi r7,0,0 ;newlen = 0 + bl L_sysctlbyname$stub ;call sysctlbyname + lwz r2,232(r1) ;fetch result + addis r8,0,0x8000 ;set initialised bit + cmpdi cr5,r3,0 ;assume error means not present + cmpwi cr6,r2,0 ;test result + blt- cr5,L_co_switch$store_environ + beq cr6,L_co_switch$store_environ + oris r8,r8,0x4000 ;set the flag to say we have it! +L_co_switch$store_environ: + stw r8,lo16(_co_environ-L_co_switch$spb)(r29) ;store environment flags +L_co_switch$initialised: + + andis. r10,r8,0x4000 ;do we have Altivec/VMX? + beq L_co_switch$save_no_vmx + mfspr r11,256 ;save VRSAVE + andi. r0,r11,0x0FFF ;short-circuit if it's zero + stw r11,240(r1) + beq L_co_switch$save_no_vmx + andi. r0,r11,0x0800 ;check bit 20 + addi r2,0,48 ;starting index + beq L_co_switch$save_skip_vr20 + stvx v20,r1,r2 ;save VR20 +L_co_switch$save_skip_vr20: + addi r2,r2,16 ;stride + andi. r0,r11,0x0400 ;check bit 21 + beq L_co_switch$save_skip_vr21 + stvx v21,r1,r2 ;save VR21 +L_co_switch$save_skip_vr21: + addi r2,r2,16 ;stride + andi. r0,r11,0x0200 ;check bit 22 + beq L_co_switch$save_skip_vr22 + stvx v22,r1,r2 ;save VR22 +L_co_switch$save_skip_vr22: + addi r2,r2,16 ;stride + andi. r0,r11,0x0100 ;check bit 23 + beq L_co_switch$save_skip_vr23 + stvx v23,r1,r2 ;save VR23 +L_co_switch$save_skip_vr23: + addi r2,r2,16 ;stride + andi. r0,r11,0x0080 ;check bit 24 + beq L_co_switch$save_skip_vr24 + stvx v24,r1,r2 ;save VR24 +L_co_switch$save_skip_vr24: + addi r2,r2,16 ;stride + andi. r0,r11,0x0040 ;check bit 25 + beq L_co_switch$save_skip_vr25 + stvx v25,r1,r2 ;save VR25 +L_co_switch$save_skip_vr25: + addi r2,r2,16 ;stride + andi. r0,r11,0x0020 ;check bit 26 + beq L_co_switch$save_skip_vr26 + stvx v26,r1,r2 ;save VR26 +L_co_switch$save_skip_vr26: + addi r2,r2,16 ;stride + andi. r0,r11,0x0010 ;check bit 27 + beq L_co_switch$save_skip_vr27 + stvx v27,r1,r2 ;save VR27 +L_co_switch$save_skip_vr27: + addi r2,r2,16 ;stride + andi. r0,r11,0x0008 ;check bit 28 + beq L_co_switch$save_skip_vr28 + stvx v28,r1,r2 ;save VR28 +L_co_switch$save_skip_vr28: + addi r2,r2,16 ;stride + andi. r0,r11,0x0004 ;check bit 29 + beq L_co_switch$save_skip_vr29 + stvx v29,r1,r2 ;save VR29 +L_co_switch$save_skip_vr29: + addi r2,r2,16 ;stride + andi. r0,r11,0x0002 ;check bit 30 + beq L_co_switch$save_skip_vr30 + stvx v30,r1,r2 ;save VR30 +L_co_switch$save_skip_vr30: + addi r2,r2,16 ;stride + andi. r0,r11,0x0001 ;check bit 31 + beq L_co_switch$save_skip_vr31 + stvx v31,r1,r2 ;save VR31 +L_co_switch$save_skip_vr31: +L_co_switch$save_no_vmx: + + addis r4,r31,ha16(_co_active_context-L_co_switch$spb) ;save current context + ld r5,lo16(_co_active_context-L_co_switch$spb)(r4) + std r30,lo16(_co_active_context-L_co_switch$spb)(r4);set new context + std r1,0(r5) ;save current stack pointer + ld r1,0(r30) ;get new stack pointer + lwz r12,8(r30) ;have we already set GPR13 (system TLS)? + andis. r0,r12,0x8000 + beq+ L_co_switch$gpr13_set + std r13,392(r1) + xoris r12,r12,0x8000 + stw r12,8(r30) +L_co_switch$gpr13_set: + + andis. r10,r8,0x4000 ;do we have Altivec/VMX? + beq L_co_switch$restore_no_vmx + lwz r11,240(r1) ;restore VRSAVE + andi. r0,r11,0x0FFF ;short-circuit if it's zero + mtspr 256,r11 + beq L_co_switch$restore_no_vmx + andi. r0,r11,0x0800 ;check bit 20 + addi r2,0,48 ;starting index + beq L_co_switch$restore_skip_vr20 + lvx v20,r1,r2 ;restore VR20 +L_co_switch$restore_skip_vr20: + addi r2,r2,16 ;stride + andi. r0,r11,0x0400 ;check bit 21 + beq L_co_switch$restore_skip_vr21 + lvx v21,r1,r2 ;restore VR21 +L_co_switch$restore_skip_vr21: + addi r2,r2,16 ;stride + andi. r0,r11,0x0200 ;check bit 22 + beq L_co_switch$restore_skip_vr22 + lvx v22,r1,r2 ;restore VR22 +L_co_switch$restore_skip_vr22: + addi r2,r2,16 ;stride + andi. r0,r11,0x0100 ;check bit 23 + beq L_co_switch$restore_skip_vr23 + lvx v23,r1,r2 ;restore VR23 +L_co_switch$restore_skip_vr23: + addi r2,r2,16 ;stride + andi. r0,r11,0x0080 ;check bit 24 + beq L_co_switch$restore_skip_vr24 + lvx v24,r1,r2 ;restore VR24 +L_co_switch$restore_skip_vr24: + addi r2,r2,16 ;stride + andi. r0,r11,0x0040 ;check bit 25 + beq L_co_switch$restore_skip_vr25 + lvx v25,r1,r2 ;restore VR25 +L_co_switch$restore_skip_vr25: + addi r2,r2,16 ;stride + andi. r0,r11,0x0020 ;check bit 26 + beq L_co_switch$restore_skip_vr26 + lvx v26,r1,r2 ;restore VR26 +L_co_switch$restore_skip_vr26: + addi r2,r2,16 ;stride + andi. r0,r11,0x0010 ;check bit 27 + beq L_co_switch$restore_skip_vr27 + lvx v27,r1,r2 ;restore VR27 +L_co_switch$restore_skip_vr27: + addi r2,r2,16 ;stride + andi. r0,r11,0x0008 ;check bit 28 + beq L_co_switch$restore_skip_vr28 + lvx v28,r1,r2 ;restore VR28 +L_co_switch$restore_skip_vr28: + addi r2,r2,16 ;stride + andi. r0,r11,0x0004 ;check bit 29 + beq L_co_switch$restore_skip_vr29 + lvx v29,r1,r2 ;restore VR29 +L_co_switch$restore_skip_vr29: + addi r2,r2,16 ;stride + andi. r0,r11,0x0002 ;check bit 30 + beq L_co_switch$restore_skip_vr30 + lvx v30,r1,r2 ;restore VR30 +L_co_switch$restore_skip_vr30: + addi r2,r2,16 ;stride + andi. r0,r11,0x0001 ;check bit 31 + beq L_co_switch$restore_skip_vr31 + lvx v31,r1,r2 ;restore VR31 +L_co_switch$restore_skip_vr31: +L_co_switch$restore_no_vmx: + + lfd f14,248(r1) ;restore preserved FPRs + lfd f15,256(r1) + lfd f16,264(r1) + lfd f17,272(r1) + lfd f18,280(r1) + lfd f19,288(r1) + lfd f20,296(r1) + lfd f21,304(r1) + lfd f22,312(r1) + lfd f23,320(r1) + lfd f24,328(r1) + lfd f25,336(r1) + lfd f26,344(r1) + lfd f27,352(r1) + lfd f28,360(r1) + lfd f29,368(r1) + lfd f30,376(r1) + lfd f31,384(r1) + addi r0,0,0 ;make thread main crash if it returns + ld r1,0(r1) ;deallocate stack frame + ld r6,16(r1) ;return address in GPR6 + lwz r7,8(r1) ;condition codes in GPR7 + ld r13,-152(r1) ;restore preserved GPRs + ld r14,-144(r1) + ld r15,-136(r1) + ld r16,-128(r1) + ld r17,-120(r1) + ld r18,-112(r1) + ld r19,-104(r1) + ld r20,-96(r1) + ld r21,-88(r1) + ld r22,-80(r1) + ld r23,-72(r1) + ld r24,-64(r1) + ld r25,-56(r1) + ld r26,-48(r1) + ld r27,-40(r1) + ld r28,-32(r1) + ld r29,-24(r1) + ld r30,-16(r1) + ld r31,-8(r1) + mtlr r0 + mtctr r6 ;restore return address + mtcrf 32,r7 ;restore preserved condition codes + mtcrf 16,r7 + mtcrf 8,r7 + bctr ;return + + + +;Import external functions + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_malloc$stub: + .indirect_symbol _malloc + mflr r0 + bcl 20,31,L_malloc$spb +L_malloc$spb: + mflr r11 + addis r11,r11,ha16(L_malloc$lazy_ptr-L_malloc$spb) + mtlr r0 + ldu r12,lo16(L_malloc$lazy_ptr-L_malloc$spb)(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_malloc$lazy_ptr: + .indirect_symbol _malloc + .quad dyld_stub_binding_helper + + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_free$stub: + .indirect_symbol _free + mflr r0 + bcl 20,31,L_free$spb +L_free$spb: + mflr r11 + addis r11,r11,ha16(L_free$lazy_ptr-L_free$spb) + mtlr r0 + ldu r12,lo16(L_free$lazy_ptr-L_free$spb)(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_free$lazy_ptr: + .indirect_symbol _free + .quad dyld_stub_binding_helper + + + .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 + .align 5 +L_sysctlbyname$stub: + .indirect_symbol _sysctlbyname + mflr r0 + bcl 20,31,L_sysctlbyname$spb +L_sysctlbyname$spb: + mflr r11 + addis r11,r11,ha16(L_sysctlbyname$lazy_ptr-L_sysctlbyname$spb) + mtlr r0 + ldu r12,lo16(L_sysctlbyname$lazy_ptr-L_sysctlbyname$spb)(r11) + mtctr r12 + bctr + .lazy_symbol_pointer +L_sysctlbyname$lazy_ptr: + .indirect_symbol _sysctlbyname + .quad dyld_stub_binding_helper + + +;This needs to be here! + + .subsections_via_symbols + diff --git a/libmednahawk/src/snes/src/lib/libco/sjlj.c b/libmednahawk/src/snes/src/lib/libco/sjlj.c new file mode 100644 index 0000000000..c9ee5a6af7 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/sjlj.c @@ -0,0 +1,102 @@ +/* + libco.sjlj (2008-01-28) + author: Nach + license: public domain +*/ + +/* + * Note this was designed for UNIX systems. Based on ideas expressed in a paper + * by Ralf Engelschall. + * For SJLJ on other systems, one would want to rewrite springboard() and + * co_create() and hack the jmb_buf stack pointer. + */ + +#define LIBCO_C +#include "libco.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + sigjmp_buf context; + void (*coentry)(void); + void *stack; +} cothread_struct; + +static thread_local cothread_struct co_primary; +static thread_local cothread_struct *creating, *co_running = 0; + +static void springboard(int ignored) { + if(sigsetjmp(creating->context, 0)) { + co_running->coentry(); + } +} + +cothread_t co_active() { + if(!co_running) co_running = &co_primary; + return (cothread_t)co_running; +} + +cothread_t co_create(unsigned int size, void (*coentry)(void)) { + if(!co_running) co_running = &co_primary; + + cothread_struct *thread = (cothread_struct*)malloc(sizeof(cothread_struct)); + if(thread) { + struct sigaction handler; + struct sigaction old_handler; + + stack_t stack; + stack_t old_stack; + + thread->coentry = thread->stack = 0; + + stack.ss_flags = 0; + stack.ss_size = size; + thread->stack = stack.ss_sp = malloc(size); + if(stack.ss_sp && !sigaltstack(&stack, &old_stack)) { + handler.sa_handler = springboard; + handler.sa_flags = SA_ONSTACK; + sigemptyset(&handler.sa_mask); + creating = thread; + + if(!sigaction(SIGUSR1, &handler, &old_handler)) { + if(!raise(SIGUSR1)) { + thread->coentry = coentry; + } + sigaltstack(&old_stack, 0); + sigaction(SIGUSR1, &old_handler, 0); + } + } + + if(thread->coentry != coentry) { + co_delete(thread); + thread = 0; + } + } + + return (cothread_t)thread; +} + +void co_delete(cothread_t cothread) { + if(cothread) { + if(((cothread_struct*)cothread)->stack) { + free(((cothread_struct*)cothread)->stack); + } + free(cothread); + } +} + +void co_switch(cothread_t cothread) { + if(!sigsetjmp(co_running->context, 0)) { + co_running = (cothread_struct*)cothread; + siglongjmp(co_running->context, 1); + } +} + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/ucontext.c b/libmednahawk/src/snes/src/lib/libco/ucontext.c new file mode 100644 index 0000000000..421d966e20 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/ucontext.c @@ -0,0 +1,67 @@ +/* + libco.ucontext (2008-01-28) + author: Nach + license: public domain +*/ + +/* + * WARNING: the overhead of POSIX ucontext is very high, + * assembly versions of libco or libco_sjlj should be much faster + * + * This library only exists for two reasons: + * 1 - as an initial test for the viability of a ucontext implementation + * 2 - to demonstrate the power and speed of libco over existing implementations, + * such as pth (which defaults to wrapping ucontext on unix targets) + * + * Use this library only as a *last resort* + */ + +#define LIBCO_C +#include "libco.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +static thread_local ucontext_t co_primary; +static thread_local ucontext_t *co_running = 0; + +cothread_t co_active() { + if(!co_running) co_running = &co_primary; + return (cothread_t)co_running; +} + +cothread_t co_create(unsigned int heapsize, void (*coentry)(void)) { + if(!co_running) co_running = &co_primary; + ucontext_t *thread = (ucontext_t*)malloc(sizeof(ucontext_t)); + if(thread) { + if((!getcontext(thread) && !(thread->uc_stack.ss_sp = 0)) && (thread->uc_stack.ss_sp = malloc(heapsize))) { + thread->uc_link = co_running; + thread->uc_stack.ss_size = heapsize; + makecontext(thread, coentry, 0); + } else { + co_delete((cothread_t)thread); + thread = 0; + } + } + return (cothread_t)thread; +} + +void co_delete(cothread_t cothread) { + if(cothread) { + if(((ucontext_t*)cothread)->uc_stack.ss_sp) { free(((ucontext_t*)cothread)->uc_stack.ss_sp); } + free(cothread); + } +} + +void co_switch(cothread_t cothread) { + ucontext_t *old_thread = co_running; + co_running = (ucontext_t*)cothread; + swapcontext(old_thread, co_running); +} + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/snes/src/lib/libco/x86.c b/libmednahawk/src/snes/src/lib/libco/x86.c new file mode 100644 index 0000000000..a7125ed95e --- /dev/null +++ b/libmednahawk/src/snes/src/lib/libco/x86.c @@ -0,0 +1,93 @@ +/* + libco.x86 (2009-10-12) + author: byuu + license: public domain +*/ + +#define LIBCO_C +#include "libco.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_MSC_VER) + #define fastcall __fastcall +#elif defined(__GNUC__) + #define fastcall __attribute__((fastcall)) +#else + #error "libco: please define fastcall macro" +#endif + +static thread_local long co_active_buffer[64]; +static thread_local cothread_t co_active_handle = 0; +static void (fastcall *co_swap)(cothread_t, cothread_t) = 0; + +//ABI: fastcall +static unsigned char co_swap_function[] = { + 0x89, 0x22, 0x8B, 0x21, 0x58, 0x89, 0x6A, 0x04, 0x89, 0x72, 0x08, 0x89, 0x7A, 0x0C, 0x89, 0x5A, + 0x10, 0x8B, 0x69, 0x04, 0x8B, 0x71, 0x08, 0x8B, 0x79, 0x0C, 0x8B, 0x59, 0x10, 0xFF, 0xE0, +}; + +#ifdef _WIN32 + #include + + void co_init() { + DWORD old_privileges; + VirtualProtect(co_swap_function, sizeof co_swap_function, PAGE_EXECUTE_READWRITE, &old_privileges); + } +#else + #include + #include + + void co_init() { + unsigned long addr = (unsigned long)co_swap_function; + unsigned long base = addr - (addr % sysconf(_SC_PAGESIZE)); + unsigned long size = (addr - base) + sizeof co_swap_function; + mprotect((void*)base, size, PROT_READ | PROT_WRITE | PROT_EXEC); + } +#endif + +static void crash() { + assert(0); /* called only if cothread_t entrypoint returns */ +} + +cothread_t co_active() { + if(!co_active_handle) co_active_handle = &co_active_buffer; + return co_active_handle; +} + +cothread_t co_create(unsigned int size, void (*entrypoint)(void)) { + cothread_t handle; + if(!co_swap) { + co_init(); + co_swap = (void (fastcall*)(cothread_t, cothread_t))co_swap_function; + } + if(!co_active_handle) co_active_handle = &co_active_buffer; + size += 256; /* allocate additional space for storage */ + size &= ~15; /* align stack to 16-byte boundary */ + + if(handle = (cothread_t)malloc(size)) { + long *p = (long*)((char*)handle + size); /* seek to top of stack */ + *--p = (long)crash; /* crash if entrypoint returns */ + *--p = (long)entrypoint; /* start of function */ + *(long*)handle = (long)p; /* stack pointer */ + } + + return handle; +} + +void co_delete(cothread_t handle) { + free(handle); +} + +void co_switch(cothread_t handle) { + register cothread_t co_previous_handle = co_active_handle; + co_swap(co_active_handle = handle, co_previous_handle); +} + +#ifdef __cplusplus +} +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/Makefile b/libmednahawk/src/snes/src/lib/nall/Makefile new file mode 100644 index 0000000000..eb5d3d9b56 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/Makefile @@ -0,0 +1,109 @@ +# Makefile +# author: byuu +# license: public domain + +[A-Z] = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +[a-z] = a b c d e f g h i j k l m n o p q r s t u v w x y z +[0-9] = 0 1 2 3 4 5 6 7 8 9 +[markup] = ` ~ ! @ \# $$ % ^ & * ( ) - _ = + [ { ] } \ | ; : ' " , < . > / ? +[all] = $([A-Z]) $([a-z]) $([0-9]) $([markup]) +[space] := +[space] += + +##### +# platform detection +##### + +ifeq ($(platform),) + uname := $(shell uname -a) + ifeq ($(uname),) + platform := win + delete = del $(subst /,\,$1) + else ifneq ($(findstring Darwin,$(uname)),) + platform := osx + delete = rm -f $1 + else + platform := x + delete = rm -f $1 + endif +endif + +ifeq ($(compiler),) + compiler := gcc +endif + +ifeq ($(prefix),) + prefix := /usr/local +endif + +##### +# function rwildcard(directory, pattern) +##### +rwildcard = \ + $(strip \ + $(filter $(if $2,$2,%), \ + $(foreach f, \ + $(wildcard $1*), \ + $(eval t = $(call rwildcard,$f/)) \ + $(if $t,$t,$f) \ + ) \ + ) \ + ) + +##### +# function strtr(source, from, to) +##### +strtr = \ + $(eval __temp := $1) \ + $(strip \ + $(foreach c, \ + $(join $(addsuffix :,$2),$3), \ + $(eval __temp := \ + $(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),$(__temp)) \ + ) \ + ) \ + $(__temp) \ + ) + +##### +# function strupper(source) +##### +strupper = $(call strtr,$1,$([a-z]),$([A-Z])) + +##### +# function strlower(source) +##### +strlower = $(call strtr,$1,$([A-Z]),$([a-z])) + +##### +# function strlen(source) +##### +strlen = \ + $(eval __temp := $(subst $([space]),_,$1)) \ + $(words \ + $(strip \ + $(foreach c, \ + $([all]), \ + $(eval __temp := \ + $(subst $c,$c ,$(__temp)) \ + ) \ + ) \ + $(__temp) \ + ) \ + ) + +##### +# function streq(source) +##### +streq = $(if $(filter-out xx,x$(subst $1,,$2)$(subst $2,,$1)x),,1) + +##### +# function strne(source) +##### +strne = $(if $(filter-out xx,x$(subst $1,,$2)$(subst $2,,$1)x),1,) + +##### +# function ifhas(needle, haystack, true, false) +##### +ifhas = $(if $(findstring $1,$2),$3,$4) + diff --git a/libmednahawk/src/snes/src/lib/nall/Makefile-qt b/libmednahawk/src/snes/src/lib/nall/Makefile-qt new file mode 100644 index 0000000000..0e0e706462 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/Makefile-qt @@ -0,0 +1,55 @@ +# requires nall/Makefile + +# exports the following symbols: +# $(moc) -- meta-object compiler +# $(rcc) -- resource compiler +# $(qtinc) -- includes for compiling +# $(qtlib) -- libraries for linking + +ifeq ($(moc),) +moc := moc +endif + +ifeq ($(rcc),) +rcc := rcc +endif + +ifeq ($(platform),x) + qtinc := `pkg-config --cflags QtCore QtGui` + qtlib := `pkg-config --libs QtCore QtGui` +else ifeq ($(platform),osx) + qtinc := -I/Library/Frameworks/QtCore.framework/Versions/4/Headers + qtinc += -I/Library/Frameworks/QtGui.framework/Versions/4/Headers + qtinc += -I/Library/Frameworks/QtOpenGL.framework/Versions/4/Headers + + qtlib := -L/Library/Frameworks + qtlib += -framework QtCore + qtlib += -framework QtGui + qtlib += -framework QtOpenGL + qtlib += -framework Carbon + qtlib += -framework Cocoa + qtlib += -framework OpenGL + qtlib += -framework AppKit + qtlib += -framework ApplicationServices +else ifeq ($(platform),win) + ifeq ($(qtpath),) + # find Qt install directory from PATH environment variable + qtpath := $(foreach path,$(subst ;, ,$(PATH)),$(if $(wildcard $(path)/$(moc).exe),$(path))) + qtpath := $(strip $(qtpath)) + qtpath := $(subst \,/,$(qtpath)) + qtpath := $(patsubst %/bin,%,$(qtpath)) + endif + + qtinc := -I$(qtpath)/include + qtinc += -I$(qtpath)/include/QtCore + qtinc += -I$(qtpath)/include/QtGui + + qtlib := -L$(qtpath)/lib + qtlib += -L$(qtpath)/plugins/imageformats + + qtlib += -lmingw32 -lqtmain -lQtGui4 -lcomdlg32 -loleaut32 -limm32 -lwinmm + qtlib += -lwinspool -lmsimg32 -lQtCore4 -lole32 -ladvapi32 -lws2_32 -luuid -lgdi32 + + # optional image-file support: + # qtlib += -lqjpeg -lqmng +endif diff --git a/libmednahawk/src/snes/src/lib/nall/algorithm.hpp b/libmednahawk/src/snes/src/lib/nall/algorithm.hpp new file mode 100644 index 0000000000..893a271ebe --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/algorithm.hpp @@ -0,0 +1,23 @@ +#ifndef NALL_ALGORITHM_HPP +#define NALL_ALGORITHM_HPP + +#undef min +#undef max + +namespace nall { + template T min(const T& t, const U& u) { + return t < u ? t : u; + } + + template T max(const T& t, const U& u) { + return t > u ? t : u; + } + + //pseudo-random number generator + inline unsigned prng() { + static unsigned n = 0; + return n = (n >> 1) ^ (((n & 1) - 1) & 0xedb88320); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/any.hpp b/libmednahawk/src/snes/src/lib/nall/any.hpp new file mode 100644 index 0000000000..339332f441 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/any.hpp @@ -0,0 +1,74 @@ +#ifndef NALL_ANY_HPP +#define NALL_ANY_HPP + +#include +#include +#include + +namespace nall { + class any { + public: + bool empty() const { return container; } + const std::type_info& type() const { return container ? container->type() : typeid(void); } + + template any& operator=(const T& value_) { + typedef typename static_if< + is_array::value, + typename remove_extent::type>::type*, + T + >::type auto_t; + + if(type() == typeid(auto_t)) { + static_cast*>(container)->value = (auto_t)value_; + } else { + if(container) delete container; + container = new holder((auto_t)value_); + } + + return *this; + } + + any() : container(0) {} + template any(const T& value_) : container(0) { operator=(value_); } + + private: + struct placeholder { + virtual const std::type_info& type() const = 0; + } *container; + + template struct holder : placeholder { + T value; + const std::type_info& type() const { return typeid(T); } + holder(const T& value_) : value(value_) {} + }; + + template friend T any_cast(any&); + template friend T any_cast(const any&); + template friend T* any_cast(any*); + template friend const T* any_cast(const any*); + }; + + template T any_cast(any &value) { + typedef typename remove_reference::type nonref; + if(value.type() != typeid(nonref)) throw; + return static_cast*>(value.container)->value; + } + + template T any_cast(const any &value) { + typedef const typename remove_reference::type nonref; + if(value.type() != typeid(nonref)) throw; + return static_cast*>(value.container)->value; + } + + template T* any_cast(any *value) { + if(!value || value->type() != typeid(T)) return 0; + return &static_cast*>(value->container)->value; + } + + template const T* any_cast(const any *value) { + if(!value || value->type() != typeid(T)) return 0; + return &static_cast*>(value->container)->value; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/array.hpp b/libmednahawk/src/snes/src/lib/nall/array.hpp new file mode 100644 index 0000000000..054220ce58 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/array.hpp @@ -0,0 +1,95 @@ +#ifndef NALL_ARRAY_HPP +#define NALL_ARRAY_HPP + +#include +#include +#include +#include + +namespace nall { + //dynamic vector array + //neither constructor nor destructor is ever invoked; + //thus, this should only be used for POD objects. + template class array { + protected: + T *pool; + unsigned poolsize, buffersize; + + public: + unsigned size() const { return buffersize; } + unsigned capacity() const { return poolsize; } + + void reset() { + if(pool) free(pool); + pool = 0; + poolsize = 0; + buffersize = 0; + } + + void reserve(unsigned newsize) { + if(newsize == poolsize) return; + + pool = (T*)realloc(pool, newsize * sizeof(T)); + poolsize = newsize; + buffersize = min(buffersize, newsize); + } + + void resize(unsigned newsize) { + if(newsize > poolsize) reserve(bit::round(newsize)); //round reserve size up to power of 2 + buffersize = newsize; + } + + T* get(unsigned minsize = 0) { + if(minsize > buffersize) resize(minsize); + if(minsize > buffersize) throw "array[] out of bounds"; + return pool; + } + + void add(const T data) { + operator[](buffersize) = data; + } + + signed find(const T data) { + for(unsigned i = 0; i < size(); i++) if(pool[i] == data) return i; + return -1; //not found + } + + void clear() { + memset(pool, 0, buffersize * sizeof(T)); + } + + array() { + pool = 0; + poolsize = 0; + buffersize = 0; + } + + ~array() { reset(); } + + array(const array &source) : pool(0) { + operator=(source); + } + + array& operator=(const array &source) { + if(pool) free(pool); + buffersize = source.buffersize; + poolsize = source.poolsize; + pool = (T*)malloc(sizeof(T) * poolsize); //allocate entire pool size, + memcpy(pool, source.pool, sizeof(T) * buffersize); //... but only copy used pool objects + return *this; + } + + inline T& operator[](unsigned index) { + if(index >= buffersize) resize(index + 1); + if(index >= buffersize) throw "array[] out of bounds"; + return pool[index]; + } + + inline const T& operator[](unsigned index) const { + if(index >= buffersize) throw "array[] out of bounds"; + return pool[index]; + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/base64.hpp b/libmednahawk/src/snes/src/lib/nall/base64.hpp new file mode 100644 index 0000000000..18e03a233a --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/base64.hpp @@ -0,0 +1,90 @@ +#ifndef NALL_BASE64_HPP +#define NALL_BASE64_HPP + +#include +#include + +namespace nall { + class base64 { + public: + static bool encode(char *&output, const uint8_t* input, unsigned inlength) { + output = new char[inlength * 8 / 6 + 6](); + + unsigned i = 0, o = 0; + while(i < inlength) { + switch(i % 3) { + case 0: { + output[o++] = enc(input[i] >> 2); + output[o] = enc((input[i] & 3) << 4); + } break; + + case 1: { + uint8_t prev = dec(output[o]); + output[o++] = enc(prev + (input[i] >> 4)); + output[o] = enc((input[i] & 15) << 2); + } break; + + case 2: { + uint8_t prev = dec(output[o]); + output[o++] = enc(prev + (input[i] >> 6)); + output[o++] = enc(input[i] & 63); + } break; + } + + i++; + } + + return true; + } + + static bool decode(uint8_t *&output, unsigned &outlength, const char *input) { + unsigned inlength = strlen(input), infix = 0; + output = new uint8_t[inlength](); + + unsigned i = 0, o = 0; + while(i < inlength) { + uint8_t x = dec(input[i]); + + switch(i++ & 3) { + case 0: { + output[o] = x << 2; + } break; + + case 1: { + output[o++] |= x >> 4; + output[o] = (x & 15) << 4; + } break; + + case 2: { + output[o++] |= x >> 2; + output[o] = (x & 3) << 6; + } break; + + case 3: { + output[o++] |= x; + } break; + } + } + + outlength = o; + return true; + } + + private: + static char enc(uint8_t n) { + static char lookup_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; + return lookup_table[n & 63]; + } + + static uint8_t dec(char n) { + if(n >= 'A' && n <= 'Z') return n - 'A'; + if(n >= 'a' && n <= 'z') return n - 'a' + 26; + if(n >= '0' && n <= '9') return n - '0' + 52; + if(n == '-') return 62; + if(n == '_') return 63; + return 0; + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/bit.hpp b/libmednahawk/src/snes/src/lib/nall/bit.hpp new file mode 100644 index 0000000000..eb1f405b58 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/bit.hpp @@ -0,0 +1,51 @@ +#ifndef NALL_BIT_HPP +#define NALL_BIT_HPP + +namespace nall { + template inline unsigned uclamp(const unsigned x) { + enum { y = (1U << bits) - 1 }; + return y + ((x - y) & -(x < y)); //min(x, y); + } + + template inline unsigned uclip(const unsigned x) { + enum { m = (1U << bits) - 1 }; + return (x & m); + } + + template inline signed sclamp(const signed x) { + enum { b = 1U << (bits - 1), m = (1U << (bits - 1)) - 1 }; + return (x > m) ? m : (x < -b) ? -b : x; + } + + template inline signed sclip(const signed x) { + enum { b = 1U << (bits - 1), m = (1U << bits) - 1 }; + return ((x & m) ^ b) - b; + } + + namespace bit { + //lowest(0b1110) == 0b0010 + template inline T lowest(const T x) { + return x & -x; + } + + //clear_lowest(0b1110) == 0b1100 + template inline T clear_lowest(const T x) { + return x & (x - 1); + } + + //set_lowest(0b0101) == 0b0111 + template inline T set_lowest(const T x) { + return x | (x + 1); + } + + //round up to next highest single bit: + //round(15) == 16, round(16) == 16, round(17) == 32 + inline unsigned round(unsigned x) { + if((x & (x - 1)) == 0) return x; + while(x & (x - 1)) x &= x - 1; + return x << 1; + } + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/config.hpp b/libmednahawk/src/snes/src/lib/nall/config.hpp new file mode 100644 index 0000000000..4dacd524ad --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/config.hpp @@ -0,0 +1,124 @@ +#ifndef NALL_CONFIG_HPP +#define NALL_CONFIG_HPP + +#include +#include +#include + +namespace nall { + namespace configuration_traits { + template struct is_boolean { enum { value = false }; }; + template<> struct is_boolean { enum { value = true }; }; + + template struct is_signed { enum { value = false }; }; + template<> struct is_signed { enum { value = true }; }; + + template struct is_unsigned { enum { value = false }; }; + template<> struct is_unsigned { enum { value = true }; }; + + template struct is_double { enum { value = false }; }; + template<> struct is_double { enum { value = true }; }; + + template struct is_string { enum { value = false }; }; + template<> struct is_string { enum { value = true }; }; + } + + class configuration { + public: + enum type_t { boolean_t, signed_t, unsigned_t, double_t, string_t, unknown_t }; + struct item_t { + uintptr_t data; + string name; + string desc; + type_t type; + + string get() const { + switch(type) { + case boolean_t: return string() << *(bool*)data; + case signed_t: return string() << *(signed*)data; + case unsigned_t: return string() << *(unsigned*)data; + case double_t: return string() << *(double*)data; + case string_t: return string() << "\"" << *(string*)data << "\""; + } + return "???"; + } + + void set(string s) { + switch(type) { + case boolean_t: *(bool*)data = (s == "true"); break; + case signed_t: *(signed*)data = strsigned(s); break; + case unsigned_t: *(unsigned*)data = strunsigned(s); break; + case double_t: *(double*)data = strdouble(s); break; + case string_t: trim(s, "\""); *(string*)data = s; break; + } + } + }; + vector list; + + template + void attach(T &data, const char *name, const char *desc = "") { + unsigned n = list.size(); + list[n].data = (uintptr_t)&data; + list[n].name = name; + list[n].desc = desc; + + if(configuration_traits::is_boolean::value) list[n].type = boolean_t; + else if(configuration_traits::is_signed::value) list[n].type = signed_t; + else if(configuration_traits::is_unsigned::value) list[n].type = unsigned_t; + else if(configuration_traits::is_double::value) list[n].type = double_t; + else if(configuration_traits::is_string::value) list[n].type = string_t; + else list[n].type = unknown_t; + } + + virtual bool load(const char *filename) { + string data; + if(data.readfile(filename) == true) { + data.replace("\r", ""); + lstring line; + line.split("\n", data); + + for(unsigned i = 0; i < line.size(); i++) { + int position = qstrpos(line[i], "#"); + if(position >= 0) line[i][position] = 0; + if(qstrpos(line[i], " = ") < 0) continue; + + lstring part; + part.qsplit(" = ", line[i]); + trim(part[0]); + trim(part[1]); + + for(unsigned n = 0; n < list.size(); n++) { + if(part[0] == list[n].name) { + list[n].set(part[1]); + break; + } + } + } + + return true; + } else { + return false; + } + } + + virtual bool save(const char *filename) const { + file fp; + if(fp.open(filename, file::mode_write)) { + for(unsigned i = 0; i < list.size(); i++) { + string output; + output << list[i].name << " = " << list[i].get(); + if(list[i].desc != "") output << " # " << list[i].desc; + output << "\r\n"; + fp.print(output); + } + + fp.close(); + return true; + } else { + return false; + } + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/crc32.hpp b/libmednahawk/src/snes/src/lib/nall/crc32.hpp new file mode 100644 index 0000000000..6af81a00af --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/crc32.hpp @@ -0,0 +1,66 @@ +#ifndef NALL_CRC32_HPP +#define NALL_CRC32_HPP + +#include + +namespace nall { + const uint32_t crc32_table[256] = { + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, + 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, + 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, + 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, + 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, + 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, + 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, + 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, + 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, + 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, + 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, + 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, + 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, + 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, + 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, + 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, + 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, + 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d + }; + + inline uint32_t crc32_adjust(uint32_t crc32, uint8_t input) { + return ((crc32 >> 8) & 0x00ffffff) ^ crc32_table[(crc32 ^ input) & 0xff]; + } + + inline uint32_t crc32_calculate(const uint8_t *data, unsigned length) { + uint32_t crc32 = ~0; + for(unsigned i = 0; i < length; i++) { + crc32 = crc32_adjust(crc32, data[i]); + } + return ~crc32; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/detect.hpp b/libmednahawk/src/snes/src/lib/nall/detect.hpp new file mode 100644 index 0000000000..91d3a138d9 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/detect.hpp @@ -0,0 +1,30 @@ +#ifndef NALL_DETECT_HPP +#define NALL_DETECT_HPP + +/* Compiler detection */ + +#if defined(__GNUC__) + #define COMPILER_GCC +#elif defined(_MSC_VER) + #define COMPILER_VISUALC +#endif + +/* Platform detection */ + +#if defined(_WIN32) + #define PLATFORM_WIN +#elif defined(__APPLE__) + #define PLATFORM_OSX +#elif defined(linux) || defined(__sun__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) + #define PLATFORM_X +#endif + +/* Endian detection */ + +#if defined(__i386__) || defined(__amd64__) || defined(_M_IX86) || defined(_M_AMD64) + #define ARCH_LSB +#elif defined(__powerpc__) || defined(_M_PPC) || defined(__BIG_ENDIAN__) + #define ARCH_MSB +#endif + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/dictionary.hpp b/libmednahawk/src/snes/src/lib/nall/dictionary.hpp new file mode 100644 index 0000000000..f488c8cdf7 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/dictionary.hpp @@ -0,0 +1,73 @@ +#ifndef NALL_DICTIONARY_HPP +#define NALL_DICTIONARY_HPP + +#include +#include +#include + +namespace nall { + class dictionary : noncopyable { + public: + string operator[](const char *input) { + for(unsigned i = 0; i < index_input.size(); i++) { + if(index_input[i] == input) return index_output[i]; + } + + //no match, use input; remove input identifier, if one exists + if(strbegin(input, "{{")) { + int pos = strpos(input, "}}"); + if(pos >= 0) { + string temp = substr(input, pos + 2); + return temp; + } + } + + return input; + } + + bool import(const char *filename) { + string data; + if(data.readfile(filename) == false) return false; + ltrim_once(data, "\xef\xbb\xbf"); //remove UTF-8 marker, if it exists + data.replace("\r", ""); + + lstring line; + line.split("\n", data); + for(unsigned i = 0; i < line.size(); i++) { + lstring part; + //format: "Input" = "Output" + part.qsplit("=", line[i]); + if(part.size() != 2) continue; + + //remove whitespace + trim(part[0]); + trim(part[1]); + + //remove quotes + trim_once(part[0], "\""); + trim_once(part[1], "\""); + + unsigned n = index_input.size(); + index_input[n] = part[0]; + index_output[n] = part[1]; + } + + return true; + } + + void reset() { + index_input.reset(); + index_output.reset(); + } + + ~dictionary() { + reset(); + } + + protected: + lstring index_input; + lstring index_output; + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/dl.hpp b/libmednahawk/src/snes/src/lib/nall/dl.hpp new file mode 100644 index 0000000000..cb92f5d125 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/dl.hpp @@ -0,0 +1,116 @@ +#ifndef NALL_DL_HPP +#define NALL_DL_HPP + +//dynamic linking support + +#include +#include +#include +#include + +#if defined(PLATFORM_X) || defined(PLATFORM_OSX) + #include +#elif defined(PLATFORM_WIN) + #include + #include +#endif + +namespace nall { + struct library : noncopyable { + bool opened() const { return handle; } + bool open(const char*); + void* sym(const char*); + void close(); + + library() : handle(0) {} + ~library() { close(); } + + private: + uintptr_t handle; + }; + + #if defined(PLATFORM_X) + inline bool library::open(const char *name) { + if(handle) close(); + char *t = new char[strlen(name) + 256]; + strcpy(t, "lib"); + strcat(t, name); + strcat(t, ".so"); + handle = (uintptr_t)dlopen(t, RTLD_LAZY); + if(!handle) { + strcpy(t, "/usr/local/lib/lib"); + strcat(t, name); + strcat(t, ".so"); + handle = (uintptr_t)dlopen(t, RTLD_LAZY); + } + delete[] t; + return handle; + } + + inline void* library::sym(const char *name) { + if(!handle) return 0; + return dlsym((void*)handle, name); + } + + inline void library::close() { + if(!handle) return; + dlclose((void*)handle); + handle = 0; + } + #elif defined(PLATFORM_OSX) + inline bool library::open(const char *name) { + if(handle) close(); + char *t = new char[strlen(name) + 256]; + strcpy(t, "lib"); + strcat(t, name); + strcat(t, ".dylib"); + handle = (uintptr_t)dlopen(t, RTLD_LAZY); + if(!handle) { + strcpy(t, "/usr/local/lib/lib"); + strcat(t, name); + strcat(t, ".dylib"); + handle = (uintptr_t)dlopen(t, RTLD_LAZY); + } + delete[] t; + return handle; + } + + inline void* library::sym(const char *name) { + if(!handle) return 0; + return dlsym((void*)handle, name); + } + + inline void library::close() { + if(!handle) return; + dlclose((void*)handle); + handle = 0; + } + #elif defined(PLATFORM_WIN) + inline bool library::open(const char *name) { + if(handle) close(); + char *t = new char[strlen(name) + 8]; + strcpy(t, name); + strcat(t, ".dll"); + handle = (uintptr_t)LoadLibraryW(utf16_t(t)); + delete[] t; + return handle; + } + + inline void* library::sym(const char *name) { + if(!handle) return 0; + return (void*)GetProcAddress((HMODULE)handle, name); + } + + inline void library::close() { + if(!handle) return; + FreeLibrary((HMODULE)handle); + handle = 0; + } + #else + inline bool library::open(const char*) { return false; } + inline void* library::sym(const char*) { return 0; } + inline void library::close() {} + #endif +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/endian.hpp b/libmednahawk/src/snes/src/lib/nall/endian.hpp new file mode 100644 index 0000000000..d0e03388b7 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/endian.hpp @@ -0,0 +1,38 @@ +#ifndef NALL_ENDIAN_HPP +#define NALL_ENDIAN_HPP + +#if !defined(ARCH_MSB) + //little-endian: uint8_t[] { 0x01, 0x02, 0x03, 0x04 } == 0x04030201 + #define order_lsb2(a,b) a,b + #define order_lsb3(a,b,c) a,b,c + #define order_lsb4(a,b,c,d) a,b,c,d + #define order_lsb5(a,b,c,d,e) a,b,c,d,e + #define order_lsb6(a,b,c,d,e,f) a,b,c,d,e,f + #define order_lsb7(a,b,c,d,e,f,g) a,b,c,d,e,f,g + #define order_lsb8(a,b,c,d,e,f,g,h) a,b,c,d,e,f,g,h + #define order_msb2(a,b) b,a + #define order_msb3(a,b,c) c,b,a + #define order_msb4(a,b,c,d) d,c,b,a + #define order_msb5(a,b,c,d,e) e,d,c,b,a + #define order_msb6(a,b,c,d,e,f) f,e,d,c,b,a + #define order_msb7(a,b,c,d,e,f,g) g,f,e,d,c,b,a + #define order_msb8(a,b,c,d,e,f,g,h) h,g,f,e,d,c,b,a +#else + //big-endian: uint8_t[] { 0x01, 0x02, 0x03, 0x04 } == 0x01020304 + #define order_lsb2(a,b) b,a + #define order_lsb3(a,b,c) c,b,a + #define order_lsb4(a,b,c,d) d,c,b,a + #define order_lsb5(a,b,c,d,e) e,d,c,b,a + #define order_lsb6(a,b,c,d,e,f) f,e,d,c,b,a + #define order_lsb7(a,b,c,d,e,f,g) g,f,e,d,c,b,a + #define order_lsb8(a,b,c,d,e,f,g,h) h,g,f,e,d,c,b,a + #define order_msb2(a,b) a,b + #define order_msb3(a,b,c) a,b,c + #define order_msb4(a,b,c,d) a,b,c,d + #define order_msb5(a,b,c,d,e) a,b,c,d,e + #define order_msb6(a,b,c,d,e,f) a,b,c,d,e,f + #define order_msb7(a,b,c,d,e,f,g) a,b,c,d,e,f,g + #define order_msb8(a,b,c,d,e,f,g,h) a,b,c,d,e,f,g,h +#endif + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/file.hpp b/libmednahawk/src/snes/src/lib/nall/file.hpp new file mode 100644 index 0000000000..95f5737ff4 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/file.hpp @@ -0,0 +1,256 @@ +#ifndef NALL_FILE_HPP +#define NALL_FILE_HPP + +#include +#include + +#if !defined(_WIN32) + #include +#else + #include +#endif + +#include +#include +#include + +namespace nall { + inline FILE* fopen_utf8(const char *utf8_filename, const char *mode) { + #if !defined(_WIN32) + return fopen(utf8_filename, mode); + #else + return _wfopen(utf16_t(utf8_filename), utf16_t(mode)); + #endif + } + + class file : noncopyable { + public: + enum FileMode { mode_read, mode_write, mode_readwrite, mode_writeread }; + enum SeekMode { seek_absolute, seek_relative }; + + uint8_t read() { + if(!fp) return 0xff; //file not open + if(file_mode == mode_write) return 0xff; //reads not permitted + if(file_offset >= file_size) return 0xff; //cannot read past end of file + buffer_sync(); + return buffer[(file_offset++) & buffer_mask]; + } + + uintmax_t readl(unsigned length = 1) { + uintmax_t data = 0; + for(int i = 0; i < length; i++) { + data |= (uintmax_t)read() << (i << 3); + } + return data; + } + + uintmax_t readm(unsigned length = 1) { + uintmax_t data = 0; + while(length--) { + data <<= 8; + data |= read(); + } + return data; + } + + void read(uint8_t *buffer, unsigned length) { + while(length--) *buffer++ = read(); + } + + void write(uint8_t data) { + if(!fp) return; //file not open + if(file_mode == mode_read) return; //writes not permitted + buffer_sync(); + buffer[(file_offset++) & buffer_mask] = data; + buffer_dirty = true; + if(file_offset > file_size) file_size = file_offset; + } + + void writel(uintmax_t data, unsigned length = 1) { + while(length--) { + write(data); + data >>= 8; + } + } + + void writem(uintmax_t data, unsigned length = 1) { + for(int i = length - 1; i >= 0; i--) { + write(data >> (i << 3)); + } + } + + void write(const uint8_t *buffer, unsigned length) { + while(length--) write(*buffer++); + } + + void print(const char *string) { + if(!string) return; + while(*string) write(*string++); + } + + void flush() { + buffer_flush(); + fflush(fp); + } + + void seek(int offset, SeekMode mode = seek_absolute) { + if(!fp) return; //file not open + buffer_flush(); + + uintmax_t req_offset = file_offset; + switch(mode) { + case seek_absolute: req_offset = offset; break; + case seek_relative: req_offset += offset; break; + } + + if(req_offset < 0) req_offset = 0; //cannot seek before start of file + if(req_offset > file_size) { + if(file_mode == mode_read) { //cannot seek past end of file + req_offset = file_size; + } else { //pad file to requested location + file_offset = file_size; + while(file_size < req_offset) write(0x00); + } + } + + file_offset = req_offset; + } + + int offset() { + if(!fp) return -1; //file not open + return file_offset; + } + + int size() { + if(!fp) return -1; //file not open + return file_size; + } + + bool truncate(unsigned size) { + if(!fp) return false; //file not open + #if !defined(_WIN32) + return ftruncate(fileno(fp), size) == 0; + #else + return _chsize(fileno(fp), size) == 0; + #endif + } + + bool end() { + if(!fp) return true; //file not open + return file_offset >= file_size; + } + + static bool exists(const char *fn) { + #if !defined(_WIN32) + FILE *fp = fopen(fn, "rb"); + #else + FILE *fp = _wfopen(utf16_t(fn), L"rb"); + #endif + if(fp) { + fclose(fp); + return true; + } + return false; + } + + static unsigned size(const char *fn) { + #if !defined(_WIN32) + FILE *fp = fopen(fn, "rb"); + #else + FILE *fp = _wfopen(utf16_t(fn), L"rb"); + #endif + unsigned filesize = 0; + if(fp) { + fseek(fp, 0, SEEK_END); + filesize = ftell(fp); + fclose(fp); + } + return filesize; + } + + bool open() { + return fp; + } + + bool open(const char *fn, FileMode mode) { + if(fp) return false; + + switch(file_mode = mode) { + #if !defined(_WIN32) + case mode_read: fp = fopen(fn, "rb"); break; + case mode_write: fp = fopen(fn, "wb+"); break; //need read permission for buffering + case mode_readwrite: fp = fopen(fn, "rb+"); break; + case mode_writeread: fp = fopen(fn, "wb+"); break; + #else + case mode_read: fp = _wfopen(utf16_t(fn), L"rb"); break; + case mode_write: fp = _wfopen(utf16_t(fn), L"wb+"); break; + case mode_readwrite: fp = _wfopen(utf16_t(fn), L"rb+"); break; + case mode_writeread: fp = _wfopen(utf16_t(fn), L"wb+"); break; + #endif + } + if(!fp) return false; + buffer_offset = -1; //invalidate buffer + file_offset = 0; + fseek(fp, 0, SEEK_END); + file_size = ftell(fp); + fseek(fp, 0, SEEK_SET); + return true; + } + + void close() { + if(!fp) return; + buffer_flush(); + fclose(fp); + fp = 0; + } + + file() { + memset(buffer, 0, sizeof buffer); + buffer_offset = -1; + buffer_dirty = false; + fp = 0; + file_offset = 0; + file_size = 0; + file_mode = mode_read; + } + + ~file() { + close(); + } + + private: + enum { buffer_size = 1 << 12, buffer_mask = buffer_size - 1 }; + char buffer[buffer_size]; + int buffer_offset; + bool buffer_dirty; + FILE *fp; + unsigned file_offset; + unsigned file_size; + FileMode file_mode; + + void buffer_sync() { + if(!fp) return; //file not open + if(buffer_offset != (file_offset & ~buffer_mask)) { + buffer_flush(); + buffer_offset = file_offset & ~buffer_mask; + fseek(fp, buffer_offset, SEEK_SET); + unsigned length = (buffer_offset + buffer_size) <= file_size ? buffer_size : (file_size & buffer_mask); + if(length) unsigned unused = fread(buffer, 1, length, fp); + } + } + + void buffer_flush() { + if(!fp) return; //file not open + if(file_mode == mode_read) return; //buffer cannot be written to + if(buffer_offset < 0) return; //buffer unused + if(buffer_dirty == false) return; //buffer unmodified since read + fseek(fp, buffer_offset, SEEK_SET); + unsigned length = (buffer_offset + buffer_size) <= file_size ? buffer_size : (file_size & buffer_mask); + if(length) unsigned unused = fwrite(buffer, 1, length, fp); + buffer_offset = -1; //invalidate buffer + buffer_dirty = false; + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/filemap.hpp b/libmednahawk/src/snes/src/lib/nall/filemap.hpp new file mode 100644 index 0000000000..090ea29add --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/filemap.hpp @@ -0,0 +1,190 @@ +#ifndef NALL_FILEMAP_HPP +#define NALL_FILEMAP_HPP + +#include +#include + +#include +#include +#if defined(_WIN32) + #include +#else + #include + #include + #include + #include + #include +#endif + +namespace nall { + class filemap { + public: + enum filemode { mode_read, mode_write, mode_readwrite, mode_writeread }; + + bool open(const char *filename, filemode mode) { return p_open(filename, mode); } + void close() { return p_close(); } + unsigned size() const { return p_size; } + uint8_t* handle() { return p_handle; } + const uint8_t* handle() const { return p_handle; } + filemap() : p_size(0), p_handle(0) { p_ctor(); } + ~filemap() { p_dtor(); } + + private: + unsigned p_size; + uint8_t *p_handle; + + #if defined(_WIN32) + //============= + //MapViewOfFile + //============= + + HANDLE p_filehandle, p_maphandle; + + bool p_open(const char *filename, filemode mode) { + int desired_access, creation_disposition, flprotect, map_access; + + switch(mode) { + default: return false; + case mode_read: + desired_access = GENERIC_READ; + creation_disposition = OPEN_EXISTING; + flprotect = PAGE_READONLY; + map_access = FILE_MAP_READ; + break; + case mode_write: + //write access requires read access + desired_access = GENERIC_WRITE; + creation_disposition = CREATE_ALWAYS; + flprotect = PAGE_READWRITE; + map_access = FILE_MAP_ALL_ACCESS; + break; + case mode_readwrite: + desired_access = GENERIC_READ | GENERIC_WRITE; + creation_disposition = OPEN_EXISTING; + flprotect = PAGE_READWRITE; + map_access = FILE_MAP_ALL_ACCESS; + break; + case mode_writeread: + desired_access = GENERIC_READ | GENERIC_WRITE; + creation_disposition = CREATE_NEW; + flprotect = PAGE_READWRITE; + map_access = FILE_MAP_ALL_ACCESS; + break; + } + + p_filehandle = CreateFileW(utf16_t(filename), desired_access, FILE_SHARE_READ, NULL, + creation_disposition, FILE_ATTRIBUTE_NORMAL, NULL); + if(p_filehandle == INVALID_HANDLE_VALUE) return false; + + p_size = GetFileSize(p_filehandle, NULL); + + p_maphandle = CreateFileMapping(p_filehandle, NULL, flprotect, 0, p_size, NULL); + if(p_maphandle == INVALID_HANDLE_VALUE) { + CloseHandle(p_filehandle); + p_filehandle = INVALID_HANDLE_VALUE; + return false; + } + + p_handle = (uint8_t*)MapViewOfFile(p_maphandle, map_access, 0, 0, p_size); + return p_handle; + } + + void p_close() { + if(p_handle) { + UnmapViewOfFile(p_handle); + p_handle = 0; + } + + if(p_maphandle != INVALID_HANDLE_VALUE) { + CloseHandle(p_maphandle); + p_maphandle = INVALID_HANDLE_VALUE; + } + + if(p_filehandle != INVALID_HANDLE_VALUE) { + CloseHandle(p_filehandle); + p_filehandle = INVALID_HANDLE_VALUE; + } + } + + void p_ctor() { + p_filehandle = INVALID_HANDLE_VALUE; + p_maphandle = INVALID_HANDLE_VALUE; + } + + void p_dtor() { + close(); + } + + #else + //==== + //mmap + //==== + + int p_fd; + + bool p_open(const char *filename, filemode mode) { + int open_flags, mmap_flags; + + switch(mode) { + default: return false; + case mode_read: + open_flags = O_RDONLY; + mmap_flags = PROT_READ; + break; + case mode_write: + open_flags = O_RDWR | O_CREAT; //mmap() requires read access + mmap_flags = PROT_WRITE; + break; + case mode_readwrite: + open_flags = O_RDWR; + mmap_flags = PROT_READ | PROT_WRITE; + break; + case mode_writeread: + open_flags = O_RDWR | O_CREAT; + mmap_flags = PROT_READ | PROT_WRITE; + break; + } + + p_fd = ::open(filename, open_flags); + if(p_fd < 0) return false; + + struct stat p_stat; + fstat(p_fd, &p_stat); + p_size = p_stat.st_size; + + p_handle = (uint8_t*)mmap(0, p_size, mmap_flags, MAP_SHARED, p_fd, 0); + if(p_handle == MAP_FAILED) { + p_handle = 0; + ::close(p_fd); + p_fd = -1; + return false; + } + + return p_handle; + } + + void p_close() { + if(p_handle) { + munmap(p_handle, p_size); + p_handle = 0; + } + + if(p_fd >= 0) { + ::close(p_fd); + p_fd = -1; + } + } + + void p_ctor() { + p_fd = -1; + } + + void p_dtor() { + p_close(); + } + + #endif + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/function.hpp b/libmednahawk/src/snes/src/lib/nall/function.hpp new file mode 100644 index 0000000000..85082d5612 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/function.hpp @@ -0,0 +1,190 @@ +#ifndef NALL_FUNCTION_HPP +#define NALL_FUNCTION_HPP + +#include + +//prologue + +#define TN typename + +namespace nall { + template class function; +} + +//parameters = 0 + +#define cat(n) n +#define TL typename R +#define PL +#define CL + +#include "function.hpp" + +//parameters = 1 + +#define cat(n) , n +#define TL TN R, TN P1 +#define PL P1 p1 +#define CL p1 + +#include "function.hpp" + +//parameters = 2 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2 +#define PL P1 p1, P2 p2 +#define CL p1, p2 + +#include "function.hpp" + +//parameters = 3 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2, TN P3 +#define PL P1 p1, P2 p2, P3 p3 +#define CL p1, p2, p3 + +#include "function.hpp" + +//parameters = 4 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2, TN P3, TN P4 +#define PL P1 p1, P2 p2, P3 p3, P4 p4 +#define CL p1, p2, p3, p4 + +#include "function.hpp" + +//parameters = 5 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2, TN P3, TN P4, TN P5 +#define PL P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 +#define CL p1, p2, p3, p4, p5 + +#include "function.hpp" + +//parameters = 6 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2, TN P3, TN P4, TN P5, TN P6 +#define PL P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6 +#define CL p1, p2, p3, p4, p5, p6 + +#include "function.hpp" + +//parameters = 7 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2, TN P3, TN P4, TN P5, TN P6, TN P7 +#define PL P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7 +#define CL p1, p2, p3, p4, p5, p6, p7 + +#include "function.hpp" + +//parameters = 8 + +#define cat(n) , n +#define TL TN R, TN P1, TN P2, TN P3, TN P4, TN P5, TN P6, TN P7, TN P8 +#define PL P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8 +#define CL p1, p2, p3, p4, p5, p6, p7, p8 + +#include "function.hpp" + +//epilogue + +#undef TN +#define NALL_FUNCTION_T + +#elif !defined(NALL_FUNCTION_T) + +//function implementation template class + +namespace nall { + template + class function { + private: + struct base1 { virtual void func1(PL) {} }; + struct base2 { virtual void func2(PL) {} }; + struct derived : base1, virtual base2 {}; + + struct data_t { + R (*fn_call)(const data_t& cat(PL)); + union { + R (*fn_global)(PL); + struct { + R (derived::*fn_member)(PL); + void *object; + }; + }; + } data; + + static R fn_call_global(const data_t &d cat(PL)) { + return d.fn_global(CL); + } + + template + static R fn_call_member(const data_t &d cat(PL)) { + return (((C*)d.object)->*((R (C::*&)(PL))d.fn_member))(CL); + } + + public: + R operator()(PL) const { return data.fn_call(data cat(CL)); } + operator bool() const { return data.fn_call; } + + function() { data.fn_call = 0; } + + function(void *fn) { + data.fn_call = fn ? &fn_call_global : 0; + data.fn_global = (R (*)(PL))fn; + } + + function(R (*fn)(PL)) { + data.fn_call = &fn_call_global; + data.fn_global = fn; + } + + template + function(R (C::*fn)(PL), C *obj) { + data.fn_call = &fn_call_member; + (R (C::*&)(PL))data.fn_member = fn; + assert(sizeof data.fn_member >= sizeof fn); + data.object = obj; + } + + template + function(R (C::*fn)(PL) const, C *obj) { + data.fn_call = &fn_call_member; + (R (C::*&)(PL))data.fn_member = (R (C::*&)(PL))fn; + assert(sizeof data.fn_member >= sizeof fn); + data.object = obj; + } + + function& operator=(void *fn) { return operator=(function(fn)); } + function& operator=(const function &source) { memcpy(&data, &source.data, sizeof(data_t)); return *this; } + function(const function &source) { memcpy(&data, &source.data, sizeof(data_t)); } + }; + + template + function bind(R (*fn)(PL)) { + return function(fn); + } + + template + function bind(R (C::*fn)(PL), C *obj) { + return function(fn, obj); + } + + template + function bind(R (C::*fn)(PL) const, C *obj) { + return function(fn, obj); + } +} + +#undef cat +#undef TL +#undef PL +#undef CL + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/input.hpp b/libmednahawk/src/snes/src/lib/nall/input.hpp new file mode 100644 index 0000000000..388cc710c3 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/input.hpp @@ -0,0 +1,386 @@ +#ifndef NALL_INPUT_HPP +#define NALL_INPUT_HPP + +#include +#include +#include + +#include +#include + +namespace nall { + +struct Keyboard; +Keyboard& keyboard(unsigned = 0); + +static const char KeyboardScancodeName[][64] = { + "Escape", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", + "PrintScreen", "ScrollLock", "Pause", "Tilde", + "Num1", "Num2", "Num3", "Num4", "Num5", "Num6", "Num7", "Num8", "Num9", "Num0", + "Dash", "Equal", "Backspace", + "Insert", "Delete", "Home", "End", "PageUp", "PageDown", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "LeftBracket", "RightBracket", "Backslash", "Semicolon", "Apostrophe", "Comma", "Period", "Slash", + "Keypad1", "Keypad2", "Keypad3", "Keypad4", "Keypad5", "Keypad6", "Keypad7", "Keypad8", "Keypad9", "Keypad0", + "Point", "Enter", "Add", "Subtract", "Multiply", "Divide", + "NumLock", "CapsLock", + "Up", "Down", "Left", "Right", + "Tab", "Return", "Spacebar", "Menu", + "Shift", "Control", "Alt", "Super", +}; + +struct Keyboard { + const unsigned ID; + enum { Base = 1 }; + enum { Count = 8, Size = 128 }; + + enum Scancode { + Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + PrintScreen, ScrollLock, Pause, Tilde, + Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9, Num0, + Dash, Equal, Backspace, + Insert, Delete, Home, End, PageUp, PageDown, + A, B, C, D, E, F, G, H, I, J, K, L, M, + N, O, P, Q, R, S, T, U, V, W, X, Y, Z, + LeftBracket, RightBracket, Backslash, Semicolon, Apostrophe, Comma, Period, Slash, + Keypad1, Keypad2, Keypad3, Keypad4, Keypad5, Keypad6, Keypad7, Keypad8, Keypad9, Keypad0, + Point, Enter, Add, Subtract, Multiply, Divide, + NumLock, CapsLock, + Up, Down, Left, Right, + Tab, Return, Spacebar, Menu, + Shift, Control, Alt, Super, + Limit, + }; + + static signed numberDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(keyboard(i).belongsTo(scancode)) return i; + } + return -1; + } + + static signed keyDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(keyboard(i).isKey(scancode)) return scancode - keyboard(i).key(Escape); + } + return -1; + } + + static signed modifierDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(keyboard(i).isModifier(scancode)) return scancode - keyboard(i).key(Shift); + } + return -1; + } + + static bool isAnyKey(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(keyboard(i).isKey(scancode)) return true; + } + return false; + } + + static bool isAnyModifier(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(keyboard(i).isModifier(scancode)) return true; + } + return false; + } + + static uint16_t decode(const char *name) { + string s(name); + if(!strbegin(name, "KB")) return 0; + ltrim(s, "KB"); + unsigned id = strunsigned(s); + int pos = strpos(s, "::"); + if(pos < 0) return 0; + s = substr(s, pos + 2); + for(unsigned i = 0; i < Limit; i++) { + if(s == KeyboardScancodeName[i]) return Base + Size * id + i; + } + return 0; + } + + string encode(uint16_t code) const { + unsigned index = 0; + for(unsigned i = 0; i < Count; i++) { + if(code >= Base + Size * i && code < Base + Size * (i + 1)) { + index = code - (Base + Size * i); + break; + } + } + return string() << "KB" << ID << "::" << KeyboardScancodeName[index]; + } + + uint16_t operator[](Scancode code) const { return Base + ID * Size + code; } + uint16_t key(unsigned id) const { return Base + Size * ID + id; } + bool isKey(unsigned id) const { return id >= key(Escape) && id <= key(Menu); } + bool isModifier(unsigned id) const { return id >= key(Shift) && id <= key(Super); } + bool belongsTo(uint16_t scancode) const { return isKey(scancode) || isModifier(scancode); } + + Keyboard(unsigned ID_) : ID(ID_) {} +}; + +inline Keyboard& keyboard(unsigned id) { + static Keyboard kb0(0), kb1(1), kb2(2), kb3(3), kb4(4), kb5(5), kb6(6), kb7(7); + switch(id) { default: + case 0: return kb0; case 1: return kb1; case 2: return kb2; case 3: return kb3; + case 4: return kb4; case 5: return kb5; case 6: return kb6; case 7: return kb7; + } +} + +static const char MouseScancodeName[][64] = { + "Xaxis", "Yaxis", "Zaxis", + "Button0", "Button1", "Button2", "Button3", "Button4", "Button5", "Button6", "Button7", +}; + +struct Mouse; +Mouse& mouse(unsigned = 0); + +struct Mouse { + const unsigned ID; + enum { Base = Keyboard::Base + Keyboard::Size * Keyboard::Count }; + enum { Count = 8, Size = 16 }; + enum { Axes = 3, Buttons = 8 }; + + enum Scancode { + Xaxis, Yaxis, Zaxis, + Button0, Button1, Button2, Button3, Button4, Button5, Button6, Button7, + Limit, + }; + + static signed numberDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(mouse(i).belongsTo(scancode)) return i; + } + return -1; + } + + static signed axisDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(mouse(i).isAxis(scancode)) return scancode - mouse(i).axis(0); + } + return -1; + } + + static signed buttonDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(mouse(i).isButton(scancode)) return scancode - mouse(i).button(0); + } + return -1; + } + + static bool isAnyAxis(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(mouse(i).isAxis(scancode)) return true; + } + return false; + } + + static bool isAnyButton(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(mouse(i).isButton(scancode)) return true; + } + return false; + } + + static uint16_t decode(const char *name) { + string s(name); + if(!strbegin(name, "MS")) return 0; + ltrim(s, "MS"); + unsigned id = strunsigned(s); + int pos = strpos(s, "::"); + if(pos < 0) return 0; + s = substr(s, pos + 2); + for(unsigned i = 0; i < Limit; i++) { + if(s == MouseScancodeName[i]) return Base + Size * id + i; + } + return 0; + } + + string encode(uint16_t code) const { + unsigned index = 0; + for(unsigned i = 0; i < Count; i++) { + if(code >= Base + Size * i && code < Base + Size * (i + 1)) { + index = code - (Base + Size * i); + break; + } + } + return string() << "MS" << ID << "::" << MouseScancodeName[index]; + } + + uint16_t operator[](Scancode code) const { return Base + ID * Size + code; } + uint16_t axis(unsigned id) const { return Base + Size * ID + Xaxis + id; } + uint16_t button(unsigned id) const { return Base + Size * ID + Button0 + id; } + bool isAxis(unsigned id) const { return id >= axis(0) && id <= axis(2); } + bool isButton(unsigned id) const { return id >= button(0) && id <= button(7); } + bool belongsTo(uint16_t scancode) const { return isAxis(scancode) || isButton(scancode); } + + Mouse(unsigned ID_) : ID(ID_) {} +}; + +inline Mouse& mouse(unsigned id) { + static Mouse ms0(0), ms1(1), ms2(2), ms3(3), ms4(4), ms5(5), ms6(6), ms7(7); + switch(id) { default: + case 0: return ms0; case 1: return ms1; case 2: return ms2; case 3: return ms3; + case 4: return ms4; case 5: return ms5; case 6: return ms6; case 7: return ms7; + } +} + +static const char JoypadScancodeName[][64] = { + "Hat0", "Hat1", "Hat2", "Hat3", "Hat4", "Hat5", "Hat6", "Hat7", + "Axis0", "Axis1", "Axis2", "Axis3", "Axis4", "Axis5", "Axis6", "Axis7", + "Axis8", "Axis9", "Axis10", "Axis11", "Axis12", "Axis13", "Axis14", "Axis15", + "Button0", "Button1", "Button2", "Button3", "Button4", "Button5", "Button6", "Button7", + "Button8", "Button9", "Button10", "Button11", "Button12", "Button13", "Button14", "Button15", + "Button16", "Button17", "Button18", "Button19", "Button20", "Button21", "Button22", "Button23", + "Button24", "Button25", "Button26", "Button27", "Button28", "Button29", "Button30", "Button31", +}; + +struct Joypad; +Joypad& joypad(unsigned = 0); + +struct Joypad { + const unsigned ID; + enum { Base = Mouse::Base + Mouse::Size * Mouse::Count }; + enum { Count = 8, Size = 64 }; + enum { Hats = 8, Axes = 16, Buttons = 32 }; + + enum Scancode { + Hat0, Hat1, Hat2, Hat3, Hat4, Hat5, Hat6, Hat7, + Axis0, Axis1, Axis2, Axis3, Axis4, Axis5, Axis6, Axis7, + Axis8, Axis9, Axis10, Axis11, Axis12, Axis13, Axis14, Axis15, + Button0, Button1, Button2, Button3, Button4, Button5, Button6, Button7, + Button8, Button9, Button10, Button11, Button12, Button13, Button14, Button15, + Button16, Button17, Button18, Button19, Button20, Button21, Button22, Button23, + Button24, Button25, Button26, Button27, Button28, Button29, Button30, Button31, + Limit, + }; + + enum Hat { HatCenter = 0, HatUp = 1, HatRight = 2, HatDown = 4, HatLeft = 8 }; + + static signed numberDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).belongsTo(scancode)) return i; + } + return -1; + } + + static signed hatDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).isHat(scancode)) return scancode - joypad(i).hat(0); + } + return -1; + } + + static signed axisDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).isAxis(scancode)) return scancode - joypad(i).axis(0); + } + return -1; + } + + static signed buttonDecode(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).isButton(scancode)) return scancode - joypad(i).button(0); + } + return -1; + } + + static bool isAnyHat(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).isHat(scancode)) return true; + } + return false; + } + + static bool isAnyAxis(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).isAxis(scancode)) return true; + } + return false; + } + + static bool isAnyButton(uint16_t scancode) { + for(unsigned i = 0; i < Count; i++) { + if(joypad(i).isButton(scancode)) return true; + } + return false; + } + + static uint16_t decode(const char *name) { + string s(name); + if(!strbegin(name, "JP")) return 0; + ltrim(s, "JP"); + unsigned id = strunsigned(s); + int pos = strpos(s, "::"); + if(pos < 0) return 0; + s = substr(s, pos + 2); + for(unsigned i = 0; i < Limit; i++) { + if(s == JoypadScancodeName[i]) return Base + Size * id + i; + } + return 0; + } + + string encode(uint16_t code) const { + unsigned index = 0; + for(unsigned i = 0; i < Count; i++) { + if(code >= Base + Size * i && code < Base + Size * (i + 1)) { + index = code - (Base + Size * i); + } + } + return string() << "JP" << ID << "::" << JoypadScancodeName[index]; + } + + uint16_t operator[](Scancode code) const { return Base + ID * Size + code; } + uint16_t hat(unsigned id) const { return Base + Size * ID + Hat0 + id; } + uint16_t axis(unsigned id) const { return Base + Size * ID + Axis0 + id; } + uint16_t button(unsigned id) const { return Base + Size * ID + Button0 + id; } + bool isHat(unsigned id) const { return id >= hat(0) && id <= hat(7); } + bool isAxis(unsigned id) const { return id >= axis(0) && id <= axis(15); } + bool isButton(unsigned id) const { return id >= button(0) && id <= button(31); } + bool belongsTo(uint16_t scancode) const { return isHat(scancode) || isAxis(scancode) || isButton(scancode); } + + Joypad(unsigned ID_) : ID(ID_) {} +}; + +inline Joypad& joypad(unsigned id) { + static Joypad jp0(0), jp1(1), jp2(2), jp3(3), jp4(4), jp5(5), jp6(6), jp7(7); + switch(id) { default: + case 0: return jp0; case 1: return jp1; case 2: return jp2; case 3: return jp3; + case 4: return jp4; case 5: return jp5; case 6: return jp6; case 7: return jp7; + } +} + +struct Scancode { + enum { None = 0, Limit = Joypad::Base + Joypad::Size * Joypad::Count }; + + static uint16_t decode(const char *name) { + uint16_t code; + code = Keyboard::decode(name); + if(code) return code; + code = Mouse::decode(name); + if(code) return code; + code = Joypad::decode(name); + if(code) return code; + return None; + } + + static string encode(uint16_t code) { + for(unsigned i = 0; i < Keyboard::Count; i++) { + if(keyboard(i).belongsTo(code)) return keyboard(i).encode(code); + } + for(unsigned i = 0; i < Mouse::Count; i++) { + if(mouse(i).belongsTo(code)) return mouse(i).encode(code); + } + for(unsigned i = 0; i < Joypad::Count; i++) { + if(joypad(i).belongsTo(code)) return joypad(i).encode(code); + } + return "None"; + } +}; + +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/lzss.hpp b/libmednahawk/src/snes/src/lib/nall/lzss.hpp new file mode 100644 index 0000000000..1740ac9945 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/lzss.hpp @@ -0,0 +1,81 @@ +#ifndef NALL_LZSS_HPP +#define NALL_LZSS_HPP + +#include +#include +#include + +namespace nall { + class lzss { + public: + static bool encode(uint8_t *&output, unsigned &outlength, const uint8_t *input, unsigned inlength) { + output = new(zeromemory) uint8_t[inlength * 9 / 8 + 9]; + + unsigned i = 0, o = 0; + while(i < inlength) { + unsigned flagoffset = o++; + uint8_t flag = 0x00; + + for(unsigned b = 0; b < 8 && i < inlength; b++) { + unsigned longest = 0, pointer; + for(unsigned index = 1; index < 4096; index++) { + unsigned count = 0; + while(true) { + if(count >= 15 + 3) break; //verify pattern match is not longer than max length + if(i + count >= inlength) break; //verify pattern match does not read past end of input + if(i + count < index) break; //verify read is not before start of input + if(input[i + count] != input[i + count - index]) break; //verify pattern still matches + count++; + } + + if(count > longest) { + longest = count; + pointer = index; + } + } + + if(longest < 3) output[o++] = input[i++]; + else { + flag |= 1 << b; + uint16_t x = ((longest - 3) << 12) + pointer; + output[o++] = x; + output[o++] = x >> 8; + i += longest; + } + } + + output[flagoffset] = flag; + } + + outlength = o; + return true; + } + + static bool decode(uint8_t *&output, const uint8_t *input, unsigned length) { + output = new(zeromemory) uint8_t[length]; + + unsigned i = 0, o = 0; + while(o < length) { + uint8_t flag = input[i++]; + + for(unsigned b = 0; b < 8 && o < length; b++) { + if(!(flag & (1 << b))) output[o++] = input[i++]; + else { + uint16_t offset = input[i++]; + offset += input[i++] << 8; + uint16_t lookuplength = (offset >> 12) + 3; + offset &= 4095; + for(unsigned index = 0; index < lookuplength && o + index < length; index++) { + output[o + index] = output[o + index - offset]; + } + o += lookuplength; + } + } + } + + return true; + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/moduloarray.hpp b/libmednahawk/src/snes/src/lib/nall/moduloarray.hpp new file mode 100644 index 0000000000..d96d4cc2bf --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/moduloarray.hpp @@ -0,0 +1,40 @@ +#ifndef NALL_MODULO_HPP +#define NALL_MODULO_HPP + +#include + +namespace nall { + template class modulo_array { + public: + inline T operator[](int index) const { + return buffer[size + index]; + } + + inline T read(int index) const { + return buffer[size + index]; + } + + inline void write(unsigned index, const T value) { + buffer[index] = + buffer[index + size] = + buffer[index + size + size] = value; + } + + void serialize(serializer &s) { + s.array(buffer, size * 3); + } + + modulo_array() { + buffer = new T[size * 3](); + } + + ~modulo_array() { + delete[] buffer; + } + + private: + T *buffer; + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/platform.hpp b/libmednahawk/src/snes/src/lib/nall/platform.hpp new file mode 100644 index 0000000000..910959a1ce --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/platform.hpp @@ -0,0 +1,77 @@ +#ifndef NALL_PLATFORM_HPP +#define NALL_PLATFORM_HPP + +//========================= +//standard platform headers +//========================= + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) + #include + #include + #include + #undef interface +#else + #include + #include + #include +#endif + +//================== +//warning supression +//================== + +//Visual C++ +#if defined(_MSC_VER) + //disable libc "deprecation" warnings + #pragma warning(disable:4996) +#endif + +//================ +//POSIX compliance +//================ + +#if defined(_MSC_VER) + #define PATH_MAX _MAX_PATH + #define va_copy(dest, src) ((dest) = (src)) +#endif + +#if defined(_WIN32) + #define getcwd _getcwd + #define ftruncate _chsize + #define putenv _putenv + #define rmdir _rmdir + #define vsnprintf _vsnprintf + #define usleep(n) Sleep(n / 1000) +#endif + +//================ +//inline expansion +//================ + +#if defined(__GNUC__) + #define noinline __attribute__((noinline)) + #define inline inline + #define alwaysinline inline __attribute__((always_inline)) +#elif defined(_MSC_VER) + #define noinline __declspec(noinline) + #define inline inline + #define alwaysinline inline __forceinline +#else + #define noinline + #define inline inline + #define alwaysinline inline +#endif + +#endif + diff --git a/libmednahawk/src/snes/src/lib/nall/priorityqueue.hpp b/libmednahawk/src/snes/src/lib/nall/priorityqueue.hpp new file mode 100644 index 0000000000..da0037903d --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/priorityqueue.hpp @@ -0,0 +1,106 @@ +#ifndef NALL_PRIORITYQUEUE_HPP +#define NALL_PRIORITYQUEUE_HPP + +#include +#include +#include +#include + +namespace nall { + template void priority_queue_nocallback(type_t) {} + + //priority queue implementation using binary min-heap array; + //does not require normalize() function. + //O(1) find (tick) + //O(log n) insert (enqueue) + //O(log n) remove (dequeue) + template class priority_queue : noncopyable { + public: + inline void tick(unsigned ticks) { + basecounter += ticks; + while(heapsize && gte(basecounter, heap[0].counter)) callback(dequeue()); + } + + //counter is relative to current time (eg enqueue(64, ...) fires in 64 ticks); + //counter cannot exceed std::numeric_limits::max() >> 1. + void enqueue(unsigned counter, type_t event) { + unsigned child = heapsize++; + counter += basecounter; + + while(child) { + unsigned parent = (child - 1) >> 1; + if(gte(counter, heap[parent].counter)) break; + + heap[child].counter = heap[parent].counter; + heap[child].event = heap[parent].event; + child = parent; + } + + heap[child].counter = counter; + heap[child].event = event; + } + + type_t dequeue() { + type_t event(heap[0].event); + unsigned parent = 0; + unsigned counter = heap[--heapsize].counter; + + while(true) { + unsigned child = (parent << 1) + 1; + if(child >= heapsize) break; + if(child + 1 < heapsize && gte(heap[child].counter, heap[child + 1].counter)) child++; + if(gte(heap[child].counter, counter)) break; + + heap[parent].counter = heap[child].counter; + heap[parent].event = heap[child].event; + parent = child; + } + + heap[parent].counter = counter; + heap[parent].event = heap[heapsize].event; + return event; + } + + void reset() { + basecounter = 0; + heapsize = 0; + } + + void serialize(serializer &s) { + s.integer(basecounter); + s.integer(heapsize); + for(unsigned n = 0; n < heapcapacity; n++) { + s.integer(heap[n].counter); + s.integer(heap[n].event); + } + } + + priority_queue(unsigned size, function callback_ = &priority_queue_nocallback) + : callback(callback_) { + heap = new heap_t[size]; + heapcapacity = size; + reset(); + } + + ~priority_queue() { + delete[] heap; + } + + private: + function callback; + unsigned basecounter; + unsigned heapsize; + unsigned heapcapacity; + struct heap_t { + unsigned counter; + type_t event; + } *heap; + + //return true if x is greater than or equal to y + inline bool gte(unsigned x, unsigned y) { + return x - y < (std::numeric_limits::max() >> 1); + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/property.hpp b/libmednahawk/src/snes/src/lib/nall/property.hpp new file mode 100644 index 0000000000..04c97e031d --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/property.hpp @@ -0,0 +1,91 @@ +#ifndef NALL_PROPERTY_HPP +#define NALL_PROPERTY_HPP + +//nall::property implements ownership semantics into container classes +//example: property::readonly implies that only owner has full +//access to type; and all other code has readonly access. +// +//this code relies on extended friend semantics from C++0x to work, as it +//declares a friend class via a template paramter. it also exploits a bug in +//G++ 4.x to work even in C++98 mode. +// +//if compiling elsewhere, simply remove the friend class and private semantics + +//property can be used either of two ways: +//struct foo { +// property::readonly x; +// property::readwrite y; +//}; +//-or- +//struct foo : property { +// readonly x; +// readwrite y; +//}; + +//return types are const T& (byref) instead fo T (byval) to avoid major speed +//penalties for objects with expensive copy constructors + +//operator-> provides access to underlying object type: +//readonly foo; +//foo->bar(); +//... will call Object::bar(); + +//operator='s reference is constant so as to avoid leaking a reference handle +//that could bypass access restrictions + +//both constant and non-constant operators are provided, though it may be +//necessary to cast first, for instance: +//struct foo : property { readonly bar; } object; +//int main() { int value = const_cast(object); } + +//writeonly is useful for objects that have non-const reads, but const writes. +//however, to avoid leaking handles, the interface is very restricted. the only +//way to write is via operator=, which requires conversion via eg copy +//constructor. example: +//struct foo { +// foo(bool value) { ... } +//}; +//writeonly bar; +//bar = true; + +namespace nall { + template struct property { + template struct traits { typedef T type; }; + + template struct readonly { + const T* operator->() const { return &value; } + const T& operator()() const { return value; } + operator const T&() const { return value; } + private: + T* operator->() { return &value; } + operator T&() { return value; } + const T& operator=(const T& value_) { return value = value_; } + T value; + friend class traits::type; + }; + + template struct writeonly { + void operator=(const T& value_) { value = value_; } + private: + const T* operator->() const { return &value; } + const T& operator()() const { return value; } + operator const T&() const { return value; } + T* operator->() { return &value; } + operator T&() { return value; } + T value; + friend class traits::type; + }; + + template struct readwrite { + const T* operator->() const { return &value; } + const T& operator()() const { return value; } + operator const T&() const { return value; } + T* operator->() { return &value; } + operator T&() { return value; } + const T& operator=(const T& value_) { return value = value_; } + T value; + }; + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/serial.hpp b/libmednahawk/src/snes/src/lib/nall/serial.hpp new file mode 100644 index 0000000000..49e0bc1625 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/serial.hpp @@ -0,0 +1,80 @@ +#ifndef NALL_SERIAL_HPP +#define NALL_SERIAL_HPP + +#include +#include +#include +#include + +#include + +namespace nall { + class serial { + public: + //-1 on error, otherwise return bytes read + int read(uint8_t *data, unsigned length) { + if(port_open == false) return -1; + return ::read(port, (void*)data, length); + } + + //-1 on error, otherwise return bytes written + int write(const uint8_t *data, unsigned length) { + if(port_open == false) return -1; + return ::write(port, (void*)data, length); + } + + bool open(const char *portname, unsigned rate) { + close(); + + port = ::open(portname, O_RDWR | O_NOCTTY | O_NDELAY | O_NONBLOCK); + if(port == -1) return false; + + if(ioctl(port, TIOCEXCL) == -1) { close(); return false; } + if(fcntl(port, F_SETFL, 0) == -1) { close(); return false; } + if(tcgetattr(port, &original_attr) == -1) { close(); return false; } + + termios attr = original_attr; + cfmakeraw(&attr); + cfsetspeed(&attr, rate); + + attr.c_lflag &=~ (ECHO | ECHONL | ISIG | ICANON | IEXTEN); + attr.c_iflag &=~ (BRKINT | PARMRK | INPCK | ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXOFF | IXANY); + attr.c_iflag |= (IGNBRK | IGNPAR); + attr.c_oflag &=~ (OPOST); + attr.c_cflag &=~ (CSIZE | CSTOPB | PARENB); + attr.c_cflag |= (CS8 | CREAD | CLOCAL); + attr.c_cc[VTIME] = attr.c_cc[VMIN] = 0; + + if(tcsetattr(port, TCSANOW, &attr) == -1) { close(); return false; } + return port_open = true; + } + + void close() { + if(port != -1) { + tcdrain(port); + if(port_open == true) { + tcsetattr(port, TCSANOW, &original_attr); + port_open = false; + } + ::close(port); + port = -1; + } + } + + serial() { + port = -1; + port_open = false; + } + + ~serial() { + close(); + } + + private: + int port; + bool port_open; + termios original_attr; + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/serializer.hpp b/libmednahawk/src/snes/src/lib/nall/serializer.hpp new file mode 100644 index 0000000000..39b3b694a8 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/serializer.hpp @@ -0,0 +1,126 @@ +#ifndef NALL_SERIALIZER_HPP +#define NALL_SERIALIZER_HPP + +#include +#include +#include + +namespace nall { + + //serializer: a class designed to save and restore the state of classes. + // + //benefits: + //- data() will be portable in size (it is not necessary to specify type sizes.) + //- data() will be portable in endianness (always stored internally as little-endian.) + //- one serialize function can both save and restore class states. + // + //caveats: + //- only plain-old-data can be stored. complex classes must provide serialize(serializer&); + //- floating-point usage is not portable across platforms + + class serializer { + public: + enum mode_t { Load, Save, Size }; + + mode_t mode() const { + return imode; + } + + const uint8_t* data() const { + return idata; + } + + unsigned size() const { + return isize; + } + + unsigned capacity() const { + return icapacity; + } + + template void floatingpoint(T &value) { + enum { size = sizeof(T) }; + //this is rather dangerous, and not cross-platform safe; + //but there is no standardized way to export FP-values + uint8_t *p = (uint8_t*)&value; + if(imode == Save) { + for(unsigned n = 0; n < size; n++) idata[isize++] = p[n]; + } else if(imode == Load) { + for(unsigned n = 0; n < size; n++) p[n] = idata[isize++]; + } else { + isize += size; + } + } + + template void integer(T &value) { + enum { size = is_bool::value ? 1 : sizeof(T) }; + if(imode == Save) { + for(unsigned n = 0; n < size; n++) idata[isize++] = (uint64_t)value >> (n << 3); + } else if(imode == Load) { + value = 0; + for(unsigned n = 0; n < size; n++) value |= (uint64_t)idata[isize++] << (n << 3); + } else if(imode == Size) { + isize += size; + } + } + + template void array(T &array) { + enum { size = sizeof(T) / sizeof(typename remove_extent::type) }; + for(unsigned n = 0; n < size; n++) integer(array[n]); + } + + template void array(T array, unsigned size) { + for(unsigned n = 0; n < size; n++) integer(array[n]); + } + + serializer& operator=(const serializer &s) { + if(idata) delete[] idata; + + imode = s.imode; + idata = new uint8_t[s.icapacity]; + isize = s.isize; + icapacity = s.icapacity; + + memcpy(idata, s.idata, s.icapacity); + return *this; + } + + serializer(const serializer &s) : idata(0) { + operator=(s); + } + + serializer() { + imode = Size; + idata = 0; + isize = 0; + } + + serializer(unsigned capacity) { + imode = Save; + idata = new uint8_t[capacity](); + isize = 0; + icapacity = capacity; + } + + serializer(const uint8_t *data, unsigned capacity) { + imode = Load; + idata = new uint8_t[capacity]; + isize = 0; + icapacity = capacity; + memcpy(idata, data, capacity); + } + + ~serializer() { + if(idata) delete[] idata; + } + + private: + mode_t imode; + uint8_t *idata; + unsigned isize; + unsigned icapacity; + }; + +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/sha256.hpp b/libmednahawk/src/snes/src/lib/nall/sha256.hpp new file mode 100644 index 0000000000..7ca4657652 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/sha256.hpp @@ -0,0 +1,143 @@ +#ifndef NALL_SHA256_HPP +#define NALL_SHA256_HPP + +//author: vladitx + +namespace nall { + #define PTR(t, a) ((t*)(a)) + + #define SWAP32(x) ((uint32_t)( \ + (((uint32_t)(x) & 0x000000ff) << 24) | \ + (((uint32_t)(x) & 0x0000ff00) << 8) | \ + (((uint32_t)(x) & 0x00ff0000) >> 8) | \ + (((uint32_t)(x) & 0xff000000) >> 24) \ + )) + + #define ST32(a, d) *PTR(uint32_t, a) = (d) + #define ST32BE(a, d) ST32(a, SWAP32(d)) + + #define LD32(a) *PTR(uint32_t, a) + #define LD32BE(a) SWAP32(LD32(a)) + + #define LSL32(x, n) ((uint32_t)(x) << (n)) + #define LSR32(x, n) ((uint32_t)(x) >> (n)) + #define ROR32(x, n) (LSR32(x, n) | LSL32(x, 32 - (n))) + + //first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19 + static const uint32_t T_H[8] = { + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, + }; + + //first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311 + static const uint32_t T_K[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, + }; + + struct sha256_ctx { + uint8_t in[64]; + unsigned inlen; + + uint32_t w[64]; + uint32_t h[8]; + uint64_t len; + }; + + void sha256_init(sha256_ctx *p) { + memset(p, 0, sizeof(sha256_ctx)); + memcpy(p->h, T_H, sizeof(T_H)); + } + + static void sha256_block(sha256_ctx *p) { + unsigned i; + uint32_t s0, s1; + uint32_t a, b, c, d, e, f, g, h; + uint32_t t1, t2, maj, ch; + + for(i = 0; i < 16; i++) p->w[i] = LD32BE(p->in + i * 4); + + for(i = 16; i < 64; i++) { + s0 = ROR32(p->w[i - 15], 7) ^ ROR32(p->w[i - 15], 18) ^ LSR32(p->w[i - 15], 3); + s1 = ROR32(p->w[i - 2], 17) ^ ROR32(p->w[i - 2], 19) ^ LSR32(p->w[i - 2], 10); + p->w[i] = p->w[i - 16] + s0 + p->w[i - 7] + s1; + } + + a = p->h[0]; b = p->h[1]; c = p->h[2]; d = p->h[3]; + e = p->h[4]; f = p->h[5]; g = p->h[6]; h = p->h[7]; + + for(i = 0; i < 64; i++) { + s0 = ROR32(a, 2) ^ ROR32(a, 13) ^ ROR32(a, 22); + maj = (a & b) ^ (a & c) ^ (b & c); + t2 = s0 + maj; + s1 = ROR32(e, 6) ^ ROR32(e, 11) ^ ROR32(e, 25); + ch = (e & f) ^ (~e & g); + t1 = h + s1 + ch + T_K[i] + p->w[i]; + + h = g; g = f; f = e; e = d + t1; + d = c; c = b; b = a; a = t1 + t2; + } + + p->h[0] += a; p->h[1] += b; p->h[2] += c; p->h[3] += d; + p->h[4] += e; p->h[5] += f; p->h[6] += g; p->h[7] += h; + + //next block + p->inlen = 0; + } + + void sha256_chunk(sha256_ctx *p, const uint8_t *s, unsigned len) { + unsigned l; + p->len += len; + + while(len) { + l = 64 - p->inlen; + l = (len < l) ? len : l; + + memcpy(p->in + p->inlen, s, l); + s += l; + p->inlen += l; + len -= l; + + if(p->inlen == 64) sha256_block(p); + } + } + + void sha256_final(sha256_ctx *p) { + uint64_t len; + p->in[p->inlen++] = 0x80; + + if(p->inlen > 56) { + memset(p->in + p->inlen, 0, 64 - p->inlen); + sha256_block(p); + } + + memset(p->in + p->inlen, 0, 56 - p->inlen); + + len = p->len << 3; + ST32BE(p->in + 56, len >> 32); + ST32BE(p->in + 60, len); + sha256_block(p); + } + + void sha256_hash(sha256_ctx *p, uint8_t *s) { + uint32_t *t = (uint32_t*)s; + for(unsigned i = 0; i < 8; i++) ST32BE(t++, p->h[i]); + } + + #undef PTR + #undef SWAP32 + #undef ST32 + #undef ST32BE + #undef LD32 + #undef LD32BE + #undef LSL32 + #undef LSR32 + #undef ROR32 +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/sort.hpp b/libmednahawk/src/snes/src/lib/nall/sort.hpp new file mode 100644 index 0000000000..79d20210be --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/sort.hpp @@ -0,0 +1,62 @@ +#ifndef NALL_SORT_HPP +#define NALL_SORT_HPP + +#include + +//class: merge sort +//average: O(n log n) +//worst: O(n log n) +//memory: O(n) +//stack: O(log n) +//stable?: yes + +//notes: +//there are two primary reasons for choosing merge sort +//over the (usually) faster quick sort*: +//1: it is a stable sort. +//2: it lacks O(n^2) worst-case overhead. +//(* which is also O(n log n) in the average case.) + +namespace nall { + template + void sort(T list[], unsigned length) { + if(length <= 1) return; //nothing to sort + + //use insertion sort to quickly sort smaller blocks + if(length < 64) { + for(unsigned i = 0; i < length; i++) { + unsigned min = i; + for(unsigned j = i + 1; j < length; j++) { + if(list[j] < list[min]) min = j; + } + if(min != i) swap(list[i], list[min]); + } + return; + } + + //split list in half and recursively sort both + unsigned middle = length / 2; + sort(list, middle); + sort(list + middle, length - middle); + + //left and right are sorted here; perform merge sort + T *buffer = new T[length]; + unsigned offset = 0; + unsigned left = 0; + unsigned right = middle; + while(left < middle && right < length) { + if(list[left] < list[right]) { + buffer[offset++] = list[left++]; + } else { + buffer[offset++] = list[right++]; + } + } + while(left < middle) buffer[offset++] = list[left++]; + while(right < length) buffer[offset++] = list[right++]; + + for(unsigned i = 0; i < length; i++) list[i] = buffer[i]; + delete[] buffer; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/static.hpp b/libmednahawk/src/snes/src/lib/nall/static.hpp new file mode 100644 index 0000000000..42db3480fb --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/static.hpp @@ -0,0 +1,17 @@ +#ifndef NALL_STATIC_HPP +#define NALL_STATIC_HPP + +namespace nall { + template struct nall_static_assert; + template<> struct nall_static_assert {}; + + template struct static_if { + typedef true_type type; + }; + + template struct static_if { + typedef false_type type; + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/stdint.hpp b/libmednahawk/src/snes/src/lib/nall/stdint.hpp new file mode 100644 index 0000000000..23e90f922e --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/stdint.hpp @@ -0,0 +1,44 @@ +#ifndef NALL_STDINT_HPP +#define NALL_STDINT_HPP + +#include + +#if defined(_MSC_VER) + typedef signed char int8_t; + typedef signed short int16_t; + typedef signed int int32_t; + typedef signed long long int64_t; + typedef int64_t intmax_t; + #if defined(_WIN64) + typedef int64_t intptr_t; + #else + typedef int32_t intptr_t; + #endif + + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + typedef unsigned long long uint64_t; + typedef uint64_t uintmax_t; + #if defined(_WIN64) + typedef uint64_t uintptr_t; + #else + typedef uint32_t uintptr_t; + #endif +#else + #include +#endif + +namespace nall { + static nall_static_assert int8_t_assert; + static nall_static_assert int16_t_assert; + static nall_static_assert int32_t_assert; + static nall_static_assert int64_t_assert; + + static nall_static_assert uint8_t_assert; + static nall_static_assert uint16_t_assert; + static nall_static_assert uint32_t_assert; + static nall_static_assert uint64_t_assert; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string.hpp b/libmednahawk/src/snes/src/lib/nall/string.hpp new file mode 100644 index 0000000000..c5d96ef7f7 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string.hpp @@ -0,0 +1,18 @@ +#ifndef NALL_STRING_HPP +#define NALL_STRING_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/base.hpp b/libmednahawk/src/snes/src/lib/nall/string/base.hpp new file mode 100644 index 0000000000..2d40b66055 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/base.hpp @@ -0,0 +1,122 @@ +#ifndef NALL_STRING_BASE_HPP +#define NALL_STRING_BASE_HPP + +#include +#include +#include +#include +#include +#include +#include + +inline char chrlower(char c); +inline char chrupper(char c); +inline int stricmp(const char *dest, const char *src); +inline int strpos (const char *str, const char *key); +inline int qstrpos(const char *str, const char *key); +inline bool strbegin (const char *str, const char *key); +inline bool stribegin(const char *str, const char *key); +inline bool strend (const char *str, const char *key); +inline bool striend(const char *str, const char *key); +inline char* strlower(char *str); +inline char* strupper(char *str); +inline char* strtr(char *dest, const char *before, const char *after); +inline uintmax_t strhex (const char *str); +inline intmax_t strsigned (const char *str); +inline uintmax_t strunsigned(const char *str); +inline uintmax_t strbin (const char *str); +inline double strdouble (const char *str); +inline size_t strhex (char *str, uintmax_t value, size_t length = 0); +inline size_t strsigned (char *str, intmax_t value, size_t length = 0); +inline size_t strunsigned(char *str, uintmax_t value, size_t length = 0); +inline size_t strbin (char *str, uintmax_t value, size_t length = 0); +inline size_t strdouble (char *str, double value, size_t length = 0); +inline bool match(const char *pattern, const char *str); +inline bool strint (const char *str, int &result); +inline bool strmath(const char *str, int &result); +inline size_t strlcpy(char *dest, const char *src, size_t length); +inline size_t strlcat(char *dest, const char *src, size_t length); +inline char* ltrim(char *str, const char *key = " "); +inline char* rtrim(char *str, const char *key = " "); +inline char* trim (char *str, const char *key = " "); +inline char* ltrim_once(char *str, const char *key = " "); +inline char* rtrim_once(char *str, const char *key = " "); +inline char* trim_once (char *str, const char *key = " "); + +namespace nall { + class string; + template inline string to_string(T); + + class string { + public: + static string printf(const char*, ...); + + inline void reserve(size_t); + inline unsigned length() const; + + inline string& assign(const char*); + inline string& append(const char*); + template inline string& operator= (T value); + template inline string& operator<<(T value); + + inline operator const char*() const; + inline char* operator()(); + inline char& operator[](int); + + inline bool operator==(const char*) const; + inline bool operator!=(const char*) const; + inline bool operator< (const char*) const; + inline bool operator<=(const char*) const; + inline bool operator> (const char*) const; + inline bool operator>=(const char*) const; + + inline string(); + inline string(const char*); + inline string(const string&); + inline string& operator=(const string&); + inline ~string(); + + inline bool readfile(const char*); + inline string& replace (const char*, const char*); + inline string& qreplace(const char*, const char*); + + protected: + char *data; + size_t size; + + #if defined(QT_CORE_LIB) + public: + inline operator QString() const; + #endif + }; + + class lstring : public vector { + public: + template inline lstring& operator<<(T value); + + inline int find(const char*); + inline void split (const char*, const char*, unsigned = 0); + inline void qsplit(const char*, const char*, unsigned = 0); + }; +}; + +inline size_t strlcpy(nall::string &dest, const char *src, size_t length); +inline size_t strlcat(nall::string &dest, const char *src, size_t length); +inline nall::string& strlower(nall::string &str); +inline nall::string& strupper(nall::string &str); +inline nall::string& strtr(nall::string &dest, const char *before, const char *after); +inline nall::string& ltrim(nall::string &str, const char *key = " "); +inline nall::string& rtrim(nall::string &str, const char *key = " "); +inline nall::string& trim (nall::string &str, const char *key = " "); +inline nall::string& ltrim_once(nall::string &str, const char *key = " "); +inline nall::string& rtrim_once(nall::string &str, const char *key = " "); +inline nall::string& trim_once (nall::string &str, const char *key = " "); + +inline nall::string substr(const char *src, size_t start = 0, size_t length = 0); +inline nall::string strhex (uintmax_t value); +inline nall::string strsigned (intmax_t value); +inline nall::string strunsigned(uintmax_t value); +inline nall::string strbin (uintmax_t value); +inline nall::string strdouble (double value); + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/cast.hpp b/libmednahawk/src/snes/src/lib/nall/string/cast.hpp new file mode 100644 index 0000000000..9d512d6dbd --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/cast.hpp @@ -0,0 +1,30 @@ +#ifndef NALL_STRING_CAST_HPP +#define NALL_STRING_CAST_HPP + +namespace nall { + //this is needed, as C++98 does not support explicit template specialization inside classes; + //redundant memory allocation should hopefully be avoided via compiler optimizations. + template<> inline string to_string (bool v) { return v ? "true" : "false"; } + template<> inline string to_string (signed int v) { return strsigned(v); } + template<> inline string to_string (unsigned int v) { return strunsigned(v); } + template<> inline string to_string (double v) { return strdouble(v); } + template<> inline string to_string (char *v) { return v; } + template<> inline string to_string (const char *v) { return v; } + template<> inline string to_string (string v) { return v; } + template<> inline string to_string(const string &v) { return v; } + + template string& string::operator= (T value) { return assign(to_string(value)); } + template string& string::operator<<(T value) { return append(to_string(value)); } + + template lstring& lstring::operator<<(T value) { + operator[](size()).assign(to_string(value)); + return *this; + } + + #if defined(QT_CORE_LIB) + template<> inline string to_string(const QString &v) { return v.toUtf8().constData(); } + string::operator QString() const { return QString::fromUtf8(*this); } + #endif +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/compare.hpp b/libmednahawk/src/snes/src/lib/nall/string/compare.hpp new file mode 100644 index 0000000000..acf46e733a --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/compare.hpp @@ -0,0 +1,100 @@ +#ifndef NALL_STRING_COMPARE_HPP +#define NALL_STRING_COMPARE_HPP + +char chrlower(char c) { + return (c >= 'A' && c <= 'Z') ? c + ('a' - 'A') : c; +} + +char chrupper(char c) { + return (c >= 'a' && c <= 'z') ? c - ('a' - 'A') : c; +} + +int stricmp(const char *dest, const char *src) { + while(*dest) { + if(chrlower(*dest) != chrlower(*src)) break; + dest++; + src++; + } + + return (int)chrlower(*dest) - (int)chrlower(*src); +} + +int strpos(const char *str, const char *key) { + int ssl = strlen(str), ksl = strlen(key); + + if(ksl > ssl) return -1; + for(int i = 0; i <= ssl - ksl; i++) { + if(!memcmp(str + i, key, ksl)) { + return i; + } + } + return -1; +} + +int qstrpos(const char *str, const char *key) { + int ssl = strlen(str), ksl = strlen(key); + + if(ksl > ssl) return -1; + for(int i = 0; i <= ssl - ksl;) { + uint8_t x = str[i]; + if(x == '\"' || x == '\'') { + uint8_t z = i++; + while(str[i] != x && i < ssl) i++; + if(i >= ssl) i = z; + } + if(!memcmp(str + i, key, ksl)) { + return i; + } else { + i++; + } + } + return -1; +} + +bool strbegin(const char *str, const char *key) { + int i, ssl = strlen(str), ksl = strlen(key); + + if(ksl > ssl) return false; + return (!memcmp(str, key, ksl)); +} + +bool stribegin(const char *str, const char *key) { + int ssl = strlen(str), ksl = strlen(key); + + if(ksl > ssl) return false; + for(int i = 0; i < ksl; i++) { + if(str[i] >= 'A' && str[i] <= 'Z') { + if(str[i] != key[i] && str[i]+0x20 != key[i])return false; + } else if(str[i] >= 'a' && str[i] <= 'z') { + if(str[i] != key[i] && str[i]-0x20 != key[i])return false; + } else { + if(str[i] != key[i])return false; + } + } + return true; +} + +bool strend(const char *str, const char *key) { + int ssl = strlen(str), ksl = strlen(key); + + if(ksl > ssl) return false; + return (!memcmp(str + ssl - ksl, key, ksl)); +} + +bool striend(const char *str, const char *key) { + int ssl = strlen(str), ksl = strlen(key); + + if(ksl > ssl) return false; + for(int i = ssl - ksl, z = 0; i < ssl; i++, z++) { + if(str[i] >= 'A' && str[i] <= 'Z') { + if(str[i] != key[z] && str[i]+0x20 != key[z])return false; + } else if(str[i] >= 'a' && str[i] <= 'z') { + if(str[i] != key[z] && str[i]-0x20 != key[z])return false; + } else { + if(str[i] != key[z])return false; + } + } + return true; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/convert.hpp b/libmednahawk/src/snes/src/lib/nall/string/convert.hpp new file mode 100644 index 0000000000..15383650e2 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/convert.hpp @@ -0,0 +1,285 @@ +#ifndef NALL_STRING_CONVERT_HPP +#define NALL_STRING_CONVERT_HPP + +char* strlower(char *str) { + if(!str) return 0; + int i = 0; + while(str[i]) { + str[i] = chrlower(str[i]); + i++; + } + return str; +} + +char* strupper(char *str) { + if(!str) return 0; + int i = 0; + while(str[i]) { + str[i] = chrupper(str[i]); + i++; + } + return str; +} + +char* strtr(char *dest, const char *before, const char *after) { + if(!dest || !before || !after) return dest; + int sl = strlen(dest), bsl = strlen(before), asl = strlen(after); + + if(bsl != asl || bsl == 0) return dest; //patterns must be the same length for 1:1 replace + for(unsigned i = 0; i < sl; i++) { + for(unsigned l = 0; l < bsl; l++) { + if(dest[i] == before[l]) { + dest[i] = after[l]; + break; + } + } + } + + return dest; +} + +uintmax_t strhex(const char *str) { + if(!str) return 0; + uintmax_t result = 0; + + //skip hex identifiers 0x and $, if present + if(*str == '0' && (*(str + 1) == 'X' || *(str + 1) == 'x')) str += 2; + else if(*str == '$') str++; + + while(*str) { + uint8_t x = *str++; + if(x >= '0' && x <= '9') x -= '0'; + else if(x >= 'A' && x <= 'F') x -= 'A' - 10; + else if(x >= 'a' && x <= 'f') x -= 'a' - 10; + else break; //stop at first invalid character + result = result * 16 + x; + } + + return result; +} + +intmax_t strsigned(const char *str) { + if(!str) return 0; + intmax_t result = 0; + bool negate = false; + + //check for negation + if(*str == '-') { + negate = true; + str++; + } + + while(*str) { + uint8_t x = *str++; + if(x >= '0' && x <= '9') x -= '0'; + else break; //stop at first invalid character + result = result * 10 + x; + } + + return !negate ? result : -result; +} + +uintmax_t strunsigned(const char *str) { + if(!str) return 0; + uintmax_t result = 0; + + while(*str) { + uint8_t x = *str++; + if(x >= '0' && x <= '9') x -= '0'; + else break; //stop at first invalid character + result = result * 10 + x; + } + + return result; +} + +uintmax_t strbin(const char *str) { + if(!str) return 0; + uintmax_t result = 0; + + //skip bin identifiers 0b and %, if present + if(*str == '0' && (*(str + 1) == 'B' || *(str + 1) == 'b')) str += 2; + else if(*str == '%') str++; + + while(*str) { + uint8_t x = *str++; + if(x == '0' || x == '1') x -= '0'; + else break; //stop at first invalid character + result = result * 2 + x; + } + + return result; +} + +double strdouble(const char *str) { + if(!str) return 0.0; + bool negate = false; + + //check for negation + if(*str == '-') { + negate = true; + str++; + } + + intmax_t result_integral = 0; + while(*str) { + uint8_t x = *str++; + if(x >= '0' && x <= '9') x -= '0'; + else if(x == '.') break; //break loop and read fractional part + else return (double)result_integral; //invalid value, assume no fractional part + result_integral = result_integral * 10 + x; + } + + intmax_t result_fractional = 0; + while(*str) { + uint8_t x = *str++; + if(x >= '0' && x <= '9') x -= '0'; + else break; //stop at first invalid character + result_fractional = result_fractional * 10 + x; + } + + //calculate fractional portion + double result = (double)result_fractional; + while((uintmax_t)result > 0) result /= 10.0; + result += (double)result_integral; + + return !negate ? result : -result; +} + +// + +size_t strhex(char *str, uintmax_t value, size_t length /* = 0 */) { + if(length == 0) length -= 1U; //"infinite" length + size_t initial_length = length; + + //count number of digits in value + int digits_integral = 1; + uintmax_t digits_integral_ = value; + while(digits_integral_ /= 16) digits_integral++; + + int digits = digits_integral; + if(!str) return digits + 1; //only computing required length? + + length = nall::min(digits, length - 1); + str += length; //seek to end of target string + *str = 0; //set null terminator + + while(length--) { + uint8_t x = value % 16; + value /= 16; + *--str = x < 10 ? (x + '0') : (x + 'a' - 10); //iterate backwards to write string + } + + return nall::min(initial_length, digits + 1); +} + +size_t strsigned(char *str, intmax_t value_, size_t length /* = 0 */) { + if(length == 0) length = -1U; //"infinite" length + size_t initial_length = length; + + bool negate = value_ < 0; + uintmax_t value = value_ >= 0 ? value_ : -value_; + + //count number of digits in value + int digits_integral = 1; + uintmax_t digits_integral_ = value; + while(digits_integral_ /= 10) digits_integral++; + + int digits = (negate ? 1 : 0) + digits_integral; + if(!str) return digits + 1; //only computing required length? + + length = nall::min(digits, length - 1); + str += length; //seek to end of target string + *str = 0; //set null terminator + while(length && digits_integral--) { + uint8_t x = '0' + (value % 10); + value /= 10; + *--str = x; //iterate backwards to write string + length--; + } + + if(length && negate) { + *--str = '-'; + } + + return nall::min(initial_length, digits + 1); +} + +size_t strunsigned(char *str, uintmax_t value, size_t length /* = 0 */) { + if(length == 0) length = -1U; //"infinite" length + size_t initial_length = length; + + //count number of digits in value + int digits_integral = 1; + uintmax_t digits_integral_ = value; + while(digits_integral_ /= 10) digits_integral++; + + int digits = digits_integral; + if(!str) return digits_integral + 1; //only computing required length? + + length = nall::min(digits, length - 1); + str += length; //seek to end of target string + *str = 0; //set null terminator + + while(length--) { + uint8_t x = '0' + (value % 10); + value /= 10; + *--str = x; //iterate backwards to write string + } + + return nall::min(initial_length, digits + 1); +} + +size_t strbin(char *str, uintmax_t value, size_t length /* = 0 */) { + if(length == 0) length = -1U; //"infinite" length + size_t initial_length = length; + + //count number of digits in value + int digits_integral = 1; + uintmax_t digits_integral_ = value; + while(digits_integral_ /= 2) digits_integral++; + + int digits = digits_integral; + if(!str) return digits + 1; //only computing required length? + + length = nall::min(digits, length - 1); + str += length; //seek to end of target string + *str = 0; //set null terminator + + while(length--) { + uint8_t x = '0' + (value % 2); + value /= 2; + *--str = x; //iterate backwards to write string + } + + return nall::min(initial_length, digits + 1); +} + +//using sprintf is certainly not the most ideal method to convert +//a double to a string ... but attempting to parse a double by +//hand, digit-by-digit, results in subtle rounding errors. +// +//note: length parameter is currently ignored. +//it remains for consistency and possible future support. +size_t strdouble(char *str, double value, size_t length /* = 0 */) { + char buffer[256]; + sprintf(buffer, "%f", value); + + //remove excess 0's in fraction (2.500000 -> 2.5) + for(char *p = buffer; *p; p++) { + if(*p == '.') { + char *p = buffer + strlen(buffer) - 1; + while(*p == '0') { + if(*(p - 1) != '.') *p = 0; //... but not for eg 1.0 -> 1. + p--; + } + break; + } + } + + length = strlen(buffer); + if(str) strcpy(str, buffer); + return length + 1; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/core.hpp b/libmednahawk/src/snes/src/lib/nall/string/core.hpp new file mode 100644 index 0000000000..1a1c9f0a8c --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/core.hpp @@ -0,0 +1,118 @@ +#ifndef NALL_STRING_CORE_HPP +#define NALL_STRING_CORE_HPP + +namespace nall { + +inline string string::printf(const char *fmt, ...) { + static char text[4096]; + va_list args; + va_start(args, fmt); + vsprintf(text, fmt, args); + va_end(args); + return text; +} + +void string::reserve(size_t size_) { + if(size_ > size) { + size = size_; + data = (char*)realloc(data, size + 1); + data[size] = 0; + } +} + +unsigned string::length() const { + return strlen(data); +} + +string& string::assign(const char *s) { + unsigned length = strlen(s); + reserve(length); + strcpy(data, s); + return *this; +} + +string& string::append(const char *s) { + unsigned length = strlen(data) + strlen(s); + reserve(length); + strcat(data, s); + return *this; +} + +string::operator const char*() const { + return data; +} + +char* string::operator()() { + return data; +} + +char& string::operator[](int index) { + reserve(index); + return data[index]; +} + +bool string::operator==(const char *str) const { return strcmp(data, str) == 0; } +bool string::operator!=(const char *str) const { return strcmp(data, str) != 0; } +bool string::operator< (const char *str) const { return strcmp(data, str) < 0; } +bool string::operator<=(const char *str) const { return strcmp(data, str) <= 0; } +bool string::operator> (const char *str) const { return strcmp(data, str) > 0; } +bool string::operator>=(const char *str) const { return strcmp(data, str) >= 0; } + +string::string() { + size = 64; + data = (char*)malloc(size + 1); + *data = 0; +} + +string::string(const char *value) { + size = strlen(value); + data = strdup(value); +} + +string::string(const string &value) { + size = strlen(value); + data = strdup(value); +} + +string& string::operator=(const string &value) { + assign(value); + return *this; +} + +string::~string() { + free(data); +} + +bool string::readfile(const char *filename) { + assign(""); + + #if !defined(_WIN32) + FILE *fp = fopen(filename, "rb"); + #else + FILE *fp = _wfopen(nall::utf16_t(filename), L"rb"); + #endif + if(!fp) return false; + + fseek(fp, 0, SEEK_END); + size_t size = ftell(fp); + rewind(fp); + char *fdata = new char[size + 1]; + unsigned unused = fread(fdata, 1, size, fp); + fclose(fp); + fdata[size] = 0; + assign(fdata); + delete[] fdata; + + return true; +} + +int lstring::find(const char *key) { + for(unsigned i = 0; i < size(); i++) { + if(operator[](i) == key) return i; + } + return -1; +} + +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/filename.hpp b/libmednahawk/src/snes/src/lib/nall/string/filename.hpp new file mode 100644 index 0000000000..4a459778e2 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/filename.hpp @@ -0,0 +1,60 @@ +#ifndef NALL_FILENAME_HPP +#define NALL_FILENAME_HPP + +namespace nall { + // "foo/bar.c" -> "foo/", "bar.c" -> "./" + inline string dir(char const *name) { + string result = name; + for(signed i = strlen(result); i >= 0; i--) { + if(result[i] == '/' || result[i] == '\\') { + result[i + 1] = 0; + break; + } + if(i == 0) result = "./"; + } + return result; + } + + // "foo/bar.c" -> "bar.c" + inline string notdir(char const *name) { + for(signed i = strlen(name); i >= 0; i--) { + if(name[i] == '/' || name[i] == '\\') { + name += i + 1; + break; + } + } + string result = name; + return result; + } + + // "foo/bar.c" -> "foo/bar" + inline string basename(char const *name) { + string result = name; + for(signed i = strlen(result); i >= 0; i--) { + if(result[i] == '/' || result[i] == '\\') { + //file has no extension + break; + } + + if(result[i] == '.') { + result[i] = 0; + break; + } + } + return result; + } + + // "foo/bar.c" -> "c" + inline string extension(char const *name) { + for(signed i = strlen(name); i >= 0; i--) { + if(name[i] == '.') { + name += i + 1; + break; + } + } + string result = name; + return result; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/match.hpp b/libmednahawk/src/snes/src/lib/nall/string/match.hpp new file mode 100644 index 0000000000..3932ab1ce8 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/match.hpp @@ -0,0 +1,72 @@ +#ifndef NALL_STRING_MATCH_HPP +#define NALL_STRING_MATCH_HPP + +bool match(const char *p, const char *s) { + const char *p_ = 0, *s_ = 0; + + for(;;) { + if(!*s) { + while(*p == '*') p++; + return !*p; + } + + //wildcard match + if(*p == '*') { + p_ = p++, s_ = s; + continue; + } + + //any match + if(*p == '?') { + p++, s++; + continue; + } + + //ranged match + if(*p == '{') { + #define pattern(name_, rule_) \ + if(strbegin(p, name_)) { \ + if(rule_) { \ + p += sizeof(name_) - 1, s++; \ + continue; \ + } \ + goto failure; \ + } + + pattern("{alpha}", (*s >= 'A' && *s <= 'Z') || (*s >= 'a' && *s <= 'z')) + pattern("{alphanumeric}", (*s >= 'A' && *s <= 'Z') || (*s >= 'a' && *s <= 'z') || (*s >= '0' && *s <= '9')) + pattern("{binary}", (*s == '0' || *s == '1')) + pattern("{hex}", (*s >= '0' && *s <= '9') || (*s >= 'A' && *s <= 'F') || (*s >= 'a' && *s <= 'f')) + pattern("{lowercase}", (*s >= 'a' && *s <= 'z')) + pattern("{numeric}", (*s >= '0' && *s <= '9')) + pattern("{uppercase}", (*s >= 'A' && *s <= 'Z')) + pattern("{whitespace}", (*s == ' ' || *s == '\t')) + + #undef pattern + goto failure; + } + + //reserved character match + if(*p == '\\') { + p++; + //fallthrough + } + + //literal match + if(*p == *s) { + p++, *s++; + continue; + } + + //attempt wildcard rematch + failure: + if(p_) { + p = p_, s = s_ + 1; + continue; + } + + return false; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/math.hpp b/libmednahawk/src/snes/src/lib/nall/string/math.hpp new file mode 100644 index 0000000000..cedfe44732 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/math.hpp @@ -0,0 +1,160 @@ +#ifndef NALL_STRING_MATH_HPP +#define NALL_STRING_MATH_HPP + +static int eval_integer(const char *&s) { + if(!*s) throw "unrecognized_integer"; + int value = 0, x = *s, y = *(s + 1); + + //hexadecimal + if(x == '0' && (y == 'X' || y == 'x')) { + s += 2; + while(true) { + if(*s >= '0' && *s <= '9') { value = value * 16 + (*s++ - '0'); continue; } + if(*s >= 'A' && *s <= 'F') { value = value * 16 + (*s++ - 'A' + 10); continue; } + if(*s >= 'a' && *s <= 'f') { value = value * 16 + (*s++ - 'a' + 10); continue; } + return value; + } + } + + //binary + if(x == '0' && (y == 'B' || y == 'b')) { + s += 2; + while(true) { + if(*s == '0' || *s == '1') { value = value * 2 + (*s++ - '0'); continue; } + return value; + } + } + + //octal (or decimal '0') + if(x == '0') { + s += 1; + while(true) { + if(*s >= '0' && *s <= '7') { value = value * 8 + (*s++ - '0'); continue; } + return value; + } + } + + //decimal + if(x >= '0' && x <= '9') { + while(true) { + if(*s >= '0' && *s <= '9') { value = value * 10 + (*s++ - '0'); continue; } + return value; + } + } + + //char + if(x == '\'' && y != '\'') { + s += 1; + while(true) { + value = value * 256 + *s++; + if(*s == '\'') { s += 1; return value; } + if(!*s) throw "mismatched_char"; + } + } + + throw "unrecognized_integer"; +} + +static int eval(const char *&s, int depth = 0) { + while(*s == ' ' || *s == '\t') s++; //trim whitespace + if(!*s) throw "unrecognized_token"; + int value = 0, x = *s, y = *(s + 1); + + if(*s == '(') { + value = eval(++s, 1); + if(*s++ != ')') throw "mismatched_group"; + } + + else if(x == '!') value = !eval(++s, 13); + else if(x == '~') value = ~eval(++s, 13); + else if(x == '+') value = +eval(++s, 13); + else if(x == '-') value = -eval(++s, 13); + + else if((x >= '0' && x <= '9') || x == '\'') value = eval_integer(s); + + else throw "unrecognized_token"; + + while(true) { + while(*s == ' ' || *s == '\t') s++; //trim whitespace + if(!*s) break; + x = *s, y = *(s + 1); + + if(depth >= 13) break; + if(x == '*') { value *= eval(++s, 13); continue; } + if(x == '/') { value /= eval(++s, 13); continue; } + if(x == '%') { value %= eval(++s, 13); continue; } + + if(depth >= 12) break; + if(x == '+') { value += eval(++s, 12); continue; } + if(x == '-') { value -= eval(++s, 12); continue; } + + if(depth >= 11) break; + if(x == '<' && y == '<') { value <<= eval(++++s, 11); continue; } + if(x == '>' && y == '>') { value >>= eval(++++s, 11); continue; } + + if(depth >= 10) break; + if(x == '<' && y == '=') { value = value <= eval(++++s, 10); continue; } + if(x == '>' && y == '=') { value = value >= eval(++++s, 10); continue; } + if(x == '<') { value = value < eval(++s, 10); continue; } + if(x == '>') { value = value > eval(++s, 10); continue; } + + if(depth >= 9) break; + if(x == '=' && y == '=') { value = value == eval(++++s, 9); continue; } + if(x == '!' && y == '=') { value = value != eval(++++s, 9); continue; } + + if(depth >= 8) break; + if(x == '&' && y != '&') { value = value & eval(++s, 8); continue; } + + if(depth >= 7) break; + if(x == '^' && y != '^') { value = value ^ eval(++s, 7); continue; } + + if(depth >= 6) break; + if(x == '|' && y != '|') { value = value | eval(++s, 6); continue; } + + if(depth >= 5) break; + if(x == '&' && y == '&') { value = eval(++++s, 5) && value; continue; } + + if(depth >= 4) break; + if(x == '^' && y == '^') { value = (!eval(++++s, 4) != !value); continue; } + + if(depth >= 3) break; + if(x == '|' && y == '|') { value = eval(++++s, 3) || value; continue; } + + if(x == '?') { + int lhs = eval(++s, 2); + if(*s != ':') throw "mismatched_ternary"; + int rhs = eval(++s, 2); + value = value ? lhs : rhs; + continue; + } + if(depth >= 2) break; + + if(depth > 0 && x == ')') break; + + throw "unrecognized_token"; + } + + return value; +} + +bool strint(const char *s, int &result) { + try { + result = eval_integer(s); + return true; + } catch(const char*) { + result = 0; + return false; + } +} + +bool strmath(const char *s, int &result) { + try { + result = eval(s); + return true; + } catch(const char*) { + result = 0; + return false; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/replace.hpp b/libmednahawk/src/snes/src/lib/nall/string/replace.hpp new file mode 100644 index 0000000000..ca7af9a25f --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/replace.hpp @@ -0,0 +1,103 @@ +#ifndef NALL_STRING_REPLACE_HPP +#define NALL_STRING_REPLACE_HPP + +namespace nall { + +string& string::replace(const char *key, const char *token) { + int i, z, ksl = strlen(key), tsl = strlen(token), ssl = length(); + unsigned int replace_count = 0, size = ssl; + char *buffer; + + if(ksl <= ssl) { + if(tsl > ksl) { //the new string may be longer than the old string... + for(i = 0; i <= ssl - ksl;) { //so let's find out how big of a string we'll need... + if(!memcmp(data + i, key, ksl)) { + replace_count++; + i += ksl; + } else i++; + } + size = ssl + ((tsl - ksl) * replace_count); + reserve(size); + } + + buffer = new char[size + 1]; + for(i = z = 0; i < ssl;) { + if(i <= ssl - ksl) { + if(!memcmp(data + i, key, ksl)) { + memcpy(buffer + z, token, tsl); + z += tsl; + i += ksl; + } else buffer[z++] = data[i++]; + } else buffer[z++] = data[i++]; + } + buffer[z] = 0; + + assign(buffer); + delete[] buffer; + } + + return *this; +} + +string& string::qreplace(const char *key, const char *token) { + int i, l, z, ksl = strlen(key), tsl = strlen(token), ssl = length(); + unsigned int replace_count = 0, size = ssl; + uint8_t x; + char *buffer; + + if(ksl <= ssl) { + if(tsl > ksl) { + for(i = 0; i <= ssl - ksl;) { + x = data[i]; + if(x == '\"' || x == '\'') { + l = i; + i++; + while(data[i++] != x) { + if(i == ssl) { + i = l; + break; + } + } + } + if(!memcmp(data + i, key, ksl)) { + replace_count++; + i += ksl; + } else i++; + } + size = ssl + ((tsl - ksl) * replace_count); + reserve(size); + } + + buffer = new char[size + 1]; + for(i = z = 0; i < ssl;) { + x = data[i]; + if(x == '\"' || x == '\'') { + l = i++; + while(data[i] != x && i < ssl)i++; + if(i >= ssl)i = l; + else { + memcpy(buffer + z, data + l, i - l); + z += i - l; + } + } + if(i <= ssl - ksl) { + if(!memcmp(data + i, key, ksl)) { + memcpy(buffer + z, token, tsl); + z += tsl; + i += ksl; + replace_count++; + } else buffer[z++] = data[i++]; + } else buffer[z++] = data[i++]; + } + buffer[z] = 0; + + assign(buffer); + delete[] buffer; + } + + return *this; +} + +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/split.hpp b/libmednahawk/src/snes/src/lib/nall/string/split.hpp new file mode 100644 index 0000000000..53d1db596d --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/split.hpp @@ -0,0 +1,56 @@ +#ifndef NALL_STRING_SPLIT_HPP +#define NALL_STRING_SPLIT_HPP + +namespace nall { + +void lstring::split(const char *key, const char *src, unsigned limit) { + reset(); + + int ssl = strlen(src), ksl = strlen(key); + int lp = 0, split_count = 0; + + for(int i = 0; i <= ssl - ksl;) { + if(!memcmp(src + i, key, ksl)) { + strlcpy(operator[](split_count++), src + lp, i - lp + 1); + i += ksl; + lp = i; + if(!--limit) break; + } else i++; + } + + operator[](split_count++) = src + lp; +} + +void lstring::qsplit(const char *key, const char *src, unsigned limit) { + reset(); + + int ssl = strlen(src), ksl = strlen(key); + int lp = 0, split_count = 0; + + for(int i = 0; i <= ssl - ksl;) { + uint8_t x = src[i]; + + if(x == '\"' || x == '\'') { + int z = i++; //skip opening quote + while(i < ssl && src[i] != x) i++; + if(i >= ssl) i = z; //failed match, rewind i + else { + i++; //skip closing quote + continue; //restart in case next char is also a quote + } + } + + if(!memcmp(src + i, key, ksl)) { + strlcpy(operator[](split_count++), src + lp, i - lp + 1); + i += ksl; + lp = i; + if(!--limit) break; + } else i++; + } + + operator[](split_count++) = src + lp; +} + +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/strl.hpp b/libmednahawk/src/snes/src/lib/nall/string/strl.hpp new file mode 100644 index 0000000000..9690c64195 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/strl.hpp @@ -0,0 +1,48 @@ +#ifndef NALL_STRING_STRL_HPP +#define NALL_STRING_STRL_HPP + +//strlcpy, strlcat based on OpenBSD implementation by Todd C. Miller + +//return = strlen(src) +size_t strlcpy(char *dest, const char *src, size_t length) { + char *d = dest; + const char *s = src; + size_t n = length; + + if(n) { + while(--n && (*d++ = *s++)); //copy as many bytes as possible, or until null terminator reached + } + + if(!n) { + if(length) *d = 0; + while(*s++); //traverse rest of s, so that s - src == strlen(src) + } + + return (s - src - 1); //return length of copied string, sans null terminator +} + +//return = strlen(src) + min(length, strlen(dest)) +size_t strlcat(char *dest, const char *src, size_t length) { + char *d = dest; + const char *s = src; + size_t n = length; + + while(n-- && *d) d++; //find end of dest + size_t dlength = d - dest; + n = length - dlength; //subtract length of dest from maximum string length + + if(!n) return dlength + strlen(s); + + while(*s) { + if(n != 1) { + *d++ = *s; + n--; + } + s++; + } + *d = 0; + + return dlength + (s - src); //return length of resulting string, sans null terminator +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/trim.hpp b/libmednahawk/src/snes/src/lib/nall/string/trim.hpp new file mode 100644 index 0000000000..514a59ffc6 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/trim.hpp @@ -0,0 +1,50 @@ +#ifndef NALL_STRING_TRIM_HPP +#define NALL_STRING_TRIM_HPP + +char* ltrim(char *str, const char *key) { + if(!key || !*key) return str; + while(strbegin(str, key)) { + char *dest = str, *src = str + strlen(key); + while(true) { + *dest = *src++; + if(!*dest) break; + dest++; + } + } + return str; +} + +char* rtrim(char *str, const char *key) { + if(!key || !*key) return str; + while(strend(str, key)) str[strlen(str) - strlen(key)] = 0; + return str; +} + +char* trim(char *str, const char *key) { + return ltrim(rtrim(str, key), key); +} + +char* ltrim_once(char *str, const char *key) { + if(!key || !*key) return str; + if(strbegin(str, key)) { + char *dest = str, *src = str + strlen(key); + while(true) { + *dest = *src++; + if(!*dest) break; + dest++; + } + } + return str; +} + +char* rtrim_once(char *str, const char *key) { + if(!key || !*key) return str; + if(strend(str, key)) str[strlen(str) - strlen(key)] = 0; + return str; +} + +char* trim_once(char *str, const char *key) { + return ltrim_once(rtrim_once(str, key), key); +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/string/utility.hpp b/libmednahawk/src/snes/src/lib/nall/string/utility.hpp new file mode 100644 index 0000000000..333edc7a59 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/string/utility.hpp @@ -0,0 +1,75 @@ +#ifndef NALL_STRING_UTILITY_HPP +#define NALL_STRING_UTILITY_HPP + +size_t strlcpy(nall::string &dest, const char *src, size_t length) { + dest.reserve(length); + return strlcpy(dest(), src, length); +} + +size_t strlcat(nall::string &dest, const char *src, size_t length) { + dest.reserve(length); + return strlcat(dest(), src, length); +} + +nall::string substr(const char *src, size_t start, size_t length) { + nall::string dest; + if(length == 0) { + //copy entire string + dest = src + start; + } else { + //copy partial string + strlcpy(dest, src + start, length + 1); + } + return dest; +} + +/* very simplistic wrappers to return nall::string& instead of char* type */ + +nall::string& strlower(nall::string &str) { strlower(str()); return str; } +nall::string& strupper(nall::string &str) { strupper(str()); return str; } +nall::string& strtr(nall::string &dest, const char *before, const char *after) { strtr(dest(), before, after); return dest; } +nall::string& ltrim(nall::string &str, const char *key) { ltrim(str(), key); return str; } +nall::string& rtrim(nall::string &str, const char *key) { rtrim(str(), key); return str; } +nall::string& trim (nall::string &str, const char *key) { trim (str(), key); return str; } +nall::string& ltrim_once(nall::string &str, const char *key) { ltrim_once(str(), key); return str; } +nall::string& rtrim_once(nall::string &str, const char *key) { rtrim_once(str(), key); return str; } +nall::string& trim_once (nall::string &str, const char *key) { trim_once (str(), key); return str; } + +/* arithmetic <> string */ + +nall::string strhex(uintmax_t value) { + nall::string temp; + temp.reserve(strhex(0, value)); + strhex(temp(), value); + return temp; +} + +nall::string strsigned(intmax_t value) { + nall::string temp; + temp.reserve(strsigned(0, value)); + strsigned(temp(), value); + return temp; +} + +nall::string strunsigned(uintmax_t value) { + nall::string temp; + temp.reserve(strunsigned(0, value)); + strunsigned(temp(), value); + return temp; +} + +nall::string strbin(uintmax_t value) { + nall::string temp; + temp.reserve(strbin(0, value)); + strbin(temp(), value); + return temp; +} + +nall::string strdouble(double value) { + nall::string temp; + temp.reserve(strdouble(0, value)); + strdouble(temp(), value); + return temp; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/traits.hpp b/libmednahawk/src/snes/src/lib/nall/traits.hpp new file mode 100644 index 0000000000..cd8e26c7ac --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/traits.hpp @@ -0,0 +1,97 @@ +#ifndef NALL_TRAITS_HPP +#define NALL_TRAITS_HPP + +namespace nall { + //== + //is + //== + + template struct is_integral { enum { value = false }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + template<> struct is_integral { enum { value = true }; }; + + template struct is_floating_point { enum { value = false }; }; + template<> struct is_floating_point { enum { value = true }; }; + template<> struct is_floating_point { enum { value = true }; }; + template<> struct is_floating_point { enum { value = true }; }; + + template struct is_bool { enum { value = false }; }; + template<> struct is_bool { enum { value = true }; }; + + template struct is_void { enum { value = false }; }; + template<> struct is_void { enum { value = true }; }; + + template struct is_arithmetic { + enum { value = is_integral::value || is_floating_point::value }; + }; + + template struct is_fundamental { + enum { value = is_integral::value || is_floating_point::value || is_void::value }; + }; + + template struct is_compound { + enum { value = !is_fundamental::value }; + }; + + template struct is_array { enum { value = false }; }; + template struct is_array { enum { value = true }; }; + template struct is_array { enum { value = true }; }; + + template struct is_const { enum { value = false }; }; + template struct is_const { enum { value = true }; }; + template struct is_const { enum { value = true }; }; + + template struct is_pointer { enum { value = false }; }; + template struct is_pointer { enum { value = true }; }; + + template struct is_reference { enum { value = false }; }; + template struct is_reference { enum { value = true }; }; + + template struct is_same { enum { value = false }; }; + template struct is_same { enum { value = true }; }; + + //=== + //add + //=== + + template struct add_const { typedef const T type; }; + template struct add_const { typedef const T type; }; + template struct add_const { typedef const T& type; }; + + template struct add_pointer { typedef T* type; }; + template struct add_pointer { typedef T** type; }; + + template struct add_reference { typedef T& type; }; + template struct add_reference { typedef T& type; }; + + //====== + //remove + //====== + + template struct remove_const { typedef T type; }; + template struct remove_const { typedef T type; }; + template struct remove_const { typedef T type; }; + + template struct remove_extent { typedef T type; }; + template struct remove_extent { typedef T type; }; + template struct remove_extent { typedef T type; }; + + template struct remove_pointer { typedef T type; }; + template struct remove_pointer { typedef T type; }; + + template struct remove_reference { typedef T type; }; + template struct remove_reference { typedef T type; }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/ups.hpp b/libmednahawk/src/snes/src/lib/nall/ups.hpp new file mode 100644 index 0000000000..d7d8d410de --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/ups.hpp @@ -0,0 +1,190 @@ +#ifndef NALL_UPS_HPP +#define NALL_UPS_HPP + +#include + +#include +#include +#include +#include + +namespace nall { + class ups { + public: + enum result { + ok, + patch_unreadable, + patch_unwritable, + patch_invalid, + input_invalid, + output_invalid, + patch_crc32_invalid, + input_crc32_invalid, + output_crc32_invalid, + }; + + ups::result create(const char *patch_fn, const uint8_t *x_data, unsigned x_size, const uint8_t *y_data, unsigned y_size) { + if(!fp.open(patch_fn, file::mode_write)) return patch_unwritable; + + crc32 = ~0; + uint32_t x_crc32 = crc32_calculate(x_data, x_size); + uint32_t y_crc32 = crc32_calculate(y_data, y_size); + + //header + write('U'); + write('P'); + write('S'); + write('1'); + encptr(x_size); + encptr(y_size); + + //body + unsigned max_size = max(x_size, y_size); + unsigned relative = 0; + for(unsigned i = 0; i < max_size;) { + uint8_t x = i < x_size ? x_data[i] : 0x00; + uint8_t y = i < y_size ? y_data[i] : 0x00; + + if(x == y) { + i++; + continue; + } + + encptr(i++ - relative); + write(x ^ y); + + while(true) { + if(i >= max_size) { + write(0x00); + break; + } + + x = i < x_size ? x_data[i] : 0x00; + y = i < y_size ? y_data[i] : 0x00; + i++; + write(x ^ y); + if(x == y) break; + } + + relative = i; + } + + //footer + for(unsigned i = 0; i < 4; i++) write(x_crc32 >> (i << 3)); + for(unsigned i = 0; i < 4; i++) write(y_crc32 >> (i << 3)); + uint32_t p_crc32 = ~crc32; + for(unsigned i = 0; i < 4; i++) write(p_crc32 >> (i << 3)); + + fp.close(); + return ok; + } + + ups::result apply(const uint8_t *p_data, unsigned p_size, const uint8_t *x_data, unsigned x_size, uint8_t *&y_data, unsigned &y_size) { + if(p_size < 18) return patch_invalid; + p_buffer = p_data; + + crc32 = ~0; + + //header + if(read() != 'U') return patch_invalid; + if(read() != 'P') return patch_invalid; + if(read() != 'S') return patch_invalid; + if(read() != '1') return patch_invalid; + + unsigned px_size = decptr(); + unsigned py_size = decptr(); + + //mirror + if(x_size != px_size && x_size != py_size) return input_invalid; + y_size = (x_size == px_size) ? py_size : px_size; + y_data = new uint8_t[y_size](); + + for(unsigned i = 0; i < x_size && i < y_size; i++) y_data[i] = x_data[i]; + for(unsigned i = x_size; i < y_size; i++) y_data[i] = 0x00; + + //body + unsigned relative = 0; + while(p_buffer < p_data + p_size - 12) { + relative += decptr(); + + while(true) { + uint8_t x = read(); + if(x && relative < y_size) { + uint8_t y = relative < x_size ? x_data[relative] : 0x00; + y_data[relative] = x ^ y; + } + relative++; + if(!x) break; + } + } + + //footer + unsigned px_crc32 = 0, py_crc32 = 0, pp_crc32 = 0; + for(unsigned i = 0; i < 4; i++) px_crc32 |= read() << (i << 3); + for(unsigned i = 0; i < 4; i++) py_crc32 |= read() << (i << 3); + uint32_t p_crc32 = ~crc32; + for(unsigned i = 0; i < 4; i++) pp_crc32 |= read() << (i << 3); + + uint32_t x_crc32 = crc32_calculate(x_data, x_size); + uint32_t y_crc32 = crc32_calculate(y_data, y_size); + + if(px_size != py_size) { + if(x_size == px_size && x_crc32 != px_crc32) return input_crc32_invalid; + if(x_size == py_size && x_crc32 != py_crc32) return input_crc32_invalid; + if(y_size == px_size && y_crc32 != px_crc32) return output_crc32_invalid; + if(y_size == py_size && y_crc32 != py_crc32) return output_crc32_invalid; + } else { + if(x_crc32 != px_crc32 && x_crc32 != py_crc32) return input_crc32_invalid; + if(y_crc32 != px_crc32 && y_crc32 != py_crc32) return output_crc32_invalid; + if(x_crc32 == y_crc32 && px_crc32 != py_crc32) return output_crc32_invalid; + if(x_crc32 != y_crc32 && px_crc32 == py_crc32) return output_crc32_invalid; + } + + if(p_crc32 != pp_crc32) return patch_crc32_invalid; + return ok; + } + + private: + file fp; + uint32_t crc32; + const uint8_t *p_buffer; + + uint8_t read() { + uint8_t n = *p_buffer++; + crc32 = crc32_adjust(crc32, n); + return n; + } + + void write(uint8_t n) { + fp.write(n); + crc32 = crc32_adjust(crc32, n); + } + + void encptr(uint64_t offset) { + while(true) { + uint64_t x = offset & 0x7f; + offset >>= 7; + if(offset == 0) { + write(0x80 | x); + break; + } + write(x); + offset--; + } + } + + uint64_t decptr() { + uint64_t offset = 0, shift = 1; + while(true) { + uint8_t x = read(); + offset += (x & 0x7f) * shift; + if(x & 0x80) break; + shift <<= 7; + offset += shift; + } + return offset; + } + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/utf8.hpp b/libmednahawk/src/snes/src/lib/nall/utf8.hpp new file mode 100644 index 0000000000..30378967cf --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/utf8.hpp @@ -0,0 +1,72 @@ +#ifndef NALL_UTF8_HPP +#define NALL_UTF8_HPP + +//UTF-8 <> UTF-16 conversion +//used only for Win32; Linux, etc use UTF-8 internally + +#if defined(_WIN32) + +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#undef NOMINMAX +#define NOMINMAX +#include +#undef interface + +namespace nall { + //UTF-8 to UTF-16 + class utf16_t { + public: + operator wchar_t*() { + return buffer; + } + + operator const wchar_t*() const { + return buffer; + } + + utf16_t(const char *s = "") { + if(!s) s = ""; + unsigned length = MultiByteToWideChar(CP_UTF8, 0, s, -1, 0, 0); + buffer = new wchar_t[length + 1](); + MultiByteToWideChar(CP_UTF8, 0, s, -1, buffer, length); + } + + ~utf16_t() { + delete[] buffer; + } + + private: + wchar_t *buffer; + }; + + //UTF-16 to UTF-8 + class utf8_t { + public: + operator char*() { + return buffer; + } + + operator const char*() const { + return buffer; + } + + utf8_t(const wchar_t *s = L"") { + if(!s) s = L""; + unsigned length = WideCharToMultiByte(CP_UTF8, 0, s, -1, 0, 0, (const char*)0, (BOOL*)0); + buffer = new char[length + 1](); + WideCharToMultiByte(CP_UTF8, 0, s, -1, buffer, length, (const char*)0, (BOOL*)0); + } + + ~utf8_t() { + delete[] buffer; + } + + private: + char *buffer; + }; +} + +#endif //if defined(_WIN32) + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/utility.hpp b/libmednahawk/src/snes/src/lib/nall/utility.hpp new file mode 100644 index 0000000000..f8afa6dd11 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/utility.hpp @@ -0,0 +1,36 @@ +#ifndef NALL_UTILITY_HPP +#define NALL_UTILITY_HPP + +namespace nall { + template + inline void swap(T &x, T &y) { + T temp(x); + x = y; + y = temp; + } + + template + struct base_from_member { + T value; + base_from_member(T value_) : value(value_) {} + }; + + class noncopyable { + protected: + noncopyable() {} + ~noncopyable() {} + + private: + noncopyable(const noncopyable&); + const noncopyable& operator=(const noncopyable&); + }; + + template + inline T* allocate(size_t size, const T &value) { + T *array = new T[size]; + for(size_t i = 0; i < size; i++) array[i] = value; + return array; + } +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/varint.hpp b/libmednahawk/src/snes/src/lib/nall/varint.hpp new file mode 100644 index 0000000000..8048a8b269 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/varint.hpp @@ -0,0 +1,92 @@ +#ifndef NALL_VARINT_HPP +#define NALL_VARINT_HPP + +#include +#include +#include + +namespace nall { + template class uint_t { + private: + enum { bytes = (bits + 7) >> 3 }; //minimum number of bytes needed to store value + typedef typename static_if< + sizeof(int) >= bytes, + unsigned int, + typename static_if< + sizeof(long) >= bytes, + unsigned long, + typename static_if< + sizeof(long long) >= bytes, + unsigned long long, + void + >::type + >::type + >::type T; + nall_static_assert::value> uint_assert; + T data; + + public: + inline operator T() const { return data; } + inline T operator ++(int) { T r = data; data = uclip(data + 1); return r; } + inline T operator --(int) { T r = data; data = uclip(data - 1); return r; } + inline T operator ++() { return data = uclip(data + 1); } + inline T operator --() { return data = uclip(data - 1); } + inline T operator =(const T i) { return data = uclip(i); } + inline T operator |=(const T i) { return data = uclip(data | i); } + inline T operator ^=(const T i) { return data = uclip(data ^ i); } + inline T operator &=(const T i) { return data = uclip(data & i); } + inline T operator<<=(const T i) { return data = uclip(data << i); } + inline T operator>>=(const T i) { return data = uclip(data >> i); } + inline T operator +=(const T i) { return data = uclip(data + i); } + inline T operator -=(const T i) { return data = uclip(data - i); } + inline T operator *=(const T i) { return data = uclip(data * i); } + inline T operator /=(const T i) { return data = uclip(data / i); } + inline T operator %=(const T i) { return data = uclip(data % i); } + + inline uint_t() : data(0) {} + inline uint_t(const T i) : data(uclip(i)) {} + }; + + template class int_t { + private: + enum { bytes = (bits + 7) >> 3 }; //minimum number of bytes needed to store value + typedef typename static_if< + sizeof(int) >= bytes, + signed int, + typename static_if< + sizeof(long) >= bytes, + signed long, + typename static_if< + sizeof(long long) >= bytes, + signed long long, + void + >::type + >::type + >::type T; + nall_static_assert::value> int_assert; + T data; + + public: + inline operator T() const { return data; } + inline T operator ++(int) { T r = data; data = sclip(data + 1); return r; } + inline T operator --(int) { T r = data; data = sclip(data - 1); return r; } + inline T operator ++() { return data = sclip(data + 1); } + inline T operator --() { return data = sclip(data - 1); } + inline T operator =(const T i) { return data = sclip(i); } + inline T operator |=(const T i) { return data = sclip(data | i); } + inline T operator ^=(const T i) { return data = sclip(data ^ i); } + inline T operator &=(const T i) { return data = sclip(data & i); } + inline T operator<<=(const T i) { return data = sclip(data << i); } + inline T operator>>=(const T i) { return data = sclip(data >> i); } + inline T operator +=(const T i) { return data = sclip(data + i); } + inline T operator -=(const T i) { return data = sclip(data - i); } + inline T operator *=(const T i) { return data = sclip(data * i); } + inline T operator /=(const T i) { return data = sclip(data / i); } + inline T operator %=(const T i) { return data = sclip(data % i); } + + inline int_t() : data(0) {} + inline int_t(const T i) : data(sclip(i)) {} + }; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/nall/vector.hpp b/libmednahawk/src/snes/src/lib/nall/vector.hpp new file mode 100644 index 0000000000..e76c7afac5 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/nall/vector.hpp @@ -0,0 +1,162 @@ +#ifndef NALL_VECTOR_HPP +#define NALL_VECTOR_HPP + +#include +#include +#include +#include + +namespace nall { + //linear_vector + //memory: O(capacity * 2) + // + //linear_vector uses placement new + manual destructor calls to create a + //contiguous block of memory for all objects. accessing individual elements + //is fast, though resizing the array incurs significant overhead. + //reserve() overhead is reduced from quadratic time to amortized constant time + //by resizing twice as much as requested. + // + //if objects hold memory address references to themselves (introspection), a + //valid copy constructor will be needed to keep pointers valid. + + template class linear_vector : noncopyable { + protected: + T *pool; + unsigned poolsize, objectsize; + + public: + unsigned size() const { return objectsize; } + unsigned capacity() const { return poolsize; } + + void reset() { + if(pool) { + for(unsigned i = 0; i < objectsize; i++) pool[i].~T(); + free(pool); + } + pool = 0; + poolsize = 0; + objectsize = 0; + } + + void reserve(unsigned newsize) { + newsize = bit::round(newsize); //round to nearest power of two (for amortized growth) + + T *poolcopy = (T*)malloc(newsize * sizeof(T)); + for(unsigned i = 0; i < min(objectsize, newsize); i++) new(poolcopy + i) T(pool[i]); + for(unsigned i = 0; i < objectsize; i++) pool[i].~T(); + free(pool); + pool = poolcopy; + poolsize = newsize; + objectsize = min(objectsize, newsize); + } + + void resize(unsigned newsize) { + if(newsize > poolsize) reserve(newsize); + + if(newsize < objectsize) { + //vector is shrinking; destroy excess objects + for(unsigned i = newsize; i < objectsize; i++) pool[i].~T(); + } else if(newsize > objectsize) { + //vector is expanding; allocate new objects + for(unsigned i = objectsize; i < newsize; i++) new(pool + i) T; + } + + objectsize = newsize; + } + + void add(const T data) { + if(objectsize + 1 > poolsize) reserve(objectsize + 1); + new(pool + objectsize++) T(data); + } + + inline T& operator[](unsigned index) { + if(index >= objectsize) resize(index + 1); + return pool[index]; + } + + inline const T& operator[](unsigned index) const { + if(index >= objectsize) throw "vector[] out of bounds"; + return pool[index]; + } + + linear_vector() : pool(0), poolsize(0), objectsize(0) {} + ~linear_vector() { reset(); } + }; + + //pointer_vector + //memory: O(1) + // + //pointer_vector keeps an array of pointers to each vector object. this adds + //significant overhead to individual accesses, but allows for optimal memory + //utilization. + // + //by guaranteeing that the base memory address of each objects never changes, + //this avoids the need for an object to have a valid copy constructor. + + template class pointer_vector : noncopyable { + protected: + T **pool; + unsigned poolsize, objectsize; + + public: + unsigned size() const { return objectsize; } + unsigned capacity() const { return poolsize; } + + void reset() { + if(pool) { + for(unsigned i = 0; i < objectsize; i++) { if(pool[i]) delete pool[i]; } + free(pool); + } + pool = 0; + poolsize = 0; + objectsize = 0; + } + + void reserve(unsigned newsize) { + newsize = bit::round(newsize); //round to nearest power of two (for amortized growth) + + for(unsigned i = newsize; i < objectsize; i++) { + if(pool[i]) { delete pool[i]; pool[i] = 0; } + } + + pool = (T**)realloc(pool, newsize * sizeof(T*)); + for(unsigned i = poolsize; i < newsize; i++) pool[i] = 0; + poolsize = newsize; + objectsize = min(objectsize, newsize); + } + + void resize(unsigned newsize) { + if(newsize > poolsize) reserve(newsize); + + for(unsigned i = newsize; i < objectsize; i++) { + if(pool[i]) { delete pool[i]; pool[i] = 0; } + } + + objectsize = newsize; + } + + void add(const T data) { + if(objectsize + 1 > poolsize) reserve(objectsize + 1); + pool[objectsize++] = new T(data); + } + + inline T& operator[](unsigned index) { + if(index >= objectsize) resize(index + 1); + if(!pool[index]) pool[index] = new T; + return *pool[index]; + } + + inline const T& operator[](unsigned index) const { + if(index >= objectsize || !pool[index]) throw "vector[] out of bounds"; + return *pool[index]; + } + + pointer_vector() : pool(0), poolsize(0), objectsize(0) {} + ~pointer_vector() { reset(); } + }; + + //default vector type + template class vector : public linear_vector {}; +} + +#endif diff --git a/libmednahawk/src/snes/src/lib/ruby/audio.hpp b/libmednahawk/src/snes/src/lib/ruby/audio.hpp new file mode 100644 index 0000000000..008917db8b --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio.hpp @@ -0,0 +1,23 @@ +class Audio { +public: + static const char *Volume; + static const char *Resample; + static const char *ResampleRatio; + + static const char *Handle; + static const char *Synchronize; + static const char *Frequency; + static const char *Latency; + + virtual bool cap(const nall::string& name) { return false; } + virtual nall::any get(const nall::string& name) { return false; } + virtual bool set(const nall::string& name, const nall::any& value) { return false; } + + virtual void sample(uint16_t left, uint16_t right) {} + virtual void clear() {} + virtual bool init() { return true; } + virtual void term() {} + + Audio() {} + virtual ~Audio() {} +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/alsa.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/alsa.cpp new file mode 100644 index 0000000000..5e0d42022c --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/alsa.cpp @@ -0,0 +1,240 @@ +//audio.alsa (2009-11-30) +//authors: BearOso, byuu, Nach, RedDwarf + +#include + +namespace ruby { + +class pAudioALSA { +public: + struct { + snd_pcm_t *handle; + snd_pcm_format_t format; + snd_pcm_uframes_t buffer_size; + snd_pcm_uframes_t period_size; + int channels; + const char *name; + } device; + + struct { + uint32_t *data; + unsigned length; + } buffer; + + struct { + bool synchronize; + unsigned frequency; + unsigned latency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Synchronize) return true; + if(name == Audio::Frequency) return true; + if(name == Audio::Latency) return true; + return false; + } + + any get(const string& name) { + if(name == Audio::Synchronize) return settings.synchronize; + if(name == Audio::Frequency) return settings.frequency; + if(name == Audio::Latency) return settings.latency; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Synchronize) { + if(settings.synchronize != any_cast(value)) { + settings.synchronize = any_cast(value); + if(device.handle) init(); + } + return true; + } + + if(name == Audio::Frequency) { + if(settings.frequency != any_cast(value)) { + settings.frequency = any_cast(value); + if(device.handle) init(); + } + return true; + } + + if(name == Audio::Latency) { + if(settings.latency != any_cast(value)) { + settings.latency = any_cast(value); + if(device.handle) init(); + } + return true; + } + + return false; + } + + void sample(uint16_t left, uint16_t right) { + if(!device.handle) return; + + buffer.data[buffer.length++] = left + (right << 16); + if(buffer.length < device.period_size) return; + + snd_pcm_sframes_t avail; + do { + avail = snd_pcm_avail_update(device.handle); + if(avail < 0) snd_pcm_recover(device.handle, avail, 1); + if(avail < buffer.length) { + if(settings.synchronize == false) { + buffer.length = 0; + return; + } + int error = snd_pcm_wait(device.handle, -1); + if(error < 0) snd_pcm_recover(device.handle, error, 1); + } + } while(avail < buffer.length); + + //below code has issues with PulseAudio sound server + #if 0 + if(settings.synchronize == false) { + snd_pcm_sframes_t avail = snd_pcm_avail_update(device.handle); + if(avail < device.period_size) { + buffer.length = 0; + return; + } + } + #endif + + uint32_t *buffer_ptr = buffer.data; + int i = 4; + + while((buffer.length > 0) && i--) { + snd_pcm_sframes_t written = snd_pcm_writei(device.handle, buffer_ptr, buffer.length); + if(written < 0) { + //no samples written + snd_pcm_recover(device.handle, written, 1); + } else if(written <= buffer.length) { + buffer.length -= written; + buffer_ptr += written; + } + } + + if(i < 0) { + if(buffer.data == buffer_ptr) { + buffer.length--; + buffer_ptr++; + } + memmove(buffer.data, buffer_ptr, buffer.length * sizeof(uint32_t)); + } + } + + void clear() { + } + + bool init() { + term(); + + if(snd_pcm_open(&device.handle, device.name, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) { + term(); + return false; + } + + //below code will not work with 24khz frequency rate (ALSA library bug) + #if 0 + if(snd_pcm_set_params(device.handle, device.format, SND_PCM_ACCESS_RW_INTERLEAVED, + device.channels, settings.frequency, 1, settings.latency * 1000) < 0) { + //failed to set device parameters + term(); + return false; + } + + if(snd_pcm_get_params(device.handle, &device.buffer_size, &device.period_size) < 0) { + device.period_size = settings.latency * 1000 * 1e-6 * settings.frequency / 4; + } + #endif + + snd_pcm_hw_params_t *hwparams; + snd_pcm_sw_params_t *swparams; + unsigned rate = settings.frequency; + unsigned buffer_time = settings.latency * 1000; + unsigned period_time = settings.latency * 1000 / 4; + + snd_pcm_hw_params_alloca(&hwparams); + if(snd_pcm_hw_params_any(device.handle, hwparams) < 0) { + term(); + return false; + } + + if(snd_pcm_hw_params_set_access(device.handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED) < 0 + || snd_pcm_hw_params_set_format(device.handle, hwparams, device.format) < 0 + || snd_pcm_hw_params_set_channels(device.handle, hwparams, device.channels) < 0 + || snd_pcm_hw_params_set_rate_near(device.handle, hwparams, &rate, 0) < 0 + || snd_pcm_hw_params_set_period_time_near(device.handle, hwparams, &period_time, 0) < 0 + || snd_pcm_hw_params_set_buffer_time_near(device.handle, hwparams, &buffer_time, 0) < 0 + ) { + term(); + return false; + } + + if(snd_pcm_hw_params(device.handle, hwparams) < 0) { + term(); + return false; + } + + if(snd_pcm_get_params(device.handle, &device.buffer_size, &device.period_size) < 0) { + term(); + return false; + } + + snd_pcm_sw_params_alloca(&swparams); + if(snd_pcm_sw_params_current(device.handle, swparams) < 0) { + term(); + return false; + } + + if(snd_pcm_sw_params_set_start_threshold(device.handle, swparams, + (device.buffer_size / device.period_size) * device.period_size) < 0 + ) { + term(); + return false; + } + + if(snd_pcm_sw_params(device.handle, swparams) < 0) { + term(); + return false; + } + + buffer.data = new uint32_t[device.period_size]; + return true; + } + + void term() { + if(device.handle) { + snd_pcm_drain(device.handle); + snd_pcm_close(device.handle); + device.handle = 0; + } + + if(buffer.data) { + delete[] buffer.data; + buffer.data = 0; + } + } + + pAudioALSA() { + device.handle = 0; + device.format = SND_PCM_FORMAT_S16_LE; + device.channels = 2; + device.name = "default"; + + buffer.data = 0; + buffer.length = 0; + + settings.synchronize = false; + settings.frequency = 22050; + settings.latency = 60; + } + + ~pAudioALSA() { + term(); + } +}; + +DeclareAudio(ALSA) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/ao.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/ao.cpp new file mode 100644 index 0000000000..227b1e3eca --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/ao.cpp @@ -0,0 +1,94 @@ +/* + audio.ao (2008-06-01) + authors: Nach, RedDwarf +*/ + +#include + +namespace ruby { + +class pAudioAO { +public: + int driver_id; + ao_sample_format driver_format; + ao_device *audio_device; + + struct { + unsigned frequency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Frequency) return true; + return false; + } + + any get(const string& name) { + if(name == Audio::Frequency) return settings.frequency; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Frequency) { + settings.frequency = any_cast(value); + if(audio_device) init(); + return true; + } + + return false; + } + + void sample(uint16_t l_sample, uint16_t r_sample) { + uint32_t samp = (l_sample << 0) + (r_sample << 16); + ao_play(audio_device, (char*)&samp, 4); //This may need to be byte swapped for Big Endian + } + + void clear() { + } + + bool init() { + term(); + + driver_id = ao_default_driver_id(); //ao_driver_id((const char*)driver) + if(driver_id < 0) return false; + + driver_format.bits = 16; + driver_format.channels = 2; + driver_format.rate = settings.frequency; + driver_format.byte_format = AO_FMT_LITTLE; + + ao_option *options = 0; + ao_info *di = ao_driver_info(driver_id); + if(!di) return false; + if(!strcmp(di->short_name, "alsa")) { + ao_append_option(&options, "buffer_time", "100000"); //100ms latency (default was 500ms) + } + + audio_device = ao_open_live(driver_id, &driver_format, options); + if(!audio_device) return false; + + return true; + } + + void term() { + if(audio_device) { + ao_close(audio_device); + audio_device = 0; + } + } + + pAudioAO() { + audio_device = 0; + ao_initialize(); + + settings.frequency = 22050; + } + + ~pAudioAO() { + term(); + //ao_shutdown(); //FIXME: this is causing a segfault for some reason when called ... + } +}; + +DeclareAudio(AO) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/directsound.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/directsound.cpp new file mode 100644 index 0000000000..a11219c354 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/directsound.cpp @@ -0,0 +1,212 @@ +/* + audio.directsound (2007-12-26) + author: byuu +*/ + +#include + +namespace ruby { + +class pAudioDS { +public: + LPDIRECTSOUND ds; + LPDIRECTSOUNDBUFFER dsb_p, dsb_b; + DSBUFFERDESC dsbd; + WAVEFORMATEX wfx; + + struct { + unsigned rings; + unsigned latency; + + uint32_t *buffer; + unsigned bufferoffset; + + unsigned readring; + unsigned writering; + int distance; + } device; + + struct { + HWND handle; + bool synchronize; + unsigned frequency; + unsigned latency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Handle) return true; + if(name == Audio::Synchronize) return true; + if(name == Audio::Frequency) return true; + if(name == Audio::Latency) return true; + return false; + } + + any get(const string& name) { + if(name == Audio::Handle) return (uintptr_t)settings.handle; + if(name == Audio::Synchronize) return settings.synchronize; + if(name == Audio::Frequency) return settings.frequency; + if(name == Audio::Latency) return settings.latency; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + if(name == Audio::Synchronize) { + settings.synchronize = any_cast(value); + if(ds) clear(); + return true; + } + + if(name == Audio::Frequency) { + settings.frequency = any_cast(value); + if(ds) init(); + return true; + } + + if(name == Audio::Latency) { + settings.latency = any_cast(value); + if(ds) init(); + return true; + } + + return false; + } + + void sample(uint16_t left, uint16_t right) { + device.buffer[device.bufferoffset++] = left + (right << 16); + if(device.bufferoffset < device.latency) return; + device.bufferoffset = 0; + + DWORD pos, size; + void *output; + + if(settings.synchronize == true) { + //wait until playback buffer has an empty ring to write new audio data to + while(device.distance >= device.rings - 1) { + dsb_b->GetCurrentPosition(&pos, 0); + unsigned activering = pos / (device.latency * 4); + if(activering == device.readring) { + if(settings.synchronize == false) Sleep(1); + continue; + } + + //subtract number of played rings from ring distance counter + device.distance -= (device.rings + activering - device.readring) % device.rings; + device.readring = activering; + + if(device.distance < 2) { + //buffer underflow; set max distance to recover quickly + device.distance = device.rings - 1; + device.writering = (device.rings + device.readring - 1) % device.rings; + break; + } + } + } + + device.writering = (device.writering + 1) % device.rings; + device.distance = (device.distance + 1) % device.rings; + + if(dsb_b->Lock(device.writering * device.latency * 4, device.latency * 4, &output, &size, 0, 0, 0) == DS_OK) { + memcpy(output, device.buffer, device.latency * 4); + dsb_b->Unlock(output, size, 0, 0); + } + } + + void clear() { + device.readring = 0; + device.writering = device.rings - 1; + device.distance = device.rings - 1; + + device.bufferoffset = 0; + if(device.buffer) memset(device.buffer, 0, device.latency * device.rings * 4); + + if(!dsb_b) return; + dsb_b->Stop(); + dsb_b->SetCurrentPosition(0); + + DWORD size; + void *output; + dsb_b->Lock(0, device.latency * device.rings * 4, &output, &size, 0, 0, 0); + memset(output, 0, size); + dsb_b->Unlock(output, size, 0, 0); + + dsb_b->Play(0, 0, DSBPLAY_LOOPING); + } + + bool init() { + term(); + + device.rings = 8; + device.latency = settings.frequency * settings.latency / device.rings / 1000.0 + 0.5; + device.buffer = new uint32_t[device.latency * device.rings]; + device.bufferoffset = 0; + + DirectSoundCreate(0, &ds, 0); + ds->SetCooperativeLevel((HWND)settings.handle, DSSCL_PRIORITY); + + memset(&dsbd, 0, sizeof(dsbd)); + dsbd.dwSize = sizeof(dsbd); + dsbd.dwFlags = DSBCAPS_PRIMARYBUFFER; + dsbd.dwBufferBytes = 0; + dsbd.lpwfxFormat = 0; + ds->CreateSoundBuffer(&dsbd, &dsb_p, 0); + + memset(&wfx, 0, sizeof(wfx)); + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.nChannels = 2; + wfx.nSamplesPerSec = settings.frequency; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.wBitsPerSample / 8 * wfx.nChannels; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + dsb_p->SetFormat(&wfx); + + memset(&dsbd, 0, sizeof(dsbd)); + dsbd.dwSize = sizeof(dsbd); + dsbd.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLFREQUENCY | DSBCAPS_GLOBALFOCUS | DSBCAPS_LOCSOFTWARE; + dsbd.dwBufferBytes = device.latency * device.rings * sizeof(uint32_t); + dsbd.guid3DAlgorithm = GUID_NULL; + dsbd.lpwfxFormat = &wfx; + ds->CreateSoundBuffer(&dsbd, &dsb_b, 0); + dsb_b->SetFrequency(settings.frequency); + dsb_b->SetCurrentPosition(0); + + clear(); + return true; + } + + void term() { + if(device.buffer) { + delete[] device.buffer; + device.buffer = 0; + } + + if(dsb_b) { dsb_b->Stop(); dsb_b->Release(); dsb_b = 0; } + if(dsb_p) { dsb_p->Stop(); dsb_p->Release(); dsb_p = 0; } + if(ds) { ds->Release(); ds = 0; } + } + + pAudioDS() { + ds = 0; + dsb_p = 0; + dsb_b = 0; + + device.buffer = 0; + device.bufferoffset = 0; + device.readring = 0; + device.writering = 0; + device.distance = 0; + + settings.handle = GetDesktopWindow(); + settings.synchronize = false; + settings.frequency = 22050; + settings.latency = 120; + } +}; + +DeclareAudio(DS) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/openal.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/openal.cpp new file mode 100644 index 0000000000..9ba992654d --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/openal.cpp @@ -0,0 +1,210 @@ +/* + audio.openal (2007-12-26) + author: Nach + contributors: byuu, wertigon, _willow_ +*/ + +#if defined(PLATFORM_OSX) + #include + #include +#else + #include + #include +#endif + +namespace ruby { + +class pAudioOpenAL { +public: + struct { + ALCdevice *handle; + ALCcontext *context; + ALuint source; + ALenum format; + unsigned latency; + unsigned queue_length; + } device; + + struct { + uint32_t *data; + unsigned length; + unsigned size; + } buffer; + + struct { + bool synchronize; + unsigned frequency; + unsigned latency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Synchronize) return true; + if(name == Audio::Frequency) return true; + if(name == Audio::Latency) return true; + return false; + } + + any get(const string& name) { + if(name == Audio::Synchronize) return settings.synchronize; + if(name == Audio::Frequency) return settings.frequency; + if(name == Audio::Latency) return settings.latency; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Synchronize) { + settings.synchronize = any_cast(value); + return true; + } + + if(name == Audio::Frequency) { + settings.frequency = any_cast(value); + return true; + } + + if(name == Audio::Latency) { + if(settings.latency != any_cast(value)) { + settings.latency = any_cast(value); + update_latency(); + } + return true; + } + + return false; + } + + void sample(uint16_t sl, uint16_t sr) { + buffer.data[buffer.length++] = sl + (sr << 16); + if(buffer.length < buffer.size) return; + + ALuint albuffer = 0; + int processed = 0; + while(true) { + alGetSourcei(device.source, AL_BUFFERS_PROCESSED, &processed); + while(processed--) { + alSourceUnqueueBuffers(device.source, 1, &albuffer); + alDeleteBuffers(1, &albuffer); + device.queue_length--; + } + //wait for buffer playback to catch up to sample generation if not synchronizing + if(settings.synchronize == false || device.queue_length < 3) break; + } + + if(device.queue_length < 3) { + alGenBuffers(1, &albuffer); + alBufferData(albuffer, device.format, buffer.data, buffer.size * 4, settings.frequency); + alSourceQueueBuffers(device.source, 1, &albuffer); + device.queue_length++; + } + + ALint playing; + alGetSourcei(device.source, AL_SOURCE_STATE, &playing); + if(playing != AL_PLAYING) alSourcePlay(device.source); + buffer.length = 0; + } + + void clear() { + } + + void update_latency() { + if(buffer.data) delete[] buffer.data; + buffer.size = settings.frequency * settings.latency / 1000.0 + 0.5; + buffer.data = new uint32_t[buffer.size]; + } + + bool init() { + update_latency(); + device.queue_length = 0; + + bool success = false; + if(device.handle = alcOpenDevice(NULL)) { + if(device.context = alcCreateContext(device.handle, NULL)) { + alcMakeContextCurrent(device.context); + alGenSources(1, &device.source); + + //alSourcef (device.source, AL_PITCH, 1.0); + //alSourcef (device.source, AL_GAIN, 1.0); + //alSource3f(device.source, AL_POSITION, 0.0, 0.0, 0.0); + //alSource3f(device.source, AL_VELOCITY, 0.0, 0.0, 0.0); + //alSource3f(device.source, AL_DIRECTION, 0.0, 0.0, 0.0); + //alSourcef (device.source, AL_ROLLOFF_FACTOR, 0.0); + //alSourcei (device.source, AL_SOURCE_RELATIVE, AL_TRUE); + + alListener3f(AL_POSITION, 0.0, 0.0, 0.0); + alListener3f(AL_VELOCITY, 0.0, 0.0, 0.0); + ALfloat listener_orientation[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + alListenerfv(AL_ORIENTATION, listener_orientation); + + success = true; + } + } + + if(success == false) { + term(); + return false; + } + + return true; + } + + void term() { + if(alIsSource(device.source) == AL_TRUE) { + int playing = 0; + alGetSourcei(device.source, AL_SOURCE_STATE, &playing); + if(playing == AL_PLAYING) { + alSourceStop(device.source); + int queued = 0; + alGetSourcei(device.source, AL_BUFFERS_QUEUED, &queued); + while(queued--) { + ALuint albuffer = 0; + alSourceUnqueueBuffers(device.source, 1, &albuffer); + alDeleteBuffers(1, &albuffer); + device.queue_length--; + } + } + + alDeleteSources(1, &device.source); + device.source = 0; + } + + if(device.context) { + alcMakeContextCurrent(NULL); + alcDestroyContext(device.context); + device.context = 0; + } + + if(device.handle) { + alcCloseDevice(device.handle); + device.handle = 0; + } + + if(buffer.data) { + delete[] buffer.data; + buffer.data = 0; + } + } + + pAudioOpenAL() { + device.source = 0; + device.handle = 0; + device.context = 0; + device.format = AL_FORMAT_STEREO16; + device.queue_length = 0; + + buffer.data = 0; + buffer.length = 0; + buffer.size = 0; + + settings.synchronize = true; + settings.frequency = 22050; + settings.latency = 40; + } + + ~pAudioOpenAL() { + term(); + } +}; + +DeclareAudio(OpenAL) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/oss.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/oss.cpp new file mode 100644 index 0000000000..1d1757da76 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/oss.cpp @@ -0,0 +1,113 @@ +/* + audio.oss (2007-12-26) + author: Nach +*/ + +#include +#include +#include +#include + +//OSS4 soundcard.h includes below SNDCTL defines, but OSS3 does not +//However, OSS4 soundcard.h does not reside in +//Therefore, attempt to manually define SNDCTL values if using OSS3 header +//Note that if the defines below fail to work on any specific platform, one can point soundcard.h +//above to the correct location for OSS4 (usually /usr/lib/oss/include/sys/soundcard.h) +//Failing that, one can disable OSS4 ioctl calls inside init() and remove the below defines + +#ifndef SNDCTL_DSP_COOKEDMODE + #define SNDCTL_DSP_COOKEDMODE _IOW('P', 30, int) +#endif + +#ifndef SNDCTL_DSP_POLICY + #define SNDCTL_DSP_POLICY _IOW('P', 45, int) +#endif + +namespace ruby { + +class pAudioOSS { +public: + struct { + int fd; + int format; + int channels; + const char *name; + } device; + + struct { + unsigned frequency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Frequency) return true; + return false; + } + + any get(const string& name) { + if(name == Audio::Frequency) return settings.frequency; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Frequency) { + settings.frequency = any_cast(value); + if(device.fd > 0) init(); + return true; + } + + return false; + } + + void sample(uint16_t sl, uint16_t sr) { + uint32_t sample = sl + (sr << 16); + unsigned unused = write(device.fd, &sample, 4); + } + + void clear() { + } + + bool init() { + term(); + + device.fd = open(device.name, O_WRONLY, O_NONBLOCK); + if(device.fd < 0) return false; + + #if 1 //SOUND_VERSION >= 0x040000 + //attempt to enable OSS4-specific features regardless of version + //OSS3 ioctl calls will silently fail, but sound will still work + int cooked = 1, policy = 4; //policy should be 0 - 10, lower = less latency, more CPU usage + ioctl(device.fd, SNDCTL_DSP_COOKEDMODE, &cooked); + ioctl(device.fd, SNDCTL_DSP_POLICY, &policy); + #endif + int freq = settings.frequency; + ioctl(device.fd, SNDCTL_DSP_CHANNELS, &device.channels); + ioctl(device.fd, SNDCTL_DSP_SETFMT, &device.format); + ioctl(device.fd, SNDCTL_DSP_SPEED, &freq); + + return true; + } + + void term() { + if(device.fd > 0) { + close(device.fd); + device.fd = -1; + } + } + + pAudioOSS() { + device.fd = -1; + device.format = AFMT_S16_LE; + device.channels = 2; + device.name = "/dev/dsp"; + + settings.frequency = 22050; + } + + ~pAudioOSS() { + term(); + } +}; + +DeclareAudio(OSS) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/pulseaudio.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/pulseaudio.cpp new file mode 100644 index 0000000000..656d347646 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/pulseaudio.cpp @@ -0,0 +1,177 @@ +//audio.pulseaudio (2010-01-05) +//author: RedDwarf + +#include + +namespace ruby { + +class pAudioPulseAudio { +public: + struct { + pa_mainloop *mainloop; + pa_context *context; + pa_stream *stream; + pa_sample_spec spec; + pa_buffer_attr buffer_attr; + bool first; + } device; + + struct { + uint32_t *data; + size_t size; + unsigned offset; + } buffer; + + struct { + bool synchronize; + unsigned frequency; + unsigned latency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Synchronize) return true; + if(name == Audio::Frequency) return true; + if(name == Audio::Latency) return true; + } + + any get(const string& name) { + if(name == Audio::Synchronize) return settings.synchronize; + if(name == Audio::Frequency) return settings.frequency; + if(name == Audio::Latency) return settings.latency; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Synchronize) { + settings.synchronize = any_cast(value); + return true; + } + + if(name == Audio::Frequency) { + settings.frequency = any_cast(value); + if(device.stream) { + pa_operation_unref(pa_stream_update_sample_rate(device.stream, settings.frequency, NULL, NULL)); + } + return true; + } + + if(name == Audio::Latency) { + settings.latency = any_cast(value); + if(device.stream) { + device.buffer_attr.tlength = pa_usec_to_bytes(settings.latency * PA_USEC_PER_MSEC, &device.spec); + pa_stream_set_buffer_attr(device.stream, &device.buffer_attr, NULL, NULL); + } + return true; + } + } + + void sample(uint16_t left, uint16_t right) { + pa_stream_begin_write(device.stream, (void**)&buffer.data, &buffer.size); + buffer.data[buffer.offset++] = left + (right << 16); + if((buffer.offset + 1) * pa_frame_size(&device.spec) <= buffer.size) return; + + while(true) { + if(device.first) { + device.first = false; + pa_mainloop_iterate(device.mainloop, 0, NULL); + } else { + pa_mainloop_iterate(device.mainloop, 1, NULL); + } + unsigned length = pa_stream_writable_size(device.stream); + if(length >= buffer.offset * pa_frame_size(&device.spec)) break; + if(settings.synchronize == false) { + buffer.offset = 0; + return; + } + } + + pa_stream_write(device.stream, (const void*)buffer.data, buffer.offset * pa_frame_size(&device.spec), NULL, 0LL, PA_SEEK_RELATIVE); + buffer.data = 0; + buffer.offset = 0; + } + + void clear() { + } + + bool init() { + device.mainloop = pa_mainloop_new(); + + device.context = pa_context_new(pa_mainloop_get_api(device.mainloop), "ruby::pulseaudio"); + pa_context_connect(device.context, NULL, PA_CONTEXT_NOFLAGS, NULL); + + pa_context_state_t cstate; + do { + pa_mainloop_iterate(device.mainloop, 1, NULL); + cstate = pa_context_get_state(device.context); + if(!PA_CONTEXT_IS_GOOD(cstate)) return false; + } while(cstate != PA_CONTEXT_READY); + + device.spec.format = PA_SAMPLE_S16LE; + device.spec.channels = 2; + device.spec.rate = settings.frequency; + device.stream = pa_stream_new(device.context, "audio", &device.spec, NULL); + + device.buffer_attr.maxlength = -1; + device.buffer_attr.tlength = pa_usec_to_bytes(settings.latency * PA_USEC_PER_MSEC, &device.spec); + device.buffer_attr.prebuf = -1; + device.buffer_attr.minreq = -1; + device.buffer_attr.fragsize = -1; + + pa_stream_flags_t flags = (pa_stream_flags_t)(PA_STREAM_ADJUST_LATENCY | PA_STREAM_VARIABLE_RATE); + pa_stream_connect_playback(device.stream, NULL, &device.buffer_attr, flags, NULL, NULL); + + pa_stream_state_t sstate; + do { + pa_mainloop_iterate(device.mainloop, 1, NULL); + sstate = pa_stream_get_state(device.stream); + if(!PA_STREAM_IS_GOOD(sstate)) return false; + } while(sstate != PA_STREAM_READY); + + buffer.size = 960; + buffer.offset = 0; + device.first = true; + + return true; + } + + void term() { + if(buffer.data) { + pa_stream_cancel_write(device.stream); + buffer.data = 0; + } + + if(device.stream) { + pa_stream_disconnect(device.stream); + pa_stream_unref(device.stream); + device.stream = 0; + } + + if(device.context) { + pa_context_disconnect(device.context); + pa_context_unref(device.context); + device.context = 0; + } + + if(device.mainloop) { + pa_mainloop_free(device.mainloop); + device.mainloop = 0; + } + } + + pAudioPulseAudio() { + device.mainloop = 0; + device.context = 0; + device.stream = 0; + buffer.data = 0; + settings.synchronize = false; + settings.frequency = 22050; + settings.latency = 60; + } + + ~pAudioPulseAudio() { + term(); + } +}; + +DeclareAudio(PulseAudio) + +} diff --git a/libmednahawk/src/snes/src/lib/ruby/audio/pulseaudiosimple.cpp b/libmednahawk/src/snes/src/lib/ruby/audio/pulseaudiosimple.cpp new file mode 100644 index 0000000000..f82de64c05 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/audio/pulseaudiosimple.cpp @@ -0,0 +1,115 @@ +//audio.pulseaudiosimple (2010-01-05) +//author: byuu + +#include +#include + +namespace ruby { + +class pAudioPulseAudioSimple { +public: + struct { + pa_simple *handle; + pa_sample_spec spec; + } device; + + struct { + uint32_t *data; + unsigned offset; + } buffer; + + struct { + unsigned frequency; + } settings; + + bool cap(const string& name) { + if(name == Audio::Frequency) return true; + return false; + } + + any get(const string& name) { + if(name == Audio::Frequency) return settings.frequency; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Audio::Frequency) { + settings.frequency = any_cast(value); + if(device.handle) init(); + return true; + } + + return false; + } + + void sample(uint16_t left, uint16_t right) { + if(!device.handle) return; + + buffer.data[buffer.offset++] = left + (right << 16); + if(buffer.offset >= 64) { + int error; + pa_simple_write(device.handle, (const void*)buffer.data, buffer.offset * sizeof(uint32_t), &error); + buffer.offset = 0; + } + } + + void clear() { + } + + bool init() { + term(); + + device.spec.format = PA_SAMPLE_S16LE; + device.spec.channels = 2; + device.spec.rate = settings.frequency; + + int error = 0; + device.handle = pa_simple_new( + 0, //default server + "ruby::pulseaudiosimple", //application name + PA_STREAM_PLAYBACK, //direction + 0, //default device + "audio", //stream description + &device.spec, //sample format + 0, //default channel map + 0, //default buffering attributes + &error //error code + ); + if(!device.handle) { + fprintf(stderr, "ruby::pulseaudiosimple failed to initialize - %s\n", pa_strerror(error)); + return false; + } + + buffer.data = new uint32_t[64]; + buffer.offset = 0; + return true; + } + + void term() { + if(device.handle) { + int error; + pa_simple_flush(device.handle, &error); + pa_simple_free(device.handle); + device.handle = 0; + } + + if(buffer.data) { + delete[] buffer.data; + buffer.data = 0; + } + } + + pAudioPulseAudioSimple() { + device.handle = 0; + buffer.data = 0; + settings.frequency = 22050; + } + + ~pAudioPulseAudioSimple() { + term(); + } +}; + +DeclareAudio(PulseAudioSimple) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input.hpp b/libmednahawk/src/snes/src/lib/ruby/input.hpp new file mode 100644 index 0000000000..bc9659f9ac --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input.hpp @@ -0,0 +1,22 @@ +class Input { +public: + static const char *Handle; + static const char *KeyboardSupport; + static const char *MouseSupport; + static const char *JoypadSupport; + + virtual bool cap(const nall::string& name) { return false; } + virtual nall::any get(const nall::string& name) { return false; } + virtual bool set(const nall::string& name, const nall::any& value) { return false; } + + virtual bool acquire() { return false; } + virtual bool unacquire() { return false; } + virtual bool acquired() { return false; } + + virtual bool poll(int16_t *table) { return false; } + virtual bool init() { return true; } + virtual void term() {} + + Input() {} + virtual ~Input() {} +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input/carbon.cpp b/libmednahawk/src/snes/src/lib/ruby/input/carbon.cpp new file mode 100644 index 0000000000..5339c7ddc8 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input/carbon.cpp @@ -0,0 +1,157 @@ +namespace ruby { + +class pInputCarbon { +public: + bool cap(const string& name) { + return false; + } + + any get(const string& name) { + return false; + } + + bool set(const string& name, const any& value) { + return false; + } + + bool acquire() { return false; } + bool unacquire() { return false; } + bool acquired() { return false; } + + bool poll(int16_t *table) { + memset(table, 0, Scancode::Limit * sizeof(int16_t)); + + KeyMap keys; + GetKeys(keys); + uint8_t *keymap = (uint8_t*)keys; + + #define map(id, name) table[keyboard(0)[name]] = (bool)(keymap[id >> 3] & (1 << (id & 7))) + map(0x35, Keyboard::Escape); + + map(0x7a, Keyboard::F1); + map(0x78, Keyboard::F2); + map(0x63, Keyboard::F3); + map(0x76, Keyboard::F4); + map(0x60, Keyboard::F5); + map(0x61, Keyboard::F6); + map(0x62, Keyboard::F7); + map(0x64, Keyboard::F8); + map(0x65, Keyboard::F9); + map(0x6d, Keyboard::F10); + map(0x67, Keyboard::F11); + //map(0x??, Keyboard::F12); + + map(0x69, Keyboard::PrintScreen); + //map(0x??, Keyboard::ScrollLock); + map(0x71, Keyboard::Pause); + + map(0x32, Keyboard::Tilde); + map(0x12, Keyboard::Num1); + map(0x13, Keyboard::Num2); + map(0x14, Keyboard::Num3); + map(0x15, Keyboard::Num4); + map(0x17, Keyboard::Num5); + map(0x16, Keyboard::Num6); + map(0x1a, Keyboard::Num7); + map(0x1c, Keyboard::Num8); + map(0x19, Keyboard::Num9); + map(0x1d, Keyboard::Num0); + + map(0x1b, Keyboard::Dash); + map(0x18, Keyboard::Equal); + map(0x33, Keyboard::Backspace); + + map(0x72, Keyboard::Insert); + map(0x75, Keyboard::Delete); + map(0x73, Keyboard::Home); + map(0x77, Keyboard::End); + map(0x74, Keyboard::PageUp); + map(0x79, Keyboard::PageDown); + + map(0x00, Keyboard::A); + map(0x0b, Keyboard::B); + map(0x08, Keyboard::C); + map(0x02, Keyboard::D); + map(0x0e, Keyboard::E); + map(0x03, Keyboard::F); + map(0x05, Keyboard::G); + map(0x04, Keyboard::H); + map(0x22, Keyboard::I); + map(0x26, Keyboard::J); + map(0x28, Keyboard::K); + map(0x25, Keyboard::L); + map(0x2e, Keyboard::M); + map(0x2d, Keyboard::N); + map(0x1f, Keyboard::O); + map(0x23, Keyboard::P); + map(0x0c, Keyboard::Q); + map(0x0f, Keyboard::R); + map(0x01, Keyboard::S); + map(0x11, Keyboard::T); + map(0x20, Keyboard::U); + map(0x09, Keyboard::V); + map(0x0d, Keyboard::W); + map(0x07, Keyboard::X); + map(0x10, Keyboard::Y); + map(0x06, Keyboard::Z); + + map(0x21, Keyboard::LeftBracket); + map(0x1e, Keyboard::RightBracket); + map(0x2a, Keyboard::Backslash); + map(0x29, Keyboard::Semicolon); + map(0x27, Keyboard::Apostrophe); + map(0x2b, Keyboard::Comma); + map(0x2f, Keyboard::Period); + map(0x2c, Keyboard::Slash); + + map(0x53, Keyboard::Keypad1); + map(0x54, Keyboard::Keypad2); + map(0x55, Keyboard::Keypad3); + map(0x56, Keyboard::Keypad4); + map(0x57, Keyboard::Keypad5); + map(0x58, Keyboard::Keypad6); + map(0x59, Keyboard::Keypad7); + map(0x5b, Keyboard::Keypad8); + map(0x5c, Keyboard::Keypad9); + map(0x52, Keyboard::Keypad0); + + //map(0x??, Keyboard::Point); + map(0x4c, Keyboard::Enter); + map(0x45, Keyboard::Add); + map(0x4e, Keyboard::Subtract); + map(0x43, Keyboard::Multiply); + map(0x4b, Keyboard::Divide); + + map(0x47, Keyboard::NumLock); + //map(0x39, Keyboard::CapsLock); + + map(0x7e, Keyboard::Up); + map(0x7d, Keyboard::Down); + map(0x7b, Keyboard::Left); + map(0x7c, Keyboard::Right); + + map(0x30, Keyboard::Tab); + map(0x24, Keyboard::Return); + map(0x31, Keyboard::Spacebar); + //map(0x??, Keyboard::Menu); + + map(0x38, Keyboard::Shift); + map(0x3b, Keyboard::Control); + map(0x3a, Keyboard::Alt); + map(0x37, Keyboard::Super); + #undef map + + return true; + } + + bool init() { + return true; + } + + void term() { + } +}; + +DeclareInput(Carbon) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input/directinput.cpp b/libmednahawk/src/snes/src/lib/ruby/input/directinput.cpp new file mode 100644 index 0000000000..87f20ecaaf --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input/directinput.cpp @@ -0,0 +1,387 @@ +#define DIRECTINPUT_VERSION 0x0800 +#include + +namespace ruby { + +static BOOL CALLBACK DI_EnumJoypadsCallback(const DIDEVICEINSTANCE*, void*); +static BOOL CALLBACK DI_EnumJoypadAxesCallback(const DIDEVICEOBJECTINSTANCE*, void*); + +using namespace nall; + +class pInputDI { +public: + struct { + LPDIRECTINPUT8 context; + LPDIRECTINPUTDEVICE8 keyboard; + LPDIRECTINPUTDEVICE8 mouse; + LPDIRECTINPUTDEVICE8 gamepad[Joypad::Count]; + bool mouseacquired; + } device; + + struct { + HWND handle; + } settings; + + bool cap(const string& name) { + if(name == Input::Handle) return true; + if(name == Input::KeyboardSupport) return true; + if(name == Input::MouseSupport) return true; + if(name == Input::JoypadSupport) return true; + return false; + } + + any get(const string& name) { + if(name == Input::Handle) return (uintptr_t)settings.handle; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Input::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + return false; + } + + bool poll(int16_t *table) { + memset(table, 0, Scancode::Limit * sizeof(int16_t)); + + //======== + //Keyboard + //======== + + if(device.keyboard) { + uint8_t state[256]; + if(FAILED(device.keyboard->GetDeviceState(sizeof state, state))) { + device.keyboard->Acquire(); + if(FAILED(device.keyboard->GetDeviceState(sizeof state, state))) { + memset(state, 0, sizeof state); + } + } + + #define key(id) table[keyboard(0)[id]] + + key(Keyboard::Escape) = (bool)(state[0x01] & 0x80); + key(Keyboard::F1 ) = (bool)(state[0x3b] & 0x80); + key(Keyboard::F2 ) = (bool)(state[0x3c] & 0x80); + key(Keyboard::F3 ) = (bool)(state[0x3d] & 0x80); + key(Keyboard::F4 ) = (bool)(state[0x3e] & 0x80); + key(Keyboard::F5 ) = (bool)(state[0x3f] & 0x80); + key(Keyboard::F6 ) = (bool)(state[0x40] & 0x80); + key(Keyboard::F7 ) = (bool)(state[0x41] & 0x80); + key(Keyboard::F8 ) = (bool)(state[0x42] & 0x80); + key(Keyboard::F9 ) = (bool)(state[0x43] & 0x80); + key(Keyboard::F10 ) = (bool)(state[0x44] & 0x80); + key(Keyboard::F11 ) = (bool)(state[0x57] & 0x80); + key(Keyboard::F12 ) = (bool)(state[0x58] & 0x80); + + key(Keyboard::PrintScreen) = (bool)(state[0xb7] & 0x80); + key(Keyboard::ScrollLock ) = (bool)(state[0x46] & 0x80); + key(Keyboard::Pause ) = (bool)(state[0xc5] & 0x80); + key(Keyboard::Tilde ) = (bool)(state[0x29] & 0x80); + + key(Keyboard::Num1) = (bool)(state[0x02] & 0x80); + key(Keyboard::Num2) = (bool)(state[0x03] & 0x80); + key(Keyboard::Num3) = (bool)(state[0x04] & 0x80); + key(Keyboard::Num4) = (bool)(state[0x05] & 0x80); + key(Keyboard::Num5) = (bool)(state[0x06] & 0x80); + key(Keyboard::Num6) = (bool)(state[0x07] & 0x80); + key(Keyboard::Num7) = (bool)(state[0x08] & 0x80); + key(Keyboard::Num8) = (bool)(state[0x09] & 0x80); + key(Keyboard::Num9) = (bool)(state[0x0a] & 0x80); + key(Keyboard::Num0) = (bool)(state[0x0b] & 0x80); + + key(Keyboard::Dash ) = (bool)(state[0x0c] & 0x80); + key(Keyboard::Equal ) = (bool)(state[0x0d] & 0x80); + key(Keyboard::Backspace) = (bool)(state[0x0e] & 0x80); + + key(Keyboard::Insert ) = (bool)(state[0xd2] & 0x80); + key(Keyboard::Delete ) = (bool)(state[0xd3] & 0x80); + key(Keyboard::Home ) = (bool)(state[0xc7] & 0x80); + key(Keyboard::End ) = (bool)(state[0xcf] & 0x80); + key(Keyboard::PageUp ) = (bool)(state[0xc9] & 0x80); + key(Keyboard::PageDown) = (bool)(state[0xd1] & 0x80); + + key(Keyboard::A) = (bool)(state[0x1e] & 0x80); + key(Keyboard::B) = (bool)(state[0x30] & 0x80); + key(Keyboard::C) = (bool)(state[0x2e] & 0x80); + key(Keyboard::D) = (bool)(state[0x20] & 0x80); + key(Keyboard::E) = (bool)(state[0x12] & 0x80); + key(Keyboard::F) = (bool)(state[0x21] & 0x80); + key(Keyboard::G) = (bool)(state[0x22] & 0x80); + key(Keyboard::H) = (bool)(state[0x23] & 0x80); + key(Keyboard::I) = (bool)(state[0x17] & 0x80); + key(Keyboard::J) = (bool)(state[0x24] & 0x80); + key(Keyboard::K) = (bool)(state[0x25] & 0x80); + key(Keyboard::L) = (bool)(state[0x26] & 0x80); + key(Keyboard::M) = (bool)(state[0x32] & 0x80); + key(Keyboard::N) = (bool)(state[0x31] & 0x80); + key(Keyboard::O) = (bool)(state[0x18] & 0x80); + key(Keyboard::P) = (bool)(state[0x19] & 0x80); + key(Keyboard::Q) = (bool)(state[0x10] & 0x80); + key(Keyboard::R) = (bool)(state[0x13] & 0x80); + key(Keyboard::S) = (bool)(state[0x1f] & 0x80); + key(Keyboard::T) = (bool)(state[0x14] & 0x80); + key(Keyboard::U) = (bool)(state[0x16] & 0x80); + key(Keyboard::V) = (bool)(state[0x2f] & 0x80); + key(Keyboard::W) = (bool)(state[0x11] & 0x80); + key(Keyboard::X) = (bool)(state[0x2d] & 0x80); + key(Keyboard::Y) = (bool)(state[0x15] & 0x80); + key(Keyboard::Z) = (bool)(state[0x2c] & 0x80); + + key(Keyboard::LeftBracket ) = (bool)(state[0x1a] & 0x80); + key(Keyboard::RightBracket) = (bool)(state[0x1b] & 0x80); + key(Keyboard::Backslash ) = (bool)(state[0x2b] & 0x80); + key(Keyboard::Semicolon ) = (bool)(state[0x27] & 0x80); + key(Keyboard::Apostrophe ) = (bool)(state[0x28] & 0x80); + key(Keyboard::Comma ) = (bool)(state[0x33] & 0x80); + key(Keyboard::Period ) = (bool)(state[0x34] & 0x80); + key(Keyboard::Slash ) = (bool)(state[0x35] & 0x80); + + key(Keyboard::Keypad0) = (bool)(state[0x4f] & 0x80); + key(Keyboard::Keypad1) = (bool)(state[0x50] & 0x80); + key(Keyboard::Keypad2) = (bool)(state[0x51] & 0x80); + key(Keyboard::Keypad3) = (bool)(state[0x4b] & 0x80); + key(Keyboard::Keypad4) = (bool)(state[0x4c] & 0x80); + key(Keyboard::Keypad5) = (bool)(state[0x4d] & 0x80); + key(Keyboard::Keypad6) = (bool)(state[0x47] & 0x80); + key(Keyboard::Keypad7) = (bool)(state[0x48] & 0x80); + key(Keyboard::Keypad8) = (bool)(state[0x49] & 0x80); + key(Keyboard::Keypad9) = (bool)(state[0x52] & 0x80); + key(Keyboard::Point ) = (bool)(state[0x53] & 0x80); + + key(Keyboard::Add ) = (bool)(state[0x4e] & 0x80); + key(Keyboard::Subtract) = (bool)(state[0x4a] & 0x80); + key(Keyboard::Multiply) = (bool)(state[0x37] & 0x80); + key(Keyboard::Divide ) = (bool)(state[0xb5] & 0x80); + key(Keyboard::Enter ) = (bool)(state[0x9c] & 0x80); + + key(Keyboard::NumLock ) = (bool)(state[0x45] & 0x80); + key(Keyboard::CapsLock) = (bool)(state[0x3a] & 0x80); + + key(Keyboard::Up ) = (bool)(state[0xc8] & 0x80); + key(Keyboard::Down ) = (bool)(state[0xd0] & 0x80); + key(Keyboard::Left ) = (bool)(state[0xcb] & 0x80); + key(Keyboard::Right) = (bool)(state[0xcd] & 0x80); + + key(Keyboard::Tab ) = (bool)(state[0x0f] & 0x80); + key(Keyboard::Return ) = (bool)(state[0x1c] & 0x80); + key(Keyboard::Spacebar) = (bool)(state[0x39] & 0x80); + key(Keyboard::Menu ) = (bool)(state[0xdd] & 0x80); + + key(Keyboard::Shift ) = (bool)(state[0x2a] & 0x80) || (bool)(state[0x36] & 0x80); + key(Keyboard::Control) = (bool)(state[0x1d] & 0x80) || (bool)(state[0x9d] & 0x80); + key(Keyboard::Alt ) = (bool)(state[0x38] & 0x80) || (bool)(state[0xb8] & 0x80); + key(Keyboard::Super ) = (bool)(state[0xdb] & 0x80) || (bool)(state[0xdc] & 0x80); + + #undef key + } + + //===== + //Mouse + //===== + + if(device.mouse) { + DIMOUSESTATE2 state; + if(FAILED(device.mouse->GetDeviceState(sizeof(DIMOUSESTATE2), (void*)&state))) { + device.mouse->Acquire(); + if(FAILED(device.mouse->GetDeviceState(sizeof(DIMOUSESTATE2), (void*)&state))) { + memset(&state, 0, sizeof(DIMOUSESTATE2)); + } + } + + table[mouse(0).axis(0)] = state.lX; + table[mouse(0).axis(1)] = state.lY; + table[mouse(0).axis(2)] = state.lZ / WHEEL_DELTA; + for(unsigned n = 0; n < Mouse::Buttons; n++) { + table[mouse(0).button(n)] = (bool)state.rgbButtons[n]; + } + + //on Windows, 0 = left, 1 = right, 2 = middle + //swap middle and right buttons for consistency with Linux + int16_t temp = table[mouse(0).button(1)]; + table[mouse(0).button(1)] = table[mouse(0).button(2)]; + table[mouse(0).button(2)] = temp; + } + + //========= + //Joypad(s) + //========= + + for(unsigned i = 0; i < Joypad::Count; i++) { + if(!device.gamepad[i]) continue; + + if(FAILED(device.gamepad[i]->Poll())) { + device.gamepad[i]->Acquire(); + continue; + } + + DIJOYSTATE2 state; + device.gamepad[i]->GetDeviceState(sizeof(DIJOYSTATE2), &state); + + //POV hats + for(unsigned n = 0; n < min((unsigned)Joypad::Hats, 4); n++) { + //POV value is in clockwise-hundredth degree units. + unsigned pov = state.rgdwPOV[n]; + //some drivers report a centered POV hat as -1U, others as 65535U. + //>= 36000 will match both, as well as invalid ranges. + if(pov < 36000) { + if(pov >= 31500 || pov <= 4500) table[joypad(i).hat(n)] |= Joypad::HatUp; + if(pov >= 4500 && pov <= 13500) table[joypad(i).hat(n)] |= Joypad::HatRight; + if(pov >= 13500 && pov <= 22500) table[joypad(i).hat(n)] |= Joypad::HatDown; + if(pov >= 22500 && pov <= 31500) table[joypad(i).hat(n)] |= Joypad::HatLeft; + } + } + + //axes + table[joypad(i).axis(0)] = state.lX; + table[joypad(i).axis(1)] = state.lY; + table[joypad(i).axis(2)] = state.lZ; + table[joypad(i).axis(3)] = state.lRx; + table[joypad(i).axis(4)] = state.lRy; + table[joypad(i).axis(5)] = state.lRz; + + //buttons + for(unsigned n = 0; n < min((unsigned)Joypad::Buttons, 128); n++) { + table[joypad(i).button(n)] = (bool)state.rgbButtons[n]; + } + } + + return true; + } + + bool init_joypad(const DIDEVICEINSTANCE *instance) { + unsigned n; + for(n = 0; n < Joypad::Count; n++) { if(!device.gamepad[n]) break; } + if(n >= Joypad::Count) return DIENUM_STOP; + + if(FAILED(device.context->CreateDevice(instance->guidInstance, &device.gamepad[n], 0))) { + return DIENUM_CONTINUE; //continue and try next gamepad + } + + device.gamepad[n]->SetDataFormat(&c_dfDIJoystick2); + device.gamepad[n]->SetCooperativeLevel(settings.handle, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND); + device.gamepad[n]->EnumObjects(DI_EnumJoypadAxesCallback, (void*)this, DIDFT_ABSAXIS); + + return DIENUM_CONTINUE; + } + + bool init_axis(const DIDEVICEOBJECTINSTANCE *instance) { + signed n; + for(n = Joypad::Count - 1; n >= 0; n--) { if(device.gamepad[n]) break; } + if(n < 0) return DIENUM_STOP; + + DIPROPRANGE range; + range.diph.dwSize = sizeof(DIPROPRANGE); + range.diph.dwHeaderSize = sizeof(DIPROPHEADER); + range.diph.dwHow = DIPH_BYID; + range.diph.dwObj = instance->dwType; + range.lMin = -32768; + range.lMax = +32767; + device.gamepad[n]->SetProperty(DIPROP_RANGE, &range.diph); + + return DIENUM_CONTINUE; + } + + bool init() { + device.context = 0; + device.keyboard = 0; + device.mouse = 0; + for(unsigned i = 0; i < Joypad::Count; i++) device.gamepad[i] = 0; + device.mouseacquired = false; + + DirectInput8Create(GetModuleHandle(0), 0x0800, IID_IDirectInput8, (void**)&device.context, 0); + + device.context->CreateDevice(GUID_SysKeyboard, &device.keyboard, 0); + device.keyboard->SetDataFormat(&c_dfDIKeyboard); + device.keyboard->SetCooperativeLevel(settings.handle, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND); + device.keyboard->Acquire(); + + device.context->CreateDevice(GUID_SysMouse, &device.mouse, 0); + device.mouse->SetDataFormat(&c_dfDIMouse2); + HRESULT hr = device.mouse->SetCooperativeLevel(settings.handle, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND); + device.mouse->Acquire(); + + device.context->EnumDevices(DI8DEVCLASS_GAMECTRL, DI_EnumJoypadsCallback, (void*)this, DIEDFL_ATTACHEDONLY); + + return true; + } + + void term() { + if(device.keyboard) { + device.keyboard->Unacquire(); + device.keyboard->Release(); + device.keyboard = 0; + } + + if(device.mouse) { + device.mouse->Unacquire(); + device.mouse->Release(); + device.mouse = 0; + } + + for(unsigned i = 0; i < Joypad::Count; i++) { + if(device.gamepad[i]) { + device.gamepad[i]->Unacquire(); + device.gamepad[i]->Release(); + device.gamepad[i] = 0; + } + } + + if(device.context) { + device.context->Release(); + device.context = 0; + } + } + + bool acquire() { + if(!device.mouse) return false; + if(acquired() == false) { + device.mouse->Unacquire(); + device.mouse->SetCooperativeLevel(settings.handle, DISCL_EXCLUSIVE | DISCL_FOREGROUND); + device.mouse->Acquire(); + device.mouseacquired = true; + } + return true; + } + + bool unacquire() { + if(!device.mouse) return false; + if(acquired() == true) { + device.mouse->Unacquire(); + device.mouse->SetCooperativeLevel(settings.handle, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND); + device.mouse->Acquire(); + device.mouseacquired = false; + } + return true; + } + + bool acquired() { + return device.mouseacquired; + } + + pInputDI() { + device.context = 0; + device.keyboard = 0; + device.mouse = 0; + for(unsigned i = 0; i < Joypad::Count; i++) device.gamepad[i] = 0; + device.mouseacquired = false; + + settings.handle = 0; + } + + ~pInputDI() { term(); } +}; + +BOOL CALLBACK DI_EnumJoypadsCallback(const DIDEVICEINSTANCE *instance, void *p) { + return ((pInputDI*)p)->init_joypad(instance); +} + +BOOL CALLBACK DI_EnumJoypadAxesCallback(const DIDEVICEOBJECTINSTANCE *instance, void *p) { + return ((pInputDI*)p)->init_axis(instance); +} + +DeclareInput(DI) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input/rawinput.cpp b/libmednahawk/src/snes/src/lib/ruby/input/rawinput.cpp new file mode 100644 index 0000000000..83ba1aba15 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input/rawinput.cpp @@ -0,0 +1,797 @@ +//RawInput driver +//author: byuu + +//this driver utilizes RawInput (WM_INPUT) to capture keyboard and mouse input. +//although this requires WinXP or newer, it is the only way to uniquely identify +//and independently map multiple keyboards and mice. DirectInput merges all +//keyboards and mice into one device per. +// +//as WM_INPUT lacks specific RAWINPUT structures for gamepads, giving only raw +//data, and because DirectInput supports up to 16 joypads, DirectInput is used +//for joypad mapping. +// +//further, Xbox 360 controllers are explicitly detected and supported through +//XInput. this is because under DirectInput, the LT / RT (trigger) buttons are +//merged into a single Z-axis -- making it impossible to detect both buttons +//being pressed at the same time. with XInput, the state of both trigger +//buttons can be read independently. +// +//so in essence, this is actually more of a hybrid driver. + +#define DIRECTINPUT_VERSION 0x0800 +#include +#include + +namespace ruby { + +static DWORD WINAPI RawInputThreadProc(void*); +static LRESULT CALLBACK RawInputWindowProc(HWND, UINT, WPARAM, LPARAM); + +class RawInput { +public: + HANDLE mutex; + HWND hwnd; + bool initialized; + bool ready; + + struct Device { + HANDLE handle; + }; + + struct Keyboard : Device { + bool state[nall::Keyboard::Size]; + + void update(RAWINPUT *input) { + unsigned code = input->data.keyboard.MakeCode; + unsigned flags = input->data.keyboard.Flags; + + #define map(id, flag, name) if(code == id) state[name] = (bool)(flags == flag); + map(0x0001, 0, nall::Keyboard::Escape) + map(0x003b, 0, nall::Keyboard::F1) + map(0x003c, 0, nall::Keyboard::F2) + map(0x003d, 0, nall::Keyboard::F3) + map(0x003e, 0, nall::Keyboard::F4) + map(0x003f, 0, nall::Keyboard::F5) + map(0x0040, 0, nall::Keyboard::F6) + map(0x0041, 0, nall::Keyboard::F7) + map(0x0042, 0, nall::Keyboard::F8) + map(0x0043, 0, nall::Keyboard::F9) + map(0x0044, 0, nall::Keyboard::F10) + map(0x0057, 0, nall::Keyboard::F11) + map(0x0058, 0, nall::Keyboard::F12) + + map(0x0037, 2, nall::Keyboard::PrintScreen) + map(0x0046, 0, nall::Keyboard::ScrollLock) + map(0x001d, 4, nall::Keyboard::Pause) + map(0x0029, 0, nall::Keyboard::Tilde) + + map(0x0002, 0, nall::Keyboard::Num1) + map(0x0003, 0, nall::Keyboard::Num2) + map(0x0004, 0, nall::Keyboard::Num3) + map(0x0005, 0, nall::Keyboard::Num4) + map(0x0006, 0, nall::Keyboard::Num5) + map(0x0007, 0, nall::Keyboard::Num6) + map(0x0008, 0, nall::Keyboard::Num7) + map(0x0009, 0, nall::Keyboard::Num8) + map(0x000a, 0, nall::Keyboard::Num9) + map(0x000b, 0, nall::Keyboard::Num0) + + map(0x000c, 0, nall::Keyboard::Dash) + map(0x000d, 0, nall::Keyboard::Equal) + map(0x000e, 0, nall::Keyboard::Backspace) + + map(0x0052, 2, nall::Keyboard::Insert) + map(0x0053, 2, nall::Keyboard::Delete) + map(0x0047, 2, nall::Keyboard::Home) + map(0x004f, 2, nall::Keyboard::End) + map(0x0049, 2, nall::Keyboard::PageUp) + map(0x0051, 2, nall::Keyboard::PageDown) + + map(0x001e, 0, nall::Keyboard::A) + map(0x0030, 0, nall::Keyboard::B) + map(0x002e, 0, nall::Keyboard::C) + map(0x0020, 0, nall::Keyboard::D) + map(0x0012, 0, nall::Keyboard::E) + map(0x0021, 0, nall::Keyboard::F) + map(0x0022, 0, nall::Keyboard::G) + map(0x0023, 0, nall::Keyboard::H) + map(0x0017, 0, nall::Keyboard::I) + map(0x0024, 0, nall::Keyboard::J) + map(0x0025, 0, nall::Keyboard::K) + map(0x0026, 0, nall::Keyboard::L) + map(0x0032, 0, nall::Keyboard::M) + map(0x0031, 0, nall::Keyboard::N) + map(0x0018, 0, nall::Keyboard::O) + map(0x0019, 0, nall::Keyboard::P) + map(0x0010, 0, nall::Keyboard::Q) + map(0x0013, 0, nall::Keyboard::R) + map(0x001f, 0, nall::Keyboard::S) + map(0x0014, 0, nall::Keyboard::T) + map(0x0016, 0, nall::Keyboard::U) + map(0x002f, 0, nall::Keyboard::V) + map(0x0011, 0, nall::Keyboard::W) + map(0x002d, 0, nall::Keyboard::X) + map(0x0015, 0, nall::Keyboard::Y) + map(0x002c, 0, nall::Keyboard::Z) + + map(0x001a, 0, nall::Keyboard::LeftBracket) + map(0x001b, 0, nall::Keyboard::RightBracket) + map(0x002b, 0, nall::Keyboard::Backslash) + map(0x0027, 0, nall::Keyboard::Semicolon) + map(0x0028, 0, nall::Keyboard::Apostrophe) + map(0x0033, 0, nall::Keyboard::Comma) + map(0x0034, 0, nall::Keyboard::Period) + map(0x0035, 0, nall::Keyboard::Slash) + + map(0x004f, 0, nall::Keyboard::Keypad1) + map(0x0050, 0, nall::Keyboard::Keypad2) + map(0x0051, 0, nall::Keyboard::Keypad3) + map(0x004b, 0, nall::Keyboard::Keypad4) + map(0x004c, 0, nall::Keyboard::Keypad5) + map(0x004d, 0, nall::Keyboard::Keypad6) + map(0x0047, 0, nall::Keyboard::Keypad7) + map(0x0048, 0, nall::Keyboard::Keypad8) + map(0x0049, 0, nall::Keyboard::Keypad9) + map(0x0052, 0, nall::Keyboard::Keypad0) + + map(0x0053, 0, nall::Keyboard::Point) + map(0x001c, 2, nall::Keyboard::Enter) + map(0x004e, 0, nall::Keyboard::Add) + map(0x004a, 0, nall::Keyboard::Subtract) + map(0x0037, 0, nall::Keyboard::Multiply) + map(0x0035, 2, nall::Keyboard::Divide) + + map(0x0045, 0, nall::Keyboard::NumLock) + map(0x003a, 0, nall::Keyboard::CapsLock) + + //Pause signals 0x1d:4 + 0x45:0, whereas NumLock signals only 0x45:0. + //this makes it impractical to detect both Pause+NumLock independently. + //workaround: always detect Pause; detect NumLock only when Pause is released. + if(state[nall::Keyboard::Pause]) state[nall::Keyboard::NumLock] = false; + + map(0x0048, 2, nall::Keyboard::Up) + map(0x0050, 2, nall::Keyboard::Down) + map(0x004b, 2, nall::Keyboard::Left) + map(0x004d, 2, nall::Keyboard::Right) + + map(0x000f, 0, nall::Keyboard::Tab) + map(0x001c, 0, nall::Keyboard::Return) + map(0x0039, 0, nall::Keyboard::Spacebar) + map(0x005d, 2, nall::Keyboard::Menu) + + //merge left and right modifiers to one ID + if(code == 0x002a && flags == 0) state[nall::Keyboard::Shift] = 1; //left shift + if(code == 0x002a && flags == 1) state[nall::Keyboard::Shift] = 0; + if(code == 0x0036 && flags == 0) state[nall::Keyboard::Shift] = 1; //right shift + if(code == 0x0036 && flags == 1) state[nall::Keyboard::Shift] = 0; + + if(code == 0x001d && flags == 0) state[nall::Keyboard::Control] = 1; //left control + if(code == 0x001d && flags == 1) state[nall::Keyboard::Control] = 0; + if(code == 0x001d && flags == 2) state[nall::Keyboard::Control] = 1; //right control + if(code == 0x001d && flags == 3) state[nall::Keyboard::Control] = 0; + + if(code == 0x0038 && flags == 0) state[nall::Keyboard::Alt] = 1; //left alt + if(code == 0x0038 && flags == 1) state[nall::Keyboard::Alt] = 0; + if(code == 0x0038 && flags == 2) state[nall::Keyboard::Alt] = 1; //right alt + if(code == 0x0038 && flags == 3) state[nall::Keyboard::Alt] = 0; + + if(code == 0x005b && flags == 2) state[nall::Keyboard::Super] = 1; //left super + if(code == 0x005b && flags == 3) state[nall::Keyboard::Super] = 0; + if(code == 0x005c && flags == 2) state[nall::Keyboard::Super] = 1; //right super + if(code == 0x005c && flags == 3) state[nall::Keyboard::Super] = 0; + #undef map + } + + Keyboard() { + for(unsigned i = 0; i < nall::Keyboard::Size; i++) state[i] = false; + } + }; + + struct Mouse : Device { + signed xDistance; + signed yDistance; + signed zDistance; + unsigned buttonState; + + void sync() { + xDistance = 0; + yDistance = 0; + zDistance = 0; + } + + void update(RAWINPUT *input) { + if((input->data.mouse.usFlags & 1) == MOUSE_MOVE_RELATIVE) { + xDistance += input->data.mouse.lLastX; + yDistance += input->data.mouse.lLastY; + } + + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_1_DOWN) buttonState |= 1 << 0; + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_1_UP ) buttonState &=~ 1 << 0; + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_2_DOWN) buttonState |= 1 << 2; //swap middle and right buttons, + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_2_UP ) buttonState &=~ 1 << 2; //for consistency with Linux: + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_3_DOWN) buttonState |= 1 << 1; //left = 0, middle = 1, right = 2 + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_3_UP ) buttonState &=~ 1 << 1; + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_4_DOWN) buttonState |= 1 << 3; + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_4_UP ) buttonState &=~ 1 << 3; + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_5_DOWN) buttonState |= 1 << 4; + if(input->data.mouse.usButtonFlags & RI_MOUSE_BUTTON_5_UP ) buttonState &=~ 1 << 4; + + if(input->data.mouse.usButtonFlags & RI_MOUSE_WHEEL) { + zDistance += (int16_t)input->data.mouse.usButtonData; + } + } + + Mouse() { + xDistance = yDistance = zDistance = 0; + buttonState = 0; + } + }; + + //keep track of gamepads for the sole purpose of distinguishing XInput devices + //from all other devices. this is necessary, as DirectInput does not provide + //a way to retrieve the necessary RIDI_DEVICENAME string. + struct Gamepad : Device { + bool isXInputDevice; + uint16_t vendorId; + uint16_t productId; + }; + + vector lkeyboard; + vector lmouse; + vector lgamepad; + + LRESULT window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { + if(msg == WM_INPUT) { + unsigned size = 0; + GetRawInputData((HRAWINPUT)lparam, RID_INPUT, NULL, &size, sizeof(RAWINPUTHEADER)); + RAWINPUT *input = new RAWINPUT[size]; + GetRawInputData((HRAWINPUT)lparam, RID_INPUT, input, &size, sizeof(RAWINPUTHEADER)); + WaitForSingleObject(mutex, INFINITE); + + if(input->header.dwType == RIM_TYPEKEYBOARD) { + for(unsigned i = 0; i < lkeyboard.size(); i++) { + if(input->header.hDevice == lkeyboard[i].handle) { + lkeyboard[i].update(input); + break; + } + } + } else if(input->header.dwType == RIM_TYPEMOUSE) { + for(unsigned i = 0; i < lmouse.size(); i++) { + if(input->header.hDevice == lmouse[i].handle) { + lmouse[i].update(input); + break; + } + } + } + + ReleaseMutex(mutex); + //allow propogation of WM_INPUT message + LRESULT result = DefRawInputProc(&input, size, sizeof(RAWINPUTHEADER)); + delete[] input; + return result; + } + + return DefWindowProc(hwnd, msg, wparam, lparam); + } + + //this is used to sort device IDs + struct DevicePool { + HANDLE handle; + char name[4096]; + bool operator<(const DevicePool &pool) const { return strcmp(name, pool.name) < 0; } + }; + + int main() { + //create an invisible window to act as a sink, capturing all WM_INPUT messages + WNDCLASS wc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hbrBackground = (HBRUSH)COLOR_WINDOW; + wc.hCursor = LoadCursor(0, IDC_ARROW); + wc.hIcon = LoadIcon(0, IDI_APPLICATION); + wc.hInstance = GetModuleHandle(0); + wc.lpfnWndProc = RawInputWindowProc; + wc.lpszClassName = "RawInputClass"; + wc.lpszMenuName = 0; + wc.style = CS_VREDRAW | CS_HREDRAW; + RegisterClass(&wc); + + hwnd = CreateWindow("RawInputClass", "RawInputClass", WS_POPUP, + 0, 0, 64, 64, 0, 0, GetModuleHandle(0), 0); + + //enumerate all HID devices + unsigned devices = 0; + GetRawInputDeviceList(NULL, &devices, sizeof(RAWINPUTDEVICELIST)); + RAWINPUTDEVICELIST *list = new RAWINPUTDEVICELIST[devices]; + GetRawInputDeviceList(list, &devices, sizeof(RAWINPUTDEVICELIST)); + + //sort all devices by name. this has two important properties: + //1) it consistently orders peripherals, so mapped IDs remain constant + //2) it sorts the virtual keyboard and mouse to the bottom of the list + // (real devices start with \\?\HID#, virtual with \\?\Root#) + DevicePool pool[devices]; + for(unsigned i = 0; i < devices; i++) { + pool[i].handle = list[i].hDevice; + unsigned size = sizeof(pool[i].name) - 1; + GetRawInputDeviceInfo(list[i].hDevice, RIDI_DEVICENAME, &pool[i].name, &size); + } + nall::sort(pool, devices); + delete[] list; + + for(unsigned i = 0; i < devices; i++) { + RID_DEVICE_INFO info; + info.cbSize = sizeof(RID_DEVICE_INFO); + + unsigned size = info.cbSize; + GetRawInputDeviceInfo(pool[i].handle, RIDI_DEVICEINFO, &info, &size); + + if(info.dwType == RIM_TYPEKEYBOARD) { + unsigned n = lkeyboard.size(); + lkeyboard[n].handle = pool[i].handle; + } else if(info.dwType == RIM_TYPEMOUSE) { + unsigned n = lmouse.size(); + lmouse[n].handle = pool[i].handle; + } else if(info.dwType == RIM_TYPEHID) { + //if this is a gamepad or joystick device ... + if(info.hid.usUsagePage == 1 && (info.hid.usUsage == 4 || info.hid.usUsage == 5)) { + //... then cache device information for later use + unsigned n = lgamepad.size(); + lgamepad[n].handle = pool[i].handle; + lgamepad[n].vendorId = (uint16_t)info.hid.dwVendorId; + lgamepad[n].productId = (uint16_t)info.hid.dwProductId; + + //per MSDN: XInput devices have "IG_" in their device strings, + //which is how they should be identified. + const char *p = strstr(pool[i].name, "IG_"); + lgamepad[n].isXInputDevice = (bool)p; + } + } + } + + RAWINPUTDEVICE device[2]; + //capture all keyboard input + device[0].usUsagePage = 1; + device[0].usUsage = 6; + device[0].dwFlags = RIDEV_INPUTSINK; + device[0].hwndTarget = hwnd; + //capture all mouse input + device[1].usUsagePage = 1; + device[1].usUsage = 2; + device[1].dwFlags = RIDEV_INPUTSINK; + device[1].hwndTarget = hwnd; + RegisterRawInputDevices(device, 2, sizeof(RAWINPUTDEVICE)); + + WaitForSingleObject(mutex, INFINITE); + ready = true; + ReleaseMutex(mutex); + + while(true) { + MSG msg; + GetMessage(&msg, hwnd, 0, 0); + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return 0; + } + + RawInput() : initialized(false), ready(false) { + } +}; + +static RawInput rawinput; + +DWORD WINAPI RawInputThreadProc(void*) { + return rawinput.main(); +} + +LRESULT CALLBACK RawInputWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { + return rawinput.window_proc(hwnd, msg, wparam, lparam); +} + +class XInput { +public: + HMODULE libxinput; + DWORD WINAPI (*pXInputGetState)(DWORD, XINPUT_STATE*); + + struct Gamepad { + unsigned id; + + int16_t hat; + int16_t axis[6]; + bool button[10]; + + void poll(XINPUT_STATE &state) { + hat = Joypad::HatCenter; + if(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP ) hat |= Joypad::HatUp; + if(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) hat |= Joypad::HatRight; + if(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN ) hat |= Joypad::HatDown; + if(state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT ) hat |= Joypad::HatLeft; + + axis[0] = (int16_t)state.Gamepad.sThumbLX; + axis[1] = (int16_t)state.Gamepad.sThumbLY; + axis[2] = (int16_t)state.Gamepad.sThumbRX; + axis[3] = (int16_t)state.Gamepad.sThumbRY; + + //transform left and right trigger ranges: + //from: 0 (low, eg released) to 255 (high, eg pressed all the way down) + //to: +32767 (low) to -32768 (high) + uint16_t triggerX = state.Gamepad.bLeftTrigger; + uint16_t triggerY = state.Gamepad.bRightTrigger; + + triggerX = (triggerX << 8) | triggerX; + triggerY = (triggerY << 8) | triggerY; + + axis[4] = (~triggerX) - 32768; + axis[5] = (~triggerY) - 32768; + + button[0] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_A); + button[1] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_B); + button[2] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_X); + button[3] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_Y); + button[4] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_BACK); + button[5] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_START); + button[6] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER); + button[7] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER); + button[8] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB); + button[9] = (bool)(state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB); + } + + Gamepad() { + hat = Joypad::HatCenter; + for(unsigned n = 0; n < 6; n++) axis[n] = 0; + for(unsigned n = 0; n < 10; n++) button[n] = false; + } + }; + + vector lgamepad; + + void poll() { + if(!pXInputGetState) return; + + for(unsigned i = 0; i < lgamepad.size(); i++) { + XINPUT_STATE state; + DWORD result = pXInputGetState(lgamepad[i].id, &state); + if(result == ERROR_SUCCESS) lgamepad[i].poll(state); + } + } + + void init() { + if(!pXInputGetState) return; + + //XInput only supports up to four controllers + for(unsigned i = 0; i <= 3; i++) { + XINPUT_STATE state; + DWORD result = pXInputGetState(i, &state); + if(result == ERROR_SUCCESS) { + //valid controller detected, add to gamepad list + unsigned n = lgamepad.size(); + lgamepad[n].id = i; + } + } + } + + XInput() : pXInputGetState(0) { + //bind xinput1 dynamically, as it does not ship with Windows Vista or below + libxinput = LoadLibraryA("xinput1_3.dll"); + if(!libxinput) libxinput = LoadLibraryA("xinput1_2.dll"); + if(!libxinput) libxinput = LoadLibraryA("xinput1_1.dll"); + if(!libxinput) return; + pXInputGetState = (DWORD WINAPI (*)(DWORD, XINPUT_STATE*))GetProcAddress(libxinput, "XInputGetState"); + } + + ~XInput() { + if(libxinput) FreeLibrary(libxinput); + } +}; + +static BOOL CALLBACK DirectInput_EnumJoypadsCallback(const DIDEVICEINSTANCE*, void*); +static BOOL CALLBACK DirectInput_EnumJoypadAxesCallback(const DIDEVICEOBJECTINSTANCE*, void*); + +class DirectInput { +public: + HWND handle; + LPDIRECTINPUT8 context; + struct Gamepad { + LPDIRECTINPUTDEVICE8 handle; + + int16_t hat[4]; + int16_t axis[6]; + bool button[128]; + + void poll(DIJOYSTATE2 &state) { + //POV hats + for(unsigned n = 0; n < 4; n++) { + hat[n] = Joypad::HatCenter; + + //POV value is in clockwise-hundredth degree units + unsigned pov = state.rgdwPOV[n]; + + //some drivers report a centered POV hat as -1U, others as 65535U. + //>= 36000 will match both, as well as invalid ranges. + if(pov >= 36000) continue; + + if(pov >= 31500 || pov <= 4500) hat[n] |= Joypad::HatUp; + if(pov >= 4500 && pov <= 13500) hat[n] |= Joypad::HatRight; + if(pov >= 13500 && pov <= 22500) hat[n] |= Joypad::HatDown; + if(pov >= 22500 && pov <= 31500) hat[n] |= Joypad::HatLeft; + } + + //axes + axis[0] = state.lX; + axis[1] = state.lY; + axis[2] = state.lZ; + axis[3] = state.lRx; + axis[4] = state.lRy; + axis[5] = state.lRz; + + //buttons + for(unsigned n = 0; n < 128; n++) { + button[n] = (bool)state.rgbButtons[n]; + } + } + + Gamepad() { + handle = 0; + for(unsigned n = 0; n < 4; n++) hat[n] = Joypad::HatCenter; + for(unsigned n = 0; n < 6; n++) axis[n] = 0; + for(unsigned n = 0; n < 128; n++) button[n] = false; + } + }; + vector lgamepad; + + void poll() { + for(unsigned i = 0; i < lgamepad.size(); i++) { + if(FAILED(lgamepad[i].handle->Poll())) { + lgamepad[i].handle->Acquire(); + continue; + } + + DIJOYSTATE2 state; + lgamepad[i].handle->GetDeviceState(sizeof(DIJOYSTATE2), &state); + lgamepad[i].poll(state); + } + } + + bool init_joypad(const DIDEVICEINSTANCE *instance) { + //if this is an XInput device, do not acquire it via DirectInput ... + //the XInput driver above will handle said device. + for(unsigned i = 0; i < rawinput.lgamepad.size(); i++) { + uint32_t guid = MAKELONG(rawinput.lgamepad[i].vendorId, rawinput.lgamepad[i].productId); + if(guid == instance->guidProduct.Data1) { + if(rawinput.lgamepad[i].isXInputDevice == true) { + return DIENUM_CONTINUE; + } + } + } + + if(FAILED(context->CreateDevice(instance->guidInstance, &device, 0))) { + return DIENUM_CONTINUE; + } + + device->SetDataFormat(&c_dfDIJoystick2); + device->SetCooperativeLevel(handle, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND); + device->EnumObjects(DirectInput_EnumJoypadAxesCallback, (void*)this, DIDFT_ABSAXIS); + unsigned n = lgamepad.size(); + lgamepad[n].handle = device; + return DIENUM_CONTINUE; + } + + bool init_axis(const DIDEVICEOBJECTINSTANCE *instance) { + DIPROPRANGE range; + range.diph.dwSize = sizeof(DIPROPRANGE); + range.diph.dwHeaderSize = sizeof(DIPROPHEADER); + range.diph.dwHow = DIPH_BYID; + range.diph.dwObj = instance->dwType; + range.lMin = -32768; + range.lMax = +32767; + device->SetProperty(DIPROP_RANGE, &range.diph); + return DIENUM_CONTINUE; + } + + void init(HWND handle_) { + handle = handle_; + DirectInput8Create(GetModuleHandle(0), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&context, 0); + context->EnumDevices(DI8DEVCLASS_GAMECTRL, DirectInput_EnumJoypadsCallback, (void*)this, DIEDFL_ATTACHEDONLY); + } + + void term() { + for(unsigned i = 0; i < lgamepad.size(); i++) { + lgamepad[i].handle->Unacquire(); + lgamepad[i].handle->Release(); + } + lgamepad.reset(); + + if(context) { + context->Release(); + context = 0; + } + } + +private: + LPDIRECTINPUTDEVICE8 device; +}; + +BOOL CALLBACK DirectInput_EnumJoypadsCallback(const DIDEVICEINSTANCE *instance, void *p) { + return ((DirectInput*)p)->init_joypad(instance); +} + +BOOL CALLBACK DirectInput_EnumJoypadAxesCallback(const DIDEVICEOBJECTINSTANCE *instance, void *p) { + return ((DirectInput*)p)->init_axis(instance); +} + +class pInputRaw { +public: + XInput xinput; + DirectInput dinput; + + bool acquire_mouse; + bool cursor_visible; + + struct { + HWND handle; + } settings; + + bool cap(const string& name) { + if(name == Input::Handle) return true; + if(name == Input::KeyboardSupport) return true; + if(name == Input::MouseSupport) return true; + if(name == Input::JoypadSupport) return true; + return false; + } + + any get(const string& name) { + if(name == Input::Handle) return (uintptr_t)settings.handle; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Input::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + return false; + } + + bool acquire() { + acquire_mouse = true; + if(cursor_visible == true) { + ShowCursor(cursor_visible = false); + } + return acquired(); + } + + bool unacquire() { + acquire_mouse = false; + ReleaseCapture(); + ClipCursor(NULL); + if(cursor_visible == false) { + ShowCursor(cursor_visible = true); + } + return true; + } + + bool acquired() { + if(acquire_mouse == true) { + SetFocus(settings.handle); + SetCapture(settings.handle); + RECT rc; + GetWindowRect(settings.handle, &rc); + ClipCursor(&rc); + } + return GetCapture() == settings.handle; + } + + bool poll(int16_t *table) { + memset(table, 0, Scancode::Limit * sizeof(int16_t)); + + WaitForSingleObject(rawinput.mutex, INFINITE); + + //========= + //Keyboards + //========= + for(unsigned i = 0; i < min(rawinput.lkeyboard.size(), (unsigned)Keyboard::Count); i++) { + for(unsigned n = 0; n < nall::Keyboard::Size; n++) { + table[keyboard(i).key(n)] = rawinput.lkeyboard[i].state[n]; + } + } + + //==== + //Mice + //==== + for(unsigned i = 0; i < min(rawinput.lmouse.size(), (unsigned)Mouse::Count); i++) { + table[mouse(i).axis(0)] = rawinput.lmouse[i].xDistance; + table[mouse(i).axis(1)] = rawinput.lmouse[i].yDistance; + table[mouse(i).axis(2)] = rawinput.lmouse[i].zDistance; + + for(unsigned n = 0; n < min(5U, (unsigned)Mouse::Buttons); n++) { + table[mouse(i).button(n)] = (bool)(rawinput.lmouse[i].buttonState & (1 << n)); + } + + rawinput.lmouse[i].sync(); + } + + ReleaseMutex(rawinput.mutex); + + unsigned joy = 0; + + //================== + //XInput controllers + //================== + xinput.poll(); + for(unsigned i = 0; i < xinput.lgamepad.size(); i++) { + if(joy >= Joypad::Count) break; + + table[joypad(i).hat(0)] = xinput.lgamepad[i].hat; + + for(unsigned axis = 0; axis < min(6U, (unsigned)Joypad::Axes); axis++) { + table[joypad(i).axis(axis)] = xinput.lgamepad[i].axis[axis]; + } + + for(unsigned button = 0; button < min(10U, (unsigned)Joypad::Buttons); button++) { + table[joypad(i).button(button)] = xinput.lgamepad[i].button[button]; + } + } + + //======================= + //DirectInput controllers + //======================= + dinput.poll(); + for(unsigned i = 0; i < dinput.lgamepad.size(); i++) { + if(joy >= Joypad::Count) break; + + for(unsigned hat = 0; hat < min(4U, (unsigned)Joypad::Hats); hat++) { + table[joypad(i).hat(hat)] = dinput.lgamepad[i].hat[hat]; + } + + for(unsigned axis = 0; axis < min(6U, (unsigned)Joypad::Axes); axis++) { + table[joypad(i).axis(axis)] = dinput.lgamepad[i].axis[axis]; + } + + for(unsigned button = 0; button < min(128U, (unsigned)Joypad::Buttons); button++) { + table[joypad(i).button(button)] = dinput.lgamepad[i].button[button]; + } + } + + return true; + } + + bool init() { + //only spawn RawInput processing thread one time + if(rawinput.initialized == false) { + rawinput.initialized = true; + rawinput.mutex = CreateMutex(NULL, FALSE, NULL); + CreateThread(NULL, 0, RawInputThreadProc, 0, 0, NULL); + + //RawInput device calibration needs to finish before initializing DirectInput; + //as it needs device GUIDs to distinguish XInput devices from ordinary joypads. + bool ready = false; + do { + Sleep(10); + WaitForSingleObject(rawinput.mutex, INFINITE); + ready = rawinput.ready; + ReleaseMutex(rawinput.mutex); + } while(ready == false); + } + + xinput.init(); + dinput.init(settings.handle); + + acquire_mouse = false; + cursor_visible = true; + return true; + } + + void term() { + unacquire(); + dinput.term(); + } + + pInputRaw() { + } +}; + +DeclareInput(Raw) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input/sdl.cpp b/libmednahawk/src/snes/src/lib/ruby/input/sdl.cpp new file mode 100644 index 0000000000..4ad6eab208 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input/sdl.cpp @@ -0,0 +1,230 @@ +//================ +//SDL input driver +//================ +//Keyboard and mouse are controlled directly via Xlib, +//as SDL cannot capture input from windows it does not create itself. +//SDL is used only to handle joysticks / gamepads. + +#include +#include +#include + +namespace ruby { + +struct pInputSDL { + #include "xlibkeys.hpp" + + struct { + Display *display; + Window rootwindow; + Cursor InvisibleCursor; + SDL_Joystick *gamepad[Joypad::Count]; + + unsigned screenwidth, screenheight; + unsigned relativex, relativey; + bool mouseacquired; + + //mouse device settings + int accel_numerator; + int accel_denominator; + int threshold; + } device; + + struct { + uintptr_t handle; + } settings; + + bool cap(const string& name) { + if(name == Input::Handle) return true; + if(name == Input::KeyboardSupport) return true; + if(name == Input::MouseSupport) return true; + if(name == Input::JoypadSupport) return true; + return false; + } + + any get(const string& name) { + if(name == Input::Handle) return (uintptr_t)settings.handle; + return false; + } + + bool set(const string& name, const any &value) { + if(name == Input::Handle) { + settings.handle = any_cast(value); + return true; + } + + return false; + } + + bool acquire() { + if(acquired()) return true; + + if(XGrabPointer(device.display, settings.handle, True, 0, GrabModeAsync, GrabModeAsync, + device.rootwindow, device.InvisibleCursor, CurrentTime) == GrabSuccess) { + //backup existing cursor acceleration settings + XGetPointerControl(device.display, &device.accel_numerator, &device.accel_denominator, &device.threshold); + + //disable cursor acceleration + XChangePointerControl(device.display, True, False, 1, 1, 0); + + //center cursor (so that first relative poll returns 0, 0 if mouse has not moved) + XWarpPointer(device.display, None, device.rootwindow, 0, 0, 0, 0, device.screenwidth / 2, device.screenheight / 2); + + return device.mouseacquired = true; + } else { + return device.mouseacquired = false; + } + } + + bool unacquire() { + if(acquired()) { + //restore cursor acceleration and release cursor + XChangePointerControl(device.display, True, True, device.accel_numerator, device.accel_denominator, device.threshold); + XUngrabPointer(device.display, CurrentTime); + device.mouseacquired = false; + } + return true; + } + + bool acquired() { + return device.mouseacquired; + } + + bool poll(int16_t *table) { + memset(table, 0, Scancode::Limit * sizeof(int16_t)); + + //======== + //Keyboard + //======== + + x_poll(table); + + //===== + //Mouse + //===== + + Window root_return, child_return; + int root_x_return = 0, root_y_return = 0; + int win_x_return = 0, win_y_return = 0; + unsigned int mask_return = 0; + XQueryPointer(device.display, settings.handle, + &root_return, &child_return, &root_x_return, &root_y_return, + &win_x_return, &win_y_return, &mask_return); + + if(acquired()) { + XWindowAttributes attributes; + XGetWindowAttributes(device.display, settings.handle, &attributes); + + //absolute -> relative conversion + table[mouse(0).axis(0)] = (int16_t)(root_x_return - device.screenwidth / 2); + table[mouse(0).axis(1)] = (int16_t)(root_y_return - device.screenheight / 2); + + if(table[mouse(0).axis(0)] != 0 || table[mouse(0).axis(1)] != 0) { + //if mouse movement occurred, re-center mouse for next poll + XWarpPointer(device.display, None, device.rootwindow, 0, 0, 0, 0, device.screenwidth / 2, device.screenheight / 2); + } + } else { + table[mouse(0).axis(0)] = (int16_t)(root_x_return - device.relativex); + table[mouse(0).axis(1)] = (int16_t)(root_y_return - device.relativey); + + device.relativex = root_x_return; + device.relativey = root_y_return; + } + + //manual device polling is limited to only five buttons ... + table[mouse(0).button(0)] = (bool)(mask_return & Button1Mask); + table[mouse(0).button(1)] = (bool)(mask_return & Button2Mask); + table[mouse(0).button(2)] = (bool)(mask_return & Button3Mask); + table[mouse(0).button(3)] = (bool)(mask_return & Button4Mask); + table[mouse(0).button(4)] = (bool)(mask_return & Button5Mask); + + //========= + //Joypad(s) + //========= + + SDL_JoystickUpdate(); + for(unsigned i = 0; i < Joypad::Count; i++) { + if(!device.gamepad[i]) continue; + + //POV hats + unsigned hats = min((unsigned)Joypad::Hats, SDL_JoystickNumHats(device.gamepad[i])); + for(unsigned hat = 0; hat < hats; hat++) { + uint8_t state = SDL_JoystickGetHat(device.gamepad[i], hat); + if(state & SDL_HAT_UP ) table[joypad(i).hat(hat)] |= Joypad::HatUp; + if(state & SDL_HAT_RIGHT) table[joypad(i).hat(hat)] |= Joypad::HatRight; + if(state & SDL_HAT_DOWN ) table[joypad(i).hat(hat)] |= Joypad::HatDown; + if(state & SDL_HAT_LEFT ) table[joypad(i).hat(hat)] |= Joypad::HatLeft; + } + + //axes + unsigned axes = min((unsigned)Joypad::Axes, SDL_JoystickNumAxes(device.gamepad[i])); + for(unsigned axis = 0; axis < axes; axis++) { + table[joypad(i).axis(axis)] = (int16_t)SDL_JoystickGetAxis(device.gamepad[i], axis); + } + + //buttons + for(unsigned button = 0; button < Joypad::Buttons; button++) { + table[joypad(i).button(button)] = (bool)SDL_JoystickGetButton(device.gamepad[i], button); + } + } + + return true; + } + + bool init() { + x_init(); + SDL_InitSubSystem(SDL_INIT_JOYSTICK); + SDL_JoystickEventState(SDL_IGNORE); + + device.display = XOpenDisplay(0); + device.rootwindow = DefaultRootWindow(device.display); + XWindowAttributes attributes; + XGetWindowAttributes(device.display, device.rootwindow, &attributes); + device.screenwidth = attributes.width; + device.screenheight = attributes.height; + + //Xlib: "because XShowCursor(false) would be too easy." + //create a fully transparent cursor named InvisibleCursor, + //for use while acquire() / XGrabPointer() is active. + Pixmap pixmap; + XColor black, unused; + static char invisible_data[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + Colormap colormap = DefaultColormap(device.display, DefaultScreen(device.display)); + XAllocNamedColor(device.display, colormap, "black", &black, &unused); + pixmap = XCreateBitmapFromData(device.display, settings.handle, invisible_data, 8, 8); + device.InvisibleCursor = XCreatePixmapCursor(device.display, pixmap, pixmap, &black, &black, 0, 0); + XFreePixmap(device.display, pixmap); + XFreeColors(device.display, colormap, &black.pixel, 1, 0); + + device.mouseacquired = false; + device.relativex = 0; + device.relativey = 0; + + unsigned joypads = min((unsigned)Joypad::Count, SDL_NumJoysticks()); + for(unsigned i = 0; i < joypads; i++) device.gamepad[i] = SDL_JoystickOpen(i); + + return true; + } + + void term() { + unacquire(); + XFreeCursor(device.display, device.InvisibleCursor); + + for(unsigned i = 0; i < Joypad::Count; i++) { + if(device.gamepad[i]) SDL_JoystickClose(device.gamepad[i]); + device.gamepad[i] = 0; + } + + SDL_QuitSubSystem(SDL_INIT_JOYSTICK); + XCloseDisplay(device.display); + } + + pInputSDL() { + for(unsigned i = 0; i < Joypad::Count; i++) device.gamepad[i] = 0; + settings.handle = 0; + } +}; + +DeclareInput(SDL) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input/x.cpp b/libmednahawk/src/snes/src/lib/ruby/input/x.cpp new file mode 100644 index 0000000000..8d3b4251e6 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input/x.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include + +namespace ruby { + +class pInputX { +public: + Display *display; + #include "xlibkeys.hpp" + + bool cap(const string& name) { + if(name == Input::KeyboardSupport) return true; + return false; + } + + any get(const string& name) { + return false; + } + + bool set(const string& name, const any &value) { + return false; + } + + bool acquire() { return false; } + bool unacquire() { return false; } + bool acquired() { return false; } + + bool poll(int16_t *table) { + memset(table, 0, Scancode::Limit * sizeof(int16_t)); + x_poll(table); + return true; + } + + bool init() { + x_init(); + display = XOpenDisplay(0); + return true; + } + + void term() { + XCloseDisplay(display); + } +}; + +DeclareInput(X) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/input/xlibkeys.hpp b/libmednahawk/src/snes/src/lib/ruby/input/xlibkeys.hpp new file mode 100644 index 0000000000..9de04b1740 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/input/xlibkeys.hpp @@ -0,0 +1,264 @@ +uint8_t scancode[256]; + +enum XScancode { + Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + ScrollLock, Pause, Tilde, + Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9, Num0, + Dash, Equal, Backspace, + Insert, Delete, Home, End, PageUp, PageDown, + A, B, C, D, E, F, G, H, I, J, K, L, M, + N, O, P, Q, R, S, T, U, V, W, X, Y, Z, + LeftBracket, RightBracket, Backslash, Semicolon, Apostrophe, Comma, Period, Slash, + Keypad1, Keypad2, Keypad3, Keypad4, Keypad5, Keypad6, Keypad7, Keypad8, Keypad9, Keypad0, + Point, Enter, Add, Subtract, Multiply, Divide, + Up, Down, Left, Right, + Tab, Return, Spacebar, Menu, + LeftShift, RightShift, LeftControl, RightControl, LeftAlt, RightAlt, LeftSuper, RightSuper, +}; + +void x_poll(int16_t *table) { + char state[32]; + Display *display = XOpenDisplay(0); + XQueryKeymap(display, state); + XCloseDisplay(display); + + #define key(id) table[keyboard(0)[id]] + #define pressed(id) (bool)(state[scancode[id] >> 3] & (1 << (scancode[id] & 7))) + + key(Keyboard::Escape) = pressed(Escape); + + key(Keyboard::F1) = pressed(F1); + key(Keyboard::F2) = pressed(F2); + key(Keyboard::F3) = pressed(F3); + key(Keyboard::F4) = pressed(F4); + key(Keyboard::F5) = pressed(F5); + key(Keyboard::F6) = pressed(F6); + key(Keyboard::F7) = pressed(F7); + key(Keyboard::F8) = pressed(F8); + key(Keyboard::F9) = pressed(F9); + key(Keyboard::F10) = pressed(F10); + key(Keyboard::F11) = pressed(F11); + key(Keyboard::F12) = pressed(F12); + + key(Keyboard::ScrollLock) = pressed(ScrollLock); + key(Keyboard::Pause) = pressed(Pause); + key(Keyboard::Tilde) = pressed(Tilde); + + key(Keyboard::Num1) = pressed(Num1); + key(Keyboard::Num2) = pressed(Num2); + key(Keyboard::Num3) = pressed(Num3); + key(Keyboard::Num4) = pressed(Num4); + key(Keyboard::Num5) = pressed(Num5); + key(Keyboard::Num6) = pressed(Num6); + key(Keyboard::Num7) = pressed(Num7); + key(Keyboard::Num8) = pressed(Num8); + key(Keyboard::Num9) = pressed(Num9); + key(Keyboard::Num0) = pressed(Num0); + + key(Keyboard::Dash) = pressed(Dash); + key(Keyboard::Equal) = pressed(Equal); + key(Keyboard::Backspace) = pressed(Backspace); + + key(Keyboard::Insert) = pressed(Insert); + key(Keyboard::Delete) = pressed(Delete); + key(Keyboard::Home) = pressed(Home); + key(Keyboard::End) = pressed(End); + key(Keyboard::PageUp) = pressed(PageUp); + key(Keyboard::PageDown) = pressed(PageDown); + + key(Keyboard::A) = pressed(A); + key(Keyboard::B) = pressed(B); + key(Keyboard::C) = pressed(C); + key(Keyboard::D) = pressed(D); + key(Keyboard::E) = pressed(E); + key(Keyboard::F) = pressed(F); + key(Keyboard::G) = pressed(G); + key(Keyboard::H) = pressed(H); + key(Keyboard::I) = pressed(I); + key(Keyboard::J) = pressed(J); + key(Keyboard::K) = pressed(K); + key(Keyboard::L) = pressed(L); + key(Keyboard::M) = pressed(M); + key(Keyboard::N) = pressed(N); + key(Keyboard::O) = pressed(O); + key(Keyboard::P) = pressed(P); + key(Keyboard::Q) = pressed(Q); + key(Keyboard::R) = pressed(R); + key(Keyboard::S) = pressed(S); + key(Keyboard::T) = pressed(T); + key(Keyboard::U) = pressed(U); + key(Keyboard::V) = pressed(V); + key(Keyboard::W) = pressed(W); + key(Keyboard::X) = pressed(X); + key(Keyboard::Y) = pressed(Y); + key(Keyboard::Z) = pressed(Z); + + key(Keyboard::LeftBracket) = pressed(LeftBracket); + key(Keyboard::RightBracket) = pressed(RightBracket); + key(Keyboard::Backslash) = pressed(Backslash); + key(Keyboard::Semicolon) = pressed(Semicolon); + key(Keyboard::Apostrophe) = pressed(Apostrophe); + key(Keyboard::Comma) = pressed(Comma); + key(Keyboard::Period) = pressed(Period); + key(Keyboard::Slash) = pressed(Slash); + + key(Keyboard::Keypad1) = pressed(Keypad1); + key(Keyboard::Keypad2) = pressed(Keypad2); + key(Keyboard::Keypad3) = pressed(Keypad3); + key(Keyboard::Keypad4) = pressed(Keypad4); + key(Keyboard::Keypad5) = pressed(Keypad5); + key(Keyboard::Keypad6) = pressed(Keypad6); + key(Keyboard::Keypad7) = pressed(Keypad7); + key(Keyboard::Keypad8) = pressed(Keypad8); + key(Keyboard::Keypad9) = pressed(Keypad9); + key(Keyboard::Keypad0) = pressed(Keypad0); + + key(Keyboard::Point) = pressed(Point); + key(Keyboard::Enter) = pressed(Enter); + key(Keyboard::Add) = pressed(Add); + key(Keyboard::Subtract) = pressed(Subtract); + key(Keyboard::Multiply) = pressed(Multiply); + key(Keyboard::Divide) = pressed(Divide); + + key(Keyboard::Up) = pressed(Up); + key(Keyboard::Down) = pressed(Down); + key(Keyboard::Left) = pressed(Left); + key(Keyboard::Right) = pressed(Right); + + key(Keyboard::Tab) = pressed(Tab); + key(Keyboard::Return) = pressed(Return); + key(Keyboard::Spacebar) = pressed(Spacebar); + key(Keyboard::Menu) = pressed(Menu); + + key(Keyboard::Shift) = pressed(LeftShift) || pressed(RightShift); + key(Keyboard::Control) = pressed(LeftControl) || pressed(RightControl); + key(Keyboard::Alt) = pressed(LeftAlt) || pressed(RightAlt); + key(Keyboard::Super) = pressed(LeftSuper) || pressed(RightSuper); + + #undef key + #undef pressed +} + +void x_init() { + Display *display = XOpenDisplay(0); + memset(&scancode, 0, sizeof scancode); + + #define assign(x, y) scancode[x] = XKeysymToKeycode(display, y) + assign(Escape, XK_Escape); + + assign(F1, XK_F1); + assign(F2, XK_F2); + assign(F3, XK_F3); + assign(F4, XK_F4); + assign(F5, XK_F5); + assign(F6, XK_F6); + assign(F7, XK_F7); + assign(F8, XK_F8); + assign(F9, XK_F9); + assign(F10, XK_F10); + assign(F11, XK_F11); + assign(F12, XK_F12); + + assign(ScrollLock, XK_Scroll_Lock); + assign(Pause, XK_Pause); + + assign(Tilde, XK_asciitilde); + + assign(Num0, XK_0); + assign(Num1, XK_1); + assign(Num2, XK_2); + assign(Num3, XK_3); + assign(Num4, XK_4); + assign(Num5, XK_5); + assign(Num6, XK_6); + assign(Num7, XK_7); + assign(Num8, XK_8); + assign(Num9, XK_9); + + assign(Dash, XK_minus); + assign(Equal, XK_equal); + assign(Backspace, XK_BackSpace); + + assign(Insert, XK_Insert); + assign(Delete, XK_Delete); + assign(Home, XK_Home); + assign(End, XK_End); + assign(PageUp, XK_Prior); + assign(PageDown, XK_Next); + + assign(A, XK_A); + assign(B, XK_B); + assign(C, XK_C); + assign(D, XK_D); + assign(E, XK_E); + assign(F, XK_F); + assign(G, XK_G); + assign(H, XK_H); + assign(I, XK_I); + assign(J, XK_J); + assign(K, XK_K); + assign(L, XK_L); + assign(M, XK_M); + assign(N, XK_N); + assign(O, XK_O); + assign(P, XK_P); + assign(Q, XK_Q); + assign(R, XK_R); + assign(S, XK_S); + assign(T, XK_T); + assign(U, XK_U); + assign(V, XK_V); + assign(W, XK_W); + assign(X, XK_X); + assign(Y, XK_Y); + assign(Z, XK_Z); + + assign(LeftBracket, XK_bracketleft); + assign(RightBracket, XK_bracketright); + assign(Backslash, XK_backslash); + assign(Semicolon, XK_semicolon); + assign(Apostrophe, XK_apostrophe); + assign(Comma, XK_comma); + assign(Period, XK_period); + assign(Slash, XK_slash); + + assign(Keypad0, XK_KP_0); + assign(Keypad1, XK_KP_1); + assign(Keypad2, XK_KP_2); + assign(Keypad3, XK_KP_3); + assign(Keypad4, XK_KP_4); + assign(Keypad5, XK_KP_5); + assign(Keypad6, XK_KP_6); + assign(Keypad7, XK_KP_7); + assign(Keypad8, XK_KP_8); + assign(Keypad9, XK_KP_9); + + assign(Add, XK_KP_Add); + assign(Subtract, XK_KP_Subtract); + assign(Multiply, XK_KP_Multiply); + assign(Divide, XK_KP_Divide); + assign(Enter, XK_KP_Enter); + + assign(Up, XK_Up); + assign(Down, XK_Down); + assign(Left, XK_Left); + assign(Right, XK_Right); + + assign(Tab, XK_Tab); + assign(Return, XK_Return); + assign(Spacebar, XK_space); + + assign(LeftControl, XK_Control_L); + assign(RightControl, XK_Control_R); + assign(LeftAlt, XK_Alt_L); + assign(RightAlt, XK_Alt_R); + assign(LeftShift, XK_Shift_L); + assign(RightShift, XK_Shift_R); + assign(LeftSuper, XK_Super_L); + assign(RightSuper, XK_Super_R); + assign(Menu, XK_Menu); + + #undef assign + + XCloseDisplay(display); +} diff --git a/libmednahawk/src/snes/src/lib/ruby/ruby.cpp b/libmednahawk/src/snes/src/lib/ruby/ruby.cpp new file mode 100644 index 0000000000..5d21ea44c4 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/ruby.cpp @@ -0,0 +1,370 @@ +#include +using namespace nall; + +#include + +namespace ruby { + +VideoInterface video; +AudioInterface audio; +InputInterface input; + +/* VideoInterface */ + +const char *Video::Handle = "Handle"; +const char *Video::Synchronize = "Synchronize"; +const char *Video::Filter = "Filter"; +const char *Video::FragmentShader = "FragmentShader"; +const char *Video::VertexShader = "VertexShader"; + +void VideoInterface::driver(const char *driver) { + if(p) term(); + + if(!driver || !*driver) driver = default_driver(); + + if(0); + + #ifdef VIDEO_DIRECT3D + else if(!strcmp(driver, "Direct3D")) p = new VideoD3D(); + #endif + + #ifdef VIDEO_DIRECTDRAW + else if(!strcmp(driver, "DirectDraw")) p = new VideoDD(); + #endif + + #ifdef VIDEO_GDI + else if(!strcmp(driver, "GDI")) p = new VideoGDI(); + #endif + + #ifdef VIDEO_GLX + else if(!strcmp(driver, "OpenGL")) p = new VideoGLX(); + #endif + + #ifdef VIDEO_QTOPENGL + else if(!strcmp(driver, "Qt-OpenGL")) p = new VideoQtOpenGL(); + #endif + + #ifdef VIDEO_QTRASTER + else if(!strcmp(driver, "Qt-Raster")) p = new VideoQtRaster(); + #endif + + #ifdef VIDEO_SDL + else if(!strcmp(driver, "SDL")) p = new VideoSDL(); + #endif + + #ifdef VIDEO_WGL + else if(!strcmp(driver, "OpenGL")) p = new VideoWGL(); + #endif + + #ifdef VIDEO_XV + else if(!strcmp(driver, "X-Video")) p = new VideoXv(); + #endif + + else p = new Video(); +} + +//select the *safest* available driver, not the fastest +const char* VideoInterface::default_driver() { + #if defined(VIDEO_DIRECT3D) + return "Direct3D"; + #elif defined(VIDEO_WGL) + return "OpenGL"; + #elif defined(VIDEO_DIRECTDRAW) + return "DirectDraw"; + #elif defined(VIDEO_GDI) + return "GDI"; + #elif defined(VIDEO_QTOPENGL) + return "Qt-OpenGL"; + #elif defined(VIDEO_QTRASTER) + return "Qt-Raster"; + #elif defined(VIDEO_SDL) + return "SDL"; + #elif defined(VIDEO_XV) + return "X-Video"; + #elif defined(VIDEO_GLX) + return "OpenGL"; + #else + return "None"; + #endif +} + +//returns list of available drivers, sorted from most to least optimal +const char* VideoInterface::driver_list() { + return + + //Windows + + #if defined(VIDEO_DIRECT3D) + "Direct3D;" + #endif + + #if defined(VIDEO_WGL) + "OpenGL;" + #endif + + #if defined(VIDEO_DIRECTDRAW) + "DirectDraw;" + #endif + + #if defined(VIDEO_GDI) + "GDI;" + #endif + + //Linux + + #if defined(VIDEO_GLX) + "OpenGL;" + #endif + + #if defined(VIDEO_QTOPENGL) + "Qt-OpenGL;" + #endif + + #if defined(VIDEO_XV) + "X-Video;" + #endif + + #if defined(VIDEO_QTRASTER) + "Qt-Raster;" + #endif + + #if defined(VIDEO_SDL) + "SDL;" + #endif + + "None"; +} + +bool VideoInterface::init() { + if(!p) driver(); + return p->init(); +} + +void VideoInterface::term() { + if(p) { + delete p; + p = 0; + } +} + +bool VideoInterface::cap(const string& name) { return p ? p->cap(name) : false; } +any VideoInterface::get(const string& name) { return p ? p->get(name) : false; } +bool VideoInterface::set(const string& name, const any& value) { return p ? p->set(name, value) : false; } +bool VideoInterface::lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { return p ? p->lock(data, pitch, width, height) : false; } +void VideoInterface::unlock() { if(p) p->unlock(); } +void VideoInterface::clear() { if(p) p->clear(); } +void VideoInterface::refresh() { if(p) p->refresh(); } +VideoInterface::VideoInterface() : p(0) {} +VideoInterface::~VideoInterface() { term(); } + +/* AudioInterface */ + +void AudioInterface::driver(const char *driver) { + if(p) term(); + + if(!driver || !*driver) driver = default_driver(); + + if(0); + + #ifdef AUDIO_ALSA + else if(!strcmp(driver, "ALSA")) p = new AudioALSA(); + #endif + + #ifdef AUDIO_AO + else if(!strcmp(driver, "libao")) p = new AudioAO(); + #endif + + #ifdef AUDIO_DIRECTSOUND + else if(!strcmp(driver, "DirectSound")) p = new AudioDS(); + #endif + + #ifdef AUDIO_OPENAL + else if(!strcmp(driver, "OpenAL")) p = new AudioOpenAL(); + #endif + + #ifdef AUDIO_OSS + else if(!strcmp(driver, "OSS")) p = new AudioOSS(); + #endif + + #ifdef AUDIO_PULSEAUDIO + else if(!strcmp(driver, "PulseAudio")) p = new AudioPulseAudio(); + #endif + + #ifdef AUDIO_PULSEAUDIOSIMPLE + else if(!strcmp(driver, "PulseAudioSimple")) p = new AudioPulseAudioSimple(); + #endif + + else p = new Audio(); +} + +//select the *safest* available driver, not the fastest +const char* AudioInterface::default_driver() { + #if defined(AUDIO_DIRECTSOUND) + return "DirectSound"; + #elif defined(AUDIO_ALSA) + return "ALSA"; + #elif defined(AUDIO_OPENAL) + return "OpenAL"; + #elif defined(AUDIO_PULSEAUDIO) + return "PulseAudio"; + #elif defined(AUDIO_PULSEAUDIOSIMPLE) + return "PulseAudioSimple"; + #elif defined(AUDIO_AO) + return "libao"; + #elif defined(AUDIO_OSS) + return "OSS"; + #else + return "None"; + #endif +} + +//returns list of available drivers, sorted from most to least optimal +const char* AudioInterface::driver_list() { + return + + //Windows + + #if defined(AUDIO_DIRECTSOUND) + "DirectSound;" + #endif + + //Linux + + #if defined(AUDIO_ALSA) + "ALSA;" + #endif + + #if defined(AUDIO_OPENAL) + "OpenAL;" + #endif + + #if defined(AUDIO_OSS) + "OSS;" + #endif + + #if defined(AUDIO_PULSEAUDIO) + "PulseAudio;" + #endif + + #if defined(AUDIO_PULSEAUDIOSIMPLE) + "PulseAudioSimple;" + #endif + + #if defined(AUDIO_AO) + "libao;" + #endif + + "None"; +} + +#include "ruby_audio.cpp" + +/* InputInterface */ + +const char *Input::Handle = "Handle"; +const char *Input::KeyboardSupport = "KeyboardSupport"; +const char *Input::MouseSupport = "MouseSupport"; +const char *Input::JoypadSupport = "JoypadSupport"; + +void InputInterface::driver(const char *driver) { + if(p) term(); + + if(!driver || !*driver) driver = default_driver(); + + if(0); + + #ifdef INPUT_DIRECTINPUT + else if(!strcmp(driver, "DirectInput")) p = new InputDI(); + #endif + + #ifdef INPUT_RAWINPUT + else if(!strcmp(driver, "RawInput")) p = new InputRaw(); + #endif + + #ifdef INPUT_SDL + else if(!strcmp(driver, "SDL")) p = new InputSDL(); + #endif + + #ifdef INPUT_X + else if(!strcmp(driver, "X-Windows")) p = new InputX(); + #endif + + #ifdef INPUT_CARBON + else if(!strcmp(driver, "Carbon")) p = new InputCarbon(); + #endif + + else p = new Input(); +} + +//select the *safest* available driver, not the fastest +const char* InputInterface::default_driver() { + #if defined(INPUT_RAWINPUT) + return "RawInput"; + #elif defined(INPUT_DIRECTINPUT) + return "DirectInput"; + #elif defined(INPUT_SDL) + return "SDL"; + #elif defined(INPUT_X) + return "X-Windows"; + #elif defined(INPUT_CARBON) + return "Carbon"; + #else + return "none"; + #endif +} + +const char* InputInterface::driver_list() { + return + + //Windows + + #if defined(INPUT_RAWINPUT) + "RawInput;" + #endif + + #if defined(INPUT_DIRECTINPUT) + "DirectInput;" + #endif + + //Linux + + #if defined(INPUT_SDL) + "SDL;" + #endif + + #if defined(INPUT_X) + "X-Windows;" + #endif + + //OS X + + #if defined(INPUT_CARBON) + "Carbon;" + #endif + + "None"; +} + +bool InputInterface::init() { + if(!p) driver(); + return p->init(); +} + +void InputInterface::term() { + if(p) { + delete p; + p = 0; + } +} + +bool InputInterface::cap(const string& name) { return p ? p->cap(name) : false; } +any InputInterface::get(const string& name) { return p ? p->get(name) : false; } +bool InputInterface::set(const string& name, const any& value) { return p ? p->set(name, value) : false; } +bool InputInterface::acquire() { return p ? p->acquire() : false; } +bool InputInterface::unacquire() { return p ? p->unacquire() : false; } +bool InputInterface::acquired() { return p ? p->acquired() : false; } +bool InputInterface::poll(int16_t *table) { return p ? p->poll(table) : false; } +InputInterface::InputInterface() : p(0) {} +InputInterface::~InputInterface() { term(); } + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/ruby.hpp b/libmednahawk/src/snes/src/lib/ruby/ruby.hpp new file mode 100644 index 0000000000..af559cdfc5 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/ruby.hpp @@ -0,0 +1,109 @@ +/* + ruby + version: 0.06 (2009-05-22) + license: public domain +*/ + +#ifndef RUBY_H +#define RUBY_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ruby { + +#include +#include +#include + +class VideoInterface { +public: + void driver(const char *driver = ""); + const char* default_driver(); + const char* driver_list(); + bool init(); + void term(); + + bool cap(const nall::string& name); + nall::any get(const nall::string& name); + bool set(const nall::string& name, const nall::any& value); + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height); + void unlock(); + void clear(); + void refresh(); + VideoInterface(); + ~VideoInterface(); + +private: + Video *p; +}; + +class AudioInterface { +public: + void driver(const char *driver = ""); + const char* default_driver(); + const char* driver_list(); + bool init(); + void term(); + + bool cap(const nall::string& name); + nall::any get(const nall::string& name); + bool set(const nall::string& name, const nall::any& value); + + void sample(uint16_t left, uint16_t right); + void clear(); + AudioInterface(); + ~AudioInterface(); + +private: + Audio *p; + + unsigned volume; + + //resample unit + double hermite(double mu, double a, double b, double c, double d); + bool resample_enabled; + double r_step, r_frac; + int r_left[4], r_right[4]; +}; + +class InputInterface { +public: + void driver(const char *driver = ""); + const char* default_driver(); + const char* driver_list(); + bool init(); + void term(); + + bool cap(const nall::string& name); + nall::any get(const nall::string& name); + bool set(const nall::string& name, const nall::any& value); + + bool acquire(); + bool unacquire(); + bool acquired(); + + bool poll(int16_t *table); + InputInterface(); + ~InputInterface(); + +private: + Input *p; +}; + +extern VideoInterface video; +extern AudioInterface audio; +extern InputInterface input; + +}; + +#endif diff --git a/libmednahawk/src/snes/src/lib/ruby/ruby_audio.cpp b/libmednahawk/src/snes/src/lib/ruby/ruby_audio.cpp new file mode 100644 index 0000000000..2a3799d0eb --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/ruby_audio.cpp @@ -0,0 +1,133 @@ +const char *Audio::Volume = "Volume"; +const char *Audio::Resample = "Resample"; +const char *Audio::ResampleRatio = "ResampleRatio"; + +const char *Audio::Handle = "Handle"; +const char *Audio::Synchronize = "Synchronize"; +const char *Audio::Frequency = "Frequency"; +const char *Audio::Latency = "Latency"; + +bool AudioInterface::init() { + if(!p) driver(); + return p->init(); +} + +void AudioInterface::term() { + if(p) { + delete p; + p = 0; + } +} + +bool AudioInterface::cap(const string& name) { + if(name == Audio::Volume) return true; + if(name == Audio::Resample) return true; + if(name == Audio::ResampleRatio) return true; + + return p ? p->cap(name) : false; +} + +any AudioInterface::get(const string& name) { + if(name == Audio::Volume) return volume; + if(name == Audio::Resample) return resample_enabled; + if(name == Audio::ResampleRatio); + + return p ? p->get(name) : false; +} + +bool AudioInterface::set(const string& name, const any& value) { + if(name == Audio::Volume) { + volume = any_cast(value); + return true; + } + + if(name == Audio::Resample) { + resample_enabled = any_cast(value); + return true; + } + + if(name == Audio::ResampleRatio) { + r_step = any_cast(value); + r_frac = 0; + return true; + } + + return p ? p->set(name, value) : false; +} + +//4-tap hermite interpolation +double AudioInterface::hermite(double mu1, double a, double b, double c, double d) { + const double tension = 0.0; //-1 = low, 0 = normal, 1 = high + const double bias = 0.0; //-1 = left, 0 = even, 1 = right + + double mu2, mu3, m0, m1, a0, a1, a2, a3; + + mu2 = mu1 * mu1; + mu3 = mu2 * mu1; + + m0 = (b - a) * (1 + bias) * (1 - tension) / 2; + m0 += (c - b) * (1 - bias) * (1 - tension) / 2; + m1 = (c - b) * (1 + bias) * (1 - tension) / 2; + m1 += (d - c) * (1 - bias) * (1 - tension) / 2; + + a0 = +2 * mu3 - 3 * mu2 + 1; + a1 = mu3 - 2 * mu2 + mu1; + a2 = mu3 - mu2; + a3 = -2 * mu3 + 3 * mu2; + + return (a0 * b) + (a1 * m0) + (a2 * m1) + (a3 * c); +} + +void AudioInterface::sample(uint16_t left, uint16_t right) { + int s_left = (int16_t)left; + int s_right = (int16_t)right; + + if(volume != 100) { + s_left = sclamp<16>((double)s_left * (double)volume / 100.0); + s_right = sclamp<16>((double)s_right * (double)volume / 100.0); + } + + r_left [0] = r_left [1]; + r_left [1] = r_left [2]; + r_left [2] = r_left [3]; + r_left [3] = s_left; + + r_right[0] = r_right[1]; + r_right[1] = r_right[2]; + r_right[2] = r_right[3]; + r_right[3] = s_right; + + if(resample_enabled == false) { + if(p) p->sample(left, right); + return; + } + + while(r_frac <= 1.0) { + int output_left = sclamp<16>(hermite(r_frac, r_left [0], r_left [1], r_left [2], r_left [3])); + int output_right = sclamp<16>(hermite(r_frac, r_right[0], r_right[1], r_right[2], r_right[3])); + r_frac += r_step; + if(p) p->sample(output_left, output_right); + } + + r_frac -= 1.0; +} + +void AudioInterface::clear() { + r_frac = 0; + r_left [0] = r_left [1] = r_left [2] = r_left [3] = 0; + r_right[0] = r_right[1] = r_right[2] = r_right[3] = 0; + if(p) p->clear(); +} + +AudioInterface::AudioInterface() { + p = 0; + volume = 100; + resample_enabled = false; + r_step = r_frac = 0; + r_left [0] = r_left [1] = r_left [2] = r_left [3] = 0; + r_right[0] = r_right[1] = r_right[2] = r_right[3] = 0; +} + +AudioInterface::~AudioInterface() { + term(); +} diff --git a/libmednahawk/src/snes/src/lib/ruby/ruby_impl.cpp b/libmednahawk/src/snes/src/lib/ruby/ruby_impl.cpp new file mode 100644 index 0000000000..47f9dedae9 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/ruby_impl.cpp @@ -0,0 +1,177 @@ +/* Global Headers */ + +#if defined(VIDEO_QTOPENGL) || defined(VIDEO_QTRASTER) + #include + #include +#endif + +#if defined(VIDEO_QTOPENGL) + #include + #if defined(PLATFORM_WIN) + #include + #endif +#endif + +#if defined(PLATFORM_X) + #include + #include + #include +#elif defined(PLATFORM_OSX) + #include +#elif defined(PLATFORM_WIN) + #define _WIN32_WINNT 0x0501 + #include +#endif + +/* Video */ + +#define DeclareVideo(Name) \ + class Video##Name : public Video { \ + public: \ + bool cap(const string& name) { return p.cap(name); } \ + any get(const string& name) { return p.get(name); } \ + bool set(const string& name, const any& value) { return p.set(name, value); } \ + \ + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { return p.lock(data, pitch, width, height); } \ + void unlock() { p.unlock(); } \ + \ + void clear() { p.clear(); } \ + void refresh() { p.refresh(); } \ + bool init() { return p.init(); } \ + void term() { p.term(); } \ + \ + Video##Name() : p(*new pVideo##Name) {} \ + ~Video##Name() { delete &p; } \ + \ + private: \ + pVideo##Name &p; \ + }; + +#ifdef VIDEO_DIRECT3D + #include +#endif + +#ifdef VIDEO_DIRECTDRAW + #include +#endif + +#ifdef VIDEO_GDI + #include +#endif + +#ifdef VIDEO_GLX + #include +#endif + +#ifdef VIDEO_QTOPENGL + #include +#endif + +#ifdef VIDEO_QTRASTER + #include +#endif + +#ifdef VIDEO_SDL + #include +#endif + +#ifdef VIDEO_WGL + #include +#endif + +#ifdef VIDEO_XV + #include +#endif + +/* Audio */ + +#define DeclareAudio(Name) \ + class Audio##Name : public Audio { \ + public: \ + bool cap(const string& name) { return p.cap(name); } \ + any get(const string& name) { return p.get(name); } \ + bool set(const string& name, const any& value) { return p.set(name, value); } \ + \ + void sample(uint16_t left, uint16_t right) { p.sample(left, right); } \ + void clear() { p.clear(); } \ + bool init() { return p.init(); } \ + void term() { p.term(); } \ + \ + Audio##Name() : p(*new pAudio##Name) {} \ + ~Audio##Name() { delete &p; } \ + \ + private: \ + pAudio##Name &p; \ + }; + +#ifdef AUDIO_ALSA + #include +#endif + +#ifdef AUDIO_AO + #include +#endif + +#ifdef AUDIO_DIRECTSOUND + #include +#endif + +#ifdef AUDIO_OPENAL + #include +#endif + +#ifdef AUDIO_OSS + #include +#endif + +#ifdef AUDIO_PULSEAUDIO + #include +#endif + +#ifdef AUDIO_PULSEAUDIOSIMPLE + #include +#endif + +/* Input */ + +#define DeclareInput(Name) \ + class Input##Name : public Input { \ + public: \ + bool cap(const string& name) { return p.cap(name); } \ + any get(const string& name) { return p.get(name); } \ + bool set(const string& name, const any& value) { return p.set(name, value); } \ + \ + bool acquire() { return p.acquire(); } \ + bool unacquire() { return p.unacquire(); } \ + bool acquired() { return p.acquired(); } \ + \ + bool poll(int16_t *table) { return p.poll(table); } \ + bool init() { return p.init(); } \ + void term() { p.term(); } \ + \ + Input##Name() : p(*new pInput##Name) {} \ + ~Input##Name() { delete &p; } \ + \ + private: \ + pInput##Name &p; \ + }; + +#ifdef INPUT_DIRECTINPUT + #include +#endif + +#ifdef INPUT_RAWINPUT + #include +#endif + +#ifdef INPUT_SDL + #include +#endif + +#ifdef INPUT_X + #include +#endif + +#ifdef INPUT_CARBON + #include +#endif diff --git a/libmednahawk/src/snes/src/lib/ruby/video.hpp b/libmednahawk/src/snes/src/lib/ruby/video.hpp new file mode 100644 index 0000000000..c0d599d579 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video.hpp @@ -0,0 +1,28 @@ +class Video { +public: + static const char *Handle; + static const char *Synchronize; + static const char *Filter; + static const char *FragmentShader; + static const char *VertexShader; + + enum Filter { + FilterPoint, + FilterLinear, + }; + + virtual bool cap(const nall::string& name) { return false; } + virtual nall::any get(const nall::string& name) { return false; } + virtual bool set(const nall::string& name, const nall::any& value) { return false; } + + virtual bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { return false; } + virtual void unlock() {} + + virtual void clear() {} + virtual void refresh() {} + virtual bool init() { return true; } + virtual void term() {} + + Video() {} + virtual ~Video() {} +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/direct3d.cpp b/libmednahawk/src/snes/src/lib/ruby/video/direct3d.cpp new file mode 100644 index 0000000000..2c91b9af69 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/direct3d.cpp @@ -0,0 +1,388 @@ +#undef interface +#define interface struct +#include +#undef interface + +#define D3DVERTEX (D3DFVF_XYZRHW | D3DFVF_TEX1) + +namespace ruby { + +class pVideoD3D { +public: + LPDIRECT3D9 lpd3d; + LPDIRECT3DDEVICE9 device; + LPDIRECT3DVERTEXBUFFER9 vertex_buffer, *vertex_ptr; + D3DPRESENT_PARAMETERS presentation; + D3DSURFACE_DESC d3dsd; + D3DLOCKED_RECT d3dlr; + D3DRASTER_STATUS d3drs; + D3DCAPS9 d3dcaps; + LPDIRECT3DTEXTURE9 texture; + LPDIRECT3DSURFACE9 surface; + bool lost; + unsigned iwidth, iheight; + + struct d3dvertex { + float x, y, z, rhw; //screen coords + float u, v; //texture coords + }; + + struct { + uint32_t t_usage, v_usage; + uint32_t t_pool, v_pool; + uint32_t lock; + uint32_t filter; + } flags; + + struct { + bool dynamic; //device supports dynamic textures + bool stretchrect; //device supports StretchRect + } caps; + + struct { + HWND handle; + bool synchronize; + unsigned filter; + + unsigned width; + unsigned height; + } settings; + + struct { + unsigned width; + unsigned height; + } state; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + if(name == Video::Synchronize) return true; + if(name == Video::Filter) return true; + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return (uintptr_t)settings.handle; + if(name == Video::Synchronize) return settings.synchronize; + if(name == Video::Filter) return settings.filter; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + if(name == Video::Synchronize) { + settings.synchronize = any_cast(value); + return true; + } + + if(name == Video::Filter) { + settings.filter = any_cast(value); + if(lpd3d) update_filter(); + return true; + } + + return false; + } + + bool recover() { + if(!device) return false; + + if(lost) { + release_resources(); + if(device->Reset(&presentation) != D3D_OK) return false; + } + + lost = false; + + device->SetDialogBoxMode(false); + + device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1); + device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); + device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); + + device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1); + device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); + device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); + + device->SetRenderState(D3DRS_LIGHTING, false); + device->SetRenderState(D3DRS_ZENABLE, false); + device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); + + device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); + device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); + device->SetRenderState(D3DRS_ALPHABLENDENABLE, false); + + device->SetVertexShader(NULL); + device->SetFVF(D3DVERTEX); + + device->CreateVertexBuffer(sizeof(d3dvertex) * 4, flags.v_usage, D3DVERTEX, + static_cast(flags.v_pool), &vertex_buffer, NULL); + iwidth = 0; + iheight = 0; + resize(settings.width = 256, settings.height = 256); + update_filter(); + clear(); + return true; + } + + unsigned rounded_power_of_two(unsigned n) { + n--; + n |= n >> 1; + n |= n >> 2; + n |= n >> 4; + n |= n >> 8; + n |= n >> 16; + return n + 1; + } + + void resize(unsigned width, unsigned height) { + if(iwidth >= width && iheight >= height) return; + + iwidth = rounded_power_of_two(max(width, iwidth )); + iheight = rounded_power_of_two(max(height, iheight)); + + if(d3dcaps.MaxTextureWidth < iwidth || d3dcaps.MaxTextureWidth < iheight) { + //TODO: attempt to handle this more gracefully + return; + } + + if(caps.stretchrect == true) { + if(surface) surface->Release(); + device->CreateOffscreenPlainSurface(iwidth, iheight, D3DFMT_X8R8G8B8, + D3DPOOL_DEFAULT, &surface, NULL); + } else { + if(texture) texture->Release(); + device->CreateTexture(iwidth, iheight, 1, flags.t_usage, D3DFMT_X8R8G8B8, + static_cast(flags.t_pool), &texture, NULL); + } + } + + void update_filter() { + if(!device) return; + if(lost && !recover()) return; + + switch(settings.filter) { default: + case Video::FilterPoint: flags.filter = D3DTEXF_POINT; break; + case Video::FilterLinear: flags.filter = D3DTEXF_LINEAR; break; + } + + device->SetSamplerState(0, D3DSAMP_MINFILTER, flags.filter); + device->SetSamplerState(0, D3DSAMP_MAGFILTER, flags.filter); + } + + // Vertex format: + // + // 0----------1 + // | /| + // | / | + // | / | + // | / | + // | / | + // 2----------3 + // + // (x,y) screen coords, in pixels + // (u,v) texture coords, betweeen 0.0 (top, left) to 1.0 (bottom, right) + void set_vertex( + uint32_t px, uint32_t py, uint32_t pw, uint32_t ph, + uint32_t tw, uint32_t th, + uint32_t x, uint32_t y, uint32_t w, uint32_t h + ) { + d3dvertex vertex[4]; + vertex[0].x = vertex[2].x = (double)(x - 0.5); + vertex[1].x = vertex[3].x = (double)(x + w - 0.5); + vertex[0].y = vertex[1].y = (double)(y - 0.5); + vertex[2].y = vertex[3].y = (double)(y + h - 0.5); + + //Z-buffer and RHW are unused for 2D blit, set to normal values + vertex[0].z = vertex[1].z = vertex[2].z = vertex[3].z = 0.0; + vertex[0].rhw = vertex[1].rhw = vertex[2].rhw = vertex[3].rhw = 1.0; + + double rw = (double)w / (double)pw * (double)tw; + double rh = (double)h / (double)ph * (double)th; + vertex[0].u = vertex[2].u = (double)(px ) / rw; + vertex[1].u = vertex[3].u = (double)(px + w) / rw; + vertex[0].v = vertex[1].v = (double)(py ) / rh; + vertex[2].v = vertex[3].v = (double)(py + h) / rh; + + vertex_buffer->Lock(0, sizeof(d3dvertex) * 4, (void**)&vertex_ptr, 0); + memcpy(vertex_ptr, vertex, sizeof(d3dvertex) * 4); + vertex_buffer->Unlock(); + + device->SetStreamSource(0, vertex_buffer, 0, sizeof(d3dvertex)); + } + + void clear() { + if(lost && !recover()) return; + + if(caps.stretchrect == false) { + texture->GetLevelDesc(0, &d3dsd); + texture->GetSurfaceLevel(0, &surface); + } + + if(surface) { + device->ColorFill(surface, 0, D3DCOLOR_XRGB(0x00, 0x00, 0x00)); + if(caps.stretchrect == false) surface->Release(); + } + + //clear primary display and all backbuffers + for(unsigned i = 0; i < 3; i++) { + device->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0x00, 0x00, 0x00), 1.0f, 0); + device->Present(0, 0, 0, 0); + } + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + if(lost && !recover()) return false; + + if(width != settings.width || height != settings.height) { + resize(settings.width = width, settings.height = height); + } + + if(caps.stretchrect == false) { + texture->GetLevelDesc(0, &d3dsd); + texture->GetSurfaceLevel(0, &surface); + } + + surface->LockRect(&d3dlr, 0, flags.lock); + pitch = d3dlr.Pitch; + return data = (uint32_t*)d3dlr.pBits; + } + + void unlock() { + surface->UnlockRect(); + if(caps.stretchrect == false) surface->Release(); + } + + void refresh() { + if(lost && !recover()) return; + + RECT rd, rs; //dest, source rectangles + GetClientRect(settings.handle, &rd); + SetRect(&rs, 0, 0, settings.width, settings.height); + + //if output size changed, driver must be re-initialized. + //failure to do so causes scaling issues on some video drivers. + if(state.width != rd.right || state.height != rd.bottom) { + init(); + return; + } + + device->BeginScene(); + + if(caps.stretchrect == true) { + LPDIRECT3DSURFACE9 temp; + device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &temp); + device->StretchRect(surface, &rs, temp, 0, static_cast(flags.filter)); + temp->Release(); + } else { + set_vertex(0, 0, settings.width, settings.height, iwidth, iheight, 0, 0, rd.right, rd.bottom); + device->SetTexture(0, texture); + device->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); + } + + device->EndScene(); + + if(settings.synchronize) { + while(true) { + D3DRASTER_STATUS status; + device->GetRasterStatus(0, &status); + if(status.InVBlank == true) break; + } + } + + if(device->Present(0, 0, 0, 0) == D3DERR_DEVICELOST) lost = true; + } + + bool init() { + term(); + + RECT rd; + GetClientRect(settings.handle, &rd); + state.width = rd.right; + state.height = rd.bottom; + + lpd3d = Direct3DCreate9(D3D_SDK_VERSION); + if(!lpd3d) return false; + + memset(&presentation, 0, sizeof(presentation)); + presentation.Flags = D3DPRESENTFLAG_VIDEO; + presentation.SwapEffect = D3DSWAPEFFECT_FLIP; + presentation.hDeviceWindow = settings.handle; + presentation.BackBufferCount = 1; + presentation.MultiSampleType = D3DMULTISAMPLE_NONE; + presentation.MultiSampleQuality = 0; + presentation.EnableAutoDepthStencil = false; + presentation.AutoDepthStencilFormat = D3DFMT_UNKNOWN; + presentation.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; + presentation.Windowed = true; + presentation.BackBufferFormat = D3DFMT_UNKNOWN; + presentation.BackBufferWidth = 0; + presentation.BackBufferHeight = 0; + + if(lpd3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, settings.handle, + D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentation, &device) != D3D_OK) { + return false; + } + + device->GetDeviceCaps(&d3dcaps); + + caps.dynamic = bool(d3dcaps.Caps2 & D3DCAPS2_DYNAMICTEXTURES); + caps.stretchrect = (d3dcaps.DevCaps2 & D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES) && + (d3dcaps.StretchRectFilterCaps & D3DPTFILTERCAPS_MINFPOINT) && + (d3dcaps.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFPOINT) && + (d3dcaps.StretchRectFilterCaps & D3DPTFILTERCAPS_MINFLINEAR) && + (d3dcaps.StretchRectFilterCaps & D3DPTFILTERCAPS_MAGFLINEAR); + + if(caps.dynamic == true) { + flags.t_usage = D3DUSAGE_DYNAMIC; + flags.v_usage = D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC; + flags.t_pool = D3DPOOL_DEFAULT; + flags.v_pool = D3DPOOL_DEFAULT; + flags.lock = D3DLOCK_NOSYSLOCK | D3DLOCK_DISCARD; + } else { + flags.t_usage = 0; + flags.v_usage = D3DUSAGE_WRITEONLY; + flags.t_pool = D3DPOOL_MANAGED; + flags.v_pool = D3DPOOL_MANAGED; + flags.lock = D3DLOCK_NOSYSLOCK | D3DLOCK_DISCARD; + } + + lost = false; + recover(); + return true; + } + + void release_resources() { + if(vertex_buffer) { vertex_buffer->Release(); vertex_buffer = 0; } + if(surface) { surface->Release(); surface = 0; } + if(texture) { texture->Release(); texture = 0; } + } + + void term() { + release_resources(); + if(device) { device->Release(); device = 0; } + if(lpd3d) { lpd3d->Release(); lpd3d = 0; } + } + + pVideoD3D() { + vertex_buffer = 0; + surface = 0; + texture = 0; + device = 0; + lpd3d = 0; + lost = true; + + settings.handle = 0; + settings.synchronize = false; + settings.filter = Video::FilterLinear; + } +}; + +DeclareVideo(D3D) + +}; + +#undef D3DVERTEX diff --git a/libmednahawk/src/snes/src/lib/ruby/video/directdraw.cpp b/libmednahawk/src/snes/src/lib/ruby/video/directdraw.cpp new file mode 100644 index 0000000000..71dca627bf --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/directdraw.cpp @@ -0,0 +1,186 @@ +#include + +namespace ruby { + +class pVideoDD { +public: + LPDIRECTDRAW lpdd; + LPDIRECTDRAW7 lpdd7; + LPDIRECTDRAWSURFACE7 screen, raster; + LPDIRECTDRAWCLIPPER clipper; + DDSURFACEDESC2 ddsd; + DDSCAPS2 ddscaps; + unsigned iwidth, iheight; + + struct { + HWND handle; + bool synchronize; + + unsigned width; + unsigned height; + } settings; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + if(name == Video::Synchronize) return true; + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return (uintptr_t)settings.handle; + if(name == Video::Synchronize) return settings.synchronize; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + if(name == Video::Synchronize) { + settings.synchronize = any_cast(value); + return true; + } + + return false; + } + + void resize(unsigned width, unsigned height) { + if(iwidth >= width && iheight >= height) return; + + iwidth = max(width, iwidth); + iheight = max(height, iheight); + + if(raster) raster->Release(); + + screen->GetSurfaceDesc(&ddsd); + int depth = ddsd.ddpfPixelFormat.dwRGBBitCount; + if(depth == 32) goto try_native_surface; + + memset(&ddsd, 0, sizeof(DDSURFACEDESC2)); + ddsd.dwSize = sizeof(DDSURFACEDESC2); + ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT; + ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; //DDSCAPS_SYSTEMMEMORY + ddsd.dwWidth = iwidth; + ddsd.dwHeight = iheight; + + ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT); + ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB; + ddsd.ddpfPixelFormat.dwRGBBitCount = 32; + ddsd.ddpfPixelFormat.dwRBitMask = 0xff0000; + ddsd.ddpfPixelFormat.dwGBitMask = 0x00ff00; + ddsd.ddpfPixelFormat.dwBBitMask = 0x0000ff; + + if(lpdd7->CreateSurface(&ddsd, &raster, 0) == DD_OK) return clear(); + + try_native_surface: + memset(&ddsd, 0, sizeof(DDSURFACEDESC2)); + ddsd.dwSize = sizeof(DDSURFACEDESC2); + ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT; + ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_VIDEOMEMORY; //DDSCAPS_SYSTEMMEMORY + ddsd.dwWidth = iwidth; + ddsd.dwHeight = iheight; + + if(lpdd7->CreateSurface(&ddsd, &raster, 0) == DD_OK) return clear(); + } + + void clear() { + DDBLTFX fx; + fx.dwSize = sizeof(DDBLTFX); + fx.dwFillColor = 0x00000000; + screen->Blt(0, 0, 0, DDBLT_WAIT | DDBLT_COLORFILL, &fx); + raster->Blt(0, 0, 0, DDBLT_WAIT | DDBLT_COLORFILL, &fx); + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + if(width != settings.width || height != settings.height) { + resize(settings.width = width, settings.height = height); + } + + if(raster->Lock(0, &ddsd, DDLOCK_WAIT, 0) != DD_OK) { + raster->Restore(); + if(raster->Lock(0, &ddsd, DDLOCK_WAIT, 0) != DD_OK) return false; + } + pitch = ddsd.lPitch; + return data = (uint32_t*)ddsd.lpSurface; + } + + void unlock() { + raster->Unlock(0); + } + + void refresh() { + if(settings.synchronize) { + while(true) { + BOOL in_vblank; + lpdd7->GetVerticalBlankStatus(&in_vblank); + if(in_vblank == true) break; + } + } + + HRESULT hr; + RECT rd, rs; + SetRect(&rs, 0, 0, settings.width, settings.height); + + POINT p = { 0, 0 }; + ClientToScreen(settings.handle, &p); + GetClientRect(settings.handle, &rd); + OffsetRect(&rd, p.x, p.y); + + if(screen->Blt(&rd, raster, &rs, DDBLT_WAIT, 0) == DDERR_SURFACELOST) { + screen->Restore(); + raster->Restore(); + } + } + + bool init() { + term(); + + DirectDrawCreate(0, &lpdd, 0); + lpdd->QueryInterface(IID_IDirectDraw7, (void**)&lpdd7); + if(lpdd) { lpdd->Release(); lpdd = 0; } + + lpdd7->SetCooperativeLevel(settings.handle, DDSCL_NORMAL); + + memset(&ddsd, 0, sizeof(DDSURFACEDESC2)); + ddsd.dwSize = sizeof(DDSURFACEDESC2); + + ddsd.dwFlags = DDSD_CAPS; + ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; + lpdd7->CreateSurface(&ddsd, &screen, 0); + + lpdd7->CreateClipper(0, &clipper, 0); + clipper->SetHWnd(0, settings.handle); + screen->SetClipper(clipper); + + raster = 0; + iwidth = 0; + iheight = 0; + resize(settings.width = 256, settings.height = 256); + + return true; + } + + void term() { + if(clipper) { clipper->Release(); clipper = 0; } + if(raster) { raster->Release(); raster = 0; } + if(screen) { screen->Release(); screen = 0; } + if(lpdd7) { lpdd7->Release(); lpdd7 = 0; } + if(lpdd) { lpdd->Release(); lpdd = 0; } + } + + pVideoDD() { + lpdd = 0; + lpdd7 = 0; + screen = 0; + raster = 0; + clipper = 0; + + settings.handle = 0; + } +}; + +DeclareVideo(DD) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/gdi.cpp b/libmednahawk/src/snes/src/lib/ruby/video/gdi.cpp new file mode 100644 index 0000000000..03d5571d13 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/gdi.cpp @@ -0,0 +1,100 @@ +#include + +namespace ruby { + +class pVideoGDI { +public: + uint32_t *buffer; + HBITMAP bitmap; + HDC bitmapdc; + BITMAPINFO bmi; + + struct { + HWND handle; + + unsigned width; + unsigned height; + } settings; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return (uintptr_t)settings.handle; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + return false; + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + settings.width = width; + settings.height = height; + + pitch = 1024 * 4; + return data = buffer; + } + + void unlock() {} + + void clear() {} + + void refresh() { + RECT rc; + GetClientRect(settings.handle, &rc); + + SetDIBits(bitmapdc, bitmap, 0, settings.height, (void*)buffer, &bmi, DIB_RGB_COLORS); + HDC hdc = GetDC(settings.handle); + StretchBlt(hdc, rc.left, rc.top, rc.right, rc.bottom, bitmapdc, 0, 1024 - settings.height, settings.width, settings.height, SRCCOPY); + ReleaseDC(settings.handle, hdc); + } + + bool init() { + HDC hdc = GetDC(settings.handle); + bitmapdc = CreateCompatibleDC(hdc); + assert(bitmapdc); + bitmap = CreateCompatibleBitmap(hdc, 1024, 1024); + assert(bitmap); + SelectObject(bitmapdc, bitmap); + ReleaseDC(settings.handle, hdc); + + memset(&bmi, 0, sizeof(BITMAPINFO)); + bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bmi.bmiHeader.biWidth = 1024; + bmi.bmiHeader.biHeight = -1024; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biBitCount = 32; //biBitCount of 15 is invalid, biBitCount of 16 is really RGB555 + bmi.bmiHeader.biCompression = BI_RGB; + bmi.bmiHeader.biSizeImage = 1024 * 1024 * sizeof(uint32_t); + + settings.width = 256; + settings.height = 256; + return true; + } + + void term() { + DeleteObject(bitmap); + DeleteDC(bitmapdc); + } + + pVideoGDI() { + buffer = (uint32_t*)malloc(1024 * 1024 * sizeof(uint32_t)); + settings.handle = 0; + } + + ~pVideoGDI() { + if(buffer) free(buffer); + } +}; + +DeclareVideo(GDI) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/glx.cpp b/libmednahawk/src/snes/src/lib/ruby/video/glx.cpp new file mode 100644 index 0000000000..bf0806775d --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/glx.cpp @@ -0,0 +1,231 @@ +/* + video.glx + author: byuu + license: public domain + last updated: 2010-01-05 + + Design notes: + SGI's GLX is the X11/Xlib interface to OpenGL. + At the time of this writing, there are three relevant versions of the API: versions 1.2, 1.3 and 1.4. + + Version 1.2 was released on March 4th, 1997. + Version 1.3 was released on October 19th, 1998. + Version 1.4 was released on December 16th, 2005. + + Despite version 1.3 being roughly ten years old at this time, there are still many modern X11 GLX drivers + that lack full support for the specification. Most notable would be the official video drivers from ATI. + Given this, 1.4 support is pretty much hopeless to target. + + Luckily, each version has been designed to be backwards compatible with the previous version. As well, + version 1.2 is wholly sufficient, albeit less convenient, to implement this video module. + + Therefore, for the purpose of compatibility, this driver only uses GLX 1.2 or earlier API commands. + As well, it only uses raw Xlib API commands, so that it is compatible with any toolkit. +*/ + +#include "opengl.hpp" + +namespace ruby { + +//returns true once window is mapped (created and displayed onscreen) +static Bool glx_wait_for_map_notify(Display *d, XEvent *e, char *arg) { + return (e->type == MapNotify) && (e->xmap.window == (Window)arg); +} + +class pVideoGLX : public OpenGL { +public: + int (*glSwapInterval)(int); + + Display *display; + int screen; + Window xwindow; + Colormap colormap; + GLXContext glxcontext; + GLXWindow glxwindow; + + struct { + int version_major, version_minor; + bool double_buffer; + bool is_direct; + } glx; + + struct { + Window handle; + bool synchronize; + unsigned filter; + + unsigned width; + unsigned height; + } settings; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + if(name == Video::Synchronize) return true; + if(name == Video::Filter) return true; + if(name == Video::FragmentShader) return true; + if(name == Video::VertexShader) return true; + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return (uintptr_t)settings.handle; + if(name == Video::Synchronize) return settings.synchronize; + if(name == Video::Filter) return settings.filter; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = any_cast(value); + return true; + } + + if(name == Video::Synchronize) { + if(settings.synchronize != any_cast(value)) { + settings.synchronize = any_cast(value); + if(glSwapInterval) glSwapInterval(settings.synchronize); + return true; + } + } + + if(name == Video::Filter) { + settings.filter = any_cast(value); + return true; + } + + if(name == Video::FragmentShader) { + OpenGL::set_fragment_shader(any_cast(value)); + return true; + } + + if(name == Video::VertexShader) { + OpenGL::set_vertex_shader(any_cast(value)); + return true; + } + + return false; + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + resize(width, height); + settings.width = width; + settings.height = height; + return OpenGL::lock(data, pitch); + } + + void unlock() { + } + + void clear() { + OpenGL::clear(); + if(glx.double_buffer) glXSwapBuffers(display, glxwindow); + } + + void refresh() { + //we must ensure that the child window is the same size as the parent window. + //unfortunately, we cannot hook the parent window resize event notification, + //as we did not create the parent window, nor have any knowledge of the toolkit used. + //therefore, inelegant as it may be, we query each window size and resize as needed. + XWindowAttributes parent, child; + XGetWindowAttributes(display, settings.handle, &parent); + XGetWindowAttributes(display, xwindow, &child); + if(child.width != parent.width || child.height != parent.height) { + XResizeWindow(display, xwindow, parent.width, parent.height); + } + + OpenGL::refresh(settings.filter == Video::FilterLinear, + settings.width, settings.height, parent.width, parent.height); + if(glx.double_buffer) glXSwapBuffers(display, glxwindow); + } + + bool init() { + term(); + + display = XOpenDisplay(0); + screen = DefaultScreen(display); + glXQueryVersion(display, &glx.version_major, &glx.version_minor); + //require GLX 1.2+ API + if(glx.version_major < 1 || (glx.version_major == 1 && glx.version_minor < 2)) return false; + + XWindowAttributes window_attributes; + XGetWindowAttributes(display, settings.handle, &window_attributes); + + //let GLX determine the best Visual to use for GL output; provide a few hints + //note: some video drivers will override double buffering attribute + int attributelist[] = { GLX_RGBA, GLX_DOUBLEBUFFER, None }; + XVisualInfo *vi = glXChooseVisual(display, screen, attributelist); + + //Window settings.handle has already been realized, most likely with DefaultVisual. + //GLX requires that the GL output window has the same Visual as the GLX context. + //it is not possible to change the Visual of an already realized (created) window. + //therefore a new child window, using the same GLX Visual, must be created and binded to settings.handle. + colormap = XCreateColormap(display, RootWindow(display, vi->screen), vi->visual, AllocNone); + XSetWindowAttributes attributes; + attributes.colormap = colormap; + attributes.border_pixel = 0; + attributes.event_mask = StructureNotifyMask; + xwindow = XCreateWindow(display, /* parent = */ settings.handle, + /* x = */ 0, /* y = */ 0, window_attributes.width, window_attributes.height, + /* border_width = */ 0, vi->depth, InputOutput, vi->visual, + CWColormap | CWBorderPixel | CWEventMask, &attributes); + XSetWindowBackground(display, xwindow, /* color = */ 0); + XMapWindow(display, xwindow); + XEvent event; + //window must be realized (appear onscreen) before we make the context current + XIfEvent(display, &event, glx_wait_for_map_notify, (char*)xwindow); + + glxcontext = glXCreateContext(display, vi, /* sharelist = */ 0, /* direct = */ GL_TRUE); + glXMakeCurrent(display, glxwindow = xwindow, glxcontext); + + //read attributes of frame buffer for later use, as requested attributes from above are not always granted + int value = 0; + glXGetConfig(display, vi, GLX_DOUBLEBUFFER, &value); + glx.double_buffer = value; + glx.is_direct = glXIsDirect(display, glxcontext); + + OpenGL::init(); + settings.width = 256; + settings.height = 256; + + //vertical synchronization + if(!glSwapInterval) glSwapInterval = (int (*)(int))glGetProcAddress("glXSwapIntervalSGI"); + if(!glSwapInterval) glSwapInterval = (int (*)(int))glGetProcAddress("glXSwapIntervalMESA"); + if( glSwapInterval) glSwapInterval(settings.synchronize); + + return true; + } + + void term() { + OpenGL::term(); + + if(glxcontext) { + glXDestroyContext(display, glxcontext); + glxcontext = 0; + } + + if(xwindow) { + XUnmapWindow(display, xwindow); + xwindow = 0; + } + + if(colormap) { + XFreeColormap(display, colormap); + colormap = 0; + } + } + + pVideoGLX() : glSwapInterval(0) { + settings.handle = 0; + settings.synchronize = false; + xwindow = 0; + colormap = 0; + glxcontext = 0; + glxwindow = 0; + } + + ~pVideoGLX() { term(); } +}; + +DeclareVideo(GLX) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/opengl.hpp b/libmednahawk/src/snes/src/lib/ruby/video/opengl.hpp new file mode 100644 index 0000000000..dfeef952a8 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/opengl.hpp @@ -0,0 +1,225 @@ +#include + +#if defined(PLATFORM_X) + #include + #define glGetProcAddress(name) (*glXGetProcAddress)((const GLubyte*)(name)) +#elif defined(PLATFORM_WIN) + #include + #define glGetProcAddress(name) wglGetProcAddress(name) +#else + #error "ruby::OpenGL: unsupported platform" +#endif + +PFNGLCREATEPROGRAMPROC glCreateProgram = 0; +PFNGLUSEPROGRAMPROC glUseProgram = 0; +PFNGLCREATESHADERPROC glCreateShader = 0; +PFNGLDELETESHADERPROC glDeleteShader = 0; +PFNGLSHADERSOURCEPROC glShaderSource = 0; +PFNGLCOMPILESHADERPROC glCompileShader = 0; +PFNGLATTACHSHADERPROC glAttachShader = 0; +PFNGLDETACHSHADERPROC glDetachShader = 0; +PFNGLLINKPROGRAMPROC glLinkProgram = 0; +PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation = 0; +PFNGLUNIFORM1IPROC glUniform1i = 0; +PFNGLUNIFORM2FVPROC glUniform2fv = 0; +PFNGLUNIFORM4FVPROC glUniform4fv = 0; + +class OpenGL { +public: + GLuint gltexture; + GLuint glprogram; + GLuint fragmentshader; + GLuint vertexshader; + bool shader_support; + + uint32_t *buffer; + unsigned iwidth, iheight; + + void resize(unsigned width, unsigned height) { + if(iwidth >= width && iheight >= height) return; + + if(gltexture) glDeleteTextures(1, &gltexture); + iwidth = max(width, iwidth ); + iheight = max(height, iheight); + if(buffer) delete[] buffer; + buffer = new uint32_t[iwidth * iheight]; + + glGenTextures(1, &gltexture); + glBindTexture(GL_TEXTURE_2D, gltexture); + glPixelStorei(GL_UNPACK_ROW_LENGTH, iwidth); + glTexImage2D(GL_TEXTURE_2D, + /* mip-map level = */ 0, /* internal format = */ GL_RGB, + iwidth, iheight, /* border = */ 0, /* format = */ GL_BGRA, + GL_UNSIGNED_INT_8_8_8_8_REV, buffer); + } + + bool lock(uint32_t *&data, unsigned &pitch) { + pitch = iwidth * sizeof(uint32_t); + return data = buffer; + } + + void clear() { + memset(buffer, 0, iwidth * iheight * sizeof(uint32_t)); + glClearColor(0.0, 0.0, 0.0, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + glFlush(); + } + + void refresh(bool smooth, unsigned inwidth, unsigned inheight, unsigned outwidth, unsigned outheight) { + if(shader_support) { + glUseProgram(glprogram); + GLint location; + + float inputSize[2] = { inwidth, inheight }; + location = glGetUniformLocation(glprogram, "rubyInputSize"); + glUniform2fv(location, 1, inputSize); + + float outputSize[2] = { outwidth, outheight }; + location = glGetUniformLocation(glprogram, "rubyOutputSize"); + glUniform2fv(location, 1, outputSize); + + float textureSize[2] = { iwidth, iheight }; + location = glGetUniformLocation(glprogram, "rubyTextureSize"); + glUniform2fv(location, 1, textureSize); + } + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, smooth ? GL_LINEAR : GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, smooth ? GL_LINEAR : GL_NEAREST); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, outwidth, 0, outheight, -1.0, 1.0); + glViewport(0, 0, outwidth, outheight); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glPixelStorei(GL_UNPACK_ROW_LENGTH, iwidth); + glTexSubImage2D(GL_TEXTURE_2D, + /* mip-map level = */ 0, /* x = */ 0, /* y = */ 0, + inwidth, inheight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buffer); + + //OpenGL projection sets 0,0 as *bottom-left* of screen. + //therefore, below vertices flip image to support top-left source. + //texture range = x1:0.0, y1:0.0, x2:1.0, y2:1.0 + //vertex range = x1:0, y1:0, x2:width, y2:height + double w = double(inwidth) / double(iwidth); + double h = double(inheight) / double(iheight); + int u = outwidth; + int v = outheight; + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(0, 0); glVertex3i(0, v, 0); + glTexCoord2f(w, 0); glVertex3i(u, v, 0); + glTexCoord2f(0, h); glVertex3i(0, 0, 0); + glTexCoord2f(w, h); glVertex3i(u, 0, 0); + glEnd(); + + glFlush(); + + if(shader_support) { + glUseProgram(0); + } + } + + void set_fragment_shader(const char *source) { + if(!shader_support) return; + + if(fragmentshader) { + glDetachShader(glprogram, fragmentshader); + glDeleteShader(fragmentshader); + fragmentshader = 0; + } + + if(source) { + fragmentshader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragmentshader, 1, &source, 0); + glCompileShader(fragmentshader); + glAttachShader(glprogram, fragmentshader); + } + + glLinkProgram(glprogram); + } + + void set_vertex_shader(const char *source) { + if(!shader_support) return; + + if(vertexshader) { + glDetachShader(glprogram, vertexshader); + glDeleteShader(vertexshader); + vertexshader = 0; + } + + if(source) { + vertexshader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertexshader, 1, &source, 0); + glCompileShader(vertexshader); + glAttachShader(glprogram, vertexshader); + } + + glLinkProgram(glprogram); + } + + void init() { + //disable unused features + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glDisable(GL_DEPTH_TEST); + glDisable(GL_POLYGON_SMOOTH); + glDisable(GL_STENCIL_TEST); + + //enable useful and required features + glEnable(GL_DITHER); + glEnable(GL_TEXTURE_2D); + + //bind shader functions + glCreateProgram = (PFNGLCREATEPROGRAMPROC)glGetProcAddress("glCreateProgram"); + glUseProgram = (PFNGLUSEPROGRAMPROC)glGetProcAddress("glUseProgram"); + glCreateShader = (PFNGLCREATESHADERPROC)glGetProcAddress("glCreateShader"); + glDeleteShader = (PFNGLDELETESHADERPROC)glGetProcAddress("glDeleteShader"); + glShaderSource = (PFNGLSHADERSOURCEPROC)glGetProcAddress("glShaderSource"); + glCompileShader = (PFNGLCOMPILESHADERPROC)glGetProcAddress("glCompileShader"); + glAttachShader = (PFNGLATTACHSHADERPROC)glGetProcAddress("glAttachShader"); + glDetachShader = (PFNGLDETACHSHADERPROC)glGetProcAddress("glDetachShader"); + glLinkProgram = (PFNGLLINKPROGRAMPROC)glGetProcAddress("glLinkProgram"); + glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)glGetProcAddress("glGetUniformLocation"); + glUniform1i = (PFNGLUNIFORM1IPROC)glGetProcAddress("glUniform1i"); + glUniform2fv = (PFNGLUNIFORM2FVPROC)glGetProcAddress("glUniform2fv"); + glUniform4fv = (PFNGLUNIFORM4FVPROC)glGetProcAddress("glUniform4fv"); + + shader_support = glCreateProgram && glUseProgram && glCreateShader + && glDeleteShader && glShaderSource && glCompileShader && glAttachShader + && glDetachShader && glLinkProgram && glGetUniformLocation + && glUniform1i && glUniform2fv && glUniform4fv; + + if(shader_support) glprogram = glCreateProgram(); + + //create surface texture + resize(256, 256); + } + + void term() { + if(gltexture) { + glDeleteTextures(1, &gltexture); + gltexture = 0; + } + + if(buffer) { + delete[] buffer; + buffer = 0; + iwidth = 0; + iheight = 0; + } + } + + OpenGL() { + gltexture = 0; + glprogram = 0; + fragmentshader = 0; + vertexshader = 0; + + buffer = 0; + iwidth = 0; + iheight = 0; + } +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/qtopengl.cpp b/libmednahawk/src/snes/src/lib/ruby/video/qtopengl.cpp new file mode 100644 index 0000000000..751685db0d --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/qtopengl.cpp @@ -0,0 +1,174 @@ +#ifdef __APPLE__ + #include +#endif + +namespace ruby { + +class pVideoQtOpenGL { +public: + QWidget *parent; + QVBoxLayout *layout; + + class RubyGLWidget : public QGLWidget { + public: + GLuint texture; + unsigned textureWidth, textureHeight; + + uint32_t *buffer; + unsigned rasterWidth, rasterHeight; + + bool synchronize; + unsigned filter; + + void resize(unsigned width, unsigned height) { + if(width > textureWidth || height > textureHeight) { + textureWidth = max(width, textureWidth); + textureHeight = max(height, textureHeight); + + if(buffer) { + delete[] buffer; + glDeleteTextures(1, &texture); + } + + buffer = new uint32_t[textureWidth * textureHeight]; + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glPixelStorei(GL_UNPACK_ROW_LENGTH, textureWidth); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, textureWidth, textureHeight, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buffer); + } + } + + void updateSynchronization() { + #ifdef __APPLE__ + makeCurrent(); + CGLContextObj context = CGLGetCurrentContext(); + GLint value = synchronize; //0 = draw immediately (no vsync), 1 = draw once per frame (vsync) + CGLSetParameter(context, kCGLCPSwapInterval, &value); + #endif + } + + void paintGL() { + unsigned outputWidth = width(); + unsigned outputHeight = height(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, outputWidth, 0, outputHeight, -1.0, 1.0); + glViewport(0, 0, outputWidth, outputHeight); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (filter == Video::FilterPoint) ? GL_NEAREST : GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (filter == Video::FilterPoint) ? GL_NEAREST : GL_LINEAR); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rasterWidth, rasterHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buffer); + + double w = (double)rasterWidth / (double)textureWidth; + double h = (double)rasterHeight / (double)textureHeight; + unsigned u = outputWidth; + unsigned v = outputHeight; + + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(0, 0); glVertex3i(0, v, 0); + glTexCoord2f(w, 0); glVertex3i(u, v, 0); + glTexCoord2f(0, h); glVertex3i(0, 0, 0); + glTexCoord2f(w, h); glVertex3i(u, 0, 0); + glEnd(); + } + + void initializeGL() { + format().setDoubleBuffer(true); + + texture = 0; + textureWidth = 0; + textureHeight = 0; + buffer = 0; + resize(rasterWidth = 256, rasterHeight = 256); + + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glDisable(GL_DEPTH_TEST); + glDisable(GL_POLYGON_SMOOTH); + glDisable(GL_STENCIL_TEST); + glEnable(GL_DITHER); + glEnable(GL_TEXTURE_2D); + glClearColor(0.0, 0.0, 0.0, 0.0); + } + } *widget; + + bool cap(const string& name) { + if(name == Video::Synchronize) return true; + if(name == Video::Filter) return true; + if(name == "QWidget") return true; + return false; + } + + any get(const string& name) { + if(name == Video::Synchronize) return widget->synchronize; + if(name == Video::Filter) return widget->filter; + if(name == "QWidget") return parent; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Synchronize) { + widget->synchronize = any_cast(value); + widget->updateSynchronization(); + return true; + } + + if(name == Video::Filter) { + widget->filter = any_cast(value); + return true; + } + + if(name == "QWidget") { + parent = any_cast(value); + return true; + } + + return false; + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + widget->resize(width, height); + widget->rasterWidth = width; + widget->rasterHeight = height; + + pitch = widget->textureWidth * sizeof(uint32_t); + return data = widget->buffer; + } + + void unlock() { + } + + void clear() { + memset(widget->buffer, 0, widget->textureWidth * widget->textureHeight * sizeof(uint32_t)); + widget->updateGL(); + } + + void refresh() { + widget->updateGL(); + } + + bool init() { + layout = new QVBoxLayout; + layout->setMargin(0); + + widget = new RubyGLWidget; + widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + layout->addWidget(widget); + parent->setLayout(layout); + + return true; + } + + void term() { + } +}; + +DeclareVideo(QtOpenGL) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/qtraster.cpp b/libmednahawk/src/snes/src/lib/ruby/video/qtraster.cpp new file mode 100644 index 0000000000..82f7bc5569 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/qtraster.cpp @@ -0,0 +1,126 @@ +namespace ruby { + +struct VideoQtRasterContext { + QImage *image; + unsigned width, height; + unsigned filter; +} context; + +class pVideoQtRaster { +public: + QWidget *parent; + QVBoxLayout *layout; + + struct QtImage : public QWidget { + VideoQtRasterContext &context; + + void paintEvent(QPaintEvent*) { + if(context.image == 0) return; + QPainter painter(this); + + if(size().width() == context.width && size().height() == context.height) { + painter.drawImage(0, 0, *context.image); + } else { + Qt::TransformationMode mode = Qt::FastTransformation; + if(context.filter == Video::FilterLinear) mode = Qt::SmoothTransformation; + painter.drawImage(0, 0, context.image->scaled(size(), Qt::IgnoreAspectRatio, mode)); + } + } + + QtImage(QWidget *parent, VideoQtRasterContext &context_) : QWidget(parent), context(context_) {} + } *widget; + + bool cap(const string& name) { + if(name == Video::Filter) return true; + if(name == "QWidget") return true; + return false; + } + + any get(const string& name) { + if(name == Video::Filter) return context.filter; + if(name == "QWidget") return parent; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Filter) { + context.filter = any_cast(value); + return true; + } + + if(name == "QWidget") { + parent = any_cast(value); + return true; + } + + return false; + } + + void resize(unsigned width, unsigned height) { + if(context.width != width || context.height != height) { + if(context.image) delete context.image; + context.image = new QImage(context.width = width, context.height = height, QImage::Format_RGB32); + } + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + //if image size has changed since last lock(), re-allocate buffer to match new size + if(width != context.width || height != context.height) resize(width, height); + + pitch = width * sizeof(uint32_t); + return data = (uint32_t*)context.image->bits(); + } + + void unlock() { + } + + void clear() { + context.image->fill(0); + widget->update(); + } + + void refresh() { + widget->update(); + } + + bool init() { + term(); + + layout = new QVBoxLayout; + layout->setMargin(0); + + context.image = 0; + context.width = 0; + context.height = 0; + context.filter = Video::FilterPoint; + resize(256, 256); + + widget = new QtImage(parent, context); + widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + layout->addWidget(widget); + parent->setLayout(layout); + clear(); + + return true; + } + + void term() { + if(context.image) delete context.image; + if(widget) delete widget; + if(layout) delete layout; + + context.image = 0; + widget = 0; + layout = 0; + } + + pVideoQtRaster() { + context.image = 0; + widget = 0; + layout = 0; + } +}; + +DeclareVideo(QtRaster) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/sdl.cpp b/libmednahawk/src/snes/src/lib/ruby/video/sdl.cpp new file mode 100644 index 0000000000..652777d2e8 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/sdl.cpp @@ -0,0 +1,140 @@ +#include +#include +#include +#include +#include +#include + +namespace ruby { + +class pVideoSDL { +public: + Display *display; + SDL_Surface *screen, *buffer; + unsigned iwidth, iheight; + + struct { + uintptr_t handle; + + unsigned width; + unsigned height; + } settings; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return settings.handle; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = any_cast(value); + return true; + } + + return false; + } + + void resize(unsigned width, unsigned height) { + if(iwidth >= width && iheight >= height) return; + + iwidth = max(width, iwidth); + iheight = max(height, iheight); + + if(buffer) SDL_FreeSurface(buffer); + buffer = SDL_CreateRGBSurface( + SDL_SWSURFACE, iwidth, iheight, 32, + 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 + ); + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + if(width != settings.width || height != settings.height) { + resize(settings.width = width, settings.height = height); + } + + if(SDL_MUSTLOCK(buffer)) SDL_LockSurface(buffer); + pitch = buffer->pitch; + return data = (uint32_t*)buffer->pixels; + } + + void unlock() { + if(SDL_MUSTLOCK(buffer)) SDL_UnlockSurface(buffer); + } + + void clear() { + if(SDL_MUSTLOCK(buffer)) SDL_LockSurface(buffer); + for(unsigned y = 0; y < iheight; y++) { + uint32_t *data = (uint32_t*)buffer->pixels + y * (buffer->pitch >> 2); + for(unsigned x = 0; x < iwidth; x++) *data++ = 0xff000000; + } + if(SDL_MUSTLOCK(buffer)) SDL_UnlockSurface(buffer); + refresh(); + } + + void refresh() { + //ruby input is X8R8G8B8, top 8-bits are ignored. + //as SDL forces us to use a 32-bit buffer, we must set alpha to 255 (full opacity) + //to prevent blending against the window beneath when X window visual is 32-bits. + if(SDL_MUSTLOCK(buffer)) SDL_LockSurface(buffer); + for(unsigned y = 0; y < settings.height; y++) { + uint32_t *data = (uint32_t*)buffer->pixels + y * (buffer->pitch >> 2); + for(unsigned x = 0; x < settings.width; x++) *data++ |= 0xff000000; + } + if(SDL_MUSTLOCK(buffer)) SDL_UnlockSurface(buffer); + + XWindowAttributes attributes; + XGetWindowAttributes(display, settings.handle, &attributes); + + SDL_Rect src, dest; + + src.x = 0; + src.y = 0; + src.w = settings.width; + src.h = settings.height; + + dest.x = 0; + dest.y = 0; + dest.w = attributes.width; + dest.h = attributes.height; + + SDL_SoftStretch(buffer, &src, screen, &dest); + SDL_UpdateRect(screen, dest.x, dest.y, dest.w, dest.h); + } + + bool init() { + display = XOpenDisplay(0); + + char env[512]; + sprintf(env, "SDL_WINDOWID=%ld", (long int)settings.handle); + putenv(env); + + SDL_InitSubSystem(SDL_INIT_VIDEO); + screen = SDL_SetVideoMode(2560, 1600, 32, SDL_HWSURFACE); + + buffer = 0; + iwidth = 0; + iheight = 0; + resize(settings.width = 256, settings.height = 256); + + return true; + } + + void term() { + XCloseDisplay(display); + SDL_FreeSurface(buffer); + SDL_QuitSubSystem(SDL_INIT_VIDEO); + } + + pVideoSDL() { + settings.handle = 0; + } +}; + +DeclareVideo(SDL) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/wgl.cpp b/libmednahawk/src/snes/src/lib/ruby/video/wgl.cpp new file mode 100644 index 0000000000..09991b1475 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/wgl.cpp @@ -0,0 +1,154 @@ +/* + video.wgl + authors: byuu, krom +*/ + +#include "opengl.hpp" + +namespace ruby { + +class pVideoWGL : public OpenGL { +public: + BOOL (APIENTRY *glSwapInterval)(int); + + HDC display; + HGLRC wglcontext; + HWND window; + HINSTANCE glwindow; + + struct { + HWND handle; + bool synchronize; + unsigned filter; + + unsigned width; + unsigned height; + } settings; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + if(name == Video::Synchronize) return true; + if(name == Video::Filter) return true; + if(name == Video::FragmentShader) return true; + if(name == Video::VertexShader) return true; + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return (uintptr_t)settings.handle; + if(name == Video::Synchronize) return settings.synchronize; + if(name == Video::Filter) return settings.filter; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = (HWND)any_cast(value); + return true; + } + + if(name == Video::Synchronize) { + if(settings.synchronize != any_cast(value)) { + settings.synchronize = any_cast(value); + if(wglcontext) init(); + } + } + + if(name == Video::Filter) { + settings.filter = any_cast(value); + return true; + } + + if(name == Video::FragmentShader) { + OpenGL::set_fragment_shader(any_cast(value)); + return true; + } + + if(name == Video::VertexShader) { + OpenGL::set_vertex_shader(any_cast(value)); + return true; + } + + return false; + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + resize(width, height); + settings.width = width; + settings.height = height; + return OpenGL::lock(data, pitch); + } + + void unlock() { + } + + void clear() { + OpenGL::clear(); + SwapBuffers(display); + } + + void refresh() { + RECT rc; + GetClientRect(settings.handle, &rc); + + OpenGL::refresh(settings.filter == Video::FilterLinear, + settings.width, settings.height, + rc.right - rc.left, rc.bottom - rc.top); + + SwapBuffers(display); + } + + bool init() { + term(); + + GLuint pixel_format; + PIXELFORMATDESCRIPTOR pfd; + memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); + pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); + pfd.nVersion = 1; + pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; + pfd.iPixelType = PFD_TYPE_RGBA; + + display = GetDC(settings.handle); + pixel_format = ChoosePixelFormat(display, &pfd); + SetPixelFormat(display, pixel_format, &pfd); + + wglcontext = wglCreateContext(display); + wglMakeCurrent(display, wglcontext); + + OpenGL::init(); + settings.width = 256; + settings.height = 256; + + //vertical synchronization + if(!glSwapInterval) glSwapInterval = (BOOL (APIENTRY*)(int))glGetProcAddress("wglSwapIntervalEXT"); + if( glSwapInterval) glSwapInterval(settings.synchronize); + + return true; + } + + void term() { + OpenGL::term(); + + if(wglcontext) { + wglDeleteContext(wglcontext); + wglcontext = 0; + } + } + + pVideoWGL() : glSwapInterval(0) { + settings.handle = 0; + settings.synchronize = false; + settings.filter = 0; + + window = 0; + wglcontext = 0; + glwindow = 0; + } + + ~pVideoWGL() { term(); } +}; + +DeclareVideo(WGL) + +}; diff --git a/libmednahawk/src/snes/src/lib/ruby/video/xv.cpp b/libmednahawk/src/snes/src/lib/ruby/video/xv.cpp new file mode 100644 index 0000000000..4032d52bf7 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/ruby/video/xv.cpp @@ -0,0 +1,498 @@ +#include +#include +#include +#include +#include + +extern "C" XvImage* XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*); + +namespace ruby { + +class pVideoXv { +public: + uint32_t *buffer; + uint8_t *ytable, *utable, *vtable; + + enum XvFormat { + XvFormatRGB32, + XvFormatRGB24, + XvFormatRGB16, + XvFormatRGB15, + XvFormatYUY2, + XvFormatUYVY, + XvFormatUnknown + }; + + struct { + Display *display; + GC gc; + Window window; + Colormap colormap; + XShmSegmentInfo shminfo; + + int port; + int depth; + int visualid; + + XvImage *image; + XvFormat format; + uint32_t fourcc; + + unsigned width; + unsigned height; + } device; + + struct { + Window handle; + bool synchronize; + + unsigned width; + unsigned height; + } settings; + + bool cap(const string& name) { + if(name == Video::Handle) return true; + if(name == Video::Synchronize) { + return XInternAtom(XOpenDisplay(0), "XV_SYNC_TO_VBLANK", true) != None; + } + return false; + } + + any get(const string& name) { + if(name == Video::Handle) return settings.handle; + if(name == Video::Synchronize) return settings.synchronize; + return false; + } + + bool set(const string& name, const any& value) { + if(name == Video::Handle) { + settings.handle = any_cast(value); + return true; + } + + if(name == Video::Synchronize) { + Display *display = XOpenDisplay(0); + Atom atom = XInternAtom(display, "XV_SYNC_TO_VBLANK", true); + if(atom != None && device.port >= 0) { + settings.synchronize = any_cast(value); + XvSetPortAttribute(display, device.port, atom, settings.synchronize); + return true; + } + return false; + } + + return false; + } + + void resize(unsigned width, unsigned height) { + if(device.width >= width && device.height >= height) return; + device.width = max(width, device.width); + device.height = max(height, device.height); + + XShmDetach(device.display, &device.shminfo); + shmdt(device.shminfo.shmaddr); + shmctl(device.shminfo.shmid, IPC_RMID, NULL); + XFree(device.image); + delete[] buffer; + + device.image = XvShmCreateImage(device.display, device.port, device.fourcc, 0, device.width, device.height, &device.shminfo); + + device.shminfo.shmid = shmget(IPC_PRIVATE, device.image->data_size, IPC_CREAT | 0777); + device.shminfo.shmaddr = device.image->data = (char*)shmat(device.shminfo.shmid, 0, 0); + device.shminfo.readOnly = false; + XShmAttach(device.display, &device.shminfo); + + buffer = new uint32_t[device.width * device.height]; + } + + bool lock(uint32_t *&data, unsigned &pitch, unsigned width, unsigned height) { + if(width != settings.width || height != settings.height) { + resize(settings.width = width, settings.height = height); + } + + pitch = device.width * 4; + return data = buffer; + } + + void unlock() { + } + + void clear() { + memset(buffer, 0, device.width * device.height * sizeof(uint32_t)); + //clear twice in case video is double buffered ... + refresh(); + refresh(); + } + + void refresh() { + unsigned width = settings.width; + unsigned height = settings.height; + + XWindowAttributes target; + XGetWindowAttributes(device.display, device.window, &target); + + //we must ensure that the child window is the same size as the parent window. + //unfortunately, we cannot hook the parent window resize event notification, + //as we did not create the parent window, nor have any knowledge of the toolkit used. + //therefore, query each window size and resize as needed. + XWindowAttributes parent; + XGetWindowAttributes(device.display, settings.handle, &parent); + if(target.width != parent.width || target.height != parent.height) { + XResizeWindow(device.display, device.window, parent.width, parent.height); + } + + //update target width and height attributes + XGetWindowAttributes(device.display, device.window, &target); + + switch(device.format) { + case XvFormatRGB32: render_rgb32(width, height); break; + case XvFormatRGB24: render_rgb24(width, height); break; + case XvFormatRGB16: render_rgb16(width, height); break; + case XvFormatRGB15: render_rgb15(width, height); break; + case XvFormatYUY2: render_yuy2 (width, height); break; + case XvFormatUYVY: render_uyvy (width, height); break; + } + + XvShmPutImage(device.display, device.port, device.window, device.gc, device.image, + 0, 0, width, height, + 0, 0, target.width, target.height, + true); + } + + bool init() { + device.display = XOpenDisplay(0); + + if(!XShmQueryExtension(device.display)) { + fprintf(stderr, "VideoXv: XShm extension not found.\n"); + return false; + } + + //find an appropriate Xv port + device.port = -1; + XvAdaptorInfo *adaptor_info; + unsigned adaptor_count; + XvQueryAdaptors(device.display, DefaultRootWindow(device.display), &adaptor_count, &adaptor_info); + for(unsigned i = 0; i < adaptor_count; i++) { + //find adaptor that supports both input (memory->drawable) and image (drawable->screen) masks + if(adaptor_info[i].num_formats < 1) continue; + if(!(adaptor_info[i].type & XvInputMask)) continue; + if(!(adaptor_info[i].type & XvImageMask)) continue; + + device.port = adaptor_info[i].base_id; + device.depth = adaptor_info[i].formats->depth; + device.visualid = adaptor_info[i].formats->visual_id; + break; + } + XvFreeAdaptorInfo(adaptor_info); + if(device.port < 0) { + fprintf(stderr, "VideoXv: failed to find valid XvPort.\n"); + return false; + } + + //create child window to attach to parent window. + //this is so that even if parent window visual depth doesn't match Xv visual + //(common with composited windows), Xv can still render to child window. + XWindowAttributes window_attributes; + XGetWindowAttributes(device.display, settings.handle, &window_attributes); + + XVisualInfo visualtemplate; + visualtemplate.visualid = device.visualid; + visualtemplate.screen = DefaultScreen(device.display); + visualtemplate.depth = device.depth; + visualtemplate.visual = 0; + int visualmatches = 0; + XVisualInfo *visualinfo = XGetVisualInfo(device.display, VisualIDMask | VisualScreenMask | VisualDepthMask, &visualtemplate, &visualmatches); + if(visualmatches < 1 || !visualinfo->visual) { + if(visualinfo) XFree(visualinfo); + fprintf(stderr, "VideoXv: unable to find Xv-compatible visual.\n"); + return false; + } + + device.colormap = XCreateColormap(device.display, settings.handle, visualinfo->visual, AllocNone); + XSetWindowAttributes attributes; + attributes.colormap = device.colormap; + attributes.border_pixel = 0; + attributes.event_mask = StructureNotifyMask; + device.window = XCreateWindow(device.display, /* parent = */ settings.handle, + /* x = */ 0, /* y = */ 0, window_attributes.width, window_attributes.height, + /* border_width = */ 0, device.depth, InputOutput, visualinfo->visual, + CWColormap | CWBorderPixel | CWEventMask, &attributes); + XFree(visualinfo); + XSetWindowBackground(device.display, device.window, /* color = */ 0); + XMapWindow(device.display, device.window); + + device.gc = XCreateGC(device.display, device.window, 0, 0); + + //set colorkey to auto paint, so that Xv video output is always visible + Atom atom = XInternAtom(device.display, "XV_AUTOPAINT_COLORKEY", true); + if(atom != None) XvSetPortAttribute(device.display, device.port, atom, 1); + + //find optimal rendering format + device.format = XvFormatUnknown; + signed format_count; + XvImageFormatValues *format = XvListImageFormats(device.display, device.port, &format_count); + + if(device.format == XvFormatUnknown) for(signed i = 0; i < format_count; i++) { + if(format[i].type == XvRGB && format[i].bits_per_pixel == 32) { + device.format = XvFormatRGB32; + device.fourcc = format[i].id; + break; + } + } + + if(device.format == XvFormatUnknown) for(signed i = 0; i < format_count; i++) { + if(format[i].type == XvRGB && format[i].bits_per_pixel == 24) { + device.format = XvFormatRGB24; + device.fourcc = format[i].id; + break; + } + } + + if(device.format == XvFormatUnknown) for(signed i = 0; i < format_count; i++) { + if(format[i].type == XvRGB && format[i].bits_per_pixel <= 16 && format[i].red_mask == 0xf800) { + device.format = XvFormatRGB16; + device.fourcc = format[i].id; + break; + } + } + + if(device.format == XvFormatUnknown) for(signed i = 0; i < format_count; i++) { + if(format[i].type == XvRGB && format[i].bits_per_pixel <= 16 && format[i].red_mask == 0x7c00) { + device.format = XvFormatRGB15; + device.fourcc = format[i].id; + break; + } + } + + if(device.format == XvFormatUnknown) for(signed i = 0; i < format_count; i++) { + if(format[i].type == XvYUV && format[i].bits_per_pixel == 16 && format[i].format == XvPacked) { + if(format[i].component_order[0] == 'Y' && format[i].component_order[1] == 'U' + && format[i].component_order[2] == 'Y' && format[i].component_order[3] == 'V' + ) { + device.format = XvFormatYUY2; + device.fourcc = format[i].id; + break; + } + } + } + + if(device.format == XvFormatUnknown) for(signed i = 0; i < format_count; i++) { + if(format[i].type == XvYUV && format[i].bits_per_pixel == 16 && format[i].format == XvPacked) { + if(format[i].component_order[0] == 'U' && format[i].component_order[1] == 'Y' + && format[i].component_order[2] == 'V' && format[i].component_order[3] == 'Y' + ) { + device.format = XvFormatUYVY; + device.fourcc = format[i].id; + break; + } + } + } + + free(format); + if(device.format == XvFormatUnknown) { + fprintf(stderr, "VideoXv: unable to find a supported image format.\n"); + return false; + } + + device.width = 256; + device.height = 256; + + device.image = XvShmCreateImage(device.display, device.port, device.fourcc, 0, device.width, device.height, &device.shminfo); + if(!device.image) { + fprintf(stderr, "VideoXv: XShmCreateImage failed.\n"); + return false; + } + + device.shminfo.shmid = shmget(IPC_PRIVATE, device.image->data_size, IPC_CREAT | 0777); + device.shminfo.shmaddr = device.image->data = (char*)shmat(device.shminfo.shmid, 0, 0); + device.shminfo.readOnly = false; + if(!XShmAttach(device.display, &device.shminfo)) { + fprintf(stderr, "VideoXv: XShmAttach failed.\n"); + return false; + } + + buffer = new uint32_t[device.width * device.height]; + settings.width = 256; + settings.height = 256; + init_yuv_tables(); + clear(); + return true; + } + + void term() { + XShmDetach(device.display, &device.shminfo); + shmdt(device.shminfo.shmaddr); + shmctl(device.shminfo.shmid, IPC_RMID, NULL); + XFree(device.image); + + if(device.window) { + XUnmapWindow(device.display, device.window); + device.window = 0; + } + + if(device.colormap) { + XFreeColormap(device.display, device.colormap); + device.colormap = 0; + } + + if(buffer) { delete[] buffer; buffer = 0; } + if(ytable) { delete[] ytable; ytable = 0; } + if(utable) { delete[] utable; utable = 0; } + if(vtable) { delete[] vtable; vtable = 0; } + } + + void render_rgb32(unsigned width, unsigned height) { + uint32_t *input = (uint32_t*)buffer; + uint32_t *output = (uint32_t*)device.image->data; + + for(unsigned y = 0; y < height; y++) { + memcpy(output, input, width * 4); + input += device.width; + output += device.width; + } + } + + void render_rgb24(unsigned width, unsigned height) { + uint32_t *input = (uint32_t*)buffer; + uint8_t *output = (uint8_t*)device.image->data; + + for(unsigned y = 0; y < height; y++) { + for(unsigned x = 0; x < width; x++) { + uint32_t p = *input++; + *output++ = p; + *output++ = p >> 8; + *output++ = p >> 16; + } + + input += (device.width - width); + output += (device.width - width) * 3; + } + } + + void render_rgb16(unsigned width, unsigned height) { + uint32_t *input = (uint32_t*)buffer; + uint16_t *output = (uint16_t*)device.image->data; + + for(unsigned y = 0; y < height; y++) { + for(unsigned x = 0; x < width; x++) { + uint32_t p = *input++; + *output++ = ((p >> 8) & 0xf800) | ((p >> 5) & 0x07e0) | ((p >> 3) & 0x001f); //RGB32->RGB16 + } + + input += device.width - width; + output += device.width - width; + } + } + + void render_rgb15(unsigned width, unsigned height) { + uint32_t *input = (uint32_t*)buffer; + uint16_t *output = (uint16_t*)device.image->data; + + for(unsigned y = 0; y < height; y++) { + for(unsigned x = 0; x < width; x++) { + uint32_t p = *input++; + *output++ = ((p >> 9) & 0x7c00) | ((p >> 6) & 0x03e0) | ((p >> 3) & 0x001f); //RGB32->RGB15 + } + + input += device.width - width; + output += device.width - width; + } + } + + void render_yuy2(unsigned width, unsigned height) { + uint32_t *input = (uint32_t*)buffer; + uint16_t *output = (uint16_t*)device.image->data; + + for(unsigned y = 0; y < height; y++) { + for(unsigned x = 0; x < width >> 1; x++) { + uint32_t p0 = *input++; + uint32_t p1 = *input++; + p0 = ((p0 >> 8) & 0xf800) + ((p0 >> 5) & 0x07e0) + ((p0 >> 3) & 0x001f); //RGB32->RGB16 + p1 = ((p1 >> 8) & 0xf800) + ((p1 >> 5) & 0x07e0) + ((p1 >> 3) & 0x001f); //RGB32->RGB16 + + uint8_t u = (utable[p0] + utable[p1]) >> 1; + uint8_t v = (vtable[p0] + vtable[p1]) >> 1; + + *output++ = (u << 8) | ytable[p0]; + *output++ = (v << 8) | ytable[p1]; + } + + input += device.width - width; + output += device.width - width; + } + } + + void render_uyvy(unsigned width, unsigned height) { + uint32_t *input = (uint32_t*)buffer; + uint16_t *output = (uint16_t*)device.image->data; + + for(unsigned y = 0; y < height; y++) { + for(unsigned x = 0; x < width >> 1; x++) { + uint32_t p0 = *input++; + uint32_t p1 = *input++; + p0 = ((p0 >> 8) & 0xf800) + ((p0 >> 5) & 0x07e0) + ((p0 >> 3) & 0x001f); + p1 = ((p1 >> 8) & 0xf800) + ((p1 >> 5) & 0x07e0) + ((p1 >> 3) & 0x001f); + + uint8_t u = (utable[p0] + utable[p1]) >> 1; + uint8_t v = (vtable[p0] + vtable[p1]) >> 1; + + *output++ = (ytable[p0] << 8) | u; + *output++ = (ytable[p1] << 8) | v; + } + + input += device.width - width; + output += device.width - width; + } + } + + void init_yuv_tables() { + ytable = new uint8_t[65536]; + utable = new uint8_t[65536]; + vtable = new uint8_t[65536]; + + for(unsigned i = 0; i < 65536; i++) { + //extract RGB565 color data from i + uint8_t r = (i >> 11) & 31, g = (i >> 5) & 63, b = (i) & 31; + r = (r << 3) | (r >> 2); //R5->R8 + g = (g << 2) | (g >> 4); //G6->G8 + b = (b << 3) | (b >> 2); //B5->B8 + + //ITU-R Recommendation BT.601 + //double lr = 0.299, lg = 0.587, lb = 0.114; + int y = int( +(double(r) * 0.257) + (double(g) * 0.504) + (double(b) * 0.098) + 16.0 ); + int u = int( -(double(r) * 0.148) - (double(g) * 0.291) + (double(b) * 0.439) + 128.0 ); + int v = int( +(double(r) * 0.439) - (double(g) * 0.368) - (double(b) * 0.071) + 128.0 ); + + //ITU-R Recommendation BT.709 + //double lr = 0.2126, lg = 0.7152, lb = 0.0722; + //int y = int( double(r) * lr + double(g) * lg + double(b) * lb ); + //int u = int( (double(b) - y) / (2.0 - 2.0 * lb) + 128.0 ); + //int v = int( (double(r) - y) / (2.0 - 2.0 * lr) + 128.0 ); + + ytable[i] = y < 0 ? 0 : y > 255 ? 255 : y; + utable[i] = u < 0 ? 0 : u > 255 ? 255 : u; + vtable[i] = v < 0 ? 0 : v > 255 ? 255 : v; + } + } + + pVideoXv() { + device.window = 0; + device.colormap = 0; + device.port = -1; + + ytable = 0; + utable = 0; + vtable = 0; + + settings.handle = 0; + settings.synchronize = false; + } + + ~pVideoXv() { + term(); + } +}; + +DeclareVideo(Xv) + +}; diff --git a/libmednahawk/src/snes/src/lib/sync.bat b/libmednahawk/src/snes/src/lib/sync.bat new file mode 100644 index 0000000000..98b7d1cd18 --- /dev/null +++ b/libmednahawk/src/snes/src/lib/sync.bat @@ -0,0 +1,7 @@ +rmdir /Q /S nall +rmdir /Q /S ruby + +mkdir nall +mkdir ruby +xcopy /E ..\..\..\nall nall +xcopy /E ..\..\..\ruby ruby diff --git a/libmednahawk/src/snes/src/lib/sync.sh b/libmednahawk/src/snes/src/lib/sync.sh new file mode 100644 index 0000000000..066b009bba --- /dev/null +++ b/libmednahawk/src/snes/src/lib/sync.sh @@ -0,0 +1,10 @@ +rm -r libco +rm -r nall +rm -r ruby + +cp -r ../../../libco ./libco +cp -r ../../../nall ./nall +cp -r ../../../ruby ./ruby + +rm -r libco/doc +rm -r libco/test diff --git a/libmednahawk/src/snes/src/memory/memory-inline.hpp b/libmednahawk/src/snes/src/memory/memory-inline.hpp new file mode 100644 index 0000000000..40fb0d1f1c --- /dev/null +++ b/libmednahawk/src/snes/src/memory/memory-inline.hpp @@ -0,0 +1,75 @@ +//Memory + +unsigned Memory::size() const { return 0; } + +//StaticRAM + +uint8* StaticRAM::data() { return data_; } +unsigned StaticRAM::size() const { return size_; } + +uint8 StaticRAM::read(unsigned addr) { return data_[addr]; } +void StaticRAM::write(unsigned addr, uint8 n) { data_[addr] = n; } +uint8& StaticRAM::operator[](unsigned addr) { return data_[addr]; } +const uint8& StaticRAM::operator[](unsigned addr) const { return data_[addr]; } + +StaticRAM::StaticRAM(unsigned n) : size_(n) { data_ = new uint8[size_]; } +StaticRAM::~StaticRAM() { delete[] data_; } + +//MappedRAM + +void MappedRAM::reset() { + if(data_) { + delete[] data_; + data_ = 0; + } + size_ = -1U; + write_protect_ = false; +} + +void MappedRAM::map(uint8 *source, unsigned length) { + reset(); + data_ = source; + size_ = data_ && length > 0 ? length : -1U; +} + +void MappedRAM::copy(uint8 *data, unsigned size) { + if(!data_) { + size_ = (size & ~255) + ((bool)(size & 255) << 8); + data_ = new uint8[size_](); + } + memcpy(data_, data, min(size_, size)); +} + +void MappedRAM::write_protect(bool status) { write_protect_ = status; } +uint8* MappedRAM::data() { return data_; } +unsigned MappedRAM::size() const { return size_; } + +uint8 MappedRAM::read(unsigned addr) { return data_[addr]; } +void MappedRAM::write(unsigned addr, uint8 n) { if(!write_protect_) data_[addr] = n; } +const uint8 MappedRAM::operator[](unsigned addr) const { return data_[addr]; } +MappedRAM::MappedRAM() : data_(0), size_(-1U), write_protect_(false) {} + +//Bus + +uint8 Bus::read(unsigned addr) { + #if defined(CHEAT_SYSTEM) + if(cheat.active() && cheat.exists(addr)) { + uint8 r; + if(cheat.read(addr, r)) return r; + } + #endif + + Page &p = page[addr >> 8]; + return p.access->read(p.offset + addr); +} + +void Bus::write(unsigned addr, uint8 data) { + Page &p = page[addr >> 8]; + return p.access->write(p.offset + addr, data); +} + +bool Bus::load_cart() { return false; } +void Bus::unload_cart() {} + +void Bus::power() {} +void Bus::reset() {} diff --git a/libmednahawk/src/snes/src/memory/memory.cpp b/libmednahawk/src/snes/src/memory/memory.cpp new file mode 100644 index 0000000000..c3796169e4 --- /dev/null +++ b/libmednahawk/src/snes/src/memory/memory.cpp @@ -0,0 +1,112 @@ +#include <../base.hpp> + +#define MEMORY_CPP +namespace SNES { + +namespace memory { + MMIOAccess mmio; + StaticRAM wram(128 * 1024); + StaticRAM apuram(64 * 1024); + StaticRAM vram(64 * 1024); + StaticRAM oam(544); + StaticRAM cgram(512); + + UnmappedMemory memory_unmapped; + UnmappedMMIO mmio_unmapped; +}; + +unsigned UnmappedMemory::size() const { return 16 * 1024 * 1024; } +uint8 UnmappedMemory::read(unsigned) { return cpu.regs.mdr; } +void UnmappedMemory::write(unsigned, uint8) {} + +uint8 UnmappedMMIO::mmio_read(unsigned) { return cpu.regs.mdr; } +void UnmappedMMIO::mmio_write(unsigned, uint8) {} + +void MMIOAccess::map(unsigned addr, MMIO &access) { + //MMIO: $[00-3f]:[2000-5fff] + mmio[(addr - 0x2000) & 0x3fff] = &access; +} + +uint8 MMIOAccess::read(unsigned addr) { + return mmio[(addr - 0x2000) & 0x3fff]->mmio_read(addr); +} + +void MMIOAccess::write(unsigned addr, uint8 data) { + mmio[(addr - 0x2000) & 0x3fff]->mmio_write(addr, data); +} + +unsigned Bus::mirror(unsigned addr, unsigned size) { + unsigned base = 0; + if(size) { + unsigned mask = 1 << 23; + while(addr >= size) { + while(!(addr & mask)) mask >>= 1; + addr -= mask; + if(size > mask) { + size -= mask; + base += mask; + } + mask >>= 1; + } + base += addr; + } + return base; +} + +void Bus::map(unsigned addr, Memory &access, unsigned offset) { + page[addr >> 8].access = &access; + page[addr >> 8].offset = offset - addr; +} + +void Bus::map( + MapMode mode, + uint8 bank_lo, uint8 bank_hi, + uint16 addr_lo, uint16 addr_hi, + Memory &access, unsigned offset, unsigned size +) { + assert(bank_lo <= bank_hi); + assert(addr_lo <= addr_hi); + if(access.size() == -1U) return; + + uint8 page_lo = addr_lo >> 8; + uint8 page_hi = addr_hi >> 8; + unsigned index = 0; + + switch(mode) { + case MapDirect: { + for(unsigned bank = bank_lo; bank <= bank_hi; bank++) { + for(unsigned page = page_lo; page <= page_hi; page++) { + map((bank << 16) + (page << 8), access, (bank << 16) + (page << 8)); + } + } + } break; + + case MapLinear: { + for(unsigned bank = bank_lo; bank <= bank_hi; bank++) { + for(unsigned page = page_lo; page <= page_hi; page++) { + map((bank << 16) + (page << 8), access, mirror(offset + index, access.size())); + index += 256; + if(size) index %= size; + } + } + } break; + + case MapShadow: { + for(unsigned bank = bank_lo; bank <= bank_hi; bank++) { + index += page_lo * 256; + if(size) index %= size; + + for(unsigned page = page_lo; page <= page_hi; page++) { + map((bank << 16) + (page << 8), access, mirror(offset + index, access.size())); + index += 256; + if(size) index %= size; + } + + index += (255 - page_hi) * 256; + if(size) index %= size; + } + } break; + } +} + +}; diff --git a/libmednahawk/src/snes/src/memory/memory.hpp b/libmednahawk/src/snes/src/memory/memory.hpp new file mode 100644 index 0000000000..f571772769 --- /dev/null +++ b/libmednahawk/src/snes/src/memory/memory.hpp @@ -0,0 +1,104 @@ +struct Memory { + virtual inline unsigned size() const; + virtual uint8 read(unsigned addr) = 0; + virtual void write(unsigned addr, uint8 data) = 0; +}; + +struct MMIO { + virtual uint8 mmio_read(unsigned addr) = 0; + virtual void mmio_write(unsigned addr, uint8 data) = 0; +}; + +struct UnmappedMemory : Memory { + unsigned size() const; + uint8 read(unsigned); + void write(unsigned, uint8); +}; + +struct UnmappedMMIO : MMIO { + uint8 mmio_read(unsigned); + void mmio_write(unsigned, uint8); +}; + +struct StaticRAM : Memory { + inline uint8* data(); + inline unsigned size() const; + + inline uint8 read(unsigned addr); + inline void write(unsigned addr, uint8 n); + inline uint8& operator[](unsigned addr); + inline const uint8& operator[](unsigned addr) const; + + inline StaticRAM(unsigned size); + inline ~StaticRAM(); + +private: + uint8 *data_; + unsigned size_; +}; + +struct MappedRAM : Memory { + inline void reset(); + inline void map(uint8*, unsigned); + inline void copy(uint8*, unsigned); + + inline void write_protect(bool status); + inline uint8* data(); + inline unsigned size() const; + + inline uint8 read(unsigned addr); + inline void write(unsigned addr, uint8 n); + inline const uint8 operator[](unsigned addr) const; + inline MappedRAM(); + +private: + uint8 *data_; + unsigned size_; + bool write_protect_; +}; + +struct MMIOAccess : Memory { + void map(unsigned addr, MMIO &access); + uint8 read(unsigned addr); + void write(unsigned addr, uint8 data); + + MMIO *mmio[0x4000]; +}; + +struct Bus { + unsigned mirror(unsigned addr, unsigned size); + void map(unsigned addr, Memory &access, unsigned offset); + enum MapMode { MapDirect, MapLinear, MapShadow }; + void map(MapMode mode, + uint8 bank_lo, uint8 bank_hi, + uint16 addr_lo, uint16 addr_hi, + Memory &access, unsigned offset = 0, unsigned size = 0); + + alwaysinline uint8 read(unsigned addr); + alwaysinline void write(unsigned addr, uint8 data); + + virtual inline bool load_cart(); + virtual inline void unload_cart(); + + virtual inline void power(); + virtual inline void reset(); + + struct Page { + Memory *access; + unsigned offset; + } page[65536]; + + virtual void serialize(serializer&) {} +}; + +namespace memory { + extern MMIOAccess mmio; //S-CPU, S-PPU + extern StaticRAM wram; //S-CPU + extern StaticRAM apuram; //S-SMP, S-DSP + extern StaticRAM vram; //S-PPU + extern StaticRAM oam; //S-PPU + extern StaticRAM cgram; //S-PPU + + extern UnmappedMemory memory_unmapped; + extern UnmappedMMIO mmio_unmapped; +}; diff --git a/libmednahawk/src/snes/src/memory/smemory/generic.cpp b/libmednahawk/src/snes/src/memory/smemory/generic.cpp new file mode 100644 index 0000000000..a67d066a3d --- /dev/null +++ b/libmednahawk/src/snes/src/memory/smemory/generic.cpp @@ -0,0 +1,112 @@ +#ifdef SMEMORY_CPP + +void sBus::map_generic() { + switch(cartridge.mapper()) { + case Cartridge::LoROM: { + map(MapLinear, 0x00, 0x7f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x80, 0xff, 0x8000, 0xffff, memory::cartrom); + map_generic_sram(); + } break; + + case Cartridge::HiROM: { + map(MapShadow, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x40, 0x7f, 0x0000, 0xffff, memory::cartrom); + map(MapShadow, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0xc0, 0xff, 0x0000, 0xffff, memory::cartrom); + map_generic_sram(); + } break; + + case Cartridge::ExLoROM: { + map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x40, 0x7f, 0x0000, 0xffff, memory::cartrom); + map(MapLinear, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0xc0, 0xff, 0x0000, 0xffff, memory::cartrom); + map_generic_sram(); + } break; + + case Cartridge::ExHiROM: { + map(MapShadow, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom, 0x400000); + map(MapLinear, 0x40, 0x7f, 0x0000, 0xffff, memory::cartrom, 0x400000); + map(MapShadow, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom, 0x000000); + map(MapLinear, 0xc0, 0xff, 0x0000, 0xffff, memory::cartrom, 0x000000); + map_generic_sram(); + } break; + + case Cartridge::SuperFXROM: { + //mapped via SuperFXBus::init(); + } break; + + case Cartridge::SA1ROM: { + //mapped via SA1Bus::init(); + } break; + + case Cartridge::SPC7110ROM: { + map(MapDirect, 0x00, 0x00, 0x6000, 0x7fff, spc7110); //save RAM w/custom logic + map(MapShadow, 0x00, 0x0f, 0x8000, 0xffff, memory::cartrom); //program ROM + map(MapDirect, 0x30, 0x30, 0x6000, 0x7fff, spc7110); //save RAM w/custom logic + map(MapDirect, 0x50, 0x50, 0x0000, 0xffff, spc7110); //decompression MMIO port + map(MapShadow, 0x80, 0x8f, 0x8000, 0xffff, memory::cartrom); //program ROM + map(MapLinear, 0xc0, 0xcf, 0x0000, 0xffff, memory::cartrom); //program ROM + map(MapDirect, 0xd0, 0xff, 0x0000, 0xffff, spc7110); //MMC-controlled data ROM + } break; + + case Cartridge::BSXROM: { + //full map is dynamically mapped by: + //src/chip/bsx/bsx_cart.cpp : BSXCart::update_memory_map(); + map(MapLinear, 0x00, 0x3f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x80, 0xbf, 0x8000, 0xffff, memory::cartrom); + } break; + + case Cartridge::BSCLoROM: { + map(MapLinear, 0x00, 0x1f, 0x8000, 0xffff, memory::cartrom, 0x000000); + map(MapLinear, 0x20, 0x3f, 0x8000, 0xffff, memory::cartrom, 0x100000); + map(MapLinear, 0x70, 0x7f, 0x0000, 0x7fff, memory::cartram, 0x000000); + map(MapLinear, 0x80, 0x9f, 0x8000, 0xffff, memory::cartrom, 0x200000); + map(MapLinear, 0xa0, 0xbf, 0x8000, 0xffff, memory::cartrom, 0x100000); + map(MapLinear, 0xc0, 0xef, 0x0000, 0xffff, bsxflash); + map(MapLinear, 0xf0, 0xff, 0x0000, 0x7fff, memory::cartram, 0x000000); + } break; + + case Cartridge::BSCHiROM: { + map(MapShadow, 0x00, 0x1f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x20, 0x3f, 0x6000, 0x7fff, memory::cartram); + map(MapShadow, 0x20, 0x3f, 0x8000, 0xffff, bsxflash); + map(MapLinear, 0x40, 0x5f, 0x0000, 0xffff, memory::cartrom); + map(MapLinear, 0x60, 0x7f, 0x0000, 0xffff, bsxflash); + map(MapShadow, 0x80, 0x9f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0xa0, 0xbf, 0x6000, 0x7fff, memory::cartram); + map(MapShadow, 0xa0, 0xbf, 0x8000, 0xffff, bsxflash); + map(MapLinear, 0xc0, 0xdf, 0x0000, 0xffff, memory::cartrom); + map(MapLinear, 0xe0, 0xff, 0x0000, 0xffff, bsxflash); + } break; + + case Cartridge::STROM: { + map(MapLinear, 0x00, 0x1f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0x20, 0x3f, 0x8000, 0xffff, memory::stArom); + map(MapLinear, 0x40, 0x5f, 0x8000, 0xffff, memory::stBrom); + map(MapLinear, 0x60, 0x63, 0x8000, 0xffff, memory::stAram); + map(MapLinear, 0x70, 0x73, 0x8000, 0xffff, memory::stBram); + map(MapLinear, 0x80, 0x9f, 0x8000, 0xffff, memory::cartrom); + map(MapLinear, 0xa0, 0xbf, 0x8000, 0xffff, memory::stArom); + map(MapLinear, 0xc0, 0xdf, 0x8000, 0xffff, memory::stBrom); + map(MapLinear, 0xe0, 0xe3, 0x8000, 0xffff, memory::stAram); + map(MapLinear, 0xf0, 0xf3, 0x8000, 0xffff, memory::stBram); + } break; + } +} + +void sBus::map_generic_sram() { + if(memory::cartram.size() == 0 || memory::cartram.size() == -1U) { return; } + + map(MapLinear, 0x20, 0x3f, 0x6000, 0x7fff, memory::cartram); + map(MapLinear, 0xa0, 0xbf, 0x6000, 0x7fff, memory::cartram); + + //research shows only games with very large ROM/RAM sizes require MAD-1 memory mapping of RAM + //otherwise, default to safer, larger RAM address window + uint16 addr_hi = (memory::cartrom.size() > 0x200000 || memory::cartram.size() > 32 * 1024) ? 0x7fff : 0xffff; + map(MapLinear, 0x70, 0x7f, 0x0000, addr_hi, memory::cartram); + if(cartridge.mapper() != Cartridge::LoROM) return; + map(MapLinear, 0xf0, 0xff, 0x0000, addr_hi, memory::cartram); +} + +#endif diff --git a/libmednahawk/src/snes/src/memory/smemory/serialization.cpp b/libmednahawk/src/snes/src/memory/smemory/serialization.cpp new file mode 100644 index 0000000000..5ca22415b9 --- /dev/null +++ b/libmednahawk/src/snes/src/memory/smemory/serialization.cpp @@ -0,0 +1,11 @@ +#ifdef SMEMORY_CPP + +void sBus::serialize(serializer &s) { + s.array(memory::wram.data(), memory::wram.size()); + s.array(memory::apuram.data(), memory::apuram.size()); + s.array(memory::vram.data(), memory::vram.size()); + s.array(memory::oam.data(), memory::oam.size()); + s.array(memory::cgram.data(), memory::cgram.size()); +} + +#endif diff --git a/libmednahawk/src/snes/src/memory/smemory/smemory.cpp b/libmednahawk/src/snes/src/memory/smemory/smemory.cpp new file mode 100644 index 0000000000..600fb028bc --- /dev/null +++ b/libmednahawk/src/snes/src/memory/smemory/smemory.cpp @@ -0,0 +1,38 @@ +#include <../base.hpp> + +#define SMEMORY_CPP +namespace SNES { + +sBus bus; + +#include "system.cpp" +#include "generic.cpp" +#include "serialization.cpp" + +void sBus::power() { + for(unsigned i = 0x2000; i <= 0x5fff; i++) memory::mmio.map(i, memory::mmio_unmapped); + for(unsigned i = 0; i < memory::wram.size(); i++) memory::wram[i] = config.cpu.wram_init_value; +} + +void sBus::reset() { +} + +bool sBus::load_cart() { + if(cartridge.loaded() == true) return false; + + map_reset(); + map_generic(); + map_system(); + return true; +} + +void sBus::unload_cart() { +} + +sBus::sBus() { +} + +sBus::~sBus() { +} + +}; diff --git a/libmednahawk/src/snes/src/memory/smemory/smemory.hpp b/libmednahawk/src/snes/src/memory/smemory/smemory.hpp new file mode 100644 index 0000000000..36ab33e296 --- /dev/null +++ b/libmednahawk/src/snes/src/memory/smemory/smemory.hpp @@ -0,0 +1,20 @@ +class sBus : public Bus { +public: + bool load_cart(); + void unload_cart(); + + void power(); + void reset(); + + void serialize(serializer&); + sBus(); + ~sBus(); + +private: + void map_reset(); + void map_system(); + void map_generic(); + void map_generic_sram(); +}; + +extern sBus bus; diff --git a/libmednahawk/src/snes/src/memory/smemory/system.cpp b/libmednahawk/src/snes/src/memory/smemory/system.cpp new file mode 100644 index 0000000000..6c60b5ff8a --- /dev/null +++ b/libmednahawk/src/snes/src/memory/smemory/system.cpp @@ -0,0 +1,18 @@ +#ifdef SMEMORY_CPP + +void sBus::map_reset() { + map(MapDirect, 0x00, 0xff, 0x0000, 0xffff, memory::memory_unmapped); + for(unsigned i = 0x2000; i <= 0x5fff; i++) memory::mmio.map(i, memory::mmio_unmapped); +} + +void sBus::map_system() { + map(MapDirect, 0x00, 0x3f, 0x2000, 0x5fff, memory::mmio); + map(MapDirect, 0x80, 0xbf, 0x2000, 0x5fff, memory::mmio); + + map(MapLinear, 0x00, 0x3f, 0x0000, 0x1fff, memory::wram, 0x000000, 0x002000); + map(MapLinear, 0x80, 0xbf, 0x0000, 0x1fff, memory::wram, 0x000000, 0x002000); + + map(MapLinear, 0x7e, 0x7f, 0x0000, 0xffff, memory::wram); +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/bppu.cpp b/libmednahawk/src/snes/src/ppu/bppu/bppu.cpp new file mode 100644 index 0000000000..e30ed91250 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/bppu.cpp @@ -0,0 +1,378 @@ +#include <../base.hpp> + +#define BPPU_CPP +namespace SNES { + +#if defined(DEBUGGER) + #include "debugger/debugger.cpp" + bPPUDebugger ppu; +#else + bPPU ppu; +#endif + +#include "memory/memory.cpp" +#include "mmio/mmio.cpp" +#include "render/render.cpp" +#include "serialization.cpp" + +void bPPU::enter() { + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + //H = 0 (initialize) + scanline(); + add_clocks(10); + + //H = 10 (cache mode7 registers + OAM address reset) + cache.m7_hofs = regs.m7_hofs; + cache.m7_vofs = regs.m7_vofs; + cache.m7a = regs.m7a; + cache.m7b = regs.m7b; + cache.m7c = regs.m7c; + cache.m7d = regs.m7d; + cache.m7x = regs.m7x; + cache.m7y = regs.m7y; + if(vcounter() == (!overscan() ? 225 : 240)) { + if(regs.display_disabled == false) { + regs.oam_addr = regs.oam_baseaddr << 1; + regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; + } + } + add_clocks(502); + + //H = 512 (render) + render_scanline(); + add_clocks(640); + + //H = 1152 (cache OBSEL) + if(cache.oam_basesize != regs.oam_basesize) { + cache.oam_basesize = regs.oam_basesize; + sprite_list_valid = false; + } + cache.oam_nameselect = regs.oam_nameselect; + cache.oam_tdaddr = regs.oam_tdaddr; + add_clocks(lineclocks() - 1152); //seek to start of next scanline + } +} + +void bPPU::add_clocks(unsigned clocks) { + tick(clocks); + scheduler.addclocks_ppu(clocks); + scheduler.sync_ppucpu(); +} + +void bPPU::scanline() { + line = vcounter(); + + if(line == 0) { + frame(); + + //RTO flag reset + regs.time_over = false; + regs.range_over = false; + } + + if(line == 1) { + //mosaic reset + for(int bg = BG1; bg <= BG4; bg++) regs.bg_y[bg] = 1; + regs.mosaic_countdown = regs.mosaic_size + 1; + regs.mosaic_countdown--; + } else { + for(int bg = BG1; bg <= BG4; bg++) { + if(!regs.mosaic_enabled[bg] || !regs.mosaic_countdown) regs.bg_y[bg] = line; + } + if(!regs.mosaic_countdown) regs.mosaic_countdown = regs.mosaic_size + 1; + regs.mosaic_countdown--; + } +} + +void bPPU::render_scanline() { + #ifdef FAST_FRAMESKIP + //note: this bypasses RTO status flag calculations, which is observable by software + if(status.render_output == false) return; + #endif + + if(line >= 1 && line < (!overscan() ? 225 : 240)) { + render_line_oam_rto(); + render_line(); + } +} + +void bPPU::frame() { + PPU::frame(); + system.frame(); + + if(field() == 0) { + display.interlace = regs.interlace; + regs.scanlines = (regs.overscan == false) ? 224 : 239; + } +} + +void bPPU::power() { + PPU::power(); + + for(unsigned i = 0; i < memory::vram.size(); i++) memory::vram[i] = 0x00; + for(unsigned i = 0; i < memory::oam.size(); i++) memory::oam[i] = 0x00; + for(unsigned i = 0; i < memory::cgram.size(); i++) memory::cgram[i] = 0x00; + flush_tiledata_cache(); + + region = (system.region() == System::NTSC ? 0 : 1); //0 = NTSC, 1 = PAL + + //$2100 + regs.display_disabled = true; + regs.display_brightness = 15; + + //$2101 + regs.oam_basesize = 0; + regs.oam_nameselect = 0; + regs.oam_tdaddr = 0x0000; + + cache.oam_basesize = 0; + cache.oam_nameselect = 0; + cache.oam_tdaddr = 0x0000; + + //$2102-$2103 + regs.oam_baseaddr = 0x0000; + regs.oam_addr = 0x0000; + regs.oam_priority = false; + regs.oam_firstsprite = 0; + + //$2104 + regs.oam_latchdata = 0x00; + + //$2105 + regs.bg_tilesize[BG1] = 0; + regs.bg_tilesize[BG2] = 0; + regs.bg_tilesize[BG3] = 0; + regs.bg_tilesize[BG4] = 0; + regs.bg3_priority = 0; + regs.bg_mode = 0; + + //$2106 + regs.mosaic_size = 0; + regs.mosaic_enabled[BG1] = false; + regs.mosaic_enabled[BG2] = false; + regs.mosaic_enabled[BG3] = false; + regs.mosaic_enabled[BG4] = false; + regs.mosaic_countdown = 0; + + //$2107-$210a + regs.bg_scaddr[BG1] = 0x0000; + regs.bg_scaddr[BG2] = 0x0000; + regs.bg_scaddr[BG3] = 0x0000; + regs.bg_scaddr[BG4] = 0x0000; + regs.bg_scsize[BG1] = SC_32x32; + regs.bg_scsize[BG2] = SC_32x32; + regs.bg_scsize[BG3] = SC_32x32; + regs.bg_scsize[BG4] = SC_32x32; + + //$210b-$210c + regs.bg_tdaddr[BG1] = 0x0000; + regs.bg_tdaddr[BG2] = 0x0000; + regs.bg_tdaddr[BG3] = 0x0000; + regs.bg_tdaddr[BG4] = 0x0000; + + //$210d-$2114 + regs.bg_ofslatch = 0x00; + regs.m7_hofs = regs.m7_vofs = 0x0000; + regs.bg_hofs[BG1] = regs.bg_vofs[BG1] = 0x0000; + regs.bg_hofs[BG2] = regs.bg_vofs[BG2] = 0x0000; + regs.bg_hofs[BG3] = regs.bg_vofs[BG3] = 0x0000; + regs.bg_hofs[BG4] = regs.bg_vofs[BG4] = 0x0000; + + //$2115 + regs.vram_incmode = 1; + regs.vram_mapping = 0; + regs.vram_incsize = 1; + + //$2116-$2117 + regs.vram_addr = 0x0000; + + //$211a + regs.mode7_repeat = 0; + regs.mode7_vflip = false; + regs.mode7_hflip = false; + + //$211b-$2120 + regs.m7_latch = 0x00; + regs.m7a = 0x0000; + regs.m7b = 0x0000; + regs.m7c = 0x0000; + regs.m7d = 0x0000; + regs.m7x = 0x0000; + regs.m7y = 0x0000; + + //$2121 + regs.cgram_addr = 0x0000; + + //$2122 + regs.cgram_latchdata = 0x00; + + //$2123-$2125 + regs.window1_enabled[BG1] = false; + regs.window1_enabled[BG2] = false; + regs.window1_enabled[BG3] = false; + regs.window1_enabled[BG4] = false; + regs.window1_enabled[OAM] = false; + regs.window1_enabled[COL] = false; + + regs.window1_invert [BG1] = false; + regs.window1_invert [BG2] = false; + regs.window1_invert [BG3] = false; + regs.window1_invert [BG4] = false; + regs.window1_invert [OAM] = false; + regs.window1_invert [COL] = false; + + regs.window2_enabled[BG1] = false; + regs.window2_enabled[BG2] = false; + regs.window2_enabled[BG3] = false; + regs.window2_enabled[BG4] = false; + regs.window2_enabled[OAM] = false; + regs.window2_enabled[COL] = false; + + regs.window2_invert [BG1] = false; + regs.window2_invert [BG2] = false; + regs.window2_invert [BG3] = false; + regs.window2_invert [BG4] = false; + regs.window2_invert [OAM] = false; + regs.window2_invert [COL] = false; + + //$2126-$2129 + regs.window1_left = 0x00; + regs.window1_right = 0x00; + regs.window2_left = 0x00; + regs.window2_right = 0x00; + + //$212a-$212b + regs.window_mask[BG1] = 0; + regs.window_mask[BG2] = 0; + regs.window_mask[BG3] = 0; + regs.window_mask[BG4] = 0; + regs.window_mask[OAM] = 0; + regs.window_mask[COL] = 0; + + //$212c-$212d + regs.bg_enabled[BG1] = false; + regs.bg_enabled[BG2] = false; + regs.bg_enabled[BG3] = false; + regs.bg_enabled[BG4] = false; + regs.bg_enabled[OAM] = false; + regs.bgsub_enabled[BG1] = false; + regs.bgsub_enabled[BG2] = false; + regs.bgsub_enabled[BG3] = false; + regs.bgsub_enabled[BG4] = false; + regs.bgsub_enabled[OAM] = false; + + //$212e-$212f + regs.window_enabled[BG1] = false; + regs.window_enabled[BG2] = false; + regs.window_enabled[BG3] = false; + regs.window_enabled[BG4] = false; + regs.window_enabled[OAM] = false; + regs.sub_window_enabled[BG1] = false; + regs.sub_window_enabled[BG2] = false; + regs.sub_window_enabled[BG3] = false; + regs.sub_window_enabled[BG4] = false; + regs.sub_window_enabled[OAM] = false; + + //$2130 + regs.color_mask = 0; + regs.colorsub_mask = 0; + regs.addsub_mode = false; + regs.direct_color = false; + + //$2131 + regs.color_mode = 0; + regs.color_halve = false; + regs.color_enabled[BACK] = false; + regs.color_enabled[OAM] = false; + regs.color_enabled[BG4] = false; + regs.color_enabled[BG3] = false; + regs.color_enabled[BG2] = false; + regs.color_enabled[BG1] = false; + + //$2132 + regs.color_r = 0x00; + regs.color_g = 0x00; + regs.color_b = 0x00; + regs.color_rgb = 0x0000; + + //$2133 + regs.mode7_extbg = false; + regs.pseudo_hires = false; + regs.overscan = false; + regs.scanlines = 224; + regs.oam_interlace = false; + regs.interlace = false; + + //$2137 + regs.hcounter = 0; + regs.vcounter = 0; + regs.latch_hcounter = 0; + regs.latch_vcounter = 0; + regs.counters_latched = false; + + //$2139-$213a + regs.vram_readbuffer = 0x0000; + + //$213e + regs.time_over = false; + regs.range_over = false; + + reset(); +} + +void bPPU::reset() { + PPU::reset(); + PPU::frame(); + + //$2100 + regs.display_disabled = true; + + display.interlace = false; + display.overscan = false; + regs.scanlines = 224; + + memset(sprite_list, 0, sizeof(sprite_list)); + sprite_list_valid = false; + + //open bus support + regs.ppu1_mdr = 0xff; + regs.ppu2_mdr = 0xff; + + //bg line counters + regs.bg_y[0] = 0; + regs.bg_y[1] = 0; + regs.bg_y[2] = 0; + regs.bg_y[3] = 0; +} + +bPPU::bPPU() { + alloc_tiledata_cache(); + + for(int l = 0; l < 16; l++) { + for(int i = 0; i < 4096; i++) { + mosaic_table[l][i] = (i / (l + 1)) * (l + 1); + } + } + + for(int l = 0; l < 16; l++) { + double m = (double)l / 15.0; + for(int i = 0; i < 32 * 32; i++) { + int r = (int)((double)((i) & 31) * m + 0.5); + int g = (int)((double)((i >> 5) & 31) * m + 0.5); + r = max(0, min(31, r)); + g = max(0, min(31, g)); + if(i < 32) light_table_b[l][i] = (r << 10); + light_table_gr[l][i] = (g << 5) | (r); + } + } +} + +bPPU::~bPPU() { + free_tiledata_cache(); +} + +}; diff --git a/libmednahawk/src/snes/src/ppu/bppu/bppu.hpp b/libmednahawk/src/snes/src/ppu/bppu/bppu.hpp new file mode 100644 index 0000000000..70dde3d320 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/bppu.hpp @@ -0,0 +1,65 @@ +class bPPU : public PPU { +public: + #include "memory/memory.hpp" + #include "mmio/mmio.hpp" + #include "render/render.hpp" + + void enter(); + void add_clocks(unsigned clocks); + + uint8 region; + unsigned line; + + enum { NTSC = 0, PAL = 1 }; + enum { BG1 = 0, BG2 = 1, BG3 = 2, BG4 = 3, OAM = 4, BACK = 5, COL = 5 }; + enum { SC_32x32 = 0, SC_64x32 = 1, SC_32x64 = 2, SC_64x64 = 3 }; + + struct { + bool interlace; + bool overscan; + } display; + + struct { + //$2101 + uint8 oam_basesize; + uint8 oam_nameselect; + uint16 oam_tdaddr; + + //$210d-$210e + uint16 m7_hofs, m7_vofs; + + //$211b-$2120 + uint16 m7a, m7b, m7c, m7d, m7x, m7y; + } cache; + + alwaysinline bool interlace() const { return display.interlace; } + alwaysinline bool overscan() const { return display.overscan; } + alwaysinline bool hires() const { return (regs.pseudo_hires || regs.bg_mode == 5 || regs.bg_mode == 6); } + + uint16 light_table_b[16][32]; + uint16 light_table_gr[16][32 * 32]; + uint16 mosaic_table[16][4096]; + void render_line(); + + void update_oam_status(); + //required functions + void run(); + void scanline(); + void render_scanline(); + void frame(); + void power(); + void reset(); + + void serialize(serializer&); + bPPU(); + ~bPPU(); + + friend class bPPUDebug; +}; + +#if defined(DEBUGGER) + #include "debugger/debugger.hpp" + extern bPPUDebugger ppu; +#else + extern bPPU ppu; +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.cpp b/libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.cpp new file mode 100644 index 0000000000..5b4ee0597a --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.cpp @@ -0,0 +1,290 @@ +#ifdef BPPU_CPP + +#include "render.cpp" + +uint8 bPPUDebugger::vram_mmio_read(uint16 addr) { + uint8 data = bPPU::vram_mmio_read(addr); + debugger.breakpoint_test(Debugger::Breakpoint::VRAM, Debugger::Breakpoint::Read, addr, data); + return data; +} + +void bPPUDebugger::vram_mmio_write(uint16 addr, uint8 data) { + bPPU::vram_mmio_write(addr, data); + debugger.breakpoint_test(Debugger::Breakpoint::VRAM, Debugger::Breakpoint::Write, addr, data); +} + +uint8 bPPUDebugger::oam_mmio_read(uint16 addr) { + uint8 data = bPPU::oam_mmio_read(addr); + debugger.breakpoint_test(Debugger::Breakpoint::OAM, Debugger::Breakpoint::Read, addr, data); + return data; +} + +void bPPUDebugger::oam_mmio_write(uint16 addr, uint8 data) { + bPPU::oam_mmio_write(addr, data); + debugger.breakpoint_test(Debugger::Breakpoint::OAM, Debugger::Breakpoint::Write, addr, data); +} + +uint8 bPPUDebugger::cgram_mmio_read(uint16 addr) { + uint8 data = bPPU::cgram_mmio_read(addr); + debugger.breakpoint_test(Debugger::Breakpoint::CGRAM, Debugger::Breakpoint::Read, addr, data); + return data; +} + +void bPPUDebugger::cgram_mmio_write(uint16 addr, uint8 data) { + bPPU::cgram_mmio_write(addr, data); + debugger.breakpoint_test(Debugger::Breakpoint::CGRAM, Debugger::Breakpoint::Write, addr, data); +} + +bPPUDebugger::bPPUDebugger() { + bg1_enabled[0] = bg1_enabled[1] = true; + bg2_enabled[0] = bg2_enabled[1] = true; + bg3_enabled[0] = bg3_enabled[1] = true; + bg4_enabled[0] = bg4_enabled[1] = true; + oam_enabled[0] = oam_enabled[1] = oam_enabled[2] = oam_enabled[3] = true; +} + +//=========== +//PPUDebugger +//=========== + +//internal +unsigned bPPUDebugger::ppu1_mdr() { return regs.ppu1_mdr; } +unsigned bPPUDebugger::ppu2_mdr() { return regs.ppu2_mdr; } + +//$2100 +bool bPPUDebugger::display_disable() { return regs.display_disabled; } +unsigned bPPUDebugger::display_brightness() { return regs.display_brightness; } + +//$2101 +unsigned bPPUDebugger::oam_base_size() { return regs.oam_basesize; } +unsigned bPPUDebugger::oam_name_select() { return regs.oam_nameselect; } +unsigned bPPUDebugger::oam_name_base_address() { return regs.oam_tdaddr; } + +//$2102-$2103 +unsigned bPPUDebugger::oam_base_address() { return regs.oam_baseaddr; } +bool bPPUDebugger::oam_priority() { return regs.oam_priority; } + +//$2105 +bool bPPUDebugger::bg1_tile_size() { return regs.bg_tilesize[BG1]; } +bool bPPUDebugger::bg2_tile_size() { return regs.bg_tilesize[BG2]; } +bool bPPUDebugger::bg3_tile_size() { return regs.bg_tilesize[BG3]; } +bool bPPUDebugger::bg4_tile_size() { return regs.bg_tilesize[BG4]; } +bool bPPUDebugger::bg3_priority() { return regs.bg3_priority; } +unsigned bPPUDebugger::bg_mode() { return regs.bg_mode; } + +//$2106 +unsigned bPPUDebugger::mosaic_size() { return regs.mosaic_size; } +bool bPPUDebugger::bg1_mosaic_enable() { return regs.mosaic_enabled[BG1]; } +bool bPPUDebugger::bg2_mosaic_enable() { return regs.mosaic_enabled[BG2]; } +bool bPPUDebugger::bg3_mosaic_enable() { return regs.mosaic_enabled[BG3]; } +bool bPPUDebugger::bg4_mosaic_enable() { return regs.mosaic_enabled[BG4]; } + +//$2107 +unsigned bPPUDebugger::bg1_screen_address() { return regs.bg_scaddr[BG1]; } +unsigned bPPUDebugger::bg1_screen_size() { return regs.bg_scsize[BG1]; } + +//$2108 +unsigned bPPUDebugger::bg2_screen_address() { return regs.bg_scaddr[BG2]; } +unsigned bPPUDebugger::bg2_screen_size() { return regs.bg_scsize[BG2]; } + +//$2109 +unsigned bPPUDebugger::bg3_screen_address() { return regs.bg_scaddr[BG3]; } +unsigned bPPUDebugger::bg3_screen_size() { return regs.bg_scsize[BG3]; } + +//$210a +unsigned bPPUDebugger::bg4_screen_address() { return regs.bg_scaddr[BG4]; } +unsigned bPPUDebugger::bg4_screen_size() { return regs.bg_scsize[BG4]; } + +//$210b +unsigned bPPUDebugger::bg1_name_base_address() { return regs.bg_tdaddr[BG1]; } +unsigned bPPUDebugger::bg2_name_base_address() { return regs.bg_tdaddr[BG2]; } + +//$210c +unsigned bPPUDebugger::bg3_name_base_address() { return regs.bg_tdaddr[BG3]; } +unsigned bPPUDebugger::bg4_name_base_address() { return regs.bg_tdaddr[BG4]; } + +//$210d +unsigned bPPUDebugger::mode7_hoffset() { return regs.m7_hofs & 0x1fff; } +unsigned bPPUDebugger::bg1_hoffset() { return regs.bg_hofs[BG1] & 0x03ff; } + +//$210e +unsigned bPPUDebugger::mode7_voffset() { return regs.m7_vofs & 0x1fff; } +unsigned bPPUDebugger::bg1_voffset() { return regs.bg_vofs[BG1] & 0x03ff; } + +//$210f +unsigned bPPUDebugger::bg2_hoffset() { return regs.bg_hofs[BG2] & 0x03ff; } + +//$2110 +unsigned bPPUDebugger::bg2_voffset() { return regs.bg_vofs[BG2] & 0x03ff; } + +//$2111 +unsigned bPPUDebugger::bg3_hoffset() { return regs.bg_hofs[BG3] & 0x03ff; } + +//$2112 +unsigned bPPUDebugger::bg3_voffset() { return regs.bg_vofs[BG3] & 0x03ff; } + +//$2113 +unsigned bPPUDebugger::bg4_hoffset() { return regs.bg_hofs[BG4] & 0x03ff; } + +//$2114 +unsigned bPPUDebugger::bg4_voffset() { return regs.bg_vofs[BG4] & 0x03ff; } + +//$2115 +bool bPPUDebugger::vram_increment_mode() { return regs.vram_incmode; } +unsigned bPPUDebugger::vram_increment_formation() { return regs.vram_mapping; } +unsigned bPPUDebugger::vram_increment_size() { return regs.vram_incsize; } + +//$2116-$2117 +unsigned bPPUDebugger::vram_address() { return regs.vram_addr; } + +//$211a +unsigned bPPUDebugger::mode7_repeat() { return regs.mode7_repeat; } +bool bPPUDebugger::mode7_vflip() { return regs.mode7_vflip; } +bool bPPUDebugger::mode7_hflip() { return regs.mode7_hflip; } + +//$211b +unsigned bPPUDebugger::mode7_a() { return regs.m7a; } + +//$211c +unsigned bPPUDebugger::mode7_b() { return regs.m7b; } + +//$211d +unsigned bPPUDebugger::mode7_c() { return regs.m7c; } + +//$211e +unsigned bPPUDebugger::mode7_d() { return regs.m7d; } + +//$211f +unsigned bPPUDebugger::mode7_x() { return regs.m7x; } + +//$2120 +unsigned bPPUDebugger::mode7_y() { return regs.m7y; } + +//$2121 +unsigned bPPUDebugger::cgram_address() { return regs.cgram_addr; } + +//$2123 +bool bPPUDebugger::bg1_window1_enable() { return regs.window1_enabled[BG1]; } +bool bPPUDebugger::bg1_window1_invert() { return regs.window1_invert [BG1]; } +bool bPPUDebugger::bg1_window2_enable() { return regs.window2_enabled[BG1]; } +bool bPPUDebugger::bg1_window2_invert() { return regs.window2_invert [BG1]; } +bool bPPUDebugger::bg2_window1_enable() { return regs.window1_enabled[BG2]; } +bool bPPUDebugger::bg2_window1_invert() { return regs.window1_invert [BG2]; } +bool bPPUDebugger::bg2_window2_enable() { return regs.window2_enabled[BG2]; } +bool bPPUDebugger::bg2_window2_invert() { return regs.window2_invert [BG2]; } + +//$2124 +bool bPPUDebugger::bg3_window1_enable() { return regs.window1_enabled[BG3]; } +bool bPPUDebugger::bg3_window1_invert() { return regs.window1_invert [BG3]; } +bool bPPUDebugger::bg3_window2_enable() { return regs.window2_enabled[BG3]; } +bool bPPUDebugger::bg3_window2_invert() { return regs.window2_invert [BG3]; } +bool bPPUDebugger::bg4_window1_enable() { return regs.window1_enabled[BG4]; } +bool bPPUDebugger::bg4_window1_invert() { return regs.window1_invert [BG4]; } +bool bPPUDebugger::bg4_window2_enable() { return regs.window2_enabled[BG4]; } +bool bPPUDebugger::bg4_window2_invert() { return regs.window2_invert [BG4]; } + +//$2125 +bool bPPUDebugger::oam_window1_enable() { return regs.window1_enabled[OAM]; } +bool bPPUDebugger::oam_window1_invert() { return regs.window1_invert [OAM]; } +bool bPPUDebugger::oam_window2_enable() { return regs.window2_enabled[OAM]; } +bool bPPUDebugger::oam_window2_invert() { return regs.window2_invert [OAM]; } +bool bPPUDebugger::color_window1_enable() { return regs.window1_enabled[COL]; } +bool bPPUDebugger::color_window1_invert() { return regs.window1_invert [COL]; } +bool bPPUDebugger::color_window2_enable() { return regs.window2_enabled[COL]; } +bool bPPUDebugger::color_window2_invert() { return regs.window2_enabled[COL]; } + +//$2126 +unsigned bPPUDebugger::window1_left() { return regs.window1_left; } + +//$2127 +unsigned bPPUDebugger::window1_right() { return regs.window1_right; } + +//$2128 +unsigned bPPUDebugger::window2_left() { return regs.window2_left; } + +//$2129 +unsigned bPPUDebugger::window2_right() { return regs.window2_right; } + +//$212a +unsigned bPPUDebugger::bg1_window_mask() { return regs.window_mask[BG1]; } +unsigned bPPUDebugger::bg2_window_mask() { return regs.window_mask[BG2]; } +unsigned bPPUDebugger::bg3_window_mask() { return regs.window_mask[BG3]; } +unsigned bPPUDebugger::bg4_window_mask() { return regs.window_mask[BG4]; } + +//$212b +unsigned bPPUDebugger::oam_window_mask() { return regs.window_mask[OAM]; } +unsigned bPPUDebugger::color_window_mask() { return regs.window_mask[COL]; } + +//$212c +bool bPPUDebugger::bg1_mainscreen_enable() { return regs.bg_enabled[BG1]; } +bool bPPUDebugger::bg2_mainscreen_enable() { return regs.bg_enabled[BG2]; } +bool bPPUDebugger::bg3_mainscreen_enable() { return regs.bg_enabled[BG3]; } +bool bPPUDebugger::bg4_mainscreen_enable() { return regs.bg_enabled[BG4]; } +bool bPPUDebugger::oam_mainscreen_enable() { return regs.bg_enabled[OAM]; } + +//$212d +bool bPPUDebugger::bg1_subscreen_enable() { return regs.bgsub_enabled[BG1]; } +bool bPPUDebugger::bg2_subscreen_enable() { return regs.bgsub_enabled[BG2]; } +bool bPPUDebugger::bg3_subscreen_enable() { return regs.bgsub_enabled[BG3]; } +bool bPPUDebugger::bg4_subscreen_enable() { return regs.bgsub_enabled[BG4]; } +bool bPPUDebugger::oam_subscreen_enable() { return regs.bgsub_enabled[OAM]; } + +//$212e +bool bPPUDebugger::bg1_mainscreen_window_enable() { return regs.window_enabled[BG1]; } +bool bPPUDebugger::bg2_mainscreen_window_enable() { return regs.window_enabled[BG2]; } +bool bPPUDebugger::bg3_mainscreen_window_enable() { return regs.window_enabled[BG3]; } +bool bPPUDebugger::bg4_mainscreen_window_enable() { return regs.window_enabled[BG4]; } +bool bPPUDebugger::oam_mainscreen_window_enable() { return regs.window_enabled[OAM]; } + +//$212f +bool bPPUDebugger::bg1_subscreen_window_enable() { return regs.sub_window_enabled[BG1]; } +bool bPPUDebugger::bg2_subscreen_window_enable() { return regs.sub_window_enabled[BG2]; } +bool bPPUDebugger::bg3_subscreen_window_enable() { return regs.sub_window_enabled[BG3]; } +bool bPPUDebugger::bg4_subscreen_window_enable() { return regs.sub_window_enabled[BG4]; } +bool bPPUDebugger::oam_subscreen_window_enable() { return regs.sub_window_enabled[OAM]; } + +//$2130 +unsigned bPPUDebugger::color_mainscreen_window_mask() { return regs.color_mask; } +unsigned bPPUDebugger::color_subscreen_window_mask() { return regs.colorsub_mask; } +bool bPPUDebugger::color_add_subtract_mode() { return regs.addsub_mode; } +bool bPPUDebugger::direct_color() { return regs.direct_color; } + +//$2131 +bool bPPUDebugger::color_mode() { return regs.color_mode; } +bool bPPUDebugger::color_halve() { return regs.color_halve; } +bool bPPUDebugger::bg1_color_enable() { return regs.color_enabled[BG1]; } +bool bPPUDebugger::bg2_color_enable() { return regs.color_enabled[BG2]; } +bool bPPUDebugger::bg3_color_enable() { return regs.color_enabled[BG3]; } +bool bPPUDebugger::bg4_color_enable() { return regs.color_enabled[BG4]; } +bool bPPUDebugger::oam_color_enable() { return regs.color_enabled[OAM]; } +bool bPPUDebugger::back_color_enable() { return regs.color_enabled[BACK]; } + +//$2132 +unsigned bPPUDebugger::color_constant_blue() { return regs.color_b; } +unsigned bPPUDebugger::color_constant_green() { return regs.color_g; } +unsigned bPPUDebugger::color_constant_red() { return regs.color_r; } + +//$2133 +bool bPPUDebugger::mode7_extbg() { return regs.mode7_extbg; } +bool bPPUDebugger::pseudo_hires() { return regs.pseudo_hires; } +bool bPPUDebugger::overscan() { return regs.overscan; } +bool bPPUDebugger::oam_interlace() { return regs.oam_interlace; } +bool bPPUDebugger::interlace() { return regs.interlace; } + +//$213c +unsigned bPPUDebugger::hcounter() { return bPPU::hcounter(); } + +//$213d +unsigned bPPUDebugger::vcounter() { return bPPU::vcounter(); } + +//$213e +bool bPPUDebugger::range_over() { return regs.range_over; } +bool bPPUDebugger::time_over() { return regs.time_over; } +unsigned bPPUDebugger::ppu1_version() { return PPU::ppu1_version; } + +//$213f +bool bPPUDebugger::field() { return cpu.field(); } +bool bPPUDebugger::region() { return bPPU::region; } +unsigned bPPUDebugger::ppu2_version() { return PPU::ppu2_version; } + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.hpp b/libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.hpp new file mode 100644 index 0000000000..aed02630a1 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/debugger/debugger.hpp @@ -0,0 +1,272 @@ +class bPPUDebugger : public bPPU, public PPUDebugger { +public: + bool bg1_enabled[2]; + bool bg2_enabled[2]; + bool bg3_enabled[2]; + bool bg4_enabled[2]; + bool oam_enabled[4]; + + uint8 vram_mmio_read(uint16 addr); + void vram_mmio_write(uint16 addr, uint8 data); + + uint8 oam_mmio_read(uint16 addr); + void oam_mmio_write(uint16 addr, uint8 data); + + uint8 cgram_mmio_read(uint16 addr); + void cgram_mmio_write(uint16 addr, uint8 data); + + void render_line_mode0(); + void render_line_mode1(); + void render_line_mode2(); + void render_line_mode3(); + void render_line_mode4(); + void render_line_mode5(); + void render_line_mode6(); + void render_line_mode7(); + + bPPUDebugger(); + + //=========== + //PPUDebugger + //=========== + + //internal + unsigned ppu1_mdr(); + unsigned ppu2_mdr(); + + //$2100 + bool display_disable(); + unsigned display_brightness(); + + //$2101 + unsigned oam_base_size(); + unsigned oam_name_select(); + unsigned oam_name_base_address(); + + //$2102-$2103 + unsigned oam_base_address(); + bool oam_priority(); + + //$2105 + bool bg1_tile_size(); + bool bg2_tile_size(); + bool bg3_tile_size(); + bool bg4_tile_size(); + bool bg3_priority(); + unsigned bg_mode(); + + //$2106 + unsigned mosaic_size(); + bool bg1_mosaic_enable(); + bool bg2_mosaic_enable(); + bool bg3_mosaic_enable(); + bool bg4_mosaic_enable(); + + //$2107 + unsigned bg1_screen_address(); + unsigned bg1_screen_size(); + + //$2108 + unsigned bg2_screen_address(); + unsigned bg2_screen_size(); + + //$2109 + unsigned bg3_screen_address(); + unsigned bg3_screen_size(); + + //$210a + unsigned bg4_screen_address(); + unsigned bg4_screen_size(); + + //$210b + unsigned bg1_name_base_address(); + unsigned bg2_name_base_address(); + + //$210c + unsigned bg3_name_base_address(); + unsigned bg4_name_base_address(); + + //$210d + unsigned mode7_hoffset(); + unsigned bg1_hoffset(); + + //$210e + unsigned mode7_voffset(); + unsigned bg1_voffset(); + + //$210f + unsigned bg2_hoffset(); + + //$2110 + unsigned bg2_voffset(); + + //$2111 + unsigned bg3_hoffset(); + + //$2112 + unsigned bg3_voffset(); + + //$2113 + unsigned bg4_hoffset(); + + //$2114 + unsigned bg4_voffset(); + + //$2115 + bool vram_increment_mode(); + unsigned vram_increment_formation(); + unsigned vram_increment_size(); + + //$2116-$2117 + unsigned vram_address(); + + //$211a + unsigned mode7_repeat(); + bool mode7_vflip(); + bool mode7_hflip(); + + //$211b + unsigned mode7_a(); + + //$211c + unsigned mode7_b(); + + //$211d + unsigned mode7_c(); + + //$211e + unsigned mode7_d(); + + //$211f + unsigned mode7_x(); + + //$2120 + unsigned mode7_y(); + + //$2121 + unsigned cgram_address(); + + //$2123 + bool bg1_window1_enable(); + bool bg1_window1_invert(); + bool bg1_window2_enable(); + bool bg1_window2_invert(); + bool bg2_window1_enable(); + bool bg2_window1_invert(); + bool bg2_window2_enable(); + bool bg2_window2_invert(); + + //$2124 + bool bg3_window1_enable(); + bool bg3_window1_invert(); + bool bg3_window2_enable(); + bool bg3_window2_invert(); + bool bg4_window1_enable(); + bool bg4_window1_invert(); + bool bg4_window2_enable(); + bool bg4_window2_invert(); + + //$2125 + bool oam_window1_enable(); + bool oam_window1_invert(); + bool oam_window2_enable(); + bool oam_window2_invert(); + bool color_window1_enable(); + bool color_window1_invert(); + bool color_window2_enable(); + bool color_window2_invert(); + + //$2126 + unsigned window1_left(); + + //$2127 + unsigned window1_right(); + + //$2128 + unsigned window2_left(); + + //$2129 + unsigned window2_right(); + + //$212a + unsigned bg1_window_mask(); + unsigned bg2_window_mask(); + unsigned bg3_window_mask(); + unsigned bg4_window_mask(); + + //$212b + unsigned oam_window_mask(); + unsigned color_window_mask(); + + //$212c + bool bg1_mainscreen_enable(); + bool bg2_mainscreen_enable(); + bool bg3_mainscreen_enable(); + bool bg4_mainscreen_enable(); + bool oam_mainscreen_enable(); + + //$212d + bool bg1_subscreen_enable(); + bool bg2_subscreen_enable(); + bool bg3_subscreen_enable(); + bool bg4_subscreen_enable(); + bool oam_subscreen_enable(); + + //$212e + bool bg1_mainscreen_window_enable(); + bool bg2_mainscreen_window_enable(); + bool bg3_mainscreen_window_enable(); + bool bg4_mainscreen_window_enable(); + bool oam_mainscreen_window_enable(); + + //$212f + bool bg1_subscreen_window_enable(); + bool bg2_subscreen_window_enable(); + bool bg3_subscreen_window_enable(); + bool bg4_subscreen_window_enable(); + bool oam_subscreen_window_enable(); + + //$2130 + unsigned color_mainscreen_window_mask(); + unsigned color_subscreen_window_mask(); + bool color_add_subtract_mode(); + bool direct_color(); + + //$2131 + bool color_mode(); + bool color_halve(); + bool bg1_color_enable(); + bool bg2_color_enable(); + bool bg3_color_enable(); + bool bg4_color_enable(); + bool oam_color_enable(); + bool back_color_enable(); + + //$2132 + unsigned color_constant_blue(); + unsigned color_constant_green(); + unsigned color_constant_red(); + + //$2133 + bool mode7_extbg(); + bool pseudo_hires(); + bool overscan(); + bool oam_interlace(); + bool interlace(); + + //$213c + unsigned hcounter(); + + //$213d + unsigned vcounter(); + + //$213e + bool range_over(); + bool time_over(); + unsigned ppu1_version(); + + //$213f + bool field(); + bool region(); + unsigned ppu2_version(); +}; diff --git a/libmednahawk/src/snes/src/ppu/bppu/debugger/render.cpp b/libmednahawk/src/snes/src/ppu/bppu/debugger/render.cpp new file mode 100644 index 0000000000..8b3832eb6a --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/debugger/render.cpp @@ -0,0 +1,194 @@ +#ifdef BPPU_CPP + +//render_line_modeN() taken from src/ppu/bppu/render/render.cpp +//modified to support layer disable; accomplished by setting priority to zero +//a priority of zero won't override the back layer, effectively nullifying it +//for speed, rendering loop is skipped entirely if all priorities are disabled +// +//note: render_line_(bg|oam|mode7) cannot be virtualized as they are templates + +void bPPUDebugger::render_line_mode0() { + unsigned pri0, pri1, pri2, pri3; + + pri0 = bg1_enabled[0] ? 8 : 0; + pri1 = bg1_enabled[1] ? 11 : 0; + if(pri0 | pri1) bPPU::render_line_bg<0, BG1, COLORDEPTH_4>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 7 : 0; + pri1 = bg2_enabled[1] ? 10 : 0; + if(pri0 | pri1) bPPU::render_line_bg<0, BG2, COLORDEPTH_4>(pri0, pri1); + + pri0 = bg3_enabled[0] ? 2 : 0; + pri1 = bg3_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_bg<0, BG3, COLORDEPTH_4>(pri0, pri1); + + pri0 = bg4_enabled[0] ? 1 : 0; + pri1 = bg4_enabled[1] ? 4 : 0; + if(pri0 | pri1) bPPU::render_line_bg<0, BG4, COLORDEPTH_4>(pri0, pri1); + + pri0 = oam_enabled[0] ? 3 : 0; + pri1 = oam_enabled[1] ? 6 : 0; + pri2 = oam_enabled[2] ? 9 : 0; + pri3 = oam_enabled[3] ? 12 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); +} + +void bPPUDebugger::render_line_mode1() { + unsigned pri0, pri1, pri2, pri3; + + if(regs.bg3_priority) { + pri0 = bg1_enabled[0] ? 5 : 0; + pri1 = bg1_enabled[1] ? 8 : 0; + if(pri0 | pri1) bPPU::render_line_bg<1, BG1, COLORDEPTH_16>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 4 : 0; + pri1 = bg2_enabled[1] ? 7 : 0; + if(pri0 | pri1) bPPU::render_line_bg<1, BG2, COLORDEPTH_16>(pri0, pri1); + + pri0 = bg3_enabled[0] ? 1 : 0; + pri1 = bg3_enabled[1] ? 10 : 0; + if(pri0 | pri1) bPPU::render_line_bg<1, BG3, COLORDEPTH_4>(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 3 : 0; + pri2 = oam_enabled[2] ? 6 : 0; + pri3 = oam_enabled[3] ? 9 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); + } else { + pri0 = bg1_enabled[0] ? 6 : 0; + pri1 = bg1_enabled[1] ? 9 : 0; + if(pri0 | pri1) bPPU::render_line_bg<1, BG1, COLORDEPTH_16>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 5 : 0; + pri1 = bg2_enabled[1] ? 8 : 0; + if(pri0 | pri1) bPPU::render_line_bg<1, BG2, COLORDEPTH_16>(pri0, pri1); + + pri0 = bg3_enabled[0] ? 1 : 0; + pri1 = bg3_enabled[1] ? 3 : 0; + if(pri0 | pri1) bPPU::render_line_bg<1, BG3, COLORDEPTH_4>(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 4 : 0; + pri2 = oam_enabled[2] ? 7 : 0; + pri3 = oam_enabled[3] ? 10 : 0; + bPPU::render_line_oam(pri0, pri1, pri2, pri3); + } +} + +void bPPUDebugger::render_line_mode2() { + unsigned pri0, pri1, pri2, pri3; + + pri0 = bg1_enabled[0] ? 3 : 0; + pri1 = bg1_enabled[1] ? 7 : 0; + if(pri0 | pri1) bPPU::render_line_bg<2, BG1, COLORDEPTH_16>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 1 : 0; + pri1 = bg2_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_bg<2, BG2, COLORDEPTH_16>(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 4 : 0; + pri2 = oam_enabled[2] ? 6 : 0; + pri3 = oam_enabled[3] ? 8 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); +} + +void bPPUDebugger::render_line_mode3() { + unsigned pri0, pri1, pri2, pri3; + + pri0 = bg1_enabled[0] ? 3 : 0; + pri1 = bg1_enabled[1] ? 7 : 0; + if(pri0 | pri1) bPPU::render_line_bg<3, BG1, COLORDEPTH_256>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 1 : 0; + pri1 = bg2_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_bg<3, BG2, COLORDEPTH_16>(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 4 : 0; + pri2 = oam_enabled[2] ? 6 : 0; + pri3 = oam_enabled[3] ? 8 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); +} + +void bPPUDebugger::render_line_mode4() { + unsigned pri0, pri1, pri2, pri3; + + pri0 = bg1_enabled[0] ? 3 : 0; + pri1 = bg1_enabled[1] ? 7 : 0; + if(pri0 | pri1) bPPU::render_line_bg<4, BG1, COLORDEPTH_256>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 1 : 0; + pri1 = bg2_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_bg<4, BG2, COLORDEPTH_4>(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 4 : 0; + pri2 = oam_enabled[2] ? 6 : 0; + pri3 = oam_enabled[3] ? 8 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); +} + +void bPPUDebugger::render_line_mode5() { + unsigned pri0, pri1, pri2, pri3; + + pri0 = bg1_enabled[0] ? 3 : 0; + pri1 = bg1_enabled[1] ? 7 : 0; + if(pri0 | pri1) bPPU::render_line_bg<5, BG1, COLORDEPTH_16>(pri0, pri1); + + pri0 = bg2_enabled[0] ? 1 : 0; + pri1 = bg2_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_bg<5, BG2, COLORDEPTH_4>(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 4 : 0; + pri2 = oam_enabled[2] ? 6 : 0; + pri3 = oam_enabled[3] ? 8 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); +} + +void bPPUDebugger::render_line_mode6() { + unsigned pri0, pri1, pri2, pri3; + + pri0 = bg1_enabled[0] ? 2 : 0; + pri1 = bg1_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_bg<6, BG1, COLORDEPTH_16>(pri0, pri1); + + pri0 = oam_enabled[0] ? 1 : 0; + pri1 = oam_enabled[1] ? 3 : 0; + pri2 = oam_enabled[2] ? 4 : 0; + pri3 = oam_enabled[3] ? 6 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); +} + +void bPPUDebugger::render_line_mode7() { + unsigned pri0, pri1, pri2, pri3; + + if(regs.mode7_extbg == false) { + pri0 = bg1_enabled[0] ? 2 : 0; + pri1 = bg1_enabled[1] ? 2 : 0; + if(pri0 | pri1) bPPU::render_line_mode7(pri0, pri1); + + pri0 = oam_enabled[0] ? 1 : 0; + pri1 = oam_enabled[1] ? 3 : 0; + pri2 = oam_enabled[2] ? 4 : 0; + pri3 = oam_enabled[3] ? 5 : 0; + if(pri0 | pri1 | pri2 | pri3) bPPU::render_line_oam(pri0, pri1, pri2, pri3); + } else { + pri0 = bg1_enabled[0] ? 3 : 0; + pri1 = bg1_enabled[1] ? 3 : 0; + if(pri0 | pri1) bPPU::render_line_mode7(pri0, pri1); + + pri0 = bg2_enabled[0] ? 1 : 0; + pri1 = bg2_enabled[1] ? 5 : 0; + if(pri0 | pri1) bPPU::render_line_mode7(pri0, pri1); + + pri0 = oam_enabled[0] ? 2 : 0; + pri1 = oam_enabled[1] ? 4 : 0; + pri2 = oam_enabled[2] ? 6 : 0; + pri3 = oam_enabled[3] ? 7 : 0; + bPPU::render_line_oam(pri0, pri1, pri2, pri3); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/memory/memory.cpp b/libmednahawk/src/snes/src/ppu/bppu/memory/memory.cpp new file mode 100644 index 0000000000..82370a6f8c --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/memory/memory.cpp @@ -0,0 +1,173 @@ +#ifdef BPPU_CPP + +void bPPU::latch_counters() { + regs.hcounter = cpu.hdot(); + regs.vcounter = cpu.vcounter(); + regs.counters_latched = true; +} + +uint16 bPPU::get_vram_address() { + uint16 addr = regs.vram_addr; + switch(regs.vram_mapping) { + case 0: break; //direct mapping + case 1: addr = (addr & 0xff00) | ((addr & 0x001f) << 3) | ((addr >> 5) & 7); break; + case 2: addr = (addr & 0xfe00) | ((addr & 0x003f) << 3) | ((addr >> 6) & 7); break; + case 3: addr = (addr & 0xfc00) | ((addr & 0x007f) << 3) | ((addr >> 7) & 7); break; + } + return (addr << 1); +} + +//NOTE: all VRAM writes during active display are invalid. Unlike OAM and CGRAM, they will +//not be written anywhere at all. The below address ranges for where writes are invalid have +//been validated on hardware, as has the edge case where the S-CPU MDR can be written if the +//write occurs during the very last clock cycle of vblank. + +uint8 bPPU::vram_mmio_read(uint16 addr) { + uint8 data; + + if(regs.display_disabled == true) { + data = memory::vram[addr]; + } else { + uint16 v = cpu.vcounter(); + uint16 h = cpu.hcounter(); + uint16 ls = ((system.region() == System::NTSC ? 525 : 625) >> 1) - 1; + if(interlace() && !cpu.field()) ls++; + + if(v == ls && h == 1362) { + data = 0x00; + } else if(v < (!overscan() ? 224 : 239)) { + data = 0x00; + } else if(v == (!overscan() ? 224 : 239)) { + if(h == 1362) { + data = memory::vram[addr]; + } else { + data = 0x00; + } + } else { + data = memory::vram[addr]; + } + } + + return data; +} + +void bPPU::vram_mmio_write(uint16 addr, uint8 data) { + if(regs.display_disabled == true) { + memory::vram[addr] = data; + } else { + uint16 v = cpu.vcounter(); + uint16 h = cpu.hcounter(); + if(v == 0) { + if(h <= 4) { + memory::vram[addr] = data; + } else if(h == 6) { + memory::vram[addr] = cpu.regs.mdr; + } else { + //no write + } + } else if(v < (!overscan() ? 225 : 240)) { + //no write + } else if(v == (!overscan() ? 225 : 240)) { + if(h <= 4) { + //no write + } else { + memory::vram[addr] = data; + } + } else { + memory::vram[addr] = data; + } + } +} + +//NOTE: OAM accesses during active display are rerouted to 0x0218 ... this can be considered +//a hack. The actual address varies during rendering, as the S-PPU reads in data itself for +//processing. Unfortunately, we have yet to determine how this works. The algorithm cannot be +//reverse engineered using a scanline renderer such as this, and at this time, there does not +//exist a more accurate SNES PPU emulator to work from. The only known game to actually access +//OAM during active display is Uniracers. It expects accesses to map to offset 0x0218. +//It was decided by public consensus to map writes to this address to match Uniracers, primarily +//because it is the only game observed to do this, but also because mapping to this address does +//not contradict any of our findings, because we have no findings whatsoever on this behavior. +//Think of this what you will, I openly admit that this is a hack. But it is more accurate than +//writing to the 'expected' address set by $2102,$2103, and will catch problems in software that +//accidentally accesses OAM during active display by virtue of not returning the expected data. + +uint8 bPPU::oam_mmio_read(uint16 addr) { + addr &= 0x03ff; + if(addr & 0x0200) addr &= 0x021f; + uint8 data; + + if(regs.display_disabled == true) { + data = memory::oam[addr]; + } else { + if(cpu.vcounter() < (!overscan() ? 225 : 240)) { + data = memory::oam[0x0218]; + } else { + data = memory::oam[addr]; + } + } + + return data; +} + +void bPPU::oam_mmio_write(uint16 addr, uint8 data) { + addr &= 0x03ff; + if(addr & 0x0200) addr &= 0x021f; + + sprite_list_valid = false; + + if(regs.display_disabled == true) { + memory::oam[addr] = data; + } else { + if(cpu.vcounter() < (!overscan() ? 225 : 240)) { + memory::oam[0x0218] = data; + } else { + memory::oam[addr] = data; + } + } +} + +//NOTE: CGRAM writes during hblank are valid. During active display, the actual address the +//data is written to varies, as the S-PPU itself changes the address. Like OAM, we do not know +//the exact algorithm used, but we have zero known examples of any commercial software that +//attempts to do this. Therefore, the addresses are mapped to 0x01ff. There is nothing special +//about this address, it is simply more accurate to invalidate the 'expected' address than not. + +uint8 bPPU::cgram_mmio_read(uint16 addr) { + addr &= 0x01ff; + uint8 data; + + if(regs.display_disabled == true) { + data = memory::cgram[addr]; + } else { + uint16 v = cpu.vcounter(); + uint16 h = cpu.hcounter(); + if(v < (!overscan() ? 225 : 240) && h >= 128 && h < 1096) { + data = memory::cgram[0x01ff] & 0x7f; + } else { + data = memory::cgram[addr]; + } + } + + if(addr & 1) data &= 0x7f; + return data; +} + +void bPPU::cgram_mmio_write(uint16 addr, uint8 data) { + addr &= 0x01ff; + if(addr & 1) data &= 0x7f; + + if(regs.display_disabled == true) { + memory::cgram[addr] = data; + } else { + uint16 v = cpu.vcounter(); + uint16 h = cpu.hcounter(); + if(v < (!overscan() ? 225 : 240) && h >= 128 && h < 1096) { + memory::cgram[0x01ff] = data & 0x7f; + } else { + memory::cgram[addr] = data; + } + } +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/memory/memory.hpp b/libmednahawk/src/snes/src/ppu/bppu/memory/memory.hpp new file mode 100644 index 0000000000..77b221e8b3 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/memory/memory.hpp @@ -0,0 +1,10 @@ +uint16 get_vram_address(); + +debugvirtual uint8 vram_mmio_read(uint16 addr); +debugvirtual void vram_mmio_write(uint16 addr, uint8 data); + +debugvirtual uint8 oam_mmio_read(uint16 addr); +debugvirtual void oam_mmio_write(uint16 addr, uint8 data); + +debugvirtual uint8 cgram_mmio_read(uint16 addr); +debugvirtual void cgram_mmio_write(uint16 addr, uint8 data); diff --git a/libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.cpp b/libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.cpp new file mode 100644 index 0000000000..cc698ad535 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.cpp @@ -0,0 +1,671 @@ +#ifdef BPPU_CPP + +//INIDISP +void bPPU::mmio_w2100(uint8 value) { + if(regs.display_disabled == true && cpu.vcounter() == (!overscan() ? 225 : 240)) { + regs.oam_addr = regs.oam_baseaddr << 1; + regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; + } + + regs.display_disabled = !!(value & 0x80); + regs.display_brightness = value & 15; +} + +//OBSEL +void bPPU::mmio_w2101(uint8 value) { + regs.oam_basesize = (value >> 5) & 7; + regs.oam_nameselect = (value >> 3) & 3; + regs.oam_tdaddr = (value & 3) << 14; +} + +//OAMADDL +void bPPU::mmio_w2102(uint8 data) { + regs.oam_baseaddr = (regs.oam_baseaddr & ~0xff) | (data << 0); + regs.oam_baseaddr &= 0x01ff; + regs.oam_addr = regs.oam_baseaddr << 1; + regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; +} + +//OAMADDH +void bPPU::mmio_w2103(uint8 data) { + regs.oam_priority = !!(data & 0x80); + regs.oam_baseaddr = (regs.oam_baseaddr & 0xff) | (data << 8); + regs.oam_baseaddr &= 0x01ff; + regs.oam_addr = regs.oam_baseaddr << 1; + regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; +} + +//OAMDATA +void bPPU::mmio_w2104(uint8 data) { + if(regs.oam_addr & 0x0200) { + oam_mmio_write(regs.oam_addr, data); + } else if((regs.oam_addr & 1) == 0) { + regs.oam_latchdata = data; + } else { + oam_mmio_write((regs.oam_addr & ~1) + 0, regs.oam_latchdata); + oam_mmio_write((regs.oam_addr & ~1) + 1, data); + } + + regs.oam_addr++; + regs.oam_addr &= 0x03ff; + regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; +} + +//BGMODE +void bPPU::mmio_w2105(uint8 value) { + regs.bg_tilesize[BG4] = !!(value & 0x80); + regs.bg_tilesize[BG3] = !!(value & 0x40); + regs.bg_tilesize[BG2] = !!(value & 0x20); + regs.bg_tilesize[BG1] = !!(value & 0x10); + regs.bg3_priority = !!(value & 0x08); + regs.bg_mode = (value & 7); +} + +//MOSAIC +void bPPU::mmio_w2106(uint8 value) { + regs.mosaic_size = (value >> 4) & 15; + regs.mosaic_enabled[BG4] = !!(value & 0x08); + regs.mosaic_enabled[BG3] = !!(value & 0x04); + regs.mosaic_enabled[BG2] = !!(value & 0x02); + regs.mosaic_enabled[BG1] = !!(value & 0x01); +} + +//BG1SC +void bPPU::mmio_w2107(uint8 value) { + regs.bg_scaddr[BG1] = (value & 0x7c) << 9; + regs.bg_scsize[BG1] = value & 3; +} + +//BG2SC +void bPPU::mmio_w2108(uint8 value) { + regs.bg_scaddr[BG2] = (value & 0x7c) << 9; + regs.bg_scsize[BG2] = value & 3; +} + +//BG3SC +void bPPU::mmio_w2109(uint8 value) { + regs.bg_scaddr[BG3] = (value & 0x7c) << 9; + regs.bg_scsize[BG3] = value & 3; +} + +//BG4SC +void bPPU::mmio_w210a(uint8 value) { + regs.bg_scaddr[BG4] = (value & 0x7c) << 9; + regs.bg_scsize[BG4] = value & 3; +} + +//BG12NBA +void bPPU::mmio_w210b(uint8 value) { + regs.bg_tdaddr[BG1] = (value & 0x07) << 13; + regs.bg_tdaddr[BG2] = (value & 0x70) << 9; +} + +//BG34NBA +void bPPU::mmio_w210c(uint8 value) { + regs.bg_tdaddr[BG3] = (value & 0x07) << 13; + regs.bg_tdaddr[BG4] = (value & 0x70) << 9; +} + +//BG1HOFS +void bPPU::mmio_w210d(uint8 value) { + regs.m7_hofs = (value << 8) | regs.m7_latch; + regs.m7_latch = value; + + regs.bg_hofs[BG1] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG1] >> 8) & 7); + regs.bg_ofslatch = value; +} + +//BG1VOFS +void bPPU::mmio_w210e(uint8 value) { + regs.m7_vofs = (value << 8) | regs.m7_latch; + regs.m7_latch = value; + + regs.bg_vofs[BG1] = (value << 8) | (regs.bg_ofslatch); + regs.bg_ofslatch = value; +} + +//BG2HOFS +void bPPU::mmio_w210f(uint8 value) { + regs.bg_hofs[BG2] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG2] >> 8) & 7); + regs.bg_ofslatch = value; +} + +//BG2VOFS +void bPPU::mmio_w2110(uint8 value) { + regs.bg_vofs[BG2] = (value << 8) | (regs.bg_ofslatch); + regs.bg_ofslatch = value; +} + +//BG3HOFS +void bPPU::mmio_w2111(uint8 value) { + regs.bg_hofs[BG3] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG3] >> 8) & 7); + regs.bg_ofslatch = value; +} + +//BG3VOFS +void bPPU::mmio_w2112(uint8 value) { + regs.bg_vofs[BG3] = (value << 8) | (regs.bg_ofslatch); + regs.bg_ofslatch = value; +} + +//BG4HOFS +void bPPU::mmio_w2113(uint8 value) { + regs.bg_hofs[BG4] = (value << 8) | (regs.bg_ofslatch & ~7) | ((regs.bg_hofs[BG4] >> 8) & 7); + regs.bg_ofslatch = value; +} + +//BG4VOFS +void bPPU::mmio_w2114(uint8 value) { + regs.bg_vofs[BG4] = (value << 8) | (regs.bg_ofslatch); + regs.bg_ofslatch = value; +} + +//VMAIN +void bPPU::mmio_w2115(uint8 value) { + regs.vram_incmode = !!(value & 0x80); + regs.vram_mapping = (value >> 2) & 3; + switch(value & 3) { + case 0: regs.vram_incsize = 1; break; + case 1: regs.vram_incsize = 32; break; + case 2: regs.vram_incsize = 128; break; + case 3: regs.vram_incsize = 128; break; + } +} + +//VMADDL +void bPPU::mmio_w2116(uint8 value) { + regs.vram_addr = (regs.vram_addr & 0xff00) | value; + uint16 addr = get_vram_address(); + regs.vram_readbuffer = vram_mmio_read(addr + 0); + regs.vram_readbuffer |= vram_mmio_read(addr + 1) << 8; +} + +//VMADDH +void bPPU::mmio_w2117(uint8 value) { + regs.vram_addr = (value << 8) | (regs.vram_addr & 0x00ff); + uint16 addr = get_vram_address(); + regs.vram_readbuffer = vram_mmio_read(addr + 0); + regs.vram_readbuffer |= vram_mmio_read(addr + 1) << 8; +} + +//VMDATAL +void bPPU::mmio_w2118(uint8 value) { +uint16 addr = get_vram_address(); + vram_mmio_write(addr, value); + bg_tiledata_state[TILE_2BIT][(addr >> 4)] = 1; + bg_tiledata_state[TILE_4BIT][(addr >> 5)] = 1; + bg_tiledata_state[TILE_8BIT][(addr >> 6)] = 1; + + if(regs.vram_incmode == 0) { + regs.vram_addr += regs.vram_incsize; + } +} + +//VMDATAH +void bPPU::mmio_w2119(uint8 value) { +uint16 addr = get_vram_address() + 1; + vram_mmio_write(addr, value); + bg_tiledata_state[TILE_2BIT][(addr >> 4)] = 1; + bg_tiledata_state[TILE_4BIT][(addr >> 5)] = 1; + bg_tiledata_state[TILE_8BIT][(addr >> 6)] = 1; + + if(regs.vram_incmode == 1) { + regs.vram_addr += regs.vram_incsize; + } +} + +//M7SEL +void bPPU::mmio_w211a(uint8 value) { + regs.mode7_repeat = (value >> 6) & 3; + regs.mode7_vflip = !!(value & 0x02); + regs.mode7_hflip = !!(value & 0x01); +} + +//M7A +void bPPU::mmio_w211b(uint8 value) { + regs.m7a = (value << 8) | regs.m7_latch; + regs.m7_latch = value; +} + +//M7B +void bPPU::mmio_w211c(uint8 value) { + regs.m7b = (value << 8) | regs.m7_latch; + regs.m7_latch = value; +} + +//M7C +void bPPU::mmio_w211d(uint8 value) { + regs.m7c = (value << 8) | regs.m7_latch; + regs.m7_latch = value; +} + +//M7D +void bPPU::mmio_w211e(uint8 value) { + regs.m7d = (value << 8) | regs.m7_latch; + regs.m7_latch = value; +} + +//M7X +void bPPU::mmio_w211f(uint8 value) { + regs.m7x = (value << 8) | regs.m7_latch; + regs.m7_latch = value; +} + +//M7Y +void bPPU::mmio_w2120(uint8 value) { + regs.m7y = (value << 8) | regs.m7_latch; + regs.m7_latch = value; +} + +//CGADD +void bPPU::mmio_w2121(uint8 value) { + regs.cgram_addr = value << 1; +} + +//CGDATA +//note: CGRAM palette data format is 15-bits +//(0,bbbbb,ggggg,rrrrr). Highest bit is ignored, +//as evidenced by $213b CGRAM data reads. +// +//anomie indicates writes to CGDATA work the same +//as writes to OAMDATA's low table. need to verify +//this on hardware. +void bPPU::mmio_w2122(uint8 value) { + if(!(regs.cgram_addr & 1)) { + regs.cgram_latchdata = value; + } else { + cgram_mmio_write((regs.cgram_addr & 0x01fe), regs.cgram_latchdata); + cgram_mmio_write((regs.cgram_addr & 0x01fe) + 1, value & 0x7f); + } + regs.cgram_addr++; + regs.cgram_addr &= 0x01ff; +} + +//W12SEL +void bPPU::mmio_w2123(uint8 value) { + regs.window2_enabled[BG2] = !!(value & 0x80); + regs.window2_invert [BG2] = !!(value & 0x40); + regs.window1_enabled[BG2] = !!(value & 0x20); + regs.window1_invert [BG2] = !!(value & 0x10); + regs.window2_enabled[BG1] = !!(value & 0x08); + regs.window2_invert [BG1] = !!(value & 0x04); + regs.window1_enabled[BG1] = !!(value & 0x02); + regs.window1_invert [BG1] = !!(value & 0x01); +} + +//W34SEL +void bPPU::mmio_w2124(uint8 value) { + regs.window2_enabled[BG4] = !!(value & 0x80); + regs.window2_invert [BG4] = !!(value & 0x40); + regs.window1_enabled[BG4] = !!(value & 0x20); + regs.window1_invert [BG4] = !!(value & 0x10); + regs.window2_enabled[BG3] = !!(value & 0x08); + regs.window2_invert [BG3] = !!(value & 0x04); + regs.window1_enabled[BG3] = !!(value & 0x02); + regs.window1_invert [BG3] = !!(value & 0x01); +} + +//WOBJSEL +void bPPU::mmio_w2125(uint8 value) { + regs.window2_enabled[COL] = !!(value & 0x80); + regs.window2_invert [COL] = !!(value & 0x40); + regs.window1_enabled[COL] = !!(value & 0x20); + regs.window1_invert [COL] = !!(value & 0x10); + regs.window2_enabled[OAM] = !!(value & 0x08); + regs.window2_invert [OAM] = !!(value & 0x04); + regs.window1_enabled[OAM] = !!(value & 0x02); + regs.window1_invert [OAM] = !!(value & 0x01); +} + +//WH0 +void bPPU::mmio_w2126(uint8 value) { + regs.window1_left = value; +} + +//WH1 +void bPPU::mmio_w2127(uint8 value) { + regs.window1_right = value; +} + +//WH2 +void bPPU::mmio_w2128(uint8 value) { + regs.window2_left = value; +} + +//WH3 +void bPPU::mmio_w2129(uint8 value) { + regs.window2_right = value; +} + +//WBGLOG +void bPPU::mmio_w212a(uint8 value) { + regs.window_mask[BG4] = (value >> 6) & 3; + regs.window_mask[BG3] = (value >> 4) & 3; + regs.window_mask[BG2] = (value >> 2) & 3; + regs.window_mask[BG1] = (value ) & 3; +} + +//WOBJLOG +void bPPU::mmio_w212b(uint8 value) { + regs.window_mask[COL] = (value >> 2) & 3; + regs.window_mask[OAM] = (value ) & 3; +} + +//TM +void bPPU::mmio_w212c(uint8 value) { + regs.bg_enabled[OAM] = !!(value & 0x10); + regs.bg_enabled[BG4] = !!(value & 0x08); + regs.bg_enabled[BG3] = !!(value & 0x04); + regs.bg_enabled[BG2] = !!(value & 0x02); + regs.bg_enabled[BG1] = !!(value & 0x01); +} + +//TS +void bPPU::mmio_w212d(uint8 value) { + regs.bgsub_enabled[OAM] = !!(value & 0x10); + regs.bgsub_enabled[BG4] = !!(value & 0x08); + regs.bgsub_enabled[BG3] = !!(value & 0x04); + regs.bgsub_enabled[BG2] = !!(value & 0x02); + regs.bgsub_enabled[BG1] = !!(value & 0x01); +} + +//TMW +void bPPU::mmio_w212e(uint8 value) { + regs.window_enabled[OAM] = !!(value & 0x10); + regs.window_enabled[BG4] = !!(value & 0x08); + regs.window_enabled[BG3] = !!(value & 0x04); + regs.window_enabled[BG2] = !!(value & 0x02); + regs.window_enabled[BG1] = !!(value & 0x01); +} + +//TSW +void bPPU::mmio_w212f(uint8 value) { + regs.sub_window_enabled[OAM] = !!(value & 0x10); + regs.sub_window_enabled[BG4] = !!(value & 0x08); + regs.sub_window_enabled[BG3] = !!(value & 0x04); + regs.sub_window_enabled[BG2] = !!(value & 0x02); + regs.sub_window_enabled[BG1] = !!(value & 0x01); +} + +//CGWSEL +void bPPU::mmio_w2130(uint8 value) { + regs.color_mask = (value >> 6) & 3; + regs.colorsub_mask = (value >> 4) & 3; + regs.addsub_mode = !!(value & 0x02); + regs.direct_color = !!(value & 0x01); +} + +//CGADDSUB +void bPPU::mmio_w2131(uint8 value) { + regs.color_mode = !!(value & 0x80); + regs.color_halve = !!(value & 0x40); + regs.color_enabled[BACK] = !!(value & 0x20); + regs.color_enabled[OAM] = !!(value & 0x10); + regs.color_enabled[BG4] = !!(value & 0x08); + regs.color_enabled[BG3] = !!(value & 0x04); + regs.color_enabled[BG2] = !!(value & 0x02); + regs.color_enabled[BG1] = !!(value & 0x01); +} + +//COLDATA +void bPPU::mmio_w2132(uint8 value) { + if(value & 0x80) regs.color_b = value & 0x1f; + if(value & 0x40) regs.color_g = value & 0x1f; + if(value & 0x20) regs.color_r = value & 0x1f; + + regs.color_rgb = (regs.color_r) + | (regs.color_g << 5) + | (regs.color_b << 10); +} + +//SETINI +void bPPU::mmio_w2133(uint8 value) { + regs.mode7_extbg = !!(value & 0x40); + regs.pseudo_hires = !!(value & 0x08); + regs.overscan = !!(value & 0x04); + regs.oam_interlace = !!(value & 0x02); + regs.interlace = !!(value & 0x01); + + display.overscan = regs.overscan; + sprite_list_valid = false; +} + +//MPYL +uint8 bPPU::mmio_r2134() { +uint32 r; + r = ((int16)regs.m7a * (int8)(regs.m7b >> 8)); + regs.ppu1_mdr = r; + return regs.ppu1_mdr; +} + +//MPYM +uint8 bPPU::mmio_r2135() { +uint32 r; + r = ((int16)regs.m7a * (int8)(regs.m7b >> 8)); + regs.ppu1_mdr = r >> 8; + return regs.ppu1_mdr; +} + +//MPYH +uint8 bPPU::mmio_r2136() { +uint32 r; + r = ((int16)regs.m7a * (int8)(regs.m7b >> 8)); + regs.ppu1_mdr = r >> 16; + return regs.ppu1_mdr; +} + +//SLHV +uint8 bPPU::mmio_r2137() { + if(cpu.pio() & 0x80) { + latch_counters(); + } + return cpu.regs.mdr; +} + +//OAMDATAREAD +uint8 bPPU::mmio_r2138() { + regs.ppu1_mdr = oam_mmio_read(regs.oam_addr); + + regs.oam_addr++; + regs.oam_addr &= 0x03ff; + regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; + + return regs.ppu1_mdr; +} + +//VMDATALREAD +uint8 bPPU::mmio_r2139() { +uint16 addr = get_vram_address(); + regs.ppu1_mdr = regs.vram_readbuffer; + if(regs.vram_incmode == 0) { + addr &= 0xfffe; + regs.vram_readbuffer = vram_mmio_read(addr + 0); + regs.vram_readbuffer |= vram_mmio_read(addr + 1) << 8; + regs.vram_addr += regs.vram_incsize; + } + return regs.ppu1_mdr; +} + +//VMDATAHREAD +uint8 bPPU::mmio_r213a() { +uint16 addr = get_vram_address() + 1; + regs.ppu1_mdr = regs.vram_readbuffer >> 8; + if(regs.vram_incmode == 1) { + addr &= 0xfffe; + regs.vram_readbuffer = vram_mmio_read(addr + 0); + regs.vram_readbuffer |= vram_mmio_read(addr + 1) << 8; + regs.vram_addr += regs.vram_incsize; + } + return regs.ppu1_mdr; +} + +//CGDATAREAD +//note: CGRAM palette data is 15-bits (0,bbbbb,ggggg,rrrrr) +//therefore, the high byte read from each color does not +//update bit 7 of the PPU2 MDR. +uint8 bPPU::mmio_r213b() { + if(!(regs.cgram_addr & 1)) { + regs.ppu2_mdr = cgram_mmio_read(regs.cgram_addr) & 0xff; + } else { + regs.ppu2_mdr &= 0x80; + regs.ppu2_mdr |= cgram_mmio_read(regs.cgram_addr) & 0x7f; + } + regs.cgram_addr++; + regs.cgram_addr &= 0x01ff; + return regs.ppu2_mdr; +} + +//OPHCT +uint8 bPPU::mmio_r213c() { + if(!regs.latch_hcounter) { + regs.ppu2_mdr = regs.hcounter & 0xff; + } else { + regs.ppu2_mdr &= 0xfe; + regs.ppu2_mdr |= (regs.hcounter >> 8) & 1; + } + regs.latch_hcounter ^= 1; + return regs.ppu2_mdr; +} + +//OPVCT +uint8 bPPU::mmio_r213d() { + if(!regs.latch_vcounter) { + regs.ppu2_mdr = regs.vcounter & 0xff; + } else { + regs.ppu2_mdr &= 0xfe; + regs.ppu2_mdr |= (regs.vcounter >> 8) & 1; + } + regs.latch_vcounter ^= 1; + return regs.ppu2_mdr; +} + +//STAT77 +uint8 bPPU::mmio_r213e() { +uint8 r = 0x00; + r |= (regs.time_over) ? 0x80 : 0x00; + r |= (regs.range_over) ? 0x40 : 0x00; + r |= (regs.ppu1_mdr & 0x10); + r |= (ppu1_version & 0x0f); + regs.ppu1_mdr = r; + return regs.ppu1_mdr; +} + +//STAT78 +uint8 bPPU::mmio_r213f() { +uint8 r = 0x00; + regs.latch_hcounter = 0; + regs.latch_vcounter = 0; + + r |= cpu.field() << 7; + if(!(cpu.pio() & 0x80)) { + r |= 0x40; + } else if(regs.counters_latched == true) { + r |= 0x40; + regs.counters_latched = false; + } + r |= (regs.ppu2_mdr & 0x20); + r |= (region << 4); //0 = NTSC, 1 = PAL + r |= (ppu2_version & 0x0f); + regs.ppu2_mdr = r; + return regs.ppu2_mdr; +} + +uint8 bPPU::mmio_read(unsigned addr) { + scheduler.sync_cpuppu(); + + switch(addr & 0xffff) { + case 0x2104: + case 0x2105: + case 0x2106: + case 0x2108: + case 0x2109: + case 0x210a: + case 0x2114: + case 0x2115: + case 0x2116: + case 0x2118: + case 0x2119: + case 0x211a: + case 0x2124: + case 0x2125: + case 0x2126: + case 0x2128: + case 0x2129: + case 0x212a: return regs.ppu1_mdr; + case 0x2134: return mmio_r2134(); //MPYL + case 0x2135: return mmio_r2135(); //MPYM + case 0x2136: return mmio_r2136(); //MPYH + case 0x2137: return mmio_r2137(); //SLHV + case 0x2138: return mmio_r2138(); //OAMDATAREAD + case 0x2139: return mmio_r2139(); //VMDATALREAD + case 0x213a: return mmio_r213a(); //VMDATAHREAD + case 0x213b: return mmio_r213b(); //CGDATAREAD + case 0x213c: return mmio_r213c(); //OPHCT + case 0x213d: return mmio_r213d(); //OPVCT + case 0x213e: return mmio_r213e(); //STAT77 + case 0x213f: return mmio_r213f(); //STAT78 + } + + return cpu.regs.mdr; +} + +void bPPU::mmio_write(unsigned addr, uint8 data) { + scheduler.sync_cpuppu(); + + switch(addr & 0xffff) { + case 0x2100: return mmio_w2100(data); //INIDISP + case 0x2101: return mmio_w2101(data); //OBSEL + case 0x2102: return mmio_w2102(data); //OAMADDL + case 0x2103: return mmio_w2103(data); //OAMADDH + case 0x2104: return mmio_w2104(data); //OAMDATA + case 0x2105: return mmio_w2105(data); //BGMODE + case 0x2106: return mmio_w2106(data); //MOSAIC + case 0x2107: return mmio_w2107(data); //BG1SC + case 0x2108: return mmio_w2108(data); //BG2SC + case 0x2109: return mmio_w2109(data); //BG3SC + case 0x210a: return mmio_w210a(data); //BG4SC + case 0x210b: return mmio_w210b(data); //BG12NBA + case 0x210c: return mmio_w210c(data); //BG34NBA + case 0x210d: return mmio_w210d(data); //BG1HOFS + case 0x210e: return mmio_w210e(data); //BG1VOFS + case 0x210f: return mmio_w210f(data); //BG2HOFS + case 0x2110: return mmio_w2110(data); //BG2VOFS + case 0x2111: return mmio_w2111(data); //BG3HOFS + case 0x2112: return mmio_w2112(data); //BG3VOFS + case 0x2113: return mmio_w2113(data); //BG4HOFS + case 0x2114: return mmio_w2114(data); //BG4VOFS + case 0x2115: return mmio_w2115(data); //VMAIN + case 0x2116: return mmio_w2116(data); //VMADDL + case 0x2117: return mmio_w2117(data); //VMADDH + case 0x2118: return mmio_w2118(data); //VMDATAL + case 0x2119: return mmio_w2119(data); //VMDATAH + case 0x211a: return mmio_w211a(data); //M7SEL + case 0x211b: return mmio_w211b(data); //M7A + case 0x211c: return mmio_w211c(data); //M7B + case 0x211d: return mmio_w211d(data); //M7C + case 0x211e: return mmio_w211e(data); //M7D + case 0x211f: return mmio_w211f(data); //M7X + case 0x2120: return mmio_w2120(data); //M7Y + case 0x2121: return mmio_w2121(data); //CGADD + case 0x2122: return mmio_w2122(data); //CGDATA + case 0x2123: return mmio_w2123(data); //W12SEL + case 0x2124: return mmio_w2124(data); //W34SEL + case 0x2125: return mmio_w2125(data); //WOBJSEL + case 0x2126: return mmio_w2126(data); //WH0 + case 0x2127: return mmio_w2127(data); //WH1 + case 0x2128: return mmio_w2128(data); //WH2 + case 0x2129: return mmio_w2129(data); //WH3 + case 0x212a: return mmio_w212a(data); //WBGLOG + case 0x212b: return mmio_w212b(data); //WOBJLOG + case 0x212c: return mmio_w212c(data); //TM + case 0x212d: return mmio_w212d(data); //TS + case 0x212e: return mmio_w212e(data); //TMW + case 0x212f: return mmio_w212f(data); //TSW + case 0x2130: return mmio_w2130(data); //CGWSEL + case 0x2131: return mmio_w2131(data); //CGADDSUB + case 0x2132: return mmio_w2132(data); //COLDATA + case 0x2133: return mmio_w2133(data); //SETINI + } +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.hpp b/libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.hpp new file mode 100644 index 0000000000..53f41bb38b --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/mmio/mmio.hpp @@ -0,0 +1,198 @@ +struct { + //open bus support + uint8 ppu1_mdr, ppu2_mdr; + + //bg line counters + uint16 bg_y[4]; + + //$2100 + bool display_disabled; + uint8 display_brightness; + + //$2101 + uint8 oam_basesize; + uint8 oam_nameselect; + uint16 oam_tdaddr; + + //$2102-$2103 + uint16 oam_baseaddr; + uint16 oam_addr; + bool oam_priority; + uint8 oam_firstsprite; + + //$2104 + uint8 oam_latchdata; + + //$2105 + bool bg_tilesize[4]; + bool bg3_priority; + uint8 bg_mode; + + //$2106 + uint8 mosaic_size; + bool mosaic_enabled[4]; + uint16 mosaic_countdown; + + //$2107-$210a + uint16 bg_scaddr[4]; + uint8 bg_scsize[4]; + + //$210b-$210c + uint16 bg_tdaddr[4]; + + //$210d-$2114 + uint8 bg_ofslatch; + uint16 m7_hofs, m7_vofs; + uint16 bg_hofs[4]; + uint16 bg_vofs[4]; + + //$2115 + bool vram_incmode; + uint8 vram_mapping; + uint8 vram_incsize; + + //$2116-$2117 + uint16 vram_addr; + + //$211a + uint8 mode7_repeat; + bool mode7_vflip; + bool mode7_hflip; + + //$211b-$2120 + uint8 m7_latch; + uint16 m7a, m7b, m7c, m7d, m7x, m7y; + + //$2121 + uint16 cgram_addr; + + //$2122 + uint8 cgram_latchdata; + + //$2123-$2125 + bool window1_enabled[6]; + bool window1_invert [6]; + bool window2_enabled[6]; + bool window2_invert [6]; + + //$2126-$2129 + uint8 window1_left, window1_right; + uint8 window2_left, window2_right; + + //$212a-$212b + uint8 window_mask[6]; + + //$212c-$212d + bool bg_enabled[5], bgsub_enabled[5]; + + //$212e-$212f + bool window_enabled[5], sub_window_enabled[5]; + + //$2130 + uint8 color_mask, colorsub_mask; + bool addsub_mode; + bool direct_color; + + //$2131 + bool color_mode, color_halve; + bool color_enabled[6]; + + //$2132 + uint8 color_r, color_g, color_b; + uint16 color_rgb; + + //$2133 + //overscan and interlace are checked once per frame to + //determine if entire frame should be interlaced/non-interlace + //and overscan adjusted. therefore, the variables act sort of + //like a buffer, but they do still affect internal rendering + bool mode7_extbg; + bool pseudo_hires; + bool overscan; + uint16 scanlines; + bool oam_interlace; + bool interlace; + + //$2137 + uint16 hcounter, vcounter; + bool latch_hcounter, latch_vcounter; + bool counters_latched; + + //$2139-$213a + uint16 vram_readbuffer; + + //$213e + bool time_over, range_over; + uint16 oam_itemcount, oam_tilecount; +} regs; + +void mmio_w2100(uint8 value); //INIDISP +void mmio_w2101(uint8 value); //OBSEL +void mmio_w2102(uint8 value); //OAMADDL +void mmio_w2103(uint8 value); //OAMADDH +void mmio_w2104(uint8 value); //OAMDATA +void mmio_w2105(uint8 value); //BGMODE +void mmio_w2106(uint8 value); //MOSAIC +void mmio_w2107(uint8 value); //BG1SC +void mmio_w2108(uint8 value); //BG2SC +void mmio_w2109(uint8 value); //BG3SC +void mmio_w210a(uint8 value); //BG4SC +void mmio_w210b(uint8 value); //BG12NBA +void mmio_w210c(uint8 value); //BG34NBA +void mmio_w210d(uint8 value); //BG1HOFS +void mmio_w210e(uint8 value); //BG1VOFS +void mmio_w210f(uint8 value); //BG2HOFS +void mmio_w2110(uint8 value); //BG2VOFS +void mmio_w2111(uint8 value); //BG3HOFS +void mmio_w2112(uint8 value); //BG3VOFS +void mmio_w2113(uint8 value); //BG4HOFS +void mmio_w2114(uint8 value); //BG4VOFS +void mmio_w2115(uint8 value); //VMAIN +void mmio_w2116(uint8 value); //VMADDL +void mmio_w2117(uint8 value); //VMADDH +void mmio_w2118(uint8 value); //VMDATAL +void mmio_w2119(uint8 value); //VMDATAH +void mmio_w211a(uint8 value); //M7SEL +void mmio_w211b(uint8 value); //M7A +void mmio_w211c(uint8 value); //M7B +void mmio_w211d(uint8 value); //M7C +void mmio_w211e(uint8 value); //M7D +void mmio_w211f(uint8 value); //M7X +void mmio_w2120(uint8 value); //M7Y +void mmio_w2121(uint8 value); //CGADD +void mmio_w2122(uint8 value); //CGDATA +void mmio_w2123(uint8 value); //W12SEL +void mmio_w2124(uint8 value); //W34SEL +void mmio_w2125(uint8 value); //WOBJSEL +void mmio_w2126(uint8 value); //WH0 +void mmio_w2127(uint8 value); //WH1 +void mmio_w2128(uint8 value); //WH2 +void mmio_w2129(uint8 value); //WH3 +void mmio_w212a(uint8 value); //WBGLOG +void mmio_w212b(uint8 value); //WOBJLOG +void mmio_w212c(uint8 value); //TM +void mmio_w212d(uint8 value); //TS +void mmio_w212e(uint8 value); //TMW +void mmio_w212f(uint8 value); //TSW +void mmio_w2130(uint8 value); //CGWSEL +void mmio_w2131(uint8 value); //CGADDSUB +void mmio_w2132(uint8 value); //COLDATA +void mmio_w2133(uint8 value); //SETINI + +uint8 mmio_r2134(); //MPYL +uint8 mmio_r2135(); //MPYM +uint8 mmio_r2136(); //MPYH +uint8 mmio_r2137(); //SLHV +uint8 mmio_r2138(); //OAMDATAREAD +uint8 mmio_r2139(); //VMDATALREAD +uint8 mmio_r213a(); //VMDATAHREAD +uint8 mmio_r213b(); //CGDATAREAD +uint8 mmio_r213c(); //OPHCT +uint8 mmio_r213d(); //OPVCT +uint8 mmio_r213e(); //STAT77 +uint8 mmio_r213f(); //STAT78 + +uint8 mmio_read(unsigned addr); +void mmio_write(unsigned addr, uint8 data); + +void latch_counters(); diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/addsub.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/addsub.cpp new file mode 100644 index 0000000000..fbd1373a16 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/addsub.cpp @@ -0,0 +1,25 @@ +#ifdef BPPU_CPP + +//color addition / subtraction +//thanks go to blargg for the optimized algorithms +inline uint16 bPPU::addsub(uint32 x, uint32 y, bool halve) { + if(!regs.color_mode) { + if(!halve) { + unsigned sum = x + y; + unsigned carry = (sum - ((x ^ y) & 0x0421)) & 0x8420; + return (sum - carry) | (carry - (carry >> 5)); + } else { + return (x + y - ((x ^ y) & 0x0421)) >> 1; + } + } else { + unsigned diff = x - y + 0x8420; + unsigned borrow = (diff - ((x ^ y) & 0x8420)) & 0x8420; + if(!halve) { + return (diff - borrow) & (borrow - (borrow >> 5)); + } else { + return (((diff - borrow) & (borrow - (borrow >> 5))) & 0x7bde) >> 1; + } + } +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/bg.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/bg.cpp new file mode 100644 index 0000000000..883617e31d --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/bg.cpp @@ -0,0 +1,205 @@ +#ifdef BPPU_CPP + +//called once at the start of every rendered scanline +void bPPU::update_bg_info() { + const unsigned hires = (regs.bg_mode == 5 || regs.bg_mode == 6); + const unsigned width = (!hires ? 256 : 512); + + for(unsigned bg = 0; bg < 4; bg++) { + bg_info[bg].th = (regs.bg_tilesize[bg] ? 4 : 3); + bg_info[bg].tw = (hires ? 4 : bg_info[bg].th); + + bg_info[bg].mx = (bg_info[bg].th == 4 ? (width << 1) : width); + bg_info[bg].my = bg_info[bg].mx; + if(regs.bg_scsize[bg] & 0x01) bg_info[bg].mx <<= 1; + if(regs.bg_scsize[bg] & 0x02) bg_info[bg].my <<= 1; + bg_info[bg].mx--; + bg_info[bg].my--; + + bg_info[bg].scy = (regs.bg_scsize[bg] & 0x02) ? (32 << 5) : 0; + bg_info[bg].scx = (regs.bg_scsize[bg] & 0x01) ? (32 << 5) : 0; + if(regs.bg_scsize[bg] == 3) bg_info[bg].scy <<= 1; + } +} + +template +uint16 bPPU::bg_get_tile(uint16 x, uint16 y) { + x = (x & bg_info[bg].mx) >> bg_info[bg].tw; + y = (y & bg_info[bg].my) >> bg_info[bg].th; + + uint16 pos = ((y & 0x1f) << 5) + (x & 0x1f); + if(y & 0x20) pos += bg_info[bg].scy; + if(x & 0x20) pos += bg_info[bg].scx; + + const uint16 addr = regs.bg_scaddr[bg] + (pos << 1); + return memory::vram[addr] + (memory::vram[addr + 1] << 8); +} + +#define setpixel_main(x) \ + if(pixel_cache[x].pri_main < tile_pri) { \ + pixel_cache[x].pri_main = tile_pri; \ + pixel_cache[x].bg_main = bg; \ + pixel_cache[x].src_main = col; \ + pixel_cache[x].ce_main = false; \ + } + +#define setpixel_sub(x) \ + if(pixel_cache[x].pri_sub < tile_pri) { \ + pixel_cache[x].pri_sub = tile_pri; \ + pixel_cache[x].bg_sub = bg; \ + pixel_cache[x].src_sub = col; \ + pixel_cache[x].ce_sub = false; \ + } + +template +void bPPU::render_line_bg(uint8 pri0_pos, uint8 pri1_pos) { + if(regs.bg_enabled[bg] == false && regs.bgsub_enabled[bg] == false) return; + + const bool bg_enabled = regs.bg_enabled[bg]; + const bool bgsub_enabled = regs.bgsub_enabled[bg]; + + const uint16 opt_valid_bit = (bg == BG1) ? 0x2000 : (bg == BG2) ? 0x4000 : 0x0000; + const uint8 bgpal_index = (mode == 0 ? (bg << 5) : 0); + + const uint8 pal_size = 2 << color_depth; //<<2 (*4), <<4 (*16), <<8 (*256) + const uint16 tile_mask = 0x0fff >> color_depth; //0x0fff, 0x07ff, 0x03ff + //4 + color_depth = >>(4-6) -- / {16, 32, 64 } bytes/tile + //index is a tile number count to add to base tile number + const unsigned tiledata_index = regs.bg_tdaddr[bg] >> (4 + color_depth); + + const uint8 *bg_td = bg_tiledata[color_depth]; + const uint8 *bg_td_state = bg_tiledata_state[color_depth]; + + const uint8 tile_width = bg_info[bg].tw; + const uint8 tile_height = bg_info[bg].th; + const uint16 mask_x = bg_info[bg].mx; //screen width mask + const uint16 mask_y = bg_info[bg].my; //screen height mask + + uint16 y = regs.bg_y[bg]; + uint16 hscroll = regs.bg_hofs[bg]; + uint16 vscroll = regs.bg_vofs[bg]; + + const unsigned hires = (mode == 5 || mode == 6); + const unsigned width = (!hires ? 256 : 512); + + if(hires) { + hscroll <<= 1; + if(regs.interlace) y = (y << 1) + field(); + } + + uint16 hval, vval; + uint16 tile_pri, tile_num; + uint8 pal_index, pal_num; + uint16 hoffset, voffset, opt_x, col; + bool mirror_x, mirror_y; + + const uint8 *tile_ptr; + const uint16 *mtable = mosaic_table[regs.mosaic_enabled[bg] ? regs.mosaic_size : 0]; + const bool is_opt_mode = (mode == 2 || mode == 4 || mode == 6); + const bool is_direct_color_mode = (regs.direct_color == true && bg == BG1 && (mode == 3 || mode == 4)); + + build_window_tables(bg); + const uint8 *wt_main = window[bg].main; + const uint8 *wt_sub = window[bg].sub; + + uint16 prev_x = 0xffff, prev_y = 0xffff, prev_optx = 0xffff; + for(uint16 x = 0; x < width; x++) { + hoffset = mtable[x] + hscroll; + voffset = y + vscroll; + + if(is_opt_mode) { + opt_x = (x + (hscroll & 7)); + + //tile 0 is unaffected by OPT mode... + if(opt_x >= 8) { + //cache tile data in hval, vval if possible + if((opt_x >> 3) != (prev_optx >> 3)) { + prev_optx = opt_x; + + hval = bg_get_tile((opt_x - 8) + (regs.bg_hofs[BG3] & ~7), regs.bg_vofs[BG3]); + if(mode != 4) { + vval = bg_get_tile((opt_x - 8) + (regs.bg_hofs[BG3] & ~7), regs.bg_vofs[BG3] + 8); + } + } + + if(mode == 4) { + if(hval & opt_valid_bit) { + if(!(hval & 0x8000)) { + hoffset = opt_x + (hval & ~7); + } else { + voffset = y + hval; + } + } + } else { + if(hval & opt_valid_bit) { + hoffset = opt_x + (hval & ~7); + } + if(vval & opt_valid_bit) { + voffset = y + vval; + } + } + } + } + + hoffset &= mask_x; + voffset &= mask_y; + + if((hoffset >> 3) != prev_x || (voffset >> 3) != prev_y) { + prev_x = (hoffset >> 3); + prev_y = (voffset >> 3); + + tile_num = bg_get_tile(hoffset, voffset); //format = vhopppcc cccccccc + mirror_y = (tile_num & 0x8000); + mirror_x = (tile_num & 0x4000); + tile_pri = (tile_num & 0x2000) ? pri1_pos : pri0_pos; + pal_num = ((tile_num >> 10) & 7); + pal_index = bgpal_index + (pal_num << pal_size); + + if(tile_width == 4) { //16x16 horizontal tile mirroring + if((bool)(hoffset & 8) != mirror_x) tile_num++; + } + + if(tile_height == 4) { //16x16 vertical tile mirroring + if((bool)(voffset & 8) != mirror_y) tile_num += 16; + } + + tile_num &= 0x03ff; + tile_num += tiledata_index; + tile_num &= tile_mask; + + if(bg_td_state[tile_num] == 1) { + render_bg_tile(tile_num); + } + + if(mirror_y) voffset ^= 7; //invert y tile pos + tile_ptr = bg_td + (tile_num * 64) + ((voffset & 7) * 8); + } + + if(mirror_x) hoffset ^= 7; //invert x tile pos + col = *(tile_ptr + (hoffset & 7)); + if(col) { + if(is_direct_color_mode) { + col = get_direct_color(pal_num, col); + } else { + col = get_palette(col + pal_index); + } + + if(!hires) { + if(bg_enabled == true && !wt_main[x]) { setpixel_main(x); } + if(bgsub_enabled == true && !wt_sub[x]) { setpixel_sub(x); } + } else { + int hx = x >> 1; + if(x & 1) { + if(bg_enabled == true && !wt_main[hx]) { setpixel_main(hx); } + } else { + if(bgsub_enabled == true && !wt_sub[hx]) { setpixel_sub(hx); } + } + } + } + } +} + +#undef setpixel_main +#undef setpixel_sub + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/cache.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/cache.cpp new file mode 100644 index 0000000000..b49338831a --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/cache.cpp @@ -0,0 +1,147 @@ +#ifdef BPPU_CPP + +#define render_bg_tile_line_2bpp(mask) \ + col = !!(d0 & mask) << 0; \ + col += !!(d1 & mask) << 1; \ + *dest++ = col + +#define render_bg_tile_line_4bpp(mask) \ + col = !!(d0 & mask) << 0; \ + col += !!(d1 & mask) << 1; \ + col += !!(d2 & mask) << 2; \ + col += !!(d3 & mask) << 3; \ + *dest++ = col + +#define render_bg_tile_line_8bpp(mask) \ + col = !!(d0 & mask) << 0; \ + col += !!(d1 & mask) << 1; \ + col += !!(d2 & mask) << 2; \ + col += !!(d3 & mask) << 3; \ + col += !!(d4 & mask) << 4; \ + col += !!(d5 & mask) << 5; \ + col += !!(d6 & mask) << 6; \ + col += !!(d7 & mask) << 7; \ + *dest++ = col + +template +void bPPU::render_bg_tile(uint16 tile_num) { + uint8 col, d0, d1, d2, d3, d4, d5, d6, d7; + + if(color_depth == COLORDEPTH_4) { + uint8 *dest = (uint8*)bg_tiledata[TILE_2BIT] + tile_num * 64; + unsigned pos = tile_num * 16; + unsigned y = 8; + while(y--) { + d0 = memory::vram[pos ]; + d1 = memory::vram[pos + 1]; + render_bg_tile_line_2bpp(0x80); + render_bg_tile_line_2bpp(0x40); + render_bg_tile_line_2bpp(0x20); + render_bg_tile_line_2bpp(0x10); + render_bg_tile_line_2bpp(0x08); + render_bg_tile_line_2bpp(0x04); + render_bg_tile_line_2bpp(0x02); + render_bg_tile_line_2bpp(0x01); + pos += 2; + } + bg_tiledata_state[TILE_2BIT][tile_num] = 0; + } + + if(color_depth == COLORDEPTH_16) { + uint8 *dest = (uint8*)bg_tiledata[TILE_4BIT] + tile_num * 64; + unsigned pos = tile_num * 32; + unsigned y = 8; + while(y--) { + d0 = memory::vram[pos ]; + d1 = memory::vram[pos + 1]; + d2 = memory::vram[pos + 16]; + d3 = memory::vram[pos + 17]; + render_bg_tile_line_4bpp(0x80); + render_bg_tile_line_4bpp(0x40); + render_bg_tile_line_4bpp(0x20); + render_bg_tile_line_4bpp(0x10); + render_bg_tile_line_4bpp(0x08); + render_bg_tile_line_4bpp(0x04); + render_bg_tile_line_4bpp(0x02); + render_bg_tile_line_4bpp(0x01); + pos += 2; + } + bg_tiledata_state[TILE_4BIT][tile_num] = 0; + } + + if(color_depth == COLORDEPTH_256) { + uint8 *dest = (uint8*)bg_tiledata[TILE_8BIT] + tile_num * 64; + unsigned pos = tile_num * 64; + unsigned y = 8; + while(y--) { + d0 = memory::vram[pos ]; + d1 = memory::vram[pos + 1]; + d2 = memory::vram[pos + 16]; + d3 = memory::vram[pos + 17]; + d4 = memory::vram[pos + 32]; + d5 = memory::vram[pos + 33]; + d6 = memory::vram[pos + 48]; + d7 = memory::vram[pos + 49]; + render_bg_tile_line_8bpp(0x80); + render_bg_tile_line_8bpp(0x40); + render_bg_tile_line_8bpp(0x20); + render_bg_tile_line_8bpp(0x10); + render_bg_tile_line_8bpp(0x08); + render_bg_tile_line_8bpp(0x04); + render_bg_tile_line_8bpp(0x02); + render_bg_tile_line_8bpp(0x01); + pos += 2; + } + bg_tiledata_state[TILE_8BIT][tile_num] = 0; + } +} + +#undef render_bg_tile_line_2bpp +#undef render_bg_tile_line_4bpp +#undef render_bg_tile_line_8bpp + +void bPPU::flush_pixel_cache() { + uint16 main = get_palette(0); + uint16 sub = (regs.pseudo_hires || regs.bg_mode == 5 || regs.bg_mode == 6) + ? main + : regs.color_rgb; + + unsigned i = 255; + do { + pixel_cache[i].src_main = main; + pixel_cache[i].src_sub = sub; + pixel_cache[i].bg_main = BACK; + pixel_cache[i].bg_sub = BACK; + pixel_cache[i].ce_main = false; + pixel_cache[i].ce_sub = false; + pixel_cache[i].pri_main = 0; + pixel_cache[i].pri_sub = 0; + } while(i--); +} + +void bPPU::alloc_tiledata_cache() { + bg_tiledata[TILE_2BIT] = new uint8_t[262144](); + bg_tiledata[TILE_4BIT] = new uint8_t[131072](); + bg_tiledata[TILE_8BIT] = new uint8_t[ 65536](); + bg_tiledata_state[TILE_2BIT] = new uint8_t[ 4096](); + bg_tiledata_state[TILE_4BIT] = new uint8_t[ 2048](); + bg_tiledata_state[TILE_8BIT] = new uint8_t[ 1024](); +} + +//marks all tiledata cache entries as dirty +void bPPU::flush_tiledata_cache() { + for(unsigned i = 0; i < 4096; i++) bg_tiledata_state[TILE_2BIT][i] = 1; + for(unsigned i = 0; i < 2048; i++) bg_tiledata_state[TILE_4BIT][i] = 1; + for(unsigned i = 0; i < 1024; i++) bg_tiledata_state[TILE_8BIT][i] = 1; +} + +void bPPU::free_tiledata_cache() { + delete[] bg_tiledata[TILE_2BIT]; + delete[] bg_tiledata[TILE_4BIT]; + delete[] bg_tiledata[TILE_8BIT]; + delete[] bg_tiledata_state[TILE_2BIT]; + delete[] bg_tiledata_state[TILE_4BIT]; + delete[] bg_tiledata_state[TILE_8BIT]; +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/line.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/line.cpp new file mode 100644 index 0000000000..395d615353 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/line.cpp @@ -0,0 +1,139 @@ +#ifdef BPPU_CPP + +inline uint16 bPPU::get_palette(uint8 index) { + const unsigned addr = index << 1; + return memory::cgram[addr] + (memory::cgram[addr + 1] << 8); +} + +//p = 00000bgr +//t = BBGGGRRR +//r = 0BBb00GGGg0RRRr0 +inline uint16 bPPU::get_direct_color(uint8 p, uint8 t) { + return ((t & 7) << 2) | ((p & 1) << 1) | + (((t >> 3) & 7) << 7) | (((p >> 1) & 1) << 6) | + ((t >> 6) << 13) | ((p >> 2) << 12); +} + +inline uint16 bPPU::get_pixel_normal(uint32 x) { + pixel_t &p = pixel_cache[x]; + uint16 src_main, src_sub; + uint8 bg_sub; + src_main = p.src_main; + + if(!regs.addsub_mode) { + bg_sub = BACK; + src_sub = regs.color_rgb; + } else { + bg_sub = p.bg_sub; + src_sub = p.src_sub; + } + + if(!window[COL].main[x]) { + if(!window[COL].sub[x]) { + return 0x0000; + } + src_main = 0x0000; + } + + if(!p.ce_main && regs.color_enabled[p.bg_main] && window[COL].sub[x]) { + bool halve = false; + if(regs.color_halve && window[COL].main[x]) { + if(regs.addsub_mode && bg_sub == BACK); + else { + halve = true; + } + } + return addsub(src_main, src_sub, halve); + } + + return src_main; +} + +inline uint16 bPPU::get_pixel_swap(uint32 x) { + pixel_t &p = pixel_cache[x]; + uint16 src_main, src_sub; + uint8 bg_sub; + src_main = p.src_sub; + + if(!regs.addsub_mode) { + bg_sub = BACK; + src_sub = regs.color_rgb; + } else { + bg_sub = p.bg_main; + src_sub = p.src_main; + } + + if(!window[COL].main[x]) { + if(!window[COL].sub[x]) { + return 0x0000; + } + src_main = 0x0000; + } + + if(!p.ce_sub && regs.color_enabled[p.bg_sub] && window[COL].sub[x]) { + bool halve = false; + if(regs.color_halve && window[COL].main[x]) { + if(regs.addsub_mode && bg_sub == BACK); + else { + halve = true; + } + } + return addsub(src_main, src_sub, halve); + } + + return src_main; +} + +inline void bPPU::render_line_output() { + uint16 *ptr = (uint16*)output + (line * 1024) + + ((interlace() && field()) ? 512 : 0); + uint16 *luma_b = light_table_b [regs.display_brightness]; + uint16 *luma_gr = light_table_gr[regs.display_brightness]; + uint16 curr, prev; + + if(!regs.pseudo_hires && regs.bg_mode != 5 && regs.bg_mode != 6) { + if(regs.display_brightness == 15) { + for(unsigned x = 0; x < 256; x++) { + *ptr++ = get_pixel_normal(x); + } + } else { + for(unsigned x = 0; x < 256; x++) { + curr = get_pixel_normal(x); + *ptr++ = luma_b[curr >> 10] + luma_gr[curr & 0x3ff]; + } + } + } else { + if(regs.display_brightness == 15) { + for(unsigned x = 0, prev = 0; x < 256; x++) { + curr = get_pixel_swap(x); + *ptr++ = (prev + curr - ((prev ^ curr) & 0x0421)) >> 1; + prev = curr; + + curr = get_pixel_normal(x); + *ptr++ = (prev + curr - ((prev ^ curr) & 0x0421)) >> 1; + prev = curr; + + } + } else { + for(unsigned x = 0, prev = 0; x < 256; x++) { + curr = get_pixel_swap(x); + curr = luma_b[curr >> 10] + luma_gr[curr & 0x3ff]; + *ptr++ = (prev + curr - ((prev ^ curr) & 0x0421)) >> 1; + prev = curr; + + curr = get_pixel_normal(x); + curr = luma_b[curr >> 10] + luma_gr[curr & 0x3ff]; + *ptr++ = (prev + curr - ((prev ^ curr) & 0x0421)) >> 1; + prev = curr; + } + } + } +} + +inline void bPPU::render_line_clear() { + uint16 *ptr = (uint16*)output + (line * 1024) + ((interlace() && field()) ? 512 : 0); + uint16 width = (!regs.pseudo_hires && regs.bg_mode != 5 && regs.bg_mode != 6) ? 256 : 512; + memset(ptr, 0, width * 2 * sizeof(uint16)); +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/mode7.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/mode7.cpp new file mode 100644 index 0000000000..efe0afbd93 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/mode7.cpp @@ -0,0 +1,139 @@ +#ifdef BPPU_CPP + +//bsnes mode7 renderer +// +//base algorithm written by anomie +//bsnes implementation written by byuu +// +//supports mode 7 + extbg + rotate + zoom + direct color + scrolling + m7sel + windowing + mosaic +//interlace and pseudo-hires support are automatic via main rendering routine + +//13-bit sign extend +//--s---vvvvvvvvvv -> ssssssvvvvvvvvvv +#define CLIP(x) ( ((x) & 0x2000) ? ( (x) | ~0x03ff) : ((x) & 0x03ff) ) + +template +void bPPU::render_line_mode7(uint8 pri0_pos, uint8 pri1_pos) { + if(regs.bg_enabled[bg] == false && regs.bgsub_enabled[bg] == false) return; + + int32 px, py; + int32 tx, ty, tile, palette; + + int32 a = sclip<16>(cache.m7a); + int32 b = sclip<16>(cache.m7b); + int32 c = sclip<16>(cache.m7c); + int32 d = sclip<16>(cache.m7d); + + int32 cx = sclip<13>(cache.m7x); + int32 cy = sclip<13>(cache.m7y); + int32 hofs = sclip<13>(cache.m7_hofs); + int32 vofs = sclip<13>(cache.m7_vofs); + + int _pri, _x; + bool _bg_enabled = regs.bg_enabled[bg]; + bool _bgsub_enabled = regs.bgsub_enabled[bg]; + + build_window_tables(bg); + uint8 *wt_main = window[bg].main; + uint8 *wt_sub = window[bg].sub; + + int32 y = (regs.mode7_vflip == false ? line : 255 - line); + + uint16 *mtable_x, *mtable_y; + if(bg == BG1) { + mtable_x = (uint16*)mosaic_table[(regs.mosaic_enabled[BG1] == true) ? regs.mosaic_size : 0]; + mtable_y = (uint16*)mosaic_table[(regs.mosaic_enabled[BG1] == true) ? regs.mosaic_size : 0]; + } else { //bg == BG2 + //Mode7 EXTBG BG2 uses BG1 mosaic enable to control vertical mosaic, + //and BG2 mosaic enable to control horizontal mosaic... + mtable_x = (uint16*)mosaic_table[(regs.mosaic_enabled[BG2] == true) ? regs.mosaic_size : 0]; + mtable_y = (uint16*)mosaic_table[(regs.mosaic_enabled[BG1] == true) ? regs.mosaic_size : 0]; + } + + int32 psx = ((a * CLIP(hofs - cx)) & ~63) + ((b * CLIP(vofs - cy)) & ~63) + ((b * mtable_y[y]) & ~63) + (cx << 8); + int32 psy = ((c * CLIP(hofs - cx)) & ~63) + ((d * CLIP(vofs - cy)) & ~63) + ((d * mtable_y[y]) & ~63) + (cy << 8); + for(int32 x = 0; x < 256; x++) { + px = psx + (a * mtable_x[x]); + py = psy + (c * mtable_x[x]); + + //mask floating-point bits (low 8 bits) + px >>= 8; + py >>= 8; + + switch(regs.mode7_repeat) { + case 0: //screen repetition outside of screen area + case 1: { //same as case 0 + px &= 1023; + py &= 1023; + tx = ((px >> 3) & 127); + ty = ((py >> 3) & 127); + tile = memory::vram[(ty * 128 + tx) << 1]; + palette = memory::vram[(((tile << 6) + ((py & 7) << 3) + (px & 7)) << 1) + 1]; + } break; + case 2: { //palette color 0 outside of screen area + if(px < 0 || px > 1023 || py < 0 || py > 1023) { + palette = 0; + } else { + px &= 1023; + py &= 1023; + tx = ((px >> 3) & 127); + ty = ((py >> 3) & 127); + tile = memory::vram[(ty * 128 + tx) << 1]; + palette = memory::vram[(((tile << 6) + ((py & 7) << 3) + (px & 7)) << 1) + 1]; + } + } break; + case 3: { //character 0 repetition outside of screen area + if(px < 0 || px > 1023 || py < 0 || py > 1023) { + tile = 0; + } else { + px &= 1023; + py &= 1023; + tx = ((px >> 3) & 127); + ty = ((py >> 3) & 127); + tile = memory::vram[(ty * 128 + tx) << 1]; + } + palette = memory::vram[(((tile << 6) + ((py & 7) << 3) + (px & 7)) << 1) + 1]; + } break; + } + + if(bg == BG1) { + _pri = pri0_pos; + } else { + _pri = (palette >> 7) ? pri1_pos : pri0_pos; + palette &= 0x7f; + } + + if(!palette) continue; + + _x = (regs.mode7_hflip == false) ? (x) : (255 - x); + + uint32 col; + if(regs.direct_color == true && bg == BG1) { + //direct color mode does not apply to bg2, as it is only 128 colors... + col = get_direct_color(0, palette); + } else { + col = get_palette(palette); + } + + if(regs.bg_enabled[bg] == true && !wt_main[_x]) { + if(pixel_cache[_x].pri_main < _pri) { + pixel_cache[_x].pri_main = _pri; + pixel_cache[_x].bg_main = bg; + pixel_cache[_x].src_main = col; + pixel_cache[_x].ce_main = false; + } + } + if(regs.bgsub_enabled[bg] == true && !wt_sub[_x]) { + if(pixel_cache[_x].pri_sub < _pri) { + pixel_cache[_x].pri_sub = _pri; + pixel_cache[_x].bg_sub = bg; + pixel_cache[_x].src_sub = col; + pixel_cache[_x].ce_sub = false; + } + } + } +} + +#undef CLIP + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/oam.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/oam.cpp new file mode 100644 index 0000000000..4be74c4807 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/oam.cpp @@ -0,0 +1,217 @@ +#ifdef BPPU_CPP + +void bPPU::build_sprite_list() { + if(sprite_list_valid == true) return; + sprite_list_valid = true; + + const uint8 *tableA = memory::oam.data(); + const uint8 *tableB = memory::oam.data() + 512; + + for(unsigned i = 0; i < 128; i++) { + const bool x = *tableB & (1 << ((i & 3) << 1)); //0x01, 0x04, 0x10, 0x40 + const bool size = *tableB & (2 << ((i & 3) << 1)); //0x02, 0x08, 0x20, 0x80 + + switch(cache.oam_basesize) { + case 0: sprite_list[i].width = (!size) ? 8 : 16; + sprite_list[i].height = (!size) ? 8 : 16; + break; + case 1: sprite_list[i].width = (!size) ? 8 : 32; + sprite_list[i].height = (!size) ? 8 : 32; + break; + case 2: sprite_list[i].width = (!size) ? 8 : 64; + sprite_list[i].height = (!size) ? 8 : 64; + break; + case 3: sprite_list[i].width = (!size) ? 16 : 32; + sprite_list[i].height = (!size) ? 16 : 32; + break; + case 4: sprite_list[i].width = (!size) ? 16 : 64; + sprite_list[i].height = (!size) ? 16 : 64; + break; + case 5: sprite_list[i].width = (!size) ? 32 : 64; + sprite_list[i].height = (!size) ? 32 : 64; + break; + case 6: sprite_list[i].width = (!size) ? 16 : 32; + sprite_list[i].height = (!size) ? 32 : 64; + if(regs.oam_interlace && !size) sprite_list[i].height = 16; + //32x64 height is not affected by oam_interlace setting + break; + case 7: sprite_list[i].width = (!size) ? 16 : 32; + sprite_list[i].height = (!size) ? 32 : 32; + if(regs.oam_interlace && !size) sprite_list[i].height = 16; + break; + } + + sprite_list[i].x = (x << 8) + tableA[0]; + sprite_list[i].y = (tableA[1] + 1) & 0xff; + sprite_list[i].character = tableA[2]; + sprite_list[i].vflip = tableA[3] & 0x80; + sprite_list[i].hflip = tableA[3] & 0x40; + sprite_list[i].priority = (tableA[3] >> 4) & 3; + sprite_list[i].palette = (tableA[3] >> 1) & 7; + sprite_list[i].use_nameselect = tableA[3] & 1; + + tableA += 4; + if((i & 3) == 3) tableB++; + } +} + +bool bPPU::is_sprite_on_scanline() { + //if sprite is entirely offscreen and doesn't wrap around to the left side of the screen, + //then it is not counted. this *should* be 256, and not 255, even though dot 256 is offscreen. + sprite_item *spr = &sprite_list[active_sprite]; + if(spr->x > 256 && (spr->x + spr->width - 1) < 512) return false; + + int spr_height = (regs.oam_interlace == false) ? (spr->height) : (spr->height >> 1); + if(line >= spr->y && line < (spr->y + spr_height)) return true; + if((spr->y + spr_height) >= 256 && line < ((spr->y + spr_height) & 255)) return true; + return false; +} + +void bPPU::load_oam_tiles() { + sprite_item *spr = &sprite_list[active_sprite]; + uint16 tile_width = spr->width >> 3; + int x = spr->x; + int y = (line - spr->y) & 0xff; + if(regs.oam_interlace == true) { + y <<= 1; + } + + if(spr->vflip == true) { + if(spr->width == spr->height) { + y = (spr->height - 1) - y; + } else { + y = (y < spr->width) ? ((spr->width - 1) - y) : (spr->width + ((spr->width - 1) - (y - spr->width))); + } + } + + if(regs.oam_interlace == true) { + y = (spr->vflip == false) ? (y + field()) : (y - field()); + } + + x &= 511; + y &= 255; + + uint16 tdaddr = cache.oam_tdaddr; + uint16 chrx = (spr->character ) & 15; + uint16 chry = (spr->character >> 4) & 15; + if(spr->use_nameselect == true) { + tdaddr += (256 * 32) + (cache.oam_nameselect << 13); + } + chry += (y >> 3); + chry &= 15; + chry <<= 4; + + for(unsigned tx = 0; tx < tile_width; tx++) { + unsigned sx = (x + (tx << 3)) & 511; + //ignore sprites that are offscreen, x==256 is a special case that loads all tiles in OBJ + if(x != 256 && sx >= 256 && (sx + 7) < 512) continue; + + if(regs.oam_tilecount++ > 34) break; + unsigned n = regs.oam_tilecount - 1; + oam_tilelist[n].x = sx; + oam_tilelist[n].y = y; + oam_tilelist[n].pri = spr->priority; + oam_tilelist[n].pal = 128 + (spr->palette << 4); + oam_tilelist[n].hflip = spr->hflip; + + unsigned mx = (spr->hflip == false) ? tx : ((tile_width - 1) - tx); + unsigned pos = tdaddr + ((chry + ((chrx + mx) & 15)) << 5); + oam_tilelist[n].tile = (pos >> 5) & 0x07ff; + } +} + +void bPPU::render_oam_tile(int tile_num) { + oam_tileitem *t = &oam_tilelist[tile_num]; + uint8 *oam_td = (uint8*)bg_tiledata[COLORDEPTH_16]; + uint8 *oam_td_state = (uint8*)bg_tiledata_state[COLORDEPTH_16]; + + if(oam_td_state[t->tile] == 1) { + render_bg_tile(t->tile); + } + + unsigned sx = t->x; + uint8 *tile_ptr = (uint8*)oam_td + (t->tile << 6) + ((t->y & 7) << 3); + for(unsigned x = 0; x < 8; x++) { + sx &= 511; + if(sx < 256) { + unsigned col = *(tile_ptr + ((t->hflip == false) ? x : (7 - x))); + if(col) { + col += t->pal; + oam_line_pal[sx] = col; + oam_line_pri[sx] = t->pri; + } + } + sx++; + } +} + +void bPPU::render_line_oam_rto() { + build_sprite_list(); + + regs.oam_itemcount = 0; + regs.oam_tilecount = 0; + memset(oam_line_pri, OAM_PRI_NONE, 256); + memset(oam_itemlist, 0xff, 32); + for(int s = 0; s < 34; s++) oam_tilelist[s].tile = 0xffff; + + for(int s = 0; s < 128; s++) { + active_sprite = (s + regs.oam_firstsprite) & 127; + if(is_sprite_on_scanline() == false) continue; + if(regs.oam_itemcount++ > 32) break; + oam_itemlist[regs.oam_itemcount - 1] = (s + regs.oam_firstsprite) & 127; + } + + for(int s = 31; s >= 0; s--) { + if(oam_itemlist[s] == 0xff) continue; + active_sprite = oam_itemlist[s]; + load_oam_tiles(); + } + + regs.time_over |= (regs.oam_tilecount > 34); + regs.range_over |= (regs.oam_itemcount > 32); +} + +#define setpixel_main(x) \ + if(pixel_cache[x].pri_main < pri) { \ + pixel_cache[x].pri_main = pri; \ + pixel_cache[x].bg_main = OAM; \ + pixel_cache[x].src_main = get_palette(oam_line_pal[x]); \ + pixel_cache[x].ce_main = (oam_line_pal[x] < 192); \ + } +#define setpixel_sub(x) \ + if(pixel_cache[x].pri_sub < pri) { \ + pixel_cache[x].pri_sub = pri; \ + pixel_cache[x].bg_sub = OAM; \ + pixel_cache[x].src_sub = get_palette(oam_line_pal[x]); \ + pixel_cache[x].ce_sub = (oam_line_pal[x] < 192); \ + } + +void bPPU::render_line_oam(uint8 pri0_pos, uint8 pri1_pos, uint8 pri2_pos, uint8 pri3_pos) { + if(regs.bg_enabled[OAM] == false && regs.bgsub_enabled[OAM] == false) return; + + for(unsigned s = 0; s < 34; s++) { + if(oam_tilelist[s].tile == 0xffff) continue; + render_oam_tile(s); + } + + bool bg_enabled = regs.bg_enabled[OAM]; + bool bgsub_enabled = regs.bgsub_enabled[OAM]; + + build_window_tables(OAM); + uint8 *wt_main = window[OAM].main; + uint8 *wt_sub = window[OAM].sub; + + unsigned pri_tbl[4] = { pri0_pos, pri1_pos, pri2_pos, pri3_pos }; + for(int x = 0; x < 256; x++) { + if(oam_line_pri[x] == OAM_PRI_NONE) continue; + + unsigned pri = pri_tbl[oam_line_pri[x]]; + if(bg_enabled == true && !wt_main[x]) { setpixel_main(x); } + if(bgsub_enabled == true && !wt_sub[x]) { setpixel_sub(x); } + } +} + +#undef setpixel_main +#undef setpixel_sub + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/render.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/render.cpp new file mode 100644 index 0000000000..411ced3e7f --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/render.cpp @@ -0,0 +1,129 @@ +#ifdef BPPU_CPP + +#include "cache.cpp" +#include "windows.cpp" +#include "bg.cpp" +#include "oam.cpp" +#include "mode7.cpp" +#include "addsub.cpp" +#include "line.cpp" + +//Mode 0: -> +// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 +// BG4B, BG3B, OAM0, BG4A, BG3A, OAM1, BG2B, BG1B, OAM2, BG2A, BG1A, OAM3 +void bPPU::render_line_mode0() { + render_line_bg<0, BG1, COLORDEPTH_4>(8, 11); + render_line_bg<0, BG2, COLORDEPTH_4>(7, 10); + render_line_bg<0, BG3, COLORDEPTH_4>(2, 5); + render_line_bg<0, BG4, COLORDEPTH_4>(1, 4); + render_line_oam(3, 6, 9, 12); +} + +//Mode 1 (pri=1): -> +// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +// BG3B, OAM0, OAM1, BG2B, BG1B, OAM2, BG2A, BG1A, OAM3, BG3A +// +//Mode 1 (pri=0): -> +// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +// BG3B, OAM0, BG3A, OAM1, BG2B, BG1B, OAM2, BG2A, BG1A, OAM3 +void bPPU::render_line_mode1() { + if(regs.bg3_priority) { + render_line_bg<1, BG1, COLORDEPTH_16>(5, 8); + render_line_bg<1, BG2, COLORDEPTH_16>(4, 7); + render_line_bg<1, BG3, COLORDEPTH_4 >(1, 10); + render_line_oam(2, 3, 6, 9); + } else { + render_line_bg<1, BG1, COLORDEPTH_16>(6, 9); + render_line_bg<1, BG2, COLORDEPTH_16>(5, 8); + render_line_bg<1, BG3, COLORDEPTH_4 >(1, 3); + render_line_oam(2, 4, 7, 10); + } +} + +//Mode 2: -> +// 1, 2, 3, 4, 5, 6, 7, 8 +// BG2B, OAM0, BG1B, OAM1, BG2A, OAM2, BG1A, OAM3 +void bPPU::render_line_mode2() { + render_line_bg<2, BG1, COLORDEPTH_16>(3, 7); + render_line_bg<2, BG2, COLORDEPTH_16>(1, 5); + render_line_oam(2, 4, 6, 8); +} + +//Mode 3: -> +// 1, 2, 3, 4, 5, 6, 7, 8 +// BG2B, OAM0, BG1B, OAM1, BG2A, OAM2, BG1A, OAM3 +void bPPU::render_line_mode3() { + render_line_bg<3, BG1, COLORDEPTH_256>(3, 7); + render_line_bg<3, BG2, COLORDEPTH_16 >(1, 5); + render_line_oam(2, 4, 6, 8); +} + +//Mode 4: -> +// 1, 2, 3, 4, 5, 6, 7, 8 +// BG2B, OAM0, BG1B, OAM1, BG2A, OAM2, BG1A, OAM3 +void bPPU::render_line_mode4() { + render_line_bg<4, BG1, COLORDEPTH_256>(3, 7); + render_line_bg<4, BG2, COLORDEPTH_4 >(1, 5); + render_line_oam(2, 4, 6, 8); +} + +//Mode 5: -> +// 1, 2, 3, 4, 5, 6, 7, 8 +// BG2B, OAM0, BG1B, OAM1, BG2A, OAM2, BG1A, OAM3 +void bPPU::render_line_mode5() { + render_line_bg<5, BG1, COLORDEPTH_16>(3, 7); + render_line_bg<5, BG2, COLORDEPTH_4 >(1, 5); + render_line_oam(2, 4, 6, 8); +} + +//Mode 6: -> +// 1, 2, 3, 4, 5, 6 +// OAM0, BG1B, OAM1, OAM2, BG1A, OAM3 +void bPPU::render_line_mode6() { + render_line_bg<6, BG1, COLORDEPTH_16>(2, 5); + render_line_oam(1, 3, 4, 6); +} + +//Mode7: -> +// 1, 2, 3, 4, 5 +// OAM0, BG1n, OAM1, OAM2, OAM3 + +//Mode 7 EXTBG: -> +// 1, 2, 3, 4, 5, 6, 7 +// BG2B, OAM0, BG1n, OAM1, BG2A, OAM2, OAM3 +void bPPU::render_line_mode7() { + if(regs.mode7_extbg == false) { + render_line_mode7(2, 2); + render_line_oam(1, 3, 4, 5); + } else { + render_line_mode7(3, 3); + render_line_mode7(1, 5); + render_line_oam(2, 4, 6, 7); + } +} + +void bPPU::render_line() { + if(regs.display_disabled == true) { + render_line_clear(); + return; + } + + flush_pixel_cache(); + build_window_tables(COL); + update_bg_info(); + + switch(regs.bg_mode) { + case 0: render_line_mode0(); break; + case 1: render_line_mode1(); break; + case 2: render_line_mode2(); break; + case 3: render_line_mode3(); break; + case 4: render_line_mode4(); break; + case 5: render_line_mode5(); break; + case 6: render_line_mode6(); break; + case 7: render_line_mode7(); break; + } + + render_line_output(); +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/render.hpp b/libmednahawk/src/snes/src/ppu/bppu/render/render.hpp new file mode 100644 index 0000000000..cb3b6a3b11 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/render.hpp @@ -0,0 +1,97 @@ +//render.cpp +debugvirtual inline void render_line_mode0(); +debugvirtual inline void render_line_mode1(); +debugvirtual inline void render_line_mode2(); +debugvirtual inline void render_line_mode3(); +debugvirtual inline void render_line_mode4(); +debugvirtual inline void render_line_mode5(); +debugvirtual inline void render_line_mode6(); +debugvirtual inline void render_line_mode7(); + +//cache.cpp +enum { COLORDEPTH_4 = 0, COLORDEPTH_16 = 1, COLORDEPTH_256 = 2 }; +enum { TILE_2BIT = 0, TILE_4BIT = 1, TILE_8BIT = 2 }; + +struct pixel_t { + //bgr555 color data for main/subscreen pixels: 0x0000 = transparent / use palette color # 0 + //needs to be bgr555 instead of palette index for direct color mode ($2130 bit 0) to work + uint16 src_main, src_sub; + //indicates source of palette # for main/subscreen (BG1-4, OAM, or back) + uint8 bg_main, bg_sub; + //color_exemption -- true when bg == OAM && palette index >= 192, disables color add/sub effects + uint8 ce_main, ce_sub; + //priority level of src_n. to set src_n, + //the priority of the pixel must be >pri_n + uint8 pri_main, pri_sub; +} pixel_cache[256]; + +uint8 *bg_tiledata[3]; +uint8 *bg_tiledata_state[3]; //0 = valid, 1 = dirty + +template void render_bg_tile(uint16 tile_num); +inline void flush_pixel_cache(); +void alloc_tiledata_cache(); +void flush_tiledata_cache(); +void free_tiledata_cache(); + +//windows.cpp +struct window_t { + uint8 main[256], sub[256]; +} window[6]; + +void build_window_table(uint8 bg, bool mainscreen); +void build_window_tables(uint8 bg); + +//bg.cpp +struct { + uint16 tw, th; //tile width, height + uint16 mx, my; //screen mask x, y + uint16 scx, scy; //sc index offsets +} bg_info[4]; +void update_bg_info(); + +template uint16 bg_get_tile(uint16 x, uint16 y); +template void render_line_bg(uint8 pri0_pos, uint8 pri1_pos); + +//oam.cpp +struct sprite_item { + uint8 width, height; + uint16 x, y; + uint8 character; + bool use_nameselect; + bool vflip, hflip; + uint8 palette; + uint8 priority; +} sprite_list[128]; +bool sprite_list_valid; +unsigned active_sprite; + +uint8 oam_itemlist[32]; +struct oam_tileitem { + uint16 x, y, pri, pal, tile; + bool hflip; +} oam_tilelist[34]; + +enum { OAM_PRI_NONE = 4 }; +uint8 oam_line_pal[256], oam_line_pri[256]; + +void build_sprite_list(); +bool is_sprite_on_scanline(); +void load_oam_tiles(); +void render_oam_tile(int tile_num); +void render_line_oam_rto(); +void render_line_oam(uint8 pri0_pos, uint8 pri1_pos, uint8 pri2_pos, uint8 pri3_pos); + +//mode7.cpp +template void render_line_mode7(uint8 pri0_pos, uint8 pri1_pos); + +//addsub.cpp +inline uint16 addsub(uint32 x, uint32 y, bool halve); + +//line.cpp +inline uint16 get_palette(uint8 index); +inline uint16 get_direct_color(uint8 p, uint8 t); +inline uint16 get_pixel_normal(uint32 x); +inline uint16 get_pixel_swap(uint32 x); +void render_line_output(); +void render_line_clear(); diff --git a/libmednahawk/src/snes/src/ppu/bppu/render/windows.cpp b/libmednahawk/src/snes/src/ppu/bppu/render/windows.cpp new file mode 100644 index 0000000000..a3fdbed249 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/render/windows.cpp @@ -0,0 +1,70 @@ +#ifdef BPPU_CPP + +//screen: 0 = main, 1 = sub +void bPPU::build_window_table(uint8 bg, bool screen) { + bool set = 1, clr = 0; + uint8 *table = (screen == 0 ? window[bg].main : window[bg].sub); + + if(bg != COL) { + if(screen == 0 && regs.window_enabled[bg] == false) { + memset(table, 0, 256); + return; + } + if(screen == 1 && regs.sub_window_enabled[bg] == false) { + memset(table, 0, 256); + return; + } + } else { + switch(screen == 0 ? regs.color_mask : regs.colorsub_mask) { + case 0: memset(table, 1, 256); return; //always + case 3: memset(table, 0, 256); return; //never + case 1: set = 1, clr = 0; break; //inside window only + case 2: set = 0, clr = 1; break; //outside window only + } + } + + const uint16 window1_left = regs.window1_left; + const uint16 window1_right = regs.window1_right; + const uint16 window2_left = regs.window2_left; + const uint16 window2_right = regs.window2_right; + + if(regs.window1_enabled[bg] == false && regs.window2_enabled[bg] == false) { + memset(table, clr, 256); + return; + } + + if(regs.window1_enabled[bg] == true && regs.window2_enabled[bg] == false) { + if(regs.window1_invert[bg] == true) set ^= clr ^= set ^= clr; + for(unsigned x = 0; x < 256; x++) { + table[x] = (x >= window1_left && x <= window1_right) ? set : clr; + } + return; + } + + if(regs.window1_enabled[bg] == false && regs.window2_enabled[bg] == true) { + if(regs.window2_invert[bg] == true) set ^= clr ^= set ^= clr; + for(unsigned x = 0; x < 256; x++) { + table[x] = (x >= window2_left && x <= window2_right) ? set : clr; + } + return; + } + + for(unsigned x = 0; x < 256; x++) { + bool w1_mask = (x >= window1_left && x <= window1_right) ^ regs.window1_invert[bg]; + bool w2_mask = (x >= window2_left && x <= window2_right) ^ regs.window2_invert[bg]; + + switch(regs.window_mask[bg]) { + case 0: table[x] = (w1_mask | w2_mask) == 1 ? set : clr; break; //or + case 1: table[x] = (w1_mask & w2_mask) == 1 ? set : clr; break; //and + case 2: table[x] = (w1_mask ^ w2_mask) == 1 ? set : clr; break; //xor + case 3: table[x] = (w1_mask ^ w2_mask) == 0 ? set : clr; break; //xnor + } + } +} + +void bPPU::build_window_tables(uint8 bg) { + build_window_table(bg, 0); + build_window_table(bg, 1); +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/bppu/serialization.cpp b/libmednahawk/src/snes/src/ppu/bppu/serialization.cpp new file mode 100644 index 0000000000..7251f1683d --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/bppu/serialization.cpp @@ -0,0 +1,183 @@ +#ifdef BPPU_CPP + +void bPPU::serialize(serializer &s) { + PPU::serialize(s); + + s.integer(region); + s.integer(line); + + s.integer(display.interlace); + s.integer(display.overscan); + + s.integer(cache.oam_basesize); + s.integer(cache.oam_nameselect); + s.integer(cache.oam_tdaddr); + + s.integer(regs.ppu1_mdr); + s.integer(regs.ppu2_mdr); + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_y[n]); + + s.integer(regs.display_disabled); + s.integer(regs.display_brightness); + + s.integer(regs.oam_basesize); + s.integer(regs.oam_nameselect); + s.integer(regs.oam_tdaddr); + + s.integer(regs.oam_baseaddr); + s.integer(regs.oam_addr); + s.integer(regs.oam_priority); + s.integer(regs.oam_firstsprite); + + s.integer(regs.oam_latchdata); + + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_tilesize[n]); + s.integer(regs.bg3_priority); + s.integer(regs.bg_mode); + + s.integer(regs.mosaic_size); + for(unsigned n = 0; n < 4; n++) s.integer(regs.mosaic_enabled[n]); + s.integer(regs.mosaic_countdown); + + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_scaddr[n]); + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_scsize[n]); + + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_tdaddr[n]); + + s.integer(regs.bg_ofslatch); + s.integer(regs.m7_hofs); + s.integer(regs.m7_vofs); + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_hofs[n]); + for(unsigned n = 0; n < 4; n++) s.integer(regs.bg_vofs[n]); + + s.integer(regs.vram_incmode); + s.integer(regs.vram_mapping); + s.integer(regs.vram_incsize); + + s.integer(regs.vram_addr); + + s.integer(regs.mode7_repeat); + s.integer(regs.mode7_vflip); + s.integer(regs.mode7_hflip); + + s.integer(regs.m7_latch); + s.integer(regs.m7a); + s.integer(regs.m7b); + s.integer(regs.m7c); + s.integer(regs.m7d); + s.integer(regs.m7x); + s.integer(regs.m7y); + + s.integer(regs.cgram_addr); + + s.integer(regs.cgram_latchdata); + + for(unsigned n = 0; n < 6; n++) s.integer(regs.window1_enabled[n]); + for(unsigned n = 0; n < 6; n++) s.integer(regs.window1_invert [n]); + for(unsigned n = 0; n < 6; n++) s.integer(regs.window2_enabled[n]); + for(unsigned n = 0; n < 6; n++) s.integer(regs.window2_invert [n]); + + s.integer(regs.window1_left); + s.integer(regs.window1_right); + s.integer(regs.window2_left); + s.integer(regs.window2_right); + + for(unsigned n = 0; n < 6; n++) s.integer(regs.window_mask[n]); + for(unsigned n = 0; n < 5; n++) s.integer(regs.bg_enabled[n]); + for(unsigned n = 0; n < 5; n++) s.integer(regs.bgsub_enabled[n]); + for(unsigned n = 0; n < 5; n++) s.integer(regs.window_enabled[n]); + for(unsigned n = 0; n < 5; n++) s.integer(regs.sub_window_enabled[n]); + + s.integer(regs.color_mask); + s.integer(regs.colorsub_mask); + s.integer(regs.addsub_mode); + s.integer(regs.direct_color); + + s.integer(regs.color_mode); + s.integer(regs.color_halve); + for(unsigned n = 0; n < 6; n++) s.integer(regs.color_enabled[n]); + + s.integer(regs.color_r); + s.integer(regs.color_g); + s.integer(regs.color_b); + s.integer(regs.color_rgb); + + s.integer(regs.mode7_extbg); + s.integer(regs.pseudo_hires); + s.integer(regs.overscan); + s.integer(regs.scanlines); + s.integer(regs.oam_interlace); + s.integer(regs.interlace); + + s.integer(regs.hcounter); + s.integer(regs.vcounter); + s.integer(regs.latch_hcounter); + s.integer(regs.latch_vcounter); + s.integer(regs.counters_latched); + + s.integer(regs.vram_readbuffer); + + s.integer(regs.time_over); + s.integer(regs.range_over); + s.integer(regs.oam_itemcount); + s.integer(regs.oam_tilecount); + + for(unsigned n = 0; n < 256; n++) { + s.integer(pixel_cache[n].src_main); + s.integer(pixel_cache[n].src_sub); + s.integer(pixel_cache[n].bg_main); + s.integer(pixel_cache[n].bg_sub); + s.integer(pixel_cache[n].ce_main); + s.integer(pixel_cache[n].ce_sub); + s.integer(pixel_cache[n].pri_main); + s.integer(pixel_cache[n].pri_sub); + } + + //better to just take a small speed hit than store all of bg_tiledata[3][] ... + flush_tiledata_cache(); + + for(unsigned n = 0; n < 6; n++) { + s.array(window[n].main, 256); + s.array(window[n].sub, 256); + } + + for(unsigned n = 0; n < 4; n++) { + s.integer(bg_info[n].tw); + s.integer(bg_info[n].th); + s.integer(bg_info[n].mx); + s.integer(bg_info[n].my); + s.integer(bg_info[n].scx); + s.integer(bg_info[n].scy); + } + + for(unsigned n = 0; n < 128; n++) { + s.integer(sprite_list[n].width); + s.integer(sprite_list[n].height); + s.integer(sprite_list[n].x); + s.integer(sprite_list[n].y); + s.integer(sprite_list[n].character); + s.integer(sprite_list[n].use_nameselect); + s.integer(sprite_list[n].vflip); + s.integer(sprite_list[n].hflip); + s.integer(sprite_list[n].palette); + s.integer(sprite_list[n].priority); + } + s.integer(sprite_list_valid); + s.integer(active_sprite); + + s.array(oam_itemlist, 32); + + for(unsigned n = 0; n < 34; n++) { + s.integer(oam_tilelist[n].x); + s.integer(oam_tilelist[n].y); + s.integer(oam_tilelist[n].pri); + s.integer(oam_tilelist[n].pal); + s.integer(oam_tilelist[n].tile); + s.integer(oam_tilelist[n].hflip); + } + + s.array(oam_line_pal, 256); + s.array(oam_line_pri, 256); +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/ppu-debugger.cpp b/libmednahawk/src/snes/src/ppu/ppu-debugger.cpp new file mode 100644 index 0000000000..67ca21d12b --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/ppu-debugger.cpp @@ -0,0 +1,305 @@ +#ifdef PPU_CPP + +bool PPUDebugger::property(unsigned id, string &name, string &value) { + unsigned n = 0; + + //internal + if(id == n++) { name = "S-PPU1 MDR"; value = string::printf("0x%.2x", ppu1_mdr()); return true; } + if(id == n++) { name = "S-PPU2 MDR"; value = string::printf("0x%.2x", ppu2_mdr()); return true; } + + //$2100 + if(id == n++) { name = "$2100"; value = ""; return true; } + if(id == n++) { name = "Display Disable"; value = display_disable(); return true; } + if(id == n++) { name = "Display Brightness"; value = display_brightness(); return true; } + + //$2101 + if(id == n++) { name = "$2101"; value = ""; return true; } + if(id == n++) { name = "OAM Base Size"; value = oam_base_size(); return true; } + if(id == n++) { name = "OAM Name Select"; value = oam_name_select(); return true; } + if(id == n++) { name = "OAM Name Base Address"; value = string::printf("0x%.4x", oam_name_base_address()); return true; } + + //$2102-$2103 + if(id == n++) { name = "$2102-$2103"; value = ""; return true; } + if(id == n++) { name = "OAM Base Address"; value = string::printf("0x%.4x", oam_base_address()); return true; } + if(id == n++) { name = "OAM Priority"; value = oam_priority(); return true; } + + //$2105 + if(id == n++) { name = "$2105"; value = ""; return true; } + if(id == n++) { name = "BG1 Tile Size"; value = bg1_tile_size() ? "16x16" : "8x8"; return true; } + if(id == n++) { name = "BG2 Tile Size"; value = bg2_tile_size() ? "16x16" : "8x8"; return true; } + if(id == n++) { name = "BG3 Tile Size"; value = bg3_tile_size() ? "16x16" : "8x8"; return true; } + if(id == n++) { name = "BG4 Tile Size"; value = bg4_tile_size() ? "16x16" : "8x8"; return true; } + if(id == n++) { name = "BG3 Priority"; value = bg3_priority(); return true; } + if(id == n++) { name = "BG Mode"; value = bg_mode(); return true; } + + //$2106 + if(id == n++) { name = "$2106"; value = ""; return true; } + if(id == n++) { name = "Mosaic Size"; value = mosaic_size(); return true; } + if(id == n++) { name = "BG1 Mosaic Enable"; value = bg1_mosaic_enable(); return true; } + if(id == n++) { name = "BG2 Mosaic Enable"; value = bg2_mosaic_enable(); return true; } + if(id == n++) { name = "BG3 Mosaic Enable"; value = bg3_mosaic_enable(); return true; } + if(id == n++) { name = "BG4 Mosaic Enable"; value = bg4_mosaic_enable(); return true; } + + static char screen_size[4][8] = { "32x32", "32x64", "64x32", "64x64" }; + + //$2107 + if(id == n++) { name = "$2107"; value = ""; return true; } + if(id == n++) { name = "BG1 Screen Address"; value = string::printf("0x%.4x", bg1_screen_address()); return true; } + if(id == n++) { name = "BG1 Screen Size"; value = screen_size[bg1_screen_size()]; return true; } + + //$2108 + if(id == n++) { name = "$2108"; value = ""; return true; } + if(id == n++) { name = "BG2 Screen Address"; value = string::printf("0x%.4x", bg2_screen_address()); return true; } + if(id == n++) { name = "BG2 Screen Size"; value = screen_size[bg2_screen_size()]; return true; } + + //$2109 + if(id == n++) { name = "$2109"; value = ""; return true; } + if(id == n++) { name = "BG3 Screen Address"; value = string::printf("0x%.4x", bg3_screen_address()); return true; } + if(id == n++) { name = "BG3 Screen Size"; value = screen_size[bg3_screen_size()]; return true; } + + //$210a + if(id == n++) { name = "$210a"; value = ""; return true; } + if(id == n++) { name = "BG4 Screen Address"; value = string::printf("0x%.4x", bg4_screen_address()); return true; } + if(id == n++) { name = "BG4 Screen Size"; value = screen_size[bg4_screen_size()]; return true; } + + //$210b + if(id == n++) { name = "$210b"; value = ""; return true; } + if(id == n++) { name = "BG1 Name Base Address"; value = string::printf("0x%.4x", bg1_name_base_address()); return true; } + if(id == n++) { name = "BG2 Name Base Address"; value = string::printf("0x%.4x", bg2_name_base_address()); return true; } + + //$210c + if(id == n++) { name = "$210c"; value = ""; return true; } + if(id == n++) { name = "BG3 Name Base Address"; value = string::printf("0x%.4x", bg3_name_base_address()); return true; } + if(id == n++) { name = "BG4 Name Base Address"; value = string::printf("0x%.4x", bg4_name_base_address()); return true; } + + //$210d + if(id == n++) { name = "$210d"; value = ""; return true; } + if(id == n++) { name = "Mode 7 Scroll H-offset"; value = mode7_hoffset(); return true; } + if(id == n++) { name = "BG1 Scroll H-offset"; value = bg1_hoffset(); return true; } + + //$210e + if(id == n++) { name = "$210e"; value = ""; return true; } + if(id == n++) { name = "Mode 7 Scroll V-offset"; value = mode7_voffset(); return true; } + if(id == n++) { name = "BG1 Scroll V-offset"; value = bg1_voffset(); return true; } + + //$210f + if(id == n++) { name = "$210f"; value = ""; return true; } + if(id == n++) { name = "BG2 Scroll H-offset"; value = bg2_hoffset(); return true; } + + //$2110 + if(id == n++) { name = "$2110"; value = ""; return true; } + if(id == n++) { name = "BG2 Scroll V-offset"; value = bg2_voffset(); return true; } + + //$2111 + if(id == n++) { name = "$2111"; value = ""; return true; } + if(id == n++) { name = "BG3 Scroll H-offset"; value = bg3_hoffset(); return true; } + + //$2112 + if(id == n++) { name = "$2112"; value = ""; return true; } + if(id == n++) { name = "BG3 Scroll V-offset"; value = bg3_voffset(); return true; } + + //$2113 + if(id == n++) { name = "$2113"; value = ""; return true; } + if(id == n++) { name = "BG4 Scroll H-offset"; value = bg4_hoffset(); return true; } + + //$2114 + if(id == n++) { name = "$2114"; value = ""; return true; } + if(id == n++) { name = "BG4 Scroll V-offset"; value = bg4_voffset(); return true; } + + //$2115 + if(id == n++) { name = "$2115"; value = ""; return true; } + if(id == n++) { name = "VRAM Increment Mode"; value = (unsigned)vram_increment_mode(); return true; } + if(id == n++) { name = "VRAM Increment Formation"; value = vram_increment_formation(); return true; } + if(id == n++) { name = "VRAM Increment Size"; value = vram_increment_size(); return true; } + + //$2116-$2117 + if(id == n++) { name = "$2116-$2117"; value = ""; return true; } + if(id == n++) { name = "VRAM Address"; value = string::printf("0x%.4x", vram_address()); return true; } + + //$211a + if(id == n++) { name = "$211a"; value = ""; return true; } + if(id == n++) { name = "Mode 7 Repeat"; value = mode7_repeat(); return true; } + if(id == n++) { name = "Mode 7 V-flip"; value = mode7_vflip(); return true; } + if(id == n++) { name = "Mode 7 H-flip"; value = mode7_hflip(); return true; } + + //$211b + if(id == n++) { name = "$211b"; value = ""; return true; } + if(id == n++) { name = "Mode 7 A"; value = mode7_a(); return true; } + + //$211c + if(id == n++) { name = "$211c"; value = ""; return true; } + if(id == n++) { name = "Mode 7 B"; value = mode7_b(); return true; } + + //$211d + if(id == n++) { name = "$211d"; value = ""; return true; } + if(id == n++) { name = "Mode 7 C"; value = mode7_c(); return true; } + + //$211e + if(id == n++) { name = "$211e"; value = ""; return true; } + if(id == n++) { name = "Mode 7 D"; value = mode7_d(); return true; } + + //$211f + if(id == n++) { name = "$211f"; value = ""; return true; } + if(id == n++) { name = "Mode 7 X"; value = mode7_x(); return true; } + + //$2120 + if(id == n++) { name = "$2120"; value = ""; return true; } + if(id == n++) { name = "Mode 7 Y"; value = mode7_y(); return true; } + + //$2121 + if(id == n++) { name = "$2121"; value = ""; return true; } + if(id == n++) { name = "CGRAM Address"; value = string::printf("0x%.4x", cgram_address()); return true; } + + //$2123 + if(id == n++) { name = "$2123"; value = ""; return true; } + if(id == n++) { name = "BG1 Window 1 Enable"; value = bg1_window1_enable(); return true; } + if(id == n++) { name = "BG1 Window 1 Invert"; value = bg1_window1_invert(); return true; } + if(id == n++) { name = "BG1 Window 2 Enable"; value = bg1_window2_enable(); return true; } + if(id == n++) { name = "BG1 Window 2 Invert"; value = bg1_window2_invert(); return true; } + if(id == n++) { name = "BG2 Window 1 Enable"; value = bg2_window1_enable(); return true; } + if(id == n++) { name = "BG2 Window 1 Invert"; value = bg2_window1_invert(); return true; } + if(id == n++) { name = "BG2 Window 2 Enable"; value = bg2_window2_enable(); return true; } + if(id == n++) { name = "BG2 Window 2 Invert"; value = bg2_window2_invert(); return true; } + + //$2124 + if(id == n++) { name = "$2124"; value = ""; return true; } + if(id == n++) { name = "BG3 Window 1 Enable"; value = bg3_window1_enable(); return true; } + if(id == n++) { name = "BG3 Window 1 Invert"; value = bg3_window1_invert(); return true; } + if(id == n++) { name = "BG3 Window 2 Enable"; value = bg3_window2_enable(); return true; } + if(id == n++) { name = "BG3 Window 2 Invert"; value = bg3_window2_invert(); return true; } + if(id == n++) { name = "BG4 Window 1 Enable"; value = bg4_window1_enable(); return true; } + if(id == n++) { name = "BG4 Window 1 Invert"; value = bg4_window1_invert(); return true; } + if(id == n++) { name = "BG4 Window 2 Enable"; value = bg4_window2_enable(); return true; } + if(id == n++) { name = "BG4 Window 2 Invert"; value = bg4_window2_invert(); return true; } + + //$2125 + if(id == n++) { name = "$2125"; value = ""; return true; } + if(id == n++) { name = "OAM Window 1 Enable"; value = oam_window1_enable(); return true; } + if(id == n++) { name = "OAM Window 1 Invert"; value = oam_window1_invert(); return true; } + if(id == n++) { name = "OAM Window 2 Enable"; value = oam_window2_enable(); return true; } + if(id == n++) { name = "OAM Window 2 Invert"; value = oam_window2_invert(); return true; } + if(id == n++) { name = "Color Window 1 Enable"; value = color_window1_enable(); return true; } + if(id == n++) { name = "Color Window 1 Invert"; value = color_window1_invert(); return true; } + if(id == n++) { name = "Color Window 2 Enable"; value = color_window2_enable(); return true; } + if(id == n++) { name = "Color Window 2 Invert"; value = color_window2_invert(); return true; } + + //$2126 + if(id == n++) { name = "$2126"; value = ""; return true; } + if(id == n++) { name = "Window 1 Left"; value = window1_left(); return true; } + + //$2127 + if(id == n++) { name = "$2127"; value = ""; return true; } + if(id == n++) { name = "Window 1 Right"; value = window1_right(); return true; } + + //$2128 + if(id == n++) { name = "$2128"; value = ""; return true; } + if(id == n++) { name = "Window 2 Left"; value = window2_left(); return true; } + + //$2129 + if(id == n++) { name = "$2129"; value = ""; return true; } + if(id == n++) { name = "Window 2 Right"; value = window2_right(); return true; } + + static char window_mask_mode[4][8] = { "OR", "AND", "XOR", "XNOR" }; + + //$212a + if(id == n++) { name = "$212a"; value = ""; return true; } + if(id == n++) { name = "BG1 Window Mask"; value = window_mask_mode[bg1_window_mask()]; return true; } + if(id == n++) { name = "BG2 Window Mask"; value = window_mask_mode[bg2_window_mask()]; return true; } + if(id == n++) { name = "BG3 Window Mask"; value = window_mask_mode[bg3_window_mask()]; return true; } + if(id == n++) { name = "BG4 Window Mask"; value = window_mask_mode[bg4_window_mask()]; return true; } + + //$212b + if(id == n++) { name = "$212b"; value = ""; return true; } + if(id == n++) { name = "OAM Window Mask"; value = window_mask_mode[oam_window_mask()]; return true; } + if(id == n++) { name = "Color Window Mask"; value = window_mask_mode[color_window_mask()]; return true; } + + //$212c + if(id == n++) { name = "$212c"; value = ""; return true; } + if(id == n++) { name = "BG1 Mainscreen Enable"; value = bg1_mainscreen_enable(); return true; } + if(id == n++) { name = "BG2 Mainscreen Enable"; value = bg2_mainscreen_enable(); return true; } + if(id == n++) { name = "BG3 Mainscreen Enable"; value = bg3_mainscreen_enable(); return true; } + if(id == n++) { name = "BG4 Mainscreen Enable"; value = bg4_mainscreen_enable(); return true; } + if(id == n++) { name = "OAM Mainscreen Enable"; value = oam_mainscreen_enable(); return true; } + + //$212d + if(id == n++) { name = "$212d"; value = ""; return true; } + if(id == n++) { name = "BG1 Subscreen Enable"; value = bg1_subscreen_enable(); return true; } + if(id == n++) { name = "BG2 Subscreen Enable"; value = bg2_subscreen_enable(); return true; } + if(id == n++) { name = "BG3 Subscreen Enable"; value = bg3_subscreen_enable(); return true; } + if(id == n++) { name = "BG4 Subscreen Enable"; value = bg4_subscreen_enable(); return true; } + if(id == n++) { name = "OAM Subscreen Enable"; value = oam_subscreen_enable(); return true; } + + //$212e + if(id == n++) { name = "$212e"; value = ""; return true; } + if(id == n++) { name = "BG1 Mainscreen Window Enable"; value = bg1_mainscreen_window_enable(); return true; } + if(id == n++) { name = "BG2 Mainscreen Window Enable"; value = bg2_mainscreen_window_enable(); return true; } + if(id == n++) { name = "BG3 Mainscreen Window Enable"; value = bg3_mainscreen_window_enable(); return true; } + if(id == n++) { name = "BG4 Mainscreen Window Enable"; value = bg4_mainscreen_window_enable(); return true; } + if(id == n++) { name = "OAM Mainscreen Window Enable"; value = oam_mainscreen_window_enable(); return true; } + + //$212f + if(id == n++) { name = "$212f"; value = ""; return true; } + if(id == n++) { name = "BG1 Subscreen Window Enable"; value = bg1_subscreen_window_enable(); return true; } + if(id == n++) { name = "BG2 Subscreen Window Enable"; value = bg2_subscreen_window_enable(); return true; } + if(id == n++) { name = "BG3 Subscreen Window Enable"; value = bg3_subscreen_window_enable(); return true; } + if(id == n++) { name = "BG4 Subscreen Window Enable"; value = bg4_subscreen_window_enable(); return true; } + if(id == n++) { name = "OAM Subscreen Window Enable"; value = oam_subscreen_window_enable(); return true; } + + static char color_window_mask_mode[4][32] = { "Always", "Never", "Inside Window Only", "Outside Window Only" }; + + //$2130 + if(id == n++) { name = "$2130"; value = ""; return true; } + if(id == n++) { name = "Color Mainscreen Window Mask"; value = color_window_mask_mode[color_mainscreen_window_mask()]; return true; } + if(id == n++) { name = "Color Subscreen Window Mask"; value = color_window_mask_mode[color_subscreen_window_mask()]; return true; } + if(id == n++) { name = "Color Add/Subtract Mode"; value = !color_add_subtract_mode() ? "Fixed Color" : "Subscreen"; return true; } + if(id == n++) { name = "Direct Color"; value = direct_color(); return true; } + + //$2131 + if(id == n++) { name = "$2131"; value = ""; return true; } + if(id == n++) { name = "Color Mode"; value = !color_mode() ? "Add" : "Subtract"; return true; } + if(id == n++) { name = "Color Halve"; value = color_halve(); return true; } + if(id == n++) { name = "BG1 Color Enable"; value = bg1_color_enable(); return true; } + if(id == n++) { name = "BG2 Color Enable"; value = bg2_color_enable(); return true; } + if(id == n++) { name = "BG3 Color Enable"; value = bg3_color_enable(); return true; } + if(id == n++) { name = "BG4 Color Enable"; value = bg4_color_enable(); return true; } + if(id == n++) { name = "OAM Color Enable"; value = oam_color_enable(); return true; } + if(id == n++) { name = "Back Color Enable"; value = back_color_enable(); return true; } + + //$2132 + if(id == n++) { name = "$2132"; value = ""; return true; } + if(id == n++) { name = "Color Constant - Blue"; value = color_constant_blue(); return true; } + if(id == n++) { name = "Color Constant - Green"; value = color_constant_green(); return true; } + if(id == n++) { name = "Color Constant - Red"; value = color_constant_red(); return true; } + + //$2133 + if(id == n++) { name = "$2133"; value = ""; return true; } + if(id == n++) { name = "Mode 7 EXTBG"; value = mode7_extbg(); return true; } + if(id == n++) { name = "Pseudo Hires"; value = pseudo_hires(); return true; } + if(id == n++) { name = "Overscan"; value = overscan(); return true; } + if(id == n++) { name = "OAM Interlace"; value = oam_interlace(); return true; } + if(id == n++) { name = "Interlace"; value = interlace(); return true; } + + //$213c + if(id == n++) { name = "$213c"; value = ""; return true; } + if(id == n++) { name = "H-counter"; value = hcounter(); return true; } + + //$213d + if(id == n++) { name = "$213d"; value = ""; return true; } + if(id == n++) { name = "V-counter"; value = vcounter(); return true; } + + //$213e + if(id == n++) { name = "$213e"; value = ""; return true; } + if(id == n++) { name = "Range Over"; value = range_over(); return true; } + if(id == n++) { name = "Time Over"; value = time_over(); return true; } + if(id == n++) { name = "S-PPU1 Version"; value = ppu1_version(); return true; } + + //$213f + if(id == n++) { name = "$213f"; value = ""; return true; } + if(id == n++) { name = "Field"; value = field(); return true; } + if(id == n++) { name = "Region"; value = !region() ? "NTSC" : "PAL"; return true; } + if(id == n++) { name = "S-PPU2 Version"; value = ppu2_version(); return true; } + + return false; +} + +#endif diff --git a/libmednahawk/src/snes/src/ppu/ppu-debugger.hpp b/libmednahawk/src/snes/src/ppu/ppu-debugger.hpp new file mode 100644 index 0000000000..77ae690e83 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/ppu-debugger.hpp @@ -0,0 +1,243 @@ +struct PPUDebugger : ChipDebugger { + bool property(unsigned id, string &name, string &value); + + //internal + virtual unsigned ppu1_mdr() { return 0; } + virtual unsigned ppu2_mdr() { return 0; } + + //$2100 + virtual bool display_disable() { return 0; } + virtual unsigned display_brightness() { return 0; } + + //$2101 + virtual unsigned oam_base_size() { return 0; } + virtual unsigned oam_name_select() { return 0; } + virtual unsigned oam_name_base_address() { return 0; } + + //$2102-$2103 + virtual unsigned oam_base_address() { return 0; } + virtual bool oam_priority() { return 0; } + + //$2105 + virtual bool bg1_tile_size() { return 0; } + virtual bool bg2_tile_size() { return 0; } + virtual bool bg3_tile_size() { return 0; } + virtual bool bg4_tile_size() { return 0; } + virtual bool bg3_priority() { return 0; } + virtual unsigned bg_mode() { return 0; } + + //$2106 + virtual unsigned mosaic_size() { return 0; } + virtual bool bg1_mosaic_enable() { return 0; } + virtual bool bg2_mosaic_enable() { return 0; } + virtual bool bg3_mosaic_enable() { return 0; } + virtual bool bg4_mosaic_enable() { return 0; } + + //$2107 + virtual unsigned bg1_screen_address() { return 0; } + virtual unsigned bg1_screen_size() { return 0; } + + //$2108 + virtual unsigned bg2_screen_address() { return 0; } + virtual unsigned bg2_screen_size() { return 0; } + + //$2109 + virtual unsigned bg3_screen_address() { return 0; } + virtual unsigned bg3_screen_size() { return 0; } + + //$210a + virtual unsigned bg4_screen_address() { return 0; } + virtual unsigned bg4_screen_size() { return 0; } + + //$210b + virtual unsigned bg1_name_base_address() { return 0; } + virtual unsigned bg2_name_base_address() { return 0; } + + //$210c + virtual unsigned bg3_name_base_address() { return 0; } + virtual unsigned bg4_name_base_address() { return 0; } + + //$210d + virtual unsigned mode7_hoffset() { return 0; } + virtual unsigned bg1_hoffset() { return 0; } + + //$210e + virtual unsigned mode7_voffset() { return 0; } + virtual unsigned bg1_voffset() { return 0; } + + //$210f + virtual unsigned bg2_hoffset() { return 0; } + + //$2110 + virtual unsigned bg2_voffset() { return 0; } + + //$2111 + virtual unsigned bg3_hoffset() { return 0; } + + //$2112 + virtual unsigned bg3_voffset() { return 0; } + + //$2113 + virtual unsigned bg4_hoffset() { return 0; } + + //$2114 + virtual unsigned bg4_voffset() { return 0; } + + //$2115 + virtual bool vram_increment_mode() { return 0; } + virtual unsigned vram_increment_formation() { return 0; } + virtual unsigned vram_increment_size() { return 0; } + + //$2116-$2117 + virtual unsigned vram_address() { return 0; } + + //$211a + virtual unsigned mode7_repeat() { return 0; } + virtual bool mode7_vflip() { return 0; } + virtual bool mode7_hflip() { return 0; } + + //$211b + virtual unsigned mode7_a() { return 0; } + + //$211c + virtual unsigned mode7_b() { return 0; } + + //$211d + virtual unsigned mode7_c() { return 0; } + + //$211e + virtual unsigned mode7_d() { return 0; } + + //$211f + virtual unsigned mode7_x() { return 0; } + + //$2120 + virtual unsigned mode7_y() { return 0; } + + //$2121 + virtual unsigned cgram_address() { return 0; } + + //$2123 + virtual bool bg1_window1_enable() { return 0; } + virtual bool bg1_window1_invert() { return 0; } + virtual bool bg1_window2_enable() { return 0; } + virtual bool bg1_window2_invert() { return 0; } + virtual bool bg2_window1_enable() { return 0; } + virtual bool bg2_window1_invert() { return 0; } + virtual bool bg2_window2_enable() { return 0; } + virtual bool bg2_window2_invert() { return 0; } + + //$2124 + virtual bool bg3_window1_enable() { return 0; } + virtual bool bg3_window1_invert() { return 0; } + virtual bool bg3_window2_enable() { return 0; } + virtual bool bg3_window2_invert() { return 0; } + virtual bool bg4_window1_enable() { return 0; } + virtual bool bg4_window1_invert() { return 0; } + virtual bool bg4_window2_enable() { return 0; } + virtual bool bg4_window2_invert() { return 0; } + + //$2125 + virtual bool oam_window1_enable() { return 0; } + virtual bool oam_window1_invert() { return 0; } + virtual bool oam_window2_enable() { return 0; } + virtual bool oam_window2_invert() { return 0; } + virtual bool color_window1_enable() { return 0; } + virtual bool color_window1_invert() { return 0; } + virtual bool color_window2_enable() { return 0; } + virtual bool color_window2_invert() { return 0; } + + //$2126 + virtual unsigned window1_left() { return 0; } + + //$2127 + virtual unsigned window1_right() { return 0; } + + //$2128 + virtual unsigned window2_left() { return 0; } + + //$2129 + virtual unsigned window2_right() { return 0; } + + //$212a + virtual unsigned bg1_window_mask() { return 0; } + virtual unsigned bg2_window_mask() { return 0; } + virtual unsigned bg3_window_mask() { return 0; } + virtual unsigned bg4_window_mask() { return 0; } + + //$212b + virtual unsigned oam_window_mask() { return 0; } + virtual unsigned color_window_mask() { return 0; } + + //$212c + virtual bool bg1_mainscreen_enable() { return 0; } + virtual bool bg2_mainscreen_enable() { return 0; } + virtual bool bg3_mainscreen_enable() { return 0; } + virtual bool bg4_mainscreen_enable() { return 0; } + virtual bool oam_mainscreen_enable() { return 0; } + + //$212d + virtual bool bg1_subscreen_enable() { return 0; } + virtual bool bg2_subscreen_enable() { return 0; } + virtual bool bg3_subscreen_enable() { return 0; } + virtual bool bg4_subscreen_enable() { return 0; } + virtual bool oam_subscreen_enable() { return 0; } + + //$212e + virtual bool bg1_mainscreen_window_enable() { return 0; } + virtual bool bg2_mainscreen_window_enable() { return 0; } + virtual bool bg3_mainscreen_window_enable() { return 0; } + virtual bool bg4_mainscreen_window_enable() { return 0; } + virtual bool oam_mainscreen_window_enable() { return 0; } + + //$212f + virtual bool bg1_subscreen_window_enable() { return 0; } + virtual bool bg2_subscreen_window_enable() { return 0; } + virtual bool bg3_subscreen_window_enable() { return 0; } + virtual bool bg4_subscreen_window_enable() { return 0; } + virtual bool oam_subscreen_window_enable() { return 0; } + + //$2130 + virtual unsigned color_mainscreen_window_mask() { return 0; } + virtual unsigned color_subscreen_window_mask() { return 0; } + virtual bool color_add_subtract_mode() { return 0; } + virtual bool direct_color() { return 0; } + + //$2131 + virtual bool color_mode() { return 0; } + virtual bool color_halve() { return 0; } + virtual bool bg1_color_enable() { return 0; } + virtual bool bg2_color_enable() { return 0; } + virtual bool bg3_color_enable() { return 0; } + virtual bool bg4_color_enable() { return 0; } + virtual bool oam_color_enable() { return 0; } + virtual bool back_color_enable() { return 0; } + + //$2132 + virtual unsigned color_constant_blue() { return 0; } + virtual unsigned color_constant_green() { return 0; } + virtual unsigned color_constant_red() { return 0; } + + //$2133 + virtual bool mode7_extbg() { return 0; } + virtual bool pseudo_hires() { return 0; } + virtual bool overscan() { return 0; } + virtual bool oam_interlace() { return 0; } + virtual bool interlace() { return 0; } + + //$213c + virtual unsigned hcounter() { return 0; } + + //$213d + virtual unsigned vcounter() { return 0; } + + //$213e + virtual bool range_over() { return 0; } + virtual bool time_over() { return 0; } + virtual unsigned ppu1_version() { return 0; } + + //$213f + virtual bool field() { return 0; } + virtual bool region() { return 0; } + virtual unsigned ppu2_version() { return 0; } +}; diff --git a/libmednahawk/src/snes/src/ppu/ppu-inline.hpp b/libmednahawk/src/snes/src/ppu/ppu-inline.hpp new file mode 100644 index 0000000000..75d8f12c97 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/ppu-inline.hpp @@ -0,0 +1,85 @@ +//this should only be called by CPU::PPUcounter::tick(); +//keeps track of previous counter positions in history table +void PPUcounter::tick() { + status.hcounter += 2; //increment by smallest unit of time + if(status.hcounter >= 1360 && status.hcounter == lineclocks()) { + status.hcounter = 0; + vcounter_tick(); + } + + history.index = (history.index + 1) & 2047; + history.field [history.index] = status.field; + history.vcounter[history.index] = status.vcounter; + history.hcounter[history.index] = status.hcounter; +} + +//this should only be called by PPU::PPUcounter::tick(n); +//allows stepping by more than the smallest unit of time +void PPUcounter::tick(unsigned clocks) { + status.hcounter += clocks; + if(status.hcounter >= lineclocks()) { + status.hcounter -= lineclocks(); + vcounter_tick(); + } +} + +//internal +void PPUcounter::vcounter_tick() { + if(++status.vcounter == 128) status.interlace = ppu.interlace(); + + if((system.region() == System::NTSC && status.interlace == false && status.vcounter == 262) + || (system.region() == System::NTSC && status.interlace == true && status.vcounter == 263) + || (system.region() == System::NTSC && status.interlace == true && status.vcounter == 262 && status.field == 1) + || (system.region() == System::PAL && status.interlace == false && status.vcounter == 312) + || (system.region() == System::PAL && status.interlace == true && status.vcounter == 313) + || (system.region() == System::PAL && status.interlace == true && status.vcounter == 312 && status.field == 1) + ) { + status.vcounter = 0; + status.field = !status.field; + } + if(scanline) scanline(); +} + +bool PPUcounter::field () const { return status.field; } +uint16 PPUcounter::vcounter() const { return status.vcounter; } +uint16 PPUcounter::hcounter() const { return status.hcounter; } + +bool PPUcounter::field (unsigned offset) const { return history.field [(history.index - (offset >> 1)) & 2047]; } +uint16 PPUcounter::vcounter(unsigned offset) const { return history.vcounter[(history.index - (offset >> 1)) & 2047]; } +uint16 PPUcounter::hcounter(unsigned offset) const { return history.hcounter[(history.index - (offset >> 1)) & 2047]; } + +//one PPU dot = 4 CPU clocks +// +//PPU dots 323 and 327 are 6 CPU clocks long. +//this does not apply to NTSC non-interlace scanline 240 on odd fields. this is +//because the PPU skips one dot to alter the color burst phase of the video signal. +// +//dot 323 range = { 1292, 1294, 1296 } +//dot 327 range = { 1310, 1312, 1314 } + +uint16 PPUcounter::hdot() const { + if(system.region() == System::NTSC && status.interlace == false && vcounter() == 240 && field() == 1) { + return (hcounter() >> 2); + } else { + return (hcounter() - ((hcounter() > 1292) << 1) - ((hcounter() > 1310) << 1)) >> 2; + } +} + +uint16 PPUcounter::lineclocks() const { + if(system.region() == System::NTSC && status.interlace == false && vcounter() == 240 && field() == 1) return 1360; + return 1364; +} + +void PPUcounter::reset() { + status.interlace = false; + status.field = 0; + status.vcounter = 0; + status.hcounter = 0; + history.index = 0; + + for(unsigned i = 0; i < 2048; i++) { + history.field [i] = 0; + history.vcounter[i] = 0; + history.hcounter[i] = 0; + } +} diff --git a/libmednahawk/src/snes/src/ppu/ppu.cpp b/libmednahawk/src/snes/src/ppu/ppu.cpp new file mode 100644 index 0000000000..a499df4694 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/ppu.cpp @@ -0,0 +1,56 @@ +#include <../base.hpp> + +#define PPU_CPP +namespace SNES { + +#if defined(DEBUGGER) + #include "ppu-debugger.cpp" +#endif + +#include "serialization.cpp" + +void PPU::enable_renderer(bool r) { status.render_output = r; } +bool PPU::renderer_enabled() { return status.render_output; } + +void PPU::frame() { + status.frame_executed = true; + + static int32 fr = 0, fe = 0; + static time_t prev, curr; + fe++; + if(status.render_output)fr++; + + time(&curr); + if(curr != prev) { + status.frames_updated = true; + status.frames_rendered = fr; + status.frames_executed = fe; + fr = fe = 0; + } + prev = curr; +} + +void PPU::power() { + ppu1_version = config.ppu1.version; + ppu2_version = config.ppu2.version; +} + +void PPU::reset() { + PPUcounter::reset(); + memset(output, 0, 512 * 480 * sizeof(uint16)); +} + +PPU::PPU() { + output = new uint16[512 * 480]; + + status.render_output = true; + status.frames_updated = false; + status.frames_rendered = 0; + status.frames_executed = 0; +} + +PPU::~PPU() { + delete[] output; +} + +}; diff --git a/libmednahawk/src/snes/src/ppu/ppu.hpp b/libmednahawk/src/snes/src/ppu/ppu.hpp new file mode 100644 index 0000000000..411852f253 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/ppu.hpp @@ -0,0 +1,94 @@ +#if defined(DEBUGGER) + #include "ppu-debugger.hpp" +#endif + +//PPUcounter emulates the H/V latch counters of the S-PPU2. +// +//real hardware has the S-CPU maintain its own copy of these counters that are +//updated based on the state of the S-PPU Vblank and Hblank pins. emulating this +//would require full lock-step synchronization for every clock tick. +//to bypass this and allow the two to run out-of-order, both the CPU and PPU +//classes inherit PPUcounter and keep their own counters. +//the timers are kept in sync, as the only differences occur on V=240 and V=261, +//based on interlace. thus, we need only synchronize and fetch interlace at any +//point before this in the frame, which is handled internally by this class at +//V=128. + +class PPUcounter { +public: + alwaysinline void tick(); + alwaysinline void tick(unsigned clocks); + + alwaysinline bool field () const; + alwaysinline uint16 vcounter() const; + alwaysinline uint16 hcounter() const; + inline uint16 hdot() const; + inline uint16 lineclocks() const; + + alwaysinline bool field (unsigned offset) const; + alwaysinline uint16 vcounter(unsigned offset) const; + alwaysinline uint16 hcounter(unsigned offset) const; + + inline void reset(); + function scanline; + void serialize(serializer&); + +private: + inline void vcounter_tick(); + + struct { + bool interlace; + bool field; + uint16 vcounter; + uint16 hcounter; + } status; + + struct { + bool field[2048]; + uint16 vcounter[2048]; + uint16 hcounter[2048]; + + int32 index; + } history; +}; + +class PPU : public PPUcounter, public MMIO { +public: + virtual void enter() = 0; + + uint16 *output; + + struct { + bool render_output; + bool frame_executed; + bool frames_updated; + unsigned frames_rendered; + unsigned frames_executed; + } status; + + //PPU1 version number + //* 1 is known + //* reported by $213e + uint8 ppu1_version; + + //PPU2 version number + //* 1 and 3 are known + //* reported by $213f + uint8 ppu2_version; + + virtual bool interlace() const = 0; + virtual bool overscan() const = 0; + virtual bool hires() const = 0; + + virtual void latch_counters() = 0; + + virtual void frame(); + virtual void power(); + virtual void reset(); + virtual void enable_renderer(bool r); + virtual bool renderer_enabled(); + + virtual void serialize(serializer&); + PPU(); + virtual ~PPU(); +}; diff --git a/libmednahawk/src/snes/src/ppu/serialization.cpp b/libmednahawk/src/snes/src/ppu/serialization.cpp new file mode 100644 index 0000000000..0565b28241 --- /dev/null +++ b/libmednahawk/src/snes/src/ppu/serialization.cpp @@ -0,0 +1,28 @@ +#ifdef PPU_CPP + +void PPUcounter::serialize(serializer &s) { + s.integer(status.interlace); + s.integer(status.field); + s.integer(status.vcounter); + s.integer(status.hcounter); + + s.array(history.field); + s.array(history.vcounter); + s.array(history.hcounter); + s.integer(history.index); +} + +void PPU::serialize(serializer &s) { + PPUcounter::serialize(s); + + s.integer(status.render_output); + s.integer(status.frame_executed); + s.integer(status.frames_updated); + s.integer(status.frames_rendered); + s.integer(status.frames_executed); + + s.integer(ppu1_version); + s.integer(ppu2_version); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/algorithms.cpp b/libmednahawk/src/snes/src/smp/core/algorithms.cpp new file mode 100644 index 0000000000..1c19a301ae --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/algorithms.cpp @@ -0,0 +1,126 @@ +#ifdef SMPCORE_CPP + +uint8 SMPcore::op_adc(uint8 x, uint8 y) { + int r = x + y + regs.p.c; + regs.p.n = r & 0x80; + regs.p.v = ~(x ^ y) & (x ^ r) & 0x80; + regs.p.h = (x ^ y ^ r) & 0x10; + regs.p.z = (uint8)r == 0; + regs.p.c = r > 0xff; + return r; +} + +uint16 SMPcore::op_addw(uint16 x, uint16 y) { + uint16 r; + regs.p.c = 0; + r = op_adc(x, y); + r |= op_adc(x >> 8, y >> 8) << 8; + regs.p.z = r == 0; + return r; +} + +uint8 SMPcore::op_and(uint8 x, uint8 y) { + x &= y; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_cmp(uint8 x, uint8 y) { + int r = x - y; + regs.p.n = r & 0x80; + regs.p.z = (uint8)r == 0; + regs.p.c = r >= 0; + return x; +} + +uint16 SMPcore::op_cmpw(uint16 x, uint16 y) { + int r = x - y; + regs.p.n = r & 0x8000; + regs.p.z = (uint16)r == 0; + regs.p.c = r >= 0; + return x; +} + +uint8 SMPcore::op_eor(uint8 x, uint8 y) { + x ^= y; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_or(uint8 x, uint8 y) { + x |= y; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_sbc(uint8 x, uint8 y) { + int r = x - y - !regs.p.c; + regs.p.n = r & 0x80; + regs.p.v = (x ^ y) & (x ^ r) & 0x80; + regs.p.h = !((x ^ y ^ r) & 0x10); + regs.p.z = (uint8)r == 0; + regs.p.c = r >= 0; + return r; +} + +uint16 SMPcore::op_subw(uint16 x, uint16 y) { + uint16 r; + regs.p.c = 1; + r = op_sbc(x, y); + r |= op_sbc(x >> 8, y >> 8) << 8; + regs.p.z = r == 0; + return r; +} + +uint8 SMPcore::op_inc(uint8 x) { + x++; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_dec(uint8 x) { + x--; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_asl(uint8 x) { + regs.p.c = x & 0x80; + x <<= 1; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_lsr(uint8 x) { + regs.p.c = x & 0x01; + x >>= 1; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_rol(uint8 x) { + unsigned carry = (unsigned)regs.p.c; + regs.p.c = x & 0x80; + x = (x << 1) | carry; + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +uint8 SMPcore::op_ror(uint8 x) { + unsigned carry = (unsigned)regs.p.c << 7; + regs.p.c = x & 0x01; + x = carry | (x >> 1); + regs.p.n = x & 0x80; + regs.p.z = x == 0; + return x; +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/core.cpp b/libmednahawk/src/snes/src/smp/core/core.cpp new file mode 100644 index 0000000000..a7ee51a661 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/core.cpp @@ -0,0 +1,31 @@ +#include <../base.hpp> + +#define SMPCORE_CPP +namespace SNES { + +#include "serialization.cpp" +#include "algorithms.cpp" +#include "disassembler/disassembler.cpp" + +#define A 0 +#define X 1 +#define Y 2 +#define SP 3 + +#include "opcode_mov.cpp" +#include "opcode_pc.cpp" +#include "opcode_read.cpp" +#include "opcode_rmw.cpp" +#include "opcode_misc.cpp" +#include "table.cpp" + +#undef A +#undef X +#undef Y +#undef SP + +SMPcore::SMPcore() { + initialize_opcode_table(); +} + +}; diff --git a/libmednahawk/src/snes/src/smp/core/core.hpp b/libmednahawk/src/snes/src/smp/core/core.hpp new file mode 100644 index 0000000000..ff4bd7d8f6 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/core.hpp @@ -0,0 +1,118 @@ +class SMPcore { +public: + #include "registers.hpp" + #include "memory.hpp" + #include "disassembler/disassembler.hpp" + + regs_t regs; + uint16 dp, sp, rd, wr, bit, ya; + + virtual void op_io() = 0; + virtual uint8 op_read(uint16 addr) = 0; + virtual void op_write(uint16 addr, uint8 data) = 0; + + uint8 op_adc (uint8 x, uint8 y); + uint16 op_addw(uint16 x, uint16 y); + uint8 op_and (uint8 x, uint8 y); + uint8 op_cmp (uint8 x, uint8 y); + uint16 op_cmpw(uint16 x, uint16 y); + uint8 op_eor (uint8 x, uint8 y); + uint8 op_inc (uint8 x); + uint8 op_dec (uint8 x); + uint8 op_or (uint8 x, uint8 y); + uint8 op_sbc (uint8 x, uint8 y); + uint16 op_subw(uint16 x, uint16 y); + uint8 op_asl (uint8 x); + uint8 op_lsr (uint8 x); + uint8 op_rol (uint8 x); + uint8 op_ror (uint8 x); + + template void op_mov_reg_reg(); + void op_mov_sp_x(); + template void op_mov_reg_const(); + void op_mov_a_ix(); + void op_mov_a_ixinc(); + template void op_mov_reg_dp(); + template void op_mov_reg_dpr(); + template void op_mov_reg_addr(); + template void op_mov_a_addrr(); + void op_mov_a_idpx(); + void op_mov_a_idpy(); + void op_mov_dp_dp(); + void op_mov_dp_const(); + void op_mov_ix_a(); + void op_mov_ixinc_a(); + template void op_mov_dp_reg(); + template void op_mov_dpr_reg(); + template void op_mov_addr_reg(); + template void op_mov_addrr_a(); + void op_mov_idpx_a(); + void op_mov_idpy_a(); + void op_movw_ya_dp(); + void op_movw_dp_ya(); + void op_mov1_c_bit(); + void op_mov1_bit_c(); + + void op_bra(); + template void op_branch(); + template void op_bitbranch(); + void op_cbne_dp(); + void op_cbne_dpx(); + void op_dbnz_dp(); + void op_dbnz_y(); + void op_jmp_addr(); + void op_jmp_iaddrx(); + void op_call(); + void op_pcall(); + template void op_tcall(); + void op_brk(); + void op_ret(); + void op_reti(); + + template void op_read_reg_const(); + template void op_read_a_ix(); + template void op_read_reg_dp(); + template void op_read_a_dpx(); + template void op_read_reg_addr(); + template void op_read_a_addrr(); + template void op_read_a_idpx(); + template void op_read_a_idpy(); + template void op_read_ix_iy(); + template void op_read_dp_dp(); + template void op_read_dp_const(); + template void op_read_ya_dp(); + void op_cmpw_ya_dp(); + template void op_and1_bit(); + void op_eor1_bit(); + void op_not1_bit(); + template void op_or1_bit(); + + template void op_adjust_reg(); + template void op_adjust_dp(); + template void op_adjust_dpx(); + template void op_adjust_addr(); + template void op_adjust_addr_a(); + template void op_adjustw_dp(); + + void op_nop(); + void op_wait(); + void op_xcn(); + void op_daa(); + void op_das(); + template void op_setbit(); + void op_notc(); + template void op_seti(); + template void op_setbit_dp(); + template void op_push_reg(); + void op_push_p(); + template void op_pop_reg(); + void op_pop_p(); + void op_mul_ya(); + void op_div_ya_x(); + + void (SMPcore::*opcode_table[256])(); + void initialize_opcode_table(); + + void core_serialize(serializer&); + SMPcore(); +}; diff --git a/libmednahawk/src/snes/src/smp/core/disassembler/disassembler.cpp b/libmednahawk/src/snes/src/smp/core/disassembler/disassembler.cpp new file mode 100644 index 0000000000..ef94874cc5 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/disassembler/disassembler.cpp @@ -0,0 +1,304 @@ +#ifdef SMPCORE_CPP + +uint16 SMPcore::__relb(int8 offset, int op_len) { + uint16 pc = regs.pc + op_len; + return pc + offset; +} + +void SMPcore::disassemble_opcode(char *output, uint16 addr) { + char *s, t[512]; + uint8 op, op0, op1; + uint16 opw, opdp0, opdp1; + s = output; + + sprintf(s, "..%.4x ", addr); + + //TODO: read from IPLROM when applicable + op = memory::apuram[(uint16)(addr + 0)]; + op0 = memory::apuram[(uint16)(addr + 1)]; + op1 = memory::apuram[(uint16)(addr + 2)]; + opw = (op0) | (op1 << 8); + opdp0 = ((unsigned)regs.p.p << 8) + op0; + opdp1 = ((unsigned)regs.p.p << 8) + op1; + + strcpy(t, " "); + + switch(op) { + case 0x00: sprintf(t, "nop"); break; + case 0x01: sprintf(t, "tcall 0"); break; + case 0x02: sprintf(t, "set0 $%.3x", opdp0); break; + case 0x03: sprintf(t, "bbs0 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x04: sprintf(t, "or a,$%.3x", opdp0); break; + case 0x05: sprintf(t, "or a,$%.4x", opw); break; + case 0x06: sprintf(t, "or a,(x)"); break; + case 0x07: sprintf(t, "or a,($%.3x+x)", opdp0); break; + case 0x08: sprintf(t, "or a,#$%.2x", op0); break; + case 0x09: sprintf(t, "or $%.3x,$%.3x", opdp1, opdp0); break; + case 0x0a: sprintf(t, "or1 c,$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0x0b: sprintf(t, "asl $%.3x", opdp0); break; + case 0x0c: sprintf(t, "asl $%.4x", opw); break; + case 0x0d: sprintf(t, "push p"); break; + case 0x0e: sprintf(t, "tset $%.4x,a", opw); break; + case 0x0f: sprintf(t, "brk"); break; + case 0x10: sprintf(t, "bpl $%.4x", __relb(op0, 2)); break; + case 0x11: sprintf(t, "tcall 1"); break; + case 0x12: sprintf(t, "clr0 $%.3x", opdp0); break; + case 0x13: sprintf(t, "bbc0 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x14: sprintf(t, "or a,$%.3x+x", opdp0); break; + case 0x15: sprintf(t, "or a,$%.4x+x", opw); break; + case 0x16: sprintf(t, "or a,$%.4x+y", opw); break; + case 0x17: sprintf(t, "or a,($%.3x)+y", opdp0); break; + case 0x18: sprintf(t, "or $%.3x,#$%.2x", opdp1, op0); break; + case 0x19: sprintf(t, "or (x),(y)"); break; + case 0x1a: sprintf(t, "decw $%.3x", opdp0); break; + case 0x1b: sprintf(t, "asl $%.3x+x", opdp0); break; + case 0x1c: sprintf(t, "asl a"); break; + case 0x1d: sprintf(t, "dec x"); break; + case 0x1e: sprintf(t, "cmp x,$%.4x", opw); break; + case 0x1f: sprintf(t, "jmp ($%.4x+x)", opw); break; + case 0x20: sprintf(t, "clrp"); break; + case 0x21: sprintf(t, "tcall 2"); break; + case 0x22: sprintf(t, "set1 $%.3x", opdp0); break; + case 0x23: sprintf(t, "bbs1 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x24: sprintf(t, "and a,$%.3x", opdp0); break; + case 0x25: sprintf(t, "and a,$%.4x", opw); break; + case 0x26: sprintf(t, "and a,(x)"); break; + case 0x27: sprintf(t, "and a,($%.3x+x)", opdp0); break; + case 0x28: sprintf(t, "and a,#$%.2x", op0); break; + case 0x29: sprintf(t, "and $%.3x,$%.3x", opdp1, opdp0); break; + case 0x2a: sprintf(t, "or1 c,!$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0x2b: sprintf(t, "rol $%.3x", opdp0); break; + case 0x2c: sprintf(t, "rol $%.4x", opw); break; + case 0x2d: sprintf(t, "push a"); break; + case 0x2e: sprintf(t, "cbne $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x2f: sprintf(t, "bra $%.4x", __relb(op0, 2)); break; + case 0x30: sprintf(t, "bmi $%.4x", __relb(op0, 2)); break; + case 0x31: sprintf(t, "tcall 3"); break; + case 0x32: sprintf(t, "clr1 $%.3x", opdp0); break; + case 0x33: sprintf(t, "bbc1 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x34: sprintf(t, "and a,$%.3x+x", opdp0); break; + case 0x35: sprintf(t, "and a,$%.4x+x", opw); break; + case 0x36: sprintf(t, "and a,$%.4x+y", opw); break; + case 0x37: sprintf(t, "and a,($%.3x)+y", opdp0); break; + case 0x38: sprintf(t, "and $%.3x,#$%.2x", opdp1, op0); break; + case 0x39: sprintf(t, "and (x),(y)"); break; + case 0x3a: sprintf(t, "incw $%.3x", opdp0); break; + case 0x3b: sprintf(t, "rol $%.3x+x", opdp0); break; + case 0x3c: sprintf(t, "rol a"); break; + case 0x3d: sprintf(t, "inc x"); break; + case 0x3e: sprintf(t, "cmp x,$%.3x", opdp0); break; + case 0x3f: sprintf(t, "call $%.4x", opw); break; + case 0x40: sprintf(t, "setp"); break; + case 0x41: sprintf(t, "tcall 4"); break; + case 0x42: sprintf(t, "set2 $%.3x", opdp0); break; + case 0x43: sprintf(t, "bbs2 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x44: sprintf(t, "eor a,$%.3x", opdp0); break; + case 0x45: sprintf(t, "eor a,$%.4x", opw); break; + case 0x46: sprintf(t, "eor a,(x)"); break; + case 0x47: sprintf(t, "eor a,($%.3x+x)", opdp0); break; + case 0x48: sprintf(t, "eor a,#$%.2x", op0); break; + case 0x49: sprintf(t, "eor $%.3x,$%.3x", opdp1, opdp0); break; + case 0x4a: sprintf(t, "and1 c,$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0x4b: sprintf(t, "lsr $%.3x", opdp0); break; + case 0x4c: sprintf(t, "lsr $%.4x", opw); break; + case 0x4d: sprintf(t, "push x"); break; + case 0x4e: sprintf(t, "tclr $%.4x,a", opw); break; + case 0x4f: sprintf(t, "pcall $ff%.2x", op0); break; + case 0x50: sprintf(t, "bvc $%.4x", __relb(op0, 2)); break; + case 0x51: sprintf(t, "tcall 5"); break; + case 0x52: sprintf(t, "clr2 $%.3x", opdp0); break; + case 0x53: sprintf(t, "bbc2 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x54: sprintf(t, "eor a,$%.3x+x", opdp0); break; + case 0x55: sprintf(t, "eor a,$%.4x+x", opw); break; + case 0x56: sprintf(t, "eor a,$%.4x+y", opw); break; + case 0x57: sprintf(t, "eor a,($%.3x)+y", opdp0); break; + case 0x58: sprintf(t, "eor $%.3x,#$%.2x", opdp1, op0); break; + case 0x59: sprintf(t, "eor (x),(y)"); break; + case 0x5a: sprintf(t, "cmpw ya,$%.3x", opdp0); break; + case 0x5b: sprintf(t, "lsr $%.3x+x", opdp0); break; + case 0x5c: sprintf(t, "lsr a"); break; + case 0x5d: sprintf(t, "mov x,a"); break; + case 0x5e: sprintf(t, "cmp y,$%.4x", opw); break; + case 0x5f: sprintf(t, "jmp $%.4x", opw); break; + case 0x60: sprintf(t, "clrc"); break; + case 0x61: sprintf(t, "tcall 6"); break; + case 0x62: sprintf(t, "set3 $%.3x", opdp0); break; + case 0x63: sprintf(t, "bbs3 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x64: sprintf(t, "cmp a,$%.3x", opdp0); break; + case 0x65: sprintf(t, "cmp a,$%.4x", opw); break; + case 0x66: sprintf(t, "cmp a,(x)"); break; + case 0x67: sprintf(t, "cmp a,($%.3x+x)", opdp0); break; + case 0x68: sprintf(t, "cmp a,#$%.2x", op0); break; + case 0x69: sprintf(t, "cmp $%.3x,$%.3x", opdp1, opdp0); break; + case 0x6a: sprintf(t, "and1 c,!$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0x6b: sprintf(t, "ror $%.3x", opdp0); break; + case 0x6c: sprintf(t, "ror $%.4x", opw); break; + case 0x6d: sprintf(t, "push y"); break; + case 0x6e: sprintf(t, "dbnz $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x6f: sprintf(t, "ret"); break; + case 0x70: sprintf(t, "bvs $%.4x", __relb(op0, 2)); break; + case 0x71: sprintf(t, "tcall 7"); break; + case 0x72: sprintf(t, "clr3 $%.3x", opdp0); break; + case 0x73: sprintf(t, "bbc3 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x74: sprintf(t, "cmp a,$%.3x+x", opdp0); break; + case 0x75: sprintf(t, "cmp a,$%.4x+x", opw); break; + case 0x76: sprintf(t, "cmp a,$%.4x+y", opw); break; + case 0x77: sprintf(t, "cmp a,($%.3x)+y", opdp0); break; + case 0x78: sprintf(t, "cmp $%.3x,#$%.2x", opdp1, op0); break; + case 0x79: sprintf(t, "cmp (x),(y)"); break; + case 0x7a: sprintf(t, "addw ya,$%.3x", opdp0); break; + case 0x7b: sprintf(t, "ror $%.3x+x", opdp0); break; + case 0x7c: sprintf(t, "ror a"); break; + case 0x7d: sprintf(t, "mov a,x"); break; + case 0x7e: sprintf(t, "cmp y,$%.3x", opdp0); break; + case 0x7f: sprintf(t, "reti"); break; + case 0x80: sprintf(t, "setc"); break; + case 0x81: sprintf(t, "tcall 8"); break; + case 0x82: sprintf(t, "set4 $%.3x", opdp0); break; + case 0x83: sprintf(t, "bbs4 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x84: sprintf(t, "adc a,$%.3x", opdp0); break; + case 0x85: sprintf(t, "adc a,$%.4x", opw); break; + case 0x86: sprintf(t, "adc a,(x)"); break; + case 0x87: sprintf(t, "adc a,($%.3x+x)", opdp0); break; + case 0x88: sprintf(t, "adc a,#$%.2x", op0); break; + case 0x89: sprintf(t, "adc $%.3x,$%.3x", opdp1, opdp0); break; + case 0x8a: sprintf(t, "eor1 c,$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0x8b: sprintf(t, "dec $%.3x", opdp0); break; + case 0x8c: sprintf(t, "dec $%.4x", opw); break; + case 0x8d: sprintf(t, "mov y,#$%.2x", op0); break; + case 0x8e: sprintf(t, "pop p"); break; + case 0x8f: sprintf(t, "mov $%.3x,#$%.2x", opdp1, op0); break; + case 0x90: sprintf(t, "bcc $%.4x", __relb(op0, 2)); break; + case 0x91: sprintf(t, "tcall 9"); break; + case 0x92: sprintf(t, "clr4 $%.3x", opdp0); break; + case 0x93: sprintf(t, "bbc4 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0x94: sprintf(t, "adc a,$%.3x+x", opdp0); break; + case 0x95: sprintf(t, "adc a,$%.4x+x", opw); break; + case 0x96: sprintf(t, "adc a,$%.4x+y", opw); break; + case 0x97: sprintf(t, "adc a,($%.3x)+y", opdp0); break; + case 0x98: sprintf(t, "adc $%.3x,#$%.2x", opdp1, op0); break; + case 0x99: sprintf(t, "adc (x),(y)"); break; + case 0x9a: sprintf(t, "subw ya,$%.3x", opdp0); break; + case 0x9b: sprintf(t, "dec $%.3x+x", opdp0); break; + case 0x9c: sprintf(t, "dec a"); break; + case 0x9d: sprintf(t, "mov x,sp"); break; + case 0x9e: sprintf(t, "div ya,x"); break; + case 0x9f: sprintf(t, "xcn a"); break; + case 0xa0: sprintf(t, "ei"); break; + case 0xa1: sprintf(t, "tcall 10"); break; + case 0xa2: sprintf(t, "set5 $%.3x", opdp0); break; + case 0xa3: sprintf(t, "bbs5 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xa4: sprintf(t, "sbc a,$%.3x", opdp0); break; + case 0xa5: sprintf(t, "sbc a,$%.4x", opw); break; + case 0xa6: sprintf(t, "sbc a,(x)"); break; + case 0xa7: sprintf(t, "sbc a,($%.3x+x)", opdp0); break; + case 0xa8: sprintf(t, "sbc a,#$%.2x", op0); break; + case 0xa9: sprintf(t, "sbc $%.3x,$%.3x", opdp1, opdp0); break; + case 0xaa: sprintf(t, "mov1 c,$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0xab: sprintf(t, "inc $%.3x", opdp0); break; + case 0xac: sprintf(t, "inc $%.4x", opw); break; + case 0xad: sprintf(t, "cmp y,#$%.2x", op0); break; + case 0xae: sprintf(t, "pop a"); break; + case 0xaf: sprintf(t, "mov (x)+,a"); break; + case 0xb0: sprintf(t, "bcs $%.4x", __relb(op0, 2)); break; + case 0xb1: sprintf(t, "tcall 11"); break; + case 0xb2: sprintf(t, "clr5 $%.3x", opdp0); break; + case 0xb3: sprintf(t, "bbc5 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xb4: sprintf(t, "sbc a,$%.3x+x", opdp0); break; + case 0xb5: sprintf(t, "sbc a,$%.4x+x", opw); break; + case 0xb6: sprintf(t, "sbc a,$%.4x+y", opw); break; + case 0xb7: sprintf(t, "sbc a,($%.3x)+y", opdp0); break; + case 0xb8: sprintf(t, "sbc $%.3x,#$%.2x", opdp1, op0); break; + case 0xb9: sprintf(t, "sbc (x),(y)"); break; + case 0xba: sprintf(t, "movw ya,$%.3x", opdp0); break; + case 0xbb: sprintf(t, "inc $%.3x+x", opdp0); break; + case 0xbc: sprintf(t, "inc a"); break; + case 0xbd: sprintf(t, "mov sp,x"); break; + case 0xbe: sprintf(t, "das a"); break; + case 0xbf: sprintf(t, "mov a,(x)+"); break; + case 0xc0: sprintf(t, "di"); break; + case 0xc1: sprintf(t, "tcall 12"); break; + case 0xc2: sprintf(t, "set6 $%.3x", opdp0); break; + case 0xc3: sprintf(t, "bbs6 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xc4: sprintf(t, "mov $%.3x,a", opdp0); break; + case 0xc5: sprintf(t, "mov $%.4x,a", opw); break; + case 0xc6: sprintf(t, "mov (x),a"); break; + case 0xc7: sprintf(t, "mov ($%.3x+x),a", opdp0); break; + case 0xc8: sprintf(t, "cmp x,#$%.2x", op0); break; + case 0xc9: sprintf(t, "mov $%.4x,x", opw); break; + case 0xca: sprintf(t, "mov1 $%.4x:%d,c", opw & 0x1fff, opw >> 13); break; + case 0xcb: sprintf(t, "mov $%.3x,y", opdp0); break; + case 0xcc: sprintf(t, "mov $%.4x,y", opw); break; + case 0xcd: sprintf(t, "mov x,#$%.2x", op0); break; + case 0xce: sprintf(t, "pop x"); break; + case 0xcf: sprintf(t, "mul ya"); break; + case 0xd0: sprintf(t, "bne $%.4x", __relb(op0, 2)); break; + case 0xd1: sprintf(t, "tcall 13"); break; + case 0xd2: sprintf(t, "clr6 $%.3x", opdp0); break; + case 0xd3: sprintf(t, "bbc6 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xd4: sprintf(t, "mov $%.3x+x,a", opdp0); break; + case 0xd5: sprintf(t, "mov $%.4x+x,a", opw); break; + case 0xd6: sprintf(t, "mov $%.4x+y,a", opw); break; + case 0xd7: sprintf(t, "mov ($%.3x)+y,a", opdp0); break; + case 0xd8: sprintf(t, "mov $%.3x,x", opdp0); break; + case 0xd9: sprintf(t, "mov $%.3x+y,x", opdp0); break; + case 0xda: sprintf(t, "movw $%.3x,ya", opdp0); break; + case 0xdb: sprintf(t, "mov $%.3x+x,y", opdp0); break; + case 0xdc: sprintf(t, "dec y"); break; + case 0xdd: sprintf(t, "mov a,y"); break; + case 0xde: sprintf(t, "cbne $%.3x+x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xdf: sprintf(t, "daa a"); break; + case 0xe0: sprintf(t, "clrv"); break; + case 0xe1: sprintf(t, "tcall 14"); break; + case 0xe2: sprintf(t, "set7 $%.3x", opdp0); break; + case 0xe3: sprintf(t, "bbs7 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xe4: sprintf(t, "mov a,$%.3x", opdp0); break; + case 0xe5: sprintf(t, "mov a,$%.4x", opw); break; + case 0xe6: sprintf(t, "mov a,(x)"); break; + case 0xe7: sprintf(t, "mov a,($%.3x+x)", opdp0); break; + case 0xe8: sprintf(t, "mov a,#$%.2x", op0); break; + case 0xe9: sprintf(t, "mov x,$%.4x", opw); break; + case 0xea: sprintf(t, "not1 c,$%.4x:%d", opw & 0x1fff, opw >> 13); break; + case 0xeb: sprintf(t, "mov y,$%.3x", opdp0); break; + case 0xec: sprintf(t, "mov y,$%.4x", opw); break; + case 0xed: sprintf(t, "notc"); break; + case 0xee: sprintf(t, "pop y"); break; + case 0xef: sprintf(t, "sleep"); break; + case 0xf0: sprintf(t, "beq $%.4x", __relb(op0, 2)); break; + case 0xf1: sprintf(t, "tcall 15"); break; + case 0xf2: sprintf(t, "clr7 $%.3x", opdp0); break; + case 0xf3: sprintf(t, "bbc7 $%.3x,$%.4x", opdp0, __relb(op1, 3)); break; + case 0xf4: sprintf(t, "mov a,$%.3x+x", opdp0); break; + case 0xf5: sprintf(t, "mov a,$%.4x+x", opw); break; + case 0xf6: sprintf(t, "mov a,$%.4x+y", opw); break; + case 0xf7: sprintf(t, "mov a,($%.3x)+y", opdp0); break; + case 0xf8: sprintf(t, "mov x,$%.3x", opdp0); break; + case 0xf9: sprintf(t, "mov x,$%.3x+y", opdp0); break; + case 0xfa: sprintf(t, "mov $%.3x,$%.3x", opdp1, opdp0); break; + case 0xfb: sprintf(t, "mov y,$%.3x+x", opdp0); break; + case 0xfc: sprintf(t, "inc y"); break; + case 0xfd: sprintf(t, "mov y,a"); break; + case 0xfe: sprintf(t, "dbnz y,$%.4x", __relb(op0, 2)); break; + case 0xff: sprintf(t, "stop"); break; + } + + t[strlen(t)] = ' '; + strcat(s, t); + + sprintf(t, "A:%.2x X:%.2x Y:%.2x SP:01%.2x YA:%.4x ", + regs.a, regs.x, regs.y, regs.sp, (uint16)regs.ya); + strcat(s, t); + + sprintf(t, "%c%c%c%c%c%c%c%c", + regs.p.n ? 'N' : 'n', + regs.p.v ? 'V' : 'v', + regs.p.p ? 'P' : 'p', + regs.p.b ? 'B' : 'b', + regs.p.h ? 'H' : 'h', + regs.p.i ? 'I' : 'i', + regs.p.z ? 'Z' : 'z', + regs.p.c ? 'C' : 'c'); + strcat(s, t); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/disassembler/disassembler.hpp b/libmednahawk/src/snes/src/smp/core/disassembler/disassembler.hpp new file mode 100644 index 0000000000..5e036efe86 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/disassembler/disassembler.hpp @@ -0,0 +1,2 @@ +void disassemble_opcode(char *output, uint16 addr); +inline uint16 __relb(int8 offset, int op_len); diff --git a/libmednahawk/src/snes/src/smp/core/memory.hpp b/libmednahawk/src/snes/src/smp/core/memory.hpp new file mode 100644 index 0000000000..2003972bfd --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/memory.hpp @@ -0,0 +1,27 @@ +alwaysinline uint8_t op_readpc() { + return op_read(regs.pc++); +} + +alwaysinline uint8_t op_readstack() { + return op_read(0x0100 | ++regs.sp); +} + +alwaysinline void op_writestack(uint8_t data) { + op_write(0x0100 | regs.sp--, data); +} + +alwaysinline uint8_t op_readaddr(uint16_t addr) { + return op_read(addr); +} + +alwaysinline void op_writeaddr(uint16_t addr, uint8_t data) { + op_write(addr, data); +} + +alwaysinline uint8_t op_readdp(uint8_t addr) { + return op_read(((unsigned)regs.p.p << 8) + addr); +} + +alwaysinline void op_writedp(uint8_t addr, uint8_t data) { + op_write(((unsigned)regs.p.p << 8) + addr, data); +} diff --git a/libmednahawk/src/snes/src/smp/core/opcode_misc.cpp b/libmednahawk/src/snes/src/smp/core/opcode_misc.cpp new file mode 100644 index 0000000000..c7eac099c1 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/opcode_misc.cpp @@ -0,0 +1,148 @@ +#ifdef SMPCORE_CPP + +void SMPcore::op_nop() { + op_io(); +} + +void SMPcore::op_wait() { + while(true) { + op_io(); + op_io(); + } +} + +void SMPcore::op_xcn() { + op_io(); + op_io(); + op_io(); + op_io(); + regs.a = (regs.a >> 4) | (regs.a << 4); + regs.p.n = (regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +void SMPcore::op_daa() { + op_io(); + op_io(); + if(regs.p.c || (regs.a) > 0x99) { + regs.a += 0x60; + regs.p.c = 1; + } + if(regs.p.h || (regs.a & 15) > 0x09) { + regs.a += 0x06; + } + regs.p.n = !!(regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +void SMPcore::op_das() { + op_io(); + op_io(); + if(!regs.p.c || (regs.a) > 0x99) { + regs.a -= 0x60; + regs.p.c = 0; + } + if(!regs.p.h || (regs.a & 15) > 0x09) { + regs.a -= 0x06; + } + regs.p.n = !!(regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +template void SMPcore::op_setbit() { + op_io(); + regs.p = (regs.p & ~mask) | value; +} + +void SMPcore::op_notc() { + op_io(); + op_io(); + regs.p.c = !regs.p.c; +} + +template void SMPcore::op_seti() { + op_io(); + op_io(); + regs.p.i = value; +} + +template void SMPcore::op_setbit_dp() { + dp = op_readpc(); + rd = op_readdp(dp); + rd = (op ? rd | value : rd & ~value); + op_writedp(dp, rd); +} + +template void SMPcore::op_push_reg() { + op_io(); + op_io(); + op_writestack(regs.r[n]); +} + +void SMPcore::op_push_p() { + op_io(); + op_io(); + op_writestack(regs.p); +} + +template void SMPcore::op_pop_reg() { + op_io(); + op_io(); + regs.r[n] = op_readstack(); +} + +void SMPcore::op_pop_p() { + op_io(); + op_io(); + regs.p = op_readstack(); +} + +void SMPcore::op_mul_ya() { + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + ya = regs.y * regs.a; + regs.a = ya; + regs.y = ya >> 8; + //result is set based on y (high-byte) only + regs.p.n = !!(regs.y & 0x80); + regs.p.z = (regs.y == 0); +} + +void SMPcore::op_div_ya_x() { + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + op_io(); + ya = regs.ya; + //overflow set if quotient >= 256 + regs.p.v = !!(regs.y >= regs.x); + regs.p.h = !!((regs.y & 15) >= (regs.x & 15)); + if(regs.y < (regs.x << 1)) { + //if quotient is <= 511 (will fit into 9-bit result) + regs.a = ya / regs.x; + regs.y = ya % regs.x; + } else { + //otherwise, the quotient won't fit into regs.p.v + regs.a + //this emulates the odd behavior of the S-SMP in this case + regs.a = 255 - (ya - (regs.x << 9)) / (256 - regs.x); + regs.y = regs.x + (ya - (regs.x << 9)) % (256 - regs.x); + } + //result is set based on a (quotient) only + regs.p.n = !!(regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/opcode_mov.cpp b/libmednahawk/src/snes/src/smp/core/opcode_mov.cpp new file mode 100644 index 0000000000..fc17e5ccd0 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/opcode_mov.cpp @@ -0,0 +1,200 @@ +#ifdef SMPCORE_CPP + +template void SMPcore::op_mov_reg_reg() { + op_io(); + regs.r[to] = regs.r[from]; + regs.p.n = (regs.r[to] & 0x80); + regs.p.z = (regs.r[to] == 0); +} + +void SMPcore::op_mov_sp_x() { + op_io(); + regs.sp = regs.x; +} + +template void SMPcore::op_mov_reg_const() { + regs.r[n] = op_readpc(); + regs.p.n = (regs.r[n] & 0x80); + regs.p.z = (regs.r[n] == 0); +} + +void SMPcore::op_mov_a_ix() { + op_io(); + regs.a = op_readdp(regs.x); + regs.p.n = (regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +void SMPcore::op_mov_a_ixinc() { + op_io(); + regs.a = op_readdp(regs.x++); + op_io(); + regs.p.n = (regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +template void SMPcore::op_mov_reg_dp() { + sp = op_readpc(); + regs.r[n] = op_readdp(sp); + regs.p.n = (regs.r[n] & 0x80); + regs.p.z = (regs.r[n] == 0); +} + +template void SMPcore::op_mov_reg_dpr() { + sp = op_readpc(); + op_io(); + regs.r[n] = op_readdp(sp + regs.r[i]); + regs.p.n = (regs.r[n] & 0x80); + regs.p.z = (regs.r[n] == 0); +} + +template void SMPcore::op_mov_reg_addr() { + sp = op_readpc() << 0; + sp |= op_readpc() << 8; + regs.r[n] = op_readaddr(sp); + regs.p.n = (regs.r[n] & 0x80); + regs.p.z = (regs.r[n] == 0); +} + +template void SMPcore::op_mov_a_addrr() { + sp = op_readpc() << 0; + sp |= op_readpc() << 8; + op_io(); + regs.a = op_readaddr(sp + regs.r[i]); + regs.p.n = (regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +void SMPcore::op_mov_a_idpx() { + dp = op_readpc() + regs.x; + op_io(); + sp = op_readdp(dp + 0) << 0; + sp |= op_readdp(dp + 1) << 8; + regs.a = op_readaddr(sp); + regs.p.n = (regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +void SMPcore::op_mov_a_idpy() { + dp = op_readpc(); + op_io(); + sp = op_readdp(dp + 0) << 0; + sp |= op_readdp(dp + 1) << 8; + regs.a = op_readaddr(sp + regs.y); + regs.p.n = (regs.a & 0x80); + regs.p.z = (regs.a == 0); +} + +void SMPcore::op_mov_dp_dp() { + sp = op_readpc(); + rd = op_readdp(sp); + dp = op_readpc(); + op_writedp(dp, rd); +} + +void SMPcore::op_mov_dp_const() { + rd = op_readpc(); + dp = op_readpc(); + op_readdp(dp); + op_writedp(dp, rd); +} + +void SMPcore::op_mov_ix_a() { + op_io(); + op_readdp(regs.x); + op_writedp(regs.x, regs.a); +} + +void SMPcore::op_mov_ixinc_a() { + op_io(); + op_io(); + op_writedp(regs.x++, regs.a); +} + +template void SMPcore::op_mov_dp_reg() { + dp = op_readpc(); + op_readdp(dp); + op_writedp(dp, regs.r[n]); +} + +template void SMPcore::op_mov_dpr_reg() { + dp = op_readpc(); + op_io(); + dp += regs.r[i]; + op_readdp(dp); + op_writedp(dp, regs.r[n]); +} + +template void SMPcore::op_mov_addr_reg() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + op_readaddr(dp); + op_writeaddr(dp, regs.r[n]); +} + +template void SMPcore::op_mov_addrr_a() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + op_io(); + dp += regs.r[i]; + op_readaddr(dp); + op_writeaddr(dp, regs.a); +} + +void SMPcore::op_mov_idpx_a() { + sp = op_readpc(); + op_io(); + sp += regs.x; + dp = op_readdp(sp + 0) << 0; + dp |= op_readdp(sp + 1) << 8; + op_readaddr(dp); + op_writeaddr(dp, regs.a); +} + +void SMPcore::op_mov_idpy_a() { + sp = op_readpc(); + dp = op_readdp(sp + 0) << 0; + dp |= op_readdp(sp + 1) << 8; + op_io(); + dp += regs.y; + op_readaddr(dp); + op_writeaddr(dp, regs.a); +} + +void SMPcore::op_movw_ya_dp() { + sp = op_readpc(); + regs.a = op_readdp(sp + 0); + op_io(); + regs.y = op_readdp(sp + 1); + regs.p.n = (regs.ya & 0x8000); + regs.p.z = (regs.ya == 0); +} + +void SMPcore::op_movw_dp_ya() { + dp = op_readpc(); + op_readdp(dp); + op_writedp(dp + 0, regs.a); + op_writedp(dp + 1, regs.y); +} + +void SMPcore::op_mov1_c_bit() { + sp = op_readpc() << 0; + sp |= op_readpc() << 8; + bit = sp >> 13; + sp &= 0x1fff; + rd = op_readaddr(sp); + regs.p.c = (rd & (1 << bit)); +} + +void SMPcore::op_mov1_bit_c() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + bit = dp >> 13; + dp &= 0x1fff; + rd = op_readaddr(dp); + (regs.p.c) ? rd |= (1 << bit) : rd &= ~(1 << bit); + op_io(); + op_writeaddr(dp, rd); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/opcode_pc.cpp b/libmednahawk/src/snes/src/smp/core/opcode_pc.cpp new file mode 100644 index 0000000000..1443df98f7 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/opcode_pc.cpp @@ -0,0 +1,152 @@ +#ifdef SMPCORE_CPP + +void SMPcore::op_bra() { + rd = op_readpc(); + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +template void SMPcore::op_branch() { + rd = op_readpc(); + if((bool)(regs.p & flag) != value) return; + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +template void SMPcore::op_bitbranch() { + dp = op_readpc(); + sp = op_readdp(dp); + rd = op_readpc(); + op_io(); + if((bool)(sp & mask) != value) return; + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +void SMPcore::op_cbne_dp() { + dp = op_readpc(); + sp = op_readdp(dp); + rd = op_readpc(); + op_io(); + if(regs.a == sp) return; + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +void SMPcore::op_cbne_dpx() { + dp = op_readpc(); + op_io(); + sp = op_readdp(dp + regs.x); + rd = op_readpc(); + op_io(); + if(regs.a == sp) return; + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +void SMPcore::op_dbnz_dp() { + dp = op_readpc(); + wr = op_readdp(dp); + op_writedp(dp, --wr); + rd = op_readpc(); + if(wr == 0) return; + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +void SMPcore::op_dbnz_y() { + rd = op_readpc(); + op_io(); + regs.y--; + op_io(); + if(regs.y == 0) return; + op_io(); + op_io(); + regs.pc += (int8)rd; +} + +void SMPcore::op_jmp_addr() { + rd = op_readpc() << 0; + rd |= op_readpc() << 8; + regs.pc = rd; +} + +void SMPcore::op_jmp_iaddrx() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + op_io(); + dp += regs.x; + rd = op_readaddr(dp + 0) << 0; + rd |= op_readaddr(dp + 1) << 8; + regs.pc = rd; +} + +void SMPcore::op_call() { + rd = op_readpc() << 0; + rd |= op_readpc() << 8; + op_io(); + op_io(); + op_io(); + op_writestack(regs.pc >> 8); + op_writestack(regs.pc >> 0); + regs.pc = rd; +} + +void SMPcore::op_pcall() { + rd = op_readpc(); + op_io(); + op_io(); + op_writestack(regs.pc >> 8); + op_writestack(regs.pc >> 0); + regs.pc = 0xff00 | rd; +} + +template void SMPcore::op_tcall() { + dp = 0xffde - (n << 1); + rd = op_readaddr(dp + 0) << 0; + rd |= op_readaddr(dp + 1) << 8; + op_io(); + op_io(); + op_io(); + op_writestack(regs.pc >> 8); + op_writestack(regs.pc >> 0); + regs.pc = rd; +} + +void SMPcore::op_brk() { + rd = op_readaddr(0xffde) << 0; + rd |= op_readaddr(0xffdf) << 8; + op_io(); + op_io(); + op_writestack(regs.pc >> 8); + op_writestack(regs.pc >> 0); + op_writestack(regs.p); + regs.pc = rd; + regs.p.b = 1; + regs.p.i = 0; +} + +void SMPcore::op_ret() { + rd = op_readstack() << 0; + rd |= op_readstack() << 8; + op_io(); + op_io(); + regs.pc = rd; +} + +void SMPcore::op_reti() { + regs.p = op_readstack(); + rd = op_readstack() << 0; + rd |= op_readstack() << 8; + op_io(); + op_io(); + regs.pc = rd; +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/opcode_read.cpp b/libmednahawk/src/snes/src/smp/core/opcode_read.cpp new file mode 100644 index 0000000000..e0258c5814 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/opcode_read.cpp @@ -0,0 +1,154 @@ +#ifdef SMPCORE_CPP + +template +void SMPcore::op_read_reg_const() { + rd = op_readpc(); + regs.r[n] = (this->*op)(regs.r[n], rd); +} + +template +void SMPcore::op_read_a_ix() { + op_io(); + rd = op_readdp(regs.x); + regs.a = (this->*op)(regs.a, rd); +} + +template +void SMPcore::op_read_reg_dp() { + dp = op_readpc(); + rd = op_readdp(dp); + regs.r[n] = (this->*op)(regs.r[n], rd); +} + +template +void SMPcore::op_read_a_dpx() { + dp = op_readpc(); + op_io(); + rd = op_readdp(dp + regs.x); + regs.a = (this->*op)(regs.a, rd); +} + +template +void SMPcore::op_read_reg_addr() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + rd = op_readaddr(dp); + regs.r[n] = (this->*op)(regs.r[n], rd); +} + +template +void SMPcore::op_read_a_addrr() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + op_io(); + rd = op_readaddr(dp + regs.r[i]); + regs.a = (this->*op)(regs.a, rd); +} + +template +void SMPcore::op_read_a_idpx() { + dp = op_readpc() + regs.x; + op_io(); + sp = op_readdp(dp + 0) << 0; + sp |= op_readdp(dp + 1) << 8; + rd = op_readaddr(sp); + regs.a = (this->*op)(regs.a, rd); +} + +template +void SMPcore::op_read_a_idpy() { + dp = op_readpc(); + op_io(); + sp = op_readdp(dp + 0) << 0; + sp |= op_readdp(dp + 1) << 8; + rd = op_readaddr(sp + regs.y); + regs.a = (this->*op)(regs.a, rd); +} + +template +void SMPcore::op_read_ix_iy() { + op_io(); + rd = op_readdp(regs.y); + wr = op_readdp(regs.x); + wr = (this->*op)(wr, rd); + static uint8 (SMPcore::*cmp)(uint8, uint8) = &SMPcore::op_cmp; + (op != cmp) ? op_writedp(regs.x, wr) : op_io(); +} + +template +void SMPcore::op_read_dp_dp() { + sp = op_readpc(); + rd = op_readdp(sp); + dp = op_readpc(); + wr = op_readdp(dp); + wr = (this->*op)(wr, rd); + static uint8 (SMPcore::*cmp)(uint8, uint8) = &SMPcore::op_cmp; + (op != cmp) ? op_writedp(dp, wr) : op_io(); +} + +template +void SMPcore::op_read_dp_const() { + rd = op_readpc(); + dp = op_readpc(); + wr = op_readdp(dp); + wr = (this->*op)(wr, rd); + static uint8 (SMPcore::*cmp)(uint8, uint8) = &SMPcore::op_cmp; + (op != cmp) ? op_writedp(dp, wr) : op_io(); +} + +template +void SMPcore::op_read_ya_dp() { + dp = op_readpc(); + rd = op_readdp(dp + 0) << 0; + op_io(); + rd |= op_readdp(dp + 1) << 8; + regs.ya = (this->*op)(regs.ya, rd); +} + +void SMPcore::op_cmpw_ya_dp() { + dp = op_readpc(); + rd = op_readdp(dp + 0) << 0; + rd |= op_readdp(dp + 1) << 8; + op_cmpw(regs.ya, rd); +} + +template void SMPcore::op_and1_bit() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + bit = dp >> 13; + dp &= 0x1fff; + rd = op_readaddr(dp); + regs.p.c = regs.p.c & ((bool)(rd & (1 << bit)) ^ op); +} + +void SMPcore::op_eor1_bit() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + bit = dp >> 13; + dp &= 0x1fff; + rd = op_readaddr(dp); + op_io(); + regs.p.c = regs.p.c ^ (bool)(rd & (1 << bit)); +} + +void SMPcore::op_not1_bit() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + bit = dp >> 13; + dp &= 0x1fff; + rd = op_readaddr(dp); + rd ^= 1 << bit; + op_writeaddr(dp, rd); +} + +template void SMPcore::op_or1_bit() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + bit = dp >> 13; + dp &= 0x1fff; + rd = op_readaddr(dp); + op_io(); + regs.p.c = regs.p.c | ((bool)(rd & (1 << bit)) ^ op); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/opcode_rmw.cpp b/libmednahawk/src/snes/src/smp/core/opcode_rmw.cpp new file mode 100644 index 0000000000..e7ee4d334d --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/opcode_rmw.cpp @@ -0,0 +1,58 @@ +#ifdef SMPCORE_CPP + +template +void SMPcore::op_adjust_reg() { + op_io(); + regs.r[n] = (this->*op)(regs.r[n]); +} + +template +void SMPcore::op_adjust_dp() { + dp = op_readpc(); + rd = op_readdp(dp); + rd = (this->*op)(rd); + op_writedp(dp, rd); +} + +template +void SMPcore::op_adjust_dpx() { + dp = op_readpc(); + op_io(); + rd = op_readdp(dp + regs.x); + rd = (this->*op)(rd); + op_writedp(dp + regs.x, rd); +} + +template +void SMPcore::op_adjust_addr() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + rd = op_readaddr(dp); + rd = (this->*op)(rd); + op_writeaddr(dp, rd); +} + +template +void SMPcore::op_adjust_addr_a() { + dp = op_readpc() << 0; + dp |= op_readpc() << 8; + rd = op_readaddr(dp); + regs.p.n = ((regs.a - rd) & 0x80); + regs.p.z = ((regs.a - rd) == 0); + op_readaddr(dp); + op_writeaddr(dp, (op ? rd | regs.a : rd & ~regs.a)); +} + +template +void SMPcore::op_adjustw_dp() { + dp = op_readpc(); + rd = op_readdp(dp) << 0; + rd += adjust; + op_writedp(dp++, rd); + rd += op_readdp(dp) << 8; + op_writedp(dp, rd >> 8); + regs.p.n = (rd & 0x8000); + regs.p.z = (rd == 0); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/registers.hpp b/libmednahawk/src/snes/src/smp/core/registers.hpp new file mode 100644 index 0000000000..35a34cad60 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/registers.hpp @@ -0,0 +1,44 @@ +struct regya_t { + uint8_t &hi, &lo; + + inline operator uint16_t() const { + return (hi << 8) + lo; + } + + inline regya_t& operator=(uint16_t data) { + hi = data >> 8; + lo = data; + return *this; + } + + regya_t(uint8_t &hi_, uint8_t &lo_) : hi(hi_), lo(lo_) {} +}; + +struct flag_t { + bool n, v, p, b, h, i, z, c; + + inline operator unsigned() const { + return (n << 7) + (v << 6) + (p << 5) + (b << 4) + + (h << 3) + (i << 2) + (z << 1) + (c << 0); + } + + inline unsigned operator=(uint8_t data) { + n = data & 0x80; v = data & 0x40; p = data & 0x20; b = data & 0x10; + h = data & 0x08; i = data & 0x04; z = data & 0x02; c = data & 0x01; + return data; + } + + inline unsigned operator|=(unsigned data) { return operator=(operator unsigned() | data); } + inline unsigned operator^=(unsigned data) { return operator=(operator unsigned() ^ data); } + inline unsigned operator&=(unsigned data) { return operator=(operator unsigned() & data); } + + flag_t() : n(0), v(0), p(0), b(0), h(0), i(0), z(0), c(0) {} +}; + +struct regs_t { + uint16_t pc; + uint8_t r[4], &a, &x, &y, &sp; + regya_t ya; + flag_t p; + regs_t() : a(r[0]), x(r[1]), y(r[2]), sp(r[3]), ya(r[2], r[0]) {} +}; diff --git a/libmednahawk/src/snes/src/smp/core/serialization.cpp b/libmednahawk/src/snes/src/smp/core/serialization.cpp new file mode 100644 index 0000000000..dfad416247 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/serialization.cpp @@ -0,0 +1,26 @@ +#ifdef SMPCORE_CPP + +void SMPcore::core_serialize(serializer &s) { + s.integer(regs.pc); + s.integer(regs.a); + s.integer(regs.x); + s.integer(regs.y); + s.integer(regs.sp); + s.integer(regs.p.n); + s.integer(regs.p.v); + s.integer(regs.p.p); + s.integer(regs.p.b); + s.integer(regs.p.h); + s.integer(regs.p.i); + s.integer(regs.p.z); + s.integer(regs.p.c); + + s.integer(dp); + s.integer(sp); + s.integer(rd); + s.integer(wr); + s.integer(bit); + s.integer(ya); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/core/table.cpp b/libmednahawk/src/snes/src/smp/core/table.cpp new file mode 100644 index 0000000000..035cf23b5d --- /dev/null +++ b/libmednahawk/src/snes/src/smp/core/table.cpp @@ -0,0 +1,264 @@ +#ifdef SMPCORE_CPP + +void SMPcore::initialize_opcode_table() { + #define op opcode_table + op[0x00] = &SMPcore::op_nop; + op[0x01] = &SMPcore::op_tcall<0>; + op[0x02] = &SMPcore::op_setbit_dp<1, 0x01>; + op[0x03] = &SMPcore::op_bitbranch<0x01, true>; + op[0x04] = &SMPcore::op_read_reg_dp<&SMPcore::op_or, A>; + op[0x05] = &SMPcore::op_read_reg_addr<&SMPcore::op_or, A>; + op[0x06] = &SMPcore::op_read_a_ix<&SMPcore::op_or>; + op[0x07] = &SMPcore::op_read_a_idpx<&SMPcore::op_or>; + op[0x08] = &SMPcore::op_read_reg_const<&SMPcore::op_or, A>; + op[0x09] = &SMPcore::op_read_dp_dp<&SMPcore::op_or>; + op[0x0a] = &SMPcore::op_or1_bit<0>; + op[0x0b] = &SMPcore::op_adjust_dp<&SMPcore::op_asl>; + op[0x0c] = &SMPcore::op_adjust_addr<&SMPcore::op_asl>; + op[0x0d] = &SMPcore::op_push_p; + op[0x0e] = &SMPcore::op_adjust_addr_a<1>; + op[0x0f] = &SMPcore::op_brk; + op[0x10] = &SMPcore::op_branch<0x80, false>; + op[0x11] = &SMPcore::op_tcall<1>; + op[0x12] = &SMPcore::op_setbit_dp<0, 0x01>; + op[0x13] = &SMPcore::op_bitbranch<0x01, false>; + op[0x14] = &SMPcore::op_read_a_dpx<&SMPcore::op_or>; + op[0x15] = &SMPcore::op_read_a_addrr<&SMPcore::op_or, X>; + op[0x16] = &SMPcore::op_read_a_addrr<&SMPcore::op_or, Y>; + op[0x17] = &SMPcore::op_read_a_idpy<&SMPcore::op_or>; + op[0x18] = &SMPcore::op_read_dp_const<&SMPcore::op_or>; + op[0x19] = &SMPcore::op_read_ix_iy<&SMPcore::op_or>; + op[0x1a] = &SMPcore::op_adjustw_dp<-1>; + op[0x1b] = &SMPcore::op_adjust_dpx<&SMPcore::op_asl>; + op[0x1c] = &SMPcore::op_adjust_reg<&SMPcore::op_asl, A>; + op[0x1d] = &SMPcore::op_adjust_reg<&SMPcore::op_dec, X>; + op[0x1e] = &SMPcore::op_read_reg_addr<&SMPcore::op_cmp, X>; + op[0x1f] = &SMPcore::op_jmp_iaddrx; + op[0x20] = &SMPcore::op_setbit<0x20, 0x00>; + op[0x21] = &SMPcore::op_tcall<2>; + op[0x22] = &SMPcore::op_setbit_dp<1, 0x02>; + op[0x23] = &SMPcore::op_bitbranch<0x02, true>; + op[0x24] = &SMPcore::op_read_reg_dp<&SMPcore::op_and, A>; + op[0x25] = &SMPcore::op_read_reg_addr<&SMPcore::op_and, A>; + op[0x26] = &SMPcore::op_read_a_ix<&SMPcore::op_and>; + op[0x27] = &SMPcore::op_read_a_idpx<&SMPcore::op_and>; + op[0x28] = &SMPcore::op_read_reg_const<&SMPcore::op_and, A>; + op[0x29] = &SMPcore::op_read_dp_dp<&SMPcore::op_and>; + op[0x2a] = &SMPcore::op_or1_bit<1>; + op[0x2b] = &SMPcore::op_adjust_dp<&SMPcore::op_rol>; + op[0x2c] = &SMPcore::op_adjust_addr<&SMPcore::op_rol>; + op[0x2d] = &SMPcore::op_push_reg; + op[0x2e] = &SMPcore::op_cbne_dp; + op[0x2f] = &SMPcore::op_bra; + op[0x30] = &SMPcore::op_branch<0x80, true>; + op[0x31] = &SMPcore::op_tcall<3>; + op[0x32] = &SMPcore::op_setbit_dp<0, 0x02>; + op[0x33] = &SMPcore::op_bitbranch<0x02, false>; + op[0x34] = &SMPcore::op_read_a_dpx<&SMPcore::op_and>; + op[0x35] = &SMPcore::op_read_a_addrr<&SMPcore::op_and, X>; + op[0x36] = &SMPcore::op_read_a_addrr<&SMPcore::op_and, Y>; + op[0x37] = &SMPcore::op_read_a_idpy<&SMPcore::op_and>; + op[0x38] = &SMPcore::op_read_dp_const<&SMPcore::op_and>; + op[0x39] = &SMPcore::op_read_ix_iy<&SMPcore::op_and>; + op[0x3a] = &SMPcore::op_adjustw_dp<+1>; + op[0x3b] = &SMPcore::op_adjust_dpx<&SMPcore::op_rol>; + op[0x3c] = &SMPcore::op_adjust_reg<&SMPcore::op_rol, A>; + op[0x3d] = &SMPcore::op_adjust_reg<&SMPcore::op_inc, X>; + op[0x3e] = &SMPcore::op_read_reg_dp<&SMPcore::op_cmp, X>; + op[0x3f] = &SMPcore::op_call; + op[0x40] = &SMPcore::op_setbit<0x20, 0x20>; + op[0x41] = &SMPcore::op_tcall<4>; + op[0x42] = &SMPcore::op_setbit_dp<1, 0x04>; + op[0x43] = &SMPcore::op_bitbranch<0x04, true>; + op[0x44] = &SMPcore::op_read_reg_dp<&SMPcore::op_eor, A>; + op[0x45] = &SMPcore::op_read_reg_addr<&SMPcore::op_eor, A>; + op[0x46] = &SMPcore::op_read_a_ix<&SMPcore::op_eor>; + op[0x47] = &SMPcore::op_read_a_idpx<&SMPcore::op_eor>; + op[0x48] = &SMPcore::op_read_reg_const<&SMPcore::op_eor, A>; + op[0x49] = &SMPcore::op_read_dp_dp<&SMPcore::op_eor>; + op[0x4a] = &SMPcore::op_and1_bit<0>; + op[0x4b] = &SMPcore::op_adjust_dp<&SMPcore::op_lsr>; + op[0x4c] = &SMPcore::op_adjust_addr<&SMPcore::op_lsr>; + op[0x4d] = &SMPcore::op_push_reg; + op[0x4e] = &SMPcore::op_adjust_addr_a<0>; + op[0x4f] = &SMPcore::op_pcall; + op[0x50] = &SMPcore::op_branch<0x40, false>; + op[0x51] = &SMPcore::op_tcall<5>; + op[0x52] = &SMPcore::op_setbit_dp<0, 0x04>; + op[0x53] = &SMPcore::op_bitbranch<0x04, false>; + op[0x54] = &SMPcore::op_read_a_dpx<&SMPcore::op_eor>; + op[0x55] = &SMPcore::op_read_a_addrr<&SMPcore::op_eor, X>; + op[0x56] = &SMPcore::op_read_a_addrr<&SMPcore::op_eor, Y>; + op[0x57] = &SMPcore::op_read_a_idpy<&SMPcore::op_eor>; + op[0x58] = &SMPcore::op_read_dp_const<&SMPcore::op_eor>; + op[0x59] = &SMPcore::op_read_ix_iy<&SMPcore::op_eor>; + op[0x5a] = &SMPcore::op_cmpw_ya_dp; + op[0x5b] = &SMPcore::op_adjust_dpx<&SMPcore::op_lsr>; + op[0x5c] = &SMPcore::op_adjust_reg<&SMPcore::op_lsr, A>; + op[0x5d] = &SMPcore::op_mov_reg_reg; + op[0x5e] = &SMPcore::op_read_reg_addr<&SMPcore::op_cmp, Y>; + op[0x5f] = &SMPcore::op_jmp_addr; + op[0x60] = &SMPcore::op_setbit<0x01, 0x00>; + op[0x61] = &SMPcore::op_tcall<6>; + op[0x62] = &SMPcore::op_setbit_dp<1, 0x08>; + op[0x63] = &SMPcore::op_bitbranch<0x08, true>; + op[0x64] = &SMPcore::op_read_reg_dp<&SMPcore::op_cmp, A>; + op[0x65] = &SMPcore::op_read_reg_addr<&SMPcore::op_cmp, A>; + op[0x66] = &SMPcore::op_read_a_ix<&SMPcore::op_cmp>; + op[0x67] = &SMPcore::op_read_a_idpx<&SMPcore::op_cmp>; + op[0x68] = &SMPcore::op_read_reg_const<&SMPcore::op_cmp, A>; + op[0x69] = &SMPcore::op_read_dp_dp<&SMPcore::op_cmp>; + op[0x6a] = &SMPcore::op_and1_bit<1>; + op[0x6b] = &SMPcore::op_adjust_dp<&SMPcore::op_ror>; + op[0x6c] = &SMPcore::op_adjust_addr<&SMPcore::op_ror>; + op[0x6d] = &SMPcore::op_push_reg; + op[0x6e] = &SMPcore::op_dbnz_dp; + op[0x6f] = &SMPcore::op_ret; + op[0x70] = &SMPcore::op_branch<0x40, true>; + op[0x71] = &SMPcore::op_tcall<7>; + op[0x72] = &SMPcore::op_setbit_dp<0, 0x08>; + op[0x73] = &SMPcore::op_bitbranch<0x08, false>; + op[0x74] = &SMPcore::op_read_a_dpx<&SMPcore::op_cmp>; + op[0x75] = &SMPcore::op_read_a_addrr<&SMPcore::op_cmp, X>; + op[0x76] = &SMPcore::op_read_a_addrr<&SMPcore::op_cmp, Y>; + op[0x77] = &SMPcore::op_read_a_idpy<&SMPcore::op_cmp>; + op[0x78] = &SMPcore::op_read_dp_const<&SMPcore::op_cmp>; + op[0x79] = &SMPcore::op_read_ix_iy<&SMPcore::op_cmp>; + op[0x7a] = &SMPcore::op_read_ya_dp<&SMPcore::op_addw>; + op[0x7b] = &SMPcore::op_adjust_dpx<&SMPcore::op_ror>; + op[0x7c] = &SMPcore::op_adjust_reg<&SMPcore::op_ror, A>; + op[0x7d] = &SMPcore::op_mov_reg_reg; + op[0x7e] = &SMPcore::op_read_reg_dp<&SMPcore::op_cmp, Y>; + op[0x7f] = &SMPcore::op_reti; + op[0x80] = &SMPcore::op_setbit<0x01, 0x01>; + op[0x81] = &SMPcore::op_tcall<8>; + op[0x82] = &SMPcore::op_setbit_dp<1, 0x10>; + op[0x83] = &SMPcore::op_bitbranch<0x10, true>; + op[0x84] = &SMPcore::op_read_reg_dp<&SMPcore::op_adc, A>; + op[0x85] = &SMPcore::op_read_reg_addr<&SMPcore::op_adc, A>; + op[0x86] = &SMPcore::op_read_a_ix<&SMPcore::op_adc>; + op[0x87] = &SMPcore::op_read_a_idpx<&SMPcore::op_adc>; + op[0x88] = &SMPcore::op_read_reg_const<&SMPcore::op_adc, A>; + op[0x89] = &SMPcore::op_read_dp_dp<&SMPcore::op_adc>; + op[0x8a] = &SMPcore::op_eor1_bit; + op[0x8b] = &SMPcore::op_adjust_dp<&SMPcore::op_dec>; + op[0x8c] = &SMPcore::op_adjust_addr<&SMPcore::op_dec>; + op[0x8d] = &SMPcore::op_mov_reg_const; + op[0x8e] = &SMPcore::op_pop_p; + op[0x8f] = &SMPcore::op_mov_dp_const; + op[0x90] = &SMPcore::op_branch<0x01, false>; + op[0x91] = &SMPcore::op_tcall<9>; + op[0x92] = &SMPcore::op_setbit_dp<0, 0x10>; + op[0x93] = &SMPcore::op_bitbranch<0x10, false>; + op[0x94] = &SMPcore::op_read_a_dpx<&SMPcore::op_adc>; + op[0x95] = &SMPcore::op_read_a_addrr<&SMPcore::op_adc, X>; + op[0x96] = &SMPcore::op_read_a_addrr<&SMPcore::op_adc, Y>; + op[0x97] = &SMPcore::op_read_a_idpy<&SMPcore::op_adc>; + op[0x98] = &SMPcore::op_read_dp_const<&SMPcore::op_adc>; + op[0x99] = &SMPcore::op_read_ix_iy<&SMPcore::op_adc>; + op[0x9a] = &SMPcore::op_read_ya_dp<&SMPcore::op_subw>; + op[0x9b] = &SMPcore::op_adjust_dpx<&SMPcore::op_dec>; + op[0x9c] = &SMPcore::op_adjust_reg<&SMPcore::op_dec, A>; + op[0x9d] = &SMPcore::op_mov_reg_reg; + op[0x9e] = &SMPcore::op_div_ya_x; + op[0x9f] = &SMPcore::op_xcn; + op[0xa0] = &SMPcore::op_seti<1>; + op[0xa1] = &SMPcore::op_tcall<10>; + op[0xa2] = &SMPcore::op_setbit_dp<1, 0x20>; + op[0xa3] = &SMPcore::op_bitbranch<0x20, true>; + op[0xa4] = &SMPcore::op_read_reg_dp<&SMPcore::op_sbc, A>; + op[0xa5] = &SMPcore::op_read_reg_addr<&SMPcore::op_sbc, A>; + op[0xa6] = &SMPcore::op_read_a_ix<&SMPcore::op_sbc>; + op[0xa7] = &SMPcore::op_read_a_idpx<&SMPcore::op_sbc>; + op[0xa8] = &SMPcore::op_read_reg_const<&SMPcore::op_sbc, A>; + op[0xa9] = &SMPcore::op_read_dp_dp<&SMPcore::op_sbc>; + op[0xaa] = &SMPcore::op_mov1_c_bit; + op[0xab] = &SMPcore::op_adjust_dp<&SMPcore::op_inc>; + op[0xac] = &SMPcore::op_adjust_addr<&SMPcore::op_inc>; + op[0xad] = &SMPcore::op_read_reg_const<&SMPcore::op_cmp, Y>; + op[0xae] = &SMPcore::op_pop_reg; + op[0xaf] = &SMPcore::op_mov_ixinc_a; + op[0xb0] = &SMPcore::op_branch<0x01, true>; + op[0xb1] = &SMPcore::op_tcall<11>; + op[0xb2] = &SMPcore::op_setbit_dp<0, 0x20>; + op[0xb3] = &SMPcore::op_bitbranch<0x20, false>; + op[0xb4] = &SMPcore::op_read_a_dpx<&SMPcore::op_sbc>; + op[0xb5] = &SMPcore::op_read_a_addrr<&SMPcore::op_sbc, X>; + op[0xb6] = &SMPcore::op_read_a_addrr<&SMPcore::op_sbc, Y>; + op[0xb7] = &SMPcore::op_read_a_idpy<&SMPcore::op_sbc>; + op[0xb8] = &SMPcore::op_read_dp_const<&SMPcore::op_sbc>; + op[0xb9] = &SMPcore::op_read_ix_iy<&SMPcore::op_sbc>; + op[0xba] = &SMPcore::op_movw_ya_dp; + op[0xbb] = &SMPcore::op_adjust_dpx<&SMPcore::op_inc>; + op[0xbc] = &SMPcore::op_adjust_reg<&SMPcore::op_inc, A>; + op[0xbd] = &SMPcore::op_mov_sp_x; + op[0xbe] = &SMPcore::op_das; + op[0xbf] = &SMPcore::op_mov_a_ixinc; + op[0xc0] = &SMPcore::op_seti<0>; + op[0xc1] = &SMPcore::op_tcall<12>; + op[0xc2] = &SMPcore::op_setbit_dp<1, 0x40>; + op[0xc3] = &SMPcore::op_bitbranch<0x40, true>; + op[0xc4] = &SMPcore::op_mov_dp_reg; + op[0xc5] = &SMPcore::op_mov_addr_reg; + op[0xc6] = &SMPcore::op_mov_ix_a; + op[0xc7] = &SMPcore::op_mov_idpx_a; + op[0xc8] = &SMPcore::op_read_reg_const<&SMPcore::op_cmp, X>; + op[0xc9] = &SMPcore::op_mov_addr_reg; + op[0xca] = &SMPcore::op_mov1_bit_c; + op[0xcb] = &SMPcore::op_mov_dp_reg; + op[0xcc] = &SMPcore::op_mov_addr_reg; + op[0xcd] = &SMPcore::op_mov_reg_const; + op[0xce] = &SMPcore::op_pop_reg; + op[0xcf] = &SMPcore::op_mul_ya; + op[0xd0] = &SMPcore::op_branch<0x02, false>; + op[0xd1] = &SMPcore::op_tcall<13>; + op[0xd2] = &SMPcore::op_setbit_dp<0, 0x40>; + op[0xd3] = &SMPcore::op_bitbranch<0x40, false>; + op[0xd4] = &SMPcore::op_mov_dpr_reg; + op[0xd5] = &SMPcore::op_mov_addrr_a; + op[0xd6] = &SMPcore::op_mov_addrr_a; + op[0xd7] = &SMPcore::op_mov_idpy_a; + op[0xd8] = &SMPcore::op_mov_dp_reg; + op[0xd9] = &SMPcore::op_mov_dpr_reg; + op[0xda] = &SMPcore::op_movw_dp_ya; + op[0xdb] = &SMPcore::op_mov_dpr_reg; + op[0xdc] = &SMPcore::op_adjust_reg<&SMPcore::op_dec, Y>; + op[0xdd] = &SMPcore::op_mov_reg_reg; + op[0xde] = &SMPcore::op_cbne_dpx; + op[0xdf] = &SMPcore::op_daa; + op[0xe0] = &SMPcore::op_setbit<0x48, 0x00>; + op[0xe1] = &SMPcore::op_tcall<14>; + op[0xe2] = &SMPcore::op_setbit_dp<1, 0x80>; + op[0xe3] = &SMPcore::op_bitbranch<0x80, true>; + op[0xe4] = &SMPcore::op_mov_reg_dp; + op[0xe5] = &SMPcore::op_mov_reg_addr; + op[0xe6] = &SMPcore::op_mov_a_ix; + op[0xe7] = &SMPcore::op_mov_a_idpx; + op[0xe8] = &SMPcore::op_mov_reg_const; + op[0xe9] = &SMPcore::op_mov_reg_addr; + op[0xea] = &SMPcore::op_not1_bit; + op[0xeb] = &SMPcore::op_mov_reg_dp; + op[0xec] = &SMPcore::op_mov_reg_addr; + op[0xed] = &SMPcore::op_notc; + op[0xee] = &SMPcore::op_pop_reg; + op[0xef] = &SMPcore::op_wait; + op[0xf0] = &SMPcore::op_branch<0x02, true>; + op[0xf1] = &SMPcore::op_tcall<15>; + op[0xf2] = &SMPcore::op_setbit_dp<0, 0x80>; + op[0xf3] = &SMPcore::op_bitbranch<0x80, false>; + op[0xf4] = &SMPcore::op_mov_reg_dpr; + op[0xf5] = &SMPcore::op_mov_a_addrr; + op[0xf6] = &SMPcore::op_mov_a_addrr; + op[0xf7] = &SMPcore::op_mov_a_idpy; + op[0xf8] = &SMPcore::op_mov_reg_dp; + op[0xf9] = &SMPcore::op_mov_reg_dpr; + op[0xfa] = &SMPcore::op_mov_dp_dp; + op[0xfb] = &SMPcore::op_mov_reg_dpr; + op[0xfc] = &SMPcore::op_adjust_reg<&SMPcore::op_inc, Y>; + op[0xfd] = &SMPcore::op_mov_reg_reg; + op[0xfe] = &SMPcore::op_dbnz_y; + op[0xff] = &SMPcore::op_wait; + #undef op +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/smp.cpp b/libmednahawk/src/snes/src/smp/smp.cpp new file mode 100644 index 0000000000..66f9fcc5ad --- /dev/null +++ b/libmednahawk/src/snes/src/smp/smp.cpp @@ -0,0 +1,47 @@ +#include <../base.hpp> + +#define SMP_CPP +namespace SNES { + +//this is the IPLROM for the S-SMP coprocessor. +//the S-SMP does not allow writing to the IPLROM. +//all writes are instead mapped to the extended +//RAM region, accessible when $f1.d7 is clear. + +const uint8_t SMP::iplrom[64] = { +/*ffc0*/ 0xcd, 0xef, //mov x,#$ef +/*ffc2*/ 0xbd, //mov sp,x +/*ffc3*/ 0xe8, 0x00, //mov a,#$00 +/*ffc5*/ 0xc6, //mov (x),a +/*ffc6*/ 0x1d, //dec x +/*ffc7*/ 0xd0, 0xfc, //bne $ffc5 +/*ffc9*/ 0x8f, 0xaa, 0xf4, //mov $f4,#$aa +/*ffcc*/ 0x8f, 0xbb, 0xf5, //mov $f5,#$bb +/*ffcf*/ 0x78, 0xcc, 0xf4, //cmp $f4,#$cc +/*ffd2*/ 0xd0, 0xfb, //bne $ffcf +/*ffd4*/ 0x2f, 0x19, //bra $ffef +/*ffd6*/ 0xeb, 0xf4, //mov y,$f4 +/*ffd8*/ 0xd0, 0xfc, //bne $ffd6 +/*ffda*/ 0x7e, 0xf4, //cmp y,$f4 +/*ffdc*/ 0xd0, 0x0b, //bne $ffe9 +/*ffde*/ 0xe4, 0xf5, //mov a,$f5 +/*ffe0*/ 0xcb, 0xf4, //mov $f4,y +/*ffe2*/ 0xd7, 0x00, //mov ($00)+y,a +/*ffe4*/ 0xfc, //inc y +/*ffe5*/ 0xd0, 0xf3, //bne $ffda +/*ffe7*/ 0xab, 0x01, //inc $01 +/*ffe9*/ 0x10, 0xef, //bpl $ffda +/*ffeb*/ 0x7e, 0xf4, //cmp y,$f4 +/*ffed*/ 0x10, 0xeb, //bpl $ffda +/*ffef*/ 0xba, 0xf6, //movw ya,$f6 +/*fff1*/ 0xda, 0x00, //movw $00,ya +/*fff3*/ 0xba, 0xf4, //movw ya,$f4 +/*fff5*/ 0xc4, 0xf4, //mov $f4,a +/*fff7*/ 0xdd, //mov a,y +/*fff8*/ 0x5d, //mov x,a +/*fff9*/ 0xd0, 0xdb, //bne $ffd6 +/*fffb*/ 0x1f, 0x00, 0x00, //jmp ($0000+x) +/*fffe*/ 0xc0, 0xff //reset vector location ($ffc0) +}; + +}; diff --git a/libmednahawk/src/snes/src/smp/smp.hpp b/libmednahawk/src/snes/src/smp/smp.hpp new file mode 100644 index 0000000000..413c92b0c0 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/smp.hpp @@ -0,0 +1,19 @@ +class SMP { +public: + virtual void enter() = 0; + static const uint8_t iplrom[64]; + + virtual uint8 ram_read(uint16 addr) = 0; + virtual void ram_write(uint16 addr, uint8 value) = 0; + + //$f4-$f7 + virtual uint8 port_read(uint8 port) = 0; + virtual void port_write(uint8 port, uint8 value) = 0; + + virtual void power() = 0; + virtual void reset() = 0; + + virtual void serialize(serializer&) {} + SMP() {} + virtual ~SMP() {} +}; diff --git a/libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.cpp b/libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.cpp new file mode 100644 index 0000000000..1607e9cc36 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.cpp @@ -0,0 +1,44 @@ +#ifdef SSMP_CPP + +void sSMPDebugger::op_step() { + bool break_event = false; + + usage[regs.pc] |= UsageExec; + opcode_pc = regs.pc; + + if(debugger.step_smp) { + debugger.break_event = Debugger::SMPStep; + scheduler.exit(Scheduler::DebuggerEvent); + } else { + debugger.breakpoint_test(Debugger::Breakpoint::APURAM, Debugger::Breakpoint::Exec, regs.pc, 0x00); + } + + if(step_event) step_event(); + sSMP::op_step(); + scheduler.sync_smpcpu(); +} + +uint8 sSMPDebugger::op_read(uint16 addr) { + uint8 data = sSMP::op_read(addr); + usage[addr] |= UsageRead; + debugger.breakpoint_test(Debugger::Breakpoint::APURAM, Debugger::Breakpoint::Read, addr, data); + return data; +} + +void sSMPDebugger::op_write(uint16 addr, uint8 data) { + sSMP::op_write(addr, data); + usage[addr] |= UsageWrite; + usage[addr] &= ~UsageExec; + debugger.breakpoint_test(Debugger::Breakpoint::APURAM, Debugger::Breakpoint::Write, addr, data); +} + +sSMPDebugger::sSMPDebugger() { + usage = new uint8[1 << 16](); + opcode_pc = 0xffc0; +} + +sSMPDebugger::~sSMPDebugger() { + delete[] usage; +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.hpp b/libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.hpp new file mode 100644 index 0000000000..f077985006 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/debugger/debugger.hpp @@ -0,0 +1,19 @@ +class sSMPDebugger : public sSMP { +public: + function step_event; + + enum Usage { + UsageRead = 0x80, + UsageWrite = 0x40, + UsageExec = 0x20, + }; + uint8 *usage; + uint16 opcode_pc; + + void op_step(); + uint8 op_read(uint16 addr); + void op_write(uint16 addr, uint8 data); + + sSMPDebugger(); + ~sSMPDebugger(); +}; diff --git a/libmednahawk/src/snes/src/smp/ssmp/memory/memory.cpp b/libmednahawk/src/snes/src/smp/ssmp/memory/memory.cpp new file mode 100644 index 0000000000..e23fb88e3f --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/memory/memory.cpp @@ -0,0 +1,226 @@ +#ifdef SSMP_CPP + +alwaysinline uint8 sSMP::ram_read(uint16 addr) { + if(addr < 0xffc0) return memory::apuram[addr]; + if(status.iplrom_enabled == false) return memory::apuram[addr]; + return iplrom[addr & 0x3f]; +} + +alwaysinline void sSMP::ram_write(uint16 addr, uint8 data) { + //writes to $ffc0-$ffff always go to spcram, even if the iplrom is enabled + memory::apuram[addr] = data; +} + +// + +alwaysinline uint8 sSMP::port_read(uint8 port) { + return memory::apuram[0xf4 + (port & 3)]; +} + +alwaysinline void sSMP::port_write(uint8 port, uint8 data) { + memory::apuram[0xf4 + (port & 3)] = data; +} + +// + +alwaysinline uint8 sSMP::op_busread(uint16 addr) { + uint8 r; + if((addr & 0xfff0) == 0x00f0) { + //addr >= 0x00f0 && addr <= 0x00ff + switch(addr) { + case 0xf0: { //TEST -- write-only register + r = 0x00; + } break; + + case 0xf1: { //CONTROL -- write-only register + r = 0x00; + } break; + + case 0xf2: { //DSPADDR + r = status.dsp_addr; + } break; + + case 0xf3: { //DSPDATA + //0x80-0xff are read-only mirrors of 0x00-0x7f + r = dsp.read(status.dsp_addr & 0x7f); + } break; + + case 0xf4: //CPUIO0 + case 0xf5: //CPUIO1 + case 0xf6: //CPUIO2 + case 0xf7: { //CPUIO3 + scheduler.sync_smpcpu(); + r = cpu.port_read(addr & 3); + } break; + + case 0xf8: { //??? + r = status.smp_f8; + } break; + + case 0xf9: { //??? + r = status.smp_f9; + } break; + + case 0xfa: //T0TARGET + case 0xfb: //T1TARGET + case 0xfc: { //T2TARGET -- write-only registers + r = 0x00; + } break; + + case 0xfd: { //T0OUT -- 4-bit counter value + r = t0.stage3_ticks & 15; + t0.stage3_ticks = 0; + } break; + + case 0xfe: { //T1OUT -- 4-bit counter value + r = t1.stage3_ticks & 15; + t1.stage3_ticks = 0; + } break; + + case 0xff: { //T2OUT -- 4-bit counter value + r = t2.stage3_ticks & 15; + t2.stage3_ticks = 0; + } break; + } + } else { + r = ram_read(addr); + } + + return r; +} + +alwaysinline void sSMP::op_buswrite(uint16 addr, uint8 data) { + if((addr & 0xfff0) == 0x00f0) { + //addr >= 0x00f0 && addr >= 0x00ff + if(status.mmio_disabled == true) return; + + switch(addr) { + case 0xf0: { //TEST + if(regs.p.p) break; //writes only valid when P flag is clear + + //multiplier table may not be 100% accurate, some settings crash + //the processor due to S-SMP <> S-DSP bus access misalignment + //static uint8 clock_speed_tbl[16] = + //{ 3, 5, 9, 17, 4, 6, 10, 18, 6, 8, 12, 20, 10, 12, 16, 24 }; + + //status.clock_speed = 24 * clock_speed_tbl[data >> 4] / 3; + status.mmio_disabled = !!(data & 0x04); + status.ram_writable = !!(data & 0x02); + + //if((data >> 4) != 0) { + //dprintf("* S-SMP critical warning: $00f0 (TEST) clock speed control modified!"); + //dprintf("* S-SMP may crash on hardware as a result!"); + //} + } break; + + case 0xf1: { //CONTROL + status.iplrom_enabled = !!(data & 0x80); + + if(data & 0x30) { + //one-time clearing of APU port read registers, + //emulated by simulating CPU writes of 0x00 + scheduler.sync_smpcpu(); + if(data & 0x20) { + cpu.port_write(2, 0x00); + cpu.port_write(3, 0x00); + } + if(data & 0x10) { + cpu.port_write(0, 0x00); + cpu.port_write(1, 0x00); + } + } + + //0->1 transistion resets timers + if(t2.enabled == false && (data & 0x04)) { + t2.stage2_ticks = 0; + t2.stage3_ticks = 0; + } + t2.enabled = !!(data & 0x04); + + if(t1.enabled == false && (data & 0x02)) { + t1.stage2_ticks = 0; + t1.stage3_ticks = 0; + } + t1.enabled = !!(data & 0x02); + + if(t0.enabled == false && (data & 0x01)) { + t0.stage2_ticks = 0; + t0.stage3_ticks = 0; + } + t0.enabled = !!(data & 0x01); + } break; + + case 0xf2: { //DSPADDR + status.dsp_addr = data; + } break; + + case 0xf3: { //DSPDATA + //0x80-0xff is a read-only mirror of 0x00-0x7f + if(!(status.dsp_addr & 0x80)) { + dsp.write(status.dsp_addr & 0x7f, data); + } + } break; + + case 0xf4: //CPUIO0 + case 0xf5: //CPUIO1 + case 0xf6: //CPUIO2 + case 0xf7: { //CPUIO3 + scheduler.sync_smpcpu(); + port_write(addr & 3, data); + } break; + + case 0xf8: { //??? + status.smp_f8 = data; + } break; + + case 0xf9: { //??? + status.smp_f9 = data; + } break; + + case 0xfa: { //T0TARGET + t0.target = data; + } break; + + case 0xfb: { //T1TARGET + t1.target = data; + } break; + + case 0xfc: { //T2TARGET + t2.target = data; + } break; + + case 0xfd: //T0OUT + case 0xfe: //T1OUT + case 0xff: { //T2OUT -- read-only registers + } break; + } + } + + //all writes, even to MMIO registers, appear on bus + if(status.ram_writable == true) { + ram_write(addr, data); + } +} + +// + +void sSMP::op_io() { + add_clocks(24); + tick_timers(); +} + +uint8 sSMP::op_read(uint16 addr) { + add_clocks(12); + uint8 r = op_busread(addr); + add_clocks(12); + tick_timers(); + return r; +} + +void sSMP::op_write(uint16 addr, uint8 data) { + add_clocks(24); + op_buswrite(addr, data); + tick_timers(); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/ssmp/memory/memory.hpp b/libmednahawk/src/snes/src/smp/ssmp/memory/memory.hpp new file mode 100644 index 0000000000..e25543bb6d --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/memory/memory.hpp @@ -0,0 +1,12 @@ +uint8 ram_read(uint16 addr); +void ram_write(uint16 addr, uint8 data); + +uint8 port_read(uint8 port); +void port_write(uint8 port, uint8 data); + +uint8 op_busread(uint16 addr); +void op_buswrite(uint16 addr, uint8 data); + +void op_io(); +debugvirtual uint8 op_read(uint16 addr); +debugvirtual void op_write(uint16 addr, uint8 data); diff --git a/libmednahawk/src/snes/src/smp/ssmp/serialization.cpp b/libmednahawk/src/snes/src/smp/ssmp/serialization.cpp new file mode 100644 index 0000000000..198a927e41 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/serialization.cpp @@ -0,0 +1,38 @@ +#ifdef SSMP_CPP + +void sSMP::serialize(serializer &s) { + SMP::serialize(s); + SMPcore::core_serialize(s); + + s.integer(status.opcode); + s.integer(status.in_opcode); + s.integer(status.clock_counter); + s.integer(status.dsp_counter); + s.integer(status.clock_speed); + s.integer(status.mmio_disabled); + s.integer(status.ram_writable); + s.integer(status.iplrom_enabled); + s.integer(status.dsp_addr); + s.integer(status.smp_f8); + s.integer(status.smp_f9); + + s.integer(t0.target); + s.integer(t0.stage1_ticks); + s.integer(t0.stage2_ticks); + s.integer(t0.stage3_ticks); + s.integer(t0.enabled); + + s.integer(t1.target); + s.integer(t1.stage1_ticks); + s.integer(t1.stage2_ticks); + s.integer(t1.stage3_ticks); + s.integer(t1.enabled); + + s.integer(t2.target); + s.integer(t2.stage1_ticks); + s.integer(t2.stage2_ticks); + s.integer(t2.stage3_ticks); + s.integer(t2.enabled); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/ssmp/ssmp.cpp b/libmednahawk/src/snes/src/smp/ssmp/ssmp.cpp new file mode 100644 index 0000000000..6d11a7b4e7 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/ssmp.cpp @@ -0,0 +1,97 @@ +#include <../base.hpp> + +#define SSMP_CPP +namespace SNES { + +#if defined(DEBUGGER) + #include "debugger/debugger.cpp" + sSMPDebugger smp; +#else + sSMP smp; +#endif + +#include "serialization.cpp" +#include "memory/memory.cpp" +#include "timing/timing.cpp" + +void sSMP::enter() { + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + //if(scheduler.clock.cpusmp >= 0 && scheduler.sync != Scheduler::SyncAll) { + // puts("BLAHBLAH"); + //} + + } + + op_step(); + } +} + +void sSMP::op_step() { + (this->*opcode_table[op_readpc()])(); +} + +void sSMP::power() { + //targets not initialized/changed upon reset + t0.target = 0; + t1.target = 0; + t2.target = 0; + + reset(); +} + +void sSMP::reset() { + regs.pc = 0xffc0; + regs.a = 0x00; + regs.x = 0x00; + regs.y = 0x00; + regs.sp = 0xef; + regs.p = 0x02; + + for(unsigned i = 0; i < memory::apuram.size(); i++) { + memory::apuram.write(i, 0x00); + } + + status.clock_counter = 0; + status.dsp_counter = 0; + + //$00f0 + status.clock_speed = 24 * 3 / 3; + status.mmio_disabled = false; + status.ram_writable = true; + + //$00f1 + status.iplrom_enabled = true; + + //$00f2 + status.dsp_addr = 0x00; + + //$00f8,$00f9 + status.smp_f8 = 0x00; + status.smp_f9 = 0x00; + + t0.enabled = false; + t1.enabled = false; + t2.enabled = false; + + t0.stage1_ticks = 0; + t1.stage1_ticks = 0; + t2.stage1_ticks = 0; + + t0.stage2_ticks = 0; + t1.stage2_ticks = 0; + t2.stage2_ticks = 0; + + t0.stage3_ticks = 0; + t1.stage3_ticks = 0; + t2.stage3_ticks = 0; +} + +sSMP::sSMP() { +} + +sSMP::~sSMP() { +} + +}; diff --git a/libmednahawk/src/snes/src/smp/ssmp/ssmp.hpp b/libmednahawk/src/snes/src/smp/ssmp/ssmp.hpp new file mode 100644 index 0000000000..bba7ca5676 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/ssmp.hpp @@ -0,0 +1,49 @@ +class sSMP : public SMP, public SMPcore { +public: + void enter(); + debugvirtual void op_step(); + + #include "memory/memory.hpp" + #include "timing/timing.hpp" + + struct { + + uint8 opcode; + bool in_opcode; + + //timing + uint32 clock_counter; + uint32 dsp_counter; + + //$00f0 + uint8 clock_speed; + bool mmio_disabled; + bool ram_writable; + + //$00f1 + bool iplrom_enabled; + + //$00f2 + uint8 dsp_addr; + + //$00f8,$00f9 + uint8 smp_f8, smp_f9; + } status; + + //ssmp.cpp + void power(); + void reset(); + + void serialize(serializer&); + sSMP(); + ~sSMP(); + + friend class sSMPDebug; +}; + +#if defined(DEBUGGER) + #include "debugger/debugger.hpp" + extern sSMPDebugger smp; +#else + extern sSMP smp; +#endif diff --git a/libmednahawk/src/snes/src/smp/ssmp/timing/timing.cpp b/libmednahawk/src/snes/src/smp/ssmp/timing/timing.cpp new file mode 100644 index 0000000000..0c54c44af2 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/timing/timing.cpp @@ -0,0 +1,28 @@ +#ifdef SSMP_CPP + +void sSMP::add_clocks(unsigned clocks) { + scheduler.addclocks_smp(clocks); + #if !defined(DSP_STATE_MACHINE) + scheduler.sync_smpdsp(); + #else + while(scheduler.clock.smpdsp < 0) dsp.enter(); + #endif + + // Mednafen change. + scheduler.sync_smpcpu(); +} + +void sSMP::tick_timers() { + t0.tick(); + t1.tick(); + t2.tick(); + + //forcefully sync S-SMP to S-CPU in case chips are not communicating + //sync if S-SMP is more than 24 samples ahead of S-CPU + //if(scheduler.clock.cpusmp > +(768 * 24 * (int64)24000000)) scheduler.sync_smpcpu(); + + // Mednafen change - Make the check for only about 1 sample ahead. + //if(scheduler.clock.cpusmp > +(768 * 1 * (int64)24000000)) scheduler.sync_smpcpu(); +} + +#endif diff --git a/libmednahawk/src/snes/src/smp/ssmp/timing/timing.hpp b/libmednahawk/src/snes/src/smp/ssmp/timing/timing.hpp new file mode 100644 index 0000000000..f78d572940 --- /dev/null +++ b/libmednahawk/src/snes/src/smp/ssmp/timing/timing.hpp @@ -0,0 +1,34 @@ +template +class sSMPTimer { +public: + uint8 target; + uint8 stage1_ticks, stage2_ticks, stage3_ticks; + bool enabled; + + void tick() { + //stage 1 increment + stage1_ticks++; + if(stage1_ticks < cycle_frequency) return; + + stage1_ticks -= cycle_frequency; + if(enabled == false) return; + + //stage 2 increment + stage2_ticks++; + + if(stage2_ticks != target) return; + + //stage 3 increment + stage2_ticks = 0; + stage3_ticks++; + stage3_ticks &= 15; + } +}; + +sSMPTimer<128> t0; +sSMPTimer<128> t1; +sSMPTimer< 16> t2; + +alwaysinline void add_clocks(unsigned clocks); +alwaysinline void tick_timers(); +uint32 clocks_executed(); diff --git a/libmednahawk/src/snes/src/system/audio/audio.cpp b/libmednahawk/src/snes/src/system/audio/audio.cpp new file mode 100644 index 0000000000..d175ea29d4 --- /dev/null +++ b/libmednahawk/src/snes/src/system/audio/audio.cpp @@ -0,0 +1,90 @@ +#ifdef SYSTEM_CPP + +Audio audio; + +void Audio::coprocessor_enable(bool state) { + coprocessor = state; + + dsp_rdoffset = cop_rdoffset = 0; + dsp_wroffset = cop_wroffset = 0; + dsp_length = cop_length = 0; + + r_sum_l = r_sum_r = 0; +} + +void Audio::coprocessor_frequency(double input_frequency) { + double output_frequency; + if(system.region() == System::NTSC) { + output_frequency = config.smp.ntsc_clock_rate / 768.0; + } else /* (system.region() == System::PAL) */ { + output_frequency = config.smp.pal_clock_rate / 768.0; + } + + r_step = input_frequency / output_frequency; + r_frac = 0; +} + +void Audio::sample(int16 left, int16 right) { + if(coprocessor == false) { + system.interface->audio_sample(left, right); + } else { + dsp_buffer[dsp_wroffset] = ((uint16)left << 0) + ((uint16)right << 16); + dsp_wroffset = (dsp_wroffset + 1) & 32767; + dsp_length = (dsp_length + 1) & 32767; + flush(); + } +} + +void Audio::coprocessor_sample(int16 left, int16 right) { + if(r_frac >= 1.0) { + r_frac -= 1.0; + r_sum_l += left; + r_sum_r += right; + return; + } + + r_sum_l += left * r_frac; + r_sum_r += right * r_frac; + + uint16 output_left = sclamp<16>(int(r_sum_l / r_step)); + uint16 output_right = sclamp<16>(int(r_sum_r / r_step)); + + double first = 1.0 - r_frac; + r_sum_l = left * first; + r_sum_r = right * first; + r_frac = r_step - first; + + cop_buffer[cop_wroffset] = (output_left << 0) + (output_right << 16); + cop_wroffset = (cop_wroffset + 1) & 32767; + cop_length = (cop_length + 1) & 32767; + flush(); +} + +void Audio::init() { +} + +void Audio::flush() { + while(dsp_length > 0 && cop_length > 0) { + uint32 dsp_sample = dsp_buffer[dsp_rdoffset]; + uint32 cop_sample = cop_buffer[cop_rdoffset]; + + dsp_rdoffset = (dsp_rdoffset + 1) & 32767; + cop_rdoffset = (cop_rdoffset + 1) & 32767; + + dsp_length--; + cop_length--; + + int dsp_left = (int16)(dsp_sample >> 0); + int dsp_right = (int16)(dsp_sample >> 16); + + int cop_left = (int16)(cop_sample >> 0); + int cop_right = (int16)(cop_sample >> 16); + + system.interface->audio_sample( + sclamp<16>((dsp_left + cop_left ) / 2), + sclamp<16>((dsp_right + cop_right) / 2) + ); + } +} + +#endif diff --git a/libmednahawk/src/snes/src/system/audio/audio.hpp b/libmednahawk/src/snes/src/system/audio/audio.hpp new file mode 100644 index 0000000000..bd12cdc825 --- /dev/null +++ b/libmednahawk/src/snes/src/system/audio/audio.hpp @@ -0,0 +1,22 @@ +class Audio { +public: + void coprocessor_enable(bool state); + void coprocessor_frequency(double frequency); + void sample(int16 left, int16 right); + void coprocessor_sample(int16 left, int16 right); + void init(); + +private: + bool coprocessor; + uint32 dsp_buffer[32768], cop_buffer[32768]; + unsigned dsp_rdoffset, cop_rdoffset; + unsigned dsp_wroffset, cop_wroffset; + unsigned dsp_length, cop_length; + + double r_step, r_frac; + int r_sum_l, r_sum_r; + + void flush(); +}; + +extern Audio audio; diff --git a/libmednahawk/src/snes/src/system/config/config.cpp b/libmednahawk/src/snes/src/system/config/config.cpp new file mode 100644 index 0000000000..0ac2d52cf6 --- /dev/null +++ b/libmednahawk/src/snes/src/system/config/config.cpp @@ -0,0 +1,27 @@ +#ifdef SYSTEM_CPP + +Configuration config; + +Configuration::Configuration() { + controller_port1 = Input::DeviceJoypad; + controller_port2 = Input::DeviceJoypad; + expansion_port = System::ExpansionBSX; + region = System::Autodetect; + + cpu.version = 2; + cpu.ntsc_clock_rate = 21477272; + cpu.pal_clock_rate = 21281370; + cpu.alu_mul_delay = 2; + cpu.alu_div_delay = 2; + cpu.wram_init_value = 0x55; + + smp.ntsc_clock_rate = 24607104; //32040.5 * 768 + smp.pal_clock_rate = 24607104; + + ppu1.version = 1; + ppu2.version = 3; + + superfx.speed = 0; //0 = auto-select, 1 = force 10.74MHz, 2 = force 21.48MHz +} + +#endif diff --git a/libmednahawk/src/snes/src/system/config/config.hpp b/libmednahawk/src/snes/src/system/config/config.hpp new file mode 100644 index 0000000000..dd44b3fa10 --- /dev/null +++ b/libmednahawk/src/snes/src/system/config/config.hpp @@ -0,0 +1,36 @@ +struct Configuration { + unsigned controller_port1; + unsigned controller_port2; + unsigned expansion_port; + unsigned region; + + struct CPU { + unsigned version; + unsigned ntsc_clock_rate; + unsigned pal_clock_rate; + unsigned alu_mul_delay; + unsigned alu_div_delay; + unsigned wram_init_value; + } cpu; + + struct SMP { + unsigned ntsc_clock_rate; + unsigned pal_clock_rate; + } smp; + + struct PPU1 { + unsigned version; + } ppu1; + + struct PPU2 { + unsigned version; + } ppu2; + + struct SuperFX { + unsigned speed; + } superfx; + + Configuration(); +}; + +extern Configuration config; diff --git a/libmednahawk/src/snes/src/system/debugger/debugger.cpp b/libmednahawk/src/snes/src/system/debugger/debugger.cpp new file mode 100644 index 0000000000..d3beefef79 --- /dev/null +++ b/libmednahawk/src/snes/src/system/debugger/debugger.cpp @@ -0,0 +1,107 @@ +#ifdef SYSTEM_CPP + +Debugger debugger; + +void Debugger::breakpoint_test(Debugger::Breakpoint::Source source, Debugger::Breakpoint::Mode mode, unsigned addr, uint8 data) { + for(unsigned i = 0; i < Breakpoints; i++) { + if(breakpoint[i].enabled == false) continue; + + //shadow S-CPU WRAM addresses ($00-3f|80-bf:0000-1fff mirrors $7e:0000-1fff) + if(source == Debugger::Breakpoint::CPUBus && ( + ((breakpoint[i].addr & 0x40e000) == 0x000000) || //$00-3f|80-bf:0000-1fff + ((breakpoint[i].addr & 0xffe000) == 0x7e0000) //$7e:0000-1fff + ) + ) { + if((breakpoint[i].addr & 0x1fff) != (addr & 0x1fff)) continue; + } else { + if(breakpoint[i].addr != addr) continue; + } + + if(breakpoint[i].data != -1 && breakpoint[i].data != data) continue; + if(breakpoint[i].source != source) continue; + if(breakpoint[i].mode != mode) continue; + + breakpoint[i].counter++; + breakpoint_hit = i; + break_event = BreakpointHit; + scheduler.exit(Scheduler::DebuggerEvent); + break; + } +} + +uint8 Debugger::read(Debugger::MemorySource source, unsigned addr) { + switch(source) { + case CPUBus: { + //do not read from memory-mapped registers that could affect program behavior + if(((addr - 0x2000) & 0x40c000) == 0x000000) break; //$00-3f:2000-5fff MMIO + return bus.read(addr & 0xffffff); + } break; + + case APURAM: { + return memory::apuram.read(addr & 0xffff); + } break; + + case VRAM: { + return memory::vram.read(addr & 0xffff); + } break; + + case OAM: { + if(addr & 0x0200) return memory::oam.read(0x0200 + (addr & 0x1f)); + return memory::oam.read(addr & 0x01ff); + } break; + + case CGRAM: { + return memory::cgram.read(addr & 0x01ff); + } break; + } + + return 0x00; +} + +void Debugger::write(Debugger::MemorySource source, unsigned addr, uint8 data) { + switch(source) { + case CPUBus: { + //do not write to memory-mapped registers that could affect program behavior + if(((addr - 0x2000) & 0x40c000) == 0x000000) break; //$00-3f:2000-5fff MMIO + memory::cartrom.write_protect(false); + bus.write(addr & 0xffffff, data); + memory::cartrom.write_protect(true); + } break; + + case APURAM: { + memory::apuram.write(addr & 0xffff, data); + } break; + + case VRAM: { + memory::vram.write(addr & 0xffff, data); + } break; + + case OAM: { + if(addr & 0x0200) memory::oam.write(0x0200 + (addr & 0x1f), data); + else memory::oam.write(addr & 0x01ff, data); + } break; + + case CGRAM: { + memory::cgram.write(addr & 0x01ff, data); + } break; + } +} + +Debugger::Debugger() { + break_event = None; + + for(unsigned n = 0; n < Breakpoints; n++) { + breakpoint[n].enabled = false; + breakpoint[n].addr = 0; + breakpoint[n].data = -1; + breakpoint[n].mode = Breakpoint::Exec; + breakpoint[n].source = Breakpoint::CPUBus; + breakpoint[n].counter = 0; + } + breakpoint_hit = 0; + + step_cpu = false; + step_smp = false; +} + +#endif diff --git a/libmednahawk/src/snes/src/system/debugger/debugger.hpp b/libmednahawk/src/snes/src/system/debugger/debugger.hpp new file mode 100644 index 0000000000..b54d5dd55d --- /dev/null +++ b/libmednahawk/src/snes/src/system/debugger/debugger.hpp @@ -0,0 +1,32 @@ +class Debugger { +public: + enum BreakEvent { + None, + BreakpointHit, + CPUStep, + SMPStep, + } break_event; + + enum { Breakpoints = 8 }; + struct Breakpoint { + bool enabled; + unsigned addr; + signed data; //-1 = unused + enum Mode { Exec, Read, Write } mode; + enum Source { CPUBus, APURAM, VRAM, OAM, CGRAM } source; + unsigned counter; //number of times breakpoint has been hit since being set + } breakpoint[Breakpoints]; + unsigned breakpoint_hit; + void breakpoint_test(Breakpoint::Source source, Breakpoint::Mode mode, unsigned addr, uint8 data); + + bool step_cpu; + bool step_smp; + + enum MemorySource { CPUBus, APURAM, VRAM, OAM, CGRAM }; + uint8 read(MemorySource, unsigned addr); + void write(MemorySource, unsigned addr, uint8 data); + + Debugger(); +}; + +extern Debugger debugger; diff --git a/libmednahawk/src/snes/src/system/input/input.cpp b/libmednahawk/src/snes/src/system/input/input.cpp new file mode 100644 index 0000000000..0743cbd3a3 --- /dev/null +++ b/libmednahawk/src/snes/src/system/input/input.cpp @@ -0,0 +1,336 @@ +#ifdef SYSTEM_CPP + +Input input; + +uint8 Input::port_read(bool portnumber) { + port_t &p = port[portnumber]; + + switch(p.device) { + case DeviceJoypad: { + if(p.counter0 >= 16) return 1; + return system.interface->input_poll(portnumber, p.device, 0, p.counter0++); + } //case DeviceJoypad + + case DeviceMultitap: { + if(cpu.joylatch()) return 2; //when latch is high -- data2 = 1, data1 = 0 + + unsigned deviceidx, deviceindex0, deviceindex1; + uint8 mask = (portnumber == 0 ? 0x40 : 0x80); + + if(cpu.pio() & mask) { + deviceidx = p.counter0; + if(deviceidx >= 16) return 3; + p.counter0++; + + deviceindex0 = 0; //controller 1 + deviceindex1 = 1; //controller 2 + } else { + deviceidx = p.counter1; + if(deviceidx >= 16) return 3; + p.counter1++; + + deviceindex0 = 2; //controller 3 + deviceindex1 = 3; //controller 4 + } + + return (system.interface->input_poll(portnumber, p.device, deviceindex0, deviceidx) << 0) + | (system.interface->input_poll(portnumber, p.device, deviceindex1, deviceidx) << 1); + } //case DeviceMultitap + + case DeviceMouse: { + if(p.counter0 >= 32) return 1; + + int position_x = system.interface->input_poll(portnumber, p.device, 0, MouseX); //-n = left, 0 = center, +n = right + int position_y = system.interface->input_poll(portnumber, p.device, 0, MouseY); //-n = up, 0 = center, +n = right + + bool direction_x = position_x < 0; //0 = right, 1 = left + bool direction_y = position_y < 0; //0 = down, 1 = up + + if(position_x < 0) position_x = -position_x; //abs(position_x) + if(position_y < 0) position_y = -position_y; //abs(position_x) + + position_x = min(127, position_x); //range = 0 - 127 + position_y = min(127, position_y); //range = 0 - 127 + + switch(p.counter0++) { default: + case 0: return 0; + case 1: return 0; + case 2: return 0; + case 3: return 0; + case 4: return 0; + case 5: return 0; + case 6: return 0; + case 7: return 0; + + case 8: return system.interface->input_poll(portnumber, p.device, 0, MouseRight); + case 9: return system.interface->input_poll(portnumber, p.device, 0, MouseLeft); + case 10: return 0; //speed (0 = slow, 1 = normal, 2 = fast, 3 = unused) + case 11: return 0; // || + + case 12: return 0; //signature + case 13: return 0; // || + case 14: return 0; // || + case 15: return 1; // || + + case 16: return (direction_y) & 1; + case 17: return (position_y >> 6) & 1; + case 18: return (position_y >> 5) & 1; + case 19: return (position_y >> 4) & 1; + case 20: return (position_y >> 3) & 1; + case 21: return (position_y >> 2) & 1; + case 22: return (position_y >> 1) & 1; + case 23: return (position_y >> 0) & 1; + + case 24: return (direction_x) & 1; + case 25: return (position_x >> 6) & 1; + case 26: return (position_x >> 5) & 1; + case 27: return (position_x >> 4) & 1; + case 28: return (position_x >> 3) & 1; + case 29: return (position_x >> 2) & 1; + case 30: return (position_x >> 1) & 1; + case 31: return (position_x >> 0) & 1; + } + } //case DeviceMouse + + case DeviceSuperScope: { + if(portnumber == 0) break; //Super Scope in port 1 not supported ... + if(p.counter0 >= 8) return 1; + + if(p.counter0 == 0) { + //turbo is a switch; toggle is edge sensitive + bool turbo = system.interface->input_poll(portnumber, p.device, 0, SuperScopeTurbo); + if(turbo && !p.superscope.turbolock) { + p.superscope.turbo = !p.superscope.turbo; //toggle state + p.superscope.turbolock = true; + } else if(!turbo) { + p.superscope.turbolock = false; + } + + //trigger is a button + //if turbo is active, trigger is level sensitive; otherwise it is edge sensitive + p.superscope.trigger = false; + bool trigger = system.interface->input_poll(portnumber, p.device, 0, SuperScopeTrigger); + if(trigger && (p.superscope.turbo || !p.superscope.triggerlock)) { + p.superscope.trigger = true; + p.superscope.triggerlock = true; + } else if(!trigger) { + p.superscope.triggerlock = false; + } + + //cursor is a button; it is always level sensitive + p.superscope.cursor = system.interface->input_poll(portnumber, p.device, 0, SuperScopeCursor); + + //pause is a button; it is always edge sensitive + p.superscope.pause = false; + bool pause = system.interface->input_poll(portnumber, p.device, 0, SuperScopePause); + if(pause && !p.superscope.pauselock) { + p.superscope.pause = true; + p.superscope.pauselock = true; + } else if(!pause) { + p.superscope.pauselock = false; + } + + p.superscope.offscreen = + p.superscope.x < 0 || p.superscope.x >= 256 + || p.superscope.y < 0 || p.superscope.y >= (ppu.overscan() ? 240 : 225); + } + + switch(p.counter0++) { + case 0: return p.superscope.trigger; + case 1: return p.superscope.cursor; + case 2: return p.superscope.turbo; + case 3: return p.superscope.pause; + case 4: return 0; + case 5: return 0; + case 6: return p.superscope.offscreen; + case 7: return 0; //noise (1 = yes) + } + } //case DeviceSuperScope + + case DeviceJustifier: + case DeviceJustifiers: { + if(portnumber == 0) break; //Justifier in port 1 not supported ... + if(p.counter0 >= 32) return 1; + + if(p.counter0 == 0) { + p.justifier.trigger1 = system.interface->input_poll(portnumber, p.device, 0, JustifierTrigger); + p.justifier.start1 = system.interface->input_poll(portnumber, p.device, 0, JustifierStart); + + if(p.device == DeviceJustifiers) { + p.justifier.trigger2 = system.interface->input_poll(portnumber, p.device, 1, JustifierTrigger); + p.justifier.start2 = system.interface->input_poll(portnumber, p.device, 1, JustifierStart); + } else { + p.justifier.x2 = -1; + p.justifier.y2 = -1; + + p.justifier.trigger2 = false; + p.justifier.start2 = false; + } + } + + switch(p.counter0++) { + case 0: return 0; + case 1: return 0; + case 2: return 0; + case 3: return 0; + case 4: return 0; + case 5: return 0; + case 6: return 0; + case 7: return 0; + case 8: return 0; + case 9: return 0; + case 10: return 0; + case 11: return 0; + + case 12: return 1; //signature + case 13: return 1; // || + case 14: return 1; // || + case 15: return 0; // || + + case 16: return 0; + case 17: return 1; + case 18: return 0; + case 19: return 1; + case 20: return 0; + case 21: return 1; + case 22: return 0; + case 23: return 1; + + case 24: return p.justifier.trigger1; + case 25: return p.justifier.trigger2; + case 26: return p.justifier.start1; + case 27: return p.justifier.start2; + case 28: return p.justifier.active; + + case 29: return 0; + case 30: return 0; + case 31: return 0; + } + } //case DeviceJustifier(s) + } //switch(p.device) + + //no device connected + return 0; +} + +//scan all input; update cursor positions if needed +void Input::update() { + system.interface->input_poll(); + port_t &p = port[1]; + + switch(p.device) { + case DeviceSuperScope: { + int x = system.interface->input_poll(1, p.device, 0, SuperScopeX); + int y = system.interface->input_poll(1, p.device, 0, SuperScopeY); + x += p.superscope.x; + y += p.superscope.y; + p.superscope.x = max(-16, min(256 + 16, x)); + p.superscope.y = max(-16, min(240 + 16, y)); + + latchx = p.superscope.x; + latchy = p.superscope.y; + } break; + + case DeviceJustifier: + case DeviceJustifiers: { + int x1 = system.interface->input_poll(1, p.device, 0, JustifierX); + int y1 = system.interface->input_poll(1, p.device, 0, JustifierY); + x1 += p.justifier.x1; + y1 += p.justifier.y1; + p.justifier.x1 = max(-16, min(256 + 16, x1)); + p.justifier.y1 = max(-16, min(240 + 16, y1)); + + int x2 = system.interface->input_poll(1, p.device, 1, JustifierX); + int y2 = system.interface->input_poll(1, p.device, 1, JustifierY); + x2 += p.justifier.x2; + y2 += p.justifier.y2; + p.justifier.x2 = max(-16, min(256 + 16, x2)); + p.justifier.y2 = max(-16, min(240 + 16, y2)); + + if(p.justifier.active == 0) { + latchx = p.justifier.x1; + latchy = p.justifier.y1; + } else { + latchx = (p.device == DeviceJustifiers ? p.justifier.x2 : -1); + latchy = (p.device == DeviceJustifiers ? p.justifier.y2 : -1); + } + } break; + } + + if(latchy < 0 || latchy >= (ppu.overscan() ? 240 : 225) || latchx < 0 || latchx >= 256) { + //cursor is offscreen, set to invalid position so counters are not latched + latchx = ~0; + latchy = ~0; + } else { + //cursor is onscreen + latchx += 40; //offset trigger position to simulate hardware latching delay + latchx <<= 2; //dot -> clock conversion + latchx += 2; //align trigger on half-dot ala interrupts (speed optimization for sCPU::add_clocks) + } +} + +void Input::port_set_device(bool portnumber, unsigned device) { + port_t &p = port[portnumber]; + + p.device = device; + p.counter0 = 0; + p.counter1 = 0; + + //set iobit to true if device is capable of latching PPU counters + iobit = port[1].device == DeviceSuperScope + || port[1].device == DeviceJustifier + || port[1].device == DeviceJustifiers; + latchx = -1; + latchy = -1; + + if(device == DeviceSuperScope) { + p.superscope.x = 256 / 2; + p.superscope.y = 240 / 2; + + p.superscope.trigger = false; + p.superscope.cursor = false; + p.superscope.turbo = false; + p.superscope.pause = false; + p.superscope.offscreen = false; + + p.superscope.turbolock = false; + p.superscope.triggerlock = false; + p.superscope.pauselock = false; + } else if(device == DeviceJustifier) { + p.justifier.active = 0; + p.justifier.x1 = 256 / 2; + p.justifier.y1 = 240 / 2; + p.justifier.x2 = -1; + p.justifier.y2 = -1; + + p.justifier.trigger1 = false; + p.justifier.trigger2 = false; + p.justifier.start1 = false; + p.justifier.start2 = false; + } else if(device == DeviceJustifiers) { + p.justifier.active = 0; + p.justifier.x1 = 256 / 2 - 16; + p.justifier.y1 = 240 / 2; + p.justifier.x2 = 256 / 2 + 16; + p.justifier.y2 = 240 / 2; + + p.justifier.trigger1 = false; + p.justifier.trigger2 = false; + p.justifier.start1 = false; + p.justifier.start2 = false; + } +} + +void Input::poll() { + port[0].counter0 = 0; + port[0].counter1 = 0; + port[1].counter0 = 0; + port[1].counter1 = 0; + + port[1].justifier.active = !port[1].justifier.active; +} + +void Input::init() { +} + +#endif diff --git a/libmednahawk/src/snes/src/system/input/input.hpp b/libmednahawk/src/snes/src/system/input/input.hpp new file mode 100644 index 0000000000..59e03bbea4 --- /dev/null +++ b/libmednahawk/src/snes/src/system/input/input.hpp @@ -0,0 +1,94 @@ +class Input { +public: + enum Device { + DeviceNone, + DeviceJoypad, + DeviceMultitap, + DeviceMouse, + DeviceSuperScope, + DeviceJustifier, + DeviceJustifiers, + }; + + enum JoypadID { + JoypadB = 0, JoypadY = 1, + JoypadSelect = 2, JoypadStart = 3, + JoypadUp = 4, JoypadDown = 5, + JoypadLeft = 6, JoypadRight = 7, + JoypadA = 8, JoypadX = 9, + JoypadL = 10, JoypadR = 11, + }; + + enum MouseID { + MouseX = 0, MouseY = 1, + MouseLeft = 2, MouseRight = 3, + }; + + enum SuperScopeID { + SuperScopeX = 0, SuperScopeY = 1, + SuperScopeTrigger = 2, SuperScopeCursor = 3, + SuperScopeTurbo = 4, SuperScopePause = 5, + }; + + enum JustifierID { + JustifierX = 0, JustifierY = 1, + JustifierTrigger = 2, JustifierStart = 3, + }; + + uint8 port_read(bool port); + void port_set_device(bool port, unsigned device); + void init(); + void poll(); + void update(); + + //light guns (Super Scope, Justifier(s)) strobe IOBit whenever the CRT + //beam cannon is detected. this needs to be tested at the cycle level + //(hence inlining here for speed) to avoid 'dead space' during DRAM refresh. + //iobit is updated during port_set_device(), + //latchx, latchy are updated during update() (once per frame) + alwaysinline void tick() { + //only test if Super Scope or Justifier is connected + if(iobit && cpu.vcounter() == latchy && cpu.hcounter() == latchx) { + ppu.latch_counters(); + } + } + +private: + bool iobit; + int16_t latchx, latchy; + + struct port_t { + unsigned device; + unsigned counter0; //read counters + unsigned counter1; + + struct superscope_t { + int x, y; + + bool trigger; + bool cursor; + bool turbo; + bool pause; + bool offscreen; + + bool turbolock; + bool triggerlock; + bool pauselock; + } superscope; + + struct justifier_t { + bool active; + + int x1, x2; + int y1, y2; + + bool trigger1, trigger2; + bool start1, start2; + } justifier; + } port[2]; + + friend class System; + friend class Video; +}; + +extern Input input; diff --git a/libmednahawk/src/snes/src/system/interface/interface.hpp b/libmednahawk/src/snes/src/system/interface/interface.hpp new file mode 100644 index 0000000000..c742155a7a --- /dev/null +++ b/libmednahawk/src/snes/src/system/interface/interface.hpp @@ -0,0 +1,7 @@ +class Interface { +public: + virtual void video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height) {} + virtual void audio_sample(uint16_t l_sample, uint16_t r_sample) {} + virtual void input_poll() {} + virtual int16_t input_poll(bool port, unsigned device, unsigned index, unsigned id) { return 0; } +}; diff --git a/libmednahawk/src/snes/src/system/scheduler/scheduler.cpp b/libmednahawk/src/snes/src/system/scheduler/scheduler.cpp new file mode 100644 index 0000000000..4de91018d5 --- /dev/null +++ b/libmednahawk/src/snes/src/system/scheduler/scheduler.cpp @@ -0,0 +1,67 @@ +#ifdef SYSTEM_CPP + +Scheduler scheduler; + +void threadentry_cpu() { cpu.enter(); } +void threadentry_cop() { system.coprocessor_enter(); } +void threadentry_smp() { smp.enter(); } +void threadentry_ppu() { ppu.enter(); } +void threadentry_dsp() { dsp.enter(); } + +void Scheduler::enter() { + co_switch(thread_active); +} + +void Scheduler::exit(ExitReason reason) { + exit_reason_ = reason; + co_switch(thread_snes); +} + +Scheduler::ExitReason Scheduler::exit_reason() const { + return exit_reason_; +} + +void Scheduler::init() { + clock.cpu_freq = system.region() == System::NTSC + ? config.cpu.ntsc_clock_rate + : config.cpu.pal_clock_rate; + clock.smp_freq = system.region() == System::NTSC + ? config.smp.ntsc_clock_rate + : config.smp.pal_clock_rate; + clock.cop_freq = clock.cpu_freq; + + clock.cpucop = 0; + clock.cpuppu = 0; + clock.cpusmp = 0; + clock.smpdsp = 0; + + if(thread_cpu) co_delete(thread_cpu); + if(thread_cop) co_delete(thread_cop); + if(thread_smp) co_delete(thread_smp); + if(thread_ppu) co_delete(thread_ppu); + if(thread_dsp) co_delete(thread_dsp); + + thread_snes = co_active(); + thread_cpu = co_create(65536 * sizeof(void*), threadentry_cpu); + thread_cop = co_create(65536 * sizeof(void*), threadentry_cop); + thread_smp = co_create(65536 * sizeof(void*), threadentry_smp); + thread_ppu = co_create(65536 * sizeof(void*), threadentry_ppu); + thread_dsp = co_create(65536 * sizeof(void*), threadentry_dsp); + + //start execution with S-CPU after reset + thread_active = thread_cpu; +} + +Scheduler::Scheduler() { + thread_snes = 0; + thread_cpu = 0; + thread_cop = 0; + thread_smp = 0; + thread_ppu = 0; + thread_dsp = 0; + thread_active = 0; + + exit_reason_ = UnknownEvent; +} + +#endif diff --git a/libmednahawk/src/snes/src/system/scheduler/scheduler.hpp b/libmednahawk/src/snes/src/system/scheduler/scheduler.hpp new file mode 100644 index 0000000000..4a66bf3b76 --- /dev/null +++ b/libmednahawk/src/snes/src/system/scheduler/scheduler.hpp @@ -0,0 +1,142 @@ +//scheduler thread relationships: +//S-PPU <-> S-CPU <-> cartridge co-processor +// <|> +// S-SMP <-> S-DSP + +class Scheduler { +public: + cothread_t thread_snes; + cothread_t thread_cpu; //S-CPU (5a22) + cothread_t thread_cop; //cartridge co-processor (SuperFX, SA-1, ...) + cothread_t thread_smp; //S-SMP (SPC700) + cothread_t thread_ppu; //S-PPU + cothread_t thread_dsp; //S-DSP + cothread_t thread_active; //reference to active thread + + struct { + uint32 cpu_freq; + uint32 cop_freq; + uint32 smp_freq; + + int64 cpucop; + int64 cpuppu; + int64 cpusmp; + int64 smpdsp; + } clock; + + enum sync_t { SyncNone, SyncCpu, SyncAll } sync; + + //========== + //CPU <> COP + //========== + + alwaysinline void sync_cpucop() { + if(clock.cpucop < 0) { + thread_active = thread_cop; + co_switch(thread_cop); + } + } + + alwaysinline void sync_copcpu() { + if(clock.cpucop >= 0 && sync != SyncAll) { + thread_active = thread_cpu; + co_switch(thread_cpu); + } + } + + //========== + //CPU <> PPU + //========== + + alwaysinline void sync_cpuppu() { + if(clock.cpuppu < 0) { + thread_active = thread_ppu; + co_switch(thread_ppu); + } + } + + alwaysinline void sync_ppucpu() { + if(clock.cpuppu >= 0 && sync != SyncAll) { + thread_active = thread_cpu; + co_switch(thread_cpu); + } + } + + //========== + //CPU <> SMP + //========== + + alwaysinline void sync_cpusmp() { + if(clock.cpusmp < 0) { + thread_active = thread_smp; + co_switch(thread_smp); + } + } + + alwaysinline void sync_smpcpu() { + if(clock.cpusmp >= 0 && sync != SyncAll) { + thread_active = thread_cpu; + co_switch(thread_cpu); + } + } + + //========== + //SMP <> DSP + //========== + + alwaysinline void sync_smpdsp() { + if(clock.smpdsp < 0 && sync != SyncAll) { + thread_active = thread_dsp; + co_switch(thread_dsp); + } + } + + alwaysinline void sync_dspsmp() { + if(clock.smpdsp >= 0 && sync != SyncAll) { + thread_active = thread_smp; + co_switch(thread_smp); + } + } + + //========== + //add clocks + //========== + + alwaysinline void addclocks_cpu(unsigned clocks) { + clock.cpucop -= clocks * (uint64)clock.cop_freq; + clock.cpuppu -= clocks; + clock.cpusmp -= clocks * (uint64)clock.smp_freq; + } + + alwaysinline void addclocks_cop(unsigned clocks) { + clock.cpucop += clocks * (uint64)clock.cpu_freq; + } + + alwaysinline void addclocks_ppu(unsigned clocks) { + clock.cpuppu += clocks; + } + + alwaysinline void addclocks_smp(unsigned clocks) { + clock.cpusmp += clocks * (uint64)clock.cpu_freq; + clock.smpdsp -= clocks; + } + + alwaysinline void addclocks_dsp(unsigned clocks) { + clock.smpdsp += clocks; + } + + enum ExitReason { UnknownEvent, FrameEvent, SynchronizeEvent, DebuggerEvent }; + + void enter(); + void exit(ExitReason); + ExitReason exit_reason() const; + + void init(); + + Scheduler(); + +private: + ExitReason exit_reason_; +}; + +extern Scheduler scheduler; diff --git a/libmednahawk/src/snes/src/system/serialization.cpp b/libmednahawk/src/snes/src/system/serialization.cpp new file mode 100644 index 0000000000..cc87d89122 --- /dev/null +++ b/libmednahawk/src/snes/src/system/serialization.cpp @@ -0,0 +1,97 @@ +#ifdef SYSTEM_CPP + +serializer System::serialize() { + serializer s(serialize_size); + + unsigned signature = 0x31545342, version = bsnesSerializerVersion, crc32 = cartridge.crc32(); + char description[512]; + + memset(&description, 0, sizeof description); + + s.integer(signature); + s.integer(version); + s.integer(crc32); + s.array(description); + + serialize_all(s); + return s; +} + +bool System::unserialize(serializer &s) { + unsigned signature, version, crc32; + char description[512]; + + s.integer(signature); + s.integer(version); + s.integer(crc32); + s.array(description); + + if(signature != 0x31545342) return false; + if(version != bsnesSerializerVersion) return false; +//if(crc32 != cartridge.crc32()) return false; + scheduler.init(); + + serialize_all(s); + return true; +} + +//======== +//internal +//======== + +void System::serialize(serializer &s) { + s.integer((unsigned&)region); + s.integer((unsigned&)expansion); + + s.integer(scheduler.clock.cpu_freq); + s.integer(scheduler.clock.smp_freq); + + s.integer(scheduler.clock.cpucop); + s.integer(scheduler.clock.cpuppu); + s.integer(scheduler.clock.cpusmp); + s.integer(scheduler.clock.smpdsp); +} + +void System::serialize_all(serializer &s) { + bus.serialize(s); + cartridge.serialize(s); + system.serialize(s); + cpu.serialize(s); + smp.serialize(s); + ppu.serialize(s); + dsp.serialize(s); + + if(cartridge.mode() == Cartridge::ModeSuperGameBoy) supergameboy.serialize(s); + + if(cartridge.has_superfx()) superfx.serialize(s); + if(cartridge.has_sa1()) sa1.serialize(s); + if(cartridge.has_srtc()) srtc.serialize(s); + if(cartridge.has_sdd1()) sdd1.serialize(s); + if(cartridge.has_spc7110()) spc7110.serialize(s); + if(cartridge.has_cx4()) cx4.serialize(s); + if(cartridge.has_dsp1()) dsp1.serialize(s); + if(cartridge.has_dsp2()) dsp2.serialize(s); + if(cartridge.has_obc1()) obc1.serialize(s); + if(cartridge.has_st010()) st010.serialize(s); + if(cartridge.has_21fx()) s21fx.serialize(s); +} + +//called once upon cartridge load event: perform dry-run state save. +//determines exactly how many bytes are needed to save state for this cartridge, +//as amount varies per game (eg different RAM sizes, special chips, etc.) +void System::serialize_init() { + serializer s; + + unsigned signature = 0, version = 0, crc32 = 0; + char description[512]; + + s.integer(signature); + s.integer(version); + s.integer(crc32); + s.array(description); + + serialize_all(s); + serialize_size = s.size(); +} + +#endif diff --git a/libmednahawk/src/snes/src/system/system.cpp b/libmednahawk/src/snes/src/system/system.cpp new file mode 100644 index 0000000000..4befc3b747 --- /dev/null +++ b/libmednahawk/src/snes/src/system/system.cpp @@ -0,0 +1,245 @@ +#include <../base.hpp> + +#define SYSTEM_CPP +namespace SNES { + +System system; + +#include "config/config.cpp" +#include "debugger/debugger.cpp" +#include "serialization.cpp" +#include "scheduler/scheduler.cpp" + +#include "video/video.cpp" +#include "audio/audio.cpp" +#include "input/input.cpp" + +void System::coprocessor_enter() { + if(cartridge.mode() == Cartridge::ModeSuperGameBoy) supergameboy.enter(); + if(cartridge.has_superfx()) superfx.enter(); + if(cartridge.has_sa1()) sa1.enter(); + if(cartridge.has_21fx()) s21fx.enter(); + + while(true) { + while(scheduler.sync == Scheduler::SyncAll) { + scheduler.exit(Scheduler::SynchronizeEvent); + } + + scheduler.addclocks_cop(64 * 1024 * 1024); + scheduler.sync_copcpu(); + } +} + +void System::run_mednafen_custom() +{ + //if(scheduler.exit_reason() == Scheduler::FrameEvent) // Commenting this out, causes latency when state rewinding is enabled. + input.update(); + + scheduler.sync = Scheduler::SyncNone; + + scheduler.enter(); + if(scheduler.exit_reason() == Scheduler::FrameEvent) { + //input.update(); + video.update(); + } +} + +void System::run() { + scheduler.sync = Scheduler::SyncNone; + + scheduler.enter(); + if(scheduler.exit_reason() == Scheduler::FrameEvent) { + input.update(); + video.update(); + } +} + +void System::runtosave() { + scheduler.sync = Scheduler::SyncCpu; + runthreadtosave(); + + scheduler.thread_active = scheduler.thread_cop; + runthreadtosave(); + + scheduler.thread_active = scheduler.thread_smp; + runthreadtosave(); + + scheduler.thread_active = scheduler.thread_ppu; + runthreadtosave(); + + #if !defined(DSP_STATE_MACHINE) + scheduler.thread_active = scheduler.thread_dsp; + runthreadtosave(); + #endif +} + +void System::runthreadtosave() { + while(true) { + scheduler.enter(); + if(scheduler.exit_reason() == Scheduler::SynchronizeEvent) break; + if(scheduler.exit_reason() == Scheduler::FrameEvent) { + input.update(); + video.update(); + } + } +} + +void System::init(Interface *interface_) { + interface = interface_; + assert(interface != 0); + + supergameboy.init(); + superfx.init(); + sa1.init(); + bsxbase.init(); + bsxcart.init(); + bsxflash.init(); + srtc.init(); + sdd1.init(); + spc7110.init(); + cx4.init(); + dsp1.init(); + dsp2.init(); + dsp3.init(); + dsp4.init(); + obc1.init(); + st010.init(); + st011.init(); + st018.init(); + s21fx.init(); + + video.init(); + audio.init(); + input.init(); +} + +void System::term() { +} + +void System::power() { + region = max(0, min(2, config.region)); + expansion = max(0, min(1, config.expansion_port)); + + if(region == Autodetect) { + region = (cartridge.region() == Cartridge::NTSC ? NTSC : PAL); + } + + audio.coprocessor_enable(false); + + scheduler.init(); + bus.power(); + + for(unsigned i = 0x2100; i <= 0x213f; i++) memory::mmio.map(i, ppu); + for(unsigned i = 0x2140; i <= 0x217f; i++) memory::mmio.map(i, cpu); + for(unsigned i = 0x2180; i <= 0x2183; i++) memory::mmio.map(i, cpu); + for(unsigned i = 0x4016; i <= 0x4017; i++) memory::mmio.map(i, cpu); + for(unsigned i = 0x4200; i <= 0x421f; i++) memory::mmio.map(i, cpu); + for(unsigned i = 0x4300; i <= 0x437f; i++) memory::mmio.map(i, cpu); + + if(expansion() == ExpansionBSX) bsxbase.enable(); + if(memory::bsxflash.data()) bsxflash.enable(); + if(cartridge.mode() == Cartridge::ModeBsx) bsxcart.enable(); + if(cartridge.mode() == Cartridge::ModeSuperGameBoy) supergameboy.enable(); + + if(cartridge.has_superfx()) superfx.enable(); + if(cartridge.has_sa1()) sa1.enable(); + if(cartridge.has_srtc()) srtc.enable(); + if(cartridge.has_sdd1()) sdd1.enable(); + if(cartridge.has_spc7110()) spc7110.enable(); + if(cartridge.has_cx4()) cx4.enable(); + if(cartridge.has_dsp1()) dsp1.enable(); + if(cartridge.has_dsp2()) dsp2.enable(); + if(cartridge.has_dsp3()) dsp3.enable(); + if(cartridge.has_dsp4()) dsp4.enable(); + if(cartridge.has_obc1()) obc1.enable(); + if(cartridge.has_st010()) st010.enable(); + if(cartridge.has_st011()) st011.enable(); + if(cartridge.has_st018()) st018.enable(); + if(cartridge.has_21fx()) s21fx.enable(); + + if(expansion() == ExpansionBSX) bsxbase.power(); + if(memory::bsxflash.data()) bsxflash.power(); + if(cartridge.mode() == Cartridge::ModeBsx) bsxcart.power(); + if(cartridge.mode() == Cartridge::ModeSuperGameBoy) supergameboy.power(); + + if(cartridge.has_superfx()) superfx.power(); + if(cartridge.has_sa1()) sa1.power(); + if(cartridge.has_srtc()) srtc.power(); + if(cartridge.has_sdd1()) sdd1.power(); + if(cartridge.has_spc7110()) spc7110.power(); + if(cartridge.has_cx4()) cx4.power(); + if(cartridge.has_dsp1()) dsp1.power(); + if(cartridge.has_dsp2()) dsp2.power(); + if(cartridge.has_dsp3()) dsp3.power(); + if(cartridge.has_dsp4()) dsp4.power(); + if(cartridge.has_obc1()) obc1.power(); + if(cartridge.has_st010()) st010.power(); + if(cartridge.has_st011()) st011.power(); + if(cartridge.has_st018()) st018.power(); + if(cartridge.has_21fx()) s21fx.power(); + + cpu.power(); + smp.power(); + dsp.power(); + ppu.power(); + + input.port_set_device(0, config.controller_port1); + input.port_set_device(1, config.controller_port2); + input.update(); + video.update(); +} + +void System::reset() { + scheduler.init(); + + cpu.reset(); + smp.reset(); + dsp.reset(); + ppu.reset(); + bus.reset(); + + if(expansion() == ExpansionBSX) bsxbase.reset(); + if(memory::bsxflash.data()) bsxflash.reset(); + if(cartridge.mode() == Cartridge::ModeBsx) bsxcart.reset(); + if(cartridge.mode() == Cartridge::ModeSuperGameBoy) supergameboy.reset(); + + if(cartridge.has_superfx()) superfx.reset(); + if(cartridge.has_sa1()) sa1.reset(); + if(cartridge.has_srtc()) srtc.reset(); + if(cartridge.has_sdd1()) sdd1.reset(); + if(cartridge.has_spc7110()) spc7110.reset(); + if(cartridge.has_cx4()) cx4.reset(); + if(cartridge.has_dsp1()) dsp1.reset(); + if(cartridge.has_dsp2()) dsp2.reset(); + if(cartridge.has_dsp3()) dsp3.reset(); + if(cartridge.has_dsp4()) dsp4.reset(); + if(cartridge.has_obc1()) obc1.reset(); + if(cartridge.has_st010()) st010.reset(); + if(cartridge.has_st011()) st011.reset(); + if(cartridge.has_st018()) st018.reset(); + if(cartridge.has_21fx()) s21fx.reset(); + + input.port_set_device(0, config.controller_port1); + input.port_set_device(1, config.controller_port2); + input.update(); + video.update(); +} + +void System::unload() { + if(cartridge.mode() == Cartridge::ModeSuperGameBoy) supergameboy.unload(); +} + +void System::scanline() { + video.scanline(); + if(cpu.vcounter() == 241) scheduler.exit(Scheduler::FrameEvent); +} + +void System::frame() { +} + +System::System() : interface(0) { + region = NTSC; + expansion = ExpansionNone; +} + +}; diff --git a/libmednahawk/src/snes/src/system/system.hpp b/libmednahawk/src/snes/src/system/system.hpp new file mode 100644 index 0000000000..342e119632 --- /dev/null +++ b/libmednahawk/src/snes/src/system/system.hpp @@ -0,0 +1,58 @@ +#include "config/config.hpp" +#include "debugger/debugger.hpp" +#include "interface/interface.hpp" +#include "scheduler/scheduler.hpp" + +#include "video/video.hpp" +#include "audio/audio.hpp" +#include "input/input.hpp" + +class System : property { +public: + enum Region { NTSC = 0, PAL = 1 }; + enum RegionAutodetect { Autodetect = 2 }; + enum ExpansionPortDevice { ExpansionNone = 0, ExpansionBSX = 1 }; + + void run_mednafen_custom(); + + void run(); + void runtosave(); + + void init(Interface*); + void term(); + void power(); + void reset(); + void unload(); + + void frame(); + void scanline(); + + //return *active* system information (settings are cached upon power-on) + readonly region; + readonly expansion; + readonly serialize_size; + + serializer serialize(); + bool unserialize(serializer&); + + System(); + virtual ~System() {} + +private: + Interface *interface; + void coprocessor_enter(); + void runthreadtosave(); + + void serialize(serializer&); + void serialize_all(serializer&); + void serialize_init(); + + friend class Cartridge; + friend class Video; + friend class Audio; + friend class Input; + friend class StateManager; + friend void threadentry_cop(); +}; + +extern System system; diff --git a/libmednahawk/src/snes/src/system/video/video.cpp b/libmednahawk/src/snes/src/system/video/video.cpp new file mode 100644 index 0000000000..affdc9dd7d --- /dev/null +++ b/libmednahawk/src/snes/src/system/video/video.cpp @@ -0,0 +1,105 @@ +#ifdef SYSTEM_CPP + +Video video; + +const uint8_t Video::cursor[15 * 15] = { + 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, + 0,0,0,0,1,1,2,2,2,1,1,0,0,0,0, + 0,0,0,1,2,2,1,2,1,2,2,1,0,0,0, + 0,0,1,2,1,1,0,1,0,1,1,2,1,0,0, + 0,1,2,1,0,0,0,1,0,0,0,1,2,1,0, + 0,1,2,1,0,0,1,2,1,0,0,1,2,1,0, + 1,2,1,0,0,1,1,2,1,1,0,0,1,2,1, + 1,2,2,1,1,2,2,2,2,2,1,1,2,2,1, + 1,2,1,0,0,1,1,2,1,1,0,0,1,2,1, + 0,1,2,1,0,0,1,2,1,0,0,1,2,1,0, + 0,1,2,1,0,0,0,1,0,0,0,1,2,1,0, + 0,0,1,2,1,1,0,1,0,1,1,2,1,0,0, + 0,0,0,1,2,2,1,2,1,2,2,1,0,0,0, + 0,0,0,0,1,1,2,2,2,1,1,0,0,0,0, + 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, +}; + +void Video::draw_cursor(uint16_t color, int x, int y) { + for(int cy = 0; cy < 15; cy++) { + int vy = y + cy - 7; + if(vy <= 0 || vy >= 240) continue; //do not draw offscreen + + bool hires = (pline_width[vy] == 512); + for(int cx = 0; cx < 15; cx++) { + int vx = x + cx - 7; + if(vx < 0 || vx >= 256) continue; //do not draw offscreen + uint8_t pixel = cursor[cy * 15 + cx]; + if(pixel == 0) continue; + uint16_t pixelcolor = (pixel == 1) ? 0 : color; + + if(hires == false) { + *((uint16_t*)ppu.output + vy * 1024 + 0 + vx) = pixelcolor; + *((uint16_t*)ppu.output + vy * 1024 + 512 + vx) = pixelcolor; + } else { + *((uint16_t*)ppu.output + vy * 1024 + 0 + vx * 2 + 0) = pixelcolor; + *((uint16_t*)ppu.output + vy * 1024 + 512 + vx * 2 + 0) = pixelcolor; + *((uint16_t*)ppu.output + vy * 1024 + 0 + vx * 2 + 1) = pixelcolor; + *((uint16_t*)ppu.output + vy * 1024 + 512 + vx * 2 + 1) = pixelcolor; + } + } + } +} + +void Video::update() { + uint16_t *data = (uint16_t*)ppu.output; + unsigned width, height; + + switch(input.port[1].device) { + case Input::DeviceSuperScope: draw_cursor(0x001f, input.port[1].superscope.x, input.port[1].superscope.y); break; + case Input::DeviceJustifiers: draw_cursor(0x02e0, input.port[1].justifier.x2, input.port[1].justifier.y2); //fallthrough + case Input::DeviceJustifier: draw_cursor(0x001f, input.port[1].justifier.x1, input.port[1].justifier.y1); break; + } + + unsigned yoffset = 1; //scanline 0 is always black, skip this line for video output + if(mode == ModeNTSC && ppu.overscan()) yoffset += 8; //NTSC overscan centers x240 height image + + switch(mode) { default: + case ModeNTSC: { width = 256; height = 224; } break; + case ModePAL: { width = 256; height = 239; } break; + } + + if(frame_hires) width <<= 1; + if(frame_interlace) height <<= 1; + + system.interface->video_refresh( + data + yoffset * 1024, + /* pitch = */ height <= 240 ? 2048 : 1024, + /* line[] = */ height <= 240 ? (pline_width + yoffset) : (iline_width + yoffset * 2), + width, height + ); + + frame_hires = false; + frame_interlace = false; +} + +void Video::scanline() { + unsigned y = cpu.vcounter(); + if(y >= 240) return; + + unsigned width = (ppu.hires() == false ? 256 : 512); + pline_width[y] = width; + iline_width[y * 2 + (int)cpu.field()] = width; + + frame_hires |= ppu.hires(); + frame_interlace |= ppu.interlace(); +} + +void Video::set_mode(Mode mode_) { + mode = mode_; +} + +void Video::init() { + for(unsigned i = 0; i < 240; i++) pline_width[i] = 256; + for(unsigned i = 0; i < 480; i++) iline_width[i] = 256; + frame_hires = false; + frame_interlace = false; + set_mode(ModeNTSC); +} + +#endif diff --git a/libmednahawk/src/snes/src/system/video/video.hpp b/libmednahawk/src/snes/src/system/video/video.hpp new file mode 100644 index 0000000000..e3cf6222c4 --- /dev/null +++ b/libmednahawk/src/snes/src/system/video/video.hpp @@ -0,0 +1,27 @@ +class Video { +public: + enum Mode { + ModeNTSC, + ModePAL, + }; + void set_mode(Mode); + +private: + Mode mode; + bool frame_hires; + bool frame_interlace; + + unsigned pline_width[240]; //progressive + unsigned iline_width[480]; //interlace + + void update(); + void scanline(); + void init(); + + static const uint8_t cursor[15 * 15]; + void draw_cursor(uint16_t color, int x, int y); + + friend class System; +}; + +extern Video video; diff --git a/libmednahawk/src/snes/src/ui_qt/Makefile b/libmednahawk/src/snes/src/ui_qt/Makefile new file mode 100644 index 0000000000..129b8e7e73 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/Makefile @@ -0,0 +1,48 @@ +objects := ui-main ui-base ui-cartridge ui-debugger ui-input ui-movie ui-settings ui-state ui-tools $(objects) +objects += $(if $(call streq,$(platform),win),resource) +link += $(qtlib) + +headers := $(call rwildcard,$(ui)/,%.hpp) +moc_headers := $(call rwildcard,$(ui)/,%.moc.hpp) +moc_objects := $(foreach f,$(moc_headers),obj/$(notdir $(patsubst %.moc.hpp,%.moc,$f))) +qt_compile = $(call compile,-Iobj $(qtinc)) + +############# +### rules ### +############# + +# automatically run moc on all .moc.hpp (MOC header) files +%.moc: $<; $(moc) -i $< -o $@ + +# automatically generate %.moc build rules +__list = $(moc_headers) +$(foreach f,$(moc_objects), \ + $(eval __file = $(word 1,$(__list))) \ + $(eval __list = $(wordlist 2,$(words $(__list)),$(__list))) \ + $(eval $f: $(__file)) \ +) + +obj/ui-main.o: $(ui)/main.cpp $(headers) $(wildcard $(ui)/*.cpp) $(wildcard $(ui)/platform/*.cpp) $(wildcard $(ui)/utility/*.cpp); $(qt_compile) +obj/ui-base.o: $(ui)/base/base.cpp $(headers) $(wildcard $(ui)/base/*.cpp); $(qt_compile) +obj/ui-cartridge.o: $(ui)/cartridge/cartridge.cpp $(headers) $(wildcard $(ui)/cartridge/*.cpp); $(qt_compile) +obj/ui-debugger.o: $(ui)/debugger/debugger.cpp $(headers) $(call rwildcard,$(ui)/debugger/,%.cpp); $(qt_compile) +obj/ui-input.o: $(ui)/input/input.cpp $(headers) $(wildcard $(ui)/input/*.cpp); $(qt_compile) +obj/ui-movie.o: $(ui)/movie/movie.cpp $(headers) $(wildcard $(ui)/movie/*.cpp); $(qt_compile) +obj/ui-settings.o: $(ui)/settings/settings.cpp $(headers) $(wildcard $(ui)/settings/*.cpp); $(qt_compile) +obj/ui-state.o: $(ui)/state/state.cpp $(headers) $(wildcard $(ui)/state/*.cpp); $(qt_compile) +obj/ui-tools.o: $(ui)/tools/tools.cpp $(headers) $(wildcard $(ui)/tools/*.cpp); $(qt_compile) + +obj/resource.rcc: $(ui)/resource/resource.qrc data/* + $(rcc) $(ui)/resource/resource.qrc -o obj/resource.rcc + +obj/resource.o: $(ui)/resource/resource.rc + windres $(ui)/resource/resource.rc obj/resource.o + +############### +### targets ### +############### + +ui_build: obj/resource.rcc $(moc_objects); +ui_clean: + -@$(call delete,obj/*.rcc) + -@$(call delete,obj/*.moc) diff --git a/libmednahawk/src/snes/src/ui_qt/application/application.cpp b/libmednahawk/src/snes/src/ui_qt/application/application.cpp new file mode 100644 index 0000000000..712f4bccc3 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/application/application.cpp @@ -0,0 +1,172 @@ +#include "application.moc" +Application application; + +#include "init.cpp" +#include "qb.cpp" + +void Application::initPaths(const char *basename) { + char temp[PATH_MAX]; + + if(realpath(basename, temp)) { + //remove program name + strtr(temp, "\\", "/"); + for(signed i = strlen(temp) - 1; i >= 0; i--) { + if(temp[i] == '/') { + temp[i] = 0; + break; + } + } + + if(strend(temp, "/") == false) strcat(temp, "/"); + config().path.base = temp; + } else { + config().path.base = ""; + } + + if(userpath(temp)) { + strtr(temp, "\\", "/"); + if(strend(temp, "/") == false) strcat(temp, "/"); + config().path.user = temp; + } else { + config().path.user = ""; + } + + char cwd[PATH_MAX]; + config().path.startup = getcwd(cwd); +} + +void Application::locateFile(string &filename, bool createDataDirectory) { + //first, check if file exists in executable directory (single-user mode) + string temp = string() << config().path.base << filename; + + if(file::exists(temp) == false) { + //if not, use user data path (multi-user mode) + temp = config().path.user; + temp << ".bsnes"; + if(createDataDirectory) mkdir(temp); //ensure directory exists + temp << "/" << filename; + } + + filename = temp; +} + +int Application::main(int &argc, char **argv) { + app = new App(argc, argv); + #if !defined(PLATFORM_WIN) + //Windows port uses 256x256 icon from resource file + app->setWindowIcon(QIcon(":/bsnes.png")); + #endif + + initargs(argc, argv); //ensure argv[]s are in UTF-8 format + initPaths(argv[0]); + locateFile(configFilename = "bsnes.cfg", true); + locateFile(styleSheetFilename = "style.qss", false); + + string customStylesheet; + if(customStylesheet.readfile(styleSheetFilename) == true) { + app->setStyleSheet((const char*)customStylesheet); + } else { + app->setStyleSheet(defaultStylesheet); + } + + config().load(configFilename); + mapper().bind(); + init(); + SNES::system.init(&interface); + mainWindow->system_loadSpecial_superGameBoy->setVisible(SNES::supergameboy.opened()); + + if(argc == 2) { + //if valid file was specified on the command-line, attempt to load it now + cartridge.loadNormal(argv[1]); + } + + timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(run())); + timer->start(0); + app->exec(); + + //QbWindow::hide() saves window geometry for next run + for(unsigned i = 0; i < windowList.size(); i++) { + windowList[i]->hide(); + } + + cartridge.unload(); + config().save(configFilename); + return 0; +} + +void Application::run() { + if(terminate == true) { + timer->stop(); + app->quit(); + return; + } + + QApplication::processEvents(); + utility.updateSystemState(); + mapper().poll(); + + if(config().input.focusPolicy == Configuration::Input::FocusPolicyPauseEmulation) { + bool active = mainWindow->isActive(); + if(!autopause && !active) { + autopause = true; + audio.clear(); + } else if(autopause && active) { + autopause = false; + } + } else { + autopause = false; + } + + if(SNES::cartridge.loaded() && !pause && !autopause && (!debug || debugrun)) { + SNES::system.run(); + #if defined(DEBUGGER) + if(SNES::debugger.break_event != SNES::Debugger::None) { + debug = true; + debugrun = false; + debugger->synchronize(); + debugger->event(); + SNES::debugger.break_event = SNES::Debugger::None; + } + #endif + } else { + usleep(20 * 1000); + } + + clock_t currentTime = clock(); + autosaveTime += currentTime - clockTime; + screensaverTime += currentTime - clockTime; + clockTime = currentTime; + + if(autosaveTime >= CLOCKS_PER_SEC * 60) { + //auto-save RAM once per minute in case of emulator crash + autosaveTime = 0; + if(config().system.autoSaveMemory == true) cartridge.saveMemory(); + } + + if(screensaverTime >= CLOCKS_PER_SEC * 30) { + //supress screen saver every 30 seconds so it will not trigger during gameplay + screensaverTime = 0; + supressScreenSaver(); + } +} + +Application::Application() : timer(0) { + terminate = false; + power = false; + pause = false; + autopause = false; + debug = false; + debugrun = false; + + clockTime = clock(); + autosaveTime = 0; + screensaverTime = 0; +} + +Application::~Application() { + delete timer; + + //deleting (QApplication)app will segfault the application upon exit + //delete app; +} diff --git a/libmednahawk/src/snes/src/ui_qt/application/application.moc.hpp b/libmednahawk/src/snes/src/ui_qt/application/application.moc.hpp new file mode 100644 index 0000000000..383868c8c2 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/application/application.moc.hpp @@ -0,0 +1,46 @@ +#include "qb.hpp" + +class Application : public QObject { + Q_OBJECT + +public: + class App : public QApplication { + public: + #if defined(PLATFORM_WIN) + bool winEventFilter(MSG *msg, long *result); + #endif + + App(int &argc, char **argv) : QApplication(argc, argv) {} + } *app; + + QTimer *timer; + + bool terminate; //set to true to terminate main() loop and exit emulator + bool power; + bool pause; + bool autopause; + bool debug; //debugger sets this to true when entered to suspend emulation + bool debugrun; //debugger sets this to true to run emulation to a debug event + + clock_t clockTime; + clock_t autosaveTime; + clock_t screensaverTime; + + string configFilename; + string styleSheetFilename; + + array windowList; + + int main(int &argc, char **argv); + void locateFile(string &filename, bool createDataDirectory = false); + void initPaths(const char *basename); + void init(); + + Application(); + ~Application(); + +public slots: + void run(); +}; + +extern Application application; diff --git a/libmednahawk/src/snes/src/ui_qt/application/init.cpp b/libmednahawk/src/snes/src/ui_qt/application/init.cpp new file mode 100644 index 0000000000..b017ab8202 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/application/init.cpp @@ -0,0 +1,108 @@ +void Application::init() { + if(config().system.crashedOnLastRun == true) { + //emulator crashed on last run, disable all drivers + QMessageBox::warning(0, "bsnes Crash Notification", string() << + "

    Warning:
    bsnes crashed while attempting to initialize device " + "drivers the last time it was run.

    " + "

    To prevent this from occurring again, all drivers have been disabled. Please " + "go to Settings->Configuration->Advanced and choose new driver settings, and then " + "restart the emulator for the changes to take effect. Video, audio and input " + "will not work until you do this!

    " + "

    Settings that caused failure on last run:
    " + << "Video driver: " << config().system.video << "
    " + << "Audio driver: " << config().system.audio << "
    " + << "Input driver: " << config().system.input << "

    " + ); + + config().system.video = "None"; + config().system.audio = "None"; + config().system.input = "None"; + } + + if(config().system.video == "") config().system.video = video.default_driver(); + if(config().system.audio == "") config().system.audio = audio.default_driver(); + if(config().system.input == "") config().system.input = input.default_driver(); + + mainWindow = new MainWindow; + loaderWindow = new LoaderWindow; + htmlViewerWindow = new HtmlViewerWindow; + aboutWindow = new AboutWindow; + diskBrowser = new DiskBrowser; + + //window must be onscreen and visible before initializing video interface + utility.updateSystemState(); + utility.resizeMainWindow(); + utility.updateFullscreenState(); + QApplication::processEvents(); + + #if defined(DEBUGGER) + debugger = new Debugger; + #endif + settingsWindow = new SettingsWindow; + toolsWindow = new ToolsWindow; + + //if emulator crashes while initializing drivers, next run will disable them all. + //this will allow user to choose different driver settings. + config().system.crashedOnLastRun = true; + config().save(configFilename); + + video.driver(config().system.video); + video.set(Video::Handle, (uintptr_t)mainWindow->canvas->winId()); + video.set("QWidget", (QWidget*)mainWindow->canvas); + if(video.init() == false) { + QMessageBox::warning(0, "bsnes", string() << + "

    Warning: " << config().system.video << " video driver failed to initialize. " + "Video driver has been disabled.

    " + "

    Please go to Settings->Configuration->Advanced and choose a different driver, and " + "then restart the emulator for the changes to take effect.

    " + ); + video.driver("None"); + video.init(); + } + + audio.driver(config().system.audio); + audio.set(Audio::Handle, (uintptr_t)mainWindow->canvas->winId()); + audio.set(Audio::Frequency, config().audio.outputFrequency); + audio.set(Audio::Latency, config().audio.latency); + audio.set(Audio::Volume, config().audio.volume); + if(audio.init() == false) { + QMessageBox::warning(0, "bsnes", string() << + "

    Warning: " << config().system.audio << " audio driver failed to initialize. " + "Audio driver has been disabled.

    " + "

    Please go to Settings->Configuration->Advanced and choose a different driver, and " + "then restart the emulator for the changes to take effect.

    " + ); + audio.driver("None"); + audio.init(); + } + + input.driver(config().system.input); + input.set("Handle", (uintptr_t)mainWindow->canvas->winId()); + if(input.init() == false) { + QMessageBox::warning(0, "bsnes", string() << + "

    Warning: " << config().system.input << " input driver failed to initialize. " + "Input driver has been disabled.

    " + "

    Please go to Settings->Configuration->Advanced and choose a different driver, and " + "then restart the emulator for the changes to take effect.

    " + ); + input.driver("None"); + input.init(); + } + + //didn't crash, note this in the config file now in case a different kind of crash occurs later + config().system.crashedOnLastRun = false; + config().save(configFilename); + + //no sense showing unusable options ... + pixelShaderWindow->setVisible(video.cap(Video::FragmentShader) || video.cap(Video::VertexShader)); + + utility.resizeMainWindow(); + utility.updateAvSync(); + utility.updateVideoMode(); + utility.updateColorFilter(); + utility.updatePixelShader(); + utility.updateHardwareFilter(); + utility.updateSoftwareFilter(); + utility.updateEmulationSpeed(); + utility.updateControllers(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/application/qb.cpp b/libmednahawk/src/snes/src/ui_qt/application/qb.cpp new file mode 100644 index 0000000000..7e060de57d --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/application/qb.cpp @@ -0,0 +1,101 @@ +void QbWindow::setCloseOnEscape(bool state) { + closeOnEscape = state; +} + +void QbWindow::shrink() { + if(config().video.isFullscreen == false) { + for(unsigned i = 0; i < 2; i++) { + resize(0, 0); + usleep(2000); + QApplication::processEvents(); + } + } +} + +void QbWindow::show() { + if(isVisible() == false) { + uint8_t *data; + unsigned length; + base64::decode(data, length, geometryString); + QByteArray array((const char*)data, length); + delete[] data; + restoreGeometry(array); + QWidget::show(); + } + + QApplication::processEvents(); + activateWindow(); + raise(); +} + +void QbWindow::hide() { + if(isVisible() == true) { + char *data; + QByteArray geometry = saveGeometry(); + base64::encode(data, (const uint8_t*)geometry.data(), geometry.length()); + geometryString = data; + delete[] data; + QWidget::hide(); + } +} + +void QbWindow::closeEvent(QCloseEvent *event) { + char *data; + QByteArray geometry = saveGeometry(); + base64::encode(data, (const uint8_t*)geometry.data(), geometry.length()); + geometryString = data; + delete[] data; + QWidget::hide(); +} + +void QbWindow::keyReleaseEvent(QKeyEvent *event) { + if((closeOnEscape == true) && (event->key() == Qt::Key_Escape)) close(); + QWidget::keyReleaseEvent(event); +} + +QbWindow::QbWindow(string &geometryString_) : geometryString(geometryString_) { + closeOnEscape = true; + + //keep track of all created windows (for geometry save on exit, always-on-top control, etc) + application.windowList.add(this); +} + +// + +bool QbCheckAction::isChecked() const { + return checked; +} + +void QbCheckAction::setChecked(bool checked_) { + checked = checked_; + if(checked) setIcon(QIcon(":/16x16/item-check-on.png")); + else setIcon(QIcon(":/16x16/item-check-off.png")); +} + +void QbCheckAction::toggleChecked() { + setChecked(!isChecked()); +} + +QbCheckAction::QbCheckAction(const QString &text, QObject *parent) : QAction(text, parent) { + setChecked(false); +} + +// + +bool QbRadioAction::isChecked() const { + return checked; +} + +void QbRadioAction::setChecked(bool checked_) { + checked = checked_; + if(checked) setIcon(QIcon(":/16x16/item-radio-on.png")); + else setIcon(QIcon(":/16x16/item-radio-off.png")); +} + +void QbRadioAction::toggleChecked() { + setChecked(!isChecked()); +} + +QbRadioAction::QbRadioAction(const QString &text, QObject *parent) : QAction(text, parent) { + setChecked(false); +} diff --git a/libmednahawk/src/snes/src/ui_qt/application/qb.hpp b/libmednahawk/src/snes/src/ui_qt/application/qb.hpp new file mode 100644 index 0000000000..e2420b5137 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/application/qb.hpp @@ -0,0 +1,36 @@ +class QbWindow : public QWidget { +public: + void setCloseOnEscape(bool); + void shrink(); + void show(); + void hide(); + void closeEvent(QCloseEvent*); + void keyReleaseEvent(QKeyEvent*); + QbWindow(string&); + +private: + string &geometryString; + bool closeOnEscape; +}; + +class QbCheckAction : public QAction { +public: + bool isChecked() const; + void setChecked(bool); + void toggleChecked(); + QbCheckAction(const QString&, QObject*); + +private: + bool checked; +}; + +class QbRadioAction : public QAction { +public: + bool isChecked() const; + void setChecked(bool); + void toggleChecked(); + QbRadioAction(const QString&, QObject*); + +private: + bool checked; +}; diff --git a/libmednahawk/src/snes/src/ui_qt/base/about.cpp b/libmednahawk/src/snes/src/ui_qt/base/about.cpp new file mode 100644 index 0000000000..61cd62e989 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/about.cpp @@ -0,0 +1,32 @@ +#include "about.moc" +AboutWindow *aboutWindow; + +AboutWindow::AboutWindow() : QbWindow(config().geometry.aboutWindow) { + setObjectName("about-window"); + setWindowTitle("About bsnes ..."); + + layout = new QVBoxLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + logo = new Logo; + logo->setFixedSize(600, 106); + layout->addWidget(logo); + + info = new QLabel(string() << + "" + "" + "" + "" + "
    Version: " << bsnesVersion << "
    Author: byuu
    Homepage: http://byuu.org/
    " + ); + layout->addWidget(info); +} + +void AboutWindow::Logo::paintEvent(QPaintEvent*) { + QPainter painter(this); + QPixmap pixmap(":/logo.png"); + painter.drawPixmap(0, 0, pixmap); +} diff --git a/libmednahawk/src/snes/src/ui_qt/base/about.moc.hpp b/libmednahawk/src/snes/src/ui_qt/base/about.moc.hpp new file mode 100644 index 0000000000..0db6aafd92 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/about.moc.hpp @@ -0,0 +1,14 @@ +class AboutWindow : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + struct Logo : public QWidget { + void paintEvent(QPaintEvent*); + } *logo; + QLabel *info; + + AboutWindow(); +}; + +extern AboutWindow *aboutWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/base/base.cpp b/libmednahawk/src/snes/src/ui_qt/base/base.cpp new file mode 100644 index 0000000000..97887abab0 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/base.cpp @@ -0,0 +1,7 @@ +#include "../ui-base.hpp" + +#include "about.cpp" +#include "diskbrowser.cpp" +#include "htmlviewer.cpp" +#include "loader.cpp" +#include "main.cpp" diff --git a/libmednahawk/src/snes/src/ui_qt/base/diskbrowser.cpp b/libmednahawk/src/snes/src/ui_qt/base/diskbrowser.cpp new file mode 100644 index 0000000000..ff02bf4d9e --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/diskbrowser.cpp @@ -0,0 +1,601 @@ +#include "diskbrowser.moc" +FolderCreator *folderCreator; +DiskBrowser *diskBrowser; + +//============= +//FolderCreator +//============= + +FolderCreator::FolderCreator() : QbWindow(config().geometry.folderCreator) { + setObjectName("folder-creator"); + setWindowTitle("Create New Folder"); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + label = new QLabel("Folder name:"); + layout->addWidget(label); + + name = new QLineEdit; + layout->addWidget(name); + + controlLayout = new QHBoxLayout; + controlLayout->setAlignment(Qt::AlignRight); + layout->addLayout(controlLayout); + + ok = new QPushButton("Ok"); + controlLayout->addWidget(ok); + + cancel = new QPushButton("Cancel"); + controlLayout->addWidget(cancel); + + connect(name, SIGNAL(returnPressed()), this, SLOT(createFolder())); + connect(ok, SIGNAL(released()), this, SLOT(createFolder())); + connect(cancel, SIGNAL(released()), this, SLOT(close())); +} + +void FolderCreator::show() { + name->setText(""); + QbWindow::show(); + name->setFocus(); +} + +void FolderCreator::createFolder() { + if(name->text().length() == 0) { + QMessageBox::warning(0, "Create New Folder", "Note: you must enter a folder name."); + } else { + string folderName = string() + << diskBrowser->model->rootPath().toUtf8().constData() + << "/" + << name->text().toUtf8().constData(); + + if(mkdir(folderName) == 0) { + hide(); + } else { + QMessageBox::warning(0, "Create new Folder", "Error: failed to create folder. Please ensure only valid characters were used in the folder name."); + } + } +} + +//=============== +//DiskBrowserView +//=============== + +void DiskBrowserView::keyPressEvent(QKeyEvent *event) { + //enhance consistency: OS X by default doesn't activate items for these keypresses + if(event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { + emit activated(currentIndex()); + return; + } + + //simulate popular file managers; backspace = go up one directory + if(event->key() == Qt::Key_Backspace) { + emit cdUp(); + return; + } + + //fallback: unrecognized keypresses get handled by the widget itself + QTreeView::keyPressEvent(event); +} + +void DiskBrowserView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { + QAbstractItemView::currentChanged(current, previous); + emit changed(current); +} + +//================ +//DiskBrowserImage +//================ + +void DiskBrowserImage::paintEvent(QPaintEvent*) { + QPainter painter(this); + if(name != "") { + QImage image(QString::fromUtf8(name)); + painter.drawImage(0, 0, image); + } +} + +//=========== +//DiskBrowser +//=========== + +void DiskBrowser::inputEvent(uint16_t scancode) { + if(!isActiveWindow() || isMinimized()) return; + + //provide very simple support for controlling the window via gamepads + if(Joypad::isAnyHat(scancode)) { + int16_t state = mapper().state(scancode); + + if(state == Joypad::HatUp) { + QKeyEvent event((QEvent::Type)6, Qt::Key_Up, Qt::NoModifier); + view->keyPressEvent(&event); + } + + if(state == Joypad::HatDown) { + QKeyEvent event((QEvent::Type)6, Qt::Key_Down, Qt::NoModifier); + view->keyPressEvent(&event); + } + + if(state == Joypad::HatLeft) { + QKeyEvent event((QEvent::Type)6, Qt::Key_Backspace, Qt::NoModifier); + view->keyPressEvent(&event); + } + + if(state == Joypad::HatRight) { + QKeyEvent event((QEvent::Type)6, Qt::Key_Return, Qt::NoModifier); + view->keyPressEvent(&event); + } + } +} + +void DiskBrowser::chooseFolder(const function &callback_, string ¤tPath_, const char *title) { + callback = callback_; + currentPath = ¤tPath_; + browseMode = Folder; + + hide(); + group->hide(); + ok->setText("Choose"); + setWindowTitle(string() << title); + setPath(*currentPath); + setNameFilters("Folders ()"); + show(); +} + +void DiskBrowser::chooseFile(const function &callback_, string ¤tPath_, const char *title) { + callback = callback_; + currentPath = ¤tPath_; + browseMode = File; + + hide(); + group->hide(); + ok->setText("Choose"); + setWindowTitle(string() << title); + setPath(*currentPath); + setNameFilters("All Files (*)"); + show(); +} + +void DiskBrowser::loadCartridge() { + currentPath = &config().path.current.cartridge; + browseMode = Cartridge; + + hide(); + group->setVisible(config().diskBrowser.showPanel); + ok->setText("Load"); + setWindowTitle("Load Cartridge"); + setPath(config().path.rom == "" ? *currentPath : config().path.rom); + setNameFilters(string() + << "SNES cartridges (*.sfc" << reader.extensionList << reader.compressionList << ");;" + << "BS-X cartridges (*.bs" << reader.compressionList << ");;" + << "Sufami Turbo cartridges (*.st" << reader.compressionList << ");;" + << "Game Boy cartridges (*.gb *.sgb *.gbc" << reader.compressionList << ");;" + << "All files (*)" + ); + filter->setCurrentIndex(config().path.current.filter); + show(); +} + +void DiskBrowser::loadBaseCartridge() { + currentPath = &config().path.current.cartridge; + browseMode = BaseCartridge; + + hide(); + group->setVisible(config().diskBrowser.showPanel); + ok->setText("Load"); + setWindowTitle("Load Base Cartridge"); + setPath(config().path.rom == "" ? *currentPath : config().path.rom); + setNameFilters(string() + << "SNES cartridges (*.sfc" << reader.extensionList << reader.compressionList << ");;" + << "All files (*)" + ); + show(); +} + +void DiskBrowser::loadBsxCartridge() { + currentPath = &config().path.current.bsx; + browseMode = BsxCartridge; + + hide(); + group->setVisible(config().diskBrowser.showPanel); + ok->setText("Load"); + setWindowTitle("Load BS-X Cartridge"); + setPath(config().path.rom == "" ? *currentPath : config().path.rom); + setNameFilters(string() + << "BS-X cartridges (*.bs" << reader.compressionList << ");;" + << "All files (*)" + ); + show(); +} + +void DiskBrowser::loadSufamiTurboCartridge1() { + currentPath = &config().path.current.st; + browseMode = SufamiTurboCartridge1; + + hide(); + group->setVisible(config().diskBrowser.showPanel); + ok->setText("Load"); + setWindowTitle("Load Slot-A Sufami Turbo Cartridge"); + setPath(config().path.rom == "" ? *currentPath : config().path.rom); + setNameFilters(string() + << "Sufami Turbo cartridges (*.st" << reader.compressionList << ");;" + << "All files (*)" + ); + show(); +} + +void DiskBrowser::loadSufamiTurboCartridge2() { + currentPath = &config().path.current.st; + browseMode = SufamiTurboCartridge2; + + hide(); + group->setVisible(config().diskBrowser.showPanel); + ok->setText("Load"); + setWindowTitle("Load Slot-B Sufami Turbo Cartridge"); + setPath(config().path.rom == "" ? *currentPath : config().path.rom); + setNameFilters(string() + << "Sufami Turbo Cartridges (*.st" << reader.compressionList << ");;" + << "All files (*)" + ); + show(); +} + +void DiskBrowser::loadSuperGameBoyCartridge() { + currentPath = &config().path.current.sgb; + browseMode = SuperGameBoyCartridge; + + hide(); + group->setVisible(config().diskBrowser.showPanel); + ok->setText("Load"); + setWindowTitle("Load Super Game Boy Cartridge"); + setPath(config().path.rom == "" ? *currentPath : config().path.rom); + setNameFilters(string() + << "Game Boy cartridges (*.gb *.sgb *.gbc" << reader.compressionList << ");;" + << "All files (*)" + ); + show(); +} + +string DiskBrowser::queryImageInformation() { + string text; + string filename; + if(currentFilename(filename) == true) { + Cartridge::Information info; + if(cartridge.information(filename, info)) { + unsigned size = file::size(filename); + text << ""; + text << ""; + text << ""; + text << ""; + text << "" : text << "None"; + text << "
    Title: " << info.name << "
    Region: " << info.region << "
    ROM: " << info.romSize * 8 / 1024 / 1024 << "mbit
    RAM: "; + info.ramSize ? text << info.ramSize * 8 / 1024 << "kbit
    "; + } + } + return text; +} + +void DiskBrowser::activateItem(const QModelIndex &item) { + if(browseMode == Folder) { + setPath(model->filePath(item)); + } else { + loadSelected(); + } +} + +void DiskBrowser::changeItem(const QModelIndex &item) { + if(browseMode == Folder) { + ok->setEnabled(model->isDir(item)); + image->name = ""; + info->setText(""); + applyPatch->setVisible(false); + } else { + string filename; + currentFilename(filename); + + if(filename.length() == 0) { + //nothing selected? + ok->setEnabled(false); + image->name = ""; + info->setText(""); + applyPatch->setVisible(false); + } else { + ok->setEnabled(true); + image->name = nall::basename(filename) << ".png"; + if(file::exists(image->name) == false) image->name = ""; + info->setText(string() << queryImageInformation()); + string patch = nall::basename(filename) << ".ups"; + applyPatch->setVisible(file::exists(patch)); + } + } + + image->update(); +} + +void DiskBrowser::loadSelected() { + string filename; + bool loadable = currentFilename(filename); + + if(browseMode == Folder || loadable == true) { + QModelIndex item = view->currentIndex(); + if(currentPath) *currentPath = dir(model->filePath(item).toUtf8().constData()); + hide(); + + if(browseMode == Folder || browseMode == File) { + callback(filename); + } else if(browseMode == Cartridge) { + //quick-loading mode: determine load type via active filter + config().path.current.filter = filter->currentIndex(); + + if(config().path.current.filter == 1) { //"BS-X cartridges" + if(config().path.bsx == "") { + loaderWindow->loadBsxCartridge("", filename); + } else { + cartridge.loadBsx(config().path.bsx, filename); + } + } else if(config().path.current.filter == 2) { //"Sufami Turbo cartridges" + if(config().path.st == "") { + loaderWindow->loadSufamiTurboCartridge("", filename, ""); + } else { + cartridge.loadSufamiTurbo(config().path.st, filename, ""); + } + } else if(config().path.current.filter == 3) { //"Game Boy cartridges" + if(SNES::supergameboy.opened() == false) { + QMessageBox::warning(0, "Warning", "Super Game Boy support missing - cartridge cannot be loaded."); + } else if(config().path.sgb == "") { + loaderWindow->loadSuperGameBoyCartridge("", filename); + } else { + cartridge.loadSuperGameBoy(config().path.sgb, filename); + } + } else { //"SNES cartridges" (0) or "All files" (4) + cartridge.loadNormal(filename); + } + } else if(browseMode == BaseCartridge) { + loaderWindow->selectBaseCartridge(filename); + } else if(browseMode == BsxCartridge) { + loaderWindow->selectSlot1Cartridge(filename); + } else if(browseMode == SufamiTurboCartridge1) { + loaderWindow->selectSlot1Cartridge(filename); + } else if(browseMode == SufamiTurboCartridge2) { + loaderWindow->selectSlot2Cartridge(filename); + } else if(browseMode == SuperGameBoyCartridge) { + loaderWindow->selectSlot1Cartridge(filename); + } + } else { + //this is a standard folder in ROM loading mode; enter into the folder + QModelIndex item = view->currentIndex(); + setPath(model->filePath(item)); + } +} + +// + +void DiskBrowser::setPath(const QString &reqPath) { + disconnect(path, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePath())); + + QString effectivePath = reqPath; + if(effectivePath == "") { + effectivePath = QString::fromUtf8(config().path.startup); + } + if(effectivePath == "" || QDir(reqPath).exists() == false) { + effectivePath = ""; + newFolder->setEnabled(false); + } else { + newFolder->setEnabled(true); + } + path->clear(); + model->setRootPath(effectivePath); + view->setRootIndex(model->index(effectivePath)); + view->setCurrentIndex(view->rootIndex()); + view->setFocus(); + + if(effectivePath.length() > 0) { + QDir directory(effectivePath); + while(true) { + path->addItem(directory.absolutePath()); + if(directory.isRoot()) break; + directory.cdUp(); + } + } + path->addItem(""); + + connect(path, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePath())); +} + +void DiskBrowser::setNameFilters(const QString &filters) { + disconnect(filter, SIGNAL(currentIndexChanged(int)), this, SLOT(updateFilter())); + + filter->clear(); + + string filterData = filters.toUtf8().constData(); + lstring filterPart; + filterPart.split(";;", filterData); + + for(unsigned i = 0; i < filterPart.size(); i++) { + filter->addItem(filterPart[i]); + } + + connect(filter, SIGNAL(currentIndexChanged(int)), this, SLOT(updateFilter())); + updateFilter(); +} + +void DiskBrowser::cdUp() { + folderCreator->hide(); + //if we aren't already at the root node, select the second node, which is one path higher than the current + if(path->count() > 1) path->setCurrentIndex(1); +} + +void DiskBrowser::updatePath() { + setPath(path->currentText()); +} + +void DiskBrowser::updateFilter() { + QString currentText = filter->currentText(); + if(currentText.length() == 0) { + model->setNameFilters(QStringList() << "*"); + } else { + string filters = currentText.toUtf8().constData(); + filters = substr(filters, strpos(filters, "(")); + ltrim(filters, "("); + rtrim(filters, ")"); + lstring filterPart; + filterPart.split(" ", filters); + QStringList filterList; + for(unsigned i = 0; i < filterPart.size(); i++) filterList << (const char*)filterPart[i]; + model->setNameFilters(filterList); + } +} + +//true means filename can be loaded directly +//false means it cannot (eg this is a folder and we are attempting to load a ROM) +bool DiskBrowser::currentFilename(string &filename) { + bool loadable = false; + QModelIndex item = view->currentIndex(); + filename = model->filePath(item).toUtf8().constData(); + + if(browseMode != Folder) { + if(model->isDir(item)) { + if(browseMode != File) { + //folders ending in ".sfc" are treated as "packages", and loaded directly + if(striend(filename, ".sfc")) { + QDir directory(filename); + directory.setNameFilters(QStringList() << "*.sfc"); + QStringList list = directory.entryList(QDir::Files | QDir::NoDotAndDotDot); + if(list.count() == 1) { + filename << "/" << list[0].toUtf8().constData(); + loadable = true; + } + } + } + } else { + loadable = true; + } + } + + return loadable; +} + +void DiskBrowser::toggleApplyPatches() { + config().file.applyPatches = applyPatch->isChecked(); +} + +void DiskBrowser::toggleShowPanel() { + showPanel->setChecked(!showPanel->isChecked()); + config().diskBrowser.showPanel = showPanel->isChecked(); + group->setVisible(config().diskBrowser.showPanel); +} + +DiskBrowser::DiskBrowser() : QbWindow(config().geometry.diskBrowser) { + setObjectName("disk-browser"); + resize(720, 480); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + topLayout = new QHBoxLayout; + layout->addLayout(topLayout); + + browseLayout = new QVBoxLayout; + topLayout->addLayout(browseLayout); + + pathLayout = new QHBoxLayout; + browseLayout->addLayout(pathLayout); + + path = new QComboBox; + path->setEditable(true); + path->setMinimumContentsLength(16); + path->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength); + path->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + pathLayout->addWidget(path); + + newFolder = new QPushButton; + newFolder->setIconSize(QSize(16, 16)); + newFolder->setIcon(QIcon(":/16x16/folder-new.png")); + pathLayout->addWidget(newFolder); + + view = new DiskBrowserView; + view->setIconSize(QSize(16, 16)); + browseLayout->addWidget(view); + + panelLayout = new QVBoxLayout; + topLayout->addLayout(panelLayout); + + group = new QGroupBox; + panelLayout->addWidget(group); + + groupLayout = new QVBoxLayout; + group->setLayout(groupLayout); + + info = new QLabel; + info->setFixedWidth(256); + groupLayout->addWidget(info); + + image = new DiskBrowserImage; + image->setFixedSize(256, 239); + groupLayout->addWidget(image); + + spacer = new QWidget; + spacer->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + groupLayout->addWidget(spacer); + + applyPatch = new QCheckBox("Apply UPS patch"); + applyPatch->setChecked(config().file.applyPatches); + groupLayout->addWidget(applyPatch); + + controlLayout = new QHBoxLayout; + layout->addLayout(controlLayout); + + filter = new QComboBox; + filter->setMinimumContentsLength(16); + filter->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength); + filter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + controlLayout->addWidget(filter); + + options = new QPushButton("Options"); + controlLayout->addWidget(options); + + menu = new QMenu; + options->setMenu(menu); + + menu->addAction(showPanel = new QbCheckAction("Show Side Panel", 0)); + showPanel->setChecked(config().diskBrowser.showPanel); + + ok = new QPushButton("Ok"); + ok->setEnabled(false); + controlLayout->addWidget(ok); + + cancel = new QPushButton("Cancel"); + controlLayout->addWidget(cancel); + + model = new QFileSystemModel; + model->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); + model->setNameFilterDisables(false); + + view->setModel(model); + view->setExpandsOnDoubleClick(false); + view->setAllColumnsShowFocus(true); + view->setUniformRowHeights(true); + view->setSortingEnabled(true); + view->sortByColumn(0, Qt::AscendingOrder); + view->setColumnHidden(1, true); + view->setColumnHidden(2, true); + view->setColumnHidden(3, true); + view->setHeaderHidden(true); + + folderCreator = new FolderCreator; + + connect(newFolder, SIGNAL(released()), folderCreator, SLOT(show())); + connect(view, SIGNAL(cdUp()), this, SLOT(cdUp())); + connect(view, SIGNAL(activated(const QModelIndex&)), this, SLOT(activateItem(const QModelIndex&))); + connect(view, SIGNAL(changed(const QModelIndex&)), this, SLOT(changeItem(const QModelIndex&))); + connect(ok, SIGNAL(released()), this, SLOT(loadSelected())); + connect(cancel, SIGNAL(released()), this, SLOT(close())); + + connect(applyPatch, SIGNAL(stateChanged(int)), this, SLOT(toggleApplyPatches())); + connect(showPanel, SIGNAL(triggered()), this, SLOT(toggleShowPanel())); +} diff --git a/libmednahawk/src/snes/src/ui_qt/base/diskbrowser.moc.hpp b/libmednahawk/src/snes/src/ui_qt/base/diskbrowser.moc.hpp new file mode 100644 index 0000000000..63cbc3d593 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/diskbrowser.moc.hpp @@ -0,0 +1,117 @@ +class FolderCreator : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QLabel *label; + QLineEdit *name; + QHBoxLayout *controlLayout; + QPushButton *ok; + QPushButton *cancel; + + FolderCreator(); + +public slots: + void show(); + void createFolder(); +}; + +extern FolderCreator *folderCreator; + +class DiskBrowserView : public QTreeView { + Q_OBJECT + +public: + void keyPressEvent(QKeyEvent*); + +signals: + void cdUp(); + void changed(const QModelIndex&); + +public slots: + void currentChanged(const QModelIndex&, const QModelIndex&); +}; + +class DiskBrowserImage : public QWidget { +public: + string name; + void paintEvent(QPaintEvent*); +}; + +class DiskBrowser : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QHBoxLayout *topLayout; + QVBoxLayout *browseLayout; + QHBoxLayout *pathLayout; + QComboBox *path; + QPushButton *newFolder; + DiskBrowserView *view; + QVBoxLayout *panelLayout; + QGroupBox *group; + QVBoxLayout *groupLayout; + QLabel *info; + DiskBrowserImage *image; + QWidget *spacer; + QCheckBox *applyPatch; + QHBoxLayout *controlLayout; + QComboBox *filter; + QPushButton *options; + QPushButton *ok; + QPushButton *cancel; + QFileSystemModel *model; + + QMenu *menu; + QbCheckAction *showPanel; + + void inputEvent(uint16_t scancode); + + void chooseFolder(const function&, string&, const char*); + void chooseFile(const function&, string&, const char*); + + void loadCartridge(); + void loadBaseCartridge(); + void loadBsxCartridge(); + void loadSufamiTurboCartridge1(); + void loadSufamiTurboCartridge2(); + void loadSuperGameBoyCartridge(); + + string queryImageInformation(); + + void setPath(const QString&); + void setNameFilters(const QString&); + + DiskBrowser(); + +public slots: + void cdUp(); + void updatePath(); + void updateFilter(); + void activateItem(const QModelIndex&); + void changeItem(const QModelIndex&); + void loadSelected(); + + void toggleApplyPatches(); + void toggleShowPanel(); + +private: + function callback; + string *currentPath; + + enum BrowseMode { + Folder, + File, + Cartridge, + BaseCartridge, + BsxCartridge, + SufamiTurboCartridge1, + SufamiTurboCartridge2, + SuperGameBoyCartridge, + } browseMode; + + bool currentFilename(string&); +}; + +extern DiskBrowser *diskBrowser; diff --git a/libmednahawk/src/snes/src/ui_qt/base/htmlviewer.cpp b/libmednahawk/src/snes/src/ui_qt/base/htmlviewer.cpp new file mode 100644 index 0000000000..54e32a248c --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/htmlviewer.cpp @@ -0,0 +1,21 @@ +#include "htmlviewer.moc" +HtmlViewerWindow *htmlViewerWindow; + +HtmlViewerWindow::HtmlViewerWindow() : QbWindow(config().geometry.htmlViewerWindow) { + setObjectName("html-window"); + resize(560, 480); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(0); + setLayout(layout); + + document = new QTextBrowser; + layout->addWidget(document); +} + +void HtmlViewerWindow::show(const char *title, const char *htmlData) { + document->setHtml(string() << htmlData); + setWindowTitle(title); + QbWindow::show(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/base/htmlviewer.moc.hpp b/libmednahawk/src/snes/src/ui_qt/base/htmlviewer.moc.hpp new file mode 100644 index 0000000000..c75053003d --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/htmlviewer.moc.hpp @@ -0,0 +1,14 @@ +class HtmlViewerWindow : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTextBrowser *document; + + void show(const char *title, const char *htmlData); + HtmlViewerWindow(); + +public slots: +}; + +extern HtmlViewerWindow *htmlViewerWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/base/loader.cpp b/libmednahawk/src/snes/src/ui_qt/base/loader.cpp new file mode 100644 index 0000000000..84920efe06 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/loader.cpp @@ -0,0 +1,229 @@ +#include "loader.moc" +LoaderWindow *loaderWindow; + +LoaderWindow::LoaderWindow() : QbWindow(config().geometry.loaderWindow) { + setObjectName("loader-window"); + setMinimumWidth(520); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + grid = new QGridLayout; + layout->addLayout(grid); + + baseLabel = new QLabel("Base cartridge:"); + grid->addWidget(baseLabel, 0, 0); + + baseFile = new QLineEdit; + baseFile->setReadOnly(true); + grid->addWidget(baseFile, 0, 1); + + baseBrowse = new QPushButton("Browse ..."); + grid->addWidget(baseBrowse, 0, 2); + + baseClear = new QPushButton("Clear"); + grid->addWidget(baseClear, 0, 3); + + slot1Label = new QLabel("Slot A cartridge:"); + grid->addWidget(slot1Label, 1, 0); + + slot1File = new QLineEdit; + slot1File->setReadOnly(true); + grid->addWidget(slot1File, 1, 1); + + slot1Browse = new QPushButton("Browse ..."); + grid->addWidget(slot1Browse, 1, 2); + + slot1Clear = new QPushButton("Clear"); + grid->addWidget(slot1Clear, 1, 3); + + slot2Label = new QLabel("Slot B cartridge:"); + grid->addWidget(slot2Label, 2, 0); + + slot2File = new QLineEdit; + slot2File->setReadOnly(true); + grid->addWidget(slot2File, 2, 1); + + slot2Browse = new QPushButton("Browse ..."); + grid->addWidget(slot2Browse, 2, 2); + + slot2Clear = new QPushButton("Clear"); + grid->addWidget(slot2Clear, 2, 3); + + load = new QPushButton("Load"); + grid->addWidget(load, 3, 2); + + cancel = new QPushButton("Cancel"); + grid->addWidget(cancel, 3, 3); + + connect(baseBrowse, SIGNAL(released()), this, SLOT(selectBaseCartridge())); + connect(baseClear, SIGNAL(released()), this, SLOT(clearBaseCartridge())); + connect(slot1Browse, SIGNAL(released()), this, SLOT(selectSlot1Cartridge())); + connect(slot1Clear, SIGNAL(released()), this, SLOT(clearSlot1Cartridge())); + connect(slot2Browse, SIGNAL(released()), this, SLOT(selectSlot2Cartridge())); + connect(slot2Clear, SIGNAL(released()), this, SLOT(clearSlot2Cartridge())); + connect(load, SIGNAL(released()), this, SLOT(onLoad())); + connect(cancel, SIGNAL(released()), this, SLOT(close())); +} + +void LoaderWindow::syncUi() { + //only allow load when a base file is specified ... + load->setEnabled(baseFile->text().length() > 0); +} + +void LoaderWindow::loadBsxSlottedCartridge(const char *filebase, const char *fileSlot1) { + hide(); + baseLabel->show(), baseFile->show(), baseBrowse->show(), baseClear->show(); + slot1Label->show(), slot1File->show(), slot1Browse->show(), slot1Clear->show(); + slot2Label->hide(), slot2File->hide(), slot2Browse->hide(), slot2Clear->hide(); + + slot1Label->setText("Slot cartridge:"); + + baseFile->setText(filebase); + slot1File->setText(fileSlot1); + + syncUi(); + mode = SNES::Cartridge::ModeBsxSlotted; + showWindow("Load BS-X Slotted Cartridge"); +} + +void LoaderWindow::loadBsxCartridge(const char *fileBase, const char *fileSlot1) { + hide(); + baseLabel->show(), baseFile->show(), baseBrowse->show(), baseClear->show(); + slot1Label->show(), slot1File->show(), slot1Browse->show(), slot1Clear->show(); + slot2Label->hide(), slot2File->hide(), slot2Browse->hide(), slot2Clear->hide(); + + slot1Label->setText("Slot cartridge:"); + + baseFile->setText(fileBase); + slot1File->setText(fileSlot1); + + syncUi(); + mode = SNES::Cartridge::ModeBsx; + showWindow("Load BS-X Cartridge"); +} + +void LoaderWindow::loadSufamiTurboCartridge(const char *fileBase, const char *fileSlot1, const char *fileSlot2) { + hide(); + baseLabel->show(), baseFile->show(), baseBrowse->show(), baseClear->show(); + slot1Label->show(), slot1File->show(), slot1Browse->show(), slot1Clear->show(); + slot2Label->show(), slot2File->show(), slot2Browse->show(), slot2Clear->show(); + + slot1Label->setText("Slot A cartridge:"); + slot2Label->setText("Slot B cartridge:"); + + baseFile->setText(fileBase); + slot1File->setText(fileSlot1); + slot2File->setText(fileSlot2); + + syncUi(); + mode = SNES::Cartridge::ModeSufamiTurbo; + showWindow("Load Sufami Turbo Cartridge"); +} + +void LoaderWindow::loadSuperGameBoyCartridge(const char *fileBase, const char *fileSlot1) { + hide(); + baseLabel->show(), baseFile->show(), baseBrowse->show(), baseClear->show(); + slot1Label->show(), slot1File->show(), slot1Browse->show(), slot1Clear->show(); + slot2Label->hide(), slot2File->hide(), slot2Browse->hide(), slot2Clear->hide(); + + slot1Label->setText("Game Boy cartridge:"); + + baseFile->setText(fileBase); + slot1File->setText(fileSlot1); + + syncUi(); + mode = SNES::Cartridge::ModeSuperGameBoy; + showWindow("Load Super Game Boy Cartridge"); +} + +void LoaderWindow::showWindow(const char *title) { + setWindowTitle(title); + show(); + shrink(); + load->setFocus(); +} + +void LoaderWindow::selectBaseCartridge(const char *filename) { + baseFile->setText(string() << filename); + syncUi(); +} + +void LoaderWindow::selectSlot1Cartridge(const char *filename) { + slot1File->setText(string() << filename); + syncUi(); +} + +void LoaderWindow::selectSlot2Cartridge(const char *filename) { + slot2File->setText(string() << filename); + syncUi(); +} + +void LoaderWindow::selectBaseCartridge() { + diskBrowser->loadBaseCartridge(); +} + +void LoaderWindow::clearBaseCartridge() { + baseFile->setText(""); + syncUi(); +} + +void LoaderWindow::selectSlot1Cartridge() { + switch(mode) { + case SNES::Cartridge::ModeBsx: + case SNES::Cartridge::ModeBsxSlotted: + diskBrowser->loadBsxCartridge(); + break; + case SNES::Cartridge::ModeSufamiTurbo: + diskBrowser->loadSufamiTurboCartridge1(); + break; + case SNES::Cartridge::ModeSuperGameBoy: + diskBrowser->loadSuperGameBoyCartridge(); + break; + } +} + +void LoaderWindow::clearSlot1Cartridge() { + slot1File->setText(""); + syncUi(); +} + +void LoaderWindow::selectSlot2Cartridge() { + diskBrowser->loadSufamiTurboCartridge2(); +} + +void LoaderWindow::clearSlot2Cartridge() { + slot2File->setText(""); + syncUi(); +} + +void LoaderWindow::onLoad() { + hide(); + string base = baseFile->text().toUtf8().data(); + string slot1 = slot1File->text().toUtf8().data(); + string slot2 = slot2File->text().toUtf8().data(); + + switch(mode) { + case SNES::Cartridge::ModeBsxSlotted: { + cartridge.loadBsxSlotted(base, slot1); + } break; + + case SNES::Cartridge::ModeBsx: { + config().path.bsx = base; + cartridge.loadBsx(base, slot1); + } break; + + case SNES::Cartridge::ModeSufamiTurbo: { + config().path.st = base; + cartridge.loadSufamiTurbo(base, slot1, slot2); + } break; + + case SNES::Cartridge::ModeSuperGameBoy: { + config().path.sgb = base; + cartridge.loadSuperGameBoy(base, slot1); + } break; + } +} diff --git a/libmednahawk/src/snes/src/ui_qt/base/loader.moc.hpp b/libmednahawk/src/snes/src/ui_qt/base/loader.moc.hpp new file mode 100644 index 0000000000..04e8207a65 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/loader.moc.hpp @@ -0,0 +1,47 @@ +class LoaderWindow : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QGridLayout *grid; + QLabel *baseLabel; + QLineEdit *baseFile; + QPushButton *baseBrowse; + QPushButton *baseClear; + QLabel *slot1Label; + QLineEdit *slot1File; + QPushButton *slot1Browse; + QPushButton *slot1Clear; + QLabel *slot2Label; + QLineEdit *slot2File; + QPushButton *slot2Browse; + QPushButton *slot2Clear; + QPushButton *load; + QPushButton *cancel; + + void syncUi(); + void loadBsxSlottedCartridge(const char*, const char*); + void loadBsxCartridge(const char*, const char*); + void loadSufamiTurboCartridge(const char*, const char*, const char*); + void loadSuperGameBoyCartridge(const char*, const char*); + LoaderWindow(); + + void selectBaseCartridge(const char*); + void selectSlot1Cartridge(const char*); + void selectSlot2Cartridge(const char*); + +public slots: + void selectBaseCartridge(); + void clearBaseCartridge(); + void selectSlot1Cartridge(); + void clearSlot1Cartridge(); + void selectSlot2Cartridge(); + void clearSlot2Cartridge(); + void onLoad(); + +private: + SNES::Cartridge::Mode mode; + void showWindow(const char *title); +}; + +extern LoaderWindow *loaderWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/base/main.cpp b/libmednahawk/src/snes/src/ui_qt/base/main.cpp new file mode 100644 index 0000000000..3364ac3378 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/main.cpp @@ -0,0 +1,636 @@ +#include "main.moc" +MainWindow *mainWindow; + +MainWindow::MainWindow() : QbWindow(config().geometry.mainWindow) { + setObjectName("main-window"); + setWindowTitle(string() << bsnesTitle << " v" << bsnesVersion); + setCloseOnEscape(false); + + //menu bar + #if defined(PLATFORM_OSX) + menuBar = new QMenuBar(0); + #else + menuBar = new QMenuBar; + #endif + + system = menuBar->addMenu("&System"); + + system_load = system->addAction("Load &Cartridge ..."); + system_load->setIcon(QIcon(":/16x16/document-open.png")); + + system_loadSpecial = system->addMenu("Load &Special"); + system_loadSpecial->setIcon(QIcon(":/16x16/document-open.png")); + + system_loadSpecial_bsxSlotted = system_loadSpecial->addAction("Load BS-X &Slotted Cartridge ..."); + system_loadSpecial_bsxSlotted->setIcon(QIcon(":/16x16/document-open.png")); + + system_loadSpecial_bsx = system_loadSpecial->addAction("Load &BS-X Cartridge ..."); + system_loadSpecial_bsx->setIcon(QIcon(":/16x16/document-open.png")); + + system_loadSpecial_sufamiTurbo = system_loadSpecial->addAction("Load Sufami &Turbo Cartridge ..."); + system_loadSpecial_sufamiTurbo->setIcon(QIcon(":/16x16/document-open.png")); + + system_loadSpecial_superGameBoy = system_loadSpecial->addAction("Load Super &Game Boy Cartridge ..."); + system_loadSpecial_superGameBoy->setIcon(QIcon(":/16x16/document-open.png")); + + system->addSeparator(); + + system->addAction(system_power = new QbCheckAction("&Power", 0)); + + system_reset = system->addAction("&Reset"); + system_reset->setIcon(QIcon(":/16x16/view-refresh.png")); + + system->addSeparator(); + + system_port1 = system->addMenu("Controller Port &1"); + system_port1->setIcon(QIcon(":/16x16/input-gaming.png")); + system_port1->addAction(system_port1_none = new QbRadioAction("&None", 0)); + system_port1->addAction(system_port1_gamepad = new QbRadioAction("&Gamepad", 0)); + system_port1->addAction(system_port1_asciipad = new QbRadioAction("&asciiPad", 0)); + system_port1->addAction(system_port1_multitap = new QbRadioAction("&Multitap", 0)); + system_port1->addAction(system_port1_mouse = new QbRadioAction("&Mouse", 0)); + + system_port2 = system->addMenu("Controller Port &2"); + system_port2->setIcon(QIcon(":/16x16/input-gaming.png")); + system_port2->addAction(system_port2_none = new QbRadioAction("&None", 0)); + system_port2->addAction(system_port2_gamepad = new QbRadioAction("&Gamepad", 0)); + system_port2->addAction(system_port2_asciipad = new QbRadioAction("&asciiPad", 0)); + system_port2->addAction(system_port2_multitap = new QbRadioAction("&Multitap", 0)); + system_port2->addAction(system_port2_mouse = new QbRadioAction("&Mouse", 0)); + system_port2->addAction(system_port2_superscope = new QbRadioAction("&Super Scope", 0)); + system_port2->addAction(system_port2_justifier = new QbRadioAction("&Justifier", 0)); + system_port2->addAction(system_port2_justifiers = new QbRadioAction("Two &Justifiers", 0)); + + #if !defined(PLATFORM_OSX) + system->addSeparator(); + #endif + + system_exit = system->addAction("E&xit"); + system_exit->setIcon(QIcon(":/16x16/process-stop.png")); + system_exit->setMenuRole(QAction::QuitRole); + + settings = menuBar->addMenu("S&ettings"); + + settings_videoMode = settings->addMenu("Video &Mode"); + settings_videoMode->setIcon(QIcon(":/16x16/video-display.png")); + + settings_videoMode->addAction(settings_videoMode_1x = new QbRadioAction("Scale &1x", 0)); + + settings_videoMode->addAction(settings_videoMode_2x = new QbRadioAction("Scale &2x", 0)); + + settings_videoMode->addAction(settings_videoMode_3x = new QbRadioAction("Scale &3x", 0)); + + settings_videoMode->addAction(settings_videoMode_4x = new QbRadioAction("Scale &4x", 0)); + + settings_videoMode->addAction(settings_videoMode_5x = new QbRadioAction("Scale &5x", 0)); + + settings_videoMode->addSeparator(); + + settings_videoMode->addAction(settings_videoMode_correctAspectRatio = new QbCheckAction("Correct &Aspect Ratio", 0)); + + settings_videoMode->addSeparator(); + + settings_videoMode->addAction(settings_videoMode_ntsc = new QbRadioAction("&NTSC", 0)); + settings_videoMode->addAction(settings_videoMode_pal = new QbRadioAction("&PAL", 0)); + + if(filter.opened()) { + settings_videoFilter = settings->addMenu("Video &Filter"); + settings_videoFilter->setIcon(QIcon(":/16x16/image-x-generic.png")); + + settings_videoFilter_configure = settings_videoFilter->addAction("&Configure Active Filter ..."); + settings_videoFilter_configure->setIcon(QIcon(":/16x16/preferences-desktop.png")); + settings_videoFilter->addSeparator(); + + settings_videoFilter->addAction(settings_videoFilter_none = new QbRadioAction("&None", 0)); + settings_videoFilter_list.add(settings_videoFilter_none); + + lstring filterlist; + filterlist.split(";", filter.dl_supported()); + for(unsigned i = 0; i < filterlist.size(); i++) { + QbRadioAction *action = new QbRadioAction(filterlist[i], 0); + settings_videoFilter->addAction(action); + settings_videoFilter_list.add(action); + } + } + + settings->addAction(settings_smoothVideo = new QbCheckAction("&Smooth Video Output", 0)); + + settings->addSeparator(); + + settings->addAction(settings_muteAudio = new QbCheckAction("&Mute Audio Output", 0)); + + settings->addSeparator(); + + settings_emulationSpeed = settings->addMenu("Emulation &Speed"); + settings_emulationSpeed->setIcon(QIcon(":/16x16/appointment-new.png")); + + settings_emulationSpeed->addAction(settings_emulationSpeed_slowest = new QbRadioAction("Slowest", 0)); + + settings_emulationSpeed->addAction(settings_emulationSpeed_slow = new QbRadioAction("Slow", 0)); + + settings_emulationSpeed->addAction(settings_emulationSpeed_normal = new QbRadioAction("Normal", 0)); + + settings_emulationSpeed->addAction(settings_emulationSpeed_fast = new QbRadioAction("Fast", 0)); + + settings_emulationSpeed->addAction(settings_emulationSpeed_fastest = new QbRadioAction("Fastest", 0)); + + settings_emulationSpeed->addSeparator(); + + settings_emulationSpeed->addAction(settings_emulationSpeed_syncVideo = new QbCheckAction("Sync &Video", 0)); + + settings_emulationSpeed->addAction(settings_emulationSpeed_syncAudio = new QbCheckAction("Sync &Audio", 0)); + + settings_configuration = settings->addAction("&Configuration ..."); + settings_configuration->setIcon(QIcon(":/16x16/preferences-desktop.png")); + settings_configuration->setMenuRole(QAction::PreferencesRole); + + tools = menuBar->addMenu("&Tools"); + + tools_movies = tools->addMenu("&Movies"); + tools_movies->setIcon(QIcon(":/16x16/applications-multimedia.png")); + + tools_movies_play = tools_movies->addAction("Play Movie ..."); + tools_movies_play->setIcon(QIcon(":/16x16/media-playback-start.png")); + + tools_movies_stop = tools_movies->addAction("Stop"); + tools_movies_stop->setIcon(QIcon(":/16x16/media-playback-stop.png")); + + tools_movies_recordFromPowerOn = tools_movies->addAction("Record Movie (and restart system)"); + tools_movies_recordFromPowerOn->setIcon(QIcon(":/16x16/media-record.png")); + + tools_movies_recordFromHere = tools_movies->addAction("Record Movie (starting from here)"); + tools_movies_recordFromHere->setIcon(QIcon(":/16x16/media-record.png")); + + tools_captureScreenshot = tools->addAction("&Capture Screenshot"); + tools_captureScreenshot->setIcon(QIcon(":/16x16/image-x-generic.png")); + + tools->addSeparator(); + + tools_dialog = tools->addAction("&Tools Dialog ..."); + tools_dialog->setIcon(QIcon(":/16x16/preferences-desktop.png")); + + tools_debugger = tools->addAction("&Debugger ..."); + tools_debugger->setIcon(QIcon(":/16x16/utilities-terminal.png")); + #if !defined(DEBUGGER) + tools_debugger->setVisible(false); + #endif + + help = menuBar->addMenu("&Help"); + + help_documentation = help->addAction("&Documentation ..."); + help_documentation->setIcon(QIcon(":/16x16/text-x-generic.png")); + + help_license = help->addAction("&License ..."); + help_license->setIcon(QIcon(":/16x16/text-x-generic.png")); + + #if !defined(PLATFORM_OSX) + help->addSeparator(); + #endif + + help_about = help->addAction("&About ..."); + help_about->setIcon(QIcon(":/16x16/help-browser.png")); + help_about->setMenuRole(QAction::AboutRole); + + //canvas + canvasContainer = new CanvasObject; + canvasContainer->setAcceptDrops(true); { + canvasContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + canvasContainer->setObjectName("backdrop"); + + canvasLayout = new QVBoxLayout; { + canvasLayout->setMargin(0); + canvasLayout->setAlignment(Qt::AlignCenter); + + canvas = new CanvasWidget; + canvas->setAcceptDrops(true); + canvas->setFocusPolicy(Qt::StrongFocus); + canvas->setAttribute(Qt::WA_PaintOnScreen, true); //disable Qt painting on focus / resize + + QPalette palette; + palette.setColor(QPalette::Window, QColor(0, 0, 0)); + canvas->setPalette(palette); + canvas->setAutoFillBackground(true); + } + canvasLayout->addWidget(canvas); + } + canvasContainer->setLayout(canvasLayout); + + //status bar + statusBar = new QStatusBar; + statusBar->showMessage(""); + systemState = new QLabel; + statusBar->addPermanentWidget(systemState); + + //layout + layout = new QVBoxLayout; + layout->setMargin(0); + layout->setSpacing(0); + #if !defined(PLATFORM_OSX) + layout->addWidget(menuBar); + #endif + layout->addWidget(canvasContainer); + layout->addWidget(statusBar); + setLayout(layout); + + //slots + connect(system_load, SIGNAL(triggered()), this, SLOT(loadCartridge())); + connect(system_loadSpecial_bsxSlotted, SIGNAL(triggered()), this, SLOT(loadBsxSlottedCartridge())); + connect(system_loadSpecial_bsx, SIGNAL(triggered()), this, SLOT(loadBsxCartridge())); + connect(system_loadSpecial_sufamiTurbo, SIGNAL(triggered()), this, SLOT(loadSufamiTurboCartridge())); + connect(system_loadSpecial_superGameBoy, SIGNAL(triggered()), this, SLOT(loadSuperGameBoyCartridge())); + connect(system_power, SIGNAL(triggered()), this, SLOT(power())); + connect(system_reset, SIGNAL(triggered()), this, SLOT(reset())); + connect(system_port1_none, SIGNAL(triggered()), this, SLOT(setPort1None())); + connect(system_port1_gamepad, SIGNAL(triggered()), this, SLOT(setPort1Gamepad())); + connect(system_port1_asciipad, SIGNAL(triggered()), this, SLOT(setPort1Asciipad())); + connect(system_port1_multitap, SIGNAL(triggered()), this, SLOT(setPort1Multitap())); + connect(system_port1_mouse, SIGNAL(triggered()), this, SLOT(setPort1Mouse())); + connect(system_port2_none, SIGNAL(triggered()), this, SLOT(setPort2None())); + connect(system_port2_gamepad, SIGNAL(triggered()), this, SLOT(setPort2Gamepad())); + connect(system_port2_asciipad, SIGNAL(triggered()), this, SLOT(setPort2Asciipad())); + connect(system_port2_multitap, SIGNAL(triggered()), this, SLOT(setPort2Multitap())); + connect(system_port2_mouse, SIGNAL(triggered()), this, SLOT(setPort2Mouse())); + connect(system_port2_superscope, SIGNAL(triggered()), this, SLOT(setPort2SuperScope())); + connect(system_port2_justifier, SIGNAL(triggered()), this, SLOT(setPort2Justifier())); + connect(system_port2_justifiers, SIGNAL(triggered()), this, SLOT(setPort2Justifiers())); + connect(system_exit, SIGNAL(triggered()), this, SLOT(quit())); + connect(settings_videoMode_1x, SIGNAL(triggered()), this, SLOT(setVideoMode1x())); + connect(settings_videoMode_2x, SIGNAL(triggered()), this, SLOT(setVideoMode2x())); + connect(settings_videoMode_3x, SIGNAL(triggered()), this, SLOT(setVideoMode3x())); + connect(settings_videoMode_4x, SIGNAL(triggered()), this, SLOT(setVideoMode4x())); + connect(settings_videoMode_5x, SIGNAL(triggered()), this, SLOT(setVideoMode5x())); + connect(settings_videoMode_correctAspectRatio, SIGNAL(triggered()), this, SLOT(toggleAspectCorrection())); + connect(settings_videoMode_ntsc, SIGNAL(triggered()), this, SLOT(setVideoNtsc())); + connect(settings_videoMode_pal, SIGNAL(triggered()), this, SLOT(setVideoPal())); + if(filter.opened()) { + connect(settings_videoFilter_configure, SIGNAL(triggered()), this, SLOT(configureFilter())); + for(unsigned i = 0; i < settings_videoFilter_list.size(); i++) { + connect(settings_videoFilter_list[i], SIGNAL(triggered()), this, SLOT(setFilter())); + } + } + connect(settings_smoothVideo, SIGNAL(triggered()), this, SLOT(toggleSmoothVideo())); + connect(settings_muteAudio, SIGNAL(triggered()), this, SLOT(muteAudio())); + connect(settings_emulationSpeed_slowest, SIGNAL(triggered()), this, SLOT(setSpeedSlowest())); + connect(settings_emulationSpeed_slow, SIGNAL(triggered()), this, SLOT(setSpeedSlow())); + connect(settings_emulationSpeed_normal, SIGNAL(triggered()), this, SLOT(setSpeedNormal())); + connect(settings_emulationSpeed_fast, SIGNAL(triggered()), this, SLOT(setSpeedFast())); + connect(settings_emulationSpeed_fastest, SIGNAL(triggered()), this, SLOT(setSpeedFastest())); + connect(settings_emulationSpeed_syncVideo, SIGNAL(triggered()), this, SLOT(syncVideo())); + connect(settings_emulationSpeed_syncAudio, SIGNAL(triggered()), this, SLOT(syncAudio())); + connect(settings_configuration, SIGNAL(triggered()), this, SLOT(showConfigWindow())); + connect(tools_movies_play, SIGNAL(triggered()), this, SLOT(playMovie())); + connect(tools_movies_stop, SIGNAL(triggered()), this, SLOT(stopMovie())); + connect(tools_movies_recordFromPowerOn, SIGNAL(triggered()), this, SLOT(recordMovieFromPowerOn())); + connect(tools_movies_recordFromHere, SIGNAL(triggered()), this, SLOT(recordMovieFromHere())); + connect(tools_captureScreenshot, SIGNAL(triggered()), this, SLOT(saveScreenshot())); + connect(tools_debugger, SIGNAL(triggered()), this, SLOT(showDebugger())); + connect(tools_dialog, SIGNAL(triggered()), this, SLOT(showToolsDialog())); + connect(help_documentation, SIGNAL(triggered()), this, SLOT(showDocumentation())); + connect(help_license, SIGNAL(triggered()), this, SLOT(showLicense())); + connect(help_about, SIGNAL(triggered()), this, SLOT(showAbout())); + + syncUi(); +} + +void MainWindow::syncUi() { + system_power->setEnabled(SNES::cartridge.loaded()); + system_power->setChecked (application.power == true); + system_power->setEnabled(SNES::cartridge.loaded()); + system_reset->setEnabled(SNES::cartridge.loaded() && application.power); + + system_port1_none->setChecked (config().input.port1 == ControllerPort1::None); + system_port1_gamepad->setChecked (config().input.port1 == ControllerPort1::Gamepad); + system_port1_asciipad->setChecked (config().input.port1 == ControllerPort1::Asciipad); + system_port1_multitap->setChecked (config().input.port1 == ControllerPort1::Multitap); + system_port1_mouse->setChecked (config().input.port1 == ControllerPort1::Mouse); + + system_port2_none->setChecked (config().input.port2 == ControllerPort2::None); + system_port2_gamepad->setChecked (config().input.port2 == ControllerPort2::Gamepad); + system_port2_asciipad->setChecked (config().input.port2 == ControllerPort2::Asciipad); + system_port2_multitap->setChecked (config().input.port2 == ControllerPort2::Multitap); + system_port2_mouse->setChecked (config().input.port2 == ControllerPort2::Mouse); + system_port2_superscope->setChecked(config().input.port2 == ControllerPort2::SuperScope); + system_port2_justifier->setChecked (config().input.port2 == ControllerPort2::Justifier); + system_port2_justifiers->setChecked(config().input.port2 == ControllerPort2::Justifiers); + + settings_videoMode_1x->setChecked(config().video.context->multiplier == 1); + settings_videoMode_2x->setChecked(config().video.context->multiplier == 2); + settings_videoMode_3x->setChecked(config().video.context->multiplier == 3); + settings_videoMode_4x->setChecked(config().video.context->multiplier == 4); + settings_videoMode_5x->setChecked(config().video.context->multiplier == 5); + + settings_videoMode_correctAspectRatio->setChecked(config().video.context->correctAspectRatio); + settings_videoMode_ntsc->setChecked(config().video.context->region == 0); + settings_videoMode_pal->setChecked (config().video.context->region == 1); + + if(filter.opened()) { + //only enable configuration option if the active filter supports it ... + settings_videoFilter_configure->setEnabled(filter.settings()); + + for(unsigned i = 0; i < settings_videoFilter_list.size(); i++) { + settings_videoFilter_list[i]->setChecked(config().video.context->swFilter == i); + } + } + + settings_smoothVideo->setChecked(config().video.context->hwFilter == 1); + settings_muteAudio->setChecked(config().audio.mute); + + settings_emulationSpeed_slowest->setChecked(config().system.speed == 0); + settings_emulationSpeed_slow->setChecked (config().system.speed == 1); + settings_emulationSpeed_normal->setChecked (config().system.speed == 2); + settings_emulationSpeed_fast->setChecked (config().system.speed == 3); + settings_emulationSpeed_fastest->setChecked(config().system.speed == 4); + + settings_emulationSpeed_syncVideo->setChecked(config().video.synchronize); + settings_emulationSpeed_syncAudio->setChecked(config().audio.synchronize); + + //movies contian save states to synchronize playback to recorded input + tools_movies->setEnabled(SNES::cartridge.loaded() && cartridge.saveStatesSupported()); + if(tools_movies->isEnabled()) { + tools_movies_play->setEnabled(movie.state == Movie::Inactive); + tools_movies_stop->setEnabled(movie.state != Movie::Inactive); + tools_movies_recordFromPowerOn->setEnabled(movie.state == Movie::Inactive); + tools_movies_recordFromHere->setEnabled(movie.state == Movie::Inactive); + } +} + +bool MainWindow::isActive() { + return isActiveWindow() && !isMinimized(); +} + +void MainWindow::loadCartridge() { + diskBrowser->loadCartridge(); +} + +void MainWindow::loadBsxSlottedCartridge() { + loaderWindow->loadBsxSlottedCartridge("", ""); +} + +void MainWindow::loadBsxCartridge() { + loaderWindow->loadBsxCartridge(config().path.bsx, ""); +} + +void MainWindow::loadSufamiTurboCartridge() { + loaderWindow->loadSufamiTurboCartridge(config().path.st, "", ""); +} + +void MainWindow::loadSuperGameBoyCartridge() { + loaderWindow->loadSuperGameBoyCartridge(config().path.sgb, ""); +} + +void MainWindow::power() { + system_power->toggleChecked(); + if(system_power->isChecked()) { + utility.modifySystemState(Utility::PowerOn); + } else { + utility.modifySystemState(Utility::PowerOff); + } +} + +void MainWindow::reset() { + utility.modifySystemState(Utility::Reset); +} + +void MainWindow::setPort1None() { + config().input.port1 = ControllerPort1::None; + SNES::config.controller_port1 = SNES::Input::DeviceNone; + utility.updateControllers(); +} + +void MainWindow::setPort1Gamepad() { + config().input.port1 = ControllerPort1::Gamepad; + SNES::config.controller_port1 = SNES::Input::DeviceJoypad; + utility.updateControllers(); +} + +void MainWindow::setPort1Asciipad() { + config().input.port1 = ControllerPort1::Asciipad; + SNES::config.controller_port1 = SNES::Input::DeviceJoypad; + utility.updateControllers(); +} + +void MainWindow::setPort1Multitap() { + config().input.port1 = ControllerPort1::Multitap; + SNES::config.controller_port1 = SNES::Input::DeviceMultitap; + utility.updateControllers(); +} + +void MainWindow::setPort1Mouse() { + config().input.port1 = ControllerPort1::Mouse; + SNES::config.controller_port1 = SNES::Input::DeviceMouse; + utility.updateControllers(); +} + +void MainWindow::setPort2None() { + config().input.port2 = ControllerPort2::None; + SNES::config.controller_port2 = SNES::Input::DeviceNone; + utility.updateControllers(); +} + +void MainWindow::setPort2Gamepad() { + config().input.port2 = ControllerPort2::Gamepad; + SNES::config.controller_port2 = SNES::Input::DeviceJoypad; + utility.updateControllers(); +} + +void MainWindow::setPort2Asciipad() { + config().input.port2 = ControllerPort2::Asciipad; + SNES::config.controller_port2 = SNES::Input::DeviceJoypad; + utility.updateControllers(); +} + +void MainWindow::setPort2Multitap() { + config().input.port2 = ControllerPort2::Multitap; + SNES::config.controller_port2 = SNES::Input::DeviceMultitap; + utility.updateControllers(); +} + +void MainWindow::setPort2Mouse() { + config().input.port2 = ControllerPort2::Mouse; + SNES::config.controller_port2 = SNES::Input::DeviceMouse; + utility.updateControllers(); +} + +void MainWindow::setPort2SuperScope() { + config().input.port2 = ControllerPort2::SuperScope; + SNES::config.controller_port2 = SNES::Input::DeviceSuperScope; + utility.updateControllers(); +} + +void MainWindow::setPort2Justifier() { + config().input.port2 = ControllerPort2::Justifier; + SNES::config.controller_port2 = SNES::Input::DeviceJustifier; + utility.updateControllers(); +} + +void MainWindow::setPort2Justifiers() { + config().input.port2 = ControllerPort2::Justifiers; + SNES::config.controller_port2 = SNES::Input::DeviceJustifiers; + utility.updateControllers(); +} + +void MainWindow::quit() { + hide(); + application.terminate = true; +} + +void MainWindow::setVideoMode1x() { utility.setScale(1); } +void MainWindow::setVideoMode2x() { utility.setScale(2); } +void MainWindow::setVideoMode3x() { utility.setScale(3); } +void MainWindow::setVideoMode4x() { utility.setScale(4); } +void MainWindow::setVideoMode5x() { utility.setScale(5); } + +void MainWindow::toggleAspectCorrection() { utility.toggleAspectCorrection(); } + +void MainWindow::setVideoNtsc() { utility.setNtscMode(); } +void MainWindow::setVideoPal() { utility.setPalMode(); } + +void MainWindow::toggleSmoothVideo() { utility.toggleSmoothVideoOutput(); } + +void MainWindow::configureFilter() { + QWidget *widget = filter.settings(); + if(widget) { + widget->show(); + widget->activateWindow(); + widget->raise(); + } +} + +void MainWindow::setFilter() { + for(unsigned i = 0; i < settings_videoFilter_list.size(); i++) { + if(sender() == settings_videoFilter_list[i]) { + config().video.context->swFilter = i; + utility.updateSoftwareFilter(); + syncUi(); + return; + } + } +} + +void MainWindow::muteAudio() { + settings_muteAudio->toggleChecked(); + config().audio.mute = settings_muteAudio->isChecked(); +} + +void MainWindow::setSpeedSlowest() { config().system.speed = 0; utility.updateEmulationSpeed(); syncUi(); } +void MainWindow::setSpeedSlow() { config().system.speed = 1; utility.updateEmulationSpeed(); syncUi(); } +void MainWindow::setSpeedNormal() { config().system.speed = 2; utility.updateEmulationSpeed(); syncUi(); } +void MainWindow::setSpeedFast() { config().system.speed = 3; utility.updateEmulationSpeed(); syncUi(); } +void MainWindow::setSpeedFastest() { config().system.speed = 4; utility.updateEmulationSpeed(); syncUi(); } + +void MainWindow::syncVideo() { utility.toggleSynchronizeVideo(); } +void MainWindow::syncAudio() { utility.toggleSynchronizeAudio(); } + +void MainWindow::showConfigWindow() { settingsWindow->show(); } + +void MainWindow::playMovie() { + movie.chooseFile(); + syncUi(); +} + +void MainWindow::stopMovie() { + movie.stop(); + syncUi(); +} + +void MainWindow::recordMovieFromPowerOn() { + utility.modifySystemState(Utility::PowerCycle); + movie.record(); + syncUi(); +} + +void MainWindow::recordMovieFromHere() { + movie.record(); + syncUi(); +} + +void MainWindow::saveScreenshot() { + //tell SNES::Interface to save a screenshot at the next video_refresh() event + interface.saveScreenshot = true; +} + +void MainWindow::showDebugger() { + #if defined(DEBUGGER) + debugger->show(); + #endif +} + +void MainWindow::showToolsDialog() { toolsWindow->show(); } + +void MainWindow::showDocumentation() { + QFile file(":/documentation.html"); + if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { + htmlViewerWindow->show("Usage Documentation", file.readAll().constData()); + file.close(); + } +} + +void MainWindow::showLicense() { + QFile file(":/license.html"); + if(file.open(QIODevice::ReadOnly | QIODevice::Text)) { + htmlViewerWindow->show("License Agreement", file.readAll().constData()); + file.close(); + } +} +void MainWindow::showAbout() { + aboutWindow->show(); +} + +void MainWindow::closeEvent(QCloseEvent *event) { + QbWindow::closeEvent(event); + quit(); +} + +//============ +//CanvasObject +//============ + +//implement drag-and-drop support: +//drag cartridge image onto main window canvas area to load + +void CanvasObject::dragEnterEvent(QDragEnterEvent *event) { + if(event->mimeData()->hasUrls()) { + //do not accept multiple files at once + if(event->mimeData()->urls().count() == 1) event->acceptProposedAction(); + } +} + +void CanvasObject::dropEvent(QDropEvent *event) { + if(event->mimeData()->hasUrls()) { + QList list = event->mimeData()->urls(); + if(list.count() == 1) cartridge.loadNormal(list.at(0).toLocalFile().toUtf8().constData()); + } +} + +//accept all key events for this widget to prevent system chime from playing on OS X +//key events are actually handled by Input class + +void CanvasObject::keyPressEvent(QKeyEvent *event) { +} + +void CanvasObject::keyReleaseEvent(QKeyEvent *event) { +} + +//=========== +//CanvasWidget +//============ + +//custom video render and mouse capture functionality + +QPaintEngine* CanvasWidget::paintEngine() const { + if(SNES::cartridge.loaded()) { + video.refresh(); + return 0; + } + return QWidget::paintEngine(); +} + +void CanvasWidget::mouseReleaseEvent(QMouseEvent *event) { + //acquire exclusive mode access to mouse when video output widget is clicked + //(will only acquire if cart is loaded, and mouse / lightgun is in use.) + utility.acquireMouse(); +} + +void CanvasWidget::paintEvent(QPaintEvent *event) { + event->ignore(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/base/main.moc.hpp b/libmednahawk/src/snes/src/ui_qt/base/main.moc.hpp new file mode 100644 index 0000000000..8a98751ab4 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/base/main.moc.hpp @@ -0,0 +1,151 @@ +class CanvasObject : public QWidget { +public: + void dragEnterEvent(QDragEnterEvent*); + void dropEvent(QDropEvent*); + void keyPressEvent(QKeyEvent*); + void keyReleaseEvent(QKeyEvent*); +}; + +class CanvasWidget : public CanvasObject { +public: + QPaintEngine* paintEngine() const; + void mouseReleaseEvent(QMouseEvent*); + void paintEvent(QPaintEvent*); +}; + +class MainWindow : public QbWindow { + Q_OBJECT + +public: + QMenuBar *menuBar; + QStatusBar *statusBar; + QVBoxLayout *layout; + QMenu *system; + QAction *system_load; + QMenu *system_loadSpecial; + QAction *system_loadSpecial_bsxSlotted; + QAction *system_loadSpecial_bsx; + QAction *system_loadSpecial_sufamiTurbo; + QAction *system_loadSpecial_superGameBoy; + QbCheckAction *system_power; + QAction *system_reset; + QMenu *system_port1; + QbRadioAction *system_port1_none; + QbRadioAction *system_port1_gamepad; + QbRadioAction *system_port1_asciipad; + QbRadioAction *system_port1_multitap; + QbRadioAction *system_port1_mouse; + QMenu *system_port2; + QbRadioAction *system_port2_none; + QbRadioAction *system_port2_gamepad; + QbRadioAction *system_port2_asciipad; + QbRadioAction *system_port2_multitap; + QbRadioAction *system_port2_mouse; + QbRadioAction *system_port2_superscope; + QbRadioAction *system_port2_justifier; + QbRadioAction *system_port2_justifiers; + QAction *system_exit; + QMenu *settings; + QMenu *settings_videoMode; + QbRadioAction *settings_videoMode_1x; + QbRadioAction *settings_videoMode_2x; + QbRadioAction *settings_videoMode_3x; + QbRadioAction *settings_videoMode_4x; + QbRadioAction *settings_videoMode_5x; + QbCheckAction *settings_videoMode_correctAspectRatio; + QbRadioAction *settings_videoMode_ntsc; + QbRadioAction *settings_videoMode_pal; + QMenu *settings_videoFilter; + QAction *settings_videoFilter_configure; + QbRadioAction *settings_videoFilter_none; + array settings_videoFilter_list; + QbCheckAction *settings_smoothVideo; + QbCheckAction *settings_muteAudio; + QMenu *settings_emulationSpeed; + QbRadioAction *settings_emulationSpeed_slowest; + QbRadioAction *settings_emulationSpeed_slow; + QbRadioAction *settings_emulationSpeed_normal; + QbRadioAction *settings_emulationSpeed_fast; + QbRadioAction *settings_emulationSpeed_fastest; + QbCheckAction *settings_emulationSpeed_syncVideo; + QbCheckAction *settings_emulationSpeed_syncAudio; + QAction *settings_configuration; + QMenu *tools; + QMenu *tools_movies; + QAction *tools_movies_play; + QAction *tools_movies_stop; + QAction *tools_movies_recordFromPowerOn; + QAction *tools_movies_recordFromHere; + QAction *tools_captureScreenshot; + QAction *tools_dialog; + QAction *tools_debugger; + QMenu *help; + QAction *help_documentation; + QAction *help_license; + QAction *help_about; + + CanvasObject *canvasContainer; + QVBoxLayout *canvasLayout; + CanvasWidget *canvas; + QLabel *systemState; + + void syncUi(); + bool isActive(); + void closeEvent(QCloseEvent*); + MainWindow(); + +public slots: + void loadCartridge(); + void loadBsxSlottedCartridge(); + void loadBsxCartridge(); + void loadSufamiTurboCartridge(); + void loadSuperGameBoyCartridge(); + void power(); + void reset(); + void setPort1None(); + void setPort1Gamepad(); + void setPort1Asciipad(); + void setPort1Multitap(); + void setPort1Mouse(); + void setPort2None(); + void setPort2Gamepad(); + void setPort2Asciipad(); + void setPort2Multitap(); + void setPort2Mouse(); + void setPort2SuperScope(); + void setPort2Justifier(); + void setPort2Justifiers(); + void quit(); + void setVideoMode1x(); + void setVideoMode2x(); + void setVideoMode3x(); + void setVideoMode4x(); + void setVideoMode5x(); + void toggleAspectCorrection(); + void setVideoNtsc(); + void setVideoPal(); + void configureFilter(); + void setFilter(); + void toggleSmoothVideo(); + void muteAudio(); + void setSpeedSlowest(); + void setSpeedSlow(); + void setSpeedNormal(); + void setSpeedFast(); + void setSpeedFastest(); + void syncVideo(); + void syncAudio(); + void showConfigWindow(); + void playMovie(); + void stopMovie(); + void recordMovieFromPowerOn(); + void recordMovieFromHere(); + void saveScreenshot(); + void showDebugger(); + void showToolsDialog(); + void showDocumentation(); + void showLicense(); + void showAbout(); +}; + +extern MainWindow *mainWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.cpp b/libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.cpp new file mode 100644 index 0000000000..cc2572c53d --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.cpp @@ -0,0 +1,378 @@ +#include "../ui-base.hpp" +Cartridge cartridge; + +//================ +//public functions +//================ + +bool Cartridge::information(const char *filename, Cartridge::Information &info) { + if(extension(filename) != "sfc") return false; //do not parse compressed images + + file fp; + if(fp.open(filename, file::mode_read) == false) return false; + + unsigned offset = 0; + if((fp.size() & 0x7fff) == 512) offset = 512; + + uint16_t complement, checksum; + + fp.seek(0x7fdc + offset); + complement = fp.readl(2); + checksum = fp.readl(2); + + unsigned header = offset + (complement + checksum == 65535 ? 0x7fb0 : 0xffb0); + + fp.seek(header + 0x10); + char name[22]; + fp.read((uint8_t*)name, 21); + name[21] = 0; + info.name = decodeShiftJIS(name); + + fp.seek(header + 0x29); + uint8_t region = fp.read(); + info.region = (region <= 1 || region >= 13) ? "NTSC" : "PAL"; + + info.romSize = fp.size() & ~0x7fff; + + fp.seek(header + 0x28); + info.ramSize = fp.readl(1); + if(info.ramSize) info.ramSize = 1024 << (info.ramSize & 7); + + fp.close(); + return true; +} + +bool Cartridge::saveStatesSupported() { + if(SNES::cartridge.mode() == SNES::Cartridge::ModeBsx) return false; + + if(SNES::cartridge.has_dsp3()) return false; + if(SNES::cartridge.has_dsp4()) return false; + if(SNES::cartridge.has_st011()) return false; + if(SNES::cartridge.has_st018()) return false; + + return true; +} + +bool Cartridge::loadNormal(const char *base) { + unload(); + if(loadCartridge(baseName = base, SNES::memory::cartrom) == false) return false; + SNES::s21fx.base(dir(baseName)); + SNES::cartridge.load(SNES::Cartridge::ModeNormal); + + loadMemory(baseName, ".srm", SNES::memory::cartram); + loadMemory(baseName, ".rtc", SNES::memory::cartrtc); + + fileName = baseName; + name = notdir(nall::basename(baseName)); + + utility.modifySystemState(Utility::LoadCartridge); + return true; +} + +bool Cartridge::loadBsxSlotted(const char *base, const char *slot) { + unload(); + if(loadCartridge(baseName = base, SNES::memory::cartrom) == false) return false; + loadCartridge(slotAName = slot, SNES::memory::bsxflash); + SNES::cartridge.load(SNES::Cartridge::ModeBsxSlotted); + + loadMemory(baseName, ".srm", SNES::memory::cartram); + loadMemory(baseName, ".rtc", SNES::memory::cartrtc); + + fileName = baseName; + name = notdir(nall::basename(baseName)); + if(*slot) name << " + " << notdir(nall::basename(slotAName)); + + utility.modifySystemState(Utility::LoadCartridge); + return true; +} + +bool Cartridge::loadBsx(const char *base, const char *slot) { + unload(); + if(loadCartridge(baseName = base, SNES::memory::cartrom) == false) return false; + loadCartridge(slotAName = slot, SNES::memory::bsxflash); + SNES::cartridge.load(SNES::Cartridge::ModeBsx); + + loadMemory(baseName, ".srm", SNES::memory::bsxram ); + loadMemory(baseName, ".psr", SNES::memory::bsxpram); + + fileName = slotAName; + name = *slot + ? notdir(nall::basename(slotAName)) + : notdir(nall::basename(baseName)); + + utility.modifySystemState(Utility::LoadCartridge); + return true; +} + +bool Cartridge::loadSufamiTurbo(const char *base, const char *slotA, const char *slotB) { + unload(); + if(loadCartridge(baseName = base, SNES::memory::cartrom) == false) return false; + loadCartridge(slotAName = slotA, SNES::memory::stArom); + loadCartridge(slotBName = slotB, SNES::memory::stBrom); + SNES::cartridge.load(SNES::Cartridge::ModeSufamiTurbo); + + loadMemory(slotAName, ".srm", SNES::memory::stAram); + loadMemory(slotBName, ".srm", SNES::memory::stBram); + + fileName = slotAName; + if(!*slotA && !*slotB) name = notdir(nall::basename(baseName)); + else if(!*slotB) name = notdir(nall::basename(slotAName)); + else if(!*slotA) name = notdir(nall::basename(slotBName)); + else name = notdir(nall::basename(slotAName)) << " + " << notdir(nall::basename(slotBName)); + + utility.modifySystemState(Utility::LoadCartridge); + return true; +} + +bool Cartridge::loadSuperGameBoy(const char *base, const char *slot) { + unload(); + if(loadCartridge(baseName = base, SNES::memory::cartrom) == false) return false; + loadCartridge(slotAName = slot, SNES::memory::gbrom); + SNES::cartridge.load(SNES::Cartridge::ModeSuperGameBoy); + + loadMemory(slotAName, ".sav", SNES::memory::gbram); + loadMemory(slotBName, ".rtc", SNES::memory::gbrtc); + + fileName = slotAName; + name = *slot + ? notdir(nall::basename(slotAName)) + : notdir(nall::basename(baseName)); + + utility.modifySystemState(Utility::LoadCartridge); + return true; +} + +void Cartridge::saveMemory() { + if(SNES::cartridge.loaded() == false) return; + + switch(SNES::cartridge.mode()) { + case SNES::Cartridge::ModeNormal: + case SNES::Cartridge::ModeBsxSlotted: { + saveMemory(baseName, ".srm", SNES::memory::cartram); + saveMemory(baseName, ".rtc", SNES::memory::cartrtc); + } break; + + case SNES::Cartridge::ModeBsx: { + saveMemory(baseName, ".srm", SNES::memory::bsxram ); + saveMemory(baseName, ".psr", SNES::memory::bsxpram); + } break; + + case SNES::Cartridge::ModeSufamiTurbo: { + saveMemory(slotAName, ".srm", SNES::memory::stAram); + saveMemory(slotBName, ".srm", SNES::memory::stBram); + } break; + + case SNES::Cartridge::ModeSuperGameBoy: { + saveMemory(slotAName, ".sav", SNES::memory::gbram); + saveMemory(slotAName, ".rtc", SNES::memory::gbrtc); + } break; + } +} + +void Cartridge::unload() { + if(SNES::cartridge.loaded() == false) return; + utility.modifySystemState(Utility::UnloadCartridge); +} + +void Cartridge::loadCheats() { + string name; + name << filepath(nall::basename(baseName), config().path.cheat); + name << ".cht"; + cheatEditorWindow->load(name); +} + +void Cartridge::saveCheats() { + string name; + name << filepath(nall::basename(baseName), config().path.cheat); + name << ".cht"; + cheatEditorWindow->save(name); +} + +//================= +//private functions +//================= + +bool Cartridge::loadCartridge(string &filename, SNES::MappedRAM &memory) { + if(file::exists(filename) == false) return false; + + uint8_t *data; + unsigned size; + audio.clear(); + if(reader.load(filename, data, size) == false) return false; + + patchApplied = false; + string name; + name << filepath(nall::basename(filename), config().path.patch); + name << ".ups"; + + file fp; + if(config().file.applyPatches && fp.open(name, file::mode_read)) { + unsigned patchsize = fp.size(); + uint8_t *patchdata = new uint8_t[patchsize]; + fp.read(patchdata, patchsize); + fp.close(); + + uint8_t *outdata = 0; + unsigned outsize = 0; + ups patcher; + ups::result result = patcher.apply(patchdata, patchsize, data, size, outdata, outsize); + delete[] patchdata; + + bool apply = false; + if(result == ups::ok) apply = true; + if(config().file.bypass_patch_crc32) { + if(result == ups::input_crc32_invalid ) apply = true; + if(result == ups::output_crc32_invalid) apply = true; + } + + if(apply == true) { + delete[] data; + data = outdata; + size = outsize; + patchApplied = true; + } else { + delete[] outdata; + } + } + + memory.copy(data, size); + delete[] data; + return true; +} + +bool Cartridge::loadMemory(const char *filename, const char *extension, SNES::MappedRAM &memory) { + if(memory.size() == 0 || memory.size() == -1U) return false; + + string name; + name << filepath(nall::basename(filename), config().path.save); + name << extension; + + file fp; + if(fp.open(name, file::mode_read) == false) return false; + + unsigned size = fp.size(); + uint8_t *data = new uint8_t[size]; + fp.read(data, size); + fp.close(); + + memory.copy(data, size); + delete[] data; + return true; +} + +bool Cartridge::saveMemory(const char *filename, const char *extension, SNES::MappedRAM &memory) { + if(memory.size() == 0 || memory.size() == -1U) return false; + + string name; + name << filepath(nall::basename(filename), config().path.save); + name << extension; + + file fp; + if(fp.open(name, file::mode_write) == false) return false; + + fp.write(memory.data(), memory.size()); + fp.close(); + return true; +} + +string Cartridge::decodeShiftJIS(const char *text) { + unsigned length = strlen(text), offset = 0; + string output; + + for(unsigned i = 0; i < length;) { + unsigned code = 0; + uint8_t n = text[i++]; + + if(n == 0x00) { + //string terminator + break; + } else if(n >= 0x20 && n <= 0x7f) { + //ASCII + code = n; + } else if(n >= 0xa0 && n <= 0xdf) { + //ShiftJIS half-width katakana + unsigned dakuten = 0, handakuten = 0; + + switch(n) { + case 0xa1: code = 0xe38082; break; //(period) + case 0xa2: code = 0xe3808c; break; //(open quote) + case 0xa3: code = 0xe3808d; break; //(close quote) + case 0xa4: code = 0xe38081; break; //(comma) + case 0xa5: code = 0xe383bb; break; //(separator) + case 0xa6: code = 0xe383b2; break; //wo + case 0xa7: code = 0xe382a1; break; //la + case 0xa8: code = 0xe382a3; break; //li + case 0xa9: code = 0xe382a5; break; //lu + case 0xaa: code = 0xe382a7; break; //le + case 0xab: code = 0xe382a9; break; //lo + case 0xac: code = 0xe383a3; break; //lya + case 0xad: code = 0xe383a5; break; //lyu + case 0xae: code = 0xe383a7; break; //lyo + case 0xaf: code = 0xe38383; break; //ltsu + case 0xb0: code = 0xe383bc; break; //- + case 0xb1: code = 0xe382a2; break; //a + case 0xb2: code = 0xe382a4; break; //i + case 0xb3: code = 0xe382a6; break; //u + case 0xb4: code = 0xe382a8; break; //e + case 0xb5: code = 0xe382aa; break; //o + case 0xb6: code = 0xe382ab; dakuten = 0xe382ac; break; //ka, ga + case 0xb7: code = 0xe382ad; dakuten = 0xe382ae; break; //ki, gi + case 0xb8: code = 0xe382af; dakuten = 0xe382b0; break; //ku, gu + case 0xb9: code = 0xe382b1; dakuten = 0xe382b2; break; //ke, ge + case 0xba: code = 0xe382b3; dakuten = 0xe382b4; break; //ko, go + case 0xbb: code = 0xe382b5; dakuten = 0xe382b6; break; //sa, za + case 0xbc: code = 0xe382b7; dakuten = 0xe382b8; break; //shi, zi + case 0xbd: code = 0xe382b9; dakuten = 0xe382ba; break; //su, zu + case 0xbe: code = 0xe382bb; dakuten = 0xe382bc; break; //se, ze + case 0xbf: code = 0xe382bd; dakuten = 0xe382be; break; //so, zo + case 0xc0: code = 0xe382bf; dakuten = 0xe38380; break; //ta, da + case 0xc1: code = 0xe38381; dakuten = 0xe38382; break; //chi, di + case 0xc2: code = 0xe38384; dakuten = 0xe38385; break; //tsu, du + case 0xc3: code = 0xe38386; dakuten = 0xe38387; break; //te, de + case 0xc4: code = 0xe38388; dakuten = 0xe38389; break; //to, do + case 0xc5: code = 0xe3838a; break; //na + case 0xc6: code = 0xe3838b; break; //ni + case 0xc7: code = 0xe3838c; break; //nu + case 0xc8: code = 0xe3838d; break; //ne + case 0xc9: code = 0xe3838e; break; //no + case 0xca: code = 0xe3838f; dakuten = 0xe38390; handakuten = 0xe38391; break; //ha, ba, pa + case 0xcb: code = 0xe38392; dakuten = 0xe38393; handakuten = 0xe38394; break; //hi, bi, pi + case 0xcc: code = 0xe38395; dakuten = 0xe38396; handakuten = 0xe38397; break; //fu, bu, pu + case 0xcd: code = 0xe38398; dakuten = 0xe38399; handakuten = 0xe3839a; break; //he, be, pe + case 0xce: code = 0xe3839b; dakuten = 0xe3839c; handakuten = 0xe3839d; break; //ho, bo, po + case 0xcf: code = 0xe3839e; break; //ma + case 0xd0: code = 0xe3839f; break; //mi + case 0xd1: code = 0xe383a0; break; //mu + case 0xd2: code = 0xe383a1; break; //me + case 0xd3: code = 0xe383a2; break; //mo + case 0xd4: code = 0xe383a4; break; //ya + case 0xd5: code = 0xe383a6; break; //yu + case 0xd6: code = 0xe383a8; break; //yo + case 0xd7: code = 0xe383a9; break; //ra + case 0xd8: code = 0xe383aa; break; //ri + case 0xd9: code = 0xe383ab; break; //ru + case 0xda: code = 0xe383ac; break; //re + case 0xdb: code = 0xe383ad; break; //ro + case 0xdc: code = 0xe383af; break; //wa + case 0xdd: code = 0xe383b3; break; //n + } + + if(dakuten && ((uint8_t)text[i] == 0xde)) { + code = dakuten; + i++; + } else if(handakuten && ((uint8_t)text[i] == 0xdf)) { + code = handakuten; + i++; + } + } + + if(code) { + if((uint8_t)(code >> 16)) output[offset++] = (char)(code >> 16); + if((uint8_t)(code >> 8)) output[offset++] = (char)(code >> 8); + if((uint8_t)(code >> 0)) output[offset++] = (char)(code >> 0); + } + } + + output[offset] = 0; + return output; +} diff --git a/libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.hpp b/libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.hpp new file mode 100644 index 0000000000..982f5f2b33 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/cartridge/cartridge.hpp @@ -0,0 +1,38 @@ +class Cartridge { +public: + string name; //printable name + string fileName; //ideal file name for saving data to disk + string baseName; //physical cartridge file name + string slotAName; //Sufami Turbo slot A file name or BS-X slot file name + string slotBName; //Sufami Turbo slot B file name + bool patchApplied; //true if UPS patch was applied to image + + struct Information { + string name; + string region; + unsigned romSize; + unsigned ramSize; + }; + + bool information(const char*, Information&); + bool saveStatesSupported(); + + bool loadNormal(const char*); + bool loadBsxSlotted(const char*, const char*); + bool loadBsx(const char*, const char*); + bool loadSufamiTurbo(const char*, const char *, const char*); + bool loadSuperGameBoy(const char*, const char*); + void saveMemory(); + void unload(); + + void loadCheats(); + void saveCheats(); + +private: + bool loadCartridge(string&, SNES::MappedRAM&); + bool loadMemory(const char*, const char*, SNES::MappedRAM&); + bool saveMemory(const char*, const char*, SNES::MappedRAM&); + string decodeShiftJIS(const char*); +}; + +extern Cartridge cartridge; diff --git a/libmednahawk/src/snes/src/ui_qt/config.cpp b/libmednahawk/src/snes/src/ui_qt/config.cpp new file mode 100644 index 0000000000..9c52f5c118 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/config.cpp @@ -0,0 +1,143 @@ +Configuration &config() { + static Configuration configuration; + return configuration; +} + +bool Configuration::load(const char *filename) { + if(configuration::load(filename) == false) return false; + SNES::config.superfx.speed = max(0, min(2, SNES::config.superfx.speed)); + video.context = (video.isFullscreen == false) ? &video.windowed : &video.fullscreen; + return true; +} + +Configuration::Configuration() { + //======== + //external + //======== + + attach(SNES::config.controller_port1 = SNES::Input::DeviceJoypad, "snes.controllerPort1"); + attach(SNES::config.controller_port2 = SNES::Input::DeviceJoypad, "snes.controllerPort2"); + attach(SNES::config.expansion_port = SNES::System::ExpansionBSX, "snes.expansionPort"); + attach(SNES::config.region = SNES::System::Autodetect, "snes.region"); + + attach(SNES::config.cpu.version = 2, "cpu.version", "Valid version(s) are: 1, 2"); + attach(SNES::config.cpu.ntsc_clock_rate = 21477272, "cpu.ntscClockRate"); + attach(SNES::config.cpu.pal_clock_rate = 21281370, "cpu.palClockRate"); + attach(SNES::config.cpu.alu_mul_delay = 2, "cpu.aluMulDelay"); + attach(SNES::config.cpu.alu_div_delay = 2, "cpu.aluDivDelay"); + attach(SNES::config.cpu.wram_init_value = 0x55, "cpu.wramInitValue"); + + attach(SNES::config.smp.ntsc_clock_rate = 24607104, "smp.ntscClockRate"); + attach(SNES::config.smp.pal_clock_rate = 24607104, "smp.palClockRate"); + + attach(SNES::config.ppu1.version = 1, "ppu1.version", "Valid version(s) are: 1"); + attach(SNES::config.ppu2.version = 3, "ppu2.version", "Valid version(s) are: 1, 2, 3"); + + attach(SNES::config.superfx.speed = 0, "superfx.speed", "0 = Auto-select, 1 = Force 10.74MHz, 2 = Force 21.48MHz"); + + //======== + //internal + //======== + + attach(system.video = "", "system.video"); + attach(system.audio = "", "system.audio"); + attach(system.input = "", "system.input"); + attach(system.crashedOnLastRun = false, "system.crashedOnLastRun"); + attach(system.speed = 2, "system.speed"); + attach(system.speedSlowest = 50, "system.speedSlowest"); + attach(system.speedSlow = 75, "system.speedSlow"); + attach(system.speedNormal = 100, "system.speedNormal"); + attach(system.speedFast = 150, "system.speedFast"); + attach(system.speedFastest = 200, "system.speedFastest"); + attach(system.autoSaveMemory = false, "system.autoSaveMemory", "Automatically save cartridge back-up RAM once every minute"); + attach(system.rewindEnabled = false, "system.rewindEnabled", "Automatically save states periodically to allow auto-rewind support"); + + attach(diskBrowser.showPanel = true, "diskBrowser.showPanel"); + + attach(file.autodetect_type = false, "file.autodetectType"); + attach(file.applyPatches = true, "file.applyPatches"); + attach(file.bypass_patch_crc32 = false, "file.bypassPatchCrc32"); + + attach(path.rom = "", "path.rom"); + attach(path.save = "", "path.save"); + attach(path.state = "", "path.state"); + attach(path.patch = "", "path.patch"); + attach(path.cheat = "", "path.cheat"); + attach(path.data = "", "path.data"); + attach(path.bsx = "", "path.bsx"); + attach(path.st = "", "path.st"); + attach(path.sgb = "", "path.sgb"); + attach(path.fragmentShader = "", "path.fragmentShader"); + attach(path.vertexShader = "", "path.vertexShader"); + + attach(path.current.folder = "", "path.current.folder"); + attach(path.current.movie = "", "path.current.movie"); + attach(path.current.shader = "", "path.current.shader"); + attach(path.current.cartridge = "", "path.current.cartridge"); + attach(path.current.bsx = "", "path.current.bsx"); + attach(path.current.st = "", "path.current.st"); + attach(path.current.sgb = "", "path.current.sgb"); + attach(path.current.filter = 0, "path.current.filter"); + + video.context = &video.windowed; + attach(video.isFullscreen = false, "video.isFullscreen"); + attach(video.synchronize = false, "video.synchronize"); + + attach(video.contrastAdjust = 0, "video.contrastAdjust"); + attach(video.brightnessAdjust = 0, "video.brightnessAdjust"); + attach(video.gammaAdjust = 0, "video.gammaAdjust"); + attach(video.scanlineAdjust = 100, "video.scanlineAdjust"); + attach(video.enableGammaRamp = true, "video.enableGammaRamp"); + + attach(video.ntscAspectRatio = 54.0 / 47.0, "video.ntscAspectRatio", "NTSC aspect ratio (x / y)"); + attach(video.palAspectRatio = 32.0 / 23.0, "video.palAspectRatio", "PAL aspect ratio (x / y)"); + + attach(video.windowed.correctAspectRatio = true, "video.windowed.correctAspectRatio"); + attach(video.windowed.multiplier = 2, "video.windowed.multiplier"); + attach(video.windowed.region = 0, "video.windowed.region"); + + attach(video.windowed.hwFilter = 1, "video.windowed.hwFilter"); + attach(video.windowed.swFilter = 0, "video.windowed.swFilter"); + + attach(video.fullscreen.correctAspectRatio = true, "video.fullscreen.correctAspectRatio"); + attach(video.fullscreen.multiplier = 9, "video.fullscreen.multiplier"); + attach(video.fullscreen.region = 0, "video.fullscreen.region"); + + attach(video.fullscreen.hwFilter = 1, "video.fullscreen.hwFilter"); + attach(video.fullscreen.swFilter = 0, "video.fullscreen.swFilter"); + + attach(audio.synchronize = true, "audio.synchronize"); + attach(audio.mute = false, "audio.mute"); + + attach(audio.volume = 100, "audio.volume"); + attach(audio.latency = 80, "audio.latency"); + attach(audio.outputFrequency = 48000, "audio.outputFrequency"); + attach(audio.inputFrequency = 32000, "audio.inputFrequency"); + + attach(input.port1 = ControllerPort1::Gamepad, "input.port1"); + attach(input.port2 = ControllerPort2::Gamepad, "input.port2"); + attach(input.focusPolicy = Input::FocusPolicyIgnoreInput, "input.focusPolicy"); + attach(input.allowInvalidInput = false, "input.allowInvalidInput", "Allow up+down / left+right combinations; may trigger bugs in some games"); + + attach(debugger.cacheUsageToDisk = false, "debugger.cacheUsageToDisk"); + + attach(geometry.mainWindow = "", "geometry.mainWindow"); + attach(geometry.loaderWindow = "", "geometry.loaderWindow"); + attach(geometry.htmlViewerWindow = "", "geometry.htmlViewerWindow"); + attach(geometry.aboutWindow = "", "geometry.aboutWindow"); + attach(geometry.diskBrowser = "", "geometry.diskBrowser"); + attach(geometry.folderCreator = "", "geometry.folderCreator"); + attach(geometry.settingsWindow = "", "geometry.settingsWindow"); + attach(geometry.toolsWindow = "", "geometry.toolsWindow"); + + attach(geometry.debugger = "", "geometry.debugger"); + attach(geometry.disassembler = "", "geometry.disassembler"); + attach(geometry.breakpointEditor = "", "geometry.breakpointEditor"); + attach(geometry.memoryEditor = "", "geometry.memoryEditor"); + attach(geometry.propertiesViewer = "", "geometry.propertiesViewer"); + attach(geometry.layerToggle = "", "geometry.layerToggle"); + attach(geometry.vramViewer = "", "geometry.vramViewer"); + attach(geometry.oamViewer = "", "geometry.oamViewer"); + attach(geometry.cgramViewer = "", "geometry.cgramViewer"); + attach(geometry.debuggerOptions = "", "geometry.debuggerOptions"); +} diff --git a/libmednahawk/src/snes/src/ui_qt/config.hpp b/libmednahawk/src/snes/src/ui_qt/config.hpp new file mode 100644 index 0000000000..5c1241190e --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/config.hpp @@ -0,0 +1,98 @@ +class Configuration : public configuration { +public: + struct System { + string video, audio, input; + bool crashedOnLastRun; + unsigned speed; + unsigned speedSlowest; + unsigned speedSlow; + unsigned speedNormal; + unsigned speedFast; + unsigned speedFastest; + bool autoSaveMemory; + bool rewindEnabled; + } system; + + struct File { + bool autodetect_type; + bool applyPatches; + bool bypass_patch_crc32; + } file; + + struct DiskBrowser { + bool showPanel; + } diskBrowser; + + struct Path { + string base; //binary path + string user; //user profile path (bsnes.cfg, ...) + string startup; //startup path + string rom, save, state, patch, cheat, data; + string bsx, st, sgb; + string fragmentShader, vertexShader; + + struct Current { + string folder, movie, shader, cartridge, bsx, st, sgb; + unsigned filter; //current active filter for "Load Cartridge" + } current; + } path; + + struct Video { + bool isFullscreen; + bool synchronize; + signed contrastAdjust, brightnessAdjust, gammaAdjust, scanlineAdjust; + bool enableGammaRamp; + double ntscAspectRatio, palAspectRatio; + + struct Context { + bool correctAspectRatio; + unsigned multiplier, region; + unsigned hwFilter, swFilter; + } *context, windowed, fullscreen; + } video; + + struct Audio { + bool synchronize; + bool mute; + unsigned volume, latency, outputFrequency, inputFrequency; + } audio; + + struct Input { + unsigned port1; + unsigned port2; + enum policy_t { FocusPolicyPauseEmulation, FocusPolicyIgnoreInput, FocusPolicyAllowInput }; + unsigned focusPolicy; + bool allowInvalidInput; + } input; + + struct Debugger { + bool cacheUsageToDisk; + } debugger; + + struct Geometry { + string mainWindow; + string loaderWindow; + string htmlViewerWindow; + string aboutWindow; + string diskBrowser; + string folderCreator; + string settingsWindow; + string toolsWindow; + + string debugger; + string disassembler; + string breakpointEditor; + string memoryEditor; + string propertiesViewer; + string layerToggle; + string vramViewer; + string oamViewer; + string cgramViewer; + string debuggerOptions; + } geometry; + + bool load(const char *filename); + Configuration(); +}; + +Configuration &config(); diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/debugger.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/debugger.cpp new file mode 100644 index 0000000000..d027e8a844 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/debugger.cpp @@ -0,0 +1,248 @@ +#include "../ui-base.hpp" + +#if defined(DEBUGGER) + +#include "debugger.moc" +Debugger *debugger; + +#include "hexeditor.cpp" +#include "tracer.cpp" + +#include "tools/disassembler.cpp" +#include "tools/breakpoint.cpp" +#include "tools/memory.cpp" +#include "tools/properties.cpp" + +#include "ppu/layer-toggle.cpp" +#include "ppu/vram-viewer.cpp" +#include "ppu/oam-viewer.cpp" +#include "ppu/cgram-viewer.cpp" + +#include "misc/debugger-options.cpp" + +Debugger::Debugger() : QbWindow(config().geometry.debugger) { + setObjectName("debugger"); + setWindowTitle("Debugger"); + + layout = new QHBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + menu = new QMenuBar; + layout->setMenuBar(menu); + + menu_tools = menu->addMenu("Tools"); + menu_tools_disassembler = menu_tools->addAction("Disassembler ..."); + menu_tools_breakpoint = menu_tools->addAction("Breakpoint Editor ..."); + menu_tools_memory = menu_tools->addAction("Memory Editor ..."); + menu_tools_propertiesViewer = menu_tools->addAction("Properties Viewer ..."); + + menu_ppu = menu->addMenu("S-PPU"); + menu_ppu_layerToggle = menu_ppu->addAction("Layer Toggle ..."); + menu_ppu_vramViewer = menu_ppu->addAction("Video RAM Viewer ..."); + menu_ppu_oamViewer = menu_ppu->addAction("Sprite Viewer ..."); + menu_ppu_cgramViewer = menu_ppu->addAction("Palette Viewer ..."); + + menu_misc = menu->addMenu("Misc"); + menu_misc_clear = menu_misc->addAction("Clear Console"); + menu_misc_options = menu_misc->addAction("Options ..."); + + console = new QTextEdit; + console->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + console->setReadOnly(true); + console->setFont(QFont(Style::Monospace)); + console->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); + console->setMinimumWidth((92 + 4) * console->fontMetrics().width(' ')); + console->setMinimumHeight((25 + 1) * console->fontMetrics().height()); + layout->addWidget(console); + + controlLayout = new QVBoxLayout; + controlLayout->setSpacing(0); + layout->addLayout(controlLayout); + + commandLayout = new QHBoxLayout; + controlLayout->addLayout(commandLayout); + + runBreak = new QPushButton("Break"); + commandLayout->addWidget(runBreak); + commandLayout->addSpacing(Style::WidgetSpacing); + + stepInstruction = new QPushButton("Step"); + commandLayout->addWidget(stepInstruction); + + controlLayout->addSpacing(Style::WidgetSpacing); + + stepCPU = new QCheckBox("Step S-CPU"); + controlLayout->addWidget(stepCPU); + + stepSMP = new QCheckBox("Step S-SMP"); + controlLayout->addWidget(stepSMP); + + traceCPU = new QCheckBox("Trace S-CPU opcodes"); + controlLayout->addWidget(traceCPU); + + traceSMP = new QCheckBox("Trace S-SMP opcodes"); + controlLayout->addWidget(traceSMP); + + traceMask = new QCheckBox("Enable trace mask"); + controlLayout->addWidget(traceMask); + + spacer = new QWidget; + spacer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); + controlLayout->addWidget(spacer); + + tracer = new Tracer; + disassembler = new Disassembler; + breakpointEditor = new BreakpointEditor; + memoryEditor = new MemoryEditor; + propertiesViewer = new PropertiesViewer; + layerToggle = new LayerToggle; + vramViewer = new VramViewer; + oamViewer = new OamViewer; + cgramViewer = new CgramViewer; + debuggerOptions = new DebuggerOptions; + + connect(menu_tools_disassembler, SIGNAL(triggered()), disassembler, SLOT(show())); + connect(menu_tools_breakpoint, SIGNAL(triggered()), breakpointEditor, SLOT(show())); + connect(menu_tools_memory, SIGNAL(triggered()), memoryEditor, SLOT(show())); + connect(menu_tools_propertiesViewer, SIGNAL(triggered()), propertiesViewer, SLOT(show())); + + connect(menu_ppu_layerToggle, SIGNAL(triggered()), layerToggle, SLOT(show())); + connect(menu_ppu_vramViewer, SIGNAL(triggered()), vramViewer, SLOT(show())); + connect(menu_ppu_oamViewer, SIGNAL(triggered()), oamViewer, SLOT(show())); + connect(menu_ppu_cgramViewer, SIGNAL(triggered()), cgramViewer, SLOT(show())); + + connect(menu_misc_clear, SIGNAL(triggered()), this, SLOT(clear())); + connect(menu_misc_options, SIGNAL(triggered()), debuggerOptions, SLOT(show())); + + connect(runBreak, SIGNAL(released()), this, SLOT(toggleRunStatus())); + connect(stepInstruction, SIGNAL(released()), this, SLOT(stepAction())); + connect(stepCPU, SIGNAL(released()), this, SLOT(synchronize())); + connect(stepSMP, SIGNAL(released()), this, SLOT(synchronize())); + connect(traceCPU, SIGNAL(stateChanged(int)), tracer, SLOT(setCpuTraceState(int))); + connect(traceSMP, SIGNAL(stateChanged(int)), tracer, SLOT(setSmpTraceState(int))); + connect(traceMask, SIGNAL(stateChanged(int)), tracer, SLOT(setTraceMaskState(int))); + + frameCounter = 0; + synchronize(); + resize(855, 425); +} + +void Debugger::modifySystemState(unsigned state) { + string usagefile = filepath(nall::basename(cartridge.fileName), config().path.data); + usagefile << "-usage.bin"; + file fp; + + if(state == Utility::LoadCartridge) { + if(config().debugger.cacheUsageToDisk && fp.open(usagefile, file::mode_read)) { + fp.read(SNES::cpu.usage, 1 << 24); + fp.read(SNES::smp.usage, 1 << 16); + fp.close(); + } else { + memset(SNES::cpu.usage, 0x00, 1 << 24); + memset(SNES::smp.usage, 0x00, 1 << 16); + } + } + + if(state == Utility::UnloadCartridge) { + if(config().debugger.cacheUsageToDisk && fp.open(usagefile, file::mode_write)) { + fp.write(SNES::cpu.usage, 1 << 24); + fp.write(SNES::smp.usage, 1 << 16); + fp.close(); + } + } +} + +void Debugger::synchronize() { + runBreak->setText(application.debug ? "Run" : "Break"); + stepInstruction->setEnabled(SNES::cartridge.loaded() && application.debug && (stepCPU->isChecked() || stepSMP->isChecked())); + SNES::debugger.step_cpu = application.debug && stepCPU->isChecked(); + SNES::debugger.step_smp = application.debug && stepSMP->isChecked(); + + memoryEditor->synchronize(); +} + +void Debugger::echo(const char *message) { + console->moveCursor(QTextCursor::End); + console->insertHtml(message); +} + +void Debugger::clear() { + console->setHtml(""); +} + +void Debugger::toggleRunStatus() { + application.debug = !application.debug; + if(!application.debug) application.debugrun = false; + synchronize(); +} + +void Debugger::stepAction() { + application.debugrun = true; +} + +void Debugger::event() { + char t[256]; + + switch(SNES::debugger.break_event) { + case SNES::Debugger::BreakpointHit: { + unsigned n = SNES::debugger.breakpoint_hit; + echo(string() << "Breakpoint " << n << " hit (" << SNES::debugger.breakpoint[n].counter << ").
    "); + + if(SNES::debugger.breakpoint[n].source == SNES::Debugger::Breakpoint::CPUBus) { + SNES::debugger.step_cpu = true; + SNES::cpu.disassemble_opcode(t, SNES::cpu.opcode_pc); + string s = t; + s.replace(" ", " "); + echo(string() << "" << s << "
    "); + disassembler->refresh(Disassembler::CPU, SNES::cpu.opcode_pc); + } + + if(SNES::debugger.breakpoint[n].source == SNES::Debugger::Breakpoint::APURAM) { + SNES::debugger.step_smp = true; + SNES::smp.disassemble_opcode(t, SNES::smp.opcode_pc); + string s = t; + s.replace(" ", " "); + echo(string() << "" << t << "
    "); + disassembler->refresh(Disassembler::SMP, SNES::smp.opcode_pc); + } + } break; + + case SNES::Debugger::CPUStep: { + SNES::cpu.disassemble_opcode(t, SNES::cpu.regs.pc); + string s = t; + s.replace(" ", " "); + echo(string() << "" << s << "
    "); + disassembler->refresh(Disassembler::CPU, SNES::cpu.regs.pc); + } break; + + case SNES::Debugger::SMPStep: { + SNES::smp.disassemble_opcode(t, SNES::smp.regs.pc); + string s = t; + s.replace(" ", " "); + echo(string() << "" << s << "
    "); + disassembler->refresh(Disassembler::SMP, SNES::smp.regs.pc); + } break; + } + + autoUpdate(); +} + +//called once every time a video frame is rendered, used to update "auto refresh" tool windows +void Debugger::frameTick() { + if(++frameCounter >= (SNES::system.region() == SNES::System::NTSC ? 60 : 50)) { + frameCounter = 0; + autoUpdate(); + } +} + +void Debugger::autoUpdate() { + memoryEditor->autoUpdate(); + propertiesViewer->autoUpdate(); + vramViewer->autoUpdate(); + oamViewer->autoUpdate(); + cgramViewer->autoUpdate(); +} + +#endif diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/debugger.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/debugger.moc.hpp new file mode 100644 index 0000000000..e7f86a9861 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/debugger.moc.hpp @@ -0,0 +1,51 @@ +class Debugger : public QbWindow { + Q_OBJECT + +public: + QMenuBar *menu; + QMenu *menu_tools; + QAction *menu_tools_disassembler; + QAction *menu_tools_breakpoint; + QAction *menu_tools_memory; + QAction *menu_tools_propertiesViewer; + QMenu *menu_ppu; + QAction *menu_ppu_layerToggle; + QAction *menu_ppu_vramViewer; + QAction *menu_ppu_oamViewer; + QAction *menu_ppu_cgramViewer; + QMenu *menu_misc; + QAction *menu_misc_clear; + QAction *menu_misc_options; + + QHBoxLayout *layout; + QTextEdit *console; + QVBoxLayout *controlLayout; + QHBoxLayout *commandLayout; + QPushButton *runBreak; + QPushButton *stepInstruction; + QCheckBox *stepCPU; + QCheckBox *stepSMP; + QCheckBox *traceCPU; + QCheckBox *traceSMP; + QCheckBox *traceMask; + QWidget *spacer; + + void modifySystemState(unsigned); + void echo(const char *message); + void event(); + void frameTick(); + void autoUpdate(); + Debugger(); + +public slots: + void clear(); + void synchronize(); + + void toggleRunStatus(); + void stepAction(); + +private: + unsigned frameCounter; +}; + +extern Debugger *debugger; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.cpp new file mode 100644 index 0000000000..fd7a0b257d --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.cpp @@ -0,0 +1,120 @@ +#include "hexeditor.moc" + +void HexEditor::keyPressEvent(QKeyEvent *event) { + QTextCursor cursor = textCursor(); + unsigned x = cursor.position() % 56; + unsigned y = cursor.position() / 56; + + int hexCode = -1; + switch(event->key()) { + case Qt::Key_0: hexCode = 0; break; + case Qt::Key_1: hexCode = 1; break; + case Qt::Key_2: hexCode = 2; break; + case Qt::Key_3: hexCode = 3; break; + case Qt::Key_4: hexCode = 4; break; + case Qt::Key_5: hexCode = 5; break; + case Qt::Key_6: hexCode = 6; break; + case Qt::Key_7: hexCode = 7; break; + case Qt::Key_8: hexCode = 8; break; + case Qt::Key_9: hexCode = 9; break; + case Qt::Key_A: hexCode = 10; break; + case Qt::Key_B: hexCode = 11; break; + case Qt::Key_C: hexCode = 12; break; + case Qt::Key_D: hexCode = 13; break; + case Qt::Key_E: hexCode = 14; break; + case Qt::Key_F: hexCode = 15; break; + } + + if(cursor.hasSelection() == false && hexCode != -1) { + bool cursorOffsetValid = (x >= 8 && ((x - 8) % 3) != 2); + if(cursorOffsetValid) { + bool nibble = (x - 8) % 3; //0 = top nibble, 1 = bottom nibble + unsigned cursorOffset = y * 16 + ((x - 8) / 3); + unsigned effectiveOffset = hexOffset + cursorOffset; + if(effectiveOffset >= hexSize) effectiveOffset %= hexSize; + + uint8 data = reader(effectiveOffset); + data &= (nibble == 0 ? 0x0f : 0xf0); + data |= (nibble == 0 ? (hexCode << 4) : (hexCode << 0)); + writer(effectiveOffset, data); + update(); + + cursor.setPosition(y * 56 + x + 1); //advance cursor + setTextCursor(cursor); + } + } else { + //allow navigation keys to move cursor, but block text input + setTextInteractionFlags(Qt::TextSelectableByKeyboard | Qt::TextSelectableByMouse); + QTextEdit::keyPressEvent(event); + setTextInteractionFlags(Qt::TextEditorInteraction); + } +} + +void HexEditor::setOffset(unsigned newOffset) { + slotLock = true; + hexOffset = newOffset; + scrollbar->setSliderPosition(hexOffset / 16); + slotLock = false; +} + +void HexEditor::setSize(unsigned newSize) { + hexSize = newSize; + scrollbar->setRange(0, hexSize / 16 - 16); +} + +void HexEditor::update() { + string output; + char temp[256]; + unsigned offset = hexOffset; + + for(unsigned y = 0; y < 16; y++) { + if(offset >= hexSize) break; + sprintf(temp, "%.6x", offset & 0xffffff); + output << "" << temp << "  "; + + for(unsigned x = 0; x < 16; x++) { + if(offset >= hexSize) break; + sprintf(temp, "%.2x", reader(offset++)); + output << "" << temp << ""; + if(x != 15) output << " "; + } + + if(y != 15) output << "
    "; + } + + setHtml(output); +} + +void HexEditor::sliderMoved() { + if(slotLock) return; + unsigned offset = scrollbar->sliderPosition(); + hexOffset = offset * 16; + update(); +} + +HexEditor::HexEditor() { + hexOffset = 0; + hexSize = 0; + + QFont font(Style::Monospace); + setFont(font); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + setMinimumWidth((57 + 2) * fontMetrics().width(' ')); + setMinimumHeight((16 + 1) * fontMetrics().height()); + + layout = new QHBoxLayout; + layout->setAlignment(Qt::AlignRight); + layout->setMargin(0); + layout->setSpacing(0); + setLayout(layout); + + scrollbar = new QScrollBar(Qt::Vertical); + scrollbar->setSingleStep(1); + scrollbar->setPageStep(16); + layout->addWidget(scrollbar); + + slotLock = false; + connect(scrollbar, SIGNAL(actionTriggered(int)), this, SLOT(sliderMoved())); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.moc.hpp new file mode 100644 index 0000000000..3f5ad42824 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/hexeditor.moc.hpp @@ -0,0 +1,25 @@ +class HexEditor : public QTextEdit { + Q_OBJECT + +public: + QHBoxLayout *layout; + QScrollBar *scrollbar; + + function reader; + function writer; + void keyPressEvent(QKeyEvent*); + unsigned hexOffset; + unsigned hexSize; + + void setOffset(unsigned newOffset); + void setSize(unsigned newSize); + + void update(); + HexEditor(); + +private slots: + void sliderMoved(); + +private: + bool slotLock; +}; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.cpp new file mode 100644 index 0000000000..dd3255b268 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.cpp @@ -0,0 +1,27 @@ +#include "debugger-options.moc" +DebuggerOptions *debuggerOptions; + +DebuggerOptions::DebuggerOptions() : QbWindow(config().geometry.debuggerOptions) { + setObjectName("debugger-options"); + setWindowTitle("Debugger Options"); + + layout = new QVBoxLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + cacheUsageBox = new QCheckBox("Cache memory usage table to disk"); + layout->addWidget(cacheUsageBox); + + synchronize(); + connect(cacheUsageBox, SIGNAL(stateChanged(int)), this, SLOT(toggleCacheUsage())); +} + +void DebuggerOptions::synchronize() { + cacheUsageBox->setChecked(config().debugger.cacheUsageToDisk); +} + +void DebuggerOptions::toggleCacheUsage() { + config().debugger.cacheUsageToDisk = cacheUsageBox->isChecked(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.moc.hpp new file mode 100644 index 0000000000..3075caf5e6 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/misc/debugger-options.moc.hpp @@ -0,0 +1,15 @@ +class DebuggerOptions : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QCheckBox *cacheUsageBox; + + void synchronize(); + DebuggerOptions(); + +public slots: + void toggleCacheUsage(); +}; + +extern DebuggerOptions *debuggerOptions; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.cpp new file mode 100644 index 0000000000..33ce386e9a --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.cpp @@ -0,0 +1,124 @@ +#include "cgram-viewer.moc" +CgramViewer *cgramViewer; + +void CgramViewer::show() { + QbWindow::show(); + refresh(); +} + +void CgramViewer::refresh() { + if(SNES::cartridge.loaded() == false) { + canvas->image->fill(0x000000); + colorInfo->setText(""); + canvas->update(); + return; + } + + uint32_t *buffer = (uint32_t*)canvas->image->bits(); + for(unsigned i = 0; i < 256; i++) { + unsigned x = i % 16; + unsigned y = i / 16; + + uint16_t color = SNES::memory::cgram[i * 2 + 0]; + color |= SNES::memory::cgram[i * 2 + 1] << 8; + + uint8_t r = (color >> 0) & 31; + uint8_t g = (color >> 5) & 31; + uint8_t b = (color >> 10) & 31; + + r = (r << 3) | (r >> 2); + g = (g << 3) | (g >> 2); + b = (b << 3) | (b >> 2); + + uint32_t output = (r << 16) | (g << 8) | (b << 0); + + for(unsigned py = 0; py < 16; py++) { + for(unsigned px = 0; px < 16; px++) { + buffer[(y * 16 + py) * (16 * 16) + (x * 16 + px)] = output; + } + } + + if(i != currentSelection) continue; + + //draw a dotted box black-and-white around the selected color + for(unsigned py = 0; py < 16; py++) { + for(unsigned px = 0; px < 16; px++) { + if(py == 0 || py == 15 || px == 0 || px == 15) { + uint32_t color = ((px + py) & 2) ? 0xffffff : 0x000000; + buffer[(y * 16 + py) * (16 * 16) + (x * 16 + px)] = color; + } + } + } + + string text; + char temp[256]; + text << ""; + text << ""; + sprintf(temp, "%.4x", color); + text << ""; + text << ""; + text << ""; + text << ""; + text << "
    Index:" << currentSelection << "
    Value:0x" << temp << "
    Red:" << (unsigned)(r >> 3) << "
    Green:" << (unsigned)(g >> 3) << "
    Blue:" << (unsigned)(b >> 3) << "
    "; + colorInfo->setText(text); + } + + canvas->update(); +} + +void CgramViewer::autoUpdate() { + if(autoUpdateBox->isChecked()) refresh(); +} + +void CgramViewer::setSelection(unsigned index) { + currentSelection = index; + refresh(); +} + +CgramViewer::CgramViewer() : QbWindow(config().geometry.cgramViewer) { + currentSelection = 0; + + setObjectName("cgram-viewer"); + setWindowTitle("Palette Viewer"); + + layout = new QHBoxLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + canvas = new Canvas; + canvas->setFixedSize(16 * 16, 16 * 16); + layout->addWidget(canvas); + + controlLayout = new QVBoxLayout; + controlLayout->setAlignment(Qt::AlignTop); + controlLayout->setSpacing(0); + layout->addLayout(controlLayout); + + autoUpdateBox = new QCheckBox("Auto update"); + controlLayout->addWidget(autoUpdateBox); + + refreshButton = new QPushButton("Refresh"); + controlLayout->addWidget(refreshButton); + controlLayout->addSpacing(Style::WidgetSpacing); + + colorInfo = new QLabel; + controlLayout->addWidget(colorInfo); + + connect(refreshButton, SIGNAL(released()), this, SLOT(refresh())); +} + +void CgramViewer::Canvas::mousePressEvent(QMouseEvent *event) { + cgramViewer->setSelection((event->y() / 16) * 16 + (event->x() / 16)); +} + +void CgramViewer::Canvas::paintEvent(QPaintEvent*) { + QPainter painter(this); + painter.drawImage(0, 0, *image); +} + +CgramViewer::Canvas::Canvas() { + image = new QImage(16 * 16, 16 * 16, QImage::Format_RGB32); + image->fill(0x000000); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.moc.hpp new file mode 100644 index 0000000000..719bbb3659 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/cgram-viewer.moc.hpp @@ -0,0 +1,29 @@ +class CgramViewer : public QbWindow { + Q_OBJECT + +public: + QHBoxLayout *layout; + struct Canvas : public QWidget { + QImage *image; + void mousePressEvent(QMouseEvent*); + void paintEvent(QPaintEvent*); + Canvas(); + } *canvas; + QVBoxLayout *controlLayout; + QCheckBox *autoUpdateBox; + QPushButton *refreshButton; + QLabel *colorInfo; + + void setSelection(unsigned); + void autoUpdate(); + CgramViewer(); + +public slots: + void show(); + void refresh(); + +private: + unsigned currentSelection; +}; + +extern CgramViewer *cgramViewer; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.cpp new file mode 100644 index 0000000000..34a4c95409 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.cpp @@ -0,0 +1,105 @@ +#include "layer-toggle.moc" +LayerToggle *layerToggle; + +LayerToggle::LayerToggle() : QbWindow(config().geometry.layerToggle) { + setObjectName("layer-toggle"); + setWindowTitle("S-PPU Layer Toggle"); + + layout = new QGridLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setMargin(Style::WindowMargin); + layout->setHorizontalSpacing(Style::WidgetSpacing); + layout->setVerticalSpacing(0); + setLayout(layout); + + bg1Label = new QLabel("BG1:"); + layout->addWidget(bg1Label, 0, 0); + + bg1pri0 = new QCheckBox("Priority 0"); + bg1pri0->setChecked(true); + layout->addWidget(bg1pri0, 0, 1); + + bg1pri1 = new QCheckBox("Priority 1"); + bg1pri1->setChecked(true); + layout->addWidget(bg1pri1, 0, 2); + + bg2Label = new QLabel("BG2:"); + layout->addWidget(bg2Label, 1, 0); + + bg2pri0 = new QCheckBox("Priority 0"); + bg2pri0->setChecked(true); + layout->addWidget(bg2pri0, 1, 1); + + bg2pri1 = new QCheckBox("Priority 1"); + bg2pri1->setChecked(true); + layout->addWidget(bg2pri1, 1, 2); + + bg3Label = new QLabel("BG3:"); + layout->addWidget(bg3Label, 2, 0); + + bg3pri0 = new QCheckBox("Priority 0"); + bg3pri0->setChecked(true); + layout->addWidget(bg3pri0, 2, 1); + + bg3pri1 = new QCheckBox("Priority 1"); + bg3pri1->setChecked(true); + layout->addWidget(bg3pri1, 2, 2); + + bg4Label = new QLabel("BG4:"); + layout->addWidget(bg4Label, 3, 0); + + bg4pri0 = new QCheckBox("Priority 0"); + bg4pri0->setChecked(true); + layout->addWidget(bg4pri0, 3, 1); + + bg4pri1 = new QCheckBox("Priority 1"); + bg4pri1->setChecked(true); + layout->addWidget(bg4pri1, 3, 2); + + oamLabel = new QLabel("OAM:"); + layout->addWidget(oamLabel, 4, 0); + + oampri0 = new QCheckBox("Priority 0"); + oampri0->setChecked(true); + layout->addWidget(oampri0, 4, 1); + + oampri1 = new QCheckBox("Priority 1"); + oampri1->setChecked(true); + layout->addWidget(oampri1, 4, 2); + + oampri2 = new QCheckBox("Priority 2"); + oampri2->setChecked(true); + layout->addWidget(oampri2, 4, 3); + + oampri3 = new QCheckBox("Priority 3"); + oampri3->setChecked(true); + layout->addWidget(oampri3, 4, 4); + + connect(bg1pri0, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg1pri1, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg2pri0, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg2pri1, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg3pri0, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg3pri1, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg4pri0, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(bg4pri1, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(oampri0, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(oampri1, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(oampri2, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); + connect(oampri3, SIGNAL(stateChanged(int)), this, SLOT(toggleLayer())); +} + +void LayerToggle::toggleLayer() { + if(sender() == bg1pri0) SNES::ppu.bg1_enabled[0] = bg1pri0->isChecked(); + if(sender() == bg1pri1) SNES::ppu.bg1_enabled[1] = bg1pri1->isChecked(); + if(sender() == bg2pri0) SNES::ppu.bg2_enabled[0] = bg2pri0->isChecked(); + if(sender() == bg2pri1) SNES::ppu.bg2_enabled[1] = bg2pri1->isChecked(); + if(sender() == bg3pri0) SNES::ppu.bg3_enabled[0] = bg3pri0->isChecked(); + if(sender() == bg3pri1) SNES::ppu.bg3_enabled[1] = bg3pri1->isChecked(); + if(sender() == bg4pri0) SNES::ppu.bg4_enabled[0] = bg4pri0->isChecked(); + if(sender() == bg4pri1) SNES::ppu.bg4_enabled[1] = bg4pri1->isChecked(); + if(sender() == oampri0) SNES::ppu.oam_enabled[0] = oampri0->isChecked(); + if(sender() == oampri1) SNES::ppu.oam_enabled[1] = oampri1->isChecked(); + if(sender() == oampri2) SNES::ppu.oam_enabled[2] = oampri2->isChecked(); + if(sender() == oampri3) SNES::ppu.oam_enabled[3] = oampri3->isChecked(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.moc.hpp new file mode 100644 index 0000000000..38417e29d5 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/layer-toggle.moc.hpp @@ -0,0 +1,30 @@ +class LayerToggle : public QbWindow { + Q_OBJECT + +public: + QGridLayout *layout; + QLabel *bg1Label; + QCheckBox *bg1pri0; + QCheckBox *bg1pri1; + QLabel *bg2Label; + QCheckBox *bg2pri0; + QCheckBox *bg2pri1; + QLabel *bg3Label; + QCheckBox *bg3pri0; + QCheckBox *bg3pri1; + QLabel *bg4Label; + QCheckBox *bg4pri0; + QCheckBox *bg4pri1; + QLabel *oamLabel; + QCheckBox *oampri0; + QCheckBox *oampri1; + QCheckBox *oampri2; + QCheckBox *oampri3; + + LayerToggle(); + +public slots: + void toggleLayer(); +}; + +extern LayerToggle *layerToggle; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.cpp new file mode 100644 index 0000000000..ffc4ea782e --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.cpp @@ -0,0 +1,124 @@ +#include "oam-viewer.moc" +OamViewer *oamViewer; + +void OamViewer::show() { + QbWindow::show(); + refresh(); +} + +void OamViewer::refresh() { + canvas->image->fill(0x000000); + + QList items = list->findItems("", Qt::MatchContains); + for(unsigned v = 0; v < items.count(); v++) { + QTreeWidgetItem *item = items[v]; + unsigned i = item->data(0, Qt::UserRole).toUInt(); + + uint8_t d0 = SNES::memory::oam[(i << 2) + 0]; + uint8_t d1 = SNES::memory::oam[(i << 2) + 1]; + uint8_t d2 = SNES::memory::oam[(i << 2) + 2]; + uint8_t d3 = SNES::memory::oam[(i << 2) + 3]; + uint8_t d4 = SNES::memory::oam[512 + (i >> 2)]; + bool x = d4 & (1 << ((i & 3) << 1)); + bool size = d4 & (2 << ((i & 3) << 1)); + + unsigned width, height; + switch(SNES::ppu.oam_base_size()) { default: + case 0: width = !size ? 8 : 16; height = !size ? 8 : 16; break; + case 1: width = !size ? 8 : 32; height = !size ? 8 : 32; break; + case 2: width = !size ? 8 : 64; height = !size ? 8 : 64; break; + case 3: width = !size ? 16 : 32; height = !size ? 16 : 32; break; + case 4: width = !size ? 16 : 64; height = !size ? 16 : 64; break; + case 5: width = !size ? 32 : 64; height = !size ? 32 : 64; break; + case 6: width = !size ? 16 : 32; height = !size ? 32 : 64; break; + case 7: width = !size ? 16 : 32; height = !size ? 32 : 32; break; + } + + signed xpos = (x << 8) + d0; + if(xpos > 256) xpos = sclip<9>(xpos); + unsigned ypos = d1; + unsigned character = d2; + unsigned priority = (d3 >> 4) & 3; + unsigned palette = (d3 >> 1) & 7; + string flags; + if(d3 & 0x80) flags << "V"; + if(d3 & 0x40) flags << "H"; + if(d3 & 0x01) flags << "N"; + + item->setText(1, string() << width << "x" << height); + item->setText(2, string() << xpos); + item->setText(3, string() << ypos); + item->setText(4, string() << character); + item->setText(5, string() << priority); + item->setText(6, string() << palette); + item->setText(7, flags); + } + + for(unsigned i = 0; i <= 7; i++) list->resizeColumnToContents(i); + canvas->update(); +} + +void OamViewer::autoUpdate() { + if(autoUpdateBox->isChecked()) refresh(); +} + +OamViewer::OamViewer() : QbWindow(config().geometry.oamViewer) { + setObjectName("oam-viewer"); + setWindowTitle("Sprite Viewer"); + + layout = new QHBoxLayout; + layout->setAlignment(Qt::AlignLeft); + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + list = new QTreeWidget; + list->setColumnCount(8); + list->setHeaderLabels(QStringList() << "#" << "Size" << "X" << "Y" << "Char" << "Pri" << "Pal" << "Flags"); + list->setAllColumnsShowFocus(true); + list->setAlternatingRowColors(true); + list->setRootIsDecorated(false); + list->setSortingEnabled(false); + layout->addWidget(list); + + for(unsigned i = 0; i < 128; i++) { + QTreeWidgetItem *item = new QTreeWidgetItem(list); + item->setData(0, Qt::UserRole, QVariant(i)); + item->setTextAlignment(0, Qt::AlignHCenter); + item->setTextAlignment(1, Qt::AlignHCenter); + item->setTextAlignment(2, Qt::AlignRight); + item->setTextAlignment(3, Qt::AlignRight); + item->setTextAlignment(4, Qt::AlignRight); + item->setTextAlignment(5, Qt::AlignRight); + item->setTextAlignment(6, Qt::AlignRight); + item->setTextAlignment(7, Qt::AlignLeft); + item->setText(0, string() << i); + } + + controlLayout = new QVBoxLayout; + controlLayout->setAlignment(Qt::AlignTop); + controlLayout->setSpacing(0); + layout->addLayout(controlLayout); + + canvas = new Canvas; + canvas->setFixedSize(128, 128); + controlLayout->addWidget(canvas); + + autoUpdateBox = new QCheckBox("Auto update"); + controlLayout->addWidget(autoUpdateBox); + + refreshButton = new QPushButton("Refresh"); + controlLayout->addWidget(refreshButton); + + connect(refreshButton, SIGNAL(released()), this, SLOT(refresh())); +} + +void OamViewer::Canvas::paintEvent(QPaintEvent*) { + QPainter painter(this); + painter.drawImage(0, 0, *image); +} + +OamViewer::Canvas::Canvas() { + image = new QImage(128, 128, QImage::Format_RGB32); + image->fill(0x000000); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.moc.hpp new file mode 100644 index 0000000000..9d3dc52316 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/oam-viewer.moc.hpp @@ -0,0 +1,24 @@ +class OamViewer : public QbWindow { + Q_OBJECT + +public: + QHBoxLayout *layout; + QTreeWidget *list; + QVBoxLayout *controlLayout; + struct Canvas : public QWidget { + QImage *image; + void paintEvent(QPaintEvent*); + Canvas(); + } *canvas; + QCheckBox *autoUpdateBox; + QPushButton *refreshButton; + + void autoUpdate(); + OamViewer(); + +public slots: + void show(); + void refresh(); +}; + +extern OamViewer *oamViewer; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.cpp new file mode 100644 index 0000000000..af5347f946 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.cpp @@ -0,0 +1,175 @@ +#include "vram-viewer.moc" +VramViewer *vramViewer; + +VramViewer::VramViewer() : QbWindow(config().geometry.vramViewer) { + setObjectName("vram-viewer"); + setWindowTitle("Video RAM Viewer"); + + layout = new QVBoxLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setAlignment(Qt::AlignCenter); + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + controlLayout = new QHBoxLayout; + controlLayout->setSizeConstraint(QLayout::SetMinimumSize); + controlLayout->setAlignment(Qt::AlignRight); + layout->addLayout(controlLayout); + + depth2bpp = new QRadioButton("2 BPP"); + controlLayout->addWidget(depth2bpp); + + depth4bpp = new QRadioButton("4 BPP"); + controlLayout->addWidget(depth4bpp); + + depth8bpp = new QRadioButton("8 BPP"); + controlLayout->addWidget(depth8bpp); + + depthMode7 = new QRadioButton("Mode 7"); + controlLayout->addWidget(depthMode7); + + autoUpdateBox = new QCheckBox("Auto update"); + controlLayout->addWidget(autoUpdateBox); + + refreshButton = new QPushButton("Refresh"); + controlLayout->addWidget(refreshButton); + + canvas = new Canvas; + canvas->setFixedSize(512, 512); + layout->addWidget(canvas); + + bpp = 2; + depth2bpp->setChecked(true); + + connect(refreshButton, SIGNAL(released()), this, SLOT(refresh())); + connect(depth2bpp, SIGNAL(pressed()), this, SLOT(setDepth2bpp())); + connect(depth4bpp, SIGNAL(pressed()), this, SLOT(setDepth4bpp())); + connect(depth8bpp, SIGNAL(pressed()), this, SLOT(setDepth8bpp())); + connect(depthMode7, SIGNAL(pressed()), this, SLOT(setDepthMode7())); +} + +void VramViewer::autoUpdate() { + if(autoUpdateBox->isChecked()) refresh(); +} + +void VramViewer::show() { + QbWindow::show(); + refresh(); +} + +void VramViewer::refresh() { + canvas->image->fill(0x800000); + if(SNES::cartridge.loaded()) { + const uint8_t *source = SNES::memory::vram.data(); + uint32_t *dest = (uint32_t*)canvas->image->bits(); + if(bpp == 2) refresh2bpp (source, dest); + if(bpp == 4) refresh4bpp (source, dest); + if(bpp == 8) refresh8bpp (source, dest); + if(bpp == 7) refreshMode7(source, dest); + } + canvas->update(); +} + +void VramViewer::refresh2bpp(const uint8_t *source, uint32_t *dest) { + for(unsigned ty = 0; ty < 64; ty++) { + for(unsigned tx = 0; tx < 64; tx++) { + for(unsigned py = 0; py < 8; py++) { + uint8_t d0 = source[0]; + uint8_t d1 = source[1]; + for(unsigned px = 0; px < 8; px++) { + uint8_t pixel = 0; + pixel |= (d0 & (0x80 >> px)) ? 1 : 0; + pixel |= (d1 & (0x80 >> px)) ? 2 : 0; + pixel *= 0x55; + dest[(ty * 8 + py) * 512 + (tx * 8 + px)] = (pixel << 16) + (pixel << 8) + pixel; + } + source += 2; + } + } + } +} + +void VramViewer::refresh4bpp(const uint8_t *source, uint32_t *dest) { + for(unsigned ty = 0; ty < 32; ty++) { + for(unsigned tx = 0; tx < 64; tx++) { + for(unsigned py = 0; py < 8; py++) { + uint8_t d0 = source[ 0]; + uint8_t d1 = source[ 1]; + uint8_t d2 = source[16]; + uint8_t d3 = source[17]; + for(unsigned px = 0; px < 8; px++) { + uint8_t pixel = 0; + pixel |= (d0 & (0x80 >> px)) ? 1 : 0; + pixel |= (d1 & (0x80 >> px)) ? 2 : 0; + pixel |= (d2 & (0x80 >> px)) ? 4 : 0; + pixel |= (d3 & (0x80 >> px)) ? 8 : 0; + pixel *= 0x11; + dest[(ty * 8 + py) * 512 + (tx * 8 + px)] = (pixel << 16) + (pixel << 8) + pixel; + } + source += 2; + } + source += 16; + } + } +} + +void VramViewer::refresh8bpp(const uint8_t *source, uint32_t *dest) { + for(unsigned ty = 0; ty < 16; ty++) { + for(unsigned tx = 0; tx < 64; tx++) { + for(unsigned py = 0; py < 8; py++) { + uint8_t d0 = source[ 0]; + uint8_t d1 = source[ 1]; + uint8_t d2 = source[16]; + uint8_t d3 = source[17]; + uint8_t d4 = source[32]; + uint8_t d5 = source[33]; + uint8_t d6 = source[48]; + uint8_t d7 = source[49]; + for(unsigned px = 0; px < 8; px++) { + uint8_t pixel = 0; + pixel |= (d0 & (0x80 >> px)) ? 0x01 : 0; + pixel |= (d1 & (0x80 >> px)) ? 0x02 : 0; + pixel |= (d2 & (0x80 >> px)) ? 0x04 : 0; + pixel |= (d3 & (0x80 >> px)) ? 0x08 : 0; + pixel |= (d4 & (0x80 >> px)) ? 0x10 : 0; + pixel |= (d5 & (0x80 >> px)) ? 0x20 : 0; + pixel |= (d6 & (0x80 >> px)) ? 0x40 : 0; + pixel |= (d7 & (0x80 >> px)) ? 0x80 : 0; + dest[(ty * 8 + py) * 512 + (tx * 8 + px)] = (pixel << 16) + (pixel << 8) + pixel; + } + source += 2; + } + source += 48; + } + } +} + +void VramViewer::refreshMode7(const uint8_t *source, uint32_t *dest) { + for(unsigned ty = 0; ty < 16; ty++) { + for(unsigned tx = 0; tx < 16; tx++) { + for(unsigned py = 0; py < 8; py++) { + for(unsigned px = 0; px < 8; px++) { + uint8_t pixel = source[1]; + dest[(ty * 8 + py) * 512 + (tx * 8 + px)] = (pixel << 16) + (pixel << 8) + pixel; + source += 2; + } + } + } + } +} + +void VramViewer::setDepth2bpp() { bpp = 2; refresh(); } +void VramViewer::setDepth4bpp() { bpp = 4; refresh(); } +void VramViewer::setDepth8bpp() { bpp = 8; refresh(); } +void VramViewer::setDepthMode7() { bpp = 7; refresh(); } + +void VramViewer::Canvas::paintEvent(QPaintEvent*) { + QPainter painter(this); + painter.drawImage(0, 0, *image); +} + +VramViewer::Canvas::Canvas() { + image = new QImage(512, 512, QImage::Format_RGB32); + image->fill(0x800000); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.moc.hpp new file mode 100644 index 0000000000..e83733e62c --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/ppu/vram-viewer.moc.hpp @@ -0,0 +1,38 @@ +class VramViewer : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QHBoxLayout *controlLayout; + QRadioButton *depth2bpp; + QRadioButton *depth4bpp; + QRadioButton *depth8bpp; + QRadioButton *depthMode7; + QCheckBox *autoUpdateBox; + QPushButton *refreshButton; + struct Canvas : public QWidget { + QImage *image; + void paintEvent(QPaintEvent*); + Canvas(); + } *canvas; + + void autoUpdate(); + VramViewer(); + +public slots: + void show(); + void refresh(); + void setDepth2bpp(); + void setDepth4bpp(); + void setDepth8bpp(); + void setDepthMode7(); + +private: + unsigned bpp; + void refresh2bpp(const uint8_t*, uint32_t*); + void refresh4bpp(const uint8_t*, uint32_t*); + void refresh8bpp(const uint8_t*, uint32_t*); + void refreshMode7(const uint8_t*, uint32_t*); +}; + +extern VramViewer *vramViewer; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.cpp new file mode 100644 index 0000000000..af3002abc6 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.cpp @@ -0,0 +1,78 @@ +#include "breakpoint.moc" +BreakpointEditor *breakpointEditor; + +BreakpointItem::BreakpointItem(unsigned id_) : id(id_) { + layout = new QHBoxLayout; + layout->setMargin(0); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + enabled = new QCheckBox; + layout->addWidget(enabled); + + addr = new QLineEdit; + addr->setFixedWidth(80); + layout->addWidget(addr); + + data = new QLineEdit; + data->setFixedWidth(40); + layout->addWidget(data); + + mode = new QComboBox; + mode->addItem("Exec"); + mode->addItem("Read"); + mode->addItem("Write"); + layout->addWidget(mode); + + source = new QComboBox; + source->addItem("S-CPU bus"); + source->addItem("S-SMP bus"); + source->addItem("S-PPU VRAM"); + source->addItem("S-PPU OAM"); + source->addItem("S-PPU CGRAM"); + layout->addWidget(source); + + connect(enabled, SIGNAL(stateChanged(int)), this, SLOT(toggle())); +} + +void BreakpointItem::toggle() { + bool state = enabled->isChecked(); + + if(state) { + SNES::debugger.breakpoint[id].enabled = true; + SNES::debugger.breakpoint[id].addr = strhex(addr->text().toUtf8().data()) & 0xffffff; + SNES::debugger.breakpoint[id].data = strhex(data->text().toUtf8().data()) & 0xff; + if(data->text().length() == 0) SNES::debugger.breakpoint[id].data = -1; + SNES::debugger.breakpoint[id].mode = (SNES::Debugger::Breakpoint::Mode)mode->currentIndex(); + SNES::debugger.breakpoint[id].source = (SNES::Debugger::Breakpoint::Source)source->currentIndex(); + SNES::debugger.breakpoint[id].counter = 0; + + addr->setEnabled(false); + data->setEnabled(false); + mode->setEnabled(false); + source->setEnabled(false); + } else { + SNES::debugger.breakpoint[id].enabled = false; + + addr->setEnabled(true); + data->setEnabled(true); + mode->setEnabled(true); + source->setEnabled(true); + } +} + +BreakpointEditor::BreakpointEditor() : QbWindow(config().geometry.breakpointEditor) { + setObjectName("breakpoint-editor"); + setWindowTitle("Breakpoint Editor"); + + layout = new QVBoxLayout; + layout->setSizeConstraint(QLayout::SetFixedSize); + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + for(unsigned n = 0; n < SNES::Debugger::Breakpoints; n++) { + breakpoint[n] = new BreakpointItem(n); + layout->addWidget(breakpoint[n]); + } +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.moc.hpp new file mode 100644 index 0000000000..0cc64ce455 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/breakpoint.moc.hpp @@ -0,0 +1,30 @@ +class BreakpointItem : public QWidget { + Q_OBJECT + +public: + QHBoxLayout *layout; + QCheckBox *enabled; + QLineEdit *addr; + QLineEdit *data; + QComboBox *mode; + QComboBox *source; + BreakpointItem(unsigned id); + +public slots: + void toggle(); + +private: + const unsigned id; +}; + +class BreakpointEditor : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + BreakpointItem *breakpoint[SNES::Debugger::Breakpoints]; + + BreakpointEditor(); +}; + +extern BreakpointEditor *breakpointEditor; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.cpp new file mode 100644 index 0000000000..68ffe3cdd1 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.cpp @@ -0,0 +1,110 @@ +#include "disassembler.moc" +CPUDisassembler *cpuDisassembler; +SMPDisassembler *smpDisassembler; +Disassembler *disassembler; + +CPUDisassembler::CPUDisassembler() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + view = new QTextEdit; + view->setReadOnly(true); + view->setFont(QFont(Style::Monospace)); + view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->setMinimumHeight((25 + 1) * view->fontMetrics().height()); + layout->addWidget(view); +} + +SMPDisassembler::SMPDisassembler() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + view = new QTextEdit; + view->setReadOnly(true); + view->setFont(QFont(Style::Monospace)); + view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->setMinimumHeight((25 + 1) * view->fontMetrics().height()); + layout->addWidget(view); +} + +Disassembler::Disassembler() : QbWindow(config().geometry.disassembler) { + setObjectName("disassembler"); + setWindowTitle("Disassembler"); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + cpuDisassembler = new CPUDisassembler; + smpDisassembler = new SMPDisassembler; + + tab = new QTabWidget; + tab->addTab(cpuDisassembler, "S-CPU"); + tab->addTab(smpDisassembler, "S-SMP"); + layout->addWidget(tab); +} + +void Disassembler::refresh(Source source, unsigned addr) { + uint8 *usage; + unsigned mask; + if(source == CPU) { usage = SNES::cpu.usage; mask = (1 << 24) - 1; } + if(source == SMP) { usage = SNES::smp.usage; mask = (1 << 16) - 1; } + + int line[25]; + for(unsigned i = 0; i < 25; i++) line[i] = -1; + + line[12] = addr; + + for(signed index = 11; index >= 0; index--) { + int base = line[index + 1]; + if(base == -1) break; + + for(unsigned i = 1; i <= 4; i++) { + if(usage[(base - i) & mask] & 0x20) { + line[index] = base - i; + break; + } + } + } + + for(signed index = 13; index <= 24; index++) { + int base = line[index - 1]; + if(base == -1) break; + + for(unsigned i = 1; i <= 4; i++) { + if(usage[(base + i) & mask] & 0x20) { + line[index] = base + i; + break; + } + } + } + + string output; + for(unsigned i = 0; i < 25; i++) { + if(i < 12) output << ""; + else if(i == 12) output << ""; + else output << ""; + + if(line[i] == -1) { + output << "..."; + } else { + char t[256]; + if(source == CPU) { SNES::cpu.disassemble_opcode(t, line[i]); t[20] = 0; } + if(source == SMP) { SNES::smp.disassemble_opcode(t, line[i]); t[23] = 0; } + string text = rtrim(t); + text.replace(" ", " "); + output << text; + } + + output << ""; + if(i != 24) output << "
    "; + } + + if(source == CPU) cpuDisassembler->view->setHtml(output); + if(source == SMP) smpDisassembler->view->setHtml(output); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.moc.hpp new file mode 100644 index 0000000000..e644f4d7f1 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/disassembler.moc.hpp @@ -0,0 +1,29 @@ +class CPUDisassembler : public QWidget { +public: + QVBoxLayout *layout; + QTextEdit *view; + CPUDisassembler(); +}; + +class SMPDisassembler : public QWidget { +public: + QVBoxLayout *layout; + QTextEdit *view; + SMPDisassembler(); +}; + +class Disassembler : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTabWidget *tab; + + enum Source { CPU, SMP }; + void refresh(Source, unsigned); + Disassembler(); +}; + +extern CPUDisassembler *cpuDisassembler; +extern SMPDisassembler *smpDisassembler; +extern Disassembler *disassembler; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.cpp new file mode 100644 index 0000000000..a5e7cae414 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.cpp @@ -0,0 +1,162 @@ +#include "memory.moc" +MemoryEditor *memoryEditor; + +MemoryEditor::MemoryEditor() : QbWindow(config().geometry.memoryEditor) { + setObjectName("memory-editor"); + setWindowTitle("Memory Editor"); + + layout = new QHBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + editor = new HexEditor; + editor->reader = bind(&MemoryEditor::reader, this); + editor->writer = bind(&MemoryEditor::writer, this); + editor->setSize(16 * 1024 * 1024); + memorySource = SNES::Debugger::CPUBus; + layout->addWidget(editor); + + controlLayout = new QVBoxLayout; + controlLayout->setSpacing(0); + layout->addLayout(controlLayout); + + source = new QComboBox; + source->addItem("S-CPU bus"); + source->addItem("S-APU bus"); + source->addItem("S-PPU VRAM"); + source->addItem("S-PPU OAM"); + source->addItem("S-PPU CGRAM"); + controlLayout->addWidget(source); + controlLayout->addSpacing(2); + + addr = new QLineEdit; + controlLayout->addWidget(addr); + + autoUpdateBox = new QCheckBox("Auto update"); + controlLayout->addWidget(autoUpdateBox); + + refreshButton = new QPushButton("Refresh"); + controlLayout->addWidget(refreshButton); + + spacer = new QWidget; + spacer->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + controlLayout->addWidget(spacer); + + exportButton = new QPushButton("Export"); + controlLayout->addWidget(exportButton); + + importButton = new QPushButton("Import"); + controlLayout->addWidget(importButton); + + connect(source, SIGNAL(currentIndexChanged(int)), this, SLOT(sourceChanged(int))); + connect(addr, SIGNAL(textEdited(const QString&)), this, SLOT(updateOffset())); + connect(addr, SIGNAL(returnPressed()), this, SLOT(updateOffset())); + connect(refreshButton, SIGNAL(released()), this, SLOT(refresh())); + connect(exportButton, SIGNAL(released()), this, SLOT(exportMemory())); + connect(importButton, SIGNAL(released()), this, SLOT(importMemory())); +} + +void MemoryEditor::autoUpdate() { + if(SNES::cartridge.loaded() && autoUpdateBox->isChecked()) editor->update(); +} + +void MemoryEditor::synchronize() { + if(SNES::cartridge.loaded() == false) { + editor->setHtml(""); + editor->scrollbar->setEnabled(false); + source->setEnabled(false); + addr->setEnabled(false); + autoUpdateBox->setEnabled(false); + refreshButton->setEnabled(false); + exportButton->setEnabled(false); + importButton->setEnabled(false); + } else { + editor->scrollbar->setEnabled(true); + source->setEnabled(true); + addr->setEnabled(true); + autoUpdateBox->setEnabled(true); + refreshButton->setEnabled(true); + exportButton->setEnabled(true); + importButton->setEnabled(true); + } +} + +void MemoryEditor::show() { + QbWindow::show(); + refresh(); +} + +void MemoryEditor::sourceChanged(int index) { + switch(index) { default: + case 0: memorySource = SNES::Debugger::CPUBus; editor->setSize(16 * 1024 * 1024); break; + case 1: memorySource = SNES::Debugger::APURAM; editor->setSize(64 * 1024); break; + case 2: memorySource = SNES::Debugger::VRAM; editor->setSize(64 * 1024); break; + case 3: memorySource = SNES::Debugger::OAM; editor->setSize(544); break; + case 4: memorySource = SNES::Debugger::CGRAM; editor->setSize(512); break; + } + + editor->setOffset(strhex(addr->text().toUtf8().data())); + editor->update(); +} + +void MemoryEditor::refresh() { + if(SNES::cartridge.loaded() == false) { + editor->setHtml(""); + } else { + editor->update(); + } +} + +void MemoryEditor::updateOffset() { + editor->setOffset(strhex(addr->text().toUtf8().data())); + refresh(); +} + +void MemoryEditor::exportMemory() { + string basename = filepath(nall::basename(cartridge.fileName), config().path.data); + + exportMemory(SNES::memory::cartram, string() << basename << "-sram.bin"); + exportMemory(SNES::memory::wram, string() << basename << "-wram.bin"); + exportMemory(SNES::memory::apuram, string() << basename << "-apuram.bin"); + exportMemory(SNES::memory::vram, string() << basename << "-vram.bin"); + exportMemory(SNES::memory::oam, string() << basename << "-oam.bin"); + exportMemory(SNES::memory::cgram, string() << basename << "-cgram.bin"); +} + +void MemoryEditor::importMemory() { + string basename = filepath(nall::basename(cartridge.fileName), config().path.data); + + importMemory(SNES::memory::cartram, string() << basename << "-sram.bin"); + importMemory(SNES::memory::wram, string() << basename << "-wram.bin"); + importMemory(SNES::memory::apuram, string() << basename << "-apuram.bin"); + importMemory(SNES::memory::vram, string() << basename << "-vram.bin"); + importMemory(SNES::memory::oam, string() << basename << "-oam.bin"); + importMemory(SNES::memory::cgram, string() << basename << "-cgram.bin"); + refresh(); //in case import changed values that are currently being displayed ... +} + +void MemoryEditor::exportMemory(SNES::Memory &memory, const string &filename) const { + file fp; + if(fp.open(filename, file::mode_write)) { + for(unsigned i = 0; i < memory.size(); i++) fp.write(memory.read(i)); + fp.close(); + } +} + +void MemoryEditor::importMemory(SNES::Memory &memory, const string &filename) const { + file fp; + if(fp.open(filename, file::mode_read)) { + unsigned filesize = fp.size(); + for(unsigned i = 0; i < memory.size() && i < filesize; i++) memory.write(i, fp.read()); + fp.close(); + } +} + +uint8 MemoryEditor::reader(unsigned addr) { + return SNES::debugger.read(memorySource, addr); +} + +void MemoryEditor::writer(unsigned addr, uint8 data) { + SNES::debugger.write(memorySource, addr, data); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.moc.hpp new file mode 100644 index 0000000000..8217bdd265 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/memory.moc.hpp @@ -0,0 +1,36 @@ +class MemoryEditor : public QbWindow { + Q_OBJECT + +public: + QHBoxLayout *layout; + HexEditor *editor; + QVBoxLayout *controlLayout; + QComboBox *source; + QLineEdit *addr; + QCheckBox *autoUpdateBox; + QPushButton *refreshButton; + QWidget *spacer; + QPushButton *exportButton; + QPushButton *importButton; + + void autoUpdate(); + void synchronize(); + + SNES::Debugger::MemorySource memorySource; + uint8 reader(unsigned addr); + void writer(unsigned addr, uint8 data); + + MemoryEditor(); + +public slots: + void show(); + void sourceChanged(int); + void refresh(); + void updateOffset(); + void exportMemory(); + void importMemory(); + void exportMemory(SNES::Memory&, const string&) const; + void importMemory(SNES::Memory&, const string&) const; +}; + +extern MemoryEditor *memoryEditor; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.cpp new file mode 100644 index 0000000000..0af0b34324 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.cpp @@ -0,0 +1,88 @@ +#include "properties.moc" +PropertiesWidget *cpuPropertiesTab; +PropertiesWidget *ppuPropertiesTab; +PropertiesViewer *propertiesViewer; + +void PropertiesWidget::refresh() { + QList items = list->findItems("", Qt::MatchContains); + for(unsigned v = 0; v < items.count(); v++) { + QTreeWidgetItem *item = items[v]; + unsigned id = item->data(0, Qt::UserRole).toUInt(); + string name, value; + object.property(id, name, value); + item->setText(1, value); + } +} + +PropertiesWidget::PropertiesWidget(SNES::ChipDebugger &object) : object(object) { + setMinimumSize(480, 240); + + layout = new QVBoxLayout; + setLayout(layout); + + list = new QTreeWidget; + list->setColumnCount(2); + list->setHeaderLabels(QStringList() << "Name" << "Value"); + list->setAllColumnsShowFocus(true); + list->setAlternatingRowColors(true); + list->setRootIsDecorated(false); + list->setSortingEnabled(false); + layout->addWidget(list); + + unsigned counter = 0; + while(true) { + string name, value; + bool result = object.property(counter, name, value); + if(result == false) break; + + QTreeWidgetItem *item = new QTreeWidgetItem(list); + item->setData(0, Qt::UserRole, QVariant(counter++)); + item->setText(0, name); + } + for(unsigned i = 0; i <= 1; i++) list->resizeColumnToContents(i); +} + +void PropertiesViewer::refresh() { + cpuPropertiesTab->refresh(); + ppuPropertiesTab->refresh(); +} + +void PropertiesViewer::show() { + QbWindow::show(); + refresh(); +} + +void PropertiesViewer::autoUpdate() { + if(autoUpdateBox->isChecked()) refresh(); +} + +PropertiesViewer::PropertiesViewer() : QbWindow(config().geometry.propertiesViewer) { + setObjectName("properties-viewer"); + setWindowTitle("Properties"); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + tabWidget = new QTabWidget; + layout->addWidget(tabWidget); + + cpuPropertiesTab = new PropertiesWidget(SNES::cpu); + tabWidget->addTab(cpuPropertiesTab, "S-CPU"); + + ppuPropertiesTab = new PropertiesWidget(SNES::ppu); + tabWidget->addTab(ppuPropertiesTab, "S-PPU"); + + controlLayout = new QHBoxLayout; + controlLayout->setAlignment(Qt::AlignRight); + layout->addLayout(controlLayout); + + autoUpdateBox = new QCheckBox("Auto update"); + controlLayout->addWidget(autoUpdateBox); + + refreshButton = new QPushButton("Refresh"); + controlLayout->addWidget(refreshButton); + + connect(refreshButton, SIGNAL(released()), this, SLOT(refresh())); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.moc.hpp new file mode 100644 index 0000000000..d2c6ddfefa --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tools/properties.moc.hpp @@ -0,0 +1,37 @@ +class PropertiesWidget : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTreeWidget *list; + + PropertiesWidget(SNES::ChipDebugger &object); + +public slots: + void refresh(); + +private: + SNES::ChipDebugger &object; +}; + +class PropertiesViewer : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTabWidget *tabWidget; + QHBoxLayout *controlLayout; + QCheckBox *autoUpdateBox; + QPushButton *refreshButton; + + void autoUpdate(); + PropertiesViewer(); + +public slots: + void refresh(); + void show(); +}; + +extern PropertiesWidget *cpuPropertiesTab; +extern PropertiesWidget *ppuPropertiesTab; +extern PropertiesViewer *propertiesViewer; diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tracer.cpp b/libmednahawk/src/snes/src/ui_qt/debugger/tracer.cpp new file mode 100644 index 0000000000..f654616f33 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tracer.cpp @@ -0,0 +1,74 @@ +#include "tracer.moc" +Tracer *tracer; + +void Tracer::stepCpu() { + if(traceCpu) { + unsigned addr = SNES::cpu.regs.pc; + if(!traceMask || !(traceMaskCPU[addr >> 3] & (0x80 >> (addr & 7)))) { + char text[256]; + SNES::cpu.disassemble_opcode(text, addr); + tracefile.print(string() << text << "\n"); + } + traceMaskCPU[addr >> 3] |= 0x80 >> (addr & 7); + } +} + +void Tracer::stepSmp() { + if(traceSmp) { + unsigned addr = SNES::smp.regs.pc; + if(!traceMask || !(traceMaskSMP[addr >> 3] & (0x80 >> (addr & 7)))) { + char text[256]; + SNES::smp.disassemble_opcode(text, addr); + tracefile.print(string() << text << "\n"); + } + traceMaskSMP[addr >> 3] |= 0x80 >> (addr & 7); + } +} + +void Tracer::setCpuTraceState(int state) { + traceCpu = (state == Qt::Checked); + + if(traceCpu && !tracefile.open()) { + tracefile.open(string() << config().path.data << "trace.log", file::mode_write); + } else if(!traceCpu && !traceSmp && tracefile.open()) { + tracefile.close(); + } +} + +void Tracer::setSmpTraceState(int state) { + traceSmp = (state == Qt::Checked); + + if(traceSmp && !tracefile.open()) { + tracefile.open(string() << config().path.data << "trace.log", file::mode_write); + } else if(!traceCpu && !traceSmp && tracefile.open()) { + tracefile.close(); + } +} + +void Tracer::setTraceMaskState(int state) { + traceMask = (state == Qt::Checked); + + if(traceMask) { + //flush all bitmasks once enabled + memset(traceMaskCPU, 0x00, (1 << 24) >> 3); + memset(traceMaskSMP, 0x00, (1 << 16) >> 3); + } +} + +Tracer::Tracer() { + traceCpu = false; + traceSmp = false; + traceMask = false; + + traceMaskCPU = new uint8[(1 << 24) >> 3](); + traceMaskSMP = new uint8[(1 << 16) >> 3](); + + SNES::cpu.step_event = bind(&Tracer::stepCpu, this); + SNES::smp.step_event = bind(&Tracer::stepSmp, this); +} + +Tracer::~Tracer() { + delete[] traceMaskCPU; + delete[] traceMaskSMP; + if(tracefile.open()) tracefile.close(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/debugger/tracer.moc.hpp b/libmednahawk/src/snes/src/ui_qt/debugger/tracer.moc.hpp new file mode 100644 index 0000000000..de29a00f65 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/debugger/tracer.moc.hpp @@ -0,0 +1,26 @@ +class Tracer : public QObject { + Q_OBJECT + +public: + void stepCpu(); + void stepSmp(); + + Tracer(); + ~Tracer(); + +public slots: + void setCpuTraceState(int); + void setSmpTraceState(int); + void setTraceMaskState(int); + +private: + file tracefile; + bool traceCpu; + bool traceSmp; + bool traceMask; + + uint8 *traceMaskCPU; + uint8 *traceMaskSMP; +}; + +extern Tracer *tracer; diff --git a/libmednahawk/src/snes/src/ui_qt/input/controller.cpp b/libmednahawk/src/snes/src/ui_qt/input/controller.cpp new file mode 100644 index 0000000000..4f62f0a0c4 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/controller.cpp @@ -0,0 +1,372 @@ +namespace Controllers { + +void TurboInput::cache() { + if(state) { + cachedState = (counter < holdHi ? state : 0); + if(++counter >= holdHi + holdLo) counter = 0; + } else { + cachedState = 0; + counter = 0; + } +} + +TurboInput::TurboInput(const char *label, const char *configName) : +DigitalInput(label, configName) { + holdHi = 2; + holdLo = 2; + counter = 0; +} + +int16_t Gamepad::status(unsigned index, unsigned id) const { + switch(id) { + case SNES::Input::JoypadUp: return up.cachedState; + case SNES::Input::JoypadDown: return down.cachedState; + case SNES::Input::JoypadLeft: return left.cachedState; + case SNES::Input::JoypadRight: return right.cachedState; + case SNES::Input::JoypadA: return a.cachedState | turboA.cachedState; + case SNES::Input::JoypadB: return b.cachedState | turboB.cachedState; + case SNES::Input::JoypadX: return x.cachedState | turboX.cachedState; + case SNES::Input::JoypadY: return y.cachedState | turboY.cachedState; + case SNES::Input::JoypadL: return l.cachedState | turboL.cachedState; + case SNES::Input::JoypadR: return r.cachedState | turboR.cachedState; + case SNES::Input::JoypadSelect: return select.cachedState; + case SNES::Input::JoypadStart: return start.cachedState; + } + return 0; +} + +Gamepad::Gamepad(unsigned category, const char *label, const char *configName) : +InputGroup(category, label), +up("Up", string() << "input." << configName << ".up"), +down("Down", string() << "input." << configName << ".down"), +left("Left", string() << "input." << configName << ".left"), +right("Right", string() << "input." << configName << ".right"), +b("B", string() << "input." << configName << ".b"), +a("A", string() << "input." << configName << ".a"), +y("Y", string() << "input." << configName << ".y"), +x("X", string() << "input." << configName << ".x"), +l("L", string() << "input." << configName << ".l"), +r("R", string() << "input." << configName << ".r"), +select("Select", string() << "input." << configName << ".select"), +start("Start", string() << "input." << configName << ".start"), +turboB("Turbo B", string() << "input." << configName << ".turboB"), +turboA("Turbo A", string() << "input." << configName << ".turboA"), +turboY("Turbo Y", string() << "input." << configName << ".turboY"), +turboX("Turbo X", string() << "input." << configName << ".turboX"), +turboL("Turbo L", string() << "input." << configName << ".turboL"), +turboR("Turbo R", string() << "input." << configName << ".turboR") { + attach(&up); attach(&down); attach(&left); attach(&right); + attach(&b); attach(&a); attach(&y); attach(&x); + attach(&l); attach(&r); attach(&select); attach(&start); + attach(&turboB); attach(&turboA); attach(&turboY); attach(&turboX); + attach(&turboL); attach(&turboR); + + if(this == &gamepad1) { + up.name = "KB0::Up"; + down.name = "KB0::Down"; + left.name = "KB0::Left"; + right.name = "KB0::Right"; + b.name = "KB0::Z"; + a.name = "KB0::X"; + y.name = "KB0::A"; + x.name = "KB0::S"; + l.name = "KB0::D"; + r.name = "KB0::C"; + select.name = "KB0::Apostrophe"; + start.name = "KB0::Return"; + } +} + +// + +int16_t Multitap::status(unsigned index, unsigned id) const { + switch(index & 3) { default: + case 0: return port1.status(index, id); + case 1: return port2.status(index, id); + case 2: return port3.status(index, id); + case 3: return port4.status(index, id); + } +} + +Multitap::Multitap(Gamepad &port1_, Gamepad &port2_, Gamepad &port3_, Gamepad &port4_) : +InputGroup(InputCategory::Hidden, "Multitap"), +port1(port1_), port2(port2_), port3(port3_), port4(port4_) { +} + +// + +void AsciiSwitch::poll() { + DigitalInput::poll(); + + //only change state when controller is active + if(!parent) return; + if(parent->category == InputCategory::Port1 && mapper().port1 != parent) return; + if(parent->category == InputCategory::Port2 && mapper().port2 != parent) return; + + if(previousState != state && state) { + switch(mode) { + case Off: mode = Turbo; utility.showMessage(string() << label << " set to turbo."); break; + case Turbo: mode = Auto; utility.showMessage(string() << label << " set to auto."); break; + case Auto: mode = Off; utility.showMessage(string() << label << " set to off."); break; + } + } +} + +AsciiSwitch::AsciiSwitch(const char *label, const char *configName) : +DigitalInput(label, configName) { + mode = Off; +} + +void AsciiInput::cache() { + if(asciiSwitch->mode == AsciiSwitch::Off) { + cachedState = state; + } else if(asciiSwitch->mode == AsciiSwitch::Turbo) { + if(state) { + cachedState = (counter < holdHi ? state : 0); + if(++counter >= holdHi + holdLo) counter = 0; + } else { + cachedState = 0; + counter = 0; + } + } else if(asciiSwitch->mode == AsciiSwitch::Auto) { + cachedState = (counter < holdHi); + if(++counter >= holdHi + holdLo) counter = 0; + } +} + +AsciiInput::AsciiInput(const char *label, const char *configName) : +DigitalInput(label, configName) { + holdHi = 2; + holdLo = 2; + counter = 0; +} + +void AsciiSlowMotion::poll() { + DigitalInput::poll(); + + //only change state when controller is active + if(!parent) return; + if(parent->category == InputCategory::Port1 && mapper().port1 != parent) return; + if(parent->category == InputCategory::Port2 && mapper().port2 != parent) return; + + if(previousState != state && state) { + if(enabled == false) { + enabled = true; + utility.showMessage(string() << label << " enabled."); + } else { + enabled = false; + utility.showMessage(string() << label << " disabled."); + } + } +} + +void AsciiSlowMotion::cache() { + if(enabled == false) { + cachedState = 0; + } else { + cachedState = counter < holdHi; + if(++counter >= holdHi + holdLo) counter = 0; + } +} + +AsciiSlowMotion::AsciiSlowMotion(const char *label, const char *configName) : +DigitalInput(label, configName) { + enabled = false; + holdHi = 2; + holdLo = 2; +} + +int16_t Asciipad::status(unsigned index, unsigned id) const { + switch(id) { + case SNES::Input::JoypadUp: return up.cachedState; + case SNES::Input::JoypadDown: return down.cachedState; + case SNES::Input::JoypadLeft: return left.cachedState; + case SNES::Input::JoypadRight: return right.cachedState; + case SNES::Input::JoypadA: return a.cachedState; + case SNES::Input::JoypadB: return b.cachedState; + case SNES::Input::JoypadX: return x.cachedState; + case SNES::Input::JoypadY: return y.cachedState; + case SNES::Input::JoypadL: return l.cachedState; + case SNES::Input::JoypadR: return r.cachedState; + case SNES::Input::JoypadSelect: return select.cachedState; + case SNES::Input::JoypadStart: return start.cachedState | slowMotion.cachedState; + } + return 0; +} + +Asciipad::Asciipad(unsigned category, const char *label, const char *configName) : +InputGroup(category, label), +up("Up", string() << "input." << configName << ".up"), +down("Down", string() << "input." << configName << ".down"), +left("Left", string() << "input." << configName << ".left"), +right("Right", string() << "input." << configName << ".right"), +b("B", string() << "input." << configName << ".b"), +a("A", string() << "input." << configName << ".a"), +y("Y", string() << "input." << configName << ".y"), +x("X", string() << "input." << configName << ".x"), +l("L", string() << "input." << configName << ".l"), +r("R", string() << "input." << configName << ".r"), +select("Select", string() << "input." << configName << ".select"), +start("Start", string() << "input." << configName << ".start"), +switchB("B Switch", string() << "input." << configName << ".bSwitch"), +switchA("A Switch", string() << "input." << configName << ".aSwitch"), +switchY("Y Switch", string() << "input." << configName << ".ySwitch"), +switchX("X Switch", string() << "input." << configName << ".xSwitch"), +switchL("L Switch", string() << "input." << configName << ".lSwitch"), +switchR("R Switch", string() << "input." << configName << ".rSwitch"), +slowMotion("Slow Motion", string() << "input." << configName << ".slowMotion") { + b.asciiSwitch = &switchB; + a.asciiSwitch = &switchA; + y.asciiSwitch = &switchY; + x.asciiSwitch = &switchX; + l.asciiSwitch = &switchL; + r.asciiSwitch = &switchR; + + attach(&up); attach(&down); attach(&left); attach(&right); + attach(&b); attach(&a); attach(&y); attach(&x); + attach(&l); attach(&r); attach(&select); attach(&start); + attach(&switchB); attach(&switchA); attach(&switchY); attach(&switchX); + attach(&switchL); attach(&switchR); attach(&slowMotion); + + if(this == &asciipad1) { + up.name = "KB0::Up"; + down.name = "KB0::Down"; + left.name = "KB0::Left"; + right.name = "KB0::Right"; + b.name = "KB0::Z"; + a.name = "KB0::X"; + y.name = "KB0::A"; + x.name = "KB0::S"; + l.name = "KB0::D"; + r.name = "KB0::C"; + select.name = "KB0::Apostrophe"; + start.name = "KB0::Return"; + } +} + +// + +int16_t Mouse::status(unsigned index, unsigned id) const { + switch(id) { + case SNES::Input::MouseX: return x.cachedState; + case SNES::Input::MouseY: return y.cachedState; + case SNES::Input::MouseLeft: return left.cachedState; + case SNES::Input::MouseRight: return right.cachedState; + } + return 0; +} + +Mouse::Mouse(unsigned category, const char *label, const char *configName) : +InputGroup(category, label), +x("X-axis", string() << "input." << configName << ".x"), +y("Y-axis", string() << "input." << configName << ".y"), +left("Left Button", string() << "input." << configName << ".left"), +right("Right Button", string() << "input." << configName << ".right") { + attach(&x); attach(&y); attach(&left); attach(&right); + + x.name = "MS0::Xaxis"; + y.name = "MS0::Yaxis"; + left.name = "MS0::Button0"; + right.name = "MS0::Button2"; +} + +// + +int16_t SuperScope::status(unsigned index, unsigned id) const { + switch(id) { + case SNES::Input::SuperScopeX: return x.cachedState; + case SNES::Input::SuperScopeY: return y.cachedState; + case SNES::Input::SuperScopeTrigger: return trigger.cachedState; + case SNES::Input::SuperScopeCursor: return cursor.cachedState; + case SNES::Input::SuperScopeTurbo: return turbo.cachedState; + case SNES::Input::SuperScopePause: return pause.cachedState; + } + return 0; +} + +SuperScope::SuperScope(unsigned category, const char *label, const char *configName) : +InputGroup(category, label), +x("X-axis", string() << "input." << configName << ".x"), +y("Y-axis", string() << "input." << configName << ".y"), +trigger("Trigger", string() << "input." << configName << ".trigger"), +cursor("Cursor", string() << "input." << configName << ".cursor"), +turbo("Turbo", string() << "input." << configName << ".turbo"), +pause("Pause", string() << "input." << configName << ".pause") { + attach(&x); attach(&y); attach(&trigger); attach(&cursor); + attach(&turbo); attach(&pause); + + x.name = "MS0::Xaxis"; + y.name = "MS0::Yaxis"; + trigger.name = "MS0::Button0"; + cursor.name = "MS0::Button2"; + turbo.name = "KB0::T"; + pause.name = "KB0::P"; +} + +// + +int16_t Justifier::status(unsigned index, unsigned id) const { + switch(id) { + case SNES::Input::JustifierX: return x.cachedState; + case SNES::Input::JustifierY: return y.cachedState; + case SNES::Input::JustifierTrigger: return trigger.cachedState; + case SNES::Input::JustifierStart: return start.cachedState; + } + return 0; +} + +Justifier::Justifier(unsigned category, const char *label, const char *configName) : +InputGroup(category, label), +x("X-axis", string() << "input." << configName << ".x"), +y("Y-axis", string() << "input." << configName << ".y"), +trigger("Trigger", string() << "input." << configName << ".trigger"), +start("Start", string() << "input." << configName << ".start") { + attach(&x); attach(&y); attach(&trigger); attach(&start); + + if(this == &justifier1) { + x.name = "MS0::Xaxis"; + y.name = "MS0::Yaxis"; + trigger.name = "MS0::Button0"; + start.name = "MS0::Button2"; + } +} + +// + +int16_t Justifiers::status(unsigned index, unsigned id) const { + switch(index & 1) { default: + case 0: return port1.status(index, id); + case 1: return port2.status(index, id); + } +} + +Justifiers::Justifiers(Justifier &port1_, Justifier &port2_) : +InputGroup(InputCategory::Hidden, "Justifiers"), +port1(port1_), port2(port2_) { +} + +// + +Gamepad gamepad1(InputCategory::Port1, "Gamepad", "gamepad1"); +Asciipad asciipad1(InputCategory::Port1, "asciiPad", "asciipad1"); +Gamepad multitap1a(InputCategory::Port1, "Multitap - Port 1", "multitap1a"); +Gamepad multitap1b(InputCategory::Port1, "Multitap - Port 2", "multitap1b"); +Gamepad multitap1c(InputCategory::Port1, "Multitap - Port 3", "multitap1c"); +Gamepad multitap1d(InputCategory::Port1, "Multitap - Port 4", "multitap1d"); +Multitap multitap1(multitap1a, multitap1b, multitap1c, multitap1d); +Mouse mouse1(InputCategory::Port1, "Mouse", "mouse1"); + +Gamepad gamepad2(InputCategory::Port2, "Gamepad", "gamepad2"); +Asciipad asciipad2(InputCategory::Port2, "asciiPad", "asciipad2"); +Gamepad multitap2a(InputCategory::Port2, "Multitap - Port 1", "multitap2a"); +Gamepad multitap2b(InputCategory::Port2, "Multitap - Port 2", "multitap2b"); +Gamepad multitap2c(InputCategory::Port2, "Multitap - Port 3", "multitap2c"); +Gamepad multitap2d(InputCategory::Port2, "Multitap - Port 4", "multitap2d"); +Multitap multitap2(multitap2a, multitap2b, multitap2c, multitap2d); +Mouse mouse2(InputCategory::Port2, "Mouse", "mouse2"); +SuperScope superscope(InputCategory::Port2, "Super Scope", "superscope"); +Justifier justifier1(InputCategory::Port2, "Justifier 1", "justifier1"); +Justifier justifier2(InputCategory::Port2, "Justifier 2", "justifier2"); +Justifiers justifiers(justifier1, justifier2); + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/controller.hpp b/libmednahawk/src/snes/src/ui_qt/input/controller.hpp new file mode 100644 index 0000000000..0899a731f4 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/controller.hpp @@ -0,0 +1,112 @@ +struct ControllerPort1 { enum { None, Gamepad, Asciipad, Multitap, Mouse }; }; +struct ControllerPort2 { enum { None, Gamepad, Asciipad, Multitap, Mouse, SuperScope, Justifier, Justifiers }; }; + +namespace Controllers { + +struct TurboInput : DigitalInput { + unsigned holdHi; + unsigned holdLo; + unsigned counter; + void cache(); + TurboInput(const char*, const char*); +}; + +struct Gamepad : InputGroup { + DigitalInput up, down, left, right, b, a, y, x, l, r, select, start; + TurboInput turboB, turboA, turboY, turboX, turboL, turboR; + int16_t status(unsigned, unsigned) const; + Gamepad(unsigned, const char*, const char*); +}; + +struct Multitap : InputGroup { + Gamepad &port1, &port2, &port3, &port4; + int16_t status(unsigned, unsigned) const; + Multitap(Gamepad&, Gamepad&, Gamepad&, Gamepad&); +}; + +struct AsciiSwitch : DigitalInput { + enum Mode { Off, Turbo, Auto } mode; + void poll(); + AsciiSwitch(const char*, const char*); +}; + +struct AsciiSlowMotion : DigitalInput { + bool enabled; + unsigned holdHi; + unsigned holdLo; + unsigned counter; + void poll(); + void cache(); + AsciiSlowMotion(const char*, const char*); +}; + +struct AsciiInput : DigitalInput { + AsciiSwitch *asciiSwitch; + unsigned holdHi; + unsigned holdLo; + unsigned counter; + void cache(); + AsciiInput(const char*, const char*); +}; + +struct Asciipad : InputGroup { + DigitalInput up, down, left, right; + AsciiInput b, a, y, x, l, r; + DigitalInput select, start; + AsciiSwitch switchB, switchA, switchY, switchX, switchL, switchR; + AsciiSlowMotion slowMotion; + int16_t status(unsigned, unsigned) const; + Asciipad(unsigned, const char*, const char*); +}; + +struct Mouse : InputGroup { + AnalogInput x, y; + DigitalInput left, right; + int16_t status(unsigned, unsigned) const; + Mouse(unsigned, const char*, const char*); +}; + +struct SuperScope : InputGroup { + AnalogInput x, y; + DigitalInput trigger, cursor, turbo, pause; + int16_t status(unsigned, unsigned) const; + SuperScope(unsigned, const char*, const char*); +}; + +struct Justifier : InputGroup { + AnalogInput x, y; + DigitalInput trigger, start; + int16_t status(unsigned, unsigned) const; + Justifier(unsigned, const char*, const char*); +}; + +struct Justifiers : InputGroup { + Justifier &port1; + Justifier &port2; + int16_t status(unsigned, unsigned) const; + Justifiers(Justifier&, Justifier&); +}; + +extern Gamepad gamepad1; +extern Asciipad asciipad1; +extern Gamepad multitap1a; +extern Gamepad multitap1b; +extern Gamepad multitap1c; +extern Gamepad multitap1d; +extern Multitap multitap1; +extern Mouse mouse1; + +extern Gamepad gamepad2; +extern Asciipad asciipad2; +extern Gamepad multitap2a; +extern Gamepad multitap2b; +extern Gamepad multitap2c; +extern Gamepad multitap2d; +extern Multitap multitap2; +extern Mouse mouse2; +extern SuperScope superscope; +extern Justifier justifier1; +extern Justifier justifier2; +extern Justifiers justifiers; + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/input.cpp b/libmednahawk/src/snes/src/ui_qt/input/input.cpp new file mode 100644 index 0000000000..bd658148a9 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/input.cpp @@ -0,0 +1,277 @@ +#include "../ui-base.hpp" + +#include "controller.cpp" +#include "userinterface-general.cpp" +#include "userinterface-system.cpp" +#include "userinterface-emulationspeed.cpp" +#include "userinterface-states.cpp" +#include "userinterface-videosettings.cpp" + +void MappedInput::bind() { + lstring part; + part.split("+", name); + + modifier = InputModifier::None; + for(unsigned i = 0; i < part.size(); i++) { + if(part[i] == "Shift") modifier |= InputModifier::Shift; + if(part[i] == "Control") modifier |= InputModifier::Control; + if(part[i] == "Alt") modifier |= InputModifier::Alt; + if(part[i] == "Super") modifier |= InputModifier::Super; + } + + string temp = part[part.size() - 1]; + part.split(".", temp); + scancode = Scancode::decode(part[0]); + specifier = InputSpecifier::None; + if(part[1] == "Up") specifier = InputSpecifier::Up; + if(part[1] == "Down") specifier = InputSpecifier::Down; + if(part[1] == "Left") specifier = InputSpecifier::Left; + if(part[1] == "Right") specifier = InputSpecifier::Right; + if(part[1] == "Lo") specifier = InputSpecifier::Lo; + if(part[1] == "Hi") specifier = InputSpecifier::Hi; + if(part[1] == "Trigger") specifier = InputSpecifier::Trigger; + + //bypass modifier matching if scancode is itself a modifier + modifierOverride = Keyboard::isAnyModifier(scancode); + + //re-encode name, in case previous name was invalid + name = ""; + if(modifier & InputModifier::Shift) name << "Shift+"; + if(modifier & InputModifier::Control) name << "Control+"; + if(modifier & InputModifier::Alt) name << "Alt+"; + if(modifier & InputModifier::Super) name << "Super+"; + name << Scancode::encode(scancode); + if(specifier == InputSpecifier::Up) name << ".Up"; + if(specifier == InputSpecifier::Down) name << ".Down"; + if(specifier == InputSpecifier::Left) name << ".Left"; + if(specifier == InputSpecifier::Right) name << ".Right"; + if(specifier == InputSpecifier::Lo) name << ".Lo"; + if(specifier == InputSpecifier::Hi) name << ".Hi"; + if(specifier == InputSpecifier::Trigger) name << ".Trigger"; +} + +void MappedInput::cache() { + cachedState = state; +} + +MappedInput::MappedInput(const char *label_, const char *configName) : parent(0), label(label_) { + specifier = InputSpecifier::None; + modifierOverride = false; + state = 0; + previousState = 0; + cachedState = 0; + config().attach(name = "None", configName); +} + +// + +void DigitalInput::poll() { + previousState = state; + if(modifier == mapper().modifier || modifierOverride) { + if(specifier == InputSpecifier::None) { + state = mapper().state(scancode); + } else if(specifier == InputSpecifier::Up) { + state = (bool)(mapper().state(scancode) & Joypad::HatUp); + } else if(specifier == InputSpecifier::Down) { + state = (bool)(mapper().state(scancode) & Joypad::HatDown); + } else if(specifier == InputSpecifier::Left) { + state = (bool)(mapper().state(scancode) & Joypad::HatLeft); + } else if(specifier == InputSpecifier::Right) { + state = (bool)(mapper().state(scancode) & Joypad::HatRight); + } else if(specifier == InputSpecifier::Lo) { + state = mapper().state(scancode) < -16384; + } else if(specifier == InputSpecifier::Hi) { + state = mapper().state(scancode) > +16384; + } else if(specifier == InputSpecifier::Trigger) { + state = mapper().state(scancode) < 0; + } + } else { + state = 0; + } +} + +bool DigitalInput::isPressed() const { return state; } +bool DigitalInput::wasPressed() const { return previousState; } + +DigitalInput::DigitalInput(const char *label, const char *configName) : MappedInput(label, configName) { +} + +// + +void AnalogInput::poll() { + previousState = state; + if(Mouse::isAnyAxis(scancode)) { + if(input.acquired()) { + state = mapper().state(scancode); + } else { + state = 0; + } + } else if(Joypad::isAnyAxis(scancode)) { + state = mapper().state(scancode) / 8192; + } +} + +AnalogInput::AnalogInput(const char *label, const char *configName) : MappedInput(label, configName) { +} + +// + +void HotkeyInput::poll() { + DigitalInput::poll(); + if(mainWindow->isActive() && state != previousState) { + state ? pressed() : released(); + } +} + +HotkeyInput::HotkeyInput(const char *label, const char *configName) : DigitalInput(label, configName) { +} + +// + +void InputGroup::attach(MappedInput *input) { + input->parent = this; + add(input); +} + +void InputGroup::bind() { + for(unsigned i = 0; i < size(); i++) { + (*this)[i]->bind(); + } +} + +void InputGroup::poll() { + for(unsigned i = 0; i < size(); i++) { + (*this)[i]->poll(); + } +} + +void InputGroup::cache() { + for(unsigned i = 0; i < size(); i++) { + (*this)[i]->cache(); + } +} + +void InputGroup::flushCache() { + for(unsigned i = 0; i < size(); i++) { + MappedInput &input = *((*this)[i]); + input.cachedState = 0; + } +} + +InputGroup::InputGroup(unsigned category_, const char *label_) : category(category_), label(label_) { + mapper().add(this); +} + +// + +InputMapper& mapper() { + static InputMapper mapper; + return mapper; +} + +void InputMapper::calibrate() { + calibrated = true; + audio.clear(); + QMessageBox::information(settingsWindow, "Joypad Calibration", + "Joypads must be calibrated prior to mapping. Please ensure that " + "all axes and analog buttons are not pressed or moved in any specific " + "direction, and then press ok." + ); + + poll(); + for(unsigned i = 0; i < Joypad::Count; i++) { + for(unsigned axis = 0; axis < Joypad::Axes; axis++) { + int16_t n = state(joypad(i).axis(axis)); + isTrigger[i][axis] = n < -16384 || n > +16384; + } + } +} + +void InputMapper::bind() { + for(unsigned i = 0; i < size(); i++) { + (*this)[i]->bind(); + } +} + +void InputMapper::poll() { + activeState = !activeState; + input.poll(stateTable[activeState]); + + modifier = 0; + for(unsigned i = 0; i < Keyboard::Count; i++) { + if(state(keyboard(i)[Keyboard::Shift])) modifier |= InputModifier::Shift; + if(state(keyboard(i)[Keyboard::Control])) modifier |= InputModifier::Control; + if(state(keyboard(i)[Keyboard::Alt])) modifier |= InputModifier::Alt; + if(state(keyboard(i)[Keyboard::Super])) modifier |= InputModifier::Super; + } + + for(unsigned i = 0; i < size(); i++) { + (*this)[i]->poll(); + } + + for(unsigned i = 0; i < Scancode::Limit; i++) { + if(state(i) != previousState(i)) { + utility.inputEvent(i); + diskBrowser->inputEvent(i); + inputSettingsWindow->inputEvent(i); + } + } +} + +void InputMapper::cache() { + if(config().input.focusPolicy == Configuration::Input::FocusPolicyIgnoreInput && !mainWindow->isActive()) { + for(unsigned i = 0; i < size(); i++) { + InputGroup &group = *((*this)[i]); + group.flushCache(); + } + } else { + for(unsigned i = 0; i < size(); i++) { + InputGroup &group = *((*this)[i]); + if(group.category == InputCategory::Port1 || group.category == InputCategory::Port2) { + group.cache(); + } + } + } +} + +int16_t InputMapper::status(bool port, unsigned device, unsigned index, unsigned id) { + int16_t result = 0; + + if(port == InputCategory::Port1 && port1) result = port1->status(index, id); + if(port == InputCategory::Port2 && port2) result = port2->status(index, id); + + if(movie.state == Movie::Playback) { + result = movie.read(); + } else if(movie.state == Movie::Record) { + movie.write(result); + } + + return result; +} + +string InputMapper::modifierString() const { + string name; + if(modifier & InputModifier::Shift) name << "Shift+"; + if(modifier & InputModifier::Control) name << "Control+"; + if(modifier & InputModifier::Alt) name << "Alt+"; + if(modifier & InputModifier::Super) name << "Super+"; + return name; +} + +int16_t InputMapper::state(uint16_t scancode) const { return stateTable[activeState][scancode]; } +int16_t InputMapper::previousState(uint16_t scancode) const { return stateTable[!activeState][scancode]; } +unsigned InputMapper::distance(uint16_t scancode) const { return abs(state(scancode) - previousState(scancode)); } + +InputMapper::InputMapper() : port1(0), port2(0) { + calibrated = false; + for(unsigned i = 0; i < Joypad::Count; i++) { + for(unsigned axis = 0; axis < Joypad::Axes; axis++) { + isTrigger[i][axis] = false; + } + } + + activeState = 0; + for(unsigned i = 0; i < Scancode::Limit; i++) { + stateTable[0][i] = stateTable[1][i] = 0; + } +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/input.hpp b/libmednahawk/src/snes/src/ui_qt/input/input.hpp new file mode 100644 index 0000000000..2d318e883f --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/input.hpp @@ -0,0 +1,91 @@ +struct InputSpecifier { enum { None, Up, Down, Left, Right, Lo, Hi, Trigger }; }; +struct InputModifier { enum { None = 0, Shift = 1, Control = 2, Alt = 4, Super = 8 }; }; +struct InputCategory { enum { Port1 = 0, Port2 = 1, UserInterface = 2, Hidden = 3 }; }; + +struct InputGroup; + +struct MappedInput { + InputGroup *parent; + string name; + string label; + unsigned specifier; + unsigned modifier; + unsigned scancode; + bool modifierOverride; + int16_t state; + int16_t previousState; + int16_t cachedState; + + void bind(); + virtual void poll() = 0; + virtual void cache(); + + MappedInput(const char*, const char*); +}; + +struct DigitalInput : MappedInput { + void poll(); + + bool isPressed() const; + bool wasPressed() const; + + DigitalInput(const char*, const char*); +}; + +struct AnalogInput : MappedInput { + void poll(); + + AnalogInput(const char*, const char*); +}; + +struct HotkeyInput : DigitalInput { + void poll(); + virtual void pressed() {} + virtual void released() {} + + HotkeyInput(const char*, const char*); +}; + +struct InputGroup : public array { + unsigned category; + string label; + + void attach(MappedInput*); + void bind(); + void poll(); + void cache(); + void flushCache(); + virtual int16_t status(unsigned, unsigned) const { return 0; } + + InputGroup(unsigned, const char*); +}; + +struct InputMapper : public array { + InputGroup *port1; + InputGroup *port2; + + bool calibrated; + bool isTrigger[Joypad::Count][Joypad::Axes]; + + bool activeState; + int16_t stateTable[2][Scancode::Limit]; + unsigned modifier; + + void calibrate(); + void bind(); + void poll(); + void cache(); + int16_t status(bool, unsigned, unsigned, unsigned); + + string modifierString() const; + int16_t state(uint16_t) const; + int16_t previousState(uint16_t) const; + unsigned distance(uint16_t) const; + + InputMapper(); +}; + +InputMapper& mapper(); + +#include "controller.hpp" +#include "userinterface.hpp" diff --git a/libmednahawk/src/snes/src/ui_qt/input/userinterface-emulationspeed.cpp b/libmednahawk/src/snes/src/ui_qt/input/userinterface-emulationspeed.cpp new file mode 100644 index 0000000000..eea66624ec --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/userinterface-emulationspeed.cpp @@ -0,0 +1,181 @@ +InputGroup userInterfaceEmulationSpeed(InputCategory::UserInterface, "Emulation Speed"); + +namespace UserInterfaceEmulationSpeed { + +//slowdown and speedup do not work well with Vsync enabled, as it locks the +//speed to the monitor refresh rate. thus, when one is pressed, it is disabled +//until the key is released. + +struct Slowdown : HotkeyInput { + bool syncVideo; + + void pressed() { + config().system.speed = 0; + utility.updateEmulationSpeed(); + syncVideo = config().video.synchronize; + if(syncVideo) { + config().video.synchronize = false; + utility.updateAvSync(); + } + mainWindow->syncUi(); + } + + void released() { + config().system.speed = 2; + utility.updateEmulationSpeed(); + if(syncVideo) { + config().video.synchronize = true; + utility.updateAvSync(); + } + mainWindow->syncUi(); + } + + Slowdown() : HotkeyInput("Slowdown", "input.userInterface.emulationSpeed.slowdown") { + userInterfaceEmulationSpeed.attach(this); + } +} slowdown; + +struct Speedup : HotkeyInput { + bool syncVideo; + + void pressed() { + config().system.speed = 4; + utility.updateEmulationSpeed(); + syncVideo = config().video.synchronize; + if(syncVideo) { + config().video.synchronize = false; + utility.updateAvSync(); + } + mainWindow->syncUi(); + } + + void released() { + config().system.speed = 2; + utility.updateEmulationSpeed(); + if(syncVideo) { + config().video.synchronize = true; + utility.updateAvSync(); + } + mainWindow->syncUi(); + } + + Speedup() : HotkeyInput("Speedup", "input.userInterface.emulationSpeed.speedup") { + name = "KB0::Tilde"; + userInterfaceEmulationSpeed.attach(this); + } +} speedup; + +struct Decrease : HotkeyInput { + void pressed() { + if(config().system.speed > 0) config().system.speed--; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + Decrease() : HotkeyInput("Decrease", "input.userInterface.emulationSpeed.decrease") { + name = "Control+KB0::Divide"; + userInterfaceEmulationSpeed.attach(this); + } +} decrease; + +struct Increase : HotkeyInput { + void pressed() { + if(config().system.speed < 4) config().system.speed++; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + Increase() : HotkeyInput("Increase", "input.userInterface.emulationSpeed.increase") { + name = "Control+KB0::Multiply"; + userInterfaceEmulationSpeed.attach(this); + } +} increase; + +struct SetSlowestSpeed : HotkeyInput { + void pressed() { + config().system.speed = 0; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + SetSlowestSpeed() : HotkeyInput("Set Slowest Speed", "input.userInterface.emulationSpeed.setSlowest") { + name = "Control+KB0::Num1"; + userInterfaceEmulationSpeed.attach(this); + } +} setSlowestSpeed; + +struct SetSlowSpeed : HotkeyInput { + void pressed() { + config().system.speed = 1; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + SetSlowSpeed() : HotkeyInput("Set Slow Speed", "input.userInterface.emulationSpeed.setSlow") { + name = "Control+KB0::Num2"; + userInterfaceEmulationSpeed.attach(this); + } +} setSlowSpeed; + +struct SetNormalSpeed : HotkeyInput { + void pressed() { + config().system.speed = 2; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + SetNormalSpeed() : HotkeyInput("Set Normal Speed", "input.userInterface.emulationSpeed.setNormal") { + name = "Control+KB0::Num3"; + userInterfaceEmulationSpeed.attach(this); + } +} setNormalSpeed; + +struct SetFastSpeed : HotkeyInput { + void pressed() { + config().system.speed = 3; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + SetFastSpeed() : HotkeyInput("Set Fast Speed", "input.userInterface.emulationSpeed.setFast") { + name = "Control+KB0::Num4"; + userInterfaceEmulationSpeed.attach(this); + } +} setFastSpeed; + +struct SetFastestSpeed : HotkeyInput { + void pressed() { + config().system.speed = 4; + utility.updateEmulationSpeed(); + mainWindow->syncUi(); + } + + SetFastestSpeed() : HotkeyInput("Set Fastest Speed", "input.userInterface.emulationSpeed.setFastest") { + name = "Control+KB0::Num5"; + userInterfaceEmulationSpeed.attach(this); + } +} setFastestSpeed; + +struct SynchronizeVideo : HotkeyInput { + void pressed() { + utility.toggleSynchronizeVideo(); + } + + SynchronizeVideo() : HotkeyInput("Synchronize Video", "input.userInterface.emulationSpeed.synchronizeVideo") { + name = "Control+KB0::V"; + userInterfaceEmulationSpeed.attach(this); + } +} synchronizeVideo; + +struct SynchronizeAudio : HotkeyInput { + void pressed() { + utility.toggleSynchronizeAudio(); + } + + SynchronizeAudio() : HotkeyInput("Synchronize Audio", "input.userInterface.emulationSpeed.synchronizeAudio") { + name = "Control+KB0::A"; + userInterfaceEmulationSpeed.attach(this); + } +} synchronizeAudio; + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/userinterface-general.cpp b/libmednahawk/src/snes/src/ui_qt/input/userinterface-general.cpp new file mode 100644 index 0000000000..44d7b7ba88 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/userinterface-general.cpp @@ -0,0 +1,68 @@ +InputGroup userInterfaceGeneral(InputCategory::UserInterface, "General"); + +namespace UserInterfaceGeneral { + +struct ToggleMenubar : HotkeyInput { + void pressed() { + utility.toggleMenubar(); + } + + ToggleMenubar() : HotkeyInput("Toggle Menubar", "input.userInterface.general.toggleMenubar") { + name = "KB0::Tab"; + userInterfaceGeneral.attach(this); + } +} toggleMenubar; + +struct ToggleStatusbar : HotkeyInput { + void pressed() { + utility.toggleStatusbar(); + } + + ToggleStatusbar() : HotkeyInput("Toggle Statusbar", "input.userInterface.general.toggleStatusbar") { + name = "KB0::Tab"; + userInterfaceGeneral.attach(this); + } +} toggleStatusbar; + +struct ToggleCheatSystem : HotkeyInput { + void pressed() { + if(SNES::cheat.enabled() == false) { + SNES::cheat.enable(true); + utility.showMessage("Cheat system enabled."); + } else { + SNES::cheat.enable(false); + utility.showMessage("Cheat system disabled."); + } + } + + ToggleCheatSystem() : HotkeyInput("Toggle Cheat System", "input.userInterface.general.toggleCheatSystem") { + userInterfaceGeneral.attach(this); + } +} toggleCheatSystem; + +struct CaptureScreenshot : HotkeyInput { + void pressed() { + //tell SNES::Interface to save a screenshot at the next video_refresh() event + interface.saveScreenshot = true; + } + + CaptureScreenshot() : HotkeyInput("Capture Screenshot", "input.userInterface.general.captureScreenshot") { + userInterfaceGeneral.attach(this); + } +} captureScreenshot; + +//put here instead of in a separate "Audio Settings" group, +//because there is only one audio option at present +struct MuteAudioOutput : HotkeyInput { + void pressed() { + mainWindow->settings_muteAudio->toggleChecked(); + config().audio.mute = mainWindow->settings_muteAudio->isChecked(); + } + + MuteAudioOutput() : HotkeyInput("Mute Audio Output", "input.userInterface.general.muteAudioOutput") { + name = "Shift+KB0::M"; + userInterfaceGeneral.attach(this); + } +} muteAudioOutput; + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/userinterface-states.cpp b/libmednahawk/src/snes/src/ui_qt/input/userinterface-states.cpp new file mode 100644 index 0000000000..223f7819d7 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/userinterface-states.cpp @@ -0,0 +1,148 @@ +InputGroup userInterfaceStates(InputCategory::UserInterface, "States"); + +namespace UserInterfaceStates { + +//note: interally, there are ten quick save slots: 0-9 +//for the sake of users, this is displayed as 1-10 in the GUI +unsigned activeState = 0; + +struct Rewind : HotkeyInput { + void pressed() { + ::state.rewind(); + } + + Rewind() : HotkeyInput("Rewind", "input.userInterface.states.rewind") { + name = "KB0::Backspace"; + userInterfaceStates.attach(this); + } +} rewind; + +struct LoadActiveState : HotkeyInput { + void pressed() { + ::state.load(activeState); + } + + LoadActiveState() : HotkeyInput("Load Active Quick State", "input.userInterface.states.loadActiveQuickState") { + name = "KB0::F2"; + userInterfaceStates.attach(this); + } +} loadActiveState; + +struct SaveActiveState : HotkeyInput { + void pressed() { + ::state.save(activeState); + } + + SaveActiveState() : HotkeyInput("Save Active Quick State", "input.userInterface.states.saveActiveQuickState") { + name = "Shift+KB0::F2"; + userInterfaceStates.attach(this); + } +} saveActiveState; + +struct DecrementAndLoadState : HotkeyInput { + void pressed() { + activeState = (activeState + 10 - 1) % 10; + ::state.load(activeState); + } + + DecrementAndLoadState() : HotkeyInput("Decrement and Load State", "input.userInterface.states.decrementAndLoadState") { + userInterfaceStates.attach(this); + } +} decrementAndLoadState; + +struct SaveAndIncrementState : HotkeyInput { + void pressed() { + ::state.save(activeState); + activeState = (activeState + 10 + 1) % 10; + } + + SaveAndIncrementState() : HotkeyInput("Save and Increment State", "input.userInterface.states.saveAndIncrementState") { + userInterfaceStates.attach(this); + } +} saveAndIncrementState; + +struct DecrementActiveState : HotkeyInput { + void pressed() { + activeState = (activeState + 10 - 1) % 10; + utility.showMessage(string() << "Quick state " << (activeState + 1) << " selected."); + } + + DecrementActiveState() : HotkeyInput("Decrement Active Quick State Slot", "input.userInterface.states.decrementActiveQuickState") { + name = "KB0::F3"; + userInterfaceStates.attach(this); + } +} decrementActiveState; + +struct IncrementActiveState : HotkeyInput { + void pressed() { + activeState = (activeState + 10 + 1) % 10; + utility.showMessage(string() << "Quick state " << (activeState + 1) << " selected."); + } + + IncrementActiveState() : HotkeyInput("Increment Active Quick State Slot", "input.userInterface.states.incrementActiveQuickState") { + name = "KB0::F4"; + userInterfaceStates.attach(this); + } +} incrementActiveState; + +struct LoadState1 : HotkeyInput { + void pressed() { + ::state.load(0); + } + + LoadState1() : HotkeyInput("Load Quick State 1", "input.userInterface.states.loadQuickState1") { + userInterfaceStates.attach(this); + } +} loadState1; + +struct LoadState2 : HotkeyInput { + void pressed() { + ::state.load(1); + } + + LoadState2() : HotkeyInput("Load Quick State 2", "input.userInterface.states.loadQuickState2") { + userInterfaceStates.attach(this); + } +} loadState2; + +struct LoadState3 : HotkeyInput { + void pressed() { + ::state.load(2); + } + + LoadState3() : HotkeyInput("Load Quick State 3", "input.userInterface.states.loadQuickState3") { + userInterfaceStates.attach(this); + } +} loadState3; + +struct SaveState1 : HotkeyInput { + void pressed() { + ::state.save(0); + } + + SaveState1() : HotkeyInput("Save Quick State 1", "input.userInterface.states.saveQuickState1") { + userInterfaceStates.attach(this); + } +} saveState1; + +struct SaveState2 : HotkeyInput { + void pressed() { + ::state.save(1); + } + + SaveState2() : HotkeyInput("Save Quick State 2", "input.userInterface.states.saveQuickState2") { + userInterfaceStates.attach(this); + } +} saveState2; + +struct SaveState3 : HotkeyInput { + void pressed() { + ::state.save(2); + } + + SaveState3() : HotkeyInput("Save Quick State 3", "input.userInterface.states.saveQuickState3") { + userInterfaceStates.attach(this); + } +} saveState3; + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/userinterface-system.cpp b/libmednahawk/src/snes/src/ui_qt/input/userinterface-system.cpp new file mode 100644 index 0000000000..6456203db8 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/userinterface-system.cpp @@ -0,0 +1,88 @@ +InputGroup userInterfaceSystem(InputCategory::UserInterface, "System"); + +namespace UserInterfaceSystem { + +struct LoadCartridge : HotkeyInput { + void pressed() { + diskBrowser->loadCartridge(); + } + + LoadCartridge() : HotkeyInput("Load Cartridge", "input.userInterface.system.loadCartridge") { + name = "Shift+KB0::L"; + userInterfaceSystem.attach(this); + } +} loadCartridge; + +struct LoadBsxSlottedCartridge : HotkeyInput { + void pressed() { + loaderWindow->loadBsxSlottedCartridge("", ""); + } + + LoadBsxSlottedCartridge() : HotkeyInput("Load BS-X Slotted Cartridge", "input.userInterface.system.loadBsxSlottedcartridge") { + userInterfaceSystem.attach(this); + } +} loadBsxSlottedCartridge; + +struct LoadBsxCartridge : HotkeyInput { + void pressed() { + loaderWindow->loadBsxCartridge(config().path.bsx, ""); + } + + LoadBsxCartridge() : HotkeyInput("Load BS-X Cartridge", "input.userInterface.system.loadBsxCartridge") { + userInterfaceSystem.attach(this); + } +} loadBsxCartridge; + +struct LoadSufamiTurboCartridge : HotkeyInput { + void pressed() { + loaderWindow->loadSufamiTurboCartridge(config().path.st, "", ""); + } + + LoadSufamiTurboCartridge() : HotkeyInput("Load Sufami Turbo Cartridge", "input.userInterface.system.loadSufamiTurboCartridge") { + userInterfaceSystem.attach(this); + } +} loadSufamiTurboCartridge; + +struct LoadSuperGameBoyCartridge : HotkeyInput { + void pressed() { + loaderWindow->loadSuperGameBoyCartridge(config().path.sgb, ""); + } + + LoadSuperGameBoyCartridge() : HotkeyInput("Load Super Game Boy Cartridge", "input.userInterface.system.loadSuperGameBoyCartridge") { + userInterfaceSystem.attach(this); + } +} loadSuperGameBoyCartridge; + +struct PowerCycle : HotkeyInput { + void pressed() { + utility.modifySystemState(Utility::PowerCycle); + } + + PowerCycle() : HotkeyInput("Power Cycle", "input.userInterface.system.powerCycle") { + userInterfaceSystem.attach(this); + } +} powerCycle; + +struct Reset : HotkeyInput { + void pressed() { + utility.modifySystemState(Utility::Reset); + } + + Reset() : HotkeyInput("Reset", "input.userInterface.system.reset") { + userInterfaceSystem.attach(this); + } +} reset; + +struct Pause : HotkeyInput { + void pressed() { + application.pause = !application.pause; + if(application.pause) audio.clear(); + } + + Pause() : HotkeyInput("Pause", "input.userInterface.system.pause") { + name = "KB0::Pause"; + userInterfaceSystem.attach(this); + } +} pause; + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/userinterface-videosettings.cpp b/libmednahawk/src/snes/src/ui_qt/input/userinterface-videosettings.cpp new file mode 100644 index 0000000000..178d3a6d00 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/userinterface-videosettings.cpp @@ -0,0 +1,115 @@ +InputGroup userInterfaceVideoSettings(InputCategory::UserInterface, "Video Settings"); + +namespace UserInterfaceVideoSettings { + +struct ToggleFullscreen : HotkeyInput { + void pressed() { + utility.toggleFullscreen(); + } + + ToggleFullscreen() : HotkeyInput("Toggle Fullscreen Mode", "input.userInterface.videoSettings.toggleFullscreen") { + name = "Alt+KB0::Return"; + userInterfaceVideoSettings.attach(this); + } +} toggleFullscreen; + +struct SmoothVideoOutput : HotkeyInput { + void pressed() { + utility.toggleSmoothVideoOutput(); + } + + SmoothVideoOutput() : HotkeyInput("Smooth Video Output", "input.userInterface.videoSettings.smoothVideoOutput") { + name = "Shift+KB0::S"; + userInterfaceVideoSettings.attach(this); + } +} smoothVideoOutput; + +struct SetNtscMode : HotkeyInput { + void pressed() { + utility.setNtscMode(); + } + + SetNtscMode() : HotkeyInput("Set NTSC Mode", "input.userInterface.videoSettings.ntscMode") { + name = "Shift+KB0::N"; + userInterfaceVideoSettings.attach(this); + } +} setNtscMode; + +struct SetPalMode : HotkeyInput { + void pressed() { + utility.setPalMode(); + } + + SetPalMode() : HotkeyInput("Set PAL Mode", "input.userInterface.videoSettings.palMode") { + name = "Shift+KB0::P"; + userInterfaceVideoSettings.attach(this); + } +} setPalMode; + +struct AspectCorrection : HotkeyInput { + void pressed() { + utility.toggleAspectCorrection(); + } + + AspectCorrection() : HotkeyInput("Aspect Correction", "input.userInterface.videoSettings.aspectCorrection") { + name = "Shift+KB0::A"; + userInterfaceVideoSettings.attach(this); + } +} aspectCorrection; + +struct Scale1x : HotkeyInput { + void pressed() { + utility.setScale(1); + } + + Scale1x() : HotkeyInput("Scale 1x", "input.userInterface.videoSettings.scale1x") { + name = "Shift+KB0::Num1"; + userInterfaceVideoSettings.attach(this); + } +} scale1x; + +struct Scale2x : HotkeyInput { + void pressed() { + utility.setScale(2); + } + + Scale2x() : HotkeyInput("Scale 2x", "input.userInterface.videoSettings.scale2x") { + name = "Shift+KB0::Num2"; + userInterfaceVideoSettings.attach(this); + } +} scale2x; + +struct Scale3x : HotkeyInput { + void pressed() { + utility.setScale(3); + } + + Scale3x() : HotkeyInput("Scale 3x", "input.userInterface.videoSettings.scale3x") { + name = "Shift+KB0::Num3"; + userInterfaceVideoSettings.attach(this); + } +} scale3x; + +struct Scale4x : HotkeyInput { + void pressed() { + utility.setScale(4); + } + + Scale4x() : HotkeyInput("Scale 4x", "input.userInterface.videoSettings.scale4x") { + name = "Shift+KB0::Num4"; + userInterfaceVideoSettings.attach(this); + } +} scale4x; + +struct Scale5x : HotkeyInput { + void pressed() { + utility.setScale(5); + } + + Scale5x() : HotkeyInput("Scale 5x", "input.userInterface.videoSettings.scale5x") { + name = "Shift+KB0::Num5"; + userInterfaceVideoSettings.attach(this); + } +} scale5x; + +} diff --git a/libmednahawk/src/snes/src/ui_qt/input/userinterface.hpp b/libmednahawk/src/snes/src/ui_qt/input/userinterface.hpp new file mode 100644 index 0000000000..8f871891f4 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/input/userinterface.hpp @@ -0,0 +1,5 @@ +extern InputGroup userInterfaceGeneral; +extern InputGroup userInterfaceSystem; +extern InputGroup userInterfaceEmulationSpeed; +extern InputGroup userInterfaceStates; +extern InputGroup userInterfaceVideoSettings; diff --git a/libmednahawk/src/snes/src/ui_qt/interface.cpp b/libmednahawk/src/snes/src/ui_qt/interface.cpp new file mode 100644 index 0000000000..b22ff878bd --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/interface.cpp @@ -0,0 +1,54 @@ +Interface interface; + +void Interface::video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height) { + uint32_t *output; + unsigned outwidth, outheight, outpitch; + filter.size(outwidth, outheight, width, height); + + if(video.lock(output, outpitch, outwidth, outheight) == true) { + filter.render(output, outpitch, data, pitch, line, width, height); + video.unlock(); + video.refresh(); + if(saveScreenshot == true) captureScreenshot(output, outpitch, outwidth, outheight); + } + + state.frame(); + #if defined(DEBUGGER) + debugger->frameTick(); + #endif +} + +void Interface::audio_sample(uint16_t left, uint16_t right) { + if(config().audio.mute) left = right = 0; + audio.sample(left, right); +} + +void Interface::input_poll() { + mapper().cache(); +} + +int16_t Interface::input_poll(bool port, unsigned device, unsigned index, unsigned id) { + return mapper().status(port, device, index, id); +} + +void Interface::captureScreenshot(uint32_t *data, unsigned pitch, unsigned width, unsigned height) { + saveScreenshot = false; + QImage image((const unsigned char*)data, width, height, pitch, QImage::Format_RGB32); + + string filename = nall::basename(cartridge.fileName); + time_t systemTime = time(0); + tm *currentTime = localtime(&systemTime); + char t[512]; + sprintf(t, "%.4u%.2u%.2u-%.2u%.2u%.2u", + 1900 + currentTime->tm_year, 1 + currentTime->tm_mon, currentTime->tm_mday, + currentTime->tm_hour, currentTime->tm_min, currentTime->tm_sec + ); + filename << "-" << t << ".png"; + + image.save(filepath(filename, config().path.data)); + utility.showMessage("Screenshot saved."); +} + +Interface::Interface() { + saveScreenshot = false; +} diff --git a/libmednahawk/src/snes/src/ui_qt/interface.hpp b/libmednahawk/src/snes/src/ui_qt/interface.hpp new file mode 100644 index 0000000000..e8779ff439 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/interface.hpp @@ -0,0 +1,13 @@ +class Interface : public SNES::Interface { +public: + void video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height); + void audio_sample(uint16_t left, uint16_t right); + void input_poll(); + int16_t input_poll(bool port, unsigned device, unsigned index, unsigned id); + + Interface(); + void captureScreenshot(uint32_t*, unsigned, unsigned, unsigned); + bool saveScreenshot; +}; + +extern Interface interface; diff --git a/libmednahawk/src/snes/src/ui_qt/link/filter.cpp b/libmednahawk/src/snes/src/ui_qt/link/filter.cpp new file mode 100644 index 0000000000..46b0410e66 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/link/filter.cpp @@ -0,0 +1,255 @@ +//============== +//ScanlineFilter +//============== + +ScanlineFilter scanlineFilter; + +void ScanlineFilter::size(unsigned &width, unsigned &height) { + if(enabled && height <= 240) height *= 2; +} + +void ScanlineFilter::render( + const uint16_t *&input, unsigned &pitch, + const unsigned *&line, unsigned width, unsigned &height +) { + if(enabled && height <= 240) { + pitch >>= 1; + + const uint16_t *sp = input; + uint16_t *dp = buffer; + unsigned *lp = linewidth; + for(unsigned y = 0; y < height; y++) { + for(unsigned x = 0; x < line[y]; x++) { + uint16_t color = *sp++; + *(dp + 0) = color; + *(dp + 512) = adjust[color]; + dp++; + } + + sp += pitch - line[y]; + dp += 1024 - line[y]; + + *lp++ = line[y]; + *lp++ = line[y]; + } + + input = buffer; + pitch = 1024; + line = linewidth; + height *= 2; + } +} + +void ScanlineFilter::setIntensity(unsigned intensity) { + if(intensity >= 100) { + enabled = false; + } else { + enabled = true; + + for(unsigned i = 0; i < 32768; i++) { + unsigned r = (i >> 0) & 31; + unsigned g = (i >> 5) & 31; + unsigned b = (i >> 10) & 31; + + r = (double)r * (double)intensity / 100.0; + g = (double)g * (double)intensity / 100.0; + b = (double)b * (double)intensity / 100.0; + + adjust[i] = (r << 0) + (g << 5) + (b << 10); + } + } +} + +ScanlineFilter::ScanlineFilter() { + enabled = false; + adjust = new uint16_t[32768]; + buffer = new uint16_t[512 * 480]; + setIntensity(50); +} + +ScanlineFilter::~ScanlineFilter() { + delete[] adjust; + delete[] buffer; +} + +//====== +//Filter +//====== + +Filter filter; + +const uint8_t Filter::gamma_ramp_table[32] = { + 0x00, 0x01, 0x03, 0x06, 0x0a, 0x0f, 0x15, 0x1c, + 0x24, 0x2d, 0x37, 0x42, 0x4e, 0x5b, 0x69, 0x78, + 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, + 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, 0xff, +}; + +uint8_t Filter::contrast_adjust(uint8_t input) { + signed result = input - contrast + (2 * contrast * input + 127) / 255; + return max(0, min(255, result)); +} + +uint8_t Filter::brightness_adjust(uint8_t input) { + signed result = input + brightness; + return max(0, min(255, result)); +} + +uint8_t Filter::gamma_adjust(uint8_t input) { + signed result = (signed)(pow(((double)input / 255.0), (double)gamma / 100.0) * 255.0 + 0.5); + return max(0, min(255, result)); +} + +void Filter::colortable_update() { + double kr = 0.2126, kb = 0.0722, kg = (1.0 - kr - kb); //luminance weights + + for(unsigned i = 0; i < 32768; i++) { + unsigned color //bgr555->rgb888 conversion + = ((i & 0x001f) << 19) | ((i & 0x001c) << 14) + | ((i & 0x03e0) << 6) | ((i & 0x0380) << 1) + | ((i & 0x7c00) >> 7) | ((i & 0x7000) >> 12); + + signed l; + signed r = (color >> 16) & 0xff; + signed g = (color >> 8) & 0xff; + signed b = (color ) & 0xff; + + if(gamma_ramp == true) { + r = gamma_ramp_table[r >> 3]; + g = gamma_ramp_table[g >> 3]; + b = gamma_ramp_table[b >> 3]; + } + + if(contrast != 0) { + r = contrast_adjust(r); + g = contrast_adjust(g); + b = contrast_adjust(b); + } + + if(brightness != 0) { + r = brightness_adjust(r); + g = brightness_adjust(g); + b = brightness_adjust(b); + } + + if(gamma != 100) { + r = gamma_adjust(r); + g = gamma_adjust(g); + b = gamma_adjust(b); + } + + if(sepia == true) { + l = (signed)((double)r * kr + (double)g * kg + (double)b * kb); + l = max(0, min(255, l)); + + r = (signed)((double)l * (1.0 + 0.300)); + g = (signed)((double)l * (1.0 - 0.055)); + b = (signed)((double)l * (1.0 - 0.225)); + + r = max(0, min(255, r)); + g = max(0, min(255, g)); + b = max(0, min(255, b)); + } + + if(grayscale == true) { + l = (signed)((double)r * kr + (double)g * kg + (double)b * kb); + l = max(0, min(255, l)); + r = g = b = l; + } + + if(invert == true) { + r ^= 0xff; + g ^= 0xff; + b ^= 0xff; + } + + colortable[i] = (r << 16) | (g << 8) | (b); + } +} + +void Filter::size(unsigned &outwidth, unsigned &outheight, unsigned width, unsigned height) { + scanlineFilter.size(width, height); + + if(opened() && renderer > 0) { + return dl_size(renderer, outwidth, outheight, width, height); + } + + outwidth = width; + outheight = height; +} + +void Filter::render( + uint32_t *output, unsigned outpitch, + const uint16_t *input, unsigned pitch, + const unsigned *line, unsigned width, unsigned height +) { + scanlineFilter.render(input, pitch, line, width, height); + + if(opened() && renderer > 0) { + return dl_render(renderer, output, outpitch, input, pitch, line, width, height); + } + + pitch >>= 1; + outpitch >>= 2; + + for(unsigned y = 0; y < height; y++) { + if(width == 512 && line[y] == 256) { + for(unsigned x = 0; x < 256; x++) { + uint16_t p = *input++; + *output++ = colortable[p]; + *output++ = colortable[p]; + } + input += 256; + } else { + for(unsigned x = 0; x < width; x++) { + uint16_t p = *input++; + *output++ = colortable[p]; + } + } + input += pitch - width; + output += outpitch - width; + } +} + +QWidget* Filter::settings() { + if(opened() && renderer > 0) { + return dl_settings(renderer); + } else { + return 0; + } +} + +Filter::Filter() { + renderer = 0; + + contrast = 0; + brightness = 0; + gamma = 100; + + gamma_ramp = false; + sepia = false; + grayscale = false; + invert = false; + + colortable = new uint32_t[32768]; + colortable_update(); + + if(open("snesfilter")) { + dl_supported = sym("snesfilter_supported"); + dl_colortable = sym("snesfilter_colortable"); + dl_configuration = sym("snesfilter_configuration"); + dl_size = sym("snesfilter_size"); + dl_render = sym("snesfilter_render"); + dl_settings = sym("snesfilter_settings"); + + dl_colortable(colortable); + dl_configuration(config()); + } else { + config().video.windowed.swFilter = 0; + config().video.fullscreen.swFilter = 0; + } +} + +Filter::~Filter() { + delete[] colortable; +} diff --git a/libmednahawk/src/snes/src/ui_qt/link/filter.hpp b/libmednahawk/src/snes/src/ui_qt/link/filter.hpp new file mode 100644 index 0000000000..94e5ded3ae --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/link/filter.hpp @@ -0,0 +1,55 @@ +class ScanlineFilter { +public: + bool enabled; + + void size(unsigned&, unsigned&); + void render(const uint16_t*&, unsigned&, const unsigned*&, unsigned, unsigned&); + void setIntensity(unsigned); + + ScanlineFilter(); + ~ScanlineFilter(); + +private: + uint16_t *adjust; + uint16_t *buffer; + unsigned linewidth[480]; +}; + +class Filter : public library { +public: + function dl_supported; + function dl_colortable; + function dl_configuration; + function dl_size; + function dl_render; + function dl_settings; + + unsigned renderer; + uint32_t *colortable; + + signed contrast; + signed brightness; + signed gamma; + + bool gamma_ramp; + bool sepia; + bool grayscale; + bool invert; + + void colortable_update(); + void size(unsigned&, unsigned&, unsigned, unsigned); + void render(uint32_t*, unsigned, const uint16_t*, unsigned, const unsigned*, unsigned, unsigned); + QWidget* settings(); + + Filter(); + ~Filter(); + +private: + static const uint8_t gamma_ramp_table[32]; + uint8_t contrast_adjust(uint8_t input); + uint8_t brightness_adjust(uint8_t input); + uint8_t gamma_adjust(uint8_t input); +}; + +extern ScanlineFilter scanlineFilter; +extern Filter filter; diff --git a/libmednahawk/src/snes/src/ui_qt/link/reader.cpp b/libmednahawk/src/snes/src/ui_qt/link/reader.cpp new file mode 100644 index 0000000000..cdea22cee1 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/link/reader.cpp @@ -0,0 +1,44 @@ +Reader reader; + +const char* Reader::direct_supported() { + return ""; +} + +bool Reader::direct_load(string &filename, uint8_t *&data, unsigned &size) { + if(file::exists(filename) == false) return false; + + file fp; + if(fp.open(filename, file::mode_read) == false) return false; + + data = new uint8_t[size = fp.size()]; + fp.read(data, size); + fp.close(); + + //remove copier header, if it exists + if((size & 0x7fff) == 512) memmove(data, data + 512, size -= 512); + + return true; +} + +Reader::Reader() { + if(open("snesreader")) { + supported = sym("snesreader_supported"); + load = sym("snesreader_load"); + } + + if(!supported || !load) { + supported = bind(&Reader::direct_supported, this); + load = bind(&Reader::direct_load, this); + } + + compressionList = supported(); + if(compressionList.length() > 0) compressionList = string() << " " << compressionList; + + if(opened()) { + extensionList = string() + << " *.smc *.swc *.fig" + << " *.ufo *.gd3 *.gd7 *.dx2 *.mgd *.mgh" + << " *.048 *.058 *.068 *.078 *.bin" + << " *.usa *.eur *.jap *.aus *.bsx"; + } +} diff --git a/libmednahawk/src/snes/src/ui_qt/link/reader.hpp b/libmednahawk/src/snes/src/ui_qt/link/reader.hpp new file mode 100644 index 0000000000..1218cc2de1 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/link/reader.hpp @@ -0,0 +1,15 @@ +class Reader : public library { +public: + string compressionList; + string extensionList; + + function supported; + function load; + + const char* direct_supported(); + bool direct_load(string&, uint8_t*&, unsigned&); + + Reader(); +}; + +extern Reader reader; diff --git a/libmednahawk/src/snes/src/ui_qt/main.cpp b/libmednahawk/src/snes/src/ui_qt/main.cpp new file mode 100644 index 0000000000..e200039a38 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/main.cpp @@ -0,0 +1,39 @@ +#include "ui-base.hpp" +#include "resource.rcc" + +#if defined(PLATFORM_X) + #include "platform/platform_x.cpp" + const char Style::Monospace[64] = "Monospace"; +#elif defined(PLATFORM_OSX) + #include "platform/platform_osx.cpp" + const char Style::Monospace[64] = "Courier New"; +#elif defined(PLATFORM_WIN) + #include "platform/platform_win.cpp" + const char Style::Monospace[64] = "Lucida Console"; +#else + #error "unsupported platform" +#endif + +#include "config.cpp" +#include "interface.cpp" + +const char defaultStylesheet[] = + "#backdrop {" + " background: #000000;" + "}\n"; + +#include "application/application.cpp" +#include "link/filter.cpp" +#include "link/reader.cpp" +#include "utility/utility.cpp" + +//override filename's path with filepath, but only if filepath isn't empty +//used for GUI's "path selection" functionality +string filepath(const char *filename, const char *filepath) { + if(!filepath || !*filepath) return filename; + return string() << dir(filepath) << notdir(filename); +} + +int main(int argc, char **argv) { + return application.main(argc, argv); +} diff --git a/libmednahawk/src/snes/src/ui_qt/movie/movie.cpp b/libmednahawk/src/snes/src/ui_qt/movie/movie.cpp new file mode 100644 index 0000000000..d656e9167a --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/movie/movie.cpp @@ -0,0 +1,109 @@ +#include "../ui-base.hpp" + +Movie movie; + +void Movie::chooseFile() { + diskBrowser->chooseFile( + bind(&Movie::play, this), + config().path.current.movie, + "Select Movie" + ); +} + +void Movie::play(string filename) { + if(Movie::state != Inactive) stop(); + + if(fp.open(filename, file::mode_read)) { + if(fp.size() < 32) goto corrupt; + + unsigned signature = fp.readm(4); + if(signature != 0x42535631) goto corrupt; + + unsigned version = fp.readl(4); + if(version != bsnesSerializerVersion) goto corrupt; + + unsigned crc32 = fp.readl(4); + if(crc32 != SNES::cartridge.crc32()) goto corrupt; + + unsigned size = fp.readl(4); + uint8_t *data = new uint8_t[size]; + fp.read(data, size); + serializer state(data, size); + SNES::system.unserialize(state); + + Movie::state = Playback; + mainWindow->syncUi(); + utility.showMessage("Playback started."); + + return; + } + +corrupt: + fp.close(); + utility.showMessage("Movie file is invalid, playback cancelled."); +} + +void Movie::record() { + if(Movie::state != Inactive) { + utility.showMessage("Movie mode already active, recording cancelled."); + } else { + SNES::system.runtosave(); + serializer state = SNES::system.serialize(); + + utility.showMessage("Recording started."); + + Movie::state = Record; + mainWindow->syncUi(); + fp.open(makeFilename(), file::mode_write); + fp.writem(0x42535631, 4); + fp.writel(bsnesSerializerVersion, 4); + fp.writel(SNES::cartridge.crc32(), 4); + fp.writel(state.size(), 4); + fp.write(state.data(), state.size()); + } +} + +void Movie::stop() { + if(Movie::state != Inactive) { + Movie::state = Inactive; + mainWindow->syncUi(); + fp.close(); + utility.showMessage("Recording / playback stopped."); + } +} + +string Movie::makeFilename() const { + string filename = nall::basename(cartridge.fileName); + + time_t systemTime = time(0); + tm *currentTime = localtime(&systemTime); + char t[512]; + sprintf(t, "%.4u%.2u%.2u-%.2u%.2u%.2u", + 1900 + currentTime->tm_year, 1 + currentTime->tm_mon, currentTime->tm_mday, + currentTime->tm_hour, currentTime->tm_min, currentTime->tm_sec + ); + filename << "-" << t << ".bsv"; + + return filepath(filename, config().path.data); +} + +int16_t Movie::read() { + int16_t result = fp.readl(2); + + if(fp.end()) { + Movie::state = Inactive; + mainWindow->syncUi(); + fp.close(); + utility.showMessage("Playback finished."); + } + + return result; +} + +void Movie::write(int16_t value) { + fp.writel(value, 2); +} + +Movie::Movie() { + state = Inactive; +} diff --git a/libmednahawk/src/snes/src/ui_qt/movie/movie.hpp b/libmednahawk/src/snes/src/ui_qt/movie/movie.hpp new file mode 100644 index 0000000000..22ef2b0238 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/movie/movie.hpp @@ -0,0 +1,20 @@ +class Movie { +public: + enum State { Inactive, Playback, Record } state; + + void chooseFile(); + void play(string filename); + void record(); + void stop(); + + Movie(); + +//private: + file fp; + + string makeFilename() const; + int16_t read(); + void write(int16_t value); +}; + +extern Movie movie; diff --git a/libmednahawk/src/snes/src/ui_qt/platform/platform_osx.cpp b/libmednahawk/src/snes/src/ui_qt/platform/platform_osx.cpp new file mode 100644 index 0000000000..522a1a7d84 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/platform/platform_osx.cpp @@ -0,0 +1,17 @@ +char* userpath(char *path) { + *path = 0; + struct passwd *userinfo = getpwuid(getuid()); + if(userinfo) strcpy(path, userinfo->pw_dir); + return path; +} + +char *getcwd(char *path) { + return getcwd(path, PATH_MAX); +} + +void initargs(int &argc, char **&argv) { +} + +void supressScreenSaver() { +} + diff --git a/libmednahawk/src/snes/src/ui_qt/platform/platform_win.cpp b/libmednahawk/src/snes/src/ui_qt/platform/platform_win.cpp new file mode 100644 index 0000000000..7499b48e6d --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/platform/platform_win.cpp @@ -0,0 +1,57 @@ +#include + +char* realpath(const char *filename, char *resolvedname) { + wchar_t fn[_MAX_PATH] = L""; + _wfullpath(fn, nall::utf16_t(filename), _MAX_PATH); + strcpy(resolvedname, nall::utf8_t(fn)); + return resolvedname; +} + +char* userpath(char *path) { + wchar_t fp[_MAX_PATH] = L""; + SHGetFolderPathW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, 0, 0, fp); + strcpy(path, nall::utf8_t(fp)); + return path; +} + +char* getcwd(char *path) { + wchar_t fp[_MAX_PATH] = L""; + _wgetcwd(fp, _MAX_PATH); + strcpy(path, nall::utf8_t(fp)); + return path; +} + +int mkdir(const char *path) { + return _wmkdir(nall::utf16_t(path)); +} + +void initargs(int &argc, char **&argv) { + wchar_t **wargv = CommandLineToArgvW(GetCommandLineW(), &argc); + argv = new char*[argc]; + for(unsigned i = 0; i < argc; i++) { + argv[i] = new char[_MAX_PATH]; + strcpy(argv[i], nall::utf8_t(wargv[i])); + } +} + +bool Application::App::winEventFilter(MSG *msg, long *result) { + //supress screen saver from activating during gameplay + if(msg->message == WM_SYSCOMMAND) { + if(msg->wParam == SC_SCREENSAVE || msg->wParam == SC_MONITORPOWER) { + *result = 0; + return true; + } + } + + //prevent DirectSound audio buffer from looping during Windows modal events + if(msg->message == WM_ENTERMENULOOP || msg->message == WM_ENTERSIZEMOVE) { + audio.clear(); + } + + return false; +} + +void supressScreenSaver() { + //handled by event filter above +} + diff --git a/libmednahawk/src/snes/src/ui_qt/platform/platform_x.cpp b/libmednahawk/src/snes/src/ui_qt/platform/platform_x.cpp new file mode 100644 index 0000000000..c53e2d3357 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/platform/platform_x.cpp @@ -0,0 +1,47 @@ +#define None XNone +#define Window XWindow +#include +#undef None +#undef Window + +struct LibXtst : public library { + function XTestFakeKeyEvent; + + LibXtst() { + if(open("Xtst")) { + XTestFakeKeyEvent = sym("XTestFakeKeyEvent"); + } + } +} libXtst; + +char* userpath(char *path) { + *path = 0; + struct passwd *userinfo = getpwuid(getuid()); + if(userinfo) strcpy(path, userinfo->pw_dir); + return path; +} + +char *getcwd(char *path) { + return getcwd(path, PATH_MAX); +} + +void initargs(int &argc, char **&argv) { +} + +void supressScreenSaver() { + if(!libXtst.XTestFakeKeyEvent) return; + + //XSetScreenSaver(timeout = 0) does not work + //XResetScreenSaver() does not work + //XScreenSaverSuspend() does not work + //DPMSDisable() does not work + //XSendEvent(KeyPressMask) does not work + //use XTest extension to send fake keypress every ~20 seconds. + //keycode of 255 does not map to any actual key, + //but it will block screensaver and power management. + Display *display = XOpenDisplay(0); + libXtst.XTestFakeKeyEvent(display, 255, True, 0); + libXtst.XTestFakeKeyEvent(display, 255, False, 0); + XCloseDisplay(display); +} + diff --git a/libmednahawk/src/snes/src/ui_qt/resource/resource.qrc b/libmednahawk/src/snes/src/ui_qt/resource/resource.qrc new file mode 100644 index 0000000000..4ff930b997 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/resource/resource.qrc @@ -0,0 +1,37 @@ + + + + ../../data/bsnes.png + ../../data/logo.png + ../../data/documentation.html + ../../data/license.html + + ../../data/icons-16x16/item-check-on.png + ../../data/icons-16x16/item-check-off.png + ../../data/icons-16x16/item-radio-on.png + ../../data/icons-16x16/item-radio-off.png + + ../../data/icons-16x16/accessories-text-editor.png + ../../data/icons-16x16/applications-multimedia.png + ../../data/icons-16x16/appointment-new.png + ../../data/icons-16x16/audio-volume-high.png + ../../data/icons-16x16/document-open.png + ../../data/icons-16x16/folder.png + ../../data/icons-16x16/folder-new.png + ../../data/icons-16x16/help-browser.png + ../../data/icons-16x16/image-x-generic.png + ../../data/icons-16x16/input-gaming.png + ../../data/icons-16x16/media-playback-start.png + ../../data/icons-16x16/media-playback-stop.png + ../../data/icons-16x16/media-record.png + ../../data/icons-16x16/preferences-desktop.png + ../../data/icons-16x16/preferences-system.png + ../../data/icons-16x16/process-stop.png + ../../data/icons-16x16/system-file-manager.png + ../../data/icons-16x16/system-search.png + ../../data/icons-16x16/text-x-generic.png + ../../data/icons-16x16/utilities-terminal.png + ../../data/icons-16x16/video-display.png + ../../data/icons-16x16/view-refresh.png + + diff --git a/libmednahawk/src/snes/src/ui_qt/resource/resource.rc b/libmednahawk/src/snes/src/ui_qt/resource/resource.rc new file mode 100644 index 0000000000..9eea7cc18d --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/resource/resource.rc @@ -0,0 +1,2 @@ +1 24 "data/bsnes.Manifest" +IDI_ICON1 ICON DISCARDABLE "data/bsnes.ico" diff --git a/libmednahawk/src/snes/src/ui_qt/settings/advanced.cpp b/libmednahawk/src/snes/src/ui_qt/settings/advanced.cpp new file mode 100644 index 0000000000..15f1110580 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/advanced.cpp @@ -0,0 +1,192 @@ +#include "advanced.moc" +AdvancedSettingsWindow *advancedSettingsWindow; + +AdvancedSettingsWindow::AdvancedSettingsWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(0); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + driverLayout = new QGridLayout; + driverLayout->setHorizontalSpacing(Style::WidgetSpacing); + layout->addLayout(driverLayout); + layout->addSpacing(Style::WidgetSpacing); + + videoLabel = new QLabel("Video driver:"); + driverLayout->addWidget(videoLabel, 0, 0); + + audioLabel = new QLabel("Audio driver:"); + driverLayout->addWidget(audioLabel, 0, 1); + + inputLabel = new QLabel("Input driver:"); + driverLayout->addWidget(inputLabel, 0, 2); + + videoDriver = new QComboBox; + driverLayout->addWidget(videoDriver, 1, 0); + + audioDriver = new QComboBox; + driverLayout->addWidget(audioDriver, 1, 1); + + inputDriver = new QComboBox; + driverLayout->addWidget(inputDriver, 1, 2); + + driverInfo = new QLabel("Note: driver changes require restart to take effect."); + driverInfo->setStyleSheet("margin-left: -3px; margin-top: 5px;"); + driverLayout->addWidget(driverInfo, 2, 0, 1, 3); + + regionTitle = new QLabel("Hardware region:"); + layout->addWidget(regionTitle); + + regionLayout = new QHBoxLayout; + regionLayout->setSpacing(Style::WidgetSpacing); + layout->addLayout(regionLayout); + layout->addSpacing(Style::WidgetSpacing); + + regionGroup = new QButtonGroup(this); + + regionAuto = new QRadioButton("Auto-detect"); + regionAuto->setToolTip("Automatically select hardware region on cartridge load"); + regionGroup->addButton(regionAuto); + regionLayout->addWidget(regionAuto); + + regionNTSC = new QRadioButton("NTSC"); + regionNTSC->setToolTip("Force NTSC region (Japan, Korea, US)"); + regionGroup->addButton(regionNTSC); + regionLayout->addWidget(regionNTSC); + + regionPAL = new QRadioButton("PAL"); + regionPAL->setToolTip("Force PAL region (Europe, ...)"); + regionGroup->addButton(regionPAL); + regionLayout->addWidget(regionPAL); + + portTitle = new QLabel("Expansion port device:"); + layout->addWidget(portTitle); + + portLayout = new QHBoxLayout; + portLayout->setSpacing(Style::WidgetSpacing); + layout->addLayout(portLayout); + layout->addSpacing(Style::WidgetSpacing); + + portGroup = new QButtonGroup(this); + + portSatellaview = new QRadioButton("Satellaview"); + portGroup->addButton(portSatellaview); + portLayout->addWidget(portSatellaview); + + portNone = new QRadioButton("None"); + portGroup->addButton(portNone); + portLayout->addWidget(portNone); + + portSpacer = new QWidget; + portLayout->addWidget(portSpacer); + + focusTitle = new QLabel("When main window does not have focus:"); + layout->addWidget(focusTitle); + + focusLayout = new QHBoxLayout; + focusLayout->setSpacing(Style::WidgetSpacing); + layout->addLayout(focusLayout); + layout->addSpacing(Style::WidgetSpacing); + + focusButtonGroup = new QButtonGroup(this); + + focusPause = new QRadioButton("Pause emulation"); + focusPause->setToolTip("Ideal for prolonged multi-tasking"); + focusButtonGroup->addButton(focusPause); + focusLayout->addWidget(focusPause); + + focusIgnore = new QRadioButton("Ignore input"); + focusIgnore->setToolTip("Ideal for light multi-tasking when using keyboard"); + focusButtonGroup->addButton(focusIgnore); + focusLayout->addWidget(focusIgnore); + + focusAllow = new QRadioButton("Allow input"); + focusAllow->setToolTip("Ideal for light multi-tasking when using joypad(s)"); + focusButtonGroup->addButton(focusAllow); + focusLayout->addWidget(focusAllow); + + rewindTitle = new QLabel("Rewind support:"); + layout->addWidget(rewindTitle); + + rewindEnable = new QCheckBox("Enable"); + layout->addWidget(rewindEnable); + + initializeUi(); + + connect(videoDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(videoDriverChange(int))); + connect(audioDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(audioDriverChange(int))); + connect(inputDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(inputDriverChange(int))); + connect(regionAuto, SIGNAL(pressed()), this, SLOT(setRegionAuto())); + connect(regionNTSC, SIGNAL(pressed()), this, SLOT(setRegionNTSC())); + connect(regionPAL, SIGNAL(pressed()), this, SLOT(setRegionPAL())); + connect(portSatellaview, SIGNAL(pressed()), this, SLOT(setPortSatellaview())); + connect(portNone, SIGNAL(pressed()), this, SLOT(setPortNone())); + connect(focusPause, SIGNAL(pressed()), this, SLOT(pauseWithoutFocus())); + connect(focusIgnore, SIGNAL(pressed()), this, SLOT(ignoreInputWithoutFocus())); + connect(focusAllow, SIGNAL(pressed()), this, SLOT(allowInputWithoutFocus())); + connect(rewindEnable, SIGNAL(stateChanged(int)), this, SLOT(toggleRewindEnable())); +} + +void AdvancedSettingsWindow::initializeUi() { + lstring part; + + part.split(";", video.driver_list()); + for(unsigned i = 0; i < part.size(); i++) { + videoDriver->addItem(part[i]); + if(part[i] == config().system.video) videoDriver->setCurrentIndex(i); + } + + part.split(";", audio.driver_list()); + for(unsigned i = 0; i < part.size(); i++) { + audioDriver->addItem(part[i]); + if(part[i] == config().system.audio) audioDriver->setCurrentIndex(i); + } + + part.split(";", input.driver_list()); + for(unsigned i = 0; i < part.size(); i++) { + inputDriver->addItem(part[i]); + if(part[i] == config().system.input) inputDriver->setCurrentIndex(i); + } + + regionAuto->setChecked(SNES::config.region == SNES::System::Autodetect); + regionNTSC->setChecked(SNES::config.region == SNES::System::NTSC); + regionPAL->setChecked (SNES::config.region == SNES::System::PAL); + + portSatellaview->setChecked(SNES::config.expansion_port == SNES::System::ExpansionBSX); + portNone->setChecked (SNES::config.expansion_port == SNES::System::ExpansionNone); + + focusPause->setChecked (config().input.focusPolicy == Configuration::Input::FocusPolicyPauseEmulation); + focusIgnore->setChecked(config().input.focusPolicy == Configuration::Input::FocusPolicyIgnoreInput); + focusAllow->setChecked (config().input.focusPolicy == Configuration::Input::FocusPolicyAllowInput); + + rewindEnable->setChecked(config().system.rewindEnabled); +} + +void AdvancedSettingsWindow::videoDriverChange(int index) { + if(index >= 0) config().system.video = videoDriver->itemText(index).toUtf8().data(); +} + +void AdvancedSettingsWindow::audioDriverChange(int index) { + if(index >= 0) config().system.audio = audioDriver->itemText(index).toUtf8().data(); +} + +void AdvancedSettingsWindow::inputDriverChange(int index) { + if(index >= 0) config().system.input = inputDriver->itemText(index).toUtf8().data(); +} + +void AdvancedSettingsWindow::setRegionAuto() { SNES::config.region = SNES::System::Autodetect; } +void AdvancedSettingsWindow::setRegionNTSC() { SNES::config.region = SNES::System::NTSC; } +void AdvancedSettingsWindow::setRegionPAL() { SNES::config.region = SNES::System::PAL; } + +void AdvancedSettingsWindow::setPortSatellaview() { SNES::config.expansion_port = SNES::System::ExpansionBSX; } +void AdvancedSettingsWindow::setPortNone() { SNES::config.expansion_port = SNES::System::ExpansionNone; } + +void AdvancedSettingsWindow::pauseWithoutFocus() { config().input.focusPolicy = Configuration::Input::FocusPolicyPauseEmulation; } +void AdvancedSettingsWindow::ignoreInputWithoutFocus() { config().input.focusPolicy = Configuration::Input::FocusPolicyIgnoreInput; } +void AdvancedSettingsWindow::allowInputWithoutFocus() { config().input.focusPolicy = Configuration::Input::FocusPolicyAllowInput; } + +void AdvancedSettingsWindow::toggleRewindEnable() { + config().system.rewindEnabled = rewindEnable->isChecked(); + state.resetHistory(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/advanced.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/advanced.moc.hpp new file mode 100644 index 0000000000..8a02d80bf9 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/advanced.moc.hpp @@ -0,0 +1,58 @@ +class AdvancedSettingsWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + + QGridLayout *driverLayout; + QLabel *videoLabel; + QLabel *audioLabel; + QLabel *inputLabel; + QComboBox *videoDriver; + QComboBox *audioDriver; + QComboBox *inputDriver; + QLabel *driverInfo; + + QLabel *regionTitle; + QHBoxLayout *regionLayout; + QButtonGroup *regionGroup; + QRadioButton *regionAuto; + QRadioButton *regionNTSC; + QRadioButton *regionPAL; + + QLabel *portTitle; + QHBoxLayout *portLayout; + QButtonGroup *portGroup; + QRadioButton *portSatellaview; + QRadioButton *portNone; + QWidget *portSpacer; + + QLabel *focusTitle; + QHBoxLayout *focusLayout; + QButtonGroup *focusButtonGroup; + QRadioButton *focusPause; + QRadioButton *focusIgnore; + QRadioButton *focusAllow; + + QLabel *rewindTitle; + QCheckBox *rewindEnable; + + void initializeUi(); + AdvancedSettingsWindow(); + +public slots: + void videoDriverChange(int index); + void audioDriverChange(int index); + void inputDriverChange(int index); + void setRegionAuto(); + void setRegionNTSC(); + void setRegionPAL(); + void setPortSatellaview(); + void setPortNone(); + void pauseWithoutFocus(); + void ignoreInputWithoutFocus(); + void allowInputWithoutFocus(); + void toggleRewindEnable(); +}; + +extern AdvancedSettingsWindow *advancedSettingsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/settings/audio.cpp b/libmednahawk/src/snes/src/ui_qt/settings/audio.cpp new file mode 100644 index 0000000000..f49fca4c8c --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/audio.cpp @@ -0,0 +1,130 @@ +#include "audio.moc" +AudioSettingsWindow *audioSettingsWindow; + +AudioSettingsWindow::AudioSettingsWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + boxes = new QHBoxLayout; + layout->addLayout(boxes); + + frequencyLabel = new QLabel("Frequency:"); + frequencyLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + boxes->addWidget(frequencyLabel); + + frequency = new QComboBox; + frequency->addItem("32000hz"); + frequency->addItem("44100hz"); + frequency->addItem("48000hz"); + frequency->addItem("96000hz"); + boxes->addWidget(frequency); + + latencyLabel = new QLabel("Latency:"); + latencyLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + boxes->addWidget(latencyLabel); + + latency = new QComboBox; + latency->addItem("20ms"); + latency->addItem("40ms"); + latency->addItem("60ms"); + latency->addItem("80ms"); + latency->addItem("100ms"); + latency->addItem("120ms"); + boxes->addWidget(latency); + + sliders = new QGridLayout; + layout->addLayout(sliders); + + volumeLabel = new QLabel("Volume:"); + volumeLabel->setToolTip("Warning: any volume other than 100% will result in a slight audio quality loss"); + sliders->addWidget(volumeLabel, 0, 0); + + volumeValue = new QLabel; + volumeValue->setAlignment(Qt::AlignHCenter); + volumeValue->setMinimumWidth(volumeValue->fontMetrics().width("262144hz")); + sliders->addWidget(volumeValue, 0, 1); + + volume = new QSlider(Qt::Horizontal); + volume->setMinimum(0); + volume->setMaximum(200); + sliders->addWidget(volume, 0, 2); + + frequencySkewLabel = new QLabel("Input frequency:"); + frequencySkewLabel->setToolTip( + "Adjusts audio resampling rate.\n" + "When both video sync and audio sync are enabled, use this setting to fine-tune the output.\n" + "Lower the input frequency to clean audio output, eliminating crackling / popping.\n" + "Raise the input frequency to smooth video output, eliminating duplicated frames." + ); + sliders->addWidget(frequencySkewLabel, 1, 0); + + frequencySkewValue = new QLabel; + frequencySkewValue->setAlignment(Qt::AlignHCenter); + sliders->addWidget(frequencySkewValue, 1, 1); + + frequencySkew = new QSlider(Qt::Horizontal); + frequencySkew->setMinimum(31500); + frequencySkew->setMaximum(32500); + sliders->addWidget(frequencySkew, 1, 2); + + connect(frequency, SIGNAL(currentIndexChanged(int)), this, SLOT(frequencyChange(int))); + connect(latency, SIGNAL(currentIndexChanged(int)), this, SLOT(latencyChange(int))); + connect(volume, SIGNAL(valueChanged(int)), this, SLOT(volumeAdjust(int))); + connect(frequencySkew, SIGNAL(valueChanged(int)), this, SLOT(frequencySkewAdjust(int))); + + syncUi(); +} + +void AudioSettingsWindow::syncUi() { + int n; + + n = config().audio.outputFrequency; + if(n <= 32000) frequency->setCurrentIndex(0); + else if(n <= 44100) frequency->setCurrentIndex(1); + else if(n <= 48000) frequency->setCurrentIndex(2); + else if(n <= 96000) frequency->setCurrentIndex(3); + else frequency->setCurrentIndex(0); + + n = config().audio.latency; + latency->setCurrentIndex((n - 20) / 20); + + n = config().audio.volume; + volumeValue->setText(string() << n << "%"); + volume->setSliderPosition(n); + + n = config().audio.inputFrequency; + frequencySkewValue->setText(string() << n << "hz"); + frequencySkew->setSliderPosition(n); +} + +void AudioSettingsWindow::frequencyChange(int value) { + switch(value) { default: + case 0: config().audio.outputFrequency = 32000; break; + case 1: config().audio.outputFrequency = 44100; break; + case 2: config().audio.outputFrequency = 48000; break; + case 3: config().audio.outputFrequency = 96000; break; + } + audio.set(Audio::Frequency, config().audio.outputFrequency); + utility.updateEmulationSpeed(); +} + +void AudioSettingsWindow::latencyChange(int value) { + value = max(0, min(5, value)); + config().audio.latency = 20 + value * 20; + audio.set(Audio::Latency, config().audio.latency); +} + +void AudioSettingsWindow::volumeAdjust(int value) { + config().audio.volume = value; + audio.set(Audio::Volume, config().audio.volume); + syncUi(); +} + +void AudioSettingsWindow::frequencySkewAdjust(int value) { + config().audio.inputFrequency = value; + utility.updateEmulationSpeed(); + syncUi(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/audio.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/audio.moc.hpp new file mode 100644 index 0000000000..7eb958025e --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/audio.moc.hpp @@ -0,0 +1,29 @@ +class AudioSettingsWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QHBoxLayout *boxes; + QLabel *frequencyLabel; + QComboBox *frequency; + QLabel *latencyLabel; + QComboBox *latency; + QGridLayout *sliders; + QLabel *volumeLabel; + QLabel *volumeValue; + QSlider *volume; + QLabel *frequencySkewLabel; + QLabel *frequencySkewValue; + QSlider *frequencySkew; + + void syncUi(); + AudioSettingsWindow(); + +public slots: + void frequencyChange(int value); + void latencyChange(int value); + void volumeAdjust(int value); + void frequencySkewAdjust(int value); +}; + +extern AudioSettingsWindow *audioSettingsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/settings/input.cpp b/libmednahawk/src/snes/src/ui_qt/settings/input.cpp new file mode 100644 index 0000000000..023d6cb8fd --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/input.cpp @@ -0,0 +1,253 @@ +#include "input.moc" +InputSettingsWindow *inputSettingsWindow; + +InputSettingsWindow::InputSettingsWindow() { + activeInput = 0; + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + list = new QTreeWidget; + list->setColumnCount(2); + list->setAllColumnsShowFocus(true); + list->setSortingEnabled(false); + list->header()->hide(); + list->header()->setResizeMode(QHeaderView::ResizeToContents); + layout->addWidget(list); + + controlLayout = new QHBoxLayout; + layout->addLayout(controlLayout); + + message = new QLabel; + message->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + controlLayout->addWidget(message); + + optionButton = new QPushButton("Options"); + controlLayout->addWidget(optionButton); + + optionMenu = new QMenu; + optionButton->setMenu(optionMenu); + + optionAssignModifiers = new QbCheckAction("Assign Modifiers as Keys", 0); + optionMenu->addAction(optionAssignModifiers); + + assignButton = new QPushButton("Assign"); + controlLayout->addWidget(assignButton); + + unassignButton = new QPushButton("Unassign"); + controlLayout->addWidget(unassignButton); + + connect(list, SIGNAL(itemSelectionChanged()), this, SLOT(synchronize())); + connect(list, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(assign())); + connect(assignButton, SIGNAL(released()), this, SLOT(assign())); + connect(unassignButton, SIGNAL(released()), this, SLOT(unassign())); + + connect(optionAssignModifiers, SIGNAL(triggered()), this, SLOT(toggleAssignModifiers())); + + //initialize list + + port1 = new QTreeWidgetItem(list); + port1->setData(0, Qt::UserRole, QVariant(-1)); + port1->setText(0, "Controller Port 1"); + + port2 = new QTreeWidgetItem(list); + port2->setData(0, Qt::UserRole, QVariant(-1)); + port2->setText(0, "Controller Port 2"); + + userInterface = new QTreeWidgetItem(list); + userInterface->setData(0, Qt::UserRole, QVariant(-1)); + userInterface->setText(0, "User Interface"); + + for(unsigned i = 0; i < mapper().size(); i++) { + InputGroup &group = *(mapper()[i]); + + QTreeWidgetItem *grandparent = 0; + if(group.category == InputCategory::Port1) { grandparent = port1; } + if(group.category == InputCategory::Port2) { grandparent = port2; } + if(group.category == InputCategory::UserInterface) { grandparent = userInterface; } + if(!grandparent) continue; + + QTreeWidgetItem *parent = new QTreeWidgetItem(grandparent); + parent->setData(0, Qt::UserRole, QVariant(-1)); + parent->setText(0, group.label); + + for(unsigned i = 0; i < group.size(); i++) { + QTreeWidgetItem *child = new QTreeWidgetItem(parent); + child->setData(0, Qt::UserRole, QVariant(inputTable.size())); + inputTable.add(group[i]); + } + } + + updateList(); + synchronize(); +} + +void InputSettingsWindow::synchronize() { + bool enable = false; + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + signed index = item->data(0, Qt::UserRole).toInt(); + enable = (index != -1); + } + assignButton->setEnabled(enable); + unassignButton->setEnabled(enable); +} + +void InputSettingsWindow::updateList() { + QList all = list->findItems("", Qt::MatchContains); + for(unsigned i = 0; i < all.size(); i++) { + QTreeWidgetItem *grandparent = all[i]; + for(unsigned j = 0; j < grandparent->childCount(); j++) { + QTreeWidgetItem *parent = grandparent->child(j); + for(unsigned k = 0; k < parent->childCount(); k++) { + QTreeWidgetItem *child = parent->child(k); + signed index = child->data(0, Qt::UserRole).toInt(); + if(index == -1) continue; + MappedInput *input = inputTable[index]; + child->setText(0, input->label); + child->setText(1, string() << "= " << input->name); + child->setForeground(1, QBrush(QColor(128, 128, 128))); + } + } + } +} + +void InputSettingsWindow::setAssignment(string name) { + activeInput->name = name; + activeInput = 0; + list->setFocus(); + message->setText(""); + mapper().bind(); + updateList(); +} + +void InputSettingsWindow::inputEvent(uint16_t scancode) { + if(!activeInput) return; + if(!isActiveWindow() || isMinimized()) return; + int16_t state = mapper().state(scancode); + + if(dynamic_cast(activeInput)) { + if(Keyboard::isAnyKey(scancode) && mapper().state(scancode)) { + for(unsigned i = 0; i < Keyboard::Count; i++) { + //don't map escape key, as it is reserved by the user interface + if(scancode == keyboard(i)[Keyboard::Escape]) return; + } + + setAssignment(string() << mapper().modifierString() << Scancode::encode(scancode)); + } else if(Keyboard::isAnyModifier(scancode) && optionAssignModifiers->isChecked()) { + setAssignment(string() << Scancode::encode(scancode)); + } else if(Mouse::isAnyButton(scancode) && mapper().state(scancode)) { + //ensure button was clicked inside list box + unsigned wx = 0, wy = 0; + QWidget *widget = message; + while(widget) { + wx += widget->geometry().x(); + wy += widget->geometry().y(); + widget = widget->parentWidget(); + } + unsigned px = QCursor::pos().x(); + unsigned py = QCursor::pos().y(); + if(px < wx || px >= wx + message->size().width()) return; + if(py < wy || py >= wy + message->size().height()) return; + + setAssignment(string() << mapper().modifierString() << Scancode::encode(scancode)); + } else if(Joypad::isAnyHat(scancode)) { + string position; + if(state == Joypad::HatUp) position = ".Up"; + else if(state == Joypad::HatDown) position = ".Down"; + else if(state == Joypad::HatLeft) position = ".Left"; + else if(state == Joypad::HatRight) position = ".Right"; + else return; + + setAssignment(string() << mapper().modifierString() << Scancode::encode(scancode) << position); + } else if(Joypad::isAnyAxis(scancode) && mapper().distance(scancode) > 64) { + if(mapper().calibrated == false) { + MappedInput *temp = activeInput; + activeInput = 0; + mapper().calibrate(); + activeInput = temp; + } + + if(mapper().isTrigger[Joypad::numberDecode(scancode)][Joypad::axisDecode(scancode)] == false) { + string position; + if(state < -24576) position = ".Lo"; + else if(state > +24576) position = ".Hi"; + else return; + + setAssignment(string() << mapper().modifierString() << Scancode::encode(scancode) << position); + } else { + if(state >= 0) return; + + setAssignment(string() << mapper().modifierString() << Scancode::encode(scancode) << ".Trigger"); + } + } else if(Joypad::isAnyButton(scancode) && mapper().state(scancode)) { + setAssignment(string() << mapper().modifierString() << Scancode::encode(scancode)); + } + } else if(dynamic_cast(activeInput)) { + if(Mouse::isAnyButton(scancode)) { + //ensure button was clicked inside list box + unsigned wx = 0, wy = 0; + QWidget *widget = message; + while(widget) { + wx += widget->geometry().x(); + wy += widget->geometry().y(); + widget = widget->parentWidget(); + } + unsigned px = QCursor::pos().x(); + unsigned py = QCursor::pos().y(); + if(px < wx || px >= wx + message->size().width()) return; + if(py < wy || py >= wy + message->size().height()) return; + + unsigned number = Mouse::numberDecode(scancode); + unsigned button = Mouse::buttonDecode(scancode); + if(button == 0) setAssignment(string() << Scancode::encode(mouse(number).axis(0))); + if(button == 2) setAssignment(string() << Scancode::encode(mouse(number).axis(1))); + } else if(Joypad::isAnyAxis(scancode) && mapper().distance(scancode) > 64) { + if(mapper().calibrated == false) { + MappedInput *temp = activeInput; + activeInput = 0; + mapper().calibrate(); + activeInput = temp; + } + + if(mapper().isTrigger[Joypad::numberDecode(scancode)][Joypad::axisDecode(scancode)] == false) { + if(state < -24576 || state > +24576) { + setAssignment(string() << Scancode::encode(scancode)); + } + } + } + } +} + +void InputSettingsWindow::assign() { + QTreeWidgetItem *item = list->currentItem(); + if(!item) return; + signed index = item->data(0, Qt::UserRole).toInt(); + if(index == -1) return; + + //flush any pending events to prevent instantaneous assignment of scancodes + mapper().poll(); + + activeInput = inputTable[index]; + message->setFocus(); + message->setText(string() << "Set assignment for: " << activeInput->label); +} + +void InputSettingsWindow::unassign() { + QTreeWidgetItem *item = list->currentItem(); + if(!item) return; + signed index = item->data(0, Qt::UserRole).toInt(); + if(index == -1) return; + + MappedInput *input = inputTable[index]; + input->name = "None"; + mapper().bind(); + updateList(); +} + +void InputSettingsWindow::toggleAssignModifiers() { + optionAssignModifiers->setChecked(!optionAssignModifiers->isChecked()); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/input.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/input.moc.hpp new file mode 100644 index 0000000000..6f939a5169 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/input.moc.hpp @@ -0,0 +1,33 @@ +class InputSettingsWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTreeWidget *list; + QHBoxLayout *controlLayout; + QLabel *message; + QPushButton *optionButton; + QMenu *optionMenu; + QbCheckAction *optionAssignModifiers; + QPushButton *assignButton; + QPushButton *unassignButton; + + void inputEvent(uint16_t scancode); + InputSettingsWindow(); + +private slots: + void synchronize(); + void assign(); + void unassign(); + void toggleAssignModifiers(); + +private: + QTreeWidgetItem *port1, *port2, *userInterface; + array inputTable; + MappedInput *activeInput; + + void updateList(); + void setAssignment(string); +}; + +extern InputSettingsWindow *inputSettingsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/settings/paths.cpp b/libmednahawk/src/snes/src/ui_qt/settings/paths.cpp new file mode 100644 index 0000000000..0bea8c8606 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/paths.cpp @@ -0,0 +1,83 @@ +#include "paths.moc" +PathSettingsWindow *pathSettingsWindow; + +PathSettingWidget::PathSettingWidget(string &pathValue_, const char *labelText, const char *pathDefaultLabel_, const char *pathBrowseLabel_) : pathValue(pathValue_) { + pathDefaultLabel = pathDefaultLabel_; + pathBrowseLabel = pathBrowseLabel_; + + layout = new QVBoxLayout; + layout->setMargin(0); + layout->setSpacing(0); + setLayout(layout); + + label = new QLabel(labelText); + layout->addWidget(label); + + controlLayout = new QHBoxLayout; + controlLayout->setSpacing(Style::WidgetSpacing); + layout->addLayout(controlLayout); + + path = new QLineEdit; + path->setReadOnly(true); + controlLayout->addWidget(path); + + pathSelect = new QPushButton("Select ..."); + controlLayout->addWidget(pathSelect); + + pathDefault = new QPushButton("Default"); + controlLayout->addWidget(pathDefault); + + connect(pathSelect, SIGNAL(released()), this, SLOT(selectPath())); + connect(pathDefault, SIGNAL(released()), this, SLOT(defaultPath())); + updatePath(); +} + +void PathSettingWidget::assignPath(string newPath) { + pathValue = string() << newPath << "/"; + updatePath(); +} + +void PathSettingWidget::updatePath() { + if(pathValue == "") { + path->setStyleSheet("color: #808080"); + path->setText(pathDefaultLabel); + } else { + path->setStyleSheet("color: #000000"); + path->setText(pathValue); + } +} + +void PathSettingWidget::selectPath() { + diskBrowser->chooseFolder( + bind(&PathSettingWidget::assignPath, this), + config().path.current.folder, + pathBrowseLabel + ); +} + +void PathSettingWidget::defaultPath() { + pathValue = ""; + updatePath(); +} + +PathSettingsWindow::PathSettingsWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + gamePath = new PathSettingWidget(config().path.rom, "Games:", "Remember last path", "Default Game Path"); + savePath = new PathSettingWidget(config().path.save, "Save RAM:", "Same as loaded game", "Default Save RAM Path"); + statePath = new PathSettingWidget(config().path.state, "Save states:", "Same as loaded game", "Default Save State Path"); + patchPath = new PathSettingWidget(config().path.patch, "UPS patches:", "Same as loaded game", "Default UPS Patch Path"); + cheatPath = new PathSettingWidget(config().path.cheat, "Cheat codes:", "Same as loaded game", "Default Cheat Code Path"); + dataPath = new PathSettingWidget(config().path.data, "Exported data:", "Same as loaded game", "Default Exported Data Path"); + + layout->addWidget(gamePath); + layout->addWidget(savePath); + layout->addWidget(statePath); + layout->addWidget(patchPath); + layout->addWidget(cheatPath); + layout->addWidget(dataPath); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/paths.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/paths.moc.hpp new file mode 100644 index 0000000000..14e011607a --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/paths.moc.hpp @@ -0,0 +1,40 @@ +class PathSettingWidget : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QLabel *label; + QHBoxLayout *controlLayout; + QLineEdit *path; + QPushButton *pathSelect; + QPushButton *pathDefault; + + string &pathValue; + string pathDefaultLabel; + string pathBrowseLabel; + void assignPath(string); + void updatePath(); + + PathSettingWidget(string&, const char*, const char*, const char*); + +public slots: + void selectPath(); + void defaultPath(); +}; + +class PathSettingsWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + PathSettingWidget *gamePath; + PathSettingWidget *savePath; + PathSettingWidget *statePath; + PathSettingWidget *patchPath; + PathSettingWidget *cheatPath; + PathSettingWidget *dataPath; + + PathSettingsWindow(); +}; + +extern PathSettingsWindow *pathSettingsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/settings/pixelshader.cpp b/libmednahawk/src/snes/src/ui_qt/settings/pixelshader.cpp new file mode 100644 index 0000000000..caa8b2987c --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/pixelshader.cpp @@ -0,0 +1,81 @@ +#include "pixelshader.moc" +PixelShaderWindow *pixelShaderWindow; + +PixelShaderWindow::PixelShaderWindow() { + layout = new QVBoxLayout; + layout->setMargin(0); + layout->setSpacing(Style::WidgetSpacing); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + gridLayout = new QGridLayout; + gridLayout->setVerticalSpacing(0); + layout->addLayout(gridLayout); + + fragmentLabel = new QLabel("Fragment shader:"); + gridLayout->addWidget(fragmentLabel, 0, 0, 1, 3); + + fragmentPath = new QLineEdit; + gridLayout->addWidget(fragmentPath, 1, 0); + + fragmentSelect = new QPushButton("Select ..."); + gridLayout->addWidget(fragmentSelect, 1, 1); + + fragmentDefault = new QPushButton("Default"); + gridLayout->addWidget(fragmentDefault, 1, 2); + + vertexLabel = new QLabel("Vertex shader:"); + gridLayout->addWidget(vertexLabel, 2, 0, 1, 3); + + vertexPath = new QLineEdit; + gridLayout->addWidget(vertexPath, 3, 0); + + vertexSelect = new QPushButton("Select ..."); + gridLayout->addWidget(vertexSelect, 3, 1); + + vertexDefault = new QPushButton("Default"); + gridLayout->addWidget(vertexDefault, 3, 2); + + synchronize(); + + connect(fragmentSelect, SIGNAL(released()), this, SLOT(selectFragmentShader())); + connect(vertexSelect, SIGNAL(released()), this, SLOT(selectVertexShader())); + connect(fragmentDefault, SIGNAL(released()), this, SLOT(defaultFragmentShader())); + connect(vertexDefault, SIGNAL(released()), this, SLOT(defaultVertexShader())); +} + +void PixelShaderWindow::synchronize() { + fragmentPath->setText(config().path.fragmentShader); + vertexPath->setText(config().path.vertexShader); +} + +void PixelShaderWindow::selectFragmentShader() { + diskBrowser->chooseFile( + bind(&PixelShaderWindow::assignFragmentShader, this), + config().path.current.shader, + "Select Fragment Shader" + ); +} + +void PixelShaderWindow::selectVertexShader() { + diskBrowser->chooseFile( + bind(&PixelShaderWindow::assignVertexShader, this), + config().path.current.shader, + "Select Vertex Shader" + ); +} + +void PixelShaderWindow::defaultFragmentShader() { assignFragmentShader(""); } +void PixelShaderWindow::defaultVertexShader() { assignVertexShader(""); } + +void PixelShaderWindow::assignFragmentShader(string filename) { + config().path.fragmentShader = filename; + synchronize(); + utility.updatePixelShader(); +} + +void PixelShaderWindow::assignVertexShader(string filename) { + config().path.vertexShader = filename; + synchronize(); + utility.updatePixelShader(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/pixelshader.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/pixelshader.moc.hpp new file mode 100644 index 0000000000..d57686322c --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/pixelshader.moc.hpp @@ -0,0 +1,29 @@ +class PixelShaderWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QGridLayout *gridLayout; + QLabel *fragmentLabel; + QLineEdit *fragmentPath; + QPushButton *fragmentSelect; + QPushButton *fragmentDefault; + QLabel *vertexLabel; + QLineEdit *vertexPath; + QPushButton *vertexSelect; + QPushButton *vertexDefault; + + void synchronize(); + PixelShaderWindow(); + +public slots: + void selectFragmentShader(); + void selectVertexShader(); + void defaultFragmentShader(); + void defaultVertexShader(); + + void assignFragmentShader(string); + void assignVertexShader(string); +}; + +extern PixelShaderWindow *pixelShaderWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/settings/settings.cpp b/libmednahawk/src/snes/src/ui_qt/settings/settings.cpp new file mode 100644 index 0000000000..4905fa2ba6 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/settings.cpp @@ -0,0 +1,36 @@ +#include "../ui-base.hpp" + +#include "pixelshader.cpp" +#include "video.cpp" +#include "audio.cpp" +#include "input.cpp" +#include "paths.cpp" +#include "advanced.cpp" + +#include "settings.moc" +SettingsWindow *settingsWindow; + +SettingsWindow::SettingsWindow() : QbWindow(config().geometry.settingsWindow) { + setObjectName("settings-window"); + setWindowTitle("Configuration Settings"); + resize(600, 360); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + videoSettingsWindow = new VideoSettingsWindow; + audioSettingsWindow = new AudioSettingsWindow; + inputSettingsWindow = new InputSettingsWindow; + pathSettingsWindow = new PathSettingsWindow; + advancedSettingsWindow = new AdvancedSettingsWindow; + + tab = new QTabWidget; + tab->addTab(videoSettingsWindow, QIcon(":/16x16/video-display.png"), "Video"); + tab->addTab(audioSettingsWindow, QIcon(":/16x16/audio-volume-high.png"), "Audio"); + tab->addTab(inputSettingsWindow, QIcon(":/16x16/input-gaming.png"), "Input"); + tab->addTab(pathSettingsWindow, QIcon(":/16x16/folder.png"), "Paths"); + tab->addTab(advancedSettingsWindow, QIcon(":/16x16/preferences-system.png"), "Advanced"); + layout->addWidget(tab); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/settings.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/settings.moc.hpp new file mode 100644 index 0000000000..f9171728ae --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/settings.moc.hpp @@ -0,0 +1,13 @@ +class SettingsWindow : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTabWidget *tab; + + SettingsWindow(); + +public slots: +}; + +extern SettingsWindow *settingsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/settings/video.cpp b/libmednahawk/src/snes/src/ui_qt/settings/video.cpp new file mode 100644 index 0000000000..00aa704fc2 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/video.cpp @@ -0,0 +1,133 @@ +#include "video.moc" +VideoSettingsWindow *videoSettingsWindow; + +VideoSettingsWindow::VideoSettingsWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + layout->setAlignment(Qt::AlignTop); + setLayout(layout); + + sliders = new QGridLayout; + layout->addLayout(sliders); + + contrastLabel = new QLabel("Contrast adjust:"); + sliders->addWidget(contrastLabel, 0, 0); + + contrastValue = new QLabel; + contrastValue->setAlignment(Qt::AlignHCenter); + contrastValue->setMinimumWidth(contrastValue->fontMetrics().width("+100%")); + sliders->addWidget(contrastValue, 0, 1); + + contrast = new QSlider(Qt::Horizontal); + contrast->setMinimum(-95); + contrast->setMaximum(+95); + sliders->addWidget(contrast, 0, 2); + + brightnessLabel = new QLabel("Brightness adjust:"); + sliders->addWidget(brightnessLabel, 1, 0); + + brightnessValue = new QLabel; + brightnessValue->setAlignment(Qt::AlignHCenter); + sliders->addWidget(brightnessValue, 1, 1); + + brightness = new QSlider(Qt::Horizontal); + brightness->setMinimum(-95); + brightness->setMaximum(+95); + sliders->addWidget(brightness, 1, 2); + + gammaLabel = new QLabel("Gamma adjust:"); + sliders->addWidget(gammaLabel, 2, 0); + + gammaValue = new QLabel; + gammaValue->setAlignment(Qt::AlignHCenter); + sliders->addWidget(gammaValue, 2, 1); + + gamma = new QSlider(Qt::Horizontal); + gamma->setMinimum(-95); + gamma->setMaximum(+95); + sliders->addWidget(gamma, 2, 2); + + scanlineLabel = new QLabel("Scanline adjust:"); + sliders->addWidget(scanlineLabel, 3, 0); + + scanlineValue = new QLabel; + scanlineValue->setAlignment(Qt::AlignHCenter); + sliders->addWidget(scanlineValue, 3, 1); + + scanline = new QSlider(Qt::Horizontal); + scanline->setMinimum(0); + scanline->setMaximum(20); + scanline->setPageStep(4); + sliders->addWidget(scanline, 3, 2); + + options = new QHBoxLayout; + layout->addLayout(options); + + enableGammaRamp = new QCheckBox("Simulate NTSC TV gamma ramp"); + enableGammaRamp->setToolTip("Lower monitor gamma to more accurately match a CRT television"); + options->addWidget(enableGammaRamp); + + pixelShaderWindow = new PixelShaderWindow; + layout->addWidget(pixelShaderWindow); + + connect(contrast, SIGNAL(valueChanged(int)), this, SLOT(contrastAdjust(int))); + connect(brightness, SIGNAL(valueChanged(int)), this, SLOT(brightnessAdjust(int))); + connect(gamma, SIGNAL(valueChanged(int)), this, SLOT(gammaAdjust(int))); + connect(scanline, SIGNAL(valueChanged(int)), this, SLOT(scanlineAdjust(int))); + connect(enableGammaRamp, SIGNAL(stateChanged(int)), this, SLOT(gammaRampToggle(int))); + + syncUi(); +} + +void VideoSettingsWindow::syncUi() { + int n; + + n = config().video.contrastAdjust; + contrastValue->setText(string() << (n > 0 ? "+" : "") << n << "%"); + contrast->setSliderPosition(n); + + n = config().video.brightnessAdjust; + brightnessValue->setText(string() << (n > 0 ? "+" : "") << n << "%"); + brightness->setSliderPosition(n); + + n = config().video.gammaAdjust; + gammaValue->setText(string() << (n > 0 ? "+" : "") << n << "%"); + gamma->setSliderPosition(n); + + n = config().video.scanlineAdjust; + scanlineValue->setText(string() << n << "%"); + scanline->setSliderPosition(n / 5); + + enableGammaRamp->setChecked(config().video.enableGammaRamp); +} + +void VideoSettingsWindow::contrastAdjust(int value) { + config().video.contrastAdjust = value; + syncUi(); + utility.updateColorFilter(); +} + +void VideoSettingsWindow::brightnessAdjust(int value) { + config().video.brightnessAdjust = value; + syncUi(); + utility.updateColorFilter(); +} + +void VideoSettingsWindow::gammaAdjust(int value) { + config().video.gammaAdjust = value; + syncUi(); + utility.updateColorFilter(); +} + +void VideoSettingsWindow::scanlineAdjust(int value) { + config().video.scanlineAdjust = value * 5; + syncUi(); + scanlineFilter.setIntensity(value * 5); +} + +void VideoSettingsWindow::gammaRampToggle(int state) { + config().video.enableGammaRamp = (state == Qt::Checked); + syncUi(); + utility.updateColorFilter(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/settings/video.moc.hpp b/libmednahawk/src/snes/src/ui_qt/settings/video.moc.hpp new file mode 100644 index 0000000000..e9455d0d7b --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/settings/video.moc.hpp @@ -0,0 +1,33 @@ +class VideoSettingsWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QGridLayout *sliders; + QLabel *contrastLabel; + QLabel *contrastValue; + QSlider *contrast; + QLabel *brightnessLabel; + QLabel *brightnessValue; + QSlider *brightness; + QLabel *gammaLabel; + QLabel *gammaValue; + QSlider *gamma; + QLabel *scanlineLabel; + QLabel *scanlineValue; + QSlider *scanline; + QHBoxLayout *options; + QCheckBox *enableGammaRamp; + + void syncUi(); + VideoSettingsWindow(); + +public slots: + void contrastAdjust(int); + void brightnessAdjust(int); + void gammaAdjust(int); + void scanlineAdjust(int); + void gammaRampToggle(int); +}; + +extern VideoSettingsWindow *videoSettingsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/state/state.cpp b/libmednahawk/src/snes/src/ui_qt/state/state.cpp new file mode 100644 index 0000000000..000f27d848 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/state/state.cpp @@ -0,0 +1,104 @@ +#include "../ui-base.hpp" +State state; + +bool State::save(unsigned slot) { + if(!allowed()) return false; + + SNES::system.runtosave(); + serializer state = SNES::system.serialize(); + + file fp; + bool result = false; + if(fp.open(name(slot), file::mode_write)) { + fp.write(state.data(), state.size()); + fp.close(); + result = true; + } + + if(result) { + utility.showMessage(string() << "State " << (slot + 1) << " saved."); + } else { + utility.showMessage(string() << "Failed to save state " << (slot + 1) << "."); + } + return result; +} + +bool State::load(unsigned slot) { + if(!allowed()) return false; + + file fp; + bool result = false; + if(fp.open(name(slot), file::mode_read)) { + unsigned size = fp.size(); + uint8_t *data = new uint8_t[size]; + fp.read(data, size); + fp.close(); + serializer state(data, size); + delete[] data; + result = SNES::system.unserialize(state); + } + + if(result) { + utility.showMessage(string() << "State " << (slot + 1) << " loaded."); + resetHistory(); + } else { + utility.showMessage(string() << "Failed to load state " << (slot + 1) << "."); + } + return result; +} + +void State::frame() { + if(!allowed()) return; + if(!config().system.rewindEnabled) return; + + //if a full second has passed, automatically capture state + if(++frameCounter >= (SNES::system.region() == SNES::System::NTSC ? 60 : 50)) { + frameCounter = 0; + historyIndex = (historyIndex + 1) % historySize; + historyCount = min(historyCount + 1, historySize); + SNES::system.runtosave(); + history[historyIndex] = SNES::system.serialize(); + } +} + +void State::resetHistory() { + historyIndex = 0; + historyCount = 0; + frameCounter = 0; +} + +bool State::rewind() { + if(!allowed()) return false; + if(!config().system.rewindEnabled) return false; + + if(historyCount == 0) return false; + serializer state(history[historyIndex].data(), history[historyIndex].size()); + bool result = SNES::system.unserialize(state); + historyIndex = (historyIndex + historySize - 1) % historySize; //add historySize to prevent underflow + historyCount--; + return true; +} + +State::State() { + historySize = 120; + history = new serializer[historySize]; + for(unsigned i = 0; i < historySize; i++) history[i] = 0; +} + +State::~State() { + delete[] history; +} + +// + +bool State::allowed() const { + if(!SNES::cartridge.loaded() || !application.power) return false; + if(movie.state != Movie::Inactive) return false; + return cartridge.saveStatesSupported(); +} + +string State::name(unsigned slot) const { + string name = filepath(nall::basename(cartridge.fileName), config().path.state); + name << "-" << (slot + 1) << ".bst"; + return name; +} diff --git a/libmednahawk/src/snes/src/ui_qt/state/state.hpp b/libmednahawk/src/snes/src/ui_qt/state/state.hpp new file mode 100644 index 0000000000..edfcfa6e60 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/state/state.hpp @@ -0,0 +1,24 @@ +class State { +public: + bool save(unsigned); + bool load(unsigned); + + void frame(); + void resetHistory(); + bool rewind(); + + State(); + ~State(); + +private: + serializer *history; + unsigned historySize; + unsigned historyIndex; + unsigned historyCount; + unsigned frameCounter; + + bool allowed() const; + string name(unsigned slot) const; +}; + +extern State state; diff --git a/libmednahawk/src/snes/src/ui_qt/tools/cheateditor.cpp b/libmednahawk/src/snes/src/ui_qt/tools/cheateditor.cpp new file mode 100644 index 0000000000..1e0cab5bd7 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/cheateditor.cpp @@ -0,0 +1,211 @@ +#include "cheateditor.moc" +CheatEditorWindow *cheatEditorWindow; + +CheatEditorWindow::CheatEditorWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + list = new QTreeWidget; + list->setColumnCount(3); + list->setHeaderLabels(QStringList() << "Slot" << "Code" << "Description"); + list->setColumnWidth(1, list->fontMetrics().width(" 89AB-CDEF+... ")); + list->setAllColumnsShowFocus(true); + list->sortByColumn(0, Qt::AscendingOrder); + list->setRootIsDecorated(false); + list->setSelectionMode(QAbstractItemView::ExtendedSelection); + list->resizeColumnToContents(0); + layout->addWidget(list); + + gridLayout = new QGridLayout; + layout->addLayout(gridLayout); + + codeLabel = new QLabel("Code(s):"); + codeLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + gridLayout->addWidget(codeLabel, 0, 0); + + codeEdit = new QLineEdit; + gridLayout->addWidget(codeEdit, 0, 1); + + descLabel = new QLabel("Description:"); + descLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + gridLayout->addWidget(descLabel, 1, 0); + + descEdit = new QLineEdit; + gridLayout->addWidget(descEdit, 1, 1); + + controlLayout = new QHBoxLayout; + controlLayout->setAlignment(Qt::AlignRight); + layout->addLayout(controlLayout); + + clearButton = new QPushButton("Clear Selected"); + controlLayout->addWidget(clearButton); + + synchronize(); + + connect(list, SIGNAL(itemSelectionChanged()), this, SLOT(listChanged())); + connect(list, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(bind())); + connect(codeEdit, SIGNAL(textEdited(const QString&)), this, SLOT(codeEdited())); + connect(descEdit, SIGNAL(textEdited(const QString&)), this, SLOT(descEdited())); + connect(clearButton, SIGNAL(released()), this, SLOT(clearSelected())); +} + +void CheatEditorWindow::synchronize() { + QList items = list->selectedItems(); + if(items.count() == 1) { + descEdit->setEnabled(true); + codeEdit->setEnabled(true); + } else { + descEdit->setText(""); + codeEdit->setText(""); + descEdit->setEnabled(false); + codeEdit->setEnabled(false); + } + clearButton->setEnabled(items.count() > 0); +} + +void CheatEditorWindow::load(const char *filename) { + list->clear(); + list->setSortingEnabled(false); + SNES::cheat.reset(); + + string data; + lstring line; + + if(data.readfile(filename)) { + data.replace("\r", ""); + line.split("\n", data); + } + + for(unsigned i = 0; i < 128; i++) { + lstring part; + if(line.size() > i) part.qsplit(",", line[i]); + for(unsigned n = 0; n <= 2; n++) trim(part[n], " "); + trim(part[2], "\""); + part[2].replace("\\q", "\""); + + QTreeWidgetItem *item = new QTreeWidgetItem(list); + item->setData(0, Qt::UserRole, QVariant(i)); + item->setText(0, string::printf("%3u", i + 1)); + item->setCheckState(0, part[0] == "enabled" ? Qt::Checked : Qt::Unchecked); + item->setText(1, part[1]); + item->setText(2, part[2]); + } + + list->resizeColumnToContents(0); + list->setSortingEnabled(true); + list->header()->setSortIndicatorShown(false); + + bind(); + update(); +} + +void CheatEditorWindow::save(const char *filename) { + bool empty = true; + string data[128]; + + QList items = list->findItems("", Qt::MatchContains); + for(unsigned i = 0; i < items.count(); i++) { + QTreeWidgetItem *item = items[i]; + unsigned index = item->data(0, Qt::UserRole).toUInt(); + string code = item->text(1).toUtf8().constData(); + string desc = item->text(2).toUtf8().constData(); + desc.replace("\"", "\\q"); + if((code != "") || (desc != "")) empty = false; + + data[index] << (item->checkState(0) == Qt::Checked ? "enabled," : "disabled,"); + data[index] << code << ","; + data[index] << "\"" << desc << "\"\r\n"; + } + + if(empty == true) { + unlink(filename); + } else { + file fp; + if(fp.open(filename, file::mode_write)) { + for(unsigned i = 0; i < 128; i++) fp.print(data[i]); + fp.close(); + } + } + + list->clear(); + SNES::cheat.reset(); + SNES::cheat.synchronize(); +} + +void CheatEditorWindow::update() { + QList items = list->findItems("", Qt::MatchContains); + for(unsigned i = 0; i < items.count(); i++) { + QTreeWidgetItem *item = items[i]; + string code = item->text(1).toUtf8().constData(); + string desc = item->text(2).toUtf8().constData(); + if((code != "") || (desc != "")) { + item->setForeground(0, QBrush(QColor(0, 0, 0))); + } else { + //highlight empty slots in gray + item->setForeground(0, QBrush(QColor(128, 128, 128))); + } + unsigned index = item->data(0, Qt::UserRole).toUInt(); + if(SNES::cheat[index].addr.size() > 0) { + item->setForeground(1, QBrush(QColor(0, 0, 0))); + } else { + //highlight invalid codes in red + //(this will also highlight empty codes, but as there is no text, it's not an issue) + item->setForeground(1, QBrush(QColor(255, 0, 0))); + } + } +} + +void CheatEditorWindow::bind() { + QList items = list->findItems("", Qt::MatchContains); + for(unsigned i = 0; i < items.count(); i++) { + QTreeWidgetItem *item = items[i]; + unsigned index = item->data(0, Qt::UserRole).toUInt(); + SNES::cheat[index] = item->text(1).toUtf8().constData(); + SNES::cheat[index].enabled = item->checkState(0) == Qt::Checked; + } + SNES::cheat.synchronize(); +} + +void CheatEditorWindow::listChanged() { + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + codeEdit->setText(item->text(1)); + descEdit->setText(item->text(2)); + } + synchronize(); +} + +void CheatEditorWindow::codeEdited() { + QList items = list->selectedItems(); + if(items.count() == 1) { + QTreeWidgetItem *item = items[0]; + item->setText(1, codeEdit->text()); + } + bind(); + update(); +} + +void CheatEditorWindow::descEdited() { + QList items = list->selectedItems(); + if(items.count() == 1) { + QTreeWidgetItem *item = items[0]; + item->setText(2, descEdit->text()); + } + update(); +} + +void CheatEditorWindow::clearSelected() { + QList items = list->selectedItems(); + for(unsigned i = 0; i < items.count(); i++) { + QTreeWidgetItem *item = items[i]; + item->setText(1, ""); + item->setText(2, ""); + } + codeEdit->setText(""); + descEdit->setText(""); + bind(); + update(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/tools/cheateditor.moc.hpp b/libmednahawk/src/snes/src/ui_qt/tools/cheateditor.moc.hpp new file mode 100644 index 0000000000..a50692aff5 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/cheateditor.moc.hpp @@ -0,0 +1,30 @@ +class CheatEditorWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTreeWidget *list; + QGridLayout *gridLayout; + QLabel *codeLabel; + QLineEdit *codeEdit; + QLabel *descLabel; + QLineEdit *descEdit; + QHBoxLayout *controlLayout; + QPushButton *clearButton; + + void load(const char *filename); + void save(const char *filename); + void update(); + + void synchronize(); + CheatEditorWindow(); + +private slots: + void bind(); + void listChanged(); + void codeEdited(); + void descEdited(); + void clearSelected(); +}; + +extern CheatEditorWindow *cheatEditorWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.cpp b/libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.cpp new file mode 100644 index 0000000000..7688e2e187 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.cpp @@ -0,0 +1,200 @@ +#include "cheatfinder.moc" +CheatFinderWindow *cheatFinderWindow; + +CheatFinderWindow::CheatFinderWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + list = new QTreeWidget; + list->setColumnCount(3); + list->setHeaderLabels(QStringList() << "Address" << "Current Value" << "Previous Value"); + list->setAllColumnsShowFocus(true); + list->sortByColumn(0, Qt::AscendingOrder); + list->setRootIsDecorated(false); + layout->addWidget(list); + + controlLayout = new QGridLayout; + controlLayout->setVerticalSpacing(0); + layout->addLayout(controlLayout); + + sizeLabel = new QLabel("Data size:"); + controlLayout->addWidget(sizeLabel, 0, 0); + + sizeGroup = new QButtonGroup(this); + + size8bit = new QRadioButton("8-bit"); + size8bit->setChecked(true); + sizeGroup->addButton(size8bit); + controlLayout->addWidget(size8bit, 0, 1); + + size16bit = new QRadioButton("16-bit"); + sizeGroup->addButton(size16bit); + controlLayout->addWidget(size16bit, 0, 2); + + size24bit = new QRadioButton("24-bit"); + sizeGroup->addButton(size24bit); + controlLayout->addWidget(size24bit, 0, 3); + + size32bit = new QRadioButton("32-bit"); + sizeGroup->addButton(size32bit); + controlLayout->addWidget(size32bit, 0, 4); + + compareLabel = new QLabel("Compare mode:"); + controlLayout->addWidget(compareLabel, 1, 0); + + compareGroup = new QButtonGroup(this); + + compareEqual = new QRadioButton("Equal to"); + compareEqual->setChecked(true); + compareGroup->addButton(compareEqual); + controlLayout->addWidget(compareEqual, 1, 1); + + compareNotEqual = new QRadioButton("Not equal to"); + compareGroup->addButton(compareNotEqual); + controlLayout->addWidget(compareNotEqual, 1, 2); + + compareLessThan = new QRadioButton("Less than"); + compareGroup->addButton(compareLessThan); + controlLayout->addWidget(compareLessThan, 1, 3); + + compareGreaterThan = new QRadioButton("Greater than"); + compareGroup->addButton(compareGreaterThan); + controlLayout->addWidget(compareGreaterThan, 1, 4); + + valueLabel = new QLabel("Search value:"); + controlLayout->addWidget(valueLabel, 2, 0); + + actionLayout = new QHBoxLayout; + actionLayout->setSpacing(Style::WidgetSpacing); + controlLayout->addLayout(actionLayout, 2, 1, 1, 4); + + valueEdit = new QLineEdit; + actionLayout->addWidget(valueEdit); + + searchButton = new QPushButton("Search"); + actionLayout->addWidget(searchButton); + + resetButton = new QPushButton("Reset"); + actionLayout->addWidget(resetButton); + + connect(valueEdit, SIGNAL(returnPressed()), this, SLOT(searchMemory())); + connect(searchButton, SIGNAL(released()), this, SLOT(searchMemory())); + connect(resetButton, SIGNAL(released()), this, SLOT(resetSearch())); + synchronize(); +} + +void CheatFinderWindow::synchronize() { + if(SNES::cartridge.loaded() == false || application.power == false) { + list->clear(); + for(unsigned n = 0; n < 3; n++) list->resizeColumnToContents(n); + valueEdit->setEnabled(false); + valueEdit->setText(""); + searchButton->setEnabled(false); + resetButton->setEnabled(false); + } else { + valueEdit->setEnabled(true); + searchButton->setEnabled(true); + resetButton->setEnabled(true); + } +} + +void CheatFinderWindow::refreshList() { + list->clear(); + list->setSortingEnabled(false); + + unsigned size = 0; + if(size16bit->isChecked()) size = 1; + if(size24bit->isChecked()) size = 2; + if(size32bit->isChecked()) size = 3; + + for(unsigned i = 0; i < addrList.size() && i < 256; i++) { + QTreeWidgetItem *item = new QTreeWidgetItem(list); + + unsigned addr = addrList[i]; + unsigned data = read(addr, size); + unsigned prev = dataList[i]; + + char temp[256]; + + sprintf(temp, "%.6x", 0x7e0000 + addr); + item->setText(0, temp); + + sprintf(temp, "%u (0x%x)", data, data); + item->setText(1, temp); + + sprintf(temp, "%u (0x%x)", prev, prev); + item->setText(2, temp); + } + + list->setSortingEnabled(true); + list->header()->setSortIndicatorShown(false); + for(unsigned n = 0; n < 3; n++) list->resizeColumnToContents(n); +} + +void CheatFinderWindow::searchMemory() { + unsigned size = 0; + if(size16bit->isChecked()) size = 1; + if(size24bit->isChecked()) size = 2; + if(size32bit->isChecked()) size = 3; + + unsigned data; + string text = valueEdit->text().toUtf8().constData(); + + //auto-detect input data type + if(strbegin(text, "0x")) data = strhex((const char*)text + 2); + else if(strbegin(text, "-")) data = strsigned(text); + else data = strunsigned(text); + + if(addrList.size() == 0) { + //search for the first time: enqueue all possible values so they are all searched + for(unsigned addr = 0; addr < SNES::memory::wram.size(); addr++) { + addrList.add(addr); + dataList.add(read(addr, size)); + } + } + + array newAddrList, newDataList, oldDataList; + + for(unsigned i = 0; i < addrList.size(); i++) { + unsigned thisAddr = addrList[i]; + unsigned thisData = read(thisAddr, size); + + if((compareEqual->isChecked() && thisData == data) + || (compareNotEqual->isChecked() && thisData != data) + || (compareLessThan->isChecked() && thisData < data) + || (compareGreaterThan->isChecked() && thisData > data) + ) { + newAddrList.add(thisAddr); + newDataList.add(thisData); + oldDataList.add(dataList[i]); + } + } + + //first refresh the list with the old data values (for the previous value column) + addrList = newAddrList; + dataList = oldDataList; + refreshList(); + + //and now update the list with the new data values (for the next search) + dataList = newDataList; +} + +void CheatFinderWindow::resetSearch() { + addrList.reset(); + dataList.reset(); + refreshList(); +} + +//size = 0 (8-bit), 1 (16-bit), 2 (24-bit), 3 (32-bit) +unsigned CheatFinderWindow::read(unsigned addr, unsigned size) { + unsigned data = 0; + + for(unsigned n = 0; n <= size; n++) { + if(addr + n >= SNES::memory::wram.size()) break; + data |= SNES::memory::wram[addr + n] << (n << 3); + } + + return data; +} diff --git a/libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.moc.hpp b/libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.moc.hpp new file mode 100644 index 0000000000..813465489a --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/cheatfinder.moc.hpp @@ -0,0 +1,41 @@ +class CheatFinderWindow : public QWidget { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTreeWidget *list; + QGridLayout *controlLayout; + QLabel *sizeLabel; + QButtonGroup *sizeGroup; + QRadioButton *size8bit; + QRadioButton *size16bit; + QRadioButton *size24bit; + QRadioButton *size32bit; + QLabel *compareLabel; + QButtonGroup *compareGroup; + QRadioButton *compareEqual; + QRadioButton *compareNotEqual; + QRadioButton *compareLessThan; + QRadioButton *compareGreaterThan; + QLabel *valueLabel; + QHBoxLayout *actionLayout; + QLineEdit *valueEdit; + QPushButton *searchButton; + QPushButton *resetButton; + + void synchronize(); + void refreshList(); + CheatFinderWindow(); + +public slots: + void searchMemory(); + void resetSearch(); + +private: + array addrList; + array dataList; + + unsigned read(unsigned addr, unsigned size); +}; + +extern CheatFinderWindow *cheatFinderWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/tools/statemanager.cpp b/libmednahawk/src/snes/src/ui_qt/tools/statemanager.cpp new file mode 100644 index 0000000000..6e1ec9bebe --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/statemanager.cpp @@ -0,0 +1,280 @@ +#include "statemanager.moc" +StateManagerWindow *stateManagerWindow; + +StateManagerWindow::StateManagerWindow() { + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + list = new QTreeWidget; + list->setColumnCount(2); + list->setHeaderLabels(QStringList() << "Slot" << "Description"); + list->setAllColumnsShowFocus(true); + list->sortByColumn(0, Qt::AscendingOrder); + list->setRootIsDecorated(false); + list->resizeColumnToContents(0); + layout->addWidget(list); + + infoLayout = new QHBoxLayout; + layout->addLayout(infoLayout); + + descriptionLabel = new QLabel("Description:"); + infoLayout->addWidget(descriptionLabel); + + descriptionText = new QLineEdit; + infoLayout->addWidget(descriptionText); + + controlLayout = new QHBoxLayout; + layout->addLayout(controlLayout); + + spacer = new QWidget; + spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + controlLayout->addWidget(spacer); + + loadButton = new QPushButton("Load"); + controlLayout->addWidget(loadButton); + + saveButton = new QPushButton("Save"); + controlLayout->addWidget(saveButton); + + eraseButton = new QPushButton("Erase"); + controlLayout->addWidget(eraseButton); + + connect(list, SIGNAL(itemSelectionChanged()), this, SLOT(synchronize())); + connect(list, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(loadAction())); + connect(descriptionText, SIGNAL(textEdited(const QString&)), this, SLOT(writeDescription())); + connect(loadButton, SIGNAL(released()), this, SLOT(loadAction())); + connect(saveButton, SIGNAL(released()), this, SLOT(saveAction())); + connect(eraseButton, SIGNAL(released()), this, SLOT(eraseAction())); + + synchronize(); +} + +void StateManagerWindow::reload() { + list->clear(); + list->setSortingEnabled(false); + + if(SNES::cartridge.loaded() && cartridge.saveStatesSupported()) { + for(unsigned n = 0; n < StateCount; n++) { + QTreeWidgetItem *item = new QTreeWidgetItem(list); + item->setData(0, Qt::UserRole, QVariant(n)); + char slot[16]; + sprintf(slot, "%2u", n + 1); + item->setText(0, slot); + } + update(); + } + + list->setSortingEnabled(true); + list->header()->setSortIndicatorShown(false); + synchronize(); +} + +void StateManagerWindow::update() { + //iterate all list items + QList items = list->findItems("", Qt::MatchContains); + for(unsigned i = 0; i < items.count(); i++) { + QTreeWidgetItem *item = items[i]; + unsigned n = item->data(0, Qt::UserRole).toUInt(); + if(isStateValid(n) == false) { + item->setForeground(0, QBrush(QColor(128, 128, 128))); + item->setForeground(1, QBrush(QColor(128, 128, 128))); + item->setText(1, "Empty"); + } else { + item->setForeground(0, QBrush(QColor(0, 0, 0))); + item->setForeground(1, QBrush(QColor(0, 0, 0))); + item->setText(1, getStateDescription(n)); + } + } + + for(unsigned n = 0; n <= 1; n++) list->resizeColumnToContents(n); +} + +void StateManagerWindow::synchronize() { + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + unsigned n = item->data(0, Qt::UserRole).toUInt(); + + if(isStateValid(n)) { + descriptionText->setText(getStateDescription(n)); + descriptionText->setEnabled(true); + loadButton->setEnabled(true); + eraseButton->setEnabled(true); + } else { + descriptionText->setText(""); + descriptionText->setEnabled(false); + loadButton->setEnabled(false); + eraseButton->setEnabled(false); + } + saveButton->setEnabled(true); + } else { + descriptionText->setText(""); + descriptionText->setEnabled(false); + loadButton->setEnabled(false); + saveButton->setEnabled(false); + eraseButton->setEnabled(false); + } +} + +void StateManagerWindow::writeDescription() { + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + unsigned n = item->data(0, Qt::UserRole).toUInt(); + string description = descriptionText->text().toUtf8().constData(); + setStateDescription(n, description); + update(); + } +} + +void StateManagerWindow::loadAction() { + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + unsigned n = item->data(0, Qt::UserRole).toUInt(); + loadState(n); + } +} + +void StateManagerWindow::saveAction() { + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + unsigned n = item->data(0, Qt::UserRole).toUInt(); + saveState(n); + writeDescription(); + synchronize(); + descriptionText->setFocus(); + } +} + +void StateManagerWindow::eraseAction() { + QList items = list->selectedItems(); + if(items.count() > 0) { + QTreeWidgetItem *item = items[0]; + unsigned n = item->data(0, Qt::UserRole).toUInt(); + eraseState(n); + update(); + synchronize(); + } +} + +string StateManagerWindow::filename() const { + string name = filepath(nall::basename(cartridge.fileName), config().path.state); + name << ".bsa"; + return name; +} + +bool StateManagerWindow::isStateValid(unsigned slot) { + if(SNES::cartridge.loaded() == false) return false; + file fp; + if(fp.open(filename(), file::mode_read) == false) return false; + if(fp.size() < (slot + 1) * SNES::system.serialize_size()) { fp.close(); return false; } + fp.seek(slot * SNES::system.serialize_size()); + uint32_t signature = fp.readl(4); + if(signature == 0) { fp.close(); return false; } + uint32_t version = fp.readl(4); + if(version != bsnesSerializerVersion) { fp.close(); return false; } + fp.close(); + return true; +} + +string StateManagerWindow::getStateDescription(unsigned slot) { + if(isStateValid(slot) == false) return ""; + file fp; + fp.open(filename(), file::mode_read); + char description[513]; + fp.seek(slot * SNES::system.serialize_size() + 12); + fp.read((uint8_t*)description, 512); + fp.close(); + description[512] = 0; + return description; +} + +void StateManagerWindow::setStateDescription(unsigned slot, const string &text) { + if(isStateValid(slot) == false) return; + file fp; + fp.open(filename(), file::mode_readwrite); + char description[512]; + memset(&description, 0, sizeof description); + strncpy(description, text, 512); + fp.seek(slot * SNES::system.serialize_size() + 12); + fp.write((uint8_t*)description, 512); + fp.close(); +} + +void StateManagerWindow::loadState(unsigned slot) { + if(isStateValid(slot) == false) return; + file fp; + fp.open(filename(), file::mode_read); + fp.seek(slot * SNES::system.serialize_size()); + unsigned size = SNES::system.serialize_size(); + uint8_t *data = new uint8_t[size]; + fp.read(data, size); + fp.close(); + + serializer state(data, size); + delete[] data; + + if(SNES::system.unserialize(state) == true) { + //toolsWindow->close(); + } +} + +void StateManagerWindow::saveState(unsigned slot) { + file fp; + if(file::exists(filename()) == false) { + //try and create the file, bail out on failure (eg read-only device) + if(fp.open(filename(), file::mode_write) == false) return; + fp.close(); + } + + SNES::system.runtosave(); + serializer state = SNES::system.serialize(); + + fp.open(filename(), file::mode_readwrite); + + //user may save to slot #2 when slot #1 is empty; pad file to current slot if needed + unsigned stateOffset = SNES::system.serialize_size() * slot; + fp.seek(fp.size()); + while(fp.size() < stateOffset) fp.write(0x00); + + fp.seek(stateOffset); + fp.write(state.data(), state.size()); + fp.close(); +} + +void StateManagerWindow::eraseState(unsigned slot) { + if(isStateValid(slot) == false) return; + file fp; + fp.open(filename(), file::mode_readwrite); + unsigned size = SNES::system.serialize_size(); + fp.seek(slot * size); + for(unsigned i = 0; i < size; i++) fp.write(0x00); + fp.close(); + + //shrink state archive as much as possible: + //eg if only slot #2 and slot #31 were valid, but slot #31 was erased, + //file can be resized to only hold blank slot #1 + valid slot #2 + signed lastValidState = -1; + for(signed i = StateCount - 1; i >= 0; i--) { + if(isStateValid(i)) { + lastValidState = i; + break; + } + } + + if(lastValidState == -1) { + //no states used, remove empty file + unlink(filename()); + } else { + unsigned neededFileSize = (lastValidState + 1) * SNES::system.serialize_size(); + file fp; + if(fp.open(filename(), file::mode_readwrite)) { + if(fp.size() > neededFileSize) fp.truncate(neededFileSize); + fp.close(); + } + } +} diff --git a/libmednahawk/src/snes/src/ui_qt/tools/statemanager.moc.hpp b/libmednahawk/src/snes/src/ui_qt/tools/statemanager.moc.hpp new file mode 100644 index 0000000000..91caf515e5 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/statemanager.moc.hpp @@ -0,0 +1,40 @@ +class StateManagerWindow : public QWidget { + Q_OBJECT + +public: + enum { StateCount = 32 }; + + QVBoxLayout *layout; + QTreeWidget *list; + QHBoxLayout *infoLayout; + QLabel *descriptionLabel; + QLineEdit *descriptionText; + QHBoxLayout *controlLayout; + QWidget *spacer; + QPushButton *loadButton; + QPushButton *saveButton; + QPushButton *eraseButton; + + void reload(); + void update(); + + StateManagerWindow(); + +public slots: + void synchronize(); + void writeDescription(); + void loadAction(); + void saveAction(); + void eraseAction(); + +private: + string filename() const; + bool isStateValid(unsigned slot); + string getStateDescription(unsigned slot); + void setStateDescription(unsigned slot, const string&); + void loadState(unsigned slot); + void saveState(unsigned slot); + void eraseState(unsigned slot); +}; + +extern StateManagerWindow *stateManagerWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/tools/tools.cpp b/libmednahawk/src/snes/src/ui_qt/tools/tools.cpp new file mode 100644 index 0000000000..b87726e2c2 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/tools.cpp @@ -0,0 +1,29 @@ +#include "../ui-base.hpp" + +#include "tools.moc" +ToolsWindow *toolsWindow; + +#include "cheateditor.cpp" +#include "cheatfinder.cpp" +#include "statemanager.cpp" + +ToolsWindow::ToolsWindow() : QbWindow(config().geometry.toolsWindow) { + setObjectName("tools-window"); + setWindowTitle("Tools"); + resize(600, 360); + + layout = new QVBoxLayout; + layout->setMargin(Style::WindowMargin); + layout->setSpacing(Style::WidgetSpacing); + setLayout(layout); + + cheatEditorWindow = new CheatEditorWindow; + cheatFinderWindow = new CheatFinderWindow; + stateManagerWindow = new StateManagerWindow; + + tab = new QTabWidget; + tab->addTab(cheatEditorWindow, QIcon(":/16x16/accessories-text-editor.png"), "Cheat Editor"); + tab->addTab(cheatFinderWindow, QIcon(":/16x16/system-search.png"), "Cheat Finder"); + tab->addTab(stateManagerWindow, QIcon(":/16x16/system-file-manager.png"), "State Manager"); + layout->addWidget(tab); +} diff --git a/libmednahawk/src/snes/src/ui_qt/tools/tools.moc.hpp b/libmednahawk/src/snes/src/ui_qt/tools/tools.moc.hpp new file mode 100644 index 0000000000..4019875a52 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/tools/tools.moc.hpp @@ -0,0 +1,13 @@ +class ToolsWindow : public QbWindow { + Q_OBJECT + +public: + QVBoxLayout *layout; + QTabWidget *tab; + + ToolsWindow(); + +public slots: +}; + +extern ToolsWindow *toolsWindow; diff --git a/libmednahawk/src/snes/src/ui_qt/ui-base.hpp b/libmednahawk/src/snes/src/ui_qt/ui-base.hpp new file mode 100644 index 0000000000..97113546f5 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/ui-base.hpp @@ -0,0 +1,92 @@ +#define UNICODE +#define QT_NO_DEBUG +#define QT_CORE_LIB +#define QT_GUI_LIB +#define QT_THREAD_SUPPORT + +#include +#include +//Q_IMPORT_PLUGIN(QJpegPlugin) +//Q_IMPORT_PLUGIN(QMngPlugin) + +#include <../base.hpp> + +#include +#include +#include +#include +using namespace nall; + +#include +using namespace ruby; + +#include "config.hpp" +#include "interface.hpp" + +#include "application/application.moc.hpp" + +#include "base/about.moc.hpp" +#include "base/diskbrowser.moc.hpp" +#include "base/htmlviewer.moc.hpp" +#include "base/loader.moc.hpp" +#include "base/main.moc.hpp" + +#include "cartridge/cartridge.hpp" + +#if defined(DEBUGGER) + #include "debugger/debugger.moc.hpp" + #include "debugger/hexeditor.moc.hpp" + #include "debugger/tracer.moc.hpp" + + #include "debugger/tools/disassembler.moc.hpp" + #include "debugger/tools/breakpoint.moc.hpp" + #include "debugger/tools/memory.moc.hpp" + #include "debugger/tools/properties.moc.hpp" + + #include "debugger/ppu/layer-toggle.moc.hpp" + #include "debugger/ppu/vram-viewer.moc.hpp" + #include "debugger/ppu/oam-viewer.moc.hpp" + #include "debugger/ppu/cgram-viewer.moc.hpp" + + #include "debugger/misc/debugger-options.moc.hpp" +#endif + +#include "input/input.hpp" + +#include "link/filter.hpp" +#include "link/reader.hpp" + +#include "movie/movie.hpp" + +#include "settings/settings.moc.hpp" +#include "settings/pixelshader.moc.hpp" +#include "settings/video.moc.hpp" +#include "settings/audio.moc.hpp" +#include "settings/input.moc.hpp" +#include "settings/paths.moc.hpp" +#include "settings/advanced.moc.hpp" + +#include "state/state.hpp" + +#include "tools/tools.moc.hpp" +#include "tools/cheateditor.moc.hpp" +#include "tools/cheatfinder.moc.hpp" +#include "tools/statemanager.moc.hpp" + +#include "utility/utility.hpp" + +struct Style { + static const char Monospace[64]; + + enum { + WindowMargin = 5, + WidgetSpacing = 5, + SeparatorSpacing = 5, + }; +}; + +extern string filepath(const char *filename, const char *filepath); + +#if !defined(PLATFORM_WIN) + #define mkdir(path) (mkdir)(path, 0755) +#endif diff --git a/libmednahawk/src/snes/src/ui_qt/utility/system-state.cpp b/libmednahawk/src/snes/src/ui_qt/utility/system-state.cpp new file mode 100644 index 0000000000..925ee09d93 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/utility/system-state.cpp @@ -0,0 +1,102 @@ +void Utility::modifySystemState(system_state_t systemState) { + diskBrowser->hide(); //avoid edge case oddities (eg movie playback window still open from previous game) + state.resetHistory(); //do not allow rewinding past a destructive system action + movie.stop(); //movies cannot continue to record after destructive system actions + + video.clear(); + audio.clear(); + + switch(systemState) { + case LoadCartridge: { + //must call cartridge.load_cart_...() before calling modifySystemState(LoadCartridge) + if(SNES::cartridge.loaded() == false) break; + cartridge.loadCheats(); + + application.power = true; + application.pause = false; + SNES::system.power(); + + //warn if unsupported hardware detected + string chip; + if(0); + else if(SNES::cartridge.has_dsp3()) chip = "DSP3"; + else if(SNES::cartridge.has_st011()) chip = "ST011"; + else if(SNES::cartridge.has_st018()) chip = "ST018"; + if(chip != "") { + QMessageBox::warning(mainWindow, "Warning", string() + << "

    Warning:
    The " << chip << " chip was detected, which is not fully emulated yet.
    " + << "It is unlikely that this title will work properly.

    "); + } + + showMessage(string() + << "Loaded " << cartridge.name + << (cartridge.patchApplied ? ", and applied UPS patch." : ".")); + mainWindow->setWindowTitle(string() << cartridge.name << " - " << bsnesTitle << " v" << bsnesVersion); + #if defined(DEBUGGER) + debugger->echo(string() << "Loaded " << cartridge.name << ".
    "); + #endif + } break; + + case UnloadCartridge: { + if(SNES::cartridge.loaded() == false) break; //no cart to unload? + cartridge.saveCheats(); + + SNES::system.unload(); //flush all memory to memory::* devices + cartridge.saveMemory(); //save memory to disk + SNES::cartridge.unload(); //deallocate memory + + application.power = false; + application.pause = true; + + showMessage(string() << "Unloaded " << cartridge.name << "."); + mainWindow->setWindowTitle(string() << bsnesTitle << " v" << bsnesVersion); + } break; + + case PowerOn: { + if(SNES::cartridge.loaded() == false || application.power == true) break; + + application.power = true; + application.pause = false; + SNES::system.power(); + + showMessage("Power on."); + } break; + + case PowerOff: { + if(SNES::cartridge.loaded() == false || application.power == false) break; + + application.power = false; + application.pause = true; + + showMessage("Power off."); + } break; + + case PowerCycle: { + if(SNES::cartridge.loaded() == false) break; + + application.power = true; + application.pause = false; + SNES::system.power(); + + showMessage("System power was cycled."); + } break; + + case Reset: { + if(SNES::cartridge.loaded() == false || application.power == false) break; + + application.pause = false; + SNES::system.reset(); + + showMessage("System was reset."); + } break; + } + + mainWindow->syncUi(); + #if defined(DEBUGGER) + debugger->modifySystemState(systemState); + debugger->synchronize(); + #endif + cheatEditorWindow->synchronize(); + cheatFinderWindow->synchronize(); + stateManagerWindow->reload(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/utility/utility.cpp b/libmednahawk/src/snes/src/ui_qt/utility/utility.cpp new file mode 100644 index 0000000000..e33286a214 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/utility/utility.cpp @@ -0,0 +1,146 @@ +Utility utility; + +#include "system-state.cpp" +#include "window.cpp" + +void Utility::inputEvent(uint16_t scancode) { + //release mouse capture if escape key is pressed on any keyboard + for(unsigned i = 0; i < Keyboard::Count; i++) { + if(scancode == keyboard(i)[Keyboard::Escape] && mapper().state(scancode)) { + if(mainWindow->isActive() && input.acquired()) { + input.unacquire(); + return; + } + } + } +} + +//display message in main window statusbar area for three seconds +void Utility::showMessage(const char *message) { + mainWindow->statusBar->showMessage(string() << message, 3000); +} + +//updates system state text at bottom-right of main window statusbar +void Utility::updateSystemState() { + string text; + + if(SNES::cartridge.loaded() == false) { + text = "No cartridge loaded"; + } else if(application.power == false) { + text = "Power off"; + } else if(application.pause == true || application.autopause == true) { + text = "Paused"; + } else if(SNES::ppu.status.frames_updated == true) { + SNES::ppu.status.frames_updated = false; + text << SNES::ppu.status.frames_executed; + text << " fps"; + } else { + //nothing to update + return; + } + + mainWindow->systemState->setText(text); +} + +void Utility::acquireMouse() { + if(SNES::cartridge.loaded()) { + if(SNES::config.controller_port1 == SNES::Input::DeviceMouse + || SNES::config.controller_port2 == SNES::Input::DeviceMouse + || SNES::config.controller_port2 == SNES::Input::DeviceSuperScope + || SNES::config.controller_port2 == SNES::Input::DeviceJustifier + || SNES::config.controller_port2 == SNES::Input::DeviceJustifiers + ) input.acquire(); + } +} + +void Utility::unacquireMouse() { + input.unacquire(); +} + +void Utility::updateAvSync() { + video.set(Video::Synchronize, config().video.synchronize); + audio.set(Audio::Synchronize, config().audio.synchronize); +} + +void Utility::updateVideoMode() { + if(config().video.context->region == 0) { + SNES::video.set_mode(SNES::Video::ModeNTSC); + } else { + SNES::video.set_mode(SNES::Video::ModePAL); + } +} + +void Utility::updateColorFilter() { + filter.contrast = config().video.contrastAdjust; + filter.brightness = config().video.brightnessAdjust; + filter.gamma = 100 + config().video.gammaAdjust; + filter.gamma_ramp = config().video.enableGammaRamp; + filter.colortable_update(); +} + +void Utility::updatePixelShader() { + string filedata; + + if(filedata.readfile(config().path.fragmentShader)) { + video.set(Video::FragmentShader, (const char*)filedata); + } else { + video.set(Video::FragmentShader, (const char*)0); + } + + if(filedata.readfile(config().path.vertexShader)) { + video.set(Video::VertexShader, (const char*)filedata); + } else { + video.set(Video::VertexShader, (const char*)0); + } +} + +void Utility::updateHardwareFilter() { + video.set(Video::Filter, config().video.context->hwFilter); +} + +void Utility::updateSoftwareFilter() { + filter.renderer = config().video.context->swFilter; +} + +void Utility::updateEmulationSpeed() { + config().system.speed = max(0, min(4, (signed)config().system.speed)); + + double scale[] = { + config().system.speedSlowest / 100.0, + config().system.speedSlow / 100.0, + config().system.speedNormal / 100.0, + config().system.speedFast / 100.0, + config().system.speedFastest / 100.0, + }; + unsigned outfreq = config().audio.outputFrequency; + unsigned infreq = config().audio.inputFrequency * scale[config().system.speed] + 0.5; + + audio.set(Audio::Resample, true); //always resample (required for volume adjust + frequency scaler) + audio.set(Audio::ResampleRatio, (double)infreq / (double)outfreq); +} + +void Utility::updateControllers() { + SNES::input.port_set_device(0, SNES::config.controller_port1); + SNES::input.port_set_device(1, SNES::config.controller_port2); + + switch(config().input.port1) { default: + case ControllerPort1::None: mapper().port1 = 0; break; + case ControllerPort1::Gamepad: mapper().port1 = &Controllers::gamepad1; break; + case ControllerPort1::Asciipad: mapper().port1 = &Controllers::asciipad1; break; + case ControllerPort1::Multitap: mapper().port1 = &Controllers::multitap1; break; + case ControllerPort1::Mouse: mapper().port1 = &Controllers::mouse1; break; + } + + switch(config().input.port2) { default: + case ControllerPort2::None: mapper().port2 = 0; break; + case ControllerPort2::Gamepad: mapper().port2 = &Controllers::gamepad2; break; + case ControllerPort2::Asciipad: mapper().port2 = &Controllers::asciipad2; break; + case ControllerPort2::Multitap: mapper().port2 = &Controllers::multitap2; break; + case ControllerPort2::Mouse: mapper().port2 = &Controllers::mouse2; break; + case ControllerPort2::SuperScope: mapper().port2 = &Controllers::superscope; break; + case ControllerPort2::Justifier: mapper().port2 = &Controllers::justifier1; break; + case ControllerPort2::Justifiers: mapper().port2 = &Controllers::justifiers; break; + } + + mainWindow->syncUi(); +} diff --git a/libmednahawk/src/snes/src/ui_qt/utility/utility.hpp b/libmednahawk/src/snes/src/ui_qt/utility/utility.hpp new file mode 100644 index 0000000000..994e03bc5b --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/utility/utility.hpp @@ -0,0 +1,39 @@ +class Utility { +public: + //utility.cpp + void inputEvent(uint16_t scancode); + void showMessage(const char *message); + void updateSystemState(); + void acquireMouse(); + void unacquireMouse(); + + void updateAvSync(); + void updateVideoMode(); + void updateColorFilter(); + void updatePixelShader(); + void updateHardwareFilter(); + void updateSoftwareFilter(); + void updateEmulationSpeed(); + void updateControllers(); + + //system-state.cpp + enum system_state_t { LoadCartridge, UnloadCartridge, PowerOn, PowerOff, PowerCycle, Reset }; + void modifySystemState(system_state_t state); + + //window.cpp + void updateFullscreenState(); + void constrainSize(unsigned &x, unsigned &y, unsigned max); + void resizeMainWindow(); + void toggleSynchronizeVideo(); + void toggleSynchronizeAudio(); + void setNtscMode(); + void setPalMode(); + void toggleSmoothVideoOutput(); + void toggleAspectCorrection(); + void setScale(unsigned); + void toggleFullscreen(); + void toggleMenubar(); + void toggleStatusbar(); +}; + +extern Utility utility; diff --git a/libmednahawk/src/snes/src/ui_qt/utility/window.cpp b/libmednahawk/src/snes/src/ui_qt/utility/window.cpp new file mode 100644 index 0000000000..5316141268 --- /dev/null +++ b/libmednahawk/src/snes/src/ui_qt/utility/window.cpp @@ -0,0 +1,158 @@ +void Utility::updateFullscreenState() { + video.clear(); + + if(config().video.isFullscreen == false) { + config().video.context = &config().video.windowed; + mainWindow->showNormal(); + mainWindow->menuBar->setVisible(true); + mainWindow->statusBar->setVisible(true); + } else { + config().video.context = &config().video.fullscreen; + mainWindow->showFullScreen(); + mainWindow->menuBar->setVisible(false); + mainWindow->statusBar->setVisible(false); + } + + QApplication::processEvents(); + #if defined(PLATFORM_X) + //Xlib requires time to propogate fullscreen state change message to window manager; + //if window is resized before this occurs, canvas may not resize correctly + usleep(50000); + #endif + + //refresh options that are unique to each video context + updateVideoMode(); + updateHardwareFilter(); + updateSoftwareFilter(); + mainWindow->syncUi(); +} + +//if max exceeds x: x is set to max, and y is scaled down to keep proportion to x +void Utility::constrainSize(unsigned &x, unsigned &y, unsigned max) { + if(x > max) { + double scalar = (double)max / (double)x; + y = (unsigned)((double)y * (double)scalar); + x = max; + } +} + +void Utility::resizeMainWindow() { + unsigned region = config().video.context->region; + unsigned multiplier = config().video.context->multiplier; + unsigned width = 256 * multiplier; + unsigned height = (region == 0 ? 224 : 239) * multiplier; + + if(config().video.context->correctAspectRatio) { + if(region == 0) { + width = (double)width * config().video.ntscAspectRatio + 0.5; //NTSC adjust + } else { + width = (double)width * config().video.palAspectRatio + 0.5; //PAL adjust + } + } + + if(config().video.isFullscreen == false) { + //get effective desktop work area region (ignore Windows taskbar, OS X dock, etc.) + QRect deskRect = QApplication::desktop()->availableGeometry(mainWindow); + + //ensure window size will not be larger than viewable desktop area + constrainSize(height, width, deskRect.height()); //- frameHeight); + constrainSize(width, height, deskRect.width()); //- frameWidth ); + + mainWindow->canvas->setFixedSize(width, height); + mainWindow->show(); + } else { + for(unsigned i = 0; i < 2; i++) { + unsigned iWidth = width, iHeight = height; + + constrainSize(iHeight, iWidth, mainWindow->canvasContainer->size().height()); + constrainSize(iWidth, iHeight, mainWindow->canvasContainer->size().width()); + + //center canvas onscreen; ensure it is not larger than viewable area + mainWindow->canvas->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + mainWindow->canvas->setFixedSize(iWidth, iHeight); + mainWindow->canvas->setMinimumSize(0, 0); + + usleep(2000); + QApplication::processEvents(); + } + } + + //workaround for Qt/Xlib bug: + //if window resize occurs with cursor over it, Qt shows Qt::Size*DiagCursor; + //so force it to show Qt::ArrowCursor, as expected + mainWindow->setCursor(Qt::ArrowCursor); + mainWindow->canvasContainer->setCursor(Qt::ArrowCursor); + mainWindow->canvas->setCursor(Qt::ArrowCursor); + + //workaround for DirectSound(?) bug: + //window resizing sometimes breaks audio sync, this call re-initializes it + updateAvSync(); +} + +void Utility::toggleSynchronizeVideo() { + mainWindow->settings_emulationSpeed_syncVideo->toggleChecked(); + config().video.synchronize = mainWindow->settings_emulationSpeed_syncVideo->isChecked(); + updateAvSync(); +} + +void Utility::toggleSynchronizeAudio() { + mainWindow->settings_emulationSpeed_syncAudio->toggleChecked(); + config().audio.synchronize = mainWindow->settings_emulationSpeed_syncAudio->isChecked(); + updateAvSync(); +} + +void Utility::setNtscMode() { + config().video.context->region = 0; + updateVideoMode(); + resizeMainWindow(); + mainWindow->shrink(); + mainWindow->syncUi(); +} + +void Utility::setPalMode() { + config().video.context->region = 1; + updateVideoMode(); + resizeMainWindow(); + mainWindow->shrink(); + mainWindow->syncUi(); +} + +void Utility::toggleSmoothVideoOutput() { + mainWindow->settings_smoothVideo->toggleChecked(); + config().video.context->hwFilter = mainWindow->settings_smoothVideo->isChecked(); + updateHardwareFilter(); + mainWindow->syncUi(); +} + +void Utility::toggleAspectCorrection() { + mainWindow->settings_videoMode_correctAspectRatio->toggleChecked(); + config().video.context->correctAspectRatio = mainWindow->settings_videoMode_correctAspectRatio->isChecked(); + resizeMainWindow(); + mainWindow->shrink(); +} + +void Utility::setScale(unsigned scale) { + config().video.context->multiplier = scale; + resizeMainWindow(); + mainWindow->shrink(); + mainWindow->syncUi(); +} + +void Utility::toggleFullscreen() { + config().video.isFullscreen = !config().video.isFullscreen; + updateFullscreenState(); + resizeMainWindow(); + mainWindow->syncUi(); +} + +void Utility::toggleMenubar() { + mainWindow->menuBar->setVisible(!mainWindow->menuBar->isVisibleTo(mainWindow)); + resizeMainWindow(); + mainWindow->shrink(); +} + +void Utility::toggleStatusbar() { + mainWindow->statusBar->setVisible(!mainWindow->statusBar->isVisibleTo(mainWindow)); + resizeMainWindow(); + mainWindow->shrink(); +} diff --git a/libmednahawk/src/sound.h b/libmednahawk/src/sound.h new file mode 100644 index 0000000000..c599d6cfc0 --- /dev/null +++ b/libmednahawk/src/sound.h @@ -0,0 +1,24 @@ +#if 0 + +class +{ + public: + + MDFN_SoundBuffer(void); + ~MDFN_SoundBuffer(); + + void Clear(void); + + void SetChannels(int ch); + + private: + + int channels; + + int32 Alloced; // Size of memory backing the buffer, in sound frames. + int32 InBufferCount; // Number of sound frames currently in buffer. + + int16 *buffer; +} MDFN_SoundBuffer; + +#endif diff --git a/libmednahawk/src/sound/Blip_Buffer.cpp b/libmednahawk/src/sound/Blip_Buffer.cpp new file mode 100644 index 0000000000..dfa4f88047 --- /dev/null +++ b/libmednahawk/src/sound/Blip_Buffer.cpp @@ -0,0 +1,455 @@ +// Blip_Buffer 0.4.1. http://www.slack.net/~ant/ + +#include + +#include +#include +#include +#include +#include + +/* Copyright (C) 2003-2006 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. You should have received a copy of the GNU Lesser General Public +License along with this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#ifdef BLARGG_ENABLE_OPTIMIZER + #include BLARGG_ENABLE_OPTIMIZER +#endif + +int const silent_buf_size = 1; // size used for Silent_Blip_Buffer + +Blip_Buffer::Blip_Buffer() +{ + factor_ = (blip_u64)ULLONG_MAX; + offset_ = 0; + buffer_ = 0; + buffer_size_ = 0; + sample_rate_ = 0; + reader_accum_ = 0; + bass_shift_ = 0; + clock_rate_ = 0; + bass_freq_ = 16; + length_ = 0; + + // assumptions code makes about implementation-defined features + #ifndef NDEBUG + // right shift of negative value preserves sign + buf_t_ i = -0x7FFFFFFE; + assert( (i >> 1) == -0x3FFFFFFF ); + + // casting to short truncates to 16 bits and sign-extends + i = 0x18000; + assert( (short) i == -0x8000 ); + #endif +} + +Blip_Buffer::~Blip_Buffer() +{ + if ( buffer_size_ != silent_buf_size ) + free( buffer_ ); +} + +Silent_Blip_Buffer::Silent_Blip_Buffer() +{ + factor_ = 0; + buffer_ = buf; + buffer_size_ = silent_buf_size; + memset( buf, 0, sizeof buf ); // in case machine takes exception for signed overflow +} + +void Blip_Buffer::clear( int entire_buffer ) +{ + offset_ = 0; + reader_accum_ = 0; + modified_ = 0; + if ( buffer_ ) + { + long count = (entire_buffer ? buffer_size_ : samples_avail()); + memset( buffer_, 0, (count + blip_buffer_extra_) * sizeof (buf_t_) ); + } +} + +Blip_Buffer::blargg_err_t Blip_Buffer::set_sample_rate( long new_rate, int msec ) +{ + if ( buffer_size_ == silent_buf_size ) + { + assert( 0 ); + return "Internal (tried to resize Silent_Blip_Buffer)"; + } + + // start with maximum length that resampled time can represent + blip_s64 new_size = (ULLONG_MAX >> BLIP_BUFFER_ACCURACY) - blip_buffer_extra_ - 64; + + // simple safety check, since code elsewhere may not be safe for sizes approaching (2 ^ 31). + if(new_size > ((1LL << 30) - 1)) + new_size = (1LL << 30) - 1; + + if ( msec != blip_max_length ) + { + blip_s64 s = ((blip_s64)new_rate * (msec + 1) + 999) / 1000; + if ( s < new_size ) + new_size = s; + else + assert( 0 ); // fails if requested buffer length exceeds limit + } + + if ( buffer_size_ != new_size ) + { + void* p = realloc( buffer_, (new_size + blip_buffer_extra_) * sizeof *buffer_ ); + if ( !p ) + return "Out of memory"; + + //if(new_size > buffer_size_) + // memset(buffer_ + buffer_size_, 0, (new_size + blip_buffer_extra_) * sizeof *buffer_ + + buffer_ = (buf_t_*) p; + } + + buffer_size_ = new_size; + assert( buffer_size_ != silent_buf_size ); + + // update things based on the sample rate + sample_rate_ = new_rate; + length_ = new_size * 1000 / new_rate - 1; + if ( msec ) + assert( length_ == msec ); // ensure length is same as that passed in + if ( clock_rate_ ) + clock_rate( clock_rate_ ); + bass_freq( bass_freq_ ); + + clear(); + + return 0; // success +} + +blip_resampled_time_t Blip_Buffer::clock_rate_factor( long rate ) const +{ + double ratio = (double) sample_rate_ / rate; + blip_s64 factor = (blip_s64) floor( ratio * (1LL << BLIP_BUFFER_ACCURACY) + 0.5 ); + assert( factor > 0 || !sample_rate_ ); // fails if clock/output ratio is too large + return (blip_resampled_time_t) factor; +} + +void Blip_Buffer::bass_freq( int freq ) +{ + bass_freq_ = freq; + int shift = 31; + if ( freq > 0 ) + { + shift = 13; + long f = (freq << 16) / sample_rate_; + while ( (f >>= 1) && --shift ) { } + } + bass_shift_ = shift; +} + +void Blip_Buffer::end_frame( blip_time_t t ) +{ + offset_ += t * factor_; + assert( samples_avail() <= (long) buffer_size_ ); // time outside buffer length +} + +void Blip_Buffer::remove_silence( long count ) +{ + assert( count <= samples_avail() ); // tried to remove more samples than available + offset_ -= (blip_resampled_time_t) count << BLIP_BUFFER_ACCURACY; +} + +long Blip_Buffer::count_samples( blip_time_t t ) const +{ + unsigned long last_sample = resampled_time( t ) >> BLIP_BUFFER_ACCURACY; + unsigned long first_sample = offset_ >> BLIP_BUFFER_ACCURACY; + return (long) (last_sample - first_sample); +} + +blip_time_t Blip_Buffer::count_clocks( long count ) const +{ + if ( !factor_ ) + { + assert( 0 ); // sample rate and clock rates must be set first + return 0; + } + + if ( count > buffer_size_ ) + count = buffer_size_; + blip_resampled_time_t time = (blip_resampled_time_t) count << BLIP_BUFFER_ACCURACY; + return (blip_time_t) ((time - offset_ + factor_ - 1) / factor_); +} + +void Blip_Buffer::remove_samples( long count ) +{ + if ( count ) + { + remove_silence( count ); + + // copy remaining samples to beginning and clear old samples + long remain = samples_avail() + blip_buffer_extra_; + memmove( buffer_, buffer_ + count, remain * sizeof *buffer_ ); + memset( buffer_ + remain, 0, count * sizeof *buffer_ ); + } +} + +// Blip_Synth_ + +Blip_Synth_Fast_::Blip_Synth_Fast_() +{ + buf = 0; + last_amp = 0; + delta_factor = 0; +} + +void Blip_Synth_Fast_::volume_unit( double new_unit ) +{ + delta_factor = int (new_unit * (1L << blip_sample_bits) + 0.5); +} + +#if !BLIP_BUFFER_FAST + +Blip_Synth_::Blip_Synth_( short* p, int w ) : + impulses( p ), + width( w ) +{ + volume_unit_ = 0.0; + kernel_unit = 0; + buf = 0; + last_amp = 0; + delta_factor = 0; +} + +#undef PI +#define PI 3.1415926535897932384626433832795029 + +static void gen_sinc( float* out, int count, double oversample, double treble, double cutoff ) +{ + if ( cutoff >= 0.999 ) + cutoff = 0.999; + + if ( treble < -300.0 ) + treble = -300.0; + if ( treble > 5.0 ) + treble = 5.0; + + double const maxh = 4096.0; + double const rolloff = pow( 10.0, 1.0 / (maxh * 20.0) * treble / (1.0 - cutoff) ); + double const pow_a_n = pow( rolloff, maxh - maxh * cutoff ); + double const to_angle = PI / 2 / maxh / oversample; + for ( int i = 0; i < count; i++ ) + { + double angle = ((i - count) * 2 + 1) * to_angle; + double c = rolloff * cos( (maxh - 1.0) * angle ) - cos( maxh * angle ); + double cos_nc_angle = cos( maxh * cutoff * angle ); + double cos_nc1_angle = cos( (maxh * cutoff - 1.0) * angle ); + double cos_angle = cos( angle ); + + c = c * pow_a_n - rolloff * cos_nc1_angle + cos_nc_angle; + double d = 1.0 + rolloff * (rolloff - cos_angle - cos_angle); + double b = 2.0 - cos_angle - cos_angle; + double a = 1.0 - cos_angle - cos_nc_angle + cos_nc1_angle; + + out [i] = (float) ((a * d + c * b) / (b * d)); // a / b + c / d + } +} + +void blip_eq_t::generate( float* out, int count ) const +{ + // lower cutoff freq for narrow kernels with their wider transition band + // (8 points->1.49, 16 points->1.15) + double oversample = blip_res * 2.25 / count + 0.85; + double half_rate = sample_rate * 0.5; + if ( cutoff_freq ) + oversample = half_rate / cutoff_freq; + double cutoff = rolloff_freq * oversample / half_rate; + + gen_sinc( out, count, blip_res * oversample, treble, cutoff ); + + // apply (half of) hamming window + double to_fraction = PI / (count - 1); + for ( int i = count; i--; ) + out [i] *= 0.54f - 0.46f * (float) cos( i * to_fraction ); +} + +void Blip_Synth_::adjust_impulse() +{ + // sum pairs for each phase and add error correction to end of first half + int const size = impulses_size(); + for ( int p = blip_res; p-- >= blip_res / 2; ) + { + int p2 = blip_res - 2 - p; + long error = kernel_unit; + for ( int i = 1; i < size; i += blip_res ) + { + error -= impulses [i + p ]; + error -= impulses [i + p2]; + } + if ( p == p2 ) + error /= 2; // phase = 0.5 impulse uses same half for both sides + impulses [size - blip_res + p] += (short) error; + //printf( "error: %ld\n", error ); + } + + //for ( int i = blip_res; i--; printf( "\n" ) ) + // for ( int j = 0; j < width / 2; j++ ) + // printf( "%5ld,", impulses [j * blip_res + i + 1] ); +} + +void Blip_Synth_::treble_eq( blip_eq_t const& eq ) +{ + float fimpulse [blip_res / 2 * (blip_widest_impulse_ - 1) + blip_res * 2]; + + int const half_size = blip_res / 2 * (width - 1); + eq.generate( &fimpulse [blip_res], half_size ); + + int i; + + // need mirror slightly past center for calculation + for ( i = blip_res; i--; ) + fimpulse [blip_res + half_size + i] = fimpulse [blip_res + half_size - 1 - i]; + + // starts at 0 + for ( i = 0; i < blip_res; i++ ) + fimpulse [i] = 0.0f; + + // find rescale factor + double total = 0.0; + for ( i = 0; i < half_size; i++ ) + total += fimpulse [blip_res + i]; + + //double const base_unit = 44800.0 - 128 * 18; // allows treble up to +0 dB + //double const base_unit = 37888.0; // allows treble to +5 dB + double const base_unit = 32768.0; // necessary for blip_unscaled to work + double rescale = base_unit / 2 / total; + kernel_unit = (long) base_unit; + + // integrate, first difference, rescale, convert to int + double sum = 0.0; + double next = 0.0; + int const impulses_size_local = this->impulses_size(); + for ( i = 0; i < impulses_size_local; i++ ) + { + impulses [i] = (short) floor( (next - sum) * rescale + 0.5 ); + sum += fimpulse [i]; + next += fimpulse [i + blip_res]; + } + adjust_impulse(); + + // volume might require rescaling + double vol = volume_unit_; + if ( vol ) + { + volume_unit_ = 0.0; + volume_unit( vol ); + } +} + +void Blip_Synth_::volume_unit( double new_unit ) +{ + if ( new_unit != volume_unit_ ) + { + // use default eq if it hasn't been set yet + if ( !kernel_unit ) + treble_eq( -8.0 ); + + volume_unit_ = new_unit; + double factor = new_unit * (1L << blip_sample_bits) / kernel_unit; + + if ( factor > 0.0 ) + { + int shift = 0; + + // if unit is really small, might need to attenuate kernel + while ( factor < 2.0 ) + { + shift++; + factor *= 2.0; + } + + if ( shift ) + { + kernel_unit >>= shift; + assert( kernel_unit > 0 ); // fails if volume unit is too low + + // keep values positive to avoid round-towards-zero of sign-preserving + // right shift for negative values + long offset = 0x8000 + (1 << (shift - 1)); + long offset2 = 0x8000 >> shift; + for ( int i = impulses_size(); i--; ) + impulses [i] = (short) (((impulses [i] + offset) >> shift) - offset2); + adjust_impulse(); + } + } + delta_factor = (int) floor( factor + 0.5 ); + //printf( "delta_factor: %d, kernel_unit: %d\n", delta_factor, kernel_unit ); + } +} +#endif + +long Blip_Buffer::read_samples( blip_sample_t* BLIP_RESTRICT out, long max_samples, int stereo ) +{ + long count = samples_avail(); + if ( count > max_samples ) + count = max_samples; + + if ( count ) + { + int const bass = BLIP_READER_BASS( *this ); + BLIP_READER_BEGIN( reader, *this ); + + if ( !stereo ) + { + for ( blip_long n = count; n; --n ) + { + blip_long s = BLIP_READER_READ( reader ); + if ( (blip_sample_t) s != s ) + s = 0x7FFF - (s >> 24); + *out++ = (blip_sample_t) s; + BLIP_READER_NEXT( reader, bass ); + } + } + else + { + for ( blip_long n = count; n; --n ) + { + blip_long s = BLIP_READER_READ( reader ); + if ( (blip_sample_t) s != s ) + s = 0x7FFF - (s >> 24); + *out = (blip_sample_t) s; + out += 2; + BLIP_READER_NEXT( reader, bass ); + } + } + BLIP_READER_END( reader, *this ); + + remove_samples( count ); + } + return count; +} + +void Blip_Buffer::mix_samples( blip_sample_t const* in, long count ) +{ + if ( buffer_size_ == silent_buf_size ) + { + assert( 0 ); + return; + } + + buf_t_* out = buffer_ + (offset_ >> BLIP_BUFFER_ACCURACY) + blip_widest_impulse_ / 2; + + int const sample_shift = blip_sample_bits - 16; + int prev = 0; + while ( count-- ) + { + blip_long s = (blip_long) *in++ << sample_shift; + *out += s - prev; + prev = s; + ++out; + } + *out -= prev; +} + diff --git a/libmednahawk/src/sound/Fir_Resampler.cpp b/libmednahawk/src/sound/Fir_Resampler.cpp new file mode 100644 index 0000000000..aa5b29e456 --- /dev/null +++ b/libmednahawk/src/sound/Fir_Resampler.cpp @@ -0,0 +1,199 @@ +// Game_Music_Emu 0.5.2. http://www.slack.net/~ant/ + +#include "Fir_Resampler.h" + +#include +#include +#include +#include + +/* Copyright (C) 2004-2006 Shay Green. This module is free software; you +can redistribute it and/or modify it under the terms of the GNU Lesser +General Public License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. This +module is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +details. You should have received a copy of the GNU Lesser General Public +License along with this module; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include "blargg_source.h" + +#undef PI +#define PI 3.1415926535897932384626433832795029 + +static void gen_sinc( double rolloff, int width, double offset, double spacing, double scale, + int count, short* out ) +{ + double const maxh = 256; + double const step = PI / maxh * spacing; + double const to_w = maxh * 2 / width; + double const pow_a_n = pow( rolloff, maxh ); + scale /= maxh * 2; + + double angle = (count / 2 - 1 + offset) * -step; + while ( count-- ) + { + *out++ = 0; + double w = angle * to_w; + if ( fabs( w ) < PI ) + { + double rolloff_cos_a = rolloff * cos( angle ); + double num = 1 - rolloff_cos_a - + pow_a_n * cos( maxh * angle ) + + pow_a_n * rolloff * cos( (maxh - 1) * angle ); + double den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; + double sinc = scale * num / den - scale; + + out [-1] = (short) (cos( w ) * sinc + sinc); + } + angle += step; + } +} + +Fir_Resampler_::Fir_Resampler_( int width, sample_t* impulses_ ) : + width_( width ), + write_offset( width * stereo - stereo ), + impulses( impulses_ ) +{ + write_pos = 0; + res = 1; + imp_phase = 0; + skip_bits = 0; + step = stereo; + ratio_ = 1.0; +} + +Fir_Resampler_::~Fir_Resampler_() { } + +void Fir_Resampler_::clear() +{ + imp_phase = 0; + if ( buf.size() ) + { + write_pos = &buf [write_offset]; + memset( buf.begin(), 0, write_offset * sizeof buf [0] ); + } +} + +blargg_err_t Fir_Resampler_::buffer_size( int new_size ) +{ + RETURN_ERR( buf.resize( new_size + write_offset ) ); + clear(); + return 0; +} + +double Fir_Resampler_::time_ratio( double new_factor, double rolloff, double gain ) +{ + ratio_ = new_factor; + + double fstep = 0.0; + { + double least_error = 2; + double pos = 0; + res = -1; + for ( int r = 1; r <= max_res; r++ ) + { + pos += ratio_; + double nearest = floor( pos + 0.5 ); + double error = fabs( pos - nearest ); + if ( error < least_error ) + { + res = r; + fstep = nearest / res; + least_error = error; + } + } + } + + skip_bits = 0; + + step = stereo * (int) floor( fstep ); + + ratio_ = fstep; + fstep = fmod( fstep, 1.0 ); + + double filter = (ratio_ < 1.0) ? 1.0 : 1.0 / ratio_; + double pos = 0.0; + input_per_cycle = 0; + for ( int i = 0; i < res; i++ ) + { + gen_sinc( rolloff, int (width_ * filter + 1) & ~1, pos, filter, + double (0x7FFF * gain * filter), + (int) width_, impulses + i * width_ ); + + pos += fstep; + input_per_cycle += step; + if ( pos >= 0.9999999 ) + { + pos -= 1.0; + skip_bits |= 1 << i; + input_per_cycle++; + } + } + + clear(); + + return ratio_; +} + +int Fir_Resampler_::input_needed( blargg_long output_count ) const +{ + blargg_long input_count = 0; + + unsigned long skip = skip_bits >> imp_phase; + int remain = res - imp_phase; + while ( (output_count -= 2) > 0 ) + { + input_count += step + (skip & 1) * stereo; + skip >>= 1; + if ( !--remain ) + { + skip = skip_bits; + remain = res; + } + output_count -= 2; + } + + long input_extra = input_count - (write_pos - &buf [(width_ - 1) * stereo]); + if ( input_extra < 0 ) + input_extra = 0; + return input_extra; +} + +int Fir_Resampler_::avail_( blargg_long input_count ) const +{ + int cycle_count = input_count / input_per_cycle; + int output_count = cycle_count * res * stereo; + input_count -= cycle_count * input_per_cycle; + + blargg_ulong skip = skip_bits >> imp_phase; + int remain = res - imp_phase; + while ( input_count >= 0 ) + { + input_count -= step + (skip & 1) * stereo; + skip >>= 1; + if ( !--remain ) + { + skip = skip_bits; + remain = res; + } + output_count += 2; + } + return output_count; +} + +int Fir_Resampler_::skip_input( long count ) +{ + int remain = write_pos - buf.begin(); + int max_count = remain - width_ * stereo; + if ( count > max_count ) + count = max_count; + + remain -= count; + write_pos = &buf [remain]; + memmove( buf.begin(), &buf [count], remain * sizeof buf [0] ); + + return count; +} diff --git a/libmednahawk/src/sound/Makefile.am b/libmednahawk/src/sound/Makefile.am new file mode 100644 index 0000000000..af38caed9f --- /dev/null +++ b/libmednahawk/src/sound/Makefile.am @@ -0,0 +1,7 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip + +noinst_LIBRARIES = libmdfnsound.a + +libmdfnsound_a_SOURCES = Blip_Buffer.cpp Stereo_Buffer.cpp Fir_Resampler.cpp WAVRecord.cpp diff --git a/libmednahawk/src/sound/Makefile.in b/libmednahawk/src/sound/Makefile.in new file mode 100644 index 0000000000..991bfb4b61 --- /dev/null +++ b/libmednahawk/src/sound/Makefile.in @@ -0,0 +1,601 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/sound +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libmdfnsound_a_AR = $(AR) $(ARFLAGS) +libmdfnsound_a_LIBADD = +am_libmdfnsound_a_OBJECTS = Blip_Buffer.$(OBJEXT) \ + Stereo_Buffer.$(OBJEXT) Fir_Resampler.$(OBJEXT) \ + WAVRecord.$(OBJEXT) +libmdfnsound_a_OBJECTS = $(am_libmdfnsound_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libmdfnsound_a_SOURCES) +DIST_SOURCES = $(libmdfnsound_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_builddir)/include/blip +noinst_LIBRARIES = libmdfnsound.a +libmdfnsound_a_SOURCES = Blip_Buffer.cpp Stereo_Buffer.cpp Fir_Resampler.cpp WAVRecord.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sound/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/sound/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libmdfnsound.a: $(libmdfnsound_a_OBJECTS) $(libmdfnsound_a_DEPENDENCIES) + $(AM_V_at)-rm -f libmdfnsound.a + $(AM_V_AR)$(libmdfnsound_a_AR) libmdfnsound.a $(libmdfnsound_a_OBJECTS) $(libmdfnsound_a_LIBADD) + $(AM_V_at)$(RANLIB) libmdfnsound.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Blip_Buffer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Fir_Resampler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stereo_Buffer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WAVRecord.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/sound/Stereo_Buffer.cpp b/libmednahawk/src/sound/Stereo_Buffer.cpp new file mode 100644 index 0000000000..84787ea2f6 --- /dev/null +++ b/libmednahawk/src/sound/Stereo_Buffer.cpp @@ -0,0 +1,188 @@ + +// Blip_Buffer 0.3.0. http://www.slack.net/~ant/nes-emu/ + +#include + +/* Library Copyright (C) 2004 Shay Green. Blip_Buffer is free software; +you can redistribute it and/or modify it under the terms of the GNU +General Public License as published by the Free Software Foundation; +either version 2 of the License, or (at your option) any later version. +Stereo_Buffer is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. You should have received a copy of the GNU General +Public License along with Stereo_Buffer; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +Stereo_Buffer::Stereo_Buffer() { +} + +Stereo_Buffer::~Stereo_Buffer() { +} + +bool Stereo_Buffer::set_sample_rate( long rate, int msec ) +{ + for ( int i = 0; i < buf_count; i++ ) { + if ( bufs [i].set_sample_rate( rate, msec ) ) + { + return false; + } + } + + return true; +} + +void Stereo_Buffer::clock_rate( long rate ) +{ + for ( int i = 0; i < buf_count; i++ ) + bufs [i].clock_rate( rate ); +} + +void Stereo_Buffer::bass_freq( int bass ) +{ + for ( unsigned i = 0; i < buf_count; i++ ) + bufs [i].bass_freq( bass ); +} + +void Stereo_Buffer::clear() +{ + stereo_added = false; + was_stereo = false; + for ( int i = 0; i < buf_count; i++ ) + bufs [i].clear(); +} + +void Stereo_Buffer::end_frame( blip_time_t clock_count, bool stereo ) +{ + for ( unsigned i = 0; i < buf_count; i++ ) + { + bufs [i].end_frame( clock_count ); + } + stereo_added |= stereo; +} + + + +long Stereo_Buffer::read_samples( blip_sample_t* out, long max_samples ) +{ + long count = bufs [0].samples_avail(); + if ( count > max_samples / 2 ) + count = max_samples / 2; + if ( count ) + { + if ( stereo_added || was_stereo ) + { + mix_stereo( out, count ); + + bufs [0].remove_samples( count ); + bufs [1].remove_samples( count ); + bufs [2].remove_samples( count ); + } + else + { + mix_mono( out, count ); + + bufs [0].remove_samples( count ); + + bufs [1].remove_silence( count ); + bufs [2].remove_silence( count ); + } + + // to do: this might miss opportunities for optimization + if ( !bufs [0].samples_avail() ) { + was_stereo = stereo_added; + stereo_added = false; + } + } + + return count * 2; +} + +void Stereo_Buffer::mix_stereo( blip_sample_t* out, long count ) +{ + Blip_Reader left; + Blip_Reader right; + Blip_Reader center; + + left.begin( bufs [1] ); + right.begin( bufs [2] ); + int bass = center.begin( bufs [0] ); + + while ( count-- ) + { + int c = center.read(); + out [0] = c + left.read(); + out [1] = c + right.read(); + out += 2; + + center.next( bass ); + left.next( bass ); + right.next( bass ); + } + + center.end( bufs [0] ); + right.end( bufs [2] ); + left.end( bufs [1] ); +} + +void Stereo_Buffer::mix_stereo( float* out, long count ) +{ + Blip_Reader left; + Blip_Reader right; + Blip_Reader center; + + left.begin( bufs [1] ); + right.begin( bufs [2] ); + int bass = center.begin( bufs [0] ); + + while ( count-- ) + { + int c = center.read(); + out [0] = (float)(c + left.read()) / 32768; + out [1] = (float)(c + right.read()) / 32768; + out += 2; + + center.next( bass ); + left.next( bass ); + right.next( bass ); + } + + center.end( bufs [0] ); + right.end( bufs [2] ); + left.end( bufs [1] ); +} + +void Stereo_Buffer::mix_mono( blip_sample_t* out, long count ) +{ + Blip_Reader in; + int bass = in.begin( bufs [0] ); + + while ( count-- ) + { + int sample = in.read(); + out [0] = sample; + out [1] = sample; + out += 2; + in.next( bass ); + } + + in.end( bufs [0] ); +} + +void Stereo_Buffer::mix_mono( float* out, long count ) +{ + Blip_Reader in; + int bass = in.begin( bufs [0] ); + + while ( count-- ) + { + int sample = in.read(); + out [0] = (float)(sample) / 32768; + out [1] = (float)(sample) / 32768; + out += 2; + in.next( bass ); + } + + in.end( bufs [0] ); +} + diff --git a/libmednahawk/src/sound/WAVRecord.cpp b/libmednahawk/src/sound/WAVRecord.cpp new file mode 100644 index 0000000000..ce8e3dcf4b --- /dev/null +++ b/libmednahawk/src/sound/WAVRecord.cpp @@ -0,0 +1,99 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "WAVRecord.h" +#include + +WAVRecord::WAVRecord(const char *path, double SoundRate_arg, uint32 SoundChan_arg) : wavfile(path, FileWrapper::MODE_WRITE_SAFE) +{ + Finished = false; + PCMBytesWritten = 0; + + SoundRate = SoundRate_arg; + SoundChan = SoundChan_arg; + + memset(&raw_headers, 0, sizeof(raw_headers)); + + MDFN_en32msb(&raw_headers[0x00], 0x52494646); // "RIFF" + // @ 0x04 = total file size - 8 bytes + MDFN_en32msb(&raw_headers[0x08], 0x57415645); // "WAVE" + + + MDFN_en32msb(&raw_headers[0x0C], 0x666d7420); // "fmt " + MDFN_en32lsb(&raw_headers[0x10], 16); + MDFN_en16lsb(&raw_headers[0x14], 1); // PCM format + MDFN_en16lsb(&raw_headers[0x16], SoundChan); // Number of sound channels + MDFN_en32lsb(&raw_headers[0x18], SoundRate); // Sampling rate + MDFN_en32lsb(&raw_headers[0x1C], SoundRate * SoundChan * sizeof(int16)); //Byte rate + MDFN_en16lsb(&raw_headers[0x20], SoundChan * sizeof(int16)); // Block("audio frame" in Mednafen) alignment + MDFN_en16lsb(&raw_headers[0x22], sizeof(int16) * 8); // Bits per sample. + + MDFN_en32msb(&raw_headers[0x24], 0x64617461); // "data" + // @ 0x28 = bytes of PCM data following + + wavfile.write(raw_headers, sizeof(raw_headers)); +} + +void WAVRecord::WriteSound(const int16 *SoundBuf, uint32 NumSoundFrames) +{ + uint32 NumSoundSamples = NumSoundFrames * SoundChan; + + while(NumSoundSamples > 0) + { + int16 swap_buf[256]; + uint32 s_this_time = std::min((uint32)NumSoundSamples, (uint32)256); + + for(uint32 i = 0; i < s_this_time; i++) + MDFN_en16lsb((uint8 *)&swap_buf[i], SoundBuf[i]); + + wavfile.write(swap_buf, s_this_time * sizeof(int16)); + PCMBytesWritten += s_this_time * sizeof(int16); + NumSoundSamples -= s_this_time; + SoundBuf += s_this_time; + } + +} + + +void WAVRecord::Finish(void) +{ + if(Finished) + return; + + MDFN_en32lsb(&raw_headers[0x04], std::min(wavfile.tell() - 8, (int64)0xFFFFFFFFLL)); + + MDFN_en32lsb(&raw_headers[0x28], std::min(PCMBytesWritten, (int64)0xFFFFFFFFLL)); + + wavfile.seek(0, SEEK_SET); + wavfile.write(raw_headers, sizeof(raw_headers)); + wavfile.close(); + + Finished = true; +} + +WAVRecord::~WAVRecord() +{ + try + { + Finish(); + } + catch(std::exception &e) + { + MDFND_PrintError(e.what()); + } +} diff --git a/libmednahawk/src/sound/WAVRecord.h b/libmednahawk/src/sound/WAVRecord.h new file mode 100644 index 0000000000..3b806e5cf6 --- /dev/null +++ b/libmednahawk/src/sound/WAVRecord.h @@ -0,0 +1,31 @@ +#ifndef __MDFN_WAVRECORD_H +#define __MDFN_WAVERECORD_H + +#include "../mednafen.h" +#include "../FileWrapper.h" + +class WAVRecord +{ + public: + + WAVRecord(const char *path, double SoundRate, uint32 SoundChan); + + void WriteSound(const int16 *SoundBuf, uint32 NumSoundFrames); + + void Finish(); + + ~WAVRecord(); + + private: + + FileWrapper wavfile; + bool Finished; + + uint8 raw_headers[0x2C]; + int64 PCMBytesWritten; + uint32 SoundRate; + uint32 SoundChan; +}; + + +#endif diff --git a/libmednahawk/src/sound/sound.cpp b/libmednahawk/src/sound/sound.cpp new file mode 100644 index 0000000000..1b462be415 --- /dev/null +++ b/libmednahawk/src/sound/sound.cpp @@ -0,0 +1,41 @@ +#include "../mednafen.h" +#include "../sound.h" + +#if 0 + +MDFN_SoundBuffer::MDFN_SoundBuffer(void) +{ + Alloced = 0; + FramesInBuffer = 0; + Channels = 0; + buffer = NULL; +} + +void MDFN_SoundBuffer::Clear(void) +{ + FramesInBuffer = 0; +} + +void MDFN_SoundBuffer::SetChannels(int ch) +{ + assert(ch == 1 || ch == 2); + + if(buffer && ch != Channels) + { + // If going from mono to stereo, half the + if(ch == 2) + Alloced >>= 1; + else + Alloced <<= 1; + } + Channels == ch; +} + +int16 *MDFN_SoundBuffer::BeginWrite(int32 frames) +{ + assert(Channels); + + if + +} +#endif diff --git a/libmednahawk/src/state-common.h b/libmednahawk/src/state-common.h new file mode 100644 index 0000000000..acaddebd05 --- /dev/null +++ b/libmednahawk/src/state-common.h @@ -0,0 +1,18 @@ +#ifndef __MDFN_STATE_COMMON_H +#define __MDFN_STATE_COMMON_H + +typedef struct +{ + int status[10]; + int current; + int current_movie; // For movies only, status(recording/playback) + + // The most recently-saved-to slot + int recently_saved; + + // R, G, B, R, G, B, R, G, B, ... for w * h * 3 + uint8 *gfx; + uint32 w, h; +} StateStatusStruct; + +#endif diff --git a/libmednahawk/src/state-driver.h b/libmednahawk/src/state-driver.h new file mode 100644 index 0000000000..4f0145afea --- /dev/null +++ b/libmednahawk/src/state-driver.h @@ -0,0 +1,19 @@ +#ifndef __MDFN_STATE_DRIVER_H +#define __MDFN_STATE_DRIVER_H + +#include "video.h" +#include "state-common.h" + +void MDFNI_SelectState(int); + +/* "fname" overrides the default save state filename code if non-NULL. */ +/* If suffix is set, just override the default suffix(mc0-mc9) */ +void MDFNI_SaveState(const char *fname, const char *suffix, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths); +void MDFNI_LoadState(const char *fname, const char *suffix); +void MDFNI_EnableStateRewind(int enable); + + +void MDFND_SetStateStatus(StateStatusStruct *status); +void MDFND_SetMovieStatus(StateStatusStruct *status); + +#endif diff --git a/libmednahawk/src/state.cpp b/libmednahawk/src/state.cpp new file mode 100644 index 0000000000..db32dab6be --- /dev/null +++ b/libmednahawk/src/state.cpp @@ -0,0 +1,1277 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "mednafen.h" + +#include +#include +#include +//#include //zero 07-feb-2012 +#include + +#include +#include "driver.h" +#include "general.h" +#include "state.h" +#include "movie.h" +#include "netplay.h" +#include "video.h" +#include "video/resize.h" + +static int SaveStateStatus[10]; + +#define RLSB MDFNSTATE_RLSB //0x80000000 + +int32 smem_read(StateMem *st, void *buffer, uint32 len) +{ + if((len + st->loc) > st->len) + return(0); + + memcpy(buffer, st->data + st->loc, len); + st->loc += len; + + return(len); +} + +int32 smem_write(StateMem *st, void *buffer, uint32 len) +{ + if((len + st->loc) > st->malloced) + { + uint32 newsize = (st->malloced >= 32768) ? st->malloced : (st->initial_malloc ? st->initial_malloc : 32768); + + while(newsize < (len + st->loc)) + newsize *= 2; + st->data = (uint8 *)realloc(st->data, newsize); + st->malloced = newsize; + } + memcpy(st->data + st->loc, buffer, len); + st->loc += len; + + if(st->loc > st->len) st->len = st->loc; + + return(len); +} + +int32 smem_putc(StateMem *st, int value) +{ + uint8 tmpval = value; + if(smem_write(st, &tmpval, 1) != 1) + return(-1); + return(1); +} + +int32 smem_tell(StateMem *st) +{ + return(st->loc); +} + +int32 smem_seek(StateMem *st, uint32 offset, int whence) +{ + switch(whence) + { + case SEEK_SET: st->loc = offset; break; + case SEEK_END: st->loc = st->len - offset; break; + case SEEK_CUR: st->loc += offset; break; + } + + if(st->loc > st->len) + { + st->loc = st->len; + return(-1); + } + + if(st->loc < 0) + { + st->loc = 0; + return(-1); + } + + return(0); +} + +int smem_write32le(StateMem *st, uint32 b) +{ + uint8 s[4]; + s[0]=b; + s[1]=b>>8; + s[2]=b>>16; + s[3]=b>>24; + return((smem_write(st, s, 4)<4)?0:4); +} + +int smem_read32le(StateMem *st, uint32 *b) +{ + uint8 s[4]; + + if(smem_read(st, s, 4) < 4) + return(0); + + *b = s[0] | (s[1] << 8) | (s[2] << 16) | (s[3] << 24); + + return(4); +} + + +static bool ValidateSFStructure(SFORMAT *sf) +{ + SFORMAT *saved_sf = sf; + + while(sf->size || sf->name) + { + SFORMAT *sub_sf = saved_sf; + while(sub_sf->size || sub_sf->name) + { + if(sf != sub_sf) + { + if(!strncmp(sf->name, sub_sf->name, 32)) + { + printf("Duplicate state variable name: %.32s\n", sf->name); + } + } + sub_sf++; + } + + sf++; + } + return(1); +} + + +static bool SubWrite(StateMem *st, SFORMAT *sf, int data_only, const char *name_prefix = NULL) +{ + // FIXME? It's kind of slow, and we definitely don't want it on with state rewinding... + if(!data_only) + ValidateSFStructure(sf); + + while(sf->size || sf->name) // Size can sometimes be zero, so also check for the text name. These two should both be zero only at the end of a struct. + { + if(!sf->size || !sf->v) + { + sf++; + continue; + } + + if(sf->size == (uint32)~0) /* Link to another struct. */ + { + if(!SubWrite(st, (SFORMAT *)sf->v, data_only, name_prefix)) + return(0); + + sf++; + continue; + } + + int32 bytesize = sf->size; + + // If we're only saving the raw data, and we come across a bool type, we save it as it is in memory, rather than converting it to + // 1-byte. In the SFORMAT structure, the size member for bool entries is the number of bool elements, not the total in-memory size, + // so we adjust it here. + if(data_only && (sf->flags & MDFNSTATE_BOOL)) + { + bytesize *= sizeof(bool); + } + + if(!data_only) + { + char nameo[1 + 256]; + int slen; + + slen = trio_snprintf(nameo + 1, 256, "%s%s", name_prefix ? name_prefix : "", sf->name); + nameo[0] = slen; + + if(slen >= 255) + { + printf("Warning: state variable name possibly too long: %s %s %s %d\n", sf->name, name_prefix, nameo, slen); + slen = 255; + } + + smem_write(st, nameo, 1 + nameo[0]); + smem_write32le(st, bytesize); + + /* Flip the byte order... */ + if(sf->flags & MDFNSTATE_BOOL) + { + + } + else if(sf->flags & MDFNSTATE_RLSB64) + Endian_A64_NE_to_LE(sf->v, bytesize / sizeof(uint64)); + else if(sf->flags & MDFNSTATE_RLSB32) + Endian_A32_NE_to_LE(sf->v, bytesize / sizeof(uint32)); + else if(sf->flags & MDFNSTATE_RLSB16) + Endian_A16_NE_to_LE(sf->v, bytesize / sizeof(uint16)); + else if(sf->flags & RLSB) + Endian_V_NE_to_LE(sf->v, bytesize); + } + + // Special case for the evil bool type, to convert bool to 1-byte elements. + // Don't do it if we're only saving the raw data. + if((sf->flags & MDFNSTATE_BOOL) && !data_only) + { + for(int32 bool_monster = 0; bool_monster < bytesize; bool_monster++) + { + uint8 tmp_bool = ((bool *)sf->v)[bool_monster]; + //printf("Bool write: %.31s\n", sf->name); + smem_write(st, &tmp_bool, 1); + } + } + else + smem_write(st, (uint8 *)sf->v, bytesize); + + if(!data_only) + { + /* Now restore the original byte order. */ + if(sf->flags & MDFNSTATE_BOOL) + { + + } + else if(sf->flags & MDFNSTATE_RLSB64) + Endian_A64_LE_to_NE(sf->v, bytesize / sizeof(uint64)); + else if(sf->flags & MDFNSTATE_RLSB32) + Endian_A32_LE_to_NE(sf->v, bytesize / sizeof(uint32)); + else if(sf->flags & MDFNSTATE_RLSB16) + Endian_A16_LE_to_NE(sf->v, bytesize / sizeof(uint16)); + else if(sf->flags & RLSB) + Endian_V_LE_to_NE(sf->v, bytesize); + } + sf++; + } + + return(TRUE); +} + +static int WriteStateChunk(StateMem *st, const char *sname, SFORMAT *sf, int data_only) +{ + int32 data_start_pos; + int32 end_pos; + + if(!data_only) + { + uint8 sname_tmp[32]; + + memset(sname_tmp, 0, sizeof(sname_tmp)); + strncpy((char *)sname_tmp, sname, 32); + + if(strlen(sname) > 32) + printf("Warning: section name is too long: %s\n", sname); + + smem_write(st, sname_tmp, 32); + + smem_write32le(st, 0); // We'll come back and write this later. + } + + data_start_pos = smem_tell(st); + + if(!SubWrite(st, sf, data_only)) + return(0); + + end_pos = smem_tell(st); + + if(!data_only) + { + smem_seek(st, data_start_pos - 4, SEEK_SET); + smem_write32le(st, end_pos - data_start_pos); + smem_seek(st, end_pos, SEEK_SET); + } + + return(end_pos - data_start_pos); +} + +struct compare_cstr +{ + bool operator()(const char *s1, const char *s2) const + { + return(strcmp(s1, s2) < 0); + } +}; + +typedef std::map SFMap_t; + +static void MakeSFMap(SFORMAT *sf, SFMap_t &sfmap) +{ + while(sf->size || sf->name) // Size can sometimes be zero, so also check for the text name. These two should both be zero only at the end of a struct. + { + if(!sf->size || !sf->v) + { + sf++; + continue; + } + + if(sf->size == (uint32)~0) /* Link to another SFORMAT structure. */ + MakeSFMap((SFORMAT *)sf->v, sfmap); + else + { + assert(sf->name); + + if(sfmap.find(sf->name) != sfmap.end()) + printf("Duplicate save state variable in internal emulator structures(CLUB THE PROGRAMMERS WITH BREADSTICKS): %s\n", sf->name); + + sfmap[sf->name] = sf; + } + + sf++; + } +} + +// Fast raw chunk reader +static void DOReadChunk(StateMem *st, SFORMAT *sf) +{ + while(sf->size || sf->name) // Size can sometimes be zero, so also check for the text name. + // These two should both be zero only at the end of a struct. + { + if(!sf->size || !sf->v) + { + sf++; + continue; + } + + if(sf->size == (uint32) ~0) // Link to another SFORMAT struct + { + DOReadChunk(st, (SFORMAT *)sf->v); + sf++; + continue; + } + + int32 bytesize = sf->size; + + // Loading raw data, bool types are stored as they appear in memory, not as single bytes in the full state format. + // In the SFORMAT structure, the size member for bool entries is the number of bool elements, not the total in-memory size, + // so we adjust it here. + if(sf->flags & MDFNSTATE_BOOL) + bytesize *= sizeof(bool); + + smem_read(st, (uint8 *)sf->v, bytesize); + sf++; + } +} + +static int ReadStateChunk(StateMem *st, SFORMAT *sf, int size, int data_only) +{ + int temp; + + if(data_only) + { + DOReadChunk(st, sf); + } + else + { + SFMap_t sfmap; + SFMap_t sfmap_found; // Used for identifying variables that are missing in the save state. + + MakeSFMap(sf, sfmap); + + temp = smem_tell(st); + while(smem_tell(st) < (temp + size)) + { + uint32 recorded_size; // In bytes + uint8 toa[1 + 256]; // Don't change to char unless cast toa[0] to unsigned to smem_read() and other places. + + if(smem_read(st, toa, 1) != 1) + { + puts("Unexpected EOF"); + return(0); + } + + if(smem_read(st, toa + 1, toa[0]) != toa[0]) + { + puts("Unexpected EOF?"); + return 0; + } + + toa[1 + toa[0]] = 0; + + smem_read32le(st, &recorded_size); + + SFMap_t::iterator sfmit; + + sfmit = sfmap.find((char *)toa + 1); + + if(sfmit != sfmap.end()) + { + SFORMAT *tmp = sfmit->second; + uint32 expected_size = tmp->size; // In bytes + + if(recorded_size != expected_size) + { + printf("Variable in save state wrong size: %s. Need: %d, got: %d\n", toa + 1, expected_size, recorded_size); + if(smem_seek(st, recorded_size, SEEK_CUR) < 0) + { + puts("Seek error"); + return(0); + } + } + else + { + sfmap_found[tmp->name] = tmp; + + smem_read(st, (uint8 *)tmp->v, expected_size); + + if(tmp->flags & MDFNSTATE_BOOL) + { + // Converting downwards is necessary for the case of sizeof(bool) > 1 + for(int32 bool_monster = expected_size - 1; bool_monster >= 0; bool_monster--) + { + ((bool *)tmp->v)[bool_monster] = ((uint8 *)tmp->v)[bool_monster]; + } + } + if(tmp->flags & MDFNSTATE_RLSB64) + Endian_A64_LE_to_NE(tmp->v, expected_size / sizeof(uint64)); + else if(tmp->flags & MDFNSTATE_RLSB32) + Endian_A32_LE_to_NE(tmp->v, expected_size / sizeof(uint32)); + else if(tmp->flags & MDFNSTATE_RLSB16) + Endian_A16_LE_to_NE(tmp->v, expected_size / sizeof(uint16)); + else if(tmp->flags & RLSB) + Endian_V_LE_to_NE(tmp->v, expected_size); + } + } + else + { + printf("Unknown variable in save state: %s\n", toa + 1); + if(smem_seek(st, recorded_size, SEEK_CUR) < 0) + { + puts("Seek error"); + return(0); + } + } + } // while(...) + + for(SFMap_t::const_iterator it = sfmap.begin(); it != sfmap.end(); it++) + { + if(sfmap_found.find(it->second->name) == sfmap_found.end()) + { + printf("Variable missing from save state: %s\n", it->second->name); + } + } + + assert(smem_tell(st) == (temp + size)); + } + return 1; +} + +static int CurrentState = 0; +static int RecentlySavedState = -1; + +/* This function is called by the game driver(NES, GB, GBA) to save a state. */ +int MDFNSS_StateAction(StateMem *st, int load, int data_only, std::vector §ions) +{ + std::vector::iterator section; + + if(load) + { + if(data_only) + { + for(section = sections.begin(); section != sections.end(); section++) + { + ReadStateChunk(st, section->sf, ~0, 1); + } + } + else + { + char sname[32]; + + for(section = sections.begin(); section != sections.end(); section++) + { + int found = 0; + uint32 tmp_size; + uint32 total = 0; + + while(smem_read(st, (uint8 *)sname, 32) == 32) + { + if(smem_read32le(st, &tmp_size) != 4) + return(0); + + total += tmp_size + 32 + 4; + + // Yay, we found the section + if(!strncmp(sname, section->name, 32)) + { + if(!ReadStateChunk(st, section->sf, tmp_size, 0)) + { + printf("Error reading chunk: %s\n", section->name); + return(0); + } + found = 1; + break; + } + else + { + // puts("SEEK"); + if(smem_seek(st, tmp_size, SEEK_CUR) < 0) + { + puts("Chunk seek failure"); + return(0); + } + } + } + if(smem_seek(st, -total, SEEK_CUR) < 0) + { + puts("Reverse seek error"); + return(0); + } + if(!found && !section->optional) // Not found. We are sad! + { + printf("Section missing: %.32s\n", section->name); + return(0); + } + } + } + } + else + { + for(section = sections.begin(); section != sections.end(); section++) + { + if(!WriteStateChunk(st, section->name, section->sf, data_only)) + return(0); + } + } + + return(1); +} + +int MDFNSS_StateAction(StateMem *st, int load, int data_only, SFORMAT *sf, const char *name, bool optional) +{ + std::vector love; + + love.push_back(SSDescriptor(sf, name, optional)); + return(MDFNSS_StateAction(st, load, data_only, love)); +} + +int MDFNSS_SaveSM(StateMem *st, int wantpreview_and_ts, int data_only, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths) +{ + static const char *header_magic = "MDFNSVST"; + uint8 header[32]; + int neowidth = 0, neoheight = 0; + + memset(header, 0, sizeof(header)); + + if(wantpreview_and_ts) + { + bool is_multires = FALSE; + + // We'll want to use the nominal width if the source rectangle is > 25% off on either axis, or the source image has + // multiple horizontal resolutions. + neowidth = MDFNGameInfo->nominal_width; + neoheight = MDFNGameInfo->nominal_height; + + if(LineWidths[0].w != ~0) + { + uint32 first_w = LineWidths[DisplayRect->y].w; + + for(int y = 0; y < DisplayRect->h; y++) + if(LineWidths[DisplayRect->y + y].w != first_w) + { + puts("Multires!"); + is_multires = TRUE; + } + } + + if(!is_multires) + { + if(((double)DisplayRect->w / MDFNGameInfo->nominal_width) > 0.75 && ((double)DisplayRect->w / MDFNGameInfo->nominal_width) < 1.25) + neowidth = DisplayRect->w; + + if(((double)DisplayRect->h / MDFNGameInfo->nominal_height) > 0.75 && ((double)DisplayRect->h / MDFNGameInfo->nominal_height) < 1.25) + neoheight = DisplayRect->h; + } + } + + if(!data_only) + { + memcpy(header, header_magic, 8); + + if(wantpreview_and_ts) + MDFN_en64lsb(header + 8, time(NULL)); + + MDFN_en32lsb(header + 16, MEDNAFEN_VERSION_NUMERIC); + MDFN_en32lsb(header + 24, neowidth); + MDFN_en32lsb(header + 28, neoheight); + smem_write(st, header, 32); + } + + if(wantpreview_and_ts) + { + uint8 *previewbuffer = (uint8 *)malloc(4 * neowidth * neoheight); + MDFN_Surface *dest_surface = new MDFN_Surface((uint32 *)previewbuffer, neowidth, neoheight, neowidth, surface->format); + MDFN_Rect dest_rect; + + dest_rect.x = 0; + dest_rect.y = 0; + dest_rect.w = neowidth; + dest_rect.h = neoheight; + + MDFN_ResizeSurface(surface, DisplayRect, (LineWidths[0].w != ~0) ? LineWidths : NULL, dest_surface, &dest_rect); + + { + uint32 a, b = 0; + for(a = 0; a < neowidth * neoheight * 4; a+=4) + { + uint32 c = *(uint32 *)&previewbuffer[a]; + int nr, ng, nb; + + surface->DecodeColor(c, nr, ng, nb); + + previewbuffer[b + 0] = nr; + previewbuffer[b + 1] = ng; + previewbuffer[b + 2] = nb; + b += 3; + } + } + + smem_write(st, previewbuffer, 3 * neowidth * neoheight); + + free(previewbuffer); + delete dest_surface; + } + + // State rewinding code path hack, FIXME + if(data_only) + { + if(!MDFN_RawInputStateAction(st, 0, data_only)) + return(0); + } + + if(!MDFNGameInfo->StateAction(st, 0, data_only)) + return(0); + + if(!data_only) + { + uint32 sizy = smem_tell(st); + smem_seek(st, 16 + 4, SEEK_SET); + smem_write32le(st, sizy); + } + return(1); +} + +int MDFNSS_Save(const char *fname, const char *suffix, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths) +{ + StateMem st; + + memset(&st, 0, sizeof(StateMem)); + + + if(!MDFNGameInfo->StateAction) + { + MDFN_DispMessage(_("Module \"%s\" doesn't support save states."), MDFNGameInfo->shortname); + return(0); + } + + if(!MDFNSS_SaveSM(&st, (DisplayRect && LineWidths), 0, surface, DisplayRect, LineWidths)) + { + if(st.data) + free(st.data); + if(!fname && !suffix) + MDFN_DispMessage(_("State %d save error."), CurrentState); + return(0); + } + + if(!MDFN_DumpToFile(fname ? fname : MDFN_MakeFName(MDFNMKF_STATE,CurrentState,suffix).c_str(), 6, st.data, st.len)) + { + SaveStateStatus[CurrentState] = 0; + free(st.data); + + if(!fname && !suffix) + MDFN_DispMessage(_("State %d save error."),CurrentState); + + return(0); + } + + free(st.data); + + SaveStateStatus[CurrentState] = 1; + RecentlySavedState = CurrentState; + + if(!fname && !suffix) + MDFN_DispMessage(_("State %d saved."),CurrentState); + + return(1); +} + +// Convenience function for movie.cpp +int MDFNSS_SaveFP(gzFile fp, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths) +{ + StateMem st; + + memset(&st, 0, sizeof(StateMem)); + + if(!MDFNSS_SaveSM(&st, (DisplayRect && LineWidths), 0, surface, DisplayRect, LineWidths)) + { + if(st.data) + free(st.data); + return(0); + } + + if(gzwrite(fp, st.data, st.len) != (int32)st.len) + { + if(st.data) + free(st.data); + return(0); + } + + if(st.data) + free(st.data); + + return(1); +} + + +int MDFNSS_LoadSM(StateMem *st, int haspreview, int data_only) +{ + uint8 header[32]; + uint32 stateversion; + + if(data_only) + { + stateversion = MEDNAFEN_VERSION_NUMERIC; + } + else + { + smem_read(st, header, 32); + + if(memcmp(header, "MEDNAFENSVESTATE", 16) && memcmp(header, "MDFNSVST", 8)) + return(0); + + stateversion = MDFN_de32lsb(header + 16); + } + + if(haspreview) + { + uint32 width = MDFN_de32lsb(header + 24); + uint32 height = MDFN_de32lsb(header + 28); + uint32 psize; + + psize = width * height * 3; + smem_seek(st, psize, SEEK_CUR); // Skip preview + } + + // State rewinding code path hack, FIXME + if(data_only) + { + if(!MDFN_RawInputStateAction(st, stateversion, data_only)) + return(0); + } + + return(MDFNGameInfo->StateAction(st, stateversion, data_only)); +} + +int MDFNSS_LoadFP(gzFile fp) +{ + uint8 header[32]; + StateMem st; + + memset(&st, 0, sizeof(StateMem)); + + if(gzread(fp, header, 32) != 32) + { + return(0); + } + st.len = MDFN_de32lsb(header + 16 + 4); + + if(st.len < 32) + return(0); + + if(!(st.data = (uint8 *)malloc(st.len))) + return(0); + + memcpy(st.data, header, 32); + if(gzread(fp, st.data + 32, st.len - 32) != ((int32)st.len - 32)) + { + free(st.data); + return(0); + } + if(!MDFNSS_LoadSM(&st, 1, 0)) + { + free(st.data); + return(0); + } + free(st.data); + return(1); +} + +int MDFNSS_Load(const char *fname, const char *suffix) +{ + gzFile st; + + if(!MDFNGameInfo->StateAction) + { + MDFN_DispMessage(_("Module \"%s\" doesn't support save states."), MDFNGameInfo->shortname); + return(0); + } + + if(fname) + st=gzopen(fname, "rb"); + else + { + st=gzopen(MDFN_MakeFName(MDFNMKF_STATE,CurrentState,suffix).c_str(),"rb"); + } + + if(st == NULL) + { + if(!fname && !suffix) + { + MDFN_DispMessage(_("State %d load error."),CurrentState); + SaveStateStatus[CurrentState]=0; + } + return(0); + } + + if(MDFNSS_LoadFP(st)) + { + if(!fname && !suffix) + { + SaveStateStatus[CurrentState]=1; + MDFN_DispMessage(_("State %d loaded."),CurrentState); + SaveStateStatus[CurrentState]=1; + } + gzclose(st); + return(1); + } + else + { + SaveStateStatus[CurrentState]=1; + MDFN_DispMessage(_("State %d read error!"),CurrentState); + gzclose(st); + return(0); + } +} + +void MDFNSS_CheckStates(void) +{ + time_t last_time = 0; + + if(!MDFNGameInfo->StateAction) + return; + + + for(int ssel = 0; ssel < 10; ssel++) + { + struct stat stat_buf; + + SaveStateStatus[ssel] = 0; + //printf("%s\n", MDFN_MakeFName(MDFNMKF_STATE, ssel, 0).c_str()); + if(stat(MDFN_MakeFName(MDFNMKF_STATE, ssel, 0).c_str(), &stat_buf) == 0) + { + SaveStateStatus[ssel] = 1; + if(stat_buf.st_mtime > last_time) + { + RecentlySavedState = ssel; + last_time = stat_buf.st_mtime; + } + } + } + + CurrentState = 0; + MDFND_SetStateStatus(NULL); +} + +void MDFNSS_GetStateInfo(const char *filename, StateStatusStruct *status) +{ + gzFile fp; + uint32 StateShowPBWidth; + uint32 StateShowPBHeight; + uint8 *previewbuffer = NULL; + + fp = gzopen(filename, "rb"); + if(fp) + { + uint8 header[32]; + + gzread(fp, header, 32); + uint32 width = MDFN_de32lsb(header + 24); + uint32 height = MDFN_de32lsb(header + 28); + + if(width > 1024) width = 1024; + if(height > 1024) height = 1024; + + if(!(previewbuffer = (uint8 *)MDFN_malloc(3 * width * height, _("Save state preview buffer")))) + { + StateShowPBWidth = 0; + StateShowPBHeight = 0; + } + else + { + gzread(fp, previewbuffer, 3 * width * height); + + StateShowPBWidth = width; + StateShowPBHeight = height; + } + gzclose(fp); + } + else + { + StateShowPBWidth = MDFNGameInfo->nominal_width; + StateShowPBHeight = MDFNGameInfo->nominal_height; + } + + status->gfx = previewbuffer; + status->w = StateShowPBWidth; + status->h = StateShowPBHeight; +} + +void MDFNI_SelectState(int w) +{ + if(!MDFNGameInfo->StateAction) + return; + + + if(w == -1) + { + MDFND_SetStateStatus(NULL); + return; + } + MDFNI_SelectMovie(-1); + + if(w == 666 + 1) + CurrentState = (CurrentState + 1) % 10; + else if(w == 666 - 1) + { + CurrentState--; + + if(CurrentState < 0 || CurrentState > 9) + CurrentState = 9; + } + else + CurrentState = w; + + MDFN_ResetMessages(); + + StateStatusStruct *status = (StateStatusStruct*)MDFN_calloc(1, sizeof(StateStatusStruct), _("Save state status")); + + memcpy(status->status, SaveStateStatus, 10 * sizeof(int)); + + status->current = CurrentState; + status->recently_saved = RecentlySavedState; + + MDFNSS_GetStateInfo(MDFN_MakeFName(MDFNMKF_STATE,CurrentState,NULL).c_str(), status); + MDFND_SetStateStatus(status); +} + +void MDFNI_SaveState(const char *fname, const char *suffix, const MDFN_Surface *surface, const MDFN_Rect *DisplayRect, const MDFN_Rect *LineWidths) +{ + if(!MDFNGameInfo->StateAction) + return; + + if(MDFNnetplay && (MDFNGameInfo->SaveStateAltersState == true)) + { + char sb[256]; + trio_snprintf(sb, sizeof(sb), _("Module %s is not compatible with manual state saving during netplay."), MDFNGameInfo->shortname); + MDFND_NetplayText((const uint8*)sb, false); + return; + } + + MDFND_SetStateStatus(NULL); + MDFNSS_Save(fname, suffix, surface, DisplayRect, LineWidths); +} + +void MDFNI_LoadState(const char *fname, const char *suffix) +{ + if(!MDFNGameInfo->StateAction) + return; + + MDFND_SetStateStatus(NULL); + + /* For network play and movies, be load the state locally, and then save the state to a temporary buffer, + and send or record that. This ensures that if an older state is loaded that is missing some + information expected in newer save states, desynchronization won't occur(at least not + from this ;)). + */ + if(MDFNSS_Load(fname, suffix)) + { + //zero 07-feb-2012 - no netplay + //if(MDFNnetplay) + // { + // NetplaySendState(); + // } + + if(MDFNMOV_IsRecording()) + MDFNMOV_RecordState(); + } +} + +#include "compress/minilzo.h" +#include "compress/quicklz.h" +#include "compress/blz.h" + +static union +{ + char qlz_scratch_compress[/*QLZ_*/SCRATCH_COMPRESS]; + char qlz_scratch_decompress[/*QLZ_*/SCRATCH_DECOMPRESS]; +}; + +enum +{ + SRW_COMPRESSOR_MINILZO = 0, + SRW_COMPRESSOR_QUICKLZ, + SRW_COMPRESSOR_BLZ +}; + +struct StateMemPacket +{ + uint8 *data; + uint32 compressed_len; + uint32 uncompressed_len; + + StateMem MovieLove; +}; + +static int SRW_NUM = 600; +static int SRWCompressor; +static int EvilEnabled = 0; +static StateMemPacket *bcs; +static int32 bcspos; + +void MDFN_StateEvilBegin(void) +{ + int x; + std::string srwcompstring; + + + if(!EvilEnabled) + return; + + SRW_NUM = MDFN_GetSettingUI("srwframes"); + + SRWCompressor = SRW_COMPRESSOR_MINILZO; + srwcompstring = MDFN_GetSettingS("srwcompressor"); + + if(srwcompstring == "minilzo") + SRWCompressor = SRW_COMPRESSOR_MINILZO; + else if(srwcompstring == "quicklz") + SRWCompressor = SRW_COMPRESSOR_QUICKLZ; + else if(srwcompstring == "blz") + SRWCompressor = SRW_COMPRESSOR_BLZ; + + bcs = (StateMemPacket *)calloc(SRW_NUM, sizeof(StateMemPacket)); + bcspos = 0; + + for(x=0;xStateAction) + return; + + MDFN_StateEvilEnd(); + + EvilEnabled = enable; + + MDFN_StateEvilBegin(); +} diff --git a/libmednahawk/src/state.h b/libmednahawk/src/state.h new file mode 100644 index 0000000000..c7b53690d0 --- /dev/null +++ b/libmednahawk/src/state.h @@ -0,0 +1,147 @@ +#ifndef _STATE_H +#define _STATE_H + +#include + +#include "video.h" +#include "state-common.h" + +void MDFNSS_GetStateInfo(const char *filename, StateStatusStruct *status); + +int MDFNSS_Save(const char *, const char *suffix, const MDFN_Surface *surface = (MDFN_Surface *)NULL, const MDFN_Rect *DisplayRect = (MDFN_Rect*)NULL, const MDFN_Rect *LineWidths = (MDFN_Rect *)NULL); +int MDFNSS_Load(const char *, const char *suffix); +int MDFNSS_SaveFP(gzFile fp, const MDFN_Surface *surface = (MDFN_Surface *)NULL, const MDFN_Rect *DisplayRect = (MDFN_Rect*)NULL, const MDFN_Rect *LineWidths = (MDFN_Rect *)NULL); +int MDFNSS_LoadFP(gzFile fp); + +typedef struct +{ + uint8 *data; + uint32 loc; + uint32 len; + + uint32 malloced; + + uint32 initial_malloc; // A setting! +} StateMem; + +// Eh, we abuse the smem_* in-memory stream code +// in a few other places. :) +int32 smem_read(StateMem *st, void *buffer, uint32 len); +int32 smem_write(StateMem *st, void *buffer, uint32 len); +int32 smem_putc(StateMem *st, int value); +int32 smem_tell(StateMem *st); +int32 smem_seek(StateMem *st, uint32 offset, int whence); +int smem_write32le(StateMem *st, uint32 b); +int smem_read32le(StateMem *st, uint32 *b); + +int MDFNSS_SaveSM(StateMem *st, int wantpreview_and_ts, int data_only, const MDFN_Surface *surface = (MDFN_Surface *)NULL, const MDFN_Rect *DisplayRect = (MDFN_Rect*)NULL, const MDFN_Rect *LineWidths = (MDFN_Rect *)NULL); +int MDFNSS_LoadSM(StateMem *st, int haspreview, int data_only); + +void MDFNSS_CheckStates(void); + +// Flag for a single, >= 1 byte native-endian variable +#define MDFNSTATE_RLSB 0x80000000 + +// 32-bit native-endian elements +#define MDFNSTATE_RLSB32 0x40000000 + +// 16-bit native-endian elements +#define MDFNSTATE_RLSB16 0x20000000 + +// 64-bit native-endian elements +#define MDFNSTATE_RLSB64 0x10000000 + +#define MDFNSTATE_BOOL 0x08000000 + + +//// Array of structures +//#define MDFNSTATE_ARRAYOFS 0x04000000 + +typedef struct { + void *v; // Pointer to the variable/array + uint32 size; // Length, in bytes, of the data to be saved EXCEPT: + // In the case of MDFNSTATE_BOOL, it is the number of bool elements to save(bool is not always 1-byte). + // If 0, the subchunk isn't saved. + uint32 flags; // Flags + const char *name; // Name + //uint32 struct_size; // Only used for MDFNSTATE_ARRAYOFS, sizeof(struct) that members of the linked SFORMAT struct are in. +} SFORMAT; + +INLINE bool SF_IS_BOOL(bool *) { return(1); } +INLINE bool SF_IS_BOOL(void *) { return(0); } + +INLINE uint32 SF_FORCE_AB(bool *) { return(0); } + +INLINE uint32 SF_FORCE_A8(int8 *) { return(0); } +INLINE uint32 SF_FORCE_A8(uint8 *) { return(0); } + +INLINE uint32 SF_FORCE_A16(int16 *) { return(0); } +INLINE uint32 SF_FORCE_A16(uint16 *) { return(0); } + +INLINE uint32 SF_FORCE_A32(int32 *) { return(0); } +INLINE uint32 SF_FORCE_A32(uint32 *) { return(0); } + +INLINE uint32 SF_FORCE_A64(int64 *) { return(0); } +INLINE uint32 SF_FORCE_A64(uint64 *) { return(0); } + +INLINE uint32 SF_FORCE_D(double *) { return(0); } + +#define SFVARN(x, n) { &(x), SF_IS_BOOL(&(x)) ? 1U : (uint32)sizeof(x), MDFNSTATE_RLSB | (SF_IS_BOOL(&(x)) ? MDFNSTATE_BOOL : 0), n } +#define SFVAR(x) SFVARN((x), #x) + +#define SFARRAYN(x, l, n) { (x), (uint32)(l), 0 | SF_FORCE_A8(x), n } +#define SFARRAY(x, l) SFARRAYN((x), (l), #x) + +#define SFARRAYBN(x, l, n) { (x), (uint32)(l), MDFNSTATE_BOOL | SF_FORCE_AB(x), n } +#define SFARRAYB(x, l) SFARRAYBN((x), (l), #x) + +#define SFARRAY16N(x, l, n) { (x), (uint32)((l) * sizeof(uint16)), MDFNSTATE_RLSB16 | SF_FORCE_A16(x), n } +#define SFARRAY16(x, l) SFARRAY16N((x), (l), #x) + +#define SFARRAY32N(x, l, n) { (x), (uint32)((l) * sizeof(uint32)), MDFNSTATE_RLSB32 | SF_FORCE_A32(x), n } +#define SFARRAY32(x, l) SFARRAY32N((x), (l), #x) + +#define SFARRAY64N(x, l, n) { (x), (uint32)((l) * sizeof(uint64)), MDFNSTATE_RLSB64 | SF_FORCE_A64(x), n } +#define SFARRAY64(x, l) SFARRAY64N((x), (l), #x) + +#if SIZEOF_DOUBLE != 8 +#error "sizeof(double) != 8" +#endif + +#define SFARRAYDN(x, l, n) { (x), (uint32)((l) * 8), MDFNSTATE_RLSB64 | SF_FORCE_D(x), n } +#define SFARRAYD(x, l) SFARRAYDN((x), (l), #x) + +#define SFEND { 0, 0, 0, 0 } + +#include + +// State-Section Descriptor +class SSDescriptor +{ + public: + SSDescriptor(SFORMAT *n_sf, const char *n_name, bool n_optional = 0) + { + sf = n_sf; + name = n_name; + optional = n_optional; + } + ~SSDescriptor(void) + { + + } + + SFORMAT *sf; + const char *name; + bool optional; +}; + +int MDFNSS_StateAction(StateMem *st, int load, int data_only, std::vector §ions); +int MDFNSS_StateAction(StateMem *st, int load, int data_only, SFORMAT *sf, const char *name, bool optional = 0); + +void MDFN_StateEvilFlushMovieLove(void); +bool MDFN_StateEvilIsRunning(void); +void MDFN_StateEvilBegin(void); +void MDFN_StateEvilEnd(void); +int MDFN_StateEvil(int); + +#endif diff --git a/libmednahawk/src/string/ConvertUTF.cpp b/libmednahawk/src/string/ConvertUTF.cpp new file mode 100644 index 0000000000..3c06547b2f --- /dev/null +++ b/libmednahawk/src/string/ConvertUTF.cpp @@ -0,0 +1,560 @@ +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + +/* --------------------------------------------------------------------- + + Conversions between UTF32, UTF-16, and UTF-8. Source code file. + Author: Mark E. Davis, 1994. + Rev History: Rick McGowan, fixes & updates May 2001. + Sept 2001: fixed const & error conditions per + mods suggested by S. Parent & A. Lillich. + June 2002: Tim Dodd added detection and handling of incomplete + source sequences, enhanced error detection, added casts + to eliminate compiler warnings. + July 2003: slight mods to back out aggressive FFFE detection. + Jan 2004: updated switches in from-UTF8 conversions. + Oct 2004: updated to use UNI_MAX_LEGAL_UTF32 in UTF-32 conversions. + + See the header file "ConvertUTF.h" for complete documentation. + +------------------------------------------------------------------------ */ + + +#include "../types.h" +#include "ConvertUTF.h" +#ifdef CVTUTF_DEBUG +#include +#endif + +#include +#include + +static const int halfShift = 10; /* used for shifting by 10 bits */ + +static const UTF32 halfBase = 0x0010000UL; +static const UTF32 halfMask = 0x3FFUL; + +#define UNI_SUR_HIGH_START (UTF32)0xD800 +#define UNI_SUR_HIGH_END (UTF32)0xDBFF +#define UNI_SUR_LOW_START (UTF32)0xDC00 +#define UNI_SUR_LOW_END (UTF32)0xDFFF +#define false 0 +#define true 1 + +/* --------------------------------------------------------------------- */ + +ConversionResult ConvertUTF32toUTF16 ( + const UTF32** sourceStart, const UTF32* sourceEnd, + UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { + ConversionResult result = conversionOK; + const UTF32* source = *sourceStart; + UTF16* target = *targetStart; + while (source < sourceEnd) { + UTF32 ch; + if (target >= targetEnd) { + result = targetExhausted; break; + } + ch = *source++; + if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ + /* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */ + if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { + if (flags == strictConversion) { + --source; /* return to the illegal value itself */ + result = sourceIllegal; + break; + } else { + *target++ = UNI_REPLACEMENT_CHAR; + } + } else { + *target++ = (UTF16)ch; /* normal case */ + } + } else if (ch > UNI_MAX_LEGAL_UTF32) { + if (flags == strictConversion) { + result = sourceIllegal; + } else { + *target++ = UNI_REPLACEMENT_CHAR; + } + } else { + /* target is a character in range 0xFFFF - 0x10FFFF. */ + if (target + 1 >= targetEnd) { + --source; /* Back up source pointer! */ + result = targetExhausted; break; + } + ch -= halfBase; + *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); + *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START); + } + } + *sourceStart = source; + *targetStart = target; + return result; +} + +/* --------------------------------------------------------------------- */ + +ConversionResult ConvertUTF16toUTF32 ( + const UTF16** sourceStart, const UTF16* sourceEnd, + UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) { + ConversionResult result = conversionOK; + const UTF16* source = *sourceStart; + UTF32* target = *targetStart; + UTF32 ch, ch2; + while (source < sourceEnd) { + const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ + ch = *source++; + /* If we have a surrogate pair, convert to UTF32 first. */ + if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) { + /* If the 16 bits following the high surrogate are in the source buffer... */ + if (source < sourceEnd) { + ch2 = *source; + /* If it's a low surrogate, convert to UTF32. */ + if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { + ch = ((ch - UNI_SUR_HIGH_START) << halfShift) + + (ch2 - UNI_SUR_LOW_START) + halfBase; + ++source; + } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ + --source; /* return to the illegal value itself */ + result = sourceIllegal; + break; + } + } else { /* We don't have the 16 bits following the high surrogate. */ + --source; /* return to the high surrogate */ + result = sourceExhausted; + break; + } + } else if (flags == strictConversion) { + /* UTF-16 surrogate values are illegal in UTF-32 */ + if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) { + --source; /* return to the illegal value itself */ + result = sourceIllegal; + break; + } + } + if (target >= targetEnd) { + source = oldSource; /* Back up source pointer! */ + result = targetExhausted; break; + } + *target++ = ch; + } + *sourceStart = source; + *targetStart = target; +#ifdef CVTUTF_DEBUG +if (result == sourceIllegal) { + fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2); + fflush(stderr); +} +#endif + return result; +} + +/* --------------------------------------------------------------------- */ + +/* + * Index into the table below with the first byte of a UTF-8 sequence to + * get the number of trailing bytes that are supposed to follow it. + * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is + * left as-is for anyone who may want to do such conversion, which was + * allowed in earlier algorithms. + */ +static const char trailingBytesForUTF8[256] = { + 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,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,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,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,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, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 +}; + +/* + * Magic values subtracted from a buffer value during UTF8 conversion. + * This table contains as many values as there might be trailing bytes + * in a UTF-8 sequence. + */ +static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, + 0x03C82080UL, 0xFA082080UL, 0x82082080UL }; + +/* + * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed + * into the first byte, depending on how many bytes follow. There are + * as many entries in this table as there are UTF-8 sequence types. + * (I.e., one byte sequence, two byte... etc.). Remember that sequencs + * for *legal* UTF-8 will be 4 or fewer bytes total. + */ +static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; + +/* --------------------------------------------------------------------- */ + +/* The interface converts a whole buffer to avoid function-call overhead. + * Constants have been gathered. Loops & conditionals have been removed as + * much as possible for efficiency, in favor of drop-through switches. + * (See "Note A" at the bottom of the file for equivalent code.) + * If your compiler supports it, the "isLegalUTF8" call can be turned + * into an inline function. + */ + +/* --------------------------------------------------------------------- */ + +ConversionResult ConvertUTF16toUTF8 ( + const UTF16** sourceStart, const UTF16* sourceEnd, + UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { + ConversionResult result = conversionOK; + const UTF16* source = *sourceStart; + UTF8* target = *targetStart; + while (source < sourceEnd) { + UTF32 ch; + unsigned short bytesToWrite = 0; + const UTF32 byteMask = 0xBF; + const UTF32 byteMark = 0x80; + const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */ + ch = *source++; + /* If we have a surrogate pair, convert to UTF32 first. */ + if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) { + /* If the 16 bits following the high surrogate are in the source buffer... */ + if (source < sourceEnd) { + UTF32 ch2 = *source; + /* If it's a low surrogate, convert to UTF32. */ + if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) { + ch = ((ch - UNI_SUR_HIGH_START) << halfShift) + + (ch2 - UNI_SUR_LOW_START) + halfBase; + ++source; + } else if (flags == strictConversion) { /* it's an unpaired high surrogate */ + --source; /* return to the illegal value itself */ + result = sourceIllegal; + break; + } + } else { /* We don't have the 16 bits following the high surrogate. */ + --source; /* return to the high surrogate */ + result = sourceExhausted; + break; + } + } else if (flags == strictConversion) { + /* UTF-16 surrogate values are illegal in UTF-32 */ + if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) { + --source; /* return to the illegal value itself */ + result = sourceIllegal; + break; + } + } + /* Figure out how many bytes the result will require */ + if (ch < (UTF32)0x80) { bytesToWrite = 1; + } else if (ch < (UTF32)0x800) { bytesToWrite = 2; + } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; + } else if (ch < (UTF32)0x110000) { bytesToWrite = 4; + } else { bytesToWrite = 3; + ch = UNI_REPLACEMENT_CHAR; + } + + target += bytesToWrite; + if (target > targetEnd) { + source = oldSource; /* Back up source pointer! */ + target -= bytesToWrite; result = targetExhausted; break; + } + switch (bytesToWrite) { /* note: everything falls through. */ + case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; + case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; + case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; + case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]); + } + target += bytesToWrite; + } + *sourceStart = source; + *targetStart = target; + return result; +} + +/* --------------------------------------------------------------------- */ + +/* + * Utility routine to tell whether a sequence of bytes is legal UTF-8. + * This must be called with the length pre-determined by the first byte. + * If not calling this from ConvertUTF8to*, then the length can be set by: + * length = trailingBytesForUTF8[*source]+1; + * and the sequence is illegal right away if there aren't that many bytes + * available. + * If presented with a length > 4, this returns false. The Unicode + * definition of UTF-8 goes up to 4-byte sequences. + */ + +static Boolean isLegalUTF8(const UTF8 *source, int length) { + UTF8 a; + const UTF8 *srcptr = source+length; + switch (length) { + default: return false; + /* Everything else falls through when "true"... */ + case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; + case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false; + case 2: if ((a = (*--srcptr)) > 0xBF) return false; + + switch (*source) { + /* no fall-through in this inner switch */ + case 0xE0: if (a < 0xA0) return false; break; + case 0xED: if (a > 0x9F) return false; break; + case 0xF0: if (a < 0x90) return false; break; + case 0xF4: if (a > 0x8F) return false; break; + default: if (a < 0x80) return false; + } + + case 1: if (*source >= 0x80 && *source < 0xC2) return false; + } + if (*source > 0xF4) return false; + return true; +} + +/* --------------------------------------------------------------------- */ + +/* + * Exported function to return whether a UTF-8 sequence is legal or not. + * This is not used here; it's just exported. + */ +Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) { + int length = trailingBytesForUTF8[*source]+1; + if (source+length > sourceEnd) { + return false; + } + return isLegalUTF8(source, length); +} + +/* --------------------------------------------------------------------- */ + +ConversionResult ConvertUTF8toUTF16 ( + const UTF8** sourceStart, const UTF8* sourceEnd, + UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) { + ConversionResult result = conversionOK; + const UTF8* source = *sourceStart; + UTF16* target = *targetStart; + while (source < sourceEnd) { + UTF32 ch = 0; + unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; + if (source + extraBytesToRead >= sourceEnd) { + result = sourceExhausted; break; + } + /* Do this check whether lenient or strict */ + if (! isLegalUTF8(source, extraBytesToRead+1)) { + result = sourceIllegal; + break; + } + /* + * The cases all fall through. See "Note A" below. + */ + switch (extraBytesToRead) { + case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ + case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ + case 3: ch += *source++; ch <<= 6; + case 2: ch += *source++; ch <<= 6; + case 1: ch += *source++; ch <<= 6; + case 0: ch += *source++; + } + ch -= offsetsFromUTF8[extraBytesToRead]; + + if (target >= targetEnd) { + source -= (extraBytesToRead+1); /* Back up source pointer! */ + result = targetExhausted; break; + } + if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ + /* UTF-16 surrogate values are illegal in UTF-32 */ + if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { + if (flags == strictConversion) { + source -= (extraBytesToRead+1); /* return to the illegal value itself */ + result = sourceIllegal; + break; + } else { + *target++ = UNI_REPLACEMENT_CHAR; + } + } else { + *target++ = (UTF16)ch; /* normal case */ + } + } else if (ch > UNI_MAX_UTF16) { + if (flags == strictConversion) { + result = sourceIllegal; + source -= (extraBytesToRead+1); /* return to the start */ + break; /* Bail out; shouldn't continue */ + } else { + *target++ = UNI_REPLACEMENT_CHAR; + } + } else { + /* target is a character in range 0xFFFF - 0x10FFFF. */ + if (target + 1 >= targetEnd) { + source -= (extraBytesToRead+1); /* Back up source pointer! */ + result = targetExhausted; break; + } + ch -= halfBase; + *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START); + *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START); + } + } + *sourceStart = source; + *targetStart = target; + return result; +} + +/* --------------------------------------------------------------------- */ + +ConversionResult ConvertUTF32toUTF8 ( + const UTF32** sourceStart, const UTF32* sourceEnd, + UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) { + ConversionResult result = conversionOK; + const UTF32* source = *sourceStart; + UTF8* target = *targetStart; + while (source < sourceEnd) { + UTF32 ch; + unsigned short bytesToWrite = 0; + const UTF32 byteMask = 0xBF; + const UTF32 byteMark = 0x80; + ch = *source++; + if (flags == strictConversion ) { + /* UTF-16 surrogate values are illegal in UTF-32 */ + if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { + --source; /* return to the illegal value itself */ + result = sourceIllegal; + break; + } + } + /* + * Figure out how many bytes the result will require. Turn any + * illegally large UTF32 things (> Plane 17) into replacement chars. + */ + if (ch < (UTF32)0x80) { bytesToWrite = 1; + } else if (ch < (UTF32)0x800) { bytesToWrite = 2; + } else if (ch < (UTF32)0x10000) { bytesToWrite = 3; + } else if (ch <= UNI_MAX_LEGAL_UTF32) { bytesToWrite = 4; + } else { bytesToWrite = 3; + ch = UNI_REPLACEMENT_CHAR; + result = sourceIllegal; + } + + target += bytesToWrite; + if (target > targetEnd) { + --source; /* Back up source pointer! */ + target -= bytesToWrite; result = targetExhausted; break; + } + switch (bytesToWrite) { /* note: everything falls through. */ + case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; + case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; + case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6; + case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]); + } + target += bytesToWrite; + } + *sourceStart = source; + *targetStart = target; + return result; +} + +/* --------------------------------------------------------------------- */ + +ConversionResult ConvertUTF8toUTF32 ( + const UTF8** sourceStart, const UTF8* sourceEnd, + UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) { + ConversionResult result = conversionOK; + const UTF8* source = *sourceStart; + UTF32* target = *targetStart; + while (source < sourceEnd) { + UTF32 ch = 0; + unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; + if (source + extraBytesToRead >= sourceEnd) { + result = sourceExhausted; break; + } + /* Do this check whether lenient or strict */ + if (! isLegalUTF8(source, extraBytesToRead+1)) { + result = sourceIllegal; + break; + } + /* + * The cases all fall through. See "Note A" below. + */ + switch (extraBytesToRead) { + case 5: ch += *source++; ch <<= 6; + case 4: ch += *source++; ch <<= 6; + case 3: ch += *source++; ch <<= 6; + case 2: ch += *source++; ch <<= 6; + case 1: ch += *source++; ch <<= 6; + case 0: ch += *source++; + } + ch -= offsetsFromUTF8[extraBytesToRead]; + + if (target >= targetEnd) { + source -= (extraBytesToRead+1); /* Back up the source pointer! */ + result = targetExhausted; break; + } + if (ch <= UNI_MAX_LEGAL_UTF32) { + /* + * UTF-16 surrogate values are illegal in UTF-32, and anything + * over Plane 17 (> 0x10FFFF) is illegal. + */ + if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { + if (flags == strictConversion) { + source -= (extraBytesToRead+1); /* return to the illegal value itself */ + result = sourceIllegal; + break; + } else { + *target++ = UNI_REPLACEMENT_CHAR; + } + } else { + *target++ = ch; + } + } else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */ + result = sourceIllegal; + *target++ = UNI_REPLACEMENT_CHAR; + } + } + *sourceStart = source; + *targetStart = target; + return result; +} + +UTF32 *MakeUTF32FromUTF8(UTF8 *string) +{ + UTF32 *ret, *tstart; + const UTF8 *tstring = string; + + size_t string_length = strlen((char *)string); + + tstart = ret = (UTF32 *)malloc(string_length * sizeof(UTF32) + 1); + + ConvertUTF8toUTF32(&tstring, &string[string_length], &tstart, &tstart[string_length], lenientConversion); + + *tstart = 0; + + return(ret); +} + + +/* --------------------------------------------------------------------- + + Note A. + The fall-through switches in UTF-8 reading code save a + temp variable, some decrements & conditionals. The switches + are equivalent to the following loop: + { + int tmpBytesToRead = extraBytesToRead+1; + do { + ch += *source++; + --tmpBytesToRead; + if (tmpBytesToRead) ch <<= 6; + } while (tmpBytesToRead > 0); + } + In UTF-8 writing code, the switches on "bytesToWrite" are + similarly unrolled loops. + + --------------------------------------------------------------------- */ diff --git a/libmednahawk/src/string/ConvertUTF.h b/libmednahawk/src/string/ConvertUTF.h new file mode 100644 index 0000000000..102bf55024 --- /dev/null +++ b/libmednahawk/src/string/ConvertUTF.h @@ -0,0 +1,149 @@ +/* + * Copyright 2001-2004 Unicode, Inc. + * + * Disclaimer + * + * This source code is provided as is by Unicode, Inc. No claims are + * made as to fitness for any particular purpose. No warranties of any + * kind are expressed or implied. The recipient agrees to determine + * applicability of information provided. If this file has been + * purchased on magnetic or optical media from Unicode, Inc., the + * sole remedy for any claim will be exchange of defective media + * within 90 days of receipt. + * + * Limitations on Rights to Redistribute This Code + * + * Unicode, Inc. hereby grants the right to freely use the information + * supplied in this file in the creation of products supporting the + * Unicode Standard, and to make copies of this file in any form + * for internal or external distribution as long as this notice + * remains attached. + */ + +/* --------------------------------------------------------------------- + + Conversions between UTF32, UTF-16, and UTF-8. Header file. + + Several funtions are included here, forming a complete set of + conversions between the three formats. UTF-7 is not included + here, but is handled in a separate source file. + + Each of these routines takes pointers to input buffers and output + buffers. The input buffers are const. + + Each routine converts the text between *sourceStart and sourceEnd, + putting the result into the buffer between *targetStart and + targetEnd. Note: the end pointers are *after* the last item: e.g. + *(sourceEnd - 1) is the last item. + + The return result indicates whether the conversion was successful, + and if not, whether the problem was in the source or target buffers. + (Only the first encountered problem is indicated.) + + After the conversion, *sourceStart and *targetStart are both + updated to point to the end of last text successfully converted in + the respective buffers. + + Input parameters: + sourceStart - pointer to a pointer to the source buffer. + The contents of this are modified on return so that + it points at the next thing to be converted. + targetStart - similarly, pointer to pointer to the target buffer. + sourceEnd, targetEnd - respectively pointers to the ends of the + two buffers, for overflow checking only. + + These conversion functions take a ConversionFlags argument. When this + flag is set to strict, both irregular sequences and isolated surrogates + will cause an error. When the flag is set to lenient, both irregular + sequences and isolated surrogates are converted. + + Whether the flag is strict or lenient, all illegal sequences will cause + an error return. This includes sequences such as: , , + or in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code + must check for illegal sequences. + + When the flag is set to lenient, characters over 0x10FFFF are converted + to the replacement character; otherwise (when the flag is set to strict) + they constitute an error. + + Output parameters: + The value "sourceIllegal" is returned from some routines if the input + sequence is malformed. When "sourceIllegal" is returned, the source + value will point to the illegal value that caused the problem. E.g., + in UTF-8 when a sequence is malformed, it points to the start of the + malformed sequence. + + Author: Mark E. Davis, 1994. + Rev History: Rick McGowan, fixes & updates May 2001. + Fixes & updates, Sept 2001. + +------------------------------------------------------------------------ */ + +/* --------------------------------------------------------------------- + The following 4 definitions are compiler-specific. + The C standard does not guarantee that wchar_t has at least + 16 bits, so wchar_t is no less portable than unsigned short! + All should be unsigned values to avoid sign extension during + bit mask & shift operations. +------------------------------------------------------------------------ */ + +/* Some fundamental constants */ +#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD +#define UNI_MAX_BMP (UTF32)0x0000FFFF +#define UNI_MAX_UTF16 (UTF32)0x0010FFFF +#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF +#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF + +typedef enum { + conversionOK, /* conversion successful */ + sourceExhausted, /* partial character in source, but hit end */ + targetExhausted, /* insuff. room in target for conversion */ + sourceIllegal /* source sequence is illegal/malformed */ +} ConversionResult; + +typedef enum { + strictConversion = 0, + lenientConversion +} ConversionFlags; + +/* This is for C++ and does no harm in C */ +#ifdef __cplusplus +extern "C" { +#endif + +ConversionResult ConvertUTF8toUTF16 ( + const UTF8** sourceStart, const UTF8* sourceEnd, + UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); + +ConversionResult ConvertUTF16toUTF8 ( + const UTF16** sourceStart, const UTF16* sourceEnd, + UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); + +ConversionResult ConvertUTF8toUTF32 ( + const UTF8** sourceStart, const UTF8* sourceEnd, + UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); + +ConversionResult ConvertUTF32toUTF8 ( + const UTF32** sourceStart, const UTF32* sourceEnd, + UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags); + +ConversionResult ConvertUTF16toUTF32 ( + const UTF16** sourceStart, const UTF16* sourceEnd, + UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags); + +ConversionResult ConvertUTF32toUTF16 ( + const UTF32** sourceStart, const UTF32* sourceEnd, + UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags); + +Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd); + + +/* Extra Mednafen convenience functions. */ +UTF32 *MakeUTF32FromUTF8(UTF8 *string); + + +#ifdef __cplusplus +} +#endif + +/* --------------------------------------------------------------------- */ diff --git a/libmednahawk/src/string/Makefile.am.inc b/libmednahawk/src/string/Makefile.am.inc new file mode 100644 index 0000000000..dfee1459e0 --- /dev/null +++ b/libmednahawk/src/string/Makefile.am.inc @@ -0,0 +1,2 @@ +mednafen_SOURCES += string/world_strtod.c string/escape.cpp string/ConvertUTF.cpp + diff --git a/libmednahawk/src/string/escape.cpp b/libmednahawk/src/string/escape.cpp new file mode 100644 index 0000000000..8aed2b324d --- /dev/null +++ b/libmednahawk/src/string/escape.cpp @@ -0,0 +1,157 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "escape.h" + +static unsigned int hex_nibble_to_val(char nibble) +{ + unsigned int ret = 0; + nibble = tolower(nibble); + + if(nibble >= '0' && nibble <= '9') + ret = nibble - '0'; + else + ret = nibble - 'a'; + + return(ret); +} + +void unescape_string(char *string) +{ + char *src = string; + bool inescape = 0; + uint8 hoval = 0; + int inhex = 0; + int inoctal = 0; + + while(*src) + { + if(*src == '\\') + { + inescape = TRUE; + inhex = 0; + inoctal = 0; + } + else if(inhex) + { + if(inhex == 1) + { + hoval = hex_nibble_to_val(*src) << 4; + inhex++; + } + else if(inhex == 2) + { + hoval |= hex_nibble_to_val(*src); + *string = hoval; + string++; + hoval = 0; + inhex = 0; + } + } + else if(inoctal) + { + if(inoctal == 1) + { + hoval = (*src - '0') * 8 * 8; + } + else if(inoctal == 2) + { + hoval += (*src - '0') * 8; + } + else + { + hoval += *src - '0'; + *string = hoval; + string++; + hoval = 0; + inoctal = 0; + } + } + else if(inescape) + { + switch(*src) + { + case 'a': *string = 7; string++; break; + case 'b': *string = 8; string++; break; + case 'f': *string = 12; string++; break; + case 'n': *string = 10; string++; break; + case 'r': *string = 13; string++; break; + case 't': *string = 9; string++; break; + case 'v': *string = 11; string++; break; + + case '\\': *string = '\\'; string++; break; + case '?': *string = '?'; string++; break; + case '\'': *string = '\''; string++; break; + case '"': *string = '"'; string++; break; + + case 'o': inoctal = 1; break; + case 'x': inhex = 1; break; + + + default: *string = *src; string++; break; + } + inescape = 0; + } + else + { + *string = *src; + string++; + } + src++; + } + *string = 0; +} + +char *escape_string(const char *text) +{ + uint32 slen = strlen(text); + char *ret = (char*)malloc(slen * 4 + 1); // \xFF + char *outoo = ret; + + for(uint32 x = 0; x < slen; x++) + { + int c = (uint8)text[x]; + + if(c < 0x20 || c == 0x7F || c == '\\' || c == '\'' || c == '"') + { + *outoo++ = '\\'; + + switch(c) + { + case '\\': *outoo++ = '\\'; break; + case '\'': *outoo++ = '\''; break; + case '"': *outoo++ = '"'; break; + case 7: *outoo++ = 'a'; break; + case 8: *outoo++ = 'b'; break; + case 12: *outoo++ = 'f'; break; + case 10: *outoo++ = 'n'; break; + case 13: *outoo++ = 'r'; break; + case 9: *outoo++ = 't'; break; + case 11: *outoo++ = 'v'; break; + + default: outoo += sprintf(outoo, "x%02x", c); break; + } + } + else + *outoo++ = c; + } + + *outoo = 0; + + return(ret); +} diff --git a/libmednahawk/src/string/escape.h b/libmednahawk/src/string/escape.h new file mode 100644 index 0000000000..f21bdececc --- /dev/null +++ b/libmednahawk/src/string/escape.h @@ -0,0 +1,7 @@ +#ifndef __MDFN_ESCAPE_H +#define __MDFN_ESCAPE_H + +void unescape_string(char *string); +char* escape_string(const char *text); + +#endif diff --git a/libmednahawk/src/string/world_strtod.c b/libmednahawk/src/string/world_strtod.c new file mode 100644 index 0000000000..450fa755f7 --- /dev/null +++ b/libmednahawk/src/string/world_strtod.c @@ -0,0 +1,207 @@ +/* Copyright (C) 1991, 1992, 1997, 1999 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Modified for Mednafen to provide a world-compatible(;)) strtod function, + that recognizes both "," and "." as valid radix characters. +*/ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#ifndef errno +extern int errno; +#endif + +#include + +#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii(c) +#endif + +#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) +#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) +#define TOLOWER(c) (IN_CTYPE_DOMAIN (c) ? tolower(c) : (c)) + +#include + +#if HAVE_FLOAT_H +# include +#else +# define DBL_MAX 1.7976931348623159e+308 +# define DBL_MIN 2.2250738585072010e-308 +#endif + +#if STDC_HEADERS +# include +# include +#else +# define NULL 0 +# ifndef HUGE_VAL +# define HUGE_VAL HUGE +# endif +#endif + +#include "world_strtod.h" + +/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the + character after the last one used in the number is put in *ENDPTR. */ +double world_strtod (const char *nptr, char **endptr) +{ + register const char *s; + short int sign; + + /* The number so far. */ + double num; + + int got_dot; /* Found a decimal point. */ + int got_digit; /* Seen any digits. */ + + /* The exponent of the number. */ + long int exponent; + + if (nptr == NULL) + { + errno = EINVAL; + goto noconv; + } + + s = nptr; + + /* Eat whitespace. */ + while (ISSPACE (*s)) + ++s; + + /* Get the sign. */ + sign = *s == '-' ? -1 : 1; + if (*s == '-' || *s == '+') + ++s; + + num = 0.0; + got_dot = 0; + got_digit = 0; + exponent = 0; + for (;; ++s) + { + if (ISDIGIT (*s)) + { + got_digit = 1; + + /* Make sure that multiplication by 10 will not overflow. */ + if (num > DBL_MAX * 0.1) + /* The value of the digit doesn't matter, since we have already + gotten as many digits as can be represented in a `double'. + This doesn't necessarily mean the result will overflow. + The exponent may reduce it to within range. + + We just need to record that there was another + digit so that we can multiply by 10 later. */ + ++exponent; + else + num = (num * 10.0) + (*s - '0'); + + /* Keep track of the number of digits after the decimal point. + If we just divided by 10 here, we would lose precision. */ + if (got_dot) + --exponent; + } + else if (!got_dot && (*s == '.' || *s == ',')) + /* Record that we have found the decimal point. */ + got_dot = 1; + else + /* Any other character terminates the number. */ + break; + } + + if (!got_digit) + goto noconv; + + if (TOLOWER (*s) == 'e') + { + /* Get the exponent specified after the `e' or `E'. */ + int save = errno; + char *end; + long int exp; + + errno = 0; + ++s; + exp = strtol (s, &end, 10); + if (errno == ERANGE) + { + /* The exponent overflowed a `long int'. It is probably a safe + assumption that an exponent that cannot be represented by + a `long int' exceeds the limits of a `double'. */ + if (endptr != NULL) + *endptr = end; + if (exp < 0) + goto underflow; + else + goto overflow; + } + else if (end == s) + /* There was no exponent. Reset END to point to + the 'e' or 'E', so *ENDPTR will be set there. */ + end = (char *) s - 1; + errno = save; + s = end; + exponent += exp; + } + + if (endptr != NULL) + *endptr = (char *) s; + + if (num == 0.0) + return 0.0; + + /* Multiply NUM by 10 to the EXPONENT power, + checking for overflow and underflow. */ + + if (exponent < 0) + { + if (num < DBL_MIN * pow (10.0, (double) -exponent)) + goto underflow; + } + else if (exponent > 0) + { + if (num > DBL_MAX * pow (10.0, (double) -exponent)) + goto overflow; + } + + num *= pow (10.0, (double) exponent); + + return num * sign; + +overflow: + /* Return an overflow error. */ + errno = ERANGE; + return HUGE_VAL * sign; + +underflow: + /* Return an underflow error. */ + if (endptr != NULL) + *endptr = (char *) nptr; + errno = ERANGE; + return 0.0; + +noconv: + /* There was no number. */ + if (endptr != NULL) + *endptr = (char *) nptr; + return 0.0; +} diff --git a/libmednahawk/src/string/world_strtod.h b/libmednahawk/src/string/world_strtod.h new file mode 100644 index 0000000000..6ac7707699 --- /dev/null +++ b/libmednahawk/src/string/world_strtod.h @@ -0,0 +1,14 @@ +#ifndef _world_strtod_H +#define _world_strtod_H + +#ifdef __cplusplus +extern "C" { +#endif + +double world_strtod (const char *nptr, char **endptr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libmednahawk/src/tests.cpp b/libmednahawk/src/tests.cpp new file mode 100644 index 0000000000..2e95938ae4 --- /dev/null +++ b/libmednahawk/src/tests.cpp @@ -0,0 +1,657 @@ +// DO NOT REMOVE/DISABLE THESE MATH AND COMPILER SANITY TESTS. THEY EXIST FOR A REASON. + +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +// We really don't want NDEBUG defined ;) +#ifdef HAVE_CONFIG_H +#include +#endif + +#undef NDEBUG + +#include "mednafen.h" +#include "lepacker.h" + +#undef NDEBUG +#include + +#define FATALME { printf("Math test failed: %s:%d\n", __FILE__, __LINE__); fprintf(stderr, "Math test failed: %s:%d\n", __FILE__, __LINE__); return(0); } + +// Don't define this static, and don't define it const. We want these tests to be done at run time, not compile time(although maybe we should do both...). +typedef struct +{ + int bits; + uint32 negative_one; + uint32 mostneg; + int32 mostnegresult; +} MathTestEntry; + +#define ADD_MTE(_bits) { _bits, ((uint32)1 << _bits) - 1, (uint32)1 << (_bits - 1), (int32)(0 - ((uint32)1 << (_bits - 1))) } + +MathTestEntry math_test_vals[] = +{ + { 9, 0x01FF, 0x0100, -256 }, + { 10, 0x03FF, 0x0200, -512 }, + { 11, 0x07FF, 0x0400, -1024 }, + { 12, 0x0FFF, 0x0800, -2048 }, + { 13, 0x1FFF, 0x1000, -4096 }, + { 14, 0x3FFF, 0x2000, -8192 }, + { 15, 0x7FFF, 0x4000, -16384 }, + + ADD_MTE(17), + ADD_MTE(18), + ADD_MTE(19), + ADD_MTE(20), + ADD_MTE(21), + ADD_MTE(22), + ADD_MTE(23), + ADD_MTE(24), + ADD_MTE(25), + ADD_MTE(26), + ADD_MTE(27), + ADD_MTE(28), + ADD_MTE(29), + ADD_MTE(30), + ADD_MTE(31), + + { 0, 0, 0, 0 }, +}; + +static bool DoSizeofTests(void) +{ + const int SizePairs[][2] = + { + { sizeof(uint8), 1 }, + { sizeof(int8), 1 }, + + { sizeof(uint16), 2 }, + { sizeof(int16), 2 }, + + { sizeof(uint32), 4 }, + { sizeof(int32), 4 }, + + { sizeof(uint64), 8 }, + { sizeof(int64), 8 }, + + { 0, 0 }, + }; + + int i = -1; + + while(SizePairs[++i][0]) + { + if(SizePairs[i][0] != SizePairs[i][1]) + FATALME; + } + + return(1); +} + +//zero 07-feb-2012 - changed NO_INLINE placement +static NO_INLINE void AntiNSOBugTest_Sub1_a(int *array); +static void AntiNSOBugTest_Sub1_a(int *array) +{ + for(int value = 0; value < 127; value++) + array[value] += (int8)value * 15; +} + +static NO_INLINE void AntiNSOBugTest_Sub1_b(int *array); +static void AntiNSOBugTest_Sub1_b(int *array) +{ + for(int value = 127; value < 256; value++) + array[value] += (int8)value * 15; +} + +static NO_INLINE void AntiNSOBugTest_Sub2(int *array); +static void AntiNSOBugTest_Sub2(int *array) +{ + for(int value = 0; value < 256; value++) + array[value] += (int8)value * 15; +} + +static NO_INLINE void AntiNSOBugTest_Sub3(int *array); +static void AntiNSOBugTest_Sub3(int *array) +{ + for(int value = 0; value < 256; value++) + { + if(value >= 128) + array[value] = (value - 256) * 15; + else + array[value] = value * 15; + } +} + +static bool DoAntiNSOBugTest(void) +{ + int array1[256], array2[256], array3[256]; + + memset(array1, 0, sizeof(array1)); + memset(array2, 0, sizeof(array2)); + memset(array3, 0, sizeof(array3)); + + AntiNSOBugTest_Sub1_a(array1); + AntiNSOBugTest_Sub1_b(array1); + AntiNSOBugTest_Sub2(array2); + AntiNSOBugTest_Sub3(array3); + + for(int i = 0; i < 256; i++) + { + if((array1[i] != array2[i]) || (array2[i] != array3[i])) + { + printf("%d %d %d %d\n", i, array1[i], array2[i], array3[i]); + FATALME; + } + } + //for(int value = 0; value < 256; value++) + // printf("%d, %d\n", (int8)value, ((int8)value) * 15); + + return(1); +} + +bool DoLEPackerTest(void) +{ + MDFN::LEPacker mizer; + static const uint8 correct_result[24] = { 0xed, 0xfe, 0xed, 0xde, 0xaa, 0xca, 0xef, 0xbe, 0xbe, 0xba, 0xfe, 0xca, 0xad, 0xde, 0x01, 0x9a, 0x0c, 0xa7, 0xff, 0x00, 0xff, 0xff, 0x55, 0x7f }; + + uint64 u64_test = 0xDEADCAFEBABEBEEFULL; + uint32 u32_test = 0xDEEDFEED; + uint16 u16_test = 0xCAAA; + uint8 u8_test = 0x55; + int32 s32_test = -5829478; + int16 s16_test = -1; + int8 s8_test = 127; + + bool bool_test0 = 0; + bool bool_test1 = 1; + + mizer ^ u32_test; + mizer ^ u16_test; + mizer ^ u64_test; + mizer ^ bool_test1; + mizer ^ s32_test; + mizer ^ bool_test0; + mizer ^ s16_test; + mizer ^ u8_test; + mizer ^ s8_test; + + if(mizer.size() != 24) + { + printf("Test failed: LEPacker data incorrect size.\n"); + return(FALSE); + } + + for(unsigned int i = 0; i < mizer.size(); i++) + if(mizer[i] != correct_result[i]) + { + printf("Test failed: LEPacker packed data incorrect.\n"); + return(FALSE); + } + + u64_test = 0; + u32_test = 0; + u16_test = 0; + u8_test = 0; + s32_test = 0; + s16_test = 0; + s8_test = 0; + + bool_test0 = 1; + bool_test1 = 0; + + mizer.set_read_mode(TRUE); + + mizer ^ u32_test; + mizer ^ u16_test; + mizer ^ u64_test; + mizer ^ bool_test1; + mizer ^ s32_test; + mizer ^ bool_test0; + mizer ^ s16_test; + mizer ^ u8_test; + mizer ^ s8_test; + + + if(u32_test != 0xDEEDFEED) + { + printf("Test failed: LEPacker u32 unpacking incorrect.\n"); + return(FALSE); + } + + if(u16_test != 0xCAAA) + { + printf("Test failed: LEPacker u16 unpacking incorrect.\n"); + return(FALSE); + } + + if(u64_test != 0xDEADCAFEBABEBEEFULL) + { + printf("%16llx\n", (unsigned long long)u64_test); + printf("Test failed: LEPacker u64 unpacking incorrect.\n"); + return(FALSE); + } + + if(u8_test != 0x55) + { + printf("Test failed: LEPacker u8 unpacking incorrect.\n"); + return(FALSE); + } + + if(s32_test != -5829478) + { + printf("Test failed: LEPacker s32 unpacking incorrect.\n"); + return(FALSE); + } + + if(s16_test != -1) + { + printf("Test failed: LEPacker s16 unpacking incorrect.\n"); + return(FALSE); + } + + if(s8_test != 127) + { + printf("Test failed: LEPacker s8 unpacking incorrect.\n"); + return(FALSE); + } + + if(bool_test0 != 0) + { + printf("Test failed: LEPacker bool unpacking incorrect.\n"); + return(FALSE); + } + + if(bool_test1 != 1) + { + printf("Test failed: LEPacker bool unpacking incorrect.\n"); + return(FALSE); + } + + return(TRUE); +} + +struct MathTestTSOEntry +{ + int32 a; + int32 b; +}; + +// Don't declare as static(though whopr might mess it up anyway) +MathTestTSOEntry MathTestTSOTests[] = +{ + { 0x7FFFFFFF, 2 }, + { 0x7FFFFFFE, 0x7FFFFFFF }, + { 0x7FFFFFFF, 0x7FFFFFFF }, + { 0x7FFFFFFE, 0x7FFFFFFE }, +}; + +static void TestSignedOverflow(void) +{ + for(unsigned int i = 0; i < sizeof(MathTestTSOTests) / sizeof(MathTestTSOEntry); i++) + { + int32 a = MathTestTSOTests[i].a; + int32 b = MathTestTSOTests[i].b; + + assert((a + b) < a && (a + b) < b); + + assert((a + 0x7FFFFFFE) < a); + assert((b + 0x7FFFFFFE) < b); + + assert((a + 0x7FFFFFFF) < a); + assert((b + 0x7FFFFFFF) < b); + + assert((int32)(a + 0x80000000) < a); + assert((int32)(b + 0x80000000) < b); + + assert((int32)(a ^ 0x80000000) < a); + assert((int32)(b ^ 0x80000000) < b); + } +} + + +static void DoAlignmentChecks(void) +{ + uint8 padding0[3]; + MDFN_ALIGN(16) uint8 aligned0[7]; + MDFN_ALIGN(4) uint8 aligned1[2]; + MDFN_ALIGN(16) uint32 aligned2[2]; + uint8 padding1[3]; + + static uint8 g_padding0[3]; + static MDFN_ALIGN(16) uint8 g_aligned0[7]; + static MDFN_ALIGN(4) uint8 g_aligned1[2]; + static MDFN_ALIGN(16) uint32 g_aligned2[2]; + static uint8 g_padding1[3]; + + // Make sure compiler doesn't removing padding vars + assert((&padding0[1] - &padding0[0]) == 1); + assert((&padding1[1] - &padding1[0]) == 1); + assert((&g_padding0[1] - &g_padding0[0]) == 1); + assert((&g_padding1[1] - &g_padding1[0]) == 1); + + + assert( (((unsigned long long)&aligned0[0]) & 0xF) == 0); + assert( (((unsigned long long)&aligned1[0]) & 0x3) == 0); + assert( (((unsigned long long)&aligned2[0]) & 0xF) == 0); + + assert(((uint8 *)&aligned0[1] - (uint8 *)&aligned0[0]) == 1); + assert(((uint8 *)&aligned1[1] - (uint8 *)&aligned1[0]) == 1); + assert(((uint8 *)&aligned2[1] - (uint8 *)&aligned2[0]) == 4); + + + assert( (((unsigned long long)&g_aligned0[0]) & 0xF) == 0); + assert( (((unsigned long long)&g_aligned1[0]) & 0x3) == 0); + assert( (((unsigned long long)&g_aligned2[0]) & 0xF) == 0); + + assert(((uint8 *)&g_aligned0[1] - (uint8 *)&g_aligned0[0]) == 1); + assert(((uint8 *)&g_aligned1[1] - (uint8 *)&g_aligned1[0]) == 1); + assert(((uint8 *)&g_aligned2[1] - (uint8 *)&g_aligned2[0]) == 4); +} + +#include "masmem.h" + +static void QuickEndianRBOTest(void) +{ + uint32 test[2] = { 0xDEADBEEF, 0xCAFEBABE }; + uint32 test2 = { 0xD00FD00F }; + + assert(LoadU32_RBO(&test[0]) == 0xEFBEADDE); + StoreU32_RBO(&test[1], 0x12341235); + assert(test[1] == 0x35123412); + assert(LoadU32_RBO(&test[1]) == 0x12341235); + assert(LoadU32_RBO(&test2) == 0x0FD00FD0); +} + +// don't make this static, and don't make it local scope. Whole-program optimization might defeat the purpose of this, though... +unsigned int mdfn_shifty_test[4] = +{ + 0, 8, 16, 32 +}; + + +#include "general.h" + +bool MDFN_RunMathTests(void) +{ + MathTestEntry *itoo = math_test_vals; + + if(!DoSizeofTests()) + return(0); + + // Make sure the "char" type is signed(pass -fsigned-char to gcc). New code in Mednafen shouldn't be written with the + // assumption that "char" is signed, but there likely is at least some code that does. + { + char tmp = 255; + assert(tmp < 0); + } + + #if 0 + // TODO(except for 32-bit >> 32 test) + { + uint8 test_cow8 = (uint8)0xFF >> mdfn_shifty_test[1]; + uint16 test_cow16 = (uint16)0xFFFF >> mdfn_shifty_test[2]; + uint32 test_cow32 = (uint32)0xFFFFFFFF >> mdfn_shifty_test[3]; + uint32 test_cow32_2 = (uint32)0xFFFFFFFF >> mdfn_shifty_test[0]; + + printf("%08x\n", test_cow32); + + assert(test_cow8 == 0); + assert(test_cow16 == 0); + assert(test_cow32 == 0); + assert(test_cow32_2 == 0xFFFFFFFF); + } + #endif + + { + int32 meow; + + meow = 1; + meow >>= 1; + assert(meow == 0); + + meow = 5; + meow >>= 1; + assert(meow == 2); + + meow = -1; + meow >>= 1; + assert(meow == -1); + + meow = -5; + meow >>= 1; + assert(meow == -3); + + meow = 1; + meow /= 2; + assert(meow == 0); + + meow = 5; + meow /= 2; + assert(meow == 2); + + meow = -1; + meow /= 2; + assert(meow == 0); + + meow = -5; + meow /= 2; + assert(meow == -2); + + meow = -5; + meow = (int32)(meow + ((uint32)meow >> 31)) >> 1; + assert(meow == -2); + + #if 0 + meow = 1 << 30; + meow <<= 1; + assert(meow == -2147483648); + + meow = 1 << 31; + meow <<= 1; + assert(meow == 0); + #endif + } + + + // New tests added May 22, 2010 to detect MSVC compiler(and possibly other compilers) bad code generation. + { + uint32 test_tab[4] = { 0x2000 | 0x1000, 0x2000, 0x1000, 0x0000 }; + const uint32 result_tab[4][2] = { { 0xE, 0x7 }, { 0xE, 0x0 }, { 0x0, 0x7 }, { 0x0, 0x0 } }; + + for(int i = 0; i < 4; i++) + { + uint32 hflip_xor; + uint32 vflip_xor; + uint32 bgsc; + + bgsc = test_tab[i]; + + hflip_xor = ((int32)(bgsc << 18) >> 30) & 0xE; + vflip_xor = ((int32)(bgsc << 19) >> 31) & 0x7; + + assert(hflip_xor == result_tab[i][0]); + assert(vflip_xor == result_tab[i][1]); + + //printf("%d %d\n", hflip_xor, result_tab[i][0]); + //printf("%d %d\n", vflip_xor, result_tab[i][1]); + } + + uint32 lfsr = 1; + + // quick and dirty RNG(to also test non-constant-expression evaluation, at least until compilers are extremely advanced :b) + for(int i = 0; i < 256; i++) + { + int feedback = ((lfsr >> 7) & 1) ^ ((lfsr >> 14) & 1); + lfsr = ((lfsr << 1) & 0x7FFF) | feedback; + + uint32 hflip_xor; + uint32 vflip_xor; + uint32 hflip_xor_alt; + uint32 vflip_xor_alt; + uint32 bgsc; + + bgsc = lfsr; + + hflip_xor = ((int32)(bgsc << 18) >> 30) & 0xE; + vflip_xor = ((int32)(bgsc << 19) >> 31) & 0x7; + + hflip_xor_alt = bgsc & 0x2000 ? 0xE : 0; + vflip_xor_alt = bgsc & 0x1000 ? 0x7 : 0; + + assert(hflip_xor == hflip_xor_alt); + assert(vflip_xor == vflip_xor_alt); + } + + } + + DoAlignmentChecks(); + TestSignedOverflow(); + + if(sign_9_to_s16(itoo->negative_one) != -1 || sign_9_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_10_to_s16(itoo->negative_one) != -1 || sign_10_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_11_to_s16(itoo->negative_one) != -1 || sign_11_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_12_to_s16(itoo->negative_one) != -1 || sign_12_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_13_to_s16(itoo->negative_one) != -1 || sign_13_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_14_to_s16(itoo->negative_one) != -1 || sign_14_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_15_to_s16(itoo->negative_one) != -1 || sign_15_to_s16(itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(17, itoo->negative_one) != -1 || sign_x_to_s32(17, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(18, itoo->negative_one) != -1 || sign_x_to_s32(18, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(19, itoo->negative_one) != -1 || sign_x_to_s32(19, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(20, itoo->negative_one) != -1 || sign_x_to_s32(20, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(21, itoo->negative_one) != -1 || sign_x_to_s32(21, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(22, itoo->negative_one) != -1 || sign_x_to_s32(22, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(23, itoo->negative_one) != -1 || sign_x_to_s32(23, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(24, itoo->negative_one) != -1 || sign_x_to_s32(24, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(25, itoo->negative_one) != -1 || sign_x_to_s32(25, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(26, itoo->negative_one) != -1 || sign_x_to_s32(26, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(27, itoo->negative_one) != -1 || sign_x_to_s32(27, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(28, itoo->negative_one) != -1 || sign_x_to_s32(28, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(29, itoo->negative_one) != -1 || sign_x_to_s32(29, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(30, itoo->negative_one) != -1 || sign_x_to_s32(30, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sign_x_to_s32(31, itoo->negative_one) != -1 || sign_x_to_s32(31, itoo->mostneg) != itoo->mostnegresult) + FATALME; + itoo++; + + if(sizeof(int8) != 1 || sizeof(uint8) != 1) + FATALME; + + + if(!DoAntiNSOBugTest()) + return(0); + + if(!DoLEPackerTest()) + return(0); + + assert(uilog2(0) == 0); + assert(uilog2(1) == 0); + assert(uilog2(3) == 1); + assert(uilog2(4095) == 11); + assert(uilog2(0xFFFFFFFF) == 31); + + QuickEndianRBOTest(); + +#if 0 +// Not really a math test. + const char *test_paths[] = { "/meow", "/meow/cow", "\\meow", "\\meow\\cow", "\\\\meow", "\\\\meow\\cow", + "/meow.", "/me.ow/cow.", "\\meow.", "\\me.ow\\cow.", "\\\\meow.", "\\\\meow\\cow.", + "/meow.txt", "/me.ow/cow.txt", "\\meow.txt", "\\me.ow\\cow.txt", "\\\\meow.txt", "\\\\meow\\cow.txt" + + "/meow", "/meow\\cow", "\\meow", "\\meow/cow", "\\\\meow", "\\\\meow/cow", + "/meow.", "\\me.ow/cow.", "\\meow.", "/me.ow\\cow.", "\\\\meow.", "\\\\meow/cow.", + "/meow.txt", "/me.ow\\cow.txt", "\\meow.txt", "\\me.ow/cow.txt", "\\\\meow.txt", "\\\\meow/cow.txt", + "/bark///dog", "\\bark\\\\\\dog" }; + + for(unsigned i = 0; i < sizeof(test_paths) / sizeof(const char *); i++) + { + std::string file_path = std::string(test_paths[i]); + std::string dir_path; + std::string file_base; + std::string file_ext; + + MDFN_GetFilePathComponents(file_path, &dir_path, &file_base, &file_ext); + + printf("%s ------ dir=%s --- base=%s --- ext=%s\n", file_path.c_str(), dir_path.c_str(), file_base.c_str(), file_ext.c_str()); + + } +#endif + + + return(1); +} diff --git a/libmednahawk/src/tests.h b/libmednahawk/src/tests.h new file mode 100644 index 0000000000..aa7cde97f4 --- /dev/null +++ b/libmednahawk/src/tests.h @@ -0,0 +1,7 @@ +#ifndef __MDFN_TESTS_H +#define __MDFN_TESTS_H + +bool MDFN_RunMathTests(void); + +#endif + diff --git a/libmednahawk/src/tremor/!!!VERSION b/libmednahawk/src/tremor/!!!VERSION new file mode 100644 index 0000000000..2bcea63a46 --- /dev/null +++ b/libmednahawk/src/tremor/!!!VERSION @@ -0,0 +1,5 @@ +tremor svn 18222 +libogg 1.3.0 + +With modifications like: +perl -p -i -e "s//\"ogg.h\"/g" * && perl -p -i -e "s//\"os_types.h\"/g" * && perl -p -i -e "s//\"config_types.h\"/g" * diff --git a/libmednahawk/src/tremor/CHANGELOG b/libmednahawk/src/tremor/CHANGELOG new file mode 100644 index 0000000000..6e660729ed --- /dev/null +++ b/libmednahawk/src/tremor/CHANGELOG @@ -0,0 +1,19 @@ +*** 20020517: 1.0.2 *** + + Playback bugfix to floor1; mode mistakenly used for sizing instead + of blockflag + +*** 20020515: 1.0.1 *** + + Added complete API documentation to source tarball. No code + changes. + +*** 20020412: 1.0.1 *** + + Fixed a clipping bug that affected ARM processors; negative + overflows were being properly clipped, but then clobbered to + positive by the positive overflow chec (asm_arm.h:CLIP_TO_15) + +*** 20020403: 1.0.0 *** + + Initial version \ No newline at end of file diff --git a/libmednahawk/src/tremor/COPYING b/libmednahawk/src/tremor/COPYING new file mode 100644 index 0000000000..78291a4a65 --- /dev/null +++ b/libmednahawk/src/tremor/COPYING @@ -0,0 +1,28 @@ +Copyright (c) 2002, Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libmednahawk/src/tremor/Makefile.am b/libmednahawk/src/tremor/Makefile.am new file mode 100644 index 0000000000..cfa8a62eef --- /dev/null +++ b/libmednahawk/src/tremor/Makefile.am @@ -0,0 +1,15 @@ +DEFS = @DEFS@ @CFLAG_VISIBILITY@ +INCLUDES = -I./ + +noinst_LIBRARIES = libvorbisidec.a + +libvorbisidec_a_SOURCES = mdct.c block.c window.c \ + synthesis.c info.c \ + floor1.c floor0.c vorbisfile.c \ + res012.c mapping0.c registry.c codebook.c \ + sharedbook.c framing.c bitwise.c \ + codebook.h misc.h mdct_lookup.h\ + os.h mdct.h block.h ivorbisfile.h lsp_lookup.h\ + registry.h window.h window_lookup.h\ + codec_internal.h backends.h ogg.h \ + asm_arm.h ivorbiscodec.h diff --git a/libmednahawk/src/tremor/Makefile.in b/libmednahawk/src/tremor/Makefile.in new file mode 100644 index 0000000000..6f4db03e5f --- /dev/null +++ b/libmednahawk/src/tremor/Makefile.in @@ -0,0 +1,623 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/tremor +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + COPYING +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libvorbisidec_a_AR = $(AR) $(ARFLAGS) +libvorbisidec_a_LIBADD = +am_libvorbisidec_a_OBJECTS = mdct.$(OBJEXT) block.$(OBJEXT) \ + window.$(OBJEXT) synthesis.$(OBJEXT) info.$(OBJEXT) \ + floor1.$(OBJEXT) floor0.$(OBJEXT) vorbisfile.$(OBJEXT) \ + res012.$(OBJEXT) mapping0.$(OBJEXT) registry.$(OBJEXT) \ + codebook.$(OBJEXT) sharedbook.$(OBJEXT) framing.$(OBJEXT) \ + bitwise.$(OBJEXT) +libvorbisidec_a_OBJECTS = $(am_libvorbisidec_a_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libvorbisidec_a_SOURCES) +DIST_SOURCES = $(libvorbisidec_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ @CFLAG_VISIBILITY@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = -I./ +noinst_LIBRARIES = libvorbisidec.a +libvorbisidec_a_SOURCES = mdct.c block.c window.c \ + synthesis.c info.c \ + floor1.c floor0.c vorbisfile.c \ + res012.c mapping0.c registry.c codebook.c \ + sharedbook.c framing.c bitwise.c \ + codebook.h misc.h mdct_lookup.h\ + os.h mdct.h block.h ivorbisfile.h lsp_lookup.h\ + registry.h window.h window_lookup.h\ + codec_internal.h backends.h ogg.h \ + asm_arm.h ivorbiscodec.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/tremor/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/tremor/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libvorbisidec.a: $(libvorbisidec_a_OBJECTS) $(libvorbisidec_a_DEPENDENCIES) + $(AM_V_at)-rm -f libvorbisidec.a + $(AM_V_AR)$(libvorbisidec_a_AR) libvorbisidec.a $(libvorbisidec_a_OBJECTS) $(libvorbisidec_a_LIBADD) + $(AM_V_at)$(RANLIB) libvorbisidec.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitwise.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebook.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floor0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floor1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/framing.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapping0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdct.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/registry.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/res012.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sharedbook.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synthesis.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vorbisfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/tremor/README b/libmednahawk/src/tremor/README new file mode 100644 index 0000000000..e5f67f8e3b --- /dev/null +++ b/libmednahawk/src/tremor/README @@ -0,0 +1,46 @@ +This README covers the Ogg Vorbis 'Tremor' integer playback codec +source as of date 2002 09 02, version 1.0.0. + + ****** + +The C source in this package will build on any ANSI C compiler and +function completely and properly on any platform. The included build +system assumes GNU build system and make tools (m4, automake, +autoconf, libtool and gmake). GCC is not required, although GCC is +the most tested compiler. To build using GNU tools, type in the +source directory: + +./autogen.sh +make + +Currently, the source implements playback in pure C on all platforms +except ARM, where a [currently] small amount of assembly (see +asm_arm.h) is used to implement 64 bit math operations and fast LSP +computation. If building on ARM without the benefit of GNU build +system tools, be sure that '_ARM_ASSEM_' is #defined by the build +system if this assembly is desired, else the resulting library will +use whatever 64 bit math builtins the compiler implements. + +No math library is required by this source. No floating point +operations are used at any point in either setup or decode. This +decoder library will properly decode any past, current or future +Vorbis I file or stream. + + ******** + +The build system produces a static and [when supported by the OS] +dynamic library named 'libvorbisidec'. This library exposes an API +nearly identical to the BSD reference library's 'libvorbisfile', +including all the features familiar to users of vorbisfile. This API +is similar enough that the proper header file to include is named +'ivorbisfile.h' [included in the source build directory]. Lower level +libvorbis-style headers and structures are in 'ivorbiscodec.h' +[included in the source build directory]. A simple example program, +ivorbisfile_example.c, can be built with 'make example'. + + ******** + +Detailed Tremor API Documentation begins at doc/index.html + +Monty +xiph.org diff --git a/libmednahawk/src/tremor/Version_script.in b/libmednahawk/src/tremor/Version_script.in new file mode 100644 index 0000000000..7f22f2fa87 --- /dev/null +++ b/libmednahawk/src/tremor/Version_script.in @@ -0,0 +1,62 @@ +# +# Export file for libvorbisidec +# +# Only the symbols listed in the global section will be callable from +# applications linking to libvorbisidec. +# + +@PACKAGE@.so.1 +{ + global: + ov_clear; + ov_open; + ov_open_callbacks; + ov_test; + ov_test_callbacks; + ov_test_open; + ov_bitrate; + ov_bitrate_instant; + ov_streams; + ov_seekable; + ov_serialnumber; + ov_raw_total; + ov_pcm_total; + ov_time_total; + ov_raw_seek; + ov_pcm_seek; + ov_pcm_seek_page; + ov_time_seek; + ov_time_seek_page; + ov_raw_tell; + ov_pcm_tell; + ov_time_tell; + ov_info; + ov_comment; + ov_read; + + vorbis_info_init; + vorbis_info_clear; + vorbis_info_blocksize; + vorbis_comment_init; + vorbis_comment_add; + vorbis_comment_add_tag; + vorbis_comment_query; + vorbis_comment_query_count; + vorbis_comment_clear; + vorbis_block_init; + vorbis_block_clear; + vorbis_dsp_clear; + vorbis_synthesis_idheader; + vorbis_synthesis_headerin; + vorbis_synthesis_init; + vorbis_synthesis_restart; + vorbis_synthesis; + vorbis_synthesis_trackonly; + vorbis_synthesis_blockin; + vorbis_synthesis_pcmout; + vorbis_synthesis_read; + vorbis_packet_blocksize; + + local: + *; +}; diff --git a/libmednahawk/src/tremor/asm_arm.h b/libmednahawk/src/tremor/asm_arm.h new file mode 100644 index 0000000000..a37bb0b8aa --- /dev/null +++ b/libmednahawk/src/tremor/asm_arm.h @@ -0,0 +1,245 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: arm7 and later wide math functions + + ********************************************************************/ + +#ifdef _ARM_ASSEM_ + +#if !defined(_V_WIDE_MATH) && !defined(_LOW_ACCURACY_) +#define _V_WIDE_MATH + +static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { + int lo,hi; + asm volatile("smull\t%0, %1, %2, %3" + : "=&r"(lo),"=&r"(hi) + : "%r"(x),"r"(y) + : "cc"); + return(hi); +} + +static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { + return MULT32(x,y)<<1; +} + +static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { + int lo,hi; + asm volatile("smull %0, %1, %2, %3\n\t" + "movs %0, %0, lsr #15\n\t" + "adc %1, %0, %1, lsl #17\n\t" + : "=&r"(lo),"=&r"(hi) + : "%r"(x),"r"(y) + : "cc"); + return(hi); +} + +#define MB() asm volatile ("" : : : "memory") + +static inline void XPROD32(ogg_int32_t a, ogg_int32_t b, + ogg_int32_t t, ogg_int32_t v, + ogg_int32_t *x, ogg_int32_t *y) +{ + int x1, y1, l; + asm( "smull %0, %1, %4, %6\n\t" + "smlal %0, %1, %5, %7\n\t" + "rsb %3, %4, #0\n\t" + "smull %0, %2, %5, %6\n\t" + "smlal %0, %2, %3, %7" + : "=&r" (l), "=&r" (x1), "=&r" (y1), "=r" (a) + : "3" (a), "r" (b), "r" (t), "r" (v) + : "cc" ); + *x = x1; + MB(); + *y = y1; +} + +static inline void XPROD31(ogg_int32_t a, ogg_int32_t b, + ogg_int32_t t, ogg_int32_t v, + ogg_int32_t *x, ogg_int32_t *y) +{ + int x1, y1, l; + asm( "smull %0, %1, %4, %6\n\t" + "smlal %0, %1, %5, %7\n\t" + "rsb %3, %4, #0\n\t" + "smull %0, %2, %5, %6\n\t" + "smlal %0, %2, %3, %7" + : "=&r" (l), "=&r" (x1), "=&r" (y1), "=r" (a) + : "3" (a), "r" (b), "r" (t), "r" (v) + : "cc" ); + *x = x1 << 1; + MB(); + *y = y1 << 1; +} + +static inline void XNPROD31(ogg_int32_t a, ogg_int32_t b, + ogg_int32_t t, ogg_int32_t v, + ogg_int32_t *x, ogg_int32_t *y) +{ + int x1, y1, l; + asm( "rsb %2, %4, #0\n\t" + "smull %0, %1, %3, %5\n\t" + "smlal %0, %1, %2, %6\n\t" + "smull %0, %2, %4, %5\n\t" + "smlal %0, %2, %3, %6" + : "=&r" (l), "=&r" (x1), "=&r" (y1) + : "r" (a), "r" (b), "r" (t), "r" (v) + : "cc" ); + *x = x1 << 1; + MB(); + *y = y1 << 1; +} + +#endif + +#ifndef _V_CLIP_MATH +#define _V_CLIP_MATH + +static inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) { + int tmp; + asm volatile("subs %1, %0, #32768\n\t" + "movpl %0, #0x7f00\n\t" + "orrpl %0, %0, #0xff\n" + "adds %1, %0, #32768\n\t" + "movmi %0, #0x8000" + : "+r"(x),"=r"(tmp) + : + : "cc"); + return(x); +} + +#endif + +#ifndef _V_LSP_MATH_ASM +#define _V_LSP_MATH_ASM + +static inline void lsp_loop_asm(ogg_uint32_t *qip,ogg_uint32_t *pip, + ogg_int32_t *qexpp, + ogg_int32_t *ilsp,ogg_int32_t wi, + ogg_int32_t m){ + + ogg_uint32_t qi=*qip,pi=*pip; + ogg_int32_t qexp=*qexpp; + + asm("mov r0,%3;" + "movs r1,%5,asr#1;" + "add r0,r0,r1,lsl#3;" + "beq 2f;\n" + "1:" + + "ldmdb r0!,{r1,r3};" + "subs r1,r1,%4;" //ilsp[j]-wi + "rsbmi r1,r1,#0;" //labs(ilsp[j]-wi) + "umull %0,r2,r1,%0;" //qi*=labs(ilsp[j]-wi) + + "subs r1,r3,%4;" //ilsp[j+1]-wi + "rsbmi r1,r1,#0;" //labs(ilsp[j+1]-wi) + "umull %1,r3,r1,%1;" //pi*=labs(ilsp[j+1]-wi) + + "cmn r2,r3;" // shift down 16? + "beq 0f;" + "add %2,%2,#16;" + "mov %0,%0,lsr #16;" + "orr %0,%0,r2,lsl #16;" + "mov %1,%1,lsr #16;" + "orr %1,%1,r3,lsl #16;" + "0:" + "cmp r0,%3;\n" + "bhi 1b;\n" + + "2:" + // odd filter assymetry + "ands r0,%5,#1;\n" + "beq 3f;\n" + "add r0,%3,%5,lsl#2;\n" + + "ldr r1,[r0,#-4];\n" + "mov r0,#0x4000;\n" + + "subs r1,r1,%4;\n" //ilsp[j]-wi + "rsbmi r1,r1,#0;\n" //labs(ilsp[j]-wi) + "umull %0,r2,r1,%0;\n" //qi*=labs(ilsp[j]-wi) + "umull %1,r3,r0,%1;\n" //pi*=labs(ilsp[j+1]-wi) + + "cmn r2,r3;\n" // shift down 16? + "beq 3f;\n" + "add %2,%2,#16;\n" + "mov %0,%0,lsr #16;\n" + "orr %0,%0,r2,lsl #16;\n" + "mov %1,%1,lsr #16;\n" + "orr %1,%1,r3,lsl #16;\n" + + //qi=(pi>>shift)*labs(ilsp[j]-wi); + //pi=(qi>>shift)*labs(ilsp[j+1]-wi); + //qexp+=shift; + + //} + + /* normalize to max 16 sig figs */ + "3:" + "mov r2,#0;" + "orr r1,%0,%1;" + "tst r1,#0xff000000;" + "addne r2,r2,#8;" + "movne r1,r1,lsr #8;" + "tst r1,#0x00f00000;" + "addne r2,r2,#4;" + "movne r1,r1,lsr #4;" + "tst r1,#0x000c0000;" + "addne r2,r2,#2;" + "movne r1,r1,lsr #2;" + "tst r1,#0x00020000;" + "addne r2,r2,#1;" + "movne r1,r1,lsr #1;" + "tst r1,#0x00010000;" + "addne r2,r2,#1;" + "mov %0,%0,lsr r2;" + "mov %1,%1,lsr r2;" + "add %2,%2,r2;" + + : "+r"(qi),"+r"(pi),"+r"(qexp) + : "r"(ilsp),"r"(wi),"r"(m) + : "r0","r1","r2","r3","cc"); + + *qip=qi; + *pip=pi; + *qexpp=qexp; +} + +static inline void lsp_norm_asm(ogg_uint32_t *qip,ogg_int32_t *qexpp){ + + ogg_uint32_t qi=*qip; + ogg_int32_t qexp=*qexpp; + + asm("tst %0,#0x0000ff00;" + "moveq %0,%0,lsl #8;" + "subeq %1,%1,#8;" + "tst %0,#0x0000f000;" + "moveq %0,%0,lsl #4;" + "subeq %1,%1,#4;" + "tst %0,#0x0000c000;" + "moveq %0,%0,lsl #2;" + "subeq %1,%1,#2;" + "tst %0,#0x00008000;" + "moveq %0,%0,lsl #1;" + "subeq %1,%1,#1;" + : "+r"(qi),"+r"(qexp) + : + : "cc"); + *qip=qi; + *qexpp=qexp; +} + +#endif +#endif + diff --git a/libmednahawk/src/tremor/backends.h b/libmednahawk/src/tremor/backends.h new file mode 100644 index 0000000000..020f48f70f --- /dev/null +++ b/libmednahawk/src/tremor/backends.h @@ -0,0 +1,131 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: backend and mapping structures + + ********************************************************************/ + +/* this is exposed up here because we need it for static modes. + Lookups for each backend aren't exposed because there's no reason + to do so */ + +#ifndef _vorbis_backend_h_ +#define _vorbis_backend_h_ + +#include "codec_internal.h" + +/* this would all be simpler/shorter with templates, but.... */ +/* Transform backend generic *************************************/ + +/* only mdct right now. Flesh it out more if we ever transcend mdct + in the transform domain */ + +/* Floor backend generic *****************************************/ +typedef struct{ + vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *); + vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *, + vorbis_info_floor *); + void (*free_info) (vorbis_info_floor *); + void (*free_look) (vorbis_look_floor *); + void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *); + int (*inverse2) (struct vorbis_block *,vorbis_look_floor *, + void *buffer,ogg_int32_t *); +} vorbis_func_floor; + +typedef struct{ + int order; + long rate; + long barkmap; + + int ampbits; + int ampdB; + + int numbooks; /* <= 16 */ + int books[16]; + +} vorbis_info_floor0; + +#define VIF_POSIT 63 +#define VIF_CLASS 16 +#define VIF_PARTS 31 +typedef struct{ + int partitions; /* 0 to 31 */ + int partitionclass[VIF_PARTS]; /* 0 to 15 */ + + int class_dim[VIF_CLASS]; /* 1 to 8 */ + int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1< +#include +#include +#include "ogg.h" + +#define BUFFER_INCREMENT 256 + +static const unsigned long mask[]= +{0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f, + 0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff, + 0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff, + 0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff, + 0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff, + 0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff, + 0x3fffffff,0x7fffffff,0xffffffff }; + +static const unsigned int mask8B[]= +{0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; + +void oggpack_writeinit(oggpack_buffer *b){ + memset(b,0,sizeof(*b)); + b->ptr=b->buffer=_ogg_malloc(BUFFER_INCREMENT); + b->buffer[0]='\0'; + b->storage=BUFFER_INCREMENT; +} + +void oggpackB_writeinit(oggpack_buffer *b){ + oggpack_writeinit(b); +} + +int oggpack_writecheck(oggpack_buffer *b){ + if(!b->ptr || !b->storage)return -1; + return 0; +} + +int oggpackB_writecheck(oggpack_buffer *b){ + return oggpack_writecheck(b); +} + +void oggpack_writetrunc(oggpack_buffer *b,long bits){ + long bytes=bits>>3; + if(b->ptr){ + bits-=bytes*8; + b->ptr=b->buffer+bytes; + b->endbit=bits; + b->endbyte=bytes; + *b->ptr&=mask[bits]; + } +} + +void oggpackB_writetrunc(oggpack_buffer *b,long bits){ + long bytes=bits>>3; + if(b->ptr){ + bits-=bytes*8; + b->ptr=b->buffer+bytes; + b->endbit=bits; + b->endbyte=bytes; + *b->ptr&=mask8B[bits]; + } +} + +/* Takes only up to 32 bits. */ +void oggpack_write(oggpack_buffer *b,unsigned long value,int bits){ + if(bits<0 || bits>32) goto err; + if(b->endbyte>=b->storage-4){ + void *ret; + if(!b->ptr)return; + if(b->storage>LONG_MAX-BUFFER_INCREMENT) goto err; + ret=_ogg_realloc(b->buffer,b->storage+BUFFER_INCREMENT); + if(!ret) goto err; + b->buffer=ret; + b->storage+=BUFFER_INCREMENT; + b->ptr=b->buffer+b->endbyte; + } + + value&=mask[bits]; + bits+=b->endbit; + + b->ptr[0]|=value<endbit; + + if(bits>=8){ + b->ptr[1]=(unsigned char)(value>>(8-b->endbit)); + if(bits>=16){ + b->ptr[2]=(unsigned char)(value>>(16-b->endbit)); + if(bits>=24){ + b->ptr[3]=(unsigned char)(value>>(24-b->endbit)); + if(bits>=32){ + if(b->endbit) + b->ptr[4]=(unsigned char)(value>>(32-b->endbit)); + else + b->ptr[4]=0; + } + } + } + } + + b->endbyte+=bits/8; + b->ptr+=bits/8; + b->endbit=bits&7; + return; + err: + oggpack_writeclear(b); +} + +/* Takes only up to 32 bits. */ +void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits){ + if(bits<0 || bits>32) goto err; + if(b->endbyte>=b->storage-4){ + void *ret; + if(!b->ptr)return; + if(b->storage>LONG_MAX-BUFFER_INCREMENT) goto err; + ret=_ogg_realloc(b->buffer,b->storage+BUFFER_INCREMENT); + if(!ret) goto err; + b->buffer=ret; + b->storage+=BUFFER_INCREMENT; + b->ptr=b->buffer+b->endbyte; + } + + value=(value&mask[bits])<<(32-bits); + bits+=b->endbit; + + b->ptr[0]|=value>>(24+b->endbit); + + if(bits>=8){ + b->ptr[1]=(unsigned char)(value>>(16+b->endbit)); + if(bits>=16){ + b->ptr[2]=(unsigned char)(value>>(8+b->endbit)); + if(bits>=24){ + b->ptr[3]=(unsigned char)(value>>(b->endbit)); + if(bits>=32){ + if(b->endbit) + b->ptr[4]=(unsigned char)(value<<(8-b->endbit)); + else + b->ptr[4]=0; + } + } + } + } + + b->endbyte+=bits/8; + b->ptr+=bits/8; + b->endbit=bits&7; + return; + err: + oggpack_writeclear(b); +} + +void oggpack_writealign(oggpack_buffer *b){ + int bits=8-b->endbit; + if(bits<8) + oggpack_write(b,0,bits); +} + +void oggpackB_writealign(oggpack_buffer *b){ + int bits=8-b->endbit; + if(bits<8) + oggpackB_write(b,0,bits); +} + +static void oggpack_writecopy_helper(oggpack_buffer *b, + void *source, + long bits, + void (*w)(oggpack_buffer *, + unsigned long, + int), + int msb){ + unsigned char *ptr=(unsigned char *)source; + + long bytes=bits/8; + bits-=bytes*8; + + if(b->endbit){ + int i; + /* unaligned copy. Do it the hard way. */ + for(i=0;iendbyte+bytes+1>=b->storage){ + void *ret; + if(!b->ptr) goto err; + if(b->endbyte+bytes+BUFFER_INCREMENT>b->storage) goto err; + b->storage=b->endbyte+bytes+BUFFER_INCREMENT; + ret=_ogg_realloc(b->buffer,b->storage); + if(!ret) goto err; + b->buffer=ret; + b->ptr=b->buffer+b->endbyte; + } + + memmove(b->ptr,source,bytes); + b->ptr+=bytes; + b->endbyte+=bytes; + *b->ptr=0; + + } + if(bits){ + if(msb) + w(b,(unsigned long)(ptr[bytes]>>(8-bits)),bits); + else + w(b,(unsigned long)(ptr[bytes]),bits); + } + return; + err: + oggpack_writeclear(b); +} + +void oggpack_writecopy(oggpack_buffer *b,void *source,long bits){ + oggpack_writecopy_helper(b,source,bits,oggpack_write,0); +} + +void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits){ + oggpack_writecopy_helper(b,source,bits,oggpackB_write,1); +} + +void oggpack_reset(oggpack_buffer *b){ + if(!b->ptr)return; + b->ptr=b->buffer; + b->buffer[0]=0; + b->endbit=b->endbyte=0; +} + +void oggpackB_reset(oggpack_buffer *b){ + oggpack_reset(b); +} + +void oggpack_writeclear(oggpack_buffer *b){ + if(b->buffer)_ogg_free(b->buffer); + memset(b,0,sizeof(*b)); +} + +void oggpackB_writeclear(oggpack_buffer *b){ + oggpack_writeclear(b); +} + +void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){ + memset(b,0,sizeof(*b)); + b->buffer=b->ptr=buf; + b->storage=bytes; +} + +void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){ + oggpack_readinit(b,buf,bytes); +} + +/* Read in bits without advancing the bitptr; bits <= 32 */ +long oggpack_look(oggpack_buffer *b,int bits){ + unsigned long ret; + unsigned long m; + + if(bits<0 || bits>32) return -1; + m=mask[bits]; + bits+=b->endbit; + + if(b->endbyte >= b->storage-4){ + /* not the main path */ + if(b->endbyte > b->storage-((bits+7)>>3)) return -1; + /* special case to avoid reading b->ptr[0], which might be past the end of + the buffer; also skips some useless accounting */ + else if(!bits)return(0L); + } + + ret=b->ptr[0]>>b->endbit; + if(bits>8){ + ret|=b->ptr[1]<<(8-b->endbit); + if(bits>16){ + ret|=b->ptr[2]<<(16-b->endbit); + if(bits>24){ + ret|=b->ptr[3]<<(24-b->endbit); + if(bits>32 && b->endbit) + ret|=b->ptr[4]<<(32-b->endbit); + } + } + } + return(m&ret); +} + +/* Read in bits without advancing the bitptr; bits <= 32 */ +long oggpackB_look(oggpack_buffer *b,int bits){ + unsigned long ret; + int m=32-bits; + + if(m<0 || m>32) return -1; + bits+=b->endbit; + + if(b->endbyte >= b->storage-4){ + /* not the main path */ + if(b->endbyte > b->storage-((bits+7)>>3)) return -1; + /* special case to avoid reading b->ptr[0], which might be past the end of + the buffer; also skips some useless accounting */ + else if(!bits)return(0L); + } + + ret=b->ptr[0]<<(24+b->endbit); + if(bits>8){ + ret|=b->ptr[1]<<(16+b->endbit); + if(bits>16){ + ret|=b->ptr[2]<<(8+b->endbit); + if(bits>24){ + ret|=b->ptr[3]<<(b->endbit); + if(bits>32 && b->endbit) + ret|=b->ptr[4]>>(8-b->endbit); + } + } + } + return ((ret&0xffffffff)>>(m>>1))>>((m+1)>>1); +} + +long oggpack_look1(oggpack_buffer *b){ + if(b->endbyte>=b->storage)return(-1); + return((b->ptr[0]>>b->endbit)&1); +} + +long oggpackB_look1(oggpack_buffer *b){ + if(b->endbyte>=b->storage)return(-1); + return((b->ptr[0]>>(7-b->endbit))&1); +} + +void oggpack_adv(oggpack_buffer *b,int bits){ + bits+=b->endbit; + + if(b->endbyte > b->storage-((bits+7)>>3)) goto overflow; + + b->ptr+=bits/8; + b->endbyte+=bits/8; + b->endbit=bits&7; + return; + + overflow: + b->ptr=NULL; + b->endbyte=b->storage; + b->endbit=1; +} + +void oggpackB_adv(oggpack_buffer *b,int bits){ + oggpack_adv(b,bits); +} + +void oggpack_adv1(oggpack_buffer *b){ + if(++(b->endbit)>7){ + b->endbit=0; + b->ptr++; + b->endbyte++; + } +} + +void oggpackB_adv1(oggpack_buffer *b){ + oggpack_adv1(b); +} + +/* bits <= 32 */ +long oggpack_read(oggpack_buffer *b,int bits){ + long ret; + unsigned long m; + + if(bits<0 || bits>32) goto err; + m=mask[bits]; + bits+=b->endbit; + + if(b->endbyte >= b->storage-4){ + /* not the main path */ + if(b->endbyte > b->storage-((bits+7)>>3)) goto overflow; + /* special case to avoid reading b->ptr[0], which might be past the end of + the buffer; also skips some useless accounting */ + else if(!bits)return(0L); + } + + ret=b->ptr[0]>>b->endbit; + if(bits>8){ + ret|=b->ptr[1]<<(8-b->endbit); + if(bits>16){ + ret|=b->ptr[2]<<(16-b->endbit); + if(bits>24){ + ret|=b->ptr[3]<<(24-b->endbit); + if(bits>32 && b->endbit){ + ret|=b->ptr[4]<<(32-b->endbit); + } + } + } + } + ret&=m; + b->ptr+=bits/8; + b->endbyte+=bits/8; + b->endbit=bits&7; + return ret; + + overflow: + err: + b->ptr=NULL; + b->endbyte=b->storage; + b->endbit=1; + return -1L; +} + +/* bits <= 32 */ +long oggpackB_read(oggpack_buffer *b,int bits){ + long ret; + long m=32-bits; + + if(m<0 || m>32) goto err; + bits+=b->endbit; + + if(b->endbyte+4>=b->storage){ + /* not the main path */ + if(b->endbyte > b->storage-((bits+7)>>3)) goto overflow; + /* special case to avoid reading b->ptr[0], which might be past the end of + the buffer; also skips some useless accounting */ + else if(!bits)return(0L); + } + + ret=b->ptr[0]<<(24+b->endbit); + if(bits>8){ + ret|=b->ptr[1]<<(16+b->endbit); + if(bits>16){ + ret|=b->ptr[2]<<(8+b->endbit); + if(bits>24){ + ret|=b->ptr[3]<<(b->endbit); + if(bits>32 && b->endbit) + ret|=b->ptr[4]>>(8-b->endbit); + } + } + } + ret=((ret&0xffffffffUL)>>(m>>1))>>((m+1)>>1); + + b->ptr+=bits/8; + b->endbyte+=bits/8; + b->endbit=bits&7; + return ret; + + overflow: + err: + b->ptr=NULL; + b->endbyte=b->storage; + b->endbit=1; + return -1L; +} + +long oggpack_read1(oggpack_buffer *b){ + long ret; + + if(b->endbyte >= b->storage) goto overflow; + ret=(b->ptr[0]>>b->endbit)&1; + + b->endbit++; + if(b->endbit>7){ + b->endbit=0; + b->ptr++; + b->endbyte++; + } + return ret; + + overflow: + b->ptr=NULL; + b->endbyte=b->storage; + b->endbit=1; + return -1L; +} + +long oggpackB_read1(oggpack_buffer *b){ + long ret; + + if(b->endbyte >= b->storage) goto overflow; + ret=(b->ptr[0]>>(7-b->endbit))&1; + + b->endbit++; + if(b->endbit>7){ + b->endbit=0; + b->ptr++; + b->endbyte++; + } + return ret; + + overflow: + b->ptr=NULL; + b->endbyte=b->storage; + b->endbit=1; + return -1L; +} + +long oggpack_bytes(oggpack_buffer *b){ + return(b->endbyte+(b->endbit+7)/8); +} + +long oggpack_bits(oggpack_buffer *b){ + return(b->endbyte*8+b->endbit); +} + +long oggpackB_bytes(oggpack_buffer *b){ + return oggpack_bytes(b); +} + +long oggpackB_bits(oggpack_buffer *b){ + return oggpack_bits(b); +} + +unsigned char *oggpack_get_buffer(oggpack_buffer *b){ + return(b->buffer); +} + +unsigned char *oggpackB_get_buffer(oggpack_buffer *b){ + return oggpack_get_buffer(b); +} + +/* Self test of the bitwise routines; everything else is based on + them, so they damned well better be solid. */ + +#ifdef _V_SELFTEST +#include + +static int ilog(unsigned int v){ + int ret=0; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +oggpack_buffer o; +oggpack_buffer r; + +void report(char *in){ + fprintf(stderr,"%s",in); + exit(1); +} + +void cliptest(unsigned long *b,int vals,int bits,int *comp,int compsize){ + long bytes,i; + unsigned char *buffer; + + oggpack_reset(&o); + for(i=0;i +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codec_internal.h" + +#include "window.h" +#include "registry.h" +#include "misc.h" + +static int ilog(unsigned int v){ + int ret=0; + if(v)--v; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +/* pcm accumulator examples (not exhaustive): + + <-------------- lW ----------------> + <--------------- W ----------------> +: .....|..... _______________ | +: .''' | '''_--- | |\ | +:.....''' |_____--- '''......| | \_______| +:.................|__________________|_______|__|______| + |<------ Sl ------>| > Sr < |endW + |beginSl |endSl | |endSr + |beginW |endlW |beginSr + + + |< lW >| + <--------------- W ----------------> + | | .. ______________ | + | | ' `/ | ---_ | + |___.'___/`. | ---_____| + |_______|__|_______|_________________| + | >|Sl|< |<------ Sr ----->|endW + | | |endSl |beginSr |endSr + |beginW | |endlW + mult[0] |beginSl mult[n] + + <-------------- lW -----------------> + |<--W-->| +: .............. ___ | | +: .''' |`/ \ | | +:.....''' |/`....\|...| +:.........................|___|___|___| + |Sl |Sr |endW + | | |endSr + | |beginSr + | |endSl + |beginSl + |beginW +*/ + +/* block abstraction setup *********************************************/ + +#ifndef WORD_ALIGN +#define WORD_ALIGN 8 +#endif + +int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){ + memset(vb,0,sizeof(*vb)); + vb->vd=v; + vb->localalloc=0; + vb->localstore=NULL; + + return(0); +} + +void *_vorbis_block_alloc(vorbis_block *vb,long bytes){ + bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1); + if(bytes+vb->localtop>vb->localalloc){ + /* can't just _ogg_realloc... there are outstanding pointers */ + if(vb->localstore){ + struct alloc_chain *link=(struct alloc_chain *)_ogg_malloc(sizeof(*link)); + vb->totaluse+=vb->localtop; + link->next=vb->reap; + link->ptr=vb->localstore; + vb->reap=link; + } + /* highly conservative */ + vb->localalloc=bytes; + vb->localstore=_ogg_malloc(vb->localalloc); + vb->localtop=0; + } + { + void *ret=(void *)(((char *)vb->localstore)+vb->localtop); + vb->localtop+=bytes; + return ret; + } +} + +/* reap the chain, pull the ripcord */ +void _vorbis_block_ripcord(vorbis_block *vb){ + /* reap the chain */ + struct alloc_chain *reap=vb->reap; + while(reap){ + struct alloc_chain *next=reap->next; + _ogg_free(reap->ptr); + memset(reap,0,sizeof(*reap)); + _ogg_free(reap); + reap=next; + } + /* consolidate storage */ + if(vb->totaluse){ + vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc); + vb->localalloc+=vb->totaluse; + vb->totaluse=0; + } + + /* pull the ripcord */ + vb->localtop=0; + vb->reap=NULL; +} + +int vorbis_block_clear(vorbis_block *vb){ + _vorbis_block_ripcord(vb); + if(vb->localstore)_ogg_free(vb->localstore); + + memset(vb,0,sizeof(*vb)); + return(0); +} + +static int _vds_init(vorbis_dsp_state *v,vorbis_info *vi){ + int i; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + private_state *b=NULL; + + if(ci==NULL) return 1; + + memset(v,0,sizeof(*v)); + b=(private_state *)(v->backend_state=_ogg_calloc(1,sizeof(*b))); + + v->vi=vi; + b->modebits=ilog(ci->modes); + + /* Vorbis I uses only window type 0 */ + b->window[0]=_vorbis_window(0,ci->blocksizes[0]/2); + b->window[1]=_vorbis_window(0,ci->blocksizes[1]/2); + + /* finish the codebooks */ + if(!ci->fullbooks){ + ci->fullbooks=(codebook *)_ogg_calloc(ci->books,sizeof(*ci->fullbooks)); + for(i=0;ibooks;i++){ + if(ci->book_param[i]==NULL) + goto abort_books; + if(vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i])) + goto abort_books; + /* decode codebooks are now standalone after init */ + vorbis_staticbook_destroy(ci->book_param[i]); + ci->book_param[i]=NULL; + } + } + + v->pcm_storage=ci->blocksizes[1]; + v->pcm=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcm)); + v->pcmret=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcmret)); + for(i=0;ichannels;i++) + v->pcm[i]=(ogg_int32_t *)_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i])); + + /* all 1 (large block) or 0 (small block) */ + /* explicitly set for the sake of clarity */ + v->lW=0; /* previous window size */ + v->W=0; /* current window size */ + + /* initialize all the mapping/backend lookups */ + b->mode=(vorbis_look_mapping **)_ogg_calloc(ci->modes,sizeof(*b->mode)); + for(i=0;imodes;i++){ + int mapnum=ci->mode_param[i]->mapping; + int maptype=ci->map_type[mapnum]; + b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i], + ci->map_param[mapnum]); + } + return 0; +abort_books: + for(i=0;ibooks;i++){ + if(ci->book_param[i]!=NULL){ + vorbis_staticbook_destroy(ci->book_param[i]); + ci->book_param[i]=NULL; + } + } + vorbis_dsp_clear(v); + return -1; +} + +int vorbis_synthesis_restart(vorbis_dsp_state *v){ + vorbis_info *vi=v->vi; + codec_setup_info *ci; + + if(!v->backend_state)return -1; + if(!vi)return -1; + ci=vi->codec_setup; + if(!ci)return -1; + + v->centerW=ci->blocksizes[1]/2; + v->pcm_current=v->centerW; + + v->pcm_returned=-1; + v->granulepos=-1; + v->sequence=-1; + ((private_state *)(v->backend_state))->sample_count=-1; + + return(0); +} + +int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){ + if(_vds_init(v,vi))return 1; + vorbis_synthesis_restart(v); + + return 0; +} + +void vorbis_dsp_clear(vorbis_dsp_state *v){ + int i; + if(v){ + vorbis_info *vi=v->vi; + codec_setup_info *ci=(codec_setup_info *)(vi?vi->codec_setup:NULL); + private_state *b=(private_state *)v->backend_state; + + if(v->pcm){ + for(i=0;ichannels;i++) + if(v->pcm[i])_ogg_free(v->pcm[i]); + _ogg_free(v->pcm); + if(v->pcmret)_ogg_free(v->pcmret); + } + + /* free mode lookups; these are actually vorbis_look_mapping structs */ + if(ci){ + for(i=0;imodes;i++){ + int mapnum=ci->mode_param[i]->mapping; + int maptype=ci->map_type[mapnum]; + if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]); + } + } + + if(b){ + if(b->mode)_ogg_free(b->mode); + _ogg_free(b); + } + + memset(v,0,sizeof(*v)); + } +} + +/* Unlike in analysis, the window is only partially applied for each + block. The time domain envelope is not yet handled at the point of + calling (as it relies on the previous block). */ + +int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ + vorbis_info *vi=v->vi; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + private_state *b=v->backend_state; + int i,j; + + if(v->pcm_current>v->pcm_returned && v->pcm_returned!=-1)return(OV_EINVAL); + + v->lW=v->W; + v->W=vb->W; + v->nW=-1; + + if((v->sequence==-1)|| + (v->sequence+1 != vb->sequence)){ + v->granulepos=-1; /* out of sequence; lose count */ + b->sample_count=-1; + } + + v->sequence=vb->sequence; + + if(vb->pcm){ /* no pcm to process if vorbis_synthesis_trackonly + was called on block */ + int n=ci->blocksizes[v->W]/2; + int n0=ci->blocksizes[0]/2; + int n1=ci->blocksizes[1]/2; + + int thisCenter; + int prevCenter; + + if(v->centerW){ + thisCenter=n1; + prevCenter=0; + }else{ + thisCenter=0; + prevCenter=n1; + } + + /* v->pcm is now used like a two-stage double buffer. We don't want + to have to constantly shift *or* adjust memory usage. Don't + accept a new block until the old is shifted out */ + + /* overlap/add PCM */ + + for(j=0;jchannels;j++){ + /* the overlap/add section */ + if(v->lW){ + if(v->W){ + /* large/large */ + ogg_int32_t *pcm=v->pcm[j]+prevCenter; + ogg_int32_t *p=vb->pcm[j]; + for(i=0;ipcm[j]+prevCenter+n1/2-n0/2; + ogg_int32_t *p=vb->pcm[j]; + for(i=0;iW){ + /* small/large */ + ogg_int32_t *pcm=v->pcm[j]+prevCenter; + ogg_int32_t *p=vb->pcm[j]+n1/2-n0/2; + for(i=0;ipcm[j]+prevCenter; + ogg_int32_t *p=vb->pcm[j]; + for(i=0;ipcm[j]+thisCenter; + ogg_int32_t *p=vb->pcm[j]+n; + for(i=0;icenterW) + v->centerW=0; + else + v->centerW=n1; + + /* deal with initial packet state; we do this using the explicit + pcm_returned==-1 flag otherwise we're sensitive to first block + being short or long */ + + if(v->pcm_returned==-1){ + v->pcm_returned=thisCenter; + v->pcm_current=thisCenter; + }else{ + v->pcm_returned=prevCenter; + v->pcm_current=prevCenter+ + ci->blocksizes[v->lW]/4+ + ci->blocksizes[v->W]/4; + } + + } + + /* track the frame number... This is for convenience, but also + making sure our last packet doesn't end with added padding. If + the last packet is partial, the number of samples we'll have to + return will be past the vb->granulepos. + + This is not foolproof! It will be confused if we begin + decoding at the last page after a seek or hole. In that case, + we don't have a starting point to judge where the last frame + is. For this reason, vorbisfile will always try to make sure + it reads the last two marked pages in proper sequence */ + + if(b->sample_count==-1){ + b->sample_count=0; + }else{ + b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4; + } + + if(v->granulepos==-1){ + if(vb->granulepos!=-1){ /* only set if we have a position to set to */ + + v->granulepos=vb->granulepos; + + /* is this a short page? */ + if(b->sample_count>v->granulepos){ + /* corner case; if this is both the first and last audio page, + then spec says the end is cut, not beginning */ + long extra=b->sample_count-vb->granulepos; + + /* we use ogg_int64_t for granule positions because a + uint64 isn't universally available. Unfortunately, + that means granposes can be 'negative' and result in + extra being negative */ + if(extra<0) + extra=0; + + if(vb->eofflag){ + /* trim the end */ + /* no preceeding granulepos; assume we started at zero (we'd + have to in a short single-page stream) */ + /* granulepos could be -1 due to a seek, but that would result + in a long coun`t, not short count */ + + /* Guard against corrupt/malicious frames that set EOP and + a backdated granpos; don't rewind more samples than we + actually have */ + if(extra > v->pcm_current - v->pcm_returned) + extra = v->pcm_current - v->pcm_returned; + + v->pcm_current-=extra; + }else{ + /* trim the beginning */ + v->pcm_returned+=extra; + if(v->pcm_returned>v->pcm_current) + v->pcm_returned=v->pcm_current; + } + + } + + } + }else{ + v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4; + if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){ + + if(v->granulepos>vb->granulepos){ + long extra=v->granulepos-vb->granulepos; + + if(extra) + if(vb->eofflag){ + /* partial last frame. Strip the extra samples off */ + + /* Guard against corrupt/malicious frames that set EOP and + a backdated granpos; don't rewind more samples than we + actually have */ + if(extra > v->pcm_current - v->pcm_returned) + extra = v->pcm_current - v->pcm_returned; + + /* we use ogg_int64_t for granule positions because a + uint64 isn't universally available. Unfortunately, + that means granposes can be 'negative' and result in + extra being negative */ + if(extra<0) + extra=0; + + v->pcm_current-=extra; + + } /* else {Shouldn't happen *unless* the bitstream is out of + spec. Either way, believe the bitstream } */ + } /* else {Shouldn't happen *unless* the bitstream is out of + spec. Either way, believe the bitstream } */ + v->granulepos=vb->granulepos; + } + } + + /* Update, cleanup */ + + if(vb->eofflag)v->eofflag=1; + return(0); +} + +/* pcm==NULL indicates we just want the pending samples, no more */ +int vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm){ + vorbis_info *vi=v->vi; + if(v->pcm_returned>-1 && v->pcm_returnedpcm_current){ + if(pcm){ + int i; + for(i=0;ichannels;i++) + v->pcmret[i]=v->pcm[i]+v->pcm_returned; + *pcm=v->pcmret; + } + return(v->pcm_current-v->pcm_returned); + } + return(0); +} + +int vorbis_synthesis_read(vorbis_dsp_state *v,int bytes){ + if(bytes && v->pcm_returned+bytes>v->pcm_current)return(OV_EINVAL); + v->pcm_returned+=bytes; + return(0); +} + diff --git a/libmednahawk/src/tremor/block.h b/libmednahawk/src/tremor/block.h new file mode 100644 index 0000000000..1347bc4cbf --- /dev/null +++ b/libmednahawk/src/tremor/block.h @@ -0,0 +1,24 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2008 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: shared block functions + + ********************************************************************/ + +#ifndef _V_BLOCK_ +#define _V_BLOCK_ + +extern void _vorbis_block_ripcord(vorbis_block *vb); +extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes); + +#endif diff --git a/libmednahawk/src/tremor/codebook.c b/libmednahawk/src/tremor/codebook.c new file mode 100644 index 0000000000..40cd13bd08 --- /dev/null +++ b/libmednahawk/src/tremor/codebook.c @@ -0,0 +1,391 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: basic codebook pack/unpack/code/decode operations + + ********************************************************************/ + +#include +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codebook.h" +#include "misc.h" + +/* unpacks a codebook from the packet buffer into the codebook struct, + readies the codebook auxiliary structures for decode *************/ +static_codebook *vorbis_staticbook_unpack(oggpack_buffer *opb){ + long i,j; + static_codebook *s=_ogg_calloc(1,sizeof(*s)); + + /* make sure alignment is correct */ + if(oggpack_read(opb,24)!=0x564342)goto _eofout; + + /* first the basic parameters */ + s->dim=oggpack_read(opb,16); + s->entries=oggpack_read(opb,24); + if(s->entries==-1)goto _eofout; + + if(_ilog(s->dim)+_ilog(s->entries)>24)goto _eofout; + + /* codeword ordering.... length ordered or unordered? */ + switch((int)oggpack_read(opb,1)){ + case 0:{ + long unused; + /* allocated but unused entries? */ + unused=oggpack_read(opb,1); + if((s->entries*(unused?1:5)+7)>>3>opb->storage-oggpack_bytes(opb)) + goto _eofout; + /* unordered */ + s->lengthlist=(long *)_ogg_malloc(sizeof(*s->lengthlist)*s->entries); + + /* allocated but unused entries? */ + if(unused){ + /* yes, unused entries */ + + for(i=0;ientries;i++){ + if(oggpack_read(opb,1)){ + long num=oggpack_read(opb,5); + if(num==-1)goto _eofout; + s->lengthlist[i]=num+1; + }else + s->lengthlist[i]=0; + } + }else{ + /* all entries used; no tagging */ + for(i=0;ientries;i++){ + long num=oggpack_read(opb,5); + if(num==-1)goto _eofout; + s->lengthlist[i]=num+1; + } + } + + break; + } + case 1: + /* ordered */ + { + long length=oggpack_read(opb,5)+1; + if(length==0)goto _eofout; + s->lengthlist=(long *)_ogg_malloc(sizeof(*s->lengthlist)*s->entries); + + for(i=0;ientries;){ + long num=oggpack_read(opb,_ilog(s->entries-i)); + if(num==-1)goto _eofout; + if(length>32 || num>s->entries-i || + (num>0 && (num-1)>>(length>>1)>>((length+1)>>1))>0){ + goto _errout; + } + for(j=0;jlengthlist[i]=length; + length++; + } + } + break; + default: + /* EOF */ + goto _eofout; + } + + /* Do we have a mapping to unpack? */ + switch((s->maptype=oggpack_read(opb,4))){ + case 0: + /* no mapping */ + break; + case 1: case 2: + /* implicitly populated value mapping */ + /* explicitly populated value mapping */ + + s->q_min=oggpack_read(opb,32); + s->q_delta=oggpack_read(opb,32); + s->q_quant=oggpack_read(opb,4)+1; + s->q_sequencep=oggpack_read(opb,1); + if(s->q_sequencep==-1)goto _eofout; + + { + int quantvals=0; + switch(s->maptype){ + case 1: + quantvals=(s->dim==0?0:_book_maptype1_quantvals(s)); + break; + case 2: + quantvals=s->entries*s->dim; + break; + } + + /* quantized values */ + if((quantvals*s->q_quant+7)>>3>opb->storage-oggpack_bytes(opb)) + goto _eofout; + s->quantlist=(long *)_ogg_malloc(sizeof(*s->quantlist)*quantvals); + for(i=0;iquantlist[i]=oggpack_read(opb,s->q_quant); + + if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout; + } + break; + default: + goto _errout; + } + + /* all set */ + return(s); + + _errout: + _eofout: + vorbis_staticbook_destroy(s); + return(NULL); +} + +/* the 'eliminate the decode tree' optimization actually requires the + codewords to be MSb first, not LSb. This is an annoying inelegancy + (and one of the first places where carefully thought out design + turned out to be wrong; Vorbis II and future Ogg codecs should go + to an MSb bitpacker), but not actually the huge hit it appears to + be. The first-stage decode table catches most words so that + bitreverse is not in the main execution path. */ + +static ogg_uint32_t bitreverse(ogg_uint32_t x){ + x= ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000); + x= ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00); + x= ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0); + x= ((x>> 2)&0x33333333) | ((x<< 2)&0xcccccccc); + return((x>> 1)&0x55555555) | ((x<< 1)&0xaaaaaaaa); +} + +STIN long decode_packed_entry_number(codebook *book, + oggpack_buffer *b){ + int read=book->dec_maxlength; + long lo,hi; + long lok = oggpack_look(b,book->dec_firsttablen); + + if (lok >= 0) { + long entry = book->dec_firsttable[lok]; + if(entry&0x80000000UL){ + lo=(entry>>15)&0x7fff; + hi=book->used_entries-(entry&0x7fff); + }else{ + oggpack_adv(b, book->dec_codelengths[entry-1]); + return(entry-1); + } + }else{ + lo=0; + hi=book->used_entries; + } + + lok = oggpack_look(b, read); + + while(lok<0 && read>1) + lok = oggpack_look(b, --read); + + if(lok<0){ + oggpack_adv(b,1); /* force eop */ + return -1; + } + + /* bisect search for the codeword in the ordered list */ + { + ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok); + + while(hi-lo>1){ + long p=(hi-lo)>>1; + long test=book->codelist[lo+p]>testword; + lo+=p&(test-1); + hi-=p&(-test); + } + + if(book->dec_codelengths[lo]<=read){ + oggpack_adv(b, book->dec_codelengths[lo]); + return(lo); + } + } + + oggpack_adv(b, read+1); + return(-1); +} + +/* Decode side is specced and easier, because we don't need to find + matches using different criteria; we simply read and map. There are + two things we need to do 'depending': + + We may need to support interleave. We don't really, but it's + convenient to do it here rather than rebuild the vector later. + + Cascades may be additive or multiplicitive; this is not inherent in + the codebook, but set in the code using the codebook. Like + interleaving, it's easiest to do it here. + addmul==0 -> declarative (set the value) + addmul==1 -> additive + addmul==2 -> multiplicitive */ + +/* returns the [original, not compacted] entry number or -1 on eof *********/ +long vorbis_book_decode(codebook *book, oggpack_buffer *b){ + if(book->used_entries>0){ + long packed_entry=decode_packed_entry_number(book,b); + if(packed_entry>=0) + return(book->dec_index[packed_entry]); + } + + /* if there's no dec_index, the codebook unpacking isn't collapsed */ + return(-1); +} + +/* returns 0 on OK or -1 on eof *************************************/ +/* decode vector / dim granularity gaurding is done in the upper layer */ +long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a, + oggpack_buffer *b,int n,int point){ + if(book->used_entries>0){ + int step=n/book->dim; + long *entry = (long *)alloca(sizeof(*entry)*step); + ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step); + int i,j,o; + int shift=point-book->binarypoint; + + if(shift>=0){ + for (i = 0; i < step; i++) { + entry[i]=decode_packed_entry_number(book,b); + if(entry[i]==-1)return(-1); + t[i] = book->valuelist+entry[i]*book->dim; + } + for(i=0,o=0;idim;i++,o+=step) + for (j=0;j>shift; + }else{ + for (i = 0; i < step; i++) { + entry[i]=decode_packed_entry_number(book,b); + if(entry[i]==-1)return(-1); + t[i] = book->valuelist+entry[i]*book->dim; + } + for(i=0,o=0;idim;i++,o+=step) + for (j=0;jused_entries>0){ + int i,j,entry; + ogg_int32_t *t; + int shift=point-book->binarypoint; + + if(shift>=0){ + for(i=0;ivaluelist+entry*book->dim; + for (j=0;jdim;) + a[i++]+=t[j++]>>shift; + } + }else{ + for(i=0;ivaluelist+entry*book->dim; + for (j=0;jdim;) + a[i++]+=t[j++]<<-shift; + } + } + } + return(0); +} + +/* unlike the others, we guard against n not being an integer number + of internally rather than in the upper layer (called only by + floor0) */ +long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a, + oggpack_buffer *b,int n,int point){ + if(book->used_entries>0){ + int i,j,entry; + ogg_int32_t *t; + int shift=point-book->binarypoint; + + if(shift>=0){ + + for(i=0;ivaluelist+entry*book->dim; + for (j=0;idim;){ + a[i++]=t[j++]>>shift; + } + } + }else{ + + for(i=0;ivaluelist+entry*book->dim; + for (j=0;idim;){ + a[i++]=t[j++]<<-shift; + } + } + } + }else{ + + int i,j; + for(i=0;iused_entries>0){ + long i,j,entry; + int chptr=0; + int shift=point-book->binarypoint; + + if(shift>=0){ + + for(i=offset;ivaluelist+entry*book->dim; + for (j=0;jdim;j++){ + a[chptr++][i]+=t[j]>>shift; + if(chptr==ch){ + chptr=0; + i++; + } + } + } + } + }else{ + + for(i=offset;ivaluelist+entry*book->dim; + for (j=0;jdim;j++){ + a[chptr++][i]+=t[j]<<-shift; + if(chptr==ch){ + chptr=0; + i++; + } + } + } + } + } + } + return(0); +} diff --git a/libmednahawk/src/tremor/codebook.h b/libmednahawk/src/tremor/codebook.h new file mode 100644 index 0000000000..41bda29192 --- /dev/null +++ b/libmednahawk/src/tremor/codebook.h @@ -0,0 +1,101 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: basic shared codebook operations + + ********************************************************************/ + +#ifndef _V_CODEBOOK_H_ +#define _V_CODEBOOK_H_ + +#include "ogg.h" + +/* This structure encapsulates huffman and VQ style encoding books; it + doesn't do anything specific to either. + + valuelist/quantlist are nonNULL (and q_* significant) only if + there's entry->value mapping to be done. + + If encode-side mapping must be done (and thus the entry needs to be + hunted), the auxiliary encode pointer will point to a decision + tree. This is true of both VQ and huffman, but is mostly useful + with VQ. + +*/ + +typedef struct static_codebook{ + long dim; /* codebook dimensions (elements per vector) */ + long entries; /* codebook entries */ + long *lengthlist; /* codeword lengths in bits */ + + /* mapping ***************************************************************/ + int maptype; /* 0=none + 1=implicitly populated values from map column + 2=listed arbitrary values */ + + /* The below does a linear, single monotonic sequence mapping. */ + long q_min; /* packed 32 bit float; quant value 0 maps to minval */ + long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */ + int q_quant; /* bits: 0 < quant <= 16 */ + int q_sequencep; /* bitflag */ + + long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map + map == 2: list of dim*entries quantized entry vals + */ +} static_codebook; + +typedef struct codebook{ + long dim; /* codebook dimensions (elements per vector) */ + long entries; /* codebook entries */ + long used_entries; /* populated codebook entries */ + + /* the below are ordered by bitreversed codeword and only used + entries are populated */ + int binarypoint; + ogg_int32_t *valuelist; /* list of dim*entries actual entry values */ + ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */ + + int *dec_index; + char *dec_codelengths; + ogg_uint32_t *dec_firsttable; + int dec_firsttablen; + int dec_maxlength; + + long q_min; /* packed 32 bit float; quant value 0 maps to minval */ + long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */ + +} codebook; + +extern void vorbis_staticbook_destroy(static_codebook *b); +extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source); + +extern void vorbis_book_clear(codebook *b); +extern long _book_maptype1_quantvals(const static_codebook *b); + +extern static_codebook *vorbis_staticbook_unpack(oggpack_buffer *b); + +extern long vorbis_book_decode(codebook *book, oggpack_buffer *b); +extern long vorbis_book_decodevs_add(codebook *book, ogg_int32_t *a, + oggpack_buffer *b,int n,int point); +extern long vorbis_book_decodev_set(codebook *book, ogg_int32_t *a, + oggpack_buffer *b,int n,int point); +extern long vorbis_book_decodev_add(codebook *book, ogg_int32_t *a, + oggpack_buffer *b,int n,int point); +extern long vorbis_book_decodevv_add(codebook *book, ogg_int32_t **a, + long off,int ch, + oggpack_buffer *b,int n,int point); + +extern int _ilog(unsigned int v); + + +#endif diff --git a/libmednahawk/src/tremor/codec_internal.h b/libmednahawk/src/tremor/codec_internal.h new file mode 100644 index 0000000000..f5ae67f042 --- /dev/null +++ b/libmednahawk/src/tremor/codec_internal.h @@ -0,0 +1,92 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: libvorbis codec headers + + ********************************************************************/ + +#ifndef _V_CODECI_H_ +#define _V_CODECI_H_ + +#include "codebook.h" + +typedef void vorbis_look_mapping; +typedef void vorbis_look_floor; +typedef void vorbis_look_residue; +typedef void vorbis_look_transform; + +/* mode ************************************************************/ +typedef struct { + int blockflag; + int windowtype; + int transformtype; + int mapping; +} vorbis_info_mode; + +typedef void vorbis_info_floor; +typedef void vorbis_info_residue; +typedef void vorbis_info_mapping; + +typedef struct private_state { + /* local lookup storage */ + const void *window[2]; + + /* backend lookups are tied to the mode, not the backend or naked mapping */ + int modebits; + vorbis_look_mapping **mode; + + ogg_int64_t sample_count; + +} private_state; + +/* codec_setup_info contains all the setup information specific to the + specific compression/decompression mode in progress (eg, + psychoacoustic settings, channel setup, options, codebook + etc). +*********************************************************************/ + +typedef struct codec_setup_info { + + /* Vorbis supports only short and long blocks, but allows the + encoder to choose the sizes */ + + long blocksizes[2]; + + /* modes are the primary means of supporting on-the-fly different + blocksizes, different channel mappings (LR or M/A), + different residue backends, etc. Each mode consists of a + blocksize flag and a mapping (along with the mapping setup */ + + int modes; + int maps; + int times; + int floors; + int residues; + int books; + + vorbis_info_mode *mode_param[64]; + int map_type[64]; + vorbis_info_mapping *map_param[64]; + int time_type[64]; + int floor_type[64]; + vorbis_info_floor *floor_param[64]; + int residue_type[64]; + vorbis_info_residue *residue_param[64]; + static_codebook *book_param[256]; + codebook *fullbooks; + + int passlimit[32]; /* iteration limit per couple/quant pass */ + int coupling_passes; +} codec_setup_info; + +#endif diff --git a/libmednahawk/src/tremor/config_types.h b/libmednahawk/src/tremor/config_types.h new file mode 100644 index 0000000000..d1e38d8994 --- /dev/null +++ b/libmednahawk/src/tremor/config_types.h @@ -0,0 +1,12 @@ +#ifndef __CONFIG_TYPES_H__ +#define __CONFIG_TYPES_H__ + +#include + +typedef int16_t ogg_int16_t; +typedef uint16_t ogg_uint16_t; +typedef int32_t ogg_int32_t; +typedef uint32_t ogg_uint32_t; +typedef int64_t ogg_int64_t; + +#endif diff --git a/libmednahawk/src/tremor/configure.in b/libmednahawk/src/tremor/configure.in new file mode 100644 index 0000000000..b46ab24620 --- /dev/null +++ b/libmednahawk/src/tremor/configure.in @@ -0,0 +1,146 @@ +dnl Process this file with autoconf to produce a configure script + +dnl ------------------------------------------------ +dnl Initialization and Versioning +dnl ------------------------------------------------ + +AC_INIT(mdct.c) + +AC_CANONICAL_HOST +AC_CANONICAL_TARGET + +AM_CONFIG_HEADER([config.h]) + +AM_INIT_AUTOMAKE(libvorbisidec,1.2.1) + +dnl AM_MAINTAINER_MODE only provides the option to configure to enable it +AM_MAINTAINER_MODE + +dnl Library versioning + +V_LIB_CURRENT=1 +V_LIB_REVISION=3 +V_LIB_AGE=0 +AC_SUBST(V_LIB_CURRENT) +AC_SUBST(V_LIB_REVISION) +AC_SUBST(V_LIB_AGE) + +dnl -------------------------------------------------- +dnl Check for programs +dnl -------------------------------------------------- + +dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2" +dnl if $CFLAGS is blank +cflags_save="$CFLAGS" +AC_PROG_CC +AC_PROG_CPP +CFLAGS="$cflags_save" + +AM_PROG_LIBTOOL + +dnl -------------------------------------------------- +dnl Set build flags based on environment +dnl -------------------------------------------------- + +dnl Set some target options + +cflags_save="$CFLAGS" +ldflags_save="$LDFLAGS" +if test -z "$GCC"; then + case $host in + arm-*-*) + DEBUG="-g -D_ARM_ASSEM_" + CFLAGS="-O -D_ARM_ASSEM_" + PROFILE="-p -g -O -D_ARM_ASSEM_" ;; + *) + DEBUG="-g" + CFLAGS="-O" + PROFILE="-g -p" ;; + esac +else + + case $host in + arm-*-*) + DEBUG="-g -Wall -D__NO_MATH_INLINES -fsigned-char -D_ARM_ASSEM_" + CFLAGS="-O2 -D_ARM_ASSEM_ -fsigned-char" + PROFILE="-W -pg -g -O2 -D_ARM_ASSEM_ -fsigned-char -fno-inline-functions";; + + *) + DEBUG="-g -Wall -D__NO_MATH_INLINES -fsigned-char" + CFLAGS="-O2 -Wall -fsigned-char" + PROFILE="-Wall -pg -g -O2 -fsigned-char -fno-inline-functions";; + esac +fi +CFLAGS="$CFLAGS $cflags_save -D_REENTRANT" +LDFLAGS="$LDFLAGS $ldflags_save" + + +# Test whenever ld supports -version-script +AC_PROG_LD +AC_PROG_LD_GNU +if test "x$lt_cv_prog_gnu_ld" = "xyes"; then + SHLIB_VERSION_ARG="-Wl,--version-script=Version_script" + LDFLAGS="$LDFLAGS $SHLIB_VERSION_ARG" +fi + +dnl -------------------------------------------------- +dnl Options +dnl -------------------------------------------------- + +AC_ARG_ENABLE( + low-accuracy, + [ --enable-low-accuracy enable 32 bit only multiply operations], + CFLAGS="$CFLAGS -D_LOW_ACCURACY_" +) + +dnl -------------------------------------------------- +dnl Check for headers +dnl -------------------------------------------------- + +AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:) + +dnl -------------------------------------------------- +dnl Check for typedefs, structures, etc +dnl -------------------------------------------------- + +dnl none + +dnl -------------------------------------------------- +dnl Check for libraries +dnl -------------------------------------------------- + +PKG_PROG_PKG_CONFIG + +HAVE_OGG=no +if test "x$PKG_CONFIG" != "x" +then + PKG_CHECK_MODULES(OGG, ogg >= 1.0, HAVE_OGG=yes, HAVE_OGG=no) +fi +if test "x$HAVE_OGG" = "xno" +then + dnl fall back to the old school test + XIPH_PATH_OGG(, AC_MSG_ERROR(must have Ogg installed!)) + libs_save=$LIBS + LIBS="$OGG_LIBS" + AC_CHECK_FUNC(oggpack_writealign, , AC_MSG_ERROR(Ogg >= 1.0 required !)) + LIBS=$libs_save +fi + +dnl -------------------------------------------------- +dnl Check for library functions +dnl -------------------------------------------------- + +AC_FUNC_ALLOCA +AC_FUNC_MEMCMP + +dnl -------------------------------------------------- +dnl Do substitutions +dnl -------------------------------------------------- + +LIBS="$LIBS" + +AC_SUBST(LIBS) +AC_SUBST(DEBUG) +AC_SUBST(PROFILE) + +AC_OUTPUT(Makefile Version_script vorbisidec.pc) diff --git a/libmednahawk/src/tremor/floor0.c b/libmednahawk/src/tremor/floor0.c new file mode 100644 index 0000000000..043a1f2c3c --- /dev/null +++ b/libmednahawk/src/tremor/floor0.c @@ -0,0 +1,439 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: floor backend 0 implementation + + ********************************************************************/ + +#include +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codec_internal.h" +#include "registry.h" +#include "codebook.h" +#include "misc.h" +#include "block.h" + +#define LSP_FRACBITS 14 + +typedef struct { + long n; + int ln; + int m; + int *linearmap; + + vorbis_info_floor0 *vi; + ogg_int32_t *lsp_look; + +} vorbis_look_floor0; + +/*************** LSP decode ********************/ + +#include "lsp_lookup.h" + +/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in + 16.16 format + returns in m.8 format */ + +static long ADJUST_SQRT2[2]={8192,5792}; +STIN ogg_int32_t vorbis_invsqlook_i(long a,long e){ + long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); + long d=a&INVSQ_LOOKUP_I_MASK; /* 0.10 */ + long val=INVSQ_LOOKUP_I[i]- /* 1.16 */ + ((INVSQ_LOOKUP_IDel[i]*d)>>INVSQ_LOOKUP_I_SHIFT); /* result 1.16 */ + val*=ADJUST_SQRT2[e&1]; + e=(e>>1)+21; + return(val>>e); +} + +/* interpolated lookup based fromdB function, domain -140dB to 0dB only */ +/* a is in n.12 format */ +STIN ogg_int32_t vorbis_fromdBlook_i(long a){ + int i=(-a)>>(12-FROMdB2_SHIFT); + if(i<0) return 0x7fffffff; + if(i>=(FROMdB_LOOKUP_SZ<>FROMdB_SHIFT] * FROMdB2_LOOKUP[i&FROMdB2_MASK]; +} + +/* interpolated lookup based cos function, domain 0 to PI only */ +/* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */ +STIN ogg_int32_t vorbis_coslook_i(long a){ + int i=a>>COS_LOOKUP_I_SHIFT; + int d=a&COS_LOOKUP_I_MASK; + return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>> + COS_LOOKUP_I_SHIFT); +} + +/* interpolated lookup based cos function */ +/* a is in 0.16 format, where 0==0, 2^^16==PI, return .LSP_FRACBITS */ +STIN ogg_int32_t vorbis_coslook2_i(long a){ + a=a&0x1ffff; + + if(a>0x10000)a=0x20000-a; + { + int i=a>>COS_LOOKUP_I_SHIFT; + int d=a&COS_LOOKUP_I_MASK; + a=((COS_LOOKUP_I[i]<> + (COS_LOOKUP_I_SHIFT-LSP_FRACBITS+14); + } + + return(a); +} + +static const int barklook[28]={ + 0,100,200,301, 405,516,635,766, + 912,1077,1263,1476, 1720,2003,2333,2721, + 3184,3742,4428,5285, 6376,7791,9662,12181, + 15624,20397,27087,36554 +}; + +/* used in init only; interpolate the long way */ +STIN ogg_int32_t toBARK(int n){ + int i; + for(i=0;i<27;i++) + if(n>=barklook[i] && n>10)*0x517d)>>14; +#endif + + /* safeguard against a malicious stream */ + if(val<0 || (val>>COS_LOOKUP_I_SHIFT)>=COS_LOOKUP_I_SZ){ + memset(curve,0,sizeof(*curve)*n); + return; + } + + ilsp[i]=vorbis_coslook_i(val); + } + + i=0; + while(i>16); + qi=((qi*qi)>>16); + + if(m&1){ + qexp= qexp*2-28*((m+1)>>1)+m; + pi*=(1<<14)-((wi*wi)>>14); + qi+=pi>>14; + }else{ + qexp= qexp*2-13*m; + + pi*=(1<<14)-wi; + qi*=(1<<14)+wi; + + qi=(qi+pi)>>14; + } + + if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */ + qi>>=1; qexp++; + }else + lsp_norm_asm(&qi,&qexp); + +#else + + j=1; + if(m>1){ + qi*=labs(ilsp[0]-wi); + pi*=labs(ilsp[1]-wi); + + for(j+=2;j>25])) + if(!(shift=MLOOP_2[(pi|qi)>>19])) + shift=MLOOP_3[(pi|qi)>>16]; + qi=(qi>>shift)*labs(ilsp[j-1]-wi); + pi=(pi>>shift)*labs(ilsp[j]-wi); + qexp+=shift; + } + } + if(!(shift=MLOOP_1[(pi|qi)>>25])) + if(!(shift=MLOOP_2[(pi|qi)>>19])) + shift=MLOOP_3[(pi|qi)>>16]; + + /* pi,qi normalized collectively, both tracked using qexp */ + + if(m&1){ + /* odd order filter; slightly assymetric */ + /* the last coefficient */ + qi=(qi>>shift)*labs(ilsp[j-1]-wi); + pi=(pi>>shift)<<14; + qexp+=shift; + + if(!(shift=MLOOP_1[(pi|qi)>>25])) + if(!(shift=MLOOP_2[(pi|qi)>>19])) + shift=MLOOP_3[(pi|qi)>>16]; + + pi>>=shift; + qi>>=shift; + qexp+=shift-14*((m+1)>>1); + + pi=((pi*pi)>>16); + qi=((qi*qi)>>16); + qexp=qexp*2+m; + + pi*=(1<<14)-((wi*wi)>>14); + qi+=pi>>14; + + }else{ + /* even order filter; still symmetric */ + + /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't + worth tracking step by step */ + + pi>>=shift; + qi>>=shift; + qexp+=shift-7*m; + + pi=((pi*pi)>>16); + qi=((qi*qi)>>16); + qexp=qexp*2+m; + + pi*=(1<<14)-wi; + qi*=(1<<14)+wi; + qi=(qi+pi)>>14; + + } + + + /* we've let the normalization drift because it wasn't important; + however, for the lookup, things must be normalized again. We + need at most one right shift or a number of left shifts */ + + if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */ + qi>>=1; qexp++; + }else + while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/ + qi<<=1; qexp--; + } + +#endif + + amp=vorbis_fromdBlook_i(ampi* /* n.4 */ + vorbis_invsqlook_i(qi,qexp)- + /* m.8, m+n<=8 */ + ampoffseti); /* 8.12[0] */ + +#ifdef _LOW_ACCURACY_ + amp>>=9; +#endif + curve[i]= MULT31_SHIFT15(curve[i],amp); + while(map[++i]==k) curve[i]= MULT31_SHIFT15(curve[i],amp); + } +} + +/*************** vorbis decode glue ************/ + +static void floor0_free_info(vorbis_info_floor *i){ + vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; + if(info){ + memset(info,0,sizeof(*info)); + _ogg_free(info); + } +} + +static void floor0_free_look(vorbis_look_floor *i){ + vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; + if(look){ + + if(look->linearmap)_ogg_free(look->linearmap); + if(look->lsp_look)_ogg_free(look->lsp_look); + memset(look,0,sizeof(*look)); + _ogg_free(look); + } +} + +static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){ + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + int j; + + vorbis_info_floor0 *info=(vorbis_info_floor0 *)_ogg_malloc(sizeof(*info)); + info->order=oggpack_read(opb,8); + info->rate=oggpack_read(opb,16); + info->barkmap=oggpack_read(opb,16); + info->ampbits=oggpack_read(opb,6); + info->ampdB=oggpack_read(opb,8); + info->numbooks=oggpack_read(opb,4)+1; + + if(info->order<1)goto err_out; + if(info->rate<1)goto err_out; + if(info->barkmap<1)goto err_out; + if(info->numbooks<1)goto err_out; + + for(j=0;jnumbooks;j++){ + info->books[j]=oggpack_read(opb,8); + if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out; + if(ci->book_param[info->books[j]]->maptype==0)goto err_out; + if(ci->book_param[info->books[j]]->dim<1)goto err_out; + } + return(info); + + err_out: + floor0_free_info(info); + return(NULL); +} + +/* initialize Bark scale and normalization lookups. We could do this + with static tables, but Vorbis allows a number of possible + combinations, so it's best to do it computationally. + + The below is authoritative in terms of defining scale mapping. + Note that the scale depends on the sampling rate as well as the + linear block and mapping sizes */ + +static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi, + vorbis_info_floor *i){ + int j; + vorbis_info *vi=vd->vi; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; + vorbis_look_floor0 *look=(vorbis_look_floor0 *)_ogg_calloc(1,sizeof(*look)); + look->m=info->order; + look->n=ci->blocksizes[mi->blockflag]/2; + look->ln=info->barkmap; + look->vi=info; + + /* the mapping from a linear scale to a smaller bark scale is + straightforward. We do *not* make sure that the linear mapping + does not skip bark-scale bins; the decoder simply skips them and + the encoder may do what it wishes in filling them. They're + necessary in some mapping combinations to keep the scale spacing + accurate */ + look->linearmap=(int *)_ogg_malloc((look->n+1)*sizeof(*look->linearmap)); + for(j=0;jn;j++){ + + int val=(look->ln* + ((toBARK(info->rate/2*j/look->n)<<11)/toBARK(info->rate/2)))>>11; + + if(val>=look->ln)val=look->ln-1; /* guard against the approximation */ + look->linearmap[j]=val; + } + look->linearmap[j]=-1; + + look->lsp_look=(ogg_int32_t *)_ogg_malloc(look->ln*sizeof(*look->lsp_look)); + for(j=0;jln;j++) + look->lsp_look[j]=vorbis_coslook2_i(0x10000*j/look->ln); + + return look; +} + +static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){ + vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; + vorbis_info_floor0 *info=look->vi; + int j,k; + + int ampraw=oggpack_read(&vb->opb,info->ampbits); + if(ampraw>0){ /* also handles the -1 out of data case */ + long maxval=(1<ampbits)-1; + int amp=((ampraw*info->ampdB)<<4)/maxval; + int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks)); + + if(booknum!=-1 && booknumnumbooks){ /* be paranoid */ + codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup; + codebook *b=ci->fullbooks+info->books[booknum]; + ogg_int32_t last=0; + ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1)); + + if(vorbis_book_decodev_set(b,lsp,&vb->opb,look->m,-24)==-1)goto eop; + for(j=0;jm;){ + for(k=0;jm && kdim;k++,j++)lsp[j]+=last; + last=lsp[j-1]; + } + + lsp[look->m]=amp; + return(lsp); + } + } + eop: + return(NULL); +} + +static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i, + void *memo,ogg_int32_t *out){ + vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; + vorbis_info_floor0 *info=look->vi; + + if(memo){ + ogg_int32_t *lsp=(ogg_int32_t *)memo; + ogg_int32_t amp=lsp[look->m]; + + /* take the coefficients back to a spectral envelope curve */ + vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln, + lsp,look->m,amp,info->ampdB,look->lsp_look); + return(1); + } + memset(out,0,sizeof(*out)*look->n); + return(0); +} + +/* export hooks */ +vorbis_func_floor floor0_exportbundle={ + &floor0_unpack,&floor0_look,&floor0_free_info, + &floor0_free_look,&floor0_inverse1,&floor0_inverse2 +}; + + diff --git a/libmednahawk/src/tremor/floor1.c b/libmednahawk/src/tremor/floor1.c new file mode 100644 index 0000000000..0ecfb1547c --- /dev/null +++ b/libmednahawk/src/tremor/floor1.c @@ -0,0 +1,460 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: floor backend 1 implementation + + ********************************************************************/ + +#include +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codec_internal.h" +#include "registry.h" +#include "codebook.h" +#include "misc.h" +#include "block.h" + +#define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */ + +typedef struct { + int forward_index[VIF_POSIT+2]; + + int hineighbor[VIF_POSIT]; + int loneighbor[VIF_POSIT]; + int posts; + + int n; + int quant_q; + vorbis_info_floor1 *vi; + +} vorbis_look_floor1; + +/***********************************************/ + +static void floor1_free_info(vorbis_info_floor *i){ + vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; + if(info){ + memset(info,0,sizeof(*info)); + _ogg_free(info); + } +} + +static void floor1_free_look(vorbis_look_floor *i){ + vorbis_look_floor1 *look=(vorbis_look_floor1 *)i; + if(look){ + memset(look,0,sizeof(*look)); + _ogg_free(look); + } +} + +static int ilog(unsigned int v){ + int ret=0; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +static int icomp(const void *a,const void *b){ + return(**(int **)a-**(int **)b); +} + +static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){ + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + int j,k,count=0,maxclass=-1,rangebits; + + vorbis_info_floor1 *info=(vorbis_info_floor1 *)_ogg_calloc(1,sizeof(*info)); + /* read partitions */ + info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */ + for(j=0;jpartitions;j++){ + info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */ + if(info->partitionclass[j]<0)goto err_out; + if(maxclasspartitionclass[j])maxclass=info->partitionclass[j]; + } + + /* read partition classes */ + for(j=0;jclass_dim[j]=oggpack_read(opb,3)+1; /* 1 to 8 */ + info->class_subs[j]=oggpack_read(opb,2); /* 0,1,2,3 bits */ + if(info->class_subs[j]<0) + goto err_out; + if(info->class_subs[j])info->class_book[j]=oggpack_read(opb,8); + if(info->class_book[j]<0 || info->class_book[j]>=ci->books) + goto err_out; + for(k=0;k<(1<class_subs[j]);k++){ + info->class_subbook[j][k]=oggpack_read(opb,8)-1; + if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books) + goto err_out; + } + } + + /* read the post list */ + info->mult=oggpack_read(opb,2)+1; /* only 1,2,3,4 legal now */ + rangebits=oggpack_read(opb,4); + if(rangebits<0)goto err_out; + + for(j=0,k=0;jpartitions;j++){ + count+=info->class_dim[info->partitionclass[j]]; + if(count>VIF_POSIT)goto err_out; + for(;kpostlist[k+2]=oggpack_read(opb,rangebits); + if(t<0 || t>=(1<postlist[0]=0; + info->postlist[1]=1<postlist+j; + qsort(sortpointer,count+2,sizeof(*sortpointer),icomp); + + for(j=1;jvi=info; + look->n=info->postlist[1]; + + /* we drop each position value in-between already decoded values, + and use linear interpolation to predict each new value past the + edges. The positions are read in the order of the position + list... we precompute the bounding positions in the lookup. Of + course, the neighbors can change (if a position is declined), but + this is an initial mapping */ + + for(i=0;ipartitions;i++)n+=info->class_dim[info->partitionclass[i]]; + n+=2; + look->posts=n; + + /* also store a sorted position index */ + for(i=0;ipostlist+i; + qsort(sortpointer,n,sizeof(*sortpointer),icomp); + + /* points from sort order back to range number */ + for(i=0;iforward_index[i]=sortpointer[i]-info->postlist; + + /* quantize values to multiplier spec */ + switch(info->mult){ + case 1: /* 1024 -> 256 */ + look->quant_q=256; + break; + case 2: /* 1024 -> 128 */ + look->quant_q=128; + break; + case 3: /* 1024 -> 86 */ + look->quant_q=86; + break; + case 4: /* 1024 -> 64 */ + look->quant_q=64; + break; + } + + /* discover our neighbors for decode where we don't use fit flags + (that would push the neighbors outward) */ + for(i=0;in; + int currentx=info->postlist[i+2]; + for(j=0;jpostlist[j]; + if(x>lx && xcurrentx){ + hi=j; + hx=x; + } + } + look->loneighbor[i]=lo; + look->hineighbor[i]=hi; + } + + return(look); +} + +static int render_point(int x0,int x1,int y0,int y1,int x){ + y0&=0x7fff; /* mask off flag */ + y1&=0x7fff; + + { + int dy=y1-y0; + int adx=x1-x0; + int ady=abs(dy); + int err=ady*(x-x0); + + int off=err/adx; + if(dy<0)return(y0-off); + return(y0+off); + } +} + +#ifdef _LOW_ACCURACY_ +# define XdB(n) ((((n)>>8)+1)>>1) +#else +# define XdB(n) (n) +#endif + +static const ogg_int32_t FLOOR_fromdB_LOOKUP[256]={ + XdB(0x000000e5), XdB(0x000000f4), XdB(0x00000103), XdB(0x00000114), + XdB(0x00000126), XdB(0x00000139), XdB(0x0000014e), XdB(0x00000163), + XdB(0x0000017a), XdB(0x00000193), XdB(0x000001ad), XdB(0x000001c9), + XdB(0x000001e7), XdB(0x00000206), XdB(0x00000228), XdB(0x0000024c), + XdB(0x00000272), XdB(0x0000029b), XdB(0x000002c6), XdB(0x000002f4), + XdB(0x00000326), XdB(0x0000035a), XdB(0x00000392), XdB(0x000003cd), + XdB(0x0000040c), XdB(0x00000450), XdB(0x00000497), XdB(0x000004e4), + XdB(0x00000535), XdB(0x0000058c), XdB(0x000005e8), XdB(0x0000064a), + XdB(0x000006b3), XdB(0x00000722), XdB(0x00000799), XdB(0x00000818), + XdB(0x0000089e), XdB(0x0000092e), XdB(0x000009c6), XdB(0x00000a69), + XdB(0x00000b16), XdB(0x00000bcf), XdB(0x00000c93), XdB(0x00000d64), + XdB(0x00000e43), XdB(0x00000f30), XdB(0x0000102d), XdB(0x0000113a), + XdB(0x00001258), XdB(0x0000138a), XdB(0x000014cf), XdB(0x00001629), + XdB(0x0000179a), XdB(0x00001922), XdB(0x00001ac4), XdB(0x00001c82), + XdB(0x00001e5c), XdB(0x00002055), XdB(0x0000226f), XdB(0x000024ac), + XdB(0x0000270e), XdB(0x00002997), XdB(0x00002c4b), XdB(0x00002f2c), + XdB(0x0000323d), XdB(0x00003581), XdB(0x000038fb), XdB(0x00003caf), + XdB(0x000040a0), XdB(0x000044d3), XdB(0x0000494c), XdB(0x00004e10), + XdB(0x00005323), XdB(0x0000588a), XdB(0x00005e4b), XdB(0x0000646b), + XdB(0x00006af2), XdB(0x000071e5), XdB(0x0000794c), XdB(0x0000812e), + XdB(0x00008993), XdB(0x00009283), XdB(0x00009c09), XdB(0x0000a62d), + XdB(0x0000b0f9), XdB(0x0000bc79), XdB(0x0000c8b9), XdB(0x0000d5c4), + XdB(0x0000e3a9), XdB(0x0000f274), XdB(0x00010235), XdB(0x000112fd), + XdB(0x000124dc), XdB(0x000137e4), XdB(0x00014c29), XdB(0x000161bf), + XdB(0x000178bc), XdB(0x00019137), XdB(0x0001ab4a), XdB(0x0001c70e), + XdB(0x0001e4a1), XdB(0x0002041f), XdB(0x000225aa), XdB(0x00024962), + XdB(0x00026f6d), XdB(0x000297f0), XdB(0x0002c316), XdB(0x0002f109), + XdB(0x000321f9), XdB(0x00035616), XdB(0x00038d97), XdB(0x0003c8b4), + XdB(0x000407a7), XdB(0x00044ab2), XdB(0x00049218), XdB(0x0004de23), + XdB(0x00052f1e), XdB(0x0005855c), XdB(0x0005e135), XdB(0x00064306), + XdB(0x0006ab33), XdB(0x00071a24), XdB(0x0007904b), XdB(0x00080e20), + XdB(0x00089422), XdB(0x000922da), XdB(0x0009bad8), XdB(0x000a5cb6), + XdB(0x000b091a), XdB(0x000bc0b1), XdB(0x000c8436), XdB(0x000d5471), + XdB(0x000e3233), XdB(0x000f1e5f), XdB(0x001019e4), XdB(0x001125c1), + XdB(0x00124306), XdB(0x001372d5), XdB(0x0014b663), XdB(0x00160ef7), + XdB(0x00177df0), XdB(0x001904c1), XdB(0x001aa4f9), XdB(0x001c603d), + XdB(0x001e384f), XdB(0x00202f0f), XdB(0x0022467a), XdB(0x002480b1), + XdB(0x0026dff7), XdB(0x002966b3), XdB(0x002c1776), XdB(0x002ef4fc), + XdB(0x0032022d), XdB(0x00354222), XdB(0x0038b828), XdB(0x003c67c2), + XdB(0x004054ae), XdB(0x004482e8), XdB(0x0048f6af), XdB(0x004db488), + XdB(0x0052c142), XdB(0x005821ff), XdB(0x005ddc33), XdB(0x0063f5b0), + XdB(0x006a74a7), XdB(0x00715faf), XdB(0x0078bdce), XdB(0x0080967f), + XdB(0x0088f1ba), XdB(0x0091d7f9), XdB(0x009b5247), XdB(0x00a56a41), + XdB(0x00b02a27), XdB(0x00bb9ce2), XdB(0x00c7ce12), XdB(0x00d4ca17), + XdB(0x00e29e20), XdB(0x00f15835), XdB(0x0101074b), XdB(0x0111bb4e), + XdB(0x01238531), XdB(0x01367704), XdB(0x014aa402), XdB(0x016020a7), + XdB(0x017702c3), XdB(0x018f6190), XdB(0x01a955cb), XdB(0x01c4f9cf), + XdB(0x01e269a8), XdB(0x0201c33b), XdB(0x0223265a), XdB(0x0246b4ea), + XdB(0x026c9302), XdB(0x0294e716), XdB(0x02bfda13), XdB(0x02ed9793), + XdB(0x031e4e09), XdB(0x03522ee4), XdB(0x03896ed0), XdB(0x03c445e2), + XdB(0x0402efd6), XdB(0x0445ac4b), XdB(0x048cbefc), XdB(0x04d87013), + XdB(0x05290c67), XdB(0x057ee5ca), XdB(0x05da5364), XdB(0x063bb204), + XdB(0x06a36485), XdB(0x0711d42b), XdB(0x0787710e), XdB(0x0804b299), + XdB(0x088a17ef), XdB(0x0918287e), XdB(0x09af747c), XdB(0x0a50957e), + XdB(0x0afc2f19), XdB(0x0bb2ef7f), XdB(0x0c759034), XdB(0x0d44d6ca), + XdB(0x0e2195bc), XdB(0x0f0cad0d), XdB(0x10070b62), XdB(0x1111aeea), + XdB(0x122da66c), XdB(0x135c120f), XdB(0x149e24d9), XdB(0x15f525b1), + XdB(0x176270e3), XdB(0x18e7794b), XdB(0x1a85c9ae), XdB(0x1c3f06d1), + XdB(0x1e14f07d), XdB(0x200963d7), XdB(0x221e5ccd), XdB(0x2455f870), + XdB(0x26b2770b), XdB(0x29363e2b), XdB(0x2be3db5c), XdB(0x2ebe06b6), + XdB(0x31c7a55b), XdB(0x3503ccd4), XdB(0x3875c5aa), XdB(0x3c210f44), + XdB(0x4009632b), XdB(0x4432b8cf), XdB(0x48a149bc), XdB(0x4d59959e), + XdB(0x52606733), XdB(0x57bad899), XdB(0x5d6e593a), XdB(0x6380b298), + XdB(0x69f80e9a), XdB(0x70dafda8), XdB(0x78307d76), XdB(0x7fffffff), +}; + +static void render_line(int n, int x0,int x1,int y0,int y1,ogg_int32_t *d){ + int dy=y1-y0; + int adx=x1-x0; + int ady=abs(dy); + int base=dy/adx; + int sy=(dy<0?base-1:base+1); + int x=x0; + int y=y0; + int err=0; + + if(n>x1)n=x1; + ady-=abs(base*adx); + + if(x=adx){ + err-=adx; + y+=sy; + }else{ + y+=base; + } + d[x]= MULT31_SHIFT15(d[x],FLOOR_fromdB_LOOKUP[y]); + } +} + +static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){ + vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; + vorbis_info_floor1 *info=look->vi; + codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup; + + int i,j,k; + codebook *books=ci->fullbooks; + + /* unpack wrapped/predicted values from stream */ + if(oggpack_read(&vb->opb,1)==1){ + int *fit_value=(int *)_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value)); + + fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); + fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); + + /* partition by partition */ + /* partition by partition */ + for(i=0,j=2;ipartitions;i++){ + int classv=info->partitionclass[i]; + int cdim=info->class_dim[classv]; + int csubbits=info->class_subs[classv]; + int csub=1<class_book[classv],&vb->opb); + + if(cval==-1)goto eop; + } + + for(k=0;kclass_subbook[classv][cval&(csub-1)]; + cval>>=csubbits; + if(book>=0){ + if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1) + goto eop; + }else{ + fit_value[j+k]=0; + } + } + j+=cdim; + } + + /* unwrap positive values and reconsitute via linear interpolation */ + for(i=2;iposts;i++){ + int predicted=render_point(info->postlist[look->loneighbor[i-2]], + info->postlist[look->hineighbor[i-2]], + fit_value[look->loneighbor[i-2]], + fit_value[look->hineighbor[i-2]], + info->postlist[i]); + int hiroom=look->quant_q-predicted; + int loroom=predicted; + int room=(hiroom=room){ + if(hiroom>loroom){ + val = val-loroom; + }else{ + val = -1-(val-hiroom); + } + }else{ + if(val&1){ + val= -((val+1)>>1); + }else{ + val>>=1; + } + } + + fit_value[i]=(val+predicted)&0x7fff;; + fit_value[look->loneighbor[i-2]]&=0x7fff; + fit_value[look->hineighbor[i-2]]&=0x7fff; + + }else{ + fit_value[i]=predicted|0x8000; + } + + } + + return(fit_value); + } + eop: + return(NULL); +} + +static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo, + ogg_int32_t *out){ + vorbis_look_floor1 *look=(vorbis_look_floor1 *)in; + vorbis_info_floor1 *info=look->vi; + + codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup; + int n=ci->blocksizes[vb->W]/2; + int j; + + if(memo){ + /* render the lines */ + int *fit_value=(int *)memo; + int hx=0; + int lx=0; + int ly=fit_value[0]*info->mult; + /* guard lookup against out-of-range values */ + ly=(ly<0?0:ly>255?255:ly); + + for(j=1;jposts;j++){ + int current=look->forward_index[j]; + int hy=fit_value[current]&0x7fff; + if(hy==fit_value[current]){ + + hx=info->postlist[current]; + hy*=info->mult; + /* guard lookup against out-of-range values */ + hy=(hy<0?0:hy>255?255:hy); + + render_line(n,lx,hx,ly,hy,out); + + lx=hx; + ly=hy; + } + } + for(j=hx;j +#include +#include "ogg.h" + +/* A complete description of Ogg framing exists in docs/framing.html */ + +int ogg_page_version(const ogg_page *og){ + return((int)(og->header[4])); +} + +int ogg_page_continued(const ogg_page *og){ + return((int)(og->header[5]&0x01)); +} + +int ogg_page_bos(const ogg_page *og){ + return((int)(og->header[5]&0x02)); +} + +int ogg_page_eos(const ogg_page *og){ + return((int)(og->header[5]&0x04)); +} + +ogg_int64_t ogg_page_granulepos(const ogg_page *og){ + unsigned char *page=og->header; + ogg_int64_t granulepos=page[13]&(0xff); + granulepos= (granulepos<<8)|(page[12]&0xff); + granulepos= (granulepos<<8)|(page[11]&0xff); + granulepos= (granulepos<<8)|(page[10]&0xff); + granulepos= (granulepos<<8)|(page[9]&0xff); + granulepos= (granulepos<<8)|(page[8]&0xff); + granulepos= (granulepos<<8)|(page[7]&0xff); + granulepos= (granulepos<<8)|(page[6]&0xff); + return(granulepos); +} + +int ogg_page_serialno(const ogg_page *og){ + return(og->header[14] | + (og->header[15]<<8) | + (og->header[16]<<16) | + (og->header[17]<<24)); +} + +long ogg_page_pageno(const ogg_page *og){ + return(og->header[18] | + (og->header[19]<<8) | + (og->header[20]<<16) | + (og->header[21]<<24)); +} + + + +/* returns the number of packets that are completed on this page (if + the leading packet is begun on a previous page, but ends on this + page, it's counted */ + +/* NOTE: + If a page consists of a packet begun on a previous page, and a new + packet begun (but not completed) on this page, the return will be: + ogg_page_packets(page) ==1, + ogg_page_continued(page) !=0 + + If a page happens to be a single packet that was begun on a + previous page, and spans to the next page (in the case of a three or + more page packet), the return will be: + ogg_page_packets(page) ==0, + ogg_page_continued(page) !=0 +*/ + +int ogg_page_packets(const ogg_page *og){ + int i,n=og->header[26],count=0; + for(i=0;iheader[27+i]<255)count++; + return(count); +} + + +#if 0 +/* helper to initialize lookup for direct-table CRC (illustrative; we + use the static init below) */ + +static ogg_uint32_t _ogg_crc_entry(unsigned long index){ + int i; + unsigned long r; + + r = index << 24; + for (i=0; i<8; i++) + if (r & 0x80000000UL) + r = (r << 1) ^ 0x04c11db7; /* The same as the ethernet generator + polynomial, although we use an + unreflected alg and an init/final + of 0, not 0xffffffff */ + else + r<<=1; + return (r & 0xffffffffUL); +} +#endif + +static const ogg_uint32_t crc_lookup[256]={ + 0x00000000,0x04c11db7,0x09823b6e,0x0d4326d9, + 0x130476dc,0x17c56b6b,0x1a864db2,0x1e475005, + 0x2608edb8,0x22c9f00f,0x2f8ad6d6,0x2b4bcb61, + 0x350c9b64,0x31cd86d3,0x3c8ea00a,0x384fbdbd, + 0x4c11db70,0x48d0c6c7,0x4593e01e,0x4152fda9, + 0x5f15adac,0x5bd4b01b,0x569796c2,0x52568b75, + 0x6a1936c8,0x6ed82b7f,0x639b0da6,0x675a1011, + 0x791d4014,0x7ddc5da3,0x709f7b7a,0x745e66cd, + 0x9823b6e0,0x9ce2ab57,0x91a18d8e,0x95609039, + 0x8b27c03c,0x8fe6dd8b,0x82a5fb52,0x8664e6e5, + 0xbe2b5b58,0xbaea46ef,0xb7a96036,0xb3687d81, + 0xad2f2d84,0xa9ee3033,0xa4ad16ea,0xa06c0b5d, + 0xd4326d90,0xd0f37027,0xddb056fe,0xd9714b49, + 0xc7361b4c,0xc3f706fb,0xceb42022,0xca753d95, + 0xf23a8028,0xf6fb9d9f,0xfbb8bb46,0xff79a6f1, + 0xe13ef6f4,0xe5ffeb43,0xe8bccd9a,0xec7dd02d, + 0x34867077,0x30476dc0,0x3d044b19,0x39c556ae, + 0x278206ab,0x23431b1c,0x2e003dc5,0x2ac12072, + 0x128e9dcf,0x164f8078,0x1b0ca6a1,0x1fcdbb16, + 0x018aeb13,0x054bf6a4,0x0808d07d,0x0cc9cdca, + 0x7897ab07,0x7c56b6b0,0x71159069,0x75d48dde, + 0x6b93dddb,0x6f52c06c,0x6211e6b5,0x66d0fb02, + 0x5e9f46bf,0x5a5e5b08,0x571d7dd1,0x53dc6066, + 0x4d9b3063,0x495a2dd4,0x44190b0d,0x40d816ba, + 0xaca5c697,0xa864db20,0xa527fdf9,0xa1e6e04e, + 0xbfa1b04b,0xbb60adfc,0xb6238b25,0xb2e29692, + 0x8aad2b2f,0x8e6c3698,0x832f1041,0x87ee0df6, + 0x99a95df3,0x9d684044,0x902b669d,0x94ea7b2a, + 0xe0b41de7,0xe4750050,0xe9362689,0xedf73b3e, + 0xf3b06b3b,0xf771768c,0xfa325055,0xfef34de2, + 0xc6bcf05f,0xc27dede8,0xcf3ecb31,0xcbffd686, + 0xd5b88683,0xd1799b34,0xdc3abded,0xd8fba05a, + 0x690ce0ee,0x6dcdfd59,0x608edb80,0x644fc637, + 0x7a089632,0x7ec98b85,0x738aad5c,0x774bb0eb, + 0x4f040d56,0x4bc510e1,0x46863638,0x42472b8f, + 0x5c007b8a,0x58c1663d,0x558240e4,0x51435d53, + 0x251d3b9e,0x21dc2629,0x2c9f00f0,0x285e1d47, + 0x36194d42,0x32d850f5,0x3f9b762c,0x3b5a6b9b, + 0x0315d626,0x07d4cb91,0x0a97ed48,0x0e56f0ff, + 0x1011a0fa,0x14d0bd4d,0x19939b94,0x1d528623, + 0xf12f560e,0xf5ee4bb9,0xf8ad6d60,0xfc6c70d7, + 0xe22b20d2,0xe6ea3d65,0xeba91bbc,0xef68060b, + 0xd727bbb6,0xd3e6a601,0xdea580d8,0xda649d6f, + 0xc423cd6a,0xc0e2d0dd,0xcda1f604,0xc960ebb3, + 0xbd3e8d7e,0xb9ff90c9,0xb4bcb610,0xb07daba7, + 0xae3afba2,0xaafbe615,0xa7b8c0cc,0xa379dd7b, + 0x9b3660c6,0x9ff77d71,0x92b45ba8,0x9675461f, + 0x8832161a,0x8cf30bad,0x81b02d74,0x857130c3, + 0x5d8a9099,0x594b8d2e,0x5408abf7,0x50c9b640, + 0x4e8ee645,0x4a4ffbf2,0x470cdd2b,0x43cdc09c, + 0x7b827d21,0x7f436096,0x7200464f,0x76c15bf8, + 0x68860bfd,0x6c47164a,0x61043093,0x65c52d24, + 0x119b4be9,0x155a565e,0x18197087,0x1cd86d30, + 0x029f3d35,0x065e2082,0x0b1d065b,0x0fdc1bec, + 0x3793a651,0x3352bbe6,0x3e119d3f,0x3ad08088, + 0x2497d08d,0x2056cd3a,0x2d15ebe3,0x29d4f654, + 0xc5a92679,0xc1683bce,0xcc2b1d17,0xc8ea00a0, + 0xd6ad50a5,0xd26c4d12,0xdf2f6bcb,0xdbee767c, + 0xe3a1cbc1,0xe760d676,0xea23f0af,0xeee2ed18, + 0xf0a5bd1d,0xf464a0aa,0xf9278673,0xfde69bc4, + 0x89b8fd09,0x8d79e0be,0x803ac667,0x84fbdbd0, + 0x9abc8bd5,0x9e7d9662,0x933eb0bb,0x97ffad0c, + 0xafb010b1,0xab710d06,0xa6322bdf,0xa2f33668, + 0xbcb4666d,0xb8757bda,0xb5365d03,0xb1f740b4}; + +/* init the encode/decode logical stream state */ + +int ogg_stream_init(ogg_stream_state *os,int serialno){ + if(os){ + memset(os,0,sizeof(*os)); + os->body_storage=16*1024; + os->lacing_storage=1024; + + os->body_data=_ogg_malloc(os->body_storage*sizeof(*os->body_data)); + os->lacing_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->lacing_vals)); + os->granule_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->granule_vals)); + + if(!os->body_data || !os->lacing_vals || !os->granule_vals){ + ogg_stream_clear(os); + return -1; + } + + os->serialno=serialno; + + return(0); + } + return(-1); +} + +/* async/delayed error detection for the ogg_stream_state */ +int ogg_stream_check(ogg_stream_state *os){ + if(!os || !os->body_data) return -1; + return 0; +} + +/* _clear does not free os, only the non-flat storage within */ +int ogg_stream_clear(ogg_stream_state *os){ + if(os){ + if(os->body_data)_ogg_free(os->body_data); + if(os->lacing_vals)_ogg_free(os->lacing_vals); + if(os->granule_vals)_ogg_free(os->granule_vals); + + memset(os,0,sizeof(*os)); + } + return(0); +} + +int ogg_stream_destroy(ogg_stream_state *os){ + if(os){ + ogg_stream_clear(os); + _ogg_free(os); + } + return(0); +} + +/* Helpers for ogg_stream_encode; this keeps the structure and + what's happening fairly clear */ + +static int _os_body_expand(ogg_stream_state *os,int needed){ + if(os->body_storage<=os->body_fill+needed){ + void *ret; + ret=_ogg_realloc(os->body_data,(os->body_storage+needed+1024)* + sizeof(*os->body_data)); + if(!ret){ + ogg_stream_clear(os); + return -1; + } + os->body_storage+=(needed+1024); + os->body_data=ret; + } + return 0; +} + +static int _os_lacing_expand(ogg_stream_state *os,int needed){ + if(os->lacing_storage<=os->lacing_fill+needed){ + void *ret; + ret=_ogg_realloc(os->lacing_vals,(os->lacing_storage+needed+32)* + sizeof(*os->lacing_vals)); + if(!ret){ + ogg_stream_clear(os); + return -1; + } + os->lacing_vals=ret; + ret=_ogg_realloc(os->granule_vals,(os->lacing_storage+needed+32)* + sizeof(*os->granule_vals)); + if(!ret){ + ogg_stream_clear(os); + return -1; + } + os->granule_vals=ret; + os->lacing_storage+=(needed+32); + } + return 0; +} + +/* checksum the page */ +/* Direct table CRC; note that this will be faster in the future if we + perform the checksum simultaneously with other copies */ + +void ogg_page_checksum_set(ogg_page *og){ + if(og){ + ogg_uint32_t crc_reg=0; + int i; + + /* safety; needed for API behavior, but not framing code */ + og->header[22]=0; + og->header[23]=0; + og->header[24]=0; + og->header[25]=0; + + for(i=0;iheader_len;i++) + crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->header[i]]; + for(i=0;ibody_len;i++) + crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->body[i]]; + + og->header[22]=(unsigned char)(crc_reg&0xff); + og->header[23]=(unsigned char)((crc_reg>>8)&0xff); + og->header[24]=(unsigned char)((crc_reg>>16)&0xff); + og->header[25]=(unsigned char)((crc_reg>>24)&0xff); + } +} + +/* submit data to the internal buffer of the framing engine */ +int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, int count, + long e_o_s, ogg_int64_t granulepos){ + + int bytes = 0, lacing_vals, i; + + if(ogg_stream_check(os)) return -1; + if(!iov) return 0; + + for (i = 0; i < count; ++i) bytes += (int)iov[i].iov_len; + lacing_vals=bytes/255+1; + + if(os->body_returned){ + /* advance packet data according to the body_returned pointer. We + had to keep it around to return a pointer into the buffer last + call */ + + os->body_fill-=os->body_returned; + if(os->body_fill) + memmove(os->body_data,os->body_data+os->body_returned, + os->body_fill); + os->body_returned=0; + } + + /* make sure we have the buffer storage */ + if(_os_body_expand(os,bytes) || _os_lacing_expand(os,lacing_vals)) + return -1; + + /* Copy in the submitted packet. Yes, the copy is a waste; this is + the liability of overly clean abstraction for the time being. It + will actually be fairly easy to eliminate the extra copy in the + future */ + + for (i = 0; i < count; ++i) { + memcpy(os->body_data+os->body_fill, iov[i].iov_base, iov[i].iov_len); + os->body_fill += (int)iov[i].iov_len; + } + + /* Store lacing vals for this packet */ + for(i=0;ilacing_vals[os->lacing_fill+i]=255; + os->granule_vals[os->lacing_fill+i]=os->granulepos; + } + os->lacing_vals[os->lacing_fill+i]=bytes%255; + os->granulepos=os->granule_vals[os->lacing_fill+i]=granulepos; + + /* flag the first segment as the beginning of the packet */ + os->lacing_vals[os->lacing_fill]|= 0x100; + + os->lacing_fill+=lacing_vals; + + /* for the sake of completeness */ + os->packetno++; + + if(e_o_s)os->e_o_s=1; + + return(0); +} + +int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op){ + ogg_iovec_t iov; + iov.iov_base = op->packet; + iov.iov_len = op->bytes; + return ogg_stream_iovecin(os, &iov, 1, op->e_o_s, op->granulepos); +} + +/* Conditionally flush a page; force==0 will only flush nominal-size + pages, force==1 forces us to flush a page regardless of page size + so long as there's any data available at all. */ +static int ogg_stream_flush_i(ogg_stream_state *os,ogg_page *og, int force, int nfill){ + int i; + int vals=0; + int maxvals=(os->lacing_fill>255?255:os->lacing_fill); + int bytes=0; + long acc=0; + ogg_int64_t granule_pos=-1; + + if(ogg_stream_check(os)) return(0); + if(maxvals==0) return(0); + + /* construct a page */ + /* decide how many segments to include */ + + /* If this is the initial header case, the first page must only include + the initial header packet */ + if(os->b_o_s==0){ /* 'initial header page' case */ + granule_pos=0; + for(vals=0;valslacing_vals[vals]&0x0ff)<255){ + vals++; + break; + } + } + }else{ + + /* The extra packets_done, packet_just_done logic here attempts to do two things: + 1) Don't unneccessarily span pages. + 2) Unless necessary, don't flush pages if there are less than four packets on + them; this expands page size to reduce unneccessary overhead if incoming packets + are large. + These are not necessary behaviors, just 'always better than naive flushing' + without requiring an application to explicitly request a specific optimized + behavior. We'll want an explicit behavior setup pathway eventually as well. */ + + int packets_done=0; + int packet_just_done=0; + for(vals=0;valsnfill && packet_just_done>=4){ + force=1; + break; + } + acc+=os->lacing_vals[vals]&0x0ff; + if((os->lacing_vals[vals]&0xff)<255){ + granule_pos=os->granule_vals[vals]; + packet_just_done=++packets_done; + }else + packet_just_done=0; + } + if(vals==255)force=1; + } + + if(!force) return(0); + + /* construct the header in temp storage */ + memcpy(os->header,"OggS",4); + + /* stream structure version */ + os->header[4]=0x00; + + /* continued packet flag? */ + os->header[5]=0x00; + if((os->lacing_vals[0]&0x100)==0)os->header[5]|=0x01; + /* first page flag? */ + if(os->b_o_s==0)os->header[5]|=0x02; + /* last page flag? */ + if(os->e_o_s && os->lacing_fill==vals)os->header[5]|=0x04; + os->b_o_s=1; + + /* 64 bits of PCM position */ + for(i=6;i<14;i++){ + os->header[i]=(unsigned char)(granule_pos&0xff); + granule_pos>>=8; + } + + /* 32 bits of stream serial number */ + { + long serialno=os->serialno; + for(i=14;i<18;i++){ + os->header[i]=(unsigned char)(serialno&0xff); + serialno>>=8; + } + } + + /* 32 bits of page counter (we have both counter and page header + because this val can roll over) */ + if(os->pageno==-1)os->pageno=0; /* because someone called + stream_reset; this would be a + strange thing to do in an + encode stream, but it has + plausible uses */ + { + long pageno=os->pageno++; + for(i=18;i<22;i++){ + os->header[i]=(unsigned char)(pageno&0xff); + pageno>>=8; + } + } + + /* zero for computation; filled in later */ + os->header[22]=0; + os->header[23]=0; + os->header[24]=0; + os->header[25]=0; + + /* segment table */ + os->header[26]=(unsigned char)(vals&0xff); + for(i=0;iheader[i+27]=(unsigned char)(os->lacing_vals[i]&0xff); + + /* set pointers in the ogg_page struct */ + og->header=os->header; + og->header_len=os->header_fill=vals+27; + og->body=os->body_data+os->body_returned; + og->body_len=bytes; + + /* advance the lacing data and set the body_returned pointer */ + + os->lacing_fill-=vals; + memmove(os->lacing_vals,os->lacing_vals+vals,os->lacing_fill*sizeof(*os->lacing_vals)); + memmove(os->granule_vals,os->granule_vals+vals,os->lacing_fill*sizeof(*os->granule_vals)); + os->body_returned+=bytes; + + /* calculate the checksum */ + + ogg_page_checksum_set(og); + + /* done */ + return(1); +} + +/* This will flush remaining packets into a page (returning nonzero), + even if there is not enough data to trigger a flush normally + (undersized page). If there are no packets or partial packets to + flush, ogg_stream_flush returns 0. Note that ogg_stream_flush will + try to flush a normal sized page like ogg_stream_pageout; a call to + ogg_stream_flush does not guarantee that all packets have flushed. + Only a return value of 0 from ogg_stream_flush indicates all packet + data is flushed into pages. + + since ogg_stream_flush will flush the last page in a stream even if + it's undersized, you almost certainly want to use ogg_stream_pageout + (and *not* ogg_stream_flush) unless you specifically need to flush + a page regardless of size in the middle of a stream. */ + +int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){ + return ogg_stream_flush_i(os,og,1,4096); +} + +/* Like the above, but an argument is provided to adjust the nominal + page size for applications which are smart enough to provide their + own delay based flushing */ + +int ogg_stream_flush_fill(ogg_stream_state *os,ogg_page *og, int nfill){ + return ogg_stream_flush_i(os,og,1,nfill); +} + +/* This constructs pages from buffered packet segments. The pointers +returned are to static buffers; do not free. The returned buffers are +good only until the next call (using the same ogg_stream_state) */ + +int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og){ + int force=0; + if(ogg_stream_check(os)) return 0; + + if((os->e_o_s&&os->lacing_fill) || /* 'were done, now flush' case */ + (os->lacing_fill&&!os->b_o_s)) /* 'initial header page' case */ + force=1; + + return(ogg_stream_flush_i(os,og,force,4096)); +} + +/* Like the above, but an argument is provided to adjust the nominal +page size for applications which are smart enough to provide their +own delay based flushing */ + +int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill){ + int force=0; + if(ogg_stream_check(os)) return 0; + + if((os->e_o_s&&os->lacing_fill) || /* 'were done, now flush' case */ + (os->lacing_fill&&!os->b_o_s)) /* 'initial header page' case */ + force=1; + + return(ogg_stream_flush_i(os,og,force,nfill)); +} + +int ogg_stream_eos(ogg_stream_state *os){ + if(ogg_stream_check(os)) return 1; + return os->e_o_s; +} + +/* DECODING PRIMITIVES: packet streaming layer **********************/ + +/* This has two layers to place more of the multi-serialno and paging + control in the application's hands. First, we expose a data buffer + using ogg_sync_buffer(). The app either copies into the + buffer, or passes it directly to read(), etc. We then call + ogg_sync_wrote() to tell how many bytes we just added. + + Pages are returned (pointers into the buffer in ogg_sync_state) + by ogg_sync_pageout(). The page is then submitted to + ogg_stream_pagein() along with the appropriate + ogg_stream_state* (ie, matching serialno). We then get raw + packets out calling ogg_stream_packetout() with a + ogg_stream_state. */ + +/* initialize the struct to a known state */ +int ogg_sync_init(ogg_sync_state *oy){ + if(oy){ + oy->storage = -1; /* used as a readiness flag */ + memset(oy,0,sizeof(*oy)); + } + return(0); +} + +/* clear non-flat storage within */ +int ogg_sync_clear(ogg_sync_state *oy){ + if(oy){ + if(oy->data)_ogg_free(oy->data); + memset(oy,0,sizeof(*oy)); + } + return(0); +} + +int ogg_sync_destroy(ogg_sync_state *oy){ + if(oy){ + ogg_sync_clear(oy); + _ogg_free(oy); + } + return(0); +} + +int ogg_sync_check(ogg_sync_state *oy){ + if(oy->storage<0) return -1; + return 0; +} + +char *ogg_sync_buffer(ogg_sync_state *oy, long size){ + if(ogg_sync_check(oy)) return NULL; + + /* first, clear out any space that has been previously returned */ + if(oy->returned){ + oy->fill-=oy->returned; + if(oy->fill>0) + memmove(oy->data,oy->data+oy->returned,oy->fill); + oy->returned=0; + } + + if(size>oy->storage-oy->fill){ + /* We need to extend the internal buffer */ + long newsize=size+oy->fill+4096; /* an extra page to be nice */ + void *ret; + + if(oy->data) + ret=_ogg_realloc(oy->data,newsize); + else + ret=_ogg_malloc(newsize); + if(!ret){ + ogg_sync_clear(oy); + return NULL; + } + oy->data=ret; + oy->storage=newsize; + } + + /* expose a segment at least as large as requested at the fill mark */ + return((char *)oy->data+oy->fill); +} + +int ogg_sync_wrote(ogg_sync_state *oy, long bytes){ + if(ogg_sync_check(oy))return -1; + if(oy->fill+bytes>oy->storage)return -1; + oy->fill+=bytes; + return(0); +} + +/* sync the stream. This is meant to be useful for finding page + boundaries. + + return values for this: + -n) skipped n bytes + 0) page not ready; more data (no bytes skipped) + n) page synced at current location; page length n bytes + +*/ + +long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){ + unsigned char *page=oy->data+oy->returned; + unsigned char *next; + long bytes=oy->fill-oy->returned; + + if(ogg_sync_check(oy))return 0; + + if(oy->headerbytes==0){ + int headerbytes,i; + if(bytes<27)return(0); /* not enough for a header */ + + /* verify capture pattern */ + if(memcmp(page,"OggS",4))goto sync_fail; + + headerbytes=page[26]+27; + if(bytesbodybytes+=page[27+i]; + oy->headerbytes=headerbytes; + } + + if(oy->bodybytes+oy->headerbytes>bytes)return(0); + + /* The whole test page is buffered. Verify the checksum */ + { + /* Grab the checksum bytes, set the header field to zero */ + char chksum[4]; + ogg_page log; + + memcpy(chksum,page+22,4); + memset(page+22,0,4); + + /* set up a temp page struct and recompute the checksum */ + log.header=page; + log.header_len=oy->headerbytes; + log.body=page+oy->headerbytes; + log.body_len=oy->bodybytes; + ogg_page_checksum_set(&log); + + /* Compare */ + if(memcmp(chksum,page+22,4)){ + /* D'oh. Mismatch! Corrupt page (or miscapture and not a page + at all) */ + /* replace the computed checksum with the one actually read in */ + memcpy(page+22,chksum,4); + + /* Bad checksum. Lose sync */ + goto sync_fail; + } + } + + /* yes, have a whole page all ready to go */ + { + unsigned char *page=oy->data+oy->returned; + long bytes; + + if(og){ + og->header=page; + og->header_len=oy->headerbytes; + og->body=page+oy->headerbytes; + og->body_len=oy->bodybytes; + } + + oy->unsynced=0; + oy->returned+=(bytes=oy->headerbytes+oy->bodybytes); + oy->headerbytes=0; + oy->bodybytes=0; + return(bytes); + } + + sync_fail: + + oy->headerbytes=0; + oy->bodybytes=0; + + /* search for possible capture */ + next=memchr(page+1,'O',bytes-1); + if(!next) + next=oy->data+oy->fill; + + oy->returned=(int)(next-oy->data); + return((long)-(next-page)); +} + +/* sync the stream and get a page. Keep trying until we find a page. + Suppress 'sync errors' after reporting the first. + + return values: + -1) recapture (hole in data) + 0) need more data + 1) page returned + + Returns pointers into buffered data; invalidated by next call to + _stream, _clear, _init, or _buffer */ + +int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og){ + + if(ogg_sync_check(oy))return 0; + + /* all we need to do is verify a page at the head of the stream + buffer. If it doesn't verify, we look for the next potential + frame */ + + for(;;){ + long ret=ogg_sync_pageseek(oy,og); + if(ret>0){ + /* have a page */ + return(1); + } + if(ret==0){ + /* need more data */ + return(0); + } + + /* head did not start a synced page... skipped some bytes */ + if(!oy->unsynced){ + oy->unsynced=1; + return(-1); + } + + /* loop. keep looking */ + + } +} + +/* add the incoming page to the stream state; we decompose the page + into packet segments here as well. */ + +int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){ + unsigned char *header=og->header; + unsigned char *body=og->body; + long bodysize=og->body_len; + int segptr=0; + + int version=ogg_page_version(og); + int continued=ogg_page_continued(og); + int bos=ogg_page_bos(og); + int eos=ogg_page_eos(og); + ogg_int64_t granulepos=ogg_page_granulepos(og); + int serialno=ogg_page_serialno(og); + long pageno=ogg_page_pageno(og); + int segments=header[26]; + + if(ogg_stream_check(os)) return -1; + + /* clean up 'returned data' */ + { + long lr=os->lacing_returned; + long br=os->body_returned; + + /* body data */ + if(br){ + os->body_fill-=br; + if(os->body_fill) + memmove(os->body_data,os->body_data+br,os->body_fill); + os->body_returned=0; + } + + if(lr){ + /* segment table */ + if(os->lacing_fill-lr){ + memmove(os->lacing_vals,os->lacing_vals+lr, + (os->lacing_fill-lr)*sizeof(*os->lacing_vals)); + memmove(os->granule_vals,os->granule_vals+lr, + (os->lacing_fill-lr)*sizeof(*os->granule_vals)); + } + os->lacing_fill-=lr; + os->lacing_packet-=lr; + os->lacing_returned=0; + } + } + + /* check the serial number */ + if(serialno!=os->serialno)return(-1); + if(version>0)return(-1); + + if(_os_lacing_expand(os,segments+1)) return -1; + + /* are we in sequence? */ + if(pageno!=os->pageno){ + int i; + + /* unroll previous partial packet (if any) */ + for(i=os->lacing_packet;ilacing_fill;i++) + os->body_fill-=os->lacing_vals[i]&0xff; + os->lacing_fill=os->lacing_packet; + + /* make a note of dropped data in segment table */ + if(os->pageno!=-1){ + os->lacing_vals[os->lacing_fill++]=0x400; + os->lacing_packet++; + } + } + + /* are we a 'continued packet' page? If so, we may need to skip + some segments */ + if(continued){ + if(os->lacing_fill<1 || + os->lacing_vals[os->lacing_fill-1]==0x400){ + bos=0; + for(;segptrbody_data+os->body_fill,body,bodysize); + os->body_fill+=bodysize; + } + + { + int saved=-1; + while(segptrlacing_vals[os->lacing_fill]=val; + os->granule_vals[os->lacing_fill]=-1; + + if(bos){ + os->lacing_vals[os->lacing_fill]|=0x100; + bos=0; + } + + if(val<255)saved=os->lacing_fill; + + os->lacing_fill++; + segptr++; + + if(val<255)os->lacing_packet=os->lacing_fill; + } + + /* set the granulepos on the last granuleval of the last full packet */ + if(saved!=-1){ + os->granule_vals[saved]=granulepos; + } + + } + + if(eos){ + os->e_o_s=1; + if(os->lacing_fill>0) + os->lacing_vals[os->lacing_fill-1]|=0x200; + } + + os->pageno=pageno+1; + + return(0); +} + +/* clear things to an initial state. Good to call, eg, before seeking */ +int ogg_sync_reset(ogg_sync_state *oy){ + if(ogg_sync_check(oy))return -1; + + oy->fill=0; + oy->returned=0; + oy->unsynced=0; + oy->headerbytes=0; + oy->bodybytes=0; + return(0); +} + +int ogg_stream_reset(ogg_stream_state *os){ + if(ogg_stream_check(os)) return -1; + + os->body_fill=0; + os->body_returned=0; + + os->lacing_fill=0; + os->lacing_packet=0; + os->lacing_returned=0; + + os->header_fill=0; + + os->e_o_s=0; + os->b_o_s=0; + os->pageno=-1; + os->packetno=0; + os->granulepos=0; + + return(0); +} + +int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno){ + if(ogg_stream_check(os)) return -1; + ogg_stream_reset(os); + os->serialno=serialno; + return(0); +} + +static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){ + + /* The last part of decode. We have the stream broken into packet + segments. Now we need to group them into packets (or return the + out of sync markers) */ + + int ptr=os->lacing_returned; + + if(os->lacing_packet<=ptr)return(0); + + if(os->lacing_vals[ptr]&0x400){ + /* we need to tell the codec there's a gap; it might need to + handle previous packet dependencies. */ + os->lacing_returned++; + os->packetno++; + return(-1); + } + + if(!op && !adv)return(1); /* just using peek as an inexpensive way + to ask if there's a whole packet + waiting */ + + /* Gather the whole packet. We'll have no holes or a partial packet */ + { + int size=os->lacing_vals[ptr]&0xff; + long bytes=size; + int eos=os->lacing_vals[ptr]&0x200; /* last packet of the stream? */ + int bos=os->lacing_vals[ptr]&0x100; /* first packet of the stream? */ + + while(size==255){ + int val=os->lacing_vals[++ptr]; + size=val&0xff; + if(val&0x200)eos=0x200; + bytes+=size; + } + + if(op){ + op->e_o_s=eos; + op->b_o_s=bos; + op->packet=os->body_data+os->body_returned; + op->packetno=os->packetno; + op->granulepos=os->granule_vals[ptr]; + op->bytes=bytes; + } + + if(adv){ + os->body_returned+=bytes; + os->lacing_returned=ptr+1; + os->packetno++; + } + } + return(1); +} + +int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op){ + if(ogg_stream_check(os)) return 0; + return _packetout(os,op,1); +} + +int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op){ + if(ogg_stream_check(os)) return 0; + return _packetout(os,op,0); +} + +void ogg_packet_clear(ogg_packet *op) { + _ogg_free(op->packet); + memset(op, 0, sizeof(*op)); +} + +#ifdef _V_SELFTEST +#include + +ogg_stream_state os_en, os_de; +ogg_sync_state oy; + +void checkpacket(ogg_packet *op,long len, int no, long pos){ + long j; + static int sequence=0; + static int lastno=0; + + if(op->bytes!=len){ + fprintf(stderr,"incorrect packet length (%ld != %ld)!\n",op->bytes,len); + exit(1); + } + if(op->granulepos!=pos){ + fprintf(stderr,"incorrect packet granpos (%ld != %ld)!\n",(long)op->granulepos,pos); + exit(1); + } + + /* packet number just follows sequence/gap; adjust the input number + for that */ + if(no==0){ + sequence=0; + }else{ + sequence++; + if(no>lastno+1) + sequence++; + } + lastno=no; + if(op->packetno!=sequence){ + fprintf(stderr,"incorrect packet sequence %ld != %d\n", + (long)(op->packetno),sequence); + exit(1); + } + + /* Test data */ + for(j=0;jbytes;j++) + if(op->packet[j]!=((j+no)&0xff)){ + fprintf(stderr,"body data mismatch (1) at pos %ld: %x!=%lx!\n\n", + j,op->packet[j],(j+no)&0xff); + exit(1); + } +} + +void check_page(unsigned char *data,const int *header,ogg_page *og){ + long j; + /* Test data */ + for(j=0;jbody_len;j++) + if(og->body[j]!=data[j]){ + fprintf(stderr,"body data mismatch (2) at pos %ld: %x!=%x!\n\n", + j,data[j],og->body[j]); + exit(1); + } + + /* Test header */ + for(j=0;jheader_len;j++){ + if(og->header[j]!=header[j]){ + fprintf(stderr,"header content mismatch at pos %ld:\n",j); + for(j=0;jheader[j]); + fprintf(stderr,"\n"); + exit(1); + } + } + if(og->header_len!=header[26]+27){ + fprintf(stderr,"header length incorrect! (%ld!=%d)\n", + og->header_len,header[26]+27); + exit(1); + } +} + +void print_header(ogg_page *og){ + int j; + fprintf(stderr,"\nHEADER:\n"); + fprintf(stderr," capture: %c %c %c %c version: %d flags: %x\n", + og->header[0],og->header[1],og->header[2],og->header[3], + (int)og->header[4],(int)og->header[5]); + + fprintf(stderr," granulepos: %d serialno: %d pageno: %ld\n", + (og->header[9]<<24)|(og->header[8]<<16)| + (og->header[7]<<8)|og->header[6], + (og->header[17]<<24)|(og->header[16]<<16)| + (og->header[15]<<8)|og->header[14], + ((long)(og->header[21])<<24)|(og->header[20]<<16)| + (og->header[19]<<8)|og->header[18]); + + fprintf(stderr," checksum: %02x:%02x:%02x:%02x\n segments: %d (", + (int)og->header[22],(int)og->header[23], + (int)og->header[24],(int)og->header[25], + (int)og->header[26]); + + for(j=27;jheader_len;j++) + fprintf(stderr,"%d ",(int)og->header[j]); + fprintf(stderr,")\n\n"); +} + +void copy_page(ogg_page *og){ + unsigned char *temp=_ogg_malloc(og->header_len); + memcpy(temp,og->header,og->header_len); + og->header=temp; + + temp=_ogg_malloc(og->body_len); + memcpy(temp,og->body,og->body_len); + og->body=temp; +} + +void free_page(ogg_page *og){ + _ogg_free (og->header); + _ogg_free (og->body); +} + +void error(void){ + fprintf(stderr,"error!\n"); + exit(1); +} + +/* 17 only */ +const int head1_0[] = {0x4f,0x67,0x67,0x53,0,0x06, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0x15,0xed,0xec,0x91, + 1, + 17}; + +/* 17, 254, 255, 256, 500, 510, 600 byte, pad */ +const int head1_1[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0x59,0x10,0x6c,0x2c, + 1, + 17}; +const int head2_1[] = {0x4f,0x67,0x67,0x53,0,0x04, + 0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0x89,0x33,0x85,0xce, + 13, + 254,255,0,255,1,255,245,255,255,0, + 255,255,90}; + +/* nil packets; beginning,middle,end */ +const int head1_2[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0xff,0x7b,0x23,0x17, + 1, + 0}; +const int head2_2[] = {0x4f,0x67,0x67,0x53,0,0x04, + 0x07,0x28,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0x5c,0x3f,0x66,0xcb, + 17, + 17,254,255,0,0,255,1,0,255,245,255,255,0, + 255,255,90,0}; + +/* large initial packet */ +const int head1_3[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0x01,0x27,0x31,0xaa, + 18, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,10}; + +const int head2_3[] = {0x4f,0x67,0x67,0x53,0,0x04, + 0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0x7f,0x4e,0x8a,0xd2, + 4, + 255,4,255,0}; + + +/* continuing packet test */ +const int head1_4[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0xff,0x7b,0x23,0x17, + 1, + 0}; + +const int head2_4[] = {0x4f,0x67,0x67,0x53,0,0x00, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0xf8,0x3c,0x19,0x79, + 255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255}; + +const int head3_4[] = {0x4f,0x67,0x67,0x53,0,0x05, + 0x07,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,2,0,0,0, + 0x38,0xe6,0xb6,0x28, + 6, + 255,220,255,4,255,0}; + + +/* spill expansion test */ +const int head1_4b[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0xff,0x7b,0x23,0x17, + 1, + 0}; + +const int head2_4b[] = {0x4f,0x67,0x67,0x53,0,0x00, + 0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0xce,0x8f,0x17,0x1a, + 23, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,10,255,4,255,0,0}; + + +const int head3_4b[] = {0x4f,0x67,0x67,0x53,0,0x04, + 0x07,0x14,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,2,0,0,0, + 0x9b,0xb2,0x50,0xa1, + 1, + 0}; + +/* page with the 255 segment limit */ +const int head1_5[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0xff,0x7b,0x23,0x17, + 1, + 0}; + +const int head2_5[] = {0x4f,0x67,0x67,0x53,0,0x00, + 0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0xed,0x2a,0x2e,0xa7, + 255, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10}; + +const int head3_5[] = {0x4f,0x67,0x67,0x53,0,0x04, + 0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,2,0,0,0, + 0x6c,0x3b,0x82,0x3d, + 1, + 50}; + + +/* packet that overspans over an entire page */ +const int head1_6[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0xff,0x7b,0x23,0x17, + 1, + 0}; + +const int head2_6[] = {0x4f,0x67,0x67,0x53,0,0x00, + 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0x68,0x22,0x7c,0x3d, + 255, + 100, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255}; + +const int head3_6[] = {0x4f,0x67,0x67,0x53,0,0x01, + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, + 0x01,0x02,0x03,0x04,2,0,0,0, + 0xf4,0x87,0xba,0xf3, + 255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255}; + +const int head4_6[] = {0x4f,0x67,0x67,0x53,0,0x05, + 0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,3,0,0,0, + 0xf7,0x2f,0x6c,0x60, + 5, + 254,255,4,255,0}; + +/* packet that overspans over an entire page */ +const int head1_7[] = {0x4f,0x67,0x67,0x53,0,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,0,0,0,0, + 0xff,0x7b,0x23,0x17, + 1, + 0}; + +const int head2_7[] = {0x4f,0x67,0x67,0x53,0,0x00, + 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,1,0,0,0, + 0x68,0x22,0x7c,0x3d, + 255, + 100, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255, + 255,255,255,255,255,255}; + +const int head3_7[] = {0x4f,0x67,0x67,0x53,0,0x05, + 0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x02,0x03,0x04,2,0,0,0, + 0xd4,0xe0,0x60,0xe5, + 1, + 0}; + +void test_pack(const int *pl, const int **headers, int byteskip, + int pageskip, int packetskip){ + unsigned char *data=_ogg_malloc(1024*1024); /* for scripted test cases only */ + long inptr=0; + long outptr=0; + long deptr=0; + long depacket=0; + long granule_pos=7,pageno=0; + int i,j,packets,pageout=pageskip; + int eosflag=0; + int bosflag=0; + + int byteskipcount=0; + + ogg_stream_reset(&os_en); + ogg_stream_reset(&os_de); + ogg_sync_reset(&oy); + + for(packets=0;packetsbyteskip){ + memcpy(next,og.header,byteskipcount-byteskip); + next+=byteskipcount-byteskip; + byteskipcount=byteskip; + } + + byteskipcount+=og.body_len; + if(byteskipcount>byteskip){ + memcpy(next,og.body,byteskipcount-byteskip); + next+=byteskipcount-byteskip; + byteskipcount=byteskip; + } + + ogg_sync_wrote(&oy,next-buf); + + while(1){ + int ret=ogg_sync_pageout(&oy,&og_de); + if(ret==0)break; + if(ret<0)continue; + /* got a page. Happy happy. Verify that it's good. */ + + fprintf(stderr,"(%d), ",pageout); + + check_page(data+deptr,headers[pageout],&og_de); + deptr+=og_de.body_len; + pageout++; + + /* submit it to deconstitution */ + ogg_stream_pagein(&os_de,&og_de); + + /* packets out? */ + while(ogg_stream_packetpeek(&os_de,&op_de2)>0){ + ogg_stream_packetpeek(&os_de,NULL); + ogg_stream_packetout(&os_de,&op_de); /* just catching them all */ + + /* verify peek and out match */ + if(memcmp(&op_de,&op_de2,sizeof(op_de))){ + fprintf(stderr,"packetout != packetpeek! pos=%ld\n", + depacket); + exit(1); + } + + /* verify the packet! */ + /* check data */ + if(memcmp(data+depacket,op_de.packet,op_de.bytes)){ + fprintf(stderr,"packet data mismatch in decode! pos=%ld\n", + depacket); + exit(1); + } + /* check bos flag */ + if(bosflag==0 && op_de.b_o_s==0){ + fprintf(stderr,"b_o_s flag not set on packet!\n"); + exit(1); + } + if(bosflag && op_de.b_o_s){ + fprintf(stderr,"b_o_s flag incorrectly set on packet!\n"); + exit(1); + } + bosflag=1; + depacket+=op_de.bytes; + + /* check eos flag */ + if(eosflag){ + fprintf(stderr,"Multiple decoded packets with eos flag!\n"); + exit(1); + } + + if(op_de.e_o_s)eosflag=1; + + /* check granulepos flag */ + if(op_de.granulepos!=-1){ + fprintf(stderr," granule:%ld ",(long)op_de.granulepos); + } + } + } + } + } + } + } + _ogg_free(data); + if(headers[pageno]!=NULL){ + fprintf(stderr,"did not write last page!\n"); + exit(1); + } + if(headers[pageout]!=NULL){ + fprintf(stderr,"did not decode last page!\n"); + exit(1); + } + if(inptr!=outptr){ + fprintf(stderr,"encoded page data incomplete!\n"); + exit(1); + } + if(inptr!=deptr){ + fprintf(stderr,"decoded page data incomplete!\n"); + exit(1); + } + if(inptr!=depacket){ + fprintf(stderr,"decoded packet data incomplete!\n"); + exit(1); + } + if(!eosflag){ + fprintf(stderr,"Never got a packet with EOS set!\n"); + exit(1); + } + fprintf(stderr,"ok.\n"); +} + +int main(void){ + + ogg_stream_init(&os_en,0x04030201); + ogg_stream_init(&os_de,0x04030201); + ogg_sync_init(&oy); + + /* Exercise each code path in the framing code. Also verify that + the checksums are working. */ + + { + /* 17 only */ + const int packets[]={17, -1}; + const int *headret[]={head1_0,NULL}; + + fprintf(stderr,"testing single page encoding... "); + test_pack(packets,headret,0,0,0); + } + + { + /* 17, 254, 255, 256, 500, 510, 600 byte, pad */ + const int packets[]={17, 254, 255, 256, 500, 510, 600, -1}; + const int *headret[]={head1_1,head2_1,NULL}; + + fprintf(stderr,"testing basic page encoding... "); + test_pack(packets,headret,0,0,0); + } + + { + /* nil packets; beginning,middle,end */ + const int packets[]={0,17, 254, 255, 0, 256, 0, 500, 510, 600, 0, -1}; + const int *headret[]={head1_2,head2_2,NULL}; + + fprintf(stderr,"testing basic nil packets... "); + test_pack(packets,headret,0,0,0); + } + + { + /* large initial packet */ + const int packets[]={4345,259,255,-1}; + const int *headret[]={head1_3,head2_3,NULL}; + + fprintf(stderr,"testing initial-packet lacing > 4k... "); + test_pack(packets,headret,0,0,0); + } + + { + /* continuing packet test; with page spill expansion, we have to + overflow the lacing table. */ + const int packets[]={0,65500,259,255,-1}; + const int *headret[]={head1_4,head2_4,head3_4,NULL}; + + fprintf(stderr,"testing single packet page span... "); + test_pack(packets,headret,0,0,0); + } + + { + /* spill expand packet test */ + const int packets[]={0,4345,259,255,0,0,-1}; + const int *headret[]={head1_4b,head2_4b,head3_4b,NULL}; + + fprintf(stderr,"testing page spill expansion... "); + test_pack(packets,headret,0,0,0); + } + + /* page with the 255 segment limit */ + { + + const int packets[]={0,10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10, + 10,10,10,10,10,10,10,50,-1}; + const int *headret[]={head1_5,head2_5,head3_5,NULL}; + + fprintf(stderr,"testing max packet segments... "); + test_pack(packets,headret,0,0,0); + } + + { + /* packet that overspans over an entire page */ + const int packets[]={0,100,130049,259,255,-1}; + const int *headret[]={head1_6,head2_6,head3_6,head4_6,NULL}; + + fprintf(stderr,"testing very large packets... "); + test_pack(packets,headret,0,0,0); + } + + { + /* test for the libogg 1.1.1 resync in large continuation bug + found by Josh Coalson) */ + const int packets[]={0,100,130049,259,255,-1}; + const int *headret[]={head1_6,head2_6,head3_6,head4_6,NULL}; + + fprintf(stderr,"testing continuation resync in very large packets... "); + test_pack(packets,headret,100,2,3); + } + + { + /* term only page. why not? */ + const int packets[]={0,100,64770,-1}; + const int *headret[]={head1_7,head2_7,head3_7,NULL}; + + fprintf(stderr,"testing zero data page (1 nil packet)... "); + test_pack(packets,headret,0,0,0); + } + + + + { + /* build a bunch of pages for testing */ + unsigned char *data=_ogg_malloc(1024*1024); + int pl[]={0, 1,1,98,4079, 1,1,2954,2057, 76,34,912,0,234,1000,1000, 1000,300,-1}; + int inptr=0,i,j; + ogg_page og[5]; + + ogg_stream_reset(&os_en); + + for(i=0;pl[i]!=-1;i++){ + ogg_packet op; + int len=pl[i]; + + op.packet=data+inptr; + op.bytes=len; + op.e_o_s=(pl[i+1]<0?1:0); + op.granulepos=(i+1)*1000; + + for(j=0;j0)error(); + + /* Test fractional page inputs: incomplete fixed header */ + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+3, + 20); + ogg_sync_wrote(&oy,20); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + + /* Test fractional page inputs: incomplete header */ + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+23, + 5); + ogg_sync_wrote(&oy,5); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + + /* Test fractional page inputs: incomplete body */ + + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+28, + og[1].header_len-28); + ogg_sync_wrote(&oy,og[1].header_len-28); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,1000); + ogg_sync_wrote(&oy,1000); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body+1000, + og[1].body_len-1000); + ogg_sync_wrote(&oy,og[1].body_len-1000); + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + + fprintf(stderr,"ok.\n"); + } + + /* Test fractional page inputs: page + incomplete capture */ + { + ogg_page og_de; + fprintf(stderr,"Testing sync on 1+partial inputs... "); + ogg_sync_reset(&oy); + + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header, + og[1].header_len); + ogg_sync_wrote(&oy,og[1].header_len); + + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body, + og[1].body_len); + ogg_sync_wrote(&oy,og[1].body_len); + + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header, + 20); + ogg_sync_wrote(&oy,20); + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+20, + og[1].header_len-20); + ogg_sync_wrote(&oy,og[1].header_len-20); + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body, + og[1].body_len); + ogg_sync_wrote(&oy,og[1].body_len); + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + + fprintf(stderr,"ok.\n"); + } + + /* Test recapture: garbage + page */ + { + ogg_page og_de; + fprintf(stderr,"Testing search for capture... "); + ogg_sync_reset(&oy); + + /* 'garbage' */ + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body, + og[1].body_len); + ogg_sync_wrote(&oy,og[1].body_len); + + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header, + og[1].header_len); + ogg_sync_wrote(&oy,og[1].header_len); + + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body, + og[1].body_len); + ogg_sync_wrote(&oy,og[1].body_len); + + memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header, + 20); + ogg_sync_wrote(&oy,20); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + + memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header+20, + og[2].header_len-20); + ogg_sync_wrote(&oy,og[2].header_len-20); + memcpy(ogg_sync_buffer(&oy,og[2].body_len),og[2].body, + og[2].body_len); + ogg_sync_wrote(&oy,og[2].body_len); + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + + fprintf(stderr,"ok.\n"); + } + + /* Test recapture: page + garbage + page */ + { + ogg_page og_de; + fprintf(stderr,"Testing recapture... "); + ogg_sync_reset(&oy); + + memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header, + og[1].header_len); + ogg_sync_wrote(&oy,og[1].header_len); + + memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body, + og[1].body_len); + ogg_sync_wrote(&oy,og[1].body_len); + + memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header, + og[2].header_len); + ogg_sync_wrote(&oy,og[2].header_len); + + memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header, + og[2].header_len); + ogg_sync_wrote(&oy,og[2].header_len); + + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + + memcpy(ogg_sync_buffer(&oy,og[2].body_len),og[2].body, + og[2].body_len-5); + ogg_sync_wrote(&oy,og[2].body_len-5); + + memcpy(ogg_sync_buffer(&oy,og[3].header_len),og[3].header, + og[3].header_len); + ogg_sync_wrote(&oy,og[3].header_len); + + memcpy(ogg_sync_buffer(&oy,og[3].body_len),og[3].body, + og[3].body_len); + ogg_sync_wrote(&oy,og[3].body_len); + + if(ogg_sync_pageout(&oy,&og_de)>0)error(); + if(ogg_sync_pageout(&oy,&og_de)<=0)error(); + + fprintf(stderr,"ok.\n"); + } + + /* Free page data that was previously copied */ + { + for(i=0;i<5;i++){ + free_page(&og[i]); + } + } + } + + return(0); +} + +#endif diff --git a/libmednahawk/src/tremor/info.c b/libmednahawk/src/tremor/info.c new file mode 100644 index 0000000000..244b8f3168 --- /dev/null +++ b/libmednahawk/src/tremor/info.c @@ -0,0 +1,390 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: maintain the info structure, info <-> header packets + + ********************************************************************/ + +/* general handling of the header and the vorbis_info structure (and + substructures) */ + +#include +#include +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codec_internal.h" +#include "codebook.h" +#include "registry.h" +#include "window.h" +#include "misc.h" + +/* helpers */ +static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){ + while(bytes--){ + *buf++=oggpack_read(o,8); + } +} + +void vorbis_comment_init(vorbis_comment *vc){ + memset(vc,0,sizeof(*vc)); +} + +/* This is more or less the same as strncasecmp - but that doesn't exist + * everywhere, and this is a fairly trivial function, so we include it */ +static int tagcompare(const char *s1, const char *s2, int n){ + int c=0; + while(c < n){ + if(toupper(s1[c]) != toupper(s2[c])) + return !0; + c++; + } + return 0; +} + +char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){ + long i; + int found = 0; + int taglen = strlen(tag)+1; /* +1 for the = we append */ + char *fulltag = (char *)alloca(taglen+ 1); + + strcpy(fulltag, tag); + strcat(fulltag, "="); + + for(i=0;icomments;i++){ + if(!tagcompare(vc->user_comments[i], fulltag, taglen)){ + if(count == found) + /* We return a pointer to the data, not a copy */ + return vc->user_comments[i] + taglen; + else + found++; + } + } + return NULL; /* didn't find anything */ +} + +int vorbis_comment_query_count(vorbis_comment *vc, char *tag){ + int i,count=0; + int taglen = strlen(tag)+1; /* +1 for the = we append */ + char *fulltag = (char *)alloca(taglen+1); + strcpy(fulltag,tag); + strcat(fulltag, "="); + + for(i=0;icomments;i++){ + if(!tagcompare(vc->user_comments[i], fulltag, taglen)) + count++; + } + + return count; +} + +void vorbis_comment_clear(vorbis_comment *vc){ + if(vc){ + long i; + if(vc->user_comments){ + for(i=0;icomments;i++) + if(vc->user_comments[i])_ogg_free(vc->user_comments[i]); + _ogg_free(vc->user_comments); + } + if(vc->comment_lengths)_ogg_free(vc->comment_lengths); + if(vc->vendor)_ogg_free(vc->vendor); + memset(vc,0,sizeof(*vc)); + } +} + +/* blocksize 0 is guaranteed to be short, 1 is guarantted to be long. + They may be equal, but short will never ge greater than long */ +int vorbis_info_blocksize(vorbis_info *vi,int zo){ + codec_setup_info *ci = (codec_setup_info *)vi->codec_setup; + return ci ? ci->blocksizes[zo] : -1; +} + +/* used by synthesis, which has a full, alloced vi */ +void vorbis_info_init(vorbis_info *vi){ + memset(vi,0,sizeof(*vi)); + vi->codec_setup=(codec_setup_info *)_ogg_calloc(1,sizeof(codec_setup_info)); +} + +void vorbis_info_clear(vorbis_info *vi){ + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + int i; + + if(ci){ + + for(i=0;imodes;i++) + if(ci->mode_param[i])_ogg_free(ci->mode_param[i]); + + for(i=0;imaps;i++) /* unpack does the range checking */ + if(ci->map_param[i]) + _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]); + + for(i=0;ifloors;i++) /* unpack does the range checking */ + if(ci->floor_param[i]) + _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]); + + for(i=0;iresidues;i++) /* unpack does the range checking */ + if(ci->residue_param[i]) + _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]); + + for(i=0;ibooks;i++){ + if(ci->book_param[i]){ + /* knows if the book was not alloced */ + vorbis_staticbook_destroy(ci->book_param[i]); + } + if(ci->fullbooks) + vorbis_book_clear(ci->fullbooks+i); + } + if(ci->fullbooks) + _ogg_free(ci->fullbooks); + + _ogg_free(ci); + } + + memset(vi,0,sizeof(*vi)); +} + +/* Header packing/unpacking ********************************************/ + +static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){ + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + if(!ci)return(OV_EFAULT); + + vi->version=oggpack_read(opb,32); + if(vi->version!=0)return(OV_EVERSION); + + vi->channels=oggpack_read(opb,8); + vi->rate=oggpack_read(opb,32); + + vi->bitrate_upper=oggpack_read(opb,32); + vi->bitrate_nominal=oggpack_read(opb,32); + vi->bitrate_lower=oggpack_read(opb,32); + + ci->blocksizes[0]=1<blocksizes[1]=1<rate<1)goto err_out; + if(vi->channels<1)goto err_out; + if(ci->blocksizes[0]<64)goto err_out; + if(ci->blocksizes[1]blocksizes[0])goto err_out; + if(ci->blocksizes[1]>8192)goto err_out; + + if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */ + + return(0); + err_out: + vorbis_info_clear(vi); + return(OV_EBADHEADER); +} + +static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){ + int i; + int vendorlen; + vendorlen=oggpack_read(opb,32); + if(vendorlen<0)goto err_out; + if(vendorlen>opb->storage-oggpack_bytes(opb))goto err_out; + vc->vendor=(char *)_ogg_calloc(vendorlen+1,1); + if(vc->vendor==NULL)goto err_out; + _v_readstring(opb,vc->vendor,vendorlen); + i=oggpack_read(opb,32); + if(i<0||i>=INT_MAX||i>(opb->storage-oggpack_bytes(opb))>>2)goto err_out; + vc->user_comments=(char **)_ogg_calloc(i+1,sizeof(*vc->user_comments)); + vc->comment_lengths=(int *)_ogg_calloc(i+1, sizeof(*vc->comment_lengths)); + if(vc->user_comments==NULL||vc->comment_lengths==NULL)goto err_out; + vc->comments=i; + + for(i=0;icomments;i++){ + int len=oggpack_read(opb,32); + if(len<0||len>opb->storage-oggpack_bytes(opb))goto err_out; + vc->comment_lengths[i]=len; + vc->user_comments[i]=(char *)_ogg_calloc(len+1,1); + if(vc->user_comments[i]==NULL){ + vc->comments=i; + goto err_out; + } + _v_readstring(opb,vc->user_comments[i],len); + } + if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */ + + return(0); + err_out: + vorbis_comment_clear(vc); + return(OV_EBADHEADER); +} + +/* all of the real encoding details are here. The modes, books, + everything */ +static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){ + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + int i; + if(!ci)return(OV_EFAULT); + + /* codebooks */ + ci->books=oggpack_read(opb,8)+1; + if(ci->books<=0)goto err_out; + for(i=0;ibooks;i++){ + ci->book_param[i]=vorbis_staticbook_unpack(opb); + if(!ci->book_param[i])goto err_out; + } + + /* time backend settings */ + ci->times=oggpack_read(opb,6)+1; + if(ci->times<=0)goto err_out; + for(i=0;itimes;i++){ + ci->time_type[i]=oggpack_read(opb,16); + if(ci->time_type[i]<0 || ci->time_type[i]>=VI_TIMEB)goto err_out; + /* ci->time_param[i]=_time_P[ci->time_type[i]]->unpack(vi,opb); + Vorbis I has no time backend */ + /*if(!ci->time_param[i])goto err_out;*/ + } + + /* floor backend settings */ + ci->floors=oggpack_read(opb,6)+1; + if(ci->floors<=0)goto err_out; + for(i=0;ifloors;i++){ + ci->floor_type[i]=oggpack_read(opb,16); + if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out; + ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb); + if(!ci->floor_param[i])goto err_out; + } + + /* residue backend settings */ + ci->residues=oggpack_read(opb,6)+1; + if(ci->residues<=0)goto err_out; + for(i=0;iresidues;i++){ + ci->residue_type[i]=oggpack_read(opb,16); + if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out; + ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb); + if(!ci->residue_param[i])goto err_out; + } + + /* map backend settings */ + ci->maps=oggpack_read(opb,6)+1; + if(ci->maps<=0)goto err_out; + for(i=0;imaps;i++){ + ci->map_type[i]=oggpack_read(opb,16); + if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out; + ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb); + if(!ci->map_param[i])goto err_out; + } + + /* mode settings */ + ci->modes=oggpack_read(opb,6)+1; + if(ci->modes<=0)goto err_out; + for(i=0;imodes;i++){ + ci->mode_param[i]=(vorbis_info_mode *)_ogg_calloc(1,sizeof(*ci->mode_param[i])); + ci->mode_param[i]->blockflag=oggpack_read(opb,1); + ci->mode_param[i]->windowtype=oggpack_read(opb,16); + ci->mode_param[i]->transformtype=oggpack_read(opb,16); + ci->mode_param[i]->mapping=oggpack_read(opb,8); + + if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out; + if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out; + if(ci->mode_param[i]->mapping>=ci->maps)goto err_out; + if(ci->mode_param[i]->mapping<0)goto err_out; + } + + if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */ + + return(0); + err_out: + vorbis_info_clear(vi); + return(OV_EBADHEADER); +} + +/* Is this packet a vorbis ID header? */ +int vorbis_synthesis_idheader(ogg_packet *op){ + oggpack_buffer opb; + char buffer[6]; + + if(op){ + oggpack_readinit(&opb,op->packet,op->bytes); + + if(!op->b_o_s) + return(0); /* Not the initial packet */ + + if(oggpack_read(&opb,8) != 1) + return 0; /* not an ID header */ + + memset(buffer,0,6); + _v_readstring(&opb,buffer,6); + if(memcmp(buffer,"vorbis",6)) + return 0; /* not vorbis */ + + return 1; + } + + return 0; +} + +/* The Vorbis header is in three packets; the initial small packet in + the first page that identifies basic parameters, a second packet + with bitstream comments and a third packet that holds the + codebook. */ + +int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){ + oggpack_buffer opb; + + if(op){ + oggpack_readinit(&opb,op->packet,op->bytes); + + /* Which of the three types of header is this? */ + /* Also verify header-ness, vorbis */ + { + char buffer[6]; + int packtype=oggpack_read(&opb,8); + memset(buffer,0,6); + _v_readstring(&opb,buffer,6); + if(memcmp(buffer,"vorbis",6)){ + /* not a vorbis header */ + return(OV_ENOTVORBIS); + } + switch(packtype){ + case 0x01: /* least significant *bit* is read first */ + if(!op->b_o_s){ + /* Not the initial packet */ + return(OV_EBADHEADER); + } + if(vi->rate!=0){ + /* previously initialized info header */ + return(OV_EBADHEADER); + } + + return(_vorbis_unpack_info(vi,&opb)); + + case 0x03: /* least significant *bit* is read first */ + if(vi->rate==0){ + /* um... we didn't get the initial header */ + return(OV_EBADHEADER); + } + + return(_vorbis_unpack_comment(vc,&opb)); + + case 0x05: /* least significant *bit* is read first */ + if(vi->rate==0 || vc->vendor==NULL){ + /* um... we didn;t get the initial header or comments yet */ + return(OV_EBADHEADER); + } + + return(_vorbis_unpack_books(vi,&opb)); + + default: + /* Not a valid vorbis header type */ + return(OV_EBADHEADER); + break; + } + } + } + return(OV_EBADHEADER); +} + diff --git a/libmednahawk/src/tremor/iseeking_example.c b/libmednahawk/src/tremor/iseeking_example.c new file mode 100644 index 0000000000..4e8266c8b1 --- /dev/null +++ b/libmednahawk/src/tremor/iseeking_example.c @@ -0,0 +1,265 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: illustrate seeking, and test it too + last mod: $Id: iseeking_example.c 16037 2009-05-26 21:10:58Z xiphmont $ + + ********************************************************************/ + +#include +#include +#include "ivorbiscodec.h" +#include "ivorbisfile.h" + +#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ +# include +# include +#endif + +void _verify(OggVorbis_File *ov, + ogg_int64_t val, + ogg_int64_t pcmval, + ogg_int64_t timeval, + ogg_int64_t pcmlength, + char *bigassbuffer){ + int j; + long bread; + char buffer[4096]; + int dummy; + ogg_int64_t pos; + + /* verify the raw position, the pcm position and position decode */ + if(val!=-1 && ov_raw_tell(ov)pcmval){ + fprintf(stderr,"pcm position out of tolerance: requested %ld, got %ld\n", + (long)pcmval,(long)ov_pcm_tell(ov)); + exit(1); + } + if(timeval!=-1 && ov_time_tell(ov)>timeval){ + fprintf(stderr,"time position out of tolerance: requested %ld, got %ld\n", + (long)timeval,(long)ov_time_tell(ov)); + exit(1); + } + pos=ov_pcm_tell(ov); + if(pos<0 || pos>pcmlength){ + fprintf(stderr,"pcm position out of bounds: got %ld\n",(long)pos); + exit(1); + } + bread=ov_read(ov,buffer,4096,&dummy); + if(bigassbuffer){ + for(j=0;jchannels!=2){ + fprintf(stderr,"Sorry; right now seeking_test can only use Vorbis files\n" + "that are entirely stereo.\n\n"); + exit(1); + } + } + + /* because we want to do sample-level verification that the seek + does what it claimed, decode the entire file into memory */ + pcmlength=ov_pcm_total(&ov,-1); + timelength=ov_time_total(&ov,-1); + bigassbuffer=malloc(pcmlength*4); /* w00t */ + if(bigassbuffer){ + i=0; + while(ival+1){ + fprintf(stderr,"Declared position didn't perfectly match request: %ld != %ld\n", + (long)val,(long)ov_time_tell(&ov)); + exit(1); + } + + _verify(&ov,-1,-1,val,pcmlength,bigassbuffer); + + } + } + + fprintf(stderr,"\r \nOK.\n\n"); + + + }else{ + fprintf(stderr,"Standard input was not seekable.\n"); + } + + ov_clear(&ov); + return 0; +} + + + + + + + + + + + + + diff --git a/libmednahawk/src/tremor/ivorbiscodec.h b/libmednahawk/src/tremor/ivorbiscodec.h new file mode 100644 index 0000000000..e3c23a36e5 --- /dev/null +++ b/libmednahawk/src/tremor/ivorbiscodec.h @@ -0,0 +1,204 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: libvorbis codec headers + + ********************************************************************/ + +#ifndef _vorbis_codec_h_ +#define _vorbis_codec_h_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include "ogg.h" + +typedef struct vorbis_info{ + int version; + int channels; + long rate; + + /* The below bitrate declarations are *hints*. + Combinations of the three values carry the following implications: + + all three set to the same value: + implies a fixed rate bitstream + only nominal set: + implies a VBR stream that averages the nominal bitrate. No hard + upper/lower limit + upper and or lower set: + implies a VBR bitstream that obeys the bitrate limits. nominal + may also be set to give a nominal rate. + none set: + the coder does not care to speculate. + */ + + long bitrate_upper; + long bitrate_nominal; + long bitrate_lower; + long bitrate_window; + + void *codec_setup; +} vorbis_info; + +/* vorbis_dsp_state buffers the current vorbis audio + analysis/synthesis state. The DSP state belongs to a specific + logical bitstream ****************************************************/ +typedef struct vorbis_dsp_state{ + int analysisp; + vorbis_info *vi; + + ogg_int32_t **pcm; + ogg_int32_t **pcmret; + int pcm_storage; + int pcm_current; + int pcm_returned; + + int preextrapolate; + int eofflag; + + long lW; + long W; + long nW; + long centerW; + + ogg_int64_t granulepos; + ogg_int64_t sequence; + + void *backend_state; +} vorbis_dsp_state; + +typedef struct vorbis_block{ + /* necessary stream state for linking to the framing abstraction */ + ogg_int32_t **pcm; /* this is a pointer into local storage */ + oggpack_buffer opb; + + long lW; + long W; + long nW; + int pcmend; + int mode; + + int eofflag; + ogg_int64_t granulepos; + ogg_int64_t sequence; + vorbis_dsp_state *vd; /* For read-only access of configuration */ + + /* local storage to avoid remallocing; it's up to the mapping to + structure it */ + void *localstore; + long localtop; + long localalloc; + long totaluse; + struct alloc_chain *reap; + +} vorbis_block; + +/* vorbis_block is a single block of data to be processed as part of +the analysis/synthesis stream; it belongs to a specific logical +bitstream, but is independant from other vorbis_blocks belonging to +that logical bitstream. *************************************************/ + +struct alloc_chain{ + void *ptr; + struct alloc_chain *next; +}; + +/* vorbis_info contains all the setup information specific to the + specific compression/decompression mode in progress (eg, + psychoacoustic settings, channel setup, options, codebook + etc). vorbis_info and substructures are in backends.h. +*********************************************************************/ + +/* the comments are not part of vorbis_info so that vorbis_info can be + static storage */ +typedef struct vorbis_comment{ + /* unlimited user comment fields. libvorbis writes 'libvorbis' + whatever vendor is set to in encode */ + char **user_comments; + int *comment_lengths; + int comments; + char *vendor; + +} vorbis_comment; + + +/* libvorbis encodes in two abstraction layers; first we perform DSP + and produce a packet (see docs/analysis.txt). The packet is then + coded into a framed OggSquish bitstream by the second layer (see + docs/framing.txt). Decode is the reverse process; we sync/frame + the bitstream and extract individual packets, then decode the + packet back into PCM audio. + + The extra framing/packetizing is used in streaming formats, such as + files. Over the net (such as with UDP), the framing and + packetization aren't necessary as they're provided by the transport + and the streaming layer is not used */ + +/* Vorbis PRIMITIVES: general ***************************************/ + +extern void vorbis_info_init(vorbis_info *vi); +extern void vorbis_info_clear(vorbis_info *vi); +extern int vorbis_info_blocksize(vorbis_info *vi,int zo); +extern void vorbis_comment_init(vorbis_comment *vc); +extern void vorbis_comment_add(vorbis_comment *vc, char *comment); +extern void vorbis_comment_add_tag(vorbis_comment *vc, + char *tag, char *contents); +extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count); +extern int vorbis_comment_query_count(vorbis_comment *vc, char *tag); +extern void vorbis_comment_clear(vorbis_comment *vc); + +extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); +extern int vorbis_block_clear(vorbis_block *vb); +extern void vorbis_dsp_clear(vorbis_dsp_state *v); + +/* Vorbis PRIMITIVES: synthesis layer *******************************/ +extern int vorbis_synthesis_idheader(ogg_packet *op); +extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, + ogg_packet *op); + +extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); +extern int vorbis_synthesis_restart(vorbis_dsp_state *v); +extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); +extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); +extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm); +extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); +extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); + +/* Vorbis ERRORS and return codes ***********************************/ + +#define OV_FALSE -1 +#define OV_EOF -2 +#define OV_HOLE -3 + +#define OV_EREAD -128 +#define OV_EFAULT -129 +#define OV_EIMPL -130 +#define OV_EINVAL -131 +#define OV_ENOTVORBIS -132 +#define OV_EBADHEADER -133 +#define OV_EVERSION -134 +#define OV_ENOTAUDIO -135 +#define OV_EBADPACKET -136 +#define OV_EBADLINK -137 +#define OV_ENOSEEK -138 + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + diff --git a/libmednahawk/src/tremor/ivorbisfile.h b/libmednahawk/src/tremor/ivorbisfile.h new file mode 100644 index 0000000000..bcdbdcc4f2 --- /dev/null +++ b/libmednahawk/src/tremor/ivorbisfile.h @@ -0,0 +1,130 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + + ********************************************************************/ + +#ifndef _OV_FILE_H_ +#define _OV_FILE_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include +#include "ivorbiscodec.h" + +#define CHUNKSIZE 1024 +/* The function prototypes for the callbacks are basically the same as for + * the stdio functions fread, fseek, fclose, ftell. + * The one difference is that the FILE * arguments have been replaced with + * a void * - this is to be used as a pointer to whatever internal data these + * functions might need. In the stdio case, it's just a FILE * cast to a void * + * + * If you use other functions, check the docs for these functions and return + * the right values. For seek_func(), you *MUST* return -1 if the stream is + * unseekable + */ +typedef struct { + size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); + int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); + int (*close_func) (void *datasource); + long (*tell_func) (void *datasource); +} ov_callbacks; + +#define NOTOPEN 0 +#define PARTOPEN 1 +#define OPENED 2 +#define STREAMSET 3 +#define INITSET 4 + +typedef struct OggVorbis_File { + void *datasource; /* Pointer to a FILE *, etc. */ + int seekable; + ogg_int64_t offset; + ogg_int64_t end; + ogg_sync_state oy; + + /* If the FILE handle isn't seekable (eg, a pipe), only the current + stream appears */ + int links; + ogg_int64_t *offsets; + ogg_int64_t *dataoffsets; + ogg_uint32_t *serialnos; + ogg_int64_t *pcmlengths; + vorbis_info *vi; + vorbis_comment *vc; + + /* Decoding working state local storage */ + ogg_int64_t pcm_offset; + int ready_state; + ogg_uint32_t current_serialno; + int current_link; + + ogg_int64_t bittrack; + ogg_int64_t samptrack; + + ogg_stream_state os; /* take physical pages, weld into a logical + stream of packets */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + + ov_callbacks callbacks; + +} OggVorbis_File; + +extern int ov_clear(OggVorbis_File *vf); +extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); +extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, + const char *initial, long ibytes, ov_callbacks callbacks); + +extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); +extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, + const char *initial, long ibytes, ov_callbacks callbacks); +extern int ov_test_open(OggVorbis_File *vf); + +extern long ov_bitrate(OggVorbis_File *vf,int i); +extern long ov_bitrate_instant(OggVorbis_File *vf); +extern long ov_streams(OggVorbis_File *vf); +extern long ov_seekable(OggVorbis_File *vf); +extern long ov_serialnumber(OggVorbis_File *vf,int i); + +extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); +extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); +extern ogg_int64_t ov_time_total(OggVorbis_File *vf,int i); + +extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek(OggVorbis_File *vf,ogg_int64_t pos); +extern int ov_time_seek_page(OggVorbis_File *vf,ogg_int64_t pos); + +extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); +extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); +extern ogg_int64_t ov_time_tell(OggVorbis_File *vf); + +extern vorbis_info *ov_info(OggVorbis_File *vf,int link); +extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); + +extern long ov_read(OggVorbis_File *vf,char *buffer,int length, + int *bitstream); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif + + diff --git a/libmednahawk/src/tremor/ivorbisfile_example.c b/libmednahawk/src/tremor/ivorbisfile_example.c new file mode 100644 index 0000000000..6cf9422650 --- /dev/null +++ b/libmednahawk/src/tremor/ivorbisfile_example.c @@ -0,0 +1,91 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: simple example decoder using vorbisidec + + ********************************************************************/ + +/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to + stdout using vorbisfile. Using vorbisfile is much simpler than + dealing with libvorbis. */ + +#include +#include +#include "ivorbiscodec.h" +#include "ivorbisfile.h" + +#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */ +#include +#include +#endif + +char pcmout[4096]; /* take 4k out of the data segment, not the stack */ + +int main(){ + OggVorbis_File vf; + int eof=0; + int current_section; + +#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */ + /* Beware the evil ifdef. We avoid these where we can, but this one we + cannot. Don't add any more, you'll probably go to hell if you do. */ + _setmode( _fileno( stdin ), _O_BINARY ); + _setmode( _fileno( stdout ), _O_BINARY ); +#endif + + if(ov_open(stdin, &vf, NULL, 0) < 0) { + fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n"); + exit(1); + } + + /* Throw the comments plus a few lines about the bitstream we're + decoding */ + { + char **ptr=ov_comment(&vf,-1)->user_comments; + vorbis_info *vi=ov_info(&vf,-1); + while(*ptr){ + fprintf(stderr,"%s\n",*ptr); + ++ptr; + } + fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate); + fprintf(stderr,"\nDecoded length: %ld samples\n", + (long)ov_pcm_total(&vf,-1)); + fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor); + } + + while(!eof){ + long ret=ov_read(&vf,pcmout,sizeof(pcmout),¤t_section); + if (ret == 0) { + /* EOF */ + eof=1; + } else if (ret < 0) { + if(ret==OV_EBADLINK){ + fprintf(stderr,"Corrupt bitstream section! Exiting.\n"); + exit(1); + } + + /* some other error in the stream. Not a problem, just reporting it in + case we (the app) cares. In this case, we don't. */ + } else { + /* we don't bother dealing with sample rate changes, etc, but + you'll have to*/ + fwrite(pcmout,1,ret,stdout); + } + } + + /* cleanup */ + ov_clear(&vf); + + fprintf(stderr,"Done.\n"); + return(0); +} diff --git a/libmednahawk/src/tremor/lsp_lookup.h b/libmednahawk/src/tremor/lsp_lookup.h new file mode 100644 index 0000000000..067f4c0665 --- /dev/null +++ b/libmednahawk/src/tremor/lsp_lookup.h @@ -0,0 +1,136 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: lookup data + + ********************************************************************/ + +#ifndef _V_LOOKUP_DATA_H_ +#define _V_LOOKUP_DATA_H_ + +#include "os_types.h" + +#define FROMdB_LOOKUP_SZ 35 +#define FROMdB2_LOOKUP_SZ 32 +#define FROMdB_SHIFT 5 +#define FROMdB2_SHIFT 3 +#define FROMdB2_MASK 31 + +static const ogg_int32_t FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={ + 0x003fffff, 0x0028619b, 0x00197a96, 0x0010137a, + 0x000a24b0, 0x00066666, 0x000409c3, 0x00028c42, + 0x00019b8c, 0x000103ab, 0x0000a3d7, 0x00006760, + 0x0000413a, 0x00002928, 0x000019f8, 0x00001062, + 0x00000a56, 0x00000686, 0x0000041e, 0x00000299, + 0x000001a3, 0x00000109, 0x000000a7, 0x00000069, + 0x00000042, 0x0000002a, 0x0000001a, 0x00000011, + 0x0000000b, 0x00000007, 0x00000004, 0x00000003, + 0x00000002, 0x00000001, 0x00000001}; + +static const ogg_int32_t FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={ + 0x000001fc, 0x000001f5, 0x000001ee, 0x000001e7, + 0x000001e0, 0x000001d9, 0x000001d2, 0x000001cc, + 0x000001c5, 0x000001bf, 0x000001b8, 0x000001b2, + 0x000001ac, 0x000001a6, 0x000001a0, 0x0000019a, + 0x00000194, 0x0000018e, 0x00000188, 0x00000183, + 0x0000017d, 0x00000178, 0x00000172, 0x0000016d, + 0x00000168, 0x00000163, 0x0000015e, 0x00000159, + 0x00000154, 0x0000014f, 0x0000014a, 0x00000145, +}; + +#define INVSQ_LOOKUP_I_SHIFT 10 +#define INVSQ_LOOKUP_I_MASK 1023 +static const long INVSQ_LOOKUP_I[64+1]={ + 92682, 91966, 91267, 90583, + 89915, 89261, 88621, 87995, + 87381, 86781, 86192, 85616, + 85051, 84497, 83953, 83420, + 82897, 82384, 81880, 81385, + 80899, 80422, 79953, 79492, + 79039, 78594, 78156, 77726, + 77302, 76885, 76475, 76072, + 75674, 75283, 74898, 74519, + 74146, 73778, 73415, 73058, + 72706, 72359, 72016, 71679, + 71347, 71019, 70695, 70376, + 70061, 69750, 69444, 69141, + 68842, 68548, 68256, 67969, + 67685, 67405, 67128, 66855, + 66585, 66318, 66054, 65794, + 65536, +}; + +static const long INVSQ_LOOKUP_IDel[64]={ + 716, 699, 684, 668, + 654, 640, 626, 614, + 600, 589, 576, 565, + 554, 544, 533, 523, + 513, 504, 495, 486, + 477, 469, 461, 453, + 445, 438, 430, 424, + 417, 410, 403, 398, + 391, 385, 379, 373, + 368, 363, 357, 352, + 347, 343, 337, 332, + 328, 324, 319, 315, + 311, 306, 303, 299, + 294, 292, 287, 284, + 280, 277, 273, 270, + 267, 264, 260, 258, +}; + +#define COS_LOOKUP_I_SHIFT 9 +#define COS_LOOKUP_I_MASK 511 +#define COS_LOOKUP_I_SZ 128 +static const ogg_int32_t COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={ + 16384, 16379, 16364, 16340, + 16305, 16261, 16207, 16143, + 16069, 15986, 15893, 15791, + 15679, 15557, 15426, 15286, + 15137, 14978, 14811, 14635, + 14449, 14256, 14053, 13842, + 13623, 13395, 13160, 12916, + 12665, 12406, 12140, 11866, + 11585, 11297, 11003, 10702, + 10394, 10080, 9760, 9434, + 9102, 8765, 8423, 8076, + 7723, 7366, 7005, 6639, + 6270, 5897, 5520, 5139, + 4756, 4370, 3981, 3590, + 3196, 2801, 2404, 2006, + 1606, 1205, 804, 402, + 0, -401, -803, -1204, + -1605, -2005, -2403, -2800, + -3195, -3589, -3980, -4369, + -4755, -5138, -5519, -5896, + -6269, -6638, -7004, -7365, + -7722, -8075, -8422, -8764, + -9101, -9433, -9759, -10079, + -10393, -10701, -11002, -11296, + -11584, -11865, -12139, -12405, + -12664, -12915, -13159, -13394, + -13622, -13841, -14052, -14255, + -14448, -14634, -14810, -14977, + -15136, -15285, -15425, -15556, + -15678, -15790, -15892, -15985, + -16068, -16142, -16206, -16260, + -16304, -16339, -16363, -16378, + -16383, +}; + +#endif + + + + + diff --git a/libmednahawk/src/tremor/mapping0.c b/libmednahawk/src/tremor/mapping0.c new file mode 100644 index 0000000000..9d4835ada8 --- /dev/null +++ b/libmednahawk/src/tremor/mapping0.c @@ -0,0 +1,328 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: channel mapping 0 implementation + + ********************************************************************/ + +#include +#include +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "mdct.h" +#include "codec_internal.h" +#include "codebook.h" +#include "window.h" +#include "registry.h" +#include "misc.h" + +/* simplistic, wasteful way of doing this (unique lookup for each + mode/submapping); there should be a central repository for + identical lookups. That will require minor work, so I'm putting it + off as low priority. + + Why a lookup for each backend in a given mode? Because the + blocksize is set by the mode, and low backend lookups may require + parameters from other areas of the mode/mapping */ + +typedef struct { + vorbis_info_mode *mode; + vorbis_info_mapping0 *map; + + vorbis_look_floor **floor_look; + + vorbis_look_residue **residue_look; + + vorbis_func_floor **floor_func; + vorbis_func_residue **residue_func; + + int ch; + long lastframe; /* if a different mode is called, we need to + invalidate decay */ +} vorbis_look_mapping0; + +static void mapping0_free_info(vorbis_info_mapping *i){ + vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)i; + if(info){ + memset(info,0,sizeof(*info)); + _ogg_free(info); + } +} + +static void mapping0_free_look(vorbis_look_mapping *look){ + int i; + vorbis_look_mapping0 *l=(vorbis_look_mapping0 *)look; + if(l){ + + for(i=0;imap->submaps;i++){ + l->floor_func[i]->free_look(l->floor_look[i]); + l->residue_func[i]->free_look(l->residue_look[i]); + } + + _ogg_free(l->floor_func); + _ogg_free(l->residue_func); + _ogg_free(l->floor_look); + _ogg_free(l->residue_look); + memset(l,0,sizeof(*l)); + _ogg_free(l); + } +} + +static vorbis_look_mapping *mapping0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm, + vorbis_info_mapping *m){ + int i; + vorbis_info *vi=vd->vi; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)_ogg_calloc(1,sizeof(*look)); + vorbis_info_mapping0 *info=look->map=(vorbis_info_mapping0 *)m; + look->mode=vm; + + look->floor_look=(vorbis_look_floor **)_ogg_calloc(info->submaps,sizeof(*look->floor_look)); + + look->residue_look=(vorbis_look_residue **)_ogg_calloc(info->submaps,sizeof(*look->residue_look)); + + look->floor_func=(vorbis_func_floor **)_ogg_calloc(info->submaps,sizeof(*look->floor_func)); + look->residue_func=(vorbis_func_residue **)_ogg_calloc(info->submaps,sizeof(*look->residue_func)); + + for(i=0;isubmaps;i++){ + int floornum=info->floorsubmap[i]; + int resnum=info->residuesubmap[i]; + + look->floor_func[i]=_floor_P[ci->floor_type[floornum]]; + look->floor_look[i]=look->floor_func[i]-> + look(vd,vm,ci->floor_param[floornum]); + look->residue_func[i]=_residue_P[ci->residue_type[resnum]]; + look->residue_look[i]=look->residue_func[i]-> + look(vd,vm,ci->residue_param[resnum]); + + } + + look->ch=vi->channels; + + return(look); +} + +static int ilog(unsigned int v){ + int ret=0; + if(v)--v; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +/* also responsible for range checking */ +static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){ + int i,b; + vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)_ogg_calloc(1,sizeof(*info)); + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + memset(info,0,sizeof(*info)); + + b=oggpack_read(opb,1); + if(b<0)goto err_out; + if(b){ + info->submaps=oggpack_read(opb,4)+1; + if(info->submaps<=0)goto err_out; + }else + info->submaps=1; + + b=oggpack_read(opb,1); + if(b<0)goto err_out; + if(b){ + info->coupling_steps=oggpack_read(opb,8)+1; + if(info->coupling_steps<=0)goto err_out; + for(i=0;icoupling_steps;i++){ + int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels)); + int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels)); + + if(testM<0 || + testA<0 || + testM==testA || + testM>=vi->channels || + testA>=vi->channels) goto err_out; + } + + } + + if(oggpack_read(opb,2)!=0)goto err_out; /* 2,3:reserved */ + + if(info->submaps>1){ + for(i=0;ichannels;i++){ + info->chmuxlist[i]=oggpack_read(opb,4); + if(info->chmuxlist[i]>=info->submaps || info->chmuxlist[i]<0)goto err_out; + } + } + for(i=0;isubmaps;i++){ + int temp=oggpack_read(opb,8); + if(temp>=ci->times)goto err_out; + info->floorsubmap[i]=oggpack_read(opb,8); + if(info->floorsubmap[i]>=ci->floors || info->floorsubmap[i]<0)goto err_out; + info->residuesubmap[i]=oggpack_read(opb,8); + if(info->residuesubmap[i]>=ci->residues || info->residuesubmap[i]<0) + goto err_out; + } + + return info; + + err_out: + mapping0_free_info(info); + return(NULL); +} + +static int seq=0; +static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){ + vorbis_dsp_state *vd=vb->vd; + vorbis_info *vi=vd->vi; + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + private_state *b=(private_state *)vd->backend_state; + vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l; + vorbis_info_mapping0 *info=look->map; + + int i,j; + long n=vb->pcmend=ci->blocksizes[vb->W]; + + ogg_int32_t **pcmbundle=(ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels); + int *zerobundle=(int *)alloca(sizeof(*zerobundle)*vi->channels); + + int *nonzero =(int *)alloca(sizeof(*nonzero)*vi->channels); + void **floormemo=(void **)alloca(sizeof(*floormemo)*vi->channels); + + /* time domain information decode (note that applying the + information would have to happen later; we'll probably add a + function entry to the harness for that later */ + /* NOT IMPLEMENTED */ + + /* recover the spectral envelope; store it in the PCM vector for now */ + for(i=0;ichannels;i++){ + int submap=info->chmuxlist[i]; + floormemo[i]=look->floor_func[submap]-> + inverse1(vb,look->floor_look[submap]); + if(floormemo[i]) + nonzero[i]=1; + else + nonzero[i]=0; + memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2); + } + + /* channel coupling can 'dirty' the nonzero listing */ + for(i=0;icoupling_steps;i++){ + if(nonzero[info->coupling_mag[i]] || + nonzero[info->coupling_ang[i]]){ + nonzero[info->coupling_mag[i]]=1; + nonzero[info->coupling_ang[i]]=1; + } + } + + /* recover the residue into our working vectors */ + for(i=0;isubmaps;i++){ + int ch_in_bundle=0; + for(j=0;jchannels;j++){ + if(info->chmuxlist[j]==i){ + if(nonzero[j]) + zerobundle[ch_in_bundle]=1; + else + zerobundle[ch_in_bundle]=0; + pcmbundle[ch_in_bundle++]=vb->pcm[j]; + } + } + + look->residue_func[i]->inverse(vb,look->residue_look[i], + pcmbundle,zerobundle,ch_in_bundle); + } + + //for(j=0;jchannels;j++) + //_analysis_output("coupled",seq+j,vb->pcm[j],-8,n/2,0,0); + + + /* channel coupling */ + for(i=info->coupling_steps-1;i>=0;i--){ + ogg_int32_t *pcmM=vb->pcm[info->coupling_mag[i]]; + ogg_int32_t *pcmA=vb->pcm[info->coupling_ang[i]]; + + for(j=0;j0) + if(ang>0){ + pcmM[j]=mag; + pcmA[j]=mag-ang; + }else{ + pcmA[j]=mag; + pcmM[j]=mag+ang; + } + else + if(ang>0){ + pcmM[j]=mag; + pcmA[j]=mag+ang; + }else{ + pcmA[j]=mag; + pcmM[j]=mag-ang; + } + } + } + + //for(j=0;jchannels;j++) + //_analysis_output("residue",seq+j,vb->pcm[j],-8,n/2,0,0); + + /* compute and apply spectral envelope */ + for(i=0;ichannels;i++){ + ogg_int32_t *pcm=vb->pcm[i]; + int submap=info->chmuxlist[i]; + look->floor_func[submap]-> + inverse2(vb,look->floor_look[submap],floormemo[i],pcm); + } + + //for(j=0;jchannels;j++) + //_analysis_output("mdct",seq+j,vb->pcm[j],-24,n/2,0,1); + + /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */ + /* only MDCT right now.... */ + for(i=0;ichannels;i++){ + ogg_int32_t *pcm=vb->pcm[i]; + mdct_backward(n,pcm,pcm); + } + + //for(j=0;jchannels;j++) + //_analysis_output("imdct",seq+j,vb->pcm[j],-24,n,0,0); + + /* window the data */ + for(i=0;ichannels;i++){ + ogg_int32_t *pcm=vb->pcm[i]; + if(nonzero[i]) + _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW); + else + for(j=0;jchannels;j++) + //_analysis_output("window",seq+j,vb->pcm[j],-24,n,0,0); + + seq+=vi->channels; + /* all done! */ + return(0); +} + +/* export hooks */ +vorbis_func_mapping mapping0_exportbundle={ + &mapping0_unpack, + &mapping0_look, + &mapping0_free_info, + &mapping0_free_look, + &mapping0_inverse +}; diff --git a/libmednahawk/src/tremor/mdct.c b/libmednahawk/src/tremor/mdct.c new file mode 100644 index 0000000000..80e10cc46b --- /dev/null +++ b/libmednahawk/src/tremor/mdct.c @@ -0,0 +1,510 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: normalized modified discrete cosine transform + power of two length transform only [64 <= n ] + last mod: $Id: mdct.c,v 1.9 2002/10/16 09:17:39 xiphmont Exp $ + + Original algorithm adapted long ago from _The use of multirate filter + banks for coding of high quality digital audio_, by T. Sporer, + K. Brandenburg and B. Edler, collection of the European Signal + Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp + 211-214 + + The below code implements an algorithm that no longer looks much like + that presented in the paper, but the basic structure remains if you + dig deep enough to see it. + + This module DOES NOT INCLUDE code to generate/apply the window + function. Everybody has their own weird favorite including me... I + happen to like the properties of y=sin(.5PI*sin^2(x)), but others may + vehemently disagree. + + ********************************************************************/ + +#include "ivorbiscodec.h" +#include "codebook.h" +#include "misc.h" +#include "mdct.h" +#include "mdct_lookup.h" + + +/* 8 point butterfly (in place) */ +STIN void mdct_butterfly_8(DATA_TYPE *x){ + + REG_TYPE r0 = x[4] + x[0]; + REG_TYPE r1 = x[4] - x[0]; + REG_TYPE r2 = x[5] + x[1]; + REG_TYPE r3 = x[5] - x[1]; + REG_TYPE r4 = x[6] + x[2]; + REG_TYPE r5 = x[6] - x[2]; + REG_TYPE r6 = x[7] + x[3]; + REG_TYPE r7 = x[7] - x[3]; + + x[0] = r5 + r3; + x[1] = r7 - r1; + x[2] = r5 - r3; + x[3] = r7 + r1; + x[4] = r4 - r0; + x[5] = r6 - r2; + x[6] = r4 + r0; + x[7] = r6 + r2; + MB(); +} + +/* 16 point butterfly (in place, 4 register) */ +STIN void mdct_butterfly_16(DATA_TYPE *x){ + + REG_TYPE r0, r1; + + r0 = x[ 0] - x[ 8]; x[ 8] += x[ 0]; + r1 = x[ 1] - x[ 9]; x[ 9] += x[ 1]; + x[ 0] = MULT31((r0 + r1) , cPI2_8); + x[ 1] = MULT31((r1 - r0) , cPI2_8); + MB(); + + r0 = x[10] - x[ 2]; x[10] += x[ 2]; + r1 = x[ 3] - x[11]; x[11] += x[ 3]; + x[ 2] = r1; x[ 3] = r0; + MB(); + + r0 = x[12] - x[ 4]; x[12] += x[ 4]; + r1 = x[13] - x[ 5]; x[13] += x[ 5]; + x[ 4] = MULT31((r0 - r1) , cPI2_8); + x[ 5] = MULT31((r0 + r1) , cPI2_8); + MB(); + + r0 = x[14] - x[ 6]; x[14] += x[ 6]; + r1 = x[15] - x[ 7]; x[15] += x[ 7]; + x[ 6] = r0; x[ 7] = r1; + MB(); + + mdct_butterfly_8(x); + mdct_butterfly_8(x+8); +} + +/* 32 point butterfly (in place, 4 register) */ +STIN void mdct_butterfly_32(DATA_TYPE *x){ + + REG_TYPE r0, r1; + + r0 = x[30] - x[14]; x[30] += x[14]; + r1 = x[31] - x[15]; x[31] += x[15]; + x[14] = r0; x[15] = r1; + MB(); + + r0 = x[28] - x[12]; x[28] += x[12]; + r1 = x[29] - x[13]; x[29] += x[13]; + XNPROD31( r0, r1, cPI1_8, cPI3_8, &x[12], &x[13] ); + MB(); + + r0 = x[26] - x[10]; x[26] += x[10]; + r1 = x[27] - x[11]; x[27] += x[11]; + x[10] = MULT31((r0 - r1) , cPI2_8); + x[11] = MULT31((r0 + r1) , cPI2_8); + MB(); + + r0 = x[24] - x[ 8]; x[24] += x[ 8]; + r1 = x[25] - x[ 9]; x[25] += x[ 9]; + XNPROD31( r0, r1, cPI3_8, cPI1_8, &x[ 8], &x[ 9] ); + MB(); + + r0 = x[22] - x[ 6]; x[22] += x[ 6]; + r1 = x[ 7] - x[23]; x[23] += x[ 7]; + x[ 6] = r1; x[ 7] = r0; + MB(); + + r0 = x[ 4] - x[20]; x[20] += x[ 4]; + r1 = x[ 5] - x[21]; x[21] += x[ 5]; + XPROD31 ( r0, r1, cPI3_8, cPI1_8, &x[ 4], &x[ 5] ); + MB(); + + r0 = x[ 2] - x[18]; x[18] += x[ 2]; + r1 = x[ 3] - x[19]; x[19] += x[ 3]; + x[ 2] = MULT31((r1 + r0) , cPI2_8); + x[ 3] = MULT31((r1 - r0) , cPI2_8); + MB(); + + r0 = x[ 0] - x[16]; x[16] += x[ 0]; + r1 = x[ 1] - x[17]; x[17] += x[ 1]; + XPROD31 ( r0, r1, cPI1_8, cPI3_8, &x[ 0], &x[ 1] ); + MB(); + + mdct_butterfly_16(x); + mdct_butterfly_16(x+16); +} + +/* N/stage point generic N stage butterfly (in place, 2 register) */ +STIN void mdct_butterfly_generic(DATA_TYPE *x,int points,int step){ + + LOOKUP_T *T = sincos_lookup0; + DATA_TYPE *x1 = x + points - 8; + DATA_TYPE *x2 = x + (points>>1) - 8; + REG_TYPE r0; + REG_TYPE r1; + + do{ + r0 = x1[6] - x2[6]; x1[6] += x2[6]; + r1 = x2[7] - x1[7]; x1[7] += x2[7]; + XPROD31( r1, r0, T[0], T[1], &x2[6], &x2[7] ); T+=step; + + r0 = x1[4] - x2[4]; x1[4] += x2[4]; + r1 = x2[5] - x1[5]; x1[5] += x2[5]; + XPROD31( r1, r0, T[0], T[1], &x2[4], &x2[5] ); T+=step; + + r0 = x1[2] - x2[2]; x1[2] += x2[2]; + r1 = x2[3] - x1[3]; x1[3] += x2[3]; + XPROD31( r1, r0, T[0], T[1], &x2[2], &x2[3] ); T+=step; + + r0 = x1[0] - x2[0]; x1[0] += x2[0]; + r1 = x2[1] - x1[1]; x1[1] += x2[1]; + XPROD31( r1, r0, T[0], T[1], &x2[0], &x2[1] ); T+=step; + + x1-=8; x2-=8; + }while(Tsincos_lookup0); + do{ + r0 = x2[6] - x1[6]; x1[6] += x2[6]; + r1 = x2[7] - x1[7]; x1[7] += x2[7]; + XPROD31( r0, r1, T[0], T[1], &x2[6], &x2[7] ); T+=step; + + r0 = x2[4] - x1[4]; x1[4] += x2[4]; + r1 = x2[5] - x1[5]; x1[5] += x2[5]; + XPROD31( r0, r1, T[0], T[1], &x2[4], &x2[5] ); T+=step; + + r0 = x2[2] - x1[2]; x1[2] += x2[2]; + r1 = x2[3] - x1[3]; x1[3] += x2[3]; + XPROD31( r0, r1, T[0], T[1], &x2[2], &x2[3] ); T+=step; + + r0 = x2[0] - x1[0]; x1[0] += x2[0]; + r1 = x2[1] - x1[1]; x1[1] += x2[1]; + XPROD31( r0, r1, T[0], T[1], &x2[0], &x2[1] ); T+=step; + + x1-=8; x2-=8; + }while(Tsincos_lookup0); +} + +STIN void mdct_butterflies(DATA_TYPE *x,int points,int shift){ + + int stages=8-shift; + int i,j; + + for(i=0;--stages>0;i++){ + for(j=0;j<(1<>i)*j,points>>i,4<<(i+shift)); + } + + for(j=0;j>8]|(bitrev[(x&0x0f0)>>4]<<4)|(((int)bitrev[x&0x00f])<<8); +} + +STIN void mdct_bitreverse(DATA_TYPE *x,int n,int step,int shift){ + + int bit = 0; + DATA_TYPE *w0 = x; + DATA_TYPE *w1 = x = w0+(n>>1); + LOOKUP_T *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; + LOOKUP_T *Ttop = T+1024; + DATA_TYPE r2; + + do{ + DATA_TYPE r3 = bitrev12(bit++); + DATA_TYPE *x0 = x + ((r3 ^ 0xfff)>>shift) -1; + DATA_TYPE *x1 = x + (r3>>shift); + + REG_TYPE r0 = x0[0] + x1[0]; + REG_TYPE r1 = x1[1] - x0[1]; + + XPROD32( r0, r1, T[1], T[0], &r2, &r3 ); T+=step; + + w1 -= 4; + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; + w0[0] = r0 + r2; + w0[1] = r1 + r3; + w1[2] = r0 - r2; + w1[3] = r3 - r1; + + r3 = bitrev12(bit++); + x0 = x + ((r3 ^ 0xfff)>>shift) -1; + x1 = x + (r3>>shift); + + r0 = x0[0] + x1[0]; + r1 = x1[1] - x0[1]; + + XPROD32( r0, r1, T[1], T[0], &r2, &r3 ); T+=step; + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; + w0[2] = r0 + r2; + w0[3] = r1 + r3; + w1[0] = r0 - r2; + w1[1] = r3 - r1; + + w0 += 4; + }while(T>shift) -1; + DATA_TYPE *x1 = x + (r3>>shift); + + REG_TYPE r0 = x0[0] + x1[0]; + REG_TYPE r1 = x1[1] - x0[1]; + + T-=step; XPROD32( r0, r1, T[0], T[1], &r2, &r3 ); + + w1 -= 4; + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; + w0[0] = r0 + r2; + w0[1] = r1 + r3; + w1[2] = r0 - r2; + w1[3] = r3 - r1; + + r3 = bitrev12(bit++); + x0 = x + ((r3 ^ 0xfff)>>shift) -1; + x1 = x + (r3>>shift); + + r0 = x0[0] + x1[0]; + r1 = x1[1] - x0[1]; + + T-=step; XPROD32( r0, r1, T[0], T[1], &r2, &r3 ); + + r0 = (x0[1] + x1[1])>>1; + r1 = (x0[0] - x1[0])>>1; + w0[2] = r0 + r2; + w0[3] = r1 + r3; + w1[0] = r0 - r2; + w1[1] = r3 - r1; + + w0 += 4; + }while(w0>1; + int n4=n>>2; + DATA_TYPE *iX; + DATA_TYPE *oX; + LOOKUP_T *T; + LOOKUP_T *V; + int shift; + int step; + + for (shift=6;!(n&(1<=in+n4); + do{ + oX-=4; + XPROD31( iX[4], iX[6], T[1], T[0], &oX[2], &oX[3] ); T-=step; + XPROD31( iX[0], iX[2], T[1], T[0], &oX[0], &oX[1] ); T-=step; + iX-=8; + }while(iX>=in); + + iX = in+n2-8; + oX = out+n2+n4; + T = sincos_lookup0; + + do{ + T+=step; XNPROD31( iX[6], iX[4], T[0], T[1], &oX[0], &oX[1] ); + T+=step; XNPROD31( iX[2], iX[0], T[0], T[1], &oX[2], &oX[3] ); + iX-=8; + oX+=4; + }while(iX>=in+n4); + do{ + T-=step; XNPROD31( iX[6], iX[4], T[1], T[0], &oX[0], &oX[1] ); + T-=step; XNPROD31( iX[2], iX[0], T[1], T[0], &oX[2], &oX[3] ); + iX-=8; + oX+=4; + }while(iX>=in); + + mdct_butterflies(out+n2,n2,shift); + mdct_bitreverse(out,n,step,shift); + + /* rotate + window */ + + step>>=2; + { + DATA_TYPE *oX1=out+n2+n4; + DATA_TYPE *oX2=out+n2+n4; + DATA_TYPE *iX =out; + + switch(step) { + default: { + T=(step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1; + do{ + oX1-=4; + XPROD31( iX[0], -iX[1], T[0], T[1], &oX1[3], &oX2[0] ); T+=step; + XPROD31( iX[2], -iX[3], T[0], T[1], &oX1[2], &oX2[1] ); T+=step; + XPROD31( iX[4], -iX[5], T[0], T[1], &oX1[1], &oX2[2] ); T+=step; + XPROD31( iX[6], -iX[7], T[0], T[1], &oX1[0], &oX2[3] ); T+=step; + oX2+=4; + iX+=8; + }while(iX>1; + t1 = (*T++)>>1; + do{ + oX1-=4; + + t0 += (v0 = (*V++)>>1); + t1 += (v1 = (*V++)>>1); + XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); + v0 += (t0 = (*T++)>>1); + v1 += (t1 = (*T++)>>1); + XPROD31( iX[2], -iX[3], v0, v1, &oX1[2], &oX2[1] ); + t0 += (v0 = (*V++)>>1); + t1 += (v1 = (*V++)>>1); + XPROD31( iX[4], -iX[5], t0, t1, &oX1[1], &oX2[2] ); + v0 += (t0 = (*T++)>>1); + v1 += (t1 = (*T++)>>1); + XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); + + oX2+=4; + iX+=8; + }while(iX>2); + t1 += (q1 = (v1-t1)>>2); + XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] ); + t0 = v0-q0; + t1 = v1-q1; + XPROD31( iX[2], -iX[3], t0, t1, &oX1[2], &oX2[1] ); + + t0 = *T++; + t1 = *T++; + v0 += (q0 = (t0-v0)>>2); + v1 += (q1 = (t1-v1)>>2); + XPROD31( iX[4], -iX[5], v0, v1, &oX1[1], &oX2[2] ); + v0 = t0-q0; + v1 = t1-q1; + XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] ); + + oX2+=4; + iX+=8; + }while(iXoX2); + } +} + diff --git a/libmednahawk/src/tremor/mdct.h b/libmednahawk/src/tremor/mdct.h new file mode 100644 index 0000000000..d88d796aac --- /dev/null +++ b/libmednahawk/src/tremor/mdct.h @@ -0,0 +1,52 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: modified discrete cosine transform prototypes + + ********************************************************************/ + +#ifndef _OGG_mdct_H_ +#define _OGG_mdct_H_ + +#include "ivorbiscodec.h" +#include "misc.h" + +#define DATA_TYPE ogg_int32_t +#define REG_TYPE register ogg_int32_t + +#ifdef _LOW_ACCURACY_ +#define cPI3_8 (0x0062) +#define cPI2_8 (0x00b5) +#define cPI1_8 (0x00ed) +#else +#define cPI3_8 (0x30fbc54d) +#define cPI2_8 (0x5a82799a) +#define cPI1_8 (0x7641af3d) +#endif + +extern void mdct_forward(int n, DATA_TYPE *in, DATA_TYPE *out); +extern void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out); + +#endif + + + + + + + + + + + + diff --git a/libmednahawk/src/tremor/mdct_lookup.h b/libmednahawk/src/tremor/mdct_lookup.h new file mode 100644 index 0000000000..81f1ae66af --- /dev/null +++ b/libmednahawk/src/tremor/mdct_lookup.h @@ -0,0 +1,540 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: sin,cos lookup tables + + ********************************************************************/ + +#include "misc.h" + +/* {sin(2*i*PI/4096), cos(2*i*PI/4096)}, with i = 0 to 512 */ +static const LOOKUP_T sincos_lookup0[1026] = { + X(0x00000000), X(0x7fffffff), X(0x003243f5), X(0x7ffff621), + X(0x006487e3), X(0x7fffd886), X(0x0096cbc1), X(0x7fffa72c), + X(0x00c90f88), X(0x7fff6216), X(0x00fb5330), X(0x7fff0943), + X(0x012d96b1), X(0x7ffe9cb2), X(0x015fda03), X(0x7ffe1c65), + X(0x01921d20), X(0x7ffd885a), X(0x01c45ffe), X(0x7ffce093), + X(0x01f6a297), X(0x7ffc250f), X(0x0228e4e2), X(0x7ffb55ce), + X(0x025b26d7), X(0x7ffa72d1), X(0x028d6870), X(0x7ff97c18), + X(0x02bfa9a4), X(0x7ff871a2), X(0x02f1ea6c), X(0x7ff75370), + X(0x03242abf), X(0x7ff62182), X(0x03566a96), X(0x7ff4dbd9), + X(0x0388a9ea), X(0x7ff38274), X(0x03bae8b2), X(0x7ff21553), + X(0x03ed26e6), X(0x7ff09478), X(0x041f6480), X(0x7feeffe1), + X(0x0451a177), X(0x7fed5791), X(0x0483ddc3), X(0x7feb9b85), + X(0x04b6195d), X(0x7fe9cbc0), X(0x04e8543e), X(0x7fe7e841), + X(0x051a8e5c), X(0x7fe5f108), X(0x054cc7b1), X(0x7fe3e616), + X(0x057f0035), X(0x7fe1c76b), X(0x05b137df), X(0x7fdf9508), + X(0x05e36ea9), X(0x7fdd4eec), X(0x0615a48b), X(0x7fdaf519), + X(0x0647d97c), X(0x7fd8878e), X(0x067a0d76), X(0x7fd6064c), + X(0x06ac406f), X(0x7fd37153), X(0x06de7262), X(0x7fd0c8a3), + X(0x0710a345), X(0x7fce0c3e), X(0x0742d311), X(0x7fcb3c23), + X(0x077501be), X(0x7fc85854), X(0x07a72f45), X(0x7fc560cf), + X(0x07d95b9e), X(0x7fc25596), X(0x080b86c2), X(0x7fbf36aa), + X(0x083db0a7), X(0x7fbc040a), X(0x086fd947), X(0x7fb8bdb8), + X(0x08a2009a), X(0x7fb563b3), X(0x08d42699), X(0x7fb1f5fc), + X(0x09064b3a), X(0x7fae7495), X(0x09386e78), X(0x7faadf7c), + X(0x096a9049), X(0x7fa736b4), X(0x099cb0a7), X(0x7fa37a3c), + X(0x09cecf89), X(0x7f9faa15), X(0x0a00ece8), X(0x7f9bc640), + X(0x0a3308bd), X(0x7f97cebd), X(0x0a6522fe), X(0x7f93c38c), + X(0x0a973ba5), X(0x7f8fa4b0), X(0x0ac952aa), X(0x7f8b7227), + X(0x0afb6805), X(0x7f872bf3), X(0x0b2d7baf), X(0x7f82d214), + X(0x0b5f8d9f), X(0x7f7e648c), X(0x0b919dcf), X(0x7f79e35a), + X(0x0bc3ac35), X(0x7f754e80), X(0x0bf5b8cb), X(0x7f70a5fe), + X(0x0c27c389), X(0x7f6be9d4), X(0x0c59cc68), X(0x7f671a05), + X(0x0c8bd35e), X(0x7f62368f), X(0x0cbdd865), X(0x7f5d3f75), + X(0x0cefdb76), X(0x7f5834b7), X(0x0d21dc87), X(0x7f531655), + X(0x0d53db92), X(0x7f4de451), X(0x0d85d88f), X(0x7f489eaa), + X(0x0db7d376), X(0x7f434563), X(0x0de9cc40), X(0x7f3dd87c), + X(0x0e1bc2e4), X(0x7f3857f6), X(0x0e4db75b), X(0x7f32c3d1), + X(0x0e7fa99e), X(0x7f2d1c0e), X(0x0eb199a4), X(0x7f2760af), + X(0x0ee38766), X(0x7f2191b4), X(0x0f1572dc), X(0x7f1baf1e), + X(0x0f475bff), X(0x7f15b8ee), X(0x0f7942c7), X(0x7f0faf25), + X(0x0fab272b), X(0x7f0991c4), X(0x0fdd0926), X(0x7f0360cb), + X(0x100ee8ad), X(0x7efd1c3c), X(0x1040c5bb), X(0x7ef6c418), + X(0x1072a048), X(0x7ef05860), X(0x10a4784b), X(0x7ee9d914), + X(0x10d64dbd), X(0x7ee34636), X(0x11082096), X(0x7edc9fc6), + X(0x1139f0cf), X(0x7ed5e5c6), X(0x116bbe60), X(0x7ecf1837), + X(0x119d8941), X(0x7ec8371a), X(0x11cf516a), X(0x7ec14270), + X(0x120116d5), X(0x7eba3a39), X(0x1232d979), X(0x7eb31e78), + X(0x1264994e), X(0x7eabef2c), X(0x1296564d), X(0x7ea4ac58), + X(0x12c8106f), X(0x7e9d55fc), X(0x12f9c7aa), X(0x7e95ec1a), + X(0x132b7bf9), X(0x7e8e6eb2), X(0x135d2d53), X(0x7e86ddc6), + X(0x138edbb1), X(0x7e7f3957), X(0x13c0870a), X(0x7e778166), + X(0x13f22f58), X(0x7e6fb5f4), X(0x1423d492), X(0x7e67d703), + X(0x145576b1), X(0x7e5fe493), X(0x148715ae), X(0x7e57dea7), + X(0x14b8b17f), X(0x7e4fc53e), X(0x14ea4a1f), X(0x7e47985b), + X(0x151bdf86), X(0x7e3f57ff), X(0x154d71aa), X(0x7e37042a), + X(0x157f0086), X(0x7e2e9cdf), X(0x15b08c12), X(0x7e26221f), + X(0x15e21445), X(0x7e1d93ea), X(0x16139918), X(0x7e14f242), + X(0x16451a83), X(0x7e0c3d29), X(0x1676987f), X(0x7e0374a0), + X(0x16a81305), X(0x7dfa98a8), X(0x16d98a0c), X(0x7df1a942), + X(0x170afd8d), X(0x7de8a670), X(0x173c6d80), X(0x7ddf9034), + X(0x176dd9de), X(0x7dd6668f), X(0x179f429f), X(0x7dcd2981), + X(0x17d0a7bc), X(0x7dc3d90d), X(0x1802092c), X(0x7dba7534), + X(0x183366e9), X(0x7db0fdf8), X(0x1864c0ea), X(0x7da77359), + X(0x18961728), X(0x7d9dd55a), X(0x18c7699b), X(0x7d9423fc), + X(0x18f8b83c), X(0x7d8a5f40), X(0x192a0304), X(0x7d808728), + X(0x195b49ea), X(0x7d769bb5), X(0x198c8ce7), X(0x7d6c9ce9), + X(0x19bdcbf3), X(0x7d628ac6), X(0x19ef0707), X(0x7d58654d), + X(0x1a203e1b), X(0x7d4e2c7f), X(0x1a517128), X(0x7d43e05e), + X(0x1a82a026), X(0x7d3980ec), X(0x1ab3cb0d), X(0x7d2f0e2b), + X(0x1ae4f1d6), X(0x7d24881b), X(0x1b161479), X(0x7d19eebf), + X(0x1b4732ef), X(0x7d0f4218), X(0x1b784d30), X(0x7d048228), + X(0x1ba96335), X(0x7cf9aef0), X(0x1bda74f6), X(0x7ceec873), + X(0x1c0b826a), X(0x7ce3ceb2), X(0x1c3c8b8c), X(0x7cd8c1ae), + X(0x1c6d9053), X(0x7ccda169), X(0x1c9e90b8), X(0x7cc26de5), + X(0x1ccf8cb3), X(0x7cb72724), X(0x1d00843d), X(0x7cabcd28), + X(0x1d31774d), X(0x7ca05ff1), X(0x1d6265dd), X(0x7c94df83), + X(0x1d934fe5), X(0x7c894bde), X(0x1dc4355e), X(0x7c7da505), + X(0x1df5163f), X(0x7c71eaf9), X(0x1e25f282), X(0x7c661dbc), + X(0x1e56ca1e), X(0x7c5a3d50), X(0x1e879d0d), X(0x7c4e49b7), + X(0x1eb86b46), X(0x7c4242f2), X(0x1ee934c3), X(0x7c362904), + X(0x1f19f97b), X(0x7c29fbee), X(0x1f4ab968), X(0x7c1dbbb3), + X(0x1f7b7481), X(0x7c116853), X(0x1fac2abf), X(0x7c0501d2), + X(0x1fdcdc1b), X(0x7bf88830), X(0x200d888d), X(0x7bebfb70), + X(0x203e300d), X(0x7bdf5b94), X(0x206ed295), X(0x7bd2a89e), + X(0x209f701c), X(0x7bc5e290), X(0x20d0089c), X(0x7bb9096b), + X(0x21009c0c), X(0x7bac1d31), X(0x21312a65), X(0x7b9f1de6), + X(0x2161b3a0), X(0x7b920b89), X(0x219237b5), X(0x7b84e61f), + X(0x21c2b69c), X(0x7b77ada8), X(0x21f3304f), X(0x7b6a6227), + X(0x2223a4c5), X(0x7b5d039e), X(0x225413f8), X(0x7b4f920e), + X(0x22847de0), X(0x7b420d7a), X(0x22b4e274), X(0x7b3475e5), + X(0x22e541af), X(0x7b26cb4f), X(0x23159b88), X(0x7b190dbc), + X(0x2345eff8), X(0x7b0b3d2c), X(0x23763ef7), X(0x7afd59a4), + X(0x23a6887f), X(0x7aef6323), X(0x23d6cc87), X(0x7ae159ae), + X(0x24070b08), X(0x7ad33d45), X(0x243743fa), X(0x7ac50dec), + X(0x24677758), X(0x7ab6cba4), X(0x2497a517), X(0x7aa8766f), + X(0x24c7cd33), X(0x7a9a0e50), X(0x24f7efa2), X(0x7a8b9348), + X(0x25280c5e), X(0x7a7d055b), X(0x2558235f), X(0x7a6e648a), + X(0x2588349d), X(0x7a5fb0d8), X(0x25b84012), X(0x7a50ea47), + X(0x25e845b6), X(0x7a4210d8), X(0x26184581), X(0x7a332490), + X(0x26483f6c), X(0x7a24256f), X(0x26783370), X(0x7a151378), + X(0x26a82186), X(0x7a05eead), X(0x26d809a5), X(0x79f6b711), + X(0x2707ebc7), X(0x79e76ca7), X(0x2737c7e3), X(0x79d80f6f), + X(0x27679df4), X(0x79c89f6e), X(0x27976df1), X(0x79b91ca4), + X(0x27c737d3), X(0x79a98715), X(0x27f6fb92), X(0x7999dec4), + X(0x2826b928), X(0x798a23b1), X(0x2856708d), X(0x797a55e0), + X(0x288621b9), X(0x796a7554), X(0x28b5cca5), X(0x795a820e), + X(0x28e5714b), X(0x794a7c12), X(0x29150fa1), X(0x793a6361), + X(0x2944a7a2), X(0x792a37fe), X(0x29743946), X(0x7919f9ec), + X(0x29a3c485), X(0x7909a92d), X(0x29d34958), X(0x78f945c3), + X(0x2a02c7b8), X(0x78e8cfb2), X(0x2a323f9e), X(0x78d846fb), + X(0x2a61b101), X(0x78c7aba2), X(0x2a911bdc), X(0x78b6fda8), + X(0x2ac08026), X(0x78a63d11), X(0x2aefddd8), X(0x789569df), + X(0x2b1f34eb), X(0x78848414), X(0x2b4e8558), X(0x78738bb3), + X(0x2b7dcf17), X(0x786280bf), X(0x2bad1221), X(0x7851633b), + X(0x2bdc4e6f), X(0x78403329), X(0x2c0b83fa), X(0x782ef08b), + X(0x2c3ab2b9), X(0x781d9b65), X(0x2c69daa6), X(0x780c33b8), + X(0x2c98fbba), X(0x77fab989), X(0x2cc815ee), X(0x77e92cd9), + X(0x2cf72939), X(0x77d78daa), X(0x2d263596), X(0x77c5dc01), + X(0x2d553afc), X(0x77b417df), X(0x2d843964), X(0x77a24148), + X(0x2db330c7), X(0x7790583e), X(0x2de2211e), X(0x777e5cc3), + X(0x2e110a62), X(0x776c4edb), X(0x2e3fec8b), X(0x775a2e89), + X(0x2e6ec792), X(0x7747fbce), X(0x2e9d9b70), X(0x7735b6af), + X(0x2ecc681e), X(0x77235f2d), X(0x2efb2d95), X(0x7710f54c), + X(0x2f29ebcc), X(0x76fe790e), X(0x2f58a2be), X(0x76ebea77), + X(0x2f875262), X(0x76d94989), X(0x2fb5fab2), X(0x76c69647), + X(0x2fe49ba7), X(0x76b3d0b4), X(0x30133539), X(0x76a0f8d2), + X(0x3041c761), X(0x768e0ea6), X(0x30705217), X(0x767b1231), + X(0x309ed556), X(0x76680376), X(0x30cd5115), X(0x7654e279), + X(0x30fbc54d), X(0x7641af3d), X(0x312a31f8), X(0x762e69c4), + X(0x3158970e), X(0x761b1211), X(0x3186f487), X(0x7607a828), + X(0x31b54a5e), X(0x75f42c0b), X(0x31e39889), X(0x75e09dbd), + X(0x3211df04), X(0x75ccfd42), X(0x32401dc6), X(0x75b94a9c), + X(0x326e54c7), X(0x75a585cf), X(0x329c8402), X(0x7591aedd), + X(0x32caab6f), X(0x757dc5ca), X(0x32f8cb07), X(0x7569ca99), + X(0x3326e2c3), X(0x7555bd4c), X(0x3354f29b), X(0x75419de7), + X(0x3382fa88), X(0x752d6c6c), X(0x33b0fa84), X(0x751928e0), + X(0x33def287), X(0x7504d345), X(0x340ce28b), X(0x74f06b9e), + X(0x343aca87), X(0x74dbf1ef), X(0x3468aa76), X(0x74c7663a), + X(0x34968250), X(0x74b2c884), X(0x34c4520d), X(0x749e18cd), + X(0x34f219a8), X(0x7489571c), X(0x351fd918), X(0x74748371), + X(0x354d9057), X(0x745f9dd1), X(0x357b3f5d), X(0x744aa63f), + X(0x35a8e625), X(0x74359cbd), X(0x35d684a6), X(0x74208150), + X(0x36041ad9), X(0x740b53fb), X(0x3631a8b8), X(0x73f614c0), + X(0x365f2e3b), X(0x73e0c3a3), X(0x368cab5c), X(0x73cb60a8), + X(0x36ba2014), X(0x73b5ebd1), X(0x36e78c5b), X(0x73a06522), + X(0x3714f02a), X(0x738acc9e), X(0x37424b7b), X(0x73752249), + X(0x376f9e46), X(0x735f6626), X(0x379ce885), X(0x73499838), + X(0x37ca2a30), X(0x7333b883), X(0x37f76341), X(0x731dc70a), + X(0x382493b0), X(0x7307c3d0), X(0x3851bb77), X(0x72f1aed9), + X(0x387eda8e), X(0x72db8828), X(0x38abf0ef), X(0x72c54fc1), + X(0x38d8fe93), X(0x72af05a7), X(0x39060373), X(0x7298a9dd), + X(0x3932ff87), X(0x72823c67), X(0x395ff2c9), X(0x726bbd48), + X(0x398cdd32), X(0x72552c85), X(0x39b9bebc), X(0x723e8a20), + X(0x39e6975e), X(0x7227d61c), X(0x3a136712), X(0x7211107e), + X(0x3a402dd2), X(0x71fa3949), X(0x3a6ceb96), X(0x71e35080), + X(0x3a99a057), X(0x71cc5626), X(0x3ac64c0f), X(0x71b54a41), + X(0x3af2eeb7), X(0x719e2cd2), X(0x3b1f8848), X(0x7186fdde), + X(0x3b4c18ba), X(0x716fbd68), X(0x3b78a007), X(0x71586b74), + X(0x3ba51e29), X(0x71410805), X(0x3bd19318), X(0x7129931f), + X(0x3bfdfecd), X(0x71120cc5), X(0x3c2a6142), X(0x70fa74fc), + X(0x3c56ba70), X(0x70e2cbc6), X(0x3c830a50), X(0x70cb1128), + X(0x3caf50da), X(0x70b34525), X(0x3cdb8e09), X(0x709b67c0), + X(0x3d07c1d6), X(0x708378ff), X(0x3d33ec39), X(0x706b78e3), + X(0x3d600d2c), X(0x70536771), X(0x3d8c24a8), X(0x703b44ad), + X(0x3db832a6), X(0x7023109a), X(0x3de4371f), X(0x700acb3c), + X(0x3e10320d), X(0x6ff27497), X(0x3e3c2369), X(0x6fda0cae), + X(0x3e680b2c), X(0x6fc19385), X(0x3e93e950), X(0x6fa90921), + X(0x3ebfbdcd), X(0x6f906d84), X(0x3eeb889c), X(0x6f77c0b3), + X(0x3f1749b8), X(0x6f5f02b2), X(0x3f430119), X(0x6f463383), + X(0x3f6eaeb8), X(0x6f2d532c), X(0x3f9a5290), X(0x6f1461b0), + X(0x3fc5ec98), X(0x6efb5f12), X(0x3ff17cca), X(0x6ee24b57), + X(0x401d0321), X(0x6ec92683), X(0x40487f94), X(0x6eaff099), + X(0x4073f21d), X(0x6e96a99d), X(0x409f5ab6), X(0x6e7d5193), + X(0x40cab958), X(0x6e63e87f), X(0x40f60dfb), X(0x6e4a6e66), + X(0x4121589b), X(0x6e30e34a), X(0x414c992f), X(0x6e174730), + X(0x4177cfb1), X(0x6dfd9a1c), X(0x41a2fc1a), X(0x6de3dc11), + X(0x41ce1e65), X(0x6dca0d14), X(0x41f93689), X(0x6db02d29), + X(0x42244481), X(0x6d963c54), X(0x424f4845), X(0x6d7c3a98), + X(0x427a41d0), X(0x6d6227fa), X(0x42a5311b), X(0x6d48047e), + X(0x42d0161e), X(0x6d2dd027), X(0x42faf0d4), X(0x6d138afb), + X(0x4325c135), X(0x6cf934fc), X(0x4350873c), X(0x6cdece2f), + X(0x437b42e1), X(0x6cc45698), X(0x43a5f41e), X(0x6ca9ce3b), + X(0x43d09aed), X(0x6c8f351c), X(0x43fb3746), X(0x6c748b3f), + X(0x4425c923), X(0x6c59d0a9), X(0x4450507e), X(0x6c3f055d), + X(0x447acd50), X(0x6c242960), X(0x44a53f93), X(0x6c093cb6), + X(0x44cfa740), X(0x6bee3f62), X(0x44fa0450), X(0x6bd3316a), + X(0x452456bd), X(0x6bb812d1), X(0x454e9e80), X(0x6b9ce39b), + X(0x4578db93), X(0x6b81a3cd), X(0x45a30df0), X(0x6b66536b), + X(0x45cd358f), X(0x6b4af279), X(0x45f7526b), X(0x6b2f80fb), + X(0x4621647d), X(0x6b13fef5), X(0x464b6bbe), X(0x6af86c6c), + X(0x46756828), X(0x6adcc964), X(0x469f59b4), X(0x6ac115e2), + X(0x46c9405c), X(0x6aa551e9), X(0x46f31c1a), X(0x6a897d7d), + X(0x471cece7), X(0x6a6d98a4), X(0x4746b2bc), X(0x6a51a361), + X(0x47706d93), X(0x6a359db9), X(0x479a1d67), X(0x6a1987b0), + X(0x47c3c22f), X(0x69fd614a), X(0x47ed5be6), X(0x69e12a8c), + X(0x4816ea86), X(0x69c4e37a), X(0x48406e08), X(0x69a88c19), + X(0x4869e665), X(0x698c246c), X(0x48935397), X(0x696fac78), + X(0x48bcb599), X(0x69532442), X(0x48e60c62), X(0x69368bce), + X(0x490f57ee), X(0x6919e320), X(0x49389836), X(0x68fd2a3d), + X(0x4961cd33), X(0x68e06129), X(0x498af6df), X(0x68c387e9), + X(0x49b41533), X(0x68a69e81), X(0x49dd282a), X(0x6889a4f6), + X(0x4a062fbd), X(0x686c9b4b), X(0x4a2f2be6), X(0x684f8186), + X(0x4a581c9e), X(0x683257ab), X(0x4a8101de), X(0x68151dbe), + X(0x4aa9dba2), X(0x67f7d3c5), X(0x4ad2a9e2), X(0x67da79c3), + X(0x4afb6c98), X(0x67bd0fbd), X(0x4b2423be), X(0x679f95b7), + X(0x4b4ccf4d), X(0x67820bb7), X(0x4b756f40), X(0x676471c0), + X(0x4b9e0390), X(0x6746c7d8), X(0x4bc68c36), X(0x67290e02), + X(0x4bef092d), X(0x670b4444), X(0x4c177a6e), X(0x66ed6aa1), + X(0x4c3fdff4), X(0x66cf8120), X(0x4c6839b7), X(0x66b187c3), + X(0x4c9087b1), X(0x66937e91), X(0x4cb8c9dd), X(0x6675658c), + X(0x4ce10034), X(0x66573cbb), X(0x4d092ab0), X(0x66390422), + X(0x4d31494b), X(0x661abbc5), X(0x4d595bfe), X(0x65fc63a9), + X(0x4d8162c4), X(0x65ddfbd3), X(0x4da95d96), X(0x65bf8447), + X(0x4dd14c6e), X(0x65a0fd0b), X(0x4df92f46), X(0x65826622), + X(0x4e210617), X(0x6563bf92), X(0x4e48d0dd), X(0x6545095f), + X(0x4e708f8f), X(0x6526438f), X(0x4e984229), X(0x65076e25), + X(0x4ebfe8a5), X(0x64e88926), X(0x4ee782fb), X(0x64c99498), + X(0x4f0f1126), X(0x64aa907f), X(0x4f369320), X(0x648b7ce0), + X(0x4f5e08e3), X(0x646c59bf), X(0x4f857269), X(0x644d2722), + X(0x4faccfab), X(0x642de50d), X(0x4fd420a4), X(0x640e9386), + X(0x4ffb654d), X(0x63ef3290), X(0x50229da1), X(0x63cfc231), + X(0x5049c999), X(0x63b0426d), X(0x5070e92f), X(0x6390b34a), + X(0x5097fc5e), X(0x637114cc), X(0x50bf031f), X(0x635166f9), + X(0x50e5fd6d), X(0x6331a9d4), X(0x510ceb40), X(0x6311dd64), + X(0x5133cc94), X(0x62f201ac), X(0x515aa162), X(0x62d216b3), + X(0x518169a5), X(0x62b21c7b), X(0x51a82555), X(0x6292130c), + X(0x51ced46e), X(0x6271fa69), X(0x51f576ea), X(0x6251d298), + X(0x521c0cc2), X(0x62319b9d), X(0x524295f0), X(0x6211557e), + X(0x5269126e), X(0x61f1003f), X(0x528f8238), X(0x61d09be5), + X(0x52b5e546), X(0x61b02876), X(0x52dc3b92), X(0x618fa5f7), + X(0x53028518), X(0x616f146c), X(0x5328c1d0), X(0x614e73da), + X(0x534ef1b5), X(0x612dc447), X(0x537514c2), X(0x610d05b7), + X(0x539b2af0), X(0x60ec3830), X(0x53c13439), X(0x60cb5bb7), + X(0x53e73097), X(0x60aa7050), X(0x540d2005), X(0x60897601), + X(0x5433027d), X(0x60686ccf), X(0x5458d7f9), X(0x604754bf), + X(0x547ea073), X(0x60262dd6), X(0x54a45be6), X(0x6004f819), + X(0x54ca0a4b), X(0x5fe3b38d), X(0x54efab9c), X(0x5fc26038), + X(0x55153fd4), X(0x5fa0fe1f), X(0x553ac6ee), X(0x5f7f8d46), + X(0x556040e2), X(0x5f5e0db3), X(0x5585adad), X(0x5f3c7f6b), + X(0x55ab0d46), X(0x5f1ae274), X(0x55d05faa), X(0x5ef936d1), + X(0x55f5a4d2), X(0x5ed77c8a), X(0x561adcb9), X(0x5eb5b3a2), + X(0x56400758), X(0x5e93dc1f), X(0x566524aa), X(0x5e71f606), + X(0x568a34a9), X(0x5e50015d), X(0x56af3750), X(0x5e2dfe29), + X(0x56d42c99), X(0x5e0bec6e), X(0x56f9147e), X(0x5de9cc33), + X(0x571deefa), X(0x5dc79d7c), X(0x5742bc06), X(0x5da5604f), + X(0x57677b9d), X(0x5d8314b1), X(0x578c2dba), X(0x5d60baa7), + X(0x57b0d256), X(0x5d3e5237), X(0x57d5696d), X(0x5d1bdb65), + X(0x57f9f2f8), X(0x5cf95638), X(0x581e6ef1), X(0x5cd6c2b5), + X(0x5842dd54), X(0x5cb420e0), X(0x58673e1b), X(0x5c9170bf), + X(0x588b9140), X(0x5c6eb258), X(0x58afd6bd), X(0x5c4be5b0), + X(0x58d40e8c), X(0x5c290acc), X(0x58f838a9), X(0x5c0621b2), + X(0x591c550e), X(0x5be32a67), X(0x594063b5), X(0x5bc024f0), + X(0x59646498), X(0x5b9d1154), X(0x598857b2), X(0x5b79ef96), + X(0x59ac3cfd), X(0x5b56bfbd), X(0x59d01475), X(0x5b3381ce), + X(0x59f3de12), X(0x5b1035cf), X(0x5a1799d1), X(0x5aecdbc5), + X(0x5a3b47ab), X(0x5ac973b5), X(0x5a5ee79a), X(0x5aa5fda5), + X(0x5a82799a), X(0x5a82799a) + }; + + /* {sin((2*i+1)*PI/4096), cos((2*i+1)*PI/4096)}, with i = 0 to 511 */ +static const LOOKUP_T sincos_lookup1[1024] = { + X(0x001921fb), X(0x7ffffd88), X(0x004b65ee), X(0x7fffe9cb), + X(0x007da9d4), X(0x7fffc251), X(0x00afeda8), X(0x7fff8719), + X(0x00e23160), X(0x7fff3824), X(0x011474f6), X(0x7ffed572), + X(0x0146b860), X(0x7ffe5f03), X(0x0178fb99), X(0x7ffdd4d7), + X(0x01ab3e97), X(0x7ffd36ee), X(0x01dd8154), X(0x7ffc8549), + X(0x020fc3c6), X(0x7ffbbfe6), X(0x024205e8), X(0x7ffae6c7), + X(0x027447b0), X(0x7ff9f9ec), X(0x02a68917), X(0x7ff8f954), + X(0x02d8ca16), X(0x7ff7e500), X(0x030b0aa4), X(0x7ff6bcf0), + X(0x033d4abb), X(0x7ff58125), X(0x036f8a51), X(0x7ff4319d), + X(0x03a1c960), X(0x7ff2ce5b), X(0x03d407df), X(0x7ff1575d), + X(0x040645c7), X(0x7fefcca4), X(0x04388310), X(0x7fee2e30), + X(0x046abfb3), X(0x7fec7c02), X(0x049cfba7), X(0x7feab61a), + X(0x04cf36e5), X(0x7fe8dc78), X(0x05017165), X(0x7fe6ef1c), + X(0x0533ab20), X(0x7fe4ee06), X(0x0565e40d), X(0x7fe2d938), + X(0x05981c26), X(0x7fe0b0b1), X(0x05ca5361), X(0x7fde7471), + X(0x05fc89b8), X(0x7fdc247a), X(0x062ebf22), X(0x7fd9c0ca), + X(0x0660f398), X(0x7fd74964), X(0x06932713), X(0x7fd4be46), + X(0x06c5598a), X(0x7fd21f72), X(0x06f78af6), X(0x7fcf6ce8), + X(0x0729bb4e), X(0x7fcca6a7), X(0x075bea8c), X(0x7fc9ccb2), + X(0x078e18a7), X(0x7fc6df08), X(0x07c04598), X(0x7fc3dda9), + X(0x07f27157), X(0x7fc0c896), X(0x08249bdd), X(0x7fbd9fd0), + X(0x0856c520), X(0x7fba6357), X(0x0888ed1b), X(0x7fb7132b), + X(0x08bb13c5), X(0x7fb3af4e), X(0x08ed3916), X(0x7fb037bf), + X(0x091f5d06), X(0x7facac7f), X(0x09517f8f), X(0x7fa90d8e), + X(0x0983a0a7), X(0x7fa55aee), X(0x09b5c048), X(0x7fa1949e), + X(0x09e7de6a), X(0x7f9dbaa0), X(0x0a19fb04), X(0x7f99ccf4), + X(0x0a4c1610), X(0x7f95cb9a), X(0x0a7e2f85), X(0x7f91b694), + X(0x0ab0475c), X(0x7f8d8de1), X(0x0ae25d8d), X(0x7f895182), + X(0x0b147211), X(0x7f850179), X(0x0b4684df), X(0x7f809dc5), + X(0x0b7895f0), X(0x7f7c2668), X(0x0baaa53b), X(0x7f779b62), + X(0x0bdcb2bb), X(0x7f72fcb4), X(0x0c0ebe66), X(0x7f6e4a5e), + X(0x0c40c835), X(0x7f698461), X(0x0c72d020), X(0x7f64aabf), + X(0x0ca4d620), X(0x7f5fbd77), X(0x0cd6da2d), X(0x7f5abc8a), + X(0x0d08dc3f), X(0x7f55a7fa), X(0x0d3adc4e), X(0x7f507fc7), + X(0x0d6cda53), X(0x7f4b43f2), X(0x0d9ed646), X(0x7f45f47b), + X(0x0dd0d01f), X(0x7f409164), X(0x0e02c7d7), X(0x7f3b1aad), + X(0x0e34bd66), X(0x7f359057), X(0x0e66b0c3), X(0x7f2ff263), + X(0x0e98a1e9), X(0x7f2a40d2), X(0x0eca90ce), X(0x7f247ba5), + X(0x0efc7d6b), X(0x7f1ea2dc), X(0x0f2e67b8), X(0x7f18b679), + X(0x0f604faf), X(0x7f12b67c), X(0x0f923546), X(0x7f0ca2e7), + X(0x0fc41876), X(0x7f067bba), X(0x0ff5f938), X(0x7f0040f6), + X(0x1027d784), X(0x7ef9f29d), X(0x1059b352), X(0x7ef390ae), + X(0x108b8c9b), X(0x7eed1b2c), X(0x10bd6356), X(0x7ee69217), + X(0x10ef377d), X(0x7edff570), X(0x11210907), X(0x7ed94538), + X(0x1152d7ed), X(0x7ed28171), X(0x1184a427), X(0x7ecbaa1a), + X(0x11b66dad), X(0x7ec4bf36), X(0x11e83478), X(0x7ebdc0c6), + X(0x1219f880), X(0x7eb6aeca), X(0x124bb9be), X(0x7eaf8943), + X(0x127d7829), X(0x7ea85033), X(0x12af33ba), X(0x7ea1039b), + X(0x12e0ec6a), X(0x7e99a37c), X(0x1312a230), X(0x7e922fd6), + X(0x13445505), X(0x7e8aa8ac), X(0x137604e2), X(0x7e830dff), + X(0x13a7b1bf), X(0x7e7b5fce), X(0x13d95b93), X(0x7e739e1d), + X(0x140b0258), X(0x7e6bc8eb), X(0x143ca605), X(0x7e63e03b), + X(0x146e4694), X(0x7e5be40c), X(0x149fe3fc), X(0x7e53d462), + X(0x14d17e36), X(0x7e4bb13c), X(0x1503153a), X(0x7e437a9c), + X(0x1534a901), X(0x7e3b3083), X(0x15663982), X(0x7e32d2f4), + X(0x1597c6b7), X(0x7e2a61ed), X(0x15c95097), X(0x7e21dd73), + X(0x15fad71b), X(0x7e194584), X(0x162c5a3b), X(0x7e109a24), + X(0x165dd9f0), X(0x7e07db52), X(0x168f5632), X(0x7dff0911), + X(0x16c0cef9), X(0x7df62362), X(0x16f2443e), X(0x7ded2a47), + X(0x1723b5f9), X(0x7de41dc0), X(0x17552422), X(0x7ddafdce), + X(0x17868eb3), X(0x7dd1ca75), X(0x17b7f5a3), X(0x7dc883b4), + X(0x17e958ea), X(0x7dbf298d), X(0x181ab881), X(0x7db5bc02), + X(0x184c1461), X(0x7dac3b15), X(0x187d6c82), X(0x7da2a6c6), + X(0x18aec0db), X(0x7d98ff17), X(0x18e01167), X(0x7d8f4409), + X(0x19115e1c), X(0x7d85759f), X(0x1942a6f3), X(0x7d7b93da), + X(0x1973ebe6), X(0x7d719eba), X(0x19a52ceb), X(0x7d679642), + X(0x19d669fc), X(0x7d5d7a74), X(0x1a07a311), X(0x7d534b50), + X(0x1a38d823), X(0x7d4908d9), X(0x1a6a0929), X(0x7d3eb30f), + X(0x1a9b361d), X(0x7d3449f5), X(0x1acc5ef6), X(0x7d29cd8c), + X(0x1afd83ad), X(0x7d1f3dd6), X(0x1b2ea43a), X(0x7d149ad5), + X(0x1b5fc097), X(0x7d09e489), X(0x1b90d8bb), X(0x7cff1af5), + X(0x1bc1ec9e), X(0x7cf43e1a), X(0x1bf2fc3a), X(0x7ce94dfb), + X(0x1c240786), X(0x7cde4a98), X(0x1c550e7c), X(0x7cd333f3), + X(0x1c861113), X(0x7cc80a0f), X(0x1cb70f43), X(0x7cbcccec), + X(0x1ce80906), X(0x7cb17c8d), X(0x1d18fe54), X(0x7ca618f3), + X(0x1d49ef26), X(0x7c9aa221), X(0x1d7adb73), X(0x7c8f1817), + X(0x1dabc334), X(0x7c837ad8), X(0x1ddca662), X(0x7c77ca65), + X(0x1e0d84f5), X(0x7c6c06c0), X(0x1e3e5ee5), X(0x7c602fec), + X(0x1e6f342c), X(0x7c5445e9), X(0x1ea004c1), X(0x7c4848ba), + X(0x1ed0d09d), X(0x7c3c3860), X(0x1f0197b8), X(0x7c3014de), + X(0x1f325a0b), X(0x7c23de35), X(0x1f63178f), X(0x7c179467), + X(0x1f93d03c), X(0x7c0b3777), X(0x1fc4840a), X(0x7bfec765), + X(0x1ff532f2), X(0x7bf24434), X(0x2025dcec), X(0x7be5ade6), + X(0x205681f1), X(0x7bd9047c), X(0x208721f9), X(0x7bcc47fa), + X(0x20b7bcfe), X(0x7bbf7860), X(0x20e852f6), X(0x7bb295b0), + X(0x2118e3dc), X(0x7ba59fee), X(0x21496fa7), X(0x7b989719), + X(0x2179f64f), X(0x7b8b7b36), X(0x21aa77cf), X(0x7b7e4c45), + X(0x21daf41d), X(0x7b710a49), X(0x220b6b32), X(0x7b63b543), + X(0x223bdd08), X(0x7b564d36), X(0x226c4996), X(0x7b48d225), + X(0x229cb0d5), X(0x7b3b4410), X(0x22cd12bd), X(0x7b2da2fa), + X(0x22fd6f48), X(0x7b1feee5), X(0x232dc66d), X(0x7b1227d3), + X(0x235e1826), X(0x7b044dc7), X(0x238e646a), X(0x7af660c2), + X(0x23beab33), X(0x7ae860c7), X(0x23eeec78), X(0x7ada4dd8), + X(0x241f2833), X(0x7acc27f7), X(0x244f5e5c), X(0x7abdef25), + X(0x247f8eec), X(0x7aafa367), X(0x24afb9da), X(0x7aa144bc), + X(0x24dfdf20), X(0x7a92d329), X(0x250ffeb7), X(0x7a844eae), + X(0x25401896), X(0x7a75b74f), X(0x25702cb7), X(0x7a670d0d), + X(0x25a03b11), X(0x7a584feb), X(0x25d0439f), X(0x7a497feb), + X(0x26004657), X(0x7a3a9d0f), X(0x26304333), X(0x7a2ba75a), + X(0x26603a2c), X(0x7a1c9ece), X(0x26902b39), X(0x7a0d836d), + X(0x26c01655), X(0x79fe5539), X(0x26effb76), X(0x79ef1436), + X(0x271fda96), X(0x79dfc064), X(0x274fb3ae), X(0x79d059c8), + X(0x277f86b5), X(0x79c0e062), X(0x27af53a6), X(0x79b15435), + X(0x27df1a77), X(0x79a1b545), X(0x280edb23), X(0x79920392), + X(0x283e95a1), X(0x79823f20), X(0x286e49ea), X(0x797267f2), + X(0x289df7f8), X(0x79627e08), X(0x28cd9fc1), X(0x79528167), + X(0x28fd4140), X(0x79427210), X(0x292cdc6d), X(0x79325006), + X(0x295c7140), X(0x79221b4b), X(0x298bffb2), X(0x7911d3e2), + X(0x29bb87bc), X(0x790179cd), X(0x29eb0957), X(0x78f10d0f), + X(0x2a1a847b), X(0x78e08dab), X(0x2a49f920), X(0x78cffba3), + X(0x2a796740), X(0x78bf56f9), X(0x2aa8ced3), X(0x78ae9fb0), + X(0x2ad82fd2), X(0x789dd5cb), X(0x2b078a36), X(0x788cf94c), + X(0x2b36ddf7), X(0x787c0a36), X(0x2b662b0e), X(0x786b088c), + X(0x2b957173), X(0x7859f44f), X(0x2bc4b120), X(0x7848cd83), + X(0x2bf3ea0d), X(0x7837942b), X(0x2c231c33), X(0x78264849), + X(0x2c52478a), X(0x7814e9df), X(0x2c816c0c), X(0x780378f1), + X(0x2cb089b1), X(0x77f1f581), X(0x2cdfa071), X(0x77e05f91), + X(0x2d0eb046), X(0x77ceb725), X(0x2d3db928), X(0x77bcfc3f), + X(0x2d6cbb10), X(0x77ab2ee2), X(0x2d9bb5f6), X(0x77994f11), + X(0x2dcaa9d5), X(0x77875cce), X(0x2df996a3), X(0x7775581d), + X(0x2e287c5a), X(0x776340ff), X(0x2e575af3), X(0x77511778), + X(0x2e863267), X(0x773edb8b), X(0x2eb502ae), X(0x772c8d3a), + X(0x2ee3cbc1), X(0x771a2c88), X(0x2f128d99), X(0x7707b979), + X(0x2f41482e), X(0x76f5340e), X(0x2f6ffb7a), X(0x76e29c4b), + X(0x2f9ea775), X(0x76cff232), X(0x2fcd4c19), X(0x76bd35c7), + X(0x2ffbe95d), X(0x76aa670d), X(0x302a7f3a), X(0x76978605), + X(0x30590dab), X(0x768492b4), X(0x308794a6), X(0x76718d1c), + X(0x30b61426), X(0x765e7540), X(0x30e48c22), X(0x764b4b23), + X(0x3112fc95), X(0x76380ec8), X(0x31416576), X(0x7624c031), + X(0x316fc6be), X(0x76115f63), X(0x319e2067), X(0x75fdec60), + X(0x31cc7269), X(0x75ea672a), X(0x31fabcbd), X(0x75d6cfc5), + X(0x3228ff5c), X(0x75c32634), X(0x32573a3f), X(0x75af6a7b), + X(0x32856d5e), X(0x759b9c9b), X(0x32b398b3), X(0x7587bc98), + X(0x32e1bc36), X(0x7573ca75), X(0x330fd7e1), X(0x755fc635), + X(0x333debab), X(0x754bafdc), X(0x336bf78f), X(0x7537876c), + X(0x3399fb85), X(0x75234ce8), X(0x33c7f785), X(0x750f0054), + X(0x33f5eb89), X(0x74faa1b3), X(0x3423d78a), X(0x74e63108), + X(0x3451bb81), X(0x74d1ae55), X(0x347f9766), X(0x74bd199f), + X(0x34ad6b32), X(0x74a872e8), X(0x34db36df), X(0x7493ba34), + X(0x3508fa66), X(0x747eef85), X(0x3536b5be), X(0x746a12df), + X(0x356468e2), X(0x74552446), X(0x359213c9), X(0x744023bc), + X(0x35bfb66e), X(0x742b1144), X(0x35ed50c9), X(0x7415ece2), + X(0x361ae2d3), X(0x7400b69a), X(0x36486c86), X(0x73eb6e6e), + X(0x3675edd9), X(0x73d61461), X(0x36a366c6), X(0x73c0a878), + X(0x36d0d746), X(0x73ab2ab4), X(0x36fe3f52), X(0x73959b1b), + X(0x372b9ee3), X(0x737ff9ae), X(0x3758f5f2), X(0x736a4671), + X(0x37864477), X(0x73548168), X(0x37b38a6d), X(0x733eaa96), + X(0x37e0c7cc), X(0x7328c1ff), X(0x380dfc8d), X(0x7312c7a5), + X(0x383b28a9), X(0x72fcbb8c), X(0x38684c19), X(0x72e69db7), + X(0x389566d6), X(0x72d06e2b), X(0x38c278d9), X(0x72ba2cea), + X(0x38ef821c), X(0x72a3d9f7), X(0x391c8297), X(0x728d7557), + X(0x39497a43), X(0x7276ff0d), X(0x39766919), X(0x7260771b), + X(0x39a34f13), X(0x7249dd86), X(0x39d02c2a), X(0x72333251), + X(0x39fd0056), X(0x721c7580), X(0x3a29cb91), X(0x7205a716), + X(0x3a568dd4), X(0x71eec716), X(0x3a834717), X(0x71d7d585), + X(0x3aaff755), X(0x71c0d265), X(0x3adc9e86), X(0x71a9bdba), + X(0x3b093ca3), X(0x71929789), X(0x3b35d1a5), X(0x717b5fd3), + X(0x3b625d86), X(0x7164169d), X(0x3b8ee03e), X(0x714cbbeb), + X(0x3bbb59c7), X(0x71354fc0), X(0x3be7ca1a), X(0x711dd220), + X(0x3c143130), X(0x7106430e), X(0x3c408f03), X(0x70eea28e), + X(0x3c6ce38a), X(0x70d6f0a4), X(0x3c992ec0), X(0x70bf2d53), + X(0x3cc5709e), X(0x70a7589f), X(0x3cf1a91c), X(0x708f728b), + X(0x3d1dd835), X(0x70777b1c), X(0x3d49fde1), X(0x705f7255), + X(0x3d761a19), X(0x70475839), X(0x3da22cd7), X(0x702f2ccd), + X(0x3dce3614), X(0x7016f014), X(0x3dfa35c8), X(0x6ffea212), + X(0x3e262bee), X(0x6fe642ca), X(0x3e52187f), X(0x6fcdd241), + X(0x3e7dfb73), X(0x6fb5507a), X(0x3ea9d4c3), X(0x6f9cbd79), + X(0x3ed5a46b), X(0x6f841942), X(0x3f016a61), X(0x6f6b63d8), + X(0x3f2d26a0), X(0x6f529d40), X(0x3f58d921), X(0x6f39c57d), + X(0x3f8481dd), X(0x6f20dc92), X(0x3fb020ce), X(0x6f07e285), + X(0x3fdbb5ec), X(0x6eeed758), X(0x40074132), X(0x6ed5bb10), + X(0x4032c297), X(0x6ebc8db0), X(0x405e3a16), X(0x6ea34f3d), + X(0x4089a7a8), X(0x6e89ffb9), X(0x40b50b46), X(0x6e709f2a), + X(0x40e064ea), X(0x6e572d93), X(0x410bb48c), X(0x6e3daaf8), + X(0x4136fa27), X(0x6e24175c), X(0x416235b2), X(0x6e0a72c5), + X(0x418d6729), X(0x6df0bd35), X(0x41b88e84), X(0x6dd6f6b1), + X(0x41e3abbc), X(0x6dbd1f3c), X(0x420ebecb), X(0x6da336dc), + X(0x4239c7aa), X(0x6d893d93), X(0x4264c653), X(0x6d6f3365), + X(0x428fbabe), X(0x6d551858), X(0x42baa4e6), X(0x6d3aec6e), + X(0x42e584c3), X(0x6d20afac), X(0x43105a50), X(0x6d066215), + X(0x433b2585), X(0x6cec03af), X(0x4365e65b), X(0x6cd1947c), + X(0x43909ccd), X(0x6cb71482), X(0x43bb48d4), X(0x6c9c83c3), + X(0x43e5ea68), X(0x6c81e245), X(0x44108184), X(0x6c67300b), + X(0x443b0e21), X(0x6c4c6d1a), X(0x44659039), X(0x6c319975), + X(0x449007c4), X(0x6c16b521), X(0x44ba74bd), X(0x6bfbc021), + X(0x44e4d71c), X(0x6be0ba7b), X(0x450f2edb), X(0x6bc5a431), + X(0x45397bf4), X(0x6baa7d49), X(0x4563be60), X(0x6b8f45c7), + X(0x458df619), X(0x6b73fdae), X(0x45b82318), X(0x6b58a503), + X(0x45e24556), X(0x6b3d3bcb), X(0x460c5cce), X(0x6b21c208), + X(0x46366978), X(0x6b0637c1), X(0x46606b4e), X(0x6aea9cf8), + X(0x468a624a), X(0x6acef1b2), X(0x46b44e65), X(0x6ab335f4), + X(0x46de2f99), X(0x6a9769c1), X(0x470805df), X(0x6a7b8d1e), + X(0x4731d131), X(0x6a5fa010), X(0x475b9188), X(0x6a43a29a), + X(0x478546de), X(0x6a2794c1), X(0x47aef12c), X(0x6a0b7689), + X(0x47d8906d), X(0x69ef47f6), X(0x48022499), X(0x69d3090e), + X(0x482badab), X(0x69b6b9d3), X(0x48552b9b), X(0x699a5a4c), + X(0x487e9e64), X(0x697dea7b), X(0x48a805ff), X(0x69616a65), + X(0x48d16265), X(0x6944da10), X(0x48fab391), X(0x6928397e), + X(0x4923f97b), X(0x690b88b5), X(0x494d341e), X(0x68eec7b9), + X(0x49766373), X(0x68d1f68f), X(0x499f8774), X(0x68b5153a), + X(0x49c8a01b), X(0x689823bf), X(0x49f1ad61), X(0x687b2224), + X(0x4a1aaf3f), X(0x685e106c), X(0x4a43a5b0), X(0x6840ee9b), + X(0x4a6c90ad), X(0x6823bcb7), X(0x4a957030), X(0x68067ac3), + X(0x4abe4433), X(0x67e928c5), X(0x4ae70caf), X(0x67cbc6c0), + X(0x4b0fc99d), X(0x67ae54ba), X(0x4b387af9), X(0x6790d2b6), + X(0x4b6120bb), X(0x677340ba), X(0x4b89badd), X(0x67559eca), + X(0x4bb24958), X(0x6737ecea), X(0x4bdacc28), X(0x671a2b20), + X(0x4c034345), X(0x66fc596f), X(0x4c2baea9), X(0x66de77dc), + X(0x4c540e4e), X(0x66c0866d), X(0x4c7c622d), X(0x66a28524), + X(0x4ca4aa41), X(0x66847408), X(0x4ccce684), X(0x6666531d), + X(0x4cf516ee), X(0x66482267), X(0x4d1d3b7a), X(0x6629e1ec), + X(0x4d455422), X(0x660b91af), X(0x4d6d60df), X(0x65ed31b5), + X(0x4d9561ac), X(0x65cec204), X(0x4dbd5682), X(0x65b0429f), + X(0x4de53f5a), X(0x6591b38c), X(0x4e0d1c30), X(0x657314cf), + X(0x4e34ecfc), X(0x6554666d), X(0x4e5cb1b9), X(0x6535a86b), + X(0x4e846a60), X(0x6516dacd), X(0x4eac16eb), X(0x64f7fd98), + X(0x4ed3b755), X(0x64d910d1), X(0x4efb4b96), X(0x64ba147d), + X(0x4f22d3aa), X(0x649b08a0), X(0x4f4a4f89), X(0x647bed3f), + X(0x4f71bf2e), X(0x645cc260), X(0x4f992293), X(0x643d8806), + X(0x4fc079b1), X(0x641e3e38), X(0x4fe7c483), X(0x63fee4f8), + X(0x500f0302), X(0x63df7c4d), X(0x50363529), X(0x63c0043b), + X(0x505d5af1), X(0x63a07cc7), X(0x50847454), X(0x6380e5f6), + X(0x50ab814d), X(0x63613fcd), X(0x50d281d5), X(0x63418a50), + X(0x50f975e6), X(0x6321c585), X(0x51205d7b), X(0x6301f171), + X(0x5147388c), X(0x62e20e17), X(0x516e0715), X(0x62c21b7e), + X(0x5194c910), X(0x62a219aa), X(0x51bb7e75), X(0x628208a1), + X(0x51e22740), X(0x6261e866), X(0x5208c36a), X(0x6241b8ff), + X(0x522f52ee), X(0x62217a72), X(0x5255d5c5), X(0x62012cc2), + X(0x527c4bea), X(0x61e0cff5), X(0x52a2b556), X(0x61c06410), + X(0x52c91204), X(0x619fe918), X(0x52ef61ee), X(0x617f5f12), + X(0x5315a50e), X(0x615ec603), X(0x533bdb5d), X(0x613e1df0), + X(0x536204d7), X(0x611d66de), X(0x53882175), X(0x60fca0d2), + X(0x53ae3131), X(0x60dbcbd1), X(0x53d43406), X(0x60bae7e1), + X(0x53fa29ed), X(0x6099f505), X(0x542012e1), X(0x6078f344), + X(0x5445eedb), X(0x6057e2a2), X(0x546bbdd7), X(0x6036c325), + X(0x54917fce), X(0x601594d1), X(0x54b734ba), X(0x5ff457ad), + X(0x54dcdc96), X(0x5fd30bbc), X(0x5502775c), X(0x5fb1b104), + X(0x55280505), X(0x5f90478a), X(0x554d858d), X(0x5f6ecf53), + X(0x5572f8ed), X(0x5f4d4865), X(0x55985f20), X(0x5f2bb2c5), + X(0x55bdb81f), X(0x5f0a0e77), X(0x55e303e6), X(0x5ee85b82), + X(0x5608426e), X(0x5ec699e9), X(0x562d73b2), X(0x5ea4c9b3), + X(0x565297ab), X(0x5e82eae5), X(0x5677ae54), X(0x5e60fd84), + X(0x569cb7a8), X(0x5e3f0194), X(0x56c1b3a1), X(0x5e1cf71c), + X(0x56e6a239), X(0x5dfade20), X(0x570b8369), X(0x5dd8b6a7), + X(0x5730572e), X(0x5db680b4), X(0x57551d80), X(0x5d943c4e), + X(0x5779d65b), X(0x5d71e979), X(0x579e81b8), X(0x5d4f883b), + X(0x57c31f92), X(0x5d2d189a), X(0x57e7afe4), X(0x5d0a9a9a), + X(0x580c32a7), X(0x5ce80e41), X(0x5830a7d6), X(0x5cc57394), + X(0x58550f6c), X(0x5ca2ca99), X(0x58796962), X(0x5c801354), + X(0x589db5b3), X(0x5c5d4dcc), X(0x58c1f45b), X(0x5c3a7a05), + X(0x58e62552), X(0x5c179806), X(0x590a4893), X(0x5bf4a7d2), + X(0x592e5e19), X(0x5bd1a971), X(0x595265df), X(0x5bae9ce7), + X(0x59765fde), X(0x5b8b8239), X(0x599a4c12), X(0x5b68596d), + X(0x59be2a74), X(0x5b452288), X(0x59e1faff), X(0x5b21dd90), + X(0x5a05bdae), X(0x5afe8a8b), X(0x5a29727b), X(0x5adb297d), + X(0x5a4d1960), X(0x5ab7ba6c), X(0x5a70b258), X(0x5a943d5e), +}; + diff --git a/libmednahawk/src/tremor/misc.h b/libmednahawk/src/tremor/misc.h new file mode 100644 index 0000000000..92228fdcd8 --- /dev/null +++ b/libmednahawk/src/tremor/misc.h @@ -0,0 +1,252 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: miscellaneous math and prototypes + + ********************************************************************/ + +#ifndef _V_RANDOM_H_ +#define _V_RANDOM_H_ +#include "ivorbiscodec.h" +#include "os.h" + +#ifdef _LOW_ACCURACY_ +# define X(n) (((((n)>>22)+1)>>1) - ((((n)>>22)+1)>>9)) +# define LOOKUP_T const unsigned char +#else +# define X(n) (n) +# define LOOKUP_T const ogg_int32_t +#endif + +#include "asm_arm.h" +#include /* for abs() */ + +#ifndef _V_WIDE_MATH +#define _V_WIDE_MATH + +#ifndef _LOW_ACCURACY_ +/* 64 bit multiply */ + +#if !(defined WIN32 && defined WINCE) +#include +#endif + +#if BYTE_ORDER==LITTLE_ENDIAN +union magic { + struct { + ogg_int32_t lo; + ogg_int32_t hi; + } halves; + ogg_int64_t whole; +}; +#endif + +#if BYTE_ORDER==BIG_ENDIAN +union magic { + struct { + ogg_int32_t hi; + ogg_int32_t lo; + } halves; + ogg_int64_t whole; +}; +#endif + +STIN ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { + union magic magic; + magic.whole = (ogg_int64_t)x * y; + return magic.halves.hi; +} + +STIN ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { + return MULT32(x,y)<<1; +} + +STIN ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { + union magic magic; + magic.whole = (ogg_int64_t)x * y; + return ((ogg_uint32_t)(magic.halves.lo)>>15) | ((magic.halves.hi)<<17); +} + +#else +/* 32 bit multiply, more portable but less accurate */ + +/* + * Note: Precision is biased towards the first argument therefore ordering + * is important. Shift values were chosen for the best sound quality after + * many listening tests. + */ + +/* + * For MULT32 and MULT31: The second argument is always a lookup table + * value already preshifted from 31 to 8 bits. We therefore take the + * opportunity to save on text space and use unsigned char for those + * tables in this case. + */ + +STIN ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) { + return (x >> 9) * y; /* y preshifted >>23 */ +} + +STIN ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) { + return (x >> 8) * y; /* y preshifted >>23 */ +} + +STIN ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) { + return (x >> 6) * y; /* y preshifted >>9 */ +} + +#endif + +/* + * This should be used as a memory barrier, forcing all cached values in + * registers to wr writen back to memory. Might or might not be beneficial + * depending on the architecture and compiler. + */ +#define MB() + +/* + * The XPROD functions are meant to optimize the cross products found all + * over the place in mdct.c by forcing memory operation ordering to avoid + * unnecessary register reloads as soon as memory is being written to. + * However this is only beneficial on CPUs with a sane number of general + * purpose registers which exclude the Intel x86. On Intel, better let the + * compiler actually reload registers directly from original memory by using + * macros. + */ + +#ifdef __i386__ + +#define XPROD32(_a, _b, _t, _v, _x, _y) \ + { *(_x)=MULT32(_a,_t)+MULT32(_b,_v); \ + *(_y)=MULT32(_b,_t)-MULT32(_a,_v); } +#define XPROD31(_a, _b, _t, _v, _x, _y) \ + { *(_x)=MULT31(_a,_t)+MULT31(_b,_v); \ + *(_y)=MULT31(_b,_t)-MULT31(_a,_v); } +#define XNPROD31(_a, _b, _t, _v, _x, _y) \ + { *(_x)=MULT31(_a,_t)-MULT31(_b,_v); \ + *(_y)=MULT31(_b,_t)+MULT31(_a,_v); } + +#else + +STIN void XPROD32(ogg_int32_t a, ogg_int32_t b, + ogg_int32_t t, ogg_int32_t v, + ogg_int32_t *x, ogg_int32_t *y) +{ + *x = MULT32(a, t) + MULT32(b, v); + *y = MULT32(b, t) - MULT32(a, v); +} + +STIN void XPROD31(ogg_int32_t a, ogg_int32_t b, + ogg_int32_t t, ogg_int32_t v, + ogg_int32_t *x, ogg_int32_t *y) +{ + *x = MULT31(a, t) + MULT31(b, v); + *y = MULT31(b, t) - MULT31(a, v); +} + +STIN void XNPROD31(ogg_int32_t a, ogg_int32_t b, + ogg_int32_t t, ogg_int32_t v, + ogg_int32_t *x, ogg_int32_t *y) +{ + *x = MULT31(a, t) - MULT31(b, v); + *y = MULT31(b, t) + MULT31(a, v); +} + +#endif + +#endif + +#ifndef _V_CLIP_MATH +#define _V_CLIP_MATH + +STIN ogg_int32_t CLIP_TO_15(ogg_int32_t x) { + int ret=x; + ret-= ((x<=32767)-1)&(x-32767); + ret-= ((x>=-32768)-1)&(x+32768); + return(ret); +} + +#endif + +STIN ogg_int32_t VFLOAT_MULT(ogg_int32_t a,ogg_int32_t ap, + ogg_int32_t b,ogg_int32_t bp, + ogg_int32_t *p){ + if(a && b){ +#ifndef _LOW_ACCURACY_ + *p=ap+bp+32; + return MULT32(a,b); +#else + *p=ap+bp+31; + return (a>>15)*(b>>16); +#endif + }else + return 0; +} + +int _ilog(unsigned int); + +STIN ogg_int32_t VFLOAT_MULTI(ogg_int32_t a,ogg_int32_t ap, + ogg_int32_t i, + ogg_int32_t *p){ + + int ip=_ilog(abs(i))-31; + return VFLOAT_MULT(a,ap,i<<-ip,ip,p); +} + +STIN ogg_int32_t VFLOAT_ADD(ogg_int32_t a,ogg_int32_t ap, + ogg_int32_t b,ogg_int32_t bp, + ogg_int32_t *p){ + + if(!a){ + *p=bp; + return b; + }else if(!b){ + *p=ap; + return a; + } + + /* yes, this can leak a bit. */ + if(ap>bp){ + int shift=ap-bp+1; + *p=ap+1; + a>>=1; + if(shift<32){ + b=(b+(1<<(shift-1)))>>shift; + }else{ + b=0; + } + }else{ + int shift=bp-ap+1; + *p=bp+1; + b>>=1; + if(shift<32){ + a=(a+(1<<(shift-1)))>>shift; + }else{ + a=0; + } + } + + a+=b; + if((a&0xc0000000)==0xc0000000 || + (a&0xc0000000)==0){ + a<<=1; + (*p)--; + } + return(a); +} + +#endif + + + + diff --git a/libmednahawk/src/tremor/ogg.h b/libmednahawk/src/tremor/ogg.h new file mode 100644 index 0000000000..02fb8fbaae --- /dev/null +++ b/libmednahawk/src/tremor/ogg.h @@ -0,0 +1,210 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: toplevel libogg include + last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ + + ********************************************************************/ +#ifndef _OGG_H +#define _OGG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "os_types.h" + +typedef struct { + void *iov_base; + size_t iov_len; +} ogg_iovec_t; + +typedef struct { + long endbyte; + int endbit; + + unsigned char *buffer; + unsigned char *ptr; + long storage; +} oggpack_buffer; + +/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ + +typedef struct { + unsigned char *header; + long header_len; + unsigned char *body; + long body_len; +} ogg_page; + +/* ogg_stream_state contains the current encode/decode state of a logical + Ogg bitstream **********************************************************/ + +typedef struct { + unsigned char *body_data; /* bytes from packet bodies */ + long body_storage; /* storage elements allocated */ + long body_fill; /* elements stored; fill mark */ + long body_returned; /* elements of fill returned */ + + + int *lacing_vals; /* The values that will go to the segment table */ + ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact + this way, but it is simple coupled to the + lacing fifo */ + long lacing_storage; + long lacing_fill; + long lacing_packet; + long lacing_returned; + + unsigned char header[282]; /* working space for header encode */ + int header_fill; + + int e_o_s; /* set when we have buffered the last packet in the + logical bitstream */ + int b_o_s; /* set after we've written the initial page + of a logical bitstream */ + long serialno; + long pageno; + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a separate abstraction + layer) also knows about the gap */ + ogg_int64_t granulepos; + +} ogg_stream_state; + +/* ogg_packet is used to encapsulate the data and metadata belonging + to a single raw Ogg/Vorbis packet *************************************/ + +typedef struct { + unsigned char *packet; + long bytes; + long b_o_s; + long e_o_s; + + ogg_int64_t granulepos; + + ogg_int64_t packetno; /* sequence number for decode; the framing + knows where there's a hole in the data, + but we need coupling so that the codec + (which is in a separate abstraction + layer) also knows about the gap */ +} ogg_packet; + +typedef struct { + unsigned char *data; + int storage; + int fill; + int returned; + + int unsynced; + int headerbytes; + int bodybytes; +} ogg_sync_state; + +/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ + +extern void oggpack_writeinit(oggpack_buffer *b); +extern int oggpack_writecheck(oggpack_buffer *b); +extern void oggpack_writetrunc(oggpack_buffer *b,long bits); +extern void oggpack_writealign(oggpack_buffer *b); +extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpack_reset(oggpack_buffer *b); +extern void oggpack_writeclear(oggpack_buffer *b); +extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpack_look(oggpack_buffer *b,int bits); +extern long oggpack_look1(oggpack_buffer *b); +extern void oggpack_adv(oggpack_buffer *b,int bits); +extern void oggpack_adv1(oggpack_buffer *b); +extern long oggpack_read(oggpack_buffer *b,int bits); +extern long oggpack_read1(oggpack_buffer *b); +extern long oggpack_bytes(oggpack_buffer *b); +extern long oggpack_bits(oggpack_buffer *b); +extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); + +extern void oggpackB_writeinit(oggpack_buffer *b); +extern int oggpackB_writecheck(oggpack_buffer *b); +extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); +extern void oggpackB_writealign(oggpack_buffer *b); +extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); +extern void oggpackB_reset(oggpack_buffer *b); +extern void oggpackB_writeclear(oggpack_buffer *b); +extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); +extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); +extern long oggpackB_look(oggpack_buffer *b,int bits); +extern long oggpackB_look1(oggpack_buffer *b); +extern void oggpackB_adv(oggpack_buffer *b,int bits); +extern void oggpackB_adv1(oggpack_buffer *b); +extern long oggpackB_read(oggpack_buffer *b,int bits); +extern long oggpackB_read1(oggpack_buffer *b); +extern long oggpackB_bytes(oggpack_buffer *b); +extern long oggpackB_bits(oggpack_buffer *b); +extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); + +/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ + +extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); +extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, + int count, long e_o_s, ogg_int64_t granulepos); +extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill); +extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill); + +/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ + +extern int ogg_sync_init(ogg_sync_state *oy); +extern int ogg_sync_clear(ogg_sync_state *oy); +extern int ogg_sync_reset(ogg_sync_state *oy); +extern int ogg_sync_destroy(ogg_sync_state *oy); +extern int ogg_sync_check(ogg_sync_state *oy); + +extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); +extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); +extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); +extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); +extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); +extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); + +/* Ogg BITSTREAM PRIMITIVES: general ***************************/ + +extern int ogg_stream_init(ogg_stream_state *os,int serialno); +extern int ogg_stream_clear(ogg_stream_state *os); +extern int ogg_stream_reset(ogg_stream_state *os); +extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); +extern int ogg_stream_destroy(ogg_stream_state *os); +extern int ogg_stream_check(ogg_stream_state *os); +extern int ogg_stream_eos(ogg_stream_state *os); + +extern void ogg_page_checksum_set(ogg_page *og); + +extern int ogg_page_version(const ogg_page *og); +extern int ogg_page_continued(const ogg_page *og); +extern int ogg_page_bos(const ogg_page *og); +extern int ogg_page_eos(const ogg_page *og); +extern ogg_int64_t ogg_page_granulepos(const ogg_page *og); +extern int ogg_page_serialno(const ogg_page *og); +extern long ogg_page_pageno(const ogg_page *og); +extern int ogg_page_packets(const ogg_page *og); + +extern void ogg_packet_clear(ogg_packet *op); + + +#ifdef __cplusplus +} +#endif + +#endif /* _OGG_H */ diff --git a/libmednahawk/src/tremor/os.h b/libmednahawk/src/tremor/os.h new file mode 100644 index 0000000000..a43859eaec --- /dev/null +++ b/libmednahawk/src/tremor/os.h @@ -0,0 +1,64 @@ +#ifndef _OS_H +#define _OS_H +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: #ifdef jail to whip a few platforms into the UNIX ideal. + + ********************************************************************/ + +#include +#include "os_types.h" + +#ifndef _V_IFDEFJAIL_H_ +# define _V_IFDEFJAIL_H_ + +# ifdef __GNUC__ +# define STIN static __inline__ +# elif _WIN32 +# define STIN static __inline +# endif +#else +# define STIN static +#endif + +#ifndef M_PI +# define M_PI (3.1415926536f) +#endif + +#ifdef _WIN32 +# include +# define rint(x) (floor((x)+0.5f)) +# define NO_FLOAT_MATH_LIB +# define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b)) +# define LITTLE_ENDIAN 1 +# define BYTE_ORDER LITTLE_ENDIAN +#endif + +#ifdef HAVE_ALLOCA_H +# include +#endif + +#ifdef USE_MEMORY_H +# include +#endif + +#ifndef min +# define min(x,y) ((x)>(y)?(y):(x)) +#endif + +#ifndef max +# define max(x,y) ((x)<(y)?(y):(x)) +#endif + +#endif /* _OS_H */ diff --git a/libmednahawk/src/tremor/os_types.h b/libmednahawk/src/tremor/os_types.h new file mode 100644 index 0000000000..2de6303d6f --- /dev/null +++ b/libmednahawk/src/tremor/os_types.h @@ -0,0 +1,147 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: #ifdef jail to whip a few platforms into the UNIX ideal. + last mod: $Id: os_types.h 17712 2010-12-03 17:10:02Z xiphmont $ + + ********************************************************************/ +#ifndef _OS_TYPES_H +#define _OS_TYPES_H + +/* make it easy on the folks that want to compile the libs with a + different malloc than stdlib */ +#define _ogg_malloc malloc +#define _ogg_calloc calloc +#define _ogg_realloc realloc +#define _ogg_free free + +#if defined(_WIN32) + +# if defined(__CYGWIN__) +# include + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + typedef uint64_t ogg_uint64_t; +# elif defined(__MINGW32__) +# include + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + typedef unsigned long long ogg_uint64_t; +# elif defined(__MWERKS__) + typedef long long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; +# else + /* MSVC/Borland */ + typedef __int64 ogg_int64_t; + typedef __int32 ogg_int32_t; + typedef unsigned __int32 ogg_uint32_t; + typedef __int16 ogg_int16_t; + typedef unsigned __int16 ogg_uint16_t; +# endif + +#elif defined(__MACOS__) + +# include + typedef SInt16 ogg_int16_t; + typedef UInt16 ogg_uint16_t; + typedef SInt32 ogg_int32_t; + typedef UInt32 ogg_uint32_t; + typedef SInt64 ogg_int64_t; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined(__HAIKU__) + + /* Haiku */ +# include + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(__BEOS__) + + /* Be */ +# include + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short ogg_int16_t; + typedef int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long ogg_int64_t; + +#elif defined(R5900) + + /* PS2 EE */ + typedef long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned ogg_uint32_t; + typedef short ogg_int16_t; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#elif defined(__TMS320C6X__) + + /* TI C64x compiler */ + typedef signed short ogg_int16_t; + typedef unsigned short ogg_uint16_t; + typedef signed int ogg_int32_t; + typedef unsigned int ogg_uint32_t; + typedef long long int ogg_int64_t; + +#else + +# include "config_types.h" + +#endif + +#endif /* _OS_TYPES_H */ diff --git a/libmednahawk/src/tremor/registry.c b/libmednahawk/src/tremor/registry.c new file mode 100644 index 0000000000..1dc57bcc2b --- /dev/null +++ b/libmednahawk/src/tremor/registry.c @@ -0,0 +1,50 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: registry for floor, res backends and channel mappings + + ********************************************************************/ + +#include "ivorbiscodec.h" +#include "codec_internal.h" +#include "registry.h" +#include "misc.h" + + +/* seems like major overkill now; the backend numbers will grow into + the infrastructure soon enough */ + +extern vorbis_func_floor floor0_exportbundle; +extern vorbis_func_floor floor1_exportbundle; +extern vorbis_func_residue residue0_exportbundle; +extern vorbis_func_residue residue1_exportbundle; +extern vorbis_func_residue residue2_exportbundle; +extern vorbis_func_mapping mapping0_exportbundle; + +vorbis_func_floor *_floor_P[]={ + &floor0_exportbundle, + &floor1_exportbundle, +}; + +vorbis_func_residue *_residue_P[]={ + &residue0_exportbundle, + &residue1_exportbundle, + &residue2_exportbundle, +}; + +vorbis_func_mapping *_mapping_P[]={ + &mapping0_exportbundle, +}; + + + diff --git a/libmednahawk/src/tremor/registry.h b/libmednahawk/src/tremor/registry.h new file mode 100644 index 0000000000..3d7f887390 --- /dev/null +++ b/libmednahawk/src/tremor/registry.h @@ -0,0 +1,40 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: registry for time, floor, res backends and channel mappings + + ********************************************************************/ + +#ifndef _V_REG_H_ +#define _V_REG_H_ + +#define VI_TRANSFORMB 1 +#define VI_WINDOWB 1 +#define VI_TIMEB 1 +#define VI_FLOORB 2 +#define VI_RESB 3 +#define VI_MAPB 1 + +#include "backends.h" + +#if defined(_WIN32) && defined(VORBISDLL_IMPORT) +# define EXTERN __declspec(dllimport) extern +#else +# define EXTERN extern +#endif + +EXTERN vorbis_func_floor *_floor_P[]; +EXTERN vorbis_func_residue *_residue_P[]; +EXTERN vorbis_func_mapping *_mapping_P[]; + +#endif diff --git a/libmednahawk/src/tremor/res012.c b/libmednahawk/src/tremor/res012.c new file mode 100644 index 0000000000..28ca679405 --- /dev/null +++ b/libmednahawk/src/tremor/res012.c @@ -0,0 +1,374 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: residue backend 0, 1 and 2 implementation + + ********************************************************************/ + +#include +#include +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codec_internal.h" +#include "registry.h" +#include "codebook.h" +#include "misc.h" +#include "os.h" +#include "block.h" + +typedef struct { + vorbis_info_residue0 *info; + int map; + + int parts; + int stages; + codebook *fullbooks; + codebook *phrasebook; + codebook ***partbooks; + + int partvals; + int **decodemap; + +} vorbis_look_residue0; + +void res0_free_info(vorbis_info_residue *i){ + vorbis_info_residue0 *info=(vorbis_info_residue0 *)i; + if(info){ + memset(info,0,sizeof(*info)); + _ogg_free(info); + } +} + +void res0_free_look(vorbis_look_residue *i){ + int j; + if(i){ + + vorbis_look_residue0 *look=(vorbis_look_residue0 *)i; + + for(j=0;jparts;j++) + if(look->partbooks[j])_ogg_free(look->partbooks[j]); + _ogg_free(look->partbooks); + for(j=0;jpartvals;j++) + _ogg_free(look->decodemap[j]); + _ogg_free(look->decodemap); + + memset(look,0,sizeof(*look)); + _ogg_free(look); + } +} + +static int ilog(unsigned int v){ + int ret=0; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +static int icount(unsigned int v){ + int ret=0; + while(v){ + ret+=v&1; + v>>=1; + } + return(ret); +} + +/* vorbis_info is for range checking */ +vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){ + int j,acc=0; + vorbis_info_residue0 *info=(vorbis_info_residue0 *)_ogg_calloc(1,sizeof(*info)); + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + + info->begin=oggpack_read(opb,24); + info->end=oggpack_read(opb,24); + info->grouping=oggpack_read(opb,24)+1; + info->partitions=oggpack_read(opb,6)+1; + info->groupbook=oggpack_read(opb,8); + + /* check for premature EOP */ + if(info->groupbook<0)goto errout; + + for(j=0;jpartitions;j++){ + int cascade=oggpack_read(opb,3); + int cflag=oggpack_read(opb,1); + if(cflag<0) goto errout; + if(cflag){ + int c=oggpack_read(opb,5); + if(c<0) goto errout; + cascade|=(c<<3); + } + info->secondstages[j]=cascade; + + acc+=icount(cascade); + } + for(j=0;jbooklist[j]=book; + } + + if(info->groupbook>=ci->books)goto errout; + for(j=0;jbooklist[j]>=ci->books)goto errout; + if(ci->book_param[info->booklist[j]]->maptype==0)goto errout; + } + + /* verify the phrasebook is not specifying an impossible or + inconsistent partitioning scheme. */ + /* modify the phrasebook ranging check from r16327; an early beta + encoder had a bug where it used an oversized phrasebook by + accident. These files should continue to be playable, but don't + allow an exploit */ + { + int entries = ci->book_param[info->groupbook]->entries; + int dim = ci->book_param[info->groupbook]->dim; + int partvals = 1; + if (dim<1) goto errout; + while(dim>0){ + partvals *= info->partitions; + if(partvals > entries) goto errout; + dim--; + } + info->partvals = partvals; + } + + return(info); + errout: + res0_free_info(info); + return(NULL); +} + +vorbis_look_residue *res0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm, + vorbis_info_residue *vr){ + vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr; + vorbis_look_residue0 *look=(vorbis_look_residue0 *)_ogg_calloc(1,sizeof(*look)); + codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup; + + int j,k,acc=0; + int dim; + int maxstage=0; + look->info=info; + look->map=vm->mapping; + + look->parts=info->partitions; + look->fullbooks=ci->fullbooks; + look->phrasebook=ci->fullbooks+info->groupbook; + dim=look->phrasebook->dim; + + look->partbooks=(codebook ***)_ogg_calloc(look->parts,sizeof(*look->partbooks)); + + for(j=0;jparts;j++){ + int stages=ilog(info->secondstages[j]); + if(stages){ + if(stages>maxstage)maxstage=stages; + look->partbooks[j]=(codebook **)_ogg_calloc(stages,sizeof(*look->partbooks[j])); + for(k=0;ksecondstages[j]&(1<partbooks[j][k]=ci->fullbooks+info->booklist[acc++]; +#ifdef TRAIN_RES + look->training_data[k][j]=calloc(look->partbooks[j][k]->entries, + sizeof(***look->training_data)); +#endif + } + } + } + + look->partvals=look->parts; + for(j=1;jpartvals*=look->parts; + look->stages=maxstage; + look->decodemap=(int **)_ogg_malloc(look->partvals*sizeof(*look->decodemap)); + for(j=0;jpartvals;j++){ + long val=j; + long mult=look->partvals/look->parts; + look->decodemap[j]=(int *)_ogg_malloc(dim*sizeof(*look->decodemap[j])); + for(k=0;kparts; + look->decodemap[j][k]=deco; + } + } + + return(look); +} + + +/* a truncated packet here just means 'stop working'; it's not an error */ +static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl, + ogg_int32_t **in,int ch, + long (*decodepart)(codebook *, ogg_int32_t *, + oggpack_buffer *,int,int)){ + + long i,j,k,l,s; + vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; + vorbis_info_residue0 *info=look->info; + + /* move all this setup out later */ + int samples_per_partition=info->grouping; + int partitions_per_word=look->phrasebook->dim; + int max=vb->pcmend>>1; + int end=(info->endend:max); + int n=end-info->begin; + + if(n>0){ + int partvals=n/samples_per_partition; + int partwords=(partvals+partitions_per_word-1)/partitions_per_word; + int ***partword=(int ***)alloca(ch*sizeof(*partword)); + + for(j=0;jstages;s++){ + + /* each loop decodes on partition codeword containing + partitions_pre_word partitions */ + for(i=0,l=0;iphrasebook,&vb->opb); + if(temp==-1 || temp>=info->partvals)goto eopbreak; + partword[j][l]=look->decodemap[temp]; + if(partword[j][l]==NULL)goto errout; + } + } + + /* now we decode residual values for the partitions */ + for(k=0;kbegin+i*samples_per_partition; + if(info->secondstages[partword[j][l][k]]&(1<partbooks[partword[j][l][k]][s]; + if(stagebook){ + if(decodepart(stagebook,in[j]+offset,&vb->opb, + samples_per_partition,-8)==-1)goto eopbreak; + } + } + } + } + } + } + errout: + eopbreak: + return(0); +} + +int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl, + ogg_int32_t **in,int *nonzero,int ch){ + int i,used=0; + for(i=0;iinfo; + + /* move all this setup out later */ + int samples_per_partition=info->grouping; + int partitions_per_word=look->phrasebook->dim; + int max=(vb->pcmend*ch)>>1; + int end=(info->endend:max); + int n=end-info->begin; + + if(n>0){ + + int partvals=n/samples_per_partition; + int partwords=(partvals+partitions_per_word-1)/partitions_per_word; + int **partword=(int **)_vorbis_block_alloc(vb,partwords*sizeof(*partword)); + int beginoff=info->begin/ch; + + for(i=0;istages;s++){ + for(i=0,l=0;iphrasebook,&vb->opb); + if(temp==-1 || temp>=info->partvals)goto eopbreak; + partword[l]=look->decodemap[temp]; + if(partword[l]==NULL)goto errout; + } + + /* now we decode residual values for the partitions */ + for(k=0;ksecondstages[partword[l][k]]&(1<partbooks[partword[l][k]][s]; + + if(stagebook){ + if(vorbis_book_decodevv_add(stagebook,in, + i*samples_per_partition+beginoff,ch, + &vb->opb, + samples_per_partition,-8)==-1) + goto eopbreak; + } + } + } + } + } + errout: + eopbreak: + return(0); +} + + +vorbis_func_residue residue0_exportbundle={ + &res0_unpack, + &res0_look, + &res0_free_info, + &res0_free_look, + &res0_inverse +}; + +vorbis_func_residue residue1_exportbundle={ + &res0_unpack, + &res0_look, + &res0_free_info, + &res0_free_look, + &res1_inverse +}; + +vorbis_func_residue residue2_exportbundle={ + &res0_unpack, + &res0_look, + &res0_free_info, + &res0_free_look, + &res2_inverse +}; diff --git a/libmednahawk/src/tremor/sharedbook.c b/libmednahawk/src/tremor/sharedbook.c new file mode 100644 index 0000000000..07c1438ef5 --- /dev/null +++ b/libmednahawk/src/tremor/sharedbook.c @@ -0,0 +1,447 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: basic shared codebook operations + + ********************************************************************/ + +#include +#include +#include +#include "ogg.h" +#include "misc.h" +#include "ivorbiscodec.h" +#include "codebook.h" + +/**** pack/unpack helpers ******************************************/ +int _ilog(unsigned int v){ + int ret=0; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +/* 32 bit float (not IEEE; nonnormalized mantissa + + biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm + Why not IEEE? It's just not that important here. */ + +#define VQ_FEXP 10 +#define VQ_FMAN 21 +#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */ + +static ogg_int32_t _float32_unpack(long val,int *point){ + long mant=val&0x1fffff; + int sign=val&0x80000000; + long exp =(val&0x7fe00000L)>>VQ_FMAN; + + exp-=(VQ_FMAN-1)+VQ_FEXP_BIAS; + + if(mant){ + while(!(mant&0x40000000)){ + mant<<=1; + exp-=1; + } + + if(sign)mant= -mant; + }else{ + sign=0; + exp=-9999; + } + + *point=exp; + return mant; +} + +/* given a list of word lengths, generate a list of codewords. Works + for length ordered or unordered, always assigns the lowest valued + codewords first. Extended to handle unused entries (length 0) */ +ogg_uint32_t *_make_words(long *l,long n,long sparsecount){ + long i,j,count=0; + ogg_uint32_t marker[33]; + ogg_uint32_t *r=(ogg_uint32_t *)_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r)); + memset(marker,0,sizeof(marker)); + + for(i=0;i0){ + ogg_uint32_t entry=marker[length]; + + /* when we claim a node for an entry, we also claim the nodes + below it (pruning off the imagined tree that may have dangled + from it) as well as blocking the use of any nodes directly + above for leaves */ + + /* update ourself */ + if(length<32 && (entry>>length)){ + /* error condition; the lengths must specify an overpopulated tree */ + _ogg_free(r); + return(NULL); + } + r[count++]=entry; + + /* Look to see if the next shorter marker points to the node + above. if so, update it and repeat. */ + { + for(j=length;j>0;j--){ + + if(marker[j]&1){ + /* have to jump branches */ + if(j==1) + marker[1]++; + else + marker[j]=marker[j-1]<<1; + break; /* invariant says next upper marker would already + have been moved if it was on the same path */ + } + marker[j]++; + } + } + + /* prune the tree; the implicit invariant says all the longer + markers were dangling from our just-taken node. Dangle them + from our *new* node. */ + for(j=length+1;j<33;j++) + if((marker[j]>>1) == entry){ + entry=marker[j]; + marker[j]=marker[j-1]<<1; + }else + break; + }else + if(sparsecount==0)count++; + } + + /* sanity check the huffman tree; an underpopulated tree must be + rejected. The only exception is the one-node pseudo-nil tree, + which appears to be underpopulated because the tree doesn't + really exist; there's only one possible 'codeword' or zero bits, + but the above tree-gen code doesn't mark that. */ + if(sparsecount != 1){ + for(i=1;i<33;i++) + if(marker[i] & (0xffffffffUL>>(32-i))){ + _ogg_free(r); + return(NULL); + } + } + + /* bitreverse the words because our bitwise packer/unpacker is LSb + endian */ + for(i=0,count=0;i>j)&1; + } + + if(sparsecount){ + if(l[i]) + r[count++]=temp; + }else + r[count++]=temp; + } + + return(r); +} + +/* there might be a straightforward one-line way to do the below + that's portable and totally safe against roundoff, but I haven't + thought of it. Therefore, we opt on the side of caution */ +long _book_maptype1_quantvals(const static_codebook *b){ + /* get us a starting hint, we'll polish it below */ + int bits=_ilog(b->entries); + int vals=b->entries>>((bits-1)*(b->dim-1)/b->dim); + + while(1){ + long acc=1; + long acc1=1; + int i; + for(i=0;idim;i++){ + acc*=vals; + acc1*=vals+1; + } + if(acc<=b->entries && acc1>b->entries){ + return(vals); + }else{ + if(acc>b->entries){ + vals--; + }else{ + vals++; + } + } + } +} + +/* different than what _book_unquantize does for mainline: + we repack the book in a fixed point format that shares the same + binary point. Upon first use, we can shift point if needed */ + +/* we need to deal with two map types: in map type 1, the values are + generated algorithmically (each column of the vector counts through + the values in the quant vector). in map type 2, all the values came + in in an explicit list. Both value lists must be unpacked */ + +ogg_int32_t *_book_unquantize(const static_codebook *b,int n,int *sparsemap, + int *maxpoint){ + long j,k,count=0; + if(b->maptype==1 || b->maptype==2){ + int quantvals; + int minpoint,delpoint; + ogg_int32_t mindel=_float32_unpack(b->q_min,&minpoint); + ogg_int32_t delta=_float32_unpack(b->q_delta,&delpoint); + ogg_int32_t *r=(ogg_int32_t *)_ogg_calloc(n*b->dim,sizeof(*r)); + int *rp=(int *)_ogg_calloc(n*b->dim,sizeof(*rp)); + + *maxpoint=minpoint; + + /* maptype 1 and 2 both use a quantized value vector, but + different sizes */ + switch(b->maptype){ + case 1: + /* most of the time, entries%dimensions == 0, but we need to be + well defined. We define that the possible vales at each + scalar is values == entries/dim. If entries%dim != 0, we'll + have 'too few' values (values*dimentries;j++){ + if((sparsemap && b->lengthlist[j]) || !sparsemap){ + ogg_int32_t last=0; + int lastpoint=0; + int indexdiv=1; + for(k=0;kdim;k++){ + int index= (j/indexdiv)%quantvals; + int point=0; + int val=VFLOAT_MULTI(delta,delpoint, + abs(b->quantlist[index]),&point); + + val=VFLOAT_ADD(mindel,minpoint,val,point,&point); + val=VFLOAT_ADD(last,lastpoint,val,point,&point); + + if(b->q_sequencep){ + last=val; + lastpoint=point; + } + + if(sparsemap){ + r[sparsemap[count]*b->dim+k]=val; + rp[sparsemap[count]*b->dim+k]=point; + }else{ + r[count*b->dim+k]=val; + rp[count*b->dim+k]=point; + } + if(*maxpointentries;j++){ + if((sparsemap && b->lengthlist[j]) || !sparsemap){ + ogg_int32_t last=0; + int lastpoint=0; + + for(k=0;kdim;k++){ + int point=0; + int val=VFLOAT_MULTI(delta,delpoint, + abs(b->quantlist[j*b->dim+k]),&point); + + val=VFLOAT_ADD(mindel,minpoint,val,point,&point); + val=VFLOAT_ADD(last,lastpoint,val,point,&point); + + if(b->q_sequencep){ + last=val; + lastpoint=point; + } + + if(sparsemap){ + r[sparsemap[count]*b->dim+k]=val; + rp[sparsemap[count]*b->dim+k]=point; + }else{ + r[count*b->dim+k]=val; + rp[count*b->dim+k]=point; + } + if(*maxpointdim;j++) + if(rp[j]<*maxpoint) + r[j]>>=*maxpoint-rp[j]; + + _ogg_free(rp); + return(r); + } + return(NULL); +} + +void vorbis_staticbook_destroy(static_codebook *b){ + if(b->quantlist)_ogg_free(b->quantlist); + if(b->lengthlist)_ogg_free(b->lengthlist); + memset(b,0,sizeof(*b)); + _ogg_free(b); +} + +void vorbis_book_clear(codebook *b){ + /* static book is not cleared; we're likely called on the lookup and + the static codebook belongs to the info struct */ + if(b->valuelist)_ogg_free(b->valuelist); + if(b->codelist)_ogg_free(b->codelist); + + if(b->dec_index)_ogg_free(b->dec_index); + if(b->dec_codelengths)_ogg_free(b->dec_codelengths); + if(b->dec_firsttable)_ogg_free(b->dec_firsttable); + + memset(b,0,sizeof(*b)); +} + +static ogg_uint32_t bitreverse(ogg_uint32_t x){ + x= ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL); + x= ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL); + x= ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL); + x= ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL); + return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL); +} + +static int sort32a(const void *a,const void *b){ + return (**(ogg_uint32_t **)a>**(ogg_uint32_t **)b)- + (**(ogg_uint32_t **)a<**(ogg_uint32_t **)b); +} + +/* decode codebook arrangement is more heavily optimized than encode */ +int vorbis_book_init_decode(codebook *c,const static_codebook *s){ + int i,j,n=0,tabn; + int *sortindex; + memset(c,0,sizeof(*c)); + + /* count actually used entries */ + for(i=0;ientries;i++) + if(s->lengthlist[i]>0) + n++; + + c->entries=s->entries; + c->used_entries=n; + c->dim=s->dim; + + if(n>0){ + /* two different remappings go on here. + + First, we collapse the likely sparse codebook down only to + actually represented values/words. This collapsing needs to be + indexed as map-valueless books are used to encode original entry + positions as integers. + + Second, we reorder all vectors, including the entry index above, + by sorted bitreversed codeword to allow treeless decode. */ + + /* perform sort */ + ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries); + ogg_uint32_t **codep=(ogg_uint32_t **)alloca(sizeof(*codep)*n); + + if(codes==NULL)goto err_out; + + for(i=0;icodelist=(ogg_uint32_t *)_ogg_malloc(n*sizeof(*c->codelist)); + /* the index is a reverse index */ + for(i=0;icodelist[sortindex[i]]=codes[i]; + _ogg_free(codes); + + + + c->valuelist=_book_unquantize(s,n,sortindex,&c->binarypoint); + c->dec_index=(int *)_ogg_malloc(n*sizeof(*c->dec_index)); + + for(n=0,i=0;ientries;i++) + if(s->lengthlist[i]>0) + c->dec_index[sortindex[n++]]=i; + + c->dec_codelengths=(char *)_ogg_malloc(n*sizeof(*c->dec_codelengths)); + for(n=0,i=0;ientries;i++) + if(s->lengthlist[i]>0) + c->dec_codelengths[sortindex[n++]]=s->lengthlist[i]; + + c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */ + if(c->dec_firsttablen<5)c->dec_firsttablen=5; + if(c->dec_firsttablen>8)c->dec_firsttablen=8; + + tabn=1<dec_firsttablen; + c->dec_firsttable=(ogg_uint32_t *)_ogg_calloc(tabn,sizeof(*c->dec_firsttable)); + c->dec_maxlength=0; + + for(i=0;idec_maxlengthdec_codelengths[i]) + c->dec_maxlength=c->dec_codelengths[i]; + if(c->dec_codelengths[i]<=c->dec_firsttablen){ + ogg_uint32_t orig=bitreverse(c->codelist[i]); + for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++) + c->dec_firsttable[orig|(j<dec_codelengths[i])]=i+1; + } + } + + /* now fill in 'unused' entries in the firsttable with hi/lo search + hints for the non-direct-hits */ + { + ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen); + long lo=0,hi=0; + + for(i=0;idec_firsttablen); + if(c->dec_firsttable[bitreverse(word)]==0){ + while((lo+1)codelist[lo+1]<=word)lo++; + while( hi=(c->codelist[hi]&mask))hi++; + + /* we only actually have 15 bits per hint to play with here. + In order to overflow gracefully (nothing breaks, efficiency + just drops), encode as the difference from the extremes. */ + { + unsigned long loval=lo; + unsigned long hival=n-hi; + + if(loval>0x7fff)loval=0x7fff; + if(hival>0x7fff)hival=0x7fff; + c->dec_firsttable[bitreverse(word)]= + 0x80000000UL | (loval<<15) | hival; + } + } + } + } + } + + return(0); + err_out: + vorbis_book_clear(c); + return(-1); +} + diff --git a/libmednahawk/src/tremor/synthesis.c b/libmednahawk/src/tremor/synthesis.c new file mode 100644 index 0000000000..25dbc9e9ec --- /dev/null +++ b/libmednahawk/src/tremor/synthesis.c @@ -0,0 +1,131 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2003 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: single-block PCM synthesis + last mod: $Id: synthesis.c,v 1.4 2003/03/29 03:07:21 xiphmont Exp $ + + ********************************************************************/ + +#include +#include "ogg.h" +#include "ivorbiscodec.h" +#include "codec_internal.h" +#include "registry.h" +#include "misc.h" +#include "block.h" + +static int _vorbis_synthesis1(vorbis_block *vb,ogg_packet *op,int decodep){ + vorbis_dsp_state *vd= vb ? vb->vd : 0; + private_state *b= vd ? (private_state *)vd->backend_state: 0; + vorbis_info *vi= vd ? vd->vi : 0; + codec_setup_info *ci= vi ? (codec_setup_info *)vi->codec_setup : 0; + oggpack_buffer *opb=vb ? &vb->opb : 0; + int type,mode,i; + + if (!vd || !b || !vi || !ci || !opb) { + return OV_EBADPACKET; + } + + /* first things first. Make sure decode is ready */ + _vorbis_block_ripcord(vb); + oggpack_readinit(opb,op->packet,op->bytes); + + /* Check the packet type */ + if(oggpack_read(opb,1)!=0){ + /* Oops. This is not an audio data packet */ + return(OV_ENOTAUDIO); + } + + /* read our mode and pre/post windowsize */ + mode=oggpack_read(opb,b->modebits); + if(mode==-1)return(OV_EBADPACKET); + + vb->mode=mode; + if(!ci->mode_param[mode]){ + return(OV_EBADPACKET); + } + + vb->W=ci->mode_param[mode]->blockflag; + if(vb->W){ + vb->lW=oggpack_read(opb,1); + vb->nW=oggpack_read(opb,1); + if(vb->nW==-1) return(OV_EBADPACKET); + }else{ + vb->lW=0; + vb->nW=0; + } + + /* more setup */ + vb->granulepos=op->granulepos; + vb->sequence=op->packetno-3; /* first block is third packet */ + vb->eofflag=op->e_o_s; + + if(decodep){ + /* alloc pcm passback storage */ + vb->pcmend=ci->blocksizes[vb->W]; + vb->pcm=(ogg_int32_t **)_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels); + for(i=0;ichannels;i++) + vb->pcm[i]=(ogg_int32_t *)_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i])); + + /* unpack_header enforces range checking */ + type=ci->map_type[ci->mode_param[mode]->mapping]; + + return(_mapping_P[type]->inverse(vb,b->mode[mode])); + }else{ + /* no pcm */ + vb->pcmend=0; + vb->pcm=NULL; + + return(0); + } +} + +int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){ + return _vorbis_synthesis1(vb,op,1); +} + +/* used to track pcm position without actually performing decode. + Useful for sequential 'fast forward' */ +int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op){ + return _vorbis_synthesis1(vb,op,0); +} + +long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){ + codec_setup_info *ci=(codec_setup_info *)vi->codec_setup; + oggpack_buffer opb; + int mode; + + oggpack_readinit(&opb,op->packet,op->bytes); + + /* Check the packet type */ + if(oggpack_read(&opb,1)!=0){ + /* Oops. This is not an audio data packet */ + return(OV_ENOTAUDIO); + } + + { + int modebits=0; + int v=ci->modes; + while(v>1){ + modebits++; + v>>=1; + } + + /* read our mode and pre/post windowsize */ + mode=oggpack_read(&opb,modebits); + } + if(mode==-1)return(OV_EBADPACKET); + return(ci->blocksizes[ci->mode_param[mode]->blockflag]); +} + + diff --git a/libmednahawk/src/tremor/vorbisfile.c b/libmednahawk/src/tremor/vorbisfile.c new file mode 100644 index 0000000000..b41388514a --- /dev/null +++ b/libmednahawk/src/tremor/vorbisfile.c @@ -0,0 +1,1884 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + last mod: $Id: vorbisfile.c,v 1.6 2003/03/30 23:40:56 xiphmont Exp $ + + ********************************************************************/ + +#include +#include +#include +#include +#include + +#include "ivorbiscodec.h" +#include "ivorbisfile.h" + +#include "os.h" +#include "misc.h" + +/* A 'chained bitstream' is a Vorbis bitstream that contains more than + one logical bitstream arranged end to end (the only form of Ogg + multiplexing allowed in a Vorbis bitstream; grouping [parallel + multiplexing] is not allowed in Vorbis) */ + +/* A Vorbis file can be played beginning to end (streamed) without + worrying ahead of time about chaining (see decoder_example.c). If + we have the whole file, however, and want random access + (seeking/scrubbing) or desire to know the total length/time of a + file, we need to account for the possibility of chaining. */ + +/* We can handle things a number of ways; we can determine the entire + bitstream structure right off the bat, or find pieces on demand. + This example determines and caches structure for the entire + bitstream, but builds a virtual decoder on the fly when moving + between links in the chain. */ + +/* There are also different ways to implement seeking. Enough + information exists in an Ogg bitstream to seek to + sample-granularity positions in the output. Or, one can seek by + picking some portion of the stream roughly in the desired area if + we only want coarse navigation through the stream. */ + +/************************************************************************* + * Many, many internal helpers. The intention is not to be confusing; + * rampant duplication and monolithic function implementation would be + * harder to understand anyway. The high level functions are last. Begin + * grokking near the end of the file */ + + +/* read a little more data from the file/pipe into the ogg_sync framer */ +static long _get_data(OggVorbis_File *vf){ + errno=0; + if(!(vf->callbacks.read_func))return(-1); + if(vf->datasource){ + char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE); + long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource); + if(bytes>0)ogg_sync_wrote(&vf->oy,bytes); + if(bytes==0 && errno)return(-1); + return(bytes); + }else + return(0); +} + +/* save a tiny smidge of verbosity to make the code more readable */ +static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){ + if(vf->datasource){ + if(!(vf->callbacks.seek_func)|| + (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1) + return OV_EREAD; + vf->offset=offset; + ogg_sync_reset(&vf->oy); + }else{ + /* shouldn't happen unless someone writes a broken callback */ + return OV_EFAULT; + } + return 0; +} + +/* The read/seek functions track absolute position within the stream */ + +/* from the head of the stream, get the next page. boundary specifies + if the function is allowed to fetch more data from the stream (and + how much) or only use internally buffered data. + + boundary: -1) unbounded search + 0) read no additional data; use cached only + n) search for a new page beginning for n bytes + + return: <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD) + n) found a page at absolute offset n */ + +static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og, + ogg_int64_t boundary){ + if(boundary>0)boundary+=vf->offset; + while(1){ + long more; + + if(boundary>0 && vf->offset>=boundary)return(OV_FALSE); + more=ogg_sync_pageseek(&vf->oy,og); + + if(more<0){ + /* skipped n bytes */ + vf->offset-=more; + }else{ + if(more==0){ + /* send more paramedics */ + if(!boundary)return(OV_FALSE); + { + long ret=_get_data(vf); + if(ret==0)return(OV_EOF); + if(ret<0)return(OV_EREAD); + } + }else{ + /* got a page. Return the offset at the page beginning, + advance the internal offset past the page end */ + ogg_int64_t ret=vf->offset; + vf->offset+=more; + return(ret); + + } + } + } +} + +/* find the latest page beginning before the current stream cursor + position. Much dirtier than the above as Ogg doesn't have any + backward search linkage. no 'readp' as it will certainly have to + read. */ +/* returns offset or OV_EREAD, OV_FAULT */ +static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){ + ogg_int64_t begin=vf->offset; + ogg_int64_t end=begin; + ogg_int64_t ret; + ogg_int64_t offset=-1; + + while(offset==-1){ + begin-=CHUNKSIZE; + if(begin<0) + begin=0; + + ret=_seek_helper(vf,begin); + if(ret)return(ret); + + while(vf->offsetoffset); + if(ret==OV_EREAD)return(OV_EREAD); + if(ret<0){ + break; + }else{ + offset=ret; + } + } + } + + /* In a fully compliant, non-multiplexed stream, we'll still be + holding the last page. In multiplexed (or noncompliant streams), + we will probably have to re-read the last page we saw */ + if(og->header_len==0){ + ret=_seek_helper(vf,offset); + if(ret)return(ret); + + ret=_get_next_page(vf,og,CHUNKSIZE); + if(ret<0) + /* this shouldn't be possible */ + return(OV_EFAULT); + } + + return(offset); +} + +static void _add_serialno(ogg_page *og,ogg_uint32_t **serialno_list, int *n){ + ogg_uint32_t s = ogg_page_serialno(og); + (*n)++; + + if(*serialno_list){ + *serialno_list = _ogg_realloc(*serialno_list, sizeof(**serialno_list)*(*n)); + }else{ + *serialno_list = _ogg_malloc(sizeof(**serialno_list)); + } + + (*serialno_list)[(*n)-1] = s; +} + +/* returns nonzero if found */ +static int _lookup_serialno(ogg_uint32_t s, ogg_uint32_t *serialno_list, int n){ + if(serialno_list){ + while(n--){ + if(*serialno_list == s) return 1; + serialno_list++; + } + } + return 0; +} + +static int _lookup_page_serialno(ogg_page *og, ogg_uint32_t *serialno_list, int n){ + ogg_uint32_t s = ogg_page_serialno(og); + return _lookup_serialno(s,serialno_list,n); +} + +/* performs the same search as _get_prev_page, but prefers pages of + the specified serial number. If a page of the specified serialno is + spotted during the seek-back-and-read-forward, it will return the + info of last page of the matching serial number instead of the very + last page. If no page of the specified serialno is seen, it will + return the info of last page and alter *serialno. */ +static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, + ogg_uint32_t *serial_list, int serial_n, + int *serialno, ogg_int64_t *granpos){ + ogg_page og; + ogg_int64_t begin=vf->offset; + ogg_int64_t end=begin; + ogg_int64_t ret; + + ogg_int64_t prefoffset=-1; + ogg_int64_t offset=-1; + ogg_int64_t ret_serialno=-1; + ogg_int64_t ret_gran=-1; + + while(offset==-1){ + begin-=CHUNKSIZE; + if(begin<0) + begin=0; + + ret=_seek_helper(vf,begin); + if(ret)return(ret); + + while(vf->offsetoffset); + if(ret==OV_EREAD)return(OV_EREAD); + if(ret<0){ + break; + }else{ + ret_serialno=ogg_page_serialno(&og); + ret_gran=ogg_page_granulepos(&og); + offset=ret; + + if((ogg_uint32_t)ret_serialno == *serialno){ + prefoffset=ret; + *granpos=ret_gran; + } + + if(!_lookup_serialno((ogg_uint32_t)ret_serialno,serial_list,serial_n)){ + /* we fell off the end of the link, which means we seeked + back too far and shouldn't have been looking in that link + to begin with. If we found the preferred serial number, + forget that we saw it. */ + prefoffset=-1; + } + } + } + } + + /* we're not interested in the page... just the serialno and granpos. */ + if(prefoffset>=0)return(prefoffset); + + *serialno = ret_serialno; + *granpos = ret_gran; + return(offset); + +} + +/* uses the local ogg_stream storage in vf; this is important for + non-streaming input sources */ +static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc, + ogg_uint32_t **serialno_list, int *serialno_n, + ogg_page *og_ptr){ + ogg_page og; + ogg_packet op; + int i,ret; + int allbos=0; + + if(!og_ptr){ + ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE); + if(llret==OV_EREAD)return(OV_EREAD); + if(llret<0)return(OV_ENOTVORBIS); + og_ptr=&og; + } + + vorbis_info_init(vi); + vorbis_comment_init(vc); + vf->ready_state=OPENED; + + /* extract the serialnos of all BOS pages + the first set of vorbis + headers we see in the link */ + + while(ogg_page_bos(og_ptr)){ + if(serialno_list){ + if(_lookup_page_serialno(og_ptr,*serialno_list,*serialno_n)){ + /* a dupe serialnumber in an initial header packet set == invalid stream */ + if(*serialno_list)_ogg_free(*serialno_list); + *serialno_list=0; + *serialno_n=0; + ret=OV_EBADHEADER; + goto bail_header; + } + + _add_serialno(og_ptr,serialno_list,serialno_n); + } + + if(vf->ready_stateos,ogg_page_serialno(og_ptr)); + ogg_stream_pagein(&vf->os,og_ptr); + + if(ogg_stream_packetout(&vf->os,&op) > 0 && + vorbis_synthesis_idheader(&op)){ + /* vorbis header; continue setup */ + vf->ready_state=STREAMSET; + if((ret=vorbis_synthesis_headerin(vi,vc,&op))){ + ret=OV_EBADHEADER; + goto bail_header; + } + } + } + + /* get next page */ + { + ogg_int64_t llret=_get_next_page(vf,og_ptr,CHUNKSIZE); + if(llret==OV_EREAD){ + ret=OV_EREAD; + goto bail_header; + } + if(llret<0){ + ret=OV_ENOTVORBIS; + goto bail_header; + } + + /* if this page also belongs to our vorbis stream, submit it and break */ + if(vf->ready_state==STREAMSET && + vf->os.serialno == ogg_page_serialno(og_ptr)){ + ogg_stream_pagein(&vf->os,og_ptr); + break; + } + } + } + + if(vf->ready_state!=STREAMSET){ + ret = OV_ENOTVORBIS; + goto bail_header; + } + + while(1){ + + i=0; + while(i<2){ /* get a page loop */ + + while(i<2){ /* get a packet loop */ + + int result=ogg_stream_packetout(&vf->os,&op); + if(result==0)break; + if(result==-1){ + ret=OV_EBADHEADER; + goto bail_header; + } + + if((ret=vorbis_synthesis_headerin(vi,vc,&op))) + goto bail_header; + + i++; + } + + while(i<2){ + if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){ + ret=OV_EBADHEADER; + goto bail_header; + } + + /* if this page belongs to the correct stream, go parse it */ + if(vf->os.serialno == ogg_page_serialno(og_ptr)){ + ogg_stream_pagein(&vf->os,og_ptr); + break; + } + + /* if we never see the final vorbis headers before the link + ends, abort */ + if(ogg_page_bos(og_ptr)){ + if(allbos){ + ret = OV_EBADHEADER; + goto bail_header; + }else + allbos=1; + } + + /* otherwise, keep looking */ + } + } + + return 0; + } + + bail_header: + vorbis_info_clear(vi); + vorbis_comment_clear(vc); + vf->ready_state=OPENED; + + return ret; +} + +/* Starting from current cursor position, get initial PCM offset of + next page. Consumes the page in the process without decoding + audio, however this is only called during stream parsing upon + seekable open. */ +static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){ + ogg_page og; + ogg_int64_t accumulated=0; + long lastblock=-1; + int result; + int serialno = vf->os.serialno; + + while(1){ + ogg_packet op; + if(_get_next_page(vf,&og,-1)<0) + break; /* should not be possible unless the file is truncated/mangled */ + + if(ogg_page_bos(&og)) break; + if(ogg_page_serialno(&og)!=serialno) continue; + + /* count blocksizes of all frames in the page */ + ogg_stream_pagein(&vf->os,&og); + while((result=ogg_stream_packetout(&vf->os,&op))){ + if(result>0){ /* ignore holes */ + long thisblock=vorbis_packet_blocksize(vi,&op); + if(lastblock!=-1) + accumulated+=(lastblock+thisblock)>>2; + lastblock=thisblock; + } + } + + if(ogg_page_granulepos(&og)!=-1){ + /* pcm offset of last packet on the first audio page */ + accumulated= ogg_page_granulepos(&og)-accumulated; + break; + } + } + + /* less than zero? This is a stream with samples trimmed off + the beginning, a normal occurrence; set the offset to zero */ + if(accumulated<0)accumulated=0; + + return accumulated; +} + +/* finds each bitstream link one at a time using a bisection search + (has to begin by knowing the offset of the lb's initial page). + Recurses for each link so it can alloc the link storage after + finding them all, then unroll and fill the cache at the same time */ +static int _bisect_forward_serialno(OggVorbis_File *vf, + ogg_int64_t begin, + ogg_int64_t searched, + ogg_int64_t end, + ogg_int64_t endgran, + int endserial, + ogg_uint32_t *currentno_list, + int currentnos, + long m){ + ogg_int64_t pcmoffset; + ogg_int64_t dataoffset=searched; + ogg_int64_t endsearched=end; + ogg_int64_t next=end; + ogg_int64_t searchgran=-1; + ogg_page og; + ogg_int64_t ret,last; + int serialno = vf->os.serialno; + + /* invariants: + we have the headers and serialnos for the link beginning at 'begin' + we have the offset and granpos of the last page in the file (potentially + not a page we care about) + */ + + /* Is the last page in our list of current serialnumbers? */ + if(_lookup_serialno(endserial,currentno_list,currentnos)){ + + /* last page is in the starting serialno list, so we've bisected + down to (or just started with) a single link. Now we need to + find the last vorbis page belonging to the first vorbis stream + for this link. */ + + while(endserial != serialno){ + endserial = serialno; + vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&endserial,&endgran); + } + + vf->links=m+1; + if(vf->offsets)_ogg_free(vf->offsets); + if(vf->serialnos)_ogg_free(vf->serialnos); + if(vf->dataoffsets)_ogg_free(vf->dataoffsets); + + vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets)); + vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi)); + vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc)); + vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos)); + vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets)); + vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths)); + + vf->offsets[m+1]=end; + vf->offsets[m]=begin; + vf->pcmlengths[m*2+1]=endgran; + + }else{ + + ogg_uint32_t *next_serialno_list=NULL; + int next_serialnos=0; + vorbis_info vi; + vorbis_comment vc; + + /* the below guards against garbage seperating the last and + first pages of two links. */ + while(searchedoffset){ + ret=_seek_helper(vf,bisect); + if(ret)return(ret); + } + + last=_get_next_page(vf,&og,-1); + if(last==OV_EREAD)return(OV_EREAD); + if(last<0 || !_lookup_page_serialno(&og,currentno_list,currentnos)){ + endsearched=bisect; + if(last>=0)next=last; + }else{ + searched=vf->offset; + } + } + + /* Bisection point found */ + + /* for the time being, fetch end PCM offset the simple way */ + { + int testserial = serialno+1; + vf->offset = next; + while(testserial != serialno){ + testserial = serialno; + vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&testserial,&searchgran); + } + } + + if(vf->offset!=next){ + ret=_seek_helper(vf,next); + if(ret)return(ret); + } + + ret=_fetch_headers(vf,&vi,&vc,&next_serialno_list,&next_serialnos,NULL); + if(ret)return(ret); + serialno = vf->os.serialno; + dataoffset = vf->offset; + + /* this will consume a page, however the next bistection always + starts with a raw seek */ + pcmoffset = _initial_pcmoffset(vf,&vi); + + ret=_bisect_forward_serialno(vf,next,vf->offset,end,endgran,endserial, + next_serialno_list,next_serialnos,m+1); + if(ret)return(ret); + + if(next_serialno_list)_ogg_free(next_serialno_list); + + vf->offsets[m+1]=next; + vf->serialnos[m+1]=serialno; + vf->dataoffsets[m+1]=dataoffset; + + vf->vi[m+1]=vi; + vf->vc[m+1]=vc; + + vf->pcmlengths[m*2+1]=searchgran; + vf->pcmlengths[m*2+2]=pcmoffset; + vf->pcmlengths[m*2+3]-=pcmoffset; + + } + return(0); +} + +static int _make_decode_ready(OggVorbis_File *vf){ + if(vf->ready_state>STREAMSET)return 0; + if(vf->ready_stateseekable){ + if(vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link)) + return OV_EBADLINK; + }else{ + if(vorbis_synthesis_init(&vf->vd,vf->vi)) + return OV_EBADLINK; + } + vorbis_block_init(&vf->vd,&vf->vb); + vf->ready_state=INITSET; + vf->bittrack=0; + vf->samptrack=0; + return 0; +} + +static int _open_seekable2(OggVorbis_File *vf){ + ogg_int64_t dataoffset=vf->dataoffsets[0],end,endgran=-1; + int endserial=vf->os.serialno; + int serialno=vf->os.serialno; + + /* we're partially open and have a first link header state in + storage in vf */ + + /* fetch initial PCM offset */ + ogg_int64_t pcmoffset = _initial_pcmoffset(vf,vf->vi); + + /* we can seek, so set out learning all about this file */ + if(vf->callbacks.seek_func && vf->callbacks.tell_func){ + (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END); + vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource); + }else{ + vf->offset=vf->end=-1; + } + + /* If seek_func is implemented, tell_func must also be implemented */ + if(vf->end==-1) return(OV_EINVAL); + + /* Get the offset of the last page of the physical bitstream, or, if + we're lucky the last vorbis page of this link as most OggVorbis + files will contain a single logical bitstream */ + end=_get_prev_page_serial(vf,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran); + if(end<0)return(end); + + /* now determine bitstream structure recursively */ + if(_bisect_forward_serialno(vf,0,dataoffset,vf->offset,endgran,endserial, + vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD); + + vf->offsets[0]=0; + vf->serialnos[0]=serialno; + vf->dataoffsets[0]=dataoffset; + vf->pcmlengths[0]=pcmoffset; + vf->pcmlengths[1]-=pcmoffset; + + return(ov_raw_seek(vf,dataoffset)); +} + +/* clear out the current logical bitstream decoder */ +static void _decode_clear(OggVorbis_File *vf){ + vorbis_dsp_clear(&vf->vd); + vorbis_block_clear(&vf->vb); + vf->ready_state=OPENED; +} + +/* fetch and process a packet. Handles the case where we're at a + bitstream boundary and dumps the decoding machine. If the decoding + machine is unloaded, it loads it. It also keeps pcm_offset up to + date (seek and read both use this. seek uses a special hack with + readp). + + return: <0) error, OV_HOLE (lost packet) or OV_EOF + 0) need more data (only if readp==0) + 1) got a packet +*/ + +static int _fetch_and_process_packet(OggVorbis_File *vf, + ogg_packet *op_in, + int readp, + int spanp){ + ogg_page og; + + /* handle one packet. Try to fetch it from current stream state */ + /* extract packets from page */ + while(1){ + + if(vf->ready_state==STREAMSET){ + int ret=_make_decode_ready(vf); + if(ret<0)return ret; + } + + /* process a packet if we can. If the machine isn't loaded, + neither is a page */ + if(vf->ready_state==INITSET){ + while(1) { + ogg_packet op; + ogg_packet *op_ptr=(op_in?op_in:&op); + int result=ogg_stream_packetout(&vf->os,op_ptr); + ogg_int64_t granulepos; + + op_in=NULL; + if(result==-1)return(OV_HOLE); /* hole in the data. */ + if(result>0){ + /* got a packet. process it */ + granulepos=op_ptr->granulepos; + if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy + header handling. The + header packets aren't + audio, so if/when we + submit them, + vorbis_synthesis will + reject them */ + + /* suck in the synthesis data and track bitrate */ + { + int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL); + /* for proper use of libvorbis within libvorbisfile, + oldsamples will always be zero. */ + if(oldsamples)return(OV_EFAULT); + + vorbis_synthesis_blockin(&vf->vd,&vf->vb); + vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples; + vf->bittrack+=op_ptr->bytes*8; + } + + /* update the pcm offset. */ + if(granulepos!=-1 && !op_ptr->e_o_s){ + int link=(vf->seekable?vf->current_link:0); + int i,samples; + + /* this packet has a pcm_offset on it (the last packet + completed on a page carries the offset) After processing + (above), we know the pcm position of the *last* sample + ready to be returned. Find the offset of the *first* + + As an aside, this trick is inaccurate if we begin + reading anew right at the last page; the end-of-stream + granulepos declares the last frame in the stream, and the + last packet of the last page may be a partial frame. + So, we need a previous granulepos from an in-sequence page + to have a reference point. Thus the !op_ptr->e_o_s clause + above */ + + if(vf->seekable && link>0) + granulepos-=vf->pcmlengths[link*2]; + if(granulepos<0)granulepos=0; /* actually, this + shouldn't be possible + here unless the stream + is very broken */ + + samples=vorbis_synthesis_pcmout(&vf->vd,NULL); + + granulepos-=samples; + for(i=0;ipcmlengths[i*2+1]; + vf->pcm_offset=granulepos; + } + return(1); + } + } + else + break; + } + } + + if(vf->ready_state>=OPENED){ + ogg_int64_t ret; + + while(1){ + /* the loop is not strictly necessary, but there's no sense in + doing the extra checks of the larger loop for the common + case in a multiplexed bistream where the page is simply + part of a different logical bitstream; keep reading until + we get one with the correct serialno */ + + if(!readp)return(0); + if((ret=_get_next_page(vf,&og,-1))<0){ + return(OV_EOF); /* eof. leave unitialized */ + } + + /* bitrate tracking; add the header's bytes here, the body bytes + are done by packet above */ + vf->bittrack+=og.header_len*8; + + if(vf->ready_state==INITSET){ + if(vf->current_serialno!=ogg_page_serialno(&og)){ + + /* two possibilities: + 1) our decoding just traversed a bitstream boundary + 2) another stream is multiplexed into this logical section */ + + if(ogg_page_bos(&og)){ + /* boundary case */ + if(!spanp) + return(OV_EOF); + + _decode_clear(vf); + + if(!vf->seekable){ + vorbis_info_clear(vf->vi); + vorbis_comment_clear(vf->vc); + } + break; + + }else + continue; /* possibility #2 */ + } + } + + break; + } + } + + /* Do we need to load a new machine before submitting the page? */ + /* This is different in the seekable and non-seekable cases. + + In the seekable case, we already have all the header + information loaded and cached; we just initialize the machine + with it and continue on our merry way. + + In the non-seekable (streaming) case, we'll only be at a + boundary if we just left the previous logical bitstream and + we're now nominally at the header of the next bitstream + */ + + if(vf->ready_state!=INITSET){ + int link; + + if(vf->ready_stateseekable){ + ogg_uint32_t serialno = ogg_page_serialno(&og); + + /* match the serialno to bitstream section. We use this rather than + offset positions to avoid problems near logical bitstream + boundaries */ + + for(link=0;linklinks;link++) + if(vf->serialnos[link]==serialno)break; + + if(link==vf->links) continue; /* not the desired Vorbis + bitstream section; keep + trying */ + + vf->current_serialno=serialno; + vf->current_link=link; + + ogg_stream_reset_serialno(&vf->os,vf->current_serialno); + vf->ready_state=STREAMSET; + + }else{ + /* we're streaming */ + /* fetch the three header packets, build the info struct */ + + int ret=_fetch_headers(vf,vf->vi,vf->vc,NULL,NULL,&og); + if(ret)return(ret); + vf->current_serialno=vf->os.serialno; + vf->current_link++; + link=0; + } + } + } + + /* the buffered page is the data we want, and we're ready for it; + add it to the stream state */ + ogg_stream_pagein(&vf->os,&og); + + } +} + +/* if, eg, 64 bit stdio is configured by default, this will build with + fseek64 */ +static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){ + if(f==NULL)return(-1); + return fseek(f,off,whence); +} + +static int _ov_open1(void *f,OggVorbis_File *vf,const char *initial, + long ibytes, ov_callbacks callbacks){ + int offsettest=((f && callbacks.seek_func)?callbacks.seek_func(f,0,SEEK_CUR):-1); + ogg_uint32_t *serialno_list=NULL; + int serialno_list_size=0; + int ret; + + memset(vf,0,sizeof(*vf)); + vf->datasource=f; + vf->callbacks = callbacks; + + /* init the framing state */ + ogg_sync_init(&vf->oy); + + /* perhaps some data was previously read into a buffer for testing + against other stream types. Allow initialization from this + previously read data (especially as we may be reading from a + non-seekable stream) */ + if(initial){ + char *buffer=ogg_sync_buffer(&vf->oy,ibytes); + memcpy(buffer,initial,ibytes); + ogg_sync_wrote(&vf->oy,ibytes); + } + + /* can we seek? Stevens suggests the seek test was portable */ + if(offsettest!=-1)vf->seekable=1; + + /* No seeking yet; Set up a 'single' (current) logical bitstream + entry for partial open */ + vf->links=1; + vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi)); + vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc)); + ogg_stream_init(&vf->os,-1); /* fill in the serialno later */ + + /* Fetch all BOS pages, store the vorbis header and all seen serial + numbers, load subsequent vorbis setup headers */ + if((ret=_fetch_headers(vf,vf->vi,vf->vc,&serialno_list,&serialno_list_size,NULL))<0){ + vf->datasource=NULL; + ov_clear(vf); + }else{ + /* serial number list for first link needs to be held somewhere + for second stage of seekable stream open; this saves having to + seek/reread first link's serialnumber data then. */ + vf->serialnos=_ogg_calloc(serialno_list_size+2,sizeof(*vf->serialnos)); + vf->serialnos[0]=vf->current_serialno=vf->os.serialno; + vf->serialnos[1]=serialno_list_size; + memcpy(vf->serialnos+2,serialno_list,serialno_list_size*sizeof(*vf->serialnos)); + + vf->offsets=_ogg_calloc(1,sizeof(*vf->offsets)); + vf->dataoffsets=_ogg_calloc(1,sizeof(*vf->dataoffsets)); + vf->offsets[0]=0; + vf->dataoffsets[0]=vf->offset; + + vf->ready_state=PARTOPEN; + } + if(serialno_list)_ogg_free(serialno_list); + return(ret); +} + +static int _ov_open2(OggVorbis_File *vf){ + if(vf->ready_state != PARTOPEN) return OV_EINVAL; + vf->ready_state=OPENED; + if(vf->seekable){ + int ret=_open_seekable2(vf); + if(ret){ + vf->datasource=NULL; + ov_clear(vf); + } + return(ret); + }else + vf->ready_state=STREAMSET; + + return 0; +} + + +/* clear out the OggVorbis_File struct */ +int ov_clear(OggVorbis_File *vf){ + if(vf){ + vorbis_block_clear(&vf->vb); + vorbis_dsp_clear(&vf->vd); + ogg_stream_clear(&vf->os); + + if(vf->vi && vf->links){ + int i; + for(i=0;ilinks;i++){ + vorbis_info_clear(vf->vi+i); + vorbis_comment_clear(vf->vc+i); + } + _ogg_free(vf->vi); + _ogg_free(vf->vc); + } + if(vf->dataoffsets)_ogg_free(vf->dataoffsets); + if(vf->pcmlengths)_ogg_free(vf->pcmlengths); + if(vf->serialnos)_ogg_free(vf->serialnos); + if(vf->offsets)_ogg_free(vf->offsets); + ogg_sync_clear(&vf->oy); + if(vf->datasource && vf->callbacks.close_func) + (vf->callbacks.close_func)(vf->datasource); + memset(vf,0,sizeof(*vf)); + } +#ifdef DEBUG_LEAKS + _VDBG_dump(); +#endif + return(0); +} + +/* inspects the OggVorbis file and finds/documents all the logical + bitstreams contained in it. Tries to be tolerant of logical + bitstream sections that are truncated/woogie. + + return: -1) error + 0) OK +*/ + +int ov_open_callbacks(void *f,OggVorbis_File *vf, + const char *initial,long ibytes,ov_callbacks callbacks){ + int ret=_ov_open1(f,vf,initial,ibytes,callbacks); + if(ret)return ret; + return _ov_open2(vf); +} + +int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes){ + ov_callbacks callbacks = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap, + (int (*)(void *)) fclose, + (long (*)(void *)) ftell + }; + + return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks); +} + +int ov_fopen(const char *path,OggVorbis_File *vf){ + int ret; + FILE *f = fopen(path,"rb"); + if(!f) return -1; + + ret = ov_open(f,vf,NULL,0); + if(ret) fclose(f); + return ret; +} + + +/* Only partially open the vorbis file; test for Vorbisness, and load + the headers for the first chain. Do not seek (although test for + seekability). Use ov_test_open to finish opening the file, else + ov_clear to close/free it. Same return codes as open. */ + +int ov_test_callbacks(void *f,OggVorbis_File *vf, + const char *initial,long ibytes,ov_callbacks callbacks) +{ + return _ov_open1(f,vf,initial,ibytes,callbacks); +} + +int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes){ + ov_callbacks callbacks = { + (size_t (*)(void *, size_t, size_t, void *)) fread, + (int (*)(void *, ogg_int64_t, int)) _fseek64_wrap, + (int (*)(void *)) fclose, + (long (*)(void *)) ftell + }; + + return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks); +} + +int ov_test_open(OggVorbis_File *vf){ + if(vf->ready_state!=PARTOPEN)return(OV_EINVAL); + return _ov_open2(vf); +} + +/* How many logical bitstreams in this physical bitstream? */ +long ov_streams(OggVorbis_File *vf){ + return vf->links; +} + +/* Is the FILE * associated with vf seekable? */ +long ov_seekable(OggVorbis_File *vf){ + return vf->seekable; +} + +/* returns the bitrate for a given logical bitstream or the entire + physical bitstream. If the file is open for random access, it will + find the *actual* average bitrate. If the file is streaming, it + returns the nominal bitrate (if set) else the average of the + upper/lower bounds (if set) else -1 (unset). + + If you want the actual bitrate field settings, get them from the + vorbis_info structs */ + +long ov_bitrate(OggVorbis_File *vf,int i){ + if(vf->ready_state=vf->links)return(OV_EINVAL); + if(!vf->seekable && i!=0)return(ov_bitrate(vf,0)); + if(i<0){ + ogg_int64_t bits=0; + int i; + for(i=0;ilinks;i++) + bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8; + /* This once read: return(rint(bits/ov_time_total(vf,-1))); + * gcc 3.x on x86 miscompiled this at optimisation level 2 and above, + * so this is slightly transformed to make it work. + */ + return(bits*1000/ov_time_total(vf,-1)); + }else{ + if(vf->seekable){ + /* return the actual bitrate */ + return((vf->offsets[i+1]-vf->dataoffsets[i])*8000/ov_time_total(vf,i)); + }else{ + /* return nominal if set */ + if(vf->vi[i].bitrate_nominal>0){ + return vf->vi[i].bitrate_nominal; + }else{ + if(vf->vi[i].bitrate_upper>0){ + if(vf->vi[i].bitrate_lower>0){ + return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2; + }else{ + return vf->vi[i].bitrate_upper; + } + } + return(OV_FALSE); + } + } + } +} + +/* returns the actual bitrate since last call. returns -1 if no + additional data to offer since last call (or at beginning of stream), + EINVAL if stream is only partially open +*/ +long ov_bitrate_instant(OggVorbis_File *vf){ + int link=(vf->seekable?vf->current_link:0); + long ret; + if(vf->ready_statesamptrack==0)return(OV_FALSE); + ret=vf->bittrack/vf->samptrack*vf->vi[link].rate; + vf->bittrack=0; + vf->samptrack=0; + return(ret); +} + +/* Guess */ +long ov_serialnumber(OggVorbis_File *vf,int i){ + if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1)); + if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1)); + if(i<0){ + return(vf->current_serialno); + }else{ + return(vf->serialnos[i]); + } +} + +/* returns: total raw (compressed) length of content if i==-1 + raw (compressed) length of that logical bitstream for i==0 to n + OV_EINVAL if the stream is not seekable (we can't know the length) + or if stream is only partially open +*/ +ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){ + if(vf->ready_stateseekable || i>=vf->links)return(OV_EINVAL); + if(i<0){ + ogg_int64_t acc=0; + int i; + for(i=0;ilinks;i++) + acc+=ov_raw_total(vf,i); + return(acc); + }else{ + return(vf->offsets[i+1]-vf->offsets[i]); + } +} + +/* returns: total PCM length (samples) of content if i==-1 PCM length + (samples) of that logical bitstream for i==0 to n + OV_EINVAL if the stream is not seekable (we can't know the + length) or only partially open +*/ +ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){ + if(vf->ready_stateseekable || i>=vf->links)return(OV_EINVAL); + if(i<0){ + ogg_int64_t acc=0; + int i; + for(i=0;ilinks;i++) + acc+=ov_pcm_total(vf,i); + return(acc); + }else{ + return(vf->pcmlengths[i*2+1]); + } +} + +/* returns: total milliseconds of content if i==-1 + milliseconds in that logical bitstream for i==0 to n + OV_EINVAL if the stream is not seekable (we can't know the + length) or only partially open +*/ +ogg_int64_t ov_time_total(OggVorbis_File *vf,int i){ + if(vf->ready_stateseekable || i>=vf->links)return(OV_EINVAL); + if(i<0){ + ogg_int64_t acc=0; + int i; + for(i=0;ilinks;i++) + acc+=ov_time_total(vf,i); + return(acc); + }else{ + return(((ogg_int64_t)vf->pcmlengths[i*2+1])*1000/vf->vi[i].rate); + } +} + +/* seek to an offset relative to the *compressed* data. This also + scans packets to update the PCM cursor. It will cross a logical + bitstream boundary, but only if it can't get any packets out of the + tail of the bitstream we seek to (so no surprises). + + returns zero on success, nonzero on failure */ + +int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){ + ogg_stream_state work_os; + int ret; + + if(vf->ready_stateseekable) + return(OV_ENOSEEK); /* don't dump machine if we can't seek */ + + if(pos<0 || pos>vf->end)return(OV_EINVAL); + + /* is the seek position outside our current link [if any]? */ + if(vf->ready_state>=STREAMSET){ + if(posoffsets[vf->current_link] || pos>=vf->offsets[vf->current_link+1]) + _decode_clear(vf); /* clear out stream state */ + } + + /* don't yet clear out decoding machine (if it's initialized), in + the case we're in the same link. Restart the decode lapping, and + let _fetch_and_process_packet deal with a potential bitstream + boundary */ + vf->pcm_offset=-1; + ogg_stream_reset_serialno(&vf->os, + vf->current_serialno); /* must set serialno */ + vorbis_synthesis_restart(&vf->vd); + + ret=_seek_helper(vf,pos); + if(ret)goto seek_error; + + /* we need to make sure the pcm_offset is set, but we don't want to + advance the raw cursor past good packets just to get to the first + with a granulepos. That's not equivalent behavior to beginning + decoding as immediately after the seek position as possible. + + So, a hack. We use two stream states; a local scratch state and + the shared vf->os stream state. We use the local state to + scan, and the shared state as a buffer for later decode. + + Unfortuantely, on the last page we still advance to last packet + because the granulepos on the last page is not necessarily on a + packet boundary, and we need to make sure the granpos is + correct. + */ + + { + ogg_page og; + ogg_packet op; + int lastblock=0; + int accblock=0; + int thisblock=0; + int lastflag=0; + int firstflag=0; + ogg_int64_t pagepos=-1; + + ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */ + ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE + return from not necessarily + starting from the beginning */ + + while(1){ + if(vf->ready_state>=STREAMSET){ + /* snarf/scan a packet if we can */ + int result=ogg_stream_packetout(&work_os,&op); + + if(result>0){ + + if(vf->vi[vf->current_link].codec_setup){ + thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op); + if(thisblock<0){ + ogg_stream_packetout(&vf->os,NULL); + thisblock=0; + }else{ + + /* We can't get a guaranteed correct pcm position out of the + last page in a stream because it might have a 'short' + granpos, which can only be detected in the presence of a + preceding page. However, if the last page is also the first + page, the granpos rules of a first page take precedence. Not + only that, but for first==last, the EOS page must be treated + as if its a normal first page for the stream to open/play. */ + if(lastflag && !firstflag) + ogg_stream_packetout(&vf->os,NULL); + else + if(lastblock)accblock+=(lastblock+thisblock)>>2; + } + + if(op.granulepos!=-1){ + int i,link=vf->current_link; + ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2]; + if(granulepos<0)granulepos=0; + + for(i=0;ipcmlengths[i*2+1]; + vf->pcm_offset=granulepos-accblock; + if(vf->pcm_offset<0)vf->pcm_offset=0; + break; + } + lastblock=thisblock; + continue; + }else + ogg_stream_packetout(&vf->os,NULL); + } + } + + if(!lastblock){ + pagepos=_get_next_page(vf,&og,-1); + if(pagepos<0){ + vf->pcm_offset=ov_pcm_total(vf,-1); + break; + } + }else{ + /* huh? Bogus stream with packets but no granulepos */ + vf->pcm_offset=-1; + break; + } + + /* has our decoding just traversed a bitstream boundary? */ + if(vf->ready_state>=STREAMSET){ + if(vf->current_serialno!=ogg_page_serialno(&og)){ + + /* two possibilities: + 1) our decoding just traversed a bitstream boundary + 2) another stream is multiplexed into this logical section? */ + + if(ogg_page_bos(&og)){ + /* we traversed */ + _decode_clear(vf); /* clear out stream state */ + ogg_stream_clear(&work_os); + } /* else, do nothing; next loop will scoop another page */ + } + } + + if(vf->ready_statelinks;link++) + if(vf->serialnos[link]==serialno)break; + + if(link==vf->links) continue; /* not the desired Vorbis + bitstream section; keep + trying */ + vf->current_link=link; + vf->current_serialno=serialno; + ogg_stream_reset_serialno(&vf->os,serialno); + ogg_stream_reset_serialno(&work_os,serialno); + vf->ready_state=STREAMSET; + firstflag=(pagepos<=vf->dataoffsets[link]); + } + + ogg_stream_pagein(&vf->os,&og); + ogg_stream_pagein(&work_os,&og); + lastflag=ogg_page_eos(&og); + + } + } + + ogg_stream_clear(&work_os); + vf->bittrack=0; + vf->samptrack=0; + return(0); + + seek_error: + /* dump the machine so we're in a known state */ + vf->pcm_offset=-1; + ogg_stream_clear(&work_os); + _decode_clear(vf); + return OV_EBADLINK; +} + +/* rescales the number x from the range of [0,from] to [0,to] + x is in the range [0,from] + from, to are in the range [1, 1<<62-1] */ +ogg_int64_t rescale64(ogg_int64_t x, ogg_int64_t from, ogg_int64_t to){ + ogg_int64_t frac=0; + ogg_int64_t ret=0; + int i; + if(x >= from) return to; + if(x <= 0) return 0; + + for(i=0;i<64;i++){ + if(x>=from){ + frac|=1; + x-=from; + } + x<<=1; + frac<<=1; + } + + for(i=0;i<64;i++){ + if(frac & 1){ + ret+=to; + } + frac>>=1; + ret>>=1; + } + + return ret; +} + +/* Page granularity seek (faster than sample granularity because we + don't do the last bit of decode to find a specific sample). + + Seek to the last [granule marked] page preceding the specified pos + location, such that decoding past the returned point will quickly + arrive at the requested position. */ +int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ + int link=-1; + ogg_int64_t result=0; + ogg_int64_t total=ov_pcm_total(vf,-1); + + if(vf->ready_stateseekable)return(OV_ENOSEEK); + + if(pos<0 || pos>total)return(OV_EINVAL); + + /* which bitstream section does this pcm offset occur in? */ + for(link=vf->links-1;link>=0;link--){ + total-=vf->pcmlengths[link*2+1]; + if(pos>=total)break; + } + + /* search within the logical bitstream for the page with the highest + pcm_pos preceding (or equal to) pos. There is a danger here; + missing pages or incorrect frame number information in the + bitstream could make our task impossible. Account for that (it + would be an error condition) */ + + /* new search algorithm by HB (Nicholas Vinen) */ + { + ogg_int64_t end=vf->offsets[link+1]; + ogg_int64_t begin=vf->offsets[link]; + ogg_int64_t begintime = vf->pcmlengths[link*2]; + ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime; + ogg_int64_t target=pos-total+begintime; + ogg_int64_t best=begin; + + ogg_page og; + while(beginoffset){ + result=_seek_helper(vf,bisect); + if(result) goto seek_error; + } + + while(beginoffset); + if(result==OV_EREAD) goto seek_error; + if(result<0){ + if(bisect<=begin+1) + end=begin; /* found it */ + else{ + if(bisect==0) goto seek_error; + bisect-=CHUNKSIZE; + if(bisect<=begin)bisect=begin+1; + result=_seek_helper(vf,bisect); + if(result) goto seek_error; + } + }else{ + ogg_int64_t granulepos; + + if(ogg_page_serialno(&og)!=vf->serialnos[link]) + continue; + + granulepos=ogg_page_granulepos(&og); + if(granulepos==-1)continue; + + if(granuleposoffset; /* raw offset of next page */ + begintime=granulepos; + + if(target-begintime>44100)break; + bisect=begin; /* *not* begin + 1 */ + }else{ + if(bisect<=begin+1) + end=begin; /* found it */ + else{ + if(end==vf->offset){ /* we're pretty close - we'd be stuck in */ + end=result; + bisect-=CHUNKSIZE; /* an endless loop otherwise. */ + if(bisect<=begin)bisect=begin+1; + result=_seek_helper(vf,bisect); + if(result) goto seek_error; + }else{ + end=bisect; + endtime=granulepos; + break; + } + } + } + } + } + } + + /* found our page. seek to it, update pcm offset. Easier case than + raw_seek, don't keep packets preceding granulepos. */ + { + ogg_page og; + ogg_packet op; + + /* seek */ + result=_seek_helper(vf,best); + vf->pcm_offset=-1; + if(result) goto seek_error; + result=_get_next_page(vf,&og,-1); + if(result<0) goto seek_error; + + if(link!=vf->current_link){ + /* Different link; dump entire decode machine */ + _decode_clear(vf); + + vf->current_link=link; + vf->current_serialno=vf->serialnos[link]; + vf->ready_state=STREAMSET; + + }else{ + vorbis_synthesis_restart(&vf->vd); + } + + ogg_stream_reset_serialno(&vf->os,vf->current_serialno); + ogg_stream_pagein(&vf->os,&og); + + /* pull out all but last packet; the one with granulepos */ + while(1){ + result=ogg_stream_packetpeek(&vf->os,&op); + if(result==0){ + /* !!! the packet finishing this page originated on a + preceding page. Keep fetching previous pages until we + get one with a granulepos or without the 'continued' flag + set. Then just use raw_seek for simplicity. */ + + result=_seek_helper(vf,best); + if(result<0) goto seek_error; + + while(1){ + result=_get_prev_page(vf,&og); + if(result<0) goto seek_error; + if(ogg_page_serialno(&og)==vf->current_serialno && + (ogg_page_granulepos(&og)>-1 || + !ogg_page_continued(&og))){ + return ov_raw_seek(vf,result); + } + vf->offset=result; + } + } + if(result<0){ + result = OV_EBADPACKET; + goto seek_error; + } + if(op.granulepos!=-1){ + vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2]; + if(vf->pcm_offset<0)vf->pcm_offset=0; + vf->pcm_offset+=total; + break; + }else + result=ogg_stream_packetout(&vf->os,NULL); + } + } + } + + /* verify result */ + if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){ + result=OV_EFAULT; + goto seek_error; + } + vf->bittrack=0; + vf->samptrack=0; + return(0); + + seek_error: + /* dump machine so we're in a known state */ + vf->pcm_offset=-1; + _decode_clear(vf); + return (int)result; +} + +/* seek to a sample offset relative to the decompressed pcm stream + returns zero on success, nonzero on failure */ + +int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){ + int thisblock,lastblock=0; + int ret=ov_pcm_seek_page(vf,pos); + if(ret<0)return(ret); + if((ret=_make_decode_ready(vf)))return ret; + + /* discard leading packets we don't need for the lapping of the + position we want; don't decode them */ + + while(1){ + ogg_packet op; + ogg_page og; + + int ret=ogg_stream_packetpeek(&vf->os,&op); + if(ret>0){ + thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op); + if(thisblock<0){ + ogg_stream_packetout(&vf->os,NULL); + continue; /* non audio packet */ + } + if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2; + + if(vf->pcm_offset+((thisblock+ + vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break; + + /* remove the packet from packet queue and track its granulepos */ + ogg_stream_packetout(&vf->os,NULL); + vorbis_synthesis_trackonly(&vf->vb,&op); /* set up a vb with + only tracking, no + pcm_decode */ + vorbis_synthesis_blockin(&vf->vd,&vf->vb); + + /* end of logical stream case is hard, especially with exact + length positioning. */ + + if(op.granulepos>-1){ + int i; + /* always believe the stream markers */ + vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2]; + if(vf->pcm_offset<0)vf->pcm_offset=0; + for(i=0;icurrent_link;i++) + vf->pcm_offset+=vf->pcmlengths[i*2+1]; + } + + lastblock=thisblock; + + }else{ + if(ret<0 && ret!=OV_HOLE)break; + + /* suck in a new page */ + if(_get_next_page(vf,&og,-1)<0)break; + if(ogg_page_bos(&og))_decode_clear(vf); + + if(vf->ready_statelinks;link++) + if(vf->serialnos[link]==serialno)break; + if(link==vf->links) continue; + vf->current_link=link; + + vf->ready_state=STREAMSET; + vf->current_serialno=ogg_page_serialno(&og); + ogg_stream_reset_serialno(&vf->os,serialno); + ret=_make_decode_ready(vf); + if(ret)return ret; + lastblock=0; + } + + ogg_stream_pagein(&vf->os,&og); + } + } + + vf->bittrack=0; + vf->samptrack=0; + /* discard samples until we reach the desired position. Crossing a + logical bitstream boundary with abandon is OK. */ + while(vf->pcm_offsetpcm_offset; + long samples=vorbis_synthesis_pcmout(&vf->vd,NULL); + + if(samples>target)samples=target; + vorbis_synthesis_read(&vf->vd,samples); + vf->pcm_offset+=samples; + + if(samplespcm_offset=ov_pcm_total(vf,-1); /* eof */ + } + return 0; +} + +/* seek to a playback time relative to the decompressed pcm stream + returns zero on success, nonzero on failure */ +int ov_time_seek(OggVorbis_File *vf,ogg_int64_t milliseconds){ + /* translate time to PCM position and call ov_pcm_seek */ + + int link=-1; + ogg_int64_t pcm_total=0; + ogg_int64_t time_total=0; + + if(vf->ready_stateseekable)return(OV_ENOSEEK); + if(milliseconds<0)return(OV_EINVAL); + + /* which bitstream section does this time offset occur in? */ + for(link=0;linklinks;link++){ + ogg_int64_t addsec = ov_time_total(vf,link); + if(millisecondspcmlengths[link*2+1]; + } + + if(link==vf->links)return(OV_EINVAL); + + /* enough information to convert time offset to pcm offset */ + { + ogg_int64_t target=pcm_total+(milliseconds-time_total)*vf->vi[link].rate/1000; + return(ov_pcm_seek(vf,target)); + } +} + +/* page-granularity version of ov_time_seek + returns zero on success, nonzero on failure */ +int ov_time_seek_page(OggVorbis_File *vf,ogg_int64_t milliseconds){ + /* translate time to PCM position and call ov_pcm_seek */ + + int link=-1; + ogg_int64_t pcm_total=0; + ogg_int64_t time_total=0; + + if(vf->ready_stateseekable)return(OV_ENOSEEK); + if(milliseconds<0)return(OV_EINVAL); + + /* which bitstream section does this time offset occur in? */ + for(link=0;linklinks;link++){ + ogg_int64_t addsec = ov_time_total(vf,link); + if(millisecondspcmlengths[link*2+1]; + } + + if(link==vf->links)return(OV_EINVAL); + + /* enough information to convert time offset to pcm offset */ + { + ogg_int64_t target=pcm_total+(milliseconds-time_total)*vf->vi[link].rate/1000; + return(ov_pcm_seek_page(vf,target)); + } +} + +/* tell the current stream offset cursor. Note that seek followed by + tell will likely not give the set offset due to caching */ +ogg_int64_t ov_raw_tell(OggVorbis_File *vf){ + if(vf->ready_stateoffset); +} + +/* return PCM offset (sample) of next PCM sample to be read */ +ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){ + if(vf->ready_statepcm_offset); +} + +/* return time offset (milliseconds) of next PCM sample to be read */ +ogg_int64_t ov_time_tell(OggVorbis_File *vf){ + int link=0; + ogg_int64_t pcm_total=0; + ogg_int64_t time_total=0; + + if(vf->ready_stateseekable){ + pcm_total=ov_pcm_total(vf,-1); + time_total=ov_time_total(vf,-1); + + /* which bitstream section does this time offset occur in? */ + for(link=vf->links-1;link>=0;link--){ + pcm_total-=vf->pcmlengths[link*2+1]; + time_total-=ov_time_total(vf,link); + if(vf->pcm_offset>=pcm_total)break; + } + } + + return(time_total+(1000*vf->pcm_offset-pcm_total)/vf->vi[link].rate); +} + +/* link: -1) return the vorbis_info struct for the bitstream section + currently being decoded + 0-n) to request information for a specific bitstream section + + In the case of a non-seekable bitstream, any call returns the + current bitstream. NULL in the case that the machine is not + initialized */ + +vorbis_info *ov_info(OggVorbis_File *vf,int link){ + if(vf->seekable){ + if(link<0) + if(vf->ready_state>=STREAMSET) + return vf->vi+vf->current_link; + else + return vf->vi; + else + if(link>=vf->links) + return NULL; + else + return vf->vi+link; + }else{ + return vf->vi; + } +} + +/* grr, strong typing, grr, no templates/inheritence, grr */ +vorbis_comment *ov_comment(OggVorbis_File *vf,int link){ + if(vf->seekable){ + if(link<0) + if(vf->ready_state>=STREAMSET) + return vf->vc+vf->current_link; + else + return vf->vc; + else + if(link>=vf->links) + return NULL; + else + return vf->vc+link; + }else{ + return vf->vc; + } +} + +/* up to this point, everything could more or less hide the multiple + logical bitstream nature of chaining from the toplevel application + if the toplevel application didn't particularly care. However, at + the point that we actually read audio back, the multiple-section + nature must surface: Multiple bitstream sections do not necessarily + have to have the same number of channels or sampling rate. + + ov_read returns the sequential logical bitstream number currently + being decoded along with the PCM data in order that the toplevel + application can take action on channel/sample rate changes. This + number will be incremented even for streamed (non-seekable) streams + (for seekable streams, it represents the actual logical bitstream + index within the physical bitstream. Note that the accessor + functions above are aware of this dichotomy). + + input values: buffer) a buffer to hold packed PCM data for return + bytes_req) the byte length requested to be placed into buffer + + return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL) + 0) EOF + n) number of bytes of PCM actually returned. The + below works on a packet-by-packet basis, so the + return length is not related to the 'length' passed + in, just guaranteed to fit. + + *section) set to the logical bitstream number */ + +long ov_read(OggVorbis_File *vf,char *buffer,int bytes_req,int *bitstream){ + int i,j; + + ogg_int32_t **pcm; + long samples; + + if(vf->ready_stateready_state==INITSET){ + samples=vorbis_synthesis_pcmout(&vf->vd,&pcm); + if(samples)break; + } + + /* suck in another packet */ + { + int ret=_fetch_and_process_packet(vf,NULL,1,1); + if(ret==OV_EOF) + return(0); + if(ret<=0) + return(ret); + } + + } + + if(samples>0){ + + /* yay! proceed to pack data into the byte buffer */ + + long channels=ov_info(vf,-1)->channels; + + if(samples>(bytes_req/(2*channels))) + samples=bytes_req/(2*channels); + + for(i=0;i>9); + dest+=channels; + } + } + + vorbis_synthesis_read(&vf->vd,samples); + vf->pcm_offset+=samples; + if(bitstream)*bitstream=vf->current_link; + return(samples*2*channels); + }else{ + return(samples); + } +} diff --git a/libmednahawk/src/tremor/vorbisidec.pc.in b/libmednahawk/src/tremor/vorbisidec.pc.in new file mode 100644 index 0000000000..f79ae1e724 --- /dev/null +++ b/libmednahawk/src/tremor/vorbisidec.pc.in @@ -0,0 +1,14 @@ +# libvorbisidec pkg-config source file + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: vorbisidec +Description: vorbisidec is the integer Ogg Vorbis library +Version: @VERSION@ +Requires: ogg +Conflicts: +Libs: -L${libdir} -lvorbisidec -lm +Cflags: -I${includedir} diff --git a/libmednahawk/src/tremor/window.c b/libmednahawk/src/tremor/window.c new file mode 100644 index 0000000000..85474a143c --- /dev/null +++ b/libmednahawk/src/tremor/window.c @@ -0,0 +1,83 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. * + * * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 * + * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ * + * * + ******************************************************************** + + function: window functions + + ********************************************************************/ + +#include +#include +#include "misc.h" +#include "window.h" +#include "window_lookup.h" + +const void *_vorbis_window(int type, int left){ + + switch(type){ + case 0: + + switch(left){ + case 32: + return vwin64; + case 64: + return vwin128; + case 128: + return vwin256; + case 256: + return vwin512; + case 512: + return vwin1024; + case 1024: + return vwin2048; + case 2048: + return vwin4096; + case 4096: + return vwin8192; + default: + return(0); + } + break; + default: + return(0); + } +} + +void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2], + long *blocksizes, + int lW,int W,int nW){ + + LOOKUP_T *window[2]={window_p[0],window_p[1]}; + long n=blocksizes[W]; + long ln=blocksizes[lW]; + long rn=blocksizes[nW]; + + long leftbegin=n/4-ln/4; + long leftend=leftbegin+ln/2; + + long rightbegin=n/2+n/4-rn/4; + long rightend=rightbegin+rn/2; + + int i,p; + + for(i=0;i format for user-defined specifiers, which is + compatible with compiler warnings about mismatches between specifiers and + arguments. + +* Added TRIO_DEPRECATED flag (reported by David Boyce) + +* Fixed rounding adjustment for long double (reported as bug item #2136686). + +* Added Makefile dependency for test target (reported as bug item #2136636). + +* David Boyce + Fixed long long support for MSVC. + +* Fixed potential problem with read after buffer end for non-zero terminated + strings (reported as bug item #1828465). + +* Andreas Stricker + Added WinCE support. + +* Fixed number of significant digits for %g. + + +Version 1.12 - 2006/10/22 +------------------------- +* Fixed scanning of floats (reported by Bernd Ahlers). + +* Fixed configure.in for GCC on Tru64 and MIPSpro on IRIX (reported by Andreas + Maus). + +* Olli Savia + Added support for LynxOS. + + +Version 1.11 - 2006/04/08 +------------------------- +* Mark Pickelmann + Fixed trio_unregister. If the first element was removed, the remaining + list would be removed as well. + +* Fixed unintended formatting of %e that would result in non-zero numbers + starting with zero (reported by Mark Pickelmann and Gisli Ottarsson). + +* Fixed compilation with Sun Workshop 6 (reported by Matthias Andree). + +* Fixed accuracy for denormalized numbers (bug item #758327). + +* Glen Davidson + Fixed scanning of floating-point numbers without a decimal-point (bug item + #1370427). + +* David Byron + Fixed more compiler warnings. + +* Fixed compilation of trio_to_long_double and TRIO_FEATURE_FLOAT (reported by + David Byron). + +* Fixed precision of large floating-point numbers (bug item #1314524). + +* Karl Bochert + Fixed trio_fpclassify_and_signbit to only restore the floating-point + precision. + +* Fixed detection of need for ieee option on FreeBSD/Alpha. + +* Added TRIO_SNPRINTF_ONLY compilation. + +* Fixed trio_to_double by not using strtod() on Tru64/DECC because it does not + support hex-floats. + +* Fixed crash on 64 bits machines related to a previous workaround in version + 1.9 for uninitialized va_list (reported by Nicolai Tufar, suggestion by + Douglas Gwyn). + +* Patrick Jessee + Fixed width calculation for %g. + +* Added macros for internal features. + +* Jon Foster + Added macros for conditional compilation of many features. Documented all + the features. + +* Karl Bochert + Fixed problem with Borland C++, which changes the floating-point precision + for certain math functions (log10() and _fpclass()). + +* Karl Bochert + Fixed compilation warnings on Borland C++. + +* Removed any occurrence of #elif because Borland C++ reports wrong line + numbers when they are present (reported by Karl Bochert). + +* David Byron + Added trio_asprintfv. + +* Brian Chapman + Fixed Mac OS X compilation. + +* David Byron + Fixed several compiler warnings. + +* Fixed printing of out-of-range arguments for %hhd and %hd. These arguments + can be out of range because of default integer promotion. + +* Bob Friesenhahn + Fixed installation of header files. + +* Joe Orton + Added SHELL to Makefile.in to avoid problems with CShells. + +* Shaun Tancheff + Fixed regresion tests for MSVC. + +* Craig Berry + Fixed the VMS C99 workaround. + + +Version 1.10 - 2003/03/06 +------------------------- +* Rearranged some include files to accommodate large file support (reported by + Albert Chin-A-Young). + +* Added support for SunOS 4.1.x lack of strerror, tolower, and toupper + (reported by Peter McCluskey). + +* Fixed pedantic compilation with TRIO_MINIMAL. + +* Jose Kahan + Moved to avoid redefinition problems. + +* Fixed hex-float exponents (reported by Matthias Clasen). + +* Fixed handling of negative width and precision via paramters (reported by + Jacob Navia). + +* Nigel Hall + Fixed TRIO_VA_START for VMS. + +* Rune Enggaard Lausen + Fixed compilation for Borland C++ Builder. + +* Fixed precision of hex-float numbers (reported by James Antill). + +* Fixed plus sign only to be added for signed numbers. + +* Fixed printing of integers with value and precision of zero (reported by + James Antill). + +* Fixed %#.o to only print one zero if the value is zero (reported by James + Antill). + +* Rewrote check for IEEE compilation option to remove dependency on additional + scripts. + +* Mehdi Lavasani + Makefile install target fixed to work with older install programs. + +* Collapsed the DECC, MSVC, HP-UX, and AIX code for trio_fpclassify_and_sign() + with further preprocessing. + + +Version 1.9 - 2002/10/13 +------------------------ +* Fixed trio_fpclassify_and_signbit on AIX 3.2 + +* Added configure check for -ieee/-mieee compilation option for Alpha machines. + +* Craig Berry + Fixed compilation on VMS. + +* Albert Chin-A-Young + Fixed incorrect conditional expression in trio_isinf. + +* Fixed the warnings about uninitialized va_list in the printfv and scanfv + family without the use of compiler specific pragmas (suggested by Ian + Pilcher). + +* Fixed space flag for floating-point numbers (reported by Ian Main). + + +Version 1.8 - 2002/07/10 +------------------------ +* Fixed infinite loop in multibyte handling (reported by Gisli Ottarsson). + +* Added the customizable cprintf/cscanf family which enables to user to specify + input and output stream functions (suggested by Florian Schulze). + +* Fixed trio_isinf by removing the HP-UX workaround, and instead making sure + that the C99 macro will adhere to the trio return values (reported by Luke + Dunstan). + +* Alexander Lukyanov + Fixed boundary case for scanning and EOF. + +* Jacob Navia + Enabled the L modifier for formatting. + +* Added TRIO_MINIMAL to build trio without the string functions. + +* Added the R modifier to print rounded floating-point numbers. + +* Added trio_to_long_double and long double scanning (the L modifier). + +* Added trio_locale_decimal_point, trio_locale_thousand_separator, + trio_locale_grouping to overwrite locale settings. + +* Rewrote TrioWriteDouble to avoid temporary buffers and thus the danger of + buffer overflows (for instance %.5000f). + +* Improved floating-point formatting accuracy. + +* Fixed formatting of non-decimal exponents. + +* Fixed thousand separator checking. + +* Fixed %f scanning to get a float and %lf to get a double. + +* Fixed WIN32 compilation (reported by Emmanuel Mogenet) + +* Fixed regression test cases to exclude disabled features. + + +Version 1.7 - 2002/05/07 +------------------------ +* Fixed trio_to_double to handle hex-floats properly. + +* Fixed printing of %a-format to be like %e, not like %g. + +* Fixed floating-point printing of values beyond the machine accuracy. + +* Fixed %f for printing with large precision. + +* Fixed the usage of C99 nan(), which caused a crash on OSF/1 (reported by + Georg Bolz) + +* Joe Orton + Fixed %p on 64-bit platforms. + +* Made trio compile with K&R compilers. + +* Emmanuel Mogenet + Fixed bug in trio_asprintf. + +* Emmanuel Mogenet + Various WIN32 fixes. + +* Joe Orton + Fixed trio_isinf() on HP-UX, and added test cases. + +* Joe Orton + Fixed non-portable use of $^ in Makefile. + +* Joe Orton + Added autoconf. + +* Alexander Lukyanov + Fixed a number of bugs in the scanning of EOF and the count specifier. + +* Richard Jinks + Added trio_nzero + +* Fixed incorrect handling of return code from TrioReadChar (reported by + Henrik Löf) + +* Fixed parsing of character class expressions. + +* Fixed trio_to_double which did not work with long fractions. + +* Fixed %f for printing of large numbers. + +* Fixed %#s to handle whitespaces as non-printable characters. + +* Added trio_isfinite, trio_signbit, and trio_fpclassify. + +* Added new test cases. + + +Version 1.6 - 2002/01/13 +------------------------ +* Added dynamic string functions. + +* Rewrote and extended documentation in JavaDoc (using Doxygen). + +* Moved and renamed strio functions to triostr. + +* Robert Collins + Added definition for Cygwin. + +* Markus Henke + Added long double workaround for the HP C/iX compiler. + +* Marc Verwerft + Improved error handling for dynamically allocated strings. + +* John Fotheringham + Made trionan compile on OpenVMS. + +* Added 'd' and 'D' as exponent letters when using TRIO_MICROSOFT. + +* Fixed uninitial memory read for the parameter modifiers. + + +Version 1.5 - 2001/09/08 +------------------------ +* Merged with libxml changes. + +* Moved NaN and Inf handling to separate file to enable reuse in other + projects. + +* Igor Zlatkovic + Fixed TrioGenerateNan for MSVC. + +* Fixed lots of preprocessor macros and internal data structure names. + + +Version 1.4 - 2001/06/03 +------------------------ +* Added hex-float (%a and %A) for scanning. + +* Added wide character arguments (%ls, %ws, %S, %lc, %wc, and %C) for both + printf and scanf. + +* Added mutex callbacks for user-specified specifiers to enable applications to + add thread-safety. These are registered with trio_register, where the + namespace is set to either ":enter" to lock a mutex, or ":leave" to unlock a + mutex. + +* Added equivalence class expressions for scanning. For example, %[[=a=]] scans + for all letters in the same equivalence class as the letter 'a' as defined + by the locale. + +* Changed character class expressions for scanning. The expressions must now + be embedded withing an extra set of brackets, e.g. %[[:alpha:]]. This was + done to adhere to the syntax of UNIX98 regular expressions. + +* Added the possibility to specify standard support (TRIO_C99 etc.) as compiler + options. + +* Fixed conversion of hex-float in StrToDouble. + +* Fixed formatting of hex-float numbers. + +* Stan Boehm + Fixed crash on QNX, which happend because some buffers on the stack were too + big. + +* Fixed default precision for %f and %g (reported by Jose Ortiz) + +* Howard Kapustein + Added the I8, I16, I32, and I64 modifiers. + +* Jose Ortiz + Fixed rounding problem for %e. + +* Jose Ortiz + Fixed various problems with the xlC and Sun C++ compilers. + + +Version 1.3 - 2001/05/16 +------------------------ +* trio's treatment of the field width when the %e code was used was not + correct (reported by Gisli Ottarsson). It turns out the fraction part should + be zero-padded by default and the exponent part should be zero-prefixed if + it is only one digit. At least that's how the GNU and Sun libc's work. The + trio floating point output looks identical to them now. + +* Fixed group scanning with modifiers. + +* Fixed compilation for 64-bit Digital Unix. + +* Igor Zlatkovic + Fixed compilation of dprintf, which uses read/write, for MSVC. + +* Fixed various compilation problems on Digital Unix (mainly associated with + va_list). + + +Version 1.2 - 2001/04/11 +------------------------ +* Added autoconf integration. If compiled with HAVE_CONFIG_H the following + happens. Firstly, is included. Secondly, trio will only be + compiled if WITH_TRIO is defined herein. Thirdly, if TRIO_REPLACE_STDIO is + defined, only stdio functions that have not been detected by autoconf, i.e. + those not defined by HAVE_PRINTF or similar, will be replaced by trio + functions (suggested by Daniel Veillard). + +* Fixed '%m.nf' output. Previously trio did not treat the width properly + in all cases (reported by Gisli Ottarsson). + +* Added explicit promotion for the scanfv family. + +* Fixed more C++ compilation warnings. + + +Version 1.1 - 2001/02/25 +------------------------ +* Added explicit promotion for the printfv familiy. A float must be specified + by %hf. + +* Fixed positionals for printfv (reported by Gisli Ottarsson). + +* Fixed an integer to pointer conversion problem on the SGI MIPS C compiler + (reported by Gisli Ottarsson). + +* Fixed ANSI C++ warnings (type casting, and namespace is a reserved keyword). + +* Added \n to all examples in the documentation to prevent confusion. + +* Fixed StrSubstringMax + + +Version 1.0 - 2000/12/10 +------------------------ +* Bumped Version number. + + +Version 0.25 - 2000/12/09 +------------------------- +* Wrote more documentation. + +* Improved NaN support and added NaN to regression test. + +* Fixed C99 support. + +* Added missing getter/setter functions. + + +Version 0.24 - 2000/12/02 +------------------------- +* Added callback functionality for the user-defined specifier (<>). All + the necessary functions are defined in triop.h header file. See the + documentation for trio_register for further detail. + +* Wrote initial documentation on the callback functionality. + +* Added the printfv and scanfv family of functions, which takes a pointer + array rather than variadic arguments. Each pointer in the array must point + to the associated data (requested by Bruce Korb). + +* As indicated in version 0.21 the extension modifiers (<>) have now been + completely removed. + +* Added skipping of thousand-separators in floating-point number scanning. + + +Version 0.23 - 2000/10/21 +------------------------- +* Added width to scanning of floating-point numbers. + +* Wrote more documentation on trio_printf. + +* Fixed problem with trailing zeroes after decimal-point. + + +Version 0.22 - 2000/08/06 +------------------------- +* Added LC_CTYPE locale dependent character class expressions to scan lists. + Included are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], + [:lower:], [:print:], [:punct:], [:space:], [:upper:], [:xdigit:] + +* Added C escapes to alternative string formatting and scanning. + +* Added StrSubstringMax. + +* Wrote a little more documentation. + +* Fixed scanf return values. + +* Fixed a sign error for non-ascii characters. + + +Version 0.21 - 2000/07/19 +------------------------- +* Converted the documentation to TeX. With latex2man the documentation can + automatically be converted into man pages. + +* Added trio_scanf, trio_vscanf, trio_fscanf, and trio_vfscanf. + +* Added trio_dprintf, trio_vdprintf, trio_dscanf, and trio_vdscanf. These + functions can be used to write and read directly to pipes and sockets (the + assume blocking sockets). Stdio buffering is surpassed, so the functions are + async-safe. However, reading from stdin (STDIN_FILENO) or writing to stdout + (STDOUT_FILENO) reintroduces the buffering. + +* Paul Janzen + Added trio_asprintf and trio_vasprintf, which are compatible with the GNU + and BSD interfaces. + +* Added scanlist ranges for group scanning (%[]). + +* Added width for scanning (missing for floating-point numbers though). + +* Added variable size modifier (&) to handle system defined types of unknown + size. This modifier makes certain assumptions about the integer sizes, which + may not be valid on any machine. Consequently, the modifier will remain + undocumented, as it may be removed later. + +* Added \777 and \xFF to alternative string scanning (%#s) + +* Added the TRIO_REPLACE_STDIO check in the header. + +* Improved performance of the multibyte character parsing. + +* Fixed positionals (%n$) which had stopped working. + +* Fixed hh and ll modifiers to allow exactly two letters and no more. + +* Fixed ANSI C++ warnings. Also fixed the compiler warning about casting + between integer and pointer (this has been annoying me for ages). + +* Fixed snprintf and vsnprintf with zero buffer size. + +* Fixed NAN problems (reported by Keith Briggs). + +* Fixed parsing of multibyte characters. The format string was not correctly + advanced in case of a multibyte character. + +* Renamed many of the internal functions to have more consistant names. + +* Removed the and modifiers. They are not really worth + including. The other <> modifiers may disappear as well. + + +Version 0.20 - 2000/06/05 +------------------------- +* Added intmax_t and ptrdiff_t support. + +* Added support for LC_NUMERIC grouping. + +* Added double-dot notation for the conversion base. The style is now + %width.precision.base, where any argument can be a number, an asterix + indicating a parameter, or be omitted entirely. For example, %*..2i is + to specify binary numbers without precision, and with width as a parameter + on the va_list. + +* Added sticky modifier (!), which makes subsequent specifiers of the same + type reuse the current modifiers. Inspired by a suggestion from Gary Porter. + +* Added group scanning (%[]). Scanlist ranges and multibyte sequences are not + supported yet. + +* Added count scanning (%n). + +* Changed the number scanning to accept thousand separators and any base. + +* Fixed positional for parameters. It is possible to write something like + %3$*1$.*2$d (which happens to be the same as %*.*d). + +* Fixed precision of integers. + +* Fixed parameter flags. Before trio could only handle one parameter flag per + specifier, although two (three with double-dot base) were possible. + +* Fixed isinf() for those platforms where it is unimplemented. + + +Version 0.18 - 2000/05/27 +------------------------- +* Rewrote the entire floating-point formatting function (Danny Dulai had + reported several errors and even supplied some patches, which unfortunately + were lost due to the refactoring). + +* Removed the use of strlen() in the declaration of a stack array. This + caused problems on some compilers (besides it isn't really ANSI C compliant + anyways). Using some arbitrarily chosen maximum value; should examine if + some standard defines an upper limit on the length of decimal-point and + thousands-separator (sizeof(wchar_t) perhaps?) + +* Changed the parsing of the format string to be multibyte aware. + + +Version 0.17 - 2000/05/19 +------------------------- +* Added INF, -INF, and NAN for floating-point numbers. + +* Fixed %#.9g -- alternative with precision. + +* Ken Gibson + Fixed printing of negative hex numbers + +* Joerg (last name unknown) + Fixed convertion of non-ASCII characters + + +Version 0.16 - 1999/08/06 +------------------------- +* Changed the constness of the second argument of StrFloat and StrDouble. The + lack of parameter overloading in C is the reason for the strange use of + constness in strtof and strtod. + +* Cleaned up constness. + + +Version 0.15 - 1999/07/23 +------------------------- +* Fixed the internal representation of numbers from signed to unsigned. Signed + numbers posed a problem for large unsigned numbers (reported by Tero) + +* Fixed a tiny bug in trio_vsprintfcat + +* Changed the meaning of the max argument of StrAppendMax to be consistant + with StrFormatAppendMax. Now it is the maximal size of the entire target + buffer, not just the appended size. This makes it easier to avoid buffer + overflows (requested by Tero) + + +Version 0.14 - 1999/05/16 +------------------------- +* Added size_t support (just waiting for a C99 compliant compiler to add + ptrdiff_t and intmax_t) + +* Rewrote TrioOutStreamDouble so it does not use the libc sprintf to emulate + floating-point anylonger. + +* Fixed width, precision, and adjustment for numbers and doubles. + + +Version 0.13 - 1999/05/06 +------------------------- +* Fixed zero padding for %d. Now %d will only zero pad if explicitly requested + to do so with the 0 flag (reported by Tero). + +* Fixed an incorrect while() condition in TrioGetString (reported by Tero). + + +Version 0.12 - 1999/04/19 +------------------------- +* Fixed incorrect zero padding of pointers + +* Added StrHash with STRIO_HASH_PLAIN + +* Added StrFormatDateMax + + +Version 0.11 - 1999/03/25 +------------------------- +* Made it compile under cygwin + +* Fixed a bug were TrioPreprocess would return an error if no formatting chars + were found (reported by Tero). + + +Version - 1999/03/19 +-------------------- +* Added trio_strerror and TRIO_ERROR_NAME. + +* Changed the error codes to be positive (as errno) + +* Fixed two reads of uninitialized memory reported by Purify + +* Added binary specifiers 'b' and 'B' (like SCO.) ThousandSeparator can be + used to separate nibbles (4 bit) + +* Renamed all Internal* functions to Trio*, which seems like a better + namespace (even though it is of no practical interest because these + functions are not visible beyond the scope of this file.) + + +Version - 1999/03/12 +-------------------- +* Added hex-float format for StrToDouble + +* Double references and gaps in the arguments are not allowed (for the %n$ + format) and in both cases an error code is returned. + +* Added StrToDouble (and StrToFloat) + + +Version - 1999/03/08 +-------------------- +* Added InStream and OutStream to the trio_T structure. + +* Started work on TrioScan. + +* Return values for errors changed. Two macros to unpack the error code has + been added to the header. + +* Shortshort (hh) flag added. + +* %#s also quotes the quote-char now. + +* Removed the 'errorInFormat' boolean, which isn't used anymore after the + functions bail out with an error instead. + + +Version - 1999/03/04 +-------------------- +* More than MAX_PARAMETERS parametes will now cause the TrioPreprocess() + function to return error. + +* Unknown flags and/or specifiers cause errors too. + +* Added trio_snprintfcat and trio_vsnprintfcat and the defined name + StrFormatAppendMax. They append a formatted string to the end of a string. + +* Define MAX_PARAMETERS to 128 at all times instead of using NL_ARGMAX when + that exists. + +* Added platform fixes for Amiga as suggested by Tero Jänkä + + +Version - 1999/01/31 +-------------------- +* vaprintf did add a zero byte even when it had failed. + +* Cleaned up the code for locale handling and thousand separator + +* Added trio_aprintf() and trio_vaprintf(). They return an allocated string. + +* Added thousands separator for numbers + +* Added floating point support for *printf + + +Version - 1998/10/20 +-------------------- +* StrMatchCase() called StrMatch() instead of itself recursively + +* Rewrote the implementation of *printf and *scanf and put all the code in + this file. Extended qualifiers and qualifiers from other standards were + added. + +* Added StrSpanFunction, StrToLong, and StrToUnsignedLong + + +Version - 1998/05/23 +-------------------- +* Made the StrEqual* functions resistant to NULL pointers + +* Turns out strdup() is no standard at all, and some platforms (I seem to + recall HP-UX) has problems with it. Made our own StrDuplicate() instead. + +* Added StrFormat() and StrFormatMax() to serve as sprintf() and snprintf() + respectively. diff --git a/libmednahawk/src/trio/Makefile.am b/libmednahawk/src/trio/Makefile.am new file mode 100644 index 0000000000..6f664b858a --- /dev/null +++ b/libmednahawk/src/trio/Makefile.am @@ -0,0 +1,6 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @TRIO_CFLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl + +noinst_LIBRARIES = libtrio.a +libtrio_a_SOURCES = trio.c trionan.c triostr.c diff --git a/libmednahawk/src/trio/Makefile.in b/libmednahawk/src/trio/Makefile.in new file mode 100644 index 0000000000..3393fdfc59 --- /dev/null +++ b/libmednahawk/src/trio/Makefile.in @@ -0,0 +1,599 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = src/trio +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libtrio_a_AR = $(AR) $(ARFLAGS) +libtrio_a_LIBADD = +am_libtrio_a_OBJECTS = trio.$(OBJEXT) trionan.$(OBJEXT) \ + triostr.$(OBJEXT) +libtrio_a_OBJECTS = $(am_libtrio_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libtrio_a_SOURCES) +DIST_SOURCES = $(libtrio_a_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @TRIO_CFLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl +noinst_LIBRARIES = libtrio.a +libtrio_a_SOURCES = trio.c trionan.c triostr.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/trio/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/trio/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libtrio.a: $(libtrio_a_OBJECTS) $(libtrio_a_DEPENDENCIES) + $(AM_V_at)-rm -f libtrio.a + $(AM_V_AR)$(libtrio_a_AR) libtrio.a $(libtrio_a_OBJECTS) $(libtrio_a_LIBADD) + $(AM_V_at)$(RANLIB) libtrio.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trionan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/triostr.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/trio/trio.c b/libmednahawk/src/trio/trio.c new file mode 100644 index 0000000000..d6b48d4a08 --- /dev/null +++ b/libmednahawk/src/trio/trio.c @@ -0,0 +1,7766 @@ +/************************************************************************* + * + * $Id: trio.c,v 1.129 2009/09/20 11:37:15 breese Exp $ + * + * Copyright (C) 1998, 2009 Bjorn Reese and Daniel Stenberg. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************* + * + * A note to trio contributors: + * + * Avoid heap allocation at all costs to ensure that the trio functions + * are async-safe. The exceptions are the printf/fprintf functions, which + * uses fputc, and the asprintf functions and the modifier, which + * by design are required to allocate form the heap. + * + ************************************************************************/ + +/* + * TODO: + * - Scan is probably too permissive about its modifiers. + * - C escapes in %#[] ? + * - Multibyte characters (done for format parsing, except scan groups) + * - Complex numbers? (C99 _Complex) + * - Boolean values? (C99 _Bool) + * - C99 NaN(n-char-sequence) missing. The n-char-sequence can be used + * to print the mantissa, e.g. NaN(0xc000000000000000) + * - Should we support the GNU %a alloc modifier? GNU has an ugly hack + * for %a, because C99 used %a for other purposes. If specified as + * %as or %a[ it is interpreted as the alloc modifier, otherwise as + * the C99 hex-float. This means that you cannot scan %as as a hex-float + * immediately followed by an 's'. + * - Scanning of collating symbols. + */ + +/************************************************************************* + * Trio include files + */ +#include +#include +#include + +#if defined(TRIO_EMBED_NAN) +# define TRIO_PUBLIC_NAN static +# if TRIO_FEATURE_FLOAT +# define TRIO_FUNC_NAN +# define TRIO_FUNC_NINF +# define TRIO_FUNC_PINF +# define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT +# define TRIO_FUNC_ISINF +# endif +#endif +#include + +#if defined(TRIO_EMBED_STRING) +# define TRIO_PUBLIC_STRING static +# define TRIO_FUNC_LENGTH +# define TRIO_FUNC_LENGTH_MAX +# define TRIO_FUNC_TO_LONG +# if TRIO_FEATURE_LOCALE +# define TRIO_FUNC_COPY_MAX +# endif +# if TRIO_FEATURE_DYNAMICSTRING +# define TRIO_FUNC_XSTRING_DUPLICATE +# endif +# if TRIO_EXTENSION && TRIO_FEATURE_SCANF +# define TRIO_FUNC_EQUAL_LOCALE +# endif +# if TRIO_FEATURE_ERRNO +# define TRIO_FUNC_ERROR +# endif +# if TRIO_FEATURE_FLOAT && TRIO_FEATURE_SCANF +# define TRIO_FUNC_TO_DOUBLE +# endif +# if TRIO_FEATURE_DYNAMICSTRING +# define TRIO_FUNC_STRING_EXTRACT +# endif +# if TRIO_FEATURE_DYNAMICSTRING +# define TRIO_FUNC_STRING_TERMINATE +# endif +# if TRIO_FEATURE_USER_DEFINED +# define TRIO_FUNC_DUPLICATE +# endif +# if TRIO_FEATURE_DYNAMICSTRING +# define TRIO_FUNC_STRING_DESTROY +# endif +# if TRIO_FEATURE_USER_DEFINED +# define TRIO_FUNC_DESTROY +# endif +# if TRIO_FEATURE_USER_DEFINED || (TRIO_FEATURE_FLOAT && TRIO_FEATURE_SCANF) +# define TRIO_FUNC_EQUAL +# endif +# if TRIO_FEATURE_USER_DEFINED || TRIO_FEATURE_SCANF +# define TRIO_FUNC_EQUAL_CASE +# endif +# if (TRIO_EXTENSION && TRIO_FEATURE_SCANF) +# define TRIO_FUNC_EQUAL_MAX +# endif +# if TRIO_FEATURE_SCANF +# define TRIO_FUNC_TO_UPPER +# endif +# if TRIO_FEATURE_DYNAMICSTRING +# define TRIO_FUNC_XSTRING_APPEND_CHAR +# endif +#endif +#include + +/************************************************************************** + * + * Definitions + * + *************************************************************************/ + +#include +#if TRIO_FEATURE_FLOAT +# include +# include +#endif + +#if defined(__STDC_ISO_10646__) || defined(MB_LEN_MAX) || defined(USE_MULTIBYTE) || TRIO_FEATURE_WIDECHAR +# if !defined(TRIO_PLATFORM_WINCE) +# define TRIO_COMPILER_SUPPORTS_MULTIBYTE +# if !defined(MB_LEN_MAX) +# define MB_LEN_MAX 6 +# endif +# endif +#endif + +#if (TRIO_COMPILER_VISUALC - 0 >= 1100) || defined(TRIO_COMPILER_BORLAND) +# define TRIO_COMPILER_SUPPORTS_VISUALC_INT +#endif + +#if TRIO_FEATURE_FLOAT +# if defined(PREDEF_STANDARD_C99) \ + || defined(PREDEF_STANDARD_UNIX03) +# if !defined(HAVE_FLOORL) && !defined(TRIO_NO_FLOORL) +# define HAVE_FLOORL +# endif +# if !defined(HAVE_CEILL) && !defined(TRIO_NO_CEILL) +# define HAVE_CEILL +# endif +# if !defined(HAVE_POWL) && !defined(TRIO_NO_POWL) +# define HAVE_POWL +# endif +# if !defined(HAVE_FMODL) && !defined(TRIO_NO_FMODL) +# define HAVE_FMODL +# endif +# if !defined(HAVE_LOG10L) && !defined(TRIO_NO_LOG10L) +# define HAVE_LOG10L +# endif +# endif +# if defined(TRIO_COMPILER_VISUALC) +# if defined(floorl) +# define HAVE_FLOORL +# endif +# if defined(ceill) +# define HAVE_CEILL +# endif +# if defined(powl) +# define HAVE_POWL +# endif +# if defined(fmodl) +# define HAVE_FMODL +# endif +# if defined(log10l) +# define HAVE_LOG10L +# endif +# endif +#endif + +/************************************************************************* + * Generic definitions + */ + +#if !(defined(DEBUG) || defined(NDEBUG)) +# define NDEBUG +#endif + +#include +#include +#if defined(PREDEF_STANDARD_C99) && !defined(isascii) +# define isascii(x) ((x) & 0x7F) +#endif +#if defined(TRIO_COMPILER_ANCIENT) +# include +#else +# include +#endif +#include +#if defined(TRIO_PLATFORM_WINCE) +extern int errno; +#else +# include +#endif + +#ifndef NULL +# define NULL 0 +#endif +#define NIL ((char)0) +#ifndef FALSE +# define FALSE (1 == 0) +# define TRUE (! FALSE) +#endif +#define BOOLEAN_T int + +/* mincore() can be used for debugging purposes */ +#define VALID(x) (NULL != (x)) + +#if TRIO_FEATURE_ERRORCODE + /* + * Encode the error code and the position. This is decoded + * with TRIO_ERROR_CODE and TRIO_ERROR_POSITION. + */ +# define TRIO_ERROR_RETURN(x,y) (- ((x) + ((y) << 8))) +#else +# define TRIO_ERROR_RETURN(x,y) (-1) +#endif + +typedef unsigned long trio_flags_t; + + +/************************************************************************* + * Platform specific definitions + */ +#if defined(TRIO_PLATFORM_UNIX) +# include +# include +# include +# if !defined(TRIO_FEATURE_LOCALE) +# define USE_LOCALE +# endif +#endif /* TRIO_PLATFORM_UNIX */ +#if defined(TRIO_PLATFORM_VMS) +# include +#endif +#if defined(TRIO_PLATFORM_WIN32) +# if defined(TRIO_PLATFORM_WINCE) +int read(int handle, char *buffer, unsigned int length); +int write(int handle, const char *buffer, unsigned int length); +# else +# include +# define read _read +# define write _write +# endif +#endif /* TRIO_PLATFORM_WIN32 */ + +#if TRIO_FEATURE_WIDECHAR +# if defined(PREDEF_STANDARD_C94) +# include +# include +typedef wchar_t trio_wchar_t; +typedef wint_t trio_wint_t; +# else +typedef char trio_wchar_t; +typedef int trio_wint_t; +# define WCONST(x) L ## x +# define WEOF EOF +# define iswalnum(x) isalnum(x) +# define iswalpha(x) isalpha(x) +# define iswcntrl(x) iscntrl(x) +# define iswdigit(x) isdigit(x) +# define iswgraph(x) isgraph(x) +# define iswlower(x) islower(x) +# define iswprint(x) isprint(x) +# define iswpunct(x) ispunct(x) +# define iswspace(x) isspace(x) +# define iswupper(x) isupper(x) +# define iswxdigit(x) isxdigit(x) +# endif +#endif + + +/************************************************************************* + * Compiler dependent definitions + */ + +/* Support for long long */ +#ifndef __cplusplus +# if !defined(USE_LONGLONG) +# if defined(TRIO_COMPILER_GCC) && !defined(__STRICT_ANSI__) +# define USE_LONGLONG +# else +# if defined(TRIO_COMPILER_SUNPRO) +# define USE_LONGLONG +# else +# if defined(TRIO_COMPILER_MSVC) && (_MSC_VER >= 1400) +# define USE_LONGLONG +# else +# if defined(_LONG_LONG) || defined(_LONGLONG) +# define USE_LONGLONG +# endif +# endif +# endif +# endif +# endif +#endif + +/* The extra long numbers */ +#if defined(USE_LONGLONG) +typedef signed long long int trio_longlong_t; +typedef unsigned long long int trio_ulonglong_t; +#else +# if defined(TRIO_COMPILER_SUPPORTS_VISUALC_INT) +typedef signed __int64 trio_longlong_t; +typedef unsigned __int64 trio_ulonglong_t; +# else +typedef TRIO_SIGNED long int trio_longlong_t; +typedef unsigned long int trio_ulonglong_t; +# endif +#endif + +/* Maximal and fixed integer types */ +#if defined(PREDEF_STANDARD_C99) +# include +typedef intmax_t trio_intmax_t; +typedef uintmax_t trio_uintmax_t; +typedef int8_t trio_int8_t; +typedef int16_t trio_int16_t; +typedef int32_t trio_int32_t; +typedef int64_t trio_int64_t; +#else +# if defined(PREDEF_STANDARD_UNIX98) +# include +typedef intmax_t trio_intmax_t; +typedef uintmax_t trio_uintmax_t; +typedef int8_t trio_int8_t; +typedef int16_t trio_int16_t; +typedef int32_t trio_int32_t; +typedef int64_t trio_int64_t; +# else +# if defined(TRIO_COMPILER_SUPPORTS_VISUALC_INT) +typedef trio_longlong_t trio_intmax_t; +typedef trio_ulonglong_t trio_uintmax_t; +typedef __int8 trio_int8_t; +typedef __int16 trio_int16_t; +typedef __int32 trio_int32_t; +typedef __int64 trio_int64_t; +# else +typedef trio_longlong_t trio_intmax_t; +typedef trio_ulonglong_t trio_uintmax_t; +# if defined(TRIO_INT8_T) +typedef TRIO_INT8_T trio_int8_t; +# else +typedef TRIO_SIGNED char trio_int8_t; +# endif +# if defined(TRIO_INT16_T) +typedef TRIO_INT16_T trio_int16_t; +# else +typedef TRIO_SIGNED short trio_int16_t; +# endif +# if defined(TRIO_INT32_T) +typedef TRIO_INT32_T trio_int32_t; +# else +typedef TRIO_SIGNED int trio_int32_t; +# endif +# if defined(TRIO_INT64_T) +typedef TRIO_INT64_T trio_int64_t; +# else +typedef trio_longlong_t trio_int64_t; +# endif +# endif +# endif +#endif + +#if defined(HAVE_FLOORL) +# define trio_floor(x) floorl((x)) +#else +# define trio_floor(x) floor((double)(x)) +#endif + +#if defined(HAVE_CEILL) +# define trio_ceil(x) ceill((x)) +#else +# define trio_ceil(x) ceil((double)(x)) +#endif + +#if defined(HAVE_FMODL) +# define trio_fmod(x,y) fmodl((x),(y)) +#else +# define trio_fmod(x,y) fmod((double)(x),(double)(y)) +#endif + +#if defined(HAVE_POWL) +# define trio_pow(x,y) powl((x),(y)) +#else +# define trio_pow(x,y) pow((double)(x),(double)(y)) +#endif + +#if defined(HAVE_LOG10L) +# define trio_log10(x) log10l((x)) +#else +# define trio_log10(x) log10((double)(x)) +#endif + +#if TRIO_FEATURE_FLOAT +# define TRIO_FABS(x) (((x) < 0.0) ? -(x) : (x)) +#endif + +/************************************************************************* + * Internal Definitions + */ + +#if TRIO_FEATURE_FLOAT + +# if !defined(DECIMAL_DIG) +# define DECIMAL_DIG DBL_DIG +# endif + +/* Long double sizes */ +# ifdef LDBL_DIG +# define MAX_MANTISSA_DIGITS LDBL_DIG +# define MAX_EXPONENT_DIGITS 4 +# define MAX_DOUBLE_DIGITS LDBL_MAX_10_EXP +# else +# define MAX_MANTISSA_DIGITS DECIMAL_DIG +# define MAX_EXPONENT_DIGITS 3 +# define MAX_DOUBLE_DIGITS DBL_MAX_10_EXP +# endif + +# if defined(TRIO_COMPILER_ANCIENT) || !defined(LDBL_DIG) +# undef LDBL_DIG +# undef LDBL_MANT_DIG +# undef LDBL_EPSILON +# define LDBL_DIG DBL_DIG +# define LDBL_MANT_DIG DBL_MANT_DIG +# define LDBL_EPSILON DBL_EPSILON +# endif + +#endif /* TRIO_FEATURE_FLOAT */ + +/* The maximal number of digits is for base 2 */ +#define MAX_CHARS_IN(x) (sizeof(x) * CHAR_BIT) +/* The width of a pointer. The number of bits in a hex digit is 4 */ +#define POINTER_WIDTH ((sizeof("0x") - 1) + sizeof(trio_pointer_t) * CHAR_BIT / 4) + +#if TRIO_FEATURE_FLOAT +/* Infinite and Not-A-Number for floating-point */ +# define INFINITE_LOWER "inf" +# define INFINITE_UPPER "INF" +# define LONG_INFINITE_LOWER "infinite" +# define LONG_INFINITE_UPPER "INFINITE" +# define NAN_LOWER "nan" +# define NAN_UPPER "NAN" +#endif + +/* Various constants */ +enum { + TYPE_PRINT = 1, +#if TRIO_FEATURE_SCANF + TYPE_SCAN = 2, +#endif + + /* Flags. FLAGS_LAST must be less than ULONG_MAX */ + FLAGS_NEW = 0, + FLAGS_STICKY = 1, + FLAGS_SPACE = 2 * FLAGS_STICKY, + FLAGS_SHOWSIGN = 2 * FLAGS_SPACE, + FLAGS_LEFTADJUST = 2 * FLAGS_SHOWSIGN, + FLAGS_ALTERNATIVE = 2 * FLAGS_LEFTADJUST, + FLAGS_SHORT = 2 * FLAGS_ALTERNATIVE, + FLAGS_SHORTSHORT = 2 * FLAGS_SHORT, + FLAGS_LONG = 2 * FLAGS_SHORTSHORT, + FLAGS_QUAD = 2 * FLAGS_LONG, + FLAGS_LONGDOUBLE = 2 * FLAGS_QUAD, + FLAGS_SIZE_T = 2 * FLAGS_LONGDOUBLE, + FLAGS_PTRDIFF_T = 2 * FLAGS_SIZE_T, + FLAGS_INTMAX_T = 2 * FLAGS_PTRDIFF_T, + FLAGS_NILPADDING = 2 * FLAGS_INTMAX_T, + FLAGS_UNSIGNED = 2 * FLAGS_NILPADDING, + FLAGS_UPPER = 2 * FLAGS_UNSIGNED, + FLAGS_WIDTH = 2 * FLAGS_UPPER, + FLAGS_WIDTH_PARAMETER = 2 * FLAGS_WIDTH, + FLAGS_PRECISION = 2 * FLAGS_WIDTH_PARAMETER, + FLAGS_PRECISION_PARAMETER = 2 * FLAGS_PRECISION, + FLAGS_BASE = 2 * FLAGS_PRECISION_PARAMETER, + FLAGS_BASE_PARAMETER = 2 * FLAGS_BASE, + FLAGS_FLOAT_E = 2 * FLAGS_BASE_PARAMETER, + FLAGS_FLOAT_G = 2 * FLAGS_FLOAT_E, + FLAGS_QUOTE = 2 * FLAGS_FLOAT_G, + FLAGS_WIDECHAR = 2 * FLAGS_QUOTE, + FLAGS_IGNORE = 2 * FLAGS_WIDECHAR, + FLAGS_IGNORE_PARAMETER = 2 * FLAGS_IGNORE, + FLAGS_VARSIZE_PARAMETER = 2 * FLAGS_IGNORE_PARAMETER, + FLAGS_FIXED_SIZE = 2 * FLAGS_VARSIZE_PARAMETER, + FLAGS_LAST = FLAGS_FIXED_SIZE, + /* Reused flags */ + FLAGS_EXCLUDE = FLAGS_SHORT, + FLAGS_USER_DEFINED = FLAGS_IGNORE, + FLAGS_USER_DEFINED_PARAMETER = FLAGS_IGNORE_PARAMETER, + FLAGS_ROUNDING = FLAGS_INTMAX_T, + /* Compounded flags */ + FLAGS_ALL_VARSIZES = FLAGS_LONG | FLAGS_QUAD | FLAGS_INTMAX_T | FLAGS_PTRDIFF_T | FLAGS_SIZE_T, + FLAGS_ALL_SIZES = FLAGS_ALL_VARSIZES | FLAGS_SHORTSHORT | FLAGS_SHORT, + + NO_POSITION = -1, + NO_WIDTH = 0, + NO_PRECISION = -1, + NO_SIZE = -1, + + /* Do not change these */ + NO_BASE = -1, + MIN_BASE = 2, + MAX_BASE = 36, + BASE_BINARY = 2, + BASE_OCTAL = 8, + BASE_DECIMAL = 10, + BASE_HEX = 16, + + /* Maximal number of allowed parameters */ + MAX_PARAMETERS = 64, + /* Maximal number of characters in class */ + MAX_CHARACTER_CLASS = UCHAR_MAX + 1, + +#if TRIO_FEATURE_USER_DEFINED + /* Maximal string lengths for user-defined specifiers */ + MAX_USER_NAME = 64, + MAX_USER_DATA = 256, +#endif + + /* Maximal length of locale separator strings */ + MAX_LOCALE_SEPARATOR_LENGTH = MB_LEN_MAX, + /* Maximal number of integers in grouping */ + MAX_LOCALE_GROUPS = 64 +}; + +#define NO_GROUPING ((int)CHAR_MAX) + +/* Fundamental formatting parameter types */ +#define FORMAT_SENTINEL -1 /* marks end of parameters array */ +#define FORMAT_UNKNOWN 0 +#define FORMAT_INT 1 +#define FORMAT_DOUBLE 2 +#define FORMAT_CHAR 3 +#define FORMAT_STRING 4 +#define FORMAT_POINTER 5 +#define FORMAT_COUNT 6 +#define FORMAT_PARAMETER 7 +#define FORMAT_GROUP 8 +#define FORMAT_ERRNO 9 +#define FORMAT_USER_DEFINED 10 + +/* Character constants */ +#define CHAR_IDENTIFIER '%' +#define CHAR_ALT_IDENTIFIER '$' +#define CHAR_BACKSLASH '\\' +#define CHAR_QUOTE '\"' +#define CHAR_ADJUST ' ' + +#if TRIO_EXTENSION +/* Character class expressions */ +# define CLASS_ALNUM "[:alnum:]" +# define CLASS_ALPHA "[:alpha:]" +# define CLASS_BLANK "[:blank:]" +# define CLASS_CNTRL "[:cntrl:]" +# define CLASS_DIGIT "[:digit:]" +# define CLASS_GRAPH "[:graph:]" +# define CLASS_LOWER "[:lower:]" +# define CLASS_PRINT "[:print:]" +# define CLASS_PUNCT "[:punct:]" +# define CLASS_SPACE "[:space:]" +# define CLASS_UPPER "[:upper:]" +# define CLASS_XDIGIT "[:xdigit:]" +#endif + +/* + * SPECIFIERS: + * + * + * a Hex-float + * A Hex-float + * c Character + * C Widechar character (wint_t) + * d Decimal + * e Float + * E Float + * F Float + * F Float + * g Float + * G Float + * i Integer + * m Error message + * n Count + * o Octal + * p Pointer + * s String + * S Widechar string (wchar_t *) + * u Unsigned + * x Hex + * X Hex + * [] Group + * <> User-defined + * + * Reserved: + * + * D Binary Coded Decimal %D(length,precision) (OS/390) + */ +#define SPECIFIER_CHAR 'c' +#define SPECIFIER_STRING 's' +#define SPECIFIER_DECIMAL 'd' +#define SPECIFIER_INTEGER 'i' +#define SPECIFIER_UNSIGNED 'u' +#define SPECIFIER_OCTAL 'o' +#define SPECIFIER_HEX 'x' +#define SPECIFIER_HEX_UPPER 'X' +#if TRIO_FEATURE_FLOAT +# define SPECIFIER_FLOAT_E 'e' +# define SPECIFIER_FLOAT_E_UPPER 'E' +# define SPECIFIER_FLOAT_F 'f' +# define SPECIFIER_FLOAT_F_UPPER 'F' +# define SPECIFIER_FLOAT_G 'g' +# define SPECIFIER_FLOAT_G_UPPER 'G' +#endif +#define SPECIFIER_POINTER 'p' +#if TRIO_FEATURE_SCANF +# define SPECIFIER_GROUP '[' +# define SPECIFIER_UNGROUP ']' +#endif +#define SPECIFIER_COUNT 'n' +#if TRIO_UNIX98 +# define SPECIFIER_CHAR_UPPER 'C' +# define SPECIFIER_STRING_UPPER 'S' +#endif +#define SPECIFIER_HEXFLOAT 'a' +#define SPECIFIER_HEXFLOAT_UPPER 'A' +#define SPECIFIER_ERRNO 'm' +#if TRIO_FEATURE_BINARY +# define SPECIFIER_BINARY 'b' +# define SPECIFIER_BINARY_UPPER 'B' +#endif +#if TRIO_FEATURE_USER_DEFINED +# define SPECIFIER_USER_DEFINED_BEGIN '<' +# define SPECIFIER_USER_DEFINED_END '>' +# define SPECIFIER_USER_DEFINED_SEPARATOR ':' +# define SPECIFIER_USER_DEFINED_EXTRA '|' +#endif + +/* + * QUALIFIERS: + * + * + * Numbers = d,i,o,u,x,X + * Float = a,A,e,E,f,F,g,G + * String = s + * Char = c + * + * + * 9$ Position + * Use the 9th parameter. 9 can be any number between 1 and + * the maximal argument + * + * 9 Width + * Set width to 9. 9 can be any number, but must not be postfixed + * by '$' + * + * h Short + * Numbers: + * (unsigned) short int + * + * hh Short short + * Numbers: + * (unsigned) char + * + * l Long + * Numbers: + * (unsigned) long int + * String: + * as the S specifier + * Char: + * as the C specifier + * + * ll Long Long + * Numbers: + * (unsigned) long long int + * + * L Long Double + * Float + * long double + * + * # Alternative + * Float: + * Decimal-point is always present + * String: + * non-printable characters are handled as \number + * + * Spacing + * + * + Sign + * + * - Alignment + * + * . Precision + * + * * Parameter + * print: use parameter + * scan: no parameter (ignore) + * + * q Quad + * + * Z size_t + * + * w Widechar + * + * ' Thousands/quote + * Numbers: + * Integer part grouped in thousands + * Binary numbers: + * Number grouped in nibbles (4 bits) + * String: + * Quoted string + * + * j intmax_t + * t prtdiff_t + * z size_t + * + * ! Sticky + * @ Parameter (for both print and scan) + * + * I n-bit Integer + * Numbers: + * The following options exists + * I8 = 8-bit integer + * I16 = 16-bit integer + * I32 = 32-bit integer + * I64 = 64-bit integer + */ +#define QUALIFIER_POSITION '$' +#define QUALIFIER_SHORT 'h' +#define QUALIFIER_LONG 'l' +#define QUALIFIER_LONG_UPPER 'L' +#define QUALIFIER_ALTERNATIVE '#' +#define QUALIFIER_SPACE ' ' +#define QUALIFIER_PLUS '+' +#define QUALIFIER_MINUS '-' +#define QUALIFIER_DOT '.' +#define QUALIFIER_STAR '*' +#define QUALIFIER_CIRCUMFLEX '^' /* For scanlists */ +#define QUALIFIER_SIZE_T 'z' +#define QUALIFIER_PTRDIFF_T 't' +#define QUALIFIER_INTMAX_T 'j' +#define QUALIFIER_QUAD 'q' +#define QUALIFIER_SIZE_T_UPPER 'Z' +#if TRIO_MISC +# define QUALIFIER_WIDECHAR 'w' +#endif +#define QUALIFIER_FIXED_SIZE 'I' +#define QUALIFIER_QUOTE '\'' +#define QUALIFIER_STICKY '!' +#define QUALIFIER_VARSIZE '&' /* This should remain undocumented */ +#define QUALIFIER_ROUNDING_UPPER 'R' +#if TRIO_EXTENSION +# define QUALIFIER_PARAM '@' /* Experimental */ +# define QUALIFIER_COLON ':' /* For scanlists */ +# define QUALIFIER_EQUAL '=' /* For scanlists */ +#endif + + +/************************************************************************* + * + * Internal Structures + * + *************************************************************************/ + +/* Parameters */ +typedef struct { + /* An indication of which entry in the data union is used */ + int type; + /* The flags */ + trio_flags_t flags; + /* The width qualifier */ + int width; + /* The precision qualifier */ + int precision; + /* The base qualifier */ + int base; + /* Base from specifier */ + int baseSpecifier; + /* The size for the variable size qualifier */ + int varsize; + /* Offset of the first character of the specifier */ + int beginOffset; + /* Offset of the first character after the specifier */ + int endOffset; + /* Position in the argument list that this parameter refers to */ + int position; + /* The data from the argument list */ + union { + char *string; +#if TRIO_FEATURE_WIDECHAR + trio_wchar_t *wstring; +#endif + trio_pointer_t pointer; + union { + trio_intmax_t as_signed; + trio_uintmax_t as_unsigned; + } number; +#if TRIO_FEATURE_FLOAT + double doubleNumber; + double *doublePointer; + trio_long_double_t longdoubleNumber; + trio_long_double_t *longdoublePointer; +#endif + int errorNumber; + } data; +#if TRIO_FEATURE_USER_DEFINED + /* For the user-defined specifier */ + union { + char namespace[MAX_USER_NAME]; + int handler; /* if flags & FLAGS_USER_DEFINED_PARAMETER */ + } user_defined; + char user_data[MAX_USER_DATA]; +#endif +} trio_parameter_t; + +/* Container for customized functions */ +typedef struct { + union { + trio_outstream_t out; + trio_instream_t in; + } stream; + trio_pointer_t closure; +} trio_custom_t; + +/* General trio "class" */ +typedef struct _trio_class_t { + /* + * The function to write characters to a stream. + */ + void (*OutStream) TRIO_PROTO((struct _trio_class_t *, int)); + /* + * The function to read characters from a stream. + */ + void (*InStream) TRIO_PROTO((struct _trio_class_t *, int *)); + /* + * The function to undo read characters from a stream. + */ + void (*UndoStream) TRIO_PROTO((struct _trio_class_t *)); + /* + * The current location in the stream. + */ + trio_pointer_t location; + /* + * The character currently being processed. + */ + int current; + /* + * The number of characters that would have been written/read + * if there had been sufficient space. + */ + int processed; + union { + /* + * The number of characters that are actually written. Processed and + * committed will only differ for the *nprintf functions. + */ + int committed; + /* + * The number of look-ahead characters read. + */ + int cached; + } actually; + /* + * The upper limit of characters that may be written/read. + */ + int max; + /* + * The last output error that was detected. + */ + int error; +} trio_class_t; + +/* References (for user-defined callbacks) */ +typedef struct _trio_reference_t { + trio_class_t *data; + trio_parameter_t *parameter; +} trio_reference_t; + +#if TRIO_FEATURE_USER_DEFINED +/* Registered entries (for user-defined callbacks) */ +typedef struct _trio_userdef_t { + struct _trio_userdef_t *next; + trio_callback_t callback; + char *name; +} trio_userdef_t; +#endif + +/************************************************************************* + * + * Internal Variables + * + *************************************************************************/ + +static TRIO_CONST char rcsid[] = "@(#)$Id: trio.c,v 1.129 2009/09/20 11:37:15 breese Exp $"; + +#if TRIO_FEATURE_FLOAT +/* + * Need this to workaround a parser bug in HP C/iX compiler that fails + * to resolves macro definitions that includes type 'long double', + * e.g: va_arg(arg_ptr, long double) + */ +# if defined(TRIO_PLATFORM_MPEIX) +static TRIO_CONST trio_long_double_t ___dummy_long_double = 0; +# endif +#endif + +static TRIO_CONST char internalNullString[] = "(nil)"; + +#if defined(USE_LOCALE) +static struct lconv *internalLocaleValues = NULL; +#endif + +/* + * UNIX98 says "in a locale where the radix character is not defined, + * the radix character defaults to a period (.)" + */ +#if TRIO_FEATURE_FLOAT || TRIO_FEATURE_LOCALE || defined(USE_LOCALE) +static int internalDecimalPointLength = 1; +static char internalDecimalPoint = '.'; +static char internalDecimalPointString[MAX_LOCALE_SEPARATOR_LENGTH + 1] = "."; +#endif +#if TRIO_FEATURE_QUOTE || TRIO_FEATURE_LOCALE || TRIO_EXTENSION +static int internalThousandSeparatorLength = 1; +static char internalThousandSeparator[MAX_LOCALE_SEPARATOR_LENGTH + 1] = ","; +static char internalGrouping[MAX_LOCALE_GROUPS] = { (char)NO_GROUPING }; +#endif + +static TRIO_CONST char internalDigitsLower[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +static TRIO_CONST char internalDigitsUpper[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +#if TRIO_FEATURE_SCANF +static BOOLEAN_T internalDigitsUnconverted = TRUE; +static int internalDigitArray[128]; +# if TRIO_EXTENSION +static BOOLEAN_T internalCollationUnconverted = TRUE; +static char internalCollationArray[MAX_CHARACTER_CLASS][MAX_CHARACTER_CLASS]; +# endif +#endif + +#if TRIO_FEATURE_USER_DEFINED +static TRIO_VOLATILE trio_callback_t internalEnterCriticalRegion = NULL; +static TRIO_VOLATILE trio_callback_t internalLeaveCriticalRegion = NULL; +static trio_userdef_t *internalUserDef = NULL; +#endif + + +/************************************************************************* + * + * Internal Functions + * + ************************************************************************/ + +#if defined(TRIO_EMBED_NAN) +# include "trionan.c" +#endif + +#if defined(TRIO_EMBED_STRING) +# include "triostr.c" +#endif + +/************************************************************************* + * TrioInitializeParameter + * + * Description: + * Initialize a trio_parameter_t struct. + */ +TRIO_PRIVATE void +TrioInitializeParameter +TRIO_ARGS1((parameter), + trio_parameter_t *parameter) +{ + parameter->type = FORMAT_UNKNOWN; + parameter->flags = 0; + parameter->width = 0; + parameter->precision = 0; + parameter->base = 0; + parameter->baseSpecifier = 0; + parameter->varsize = 0; + parameter->beginOffset = 0; + parameter->endOffset = 0; + parameter->position = 0; + parameter->data.pointer = 0; +#if TRIO_FEATURE_USER_DEFINED + parameter->user_defined.handler = 0; + parameter->user_data[0] = 0; +#endif +} + +/************************************************************************* + * TrioCopyParameter + * + * Description: + * Copies one trio_parameter_t struct to another. + */ +TRIO_PRIVATE void +TrioCopyParameter +TRIO_ARGS2((target, source), + trio_parameter_t *target, + TRIO_CONST trio_parameter_t *source) +{ +#if TRIO_FEATURE_USER_DEFINED + size_t i; +#endif + + target->type = source->type; + target->flags = source->flags; + target->width = source->width; + target->precision = source->precision; + target->base = source->base; + target->baseSpecifier = source->baseSpecifier; + target->varsize = source->varsize; + target->beginOffset = source->beginOffset; + target->endOffset = source->endOffset; + target->position = source->position; + target->data = source->data; + +#if TRIO_FEATURE_USER_DEFINED + target->user_defined = source->user_defined; + + for (i = 0U; i < sizeof(target->user_data); ++i) + { + if ((target->user_data[i] = source->user_data[i]) == NIL) + break; + } +#endif +} + +/************************************************************************* + * TrioIsQualifier + * + * Description: + * Remember to add all new qualifiers to this function. + * QUALIFIER_POSITION must not be added. + */ +TRIO_PRIVATE BOOLEAN_T +TrioIsQualifier +TRIO_ARGS1((character), + TRIO_CONST char character) +{ + /* QUALIFIER_POSITION is not included */ + switch (character) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case QUALIFIER_PLUS: + case QUALIFIER_MINUS: + case QUALIFIER_SPACE: + case QUALIFIER_DOT: + case QUALIFIER_STAR: + case QUALIFIER_ALTERNATIVE: + case QUALIFIER_SHORT: + case QUALIFIER_LONG: + case QUALIFIER_CIRCUMFLEX: + case QUALIFIER_LONG_UPPER: + case QUALIFIER_SIZE_T: + case QUALIFIER_PTRDIFF_T: + case QUALIFIER_INTMAX_T: + case QUALIFIER_QUAD: + case QUALIFIER_SIZE_T_UPPER: +#if defined(QUALIFIER_WIDECHAR) + case QUALIFIER_WIDECHAR: +#endif + case QUALIFIER_QUOTE: + case QUALIFIER_STICKY: + case QUALIFIER_VARSIZE: +#if defined(QUALIFIER_PARAM) + case QUALIFIER_PARAM: +#endif + case QUALIFIER_FIXED_SIZE: + case QUALIFIER_ROUNDING_UPPER: + return TRUE; + default: + return FALSE; + } +} + +/************************************************************************* + * TrioSetLocale + */ +#if defined(USE_LOCALE) +TRIO_PRIVATE void +TrioSetLocale(TRIO_NOARGS) +{ + internalLocaleValues = (struct lconv *)localeconv(); + if (internalLocaleValues) + { + if ((internalLocaleValues->decimal_point) && + (internalLocaleValues->decimal_point[0] != NIL)) + { + internalDecimalPointLength = trio_length(internalLocaleValues->decimal_point); + if (internalDecimalPointLength == 1) + { + internalDecimalPoint = internalLocaleValues->decimal_point[0]; + } + else + { + internalDecimalPoint = NIL; + trio_copy_max(internalDecimalPointString, + sizeof(internalDecimalPointString), + internalLocaleValues->decimal_point); + } + } +# if TRIO_EXTENSION + if ((internalLocaleValues->thousands_sep) && + (internalLocaleValues->thousands_sep[0] != NIL)) + { + trio_copy_max(internalThousandSeparator, + sizeof(internalThousandSeparator), + internalLocaleValues->thousands_sep); + internalThousandSeparatorLength = trio_length(internalThousandSeparator); + } +# endif +# if TRIO_EXTENSION + if ((internalLocaleValues->grouping) && + (internalLocaleValues->grouping[0] != NIL)) + { + trio_copy_max(internalGrouping, + sizeof(internalGrouping), + internalLocaleValues->grouping); + } +# endif + } +} +#endif /* defined(USE_LOCALE) */ + +#if TRIO_FEATURE_FLOAT && TRIO_FEATURE_QUOTE +TRIO_PRIVATE int +TrioCalcThousandSeparatorLength +TRIO_ARGS1((digits), + int digits) +{ + int count = 0; + int step = NO_GROUPING; + char *groupingPointer = internalGrouping; + + while (digits > 0) + { + if (*groupingPointer == CHAR_MAX) + { + /* Disable grouping */ + break; /* while */ + } + else if (*groupingPointer == 0) + { + /* Repeat last group */ + if (step == NO_GROUPING) + { + /* Error in locale */ + break; /* while */ + } + } + else + { + step = *groupingPointer++; + } + if (digits > step) + count += internalThousandSeparatorLength; + digits -= step; + } + return count; +} +#endif /* TRIO_FEATURE_FLOAT && TRIO_FEATURE_QUOTE */ + +#if TRIO_FEATURE_QUOTE +TRIO_PRIVATE BOOLEAN_T +TrioFollowedBySeparator +TRIO_ARGS1((position), + int position) +{ + int step = 0; + char *groupingPointer = internalGrouping; + + position--; + if (position == 0) + return FALSE; + while (position > 0) + { + if (*groupingPointer == CHAR_MAX) + { + /* Disable grouping */ + break; /* while */ + } + else if (*groupingPointer != 0) + { + step = *groupingPointer++; + } + if (step == 0) + break; + position -= step; + } + return (position == 0); +} +#endif /* TRIO_FEATURE_QUOTE */ + +/************************************************************************* + * TrioGetPosition + * + * Get the %n$ position. + */ +TRIO_PRIVATE int +TrioGetPosition +TRIO_ARGS2((format, offsetPointer), + TRIO_CONST char *format, + int *offsetPointer) +{ +#if TRIO_FEATURE_POSITIONAL + char *tmpformat; + int number = 0; + int offset = *offsetPointer; + + number = (int)trio_to_long(&format[offset], &tmpformat, BASE_DECIMAL); + offset = (int)(tmpformat - format); + if ((number != 0) && (QUALIFIER_POSITION == format[offset++])) + { + *offsetPointer = offset; + /* + * number is decreased by 1, because n$ starts from 1, whereas + * the array it is indexing starts from 0. + */ + return number - 1; + } +#endif + return NO_POSITION; +} + +/************************************************************************* + * TrioFindNamespace + * + * Find registered user-defined specifier. + * The prev argument is used for optimization only. + */ +#if TRIO_FEATURE_USER_DEFINED +TRIO_PRIVATE trio_userdef_t * +TrioFindNamespace +TRIO_ARGS2((name, prev), + TRIO_CONST char *name, + trio_userdef_t **prev) +{ + trio_userdef_t *def; + + if (internalEnterCriticalRegion) + (void)internalEnterCriticalRegion(NULL); + + for (def = internalUserDef; def; def = def->next) + { + /* Case-sensitive string comparison */ + if (trio_equal_case(def->name, name)) + break; + + if (prev) + *prev = def; + } + + if (internalLeaveCriticalRegion) + (void)internalLeaveCriticalRegion(NULL); + + return def; +} +#endif + +/************************************************************************* + * TrioPower + * + * Description: + * Calculate pow(base, exponent), where number and exponent are integers. + */ +#if TRIO_FEATURE_FLOAT +TRIO_PRIVATE trio_long_double_t +TrioPower +TRIO_ARGS2((number, exponent), + int number, + int exponent) +{ + trio_long_double_t result; + + if (number == 10) + { + switch (exponent) + { + /* Speed up calculation of common cases */ + case 0: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E-1); + break; + case 1: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+0); + break; + case 2: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+1); + break; + case 3: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+2); + break; + case 4: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+3); + break; + case 5: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+4); + break; + case 6: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+5); + break; + case 7: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+6); + break; + case 8: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+7); + break; + case 9: + result = (trio_long_double_t)number * TRIO_SUFFIX_LONG(1E+8); + break; + default: + result = trio_pow((trio_long_double_t)number, + (trio_long_double_t)exponent); + break; + } + } + else + { + return trio_pow((trio_long_double_t)number, + (trio_long_double_t)exponent); + } + return result; +} +#endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * TrioLogarithm + */ +#if TRIO_FEATURE_FLOAT +TRIO_PRIVATE trio_long_double_t +TrioLogarithm +TRIO_ARGS2((number, base), + trio_long_double_t number, + int base) +{ + trio_long_double_t result; + + if (number <= 0.0) + { + /* xlC crashes on log(0) */ + result = (number == 0.0) ? trio_ninf() : trio_nan(); + } + else + { + if (base == 10) + { + result = trio_log10(number); + } + else + { + result = trio_log10(number) / trio_log10((double)base); + } + } + return result; +} +#endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * TrioLogarithmBase + */ +#if TRIO_FEATURE_FLOAT +TRIO_PRIVATE double +TrioLogarithmBase +TRIO_ARGS1((base), + int base) +{ + switch (base) + { + case BASE_BINARY : return 1.0; + case BASE_OCTAL : return 3.0; + case BASE_DECIMAL: return 3.321928094887362345; + case BASE_HEX : return 4.0; + default : return TrioLogarithm((double)base, 2); + } +} +#endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * TrioParseQualifiers + * + * Description: + * Parse the qualifiers of a potential conversion specifier + */ +TRIO_PRIVATE int +TrioParseQualifiers +TRIO_ARGS4((type, format, offset, parameter), + int type, + TRIO_CONST char *format, + int offset, + trio_parameter_t *parameter) +{ + char ch; + int dots = 0; /* Count number of dots in modifier part */ + char *tmpformat; + + parameter->beginOffset = offset - 1; + parameter->flags = FLAGS_NEW; + parameter->position = TrioGetPosition(format, &offset); + + /* Default values */ + parameter->width = NO_WIDTH; + parameter->precision = NO_PRECISION; + parameter->base = NO_BASE; + parameter->varsize = NO_SIZE; + + while (TrioIsQualifier(format[offset])) + { + ch = format[offset++]; + + switch (ch) + { + case QUALIFIER_SPACE: + parameter->flags |= FLAGS_SPACE; + break; + + case QUALIFIER_PLUS: + parameter->flags |= FLAGS_SHOWSIGN; + break; + + case QUALIFIER_MINUS: + parameter->flags |= FLAGS_LEFTADJUST; + parameter->flags &= ~FLAGS_NILPADDING; + break; + + case QUALIFIER_ALTERNATIVE: + parameter->flags |= FLAGS_ALTERNATIVE; + break; + + case QUALIFIER_DOT: + if (dots == 0) /* Precision */ + { + dots++; + + /* Skip if no precision */ + if (QUALIFIER_DOT == format[offset]) + break; + + /* After the first dot we have the precision */ + parameter->flags |= FLAGS_PRECISION; + if ((QUALIFIER_STAR == format[offset]) +#if defined(QUALIFIER_PARAM) + || (QUALIFIER_PARAM == format[offset]) +#endif + ) + { + offset++; + parameter->flags |= FLAGS_PRECISION_PARAMETER; + parameter->precision = TrioGetPosition(format, &offset); + } + else + { + parameter->precision = trio_to_long(&format[offset], + &tmpformat, + BASE_DECIMAL); + offset = (int)(tmpformat - format); + } + } + else if (dots == 1) /* Base */ + { + dots++; + + /* After the second dot we have the base */ + parameter->flags |= FLAGS_BASE; + if ((QUALIFIER_STAR == format[offset]) +#if defined(QUALIFIER_PARAM) + || (QUALIFIER_PARAM == format[offset]) +#endif + ) + { + offset++; + parameter->flags |= FLAGS_BASE_PARAMETER; + parameter->base = TrioGetPosition(format, &offset); + } + else + { + parameter->base = trio_to_long(&format[offset], + &tmpformat, + BASE_DECIMAL); + if (parameter->base > MAX_BASE) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + offset = (int)(tmpformat - format); + } + } + else + { + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + } + break; /* QUALIFIER_DOT */ + +#if defined(QUALIFIER_PARAM) + case QUALIFIER_PARAM: + parameter->type = TYPE_PRINT; + /* FALLTHROUGH */ +#endif + case QUALIFIER_STAR: + /* This has different meanings for print and scan */ + if (TYPE_PRINT == type) + { + /* Read with from parameter */ + int width = TrioGetPosition(format, &offset); + parameter->flags |= (FLAGS_WIDTH | FLAGS_WIDTH_PARAMETER); + if (NO_POSITION != width) + parameter->width = width; + /* else keep parameter->width = NO_WIDTH which != NO_POSITION */ + } +#if TRIO_FEATURE_SCANF + else + { + /* Scan, but do not store result */ + parameter->flags |= FLAGS_IGNORE; + } +#endif + break; /* QUALIFIER_STAR */ + + case '0': + if (! (parameter->flags & FLAGS_LEFTADJUST)) + parameter->flags |= FLAGS_NILPADDING; + /* FALLTHROUGH */ + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + parameter->flags |= FLAGS_WIDTH; + /* + * &format[offset - 1] is used to "rewind" the read + * character from format + */ + parameter->width = trio_to_long(&format[offset - 1], + &tmpformat, + BASE_DECIMAL); + offset = (int)(tmpformat - format); + break; + + case QUALIFIER_SHORT: + if (parameter->flags & FLAGS_SHORTSHORT) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + else if (parameter->flags & FLAGS_SHORT) + parameter->flags |= FLAGS_SHORTSHORT; + else + parameter->flags |= FLAGS_SHORT; + break; + + case QUALIFIER_LONG: + if (parameter->flags & FLAGS_QUAD) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + else if (parameter->flags & FLAGS_LONG) + parameter->flags |= FLAGS_QUAD; + else + parameter->flags |= FLAGS_LONG; + break; + +#if TRIO_FEATURE_LONGDOUBLE + case QUALIFIER_LONG_UPPER: + parameter->flags |= FLAGS_LONGDOUBLE; + break; +#endif + +#if TRIO_FEATURE_SIZE_T + case QUALIFIER_SIZE_T: + parameter->flags |= FLAGS_SIZE_T; + /* Modify flags for later truncation of number */ + if (sizeof(size_t) == sizeof(trio_ulonglong_t)) + parameter->flags |= FLAGS_QUAD; + else if (sizeof(size_t) == sizeof(long)) + parameter->flags |= FLAGS_LONG; + break; +#endif + +#if TRIO_FEATURE_PTRDIFF_T + case QUALIFIER_PTRDIFF_T: + parameter->flags |= FLAGS_PTRDIFF_T; + if (sizeof(ptrdiff_t) == sizeof(trio_ulonglong_t)) + parameter->flags |= FLAGS_QUAD; + else if (sizeof(ptrdiff_t) == sizeof(long)) + parameter->flags |= FLAGS_LONG; + break; +#endif + +#if TRIO_FEATURE_INTMAX_T + case QUALIFIER_INTMAX_T: + parameter->flags |= FLAGS_INTMAX_T; + if (sizeof(trio_intmax_t) == sizeof(trio_ulonglong_t)) + parameter->flags |= FLAGS_QUAD; + else if (sizeof(trio_intmax_t) == sizeof(long)) + parameter->flags |= FLAGS_LONG; + break; +#endif + +#if TRIO_FEATURE_QUAD + case QUALIFIER_QUAD: + parameter->flags |= FLAGS_QUAD; + break; +#endif + +#if TRIO_FEATURE_FIXED_SIZE + case QUALIFIER_FIXED_SIZE: + if (parameter->flags & FLAGS_FIXED_SIZE) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + + if (parameter->flags & (FLAGS_ALL_SIZES | + FLAGS_LONGDOUBLE | + FLAGS_WIDECHAR | + FLAGS_VARSIZE_PARAMETER)) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + + if ((format[offset] == '6') && + (format[offset + 1] == '4')) + { + parameter->varsize = sizeof(trio_int64_t); + offset += 2; + } + else if ((format[offset] == '3') && + (format[offset + 1] == '2')) + { + parameter->varsize = sizeof(trio_int32_t); + offset += 2; + } + else if ((format[offset] == '1') && + (format[offset + 1] == '6')) + { + parameter->varsize = sizeof(trio_int16_t); + offset += 2; + } + else if (format[offset] == '8') + { + parameter->varsize = sizeof(trio_int8_t); + offset++; + } + else + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + + parameter->flags |= FLAGS_FIXED_SIZE; + break; +#endif /* TRIO_FEATURE_FIXED_SIZE */ + +#if defined(QUALIFIER_WIDECHAR) + case QUALIFIER_WIDECHAR: + parameter->flags |= FLAGS_WIDECHAR; + break; +#endif + +#if TRIO_FEATURE_SIZE_T_UPPER + case QUALIFIER_SIZE_T_UPPER: + break; +#endif + +#if TRIO_FEATURE_QUOTE + case QUALIFIER_QUOTE: + parameter->flags |= FLAGS_QUOTE; + break; +#endif + +#if TRIO_FEATURE_STICKY + case QUALIFIER_STICKY: + parameter->flags |= FLAGS_STICKY; + break; +#endif + +#if TRIO_FEATURE_VARSIZE + case QUALIFIER_VARSIZE: + parameter->flags |= FLAGS_VARSIZE_PARAMETER; + break; +#endif + +#if TRIO_FEATURE_ROUNDING + case QUALIFIER_ROUNDING_UPPER: + parameter->flags |= FLAGS_ROUNDING; + break; +#endif + + default: + /* Bail out completely to make the error more obvious */ + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + } + } /* while qualifier */ + + parameter->endOffset = offset; + + return 0; +} + +/************************************************************************* + * TrioParseSpecifier + * + * Description: + * Parse the specifier part of a potential conversion specifier + */ +TRIO_PRIVATE int +TrioParseSpecifier +TRIO_ARGS4((type, format, offset, parameter), + int type, + TRIO_CONST char *format, + int offset, + trio_parameter_t *parameter) +{ + parameter->baseSpecifier = NO_BASE; + + switch (format[offset++]) + { +#if defined(SPECIFIER_CHAR_UPPER) + case SPECIFIER_CHAR_UPPER: + parameter->flags |= FLAGS_WIDECHAR; + /* FALLTHROUGH */ +#endif + case SPECIFIER_CHAR: + if (parameter->flags & FLAGS_LONG) + parameter->flags |= FLAGS_WIDECHAR; + else if (parameter->flags & FLAGS_SHORT) + parameter->flags &= ~FLAGS_WIDECHAR; + parameter->type = FORMAT_CHAR; + break; + +#if defined(SPECIFIER_STRING_UPPER) + case SPECIFIER_STRING_UPPER: + parameter->flags |= FLAGS_WIDECHAR; + /* FALLTHROUGH */ +#endif + case SPECIFIER_STRING: + if (parameter->flags & FLAGS_LONG) + parameter->flags |= FLAGS_WIDECHAR; + else if (parameter->flags & FLAGS_SHORT) + parameter->flags &= ~FLAGS_WIDECHAR; + parameter->type = FORMAT_STRING; + break; + +#if defined(SPECIFIER_GROUP) + case SPECIFIER_GROUP: + if (TYPE_SCAN == type) + { + int depth = 1; + parameter->type = FORMAT_GROUP; + if (format[offset] == QUALIFIER_CIRCUMFLEX) + offset++; + if (format[offset] == SPECIFIER_UNGROUP) + offset++; + if (format[offset] == QUALIFIER_MINUS) + offset++; + /* Skip nested brackets */ + while (format[offset] != NIL) + { + if (format[offset] == SPECIFIER_GROUP) + { + depth++; + } + else if (format[offset] == SPECIFIER_UNGROUP) + { + if (--depth <= 0) + { + offset++; + break; + } + } + offset++; + } + } + break; +#endif /* defined(SPECIFIER_GROUP) */ + + case SPECIFIER_INTEGER: + parameter->type = FORMAT_INT; + break; + + case SPECIFIER_UNSIGNED: + parameter->flags |= FLAGS_UNSIGNED; + parameter->type = FORMAT_INT; + break; + + case SPECIFIER_DECIMAL: + parameter->baseSpecifier = BASE_DECIMAL; + parameter->type = FORMAT_INT; + break; + + case SPECIFIER_OCTAL: + parameter->flags |= FLAGS_UNSIGNED; + parameter->baseSpecifier = BASE_OCTAL; + parameter->type = FORMAT_INT; + break; + +#if TRIO_FEATURE_BINARY + case SPECIFIER_BINARY_UPPER: + parameter->flags |= FLAGS_UPPER; + /* FALLTHROUGH */ + case SPECIFIER_BINARY: + parameter->flags |= FLAGS_NILPADDING; + parameter->baseSpecifier = BASE_BINARY; + parameter->type = FORMAT_INT; + break; +#endif + + case SPECIFIER_HEX_UPPER: + parameter->flags |= FLAGS_UPPER; + /* FALLTHROUGH */ + case SPECIFIER_HEX: + parameter->flags |= FLAGS_UNSIGNED; + parameter->baseSpecifier = BASE_HEX; + parameter->type = FORMAT_INT; + break; + +#if defined(SPECIFIER_FLOAT_E) +# if defined(SPECIFIER_FLOAT_E_UPPER) + case SPECIFIER_FLOAT_E_UPPER: + parameter->flags |= FLAGS_UPPER; + /* FALLTHROUGH */ +# endif + case SPECIFIER_FLOAT_E: + parameter->flags |= FLAGS_FLOAT_E; + parameter->type = FORMAT_DOUBLE; + break; +#endif + +#if defined(SPECIFIER_FLOAT_G) +# if defined(SPECIFIER_FLOAT_G_UPPER) + case SPECIFIER_FLOAT_G_UPPER: + parameter->flags |= FLAGS_UPPER; + /* FALLTHROUGH */ +# endif + case SPECIFIER_FLOAT_G: + parameter->flags |= FLAGS_FLOAT_G; + parameter->type = FORMAT_DOUBLE; + break; +#endif + +#if defined(SPECIFIER_FLOAT_F) +# if defined(SPECIFIER_FLOAT_F_UPPER) + case SPECIFIER_FLOAT_F_UPPER: + parameter->flags |= FLAGS_UPPER; + /* FALLTHROUGH */ +# endif + case SPECIFIER_FLOAT_F: + parameter->type = FORMAT_DOUBLE; + break; +#endif + +#if defined(TRIO_COMPILER_VISUALC) +# pragma warning( push ) +# pragma warning( disable : 4127 ) /* Conditional expression is constant */ +#endif + case SPECIFIER_POINTER: + if (sizeof(trio_pointer_t) == sizeof(trio_ulonglong_t)) + parameter->flags |= FLAGS_QUAD; + else if (sizeof(trio_pointer_t) == sizeof(long)) + parameter->flags |= FLAGS_LONG; + parameter->type = FORMAT_POINTER; + break; +#if defined(TRIO_COMPILER_VISUALC) +# pragma warning( pop ) +#endif + + case SPECIFIER_COUNT: + parameter->type = FORMAT_COUNT; + break; + +#if TRIO_FEATURE_HEXFLOAT + case SPECIFIER_HEXFLOAT_UPPER: + parameter->flags |= FLAGS_UPPER; + /* FALLTHROUGH */ + case SPECIFIER_HEXFLOAT: + parameter->baseSpecifier = BASE_HEX; + parameter->type = FORMAT_DOUBLE; + break; +#endif + +#if TRIO_FEATURE_ERRNO + case SPECIFIER_ERRNO: + parameter->type = FORMAT_ERRNO; + break; +#endif + +#if TRIO_FEATURE_USER_DEFINED + case SPECIFIER_USER_DEFINED_BEGIN: + { + unsigned int max; + int without_namespace = TRUE; + char* tmpformat = (char *)&format[offset]; + int ch; + + parameter->type = FORMAT_USER_DEFINED; + parameter->user_defined.namespace[0] = NIL; + + while ((ch = format[offset]) != NIL) + { + offset++; + if ((ch == SPECIFIER_USER_DEFINED_END) || (ch == SPECIFIER_USER_DEFINED_EXTRA)) + { + if (without_namespace) + /* No namespace, handler will be passed as an argument */ + parameter->flags |= FLAGS_USER_DEFINED_PARAMETER; + + /* Copy the user data */ + max = (unsigned int)(&format[offset] - tmpformat); + if (max > MAX_USER_DATA) + max = MAX_USER_DATA; + trio_copy_max(parameter->user_data, max, tmpformat); + + /* Skip extra data (which is only there to keep the compiler happy) */ + while ((ch != NIL) && (ch != SPECIFIER_USER_DEFINED_END)) + ch = format[offset++]; + + break; /* while */ + } + + if (ch == SPECIFIER_USER_DEFINED_SEPARATOR) + { + without_namespace = FALSE; + /* Copy the namespace for later looking-up */ + max = (int)(&format[offset] - tmpformat); + if (max > MAX_USER_NAME) + max = MAX_USER_NAME; + trio_copy_max(parameter->user_defined.namespace, max, tmpformat); + tmpformat = (char *)&format[offset]; + } + } + + if (ch != SPECIFIER_USER_DEFINED_END) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + } + break; +#endif /* TRIO_FEATURE_USER_DEFINED */ + + default: + /* Bail out completely to make the error more obvious */ + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + } + + parameter->endOffset = offset; + + return 0; +} + +/************************************************************************* + * TrioParse + * + * Description: + * Parse the format string + */ +TRIO_PRIVATE int +TrioParse +TRIO_ARGS5((type, format, parameters, arglist, argarray), + int type, + TRIO_CONST char *format, + trio_parameter_t *parameters, + va_list arglist, + trio_pointer_t *argarray) +{ + /* Count the number of times a parameter is referenced */ + unsigned short usedEntries[MAX_PARAMETERS]; + /* Parameter counters */ + int parameterPosition; + int maxParam = -1; + /* Utility variables */ + int offset; /* Offset into formatting string */ + BOOLEAN_T positional; /* Does the specifier have a positional? */ +#if TRIO_FEATURE_STICKY + BOOLEAN_T gotSticky = FALSE; /* Are there any sticky modifiers at all? */ +#endif + /* + * indices specifies the order in which the parameters must be + * read from the va_args (this is necessary to handle positionals) + */ + int indices[MAX_PARAMETERS]; + int pos = 0; + /* Various variables */ +#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) + int charlen; +#endif + int save_errno; + int i = -1; + int num; + trio_parameter_t workParameter; + int status; + + /* + * The 'parameters' array is not initialized, but we need to + * know which entries we have used. + */ + memset(usedEntries, 0, sizeof(usedEntries)); + + save_errno = errno; + offset = 0; + parameterPosition = 0; +#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) + (void)mblen(NULL, 0); +#endif + + while (format[offset]) + { + TrioInitializeParameter(&workParameter); + +#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) + if (! isascii(format[offset])) + { + /* + * Multibyte characters cannot be legal specifiers or + * modifiers, so we skip over them. + */ + charlen = mblen(&format[offset], MB_LEN_MAX); + offset += (charlen > 0) ? charlen : 1; + continue; /* while */ + } +#endif /* TRIO_COMPILER_SUPPORTS_MULTIBYTE */ + + switch(format[offset++]) { + + case CHAR_IDENTIFIER: + { + if (CHAR_IDENTIFIER == format[offset]) + { + /* skip double "%" */ + offset++; + continue; /* while */ + } + + status = TrioParseQualifiers(type, format, offset, &workParameter); + if (status < 0) + return status; /* Return qualifier syntax error */ + + status = TrioParseSpecifier(type, format, workParameter.endOffset, &workParameter); + if (status < 0) + return status; /* Return specifier syntax error */ + } + break; + +#if TRIO_EXTENSION + case CHAR_ALT_IDENTIFIER: + { + status = TrioParseQualifiers(type, format, offset, &workParameter); + if (status < 0) + continue; /* False alert, not a user defined specifier */ + + status = TrioParseSpecifier(type, format, workParameter.endOffset, &workParameter); + if ((status < 0) || (FORMAT_USER_DEFINED != workParameter.type)) + continue; /* False alert, not a user defined specifier */ + } + break; +#endif + + default: + continue; /* while */ + } + + /* now handle the parsed conversion specification */ + positional = (NO_POSITION != workParameter.position); + + /* + * Parameters only need the type and value. The value is + * read later. + */ + if (workParameter.flags & FLAGS_WIDTH_PARAMETER) + { + if (workParameter.width == NO_WIDTH) + { + workParameter.width = parameterPosition++; + } + else + { + if (! positional) + workParameter.position = workParameter.width + 1; + } + + usedEntries[workParameter.width] += 1; + if (workParameter.width > maxParam) + maxParam = workParameter.width; + parameters[pos].type = FORMAT_PARAMETER; + parameters[pos].flags = 0; + indices[workParameter.width] = pos; + workParameter.width = pos++; + } + if (workParameter.flags & FLAGS_PRECISION_PARAMETER) + { + if (workParameter.precision == NO_PRECISION) + { + workParameter.precision = parameterPosition++; + } + else + { + if (! positional) + workParameter.position = workParameter.precision + 1; + } + + usedEntries[workParameter.precision] += 1; + if (workParameter.precision > maxParam) + maxParam = workParameter.precision; + parameters[pos].type = FORMAT_PARAMETER; + parameters[pos].flags = 0; + indices[workParameter.precision] = pos; + workParameter.precision = pos++; + } + if (workParameter.flags & FLAGS_BASE_PARAMETER) + { + if (workParameter.base == NO_BASE) + { + workParameter.base = parameterPosition++; + } + else + { + if (! positional) + workParameter.position = workParameter.base + 1; + } + + usedEntries[workParameter.base] += 1; + if (workParameter.base > maxParam) + maxParam = workParameter.base; + parameters[pos].type = FORMAT_PARAMETER; + parameters[pos].flags = 0; + indices[workParameter.base] = pos; + workParameter.base = pos++; + } +#if TRIO_FEATURE_VARSIZE + if (workParameter.flags & FLAGS_VARSIZE_PARAMETER) + { + workParameter.varsize = parameterPosition++; + + usedEntries[workParameter.varsize] += 1; + if (workParameter.varsize > maxParam) + maxParam = workParameter.varsize; + parameters[pos].type = FORMAT_PARAMETER; + parameters[pos].flags = 0; + indices[workParameter.varsize] = pos; + workParameter.varsize = pos++; + } +#endif +#if TRIO_FEATURE_USER_DEFINED + if (workParameter.flags & FLAGS_USER_DEFINED_PARAMETER) + { + workParameter.user_defined.handler = parameterPosition++; + + usedEntries[workParameter.user_defined.handler] += 1; + if (workParameter.user_defined.handler > maxParam) + maxParam = workParameter.user_defined.handler; + parameters[pos].type = FORMAT_PARAMETER; + parameters[pos].flags = FLAGS_USER_DEFINED; + indices[workParameter.user_defined.handler] = pos; + workParameter.user_defined.handler = pos++; + } +#endif + + if (NO_POSITION == workParameter.position) + { + workParameter.position = parameterPosition++; + } + + if (workParameter.position > maxParam) + maxParam = workParameter.position; + + if (workParameter.position >= MAX_PARAMETERS) + { + /* Bail out completely to make the error more obvious */ + return TRIO_ERROR_RETURN(TRIO_ETOOMANY, offset); + } + + indices[workParameter.position] = pos; + + /* Count the number of times this entry has been used */ + usedEntries[workParameter.position] += 1; + + /* Find last sticky parameters */ +#if TRIO_FEATURE_STICKY + if (workParameter.flags & FLAGS_STICKY) + { + gotSticky = TRUE; + } + else if (gotSticky) + { + for (i = pos - 1; i >= 0; i--) + { + if (parameters[i].type == FORMAT_PARAMETER) + continue; + if ((parameters[i].flags & FLAGS_STICKY) && + (parameters[i].type == workParameter.type)) + { + /* Do not overwrite current qualifiers */ + workParameter.flags |= (parameters[i].flags & (unsigned long)~FLAGS_STICKY); + if (workParameter.width == NO_WIDTH) + workParameter.width = parameters[i].width; + if (workParameter.precision == NO_PRECISION) + workParameter.precision = parameters[i].precision; + if (workParameter.base == NO_BASE) + workParameter.base = parameters[i].base; + break; + } + } + } +#endif + + if (workParameter.base == NO_BASE) + workParameter.base = BASE_DECIMAL; + + offset = workParameter.endOffset; + + TrioCopyParameter(¶meters[pos++], &workParameter); + } /* while format characters left */ + + parameters[pos].type = FORMAT_SENTINEL; /* end parameter array with sentinel */ + parameters[pos].beginOffset = offset; + + for (num = 0; num <= maxParam; num++) + { + if (usedEntries[num] != 1) + { + if (usedEntries[num] == 0) /* gap detected */ + return TRIO_ERROR_RETURN(TRIO_EGAP, num); + else /* double references detected */ + return TRIO_ERROR_RETURN(TRIO_EDBLREF, num); + } + + i = indices[num]; + + /* + * FORMAT_PARAMETERS are only present if they must be read, + * so it makes no sense to check the ignore flag (besides, + * the flags variable is not set for that particular type) + */ + if ((parameters[i].type != FORMAT_PARAMETER) && + (parameters[i].flags & FLAGS_IGNORE)) + continue; /* for all arguments */ + + /* + * The stack arguments are read according to ANSI C89 + * default argument promotions: + * + * char = int + * short = int + * unsigned char = unsigned int + * unsigned short = unsigned int + * float = double + * + * In addition to the ANSI C89 these types are read (the + * default argument promotions of C99 has not been + * considered yet) + * + * long long + * long double + * size_t + * ptrdiff_t + * intmax_t + */ + switch (parameters[i].type) + { + case FORMAT_GROUP: + case FORMAT_STRING: +#if TRIO_FEATURE_WIDECHAR + if (parameters[i].flags & FLAGS_WIDECHAR) + { + parameters[i].data.wstring = (argarray == NULL) + ? va_arg(arglist, trio_wchar_t *) + : (trio_wchar_t *)(argarray[num]); + } + else +#endif + { + parameters[i].data.string = (argarray == NULL) + ? va_arg(arglist, char *) + : (char *)(argarray[num]); + } + break; + +#if TRIO_FEATURE_USER_DEFINED + case FORMAT_USER_DEFINED: +#endif + case FORMAT_POINTER: + case FORMAT_COUNT: + case FORMAT_UNKNOWN: + parameters[i].data.pointer = (argarray == NULL) + ? va_arg(arglist, trio_pointer_t ) + : argarray[num]; + break; + + case FORMAT_CHAR: + case FORMAT_INT: +#if TRIO_FEATURE_SCANF + if (TYPE_SCAN == type) + { + if (argarray == NULL) + parameters[i].data.pointer = + (trio_pointer_t)va_arg(arglist, trio_pointer_t); + else + { + if (parameters[i].type == FORMAT_CHAR) + parameters[i].data.pointer = + (trio_pointer_t)((char *)argarray[num]); + else if (parameters[i].flags & FLAGS_SHORT) + parameters[i].data.pointer = + (trio_pointer_t)((short *)argarray[num]); + else + parameters[i].data.pointer = + (trio_pointer_t)((int *)argarray[num]); + } + } + else +#endif /* TRIO_FEATURE_SCANF */ + { +#if TRIO_FEATURE_VARSIZE || TRIO_FEATURE_FIXED_SIZE + if (parameters[i].flags + & (FLAGS_VARSIZE_PARAMETER | FLAGS_FIXED_SIZE)) + { + int varsize; + if (parameters[i].flags & FLAGS_VARSIZE_PARAMETER) + { + /* + * Variable sizes are mapped onto the fixed sizes, in + * accordance with integer promotion. + * + * Please note that this may not be portable, as we + * only guess the size, not the layout of the numbers. + * For example, if int is little-endian, and long is + * big-endian, then this will fail. + */ + varsize = (int)parameters[parameters[i].varsize].data.number.as_unsigned; + } + else + { + /* Used for the I modifiers */ + varsize = parameters[i].varsize; + } + parameters[i].flags &= ~FLAGS_ALL_VARSIZES; + + if (varsize <= (int)sizeof(int)) + ; + else if (varsize <= (int)sizeof(long)) + parameters[i].flags |= FLAGS_LONG; +#if TRIO_FEATURE_INTMAX_T + else if (varsize <= (int)sizeof(trio_longlong_t)) + parameters[i].flags |= FLAGS_QUAD; + else + parameters[i].flags |= FLAGS_INTMAX_T; +#else + else + parameters[i].flags |= FLAGS_QUAD; +#endif + } +#endif /* TRIO_FEATURE_VARSIZE */ +#if TRIO_FEATURE_SIZE_T || TRIO_FEATURE_SIZE_T_UPPER + if (parameters[i].flags & FLAGS_SIZE_T) + parameters[i].data.number.as_unsigned = (argarray == NULL) + ? (trio_uintmax_t)va_arg(arglist, size_t) + : (trio_uintmax_t)(*((size_t *)argarray[num])); + else +#endif +#if TRIO_FEATURE_PTRDIFF_T + if (parameters[i].flags & FLAGS_PTRDIFF_T) + parameters[i].data.number.as_unsigned = (argarray == NULL) + ? (trio_uintmax_t)va_arg(arglist, ptrdiff_t) + : (trio_uintmax_t)(*((ptrdiff_t *)argarray[num])); + else +#endif +#if TRIO_FEATURE_INTMAX_T + if (parameters[i].flags & FLAGS_INTMAX_T) + parameters[i].data.number.as_unsigned = (argarray == NULL) + ? (trio_uintmax_t)va_arg(arglist, trio_intmax_t) + : (trio_uintmax_t)(*((trio_intmax_t *)argarray[num])); + else +#endif + if (parameters[i].flags & FLAGS_QUAD) + parameters[i].data.number.as_unsigned = (argarray == NULL) + ? (trio_uintmax_t)va_arg(arglist, trio_ulonglong_t) + : (trio_uintmax_t)(*((trio_ulonglong_t *)argarray[num])); + else if (parameters[i].flags & FLAGS_LONG) + parameters[i].data.number.as_unsigned = (argarray == NULL) + ? (trio_uintmax_t)va_arg(arglist, long) + : (trio_uintmax_t)(*((long *)argarray[num])); + else + { + if (argarray == NULL) + parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(arglist, int); + else + { + if (parameters[i].type == FORMAT_CHAR) + parameters[i].data.number.as_unsigned = (trio_uintmax_t)(*((char *)argarray[num])); + else if (parameters[i].flags & FLAGS_SHORT) + parameters[i].data.number.as_unsigned = (trio_uintmax_t)(*((short *)argarray[num])); + else + parameters[i].data.number.as_unsigned = (trio_uintmax_t)(*((int *)argarray[num])); + } + } + } + break; + + case FORMAT_PARAMETER: + /* + * The parameter for the user-defined specifier is a pointer, + * whereas the rest (width, precision, base) uses an integer. + */ + if (parameters[i].flags & FLAGS_USER_DEFINED) + parameters[i].data.pointer = (argarray == NULL) + ? va_arg(arglist, trio_pointer_t ) + : argarray[num]; + else + parameters[i].data.number.as_unsigned = (argarray == NULL) + ? (trio_uintmax_t)va_arg(arglist, int) + : (trio_uintmax_t)(*((int *)argarray[num])); + break; + +#if TRIO_FEATURE_FLOAT + case FORMAT_DOUBLE: +# if TRIO_FEATURE_SCANF + if (TYPE_SCAN == type) + { + if (parameters[i].flags & FLAGS_LONGDOUBLE) + parameters[i].data.longdoublePointer = (argarray == NULL) + ? va_arg(arglist, trio_long_double_t *) + : (trio_long_double_t *)argarray[num]; + else + { + if (parameters[i].flags & FLAGS_LONG) + parameters[i].data.doublePointer = (argarray == NULL) + ? va_arg(arglist, double *) + : (double *)argarray[num]; + else + parameters[i].data.doublePointer = (argarray == NULL) + ? (double *)va_arg(arglist, float *) + : (double *)((float *)argarray[num]); + } + } + else +# endif /* TRIO_FEATURE_SCANF */ + { + if (parameters[i].flags & FLAGS_LONGDOUBLE) + parameters[i].data.longdoubleNumber = (argarray == NULL) + ? va_arg(arglist, trio_long_double_t) + : (trio_long_double_t)(*((trio_long_double_t *)argarray[num])); + else + { + if (argarray == NULL) + parameters[i].data.longdoubleNumber = + (trio_long_double_t)va_arg(arglist, double); + else + { + if (parameters[i].flags & FLAGS_SHORT) + parameters[i].data.longdoubleNumber = + (trio_long_double_t)(*((float *)argarray[num])); + else + parameters[i].data.longdoubleNumber = + (trio_long_double_t)(*((double *)argarray[num])); + } + } + } + break; +#endif /* TRIO_FEATURE_FLOAT */ + +#if TRIO_FEATURE_ERRNO + case FORMAT_ERRNO: + parameters[i].data.errorNumber = save_errno; + break; +#endif + + default: + break; + } + } /* for all specifiers */ + return num; +} + + +/************************************************************************* + * + * FORMATTING + * + ************************************************************************/ + + +/************************************************************************* + * TrioWriteNumber + * + * Description: + * Output a number. + * The complexity of this function is a result of the complexity + * of the dependencies of the flags. + */ +TRIO_PRIVATE void +TrioWriteNumber +TRIO_ARGS6((self, number, flags, width, precision, base), + trio_class_t *self, + trio_uintmax_t number, + trio_flags_t flags, + int width, + int precision, + int base) +{ + BOOLEAN_T isNegative; + BOOLEAN_T isNumberZero; + BOOLEAN_T isPrecisionZero; + BOOLEAN_T ignoreNumber; + char buffer[MAX_CHARS_IN(trio_uintmax_t) * (1 + MAX_LOCALE_SEPARATOR_LENGTH) + 1]; + char *bufferend; + char *pointer; + TRIO_CONST char *digits; + int i; +#if TRIO_FEATURE_QUOTE + int length; + char *p; +#endif + int count; + int digitOffset; + + assert(VALID(self)); + assert(VALID(self->OutStream)); + assert(((base >= MIN_BASE) && (base <= MAX_BASE)) || (base == NO_BASE)); + + digits = (flags & FLAGS_UPPER) ? internalDigitsUpper : internalDigitsLower; + if (base == NO_BASE) + base = BASE_DECIMAL; + + isNumberZero = (number == 0); + isPrecisionZero = (precision == 0); + ignoreNumber = (isNumberZero + && isPrecisionZero + && !((flags & FLAGS_ALTERNATIVE) && (base == BASE_OCTAL))); + + if (flags & FLAGS_UNSIGNED) + { + isNegative = FALSE; + flags &= ~FLAGS_SHOWSIGN; + } + else + { + isNegative = ((trio_intmax_t)number < 0); + if (isNegative) + number = -((trio_intmax_t)number); + } + + if (flags & FLAGS_QUAD) + number &= (trio_ulonglong_t)-1; + else if (flags & FLAGS_LONG) + number &= (unsigned long)-1; + else + number &= (unsigned int)-1; + + /* Build number */ + pointer = bufferend = &buffer[sizeof(buffer) - 1]; + *pointer-- = NIL; + for (i = 1; i < (int)sizeof(buffer); i++) + { + digitOffset = number % base; + *pointer-- = digits[digitOffset]; + number /= base; + if (number == 0) + break; + +#if TRIO_FEATURE_QUOTE + if ((flags & FLAGS_QUOTE) && TrioFollowedBySeparator(i + 1)) + { + /* + * We are building the number from the least significant + * to the most significant digit, so we have to copy the + * thousand separator backwards + */ + length = internalThousandSeparatorLength; + if (((int)(pointer - buffer) - length) > 0) + { + p = &internalThousandSeparator[length - 1]; + while (length-- > 0) + *pointer-- = *p--; + } + } +#endif + } + + if (! ignoreNumber) + { + /* Adjust width */ + width -= (bufferend - pointer) - 1; + } + + /* Adjust precision */ + if (NO_PRECISION != precision) + { + precision -= (bufferend - pointer) - 1; + if (precision < 0) + precision = 0; + flags |= FLAGS_NILPADDING; + } + + /* Calculate padding */ + count = (! ((flags & FLAGS_LEFTADJUST) || (precision == NO_PRECISION))) + ? precision + : 0; + + /* Adjust width further */ + if (isNegative || (flags & FLAGS_SHOWSIGN) || (flags & FLAGS_SPACE)) + width--; + if ((flags & FLAGS_ALTERNATIVE) && !isNumberZero) + { + switch (base) + { + case BASE_BINARY: + case BASE_HEX: + width -= 2; + break; + case BASE_OCTAL: + if (!(flags & FLAGS_NILPADDING) || (count == 0)) + width--; + break; + default: + break; + } + } + + /* Output prefixes spaces if needed */ + if (! ((flags & FLAGS_LEFTADJUST) || + ((flags & FLAGS_NILPADDING) && (precision == NO_PRECISION)))) + { + while (width-- > count) + self->OutStream(self, CHAR_ADJUST); + } + + /* width has been adjusted for signs and alternatives */ + if (isNegative) + self->OutStream(self, '-'); + else if (flags & FLAGS_SHOWSIGN) + self->OutStream(self, '+'); + else if (flags & FLAGS_SPACE) + self->OutStream(self, ' '); + + /* Prefix is not written when the value is zero */ + if ((flags & FLAGS_ALTERNATIVE) && !isNumberZero) + { + switch (base) + { + case BASE_BINARY: + self->OutStream(self, '0'); + self->OutStream(self, (flags & FLAGS_UPPER) ? 'B' : 'b'); + break; + + case BASE_OCTAL: + if (!(flags & FLAGS_NILPADDING) || (count == 0)) + self->OutStream(self, '0'); + break; + + case BASE_HEX: + self->OutStream(self, '0'); + self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); + break; + + default: + break; + } /* switch base */ + } + + /* Output prefixed zero padding if needed */ + if (flags & FLAGS_NILPADDING) + { + if (precision == NO_PRECISION) + precision = width; + while (precision-- > 0) + { + self->OutStream(self, '0'); + width--; + } + } + + if (! ignoreNumber) + { + /* Output the number itself */ + while (*(++pointer)) + { + self->OutStream(self, *pointer); + } + } + + /* Output trailing spaces if needed */ + if (flags & FLAGS_LEFTADJUST) + { + while (width-- > 0) + self->OutStream(self, CHAR_ADJUST); + } +} + +/************************************************************************* + * TrioWriteStringCharacter + * + * Description: + * Output a single character of a string + */ +TRIO_PRIVATE void +TrioWriteStringCharacter +TRIO_ARGS3((self, ch, flags), + trio_class_t *self, + int ch, + trio_flags_t flags) +{ + if (flags & FLAGS_ALTERNATIVE) + { + if (! isprint(ch)) + { + /* + * Non-printable characters are converted to C escapes or + * \number, if no C escape exists. + */ + self->OutStream(self, CHAR_BACKSLASH); + switch (ch) + { + case '\007': self->OutStream(self, 'a'); break; + case '\b': self->OutStream(self, 'b'); break; + case '\f': self->OutStream(self, 'f'); break; + case '\n': self->OutStream(self, 'n'); break; + case '\r': self->OutStream(self, 'r'); break; + case '\t': self->OutStream(self, 't'); break; + case '\v': self->OutStream(self, 'v'); break; + case '\\': self->OutStream(self, '\\'); break; + default: + self->OutStream(self, 'x'); + TrioWriteNumber(self, (trio_uintmax_t)ch, + FLAGS_UNSIGNED | FLAGS_NILPADDING, + 2, 2, BASE_HEX); + break; + } + } + else if (ch == CHAR_BACKSLASH) + { + self->OutStream(self, CHAR_BACKSLASH); + self->OutStream(self, CHAR_BACKSLASH); + } + else + { + self->OutStream(self, ch); + } + } + else + { + self->OutStream(self, ch); + } +} + +/************************************************************************* + * TrioWriteString + * + * Description: + * Output a string + */ +TRIO_PRIVATE void +TrioWriteString +TRIO_ARGS5((self, string, flags, width, precision), + trio_class_t *self, + TRIO_CONST char *string, + trio_flags_t flags, + int width, + int precision) +{ + int length; + int ch; + + assert(VALID(self)); + assert(VALID(self->OutStream)); + + if (string == NULL) + { + string = internalNullString; + length = sizeof(internalNullString) - 1; +#if TRIO_FEATURE_QUOTE + /* Disable quoting for the null pointer */ + flags &= (~FLAGS_QUOTE); +#endif + width = 0; + } + else + { + if (precision == 0) + { + length = trio_length(string); + } + else + { + length = trio_length_max(string, precision); + } + } + if ((NO_PRECISION != precision) && + (precision < length)) + { + length = precision; + } + width -= length; + +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + self->OutStream(self, CHAR_QUOTE); +#endif + + if (! (flags & FLAGS_LEFTADJUST)) + { + while (width-- > 0) + self->OutStream(self, CHAR_ADJUST); + } + + while (length-- > 0) + { + /* The ctype parameters must be an unsigned char (or EOF) */ + ch = (int)((unsigned char)(*string++)); + TrioWriteStringCharacter(self, ch, flags); + } + + if (flags & FLAGS_LEFTADJUST) + { + while (width-- > 0) + self->OutStream(self, CHAR_ADJUST); + } +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + self->OutStream(self, CHAR_QUOTE); +#endif +} + +/************************************************************************* + * TrioWriteWideStringCharacter + * + * Description: + * Output a wide string as a multi-byte sequence + */ +#if TRIO_FEATURE_WIDECHAR +TRIO_PRIVATE int +TrioWriteWideStringCharacter +TRIO_ARGS4((self, wch, flags, width), + trio_class_t *self, + trio_wchar_t wch, + trio_flags_t flags, + int width) +{ + int size; + int i; + int ch; + char *string; + char buffer[MB_LEN_MAX + 1]; + + if (width == NO_WIDTH) + width = sizeof(buffer); + + size = wctomb(buffer, wch); + if ((size <= 0) || (size > width) || (buffer[0] == NIL)) + return 0; + + string = buffer; + i = size; + while ((width >= i) && (width-- > 0) && (i-- > 0)) + { + /* The ctype parameters must be an unsigned char (or EOF) */ + ch = (int)((unsigned char)(*string++)); + TrioWriteStringCharacter(self, ch, flags); + } + return size; +} +#endif /* TRIO_FEATURE_WIDECHAR */ + +/************************************************************************* + * TrioWriteWideString + * + * Description: + * Output a wide character string as a multi-byte string + */ +#if TRIO_FEATURE_WIDECHAR +TRIO_PRIVATE void +TrioWriteWideString +TRIO_ARGS5((self, wstring, flags, width, precision), + trio_class_t *self, + TRIO_CONST trio_wchar_t *wstring, + trio_flags_t flags, + int width, + int precision) +{ + int length; + int size; + + assert(VALID(self)); + assert(VALID(self->OutStream)); + +#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) + /* Required by TrioWriteWideStringCharacter */ + (void)mblen(NULL, 0); +#endif + + if (wstring == NULL) + { + TrioWriteString(self, NULL, flags, width, precision); + return; + } + + if (NO_PRECISION == precision) + { + length = INT_MAX; + } + else + { + length = precision; + width -= length; + } + +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + self->OutStream(self, CHAR_QUOTE); +#endif + + if (! (flags & FLAGS_LEFTADJUST)) + { + while (width-- > 0) + self->OutStream(self, CHAR_ADJUST); + } + + while (length > 0) + { + size = TrioWriteWideStringCharacter(self, *wstring++, flags, length); + if (size == 0) + break; /* while */ + length -= size; + } + + if (flags & FLAGS_LEFTADJUST) + { + while (width-- > 0) + self->OutStream(self, CHAR_ADJUST); + } +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + self->OutStream(self, CHAR_QUOTE); +#endif +} +#endif /* TRIO_FEATURE_WIDECHAR */ + +/************************************************************************* + * TrioWriteDouble + * + * http://wwwold.dkuug.dk/JTC1/SC22/WG14/www/docs/dr_211.htm + * + * "5.2.4.2.2 paragraph #4 + * + * The accuracy [...] is implementation defined, as is the accuracy + * of the conversion between floating-point internal representations + * and string representations performed by the libray routine in + * " + */ +/* FIXME: handle all instances of constant long-double number (L) + * and *l() math functions. + */ +#if TRIO_FEATURE_FLOAT +TRIO_PRIVATE void +TrioWriteDouble +TRIO_ARGS6((self, number, flags, width, precision, base), + trio_class_t *self, + trio_long_double_t number, + trio_flags_t flags, + int width, + int precision, + int base) +{ + trio_long_double_t integerNumber; + trio_long_double_t fractionNumber; + trio_long_double_t workNumber; + int integerDigits; + int fractionDigits; + int exponentDigits; + int workDigits; + int baseDigits; + int integerThreshold; + int fractionThreshold; + int expectedWidth; + int exponent = 0; + unsigned int uExponent = 0; + int exponentBase; + trio_long_double_t dblBase; + trio_long_double_t dblFractionBase; + trio_long_double_t integerAdjust; + trio_long_double_t fractionAdjust; + trio_long_double_t workFractionNumber; + trio_long_double_t workFractionAdjust; + int fractionDigitsInspect; + BOOLEAN_T isNegative; + BOOLEAN_T isExponentNegative = FALSE; + BOOLEAN_T requireTwoDigitExponent; + BOOLEAN_T isHex; + TRIO_CONST char *digits; +# if TRIO_FEATURE_QUOTE + char *groupingPointer; +# endif + int i; + int offset; + BOOLEAN_T hasOnlyZeroes; + int leadingFractionZeroes = -1; + register int trailingZeroes; + BOOLEAN_T keepTrailingZeroes; + BOOLEAN_T keepDecimalPoint; + trio_long_double_t epsilon; + BOOLEAN_T adjustNumber = FALSE; + + assert(VALID(self)); + assert(VALID(self->OutStream)); + assert(((base >= MIN_BASE) && (base <= MAX_BASE)) || (base == NO_BASE)); + + /* Determine sign and look for special quantities */ + switch (trio_fpclassify_and_signbit(number, &isNegative)) + { + case TRIO_FP_NAN: + TrioWriteString(self, + (flags & FLAGS_UPPER) + ? NAN_UPPER + : NAN_LOWER, + flags, width, precision); + return; + + case TRIO_FP_INFINITE: + if (isNegative) + { + /* Negative infinity */ + TrioWriteString(self, + (flags & FLAGS_UPPER) + ? "-" INFINITE_UPPER + : "-" INFINITE_LOWER, + flags, width, precision); + return; + } + else + { + /* Positive infinity */ + TrioWriteString(self, + (flags & FLAGS_UPPER) + ? INFINITE_UPPER + : INFINITE_LOWER, + flags, width, precision); + return; + } + + default: + /* Finitude */ + break; + } + + /* Normal numbers */ + if (flags & FLAGS_LONGDOUBLE) + { + baseDigits = (base == 10) + ? LDBL_DIG + : (int)trio_floor(LDBL_MANT_DIG / TrioLogarithmBase(base)); + epsilon = LDBL_EPSILON; + } + else if (flags & FLAGS_SHORT) + { + baseDigits = (base == BASE_DECIMAL) + ? FLT_DIG + : (int)trio_floor(FLT_MANT_DIG / TrioLogarithmBase(base)); + epsilon = FLT_EPSILON; + } + else + { + baseDigits = (base == BASE_DECIMAL) + ? DBL_DIG + : (int)trio_floor(DBL_MANT_DIG / TrioLogarithmBase(base)); + epsilon = DBL_EPSILON; + } + + digits = (flags & FLAGS_UPPER) ? internalDigitsUpper : internalDigitsLower; + isHex = (base == BASE_HEX); + if (base == NO_BASE) + base = BASE_DECIMAL; + dblBase = (trio_long_double_t)base; + keepTrailingZeroes = !( (flags & FLAGS_ROUNDING) || + ( (flags & FLAGS_FLOAT_G) && + !(flags & FLAGS_ALTERNATIVE) ) ); + +# if TRIO_FEATURE_ROUNDING + if (flags & FLAGS_ROUNDING) + { + precision = baseDigits; + } +# endif + + if (precision == NO_PRECISION) + { + if (isHex) + { + keepTrailingZeroes = FALSE; + precision = FLT_MANT_DIG; + } + else + { + precision = FLT_DIG; + } + } + + if (isNegative) + { + number = -number; + } + + if (isHex) + { + flags |= FLAGS_FLOAT_E; + } + + reprocess: + + if (flags & FLAGS_FLOAT_G) + { + if (precision == 0) + precision = 1; + + if ( (number < TRIO_SUFFIX_LONG(1.0E-4)) || + (number >= TrioPower(base, (trio_long_double_t)precision)) ) + { + /* Use scientific notation */ + flags |= FLAGS_FLOAT_E; + } + else if (number < 1.0) + { + /* + * Use normal notation. If the integer part of the number is + * zero, then adjust the precision to include leading fractional + * zeros. + */ + workNumber = TrioLogarithm(number, base); + workNumber = TRIO_FABS(workNumber); + if (workNumber - trio_floor(workNumber) < epsilon) + workNumber--; + leadingFractionZeroes = (int)trio_floor(workNumber); + } + } + + if (flags & FLAGS_FLOAT_E) + { + /* Scale the number */ + workNumber = TrioLogarithm(number, base); + if (trio_isinf(workNumber) == -1) + { + exponent = 0; + /* Undo setting */ + if (flags & FLAGS_FLOAT_G) + flags &= ~FLAGS_FLOAT_E; + } + else + { + exponent = (int)trio_floor(workNumber); + workNumber = number; + /* + * The expression A * 10^-B is equivalent to A / 10^B but the former + * usually gives better accuracy. + */ + workNumber *= TrioPower(dblBase, (trio_long_double_t)-exponent); + if (trio_isinf(workNumber)) { + /* + * Scaling is done it two steps to avoid problems with subnormal + * numbers. + */ + workNumber /= TrioPower(dblBase, (trio_long_double_t)(exponent / 2)); + workNumber /= TrioPower(dblBase, (trio_long_double_t)(exponent - (exponent / 2))); + } + number = workNumber; + isExponentNegative = (exponent < 0); + uExponent = (isExponentNegative) ? -exponent : exponent; + if (isHex) + uExponent *= 4; /* log16(2) */ +#if TRIO_FEATURE_QUOTE + /* No thousand separators */ + flags &= ~FLAGS_QUOTE; +#endif + } + } + + integerNumber = trio_floor(number); + fractionNumber = number - integerNumber; + + /* + * Truncated number. + * + * Precision is number of significant digits for FLOAT_G and number of + * fractional digits for others. + */ + integerDigits = 1; + if (integerNumber > epsilon) + { + integerDigits += (int)TrioLogarithm(integerNumber, base); + } + + fractionDigits = precision; + if (flags & FLAGS_FLOAT_G) + { + if (leadingFractionZeroes > 0) + { + fractionDigits += leadingFractionZeroes; + } + if ((integerNumber > epsilon) || (number <= epsilon)) + { + fractionDigits -= integerDigits; + } + } + + dblFractionBase = TrioPower(base, fractionDigits); + + if (integerNumber < 1.0) + { + workNumber = number * dblFractionBase + TRIO_SUFFIX_LONG(0.5); + if (trio_floor(number * dblFractionBase) != trio_floor(workNumber)) + { + adjustNumber = TRUE; + /* Remove a leading fraction zero if fraction is rounded up */ + if ((int)TrioLogarithm(number * dblFractionBase, base) != (int)TrioLogarithm(workNumber, base)) + { + --leadingFractionZeroes; + } + } + workNumber /= dblFractionBase; + } + else + { + workNumber = number + TRIO_SUFFIX_LONG(0.5) / dblFractionBase; + adjustNumber = (trio_floor(number) != trio_floor(workNumber)); + } + if (adjustNumber) + { + if ((flags & FLAGS_FLOAT_G) && !(flags & FLAGS_FLOAT_E)) + { + /* The adjustment may require a change to scientific notation */ + if ( (workNumber < TRIO_SUFFIX_LONG(1.0E-4)) || + (workNumber >= TrioPower(base, (trio_long_double_t)precision)) ) + { + /* Use scientific notation */ + flags |= FLAGS_FLOAT_E; + goto reprocess; + } + } + + if (flags & FLAGS_FLOAT_E) + { + workDigits = 1 + TrioLogarithm(trio_floor(workNumber), base); + if (integerDigits == workDigits) + { + /* Adjust if the same number of digits are used */ + number += TRIO_SUFFIX_LONG(0.5) / dblFractionBase; + integerNumber = trio_floor(number); + fractionNumber = number - integerNumber; + } + else + { + /* Adjust if number was rounded up one digit (ie. 0.99 to 1.00) */ + exponent++; + isExponentNegative = (exponent < 0); + uExponent = (isExponentNegative) ? -exponent : exponent; + if (isHex) + uExponent *= 4; /* log16(2) */ + workNumber = (number + TRIO_SUFFIX_LONG(0.5) / dblFractionBase) / dblBase; + integerNumber = trio_floor(workNumber); + fractionNumber = workNumber - integerNumber; + } + } + else + { + if (workNumber > 1.0) + { + /* Adjust if number was rounded up one digit (ie. 99 to 100) */ + integerNumber = trio_floor(workNumber); + fractionNumber = 0.0; + integerDigits = (integerNumber > epsilon) + ? 1 + (int)TrioLogarithm(integerNumber, base) + : 1; + if (flags & FLAGS_FLOAT_G) + { + if (flags & FLAGS_ALTERNATIVE) + { + if ((integerNumber > epsilon) || (number <= epsilon)) + { + fractionDigits -= integerDigits; + } + } + else + { + fractionDigits = 0; + } + } + } + else + { + integerNumber = trio_floor(workNumber); + fractionNumber = workNumber - integerNumber; + if (flags & FLAGS_FLOAT_G) + { + if (flags & FLAGS_ALTERNATIVE) + { + fractionDigits = precision; + if (leadingFractionZeroes > 0) + { + fractionDigits += leadingFractionZeroes; + } + if ((integerNumber > epsilon) || (number <= epsilon)) + { + fractionDigits -= integerDigits; + } + } + } + } + } + } + + /* Estimate accuracy */ + integerAdjust = fractionAdjust = TRIO_SUFFIX_LONG(0.5); +# if TRIO_FEATURE_ROUNDING + if (flags & FLAGS_ROUNDING) + { + if (integerDigits > baseDigits) + { + integerThreshold = baseDigits; + fractionDigits = 0; + dblFractionBase = 1.0; + fractionThreshold = 0; + precision = 0; /* Disable decimal-point */ + integerAdjust = TrioPower(base, integerDigits - integerThreshold - 1); + fractionAdjust = 0.0; + } + else + { + integerThreshold = integerDigits; + fractionThreshold = fractionDigits - integerThreshold; + fractionAdjust = 1.0; + } + } + else +# endif + { + integerThreshold = INT_MAX; + fractionThreshold = INT_MAX; + } + + /* + * Calculate expected width. + * sign + integer part + thousands separators + decimal point + * + fraction + exponent + */ + fractionAdjust /= dblFractionBase; + hasOnlyZeroes = (trio_floor((fractionNumber + fractionAdjust) * + dblFractionBase) < epsilon); + keepDecimalPoint = ( (flags & FLAGS_ALTERNATIVE) || + !((precision == 0) || + (!keepTrailingZeroes && hasOnlyZeroes)) ); + + expectedWidth = integerDigits + fractionDigits; + + if (!keepTrailingZeroes) + { + trailingZeroes = 0; + workFractionNumber = fractionNumber; + workFractionAdjust = fractionAdjust; + fractionDigitsInspect = fractionDigits; + + if (integerDigits > integerThreshold) + { + fractionDigitsInspect = 0; + } + else if (fractionThreshold <= fractionDigits) + { + fractionDigitsInspect = fractionThreshold + 1; + } + + trailingZeroes = fractionDigits - fractionDigitsInspect; + for (i = 0; i < fractionDigitsInspect; i++) + { + workFractionNumber *= dblBase; + workFractionAdjust *= dblBase; + workNumber = trio_floor(workFractionNumber + workFractionAdjust); + workFractionNumber -= workNumber; + offset = (int)trio_fmod(workNumber, dblBase); + if (offset == 0) + { + trailingZeroes++; + } + else + { + trailingZeroes = 0; + } + } + expectedWidth -= trailingZeroes; + } + + if (keepDecimalPoint) + { + expectedWidth += internalDecimalPointLength; + } + +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + { + expectedWidth += TrioCalcThousandSeparatorLength(integerDigits); + } +#endif + + if (isNegative || (flags & FLAGS_SHOWSIGN) || (flags & FLAGS_SPACE)) + { + expectedWidth += sizeof("-") - 1; + } + + exponentDigits = 0; + if (flags & FLAGS_FLOAT_E) + { + exponentDigits = (uExponent == 0) + ? 1 + : (int)trio_ceil(TrioLogarithm((double)(uExponent + 1), + (isHex) ? 10 : base)); + } + requireTwoDigitExponent = ((base == BASE_DECIMAL) && (exponentDigits == 1)); + if (exponentDigits > 0) + { + expectedWidth += exponentDigits; + expectedWidth += (requireTwoDigitExponent + ? sizeof("E+0") - 1 + : sizeof("E+") - 1); + } + + if (isHex) + { + expectedWidth += sizeof("0X") - 1; + } + + /* Output prefixing */ + if (flags & FLAGS_NILPADDING) + { + /* Leading zeros must be after sign */ + if (isNegative) + self->OutStream(self, '-'); + else if (flags & FLAGS_SHOWSIGN) + self->OutStream(self, '+'); + else if (flags & FLAGS_SPACE) + self->OutStream(self, ' '); + if (isHex) + { + self->OutStream(self, '0'); + self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); + } + if (!(flags & FLAGS_LEFTADJUST)) + { + for (i = expectedWidth; i < width; i++) + { + self->OutStream(self, '0'); + } + } + } + else + { + /* Leading spaces must be before sign */ + if (!(flags & FLAGS_LEFTADJUST)) + { + for (i = expectedWidth; i < width; i++) + { + self->OutStream(self, CHAR_ADJUST); + } + } + if (isNegative) + self->OutStream(self, '-'); + else if (flags & FLAGS_SHOWSIGN) + self->OutStream(self, '+'); + else if (flags & FLAGS_SPACE) + self->OutStream(self, ' '); + if (isHex) + { + self->OutStream(self, '0'); + self->OutStream(self, (flags & FLAGS_UPPER) ? 'X' : 'x'); + } + } + + /* Output the integer part and thousand separators */ + for (i = 0; i < integerDigits; i++) + { + workNumber = trio_floor(((integerNumber + integerAdjust) + / TrioPower(base, integerDigits - i - 1))); + if (i > integerThreshold) + { + /* Beyond accuracy */ + self->OutStream(self, digits[0]); + } + else + { + self->OutStream(self, digits[(int)trio_fmod(workNumber, dblBase)]); + } + +#if TRIO_FEATURE_QUOTE + if (((flags & (FLAGS_FLOAT_E | FLAGS_QUOTE)) == FLAGS_QUOTE) + && TrioFollowedBySeparator(integerDigits - i)) + { + for (groupingPointer = internalThousandSeparator; + *groupingPointer != NIL; + groupingPointer++) + { + self->OutStream(self, *groupingPointer); + } + } +#endif + } + + /* Insert decimal point and build the fraction part */ + trailingZeroes = 0; + + if (keepDecimalPoint) + { + if (internalDecimalPoint) + { + self->OutStream(self, internalDecimalPoint); + } + else + { + for (i = 0; i < internalDecimalPointLength; i++) + { + self->OutStream(self, internalDecimalPointString[i]); + } + } + } + + for (i = 0; i < fractionDigits; i++) + { + if ((integerDigits > integerThreshold) || (i > fractionThreshold)) + { + /* Beyond accuracy */ + trailingZeroes++; + } + else + { + fractionNumber *= dblBase; + fractionAdjust *= dblBase; + workNumber = trio_floor(fractionNumber + fractionAdjust); + if (workNumber > fractionNumber) + { + /* fractionNumber should never become negative */ + fractionNumber = 0.0; + fractionAdjust = 0.0; + } + else + { + fractionNumber -= workNumber; + } + offset = (int)trio_fmod(workNumber, dblBase); + if (offset == 0) + { + trailingZeroes++; + } + else + { + while (trailingZeroes > 0) + { + /* Not trailing zeroes after all */ + self->OutStream(self, digits[0]); + trailingZeroes--; + } + self->OutStream(self, digits[offset]); + } + } + } + + if (keepTrailingZeroes) + { + while (trailingZeroes > 0) + { + self->OutStream(self, digits[0]); + trailingZeroes--; + } + } + + /* Output exponent */ + if (exponentDigits > 0) + { + self->OutStream(self, + isHex + ? ((flags & FLAGS_UPPER) ? 'P' : 'p') + : ((flags & FLAGS_UPPER) ? 'E' : 'e')); + self->OutStream(self, (isExponentNegative) ? '-' : '+'); + + /* The exponent must contain at least two digits */ + if (requireTwoDigitExponent) + self->OutStream(self, '0'); + + if (isHex) + base = 10; + exponentBase = (int)TrioPower(base, exponentDigits - 1); + for (i = 0; i < exponentDigits; i++) + { + self->OutStream(self, digits[(uExponent / exponentBase) % base]); + exponentBase /= base; + } + } + /* Output trailing spaces */ + if (flags & FLAGS_LEFTADJUST) + { + for (i = expectedWidth; i < width; i++) + { + self->OutStream(self, CHAR_ADJUST); + } + } +} +#endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * TrioFormatProcess + * + * Description: + * This is the main engine for formatting output + */ +TRIO_PRIVATE int +TrioFormatProcess +TRIO_ARGS3((data, format, parameters), + trio_class_t *data, + TRIO_CONST char *format, + trio_parameter_t *parameters) +{ + int i; +#if TRIO_FEATURE_ERRNO + TRIO_CONST char *string; +#endif + trio_pointer_t pointer; + trio_flags_t flags; + int width; + int precision; + int base; + int offset; + + offset = 0; + i = 0; + + for (;;) + { + /* Skip the parameter entries */ + while (parameters[i].type == FORMAT_PARAMETER) + i++; + + /* Copy non conversion-specifier part of format string */ + while (offset < parameters[i].beginOffset) + { + if (CHAR_IDENTIFIER == format[offset] && CHAR_IDENTIFIER == format[offset + 1]) + { + data->OutStream(data, CHAR_IDENTIFIER); + offset += 2; + } + else + { + data->OutStream(data, format[offset++]); + } + } + + /* Abort if we reached end of format string */ + if (parameters[i].type == FORMAT_SENTINEL) + break; + + /* Ouput parameter */ + flags = parameters[i].flags; + + /* Find width */ + width = parameters[i].width; + if (flags & FLAGS_WIDTH_PARAMETER) + { + /* Get width from parameter list */ + width = (int)parameters[width].data.number.as_signed; + if (width < 0) + { + /* + * A negative width is the same as the - flag and + * a positive width. + */ + flags |= FLAGS_LEFTADJUST; + flags &= ~FLAGS_NILPADDING; + width = -width; + } + } + + /* Find precision */ + if (flags & FLAGS_PRECISION) + { + precision = parameters[i].precision; + if (flags & FLAGS_PRECISION_PARAMETER) + { + /* Get precision from parameter list */ + precision = (int)parameters[precision].data.number.as_signed; + if (precision < 0) + { + /* + * A negative precision is the same as no + * precision + */ + precision = NO_PRECISION; + } + } + } + else + { + precision = NO_PRECISION; + } + + /* Find base */ + if (NO_BASE != parameters[i].baseSpecifier) + { + /* Base from specifier has priority */ + base = parameters[i].baseSpecifier; + } + else if (flags & FLAGS_BASE_PARAMETER) + { + /* Get base from parameter list */ + base = parameters[i].base; + base = (int)parameters[base].data.number.as_signed; + } + else + { + /* Use base from format string */ + base = parameters[i].base; + } + + switch (parameters[i].type) + { + case FORMAT_CHAR: +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + data->OutStream(data, CHAR_QUOTE); +#endif + if (! (flags & FLAGS_LEFTADJUST)) + { + while (--width > 0) + data->OutStream(data, CHAR_ADJUST); + } +#if TRIO_FEATURE_WIDECHAR + if (flags & FLAGS_WIDECHAR) + { + TrioWriteWideStringCharacter(data, + (trio_wchar_t)parameters[i].data.number.as_signed, + flags, + NO_WIDTH); + } + else +#endif + { + TrioWriteStringCharacter(data, + (int)parameters[i].data.number.as_signed, + flags); + } + + if (flags & FLAGS_LEFTADJUST) + { + while(--width > 0) + data->OutStream(data, CHAR_ADJUST); + } +#if TRIO_FEATURE_QUOTE + if (flags & FLAGS_QUOTE) + data->OutStream(data, CHAR_QUOTE); +#endif + + break; /* FORMAT_CHAR */ + + case FORMAT_INT: + TrioWriteNumber(data, + parameters[i].data.number.as_unsigned, + flags, + width, + precision, + base); + + break; /* FORMAT_INT */ + +#if TRIO_FEATURE_FLOAT + case FORMAT_DOUBLE: + TrioWriteDouble(data, + parameters[i].data.longdoubleNumber, + flags, + width, + precision, + base); + break; /* FORMAT_DOUBLE */ +#endif + + case FORMAT_STRING: +#if TRIO_FEATURE_WIDECHAR + if (flags & FLAGS_WIDECHAR) + { + TrioWriteWideString(data, + parameters[i].data.wstring, + flags, + width, + precision); + } + else +#endif + { + TrioWriteString(data, + parameters[i].data.string, + flags, + width, + precision); + } + break; /* FORMAT_STRING */ + + case FORMAT_POINTER: + { + trio_reference_t reference; + + reference.data = data; + reference.parameter = ¶meters[i]; + trio_print_pointer(&reference, parameters[i].data.pointer); + } + break; /* FORMAT_POINTER */ + + case FORMAT_COUNT: + pointer = parameters[i].data.pointer; + if (NULL != pointer) + { + /* + * C99 paragraph 7.19.6.1.8 says "the number of + * characters written to the output stream so far by + * this call", which is data->actually.committed + */ +#if TRIO_FEATURE_SIZE_T || TRIO_FEATURE_SIZE_T_UPPER + if (flags & FLAGS_SIZE_T) + *(size_t *)pointer = (size_t)data->actually.committed; + else +#endif +#if TRIO_FEATURE_PTRDIFF_T + if (flags & FLAGS_PTRDIFF_T) + *(ptrdiff_t *)pointer = (ptrdiff_t)data->actually.committed; + else +#endif +#if TRIO_FEATURE_INTMAX_T + if (flags & FLAGS_INTMAX_T) + *(trio_intmax_t *)pointer = (trio_intmax_t)data->actually.committed; + else +#endif + if (flags & FLAGS_QUAD) + { + *(trio_ulonglong_t *)pointer = (trio_ulonglong_t)data->actually.committed; + } + else if (flags & FLAGS_LONG) + { + *(long int *)pointer = (long int)data->actually.committed; + } + else if (flags & FLAGS_SHORT) + { + *(short int *)pointer = (short int)data->actually.committed; + } + else + { + *(int *)pointer = (int)data->actually.committed; + } + } + break; /* FORMAT_COUNT */ + + case FORMAT_PARAMETER: + break; /* FORMAT_PARAMETER */ + +#if TRIO_FEATURE_ERRNO + case FORMAT_ERRNO: + string = trio_error(parameters[i].data.errorNumber); + if (string) + { + TrioWriteString(data, + string, + flags, + width, + precision); + } + else + { + data->OutStream(data, '#'); + TrioWriteNumber(data, + (trio_uintmax_t)parameters[i].data.errorNumber, + flags, + width, + precision, + BASE_DECIMAL); + } + break; /* FORMAT_ERRNO */ +#endif /* TRIO_FEATURE_ERRNO */ + +#if TRIO_FEATURE_USER_DEFINED + case FORMAT_USER_DEFINED: + { + trio_reference_t reference; + trio_userdef_t *def = NULL; + + if (parameters[i].flags & FLAGS_USER_DEFINED_PARAMETER) + { + /* Use handle */ + if ((i > 0) || + (parameters[i - 1].type == FORMAT_PARAMETER)) + def = (trio_userdef_t *)parameters[i - 1].data.pointer; + } + else + { + /* Look up namespace */ + def = TrioFindNamespace(parameters[i].user_defined.namespace, NULL); + } + if (def) + { + reference.data = data; + reference.parameter = ¶meters[i]; + def->callback(&reference); + } + } + break; +#endif /* TRIO_FEATURE_USER_DEFINED */ + + default: + break; + } /* switch parameter type */ + + /* Prepare for next */ + offset = parameters[i].endOffset; + i++; + } + + return data->processed; +} + +/************************************************************************* + * TrioFormatRef + */ +#if TRIO_EXTENSION +TRIO_PRIVATE int +TrioFormatRef +TRIO_ARGS4((reference, format, arglist, argarray), + trio_reference_t *reference, + TRIO_CONST char *format, + va_list arglist, + trio_pointer_t *argarray) +{ + int status; + trio_parameter_t parameters[MAX_PARAMETERS]; + + status = TrioParse(TYPE_PRINT, format, parameters, arglist, argarray); + if (status < 0) + return status; + + status = TrioFormatProcess(reference->data, format, parameters); + if (reference->data->error != 0) + { + status = reference->data->error; + } + return status; +} +#endif /* TRIO_EXTENSION */ + +/************************************************************************* + * TrioFormat + */ +TRIO_PRIVATE int +TrioFormat +TRIO_ARGS6((destination, destinationSize, OutStream, format, arglist, argarray), + trio_pointer_t destination, + size_t destinationSize, + void (*OutStream) TRIO_PROTO((trio_class_t *, int)), + TRIO_CONST char *format, + va_list arglist, + trio_pointer_t *argarray) +{ + int status; + trio_class_t data; + trio_parameter_t parameters[MAX_PARAMETERS]; + + assert(VALID(OutStream)); + assert(VALID(format)); + + memset(&data, 0, sizeof(data)); + data.OutStream = OutStream; + data.location = destination; + data.max = destinationSize; + data.error = 0; + +#if defined(USE_LOCALE) + if (NULL == internalLocaleValues) + { + TrioSetLocale(); + } +#endif + + status = TrioParse(TYPE_PRINT, format, parameters, arglist, argarray); + if (status < 0) + return status; + + status = TrioFormatProcess(&data, format, parameters); + if (data.error != 0) + { + status = data.error; + } + return status; +} + +/************************************************************************* + * TrioOutStreamFile + */ +#if TRIO_FEATURE_FILE || TRIO_FEATURE_STDIO +TRIO_PRIVATE void +TrioOutStreamFile +TRIO_ARGS2((self, output), + trio_class_t *self, + int output) +{ + FILE *file; + + assert(VALID(self)); + assert(VALID(self->location)); + + file = (FILE *)self->location; + self->processed++; + if (fputc(output, file) == EOF) + { + self->error = TRIO_ERROR_RETURN(TRIO_EOF, 0); + } + else + { + self->actually.committed++; + } +} +#endif /* TRIO_FEATURE_FILE || TRIO_FEATURE_STDIO */ + +/************************************************************************* + * TrioOutStreamFileDescriptor + */ +#if TRIO_FEATURE_FD +TRIO_PRIVATE void +TrioOutStreamFileDescriptor +TRIO_ARGS2((self, output), + trio_class_t *self, + int output) +{ + int fd; + char ch; + + assert(VALID(self)); + + fd = *((int *)self->location); + ch = (char)output; + self->processed++; + if (write(fd, &ch, sizeof(char)) == -1) + { + self->error = TRIO_ERROR_RETURN(TRIO_ERRNO, 0); + } + else + { + self->actually.committed++; + } +} +#endif /* TRIO_FEATURE_FD */ + +/************************************************************************* + * TrioOutStreamCustom + */ +#if TRIO_FEATURE_CLOSURE +TRIO_PRIVATE void +TrioOutStreamCustom +TRIO_ARGS2((self, output), + trio_class_t *self, + int output) +{ + int status; + trio_custom_t *data; + + assert(VALID(self)); + assert(VALID(self->location)); + + data = (trio_custom_t *)self->location; + if (data->stream.out) + { + status = (data->stream.out)(data->closure, output); + if (status >= 0) + { + self->actually.committed++; + } + else + { + if (self->error == 0) + { + self->error = TRIO_ERROR_RETURN(TRIO_ECUSTOM, -status); + } + } + } + self->processed++; +} +#endif /* TRIO_FEATURE_CLOSURE */ + +/************************************************************************* + * TrioOutStreamString + */ +TRIO_PRIVATE void +TrioOutStreamString +TRIO_ARGS2((self, output), + trio_class_t *self, + int output) +{ + char **buffer; + + assert(VALID(self)); + assert(VALID(self->location)); + + buffer = (char **)self->location; + **buffer = (char)output; + (*buffer)++; + self->processed++; + self->actually.committed++; +} + +/************************************************************************* + * TrioOutStreamStringMax + */ +TRIO_PRIVATE void +TrioOutStreamStringMax +TRIO_ARGS2((self, output), + trio_class_t *self, + int output) +{ + char **buffer; + + assert(VALID(self)); + assert(VALID(self->location)); + + buffer = (char **)self->location; + + if (self->processed < self->max) + { + **buffer = (char)output; + (*buffer)++; + self->actually.committed++; + } + self->processed++; +} + +/************************************************************************* + * TrioOutStreamStringDynamic + */ +#if TRIO_FEATURE_DYNAMICSTRING +TRIO_PRIVATE void +TrioOutStreamStringDynamic +TRIO_ARGS2((self, output), + trio_class_t *self, + int output) +{ + assert(VALID(self)); + assert(VALID(self->location)); + + if (self->error == 0) + { + trio_xstring_append_char((trio_string_t *)self->location, + (char)output); + self->actually.committed++; + } + /* The processed variable must always be increased */ + self->processed++; +} +#endif /* TRIO_FEATURE_DYNAMICSTRING */ + +/************************************************************************* + * + * Formatted printing functions + * + ************************************************************************/ + +#if defined(TRIO_DOCUMENTATION) +# include "doc/doc_printf.h" +#endif +/** @addtogroup Printf + @{ +*/ + +/************************************************************************* + * printf + */ + +/** + Print to standard output stream. + + @param format Formatting string. + @param ... Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_STDIO +TRIO_PUBLIC int +trio_printf +TRIO_VARGS2((format, va_alist), + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioFormat(stdout, 0, TrioOutStreamFile, format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_STDIO */ + +/** + Print to standard output stream. + + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_STDIO +TRIO_PUBLIC int +trio_vprintf +TRIO_ARGS2((format, args), + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(format)); + + return TrioFormat(stdout, 0, TrioOutStreamFile, format, args, NULL); +} +#endif /* TRIO_FEATURE_STDIO */ + +/** + Print to standard output stream. + + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_STDIO +TRIO_PUBLIC int +trio_printfv +TRIO_ARGS2((format, args), + TRIO_CONST char *format, + trio_pointer_t * args) +{ + static va_list unused; + + assert(VALID(format)); + + return TrioFormat(stdout, 0, TrioOutStreamFile, format, unused, args); +} +#endif /* TRIO_FEATURE_STDIO */ + +/************************************************************************* + * fprintf + */ + +/** + Print to file. + + @param file File pointer. + @param format Formatting string. + @param ... Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_FILE +TRIO_PUBLIC int +trio_fprintf +TRIO_VARGS3((file, format, va_alist), + FILE *file, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(file)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioFormat(file, 0, TrioOutStreamFile, format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_FILE */ + +/** + Print to file. + + @param file File pointer. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_FILE +TRIO_PUBLIC int +trio_vfprintf +TRIO_ARGS3((file, format, args), + FILE *file, + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(file)); + assert(VALID(format)); + + return TrioFormat(file, 0, TrioOutStreamFile, format, args, NULL); +} +#endif /* TRIO_FEATURE_FILE */ + +/** + Print to file. + + @param file File pointer. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_FILE +TRIO_PUBLIC int +trio_fprintfv +TRIO_ARGS3((file, format, args), + FILE *file, + TRIO_CONST char *format, + trio_pointer_t * args) +{ + static va_list unused; + + assert(VALID(file)); + assert(VALID(format)); + + return TrioFormat(file, 0, TrioOutStreamFile, format, unused, args); +} +#endif /* TRIO_FEATURE_FILE */ + +/************************************************************************* + * dprintf + */ + +/** + Print to file descriptor. + + @param fd File descriptor. + @param format Formatting string. + @param ... Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_FD +TRIO_PUBLIC int +trio_dprintf +TRIO_VARGS3((fd, format, va_alist), + int fd, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_FD */ + +/** + Print to file descriptor. + + @param fd File descriptor. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_FD +TRIO_PUBLIC int +trio_vdprintf +TRIO_ARGS3((fd, format, args), + int fd, + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(format)); + + return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, args, NULL); +} +#endif /* TRIO_FEATURE_FD */ + +/** + Print to file descriptor. + + @param fd File descriptor. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_FD +TRIO_PUBLIC int +trio_dprintfv +TRIO_ARGS3((fd, format, args), + int fd, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + + assert(VALID(format)); + + return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, unused, args); +} +#endif /* TRIO_FEATURE_FD */ + +/************************************************************************* + * cprintf + */ +#if TRIO_FEATURE_CLOSURE +TRIO_PUBLIC int +trio_cprintf +TRIO_VARGS4((stream, closure, format, va_alist), + trio_outstream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + trio_custom_t data; + + assert(VALID(stream)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + data.stream.out = stream; + data.closure = closure; + status = TrioFormat(&data, 0, TrioOutStreamCustom, format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_CLOSURE */ + +#if TRIO_FEATURE_CLOSURE +TRIO_PUBLIC int +trio_vcprintf +TRIO_ARGS4((stream, closure, format, args), + trio_outstream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, + va_list args) +{ + trio_custom_t data; + + assert(VALID(stream)); + assert(VALID(format)); + + data.stream.out = stream; + data.closure = closure; + return TrioFormat(&data, 0, TrioOutStreamCustom, format, args, NULL); +} +#endif /* TRIO_FEATURE_CLOSURE */ + +#if TRIO_FEATURE_CLOSURE +TRIO_PUBLIC int +trio_cprintfv +TRIO_ARGS4((stream, closure, format, args), + trio_outstream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, + void **args) +{ + static va_list unused; + trio_custom_t data; + + assert(VALID(stream)); + assert(VALID(format)); + + data.stream.out = stream; + data.closure = closure; + return TrioFormat(&data, 0, TrioOutStreamCustom, format, unused, args); +} +#endif /* TRIO_FEATURE_CLOSURE */ + +/************************************************************************* + * sprintf + */ + +/** + Print to string. + + @param buffer Output string. + @param format Formatting string. + @param ... Arguments. + @return Number of printed characters. + */ +TRIO_PUBLIC int +trio_sprintf +TRIO_VARGS3((buffer, format, va_alist), + char *buffer, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(buffer)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioFormat(&buffer, 0, TrioOutStreamString, format, args, NULL); + *buffer = NIL; /* Terminate with NIL character */ + TRIO_VA_END(args); + return status; +} + +/** + Print to string. + + @param buffer Output string. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +TRIO_PUBLIC int +trio_vsprintf +TRIO_ARGS3((buffer, format, args), + char *buffer, + TRIO_CONST char *format, + va_list args) +{ + int status; + + assert(VALID(buffer)); + assert(VALID(format)); + + status = TrioFormat(&buffer, 0, TrioOutStreamString, format, args, NULL); + *buffer = NIL; + return status; +} + +/** + Print to string. + + @param buffer Output string. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +TRIO_PUBLIC int +trio_sprintfv +TRIO_ARGS3((buffer, format, args), + char *buffer, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + int status; + + assert(VALID(buffer)); + assert(VALID(format)); + + status = TrioFormat(&buffer, 0, TrioOutStreamString, format, unused, args); + *buffer = NIL; + return status; +} + +/************************************************************************* + * snprintf + */ + +/** + Print at most @p max characters to string. + + @param buffer Output string. + @param max Maximum number of characters to print. + @param format Formatting string. + @param ... Arguments. + @return Number of printed characters. + */ +TRIO_PUBLIC int +trio_snprintf +TRIO_VARGS4((buffer, max, format, va_alist), + char *buffer, + size_t max, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(buffer) || (max == 0)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, + TrioOutStreamStringMax, format, args, NULL); + if (max > 0) + *buffer = NIL; + TRIO_VA_END(args); + return status; +} + +/** + Print at most @p max characters to string. + + @param buffer Output string. + @param max Maximum number of characters to print. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +TRIO_PUBLIC int +trio_vsnprintf +TRIO_ARGS4((buffer, max, format, args), + char *buffer, + size_t max, + TRIO_CONST char *format, + va_list args) +{ + int status; + + assert(VALID(buffer) || (max == 0)); + assert(VALID(format)); + + status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, + TrioOutStreamStringMax, format, args, NULL); + if (max > 0) + *buffer = NIL; + return status; +} + +/** + Print at most @p max characters to string. + + @param buffer Output string. + @param max Maximum number of characters to print. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +TRIO_PUBLIC int +trio_snprintfv +TRIO_ARGS4((buffer, max, format, args), + char *buffer, + size_t max, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + int status; + + assert(VALID(buffer) || (max == 0)); + assert(VALID(format)); + + status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, + TrioOutStreamStringMax, format, unused, args); + if (max > 0) + *buffer = NIL; + return status; +} + +/************************************************************************* + * snprintfcat + * Appends the new string to the buffer string overwriting the '\0' + * character at the end of buffer. + */ +#if TRIO_EXTENSION +TRIO_PUBLIC int +trio_snprintfcat +TRIO_VARGS4((buffer, max, format, va_alist), + char *buffer, + size_t max, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + size_t buf_len; + + TRIO_VA_START(args, format); + + assert(VALID(buffer)); + assert(VALID(format)); + + buf_len = trio_length(buffer); + buffer = &buffer[buf_len]; + + status = TrioFormat(&buffer, max - 1 - buf_len, + TrioOutStreamStringMax, format, args, NULL); + TRIO_VA_END(args); + *buffer = NIL; + return status; +} +#endif + +#if TRIO_EXTENSION +TRIO_PUBLIC int +trio_vsnprintfcat +TRIO_ARGS4((buffer, max, format, args), + char *buffer, + size_t max, + TRIO_CONST char *format, + va_list args) +{ + int status; + size_t buf_len; + + assert(VALID(buffer)); + assert(VALID(format)); + + buf_len = trio_length(buffer); + buffer = &buffer[buf_len]; + status = TrioFormat(&buffer, max - 1 - buf_len, + TrioOutStreamStringMax, format, args, NULL); + *buffer = NIL; + return status; +} +#endif + +/************************************************************************* + * trio_aprintf + */ + +#if TRIO_DEPRECATED && TRIO_FEATURE_DYNAMICSTRING +TRIO_PUBLIC char * +trio_aprintf +TRIO_VARGS2((format, va_alist), + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + va_list args; + trio_string_t *info; + char *result = NULL; + + assert(VALID(format)); + + info = trio_xstring_duplicate(""); + if (info) + { + TRIO_VA_START(args, format); + (void)TrioFormat(info, 0, TrioOutStreamStringDynamic, + format, args, NULL); + TRIO_VA_END(args); + + trio_string_terminate(info); + result = trio_string_extract(info); + trio_string_destroy(info); + } + return result; +} +#endif /* TRIO_DEPRECATED && TRIO_FEATURE_DYNAMICSTRING */ + +#if TRIO_DEPRECATED && TRIO_FEATURE_DYNAMICSTRING +TRIO_PUBLIC char * +trio_vaprintf +TRIO_ARGS2((format, args), + TRIO_CONST char *format, + va_list args) +{ + trio_string_t *info; + char *result = NULL; + + assert(VALID(format)); + + info = trio_xstring_duplicate(""); + if (info) + { + (void)TrioFormat(info, 0, TrioOutStreamStringDynamic, + format, args, NULL); + trio_string_terminate(info); + result = trio_string_extract(info); + trio_string_destroy(info); + } + return result; +} +#endif /* TRIO_DEPRECATED && TRIO_FEATURE_DYNAMICSTRING */ + +/** + Allocate and print to string. + The memory allocated and returned by @p result must be freed by the + calling application. + + @param result Output string. + @param format Formatting string. + @param ... Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_DYNAMICSTRING +TRIO_PUBLIC int +trio_asprintf +TRIO_VARGS3((result, format, va_alist), + char **result, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + va_list args; + int status; + trio_string_t *info; + + assert(VALID(format)); + + *result = NULL; + + info = trio_xstring_duplicate(""); + if (info == NULL) + { + status = TRIO_ERROR_RETURN(TRIO_ENOMEM, 0); + } + else + { + TRIO_VA_START(args, format); + status = TrioFormat(info, 0, TrioOutStreamStringDynamic, + format, args, NULL); + TRIO_VA_END(args); + if (status >= 0) + { + trio_string_terminate(info); + *result = trio_string_extract(info); + } + trio_string_destroy(info); + } + return status; +} +#endif /* TRIO_FEATURE_DYNAMICSTRING */ + +/** + Allocate and print to string. + The memory allocated and returned by @p result must be freed by the + calling application. + + @param result Output string. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_DYNAMICSTRING +TRIO_PUBLIC int +trio_vasprintf +TRIO_ARGS3((result, format, args), + char **result, + TRIO_CONST char *format, + va_list args) +{ + int status; + trio_string_t *info; + + assert(VALID(format)); + + *result = NULL; + + info = trio_xstring_duplicate(""); + if (info == NULL) + { + status = TRIO_ERROR_RETURN(TRIO_ENOMEM, 0); + } + else + { + status = TrioFormat(info, 0, TrioOutStreamStringDynamic, + format, args, NULL); + if (status >= 0) + { + trio_string_terminate(info); + *result = trio_string_extract(info); + } + trio_string_destroy(info); + } + return status; +} +#endif /* TRIO_FEATURE_DYNAMICSTRING */ + +/** + Allocate and print to string. + The memory allocated and returned by @p result must be freed by the + calling application. + + @param result Output string. + @param format Formatting string. + @param args Arguments. + @return Number of printed characters. + */ +#if TRIO_FEATURE_DYNAMICSTRING +TRIO_PUBLIC int +trio_asprintfv +TRIO_ARGS3((result, format, args), + char **result, + TRIO_CONST char *format, + trio_pointer_t * args) +{ + static va_list unused; + int status; + trio_string_t *info; + + assert(VALID(format)); + + *result = NULL; + + info = trio_xstring_duplicate(""); + if (info == NULL) + { + status = TRIO_ERROR_RETURN(TRIO_ENOMEM, 0); + } + else + { + status = TrioFormat(info, 0, TrioOutStreamStringDynamic, + format, unused, args); + if (status >= 0) + { + trio_string_terminate(info); + *result = trio_string_extract(info); + } + trio_string_destroy(info); + } + return status; +} +#endif /* TRIO_FEATURE_DYNAMICSTRING */ + +/** @} End of Printf documentation module */ + +/************************************************************************* + * + * CALLBACK + * + ************************************************************************/ + +#if defined(TRIO_DOCUMENTATION) +# include "doc/doc_register.h" +#endif +/** + @addtogroup UserDefined + @{ +*/ + +#if TRIO_FEATURE_USER_DEFINED + +/************************************************************************* + * trio_register + */ + +/** + Register new user-defined specifier. + + @param callback + @param name + @return Handle. + */ +TRIO_PUBLIC trio_pointer_t +trio_register +TRIO_ARGS2((callback, name), + trio_callback_t callback, + TRIO_CONST char *name) +{ + trio_userdef_t *def; + trio_userdef_t *prev = NULL; + + if (callback == NULL) + return NULL; + + if (name) + { + /* Handle built-in namespaces */ + if (name[0] == ':') + { + if (trio_equal(name, ":enter")) + { + internalEnterCriticalRegion = callback; + } + else if (trio_equal(name, ":leave")) + { + internalLeaveCriticalRegion = callback; + } + return NULL; + } + + /* Bail out if namespace is too long */ + if (trio_length(name) >= MAX_USER_NAME) + return NULL; + + /* Bail out if namespace already is registered */ + def = TrioFindNamespace(name, &prev); + if (def) + return NULL; + } + + def = (trio_userdef_t *)TRIO_MALLOC(sizeof(trio_userdef_t)); + if (def) + { + if (internalEnterCriticalRegion) + (void)internalEnterCriticalRegion(NULL); + + if (name) + { + /* Link into internal list */ + if (prev == NULL) + internalUserDef = def; + else + prev->next = def; + } + /* Initialize */ + def->callback = callback; + def->name = (name == NULL) + ? NULL + : trio_duplicate(name); + def->next = NULL; + + if (internalLeaveCriticalRegion) + (void)internalLeaveCriticalRegion(NULL); + } + return (trio_pointer_t)def; +} + +/** + Unregister an existing user-defined specifier. + + @param handle + */ +void +trio_unregister +TRIO_ARGS1((handle), + trio_pointer_t handle) +{ + trio_userdef_t *self = (trio_userdef_t *)handle; + trio_userdef_t *def; + trio_userdef_t *prev = NULL; + + assert(VALID(self)); + + if (self->name) + { + def = TrioFindNamespace(self->name, &prev); + if (def) + { + if (internalEnterCriticalRegion) + (void)internalEnterCriticalRegion(NULL); + + if (prev == NULL) + internalUserDef = internalUserDef->next; + else + prev->next = def->next; + + if (internalLeaveCriticalRegion) + (void)internalLeaveCriticalRegion(NULL); + } + trio_destroy(self->name); + } + TRIO_FREE(self); +} + +/************************************************************************* + * trio_get_format [public] + */ +TRIO_CONST char * +trio_get_format +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ +#if TRIO_FEATURE_USER_DEFINED + assert(((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINED); +#endif + + return (((trio_reference_t *)ref)->parameter->user_data); +} + +/************************************************************************* + * trio_get_argument [public] + */ +/* Mednafen modification to fix a gcc warning */ +/*TRIO_CONST*/ trio_pointer_t +trio_get_argument +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ +#if TRIO_FEATURE_USER_DEFINED + assert(((trio_reference_t *)ref)->parameter->type == FORMAT_USER_DEFINED); +#endif + + return ((trio_reference_t *)ref)->parameter->data.pointer; +} + +/************************************************************************* + * trio_get_width / trio_set_width [public] + */ +int +trio_get_width +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return ((trio_reference_t *)ref)->parameter->width; +} + +void +trio_set_width +TRIO_ARGS2((ref, width), + trio_pointer_t ref, + int width) +{ + ((trio_reference_t *)ref)->parameter->width = width; +} + +/************************************************************************* + * trio_get_precision / trio_set_precision [public] + */ +int +trio_get_precision +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->precision); +} + +void +trio_set_precision +TRIO_ARGS2((ref, precision), + trio_pointer_t ref, + int precision) +{ + ((trio_reference_t *)ref)->parameter->precision = precision; +} + +/************************************************************************* + * trio_get_base / trio_set_base [public] + */ +int +trio_get_base +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->base); +} + +void +trio_set_base +TRIO_ARGS2((ref, base), + trio_pointer_t ref, + int base) +{ + ((trio_reference_t *)ref)->parameter->base = base; +} + +/************************************************************************* + * trio_get_long / trio_set_long [public] + */ +int +trio_get_long +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_LONG) + ? TRUE + : FALSE; +} + +void +trio_set_long +TRIO_ARGS2((ref, is_long), + trio_pointer_t ref, + int is_long) +{ + if (is_long) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_LONG; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_LONG; +} + +/************************************************************************* + * trio_get_longlong / trio_set_longlong [public] + */ +int +trio_get_longlong +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_QUAD) + ? TRUE + : FALSE; +} + +void +trio_set_longlong +TRIO_ARGS2((ref, is_longlong), + trio_pointer_t ref, + int is_longlong) +{ + if (is_longlong) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_QUAD; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_QUAD; +} + +/************************************************************************* + * trio_get_longdouble / trio_set_longdouble [public] + */ +# if TRIO_FEATURE_FLOAT +int +trio_get_longdouble +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_LONGDOUBLE) + ? TRUE + : FALSE; +} + +void +trio_set_longdouble +TRIO_ARGS2((ref, is_longdouble), + trio_pointer_t ref, + int is_longdouble) +{ + if (is_longdouble) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_LONGDOUBLE; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_LONGDOUBLE; +} +# endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * trio_get_short / trio_set_short [public] + */ +int +trio_get_short +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_SHORT) + ? TRUE + : FALSE; +} + +void +trio_set_short +TRIO_ARGS2((ref, is_short), + trio_pointer_t ref, + int is_short) +{ + if (is_short) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_SHORT; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_SHORT; +} + +/************************************************************************* + * trio_get_shortshort / trio_set_shortshort [public] + */ +int +trio_get_shortshort +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_SHORTSHORT) + ? TRUE + : FALSE; +} + +void +trio_set_shortshort +TRIO_ARGS2((ref, is_shortshort), + trio_pointer_t ref, + int is_shortshort) +{ + if (is_shortshort) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_SHORTSHORT; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_SHORTSHORT; +} + +/************************************************************************* + * trio_get_alternative / trio_set_alternative [public] + */ +int +trio_get_alternative +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_ALTERNATIVE) + ? TRUE + : FALSE; +} + +void +trio_set_alternative +TRIO_ARGS2((ref, is_alternative), + trio_pointer_t ref, + int is_alternative) +{ + if (is_alternative) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_ALTERNATIVE; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_ALTERNATIVE; +} + +/************************************************************************* + * trio_get_alignment / trio_set_alignment [public] + */ +int +trio_get_alignment +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_LEFTADJUST) + ? TRUE + : FALSE; +} + +void +trio_set_alignment +TRIO_ARGS2((ref, is_leftaligned), + trio_pointer_t ref, + int is_leftaligned) +{ + if (is_leftaligned) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_LEFTADJUST; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_LEFTADJUST; +} + +/************************************************************************* + * trio_get_spacing /trio_set_spacing [public] + */ +int +trio_get_spacing +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_SPACE) + ? TRUE + : FALSE; +} + +void +trio_set_spacing +TRIO_ARGS2((ref, is_space), + trio_pointer_t ref, + int is_space) +{ + if (is_space) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_SPACE; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_SPACE; +} + +/************************************************************************* + * trio_get_sign / trio_set_sign [public] + */ +int +trio_get_sign +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_SHOWSIGN) + ? TRUE + : FALSE; +} + +void +trio_set_sign +TRIO_ARGS2((ref, is_sign), + trio_pointer_t ref, + int is_sign) +{ + if (is_sign) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_SHOWSIGN; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_SHOWSIGN; +} + +/************************************************************************* + * trio_get_padding / trio_set_padding [public] + */ +int +trio_get_padding +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_NILPADDING) + ? TRUE + : FALSE; +} + +void +trio_set_padding +TRIO_ARGS2((ref, is_padding), + trio_pointer_t ref, + int is_padding) +{ + if (is_padding) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_NILPADDING; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_NILPADDING; +} + +/************************************************************************* + * trio_get_quote / trio_set_quote [public] + */ +# if TRIO_FEATURE_QUOTE +int +trio_get_quote +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_QUOTE) + ? TRUE + : FALSE; +} + +void +trio_set_quote +TRIO_ARGS2((ref, is_quote), + trio_pointer_t ref, + int is_quote) +{ + if (is_quote) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_QUOTE; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_QUOTE; +} +#endif /* TRIO_FEATURE_QUOTE */ + +/************************************************************************* + * trio_get_upper / trio_set_upper [public] + */ +int +trio_get_upper +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_UPPER) + ? TRUE + : FALSE; +} + +void +trio_set_upper +TRIO_ARGS2((ref, is_upper), + trio_pointer_t ref, + int is_upper) +{ + if (is_upper) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_UPPER; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_UPPER; +} + +/************************************************************************* + * trio_get_largest / trio_set_largest [public] + */ +#if TRIO_FEATURE_INTMAX_T +int +trio_get_largest +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_INTMAX_T) + ? TRUE + : FALSE; +} + +void +trio_set_largest +TRIO_ARGS2((ref, is_largest), + trio_pointer_t ref, + int is_largest) +{ + if (is_largest) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_INTMAX_T; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_INTMAX_T; +} +#endif /* TRIO_FEATURE_INTMAX_T */ + +/************************************************************************* + * trio_get_ptrdiff / trio_set_ptrdiff [public] + */ +#if TRIO_FEATURE_PTRDIFF_T +int +trio_get_ptrdiff +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_PTRDIFF_T) + ? TRUE + : FALSE; +} + +void +trio_set_ptrdiff +TRIO_ARGS2((ref, is_ptrdiff), + trio_pointer_t ref, + int is_ptrdiff) +{ + if (is_ptrdiff) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_PTRDIFF_T; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_PTRDIFF_T; +} +#endif /* TRIO_FEATURE_PTRDIFF_T */ + +/************************************************************************* + * trio_get_size / trio_set_size [public] + */ +#if TRIO_FEATURE_SIZE_T +int +trio_get_size +TRIO_ARGS1((ref), + trio_pointer_t ref) +{ + return (((trio_reference_t *)ref)->parameter->flags & FLAGS_SIZE_T) + ? TRUE + : FALSE; +} + +void +trio_set_size +TRIO_ARGS2((ref, is_size), + trio_pointer_t ref, + int is_size) +{ + if (is_size) + ((trio_reference_t *)ref)->parameter->flags |= FLAGS_SIZE_T; + else + ((trio_reference_t *)ref)->parameter->flags &= ~FLAGS_SIZE_T; +} +#endif /* TRIO_FEATURE_SIZE_T */ + +/************************************************************************* + * trio_print_int [public] + */ +void +trio_print_int +TRIO_ARGS2((ref, number), + trio_pointer_t ref, + int number) +{ + trio_reference_t *self = (trio_reference_t *)ref; + + TrioWriteNumber(self->data, + (trio_uintmax_t)number, + self->parameter->flags, + self->parameter->width, + self->parameter->precision, + self->parameter->base); +} + +/************************************************************************* + * trio_print_uint [public] + */ +void +trio_print_uint +TRIO_ARGS2((ref, number), + trio_pointer_t ref, + unsigned int number) +{ + trio_reference_t *self = (trio_reference_t *)ref; + + TrioWriteNumber(self->data, + (trio_uintmax_t)number, + self->parameter->flags | FLAGS_UNSIGNED, + self->parameter->width, + self->parameter->precision, + self->parameter->base); +} + +/************************************************************************* + * trio_print_double [public] + */ +#if TRIO_FEATURE_FLOAT +void +trio_print_double +TRIO_ARGS2((ref, number), + trio_pointer_t ref, + double number) +{ + trio_reference_t *self = (trio_reference_t *)ref; + + TrioWriteDouble(self->data, + number, + self->parameter->flags, + self->parameter->width, + self->parameter->precision, + self->parameter->base); +} +#endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * trio_print_string [public] + */ +void +trio_print_string +TRIO_ARGS2((ref, string), + trio_pointer_t ref, + TRIO_CONST char *string) +{ + trio_reference_t *self = (trio_reference_t *)ref; + + TrioWriteString(self->data, + string, + self->parameter->flags, + self->parameter->width, + self->parameter->precision); +} + +/************************************************************************* + * trio_print_ref [public] + */ +int +trio_print_ref +TRIO_VARGS3((ref, format, va_alist), + trio_pointer_t ref, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list arglist; + + assert(VALID(format)); + + TRIO_VA_START(arglist, format); + status = TrioFormatRef((trio_reference_t *)ref, format, arglist, NULL); + TRIO_VA_END(arglist); + return status; +} + +/************************************************************************* + * trio_vprint_ref [public] + */ +int +trio_vprint_ref +TRIO_ARGS3((ref, format, arglist), + trio_pointer_t ref, + TRIO_CONST char *format, + va_list arglist) +{ + assert(VALID(format)); + + return TrioFormatRef((trio_reference_t *)ref, format, arglist, NULL); +} + +/************************************************************************* + * trio_printv_ref [public] + */ +int +trio_printv_ref +TRIO_ARGS3((ref, format, argarray), + trio_pointer_t ref, + TRIO_CONST char *format, + trio_pointer_t *argarray) +{ + static va_list unused; + + assert(VALID(format)); + + return TrioFormatRef((trio_reference_t *)ref, format, unused, argarray); +} + +#endif + +/************************************************************************* + * trio_print_pointer [public] + */ +void +trio_print_pointer +TRIO_ARGS2((ref, pointer), + trio_pointer_t ref, + trio_pointer_t pointer) +{ + trio_reference_t *self = (trio_reference_t *)ref; + trio_flags_t flags; + trio_uintmax_t number; + + if (NULL == pointer) + { + TRIO_CONST char *string = internalNullString; + while (*string) + self->data->OutStream(self->data, *string++); + } + else + { + /* + * The subtraction of the null pointer is a workaround + * to avoid a compiler warning. The performance overhead + * is negligible (and likely to be removed by an + * optimizing compiler). The (char *) casting is done + * to please ANSI C++. + */ + number = (trio_uintmax_t)((char *)pointer - (char *)0); + /* Shrink to size of pointer */ + number &= (trio_uintmax_t)-1; + flags = self->parameter->flags; + flags |= (FLAGS_UNSIGNED | FLAGS_ALTERNATIVE | + FLAGS_NILPADDING); + TrioWriteNumber(self->data, + number, + flags, + POINTER_WIDTH, + NO_PRECISION, + BASE_HEX); + } +} + +/** @} End of UserDefined documentation module */ + +/************************************************************************* + * + * LOCALES + * + ************************************************************************/ + +/************************************************************************* + * trio_locale_set_decimal_point + * + * Decimal point can only be one character. The input argument is a + * string to enable multibyte characters. At most MB_LEN_MAX characters + * will be used. + */ +#if TRIO_FEATURE_LOCALE +TRIO_PUBLIC void +trio_locale_set_decimal_point +TRIO_ARGS1((decimalPoint), + char *decimalPoint) +{ +#if defined(USE_LOCALE) + if (NULL == internalLocaleValues) + { + TrioSetLocale(); + } +#endif + internalDecimalPointLength = trio_length(decimalPoint); + if (internalDecimalPointLength == 1) + { + internalDecimalPoint = *decimalPoint; + } + else + { + internalDecimalPoint = NIL; + trio_copy_max(internalDecimalPointString, + sizeof(internalDecimalPointString), + decimalPoint); + } +} +#endif + +/************************************************************************* + * trio_locale_set_thousand_separator + * + * See trio_locale_set_decimal_point + */ +#if TRIO_FEATURE_LOCALE || TRIO_EXTENSION +TRIO_PUBLIC void +trio_locale_set_thousand_separator +TRIO_ARGS1((thousandSeparator), + char *thousandSeparator) +{ +# if defined(USE_LOCALE) + if (NULL == internalLocaleValues) + { + TrioSetLocale(); + } +# endif + trio_copy_max(internalThousandSeparator, + sizeof(internalThousandSeparator), + thousandSeparator); + internalThousandSeparatorLength = trio_length(internalThousandSeparator); +} +#endif + +/************************************************************************* + * trio_locale_set_grouping + * + * Array of bytes. Reversed order. + * + * CHAR_MAX : No further grouping + * 0 : Repeat last group for the remaining digits (not necessary + * as C strings are zero-terminated) + * n : Set current group to n + * + * Same order as the grouping attribute in LC_NUMERIC. + */ +#if TRIO_FEATURE_LOCALE || TRIO_EXTENSION +TRIO_PUBLIC void +trio_locale_set_grouping +TRIO_ARGS1((grouping), + char *grouping) +{ +# if defined(USE_LOCALE) + if (NULL == internalLocaleValues) + { + TrioSetLocale(); + } +# endif + trio_copy_max(internalGrouping, + sizeof(internalGrouping), + grouping); +} +#endif + + +/************************************************************************* + * + * SCANNING + * + ************************************************************************/ + +#if TRIO_FEATURE_SCANF + +/************************************************************************* + * TrioSkipWhitespaces + */ +TRIO_PRIVATE int +TrioSkipWhitespaces +TRIO_ARGS1((self), + trio_class_t *self) +{ + int ch; + + ch = self->current; + while (isspace(ch)) + { + self->InStream(self, &ch); + } + return ch; +} + +/************************************************************************* + * TrioGetCollation + */ +#if TRIO_EXTENSION +TRIO_PRIVATE void +TrioGetCollation(TRIO_NOARGS) +{ + int i; + int j; + int k; + char first[2]; + char second[2]; + + /* This is computationally expensive */ + first[1] = NIL; + second[1] = NIL; + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + { + k = 0; + first[0] = (char)i; + for (j = 0; j < MAX_CHARACTER_CLASS; j++) + { + second[0] = (char)j; + if (trio_equal_locale(first, second)) + internalCollationArray[i][k++] = (char)j; + } + internalCollationArray[i][k] = NIL; + } +} +#endif + +/************************************************************************* + * TrioGetCharacterClass + * + * FIXME: + * multibyte + */ +TRIO_PRIVATE int +TrioGetCharacterClass +TRIO_ARGS4((format, offsetPointer, flagsPointer, characterclass), + TRIO_CONST char *format, + int *offsetPointer, + trio_flags_t *flagsPointer, + int *characterclass) +{ + int offset = *offsetPointer; + int i; + char ch; + char range_begin; + char range_end; + + *flagsPointer &= ~FLAGS_EXCLUDE; + + if (format[offset] == QUALIFIER_CIRCUMFLEX) + { + *flagsPointer |= FLAGS_EXCLUDE; + offset++; + } + /* + * If the ungroup character is at the beginning of the scanlist, + * it will be part of the class, and a second ungroup character + * must follow to end the group. + */ + if (format[offset] == SPECIFIER_UNGROUP) + { + characterclass[(int)SPECIFIER_UNGROUP]++; + offset++; + } + /* + * Minus is used to specify ranges. To include minus in the class, + * it must be at the beginning of the list + */ + if (format[offset] == QUALIFIER_MINUS) + { + characterclass[(int)QUALIFIER_MINUS]++; + offset++; + } + /* Collect characters */ + for (ch = format[offset]; + (ch != SPECIFIER_UNGROUP) && (ch != NIL); + ch = format[++offset]) + { + switch (ch) + { + case QUALIFIER_MINUS: /* Scanlist ranges */ + + /* + * Both C99 and UNIX98 describes ranges as implementation- + * defined. + * + * We support the following behaviour (although this may + * change as we become wiser) + * - only increasing ranges, ie. [a-b] but not [b-a] + * - transitive ranges, ie. [a-b-c] == [a-c] + * - trailing minus, ie. [a-] is interpreted as an 'a' + * and a '-' + * - duplicates (although we can easily convert these + * into errors) + */ + range_begin = format[offset - 1]; + range_end = format[++offset]; + if (range_end == SPECIFIER_UNGROUP) + { + /* Trailing minus is included */ + characterclass[(int)ch]++; + ch = range_end; + break; /* for */ + } + if (range_end == NIL) + return TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + if (range_begin > range_end) + return TRIO_ERROR_RETURN(TRIO_ERANGE, offset); + + for (i = (int)range_begin; i <= (int)range_end; i++) + characterclass[i]++; + + ch = range_end; + break; + +#if TRIO_EXTENSION + + case SPECIFIER_GROUP: + + switch (format[offset + 1]) + { + case QUALIFIER_DOT: /* Collating symbol */ + /* + * FIXME: This will be easier to implement when multibyte + * characters have been implemented. Until now, we ignore + * this feature. + */ + for (i = offset + 2; ; i++) + { + if (format[i] == NIL) + /* Error in syntax */ + return -1; + else if (format[i] == QUALIFIER_DOT) + break; /* for */ + } + if (format[++i] != SPECIFIER_UNGROUP) + return -1; + + offset = i; + break; + + case QUALIFIER_EQUAL: /* Equivalence class expressions */ + { + unsigned int j; + unsigned int k; + + if (internalCollationUnconverted) + { + /* Lazy evaluation of collation array */ + TrioGetCollation(); + internalCollationUnconverted = FALSE; + } + for (i = offset + 2; ; i++) + { + if (format[i] == NIL) + /* Error in syntax */ + return -1; + else if (format[i] == QUALIFIER_EQUAL) + break; /* for */ + else + { + /* Mark any equivalent character */ + k = (unsigned int)format[i]; + for (j = 0; internalCollationArray[k][j] != NIL; j++) + characterclass[(int)internalCollationArray[k][j]]++; + } + } + if (format[++i] != SPECIFIER_UNGROUP) + return -1; + + offset = i; + } + break; + + case QUALIFIER_COLON: /* Character class expressions */ + + if (trio_equal_max(CLASS_ALNUM, sizeof(CLASS_ALNUM) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isalnum(i)) + characterclass[i]++; + offset += sizeof(CLASS_ALNUM) - 1; + } + else if (trio_equal_max(CLASS_ALPHA, sizeof(CLASS_ALPHA) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isalpha(i)) + characterclass[i]++; + offset += sizeof(CLASS_ALPHA) - 1; + } + else if (trio_equal_max(CLASS_CNTRL, sizeof(CLASS_CNTRL) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (iscntrl(i)) + characterclass[i]++; + offset += sizeof(CLASS_CNTRL) - 1; + } + else if (trio_equal_max(CLASS_DIGIT, sizeof(CLASS_DIGIT) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isdigit(i)) + characterclass[i]++; + offset += sizeof(CLASS_DIGIT) - 1; + } + else if (trio_equal_max(CLASS_GRAPH, sizeof(CLASS_GRAPH) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isgraph(i)) + characterclass[i]++; + offset += sizeof(CLASS_GRAPH) - 1; + } + else if (trio_equal_max(CLASS_LOWER, sizeof(CLASS_LOWER) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (islower(i)) + characterclass[i]++; + offset += sizeof(CLASS_LOWER) - 1; + } + else if (trio_equal_max(CLASS_PRINT, sizeof(CLASS_PRINT) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isprint(i)) + characterclass[i]++; + offset += sizeof(CLASS_PRINT) - 1; + } + else if (trio_equal_max(CLASS_PUNCT, sizeof(CLASS_PUNCT) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (ispunct(i)) + characterclass[i]++; + offset += sizeof(CLASS_PUNCT) - 1; + } + else if (trio_equal_max(CLASS_SPACE, sizeof(CLASS_SPACE) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isspace(i)) + characterclass[i]++; + offset += sizeof(CLASS_SPACE) - 1; + } + else if (trio_equal_max(CLASS_UPPER, sizeof(CLASS_UPPER) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isupper(i)) + characterclass[i]++; + offset += sizeof(CLASS_UPPER) - 1; + } + else if (trio_equal_max(CLASS_XDIGIT, sizeof(CLASS_XDIGIT) - 1, + &format[offset])) + { + for (i = 0; i < MAX_CHARACTER_CLASS; i++) + if (isxdigit(i)) + characterclass[i]++; + offset += sizeof(CLASS_XDIGIT) - 1; + } + else + { + characterclass[(int)ch]++; + } + break; + + default: + characterclass[(int)ch]++; + break; + } + break; + +#endif /* TRIO_EXTENSION */ + + default: + characterclass[(int)ch]++; + break; + } + } + return 0; +} + +/************************************************************************* + * TrioReadNumber + * + * We implement our own number conversion in preference of strtol and + * strtoul, because we must handle 'long long' and thousand separators. + */ +TRIO_PRIVATE BOOLEAN_T +TrioReadNumber +TRIO_ARGS5((self, target, flags, width, base), + trio_class_t *self, + trio_uintmax_t *target, + trio_flags_t flags, + int width, + int base) +{ + trio_uintmax_t number = 0; + int digit; + int count; + BOOLEAN_T isNegative = FALSE; + BOOLEAN_T gotNumber = FALSE; + int j; + + assert(VALID(self)); + assert(VALID(self->InStream)); + assert((base >= MIN_BASE && base <= MAX_BASE) || (base == NO_BASE)); + + if (internalDigitsUnconverted) + { + /* Lazy evaluation of digits array */ + memset(internalDigitArray, -1, sizeof(internalDigitArray)); + for (j = 0; j < (int)sizeof(internalDigitsLower) - 1; j++) + { + internalDigitArray[(int)internalDigitsLower[j]] = j; + internalDigitArray[(int)internalDigitsUpper[j]] = j; + } + internalDigitsUnconverted = FALSE; + } + + TrioSkipWhitespaces(self); + + /* Leading sign */ + if (self->current == '+') + { + self->InStream(self, NULL); + } + else if (self->current == '-') + { + self->InStream(self, NULL); + isNegative = TRUE; + } + + count = self->processed; + + if (flags & FLAGS_ALTERNATIVE) + { + switch (base) + { + case NO_BASE: + case BASE_OCTAL: + case BASE_HEX: + case BASE_BINARY: + if (self->current == '0') + { + self->InStream(self, NULL); + if (self->current) + { + if ((base == BASE_HEX) && + (trio_to_upper(self->current) == 'X')) + { + self->InStream(self, NULL); + } + else if ((base == BASE_BINARY) && + (trio_to_upper(self->current) == 'B')) + { + self->InStream(self, NULL); + } + } + } + else + return FALSE; + break; + default: + break; + } + } + + while (((width == NO_WIDTH) || (self->processed - count < width)) && + (! ((self->current == EOF) || isspace(self->current)))) + { + if (isascii(self->current)) + { + digit = internalDigitArray[self->current]; + /* Abort if digit is not allowed in the specified base */ + if ((digit == -1) || (digit >= base)) + break; + } +#if TRIO_FEATURE_QUOTE + else if (flags & FLAGS_QUOTE) + { + /* Compare with thousands separator */ + for (j = 0; internalThousandSeparator[j] && self->current; j++) + { + if (internalThousandSeparator[j] != self->current) + break; + + self->InStream(self, NULL); + } + if (internalThousandSeparator[j]) + break; /* Mismatch */ + else + continue; /* Match */ + } +#endif + else + break; + + number *= base; + number += digit; + gotNumber = TRUE; /* we need at least one digit */ + + self->InStream(self, NULL); + } + + /* Was anything read at all? */ + if (!gotNumber) + return FALSE; + + if (target) + *target = (isNegative) ? (trio_uintmax_t)(-((trio_intmax_t)number)) : number; + return TRUE; +} + +/************************************************************************* + * TrioReadChar + */ +TRIO_PRIVATE int +TrioReadChar +TRIO_ARGS4((self, target, flags, width), + trio_class_t *self, + char *target, + trio_flags_t flags, + int width) +{ + int i; + char ch; + trio_uintmax_t number; + + assert(VALID(self)); + assert(VALID(self->InStream)); + + for (i = 0; + (self->current != EOF) && (i < width); + i++) + { + ch = (char)self->current; + self->InStream(self, NULL); + if ((flags & FLAGS_ALTERNATIVE) && (ch == CHAR_BACKSLASH)) + { + switch (self->current) + { + case '\\': ch = '\\'; break; + case 'a': ch = '\007'; break; + case 'b': ch = '\b'; break; + case 'f': ch = '\f'; break; + case 'n': ch = '\n'; break; + case 'r': ch = '\r'; break; + case 't': ch = '\t'; break; + case 'v': ch = '\v'; break; + default: + if (isdigit(self->current)) + { + /* Read octal number */ + if (!TrioReadNumber(self, &number, 0, 3, BASE_OCTAL)) + return 0; + ch = (char)number; + } + else if (trio_to_upper(self->current) == 'X') + { + /* Read hexadecimal number */ + self->InStream(self, NULL); + if (!TrioReadNumber(self, &number, 0, 2, BASE_HEX)) + return 0; + ch = (char)number; + } + else + { + ch = (char)self->current; + } + break; + } + } + + if (target) + target[i] = ch; + } + return i + 1; +} + +/************************************************************************* + * TrioReadString + */ +TRIO_PRIVATE BOOLEAN_T +TrioReadString +TRIO_ARGS4((self, target, flags, width), + trio_class_t *self, + char *target, + trio_flags_t flags, + int width) +{ + int i; + + assert(VALID(self)); + assert(VALID(self->InStream)); + + TrioSkipWhitespaces(self); + + /* + * Continue until end of string is reached, a whitespace is encountered, + * or width is exceeded + */ + for (i = 0; + ((width == NO_WIDTH) || (i < width)) && + (! ((self->current == EOF) || isspace(self->current))); + i++) + { + if (TrioReadChar(self, (target ? &target[i] : 0), flags, 1) == 0) + break; /* for */ + } + if (target) + target[i] = NIL; + return TRUE; +} + +/************************************************************************* + * TrioReadWideChar + */ +#if TRIO_FEATURE_WIDECHAR +TRIO_PRIVATE int +TrioReadWideChar +TRIO_ARGS4((self, target, flags, width), + trio_class_t *self, + trio_wchar_t *target, + trio_flags_t flags, + int width) +{ + int i; + int j; + int size; + int amount = 0; + trio_wchar_t wch; + char buffer[MB_LEN_MAX + 1]; + + assert(VALID(self)); + assert(VALID(self->InStream)); + + for (i = 0; + (self->current != EOF) && (i < width); + i++) + { + if (isascii(self->current)) + { + if (TrioReadChar(self, buffer, flags, 1) == 0) + return 0; + buffer[1] = NIL; + } + else + { + /* + * Collect a multibyte character, by enlarging buffer until + * it contains a fully legal multibyte character, or the + * buffer is full. + */ + j = 0; + do + { + buffer[j++] = (char)self->current; + buffer[j] = NIL; + self->InStream(self, NULL); + } + while ((j < (int)sizeof(buffer)) && (mblen(buffer, (size_t)j) != j)); + } + if (target) + { + size = mbtowc(&wch, buffer, sizeof(buffer)); + if (size > 0) + target[i] = wch; + } + amount += size; + self->InStream(self, NULL); + } + return amount; +} +#endif /* TRIO_FEATURE_WIDECHAR */ + +/************************************************************************* + * TrioReadWideString + */ +#if TRIO_FEATURE_WIDECHAR +TRIO_PRIVATE BOOLEAN_T +TrioReadWideString +TRIO_ARGS4((self, target, flags, width), + trio_class_t *self, + trio_wchar_t *target, + trio_flags_t flags, + int width) +{ + int i; + int size; + + assert(VALID(self)); + assert(VALID(self->InStream)); + + TrioSkipWhitespaces(self); + +#if defined(TRIO_COMPILER_SUPPORTS_MULTIBYTE) + /* Required by TrioReadWideChar */ + (void)mblen(NULL, 0); +#endif + + /* + * Continue until end of string is reached, a whitespace is encountered, + * or width is exceeded + */ + for (i = 0; + ((width == NO_WIDTH) || (i < width)) && + (! ((self->current == EOF) || isspace(self->current))); + ) + { + size = TrioReadWideChar(self, &target[i], flags, 1); + if (size == 0) + break; /* for */ + + i += size; + } + if (target) + target[i] = WCONST('\0'); + return TRUE; +} +#endif /* TRIO_FEATURE_WIDECHAR */ + +/************************************************************************* + * TrioReadGroup + * + * Reads non-empty character groups. + * + * FIXME: characterclass does not work with multibyte characters + */ +TRIO_PRIVATE BOOLEAN_T +TrioReadGroup +TRIO_ARGS5((self, target, characterclass, flags, width), + trio_class_t *self, + char *target, + int *characterclass, + trio_flags_t flags, + int width) +{ + int ch; + int i; + + assert(VALID(self)); + assert(VALID(self->InStream)); + + ch = self->current; + for (i = 0; + ((width == NO_WIDTH) || (i < width)) && + (! ((ch == EOF) || + (((flags & FLAGS_EXCLUDE) != 0) ^ (characterclass[ch] == 0)))); + i++) + { + if (target) + target[i] = (char)ch; + self->InStream(self, &ch); + } + + if (i == 0) + return FALSE; + + /* Terminate the string if input saved */ + if (target) + target[i] = NIL; + return TRUE; +} + +/************************************************************************* + * TrioReadDouble + * + * FIXME: + * add long double + * handle base + */ +#if TRIO_FEATURE_FLOAT +TRIO_PRIVATE BOOLEAN_T +TrioReadDouble +TRIO_ARGS4((self, target, flags, width), + trio_class_t *self, + trio_pointer_t target, + trio_flags_t flags, + int width) +{ + int ch; + char doubleString[512]; + int offset = 0; + int start; +# if TRIO_FEATURE_QUOTE + int j; +# endif + BOOLEAN_T isHex = FALSE; + trio_long_double_t infinity; + + doubleString[0] = 0; + + if ((width == NO_WIDTH) || (width > (int)sizeof(doubleString) - 1)) + width = sizeof(doubleString) - 1; + + TrioSkipWhitespaces(self); + + /* + * Read entire double number from stream. trio_to_double requires + * a string as input, but InStream can be anything, so we have to + * collect all characters. + */ + ch = self->current; + if ((ch == '+') || (ch == '-')) + { + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + width--; + } + + start = offset; + switch (ch) + { + case 'n': + case 'N': + /* Not-a-number */ + if (offset != 0) + break; + /* FALLTHROUGH */ + case 'i': + case 'I': + /* Infinity */ + while (isalpha(ch) && (offset - start < width)) + { + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + } + doubleString[offset] = NIL; + + /* Case insensitive string comparison */ + if (trio_equal(&doubleString[start], INFINITE_UPPER) || + trio_equal(&doubleString[start], LONG_INFINITE_UPPER)) + { + infinity = ((start == 1) && (doubleString[0] == '-')) + ? trio_ninf() + : trio_pinf(); + if (flags & FLAGS_LONGDOUBLE) + { + *((trio_long_double_t *)target) = infinity; + } + else if (flags & FLAGS_LONG) + { + *((double *)target) = infinity; + } + else + { + *((float *)target) = infinity; + } + return TRUE; + } + if (trio_equal(doubleString, NAN_UPPER)) + { + /* NaN must not have a preceeding + nor - */ + if (flags & FLAGS_LONGDOUBLE) + { + *((trio_long_double_t *)target) = trio_nan(); + } + else if (flags & FLAGS_LONG) + { + *((double *)target) = trio_nan(); + } + else + { + *((float *)target) = trio_nan(); + } + return TRUE; + } + return FALSE; + + case '0': + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + if (trio_to_upper(ch) == 'X') + { + isHex = TRUE; + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + } + break; + + default: + break; + } + + while ((ch != EOF) && (offset - start < width)) + { + /* Integer part */ + if (isHex ? isxdigit(ch) : isdigit(ch)) + { + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + } +# if TRIO_FEATURE_QUOTE + else if (flags & FLAGS_QUOTE) + { + /* Compare with thousands separator */ + for (j = 0; internalThousandSeparator[j] && self->current; j++) + { + if (internalThousandSeparator[j] != self->current) + break; + + self->InStream(self, &ch); + } + if (internalThousandSeparator[j]) + break; /* Mismatch */ + else + continue; /* Match */ + } +# endif + else + break; /* while */ + } + if (ch == '.') + { + /* Decimal part */ + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + while ((isHex ? isxdigit(ch) : isdigit(ch)) && + (offset - start < width)) + { + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + } + } + if (isHex ? (trio_to_upper(ch) == 'P') : (trio_to_upper(ch) == 'E')) + { + /* Exponent */ + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + if ((ch == '+') || (ch == '-')) + { + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + } + while (isdigit(ch) && (offset - start < width)) + { + doubleString[offset++] = (char)ch; + self->InStream(self, &ch); + } + } + + if ((offset == start) || (*doubleString == NIL)) + return FALSE; + + doubleString[offset] = 0; + + if (flags & FLAGS_LONGDOUBLE) + { + *((trio_long_double_t *)target) = trio_to_long_double(doubleString, NULL); + } + else if (flags & FLAGS_LONG) + { + *((double *)target) = trio_to_double(doubleString, NULL); + } + else + { + *((float *)target) = trio_to_float(doubleString, NULL); + } + return TRUE; +} +#endif /* TRIO_FEATURE_FLOAT */ + +/************************************************************************* + * TrioReadPointer + */ +TRIO_PRIVATE BOOLEAN_T +TrioReadPointer +TRIO_ARGS3((self, target, flags), + trio_class_t *self, + trio_pointer_t *target, + trio_flags_t flags) +{ + trio_uintmax_t number; + char buffer[sizeof(internalNullString)]; + + flags |= (FLAGS_UNSIGNED | FLAGS_ALTERNATIVE | FLAGS_NILPADDING); + + if (TrioReadNumber(self, + &number, + flags, + POINTER_WIDTH, + BASE_HEX)) + { + if (target) + { +#if defined(TRIO_COMPILER_GCC) || defined(TRIO_COMPILER_MIPSPRO) + /* + * The strange assignment of number is a workaround for a compiler + * warning + */ + *target = &((char *)0)[number]; +#else + *target = (trio_pointer_t)number; +#endif + } + return TRUE; + } + else if (TrioReadString(self, + (flags & FLAGS_IGNORE) + ? NULL + : buffer, + 0, + sizeof(internalNullString) - 1)) + { + if (trio_equal_case(buffer, internalNullString)) + { + if (target) + *target = NULL; + return TRUE; + } + } + return FALSE; +} + +/************************************************************************* + * TrioScanProcess + */ +TRIO_PRIVATE int +TrioScanProcess +TRIO_ARGS3((data, format, parameters), + trio_class_t *data, + TRIO_CONST char *format, + trio_parameter_t *parameters) +{ + int status; + int assignment; + int ch; + int offset; /* Offset of format string */ + int i; /* Offset of current parameter */ + trio_flags_t flags; + int width; + int base; + trio_pointer_t pointer; + + /* Return on empty format string */ + if (format[0] == NIL) + return 0; + + status = 0; + assignment = 0; + i = 0; + offset = 0; + data->InStream(data, &ch); + + for (;;) + { + /* Skip the parameter entries */ + while (parameters[i].type == FORMAT_PARAMETER) + { + assert(i <= MAX_PARAMETERS); + i++; + } + + /* Compare non conversion-specifier part of format string */ + while (offset < parameters[i].beginOffset) + { + if ((CHAR_IDENTIFIER == format[offset]) && + (CHAR_IDENTIFIER == format[offset + 1])) + { + /* Two % in format matches one % in input stream */ + if (CHAR_IDENTIFIER == ch) + { + data->InStream(data, &ch); + offset += 2; + continue; /* while format chars left */ + } + else + { + status = TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + goto end; + } + } + else /* Not an % identifier */ + { + if (isspace((int)format[offset])) + { + /* Whitespaces may match any amount of whitespaces */ + ch = TrioSkipWhitespaces(data); + } + else if (ch == format[offset]) + { + data->InStream(data, &ch); + } + else + { + status = assignment; + goto end; + } + + offset++; + } + } + + if (parameters[i].type == FORMAT_SENTINEL) + break; + + if ((EOF == ch) && (parameters[i].type != FORMAT_COUNT)) + { + status = (assignment > 0) ? assignment : EOF; + goto end; + } + + flags = parameters[i].flags; + + /* Find width */ + width = parameters[i].width; + if (flags & FLAGS_WIDTH_PARAMETER) + { + /* Get width from parameter list */ + width = (int)parameters[width].data.number.as_signed; + } + + /* Find base */ + if (NO_BASE != parameters[i].baseSpecifier) + { + /* Base from specifier has priority */ + base = parameters[i].baseSpecifier; + } + else if (flags & FLAGS_BASE_PARAMETER) + { + /* Get base from parameter list */ + base = parameters[i].base; + base = (int)parameters[base].data.number.as_signed; + } + else + { + /* Use base from format string */ + base = parameters[i].base; + } + + switch (parameters[i].type) + { + case FORMAT_INT: + { + trio_uintmax_t number; + + if (0 == base) + base = BASE_DECIMAL; + + if (!TrioReadNumber(data, + &number, + flags, + width, + base)) + { + status = assignment; + goto end; + } + + if (!(flags & FLAGS_IGNORE)) + { + assignment++; + + pointer = parameters[i].data.pointer; +#if TRIO_FEATURE_SIZE_T || TRIO_FEATURE_SIZE_T_UPPER + if (flags & FLAGS_SIZE_T) + *(size_t *)pointer = (size_t)number; + else +#endif +#if TRIO_FEATURE_PTRDIFF_T + if (flags & FLAGS_PTRDIFF_T) + *(ptrdiff_t *)pointer = (ptrdiff_t)number; + else +#endif +#if TRIO_FEATURE_INTMAX_T + if (flags & FLAGS_INTMAX_T) + *(trio_intmax_t *)pointer = (trio_intmax_t)number; + else +#endif + if (flags & FLAGS_QUAD) + *(trio_ulonglong_t *)pointer = (trio_ulonglong_t)number; + else if (flags & FLAGS_LONG) + *(long int *)pointer = (long int)number; + else if (flags & FLAGS_SHORT) + *(short int *)pointer = (short int)number; + else + *(int *)pointer = (int)number; + } + } + break; /* FORMAT_INT */ + + case FORMAT_STRING: +#if TRIO_FEATURE_WIDECHAR + if (flags & FLAGS_WIDECHAR) + { + if (!TrioReadWideString(data, + (flags & FLAGS_IGNORE) + ? NULL + : parameters[i].data.wstring, + flags, + width)) + { + status = assignment; + goto end; + } + } + else +#endif + { + if (!TrioReadString(data, + (flags & FLAGS_IGNORE) + ? NULL + : parameters[i].data.string, + flags, + width)) + { + status = assignment; + goto end; + } + } + if (!(flags & FLAGS_IGNORE)) + assignment++; + break; /* FORMAT_STRING */ + +#if TRIO_FEATURE_FLOAT + case FORMAT_DOUBLE: + { + if (flags & FLAGS_IGNORE) + { + pointer = NULL; + } + else + { + pointer = (flags & FLAGS_LONGDOUBLE) + ? (trio_pointer_t)parameters[i].data.longdoublePointer + : (trio_pointer_t)parameters[i].data.doublePointer; + } + if (!TrioReadDouble(data, pointer, flags, width)) + { + status = assignment; + goto end; + } + if (!(flags & FLAGS_IGNORE)) + { + assignment++; + } + break; /* FORMAT_DOUBLE */ + } +#endif + + case FORMAT_GROUP: + { + int characterclass[MAX_CHARACTER_CLASS + 1]; + + /* Skip over modifiers */ + while (format[offset] != SPECIFIER_GROUP) + { + offset++; + } + /* Skip over group specifier */ + offset++; + + memset(characterclass, 0, sizeof(characterclass)); + status = TrioGetCharacterClass(format, + &offset, + &flags, + characterclass); + if (status < 0) + goto end; + + if (!TrioReadGroup(data, + (flags & FLAGS_IGNORE) + ? NULL + : parameters[i].data.string, + characterclass, + flags, + parameters[i].width)) + { + status = assignment; + goto end; + } + if (!(flags & FLAGS_IGNORE)) + assignment++; + } + break; /* FORMAT_GROUP */ + + case FORMAT_COUNT: + pointer = parameters[i].data.pointer; + if (NULL != pointer) + { + int count = data->processed; + if (ch != EOF) + count--; /* a character is read, but is not consumed yet */ +#if TRIO_FEATURE_SIZE_T || TRIO_FEATURE_SIZE_T_UPPER + if (flags & FLAGS_SIZE_T) + *(size_t *)pointer = (size_t)count; + else +#endif +#if TRIO_FEATURE_PTRDIFF_T + if (flags & FLAGS_PTRDIFF_T) + *(ptrdiff_t *)pointer = (ptrdiff_t)count; + else +#endif +#if TRIO_FEATURE_INTMAX_T + if (flags & FLAGS_INTMAX_T) + *(trio_intmax_t *)pointer = (trio_intmax_t)count; + else +#endif + if (flags & FLAGS_QUAD) + { + *(trio_ulonglong_t *)pointer = (trio_ulonglong_t)count; + } + else if (flags & FLAGS_LONG) + { + *(long int *)pointer = (long int)count; + } + else if (flags & FLAGS_SHORT) + { + *(short int *)pointer = (short int)count; + } + else + { + *(int *)pointer = (int)count; + } + } + break; /* FORMAT_COUNT */ + + case FORMAT_CHAR: +#if TRIO_FEATURE_WIDECHAR + if (flags & FLAGS_WIDECHAR) + { + if (TrioReadWideChar(data, + (flags & FLAGS_IGNORE) + ? NULL + : parameters[i].data.wstring, + flags, + (width == NO_WIDTH) ? 1 : width) == 0) + { + status = assignment; + goto end; + } + } + else +#endif + { + if (TrioReadChar(data, + (flags & FLAGS_IGNORE) + ? NULL + : parameters[i].data.string, + flags, + (width == NO_WIDTH) ? 1 : width) == 0) + { + status = assignment; + goto end; + } + } + if (!(flags & FLAGS_IGNORE)) + assignment++; + break; /* FORMAT_CHAR */ + + case FORMAT_POINTER: + if (!TrioReadPointer(data, + (flags & FLAGS_IGNORE) + ? NULL + : (trio_pointer_t *)parameters[i].data.pointer, + flags)) + { + status = assignment; + goto end; + } + if (!(flags & FLAGS_IGNORE)) + assignment++; + break; /* FORMAT_POINTER */ + + case FORMAT_PARAMETER: + break; /* FORMAT_PARAMETER */ + + default: + status = TRIO_ERROR_RETURN(TRIO_EINVAL, offset); + goto end; + } + + ch = data->current; + offset = parameters[i].endOffset; + i++; + } + + status = assignment; + end: + if (data->UndoStream) + data->UndoStream(data); + return status; +} + +/************************************************************************* + * TrioScan + */ +TRIO_PRIVATE int +TrioScan +TRIO_ARGS7((source, sourceSize, InStream, UndoStream, format, arglist, argarray), + trio_pointer_t source, + size_t sourceSize, + void (*InStream) TRIO_PROTO((trio_class_t *, int *)), + void (*UndoStream) TRIO_PROTO((trio_class_t *)), + TRIO_CONST char *format, + va_list arglist, + trio_pointer_t *argarray) +{ + int status; + trio_parameter_t parameters[MAX_PARAMETERS]; + trio_class_t data; + + assert(VALID(InStream)); + assert(VALID(format)); + + memset(&data, 0, sizeof(data)); + data.InStream = InStream; + data.UndoStream = UndoStream; + data.location = (trio_pointer_t)source; + data.max = sourceSize; + data.error = 0; + +#if defined(USE_LOCALE) + if (NULL == internalLocaleValues) + { + TrioSetLocale(); + } +#endif + + status = TrioParse(TYPE_SCAN, format, parameters, arglist, argarray); + if (status < 0) + return status; + + status = TrioScanProcess(&data, format, parameters); + if (data.error != 0) + { + status = data.error; + } + return status; +} + +/************************************************************************* + * TrioInStreamFile + */ +#if TRIO_FEATURE_FILE || TRIO_FEATURE_STDIO +TRIO_PRIVATE void +TrioInStreamFile +TRIO_ARGS2((self, intPointer), + trio_class_t *self, + int *intPointer) +{ + FILE *file = (FILE *)self->location; + + assert(VALID(self)); + assert(VALID(file)); + + self->actually.cached = 0; + + /* The initial value of self->current is zero */ + if (self->current == EOF) + { + self->error = (ferror(file)) + ? TRIO_ERROR_RETURN(TRIO_ERRNO, 0) + : TRIO_ERROR_RETURN(TRIO_EOF, 0); + } + else + { + self->processed++; + self->actually.cached++; + } + + self->current = fgetc(file); + + if (VALID(intPointer)) + { + *intPointer = self->current; + } +} +#endif /* TRIO_FEATURE_FILE || TRIO_FEATURE_STDIO */ + +/************************************************************************* + * TrioUndoStreamFile + */ +#if TRIO_FEATURE_FILE || TRIO_FEATURE_STDIO +TRIO_PRIVATE void +TrioUndoStreamFile +TRIO_ARGS1((self), + trio_class_t *self) +{ + FILE *file = (FILE *)self->location; + + assert(VALID(self)); + assert(VALID(file)); + + if (self->actually.cached > 0) + { + assert(self->actually.cached == 1); + + self->current = ungetc(self->current, file); + self->actually.cached = 0; + } +} +#endif /* TRIO_FEATURE_FILE || TRIO_FEATURE_STDIO */ + +/************************************************************************* + * TrioInStreamFileDescriptor + */ +#if TRIO_FEATURE_FD +TRIO_PRIVATE void +TrioInStreamFileDescriptor +TRIO_ARGS2((self, intPointer), + trio_class_t *self, + int *intPointer) +{ + int fd = *((int *)self->location); + int size; + unsigned char input; + + assert(VALID(self)); + + self->actually.cached = 0; + + size = read(fd, &input, sizeof(char)); + if (size == -1) + { + self->error = TRIO_ERROR_RETURN(TRIO_ERRNO, 0); + self->current = EOF; + } + else + { + self->current = (size == 0) ? EOF : input; + } + if (self->current != EOF) + { + self->actually.cached++; + self->processed++; + } + + if (VALID(intPointer)) + { + *intPointer = self->current; + } +} +#endif /* TRIO_FEATURE_FD */ + +/************************************************************************* + * TrioInStreamCustom + */ +#if TRIO_FEATURE_CLOSURE +TRIO_PRIVATE void +TrioInStreamCustom +TRIO_ARGS2((self, intPointer), + trio_class_t *self, + int *intPointer) +{ + trio_custom_t *data; + + assert(VALID(self)); + assert(VALID(self->location)); + + self->actually.cached = 0; + + data = (trio_custom_t *)self->location; + + self->current = (data->stream.in == NULL) + ? NIL + : (data->stream.in)(data->closure); + + if (self->current == NIL) + { + self->current = EOF; + } + else + { + self->processed++; + self->actually.cached++; + } + + if (VALID(intPointer)) + { + *intPointer = self->current; + } +} +#endif /* TRIO_FEATURE_CLOSURE */ + +/************************************************************************* + * TrioInStreamString + */ +TRIO_PRIVATE void +TrioInStreamString +TRIO_ARGS2((self, intPointer), + trio_class_t *self, + int *intPointer) +{ + unsigned char **buffer; + + assert(VALID(self)); + assert(VALID(self->location)); + + self->actually.cached = 0; + + buffer = (unsigned char **)self->location; + self->current = (*buffer)[0]; + if (self->current == NIL) + { + self->current = EOF; + } + else + { + (*buffer)++; + self->processed++; + self->actually.cached++; + } + + if (VALID(intPointer)) + { + *intPointer = self->current; + } +} + +/************************************************************************* + * + * Formatted scanning functions + * + ************************************************************************/ + +#if defined(TRIO_DOCUMENTATION) +# include "doc/doc_scanf.h" +#endif +/** @addtogroup Scanf + @{ +*/ + +/************************************************************************* + * scanf + */ + +/** + Scan characters from standard input stream. + + @param format Formatting string. + @param ... Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_STDIO +TRIO_PUBLIC int +trio_scanf +TRIO_VARGS2((format, va_alist), + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioScan((trio_pointer_t)stdin, 0, + TrioInStreamFile, + TrioUndoStreamFile, + format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_STDIO */ + +/** + Scan characters from standard input stream. + + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_STDIO +TRIO_PUBLIC int +trio_vscanf +TRIO_ARGS2((format, args), + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(format)); + + return TrioScan((trio_pointer_t)stdin, 0, + TrioInStreamFile, + TrioUndoStreamFile, + format, args, NULL); +} +#endif /* TRIO_FEATURE_STDIO */ + +/** + Scan characters from standard input stream. + + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_STDIO +TRIO_PUBLIC int +trio_scanfv +TRIO_ARGS2((format, args), + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + + assert(VALID(format)); + + return TrioScan((trio_pointer_t)stdin, 0, + TrioInStreamFile, + TrioUndoStreamFile, + format, unused, args); +} +#endif /* TRIO_FEATURE_STDIO */ + +/************************************************************************* + * fscanf + */ + +/** + Scan characters from file. + + @param file File pointer. + @param format Formatting string. + @param ... Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_FILE +TRIO_PUBLIC int +trio_fscanf +TRIO_VARGS3((file, format, va_alist), + FILE *file, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(file)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioScan((trio_pointer_t)file, 0, + TrioInStreamFile, + TrioUndoStreamFile, + format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_FILE */ + +/** + Scan characters from file. + + @param file File pointer. + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_FILE +TRIO_PUBLIC int +trio_vfscanf +TRIO_ARGS3((file, format, args), + FILE *file, + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(file)); + assert(VALID(format)); + + return TrioScan((trio_pointer_t)file, 0, + TrioInStreamFile, + TrioUndoStreamFile, + format, args, NULL); +} +#endif /* TRIO_FEATURE_FILE */ + +/** + Scan characters from file. + + @param file File pointer. + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_FILE +TRIO_PUBLIC int +trio_fscanfv +TRIO_ARGS3((file, format, args), + FILE *file, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + + assert(VALID(file)); + assert(VALID(format)); + + return TrioScan((trio_pointer_t)file, 0, + TrioInStreamFile, + TrioUndoStreamFile, + format, unused, args); +} +#endif /* TRIO_FEATURE_FILE */ + +/************************************************************************* + * dscanf + */ + +/** + Scan characters from file descriptor. + + @param fd File descriptor. + @param format Formatting string. + @param ... Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_FD +TRIO_PUBLIC int +trio_dscanf +TRIO_VARGS3((fd, format, va_alist), + int fd, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioScan((trio_pointer_t)&fd, 0, + TrioInStreamFileDescriptor, + NULL, + format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_FD */ + +/** + Scan characters from file descriptor. + + @param fd File descriptor. + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_FD +TRIO_PUBLIC int +trio_vdscanf +TRIO_ARGS3((fd, format, args), + int fd, + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(format)); + + return TrioScan((trio_pointer_t)&fd, 0, + TrioInStreamFileDescriptor, + NULL, + format, args, NULL); +} +#endif /* TRIO_FEATURE_FD */ + +/** + Scan characters from file descriptor. + + @param fd File descriptor. + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +#if TRIO_FEATURE_FD +TRIO_PUBLIC int +trio_dscanfv +TRIO_ARGS3((fd, format, args), + int fd, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + + assert(VALID(format)); + + return TrioScan((trio_pointer_t)&fd, 0, + TrioInStreamFileDescriptor, + NULL, + format, unused, args); +} +#endif /* TRIO_FEATURE_FD */ + +/************************************************************************* + * cscanf + */ +#if TRIO_FEATURE_CLOSURE +TRIO_PUBLIC int +trio_cscanf +TRIO_VARGS4((stream, closure, format, va_alist), + trio_instream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + trio_custom_t data; + + assert(VALID(stream)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + data.stream.in = stream; + data.closure = closure; + status = TrioScan(&data, 0, TrioInStreamCustom, NULL, format, args, NULL); + TRIO_VA_END(args); + return status; +} +#endif /* TRIO_FEATURE_CLOSURE */ + +#if TRIO_FEATURE_CLOSURE +TRIO_PUBLIC int +trio_vcscanf +TRIO_ARGS4((stream, closure, format, args), + trio_instream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, + va_list args) +{ + trio_custom_t data; + + assert(VALID(stream)); + assert(VALID(format)); + + data.stream.in = stream; + data.closure = closure; + return TrioScan(&data, 0, TrioInStreamCustom, NULL, format, args, NULL); +} +#endif /* TRIO_FEATURE_CLOSURE */ + +#if TRIO_FEATURE_CLOSURE +TRIO_PUBLIC int +trio_cscanfv +TRIO_ARGS4((stream, closure, format, args), + trio_instream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + trio_custom_t data; + + assert(VALID(stream)); + assert(VALID(format)); + + data.stream.in = stream; + data.closure = closure; + return TrioScan(&data, 0, TrioInStreamCustom, NULL, format, unused, args); +} +#endif /* TRIO_FEATURE_CLOSURE */ + +/************************************************************************* + * sscanf + */ + +/** + Scan characters from string. + + @param buffer Input string. + @param format Formatting string. + @param ... Arguments. + @return Number of scanned characters. + */ +TRIO_PUBLIC int +trio_sscanf +TRIO_VARGS3((buffer, format, va_alist), + TRIO_CONST char *buffer, + TRIO_CONST char *format, + TRIO_VA_DECL) +{ + int status; + va_list args; + + assert(VALID(buffer)); + assert(VALID(format)); + + TRIO_VA_START(args, format); + status = TrioScan((trio_pointer_t)&buffer, 0, + TrioInStreamString, + NULL, + format, args, NULL); + TRIO_VA_END(args); + return status; +} + +/** + Scan characters from string. + + @param buffer Input string. + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +TRIO_PUBLIC int +trio_vsscanf +TRIO_ARGS3((buffer, format, args), + TRIO_CONST char *buffer, + TRIO_CONST char *format, + va_list args) +{ + assert(VALID(buffer)); + assert(VALID(format)); + + return TrioScan((trio_pointer_t)&buffer, 0, + TrioInStreamString, + NULL, + format, args, NULL); +} + +/** + Scan characters from string. + + @param buffer Input string. + @param format Formatting string. + @param args Arguments. + @return Number of scanned characters. + */ +TRIO_PUBLIC int +trio_sscanfv +TRIO_ARGS3((buffer, format, args), + TRIO_CONST char *buffer, + TRIO_CONST char *format, + trio_pointer_t *args) +{ + static va_list unused; + + assert(VALID(buffer)); + assert(VALID(format)); + + return TrioScan((trio_pointer_t)&buffer, 0, + TrioInStreamString, + NULL, + format, unused, args); +} + +#endif /* TRIO_FEATURE_SCANF */ + +/** @} End of Scanf documentation module */ + +/************************************************************************* + * trio_strerror + */ +TRIO_PUBLIC TRIO_CONST char * +trio_strerror +TRIO_ARGS1((errorcode), + int errorcode) +{ +#if TRIO_FEATURE_STRERR + /* Textual versions of the error codes */ + switch (TRIO_ERROR_CODE(errorcode)) + { + case TRIO_EOF: + return "End of file"; + case TRIO_EINVAL: + return "Invalid argument"; + case TRIO_ETOOMANY: + return "Too many arguments"; + case TRIO_EDBLREF: + return "Double reference"; + case TRIO_EGAP: + return "Reference gap"; + case TRIO_ENOMEM: + return "Out of memory"; + case TRIO_ERANGE: + return "Invalid range"; + case TRIO_ECUSTOM: + return "Custom error"; + default: + return "Unknown"; + } +#else + return "Unknown"; +#endif +} diff --git a/libmednahawk/src/trio/trionan.c b/libmednahawk/src/trio/trionan.c new file mode 100644 index 0000000000..c6d174b3c4 --- /dev/null +++ b/libmednahawk/src/trio/trionan.c @@ -0,0 +1,1257 @@ +/************************************************************************* + * + * $Id: trionan.c,v 1.33 2005/05/29 11:57:25 breese Exp $ + * + * Copyright (C) 2001 Bjorn Reese + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************ + * + * Functions to handle special quantities in floating-point numbers + * (that is, NaNs and infinity). They provide the capability to detect + * and fabricate special quantities. + * + * Although written to be as portable as possible, it can never be + * guaranteed to work on all platforms, as not all hardware supports + * special quantities. + * + * The approach used here (approximately) is to: + * + * 1. Use C99 functionality when available. + * 2. Use IEEE 754 bit-patterns if possible. + * 3. Use platform-specific techniques. + * + ************************************************************************/ + +/************************************************************************* + * Include files + */ +#include +#include + +#include +#include +#include +#if !defined(TRIO_PLATFORM_SYMBIAN) +# include +#endif +#if defined(TRIO_PLATFORM_UNIX) +# include +#endif +#if defined(TRIO_COMPILER_DECC) +# include +#endif +#include + +#if defined(TRIO_DOCUMENTATION) +# include "doc/doc_nan.h" +#endif +/** @addtogroup SpecialQuantities + @{ +*/ + +/************************************************************************* + * Definitions + */ + +#if !defined(TRIO_PUBLIC_NAN) +# define TRIO_PUBLIC_NAN TRIO_PUBLIC +#endif +#if !defined(TRIO_PRIVATE_NAN) +# define TRIO_PRIVATE_NAN TRIO_PRIVATE +#endif + +#define TRIO_TRUE (1 == 1) +#define TRIO_FALSE (0 == 1) + +/* + * We must enable IEEE floating-point on Alpha + */ +#if defined(__alpha) && !defined(_IEEE_FP) +# if defined(TRIO_COMPILER_DECC) +# if defined(TRIO_PLATFORM_VMS) +# error "Must be compiled with option /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE" +# else +# if !defined(_CFE) +# error "Must be compiled with option -ieee" +# endif +# endif +# else +# if defined(TRIO_COMPILER_GCC) +# error "Must be compiled with option -mieee" +# endif +# endif +#endif /* __alpha && ! _IEEE_FP */ + +/* + * In ANSI/IEEE 754-1985 64-bits double format numbers have the + * following properties (amoungst others) + * + * o FLT_RADIX == 2: binary encoding + * o DBL_MAX_EXP == 1024: 11 bits exponent, where one bit is used + * to indicate special numbers (e.g. NaN and Infinity), so the + * maximum exponent is 10 bits wide (2^10 == 1024). + * o DBL_MANT_DIG == 53: The mantissa is 52 bits wide, but because + * numbers are normalized the initial binary 1 is represented + * implicitly (the so-called "hidden bit"), which leaves us with + * the ability to represent 53 bits wide mantissa. + */ +#if defined(__STDC_IEC_559__) +# define TRIO_IEEE_754 +#else +# if (FLT_RADIX - 0 == 2) && (DBL_MAX_EXP - 0 == 1024) && (DBL_MANT_DIG - 0 == 53) +# define TRIO_IEEE_754 +# endif +#endif + +/* + * Determine which fpclassify_and_sign() function to use. + */ +#if defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT) +# if defined(PREDEF_STANDARD_C99) && defined(fpclassify) +# define TRIO_FUNC_C99_FPCLASSIFY_AND_SIGNBIT +# else +# if defined(TRIO_COMPILER_DECC) +# define TRIO_FUNC_DECC_FPCLASSIFY_AND_SIGNBIT +# else +# if defined(TRIO_COMPILER_VISUALC) || defined(TRIO_COMPILER_BORLAND) +# define TRIO_FUNC_MS_FPCLASSIFY_AND_SIGNBIT +# else +# if defined(TRIO_COMPILER_HP) && defined(FP_PLUS_NORM) +# define TRIO_FUNC_HP_FPCLASSIFY_AND_SIGNBIT +# else +# if defined(TRIO_COMPILER_XLC) && defined(FP_PLUS_NORM) +# define TRIO_FUNC_XLC_FPCLASSIFY_AND_SIGNBIT +# else +# define TRIO_FUNC_INTERNAL_FPCLASSIFY_AND_SIGNBIT +# endif +# endif +# endif +# endif +# endif +#endif + +/* + * Determine how to generate negative zero. + */ +#if defined(TRIO_FUNC_NZERO) +# if defined(TRIO_IEEE_754) +# define TRIO_NZERO_IEEE_754 +# else +# define TRIO_NZERO_FALLBACK +# endif +#endif + +/* + * Determine how to generate positive infinity. + */ +#if defined(TRIO_FUNC_PINF) +# if defined(INFINITY) && defined(__STDC_IEC_559__) +# define TRIO_PINF_C99_MACRO +# else +# if defined(TRIO_IEEE_754) +# define TRIO_PINF_IEEE_754 +# else +# define TRIO_PINF_FALLBACK +# endif +# endif +#endif + +/* + * Determine how to generate NaN. + */ +#if defined(TRIO_FUNC_NAN) +# if defined(PREDEF_STANDARD_C99) && !defined(TRIO_COMPILER_DECC) +# define TRIO_NAN_C99_FUNCTION +# else +# if defined(NAN) && defined(__STDC_IEC_559__) +# define TRIO_NAN_C99_MACRO +# else +# if defined(TRIO_IEEE_754) +# define TRIO_NAN_IEEE_754 +# else +# define TRIO_NAN_FALLBACK +# endif +# endif +# endif +#endif + +/* + * Resolve internal dependencies. + */ +#if defined(TRIO_FUNC_INTERNAL_FPCLASSIFY_AND_SIGNBIT) +# define TRIO_FUNC_INTERNAL_ISNAN +# define TRIO_FUNC_INTERNAL_ISINF +# if defined(TRIO_IEEE_754) +# define TRIO_FUNC_INTERNAL_IS_SPECIAL_QUANTITY +# define TRIO_FUNC_INTERNAL_IS_NEGATIVE +# endif +#endif + +#if defined(TRIO_NZERO_IEEE_754) \ + || defined(TRIO_PINF_IEEE_754) \ + || defined(TRIO_NAN_IEEE_754) +# define TRIO_FUNC_INTERNAL_MAKE_DOUBLE +#endif + +#if defined(TRIO_FUNC_INTERNAL_ISNAN) +# if defined(PREDEF_STANDARD_XPG3) +# define TRIO_INTERNAL_ISNAN_XPG3 +# else +# if defined(TRIO_IEEE_754) +# define TRIO_INTERNAL_ISNAN_IEEE_754 +# else +# define TRIO_INTERNAL_ISNAN_FALLBACK +# endif +# endif +#endif + +#if defined(TRIO_FUNC_INTERNAL_ISINF) +# if defined(TRIO_IEEE_754) +# define TRIO_INTERNAL_ISINF_IEEE_754 +# else +# define TRIO_INTERNAL_ISINF_FALLBACK +# endif +#endif + +/************************************************************************* + * Constants + */ + +#if !defined(TRIO_EMBED_NAN) +static TRIO_CONST char rcsid[] = "@(#)$Id: trionan.c,v 1.33 2005/05/29 11:57:25 breese Exp $"; +#endif + +#if defined(TRIO_FUNC_INTERNAL_MAKE_DOUBLE) \ + || defined(TRIO_FUNC_INTERNAL_IS_SPECIAL_QUANTITY) \ + || defined(TRIO_FUNC_INTERNAL_IS_NEGATIVE) +/* + * Endian-agnostic indexing macro. + * + * The value of internalEndianMagic, when converted into a 64-bit + * integer, becomes 0x0706050403020100 (we could have used a 64-bit + * integer value instead of a double, but not all platforms supports + * that type). The value is automatically encoded with the correct + * endianess by the compiler, which means that we can support any + * kind of endianess. The individual bytes are then used as an index + * for the IEEE 754 bit-patterns and masks. + */ +#define TRIO_DOUBLE_INDEX(x) (((unsigned char *)&internalEndianMagic)[7-(x)]) +static TRIO_CONST double internalEndianMagic = 7.949928895127363e-275; +#endif + +#if defined(TRIO_FUNC_INTERNAL_IS_SPECIAL_QUANTITY) +/* Mask for the exponent */ +static TRIO_CONST unsigned char ieee_754_exponent_mask[] = { + 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +/* Mask for the mantissa */ +static TRIO_CONST unsigned char ieee_754_mantissa_mask[] = { + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; +#endif + +#if defined(TRIO_FUNC_INTERNAL_IS_NEGATIVE) +/* Mask for the sign bit */ +static TRIO_CONST unsigned char ieee_754_sign_mask[] = { + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif + +#if defined(TRIO_NZERO_IEEE_754) +/* Bit-pattern for negative zero */ +static TRIO_CONST unsigned char ieee_754_negzero_array[] = { + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif + +#if defined(TRIO_PINF_IEEE_754) +/* Bit-pattern for infinity */ +static TRIO_CONST unsigned char ieee_754_infinity_array[] = { + 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif + +#if defined(TRIO_NAN_IEEE_754) +/* Bit-pattern for quiet NaN */ +static TRIO_CONST unsigned char ieee_754_qnan_array[] = { + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif + + +/************************************************************************* + * Internal functions + */ + +/* + * internal_make_double + */ +#if defined(TRIO_FUNC_INTERNAL_MAKE_DOUBLE) + +TRIO_PRIVATE_NAN double +internal_make_double +TRIO_ARGS1((values), + TRIO_CONST unsigned char *values) +{ + TRIO_VOLATILE double result; + int i; + + for (i = 0; i < (int)sizeof(double); i++) { + ((TRIO_VOLATILE unsigned char *)&result)[TRIO_DOUBLE_INDEX(i)] = values[i]; + } + return result; +} + +#endif + +/* + * internal_is_special_quantity + */ +#if defined(TRIO_FUNC_INTERNAL_IS_SPECIAL_QUANTITY) + +TRIO_PRIVATE_NAN int +internal_is_special_quantity +TRIO_ARGS2((number, has_mantissa), + double number, + int *has_mantissa) +{ + unsigned int i; + unsigned char current; + int is_special_quantity = TRIO_TRUE; + + *has_mantissa = 0; + + for (i = 0; i < (unsigned int)sizeof(double); i++) { + current = ((unsigned char *)&number)[TRIO_DOUBLE_INDEX(i)]; + is_special_quantity + &= ((current & ieee_754_exponent_mask[i]) == ieee_754_exponent_mask[i]); + *has_mantissa |= (current & ieee_754_mantissa_mask[i]); + } + return is_special_quantity; +} + +#endif + +/* + * internal_is_negative + */ +#if defined(TRIO_FUNC_INTERNAL_IS_NEGATIVE) + +TRIO_PRIVATE_NAN int +internal_is_negative +TRIO_ARGS1((number), + double number) +{ + unsigned int i; + int is_negative = TRIO_FALSE; + + for (i = 0; i < (unsigned int)sizeof(double); i++) { + is_negative |= (((unsigned char *)&number)[TRIO_DOUBLE_INDEX(i)] + & ieee_754_sign_mask[i]); + } + return is_negative; +} + +#endif + +#if defined(TRIO_FUNC_C99_FPCLASSIFY_AND_SIGNBIT) + +TRIO_PRIVATE_NAN TRIO_INLINE int +c99_fpclassify_and_signbit +TRIO_ARGS2((number, is_negative), + double number, + int *is_negative) +{ + *is_negative = signbit(number); + switch (fpclassify(number)) { + case FP_NAN: + return TRIO_FP_NAN; + case FP_INFINITE: + return TRIO_FP_INFINITE; + case FP_SUBNORMAL: + return TRIO_FP_SUBNORMAL; + case FP_ZERO: + return TRIO_FP_ZERO; + default: + return TRIO_FP_NORMAL; + } +} + +#endif /* TRIO_FUNC_C99_FPCLASSIFY_AND_SIGNBIT */ + +#if defined(TRIO_FUNC_DECC_FPCLASSIFY_AND_SIGNBIT) + +TRIO_PRIVATE_NAN TRIO_INLINE int +decc_fpclassify_and_signbit +TRIO_ARGS2((number, is_negative), + double number, + int *is_negative) +{ + switch (fp_class(number)) { + case FP_QNAN: + case FP_SNAN: + *is_negative = TRIO_FALSE; /* NaN has no sign */ + return TRIO_FP_NAN; + case FP_POS_INF: + *is_negative = TRIO_FALSE; + return TRIO_FP_INFINITE; + case FP_NEG_INF: + *is_negative = TRIO_TRUE; + return TRIO_FP_INFINITE; + case FP_POS_DENORM: + *is_negative = TRIO_FALSE; + return TRIO_FP_SUBNORMAL; + case FP_NEG_DENORM: + *is_negative = TRIO_TRUE; + return TRIO_FP_SUBNORMAL; + case FP_POS_ZERO: + *is_negative = TRIO_FALSE; + return TRIO_FP_ZERO; + case FP_NEG_ZERO: + *is_negative = TRIO_TRUE; + return TRIO_FP_ZERO; + case FP_POS_NORM: + *is_negative = TRIO_FALSE; + return TRIO_FP_NORMAL; + case FP_NEG_NORM: + *is_negative = TRIO_TRUE; + return TRIO_FP_NORMAL; + default: + *is_negative = (number < 0.0); + return TRIO_FP_NORMAL; + } +} + +#endif /* TRIO_FUNC_DECC_FPCLASSIFY_AND_SIGNBIT */ + +#if defined(TRIO_FUNC_MS_FPCLASSIFY_AND_SIGNBIT) + +TRIO_PRIVATE_NAN int +ms_fpclassify_and_signbit +TRIO_ARGS2((number, is_negative), + double number, + int *is_negative) +{ + int result; +# if defined(TRIO_COMPILER_BORLAND) + /* + * The floating-point precision may be changed by the Borland _fpclass() + * function, so we have to save and restore the floating-point control mask. + */ + unsigned int mask; + /* Remember the old mask */ + mask = _control87(0, 0); +# endif + + switch (_fpclass(number)) { + case _FPCLASS_QNAN: + case _FPCLASS_SNAN: + *is_negative = TRIO_FALSE; /* NaN has no sign */ + result = TRIO_FP_NAN; + break; + case _FPCLASS_PINF: + *is_negative = TRIO_FALSE; + result = TRIO_FP_INFINITE; + break; + case _FPCLASS_NINF: + *is_negative = TRIO_TRUE; + result = TRIO_FP_INFINITE; + break; + case _FPCLASS_PD: + *is_negative = TRIO_FALSE; + result = TRIO_FP_SUBNORMAL; + break; + case _FPCLASS_ND: + *is_negative = TRIO_TRUE; + result = TRIO_FP_SUBNORMAL; + break; + case _FPCLASS_PZ: + *is_negative = TRIO_FALSE; + result = TRIO_FP_ZERO; + break; + case _FPCLASS_NZ: + *is_negative = TRIO_TRUE; + result = TRIO_FP_ZERO; + break; + case _FPCLASS_PN: + *is_negative = TRIO_FALSE; + result = TRIO_FP_NORMAL; + break; + case _FPCLASS_NN: + *is_negative = TRIO_TRUE; + result = TRIO_FP_NORMAL; + break; + default: + *is_negative = (number < 0.0); + result = TRIO_FP_NORMAL; + break; + } + +# if defined(TRIO_COMPILER_BORLAND) + /* Restore the old precision */ + (void)_control87(mask, MCW_PC); +# endif + + return result; +} + +#endif /* TRIO_FUNC_MS_FPCLASSIFY_AND_SIGNBIT */ + +#if defined(TRIO_FUNC_HP_FPCLASSIFY_AND_SIGNBIT) + +TRIO_PRIVATE_NAN TRIO_INLINE int +hp_fpclassify_and_signbit +TRIO_ARGS2((number, is_negative), + double number, + int *is_negative) +{ + /* + * HP-UX 9.x and 10.x have an fpclassify() function, that is different + * from the C99 fpclassify() macro supported on HP-UX 11.x. + */ + switch (fpclassify(number)) { + case FP_QNAN: + case FP_SNAN: + *is_negative = TRIO_FALSE; /* NaN has no sign */ + return TRIO_FP_NAN; + case FP_PLUS_INF: + *is_negative = TRIO_FALSE; + return TRIO_FP_INFINITE; + case FP_MINUS_INF: + *is_negative = TRIO_TRUE; + return TRIO_FP_INFINITE; + case FP_PLUS_DENORM: + *is_negative = TRIO_FALSE; + return TRIO_FP_SUBNORMAL; + case FP_MINUS_DENORM: + *is_negative = TRIO_TRUE; + return TRIO_FP_SUBNORMAL; + case FP_PLUS_ZERO: + *is_negative = TRIO_FALSE; + return TRIO_FP_ZERO; + case FP_MINUS_ZERO: + *is_negative = TRIO_TRUE; + return TRIO_FP_ZERO; + case FP_PLUS_NORM: + *is_negative = TRIO_FALSE; + return TRIO_FP_NORMAL; + case FP_MINUS_NORM: + *is_negative = TRIO_TRUE; + return TRIO_FP_NORMAL; + default: + *is_negative = (number < 0.0); + return TRIO_FP_NORMAL; + } +} + +#endif /* TRIO_FUNC_HP_FPCLASSIFY_AND_SIGNBIT */ + +#if defined(TRIO_FUNC_XLC_FPCLASSIFY_AND_SIGNBIT) + +TRIO_PRIVATE_NAN TRIO_INLINE int +xlc_fpclassify_and_signbit +TRIO_ARGS2((number, is_negative), + double number, + int *is_negative) +{ + /* + * AIX has class() for C, and _class() for C++ + */ +# if defined(__cplusplus) +# define AIX_CLASS(n) _class(n) +# else +# define AIX_CLASS(n) class(n) +# endif + + switch (AIX_CLASS(number)) { + case FP_QNAN: + case FP_SNAN: + *is_negative = TRIO_FALSE; /* NaN has no sign */ + return TRIO_FP_NAN; + case FP_PLUS_INF: + *is_negative = TRIO_FALSE; + return TRIO_FP_INFINITE; + case FP_MINUS_INF: + *is_negative = TRIO_TRUE; + return TRIO_FP_INFINITE; + case FP_PLUS_DENORM: + *is_negative = TRIO_FALSE; + return TRIO_FP_SUBNORMAL; + case FP_MINUS_DENORM: + *is_negative = TRIO_TRUE; + return TRIO_FP_SUBNORMAL; + case FP_PLUS_ZERO: + *is_negative = TRIO_FALSE; + return TRIO_FP_ZERO; + case FP_MINUS_ZERO: + *is_negative = TRIO_TRUE; + return TRIO_FP_ZERO; + case FP_PLUS_NORM: + *is_negative = TRIO_FALSE; + return TRIO_FP_NORMAL; + case FP_MINUS_NORM: + *is_negative = TRIO_TRUE; + return TRIO_FP_NORMAL; + default: + *is_negative = (number < 0.0); + return TRIO_FP_NORMAL; + } +} + +#endif /* TRIO_FUNC_XLC_FPCLASSIFY_AND_SIGNBIT */ + +#if defined(TRIO_FUNC_INTERNAL_ISNAN) + +TRIO_PRIVATE_NAN TRIO_INLINE int +internal_isnan +TRIO_ARGS1((number), + double number) +{ +# if defined(TRIO_INTERNAL_ISNAN_XPG3) || defined(TRIO_PLATFORM_SYMBIAN) + /* + * XPG3 defines isnan() as a function. + */ + return isnan(number); + +# endif + +# if defined(TRIO_INTERNAL_ISNAN_IEEE_754) + + /* + * Examine IEEE 754 bit-pattern. A NaN must have a special exponent + * pattern, and a non-empty mantissa. + */ + int has_mantissa; + int is_special_quantity; + + is_special_quantity = internal_is_special_quantity(number, &has_mantissa); + + return (is_special_quantity && has_mantissa); + +# endif + +# if defined(TRIO_INTERNAL_ISNAN_FALLBACK) + + /* + * Fallback solution + */ + int status; + double integral, fraction; + +# if defined(TRIO_PLATFORM_UNIX) + void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN); +# endif + + status = (/* + * NaN is the only number which does not compare to itself + */ + ((TRIO_VOLATILE double)number != (TRIO_VOLATILE double)number) || + /* + * Fallback solution if NaN compares to NaN + */ + ((number != 0.0) && + (fraction = modf(number, &integral), + integral == fraction))); + +# if defined(TRIO_PLATFORM_UNIX) + signal(SIGFPE, signal_handler); +# endif + + return status; + +# endif +} + +#endif /* TRIO_FUNC_INTERNAL_ISNAN */ + +#if defined(TRIO_FUNC_INTERNAL_ISINF) + +TRIO_PRIVATE_NAN TRIO_INLINE int +internal_isinf +TRIO_ARGS1((number), + double number) +{ +# if defined(TRIO_PLATFORM_SYMBIAN) + + return isinf(number); + +# endif + +# if defined(TRIO_INTERNAL_ISINF_IEEE_754) + /* + * Examine IEEE 754 bit-pattern. Infinity must have a special exponent + * pattern, and an empty mantissa. + */ + int has_mantissa; + int is_special_quantity; + + is_special_quantity = internal_is_special_quantity(number, &has_mantissa); + + return (is_special_quantity && !has_mantissa) + ? ((number < 0.0) ? -1 : 1) + : 0; + +# endif + +# if defined(TRIO_INTERNAL_ISINF_FALLBACK) + + /* + * Fallback solution. + */ + int status; + +# if defined(TRIO_PLATFORM_UNIX) + void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN); +# endif + + double infinity = trio_pinf(); + + status = ((number == infinity) + ? 1 + : ((number == -infinity) ? -1 : 0)); + +# if defined(TRIO_PLATFORM_UNIX) + signal(SIGFPE, signal_handler); +# endif + + return status; + +# endif +} + +#endif /* TRIO_FUNC_INTERNAL_ISINF */ + +/************************************************************************* + * Public functions + */ + +#if defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT) + +TRIO_PUBLIC_NAN int +trio_fpclassify_and_signbit +TRIO_ARGS2((number, is_negative), + double number, + int *is_negative) +{ + /* The TRIO_FUNC_xxx_FPCLASSIFY_AND_SIGNBIT macros are mutually exclusive */ + +#if defined(TRIO_FUNC_C99_FPCLASSIFY_AND_SIGNBIT) + + return c99_fpclassify_and_signbit(number, is_negative); + +#endif + +#if defined(TRIO_FUNC_DECC_FPCLASSIFY_AND_SIGNBIT) + + return decc_fpclassify_and_signbit(number, is_negative); + +#endif + +#if defined(TRIO_FUNC_MS_FPCLASSIFY_AND_SIGNBIT) + + return ms_fpclassify_and_signbit(number, is_negative); + +#endif + +#if defined(TRIO_FUNC_HP_FPCLASSIFY_AND_SIGNBIT) + + return hp_fpclassify_and_signbit(number, is_negative); + +#endif + +#if defined(TRIO_FUNC_XLC_FPCLASSIFY_AND_SIGNBIT) + + return xlc_fpclassify_and_signbit(number, is_negative); + +#endif + +#if defined(TRIO_FUNC_INTERNAL_FPCLASSIFY_AND_SIGNBIT) + + /* + * Fallback solution. + */ + int rc; + + if (number == 0.0) { + /* + * In IEEE 754 the sign of zero is ignored in comparisons, so we + * have to handle this as a special case by examining the sign bit + * directly. + */ +# if defined(TRIO_IEEE_754) + *is_negative = internal_is_negative(number); +# else + *is_negative = TRIO_FALSE; /* FIXME */ +# endif + return TRIO_FP_ZERO; + } + if (internal_isnan(number)) { + *is_negative = TRIO_FALSE; + return TRIO_FP_NAN; + } + rc = internal_isinf(number); + if (rc != 0) { + *is_negative = (rc == -1); + return TRIO_FP_INFINITE; + } + if ((number > 0.0) && (number < DBL_MIN)) { + *is_negative = TRIO_FALSE; + return TRIO_FP_SUBNORMAL; + } + if ((number < 0.0) && (number > -DBL_MIN)) { + *is_negative = TRIO_TRUE; + return TRIO_FP_SUBNORMAL; + } + *is_negative = (number < 0.0); + return TRIO_FP_NORMAL; + +#endif +} + +#endif + +/** + Check for NaN. + + @param number An arbitrary floating-point number. + @return Boolean value indicating whether or not the number is a NaN. +*/ +#if defined(TRIO_FUNC_ISNAN) + +TRIO_PUBLIC_NAN int +trio_isnan +TRIO_ARGS1((number), + double number) +{ + int dummy; + + return (trio_fpclassify_and_signbit(number, &dummy) == TRIO_FP_NAN); +} + +#endif + +/** + Check for infinity. + + @param number An arbitrary floating-point number. + @return 1 if positive infinity, -1 if negative infinity, 0 otherwise. +*/ +#if defined(TRIO_FUNC_ISINF) + +TRIO_PUBLIC_NAN int +trio_isinf +TRIO_ARGS1((number), + double number) +{ + int is_negative; + + if (trio_fpclassify_and_signbit(number, &is_negative) == TRIO_FP_INFINITE) + { + return (is_negative) ? -1 : 1; + } + else + { + return 0; + } +} + +#endif + +/** + Check for finity. + + @param number An arbitrary floating-point number. + @return Boolean value indicating whether or not the number is a finite. +*/ +#if defined(TRIO_FUNC_ISFINITE) + +TRIO_PUBLIC_NAN int +trio_isfinite +TRIO_ARGS1((number), + double number) +{ + int dummy; + + switch (trio_fpclassify_and_signbit(number, &dummy)) + { + case TRIO_FP_INFINITE: + case TRIO_FP_NAN: + return 0; + default: + return 1; + } +} + +#endif + +/** + Examine the sign of a number. + + @param number An arbitrary floating-point number. + @return Boolean value indicating whether or not the number has the + sign bit set (i.e. is negative). +*/ +#if defined(TRIO_FUNC_SIGNBIT) + +TRIO_PUBLIC_NAN int +trio_signbit +TRIO_ARGS1((number), + double number) +{ + int is_negative; + + (void)trio_fpclassify_and_signbit(number, &is_negative); + return is_negative; +} + +#endif + +/** + Examine the class of a number. + + @param number An arbitrary floating-point number. + @return Enumerable value indicating the class of @p number +*/ +#if defined(TRIO_FUNC_FPCLASSIFY) + +TRIO_PUBLIC_NAN int +trio_fpclassify +TRIO_ARGS1((number), + double number) +{ + int dummy; + + return trio_fpclassify_and_signbit(number, &dummy); +} + +#endif + +/** + Generate negative zero. + + @return Floating-point representation of negative zero. +*/ +#if defined(TRIO_FUNC_NZERO) + +TRIO_PUBLIC_NAN double +trio_nzero(TRIO_NOARGS) +{ +# if defined(TRIO_NZERO_IEEE_754) + + return internal_make_double(ieee_754_negzero_array); + +# endif + +# if defined(TRIO_NZERO_FALLBACK) + + TRIO_VOLATILE double zero = 0.0; + + return -zero; + +# endif +} + +#endif + +/** + Generate positive infinity. + + @return Floating-point representation of positive infinity. +*/ +#if defined(TRIO_FUNC_PINF) + +TRIO_PUBLIC_NAN double +trio_pinf(TRIO_NOARGS) +{ + /* Cache the result */ + static double pinf_value = 0.0; + + if (pinf_value == 0.0) { + +# if defined(TRIO_PINF_C99_MACRO) + + pinf_value = (double)INFINITY; + +# endif + +# if defined(TRIO_PINF_IEEE_754) + + pinf_value = internal_make_double(ieee_754_infinity_array); + +# endif + +# if defined(TRIO_PINF_FALLBACK) + /* + * If HUGE_VAL is different from DBL_MAX, then HUGE_VAL is used + * as infinity. Otherwise we have to resort to an overflow + * operation to generate infinity. + */ +# if defined(TRIO_PLATFORM_UNIX) + void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN); +# endif + + pinf_value = HUGE_VAL; + if (HUGE_VAL == DBL_MAX) { + /* Force overflow */ + pinf_value += HUGE_VAL; + } + +# if defined(TRIO_PLATFORM_UNIX) + signal(SIGFPE, signal_handler); +# endif + +# endif + } + return pinf_value; +} + +#endif + +/** + Generate negative infinity. + + @return Floating-point value of negative infinity. +*/ +#if defined(TRIO_FUNC_NINF) + +TRIO_PUBLIC_NAN double +trio_ninf(TRIO_NOARGS) +{ + static double ninf_value = 0.0; + + if (ninf_value == 0.0) { + /* + * Negative infinity is calculated by negating positive infinity, + * which can be done because it is legal to do calculations on + * infinity (for example, 1 / infinity == 0). + */ + ninf_value = -trio_pinf(); + } + return ninf_value; +} + +#endif + +/** + Generate NaN. + + @return Floating-point representation of NaN. +*/ +#if defined(TRIO_FUNC_NAN) + +TRIO_PUBLIC_NAN double +trio_nan(TRIO_NOARGS) +{ + /* Cache the result */ + static double nan_value = 0.0; + + if (nan_value == 0.0) { + +# if defined(TRIO_NAN_C99_FUNCTION) || defined(TRIO_PLATFORM_SYMBIAN) + + nan_value = nan(""); + +# endif + +# if defined(TRIO_NAN_C99_MACRO) + + nan_value = (double)NAN; + +# endif + +# if defined(TRIO_NAN_IEEE_754) + + nan_value = internal_make_double(ieee_754_qnan_array); + +# endif + +# if defined(TRIO_NAN_FALLBACK) + /* + * There are several ways to generate NaN. The one used here is + * to divide infinity by infinity. I would have preferred to add + * negative infinity to positive infinity, but that yields wrong + * result (infinity) on FreeBSD. + * + * This may fail if the hardware does not support NaN, or if + * the Invalid Operation floating-point exception is unmasked. + */ +# if defined(TRIO_PLATFORM_UNIX) + void (*signal_handler)(int) = signal(SIGFPE, SIG_IGN); +# endif + + nan_value = trio_pinf() / trio_pinf(); + +# if defined(TRIO_PLATFORM_UNIX) + signal(SIGFPE, signal_handler); +# endif + +# endif + } + return nan_value; +} + +#endif + +/** @} SpecialQuantities */ + +/************************************************************************* + * For test purposes. + * + * Add the following compiler option to include this test code. + * + * Unix : -DSTANDALONE + * VMS : /DEFINE=(STANDALONE) + */ +#if defined(STANDALONE) +# include + +static TRIO_CONST char * +getClassification +TRIO_ARGS1((type), + int type) +{ + switch (type) { + case TRIO_FP_INFINITE: + return "FP_INFINITE"; + case TRIO_FP_NAN: + return "FP_NAN"; + case TRIO_FP_NORMAL: + return "FP_NORMAL"; + case TRIO_FP_SUBNORMAL: + return "FP_SUBNORMAL"; + case TRIO_FP_ZERO: + return "FP_ZERO"; + default: + return "FP_UNKNOWN"; + } +} + +static void +print_class +TRIO_ARGS2((prefix, number), + TRIO_CONST char *prefix, + double number) +{ + printf("%-6s: %s %-15s %g\n", + prefix, + trio_signbit(number) ? "-" : "+", + getClassification(trio_fpclassify(number)), + number); +} + +int main(TRIO_NOARGS) +{ + double my_nan; + double my_pinf; + double my_ninf; +# if defined(TRIO_PLATFORM_UNIX) + void (*signal_handler) TRIO_PROTO((int)); +# endif + + my_nan = trio_nan(); + my_pinf = trio_pinf(); + my_ninf = trio_ninf(); + + print_class("Nan", my_nan); + print_class("PInf", my_pinf); + print_class("NInf", my_ninf); + print_class("PZero", 0.0); + print_class("NZero", -0.0); + print_class("PNorm", 1.0); + print_class("NNorm", -1.0); + print_class("PSub", 1.01e-307 - 1.00e-307); + print_class("NSub", 1.00e-307 - 1.01e-307); + + printf("NaN : %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d, %2d)\n", + my_nan, + ((unsigned char *)&my_nan)[0], + ((unsigned char *)&my_nan)[1], + ((unsigned char *)&my_nan)[2], + ((unsigned char *)&my_nan)[3], + ((unsigned char *)&my_nan)[4], + ((unsigned char *)&my_nan)[5], + ((unsigned char *)&my_nan)[6], + ((unsigned char *)&my_nan)[7], + trio_isnan(my_nan), trio_isinf(my_nan), trio_isfinite(my_nan)); + printf("PInf: %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d, %2d)\n", + my_pinf, + ((unsigned char *)&my_pinf)[0], + ((unsigned char *)&my_pinf)[1], + ((unsigned char *)&my_pinf)[2], + ((unsigned char *)&my_pinf)[3], + ((unsigned char *)&my_pinf)[4], + ((unsigned char *)&my_pinf)[5], + ((unsigned char *)&my_pinf)[6], + ((unsigned char *)&my_pinf)[7], + trio_isnan(my_pinf), trio_isinf(my_pinf), trio_isfinite(my_pinf)); + printf("NInf: %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d, %2d)\n", + my_ninf, + ((unsigned char *)&my_ninf)[0], + ((unsigned char *)&my_ninf)[1], + ((unsigned char *)&my_ninf)[2], + ((unsigned char *)&my_ninf)[3], + ((unsigned char *)&my_ninf)[4], + ((unsigned char *)&my_ninf)[5], + ((unsigned char *)&my_ninf)[6], + ((unsigned char *)&my_ninf)[7], + trio_isnan(my_ninf), trio_isinf(my_ninf), trio_isfinite(my_ninf)); + +# if defined(TRIO_PLATFORM_UNIX) + signal_handler = signal(SIGFPE, SIG_IGN); +# endif + + my_pinf = DBL_MAX + DBL_MAX; + my_ninf = -my_pinf; + my_nan = my_pinf / my_pinf; + +# if defined(TRIO_PLATFORM_UNIX) + signal(SIGFPE, signal_handler); +# endif + + printf("NaN : %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d, %2d)\n", + my_nan, + ((unsigned char *)&my_nan)[0], + ((unsigned char *)&my_nan)[1], + ((unsigned char *)&my_nan)[2], + ((unsigned char *)&my_nan)[3], + ((unsigned char *)&my_nan)[4], + ((unsigned char *)&my_nan)[5], + ((unsigned char *)&my_nan)[6], + ((unsigned char *)&my_nan)[7], + trio_isnan(my_nan), trio_isinf(my_nan), trio_isfinite(my_nan)); + printf("PInf: %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d, %2d)\n", + my_pinf, + ((unsigned char *)&my_pinf)[0], + ((unsigned char *)&my_pinf)[1], + ((unsigned char *)&my_pinf)[2], + ((unsigned char *)&my_pinf)[3], + ((unsigned char *)&my_pinf)[4], + ((unsigned char *)&my_pinf)[5], + ((unsigned char *)&my_pinf)[6], + ((unsigned char *)&my_pinf)[7], + trio_isnan(my_pinf), trio_isinf(my_pinf), trio_isfinite(my_pinf)); + printf("NInf: %4g 0x%02x%02x%02x%02x%02x%02x%02x%02x (%2d, %2d, %2d)\n", + my_ninf, + ((unsigned char *)&my_ninf)[0], + ((unsigned char *)&my_ninf)[1], + ((unsigned char *)&my_ninf)[2], + ((unsigned char *)&my_ninf)[3], + ((unsigned char *)&my_ninf)[4], + ((unsigned char *)&my_ninf)[5], + ((unsigned char *)&my_ninf)[6], + ((unsigned char *)&my_ninf)[7], + trio_isnan(my_ninf), trio_isinf(my_ninf), trio_isfinite(my_ninf)); + + return 0; +} +#endif diff --git a/libmednahawk/src/trio/triostr.c b/libmednahawk/src/trio/triostr.c new file mode 100644 index 0000000000..24cb075951 --- /dev/null +++ b/libmednahawk/src/trio/triostr.c @@ -0,0 +1,2385 @@ +/************************************************************************* + * + * $Id: triostr.c,v 1.36 2010/01/26 13:02:02 breese Exp $ + * + * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************/ + +/************************************************************************* + * Include files + */ + +#if defined(HAVE_CONFIG_H) +# include +#endif +#include +#include +#include +#include +#include +#include +#if defined(TRIO_FUNC_TO_LONG_DOUBLE) +# define USE_MATH +#endif +#if defined(USE_MATH) +# include +#endif + +/************************************************************************* + * Definitions + */ + +#if !defined(TRIO_PUBLIC_STRING) +# define TRIO_PUBLIC_STRING TRIO_PUBLIC +#endif +#if !defined(TRIO_PRIVATE_STRING) +# define TRIO_PRIVATE_STRING TRIO_PRIVATE +#endif + +#if !defined(NULL) +# define NULL 0 +#endif +#if !defined(NIL) +# define NIL ((char)0) +#endif +#if !defined(FALSE) +# define FALSE (1 == 0) +# define TRUE (! FALSE) +#endif +#if !defined(BOOLEAN_T) +# define BOOLEAN_T int +#endif + +#if defined(USE_MATH) +# if defined(PREDEF_STANDARD_C99) +# if defined(TRIO_COMPILER_DECC) +# if (TRIO_COMPILER_DECC - 0 > 80000000) +/* + * The OSF/1 runtime that comes with the DECC compiler does not support + * hexfloats conversion. + */ +# define USE_STRTOD +# define USE_STRTOF +# endif +# else +# define USE_STRTOD +# define USE_STRTOF +# endif +# else +# if defined(TRIO_COMPILER_VISUALC) +# define USE_STRTOD +# endif +#endif +#endif + +#if defined(TRIO_PLATFORM_UNIX) +# if defined(PREDEF_STANDARD_UNIX95) +# define USE_STRCASECMP +# define USE_STRNCASECMP +# endif +# if defined(TRIO_PLATFORM_SUNOS) +# define USE_SYS_ERRLIST +# else +# define USE_STRERROR +# endif +# if defined(TRIO_PLATFORM_QNX) +# define strcasecmp(x,y) stricmp(x,y) +# define strncasecmp(x,y,n) strnicmp(x,y,n) +# endif +#endif + +#if defined(TRIO_PLATFORM_WIN32) +# define USE_STRCASECMP +# if defined(TRIO_PLATFORM_WINCE) +# define strcasecmp(x,y) _stricmp(x,y) +# else +# define strcasecmp(x,y) strcmpi(x,y) +# endif +#endif + +#if !defined(HAVE_CONFIG_H) +# if !(defined(TRIO_PLATFORM_SUNOS)) +# define HAVE_TOLOWER +# define HAVE_TOUPPER +# endif +#endif + +#if defined(USE_MATH) && !defined(TRIO_NO_POWL) +# if !defined(HAVE_POWL) +# if defined(PREDEF_STANDARD_C99) \ + || defined(PREDEF_STANDARD_UNIX03) +# define HAVE_POWL +# else +# if defined(TRIO_COMPILER_VISUALC) +# if defined(powl) +# define HAVE_POWL +# endif +# endif +# endif +# endif +#endif + +#if defined(HAVE_POWL) +# define trio_powl(x,y) powl((x),(y)) +#else +# define trio_powl(x,y) pow((double)(x),(double)(y)) +#endif + +#if defined(TRIO_FUNC_TO_UPPER) \ + || (defined(TRIO_FUNC_EQUAL) && !defined(USE_STRCASECMP)) \ + || (defined(TRIO_FUNC_EQUAL_MAX) && !defined(USE_STRNCASECMP)) \ + || defined(TRIO_FUNC_MATCH) \ + || defined(TRIO_FUNC_TO_LONG_DOUBLE) \ + || defined(TRIO_FUNC_UPPER) +# define TRIO_FUNC_INTERNAL_TO_UPPER +#endif + +/************************************************************************* + * Structures + */ + +struct _trio_string_t +{ + char *content; + size_t length; + size_t allocated; +}; + +/************************************************************************* + * Constants + */ + +#if !defined(TRIO_EMBED_STRING) +static TRIO_CONST char rcsid[] = "@(#)$Id: triostr.c,v 1.36 2010/01/26 13:02:02 breese Exp $"; +#endif + +/************************************************************************* + * Static String Functions + */ + +#if defined(TRIO_DOCUMENTATION) +# include "doc/doc_static.h" +#endif +/** @addtogroup StaticStrings + @{ +*/ + +/* + * internal_duplicate_max + */ +#if defined(TRIO_FUNC_DUPLICATE) \ + || defined(TRIO_FUNC_DUPLICATE_MAX) \ + || defined(TRIO_FUNC_STRING_DUPLICATE) \ + || defined(TRIO_FUNC_XSTRING_DUPLICATE) + +TRIO_PRIVATE_STRING char * +internal_duplicate_max +TRIO_ARGS2((source, size), + TRIO_CONST char *source, + size_t size) +{ + char *target; + + assert(source); + + /* Make room for string plus a terminating zero */ + size++; + target = trio_create(size); + if (target) + { + trio_copy_max(target, size, source); + } + return target; +} + +#endif + +/* + * internal_string_alloc + */ +#if defined(TRIO_FUNC_STRING_CREATE) \ + || defined(TRIO_FUNC_STRING_DUPLICATE) \ + || defined(TRIO_FUNC_XSTRING_DUPLICATE) + +TRIO_PRIVATE_STRING trio_string_t * +internal_string_alloc(TRIO_NOARGS) +{ + trio_string_t *self; + + self = (trio_string_t *)TRIO_MALLOC(sizeof(trio_string_t)); + if (self) + { + self->content = NULL; + self->length = 0; + self->allocated = 0; + } + return self; +} + +#endif + +/* + * internal_string_grow + * + * The size of the string will be increased by 'delta' characters. If + * 'delta' is zero, the size will be doubled. + */ +#if defined(TRIO_FUNC_STRING_CREATE) \ + || defined(TRIO_FUNC_STRING_APPEND) \ + || defined(TRIO_FUNC_XSTRING_APPEND) \ + || defined(TRIO_FUNC_XSTRING_APPEND_CHAR) + +TRIO_PRIVATE_STRING BOOLEAN_T +internal_string_grow +TRIO_ARGS2((self, delta), + trio_string_t *self, + size_t delta) +{ + BOOLEAN_T status = FALSE; + char *new_content; + size_t new_size; + + new_size = (delta == 0) + ? ( (self->allocated == 0) ? 1 : self->allocated * 2 ) + : self->allocated + delta; + + new_content = (char *)TRIO_REALLOC(self->content, new_size); + if (new_content) + { + self->content = new_content; + self->allocated = new_size; + status = TRUE; + } + return status; +} + +#endif + +/* + * internal_string_grow_to + * + * The size of the string will be increased to 'length' plus one characters. + * If 'length' is less than the original size, the original size will be + * used (that is, the size of the string is never decreased). + */ +#if defined(TRIO_FUNC_STRING_APPEND) \ + || defined(TRIO_FUNC_XSTRING_APPEND) \ + || defined(TRIO_FUNC_XSTRING_APPEND_MAX) + +TRIO_PRIVATE_STRING BOOLEAN_T +internal_string_grow_to +TRIO_ARGS2((self, length), + trio_string_t *self, + size_t length) +{ + length++; /* Room for terminating zero */ + return (self->allocated < length) + ? internal_string_grow(self, length - self->allocated) + : TRUE; +} + +#endif + +#if defined(TRIO_FUNC_INTERNAL_TO_UPPER) + +TRIO_PRIVATE_STRING TRIO_INLINE int +internal_to_upper +TRIO_ARGS1((source), + int source) +{ +# if defined(HAVE_TOUPPER) + + return toupper(source); + +# else + + /* Does not handle locales or non-contiguous alphabetic characters */ + return ((source >= (int)'a') && (source <= (int)'z')) + ? source - 'a' + 'A' + : source; + +# endif +} + +#endif + + +/** + Create new string. + + @param size Size of new string. + @return Pointer to string, or NULL if allocation failed. +*/ +#if defined(TRIO_FUNC_CREATE) + +TRIO_PUBLIC_STRING char * +trio_create +TRIO_ARGS1((size), + size_t size) +{ + return (char *)TRIO_MALLOC(size); +} + +#endif + +/** + Destroy string. + + @param string String to be freed. +*/ +#if defined(TRIO_FUNC_DESTROY) + +TRIO_PUBLIC_STRING void +trio_destroy +TRIO_ARGS1((string), + char *string) +{ + if (string) + { + TRIO_FREE(string); + } +} + +#endif + +/** + Count the number of characters in a string. + + @param string String to measure. + @return Number of characters in @p string. +*/ +#if defined(TRIO_FUNC_LENGTH) + +TRIO_PUBLIC_STRING size_t +trio_length +TRIO_ARGS1((string), + TRIO_CONST char *string) +{ + return strlen(string); +} + +#endif + +/** + Count at most @p max characters in a string. + + @param string String to measure. + @param max Maximum number of characters to count. + @return The maximum value of @p max and number of characters in @p string. +*/ +#if defined(TRIO_FUNC_LENGTH_MAX) + +TRIO_PUBLIC_STRING size_t +trio_length_max +TRIO_ARGS2((string, max), + TRIO_CONST char *string, + size_t max) +{ + size_t i; + + for (i = 0; i < max; ++i) + { + if (string[i] == 0) + break; + } + return i; +} + +#endif + +/** + Append @p source at the end of @p target. + + @param target Target string. + @param source Source string. + @return Boolean value indicating success or failure. + + @pre @p target must point to a memory chunk with sufficient room to + contain the @p target string and @p source string. + @pre No boundary checking is performed, so insufficient memory will + result in a buffer overrun. + @post @p target will be zero terminated. +*/ +#if defined(TRIO_FUNC_APPEND) + +TRIO_PUBLIC_STRING int +trio_append +TRIO_ARGS2((target, source), + char *target, + TRIO_CONST char *source) +{ + assert(target); + assert(source); + + return (strcat(target, source) != NULL); +} + +#endif + +/** + Append at most @p max characters from @p source to @p target. + + @param target Target string. + @param max Maximum number of characters to append. + @param source Source string. + @return Boolean value indicating success or failure. + + @pre @p target must point to a memory chuck with sufficient room to + contain the @p target string and the @p source string (at most @p max + characters). + @pre No boundary checking is performed, so insufficient memory will + result in a buffer overrun. + @post @p target will be zero terminated. +*/ +#if defined(TRIO_FUNC_APPEND_MAX) + +TRIO_PUBLIC_STRING int +trio_append_max +TRIO_ARGS3((target, max, source), + char *target, + size_t max, + TRIO_CONST char *source) +{ + size_t length; + + assert(target); + assert(source); + + length = trio_length(target); + + if (max > length) + { + strncat(target, source, max - length - 1); + } + return TRUE; +} + +#endif + +/** + Determine if a string contains a substring. + + @param string String to be searched. + @param substring String to be found. + @return Boolean value indicating success or failure. +*/ +#if defined(TRIO_FUNC_CONTAINS) + +TRIO_PUBLIC_STRING int +trio_contains +TRIO_ARGS2((string, substring), + TRIO_CONST char *string, + TRIO_CONST char *substring) +{ + assert(string); + assert(substring); + + return (0 != strstr(string, substring)); +} + +#endif + +/** + Copy @p source to @p target. + + @param target Target string. + @param source Source string. + @return Boolean value indicating success or failure. + + @pre @p target must point to a memory chunk with sufficient room to + contain the @p source string. + @pre No boundary checking is performed, so insufficient memory will + result in a buffer overrun. + @post @p target will be zero terminated. +*/ +#if defined(TRIO_FUNC_COPY) + +TRIO_PUBLIC_STRING int +trio_copy +TRIO_ARGS2((target, source), + char *target, + TRIO_CONST char *source) +{ + assert(target); + assert(source); + + (void)strcpy(target, source); + return TRUE; +} + +#endif + +/** + Copy at most @p max - 1 characters from @p source to @p target. + + @param target Target string. + @param max Maximum number of characters to append (one of which is + a NUL terminator). In other words @p source must point to at least + @p max - 1 bytes, but @p target must point to at least @p max + bytes. + @param source Source string. + @return Boolean value indicating success or failure. + + @pre @p target must point to a memory chunk with sufficient room to + contain the @p source string and a NUL terminator (at most @p max + bytes total). + @pre No boundary checking is performed, so insufficient memory will + result in a buffer overrun. + @post @p target will be zero terminated. +*/ +#if defined(TRIO_FUNC_COPY_MAX) + +TRIO_PUBLIC_STRING int +trio_copy_max +TRIO_ARGS3((target, max, source), + char *target, + size_t max, + TRIO_CONST char *source) +{ + assert(target); + assert(source); + assert(max > 0); /* Includes != 0 */ + + (void)strncpy(target, source, max - 1); + target[max - 1] = (char)0; + return TRUE; +} + +#endif + +/** + Duplicate @p source. + + @param source Source string. + @return A copy of the @p source string. + + @post @p target will be zero terminated. +*/ +#if defined(TRIO_FUNC_DUPLICATE) + +TRIO_PUBLIC_STRING char * +trio_duplicate +TRIO_ARGS1((source), + TRIO_CONST char *source) +{ + return internal_duplicate_max(source, trio_length(source)); +} + +#endif + +/** + Duplicate at most @p max characters of @p source. + + @param source Source string. + @param max Maximum number of characters to duplicate. + @return A copy of the @p source string. + + @post @p target will be zero terminated. +*/ +#if defined(TRIO_FUNC_DUPLICATE_MAX) + +TRIO_PUBLIC_STRING char * +trio_duplicate_max +TRIO_ARGS2((source, max), + TRIO_CONST char *source, + size_t max) +{ + size_t length; + + assert(source); + assert(max > 0); + + length = trio_length(source); + if (length > max) + { + length = max; + } + return internal_duplicate_max(source, length); +} + +#endif + +/** + Compare if two strings are equal. + + @param first First string. + @param second Second string. + @return Boolean indicating whether the two strings are equal or not. + + Case-insensitive comparison. +*/ +#if defined(TRIO_FUNC_EQUAL) + +TRIO_PUBLIC_STRING int +trio_equal +TRIO_ARGS2((first, second), + TRIO_CONST char *first, + TRIO_CONST char *second) +{ + assert(first); + assert(second); + + if ((first != NULL) && (second != NULL)) + { +# if defined(USE_STRCASECMP) + return (0 == strcasecmp(first, second)); +# else + while ((*first != NIL) && (*second != NIL)) + { + if (internal_to_upper(*first) != internal_to_upper(*second)) + { + break; + } + first++; + second++; + } + return ((*first == NIL) && (*second == NIL)); +# endif + } + return FALSE; +} + +#endif + +/** + Compare if two strings are equal. + + @param first First string. + @param second Second string. + @return Boolean indicating whether the two strings are equal or not. + + Case-sensitive comparison. +*/ +#if defined(TRIO_FUNC_EQUAL_CASE) + +TRIO_PUBLIC_STRING int +trio_equal_case +TRIO_ARGS2((first, second), + TRIO_CONST char *first, + TRIO_CONST char *second) +{ + assert(first); + assert(second); + + if ((first != NULL) && (second != NULL)) + { + return (0 == strcmp(first, second)); + } + return FALSE; +} + +#endif + +/** + Compare if two strings up until the first @p max characters are equal. + + @param first First string. + @param max Maximum number of characters to compare. + @param second Second string. + @return Boolean indicating whether the two strings are equal or not. + + Case-sensitive comparison. +*/ +#if defined(TRIO_FUNC_EQUAL_CASE_MAX) + +TRIO_PUBLIC_STRING int +trio_equal_case_max +TRIO_ARGS3((first, max, second), + TRIO_CONST char *first, + size_t max, + TRIO_CONST char *second) +{ + assert(first); + assert(second); + + if ((first != NULL) && (second != NULL)) + { + return (0 == strncmp(first, second, max)); + } + return FALSE; +} + +#endif + +/** + Compare if two strings are equal. + + @param first First string. + @param second Second string. + @return Boolean indicating whether the two strings are equal or not. + + Collating characters are considered equal. +*/ +#if defined(TRIO_FUNC_EQUAL_LOCALE) + +TRIO_PUBLIC_STRING int +trio_equal_locale +TRIO_ARGS2((first, second), + TRIO_CONST char *first, + TRIO_CONST char *second) +{ + assert(first); + assert(second); + +# if defined(LC_COLLATE) + return (strcoll(first, second) == 0); +# else + return trio_equal(first, second); +# endif +} + +#endif + +/** + Compare if two strings up until the first @p max characters are equal. + + @param first First string. + @param max Maximum number of characters to compare. + @param second Second string. + @return Boolean indicating whether the two strings are equal or not. + + Case-insensitive comparison. +*/ +#if defined(TRIO_FUNC_EQUAL_MAX) + +TRIO_PUBLIC_STRING int +trio_equal_max +TRIO_ARGS3((first, max, second), + TRIO_CONST char *first, + size_t max, + TRIO_CONST char *second) +{ + assert(first); + assert(second); + + if ((first != NULL) && (second != NULL)) + { +# if defined(USE_STRNCASECMP) + return (0 == strncasecmp(first, second, max)); +# else + /* Not adequately tested yet */ + size_t cnt = 0; + while ((*first != NIL) && (*second != NIL) && (cnt <= max)) + { + if (internal_to_upper(*first) != internal_to_upper(*second)) + { + break; + } + first++; + second++; + cnt++; + } + return ((cnt == max) || ((*first == NIL) && (*second == NIL))); +# endif + } + return FALSE; +} + +#endif + +/** + Provide a textual description of an error code (errno). + + @param error_number Error number. + @return Textual description of @p error_number. +*/ +#if defined(TRIO_FUNC_ERROR) + +TRIO_PUBLIC_STRING TRIO_CONST char * +trio_error +TRIO_ARGS1((error_number), + int error_number) +{ +# if defined(USE_STRERROR) + + return strerror(error_number); + +# else +# if defined(USE_SYS_ERRLIST) + + extern char *sys_errlist[]; + extern int sys_nerr; + + return ((error_number < 0) || (error_number >= sys_nerr)) + ? "unknown" + : sys_errlist[error_number]; + +# else + + return "unknown"; + +# endif +# endif +} + +#endif + +/** + Format the date/time according to @p format. + + @param target Target string. + @param max Maximum number of characters to format. + @param format Formatting string. + @param datetime Date/time structure. + @return Number of formatted characters. + + The formatting string accepts the same specifiers as the standard C + function strftime. +*/ +#if defined(TRIO_FUNC_FORMAT_DATE_MAX) + +TRIO_PUBLIC_STRING size_t +trio_format_date_max +TRIO_ARGS4((target, max, format, datetime), + char *target, + size_t max, + TRIO_CONST char *format, + TRIO_CONST struct tm *datetime) +{ + assert(target); + assert(format); + assert(datetime); + assert(max > 0); + + return strftime(target, max, format, datetime); +} + +#endif + +/** + Calculate a hash value for a string. + + @param string String to be calculated on. + @param type Hash function. + @return Calculated hash value. + + @p type can be one of the following + @li @c TRIO_HASH_PLAIN Plain hash function. +*/ +#if defined(TRIO_FUNC_HASH) + +TRIO_PUBLIC_STRING unsigned long +trio_hash +TRIO_ARGS2((string, type), + TRIO_CONST char *string, + int type) +{ + unsigned long value = 0L; + char ch; + + assert(string); + + switch (type) + { + case TRIO_HASH_PLAIN: + while ( (ch = *string++) != NIL ) + { + value *= 31; + value += (unsigned long)ch; + } + break; + default: + assert(FALSE); + break; + } + return value; +} + +#endif + +/** + Find first occurrence of a character in a string. + + @param string String to be searched. + @param character Character to be found. + @return A pointer to the found character, or NULL if character was not found. + */ +#if defined(TRIO_FUNC_INDEX) + +TRIO_PUBLIC_STRING char * +trio_index +TRIO_ARGS2((string, character), + TRIO_CONST char *string, + int character) +{ + assert(string); + + return strchr(string, character); +} + +#endif + +/** + Find last occurrence of a character in a string. + + @param string String to be searched. + @param character Character to be found. + @return A pointer to the found character, or NULL if character was not found. + */ +#if defined(TRIO_FUNC_INDEX_LAST) + +TRIO_PUBLIC_STRING char * +trio_index_last +TRIO_ARGS2((string, character), + TRIO_CONST char *string, + int character) +{ + assert(string); + + return strchr(string, character); +} + +#endif + +/** + Convert the alphabetic letters in the string to lower-case. + + @param target String to be converted. + @return Number of processed characters (converted or not). +*/ +#if defined(TRIO_FUNC_LOWER) + +TRIO_PUBLIC_STRING int +trio_lower +TRIO_ARGS1((target), + char *target) +{ + assert(target); + + return trio_span_function(target, target, trio_to_lower); +} + +#endif + +/** + Compare two strings using wildcards. + + @param string String to be searched. + @param pattern Pattern, including wildcards, to search for. + @return Boolean value indicating success or failure. + + Case-insensitive comparison. + + The following wildcards can be used + @li @c * Match any number of characters. + @li @c ? Match a single character. +*/ +#if defined(TRIO_FUNC_MATCH) + +TRIO_PUBLIC_STRING int +trio_match +TRIO_ARGS2((string, pattern), + TRIO_CONST char *string, + TRIO_CONST char *pattern) +{ + assert(string); + assert(pattern); + + for (; ('*' != *pattern); ++pattern, ++string) + { + if (NIL == *string) + { + return (NIL == *pattern); + } + if ((internal_to_upper((int)*string) != internal_to_upper((int)*pattern)) + && ('?' != *pattern)) + { + return FALSE; + } + } + /* two-line patch to prevent *too* much recursiveness: */ + while ('*' == pattern[1]) + pattern++; + + do + { + if ( trio_match(string, &pattern[1]) ) + { + return TRUE; + } + } + while (*string++); + + return FALSE; +} + +#endif + +/** + Compare two strings using wildcards. + + @param string String to be searched. + @param pattern Pattern, including wildcards, to search for. + @return Boolean value indicating success or failure. + + Case-sensitive comparison. + + The following wildcards can be used + @li @c * Match any number of characters. + @li @c ? Match a single character. +*/ +#if defined(TRIO_FUNC_MATCH_CASE) + +TRIO_PUBLIC_STRING int +trio_match_case +TRIO_ARGS2((string, pattern), + TRIO_CONST char *string, + TRIO_CONST char *pattern) +{ + assert(string); + assert(pattern); + + for (; ('*' != *pattern); ++pattern, ++string) + { + if (NIL == *string) + { + return (NIL == *pattern); + } + if ((*string != *pattern) + && ('?' != *pattern)) + { + return FALSE; + } + } + /* two-line patch to prevent *too* much recursiveness: */ + while ('*' == pattern[1]) + pattern++; + + do + { + if ( trio_match_case(string, &pattern[1]) ) + { + return TRUE; + } + } + while (*string++); + + return FALSE; +} + +#endif + +/** + Execute a function on each character in string. + + @param target Target string. + @param source Source string. + @param Function Function to be executed. + @return Number of processed characters. +*/ +#if defined(TRIO_FUNC_SPAN_FUNCTION) + +TRIO_PUBLIC_STRING size_t +trio_span_function +TRIO_ARGS3((target, source, Function), + char *target, + TRIO_CONST char *source, + int (*Function) TRIO_PROTO((int))) +{ + size_t count = 0; + + assert(target); + assert(source); + assert(Function); + + while (*source != NIL) + { + *target++ = Function(*source++); + count++; + } + return count; +} + +#endif + +/** + Search for a substring in a string. + + @param string String to be searched. + @param substring String to be found. + @return Pointer to first occurrence of @p substring in @p string, or NULL + if no match was found. +*/ +#if defined(TRIO_FUNC_SUBSTRING) + +TRIO_PUBLIC_STRING char * +trio_substring +TRIO_ARGS2((string, substring), + TRIO_CONST char *string, + TRIO_CONST char *substring) +{ + assert(string); + assert(substring); + + return strstr(string, substring); +} + +#endif + +/** + Search for a substring in the first @p max characters of a string. + + @param string String to be searched. + @param max Maximum characters to be searched. + @param substring String to be found. + @return Pointer to first occurrence of @p substring in @p string, or NULL + if no match was found. +*/ +#if defined(TRIO_FUNC_SUBSTRING_MAX) + +TRIO_PUBLIC_STRING char * +trio_substring_max +TRIO_ARGS3((string, max, substring), + TRIO_CONST char *string, + size_t max, + TRIO_CONST char *substring) +{ + size_t count; + size_t size; + char *result = NULL; + + assert(string); + assert(substring); + + size = trio_length(substring); + if (size <= max) + { + for (count = 0; count <= max - size; count++) + { + if (trio_equal_max(substring, size, &string[count])) + { + result = (char *)&string[count]; + break; + } + } + } + return result; +} + +#endif + +/** + Tokenize string. + + @param string String to be tokenized. + @param delimiters String containing list of delimiting characters. + @return Start of new token. + + @warning @p string will be destroyed. +*/ +#if defined(TRIO_FUNC_TOKENIZE) + +TRIO_PUBLIC_STRING char * +trio_tokenize +TRIO_ARGS2((string, delimiters), + char *string, + TRIO_CONST char *delimiters) +{ + assert(delimiters); + + return strtok(string, delimiters); +} + +#endif + +/** + Convert string to floating-point number. + + @param source String to be converted. + @param endp Pointer to end of the converted string. + @return A floating-point number. + + The following Extended Backus-Naur form is used + @verbatim + double ::= [ ] + ( | + | + ) + [ [ ] ] + number ::= 1*( ) + digit ::= ( '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ) + exponential ::= ( 'e' | 'E' ) + sign ::= ( '-' | '+' ) + decimal_point ::= '.' + @endverbatim +*/ +#if defined(TRIO_FUNC_TO_LONG_DOUBLE) + +/* FIXME: Add EBNF for hex-floats */ +TRIO_PUBLIC_STRING trio_long_double_t +trio_to_long_double +TRIO_ARGS2((source, endp), + TRIO_CONST char *source, + char **endp) +{ +# if defined(USE_STRTOLD) + return strtold(source, endp); +# else + int isNegative = FALSE; + int isExponentNegative = FALSE; + trio_long_double_t integer = 0.0; + trio_long_double_t fraction = 0.0; + unsigned long exponent = 0; + trio_long_double_t base; + trio_long_double_t fracdiv = 1.0; + trio_long_double_t value = 0.0; + + /* First try hex-floats */ + if ((source[0] == '0') && ((source[1] == 'x') || (source[1] == 'X'))) + { + base = 16.0; + source += 2; + while (isxdigit((int)*source)) + { + integer *= base; + integer += (isdigit((int)*source) + ? (*source - '0') + : 10 + (internal_to_upper((int)*source) - 'A')); + source++; + } + if (*source == '.') + { + source++; + while (isxdigit((int)*source)) + { + fracdiv /= base; + fraction += fracdiv * (isdigit((int)*source) + ? (*source - '0') + : 10 + (internal_to_upper((int)*source) - 'A')); + source++; + } + if ((*source == 'p') || (*source == 'P')) + { + source++; + if ((*source == '+') || (*source == '-')) + { + isExponentNegative = (*source == '-'); + source++; + } + while (isdigit((int)*source)) + { + exponent *= 10; + exponent += (*source - '0'); + source++; + } + } + } + /* For later use with exponent */ + base = 2.0; + } + else /* Then try normal decimal floats */ + { + base = 10.0; + isNegative = (*source == '-'); + /* Skip sign */ + if ((*source == '+') || (*source == '-')) + source++; + + /* Integer part */ + while (isdigit((int)*source)) + { + integer *= base; + integer += (*source - '0'); + source++; + } + + if (*source == '.') + { + source++; /* skip decimal point */ + while (isdigit((int)*source)) + { + fracdiv /= base; + fraction += (*source - '0') * fracdiv; + source++; + } + } + if ((*source == 'e') + || (*source == 'E') +# if TRIO_MICROSOFT + || (*source == 'd') + || (*source == 'D') +# endif + ) + { + source++; /* Skip exponential indicator */ + isExponentNegative = (*source == '-'); + if ((*source == '+') || (*source == '-')) + source++; + while (isdigit((int)*source)) + { + exponent *= (int)base; + exponent += (*source - '0'); + source++; + } + } + } + + value = integer + fraction; + if (exponent != 0) + { + if (isExponentNegative) + value /= trio_powl(base, (trio_long_double_t)exponent); + else + value *= trio_powl(base, (trio_long_double_t)exponent); + } + if (isNegative) + value = -value; + + if (endp) + *endp = (char *)source; + return value; +# endif +} + +#endif + +/** + Convert string to floating-point number. + + @param source String to be converted. + @param endp Pointer to end of the converted string. + @return A floating-point number. + + See @ref trio_to_long_double. +*/ +#if defined(TRIO_FUNC_TO_DOUBLE) + +TRIO_PUBLIC_STRING double +trio_to_double +TRIO_ARGS2((source, endp), + TRIO_CONST char *source, + char **endp) +{ +#if defined(USE_STRTOD) + return strtod(source, endp); +#else + return (double)trio_to_long_double(source, endp); +#endif +} + +#endif + +/** + Convert string to floating-point number. + + @param source String to be converted. + @param endp Pointer to end of the converted string. + @return A floating-point number. + + See @ref trio_to_long_double. +*/ +#if defined(TRIO_FUNC_TO_FLOAT) + +TRIO_PUBLIC_STRING float +trio_to_float +TRIO_ARGS2((source, endp), + TRIO_CONST char *source, + char **endp) +{ +# if defined(USE_STRTOF) + return strtof(source, endp); +# else + return (float)trio_to_long_double(source, endp); +# endif +} + +#endif + +/** + Convert string to signed integer. + + @param string String to be converted. + @param endp Pointer to end of converted string. + @param base Radix number of number. +*/ +#if defined(TRIO_FUNC_TO_LONG) + +TRIO_PUBLIC_STRING long +trio_to_long +TRIO_ARGS3((string, endp, base), + TRIO_CONST char *string, + char **endp, + int base) +{ + assert(string); + assert((base >= 2) && (base <= 36)); + + return strtol(string, endp, base); +} + +#endif + +/** + Convert one alphabetic letter to lower-case. + + @param source The letter to be converted. + @return The converted letter. +*/ +#if defined(TRIO_FUNC_TO_LOWER) + +TRIO_PUBLIC_STRING int +trio_to_lower +TRIO_ARGS1((source), + int source) +{ +# if defined(HAVE_TOLOWER) + + return tolower(source); + +# else + + /* Does not handle locales or non-contiguous alphabetic characters */ + return ((source >= (int)'A') && (source <= (int)'Z')) + ? source - 'A' + 'a' + : source; + +# endif +} + +#endif + +/** + Convert string to unsigned integer. + + @param string String to be converted. + @param endp Pointer to end of converted string. + @param base Radix number of number. +*/ +#if defined(TRIO_FUNC_TO_UNSIGNED_LONG) + +TRIO_PUBLIC_STRING unsigned long +trio_to_unsigned_long +TRIO_ARGS3((string, endp, base), + TRIO_CONST char *string, + char **endp, + int base) +{ + assert(string); + assert((base >= 2) && (base <= 36)); + + return strtoul(string, endp, base); +} + +#endif + +/** + Convert one alphabetic letter to upper-case. + + @param source The letter to be converted. + @return The converted letter. +*/ +#if defined(TRIO_FUNC_TO_UPPER) + +TRIO_PUBLIC_STRING int +trio_to_upper +TRIO_ARGS1((source), + int source) +{ + return internal_to_upper(source); +} + +#endif + +/** + Convert the alphabetic letters in the string to upper-case. + + @param target The string to be converted. + @return The number of processed characters (converted or not). +*/ +#if defined(TRIO_FUNC_UPPER) + +TRIO_PUBLIC_STRING int +trio_upper +TRIO_ARGS1((target), + char *target) +{ + assert(target); + + return trio_span_function(target, target, internal_to_upper); +} + +#endif + +/** @} End of StaticStrings */ + + +/************************************************************************* + * Dynamic String Functions + */ + +#if defined(TRIO_DOCUMENTATION) +# include "doc/doc_dynamic.h" +#endif +/** @addtogroup DynamicStrings + @{ +*/ + +/** + Create a new dynamic string. + + @param initial_size Initial size of the buffer. + @return Newly allocated dynamic string, or NULL if memory allocation failed. +*/ +#if defined(TRIO_FUNC_STRING_CREATE) + +TRIO_PUBLIC_STRING trio_string_t * +trio_string_create +TRIO_ARGS1((initial_size), + int initial_size) +{ + trio_string_t *self; + + self = internal_string_alloc(); + if (self) + { + if (internal_string_grow(self, + (size_t)((initial_size > 0) ? initial_size : 1))) + { + self->content[0] = (char)0; + self->allocated = initial_size; + } + else + { + trio_string_destroy(self); + self = NULL; + } + } + return self; +} + +#endif + +/** + Deallocate the dynamic string and its contents. + + @param self Dynamic string +*/ +#if defined(TRIO_FUNC_STRING_DESTROY) + +TRIO_PUBLIC_STRING void +trio_string_destroy +TRIO_ARGS1((self), + trio_string_t *self) +{ + assert(self); + + if (self) + { + trio_destroy(self->content); + TRIO_FREE(self); + } +} + +#endif + +/** + Get a pointer to the content. + + @param self Dynamic string. + @param offset Offset into content. + @return Pointer to the content. + + @p Offset can be zero, positive, or negative. If @p offset is zero, + then the start of the content will be returned. If @p offset is positive, + then a pointer to @p offset number of characters from the beginning of the + content is returned. If @p offset is negative, then a pointer to @p offset + number of characters from the ending of the string, starting at the + terminating zero, is returned. +*/ +#if defined(TRIO_FUNC_STRING_GET) + +TRIO_PUBLIC_STRING char * +trio_string_get +TRIO_ARGS2((self, offset), + trio_string_t *self, + int offset) +{ + char *result = NULL; + + assert(self); + + if (self->content != NULL) + { + if (self->length == 0) + { + (void)trio_string_length(self); + } + if (offset >= 0) + { + if (offset > (int)self->length) + { + offset = self->length; + } + } + else + { + offset += self->length + 1; + if (offset < 0) + { + offset = 0; + } + } + result = &(self->content[offset]); + } + return result; +} + +#endif + +/** + Extract the content. + + @param self Dynamic String + @return Content of dynamic string. + + The content is removed from the dynamic string. This enables destruction + of the dynamic string without deallocation of the content. +*/ +#if defined(TRIO_FUNC_STRING_EXTRACT) + +TRIO_PUBLIC_STRING char * +trio_string_extract +TRIO_ARGS1((self), + trio_string_t *self) +{ + char *result; + + assert(self); + + result = self->content; + /* FIXME: Allocate new empty buffer? */ + self->content = NULL; + self->length = self->allocated = 0; + return result; +} + +#endif + +/** + Set the content of the dynamic string. + + @param self Dynamic String + @param buffer The new content. + + Sets the content of the dynamic string to a copy @p buffer. + An existing content will be deallocated first, if necessary. + + @remark + This function will make a copy of @p buffer. + You are responsible for deallocating @p buffer yourself. +*/ +#if defined(TRIO_FUNC_XSTRING_SET) + +TRIO_PUBLIC_STRING void +trio_xstring_set +TRIO_ARGS2((self, buffer), + trio_string_t *self, + char *buffer) +{ + assert(self); + + trio_destroy(self->content); + self->content = trio_duplicate(buffer); +} + +#endif + +/* + * trio_string_size + */ +#if defined(TRIO_FUNC_STRING_SIZE) + +TRIO_PUBLIC_STRING int +trio_string_size +TRIO_ARGS1((self), + trio_string_t *self) +{ + assert(self); + + return self->allocated; +} + +#endif + +/* + * trio_string_terminate + */ +#if defined(TRIO_FUNC_STRING_TERMINATE) + +TRIO_PUBLIC_STRING void +trio_string_terminate +TRIO_ARGS1((self), + trio_string_t *self) +{ + trio_xstring_append_char(self, 0); +} + +#endif + +/** + Append the second string to the first. + + @param self Dynamic string to be modified. + @param other Dynamic string to copy from. + @return Boolean value indicating success or failure. +*/ +#if defined(TRIO_FUNC_STRING_APPEND) + +TRIO_PUBLIC_STRING int +trio_string_append +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + size_t length; + + assert(self); + assert(other); + + length = self->length + other->length; + if (!internal_string_grow_to(self, length)) + goto error; + trio_copy(&self->content[self->length], other->content); + self->length = length; + return TRUE; + + error: + return FALSE; +} + +#endif + + +/* + * trio_xstring_append + */ +#if defined(TRIO_FUNC_XSTRING_APPEND) + +TRIO_PUBLIC_STRING int +trio_xstring_append +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + size_t length; + + assert(self); + assert(other); + + length = self->length + trio_length(other); + if (!internal_string_grow_to(self, length)) + goto error; + trio_copy(&self->content[self->length], other); + self->length = length; + return TRUE; + + error: + return FALSE; +} + +#endif + +/* + * trio_xstring_append_char + */ +#if defined(TRIO_FUNC_XSTRING_APPEND_CHAR) + +TRIO_PUBLIC_STRING int +trio_xstring_append_char +TRIO_ARGS2((self, character), + trio_string_t *self, + char character) +{ + assert(self); + + if ((int)self->length >= trio_string_size(self)) + { + if (!internal_string_grow(self, 0)) + goto error; + } + self->content[self->length] = character; + self->length++; + return TRUE; + + error: + return FALSE; +} + +#endif + +/* + * trio_xstring_append_max + */ +#if defined(TRIO_FUNC_XSTRING_APPEND_MAX) + +TRIO_PUBLIC_STRING int +trio_xstring_append_max +TRIO_ARGS3((self, other, max), + trio_string_t *self, + TRIO_CONST char *other, + size_t max) +{ + size_t length; + + assert(self); + assert(other); + + length = self->length + trio_length_max(other, max); + if (!internal_string_grow_to(self, length)) + goto error; + + /* + * Pass max + 1 since trio_copy_max copies one character less than + * this from the source to make room for a terminating zero. + */ + trio_copy_max(&self->content[self->length], max + 1, other); + self->length = length; + return TRUE; + + error: + return FALSE; +} + +#endif + +/** + Search for the first occurrence of second parameter in the first. + + @param self Dynamic string to be modified. + @param other Dynamic string to copy from. + @return Boolean value indicating success or failure. +*/ +#if defined(TRIO_FUNC_STRING_CONTAINS) + +TRIO_PUBLIC_STRING int +trio_string_contains +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_contains(self->content, other->content); +} + +#endif + +/* + * trio_xstring_contains + */ +#if defined(TRIO_FUNC_XSTRING_CONTAINS) + +TRIO_PUBLIC_STRING int +trio_xstring_contains +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_contains(self->content, other); +} + +#endif + +/* + * trio_string_copy + */ +#if defined(TRIO_FUNC_STRING_COPY) + +TRIO_PUBLIC_STRING int +trio_string_copy +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + self->length = 0; + return trio_string_append(self, other); +} + +#endif + + +/* + * trio_xstring_copy + */ +#if defined(TRIO_FUNC_XSTRING_COPY) + +TRIO_PUBLIC_STRING int +trio_xstring_copy +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + self->length = 0; + return trio_xstring_append(self, other); +} + +#endif + +/* + * trio_string_duplicate + */ +#if defined(TRIO_FUNC_STRING_DUPLICATE) + +TRIO_PUBLIC_STRING trio_string_t * +trio_string_duplicate +TRIO_ARGS1((other), + trio_string_t *other) +{ + trio_string_t *self; + + assert(other); + + self = internal_string_alloc(); + if (self) + { + self->content = internal_duplicate_max(other->content, other->length); + if (self->content) + { + self->length = other->length; + self->allocated = self->length + 1; + } + else + { + self->length = self->allocated = 0; + } + } + return self; +} + +#endif + +/* + * trio_xstring_duplicate + */ +#if defined(TRIO_FUNC_XSTRING_DUPLICATE) + +TRIO_PUBLIC_STRING trio_string_t * +trio_xstring_duplicate +TRIO_ARGS1((other), + TRIO_CONST char *other) +{ + trio_string_t *self; + + assert(other); + + self = internal_string_alloc(); + if (self) + { + self->content = internal_duplicate_max(other, trio_length(other)); + if (self->content) + { + self->length = trio_length(self->content); + self->allocated = self->length + 1; + } + else + { + self->length = self->allocated = 0; + } + } + return self; +} + +#endif + +/* + * trio_string_equal + */ +#if defined(TRIO_FUNC_STRING_EQUAL) + +TRIO_PUBLIC_STRING int +trio_string_equal +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_equal(self->content, other->content); +} + +#endif + + +/* + * trio_xstring_equal + */ +#if defined(TRIO_FUNC_XSTRING_EQUAL) + +TRIO_PUBLIC_STRING int +trio_xstring_equal +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_equal(self->content, other); +} + +#endif + +/* + * trio_string_equal_max + */ +#if defined(TRIO_FUNC_STRING_EQUAL_MAX) + +TRIO_PUBLIC_STRING int +trio_string_equal_max +TRIO_ARGS3((self, max, other), + trio_string_t *self, + size_t max, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_equal_max(self->content, max, other->content); +} +#endif + +/* + * trio_xstring_equal_max + */ +#if defined(TRIO_FUNC_XSTRING_EQUAL_MAX) + +TRIO_PUBLIC_STRING int +trio_xstring_equal_max +TRIO_ARGS3((self, max, other), + trio_string_t *self, + size_t max, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_equal_max(self->content, max, other); +} + +#endif + +/* + * trio_string_equal_case + */ +#if defined(TRIO_FUNC_STRING_EQUAL_CASE) + +TRIO_PUBLIC_STRING int +trio_string_equal_case +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_equal_case(self->content, other->content); +} + +#endif + +/* + * trio_xstring_equal_case + */ +#if defined(TRIO_FUNC_XSTRING_EQUAL_CASE) + +TRIO_PUBLIC_STRING int +trio_xstring_equal_case +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_equal_case(self->content, other); +} + +#endif + +/* + * trio_string_equal_case_max + */ +#if defined(TRIO_FUNC_STRING_EQUAL_CASE_MAX) + +TRIO_PUBLIC_STRING int +trio_string_equal_case_max +TRIO_ARGS3((self, max, other), + trio_string_t *self, + size_t max, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_equal_case_max(self->content, max, other->content); +} + +#endif + +/* + * trio_xstring_equal_case_max + */ +#if defined(TRIO_FUNC_XSTRING_EQUAL_CASE_MAX) + +TRIO_PUBLIC_STRING int +trio_xstring_equal_case_max +TRIO_ARGS3((self, max, other), + trio_string_t *self, + size_t max, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_equal_case_max(self->content, max, other); +} + +#endif + +/* + * trio_string_format_data_max + */ +#if defined(TRIO_FUNC_STRING_FORMAT_DATE_MAX) + +TRIO_PUBLIC_STRING size_t +trio_string_format_date_max +TRIO_ARGS4((self, max, format, datetime), + trio_string_t *self, + size_t max, + TRIO_CONST char *format, + TRIO_CONST struct tm *datetime) +{ + assert(self); + + return trio_format_date_max(self->content, max, format, datetime); +} + +#endif + +/* + * trio_string_index + */ +#if defined(TRIO_FUNC_STRING_INDEX) + +TRIO_PUBLIC_STRING char * +trio_string_index +TRIO_ARGS2((self, character), + trio_string_t *self, + int character) +{ + assert(self); + + return trio_index(self->content, character); +} + +#endif + +/* + * trio_string_index_last + */ +#if defined(TRIO_FUNC_STRING_INDEX_LAST) + +TRIO_PUBLIC_STRING char * +trio_string_index_last +TRIO_ARGS2((self, character), + trio_string_t *self, + int character) +{ + assert(self); + + return trio_index_last(self->content, character); +} + +#endif + +/* + * trio_string_length + */ +#if defined(TRIO_FUNC_STRING_LENGTH) + +TRIO_PUBLIC_STRING int +trio_string_length +TRIO_ARGS1((self), + trio_string_t *self) +{ + assert(self); + + if (self->length == 0) + { + self->length = trio_length(self->content); + } + return self->length; +} + +#endif + +/* + * trio_string_lower + */ +#if defined(TRIO_FUNC_STRING_LOWER) + +TRIO_PUBLIC_STRING int +trio_string_lower +TRIO_ARGS1((self), + trio_string_t *self) +{ + assert(self); + + return trio_lower(self->content); +} + +#endif + +/* + * trio_string_match + */ +#if defined(TRIO_FUNC_STRING_MATCH) + +TRIO_PUBLIC_STRING int +trio_string_match +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_match(self->content, other->content); +} + +#endif + +/* + * trio_xstring_match + */ +#if defined(TRIO_FUNC_XSTRING_MATCH) + +TRIO_PUBLIC_STRING int +trio_xstring_match +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_match(self->content, other); +} + +#endif + +/* + * trio_string_match_case + */ +#if defined(TRIO_FUNC_STRING_MATCH_CASE) + +TRIO_PUBLIC_STRING int +trio_string_match_case +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_match_case(self->content, other->content); +} + +#endif + +/* + * trio_xstring_match_case + */ +#if defined(TRIO_FUNC_XSTRING_MATCH_CASE) + +TRIO_PUBLIC_STRING int +trio_xstring_match_case +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_match_case(self->content, other); +} + +#endif + +/* + * trio_string_substring + */ +#if defined(TRIO_FUNC_STRING_SUBSTRING) + +TRIO_PUBLIC_STRING char * +trio_string_substring +TRIO_ARGS2((self, other), + trio_string_t *self, + trio_string_t *other) +{ + assert(self); + assert(other); + + return trio_substring(self->content, other->content); +} + +#endif + +/* + * trio_xstring_substring + */ +#if defined(TRIO_FUNC_XSTRING_SUBSTRING) + +TRIO_PUBLIC_STRING char * +trio_xstring_substring +TRIO_ARGS2((self, other), + trio_string_t *self, + TRIO_CONST char *other) +{ + assert(self); + assert(other); + + return trio_substring(self->content, other); +} + +#endif + +/* + * trio_string_upper + */ +#if defined(TRIO_FUNC_STRING_UPPER) + +TRIO_PUBLIC_STRING int +trio_string_upper +TRIO_ARGS1((self), + trio_string_t *self) +{ + assert(self); + + return trio_upper(self->content); +} + +#endif + +/** @} End of DynamicStrings */ diff --git a/libmednahawk/src/types.h b/libmednahawk/src/types.h new file mode 100644 index 0000000000..fd4d43c3c9 --- /dev/null +++ b/libmednahawk/src/types.h @@ -0,0 +1,173 @@ +#ifndef __MDFN_TYPES +#define __MDFN_TYPES + +// Make sure this file is included BEFORE a few common standard C header files(stdio.h, errno.h, math.h, AND OTHERS, but this is not an exhaustive check, nor +// should it be), so that any defines in config.h that change header file behavior will work properly. +#if defined(EOF) || defined(EACCES) || defined(F_LOCK) || defined(NULL) || defined(O_APPEND) || defined(M_LOG2E) + #error "Wrong include order for types.h" +#endif + +// Yes, yes, I know: There's a better place for including config.h than here, but I'm tired, and this should work fine. :b +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#if HAVE_MKDIR + #if MKDIR_TAKES_ONE_ARG + #define MDFN_mkdir(a, b) mkdir(a) + #else + #define MDFN_mkdir(a, b) mkdir(a, b) + #endif +#else + #if HAVE__MKDIR + /* Plain Win32 */ + #define MDFN_mkdir(a, b) _mkdir(a) + #else + #error "Don't know how to create a directory on this system." + #endif +#endif + +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; + +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; + + +#if !defined(HAVE_NATIVE64BIT) && SIZEOF_VOID_P >= 8 +#define HAVE_NATIVE64BIT 1 +#endif + +#ifdef __GNUC__ + + #define INLINE inline __attribute__((always_inline)) + #define NO_INLINE __attribute__((noinline)) + + #if defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386) + #define MDFN_FASTCALL __attribute__((fastcall)) + #else + #define MDFN_FASTCALL + #endif + + #define MDFN_ALIGN(n) __attribute__ ((aligned (n))) + #define MDFN_FORMATSTR(a,b,c) __attribute__ ((format (a, b, c))); + #define MDFN_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) + +#elif defined(_MSC_VER) + + #define INLINE inline + #define NO_INLINE __declspec(noinline) + + #define MDFN_FASTCALL __fastcall + + #define MDFN_ALIGN(n) __declspec(align(n)) + + #define MDFN_FORMATSTR(a,b,c) + + #define MDFN_WARN_UNUSED_RESULT + +#else + #error "Not compiling with GCC nor MSVC" + #define INLINE inline + #define NO_INLINE + + #define MDFN_FASTCALL + + #define MDFN_ALIGN(n) // hence the #error. + + #define MDFN_FORMATSTR(a,b,c) + + #define MDFN_WARN_UNUSED_RESULT + +#endif + + +typedef struct +{ + union + { + struct + { + #ifdef MSB_FIRST + uint8 High; + uint8 Low; + #else + uint8 Low; + uint8 High; + #endif + } Union8; + uint16 Val16; + }; +} Uuint16; + +typedef struct +{ + union + { + struct + { + #ifdef MSB_FIRST + Uuint16 High; + Uuint16 Low; + #else + Uuint16 Low; + Uuint16 High; + #endif + } Union16; + uint32 Val32; + }; +} Uuint32; + + +#if PSS_STYLE==2 + +#define PSS "\\" +#define MDFN_PS '\\' + +#elif PSS_STYLE==1 + +#define PSS "/" +#define MDFN_PS '/' + +#elif PSS_STYLE==3 + +#define PSS "\\" +#define MDFN_PS '\\' + +#elif PSS_STYLE==4 + +#define PSS ":" +#define MDFN_PS ':' + +#endif + +typedef uint32 UTF32; /* at least 32 bits */ +typedef uint16 UTF16; /* at least 16 bits */ +typedef uint8 UTF8; /* typically 8 bits */ +typedef unsigned char Boolean; /* 0 or 1 */ + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +#undef require +#define require( expr ) assert( expr ) + +#if !defined(MSB_FIRST) && !defined(LSB_FIRST) + #error "Define MSB_FIRST or LSB_FIRST!" +#endif + +#include "error.h" + +#endif diff --git a/libmednahawk/src/vb/Makefile.am b/libmednahawk/src/vb/Makefile.am new file mode 100644 index 0000000000..450a597289 --- /dev/null +++ b/libmednahawk/src/vb/Makefile.am @@ -0,0 +1,10 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ -fno-strict-aliasing +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) + +noinst_LIBRARIES = libvb.a +libvb_a_SOURCES = vb.cpp timer.cpp input.cpp vip.cpp vsu.cpp + +if WANT_DEBUGGER +libvb_a_SOURCES += debug.cpp +endif diff --git a/libmednahawk/src/vb/Makefile.in b/libmednahawk/src/vb/Makefile.in new file mode 100644 index 0000000000..afec5abdd2 --- /dev/null +++ b/libmednahawk/src/vb/Makefile.in @@ -0,0 +1,607 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WANT_DEBUGGER_TRUE@am__append_1 = debug.cpp +subdir = src/vb +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libvb_a_AR = $(AR) $(ARFLAGS) +libvb_a_LIBADD = +am__libvb_a_SOURCES_DIST = vb.cpp timer.cpp input.cpp vip.cpp vsu.cpp \ + debug.cpp +@WANT_DEBUGGER_TRUE@am__objects_1 = debug.$(OBJEXT) +am_libvb_a_OBJECTS = vb.$(OBJEXT) timer.$(OBJEXT) input.$(OBJEXT) \ + vip.$(OBJEXT) vsu.$(OBJEXT) $(am__objects_1) +libvb_a_OBJECTS = $(am_libvb_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libvb_a_SOURCES) +DIST_SOURCES = $(am__libvb_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ -fno-strict-aliasing +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir) +noinst_LIBRARIES = libvb.a +libvb_a_SOURCES = vb.cpp timer.cpp input.cpp vip.cpp vsu.cpp \ + $(am__append_1) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/vb/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/vb/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libvb.a: $(libvb_a_OBJECTS) $(libvb_a_DEPENDENCIES) + $(AM_V_at)-rm -f libvb.a + $(AM_V_AR)$(libvb_a_AR) libvb.a $(libvb_a_OBJECTS) $(libvb_a_LIBADD) + $(AM_V_at)$(RANLIB) libvb.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vip.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vsu.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/vb/debug.cpp b/libmednahawk/src/vb/debug.cpp new file mode 100644 index 0000000000..de6302c889 --- /dev/null +++ b/libmednahawk/src/vb/debug.cpp @@ -0,0 +1,702 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vb.h" +#include +#include +#include +#include +#include + +#include "debug.h" +#include "timer.h" +//#include "input.h" +#include "vip.h" +#include "vsu.h" +#include "timer.h" + +namespace MDFN_IEN_VB +{ + +extern V810 *VB_V810; +extern VSU *VB_VSU; + +static void (*CPUHook)(uint32); +static void (*BPCallB)(uint32 PC) = NULL; +static void (*LogFunc)(const char *, const char *); +bool VB_LoggingOn = FALSE; + +typedef struct __VB_BPOINT { + uint32 A[2]; + int type; + bool logical; +} VB_BPOINT; + +static std::vector BreakPointsPC, BreakPointsRead, BreakPointsWrite; +static bool FoundBPoint = 0; + + +#if 0 +static int BTIndex = 0; +static uint32 BTEntries[16]; + +static void AddBranchTrace(uint32 old_PC, uint32 new_PC, uint32 special) +{ + if(BTEntries[(BTIndex - 1) & 0xF] == new_PC) return; + + BTEntries[BTIndex] = new_PC; + BTIndex = (BTIndex + 1) & 0xF; +} + +std::vector VBDBG_GetBranchTrace(void) +{ + std::vector ret; + + for(int x = 0; x < 16; x++) + { + char *tmps = trio_aprintf("%08X", BTEntries[(x + BTIndex) & 0xF]); + ret.push_back(std::string(tmps)); + free(tmps); + } + return(ret); +} +#endif + +struct BTEntry +{ + uint32 from; + uint32 to; + uint32 branch_count; + uint32 ecode; +}; + +#define NUMBT 24 +static BTEntry BTEntries[NUMBT]; +static int BTIndex = 0; + +static void AddBranchTrace(uint32 from, uint32 to, uint32 ecode) +{ + BTEntry *prevbt = &BTEntries[(BTIndex + NUMBT - 1) % NUMBT]; + + //if(BTEntries[(BTIndex - 1) & 0xF] == PC) return; + + if(prevbt->from == from && prevbt->to == to && prevbt->ecode == ecode && prevbt->branch_count < 0xFFFFFFFF) + prevbt->branch_count++; + else + { + BTEntries[BTIndex].from = from; + BTEntries[BTIndex].to = to; + BTEntries[BTIndex].ecode = ecode; + BTEntries[BTIndex].branch_count = 1; + + BTIndex = (BTIndex + 1) % NUMBT; + } +} + + +std::vector VBDBG_GetBranchTrace(void) +{ + BranchTraceResult tmp; + std::vector ret; + + for(int x = 0; x < NUMBT; x++) + { + const BTEntry *bt = &BTEntries[(x + BTIndex) % NUMBT]; + + tmp.count = bt->branch_count; + trio_snprintf(tmp.from, sizeof(tmp.from), "%08x", bt->from); + trio_snprintf(tmp.to, sizeof(tmp.to), "%08x", bt->to); + + tmp.code[0] = 0; + + switch(bt->ecode) + { + case 0: break; + default: trio_snprintf(tmp.code, sizeof(tmp.code), "e"); + break; + + case 0xFFF0: // Reset + trio_snprintf(tmp.code, sizeof(tmp.code), "R"); + break; + + case 0xFFD0: // NMI + trio_snprintf(tmp.code, sizeof(tmp.code), "NMI"); + break; + + case 0xFFC0: // Address trap + trio_snprintf(tmp.code, sizeof(tmp.code), "ADTR"); + break; + + case 0xFFA0 ... 0xFFBF: // TRAP + trio_snprintf(tmp.code, sizeof(tmp.code), "TRAP"); + break; + + case 0xFF90: // Illegal/invalid instruction code + trio_snprintf(tmp.code, sizeof(tmp.code), "ILL"); + break; + + case 0xFF80: // Zero division + trio_snprintf(tmp.code, sizeof(tmp.code), "ZD"); + break; + + case 0xFF70: + trio_snprintf(tmp.code, sizeof(tmp.code), "FIV"); // FIV + break; + + case 0xFF68: + trio_snprintf(tmp.code, sizeof(tmp.code), "FZD"); // FZD + break; + + case 0xFF64: + trio_snprintf(tmp.code, sizeof(tmp.code), "FOV"); // FOV + break; + + case 0xFF62: + trio_snprintf(tmp.code, sizeof(tmp.code), "FUD"); // FUD + break; + + case 0xFF61: + trio_snprintf(tmp.code, sizeof(tmp.code), "FPR"); // FPR + break; + + case 0xFF60: + trio_snprintf(tmp.code, sizeof(tmp.code), "FRO"); // FRO + break; + + case 0xFE00 ... 0xFEFF: + trio_snprintf(tmp.code, sizeof(tmp.code), "INT%d", (bt->ecode >> 4) & 0xF); + break; + } + + ret.push_back(tmp); + } + return(ret); +} + + +void VBDBG_CheckBP(int type, uint32 address, unsigned int len) +{ + std::vector::iterator bpit, bpit_end; + + if(type == BPOINT_READ || type == BPOINT_IO_READ) + { + bpit = BreakPointsRead.begin(); + bpit_end = BreakPointsRead.end(); + } + else if(type == BPOINT_WRITE || type == BPOINT_IO_WRITE) + { + bpit = BreakPointsWrite.begin(); + bpit_end = BreakPointsWrite.end(); + } + else + return; + + for(; bpit != bpit_end; bpit++) + { + uint32 tmp_address = address; + uint32 tmp_len = len; + + while(tmp_len--) + { + if(tmp_address >= bpit->A[0] && tmp_address <= bpit->A[1]) + { + FoundBPoint = TRUE; + break; + } + tmp_address++; + } + } +} + +static uint16 MDFN_FASTCALL MemPeek8(v810_timestamp_t timestamp, uint32 A) +{ + uint8 ret; + + // TODO: VB_InDebugPeek(implement elsewhere) + VB_InDebugPeek++; + ret = MemRead8(timestamp, A); + VB_InDebugPeek--; + + return(ret); +} + +static uint16 MDFN_FASTCALL MemPeek16(v810_timestamp_t timestamp, uint32 A) +{ + uint16 ret; + + // TODO: VB_InDebugPeek(implement elsewhere) + VB_InDebugPeek++; + ret = MemRead16(timestamp, A); + VB_InDebugPeek--; + + return(ret); +} + +static void CPUHandler(uint32 PC) +{ + std::vector::iterator bpit; + + // FIXME/TODO: Call ForceEventUpdates() somewhere + + for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++) + { + if(PC >= bpit->A[0] && PC <= bpit->A[1]) + { + FoundBPoint = TRUE; + break; + } + } + VB_V810->CheckBreakpoints(VBDBG_CheckBP, MemPeek16, NULL); + + if(FoundBPoint) + { + BPCallB(PC); + FoundBPoint = 0; + } + + if(CPUHook) + CPUHook(PC); +} + +static void RedoCPUHook(void) +{ + bool HappyTest; + + HappyTest = VB_LoggingOn || BreakPointsPC.size() || BreakPointsRead.size() || BreakPointsWrite.size(); + + void (*cpuh)(uint32); + + cpuh = HappyTest ? CPUHandler : CPUHook; + + VB_V810->SetCPUHook(cpuh, cpuh ? AddBranchTrace : NULL); +} + +void VBDBG_FlushBreakPoints(int type) +{ + std::vector::iterator bpit; + + if(type == BPOINT_READ) + BreakPointsRead.clear(); + else if(type == BPOINT_WRITE) + BreakPointsWrite.clear(); + else if(type == BPOINT_PC) + BreakPointsPC.clear(); + + RedoCPUHook(); +} + +void VBDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) +{ + VB_BPOINT tmp; + + tmp.A[0] = A1; + tmp.A[1] = A2; + tmp.type = type; + + if(type == BPOINT_READ) + BreakPointsRead.push_back(tmp); + else if(type == BPOINT_WRITE) + BreakPointsWrite.push_back(tmp); + else if(type == BPOINT_PC) + BreakPointsPC.push_back(tmp); + + RedoCPUHook(); +} + +static uint16 dis_readhw(uint32 A) +{ + int32 timestamp = 0; + return(MemPeek16(timestamp, A)); +} + +void VBDBG_Disassemble(uint32 &a, uint32 SpecialA, char *TextBuf) +{ + return(v810_dis(a, 1, TextBuf, dis_readhw)); +} + +uint32 VBDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical) +{ + uint32 ret = 0; + int32 ws = 0; + + for(unsigned int i = 0; i < bsize; i++) + { + A &= 0xFFFFFFFF; + //ret |= mem_peekbyte(A, ws) << (i * 8); + ret |= MemRead8(ws, A) << (i * 8); + A++; + } + + return(ret); +} + +static void GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + while(Length--) + { + *Buffer = MemPeek8(0, Address); + + Address++; + Buffer++; + } + } + else if(!strncmp(name, "vsuwd", 5)) + { + const unsigned int which = name[5] - '0'; + + while(Length--) + { + *Buffer = VB_VSU->PeekWave(which, Address); + + Address++; + Buffer++; + } + } +} + +static void PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "cpu")) + { + while(Length--) + { + int32 dummy_ts = 0; + + MemWrite8(dummy_ts, Address, *Buffer); + + Address++; + Buffer++; + } + } + else if(!strncmp(name, "vsuwd", 5)) + { + const unsigned int which = name[5] - '0'; + + while(Length--) + { + VB_VSU->PokeWave(which, Address, *Buffer); + + Address++; + Buffer++; + } + } +} + +uint32 VBDBG_GetRegister(const std::string &name, std::string *special) +{ + if(name == "PC") + { + return(VB_V810->GetPC()); + } + const char *thestring = name.c_str(); + + if(!strncmp(thestring, "PR", 2)) + { + return(VB_V810->GetPR(atoi(thestring + 2))); + } + else if(!strcmp(thestring, "HSP")) + return(VB_V810->GetPR(2)); + else if(!strcmp(thestring, "SP")) + return(VB_V810->GetPR(3)); + else if(!strcmp(thestring, "GP")) + return(VB_V810->GetPR(4)); + else if(!strcmp(thestring, "TP")) + return(VB_V810->GetPR(5)); + else if(!strcmp(thestring, "LP")) + return(VB_V810->GetPR(31)); + else if(!strcmp(thestring, "TStamp")) + return(VB_V810->v810_timestamp); + else if(!strncmp(thestring, "SR", 2)) + { + int which_one = atoi(thestring + 2); + uint32 val = VB_V810->GetSR(which_one); + + if(special && which_one == PSW) + { + char buf[256]; + snprintf(buf, 256, "Z: %d, S: %d, OV: %d, CY: %d, ID: %d, AE: %d, EP: %d, NP: %d, IA: %2d", + (int)(bool)(val & PSW_Z), (int)(bool)(val & PSW_S), (int)(bool)(val & PSW_OV), (int)(bool)(val & PSW_CY), + (int)(bool)(val & PSW_ID), (int)(bool)(val & PSW_AE), (int)(bool)(val & PSW_EP), (int)(bool)(val & PSW_NP), + (val & PSW_IA) >> 16); + *special = std::string(buf); + } + return(val); + } + uint32 val = 0; + + return(val); +} + +void VBDBG_SetRegister(const std::string &name, uint32 value) +{ + if(name == "PC") + { + VB_V810->SetPC(value & ~1); + return; + } + + const char *thestring = name.c_str(); + + if(!strncmp(thestring, "PR", 2)) + { + VB_V810->SetPR(atoi(thestring + 2), value); + } + else if(!strcmp(thestring, "HSP")) + VB_V810->SetPR(2, value); + else if(!strcmp(thestring, "SP")) + VB_V810->SetPR(3, value); + else if(!strcmp(thestring, "GP")) + VB_V810->SetPR(4, value); + else if(!strcmp(thestring, "TP")) + VB_V810->SetPR(5, value); + else if(!strcmp(thestring, "LP")) + VB_V810->SetPR(31, value); + else if(!strncmp(thestring, "SR", 2)) + { + VB_V810->SetSR(atoi(thestring + 2), value); + } +} + +void VBDBG_SetCPUCallback(void (*callb)(uint32 PC)) +{ + CPUHook = callb; + RedoCPUHook(); +} + +void VBDBG_SetBPCallback(void (*callb)(uint32 PC)) +{ + BPCallB = callb; +} + +void VBDBG_DoLog(const char *type, const char *format, ...) +{ + if(LogFunc) + { + char *temp; + + va_list ap; + va_start(ap, format); + + temp = trio_vaprintf(format, ap); + LogFunc(type, temp); + free(temp); + + va_end(ap); + } +} + +void VBDBG_SetLogFunc(void (*func)(const char *, const char *)) +{ + LogFunc = func; + + VB_LoggingOn = func ? TRUE : FALSE; + + if(VB_LoggingOn) + { + + } + else + { + + } + RedoCPUHook(); +} + +static RegType V810Regs[] = +{ + { 0, "PC", "Program Counter", 4 }, + { 0, "PR1", "Program Register 1", 4 }, + { 0, "HSP", "Program Register 2(Handler Stack Pointer)", 4 }, + { 0, "SP", "Program Register 3(Stack Pointer)", 4 }, + { 0, "GP", "Program Register 4(Global Pointer)", 4 }, + { 0, "TP", "Program Register 5(Text Pointer)", 4 }, + { 0, "PR6", "Program Register 6", 4 }, + { 0, "PR7", "Program Register 7", 4 }, + { 0, "PR8", "Program Register 8", 4 }, + { 0, "PR9", "Program Register 9", 4 }, + { 0, "PR10", "Program Register 10", 4 }, + { 0, "PR11", "Program Register 11", 4 }, + { 0, "PR12", "Program Register 12", 4 }, + { 0, "PR13", "Program Register 13", 4 }, + { 0, "PR14", "Program Register 14", 4 }, + { 0, "PR15", "Program Register 15", 4 }, + { 0, "PR16", "Program Register 16", 4 }, + { 0, "PR17", "Program Register 17", 4 }, + { 0, "PR18", "Program Register 18", 4 }, + { 0, "PR19", "Program Register 19", 4 }, + { 0, "PR20", "Program Register 20", 4 }, + { 0, "PR21", "Program Register 21", 4 }, + { 0, "PR22", "Program Register 22", 4 }, + { 0, "PR23", "Program Register 23", 4 }, + { 0, "PR24", "Program Register 24", 4 }, + { 0, "PR25", "Program Register 25", 4 }, + { 0, "PR26", "Program Register 26(String Dest Bit Offset)", 4 }, + { 0, "PR27", "Program Register 27(String Source Bit Offset)", 4 }, + { 0, "PR28", "Program Register 28(String Length)", 4 }, + { 0, "PR29", "Program Register 29(String Dest)", 4 }, + { 0, "PR30", "Program Register 30(String Source)", 4 }, + { 0, "LP", "Program Register 31(Link Pointer)", 4 }, + { 0, "SR0", "Exception/Interrupt PC", 4 }, + { 0, "SR1", "Exception/Interrupt PSW", 4 }, + { 0, "SR2", "Fatal Error PC", 4 }, + { 0, "SR3", "Fatal Error PSW", 4 }, + { 0, "SR4", "Exception Cause Register", 4 }, + { 0, "SR5", "Program Status Word", 4 }, + { 0, "SR6", "Processor ID Register", 4 }, + { 0, "SR7", "Task Control Word", 4 }, + { 0, "SR24", "Cache Control Word", 4 }, + { 0, "SR25", "Address Trap Register", 4 }, + + //{ 0, "IPEND", "Interrupts Pending", 2 }, + //{ 0, "IMASK", "Interrupt Mask", 2 }, + //{ 0, "TCTRL", "Timer Control", 2 }, + //{ 0, "TPRD", "Timer Period", 2 }, + //{ 0, "TCNTR", "Timer Counter", 3 }, + + { 0, "TStamp", "Timestamp", 3 }, + { 0, "", "", 0 }, +}; + + +static RegGroupType V810RegsGroup = +{ + NULL, + V810Regs, + NULL, + NULL, + VBDBG_GetRegister, + VBDBG_SetRegister, +}; + +static uint32 MISC_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + return(TIMER_GetRegister(id, special, special_len)); +} + +static void MISC_SetRegister(const unsigned int id, const uint32 value) +{ + TIMER_SetRegister(id, value); +} + + +static RegType Regs_Misc[] = +{ + { TIMER_GSREG_TCR, "TCR", "Timer Control Register", 1 }, + { TIMER_GSREG_DIVCOUNTER, "DivCounter", "Timer Clock Divider Counter", 2 }, + { TIMER_GSREG_RELOAD_VALUE, "ReloadValue", "Timer Reload Value", 2 }, + { TIMER_GSREG_COUNTER, "Counter", "Timer Counter Value", 2 }, + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_Misc = +{ + "Misc", + Regs_Misc, + MISC_GetRegister, + MISC_SetRegister +}; + + +static RegType Regs_VIP[] = +{ + { VIP_GSREG_IPENDING, "IPending", "Interrupts Pending", 2 }, + { VIP_GSREG_IENABLE, "IEnable", "Interrupts Enabled", 2 }, + + { VIP_GSREG_DPCTRL, "DPCTRL", "DPCTRL", 2 }, + + { VIP_GSREG_BRTA, "BRTA", "BRTA", 1 }, + { VIP_GSREG_BRTB, "BRTB", "BRTB", 1 }, + { VIP_GSREG_BRTC, "BRTC", "BRTC", 1 }, + { VIP_GSREG_REST, "REST", "REST", 1 }, + { VIP_GSREG_FRMCYC, "FRMCYC", "FRMCYC", 1 }, + { VIP_GSREG_XPCTRL, "XPCTRL", "XPCTRL", 2 }, + + { VIP_GSREG_SPT0, "SPT0", "SPT0", 2 }, + { VIP_GSREG_SPT1, "SPT1", "SPT1", 2 }, + { VIP_GSREG_SPT2, "SPT2", "SPT2", 2 }, + { VIP_GSREG_SPT3, "SPT3", "SPT3", 2 }, + + { VIP_GSREG_GPLT0, "GPLT0", "GPLT0", 1 }, + { VIP_GSREG_GPLT1, "GPLT1", "GPLT1", 1 }, + { VIP_GSREG_GPLT2, "GPLT2", "GPLT2", 1 }, + { VIP_GSREG_GPLT3, "GPLT3", "GPLT3", 1 }, + + { VIP_GSREG_JPLT0, "JPLT0", "JPLT0", 1 }, + { VIP_GSREG_JPLT1, "JPLT1", "JPLT1", 1 }, + { VIP_GSREG_JPLT2, "JPLT2", "JPLT2", 1 }, + { VIP_GSREG_JPLT3, "JPLT3", "JPLT3", 1 }, + + { VIP_GSREG_BKCOL, "BKCOL", "BKCOL", 1 }, + + { 0, "", "", 0 }, +}; + +static RegGroupType RegsGroup_VIP = +{ + "VIP", + Regs_VIP, + VIP_GetRegister, + VIP_SetRegister +}; + + +bool VBDBG_Init(void) +{ + MDFNDBG_AddRegGroup(&V810RegsGroup); + MDFNDBG_AddRegGroup(&RegsGroup_Misc); + MDFNDBG_AddRegGroup(&RegsGroup_VIP); + + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "cpu", "CPU Physical", 32); +// ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "ram", "RAM", 21); + + + for(int x = 0; x < 5; x++) + { + AddressSpaceType newt; + char tmpname[128], tmpinfo[128]; + + trio_snprintf(tmpname, 128, "vsuwd%d", x); + trio_snprintf(tmpinfo, 128, "VSU Wave Data %d", x); + + memset(&newt, 0, sizeof(AddressSpaceType)); + + newt.GetAddressSpaceBytes = GetAddressSpaceBytes; + newt.PutAddressSpaceBytes = PutAddressSpaceBytes; + + newt.name = strdup(tmpname); + newt.long_name = strdup(tmpinfo); + newt.TotalBits = 5; + newt.NP2Size = 0; + newt.IsSegmented = FALSE; + newt.SegmentBits = 0; + newt.OffsetBits = 0; + newt.BitsOverlapped = 0; + + newt.IsWave = TRUE; + newt.WaveFormat = ASPACE_WFMT_UNSIGNED; + newt.WaveBits = 6; + ASpace_Add(newt); //PSG_GetAddressSpaceBytes, PSG_PutAddressSpaceBytes, tmpname, tmpinfo, 5); + } + + + + return(true); +} + +} diff --git a/libmednahawk/src/vb/debug.h b/libmednahawk/src/vb/debug.h new file mode 100644 index 0000000000..b7344b629a --- /dev/null +++ b/libmednahawk/src/vb/debug.h @@ -0,0 +1,33 @@ +#ifndef __VB_DEBUG_H +#define __VB_DEBUG_H + +namespace MDFN_IEN_VB +{ + +void VBDBG_FlushBreakPoints(int type); +void VBDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical); +void VBDBG_Disassemble(uint32 &a, uint32 SpecialA, char *); + +uint32 VBDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical); +uint32 VBDBG_GetRegister(const std::string &name, std::string *special); +void VBDBG_SetRegister(const std::string &name, uint32 value); + +void VBDBG_SetCPUCallback(void (*callb)(uint32 PC)); +void VBDBG_SetBPCallback(void (*callb)(uint32 PC)); + +std::vector VBDBG_GetBranchTrace(void); + +void VBDBG_CheckBP(int type, uint32 address, unsigned int len); + +void VBDBG_SetLogFunc(void (*func)(const char *, const char *)); + +void VBDBG_DoLog(const char *type, const char *format, ...); + + +extern bool VB_LoggingOn; + +bool VBDBG_Init(void); + +}; + +#endif diff --git a/libmednahawk/src/vb/input.cpp b/libmednahawk/src/vb/input.cpp new file mode 100644 index 0000000000..11fd2c87cb --- /dev/null +++ b/libmednahawk/src/vb/input.cpp @@ -0,0 +1,228 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vb.h" +#include "input.h" + +namespace MDFN_IEN_VB +{ +static bool InstantReadHack; + +static bool IntPending; + +static uint8 *data_ptr; + +static uint16 PadData; +static uint16 PadLatched; + +static uint8 SCR; +static uint16 SDR; + +#define SCR_S_ABT_DIS 0x01 +#define SCR_SI_STAT 0x02 +#define SCR_HW_SI 0x04 +#define SCR_SOFT_CLK 0x10 + +#define SCR_PARA_SI 0x20 +#define SCR_K_INT_INH 0x80 + +static uint32 ReadBitPos; +static int32 ReadCounter; + +static v810_timestamp_t last_ts; + +void VBINPUT_Init(void) +{ + InstantReadHack = true; +} + +void VBINPUT_SetInstantReadHack(bool enabled) +{ + InstantReadHack = enabled; +} + + +void VBINPUT_SetInput(int port, const char *type, void *ptr) +{ + data_ptr = (uint8 *)ptr; +} + +uint8 VBINPUT_Read(v810_timestamp_t ×tamp, uint32 A) +{ + uint8 ret = 0; + + + VBINPUT_Update(timestamp); + + //if(((A & 0xFF) == 0x10 || (A & 0xFF) == 0x14)) + // printf("Read %d\n", timestamp); + + //if(((A & 0xFF) == 0x10 || (A & 0xFF) == 0x14) && ReadCounter > 0) + //{ + // printf("Input port read during hardware transfer: %08x %d\n", A, timestamp); + //} + + switch(A & 0xFF) + { + case 0x10: if(InstantReadHack) + ret = PadData; + else + ret = SDR & 0xFF; + break; + + case 0x14: if(InstantReadHack) + ret = PadData >> 8; + else + ret = SDR >> 8; + break; + + case 0x28: ret = SCR | (0x40 | 0x08 | SCR_HW_SI); + if(ReadCounter > 0) + ret |= SCR_SI_STAT; + break; + } + +// printf("Input Read: %08x %02x\n", A, ret); + VB_SetEvent(VB_EVENT_INPUT, (ReadCounter > 0) ? (timestamp + ReadCounter) : VB_EVENT_NONONO); + + return(ret); +} + +void VBINPUT_Write(v810_timestamp_t ×tamp, uint32 A, uint8 V) +{ + VBINPUT_Update(timestamp); + + //printf("Input write: %d, %08x %02x\n", timestamp, A, V); + switch(A & 0xFF) + { + case 0x28: + if((V & SCR_HW_SI) && !(SCR & SCR_S_ABT_DIS) && ReadCounter <= 0) + { + //printf("Start Read: %d\n", timestamp); + PadLatched = PadData; + ReadBitPos = 0; + ReadCounter = 640; + } + + if(V & SCR_S_ABT_DIS) + { + ReadCounter = 0; + ReadBitPos = 0; + } + + if(V & SCR_K_INT_INH) + { + IntPending = false; + VBIRQ_Assert(VBIRQ_SOURCE_INPUT, IntPending); + } + + SCR = V & (0x80 | 0x20 | 0x10 | 1); + break; + } + + VB_SetEvent(VB_EVENT_INPUT, (ReadCounter > 0) ? (timestamp + ReadCounter) : VB_EVENT_NONONO); +} + +void VBINPUT_Frame(void) +{ + PadData = (MDFN_de16lsb(data_ptr) << 2) | 0x2; +} + +v810_timestamp_t VBINPUT_Update(const v810_timestamp_t timestamp) +{ + int32 clocks = timestamp - last_ts; + + if(ReadCounter > 0) + { + ReadCounter -= clocks; + + while(ReadCounter <= 0) + { + SDR &= ~(1 << ReadBitPos); + SDR |= PadLatched & (1 << ReadBitPos); + + ReadBitPos++; + if(ReadBitPos < 16) + ReadCounter += 640; + else + { + //printf("Read End: %d\n", timestamp); + if(!(SCR & SCR_K_INT_INH)) + { + //printf("Input IRQ: %d\n", timestamp); + IntPending = true; + VBIRQ_Assert(VBIRQ_SOURCE_INPUT, IntPending); + } + break; + } + } + + } + + + last_ts = timestamp; + + return((ReadCounter > 0) ? (timestamp + ReadCounter) : VB_EVENT_NONONO); +} + +void VBINPUT_ResetTS(void) +{ + last_ts = 0; +} + +void VBINPUT_Power(void) +{ + last_ts = 0; + PadData = 0; + PadLatched = 0; + SDR = 0; + SCR = 0; + ReadBitPos = 0; + ReadCounter = 0; + IntPending = false; + + VBIRQ_Assert(VBIRQ_SOURCE_INPUT, 0); +} + + + +int VBINPUT_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(PadData), + SFVAR(PadLatched), + SFVAR(SCR), + SFVAR(SDR), + SFVAR(ReadBitPos), + SFVAR(ReadCounter), + SFVAR(IntPending), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPUT"); + + if(load) + { + + } + + return(ret); +} + + +} diff --git a/libmednahawk/src/vb/input.h b/libmednahawk/src/vb/input.h new file mode 100644 index 0000000000..ac3b3b7d3f --- /dev/null +++ b/libmednahawk/src/vb/input.h @@ -0,0 +1,29 @@ +#ifndef __VB_INPUT_H +#define __VB_INPUT_H + +namespace MDFN_IEN_VB +{ + +void VBINPUT_Init(void); +void VBINPUT_SetInstantReadHack(bool); + +void VBINPUT_SetInput(int port, const char *type, void *ptr); + +uint8 VBINPUT_Read(v810_timestamp_t ×tamp, uint32 A); + +void VBINPUT_Write(v810_timestamp_t ×tamp, uint32 A, uint8 V); + +void VBINPUT_Frame(void); +int VBINPUT_StateAction(StateMem *sm, int load, int data_only); + +int32 VBINPUT_Update(const int32 timestamp); +void VBINPUT_ResetTS(void); + + +void VBINPUT_Power(void); + + +int VBINPUT_StateAction(StateMem *sm, int load, int data_only); + +} +#endif diff --git a/libmednahawk/src/vb/timer.cpp b/libmednahawk/src/vb/timer.cpp new file mode 100644 index 0000000000..5eab94fa3a --- /dev/null +++ b/libmednahawk/src/vb/timer.cpp @@ -0,0 +1,254 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vb.h" +#include "timer.h" + +namespace MDFN_IEN_VB +{ + +#define TC_TENABLE 0x01 +#define TC_ZSTAT 0x02 +#define TC_ZSTATCLR 0x04 +#define TC_TIMZINT 0x08 +#define TC_TCLKSEL 0x10 + +static uint8 TimerControl; +static uint16 TimerReloadValue; +static uint16 TimerCounter; +static int32 TimerDivider; +static v810_timestamp_t TimerLastTS; +static bool TimerStatus, TimerStatusShadow; +static bool ReloadPending; + +v810_timestamp_t TIMER_Update(v810_timestamp_t timestamp) +{ + int32 run_time = timestamp - TimerLastTS; + + if(TimerControl & TC_TENABLE) + { + TimerDivider -= run_time; + while(TimerDivider <= 0) + { + if(!TimerCounter || ReloadPending) + { + TimerCounter = TimerReloadValue; + ReloadPending = false; + } + + if(TimerCounter) + TimerCounter--; + + if(!TimerCounter || TimerStatus) + { + TimerStatusShadow = TimerStatus = true; + } + + VBIRQ_Assert(VBIRQ_SOURCE_TIMER, TimerStatusShadow && (TimerControl & TC_TIMZINT)); + TimerDivider += (TimerControl & TC_TCLKSEL) ? 500 : 2000; + } + } + + TimerLastTS = timestamp; + + return((TimerControl & TC_TENABLE) ? (timestamp + TimerDivider) : VB_EVENT_NONONO); +} + +void TIMER_ResetTS(void) +{ + TimerLastTS = 0; +} + +uint8 TIMER_Read(const v810_timestamp_t ×tamp, uint32 A) +{ + uint8 ret = 0; + + //if(A <= 0x1C) + //printf("Read: %d, %08x\n", timestamp, A); + TIMER_Update(timestamp); + + switch(A & 0xFF) + { + case 0x18: ret = TimerCounter; + break; + + case 0x1C: ret = TimerCounter >> 8; + break; + + case 0x20: ret = TimerControl | (0xE0 | TC_ZSTATCLR) | (TimerStatus ? TC_ZSTAT : 0); + break; + + } + + return(ret); +} + +void TIMER_Write(const v810_timestamp_t ×tamp, uint32 A, uint8 V) +{ + if(A & 0x3) + { + puts("HWCtrl Bogus Write?"); + return; + } + + TIMER_Update(timestamp); + + //if((A & 0xFF) <= 0x1C) + //printf("Write: %d, %08x %02x\n", timestamp, A, V); + + switch(A & 0xFF) + { + case 0x18: TimerReloadValue &= 0xFF00; + TimerReloadValue |= V; + ReloadPending = true; + break; + + case 0x1C: TimerReloadValue &= 0x00FF; + TimerReloadValue |= V << 8; + ReloadPending = true; + break; + + case 0x20: if(V & TC_ZSTATCLR) + { + if((TimerControl & TC_TENABLE) && TimerCounter == 0) + { + //puts("Faulty Z-Stat-Clr"); + } + else + { + TimerStatus = false; + } + TimerStatusShadow = false; + } + if((V & TC_TENABLE) && !(TimerControl & TC_TENABLE)) + { + //TimerCounter = TimerReloadValue; + TimerDivider = (V & TC_TCLKSEL) ? 500 : 2000; + } + TimerControl = V & (0x10 | 0x08 | 0x01); + + if(!(TimerControl & TC_TIMZINT)) + TimerStatus = TimerStatusShadow = false; + + VBIRQ_Assert(VBIRQ_SOURCE_TIMER, TimerStatusShadow && (TimerControl & TC_TIMZINT)); + + if(TimerControl & TC_TENABLE) + VB_SetEvent(VB_EVENT_TIMER, timestamp + TimerDivider); + break; + } +} + +void TIMER_Power(void) +{ + TimerLastTS = 0; + + TimerCounter = 0xFFFF; + TimerReloadValue = 0xFFFF; + TimerDivider = 2000; //2150; //2000; + + TimerStatus = false; + TimerStatusShadow = false; + TimerControl = 0; + + ReloadPending = false; + + VBIRQ_Assert(VBIRQ_SOURCE_TIMER, false); +} + +int TIMER_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(TimerCounter), + SFVAR(TimerReloadValue), + SFVAR(TimerDivider), + SFVAR(TimerStatus), + SFVAR(TimerStatusShadow), + SFVAR(TimerControl), + SFVAR(ReloadPending), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "TIMER"); + + if(load) + { + + } + + return(ret); +} + +uint32 TIMER_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 ret = 0xDEADBEEF; + + switch(id) + { + case TIMER_GSREG_TCR: + ret = TimerControl; + if(special) + trio_snprintf(special, special_len, "TEnable: %d, TimZInt: %d, TClkSel: %d(%.3f KHz)", + (int)(bool)(ret & TC_TENABLE), + (int)(bool)(ret & TC_TIMZINT), + (int)(bool)(ret & TC_TCLKSEL), + (double)VB_MASTER_CLOCK / ((ret & TC_TCLKSEL) ? 500 : 2000) / 1000 ); + break; + + case TIMER_GSREG_DIVCOUNTER: + ret = TimerDivider; + break; + + case TIMER_GSREG_RELOAD_VALUE: + ret = TimerReloadValue; + break; + + case TIMER_GSREG_COUNTER: + ret = TimerCounter; + break; + + } + return(ret); +} + +void TIMER_SetRegister(const unsigned int id, const uint32 value) +{ + switch(id) + { + case TIMER_GSREG_TCR: + TimerControl = value & (TC_TENABLE | TC_TIMZINT | TC_TCLKSEL); + break; + + case TIMER_GSREG_DIVCOUNTER: + TimerDivider = value % ((TimerControl & TC_TCLKSEL) ? 500 : 2000); + break; + + case TIMER_GSREG_RELOAD_VALUE: + TimerReloadValue = value; + break; + + case TIMER_GSREG_COUNTER: + TimerCounter = value; + break; + + } + + +} + + +} diff --git a/libmednahawk/src/vb/timer.h b/libmednahawk/src/vb/timer.h new file mode 100644 index 0000000000..266593e581 --- /dev/null +++ b/libmednahawk/src/vb/timer.h @@ -0,0 +1,30 @@ +#ifndef __MDFN_VB_TIMER_H +#define __MDFN_VB_TIMER_H + +namespace MDFN_IEN_VB +{ + +v810_timestamp_t TIMER_Update(v810_timestamp_t timestamp); +void TIMER_ResetTS(void); +uint8 TIMER_Read(const v810_timestamp_t ×tamp, uint32 A); +void TIMER_Write(const v810_timestamp_t ×tamp, uint32 A, uint8 V); + +void TIMER_Power(void); + +int TIMER_StateAction(StateMem *sm, int load, int data_only); + + +enum +{ + TIMER_GSREG_TCR, + TIMER_GSREG_DIVCOUNTER, + TIMER_GSREG_RELOAD_VALUE, + TIMER_GSREG_COUNTER, +}; + +uint32 TIMER_GetRegister(const unsigned int id, char *special, const uint32 special_len); +void TIMER_SetRegister(const unsigned int id, const uint32 value); + +} + +#endif diff --git a/libmednahawk/src/vb/vb.cpp b/libmednahawk/src/vb/vb.cpp new file mode 100644 index 0000000000..46345b3b7e --- /dev/null +++ b/libmednahawk/src/vb/vb.cpp @@ -0,0 +1,1123 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vb.h" +#include "timer.h" +#include "vsu.h" +#include "vip.h" +#ifdef WANT_DEBUGGER +#include "debug.h" +#endif +#include "input.h" +#include "../general.h" +#include "../md5.h" +#include "../mempatcher.h" +#include + +//#define VB_SUPPORT_BIN_EXT // Even with this enabled, any *.bin file loaded must be in the internal database to be recognized as a VB game. + +namespace MDFN_IEN_VB +{ + +enum +{ + ANAGLYPH_PRESET_DISABLED = 0, + ANAGLYPH_PRESET_RED_BLUE, + ANAGLYPH_PRESET_RED_CYAN, + ANAGLYPH_PRESET_RED_ELECTRICCYAN, + ANAGLYPH_PRESET_RED_GREEN, + ANAGLYPH_PRESET_GREEN_MAGENTA, + ANAGLYPH_PRESET_YELLOW_BLUE, +}; + +static const uint32 AnaglyphPreset_Colors[][2] = +{ + { 0, 0 }, + { 0xFF0000, 0x0000FF }, + { 0xFF0000, 0x00B7EB }, + { 0xFF0000, 0x00FFFF }, + { 0xFF0000, 0x00FF00 }, + { 0x00FF00, 0xFF00FF }, + { 0xFFFF00, 0x0000FF }, +}; + + +int32 VB_InDebugPeek; + +static uint32 VB3DMode; + +static Blip_Buffer sbuf[2]; + +static uint8 *WRAM = NULL; + +static uint8 *GPRAM = NULL; +static uint32 GPRAM_Mask; + +static uint8 *GPROM = NULL; +static uint32 GPROM_Mask; + +V810 *VB_V810 = NULL; + +VSU *VB_VSU = NULL; +static uint32 VSU_CycleFix; + +static uint8 WCR; + +static int32 next_vip_ts, next_timer_ts, next_input_ts; + + +static uint32 IRQ_Asserted; + +static INLINE void RecalcIntLevel(void) +{ + int ilevel = -1; + + for(int i = 4; i >= 0; i--) + { + if(IRQ_Asserted & (1 << i)) + { + ilevel = i; + break; + } + } + + VB_V810->SetInt(ilevel); +} + +void VBIRQ_Assert(int source, bool assert) +{ + assert(source >= 0 && source <= 4); + + IRQ_Asserted &= ~(1 << source); + + if(assert) + IRQ_Asserted |= 1 << source; + + RecalcIntLevel(); +} + + + +static uint8 HWCTRL_Read(v810_timestamp_t ×tamp, uint32 A) +{ + uint8 ret = 0; + + if(A & 0x3) + { + puts("HWCtrl Bogus Read?"); + return(ret); + } + + switch(A & 0xFF) + { + default: printf("Unknown HWCTRL Read: %08x\n", A); + break; + + case 0x18: + case 0x1C: + case 0x20: ret = TIMER_Read(timestamp, A); + break; + + case 0x24: ret = WCR | 0xFC; + break; + + case 0x10: + case 0x14: + case 0x28: ret = VBINPUT_Read(timestamp, A); + break; + + } + + return(ret); +} + +static void HWCTRL_Write(v810_timestamp_t ×tamp, uint32 A, uint8 V) +{ + if(A & 0x3) + { + puts("HWCtrl Bogus Write?"); + return; + } + + switch(A & 0xFF) + { + default: printf("Unknown HWCTRL Write: %08x %02x\n", A, V); + break; + + case 0x18: + case 0x1C: + case 0x20: TIMER_Write(timestamp, A, V); + break; + + case 0x24: WCR = V & 0x3; + break; + + case 0x10: + case 0x14: + case 0x28: VBINPUT_Write(timestamp, A, V); + break; + } +} + +uint8 MDFN_FASTCALL MemRead8(v810_timestamp_t ×tamp, uint32 A) +{ + uint8 ret = 0; + A &= (1 << 27) - 1; + + //if((A >> 24) <= 2) + // printf("Read8: %d %08x\n", timestamp, A); + + switch(A >> 24) + { + case 0: ret = VIP_Read8(timestamp, A); + break; + + case 1: break; + + case 2: ret = HWCTRL_Read(timestamp, A); + break; + + case 3: break; + case 4: break; + + case 5: ret = WRAM[A & 0xFFFF]; + break; + + case 6: if(GPRAM) + ret = GPRAM[A & GPRAM_Mask]; + else + printf("GPRAM(Unmapped) Read: %08x\n", A); + break; + + case 7: ret = GPROM[A & GPROM_Mask]; + break; + } + return(ret); +} + +uint16 MDFN_FASTCALL MemRead16(v810_timestamp_t ×tamp, uint32 A) +{ + uint16 ret = 0; + + A &= (1 << 27) - 1; + + //if((A >> 24) <= 2) + // printf("Read16: %d %08x\n", timestamp, A); + + + switch(A >> 24) + { + case 0: ret = VIP_Read16(timestamp, A); + break; + + case 1: break; + + case 2: ret = HWCTRL_Read(timestamp, A); + break; + + case 3: break; + + case 4: break; + + case 5: ret = LoadU16_LE((uint16 *)&WRAM[A & 0xFFFF]); + break; + + case 6: if(GPRAM) + ret = LoadU16_LE((uint16 *)&GPRAM[A & GPRAM_Mask]); + else printf("GPRAM(Unmapped) Read: %08x\n", A); + break; + + case 7: ret = LoadU16_LE((uint16 *)&GPROM[A & GPROM_Mask]); + break; + } + return(ret); +} + +void MDFN_FASTCALL MemWrite8(v810_timestamp_t ×tamp, uint32 A, uint8 V) +{ + A &= (1 << 27) - 1; + + //if((A >> 24) <= 2) + // printf("Write8: %d %08x %02x\n", timestamp, A, V); + + switch(A >> 24) + { + case 0: VIP_Write8(timestamp, A, V); + break; + + case 1: VB_VSU->Write((timestamp + VSU_CycleFix) >> 2, A, V); + break; + + case 2: HWCTRL_Write(timestamp, A, V); + break; + + case 3: break; + + case 4: break; + + case 5: WRAM[A & 0xFFFF] = V; + break; + + case 6: if(GPRAM) + GPRAM[A & GPRAM_Mask] = V; + break; + + case 7: // ROM, no writing allowed! + break; + } +} + +void MDFN_FASTCALL MemWrite16(v810_timestamp_t ×tamp, uint32 A, uint16 V) +{ + A &= (1 << 27) - 1; + + //if((A >> 24) <= 2) + // printf("Write16: %d %08x %04x\n", timestamp, A, V); + + switch(A >> 24) + { + case 0: VIP_Write16(timestamp, A, V); + break; + + case 1: VB_VSU->Write((timestamp + VSU_CycleFix) >> 2, A, V); + break; + + case 2: HWCTRL_Write(timestamp, A, V); + break; + + case 3: break; + + case 4: break; + + case 5: StoreU16_LE((uint16 *)&WRAM[A & 0xFFFF], V); + break; + + case 6: if(GPRAM) + StoreU16_LE((uint16 *)&GPRAM[A & GPRAM_Mask], V); + break; + + case 7: // ROM, no writing allowed! + break; + } +} + +static void FixNonEvents(void) +{ + if(next_vip_ts & 0x40000000) + next_vip_ts = VB_EVENT_NONONO; + + if(next_timer_ts & 0x40000000) + next_timer_ts = VB_EVENT_NONONO; + + if(next_input_ts & 0x40000000) + next_input_ts = VB_EVENT_NONONO; +} + +static void EventReset(void) +{ + next_vip_ts = VB_EVENT_NONONO; + next_timer_ts = VB_EVENT_NONONO; + next_input_ts = VB_EVENT_NONONO; +} + +static INLINE int32 CalcNextTS(void) +{ + int32 next_timestamp = next_vip_ts; + + if(next_timestamp > next_timer_ts) + next_timestamp = next_timer_ts; + + if(next_timestamp > next_input_ts) + next_timestamp = next_input_ts; + + return(next_timestamp); +} + +static void RebaseTS(const v810_timestamp_t timestamp) +{ + //printf("Rebase: %08x %08x %08x\n", timestamp, next_vip_ts, next_timer_ts); + + assert(next_vip_ts > timestamp); + assert(next_timer_ts > timestamp); + assert(next_input_ts > timestamp); + + next_vip_ts -= timestamp; + next_timer_ts -= timestamp; + next_input_ts -= timestamp; +} + +void VB_SetEvent(const int type, const v810_timestamp_t next_timestamp) +{ + //assert(next_timestamp > VB_V810->v810_timestamp); + + if(type == VB_EVENT_VIP) + next_vip_ts = next_timestamp; + else if(type == VB_EVENT_TIMER) + next_timer_ts = next_timestamp; + else if(type == VB_EVENT_INPUT) + next_input_ts = next_timestamp; + + if(next_timestamp < VB_V810->GetEventNT()) + VB_V810->SetEventNT(next_timestamp); +} + + +static int32 MDFN_FASTCALL EventHandler(const v810_timestamp_t timestamp) +{ + if(timestamp >= next_vip_ts) + next_vip_ts = VIP_Update(timestamp); + + if(timestamp >= next_timer_ts) + next_timer_ts = TIMER_Update(timestamp); + + if(timestamp >= next_input_ts) + next_input_ts = VBINPUT_Update(timestamp); + + return(CalcNextTS()); +} + +static void ForceEventUpdates(const v810_timestamp_t timestamp) +{ + next_vip_ts = VIP_Update(timestamp); + next_timer_ts = TIMER_Update(timestamp); + next_input_ts = VBINPUT_Update(timestamp); + + VB_V810->SetEventNT(CalcNextTS()); + //printf("FEU: %d %d %d\n", next_vip_ts, next_timer_ts, next_input_ts); +} + +static void VB_Power(void) +{ + memset(WRAM, 0, 65536); + + VIP_Power(); + VB_VSU->Power(); + TIMER_Power(); + VBINPUT_Power(); + + EventReset(); + IRQ_Asserted = 0; + RecalcIntLevel(); + VB_V810->Reset(); + + VSU_CycleFix = 0; + WCR = 0; + + + ForceEventUpdates(0); //VB_V810->v810_timestamp); +} + +static void SettingChanged(const char *name) +{ + if(!strcasecmp(name, "vb.3dmode")) + { + // FIXME, TODO (complicated) + //VB3DMode = MDFN_GetSettingUI("vb.3dmode"); + //VIP_Set3DMode(VB3DMode); + } + else if(!strcasecmp(name, "vb.disable_parallax")) + { + VIP_SetParallaxDisable(MDFN_GetSettingB("vb.disable_parallax")); + } + else if(!strcasecmp(name, "vb.anaglyph.lcolor") || !strcasecmp(name, "vb.anaglyph.rcolor") || + !strcasecmp(name, "vb.anaglyph.preset") || !strcasecmp(name, "vb.default_color")) + + { + uint32 lcolor = MDFN_GetSettingUI("vb.anaglyph.lcolor"), rcolor = MDFN_GetSettingUI("vb.anaglyph.rcolor"); + int preset = MDFN_GetSettingI("vb.anaglyph.preset"); + + if(preset != ANAGLYPH_PRESET_DISABLED) + { + lcolor = AnaglyphPreset_Colors[preset][0]; + rcolor = AnaglyphPreset_Colors[preset][1]; + } + VIP_SetAnaglyphColors(lcolor, rcolor); + VIP_SetDefaultColor(MDFN_GetSettingUI("vb.default_color")); + } + else if(!strcasecmp(name, "vb.input.instant_read_hack")) + { + VBINPUT_SetInstantReadHack(MDFN_GetSettingB("vb.input.instant_read_hack")); + } + else if(!strcasecmp(name, "vb.instant_display_hack")) + VIP_SetInstantDisplayHack(MDFN_GetSettingB("vb.instant_display_hack")); + else if(!strcasecmp(name, "vb.allow_draw_skip")) + VIP_SetAllowDrawSkip(MDFN_GetSettingB("vb.allow_draw_skip")); + else + abort(); + + +} + +struct VB_HeaderInfo +{ + char game_title[256]; + uint32 game_code; + uint16 manf_code; + uint8 version; +}; + +static void ReadHeader(MDFNFILE *fp, VB_HeaderInfo *hi) +{ + iconv_t sjis_ict = iconv_open("UTF-8", "shift_jis"); + + if(sjis_ict != (iconv_t)-1) + { + char *in_ptr, *out_ptr; + size_t ibl, obl; + + ibl = 20; + obl = sizeof(hi->game_title) - 1; + + in_ptr = (char*)fp->data + (0xFFFFFDE0 & (fp->size - 1)); + out_ptr = hi->game_title; + + iconv(sjis_ict, (ICONV_CONST char **)&in_ptr, &ibl, &out_ptr, &obl); + iconv_close(sjis_ict); + + *out_ptr = 0; + + MDFN_trim(hi->game_title); + } + else + hi->game_title[0] = 0; + + hi->game_code = MDFN_de32lsb(fp->data + (0xFFFFFDFB & (fp->size - 1))); + hi->manf_code = MDFN_de16lsb(fp->data + (0xFFFFFDF9 & (fp->size - 1))); + hi->version = fp->data[0xFFFFFDFF & (fp->size - 1)]; +} + +#ifdef VB_SUPPORT_BIN_EXT +static bool FindGame(MDFNFILE *fp) +{ + static const char *GameNames[] = + { + "POLYGOBLOCK", // 3D Tetris + "BOUND HIGH", + "GALACTIC PINBALL", + "GOLF", + "ï½²ï¾ï½½ï¾ï½³ï½½ ノ ヤカタ", + "JACK BROS", + "MARIO CLASH", + "Mario's Tennis", + "NESTER'S FUNKY BOWLI", + "Panic Bomber", + "REDALARM", + "VB SDガï¾ï¾€ï¾žï¾‘", + "SPACE INVADERS V.C.", + "SPACE SQUASH", + "TELEROBOXER", + "T&EVIRTUALGOLF", + "トビダセ!パニボï¾", + "VERTICAL FORCE", + "VIRTUAL BOWLING", + "VB ワリオラï¾ï¾„゙", + "VIRTUAL FISHING JPN", + "バ-ï¾ï½¬ï¾™LAB", + "VIRTUAL LEAGUE BB", + "バーï¾ï½¬ï¾™ï¾Œï¾Ÿï¾›ï¾”ï½·ï½­ï½³'95", + "Vï½¥TETRIS", + "WATERWORLD", + NULL + }; + VB_HeaderInfo hinfo; + + ReadHeader(fp, &hinfo); + + const char **gni = GameNames; + while(*gni) + { + if(!strcmp(hinfo.game_title, *gni)) + return(true); + gni++; + } + return(false); +} +#endif + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(!strcasecmp(fp->ext, "vb") || !strcasecmp(fp->ext, "vboy")) + return(true); + + #ifdef VB_SUPPORT_BIN_EXT + if(!strcasecmp(fp->ext, "bin") && FindGame(fp)) + return(true); + #endif + + return(false); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + V810_Emu_Mode cpu_mode; + md5_context md5; + + + VB_InDebugPeek = 0; + + cpu_mode = (V810_Emu_Mode)MDFN_GetSettingI("vb.cpu_emulation"); + + if(fp->size != round_up_pow2(fp->size)) + { + puts("VB ROM image size is not a power of 2???"); + return(0); + } + + if(fp->size < 256) + { + puts("VB ROM image size is too small??"); + return(0); + } + + if(fp->size > (1 << 24)) + { + puts("VB ROM image size is too large??"); + return(0); + } + + md5.starts(); + md5.update(fp->data, fp->size); + md5.finish(MDFNGameInfo->MD5); + + VB_HeaderInfo hinfo; + + ReadHeader(fp, &hinfo); + + MDFN_printf(_("Title: %s\n"), hinfo.game_title); + MDFN_printf(_("Game ID Code: %u\n"), hinfo.game_code); + MDFN_printf(_("Manufacturer Code: %d\n"), hinfo.manf_code); + MDFN_printf(_("Version: %u\n"), hinfo.version); + + MDFN_printf(_("ROM: %dKiB\n"), (int)(fp->size / 1024)); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + MDFN_printf("\n"); + + MDFN_printf(_("V810 Emulation Mode: %s\n"), (cpu_mode == V810_EMU_MODE_ACCURATE) ? _("Accurate") : _("Fast")); + + VB_V810 = new V810(); + VB_V810->Init(cpu_mode, true); + + VB_V810->SetMemReadHandlers(MemRead8, MemRead16, NULL); + VB_V810->SetMemWriteHandlers(MemWrite8, MemWrite16, NULL); + + VB_V810->SetIOReadHandlers(MemRead8, MemRead16, NULL); + VB_V810->SetIOWriteHandlers(MemWrite8, MemWrite16, NULL); + + for(int i = 0; i < 256; i++) + { + VB_V810->SetMemReadBus32(i, false); + VB_V810->SetMemWriteBus32(i, false); + } + + std::vector Map_Addresses; + + for(uint64 A = 0; A < 1ULL << 32; A += (1 << 27)) + { + for(uint64 sub_A = 5 << 24; sub_A < (6 << 24); sub_A += 65536) + { + Map_Addresses.push_back(A + sub_A); + } + } + + WRAM = VB_V810->SetFastMap(&Map_Addresses[0], 65536, Map_Addresses.size(), "WRAM"); + Map_Addresses.clear(); + + + // Round up the ROM size to 65536(we mirror it a little later) + GPROM_Mask = (fp->size < 65536) ? (65536 - 1) : (fp->size - 1); + + for(uint64 A = 0; A < 1ULL << 32; A += (1 << 27)) + { + for(uint64 sub_A = 7 << 24; sub_A < (8 << 24); sub_A += GPROM_Mask + 1) + { + Map_Addresses.push_back(A + sub_A); + //printf("%08x\n", (uint32)(A + sub_A)); + } + } + + + GPROM = VB_V810->SetFastMap(&Map_Addresses[0], GPROM_Mask + 1, Map_Addresses.size(), "Cart ROM"); + Map_Addresses.clear(); + + // Mirror ROM images < 64KiB to 64KiB + for(uint64 i = 0; i < 65536; i += fp->size) + { + memcpy(GPROM + i, fp->data, fp->size); + } + + GPRAM_Mask = 0xFFFF; + + for(uint64 A = 0; A < 1ULL << 32; A += (1 << 27)) + { + for(uint64 sub_A = 6 << 24; sub_A < (7 << 24); sub_A += GPRAM_Mask + 1) + { + //printf("GPRAM: %08x\n", A + sub_A); + Map_Addresses.push_back(A + sub_A); + } + } + + + GPRAM = VB_V810->SetFastMap(&Map_Addresses[0], GPRAM_Mask + 1, Map_Addresses.size(), "Cart RAM"); + Map_Addresses.clear(); + + memset(GPRAM, 0, GPRAM_Mask + 1); + + { + gzFile gp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"); + + if(gp) + { + if(gzread(gp, GPRAM, 65536) != 65536) + puts("Error reading GPRAM"); + gzclose(gp); + } + } + + VIP_Init(); + VB_VSU = new VSU(&sbuf[0], &sbuf[1]); + VBINPUT_Init(); + + VB3DMode = MDFN_GetSettingUI("vb.3dmode"); + uint32 prescale = MDFN_GetSettingUI("vb.liprescale"); + uint32 sbs_separation = MDFN_GetSettingUI("vb.sidebyside.separation"); + + VIP_Set3DMode(VB3DMode, MDFN_GetSettingUI("vb.3dreverse"), prescale, sbs_separation); + + + //SettingChanged("vb.3dmode"); + SettingChanged("vb.disable_parallax"); + SettingChanged("vb.anaglyph.lcolor"); + SettingChanged("vb.anaglyph.rcolor"); + SettingChanged("vb.anaglyph.preset"); + SettingChanged("vb.default_color"); + + SettingChanged("vb.instant_display_hack"); + SettingChanged("vb.allow_draw_skip"); + + SettingChanged("vb.input.instant_read_hack"); + + MDFNGameInfo->fps = (int64)20000000 * 65536 * 256 / (259 * 384 * 4); + + + VB_Power(); + + + #ifdef WANT_DEBUGGER + VBDBG_Init(); + #endif + + + MDFNGameInfo->nominal_width = 384; + MDFNGameInfo->nominal_height = 224; + MDFNGameInfo->fb_width = 384; + MDFNGameInfo->fb_height = 224; + + switch(VB3DMode) + { + default: break; + + case VB3DMODE_VLI: + MDFNGameInfo->nominal_width = 768 * prescale; + MDFNGameInfo->nominal_height = 224; + MDFNGameInfo->fb_width = 768 * prescale; + MDFNGameInfo->fb_height = 224; + break; + + case VB3DMODE_HLI: + MDFNGameInfo->nominal_width = 384; + MDFNGameInfo->nominal_height = 448 * prescale; + MDFNGameInfo->fb_width = 384; + MDFNGameInfo->fb_height = 448 * prescale; + break; + + case VB3DMODE_CSCOPE: + MDFNGameInfo->nominal_width = 512; + MDFNGameInfo->nominal_height = 384; + MDFNGameInfo->fb_width = 512; + MDFNGameInfo->fb_height = 384; + break; + + case VB3DMODE_SIDEBYSIDE: + MDFNGameInfo->nominal_width = 384 * 2 + sbs_separation; + MDFNGameInfo->nominal_height = 224; + MDFNGameInfo->fb_width = 384 * 2 + sbs_separation; + MDFNGameInfo->fb_height = 224; + break; + } + MDFNGameInfo->lcm_width = MDFNGameInfo->fb_width; + MDFNGameInfo->lcm_height = MDFNGameInfo->fb_height; + + + MDFNMP_Init(32768, ((uint64)1 << 27) / 32768); + MDFNMP_AddRAM(65536, 5 << 24, WRAM); + if((GPRAM_Mask + 1) >= 32768) + MDFNMP_AddRAM(GPRAM_Mask + 1, 6 << 24, GPRAM); + return(1); +} + +static void CloseGame(void) +{ + // Only save cart RAM if it has been modified. + for(unsigned int i = 0; i < GPRAM_Mask + 1; i++) + { + if(GPRAM[i]) + { + if(!MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, GPRAM, 65536)) + { + + } + break; + } + } + //VIP_Kill(); + + if(VB_VSU) + { + delete VB_VSU; + VB_VSU = NULL; + } + + /* + if(GPRAM) + { + MDFN_free(GPRAM); + GPRAM = NULL; + } + + if(GPROM) + { + MDFN_free(GPROM); + GPROM = NULL; + } + */ + + if(VB_V810) + { + VB_V810->Kill(); + delete VB_V810; + VB_V810 = NULL; + } +} + +void VB_ExitLoop(void) +{ + VB_V810->Exit(); +} + +static void Emulate(EmulateSpecStruct *espec) +{ + v810_timestamp_t v810_timestamp; + + MDFNMP_ApplyPeriodicCheats(); + + VBINPUT_Frame(); + + if(espec->SoundFormatChanged) + { + for(int y = 0; y < 2; y++) + { + sbuf[y].set_sample_rate(espec->SoundRate ? espec->SoundRate : 44100, 50); + sbuf[y].clock_rate((long)(VB_MASTER_CLOCK / 4)); + sbuf[y].bass_freq(20); + } + } + + VIP_StartFrame(espec); + + v810_timestamp = VB_V810->Run(EventHandler); + + FixNonEvents(); + ForceEventUpdates(v810_timestamp); + + VB_VSU->EndFrame((v810_timestamp + VSU_CycleFix) >> 2); + + if(espec->SoundBuf) + { + for(int y = 0; y < 2; y++) + { + sbuf[y].end_frame((v810_timestamp + VSU_CycleFix) >> 2); + espec->SoundBufSize = sbuf[y].read_samples(espec->SoundBuf + y, espec->SoundBufMaxSize, 1); + } + } + + VSU_CycleFix = (v810_timestamp + VSU_CycleFix) & 3; + + espec->MasterCycles = v810_timestamp; + + TIMER_ResetTS(); + VBINPUT_ResetTS(); + VIP_ResetTS(); + + RebaseTS(v810_timestamp); + + VB_V810->ResetTS(); + + +#if 0 + if(espec->SoundRate) + { + unsigned long long crf = (unsigned long long)sbuf[0].clock_rate_factor(sbuf[0].clock_rate()); + double real_rate = (double)crf * sbuf[0].clock_rate() / (1ULL << BLIP_BUFFER_ACCURACY); + + printf("%f\n", real_rate); + } +#endif +} + +} + +using namespace MDFN_IEN_VB; + +#ifdef WANT_DEBUGGER +static DebuggerInfoStruct DBGInfo = +{ + "shift_jis", + 4, + 2, // Instruction alignment(bytes) + 32, + 32, + 0x00000000, + ~0U, + + VBDBG_MemPeek, + VBDBG_Disassemble, + NULL, + NULL, //ForceIRQ, + NULL, + VBDBG_FlushBreakPoints, + VBDBG_AddBreakPoint, + VBDBG_SetCPUCallback, + VBDBG_SetBPCallback, + VBDBG_GetBranchTrace, + NULL, //KING_SetGraphicsDecode, + VBDBG_SetLogFunc, +}; +#endif + + +static int StateAction(StateMem *sm, int load, int data_only) +{ + int ret = 1; + SFORMAT StateRegs[] = + { + SFARRAY(WRAM, 65536), + SFARRAY(GPRAM, GPRAM_Mask ? (GPRAM_Mask + 1) : 0), + SFVAR(WCR), + SFVAR(IRQ_Asserted), + SFVAR(VSU_CycleFix), + + + // TODO: Remove these(and recalc on state load) + SFVAR(next_vip_ts), + SFVAR(next_timer_ts), + SFVAR(next_input_ts), + + SFEND + }; + + ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); + + ret &= VB_V810->StateAction(sm, load, data_only); + + ret &= VB_VSU->StateAction(sm, load, data_only); + ret &= TIMER_StateAction(sm, load, data_only); + ret &= VBINPUT_StateAction(sm, load, data_only); + ret &= VIP_StateAction(sm, load, data_only); + + if(load) + { + + } + return(ret); +} + +static void SetLayerEnableMask(uint64 mask) +{ + +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_POWER: + case MDFN_MSC_RESET: VB_Power(); break; + } +} + +static const MDFNSetting_EnumList V810Mode_List[] = +{ + { "fast", (int)V810_EMU_MODE_FAST, gettext_noop("Fast Mode"), gettext_noop("Fast mode trades timing accuracy, cache emulation, and executing from hardware registers and RAM not intended for code use for performance.")}, + { "accurate", (int)V810_EMU_MODE_ACCURATE, gettext_noop("Accurate Mode"), gettext_noop("Increased timing accuracy, though not perfect, along with cache emulation, at the cost of decreased performance. Additionally, even the pipeline isn't correctly and fully emulated in this mode.") }, + { NULL, 0 }, +}; + +static const MDFNSetting_EnumList VB3DMode_List[] = +{ + { "anaglyph", VB3DMODE_ANAGLYPH, gettext_noop("Anaglyph"), gettext_noop("Used in conjunction with classic dual-lens-color glasses.") }, + { "cscope", VB3DMODE_CSCOPE, gettext_noop("CyberScope"), gettext_noop("Intended for use with the CyberScope 3D device.") }, + { "sidebyside", VB3DMODE_SIDEBYSIDE, gettext_noop("Side-by-Side"), gettext_noop("The left-eye image is displayed on the left, and the right-eye image is displayed on the right.") }, +// { "overunder", VB3DMODE_OVERUNDER }, + { "vli", VB3DMODE_VLI, gettext_noop("Vertical Line Interlaced"), gettext_noop("Vertical lines alternate between left view and right view.") }, + { "hli", VB3DMODE_HLI, gettext_noop("Horizontal Line Interlaced"), gettext_noop("Horizontal lines alternate between left view and right view.") }, + { NULL, 0 }, +}; + +static const MDFNSetting_EnumList AnaglyphPreset_List[] = +{ + { "disabled", ANAGLYPH_PRESET_DISABLED, gettext_noop("Disabled"), gettext_noop("Forces usage of custom anaglyph colors.") }, + { "0", ANAGLYPH_PRESET_DISABLED }, + + { "red_blue", ANAGLYPH_PRESET_RED_BLUE, gettext_noop("Red/Blue"), gettext_noop("Classic red/blue anaglyph.") }, + { "red_cyan", ANAGLYPH_PRESET_RED_CYAN, gettext_noop("Red/Cyan"), gettext_noop("Improved quality red/cyan anaglyph.") }, + { "red_electriccyan", ANAGLYPH_PRESET_RED_ELECTRICCYAN, gettext_noop("Red/Electric Cyan"), gettext_noop("Alternate version of red/cyan") }, + { "red_green", ANAGLYPH_PRESET_RED_GREEN, gettext_noop("Red/Green") }, + { "green_magenta", ANAGLYPH_PRESET_GREEN_MAGENTA, gettext_noop("Green/Magenta") }, + { "yellow_blue", ANAGLYPH_PRESET_YELLOW_BLUE, gettext_noop("Yellow/Blue") }, + + { NULL, 0 }, +}; + +static MDFNSetting VBSettings[] = +{ + { "vb.cpu_emulation", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("CPU emulation mode."), NULL, MDFNST_ENUM, "fast", NULL, NULL, NULL, NULL, V810Mode_List }, + { "vb.input.instant_read_hack", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Input latency reduction hack."), gettext_noop("Reduces latency in some games by 20ms by returning the current pad state, rather than latched state, on serial port data reads. This hack may cause some homebrew software to malfunction, but it should be relatively safe for commercial official games."), MDFNST_BOOL, "1", NULL, NULL, NULL, SettingChanged }, + + { "vb.instant_display_hack", MDFNSF_NOFLAGS, gettext_noop("Display latency reduction hack."), gettext_noop("Reduces latency in games by displaying the framebuffer 20ms earlier. This hack has some potential of causing graphical glitches, so it is disabled by default."), MDFNST_BOOL, "0", NULL, NULL, NULL, SettingChanged }, + { "vb.allow_draw_skip", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Allow draw skipping."), gettext_noop("If vb.instant_display_hack is set to \"1\", and this setting is set to \"1\", then frame-skipping the drawing to the emulated framebuffer will be allowed. THIS WILL CAUSE GRAPHICAL GLITCHES, AND THEORETICALLY(but unlikely) GAME CRASHES, ESPECIALLY WITH DIRECT FRAMEBUFFER DRAWING GAMES."), MDFNST_BOOL, "0", NULL, NULL, NULL, SettingChanged }, + + // FIXME: We're going to have to set up some kind of video mode change notification for changing vb.3dmode while the game is running to work properly. + { "vb.3dmode", MDFNSF_NOFLAGS, gettext_noop("3D mode."), NULL, MDFNST_ENUM, "anaglyph", NULL, NULL, NULL, /*SettingChanged*/NULL, VB3DMode_List }, + { "vb.liprescale", MDFNSF_NOFLAGS, gettext_noop("Line Interlaced prescale."), NULL, MDFNST_UINT, "2", "1", "10", NULL, NULL }, + + { "vb.disable_parallax", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Disable parallax for BG and OBJ rendering."), NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, SettingChanged }, + { "vb.default_color", MDFNSF_NOFLAGS, gettext_noop("Default maximum-brightness color to use in non-anaglyph 3D modes."), NULL, MDFNST_UINT, "0xF0F0F0", "0x000000", "0xFFFFFF", NULL, SettingChanged }, + + { "vb.anaglyph.preset", MDFNSF_NOFLAGS, gettext_noop("Anaglyph preset colors."), NULL, MDFNST_ENUM, "red_blue", NULL, NULL, NULL, SettingChanged, AnaglyphPreset_List }, + { "vb.anaglyph.lcolor", MDFNSF_NOFLAGS, gettext_noop("Anaglyph maximum-brightness color for left view."), NULL, MDFNST_UINT, "0xffba00", "0x000000", "0xFFFFFF", NULL, SettingChanged }, + { "vb.anaglyph.rcolor", MDFNSF_NOFLAGS, gettext_noop("Anaglyph maximum-brightness color for right view."), NULL, MDFNST_UINT, "0x00baff", "0x000000", "0xFFFFFF", NULL, SettingChanged }, + + { "vb.sidebyside.separation", MDFNSF_NOFLAGS, gettext_noop("Number of pixels to separate L/R views by."), gettext_noop("This setting refers to pixels before vb.xscale(fs) scaling is taken into consideration. For example, a value of \"100\" here will result in a separation of 300 screen pixels if vb.xscale(fs) is set to \"3\"."), MDFNST_UINT, /*"96"*/"0", "0", "1024", NULL, NULL }, + + { "vb.3dreverse", MDFNSF_NOFLAGS, gettext_noop("Reverse left/right 3D views."), NULL, MDFNST_BOOL, "0", NULL, NULL, NULL, SettingChanged }, + { NULL } +}; + + +static const InputDeviceInputInfoStruct IDII[] = +{ + { "a", "A", 7, IDIT_BUTTON_CAN_RAPID, NULL }, + { "b", "B", 6, IDIT_BUTTON_CAN_RAPID, NULL }, + { "rt", "Right-Back", 13, IDIT_BUTTON, NULL }, + { "lt", "Left-Back", 12, IDIT_BUTTON, NULL }, + + { "up-r", "UP ↑ (Right D-Pad)", 8, IDIT_BUTTON, "down-r" }, + { "right-r", "RIGHT → (Right D-Pad)", 11, IDIT_BUTTON, "left-r" }, + + { "right-l", "RIGHT → (Left D-Pad)", 3, IDIT_BUTTON, "left-l" }, + { "left-l", "LEFT ↠(Left D-Pad)", 2, IDIT_BUTTON, "right-l" }, + { "down-l", "DOWN ↓ (Left D-Pad)", 1, IDIT_BUTTON, "up-l" }, + { "up-l", "UP ↑ (Left D-Pad)", 0, IDIT_BUTTON, "down-l" }, + + { "start", "Start", 5, IDIT_BUTTON, NULL }, + { "select", "Select", 4, IDIT_BUTTON, NULL }, + + { "left-r", "LEFT ↠(Right D-Pad)", 10, IDIT_BUTTON, "right-r" }, + { "down-r", "DOWN ↓ (Right D-Pad)", 9, IDIT_BUTTON, "up-r" }, +}; + +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), + IDII, + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" } +}; + +static InputInfoStruct InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".vb", gettext_noop("Nintendo Virtual Boy") }, + { ".vboy", gettext_noop("Nintendo Virtual Boy") }, + #ifdef VB_SUPPORT_BIN_EXT + { ".bin", gettext_noop("Nintendo Virtual Boy (Deprecated)") }, + #endif + { NULL, NULL } +}; + +MDFNGI EmulatedVB = +{ + "vb", + "Virtual Boy", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + #ifdef WANT_DEBUGGER + &DBGInfo, + #else + NULL, // Debug info + #endif + &InputInfo, // + Load, + TestMagic, + NULL, + NULL, + CloseGame, + SetLayerEnableMask, + NULL, // Layer names, null-delimited + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + VBINPUT_SetInput, + DoSimpleCommand, + VBSettings, + MDFN_MASTERCLOCK_FIXED(VB_MASTER_CLOCK), + 0, + false, // Multires possible? + + 0, // lcm_width + 0, // lcm_height + NULL, // Dummy + + 384, // Nominal width + 224, // Nominal height + + 384, // Framebuffer width + 256, // Framebuffer height + + 2, // Number of output sound channels +}; diff --git a/libmednahawk/src/vb/vb.h b/libmednahawk/src/vb/vb.h new file mode 100644 index 0000000000..41d631e89b --- /dev/null +++ b/libmednahawk/src/vb/vb.h @@ -0,0 +1,61 @@ +#ifndef __VB_VB_H +#define __VB_VB_H + +#include +#include +#include +#include + +namespace MDFN_IEN_VB +{ + +enum +{ + VB3DMODE_ANAGLYPH = 0, + VB3DMODE_CSCOPE = 1, + VB3DMODE_SIDEBYSIDE = 2, + VB3DMODE_OVERUNDER = 3, + VB3DMODE_VLI, + VB3DMODE_HLI +}; + +#define VB_MASTER_CLOCK 20000000.0 + + + +enum +{ + VB_EVENT_VIP = 0, + VB_EVENT_TIMER, + VB_EVENT_INPUT, +// VB_EVENT_COMM +}; + +#define VB_EVENT_NONONO 0x7fffffff + +void VB_SetEvent(const int type, const v810_timestamp_t next_timestamp); + + +#define VBIRQ_SOURCE_INPUT 0 +#define VBIRQ_SOURCE_TIMER 1 +#define VBIRQ_SOURCE_EXPANSION 2 +#define VBIRQ_SOURCE_COMM 3 +#define VBIRQ_SOURCE_VIP 4 + +void VBIRQ_Assert(int source, bool assert); + +void VB_ExitLoop(void); + + +uint8 MDFN_FASTCALL MemRead8(v810_timestamp_t ×tamp, uint32 A); +uint16 MDFN_FASTCALL MemRead16(v810_timestamp_t ×tamp, uint32 A); + +void MDFN_FASTCALL MemWrite8(v810_timestamp_t ×tamp, uint32 A, uint8 V); +void MDFN_FASTCALL MemWrite16(v810_timestamp_t ×tamp, uint32 A, uint16 V); + + + +extern int32 VB_InDebugPeek; +} + +#endif diff --git a/libmednahawk/src/vb/vip.cpp b/libmednahawk/src/vb/vip.cpp new file mode 100644 index 0000000000..be04faaf58 --- /dev/null +++ b/libmednahawk/src/vb/vip.cpp @@ -0,0 +1,1683 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vb.h" +#include "vip.h" +#include + +#define VIP_DBGMSG(format, ...) { } +//#define VIP_DBGMSG(format, ...) printf(format "\n", ## __VA_ARGS__) + +namespace MDFN_IEN_VB +{ + +static uint8 FB[2][2][0x6000]; +static uint16 CHR_RAM[0x8000 / sizeof(uint16)]; +static uint16 DRAM[0x20000 / sizeof(uint16)]; + +// Helper functions for the V810 VIP RAM read/write handlers. +// "Memory Array 16 (Write/Read) (16/8)" +#define VIP__GETP16(array, address) ( (uint16 *)&((uint8 *)(array))[(address)] ) + +#ifdef MSB_FIRST +#define VIP__GETP8(array, address) ( &((uint8 *)(array))[(address) ^ 1] ) +#else +#define VIP__GETP8(array, address) ( &((uint8 *)(array))[(address)] ) +#endif + +static INLINE void VIP_MA16W16(uint16 *array, const uint32 v810_address, const uint16 value) +{ + *(VIP__GETP16(array, v810_address)) = value; +} + +static INLINE uint16 VIP_MA16R16(uint16 *array, const uint32 v810_address) +{ + return *(VIP__GETP16(array, v810_address)); +} + +static INLINE void VIP_MA16W8(uint16 *array, const uint32 v810_address, const uint8 value) +{ + *(VIP__GETP8(array, v810_address)) = value; +} + +static INLINE uint8 VIP_MA16R8(uint16 *array, const uint32 v810_address) +{ + return *(VIP__GETP8(array, v810_address)); +} + + +#define INT_SCAN_ERR 0x0001 +#define INT_LFB_END 0x0002 +#define INT_RFB_END 0x0004 +#define INT_GAME_START 0x0008 +#define INT_FRAME_START 0x0010 + +#define INT_SB_HIT 0x2000 +#define INT_XP_END 0x4000 +#define INT_TIME_ERR 0x8000 + +static uint16 InterruptPending; +static uint16 InterruptEnable; + +static uint8 BRTA, BRTB, BRTC, REST; +static uint8 Repeat; + +static void CopyFBColumnToTarget_Anaglyph(void) NO_INLINE; +static void CopyFBColumnToTarget_AnaglyphSlow(void) NO_INLINE; +static void CopyFBColumnToTarget_CScope(void) NO_INLINE; +static void CopyFBColumnToTarget_SideBySide(void) NO_INLINE; +static void CopyFBColumnToTarget_VLI(void) NO_INLINE; +static void CopyFBColumnToTarget_HLI(void) NO_INLINE; +static void (*CopyFBColumnToTarget)(void) = NULL; +static uint32 VB3DMode; +static uint32 VB3DReverse; +static uint32 VBPrescale; +static uint32 VBSBS_Separation; +static uint32 HLILUT[256]; +static uint32 ColorLUT[2][256]; +static int32 BrightnessCache[4]; +static uint32 BrightCLUT[2][4]; + +static double ColorLUTNoGC[2][256][3]; +static uint32 AnaSlowColorLUT[256][256]; + +// A few settings: +static bool InstantDisplayHack; +static bool AllowDrawSkip; + +static bool VidSettingsDirty; +static bool ParallaxDisabled; +static uint32 Anaglyph_Colors[2]; +static uint32 Default_Color; + +static void MakeColorLUT(const MDFN_PixelFormat &format) +{ + for(int lr = 0; lr < 2; lr++) + { + for(int i = 0; i < 256; i++) + { + double r, g, b; + double r_prime, g_prime, b_prime; + + r = g = b = (double)i / 255; + + // TODO: Use correct gamma curve, instead of approximation. + r_prime = pow(r, 1.0 / 2.2); + g_prime = pow(g, 1.0 / 2.2); + b_prime = pow(b, 1.0 / 2.2); + + switch(VB3DMode) + { + case VB3DMODE_ANAGLYPH: + r_prime = r_prime * ((Anaglyph_Colors[lr ^ VB3DReverse] >> 16) & 0xFF) / 255; + g_prime = g_prime * ((Anaglyph_Colors[lr ^ VB3DReverse] >> 8) & 0xFF) / 255; + b_prime = b_prime * ((Anaglyph_Colors[lr ^ VB3DReverse] >> 0) & 0xFF) / 255; + break; + default: + r_prime = r_prime * ((Default_Color >> 16) & 0xFF) / 255; + g_prime = g_prime * ((Default_Color >> 8) & 0xFF) / 255; + b_prime = b_prime * ((Default_Color >> 0) & 0xFF) / 255; + break; + } + ColorLUTNoGC[lr][i][0] = pow(r_prime, 2.2 / 1.0); + ColorLUTNoGC[lr][i][1] = pow(g_prime, 2.2 / 1.0); + ColorLUTNoGC[lr][i][2] = pow(b_prime, 2.2 / 1.0); + + ColorLUT[lr][i] = format.MakeColor((int)(r_prime * 255), (int)(g_prime * 255), (int)(b_prime * 255), 0); + } + } + + // Anaglyph slow-mode LUT calculation + for(int l_b = 0; l_b < 256; l_b++) + { + for(int r_b = 0; r_b < 256; r_b++) + { + double r, g, b; + double r_prime, g_prime, b_prime; + + r = ColorLUTNoGC[0][l_b][0] + ColorLUTNoGC[1][r_b][0]; + g = ColorLUTNoGC[0][l_b][1] + ColorLUTNoGC[1][r_b][1]; + b = ColorLUTNoGC[0][l_b][2] + ColorLUTNoGC[1][r_b][2]; + + if(r > 1.0) + r = 1.0; + if(g > 1.0) + g = 1.0; + if(b > 1.0) + b = 1.0; + + r_prime = pow(r, 1.0 / 2.2); + g_prime = pow(g, 1.0 / 2.2); + b_prime = pow(b, 1.0 / 2.2); + + AnaSlowColorLUT[l_b][r_b] = format.MakeColor((int)(r_prime * 255), (int)(g_prime * 255), (int)(b_prime * 255), 0); + } + } +} + +static void RecalcBrightnessCache(void) +{ + //printf("BRTA: %d, BRTB: %d, BRTC: %d, Rest: %d\n", BRTA, BRTB, BRTC, REST); + int32 CumulativeTime = (BRTA + 1 + BRTB + 1 + BRTC + 1 + REST + 1) + 1; + int32 MaxTime = 128; + + BrightnessCache[0] = 0; + BrightnessCache[1] = 0; + BrightnessCache[2] = 0; + BrightnessCache[3] = 0; + + for(int i = 0; i < Repeat + 1; i++) + { + int32 btemp[4]; + + if((i * CumulativeTime) >= MaxTime) + break; + + btemp[1] = (i * CumulativeTime) + BRTA; + if(btemp[1] > MaxTime) + btemp[1] = MaxTime; + btemp[1] -= (i * CumulativeTime); + if(btemp[1] < 0) + btemp[1] = 0; + + + btemp[2] = (i * CumulativeTime) + BRTA + 1 + BRTB; + if(btemp[2] > MaxTime) + btemp[2] = MaxTime; + btemp[2] -= (i * CumulativeTime) + BRTA + 1; + if(btemp[2] < 0) + btemp[2] = 0; + + //btemp[3] = (i * CumulativeTime) + BRTA + 1 + BRTB + 1 + BRTC; + //if(btemp[3] > MaxTime) + // btemp[3] = MaxTime; + //btemp[3] -= (i * CumulativeTime); + //if(btemp[3] < 0) + // btemp[3] = 0; + + btemp[3] = (i * CumulativeTime) + BRTA + BRTB + BRTC + 1; + if(btemp[3] > MaxTime) + btemp[3] = MaxTime; + btemp[3] -= (i * CumulativeTime) + 1; + if(btemp[3] < 0) + btemp[3] = 0; + + BrightnessCache[1] += btemp[1]; + BrightnessCache[2] += btemp[2]; + BrightnessCache[3] += btemp[3]; + } + + //printf("BC: %d %d %d %d\n", BrightnessCache[0], BrightnessCache[1], BrightnessCache[2], BrightnessCache[3]); + + for(int i = 0; i < 4; i++) + BrightnessCache[i] = 255 * BrightnessCache[i] / MaxTime; + + for(int lr = 0; lr < 2; lr++) + for(int i = 0; i < 4; i++) + { + BrightCLUT[lr][i] = ColorLUT[lr][BrightnessCache[i]]; + } +} + +static void Recalc3DModeStuff(bool non_rgb_output = false) +{ + switch(VB3DMode) + { + default: + if(((Anaglyph_Colors[0] & 0xFF) && (Anaglyph_Colors[1] & 0xFF)) || + ((Anaglyph_Colors[0] & 0xFF00) && (Anaglyph_Colors[1] & 0xFF00)) || + ((Anaglyph_Colors[0] & 0xFF0000) && (Anaglyph_Colors[1] & 0xFF0000)) || + non_rgb_output) + { + CopyFBColumnToTarget = CopyFBColumnToTarget_AnaglyphSlow; + } + else + CopyFBColumnToTarget = CopyFBColumnToTarget_Anaglyph; + break; + + case VB3DMODE_CSCOPE: + CopyFBColumnToTarget = CopyFBColumnToTarget_CScope; + break; + + case VB3DMODE_SIDEBYSIDE: + CopyFBColumnToTarget = CopyFBColumnToTarget_SideBySide; + break; + + case VB3DMODE_VLI: + CopyFBColumnToTarget = CopyFBColumnToTarget_VLI; + break; + + case VB3DMODE_HLI: + CopyFBColumnToTarget = CopyFBColumnToTarget_HLI; + break; + } + RecalcBrightnessCache(); +} + +void VIP_Set3DMode(uint32 mode, bool reverse, uint32 prescale, uint32 sbs_separation) +{ + VB3DMode = mode; + VB3DReverse = reverse ? 1 : 0; + VBPrescale = prescale; + VBSBS_Separation = sbs_separation; + + VidSettingsDirty = true; + + for(uint32 p = 0; p < 256; p++) + { + uint32 v; + uint8 s[4]; + + s[0] = (p >> 0) & 0x3; + s[1] = (p >> 2) & 0x3; + s[2] = (p >> 4) & 0x3; + s[3] = (p >> 6) & 0x3; + + v = 0; + for(unsigned int i = 0, shifty = 0; i < 4; i++) + { + for(unsigned int ps = 0; ps < prescale; ps++) + { + v |= s[i] << shifty; + shifty += 2; + } + } + + HLILUT[p] = v; + } +} + +void VIP_SetParallaxDisable(bool disabled) +{ + ParallaxDisabled = disabled; +} + +void VIP_SetDefaultColor(uint32 default_color) +{ + Default_Color = default_color; + + VidSettingsDirty = true; +} + + +void VIP_SetAnaglyphColors(uint32 lcolor, uint32 rcolor) +{ + Anaglyph_Colors[0] = lcolor; + Anaglyph_Colors[1] = rcolor; + + VidSettingsDirty = true; +} + +void VIP_SetInstantDisplayHack(bool val) +{ + InstantDisplayHack = val; +} + +void VIP_SetAllowDrawSkip(bool val) +{ + AllowDrawSkip = val; +} + + +static uint16 FRMCYC; + +static uint16 DPCTRL; +static bool DisplayActive; + +#define XPCTRL_XP_RST 0x0001 +#define XPCTRL_XP_EN 0x0002 +static uint16 XPCTRL; +static uint16 SBCMP; // Derived from XPCTRL + +static uint16 SPT[4]; // SPT0~SPT3, 5f848~5f84e +static uint16 GPLT[4]; +static uint8 GPLT_Cache[4][4]; + +static INLINE void Recalc_GPLT_Cache(int which) +{ + for(int i = 0; i < 4; i++) + GPLT_Cache[which][i] = (GPLT[which] >> (i * 2)) & 3; +} + +static uint16 JPLT[4]; +static uint8 JPLT_Cache[4][4]; + +static INLINE void Recalc_JPLT_Cache(int which) +{ + for(int i = 0; i < 4; i++) + JPLT_Cache[which][i] = (JPLT[which] >> (i * 2)) & 3; +} + + +static uint16 BKCOL; + +// +// +// +static int32 CalcNextEvent(void); + +static int32 last_ts; + +static int32 Column; +static int32 ColumnCounter; + +static int32 DisplayRegion; +static bool DisplayFB; + +static int32 GameFrameCounter; + +static int32 DrawingCounter; +static bool DrawingActive; +static bool DrawingFB; +static uint32 DrawingBlock; +static int32 SB_Latch; +static int32 SBOUT_InactiveTime; + +//static uint8 CTA_L, CTA_R; + +static void CheckIRQ(void) +{ + VBIRQ_Assert(VBIRQ_SOURCE_VIP, (bool)(InterruptEnable & InterruptPending)); + + #if 0 + printf("%08x\n", InterruptEnable & InterruptPending); + if((bool)(InterruptEnable & InterruptPending)) + puts("IRQ asserted"); + else + puts("IRQ not asserted"); + #endif +} + + +bool VIP_Init(void) +{ + InstantDisplayHack = false; + AllowDrawSkip = false; + ParallaxDisabled = false; + Anaglyph_Colors[0] = 0xFF0000; + Anaglyph_Colors[1] = 0x0000FF; + VB3DMode = VB3DMODE_ANAGLYPH; + Default_Color = 0xFFFFFF; + VB3DReverse = 0; + VBPrescale = 1; + VBSBS_Separation = 0; + + VidSettingsDirty = true; + + return(true); +} + +void VIP_Power(void) +{ + Repeat = 0; + SB_Latch = 0; + SBOUT_InactiveTime = -1; + last_ts = 0; + + Column = 0; + ColumnCounter = 259; + + DisplayRegion = 0; + DisplayFB = 0; + + GameFrameCounter = 0; + + DrawingCounter = 0; + DrawingActive = false; + DrawingFB = 0; + DrawingBlock = 0; + + DPCTRL = 2; + DisplayActive = false; + + + + memset(FB, 0, 0x6000 * 2 * 2); + memset(CHR_RAM, 0, 0x8000); + memset(DRAM, 0, 0x20000); + + InterruptPending = 0; + InterruptEnable = 0; + + BRTA = 0; + BRTB = 0; + BRTC = 0; + REST = 0; + + FRMCYC = 0; + + XPCTRL = 0; + SBCMP = 0; + + for(int i = 0; i < 4; i++) + { + SPT[i] = 0; + GPLT[i] = 0; + JPLT[i] = 0; + + Recalc_GPLT_Cache(i); + Recalc_JPLT_Cache(i); + } + + BKCOL = 0; +} + +static INLINE uint16 ReadRegister(int32 ×tamp, uint32 A) +{ + uint16 ret = 0; //0xFFFF; + + if(A & 1) + VIP_DBGMSG("Misaligned VIP Read: %08x", A); + + switch(A & 0xFE) + { + default: VIP_DBGMSG("Unknown VIP register read: %08x", A); + break; + + case 0x00: ret = InterruptPending; + break; + + case 0x02: ret = InterruptEnable; + break; + + case 0x20: //printf("Read DPSTTS at %d\n", timestamp); + ret = DPCTRL & 0x702; + if((DisplayRegion & 1) && DisplayActive) + { + unsigned int DPBSY = 1 << ((DisplayRegion >> 1) & 1); + + if(DisplayFB) + DPBSY <<= 2; + + ret |= DPBSY << 2; + } + //if(!(DisplayRegion & 1)) // FIXME? (Had to do it this way for Galactic Pinball...) + ret |= 1 << 6; + break; + + // Note: Upper bits of BRTA, BRTB, BRTC, and REST(?) are 0 when read(on real hardware) + case 0x24: ret = BRTA; + break; + + case 0x26: ret = BRTB; + break; + + case 0x28: ret = BRTC; + break; + + case 0x2A: ret = REST; + break; + + case 0x30: ret = 0xFFFF; + break; + + case 0x40: ret = XPCTRL & 0x2; + if(DrawingActive) + { + ret |= (1 + DrawingFB) << 2; + } + if(timestamp < SBOUT_InactiveTime) + { + ret |= 0x8000; + ret |= /*DrawingBlock*/SB_Latch << 8; + } + break; // XPSTTS, read-only + + case 0x48: + case 0x4a: + case 0x4c: + case 0x4e: ret = SPT[(A >> 1) & 3]; + break; + + case 0x60: + case 0x62: + case 0x64: + case 0x66: ret = GPLT[(A >> 1) & 3]; + break; + + case 0x68: + case 0x6a: + case 0x6c: + case 0x6e: ret = JPLT[(A >> 1) & 3]; + break; + + case 0x70: ret = BKCOL; + break; + } + + return(ret); +} + +static INLINE void WriteRegister(int32 ×tamp, uint32 A, uint16 V) +{ + if(A & 1) + VIP_DBGMSG("Misaligned VIP Write: %08x %04x", A, V); + + switch(A & 0xFE) + { + default: VIP_DBGMSG("Unknown VIP register write: %08x %04x", A, V); + break; + + case 0x00: break; // Interrupt pending, read-only + + case 0x02: { + InterruptEnable = V & 0xE01F; + + VIP_DBGMSG("Interrupt Enable: %04x", V); + + if(V & 0x2000) + VIP_DBGMSG("Warning: VIP SB Hit Interrupt enable: %04x\n", V); + CheckIRQ(); + } + break; + + case 0x04: InterruptPending &= ~V; + CheckIRQ(); + break; + + case 0x20: break; // Display control, read-only. + + case 0x22: DPCTRL = V & (0x703); // Display-control, write-only + if(V & 1) + { + DisplayActive = false; + InterruptPending &= ~(INT_TIME_ERR | INT_FRAME_START | INT_GAME_START | INT_RFB_END | INT_LFB_END | INT_SCAN_ERR); + CheckIRQ(); + } + break; + + case 0x24: BRTA = V & 0xFF; // BRTA + RecalcBrightnessCache(); + break; + + case 0x26: BRTB = V & 0xFF; // BRTB + RecalcBrightnessCache(); + break; + + case 0x28: BRTC = V & 0xFF; // BRTC + RecalcBrightnessCache(); + break; + + case 0x2A: REST = V & 0xFF; // REST + RecalcBrightnessCache(); + break; + + case 0x2E: FRMCYC = V & 0xF; // FRMCYC, write-only? + break; + + case 0x30: break; // CTA, read-only( + + case 0x40: break; // XPSTTS, read-only + + case 0x42: XPCTRL = V & 0x0002; // XPCTRL, write-only + SBCMP = (V >> 8) & 0x1F; + + if(V & 1) + { + VIP_DBGMSG("XPRST"); + DrawingActive = 0; + DrawingCounter = 0; + InterruptPending &= ~(INT_SB_HIT | INT_XP_END | INT_TIME_ERR); + CheckIRQ(); + } + break; + + case 0x44: break; // Version Control, read-only? + + case 0x48: + case 0x4a: + case 0x4c: + case 0x4e: SPT[(A >> 1) & 3] = V & 0x3FF; + break; + + case 0x60: + case 0x62: + case 0x64: + case 0x66: GPLT[(A >> 1) & 3] = V & 0xFC; + Recalc_GPLT_Cache((A >> 1) & 3); + break; + + case 0x68: + case 0x6a: + case 0x6c: + case 0x6e: JPLT[(A >> 1) & 3] = V & 0xFC; + Recalc_JPLT_Cache((A >> 1) & 3); + break; + + case 0x70: BKCOL = V & 0x3; + break; + + } +} + +// +// Don't update the VIP state on reads/writes, the event system will update it with enough precision as far as VB software cares. +// + +uint8 VIP_Read8(int32 ×tamp, uint32 A) +{ + uint8 ret = 0; //0xFF; + + //VIP_Update(timestamp); + + switch(A >> 16) + { + case 0x0: + case 0x1: + if((A & 0x7FFF) >= 0x6000) + { + ret = VIP_MA16R8(CHR_RAM, (A & 0x1FFF) | ((A >> 2) & 0x6000)); + } + else + { + ret = FB[(A >> 15) & 1][(A >> 16) & 1][A & 0x7FFF]; + } + break; + + case 0x2: + case 0x3: ret = VIP_MA16R8(DRAM, A & 0x1FFFF); + break; + + case 0x4: + case 0x5: if(A >= 0x5E000) + ret = ReadRegister(timestamp, A); + else + VIP_DBGMSG("Unknown VIP Read: %08x", A); + break; + + case 0x6: break; + + case 0x7: if(A >= 0x8000) + { + ret = VIP_MA16R8(CHR_RAM, A & 0x7FFF); + } + else + VIP_DBGMSG("Unknown VIP Read: %08x", A); + break; + + default: VIP_DBGMSG("Unknown VIP Read: %08x", A); + break; + } + + + //VB_SetEvent(VB_EVENT_VIP, timestamp + CalcNextEvent()); + + return(ret); +} + +uint16 VIP_Read16(int32 ×tamp, uint32 A) +{ + uint16 ret = 0; //0xFFFF; + + //VIP_Update(timestamp); + + switch(A >> 16) + { + case 0x0: + case 0x1: + if((A & 0x7FFF) >= 0x6000) + { + ret = VIP_MA16R16(CHR_RAM, (A & 0x1FFF) | ((A >> 2) & 0x6000)); + } + else + { + ret = LoadU16_LE((uint16 *)&FB[(A >> 15) & 1][(A >> 16) & 1][A & 0x7FFF]); + } + break; + + case 0x2: + case 0x3: ret = VIP_MA16R16(DRAM, A & 0x1FFFF); + break; + + case 0x4: + case 0x5: + if(A >= 0x5E000) + ret = ReadRegister(timestamp, A); + else + VIP_DBGMSG("Unknown VIP Read: %08x", A); + break; + + case 0x6: break; + + case 0x7: if(A >= 0x8000) + { + ret = VIP_MA16R16(CHR_RAM, A & 0x7FFF); + } + else + VIP_DBGMSG("Unknown VIP Read: %08x", A); + break; + + default: VIP_DBGMSG("Unknown VIP Read: %08x", A); + break; + } + + + //VB_SetEvent(VB_EVENT_VIP, timestamp + CalcNextEvent()); + return(ret); +} + +void VIP_Write8(int32 ×tamp, uint32 A, uint8 V) +{ + //VIP_Update(timestamp); + + //if(A >= 0x3DC00 && A < 0x3E000) + // printf("%08x %02x\n", A, V); + + switch(A >> 16) + { + case 0x0: + case 0x1: + if((A & 0x7FFF) >= 0x6000) + VIP_MA16W8(CHR_RAM, (A & 0x1FFF) | ((A >> 2) & 0x6000), V); + else + FB[(A >> 15) & 1][(A >> 16) & 1][A & 0x7FFF] = V; + break; + + case 0x2: + case 0x3: VIP_MA16W8(DRAM, A & 0x1FFFF, V); + break; + + case 0x4: + case 0x5: if(A >= 0x5E000) + WriteRegister(timestamp, A, V); + else + VIP_DBGMSG("Unknown VIP Write: %08x %02x", A, V); + break; + + case 0x6: VIP_DBGMSG("Unknown VIP Write: %08x %02x", A, V); + break; + + case 0x7: if(A >= 0x8000) + VIP_MA16W8(CHR_RAM, A & 0x7FFF, V); + else + VIP_DBGMSG("Unknown VIP Write: %08x %02x", A, V); + break; + + default: VIP_DBGMSG("Unknown VIP Write: %08x %02x", A, V); + break; + } + + //VB_SetEvent(VB_EVENT_VIP, timestamp + CalcNextEvent()); +} + +void VIP_Write16(int32 ×tamp, uint32 A, uint16 V) +{ + //VIP_Update(timestamp); + + //if(A >= 0x3DC00 && A < 0x3E000) + // printf("%08x %04x\n", A, V); + + switch(A >> 16) + { + case 0x0: + case 0x1: + if((A & 0x7FFF) >= 0x6000) + VIP_MA16W16(CHR_RAM, (A & 0x1FFF) | ((A >> 2) & 0x6000), V); + else + StoreU16_LE((uint16 *)&FB[(A >> 15) & 1][(A >> 16) & 1][A & 0x7FFF], V); + break; + + case 0x2: + case 0x3: VIP_MA16W16(DRAM, A & 0x1FFFF, V); + break; + + case 0x4: + case 0x5: if(A >= 0x5E000) + WriteRegister(timestamp, A, V); + else + VIP_DBGMSG("Unknown VIP Write: %08x %04x", A, V); + break; + + case 0x6: VIP_DBGMSG("Unknown VIP Write: %08x %04x", A, V); + break; + + case 0x7: if(A >= 0x8000) + VIP_MA16W16(CHR_RAM, A & 0x7FFF, V); + else + VIP_DBGMSG("Unknown VIP Write: %08x %04x", A, V); + break; + + default: VIP_DBGMSG("Unknown VIP Write: %08x %04x", A, V); + break; + } + + + //VB_SetEvent(VB_EVENT_VIP, timestamp + CalcNextEvent()); +} + +static MDFN_Surface *surface; +static bool skip; + +void VIP_StartFrame(EmulateSpecStruct *espec) +{ +// puts("Start frame"); + + if(espec->VideoFormatChanged || VidSettingsDirty) + { + MakeColorLUT(espec->surface->format); + Recalc3DModeStuff(espec->surface->format.colorspace != MDFN_COLORSPACE_RGB); + + VidSettingsDirty = false; + } + + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + + switch(VB3DMode) + { + default: + espec->DisplayRect.w = 384; + espec->DisplayRect.h = 224; + break; + + case VB3DMODE_VLI: + espec->DisplayRect.w = 768 * VBPrescale; + espec->DisplayRect.h = 224; + break; + + case VB3DMODE_HLI: + espec->DisplayRect.w = 384; + espec->DisplayRect.h = 448 * VBPrescale; + break; + + case VB3DMODE_CSCOPE: + espec->DisplayRect.w = 512; + espec->DisplayRect.h = 384; + break; + + case VB3DMODE_SIDEBYSIDE: + espec->DisplayRect.w = 768 + VBSBS_Separation; + espec->DisplayRect.h = 224; + break; + } + + surface = espec->surface; + skip = espec->skip; +} + +void VIP_ResetTS(void) +{ + if(SBOUT_InactiveTime >= 0) + SBOUT_InactiveTime -= last_ts; + last_ts = 0; +} + +static int32 CalcNextEvent(void) +{ + return(ColumnCounter); +} + +#include "vip_draw.inc" + +static INLINE void CopyFBColumnToTarget_Anaglyph_BASE(const bool DisplayActive_arg, const int lr) +{ + const int fb = DisplayFB; + uint32 *target = surface->pixels + Column; + const int32 pitch32 = surface->pitch32; + const uint8 *fb_source = &FB[fb][lr][64 * Column]; + + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + uint32 pixel = BrightCLUT[lr][source_bits & 3]; + + if(!DisplayActive_arg) + pixel = 0; + + if(lr) + *target |= pixel; + else + *target = pixel; + + source_bits >>= 2; + target += pitch32; + } + fb_source++; + } +} + +static void CopyFBColumnToTarget_Anaglyph(void) +{ + const int lr = (DisplayRegion & 2) >> 1; + + if(!DisplayActive) + { + if(!lr) + CopyFBColumnToTarget_Anaglyph_BASE(0, 0); + else + CopyFBColumnToTarget_Anaglyph_BASE(0, 1); + } + else + { + if(!lr) + CopyFBColumnToTarget_Anaglyph_BASE(1, 0); + else + CopyFBColumnToTarget_Anaglyph_BASE(1, 1); + } +} + +static uint32 AnaSlowBuf[384][224]; + +static INLINE void CopyFBColumnToTarget_AnaglyphSlow_BASE(const bool DisplayActive_arg, const int lr) +{ + const int fb = DisplayFB; + const uint8 *fb_source = &FB[fb][lr][64 * Column]; + + if(!lr) + { + uint32 *target = AnaSlowBuf[Column]; + + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + uint32 pixel = BrightnessCache[source_bits & 3]; + + if(!DisplayActive_arg) + pixel = 0; + + *target = pixel; + source_bits >>= 2; + target++; + } + fb_source++; + } + + } + else + { + uint32 *target = surface->pixels + Column; + const uint32 *left_src = AnaSlowBuf[Column]; + const int32 pitch32 = surface->pitch32; + + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + uint32 pixel = AnaSlowColorLUT[*left_src][DisplayActive_arg ? BrightnessCache[source_bits & 3] : 0]; + + *target = pixel; + + source_bits >>= 2; + target += pitch32; + left_src++; + } + fb_source++; + } + } +} + +static void CopyFBColumnToTarget_AnaglyphSlow(void) +{ + const int lr = (DisplayRegion & 2) >> 1; + + if(!DisplayActive) + { + if(!lr) + CopyFBColumnToTarget_AnaglyphSlow_BASE(0, 0); + else + CopyFBColumnToTarget_AnaglyphSlow_BASE(0, 1); + } + else + { + if(!lr) + CopyFBColumnToTarget_AnaglyphSlow_BASE(1, 0); + else + CopyFBColumnToTarget_AnaglyphSlow_BASE(1, 1); + } +} + + +static void CopyFBColumnToTarget_CScope_BASE(const bool DisplayActive_arg, const int lr, const int dest_lr) +{ + const int fb = DisplayFB; + uint32 *target = surface->pixels + (dest_lr ? 512 - 16 - 1 : 16) + (dest_lr ? Column : 383 - Column) * surface->pitch32; + const uint8 *fb_source = &FB[fb][lr][64 * Column]; + + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + if(DisplayActive_arg) + *target = BrightCLUT[lr][source_bits & 3]; + else + *target = 0; + + source_bits >>= 2; + if(dest_lr) + target--; + else + target++; + } + fb_source++; + } +} + +static void CopyFBColumnToTarget_CScope(void) +{ + const int lr = (DisplayRegion & 2) >> 1; + + if(!DisplayActive) + { + if(!lr) + CopyFBColumnToTarget_CScope_BASE(0, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_CScope_BASE(0, 1, 1 ^ VB3DReverse); + } + else + { + if(!lr) + CopyFBColumnToTarget_CScope_BASE(1, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_CScope_BASE(1, 1, 1 ^ VB3DReverse); + } +} + +static void CopyFBColumnToTarget_SideBySide_BASE(const bool DisplayActive_arg, const int lr, const int dest_lr) +{ + const int fb = DisplayFB; + uint32 *target = surface->pixels + Column + (dest_lr ? (384 + VBSBS_Separation) : 0); + const int32 pitch32 = surface->pitch32; + const uint8 *fb_source = &FB[fb][lr][64 * Column]; + + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + if(DisplayActive_arg) + *target = BrightCLUT[lr][source_bits & 3]; + else + *target = 0; + source_bits >>= 2; + target += pitch32; + } + fb_source++; + } +} + +static void CopyFBColumnToTarget_SideBySide(void) +{ + const int lr = (DisplayRegion & 2) >> 1; + + if(!DisplayActive) + { + if(!lr) + CopyFBColumnToTarget_SideBySide_BASE(0, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_SideBySide_BASE(0, 1, 1 ^ VB3DReverse); + } + else + { + if(!lr) + CopyFBColumnToTarget_SideBySide_BASE(1, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_SideBySide_BASE(1, 1, 1 ^ VB3DReverse); + } +} + +static INLINE void CopyFBColumnToTarget_VLI_BASE(const bool DisplayActive_arg, const int lr, const int dest_lr) +{ + const int fb = DisplayFB; + uint32 *target = surface->pixels + Column * 2 * VBPrescale + dest_lr; + const int32 pitch32 = surface->pitch32; + const uint8 *fb_source = &FB[fb][lr][64 * Column]; + + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + uint32 tv; + + if(DisplayActive_arg) + tv = BrightCLUT[0][source_bits & 3]; + else + tv = 0; + + for(uint32 ps = 0; ps < VBPrescale; ps++) + target[ps * 2] = tv; + + source_bits >>= 2; + target += pitch32; + } + fb_source++; + } +} + +static void CopyFBColumnToTarget_VLI(void) +{ + const int lr = (DisplayRegion & 2) >> 1; + + if(!DisplayActive) + { + if(!lr) + CopyFBColumnToTarget_VLI_BASE(0, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_VLI_BASE(0, 1, 1 ^ VB3DReverse); + } + else + { + if(!lr) + CopyFBColumnToTarget_VLI_BASE(1, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_VLI_BASE(1, 1, 1 ^ VB3DReverse); + } +} + +static INLINE void CopyFBColumnToTarget_HLI_BASE(const bool DisplayActive_arg, const int lr, const int dest_lr) +{ + const int fb = DisplayFB; + const int32 pitch32 = surface->pitch32; + uint32 *target = surface->pixels + Column + dest_lr * pitch32; + const uint8 *fb_source = &FB[fb][lr][64 * Column]; + +if(VBPrescale <= 4) + for(int y = 56; y; y--) + { + uint32 source_bits = HLILUT[*fb_source]; + + for(int y_sub = 4 * VBPrescale; y_sub; y_sub--) + { + if(DisplayActive_arg) + *target = BrightCLUT[0][source_bits & 3]; + else + *target = 0; + + target += pitch32 * 2; + source_bits >>= 2; + } + fb_source++; + } +else + for(int y = 56; y; y--) + { + uint32 source_bits = *fb_source; + + for(int y_sub = 4; y_sub; y_sub--) + { + for(uint32 ps = 0; ps < VBPrescale; ps++) + { + if(DisplayActive_arg) + *target = BrightCLUT[0][source_bits & 3]; + else + *target = 0; + + target += pitch32 * 2; + } + + source_bits >>= 2; + } + fb_source++; + } +} + +static void CopyFBColumnToTarget_HLI(void) +{ + const int lr = (DisplayRegion & 2) >> 1; + + if(!DisplayActive) + { + if(!lr) + CopyFBColumnToTarget_HLI_BASE(0, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_HLI_BASE(0, 1, 1 ^ VB3DReverse); + } + else + { + if(!lr) + CopyFBColumnToTarget_HLI_BASE(1, 0, 0 ^ VB3DReverse); + else + CopyFBColumnToTarget_HLI_BASE(1, 1, 1 ^ VB3DReverse); + } +} + + +v810_timestamp_t MDFN_FASTCALL VIP_Update(const v810_timestamp_t timestamp) +{ + int32 clocks = timestamp - last_ts; + int32 running_timestamp = timestamp; + + while(clocks > 0) + { + int32 chunk_clocks = clocks; + + if(DrawingCounter > 0 && chunk_clocks > DrawingCounter) + chunk_clocks = DrawingCounter; + if(chunk_clocks > ColumnCounter) + chunk_clocks = ColumnCounter; + + running_timestamp += chunk_clocks; + + if(DrawingCounter > 0) + { + DrawingCounter -= chunk_clocks; + if(DrawingCounter <= 0) + { + MDFN_ALIGN(8) uint8 DrawingBuffers[2][512 * 8]; // Don't decrease this from 512 unless you adjust vip_draw.inc(including areas that draw off-visible >= 384 and >= -7 for speed reasons) + + if(skip && InstantDisplayHack && AllowDrawSkip) + { +#if 0 + for(int lr = 0; lr < 2; lr++) + { + uint8 *FB_Target = FB[DrawingFB][lr] + DrawingBlock * 2; + for(int x = 0; x < 384; x++) + { + FB_Target[64 * x + 0] = BKCOL; + FB_Target[64 * x + 1] = BKCOL; + } + } +#endif + } + else + { + VIP_DrawBlock(DrawingBlock, DrawingBuffers[0] + 8, DrawingBuffers[1] + 8); + + for(int lr = 0; lr < 2; lr++) + { + uint8 *FB_Target = FB[DrawingFB][lr] + DrawingBlock * 2; + + for(int x = 0; x < 384; x++) + { + FB_Target[64 * x + 0] = (DrawingBuffers[lr][8 + x + 512 * 0] << 0) + | (DrawingBuffers[lr][8 + x + 512 * 1] << 2) + | (DrawingBuffers[lr][8 + x + 512 * 2] << 4) + | (DrawingBuffers[lr][8 + x + 512 * 3] << 6); + + FB_Target[64 * x + 1] = (DrawingBuffers[lr][8 + x + 512 * 4] << 0) + | (DrawingBuffers[lr][8 + x + 512 * 5] << 2) + | (DrawingBuffers[lr][8 + x + 512 * 6] << 4) + | (DrawingBuffers[lr][8 + x + 512 * 7] << 6); + + } + } + } + + SBOUT_InactiveTime = running_timestamp + 1120; + SB_Latch = DrawingBlock; // Not exactly correct, but probably doesn't matter. + + DrawingBlock++; + if(DrawingBlock == 28) + { + DrawingActive = false; + + InterruptPending |= INT_XP_END; + CheckIRQ(); + } + else + DrawingCounter += 1120 * 4; + } + } + + ColumnCounter -= chunk_clocks; + if(ColumnCounter == 0) + { + if(DisplayRegion & 1) + { + if(!(Column & 3)) + { + const int lr = (DisplayRegion & 2) >> 1; + uint16 ctdata = VIP_MA16R16(DRAM, 0x1DFFE - ((Column >> 2) * 2) - (lr ? 0 : 0x200)); + + if((ctdata >> 8) != Repeat) + { + Repeat = ctdata >> 8; + RecalcBrightnessCache(); + } + } + if(!skip && !InstantDisplayHack) + CopyFBColumnToTarget(); + } + + ColumnCounter = 259; + Column++; + if(Column == 384) + { + Column = 0; + + if(DisplayActive) + { + if(DisplayRegion & 1) // Did we just finish displaying an active region? + { + if(DisplayRegion & 2) // finished displaying right eye + InterruptPending |= INT_RFB_END; + else // Otherwise, left eye + InterruptPending |= INT_LFB_END; + + CheckIRQ(); + } + } + + DisplayRegion = (DisplayRegion + 1) & 3; + + if(DisplayRegion == 0) // New frame start + { + DisplayActive = DPCTRL & 0x2; + + if(DisplayActive) + { + InterruptPending |= INT_FRAME_START; + CheckIRQ(); + } + GameFrameCounter++; + if(GameFrameCounter > FRMCYC) // New game frame start? + { + InterruptPending |= INT_GAME_START; + CheckIRQ(); + + if(XPCTRL & XPCTRL_XP_EN) + { + DisplayFB ^= 1; + + DrawingBlock = 0; + DrawingActive = true; + DrawingCounter = 1120 * 4; + DrawingFB = DisplayFB ^ 1; + } + + GameFrameCounter = 0; + } + + if(!skip && InstantDisplayHack) + { + // Ugly kludge, fix in the future. + int32 save_DisplayRegion = DisplayRegion; + int32 save_Column = Column; + uint8 save_Repeat = Repeat; + + for(int lr = 0; lr < 2; lr++) + { + DisplayRegion = lr << 1; + for(Column = 0; Column < 384; Column++) + { + if(!(Column & 3)) + { + uint16 ctdata = VIP_MA16R16(DRAM, 0x1DFFE - ((Column >> 2) * 2) - (lr ? 0 : 0x200)); + + if((ctdata >> 8) != Repeat) + { + Repeat = ctdata >> 8; + RecalcBrightnessCache(); + } + } + + CopyFBColumnToTarget(); + } + } + DisplayRegion = save_DisplayRegion; + Column = save_Column; + Repeat = save_Repeat; + RecalcBrightnessCache(); + } + + VB_ExitLoop(); + } + } + } + + clocks -= chunk_clocks; + } + + last_ts = timestamp; + + return(timestamp + CalcNextEvent()); +} + + +int VIP_StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(FB[0][0], 0x6000 * 2 * 2), + SFARRAY16(CHR_RAM, 0x8000 / sizeof(uint16)), + SFARRAY16(DRAM, 0x20000 / sizeof(uint16)), + + SFVAR(InterruptPending), + SFVAR(InterruptEnable), + + SFVAR(BRTA), + SFVAR(BRTB), + SFVAR(BRTC), + SFVAR(REST), + + SFVAR(FRMCYC), + SFVAR(DPCTRL), + + SFVAR(DisplayActive), + + SFVAR(XPCTRL), + SFVAR(SBCMP), + SFARRAY16(SPT, 4), + SFARRAY16(GPLT, 4), // FIXME + SFARRAY16(JPLT, 4), + + SFVAR(BKCOL), + + SFVAR(Column), + SFVAR(ColumnCounter), + + SFVAR(DisplayRegion), + SFVAR(DisplayFB), + + SFVAR(GameFrameCounter), + + SFVAR(DrawingCounter), + + SFVAR(DrawingActive), + SFVAR(DrawingFB), + SFVAR(DrawingBlock), + + SFVAR(SB_Latch), + SFVAR(SBOUT_InactiveTime), + + SFVAR(Repeat), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "VIP"); + + if(load) + { + RecalcBrightnessCache(); + for(int i = 0; i < 4; i++) + { + Recalc_GPLT_Cache(i); + Recalc_JPLT_Cache(i); + } + } + + return(ret); +} + +uint32 VIP_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 ret = 0xDEADBEEF; + + switch(id) + { + case VIP_GSREG_IPENDING: + ret = InterruptPending; + break; + + case VIP_GSREG_IENABLE: + ret = InterruptEnable; + break; + + case VIP_GSREG_DPCTRL: + ret = DPCTRL; + break; + + case VIP_GSREG_BRTA: + ret = BRTA; + break; + + case VIP_GSREG_BRTB: + ret = BRTB; + break; + + case VIP_GSREG_BRTC: + ret = BRTC; + break; + + case VIP_GSREG_REST: + ret = REST; + break; + + case VIP_GSREG_FRMCYC: + ret = FRMCYC; + break; + + case VIP_GSREG_XPCTRL: + ret = XPCTRL | (SBCMP << 8); + break; + + case VIP_GSREG_SPT0: + case VIP_GSREG_SPT1: + case VIP_GSREG_SPT2: + case VIP_GSREG_SPT3: + ret = SPT[id - VIP_GSREG_SPT0]; + break; + + case VIP_GSREG_GPLT0: + case VIP_GSREG_GPLT1: + case VIP_GSREG_GPLT2: + case VIP_GSREG_GPLT3: + ret = GPLT[id - VIP_GSREG_GPLT0]; + break; + + case VIP_GSREG_JPLT0: + case VIP_GSREG_JPLT1: + case VIP_GSREG_JPLT2: + case VIP_GSREG_JPLT3: + ret = JPLT[id - VIP_GSREG_JPLT0]; + break; + + case VIP_GSREG_BKCOL: + ret = BKCOL; + break; + + } + + if(id == VIP_GSREG_IPENDING || id == VIP_GSREG_IENABLE) + { + if(special) + trio_snprintf(special, special_len, "%s: %s%s%s%s%s%s%s%s", + (id == VIP_GSREG_IPENDING) ? "Interrupts Pending" : "Interrupts Enabled", + (ret & INT_SCAN_ERR) ? "SCAN_ERR " : "", + (ret & INT_LFB_END) ? "LFB_END " : "", + (ret & INT_RFB_END) ? "RFB_END " : "", + (ret & INT_GAME_START) ? "GAME_START " : "", + (ret & INT_FRAME_START) ? "FRAME_START " : "", + (ret & INT_SB_HIT) ? "SB_HIT " : "", + (ret & INT_XP_END) ? "XP_END " : "", + (ret & INT_TIME_ERR) ? "TIME_ERR " : ""); + + } + + return(ret); +} + +void VIP_SetRegister(const unsigned int id, const uint32 value) +{ + switch(id) + { + case VIP_GSREG_IPENDING: + InterruptPending = value & 0xE01F; + CheckIRQ(); + break; + + case VIP_GSREG_IENABLE: + InterruptEnable = value & 0xE01F; + CheckIRQ(); + break; + + case VIP_GSREG_DPCTRL: + DPCTRL = value & 0x703; // FIXME(Lower bit?) + break; + + case VIP_GSREG_BRTA: + BRTA = value & 0xFF; + RecalcBrightnessCache(); + break; + + case VIP_GSREG_BRTB: + BRTB = value & 0xFF; + RecalcBrightnessCache(); + break; + + case VIP_GSREG_BRTC: + BRTC = value & 0xFF; + RecalcBrightnessCache(); + break; + + case VIP_GSREG_REST: + REST = value & 0xFF; + RecalcBrightnessCache(); + break; + + case VIP_GSREG_FRMCYC: + FRMCYC = value & 0xF; + break; + + case VIP_GSREG_XPCTRL: + XPCTRL = value & 0x2; + SBCMP = (value >> 8) & 0x1f; + break; + + case VIP_GSREG_SPT0: + case VIP_GSREG_SPT1: + case VIP_GSREG_SPT2: + case VIP_GSREG_SPT3: + SPT[id - VIP_GSREG_SPT0] = value & 0x3FF; + break; + + case VIP_GSREG_GPLT0: + case VIP_GSREG_GPLT1: + case VIP_GSREG_GPLT2: + case VIP_GSREG_GPLT3: + GPLT[id - VIP_GSREG_GPLT0] = value & 0xFC; + Recalc_GPLT_Cache(id - VIP_GSREG_GPLT0); + break; + + case VIP_GSREG_JPLT0: + case VIP_GSREG_JPLT1: + case VIP_GSREG_JPLT2: + case VIP_GSREG_JPLT3: + JPLT[id - VIP_GSREG_JPLT0] = value & 0xFC; + Recalc_JPLT_Cache(id - VIP_GSREG_JPLT0); + break; + + case VIP_GSREG_BKCOL: + BKCOL = value & 0x03; + break; + } +} + + +} diff --git a/libmednahawk/src/vb/vip.h b/libmednahawk/src/vb/vip.h new file mode 100644 index 0000000000..fe5f260f22 --- /dev/null +++ b/libmednahawk/src/vb/vip.h @@ -0,0 +1,71 @@ +#ifndef __VB_VIP_H +#define __VB_VIP_H + +namespace MDFN_IEN_VB +{ + +bool VIP_Init(void); +void VIP_Power(void); + +void VIP_SetInstantDisplayHack(bool); +void VIP_SetAllowDrawSkip(bool); +void VIP_Set3DMode(uint32 mode, bool reverse, uint32 prescale, uint32 sbs_separation); +void VIP_SetParallaxDisable(bool disabled); +void VIP_SetDefaultColor(uint32 default_color); +void VIP_SetAnaglyphColors(uint32 lcolor, uint32 rcolor); // R << 16, G << 8, B << 0 + +v810_timestamp_t MDFN_FASTCALL VIP_Update(const v810_timestamp_t timestamp); +void VIP_ResetTS(void); + +void VIP_StartFrame(EmulateSpecStruct *espec); + +uint8 VIP_Read8(v810_timestamp_t ×tamp, uint32 A); +uint16 VIP_Read16(v810_timestamp_t ×tamp, uint32 A); + + +void VIP_Write8(v810_timestamp_t ×tamp, uint32 A, uint8 V); +void VIP_Write16(v810_timestamp_t ×tamp, uint32 A, uint16 V); + + + +int VIP_StateAction(StateMem *sm, int load, int data_only); + + +enum +{ + VIP_GSREG_IPENDING = 0, // Current pending interrupt(bits) + VIP_GSREG_IENABLE, + + VIP_GSREG_DPCTRL, + + VIP_GSREG_BRTA, + VIP_GSREG_BRTB, + VIP_GSREG_BRTC, + VIP_GSREG_REST, + VIP_GSREG_FRMCYC, + VIP_GSREG_XPCTRL, + + VIP_GSREG_SPT0, + VIP_GSREG_SPT1, + VIP_GSREG_SPT2, + VIP_GSREG_SPT3, + + VIP_GSREG_GPLT0, + VIP_GSREG_GPLT1, + VIP_GSREG_GPLT2, + VIP_GSREG_GPLT3, + + VIP_GSREG_JPLT0, + VIP_GSREG_JPLT1, + VIP_GSREG_JPLT2, + VIP_GSREG_JPLT3, + + VIP_GSREG_BKCOL, +}; + +uint32 VIP_GetRegister(const unsigned int id, char *special, const uint32 special_len); +void VIP_SetRegister(const unsigned int id, const uint32 value); + + +} +#endif diff --git a/libmednahawk/src/vb/vip_draw.inc b/libmednahawk/src/vb/vip_draw.inc new file mode 100644 index 0000000000..56068db605 --- /dev/null +++ b/libmednahawk/src/vb/vip_draw.inc @@ -0,0 +1,474 @@ +#include "vb.h" + +#define BGM_AFFINE 0x2 +#define BGM_OBJ 0x3 + + +static void DrawBG(uint8 *target, uint16 RealY, bool lr, uint8 bgmap_base_raw, bool overplane, uint16 overplane_char, uint32 SourceX, uint32 SourceY, uint32 scx, uint32 scy, uint16 DestX, uint16 DestY, uint16 DestWidth, uint16 DestHeight) +{ + const uint16 *CHR16 = CHR_RAM; + const uint16 *BGMap = DRAM; + uint32 BGMap_Base = bgmap_base_raw << 12; + int32 start_x, final_x; + const uint32 bgsc_overplane = DRAM[overplane_char]; + const uint32 BGMap_XCount = 1 << scx; + const uint32 BGMap_YCount = 1 << scy; + const uint32 SourceX_Size = 512 * BGMap_XCount; + const uint32 SourceY_Size = 512 * BGMap_YCount; + const uint32 SourceX_Mask = overplane ? 0x1FFF : (SourceX_Size - 1); + const uint32 SourceY_Mask = overplane ? 0x1FFF : (SourceY_Size - 1); + + if((uint16)(RealY - DestY) > DestHeight) + return; + + //printf("%d, %d, %d, %d\n", overplane, srcXSize, srcYSize, bgmap_base_raw); + + DestX = sign_10_to_s16(DestX); + + if(DestX & 0x8000) + SourceX -= DestX; + + start_x = (int16)DestX; + final_x = (int16)DestX + DestWidth; + + if(start_x < 0) + start_x = 0; + + if(final_x > 383) + final_x = 383; + + if(start_x > final_x) + return; + + // Optimization: + SourceY &= SourceY_Mask; + BGMap_Base |= (((SourceY >> 3) & 0x3F) * 0x40) | (((SourceY << 3) & ~0xFFF) << scx); + + for(int x = start_x; x <= final_x; x++) + { + uint32 bgsc; + uint32 char_no; + uint32 palette_selector; + uint32 hflip_xor; + uint32 vflip_xor; + + SourceX &= SourceX_Mask; + + bgsc = bgsc_overplane; + + if(SourceX < SourceX_Size && SourceY < SourceY_Size) + bgsc = BGMap[(BGMap_Base | ((SourceX << 3) & ~0xFFF) | ((SourceX >> 3) & 0x3F)) & 0xFFFF]; + + char_no = bgsc & 0x7FF; + palette_selector = bgsc >> 14; + hflip_xor = (bgsc & 0x2000) ? 7 : 0; //(((int32)bgsc << 18) >> 31) & 0x7; + vflip_xor = (bgsc & 0x1000) ? 7 : 0; //(((int32)bgsc << 19) >> 31) & 0x7; + + unsigned int char_sub_y = vflip_xor ^ (SourceY & 0x7); + + if(!(SourceX & 7) && (x + 7) <= final_x) + { + uint32 pixels = CHR16[char_no * 8 + char_sub_y]; + + #if 0 + unsigned int char_sub_x; + uint8 *sub_target = target + x + 8; + + for(int sub_x = -8; sub_x < 0; sub_x++) + { + if(pixels & 3) sub_target[sub_x] = GPLT_Cache[palette_selector][pixels & 3]; + pixels >>= 2; + } + #endif + + if(bgsc & 0x2000) + { + if((pixels >> 14) & 3) target[0 + x] = GPLT_Cache[palette_selector][(pixels >> 14) & 3]; + if((pixels >> 12) & 3) target[1 + x] = GPLT_Cache[palette_selector][(pixels >> 12) & 3]; + if((pixels >> 10) & 3) target[2 + x] = GPLT_Cache[palette_selector][(pixels >> 10) & 3]; + if((pixels >> 8) & 3) target[3 + x] = GPLT_Cache[palette_selector][(pixels >> 8) & 3]; + if((pixels >> 6) & 3) target[4 + x] = GPLT_Cache[palette_selector][(pixels >> 6) & 3]; + if((pixels >> 4) & 3) target[5 + x] = GPLT_Cache[palette_selector][(pixels >> 4) & 3]; + if((pixels >> 2) & 3) target[6 + x] = GPLT_Cache[palette_selector][(pixels >> 2) & 3]; + if((pixels >> 0) & 3) target[7 + x] = GPLT_Cache[palette_selector][(pixels >> 0) & 3]; + } + else + { + if((pixels >> 0) & 3) target[0 + x] = GPLT_Cache[palette_selector][(pixels >> 0) & 3]; + if((pixels >> 2) & 3) target[1 + x] = GPLT_Cache[palette_selector][(pixels >> 2) & 3]; + if((pixels >> 4) & 3) target[2 + x] = GPLT_Cache[palette_selector][(pixels >> 4) & 3]; + if((pixels >> 6) & 3) target[3 + x] = GPLT_Cache[palette_selector][(pixels >> 6) & 3]; + if((pixels >> 8) & 3) target[4 + x] = GPLT_Cache[palette_selector][(pixels >> 8) & 3]; + if((pixels >> 10) & 3) target[5 + x] = GPLT_Cache[palette_selector][(pixels >> 10) & 3]; + if((pixels >> 12) & 3) target[6 + x] = GPLT_Cache[palette_selector][(pixels >> 12) & 3]; + if((pixels >> 14) & 3) target[7 + x] = GPLT_Cache[palette_selector][(pixels >> 14) & 3]; + } + + x += 7; + SourceX += 8; + } + else + { + unsigned int char_sub_x; + + char_sub_x = hflip_xor ^ (SourceX & 0x7); + + uint8 pixel = (CHR16[char_no * 8 + char_sub_y] >> (char_sub_x * 2)) & 0x3; + + if(pixel) + target[x] = GPLT_Cache[palette_selector][pixel]; //target[x] = (GPLT[palette_selector] >> (pixel * 2)) & 0x3; + SourceX++; + } + } +} + +static void DrawAffine(uint8 *target, uint16 RealY, bool lr, uint32 ParamBase, uint32 BGMap_Base, bool OverplaneMode, uint16 OverplaneChar, uint32 scx, uint32 scy, + uint16 DestX, uint16 DestY, uint16 DestWidth, uint16 DestHeight) +{ + const uint16 *CHR16 = CHR_RAM; + const uint16 *BGMap = DRAM; + + const uint32 BGMap_XCount = 1 << scx; + const uint32 BGMap_YCount = 1 << scy; + const uint32 SourceX_Size = 512 * BGMap_XCount; + const uint32 SourceY_Size = 512 * BGMap_YCount; + + const uint16 *param_ptr = &DRAM[(ParamBase + 8 * (RealY - DestY)) & 0xFFFF]; + int16 mx = param_ptr[0], mp = (ParallaxDisabled ? 0 : param_ptr[1]), my = param_ptr[2], dx = param_ptr[3], dy = param_ptr[4]; + + uint32 SourceX, SourceY; + uint32 SourceX_Mask, SourceY_Mask; + + int32 start_x, final_x; + const uint32 bgsc_overplane = DRAM[OverplaneChar]; + + + DestX = sign_10_to_s16(DestX); + + if((uint16)(RealY - DestY) > DestHeight) + return; + + SourceX = (int32)mx << 6; + SourceY = (int32)my << 6; + + if(DestX & 0x8000) + { + SourceX += dx * (65536 - DestX); + SourceY += dy * (65536 - DestX); + } + + if(mp >= 0 && lr) + { + SourceX += dx * mp; + SourceY += dy * mp; + } + else if(mp < 0 && !lr) + { + SourceX += dx * -mp; + SourceY += dy * -mp; + } + + if(OverplaneMode) + { + SourceX_Mask = 0x3FFFFFF; //(((uint32)SourceX_Size << 9) * 2) - 1; + SourceY_Mask = 0x3FFFFFF; //(((uint32)SourceY_Size << 9) * 2) - 1; + } + else + { + SourceX_Mask = ((uint32)SourceX_Size << 9) - 1; + SourceY_Mask = ((uint32)SourceY_Size << 9) - 1; + } + + start_x = (int16)DestX; + final_x = (int16)DestX + DestWidth; + + if(start_x < 0) + start_x = 0; + + if(final_x > 383) + final_x = 383; + +if(dy == 0) // Optimization for no rotation. +{ + SourceY &= SourceY_Mask; + + if(SourceY >= (SourceY_Size << 9)) + return; + + BGMap_Base |= (((SourceY >> 6) & ~0xFFF) << scx) | (((SourceY >> 12) & 0x3F) * 0x40); + for(int x = start_x; x <= final_x; x++) + { + uint32 bgsc; + uint32 hflip_xor; + uint32 vflip_xor; + uint32 pixel = 0; + + SourceX &= SourceX_Mask; + + bgsc = bgsc_overplane; + + if(SourceX < (SourceX_Size << 9)) + bgsc = BGMap[(BGMap_Base | ((SourceX >> 6) & ~0xFFF) | ((SourceX >> 12) & 0x3F)) & 0xFFFF]; + + //hflip_xor = bgsc & 0x2000 ? 0xE : 0; + //vflip_xor = bgsc & 0x1000 ? 0x7 : 0; + hflip_xor = ((int32)(bgsc << 18) >> 30) & 0xE; + vflip_xor = ((int32)(bgsc << 19) >> 31) & 0x7; + + unsigned int char_sub_y = vflip_xor ^ ((SourceY >> 9) & 0x7); + unsigned int char_sub_x = hflip_xor ^ ((SourceX >> 8) & 0xE); + + pixel = (CHR16[((bgsc & 0x7FF) * 8) | char_sub_y] >> char_sub_x) & 0x3; + + if(pixel) + target[x] = GPLT_Cache[bgsc >> 14][pixel]; + + SourceX += dx; + } +} +else + for(int x = start_x; x <= final_x; x++) + { + uint32 bgsc; + uint32 char_no; + uint32 palette_selector; + uint32 hflip_xor; + uint32 vflip_xor; + uint8 pixel = 0; + + SourceX &= SourceX_Mask; + SourceY &= SourceY_Mask; + + bgsc = bgsc_overplane; + + if(SourceX < (SourceX_Size << 9) && SourceY < (SourceY_Size << 9)) + { + uint32 m_index = ((SourceX >> 6) & ~0xFFF) + (((SourceY >> 6) & ~0xFFF) << scx); + uint32 sub_index = ((SourceX >> 12) & 0x3F) + (((SourceY >> 12) & 0x3F) * 0x40); + + bgsc = BGMap[(BGMap_Base | m_index | sub_index) & 0xFFFF]; + + //bgsc = BGMap[(BGMapBase + (SourceX >> 12) + (SourceY >> 12) * (SourceX_Size >> 3)) & 0xFFFF ]; + } + char_no = bgsc & 0x7FF; + palette_selector = bgsc >> 14; + hflip_xor = bgsc & 0x2000 ? 7 : 0; //(((int32)bgsc << 18) >> 31) & 0x7; + vflip_xor = bgsc & 0x1000 ? 7 : 0; //(((int32)bgsc << 19) >> 31) & 0x7; + + unsigned int char_sub_y = vflip_xor ^ ((SourceY >> 9) & 0x7); + unsigned int char_sub_x = hflip_xor ^ ((SourceX >> 9) & 0x7); + + pixel = (CHR16[char_no * 8 + char_sub_y] >> (char_sub_x * 2)) & 0x3; + + if(pixel) + target[x] = GPLT_Cache[palette_selector][pixel]; + + SourceX += dx; + SourceY += dy; + } +} + +static int obj_search_which; + +static void DrawOBJ(uint8 *fb[2], uint16 Y, bool lron[2]) +{ + const uint16 *CHR16 = CHR_RAM; + + int32 start_oam; + int32 end_oam; + + start_oam = SPT[obj_search_which]; + + end_oam = 1023; + if(obj_search_which) + end_oam = SPT[obj_search_which - 1]; + + int32 oam = start_oam; + do + { + const uint16 *oam_ptr = &DRAM[(0x1E000 + (oam * 8)) >> 1]; + const uint32 jy = oam_ptr[2]; + const uint32 tile_y = (Y - jy) & 0xFF; // I think this mask is right. See: http://www.planetvb.com/modules/newbb/viewtopic.php?topic_id=3797&forum=2 + + if(tile_y >= 8) + continue; + + uint32 jx = oam_ptr[0]; + uint32 jp = ParallaxDisabled ? 0 : (oam_ptr[1] & 0x3FFF); + uint32 palette_selector = oam_ptr[3] >> 14; + uint32 vflip_xor = (oam_ptr[3] & 0x1000) ? 7 : 0; + uint32 char_sub_y = vflip_xor ^ tile_y; + bool jlron[2] = { (bool)(oam_ptr[1] & 0x8000), (bool)(oam_ptr[1] & 0x4000) }; + uint32 char_no = oam_ptr[3] & 0x7FF; + const uint32 pixels_save = CHR16[char_no * 8 + char_sub_y]; + + for(int lr = 0; lr < 2; lr++) + { + if(!(jlron[lr] & lron[lr])) + continue; + + uint32 pixels = pixels_save; + int32 x = sign_x_to_s32(10, (jx + (lr ? jp : -jp))); // It may actually be 9, TODO? + + if(x >= -7 && x < 384) // Make sure we always keep the pitch of our 384x8 buffer large enough(with padding before and after the visible space) + { + uint8 *target = &fb[lr][x]; + + if(oam_ptr[3] & 0x2000) + { + target += 7; + + for(int meow = 8; meow; meow--) + { + if(pixels & 3) + *target = JPLT_Cache[palette_selector][pixels & 3]; + target--; + pixels >>= 2; + } + } + else + { + for(int meow = 8; meow; meow--) + { + if(pixels & 3) + *target = JPLT_Cache[palette_selector][pixels & 3]; + target++; + pixels >>= 2; + } + } + #if 0 + if(oam_ptr[3] & 0x2000) + { + if((pixels >> 14) & 3) fb[lr][0 + x] = JPLT_Cache[palette_selector][(pixels >> 14) & 3]; + if((pixels >> 12) & 3) fb[lr][1 + x] = JPLT_Cache[palette_selector][(pixels >> 12) & 3]; + if((pixels >> 10) & 3) fb[lr][2 + x] = JPLT_Cache[palette_selector][(pixels >> 10) & 3]; + if((pixels >> 8) & 3) fb[lr][3 + x] = JPLT_Cache[palette_selector][(pixels >> 8) & 3]; + if((pixels >> 6) & 3) fb[lr][4 + x] = JPLT_Cache[palette_selector][(pixels >> 6) & 3]; + if((pixels >> 4) & 3) fb[lr][5 + x] = JPLT_Cache[palette_selector][(pixels >> 4) & 3]; + if((pixels >> 2) & 3) fb[lr][6 + x] = JPLT_Cache[palette_selector][(pixels >> 2) & 3]; + if((pixels >> 0) & 3) fb[lr][7 + x] = JPLT_Cache[palette_selector][(pixels >> 0) & 3]; + } + else + { + if((pixels >> 0) & 3) fb[lr][0 + x] = JPLT_Cache[palette_selector][(pixels >> 0) & 3]; + if((pixels >> 2) & 3) fb[lr][1 + x] = JPLT_Cache[palette_selector][(pixels >> 2) & 3]; + if((pixels >> 4) & 3) fb[lr][2 + x] = JPLT_Cache[palette_selector][(pixels >> 4) & 3]; + if((pixels >> 6) & 3) fb[lr][3 + x] = JPLT_Cache[palette_selector][(pixels >> 6) & 3]; + if((pixels >> 8) & 3) fb[lr][4 + x] = JPLT_Cache[palette_selector][(pixels >> 8) & 3]; + if((pixels >> 10) & 3) fb[lr][5 + x] = JPLT_Cache[palette_selector][(pixels >> 10) & 3]; + if((pixels >> 12) & 3) fb[lr][6 + x] = JPLT_Cache[palette_selector][(pixels >> 12) & 3]; + if((pixels >> 14) & 3) fb[lr][7 + x] = JPLT_Cache[palette_selector][(pixels >> 14) & 3]; + } +#endif + + } + + } + } while( (oam = (oam - 1) & 1023) != end_oam); + +} + + +void VIP_DrawBlock(uint8 block_no, uint8 *fb_l, uint8 *fb_r) +{ + for(int y = 0; y < 8; y++) + { + memset(fb_l + y * 512, BKCOL, 384); + memset(fb_r + y * 512, BKCOL, 384); + } + + obj_search_which = 3; + + for(int world = 31; world >= 0; world--) + { + const uint16 *world_ptr = &DRAM[(0x1D800 + world * 0x20) >> 1]; + + uint32 bgmap_base = world_ptr[0] & 0xF; + bool end = world_ptr[0] & 0x40; + bool over = world_ptr[0] & 0x80; + uint32 scy = (world_ptr[0] >> 8) & 3; + uint32 scx = (world_ptr[0] >> 10) & 3; + uint32 bgm = (world_ptr[0] >> 12) & 3; + bool lron[2] = { (bool)(world_ptr[0] & 0x8000), (bool)(world_ptr[0] & 0x4000) }; + + uint16 gx = sign_11_to_s16(world_ptr[1]); + uint16 gp = ParallaxDisabled ? 0 : sign_9_to_s16(world_ptr[2]); + uint16 gy = sign_11_to_s16(world_ptr[3]); + uint16 mx = world_ptr[4]; + uint16 mp = ParallaxDisabled ? 0 : sign_9_to_s16(world_ptr[5]); + uint16 my = world_ptr[6]; + uint16 window_width = sign_11_to_s16(world_ptr[7]); + uint16 window_height = (world_ptr[8] & 0x3FF); + uint32 param_base = (world_ptr[9] & 0xFFF0); + uint16 overplane_char = world_ptr[10]; + + if(end) + break; + + if(((512 << scx) + (512 << scy)) > 4096) + { + printf("BG Size too large for world: %d(scx=%d, scy=%d)\n", world, scx, scy); + } + +// if(world != 2) +// continue; + + // if(block_no == 8) + // printf("World: %d; gx: %d, gp: %d, gy: %d, mx: %d, mp: %d, my: %d, window_width: %d, window_height: %d\n", world, gx, gp, gy, mx, mp, my, window_width, window_height); + + for(int y = 0; y < 8; y++) + { + uint8 *fb[2] = { &fb_l[y * 512], &fb_r[y * 512] }; + + if(bgm == BGM_OBJ) + { + if(!lron[0] || !lron[1]) + printf("Bad OBJ World? %d(%d/%d) %d~%d\n", world, lron[0], lron[1], SPT[obj_search_which], obj_search_which ? (SPT[obj_search_which - 1] + 1) : 0); + + DrawOBJ(fb, (block_no * 8) + y, lron); + } + else if(bgm == BGM_AFFINE) + { + //if(((block_no * 8) + y) == 128) + // printf("Draw affine: %d %d\n", gx, gp); + for(int lr = 0; lr < 2; lr++) + { + if(lron[lr]) + { + DrawAffine(fb[lr], (block_no * 8) + y, lr, param_base, bgmap_base * 4096, over, overplane_char, scx, scy, + gx + (lr ? gp : -gp), gy, window_width, window_height); + } + } + } + else + for(int lr = 0; lr < 2; lr++) + { + uint16 srcX, srcY; + uint16 RealY = (block_no * 8) + y; + uint16 DestX; + uint16 DestY; + + srcX = mx + (lr ? mp : -mp); + srcY = my + (RealY - gy); + + DestX = gx + (lr ? gp : -gp); + DestY = gy; + + if(lron[lr]) + { + if(bgm == 1) // HBias + srcX += (int16)DRAM[(param_base + (((RealY - DestY) * 2) | lr)) & 0xFFFF]; + + DrawBG(fb[lr], RealY, lr, bgmap_base, over, overplane_char, (int32)(int16)srcX, (int32)(int16)srcY, scx, scy, DestX, DestY, window_width, window_height); + } + } + } + + if(bgm == BGM_OBJ) + if(obj_search_which) + obj_search_which--; + + } + + +} diff --git a/libmednahawk/src/vb/vsu.cpp b/libmednahawk/src/vb/vsu.cpp new file mode 100644 index 0000000000..c527e66665 --- /dev/null +++ b/libmednahawk/src/vb/vsu.cpp @@ -0,0 +1,520 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "vb.h" +#include "vsu.h" + +static const unsigned int Tap_LUT[8] = { 15 - 1, 11 - 1, 14 - 1, 5 - 1, 9 - 1, 7 - 1, 10 - 1, 12 - 1 }; + +VSU::VSU(Blip_Buffer *bb_l, Blip_Buffer *bb_r) +{ + sbuf[0] = bb_l; + sbuf[1] = bb_r; + + Synth.volume(1.0 / 6 / 2); +} + +VSU::~VSU() +{ + for(int ch = 0; ch < 6; ch++) + { + for(int lr = 0; lr < 2; lr++) + last_output[ch][lr] = 0; + } + +} + +void VSU::Power(void) +{ + SweepControl = 0; + SweepModCounter = 0; + SweepModClockDivider = 1; + + for(int ch = 0; ch < 6; ch++) + { + IntlControl[ch] = 0; + LeftLevel[ch] = 0; + RightLevel[ch] = 0; + Frequency[ch] = 0; + EnvControl[ch] = 0; + RAMAddress[ch] = 0; + + EffFreq[ch] = 0; + Envelope[ch] = 0; + WavePos[ch] = 0; + FreqCounter[ch] = 0; + IntervalCounter[ch] = 0; + EnvelopeCounter[ch] = 0; + + EffectsClockDivider[ch] = 4800; + IntervalClockDivider[ch] = 4; + EnvelopeClockDivider[ch] = 4; + + LatcherClockDivider[ch] = 120; + } + + + NoiseLatcherClockDivider = 120; + NoiseLatcher = 0; + + memset(WaveData, 0, sizeof(WaveData)); + memset(ModData, 0, sizeof(ModData)); + + last_ts = 0; +} + +void VSU::Write(int32 timestamp, uint32 A, uint8 V) +{ + A &= 0x7FF; + + Update(timestamp); + + //printf("VSU Write: %d, %08x %02x\n", timestamp, A, V); + + if(A < 0x280) + WaveData[A >> 7][(A >> 2) & 0x1F] = V & 0x3F; + else if(A < 0x400) + { + //if(A >= 0x300) + // printf("Modulation mirror write? %08x %02x\n", A, V); + ModData[(A >> 2) & 0x1F] = V; + } + else if(A < 0x600) + { + int ch = (A >> 6) & 0xF; + + //if(ch < 6) + //printf("Ch: %d, Reg: %d, Value: %02x\n", ch, (A >> 2) & 0xF, V); + + if(ch > 5) + { + if(A == 0x580 && (V & 1)) + { + //puts("STOP, HAMMER TIME"); + for(int i = 0; i < 6; i++) + IntlControl[i] &= ~0x80; + } + } + else + switch((A >> 2) & 0xF) + { + case 0x0: IntlControl[ch] = V & ~0x40; + + if(V & 0x80) + { + EffFreq[ch] = Frequency[ch]; + if(ch == 5) + FreqCounter[ch] = 10 * (2048 - EffFreq[ch]); + else + FreqCounter[ch] = 2048 - EffFreq[ch]; + IntervalCounter[ch] = (V & 0x1F) + 1; + EnvelopeCounter[ch] = (EnvControl[ch] & 0x7) + 1; + + if(ch == 4) + { + SweepModCounter = (SweepControl >> 4) & 7; + SweepModClockDivider = (SweepControl & 0x80) ? 8 : 1; + ModWavePos = 0; + } + + WavePos[ch] = 0; + + if(ch == 5) + lfsr = 1; + + //if(!(IntlControl[ch] & 0x80)) + // Envelope[ch] = (EnvControl[ch] >> 4) & 0xF; + + EffectsClockDivider[ch] = 4800; + IntervalClockDivider[ch] = 4; + EnvelopeClockDivider[ch] = 4; + } + break; + + case 0x1: LeftLevel[ch] = (V >> 4) & 0xF; + RightLevel[ch] = (V >> 0) & 0xF; + break; + + case 0x2: Frequency[ch] &= 0xFF00; + Frequency[ch] |= V << 0; + EffFreq[ch] &= 0xFF00; + EffFreq[ch] |= V << 0; + break; + + case 0x3: Frequency[ch] &= 0x00FF; + Frequency[ch] |= (V & 0x7) << 8; + EffFreq[ch] &= 0x00FF; + EffFreq[ch] |= (V & 0x7) << 8; + break; + + case 0x4: EnvControl[ch] &= 0xFF00; + EnvControl[ch] |= V << 0; + + Envelope[ch] = (V >> 4) & 0xF; + break; + + case 0x5: EnvControl[ch] &= 0x00FF; + if(ch == 4) + EnvControl[ch] |= (V & 0x73) << 8; + else if(ch == 5) + EnvControl[ch] |= (V & 0x73) << 8; + else + EnvControl[ch] |= (V & 0x03) << 8; + break; + + case 0x6: RAMAddress[ch] = V & 0xF; + break; + + case 0x7: if(ch == 4) + { + SweepControl = V; + } + break; + } + } +} + +INLINE void VSU::CalcCurrentOutput(int ch, int &left, int &right) +{ + if(!(IntlControl[ch] & 0x80)) + { + left = right = 0; + return; + } + + int WD; + int l_ol, r_ol; + + if(ch == 5) + WD = NoiseLatcher; //(NoiseLatcher << 6) - NoiseLatcher; + else + { + if(RAMAddress[ch] > 4) + WD = 0; + else + WD = WaveData[RAMAddress[ch]][WavePos[ch]]; // - 0x20; + } + l_ol = Envelope[ch] * LeftLevel[ch]; + if(l_ol) + { + l_ol >>= 3; + l_ol += 1; + } + + r_ol = Envelope[ch] * RightLevel[ch]; + if(r_ol) + { + r_ol >>= 3; + r_ol += 1; + } + + left = WD * l_ol; + right = WD * r_ol; +} + +void VSU::Update(int32 timestamp) +{ + //puts("VSU Start"); + int left, right; + + for(int ch = 0; ch < 6; ch++) + { + int32 clocks = timestamp - last_ts; + int32 running_timestamp = last_ts; + + // Output sound here + CalcCurrentOutput(ch, left, right); + Synth.offset_inline(running_timestamp, left - last_output[ch][0], sbuf[0]); + Synth.offset_inline(running_timestamp, right - last_output[ch][1], sbuf[1]); + last_output[ch][0] = left; + last_output[ch][1] = right; + + if(!(IntlControl[ch] & 0x80)) + continue; + + while(clocks > 0) + { + int32 chunk_clocks = clocks; + + if(chunk_clocks > EffectsClockDivider[ch]) + chunk_clocks = EffectsClockDivider[ch]; + + if(ch == 5) + { + if(chunk_clocks > NoiseLatcherClockDivider) + chunk_clocks = NoiseLatcherClockDivider; + } + else + { + if(EffFreq[ch] >= 2040) + { + if(chunk_clocks > LatcherClockDivider[ch]) + chunk_clocks = LatcherClockDivider[ch]; + } + else + { + if(chunk_clocks > FreqCounter[ch]) + chunk_clocks = FreqCounter[ch]; + } + } + + if(ch == 5 && chunk_clocks > NoiseLatcherClockDivider) + chunk_clocks = NoiseLatcherClockDivider; + + FreqCounter[ch] -= chunk_clocks; + while(FreqCounter[ch] <= 0) + { + if(ch == 5) + { + int feedback = ((lfsr >> 7) & 1) ^ ((lfsr >> Tap_LUT[(EnvControl[5] >> 12) & 0x7]) & 1); + lfsr = ((lfsr << 1) & 0x7FFF) | feedback; + + FreqCounter[ch] += 10 * (2048 - EffFreq[ch]); + } + else + { + FreqCounter[ch] += 2048 - EffFreq[ch]; + WavePos[ch] = (WavePos[ch] + 1) & 0x1F; + } + } + + LatcherClockDivider[ch] -= chunk_clocks; + while(LatcherClockDivider[ch] <= 0) + LatcherClockDivider[ch] += 120; + + if(ch == 5) + { + NoiseLatcherClockDivider -= chunk_clocks; + if(!NoiseLatcherClockDivider) + { + NoiseLatcherClockDivider = 120; + NoiseLatcher = ((lfsr & 1) << 6) - (lfsr & 1); + } + } + + EffectsClockDivider[ch] -= chunk_clocks; + while(EffectsClockDivider[ch] <= 0) + { + EffectsClockDivider[ch] += 4800; + + IntervalClockDivider[ch]--; + while(IntervalClockDivider[ch] <= 0) + { + IntervalClockDivider[ch] += 4; + + if(IntlControl[ch] & 0x20) + { + IntervalCounter[ch]--; + if(!IntervalCounter[ch]) + { + IntlControl[ch] &= ~0x80; + } + } + + EnvelopeClockDivider[ch]--; + while(EnvelopeClockDivider[ch] <= 0) + { + EnvelopeClockDivider[ch] += 4; + + if(EnvControl[ch] & 0x0100) // Enveloping enabled? + { + EnvelopeCounter[ch]--; + if(!EnvelopeCounter[ch]) + { + EnvelopeCounter[ch] = (EnvControl[ch] & 0x7) + 1; + + if(EnvControl[ch] & 0x0008) // Grow + { + if(Envelope[ch] < 0xF || (EnvControl[ch] & 0x200)) + Envelope[ch] = (Envelope[ch] + 1) & 0xF; + } + else // Decay + { + if(Envelope[ch] > 0 || (EnvControl[ch] & 0x200)) + Envelope[ch] = (Envelope[ch] - 1) & 0xF; + } + } + } + + } // end while(EnvelopeClockDivider[ch] <= 0) + } // end while(IntervalClockDivider[ch] <= 0) + + if(ch == 4) + { + SweepModClockDivider--; + while(SweepModClockDivider <= 0) + { + SweepModClockDivider += (SweepControl & 0x80) ? 8 : 1; + + if(((SweepControl >> 4) & 0x7) && (EnvControl[ch] & 0x4000)) + { + if(SweepModCounter) + SweepModCounter--; + + if(!SweepModCounter) + { + SweepModCounter = (SweepControl >> 4) & 0x7; + + if(EnvControl[ch] & 0x1000) // Modulation + { + if(ModWavePos < 32 || (EnvControl[ch] & 0x2000)) + { + ModWavePos &= 0x1F; + + EffFreq[ch] = (EffFreq[ch] + (int8)ModData[ModWavePos]); + if(EffFreq[ch] < 0) + { + //puts("Underflow"); + EffFreq[ch] = 0; + } + else if(EffFreq[ch] > 0x7FF) + { + //puts("Overflow"); + EffFreq[ch] = 0x7FF; + } + ModWavePos++; + } + //puts("Mod"); + } + else // Sweep + { + int32 delta = EffFreq[ch] >> (SweepControl & 0x7); + int32 NewFreq = EffFreq[ch] + ((SweepControl & 0x8) ? delta : -delta); + + //printf("Sweep(%d): Old: %d, New: %d\n", ch, EffFreq[ch], NewFreq); + + if(NewFreq < 0) + EffFreq[ch] = 0; + else if(NewFreq > 0x7FF) + { + //EffFreq[ch] = 0x7FF; + IntlControl[ch] &= ~0x80; + } + else + EffFreq[ch] = NewFreq; + } + } + } + } // end while(SweepModClockDivider <= 0) + } // end if(ch == 4) + } // end while(EffectsClockDivider[ch] <= 0) + clocks -= chunk_clocks; + running_timestamp += chunk_clocks; + + // Output sound here too. + CalcCurrentOutput(ch, left, right); + Synth.offset_inline(running_timestamp, left - last_output[ch][0], sbuf[0]); + Synth.offset_inline(running_timestamp, right - last_output[ch][1], sbuf[1]); + last_output[ch][0] = left; + last_output[ch][1] = right; + } + } + last_ts = timestamp; + //puts("VSU End"); +} + +void VSU::EndFrame(int32 timestamp) +{ + Update(timestamp); + last_ts = 0; +} + +int VSU::StateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY(IntlControl, 6), + SFARRAY(LeftLevel, 6), + SFARRAY(RightLevel, 6), + + SFARRAY16(Frequency, 6), + SFARRAY16(EnvControl, 6), + SFARRAY(RAMAddress, 6), + SFVAR(SweepControl), + + SFARRAY(&WaveData[0][0], 5 * 0x20), + SFARRAY(ModData, 0x20), + + SFARRAY32(EffFreq, 6), + SFARRAY32(Envelope, 6), + + SFARRAY32(WavePos, 6), + + SFVAR(ModWavePos), + + SFARRAY32(LatcherClockDivider, 6), + SFARRAY32(FreqCounter, 6), + SFARRAY32(IntervalCounter, 6), + SFARRAY32(EnvelopeCounter, 6), + + SFVAR(SweepModCounter), + + SFARRAY32(EffectsClockDivider, 6), + SFARRAY32(IntervalClockDivider, 6), + SFARRAY32(EnvelopeClockDivider, 6), + + SFVAR(SweepModClockDivider), + + SFVAR(NoiseLatcherClockDivider), + SFVAR(NoiseLatcher), + SFVAR(lfsr), + SFEND + }; + + int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "VSU"); + + + if(load) + { + + } + + return(ret); +} + + + +uint8 VSU::PeekWave(const unsigned int which, uint32 Address) +{ + assert(which <= 4); + + Address &= 0x1F; + + return(WaveData[which][Address]); +} + +void VSU::PokeWave(const unsigned int which, uint32 Address, uint8 value) +{ + assert(which <= 4); + + Address &= 0x1F; + + WaveData[which][Address] = value & 0x3F; +} + +uint8 VSU::PeekModWave(uint32 Address) +{ + Address &= 0x1F; + return(ModData[Address]); +} + +void VSU::PokeModWave(uint32 Address, uint8 value) +{ + Address &= 0x1F; + + ModData[Address] = value & 0xFF; +} diff --git a/libmednahawk/src/vb/vsu.h b/libmednahawk/src/vb/vsu.h new file mode 100644 index 0000000000..c9fbd15620 --- /dev/null +++ b/libmednahawk/src/vb/vsu.h @@ -0,0 +1,81 @@ +#ifndef __VB_VSU_H +#define __VB_VSU_H + +#include + +class VSU +{ + public: + + VSU(Blip_Buffer *bb_l, Blip_Buffer *bb_r); + ~VSU(); + + void Power(void); + + void Write(int32 timestamp, uint32 A, uint8 V); + + void EndFrame(int32 timestamp); + + int StateAction(StateMem *sm, int load, int data_only); + + uint8 PeekWave(const unsigned int which, uint32 Address); + void PokeWave(const unsigned int which, uint32 Address, uint8 value); + + uint8 PeekModWave(uint32 Address); + void PokeModWave(uint32 Address, uint8 value); + + private: + + void CalcCurrentOutput(int ch, int &left, int &right); + + void Update(int32 timestamp); + + uint8 IntlControl[6]; + uint8 LeftLevel[6]; + uint8 RightLevel[6]; + uint16 Frequency[6]; + uint16 EnvControl[6]; // Channel 5/6 extra functionality tacked on too. + + uint8 RAMAddress[6]; + + uint8 SweepControl; + + uint8 WaveData[5][0x20]; + + uint8 ModData[0x20]; + + // + // + // + int32 EffFreq[6]; + int32 Envelope[6]; + + int32 WavePos[6]; + int32 ModWavePos; + + int32 LatcherClockDivider[6]; + + int32 FreqCounter[6]; + int32 IntervalCounter[6]; + int32 EnvelopeCounter[6]; + int32 SweepModCounter; + + int32 EffectsClockDivider[6]; + int32 IntervalClockDivider[6]; + int32 EnvelopeClockDivider[6]; + int32 SweepModClockDivider; + + int32 NoiseLatcherClockDivider; + uint32 NoiseLatcher; + + uint32 lfsr; + + int32 last_output[6][2]; + int32 last_ts; + + Blip_Buffer *sbuf[2]; + Blip_Synth Synth; + Blip_Synth NoiseSynth; +}; + +#endif diff --git a/libmednahawk/src/video-driver.h b/libmednahawk/src/video-driver.h new file mode 100644 index 0000000000..59a5bd231e --- /dev/null +++ b/libmednahawk/src/video-driver.h @@ -0,0 +1,9 @@ +#ifndef __VIDEO_DRIVER_H +#define __VIDEO_DRIVER_H + +#include "video.h" + +void MDFND_DispMessage(UTF8 *text); +void MDFNI_SaveSnapshot(const MDFN_Surface *src, const MDFN_Rect *rect, const MDFN_Rect *LineWidths); + +#endif diff --git a/libmednahawk/src/video.h b/libmednahawk/src/video.h new file mode 100644 index 0000000000..06d3628bc8 --- /dev/null +++ b/libmednahawk/src/video.h @@ -0,0 +1,18 @@ +#ifndef __MDFN_VIDEO_H +#define __MDFN_VIDEO_H + +#include "video/surface.h" +#include "video/primitives.h" +#include "video/text.h" + +#include + +void MDFN_ResetMessages(void); +void MDFN_InitFontData(void); +void MDFN_DispMessage(const char *format, ...) throw() MDFN_FORMATSTR(printf, 1, 2); + +int MDFN_InitVirtualVideo(void); +void MDFN_KillVirtualVideo(void); + + +#endif diff --git a/libmednahawk/src/video/Deinterlacer.cpp b/libmednahawk/src/video/Deinterlacer.cpp new file mode 100644 index 0000000000..964f487400 --- /dev/null +++ b/libmednahawk/src/video/Deinterlacer.cpp @@ -0,0 +1,109 @@ +#include "video-common.h" +#include "Deinterlacer.h" + +Deinterlacer::Deinterlacer() +{ + FieldBuffer = NULL; + + StateValid = false; + PrevHeight = 0; +} + +Deinterlacer::~Deinterlacer() +{ + if(FieldBuffer) + { + delete FieldBuffer; + FieldBuffer = NULL; + } +} + +void Deinterlacer::Process(MDFN_Surface *surface, const MDFN_Rect &DisplayRect, MDFN_Rect *LineWidths, const bool field) +{ + if(!FieldBuffer || FieldBuffer->w < surface->w || FieldBuffer->h < (surface->h / 2)) + { + if(FieldBuffer) + delete FieldBuffer; + + FieldBuffer = new MDFN_Surface(NULL, surface->w, surface->h / 2, surface->w, surface->format); + LWBuffer.resize(FieldBuffer->h); + } + + // + // We need to output with LineWidths as always being valid to handle the case of horizontal resolution change between fields + // while in interlace mode, so clear the first LineWidths entry if it's == ~0, and + // [...] + const bool LineWidths_In_Valid = (LineWidths[0].w != ~0); + if(surface->h && !LineWidths_In_Valid) + { + LineWidths[0].x = 0; + LineWidths[0].w = 0; + } + + for(int y = 0; y < DisplayRect.h / 2; y++) + { + // [...] + // set all relevant source line widths to the contents of DisplayRect(also simplifies the src_lw and related pointer calculation code + // farther below. + if(!LineWidths_In_Valid) + LineWidths[(y * 2) + field + DisplayRect.y] = DisplayRect; + + if(StateValid && PrevHeight == DisplayRect.h) + { + const uint32 *src = FieldBuffer->pixels + y * FieldBuffer->pitch32; + uint32 *dest = surface->pixels + ((y * 2) + (field ^ 1) + DisplayRect.y) * surface->pitch32; + MDFN_Rect *dest_lw = &LineWidths[(y * 2) + (field ^ 1) + DisplayRect.y]; + + dest_lw->x = 0; + dest_lw->w = LWBuffer[y]; + + memcpy(dest, src, LWBuffer[y] * sizeof(uint32)); + } + else + { + const MDFN_Rect *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y]; + const uint32 *src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitch32 + src_lw->x; + const int32 dly = ((y * 2) + (field + 1) + DisplayRect.y); + uint32 *dest = surface->pixels + dly * surface->pitch32; + + if(y == 0 && field) + { + uint32 black = surface->MakeColor(0, 0, 0); + + LineWidths[dly - 2] = *src_lw; + memset(&surface->pixels[(dly - 2) * surface->pitch32], black, src_lw->w * sizeof(uint32)); + } + + if(dly < (DisplayRect.y + DisplayRect.h)) + { + LineWidths[dly] = *src_lw; + memcpy(dest, src, src_lw->w * sizeof(uint32)); + } + } + + // + // + // + // + // + // + { + const MDFN_Rect *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y]; + const uint32 *src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitch32 + src_lw->x; + uint32 *dest = FieldBuffer->pixels + y * FieldBuffer->pitch32; + + memcpy(dest, src, src_lw->w * sizeof(uint32)); + LWBuffer[y] = src_lw->w; + } + } + + PrevHeight = DisplayRect.h; + StateValid = true; +} + + +void Deinterlacer::ClearState(void) +{ + StateValid = false; + PrevHeight = 0; +} diff --git a/libmednahawk/src/video/Deinterlacer.h b/libmednahawk/src/video/Deinterlacer.h new file mode 100644 index 0000000000..37690c1df9 --- /dev/null +++ b/libmednahawk/src/video/Deinterlacer.h @@ -0,0 +1,25 @@ +#ifndef __MDFN_DEINTERLACER_H +#define __MDFN_DEINTERLACER_H + +#include + +class Deinterlacer +{ + public: + + Deinterlacer(); + ~Deinterlacer(); + + void Process(MDFN_Surface *surface, const MDFN_Rect &DisplayRect, MDFN_Rect *LineWidths, const bool field); + + void ClearState(void); + + private: + + MDFN_Surface *FieldBuffer; + std::vector LWBuffer; + bool StateValid; + int32 PrevHeight; +}; + +#endif diff --git a/libmednahawk/src/video/Makefile.am.inc b/libmednahawk/src/video/Makefile.am.inc new file mode 100644 index 0000000000..3a5366b4cc --- /dev/null +++ b/libmednahawk/src/video/Makefile.am.inc @@ -0,0 +1 @@ +mednafen_SOURCES += video/surface.cpp video/font-data.cpp video/font-data-18x18.c video/font-data-12x13.c video/png.cpp video/primitives.cpp video/text.cpp video/video.cpp video/tblur.cpp video/selblur.cpp video/resize.cpp video/Deinterlacer.cpp diff --git a/libmednahawk/src/video/font-data-12x13.c b/libmednahawk/src/video/font-data-12x13.c new file mode 100644 index 0000000000..543f1e00c8 --- /dev/null +++ b/libmednahawk/src/video/font-data-12x13.c @@ -0,0 +1,43 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +//#include "../mednafen.h" +//#include "font-data.h" + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +typedef struct +{ + uint16_t glyph_num; + uint8_t data[13 * 2]; +} font12x13; + +font12x13 FontData12x13[]= +{ + #ifdef WANT_INTERNAL_CJK + #include "font12x13.h" + #else + + #endif +}; + +const int FontData12x13_Size = sizeof(FontData12x13); + diff --git a/libmednahawk/src/video/font-data-18x18.c b/libmednahawk/src/video/font-data-18x18.c new file mode 100644 index 0000000000..00df86651c --- /dev/null +++ b/libmednahawk/src/video/font-data-18x18.c @@ -0,0 +1,43 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +//#include "../mednafen.h" +//#include "font-data.h" + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +typedef struct +{ + uint16_t glyph_num; + uint8_t data[18 * 3]; +} font18x18; + +font18x18 FontData18x18[]= +{ + #ifdef WANT_INTERNAL_CJK + #include "font18x18.h" + #else + + #endif +}; + +const int FontData18x18_Size = sizeof(FontData18x18); + diff --git a/libmednahawk/src/video/font-data.cpp b/libmednahawk/src/video/font-data.cpp new file mode 100644 index 0000000000..5f93e764f2 --- /dev/null +++ b/libmednahawk/src/video/font-data.cpp @@ -0,0 +1,46 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "font-data.h" + +const font4x5 FontData4x5[] = +{ + #include "font4x5.h" +}; + +const font5x7 FontData5x7[] = +{ + #include "font5x7.h" +}; + +const font6x13 FontData6x13[] = +{ + #include "font6x13.h" +}; + +const font9x18 FontData9x18[]= +{ + #include "font9x18.h" +}; + + +const int FontData4x5_Size = sizeof(FontData4x5); +const int FontData5x7_Size = sizeof(FontData5x7); +const int FontData6x13_Size = sizeof(FontData6x13); +const int FontData9x18_Size = sizeof(FontData9x18); + diff --git a/libmednahawk/src/video/font-data.h b/libmednahawk/src/video/font-data.h new file mode 100644 index 0000000000..b5bacfb6d3 --- /dev/null +++ b/libmednahawk/src/video/font-data.h @@ -0,0 +1,63 @@ +// Note: The size of each these structs shouldn't exceed 256 bytes(current worst-case is about 56 bytes with the 18x18 font). + +typedef struct +{ + uint16 glyph_num; + uint8 data[5]; +} font4x5; + +typedef struct +{ + uint16 glyph_num; + uint8 data[7]; +} font5x7; + +typedef struct +{ + uint16 glyph_num; + uint8 data[13]; +} font6x13; + +typedef struct +{ + uint16 glyph_num; + uint8 data[18 * 2]; +} font9x18; + +extern const font4x5 FontData4x5[]; +extern const font5x7 FontData5x7[]; +extern const font6x13 FontData6x13[]; +extern const font9x18 FontData9x18[]; + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + uint16_t glyph_num; + uint8_t data[13 * 2]; +} font12x13; + +typedef struct +{ + uint16 glyph_num; + uint8 data[18 * 3]; +} font18x18; + +extern font12x13 FontData12x13[]; +extern font18x18 FontData18x18[]; + +extern const int FontData12x13_Size; +extern const int FontData18x18_Size; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + + +extern const int FontData4x5_Size; +extern const int FontData5x7_Size; +extern const int FontData6x13_Size; +extern const int FontData9x18_Size; + diff --git a/libmednahawk/src/video/font12x13.h b/libmednahawk/src/video/font12x13.h new file mode 100644 index 0000000000..1ce4961d0f --- /dev/null +++ b/libmednahawk/src/video/font12x13.h @@ -0,0 +1,19204 @@ +{ 0x0000, {0x00,0x00,0x00,0x00,0xAA,0xA0,0x00,0x00,0x80,0x20,0x00,0x00,0x80,0x20,0x00,0x00,0x80,0x20,0x00,0x00,0xAA,0xA0,0x00,0x00,0x00,0x00,}}, +{ 0x0020, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0021, {0x00,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x0022, {0x00,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0023, {0x00,0x00,0x08,0x80,0x08,0x80,0x3F,0xC0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0x80,0x22,0x00,0x22,0x00,0x22,0x00,0x00,0x00,}}, +{ 0x0024, {0x00,0x00,0x04,0x00,0x1F,0x00,0x24,0x80,0x25,0x80,0x3C,0x00,0x0F,0x00,0x05,0x80,0x34,0x80,0x24,0x80,0x1F,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x0025, {0x00,0x00,0x38,0x20,0x6C,0x40,0x6C,0x80,0x6D,0x00,0x3A,0x00,0x05,0xC0,0x0B,0x60,0x13,0x60,0x23,0x60,0x41,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0026, {0x00,0x00,0x1C,0x00,0x32,0x00,0x32,0x00,0x3C,0x00,0x19,0xC0,0x38,0x80,0x6D,0x80,0x63,0x00,0x67,0x00,0x38,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0027, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0028, {0x00,0x00,0x00,0x80,0x01,0x00,0x03,0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x01,0x00,0x00,0x80,0x00,0x00,}}, +{ 0x0029, {0x00,0x00,0x20,0x00,0x10,0x00,0x18,0x00,0x08,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x002A, {0x00,0x00,0x04,0x00,0x0E,0x00,0x24,0x80,0x75,0xC0,0x0E,0x00,0x0E,0x00,0x75,0xC0,0x24,0x80,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x002B, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x002C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x002D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x002E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x002F, {0x00,0x00,0x00,0x60,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0030, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0031, {0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0032, {0x00,0x00,0x00,0x00,0x0F,0x00,0x11,0x80,0x38,0xC0,0x19,0x80,0x01,0x00,0x02,0x00,0x04,0x40,0x0F,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0033, {0x00,0x00,0x00,0x00,0x0F,0x00,0x11,0x80,0x30,0xC0,0x01,0x80,0x07,0x00,0x00,0x80,0x30,0xC0,0x11,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0034, {0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x05,0x80,0x09,0x80,0x11,0x80,0x31,0x80,0x3F,0xC0,0x01,0x80,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0035, {0x00,0x00,0x00,0x00,0x1F,0x80,0x1F,0x00,0x10,0x00,0x1F,0x00,0x01,0x80,0x00,0xC0,0x00,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0036, {0x00,0x00,0x00,0x00,0x0F,0x00,0x11,0x80,0x30,0x00,0x2F,0x00,0x71,0x80,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0037, {0x00,0x00,0x00,0x00,0x1F,0xC0,0x1F,0x80,0x21,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0038, {0x00,0x00,0x00,0x00,0x0F,0x00,0x10,0x80,0x38,0xC0,0x1D,0x80,0x0F,0x00,0x1B,0x80,0x31,0xC0,0x10,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0039, {0x00,0x00,0x00,0x00,0x06,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x19,0xC0,0x0E,0xC0,0x00,0x80,0x31,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x003A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x003B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x003C, {0x00,0x00,0x00,0x40,0x01,0x80,0x02,0x00,0x0C,0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x0C,0x00,0x02,0x00,0x01,0x80,0x00,0x40,0x00,0x00,}}, +{ 0x003D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x003E, {0x00,0x00,0x20,0x00,0x18,0x00,0x04,0x00,0x03,0x00,0x00,0x80,0x00,0x40,0x00,0x80,0x03,0x00,0x04,0x00,0x18,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x003F, {0x00,0x00,0x0E,0x00,0x13,0x00,0x21,0x80,0x31,0x80,0x33,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x0040, {0x00,0x00,0x07,0x00,0x18,0xC0,0x27,0x20,0x29,0xA0,0x49,0xA0,0x51,0x20,0x53,0x40,0x4E,0x80,0x20,0x20,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0041, {0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x09,0x00,0x09,0x80,0x10,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0042, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3F,0x00,0x30,0x80,0x30,0xC0,0x30,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0043, {0x00,0x00,0x00,0x00,0x07,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0044, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0045, {0x00,0x00,0x00,0x00,0x7F,0x80,0x30,0x80,0x30,0x00,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0046, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0x40,0x18,0x00,0x18,0x80,0x1F,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0047, {0x00,0x00,0x00,0x00,0x0E,0x80,0x31,0x80,0x60,0x00,0x60,0x00,0x63,0xC0,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0048, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0049, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x004A, {0x00,0x00,0x00,0x00,0x07,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x61,0x80,0x61,0x80,0x63,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x004B, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0x80,0x31,0x00,0x33,0x00,0x35,0x80,0x39,0x80,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x004C, {0x00,0x00,0x00,0x00,0x7C,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x004D, {0x00,0x00,0x00,0x00,0x61,0xC0,0x31,0x80,0x31,0x80,0x3B,0x80,0x3B,0x80,0x2D,0x80,0x2D,0x80,0x25,0x80,0x71,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x004E, {0x00,0x00,0x00,0x00,0x31,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x11,0x80,0x10,0x80,0x39,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x004F, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0050, {0x00,0x00,0x00,0x00,0x3F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0051, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x6C,0xC0,0x33,0x80,0x1F,0x80,0x00,0xC0,0x00,0x00,}}, +{ 0x0052, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0053, {0x00,0x00,0x00,0x00,0x0E,0x80,0x11,0x80,0x30,0x80,0x1C,0x00,0x0F,0x00,0x03,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0054, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0055, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0056, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x18,0x40,0x18,0x80,0x0C,0x80,0x0D,0x00,0x07,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0057, {0x00,0x00,0x00,0x00,0xEE,0x60,0x66,0x40,0x66,0x40,0x37,0xC0,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0058, {0x00,0x00,0x00,0x00,0x79,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0E,0x00,0x13,0x00,0x21,0x80,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0059, {0x00,0x00,0x00,0x00,0x7B,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x005A, {0x00,0x00,0x00,0x00,0x7F,0x80,0x43,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x005B, {0x00,0x00,0x07,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x00,0x00,}}, +{ 0x005C, {0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x60,0x00,0x00,0x00,0x00,}}, +{ 0x005D, {0x00,0x00,0x3C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x3C,0x00,0x00,0x00,}}, +{ 0x005E, {0x00,0x00,0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x005F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,}}, +{ 0x0060, {0x00,0x00,0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0061, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0062, {0x00,0x00,0x00,0x00,0x38,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1C,0xC0,0x3B,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0063, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0064, {0x00,0x00,0x00,0x00,0x03,0x80,0x01,0x80,0x0D,0x80,0x33,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x80,0x1D,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0065, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0066, {0x00,0x00,0x00,0x00,0x07,0x00,0x09,0x80,0x18,0x00,0x3F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0067, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x19,0x80,0x11,0x80,0x11,0x00,0x0E,0x00,0x1F,0x80,0x31,0xC0,0x10,0x40,0x0F,0x80,}}, +{ 0x0068, {0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x36,0x00,0x3B,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0069, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x006A, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x13,0x00,0x32,0x00,0x1C,0x00,}}, +{ 0x006B, {0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x31,0x80,0x33,0x00,0x36,0x00,0x3F,0x00,0x33,0x00,0x31,0x80,0x79,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x006C, {0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x006D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6D,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x76,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x006E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x00,0x39,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x006F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0070, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x1C,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1C,0x80,0x1B,0x00,0x18,0x00,0x3C,0x00,}}, +{ 0x0071, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xC0,0x13,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x13,0x80,0x0D,0x80,0x01,0x80,0x03,0xC0,}}, +{ 0x0072, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x1D,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0073, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0074, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0075, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0076, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x18,0x80,0x18,0x80,0x0D,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0077, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xE0,0x76,0x40,0x36,0x40,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0078, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xC0,0x18,0x80,0x0D,0x00,0x06,0x00,0x0F,0x00,0x11,0x80,0x3B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0079, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7D,0xC0,0x30,0x80,0x18,0x80,0x19,0x00,0x0D,0x00,0x0E,0x00,0x66,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x007A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x21,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x007B, {0x00,0x00,0x01,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x02,0x00,0x0C,0x00,0x02,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x00,0x00,}}, +{ 0x007C, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x007D, {0x00,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x06,0x00,0x08,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x007E, {0x00,0x00,0x1C,0xC0,0x33,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00A0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00A1, {0x00,0x00,0x04,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x00A2, {0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x0F,0x00,0x1B,0x80,0x32,0xC0,0x32,0x00,0x34,0x00,0x1C,0xC0,0x0F,0x80,0x08,0x00,0x08,0x00,}}, +{ 0x00A3, {0x00,0x00,0x03,0x80,0x06,0xC0,0x0C,0xC0,0x0C,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x3C,0x20,0x4E,0x40,0x39,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00A4, {0x00,0x00,0x00,0x00,0x60,0xC0,0x35,0x80,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x1F,0x00,0x35,0x80,0x60,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00A5, {0x00,0x00,0x70,0xE0,0x30,0x40,0x18,0x80,0x0C,0x80,0x0D,0x00,0x3F,0xC0,0x06,0x00,0x3F,0xC0,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00A6, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00A7, {0x00,0x00,0x0E,0x00,0x11,0x00,0x18,0x00,0x0C,0x00,0x0E,0x00,0x13,0x00,0x19,0x00,0x0E,0x00,0x06,0x00,0x13,0x00,0x11,0x00,0x0E,0x00,}}, +{ 0x00A8, {0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00A9, {0x00,0x00,0x00,0x00,0x1F,0x80,0x20,0x40,0x4F,0x20,0x59,0xA0,0x58,0x20,0x59,0xA0,0x4F,0x20,0x20,0x40,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00AA, {0x00,0x00,0x1C,0x00,0x36,0x00,0x06,0x00,0x3E,0x00,0x66,0x00,0x3A,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00AB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x09,0x00,0x1B,0x00,0x1B,0x00,0x09,0x00,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00AC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x00AD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00AE, {0x00,0x00,0x00,0x00,0x1F,0x80,0x20,0x40,0x5F,0x20,0x59,0xA0,0x5F,0x20,0x5B,0x20,0x59,0xA0,0x20,0x40,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00AF, {0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00B0, {0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00B1, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00B2, {0x1C,0x00,0x26,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00B3, {0x1C,0x00,0x36,0x00,0x06,0x00,0x0C,0x00,0x06,0x00,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00B4, {0x00,0x00,0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00B5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x39,0xC0,0x36,0xE0,0x30,0x00,0x78,0x00,}}, +{ 0x00B6, {0x00,0x00,0x00,0x00,0x1F,0xC0,0x3D,0x80,0x3D,0x80,0x1D,0x80,0x0D,0x80,0x0D,0x80,0x0D,0x80,0x0D,0x80,0x0D,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00B7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00B8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x0E,0x00,}}, +{ 0x00B9, {0x18,0x00,0x38,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00BA, {0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00BB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x09,0x00,0x0D,0x80,0x0D,0x80,0x09,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00BC, {0x61,0x00,0xE1,0x00,0x62,0x00,0x62,0x00,0x64,0x00,0x65,0xC0,0xF9,0xC0,0x0B,0xC0,0x12,0xC0,0x16,0xC0,0x27,0xE0,0x20,0xC0,0x00,0x00,}}, +{ 0x00BD, {0x61,0x00,0xE1,0x00,0x62,0x00,0x62,0x00,0x64,0x00,0x65,0xC0,0xFA,0x60,0x08,0x60,0x10,0xC0,0x11,0x80,0x23,0x00,0x23,0xE0,0x00,0x00,}}, +{ 0x00BE, {0x61,0x00,0xB1,0x00,0x32,0x00,0x62,0x00,0x34,0x00,0xB5,0xC0,0x69,0xC0,0x0B,0xC0,0x12,0xC0,0x16,0xC0,0x27,0xE0,0x20,0xC0,0x00,0x00,}}, +{ 0x00BF, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x19,0x80,0x31,0x80,0x30,0x80,0x19,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x00C0, {0x06,0x00,0x03,0x00,0x00,0x80,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x00C1, {0x03,0x00,0x06,0x00,0x08,0x00,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x00C2, {0x06,0x00,0x0F,0x00,0x10,0x80,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x00C3, {0x0E,0xC0,0x1B,0x80,0x00,0x00,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x00C4, {0x19,0x80,0x19,0x80,0x00,0x00,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x00C5, {0x03,0x00,0x04,0x80,0x03,0x00,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x00C6, {0x00,0x00,0x00,0x00,0x07,0xC0,0x06,0x20,0x0E,0x00,0x12,0x40,0x13,0xC0,0x22,0x40,0x3E,0x00,0x42,0x20,0xE7,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00C7, {0x00,0x00,0x00,0x00,0x07,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x03,0x00,0x0E,0x00,}}, +{ 0x00C8, {0x18,0x00,0x0C,0x00,0x02,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00C9, {0x06,0x00,0x0C,0x00,0x10,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00CA, {0x0C,0x00,0x1E,0x00,0x21,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00CB, {0x33,0x00,0x33,0x00,0x00,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00CC, {0x0C,0x00,0x06,0x00,0x01,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00CD, {0x03,0x00,0x06,0x00,0x08,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00CE, {0x06,0x00,0x0F,0x00,0x10,0x80,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00CF, {0x19,0x80,0x19,0x80,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00D0, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x30,0xC0,0x30,0xC0,0x78,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00D1, {0x0E,0x40,0x13,0x80,0x00,0x00,0x3B,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x11,0x80,0x39,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00D2, {0x0C,0x00,0x06,0x00,0x01,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00D3, {0x06,0x00,0x0C,0x00,0x10,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00D4, {0x0C,0x00,0x1E,0x00,0x21,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00D5, {0x1D,0x80,0x37,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00D6, {0x19,0x80,0x19,0x80,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00D7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x19,0x80,0x0F,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00D8, {0x00,0x00,0x01,0x80,0x1F,0x80,0x33,0x80,0x66,0xC0,0x66,0xC0,0x6C,0xC0,0x6C,0xC0,0x78,0xC0,0x79,0x80,0x3F,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x00D9, {0x0C,0x00,0x06,0x00,0x01,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00DA, {0x01,0x80,0x03,0x00,0x04,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00DB, {0x06,0x00,0x0F,0x00,0x10,0x80,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00DC, {0x19,0x80,0x19,0x80,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00DD, {0x03,0x00,0x06,0x00,0x08,0x00,0x7B,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00DE, {0x00,0x00,0x00,0x00,0x38,0x00,0x1F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00DF, {0x00,0x00,0x00,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x1B,0x00,0x3B,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x3B,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00E0, {0x18,0x00,0x0C,0x00,0x02,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E1, {0x06,0x00,0x0C,0x00,0x10,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E2, {0x0C,0x00,0x1E,0x00,0x21,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E3, {0x00,0x00,0x1D,0x80,0x37,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E4, {0x00,0x00,0x33,0x00,0x33,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E5, {0x0C,0x00,0x12,0x00,0x0C,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3D,0xC0,0x66,0x60,0x66,0x60,0x1F,0xE0,0x66,0x00,0xC7,0x60,0x79,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00E7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x03,0x00,0x0E,0x00,}}, +{ 0x00E8, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00E9, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00EA, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00EB, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00EC, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00ED, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00EE, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00EF, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x00F0, {0x00,0x00,0x36,0x00,0x1C,0x00,0x1C,0x00,0x36,0x00,0x0E,0x00,0x1B,0x00,0x31,0x80,0x31,0x80,0x1B,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F1, {0x00,0x00,0x1D,0x80,0x37,0x00,0x00,0x00,0x77,0x00,0x39,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00F2, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F3, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F4, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F5, {0x00,0x00,0x0E,0xC0,0x1B,0x80,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F6, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x00F8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x0F,0xC0,0x19,0x80,0x33,0xC0,0x36,0xC0,0x3C,0xC0,0x19,0x80,0x1F,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x00F9, {0x18,0x00,0x0C,0x00,0x02,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00FA, {0x06,0x00,0x0C,0x00,0x10,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00FB, {0x0C,0x00,0x1E,0x00,0x21,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00FC, {0x00,0x00,0x33,0x00,0x33,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x00FD, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x7D,0xC0,0x30,0x80,0x18,0x80,0x19,0x00,0x0D,0x00,0x0E,0x00,0x66,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x00FE, {0x00,0x00,0x00,0x00,0x38,0x00,0x18,0x00,0x18,0x00,0x1F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,}}, +{ 0x00FF, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x7D,0xC0,0x30,0x80,0x18,0x80,0x19,0x00,0x0D,0x00,0x0E,0x00,0x66,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x0100, {0x00,0x00,0x0F,0x80,0x00,0x00,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0101, {0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0102, {0x18,0xC0,0x0F,0x80,0x00,0x00,0x02,0x00,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0103, {0x00,0x00,0x31,0x80,0x1F,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0104, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x12,0x00,0x13,0x00,0x21,0x00,0x3F,0x80,0x40,0x80,0xE1,0x80,0x01,0xA0,0x00,0xC0,}}, +{ 0x0105, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3D,0x80,0x03,0x00,0x01,0xC0,}}, +{ 0x0106, {0x01,0x80,0x03,0x00,0x04,0x00,0x0F,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0107, {0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0108, {0x06,0x00,0x0F,0x00,0x10,0x80,0x0F,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0109, {0x00,0x00,0x06,0x00,0x0F,0x00,0x10,0x80,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x010A, {0x06,0x00,0x06,0x00,0x00,0x00,0x0F,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x010B, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x010C, {0x10,0x80,0x0F,0x00,0x06,0x00,0x0F,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x010D, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x010E, {0x21,0x00,0x1E,0x00,0x0C,0x00,0x7E,0x00,0x31,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x010F, {0x42,0x00,0x3C,0x00,0x1B,0x80,0x01,0x80,0x0D,0x80,0x33,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x80,0x1D,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0110, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x30,0xC0,0x30,0xC0,0x78,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0111, {0x00,0x00,0x03,0x80,0x01,0x80,0x07,0xC0,0x01,0x80,0x1D,0x80,0x33,0x80,0x61,0x80,0x61,0x80,0x33,0x80,0x1D,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0112, {0x00,0x00,0x1F,0x00,0x00,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0113, {0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0114, {0x31,0x80,0x1F,0x00,0x00,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0115, {0x00,0x00,0x18,0xC0,0x0F,0x80,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0116, {0x0C,0x00,0x0C,0x00,0x00,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0117, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0118, {0x00,0x00,0x00,0x00,0x7F,0x80,0x30,0x80,0x30,0x00,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x08,0x00,0x0E,0x00,}}, +{ 0x0119, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x04,0x00,0x07,0x00,}}, +{ 0x011A, {0x21,0x00,0x1E,0x00,0x0C,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x011B, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x011C, {0x0C,0x00,0x1E,0x00,0x21,0x00,0x0E,0x80,0x31,0x80,0x60,0x00,0x63,0xC0,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x011D, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x0F,0xC0,0x19,0x80,0x11,0x80,0x11,0x00,0x0E,0x00,0x1F,0x80,0x31,0xC0,0x10,0x40,0x0F,0x80,}}, +{ 0x011E, {0x31,0x80,0x1F,0x00,0x00,0x00,0x0E,0x80,0x31,0x80,0x60,0x00,0x63,0xC0,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x011F, {0x00,0x00,0x18,0xC0,0x0F,0x80,0x00,0x00,0x0F,0xC0,0x19,0x80,0x11,0x80,0x11,0x00,0x0E,0x00,0x1F,0x80,0x31,0xC0,0x10,0x40,0x0F,0x80,}}, +{ 0x0120, {0x0C,0x00,0x0C,0x00,0x00,0x00,0x0E,0x80,0x31,0x80,0x60,0x00,0x63,0xC0,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0121, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x0F,0xC0,0x19,0x80,0x11,0x80,0x11,0x00,0x0E,0x00,0x1F,0x80,0x31,0xC0,0x10,0x40,0x0F,0x80,}}, +{ 0x0122, {0x00,0x00,0x00,0x00,0x0E,0x80,0x31,0x80,0x60,0x00,0x60,0x00,0x63,0xC0,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x00,0x06,0x00,0x1C,0x00,}}, +{ 0x0123, {0x02,0x00,0x04,0x00,0x06,0x00,0x00,0x00,0x0F,0xC0,0x19,0x80,0x11,0x80,0x11,0x00,0x0E,0x00,0x1F,0x80,0x31,0xC0,0x10,0x40,0x0F,0x80,}}, +{ 0x0124, {0x06,0x00,0x0F,0x00,0x10,0x80,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0125, {0x06,0x00,0x0F,0x00,0x70,0x80,0x30,0x00,0x36,0x00,0x3B,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0126, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x7F,0xE0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0127, {0x00,0x00,0x70,0x00,0x30,0x00,0x7E,0x00,0x30,0x00,0x36,0x00,0x3B,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0128, {0x1D,0x80,0x37,0x00,0x00,0x00,0x3F,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0129, {0x00,0x00,0x00,0x00,0x1D,0x80,0x37,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x012A, {0x00,0x00,0x0F,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x012B, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x012C, {0x19,0x80,0x0F,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x012D, {0x00,0x00,0x00,0x00,0x19,0x80,0x0F,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x012E, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x04,0x00,0x07,0x00,}}, +{ 0x012F, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x04,0x00,0x07,0x00,}}, +{ 0x0130, {0x06,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0131, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0132, {0x00,0x00,0x00,0x00,0xF3,0xE0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x6C,0xC0,0x6C,0xC0,0x6D,0x80,0xF7,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0133, {0x00,0x00,0x20,0x40,0x70,0xE0,0x20,0x40,0x00,0x00,0x73,0xE0,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x7A,0x60,0x06,0x40,0x03,0x80,}}, +{ 0x0134, {0x01,0x80,0x03,0xC0,0x04,0x20,0x07,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x61,0x80,0x61,0x80,0x63,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0135, {0x00,0x00,0x03,0x00,0x07,0x80,0x08,0x40,0x00,0x00,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x13,0x00,0x32,0x00,0x1C,0x00,}}, +{ 0x0136, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0x80,0x31,0x00,0x33,0x00,0x35,0x80,0x39,0x80,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x18,0x00,0x70,0x00,}}, +{ 0x0137, {0x00,0x00,0x00,0x00,0x38,0x00,0x18,0x00,0x18,0xC0,0x19,0x80,0x1B,0x00,0x1F,0x80,0x19,0x80,0x18,0xC0,0x3C,0xE0,0x18,0x00,0x70,0x00,}}, +{ 0x0138, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x31,0x80,0x33,0x00,0x3E,0x00,0x33,0x00,0x31,0x80,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0139, {0x06,0x00,0x0C,0x00,0x10,0x00,0x7C,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x013A, {0x03,0x00,0x06,0x00,0x08,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x013B, {0x00,0x00,0x00,0x00,0x7C,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x0C,0x00,0x38,0x00,}}, +{ 0x013C, {0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x06,0x00,0x1C,0x00,}}, +{ 0x013D, {0x42,0x00,0x3C,0x00,0x18,0x00,0x3E,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x20,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x013E, {0x10,0x80,0x0F,0x00,0x06,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x013F, {0x00,0x00,0x00,0x00,0x7C,0x00,0x30,0x00,0x30,0x00,0x32,0x00,0x37,0x00,0x32,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0140, {0x00,0x00,0x00,0x00,0x3C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x0D,0xC0,0x0C,0x80,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0141, {0x00,0x00,0x00,0x00,0x3E,0x00,0x18,0x00,0x1A,0x00,0x1C,0x00,0x18,0x00,0x38,0x00,0x58,0x00,0x18,0x20,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0142, {0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x80,0x07,0x00,0x06,0x00,0x0E,0x00,0x16,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0143, {0x03,0x00,0x06,0x00,0x08,0x00,0x31,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x10,0x80,0x39,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0144, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x77,0x00,0x39,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0145, {0x00,0x00,0x00,0x00,0x31,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x11,0x80,0x10,0x80,0x39,0xC0,0x18,0x00,0x70,0x00,}}, +{ 0x0146, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x80,0x1C,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3D,0xE0,0x18,0x00,0x70,0x00,}}, +{ 0x0147, {0x10,0x80,0x0F,0x00,0x06,0x00,0x31,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x10,0x80,0x39,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0148, {0x21,0x00,0x1E,0x00,0x0C,0x00,0x00,0x00,0x77,0x00,0x39,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0149, {0x00,0x00,0x40,0x00,0xE0,0x00,0x60,0x00,0xDD,0xC0,0x0E,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x1E,0xF0,0x00,0x00,0x00,0x00,}}, +{ 0x014A, {0x00,0x00,0x00,0x00,0x31,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x11,0x80,0x10,0x80,0x38,0x80,0x01,0x80,0x07,0x00,}}, +{ 0x014B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x80,0x1C,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3C,0xC0,0x00,0xC0,0x03,0x80,}}, +{ 0x014C, {0x1F,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x014D, {0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x014E, {0x31,0x80,0x1F,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x014F, {0x00,0x00,0x19,0x80,0x0F,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0150, {0x0C,0xC0,0x19,0x80,0x22,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0151, {0x0C,0xC0,0x19,0x80,0x22,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0152, {0x00,0x00,0x00,0x00,0x37,0xC0,0x6E,0x20,0xC6,0x00,0xC6,0x40,0xC7,0xC0,0xC6,0x40,0xC6,0x00,0x6E,0x20,0x37,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0153, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xC0,0x6F,0x60,0xC6,0x20,0xC7,0xE0,0xC6,0x00,0x6F,0x20,0x39,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0154, {0x06,0x00,0x0C,0x00,0x10,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x3E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0155, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x3B,0x00,0x1D,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0156, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x7B,0xC0,0x18,0x00,0x70,0x00,}}, +{ 0x0157, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x1D,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x0C,0x00,0x38,0x00,}}, +{ 0x0158, {0x21,0x00,0x1E,0x00,0x0C,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x3E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0159, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x3B,0x00,0x1D,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x015A, {0x03,0x00,0x06,0x00,0x08,0x00,0x1E,0x80,0x11,0x80,0x30,0x80,0x1E,0x00,0x07,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x015B, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x015C, {0x06,0x00,0x0F,0x00,0x10,0x80,0x1E,0x80,0x11,0x80,0x30,0x80,0x1E,0x00,0x07,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x015D, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x015E, {0x00,0x00,0x00,0x00,0x0E,0x80,0x11,0x80,0x30,0x80,0x1C,0x00,0x0F,0x00,0x03,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x06,0x00,0x1C,0x00,}}, +{ 0x015F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x06,0x00,0x1C,0x00,}}, +{ 0x0160, {0x10,0x80,0x0F,0x00,0x06,0x00,0x1E,0x80,0x11,0x80,0x30,0x80,0x1E,0x00,0x07,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0161, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0162, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x03,0x00,0x0E,0x00,}}, +{ 0x0163, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x07,0x00,0x06,0x00,0x1C,0x00,}}, +{ 0x0164, {0x10,0x80,0x0F,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0165, {0x21,0x00,0x1E,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0166, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x3F,0xC0,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0167, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x80,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0168, {0x0E,0xC0,0x1B,0x80,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0169, {0x00,0x00,0x1D,0x80,0x37,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x016A, {0x00,0x00,0x0F,0x80,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x016B, {0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x016C, {0x18,0xC0,0x0F,0x80,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x016D, {0x00,0x00,0x31,0x80,0x1F,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x016E, {0x07,0x00,0x0D,0x80,0x07,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x016F, {0x00,0x00,0x1E,0x00,0x33,0x00,0x1E,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0170, {0x0C,0xC0,0x19,0x80,0x22,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0171, {0x19,0x80,0x33,0x00,0x44,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0172, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x04,0x00,0x07,0x00,}}, +{ 0x0173, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x08,0x00,0x0E,0x00,}}, +{ 0x0174, {0x06,0x00,0x0F,0x00,0x10,0x80,0xEE,0x60,0x66,0x40,0x37,0xC0,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0175, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x76,0xE0,0x76,0x40,0x36,0x40,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0176, {0x0C,0x00,0x1E,0x00,0x21,0x00,0x7B,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0177, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x7D,0xC0,0x30,0x80,0x18,0x80,0x19,0x00,0x0D,0x00,0x0E,0x00,0x66,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x0178, {0x33,0x00,0x33,0x00,0x00,0x00,0x7B,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0179, {0x06,0x00,0x0C,0x00,0x10,0x00,0x7F,0x80,0x43,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x017A, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x3F,0xC0,0x21,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x017B, {0x0C,0x00,0x0C,0x00,0x00,0x00,0x7F,0x80,0x43,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x017C, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x3F,0xC0,0x21,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x017D, {0x21,0x00,0x1E,0x00,0x0C,0x00,0x7F,0x80,0x43,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x017E, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x3F,0xC0,0x21,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x017F, {0x00,0x00,0x00,0x00,0x07,0x00,0x09,0x80,0x18,0x00,0x38,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x018F, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x00,0xC0,0x7F,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0192, {0x00,0x00,0x00,0x00,0x03,0x80,0x04,0xC0,0x0C,0x00,0x1F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x2C,0x00,0x6C,0x00,0x38,0x00,}}, +{ 0x01FA, {0x00,0xC0,0x01,0x80,0x03,0x00,0x04,0x80,0x03,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x01FB, {0x03,0x00,0x06,0x00,0x0C,0x00,0x12,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x01FC, {0x00,0xC0,0x01,0x80,0x02,0x00,0x07,0xC0,0x0E,0x20,0x12,0x00,0x13,0xC0,0x22,0x40,0x3E,0x00,0x42,0x20,0xE7,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x01FD, {0x00,0xC0,0x01,0x80,0x02,0x00,0x00,0x00,0x3D,0xC0,0x66,0x60,0x66,0x60,0x1F,0xE0,0x66,0x00,0xC7,0x60,0x79,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x01FE, {0x03,0x00,0x06,0x00,0x09,0x80,0x1F,0x80,0x33,0x80,0x66,0xC0,0x66,0xC0,0x6C,0xC0,0x6C,0xC0,0x79,0x80,0x3F,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x01FF, {0x01,0x80,0x03,0x00,0x04,0x00,0x00,0xC0,0x0F,0xC0,0x19,0x80,0x33,0xC0,0x36,0xC0,0x3C,0xC0,0x19,0x80,0x1F,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x0218, {0x00,0x00,0x00,0x00,0x0E,0x80,0x11,0x80,0x30,0x80,0x1C,0x00,0x0F,0x00,0x03,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x06,0x00,0x0C,0x00,}}, +{ 0x0219, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x06,0x00,0x0C,0x00,}}, +{ 0x021A, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x06,0x00,0x0C,0x00,}}, +{ 0x021B, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x07,0x00,0x06,0x00,0x0C,0x00,}}, +{ 0x0259, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x21,0x80,0x00,0xC0,0x3F,0xC0,0x30,0xC0,0x11,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02BB, {0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02BC, {0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02BD, {0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02C6, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02C7, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02C9, {0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02D0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02D8, {0x30,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02D9, {0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02DA, {0x0E,0x00,0x1B,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02DB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1F,0x00,}}, +{ 0x02DC, {0x00,0x00,0x1D,0x80,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x02DD, {0x0C,0xC0,0x19,0x80,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0300, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0301, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0302, {0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0303, {0x00,0x00,0x1D,0x80,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0304, {0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0305, {0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0306, {0x00,0x00,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0307, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0308, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0309, {0x0F,0x00,0x19,0x80,0x19,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x030A, {0x06,0x00,0x09,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x030B, {0x0C,0xC0,0x19,0x80,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x030C, {0x10,0x80,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x030D, {0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x030E, {0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x030F, {0x33,0x00,0x19,0x80,0x04,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0310, {0x04,0x00,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0311, {0x00,0x00,0x1F,0x00,0x31,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0374, {0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0375, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,}}, +{ 0x037A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0E,0x00,}}, +{ 0x037E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x0384, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0385, {0x03,0x00,0x36,0xC0,0x38,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0386, {0x0C,0x00,0x18,0x00,0x22,0x00,0x06,0x00,0x07,0x00,0x0B,0x00,0x09,0x80,0x11,0x80,0x1F,0xC0,0x20,0xC0,0x71,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0387, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0388, {0x30,0x00,0x60,0x00,0x9F,0xC0,0x0C,0x40,0x0C,0x00,0x0C,0x80,0x0F,0x80,0x0C,0x80,0x0C,0x00,0x0C,0x20,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0389, {0x30,0x00,0x60,0x00,0xBC,0xE0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3C,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x038A, {0x18,0x00,0x30,0x00,0x47,0xE0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x038C, {0x18,0x00,0x30,0x00,0x47,0x00,0x18,0xC0,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x18,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x038E, {0x18,0x00,0x30,0x00,0x4C,0xC0,0x17,0xA0,0x13,0x20,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x038F, {0x18,0x00,0x30,0x00,0x47,0x00,0x18,0xC0,0x30,0x60,0x30,0x60,0x30,0x60,0x18,0xC0,0x08,0x80,0x05,0x00,0x3D,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0390, {0x03,0x00,0x36,0xC0,0x38,0xC0,0x00,0x00,0x04,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0391, {0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x07,0x00,0x0B,0x00,0x09,0x80,0x11,0x80,0x1F,0xC0,0x20,0xC0,0x71,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0392, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3F,0x00,0x30,0x80,0x30,0xC0,0x30,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0393, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0xC0,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0394, {0x00,0x00,0x00,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x13,0x00,0x13,0x00,0x21,0x80,0x21,0x80,0x40,0xC0,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0395, {0x00,0x00,0x00,0x00,0x7F,0x80,0x30,0x80,0x30,0x00,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0396, {0x00,0x00,0x00,0x00,0x3F,0x80,0x43,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0397, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0398, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x71,0xC0,0x7F,0xC0,0x71,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0399, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x039A, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x80,0x31,0x00,0x33,0x00,0x35,0x80,0x39,0x80,0x30,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x039B, {0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x07,0x00,0x09,0x80,0x11,0x80,0x10,0xC0,0x20,0xC0,0x71,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x039C, {0x00,0x00,0x00,0x00,0x70,0xE0,0x39,0xC0,0x39,0xC0,0x3F,0xC0,0x36,0xC0,0x36,0xC0,0x30,0xC0,0x30,0xC0,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x039D, {0x00,0x00,0x00,0x00,0x70,0xE0,0x38,0xC0,0x3C,0xC0,0x3C,0xC0,0x36,0xC0,0x33,0xC0,0x33,0xC0,0x31,0xC0,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x039E, {0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x1F,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x039F, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03A0, {0x00,0x00,0x00,0x00,0x7F,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x03A1, {0x00,0x00,0x00,0x00,0x3F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03A3, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0x40,0x0C,0x00,0x06,0x00,0x03,0x00,0x02,0x00,0x04,0x00,0x08,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x03A4, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x46,0x20,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03A5, {0x00,0x00,0x00,0x00,0x19,0x80,0x2F,0x40,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03A6, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03A7, {0x00,0x00,0x00,0x00,0x71,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0E,0x00,0x13,0x00,0x21,0x80,0x61,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x03A8, {0x00,0x00,0x00,0x00,0x1F,0x80,0x46,0x20,0x66,0x60,0x36,0xC0,0x36,0xC0,0x16,0x80,0x1F,0x80,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03A9, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x11,0x00,0x0A,0x00,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x03AA, {0x19,0x80,0x19,0x80,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03AB, {0x19,0x80,0x19,0x80,0x00,0x00,0x19,0x80,0x2F,0x40,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03AC, {0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x0E,0xC0,0x19,0xC0,0x10,0xC0,0x30,0x80,0x31,0x80,0x33,0x80,0x1C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x03AD, {0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x0D,0x80,0x08,0x00,0x07,0x00,0x0C,0x00,0x18,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03AE, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x12,0x00,0x3D,0x00,0x09,0x80,0x11,0x80,0x11,0x00,0x31,0x00,0x23,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x03AF, {0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03B0, {0x03,0x00,0x36,0xC0,0x38,0xC0,0x00,0x00,0x10,0x00,0x11,0x00,0x31,0x80,0x31,0x80,0x21,0x00,0x23,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03B1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0xC0,0x19,0xC0,0x10,0xC0,0x30,0x80,0x31,0x80,0x33,0x80,0x1C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x03B2, {0x00,0x00,0x00,0x00,0x01,0xC0,0x02,0x40,0x04,0x40,0x08,0x40,0x0B,0x80,0x08,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x80,0x30,0x00,0x30,0x00,}}, +{ 0x03B3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x35,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x03B4, {0x00,0x00,0x00,0x00,0x0E,0x00,0x13,0x80,0x08,0x00,0x0E,0x00,0x13,0x00,0x31,0x00,0x23,0x00,0x26,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03B5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0D,0x80,0x08,0x00,0x07,0x00,0x0C,0x00,0x18,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03B6, {0x00,0x00,0x00,0x00,0x08,0x00,0x0F,0x80,0x07,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x18,0x00,0x0E,0x00,0x07,0x00,0x0D,0x80,0x07,0x00,}}, +{ 0x03B7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x3D,0x00,0x09,0x80,0x11,0x80,0x11,0x00,0x31,0x00,0x23,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x03B8, {0x00,0x00,0x00,0x00,0x03,0x80,0x04,0x80,0x18,0x80,0x10,0x80,0x3F,0x80,0x31,0x80,0x21,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03B9, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x04,0x00,0x0C,0x00,0x08,0x00,0x0C,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03BA, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x09,0x80,0x1A,0x00,0x1C,0x00,0x12,0x00,0x32,0x00,0x33,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03BB, {0x00,0x00,0x00,0x00,0x0E,0x00,0x03,0x00,0x03,0x00,0x07,0x00,0x05,0x00,0x09,0x00,0x19,0x00,0x11,0x00,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03BC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0x80,0x11,0x80,0x31,0x00,0x21,0x00,0x33,0x00,0x3F,0xC0,0x60,0x00,0x60,0x00,}}, +{ 0x03BD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x80,0x11,0x00,0x11,0x00,0x12,0x00,0x1C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03BE, {0x00,0x00,0x0C,0x00,0x13,0x80,0x0F,0x00,0x18,0x00,0x10,0x00,0x0F,0x00,0x13,0x00,0x20,0x00,0x38,0x00,0x1E,0x00,0x03,0x00,0x1E,0x00,}}, +{ 0x03BF, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0D,0x00,0x18,0x80,0x31,0x80,0x31,0x80,0x13,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03C0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x51,0x00,0x11,0x00,0x11,0x00,0x22,0x00,0x22,0x00,0x63,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03C1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x0C,0xC0,0x18,0xC0,0x18,0xC0,0x30,0xC0,0x31,0x80,0x3F,0x00,0x60,0x00,0x60,0x00,}}, +{ 0x03C2, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0C,0x80,0x19,0x80,0x18,0x00,0x18,0x00,0x0E,0x00,0x01,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x03C3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0x00,0x18,0x80,0x30,0x80,0x31,0x80,0x33,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03C4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x3F,0x80,0x24,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03C5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0x00,0x31,0x80,0x31,0x80,0x21,0x00,0x23,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03C6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x80,0x12,0x80,0x32,0xC0,0x34,0xC0,0x1D,0x80,0x0F,0x00,0x08,0x00,0x08,0x00,}}, +{ 0x03C7, {0x00,0x00,0x00,0x00,0x0C,0x40,0x06,0xC0,0x02,0x80,0x03,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x0A,0x00,0x12,0x00,0x33,0x00,0x21,0x80,}}, +{ 0x03C8, {0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x23,0x00,0x72,0xC0,0x12,0x40,0x12,0x40,0x34,0xC0,0x35,0x80,0x1F,0x00,0x08,0x00,0x08,0x00,}}, +{ 0x03C9, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x22,0x40,0x26,0x40,0x24,0x40,0x24,0x80,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03CA, {0x00,0x00,0x1B,0x00,0x1B,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x10,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03CB, {0x00,0x00,0x1B,0x00,0x1B,0x00,0x00,0x00,0x10,0x00,0x11,0x00,0x31,0x80,0x31,0x80,0x21,0x00,0x23,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03CC, {0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x0D,0x00,0x18,0x80,0x31,0x80,0x31,0x80,0x13,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03CD, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x11,0x00,0x31,0x80,0x31,0x80,0x21,0x00,0x23,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03CE, {0x00,0x00,0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x10,0x40,0x22,0x40,0x26,0x40,0x24,0x40,0x24,0x80,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03D1, {0x00,0x00,0x00,0x00,0x03,0x80,0x04,0x80,0x08,0x80,0x10,0x80,0x0F,0xC0,0x01,0x80,0x21,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x03D5, {0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x07,0x00,0x1B,0x80,0x12,0x80,0x32,0xC0,0x34,0xC0,0x1D,0x80,0x0F,0x00,0x08,0x00,0x08,0x00,}}, +{ 0x03D6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x22,0x40,0x26,0x40,0x24,0x40,0x24,0x80,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x03F1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x06,0x40,0x0C,0x40,0x08,0x40,0x18,0xC0,0x1C,0xC0,0x1B,0x80,0x30,0x00,0x1F,0x00,}}, +{ 0x0400, {0x18,0x00,0x0C,0x00,0x02,0x00,0x7F,0x80,0x30,0x40,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0401, {0x33,0x00,0x33,0x00,0x00,0x00,0x7F,0x80,0x30,0x00,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0402, {0x00,0x00,0xFF,0x00,0x99,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3C,0xC0,0x01,0x80,0x07,0x00,}}, +{ 0x0403, {0x03,0x00,0x06,0x00,0x08,0x00,0x3F,0xC0,0x18,0xC0,0x18,0x40,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0404, {0x00,0x00,0x00,0x00,0x0F,0x00,0x31,0xC0,0x20,0x00,0x63,0x00,0x6E,0x80,0x78,0x00,0x20,0x00,0x31,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0405, {0x00,0x00,0x00,0x00,0x0E,0x80,0x11,0x80,0x30,0x80,0x1C,0x00,0x0F,0x00,0x03,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0406, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0407, {0x19,0x80,0x19,0x80,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0408, {0x00,0x00,0x00,0x00,0x07,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x61,0x80,0x61,0x80,0x63,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0409, {0x00,0x00,0x00,0x00,0xFE,0x00,0x6C,0x00,0x6C,0x00,0x6F,0x00,0x6C,0x80,0x6C,0xC0,0x6C,0xC0,0x6C,0xC0,0xEF,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x040A, {0x00,0x00,0x00,0x00,0xEE,0x00,0x6C,0x00,0x6C,0x00,0x7F,0x00,0x6C,0x80,0x6C,0xC0,0x6C,0xC0,0x6C,0xC0,0xEF,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x040B, {0x00,0x00,0xFF,0x00,0x99,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3D,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x040C, {0x01,0x80,0x03,0x00,0x04,0x00,0x78,0xE0,0x31,0x20,0x32,0x00,0x3E,0x00,0x33,0x00,0x31,0x80,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x040D, {0x0C,0x00,0x06,0x00,0x01,0x00,0x78,0xE0,0x30,0xC0,0x31,0xC0,0x32,0xC0,0x34,0xC0,0x38,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x040E, {0x1B,0x00,0x0E,0x00,0x00,0x00,0x71,0xC0,0x30,0x80,0x31,0x80,0x19,0x00,0x19,0x00,0x0E,0x00,0x0E,0x00,0x24,0x00,0x68,0x00,0x30,0x00,}}, +{ 0x040F, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x7F,0xE0,0x06,0x00,0x06,0x00,}}, +{ 0x0410, {0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x09,0x80,0x09,0x80,0x10,0xC0,0x1F,0xC0,0x30,0xC0,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0411, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0x40,0x18,0x00,0x1F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0412, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3F,0x00,0x30,0x80,0x30,0xC0,0x30,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0413, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0xC0,0x18,0x40,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0414, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x11,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x21,0x80,0x3F,0xC0,0x60,0xC0,0x40,0x40,}}, +{ 0x0415, {0x00,0x00,0x00,0x00,0x7F,0x80,0x30,0x80,0x30,0x00,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0416, {0x00,0x00,0x00,0x00,0x6F,0x60,0x76,0xE0,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x16,0x80,0x36,0xC0,0x26,0x40,0x6F,0x60,0x00,0x00,0x00,0x00,}}, +{ 0x0417, {0x00,0x00,0x00,0x00,0x0F,0x00,0x38,0xC0,0x00,0xC0,0x00,0xC0,0x07,0x80,0x00,0xC0,0x00,0xC0,0x38,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0418, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0xC0,0x30,0xC0,0x31,0xC0,0x32,0xC0,0x34,0xC0,0x38,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0419, {0x0D,0x80,0x07,0x00,0x00,0x00,0x78,0xE0,0x30,0xC0,0x31,0xC0,0x32,0xC0,0x34,0xC0,0x38,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x041A, {0x00,0x00,0x00,0x00,0x78,0xE0,0x31,0x20,0x31,0x00,0x32,0x00,0x3E,0x00,0x33,0x00,0x31,0x80,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x041B, {0x00,0x00,0x00,0x00,0x1F,0xC0,0x09,0x80,0x09,0x80,0x09,0x80,0x09,0x80,0x09,0x80,0x09,0x80,0x71,0x80,0x73,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x041C, {0x00,0x00,0x00,0x00,0x70,0xE0,0x30,0xC0,0x39,0xC0,0x3F,0xC0,0x36,0xC0,0x36,0xC0,0x30,0xC0,0x30,0xC0,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x041D, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x041E, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x041F, {0x00,0x00,0x00,0x00,0x7F,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x78,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0420, {0x00,0x00,0x00,0x00,0x3F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0421, {0x00,0x00,0x00,0x00,0x07,0xC0,0x18,0x40,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0422, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x46,0x20,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0423, {0x00,0x00,0x00,0x00,0x71,0xC0,0x60,0x80,0x30,0x80,0x31,0x80,0x19,0x00,0x19,0x00,0x0E,0x00,0x0E,0x00,0x24,0x00,0x68,0x00,0x30,0x00,}}, +{ 0x0424, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0425, {0x00,0x00,0x00,0x00,0x71,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0E,0x00,0x13,0x00,0x21,0x80,0x61,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0426, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x7F,0xE0,0x00,0x60,0x00,0x20,}}, +{ 0x0427, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x1F,0xC0,0x00,0xC0,0x00,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0428, {0x00,0x00,0x00,0x00,0x76,0xE0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0429, {0x00,0x00,0x00,0x00,0x76,0xE0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x7F,0xE0,0x00,0x60,0x00,0x20,}}, +{ 0x042A, {0x00,0x00,0x00,0x00,0x3E,0x00,0x4C,0x00,0x0C,0x00,0x0F,0x80,0x0C,0xC0,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x042B, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x3C,0xC0,0x33,0xC0,0x31,0xC0,0x31,0xC0,0x33,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x042C, {0x00,0x00,0x00,0x00,0x3E,0x00,0x18,0x00,0x18,0x00,0x1F,0x00,0x18,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x042D, {0x00,0x00,0x00,0x00,0x1E,0x00,0x71,0x80,0x00,0x80,0x18,0xC0,0x2E,0xC0,0x03,0xC0,0x00,0x80,0x71,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x042E, {0x00,0x00,0x00,0x00,0x79,0x80,0x32,0x40,0x36,0x60,0x36,0x60,0x3E,0x60,0x36,0x60,0x36,0x60,0x32,0x40,0x79,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x042F, {0x00,0x00,0x00,0x00,0x0F,0xC0,0x31,0x80,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x80,0x0D,0x80,0x19,0x80,0x71,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0430, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3D,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0431, {0x00,0x00,0x00,0x80,0x0F,0x00,0x10,0x00,0x36,0x00,0x3B,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0432, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x18,0xC0,0x18,0xC0,0x1F,0x80,0x18,0xC0,0x18,0xC0,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0433, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0xC0,0x18,0x40,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0434, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x11,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x7F,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x0435, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0436, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x20,0x66,0x60,0x16,0x80,0x1F,0x80,0x16,0x80,0x36,0xC0,0x6F,0x60,0x00,0x00,0x00,0x00,}}, +{ 0x0437, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x07,0x80,0x00,0xC0,0x30,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0438, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x31,0xC0,0x32,0xC0,0x34,0xC0,0x38,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0439, {0x00,0x00,0x0D,0x80,0x07,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x31,0xC0,0x32,0xC0,0x34,0xC0,0x38,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x043A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xC0,0x31,0x40,0x32,0x00,0x3E,0x00,0x33,0x00,0x31,0x80,0x78,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x043B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x09,0x80,0x09,0x80,0x09,0x80,0x09,0x80,0x71,0x80,0x73,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x043C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x39,0xC0,0x39,0xC0,0x3F,0xC0,0x36,0xC0,0x30,0xC0,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x043D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x043E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x043F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0440, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1D,0x80,0x1B,0x00,0x18,0x00,0x3C,0x00,}}, +{ 0x0441, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x18,0xC0,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0442, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x36,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0443, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x19,0x80,0x19,0x80,0x0F,0x00,0x0E,0x00,0x24,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x0444, {0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x16,0x80,0x3F,0xC0,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x3F,0xC0,0x06,0x00,0x0F,0x00,}}, +{ 0x0445, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xC0,0x18,0x80,0x0D,0x00,0x06,0x00,0x0F,0x00,0x11,0x80,0x3B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0446, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7B,0xC0,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x3F,0x80,0x01,0x80,0x00,0x80,}}, +{ 0x0447, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x0F,0xC0,0x00,0xC0,0x01,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0448, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xE0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x0449, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xE0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x7F,0xE0,0x00,0x60,0x00,0x20,}}, +{ 0x044A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x2C,0x00,0x4C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0xC0,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x044B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x3E,0xC0,0x33,0xC0,0x33,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x044C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x18,0x00,0x18,0x00,0x1F,0x80,0x18,0xC0,0x18,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x044D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x06,0xC0,0x0B,0xC0,0x30,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x044E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0x80,0x32,0x40,0x36,0x60,0x3E,0x60,0x36,0x60,0x32,0x40,0x79,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x044F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x31,0x80,0x31,0x80,0x31,0x80,0x0F,0x80,0x19,0x80,0x33,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x0450, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0451, {0x00,0x00,0x0D,0x80,0x0D,0x80,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0452, {0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x7E,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x3C,0xC0,0x01,0x80,0x07,0x00,}}, +{ 0x0453, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x3F,0xC0,0x18,0xC0,0x18,0x40,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0454, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x36,0x00,0x3D,0x00,0x30,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0455, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0456, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0457, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x0458, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x13,0x00,0x32,0x00,0x1C,0x00,}}, +{ 0x0459, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x6C,0x00,0x6C,0x00,0x6F,0x80,0x6C,0xC0,0x6C,0xC0,0xEF,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x045A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x00,0x6C,0x00,0x6C,0x00,0x7F,0x80,0x6C,0xC0,0x6C,0xC0,0xEF,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x045B, {0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x7E,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x3D,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x045C, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x78,0xC0,0x31,0x40,0x32,0x00,0x3E,0x00,0x33,0x00,0x31,0x80,0x78,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x045D, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x31,0xC0,0x32,0xC0,0x34,0xC0,0x38,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x045E, {0x00,0x00,0x1B,0x00,0x0E,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x19,0x80,0x19,0x80,0x0F,0x00,0x0E,0x00,0x24,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x045F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7B,0xC0,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7F,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x0490, {0x00,0x40,0x00,0xC0,0x3F,0xC0,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x0491, {0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xC0,0x3F,0xC0,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05D0, {0x00,0x00,0x41,0x80,0x61,0xC0,0x30,0xC0,0x19,0x00,0x3E,0x00,0x46,0x00,0x43,0x00,0x21,0x80,0x30,0xC0,0x70,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x05D1, {0x00,0x00,0x40,0x00,0x7F,0x00,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x3F,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05D2, {0x00,0x00,0x10,0x00,0x1C,0x00,0x0E,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0x1F,0x00,0x39,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05D3, {0x00,0x00,0x40,0x00,0x7F,0xC0,0x3F,0xC0,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05D4, {0x00,0x00,0x40,0x00,0x7F,0xC0,0x3F,0xC0,0x00,0x80,0x00,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05D5, {0x00,0x00,0x10,0x00,0x1C,0x00,0x0E,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05D6, {0x00,0x00,0x20,0x00,0x3C,0x00,0x1E,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05D7, {0x00,0x00,0x40,0x00,0x7F,0xC0,0x3F,0xC0,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05D8, {0x00,0x00,0x40,0x00,0x71,0xC0,0x3B,0xC0,0x22,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0xC0,0x3F,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05D9, {0x00,0x00,0x20,0x00,0x38,0x00,0x1C,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05DA, {0x00,0x00,0x20,0x00,0x3F,0xC0,0x1F,0xC0,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,}}, +{ 0x05DB, {0x00,0x00,0x40,0x00,0x7F,0x80,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x3F,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05DC, {0x40,0x00,0x20,0x00,0x3F,0xC0,0x1F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05DD, {0x00,0x00,0x40,0x00,0x7F,0x80,0x3F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x05DE, {0x00,0x00,0x40,0x00,0x6F,0x80,0x3F,0xC0,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4F,0xC0,0x5F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05DF, {0x00,0x00,0x08,0x00,0x0F,0x00,0x07,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,}}, +{ 0x05E0, {0x00,0x00,0x10,0x00,0x1C,0x00,0x0E,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05E1, {0x00,0x00,0x40,0x00,0x7F,0x80,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05E2, {0x00,0x00,0x42,0x00,0x73,0x80,0x39,0xC0,0x20,0x40,0x10,0x40,0x08,0x40,0x04,0x40,0x02,0x40,0x3F,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05E3, {0x00,0x00,0x20,0x00,0x3F,0xC0,0x1F,0xC0,0x20,0x80,0x30,0x80,0x30,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,}}, +{ 0x05E4, {0x00,0x00,0x40,0x00,0x7F,0x80,0x3F,0xC0,0x20,0x40,0x30,0x40,0x30,0x40,0x00,0x40,0x00,0x40,0x7F,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05E5, {0x41,0x00,0x71,0xC0,0x30,0xC0,0x11,0x00,0x12,0x00,0x14,0x00,0x18,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x05E6, {0x00,0x00,0x41,0x00,0x71,0xC0,0x38,0xC0,0x09,0x00,0x0A,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x7F,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x05E7, {0x40,0x00,0x7F,0x80,0x3F,0xC0,0x00,0x40,0x10,0x40,0x10,0x40,0x10,0x80,0x11,0x00,0x16,0x00,0x14,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x05E8, {0x00,0x00,0x40,0x00,0x7F,0x80,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x05E9, {0x00,0x00,0x49,0x00,0x6D,0xC0,0x6D,0xC0,0x44,0x40,0x44,0x40,0x4C,0x40,0x58,0xC0,0x70,0x80,0x7F,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x05EA, {0x00,0x00,0x40,0x00,0x7F,0x80,0x3F,0xC0,0x10,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x10,0x40,0x30,0x40,0x70,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x1200, {0x00,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x33,0x80,0x33,0x00,0x3F,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1201, {0x00,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC7,0xE0,0xC6,0x60,0xCE,0x00,0xCC,0x00,0xFC,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1202, {0x00,0x00,0x18,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x1F,0x80,0x0F,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x00,0x00,}}, +{ 0x1203, {0x00,0x00,0x18,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x1F,0x80,0x0F,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x1204, {0x00,0x00,0x18,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x1F,0x80,0x0F,0x00,0x03,0x00,0x06,0x00,0x07,0x80,0x06,0x40,0x03,0x80,0x00,0x00,}}, +{ 0x1205, {0x00,0x00,0x30,0xC0,0x60,0xC0,0x60,0xC0,0x18,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1206, {0x00,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1208, {0x00,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1209, {0x00,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x63,0x00,0x63,0xE0,0x63,0x60,0x63,0x00,0x63,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x120A, {0x00,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x60,0x63,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x120B, {0x00,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x120C, {0x00,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x63,0x00,0x63,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x120D, {0x00,0x00,0x01,0x80,0x03,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x3C,0xC0,0x32,0xC0,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x120E, {0x00,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x63,0x00,0x63,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x120F, {0x00,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x63,0x00,0x63,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x1210, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1211, {0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x7E,0x00,0xDB,0x00,0xDB,0xE0,0xDB,0x60,0xDB,0x00,0xDB,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1212, {0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x7E,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x60,0xDB,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1213, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1214, {0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x7E,0x00,0xDB,0x00,0xDB,0x00,0xDB,0xC0,0xDB,0x20,0xDB,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1215, {0x00,0x00,0x18,0x00,0x1C,0x00,0x0E,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1216, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1217, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x04,0x20,}}, +{ 0x1218, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x31,0x80,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1219, {0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x94,0x80,0x94,0xF0,0x94,0xB0,0x94,0x80,0x94,0x80,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x121A, {0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x31,0xC0,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x60,0x03,0xE0,0x00,0x00,}}, +{ 0x121B, {0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x31,0xC0,0x00,0x40,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x121C, {0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x31,0xC0,0x00,0x80,0x01,0x00,0x01,0xC0,0x01,0x20,0x01,0xC0,0x00,0x00,}}, +{ 0x121D, {0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x39,0x80,0x08,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x121E, {0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x39,0x80,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x121F, {0x00,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x31,0xC0,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x07,0xC0,0x04,0x40,}}, +{ 0x1220, {0x00,0x00,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x37,0x80,0x36,0x00,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1221, {0x00,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0xE0,0xDB,0x60,0xDB,0x00,0xDE,0x00,0xD8,0x00,0xD8,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1222, {0x00,0x00,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x03,0x00,0x06,0x00,0x06,0x60,0x07,0xE0,0x00,0x00,}}, +{ 0x1223, {0x00,0x00,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x1F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,}}, +{ 0x1224, {0x00,0x00,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x3F,0x80,0x01,0x80,0x03,0xC0,0x03,0x20,0x01,0xC0,0x00,0x00,}}, +{ 0x1225, {0x00,0x00,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x3F,0x80,0x30,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x1226, {0x00,0x00,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x1227, {0x00,0x00,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x3F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x04,0x20,}}, +{ 0x1228, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x38,0xC0,0x1F,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1229, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0x70,0x00,0x3F,0xC0,0x1F,0xC0,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x122A, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x31,0x80,0x30,0xC0,0x38,0xC0,0x1F,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x122B, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0x60,0xE0,0x71,0xE0,0x3F,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x122C, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0x71,0xC0,0x3F,0x20,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x122D, {0x00,0x00,0x0F,0x00,0x1F,0x80,0x31,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0xC0,0x3F,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x122E, {0x00,0x00,0x1F,0x80,0x3E,0x40,0x61,0x80,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x61,0x80,0x7F,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x122F, {0x00,0x00,0x21,0x00,0x3F,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0x60,0xE0,0x71,0xE0,0x3F,0x00,0x1E,0x00,0x00,0x00,}}, +{ 0x1230, {0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1231, {0x00,0x00,0x10,0x00,0x10,0x00,0x38,0x00,0x7C,0x00,0xC6,0x00,0xC7,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1232, {0x00,0x00,0x10,0x00,0x10,0x00,0x38,0x00,0x7C,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x60,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1233, {0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1234, {0x00,0x00,0x08,0x00,0x08,0x00,0x1C,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1235, {0x00,0x00,0x18,0x00,0x0C,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1236, {0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1237, {0x00,0x00,0x08,0x00,0x08,0x00,0x1C,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x1238, {0x00,0x00,0x1F,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1239, {0x00,0x00,0x7C,0x00,0x10,0x00,0x38,0x00,0x7C,0x00,0xC6,0x00,0xC7,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x123A, {0x00,0x00,0x7C,0x00,0x10,0x00,0x38,0x00,0x7C,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x60,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x123B, {0x00,0x00,0x1F,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x123C, {0x00,0x00,0x3E,0x00,0x08,0x00,0x1C,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x123D, {0x00,0x00,0x3F,0x00,0x0C,0x00,0x07,0x00,0x0F,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x123E, {0x00,0x00,0x1F,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x123F, {0x00,0x00,0x3E,0x00,0x08,0x00,0x1C,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x1240, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1241, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x0C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1242, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1243, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1244, {0x00,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1245, {0x00,0x00,0x30,0x00,0x1E,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1246, {0x00,0x00,0x0F,0x00,0x19,0x80,0x0F,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1248, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x0F,0xC0,0x0D,0x20,0x0C,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x124A, {0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x7E,0x40,0xDB,0x40,0xDB,0xC0,0x7E,0x60,0x18,0x20,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x124B, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,}}, +{ 0x124C, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x07,0x80,0x06,0x40,0x1F,0x80,0x10,0x00,}}, +{ 0x124D, {0x00,0x00,0x18,0x00,0x18,0x40,0x18,0x40,0x7E,0xE0,0xDB,0x60,0xDB,0x00,0x7E,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1250, {0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1251, {0x00,0x00,0x3F,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x0C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1252, {0x00,0x00,0x3F,0x00,0x0C,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1253, {0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1254, {0x00,0x00,0x1F,0x80,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1255, {0x00,0x00,0x7E,0x00,0x18,0x00,0x0E,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1256, {0x00,0x00,0x1F,0x80,0x09,0x00,0x0F,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1258, {0x00,0x00,0x3F,0x00,0x0C,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x3F,0x00,0x0F,0xC0,0x0D,0x20,0x0C,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x125A, {0x00,0x00,0x7E,0x00,0x18,0x00,0x18,0x00,0x7E,0x40,0xDB,0x40,0xDB,0xC0,0x7E,0x60,0x18,0x20,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x125B, {0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,}}, +{ 0x125C, {0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x1F,0x80,0x06,0x00,0x07,0x80,0x06,0x40,0x1F,0x80,0x10,0x00,}}, +{ 0x125D, {0x00,0x00,0x7E,0x00,0x18,0x40,0x18,0x40,0x7E,0xE0,0xDB,0x60,0xDB,0x00,0x7E,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1260, {0x00,0x00,0x0F,0x00,0x11,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1261, {0x00,0x00,0x3C,0x00,0x46,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC7,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1262, {0x00,0x00,0x3C,0x00,0x46,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x60,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1263, {0x00,0x00,0x0F,0x00,0x11,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1264, {0x00,0x00,0x1E,0x00,0x23,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1265, {0x00,0x00,0x03,0xC0,0x04,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0xFC,0x60,0xCC,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x00,0x00,0x00,0x00,}}, +{ 0x1266, {0x00,0x00,0x0F,0x00,0x11,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1267, {0x00,0x00,0x1E,0x00,0x23,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x1268, {0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x00,0x11,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1269, {0x00,0x00,0x7E,0x00,0x00,0x00,0x3C,0x00,0x46,0x00,0xC6,0x00,0xC7,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x126A, {0x00,0x00,0x7E,0x00,0x00,0x00,0x3C,0x00,0x46,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x60,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x126B, {0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x00,0x11,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x126C, {0x00,0x00,0x3F,0x00,0x00,0x00,0x1E,0x00,0x23,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x126D, {0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x04,0x60,0x0C,0x60,0xFC,0x60,0xCC,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x00,0x00,0x00,0x00,}}, +{ 0x126E, {0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x00,0x11,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x126F, {0x00,0x00,0x3F,0x00,0x00,0x00,0x1E,0x00,0x23,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x1270, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1271, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x7F,0x80,0x4C,0x80,0x0C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1272, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x7F,0x80,0x4C,0x80,0x0C,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1273, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1274, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1275, {0x00,0x00,0x18,0x00,0x1C,0x00,0x0E,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1276, {0x00,0x00,0x0F,0x00,0x19,0x80,0x0F,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1277, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,}}, +{ 0x1278, {0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1279, {0x00,0x00,0x7F,0x80,0x4C,0x80,0x0C,0x00,0x7F,0x80,0x4C,0x80,0x0C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x127A, {0x00,0x00,0x7F,0x80,0x4C,0x80,0x0C,0x00,0x0C,0x00,0x7F,0x80,0x4C,0x80,0x0C,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x127B, {0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x127C, {0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x127D, {0x00,0x00,0x7F,0xC0,0x4E,0x40,0x07,0x00,0x03,0x00,0x1F,0xE0,0x13,0x20,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x127E, {0x00,0x00,0x3F,0xC0,0x29,0x40,0x0F,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x127F, {0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,}}, +{ 0x1280, {0x00,0x00,0x06,0x00,0x06,0x00,0x3E,0x00,0x33,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1281, {0x00,0x00,0x18,0x00,0x18,0x00,0xF8,0x00,0xCE,0x00,0x06,0x00,0x07,0xE0,0x06,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1282, {0x00,0x00,0x18,0x00,0x18,0x00,0xF8,0x00,0xCE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x60,0x07,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1283, {0x00,0x00,0x06,0x00,0x06,0x00,0x3E,0x00,0x33,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1284, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x7C,0x00,0x67,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x03,0x20,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1285, {0x00,0x00,0x03,0x00,0x03,0x00,0x0F,0x00,0x19,0xC0,0x30,0xC0,0x30,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1286, {0x00,0x00,0x03,0xC0,0x07,0x20,0x0D,0xC0,0x7C,0x00,0x67,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1288, {0x00,0x00,0x18,0x00,0x18,0x00,0xF8,0x00,0xCE,0x00,0x06,0x00,0x07,0xC0,0x07,0x20,0x06,0xC0,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x128A, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x7C,0x00,0x67,0x40,0x03,0x40,0x03,0xC0,0x03,0x60,0x03,0x20,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x128B, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x7C,0x00,0x67,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x128C, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x7C,0x00,0x67,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x03,0x20,0x0F,0xC0,0x08,0x00,}}, +{ 0x128D, {0x00,0x00,0x0C,0x00,0x0C,0x40,0x7C,0x40,0x67,0xE0,0x03,0x60,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1290, {0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1291, {0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x7C,0x00,0x0C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1292, {0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x7C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0xC0,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1293, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x30,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1294, {0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1295, {0x00,0x00,0x1E,0x00,0x36,0x00,0x36,0x00,0x07,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1296, {0x00,0x00,0x1F,0x00,0x34,0x80,0x33,0x00,0x30,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1297, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x30,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,}}, +{ 0x1298, {0x00,0x00,0x3F,0x00,0x0C,0x00,0x0C,0x00,0x0F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1299, {0x00,0x00,0xFC,0x00,0x30,0x00,0x30,0x00,0x3E,0x00,0x06,0x00,0x07,0xE0,0x06,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x129A, {0x00,0x00,0xFC,0x00,0x30,0x00,0x30,0x00,0x3E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x60,0x07,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x129B, {0x00,0x00,0x1F,0x00,0x04,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x30,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x129C, {0x00,0x00,0x7E,0x00,0x18,0x00,0x18,0x00,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x03,0x20,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x129D, {0x00,0x00,0x1F,0x80,0x06,0x00,0x1E,0x00,0x36,0x00,0x37,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x129E, {0x00,0x00,0x1F,0x00,0x04,0x00,0x1F,0x00,0x34,0x80,0x33,0x00,0x30,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x129F, {0x00,0x00,0x1F,0x00,0x04,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x30,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,}}, +{ 0x12A0, {0x00,0x00,0x30,0x00,0x30,0x00,0x1C,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12A1, {0x00,0x00,0xC0,0x00,0xC0,0x00,0x70,0x00,0x30,0x00,0x78,0x00,0xCC,0x00,0xC7,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12A2, {0x00,0x00,0xC0,0x00,0xC0,0x00,0x70,0x00,0x30,0x00,0x78,0x00,0xCC,0x00,0xC6,0x00,0xC6,0x00,0xC6,0x60,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12A3, {0x00,0x00,0x30,0x00,0x30,0x00,0x1C,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12A4, {0x00,0x00,0x60,0x00,0x60,0x00,0x38,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x63,0x00,0x63,0xC0,0x63,0x20,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12A5, {0x00,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12A6, {0x00,0x00,0x30,0x00,0x30,0x00,0x1C,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12A7, {0x00,0x00,0x42,0x00,0x7E,0x00,0x18,0x00,0x0E,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12A8, {0x00,0x00,0x20,0x00,0x20,0x00,0x2F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12A9, {0x00,0x00,0x80,0x00,0x80,0x00,0xBC,0x00,0x66,0x00,0x66,0x00,0x67,0xE0,0x66,0x60,0x66,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12AA, {0x00,0x00,0x80,0x00,0x80,0x00,0xBC,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x60,0x67,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12AB, {0x00,0x00,0x20,0x00,0x20,0x00,0x2F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12AC, {0x00,0x00,0x40,0x00,0x40,0x00,0x5E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0xC0,0x33,0x20,0x33,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12AD, {0x00,0x00,0x20,0x00,0x20,0x00,0x2F,0x00,0x19,0x80,0x19,0x80,0x1D,0x80,0x0D,0x80,0x0D,0x80,0x0D,0x80,0x0D,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12AE, {0x00,0x00,0x20,0x00,0x20,0x00,0x2F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12B0, {0x00,0x00,0x80,0x00,0x80,0x00,0xBC,0x00,0x66,0x00,0x66,0x00,0x67,0xC0,0x67,0x20,0x66,0xC0,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12B2, {0x00,0x00,0x40,0x00,0x40,0x00,0x5E,0x00,0x33,0x00,0x33,0x40,0x33,0x40,0x33,0xE0,0x33,0x60,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12B3, {0x00,0x00,0x40,0x00,0x40,0x00,0x5E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x12B4, {0x00,0x00,0x40,0x00,0x40,0x00,0x5E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x03,0xC0,0x03,0x20,0x0F,0xC0,0x08,0x00,0x00,0x00,}}, +{ 0x12B5, {0x00,0x00,0x40,0x40,0x40,0x40,0x5E,0xE0,0x33,0x60,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12B8, {0x00,0x00,0x44,0x00,0x7C,0x00,0x10,0x00,0x17,0x80,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12B9, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2E,0x00,0x33,0x00,0x33,0x00,0x33,0xE0,0x33,0x60,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12BA, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x60,0x33,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12BB, {0x00,0x00,0x44,0x00,0x7C,0x00,0x10,0x00,0x17,0x80,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12BC, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0xC0,0x33,0x20,0x33,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12BD, {0x00,0x00,0x44,0x00,0x7C,0x00,0x10,0x00,0x17,0x80,0x0C,0xC0,0x0C,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12BE, {0x00,0x00,0x44,0x00,0x7C,0x00,0x10,0x00,0x17,0x80,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12C0, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2E,0x00,0x33,0x00,0x33,0xC0,0x33,0x20,0x33,0xC0,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12C2, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2E,0x00,0x33,0x40,0x33,0x40,0x33,0xE0,0x33,0x60,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12C3, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x04,0x20,}}, +{ 0x12C4, {0x00,0x00,0x88,0x00,0xF8,0x00,0x20,0x00,0x2E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x03,0xC0,0x03,0x20,0x0F,0xC0,0x08,0x00,0x00,0x00,}}, +{ 0x12C5, {0x00,0x00,0x88,0x00,0xF8,0x40,0x20,0x40,0x2E,0xE0,0x33,0x60,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12C8, {0x00,0x00,0x00,0x00,0x1F,0x00,0x35,0x80,0x64,0xC0,0x64,0xC0,0x64,0xC0,0x64,0xC0,0x35,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12C9, {0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x6B,0x00,0xC9,0x80,0xC9,0x80,0xC9,0x80,0xC9,0x80,0x6B,0x20,0x3F,0xE0,0x00,0x60,0x00,0x00,}}, +{ 0x12CA, {0x00,0x00,0x1F,0x00,0x35,0x80,0x64,0xC0,0x64,0xC0,0x35,0x80,0x1F,0x00,0x04,0x00,0x0C,0x00,0x19,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12CB, {0x00,0x00,0x1F,0x00,0x35,0x80,0x64,0xC0,0x64,0xC0,0x35,0x80,0x1F,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12CC, {0x00,0x00,0x1F,0x00,0x35,0x80,0x64,0xC0,0x64,0xC0,0x35,0x80,0x1F,0x00,0x04,0x00,0x07,0x00,0x04,0x80,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12CD, {0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x6B,0x00,0xC9,0x80,0xC9,0xF0,0xC9,0xB0,0xC9,0x80,0x6B,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12CE, {0x00,0x00,0x1F,0x00,0x35,0x80,0x64,0xC0,0x64,0xC0,0x35,0x80,0x1F,0x00,0x04,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12D0, {0x00,0x00,0x03,0x00,0x0D,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x37,0x80,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12D1, {0x00,0x00,0x0C,0x00,0x36,0x00,0xC6,0x00,0xC6,0x00,0xC7,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0xDE,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12D2, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x1F,0xC0,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x40,0x07,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12D3, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x1F,0xC0,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12D4, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x1F,0xC0,0x00,0xC0,0x01,0x80,0x03,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12D5, {0x00,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x37,0x80,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12D6, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x1F,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12D8, {0x00,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12D9, {0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x7E,0x00,0x66,0x00,0x67,0xE0,0x66,0x60,0x66,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12DA, {0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x7E,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x60,0x67,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12DB, {0x00,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12DC, {0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x7E,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x67,0x80,0x66,0x40,0x67,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12DD, {0x00,0x00,0x3E,0x00,0x08,0xC0,0x0C,0xC0,0x0C,0xC0,0x0F,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12DE, {0x00,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12DF, {0x00,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x3F,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x12E0, {0x00,0x00,0x39,0xC0,0x19,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12E1, {0x00,0x00,0xE7,0x00,0x66,0x00,0x66,0x00,0x7E,0x00,0x66,0x00,0x67,0xE0,0x66,0x60,0x66,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12E2, {0x00,0x00,0xE7,0x00,0x66,0x00,0x66,0x00,0x7E,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x60,0x67,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12E3, {0x00,0x00,0x39,0xC0,0x19,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12E4, {0x00,0x00,0x73,0x80,0x33,0x00,0x33,0x00,0x3F,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x33,0xC0,0x33,0x20,0x33,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12E5, {0x00,0x00,0x7C,0x00,0x11,0xC0,0x39,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12E6, {0x00,0x00,0x39,0xC0,0x19,0x80,0x19,0x80,0x1F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12E7, {0x00,0x00,0x73,0x80,0x33,0x00,0x33,0x00,0x3F,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x12E8, {0x00,0x00,0x0E,0x00,0x1B,0x00,0x31,0x80,0x31,0x80,0x19,0x80,0x0F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12E9, {0x00,0x00,0x1C,0x00,0x36,0x00,0x63,0x00,0x63,0x00,0x33,0x00,0x1E,0x00,0x0C,0x00,0x0F,0xC0,0x0C,0xC0,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12EA, {0x00,0x00,0x1C,0x00,0x36,0x00,0x63,0x00,0x63,0x00,0x33,0x00,0x1E,0x00,0x0C,0x80,0x0F,0x80,0x0C,0xC0,0x0C,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x12EB, {0x00,0x00,0x0E,0x00,0x1B,0x00,0x31,0x80,0x31,0x80,0x19,0x80,0x0F,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12EC, {0x00,0x00,0x1C,0x00,0x36,0x00,0x63,0x00,0x33,0x00,0x1E,0x00,0x0C,0x00,0x0F,0x80,0x0E,0x40,0x0D,0x80,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12ED, {0x00,0x00,0x0E,0x00,0x1B,0x00,0x31,0x80,0x19,0x80,0x0F,0x00,0x06,0x20,0x06,0x60,0x3F,0xC0,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12EE, {0x00,0x00,0x38,0x00,0x6C,0x00,0xC6,0x00,0xC7,0xE0,0x66,0x60,0x3C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12EF, {0x00,0x00,0x3F,0x80,0x0E,0x00,0x1B,0x00,0x31,0x80,0x31,0x80,0x19,0x80,0x0F,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12F0, {0x00,0x00,0x0F,0x80,0x18,0xC0,0x18,0xC0,0x19,0x80,0x0E,0x00,0x0C,0x00,0x06,0x00,0x1F,0x80,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12F1, {0x00,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0xE0,0xC3,0x60,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12F2, {0x00,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0x00,0xC3,0x60,0xC3,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12F3, {0x00,0x00,0x1F,0x00,0x31,0x80,0x31,0x80,0x33,0x00,0x1C,0x00,0x18,0x00,0x0C,0x00,0x3F,0x00,0x21,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12F4, {0x00,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0xC0,0xC3,0x20,0xC3,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12F5, {0x00,0x00,0x3E,0x00,0x63,0x00,0x63,0xE0,0x66,0x60,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0x00,0xC3,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12F6, {0x00,0x00,0x0F,0x80,0x18,0xC0,0x18,0xC0,0x19,0x80,0x0E,0x00,0x0C,0x00,0x06,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12F7, {0x00,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0x00,0x43,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x12F8, {0x00,0x00,0x0F,0x80,0x18,0xC0,0x1F,0xC0,0x19,0x80,0x0E,0x00,0x0C,0x00,0x06,0x00,0x1F,0x80,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12F9, {0x00,0x00,0x3E,0x00,0x63,0x00,0x7F,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0xE0,0xC3,0x60,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12FA, {0x00,0x00,0x3E,0x00,0x63,0x00,0x7F,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0x00,0xC3,0x60,0xC3,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x12FB, {0x00,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x33,0x00,0x1C,0x00,0x18,0x00,0x0C,0x00,0x3F,0x00,0x21,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x12FC, {0x00,0x00,0x3E,0x00,0x63,0x00,0x7F,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0xC0,0xC3,0x20,0xC3,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x12FD, {0x00,0x00,0x3E,0x00,0x63,0x00,0x7F,0xE0,0x66,0x60,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0x00,0xC3,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12FE, {0x00,0x00,0x0F,0x80,0x18,0xC0,0x1F,0xC0,0x19,0x80,0x0E,0x00,0x0C,0x00,0x06,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x12FF, {0x00,0x00,0x3E,0x00,0x63,0x00,0x7F,0x00,0x66,0x00,0x38,0x00,0x30,0x00,0x18,0x00,0x7E,0x00,0x43,0x00,0x03,0x00,0x0F,0xC0,0x08,0x40,}}, +{ 0x1300, {0x00,0x00,0x1F,0xC0,0x02,0x00,0x0F,0x80,0x18,0xC0,0x19,0x80,0x0E,0x00,0x06,0x00,0x1F,0x80,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1301, {0x00,0x00,0x7F,0x00,0x08,0x00,0x3E,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x18,0x00,0x7E,0xE0,0xC3,0x60,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1302, {0x00,0x00,0x7F,0x00,0x08,0x00,0x3E,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x18,0x00,0x7E,0x00,0xC3,0x60,0xC3,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1303, {0x00,0x00,0x3F,0x80,0x04,0x00,0x1F,0x00,0x31,0x80,0x33,0x00,0x1C,0x00,0x0C,0x00,0x3F,0x00,0x21,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1304, {0x00,0x00,0x7F,0x00,0x08,0x00,0x3E,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x18,0x00,0x7E,0xC0,0xC3,0x20,0xC3,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1305, {0x00,0x00,0x7F,0x00,0x08,0x00,0x3E,0x00,0x63,0xE0,0x66,0x60,0x38,0x00,0x18,0x00,0x7E,0x00,0xC3,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1306, {0x00,0x00,0x1F,0xC0,0x02,0x00,0x0F,0x80,0x18,0xC0,0x19,0x80,0x0E,0x00,0x06,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1307, {0x00,0x00,0x7F,0x00,0x08,0x00,0x3E,0x00,0x63,0x00,0x66,0x00,0x38,0x00,0x18,0x00,0x7E,0x00,0x43,0x00,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x1308, {0x00,0x00,0x1F,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1309, {0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0xE0,0x06,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x130A, {0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x60,0x07,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x130B, {0x00,0x00,0x1F,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x130C, {0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x130D, {0x00,0x00,0x1F,0x80,0x32,0xC0,0x1C,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x130E, {0x00,0x00,0x06,0x00,0x06,0x00,0x1F,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1310, {0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0xC0,0x07,0x20,0x06,0xC0,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1312, {0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x80,0x06,0x80,0x07,0xC0,0x06,0xC0,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1313, {0x00,0x00,0x1E,0x00,0x33,0x00,0x03,0x00,0x0F,0x80,0x0C,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1314, {0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x06,0x40,0x1F,0x80,0x10,0x00,0x00,0x00,}}, +{ 0x1315, {0x00,0x00,0x00,0x80,0x7C,0x80,0x07,0xC0,0x06,0xC0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1318, {0x00,0x00,0x1F,0x80,0x00,0x00,0x1F,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1319, {0x00,0x00,0x7E,0x00,0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x07,0xE0,0x06,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x131A, {0x00,0x00,0x7E,0x00,0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x60,0x07,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x131B, {0x00,0x00,0x1F,0x80,0x00,0x00,0x1F,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x131C, {0x00,0x00,0x7E,0x00,0x00,0x00,0x7C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x131D, {0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0x80,0x32,0xC0,0x1C,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x131E, {0x00,0x00,0x1F,0x80,0x06,0x00,0x1F,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x131F, {0x00,0x00,0x1F,0x80,0x00,0x00,0x1E,0x00,0x33,0x00,0x03,0x00,0x0F,0x80,0x0C,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1320, {0x00,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1321, {0x00,0x00,0x7E,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0xE0,0xDB,0x60,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1322, {0x00,0x00,0x7E,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x60,0xDB,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1323, {0x00,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1324, {0x00,0x00,0x7E,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0x00,0xDB,0xC0,0xDB,0x20,0xDB,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1325, {0x00,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x06,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1326, {0x00,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1327, {0x00,0x00,0x3F,0x00,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x6D,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x1328, {0x00,0x00,0x7F,0x00,0xC9,0x80,0x88,0x80,0x88,0x80,0x88,0x80,0x88,0x80,0xCC,0xC0,0xAA,0xA0,0xAA,0xA0,0xCC,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1329, {0x00,0x00,0x7C,0x00,0xD6,0x00,0x92,0x00,0x93,0xE0,0x92,0x60,0x92,0x00,0xDB,0x00,0xB6,0x80,0xB6,0x80,0xDB,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x132A, {0x00,0x00,0x7C,0x00,0xD6,0x00,0x92,0x00,0x92,0x00,0x92,0x00,0x92,0x00,0xDA,0x00,0xB6,0x00,0xB6,0x60,0xDB,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x132B, {0x00,0x00,0x7F,0x00,0xC9,0x80,0x88,0x80,0xCC,0x80,0xAA,0x80,0xAA,0x80,0xCC,0xC0,0x00,0xA0,0x00,0xA0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x132C, {0x00,0x00,0x7C,0x00,0xD6,0x00,0x93,0xC0,0x93,0x20,0x92,0xC0,0x92,0x00,0xDB,0x00,0xB6,0x80,0xB6,0x80,0xDB,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x132D, {0x00,0x00,0x7F,0x00,0xC9,0x80,0x88,0x80,0xC8,0xC0,0xA8,0xA0,0xA8,0xA0,0xCC,0xC0,0x0A,0x00,0x0A,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x132E, {0x00,0x00,0x7F,0x00,0xC9,0x80,0x88,0x80,0x8C,0xC0,0x8A,0xA0,0x8A,0xA0,0xCC,0xC0,0xA0,0x00,0xA0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x132F, {0x00,0x00,0x7F,0x00,0xC9,0x80,0x88,0x80,0xCC,0x80,0xAA,0x80,0xAA,0x80,0xCC,0x80,0x00,0x80,0x00,0x80,0x03,0xE0,0x02,0x20,0x00,0x00,}}, +{ 0x1330, {0x00,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1331, {0x00,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0xE0,0xC3,0x60,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1332, {0x00,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0x00,0xC3,0x60,0xC3,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1333, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x33,0x00,0x33,0x00,0x1E,0x00,0x1E,0x00,0x33,0x00,0x21,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1334, {0x00,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0xC0,0xC3,0x20,0xC3,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1335, {0x00,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x67,0xE0,0x66,0x60,0x3C,0x00,0x3C,0x00,0x66,0x00,0xC3,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1336, {0x00,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x19,0x80,0x30,0x80,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1337, {0x00,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0x00,0x43,0x00,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x1338, {0x00,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1339, {0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0x00,0xC3,0xE0,0xC3,0x60,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x133A, {0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0x00,0xC3,0x00,0xC3,0x60,0xC3,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x133B, {0x00,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x133C, {0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x3C,0x00,0x66,0x00,0xC3,0xC0,0xC3,0x20,0xC3,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x133D, {0x00,0x00,0x3C,0x00,0x66,0x00,0x67,0xE0,0x66,0x60,0x3C,0x00,0x3C,0x00,0x66,0x00,0xC3,0x00,0xC3,0x00,0xC3,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x133E, {0x00,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x133F, {0x00,0x00,0x1E,0x00,0x33,0x00,0x33,0x00,0x33,0x00,0x1E,0x00,0x1E,0x00,0x33,0x00,0x61,0x80,0x01,0x80,0x07,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x1340, {0x00,0x00,0x03,0x00,0x0D,0x80,0x31,0x80,0x31,0x80,0x3F,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x37,0x80,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1341, {0x00,0x00,0x0C,0x00,0x36,0x00,0xC6,0x00,0xC6,0x00,0xFF,0xE0,0xC6,0x60,0xC6,0x00,0xC6,0x00,0xDE,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1342, {0x00,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x31,0x80,0x1F,0xC0,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x40,0x07,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1343, {0x00,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x31,0x80,0x1F,0xC0,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1344, {0x00,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x31,0x80,0x1F,0xC0,0x00,0xC0,0x01,0x80,0x03,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1345, {0x00,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x31,0x80,0x31,0x80,0x3F,0x80,0x31,0x80,0x31,0x80,0x37,0x80,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1346, {0x00,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x31,0x80,0x1F,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1348, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x1C,0x00,0x36,0x00,0x32,0x00,0x3A,0xC0,0x1F,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1349, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x3C,0x00,0x66,0x00,0x76,0x00,0x3F,0xC0,0x1F,0xC0,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x134A, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x38,0x00,0x6D,0x80,0x64,0xC0,0x74,0xC0,0x3F,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x134B, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x38,0x00,0x64,0xE0,0x75,0xE0,0x3F,0x00,0x1E,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x134C, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x38,0x00,0x68,0x00,0x64,0x00,0x75,0xC0,0x3F,0x20,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x134D, {0x00,0x00,0x0F,0x00,0x1F,0x80,0x31,0x80,0x30,0x00,0x3C,0x00,0x32,0x00,0x32,0xC0,0x3F,0xC0,0x1F,0x80,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x134E, {0x00,0x00,0x1F,0x80,0x3E,0x40,0x61,0x80,0x60,0x00,0x60,0x00,0x78,0x00,0x64,0x00,0x65,0x80,0x7F,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x134F, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x38,0x00,0x64,0xE0,0x75,0xE0,0x3F,0x00,0x1E,0x00,0x0C,0x00,0x3F,0x00,0x21,0x00,}}, +{ 0x1350, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1351, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0xE0,0x06,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1352, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x60,0x07,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1353, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1354, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x06,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1355, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x07,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1356, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1357, {0x00,0x00,0x3F,0xC0,0x66,0x60,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x1358, {0x00,0x00,0x3F,0x80,0x04,0x00,0x3F,0x80,0x4A,0x40,0x4A,0x40,0x4A,0x40,0x31,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x1359, {0x00,0x00,0x21,0x00,0x3F,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x31,0x80,0x60,0xC0,0x70,0xC0,0x3F,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x135A, {0x00,0x00,0x21,0x00,0x3F,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x39,0x80,0x64,0xC0,0x74,0xC0,0x3F,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1361, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1362, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1363, {0x00,0x00,0x00,0xC0,0x3F,0xC0,0x30,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1364, {0x00,0x00,0x00,0xC0,0x3F,0xC0,0x30,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0xC0,0x3F,0xC0,0x30,0x00,0x00,0x00,}}, +{ 0x1365, {0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0xC0,0x3F,0xC0,0x30,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1366, {0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1367, {0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1368, {0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x30,0xC0,0x36,0xC0,0x06,0x00,0x30,0xC0,0x30,0xC0,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E02, {0x0C,0x00,0x0C,0x00,0x00,0x00,0x7F,0x00,0x31,0x80,0x31,0x80,0x3F,0x00,0x30,0x80,0x30,0xC0,0x30,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E03, {0x00,0x00,0x03,0x00,0x3B,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1C,0xC0,0x3B,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E0A, {0x0C,0x00,0x0C,0x00,0x00,0x00,0x7E,0x00,0x31,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E0B, {0x00,0x00,0x18,0x00,0x1B,0x80,0x01,0x80,0x0D,0x80,0x33,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x80,0x1D,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1E1E, {0x06,0x00,0x06,0x00,0x00,0x00,0x3F,0xC0,0x18,0x40,0x18,0x00,0x18,0x80,0x1F,0x80,0x18,0x80,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E1F, {0x18,0x00,0x18,0x00,0x07,0x00,0x09,0x80,0x18,0x00,0x3F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E40, {0x0C,0x00,0x0C,0x00,0x61,0xC0,0x31,0x80,0x31,0x80,0x3B,0x80,0x3B,0x80,0x2D,0x80,0x2D,0x80,0x25,0x80,0x71,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x1E41, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x6D,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x76,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x1E56, {0x06,0x00,0x06,0x00,0x00,0x00,0x3F,0x00,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E57, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x3B,0x00,0x1C,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1C,0x80,0x1B,0x00,0x18,0x00,0x3C,0x00,}}, +{ 0x1E60, {0x06,0x00,0x06,0x00,0x00,0x00,0x1E,0x80,0x11,0x80,0x30,0x80,0x1E,0x00,0x07,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E61, {0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E6A, {0x06,0x00,0x06,0x00,0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E6B, {0x0C,0x00,0x0C,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1E80, {0x18,0x00,0x0C,0x00,0x02,0x00,0xEE,0x60,0x66,0x40,0x37,0xC0,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E81, {0x18,0x00,0x0C,0x00,0x02,0x00,0x00,0x00,0x76,0xE0,0x76,0x40,0x36,0x40,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E82, {0x06,0x00,0x0C,0x00,0x10,0x00,0xEE,0x60,0x66,0x40,0x37,0xC0,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E83, {0x03,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x76,0xE0,0x76,0x40,0x36,0x40,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E84, {0x33,0x00,0x33,0x00,0x00,0x00,0xEE,0x60,0x66,0x40,0x37,0xC0,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1E85, {0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x76,0xE0,0x76,0x40,0x36,0x40,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x1EF2, {0x18,0x00,0x0C,0x00,0x02,0x00,0x7B,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x1EF3, {0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x7D,0xC0,0x30,0x80,0x18,0x80,0x19,0x00,0x0D,0x00,0x0E,0x00,0x66,0x00,0x64,0x00,0x38,0x00,}}, +{ 0x2010, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2011, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2012, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2013, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2014, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2015, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2016, {0x00,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x00,0x00,}}, +{ 0x2017, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0xFF,0xE0,}}, +{ 0x2018, {0x00,0x00,0x06,0x00,0x0C,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2019, {0x00,0x00,0x04,0x00,0x0E,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x201A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0E,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x201B, {0x00,0x00,0x04,0x00,0x0E,0x00,0x0C,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x201C, {0x00,0x00,0x19,0x80,0x33,0x00,0x3B,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x201D, {0x00,0x00,0x11,0x00,0x3B,0x80,0x19,0x80,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x201E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x3B,0x80,0x19,0x80,0x33,0x00,0x00,0x00,}}, +{ 0x201F, {0x00,0x00,0x11,0x00,0x3B,0x80,0x33,0x00,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2020, {0x00,0x00,0x04,0x00,0x0E,0x00,0x04,0x00,0x3F,0x80,0x35,0x80,0x0E,0x00,0x0E,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,}}, +{ 0x2021, {0x00,0x00,0x04,0x00,0x0E,0x00,0x24,0x80,0x3F,0x80,0x2E,0x80,0x04,0x00,0x04,0x00,0x2E,0x80,0x3F,0x80,0x24,0x80,0x0E,0x00,0x04,0x00,}}, +{ 0x2022, {0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1F,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2023, {0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x1C,0x00,0x1E,0x00,0x1F,0x00,0x1E,0x00,0x1C,0x00,0x18,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2024, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2025, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x2026, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0xC0,0x36,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2027, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2030, {0x00,0x00,0x38,0x80,0x6D,0x00,0x6D,0x00,0x6A,0x00,0x34,0x00,0x06,0x40,0x0D,0xA0,0x1D,0xA0,0x35,0xA0,0x22,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x2031, {0x00,0x00,0x44,0x00,0xA8,0x00,0xA8,0x00,0xB0,0x00,0x60,0x00,0x32,0x40,0x6D,0xA0,0xED,0xA0,0xAD,0xA0,0x12,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x2032, {0x00,0x00,0x30,0x00,0x30,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2033, {0x00,0x00,0x36,0x00,0x36,0x00,0x24,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2034, {0x00,0x00,0x36,0xC0,0x36,0xC0,0x24,0x80,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2035, {0x00,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2036, {0x00,0x00,0x36,0x00,0x36,0x00,0x12,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2037, {0x00,0x00,0x6D,0x80,0x6D,0x80,0x24,0x80,0x12,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2039, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x00,0x0C,0x00,0x0C,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x203A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x06,0x00,0x06,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x203B, {0x00,0x00,0x00,0x00,0x44,0x40,0x24,0x80,0x11,0x00,0x0A,0x00,0x64,0xC0,0x0A,0x00,0x11,0x00,0x24,0x80,0x44,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x203C, {0x00,0x00,0x10,0x80,0x39,0xC0,0x39,0xC0,0x39,0xC0,0x39,0xC0,0x10,0x80,0x10,0x80,0x00,0x00,0x10,0x80,0x39,0xC0,0x10,0x80,0x00,0x00,}}, +{ 0x203E, {0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2044, {0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x2070, {0x1C,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2071, {0x00,0x00,0x18,0x00,0x00,0x00,0x38,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2074, {0x06,0x00,0x0E,0x00,0x1E,0x00,0x36,0x00,0x36,0x00,0x3F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2075, {0x3E,0x00,0x30,0x00,0x30,0x00,0x3C,0x00,0x06,0x00,0x06,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2076, {0x1C,0x00,0x36,0x00,0x30,0x00,0x3C,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2077, {0x3E,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2078, {0x1C,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2079, {0x1C,0x00,0x36,0x00,0x36,0x00,0x1E,0x00,0x06,0x00,0x36,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x207A, {0x00,0x00,0x08,0x00,0x08,0x00,0x3E,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x207B, {0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x207C, {0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x207D, {0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x207E, {0x18,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x207F, {0x00,0x00,0x00,0x00,0x36,0x00,0x1B,0x00,0x1B,0x00,0x1B,0x00,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2080, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,}}, +{ 0x2081, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,}}, +{ 0x2082, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x26,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x3E,0x00,}}, +{ 0x2083, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x36,0x00,0x06,0x00,0x0C,0x00,0x06,0x00,0x36,0x00,0x1C,0x00,}}, +{ 0x2084, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0E,0x00,0x1E,0x00,0x36,0x00,0x36,0x00,0x3F,0x00,0x06,0x00,}}, +{ 0x2085, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x30,0x00,0x30,0x00,0x3C,0x00,0x06,0x00,0x06,0x00,0x3C,0x00,}}, +{ 0x2086, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x36,0x00,0x30,0x00,0x3C,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,}}, +{ 0x2087, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,}}, +{ 0x2088, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,0x36,0x00,0x36,0x00,0x1C,0x00,}}, +{ 0x2089, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x36,0x00,0x36,0x00,0x1E,0x00,0x06,0x00,0x36,0x00,0x1C,0x00,}}, +{ 0x208A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x3E,0x00,0x08,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x208B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x208C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x208D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,}}, +{ 0x208E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,}}, +{ 0x20A3, {0x00,0x00,0x00,0x00,0x7F,0x80,0x30,0x80,0x30,0x00,0x30,0x00,0x3E,0xC0,0x33,0x00,0x33,0x00,0x33,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20A4, {0x00,0x00,0x03,0x80,0x06,0xC0,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x3C,0x20,0x4E,0x40,0x39,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x20A7, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x7F,0xC0,0x31,0x80,0x3E,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x78,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20A9, {0x00,0x00,0x00,0x00,0xEE,0x60,0x66,0x40,0x66,0x40,0x36,0xC0,0xFF,0xE0,0x3B,0x80,0xFF,0xE0,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x20AC, {0x00,0x00,0x00,0x00,0x07,0x80,0x0C,0x40,0x18,0x00,0x3F,0x80,0x18,0x00,0x3F,0x00,0x18,0x00,0x0C,0x40,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x20AF, {0x04,0x00,0x08,0x00,0x3C,0x00,0x4A,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x40,0x69,0xA0,0x92,0xA0,0x6D,0x40,0x01,0x00,0x02,0x00,}}, +{ 0x20D0, {0x10,0x00,0x20,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D1, {0x01,0x00,0x00,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D2, {0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x20D3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x20D4, {0x5F,0x80,0x60,0x40,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D5, {0x3F,0x40,0x40,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D6, {0x10,0x00,0x3F,0xC0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D7, {0x00,0x80,0x3F,0xC0,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x09,0x00,0x09,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20D9, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0B,0x00,0x09,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20DA, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x09,0x00,0x0B,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20DB, {0x36,0xC0,0x36,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20DC, {0xDB,0x60,0xDB,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x20DD, {0x0F,0x00,0x30,0xC0,0x40,0x20,0x40,0x20,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x40,0x20,0x40,0x20,0x30,0xC0,0x0F,0x00,}}, +{ 0x20DE, {0xFF,0xF0,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0xFF,0xF0,}}, +{ 0x20DF, {0x00,0x00,0x06,0x00,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x80,0x10,0x80,0x10,0x40,0x20,0x20,0x40,0x10,0x80,0x09,0x00,0x06,0x00,}}, +{ 0x20E0, {0x0F,0x00,0x30,0xC0,0x60,0x20,0x50,0x20,0x88,0x10,0x84,0x10,0x82,0x10,0x82,0x10,0x81,0x10,0x40,0xA0,0x40,0x60,0x30,0xC0,0x0F,0x00,}}, +{ 0x20E1, {0x10,0x80,0x3F,0xC0,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2102, {0x00,0x00,0x00,0x00,0x0F,0x40,0x1E,0xC0,0x36,0x40,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x1E,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x2103, {0x00,0x00,0x70,0x00,0x53,0xA0,0x76,0x60,0x0C,0x20,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x06,0x20,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2105, {0x00,0x00,0x00,0x00,0x38,0x00,0x6C,0x00,0x60,0x00,0x6C,0x00,0x3B,0x80,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x03,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x210D, {0x00,0x00,0x00,0x00,0x6C,0x60,0x6C,0x60,0x6C,0x60,0x6C,0x60,0x6F,0xE0,0x6C,0x60,0x6C,0x60,0x6C,0x60,0x6C,0x60,0x00,0x00,0x00,0x00,}}, +{ 0x2113, {0x00,0x00,0x00,0x00,0x02,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x06,0x00,0x1C,0x00,0x04,0x00,0x04,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2115, {0x00,0x00,0x00,0x00,0x78,0x40,0x6C,0x40,0x6E,0x40,0x6F,0x40,0x6F,0x40,0x6D,0xC0,0x6C,0xC0,0x6C,0x40,0x6C,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x2116, {0x00,0x00,0x00,0x00,0xCE,0x00,0x64,0x00,0x75,0xC0,0x5F,0x60,0x5F,0x60,0x4F,0x60,0x45,0xC0,0x44,0x00,0xEF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x2119, {0x00,0x00,0x00,0x00,0x7F,0x00,0x6D,0x80,0x6C,0xC0,0x6C,0xC0,0x6D,0x80,0x6F,0x00,0x6C,0x00,0x6C,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x211A, {0x00,0x00,0x00,0x00,0x0E,0x00,0x3D,0x80,0x6C,0xC0,0x6C,0xC0,0x6C,0xC0,0x6C,0xC0,0x6C,0xC0,0x3F,0x80,0x1F,0x80,0x00,0xC0,0x00,0x00,}}, +{ 0x211D, {0x00,0x00,0x00,0x00,0x7F,0x00,0x6D,0x80,0x6C,0xC0,0x6C,0xC0,0x6D,0x80,0x6F,0x00,0x6D,0x80,0x6C,0xC0,0x6C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2122, {0x00,0x00,0x00,0x00,0xFA,0x20,0x23,0x60,0x22,0xA0,0x22,0x20,0x22,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2124, {0x00,0x00,0x00,0x00,0x7F,0xE0,0x46,0xC0,0x06,0xC0,0x0D,0x80,0x0D,0x80,0x1B,0x00,0x1B,0x00,0x36,0x20,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2126, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x11,0x00,0x4A,0x40,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2127, {0x00,0x00,0x00,0x00,0x7B,0xC0,0x4A,0x40,0x11,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x212B, {0x0E,0x00,0x0A,0x00,0x0E,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x13,0x00,0x13,0x00,0x3F,0x80,0x31,0x80,0x61,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x212E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x31,0x80,0x71,0xC0,0x7F,0xC0,0x70,0x00,0x31,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x215B, {0x30,0x80,0x70,0x80,0x31,0x00,0x31,0x00,0x32,0x00,0x33,0xC0,0x7F,0x60,0x07,0x60,0x09,0xC0,0x0B,0x60,0x13,0x60,0x11,0xC0,0x00,0x00,}}, +{ 0x215C, {0x30,0x80,0x58,0x80,0x19,0x00,0x31,0x00,0x1A,0x00,0x5B,0xC0,0x37,0x60,0x07,0x60,0x09,0xC0,0x0B,0x60,0x13,0x60,0x11,0xC0,0x00,0x00,}}, +{ 0x215D, {0x78,0x80,0x60,0x80,0x71,0x00,0x19,0x00,0x1A,0x00,0x5B,0xC0,0x37,0x60,0x07,0x60,0x09,0xC0,0x0B,0x60,0x13,0x60,0x11,0xC0,0x00,0x00,}}, +{ 0x215E, {0x78,0x80,0x18,0x80,0x19,0x00,0x31,0x00,0x32,0x00,0x33,0xC0,0x37,0x60,0x07,0x60,0x09,0xC0,0x0B,0x60,0x13,0x60,0x11,0xC0,0x00,0x00,}}, +{ 0x2190, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x7F,0xE0,0x20,0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2191, {0x00,0x00,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2192, {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x7F,0xE0,0x00,0x40,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2193, {0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x80,0x15,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2194, {0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x80,0x20,0x40,0x7F,0xE0,0x20,0x40,0x10,0x80,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2195, {0x00,0x00,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0x04,0x00,0x04,0x00,0x24,0x80,0x15,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2196, {0x00,0x00,0x00,0x00,0x7C,0x00,0x60,0x00,0x50,0x00,0x48,0x00,0x44,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x2197, {0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0xC0,0x01,0x40,0x02,0x40,0x04,0x40,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2198, {0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x40,0x02,0x40,0x01,0x40,0x00,0xC0,0x07,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2199, {0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x44,0x00,0x48,0x00,0x50,0x00,0x60,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21A4, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x20,0x20,0x20,0x7F,0xE0,0x20,0x20,0x10,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21A5, {0x00,0x00,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21A6, {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x80,0x40,0x40,0x7F,0xE0,0x40,0x40,0x40,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21A7, {0x00,0x00,0x1F,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x80,0x15,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21A8, {0x00,0x00,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0x04,0x00,0x24,0x80,0x15,0x00,0x0E,0x00,0x04,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x21CB, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21CC, {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x7F,0xC0,0x00,0x00,0x7F,0xC0,0x20,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D0, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x3F,0xE0,0x40,0x00,0x3F,0xE0,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D1, {0x00,0x00,0x04,0x00,0x0A,0x00,0x1B,0x00,0x2A,0x80,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D2, {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x7F,0xC0,0x00,0x20,0x7F,0xC0,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D3, {0x00,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x2A,0x80,0x1B,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D4, {0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x10,0x80,0x3F,0xC0,0x40,0x20,0x3F,0xC0,0x10,0x80,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D5, {0x00,0x00,0x04,0x00,0x0A,0x00,0x1B,0x00,0x2A,0x80,0x0A,0x00,0x0A,0x00,0x2A,0x80,0x1B,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D6, {0x00,0x00,0x00,0x00,0x7E,0x00,0x48,0x00,0x44,0x00,0x62,0x00,0x51,0x00,0x48,0x80,0x04,0x40,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D7, {0x00,0x00,0x00,0x00,0x0F,0xC0,0x02,0x40,0x04,0x40,0x08,0xC0,0x11,0x40,0x22,0x40,0x44,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x21D8, {0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x44,0x00,0x22,0x40,0x11,0x40,0x08,0xC0,0x04,0x40,0x02,0x40,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x21D9, {0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x04,0x40,0x48,0x80,0x51,0x00,0x62,0x00,0x44,0x00,0x48,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2200, {0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x3F,0x80,0x20,0x80,0x11,0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2201, {0x00,0x00,0x0E,0x00,0x1B,0x00,0x19,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x19,0x00,0x1B,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x2202, {0x00,0x00,0x07,0x00,0x09,0x80,0x00,0x80,0x0E,0x80,0x19,0x80,0x31,0x80,0x31,0x00,0x33,0x00,0x16,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2203, {0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x2204, {0x00,0x00,0x02,0x00,0x3F,0x80,0x02,0x80,0x04,0x80,0x04,0x80,0x3F,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x3F,0x80,0x10,0x00,0x00,0x00,}}, +{ 0x2205, {0x00,0x00,0x00,0x00,0x0E,0x40,0x11,0x80,0x21,0x80,0x42,0x40,0x44,0x40,0x48,0x40,0x30,0x80,0x31,0x00,0x4E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2206, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2207, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x20,0x80,0x11,0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2208, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x10,0x00,0x20,0x00,0x3F,0xC0,0x20,0x00,0x10,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2209, {0x00,0x00,0x00,0x40,0x00,0x80,0x0F,0xC0,0x11,0x00,0x22,0x00,0x3F,0xC0,0x24,0x00,0x18,0x00,0x0F,0xC0,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x220B, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x80,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x220C, {0x00,0x00,0x20,0x00,0x10,0x00,0x3F,0x00,0x08,0x80,0x04,0x40,0x3F,0xC0,0x02,0x40,0x01,0x80,0x3F,0x00,0x00,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x220F, {0x00,0x00,0x7F,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,}}, +{ 0x2210, {0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x7F,0xE0,0x00,0x00,}}, +{ 0x2211, {0x00,0x00,0x3F,0xC0,0x18,0x40,0x0C,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0x2212, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2213, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2215, {0x00,0x00,0x00,0x60,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2218, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x09,0x00,0x09,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2219, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x221A, {0x00,0x00,0x00,0x00,0x03,0xE0,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x64,0x00,0x78,0x00,0x18,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x221D, {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xC0,0x3D,0xC0,0x27,0x00,0x27,0x00,0x3D,0xC0,0x18,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x221E, {0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x80,0x7B,0xC0,0x4E,0x40,0x4E,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x221F, {0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2220, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2221, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x19,0x00,0x06,0x00,0x06,0x00,0x09,0x00,0x11,0x00,0x3F,0xC0,0x01,0x00,0x00,0x00,}}, +{ 0x2224, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x05,0x00,0x06,0x00,0x0C,0x00,0x14,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2225, {0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2226, {0x00,0x00,0x00,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0xC0,0x0F,0x00,0x39,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2227, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x2228, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x20,0x80,0x20,0x80,0x11,0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2229, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x10,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x222A, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x10,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x222B, {0x01,0x80,0x02,0xC0,0x06,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x16,0x00,0x34,0x00,0x18,0x00,}}, +{ 0x222C, {0x0C,0x60,0x14,0xA0,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0xA5,0x00,0xC6,0x00,}}, +{ 0x222E, {0x01,0x80,0x02,0xC0,0x06,0x80,0x06,0x00,0x1F,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x0F,0x00,0x06,0x00,0x16,0x00,0x34,0x00,0x18,0x00,}}, +{ 0x2234, {0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2235, {0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x223C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xC0,0x33,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x223D, {0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x80,0x42,0x40,0x84,0x20,0x84,0x20,0x48,0x40,0x31,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2243, {0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x44,0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2245, {0x00,0x00,0x00,0x00,0x38,0x00,0x44,0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2248, {0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x40,0x44,0x40,0x43,0x80,0x00,0x00,0x38,0x40,0x44,0x40,0x43,0x80,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2249, {0x00,0x00,0x01,0x00,0x01,0x00,0x3A,0x40,0x46,0x40,0x43,0x80,0x04,0x00,0x3C,0x40,0x4C,0x40,0x4B,0x80,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x2252, {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x2259, {0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x09,0x00,0x09,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x225F, {0x00,0x00,0x04,0x00,0x0A,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2260, {0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2261, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2262, {0x00,0x00,0x01,0x00,0x01,0x00,0x3F,0xC0,0x02,0x00,0x02,0x00,0x3F,0xC0,0x04,0x00,0x04,0x00,0x3F,0xC0,0x08,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x2264, {0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0x0C,0x00,0x03,0x00,0x00,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2265, {0x00,0x00,0x00,0x00,0x30,0x00,0x0C,0x00,0x03,0x00,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2266, {0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0x0C,0x00,0x03,0x00,0x00,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2267, {0x30,0x00,0x0C,0x00,0x03,0x00,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x226A, {0x00,0x00,0x00,0x00,0x02,0x40,0x04,0x80,0x09,0x00,0x12,0x00,0x24,0x00,0x12,0x00,0x09,0x00,0x04,0x80,0x02,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x226B, {0x00,0x00,0x00,0x00,0x24,0x00,0x12,0x00,0x09,0x00,0x04,0x80,0x02,0x40,0x04,0x80,0x09,0x00,0x12,0x00,0x24,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2282, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x10,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2283, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2284, {0x00,0x00,0x00,0x00,0x02,0x00,0x0F,0xC0,0x12,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x12,0x00,0x0F,0xC0,0x02,0x00,0x00,0x00,}}, +{ 0x2285, {0x00,0x00,0x00,0x00,0x04,0x00,0x3F,0x00,0x04,0x80,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x80,0x3F,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x2286, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x10,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x0F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2287, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x80,0x3F,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2288, {0x00,0x00,0x00,0x00,0x02,0x00,0x0F,0xC0,0x12,0x00,0x22,0x00,0x22,0x00,0x12,0x00,0x0F,0xC0,0x02,0x00,0x3F,0xC0,0x02,0x00,0x00,0x00,}}, +{ 0x2289, {0x00,0x00,0x00,0x00,0x04,0x00,0x3F,0x00,0x04,0x80,0x04,0x40,0x04,0x40,0x04,0x80,0x3F,0x00,0x04,0x00,0x3F,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x228A, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x10,0x00,0x20,0x00,0x20,0x00,0x11,0x00,0x0F,0xC0,0x02,0x00,0x3F,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x228B, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x04,0x80,0x3F,0x00,0x08,0x00,0x3F,0xC0,0x10,0x00,0x00,0x00,}}, +{ 0x2295, {0x00,0x00,0x00,0x00,0x1F,0x00,0x24,0x80,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x24,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2297, {0x00,0x00,0x00,0x00,0x1F,0x00,0x20,0x80,0x51,0x40,0x4A,0x40,0x44,0x40,0x4A,0x40,0x51,0x40,0x20,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x22A4, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x22A5, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x22A6, {0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x1F,0x80,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x22A7, {0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x1F,0x80,0x10,0x00,0x1F,0x80,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x22C0, {0x00,0x00,0x06,0x00,0x06,0x00,0x09,0x00,0x09,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x20,0x40,0x20,0x40,0x40,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x22C1, {0x00,0x00,0x40,0x20,0x40,0x20,0x20,0x40,0x20,0x40,0x10,0x80,0x10,0x80,0x10,0x80,0x09,0x00,0x09,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x22C2, {0x00,0x00,0x0F,0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x22C3, {0x00,0x00,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x20,0x40,0x10,0x80,0x0F,0x00,0x00,0x00,}}, +{ 0x22C5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2300, {0x00,0x00,0x00,0x00,0x0E,0x40,0x11,0x80,0x21,0x80,0x42,0x40,0x44,0x40,0x48,0x40,0x30,0x80,0x31,0x00,0x4E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2302, {0x00,0x00,0x06,0x00,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x2308, {0x00,0x00,0x07,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x2309, {0x00,0x00,0x3C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x230A, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x00,0x00,}}, +{ 0x230B, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x3C,0x00,0x00,0x00,}}, +{ 0x2310, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2312, {0x00,0x00,0x3F,0x80,0xC0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2320, {0x00,0x00,0x03,0x00,0x05,0x80,0x0D,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,}}, +{ 0x2321, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x16,0x00,0x34,0x00,0x18,0x00,0x00,0x00,}}, +{ 0x2329, {0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x232A, {0x00,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x23B7, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x12,0x00,0x12,0x00,0x0A,0x00,0x0A,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x23B8, {0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,}}, +{ 0x23B9, {0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,}}, +{ 0x23BA, {0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x23BB, {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x23BC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x23BD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,}}, +{ 0x2409, {0x00,0x00,0x48,0x00,0x48,0x00,0x78,0x00,0x4B,0xE0,0x48,0x80,0x48,0x80,0x48,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x240A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x43,0xC0,0x42,0x00,0x42,0x00,0x7B,0x80,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x240B, {0x00,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0x53,0xE0,0x50,0x80,0x20,0x80,0x20,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x240C, {0x00,0x00,0x78,0x00,0x40,0x00,0x40,0x00,0x73,0xC0,0x42,0x00,0x42,0x00,0x43,0x80,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x240D, {0x00,0x00,0x30,0x00,0x48,0x00,0x40,0x00,0x43,0x80,0x42,0x40,0x4A,0x40,0x33,0x80,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x2424, {0x00,0x00,0x48,0x00,0x48,0x00,0x68,0x00,0x5A,0x00,0x4A,0x00,0x4A,0x00,0x4A,0x00,0x02,0x00,0x02,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2500, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2501, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2502, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2503, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x250C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x250F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x07,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x2510, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2513, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x2514, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2517, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0xF0,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2518, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x251B, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x251C, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x251D, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF0,0x03,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2520, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x2523, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0xF0,0x07,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x2524, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2525, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x00,0xFE,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2528, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x252B, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFE,0x00,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x252C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x252F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2530, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x2533, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x2534, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2537, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2538, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x253B, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x253C, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x253F, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xF0,0xFF,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2542, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFF,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x254B, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xFF,0xF0,0xFF,0xF0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}}, +{ 0x254C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x254D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0xE0,0xFB,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x254E, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x254F, {0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x2550, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2551, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2552, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x02,0x00,0x03,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2553, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2554, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x04,0x00,0x05,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2555, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x02,0x00,0xFE,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2556, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2557, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x01,0x00,0xFD,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2558, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF0,0x02,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2559, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x255A, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0xF0,0x04,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x255B, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x00,0x02,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x255C, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x255D, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFD,0x00,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x255E, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF0,0x02,0x00,0x03,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x255F, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2560, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0xF0,0x04,0x00,0x05,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2561, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x00,0x02,0x00,0xFE,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2562, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFD,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2563, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFD,0x00,0x01,0x00,0xFD,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2564, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0xFF,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x2565, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2566, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0xFD,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x2567, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xF0,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2568, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2569, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFD,0xF0,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x256A, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xF0,0x02,0x00,0xFF,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x256B, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFF,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x256C, {0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xFD,0xF0,0x00,0x00,0xFD,0xF0,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,}}, +{ 0x256D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x80,0x01,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x256E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,}}, +{ 0x256F, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2570, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2571, {0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x00,}}, +{ 0x2572, {0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,}}, +{ 0x2573, {0x80,0x10,0x40,0x20,0x20,0x40,0x10,0x80,0x09,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x80,0x10,}}, +{ 0x2580, {0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2581, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2582, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2583, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2584, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2585, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2586, {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2587, {0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2588, {0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x2589, {0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,}}, +{ 0x258A, {0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,0xFF,0x80,}}, +{ 0x258B, {0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,}}, +{ 0x258C, {0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,}}, +{ 0x258D, {0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,}}, +{ 0x258E, {0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,}}, +{ 0x258F, {0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,}}, +{ 0x2590, {0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,}}, +{ 0x2591, {0xAA,0xA0,0x00,0x00,0x55,0x50,0x00,0x00,0xAA,0xA0,0x00,0x00,0x55,0x50,0x00,0x00,0xAA,0xA0,0x00,0x00,0x55,0x50,0x00,0x00,0xAA,0xA0,}}, +{ 0x2592, {0xAA,0xA0,0x55,0x50,0xAA,0xA0,0x55,0x50,0xAA,0xA0,0x55,0x50,0xAA,0xA0,0x55,0x50,0xAA,0xA0,0x55,0x50,0xAA,0xA0,0x55,0x50,0xAA,0xA0,}}, +{ 0x2593, {0x55,0x50,0xFF,0xF0,0xAA,0xA0,0xFF,0xF0,0x55,0x50,0xFF,0xF0,0xAA,0xA0,0xFF,0xF0,0x55,0x50,0xFF,0xF0,0xAA,0xA0,0xFF,0xF0,0x55,0x50,}}, +{ 0x2594, {0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2595, {0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,}}, +{ 0x2596, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,}}, +{ 0x2597, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,}}, +{ 0x2598, {0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2599, {0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x259A, {0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,}}, +{ 0x259B, {0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,}}, +{ 0x259C, {0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,}}, +{ 0x259D, {0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x259E, {0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,0xFC,0x00,}}, +{ 0x259F, {0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0x03,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x25A0, {0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x25A1, {0x00,0x00,0x7F,0xE0,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x25AA, {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25AB, {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25AC, {0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25AD, {0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25AE, {0x00,0x00,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x25B2, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x25B3, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,0x40,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x25B6, {0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x00,0x7E,0x00,0x7F,0x00,0x7F,0xC0,0x7F,0x00,0x7E,0x00,0x78,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25B7, {0x00,0x00,0x00,0x00,0x60,0x00,0x58,0x00,0x46,0x00,0x41,0x00,0x40,0xC0,0x41,0x00,0x46,0x00,0x58,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25BA, {0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x7C,0x00,0x7F,0x80,0x7F,0xE0,0x7F,0x80,0x7C,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25BB, {0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x5C,0x00,0x43,0x80,0x40,0x60,0x43,0x80,0x5C,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25BC, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x1F,0x00,0x1F,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25BD, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x40,0x40,0x20,0x80,0x20,0x80,0x11,0x00,0x11,0x00,0x0A,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25C0, {0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xC0,0x0F,0xC0,0x1F,0xC0,0x7F,0xC0,0x1F,0xC0,0x0F,0xC0,0x03,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x25C1, {0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x40,0x0C,0x40,0x10,0x40,0x60,0x40,0x10,0x40,0x0C,0x40,0x03,0x40,0x00,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x25C4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x03,0xE0,0x1F,0xE0,0x7F,0xE0,0x1F,0xE0,0x03,0xE0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25C5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x03,0xA0,0x1C,0x20,0x60,0x20,0x1C,0x20,0x03,0xA0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25C6, {0x00,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x3F,0x80,0x7F,0xC0,0xFF,0xE0,0x7F,0xC0,0x3F,0x80,0x1F,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x25C7, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x80,0x20,0x40,0x40,0x20,0x80,0x11,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x25CA, {0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x1F,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25CB, {0x00,0x00,0x00,0x00,0x0E,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x80,0x11,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25CC, {0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x40,0x40,0x00,0x00,0x20,0x80,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25CE, {0x00,0x00,0x00,0x00,0x0E,0x00,0x11,0x00,0x2E,0x80,0x51,0x40,0x51,0x40,0x51,0x40,0x2E,0x80,0x11,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25CF, {0x00,0x00,0x00,0x00,0x0E,0x00,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25D8, {0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,0xF1,0xF0,0xE0,0xF0,0xC0,0x70,0xC0,0x70,0xC0,0x70,0xE0,0xF0,0xF1,0xF0,0xFF,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x25D9, {0xFF,0xF0,0xFF,0xF0,0xF1,0xF0,0xEE,0xF0,0xDF,0x70,0xBF,0xB0,0xBF,0xB0,0xBF,0xB0,0xDF,0x70,0xEE,0xF0,0xF1,0xF0,0xFF,0xF0,0xFF,0xF0,}}, +{ 0x25E6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x25EF, {0x00,0x00,0x1F,0x00,0x20,0x80,0x40,0x40,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x40,0x40,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0x2605, {0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0xFF,0xE0,0x7F,0xC0,0x3F,0x00,0x1F,0x00,0x3F,0x80,0x3B,0x80,0x60,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2606, {0x00,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0xF1,0xE0,0x60,0xC0,0x31,0x80,0x15,0x00,0x2E,0x80,0x31,0x80,0x60,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x2639, {0x00,0x00,0x00,0x00,0x1F,0x80,0x20,0x40,0x59,0xA0,0x59,0xA0,0x40,0x20,0x4F,0x20,0x50,0xA0,0x20,0x40,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x263A, {0x00,0x00,0x00,0x00,0x1F,0x80,0x20,0x40,0x59,0xA0,0x59,0xA0,0x40,0x20,0x50,0xA0,0x4F,0x20,0x20,0x40,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x263B, {0x00,0x00,0x00,0x00,0x1F,0x80,0x3F,0xC0,0x66,0x60,0x66,0x60,0x7F,0xE0,0x6F,0x60,0x70,0xE0,0x3F,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x263C, {0x00,0x00,0x04,0x00,0x44,0x40,0x2E,0x80,0x11,0x00,0x20,0x80,0xE0,0xE0,0x20,0x80,0x11,0x00,0x2E,0x80,0x44,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x2640, {0x00,0x00,0x0E,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x11,0x00,0x0E,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x2641, {0x00,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x0E,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x11,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x2642, {0x00,0x00,0x07,0xE0,0x00,0x60,0x00,0xA0,0x01,0x20,0x1A,0x20,0x24,0x20,0x42,0x00,0x42,0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2660, {0x00,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x3F,0x80,0x7F,0xC0,0x7F,0xC0,0x35,0x80,0x04,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2661, {0x00,0x00,0x00,0x00,0x31,0x80,0x4A,0x40,0x84,0x20,0x80,0x20,0x40,0x40,0x20,0x80,0x11,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2662, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x40,0x40,0x20,0x80,0x11,0x00,0x0A,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2663, {0x00,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x35,0x80,0x7F,0xC0,0x7F,0xC0,0x35,0x80,0x04,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2664, {0x00,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x4E,0x40,0x35,0x80,0x04,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2665, {0x00,0x00,0x00,0x00,0x31,0x80,0x7B,0xC0,0xFF,0xE0,0xFF,0xE0,0x7F,0xC0,0x3F,0x80,0x1F,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2666, {0x00,0x00,0x04,0x00,0x0E,0x00,0x1F,0x00,0x3F,0x80,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x1F,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2667, {0x00,0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x35,0x80,0x4E,0x40,0x4E,0x40,0x35,0x80,0x04,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x2669, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x0E,0x00,0x1E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x266A, {0x04,0x00,0x06,0x00,0x07,0x00,0x05,0x80,0x05,0x80,0x04,0x80,0x04,0x80,0x05,0x00,0x1C,0x00,0x3C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x266B, {0x00,0x00,0x00,0x60,0x03,0xE0,0x0F,0xA0,0x0C,0x20,0x08,0x20,0x08,0x20,0x08,0xE0,0x09,0xE0,0x39,0xC0,0x78,0x00,0x70,0x00,0x00,0x00,}}, +{ 0x266C, {0x00,0x00,0x00,0x60,0x03,0xA0,0x0C,0x60,0x0B,0xA0,0x0C,0x20,0x08,0x20,0x08,0xE0,0x09,0xE0,0x39,0xC0,0x78,0x00,0x70,0x00,0x00,0x00,}}, +{ 0x266D, {0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x17,0x00,0x19,0x80,0x11,0x00,0x12,0x00,0x14,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x266E, {0x00,0x00,0x08,0x00,0x09,0x00,0x0B,0x00,0x0F,0x00,0x0D,0x00,0x09,0x00,0x0B,0x00,0x0F,0x00,0x0D,0x00,0x09,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x266F, {0x00,0x00,0x01,0x00,0x09,0xC0,0x0F,0xC0,0x3F,0x00,0x39,0x00,0x09,0x00,0x09,0xC0,0x0F,0xC0,0x3F,0x00,0x39,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x3000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3001, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x3002, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x48,0x00,0x48,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x3003, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x11,0x00,0x11,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3005, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x0F,0x80,0x11,0x00,0x11,0x00,0x22,0x00,0x06,0x00,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x3006, {0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x0C,0x80,0x13,0x00,0x12,0x00,0x15,0x00,0x28,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3007, {0x00,0x00,0x1F,0x00,0x20,0x80,0x40,0x40,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x40,0x40,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0x3008, {0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x00,}}, +{ 0x3009, {0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,}}, +{ 0x300A, {0x02,0x40,0x04,0x80,0x04,0x80,0x09,0x00,0x09,0x00,0x12,0x00,0x12,0x00,0x09,0x00,0x09,0x00,0x04,0x80,0x04,0x80,0x02,0x40,0x00,0x00,}}, +{ 0x300B, {0x48,0x00,0x24,0x00,0x24,0x00,0x12,0x00,0x12,0x00,0x09,0x00,0x09,0x00,0x12,0x00,0x12,0x00,0x24,0x00,0x24,0x00,0x48,0x00,0x00,0x00,}}, +{ 0x300C, {0x07,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x300D, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7C,0x00,0x00,0x00,}}, +{ 0x300E, {0x0F,0xC0,0x08,0x40,0x0B,0xC0,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x300F, {0x0E,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x7A,0x00,0x42,0x00,0x7E,0x00,0x00,0x00,}}, +{ 0x3010, {0x03,0xC0,0x03,0x80,0x03,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x80,0x03,0x80,0x03,0xC0,0x00,0x00,}}, +{ 0x3011, {0x78,0x00,0x38,0x00,0x38,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x38,0x00,0x38,0x00,0x78,0x00,0x00,0x00,}}, +{ 0x3012, {0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3013, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3014, {0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x00,}}, +{ 0x3015, {0x40,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,}}, +{ 0x301C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x20,0x42,0x40,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3041, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x07,0x00,0x3C,0x00,0x09,0x00,0x0F,0x80,0x1A,0x40,0x24,0x40,0x2C,0x40,0x31,0x80,0x00,0x00,}}, +{ 0x3042, {0x10,0x00,0x08,0x00,0x0E,0x00,0x78,0x00,0x12,0x00,0x1F,0x00,0x34,0x80,0x54,0x40,0x48,0x40,0x58,0x40,0x21,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x3043, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x20,0x80,0x20,0x40,0x10,0x40,0x14,0x00,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3044, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x20,0x40,0x20,0x20,0x24,0x20,0x28,0x60,0x28,0x20,0x30,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3045, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x03,0x00,0x00,0x00,0x17,0x00,0x08,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x3046, {0x08,0x00,0x07,0x00,0x00,0x00,0x0F,0x00,0x30,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x3047, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x1A,0x00,0x04,0x00,0x08,0x00,0x14,0x00,0x23,0x80,0x00,0x00,}}, +{ 0x3048, {0x10,0x00,0x0E,0x00,0x00,0x00,0x07,0x00,0x3A,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x38,0x00,0x44,0x00,0x43,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x3049, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x80,0x18,0xC0,0x30,0x00,0x17,0x80,0x18,0x40,0x30,0x40,0x31,0x80,0x10,0x00,0x00,0x00,}}, +{ 0x304A, {0x00,0x00,0x10,0x00,0x08,0x80,0x0C,0x60,0x38,0x20,0x09,0x80,0x0E,0x40,0x18,0x20,0x68,0x20,0x19,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x304B, {0x00,0x00,0x10,0x00,0x08,0x80,0x4E,0x40,0x39,0x20,0x09,0x60,0x11,0x00,0x11,0x00,0x11,0x00,0x25,0x00,0x22,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x304C, {0x00,0x40,0x21,0x20,0x10,0x80,0x9D,0x00,0x72,0x80,0x12,0x40,0x22,0xC0,0x22,0x00,0x22,0x00,0x4A,0x00,0x44,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x304D, {0x08,0x00,0x04,0x00,0x05,0x00,0x1E,0x00,0x03,0x80,0x3E,0x00,0x01,0x00,0x01,0x80,0x1E,0x80,0x20,0x00,0x18,0x00,0x07,0x00,0x00,0x00,}}, +{ 0x304E, {0x10,0x40,0x09,0x20,0x0A,0x80,0x3C,0x00,0x07,0x00,0x7C,0x00,0x02,0x00,0x03,0x00,0x3D,0x00,0x40,0x00,0x30,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x304F, {0x01,0x00,0x00,0x80,0x01,0x00,0x02,0x00,0x0C,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x00,}}, +{ 0x3050, {0x02,0x00,0x01,0x00,0x02,0x40,0x04,0x20,0x18,0x80,0x20,0x40,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x3051, {0x02,0x00,0x41,0x00,0x20,0x80,0x20,0xE0,0x4F,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x60,0x80,0x21,0x00,0x21,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x3052, {0x04,0x40,0x82,0xA0,0x41,0x40,0x41,0xC0,0x9F,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xC1,0x00,0x42,0x00,0x42,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x3053, {0x00,0x00,0x10,0x00,0x0F,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x3054, {0x01,0x40,0x20,0xA0,0x1F,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x3055, {0x08,0x00,0x04,0x00,0x03,0xC0,0x3D,0x00,0x01,0x00,0x00,0x80,0x0F,0xC0,0x10,0x00,0x20,0x00,0x18,0x00,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x3056, {0x10,0x40,0x08,0xA0,0x07,0x40,0x7A,0x00,0x02,0x00,0x01,0x00,0x1F,0x80,0x20,0x00,0x40,0x00,0x30,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3057, {0x00,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x40,0x11,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3058, {0x00,0x00,0x40,0x80,0x22,0x40,0x21,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x40,0x11,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3059, {0x02,0x00,0x01,0x00,0x41,0xE0,0x3F,0x00,0x07,0x00,0x09,0x80,0x08,0x80,0x07,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x305A, {0x05,0x40,0x02,0xA0,0x83,0xC0,0x7E,0x00,0x0E,0x00,0x13,0x00,0x11,0x00,0x0F,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x305B, {0x00,0x00,0x01,0x00,0x10,0x80,0x10,0xE0,0x57,0x80,0x38,0x80,0x10,0x80,0x11,0x80,0x10,0x80,0x08,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x305C, {0x00,0x40,0x02,0xA0,0x21,0x40,0x21,0xC0,0xAF,0x00,0x71,0x00,0x21,0x00,0x23,0x00,0x21,0x00,0x10,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x305D, {0x00,0x00,0x27,0x00,0x1A,0x00,0x04,0x00,0x08,0xC0,0x1F,0x00,0x62,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x305E, {0x00,0x40,0x27,0x20,0x1A,0x80,0x04,0x40,0x08,0xC0,0x1F,0x00,0x62,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x305F, {0x00,0x00,0x30,0x00,0x16,0x00,0x78,0x00,0x13,0x80,0x20,0xC0,0x21,0x00,0x20,0x00,0x40,0x00,0x44,0x00,0x43,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x3060, {0x00,0x40,0x31,0x20,0x16,0x80,0x78,0x00,0x13,0x80,0x20,0xC0,0x21,0x00,0x20,0x00,0x40,0x00,0x44,0x00,0x43,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x3061, {0x10,0x00,0x08,0x00,0x0B,0x00,0x7C,0x00,0x10,0x00,0x11,0x80,0x16,0x40,0x38,0x40,0x20,0x40,0x00,0x40,0x01,0x80,0x0E,0x00,0x00,0x00,}}, +{ 0x3062, {0x20,0x40,0x10,0x20,0x16,0x80,0xF8,0x40,0x20,0x00,0x23,0x00,0x2C,0x80,0x70,0x80,0x40,0x80,0x00,0x80,0x03,0x00,0x1C,0x00,0x00,0x00,}}, +{ 0x3063, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x18,0x80,0x60,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x1C,0x00,0x00,0x00,}}, +{ 0x3064, {0x00,0x00,0x00,0x00,0x03,0x80,0x4C,0x40,0x30,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x01,0x80,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3065, {0x01,0x40,0x00,0xA0,0x07,0x00,0x98,0x80,0x60,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3066, {0x00,0x00,0x00,0xE0,0x47,0x00,0x3A,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x3067, {0x00,0x00,0x01,0xC0,0x8E,0x00,0x74,0x40,0x05,0x20,0x08,0x80,0x08,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3068, {0x00,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0xC0,0x07,0x00,0x0C,0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x3069, {0x00,0x00,0x11,0x40,0x08,0xA0,0x08,0x00,0x09,0x80,0x0E,0x00,0x18,0x00,0x20,0x00,0x40,0x00,0x20,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x306A, {0x10,0x00,0x0A,0x00,0x7C,0x00,0x09,0x80,0x10,0xC0,0x20,0x80,0x21,0x00,0x41,0x00,0x0F,0x00,0x11,0x80,0x11,0x40,0x0E,0x00,0x00,0x00,}}, +{ 0x306B, {0x00,0x00,0x40,0x00,0x23,0x80,0x2C,0xC0,0x40,0x80,0x40,0x00,0x40,0x00,0x40,0x00,0x48,0x00,0x67,0xC0,0x20,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x306C, {0x00,0x00,0x02,0x00,0x01,0x00,0x07,0x80,0x2A,0x40,0x32,0x20,0x34,0x20,0x3C,0x20,0x48,0xE0,0x59,0x40,0x20,0xA0,0x00,0x00,0x00,0x00,}}, +{ 0x306D, {0x20,0x00,0x10,0x00,0x10,0x00,0x19,0x80,0x7E,0x40,0x18,0x40,0x10,0x40,0x30,0x40,0x31,0xC0,0x52,0x60,0x11,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x306E, {0x00,0x00,0x00,0x00,0x1F,0x00,0x24,0x80,0x24,0x40,0x48,0x40,0x48,0x40,0x50,0x40,0x50,0x80,0x21,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x306F, {0x01,0x00,0x40,0x80,0x28,0xE0,0x27,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x67,0x80,0x28,0xC0,0x27,0x20,0x00,0x00,0x00,0x00,}}, +{ 0x3070, {0x02,0x40,0x81,0x20,0x51,0xC0,0x4F,0x20,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xCF,0x00,0x51,0x80,0x4E,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x3071, {0x02,0xC0,0x81,0xA0,0x51,0x60,0x4F,0xC0,0x81,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xCF,0x00,0x51,0x80,0x4E,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x3072, {0x00,0x00,0x00,0x80,0x08,0x80,0x78,0xC0,0x10,0x40,0x10,0x60,0x20,0xA0,0x20,0x80,0x20,0x80,0x11,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3073, {0x00,0x40,0x01,0x20,0x11,0x40,0xF1,0xA0,0x20,0x80,0x20,0x80,0x41,0x40,0x41,0x00,0x41,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3074, {0x00,0xC0,0x01,0xA0,0x11,0xE0,0xF1,0x00,0x20,0x80,0x20,0x80,0x41,0x40,0x41,0x00,0x41,0x00,0x22,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3075, {0x00,0x00,0x10,0x00,0x0E,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x0A,0xC0,0xB2,0x20,0x52,0x60,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3076, {0x00,0x00,0x10,0x40,0x0E,0x20,0x04,0x80,0x08,0x40,0x08,0x00,0x04,0x00,0x0A,0xC0,0xB2,0x20,0x52,0x60,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3077, {0x00,0x00,0x10,0x00,0x0E,0x60,0x04,0xA0,0x08,0xC0,0x08,0x00,0x04,0x00,0x0A,0xC0,0xB2,0x20,0x52,0x60,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3078, {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x14,0x00,0xA2,0x00,0x41,0x00,0x00,0xC0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3079, {0x00,0x00,0x00,0x00,0x00,0x40,0x19,0x20,0x14,0x80,0xA2,0x00,0x41,0x00,0x00,0xC0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x307A, {0x00,0x00,0x00,0xC0,0x01,0x40,0x19,0x80,0x14,0x00,0xA2,0x00,0x41,0x00,0x00,0xC0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x307B, {0x00,0x00,0x48,0xC0,0x27,0x80,0x20,0xE0,0x4F,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x67,0x80,0x28,0xC0,0x27,0x20,0x00,0x00,0x00,0x00,}}, +{ 0x307C, {0x00,0x40,0x93,0xA0,0x4E,0x40,0x43,0x80,0x9F,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xCF,0x00,0x51,0x80,0x4E,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x307D, {0x00,0xC0,0x93,0xA0,0x4E,0x60,0x43,0xC0,0x9F,0x00,0x81,0x00,0x81,0x00,0x81,0x00,0xCF,0x00,0x51,0x80,0x4E,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x307E, {0x04,0x00,0x02,0x00,0x23,0xC0,0x1E,0x00,0x03,0x80,0x3E,0x00,0x02,0x00,0x02,0x00,0x1E,0x00,0x23,0x80,0x1C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x307F, {0x00,0x00,0x22,0x00,0x1E,0x00,0x04,0x00,0x08,0x80,0x08,0x80,0x3F,0x80,0x50,0xC0,0x91,0x20,0x61,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3080, {0x20,0x00,0x10,0x00,0x7C,0x80,0x10,0x40,0x30,0x60,0x50,0x00,0x51,0x00,0x70,0x80,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x3081, {0x00,0x00,0x02,0x00,0x01,0x00,0x27,0x00,0x29,0x80,0x32,0x40,0x32,0x20,0x4C,0x20,0x44,0x20,0x4C,0x20,0x30,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x3082, {0x04,0x00,0x02,0x00,0x12,0x00,0x0F,0x00,0x04,0x00,0x28,0x80,0x18,0x40,0x0E,0x40,0x08,0x40,0x08,0x40,0x04,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x3083, {0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x11,0x00,0x13,0x80,0x0C,0x40,0x38,0x40,0x08,0x80,0x04,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x3084, {0x02,0x00,0x01,0x00,0x13,0x00,0x31,0xC0,0x16,0x20,0x58,0x20,0x28,0x20,0x04,0xC0,0x04,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x3085, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x00,0x23,0x80,0x2E,0x40,0x32,0x40,0x22,0x40,0x23,0x80,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x3086, {0x00,0x00,0x06,0x00,0x43,0x80,0x25,0x40,0x29,0x20,0x31,0x20,0x31,0x20,0x21,0x20,0x25,0x40,0x03,0x80,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x3087, {0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x00,0x02,0x40,0x03,0x80,0x02,0x00,0x02,0x00,0x1E,0x00,0x23,0x80,0x22,0x40,0x1C,0x00,0x00,0x00,}}, +{ 0x3088, {0x08,0x00,0x04,0x00,0x04,0xC0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x3E,0x00,0x45,0x80,0x44,0x40,0x38,0x00,0x00,0x00,}}, +{ 0x3089, {0x08,0x00,0x04,0x00,0x07,0x00,0x18,0x00,0x20,0x00,0x20,0x00,0x27,0x00,0x38,0x80,0x20,0x80,0x00,0x80,0x03,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x308A, {0x20,0x00,0x13,0x00,0x14,0x80,0x18,0x40,0x18,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x308B, {0x00,0x00,0x11,0x80,0x0F,0x00,0x02,0x00,0x04,0x00,0x0F,0x80,0x18,0x40,0x20,0x40,0x06,0x40,0x09,0xC0,0x08,0x80,0x07,0x00,0x00,0x00,}}, +{ 0x308C, {0x00,0x00,0x40,0x00,0x26,0x00,0x29,0x00,0x31,0x00,0xF1,0x00,0x21,0x00,0x61,0x00,0x61,0x00,0xA1,0x20,0x20,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x308D, {0x00,0x00,0x11,0x80,0x0F,0x00,0x02,0x00,0x04,0x00,0x0F,0x80,0x10,0x40,0x20,0x40,0x00,0x40,0x00,0x40,0x01,0x80,0x0E,0x00,0x00,0x00,}}, +{ 0x308E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x1B,0x00,0x34,0x80,0x18,0x80,0x30,0x80,0x30,0x80,0x11,0x00,0x00,0x00,}}, +{ 0x308F, {0x20,0x00,0x10,0x00,0x10,0x00,0x59,0x80,0x3E,0x40,0x18,0x20,0x10,0x20,0x30,0x20,0x30,0x20,0x50,0x40,0x11,0x80,0x10,0x00,0x00,0x00,}}, +{ 0x3090, {0x00,0x00,0x36,0x00,0x1A,0x00,0x04,0x00,0x0F,0x00,0x38,0x80,0x48,0x40,0x50,0x40,0x52,0x40,0x65,0xC0,0x63,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x3091, {0x00,0x00,0x1B,0x00,0x0E,0x00,0x0F,0x00,0x18,0x80,0x10,0x40,0x0C,0x40,0x1B,0x80,0x0E,0x00,0x19,0x80,0x26,0x40,0x40,0x60,0x00,0x00,}}, +{ 0x3092, {0x10,0x00,0x08,0x00,0x3E,0x00,0x08,0x00,0x10,0x80,0x3C,0xC0,0x23,0x00,0x46,0x00,0x0A,0x00,0x10,0x00,0x20,0x00,0x1F,0x00,0x00,0x00,}}, +{ 0x3093, {0x08,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x3C,0x00,0x22,0x00,0x22,0x00,0x42,0x40,0x41,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x3099, {0x00,0x20,0x00,0x90,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x309A, {0x00,0x20,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x309B, {0x10,0x00,0x48,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x309C, {0x30,0x00,0x48,0x00,0x48,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x309D, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x0C,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x309E, {0x00,0x00,0x02,0x00,0x05,0x00,0x12,0x00,0x0C,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30A1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0xC0,0x1C,0x80,0x05,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x30A2, {0x00,0x00,0x00,0x00,0x23,0xC0,0x1C,0x40,0x04,0x80,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30A3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x02,0x00,0x0E,0x00,0x32,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x30A4, {0x00,0x00,0x00,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x0A,0x00,0x31,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x30A5, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x00,0x03,0x80,0x1C,0x80,0x08,0x80,0x08,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30A6, {0x00,0x00,0x04,0x00,0x02,0x00,0x03,0xC0,0x3C,0x40,0x10,0x40,0x10,0x40,0x10,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30A7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x3C,0x00,0x04,0x00,0x04,0x00,0x07,0x00,0x38,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x30A8, {0x00,0x00,0x00,0x00,0x01,0x80,0x3E,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0F,0x80,0x70,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30A9, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x00,0x03,0x80,0x3E,0x00,0x06,0x00,0x0A,0x00,0x12,0x00,0x26,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x30AA, {0x00,0x00,0x02,0x00,0x01,0x00,0x41,0xC0,0x3F,0x00,0x03,0x00,0x05,0x00,0x09,0x00,0x11,0x00,0x21,0x00,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x30AB, {0x00,0x00,0x04,0x00,0x02,0x00,0x03,0xC0,0x3E,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x80,0x12,0x80,0x21,0x80,0x01,0x00,0x00,0x00,}}, +{ 0x30AC, {0x00,0x40,0x09,0x20,0x04,0x80,0x07,0x80,0x7C,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x11,0x00,0x25,0x00,0x43,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x30AD, {0x00,0x00,0x10,0x00,0x09,0x80,0x0E,0x00,0x34,0x00,0x04,0x00,0x05,0xC0,0x0E,0x00,0x72,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x30AE, {0x01,0x40,0x10,0xA0,0x09,0x80,0x0E,0x00,0x34,0x00,0x04,0x00,0x05,0xC0,0x0E,0x00,0x72,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x30AF, {0x00,0x00,0x10,0x00,0x0B,0x80,0x0C,0x80,0x10,0x80,0x11,0x00,0x21,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30B0, {0x01,0x40,0x30,0xA0,0x17,0x00,0x19,0x00,0x11,0x00,0x22,0x00,0x22,0x00,0x44,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30B1, {0x00,0x00,0x18,0x00,0x08,0x00,0x08,0x60,0x1F,0x80,0x12,0x00,0x21,0x00,0x41,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x30B2, {0x00,0x40,0x31,0x20,0x10,0xA0,0x10,0x80,0x3F,0x00,0x24,0x00,0x42,0x00,0x82,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30B3, {0x00,0x00,0x00,0x00,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x07,0x80,0x38,0x80,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30B4, {0x01,0x40,0x00,0xA0,0x86,0x00,0x79,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x0E,0x00,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30B5, {0x00,0x00,0x02,0x00,0x11,0x00,0x11,0x00,0x53,0xC0,0x3D,0x00,0x11,0x00,0x11,0x00,0x12,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x30B6, {0x00,0x40,0x02,0xA0,0x11,0x40,0x11,0x00,0x53,0xC0,0x3D,0x00,0x11,0x00,0x11,0x00,0x12,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x30B7, {0x00,0x00,0x00,0x00,0x30,0x00,0x08,0x00,0x60,0x00,0x10,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x4C,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30B8, {0x00,0x00,0x00,0x40,0x31,0x20,0x08,0x80,0x60,0x00,0x10,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x4C,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30B9, {0x00,0x00,0x00,0x00,0x11,0xC0,0x0E,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30BA, {0x00,0x40,0x01,0x20,0x46,0x80,0x3A,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x00,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30BB, {0x00,0x00,0x20,0x00,0x10,0x00,0x11,0xC0,0x16,0x40,0x58,0x80,0x31,0x00,0x11,0x00,0x10,0x00,0x08,0x00,0x07,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x30BC, {0x00,0x40,0x21,0x20,0x10,0x80,0x11,0xC0,0x16,0x40,0x58,0x80,0x31,0x00,0x11,0x00,0x10,0x00,0x08,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x30BD, {0x00,0x00,0x01,0x00,0x20,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30BE, {0x00,0x40,0x02,0xA0,0x41,0x40,0x21,0x00,0x21,0x00,0x21,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30BF, {0x00,0x00,0x04,0x00,0x03,0xC0,0x06,0x40,0x04,0x40,0x0A,0x40,0x11,0xC0,0x00,0x80,0x01,0x00,0x02,0x00,0x0C,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x30C0, {0x00,0x40,0x10,0xA0,0x0F,0x40,0x19,0x00,0x11,0x00,0x29,0x00,0x47,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0xC0,0x00,0x00,0x00,}}, +{ 0x30C1, {0x00,0x00,0x01,0x00,0x06,0x00,0x3C,0x00,0x03,0xC0,0x4E,0x00,0x32,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30C2, {0x00,0x40,0x01,0xA0,0x06,0x40,0x3C,0x00,0x03,0xC0,0x4E,0x00,0x32,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30C3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0x24,0x40,0x14,0x40,0x10,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30C4, {0x00,0x00,0x00,0x80,0x08,0x40,0x44,0x40,0x24,0x40,0x20,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30C5, {0x00,0x40,0x01,0x20,0x22,0x80,0x91,0x00,0x51,0x00,0x41,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30C6, {0x00,0x00,0x00,0x00,0x27,0x00,0x18,0x00,0x01,0xC0,0x4E,0x00,0x32,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30C7, {0x00,0x40,0x01,0x20,0x26,0x80,0x18,0x00,0x01,0xC0,0x4E,0x00,0x32,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30C8, {0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x1C,0x00,0x13,0x00,0x10,0x80,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30C9, {0x00,0x80,0x22,0x40,0x11,0x00,0x10,0x00,0x10,0x00,0x1C,0x00,0x13,0x00,0x10,0x80,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30CA, {0x00,0x00,0x04,0x00,0x02,0x00,0x03,0xC0,0x7E,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30CB, {0x00,0x00,0x00,0x00,0x03,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x78,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30CC, {0x00,0x00,0x00,0x00,0x13,0xC0,0x0C,0x40,0x00,0x80,0x1C,0x80,0x03,0x00,0x01,0x80,0x02,0x40,0x0C,0x40,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30CD, {0x00,0x00,0x08,0x00,0x07,0x80,0x3C,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x0D,0x00,0x34,0x80,0x44,0x40,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30CE, {0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x30CF, {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x80,0x08,0x80,0x10,0x40,0x10,0x40,0x20,0x20,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D0, {0x00,0x00,0x01,0x40,0x00,0xA0,0x02,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,0x40,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D1, {0x00,0x00,0x00,0xE0,0x00,0xA0,0x02,0xE0,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,0x40,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D2, {0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x23,0x00,0x3C,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x30D3, {0x00,0x00,0x00,0x40,0x21,0x20,0x20,0x80,0x23,0x00,0x3C,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x30D4, {0x00,0x00,0x00,0xE0,0x20,0xA0,0x20,0xE0,0x23,0x00,0x3C,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x30D5, {0x00,0x00,0x00,0x00,0x27,0x80,0x18,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D6, {0x01,0x40,0x00,0xA0,0x4F,0x00,0x31,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D7, {0x00,0xE0,0x00,0xA0,0x4F,0xE0,0x31,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D8, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x14,0x00,0xA2,0x00,0x41,0x00,0x00,0xC0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30D9, {0x00,0x00,0x00,0x80,0x02,0x40,0x09,0x00,0x14,0x00,0xA2,0x00,0x41,0x00,0x00,0xC0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30DA, {0x00,0x00,0x03,0x80,0x02,0x80,0x0B,0x80,0x14,0x00,0xA2,0x00,0x41,0x00,0x00,0xC0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30DB, {0x00,0x00,0x04,0x00,0x02,0x00,0x03,0xC0,0x3E,0x00,0x02,0x00,0x02,0x80,0x12,0x40,0x12,0x40,0x22,0x00,0x06,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x30DC, {0x01,0x40,0x08,0xA0,0x04,0x00,0x07,0x80,0x7C,0x00,0x04,0x00,0x05,0x00,0x24,0x80,0x24,0x80,0x44,0x00,0x0C,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30DD, {0x00,0xE0,0x08,0xA0,0x04,0xE0,0x07,0xC0,0x7C,0x00,0x04,0x00,0x05,0x00,0x24,0x80,0x24,0x80,0x44,0x00,0x0C,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30DE, {0x00,0x00,0x00,0x00,0x43,0x80,0x3C,0x40,0x00,0x40,0x00,0x80,0x01,0x00,0x32,0x00,0x0C,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30DF, {0x00,0x00,0x08,0x00,0x06,0x00,0x01,0x80,0x10,0x00,0x0C,0x00,0x03,0x00,0x00,0x80,0x18,0x00,0x06,0x00,0x01,0x00,0x00,0x80,0x00,0x00,}}, +{ 0x30E0, {0x00,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x09,0x00,0x10,0x80,0x17,0x40,0x78,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30E1, {0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x0C,0x40,0x03,0x80,0x00,0x80,0x01,0x40,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x30E2, {0x00,0x00,0x00,0x00,0x27,0x00,0x18,0x00,0x08,0x00,0x4F,0xC0,0x38,0x00,0x08,0x00,0x08,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30E3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x09,0x80,0x0E,0x80,0x39,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x30E4, {0x00,0x00,0x20,0x00,0x11,0xC0,0x0E,0x40,0x58,0x40,0x28,0x80,0x05,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30E5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x19,0x00,0x01,0x00,0x02,0x00,0x07,0x80,0x38,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x30E6, {0x00,0x00,0x00,0x00,0x00,0x00,0x27,0x00,0x19,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x07,0x80,0x78,0x40,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30E7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x38,0x80,0x00,0x80,0x07,0x00,0x19,0x00,0x07,0x00,0x38,0x80,0x00,0x00,0x00,0x00,}}, +{ 0x30E8, {0x00,0x00,0x00,0x00,0x03,0xC0,0x3C,0x40,0x00,0x40,0x03,0xC0,0x1C,0x80,0x00,0x80,0x00,0x80,0x03,0x80,0x1C,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x30E9, {0x00,0x00,0x13,0x00,0x0C,0x00,0x00,0xC0,0x27,0x40,0x18,0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x01,0x00,0x06,0x00,0x18,0x00,0x00,0x00,}}, +{ 0x30EA, {0x00,0x00,0x01,0x00,0x10,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30EB, {0x00,0x00,0x00,0x00,0x04,0x00,0x22,0x00,0x12,0x00,0x12,0x40,0x12,0x40,0x12,0x80,0x22,0x80,0x23,0x00,0x42,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30EC, {0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x80,0x11,0x00,0x16,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30ED, {0x00,0x00,0x00,0x00,0x43,0xC0,0x3C,0x40,0x20,0x40,0x20,0x40,0x10,0x80,0x10,0x80,0x13,0x80,0x1C,0x40,0x10,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30EE, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x80,0x1C,0x80,0x10,0x80,0x11,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x30EF, {0x00,0x00,0x00,0x00,0x43,0xC0,0x3C,0x40,0x20,0x40,0x10,0x40,0x10,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x30F0, {0x00,0x00,0x04,0x00,0x02,0x00,0x07,0x80,0x7A,0x00,0x22,0x00,0x12,0x00,0x17,0x80,0x7A,0x40,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x30F1, {0x00,0x00,0x00,0x00,0x07,0x00,0x38,0x80,0x09,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x07,0xC0,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30F2, {0x00,0x00,0x00,0x00,0x03,0xC0,0x3C,0x40,0x00,0x40,0x03,0xC0,0x1C,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x0C,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30F3, {0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x40,0x08,0x40,0x00,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x4C,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30F4, {0x00,0x40,0x11,0x20,0x08,0x80,0x8F,0x80,0x70,0x80,0x41,0x00,0x21,0x00,0x21,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x00,0x00,}}, +{ 0x30F5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x27,0x80,0x18,0x80,0x08,0x80,0x08,0x80,0x13,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x30F6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x08,0x00,0x08,0xC0,0x0F,0x00,0x11,0x00,0x22,0x00,0x04,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x30FB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0F,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30FC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xE0,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30FD, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x0C,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x30FE, {0x00,0x00,0x01,0x00,0x02,0x80,0x11,0x00,0x0C,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x4E00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x4E01, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4E03, {0x10,0x00,0x10,0x00,0x10,0x00,0x10,0xE0,0x1F,0x00,0xF0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x40,0x0F,0xC0,0x00,0x00,}}, +{ 0x4E07, {0x00,0x00,0xFF,0xE0,0x08,0x00,0x08,0x00,0x0F,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x40,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x4E08, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x00,0x14,0x00,0x08,0x00,0x16,0x00,0x21,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x4E09, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E0A, {0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x0F,0x80,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E0B, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x06,0x00,0x07,0x00,0x05,0x00,0x04,0x80,0x04,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E0D, {0x00,0x00,0xFF,0xE0,0x02,0x00,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0xC4,0x40,0x04,0x20,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E0E, {0x10,0x00,0x10,0x00,0x1F,0x80,0x10,0x00,0x1F,0x00,0x11,0x00,0x01,0x00,0xFF,0xE0,0x01,0x00,0x01,0x00,0x01,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x4E10, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x07,0xC0,0x44,0x00,0x44,0x00,0x7F,0xC0,0x40,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x4E11, {0x00,0x00,0x3F,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x7F,0xC0,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E14, {0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E15, {0x00,0x00,0x7F,0xC0,0x06,0x00,0x0C,0x00,0x17,0x00,0x24,0x80,0x44,0x40,0x84,0x20,0x04,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x4E16, {0x49,0x00,0x49,0x00,0x49,0x00,0xFF,0xE0,0x49,0x00,0x49,0x00,0x49,0x00,0x4F,0x00,0x48,0x00,0x40,0x00,0x7F,0xC0,0x40,0x00,0x00,0x00,}}, +{ 0x4E17, {0x64,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0xFF,0xE0,0x64,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x4E18, {0x01,0x00,0x02,0x00,0x3C,0x00,0x20,0x00,0x3F,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E19, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x4A,0x40,0x49,0x40,0x50,0xC0,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x4E1E, {0x00,0x00,0x3F,0x00,0x02,0x00,0x76,0x40,0x15,0x80,0x25,0x00,0x24,0x80,0x44,0x40,0x84,0x20,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x4E21, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x5F,0x40,0x51,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x4E25, {0x00,0x00,0x00,0x00,0xFF,0xE0,0x0A,0x00,0x4A,0x40,0x2A,0x80,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x00,}}, +{ 0x4E26, {0x20,0x80,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x51,0x40,0x31,0x40,0x31,0x80,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E2A, {0x04,0x00,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x24,0x80,0x44,0x40,0x84,0x20,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E2D, {0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E31, {0x09,0x00,0x09,0x00,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x79,0xE0,0x49,0x20,0x11,0x00,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4E32, {0x04,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E36, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x4E38, {0x08,0x00,0x08,0x00,0x08,0x00,0xFF,0x00,0x09,0x00,0x09,0x00,0x29,0x00,0x19,0x00,0x15,0x00,0x23,0x20,0x41,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x4E39, {0x00,0x00,0x3F,0x80,0x20,0x80,0x24,0x80,0x24,0x80,0x20,0x80,0xFF,0xE0,0x20,0x80,0x20,0x80,0x40,0x80,0x40,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x4E3B, {0x08,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E3C, {0x10,0x80,0x10,0x80,0x7F,0xE0,0x10,0x80,0x14,0x80,0x12,0x80,0x12,0x80,0xFF,0xE0,0x10,0x80,0x20,0x80,0x20,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x4E3F, {0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x4E42, {0x00,0x80,0x60,0x80,0x20,0x80,0x21,0x00,0x21,0x00,0x11,0x00,0x12,0x00,0x0A,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x4E43, {0x00,0x00,0x3F,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0xE0,0x08,0xA0,0x08,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0xC0,0x00,0x00,}}, +{ 0x4E45, {0x08,0x00,0x08,0x00,0x0F,0x80,0x10,0x80,0x10,0x80,0x21,0x00,0x41,0x00,0x02,0x00,0x05,0x00,0x18,0x80,0x20,0x40,0xC0,0x20,0x00,0x00,}}, +{ 0x4E4B, {0x04,0x00,0x04,0x00,0x7F,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x64,0x00,0x78,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x4E4D, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x24,0x00,0x24,0x00,0x47,0xC0,0x84,0x00,0x04,0x00,0x07,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E4E, {0x01,0x80,0x7F,0x00,0x04,0x80,0x24,0x80,0x25,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4E4F, {0x00,0xC0,0x03,0x00,0x7C,0x00,0x04,0x00,0x3F,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x3C,0x00,0x30,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x4E55, {0x01,0xC0,0x7E,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x62,0x00,0x7F,0xC0,0x72,0x40,0x52,0x40,0x52,0xC0,0x82,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x4E56, {0x01,0x80,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x24,0x00,0xE5,0x60,0x25,0x80,0x25,0x00,0xE4,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E57, {0x01,0x00,0x3E,0x00,0x7F,0xC0,0x24,0x80,0xFF,0xE0,0x24,0x80,0x7F,0xC0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4E58, {0x01,0x00,0x3E,0x00,0xFF,0xE0,0x15,0x00,0x75,0xC0,0x15,0x00,0x35,0x40,0xD4,0xC0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x4E59, {0x00,0x00,0x7F,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x4E5D, {0x08,0x00,0x08,0x00,0x08,0x00,0xFF,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x11,0x00,0x11,0x00,0x21,0x20,0x41,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x4E5E, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x20,0x00,0x20,0x00,0x5F,0x80,0x02,0x00,0x0C,0x00,0x10,0x00,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x4E5F, {0x04,0x00,0x24,0x00,0x24,0x80,0x27,0x80,0x3C,0x80,0xE4,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x4E62, {0x62,0x00,0x62,0x00,0x62,0x00,0xF2,0x00,0xF2,0x00,0xF2,0x00,0xF2,0x00,0xF2,0x00,0xF2,0x00,0xF2,0x20,0x82,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x4E71, {0x09,0x00,0x11,0x00,0x61,0x00,0x21,0x00,0xFD,0x00,0x21,0x00,0x21,0x00,0x79,0x00,0x49,0x00,0x49,0x20,0x79,0x20,0x49,0xE0,0x00,0x00,}}, +{ 0x4E73, {0x0D,0x00,0xF1,0x00,0x05,0x00,0xA9,0x00,0x51,0x00,0x7D,0x00,0x09,0x00,0x11,0x00,0x1D,0x00,0xF1,0x20,0x11,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x4E7E, {0x22,0x00,0x22,0x00,0xFB,0xE0,0x7C,0x00,0x4B,0xC0,0x78,0x80,0x49,0x00,0x79,0x00,0x22,0x00,0xFE,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x4E80, {0x08,0x00,0x0F,0x00,0xF6,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x7F,0x80,0x44,0x80,0x7F,0x80,0x7F,0xA0,0x44,0xA0,0x03,0xE0,0x00,0x00,}}, +{ 0x4E82, {0x1D,0x00,0xE9,0x00,0x7D,0x00,0xF9,0x00,0x31,0x00,0xFD,0x00,0xF5,0x00,0xF5,0x00,0xF5,0x00,0xB5,0x20,0xB5,0x20,0xCD,0xE0,0x00,0x00,}}, +{ 0x4E85, {0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4E86, {0x00,0x00,0x3F,0xC0,0x00,0x80,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x4E88, {0x00,0x00,0x3F,0x80,0x09,0x00,0x06,0x00,0xFF,0xE0,0x04,0x40,0x04,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4E89, {0x04,0x00,0x0F,0x00,0x72,0x00,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x04,0x80,0x04,0x80,0x3F,0x80,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4E8A, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x24,0x80,0x24,0x80,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4E8B, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x3F,0x80,0x04,0x00,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x3F,0x80,0x04,0x80,0x0C,0x00,0x00,0x00,}}, +{ 0x4E8C, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x4E8E, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x18,0x00,0x00,0x00,}}, +{ 0x4E91, {0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x09,0x00,0x08,0x80,0x11,0x80,0x7E,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x4E92, {0x00,0x00,0x7F,0xC0,0x08,0x00,0x0F,0x80,0x08,0x80,0x10,0x80,0x11,0x00,0x3F,0x00,0x01,0x00,0x02,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E94, {0x00,0x00,0x7F,0xC0,0x08,0x00,0x08,0x00,0x08,0x00,0x7F,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E95, {0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x4E98, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x4E99, {0x00,0x00,0x7F,0xC0,0x08,0x00,0x1F,0x80,0x14,0x80,0x12,0x80,0x12,0x80,0x28,0x80,0x25,0x00,0x01,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E9B, {0x12,0x00,0x12,0x00,0x5F,0xC0,0x52,0x00,0x52,0x20,0x7A,0x20,0xC1,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E9C, {0x00,0x00,0x7F,0xE0,0x09,0x00,0x3F,0xC0,0x29,0x40,0x29,0x40,0x29,0x40,0x3F,0xC0,0x29,0x40,0x09,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E9E, {0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x71,0xC0,0x40,0x40,0x40,0x40,0x71,0xC0,0x11,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4E9F, {0x00,0x00,0xFF,0xE0,0x08,0x00,0x1F,0xC0,0x73,0x40,0x53,0x40,0x52,0x80,0x52,0xC0,0x73,0x60,0x0E,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4EA0, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x4EA1, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x4EA2, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x1F,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x20,0x21,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x4EA4, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x31,0x40,0x51,0x40,0x0A,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x4EA5, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x29,0x00,0x12,0x80,0x0D,0x00,0x0A,0x00,0x37,0x00,0x08,0x80,0x30,0x40,0xC0,0x40,0x00,0x00,}}, +{ 0x4EA6, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x80,0x51,0x40,0x91,0x20,0x91,0x20,0x21,0x00,0x21,0x00,0x43,0x00,0x00,0x00,}}, +{ 0x4EA8, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x3F,0x80,0x01,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4EAB, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x3F,0x00,0x02,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4EAC, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x4EAD, {0x04,0x00,0xFF,0xE0,0x1F,0x00,0x11,0x00,0x1F,0x00,0x00,0x00,0x7F,0xE0,0x40,0x40,0xBF,0x80,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x4EAE, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x7F,0xE0,0x40,0x40,0x92,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x4EB0, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x4EB3, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x7F,0xE0,0x43,0x40,0x9C,0x00,0x7F,0xC0,0x04,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x4EB6, {0x04,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4EBA, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x80,0x20,0x00,0x00,}}, +{ 0x4EC0, {0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x3F,0xE0,0x61,0x00,0xA1,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4EC1, {0x20,0x00,0x20,0x00,0x2F,0xC0,0x40,0x00,0x40,0x00,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x5F,0xE0,0x40,0x00,0x40,0x00,0x00,0x00,}}, +{ 0x4EC2, {0x11,0x00,0x11,0x00,0x11,0x00,0x2F,0xE0,0x21,0x20,0x61,0x20,0x21,0x20,0x21,0x20,0x22,0x20,0x24,0x20,0x28,0x20,0x20,0x40,0x00,0x00,}}, +{ 0x4EC4, {0x00,0x00,0x3F,0xE0,0x20,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x25,0x00,0x25,0x00,0x48,0x80,0x48,0x80,0x90,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x4EC6, {0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x80,0x61,0x40,0xA1,0x20,0x21,0x20,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4EC7, {0x24,0x00,0x24,0x00,0x24,0x00,0x67,0x00,0x7D,0x00,0xA5,0x00,0x25,0x00,0x25,0x00,0x25,0x00,0x29,0x20,0x30,0xA0,0x20,0x60,0x00,0x00,}}, +{ 0x4ECA, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xDF,0x60,0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4ECB, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xD1,0x60,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x4ECD, {0x10,0x00,0x1F,0x80,0x12,0x80,0x22,0x80,0x22,0x80,0x62,0xE0,0x22,0x20,0x22,0x20,0x22,0x20,0x24,0x20,0x28,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x4ECE, {0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x31,0x00,0x2A,0x80,0x46,0x40,0x44,0x40,0x88,0x20,0x00,0x00,}}, +{ 0x4ECF, {0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x42,0x00,0x42,0x00,0xC4,0x00,0x44,0x80,0x44,0x40,0x49,0xC0,0x7E,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x4ED4, {0x20,0x00,0x2F,0xC0,0x20,0x80,0x61,0x00,0x61,0x00,0xA1,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x4ED5, {0x21,0x00,0x21,0x00,0x21,0x00,0x61,0x00,0x7F,0xE0,0xA1,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x2F,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x4ED6, {0x21,0x00,0x21,0x00,0x29,0x00,0x69,0xC0,0x6F,0x40,0xB9,0x40,0x29,0x40,0x29,0x40,0x29,0x40,0x28,0x20,0x28,0x20,0x27,0xE0,0x00,0x00,}}, +{ 0x4ED7, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x41,0x00,0x49,0x00,0xC9,0x00,0x45,0x00,0x46,0x00,0x42,0x00,0x45,0x00,0x48,0x80,0x50,0x60,0x00,0x00,}}, +{ 0x4ED8, {0x10,0x80,0x10,0x80,0x10,0x80,0x2F,0xE0,0x20,0x80,0x64,0x80,0xA2,0x80,0x22,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x4ED9, {0x10,0x80,0x10,0x80,0x10,0x80,0x34,0xA0,0x34,0xA0,0x54,0xA0,0x14,0xA0,0x14,0xA0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x14,0x20,0x00,0x00,}}, +{ 0x4EDD, {0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x1F,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4EDE, {0x10,0x00,0x1F,0xE0,0x11,0x20,0x21,0x20,0x21,0x20,0x65,0x20,0x25,0x20,0x29,0x20,0x22,0x20,0x22,0x20,0x24,0x20,0x28,0x40,0x00,0x00,}}, +{ 0x4EDF, {0x20,0x40,0x21,0x80,0x2F,0x00,0x61,0x00,0x61,0x00,0xFF,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x4EE3, {0x12,0x80,0x12,0x40,0x12,0x40,0x23,0xE0,0x3F,0x00,0x61,0x00,0xA1,0x00,0x21,0x80,0x20,0x80,0x20,0xA0,0x20,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x4EE4, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x04,0x80,0x04,0x80,0x07,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4EE5, {0x20,0x40,0x20,0x40,0x24,0x40,0x23,0x40,0x21,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x2C,0xE0,0x30,0xA0,0xC3,0x10,0x0C,0x10,0x00,0x00,}}, +{ 0x4EED, {0x20,0x00,0x3F,0xC0,0x22,0x40,0x62,0x40,0x72,0x40,0xEA,0x40,0x66,0x40,0x62,0x40,0x65,0xE0,0x68,0x60,0x70,0x40,0x60,0x80,0x00,0x00,}}, +{ 0x4EEE, {0x20,0x00,0x2F,0xE0,0x28,0x00,0x6F,0xC0,0x6A,0x40,0xAA,0x40,0x29,0x40,0x29,0x80,0x29,0x80,0x31,0x80,0x36,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x4EF0, {0x10,0x80,0x11,0x00,0x16,0xE0,0x34,0xA0,0x34,0xA0,0x54,0xA0,0x14,0xA0,0x15,0xA0,0x16,0xA0,0x1C,0xC0,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x4EF2, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x69,0x20,0x69,0x20,0xA9,0x20,0x29,0x20,0x2F,0xE0,0x29,0x20,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4EF6, {0x21,0x00,0x25,0x00,0x25,0x00,0x6F,0xC0,0x71,0x00,0xA1,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4EF7, {0x22,0x00,0x22,0x00,0x27,0x00,0x65,0x00,0x68,0x80,0xF4,0xC0,0x65,0xA0,0x65,0x80,0x65,0x80,0x69,0x80,0x71,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x4EFB, {0x20,0xC0,0x2F,0x00,0x21,0x00,0x41,0x00,0x41,0x00,0xDF,0xE0,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x4F,0xC0,0x40,0x00,0x00,0x00,}}, +{ 0x4F01, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC4,0x60,0x04,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0x24,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4F09, {0x21,0x00,0x33,0x00,0x3F,0xE0,0x60,0x00,0x67,0x00,0xE5,0x80,0x65,0x80,0x65,0x80,0x65,0x80,0x69,0xA0,0x71,0xA0,0x60,0xE0,0x00,0x00,}}, +{ 0x4F0A, {0x20,0x00,0x2F,0xC0,0x21,0x40,0x6F,0xE0,0x61,0x40,0xA1,0x40,0x2F,0xC0,0x21,0x40,0x22,0x00,0x22,0x00,0x24,0x00,0x28,0x00,0x00,0x00,}}, +{ 0x4F0D, {0x20,0x00,0x3F,0xC0,0x22,0x00,0x62,0x00,0x62,0x00,0xBF,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x4F0E, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x61,0x00,0x61,0x00,0xAF,0xC0,0x24,0x40,0x24,0x80,0x22,0x80,0x23,0x00,0x24,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x4F0F, {0x21,0x00,0x21,0x80,0x21,0x40,0x41,0x00,0x5F,0xE0,0xC1,0x00,0x41,0x00,0x43,0x00,0x42,0x80,0x44,0x80,0x58,0x40,0x60,0x20,0x00,0x00,}}, +{ 0x4F10, {0x11,0x80,0x11,0x40,0x11,0x40,0x21,0xE0,0x3F,0x40,0x61,0x40,0xA1,0x80,0x21,0x80,0x21,0x00,0x22,0xA0,0x2C,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x4F11, {0x21,0x00,0x21,0x00,0x21,0x00,0x7F,0xE0,0x63,0x00,0xA3,0x00,0x23,0x80,0x25,0x80,0x25,0x40,0x39,0x20,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4F1A, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xDF,0x60,0x00,0x00,0x00,0x00,0x7F,0xC0,0x09,0x00,0x13,0x80,0x7C,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x4F1C, {0x22,0x00,0x32,0x00,0x3F,0x80,0x65,0xA0,0x65,0xA0,0xE8,0xE0,0x71,0x00,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x4F1D, {0x20,0x00,0x2F,0xC0,0x20,0x00,0x40,0x00,0x5F,0xE0,0xC2,0x00,0x42,0x00,0x42,0x80,0x44,0x40,0x48,0xC0,0x5F,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x4F2F, {0x10,0x80,0x10,0x80,0x11,0x00,0x27,0xE0,0x24,0x20,0x64,0x20,0x24,0x20,0x27,0xE0,0x24,0x20,0x24,0x20,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x4F30, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x6F,0xE0,0x61,0x00,0xE1,0x00,0x6F,0xC0,0x68,0x40,0x68,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x4F34, {0x21,0x00,0x29,0x40,0x25,0x40,0x61,0x00,0x6F,0xC0,0xA1,0x00,0x21,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4F36, {0x11,0x00,0x11,0x00,0x12,0x80,0x24,0x80,0x2F,0xC0,0x70,0x20,0xAF,0xC0,0x21,0x40,0x21,0x40,0x21,0xC0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4F38, {0x08,0x80,0x08,0x80,0x17,0xE0,0x14,0xA0,0x37,0xE0,0x54,0xA0,0x14,0xA0,0x17,0xE0,0x14,0xA0,0x10,0x80,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x4F3A, {0x10,0x00,0x1F,0xE0,0x10,0x20,0x37,0xA0,0x30,0x20,0x57,0xA0,0x14,0xA0,0x14,0xA0,0x17,0xA0,0x10,0x20,0x10,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x4F3C, {0x20,0x80,0x28,0x80,0x28,0x80,0x6A,0x80,0x69,0x80,0xA8,0x80,0x28,0x80,0x28,0x80,0x28,0x80,0x2D,0x40,0x31,0x20,0x22,0x20,0x00,0x00,}}, +{ 0x4F3D, {0x14,0x00,0x14,0x00,0x1F,0xE0,0x35,0xA0,0x35,0xA0,0x55,0xA0,0x15,0xA0,0x15,0xA0,0x15,0xA0,0x19,0xE0,0x1B,0xA0,0x10,0x00,0x00,0x00,}}, +{ 0x4F43, {0x10,0x00,0x17,0xE0,0x14,0xA0,0x34,0xA0,0x34,0xA0,0x57,0xE0,0x14,0xA0,0x14,0xA0,0x14,0xA0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x4F46, {0x20,0x00,0x2F,0x80,0x28,0x80,0x68,0x80,0x6F,0x80,0xA8,0x80,0x28,0x80,0x28,0x80,0x2F,0x80,0x20,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x4F47, {0x21,0x00,0x23,0x00,0x2F,0xE0,0x68,0x60,0x70,0x00,0xFF,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x4F4D, {0x22,0x00,0x22,0x00,0x22,0x00,0x7F,0xE0,0x60,0x40,0xA8,0x40,0x24,0x80,0x24,0x80,0x24,0x80,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x4F4E, {0x20,0xC0,0x2F,0x00,0x29,0x00,0x69,0x00,0x6F,0xE0,0xA9,0x00,0x29,0x00,0x28,0x80,0x2E,0x80,0x30,0x60,0x2F,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x4F4F, {0x22,0x00,0x21,0x00,0x3F,0xE0,0x61,0x00,0x61,0x00,0xA1,0x00,0x2F,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x4F50, {0x22,0x00,0x22,0x00,0x3F,0xE0,0x62,0x00,0x62,0x00,0xA2,0x00,0x27,0xC0,0x25,0x00,0x29,0x00,0x31,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x4F51, {0x22,0x00,0x22,0x00,0x3F,0xE0,0x44,0x00,0x44,0x00,0xC8,0x00,0x4F,0xC0,0x54,0x40,0x64,0x40,0x44,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x4F53, {0x21,0x00,0x21,0x00,0x21,0x00,0x7F,0xE0,0x63,0x00,0xA3,0x80,0x25,0x80,0x25,0x40,0x29,0x20,0x27,0x80,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x4F55, {0x20,0x00,0x3F,0xE0,0x20,0x40,0x6F,0x40,0x69,0x40,0xA9,0x40,0x29,0x40,0x2F,0x40,0x28,0x40,0x20,0x40,0x20,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x4F57, {0x21,0x00,0x23,0x00,0x2F,0xE0,0x6A,0x60,0x72,0x00,0xE2,0x40,0x62,0x80,0x63,0x00,0x62,0x00,0x62,0x20,0x62,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x4F59, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x1F,0x00,0x04,0x00,0x7F,0xC0,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x4F5A, {0x21,0x00,0x29,0x00,0x29,0x00,0x6F,0xC0,0x73,0x00,0xE1,0x00,0x7F,0xE0,0x63,0x00,0x67,0x80,0x68,0x80,0x70,0x40,0x60,0x20,0x00,0x00,}}, +{ 0x4F5B, {0x23,0x80,0x33,0x80,0x3F,0xC0,0x63,0xC0,0x7F,0xC0,0xF3,0x80,0x73,0x80,0x7F,0xE0,0x77,0xA0,0x65,0xA0,0x69,0xC0,0x71,0x80,0x00,0x00,}}, +{ 0x4F5C, {0x24,0x00,0x24,0x00,0x27,0xE0,0x6A,0x00,0x72,0x00,0xA3,0xC0,0x22,0x00,0x22,0x00,0x23,0xC0,0x22,0x00,0x22,0x00,0x22,0x00,0x00,0x00,}}, +{ 0x4F5D, {0x12,0x00,0x12,0x00,0x13,0xE0,0x37,0xE0,0x38,0x20,0x77,0xA0,0x34,0xA0,0x34,0xA0,0x37,0xA0,0x37,0x20,0x30,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x4F5E, {0x20,0x00,0x2F,0xC0,0x20,0x00,0x7F,0xE0,0x62,0x00,0xE2,0x00,0x7F,0xE0,0x64,0x80,0x67,0x80,0x67,0x80,0x63,0x40,0x7C,0x20,0x00,0x00,}}, +{ 0x4F69, {0x20,0x00,0x3F,0x80,0x30,0x80,0x7F,0x80,0x72,0x80,0xFF,0x80,0x7B,0x80,0x7B,0x80,0x7B,0x80,0x7B,0xE0,0x62,0x60,0x62,0x20,0x00,0x00,}}, +{ 0x4F6F, {0x28,0x80,0x24,0x80,0x3F,0xE0,0x6F,0xE0,0x61,0x00,0xEF,0xC0,0x61,0x00,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x4F70, {0x20,0x00,0x3F,0xE0,0x22,0x00,0x6F,0xC0,0x68,0x40,0xE8,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x4F73, {0x21,0x00,0x21,0x00,0x27,0xC0,0x61,0x00,0x6F,0xE0,0xA1,0x00,0x21,0x00,0x2F,0xC0,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x4F75, {0x28,0x80,0x24,0x80,0x3F,0xC0,0x44,0x80,0x44,0x80,0xC4,0x80,0x7F,0xE0,0x44,0x80,0x44,0x80,0x48,0x80,0x50,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x4F76, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x7F,0xE0,0x61,0x00,0xEF,0xC0,0x60,0x00,0x6F,0xC0,0x68,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x4F7B, {0x23,0x80,0x23,0x80,0x33,0xC0,0x6B,0xC0,0x6B,0x80,0xE3,0x80,0x67,0xC0,0x6B,0xA0,0x77,0xA0,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x4F7C, {0x22,0x00,0x22,0x00,0x3F,0xE0,0x44,0x80,0x48,0x80,0xD5,0x40,0x45,0x00,0x42,0x00,0x42,0x00,0x45,0x00,0x58,0x80,0x40,0x60,0x00,0x00,}}, +{ 0x4F7F, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x6F,0xC0,0x69,0x40,0xA9,0x40,0x2F,0xC0,0x29,0x40,0x26,0x00,0x22,0x00,0x2D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x4F83, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x48,0x40,0x4F,0xC0,0xC0,0x00,0x4A,0x80,0x4A,0x80,0x4A,0x80,0x4A,0xA0,0x52,0xA0,0x60,0x60,0x00,0x00,}}, +{ 0x4F86, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x25,0x80,0x35,0x80,0x2D,0x40,0x4E,0x40,0x0E,0x00,0x35,0x80,0xE4,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x4F88, {0x22,0x00,0x23,0xC0,0x24,0x40,0x7B,0x80,0x61,0x00,0xE7,0x00,0x79,0xE0,0x62,0x20,0x6D,0xC0,0x61,0x80,0x63,0x00,0x7C,0x00,0x00,0x00,}}, +{ 0x4F8B, {0x10,0x20,0x1F,0xA0,0x14,0xA0,0x27,0xA0,0x29,0xA0,0x69,0xA0,0x35,0xA0,0x22,0xA0,0x22,0xA0,0x24,0x20,0x28,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x4F8D, {0x21,0x00,0x21,0x00,0x2F,0xC0,0x61,0x00,0x7F,0xE0,0xA0,0x80,0x20,0x80,0x3F,0xE0,0x28,0x80,0x24,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x4F8F, {0x21,0x00,0x25,0x00,0x27,0xC0,0x6F,0xC0,0x71,0x00,0xFF,0xE0,0x63,0x80,0x63,0x80,0x65,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x4F91, {0x22,0x00,0x32,0x00,0x3F,0xE0,0x64,0x00,0x67,0xC0,0xEC,0x40,0x77,0xC0,0x64,0x40,0x67,0xC0,0x64,0x40,0x64,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x4F96, {0x04,0x00,0x04,0x00,0x0A,0x00,0x3F,0x80,0xC0,0x60,0x7F,0x80,0x6A,0x80,0x6A,0x80,0x7F,0x80,0x6A,0x80,0x6A,0x80,0x6A,0x80,0x00,0x00,}}, +{ 0x4F98, {0x21,0x00,0x23,0x00,0x2F,0xE0,0x68,0x60,0x71,0x80,0xEF,0x00,0x61,0x00,0x63,0xE0,0x7F,0x00,0x61,0x20,0x61,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x4F9B, {0x24,0x80,0x24,0x80,0x24,0x80,0x7F,0xC0,0x64,0x80,0xA4,0x80,0x24,0x80,0x3F,0xE0,0x20,0x00,0x24,0x80,0x28,0x40,0x30,0x40,0x00,0x00,}}, +{ 0x4F9D, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x63,0x00,0x63,0x40,0xA5,0x40,0x2D,0x80,0x35,0x00,0x24,0x80,0x24,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x4FA0, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x69,0x40,0x65,0x40,0xA5,0x80,0x3F,0xE0,0x23,0x00,0x23,0x80,0x24,0x80,0x28,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x4FA1, {0x20,0x00,0x3F,0xE0,0x22,0x80,0x62,0x80,0x6F,0xC0,0xAA,0xC0,0x2A,0xC0,0x2A,0xC0,0x2A,0xC0,0x2A,0xC0,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x4FAB, {0x21,0x00,0x33,0x00,0x3F,0xE0,0x68,0x00,0x67,0xC0,0xE2,0x00,0x7F,0xE0,0x64,0x80,0x67,0x80,0x67,0x80,0x63,0x40,0x7C,0x20,0x00,0x00,}}, +{ 0x4FAD, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x4F,0xC0,0x48,0xC0,0xC8,0x80,0x4A,0x80,0x51,0x40,0x50,0x20,0x46,0x00,0x41,0x00,0x40,0x80,0x00,0x00,}}, +{ 0x4FAE, {0x24,0x00,0x24,0x00,0x27,0xE0,0x4F,0x80,0x55,0x80,0xC5,0x80,0x5F,0xE0,0x4A,0x80,0x4A,0x80,0x5F,0xE0,0x40,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x4FAF, {0x27,0x80,0x20,0x80,0x3F,0xE0,0x64,0x00,0x64,0x00,0xA7,0xC0,0x29,0x00,0x31,0x00,0x3F,0xE0,0x22,0x80,0x2C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x4FB5, {0x10,0x00,0x17,0xC0,0x10,0x40,0x23,0xC0,0x27,0xC0,0x60,0x00,0xAF,0xF0,0x28,0x20,0x27,0xC0,0x21,0x80,0x22,0xC0,0x2C,0x30,0x00,0x00,}}, +{ 0x4FB6, {0x10,0x00,0x17,0xC0,0x14,0x40,0x24,0x40,0x27,0xC0,0x61,0x00,0x22,0x00,0x2F,0xE0,0x28,0x20,0x28,0x20,0x2F,0xE0,0x28,0x20,0x00,0x00,}}, +{ 0x4FBF, {0x20,0x00,0x3F,0xE0,0x21,0x00,0x4F,0xC0,0x4F,0xC0,0xC9,0x40,0x4F,0xC0,0x49,0x40,0x46,0x00,0x42,0x00,0x45,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x4FC2, {0x20,0xC0,0x27,0x00,0x3A,0x00,0x64,0x80,0x63,0x40,0xA2,0xC0,0x27,0x20,0x3D,0x00,0x21,0x40,0x29,0x20,0x31,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x4FC3, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x6F,0xC0,0x69,0x40,0xA1,0x00,0x29,0x00,0x29,0xC0,0x29,0x00,0x2D,0x00,0x33,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x4FC4, {0x11,0x00,0x17,0x40,0x3D,0x20,0x65,0x00,0x7F,0xE0,0xA5,0x00,0x27,0x40,0x2C,0xC0,0x34,0x80,0x24,0xA0,0x2D,0x60,0x24,0x20,0x00,0x00,}}, +{ 0x4FCA, {0x22,0x00,0x24,0xC0,0x3F,0xE0,0x6F,0x80,0x65,0xA0,0xAA,0xE0,0x33,0x80,0x24,0x80,0x2B,0x00,0x23,0x00,0x2D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x4FCE, {0x60,0x00,0x67,0x80,0x64,0x80,0x74,0x80,0x57,0x80,0xC4,0x80,0x64,0x80,0x77,0x80,0x54,0x80,0x44,0x80,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x4FD0, {0x10,0xA0,0x1B,0xE0,0x1E,0xE0,0x32,0xE0,0x3F,0xE0,0x72,0xE0,0x36,0xE0,0x37,0xE0,0x3A,0xE0,0x3A,0xA0,0x32,0x20,0x32,0x60,0x00,0x00,}}, +{ 0x4FD1, {0x10,0x00,0x17,0xE0,0x11,0xC0,0x37,0xE0,0x35,0xA0,0x74,0xA0,0x37,0xE0,0x34,0xA0,0x37,0xE0,0x37,0xE0,0x34,0xA0,0x34,0xE0,0x00,0x00,}}, +{ 0x4FD4, {0x20,0x00,0x2F,0xC0,0x2F,0xC0,0x6F,0xC0,0x6F,0xC0,0xE8,0x40,0x6F,0xC0,0x6B,0xC0,0x67,0x80,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x4FD7, {0x24,0x80,0x24,0x80,0x38,0x40,0x62,0x00,0x67,0x00,0xA5,0x00,0x28,0x80,0x3F,0xC0,0x28,0xA0,0x28,0x80,0x2F,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x4FD8, {0x20,0x40,0x21,0x80,0x2F,0x40,0x69,0x20,0x70,0x20,0xEF,0xC0,0x61,0x80,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x4FDA, {0x20,0x00,0x2F,0xC0,0x29,0x40,0x6F,0xC0,0x6B,0x40,0xE9,0x40,0x6F,0xC0,0x63,0x00,0x6F,0xC0,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x4FDB, {0x22,0x00,0x23,0x80,0x25,0x00,0x7F,0xC0,0x6B,0x40,0xE9,0x40,0x6F,0xC0,0x6B,0xC0,0x63,0x80,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x4FDD, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x4F,0xC0,0x49,0x40,0xC1,0x00,0x5F,0xE0,0x43,0x80,0x45,0x40,0x59,0x20,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x4FDF, {0x22,0x00,0x22,0x80,0x26,0xC0,0x7F,0xC0,0x64,0x00,0xE7,0xC0,0x69,0x00,0x73,0x00,0x7F,0xE0,0x63,0x00,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x4FE1, {0x27,0x80,0x20,0x00,0x3F,0xE0,0x60,0x00,0x6F,0xC0,0xA0,0x00,0x2F,0xC0,0x20,0x00,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x4FE3, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x4F,0xC0,0x40,0x00,0xCF,0xC0,0x41,0x00,0x5F,0xE0,0x41,0x00,0x42,0x80,0x4C,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x4FE4, {0x24,0x80,0x22,0x80,0x27,0xC0,0x67,0xC0,0x6F,0xC0,0xE9,0x00,0x6F,0xE0,0x6B,0x20,0x67,0x20,0x69,0x60,0x71,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x4FE5, {0x21,0x00,0x33,0x00,0x3F,0xE0,0x6F,0xC0,0x6B,0x40,0xEF,0xC0,0x69,0x40,0x6F,0xC0,0x6F,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x4FEE, {0x22,0x00,0x22,0x00,0x37,0xE0,0x7E,0x80,0x73,0x80,0xBC,0xE0,0x31,0x00,0x36,0x80,0x31,0x00,0x36,0x40,0x21,0x80,0x2E,0x00,0x00,0x00,}}, +{ 0x4FEF, {0x21,0x00,0x33,0x00,0x3F,0xE0,0x72,0x40,0x72,0x40,0xF7,0xE0,0x75,0x40,0x7D,0xC0,0x74,0x40,0x74,0x40,0x64,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x4FF3, {0x22,0x80,0x22,0x80,0x3E,0xE0,0x42,0x80,0x42,0x80,0xDE,0xE0,0x42,0x80,0x42,0x80,0x5E,0xE0,0x44,0x80,0x48,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x4FF5, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x4F,0xC0,0x43,0x00,0xFF,0xE0,0x43,0x00,0x45,0x40,0x5C,0x80,0x45,0x80,0x46,0x40,0x58,0x20,0x00,0x00,}}, +{ 0x4FF6, {0x28,0x00,0x28,0x00,0x2F,0xC0,0x6E,0x40,0x69,0x40,0xFF,0x40,0x69,0xC0,0x6C,0x80,0x7A,0x80,0x79,0xC0,0x69,0x40,0x7A,0x20,0x00,0x00,}}, +{ 0x4FF8, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x47,0xC0,0x43,0x00,0xDF,0xE0,0x45,0x80,0x4F,0xC0,0x51,0x20,0x47,0xC0,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x4FFA, {0x22,0x00,0x22,0x00,0x3F,0xC0,0x6F,0x00,0x72,0xC0,0xAF,0xA0,0x2A,0x80,0x2F,0x80,0x2F,0x80,0x2A,0xA0,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x4FFE, {0x21,0x00,0x22,0x00,0x2F,0xC0,0x6F,0xC0,0x6B,0x40,0xEF,0xC0,0x61,0x00,0x63,0x80,0x6F,0xE0,0x6F,0xE0,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x5005, {0x21,0x00,0x33,0x00,0x3F,0xE0,0x64,0x80,0x64,0x80,0xEB,0x40,0x71,0x40,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x5006, {0x20,0x00,0x3F,0xE0,0x21,0x00,0x7F,0xE0,0x73,0x20,0xFD,0xA0,0x75,0xA0,0x77,0xE0,0x7B,0x60,0x73,0x20,0x71,0x20,0x71,0x60,0x00,0x00,}}, +{ 0x5009, {0x04,0x00,0x0A,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x20,0x00,0x3F,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x500B, {0x10,0x00,0x1F,0xE0,0x19,0x20,0x2F,0xE0,0x29,0x20,0x6B,0xA0,0x2A,0xA0,0x2A,0xA0,0x2B,0xA0,0x28,0x20,0x2F,0xE0,0x28,0x20,0x00,0x00,}}, +{ 0x500D, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x44,0x80,0x44,0x80,0xDF,0xE0,0x40,0x00,0x4F,0xC0,0x48,0x40,0x48,0x40,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x500F, {0x22,0x00,0x22,0x00,0x37,0xC0,0x7F,0x80,0x73,0x80,0xFC,0xE0,0x71,0x80,0x73,0x40,0x7F,0xE0,0x73,0x00,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x5011, {0x20,0x00,0x3F,0xE0,0x3F,0xE0,0x7F,0xE0,0x7F,0xE0,0xF0,0x20,0x70,0x20,0x70,0x20,0x70,0x20,0x70,0x20,0x70,0x20,0x70,0x60,0x00,0x00,}}, +{ 0x5012, {0x20,0x20,0x3F,0xA0,0x24,0xA0,0x4A,0xA0,0x5F,0xA0,0xC4,0xA0,0x44,0xA0,0x5F,0xA0,0x44,0xA0,0x47,0x20,0x58,0x20,0x40,0x60,0x00,0x00,}}, +{ 0x5014, {0x20,0x00,0x2F,0xE0,0x2F,0xE0,0x6F,0xE0,0x6B,0xC0,0xEB,0xC0,0x6B,0xC0,0x6B,0xC0,0x6D,0xA0,0x75,0xA0,0x77,0xE0,0x64,0x20,0x00,0x00,}}, +{ 0x5016, {0x21,0x00,0x21,0x00,0x2F,0xC0,0x61,0x00,0x7F,0xE0,0xA4,0x80,0x24,0x80,0x3F,0xE0,0x21,0x00,0x2F,0xC0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5019, {0x27,0x80,0x20,0x80,0x3F,0xE0,0x62,0x00,0xB3,0xC0,0x35,0x00,0x39,0x00,0x3F,0xE0,0x31,0x00,0x32,0x80,0x24,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x501A, {0x21,0x00,0x33,0x00,0x3F,0xE0,0x64,0x80,0x68,0x80,0xFF,0xE0,0x60,0x40,0x6F,0x40,0x69,0x40,0x6F,0x40,0x68,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x501F, {0x25,0x00,0x25,0x00,0x3F,0xC0,0x65,0x00,0x65,0x00,0xBF,0xE0,0x20,0x00,0x2F,0x80,0x28,0x80,0x2F,0x80,0x2F,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x5021, {0x10,0x00,0x17,0xC0,0x17,0xC0,0x37,0xC0,0x37,0xC0,0x74,0x40,0x30,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x38,0x20,0x00,0x00,}}, +{ 0x5023, {0x29,0x00,0x29,0x00,0x29,0x00,0x7F,0xE0,0x49,0x40,0xCF,0x40,0x4B,0x40,0x4A,0xC0,0x4A,0x80,0x52,0x80,0x53,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x5024, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x47,0x80,0x54,0x80,0xD7,0x80,0x54,0x80,0x57,0x80,0x54,0x80,0x57,0x80,0x5F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x5025, {0x21,0x00,0x23,0x00,0x2F,0xE0,0x6B,0xE0,0x73,0xA0,0xE4,0xE0,0x68,0x00,0x6F,0xC0,0x61,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5026, {0x21,0x00,0x29,0x40,0x27,0xC0,0x45,0x40,0x5F,0xE0,0xC2,0x80,0x47,0x80,0x48,0xC0,0x57,0xA0,0x44,0x40,0x44,0x40,0x43,0xC0,0x00,0x00,}}, +{ 0x5028, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x6F,0xC0,0x6B,0x40,0xE9,0x00,0x6F,0xE0,0x6B,0x00,0x77,0xC0,0x74,0x40,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x5029, {0x21,0x00,0x2F,0xC0,0x27,0xC0,0x67,0xC0,0x7F,0xE0,0xE0,0x00,0x6F,0xC0,0x69,0x40,0x6F,0xC0,0x6F,0xC0,0x68,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x502A, {0x22,0x00,0x2C,0xC0,0x28,0x40,0x6E,0xC0,0x68,0x40,0xE8,0x40,0x6F,0xC0,0x6B,0xC0,0x67,0x80,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x502B, {0x21,0x00,0x23,0x00,0x24,0x80,0x4F,0xC0,0x50,0x20,0xCF,0xC0,0x4A,0xC0,0x4A,0xC0,0x4F,0xC0,0x4A,0xC0,0x4A,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x502C, {0x21,0x00,0x21,0x00,0x21,0xE0,0x6F,0xC0,0x68,0x40,0xEF,0xC0,0x68,0x40,0x6F,0xC0,0x6F,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x502D, {0x20,0xC0,0x2F,0x00,0x3F,0xE0,0x43,0x00,0x45,0x80,0xD9,0x40,0x41,0x00,0x5F,0xE0,0x42,0x80,0x47,0x00,0x42,0x80,0x5C,0x40,0x00,0x00,}}, +{ 0x5036, {0x20,0x00,0x2F,0x80,0x28,0x80,0x6F,0x80,0x68,0x80,0xAF,0x80,0x28,0x80,0x2F,0x80,0x20,0x00,0x3F,0xE0,0x28,0x80,0x30,0x40,0x00,0x00,}}, +{ 0x5039, {0x11,0x00,0x11,0x00,0x12,0x80,0x3F,0xC0,0x31,0x20,0x57,0xC0,0x15,0x40,0x17,0xC0,0x13,0x00,0x12,0x80,0x14,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x5043, {0x20,0x00,0x3F,0xE0,0x37,0xC0,0x77,0xC0,0x74,0x40,0xF7,0xC0,0x71,0x00,0x7F,0xE0,0x77,0x80,0x77,0xC0,0x7F,0xE0,0x70,0x00,0x00,0x00,}}, +{ 0x5047, {0x20,0x00,0x3E,0xC0,0x32,0x40,0x7E,0xC0,0x72,0x40,0xF0,0x00,0x7D,0xC0,0x71,0x40,0x79,0xC0,0x78,0x80,0x70,0xC0,0x73,0x20,0x00,0x00,}}, +{ 0x5048, {0x10,0x00,0x17,0xC0,0x17,0xC0,0x37,0xC0,0x37,0xC0,0x74,0x00,0x37,0xE0,0x39,0x20,0x3B,0xA0,0x3C,0x20,0x3F,0xA0,0x38,0xC0,0x00,0x00,}}, +{ 0x5049, {0x21,0x00,0x2F,0x80,0x3F,0xE0,0x60,0x00,0x6F,0x80,0xAF,0x80,0x20,0x00,0x2F,0xC0,0x29,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x504F, {0x10,0x00,0x1F,0xE0,0x10,0x00,0x27,0xC0,0x27,0xC0,0x64,0x00,0x27,0xE0,0x2D,0x60,0x2D,0x60,0x37,0xE0,0x35,0x60,0x24,0x60,0x00,0x00,}}, +{ 0x5050, {0x21,0x00,0x3F,0xE0,0x23,0x80,0x67,0x80,0x6F,0xE0,0xE8,0x80,0x69,0x00,0x6E,0x40,0x6B,0x80,0x7A,0x60,0x70,0xC0,0x67,0x00,0x00,0x00,}}, +{ 0x5055, {0x29,0x80,0x29,0xA0,0x2F,0xC0,0x69,0x80,0x6F,0xA0,0xF9,0xE0,0x62,0x00,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x5056, {0x21,0x00,0x23,0x00,0x2F,0xC0,0x61,0x40,0x7F,0xE0,0xE1,0x80,0x62,0x80,0x6F,0xC0,0x77,0xC0,0x67,0xC0,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x505A, {0x21,0x80,0x29,0x80,0x29,0x80,0x7F,0xE0,0x6B,0x40,0xEB,0x40,0x7F,0xC0,0x72,0x80,0x72,0x80,0x7F,0xC0,0x73,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x505C, {0x21,0x00,0x3F,0xE0,0x27,0x80,0x64,0x80,0x67,0x80,0xA0,0x00,0x3F,0xE0,0x30,0x40,0x2F,0xC0,0x21,0x00,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x5065, {0x20,0x80,0x23,0xC0,0x38,0xC0,0x4F,0xE0,0x53,0xC0,0xDC,0x80,0x47,0xC0,0x54,0x80,0x4F,0xE0,0x4C,0x80,0x53,0x00,0x40,0xE0,0x00,0x00,}}, +{ 0x506C, {0x24,0x00,0x24,0x00,0x2F,0xC0,0x7F,0xC0,0x77,0xC0,0xE9,0xC0,0x72,0x80,0x62,0x00,0x65,0x40,0x74,0x20,0x74,0xA0,0x63,0x80,0x00,0x00,}}, +{ 0x5072, {0x20,0x00,0x2F,0xC0,0x29,0x40,0x6F,0xC0,0x49,0x40,0xC9,0x40,0x4F,0xC0,0x41,0x00,0x44,0x80,0x54,0x20,0x54,0xA0,0x63,0x80,0x00,0x00,}}, +{ 0x5074, {0x10,0x20,0x1E,0xA0,0x1A,0xA0,0x2E,0xA0,0x2A,0xA0,0x6A,0xA0,0x2E,0xA0,0x2A,0xA0,0x2E,0xA0,0x26,0x20,0x29,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x5075, {0x11,0x00,0x11,0xE0,0x11,0x00,0x37,0xC0,0x34,0x40,0x57,0xC0,0x14,0x40,0x17,0xC0,0x14,0x40,0x17,0xC0,0x12,0x40,0x1C,0x20,0x00,0x00,}}, +{ 0x5076, {0x10,0x00,0x17,0xC0,0x15,0x40,0x37,0xC0,0x27,0xC0,0x61,0x00,0x2F,0xE0,0x29,0x60,0x2F,0xE0,0x2C,0x60,0x28,0x20,0x28,0x60,0x00,0x00,}}, +{ 0x5078, {0x27,0x00,0x23,0x00,0x26,0x80,0x7F,0xC0,0x70,0x20,0xFE,0x40,0x73,0xC0,0x7B,0xC0,0x7F,0x80,0x7F,0xC0,0x73,0xC0,0x77,0xC0,0x00,0x00,}}, +{ 0x507D, {0x29,0x00,0x25,0x00,0x3F,0x80,0x6F,0x80,0x62,0x80,0xA7,0xC0,0x24,0x40,0x2F,0xE0,0x37,0xE0,0x3A,0x20,0x28,0x20,0x20,0xC0,0x00,0x00,}}, +{ 0x5080, {0x21,0x00,0x22,0x00,0x2F,0xC0,0x6F,0xC0,0x6B,0x40,0xEF,0xC0,0x6B,0x40,0x63,0x80,0x67,0xC0,0x65,0xE0,0x69,0x20,0x71,0xE0,0x00,0x00,}}, +{ 0x5085, {0x21,0x80,0x3F,0xE0,0x27,0xC0,0x6F,0xC0,0x6F,0xC0,0xE9,0x40,0x6F,0xC0,0x69,0xC0,0x7F,0xE0,0x7F,0xE0,0x62,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x508D, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x44,0x80,0x5F,0xE0,0xD1,0x20,0x5F,0xE0,0x42,0x00,0x43,0xC0,0x44,0x40,0x58,0x40,0x40,0x80,0x00,0x00,}}, +{ 0x5091, {0x24,0x40,0x24,0x40,0x2F,0xE0,0x7F,0x40,0x67,0xE0,0xA9,0x40,0x31,0x40,0x3F,0xE0,0x27,0x80,0x29,0x40,0x31,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x5098, {0x04,0x00,0x0A,0x00,0x35,0x80,0xE4,0xE0,0x24,0x80,0x35,0x80,0x6F,0x40,0x35,0x80,0x5E,0x40,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5099, {0x24,0x80,0x3F,0xC0,0x24,0x80,0x7F,0xE0,0x48,0x00,0xCF,0xC0,0x49,0x40,0x5F,0xC0,0x59,0x40,0x5F,0xC0,0x69,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x509A, {0x25,0x80,0x25,0x80,0x3F,0xE0,0x7F,0xE0,0x73,0x40,0xF3,0x40,0x6D,0xC0,0x64,0x80,0x64,0x80,0x6A,0xC0,0x73,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x50AC, {0x21,0x00,0x29,0x40,0x29,0x40,0x6F,0xC0,0x64,0x80,0xAF,0xE0,0x39,0x00,0x2F,0xC0,0x29,0x00,0x2F,0xC0,0x2F,0xE0,0x28,0x00,0x00,0x00,}}, +{ 0x50AD, {0x21,0x00,0x3F,0xE0,0x5F,0xC0,0x51,0x40,0xDF,0xE0,0x5F,0xC0,0x51,0x00,0x5F,0xC0,0x5F,0xC0,0x6F,0xC0,0x69,0x40,0x49,0xC0,0x00,0x00,}}, +{ 0x50B2, {0x29,0x80,0x39,0x80,0x3F,0xE0,0x7F,0xE0,0x6B,0x40,0xEB,0x40,0x7F,0xC0,0x68,0x80,0x6E,0x80,0x7A,0xC0,0x73,0x40,0x66,0x20,0x00,0x00,}}, +{ 0x50B3, {0x21,0x00,0x3F,0xE0,0x27,0xC0,0x6F,0xC0,0x6F,0xC0,0xEF,0xC0,0x61,0x40,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x64,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x50B4, {0x20,0x00,0x3F,0xE0,0x33,0x80,0x73,0x80,0x73,0x80,0xF0,0x00,0x77,0xC0,0x75,0xC0,0x77,0xC0,0x77,0xC0,0x7F,0xE0,0x70,0x00,0x00,0x00,}}, +{ 0x50B5, {0x22,0x00,0x3F,0xC0,0x2F,0x80,0x62,0x00,0x7F,0xE0,0xAF,0x80,0x28,0x80,0x2F,0x80,0x28,0x80,0x2F,0x80,0x2C,0x80,0x30,0x40,0x00,0x00,}}, +{ 0x50B7, {0x12,0x00,0x13,0xF0,0x17,0xC0,0x2A,0x40,0x63,0xC0,0xA3,0xC0,0x3F,0xF0,0x24,0x00,0x27,0xE0,0x2A,0xA0,0x25,0x20,0x21,0xC0,0x00,0x00,}}, +{ 0x50BE, {0x20,0x00,0x27,0xE0,0x30,0x80,0x75,0xC0,0x75,0x40,0xB9,0xC0,0x31,0x40,0x31,0xC0,0x35,0x40,0x2D,0xC0,0x21,0x40,0x26,0x20,0x00,0x00,}}, +{ 0x50C2, {0x21,0x00,0x2F,0xC0,0x3F,0xE0,0x6F,0xE0,0x6F,0xC0,0xEF,0xC0,0x69,0x40,0x6F,0xC0,0x7F,0xE0,0x7F,0xE0,0x63,0x80,0x7E,0x40,0x00,0x00,}}, +{ 0x50C5, {0x24,0x80,0x3F,0xE0,0x24,0x80,0x6F,0xC0,0x69,0x40,0xAF,0xC0,0x21,0x00,0x2F,0xC0,0x27,0x80,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x50C9, {0x04,0x00,0x0A,0x00,0x3F,0x80,0xFF,0xE0,0x7B,0xC0,0x6A,0x80,0x6A,0x80,0x3B,0x80,0x31,0x80,0x39,0x80,0x4A,0x40,0x84,0x40,0x00,0x00,}}, +{ 0x50CA, {0x20,0x00,0x3F,0xE0,0x3F,0xC0,0x7F,0xC0,0x7F,0xC0,0xE2,0x00,0x7F,0xE0,0x65,0x80,0x7F,0xE0,0x6F,0x80,0x68,0x40,0x67,0xC0,0x00,0x00,}}, +{ 0x50CD, {0x23,0x40,0x3C,0x40,0x3F,0xE0,0x3F,0x60,0x55,0x60,0xDF,0x60,0x55,0x60,0x5F,0x60,0x44,0x60,0x4E,0xA0,0x47,0xA0,0x59,0x60,0x00,0x00,}}, +{ 0x50CF, {0x22,0x00,0x27,0x80,0x3F,0xC0,0x69,0x40,0x6F,0xC0,0xA1,0x00,0x26,0x40,0x3B,0x80,0x2F,0x80,0x25,0x40,0x39,0x20,0x22,0x00,0x00,0x00,}}, +{ 0x50D1, {0x21,0x80,0x2F,0x00,0x3F,0xE0,0x77,0x00,0x4F,0x80,0xD5,0x40,0x47,0x20,0x5F,0xC0,0x50,0x40,0x57,0x40,0x57,0x40,0x50,0x40,0x00,0x00,}}, +{ 0x50D5, {0x22,0x80,0x2A,0xC0,0x3F,0xE0,0x64,0x40,0x62,0x80,0xBF,0xE0,0x21,0x00,0x2F,0xC0,0x3F,0xE0,0x23,0x00,0x2C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x50D6, {0x21,0x00,0x3F,0xE0,0x27,0xC0,0x67,0xC0,0x6F,0xC0,0xE8,0x40,0x6F,0xC0,0x64,0xC0,0x7F,0xE0,0x6F,0xC0,0x68,0x40,0x6F,0xC0,0x00,0x00,}}, +{ 0x50DA, {0x22,0x00,0x32,0x00,0x3F,0xE0,0x4C,0xA0,0x4F,0xC0,0xD4,0xA0,0x47,0x80,0x44,0x80,0x47,0x80,0x49,0x40,0x51,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x50DE, {0x20,0xC0,0x3F,0xC0,0x39,0x60,0x6F,0x80,0x68,0x80,0xEF,0xC0,0x68,0x40,0x6F,0xE0,0x69,0xE0,0x77,0xE0,0x7A,0x20,0x68,0xC0,0x00,0x00,}}, +{ 0x50E3, {0x25,0x80,0x35,0x80,0x3F,0xC0,0x7F,0xE0,0x6D,0xC0,0xEB,0x80,0x73,0x40,0x6F,0xA0,0x6F,0x80,0x6F,0x80,0x6F,0x80,0x68,0x80,0x00,0x00,}}, +{ 0x50E5, {0x21,0x00,0x2F,0xC0,0x3F,0xE0,0x6F,0xE0,0x7E,0xE0,0xE4,0x80,0x66,0xE0,0x78,0x00,0x7F,0xE0,0x63,0x80,0x65,0xA0,0x78,0xE0,0x00,0x00,}}, +{ 0x50E7, {0x12,0x40,0x11,0x80,0x17,0xE0,0x37,0xE0,0x34,0xA0,0x57,0xE0,0x10,0x00,0x13,0xC0,0x12,0x40,0x13,0xC0,0x13,0xC0,0x12,0x40,0x00,0x00,}}, +{ 0x50ED, {0x24,0x80,0x3F,0xE0,0x35,0x80,0x7F,0xE0,0x6D,0xC0,0xF7,0xA0,0x65,0x60,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x50EE, {0x21,0x00,0x3F,0xC0,0x3F,0xE0,0x7F,0xE0,0x6F,0xC0,0xE9,0x40,0x6F,0xC0,0x6B,0x40,0x6F,0xC0,0x6F,0xC0,0x63,0x00,0x7F,0xE0,0x00,0x00,}}, +{ 0x50F5, {0x20,0x00,0x3F,0xE0,0x2F,0xC0,0x6F,0xC0,0x6B,0x40,0xEF,0xC0,0x7F,0xE0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x7F,0xE0,0x00,0x00,}}, +{ 0x50F9, {0x20,0x00,0x3F,0xE0,0x3F,0xC0,0x7F,0xC0,0x7F,0xC0,0xEF,0x80,0x68,0x80,0x6F,0x80,0x6F,0x80,0x6F,0x80,0x65,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x50FB, {0x20,0x80,0x2E,0x80,0x2B,0xE0,0x6B,0x40,0x4F,0x40,0xC9,0xE0,0x48,0x80,0x5E,0x80,0x5B,0xE0,0x6A,0x80,0x4E,0x80,0x48,0x80,0x00,0x00,}}, +{ 0x5100, {0x24,0x80,0x23,0x00,0x3F,0xE0,0x6F,0xC0,0x61,0x00,0xBF,0xE0,0x2F,0xC0,0x35,0xA0,0x3F,0xE0,0x2C,0xC0,0x34,0xE0,0x2D,0x20,0x00,0x00,}}, +{ 0x5101, {0x25,0x80,0x25,0x80,0x2F,0xE0,0x7F,0xC0,0x7B,0x00,0xEF,0xC0,0x69,0x00,0x6F,0xE0,0x6C,0xE0,0x7F,0xE0,0x73,0xA0,0x70,0x60,0x00,0x00,}}, +{ 0x5102, {0x23,0x80,0x2F,0xC0,0x2F,0xC0,0x6F,0xC0,0x6F,0xC0,0xE0,0x00,0x7F,0xC0,0x73,0x80,0x7F,0xE0,0x75,0xC0,0x67,0x80,0x7C,0x60,0x00,0x00,}}, +{ 0x5104, {0x21,0x00,0x2F,0xC0,0x24,0x80,0x7F,0xE0,0x67,0x80,0xA4,0x80,0x27,0x80,0x24,0x80,0x27,0xC0,0x2D,0x20,0x34,0xA0,0x23,0x80,0x00,0x00,}}, +{ 0x5109, {0x21,0x00,0x23,0x00,0x26,0x80,0x7F,0xE0,0x60,0x00,0xEE,0xC0,0x6B,0xC0,0x6B,0xC0,0x6E,0xC0,0x66,0xC0,0x6B,0xA0,0x71,0x20,0x00,0x00,}}, +{ 0x5112, {0x20,0x00,0x3F,0xE0,0x22,0x00,0x7F,0xE0,0x7D,0xC0,0xA0,0x00,0x3F,0xE0,0x22,0x00,0x2F,0xC0,0x2A,0xC0,0x2A,0xC0,0x2A,0xC0,0x00,0x00,}}, +{ 0x5114, {0x21,0x00,0x3F,0xE0,0x27,0xC0,0x7F,0xE0,0x6F,0xC0,0xE1,0x00,0x6F,0xC0,0x7F,0xE0,0x6F,0xE0,0x7F,0xE0,0x7D,0x40,0x70,0xC0,0x00,0x00,}}, +{ 0x5115, {0x62,0x00,0x7F,0xE0,0x7F,0xC0,0x7B,0xC0,0xEB,0xC0,0x7B,0xC0,0x48,0xA0,0x4F,0x80,0x4F,0x80,0x4F,0x80,0x50,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5116, {0x21,0x80,0x3F,0x80,0x3D,0xE0,0x7F,0xE0,0x7E,0x00,0xF4,0xC0,0x7F,0x00,0x60,0x00,0x6F,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5118, {0x62,0x00,0x7F,0x80,0x7F,0xE0,0x5F,0xE0,0xC2,0x00,0x7F,0xE0,0x69,0x40,0x45,0xA0,0x5F,0x80,0x55,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x511A, {0x25,0x80,0x3F,0xE0,0x27,0xC0,0x6F,0xC0,0x6F,0xC0,0xE0,0x00,0x7F,0xE0,0x73,0x20,0x67,0xC0,0x67,0x80,0x63,0x00,0x7C,0x00,0x00,0x00,}}, +{ 0x511F, {0x15,0x20,0x13,0xC0,0x2F,0xF0,0x2A,0x50,0x63,0xC0,0xA7,0xE0,0x27,0xE0,0x27,0xE0,0x24,0x20,0x27,0xE0,0x22,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x5121, {0x20,0x00,0x2F,0xC0,0x2F,0xC0,0x6F,0xC0,0x6F,0xC0,0xE8,0x40,0x60,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x71,0x20,0x00,0x00,}}, +{ 0x512A, {0x20,0x00,0x3F,0xE0,0x27,0x80,0x47,0x80,0x47,0x80,0xDF,0xE0,0x6D,0xC0,0x5B,0xC0,0x57,0xA0,0x5D,0x00,0x47,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x5132, {0x20,0x80,0x3C,0x80,0x3F,0xC0,0x40,0xC0,0x5F,0xE0,0xC0,0x80,0x5D,0xC0,0x43,0x40,0x5D,0xC0,0x55,0x40,0x5D,0xC0,0x55,0x40,0x00,0x00,}}, +{ 0x5137, {0x3E,0xE0,0x30,0x00,0x3F,0xE0,0x67,0x80,0x7F,0xE0,0xF3,0x80,0x7F,0xC0,0x73,0xC0,0x7F,0xE0,0x77,0xE0,0x67,0xA0,0x7C,0xE0,0x00,0x00,}}, +{ 0x513A, {0x75,0xC0,0x7F,0xC0,0x7D,0xE0,0x49,0xE0,0x7F,0x80,0xEB,0xE0,0x7F,0x80,0x4B,0xC0,0x5F,0xE0,0x5F,0x80,0x57,0xE0,0x63,0x00,0x00,0x00,}}, +{ 0x513B, {0x25,0x80,0x3F,0xE0,0x37,0xC0,0x6F,0xC0,0x6F,0xC0,0xEB,0xC0,0x6F,0xC0,0x63,0x00,0x6F,0xC0,0x7F,0xE0,0x6B,0xC0,0x73,0xA0,0x00,0x00,}}, +{ 0x513C, {0x6F,0xC0,0x6B,0xC0,0x4E,0xC0,0x5F,0xE0,0xFF,0x80,0x65,0x80,0x7F,0xE0,0x6B,0xC0,0x6E,0xC0,0x6E,0x80,0x7F,0xC0,0x43,0x20,0x00,0x00,}}, +{ 0x513F, {0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x20,0x41,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5140, {0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x20,0x41,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5141, {0x08,0x00,0x09,0x00,0x11,0xC0,0xFF,0x20,0x12,0x00,0x12,0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x22,0x20,0x42,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5143, {0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x00,0x22,0x00,0x22,0x20,0x42,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5144, {0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,0x2A,0x40,0x0A,0x00,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x5145, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x09,0x00,0x11,0x80,0x7E,0x40,0x09,0x00,0x09,0x00,0x11,0x00,0x11,0x20,0x21,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5146, {0x12,0x00,0x12,0x00,0x12,0x80,0x52,0x80,0x33,0x00,0x12,0x00,0x12,0x80,0x32,0x80,0xE2,0x00,0x22,0x20,0x42,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5147, {0x02,0x00,0x42,0x80,0x5C,0x80,0x4E,0x80,0x52,0x80,0x60,0x80,0x7F,0x80,0x52,0x80,0x12,0x00,0x22,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5148, {0x04,0x00,0x24,0x00,0x3F,0x80,0x24,0x00,0x44,0x00,0xFF,0xE0,0x0A,0x00,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5149, {0x04,0x00,0x04,0x00,0x24,0x80,0x15,0x00,0x04,0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x00,0x22,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x514B, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x0A,0x80,0x0A,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x514C, {0x07,0x00,0x11,0x00,0x20,0x80,0xFF,0xE0,0x31,0x80,0x21,0x80,0x21,0x80,0x3F,0x00,0x0A,0x00,0x1A,0x20,0x32,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x514D, {0x10,0x00,0x1F,0x00,0x22,0x00,0xFF,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x0A,0x80,0x0A,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x514E, {0x00,0x80,0x03,0x00,0x7C,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x0C,0x80,0x0D,0x00,0x14,0xA0,0x24,0x20,0xC3,0xE0,0x00,0x00,}}, +{ 0x5150, {0x00,0x00,0x2F,0x80,0x28,0x80,0x2F,0x80,0x28,0x80,0x28,0x80,0x2F,0x80,0x0A,0x80,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5152, {0x08,0x00,0x73,0xC0,0x40,0x40,0x7B,0xC0,0x40,0x40,0x40,0x40,0x7F,0xC0,0x52,0x40,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5154, {0x08,0x00,0x0F,0x00,0x32,0x00,0xFF,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x0C,0x80,0x0D,0x00,0x15,0xA0,0x24,0x20,0xC3,0xE0,0x00,0x00,}}, +{ 0x515A, {0x24,0x80,0x15,0x00,0x7F,0xE0,0x40,0x20,0x9F,0x80,0x10,0x80,0x10,0x80,0x1F,0x80,0x0A,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x515C, {0x02,0x00,0x34,0x00,0x5F,0xC0,0x52,0x40,0x5E,0x40,0x7E,0xC0,0x40,0x40,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5162, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x71,0x80,0x71,0x80,0x5E,0xA0,0x72,0xA0,0x84,0x60,0x00,0x00,}}, +{ 0x5165, {0x3C,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0E,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x80,0x20,0x00,0x00,}}, +{ 0x5168, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x3F,0x80,0x04,0x00,0x04,0x00,0x1F,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x5169, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x44,0x40,0x75,0x40,0x55,0xC0,0x55,0xC0,0x6E,0xC0,0x44,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x516A, {0x1C,0x00,0x0A,0x00,0x31,0x80,0xFF,0xE0,0x00,0x00,0x79,0x40,0x49,0x40,0x7A,0x80,0x7C,0x80,0x7A,0x80,0x4B,0x40,0x59,0x40,0x00,0x00,}}, +{ 0x516B, {0x1F,0x00,0x01,0x00,0x01,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x20,0x80,0x20,0x80,0x40,0x80,0x40,0x40,0x80,0x20,0x00,0x00,}}, +{ 0x516C, {0x07,0x00,0x11,0x00,0x10,0x80,0x20,0x80,0x24,0x40,0x44,0x20,0x84,0x00,0x09,0x00,0x08,0x80,0x11,0x80,0x7E,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x516D, {0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x10,0x80,0x20,0x80,0x20,0x40,0x40,0x40,0x80,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x516E, {0x07,0x00,0x11,0x00,0x20,0x80,0xFF,0xE0,0x10,0x00,0x10,0x00,0x1F,0x80,0x21,0x80,0x01,0x80,0x01,0x00,0x01,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x5171, {0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x20,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x5175, {0x03,0x00,0x3C,0x00,0x20,0x00,0x3F,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0xFF,0xE0,0x10,0x00,0x21,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x5176, {0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0x1F,0x00,0x11,0x00,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x5177, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x30,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x5178, {0x0A,0x00,0x0A,0x00,0x3F,0x80,0x2A,0x80,0x2A,0x80,0x3F,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x10,0x00,0x21,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x517C, {0x21,0x00,0x12,0x00,0xFF,0xE0,0x7F,0x80,0x12,0x80,0xFF,0xE0,0x12,0x80,0x7F,0x80,0x33,0x00,0xD2,0xE0,0x12,0x00,0x12,0x00,0x00,0x00,}}, +{ 0x5180, {0x11,0x40,0x71,0x80,0x3F,0xE0,0xFF,0xE0,0x3F,0x80,0x25,0x80,0x3F,0x00,0x13,0x00,0x7F,0xC0,0xFF,0xE0,0x31,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5182, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5185, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x4A,0x40,0x49,0x40,0x50,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5186, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5189, {0x04,0x00,0x04,0x00,0x3F,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0x64,0xC0,0xFF,0xE0,0x60,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x518A, {0x00,0x00,0x7F,0x80,0x4A,0x80,0x4A,0x80,0x4A,0x80,0x4A,0x80,0xFF,0xE0,0x4A,0x80,0x4A,0x80,0x4A,0x80,0x4A,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x518C, {0x00,0x00,0x79,0xC0,0x69,0x40,0x69,0x40,0x69,0x40,0xFF,0xE0,0x69,0x40,0x69,0x40,0x69,0x40,0x4A,0x40,0x4A,0x40,0x9C,0xC0,0x00,0x00,}}, +{ 0x518D, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0xFF,0xE0,0x20,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x518F, {0x00,0x00,0x7F,0xC0,0x52,0x40,0x52,0x40,0x63,0xC0,0x60,0x40,0x5F,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x53,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5190, {0x00,0x00,0x7F,0xC0,0x7F,0x40,0x7F,0x40,0x7F,0x40,0x40,0x40,0x7F,0x80,0x60,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5191, {0x04,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0x7F,0x80,0x60,0x80,0x7E,0x80,0x7E,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5192, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5193, {0x11,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7F,0x80,0x64,0x80,0x7F,0x80,0xFF,0xE0,0x60,0xC0,0x60,0x80,0x00,0x00,}}, +{ 0x5195, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x1F,0x00,0x62,0x00,0xFF,0x80,0x7F,0x80,0x3F,0xA0,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x5196, {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x60,0x20,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x5197, {0x00,0x00,0x3F,0xE0,0x40,0x20,0x0F,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x11,0x00,0x11,0x20,0x21,0x20,0x40,0xE0,0x00,0x00,}}, +{ 0x5199, {0x00,0x00,0x7F,0xE0,0x90,0x40,0x1F,0x80,0x10,0x00,0x1F,0x00,0x11,0x00,0x01,0x00,0xFF,0xE0,0x01,0x00,0x02,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x51A0, {0x00,0x00,0x7F,0xE0,0x80,0x40,0xF8,0x80,0x07,0xE0,0xFC,0x80,0x52,0x80,0x52,0x80,0x50,0x80,0x50,0xA0,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x51A2, {0x00,0x00,0x7F,0xE0,0xFF,0xC0,0x3F,0xC0,0x19,0x40,0x25,0x40,0xED,0x80,0x33,0x80,0x5E,0x80,0x1A,0x40,0x62,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x51A4, {0x00,0x00,0x7F,0xE0,0x8E,0x40,0x3E,0x00,0xFF,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x0C,0x00,0x1D,0x20,0x35,0xA0,0xC3,0xE0,0x00,0x00,}}, +{ 0x51A5, {0x00,0x00,0x7F,0xE0,0x80,0x40,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x10,0x00,0x21,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x51A6, {0x00,0x00,0x7F,0xE0,0xF9,0x40,0x39,0xE0,0x01,0x00,0xFF,0xC0,0x72,0x40,0x71,0x80,0x71,0xC0,0x57,0x60,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x51A8, {0x00,0x00,0x7F,0xE0,0xBF,0xC0,0x1F,0x00,0x11,0x00,0x1F,0x00,0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x51A9, {0x00,0x00,0x7F,0xE0,0xFB,0xC0,0x73,0x80,0x7B,0x80,0x60,0x80,0x3F,0x80,0x10,0x00,0xFF,0xC0,0xDD,0x40,0x55,0xC0,0x81,0x80,0x00,0x00,}}, +{ 0x51AA, {0x00,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x31,0x80,0x3F,0x80,0x21,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0xF5,0xE0,0x25,0x80,0x00,0x00,}}, +{ 0x51AB, {0x00,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x51AC, {0x04,0x00,0x04,0x00,0x1F,0x80,0x69,0x00,0x06,0x00,0x0D,0x00,0x30,0x80,0xCC,0x60,0x02,0x00,0x1C,0x00,0x02,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x51B0, {0x01,0x00,0x01,0x00,0x41,0x00,0x7F,0x20,0x03,0xC0,0x03,0x80,0x65,0x80,0x45,0x80,0x49,0x40,0x91,0x20,0x81,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x51B1, {0x00,0x00,0x3F,0xE0,0x48,0x00,0x6F,0x80,0x08,0x80,0x08,0x80,0x68,0x80,0x4F,0x80,0x48,0x80,0x80,0x80,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x51B2, {0x00,0x80,0x00,0x80,0x23,0xE0,0x37,0xE0,0x04,0xA0,0x04,0xA0,0x34,0xA0,0x27,0xE0,0x24,0xA0,0x40,0x80,0x40,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x51B3, {0x02,0x00,0x02,0x00,0x4F,0x80,0x6F,0x80,0x02,0x80,0x02,0x80,0x7F,0xE0,0x43,0x00,0x45,0x80,0x88,0x80,0x90,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x51B4, {0x00,0x00,0x0F,0xC0,0x44,0x80,0x24,0x80,0x04,0x80,0x3F,0xE0,0x21,0x80,0x41,0x80,0x42,0x80,0x8C,0x80,0xB0,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x51B5, {0x00,0x00,0x0F,0xC0,0x48,0x40,0x68,0x40,0x0F,0xC0,0x0B,0xC0,0x63,0x80,0x43,0x80,0x45,0x80,0x89,0xA0,0x91,0xA0,0x20,0xE0,0x00,0x00,}}, +{ 0x51B6, {0x02,0x00,0x42,0x00,0x22,0x00,0x84,0x80,0x44,0xC0,0x1F,0x20,0x20,0x00,0x4F,0xC0,0x48,0x40,0x88,0x40,0x8F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x51B7, {0x02,0x00,0x02,0x00,0x45,0x00,0x28,0x80,0x17,0xC0,0x20,0x20,0x5F,0xC0,0x42,0x40,0x42,0x40,0x83,0xC0,0x82,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x51BD, {0x00,0x20,0x1F,0xA0,0x24,0xE0,0x37,0xE0,0x09,0xE0,0x09,0xE0,0x35,0xE0,0x26,0xE0,0x22,0xE0,0x44,0x20,0x48,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x51C4, {0x02,0x00,0x3F,0xE0,0x8F,0x80,0x42,0x80,0x3F,0xE0,0x02,0x80,0x4F,0x80,0x42,0x00,0x5F,0xE0,0x8F,0x80,0x83,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0x51C5, {0x00,0x00,0x0F,0xE0,0x29,0x20,0x3F,0xE0,0x09,0x20,0x09,0x20,0x3B,0xE0,0x2A,0xE0,0x2B,0xE0,0x4B,0xA0,0x4F,0xE0,0x08,0x20,0x00,0x00,}}, +{ 0x51C6, {0x04,0x80,0x04,0x80,0x4F,0xE0,0x29,0x00,0x19,0x00,0x2F,0xC0,0x29,0x00,0x49,0x00,0x4F,0xC0,0x89,0x00,0x8F,0xE0,0x08,0x00,0x00,0x00,}}, +{ 0x51C9, {0x01,0x00,0x03,0x00,0x5F,0xE0,0x6F,0xC0,0x08,0x40,0x08,0x40,0x6F,0xC0,0x41,0x00,0x49,0x40,0x99,0x20,0xB1,0x20,0x03,0x00,0x00,0x00,}}, +{ 0x51CB, {0x00,0x00,0x0F,0xE0,0x49,0x20,0x2F,0xA0,0x09,0x20,0x0F,0xE0,0x28,0x20,0x2B,0xA0,0x4A,0xA0,0x4B,0xA0,0x10,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x51CC, {0x01,0x00,0x0F,0xC0,0x41,0x00,0x3F,0xE0,0x02,0x80,0x04,0xA0,0x5A,0xE0,0x43,0x80,0x84,0x80,0x8B,0x00,0x02,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0x51CD, {0x01,0x00,0x01,0x00,0x5F,0xE0,0x2F,0xC0,0x09,0x40,0x2F,0xC0,0x29,0x40,0x2F,0xC0,0x43,0x80,0x45,0x40,0x59,0x20,0x01,0x00,0x00,0x00,}}, +{ 0x51D6, {0x04,0x80,0x45,0x80,0x6F,0xC0,0x1F,0x80,0x3B,0x00,0x6F,0x80,0x49,0x00,0x4F,0xC0,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x51DB, {0x01,0x00,0x1F,0xE0,0x47,0xC0,0x6F,0xC0,0x0B,0xC0,0x0B,0xC0,0x6F,0xC0,0x47,0x80,0x4F,0xE0,0x8F,0xE0,0x89,0x40,0x11,0x40,0x00,0x00,}}, +{ 0x51DD, {0x10,0x00,0x15,0xE0,0x98,0xC0,0x5E,0x80,0x13,0xE0,0x1E,0xC0,0x29,0x80,0x2B,0xE0,0x7F,0x80,0x8D,0x80,0x92,0x80,0x24,0x60,0x00,0x00,}}, +{ 0x51E0, {0x00,0x00,0x1F,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x20,0x41,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x51E1, {0x00,0x00,0x3F,0x00,0x21,0x00,0x21,0x00,0x29,0x00,0x25,0x00,0x25,0x00,0x25,0x00,0x21,0x00,0x41,0x20,0x41,0x20,0x80,0xE0,0x00,0x00,}}, +{ 0x51E6, {0x20,0x00,0x23,0x80,0x3A,0x80,0x2A,0x80,0x4A,0x80,0x6A,0x80,0xAA,0x80,0x12,0x80,0x14,0xA0,0x28,0x60,0x46,0x00,0x81,0xE0,0x00,0x00,}}, +{ 0x51E7, {0x00,0x00,0x7F,0x80,0x44,0x80,0x5F,0x80,0x55,0x80,0x55,0x80,0x55,0x80,0x55,0x80,0x57,0x80,0x44,0xA0,0x44,0x60,0x84,0x20,0x00,0x00,}}, +{ 0x51E9, {0x00,0x00,0x7F,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0x6E,0x80,0x6D,0x80,0x75,0x80,0x75,0xE0,0x64,0x60,0x84,0x20,0x00,0x00,}}, +{ 0x51EA, {0x00,0x00,0x7F,0x80,0x40,0x80,0x44,0x80,0x54,0x80,0x57,0x80,0x54,0x80,0x54,0x80,0x54,0x80,0x7F,0xA0,0x40,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x51ED, {0x20,0xC0,0x2F,0x00,0x6F,0xE0,0x6F,0xE0,0xE1,0x00,0x6F,0xC0,0x00,0x00,0x1F,0x00,0x11,0x00,0x11,0x20,0x21,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x51F0, {0x00,0x00,0x7F,0x80,0x6E,0x80,0x7F,0x80,0x7F,0x80,0x71,0x80,0x7F,0x80,0x60,0x80,0x7F,0x80,0x5E,0x60,0x44,0x60,0xBF,0x20,0x00,0x00,}}, +{ 0x51F1, {0x20,0x00,0x6B,0x80,0x7A,0x80,0x7A,0x80,0xFA,0x80,0x02,0x80,0x7A,0x80,0x4A,0x80,0x7A,0x80,0x52,0xA0,0x7C,0xA0,0xC8,0x60,0x00,0x00,}}, +{ 0x51F5, {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x51F6, {0x00,0x80,0x00,0x80,0x51,0x20,0x4D,0x20,0x42,0x20,0x43,0x20,0x44,0xA0,0x48,0x60,0x50,0x20,0x7F,0xE0,0x40,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x51F8, {0x00,0x00,0x1F,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x71,0xC0,0x51,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x51F9, {0x00,0x00,0x71,0xC0,0x51,0x40,0x51,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x51,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x51FA, {0x04,0x00,0x24,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,}}, +{ 0x51FD, {0x00,0x00,0x3F,0xC0,0x04,0x00,0x4E,0x20,0x42,0xE0,0x53,0xA0,0x56,0xA0,0x4A,0xE0,0x52,0x20,0x40,0x20,0x7F,0xE0,0x40,0x20,0x00,0x00,}}, +{ 0x51FE, {0x1F,0x80,0x01,0x80,0x43,0x20,0x5B,0xE0,0x7B,0x60,0x7A,0xE0,0x7A,0xE0,0x7B,0xE0,0x4B,0x20,0x4C,0x20,0x7F,0xE0,0x40,0x20,0x00,0x00,}}, +{ 0x5200, {0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x40,0x80,0x00,0x00,}}, +{ 0x5203, {0x00,0x00,0x7F,0xE0,0x04,0x20,0x04,0x20,0x04,0x20,0x1C,0x20,0x0E,0x20,0x09,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0xC0,0x00,0x00,}}, +{ 0x5204, {0x00,0x00,0xFF,0x80,0x08,0x80,0x08,0x80,0x48,0x80,0x28,0x80,0x18,0x80,0x16,0x80,0x11,0xE0,0x20,0xE0,0x40,0x80,0x87,0x00,0x00,0x00,}}, +{ 0x5206, {0x1F,0x00,0x01,0x00,0x21,0x00,0x20,0x80,0x40,0x80,0x7F,0xC0,0x88,0xA0,0x08,0x80,0x08,0x80,0x10,0x80,0x10,0x80,0x21,0x00,0x00,0x00,}}, +{ 0x5207, {0x10,0x00,0x13,0xE0,0x10,0xA0,0x1C,0xA0,0x70,0xA0,0x10,0xA0,0x10,0xA0,0x15,0x20,0x1D,0x20,0x02,0x20,0x04,0x20,0x18,0x40,0x00,0x00,}}, +{ 0x5208, {0x04,0x20,0x04,0xA0,0x04,0xA0,0x24,0xA0,0x18,0xA0,0x08,0xA0,0x0C,0xA0,0x14,0xA0,0x12,0xA0,0x20,0x20,0x20,0x20,0x40,0x60,0x00,0x00,}}, +{ 0x520A, {0x00,0x20,0x7E,0xA0,0x10,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x10,0xA0,0x10,0xA0,0x10,0xA0,0x10,0x20,0x10,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x520B, {0x02,0x20,0x0C,0xA0,0x38,0xA0,0x08,0xA0,0x08,0xA0,0x7F,0xA0,0x08,0xA0,0x08,0xA0,0x08,0xA0,0x10,0x20,0x10,0x20,0x20,0x60,0x00,0x00,}}, +{ 0x520E, {0x30,0x20,0x30,0xE0,0x3E,0xE0,0x3F,0xE0,0x35,0xE0,0x55,0xE0,0x35,0xE0,0x29,0xE0,0x09,0xE0,0x12,0x20,0x02,0x20,0x0C,0x60,0x00,0x00,}}, +{ 0x5211, {0x00,0x20,0x3F,0xA0,0x14,0xA0,0x14,0xA0,0x14,0xA0,0x7F,0xA0,0x14,0xA0,0x14,0xA0,0x14,0xA0,0x24,0x20,0x24,0x20,0x44,0x60,0x00,0x00,}}, +{ 0x5214, {0x10,0x20,0x10,0xA0,0x3C,0xA0,0x3E,0xA0,0x12,0xA0,0x12,0xA0,0x7F,0xA0,0x18,0xA0,0x1C,0xA0,0x32,0x20,0x22,0x20,0x40,0x60,0x00,0x00,}}, +{ 0x5217, {0x00,0x20,0x7E,0xA0,0x10,0xA0,0x1C,0xA0,0x14,0xA0,0x24,0xA0,0x34,0xA0,0x4C,0xA0,0x08,0xA0,0x08,0x20,0x10,0x20,0x20,0x60,0x00,0x00,}}, +{ 0x521D, {0x10,0x00,0x13,0xE0,0x7C,0xA0,0x04,0xA0,0x0A,0xA0,0x12,0xA0,0x3C,0xA0,0x54,0xA0,0x13,0x20,0x11,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x5224, {0x10,0x20,0x52,0xA0,0x32,0xA0,0x10,0xA0,0x7E,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x10,0xA0,0x10,0x20,0x10,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x5225, {0x00,0x20,0x3E,0xA0,0x22,0xA0,0x22,0xA0,0x3E,0xA0,0x32,0xA0,0x10,0xA0,0x1E,0xA0,0x12,0xA0,0x12,0x20,0x22,0x20,0x4C,0x60,0x00,0x00,}}, +{ 0x5227, {0x08,0x20,0x08,0xA0,0x3C,0xA0,0x3C,0xA0,0x08,0xA0,0x7F,0xA0,0x10,0xA0,0x14,0xA0,0x12,0xA0,0x3F,0x20,0x71,0x20,0x00,0x60,0x00,0x00,}}, +{ 0x5229, {0x02,0x20,0x0C,0xA0,0x38,0xA0,0x08,0xA0,0x7E,0xA0,0x18,0xA0,0x1C,0xA0,0x3A,0xA0,0x2A,0xA0,0x48,0x20,0x08,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x522A, {0x00,0x20,0x3F,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x7F,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x35,0x20,0x35,0x20,0x23,0x60,0x00,0x00,}}, +{ 0x522E, {0x02,0x20,0x0C,0xA0,0x38,0xA0,0x08,0xA0,0x7F,0xA0,0x08,0xA0,0x08,0xA0,0x3E,0xA0,0x22,0xA0,0x22,0x20,0x3E,0x20,0x20,0x60,0x00,0x00,}}, +{ 0x5230, {0x00,0x20,0x7F,0xA0,0x10,0xA0,0x24,0xA0,0x7A,0xA0,0x12,0xA0,0x10,0xA0,0x7E,0xA0,0x10,0xA0,0x1E,0x20,0x70,0x20,0x00,0x60,0x00,0x00,}}, +{ 0x5233, {0x10,0x20,0x18,0xA0,0x7E,0xA0,0x24,0xA0,0x7A,0xA0,0x00,0xA0,0x7E,0xA0,0x30,0xA0,0x3C,0xA0,0x04,0x20,0x04,0x20,0x18,0x60,0x00,0x00,}}, +{ 0x5236, {0x28,0x20,0x28,0xA0,0x3E,0xA0,0x48,0xA0,0x7F,0xA0,0x08,0xA0,0x3E,0xA0,0x2A,0xA0,0x2A,0xA0,0x2C,0xA0,0x28,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x5237, {0x00,0x20,0x3E,0xA0,0x22,0xA0,0x3E,0xA0,0x28,0xA0,0x28,0xA0,0x3E,0xA0,0x6A,0xA0,0x6A,0xA0,0x2E,0x20,0x28,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x5238, {0x04,0x00,0x24,0x80,0x7F,0xC0,0x0A,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0xFF,0xE0,0x08,0x80,0x08,0x80,0x10,0x80,0x63,0x00,0x00,0x00,}}, +{ 0x5239, {0x04,0x20,0x04,0xA0,0x3C,0xA0,0x1E,0xA0,0x68,0xA0,0x08,0xA0,0x7E,0xA0,0x18,0xA0,0x1C,0xA0,0x2A,0x20,0x48,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x523A, {0x08,0x20,0x08,0xA0,0x7F,0xA0,0x3E,0xA0,0x2A,0xA0,0x2A,0xA0,0x2E,0xA0,0x18,0xA0,0x1C,0xA0,0x2A,0x20,0x48,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x523B, {0x08,0x20,0x08,0x20,0x7F,0xA0,0x14,0xA0,0x24,0xA0,0x18,0xA0,0x0A,0xA0,0x12,0xA0,0x24,0x20,0x0C,0x20,0x12,0x20,0x60,0x60,0x00,0x00,}}, +{ 0x5243, {0x24,0x20,0x14,0xA0,0x7E,0xA0,0x12,0xA0,0x7E,0xA0,0x50,0xA0,0x7E,0xA0,0x12,0xA0,0x32,0xA0,0x5C,0x20,0x10,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x5244, {0x00,0x20,0x7E,0xA0,0x34,0xA0,0x7C,0xA0,0x78,0xA0,0x34,0xA0,0x34,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0x20,0x1E,0x20,0x70,0x60,0x00,0x00,}}, +{ 0x5247, {0x00,0x20,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x24,0xA0,0x24,0xA0,0x3C,0xA0,0x18,0x20,0x24,0x20,0x40,0x60,0x00,0x00,}}, +{ 0x524A, {0x10,0x20,0x52,0xA0,0x32,0xA0,0x10,0xA0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x24,0x20,0x24,0x20,0x2C,0x60,0x00,0x00,}}, +{ 0x524B, {0x20,0x40,0x21,0x40,0xF9,0x40,0xF9,0x40,0x79,0x40,0x49,0x40,0x49,0x40,0x79,0x40,0x70,0x40,0x70,0x60,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x524C, {0x10,0x20,0x18,0xA0,0x7E,0xA0,0x7E,0xA0,0x5A,0xA0,0x52,0xA0,0x7E,0xA0,0x58,0xA0,0x34,0xA0,0x32,0x20,0x50,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x524D, {0x20,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x40,0x49,0x40,0x79,0x40,0x49,0x40,0x79,0x40,0x49,0x40,0x48,0x40,0x58,0xC0,0x00,0x00,}}, +{ 0x524F, {0x48,0x00,0x68,0x00,0xFF,0xC0,0xF9,0x40,0x75,0x40,0x73,0x40,0xFD,0x40,0x71,0xC0,0x72,0x60,0x52,0x60,0x54,0x40,0x98,0x80,0x00,0x00,}}, +{ 0x5254, {0x00,0x20,0x3E,0xA0,0x3E,0xA0,0x3E,0xA0,0x3E,0xA0,0x30,0xA0,0x3E,0xA0,0x76,0xA0,0x5E,0xA0,0x2A,0x20,0x1A,0x20,0x1C,0x60,0x00,0x00,}}, +{ 0x5256, {0x08,0x20,0x08,0xA0,0x3F,0xA0,0x12,0xA0,0x14,0xA0,0x7F,0xA0,0x00,0xA0,0x1E,0xA0,0x12,0xA0,0x12,0x20,0x1E,0x20,0x12,0x60,0x00,0x00,}}, +{ 0x525B, {0x00,0x20,0x7E,0xA0,0x66,0xA0,0x6A,0xA0,0x7E,0xA0,0x52,0xA0,0x76,0xA0,0x76,0xA0,0x76,0xA0,0x7E,0x20,0x42,0x20,0x46,0x60,0x00,0x00,}}, +{ 0x525E, {0x08,0x20,0x09,0xA0,0x7F,0xA0,0x1C,0xA0,0x24,0xA0,0x7F,0xA0,0x02,0xA0,0x3A,0xA0,0x2A,0xA0,0x3A,0x20,0x22,0x20,0x06,0x60,0x00,0x00,}}, +{ 0x5263, {0x08,0x20,0x08,0x20,0x14,0xA0,0x7F,0xA0,0x08,0xA0,0x3E,0xA0,0x2A,0xA0,0x3E,0xA0,0x0C,0xA0,0x12,0x20,0x12,0x20,0x60,0x60,0x00,0x00,}}, +{ 0x5264, {0x08,0x20,0x08,0xA0,0x7F,0xA0,0x14,0xA0,0x1F,0xA0,0x72,0xA0,0x1E,0xA0,0x12,0xA0,0x1E,0xA0,0x12,0x20,0x22,0x20,0x42,0x60,0x00,0x00,}}, +{ 0x5265, {0x00,0x20,0x3C,0xA0,0x04,0xA0,0x3C,0xA0,0x7F,0xA0,0x08,0xA0,0x2A,0xA0,0x1A,0xA0,0x2C,0xA0,0x4B,0x20,0x08,0x20,0x18,0x60,0x00,0x00,}}, +{ 0x5269, {0x01,0x20,0x3E,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xE0,0x3A,0xE0,0x3A,0xE0,0x59,0xE0,0x1C,0xE0,0x2B,0x20,0x49,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x526A, {0x21,0x00,0x13,0x00,0xFF,0xE0,0x79,0x40,0x79,0x40,0x69,0x40,0x69,0x40,0x58,0xC0,0xFF,0xC0,0xFF,0xC0,0x30,0x40,0xE1,0x80,0x00,0x00,}}, +{ 0x526F, {0x00,0x20,0x7E,0xA0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x52,0xA0,0x7E,0xA0,0x52,0x20,0x7E,0x20,0x42,0x60,0x00,0x00,}}, +{ 0x5270, {0x02,0x20,0x1C,0xA0,0x7E,0xA0,0x2A,0xA0,0x7F,0xA0,0x2A,0xA0,0x2A,0xA0,0x7F,0xA0,0x1C,0xA0,0x2A,0x20,0x48,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x5271, {0x20,0x00,0x37,0xC0,0x79,0x40,0x79,0x40,0xB5,0x40,0x7B,0x40,0x69,0x40,0x79,0xC0,0x7A,0x60,0x6A,0x60,0x4C,0x40,0x88,0x80,0x00,0x00,}}, +{ 0x5272, {0x10,0x20,0x7E,0xA0,0x52,0xA0,0x7C,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0xA0,0x24,0x20,0x3C,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x5273, {0x34,0x20,0x35,0xA0,0x7F,0xA0,0x3C,0xA0,0x1C,0xA0,0x12,0xA0,0x3F,0xA0,0x60,0xA0,0x7E,0xA0,0x32,0x20,0x3E,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x5274, {0x10,0x20,0x34,0xA0,0x3C,0xA0,0x3C,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x2C,0x20,0x3C,0x20,0x70,0x60,0x00,0x00,}}, +{ 0x5275, {0x08,0x20,0x0C,0xA0,0x1A,0xA0,0x3F,0xA0,0x52,0xA0,0x1E,0xA0,0x12,0xA0,0x1E,0xA0,0x20,0xA0,0x3E,0x20,0x5E,0x20,0x12,0x60,0x00,0x00,}}, +{ 0x527D, {0x00,0x20,0x7E,0xA0,0x7C,0xA0,0x7E,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x32,0x20,0x52,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x527F, {0x29,0x20,0x5A,0xE0,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x29,0xE0,0x3F,0xE0,0x08,0xE0,0x7F,0xE0,0x1E,0x20,0x69,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x5283, {0x08,0x20,0x3E,0xA0,0x7F,0xA0,0x7F,0xA0,0x3E,0xA0,0x3E,0xA0,0x7F,0xA0,0x3E,0xA0,0x3E,0xA0,0x3E,0x20,0x0E,0x20,0x70,0x60,0x00,0x00,}}, +{ 0x5287, {0x08,0x20,0x0E,0xA0,0x3E,0xA0,0x2E,0xA0,0x3E,0xA0,0x2C,0xA0,0x38,0xA0,0x2E,0xA0,0x3E,0x20,0x3D,0x20,0x44,0x20,0x18,0x60,0x00,0x00,}}, +{ 0x5288, {0x01,0x80,0x79,0x80,0x7B,0xC0,0x7F,0xE0,0x79,0x80,0x6B,0xC0,0xF9,0x80,0x61,0x80,0x7F,0xC0,0x08,0x40,0x30,0x40,0x61,0x80,0x00,0x00,}}, +{ 0x5289, {0x20,0x20,0x7E,0xA0,0x6A,0xA0,0x7A,0xA0,0xD6,0xA0,0x28,0xA0,0x7C,0xA0,0x92,0xA0,0x7F,0xA0,0x38,0x20,0x1E,0x20,0xE0,0x60,0x00,0x00,}}, +{ 0x528D, {0x08,0x20,0x08,0xA0,0x14,0xA0,0x3E,0xA0,0x40,0xA0,0x3E,0xA0,0x3A,0xA0,0x3E,0xA0,0x34,0xA0,0x3E,0x20,0x29,0x20,0x51,0x60,0x00,0x00,}}, +{ 0x5291, {0x08,0x20,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x3D,0xE0,0x3E,0xE0,0x72,0xE0,0x3E,0xE0,0x3E,0xE0,0x3E,0x20,0x22,0x20,0x42,0x60,0x00,0x00,}}, +{ 0x5292, {0x08,0x00,0x09,0xE0,0x14,0xE0,0x3E,0xE0,0x40,0xE0,0x3F,0xE0,0x3B,0xE0,0x3E,0xE0,0x34,0xA0,0x3E,0xA0,0x2B,0x20,0x52,0x40,0x00,0x00,}}, +{ 0x5294, {0x10,0x00,0x13,0xC0,0x2D,0xC0,0x7F,0xC0,0x83,0xC0,0x7D,0xC0,0x75,0xC0,0x7D,0xC0,0x69,0x60,0x7D,0x60,0x56,0x40,0xA4,0x80,0x00,0x00,}}, +{ 0x529B, {0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xE0,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x20,0x20,0x40,0x40,0x00,0x00,}}, +{ 0x529F, {0x01,0x00,0x01,0x00,0x79,0x00,0x11,0x00,0x17,0xE0,0x11,0x20,0x11,0x20,0x11,0x20,0x1A,0x20,0x62,0x20,0x04,0x20,0x08,0x40,0x00,0x00,}}, +{ 0x52A0, {0x20,0x00,0x20,0x00,0x21,0xE0,0xFD,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x45,0xE0,0x45,0x20,0x98,0x00,0x00,0x00,}}, +{ 0x52A3, {0x04,0x00,0x24,0x80,0x24,0xC0,0x4D,0x20,0x06,0x20,0x1A,0x00,0xE2,0x00,0x3F,0xC0,0x04,0x40,0x08,0x40,0x30,0x40,0xC0,0x80,0x00,0x00,}}, +{ 0x52A9, {0x00,0x80,0x38,0x80,0x28,0x80,0x3F,0xE0,0x28,0xA0,0x28,0xA0,0x38,0xA0,0x28,0xA0,0x2D,0x20,0x31,0x20,0x42,0x20,0x04,0x40,0x00,0x00,}}, +{ 0x52AA, {0x20,0x00,0x27,0xC0,0xFA,0x40,0x29,0x40,0x71,0x80,0x1A,0x80,0x24,0x60,0xC4,0x00,0x7F,0x80,0x08,0x80,0x10,0x80,0x23,0x80,0x00,0x00,}}, +{ 0x52AB, {0x10,0x80,0x10,0x80,0x3C,0x80,0x13,0xE0,0x10,0xA0,0x7E,0xA0,0x10,0xA0,0x18,0xA0,0x25,0x20,0x3F,0x20,0x62,0x20,0x04,0x40,0x00,0x00,}}, +{ 0x52AC, {0x30,0x80,0x30,0x80,0x3C,0x80,0x3F,0xE0,0x25,0xA0,0x74,0xA0,0x34,0xA0,0x34,0xA0,0x35,0x20,0x35,0x20,0x06,0x20,0x1C,0x40,0x00,0x00,}}, +{ 0x52AD, {0x00,0x80,0x7C,0x80,0x34,0x80,0x37,0xE0,0x25,0xA0,0x58,0xA0,0x00,0xA0,0x3C,0xA0,0x25,0x20,0x25,0x20,0x3E,0x20,0x24,0x40,0x00,0x00,}}, +{ 0x52B1, {0x06,0x80,0x78,0x80,0x40,0x80,0x7F,0xE0,0x50,0xA0,0x50,0xA0,0x5C,0xA0,0x54,0xA0,0x55,0x20,0x55,0x20,0x66,0x20,0x8C,0xC0,0x00,0x00,}}, +{ 0x52B4, {0x28,0x80,0x15,0x00,0x7F,0xE0,0x44,0x40,0x84,0x00,0x04,0x00,0x7F,0x80,0x04,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x52B5, {0x04,0x00,0x24,0x80,0x3F,0xC0,0x7F,0xC0,0x0A,0x00,0xFF,0xE0,0x19,0x00,0x39,0x80,0xFF,0xE0,0x99,0xA0,0x31,0x80,0x23,0x00,0x00,0x00,}}, +{ 0x52B9, {0x10,0x80,0x10,0x80,0x7C,0x80,0x0B,0xE0,0x24,0xA0,0x26,0xA0,0x54,0xA0,0x18,0xA0,0x09,0x20,0x15,0x20,0x22,0x20,0x44,0x40,0x00,0x00,}}, +{ 0x52BC, {0x10,0x80,0x10,0x80,0x7C,0x80,0x7F,0xE0,0x11,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0xA0,0x25,0x20,0x25,0x20,0x3E,0x20,0x24,0x40,0x00,0x00,}}, +{ 0x52BE, {0x10,0x80,0x10,0x80,0x7E,0x80,0x13,0xE0,0x68,0xA0,0x28,0xA0,0x14,0xA0,0x24,0xA0,0x09,0x20,0x15,0x20,0x22,0x20,0x44,0x40,0x00,0x00,}}, +{ 0x52C1, {0x00,0x80,0x7E,0x80,0x34,0x80,0x7F,0xE0,0x79,0xA0,0x34,0xA0,0x34,0xA0,0x00,0xA0,0x7E,0xA0,0x11,0x20,0x1D,0x20,0x72,0x40,0x00,0x00,}}, +{ 0x52C3, {0x10,0x80,0x7C,0x80,0x10,0x80,0x3F,0xE0,0x44,0xA0,0x7C,0xA0,0x08,0xA0,0x10,0xA0,0x1D,0x20,0x71,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x52C5, {0x10,0x80,0x10,0x80,0x7E,0x80,0x11,0xE0,0x3C,0xA0,0x34,0xA0,0x3C,0xA0,0x18,0xA0,0x35,0x20,0x51,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x52C7, {0x3F,0x00,0x1E,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x08,0x40,0x10,0x40,0x61,0x80,0x00,0x00,}}, +{ 0x52C9, {0x21,0x00,0x31,0x00,0x59,0x00,0xB7,0xC0,0x79,0x40,0x69,0x40,0x79,0x40,0x72,0x40,0x34,0x40,0x38,0xC0,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x52CD, {0x10,0x80,0x18,0x80,0x7E,0x80,0x3F,0xE0,0x25,0xA0,0x24,0xA0,0x3C,0xA0,0x18,0xA0,0x3D,0x20,0x35,0x20,0x52,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x52D2, {0x38,0x80,0x38,0x80,0x7E,0x80,0x3B,0xE0,0x19,0xA0,0x3C,0xA0,0x34,0xA0,0x3C,0xA0,0x7F,0x20,0x7F,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x52D5, {0x0C,0x80,0x30,0x80,0x7C,0x80,0x3F,0xE0,0x34,0xA0,0x3C,0xA0,0x34,0xA0,0x3C,0xA0,0x11,0x20,0x3D,0x20,0x1E,0x20,0x74,0x40,0x00,0x00,}}, +{ 0x52D7, {0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x3C,0x80,0x24,0x80,0x3F,0xE0,0x3C,0xA0,0x3D,0x20,0x3F,0x20,0x62,0x40,0x00,0x00,}}, +{ 0x52D8, {0x24,0x80,0x24,0x80,0x7F,0xE0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x24,0xA0,0x7F,0xA0,0x38,0xA0,0x3D,0x20,0x3F,0x20,0x22,0x40,0x00,0x00,}}, +{ 0x52D9, {0x02,0x00,0x7A,0x00,0x33,0xE0,0x2E,0x80,0xF9,0x00,0x32,0x80,0x6C,0x60,0x61,0x00,0xAF,0xC0,0x22,0x40,0x24,0x40,0x28,0x80,0x00,0x00,}}, +{ 0x52DD, {0x01,0x00,0x75,0x40,0x5F,0xE0,0x52,0x80,0x7F,0xE0,0x52,0x80,0x55,0x40,0x79,0x20,0x5F,0xE0,0x52,0x40,0x54,0x40,0xB8,0xC0,0x00,0x00,}}, +{ 0x52DE, {0x21,0x80,0x31,0xC0,0x6B,0xC0,0xE7,0x80,0x71,0x80,0x4A,0x40,0x7F,0xE0,0xC8,0x40,0xBF,0x80,0x18,0x80,0x30,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x52DF, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x28,0x80,0xDF,0x60,0x09,0x00,0x33,0x00,0x00,0x00,}}, +{ 0x52E0, {0x00,0x80,0x7E,0x80,0x7E,0x80,0x7F,0xE0,0x5B,0xA0,0x14,0xA0,0x62,0xA0,0x1A,0xA0,0x3D,0x20,0x3D,0x20,0x1A,0x20,0x34,0x40,0x00,0x00,}}, +{ 0x52E2, {0x21,0x00,0x79,0x00,0x27,0x80,0xF9,0x80,0x77,0x80,0xF9,0x80,0x22,0xA0,0xFC,0x60,0x08,0x00,0x7F,0x80,0x10,0x80,0x63,0x80,0x00,0x00,}}, +{ 0x52E3, {0x10,0x80,0x7E,0x80,0x3C,0x80,0x3D,0xE0,0x7F,0xA0,0x3C,0xA0,0x24,0xA0,0x3C,0xA0,0x3C,0xA0,0x3D,0x20,0x35,0x20,0x62,0x40,0x00,0x00,}}, +{ 0x52E4, {0x28,0x80,0x7E,0x80,0x28,0x80,0x3F,0xE0,0x34,0xA0,0x3C,0xA0,0x10,0xA0,0x3C,0xA0,0x10,0xA0,0x3D,0x20,0x1D,0x20,0x62,0x40,0x00,0x00,}}, +{ 0x52E6, {0x34,0x80,0x78,0x80,0x3C,0x80,0x3F,0xE0,0x3D,0xA0,0x34,0xA0,0x3C,0xA0,0x18,0xA0,0x7D,0x20,0x3D,0x20,0x52,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x52E7, {0x20,0x80,0x20,0x80,0x3F,0xE0,0x7E,0xA0,0x38,0xA0,0x3E,0xA0,0x68,0xA0,0x3E,0xA0,0x3C,0xA0,0x3F,0x20,0x3F,0x20,0x22,0x40,0x00,0x00,}}, +{ 0x52F2, {0x09,0x00,0xF1,0x00,0xF9,0x00,0x7F,0xC0,0x79,0x40,0x69,0x40,0x79,0x40,0xFA,0x40,0x3E,0xC0,0xE0,0x80,0x52,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x52F3, {0x0C,0x80,0x78,0x80,0x7E,0x80,0x7F,0xE0,0x7F,0xA0,0x7A,0xA0,0x7E,0xA0,0x18,0xA0,0x7E,0xA0,0x7D,0x20,0x7D,0x20,0x7A,0x40,0x00,0x00,}}, +{ 0x52F5, {0x00,0xC0,0x3F,0xC0,0x3E,0xC0,0x3F,0xE0,0x3F,0xE0,0x35,0xE0,0x3F,0xE0,0x3D,0xE0,0x3F,0xE0,0x3F,0xE0,0x3F,0xA0,0x71,0xE0,0x00,0x00,}}, +{ 0x52F8, {0x38,0x80,0x7E,0x80,0x7C,0x80,0x7F,0xE0,0x7F,0xA0,0x28,0xA0,0x3E,0xA0,0x68,0xA0,0x7C,0xA0,0x3D,0x20,0x29,0x20,0x3E,0x40,0x00,0x00,}}, +{ 0x52F9, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x1F,0xE0,0x30,0x20,0x20,0x20,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0xC0,0x00,0x00,}}, +{ 0x52FA, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x10,0x20,0x20,0x20,0x28,0x20,0x44,0x20,0x02,0x20,0x02,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x52FE, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x20,0x20,0x24,0x20,0x44,0x20,0x0A,0x20,0x09,0x20,0x13,0xA0,0x3C,0x20,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x52FF, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x14,0xA0,0x14,0xA0,0x24,0xA0,0x48,0xA0,0x09,0x20,0x11,0x20,0x02,0x20,0x04,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x5301, {0x10,0x00,0x10,0x00,0x1F,0xC0,0x12,0x40,0x1A,0x40,0x26,0x40,0x22,0x40,0x45,0xC0,0x04,0x60,0x08,0x40,0x10,0x40,0x01,0x80,0x00,0x00,}}, +{ 0x5302, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x20,0x20,0x30,0x20,0x53,0x20,0x1C,0x20,0x10,0x20,0x10,0xA0,0x0F,0xA0,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x5305, {0x20,0x00,0x20,0x00,0x3F,0xC0,0x40,0x40,0x7E,0x40,0x82,0x40,0x02,0x40,0x7E,0x40,0x42,0x80,0x40,0x20,0x40,0x20,0x3F,0xE0,0x00,0x00,}}, +{ 0x5306, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x1F,0xE0,0x34,0xA0,0x3C,0xA0,0x4B,0xA0,0x09,0xA0,0x11,0x20,0x02,0x20,0x04,0x60,0x00,0xC0,0x00,0x00,}}, +{ 0x5308, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x1F,0xE0,0x32,0x20,0x32,0xA0,0x7E,0xA0,0x37,0xA0,0x39,0xA0,0x3F,0xA0,0x31,0xA0,0x00,0xC0,0x00,0x00,}}, +{ 0x530D, {0x10,0x00,0x18,0x00,0x3F,0xE0,0x3F,0xA0,0x44,0x20,0x1F,0xA0,0x34,0xA0,0x3F,0xA0,0x3F,0xA0,0x3F,0xA0,0x35,0xA0,0x00,0xC0,0x00,0x00,}}, +{ 0x530F, {0x21,0x00,0x31,0x00,0xFF,0xC0,0x6B,0xC0,0x7F,0x40,0x83,0xC0,0xFB,0xC0,0x63,0xC0,0x7A,0x80,0x0A,0x20,0x0A,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x5310, {0x10,0x00,0x18,0x00,0x3F,0xE0,0x3F,0x20,0x5F,0x20,0x11,0x20,0x1F,0x20,0x3F,0xA0,0x3F,0xA0,0x3F,0xA0,0x3F,0xA0,0x30,0xC0,0x00,0x00,}}, +{ 0x5315, {0x60,0x00,0x60,0x00,0x60,0x40,0x60,0x80,0x63,0x00,0x6C,0x00,0x70,0x00,0xE0,0x00,0x60,0x00,0x60,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x5316, {0x12,0x00,0x12,0x00,0x12,0x40,0x22,0x40,0x22,0x80,0x63,0x00,0xA2,0x00,0x22,0x00,0x22,0x00,0x22,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x5317, {0x12,0x00,0x12,0x00,0x12,0x40,0xF2,0x40,0x12,0x80,0x13,0x00,0x12,0x00,0x12,0x00,0x32,0x00,0xD2,0x20,0x12,0x20,0x11,0xE0,0x00,0x00,}}, +{ 0x5319, {0x01,0x00,0x7D,0x00,0x45,0x00,0x7D,0x40,0x7D,0x40,0x01,0x80,0xFF,0x00,0x11,0x00,0x5D,0x20,0x71,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x531A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x531D, {0x00,0x00,0x7F,0xE0,0x42,0x00,0x5F,0x80,0x52,0x80,0x52,0x80,0x52,0x80,0x52,0x80,0x53,0x80,0x42,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5320, {0x00,0x00,0x7F,0xC0,0x43,0x00,0x5C,0x00,0x50,0x00,0x5F,0xC0,0x51,0x00,0x51,0x00,0x61,0x00,0x61,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5321, {0x00,0x00,0x7F,0xE0,0x40,0x00,0x5F,0xC0,0x42,0x00,0x5F,0x80,0x42,0x00,0x42,0x00,0x5F,0xC0,0x40,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5323, {0x00,0x00,0x7F,0xC0,0x4F,0x80,0x5F,0x80,0x5F,0x80,0x52,0x80,0x5F,0x80,0x52,0x80,0x42,0x00,0x42,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x532A, {0x00,0x00,0x7F,0xE0,0x45,0x00,0x5D,0xC0,0x45,0x00,0x7D,0xC0,0x45,0x00,0x7D,0xC0,0x49,0x00,0x51,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x532F, {0x00,0x00,0x7F,0xC0,0x52,0x80,0x57,0xC0,0x7D,0x80,0x67,0xC0,0x45,0x80,0x57,0xC0,0x57,0xC0,0x67,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5331, {0x00,0x00,0x7F,0xE0,0x4F,0x80,0x5F,0x80,0x7F,0xE0,0x5F,0x80,0x50,0x80,0x5F,0x80,0x5F,0x80,0x5F,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5333, {0x00,0x00,0x7F,0xC0,0x46,0x00,0x5F,0x80,0x70,0x40,0x5D,0x80,0x55,0x80,0x5D,0x80,0x49,0x80,0x56,0x40,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5338, {0x00,0x00,0xFF,0xE0,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x5339, {0x00,0x00,0x7F,0xC0,0x49,0x00,0x49,0x00,0x49,0x00,0x49,0x00,0x51,0x40,0x51,0x40,0x60,0xC0,0x40,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x533A, {0x00,0x00,0x7F,0xC0,0x40,0x80,0x41,0x00,0x71,0x00,0x4E,0x00,0x42,0x00,0x45,0x00,0x48,0x80,0x50,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x533B, {0x00,0x00,0x7F,0xC0,0x48,0x00,0x4F,0x80,0x52,0x00,0x62,0x00,0x7F,0xC0,0x45,0x00,0x44,0x80,0x58,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x533F, {0x00,0x00,0x7F,0xC0,0x49,0x00,0x5F,0x80,0x44,0x00,0x7F,0xC0,0x48,0x00,0x5F,0x80,0x68,0x80,0x4F,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5340, {0x00,0x00,0xFF,0xC0,0x47,0x00,0x4F,0x80,0x4F,0x80,0x40,0x00,0x7D,0xC0,0x75,0x40,0x7D,0xC0,0x40,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5341, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5343, {0x01,0x00,0x02,0x00,0x3C,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5345, {0x64,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0xFF,0xE0,0x64,0x80,0x64,0x80,0x64,0x80,0x44,0x80,0x44,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x5346, {0x08,0x00,0x08,0x00,0x7F,0x00,0x11,0x20,0x31,0x20,0x25,0xE0,0x44,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5347, {0x05,0x00,0x19,0x00,0x71,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x5348, {0x20,0x00,0x20,0x00,0x3F,0x80,0x44,0x00,0x44,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5349, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x7F,0xC0,0x24,0x00,0x25,0x80,0x21,0x80,0xFF,0xE0,0x21,0x80,0x21,0x80,0x61,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x534A, {0x04,0x00,0x04,0x00,0x24,0x80,0x15,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x534D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x7F,0xC0,0x44,0x00,0x44,0x00,0x44,0x00,0x44,0x00,0x47,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x5351, {0x08,0x00,0x10,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x11,0x00,0x21,0x00,0xFF,0xE0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5352, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x21,0x00,0x31,0x00,0x2A,0x80,0x4C,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5353, {0x04,0x00,0x04,0x00,0x07,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5354, {0x21,0x00,0x21,0x00,0x2F,0xC0,0xF2,0x40,0x24,0x40,0x28,0x80,0x28,0x80,0x3F,0xE0,0x2A,0xA0,0x3A,0xA0,0x33,0xA0,0x27,0x60,0x00,0x00,}}, +{ 0x5357, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x51,0x40,0x4A,0x40,0x7F,0x40,0x44,0x40,0x5F,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x5358, {0x28,0x80,0x15,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x535A, {0x41,0x40,0x5F,0xE0,0x4F,0xC0,0xF9,0x40,0x4F,0xC0,0x49,0x40,0x4F,0xC0,0x40,0x80,0x5F,0xE0,0x44,0x80,0x42,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x535C, {0x08,0x00,0x08,0x00,0x08,0x00,0x0C,0x00,0x0A,0x00,0x09,0x00,0x09,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x535E, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x06,0x00,0x05,0x00,0x04,0x80,0x04,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5360, {0x08,0x00,0x08,0x00,0x0F,0xC0,0x08,0x00,0x08,0x00,0x08,0x00,0x7F,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7F,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x5366, {0x10,0x80,0x10,0x80,0x7C,0x80,0x10,0x80,0x10,0x80,0xFE,0xC0,0x10,0xA0,0x10,0xA0,0x7E,0x80,0x10,0x80,0x1E,0x80,0xF0,0x80,0x00,0x00,}}, +{ 0x5369, {0x00,0x00,0x3F,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x27,0x00,0x26,0x00,0x20,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x536E, {0x00,0xC0,0x03,0x00,0x7C,0x00,0x7F,0xE0,0x60,0x00,0x6F,0x80,0x68,0x80,0x68,0x80,0x69,0x80,0x49,0x20,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x536F, {0x04,0x00,0x08,0x00,0x31,0xE0,0x25,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x3D,0x20,0x69,0xC0,0x09,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x5370, {0x04,0x00,0x18,0x00,0x63,0xC0,0x42,0x40,0x7A,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x7A,0x40,0x43,0x80,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5371, {0x08,0x00,0x1F,0x00,0xE2,0x00,0x3F,0xE0,0x20,0x00,0x2F,0x80,0x28,0x80,0x28,0x80,0x29,0x80,0x49,0x20,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x5373, {0x00,0x00,0x3D,0xE0,0x25,0x20,0x3D,0x20,0x25,0x20,0x25,0x20,0x3D,0x20,0x29,0x20,0x2D,0x20,0x35,0xE0,0x65,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5374, {0x10,0x00,0x10,0xE0,0x3C,0xA0,0x10,0xA0,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x10,0xA0,0x24,0xA0,0x2E,0xC0,0x72,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5375, {0x04,0x00,0x08,0x00,0x35,0xE0,0x25,0x20,0x35,0xA0,0x35,0x60,0x25,0x20,0x25,0x20,0x3D,0x20,0x69,0xC0,0x09,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x5377, {0x04,0x00,0x24,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x21,0x80,0x5F,0xC0,0x91,0x60,0x16,0x00,0x10,0x80,0x0F,0x80,0x00,0x00,}}, +{ 0x5378, {0x10,0x00,0x10,0xE0,0x3E,0xA0,0x48,0xA0,0x7F,0xA0,0x08,0xA0,0x2E,0xA0,0x28,0xA0,0x2E,0xA0,0x38,0xC0,0x60,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x537B, {0x10,0x00,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x18,0xA0,0x14,0xA0,0x32,0xA0,0x7E,0xA0,0x74,0xE0,0x34,0xC0,0x3C,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x537F, {0x10,0x00,0x27,0x70,0x45,0x50,0x57,0x50,0x55,0x50,0x55,0x50,0x57,0x50,0x54,0x50,0x77,0x50,0x94,0x70,0x27,0x40,0x24,0x40,0x00,0x00,}}, +{ 0x5382, {0x00,0x00,0x7F,0xE0,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x00,0x00,}}, +{ 0x5384, {0x00,0x00,0x3F,0xE0,0x20,0x00,0x2F,0x80,0x28,0x80,0x28,0x80,0x28,0x80,0x28,0x80,0x29,0x00,0x48,0x20,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x5396, {0x00,0x00,0x7F,0xE0,0x6C,0x80,0x6A,0xC0,0x69,0xC0,0x7F,0x80,0x68,0xA0,0x6C,0x20,0x4C,0x40,0x54,0xA0,0xB4,0x20,0x23,0xE0,0x00,0x00,}}, +{ 0x5398, {0x00,0x00,0x7F,0xE0,0x5F,0x80,0x52,0x80,0x5F,0x80,0x52,0x80,0x5F,0x80,0x42,0x00,0x5F,0x80,0x42,0x00,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x539A, {0x00,0x00,0x7F,0xE0,0x5F,0x80,0x5F,0x80,0x50,0x80,0x5F,0x80,0x40,0x00,0x4F,0x80,0x41,0x00,0x5F,0xC0,0x82,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x539F, {0x00,0x00,0x7F,0xE0,0x44,0x00,0x4F,0x80,0x4F,0x80,0x48,0x80,0x4F,0x80,0x42,0x00,0x4A,0x80,0x4A,0x40,0x92,0x40,0x06,0x00,0x00,0x00,}}, +{ 0x53A0, {0x00,0x00,0x7F,0xE0,0x6C,0x00,0x7E,0x40,0x7F,0xC0,0x73,0xC0,0x7F,0xC0,0x73,0xC0,0x7F,0xC0,0x4D,0xC0,0x52,0x40,0xA2,0xC0,0x00,0x00,}}, +{ 0x53A5, {0x00,0x00,0x7F,0xE0,0x73,0x80,0x75,0x80,0x7F,0xE0,0x69,0xA0,0x6A,0xC0,0x7A,0x80,0x7E,0x80,0x69,0xC0,0x51,0x40,0xA2,0x20,0x00,0x00,}}, +{ 0x53A6, {0x00,0x00,0x7F,0xE0,0x7F,0xC0,0x6F,0x80,0x68,0x80,0x6F,0x80,0x6F,0x80,0x68,0x80,0x6F,0x80,0x5F,0x80,0x43,0x80,0xBD,0xC0,0x00,0x00,}}, +{ 0x53A8, {0x00,0x00,0x7F,0xE0,0x7E,0x40,0x40,0x40,0x5E,0x40,0x53,0xE0,0x53,0x40,0x5E,0xC0,0x5A,0x40,0x4C,0x40,0x4E,0x40,0xB0,0xC0,0x00,0x00,}}, +{ 0x53A9, {0x00,0x00,0x7F,0xE0,0x40,0x00,0x7D,0xC0,0x66,0x80,0x7D,0x80,0x7F,0xE0,0x61,0x80,0x69,0x80,0x6D,0xA0,0xB2,0xA0,0x24,0x60,0x00,0x00,}}, +{ 0x53AD, {0x00,0x00,0x7F,0xE0,0x7C,0x00,0x7C,0xA0,0x64,0x80,0x7F,0xE0,0x40,0x80,0x7C,0x80,0x7C,0x80,0x7D,0x80,0x66,0x40,0xAC,0x20,0x00,0x00,}}, +{ 0x53AE, {0x00,0x00,0x7F,0xE0,0x74,0x40,0x7F,0x80,0x77,0x00,0x7D,0xE0,0x75,0x80,0x7D,0x80,0x7F,0x80,0x7F,0x80,0x52,0x80,0xA2,0x80,0x00,0x00,}}, +{ 0x53B0, {0x00,0x00,0x7F,0xE0,0x69,0x80,0x7F,0x80,0x7B,0xE0,0x7F,0x40,0x63,0xC0,0x7E,0xC0,0x76,0x80,0x7E,0xC0,0x73,0x40,0xA6,0x20,0x00,0x00,}}, +{ 0x53B3, {0x24,0x40,0x12,0x80,0x7F,0xE0,0x7E,0x80,0x49,0x00,0x7F,0xE0,0x75,0x40,0x7F,0xC0,0x5C,0x80,0x7C,0x80,0x85,0x40,0x06,0x20,0x00,0x00,}}, +{ 0x53B6, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x80,0x10,0x40,0x23,0xC0,0xFC,0x20,0x00,0x20,0x00,0x00,}}, +{ 0x53BB, {0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x09,0x00,0x13,0x80,0x7C,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x53C2, {0x08,0x00,0x12,0x00,0x7F,0x80,0x0C,0x00,0xFF,0xE0,0x13,0x00,0x24,0x80,0x5B,0x40,0x86,0x20,0x19,0x00,0x06,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x53C3, {0x04,0x00,0x0B,0x00,0x3F,0x80,0x34,0xC0,0xFB,0xE0,0x11,0x00,0x62,0x80,0xCC,0x60,0x16,0x00,0x1C,0x80,0x03,0x00,0x3C,0x00,0x00,0x00,}}, +{ 0x53C8, {0x00,0x00,0x7F,0x80,0x20,0x80,0x20,0x80,0x10,0x80,0x11,0x00,0x09,0x00,0x0A,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x53C9, {0x00,0x00,0x7F,0x80,0x08,0x80,0x24,0x80,0x10,0x80,0x11,0x00,0x09,0x00,0x06,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x53CA, {0x00,0x00,0x7F,0x80,0x11,0x00,0x11,0x00,0x1B,0x80,0x28,0x80,0x24,0x80,0x25,0x00,0x23,0x00,0x43,0x00,0x4C,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x53CB, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x08,0x00,0x08,0x00,0x1F,0x80,0x18,0x80,0x15,0x00,0x22,0x00,0x26,0x00,0x59,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x53CC, {0x00,0x00,0xFF,0xC0,0x0A,0x40,0x0A,0x40,0x4A,0x40,0x31,0x80,0x11,0x80,0x11,0x00,0x29,0x00,0x22,0x80,0x44,0x40,0x88,0x20,0x00,0x00,}}, +{ 0x53CD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x48,0x80,0x48,0x80,0x48,0x80,0x45,0x00,0x42,0x00,0x46,0x00,0x49,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x53CE, {0x10,0x00,0x17,0xC0,0x52,0x40,0x52,0x40,0x52,0x40,0x52,0x80,0x51,0x80,0x59,0x00,0x71,0x00,0x92,0x80,0x1C,0x40,0x10,0x20,0x00,0x00,}}, +{ 0x53D4, {0x20,0x00,0x23,0xC0,0x38,0x40,0x22,0x40,0x22,0x40,0xFA,0x40,0x21,0x80,0x29,0x80,0x65,0x80,0x62,0x80,0xA4,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x53D6, {0x00,0x00,0xFC,0x00,0x4F,0xC0,0x7A,0x40,0x4A,0x40,0x4A,0x40,0x79,0x80,0x49,0x80,0x79,0x80,0xCA,0x80,0x0C,0x40,0x08,0x20,0x00,0x00,}}, +{ 0x53D7, {0x01,0x80,0x06,0x80,0x78,0x80,0x25,0x00,0x7F,0xE0,0x40,0x40,0xBF,0x80,0x11,0x00,0x0A,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x53D9, {0x20,0x00,0x27,0xC0,0x52,0x40,0x4A,0x40,0xFA,0x40,0x21,0x40,0xFD,0x80,0x21,0x80,0x71,0x80,0x6A,0x80,0xA4,0x40,0x68,0x20,0x00,0x00,}}, +{ 0x53DB, {0x20,0x00,0x2B,0xE0,0xBA,0x00,0x73,0xC0,0xFA,0x40,0x22,0x40,0x23,0x40,0x3D,0x80,0xE5,0x80,0x29,0x80,0x4A,0x40,0x90,0x20,0x00,0x00,}}, +{ 0x53DF, {0x14,0x00,0x65,0xC0,0x75,0xC0,0x75,0xC0,0x44,0x40,0x7F,0xC0,0x04,0x00,0x7F,0x80,0x19,0x00,0x06,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x53E1, {0x20,0x00,0x3B,0xC0,0xFC,0x40,0xF9,0x40,0x75,0x40,0xE9,0x40,0x7C,0x80,0xC8,0x80,0x78,0x80,0x79,0x40,0x4A,0x40,0x7C,0x20,0x00,0x00,}}, +{ 0x53E2, {0x2A,0x80,0x1B,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x78,0x00,0x7F,0xC0,0x7B,0x80,0xCB,0x80,0x0C,0x60,0x00,0x00,}}, +{ 0x53E3, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x53E4, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x53E5, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x30,0x20,0x3F,0x20,0x51,0x20,0x11,0x20,0x11,0x20,0x1F,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x53E8, {0x00,0x00,0x0F,0xE0,0x71,0x20,0x51,0x20,0x51,0x20,0x51,0x20,0x51,0x20,0x51,0x20,0x73,0x20,0x72,0x20,0x44,0x20,0x08,0x40,0x00,0x00,}}, +{ 0x53E9, {0x00,0x00,0x01,0xE0,0x79,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x79,0x20,0x49,0x20,0x01,0xC0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x53EA, {0x00,0x00,0x1F,0xC0,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x1F,0xC0,0x00,0x40,0x08,0x80,0x08,0x40,0x10,0x20,0x60,0x20,0x00,0x00,}}, +{ 0x53EB, {0x00,0x80,0x00,0x80,0xE4,0x80,0xA4,0x80,0xA4,0x80,0xA4,0x80,0xA4,0x80,0xA4,0xE0,0xE7,0x80,0x98,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x53EC, {0x00,0x00,0x7F,0xE0,0x04,0x20,0x0C,0x20,0x18,0x20,0x60,0xC0,0x00,0x00,0x1F,0xC0,0x10,0x40,0x10,0x40,0x1F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x53ED, {0x07,0x80,0x01,0x80,0xE1,0x80,0xA5,0x80,0xA5,0x80,0xA5,0x80,0xA4,0x80,0xA4,0x80,0xE4,0x80,0x88,0x40,0x10,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x53EE, {0x00,0x00,0x1F,0xE0,0xE1,0x80,0xA1,0x80,0xA1,0x80,0xA1,0x80,0xA1,0x80,0xA1,0x80,0xE1,0x80,0xE1,0x80,0x81,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x53EF, {0x00,0x00,0xFF,0xE0,0x00,0x80,0x3C,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x3C,0x80,0x24,0x80,0x00,0x80,0x00,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x53F0, {0x04,0x00,0x04,0x00,0x08,0x00,0x11,0x80,0xFF,0x40,0x00,0x20,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x53F1, {0x02,0x00,0x02,0x00,0xF2,0x00,0x92,0x40,0x92,0x40,0x92,0x80,0x93,0x00,0x9E,0x00,0xF2,0x00,0x82,0x20,0x02,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x53F2, {0x04,0x00,0x04,0x00,0x7F,0x80,0x44,0x80,0x44,0x80,0x44,0x80,0x7F,0x80,0x44,0x80,0x18,0x00,0x0C,0x00,0x33,0x00,0xC0,0xE0,0x00,0x00,}}, +{ 0x53F3, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x10,0x00,0x10,0x00,0x20,0x00,0x3F,0x80,0x60,0x80,0x60,0x80,0xA0,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x53F6, {0x01,0x00,0x01,0x00,0xE1,0x00,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xA1,0x00,0xA1,0x00,0xE1,0x00,0x81,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x53F7, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x20,0x80,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x53F8, {0x00,0x00,0x7F,0xE0,0x00,0x20,0x3F,0x20,0x00,0x20,0x3F,0x20,0x21,0x20,0x21,0x20,0x3F,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x53FA, {0x07,0x00,0x01,0x00,0xE1,0x00,0xA1,0x00,0xA1,0x00,0xA3,0x00,0xA3,0x80,0xA3,0x80,0xE4,0x80,0x88,0x80,0x10,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x5401, {0x00,0x00,0x0F,0xC0,0xE1,0x00,0xA1,0x00,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xA1,0x00,0xE1,0x00,0xE1,0x00,0x81,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5403, {0x04,0x00,0x04,0x00,0xE7,0xE0,0xA8,0x00,0xA8,0x00,0xB7,0x80,0xA1,0x00,0xA2,0x00,0xE4,0x00,0x88,0x20,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x5404, {0x08,0x00,0x08,0x00,0x1F,0x80,0x29,0x00,0x46,0x00,0x09,0x00,0x30,0x80,0xDF,0x60,0x11,0x00,0x11,0x00,0x1F,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x5408, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xDF,0x60,0x00,0x00,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5409, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x540A, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x540B, {0x00,0x80,0x00,0x80,0xE0,0x80,0xBF,0xE0,0xA0,0x80,0xA4,0x80,0xA2,0x80,0xA2,0x80,0xE0,0x80,0x80,0x80,0x01,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x540C, {0x00,0x00,0x7F,0xE0,0x40,0x20,0x5F,0xA0,0x40,0x20,0x5F,0xA0,0x50,0xA0,0x50,0xA0,0x5F,0xA0,0x50,0xA0,0x40,0x20,0x40,0x60,0x00,0x00,}}, +{ 0x540D, {0x04,0x00,0x04,0x00,0x0F,0xC0,0x08,0x80,0x15,0x00,0x22,0x00,0x04,0x00,0x0F,0xE0,0x18,0x20,0x68,0x20,0x0F,0xE0,0x08,0x20,0x00,0x00,}}, +{ 0x540E, {0x01,0xC0,0x7F,0x00,0x40,0x00,0x7F,0xE0,0x40,0x00,0x40,0x00,0x4F,0x80,0x48,0x80,0x48,0x80,0x48,0x80,0x8F,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x540F, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x34,0x80,0x0C,0x00,0x0A,0x00,0x31,0x00,0xC0,0xE0,0x00,0x00,}}, +{ 0x5410, {0x01,0x00,0x01,0x00,0xE1,0x00,0xAF,0xC0,0xA1,0x00,0xA1,0x00,0xA1,0x00,0xA1,0x00,0xE1,0x00,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5411, {0x08,0x00,0x10,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x5F,0x40,0x51,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x541B, {0x00,0x00,0x3F,0x00,0x09,0x00,0xFF,0xE0,0x09,0x00,0x09,0x00,0x3F,0x00,0x10,0x00,0x3F,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x541D, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x09,0x00,0x06,0x00,0x19,0x00,0xE0,0xE0,0x3F,0x80,0x21,0x80,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x541F, {0x01,0x00,0x01,0x00,0xE2,0x80,0xA4,0x40,0xAF,0xC0,0xB0,0x20,0xA0,0x00,0xAF,0xC0,0xE0,0x40,0x80,0x80,0x00,0x80,0x01,0x00,0x00,0x00,}}, +{ 0x5420, {0x01,0x00,0x01,0x80,0xE1,0x40,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xA1,0x00,0xA3,0x00,0xE2,0x80,0x84,0x80,0x18,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x5426, {0x00,0x00,0xFF,0xE0,0x06,0x00,0x0D,0x80,0x34,0x40,0xC4,0x20,0x04,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5429, {0x01,0x80,0x05,0x80,0xE5,0x80,0xA8,0x80,0xA8,0x80,0xBF,0xC0,0xA2,0xA0,0xA2,0x80,0xE6,0x80,0xE4,0x80,0x88,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x542B, {0x04,0x00,0x04,0x00,0x0A,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x00,0x01,0x00,0x02,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x542C, {0x00,0x40,0x01,0x80,0xE6,0x00,0xA4,0x00,0xA7,0xE0,0xA5,0x80,0xA5,0x80,0xA5,0x80,0xE5,0x80,0xE9,0x80,0x91,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x542D, {0x01,0x00,0x01,0x00,0xFF,0xE0,0xBF,0xE0,0xA7,0x00,0xA5,0x80,0xA5,0x80,0xA5,0x80,0xE5,0x80,0x89,0xA0,0x09,0xA0,0x10,0xE0,0x00,0x00,}}, +{ 0x542E, {0x01,0x00,0x03,0x00,0xE2,0x40,0xA4,0xE0,0xBF,0xA0,0xA3,0x80,0xA3,0x80,0xA3,0x80,0xE7,0x80,0xE5,0xA0,0x89,0xA0,0x10,0xE0,0x00,0x00,}}, +{ 0x5436, {0x03,0x80,0x00,0x80,0x73,0xE0,0x57,0xE0,0x54,0xA0,0x54,0xA0,0x55,0x60,0x55,0x60,0x76,0x20,0x74,0x20,0x44,0x20,0x04,0x60,0x00,0x00,}}, +{ 0x5438, {0x00,0x00,0x1F,0x80,0xE4,0x80,0xA5,0x80,0xA7,0xC0,0xA6,0x40,0xA6,0x40,0xE9,0x80,0x89,0x80,0x11,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x5439, {0x04,0x00,0x04,0x00,0xE4,0x00,0xA7,0xE0,0xA9,0x40,0xA9,0x80,0xB1,0x00,0xA3,0x00,0xE2,0x80,0x84,0x80,0x08,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x543B, {0x02,0x00,0x02,0x00,0x73,0xE0,0x55,0x60,0x55,0x60,0x59,0x60,0x52,0xA0,0x52,0xA0,0x74,0xA0,0x49,0x20,0x02,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x543C, {0x01,0x80,0x1F,0x80,0xE3,0x80,0xA3,0x80,0xA5,0x80,0xA5,0x80,0xA7,0x80,0xBD,0x80,0xE5,0x80,0x85,0xA0,0x05,0xA0,0x0C,0xE0,0x00,0x00,}}, +{ 0x543D, {0x01,0x00,0x05,0x00,0xE5,0x00,0xA7,0xC0,0xAB,0x00,0xA9,0x00,0xB1,0x00,0xBF,0xE0,0xE1,0x00,0xE1,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x543E, {0x00,0x00,0x7F,0xC0,0x08,0x00,0x3F,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5440, {0x00,0x00,0x0F,0xC0,0xE1,0x80,0xA9,0x80,0xA9,0x80,0xAF,0xE0,0xA1,0x80,0xA3,0x80,0xE7,0x80,0xE9,0x80,0x91,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x5442, {0x00,0x00,0x1F,0x80,0x10,0x80,0x10,0x80,0x1F,0x80,0x12,0x80,0x04,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x00,}}, +{ 0x5446, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5448, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5449, {0x00,0x00,0x0F,0x80,0x28,0x80,0x28,0x80,0x2F,0x80,0x20,0x00,0x3F,0x80,0x00,0x80,0xFF,0xE0,0x11,0x00,0x20,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x544A, {0x04,0x00,0x24,0x00,0x3F,0x80,0x44,0x00,0x44,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x544E, {0x00,0x00,0x07,0xC0,0xE4,0x40,0xA4,0x40,0xA4,0x40,0xA7,0xC0,0xA6,0x40,0xE5,0x00,0x89,0x00,0x18,0x80,0x30,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x5451, {0x01,0x80,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x11,0x00,0x60,0x80,0xBF,0xE0,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x545F, {0x01,0x00,0x01,0x00,0xFF,0xE0,0xBF,0xE0,0xA1,0x80,0xAA,0x80,0xA6,0x80,0xA3,0x80,0xE1,0x80,0xE2,0x40,0x84,0xE0,0x1F,0x20,0x00,0x00,}}, +{ 0x5468, {0x00,0x00,0x3F,0xE0,0x22,0x20,0x2F,0xA0,0x22,0x20,0x3F,0xA0,0x20,0x20,0x2F,0xA0,0x28,0xA0,0x2F,0xA0,0x28,0xA0,0x40,0x60,0x00,0x00,}}, +{ 0x546A, {0x00,0x00,0x0F,0xC0,0xE8,0x40,0xA8,0x40,0xAF,0xC0,0xAB,0x40,0xA3,0x00,0xA3,0x00,0xE5,0x00,0x89,0x20,0x11,0x20,0x20,0xE0,0x00,0x00,}}, +{ 0x5470, {0x22,0x00,0x22,0x40,0x7F,0x80,0x7F,0x00,0x62,0x20,0x7A,0x20,0x61,0xE0,0xC0,0x00,0x3F,0x80,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x5471, {0x00,0x40,0x01,0x80,0xEF,0x80,0xAB,0x80,0xAB,0x80,0xAB,0x80,0xAB,0x80,0xAA,0x80,0xEA,0x80,0xFB,0xC0,0x9F,0xC0,0x20,0xA0,0x00,0x00,}}, +{ 0x5473, {0x01,0x00,0x01,0x00,0xEF,0xC0,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xA3,0x00,0xA5,0x80,0xE9,0x40,0xB1,0x20,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5475, {0x00,0x00,0x1F,0xE0,0xE0,0x40,0xAE,0x40,0xAB,0x40,0xA9,0x40,0xA9,0x40,0xAB,0x40,0xEF,0x40,0xE0,0x40,0x80,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x5476, {0x08,0x00,0x08,0x00,0xEB,0xC0,0xFF,0x40,0xF7,0x40,0xF5,0x40,0xF5,0x80,0xF4,0x80,0xEC,0x80,0xEB,0xC0,0x93,0x40,0x22,0x20,0x00,0x00,}}, +{ 0x5477, {0x00,0x00,0x07,0xE0,0x74,0xA0,0x54,0xA0,0x57,0xE0,0x54,0xA0,0x54,0xA0,0x55,0xA0,0x77,0xE0,0x40,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x547B, {0x00,0x80,0x01,0x80,0x77,0xE0,0x54,0xA0,0x57,0xE0,0x54,0xA0,0x54,0xA0,0x57,0xE0,0x74,0xA0,0x40,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x547C, {0x00,0xC0,0x0F,0x00,0xE1,0x40,0xA5,0x40,0xA5,0x80,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xE1,0x00,0x81,0x00,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x547D, {0x04,0x00,0x0A,0x00,0x31,0x80,0xFF,0xE0,0x00,0x00,0x73,0xC0,0x52,0x40,0x52,0x40,0x72,0x40,0x53,0xC0,0x42,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5480, {0x00,0x00,0x07,0x80,0xE4,0x80,0xA4,0x80,0xA7,0x80,0xA4,0x80,0xA4,0x80,0xA7,0x80,0xE4,0x80,0xE4,0x80,0x9F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5484, {0x00,0x80,0x04,0xA0,0x74,0xA0,0x54,0xA0,0x57,0xE0,0x54,0xA0,0x50,0x80,0x54,0xA0,0x74,0xA0,0x74,0xA0,0x47,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x5486, {0x04,0x00,0x04,0x00,0xE7,0xC0,0xA8,0x40,0xB7,0x40,0xA5,0xC0,0xA5,0xC0,0xA7,0xC0,0xE4,0x80,0x84,0x20,0x04,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x548B, {0x04,0x00,0x04,0x00,0xE7,0xE0,0xAA,0x00,0xB2,0x00,0xA3,0xC0,0xA2,0x00,0xA2,0x00,0xE3,0xC0,0x82,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x548C, {0x04,0x00,0x08,0x00,0x31,0xE0,0x11,0x20,0x7F,0x20,0x11,0x20,0x39,0x20,0x35,0x20,0x55,0x20,0x11,0xE0,0x11,0x20,0x10,0x00,0x00,0x00,}}, +{ 0x548E, {0x21,0x80,0x31,0x80,0x79,0x80,0x79,0x80,0xB2,0x40,0x34,0x40,0x4F,0xE0,0xC0,0x00,0x3F,0x80,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x548F, {0x01,0x00,0x01,0x80,0xE7,0x00,0xA7,0x20,0xA1,0x20,0xBF,0xC0,0xA3,0x80,0xA3,0x80,0xE5,0x80,0xE9,0x40,0x91,0x20,0x03,0x00,0x00,0x00,}}, +{ 0x5490, {0x02,0x40,0x02,0x40,0xE6,0x40,0xA7,0xE0,0xAC,0x40,0xB5,0x40,0xA5,0xC0,0xA4,0x40,0xE4,0x40,0xE4,0x40,0x84,0x40,0x04,0xC0,0x00,0x00,}}, +{ 0x5492, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x00,0x00,0x1F,0x00,0x11,0x00,0x11,0x00,0x11,0x20,0x21,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x54A2, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x01,0x80,0x01,0x00,0x0E,0x00,0x00,0x00,}}, +{ 0x54A4, {0x01,0x00,0x03,0x00,0xEF,0xE0,0xB8,0xC0,0xBF,0x00,0xA1,0x00,0xA1,0xE0,0xBF,0x00,0xE1,0x00,0xE1,0x20,0x81,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x54A5, {0x00,0x00,0x1F,0xE0,0xE2,0x40,0xA4,0xE0,0xBF,0x20,0xA1,0x00,0xA1,0x00,0xAF,0xC0,0xE1,0x00,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x54A8, {0x04,0x00,0x04,0x00,0xE7,0xE0,0x19,0x60,0x03,0xC0,0x24,0x80,0xC8,0x40,0x3F,0xA0,0x21,0x80,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x54AB, {0x00,0x00,0x7B,0xC0,0x6A,0x40,0x6A,0x40,0x6A,0x40,0x7B,0xC0,0x69,0x80,0x73,0xC0,0x76,0x40,0x48,0x00,0x46,0x00,0x81,0xE0,0x00,0x00,}}, +{ 0x54AC, {0x01,0x00,0x03,0x00,0xFF,0xE0,0xA4,0x40,0xAC,0xE0,0xB2,0xA0,0xA2,0x80,0xA1,0x80,0xE1,0x80,0x83,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x54AF, {0x02,0x00,0x02,0x00,0xE7,0x80,0xAC,0x80,0xB3,0x80,0xA1,0x80,0xA6,0xC0,0xBF,0xA0,0xE4,0x80,0x84,0x80,0x07,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x54B2, {0x08,0x80,0x04,0x80,0xE5,0x00,0xAF,0xC0,0xA1,0x00,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xE2,0x80,0x84,0x80,0x18,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x54B3, {0x01,0x00,0x01,0x00,0xFF,0xE0,0xA9,0x40,0xA6,0x40,0xA2,0x80,0xA1,0x40,0xA2,0x80,0xED,0x00,0x82,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x54B8, {0x01,0x80,0x01,0x40,0x3F,0xE0,0x7F,0xE0,0x7F,0x40,0x61,0x40,0x7F,0xC0,0x72,0x80,0x72,0x80,0x5F,0xE0,0x53,0x60,0x82,0x20,0x00,0x00,}}, +{ 0x54BC, {0x00,0x00,0x3F,0x80,0x27,0x80,0x27,0x80,0x25,0x80,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x53,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x54BD, {0x00,0x00,0x07,0xE0,0x74,0xA0,0x54,0xA0,0x57,0xE0,0x54,0xA0,0x54,0xA0,0x55,0x60,0x76,0x60,0x44,0x20,0x07,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x54BE, {0x01,0x00,0x03,0x00,0xEF,0xC0,0xA1,0x40,0xBF,0xE0,0xA1,0x00,0xA2,0x40,0xB6,0x80,0xFB,0x00,0xE2,0x40,0x82,0x40,0x01,0xC0,0x00,0x00,}}, +{ 0x54C0, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x00,0x21,0x00,0x3F,0x40,0x0C,0x40,0x32,0x80,0xD3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x54C1, {0x00,0x00,0x1F,0x80,0x10,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,0x79,0xE0,0x49,0x20,0x49,0x20,0x79,0xE0,0x49,0x20,0x00,0x00,}}, +{ 0x54C2, {0x00,0x00,0x1F,0xE0,0xE3,0x80,0xAF,0xC0,0xAB,0xC0,0xAB,0xC0,0xAB,0xC0,0xAD,0xC0,0xEC,0xC0,0x88,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x54C4, {0x05,0x80,0x05,0x80,0xE5,0x80,0xBF,0xC0,0xB5,0x80,0xA5,0x80,0xA5,0x80,0xB5,0x80,0xFF,0xE0,0x84,0x80,0x08,0x40,0x10,0x40,0x00,0x00,}}, +{ 0x54C7, {0x01,0x00,0x03,0x00,0xEF,0xC0,0xA1,0x00,0xBF,0xE0,0xA1,0x00,0xA1,0x00,0xAF,0xC0,0xE1,0x00,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x54C8, {0x01,0x00,0x03,0x00,0xE3,0x80,0xA4,0x80,0xAF,0xC0,0xB0,0x20,0xA0,0x00,0xA7,0x80,0xE4,0x80,0x84,0x80,0x07,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x54C9, {0x22,0x00,0x22,0x80,0x7E,0x40,0x22,0x00,0xFF,0xE0,0x01,0x40,0x79,0x40,0x48,0x80,0x48,0x80,0x79,0xA0,0x4A,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x54D8, {0x04,0x00,0x05,0xC0,0xF8,0x00,0xB2,0x00,0xA3,0xE0,0xA4,0x80,0xAC,0x80,0xB4,0x80,0xE4,0x80,0x84,0x80,0x04,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x54E1, {0x00,0x00,0x3F,0x80,0x20,0x80,0x1F,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x54E2, {0x00,0x00,0x0F,0xC0,0xE7,0x80,0xA7,0x80,0xA1,0x00,0xBF,0xE0,0xA4,0x80,0xB4,0xC0,0xFF,0xE0,0x84,0x80,0x08,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x54E5, {0x00,0x00,0x7F,0xC0,0x39,0x80,0x7D,0x80,0x7D,0x80,0x01,0x80,0xFF,0xE0,0x01,0x80,0x7D,0x80,0x7D,0x80,0x65,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x54E6, {0x03,0x80,0x05,0xC0,0xFD,0xA0,0xA5,0x80,0xBF,0xE0,0xA5,0xC0,0xA4,0xC0,0xB6,0x80,0xFC,0x80,0x85,0xE0,0x06,0x60,0x0C,0x20,0x00,0x00,}}, +{ 0x54E8, {0x01,0x00,0x05,0x80,0xE5,0x40,0xB9,0x20,0xBF,0xC0,0xA8,0x40,0xAF,0xC0,0xA8,0x40,0xEF,0xC0,0x88,0x40,0x08,0x40,0x08,0xC0,0x00,0x00,}}, +{ 0x54E9, {0x00,0x00,0x0F,0xC0,0xE9,0x40,0xAF,0xC0,0xA9,0x40,0xA9,0x40,0xAF,0xC0,0xA1,0x00,0xEF,0xC0,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x54ED, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x04,0x00,0x04,0x80,0xFF,0xE0,0x04,0x00,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x54EE, {0x02,0x00,0x02,0x40,0xEF,0xC0,0xA2,0x80,0xBF,0xE0,0xA1,0x00,0xA7,0xC0,0xBD,0x80,0xFF,0xE0,0x9F,0xE0,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x54F2, {0x20,0xC0,0x23,0x00,0xFF,0xE0,0x3A,0x80,0xE2,0x80,0x24,0x80,0x28,0x80,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x54FA, {0x01,0x80,0x03,0x40,0xFF,0xE0,0xAF,0xC0,0xAB,0x40,0xA9,0x40,0xAF,0xC0,0xA9,0x40,0xEF,0xC0,0x8F,0xC0,0x09,0x40,0x09,0xC0,0x00,0x00,}}, +{ 0x54FD, {0x00,0x00,0x1F,0xE0,0xE7,0xC0,0xAF,0xC0,0xAF,0xC0,0xA9,0x40,0xAF,0xC0,0xAB,0x00,0xE6,0x00,0x86,0x00,0x09,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x5504, {0x00,0x00,0x07,0xC0,0x74,0x40,0x57,0xC0,0x54,0x40,0x54,0x40,0x57,0xC0,0x54,0x40,0x77,0xC0,0x42,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x5506, {0x02,0x00,0x02,0x40,0xE4,0xE0,0xBF,0x00,0xA5,0x20,0xAA,0xE0,0xB3,0x80,0xA4,0x80,0xED,0x00,0x92,0x00,0x05,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x5507, {0x00,0x00,0x7F,0xC0,0x5F,0x80,0x40,0x00,0x7F,0xE0,0x52,0x80,0x5D,0x80,0xB0,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x550F, {0x00,0x80,0x07,0x80,0xE7,0x80,0xA6,0x00,0xBF,0xE0,0xA5,0x00,0xA9,0x00,0xBF,0xC0,0xF9,0x40,0x89,0x40,0x09,0xC0,0x01,0x00,0x00,0x00,}}, +{ 0x5510, {0x02,0x00,0x7F,0xE0,0x5F,0x80,0x42,0x80,0x7F,0xE0,0x42,0x80,0x5F,0x80,0x40,0x00,0x5F,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5514, {0x00,0x00,0x1F,0xE0,0xE2,0x00,0xAF,0x80,0xA4,0x80,0xA4,0x80,0xBF,0xE0,0xA0,0x00,0xEF,0xC0,0x88,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x5516, {0x00,0x00,0x1F,0xE0,0xE2,0x80,0xAF,0xC0,0xAA,0xC0,0xAA,0xC0,0xAA,0xC0,0xEF,0xC0,0xAA,0xC0,0x82,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x552E, {0x21,0x80,0x3F,0xE0,0x7F,0xC0,0x7F,0xC0,0xBF,0xC0,0x21,0x00,0x3F,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x552F, {0x02,0x80,0x02,0x80,0xE5,0x00,0xAF,0xE0,0xAD,0x00,0xB7,0xC0,0xA5,0x00,0xA5,0x00,0xE7,0xC0,0x85,0x00,0x07,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x5531, {0x00,0x00,0x03,0xC0,0x72,0x40,0x53,0xC0,0x52,0x40,0x53,0xC0,0x50,0x00,0x77,0xE0,0x44,0x20,0x07,0xE0,0x04,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x5533, {0x00,0x00,0x1F,0xE0,0xE7,0xC0,0xAF,0xC0,0xA8,0x40,0xAF,0xC0,0xA9,0x80,0xAB,0x40,0xFF,0xE0,0x93,0x00,0x34,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x5538, {0x01,0x00,0x03,0x00,0xE6,0x80,0xBF,0xE0,0xB0,0x00,0xAF,0xC0,0xA0,0x80,0xA3,0x80,0xF1,0x40,0x94,0x20,0x34,0xA0,0x03,0x80,0x00,0x00,}}, +{ 0x5539, {0x04,0x80,0x04,0x80,0xFF,0xC0,0xBF,0xC0,0xA9,0x20,0xAB,0x20,0xAE,0x80,0xAA,0x80,0xFA,0x00,0x92,0x80,0x32,0x40,0x2C,0x40,0x00,0x00,}}, +{ 0x553E, {0x00,0xC0,0x0F,0x00,0xE1,0x00,0xAF,0xC0,0xA5,0x80,0xBF,0xE0,0xA5,0x80,0xA5,0x80,0xEF,0xC0,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5540, {0x00,0x00,0x0F,0xE0,0xEB,0xC0,0xAB,0xC0,0xA9,0x80,0xAF,0xE0,0xA9,0x80,0xA9,0x80,0xFB,0xC0,0x91,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5544, {0x00,0x00,0x1F,0xE0,0xE2,0x00,0xA6,0x40,0xBB,0xC0,0xA3,0x80,0xA5,0x80,0xFB,0xC0,0x86,0xA0,0x18,0x80,0x00,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x5545, {0x01,0x00,0x01,0x00,0xE1,0xE0,0xAF,0xC0,0xA8,0x40,0xAF,0xC0,0xA8,0x40,0xAF,0xC0,0xFF,0xE0,0x9F,0xE0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5546, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x52,0x40,0x52,0xC0,0x7F,0xC0,0x51,0x40,0x5F,0x40,0x51,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x554C, {0x01,0x00,0x03,0x00,0xEF,0xE0,0xBB,0x80,0xB5,0xA0,0xA8,0xE0,0xA0,0x00,0xAF,0xC0,0xE1,0x00,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x554F, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x5F,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5553, {0x02,0x00,0xFE,0x00,0x03,0xE0,0x7E,0x80,0x4B,0x80,0x79,0x00,0x4E,0x80,0xC0,0x60,0xBF,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5556, {0x01,0x00,0x01,0x40,0xEB,0x40,0xBB,0x80,0xB4,0x80,0xA9,0x80,0xA1,0x00,0xAB,0x40,0xFB,0xC0,0x95,0x80,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x5557, {0x01,0x00,0x01,0x00,0x73,0xE0,0x54,0x20,0x59,0xC0,0x56,0xE0,0x54,0x20,0x54,0x20,0x77,0x60,0x44,0x20,0x07,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x555C, {0x00,0x00,0x1F,0xC0,0xFB,0x40,0xA4,0xC0,0xAA,0xC0,0xB3,0x40,0xBF,0xC0,0xB3,0x40,0xEF,0xC0,0x86,0x80,0x0A,0xC0,0x31,0x20,0x00,0x00,}}, +{ 0x555D, {0x00,0x80,0x03,0x00,0x7E,0xE0,0x52,0xE0,0x5F,0xE0,0x52,0xE0,0x57,0xE0,0x5F,0xE0,0x7A,0xE0,0x0A,0x80,0x02,0x40,0x02,0x00,0x00,0x00,}}, +{ 0x5563, {0x04,0x00,0x04,0x00,0x77,0xE0,0x7F,0xE0,0x7A,0xE0,0x7F,0xE0,0x72,0xE0,0x7B,0xE0,0x7A,0xE0,0x4B,0xE0,0x0E,0xC0,0x18,0xC0,0x00,0x00,}}, +{ 0x557B, {0x04,0x00,0x7F,0xC0,0x1A,0x00,0x7F,0xE0,0x44,0x40,0xFF,0x80,0x64,0x80,0x04,0x80,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x557C, {0x01,0x00,0x03,0x00,0xEF,0xC0,0xA6,0x80,0xAF,0xE0,0xA9,0x40,0xB1,0x00,0xAF,0xC0,0xE9,0x40,0x89,0x40,0x09,0xC0,0x01,0x00,0x00,0x00,}}, +{ 0x557E, {0x01,0x80,0x06,0x80,0xFC,0x80,0xA4,0xA0,0xBF,0xC0,0xA5,0x80,0xA6,0x80,0xAD,0x80,0xFD,0xC0,0xB5,0xC0,0x05,0x20,0x06,0x20,0x00,0x00,}}, +{ 0x5580, {0x01,0x00,0x03,0x00,0xEF,0xE0,0xBB,0xC0,0xB2,0x80,0xA6,0x80,0xA9,0x80,0xA2,0xC0,0xFF,0xE0,0x94,0x80,0x07,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x5583, {0x01,0x00,0x03,0x00,0xFF,0xE0,0xAF,0xC0,0xAD,0xC0,0xAB,0xC0,0xAF,0xC0,0xAB,0x40,0xEF,0xC0,0x89,0x40,0x09,0x40,0x08,0xC0,0x00,0x00,}}, +{ 0x5584, {0x21,0x00,0x12,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x24,0x80,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5587, {0x02,0x20,0x02,0x20,0x7F,0xE0,0x7F,0xE0,0x7B,0xE0,0x7A,0xE0,0x7F,0xE0,0x72,0xE0,0x77,0xA0,0x4E,0xA0,0x1A,0x20,0x02,0x60,0x00,0x00,}}, +{ 0x5589, {0x04,0x00,0x07,0xC0,0xE4,0x40,0xAF,0xE0,0xB9,0x00,0xAB,0xE0,0xAA,0x80,0xAC,0x80,0xEF,0xE0,0x89,0x80,0x0A,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x558A, {0x01,0x80,0x01,0x40,0xEF,0xE0,0xFF,0xE0,0xFF,0x40,0xF1,0x40,0xFF,0xC0,0xFA,0x80,0xFE,0x80,0xBF,0xE0,0x22,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x558B, {0x05,0x80,0x05,0x80,0xFF,0xE0,0xA5,0x80,0xA4,0x00,0xA7,0xC0,0xA1,0x00,0xBF,0xE0,0xE7,0x80,0x89,0x40,0x31,0x20,0x01,0x00,0x00,0x00,}}, +{ 0x5598, {0x01,0x00,0x09,0x40,0xEF,0xC0,0xA7,0xC0,0xBF,0xE0,0xA1,0x00,0xAF,0xC0,0xAB,0xC0,0xEB,0xC0,0x8B,0xC0,0x0B,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x5599, {0x04,0x00,0x07,0x80,0xE7,0x80,0xA7,0x80,0xBF,0xE0,0xA2,0x40,0xA7,0x40,0xBB,0x80,0xFF,0x80,0x9F,0x40,0x19,0x20,0x06,0x00,0x00,0x00,}}, +{ 0x559A, {0x02,0x00,0x03,0x80,0xE5,0x00,0xBF,0xC0,0xBB,0x40,0xAB,0x40,0xAB,0xC0,0xAD,0x40,0xFF,0xE0,0x83,0x00,0x0C,0xC0,0x30,0x20,0x00,0x00,}}, +{ 0x559C, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x559D, {0x00,0x00,0x07,0xC0,0x74,0x40,0x57,0xC0,0x57,0xC0,0x51,0x00,0x53,0xE0,0x5C,0xA0,0x77,0x20,0x44,0x20,0x03,0xA0,0x00,0xC0,0x00,0x00,}}, +{ 0x559E, {0x04,0x00,0x04,0xE0,0x7F,0xE0,0x7F,0xE0,0x79,0xE0,0x7F,0xE0,0x79,0xE0,0x78,0xE0,0x7F,0xE0,0x4F,0xC0,0x08,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x559F, {0x00,0x00,0x07,0xE0,0x77,0xE0,0x57,0xE0,0x57,0xE0,0x50,0x00,0x53,0xC0,0x52,0x40,0x73,0xC0,0x43,0xC0,0x02,0x40,0x02,0x40,0x00,0x00,}}, +{ 0x55A7, {0x01,0x00,0x01,0x00,0xEF,0xC0,0xA8,0x40,0xA7,0x80,0xA7,0x80,0xA4,0x80,0xA7,0x80,0xE7,0x80,0x80,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x55A8, {0x01,0x00,0x1F,0xE0,0xE7,0x80,0xA7,0x80,0xA7,0x80,0xA0,0x00,0xAF,0xE0,0xB8,0x40,0xF3,0x80,0x83,0xA0,0x05,0xA0,0x18,0xE0,0x00,0x00,}}, +{ 0x55A9, {0x02,0x00,0x02,0x00,0xE5,0x00,0xFF,0x80,0xF0,0x40,0xFE,0x60,0xF3,0xC0,0xFB,0xC0,0xFF,0x80,0x9F,0xC0,0x13,0xC0,0x17,0xC0,0x00,0x00,}}, +{ 0x55AA, {0x04,0x00,0xFF,0xE0,0x75,0xC0,0x55,0x40,0x75,0xC0,0x55,0x40,0x04,0x00,0xFF,0xE0,0x22,0x80,0x23,0x00,0x39,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x55AB, {0x08,0x00,0x0B,0xC0,0xFD,0x40,0xAD,0x40,0xB9,0x40,0xAE,0x40,0xB9,0xC0,0xA2,0x00,0xFF,0xE0,0x86,0x00,0x19,0x80,0x20,0x60,0x00,0x00,}}, +{ 0x55AC, {0x01,0x00,0x3E,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0xD1,0x60,0x1F,0x00,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x55AE, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3F,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x55B0, {0x01,0x00,0x03,0x00,0xE6,0x80,0xA9,0x60,0xB7,0xC0,0xA4,0x80,0xA7,0x80,0xA4,0xC0,0xE7,0xC0,0x85,0x80,0x06,0x40,0x1C,0x20,0x00,0x00,}}, +{ 0x55B6, {0x28,0x80,0x15,0x00,0x7F,0xE0,0x40,0x40,0x9F,0x00,0x11,0x00,0x1F,0x00,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x55C4, {0x00,0x00,0x1F,0xE0,0xE7,0x80,0xAF,0x80,0xAF,0x80,0xAF,0x80,0xA8,0x80,0xAF,0x80,0xE7,0x80,0x9F,0x00,0x07,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x55C5, {0x01,0x00,0x02,0x00,0xEF,0x80,0xAF,0x80,0xA8,0x80,0xAF,0x80,0xA8,0x80,0xAF,0xC0,0xFF,0xE0,0x9F,0xE0,0x0D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x55C7, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x35,0x80,0x56,0x80,0xFF,0xE0,0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x55D4, {0x04,0xC0,0x07,0x00,0xE7,0xE0,0xAB,0xE0,0xAA,0x40,0xAB,0xC0,0xAA,0x40,0xAB,0xC0,0xEB,0xC0,0x8F,0xE0,0x06,0xC0,0x38,0x20,0x00,0x00,}}, +{ 0x55DA, {0x01,0x00,0x02,0x00,0xEF,0x80,0xA8,0x80,0xAF,0x80,0xA8,0x00,0xAF,0xC0,0xA8,0x00,0xEF,0xE0,0x9F,0xA0,0x15,0xA0,0x20,0xC0,0x00,0x00,}}, +{ 0x55DC, {0x02,0x00,0x0F,0xC0,0xFF,0xE0,0xBF,0xE0,0xA7,0x80,0xBA,0x40,0xA3,0xC0,0xAF,0x80,0xEF,0x80,0x8F,0x80,0x0F,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x55DF, {0x04,0x80,0x03,0x80,0xEF,0xC0,0xA7,0x80,0xA3,0x00,0xBF,0xE0,0xA4,0x00,0xA7,0xC0,0xE9,0x80,0x99,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x55E3, {0x00,0x00,0x7B,0xE0,0x48,0x20,0x79,0xA0,0x00,0x20,0xFD,0xA0,0xD5,0xA0,0xD5,0xA0,0xFD,0xA0,0xD4,0x20,0xD4,0x20,0x8C,0x60,0x00,0x00,}}, +{ 0x55E4, {0x01,0x00,0x09,0x40,0xEF,0xC0,0xA7,0xC0,0xBF,0xE0,0xA1,0x00,0xAF,0xC0,0xAB,0x40,0xEF,0xC0,0x81,0x40,0x01,0xE0,0x3E,0x20,0x00,0x00,}}, +{ 0x55F7, {0x09,0x80,0x09,0x80,0xFF,0x80,0xE9,0xE0,0xFF,0x40,0xE9,0x40,0xFF,0xC0,0xE8,0xC0,0xEE,0x80,0x92,0xC0,0x33,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x55F9, {0x01,0x80,0x11,0x80,0xEF,0xE0,0xE3,0xC0,0xF3,0xC0,0xF3,0xC0,0xE3,0xC0,0xFB,0xC0,0xEF,0xE0,0x8F,0xE0,0x15,0x80,0x23,0xE0,0x00,0x00,}}, +{ 0x55FD, {0x09,0x80,0x09,0x80,0xFF,0x80,0xFF,0xE0,0xFB,0xE0,0xEA,0xC0,0xEA,0x80,0xFE,0x80,0x9D,0xC0,0x1B,0xC0,0x2B,0x20,0x0A,0x20,0x00,0x00,}}, +{ 0x55FE, {0x09,0x80,0x09,0x80,0xFD,0xE0,0xBF,0xE0,0xA9,0x00,0xAF,0xE0,0xAB,0x80,0xAA,0xC0,0xFB,0xE0,0x93,0xC0,0x33,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x5606, {0x04,0x80,0x04,0x80,0xFF,0xE0,0xAF,0xC0,0xAB,0x40,0xAF,0xC0,0xA1,0x00,0xAF,0xC0,0xE1,0x00,0x9F,0xE0,0x0C,0xC0,0x30,0x20,0x00,0x00,}}, +{ 0x5609, {0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x7D,0xC0,0x15,0x40,0x6D,0xC0,0x00,0x00,}}, +{ 0x5614, {0x00,0x00,0x1F,0xC0,0xF3,0x80,0xF3,0x80,0xF3,0x80,0xF0,0x00,0xF7,0xC0,0xF7,0xC0,0xF7,0xC0,0x91,0x00,0x1F,0xE0,0x10,0x00,0x00,0x00,}}, +{ 0x5616, {0x01,0x00,0x0F,0xC0,0xE7,0x80,0xA7,0x80,0xBF,0xE0,0xA7,0x80,0xA4,0x80,0xA7,0x80,0xE7,0x80,0x87,0x80,0x06,0x80,0x18,0x40,0x00,0x00,}}, +{ 0x5617, {0x28,0x80,0x15,0x00,0x7F,0xE0,0x91,0x20,0x3F,0x80,0x3F,0x00,0x20,0x40,0x3F,0xC0,0x1F,0x00,0x1F,0x00,0x11,0x00,0x1F,0x00,0x00,0x00,}}, +{ 0x5618, {0x02,0x00,0x03,0xC0,0xEF,0xE0,0xA9,0xC0,0xAE,0x40,0xA9,0xC0,0xAA,0x80,0xAA,0xC0,0xF6,0xC0,0xA6,0x80,0x2F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x561B, {0x01,0x00,0x03,0x00,0xFF,0xE0,0xF2,0x80,0xFF,0xE0,0xF2,0x80,0xF7,0xC0,0xF7,0xC0,0xF7,0xE0,0xBF,0xE0,0x23,0xE0,0x22,0x80,0x00,0x00,}}, +{ 0x5629, {0x04,0x80,0x04,0x80,0xFF,0xE0,0xAF,0xC0,0xA5,0x80,0xBF,0xE0,0xA5,0x80,0xAF,0xC0,0xE1,0x00,0x9F,0xE0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x562F, {0x02,0x00,0x1F,0xC0,0xFF,0xE0,0xFF,0xE0,0xFF,0xC0,0xF7,0xC0,0xFE,0xC0,0xF2,0x40,0xFF,0xC0,0x9E,0xC0,0x17,0xC0,0x27,0xC0,0x00,0x00,}}, +{ 0x5631, {0x0F,0xE0,0x08,0x20,0xEF,0xE0,0xAF,0xE0,0xAF,0x80,0xAB,0xC0,0xEA,0xC0,0xAB,0xE0,0x8F,0xE0,0x17,0xE0,0x14,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x5632, {0x04,0x00,0x04,0xE0,0x7F,0xE0,0x7F,0xE0,0x79,0xE0,0x7F,0xE0,0x79,0xE0,0x7F,0xE0,0x7F,0xA0,0x5F,0xA0,0x05,0x20,0x06,0x60,0x00,0x00,}}, +{ 0x5634, {0x05,0x80,0x15,0xA0,0xF7,0xC0,0xFF,0xA0,0xF3,0xE0,0xE5,0x80,0xFF,0xC0,0xEB,0x40,0xEF,0xC0,0x8F,0xC0,0x10,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x5636, {0x14,0x40,0x14,0x80,0xFF,0x00,0xFF,0x00,0xFD,0xE0,0xF5,0x80,0xFD,0x80,0xF7,0x80,0xFF,0x80,0x96,0x80,0x32,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x5638, {0x08,0x00,0x08,0x00,0xEF,0xE0,0xFB,0xC0,0xFF,0xE0,0xEB,0xC0,0xEB,0xC0,0xEB,0xC0,0xFF,0xE0,0x94,0x40,0x13,0x20,0x23,0xA0,0x00,0x00,}}, +{ 0x5642, {0x04,0x80,0x02,0x80,0xFF,0xE0,0xA2,0x80,0xAF,0xC0,0xAB,0x40,0xAF,0xC0,0xAF,0xC0,0xE0,0x80,0x9F,0xE0,0x04,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x564C, {0x02,0x40,0x01,0x80,0x77,0xE0,0x57,0xE0,0x54,0xA0,0x57,0xE0,0x50,0x00,0x53,0xC0,0x72,0x40,0x43,0xC0,0x03,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x564E, {0x01,0x00,0x1F,0xE0,0xE7,0x80,0xAF,0xE0,0xA8,0x40,0xBF,0xE0,0xA7,0x80,0xA4,0x80,0xE7,0x80,0x86,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5650, {0x00,0x00,0x7B,0x80,0x6A,0x80,0x7B,0x80,0x00,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x3B,0x80,0x7B,0x80,0x7B,0x80,0x6A,0x80,0x00,0x00,}}, +{ 0x565B, {0x01,0x00,0x05,0xC0,0xE5,0x00,0xBF,0xE0,0xBF,0xC0,0xAD,0x40,0xAB,0xC0,0xAF,0xC0,0xEB,0xC0,0x8D,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x5664, {0x04,0x80,0x04,0xC0,0xFF,0xE0,0xAF,0xC0,0xB5,0xE0,0xA4,0x80,0xAF,0xC0,0xB0,0x00,0xFF,0xE0,0x89,0x40,0x11,0x40,0x03,0x00,0x00,0x00,}}, +{ 0x5668, {0x00,0x00,0x3B,0x80,0x2A,0x80,0x3B,0x80,0x04,0x00,0xFF,0xE0,0x11,0x00,0x60,0xC0,0xBB,0xA0,0x2A,0x80,0x3B,0x80,0x2A,0x80,0x00,0x00,}}, +{ 0x566A, {0x00,0x00,0x07,0x80,0xE7,0x80,0xA7,0x80,0xAE,0xC0,0xAB,0xC0,0xAF,0xC0,0xB3,0x00,0xFF,0xE0,0x87,0x80,0x19,0x60,0x01,0x00,0x00,0x00,}}, +{ 0x566B, {0x01,0x00,0x03,0x00,0xEF,0xC0,0xBF,0xE0,0xB7,0xC0,0xA4,0x80,0xA7,0x80,0xA4,0x80,0xE7,0x80,0x97,0x40,0x14,0xE0,0x23,0xA0,0x00,0x00,}}, +{ 0x566C, {0x09,0x80,0x09,0x80,0xFF,0xE0,0xB6,0x40,0xA0,0x00,0xBF,0xE0,0xA5,0x80,0xA5,0xC0,0xE7,0xE0,0x9B,0x20,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5674, {0x01,0x00,0x0F,0xC0,0xFF,0xE0,0xA4,0x80,0xAF,0xC0,0xA8,0x40,0xAF,0xC0,0xA8,0x40,0xEF,0xC0,0x8F,0xC0,0x04,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x5678, {0x08,0x00,0x0B,0xE0,0xEE,0x80,0xBB,0xC0,0xAB,0x40,0xAB,0xC0,0xAB,0x40,0xFF,0xC0,0xA9,0x40,0x09,0xC0,0x08,0xC0,0x07,0x20,0x00,0x00,}}, +{ 0x567A, {0x04,0x20,0x04,0x40,0xFF,0x80,0xAB,0x00,0xAD,0xE0,0xBF,0x40,0xA9,0x40,0xBF,0x40,0xFD,0x40,0xBA,0x40,0x2A,0x40,0x08,0x40,0x00,0x00,}}, +{ 0x5680, {0x01,0x00,0x0F,0xE0,0xFB,0x40,0xBB,0xA0,0xAA,0xA0,0xB1,0x80,0xAF,0xC0,0xBB,0xC0,0xFF,0xE0,0x9F,0xE0,0x03,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5686, {0x04,0x80,0x1F,0xE0,0xE5,0x00,0xBF,0xE0,0xB7,0xC0,0xA4,0x80,0xA7,0x80,0xAF,0xC0,0xEB,0x40,0x8B,0xC0,0x0B,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x5687, {0x08,0x80,0x08,0x80,0xFF,0xE0,0xC8,0x80,0xFF,0xE0,0xD5,0x40,0xD7,0x40,0xF7,0x60,0xF7,0x60,0x95,0x40,0x15,0x40,0x2E,0xC0,0x00,0x00,}}, +{ 0x568A, {0x01,0x00,0x07,0x80,0xE7,0x80,0xA7,0x80,0xA4,0x80,0xA7,0x80,0xAF,0xC0,0xAF,0xC0,0xEF,0xC0,0x9F,0xE0,0x04,0xC0,0x18,0x80,0x00,0x00,}}, +{ 0x568F, {0x01,0x00,0x0F,0xC0,0xE7,0xE0,0xAF,0xE0,0xB7,0xC0,0xA7,0x80,0xA5,0x80,0xB7,0xC0,0xFF,0xE0,0x89,0xC0,0x17,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x5694, {0x01,0x00,0x0F,0xC0,0xE7,0xE0,0xAF,0xE0,0xB7,0xC0,0xA7,0x80,0xA5,0x80,0xA7,0x80,0xE7,0x80,0x8F,0xC0,0x17,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x56A0, {0x04,0x20,0x1B,0xA0,0xFF,0xA0,0xFF,0xA0,0xE6,0xA0,0xEA,0xA0,0xFF,0xA0,0xF5,0xA0,0xFF,0xA0,0x8E,0x20,0x0F,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x56A2, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x6B,0xC0,0xFF,0xC0,0x3F,0x80,0xFF,0xE0,0xFB,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x56A5, {0x05,0x00,0x3F,0xE0,0xE7,0x00,0xF6,0xA0,0xF7,0xC0,0xF5,0x80,0xF5,0xA0,0xF7,0xE0,0xF4,0x60,0x94,0x40,0x13,0x20,0x23,0xA0,0x00,0x00,}}, +{ 0x56AE, {0x3F,0xE0,0x37,0xE0,0x77,0xC0,0x37,0xE0,0x34,0xE0,0x77,0xE0,0x27,0x00,0x22,0x00,0x3F,0xE0,0x2F,0xA0,0x2F,0xA0,0x20,0x60,0x00,0x00,}}, +{ 0x56B4, {0x79,0xC0,0x69,0x40,0x7F,0xE0,0x7F,0xE0,0x7F,0x80,0x49,0x80,0x7F,0xE0,0x77,0x40,0x7F,0xC0,0x7F,0x80,0x7F,0x40,0x86,0x20,0x00,0x00,}}, +{ 0x56B6, {0x00,0x00,0x0F,0xC0,0xEF,0xC0,0xAF,0xC0,0xAF,0xC0,0xAB,0xC0,0xAF,0xC0,0xBB,0x40,0xFF,0xE0,0x9F,0xE0,0x03,0x80,0x1C,0xC0,0x00,0x00,}}, +{ 0x56BC, {0x00,0xC0,0x1F,0xC0,0xFF,0xE0,0xFF,0xE0,0xFF,0xC0,0xFE,0x40,0xF2,0x40,0xFF,0xE0,0xFF,0x40,0x9F,0xC0,0x1E,0x40,0x10,0xC0,0x00,0x00,}}, +{ 0x56C0, {0x08,0x80,0x08,0xC0,0xFF,0xE0,0xFF,0xE0,0xFB,0xE0,0xFF,0xA0,0xEB,0xE0,0xFF,0xC0,0xFF,0xE0,0xBF,0xE0,0x09,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x56C1, {0x00,0x00,0x0F,0xC0,0xE7,0x80,0xA7,0x80,0xAF,0xC0,0xA0,0x80,0xBF,0xE0,0xAB,0xC0,0xEF,0xC0,0x8F,0xE0,0x3F,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x56C2, {0x7B,0x80,0x6A,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x7E,0x80,0x6F,0x80,0x3F,0x80,0xFB,0xE0,0xFB,0xE0,0x7B,0x80,0x6A,0x80,0x00,0x00,}}, +{ 0x56C3, {0x09,0xC0,0x09,0xC0,0xFF,0xE0,0xF5,0xE0,0xFF,0xC0,0xEB,0xE0,0xE9,0xC0,0xFF,0xC0,0xFD,0xE0,0xBB,0xC0,0x29,0xE0,0x09,0x80,0x00,0x00,}}, +{ 0x56C8, {0x05,0x80,0x3F,0xE0,0xED,0x80,0xEF,0xC0,0xFF,0xC0,0xFF,0xC0,0xFF,0xE0,0xEF,0x60,0xFF,0xA0,0xBF,0xE0,0x04,0xC0,0x1F,0xC0,0x00,0x00,}}, +{ 0x56CE, {0x01,0x80,0x1D,0xC0,0xF7,0xE0,0xFF,0xE0,0xF7,0xE0,0xF7,0xE0,0xFC,0x00,0xF5,0xC0,0xFD,0xC0,0x99,0xC0,0x15,0xC0,0x25,0x40,0x00,0x00,}}, +{ 0x56D1, {0x1F,0xE0,0x18,0x20,0x7F,0xE0,0x76,0xE0,0x7F,0xE0,0x7A,0xE0,0x7F,0xE0,0x77,0xE0,0x7F,0xE0,0x1F,0xE0,0x11,0xE0,0x2F,0xC0,0x00,0x00,}}, +{ 0x56D3, {0x0E,0x00,0x3B,0xC0,0xFF,0xC0,0xFF,0x40,0xF2,0xC0,0xEB,0x80,0xFF,0xE0,0xF5,0xC0,0xFF,0xC0,0x9F,0xC0,0x1B,0xC0,0x1F,0xC0,0x00,0x00,}}, +{ 0x56D7, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56D8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x5E,0x40,0x53,0x40,0x51,0x40,0x5F,0x40,0x50,0x40,0x51,0xC0,0x4F,0xC0,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x56DA, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x4A,0x40,0x4A,0x40,0x51,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56DB, {0x00,0x00,0x7F,0xE0,0x49,0x20,0x49,0x20,0x49,0x20,0x51,0x20,0x51,0x20,0x60,0xE0,0x40,0x20,0x7F,0xE0,0x40,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x56DE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x51,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56E0, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x4C,0x40,0x4A,0x40,0x51,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56E3, {0x00,0x00,0x7F,0xC0,0x42,0x40,0x7F,0xC0,0x42,0x40,0x52,0x40,0x4A,0x40,0x4A,0x40,0x42,0x40,0x46,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56EE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x4A,0x40,0x52,0xC0,0x73,0x40,0x52,0x40,0x52,0xC0,0x53,0xC0,0x41,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56F0, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x4E,0x40,0x4E,0x40,0x55,0x40,0x64,0xC0,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56F2, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x49,0x40,0x5F,0xC0,0x49,0x40,0x49,0x40,0x7F,0xC0,0x49,0x40,0x51,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56F3, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x44,0xC0,0x54,0xC0,0x51,0x40,0x41,0x40,0x5E,0x40,0x45,0x40,0x58,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56F9, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x5B,0x40,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x45,0xC0,0x47,0x40,0x46,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56FA, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x5F,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56FD, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x44,0x40,0x5F,0x40,0x44,0x40,0x45,0x40,0x5F,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x56FF, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x5F,0x40,0x59,0xC0,0x6F,0xC0,0x49,0xC0,0x4F,0xC0,0x49,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5700, {0x00,0x00,0x7F,0xC0,0x52,0x40,0x57,0xC0,0x44,0x40,0x7F,0x40,0x44,0x40,0x47,0xC0,0x49,0xC0,0x53,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5703, {0x00,0x00,0x7F,0xC0,0x45,0x40,0x7F,0xC0,0x5F,0x40,0x55,0x40,0x5F,0x40,0x55,0x40,0x5F,0x40,0x55,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5704, {0x00,0x00,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x7F,0x40,0x49,0x40,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x4E,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5708, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x4E,0x40,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x53,0xC0,0x56,0x40,0x4F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5709, {0x00,0x00,0x7F,0xC0,0x4E,0x40,0x4E,0x40,0x7F,0x40,0x51,0x40,0x4A,0x40,0x7F,0x40,0x4E,0x40,0x4E,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x570B, {0x00,0x00,0x7F,0xC0,0x43,0x40,0x7F,0xC0,0x42,0x40,0x7A,0x40,0x6B,0xC0,0x79,0xC0,0x7F,0xC0,0x74,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x570D, {0x00,0x00,0x7F,0xC0,0x4E,0x40,0x4F,0x40,0x7F,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x570F, {0x00,0x00,0x7F,0xC0,0x55,0x40,0x4E,0x40,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x4F,0x40,0x50,0xC0,0x4F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5712, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x5F,0x40,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0xC0,0x4E,0x40,0x55,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5713, {0x00,0x00,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x71,0xC0,0x7F,0xC0,0x7F,0xC0,0x71,0xC0,0x5F,0xC0,0x79,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5716, {0x00,0x00,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x6F,0xC0,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5718, {0x00,0x00,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x57,0x40,0x5F,0x40,0x55,0x40,0x5F,0xC0,0x5F,0x40,0x5F,0x40,0x4B,0x40,0x7F,0xC0,0x00,0x00,}}, +{ 0x571C, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0xC0,0x7F,0x40,0x59,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x571F, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5726, {0x07,0x00,0x61,0x00,0x61,0x00,0xF1,0x00,0x61,0x00,0x63,0x00,0x63,0x80,0x73,0x80,0xE4,0x80,0x88,0x80,0x10,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x5727, {0x00,0x00,0x3F,0xE0,0x22,0x00,0x22,0x00,0x22,0x00,0x2F,0xC0,0x22,0x00,0x22,0x00,0x42,0x00,0x42,0x00,0x9F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5728, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x10,0x00,0x11,0x00,0x21,0x00,0x2F,0xC0,0x61,0x00,0xA1,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x572D, {0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5730, {0x01,0x00,0x29,0x00,0x29,0x00,0xF9,0xC0,0x2F,0x40,0x39,0x40,0x29,0x40,0x29,0x40,0x39,0x80,0xC8,0x20,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x5737, {0x00,0x00,0x6F,0xE0,0x61,0x00,0xF1,0x00,0x61,0x00,0x61,0x80,0x61,0x40,0x71,0x40,0xE1,0x00,0x81,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5738, {0x00,0x80,0x30,0x80,0x30,0x80,0x7C,0xA0,0x34,0xA0,0x34,0xA0,0x34,0xA0,0x3C,0xA0,0x74,0xA0,0x47,0xE0,0x04,0x20,0x04,0x20,0x00,0x00,}}, +{ 0x573B, {0x00,0x40,0x61,0x80,0x66,0x00,0xF4,0x00,0x67,0xE0,0x65,0x80,0x65,0x80,0x75,0x80,0xE9,0x80,0x99,0x80,0x31,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x5740, {0x01,0x00,0x61,0x00,0x61,0x00,0xF9,0x00,0x69,0xC0,0x69,0x00,0x69,0x00,0x79,0x00,0xE9,0x00,0x89,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5742, {0x20,0x00,0x27,0xE0,0x24,0x00,0xF4,0x00,0x27,0xC0,0x24,0x40,0x26,0x80,0x35,0x80,0x69,0x00,0x8A,0x80,0x14,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x5747, {0x02,0x00,0x12,0x00,0x13,0xE0,0x7E,0x20,0x14,0x20,0x11,0x20,0x11,0x20,0x18,0xA0,0x13,0x20,0x60,0x20,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x574A, {0x01,0x00,0x21,0x00,0x2F,0xE0,0xF1,0x00,0x21,0x00,0x21,0x00,0x23,0xC0,0x22,0x40,0x34,0x40,0xC8,0x40,0x10,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x574E, {0x04,0x00,0x64,0x00,0x67,0xE0,0xFF,0xE0,0x69,0x40,0x71,0x80,0x63,0x00,0x73,0x80,0xE6,0x80,0x84,0x80,0x08,0x40,0x10,0x20,0x00,0x00,}}, +{ 0x574F, {0x00,0x00,0x6F,0xE0,0x61,0x80,0xF1,0x00,0x61,0x00,0x63,0x80,0x65,0x40,0x79,0x20,0xE1,0x20,0x81,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5750, {0x04,0x00,0x24,0x80,0x24,0x80,0x24,0x80,0x75,0x80,0x4E,0x40,0x84,0x20,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5751, {0x01,0x00,0x21,0x00,0x2F,0xE0,0xF0,0x00,0x27,0x80,0x24,0x80,0x24,0x80,0x2C,0x80,0x74,0x80,0x88,0xA0,0x10,0xA0,0x20,0xE0,0x00,0x00,}}, +{ 0x5761, {0x01,0x00,0x63,0x00,0x6F,0xE0,0xF9,0x40,0x69,0x00,0x6F,0xC0,0x6C,0x40,0x7A,0x80,0xFB,0x80,0x91,0x80,0x36,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x5764, {0x00,0x80,0x10,0x80,0x17,0xE0,0x7C,0xA0,0x14,0xA0,0x17,0xE0,0x14,0xA0,0x1C,0xA0,0x37,0xE0,0x40,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5766, {0x00,0x00,0x27,0x80,0x24,0x80,0xF4,0x80,0x27,0x80,0x24,0x80,0x24,0x80,0x34,0x80,0x67,0x80,0x80,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5769, {0x04,0x80,0x64,0x80,0x6F,0xE0,0xFF,0xE0,0x64,0x80,0x64,0x80,0x67,0x80,0x74,0x80,0xE4,0x80,0x84,0x80,0x07,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x576A, {0x00,0x00,0x3F,0xE0,0x21,0x00,0xF9,0x40,0x25,0x80,0x21,0x00,0x3F,0xE0,0x21,0x00,0x31,0x00,0xC1,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x577F, {0x02,0x80,0x62,0x80,0x66,0x80,0xF7,0xE0,0x6C,0xC0,0x76,0x80,0x65,0x80,0x75,0x80,0xE4,0x80,0x84,0x80,0x04,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x5782, {0x01,0x80,0x3E,0x00,0x04,0x00,0x7F,0xC0,0x25,0x00,0x25,0x00,0xFF,0xE0,0x25,0x00,0x25,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0x5788, {0x11,0x80,0x11,0x40,0x27,0xE0,0x27,0x80,0x60,0x80,0xA4,0xA0,0x24,0x60,0x04,0x20,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5789, {0x04,0x00,0x64,0x00,0x67,0xC0,0xFF,0xC0,0x7F,0x40,0x69,0x40,0x69,0x40,0x7F,0x40,0xE9,0x80,0x88,0x20,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x578B, {0x00,0x40,0x7F,0x40,0x29,0x40,0xFF,0x40,0x29,0x40,0x29,0x40,0x48,0xC0,0x84,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5793, {0x01,0x00,0x63,0x00,0x6F,0xE0,0xF1,0x00,0x66,0x80,0x62,0x80,0x61,0x40,0x73,0x40,0xE6,0x80,0x81,0xC0,0x06,0x20,0x18,0x20,0x00,0x00,}}, +{ 0x57A0, {0x00,0x00,0x6F,0x80,0x68,0x80,0xFF,0x80,0x68,0x80,0x68,0x80,0x6F,0xA0,0x79,0x20,0xE9,0xC0,0x8A,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x57A2, {0x00,0xC0,0x2F,0x00,0x28,0x00,0xFF,0xE0,0x28,0x00,0x28,0x00,0x2B,0xC0,0x3A,0x40,0x6A,0x40,0x92,0x40,0x33,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x57A3, {0x00,0x00,0x2F,0xE0,0x20,0x00,0xF7,0x80,0x24,0x80,0x27,0x80,0x24,0x80,0x34,0x80,0x67,0x80,0x80,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x57A4, {0x00,0x00,0x6F,0xE0,0x61,0x00,0xF2,0x40,0x6F,0xE0,0x61,0x20,0x61,0x00,0x7F,0xC0,0xE1,0x00,0x81,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x57AA, {0x04,0x40,0x62,0x40,0x67,0xE0,0xFF,0xE0,0x62,0x80,0x62,0x80,0x62,0x80,0x7F,0xE0,0xE6,0x80,0x84,0x80,0x08,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x57B0, {0x01,0x00,0x61,0x00,0x61,0xC0,0xF1,0x00,0x6F,0xE0,0x60,0x00,0x6F,0xE0,0x71,0x00,0xE1,0xC0,0x81,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x57B3, {0x02,0x00,0x63,0xC0,0x64,0x00,0xFA,0x00,0x63,0xE0,0x64,0x80,0x6C,0x80,0x74,0x80,0xE4,0x80,0x84,0x80,0x04,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x57C0, {0x01,0x80,0x3F,0x00,0xFF,0xE0,0xFF,0xE0,0x75,0xC0,0x15,0x80,0x35,0x40,0x54,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x57C3, {0x01,0x00,0x63,0xC0,0x67,0xE0,0xFF,0xE0,0x62,0x00,0x67,0xC0,0x69,0x00,0x63,0x00,0xFF,0xE0,0x83,0x00,0x0C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x57C6, {0x01,0x00,0x31,0xC0,0x36,0x80,0x7F,0xE0,0x35,0xA0,0x34,0xA0,0x37,0xE0,0x3C,0xA0,0x77,0xE0,0x47,0xE0,0x08,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x57CB, {0x20,0x00,0x2F,0xC0,0x29,0x40,0xFF,0xC0,0x29,0x40,0x29,0x40,0x2F,0xC0,0x31,0x00,0xCF,0xC0,0x01,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x57CE, {0x01,0x80,0x21,0x40,0x2F,0xE0,0xF9,0x00,0x29,0x40,0x2F,0x40,0x2B,0xC0,0x3A,0x80,0x6A,0x80,0x8A,0xA0,0x17,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x57D2, {0x00,0x40,0x61,0x80,0x6F,0x40,0xF5,0x20,0x69,0x20,0x60,0x80,0x60,0x80,0x7F,0xE0,0xE4,0x80,0x82,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x57D3, {0x01,0x00,0x63,0x20,0x6E,0xE0,0xF6,0xC0,0x63,0x80,0x6E,0x80,0x60,0x80,0x7F,0xE0,0xE4,0x80,0x82,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x57D4, {0x01,0x80,0x63,0x40,0x7F,0xE0,0xFF,0xC0,0x6B,0x40,0x69,0x40,0x6F,0xC0,0x79,0x40,0xEF,0xC0,0x8F,0xC0,0x09,0x40,0x09,0xC0,0x00,0x00,}}, +{ 0x57D6, {0x04,0x80,0x64,0xC0,0x7F,0xE0,0xF6,0x80,0x63,0x80,0x63,0xA0,0x65,0xC0,0x75,0x80,0xFD,0x80,0x85,0xA0,0x05,0xA0,0x04,0xE0,0x00,0x00,}}, +{ 0x57DC, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x71,0x80,0x6A,0xC0,0xA4,0xA0,0x24,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x57DF, {0x01,0x00,0x21,0x40,0x2F,0xE0,0x21,0x00,0xFF,0x40,0x2B,0x40,0x2A,0xC0,0x2E,0xC0,0x39,0x80,0xC6,0xA0,0x09,0x60,0x02,0x20,0x00,0x00,}}, +{ 0x57E0, {0x01,0x00,0x22,0x00,0x2F,0x80,0xFF,0x80,0x28,0x00,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x31,0x00,0xCF,0xE0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x57E3, {0x01,0x00,0x63,0x00,0x7F,0xE0,0xF4,0x80,0x66,0xC0,0x69,0xA0,0x71,0x20,0x63,0x00,0xFF,0xE0,0x81,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x57F4, {0x01,0x00,0x21,0x00,0x2F,0xE0,0xF3,0xC0,0x2A,0x40,0x2B,0xC0,0x2A,0x40,0x3B,0xC0,0x6A,0x40,0x8B,0xC0,0x08,0x00,0x0F,0xE0,0x00,0x00,}}, +{ 0x57F7, {0x21,0x00,0x71,0x00,0x27,0x80,0xF9,0x80,0x89,0x80,0x4B,0x80,0x51,0x80,0xF9,0x80,0x22,0x80,0x7A,0xA0,0x24,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x57F9, {0x01,0x00,0x21,0x00,0x2F,0xE0,0xF2,0x80,0x22,0x80,0x3F,0xE0,0x20,0x00,0x27,0xC0,0x34,0x40,0xC4,0x40,0x07,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x57FA, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x1F,0x00,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x24,0x80,0x7F,0xC0,0x84,0x20,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x57FC, {0x01,0x00,0x21,0x00,0x2F,0xC0,0xF2,0x80,0x24,0x40,0x3F,0xE0,0x20,0x40,0x37,0x40,0x65,0x40,0x87,0x40,0x04,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x5800, {0x00,0x00,0x2F,0xE0,0x28,0x20,0xFF,0xE0,0x28,0x80,0x2A,0xC0,0x2A,0xC0,0x3B,0xC0,0xD4,0xA0,0x14,0xA0,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x5802, {0x24,0x80,0x15,0x00,0x7F,0xE0,0x80,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5805, {0x00,0x00,0x7F,0xC0,0x7A,0x40,0x79,0x80,0x79,0x80,0x52,0x80,0x7C,0x60,0x44,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5806, {0x04,0x80,0x24,0x80,0x25,0x00,0xFF,0xE0,0x2D,0x00,0x27,0xC0,0x25,0x00,0x35,0x00,0x67,0xC0,0x85,0x00,0x07,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x580A, {0x00,0x00,0xFF,0xE0,0x3B,0x80,0x7B,0x80,0x7B,0x80,0x6A,0x80,0x0A,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x580B, {0x00,0x00,0x37,0xE0,0x35,0xE0,0x7D,0xE0,0x37,0xE0,0x35,0xE0,0x35,0xE0,0x37,0xE0,0x7D,0xE0,0x49,0xA0,0x19,0xA0,0x13,0x60,0x00,0x00,}}, +{ 0x5815, {0x02,0x00,0xFF,0xE0,0xA7,0xC0,0xCC,0x40,0xB7,0xC0,0xA4,0x40,0xC7,0xC0,0x84,0x40,0xBF,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5819, {0x00,0x00,0x7F,0xE0,0x67,0xC0,0xFF,0xC0,0x6B,0xC0,0x6F,0xC0,0x69,0x40,0x73,0x00,0xEF,0xC0,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x581D, {0x00,0x00,0x33,0xC0,0x32,0xC0,0x7A,0xC0,0x32,0xC0,0x37,0xE0,0x34,0x20,0x3D,0xE0,0x75,0xE0,0x45,0xE0,0x05,0x20,0x04,0x60,0x00,0x00,}}, +{ 0x5821, {0x20,0x00,0x27,0x80,0x67,0x80,0x67,0x80,0xFF,0xE0,0x63,0x80,0x6D,0xC0,0x11,0x20,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5824, {0x00,0x00,0x27,0x80,0x24,0x80,0xF7,0x80,0x27,0x80,0x20,0x00,0x3F,0xE0,0x21,0x00,0x39,0xC0,0xCD,0x00,0x13,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x582A, {0x04,0x80,0x2F,0xE0,0x24,0x80,0xF7,0x80,0x27,0x80,0x24,0x80,0x3F,0xE0,0x2B,0x80,0x6E,0xC0,0x88,0x40,0x0F,0xE0,0x08,0x00,0x00,0x00,}}, +{ 0x582F, {0x04,0x00,0x3F,0x80,0x7F,0xC0,0x7F,0xC0,0x7B,0xC0,0x21,0x80,0x3F,0xE0,0xE0,0x00,0x7F,0xC0,0x19,0x20,0x31,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5830, {0x00,0x00,0x4F,0xE0,0x4B,0xC0,0xFA,0x40,0x4B,0xC0,0x4A,0x40,0x4B,0xC0,0x59,0x00,0x6F,0xE0,0x8B,0x80,0x0B,0x40,0x0F,0xE0,0x00,0x00,}}, +{ 0x5831, {0x20,0x00,0x7B,0xC0,0x22,0x40,0xFE,0xC0,0x4A,0x00,0x4B,0xC0,0x52,0x40,0xFF,0x40,0x22,0x80,0x7A,0x80,0x23,0x40,0x22,0x20,0x00,0x00,}}, +{ 0x5834, {0x00,0x00,0x27,0x80,0x24,0x80,0xF7,0x80,0x27,0x80,0x20,0x00,0x2F,0xE0,0x34,0x00,0x67,0xC0,0x8A,0xC0,0x15,0x40,0x03,0x80,0x00,0x00,}}, +{ 0x5835, {0x01,0x00,0x21,0x40,0x2F,0xC0,0xF1,0x80,0x3F,0xE0,0x21,0x00,0x27,0xC0,0x3C,0x40,0xF7,0xC0,0x04,0x40,0x07,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x583A, {0x00,0x00,0x2F,0xC0,0x29,0x40,0xFF,0xC0,0x2F,0xC0,0x2B,0x40,0x22,0x80,0x34,0xC0,0xCC,0xA0,0x14,0x80,0x08,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x583D, {0x00,0x00,0x6F,0xC0,0x6B,0xC0,0xFF,0xC0,0x60,0x00,0x7F,0xE0,0x61,0x00,0x71,0x00,0xF1,0xC0,0x91,0x00,0x1F,0xE0,0x10,0x00,0x00,0x00,}}, +{ 0x5840, {0x00,0x00,0x2F,0xE0,0x28,0x20,0xFF,0xE0,0x2A,0x40,0x2F,0xE0,0x2A,0x80,0x3A,0x80,0xDF,0xE0,0x12,0x80,0x14,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x5841, {0x00,0x00,0x7F,0x80,0x44,0x80,0x7F,0x80,0x7F,0x80,0x40,0x40,0x21,0x80,0x14,0x80,0xE4,0x60,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x584A, {0x01,0x00,0x22,0x00,0x2F,0xC0,0xF9,0x40,0x2F,0xC0,0x2F,0xC0,0x2B,0x40,0x32,0x80,0x66,0xC0,0x8B,0xE0,0x12,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x584B, {0x21,0x80,0x31,0xC0,0x6B,0xC0,0xE7,0x80,0x71,0x80,0x4A,0x40,0x7F,0xE0,0xC4,0x40,0xBF,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5851, {0x24,0x00,0x19,0xE0,0x7F,0x20,0x35,0xE0,0x3D,0xE0,0x35,0x20,0x12,0x20,0x22,0x60,0x0F,0x80,0x02,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5852, {0x01,0x80,0x61,0x80,0x7F,0xC0,0xF5,0x80,0x77,0xE0,0x7C,0x80,0x74,0x80,0x77,0xE0,0xFE,0x80,0x99,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5854, {0x04,0x80,0x44,0x80,0x5F,0xE0,0xF4,0x80,0x43,0x00,0x44,0x80,0x5F,0xE0,0x70,0x00,0xCF,0xC0,0x08,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x5857, {0x21,0x00,0x12,0x80,0x87,0xC0,0x49,0x20,0x3F,0xE0,0x25,0x80,0x59,0x40,0x47,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5858, {0x01,0x00,0x2F,0xE0,0x29,0x00,0xFF,0xC0,0x2F,0xE0,0x29,0x40,0x2F,0xC0,0x38,0x00,0x6F,0xC0,0x94,0x40,0x17,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x5859, {0x01,0x00,0x21,0x00,0x3F,0xE0,0xF7,0x80,0x24,0x80,0x27,0x80,0x20,0x00,0x3F,0xC0,0xF0,0x40,0x17,0xC0,0x17,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x585A, {0x00,0x00,0x2F,0xE0,0x28,0x00,0xFF,0xC0,0x27,0x20,0x39,0x40,0x23,0x80,0x2D,0xC0,0x72,0xA0,0x9C,0x80,0x00,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x585E, {0x04,0x00,0x7F,0xE0,0x51,0x40,0xBF,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x15,0x00,0x7F,0xC0,0x84,0x20,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x5862, {0x01,0x00,0x62,0x00,0x6F,0x80,0xF8,0x80,0x6F,0x80,0x68,0x00,0x6F,0xC0,0x78,0x00,0xEF,0xE0,0x9F,0xA0,0x15,0xA0,0x20,0xC0,0x00,0x00,}}, +{ 0x5869, {0x04,0x00,0x24,0x00,0x2F,0xE0,0xF7,0x80,0x24,0x80,0x27,0x80,0x20,0x00,0x3F,0xC0,0x6A,0xC0,0x8A,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x586B, {0x01,0x00,0x21,0x00,0x3F,0xE0,0xF7,0x80,0x24,0x80,0x27,0x80,0x24,0x80,0x37,0x80,0x64,0x80,0x9F,0xE0,0x06,0x80,0x18,0x40,0x00,0x00,}}, +{ 0x5870, {0x24,0x00,0x27,0xE0,0x9F,0xC0,0x47,0xC0,0x3F,0xE0,0x29,0xC0,0x4F,0xE0,0x44,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5872, {0x04,0x00,0x64,0x00,0x6F,0xC0,0xF7,0x80,0x67,0x80,0x64,0x80,0x67,0x80,0x7F,0xE0,0xEF,0xC0,0x9F,0xC0,0x35,0x40,0x0B,0x80,0x00,0x00,}}, +{ 0x5875, {0x02,0x00,0x7F,0xE0,0x49,0x00,0x7F,0xC0,0x7F,0xC0,0x5F,0x60,0x51,0x80,0x5F,0x20,0xB3,0xE0,0x9F,0x80,0x02,0x00,0x7F,0xE0,0x00,0x00,}}, +{ 0x5879, {0x20,0xC0,0xFF,0x00,0x7B,0xE0,0x7B,0xE0,0x7A,0x80,0x7A,0x80,0xFC,0x80,0x28,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x587E, {0x21,0x00,0xF9,0x00,0x07,0x80,0x79,0x80,0x4B,0x80,0x79,0x80,0x19,0xA0,0xF2,0x60,0x14,0x20,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x5883, {0x01,0x00,0x2F,0xC0,0x24,0x80,0xFF,0xE0,0x20,0x00,0x27,0x80,0x24,0x80,0x37,0x80,0x64,0x80,0x87,0x80,0x0D,0x20,0x30,0xE0,0x00,0x00,}}, +{ 0x5885, {0x00,0x00,0x7B,0xC0,0x79,0x80,0x7F,0xE0,0x79,0xC0,0x21,0x80,0x79,0x80,0x31,0x00,0xFF,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5893, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x35,0x80,0xDF,0x60,0x04,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0x5897, {0x02,0x40,0x11,0x80,0x17,0xE0,0x7F,0xE0,0x14,0xA0,0x17,0xE0,0x10,0x00,0x1B,0xC0,0x32,0x40,0x43,0xC0,0x03,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x589C, {0x04,0x80,0x73,0x00,0x6F,0xE0,0x7F,0x40,0x53,0xC0,0x5D,0x80,0x63,0xC0,0x4D,0x20,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x589F, {0x02,0x00,0x63,0xC0,0x6F,0xE0,0xFF,0xE0,0x73,0x40,0x7D,0xC0,0x73,0x80,0x7B,0xC0,0xFF,0xC0,0xA7,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58A8, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x7F,0xC0,0x1F,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58AB, {0x01,0x80,0x64,0xC0,0x7F,0xE0,0xFF,0xC0,0x6B,0xC0,0x6D,0xC0,0x6F,0xC0,0x78,0x40,0xEF,0xC0,0x9F,0xE0,0x04,0xC0,0x02,0x80,0x00,0x00,}}, +{ 0x58AE, {0x02,0x00,0x7F,0xE0,0x57,0xC0,0x6F,0xC0,0x57,0xC0,0x54,0x40,0x67,0xC0,0x47,0xC0,0x7F,0xC0,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58B3, {0x01,0x00,0x2F,0xC0,0x3F,0xE0,0xF4,0x80,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x38,0x40,0xCF,0xC0,0x0F,0xC0,0x06,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x58B8, {0x04,0x80,0x7F,0xE0,0x65,0x40,0xF7,0xC0,0x63,0xC0,0x7F,0xE0,0x61,0x80,0x77,0xC0,0xFF,0xC0,0x87,0xC0,0x07,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x58B9, {0x00,0x00,0x3E,0xE0,0x3E,0xE0,0x7E,0xE0,0x7E,0xE0,0x30,0x20,0x37,0xE0,0x34,0xE0,0x77,0xE0,0x57,0xE0,0x14,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x58BA, {0x01,0x00,0x62,0x00,0x6F,0xC0,0xFF,0xC0,0x6B,0xC0,0x6F,0xC0,0x6B,0xC0,0x7D,0xC0,0xFF,0xE0,0x9F,0xE0,0x0C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x58BB, {0x01,0x00,0x63,0x00,0x7F,0xE0,0xF7,0xC0,0x6B,0xA0,0x7F,0xE0,0x60,0x00,0x7F,0xC0,0xEB,0xC0,0x8B,0xC0,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x58BE, {0x33,0xC0,0xD3,0xC0,0x7A,0x40,0xF3,0xC0,0xDB,0x40,0x2A,0x80,0xCB,0x40,0x16,0x20,0x64,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x58C1, {0x00,0x80,0x78,0x80,0x4F,0xE0,0x7A,0x40,0x47,0xE0,0x78,0x80,0xBF,0xE0,0x04,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58C5, {0x04,0x00,0xFF,0xE0,0x63,0xE0,0xD7,0xE0,0x7B,0xC0,0x73,0xC0,0xF2,0x80,0x27,0xE0,0x7F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58C7, {0x01,0x00,0x3F,0xE0,0x2F,0xC0,0xFB,0xC0,0x2B,0xC0,0x2F,0xC0,0x27,0x80,0x34,0x80,0x67,0x80,0x87,0x80,0x00,0x00,0x3F,0xE0,0x00,0x00,}}, +{ 0x58CA, {0x01,0x00,0x3F,0xE0,0x21,0x00,0xFF,0xC0,0x2A,0xC0,0x2F,0xC0,0x21,0x00,0x7F,0xE0,0x87,0x40,0x1D,0x80,0x07,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x58CC, {0x01,0x00,0x3F,0xE0,0x24,0x80,0xFF,0xE0,0x22,0x80,0x2F,0xC0,0x22,0x80,0x3F,0xE0,0x67,0xC0,0x9D,0x80,0x06,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x58D1, {0x20,0x00,0x3B,0xC0,0x7E,0x40,0xF9,0x80,0xF1,0x80,0x79,0x80,0xEE,0x40,0x38,0x20,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58D3, {0x00,0x00,0x7F,0xE0,0x7E,0xE0,0x7F,0xE0,0x7E,0xC0,0x62,0x80,0x7F,0x40,0xFF,0x40,0xBF,0xA0,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58D5, {0x01,0x00,0x5F,0xE0,0x47,0x80,0xF7,0x80,0x5F,0xE0,0x50,0x20,0x5F,0xE0,0x73,0x20,0x5F,0x80,0x87,0xC0,0x1D,0xA0,0x03,0x00,0x00,0x00,}}, +{ 0x58D7, {0x01,0x00,0x6F,0xC0,0x6F,0xE0,0xFF,0xE0,0x6F,0xC0,0x61,0x00,0x7F,0xE0,0x7A,0xC0,0xFF,0xE0,0x8F,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58D8, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7F,0xC0,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x58D9, {0x01,0x00,0x6F,0xE0,0x6F,0xE0,0xFF,0xE0,0x6B,0x80,0x6F,0xE0,0x6B,0xC0,0x7B,0xC0,0xEB,0xC0,0x9B,0xC0,0x13,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x58DC, {0x07,0x80,0x64,0x80,0x67,0x80,0xFF,0xC0,0x63,0x00,0x7F,0xE0,0x71,0x40,0x7D,0xC0,0xEF,0xC0,0x9F,0xE0,0x02,0xC0,0x0F,0xC0,0x00,0x00,}}, +{ 0x58DE, {0x01,0x00,0x7F,0xE0,0x67,0xC0,0xFF,0xC0,0x6F,0xC0,0x61,0x00,0x6D,0xC0,0x7F,0xC0,0xE7,0x40,0x9D,0xC0,0x07,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x58DF, {0x22,0x00,0x7B,0xC0,0xFF,0xC0,0xFF,0xC0,0x4B,0xC0,0x7B,0xC0,0x7A,0xE0,0x59,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58E4, {0x01,0x00,0x7F,0xE0,0x6F,0xC0,0xFF,0xC0,0x63,0x80,0x7F,0xE0,0x6F,0xC0,0x63,0x80,0xFF,0xE0,0x9D,0xC0,0x07,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x58E5, {0x00,0x00,0x6F,0xE0,0x6B,0xC0,0xFB,0xC0,0x6B,0xC0,0x69,0x80,0x6B,0xC0,0x7F,0xE0,0xFF,0xE0,0x97,0xE0,0x31,0x80,0x2F,0xE0,0x00,0x00,}}, +{ 0x58EB, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x58EC, {0x01,0x80,0x0E,0x00,0x74,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x58EE, {0x21,0x00,0x21,0x00,0x21,0x00,0xA1,0x00,0x7F,0xE0,0x21,0x00,0x21,0x00,0x61,0x00,0x61,0x00,0xA1,0x00,0x2F,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x58EF, {0x11,0x00,0x51,0x00,0x51,0x00,0x71,0x00,0x5F,0xE0,0x11,0x00,0x11,0x00,0xF1,0x00,0x51,0x00,0x51,0x00,0x9F,0xC0,0x10,0x00,0x00,0x00,}}, +{ 0x58F0, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x00,0x40,0x00,0x80,0x00,0x00,0x00,}}, +{ 0x58F1, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x00,0x00,0x7F,0xE0,0x50,0x40,0x93,0x00,0x1E,0x00,0x10,0x40,0x10,0x40,0x0F,0xC0,0x00,0x00,}}, +{ 0x58F2, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x00,0x00,0x7F,0xE0,0x40,0x40,0x92,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x58F7, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x7F,0xE0,0x4A,0x40,0xBF,0x80,0x2A,0x80,0x3F,0x80,0x0A,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58F9, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x40,0x40,0xBF,0x80,0x3F,0x80,0x3F,0x80,0x1F,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58FA, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x4A,0x40,0xFB,0x80,0x60,0x80,0x7B,0x80,0x0A,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58FB, {0x00,0x00,0x7F,0xE0,0x61,0x40,0xF5,0x80,0x6B,0x00,0x71,0xE0,0x6F,0x80,0x78,0x80,0xEF,0x80,0x8F,0x80,0x08,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x58FC, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x7F,0xE0,0x40,0x40,0xFF,0x80,0x0A,0x00,0x7B,0x80,0x7B,0x80,0x3B,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x58FD, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x7F,0xE0,0x7A,0xC0,0x60,0x80,0x00,0x00,}}, +{ 0x5902, {0x08,0x00,0x08,0x00,0x0F,0x00,0x1F,0x80,0x31,0x80,0x31,0x00,0x49,0x00,0x0A,0x00,0x04,0x00,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5909, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x09,0x00,0x49,0x40,0x53,0x20,0xA8,0x20,0x0F,0x00,0x1A,0x00,0x24,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x590A, {0x08,0x00,0x48,0x00,0x4F,0x00,0x7F,0x80,0x31,0x80,0x21,0x00,0x51,0x00,0x0A,0x00,0x04,0x00,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x590F, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x0F,0x80,0x7B,0x00,0x1E,0x00,0xE1,0xE0,0x00,0x00,}}, +{ 0x5910, {0x07,0x80,0x19,0x00,0x7F,0xC0,0x3D,0x40,0x1F,0xC0,0x10,0xC0,0x1F,0xC0,0x1F,0xC0,0x1F,0xC0,0x3F,0x80,0x07,0x00,0x78,0xE0,0x00,0x00,}}, +{ 0x5915, {0x04,0x00,0x04,0x00,0x07,0xC0,0x08,0x40,0x14,0x40,0x22,0x80,0x01,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x18,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x5916, {0x21,0x00,0x21,0x00,0x3D,0x00,0x25,0x00,0x25,0x00,0x65,0x00,0x59,0xC0,0x89,0x20,0x11,0x00,0x11,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x5918, {0x30,0x00,0x31,0xE0,0x3D,0x20,0x35,0x20,0x35,0x20,0x35,0x20,0x59,0x20,0x09,0x20,0x09,0x60,0x11,0x40,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5919, {0x00,0x00,0x7F,0x80,0x40,0x80,0x5E,0x80,0x48,0x80,0x4E,0x80,0x4A,0x80,0x5A,0x80,0x66,0x80,0x44,0xA0,0x48,0x60,0x90,0x20,0x00,0x00,}}, +{ 0x591A, {0x08,0x00,0x0F,0x80,0x19,0x00,0x66,0x00,0x07,0x00,0x19,0xE0,0x62,0x20,0x0E,0x40,0x11,0x80,0x03,0x00,0x1C,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x591B, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0F,0x80,0x30,0x80,0x49,0x00,0x06,0x00,0x18,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x591C, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x22,0x00,0x23,0x80,0x46,0x80,0x45,0x80,0xCD,0x80,0x53,0x00,0x43,0x00,0x4C,0x80,0x70,0x60,0x00,0x00,}}, +{ 0x5922, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0x80,0x7F,0x80,0x00,0x00,0x7F,0xE0,0x44,0x40,0x8F,0x00,0x3A,0x00,0x0C,0x00,0x70,0x00,0x00,0x00,}}, +{ 0x5925, {0x01,0x00,0x79,0x00,0x7B,0xC0,0x7E,0x40,0x79,0x80,0x21,0x80,0xFA,0xE0,0x71,0xA0,0x6B,0xC0,0xA0,0xC0,0x20,0x80,0x23,0x00,0x00,0x00,}}, +{ 0x5927, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5929, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0E,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x592A, {0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x19,0x00,0x24,0x80,0x44,0x40,0x80,0x20,0x00,0x00,}}, +{ 0x592B, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x592C, {0x04,0x00,0x04,0x00,0x3F,0x80,0x3F,0x80,0x04,0x80,0x04,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x592D, {0x01,0x80,0x07,0x00,0x3C,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0C,0x00,0x0A,0x00,0x12,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x592E, {0x04,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5931, {0x04,0x00,0x24,0x00,0x24,0x00,0x3F,0x80,0x44,0x00,0x44,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5932, {0x04,0x00,0x04,0x00,0xFF,0xE0,0xFF,0xE0,0x13,0x00,0x25,0x80,0xC4,0x60,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5937, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x7F,0x80,0x04,0x80,0x7F,0x80,0x44,0x00,0x7F,0xE0,0x04,0x20,0x0A,0x20,0x31,0xC0,0xC0,0x60,0x00,0x00,}}, +{ 0x5938, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1A,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x80,0x08,0x00,0x0F,0x80,0x01,0x00,0x01,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x593E, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x25,0x80,0x25,0x80,0x35,0x80,0x55,0x40,0x4E,0x40,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5944, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0xA0,0x24,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x5947, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x80,0x3C,0x80,0x24,0x80,0x3C,0x80,0x24,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x5948, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x31,0x80,0xDF,0x60,0x00,0x00,0x7F,0xC0,0x04,0x00,0x35,0x80,0xC4,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x5949, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x0A,0x00,0xFF,0xE0,0x24,0x80,0x5F,0x40,0x84,0x20,0x3F,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x594E, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1E,0x00,0x35,0x80,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x1F,0x00,0x1F,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x594F, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x0A,0x00,0xFF,0xE0,0x13,0x00,0x6C,0xC0,0xBF,0xA0,0x0E,0x00,0x19,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x5950, {0x04,0x00,0x0F,0x00,0xF2,0x00,0xFF,0x80,0x6A,0x80,0x6A,0x80,0x71,0x80,0x04,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x5951, {0x20,0x00,0x27,0xC0,0xFD,0x40,0x29,0x40,0x72,0x40,0x3C,0x40,0xC4,0x80,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5954, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x15,0x00,0x3F,0x80,0xC4,0x60,0x15,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5955, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x09,0x00,0x69,0x40,0x51,0x40,0x27,0x00,0x04,0x00,0xFF,0xE0,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5957, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0xD0,0x60,0x1F,0x00,0x10,0x00,0x1F,0x00,0x10,0x00,0xFF,0xE0,0x13,0x00,0x7E,0x80,0x00,0x00,}}, +{ 0x5958, {0x51,0x80,0x51,0x80,0x77,0xE0,0xF7,0xE0,0xD1,0x80,0x53,0xC0,0x94,0x00,0x04,0x00,0xFF,0xE0,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x595A, {0x01,0x80,0x7F,0x80,0x64,0x40,0x48,0x40,0x39,0x00,0x07,0x00,0x0C,0x80,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x5960, {0x1F,0x80,0x61,0x80,0x9F,0xE0,0x3F,0xE0,0x6B,0x80,0x71,0x80,0x7F,0x80,0x60,0x80,0x3F,0x80,0xFF,0xE0,0x33,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x5962, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x3F,0x80,0xC7,0x60,0x7F,0xC0,0x09,0x00,0x3F,0x80,0xDF,0x80,0x1F,0x80,0x1F,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x5965, {0x04,0x00,0x08,0x00,0x3F,0x80,0x35,0x80,0x36,0x80,0x3F,0x80,0x2E,0x80,0x35,0x80,0xFF,0xE0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x5967, {0x08,0x00,0x10,0x00,0x7F,0x80,0x7E,0x80,0x6E,0x80,0x7F,0x80,0x6E,0x80,0x15,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x5968, {0x20,0xE0,0xAF,0x20,0x65,0x40,0x20,0x80,0x7F,0xE0,0xA4,0x80,0x22,0x80,0x25,0x80,0xFF,0xE0,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5969, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x19,0x80,0xFF,0xE0,0x6F,0x80,0x69,0x80,0x6F,0x80,0x7D,0x80,0x7D,0x80,0x60,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0x596A, {0x08,0x00,0xFF,0xE0,0x3B,0x80,0xFF,0xE0,0x32,0x00,0x3F,0x00,0x1F,0x00,0x12,0x00,0xFF,0xE0,0xFF,0xE0,0x09,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x596C, {0x51,0x00,0x53,0xC0,0x7D,0x80,0x17,0x80,0xFF,0xE0,0x54,0x80,0x52,0x80,0x90,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x596E, {0x04,0x00,0xFF,0xE0,0x3B,0x80,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x22,0x00,0x3F,0xC0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5973, {0x08,0x00,0x08,0x00,0x08,0x00,0xFF,0xE0,0x09,0x00,0x11,0x00,0x31,0x00,0x0A,0x00,0x06,0x00,0x09,0x00,0x10,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5974, {0x20,0x00,0x27,0xC0,0x22,0x40,0xFA,0x40,0x2A,0x40,0x29,0x40,0x29,0x80,0x71,0x80,0x11,0x00,0x1A,0x80,0x24,0x40,0x40,0x20,0x00,0x00,}}, +{ 0x5978, {0x20,0x00,0x23,0xC0,0x21,0x80,0xF9,0x80,0x69,0x80,0x6F,0xE0,0x69,0x80,0x79,0x80,0x19,0x80,0x19,0x80,0x21,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x597D, {0x20,0x00,0x27,0xC0,0x20,0x40,0xF8,0x80,0x28,0x80,0x29,0x00,0x4F,0xE0,0x71,0x00,0x19,0x00,0x29,0x00,0x21,0x00,0x43,0x00,0x00,0x00,}}, +{ 0x5981, {0x10,0x80,0x10,0x80,0x11,0xE0,0x7D,0xE0,0x36,0x20,0x35,0x20,0x34,0xA0,0x38,0xA0,0x0C,0x20,0x0C,0x20,0x10,0x20,0x20,0x40,0x00,0x00,}}, +{ 0x5982, {0x10,0x00,0x10,0x00,0x11,0xE0,0x7D,0x20,0x15,0x20,0x15,0x20,0x25,0x20,0x39,0x20,0x0D,0x20,0x09,0xE0,0x11,0x20,0x20,0x00,0x00,0x00,}}, +{ 0x5983, {0x20,0x00,0x23,0xC0,0x20,0x40,0xF8,0x40,0x2B,0xC0,0x2A,0x40,0x2A,0x00,0x72,0x00,0x1A,0x00,0x1A,0x20,0x22,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x5984, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x20,0x00,0x1F,0xC0,0x04,0x00,0x08,0x00,0xFF,0xE0,0x11,0x00,0x3E,0x00,0x0D,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x598A, {0x20,0x00,0x20,0xE0,0x27,0x80,0xF8,0x80,0x28,0x80,0x28,0x80,0x2F,0xE0,0x70,0x80,0x18,0x80,0x10,0x80,0x27,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x598D, {0x20,0x00,0x27,0xC0,0x22,0x80,0xFA,0x80,0x6A,0x80,0x6F,0xE0,0x6A,0x80,0x72,0x80,0x1A,0x80,0x1C,0x80,0x24,0x80,0x48,0x80,0x00,0x00,}}, +{ 0x5993, {0x20,0x80,0x20,0x80,0x27,0xE0,0xF8,0x80,0x2F,0xE0,0x2A,0x20,0x4A,0x40,0x71,0x40,0x10,0x80,0x29,0x80,0x22,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x5996, {0x20,0x40,0x20,0x80,0x27,0x00,0xF9,0x00,0x29,0x00,0x2F,0xE0,0x49,0x00,0x71,0x00,0x19,0x00,0x12,0x80,0x24,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x5999, {0x20,0x80,0x20,0x80,0x20,0x80,0xFA,0xC0,0x2A,0xC0,0x2A,0xA0,0x4C,0xE0,0x74,0xC0,0x10,0x80,0x18,0x80,0x23,0x00,0x4C,0x00,0x00,0x00,}}, +{ 0x599B, {0x04,0x00,0x64,0x80,0x7F,0x80,0x3F,0x80,0xFF,0xE0,0x08,0x00,0x7F,0xC0,0x11,0x00,0x1E,0x00,0x3F,0x00,0x0C,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x599D, {0x11,0x00,0x51,0x00,0x51,0x00,0x7F,0xE0,0x52,0xC0,0x12,0x80,0xF2,0x80,0x74,0x80,0x77,0x80,0x51,0x80,0x56,0x40,0x98,0x20,0x00,0x00,}}, +{ 0x59A3, {0x65,0x80,0x65,0x80,0x65,0x80,0xF5,0xA0,0xD7,0xC0,0x55,0x80,0x55,0x80,0xE5,0x80,0xB5,0x80,0x35,0xA0,0x47,0xA0,0x98,0xE0,0x00,0x00,}}, +{ 0x59A5, {0x00,0xC0,0x03,0x40,0x7C,0x40,0x24,0x80,0x21,0x00,0x04,0x00,0xFF,0xE0,0x08,0x80,0x11,0x00,0x1F,0x00,0x0D,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x59A8, {0x21,0x00,0x21,0x00,0x27,0xE0,0xFD,0x00,0x29,0x00,0x29,0xC0,0x29,0x40,0x71,0x40,0x1A,0x40,0x12,0x40,0x24,0x40,0x48,0x80,0x00,0x00,}}, +{ 0x59AC, {0x20,0x00,0x27,0xE0,0x21,0x00,0xF9,0x00,0x29,0x00,0x2A,0x00,0x4B,0xC0,0x76,0x40,0x1A,0x40,0x1A,0x40,0x23,0xC0,0x42,0x40,0x00,0x00,}}, +{ 0x59B2, {0x20,0x00,0x23,0xC0,0x22,0x40,0xFA,0x40,0x6B,0xC0,0x6A,0x40,0x6A,0x40,0x72,0x40,0x1B,0xC0,0x18,0x00,0x2F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x59B9, {0x20,0x80,0x20,0x80,0x27,0xE0,0xF8,0x80,0x28,0x80,0x2F,0xE0,0x49,0x80,0x72,0x80,0x14,0xC0,0x18,0xA0,0x28,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x59BB, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x04,0x80,0x3F,0x80,0x08,0x00,0xFF,0xE0,0x19,0x00,0x07,0x00,0x78,0xC0,0x00,0x00,}}, +{ 0x59BE, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x04,0x00,0x08,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x00,0x0D,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x59C6, {0x20,0x00,0x23,0xC0,0x22,0x40,0xFB,0x40,0x6B,0xC0,0x6F,0xE0,0x6A,0x40,0x7B,0x40,0x1B,0xC0,0x1F,0xE0,0x24,0x40,0x40,0x80,0x00,0x00,}}, +{ 0x59C9, {0x20,0x80,0x20,0x80,0x27,0xF0,0xF8,0x80,0x2B,0xE0,0x2A,0xA0,0x2A,0xA0,0x6A,0xA0,0x52,0xA0,0x1A,0xA0,0x20,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x59CB, {0x21,0x00,0x21,0x00,0x21,0x00,0xF2,0x40,0x52,0xE0,0x5F,0x20,0x50,0x00,0xD7,0xC0,0xA4,0x40,0x34,0x40,0x47,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x59D0, {0x20,0x00,0x23,0xC0,0x22,0x40,0xFA,0x40,0x2B,0xC0,0x2A,0x40,0x4A,0x40,0x73,0xC0,0x1A,0x40,0x12,0x40,0x2F,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x59D1, {0x21,0x00,0x21,0x00,0x27,0xE0,0xF9,0x00,0x29,0x00,0x29,0x00,0x4B,0xC0,0x72,0x40,0x1A,0x40,0x1A,0x40,0x23,0xC0,0x42,0x40,0x00,0x00,}}, +{ 0x59D3, {0x21,0x00,0x25,0x00,0x25,0x00,0xF7,0xE0,0x59,0x00,0x59,0x00,0x51,0x00,0xE7,0xC0,0xB1,0x00,0x31,0x00,0x4F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x59D4, {0x01,0x80,0x3F,0x00,0x04,0x00,0xFF,0xE0,0x37,0x00,0xE4,0xE0,0x08,0x00,0xFF,0xE0,0x11,0x00,0x3E,0x00,0x0D,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x59D9, {0x62,0x00,0x62,0x60,0x67,0x80,0xF4,0x80,0xDC,0x80,0x54,0x80,0x57,0xE0,0xE4,0x80,0xB4,0x80,0x34,0x80,0x45,0xE0,0x84,0x00,0x00,0x00,}}, +{ 0x59DA, {0x63,0x80,0x63,0x80,0x6F,0xC0,0xF7,0xC0,0xD3,0x80,0x53,0x80,0x57,0xC0,0xEB,0xC0,0xB7,0x80,0x35,0xA0,0x49,0xA0,0x90,0xE0,0x00,0x00,}}, +{ 0x59DC, {0x21,0x00,0x13,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x08,0x00,0xFF,0xE0,0x19,0x00,0x3F,0x00,0x19,0x00,0x60,0x80,0x00,0x00,}}, +{ 0x59E5, {0x21,0x00,0x21,0x40,0x27,0xC0,0xF1,0x80,0x5F,0xE0,0x51,0x00,0x52,0x00,0xE6,0xC0,0xAB,0x00,0x32,0x20,0x42,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x59E6, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x1A,0x00,0x0E,0x00,0x13,0x00,0x20,0x80,0xFF,0xE0,0x29,0x40,0x73,0x80,0x39,0xC0,0xC6,0x20,0x00,0x00,}}, +{ 0x59E8, {0x21,0x80,0x21,0x80,0x27,0xE0,0xFB,0xC0,0x69,0xC0,0x6B,0xC0,0x6B,0x80,0x77,0xE0,0x19,0xE0,0x19,0xC0,0x26,0x40,0x58,0x20,0x00,0x00,}}, +{ 0x59EA, {0x20,0x00,0x3F,0xE0,0x22,0x00,0xF4,0x80,0x5F,0xC0,0x51,0x40,0x51,0x00,0x6F,0xC0,0xA1,0x00,0x31,0x00,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x59EB, {0x20,0x00,0x27,0xE0,0x25,0x00,0xF5,0x00,0x57,0xC0,0x54,0x40,0x54,0x40,0x67,0xC0,0xB5,0x00,0x35,0x00,0x47,0xE0,0x84,0x00,0x00,0x00,}}, +{ 0x59F6, {0x21,0x80,0x21,0x80,0x21,0x80,0xF9,0x80,0x2A,0x40,0x2F,0xE0,0x48,0x00,0x6B,0xC0,0x12,0x40,0x1A,0x40,0x23,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x59FB, {0x10,0x00,0x13,0xE0,0x12,0xA0,0x7A,0xA0,0x2B,0xE0,0x2A,0xA0,0x2A,0xA0,0x72,0xE0,0x1B,0x60,0x12,0x20,0x23,0xE0,0x42,0x20,0x00,0x00,}}, +{ 0x59FF, {0x04,0x00,0x64,0x00,0x0F,0xE0,0x1B,0x00,0x25,0x80,0xD8,0x60,0x04,0x00,0xFF,0xE0,0x09,0x00,0x1E,0x00,0x0D,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x5A01, {0x02,0x80,0x02,0x40,0x7F,0xE0,0x7F,0x40,0x49,0x40,0x7F,0x40,0x52,0x80,0x52,0x80,0x7C,0x80,0x4D,0xA0,0x72,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x5A03, {0x20,0x80,0x20,0x80,0x23,0xC0,0xF8,0x80,0x28,0x80,0x2F,0xE0,0x28,0x80,0x73,0xC0,0x18,0x80,0x14,0x80,0x27,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5A09, {0x21,0x80,0x23,0xC0,0x23,0xC0,0xFB,0xC0,0x6B,0xC0,0x68,0x00,0x6F,0xE0,0x71,0x00,0x1B,0xC0,0x18,0x40,0x20,0xC0,0x41,0x80,0x00,0x00,}}, +{ 0x5A11, {0x21,0x00,0xA5,0xC0,0x45,0x60,0x1B,0xA0,0x23,0x80,0x43,0x00,0x5C,0x00,0x08,0x00,0xFF,0xE0,0x1E,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x5A18, {0x21,0x00,0x21,0x00,0x23,0xC0,0xFA,0x40,0x2B,0xC0,0x2A,0x40,0x2B,0xC0,0x73,0xA0,0x1A,0xC0,0x12,0x80,0x23,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x5A1A, {0x20,0x00,0x23,0xC0,0x23,0xC0,0xFB,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x71,0x80,0x1F,0xE0,0x19,0x20,0x22,0x20,0x4C,0xC0,0x00,0x00,}}, +{ 0x5A1C, {0x60,0x00,0x7F,0xC0,0x6B,0xC0,0xFF,0xC0,0xFB,0x80,0x6B,0xC0,0x7F,0xC0,0xEB,0xA0,0xEB,0xA0,0x7B,0xE0,0x5D,0x80,0xA1,0x80,0x00,0x00,}}, +{ 0x5A1F, {0x30,0x00,0x33,0xE0,0x32,0x20,0x7B,0xE0,0x68,0x00,0x2B,0xE0,0x2A,0x20,0x7B,0xE0,0x5B,0xE0,0x1B,0xE0,0x2A,0x20,0x42,0x60,0x00,0x00,}}, +{ 0x5A20, {0x20,0x00,0x27,0xE0,0x24,0x00,0xF7,0xC0,0x54,0x00,0x57,0xE0,0x55,0x40,0xF5,0x40,0xBD,0x80,0x29,0x80,0x51,0x40,0x86,0x20,0x00,0x00,}}, +{ 0x5A25, {0x61,0x80,0x63,0xC0,0x6F,0xA0,0xF3,0x80,0xDF,0xE0,0x53,0xC0,0x53,0xC0,0xE3,0xC0,0xBE,0x80,0x32,0xE0,0x43,0x60,0x86,0x20,0x00,0x00,}}, +{ 0x5A29, {0x21,0x00,0x23,0xC0,0x26,0x80,0xFF,0xC0,0x55,0x40,0x55,0x40,0x57,0xC0,0xE5,0x40,0xB3,0x00,0x23,0x20,0x45,0x20,0x98,0xE0,0x00,0x00,}}, +{ 0x5A2F, {0x20,0x00,0x25,0xC0,0x25,0x40,0xF5,0x40,0x55,0xC0,0x55,0x40,0x54,0x00,0xE7,0xC0,0xB0,0x00,0x2F,0xE0,0x44,0x40,0x98,0x20,0x00,0x00,}}, +{ 0x5A35, {0x60,0x00,0x7F,0xE0,0x6A,0x00,0xEF,0xC0,0xEB,0x40,0x6B,0x40,0x6F,0xC0,0xEA,0x80,0x6E,0x80,0x7F,0xC0,0x43,0x40,0x82,0x20,0x00,0x00,}}, +{ 0x5A36, {0x00,0x00,0xFC,0x00,0x7B,0xC0,0x7A,0x40,0x79,0x80,0x6B,0x80,0xFC,0x60,0x08,0x00,0xFF,0xE0,0x1E,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x5A3C, {0x10,0x00,0x13,0xC0,0x12,0x40,0x7B,0xC0,0x2B,0xC0,0x2A,0x40,0x28,0x00,0x77,0xE0,0x5C,0x20,0x17,0xE0,0x27,0xE0,0x44,0x20,0x00,0x00,}}, +{ 0x5A40, {0x60,0x00,0x7F,0xE0,0x74,0x40,0xFF,0x40,0xFB,0xC0,0x77,0xC0,0x77,0xC0,0xF7,0xC0,0xFE,0x40,0x78,0x40,0x50,0x40,0x90,0xC0,0x00,0x00,}}, +{ 0x5A41, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x25,0x80,0x3F,0x80,0xFF,0xE0,0x1D,0x00,0x07,0x00,0x79,0x80,0x00,0x00,}}, +{ 0x5A46, {0x41,0x00,0x2F,0xE0,0x89,0x00,0x2F,0xC0,0x53,0x80,0x5E,0xE0,0x24,0x00,0xFF,0xE0,0x09,0x00,0x1F,0x00,0x0C,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x5A49, {0x61,0x80,0x61,0x80,0x67,0xE0,0xFE,0x60,0xD2,0xC0,0x53,0xC0,0x55,0xC0,0xEF,0xC0,0x33,0x80,0x33,0xA0,0x45,0xA0,0x88,0xE0,0x00,0x00,}}, +{ 0x5A5A, {0x20,0xC0,0x27,0x80,0x24,0x80,0xF7,0xE0,0x54,0x80,0x57,0xA0,0x5C,0x60,0x67,0xE0,0xA4,0x40,0x37,0xC0,0x47,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x5A62, {0x21,0x00,0x23,0x00,0x23,0xC0,0xFB,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0x80,0x1F,0xE0,0x1F,0xE0,0x20,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x5A66, {0x20,0x00,0x27,0x80,0x24,0x80,0xF7,0x80,0x57,0x80,0x50,0x00,0x5F,0xE0,0x69,0x20,0xB7,0xC0,0x35,0x40,0x45,0xC0,0x81,0x00,0x00,0x00,}}, +{ 0x5A6A, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x79,0x80,0x6B,0xC0,0xA5,0xA0,0x20,0x00,0x08,0x00,0xFF,0xE0,0x1E,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x5A6C, {0x60,0x40,0x61,0xC0,0x67,0x60,0xF9,0xA0,0xD0,0xC0,0x57,0x80,0x51,0x80,0xE1,0x80,0x33,0xC0,0x31,0x80,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x5A7F, {0x20,0x00,0x2F,0xE0,0x21,0x40,0xF5,0xC0,0x57,0x00,0x59,0xE0,0x57,0xC0,0xF4,0x40,0x27,0xC0,0x37,0xC0,0x44,0x40,0x84,0xC0,0x00,0x00,}}, +{ 0x5A92, {0x22,0x80,0x22,0x80,0x2F,0xE0,0xF3,0x80,0x52,0x80,0x53,0x80,0x51,0x00,0x5F,0xE0,0xB3,0x80,0x2D,0x40,0x49,0x20,0x81,0x00,0x00,0x00,}}, +{ 0x5A9A, {0x30,0x00,0x37,0xE0,0x34,0xA0,0x7F,0xE0,0x7C,0x00,0x35,0xE0,0x35,0x20,0x75,0xE0,0x35,0xE0,0x3D,0xE0,0x29,0xE0,0x51,0x20,0x00,0x00,}}, +{ 0x5A9B, {0x20,0xE0,0x2F,0x20,0x25,0x40,0xFF,0xE0,0x51,0x00,0x5F,0xE0,0x51,0x00,0xF3,0xC0,0xA6,0x40,0x39,0x80,0x53,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x5ABC, {0x60,0x00,0x67,0xC0,0x65,0x40,0xF7,0xC0,0xD4,0x40,0x57,0xC0,0x50,0x00,0xEF,0xC0,0x3B,0xC0,0x3B,0xC0,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x5ABD, {0x60,0x00,0x67,0xE0,0x65,0x80,0xF7,0xC0,0xD5,0x80,0x57,0xC0,0x55,0x80,0xF7,0xE0,0x31,0xE0,0x3F,0xE0,0x4A,0x20,0x90,0xC0,0x00,0x00,}}, +{ 0x5ABE, {0x21,0x80,0x27,0xE0,0x23,0xC0,0xFB,0xC0,0x6F,0xE0,0x69,0x80,0x6B,0xC0,0x73,0xC0,0x1B,0xC0,0x1F,0xE0,0x22,0x40,0x42,0xC0,0x00,0x00,}}, +{ 0x5AC1, {0x22,0x00,0x22,0x00,0x2F,0xE0,0xF8,0x20,0x57,0xC0,0x53,0x20,0x5D,0xC0,0xE2,0x80,0xB5,0xC0,0x3A,0xA0,0x44,0x80,0x83,0x00,0x00,0x00,}}, +{ 0x5AC2, {0x63,0x00,0x6D,0xC0,0x69,0x40,0xED,0x40,0xE9,0x40,0x69,0x40,0x6F,0xC0,0xE3,0x00,0xEF,0xC0,0x66,0x80,0x43,0x80,0x9C,0xE0,0x00,0x00,}}, +{ 0x5AC9, {0x20,0x80,0x20,0x80,0x27,0xE0,0xFD,0x00,0x6D,0xC0,0x66,0x80,0x6C,0x80,0xBF,0xE0,0xFC,0x80,0x69,0x80,0x52,0x40,0xA4,0x20,0x00,0x00,}}, +{ 0x5ACB, {0x30,0x00,0x37,0x60,0x31,0x20,0x7F,0x60,0x7C,0xC0,0x34,0xC0,0x37,0x60,0x73,0x60,0x77,0x60,0x37,0x60,0x21,0x20,0x46,0x40,0x00,0x00,}}, +{ 0x5ACC, {0x24,0x40,0x22,0x80,0x2F,0xE0,0xF7,0xC0,0x52,0xC0,0x5F,0xE0,0x52,0xC0,0x67,0xC0,0xA6,0x80,0x3A,0xC0,0x52,0xA0,0x82,0x80,0x00,0x00,}}, +{ 0x5AD0, {0x60,0x40,0x7F,0x40,0x75,0x40,0xFF,0xE0,0xF7,0xE0,0x7F,0xA0,0x64,0xA0,0xFF,0xE0,0xE5,0xC0,0x69,0x40,0x51,0xE0,0xA3,0xA0,0x00,0x00,}}, +{ 0x5AD6, {0x60,0x00,0x7F,0xE0,0x67,0xC0,0xEF,0xC0,0xEB,0xC0,0x6F,0xC0,0x60,0x00,0xE7,0x80,0xEF,0xE0,0x7F,0xE0,0x49,0x40,0x83,0x00,0x00,0x00,}}, +{ 0x5AD7, {0x60,0x00,0x6F,0xC0,0x6B,0x80,0xEB,0x80,0xEB,0x80,0x68,0x00,0x6F,0xC0,0xED,0xC0,0xEF,0xC0,0x6F,0xC0,0x4F,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x5AE1, {0x41,0x00,0x41,0x00,0x5F,0xE0,0x42,0x80,0xEF,0xC0,0x69,0x40,0x6F,0xC0,0xA9,0x40,0xEB,0xC0,0x7B,0xC0,0x4B,0xC0,0x88,0xC0,0x00,0x00,}}, +{ 0x5AE3, {0x60,0x00,0x67,0xE0,0x61,0xC0,0xF3,0xC0,0xDF,0xE0,0x52,0x00,0x53,0xC0,0xE2,0x00,0x37,0xE0,0x3F,0xE0,0x4B,0xE0,0x90,0xC0,0x00,0x00,}}, +{ 0x5AE6, {0x61,0x00,0x69,0x40,0x67,0xE0,0xEF,0xE0,0xF7,0xC0,0x64,0x80,0x67,0x80,0xE3,0x00,0xEF,0xC0,0x69,0x40,0x49,0xC0,0x81,0x00,0x00,0x00,}}, +{ 0x5AE9, {0x64,0x80,0x64,0x80,0x6E,0x80,0xFF,0xE0,0xFF,0xC0,0x75,0xC0,0x75,0xC0,0xFF,0xC0,0xEE,0xC0,0x7D,0xC0,0x75,0xC0,0x85,0x20,0x00,0x00,}}, +{ 0x5AFA, {0x30,0x00,0x37,0xE0,0x37,0xE0,0x77,0xE0,0x77,0xE0,0x34,0x20,0x35,0xE0,0x75,0xE0,0x75,0xE0,0x35,0xE0,0x25,0xE0,0x46,0xE0,0x00,0x00,}}, +{ 0x5AFB, {0x30,0x00,0x37,0xE0,0x37,0xE0,0x77,0xE0,0x77,0xE0,0x34,0xA0,0x34,0xA0,0x77,0xE0,0x75,0xE0,0x37,0xE0,0x24,0xA0,0x44,0xE0,0x00,0x00,}}, +{ 0x5B09, {0x41,0x00,0x4F,0xE0,0x47,0xC0,0xFF,0xC0,0x54,0x40,0x57,0xC0,0x52,0x80,0xEF,0xE0,0x37,0xC0,0x2C,0x40,0x47,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x5B0B, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0xFC,0xC0,0xFF,0xC0,0x69,0x40,0x6F,0xC0,0xEB,0x40,0xEF,0xC0,0x7F,0xE0,0x43,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x5B0C, {0x60,0xC0,0x67,0x00,0x67,0xC0,0xFF,0xC0,0xD7,0x80,0x5B,0xC0,0x53,0xA0,0xEF,0xC0,0x3B,0x40,0x3B,0xC0,0x4B,0xC0,0x8A,0xC0,0x00,0x00,}}, +{ 0x5B16, {0x01,0x80,0x7B,0xC0,0x79,0x80,0x7F,0xE0,0x79,0x80,0x6B,0xC0,0xB9,0x80,0x09,0x80,0xFF,0xE0,0x1E,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x5B22, {0x21,0x00,0x2F,0xE0,0x27,0xE0,0xFF,0xE0,0x53,0x80,0x57,0xC0,0x53,0x80,0xEF,0xE0,0xB7,0xC0,0x2E,0x80,0x43,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x5B2A, {0x61,0x00,0x6F,0xE0,0x6F,0xC0,0xFF,0xC0,0xD9,0x80,0x53,0xC0,0x5E,0x40,0xD3,0xC0,0xE3,0xC0,0x33,0xC0,0x43,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x5B2C, {0x40,0x00,0x4F,0xC0,0x41,0x00,0xFF,0xE0,0x7D,0xC0,0x61,0x00,0x7F,0xE0,0xA1,0x00,0xAF,0xC0,0x7B,0x40,0x4B,0x40,0x8B,0x40,0x00,0x00,}}, +{ 0x5B30, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x37,0x40,0xFF,0xE0,0x1D,0x00,0x07,0x00,0x78,0xC0,0x00,0x00,}}, +{ 0x5B32, {0x04,0x00,0xF5,0xE0,0xF5,0xA0,0xFF,0xE0,0xFB,0xE0,0xFB,0xE0,0x6A,0x80,0xFF,0xE0,0x74,0xA0,0x5E,0xA0,0x59,0xA0,0xB1,0x60,0x00,0x00,}}, +{ 0x5B36, {0x61,0x00,0x67,0x80,0x67,0x80,0xF7,0x80,0xD4,0x80,0x57,0x80,0x5F,0xC0,0xEB,0x40,0x3F,0xC0,0x3F,0xE0,0x44,0xC0,0x98,0x80,0x00,0x00,}}, +{ 0x5B3E, {0x64,0x00,0x65,0xE0,0x7E,0xA0,0xFF,0xE0,0xF7,0xE0,0x75,0xA0,0x7F,0xE0,0xED,0xA0,0xEF,0xE0,0x75,0xE0,0x64,0xC0,0x85,0xA0,0x00,0x00,}}, +{ 0x5B40, {0x60,0x00,0x6F,0xC0,0x67,0xE0,0xEF,0xE0,0xF5,0xC0,0x65,0xC0,0x65,0x40,0xFF,0xC0,0xEF,0xC0,0x7F,0xC0,0x75,0xC0,0x85,0x40,0x00,0x00,}}, +{ 0x5B43, {0x61,0x00,0x7F,0xE0,0x6F,0xC0,0xEF,0xC0,0xE3,0x80,0x6F,0xC0,0x67,0x80,0xF3,0x80,0xFF,0xE0,0x7F,0xC0,0x77,0x80,0x8C,0x60,0x00,0x00,}}, +{ 0x5B45, {0x6B,0x80,0x6B,0xC0,0x6F,0xC0,0xF1,0x80,0xFF,0xE0,0x6B,0x80,0x7B,0xC0,0xFB,0xC0,0xFB,0x80,0x7B,0xE0,0x4F,0x60,0xB8,0x20,0x00,0x00,}}, +{ 0x5B50, {0x00,0x00,0x7F,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B51, {0x00,0x00,0x1F,0xC0,0x00,0x80,0x01,0x00,0x02,0x00,0x02,0x40,0x03,0x80,0x1E,0x00,0x62,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x5B54, {0x01,0x00,0x79,0x00,0x09,0x00,0x11,0x00,0x31,0x00,0x21,0x00,0x39,0x00,0xE1,0x00,0x21,0x00,0x21,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x5B55, {0x00,0x00,0x7F,0x00,0x11,0xC0,0x11,0xC0,0x20,0x40,0x3F,0x40,0x41,0x80,0x82,0x00,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B57, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0x1F,0x00,0x01,0x00,0x06,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B58, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x10,0x00,0x17,0xC0,0x20,0x80,0x61,0x00,0x61,0x00,0xBF,0xE0,0x21,0x00,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x5B5A, {0x01,0x80,0x07,0x80,0x78,0x40,0x64,0x40,0x7F,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B5B, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x7F,0xE0,0x40,0x40,0xBF,0x00,0x01,0x00,0x02,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B5C, {0x02,0x00,0xFA,0x00,0x0B,0xE0,0x16,0x80,0x24,0x80,0x3A,0x80,0xE1,0x00,0x21,0x00,0x21,0x00,0x22,0x80,0x2C,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x5B5D, {0x04,0x00,0x04,0x80,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x04,0x00,0x1F,0x80,0x21,0x00,0xC2,0x00,0x3F,0xC0,0x02,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x5B5F, {0x3F,0x80,0x02,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x3F,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5B63, {0x01,0x00,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x16,0x00,0x25,0x80,0xDF,0x60,0x02,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x1C,0x00,0x00,0x00,}}, +{ 0x5B64, {0x00,0x40,0x79,0x80,0x0F,0x80,0x15,0x80,0x25,0x80,0x25,0x80,0x35,0x80,0x65,0x40,0xA5,0x40,0x29,0xC0,0x3E,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x5B65, {0x20,0x00,0xFF,0xC0,0x69,0x40,0x79,0x80,0x1B,0x80,0x24,0x60,0xFF,0x00,0x03,0x00,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B66, {0x28,0x80,0x14,0x80,0x7F,0xE0,0x40,0x40,0x9F,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B69, {0x01,0x00,0xF3,0x00,0x1F,0xE0,0x29,0x00,0x26,0x80,0x62,0x80,0x71,0x40,0x63,0x40,0xE6,0x80,0x61,0xC0,0x66,0x20,0x78,0x20,0x00,0x00,}}, +{ 0x5B6B, {0x00,0x40,0xF1,0x80,0x1F,0x80,0x2E,0x80,0x22,0x80,0x41,0x40,0x6F,0xA0,0xC1,0x20,0x45,0x40,0x49,0x20,0x51,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x5B70, {0x21,0x00,0x31,0x00,0xFD,0x00,0x7F,0x80,0x4B,0x80,0x7D,0x80,0x03,0x80,0x79,0x80,0x1B,0x80,0xFA,0xA0,0x24,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x5B71, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x63,0x00,0x7F,0xC0,0x62,0x00,0x7F,0xE0,0x64,0x40,0x7F,0xE0,0x48,0xC0,0x98,0x80,0x00,0x00,}}, +{ 0x5B73, {0x21,0x00,0x13,0x00,0xFF,0xE0,0x7B,0xC0,0x39,0xC0,0x7F,0xE0,0x04,0x20,0x3F,0x80,0x06,0x00,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B75, {0x20,0x20,0x31,0xC0,0x7D,0xE0,0x76,0xA0,0x7C,0x00,0x7D,0xE0,0x74,0x40,0x74,0xC0,0xF7,0xE0,0xF8,0x80,0x70,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x5B78, {0x12,0x00,0x6B,0x80,0x7F,0x80,0x7B,0x80,0x77,0x80,0x6A,0x80,0x7F,0xE0,0xC0,0x40,0x9F,0x00,0x7F,0xC0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B7A, {0x00,0x00,0x77,0xC0,0x1F,0xE0,0x2F,0xE0,0x35,0xC0,0x61,0x00,0x7F,0xE0,0xE2,0x00,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x5B80, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x7F,0xE0,0x40,0x20,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x5B83, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x48,0x60,0x88,0x00,0x08,0x80,0x09,0x00,0x0E,0x00,0x08,0x00,0x08,0x20,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x5B85, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x81,0x00,0x06,0x00,0x38,0x00,0x08,0x00,0x0F,0xE0,0xF8,0x00,0x08,0x40,0x08,0x40,0x07,0xC0,0x00,0x00,}}, +{ 0x5B87, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x40,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5B88, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x40,0x01,0x00,0xFF,0xE0,0x01,0x00,0x21,0x00,0x11,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5B89, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x88,0x40,0x08,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x3A,0x00,0x07,0x00,0x18,0x80,0x60,0x40,0x00,0x00,}}, +{ 0x5B8B, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x84,0x20,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x15,0x00,0x64,0xC0,0x84,0x20,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5B8C, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9F,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5B8D, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x10,0x80,0x20,0x40,0xC0,0x40,0x00,0x00,}}, +{ 0x5B8F, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x88,0x00,0xFF,0xC0,0x08,0x00,0x12,0x00,0x12,0x00,0x24,0x00,0x45,0x80,0xBF,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x5B95, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0xFF,0xE0,0x10,0x00,0x10,0x00,0x3F,0x80,0x30,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5B97, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x5B98, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5B99, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x84,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5B9A, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0xFF,0xC0,0x04,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0x34,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x5B9B, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xA0,0x40,0x3B,0xC0,0x2A,0x40,0x2A,0x40,0x7A,0x40,0x92,0x80,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5B9C, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x80,0x40,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5B9D, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x3F,0x80,0x05,0x00,0x04,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5B9F, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x84,0x40,0x3F,0x80,0x04,0x00,0x3F,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5BA2, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9F,0x20,0x31,0x00,0x4A,0x00,0x0E,0x00,0x31,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5BA3, {0x04,0x00,0x7F,0xE0,0x80,0x00,0x3F,0x80,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x5BA4, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x00,0x3F,0xC0,0x11,0x00,0x7E,0x80,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5BA5, {0x08,0x00,0x08,0x00,0x7F,0xE0,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x30,0x80,0x3F,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5BA6, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x7F,0xE0,0xE4,0x00,0x7F,0x80,0x60,0x80,0x60,0x80,0x7F,0x80,0x64,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5BAE, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x40,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5BB0, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x84,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5BB3, {0x04,0x00,0x7F,0xE0,0xC4,0x40,0x3F,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5BB4, {0x04,0x00,0x7F,0xE0,0x80,0x40,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x19,0x00,0x0F,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0x5BB5, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x94,0x80,0x15,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x5BB6, {0x04,0x00,0x7F,0xE0,0x40,0x40,0xBF,0xC0,0x88,0x00,0x15,0x40,0x6F,0x40,0x37,0x80,0x4A,0x80,0x32,0x40,0xC2,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x5BB8, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x7F,0xC0,0x7F,0x80,0x60,0x00,0x7F,0xE0,0x6A,0x00,0x69,0x40,0x49,0x80,0x4E,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x5BB9, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x91,0x00,0x14,0x80,0x2A,0x80,0x11,0x00,0x60,0xC0,0xBF,0xA0,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5BBF, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x90,0x20,0x1F,0xC0,0x22,0x00,0x6F,0xC0,0xA8,0x40,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x5BC2, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xA0,0x00,0x3B,0xC0,0x22,0x40,0xFD,0x40,0x21,0x80,0x68,0x80,0xA5,0x80,0x22,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x5BC3, {0x04,0x00,0x7F,0xE0,0x8E,0x40,0x3E,0x00,0xFF,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x0A,0x80,0x1A,0xA0,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5BC4, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x0B,0x00,0x31,0x00,0xFF,0xE0,0x00,0x80,0x3C,0x80,0x24,0x80,0x3C,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x5BC5, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xBF,0xC0,0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x5BC6, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x8C,0x40,0x15,0x40,0x32,0x20,0x55,0xA0,0x1F,0x00,0x24,0x00,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5BC7, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x79,0xE0,0x81,0x00,0xFF,0xC0,0x72,0x40,0x71,0x80,0x71,0x80,0x57,0xC0,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x5BC9, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x90,0x00,0x32,0x00,0x3F,0xC0,0x62,0x00,0xFF,0x80,0xBF,0x80,0x3F,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5BCC, {0x04,0x00,0x7F,0xE0,0xBF,0xC0,0x1F,0x00,0x11,0x00,0x1F,0x00,0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5BD0, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xD1,0x00,0xD7,0xC0,0x71,0x00,0x5F,0xE0,0x13,0x80,0xF7,0x80,0x79,0x40,0x51,0x20,0x93,0x00,0x00,0x00,}}, +{ 0x5BD2, {0x04,0x00,0x7F,0xE0,0xD1,0x40,0xBF,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x15,0x00,0x62,0xC0,0x98,0x20,0x06,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5BD3, {0x04,0x00,0x7F,0xE0,0x80,0x40,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x5F,0x40,0x41,0xC0,0x40,0xC0,0x00,0x00,}}, +{ 0x5BD4, {0x04,0x00,0x7F,0xE0,0x9F,0x40,0x3F,0x80,0x3F,0x80,0x21,0x80,0x3F,0x00,0x00,0x00,0xFF,0xE0,0x67,0x80,0x5C,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5BDB, {0x04,0x00,0x7F,0xE0,0x91,0x00,0xFF,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x0A,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5BDD, {0x04,0x00,0x7F,0xE0,0x87,0xC0,0x20,0x80,0xA7,0x80,0x67,0x80,0x7F,0xE0,0x30,0x20,0x77,0xC0,0xA1,0x80,0x23,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x5BDE, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x3F,0x80,0x3F,0x00,0x21,0x80,0x3F,0x80,0x31,0x80,0x1F,0x00,0xFF,0xE0,0x1B,0x00,0x61,0xC0,0x00,0x00,}}, +{ 0x5BDF, {0x04,0x00,0x7F,0xE0,0xBC,0x40,0x2F,0xC0,0xDA,0x80,0x31,0x80,0x7F,0x60,0xC0,0x00,0x7F,0xC0,0x35,0x80,0xC4,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x5BE1, {0x04,0x00,0x7F,0xE0,0xBF,0x40,0x1F,0x00,0x31,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0xD1,0x60,0x26,0x00,0x00,0x00,}}, +{ 0x5BE2, {0x04,0x00,0x7F,0xE0,0xD7,0xC0,0xDF,0xE0,0x70,0xC0,0x57,0x80,0x1F,0xE0,0xF8,0x40,0x77,0x80,0x73,0x80,0x53,0x80,0x9C,0x60,0x00,0x00,}}, +{ 0x5BE4, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xD7,0xC0,0xD3,0x00,0x77,0x80,0x52,0x80,0x1F,0xE0,0xF7,0xC0,0x77,0xC0,0x57,0xC0,0x94,0x40,0x00,0x00,}}, +{ 0x5BE5, {0x04,0x00,0x7F,0xE0,0xFB,0xC0,0x3B,0x80,0x3B,0x80,0x2D,0x80,0x2A,0x00,0x33,0x80,0xDF,0xE0,0x1F,0x00,0x06,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x5BE6, {0x04,0x00,0x7F,0xE0,0x9F,0xC0,0xFF,0xE0,0x37,0x00,0x3F,0x00,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x5BE7, {0x04,0x00,0x7F,0xE0,0xCC,0x40,0x73,0x80,0x4F,0x40,0x7F,0x80,0x6A,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5BE8, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x35,0x80,0xFF,0xE0,0x9F,0x20,0x64,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x5BE9, {0x04,0x00,0x7F,0xE0,0xBF,0xC0,0x1F,0x00,0xFF,0xE0,0x15,0x00,0x3F,0x80,0xE4,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5BEB, {0x04,0x00,0x7F,0xE0,0xFB,0xC0,0x73,0x80,0x7B,0x80,0x60,0x80,0x3F,0x80,0x30,0x00,0xFF,0xC0,0xCF,0x40,0x6B,0xC0,0x41,0x80,0x00,0x00,}}, +{ 0x5BEE, {0x04,0x00,0x7F,0xE0,0x88,0x00,0xFF,0xE0,0x5F,0x40,0xE0,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x15,0x80,0x64,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x5BF0, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x7F,0x80,0x7F,0x80,0xFF,0xE0,0x3F,0x80,0x31,0x80,0x3F,0x00,0xF2,0x40,0x1D,0x80,0x20,0x60,0x00,0x00,}}, +{ 0x5BF3, {0x04,0x00,0x7F,0xE0,0xFB,0xC0,0xFF,0xC0,0x3B,0xC0,0x65,0xC0,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x71,0xC0,0x00,0x00,}}, +{ 0x5BF5, {0x04,0x00,0x7F,0xE0,0xF9,0xC0,0x51,0xC0,0xFD,0xC0,0x00,0x40,0x79,0xC0,0x49,0x00,0x79,0xC0,0x79,0xE0,0x49,0x20,0x59,0xE0,0x00,0x00,}}, +{ 0x5BF6, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xE0,0x3B,0xC0,0x63,0xC0,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x71,0xC0,0x00,0x00,}}, +{ 0x5BF8, {0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xE0,0x01,0x00,0x21,0x00,0x11,0x00,0x09,0x00,0x09,0x00,0x01,0x00,0x01,0x00,0x07,0x00,0x00,0x00,}}, +{ 0x5BFA, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x01,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5BFE, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x10,0x80,0x10,0x80,0x52,0x80,0x31,0x80,0x11,0x80,0x18,0x80,0x28,0x80,0x40,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x5BFF, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x08,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x31,0x00,0x49,0x00,0x89,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5C01, {0x20,0x80,0x20,0x80,0x78,0x80,0x27,0xE0,0xFC,0x80,0x22,0x80,0x21,0x80,0x79,0x80,0x20,0x80,0x38,0x80,0xE0,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5C02, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x01,0x00,0xFF,0xE0,0x11,0x00,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5C04, {0x10,0x40,0x20,0x40,0x7C,0x40,0x47,0xE0,0x7C,0x40,0x7E,0x40,0x45,0x40,0x7D,0x40,0xCC,0x40,0x34,0x40,0xC4,0x40,0x0C,0xC0,0x00,0x00,}}, +{ 0x5C05, {0x20,0x80,0x30,0x80,0xFC,0x80,0x7F,0xE0,0x48,0xC0,0x4A,0x80,0x79,0x80,0x71,0x80,0x70,0x80,0x50,0xA0,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x5C06, {0x20,0xC0,0x23,0x00,0x3E,0x40,0xA5,0x40,0x65,0x80,0x20,0x80,0x3F,0xE0,0x64,0x80,0xA2,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5C07, {0x11,0x00,0x53,0xC0,0x52,0x40,0x77,0x80,0x5B,0x80,0x13,0x80,0xF2,0x80,0x7F,0xE0,0x74,0x80,0x52,0x80,0x90,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5C08, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x64,0x80,0x3F,0x80,0x04,0xC0,0x7F,0xC0,0xFF,0xE0,0x33,0x00,0x13,0x00,0x00,0x00,}}, +{ 0x5C09, {0x00,0x40,0x7C,0x40,0x44,0x40,0x7D,0xE0,0x7C,0x40,0x41,0x40,0x7D,0xC0,0x50,0x40,0x78,0x40,0x74,0x40,0x90,0x40,0x30,0xC0,0x00,0x00,}}, +{ 0x5C0A, {0x21,0x00,0x12,0x00,0xFF,0xE0,0x3F,0x80,0x2A,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x01,0x00,0xFF,0xE0,0x11,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5C0B, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x00,0x80,0x3F,0x80,0x7B,0xC0,0x22,0x40,0xFB,0xC0,0x01,0x00,0xFF,0xE0,0x09,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5C0D, {0x28,0x40,0xAA,0x40,0x6E,0x40,0xFF,0xE0,0x64,0x40,0x29,0x40,0x7D,0xC0,0x10,0x40,0x7C,0x40,0x10,0x40,0x1C,0x40,0xE0,0xC0,0x00,0x00,}}, +{ 0x5C0E, {0x45,0x00,0x3F,0xE0,0x04,0x00,0xEF,0x80,0x2F,0x80,0x2F,0x80,0x68,0x80,0x9F,0xC0,0x01,0x00,0xFF,0xE0,0x09,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5C0F, {0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0x40,0x44,0x20,0x84,0x20,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5C11, {0x04,0x00,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0xE0,0x44,0xA0,0x85,0x00,0x0D,0x00,0x02,0x00,0x04,0x00,0x18,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x5C13, {0x20,0x00,0x20,0x00,0x3F,0xE0,0x7F,0xE0,0x44,0x00,0xA4,0x00,0x24,0x80,0x64,0xC0,0x44,0x40,0x84,0x40,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x5C16, {0x04,0x00,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x5C1A, {0x04,0x00,0x24,0x80,0x24,0x80,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5C20, {0x69,0x80,0x69,0x80,0x7D,0x80,0x7B,0xC0,0x6B,0xC0,0x7B,0xA0,0x6D,0xE0,0xFD,0xC0,0x70,0x80,0x7C,0x80,0x43,0x00,0x7C,0x00,0x00,0x00,}}, +{ 0x5C22, {0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x06,0x00,0x0A,0x00,0x0A,0x00,0x0A,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5C24, {0x04,0x80,0x04,0x40,0x04,0x40,0xFF,0xE0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x14,0x00,0x14,0x00,0x24,0x20,0x44,0x20,0x83,0xE0,0x00,0x00,}}, +{ 0x5C28, {0x61,0x80,0x71,0x00,0x69,0x00,0xFA,0x80,0x74,0x80,0x71,0xC0,0x71,0x40,0x72,0x80,0x70,0x80,0x51,0x20,0x52,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x5C2D, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x21,0x00,0x21,0x00,0xFF,0xE0,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5C31, {0x21,0x00,0x21,0x80,0xFD,0x40,0x7F,0xE0,0x49,0x00,0x49,0x00,0x79,0x80,0x22,0x80,0x72,0x80,0x6C,0xA0,0xA8,0xA0,0x20,0xE0,0x00,0x00,}}, +{ 0x5C38, {0x00,0x00,0x3F,0xE0,0x30,0x20,0x3F,0xE0,0x30,0x20,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x00,0x00,}}, +{ 0x5C39, {0x00,0x00,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x04,0xC0,0x04,0x80,0x3F,0x80,0x04,0x80,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x5C3A, {0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x24,0x00,0x22,0x00,0x22,0x00,0x21,0x00,0x40,0x80,0x80,0x60,0x00,0x00,}}, +{ 0x5C3B, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x44,0x40,0x44,0x00,0x7F,0x80,0x44,0x80,0x44,0x80,0x48,0xA0,0x90,0xA0,0xA0,0x60,0x00,0x00,}}, +{ 0x5C3C, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x48,0x40,0x48,0x00,0x49,0xC0,0x4E,0x00,0x48,0x00,0x48,0x20,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x5C3D, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x22,0x00,0x41,0x00,0x4C,0x80,0x82,0x60,0x1C,0x00,0x02,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5C3E, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x43,0xC0,0x5E,0x00,0x43,0x80,0x5E,0x00,0x43,0xE0,0x7E,0x00,0x42,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5C3F, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x42,0x00,0x42,0x40,0x5F,0x40,0x47,0x80,0x4A,0x80,0x72,0x40,0x82,0x20,0x06,0x00,0x00,0x00,}}, +{ 0x5C40, {0x00,0x00,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xE0,0x20,0x20,0x2F,0x20,0x29,0x20,0x4F,0x20,0x49,0x20,0x80,0xC0,0x00,0x00,}}, +{ 0x5C41, {0x00,0x00,0x7F,0xC0,0x60,0x40,0x7F,0xC0,0x73,0x40,0x71,0x00,0x71,0x20,0x7F,0x40,0x71,0x80,0x51,0x20,0x5D,0x20,0xF1,0xE0,0x00,0x00,}}, +{ 0x5C45, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x42,0x00,0x7F,0xE0,0x42,0x00,0x42,0x00,0x5F,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5C46, {0x00,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x31,0x00,0x39,0x20,0x3F,0xE0,0x39,0x20,0x3B,0xA0,0x2B,0xA0,0x2F,0xE0,0x48,0x20,0x00,0x00,}}, +{ 0x5C48, {0x00,0x00,0x3F,0xE0,0x20,0x20,0x3F,0xE0,0x29,0x40,0x29,0x40,0x2F,0xC0,0x29,0x40,0x31,0x20,0x31,0x20,0x5F,0xE0,0x10,0x20,0x00,0x00,}}, +{ 0x5C4A, {0x00,0x00,0x3F,0xE0,0x20,0x20,0x3F,0xE0,0x21,0x00,0x3F,0xE0,0x31,0x20,0x31,0x20,0x3F,0xE0,0x31,0x20,0x5F,0xE0,0x10,0x20,0x00,0x00,}}, +{ 0x5C4B, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0xC0,0x25,0x00,0x29,0x80,0x3E,0x40,0x44,0x00,0x5F,0x80,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5C4D, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x40,0x00,0x7F,0xE0,0x49,0x00,0x4F,0x40,0x53,0x80,0x6D,0x00,0x49,0x20,0x91,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x5C4E, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x72,0xC0,0x6A,0x80,0x6B,0x80,0x7F,0xE0,0x67,0x00,0x5A,0x80,0x72,0x60,0x82,0x00,0x00,0x00,}}, +{ 0x5C4F, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x64,0x80,0x7F,0xC0,0x65,0x80,0x65,0x80,0x7F,0xE0,0x49,0x80,0x51,0x80,0xA1,0x80,0x00,0x00,}}, +{ 0x5C50, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x69,0x80,0x77,0xE0,0x69,0x80,0x6F,0xC0,0x72,0x40,0x71,0x80,0x53,0x80,0x9C,0x60,0x00,0x00,}}, +{ 0x5C51, {0x00,0x00,0x3F,0xE0,0x20,0x20,0x3F,0xE0,0x35,0x40,0x3F,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x48,0x40,0x08,0x40,0x00,0x00,}}, +{ 0x5C53, {0x00,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x3F,0xC0,0x38,0x40,0x3F,0xC0,0x38,0x40,0x3F,0xC0,0x2F,0xC0,0x26,0xC0,0x58,0x20,0x00,0x00,}}, +{ 0x5C55, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x49,0x00,0x7F,0xC0,0x49,0x00,0x7F,0xE0,0x49,0x40,0x49,0x80,0x4E,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x5C5E, {0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x27,0xE0,0x39,0x00,0x2F,0xC0,0x29,0x40,0x3F,0xE0,0x31,0xA0,0x3F,0xE0,0x30,0x20,0x50,0x60,0x00,0x00,}}, +{ 0x5C60, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x42,0x80,0x5F,0x80,0x43,0x00,0x7F,0xE0,0x4F,0x80,0x58,0x80,0x6F,0x80,0x4F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x5C61, {0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x52,0x80,0x4B,0x00,0x7F,0xE0,0x4A,0x80,0x76,0x40,0x7F,0xE0,0x48,0x80,0x47,0x00,0xB8,0xC0,0x00,0x00,}}, +{ 0x5C64, {0x00,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x39,0x20,0x3F,0xE0,0x27,0xC0,0x27,0xC0,0x47,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x5C65, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x53,0xE0,0x5F,0x80,0x6B,0x80,0x52,0x80,0x73,0xC0,0x5F,0xC0,0x53,0x80,0x9E,0xE0,0x00,0x00,}}, +{ 0x5C6C, {0x00,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x3D,0xC0,0x3F,0xC0,0x3A,0xC0,0x3F,0xE0,0x3F,0xE0,0x3F,0xA0,0x23,0xA0,0x5F,0xC0,0x00,0x00,}}, +{ 0x5C6E, {0x04,0x00,0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x08,0x40,0x18,0x00,0x30,0x00,0x20,0x00,0x00,0x00,}}, +{ 0x5C6F, {0x08,0x00,0x09,0x80,0xFE,0x00,0x08,0x00,0x48,0x80,0x48,0x80,0x48,0x80,0x7F,0x80,0x48,0x80,0x08,0x20,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x5C71, {0x04,0x00,0x04,0x00,0x04,0x00,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,}}, +{ 0x5C76, {0x02,0x00,0x22,0x20,0x22,0x20,0x3F,0xE0,0x20,0x20,0x00,0x00,0x7F,0xE0,0x04,0x20,0x04,0x20,0x0C,0x20,0x18,0x20,0x60,0xC0,0x00,0x00,}}, +{ 0x5C79, {0x62,0x00,0x62,0x00,0x67,0xE0,0xF7,0xE0,0xF8,0x00,0xF7,0x80,0xF1,0x00,0xF3,0x00,0xF2,0x00,0xF4,0x20,0x84,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x5C8C, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7E,0x00,0x13,0x00,0x11,0x00,0x1F,0x80,0x10,0x80,0x29,0x00,0x27,0x00,0x4D,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x5C90, {0x01,0x00,0x21,0x00,0x2F,0xE0,0xB1,0x00,0xB1,0x00,0xBF,0xC0,0xB4,0x40,0xB2,0x80,0xF3,0x80,0x81,0x00,0x06,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x5C91, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x61,0x80,0xDF,0x60,0x3E,0x00,0x3F,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5C94, {0x1F,0x00,0x11,0x00,0xFF,0xE0,0x9F,0xA0,0x09,0x80,0x31,0x80,0x43,0x00,0x04,0x00,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5CA1, {0x00,0x00,0x7F,0xC0,0x51,0x40,0x52,0x40,0x7F,0xC0,0x44,0x40,0x55,0x40,0x55,0x40,0x5F,0x40,0x51,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5CA8, {0x00,0x00,0x27,0x80,0x24,0x80,0xB4,0x80,0xB7,0x80,0xB4,0x80,0xB4,0x80,0xB7,0x80,0xF4,0x80,0x84,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5CA9, {0x04,0x00,0x44,0x80,0x7F,0x80,0x00,0x00,0xFF,0xE0,0x10,0x00,0x10,0x00,0x3F,0x80,0x30,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5CAB, {0x30,0x80,0x30,0x80,0x30,0x80,0x7B,0xE0,0x7B,0xA0,0x7A,0xA0,0x7A,0xA0,0x7B,0xE0,0x7A,0xA0,0x7A,0xA0,0x43,0xE0,0x02,0x20,0x00,0x00,}}, +{ 0x5CAC, {0x00,0x00,0x27,0xE0,0x24,0xA0,0xB7,0xE0,0xB4,0xA0,0xB4,0xA0,0xB7,0xE0,0xB4,0xA0,0xF0,0x80,0x80,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5CB1, {0x22,0x80,0x22,0x40,0x6F,0xE0,0x61,0x00,0xA1,0x20,0x20,0xA0,0x04,0x60,0x04,0x00,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5CB3, {0x01,0x00,0x06,0x00,0x38,0x00,0x3F,0xC0,0x21,0x00,0x21,0x00,0xFF,0xE0,0x04,0x00,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5CB6, {0x30,0xC0,0x30,0x80,0x33,0xE0,0x7B,0xE0,0x7A,0x20,0x7A,0x20,0x7B,0xE0,0x7A,0x20,0x7A,0x20,0x7A,0x20,0x43,0xE0,0x02,0x20,0x00,0x00,}}, +{ 0x5CB7, {0x60,0x00,0x67,0xC0,0x64,0x40,0xF7,0xC0,0xF5,0xC0,0xF5,0x80,0xF7,0xE0,0xF5,0x80,0xF4,0x80,0xF4,0xA0,0x86,0x60,0x18,0x20,0x00,0x00,}}, +{ 0x5CB8, {0x04,0x00,0x44,0x80,0x7F,0x80,0x00,0x00,0x7F,0xE0,0x40,0x00,0x5F,0x80,0x42,0x00,0x5F,0xC0,0x42,0x00,0x82,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5CBB, {0x60,0xC0,0x67,0x80,0x65,0x80,0xF5,0x80,0xF7,0xE0,0xF5,0x80,0xF4,0x80,0xF4,0x80,0xF6,0x80,0xFC,0x60,0x8F,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x5CBC, {0x60,0x00,0x6F,0xC0,0x61,0x00,0xF5,0x40,0xF9,0x40,0xF1,0x00,0xFF,0xE0,0xF1,0x00,0xF1,0x00,0xF1,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5CBE, {0x61,0x00,0x61,0x00,0x61,0xE0,0xF1,0xE0,0xF1,0x00,0xF1,0x00,0xF7,0xC0,0xF4,0x40,0xF4,0x40,0xF4,0x40,0x87,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x5CC5, {0x61,0x00,0x63,0x00,0x62,0xC0,0xFF,0xE0,0xF2,0x80,0xF2,0x80,0xF2,0x80,0xFF,0xE0,0xF6,0x80,0x84,0x80,0x08,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5CC7, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x7F,0x80,0xC0,0x60,0x3F,0x80,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x5CD9, {0x61,0x00,0x63,0x00,0x67,0xC0,0xF1,0x00,0xFF,0xE0,0xF0,0x80,0xF0,0x80,0xFF,0xE0,0xF4,0x80,0xF2,0x80,0x80,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5CE0, {0x01,0x00,0x21,0x00,0x21,0xC0,0xB1,0x00,0xBF,0xE0,0xB0,0x00,0xBF,0xE0,0xB1,0x80,0xB1,0x40,0xF1,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5CE1, {0x01,0x00,0x21,0x00,0x2F,0xC0,0xB9,0x40,0xB5,0x40,0xB5,0x80,0xBF,0xE0,0xB3,0x00,0xF2,0x80,0x84,0x80,0x08,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x5CE8, {0x01,0x00,0x22,0xC0,0x2E,0xA0,0xB2,0x80,0xBF,0xE0,0xB2,0xA0,0xB2,0xC0,0xB3,0xC0,0xBE,0x80,0xFB,0xA0,0x82,0x60,0x06,0x20,0x00,0x00,}}, +{ 0x5CE9, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x18,0x40,0x71,0x40,0x21,0x00,0xFF,0xE0,0x31,0x40,0xF9,0xC0,0xE1,0xA0,0x26,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x5CEA, {0x62,0x80,0x62,0xC0,0x6C,0x40,0xF9,0x00,0xF3,0x00,0xF3,0x80,0xF4,0x80,0xFF,0xC0,0xF4,0xA0,0xF4,0x80,0x87,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x5CED, {0x61,0x00,0x65,0xC0,0x6D,0x60,0xF9,0x20,0xF7,0xC0,0xF4,0x40,0xF7,0xC0,0xF4,0x40,0xF7,0xC0,0x84,0x40,0x04,0x40,0x04,0xC0,0x00,0x00,}}, +{ 0x5CEF, {0x24,0x80,0x3F,0x80,0x0F,0x00,0x73,0x00,0x0E,0x00,0x35,0x00,0xDE,0xE0,0x04,0x00,0x1F,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5CF0, {0x01,0x00,0x23,0xC0,0x2E,0x80,0xB3,0x80,0xBD,0x60,0xB7,0xC0,0xB1,0x00,0xB7,0x80,0xF1,0x00,0x8F,0xE0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5CF6, {0x04,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x49,0x20,0x7F,0x20,0x41,0xC0,0x00,0x00,}}, +{ 0x5CFA, {0x60,0x00,0x6F,0xE0,0x67,0xC0,0xF7,0xC0,0xF7,0xC0,0xF5,0x40,0xF7,0xC0,0xFD,0x40,0xF6,0x00,0xF2,0x00,0x8D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x5CFB, {0x01,0x00,0x22,0xC0,0x2F,0xE0,0xB2,0x80,0xB2,0xA0,0xB4,0xE0,0xBB,0x80,0xB2,0x80,0xFD,0x00,0x83,0x00,0x0C,0xC0,0x30,0x20,0x00,0x00,}}, +{ 0x5CFD, {0x61,0x00,0x63,0x00,0x6F,0xE0,0xF5,0x80,0xF5,0x80,0xFB,0xC0,0xF9,0x20,0xF3,0x20,0xF3,0x80,0xF4,0x80,0x88,0x40,0x10,0x20,0x00,0x00,}}, +{ 0x5D07, {0x24,0x80,0x24,0x80,0x3F,0x80,0x7F,0xE0,0x40,0x40,0xBF,0x00,0x00,0x00,0xFF,0xE0,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x5D0B, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x35,0x80,0xFF,0xE0,0x25,0x80,0x35,0x80,0x7F,0xC0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5D0E, {0x20,0x80,0x20,0x80,0x27,0xE0,0x69,0x80,0x6A,0x40,0x6F,0xE0,0x68,0x40,0x6B,0xC0,0x7A,0xC0,0x7B,0xC0,0x40,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x5D11, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x60,0x80,0x7F,0x80,0x60,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0x20,0x72,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x5D14, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x12,0x00,0x3F,0xC0,0x22,0x00,0x7F,0x80,0xBF,0x80,0x3F,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5D15, {0x60,0x00,0x67,0xE0,0x67,0xC0,0xF7,0xC0,0xF5,0x80,0xF7,0xE0,0xF5,0x80,0xF5,0x80,0xF7,0xC0,0xF9,0x80,0x8F,0xE0,0x10,0x00,0x00,0x00,}}, +{ 0x5D16, {0x04,0x00,0x24,0x80,0x3F,0x80,0x7F,0xE0,0x42,0x00,0x5F,0x80,0x42,0x00,0x5F,0xC0,0x4F,0x80,0x42,0x00,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5D17, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x53,0x40,0x4A,0x40,0x7F,0xC0,0x44,0x40,0x65,0xC0,0x7F,0xC0,0x71,0xC0,0x40,0xC0,0x00,0x00,}}, +{ 0x5D18, {0x61,0x00,0x63,0x00,0x66,0x80,0xFF,0xC0,0xF0,0x20,0xFF,0xC0,0xFB,0xC0,0xFB,0xC0,0xFF,0xC0,0xFB,0xC0,0x8B,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x5D19, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x13,0x00,0x3F,0x80,0xC0,0x60,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x6A,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5D1A, {0x61,0x00,0x67,0xC0,0x6F,0xE0,0xFF,0xE0,0xF3,0xA0,0xF5,0xE0,0xF9,0x00,0xF3,0x80,0xFC,0x80,0xFB,0x00,0x87,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x5D1B, {0x60,0x00,0x67,0xE0,0x64,0x20,0xF7,0xE0,0xF5,0x80,0xF7,0xC0,0xF7,0xC0,0xF7,0xC0,0xF9,0x80,0x9D,0xA0,0x37,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x5D1F, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x13,0x00,0x3F,0x80,0xC4,0x60,0x3F,0x80,0x15,0x80,0x15,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x5D22, {0x60,0xC0,0x67,0xC0,0x65,0x60,0xF8,0x20,0xF7,0xC0,0xF1,0x40,0xFF,0xE0,0xF3,0x40,0xF7,0xC0,0xF1,0x00,0x81,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x5D29, {0x02,0x00,0x12,0x40,0x1F,0xC0,0x00,0x00,0x1C,0xE0,0x14,0xA0,0x1C,0xE0,0x14,0xA0,0x1C,0xE0,0x25,0x20,0x25,0x20,0x4E,0x60,0x00,0x00,}}, +{ 0x5D4B, {0x30,0x00,0x33,0xE0,0x32,0xE0,0x7B,0xE0,0x7A,0x00,0x7A,0xE0,0x7A,0xA0,0x7A,0xE0,0x7A,0xE0,0x7C,0xE0,0x44,0xE0,0x08,0xA0,0x00,0x00,}}, +{ 0x5D4C, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x51,0x00,0xFD,0xE0,0x53,0xC0,0x55,0x80,0x71,0x80,0x52,0x80,0x74,0x40,0x58,0x20,0x00,0x00,}}, +{ 0x5D4E, {0x30,0x00,0x33,0xC0,0x33,0xC0,0x7B,0xC0,0x7A,0xC0,0x7B,0xC0,0x78,0x80,0x7F,0xE0,0x7C,0xE0,0x7F,0xE0,0x44,0x20,0x04,0x60,0x00,0x00,}}, +{ 0x5D50, {0x24,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x23,0x80,0x3C,0x80,0x3F,0x80,0x35,0x80,0x5F,0x80,0x47,0xA0,0x79,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x5D52, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x1F,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x04,0x00,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5D5C, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x80,0x7C,0x80,0x7C,0x80,0x64,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5D69, {0x04,0x00,0x24,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x5D6C, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x3F,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0x0B,0xC0,0x1B,0xE0,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x5D6F, {0x04,0x40,0x42,0x80,0x4F,0xE0,0xD7,0xC0,0xD1,0x00,0xDF,0xE0,0xD2,0x00,0xD7,0xC0,0xF9,0x00,0x91,0x00,0x2F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5D73, {0x04,0x00,0x44,0x40,0x7F,0xC0,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x5D76, {0x30,0x00,0x37,0xE0,0x31,0x20,0x7F,0xE0,0x7D,0x80,0x7C,0x80,0x7F,0xE0,0x7B,0x60,0x7F,0xE0,0x7F,0xE0,0x41,0x20,0x06,0x40,0x00,0x00,}}, +{ 0x5D82, {0x61,0x00,0x6F,0xC0,0x6F,0xE0,0xFF,0xE0,0xF7,0x80,0xF4,0x80,0xF7,0x80,0xF4,0x80,0xF7,0x80,0xFF,0xE0,0x83,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x5D84, {0x04,0x00,0x44,0x40,0x7F,0xC0,0xFC,0xC0,0x33,0x00,0x7A,0x00,0x6B,0xE0,0x7A,0x80,0x7A,0x80,0x7C,0x80,0xFC,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x5D87, {0x60,0x00,0x6F,0xE0,0x6B,0x80,0xFB,0x80,0xFB,0x80,0xF8,0x00,0xFF,0xC0,0xFD,0xC0,0xFF,0xC0,0xFF,0xC0,0x8F,0xE0,0x08,0x00,0x00,0x00,}}, +{ 0x5D8B, {0x01,0x00,0x27,0x80,0x24,0x80,0xB7,0x80,0xB7,0x80,0xB4,0x00,0xB7,0xE0,0xB4,0x00,0xFF,0xE0,0x8F,0xA0,0x12,0x60,0x20,0xC0,0x00,0x00,}}, +{ 0x5D8C, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x1F,0x00,0x31,0x80,0x3F,0x80,0x3F,0x00,0x30,0x00,0x3F,0xE0,0x3F,0xC0,0x57,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x5D90, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x73,0xC0,0x5E,0xC0,0x61,0x80,0x6E,0xE0,0x77,0xC0,0x57,0xC0,0x7F,0x80,0x43,0x00,0x5F,0xE0,0x00,0x00,}}, +{ 0x5D9D, {0x63,0x80,0x61,0xC0,0x66,0x80,0xF7,0xE0,0xF8,0x40,0xF7,0xA0,0xF4,0x80,0xF4,0x80,0xF7,0x80,0x86,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5DA2, {0x61,0x00,0x6F,0xC0,0x6F,0xE0,0xFF,0xE0,0xFE,0xC0,0xF4,0x80,0xF7,0xE0,0xF8,0x00,0xFF,0xE0,0x83,0xA0,0x05,0xA0,0x18,0xE0,0x00,0x00,}}, +{ 0x5DAC, {0x64,0x40,0x62,0xC0,0x6F,0xE0,0xF7,0xC0,0xF3,0x00,0xFF,0xE0,0xF3,0xC0,0xFD,0xA0,0xFF,0xE0,0xFC,0xE0,0x84,0xE0,0x0F,0x20,0x00,0x00,}}, +{ 0x5DAE, {0x61,0x00,0x63,0x00,0x63,0x80,0xF4,0x80,0xFF,0xC0,0xF0,0x20,0xFF,0xC0,0xFB,0xC0,0xFE,0xC0,0x86,0x80,0x0A,0xC0,0x11,0x20,0x00,0x00,}}, +{ 0x5DB7, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x73,0xC0,0x4B,0xC0,0x79,0x80,0x47,0xE0,0xF9,0xC0,0xFB,0xC0,0xFB,0xC0,0x37,0x80,0xC9,0xE0,0x00,0x00,}}, +{ 0x5DBA, {0x24,0x80,0x24,0x80,0x3F,0x80,0x37,0xE0,0x29,0x00,0x7B,0xC0,0x42,0x40,0xFB,0xC0,0x2A,0x40,0x2B,0xC0,0x33,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x5DBC, {0x61,0x00,0x63,0xC0,0x65,0x40,0xF7,0xC0,0xF5,0xC0,0xF5,0xC0,0xF7,0xC0,0xF5,0xC0,0xFF,0xE0,0xFF,0xE0,0x84,0x40,0x08,0x40,0x00,0x00,}}, +{ 0x5DBD, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x2E,0xE0,0x7F,0xA0,0x61,0xE0,0x6E,0x80,0xAE,0x80,0x64,0x80,0xAF,0xC0,0x2F,0x40,0x6A,0x20,0x00,0x00,}}, +{ 0x5DC9, {0x61,0x80,0x63,0x80,0x6F,0xC0,0xF7,0xC0,0xF7,0xC0,0xF7,0xA0,0xFD,0xE0,0xF3,0x80,0xFF,0x80,0xF7,0xA0,0x83,0xE0,0x0C,0xE0,0x00,0x00,}}, +{ 0x5DCC, {0x04,0x00,0x24,0x40,0x3F,0xC0,0x1D,0x80,0x7F,0xE0,0x49,0x00,0x7D,0xE0,0x57,0x40,0x5C,0xC0,0x5C,0x80,0x75,0x40,0x86,0x20,0x00,0x00,}}, +{ 0x5DCD, {0x04,0x00,0x44,0x40,0x7F,0xC0,0x77,0x80,0xFF,0x80,0x77,0x80,0x6D,0x80,0xB7,0x80,0xFB,0xC0,0x73,0xE0,0x37,0x20,0x69,0xE0,0x00,0x00,}}, +{ 0x5DD2, {0x6E,0x80,0x7F,0xC0,0xE7,0xC0,0x6E,0xC0,0xF3,0xE0,0x6F,0xC0,0xFB,0xA0,0x0E,0x80,0x04,0x00,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x5DD3, {0x44,0x40,0x7F,0xC0,0x7F,0xE0,0x7F,0xE0,0xFB,0xC0,0xEA,0x40,0xFB,0xC0,0xFA,0x40,0xFB,0xC0,0xFB,0xC0,0x73,0x40,0xCE,0x20,0x00,0x00,}}, +{ 0x5DD6, {0x44,0x40,0x7F,0xC0,0x7B,0x80,0x7B,0x80,0x7F,0xE0,0x7D,0x80,0x51,0x80,0x7F,0xE0,0x7F,0xC0,0x7E,0x80,0x7F,0xC0,0x86,0x20,0x00,0x00,}}, +{ 0x5DDB, {0x11,0x20,0x11,0x20,0x11,0x20,0x12,0x20,0x32,0x40,0x24,0x40,0x48,0x80,0x24,0x40,0x32,0x40,0x13,0x20,0x11,0x20,0x11,0x20,0x00,0x00,}}, +{ 0x5DDD, {0x10,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x5DDE, {0x10,0x20,0x11,0x20,0x11,0x20,0x19,0x20,0x3D,0xA0,0x35,0x60,0x51,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x20,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x5DE1, {0x09,0x40,0x89,0x40,0x4A,0x40,0x12,0x80,0x34,0x80,0x12,0x80,0xEA,0x80,0x29,0x40,0x29,0x40,0x20,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5DE3, {0x28,0x80,0x15,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x15,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x5DE5, {0x00,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x5DE6, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x08,0x00,0x08,0x00,0x10,0x00,0x1F,0x80,0x22,0x00,0x22,0x00,0x42,0x00,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5DE7, {0x00,0x00,0x1F,0xE0,0xF2,0x00,0x22,0x00,0x23,0xC0,0x24,0x40,0x24,0x40,0x30,0x40,0x60,0x40,0x80,0x40,0x00,0x40,0x01,0x80,0x00,0x00,}}, +{ 0x5DE8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7F,0x80,0x40,0x00,0x40,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x5DEB, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x25,0x80,0x25,0x80,0x25,0x80,0x35,0x80,0x6F,0xC0,0x4E,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5DEE, {0x20,0x80,0x11,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x10,0x00,0x3F,0xC0,0x42,0x00,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5DF1, {0x00,0x00,0x7F,0x80,0x00,0x80,0x00,0x80,0x7F,0x80,0x40,0x80,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x40,0x40,0x40,0x7F,0xC0,0x00,0x00,}}, +{ 0x5DF2, {0x00,0x00,0x7F,0x80,0x00,0x80,0x00,0x80,0x40,0x80,0x7F,0x80,0x40,0x80,0x40,0x00,0x40,0x00,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,}}, +{ 0x5DF3, {0x00,0x00,0x7F,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7F,0x80,0x40,0x80,0x40,0x00,0x40,0x00,0x40,0x40,0x40,0x40,0x7F,0xC0,0x00,0x00,}}, +{ 0x5DF4, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x40,0x00,0x40,0x00,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,}}, +{ 0x5DF5, {0x01,0x80,0x7F,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0x80,0x72,0x80,0x72,0x80,0x7F,0x80,0x70,0x00,0x50,0x20,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x5DF7, {0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x61,0x40,0xBF,0x20,0x20,0x00,0x20,0x80,0x1F,0x80,0x00,0x00,}}, +{ 0x5DFB, {0x24,0x80,0x24,0x80,0x7F,0xC0,0x0A,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0xC1,0x60,0x3F,0x00,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0x5DFD, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x42,0x00,0x4A,0x40,0x79,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x5DFE, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0xC0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5E02, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5E03, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x0A,0x00,0x12,0x00,0x3F,0xC0,0x22,0x40,0x62,0x40,0xA2,0x40,0x22,0x40,0x22,0xC0,0x02,0x00,0x00,0x00,}}, +{ 0x5E06, {0x20,0x00,0x27,0x80,0xF4,0x80,0xB4,0x80,0xB6,0x80,0xB5,0x80,0xB5,0x80,0xB5,0x80,0xB4,0x80,0x28,0xA0,0x28,0xA0,0x30,0x60,0x00,0x00,}}, +{ 0x5E0B, {0x01,0x80,0x7F,0x00,0x7F,0xE0,0x7F,0xE0,0x7B,0x20,0xE4,0xE0,0x04,0x20,0x7F,0x80,0x64,0x80,0x64,0x80,0x67,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E0C, {0x19,0x00,0x07,0x00,0x7D,0x80,0x08,0x00,0xFF,0xE0,0x12,0x00,0x3F,0xC0,0x62,0x40,0xA2,0x40,0x22,0x40,0x22,0xC0,0x02,0x00,0x00,0x00,}}, +{ 0x5E11, {0x20,0x00,0x30,0x00,0xFF,0xC0,0x6A,0x40,0x71,0x80,0x1B,0x80,0x64,0x60,0xFF,0x80,0x64,0x80,0x64,0x80,0x65,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E16, {0x21,0x00,0x21,0x00,0xF1,0xE0,0xB1,0x00,0xB1,0x00,0xB1,0x00,0xB7,0xC0,0xB4,0x40,0xB4,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x5E19, {0x61,0x00,0x65,0x00,0xF7,0xC0,0xF7,0xC0,0xF9,0x00,0xF1,0x00,0xFF,0xE0,0xF3,0x00,0xE3,0x80,0x64,0x80,0x68,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x5E1A, {0x00,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x00,0x00,0x7F,0xE0,0xC4,0x40,0xFF,0x80,0x64,0x80,0x65,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E1B, {0x04,0x00,0x08,0x00,0x7F,0x80,0x7F,0x80,0x60,0x80,0x7F,0x80,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x5E1D, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xE0,0x44,0x40,0xBF,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E25, {0x21,0x00,0x41,0x00,0xF7,0xE0,0x95,0x20,0xF5,0x20,0x95,0x20,0x85,0x20,0xF5,0x20,0x95,0x20,0xF1,0x40,0x91,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x5E2B, {0x40,0x00,0x8F,0xE0,0xF1,0x00,0x97,0xC0,0xF5,0x40,0x95,0x40,0x85,0x40,0xF5,0x40,0x95,0x40,0xF1,0x00,0x91,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x5E2D, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x4F,0x80,0x42,0x00,0x5F,0xC0,0x52,0x40,0x52,0x40,0x92,0xC0,0x02,0x00,0x00,0x00,}}, +{ 0x5E2F, {0x24,0x80,0x24,0x80,0xFF,0xE0,0x3F,0x80,0x00,0x00,0x7F,0xE0,0x44,0x40,0xBF,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E30, {0x2F,0xC0,0x20,0x40,0xA7,0xC0,0xA0,0x40,0xAF,0xC0,0xA0,0x00,0xBF,0xE0,0x31,0x20,0x2F,0xC0,0x49,0x40,0x49,0xC0,0x81,0x00,0x00,0x00,}}, +{ 0x5E33, {0x20,0x00,0x27,0xC0,0xF4,0x00,0xB7,0x80,0xB7,0x80,0xB4,0x00,0xBF,0xE0,0xB5,0x40,0xB4,0x80,0x25,0x80,0x26,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x5E36, {0x2B,0x80,0x3B,0x80,0xFF,0xE0,0x2F,0xC0,0x20,0xC0,0x7F,0xE0,0x44,0x40,0xFF,0x80,0x64,0x80,0x64,0x80,0x65,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E37, {0x62,0x80,0x62,0x80,0xF7,0xE0,0xF7,0xE0,0xFD,0x80,0xF7,0xC0,0xF5,0x80,0xF5,0x80,0xF7,0xC0,0x65,0x80,0x67,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x5E38, {0x24,0x80,0x15,0x00,0x7F,0xE0,0x9F,0x20,0x11,0x00,0x1F,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E3D, {0x17,0xE0,0x14,0x20,0x7F,0xE0,0x5C,0x20,0x5F,0xE0,0x5B,0xC0,0x5A,0x40,0x5B,0xC0,0x5A,0x40,0x13,0xC0,0x13,0xC0,0x12,0x40,0x00,0x00,}}, +{ 0x5E40, {0x61,0x00,0x61,0x00,0xF1,0xE0,0xF7,0xC0,0xF4,0x40,0xF7,0xC0,0xF4,0x40,0xF7,0xC0,0xF7,0xC0,0x67,0xC0,0x62,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x5E43, {0x62,0x00,0x6F,0x80,0xFF,0xE0,0xFF,0xE0,0xF7,0x80,0xF4,0x80,0xF7,0x80,0xF1,0x80,0xF7,0xC0,0x7F,0xE0,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x5E44, {0x60,0x00,0x67,0xC0,0xF7,0xC0,0xF7,0xC0,0xF7,0xE0,0xF5,0x80,0xF5,0xC0,0xF7,0xC0,0xF7,0xC0,0x6F,0xC0,0x6F,0xE0,0x70,0x00,0x00,0x00,}}, +{ 0x5E45, {0x10,0x00,0x17,0xE0,0x7B,0xC0,0x5A,0x40,0x5B,0xC0,0x58,0x00,0x5F,0xE0,0x5C,0xA0,0x5F,0xE0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x5E47, {0x20,0x80,0x78,0xC0,0xFF,0xE0,0xFA,0x80,0x78,0x80,0x3C,0x80,0xE4,0x00,0x7F,0x80,0x64,0x80,0x64,0x80,0x65,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E4C, {0x20,0x00,0x27,0xC0,0xF4,0x40,0xB7,0xC0,0xB7,0xC0,0xB9,0x40,0xB5,0x80,0xBF,0xE0,0xB3,0x00,0x25,0x20,0x29,0x20,0x30,0xE0,0x00,0x00,}}, +{ 0x5E4E, {0x60,0x00,0x6F,0xE0,0xFF,0xC0,0xF7,0x80,0xF7,0x80,0xF4,0x80,0xF7,0x80,0xF3,0x00,0xFF,0xE0,0x62,0x00,0x64,0x40,0x78,0x40,0x00,0x00,}}, +{ 0x5E54, {0x60,0x00,0x67,0x80,0xF7,0x80,0xF7,0x80,0xF7,0x80,0xFF,0xC0,0xFB,0xC0,0xFF,0xC0,0xF7,0x80,0x63,0x80,0x63,0x80,0x7C,0x60,0x00,0x00,}}, +{ 0x5E55, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0,0x15,0x00,0x7F,0xC0,0xA4,0xA0,0x24,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E57, {0x30,0x00,0x37,0xE0,0x7C,0xE0,0x7F,0xE0,0x7D,0xA0,0x7F,0xE0,0x7E,0xE0,0x7F,0xE0,0x7F,0xE0,0x37,0xE0,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x5E5F, {0x63,0x80,0x63,0xC0,0xFF,0xC0,0xF7,0x80,0xFF,0xE0,0xF1,0x80,0xFF,0xC0,0xFB,0xC0,0xFF,0xC0,0x6F,0xA0,0x69,0xE0,0x61,0x20,0x00,0x00,}}, +{ 0x5E61, {0x40,0xC0,0x4F,0x40,0xF9,0x40,0xDF,0xE0,0xD3,0x80,0xD5,0x80,0xDF,0xC0,0xD5,0xA0,0xD7,0x80,0x45,0x80,0x47,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x5E62, {0x61,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0xF7,0x80,0xF7,0x80,0xF5,0x80,0xF7,0x80,0xFF,0xC0,0x67,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5E63, {0x21,0x00,0xA9,0x00,0x73,0xE0,0xFF,0x40,0xF9,0x80,0xEF,0x40,0x84,0x20,0x3F,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x5E64, {0x21,0x00,0xE9,0x00,0xFF,0xE0,0xFE,0x40,0xF5,0x80,0xF7,0x60,0x84,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x5E72, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5E73, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x24,0x80,0x24,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5E74, {0x20,0x00,0x20,0x00,0x7F,0xC0,0x42,0x00,0xBF,0x80,0x12,0x00,0x12,0x00,0x12,0x00,0xFF,0xE0,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5E75, {0x00,0x00,0x7B,0xC0,0x21,0x80,0x21,0x80,0x21,0x80,0xFF,0xE0,0x21,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x5E76, {0x21,0x80,0x11,0x00,0x7F,0xC0,0x7F,0xC0,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x5E78, {0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x20,0x80,0x11,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x5E79, {0x21,0x80,0x21,0x80,0xFE,0x40,0x78,0x20,0x4B,0xC0,0x78,0x80,0x48,0x80,0x7F,0xE0,0x20,0x80,0xF8,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5E7A, {0x02,0x00,0x02,0x00,0x04,0x00,0x28,0x80,0x18,0x80,0x05,0x80,0x03,0x00,0x02,0x00,0x04,0x80,0x19,0xC0,0x7E,0x20,0x00,0x20,0x00,0x00,}}, +{ 0x5E7B, {0x10,0x00,0x13,0xE0,0x10,0x20,0x64,0x20,0x34,0x20,0x18,0x20,0x08,0x20,0x18,0x20,0x14,0x20,0x7E,0x20,0x02,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x5E7C, {0x10,0x80,0x10,0x80,0x10,0x80,0x27,0xE0,0x68,0xA0,0x28,0xA0,0x10,0xA0,0x18,0xA0,0x25,0x20,0x3D,0x20,0x62,0x20,0x04,0x40,0x00,0x00,}}, +{ 0x5E7D, {0x04,0x00,0x15,0x80,0x77,0x40,0x6F,0x40,0x6D,0xC0,0x55,0xC0,0x5D,0xC0,0x6E,0xC0,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,}}, +{ 0x5E7E, {0x65,0x80,0x55,0x40,0xF7,0xC0,0x35,0x80,0x2D,0x40,0xFF,0xE0,0x04,0x80,0x7F,0xE0,0x32,0x80,0x2B,0x20,0x46,0xA0,0x98,0x60,0x00,0x00,}}, +{ 0x5E7F, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x00,0x00,}}, +{ 0x5E81, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x40,0x00,0x5F,0xE0,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x5E83, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x42,0x00,0x42,0x00,0x42,0x00,0x44,0x00,0x44,0x00,0x48,0x80,0x48,0xC0,0x5F,0x20,0x80,0x20,0x00,0x00,}}, +{ 0x5E84, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x42,0x00,0x42,0x00,0x42,0x00,0x5F,0xC0,0x42,0x00,0x42,0x00,0x42,0x00,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x5E87, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x50,0x00,0x51,0x00,0x51,0x20,0x5F,0x40,0x51,0x80,0x51,0x00,0x55,0x20,0x59,0x20,0xA1,0xE0,0x00,0x00,}}, +{ 0x5E8A, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x42,0x00,0x42,0x00,0x7F,0xE0,0x47,0x00,0x46,0x80,0x4A,0x80,0x52,0x40,0x62,0x20,0x82,0x00,0x00,0x00,}}, +{ 0x5E8F, {0x02,0x00,0x7F,0xE0,0x40,0x00,0x5F,0xC0,0x44,0x80,0x43,0x00,0x7F,0xE0,0x42,0x40,0x42,0x00,0x42,0x00,0x82,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x5E95, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x43,0x80,0x5D,0x00,0x51,0x00,0x5F,0xE0,0x51,0x00,0x58,0x80,0x70,0xA0,0x7F,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x5E96, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x4F,0xC0,0x48,0x40,0x5F,0x40,0x61,0x40,0x4F,0x40,0x49,0x80,0x48,0x20,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x5E97, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x42,0x00,0x43,0xE0,0x42,0x00,0x42,0x00,0x5F,0xC0,0x50,0x40,0x50,0x40,0x9F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x5E9A, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x5F,0x80,0x42,0x80,0x7F,0xE0,0x42,0x80,0x5F,0x80,0x42,0x00,0x45,0x00,0x48,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x5E9C, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x44,0x80,0x48,0x80,0x4F,0xE0,0x58,0x80,0x6A,0x80,0x49,0x80,0x48,0x80,0x48,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x5EA0, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x65,0x00,0x7F,0xC0,0x62,0x00,0x7F,0x80,0x62,0x00,0x7F,0xE0,0x7F,0xE0,0x42,0x00,0x82,0x00,0x00,0x00,}}, +{ 0x5EA6, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x49,0x00,0x7F,0xE0,0x4F,0x00,0x40,0x00,0x7F,0x80,0x49,0x00,0x46,0x00,0x8D,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x5EA7, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x52,0x80,0x52,0x80,0x5A,0xC0,0x67,0x20,0x62,0x20,0x5F,0x80,0x42,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5EAB, {0x02,0x00,0x7F,0xE0,0x5F,0xC0,0x42,0x00,0x5F,0x80,0x52,0x80,0x5F,0x80,0x52,0x80,0x5F,0x80,0x7F,0xE0,0x82,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5EAD, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x78,0xC0,0x4B,0x80,0x70,0x80,0x7F,0xE0,0x68,0x80,0x5B,0xC0,0x48,0x00,0x56,0x00,0xA1,0xE0,0x00,0x00,}}, +{ 0x5EB5, {0x02,0x00,0x7F,0xE0,0x42,0x00,0x7F,0xE0,0x4B,0x00,0x72,0xC0,0x5F,0xA0,0x52,0x80,0x5F,0x80,0x5F,0x80,0x52,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x5EB6, {0x02,0x00,0x02,0x00,0x3F,0xE0,0x24,0x80,0x3F,0xE0,0x24,0x80,0x24,0x80,0x27,0x80,0x44,0x00,0x48,0x40,0xA5,0x20,0x24,0xA0,0x00,0x00,}}, +{ 0x5EB7, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x5F,0x80,0x42,0x80,0x7F,0xE0,0x42,0x80,0x5F,0xC0,0x43,0x40,0x4E,0x80,0xB2,0x60,0x06,0x00,0x00,0x00,}}, +{ 0x5EB8, {0x02,0x00,0x7F,0xE0,0x5F,0x80,0x42,0x80,0x7F,0xE0,0x7F,0x80,0x42,0x00,0x5F,0x80,0x5F,0x80,0x5F,0x80,0x92,0x80,0x12,0x80,0x00,0x00,}}, +{ 0x5EC1, {0x02,0x00,0x7F,0xE0,0x6C,0x00,0x7E,0x40,0x7F,0xC0,0x73,0xC0,0x7F,0xC0,0x73,0xC0,0x7F,0xC0,0x4E,0x40,0x52,0x40,0xA0,0xC0,0x00,0x00,}}, +{ 0x5EC2, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x69,0xC0,0x7F,0x40,0x69,0x40,0x6D,0xC0,0x7B,0x40,0x7B,0xC0,0x69,0x40,0x49,0xC0,0x89,0x40,0x00,0x00,}}, +{ 0x5EC3, {0x02,0x00,0x7F,0xE0,0x44,0x00,0x66,0xA0,0x55,0xA0,0x68,0xC0,0x7F,0xC0,0x55,0x20,0x7F,0xC0,0x49,0x00,0x91,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x5EC8, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x6F,0x80,0x6F,0x80,0x6F,0x80,0x68,0x80,0x6F,0x80,0x5F,0x80,0x43,0x80,0xBC,0xE0,0x00,0x00,}}, +{ 0x5EC9, {0x02,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x5F,0xC0,0x45,0x40,0x7F,0xE0,0x45,0x40,0x5F,0xC0,0x4D,0x80,0xB5,0x60,0x05,0x00,0x00,0x00,}}, +{ 0x5ECA, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x48,0x00,0x5E,0xC0,0x52,0xC0,0x5E,0x80,0x52,0xC0,0x5F,0xA0,0x56,0xE0,0x9A,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5ECF, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x7D,0x80,0x75,0x80,0x7D,0xA0,0x76,0x60,0x7F,0xC0,0x71,0x40,0x59,0x80,0x53,0x80,0x8E,0x60,0x00,0x00,}}, +{ 0x5ED0, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x7D,0xC0,0x75,0xC0,0x7D,0x80,0x75,0xE0,0x7D,0x80,0x70,0x80,0x59,0xA0,0x53,0xA0,0x8E,0x60,0x00,0x00,}}, +{ 0x5ED3, {0x02,0x00,0x7F,0xE0,0x48,0x00,0x7F,0xE0,0x5E,0xA0,0x52,0xC0,0x5F,0xC0,0x7E,0xA0,0x48,0xA0,0x7F,0xE0,0x88,0x80,0x18,0x80,0x00,0x00,}}, +{ 0x5ED6, {0x02,0x00,0x7F,0xE0,0x6F,0xC0,0x6F,0xC0,0x7B,0xC0,0x66,0xC0,0x7B,0xC0,0x6F,0xC0,0x7F,0xE0,0x47,0x80,0x43,0x80,0x9E,0x00,0x00,0x00,}}, +{ 0x5EDA, {0x02,0x00,0x7F,0xE0,0x7E,0x40,0x7E,0x40,0x7F,0xE0,0x60,0x40,0x7F,0x40,0x73,0xC0,0x7E,0x40,0x4C,0x40,0x4E,0x40,0xB0,0xC0,0x00,0x00,}}, +{ 0x5EDB, {0x02,0x00,0x7F,0xE0,0x7F,0x80,0x7F,0x80,0x72,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xE0,0x69,0xC0,0x7F,0xC0,0x42,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x5EDD, {0x02,0x00,0x7F,0xE0,0x75,0xC0,0x7F,0x80,0x77,0x00,0x7D,0xE0,0x75,0x80,0x7D,0x80,0x7F,0x80,0x7F,0x80,0x92,0x80,0x22,0x80,0x00,0x00,}}, +{ 0x5EDF, {0x02,0x00,0x7F,0xE0,0x50,0x00,0x7D,0xC0,0x5D,0x40,0x65,0xC0,0x7D,0x40,0x75,0x40,0x5D,0xC0,0x7F,0x40,0x92,0x40,0x94,0xC0,0x00,0x00,}}, +{ 0x5EE0, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x6B,0x00,0x7D,0x00,0x7F,0xE0,0x63,0x40,0x7F,0xC0,0x7E,0x80,0x7E,0x80,0xB3,0x40,0x26,0x20,0x00,0x00,}}, +{ 0x5EE1, {0x02,0x00,0x7F,0xE0,0x68,0x00,0x6F,0xE0,0x7B,0xC0,0x6B,0xC0,0x7F,0xE0,0x6B,0xC0,0x6F,0xE0,0x5F,0xE0,0x53,0x20,0xA3,0xA0,0x00,0x00,}}, +{ 0x5EE2, {0x02,0x00,0x7F,0xE0,0x6E,0x80,0x7F,0xA0,0x78,0xC0,0x7D,0xE0,0x65,0x80,0x7F,0xE0,0x7F,0xE0,0x7F,0xC0,0x45,0x80,0x9B,0x60,0x00,0x00,}}, +{ 0x5EE3, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xE0,0x62,0x00,0x7F,0x80,0x72,0x80,0x5F,0x80,0x5F,0x80,0x8D,0x80,0x30,0x40,0x00,0x00,}}, +{ 0x5EE8, {0x02,0x00,0x7F,0xE0,0x59,0xC0,0x5D,0xC0,0x69,0xC0,0x7F,0xC0,0x6B,0x80,0x7F,0xC0,0x7F,0xE0,0x7F,0xE0,0x62,0xC0,0xE6,0x80,0x00,0x00,}}, +{ 0x5EE9, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x77,0x80,0x75,0x80,0x77,0x80,0x7F,0x80,0x67,0x00,0x7F,0xE0,0x5B,0xC0,0xE2,0x60,0x00,0x00,}}, +{ 0x5EEC, {0x02,0x00,0x7F,0xE0,0x6F,0xE0,0x7F,0xE0,0x7F,0xC0,0x77,0x80,0x75,0x80,0x77,0x80,0x57,0x80,0x5F,0xC0,0xAB,0xC0,0x3F,0xE0,0x00,0x00,}}, +{ 0x5EF0, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x6F,0xE0,0x7D,0xA0,0x6F,0xE0,0x79,0x80,0x7F,0xE0,0x7F,0x20,0x4F,0x40,0x89,0xC0,0x00,0x00,}}, +{ 0x5EF1, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xE0,0x7F,0xC0,0x65,0xC0,0x7F,0xE0,0x41,0xC0,0x7F,0xE0,0x7F,0xC0,0x73,0xE0,0x9F,0x80,0x00,0x00,}}, +{ 0x5EF3, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x77,0xE0,0x7F,0xA0,0x67,0xE0,0x7C,0x00,0x7F,0xE0,0x5F,0xE0,0x57,0x60,0xBD,0xC0,0x00,0x00,}}, +{ 0x5EF4, {0x00,0x00,0x70,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x10,0x00,0x50,0x00,0x60,0x00,0x60,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5EF6, {0x00,0x00,0xE0,0xE0,0x2F,0x00,0x41,0x00,0x75,0x00,0x15,0xC0,0x55,0x00,0x55,0x00,0x3F,0xE0,0x20,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5EF7, {0x00,0x20,0x00,0xC0,0x77,0x80,0x10,0x80,0x20,0x80,0x3F,0xF0,0x10,0x80,0x50,0x80,0x20,0x80,0x33,0xE0,0x4C,0x00,0x83,0xF0,0x00,0x00,}}, +{ 0x5EF8, {0x01,0x00,0xE1,0x00,0x21,0x00,0x6F,0xC0,0x4B,0x40,0xE9,0x40,0x2F,0xC0,0xA9,0x40,0x6F,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5EFA, {0x01,0x00,0x01,0x00,0xEF,0xC0,0x3F,0xE0,0x41,0x40,0x6F,0xC0,0x21,0x00,0xAF,0xC0,0x61,0x00,0x7F,0xE0,0x59,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5EFB, {0x00,0x00,0x0F,0xC0,0xE8,0x40,0x2B,0xC0,0x4A,0xC0,0x6A,0xC0,0x2A,0xC0,0xAB,0xC0,0x4A,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5EFC, {0x00,0x00,0x1F,0xE0,0xE2,0x80,0x2F,0xC0,0x4A,0xC0,0x6A,0xC0,0x2A,0xC0,0xAC,0x40,0x6F,0xC0,0x2F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x5EFE, {0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x5EFF, {0x21,0x00,0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F01, {0x04,0x00,0x04,0x00,0x08,0x80,0x7F,0xC0,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x5F03, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x10,0x80,0x7F,0xC0,0x11,0x40,0x13,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F04, {0x00,0x00,0x3F,0x80,0x04,0x00,0x1F,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F09, {0x51,0x00,0x51,0x00,0x7F,0xE0,0xFF,0xE0,0xD1,0x00,0x57,0xC0,0x90,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x31,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F0A, {0x21,0x00,0x79,0x00,0xFB,0xE0,0xFF,0x40,0xFD,0xC0,0xE7,0x40,0xAD,0x20,0x11,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F0B, {0x04,0x80,0x04,0x80,0x04,0x60,0x07,0xE0,0x1E,0x00,0xE2,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x00,0xA0,0x00,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x5F0C, {0x01,0x80,0x01,0x40,0x01,0x40,0xFF,0xE0,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x80,0x7E,0x80,0x00,0xA0,0x00,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x5F0D, {0x01,0x80,0x7D,0x40,0x01,0x00,0xFF,0xE0,0x01,0x00,0x01,0x00,0x7D,0x00,0x00,0x80,0x00,0x80,0xFE,0xA0,0x00,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x5F0F, {0x01,0x80,0x01,0x40,0xFF,0xE0,0x01,0x00,0x01,0x00,0x7F,0x00,0x11,0x00,0x11,0x00,0x10,0x80,0x1E,0xA0,0xF0,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x5F10, {0x01,0x80,0x3D,0x40,0x01,0x40,0xFF,0xE0,0x01,0x00,0x01,0x00,0x3D,0x00,0x01,0x00,0x04,0x80,0x18,0xA0,0xE0,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x5F11, {0x08,0xC0,0x08,0xA0,0x77,0xE0,0x3F,0xE0,0xE8,0x80,0x27,0x80,0xF9,0x80,0x71,0x80,0x79,0x60,0x69,0x60,0xA6,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x5F13, {0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x20,0x80,0x40,0x00,0x7F,0xC0,0x40,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x5F14, {0x00,0x00,0x7F,0x80,0x08,0x80,0x7F,0x80,0x48,0x80,0x48,0x00,0x7F,0xC0,0x48,0x40,0x08,0x40,0x08,0xC0,0x08,0x00,0x08,0x00,0x00,0x00,}}, +{ 0x5F15, {0x00,0x40,0x7E,0x40,0x02,0x40,0x3E,0x40,0x22,0x40,0x20,0x40,0x3E,0x40,0x22,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x00,0x00,}}, +{ 0x5F16, {0x00,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x60,0x80,0x60,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x03,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5F17, {0x12,0x00,0x12,0x00,0x7F,0x80,0x12,0x80,0x7F,0x80,0x52,0x80,0x52,0x00,0x7F,0xC0,0x12,0x40,0x22,0x40,0x22,0xC0,0x42,0x00,0x00,0x00,}}, +{ 0x5F18, {0x00,0x80,0xF8,0x80,0x08,0x80,0x79,0x00,0x49,0x00,0x41,0x00,0x79,0x00,0x49,0x00,0x0A,0x40,0x12,0x40,0x17,0xA0,0x60,0x20,0x00,0x00,}}, +{ 0x5F1B, {0x00,0x80,0xF2,0x80,0x12,0x80,0x72,0xC0,0x53,0xC0,0x4E,0xC0,0x72,0xC0,0x52,0xC0,0x12,0xC0,0x12,0x20,0x12,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x5F1F, {0x10,0x80,0x09,0x00,0x3F,0xC0,0x02,0x40,0x3F,0xC0,0x22,0x00,0x3F,0xE0,0x22,0x20,0x06,0x20,0x1A,0xE0,0x62,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5F25, {0x02,0x00,0xF2,0x00,0x17,0xE0,0x74,0x80,0x58,0x80,0x42,0x80,0x72,0xC0,0x52,0xC0,0x14,0xA0,0x18,0xA0,0x10,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5F26, {0x01,0x00,0xF1,0x00,0x1F,0xE0,0x71,0x40,0x5E,0x40,0x42,0x80,0x71,0x80,0x51,0x00,0x11,0x00,0x12,0x40,0x3F,0xE0,0x60,0x20,0x00,0x00,}}, +{ 0x5F27, {0x00,0x40,0xF1,0x80,0x17,0x80,0x75,0x80,0x55,0x80,0x45,0x80,0x75,0x80,0x55,0x40,0x15,0x40,0x19,0xA0,0x2E,0xA0,0x40,0xA0,0x00,0x00,}}, +{ 0x5F29, {0x20,0x00,0x33,0xC0,0xFE,0x40,0x69,0x80,0x1B,0x80,0x24,0x60,0xFF,0x80,0x01,0x80,0x3F,0x00,0x3F,0x80,0x60,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x5F2D, {0x00,0x00,0xFF,0xE0,0x24,0x80,0xE7,0x80,0xA4,0x80,0x84,0x80,0x87,0x80,0xE4,0x80,0xA7,0x80,0x3F,0x80,0x30,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5F2F, {0x04,0x00,0xFF,0xE0,0x09,0x00,0x69,0x40,0x53,0x20,0xBF,0x20,0x01,0x80,0x3F,0x00,0x3F,0x80,0x7F,0x80,0x00,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x5F31, {0x00,0x00,0x7D,0xE0,0x04,0x20,0x3D,0xE0,0x21,0x00,0x3D,0xE0,0x25,0x20,0x14,0xA0,0x1C,0xE0,0x75,0xA0,0x04,0x20,0x18,0x40,0x00,0x00,}}, +{ 0x5F35, {0x00,0x00,0xE7,0xC0,0x24,0x00,0xE7,0x80,0xA7,0x80,0x84,0x00,0xFF,0xE0,0xA5,0x40,0xA5,0x80,0x25,0x80,0x26,0x40,0xD8,0x20,0x00,0x00,}}, +{ 0x5F37, {0x01,0x00,0xE2,0x40,0x2F,0xE0,0x21,0x20,0xEF,0xC0,0x89,0x40,0xE9,0x40,0xAF,0xC0,0x29,0x40,0x21,0xE0,0x2F,0x20,0xC0,0x20,0x00,0x00,}}, +{ 0x5F38, {0x00,0x00,0x77,0xE0,0x15,0xE0,0x75,0xE0,0x57,0xE0,0x45,0xE0,0x75,0xE0,0x55,0xE0,0x17,0xE0,0x1D,0xA0,0x19,0xA0,0x73,0x60,0x00,0x00,}}, +{ 0x5F3C, {0x00,0x00,0x71,0xE0,0x1F,0x20,0x32,0x60,0x27,0x80,0x25,0x80,0x35,0xE0,0x37,0x20,0x15,0x20,0x17,0x20,0x15,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x5F3E, {0x02,0x40,0xE9,0x40,0x25,0x80,0xEF,0xC0,0xAF,0xC0,0x89,0x40,0xEF,0xC0,0xA1,0x00,0xBF,0xE0,0x21,0x00,0x21,0x00,0xC1,0x00,0x00,0x00,}}, +{ 0x5F41, {0x00,0x00,0xFF,0xE0,0x26,0x40,0xEF,0x40,0xAF,0x40,0x80,0xC0,0xFF,0xE0,0xA0,0x40,0x2F,0x40,0x2F,0x40,0x2B,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x5F48, {0x00,0x00,0xEF,0xC0,0x2F,0xC0,0xE4,0xC0,0xAF,0xC0,0x89,0x40,0xEF,0xC0,0xAB,0x40,0x2F,0xC0,0x3F,0xE0,0x33,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x5F4A, {0x00,0x00,0xEF,0xC0,0x20,0x00,0xE7,0x80,0xA7,0x80,0x8F,0xC0,0xE0,0x00,0xA7,0x80,0xA7,0x80,0x27,0x80,0x3F,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x5F4C, {0x00,0x00,0xFF,0xE0,0x3D,0x60,0xFF,0xE0,0xAB,0xC0,0x8F,0xC0,0xEB,0xC0,0xAF,0xC0,0x2F,0xC0,0x2F,0xC0,0x2F,0xC0,0x69,0xC0,0x00,0x00,}}, +{ 0x5F4E, {0x6E,0x80,0xFF,0xC0,0x7E,0xE0,0xFF,0xE0,0xFB,0xC0,0xFF,0xA0,0x3F,0x80,0x01,0x80,0x3F,0x00,0x3F,0x80,0x60,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x5F51, {0x08,0x00,0x08,0x00,0x0F,0x00,0x1F,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x3F,0x00,0x01,0x00,0x01,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x5F53, {0x02,0x00,0x02,0x00,0x12,0x40,0x0A,0x80,0x0B,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x1F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x00,}}, +{ 0x5F56, {0x08,0x00,0x0F,0x00,0x1E,0x00,0x1E,0x00,0xFF,0xE0,0x04,0x00,0x1D,0x40,0xF7,0x80,0x7F,0x80,0x7E,0x80,0x72,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x5F57, {0x21,0x80,0x31,0x80,0xFB,0xE0,0x7B,0xC0,0x31,0x80,0x3B,0xE0,0xE1,0x80,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x5F59, {0x08,0x00,0x1F,0x00,0xFF,0xE0,0xFF,0xE0,0x7F,0xE0,0x7F,0xC0,0xA5,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x37,0x80,0x64,0xC0,0x00,0x00,}}, +{ 0x5F5C, {0x04,0x00,0x0F,0x00,0xFF,0xE0,0xFF,0xE0,0x72,0x40,0xFF,0xE0,0x71,0x40,0xEB,0x40,0x92,0x40,0xFF,0xE0,0x13,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F5D, {0x04,0x00,0x0F,0x00,0xFF,0xE0,0xFF,0xE0,0x73,0xC0,0xF9,0xC0,0x77,0xE0,0xEB,0xC0,0x95,0x20,0xFF,0xE0,0x13,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x5F61, {0x04,0x00,0x04,0x00,0x08,0x00,0x19,0x00,0x32,0x00,0x22,0x80,0x04,0x80,0x09,0x80,0x11,0x00,0x02,0x00,0x0C,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x5F62, {0x00,0x80,0x7C,0x80,0x29,0x00,0x29,0x40,0x28,0x40,0xFE,0x80,0x28,0x80,0x28,0x20,0x28,0x20,0x48,0x40,0x48,0x40,0x88,0x80,0x00,0x00,}}, +{ 0x5F66, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x09,0x00,0x7F,0xE0,0x41,0x80,0x46,0x00,0x58,0x80,0x43,0x00,0x4C,0x60,0x41,0x80,0x9E,0x00,0x00,0x00,}}, +{ 0x5F69, {0x18,0x80,0xE4,0x80,0xA5,0x00,0x59,0x40,0x32,0x40,0x20,0x80,0xFD,0x20,0x31,0x20,0x68,0x40,0xA0,0x40,0x20,0x80,0x21,0x00,0x00,0x00,}}, +{ 0x5F6A, {0x10,0x80,0x1C,0x80,0x7D,0x80,0x7F,0x40,0x78,0xC0,0x62,0xA0,0x5C,0x20,0x68,0x40,0x68,0x40,0x68,0x80,0x68,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x5F6B, {0x00,0x80,0x7E,0x80,0x53,0x00,0x7B,0x40,0x52,0x40,0x7E,0x80,0x42,0x80,0x7A,0x20,0x6A,0x20,0x7A,0x40,0x6A,0x40,0x86,0x80,0x00,0x00,}}, +{ 0x5F6C, {0x24,0x80,0x24,0x80,0xFE,0x80,0x25,0x40,0x6C,0x40,0x7E,0x80,0x7C,0x80,0xAD,0x20,0xB4,0x20,0x24,0x40,0x24,0x40,0x24,0x80,0x00,0x00,}}, +{ 0x5F6D, {0x20,0x80,0x30,0x80,0xFD,0x80,0x79,0x40,0x02,0xC0,0x78,0xA0,0x49,0x20,0x79,0x40,0x48,0x40,0x78,0x80,0x79,0x00,0xE2,0x00,0x00,0x00,}}, +{ 0x5F70, {0x10,0x80,0x7C,0x80,0x29,0x00,0xFE,0x40,0x3C,0x80,0x24,0x80,0x3D,0x20,0x25,0x20,0x3C,0x40,0xFE,0x40,0x10,0x80,0x11,0x00,0x00,0x00,}}, +{ 0x5F71, {0x7C,0x80,0x44,0x80,0x7D,0x00,0x45,0x40,0x7E,0x40,0x10,0x80,0xFE,0x80,0x7D,0x20,0x44,0x20,0x7C,0x40,0xD2,0x80,0x31,0x00,0x00,0x00,}}, +{ 0x5F73, {0x02,0x00,0x02,0x00,0x04,0x00,0x0C,0x80,0x19,0x00,0x01,0x00,0x02,0x00,0x06,0x00,0x0A,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x5F77, {0x21,0x00,0x21,0x00,0x6F,0xE0,0x5F,0xE0,0x31,0x00,0x21,0xC0,0x61,0x40,0xE3,0x40,0xA2,0x40,0x24,0x40,0x28,0x40,0x30,0x80,0x00,0x00,}}, +{ 0x5F79, {0x40,0x00,0x47,0x80,0x84,0x80,0x24,0xA0,0x28,0xE0,0x50,0x00,0x5F,0x80,0xC4,0x80,0x45,0x00,0x42,0x00,0x4D,0x80,0x50,0x60,0x00,0x00,}}, +{ 0x5F7C, {0x21,0x00,0x41,0x00,0x8F,0xE0,0x29,0x40,0x29,0x00,0x4F,0xC0,0x4A,0x40,0xCA,0x80,0x49,0x00,0x51,0x00,0x56,0x80,0x68,0x60,0x00,0x00,}}, +{ 0x5F7F, {0x23,0x80,0x23,0x80,0x6F,0xC0,0x53,0xC0,0xBF,0xC0,0x2B,0xC0,0x6B,0x80,0xEF,0xE0,0xAB,0xA0,0x23,0xE0,0x25,0x80,0x29,0x80,0x00,0x00,}}, +{ 0x5F80, {0x22,0x00,0x21,0x00,0x4F,0xE0,0x91,0x00,0x21,0x00,0x21,0x00,0x6F,0xC0,0xA1,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5F81, {0x20,0x00,0x2F,0xE0,0x41,0x00,0x95,0x00,0x25,0x00,0x25,0xC0,0x65,0x00,0xA5,0x00,0x25,0x00,0x25,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5F82, {0x20,0x00,0x27,0x80,0x64,0x80,0x54,0x80,0xB7,0x80,0x24,0x80,0x64,0x80,0xE7,0x80,0xA4,0x80,0x24,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5F83, {0x61,0x00,0x49,0x00,0x49,0x00,0xAF,0xE0,0x33,0x00,0x71,0x00,0x61,0x00,0xEF,0xC0,0x61,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5F84, {0x20,0x00,0x2F,0xC0,0x44,0x80,0x13,0x00,0x24,0x80,0x39,0x60,0x61,0x00,0xAF,0xC0,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5F85, {0x21,0x00,0x21,0x00,0x4F,0xC0,0x11,0x00,0x3F,0xE0,0x20,0x80,0x60,0x80,0xBF,0xE0,0x24,0x80,0x22,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x5F87, {0x12,0x00,0x12,0x00,0x33,0xE0,0x2F,0xE0,0x5F,0xA0,0x1A,0xE0,0x33,0xE0,0x72,0xE0,0x53,0xE0,0x10,0x20,0x10,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x5F88, {0x20,0x00,0x27,0x80,0x64,0x80,0x57,0x80,0xB4,0x80,0x24,0x80,0x67,0xA0,0xE5,0x20,0xA5,0xC0,0x25,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x5F8A, {0x30,0x00,0x27,0xE0,0x44,0x20,0x15,0xA0,0x15,0xE0,0x35,0xE0,0x35,0xE0,0x75,0xE0,0x35,0x20,0x34,0x20,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x5F8B, {0x21,0x00,0x41,0x00,0x4F,0xC0,0xBF,0xE0,0x21,0x40,0x4F,0xC0,0x41,0x00,0xCF,0xC0,0x41,0x00,0x5F,0xE0,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x5F8C, {0x21,0x00,0x43,0x80,0x8E,0x80,0x23,0x80,0x22,0x40,0x7F,0xA0,0x62,0x20,0xA7,0xC0,0x3C,0x80,0x23,0x00,0x27,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x5F90, {0x21,0x00,0x43,0x00,0x84,0x80,0x28,0x40,0x37,0xE0,0x41,0x00,0x5F,0xE0,0xC1,0x00,0x45,0x40,0x49,0x20,0x51,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x5F91, {0x60,0x00,0x5F,0xE0,0x89,0x40,0x3A,0x40,0x2B,0x40,0x69,0x40,0x60,0x00,0xEF,0xC0,0x61,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5F92, {0x41,0x00,0x41,0x00,0x8F,0xC0,0x21,0x00,0x3F,0xE0,0x41,0x00,0x49,0x00,0xC9,0xC0,0x49,0x00,0x55,0x00,0x53,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x5F93, {0x28,0x80,0x44,0x80,0x9F,0xE0,0x21,0x00,0x21,0x00,0x49,0x00,0x49,0xC0,0xC9,0x00,0x49,0x00,0x5D,0x00,0x53,0x00,0x60,0xE0,0x00,0x00,}}, +{ 0x5F97, {0x20,0x00,0x47,0x80,0x84,0x80,0x27,0x80,0x27,0x80,0x40,0x00,0x5F,0xE0,0xC0,0x80,0x5F,0xE0,0x44,0x80,0x42,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x5F98, {0x63,0x80,0x43,0x80,0x9F,0xE0,0x3F,0xE0,0x23,0x80,0x7F,0xC0,0x63,0x80,0xE3,0x80,0x7F,0xE0,0x65,0x80,0x69,0x80,0x71,0x80,0x00,0x00,}}, +{ 0x5F99, {0x61,0x00,0x41,0x00,0x89,0xC0,0x29,0xC0,0x29,0x00,0x7F,0xE0,0x61,0x00,0xE9,0x00,0x69,0xC0,0x6D,0x00,0x73,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x5F9E, {0x64,0x80,0x44,0x80,0x84,0xC0,0x2B,0xA0,0x33,0x20,0x61,0x00,0x69,0x00,0xE9,0x00,0x69,0xC0,0x7D,0x00,0x73,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x5FA0, {0x61,0x00,0x43,0x00,0x9F,0xE0,0x25,0x80,0x2D,0xC0,0x6B,0xA0,0x71,0x20,0xE3,0x80,0x67,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x5FA1, {0x14,0x00,0x24,0xE0,0x4F,0xA0,0x1A,0xA0,0x1F,0xA0,0x32,0xA0,0x3A,0xA0,0x5B,0xA0,0x1A,0xA0,0x1B,0xE0,0x1C,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x5FA8, {0x21,0x00,0x22,0x00,0x67,0xC0,0x57,0xC0,0xB4,0x40,0x27,0xC0,0x60,0x00,0xFF,0xE0,0xA7,0xC0,0x27,0xC0,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x5FA9, {0x24,0x00,0x44,0x00,0x8F,0xE0,0x37,0x80,0x27,0x80,0x44,0x80,0x47,0x80,0xC2,0x00,0x47,0x80,0x4B,0x00,0x46,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x5FAA, {0x20,0x40,0x41,0x80,0x8F,0x00,0x2F,0xE0,0x29,0x00,0x6B,0xC0,0x6A,0x40,0xAB,0xC0,0x2A,0x40,0x2B,0xC0,0x33,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x5FAD, {0x62,0x00,0x43,0x80,0x9F,0x80,0x3D,0x00,0x26,0x00,0x7F,0xC0,0x65,0x00,0xEB,0x00,0x7F,0xE0,0x69,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x5FAE, {0x49,0x00,0x6B,0x00,0xAB,0x00,0x3F,0xE0,0x61,0x40,0x43,0x40,0xFF,0x40,0x59,0x80,0x58,0x80,0x6C,0x80,0x6B,0x40,0x40,0x20,0x00,0x00,}}, +{ 0x5FB3, {0x21,0x00,0x41,0x00,0x9F,0xE0,0x2F,0xC0,0x2A,0xC0,0x4A,0xC0,0x4F,0xC0,0xC8,0x40,0x45,0x40,0x55,0x20,0x54,0xA0,0x43,0x80,0x00,0x00,}}, +{ 0x5FB4, {0x48,0x80,0x6A,0x80,0xAA,0x80,0x3E,0xE0,0x43,0x40,0x7F,0x40,0xC9,0xC0,0x5D,0x80,0x48,0x80,0x4E,0x80,0x71,0x40,0x42,0x20,0x00,0x00,}}, +{ 0x5FB9, {0x24,0x80,0x24,0x80,0x5E,0x80,0xAF,0xE0,0x3F,0x40,0x61,0x40,0x5F,0x40,0xD3,0x80,0x5E,0x80,0x5E,0x80,0x53,0x40,0x56,0x20,0x00,0x00,}}, +{ 0x5FBC, {0x65,0x80,0x49,0x80,0x9F,0x80,0x3F,0xE0,0x33,0x40,0x7F,0x40,0x69,0xC0,0xFE,0x80,0x6C,0x80,0x6E,0xC0,0x73,0x40,0x66,0x20,0x00,0x00,}}, +{ 0x5FBD, {0x48,0x80,0x6A,0x80,0xBE,0x80,0x27,0xE0,0x7D,0x40,0x77,0x40,0xC9,0x40,0x55,0xC0,0x7E,0x80,0x6C,0x80,0x6B,0x40,0x4A,0x20,0x00,0x00,}}, +{ 0x5FC3, {0x04,0x00,0x02,0x00,0x01,0x00,0x08,0x00,0x08,0x00,0x08,0x80,0x48,0x40,0x48,0x20,0x88,0x20,0x08,0x00,0x08,0x80,0x07,0x80,0x00,0x00,}}, +{ 0x5FC5, {0x08,0x00,0x04,0x80,0x02,0x80,0x10,0x80,0x10,0x80,0x51,0x00,0x51,0x40,0x92,0x20,0x94,0x20,0x18,0x00,0x30,0x80,0xCF,0x80,0x00,0x00,}}, +{ 0x5FCC, {0x00,0x00,0x7F,0x00,0x01,0x00,0x7F,0x00,0x41,0x00,0x40,0x40,0x3F,0xC0,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x5FCD, {0x00,0x00,0x7F,0x80,0x14,0x80,0x0C,0x80,0x0A,0x80,0x30,0x80,0x41,0x00,0x04,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x5FD6, {0x60,0x80,0x60,0x80,0x60,0x80,0x7F,0xE0,0x70,0xC0,0x64,0x80,0xE2,0x80,0x62,0x80,0x60,0x80,0x60,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5FD7, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x12,0x80,0x52,0x60,0x50,0x20,0x90,0x80,0x0F,0x80,0x00,0x00,}}, +{ 0x5FD8, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x20,0x00,0x20,0x00,0x1F,0x80,0x04,0x00,0x12,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x5FD9, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x34,0x00,0x74,0x00,0x74,0x00,0xA4,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x23,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x5FDC, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x42,0x00,0x41,0x00,0x44,0x80,0x54,0xA0,0x54,0x20,0x54,0x20,0x64,0x00,0x84,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x5FDD, {0x01,0x80,0x07,0x00,0x3C,0x00,0xFF,0xE0,0x0A,0x00,0x11,0x00,0x68,0x80,0xC8,0x60,0x2C,0x80,0x2A,0x40,0x49,0x40,0x18,0x00,0x00,0x00,}}, +{ 0x5FE0, {0x04,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x04,0x80,0x04,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x5FE4, {0x64,0x00,0x64,0x00,0x67,0xC0,0x7F,0xC0,0x71,0x00,0x61,0x00,0xFF,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x5FEB, {0x21,0x00,0x21,0x00,0x27,0xC0,0x61,0x40,0x71,0x40,0x71,0x40,0xAF,0xE0,0x23,0x80,0x22,0x80,0x24,0x80,0x28,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x5FF0, {0x62,0x00,0x62,0x00,0x6F,0x80,0x73,0xA0,0x75,0xA0,0x64,0xE0,0xE9,0x00,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x5FF1, {0x61,0x00,0x61,0x00,0x67,0xE0,0x6F,0xE0,0x79,0x40,0x71,0x00,0xE1,0x80,0x63,0x80,0x67,0x80,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x5FF5, {0x04,0x00,0x04,0x00,0x0A,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x00,0x01,0x00,0x06,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x5FF8, {0x60,0x00,0x6F,0x80,0x64,0x80,0x74,0x80,0x74,0x80,0x7F,0xE0,0xE4,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x5FFB, {0x60,0x40,0x61,0x80,0x66,0x00,0x74,0x00,0x77,0xE0,0x64,0x80,0xE4,0x80,0x64,0x80,0x64,0x80,0x68,0x80,0x70,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x5FFD, {0x20,0x00,0x20,0x00,0x7F,0xC0,0x49,0x40,0x92,0x40,0x24,0x40,0x00,0x80,0x04,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x5FFF, {0x07,0x00,0x11,0x00,0x20,0x80,0xFF,0xE0,0x09,0x80,0x11,0x80,0x23,0x00,0x04,0x00,0x12,0x40,0x50,0x20,0x90,0x20,0x0F,0x80,0x00,0x00,}}, +{ 0x600E, {0x20,0x00,0x30,0x00,0x3F,0xE0,0x67,0x80,0x44,0x00,0x87,0x80,0x04,0x00,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x600F, {0x61,0x00,0x61,0x00,0x67,0xC0,0x7F,0xC0,0x79,0x40,0x69,0x40,0xFF,0xE0,0x63,0x00,0x63,0x00,0x65,0x80,0x68,0x80,0x70,0x60,0x00,0x00,}}, +{ 0x6010, {0x32,0x00,0x32,0x00,0x33,0xE0,0x3F,0xE0,0x38,0x20,0x77,0xA0,0x34,0xA0,0x34,0xA0,0x37,0xA0,0x37,0xA0,0x30,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x6012, {0x20,0x00,0x20,0x00,0xFF,0xC0,0x2A,0x40,0x71,0x80,0x12,0x80,0x2C,0x60,0xC4,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6015, {0x30,0x80,0x31,0x80,0x33,0xE0,0x3B,0xE0,0x3A,0x20,0x32,0x20,0x73,0xE0,0x32,0x20,0x32,0x20,0x32,0x20,0x33,0xE0,0x32,0x20,0x00,0x00,}}, +{ 0x6016, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x32,0x80,0x72,0x80,0x77,0xE0,0xAC,0xA0,0x34,0xA0,0x24,0xA0,0x24,0xE0,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6019, {0x61,0x00,0x61,0x00,0x67,0xE0,0x7F,0xE0,0x71,0x00,0xE1,0x00,0x6F,0xC0,0x68,0x40,0x68,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x601B, {0x60,0x00,0x67,0x80,0x64,0x80,0x74,0x80,0x77,0x80,0x64,0x80,0xE4,0x80,0x64,0x80,0x67,0x80,0x60,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x601C, {0x21,0x00,0x21,0x00,0x22,0x80,0x34,0x80,0x7F,0xC0,0x70,0x20,0xAF,0xC0,0x21,0x40,0x21,0x40,0x21,0xC0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x601D, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6020, {0x08,0x00,0x09,0x00,0x31,0xC0,0xFF,0x20,0x3F,0x00,0x21,0x00,0x21,0x00,0x3F,0x00,0x04,0x00,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6021, {0x61,0x00,0x61,0x00,0x72,0x00,0x72,0x40,0x64,0xE0,0xFF,0xA0,0x60,0x00,0x6F,0xC0,0x68,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x6025, {0x08,0x00,0x1F,0x00,0x22,0x00,0x7F,0x80,0x3F,0x80,0x00,0x80,0x3F,0x80,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6026, {0x60,0x00,0x6F,0xC0,0x61,0x00,0x75,0x40,0x79,0x40,0x61,0x00,0xFF,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6027, {0x21,0x00,0x25,0x00,0x25,0x00,0x2F,0xC0,0x71,0x00,0x71,0x00,0xAF,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6028, {0x20,0x00,0x38,0x00,0x2F,0xC0,0x6E,0x40,0x9A,0xC0,0x12,0x20,0x61,0xE0,0x84,0x00,0x52,0x40,0x50,0x20,0x91,0x20,0x0F,0x80,0x00,0x00,}}, +{ 0x6029, {0x60,0x00,0x6F,0xC0,0x78,0x40,0x7F,0xC0,0x68,0x40,0xEA,0x00,0x6A,0x40,0x6A,0x80,0x6B,0x00,0x72,0x20,0x72,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x602A, {0x20,0x00,0x2F,0xC0,0x24,0x80,0x63,0x00,0x7D,0x80,0x71,0x60,0xA1,0x00,0x2F,0xC0,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x602B, {0x63,0x80,0x63,0x80,0x6F,0xC0,0x73,0xC0,0x7F,0xC0,0x6B,0x80,0xEB,0x80,0x6F,0xE0,0x6B,0xA0,0x63,0xE0,0x65,0x80,0x69,0x80,0x00,0x00,}}, +{ 0x602F, {0x21,0x00,0x21,0x00,0x27,0xC0,0x21,0x00,0x71,0x00,0x71,0x00,0xBF,0xE0,0x21,0x00,0x22,0x40,0x24,0xC0,0x2F,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x6031, {0x20,0x00,0x30,0x00,0x7F,0xC0,0x79,0x40,0x96,0x40,0x23,0x40,0x04,0x80,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x603A, {0x61,0x00,0x61,0x80,0x67,0x00,0x77,0x40,0x71,0x40,0x6F,0x80,0xE3,0x80,0x65,0x80,0x65,0x40,0x79,0x20,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x6041, {0x20,0xC0,0x2F,0x00,0x61,0x00,0x7F,0xE0,0xE3,0x00,0x61,0x00,0x6F,0xC0,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6042, {0x32,0x00,0x32,0x00,0x33,0xE0,0x3F,0xE0,0x3F,0xA0,0x34,0xA0,0x77,0xA0,0x35,0xA0,0x37,0xA0,0x30,0x20,0x30,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x6043, {0x61,0x00,0x63,0x00,0x6F,0xC0,0x71,0x00,0x7F,0xE0,0x60,0x80,0xE0,0x80,0x7F,0xE0,0x64,0x80,0x62,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x6046, {0x60,0x00,0x7F,0xE0,0x64,0x00,0x77,0x80,0x76,0x80,0x65,0x80,0xE5,0x80,0x6C,0x80,0x6B,0x80,0x61,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x604A, {0x61,0x00,0x63,0x00,0x6F,0xC0,0x72,0x40,0x74,0x40,0x68,0x80,0xE8,0x80,0x7F,0xE0,0x6A,0xA0,0x7A,0xA0,0x73,0xA0,0x67,0x60,0x00,0x00,}}, +{ 0x604B, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x09,0x00,0x69,0x40,0x49,0x20,0x93,0x20,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x604D, {0x61,0x00,0x61,0x00,0x69,0x40,0x75,0x40,0x71,0x00,0x7F,0xE0,0xE3,0x80,0x63,0x80,0x67,0x80,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x6050, {0x00,0x00,0xFF,0x80,0x24,0x80,0x26,0x80,0x3D,0xA0,0xE8,0xA0,0x10,0x60,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6052, {0x20,0x00,0x2F,0xC0,0x20,0x00,0x67,0x80,0x74,0x80,0x77,0x80,0xA4,0x80,0x24,0x80,0x27,0x80,0x20,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6055, {0x20,0x00,0x20,0x00,0xFB,0xC0,0x2A,0x40,0x72,0x40,0x1B,0xC0,0x62,0x40,0xC4,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6059, {0x21,0x00,0x13,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x605A, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x605F, {0x34,0x00,0x34,0x00,0x37,0xE0,0x3F,0xE0,0x3C,0xA0,0x33,0xA0,0x79,0xE0,0x3A,0xE0,0x3F,0xE0,0x3F,0xE0,0x30,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x6060, {0x62,0x00,0x62,0x00,0x67,0xE0,0x7F,0xE0,0x74,0x00,0x69,0x80,0xF9,0x80,0x6B,0xC0,0x69,0x80,0x69,0x80,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x6062, {0x20,0x00,0x2F,0xE0,0x28,0x00,0x29,0x00,0x7B,0x40,0x7B,0x40,0xAB,0x00,0x2D,0x00,0x29,0x00,0x2A,0x80,0x3C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x6063, {0x04,0x00,0x04,0x00,0xE7,0xE0,0x19,0x40,0x33,0x80,0xC4,0x80,0x18,0x60,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6064, {0x61,0x00,0x61,0x00,0x62,0x00,0x7F,0xC0,0x7B,0xC0,0x6B,0xC0,0xEB,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6065, {0x01,0x00,0xF8,0x80,0x50,0x00,0x71,0x00,0x51,0x00,0x55,0x40,0x75,0x20,0x55,0x20,0x79,0x20,0xD1,0x40,0x11,0x40,0x11,0xC0,0x00,0x00,}}, +{ 0x6068, {0x20,0x00,0x27,0x80,0x24,0x80,0x37,0x80,0x74,0x80,0x64,0x80,0xA7,0xA0,0x25,0x20,0x25,0xC0,0x25,0x80,0x26,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x6069, {0x00,0x00,0x7F,0x80,0x44,0x80,0x7F,0x80,0x4A,0x80,0x71,0x80,0x7F,0x80,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x606A, {0x62,0x00,0x62,0x00,0x67,0x80,0x76,0x80,0x7B,0x80,0x61,0x80,0xE2,0x80,0x67,0xC0,0x7C,0xA0,0x64,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x606B, {0x30,0x00,0x37,0xE0,0x34,0x20,0x3F,0xE0,0x3C,0x20,0x35,0xA0,0x75,0xE0,0x35,0xE0,0x35,0xE0,0x34,0x20,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x606C, {0x60,0x40,0x61,0x80,0x6F,0x00,0x71,0x00,0x7F,0xE0,0x61,0x00,0xE1,0x00,0x6F,0xC0,0x68,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x606D, {0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x11,0x00,0x28,0x80,0x48,0x40,0x88,0x20,0x2A,0x80,0x49,0x40,0x18,0x00,0x00,0x00,}}, +{ 0x606F, {0x04,0x00,0x08,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6070, {0x23,0x00,0x23,0x00,0x23,0x00,0x74,0x80,0x7F,0xC0,0x70,0x20,0xA0,0x00,0x27,0x80,0x24,0x80,0x24,0x80,0x27,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x6075, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6077, {0x21,0x00,0x33,0x00,0x7F,0xE0,0x63,0x80,0xE7,0x80,0x69,0x40,0x71,0x20,0x07,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6081, {0x30,0x00,0x37,0xE0,0x34,0x20,0x3F,0xE0,0x38,0x00,0x37,0xE0,0x74,0x20,0x37,0xE0,0x37,0xE0,0x37,0xE0,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x6083, {0x30,0x00,0x37,0xE0,0x34,0xA0,0x3C,0xA0,0x3F,0xE0,0x34,0xA0,0x75,0xE0,0x35,0xE0,0x36,0xA0,0x34,0xA0,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x6084, {0x61,0x00,0x65,0xC0,0x65,0x60,0x79,0x20,0x7F,0xC0,0x68,0x40,0xEF,0xC0,0x68,0x40,0x6F,0xC0,0x68,0x40,0x68,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x6089, {0x01,0x80,0x7E,0x80,0x24,0x80,0xFF,0xE0,0x0E,0x00,0x35,0x00,0xC4,0xE0,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x608B, {0x61,0x00,0x63,0x00,0x7F,0xE0,0x76,0x80,0x73,0x00,0x67,0x80,0xF8,0x60,0x67,0x80,0x64,0x80,0x64,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x608C, {0x24,0x80,0x22,0x80,0x27,0xC0,0x31,0x40,0x7F,0xC0,0x69,0x00,0xAF,0xE0,0x2B,0x20,0x25,0x20,0x29,0x60,0x31,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x608D, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0x60,0x00,0xEF,0xC0,0x61,0x00,0x6F,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6092, {0x60,0x00,0x67,0x80,0x67,0x80,0x77,0x80,0x7F,0xC0,0x69,0x40,0xE9,0x40,0x6F,0xC0,0x68,0x40,0x68,0x20,0x68,0x20,0x67,0xE0,0x00,0x00,}}, +{ 0x6094, {0x24,0x00,0x24,0x00,0x2F,0xE0,0x2C,0x00,0x77,0xC0,0x65,0x40,0xBF,0xE0,0x29,0x40,0x2A,0x40,0x3F,0xE0,0x20,0x80,0x21,0x00,0x00,0x00,}}, +{ 0x6096, {0x61,0x00,0x63,0x00,0x7F,0xE0,0x7F,0xE0,0x68,0x40,0x77,0x80,0xE1,0x00,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x6097, {0x62,0x00,0x63,0x80,0x65,0x00,0x7F,0xC0,0x7B,0x40,0x69,0x40,0xEF,0xC0,0x6B,0x40,0x63,0x80,0x67,0xA0,0x69,0x20,0x71,0xE0,0x00,0x00,}}, +{ 0x609A, {0x61,0x00,0x63,0x00,0x7F,0xE0,0x6F,0xC0,0x7B,0x40,0x79,0x40,0xEF,0xC0,0x6B,0x40,0x67,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x609B, {0x61,0x00,0x63,0xC0,0x67,0xE0,0x7F,0xE0,0x73,0x80,0x65,0xA0,0xEA,0xE0,0x63,0x80,0x64,0x80,0x63,0x00,0x67,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x609F, {0x20,0x00,0x2F,0xE0,0x21,0x00,0x37,0x80,0x72,0x80,0x62,0x80,0xBF,0xE0,0x20,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x60A0, {0x22,0x00,0x32,0x00,0x37,0xE0,0x5E,0x80,0xD3,0x00,0x55,0x80,0x58,0x60,0x04,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60A3, {0x04,0x00,0x3F,0x80,0x3F,0x80,0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60A6, {0x24,0x80,0x22,0x80,0x2F,0xC0,0x78,0x40,0x78,0x40,0x6F,0xC0,0xAB,0x40,0x23,0x00,0x25,0x00,0x29,0x20,0x31,0x20,0x20,0xE0,0x00,0x00,}}, +{ 0x60A7, {0x30,0xA0,0x31,0xE0,0x3E,0xE0,0x3A,0xE0,0x3F,0xE0,0x32,0xE0,0x77,0xE0,0x36,0xE0,0x3A,0xE0,0x32,0x20,0x32,0x20,0x32,0x60,0x00,0x00,}}, +{ 0x60A9, {0x11,0x20,0x14,0xA0,0x12,0xC0,0x18,0x80,0x38,0x00,0x36,0xA0,0x55,0xA0,0x14,0xA0,0x15,0x60,0x16,0x20,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x60AA, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x3F,0x80,0x2A,0x80,0x3F,0x80,0x0A,0x00,0xFF,0xE0,0x14,0x40,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60B2, {0x0A,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0xC0,0x0A,0x00,0xFB,0xE0,0x12,0x00,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60B3, {0x04,0x00,0xFF,0xE0,0x0F,0x80,0x5F,0x80,0x5F,0x80,0x5F,0x80,0x50,0x80,0x5F,0xC0,0x7F,0xE0,0x16,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x60B4, {0x61,0x00,0x63,0x00,0x7F,0xE0,0x74,0x80,0x76,0xC0,0x69,0xA0,0xF1,0x20,0x63,0x00,0x7F,0xE0,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x60B5, {0x60,0x00,0x67,0xC0,0x67,0x80,0x77,0x80,0x77,0x80,0x64,0x00,0xFF,0xE0,0x65,0x40,0x65,0xC0,0x65,0x80,0x66,0x40,0x78,0x20,0x00,0x00,}}, +{ 0x60B6, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x42,0x40,0x4A,0x40,0x69,0xC0,0x69,0xC0,0x47,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x60B8, {0x60,0xC0,0x6F,0x00,0x7F,0xE0,0x7F,0xE0,0x67,0x80,0x79,0x60,0xE7,0x80,0x61,0x00,0x6F,0xE0,0x6F,0xE0,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x60BC, {0x22,0x00,0x22,0x00,0x23,0xE0,0x3F,0xC0,0x78,0x40,0x6F,0xC0,0xA8,0x40,0x2F,0xC0,0x21,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x60BD, {0x61,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7F,0xE0,0x61,0x40,0xEF,0xC0,0x62,0x00,0x7F,0xE0,0x6F,0x80,0x63,0x80,0x7C,0x40,0x00,0x00,}}, +{ 0x60C5, {0x21,0x00,0x2F,0xC0,0x21,0x00,0x37,0x80,0x7F,0xE0,0x60,0x00,0xA7,0x80,0x24,0x80,0x27,0x80,0x27,0x80,0x24,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x60C6, {0x30,0x00,0x37,0xE0,0x34,0xA0,0x3D,0xA0,0x3D,0xA0,0x35,0xA0,0x74,0xA0,0x35,0xE0,0x35,0xE0,0x3D,0xE0,0x39,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x60C7, {0x21,0x00,0x3F,0xE0,0x27,0x80,0x34,0x80,0x77,0x80,0x60,0x00,0xAF,0x80,0x21,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x60D1, {0x02,0x80,0x02,0x40,0xFF,0xE0,0x7A,0x80,0x4B,0x80,0x79,0xA0,0x1E,0xE0,0xE4,0x20,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60D3, {0x61,0x00,0x65,0xC0,0x67,0xC0,0x7F,0xC0,0x7F,0xE0,0x64,0x80,0xEF,0xC0,0x74,0xA0,0x65,0x80,0x65,0x40,0x64,0x40,0x63,0xC0,0x00,0x00,}}, +{ 0x60D8, {0x30,0x00,0x37,0xE0,0x36,0xE0,0x3D,0xA0,0x3F,0xE0,0x34,0xA0,0x77,0xE0,0x35,0x20,0x35,0xA0,0x35,0xA0,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x60DA, {0x24,0x00,0x24,0x00,0x27,0xC0,0x3A,0xC0,0x75,0xC0,0x69,0x40,0xA2,0x80,0x22,0x00,0x25,0x40,0x34,0x60,0x34,0xA0,0x23,0x80,0x00,0x00,}}, +{ 0x60DC, {0x22,0x80,0x22,0x80,0x2F,0xE0,0x32,0x80,0x72,0x80,0x7F,0xE0,0xA0,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x60DF, {0x22,0x40,0x22,0x40,0x24,0x80,0x3F,0xE0,0x74,0x80,0x6F,0xC0,0xA4,0x80,0x24,0x80,0x27,0xC0,0x24,0x80,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x60E0, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x64,0x80,0x3F,0x80,0x04,0xC0,0x7F,0xC0,0x16,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x60E1, {0x00,0x00,0xFF,0xE0,0x3B,0x80,0x7B,0x80,0x7B,0x80,0x0A,0x00,0xFF,0xE0,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60E3, {0x24,0x00,0x64,0x00,0x7F,0xC0,0xBB,0xC0,0x35,0xC0,0xE9,0x40,0x22,0x80,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60E7, {0x60,0x00,0x67,0x80,0x67,0x80,0x77,0x80,0x77,0x80,0x64,0x80,0xE7,0x80,0x64,0xC0,0x7F,0xE0,0x64,0x80,0x68,0x40,0x70,0x40,0x00,0x00,}}, +{ 0x60E8, {0x21,0x00,0x22,0x80,0x27,0xC0,0x33,0x00,0x7F,0xE0,0x63,0x80,0xA4,0x80,0x3B,0x60,0x27,0x00,0x26,0x40,0x21,0x80,0x2E,0x00,0x00,0x00,}}, +{ 0x60F0, {0x21,0x00,0x2F,0xE0,0x27,0xC0,0x34,0x80,0x7B,0xE0,0x60,0x00,0xA7,0xC0,0x24,0x40,0x27,0xC0,0x27,0xC0,0x24,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x60F1, {0x32,0xE0,0x32,0xE0,0x34,0xC0,0x3E,0xE0,0x3A,0xE0,0x31,0x00,0x77,0xE0,0x34,0xA0,0x35,0xA0,0x35,0xE0,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x60F3, {0x20,0x00,0x23,0xC0,0xFA,0x40,0x33,0xC0,0x7B,0xC0,0x6A,0x40,0xA3,0xC0,0x34,0x00,0x12,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60F4, {0x61,0x00,0x69,0x40,0x69,0x40,0x6F,0xC0,0x70,0x00,0x7F,0xE0,0xE2,0x00,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x60F6, {0x61,0x00,0x62,0x00,0x67,0x80,0x77,0x80,0x74,0x80,0x67,0x80,0xE0,0x00,0x6F,0xC0,0x67,0x80,0x67,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x60F7, {0x04,0x00,0x3F,0x80,0x1F,0x00,0xFF,0xE0,0x3F,0x80,0x31,0x80,0xDF,0x60,0x13,0x00,0x1E,0x00,0x56,0x20,0x90,0x20,0x0F,0x80,0x00,0x00,}}, +{ 0x60F9, {0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x10,0x00,0x3F,0x80,0xD0,0x80,0x1F,0x80,0x04,0x00,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x60FA, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0x65,0x00,0xE5,0x00,0x6F,0xC0,0x7F,0x80,0x67,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x60FB, {0x30,0x20,0x3F,0x20,0x39,0xE0,0x3F,0xE0,0x39,0xE0,0x3F,0xE0,0x79,0xE0,0x39,0xE0,0x3F,0xE0,0x37,0x20,0x39,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x6100, {0x61,0x80,0x62,0x80,0x7C,0x80,0x74,0xA0,0x7F,0xC0,0x65,0x80,0xE6,0x80,0x6D,0x80,0x6D,0xC0,0x75,0xC0,0x65,0x20,0x66,0x20,0x00,0x00,}}, +{ 0x6101, {0x08,0x80,0x70,0xA0,0x22,0xA0,0xFE,0xC0,0x79,0x80,0xAA,0x40,0x24,0x20,0x04,0x00,0x52,0x40,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6103, {0x61,0x00,0x63,0x00,0x6F,0xE0,0x7F,0xC0,0x70,0x00,0x67,0x80,0xE4,0x80,0x67,0x80,0x67,0x80,0x67,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6106, {0x68,0x00,0x45,0xC0,0x98,0x00,0x23,0xE0,0x24,0xC0,0x68,0x80,0xE8,0x80,0x00,0x80,0x04,0x00,0x52,0x20,0x90,0x20,0x0F,0x80,0x00,0x00,}}, +{ 0x6108, {0x04,0x00,0x0A,0x00,0x3F,0x80,0xF8,0xE0,0x2A,0x80,0x3A,0x80,0x3A,0x80,0x28,0x80,0x54,0xC0,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6109, {0x21,0x00,0x23,0x00,0x24,0x80,0x3F,0xC0,0x70,0x20,0x7E,0x40,0xAA,0xC0,0x2E,0xC0,0x2A,0xC0,0x2E,0xC0,0x2A,0x40,0x2A,0xC0,0x00,0x00,}}, +{ 0x610D, {0x01,0x00,0x79,0x00,0x7B,0xE0,0x7F,0x40,0x7D,0xC0,0x51,0x80,0x6F,0x40,0xC4,0x20,0x04,0x40,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x610E, {0x64,0x00,0x67,0xE0,0x7F,0x80,0x77,0x80,0x77,0x80,0x64,0x80,0xE7,0x80,0x62,0x00,0x6F,0xC0,0x6B,0x80,0x63,0x80,0x7C,0x60,0x00,0x00,}}, +{ 0x610F, {0x04,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x7F,0x80,0x56,0x40,0x90,0x20,0x0F,0x80,0x00,0x00,}}, +{ 0x6115, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0x7C,0xC0,0x77,0x80,0x60,0x00,0xFF,0xE0,0x62,0x00,0x67,0x80,0x60,0x80,0x60,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x611A, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x45,0x40,0x7F,0xC0,0x44,0xC0,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x611B, {0x01,0x80,0x7E,0x80,0x28,0x80,0x7F,0xE0,0x96,0x40,0xB1,0x80,0x4F,0x40,0x08,0x00,0x1F,0x00,0x66,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x611F, {0x02,0x80,0x02,0x40,0x7F,0xE0,0x7E,0x40,0x41,0x40,0x7D,0x80,0x65,0xA0,0xBE,0x60,0x04,0x20,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6121, {0x64,0x00,0x64,0x00,0x67,0xC0,0x7F,0xC0,0x77,0xC0,0x69,0xC0,0xE2,0x80,0x62,0x00,0x65,0x40,0x74,0x60,0x74,0xA0,0x63,0x80,0x00,0x00,}}, +{ 0x6127, {0x61,0x00,0x62,0x00,0x6F,0xC0,0x7F,0xC0,0x7B,0x40,0x6F,0xC0,0xEB,0x40,0x63,0x80,0x65,0xC0,0x69,0xE0,0x71,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x6128, {0x21,0x80,0xFD,0x80,0x7A,0x60,0x7B,0xE0,0x7F,0x40,0x49,0x80,0xBB,0xC0,0x00,0x20,0x04,0x40,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x612C, {0x48,0x00,0x73,0xC0,0xFF,0xC0,0x2B,0xC0,0x6B,0xC0,0x7A,0x40,0x24,0x40,0x4C,0xC0,0x02,0x00,0x10,0x20,0x51,0xA0,0x8F,0x80,0x00,0x00,}}, +{ 0x6134, {0x61,0x00,0x63,0x00,0x67,0x80,0x7F,0xC0,0x77,0xE0,0x64,0x80,0xE7,0x80,0x64,0x80,0x67,0x80,0x6F,0xC0,0x74,0x40,0x67,0xC0,0x00,0x00,}}, +{ 0x613C, {0x64,0x80,0x67,0x20,0x67,0xE0,0x73,0xC0,0x7A,0x40,0x6B,0xC0,0xEA,0x40,0x6B,0xC0,0x6B,0xC0,0x6F,0xE0,0x66,0xC0,0x78,0x20,0x00,0x00,}}, +{ 0x613D, {0x61,0x40,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7F,0xC0,0x69,0x40,0xEF,0xC0,0x69,0x40,0x6F,0xE0,0x6F,0xE0,0x62,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x613E, {0x64,0x00,0x64,0x00,0x67,0xE0,0x7F,0x80,0x70,0x00,0x7F,0x80,0xF3,0x80,0x6B,0x80,0x6F,0x80,0x6F,0xE0,0x6B,0x60,0x72,0x20,0x00,0x00,}}, +{ 0x613F, {0x00,0x00,0x7F,0xE0,0x6F,0x80,0x7F,0x80,0x70,0x80,0x5F,0x80,0x52,0x80,0xA6,0x60,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6142, {0x2F,0x80,0x23,0x80,0x8F,0xC0,0x4F,0xC0,0x2B,0x40,0x2F,0xC0,0x49,0x40,0x49,0xC0,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6144, {0x60,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7B,0xC0,0x6F,0xC0,0xE1,0x00,0x7F,0xE0,0x67,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x6147, {0x18,0x00,0x73,0x80,0x7A,0x80,0x7F,0xE0,0x7A,0xC0,0x79,0x80,0x4E,0x80,0xB0,0x60,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6148, {0x21,0x00,0x12,0x00,0xFF,0xE0,0x6B,0x40,0x31,0xC0,0x2B,0x40,0xFF,0xE0,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x614A, {0x61,0x40,0x67,0x80,0x7F,0xE0,0x7F,0xE0,0x7F,0xC0,0x63,0xC0,0xFF,0xE0,0x63,0xC0,0x6F,0xC0,0x6F,0xC0,0x73,0xA0,0x63,0x80,0x00,0x00,}}, +{ 0x614B, {0x21,0x00,0x49,0x40,0xFD,0x80,0x79,0xE0,0x79,0x40,0x79,0x80,0x49,0x20,0x58,0xE0,0x04,0x40,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x614C, {0x22,0x80,0x2F,0xE0,0x22,0x80,0x7F,0xE0,0x74,0x00,0x63,0xC0,0xA0,0x00,0x25,0x80,0x25,0x80,0x25,0xA0,0x29,0xA0,0x30,0x60,0x00,0x00,}}, +{ 0x614D, {0x60,0x00,0x67,0x80,0x65,0x80,0x77,0x80,0x74,0x80,0x67,0x80,0xE0,0x00,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x614E, {0x21,0x00,0x3F,0xE0,0x27,0x80,0x34,0x80,0x77,0x80,0x64,0x80,0xA7,0x80,0x24,0x80,0x27,0x80,0x2F,0xE0,0x24,0x80,0x38,0x40,0x00,0x00,}}, +{ 0x6153, {0x60,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7F,0xC0,0x60,0x00,0xEF,0xC0,0x60,0x00,0x7F,0xE0,0x69,0x40,0x71,0x40,0x63,0x00,0x00,0x00,}}, +{ 0x6155, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x39,0x80,0xED,0x60,0x4A,0x80,0x18,0x00,0x00,0x00,}}, +{ 0x6158, {0x61,0x00,0x62,0xC0,0x6F,0xC0,0x74,0xC0,0x7A,0xA0,0x7F,0xE0,0xE3,0x80,0x67,0xC0,0x7F,0x60,0x66,0x40,0x63,0x80,0x6E,0x00,0x00,0x00,}}, +{ 0x6159, {0x20,0x40,0xFF,0x80,0x7B,0xE0,0x7B,0xE0,0x7A,0x80,0x7A,0x80,0xFC,0x80,0x20,0x80,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x615A, {0x64,0x20,0x65,0xC0,0x7F,0x80,0x7F,0x80,0x77,0xE0,0x7F,0xC0,0xF5,0xC0,0x7F,0xC0,0x6F,0xC0,0x6F,0x40,0x65,0x40,0x66,0x40,0x00,0x00,}}, +{ 0x615D, {0x00,0x00,0x7F,0xC0,0x7F,0x80,0x7F,0x80,0x7F,0xC0,0x5F,0x80,0x69,0x80,0x4F,0x80,0x7F,0xC0,0x16,0x40,0x51,0xA0,0x8F,0xA0,0x00,0x00,}}, +{ 0x615F, {0x61,0x80,0x7E,0x80,0x6E,0x80,0x7F,0xE0,0x7F,0xE0,0x75,0xA0,0xFF,0xA0,0x77,0xA0,0x7E,0xA0,0x7F,0xA0,0x67,0xA0,0x7D,0x60,0x00,0x00,}}, +{ 0x6162, {0x20,0x00,0x27,0x80,0x27,0x80,0x34,0x80,0x77,0x80,0x6F,0xC0,0xAA,0xC0,0x2F,0xC0,0x3F,0xC0,0x22,0x80,0x27,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x6163, {0x20,0x00,0x23,0xE0,0x2F,0xF0,0x27,0xE0,0x30,0x00,0x6F,0xE0,0x64,0x20,0xA7,0xE0,0x27,0xE0,0x27,0xE0,0x23,0x60,0x2C,0x10,0x00,0x00,}}, +{ 0x6165, {0x61,0x80,0x6B,0x80,0x67,0xC0,0x77,0xC0,0x7D,0x80,0x6F,0xE0,0xE1,0x80,0x7B,0xC0,0x6A,0x40,0x6B,0xC0,0x74,0x00,0x63,0xE0,0x00,0x00,}}, +{ 0x6167, {0x20,0x80,0xFF,0xE0,0x7B,0xC0,0x7F,0xE0,0xF1,0x80,0x3F,0x80,0x7F,0xC0,0x00,0x80,0x1F,0x00,0x56,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6168, {0x20,0x00,0x2F,0xE0,0x2A,0xC0,0x2E,0xC0,0x2A,0xC0,0x6F,0xF0,0x78,0x40,0xAA,0xC0,0x2A,0xC0,0x2D,0xD0,0x29,0x50,0x22,0x30,0x00,0x00,}}, +{ 0x616B, {0x64,0x80,0x44,0xC0,0x9B,0x60,0x39,0x00,0x29,0xC0,0x6D,0x00,0xF3,0x00,0x20,0xE0,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x616E, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x7F,0xC0,0x43,0x80,0x5F,0x80,0x52,0x80,0x5F,0x80,0x5F,0xC0,0x5A,0xA0,0xA8,0xA0,0x27,0x80,0x00,0x00,}}, +{ 0x616F, {0x64,0x00,0x64,0x00,0x6F,0xE0,0x77,0x80,0x77,0x80,0x74,0x80,0xE7,0x80,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x67,0x40,0x6B,0x80,0x00,0x00,}}, +{ 0x6170, {0x00,0x80,0x7C,0x80,0x47,0xE0,0x7C,0x80,0x43,0x80,0x7D,0x80,0x78,0x80,0xD4,0x80,0x94,0xC0,0x12,0x20,0x50,0xA0,0x8F,0x80,0x00,0x00,}}, +{ 0x6171, {0x61,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7F,0xC0,0x69,0x40,0xEF,0xC0,0x63,0x40,0x7F,0xE0,0x7F,0xE0,0x64,0xC0,0x62,0x80,0x00,0x00,}}, +{ 0x6173, {0x60,0x00,0x7F,0xE0,0x7D,0xA0,0x7E,0xC0,0x7E,0xC0,0x75,0xC0,0xFE,0x20,0x73,0x00,0x6F,0xC0,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6174, {0x30,0x00,0x3F,0xE0,0x33,0x60,0x3F,0xE0,0x3D,0xE0,0x39,0xA0,0x72,0x00,0x37,0xC0,0x37,0xC0,0x37,0xC0,0x37,0xC0,0x34,0x40,0x00,0x00,}}, +{ 0x6175, {0x61,0x00,0x7F,0xE0,0x77,0xC0,0x77,0xC0,0x7F,0xE0,0x71,0x40,0xF7,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x6F,0xC0,0x69,0xC0,0x00,0x00,}}, +{ 0x6176, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xE0,0x75,0xC0,0x67,0xA0,0x7F,0xA0,0x57,0x00,0x8F,0x00,0x30,0xE0,0x00,0x00,}}, +{ 0x6177, {0x61,0x00,0x6F,0xE0,0x6F,0xC0,0x7F,0xC0,0x7F,0xE0,0x69,0x40,0xEF,0xC0,0x69,0x40,0x6F,0xC0,0x7F,0x80,0x71,0x60,0x63,0x00,0x00,0x00,}}, +{ 0x617E, {0x29,0x00,0x55,0x00,0x1B,0xE0,0x2C,0xC0,0x78,0x80,0xA9,0x80,0x3E,0x40,0x04,0x20,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6182, {0x00,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x55,0xC0,0x9F,0xC0,0x1F,0x20,0x7A,0x00,0x1F,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x6187, {0x0A,0x40,0x72,0x40,0xFF,0xE0,0xFB,0xC0,0x7A,0x40,0x4A,0x40,0x7B,0xC0,0x42,0x40,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x618A, {0x23,0x80,0x2F,0xC0,0x6F,0xE0,0x6F,0xE0,0xEF,0x40,0x77,0xC0,0x65,0x40,0x67,0xC0,0x46,0x40,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x618E, {0x12,0x40,0x11,0x80,0x17,0xE0,0x1F,0xE0,0x3D,0xA0,0x37,0xE0,0x50,0x00,0x13,0xC0,0x12,0x40,0x13,0xC0,0x13,0xC0,0x12,0x40,0x00,0x00,}}, +{ 0x6190, {0x21,0x00,0x29,0x40,0x27,0xE0,0x3F,0xE0,0x73,0x80,0x7D,0x60,0xA9,0x40,0x2F,0xE0,0x2B,0x40,0x27,0xE0,0x28,0x40,0x30,0x40,0x00,0x00,}}, +{ 0x6191, {0x00,0x00,0x4F,0xC0,0x6F,0x80,0x0F,0x80,0x2B,0x00,0x2F,0xE0,0x55,0xA0,0x52,0xE0,0x14,0x40,0x12,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x6194, {0x64,0x80,0x64,0x80,0x67,0xE0,0x7F,0xE0,0x77,0xC0,0x65,0x80,0xE7,0xC0,0x65,0x80,0x67,0xE0,0x6A,0x40,0x6B,0xE0,0x71,0xA0,0x00,0x00,}}, +{ 0x6196, {0x21,0x80,0xFD,0xC0,0x6B,0xE0,0xFF,0xE0,0x71,0x80,0x69,0x40,0xAE,0x20,0x04,0x00,0x12,0x40,0x50,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6199, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x1F,0x40,0x52,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x619A, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0x7C,0xC0,0x7F,0xC0,0x69,0x40,0xEF,0xC0,0x6B,0x40,0x6F,0xC0,0x7F,0xE0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x61A4, {0x21,0x00,0x2F,0xC0,0x3F,0xE0,0x34,0x80,0x7F,0xC0,0x68,0x40,0xAF,0xC0,0x28,0x40,0x2F,0xC0,0x2F,0xC0,0x25,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x61A7, {0x21,0x00,0x2F,0xC0,0x24,0x80,0x3F,0xE0,0x79,0x40,0x7F,0xC0,0xA9,0x40,0x2F,0xC0,0x21,0x00,0x27,0xC0,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x61A9, {0x09,0x00,0x73,0xC0,0xFF,0xC0,0x22,0x40,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x42,0x40,0x14,0x00,0x52,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x61AB, {0x30,0x00,0x37,0xE0,0x37,0xE0,0x3F,0xE0,0x3F,0xE0,0x34,0xA0,0x77,0xE0,0x35,0xA0,0x34,0xA0,0x35,0xE0,0x36,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x61AC, {0x60,0x00,0x67,0x80,0x67,0x80,0x77,0x80,0x77,0x80,0x61,0x00,0xFF,0xE0,0x67,0x80,0x67,0x80,0x67,0x80,0x69,0x40,0x73,0x40,0x00,0x00,}}, +{ 0x61AE, {0x68,0x00,0x68,0x00,0x7F,0xE0,0x7B,0xC0,0x7F,0xE0,0x6B,0xC0,0xEB,0xC0,0x6B,0xC0,0x7F,0xE0,0x74,0x40,0x73,0x20,0x63,0xA0,0x00,0x00,}}, +{ 0x61B2, {0x04,0x00,0x7F,0xE0,0x84,0x00,0xFF,0xC0,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x2A,0x80,0x7F,0xC0,0x56,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x61B6, {0x21,0x00,0x2F,0xC0,0x24,0x80,0x7F,0xE0,0x77,0x80,0x74,0x80,0xA7,0x80,0x24,0x80,0x27,0xC0,0x2D,0x20,0x34,0xA0,0x23,0x80,0x00,0x00,}}, +{ 0x61BA, {0x61,0x00,0x63,0x80,0x6F,0xE0,0x7F,0xE0,0x7A,0xC0,0x6D,0x80,0xEF,0xE0,0x69,0x80,0x6B,0xC0,0x73,0xC0,0x73,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x61BE, {0x40,0xC0,0x4F,0xE0,0x4F,0x80,0x68,0xC0,0x7F,0xC0,0xCD,0xA0,0xD7,0x60,0x42,0x20,0x45,0x40,0x54,0x60,0x54,0xA0,0x43,0x80,0x00,0x00,}}, +{ 0x61C3, {0x71,0x00,0xFD,0x00,0x7F,0xC0,0x7F,0xC0,0x79,0x40,0xFE,0x40,0x7A,0x40,0x3C,0x80,0xC4,0x00,0x12,0x20,0x51,0xA0,0x8F,0x80,0x00,0x00,}}, +{ 0x61C6, {0x60,0x00,0x67,0x80,0x67,0x80,0x77,0x80,0x7E,0xC0,0x6B,0xC0,0xEF,0xC0,0x63,0x00,0x7F,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x61C7, {0x33,0xC0,0xD2,0x40,0x7B,0xC0,0xB2,0x40,0x73,0xC0,0x9A,0xA0,0x2B,0xC0,0xD7,0x40,0x34,0x20,0x12,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x61C8, {0x68,0x00,0x6E,0xE0,0x76,0xA0,0x7F,0xA0,0x77,0x60,0x75,0x40,0xFF,0xC0,0x75,0xE0,0x7F,0xE0,0x7F,0xE0,0x71,0x40,0x63,0x40,0x00,0x00,}}, +{ 0x61C9, {0x02,0x00,0x7F,0xE0,0x6B,0xE0,0x7F,0xE0,0x7B,0xC0,0x72,0x80,0x73,0xC0,0x72,0xC0,0x53,0xE0,0x4A,0x40,0xA8,0xE0,0x27,0xA0,0x00,0x00,}}, +{ 0x61CA, {0x61,0x00,0x62,0x00,0x6F,0xC0,0x7F,0xC0,0x7B,0xC0,0x6F,0xC0,0xEB,0xC0,0x6D,0xC0,0x6F,0xE0,0x6F,0xE0,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x61CB, {0x60,0x80,0x7F,0xC0,0xEE,0xE0,0x7F,0xC0,0x7F,0xC0,0x75,0xA0,0xE5,0xA0,0x0C,0x80,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x61CC, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0x61,0x00,0xFF,0xE0,0x64,0xC0,0x7F,0xE0,0x6F,0xC0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x61CD, {0x61,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7B,0xC0,0x6B,0xC0,0xEF,0xC0,0x6F,0x80,0x6F,0xE0,0x6F,0xE0,0x7B,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x61D0, {0x21,0x00,0x3F,0xE0,0x21,0x00,0x3F,0xC0,0x7A,0xC0,0x6F,0xC0,0xA1,0x00,0x3F,0xE0,0x27,0x40,0x3D,0x80,0x27,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x61E3, {0x24,0x80,0x3F,0xE0,0x87,0x80,0x5F,0xE0,0x3F,0xE0,0x35,0xA0,0x55,0xA0,0x5B,0x60,0x10,0x20,0x16,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x61E6, {0x60,0x00,0x6F,0xC0,0x67,0xE0,0x7F,0xE0,0x7D,0xC0,0x6D,0xC0,0xE1,0x00,0x7F,0xE0,0x67,0xC0,0x6F,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x61F2, {0x48,0x80,0xFA,0x80,0xBF,0xE0,0x7F,0x40,0xE9,0xC0,0x7E,0x80,0x6F,0x80,0x31,0x40,0x04,0x20,0x72,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x61F4, {0x65,0x80,0x65,0xC0,0x7F,0xC0,0x7F,0xE0,0x6B,0x80,0x7B,0xC0,0xEB,0xC0,0x7B,0xC0,0x6A,0x80,0x6B,0xE0,0x6F,0x60,0x78,0x20,0x00,0x00,}}, +{ 0x61F6, {0x64,0x00,0x65,0xE0,0x7E,0xA0,0x7F,0xE0,0x77,0xE0,0x75,0xA0,0xFF,0xE0,0x6D,0xA0,0x6F,0xE0,0x75,0xE0,0x65,0xC0,0x65,0x20,0x00,0x00,}}, +{ 0x61F7, {0x61,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x7F,0xC0,0x61,0x00,0xFD,0xE0,0x7F,0xE0,0x7F,0x40,0x7D,0xC0,0x67,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x61F8, {0x78,0xC0,0xCB,0x80,0xF9,0xC0,0xCB,0xC0,0xFF,0xE0,0xF8,0xA0,0x6B,0xC0,0xA4,0xA0,0x94,0x00,0x52,0x40,0x50,0x20,0x8F,0xA0,0x00,0x00,}}, +{ 0x61FA, {0x6B,0x80,0x6B,0xC0,0x7F,0xC0,0x71,0x80,0x7F,0xE0,0x6B,0x80,0xFB,0xC0,0x6B,0xC0,0x7B,0x80,0x7B,0xE0,0x6F,0x60,0x78,0x20,0x00,0x00,}}, +{ 0x61FC, {0x60,0x00,0x6F,0xC0,0x6F,0xC0,0x7F,0xC0,0x7B,0xC0,0x6F,0xC0,0xE5,0x80,0x67,0xE0,0x6F,0xC0,0x77,0xC0,0x65,0x80,0x67,0xE0,0x00,0x00,}}, +{ 0x61FD, {0x64,0x80,0x7F,0xE0,0x64,0xC0,0x7F,0xC0,0x7F,0xC0,0x65,0x80,0xE7,0xE0,0x6D,0x80,0x77,0xC0,0x67,0xC0,0x65,0x80,0x67,0xE0,0x00,0x00,}}, +{ 0x61FE, {0x60,0x00,0x6F,0xC0,0x67,0x80,0x77,0x80,0x7F,0xC0,0x60,0x80,0xFF,0xE0,0x6B,0xC0,0x6F,0xC0,0x6F,0xE0,0x7F,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x61FF, {0x61,0x00,0xF1,0x00,0x6F,0xE0,0xF1,0xC0,0x95,0x80,0xF9,0x40,0x03,0x20,0x71,0x80,0x71,0x00,0x75,0x20,0x79,0xA0,0xC1,0x80,0x00,0x00,}}, +{ 0x6200, {0x6E,0x80,0x7F,0xC0,0xE7,0xC0,0x6E,0xC0,0xF3,0xE0,0x6F,0xC0,0xFB,0xA0,0x0E,0x80,0x04,0x00,0x52,0x20,0x91,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x6208, {0x04,0x00,0x04,0xC0,0x04,0x40,0xFF,0xE0,0x02,0x00,0x02,0x40,0x02,0x40,0x01,0x80,0x03,0x80,0x0F,0xA0,0x30,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x6209, {0x02,0x80,0x02,0x40,0x3F,0xE0,0x7F,0xE0,0x62,0x40,0x62,0x40,0x61,0x40,0x61,0x80,0x69,0x80,0x71,0xA0,0xC6,0x60,0x18,0x20,0x00,0x00,}}, +{ 0x620A, {0x02,0x00,0x02,0x80,0x02,0x40,0x3F,0xE0,0x22,0x40,0x22,0x40,0x22,0x80,0x21,0x80,0x21,0x00,0x46,0xA0,0x58,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x620C, {0x02,0x80,0x02,0x40,0x3F,0xE0,0x7F,0xE0,0x62,0x40,0x62,0x40,0x61,0x40,0x7D,0x80,0x61,0x80,0x41,0xA0,0x46,0x60,0x98,0x20,0x00,0x00,}}, +{ 0x620D, {0x02,0x80,0x02,0x40,0x3F,0xE0,0x7F,0xE0,0x62,0x40,0x62,0x40,0x71,0x40,0x69,0x80,0x69,0x80,0x41,0xA0,0x46,0x60,0x98,0x20,0x00,0x00,}}, +{ 0x620E, {0x02,0x80,0x02,0x40,0xFF,0xE0,0x02,0x40,0x22,0x40,0x22,0x40,0x2E,0x80,0xF1,0x80,0x21,0x00,0x22,0xA0,0x44,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x6210, {0x02,0x80,0x02,0x40,0x7F,0xE0,0x42,0x00,0x42,0x80,0x7A,0x80,0x49,0x00,0x49,0x00,0x49,0x00,0x5A,0xA0,0x44,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x6211, {0x0A,0x00,0x12,0xC0,0x62,0x40,0x22,0x00,0xFF,0xE0,0x22,0x40,0x22,0x40,0x39,0x80,0xE1,0x00,0x22,0xA0,0x2C,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x6212, {0x02,0x80,0x02,0x40,0xFF,0xE0,0x02,0x00,0x0A,0x40,0x2A,0x40,0x29,0x80,0xFF,0x80,0x29,0x00,0x49,0xA0,0x4A,0x60,0x84,0x20,0x00,0x00,}}, +{ 0x6214, {0x04,0x80,0x04,0xC0,0xFF,0xE0,0x03,0xA0,0x07,0xA0,0x39,0xE0,0x04,0x80,0xFF,0xE0,0x03,0x80,0x03,0xA0,0x1C,0xE0,0x60,0x20,0x00,0x00,}}, +{ 0x6216, {0x02,0x80,0x02,0x40,0xFF,0xE0,0x02,0x00,0x7A,0x40,0x4A,0x40,0x49,0x40,0x79,0x80,0x40,0x80,0x19,0xA0,0xE6,0x60,0x18,0x20,0x00,0x00,}}, +{ 0x621A, {0x01,0x80,0x01,0x40,0x7F,0xE0,0x49,0x00,0x4D,0x40,0x7F,0x40,0x49,0x40,0x5D,0x80,0x5A,0x80,0x69,0xA0,0x8A,0x60,0x18,0x20,0x00,0x00,}}, +{ 0x621B, {0x00,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x3F,0xC0,0xFF,0xE0,0xFF,0xE0,0x0F,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x621D, {0x01,0x80,0x79,0x40,0x49,0x40,0x79,0xE0,0x4F,0x40,0x79,0x40,0x49,0x80,0x49,0x80,0x79,0x80,0x6A,0xA0,0x4C,0x60,0x88,0x20,0x00,0x00,}}, +{ 0x621E, {0x00,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x7F,0xE0,0xFF,0xC0,0x3F,0xC0,0x0F,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x621F, {0x21,0x00,0x21,0x80,0xF9,0x40,0x7F,0xE0,0x49,0x40,0x79,0x40,0x49,0x80,0x78,0x80,0x21,0x80,0xFA,0xA0,0x24,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x6221, {0x69,0xC0,0x69,0xA0,0xFF,0xE0,0x7B,0xE0,0x69,0xC0,0x79,0xC0,0x69,0xC0,0xFE,0x80,0x68,0x80,0x65,0xE0,0x42,0x60,0x7C,0x20,0x00,0x00,}}, +{ 0x6226, {0x25,0x80,0xA5,0x40,0x59,0x40,0x79,0xE0,0x6F,0x00,0x79,0x40,0x69,0x40,0x79,0x80,0x21,0x00,0xFA,0xA0,0x2C,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x622A, {0x11,0x00,0x11,0xC0,0x7D,0x40,0xFF,0xE0,0x6B,0x00,0x7F,0x40,0x69,0xC0,0xFE,0xC0,0xFC,0x80,0x7C,0xE0,0x7F,0x60,0x60,0x20,0x00,0x00,}}, +{ 0x622E, {0x01,0x80,0xFF,0xC0,0x67,0xC0,0xFF,0xE0,0xFB,0x80,0xB3,0xC0,0x78,0xC0,0xF4,0x80,0x70,0x80,0x69,0xE0,0x32,0x60,0xE0,0x20,0x00,0x00,}}, +{ 0x622F, {0x11,0x00,0x1D,0x40,0x7D,0x40,0x5D,0xE0,0x73,0x00,0x5D,0x40,0x55,0x40,0x76,0x80,0x74,0x80,0x5D,0xA0,0xB2,0x60,0x60,0x20,0x00,0x00,}}, +{ 0x6230, {0x01,0x80,0xFD,0xC0,0xFD,0xC0,0xC9,0xE0,0x7B,0x80,0x69,0xC0,0x78,0xC0,0x78,0xC0,0x78,0x80,0xFD,0xE0,0x32,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x6232, {0x11,0x80,0x1D,0xC0,0x7F,0xC0,0x7D,0xE0,0x5F,0x80,0x7D,0xC0,0x40,0xC0,0x7C,0xC0,0x7C,0x80,0x79,0xE0,0x5E,0x60,0xF0,0x20,0x00,0x00,}}, +{ 0x6233, {0x01,0x80,0xFF,0xC0,0x67,0xC0,0xFF,0xE0,0xFB,0x80,0xEB,0xC0,0x7E,0xC0,0xD0,0xC0,0xFC,0x80,0x7C,0xE0,0x51,0x60,0x7E,0x20,0x00,0x00,}}, +{ 0x6234, {0x11,0x00,0x3D,0x80,0x11,0x40,0xFF,0xE0,0x55,0x40,0x7D,0x40,0x55,0x80,0x7D,0x80,0x7E,0x80,0xFE,0xA0,0x77,0x60,0xC2,0x20,0x00,0x00,}}, +{ 0x6238, {0x00,0x00,0x7F,0xE0,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x00,0x00,}}, +{ 0x623B, {0x00,0x00,0x7F,0xE0,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x22,0x40,0x22,0x00,0x3F,0xE0,0x46,0x00,0x49,0x00,0x90,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x623F, {0x00,0x00,0x7F,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x22,0x00,0x3F,0xE0,0x24,0x00,0x27,0x80,0x44,0x80,0x48,0x80,0xB1,0x80,0x00,0x00,}}, +{ 0x6240, {0x00,0x40,0x7C,0x80,0x03,0x00,0x3A,0x00,0x2B,0xE0,0x2A,0x80,0x3A,0x80,0x2A,0x80,0x22,0x80,0x24,0x80,0x48,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x6241, {0x00,0x00,0x7F,0xE0,0x3F,0xC0,0x7F,0xC0,0x7F,0xC0,0x60,0x00,0x7F,0xC0,0x65,0x40,0x7F,0xC0,0x7F,0xC0,0xA5,0x40,0x25,0xC0,0x00,0x00,}}, +{ 0x6247, {0x00,0x00,0x7F,0xE0,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x35,0x40,0x5D,0xC0,0x7F,0xC0,0x84,0x40,0x0C,0xC0,0x00,0x00,}}, +{ 0x6248, {0x00,0x00,0x7F,0xE0,0x3F,0xC0,0x7F,0xC0,0x7F,0xC0,0x6F,0x80,0x69,0x80,0x6F,0x80,0x7F,0x80,0x5F,0xA0,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x6249, {0x00,0x00,0xFF,0xE0,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x45,0x00,0x5D,0xC0,0x45,0x00,0x5D,0xC0,0x79,0xE0,0x89,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x624B, {0x01,0x00,0x02,0x00,0x3C,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x624D, {0x02,0x00,0x02,0x00,0xFF,0xE0,0x02,0x00,0x03,0x00,0x02,0x00,0x06,0x00,0x0A,0x00,0x32,0x00,0x42,0x00,0x02,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x624E, {0x62,0x00,0x62,0x00,0xF2,0x00,0xF2,0x00,0x62,0x00,0x62,0x00,0x72,0x00,0x62,0x00,0xE2,0x00,0x62,0x20,0x62,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x6253, {0x20,0x00,0x27,0xE0,0xF8,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x38,0x80,0xE0,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x6255, {0x21,0x00,0x21,0x00,0xF9,0x00,0x21,0x00,0x21,0x00,0x31,0x00,0x62,0x00,0xA2,0x80,0x24,0x40,0x24,0xC0,0x3F,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x6258, {0x20,0x40,0x21,0x80,0xFF,0x00,0x21,0x00,0x21,0x00,0x21,0xE0,0x3F,0x00,0x61,0x00,0xA1,0x00,0x21,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x625B, {0x60,0x00,0x6F,0xC0,0xF1,0x00,0xF1,0x00,0x61,0x00,0x61,0x00,0x71,0x00,0x61,0x00,0xE1,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x625E, {0x60,0x00,0x67,0xC0,0xF1,0x00,0xF1,0x00,0x61,0x00,0x6F,0xE0,0x71,0x00,0x61,0x00,0xE1,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6260, {0x60,0x00,0x6F,0xC0,0xF0,0x40,0xF5,0x40,0x65,0xC0,0x62,0x80,0x73,0x80,0x61,0x00,0xE3,0x00,0x64,0x80,0x68,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x6263, {0x30,0x00,0x30,0x00,0x7B,0xE0,0x7A,0x20,0x32,0x20,0x32,0x20,0x3A,0x20,0x32,0x20,0x72,0x20,0x33,0xE0,0x32,0x20,0x32,0x20,0x00,0x00,}}, +{ 0x6268, {0x60,0x00,0x6F,0x80,0xF2,0x80,0xF2,0x80,0x6A,0x80,0x66,0x80,0x72,0x80,0x63,0x80,0xE6,0xE0,0x64,0xE0,0x68,0x80,0x71,0x80,0x00,0x00,}}, +{ 0x626E, {0x23,0x00,0x21,0x00,0xF5,0x00,0x24,0x80,0x28,0x80,0x3F,0xC0,0x72,0xA0,0xA2,0x80,0x24,0x80,0x24,0x80,0x28,0x80,0x31,0x80,0x00,0x00,}}, +{ 0x6271, {0x20,0x00,0x2F,0x80,0xF4,0x80,0x25,0x00,0x27,0xC0,0x26,0x40,0x36,0x40,0xE9,0x80,0x29,0x80,0x29,0x80,0x36,0x40,0x78,0x20,0x00,0x00,}}, +{ 0x6276, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x21,0x00,0x21,0x00,0x31,0x00,0x6F,0xE0,0xA1,0x00,0x22,0x80,0x24,0x80,0x38,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x6279, {0x29,0x00,0x29,0x00,0xF9,0x00,0x29,0x20,0x2F,0xC0,0x39,0x00,0x69,0x00,0xA9,0x00,0x29,0x00,0x2B,0x20,0x2D,0x20,0x30,0xE0,0x00,0x00,}}, +{ 0x627C, {0x60,0x00,0x6F,0xE0,0xF8,0x00,0xFB,0xC0,0x6A,0x40,0x6A,0x40,0x7A,0x40,0x6A,0x40,0xEA,0x80,0x7A,0x20,0x72,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x627E, {0x61,0x80,0x61,0x40,0xF1,0x40,0xF1,0xE0,0x6F,0x40,0x61,0x40,0x71,0x80,0x61,0x80,0xE1,0x80,0x62,0xA0,0x6C,0x60,0x60,0x20,0x00,0x00,}}, +{ 0x627F, {0x00,0x00,0x3F,0x00,0x02,0x00,0xE4,0x20,0x3F,0xC0,0x25,0x00,0x3F,0x80,0x44,0x80,0x5F,0xC0,0x84,0x20,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6280, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x21,0x00,0x6F,0xC0,0x74,0x40,0xA2,0x80,0x23,0x80,0x21,0x00,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x6282, {0x60,0x00,0x7F,0xE0,0xF1,0x00,0xF1,0x00,0x61,0x00,0x6F,0xC0,0x71,0x00,0x61,0x00,0xE1,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6283, {0x61,0x00,0x61,0x00,0xFF,0xE0,0xFF,0xE0,0x61,0x00,0x61,0x00,0x71,0x80,0x61,0x40,0xE1,0x40,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6284, {0x21,0x00,0x21,0x00,0xF5,0x80,0x25,0x40,0x29,0x40,0x39,0x20,0x63,0xA0,0xA1,0x80,0x21,0x00,0x22,0x00,0x2C,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x6289, {0x62,0x00,0x62,0x00,0xFF,0x80,0xFF,0x80,0x62,0x80,0x62,0x80,0x7F,0xE0,0x62,0x00,0xE7,0x00,0x69,0x00,0x70,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x628A, {0x20,0x00,0x2F,0xC0,0xF9,0x40,0x29,0x40,0x29,0x40,0x3F,0xC0,0x68,0x40,0xA8,0x00,0x28,0x00,0x28,0x20,0x28,0x20,0x27,0xE0,0x00,0x00,}}, +{ 0x6291, {0x11,0x00,0x11,0x00,0x7E,0xE0,0x14,0xA0,0x14,0xA0,0x1C,0xA0,0x34,0xA0,0x55,0xA0,0x16,0xA0,0x1C,0xC0,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x6292, {0x60,0x00,0x6F,0xC0,0xF3,0x80,0xF1,0x00,0x7F,0xE0,0x61,0x40,0x71,0x80,0x61,0x00,0xE1,0x00,0x61,0x00,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x6293, {0x60,0x40,0x61,0x80,0xF7,0x80,0xF5,0x80,0x65,0x80,0x65,0x80,0x75,0x80,0x65,0x80,0xE5,0x80,0x69,0x40,0x71,0x40,0x60,0x20,0x00,0x00,}}, +{ 0x6294, {0x60,0x00,0x6F,0xE0,0xF1,0x80,0xF1,0x80,0x61,0x80,0x63,0x80,0x75,0x40,0x69,0x20,0xE1,0x20,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6295, {0x20,0x00,0x27,0x00,0xF5,0x00,0x25,0x20,0x28,0xE0,0x30,0x00,0x7F,0x80,0xA4,0x80,0x23,0x00,0x23,0x00,0x2C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x6296, {0x60,0x80,0x62,0x80,0xF1,0x80,0xF0,0x80,0x64,0x80,0x62,0x80,0x72,0x80,0x60,0xE0,0xE7,0x80,0x64,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x6297, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x20,0x00,0x27,0x80,0x74,0x80,0x74,0x80,0x64,0x80,0xA4,0x80,0x28,0xA0,0x28,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x6298, {0x20,0x40,0x21,0x80,0xF6,0x00,0x24,0x00,0x27,0xE0,0x24,0x80,0x74,0x80,0xA4,0x80,0x28,0x80,0x30,0x80,0x20,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x629B, {0x69,0x80,0x69,0x80,0xF9,0xC0,0xFF,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x6B,0x40,0xEA,0x40,0x7A,0x60,0x72,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x629C, {0x22,0x00,0x22,0x00,0xFF,0xE0,0x22,0x00,0x22,0x00,0x33,0xC0,0x62,0x40,0xA3,0x40,0x24,0x80,0x28,0x80,0x33,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x629E, {0x20,0x00,0x27,0xC0,0xF4,0x40,0x24,0x40,0x27,0xC0,0x35,0x40,0x65,0x00,0xA5,0x00,0x24,0x80,0x28,0x80,0x30,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x62AB, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x29,0x40,0x29,0x00,0x3F,0xC0,0x6A,0x40,0xAA,0x80,0x29,0x80,0x29,0x00,0x32,0x80,0x34,0x60,0x00,0x00,}}, +{ 0x62AC, {0x61,0x00,0x61,0x00,0xF2,0x00,0xF2,0x40,0x64,0xE0,0x7F,0xA0,0x70,0x00,0x67,0xC0,0xE4,0x40,0x64,0x40,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x62B1, {0x24,0x00,0x24,0x00,0xF7,0xC0,0x28,0x40,0x3F,0x40,0x31,0x40,0x6F,0x40,0xA9,0x40,0x28,0x80,0x28,0x20,0x28,0x20,0x27,0xE0,0x00,0x00,}}, +{ 0x62B5, {0x20,0xC0,0x27,0x00,0xF5,0x00,0x25,0x00,0x27,0xE0,0x35,0x00,0x65,0x00,0xA5,0x00,0x2E,0x80,0x28,0x60,0x3F,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x62B9, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x21,0x00,0x3F,0xC0,0x61,0x00,0xA3,0x80,0x25,0x40,0x39,0x20,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x62BB, {0x30,0x80,0x30,0x80,0x7F,0xE0,0x7F,0xE0,0x34,0xA0,0x37,0xE0,0x3C,0xA0,0x35,0xA0,0x77,0xE0,0x30,0x80,0x30,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x62BC, {0x10,0x00,0x17,0xE0,0x7C,0xA0,0x17,0xE0,0x14,0xA0,0x14,0xA0,0x1F,0xE0,0x74,0xA0,0x10,0x80,0x10,0x80,0x10,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x62BD, {0x10,0x80,0x10,0x80,0x78,0x80,0x17,0xE0,0x14,0xA0,0x1C,0xA0,0x34,0xA0,0x57,0xE0,0x14,0xA0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x62C2, {0x63,0x80,0x63,0x80,0xFF,0xC0,0xF3,0xC0,0x6F,0xC0,0x6B,0x80,0x7B,0x80,0x6F,0xE0,0xE3,0xA0,0x63,0xE0,0x65,0x80,0x69,0x80,0x00,0x00,}}, +{ 0x62C5, {0x20,0x00,0x27,0x80,0xF4,0x80,0x24,0x80,0x27,0x80,0x24,0x80,0x34,0x80,0x64,0x80,0xA7,0x80,0x20,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x62C6, {0x60,0x40,0x61,0x80,0xFE,0x00,0xF8,0x00,0x6F,0xE0,0x69,0x80,0x7B,0x80,0x69,0x80,0xE9,0xC0,0x79,0xA0,0x71,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x62C7, {0x60,0x00,0x67,0xC0,0xF4,0x40,0xF5,0x40,0x65,0xC0,0x7F,0xE0,0x78,0x40,0x6A,0x40,0xE9,0x40,0x6F,0xE0,0x68,0x40,0x60,0x80,0x00,0x00,}}, +{ 0x62C8, {0x61,0x00,0x61,0x00,0xF1,0x00,0xF1,0xE0,0x61,0x00,0x61,0x00,0x71,0x00,0x6F,0xC0,0xE8,0x40,0x68,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x62C9, {0x61,0x00,0x61,0x00,0xFF,0xE0,0xFF,0xE0,0x68,0x80,0x64,0x80,0x74,0x80,0x63,0x80,0xE3,0x80,0x63,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x62CA, {0x64,0x80,0x64,0x80,0xF4,0x80,0xFF,0xE0,0x68,0xC0,0x7A,0x80,0x79,0x80,0x69,0x80,0xE8,0x80,0x68,0x80,0x68,0x80,0x68,0x80,0x00,0x00,}}, +{ 0x62CC, {0x61,0x00,0x61,0x00,0xF5,0x40,0xF9,0x40,0x67,0xC0,0x61,0x00,0x71,0x00,0x6F,0xE0,0xE1,0x00,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x62CD, {0x10,0x40,0x10,0x80,0x79,0x00,0x13,0xE0,0x12,0x20,0x1A,0x20,0x32,0x20,0x53,0xE0,0x12,0x20,0x12,0x20,0x13,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x62CF, {0x20,0x00,0xFF,0xC0,0x69,0x40,0x79,0x80,0x1B,0x80,0x24,0x60,0xC3,0x00,0x3C,0x00,0x3F,0x80,0x7F,0xC0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x62D0, {0x10,0x00,0x17,0xE0,0x7C,0x20,0x17,0xE0,0x1C,0x20,0x30,0x00,0x3F,0xE0,0x51,0x20,0x11,0x20,0x12,0x20,0x14,0x20,0x18,0x40,0x00,0x00,}}, +{ 0x62D1, {0x64,0x80,0x64,0x80,0xFF,0xE0,0xFF,0xE0,0x64,0x80,0x64,0x80,0x77,0x80,0x64,0x80,0xE4,0x80,0x64,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x62D2, {0x20,0x00,0x27,0xE0,0xFC,0x00,0x27,0xC0,0x24,0x40,0x24,0x40,0x3C,0x40,0xE7,0xC0,0x24,0x40,0x24,0x00,0x27,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x62D3, {0x20,0x00,0x2F,0xE0,0xF1,0x00,0x22,0x00,0x22,0x00,0x27,0xC0,0x3C,0x40,0x74,0x40,0xA4,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x62D4, {0x62,0x80,0x62,0x40,0xFF,0xE0,0xFF,0xE0,0x62,0x80,0x62,0x80,0x77,0x80,0x65,0x80,0xE5,0x80,0x69,0x80,0x72,0x40,0x64,0x20,0x00,0x00,}}, +{ 0x62D7, {0x30,0xC0,0x32,0xC0,0x7A,0xC0,0x7C,0xE0,0x35,0xE0,0x35,0xE0,0x3A,0xE0,0x32,0xE0,0x75,0xE0,0x3F,0xA0,0x31,0xA0,0x31,0x60,0x00,0x00,}}, +{ 0x62D8, {0x12,0x00,0x12,0x00,0x77,0xE0,0x14,0x20,0x18,0x20,0x17,0xA0,0x14,0xA0,0x34,0xA0,0x57,0xA0,0x10,0x20,0x10,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x62D9, {0x10,0x80,0x10,0x80,0x7C,0xA0,0x14,0xA0,0x17,0xE0,0x14,0xA0,0x10,0x80,0x34,0xA0,0x54,0xA0,0x14,0xA0,0x17,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x62DB, {0x10,0x00,0x17,0xE0,0x79,0x20,0x11,0x20,0x12,0x20,0x12,0x40,0x1C,0x00,0x33,0xE0,0x52,0x20,0x12,0x20,0x13,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x62DC, {0x08,0x00,0x17,0xE0,0x63,0xC0,0x23,0xC0,0x79,0x80,0x23,0xC0,0x21,0x80,0x39,0x80,0xE7,0xE0,0x21,0x80,0x61,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x62DD, {0x20,0x00,0x2F,0xC0,0xF1,0x00,0x2F,0xC0,0x21,0x00,0x21,0x00,0x3F,0xC0,0x61,0x00,0xA1,0x00,0x2F,0xE0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x62E0, {0x20,0x00,0x29,0x80,0xE9,0x80,0x3D,0x80,0x35,0x80,0x35,0x80,0x6D,0x80,0xAA,0x80,0x2E,0xA0,0x34,0x60,0x23,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x62E1, {0x20,0x80,0x20,0x80,0xF7,0xE0,0x24,0x00,0x24,0x80,0x34,0x80,0x64,0x80,0xA5,0x00,0x25,0x40,0x29,0xC0,0x76,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x62EC, {0x20,0x40,0x21,0x80,0xFF,0x00,0x21,0x00,0x3F,0xE0,0x21,0x00,0x61,0x00,0xAF,0xC0,0x28,0x40,0x28,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x62ED, {0x21,0x80,0x21,0x40,0xFF,0xE0,0x21,0x00,0x21,0x00,0x3F,0x00,0x25,0x00,0x64,0x80,0xA4,0x80,0x26,0xA0,0x38,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x62EE, {0x61,0x00,0x61,0x00,0xFF,0xE0,0xFF,0xE0,0x61,0x00,0x67,0xC0,0x70,0x00,0x67,0xC0,0xE4,0x40,0x64,0x40,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x62EF, {0x60,0x00,0x67,0x80,0xF1,0x00,0xFF,0x40,0x63,0x40,0x63,0x80,0x75,0x80,0x65,0xC0,0xE9,0x60,0x63,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x62F1, {0x65,0x80,0x65,0x80,0xF5,0x80,0xFF,0xC0,0x65,0x80,0x65,0x80,0x75,0x80,0x75,0x80,0xFF,0xE0,0x64,0x80,0x68,0x40,0x70,0x40,0x00,0x00,}}, +{ 0x62F3, {0x24,0x80,0x15,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x26,0x80,0xDC,0x60,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x62F5, {0x62,0x00,0x62,0x00,0xFF,0xE0,0xFF,0xE0,0x67,0xC0,0x68,0x40,0x78,0x80,0x69,0x80,0xEF,0xE0,0x69,0x80,0x69,0x80,0x69,0x80,0x00,0x00,}}, +{ 0x62F6, {0x25,0x20,0x25,0x20,0xFA,0x40,0x22,0x40,0x27,0x20,0x21,0x00,0x31,0xC0,0x62,0x40,0xA6,0x80,0x21,0x80,0x23,0x00,0x2C,0x00,0x00,0x00,}}, +{ 0x62F7, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x21,0x40,0x3F,0xE0,0x31,0x00,0x63,0xC0,0xA6,0x00,0x2B,0xC0,0x20,0x40,0x20,0x40,0x61,0x80,0x00,0x00,}}, +{ 0x62FE, {0x21,0x00,0x23,0x00,0xF2,0x80,0x24,0x80,0x2F,0xC0,0x30,0x20,0x60,0x00,0xA7,0x80,0x24,0x80,0x24,0x80,0x27,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x62FF, {0x04,0x00,0x0A,0x00,0xFF,0xE0,0xFF,0xE0,0x31,0x80,0x3F,0x80,0x07,0x00,0x3C,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6301, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x21,0x00,0x3F,0xE0,0x20,0x80,0x60,0x80,0xBF,0xE0,0x24,0x80,0x22,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6302, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xF1,0x00,0x7F,0xE0,0x61,0x00,0x71,0x00,0x6F,0xC0,0xE1,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6307, {0x24,0x00,0x24,0xC0,0xF7,0x00,0x24,0x20,0x23,0xE0,0x30,0x00,0x67,0xC0,0xA4,0x40,0x27,0xC0,0x24,0x40,0x27,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x6308, {0x28,0x00,0x37,0xC0,0x79,0x40,0x79,0x40,0x32,0x40,0x64,0x80,0x03,0x00,0x3C,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6309, {0x21,0x00,0x21,0x00,0x2F,0xE0,0xF8,0x40,0x21,0x00,0x3F,0xE0,0x22,0x80,0xE2,0x80,0x26,0x80,0x21,0x80,0x22,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x630C, {0x62,0x00,0x62,0x00,0xF7,0x80,0xFC,0x80,0x73,0x80,0x61,0x00,0x73,0x80,0x77,0xC0,0xFC,0xA0,0x64,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x6311, {0x22,0x80,0x22,0x80,0xFA,0xC0,0x2A,0xC0,0x26,0x80,0x32,0x80,0x66,0xC0,0xAA,0xA0,0x32,0xA0,0x24,0xA0,0x28,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x6319, {0x28,0x80,0x24,0x80,0xFF,0xE0,0x11,0x00,0x21,0x00,0x3E,0xC0,0xC4,0x20,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x631F, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x29,0x40,0x25,0x40,0x25,0x80,0x7F,0xE0,0xA3,0x00,0x22,0x80,0x24,0x80,0x28,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x6327, {0x30,0x00,0x3F,0xE0,0x7B,0x20,0x7B,0x60,0x35,0x60,0x39,0xA0,0x3B,0x60,0x33,0x60,0x75,0xA0,0x31,0x20,0x31,0x20,0x33,0x60,0x00,0x00,}}, +{ 0x6328, {0x22,0x00,0x22,0x80,0x24,0xC0,0xFF,0x40,0x24,0x00,0x27,0xC0,0x29,0x00,0xF1,0x00,0x3F,0xE0,0x21,0x00,0x22,0x80,0x64,0x60,0x00,0x00,}}, +{ 0x632B, {0x21,0x00,0x21,0x00,0xF5,0x40,0x25,0x40,0x25,0x40,0x3B,0xA0,0x61,0x20,0xA1,0x00,0x2F,0xC0,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x632F, {0x20,0x00,0x2F,0xE0,0xF8,0x00,0x2B,0xC0,0x28,0x00,0x2F,0xE0,0x7B,0x40,0xAB,0x40,0x2A,0x80,0x32,0x80,0x33,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x633A, {0x40,0x00,0x5C,0xC0,0xE7,0x80,0x48,0x80,0x5C,0x80,0x47,0xE0,0x74,0x80,0xD4,0x80,0x4B,0xC0,0x5C,0x00,0x52,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x633D, {0x22,0x00,0x23,0x80,0xFD,0x00,0x2F,0xC0,0x29,0x40,0x39,0x40,0x6F,0xC0,0xAB,0x40,0x23,0x00,0x25,0x20,0x29,0x20,0x30,0xE0,0x00,0x00,}}, +{ 0x633E, {0x61,0x00,0x61,0x00,0xFF,0xE0,0xFF,0xE0,0x65,0x80,0x65,0xC0,0x7B,0x20,0x69,0x20,0xE3,0x80,0x62,0x80,0x64,0x40,0x78,0x20,0x00,0x00,}}, +{ 0x633F, {0x20,0x40,0x21,0x80,0xFF,0x00,0x3F,0xE0,0x21,0x00,0x2F,0xC0,0x79,0x40,0xAF,0xC0,0x29,0x40,0x2F,0xC0,0x21,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6349, {0x20,0x00,0x2F,0xC0,0xF8,0x40,0x38,0x40,0x2F,0xC0,0x21,0x00,0x39,0x00,0x69,0xC0,0xA9,0x00,0x2D,0x00,0x33,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x634C, {0x20,0x20,0x2F,0xA0,0x79,0xA0,0x29,0xA0,0x2F,0xA0,0x24,0xA0,0x34,0xA0,0x67,0xA0,0x25,0x20,0x29,0x20,0x29,0x20,0x26,0x60,0x00,0x00,}}, +{ 0x634D, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x60,0x00,0x7F,0xC0,0x61,0x00,0xEF,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x634F, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x68,0x40,0x61,0x00,0x63,0x00,0xEF,0xC0,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6350, {0x30,0x00,0x37,0xE0,0x7C,0x20,0x7F,0xE0,0x30,0x00,0x37,0xE0,0x3C,0x20,0x37,0xE0,0x77,0xE0,0x37,0xE0,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x6355, {0x21,0x80,0x21,0x40,0xFF,0xE0,0x2F,0xC0,0x29,0x40,0x39,0x40,0x6F,0xC0,0xA9,0x40,0x2F,0xC0,0x29,0x40,0x29,0x40,0x29,0xC0,0x00,0x00,}}, +{ 0x6357, {0x21,0x00,0x25,0x00,0xF5,0xC0,0x25,0x00,0x3F,0xE0,0x35,0x80,0x65,0x40,0xA9,0xA0,0x33,0xA0,0x21,0x00,0x26,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x635C, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x2F,0xC0,0x29,0x40,0x2F,0xC0,0x21,0x00,0x7F,0xC0,0xA4,0x80,0x23,0x00,0x25,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x6367, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x27,0x80,0x73,0x00,0x7F,0xE0,0x65,0x80,0xAF,0xC0,0xB1,0x20,0x27,0xC0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6368, {0x21,0x00,0x21,0x00,0xF2,0x80,0x2D,0x60,0x27,0xC0,0x31,0x00,0x6F,0xE0,0xA0,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x6369, {0x60,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x69,0x40,0x79,0x00,0xEF,0xE0,0x69,0x00,0x73,0x00,0x7C,0x80,0x70,0x60,0x00,0x00,}}, +{ 0x636B, {0x30,0x00,0x37,0xE0,0x7F,0xE0,0x7F,0xE0,0x37,0xE0,0x34,0x20,0x3C,0x20,0x34,0x20,0x74,0x20,0x34,0x20,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x636E, {0x20,0x00,0x2F,0xC0,0xF8,0x40,0x2F,0xC0,0x29,0x00,0x3F,0xE0,0x69,0x00,0xA9,0x00,0x37,0xC0,0x34,0x40,0x27,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x6372, {0x21,0x00,0x25,0x40,0xFF,0xE0,0x22,0x80,0x3F,0xE0,0x34,0x80,0x2F,0xC0,0x70,0xA0,0xA7,0x80,0x24,0x40,0x24,0x40,0x63,0xC0,0x00,0x00,}}, +{ 0x6376, {0x60,0xC0,0x6F,0x00,0xFF,0xC0,0xFF,0xC0,0x65,0x80,0x7F,0xE0,0x65,0x80,0x67,0xC0,0xEF,0xC0,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6377, {0x21,0x00,0x3F,0xE0,0xFF,0xC0,0x21,0x40,0x3F,0xE0,0x21,0x40,0x6F,0xC0,0xA1,0x00,0x25,0xC0,0x25,0x00,0x2B,0x00,0x31,0xE0,0x00,0x00,}}, +{ 0x637A, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x23,0x00,0x24,0x80,0x3F,0xC0,0x70,0x20,0xAF,0xC0,0x21,0x00,0x25,0x40,0x29,0x40,0x23,0x00,0x00,0x00,}}, +{ 0x637B, {0x21,0x00,0x23,0x00,0xF4,0x80,0x2F,0xC0,0x30,0x20,0x3F,0xC0,0x60,0x80,0xA3,0x80,0x25,0x40,0x34,0x20,0x34,0xA0,0x23,0x80,0x00,0x00,}}, +{ 0x6380, {0x63,0x00,0x65,0x00,0xF9,0x00,0xF1,0xE0,0x7F,0xA0,0x77,0xC0,0x75,0x80,0x75,0x80,0xF5,0x80,0x75,0x80,0x66,0x40,0x64,0x20,0x00,0x00,}}, +{ 0x6383, {0x20,0x00,0x27,0x80,0xF0,0x80,0x27,0x80,0x27,0x80,0x20,0x00,0x7F,0xE0,0xB1,0x00,0x2F,0xC0,0x29,0x40,0x29,0xC0,0x61,0x00,0x00,0x00,}}, +{ 0x6388, {0x20,0xC0,0x2F,0x40,0xF9,0x40,0x25,0x80,0x2F,0xE0,0x28,0x40,0x37,0x80,0x62,0x80,0xA3,0x00,0x21,0x00,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x6389, {0x61,0x00,0x61,0x00,0xF1,0xE0,0xFF,0xC0,0x68,0x40,0x6F,0xC0,0x78,0x40,0x6F,0xC0,0xEF,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x638C, {0x28,0x80,0x15,0x00,0x7F,0xE0,0x9F,0x00,0x11,0x00,0x1F,0x00,0x3F,0x00,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x638E, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF2,0x80,0x64,0x80,0x6F,0xE0,0x70,0x40,0x67,0xC0,0xE5,0xC0,0x67,0xC0,0x64,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x638F, {0x32,0x00,0x32,0x00,0x7F,0xE0,0x7E,0x20,0x33,0xA0,0x35,0x20,0x3F,0xA0,0x31,0x20,0x75,0xE0,0x37,0xE0,0x34,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x6392, {0x22,0x80,0x22,0x80,0xFE,0xE0,0x22,0x80,0x22,0x80,0x3E,0xE0,0x62,0x80,0xA2,0x80,0x3E,0xE0,0x24,0x80,0x28,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x6396, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF5,0x80,0x65,0xC0,0x69,0x40,0x79,0xC0,0x6A,0xC0,0xE9,0x80,0x69,0x80,0x6B,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x6398, {0x40,0x00,0x4F,0xE0,0xF8,0x20,0x4F,0xE0,0x48,0x80,0x6A,0xC0,0x4A,0xC0,0xCB,0xC0,0x4C,0xA0,0x54,0xA0,0x57,0xE0,0x44,0x20,0x00,0x00,}}, +{ 0x639B, {0x24,0x80,0x24,0x80,0xFE,0x80,0x24,0x80,0x3F,0xC0,0x24,0xA0,0x64,0xA0,0xBF,0x80,0x24,0x80,0x26,0x80,0x38,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x639F, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF8,0x00,0x7F,0xE0,0x61,0x00,0x79,0x00,0x69,0xC0,0xE9,0x00,0x6D,0x00,0x73,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x63A0, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2F,0xC0,0x28,0x40,0x38,0x40,0x6F,0xC0,0xA1,0x00,0x25,0x40,0x29,0x20,0x31,0x20,0x23,0x00,0x00,0x00,}}, +{ 0x63A1, {0x20,0xC0,0x2F,0x40,0xF9,0x40,0x25,0x80,0x31,0x00,0x21,0x00,0x7F,0xE0,0xA3,0x00,0x25,0x80,0x29,0x40,0x31,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x63A2, {0x20,0x00,0x2F,0xE0,0xFA,0x80,0x24,0xA0,0x28,0xE0,0x21,0x00,0x7F,0xE0,0xA3,0x80,0x25,0x40,0x39,0x20,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x63A3, {0x60,0x40,0xF9,0x40,0xF9,0x40,0xF9,0x40,0x79,0x40,0x68,0x40,0x7B,0xC0,0x1C,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x63A5, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x22,0x80,0x2F,0xE0,0x21,0x00,0x3F,0xE0,0x62,0x80,0xA6,0x80,0x21,0x80,0x22,0x40,0x6C,0x40,0x00,0x00,}}, +{ 0x63A7, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2A,0x80,0x22,0xA0,0x24,0xE0,0x38,0x00,0x6F,0xC0,0xA1,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x63A8, {0x22,0x80,0x22,0x80,0xF7,0xE0,0x2D,0x00,0x35,0x00,0x27,0xC0,0x35,0x00,0x65,0x00,0xA7,0xC0,0x25,0x00,0x27,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x63A9, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x27,0x80,0x29,0x40,0x3F,0xE0,0x69,0x40,0xAF,0xC0,0x29,0x40,0x2F,0xC0,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x63AA, {0x25,0x00,0x25,0x00,0xFF,0xC0,0x25,0x00,0x3F,0xE0,0x20,0x00,0x7F,0x80,0xA8,0x80,0x2F,0x80,0x28,0x80,0x2F,0x80,0x68,0x80,0x00,0x00,}}, +{ 0x63AB, {0x60,0x00,0x7F,0xE0,0xFA,0x00,0xFF,0xC0,0x6B,0x40,0x6B,0x40,0x7F,0xC0,0x6A,0x80,0xEE,0x80,0x7F,0xC0,0x62,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x63AC, {0x12,0x00,0x12,0x00,0x7F,0xE0,0x14,0x20,0x19,0x60,0x1D,0x60,0x37,0xA0,0x5F,0xE0,0x13,0xA0,0x17,0x60,0x19,0x20,0x11,0x40,0x00,0x00,}}, +{ 0x63B2, {0x20,0x00,0x27,0xC0,0xF4,0x40,0x27,0xC0,0x27,0xC0,0x32,0x00,0x67,0xE0,0xAC,0xA0,0x37,0x20,0x24,0x20,0x23,0xA0,0x60,0xC0,0x00,0x00,}}, +{ 0x63B4, {0x10,0x00,0x17,0xE0,0x7C,0x20,0x17,0xE0,0x14,0xA0,0x1F,0xE0,0x34,0xA0,0x54,0xE0,0x17,0xE0,0x14,0x20,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x63B5, {0x61,0x00,0x63,0x00,0xF6,0x80,0xFF,0xC0,0x70,0x20,0x6E,0xC0,0x7B,0xC0,0x6B,0xC0,0xEF,0xC0,0x6D,0xC0,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x63BB, {0x20,0x00,0x2F,0xC0,0xF2,0x80,0x23,0x80,0x3D,0x60,0x31,0x00,0x6F,0xC0,0xA9,0x40,0x2F,0xC0,0x21,0x40,0x21,0xC0,0x7E,0x20,0x00,0x00,}}, +{ 0x63BE, {0x62,0x00,0x63,0x80,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x61,0x00,0x73,0xC0,0x6F,0xC0,0xE7,0x80,0x67,0xC0,0x6D,0xA0,0x63,0x00,0x00,0x00,}}, +{ 0x63C0, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFF,0xC0,0x6F,0xC0,0x6B,0xC0,0x7B,0xC0,0x6F,0xC0,0xE7,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x63C3, {0x48,0x80,0x44,0x80,0xFF,0xE0,0x40,0x00,0x5E,0x40,0x53,0x40,0x5F,0x40,0x73,0x40,0xDF,0x40,0x52,0x40,0x52,0x40,0x56,0xC0,0x00,0x00,}}, +{ 0x63C4, {0x67,0x00,0x63,0x00,0xF6,0x80,0xFF,0xC0,0x70,0x20,0x7E,0x40,0x73,0xC0,0x7B,0xC0,0xFF,0x80,0x7F,0xC0,0x73,0xC0,0x77,0xC0,0x00,0x00,}}, +{ 0x63C6, {0x67,0x80,0x63,0xA0,0xFF,0xA0,0xF4,0xC0,0x68,0x40,0x67,0xA0,0x71,0x00,0x63,0x00,0xEF,0xC0,0x62,0x80,0x64,0x40,0x78,0x40,0x00,0x00,}}, +{ 0x63C9, {0x60,0x00,0x6F,0x80,0xF3,0x00,0xFF,0xE0,0x63,0x40,0x6D,0x80,0x73,0x00,0x73,0x00,0xFF,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x63CF, {0x24,0x80,0x24,0x80,0xFF,0xE0,0x24,0x80,0x20,0x00,0x2F,0xC0,0x29,0x40,0x69,0x40,0xAF,0xC0,0x29,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x63D0, {0x20,0x00,0x27,0x80,0xF4,0x80,0x27,0x80,0x27,0x80,0x30,0x00,0x7F,0xE0,0xA1,0x00,0x29,0xC0,0x2D,0x00,0x33,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x63D2, {0x60,0x40,0x61,0x80,0xFF,0x00,0xF1,0x00,0x7F,0xE0,0x65,0x00,0x69,0xC0,0x69,0x40,0xED,0x40,0x69,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x63D6, {0x27,0x80,0x24,0x80,0xF7,0x80,0x20,0x00,0x3F,0xE0,0x24,0x80,0x37,0x80,0x64,0x80,0xA7,0x80,0x27,0xE0,0x3C,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x63DA, {0x20,0x00,0x27,0x80,0xF4,0x80,0x27,0x80,0x27,0x80,0x30,0x00,0x7F,0xE0,0xA4,0x00,0x27,0xC0,0x25,0xC0,0x2B,0x40,0x23,0x80,0x00,0x00,}}, +{ 0x63DB, {0x22,0x00,0x23,0x80,0xFD,0x00,0x2F,0xC0,0x2B,0x40,0x3D,0xC0,0x68,0x40,0xA9,0x40,0x3F,0xE0,0x23,0x00,0x24,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x63E1, {0x20,0x00,0x2F,0xC0,0xF8,0x40,0x2F,0xC0,0x2F,0xE0,0x29,0x80,0x2A,0xC0,0xEF,0xA0,0x29,0x00,0x37,0xC0,0x31,0x00,0x6F,0xE0,0x00,0x00,}}, +{ 0x63E3, {0x61,0x00,0x69,0x40,0xF9,0x40,0xFF,0xC0,0x60,0x00,0x7F,0xE0,0x61,0x00,0x6F,0xC0,0xEB,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x63E9, {0x65,0x80,0x65,0xA0,0xF7,0xC0,0xF5,0x80,0x67,0xA0,0x79,0xE0,0x62,0x00,0x67,0xC0,0xE7,0xC0,0x67,0xC0,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x63EE, {0x20,0x00,0x2F,0xE0,0xF9,0x40,0x2F,0xC0,0x2F,0xC0,0x39,0x40,0x6F,0xC0,0xA9,0x40,0x2F,0xC0,0x3F,0xE0,0x21,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x63F4, {0x20,0x40,0x21,0x80,0xFF,0x40,0x25,0x80,0x2F,0xC0,0x22,0x00,0x7F,0xE0,0xA4,0x00,0x27,0xC0,0x2A,0x80,0x33,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x63F6, {0x60,0x00,0x7F,0xC0,0xFB,0xC0,0xFF,0xC0,0x6B,0x80,0x6B,0xC0,0x7F,0xC0,0x6B,0xA0,0xEF,0xA0,0x7F,0xE0,0x63,0x80,0x63,0x80,0x00,0x00,}}, +{ 0x63FA, {0x21,0xC0,0x2E,0x40,0xF9,0x40,0x25,0x80,0x20,0x00,0x3F,0xC0,0x61,0x00,0xBF,0xE0,0x21,0x00,0x29,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x6406, {0x63,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x7F,0xE0,0x61,0x00,0x7F,0xC0,0x7B,0x40,0xFF,0xE0,0x7F,0xE0,0x68,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x640D, {0x20,0x00,0x27,0x80,0xF4,0x80,0x27,0x80,0x2F,0xC0,0x38,0x40,0x6F,0xC0,0xA8,0x40,0x2F,0xC0,0x2F,0xC0,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x640F, {0x61,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x69,0x40,0x7F,0xC0,0x69,0x40,0xEF,0xE0,0x6F,0xE0,0x62,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x6413, {0x64,0x80,0x63,0x80,0xFF,0xC0,0xF7,0x80,0x63,0x00,0x7F,0xE0,0x64,0x00,0x67,0xC0,0xE9,0x00,0x71,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6416, {0x62,0x00,0x63,0x80,0xFF,0x80,0xFD,0x00,0x66,0x00,0x7F,0xC0,0x69,0x00,0x7F,0xE0,0xE1,0x00,0x69,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x6417, {0x61,0x00,0x62,0x00,0xF7,0xC0,0xF7,0xC0,0x64,0x40,0x67,0xC0,0x74,0x00,0x67,0xE0,0xE7,0xE0,0x6F,0xE0,0x6F,0xA0,0x68,0xC0,0x00,0x00,}}, +{ 0x641C, {0x65,0x00,0x69,0xC0,0xF9,0x40,0xF9,0x40,0x69,0x40,0x6F,0xC0,0x61,0x00,0x7F,0xC0,0xE4,0x80,0x63,0x00,0x67,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x6426, {0x30,0x00,0x37,0xE0,0x79,0x20,0x7F,0x60,0x34,0xC0,0x34,0xC0,0x3F,0x60,0x33,0x60,0x77,0xE0,0x37,0xE0,0x39,0xA0,0x36,0xC0,0x00,0x00,}}, +{ 0x6428, {0x30,0x00,0x37,0xC0,0x7F,0xC0,0x7F,0xC0,0x37,0xC0,0x30,0x00,0x3F,0xE0,0x33,0x60,0x77,0xE0,0x37,0xE0,0x39,0xA0,0x33,0x60,0x00,0x00,}}, +{ 0x642C, {0x48,0x00,0x49,0xC0,0xFF,0x40,0x5B,0x60,0x57,0x60,0x57,0x20,0x7F,0xC0,0xD3,0x40,0x5A,0xC0,0x5A,0x80,0x63,0x40,0x66,0x20,0x00,0x00,}}, +{ 0x642D, {0x24,0x80,0x24,0x80,0xFF,0xE0,0x24,0x80,0x23,0x00,0x3C,0xC0,0x77,0xA0,0xA0,0x00,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x6434, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x3F,0x80,0x0A,0x00,0x7F,0xC0,0x23,0x80,0x7C,0xC0,0x9F,0x60,0x7F,0xC0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6436, {0x61,0x00,0x63,0x00,0xF7,0x80,0xFF,0xC0,0x77,0xE0,0x64,0x80,0x77,0x80,0x64,0x80,0xE7,0x80,0x6F,0xC0,0x74,0x40,0x67,0xC0,0x00,0x00,}}, +{ 0x643A, {0x25,0x00,0x27,0xE0,0xFD,0x80,0x3F,0xC0,0x27,0xC0,0x25,0x80,0x37,0xE0,0x7F,0x80,0xA5,0xE0,0x24,0x20,0x28,0x20,0x30,0xC0,0x00,0x00,}}, +{ 0x643E, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2A,0x80,0x24,0xC0,0x34,0x00,0x67,0xE0,0xA9,0x00,0x31,0xC0,0x21,0xC0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6442, {0x20,0x00,0x2F,0xE0,0xF2,0x80,0x23,0x80,0x23,0x80,0x22,0xE0,0x7F,0x80,0xA4,0x40,0x22,0x80,0x22,0x00,0x2C,0xC0,0x70,0x20,0x00,0x00,}}, +{ 0x644E, {0x60,0x00,0x7F,0xC0,0xE6,0xC0,0xFF,0xC0,0x6B,0xC0,0x73,0x40,0x65,0x80,0x7B,0xC0,0xE7,0x60,0x66,0x40,0x63,0x80,0x6E,0x00,0x00,0x00,}}, +{ 0x6458, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x22,0x80,0x2F,0xC0,0x39,0x40,0x6F,0xC0,0xA9,0x40,0x2B,0xC0,0x2B,0xC0,0x28,0x40,0x28,0xC0,0x00,0x00,}}, +{ 0x6467, {0x61,0x00,0x69,0x40,0xFF,0xC0,0xFF,0xC0,0x62,0x80,0x67,0xE0,0x75,0x80,0x7F,0xC0,0xF7,0xC0,0x67,0xC0,0x67,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x6469, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xE0,0x69,0x80,0x7F,0x00,0x62,0x00,0x5F,0xC0,0x7F,0xE0,0x82,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x646F, {0x21,0x00,0x7B,0x00,0xFF,0x80,0xFF,0xA0,0xFF,0xA0,0x7C,0x60,0x21,0x00,0x1E,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6476, {0x61,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x69,0x40,0x7F,0xC0,0x63,0xC0,0xEF,0xC0,0x7F,0xE0,0x64,0xC0,0x62,0x80,0x00,0x00,}}, +{ 0x6478, {0x22,0x80,0x22,0x80,0xFF,0xE0,0x27,0x80,0x24,0x80,0x27,0x80,0x34,0x80,0x67,0x80,0xA1,0x00,0x2F,0xE0,0x24,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x647A, {0x10,0x00,0x1F,0xE0,0x7D,0xA0,0x17,0xE0,0x19,0xA0,0x1B,0x60,0x31,0x00,0x57,0xC0,0x14,0x40,0x17,0xC0,0x17,0xC0,0x34,0x40,0x00,0x00,}}, +{ 0x6483, {0x21,0xC0,0xFD,0x40,0x7A,0x60,0x7F,0xE0,0x79,0x40,0xFC,0x80,0x23,0x60,0x3C,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6488, {0x64,0x80,0x77,0xA0,0xEE,0xE0,0xEE,0xC0,0x73,0x20,0x6F,0xE0,0x69,0x40,0x73,0x00,0xEF,0xC0,0x62,0x40,0x64,0x40,0x68,0x80,0x00,0x00,}}, +{ 0x6492, {0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x2B,0x40,0x3F,0x40,0x21,0x40,0x6E,0xC0,0xAA,0x80,0x2E,0x80,0x2E,0x80,0x2B,0x40,0x2A,0x20,0x00,0x00,}}, +{ 0x6493, {0x61,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x7F,0xE0,0x64,0x80,0x67,0xE0,0x78,0x00,0xEF,0xC0,0x63,0x80,0x65,0xA0,0x78,0xE0,0x00,0x00,}}, +{ 0x6495, {0x6A,0x20,0x6A,0x40,0xFF,0x80,0xFF,0x80,0x6F,0xE0,0x6B,0xC0,0x7F,0xC0,0x7B,0xC0,0xFF,0xC0,0x6F,0x40,0x73,0x40,0x62,0x40,0x00,0x00,}}, +{ 0x649A, {0x48,0x80,0x48,0xC0,0xEE,0xC0,0x4B,0xE0,0x56,0x80,0x54,0x80,0x49,0x80,0x7B,0x40,0xC4,0x20,0x54,0x40,0x52,0xA0,0x62,0xA0,0x00,0x00,}}, +{ 0x649E, {0x21,0x00,0x2F,0xC0,0xF4,0x80,0x3F,0xE0,0x29,0x40,0x2F,0xC0,0x39,0x40,0x6F,0xC0,0xA1,0x00,0x27,0xC0,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x64A4, {0x24,0x80,0x24,0x80,0xFE,0x80,0x2F,0xE0,0x3F,0x40,0x21,0x40,0x7F,0x40,0xB3,0x80,0x3E,0x80,0x3E,0x80,0x33,0x40,0x36,0x20,0x00,0x00,}}, +{ 0x64A5, {0x67,0x80,0x6B,0xA0,0xF6,0xE0,0xF8,0x40,0x7D,0xE0,0x65,0x80,0x7D,0xA0,0x72,0x60,0xFF,0xC0,0x65,0xC0,0x65,0xC0,0x7B,0x20,0x00,0x00,}}, +{ 0x64A9, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFC,0xE0,0x7F,0xC0,0x64,0xA0,0x77,0x80,0x64,0x80,0xE7,0x80,0x69,0x40,0x71,0x40,0x63,0x00,0x00,0x00,}}, +{ 0x64AB, {0x24,0x00,0x24,0x00,0xFF,0xE0,0x3A,0xC0,0x2A,0xC0,0x3F,0xE0,0x6A,0xC0,0xAA,0xC0,0x3F,0xE0,0x2D,0x40,0x2A,0xA0,0x32,0xA0,0x00,0x00,}}, +{ 0x64AD, {0x20,0x80,0x2F,0x40,0xF9,0x40,0x3F,0xE0,0x23,0x80,0x35,0x80,0x69,0x40,0xBF,0xE0,0x29,0x40,0x2F,0xC0,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x64AE, {0x27,0x80,0x24,0x80,0xF7,0x80,0x24,0x80,0x27,0x80,0x3F,0xE0,0x72,0x00,0xBF,0xC0,0x3F,0x40,0x3E,0x80,0x33,0x40,0x22,0x20,0x00,0x00,}}, +{ 0x64B0, {0x20,0x00,0x2F,0xC0,0xFB,0x40,0x2F,0xC0,0x39,0x20,0x2F,0xE0,0x64,0x80,0xAF,0xC0,0x24,0x80,0x3F,0xE0,0x24,0x80,0x68,0x40,0x00,0x00,}}, +{ 0x64B2, {0x22,0x80,0x2A,0xC0,0xFF,0xE0,0x24,0x40,0x22,0x80,0x3F,0xC0,0x61,0x00,0xA7,0xC0,0x2F,0xE0,0x23,0x00,0x2C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x64B9, {0x2A,0x40,0x27,0x80,0xFF,0xE0,0x37,0xC0,0x24,0x80,0x37,0x80,0x64,0x80,0xA7,0x80,0x27,0x80,0x23,0x20,0x25,0x20,0x38,0xE0,0x00,0x00,}}, +{ 0x64BB, {0x71,0x80,0x6B,0xC0,0xEF,0xE0,0xF7,0xE0,0x6B,0xC0,0x6F,0xE0,0x61,0x80,0x7B,0xC0,0xEF,0xE0,0x6F,0xE0,0x75,0x80,0x63,0xE0,0x00,0x00,}}, +{ 0x64BC, {0x61,0xC0,0x61,0xA0,0xFF,0xE0,0xFF,0xC0,0x69,0xC0,0x6F,0x80,0x7D,0xA0,0x7F,0x60,0xFB,0x20,0x6B,0xA0,0x72,0xA0,0x61,0x80,0x00,0x00,}}, +{ 0x64C1, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x25,0x40,0x2B,0xE0,0x3B,0x40,0x65,0xE0,0xAB,0x40,0x3F,0xE0,0x25,0x40,0x29,0xE0,0x31,0x00,0x00,0x00,}}, +{ 0x64C2, {0x60,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x7D,0xC0,0x6D,0xC0,0x61,0x00,0x6F,0xC0,0xEF,0xC0,0x6F,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x64C5, {0x61,0x00,0x7F,0xE0,0xFF,0xC0,0xFB,0xC0,0x6B,0xC0,0x6F,0xC0,0x77,0x80,0x64,0x80,0xE7,0x80,0x67,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x64C7, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x61,0x00,0x7F,0xE0,0x74,0xC0,0xFF,0xE0,0x6F,0xC0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x64CD, {0x20,0x00,0x27,0x80,0xF4,0x80,0x27,0x80,0x3E,0xE0,0x32,0xA0,0x7E,0xE0,0xA1,0x00,0x3F,0xE0,0x27,0x80,0x39,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x64D2, {0x61,0x00,0x63,0x80,0xFF,0xE0,0xFF,0xE0,0x6B,0xC0,0x6E,0xC0,0x7F,0xC0,0x73,0x00,0xFF,0xE0,0x77,0xA0,0x70,0xA0,0x70,0x60,0x00,0x00,}}, +{ 0x64D4, {0x61,0x00,0x63,0x80,0xFF,0xE0,0xFF,0xE0,0x6A,0xE0,0x6D,0x80,0x7B,0xC0,0x69,0x80,0xEB,0xC0,0x7B,0xC0,0x73,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x64D8, {0x01,0x80,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0xE9,0x80,0x3B,0x00,0x1C,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x64DA, {0x61,0x00,0x63,0xC0,0xFF,0xE0,0xFF,0xC0,0x69,0xC0,0x6F,0xE0,0x79,0xC0,0x6F,0xC0,0xEF,0xC0,0x7F,0xC0,0x76,0xE0,0x61,0x80,0x00,0x00,}}, +{ 0x64E0, {0x42,0x00,0x7F,0xE0,0xFF,0xC0,0xFB,0xC0,0x6B,0xC0,0x7B,0xA0,0x48,0x80,0xCF,0x80,0xCF,0x80,0x4F,0x80,0x50,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x64E1, {0x61,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x64,0x80,0x67,0x80,0x7F,0xE0,0x77,0xC0,0xE7,0xC0,0x67,0xC0,0x67,0x80,0x7F,0xE0,0x00,0x00,}}, +{ 0x64E2, {0x20,0x00,0x3F,0xC0,0xFF,0xC0,0x3F,0xC0,0x3F,0xC0,0x35,0x80,0x6F,0xC0,0xB9,0x00,0x2F,0x80,0x2F,0x80,0x2F,0xE0,0x28,0x00,0x00,0x00,}}, +{ 0x64E3, {0x61,0x00,0x7F,0xE0,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x67,0xC0,0x71,0x00,0x77,0xC0,0xFF,0xE0,0x6F,0xE0,0x6F,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x64E6, {0x21,0x00,0x2F,0xE0,0xFF,0xC0,0x2D,0x40,0x3B,0xC0,0x26,0x80,0x6F,0xC0,0xB0,0x20,0x2F,0xC0,0x29,0x40,0x31,0x40,0x23,0x00,0x00,0x00,}}, +{ 0x64E7, {0x28,0x80,0x6E,0x80,0x6C,0x80,0x66,0x80,0x6A,0x80,0xFF,0xE0,0x23,0x80,0x7C,0xC0,0x9F,0x60,0x7F,0xC0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x64EC, {0x28,0x00,0x29,0xE0,0xFE,0xC0,0x2E,0x80,0x2B,0xE0,0x3E,0xC0,0x65,0x80,0xBF,0xE0,0x25,0x80,0x2F,0x80,0x32,0x80,0x24,0x60,0x00,0x00,}}, +{ 0x64EF, {0x61,0x00,0x6F,0xE0,0xFF,0xC0,0xFF,0xC0,0x73,0xA0,0x67,0xA0,0x7C,0x80,0x67,0x80,0xE7,0x80,0x67,0x80,0x66,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x64F1, {0x30,0x00,0x37,0xE0,0x7F,0xE0,0x7F,0xE0,0x37,0xE0,0x35,0x20,0x3D,0xE0,0x37,0xA0,0x77,0xE0,0x37,0xE0,0x35,0xE0,0x34,0x60,0x00,0x00,}}, +{ 0x64F2, {0x52,0x00,0x5F,0xC0,0xFF,0xC0,0xFF,0xC0,0x77,0x80,0x7F,0xC0,0x61,0xC0,0xFF,0xA0,0xDF,0xA0,0x5F,0xE0,0x53,0x80,0xE1,0x80,0x00,0x00,}}, +{ 0x64F4, {0x61,0x00,0x6F,0xE0,0xFF,0xE0,0xFF,0xE0,0x6F,0xE0,0x69,0x80,0x7B,0xC0,0x6B,0xC0,0xEB,0xC0,0x7B,0xC0,0x73,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x64F6, {0x71,0x80,0x7F,0xE0,0xF4,0xC0,0xE6,0xC0,0x7F,0xE0,0x60,0x00,0x7F,0xC0,0x73,0xC0,0xFF,0xC0,0x7F,0xC0,0x72,0x40,0x76,0xC0,0x00,0x00,}}, +{ 0x64FA, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x73,0xC0,0x7F,0x80,0x61,0xA0,0x7E,0xE0,0xFF,0x80,0x7F,0xC0,0x73,0xA0,0x76,0xE0,0x00,0x00,}}, +{ 0x64FD, {0x69,0x40,0x6B,0x40,0xF7,0xA0,0xFF,0xE0,0x6F,0xE0,0x77,0xA0,0x7F,0xE0,0x73,0x00,0xFF,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x64FE, {0x20,0x00,0x2F,0xE0,0xF7,0x80,0x27,0x80,0x27,0x80,0x3F,0xE0,0x7A,0xA0,0xAB,0xC0,0x37,0xA0,0x3E,0x80,0x23,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0x6500, {0x62,0x80,0x6E,0xC0,0xFF,0xE0,0x7B,0xC0,0xE6,0xE0,0x6D,0x80,0xFF,0xE0,0x17,0x00,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6505, {0x65,0x80,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6B,0x40,0x77,0xA0,0x74,0x80,0xE7,0x80,0x67,0x80,0x67,0x80,0x66,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x6518, {0x61,0x00,0x7F,0xE0,0xEF,0xC0,0xEF,0xC0,0x63,0x80,0x6F,0xC0,0x67,0x80,0x73,0x80,0xFF,0xE0,0x7F,0xC0,0x67,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x651C, {0x34,0xA0,0x37,0xE0,0x7F,0xE0,0x7F,0xE0,0x3F,0xC0,0x37,0xC0,0x34,0x80,0x3F,0xE0,0x7F,0xE0,0x3F,0xE0,0x3B,0xA0,0x3B,0xE0,0x00,0x00,}}, +{ 0x651D, {0x60,0x00,0x7F,0xE0,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x60,0x80,0x7F,0xE0,0x6B,0xC0,0xEF,0xC0,0x6F,0xE0,0x7F,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x6523, {0x6E,0x80,0xFF,0xC0,0x7E,0xE0,0xFF,0xE0,0xFF,0xC0,0xFB,0xA0,0x2F,0x00,0x3E,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6524, {0x55,0xC0,0x7F,0xC0,0xFD,0xE0,0xFF,0xE0,0x7B,0x80,0x7F,0xE0,0x49,0x80,0xFF,0xC0,0xDF,0xE0,0x5F,0x80,0x53,0xE0,0xE1,0x00,0x00,0x00,}}, +{ 0x652A, {0x67,0xC0,0x6B,0xC0,0xFF,0xC0,0xFF,0xC0,0x7F,0xE0,0x77,0xC0,0x74,0x80,0xE7,0x80,0x67,0x80,0x67,0x80,0x67,0xA0,0x79,0xE0,0x00,0x00,}}, +{ 0x652B, {0x6F,0xC0,0x6B,0xC0,0xFF,0xC0,0xFF,0xC0,0x65,0x80,0x6F,0xE0,0x7B,0x80,0x6B,0xC0,0xEF,0xE0,0x67,0x80,0x63,0x80,0x7C,0xE0,0x00,0x00,}}, +{ 0x652C, {0x41,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xE0,0x7B,0xE0,0x7F,0xE0,0x6F,0x80,0xC8,0x80,0xCF,0x80,0x4F,0xA0,0x47,0xA0,0xF8,0xE0,0x00,0x00,}}, +{ 0x652F, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x3F,0x00,0x11,0x00,0x11,0x00,0x0E,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x6534, {0x04,0x00,0x04,0x00,0x07,0xE0,0x04,0x00,0x7F,0x80,0x10,0x80,0x09,0x80,0x09,0x00,0x06,0x00,0x0E,0x00,0x31,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x6535, {0x10,0x00,0x10,0x00,0x10,0x00,0x1F,0xE0,0x31,0x80,0x31,0x80,0x49,0x00,0x0B,0x00,0x06,0x00,0x0E,0x00,0x31,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x6536, {0x12,0x00,0x12,0x00,0x57,0xE0,0x57,0xE0,0x5A,0x80,0x52,0x80,0x51,0x80,0x59,0x80,0xF1,0x80,0x93,0x80,0x14,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x6537, {0x02,0x00,0xFA,0x00,0x63,0xE0,0x67,0xE0,0x76,0x80,0x5A,0x80,0x51,0x80,0x11,0x80,0x11,0x80,0x11,0x80,0x22,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x6538, {0x22,0x00,0x32,0x00,0x33,0xE0,0x77,0xE0,0x76,0x80,0xFA,0x80,0x71,0x80,0x71,0x80,0x71,0x80,0x71,0x80,0x62,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x6539, {0x02,0x00,0xF2,0x00,0x13,0xE0,0x16,0x40,0xF4,0x40,0x9A,0x80,0x82,0x80,0x81,0x00,0x91,0x00,0xF2,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x653B, {0x02,0x00,0x02,0x00,0xFB,0xE0,0x24,0x80,0x24,0x80,0x2A,0x80,0x21,0x00,0x31,0x00,0x61,0x00,0x82,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x653E, {0x21,0x00,0x21,0x00,0xF9,0x00,0x23,0xE0,0x22,0x40,0x3E,0x40,0x2A,0x40,0x29,0x80,0x49,0x80,0x49,0x80,0x8E,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x653F, {0x02,0x00,0xFE,0x00,0x23,0xE0,0x26,0x80,0x7A,0x80,0x62,0x80,0x61,0x00,0x61,0x00,0x79,0x00,0x62,0x80,0x8C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x6545, {0x21,0x00,0x21,0x00,0xFB,0xE0,0x26,0x80,0x2A,0x80,0x22,0x80,0x79,0x00,0x49,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x6548, {0x21,0x00,0x31,0x00,0xFD,0xE0,0x6B,0xE0,0x5A,0x80,0xD6,0x80,0x31,0x80,0x31,0x80,0x39,0x80,0x29,0x80,0x42,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x654D, {0x21,0x00,0x31,0x00,0x79,0xE0,0x79,0x00,0xB7,0xC0,0x22,0x40,0xFA,0x40,0x31,0x80,0x79,0x80,0x69,0x80,0xA2,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x654F, {0x41,0x00,0x41,0x00,0x79,0x00,0x81,0xE0,0xFA,0x40,0x6A,0x40,0x6D,0x40,0xFC,0x80,0x68,0x80,0xFD,0x80,0x8E,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x6551, {0x21,0x00,0x29,0x00,0xFD,0xE0,0x22,0x00,0xAA,0x40,0x6C,0x40,0x32,0x40,0x71,0x80,0x69,0x80,0xA1,0x80,0x22,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x6555, {0x21,0x00,0x31,0x00,0xFF,0xE0,0x7B,0xE0,0x7E,0x80,0x6A,0x80,0x79,0x80,0x71,0x80,0x69,0x80,0xA1,0x80,0x22,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x6556, {0x21,0x00,0x31,0x00,0x7B,0xE0,0xFF,0xE0,0x32,0x80,0x25,0x80,0xFD,0x80,0x31,0x80,0x39,0x80,0x69,0x80,0x4A,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x6557, {0x01,0x00,0x79,0x00,0x49,0x00,0x7B,0xE0,0x4A,0x40,0x7E,0x40,0x49,0x40,0x49,0x80,0x78,0x80,0x31,0x80,0x4A,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x6558, {0x21,0x00,0x31,0x00,0x7B,0xE0,0x7B,0xE0,0xB6,0x80,0x2A,0x80,0xF9,0x80,0x31,0x80,0x79,0x80,0x69,0x80,0xA2,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x6559, {0x21,0x00,0x21,0x00,0x7D,0x00,0x23,0xE0,0xFE,0x40,0x26,0x40,0x7D,0x40,0x89,0x80,0xFD,0x80,0x11,0x80,0x16,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x655D, {0x21,0x00,0x69,0x00,0xA5,0xE0,0x27,0xE0,0xFF,0x40,0xA5,0x40,0xED,0x40,0xED,0x80,0xED,0x80,0xA5,0x80,0xA6,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x655E, {0x21,0x00,0x69,0x00,0xA5,0xE0,0x27,0xE0,0xFF,0x40,0x85,0x40,0xF5,0x40,0xF5,0x80,0xF5,0x80,0xF5,0x80,0x86,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x6562, {0x01,0x00,0x7D,0x00,0x11,0x00,0xFF,0xE0,0x4A,0x40,0x7E,0x40,0x49,0x80,0x79,0x80,0x4D,0x80,0xF9,0x80,0x0A,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x6563, {0x51,0x00,0x51,0x00,0xFD,0xE0,0x52,0x40,0xFE,0x40,0x05,0x40,0x79,0x80,0x48,0x80,0x78,0x80,0x79,0x80,0x4A,0x40,0x5C,0x20,0x00,0x00,}}, +{ 0x6566, {0x21,0x00,0x21,0x00,0xFD,0x00,0x7B,0xE0,0x4A,0x40,0x7E,0x40,0x01,0x40,0x78,0x80,0x10,0x80,0xF9,0x80,0x22,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x656C, {0x51,0x00,0x51,0x00,0xFD,0xE0,0x52,0x40,0x7A,0x40,0x4D,0x40,0xE9,0x80,0x68,0x80,0x68,0x80,0x69,0x80,0x0A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x6570, {0xA5,0x00,0x69,0x00,0xF9,0xE0,0x33,0x40,0x6A,0x40,0xA5,0x40,0x11,0x40,0xFC,0x80,0x28,0x80,0x71,0x40,0x2A,0x40,0xC4,0x20,0x00,0x00,}}, +{ 0x6572, {0x21,0x80,0x31,0x80,0xFD,0xE0,0x79,0x80,0x4B,0xC0,0x79,0x40,0x01,0x40,0xFD,0xC0,0xB4,0x80,0xF4,0x80,0xF5,0x40,0x8E,0x20,0x00,0x00,}}, +{ 0x6574, {0x21,0x00,0xFD,0x00,0x7B,0xE0,0x7F,0x40,0x71,0xC0,0x6B,0x40,0xA4,0x20,0x7F,0xC0,0x07,0x00,0x24,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6575, {0x21,0x00,0x21,0x00,0xFD,0x00,0x51,0xE0,0xFE,0x40,0xA6,0x40,0xFD,0x40,0xA5,0x40,0xF4,0x80,0xF5,0x80,0x86,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x6577, {0x29,0x00,0xFD,0x00,0x79,0x00,0x7B,0xE0,0x7A,0x40,0x6E,0x40,0x79,0x40,0x21,0x80,0xFD,0x80,0x79,0x80,0x4E,0x40,0xB8,0x20,0x00,0x00,}}, +{ 0x6578, {0x11,0x80,0x7D,0x80,0xFF,0xE0,0xFF,0xE0,0x7F,0x40,0x7D,0x40,0x55,0x80,0x7D,0x80,0xF9,0x80,0xF9,0x80,0x7A,0x40,0xE4,0x20,0x00,0x00,}}, +{ 0x6582, {0x21,0x00,0x31,0x00,0x79,0xE0,0x7F,0xE0,0x83,0x40,0xDD,0x40,0xF5,0xC0,0xFC,0x80,0x68,0x80,0x7D,0xC0,0x56,0x40,0xA4,0x20,0x00,0x00,}}, +{ 0x6583, {0xA5,0x80,0xF9,0x80,0xFF,0xE0,0xB7,0xC0,0xFD,0x80,0xAF,0x60,0x00,0x00,0xFF,0xE0,0x3A,0xC0,0xFB,0xA0,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x6587, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x11,0x00,0x11,0x00,0x0A,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x6588, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x0E,0x00,0x31,0x00,0xDF,0xE0,0x02,0x00,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6589, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x0E,0x00,0x31,0x00,0xE0,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x658C, {0x20,0x80,0x2E,0xC0,0xF0,0xA0,0x2F,0xE0,0x22,0x80,0xAA,0x80,0x6B,0x80,0x6A,0x80,0x6A,0x80,0x6B,0xA0,0x5C,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x658E, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x1B,0x00,0xE1,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x36,0x80,0x75,0x80,0x8C,0x80,0x00,0x00,}}, +{ 0x6590, {0x09,0x00,0x79,0xE0,0x09,0x00,0x79,0xE0,0xF1,0xE0,0x15,0x00,0x24,0x00,0xFF,0xE0,0x12,0x00,0x0C,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x6591, {0x04,0x00,0xF5,0xE0,0x4E,0x80,0x42,0x80,0x72,0x80,0xCB,0xE0,0x44,0x80,0x44,0x80,0x4C,0x80,0xFA,0x80,0x13,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6597, {0x01,0x00,0x31,0x00,0x09,0x00,0x21,0x00,0x11,0x00,0x01,0x00,0x01,0xE0,0x1F,0x00,0xE1,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x6599, {0x20,0x80,0xAA,0x80,0x71,0x80,0x34,0x80,0xFA,0x80,0x22,0x80,0x70,0xE0,0x6B,0x80,0xAC,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x659B, {0x60,0x80,0x7A,0x80,0xF9,0x80,0xF8,0x80,0x6A,0x80,0x79,0x80,0x69,0x80,0x78,0xE0,0x7F,0x80,0x4C,0x80,0x48,0x80,0x98,0x80,0x00,0x00,}}, +{ 0x659C, {0x20,0x80,0x32,0x80,0x51,0x80,0x4C,0x80,0xFA,0x80,0x22,0x80,0xF8,0xE0,0x21,0x80,0x76,0x80,0x68,0x80,0xA0,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x659F, {0x68,0x80,0x6A,0x80,0xFD,0x80,0x78,0x80,0x6A,0x80,0x79,0x80,0x69,0x80,0xFC,0xE0,0x6F,0x80,0x6C,0x80,0x40,0x80,0x7C,0x80,0x00,0x00,}}, +{ 0x65A1, {0x21,0x80,0x21,0x80,0xFA,0x40,0x25,0x20,0x79,0x80,0x7A,0x80,0x49,0x80,0x79,0x80,0x20,0xE0,0xFF,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x65A4, {0x00,0x80,0x03,0x00,0x3C,0x00,0x20,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x41,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x65A5, {0x00,0x80,0x03,0x00,0x3C,0x00,0x20,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x27,0x00,0x41,0xC0,0x41,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x65A7, {0x11,0x00,0x31,0x80,0x4E,0x40,0x19,0x00,0xE2,0xE0,0x3C,0x00,0x20,0x00,0x3F,0xC0,0x22,0x00,0x42,0x00,0x42,0x00,0x82,0x00,0x00,0x00,}}, +{ 0x65AB, {0x00,0x40,0xFD,0x80,0x22,0x00,0x22,0x00,0x23,0xE0,0x7A,0x80,0x6A,0x80,0xEA,0x80,0xEE,0x80,0x7C,0x80,0x68,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x65AC, {0x20,0x40,0x20,0x80,0xFF,0x00,0x7A,0x00,0x6B,0xE0,0x7A,0x80,0x6A,0x80,0x7A,0x80,0x22,0x80,0xF4,0x80,0x28,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x65AD, {0x10,0x40,0x10,0x80,0xD5,0x00,0xB9,0x00,0x91,0xE0,0xFF,0x40,0xB1,0x40,0xB9,0x40,0xD6,0x40,0x96,0x40,0xFC,0x40,0x80,0x40,0x00,0x00,}}, +{ 0x65AF, {0x28,0x40,0x28,0x80,0xFD,0x00,0x29,0x00,0x39,0xE0,0x29,0x40,0x39,0x40,0x29,0x40,0xFE,0x40,0x2A,0x40,0x44,0x40,0x80,0x40,0x00,0x00,}}, +{ 0x65B0, {0x20,0x40,0x20,0x80,0xFF,0x00,0x4A,0x00,0x53,0xE0,0xFE,0x80,0x22,0x80,0xFA,0x80,0x72,0x80,0x72,0x80,0xA4,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x65B7, {0x68,0x40,0xFD,0x80,0xFD,0x00,0xFD,0x00,0xFD,0xE0,0xFD,0x80,0xED,0x80,0xF5,0x80,0xFE,0x80,0xFE,0x80,0xFC,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x65B9, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x08,0x00,0x0F,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x43,0x80,0x00,0x00,}}, +{ 0x65BC, {0x21,0x00,0x21,0x00,0xF9,0x00,0x22,0x80,0x24,0x40,0x3D,0x20,0x28,0x80,0x28,0x80,0x48,0x00,0x49,0x00,0x88,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x65BD, {0x22,0x00,0x22,0x00,0xF7,0xE0,0x49,0x00,0x45,0xC0,0x77,0x40,0x5D,0x40,0x55,0x40,0x55,0xC0,0x55,0x00,0x94,0x20,0x23,0xE0,0x00,0x00,}}, +{ 0x65C1, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x7F,0xE0,0x44,0x40,0x84,0x00,0x7F,0xC0,0x07,0x80,0x0F,0x80,0x30,0x80,0x63,0x80,0x00,0x00,}}, +{ 0x65C3, {0x62,0x00,0x62,0x00,0xF7,0xE0,0xF4,0x00,0x6B,0xC0,0x73,0xC0,0x73,0xC0,0x73,0xC0,0x57,0xE0,0x52,0x40,0x92,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x65C4, {0x62,0x00,0x62,0x00,0xF7,0xE0,0xFF,0x80,0x63,0x00,0x71,0xC0,0x77,0x00,0x71,0x00,0x5F,0xE0,0x5F,0x20,0x91,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x65C5, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x22,0x80,0x24,0xA0,0x39,0x40,0x29,0x80,0x2B,0x80,0x4D,0x80,0x49,0x40,0x89,0x20,0x31,0x00,0x00,0x00,}}, +{ 0x65C6, {0x62,0x00,0x62,0x00,0xF7,0xE0,0xF9,0x80,0x6F,0xE0,0x71,0x80,0x73,0xC0,0x73,0xC0,0x53,0xC0,0x53,0xC0,0x91,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x65CB, {0x22,0x00,0x22,0x00,0xF7,0xE0,0x24,0x00,0x2F,0xE0,0x30,0xC0,0x32,0x80,0x52,0x80,0x52,0xE0,0x52,0x80,0x95,0x80,0x28,0xE0,0x00,0x00,}}, +{ 0x65CC, {0x62,0x00,0x62,0x00,0xFF,0xE0,0xFE,0x00,0x6B,0x80,0x73,0xC0,0x73,0x80,0x75,0x80,0x53,0xC0,0x51,0x80,0x97,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x65CF, {0x22,0x00,0x22,0x00,0xFF,0xE0,0x42,0x00,0x73,0xC0,0x55,0x00,0x59,0x00,0x5F,0xE0,0x51,0x00,0x52,0x80,0x94,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x65D2, {0x62,0x00,0x62,0x00,0xFF,0xE0,0xFF,0xE0,0x63,0xC0,0x72,0xC0,0x7F,0xC0,0x70,0x80,0x55,0x80,0x55,0xA0,0x95,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x65D7, {0x22,0x00,0x22,0x00,0xF7,0xE0,0x4A,0x80,0x57,0xE0,0x72,0x80,0x53,0x80,0x53,0x80,0x5F,0xE0,0x52,0x80,0x92,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x65D9, {0x60,0xC0,0x67,0xC0,0xF5,0xC0,0xFF,0xE0,0x63,0xC0,0x73,0xC0,0x7D,0xA0,0x73,0xC0,0x53,0xC0,0x53,0xC0,0x93,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x65DB, {0x62,0x00,0x63,0xE0,0xFF,0xC0,0xFB,0xC0,0x67,0xE0,0x71,0x80,0x73,0xC0,0x7F,0xE0,0x53,0xC0,0x53,0xC0,0x93,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x65E0, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x06,0x00,0x06,0x00,0x0A,0x00,0x1A,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x65E1, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x44,0x00,0x44,0x00,0x7F,0xE0,0x46,0x00,0x06,0x00,0x0A,0x00,0x1A,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x65E2, {0x00,0x00,0x7F,0xE0,0x4A,0x80,0x7A,0x80,0x4A,0x80,0x7F,0xE0,0x49,0x80,0x71,0x80,0x59,0x80,0x6A,0xA0,0xC4,0xA0,0x08,0x60,0x00,0x00,}}, +{ 0x65E5, {0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x00,}}, +{ 0x65E6, {0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x65E7, {0x20,0x00,0x2F,0xC0,0x28,0x40,0x28,0x40,0x28,0x40,0x2F,0xC0,0x28,0x40,0x28,0x40,0x28,0x40,0x2F,0xC0,0x28,0x40,0x20,0x00,0x00,0x00,}}, +{ 0x65E8, {0x40,0x00,0x43,0x80,0x7E,0x00,0x40,0x40,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x65E9, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x65EC, {0x10,0x00,0x10,0x00,0x1F,0xE0,0x20,0x20,0x3F,0x20,0x51,0x20,0x1F,0x20,0x11,0x20,0x11,0x20,0x1F,0x20,0x00,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x65ED, {0x20,0x00,0x23,0xC0,0x22,0x40,0xFA,0x40,0x2B,0xC0,0x2A,0x40,0x2A,0x40,0x2B,0xC0,0x2A,0x40,0x48,0x20,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x65F1, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x00,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x65FA, {0x00,0x00,0xFF,0xE0,0x91,0x00,0x91,0x00,0xF1,0x00,0x9F,0xC0,0x91,0x00,0x91,0x00,0xF1,0x00,0x81,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x65FB, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x04,0x00,0xFF,0xE0,0x11,0x00,0x1A,0x00,0x0E,0x00,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x6602, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x18,0x00,0x63,0xC0,0x42,0x40,0x4A,0x40,0x7B,0xC0,0x42,0x00,0x02,0x00,0x00,0x00,}}, +{ 0x6603, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x00,0x00,0x7F,0xE0,0x62,0x00,0x66,0x00,0x47,0x00,0x59,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x6606, {0x00,0x00,0x7F,0x80,0x40,0x80,0x7F,0x80,0x40,0x80,0x7F,0x80,0x42,0x00,0x4E,0xC0,0x73,0x00,0x42,0x20,0x7A,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x6607, {0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x04,0x80,0x38,0x80,0x08,0x80,0xFF,0xF0,0x08,0x80,0x10,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x660A, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x660C, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x660E, {0x00,0x00,0x79,0xE0,0x49,0x20,0x49,0x20,0x79,0xE0,0x49,0x20,0x49,0x20,0x49,0x20,0x79,0xE0,0x42,0x20,0x04,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x660F, {0x01,0x80,0x3E,0x00,0x22,0x00,0x3F,0xE0,0x3D,0x00,0xE0,0xE0,0x3F,0xA0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6613, {0x00,0x00,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x0F,0xE0,0x32,0xA0,0x4D,0x20,0x32,0x20,0x0C,0x40,0x01,0x80,0x00,0x00,}}, +{ 0x6614, {0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x661C, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x30,0x00,0x3F,0xC0,0x49,0x40,0x12,0x40,0x24,0x80,0x00,0x00,}}, +{ 0x661F, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x40,0x80,0x7F,0x80,0x04,0x00,0x24,0x00,0x7F,0xC0,0x84,0x00,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x6620, {0x01,0x00,0x01,0x00,0xEF,0xC0,0xA9,0x40,0xA9,0x40,0xE9,0x40,0xBF,0xE0,0xA3,0x00,0xE2,0x80,0xA4,0x80,0x08,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x6625, {0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x0A,0x00,0xFF,0xE0,0x11,0x00,0x7F,0x80,0x9F,0x60,0x11,0x00,0x1F,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x6627, {0x01,0x00,0x01,0x00,0xE7,0xC0,0xA1,0x00,0xA1,0x00,0xFF,0xE0,0xA1,0x00,0xA3,0x80,0xE5,0x40,0xB9,0x20,0xA1,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x6628, {0x04,0x00,0x04,0x00,0xE7,0xE0,0xA9,0x00,0xA9,0x00,0xF1,0xE0,0xA1,0x00,0xA1,0x00,0xE1,0xE0,0x81,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x662D, {0x00,0x00,0x07,0xE0,0x71,0x20,0x51,0x20,0x52,0x20,0x72,0x40,0x54,0x00,0x53,0xE0,0x72,0x20,0x52,0x20,0x43,0xE0,0x02,0x20,0x00,0x00,}}, +{ 0x662F, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x24,0x00,0x27,0x80,0x34,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x6634, {0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x04,0x00,0x39,0xE0,0x25,0x20,0x2D,0x20,0x7D,0xE0,0x09,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x6635, {0x00,0x00,0x0F,0xC0,0xE8,0x40,0xAF,0xC0,0xA8,0x40,0xEA,0x00,0xAA,0x40,0xAA,0x80,0xEB,0x00,0xFA,0x20,0x92,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x6636, {0x00,0x00,0xF9,0xC0,0x71,0x40,0x75,0xC0,0x15,0x40,0xF9,0x40,0x39,0x40,0x35,0xC0,0x76,0x40,0x53,0x00,0x90,0xE0,0x30,0x00,0x00,0x00,}}, +{ 0x663C, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x21,0x00,0x3F,0x00,0x51,0x80,0x5F,0x40,0x91,0x20,0x1F,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x663F, {0x01,0x00,0x01,0x00,0xE7,0xE0,0xAF,0xE0,0xA8,0x00,0xE9,0x80,0xA9,0x00,0xA9,0x00,0xEA,0x40,0xFA,0x40,0x1F,0xA0,0x20,0x20,0x00,0x00,}}, +{ 0x6641, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x0A,0x80,0x2A,0x80,0x2B,0x80,0x3A,0x80,0xF2,0xA0,0x32,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x6642, {0x01,0x00,0x01,0x00,0xEF,0xC0,0xA1,0x00,0xBF,0xE0,0xE0,0x80,0xA0,0x80,0xBF,0xE0,0xE4,0x80,0xA2,0x80,0x80,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x6643, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x15,0x00,0xFF,0xE0,0x0A,0x00,0x12,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x6644, {0x01,0x00,0x01,0x00,0xE9,0x40,0xA5,0x40,0xA1,0x00,0xFF,0xE0,0xA3,0x80,0xA3,0x80,0xE7,0x80,0xE5,0xA0,0x09,0xA0,0x10,0xE0,0x00,0x00,}}, +{ 0x6649, {0x00,0x00,0x7F,0xC0,0x31,0x80,0x7B,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x664B, {0x00,0x00,0x7F,0xC0,0x4A,0x40,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x664F, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x04,0x00,0x7F,0xE0,0xC8,0x40,0xFF,0xC0,0x1E,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x6652, {0x00,0x00,0x1F,0xE0,0xE2,0x80,0xAF,0xC0,0xAA,0xC0,0xEA,0xC0,0xAA,0xC0,0xAA,0xC0,0xEC,0xC0,0xA8,0x40,0x8F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x665D, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,}}, +{ 0x665E, {0x00,0x40,0x07,0x80,0xE7,0xC0,0xA6,0x00,0xBF,0xE0,0xE5,0x00,0xAF,0xC0,0xB9,0x40,0xE9,0x40,0xE9,0x40,0x09,0xC0,0x01,0x00,0x00,0x00,}}, +{ 0x665F, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x02,0x40,0x7F,0xE0,0x42,0x00,0x79,0x40,0x51,0xA0,0x73,0xA0,0x8C,0x60,0x00,0x00,}}, +{ 0x6662, {0x20,0xC0,0x33,0x00,0xFF,0xE0,0x3B,0xE0,0xF2,0x80,0x24,0x80,0x68,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x6664, {0x00,0x00,0x1F,0xE0,0xE1,0x00,0xAF,0x80,0xA2,0x80,0xE2,0x80,0xBF,0xE0,0xA0,0x00,0xE7,0xC0,0xE4,0x40,0x07,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x6666, {0x04,0x00,0x04,0x00,0xE7,0xE0,0xAF,0xC0,0xB5,0x40,0xE5,0x40,0xBF,0xE0,0xAA,0x40,0xAF,0xC0,0xE8,0xE0,0x80,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x6667, {0x01,0x00,0x05,0x00,0xE7,0xC0,0xAF,0xC0,0xB1,0x00,0xFF,0xE0,0xA1,0x00,0xAF,0x80,0xE8,0x80,0xE8,0x80,0x0F,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x6668, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x7F,0xE0,0x7F,0xE0,0x5B,0x80,0xF0,0xE0,0x00,0x00,}}, +{ 0x6669, {0x02,0x00,0x03,0x80,0xE5,0x00,0xBF,0xC0,0xA9,0x40,0xE9,0x40,0xAF,0xC0,0xAB,0x40,0xE3,0x00,0xA5,0x20,0x89,0x20,0x10,0xE0,0x00,0x00,}}, +{ 0x666E, {0x21,0x00,0x12,0x00,0x7F,0xC0,0x4A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x666F, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x15,0x00,0x24,0x80,0x4C,0x40,0x00,0x00,}}, +{ 0x6670, {0x04,0x20,0x04,0x40,0xFF,0x80,0xBF,0x80,0xA7,0xE0,0xED,0xC0,0xAD,0xC0,0xBD,0xC0,0xF5,0x40,0xF5,0x40,0x06,0x40,0x04,0x40,0x00,0x00,}}, +{ 0x6674, {0x01,0x00,0x0F,0xC0,0xE1,0x00,0xA7,0x80,0xBF,0xE0,0xE0,0x00,0xA7,0x80,0xA4,0x80,0xE7,0x80,0xA7,0x80,0x84,0x80,0x05,0x80,0x00,0x00,}}, +{ 0x6676, {0x00,0x00,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x00,0x00,0x79,0xE0,0x49,0x20,0x79,0xE0,0x49,0x20,0x79,0xE0,0x00,0x00,}}, +{ 0x667A, {0x20,0x00,0x20,0x00,0x3F,0xE0,0x51,0x20,0x3D,0x20,0x19,0xE0,0x25,0x20,0x5F,0xC0,0x10,0x40,0x1F,0xC0,0x1F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x6681, {0x01,0x00,0x01,0x00,0xEF,0xC0,0xA5,0x80,0xBF,0xE0,0xE4,0x80,0xA4,0x80,0xBF,0xE0,0xE2,0x80,0xA4,0xA0,0x88,0xA0,0x30,0x60,0x00,0x00,}}, +{ 0x6683, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x0A,0x00,0xFB,0xE0,0x0A,0x00,0x7B,0xC0,0x1B,0xE0,0xF2,0x00,0x22,0x00,0x00,0x00,}}, +{ 0x6684, {0x01,0x00,0x03,0x00,0xEF,0xE0,0xBF,0xC0,0xB0,0x00,0xE7,0x80,0xA4,0x80,0xA7,0x80,0xE7,0x80,0xE7,0x80,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6687, {0x00,0x00,0x1E,0xC0,0xD2,0x40,0xDE,0xC0,0xD2,0x40,0xD0,0x00,0xDD,0xC0,0xD1,0x40,0xDD,0xC0,0xD0,0x80,0x90,0xC0,0x13,0x20,0x00,0x00,}}, +{ 0x6688, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x44,0x40,0xFF,0xC0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6689, {0x00,0x00,0x0F,0xE0,0xFF,0xC0,0xBF,0xC0,0xAF,0xC0,0xE9,0x40,0xAF,0xC0,0xAB,0x40,0xEF,0xC0,0xFF,0xE0,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x668E, {0x04,0x80,0x04,0xC0,0xFF,0xE0,0xA1,0x00,0xAF,0xC0,0xE9,0x40,0xA9,0x40,0xBB,0x40,0xFF,0xE0,0xE3,0x00,0x0C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x6691, {0x7F,0x80,0x40,0x80,0x7F,0x80,0x7F,0x80,0x04,0x40,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x3F,0x80,0xD0,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x6696, {0x00,0xE0,0x1F,0x20,0xE9,0x40,0xAF,0xC0,0xA2,0x00,0xFF,0xE0,0xA2,0x00,0xA7,0x80,0xE4,0x80,0xAB,0x00,0x12,0x80,0x0C,0x60,0x00,0x00,}}, +{ 0x6697, {0x02,0x00,0x02,0x00,0xEF,0xC0,0xA4,0x80,0xBF,0xE0,0xE0,0x00,0xA7,0x80,0xA4,0x80,0xE7,0x80,0xA4,0x80,0x87,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x6698, {0x00,0x00,0x07,0x80,0xE7,0x80,0xA7,0x80,0xA7,0x80,0xE0,0x00,0xBF,0xE0,0xA4,0x00,0xFF,0xC0,0xF5,0xC0,0x09,0x40,0x03,0x80,0x00,0x00,}}, +{ 0x669D, {0x00,0x00,0x0F,0xE0,0xFF,0xC0,0xB7,0x80,0xA7,0x80,0xE4,0x80,0xA7,0x80,0xB3,0x00,0xFF,0xE0,0xE2,0x00,0x04,0x40,0x18,0x40,0x00,0x00,}}, +{ 0x66A2, {0x20,0x00,0x27,0x80,0xF4,0x80,0xB7,0x80,0xB7,0x80,0xB0,0x00,0xBF,0xE0,0xB4,0x00,0xAF,0xC0,0x25,0xC0,0x29,0x40,0x23,0x80,0x00,0x00,}}, +{ 0x66A6, {0x00,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x5D,0xC0,0x6A,0xA0,0x48,0x80,0x5F,0x80,0x50,0x80,0x9F,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x66AB, {0x20,0xC0,0xFF,0x00,0x7A,0x00,0x7B,0xE0,0x7A,0x80,0xFE,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x66AE, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0,0x1F,0x00,0x71,0xC0,0x9F,0x20,0x1F,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x66B4, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x35,0x80,0xDF,0x60,0x75,0xC0,0x0C,0x00,0x00,0x00,}}, +{ 0x66B8, {0x01,0x00,0x1F,0xE0,0xEF,0xC0,0xAC,0xC0,0xB7,0xE0,0xE4,0x80,0xA7,0x80,0xA4,0x80,0xE7,0x80,0xE9,0x40,0x11,0x40,0x03,0x00,0x00,0x00,}}, +{ 0x66B9, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x4F,0xC0,0x64,0xC0,0x07,0xE0,0xED,0x80,0x77,0xC0,0x67,0xC0,0x67,0xE0,0x5C,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x66BC, {0x21,0x00,0xE9,0x00,0xFF,0xE0,0xFF,0x40,0xB5,0xC0,0xED,0x80,0xA7,0x40,0x7F,0xA0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x66BE, {0x05,0x80,0x05,0x80,0xFF,0xE0,0xAF,0xE0,0xAB,0x40,0xEF,0xC0,0xA1,0xC0,0xBF,0x80,0xE6,0xC0,0xFC,0xC0,0x05,0x20,0x0E,0x20,0x00,0x00,}}, +{ 0x66C1, {0x20,0x00,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x5B,0xA0,0x64,0x60,0x3F,0x80,0x11,0x80,0x1F,0x80,0x1F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x66C4, {0x04,0x80,0x1F,0xE0,0xE7,0xC0,0xA7,0xC0,0xA5,0x80,0xFF,0xE0,0xA5,0x80,0xA7,0xC0,0xEF,0xC0,0xFF,0xE0,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x66C7, {0x3F,0x80,0x20,0x80,0x3F,0x80,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0x75,0xC0,0xB7,0x80,0x3F,0x80,0xFF,0xE0,0x13,0x80,0x7E,0x80,0x00,0x00,}}, +{ 0x66C9, {0x01,0x00,0x0F,0xC0,0xFF,0xE0,0xBF,0xE0,0xBE,0xE0,0xE4,0x80,0xA6,0xE0,0xB8,0x00,0xEF,0xC0,0xE3,0xA0,0x05,0xA0,0x18,0xE0,0x00,0x00,}}, +{ 0x66D6, {0x00,0xC0,0x0F,0x40,0xE8,0x40,0xAF,0xE0,0xAB,0xC0,0xF6,0xC0,0xA7,0xA0,0xAB,0x00,0xE7,0xC0,0xE7,0x80,0x03,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0x66D9, {0x0F,0xC0,0x0B,0x40,0xEF,0xC0,0xA1,0x20,0xAF,0xC0,0xE1,0x80,0xBF,0xE0,0xA7,0xC0,0xEB,0xC0,0xB2,0x40,0x83,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x66DA, {0x04,0x80,0x1F,0xE0,0xE7,0xE0,0xAF,0xE0,0xB0,0x00,0xFF,0xE0,0xA3,0x40,0xBF,0xC0,0xE7,0x80,0xE7,0xC0,0x1D,0xA0,0x03,0x00,0x00,0x00,}}, +{ 0x66DC, {0x00,0x00,0x0F,0xE0,0x75,0xA0,0x53,0x60,0x5D,0xA0,0x72,0xC0,0x57,0xE0,0x5C,0x80,0x77,0xC0,0x57,0xC0,0x44,0x80,0x07,0xE0,0x00,0x00,}}, +{ 0x66DD, {0x00,0x00,0xE7,0x80,0xA7,0x80,0xA7,0x80,0xE2,0x80,0xAF,0xC0,0xA2,0x80,0xBF,0xE0,0xE5,0xC0,0xFF,0xE0,0x8F,0xC0,0x03,0x00,0x00,0x00,}}, +{ 0x66E0, {0x01,0x00,0x0F,0xE0,0xEF,0xE0,0xAF,0xE0,0xAF,0xE0,0xE9,0x80,0xAB,0xC0,0xAB,0xC0,0xFB,0xC0,0xF3,0xC0,0x33,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x66E6, {0x02,0x80,0x0F,0xC0,0xE7,0x80,0xBF,0xE0,0xBF,0xC0,0xE5,0xA0,0xBF,0xE0,0xBF,0xC0,0xFF,0xC0,0xFF,0xA0,0x13,0x60,0x06,0x20,0x00,0x00,}}, +{ 0x66E9, {0x7F,0x80,0x7F,0x80,0x3F,0x80,0xFF,0xE0,0x7B,0xC0,0x6A,0x80,0x7B,0x80,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0xFF,0x80,0x70,0xE0,0x00,0x00,}}, +{ 0x66F0, {0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x66F2, {0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x51,0x40,0x51,0x40,0x7F,0xC0,0x51,0x40,0x51,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x00,0x00,}}, +{ 0x66F3, {0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0xC0,0x04,0x80,0x03,0x00,0x0F,0x20,0x71,0xA0,0x00,0x60,0x00,0x00,}}, +{ 0x66F4, {0x00,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x1C,0x00,0x0E,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x66F5, {0x04,0x80,0x04,0x80,0x7F,0x80,0x7E,0x80,0x64,0x80,0x64,0x80,0x7F,0xC0,0x04,0x80,0x03,0x00,0x0F,0x20,0x71,0xA0,0x00,0x60,0x00,0x00,}}, +{ 0x66F7, {0x00,0x00,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x34,0x00,0x0F,0xE0,0x32,0x20,0x73,0x20,0x3C,0x20,0x3F,0xA0,0x30,0xC0,0x00,0x00,}}, +{ 0x66F8, {0x04,0x00,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x3F,0x80,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x66F9, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x66FC, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x1F,0x00,0x06,0x00,0x0F,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0x66FD, {0x21,0x00,0x12,0x00,0x7F,0xC0,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x66FE, {0x17,0x00,0x20,0x80,0x7F,0xC0,0xF5,0xE0,0x6E,0xC0,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x66FF, {0x20,0x80,0x20,0x80,0x7B,0xC0,0xFF,0xE0,0x31,0x80,0x31,0x40,0x4A,0x40,0xBF,0xA0,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6700, {0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x78,0x00,0x7B,0xC0,0x49,0x40,0x79,0x80,0xCE,0x40,0x08,0x20,0x00,0x00,}}, +{ 0x6703, {0x04,0x00,0x0A,0x00,0x3F,0x80,0xFF,0xE0,0x7F,0xC0,0x65,0x80,0x75,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x6708, {0x00,0x00,0x1F,0xC0,0x10,0x40,0x10,0x40,0x1F,0xC0,0x10,0x40,0x10,0x40,0x1F,0xC0,0x10,0x40,0x10,0x40,0x20,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x6709, {0x08,0x00,0x08,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x30,0x80,0x5F,0x80,0x50,0x80,0x9F,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x670B, {0x00,0x00,0x1C,0xE0,0x14,0xA0,0x14,0xA0,0x1C,0xE0,0x14,0xA0,0x14,0xA0,0x1C,0xE0,0x15,0x20,0x25,0x20,0x26,0x20,0x4C,0x60,0x00,0x00,}}, +{ 0x670D, {0x00,0x00,0x77,0xC0,0x54,0x40,0x54,0xC0,0x74,0x00,0x57,0xC0,0x56,0x40,0x75,0x40,0x55,0x80,0x55,0x80,0x56,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x670F, {0x01,0x80,0x75,0xA0,0x55,0xA0,0x55,0xA0,0x77,0xE0,0x55,0xA0,0x51,0x80,0x75,0xA0,0x55,0xA0,0x55,0xA0,0x57,0xE0,0xB4,0x20,0x00,0x00,}}, +{ 0x6714, {0x24,0x00,0x15,0xE0,0x7F,0x20,0x11,0x20,0x35,0xE0,0x35,0x20,0x35,0x20,0x3D,0xE0,0x35,0x20,0x11,0x20,0x12,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x6715, {0x08,0x40,0x74,0x40,0x52,0x80,0x7F,0xC0,0x51,0x00,0x51,0x00,0x7F,0xE0,0x51,0x00,0x52,0x80,0x54,0x80,0x58,0x40,0xB0,0x20,0x00,0x00,}}, +{ 0x6716, {0x01,0x00,0x73,0x00,0x57,0x80,0x54,0x80,0x77,0x80,0x54,0x80,0x57,0x80,0x75,0x40,0x55,0xC0,0x54,0x80,0x57,0x40,0xBC,0x20,0x00,0x00,}}, +{ 0x6717, {0x10,0x00,0x11,0xE0,0x3D,0x20,0x25,0x20,0x3D,0xE0,0x25,0x20,0x3D,0x20,0x39,0xE0,0x2D,0x20,0x32,0x20,0x64,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x671B, {0x20,0x00,0x23,0xC0,0xFE,0x40,0x43,0xC0,0x43,0xC0,0x3A,0x40,0x04,0x80,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x671D, {0x10,0x00,0x11,0xE0,0x7F,0x20,0x3D,0x20,0x25,0xE0,0x3D,0x20,0x25,0x20,0x3D,0xE0,0x11,0x20,0x7F,0x20,0x12,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x671E, {0x11,0x00,0x7F,0xC0,0x1F,0x00,0x1F,0x00,0x13,0x00,0xFF,0xE0,0x21,0x80,0x5F,0xC0,0x9F,0x60,0x1F,0x00,0x33,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x671F, {0x14,0x00,0x14,0xE0,0x7F,0xA0,0x14,0xE0,0x1C,0xA0,0x14,0xA0,0x1C,0xE0,0x14,0xA0,0x7F,0xA0,0x15,0x20,0x25,0x20,0x42,0x60,0x00,0x00,}}, +{ 0x6726, {0x02,0x80,0x7F,0xE0,0x57,0xE0,0x57,0xE0,0x7B,0xC0,0x5F,0xE0,0x53,0x40,0x7F,0xC0,0x5F,0x80,0x5F,0xC0,0x5D,0xA0,0xB3,0x00,0x00,0x00,}}, +{ 0x6727, {0x05,0x80,0x75,0xE0,0x7F,0xC0,0x6A,0xC0,0x7F,0xC0,0x61,0x80,0x6F,0xC0,0x6B,0x80,0x6F,0xC0,0x6F,0xE0,0x6B,0xA0,0xEA,0xE0,0x00,0x00,}}, +{ 0x6728, {0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0x44,0x40,0x84,0x20,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x672A, {0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x15,0x00,0x64,0xC0,0x84,0x20,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x672B, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x672C, {0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x15,0x00,0x15,0x00,0x24,0x80,0x44,0x40,0x9F,0x20,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x672D, {0x21,0x00,0x21,0x00,0xF9,0x00,0x21,0x00,0x21,0x00,0x71,0x00,0x69,0x00,0x65,0x00,0xA5,0x00,0x21,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x672E, {0x04,0x80,0x04,0x40,0xFF,0xE0,0xFF,0xE0,0x24,0x00,0x25,0x80,0x25,0x80,0x25,0x80,0x25,0x80,0x65,0xA0,0x44,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6731, {0x04,0x00,0x24,0x00,0x3F,0x80,0x24,0x00,0x44,0x00,0xFF,0xE0,0x0E,0x00,0x15,0x00,0x64,0xC0,0x84,0x20,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x6734, {0x21,0x00,0x21,0x00,0xF9,0x00,0x21,0x00,0x21,0x80,0x71,0x40,0x69,0x20,0x69,0x20,0xA1,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6736, {0x00,0x00,0x7F,0x00,0x11,0xC0,0x11,0xC0,0x20,0x40,0x45,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6737, {0x10,0x00,0x17,0xE0,0x7D,0x20,0x7D,0x20,0x19,0x20,0x35,0x20,0x35,0x20,0x31,0x20,0x53,0x20,0x12,0x20,0x14,0x20,0x18,0x40,0x00,0x00,}}, +{ 0x6738, {0x10,0x80,0x10,0x80,0x7F,0xE0,0x7F,0xE0,0x18,0xA0,0x34,0xA0,0x34,0xA0,0x30,0xA0,0x51,0x20,0x11,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x673A, {0x20,0x00,0x23,0x80,0xFA,0x80,0x22,0x80,0x32,0x80,0x6A,0x80,0x6A,0x80,0x62,0x80,0xA6,0x80,0x24,0xA0,0x28,0xA0,0x30,0x60,0x00,0x00,}}, +{ 0x673D, {0x20,0x00,0x27,0xE0,0xF9,0x00,0x21,0x00,0x33,0xC0,0x6A,0x40,0x6A,0x40,0x64,0x40,0xA0,0x40,0x20,0x40,0x20,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x673F, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0x07,0x00,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6741, {0x27,0x00,0x21,0x00,0xF9,0x00,0xF9,0x00,0x31,0x00,0x29,0x00,0x6B,0x80,0x63,0x80,0x66,0x80,0xA4,0x80,0x28,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x6746, {0x20,0x00,0x27,0xC0,0xF9,0x80,0xF9,0x80,0x31,0x80,0x6F,0xE0,0x69,0x80,0x61,0x80,0xA1,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x6749, {0x20,0x80,0x20,0x80,0xF9,0x00,0x26,0x40,0x30,0x40,0x68,0x80,0x69,0x00,0x62,0x20,0xA0,0x20,0x20,0x40,0x21,0x80,0x26,0x00,0x00,0x00,}}, +{ 0x674E, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x3F,0x00,0x02,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x674F, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6750, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x20,0x80,0x30,0x80,0x69,0x80,0x69,0x80,0x62,0x80,0xA4,0x80,0x20,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x6751, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x20,0x80,0x20,0x80,0x72,0x80,0x69,0x80,0x69,0x80,0xA0,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6753, {0x11,0x00,0x11,0x00,0x7F,0xE0,0x12,0x20,0x14,0x20,0x39,0x20,0x34,0xA0,0x34,0xA0,0x50,0x20,0x10,0x20,0x10,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x6756, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x20,0x80,0x30,0x80,0x68,0x80,0x6A,0x80,0x62,0x80,0xA1,0x00,0x21,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x6759, {0x21,0x80,0x21,0x40,0xF9,0x40,0xF9,0xE0,0x37,0x00,0x69,0x00,0x69,0x80,0x61,0x80,0xA0,0x80,0x20,0xA0,0x20,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x675C, {0x21,0x00,0x21,0x00,0xF9,0x00,0x21,0x00,0x27,0xE0,0x71,0x00,0x69,0x00,0x69,0x00,0xA1,0x00,0x21,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x675E, {0x20,0x00,0x27,0xC0,0xF8,0x40,0xF8,0x40,0x30,0x40,0x6F,0xC0,0x6C,0x40,0x64,0x00,0xA4,0x00,0x24,0x20,0x24,0x20,0x23,0xE0,0x00,0x00,}}, +{ 0x675F, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x0E,0x80,0x0D,0x00,0x34,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6760, {0x20,0x00,0x27,0xE0,0xF9,0x80,0xF9,0x80,0x31,0x80,0x69,0x80,0x69,0x80,0x61,0x80,0xA1,0x80,0x21,0x80,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6761, {0x08,0x00,0x08,0x00,0x1F,0x00,0x6A,0x00,0x0E,0x00,0x35,0x00,0xC4,0xE0,0x3F,0x80,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6762, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6763, {0x30,0x80,0x30,0x80,0x7C,0x80,0x7C,0xA0,0x34,0xA0,0x3C,0xA0,0x3C,0xA0,0x74,0xA0,0x74,0xA0,0x37,0xE0,0x34,0x20,0x34,0x20,0x00,0x00,}}, +{ 0x6764, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0xF9,0x00,0x31,0xC0,0x69,0x40,0x69,0x40,0x62,0x40,0xA6,0x40,0x24,0x40,0x28,0x40,0x30,0x80,0x00,0x00,}}, +{ 0x6765, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x15,0x80,0x15,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x676A, {0x21,0x80,0x21,0x80,0xF9,0x80,0xFB,0xC0,0x33,0xA0,0x6D,0xE0,0x69,0xC0,0x61,0x80,0xA0,0x80,0x21,0x00,0x26,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x676D, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x20,0x00,0x33,0x80,0x6A,0x80,0x6A,0x80,0x62,0x80,0xA2,0x80,0x24,0xA0,0x24,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x676F, {0x20,0x00,0x27,0xE0,0xF8,0x80,0x20,0x80,0x31,0x80,0x69,0xC0,0x6A,0xC0,0x62,0xA0,0xA4,0xA0,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6770, {0x04,0x00,0x04,0x00,0xFF,0xE0,0xFF,0xE0,0x17,0x00,0x25,0x00,0x44,0x80,0xC4,0x60,0x04,0x00,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x6771, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6772, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6773, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1E,0x00,0x35,0x80,0xC4,0x60,0x3F,0x80,0x31,0x80,0x3F,0x80,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x6775, {0x22,0x00,0x22,0x00,0xF7,0xE0,0x25,0x00,0x29,0x00,0x71,0x00,0x6F,0xE0,0x69,0x00,0xA1,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6777, {0x20,0x00,0x27,0xC0,0xFD,0x40,0x25,0x40,0x25,0x40,0x77,0xC0,0x6C,0x40,0x6C,0x00,0xA4,0x00,0x24,0x20,0x24,0x20,0x23,0xE0,0x00,0x00,}}, +{ 0x677C, {0x20,0x00,0x27,0xC0,0xF9,0x80,0xF9,0x80,0x3F,0xE0,0x69,0xA0,0x69,0xC0,0x61,0x80,0xA1,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x677E, {0x21,0x80,0x20,0x80,0xFA,0x80,0x22,0x80,0x34,0x40,0x6D,0x40,0x69,0x20,0x62,0x00,0xA2,0x80,0x24,0x40,0x3F,0xA0,0x20,0x20,0x00,0x00,}}, +{ 0x677F, {0x20,0x00,0x27,0xE0,0xFC,0x00,0x27,0xC0,0x24,0x40,0x76,0x40,0x6E,0x80,0x6D,0x80,0xA5,0x80,0x29,0x80,0x2A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x6785, {0x20,0x00,0x2F,0xC0,0xFA,0x80,0xFA,0x80,0x32,0x80,0x6F,0xE0,0x6A,0x80,0x62,0x80,0xA6,0x80,0x24,0x80,0x28,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x6787, {0x24,0x80,0x24,0x80,0xFC,0x80,0x24,0xA0,0x27,0xC0,0x74,0x80,0x6C,0x80,0x6C,0x80,0xA4,0x80,0x24,0xA0,0x27,0xA0,0x38,0xE0,0x00,0x00,}}, +{ 0x6789, {0x20,0x00,0x27,0xE0,0xF9,0x80,0xF9,0x80,0x31,0x80,0x6F,0xE0,0x69,0x80,0x61,0x80,0xA1,0x80,0x21,0x80,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x678B, {0x21,0x00,0x21,0x00,0xFF,0xE0,0xFF,0xE0,0x31,0x00,0x69,0xC0,0x69,0x40,0x61,0x40,0xA2,0x40,0x22,0x40,0x24,0x40,0x28,0x80,0x00,0x00,}}, +{ 0x678C, {0x67,0x80,0x63,0x80,0xF6,0x80,0xF4,0x80,0x68,0x40,0x7F,0xA0,0x72,0x80,0xE2,0x80,0xE6,0x80,0x64,0x80,0x68,0x80,0x71,0x80,0x00,0x00,}}, +{ 0x6790, {0x20,0x40,0x21,0x80,0xFA,0x00,0x22,0x00,0x23,0xE0,0x72,0x80,0x6A,0x80,0x6A,0x80,0xA6,0x80,0x24,0x80,0x28,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x6795, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x29,0x40,0x21,0x00,0x71,0x00,0x69,0x00,0x6B,0x00,0xA3,0x00,0x25,0x20,0x29,0x20,0x30,0xE0,0x00,0x00,}}, +{ 0x6797, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x31,0x00,0x2B,0x80,0x6B,0x80,0x65,0x40,0xA9,0x20,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x679A, {0x22,0x00,0x22,0x00,0xFF,0xE0,0x24,0x40,0x2A,0x40,0x72,0x80,0x69,0x80,0x69,0x00,0xA1,0x00,0x22,0x80,0x2C,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x679C, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x679D, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x31,0x00,0x6F,0xC0,0x64,0x40,0x62,0x80,0xA3,0x00,0x21,0x00,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x67A0, {0x21,0x00,0x21,0x00,0xFF,0x80,0x21,0x80,0x32,0xA0,0x6D,0xA0,0x69,0x60,0xA1,0x00,0xAF,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x67A1, {0x61,0x80,0x62,0x80,0xFE,0x80,0xF2,0x80,0x62,0x80,0x7F,0xE0,0x72,0x80,0xE2,0x80,0xE6,0x80,0x64,0x80,0x68,0x80,0x70,0x80,0x00,0x00,}}, +{ 0x67A2, {0x20,0x00,0x27,0xE0,0xFC,0x00,0x24,0x40,0x25,0x40,0x75,0x80,0x6C,0x80,0x6D,0xC0,0xA6,0x40,0x24,0x00,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x67A6, {0x20,0x00,0x2F,0xE0,0xFF,0xC0,0xFF,0xC0,0x34,0x40,0x6C,0x40,0x6F,0xC0,0x64,0x40,0xA4,0x00,0x28,0x00,0x28,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x67A9, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1E,0x00,0x35,0x80,0xC4,0x60,0x11,0x00,0x20,0xC0,0xC4,0x60,0x88,0x00,0x11,0x80,0x3E,0x40,0x00,0x00,}}, +{ 0x67AF, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x31,0x00,0x69,0x00,0x6F,0xC0,0x64,0x40,0xA4,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x67B3, {0x20,0x00,0x27,0xC0,0xFC,0x40,0xFC,0x40,0x34,0x40,0x6C,0x40,0x6F,0xC0,0x64,0x40,0xA0,0x00,0x22,0x40,0x24,0x20,0x28,0x20,0x00,0x00,}}, +{ 0x67B4, {0x10,0x00,0x13,0xE0,0x7E,0x20,0x7F,0xE0,0x1A,0x20,0x34,0x00,0x37,0xE0,0x34,0xA0,0x50,0xA0,0x11,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x67B6, {0x20,0x00,0x23,0xC0,0xFA,0x40,0x2A,0x40,0x4B,0xC0,0xB6,0x40,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x67B7, {0x34,0x00,0x34,0x00,0x7E,0x60,0x7F,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x75,0xE0,0x75,0xE0,0x3D,0xE0,0x39,0xE0,0x33,0x00,0x00,0x00,}}, +{ 0x67B8, {0x31,0x00,0x31,0x00,0x7B,0xE0,0x7B,0xE0,0x34,0x20,0x3B,0xA0,0x3A,0xE0,0x72,0xE0,0x73,0xE0,0x30,0x20,0x30,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x67B9, {0x64,0x00,0x64,0x00,0xF7,0xC0,0xFF,0xC0,0x6F,0x40,0x75,0xC0,0x75,0xC0,0xE7,0xC0,0xE4,0x80,0x64,0x20,0x64,0x20,0x63,0xE0,0x00,0x00,}}, +{ 0x67C1, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x22,0x00,0x22,0x00,0x62,0x40,0x72,0x80,0x6B,0x00,0xAA,0x00,0x22,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x67C4, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0x27,0xC0,0x25,0x40,0x75,0x40,0x6D,0xC0,0x6E,0xC0,0xA6,0x40,0x24,0x40,0x24,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x67C6, {0x61,0x00,0x61,0x00,0xFF,0xE0,0xFF,0xE0,0x68,0x80,0x64,0x80,0x74,0x80,0xF2,0x80,0xE3,0x80,0x63,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x67CA, {0x21,0x00,0x21,0x00,0xFB,0xC0,0x22,0x40,0x36,0x80,0x69,0x80,0x69,0x80,0x63,0x40,0xA4,0xA0,0x26,0x00,0x21,0x80,0x20,0x40,0x00,0x00,}}, +{ 0x67CE, {0x62,0x40,0x62,0x40,0xF2,0x40,0xF7,0xE0,0x64,0x40,0x7D,0x40,0x75,0xC0,0xE4,0x40,0xE4,0x40,0x64,0x40,0x64,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x67CF, {0x10,0x80,0x11,0x00,0x7F,0xE0,0x12,0x20,0x12,0x20,0x3A,0x20,0x37,0xE0,0x36,0x20,0x52,0x20,0x12,0x20,0x13,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x67D0, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x1F,0x00,0x11,0x00,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x67D1, {0x22,0x40,0x22,0x40,0xFF,0xE0,0x22,0x40,0x22,0x40,0x72,0x40,0x6B,0xC0,0x6A,0x40,0xA2,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x67D3, {0x22,0x00,0x92,0x00,0x4F,0x80,0x02,0xA0,0x24,0xA0,0x48,0xE0,0x84,0x00,0x7F,0xC0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x67D4, {0x00,0x00,0x3F,0x00,0x1E,0x00,0xFF,0xC0,0x0D,0xC0,0x35,0x00,0x4C,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x67D8, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0x21,0x00,0x22,0x00,0x73,0xC0,0x6A,0x40,0x6E,0x40,0xA6,0x40,0x2A,0x40,0x33,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x67DA, {0x10,0x80,0x10,0x80,0x78,0x80,0x17,0xE0,0x34,0xA0,0x34,0xA0,0x3C,0xA0,0x5F,0xE0,0x54,0xA0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x67DD, {0x20,0x40,0x21,0x80,0xFE,0x00,0xFC,0x00,0x37,0xE0,0x6D,0x80,0x6D,0x80,0x65,0xC0,0xA5,0xC0,0x29,0x80,0x31,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x67DE, {0x22,0x00,0x22,0x00,0xFF,0xE0,0xFF,0xE0,0x39,0x00,0x69,0xC0,0x69,0x00,0x61,0x00,0xA1,0xC0,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x67E2, {0x20,0x40,0x21,0x80,0xFF,0x80,0xFD,0x80,0x37,0xE0,0x6D,0x80,0x6C,0x80,0x64,0x80,0xA6,0x80,0x3E,0x60,0x37,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x67E4, {0x20,0x00,0x27,0x80,0xFC,0x80,0xFC,0x80,0x37,0x80,0x6C,0x80,0x6C,0x80,0x67,0x80,0xA4,0x80,0x24,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x67E7, {0x20,0x40,0x21,0x80,0xFF,0x80,0xFD,0x80,0x35,0x80,0x6D,0x80,0x6D,0x80,0x65,0x80,0xA5,0x80,0x29,0xC0,0x2F,0xC0,0x30,0x20,0x00,0x00,}}, +{ 0x67E9, {0x60,0x00,0x6F,0xE0,0xF9,0x00,0xF9,0x80,0x6A,0x80,0x7C,0x80,0x79,0x80,0xEB,0xC0,0xEE,0x60,0x68,0x00,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x67EC, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x77,0x80,0x75,0x80,0x76,0x80,0x3F,0x80,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x67EE, {0x30,0x80,0x34,0xA0,0x7C,0xA0,0x7C,0xA0,0x37,0xE0,0x3C,0xA0,0x38,0x80,0x74,0xA0,0x74,0xA0,0x34,0xA0,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x67EF, {0x20,0x00,0x2F,0xE0,0xF8,0x40,0xFF,0x40,0x35,0xC0,0x6D,0xC0,0x6D,0xC0,0x67,0xC0,0xA4,0x40,0x20,0x40,0x20,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x67F1, {0x22,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x21,0x00,0x71,0x00,0x6F,0xC0,0x69,0x00,0xA1,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x67F3, {0x21,0x00,0x22,0x00,0xFC,0xE0,0x2A,0xA0,0x6A,0xA0,0x7A,0xA0,0x7A,0xA0,0xAA,0xA0,0xAE,0xA0,0x24,0xE0,0x24,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x67F4, {0x22,0x00,0x22,0xC0,0x7F,0x00,0x62,0x20,0x7B,0xE0,0xE4,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x67F5, {0x20,0x00,0x2F,0xC0,0xFA,0xC0,0x2A,0xC0,0x6A,0xC0,0x7F,0xE0,0x7A,0xC0,0xAA,0xC0,0xAA,0xC0,0x2A,0xC0,0x2A,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x67FB, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1E,0x00,0x25,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x67FE, {0x20,0x00,0x27,0xE0,0xF8,0x80,0x20,0x80,0x22,0x80,0x72,0xE0,0x6A,0x80,0x6A,0x80,0xA2,0x80,0x22,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x67FF, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x21,0x00,0x77,0xE0,0x6D,0x20,0x6D,0x20,0xA5,0x20,0x25,0x60,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6802, {0x20,0x00,0x23,0xC0,0xFA,0x40,0x23,0x40,0x32,0x40,0x6F,0xE0,0x6C,0x40,0x65,0x40,0xA5,0x40,0x2F,0xE0,0x28,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x6803, {0x20,0xC0,0x27,0x00,0xFC,0x00,0x27,0xE0,0x35,0x00,0x6D,0x00,0x6D,0xC0,0x65,0x40,0xAA,0x40,0x32,0x40,0x24,0x40,0x28,0x80,0x00,0x00,}}, +{ 0x6804, {0x28,0x80,0x14,0x80,0x7F,0xE0,0x40,0x40,0x84,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x6813, {0x21,0x00,0x21,0x00,0xFB,0x80,0x24,0x80,0x38,0x40,0x7F,0xE0,0x69,0x00,0x61,0x00,0xAF,0xC0,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6816, {0x20,0x00,0x3F,0xE0,0xF3,0x00,0x23,0x00,0x2F,0xC0,0x6B,0x40,0x7B,0x40,0xBB,0xC0,0xAC,0x40,0x28,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x6817, {0x00,0x00,0xFF,0xE0,0x0A,0x00,0x3F,0x80,0x2A,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x681E, {0x00,0x00,0x7B,0xC0,0x21,0x80,0xFF,0xE0,0x31,0x80,0x25,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6821, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x22,0x40,0x22,0x40,0x74,0xA0,0x6A,0xA0,0x69,0x80,0xA1,0x00,0x22,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x6822, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0x27,0xC0,0x24,0x40,0x74,0x40,0x6C,0x40,0x6F,0xC0,0xA4,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x6829, {0x30,0x00,0x3F,0xE0,0x7B,0x20,0x7B,0x60,0x35,0x60,0x39,0xA0,0x3B,0x60,0x73,0x60,0x75,0xA0,0x31,0x20,0x31,0x20,0x33,0x60,0x00,0x00,}}, +{ 0x682A, {0x21,0x00,0x25,0x00,0xF7,0xC0,0x2D,0x00,0x31,0x00,0x7F,0xE0,0x69,0x00,0x6B,0x80,0xA5,0x40,0x29,0x20,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x682B, {0x61,0x00,0x61,0x00,0xFF,0xE0,0xFF,0xE0,0x63,0xC0,0x74,0x40,0x74,0x80,0xEC,0xC0,0xF7,0xE0,0x64,0x80,0x64,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x6832, {0x21,0x00,0x23,0x40,0xFF,0xC0,0xF9,0x80,0x3F,0xE0,0x69,0x00,0x6B,0xE0,0x66,0x00,0xAB,0xC0,0x20,0x40,0x20,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x6834, {0x22,0x00,0x22,0x00,0xF7,0xE0,0x28,0x00,0x33,0xC0,0x6A,0xC0,0x6A,0xC0,0x62,0xC0,0xAF,0xE0,0x22,0x40,0x22,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x6838, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x25,0x40,0x32,0x40,0x6A,0x80,0x69,0x00,0x66,0x40,0xA8,0x80,0x21,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x6839, {0x20,0x00,0x27,0x80,0x24,0x80,0xFF,0x80,0x24,0x80,0x34,0x80,0x7F,0xA0,0x6D,0x20,0xA5,0xC0,0x25,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x683C, {0x21,0x00,0x21,0x00,0xFB,0xC0,0x26,0x40,0x21,0x80,0x71,0x80,0x6A,0x40,0x6F,0xE0,0xA2,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x683D, {0x21,0x00,0x21,0x80,0x7D,0x40,0x21,0x00,0xFF,0xE0,0x21,0x40,0xFD,0x40,0x30,0x80,0x68,0x80,0xA1,0xA0,0x22,0x60,0x24,0x20,0x00,0x00,}}, +{ 0x6840, {0x20,0x80,0x30,0xC0,0x7B,0xE0,0xDA,0x80,0x3F,0xE0,0x20,0x80,0xC4,0x80,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6841, {0x22,0x00,0x23,0xC0,0xFC,0x00,0x3A,0x00,0x33,0xE0,0x6C,0x80,0x6C,0x80,0x64,0x80,0xA4,0x80,0x24,0x80,0x24,0x80,0x25,0x80,0x00,0x00,}}, +{ 0x6842, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x21,0x00,0x2F,0xE0,0x71,0x00,0x69,0x00,0x6F,0xC0,0xA1,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6843, {0x22,0x80,0x22,0x80,0xFA,0xC0,0x26,0xC0,0x66,0x80,0x72,0x80,0x76,0xC0,0xBA,0xA0,0xA6,0xA0,0x24,0xA0,0x28,0xA0,0x30,0x60,0x00,0x00,}}, +{ 0x6846, {0x60,0x00,0x6F,0xE0,0xFB,0xC0,0xFB,0xC0,0x69,0x80,0x7B,0xC0,0x79,0x80,0xE9,0x80,0xEB,0xC0,0x6B,0xC0,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x6848, {0x04,0x00,0x7F,0xE0,0x48,0x00,0xFF,0xC0,0x13,0x00,0x3E,0x00,0x0D,0x80,0x74,0x40,0xFF,0xE0,0x15,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x684D, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF2,0x80,0x67,0xC0,0x78,0x20,0x7F,0xC0,0xE2,0x00,0xE7,0x80,0x60,0x80,0x60,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x684E, {0x60,0x00,0x6F,0xE0,0xF1,0x00,0xF2,0x40,0x7F,0xE0,0x71,0x20,0x71,0x00,0xEF,0xC0,0xE1,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6850, {0x10,0x00,0x17,0xE0,0x7C,0x20,0x1F,0xE0,0x34,0x20,0x35,0xE0,0x3D,0x60,0x5D,0x60,0x55,0xE0,0x14,0x20,0x14,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x6851, {0x1F,0x00,0x06,0x00,0x1B,0x00,0x7F,0xC0,0x2B,0x40,0x11,0x80,0x2F,0x40,0xFF,0xE0,0x0E,0x00,0x15,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6853, {0x20,0x00,0x27,0xE0,0xF8,0x00,0x23,0xC0,0x22,0x40,0x73,0xC0,0x6A,0x40,0x6A,0x40,0xA3,0xC0,0x20,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6854, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x21,0x00,0x31,0x00,0x6F,0xC0,0x68,0x00,0x67,0xC0,0xA4,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x6859, {0x21,0x00,0x23,0xC0,0xFF,0xE0,0xFF,0xE0,0x33,0x80,0x6B,0xC0,0x6D,0x80,0x69,0x80,0xAF,0xE0,0x21,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x685C, {0x22,0x40,0x29,0x40,0xF4,0x40,0x20,0x80,0x31,0x00,0x6F,0xE0,0x6A,0x80,0x62,0x80,0xA7,0x00,0x21,0x80,0x22,0x40,0x2C,0x40,0x00,0x00,}}, +{ 0x685D, {0x24,0x40,0x24,0x40,0xF7,0xE0,0x35,0x40,0x69,0x40,0x79,0x40,0x77,0x40,0xB3,0xE0,0xA4,0x40,0x28,0x40,0x30,0x40,0x20,0x40,0x00,0x00,}}, +{ 0x685F, {0x21,0x80,0x21,0x40,0xFF,0xE0,0x21,0x00,0x27,0xC0,0x71,0x00,0x6F,0xE0,0x61,0x40,0xA0,0xC0,0x20,0xA0,0x23,0x60,0x2C,0x20,0x00,0x00,}}, +{ 0x6863, {0x30,0x80,0x30,0x80,0x7C,0xA0,0x7A,0xA0,0x30,0x80,0x3F,0xE0,0x38,0x20,0x70,0x20,0x77,0xE0,0x30,0x20,0x37,0xE0,0x30,0x20,0x00,0x00,}}, +{ 0x6867, {0x21,0x00,0x23,0x00,0xF2,0x80,0x24,0x80,0x6F,0xC0,0x70,0x20,0x70,0x00,0xBF,0xE0,0xA2,0x80,0x24,0xC0,0x3F,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x6874, {0x60,0x40,0x61,0xC0,0xFF,0x60,0xF5,0xA0,0x68,0x00,0x77,0xC0,0x70,0x80,0xE1,0x80,0xEF,0xE0,0x61,0x80,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x6876, {0x10,0x00,0x17,0xE0,0x79,0xC0,0x17,0xE0,0x14,0xA0,0x34,0xA0,0x3F,0xE0,0x3C,0xA0,0x57,0xE0,0x14,0xA0,0x14,0xA0,0x14,0xE0,0x00,0x00,}}, +{ 0x6877, {0x31,0x00,0x31,0xC0,0x7E,0x80,0x7F,0xE0,0x35,0xA0,0x3C,0xA0,0x3F,0xE0,0x74,0xA0,0x77,0xE0,0x37,0xE0,0x38,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x687E, {0x60,0x00,0x6F,0x80,0xF2,0x80,0xFF,0xE0,0x62,0xC0,0x62,0x80,0x7F,0x80,0xF4,0x00,0xE7,0xC0,0x7C,0x40,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x687F, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x70,0x00,0x7F,0xC0,0xE1,0x00,0xEF,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x6881, {0x20,0x00,0x2F,0x80,0x82,0x80,0x0A,0xC0,0x34,0xA0,0x29,0xA0,0x44,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x6883, {0x60,0xC0,0x7F,0x80,0xF5,0x80,0xF9,0x80,0x6B,0xE0,0x7D,0x80,0x65,0x80,0xF5,0x80,0xFF,0xC0,0x6B,0xC0,0x74,0x00,0x63,0xE0,0x00,0x00,}}, +{ 0x6885, {0x22,0x00,0x22,0x00,0xFF,0xE0,0x27,0xC0,0x22,0xC0,0x72,0xC0,0x6F,0xE0,0x6A,0xC0,0xA5,0xE0,0x27,0xE0,0x20,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x688D, {0x61,0x00,0x62,0x00,0xF7,0xC0,0xF7,0xC0,0x64,0x40,0x77,0xC0,0x72,0x00,0xE2,0xE0,0xE7,0x00,0x66,0x40,0x62,0x40,0x61,0xC0,0x00,0x00,}}, +{ 0x688F, {0x61,0x00,0x65,0x00,0xF7,0xC0,0xFF,0xC0,0x71,0x00,0x7F,0xE0,0x71,0x00,0xE7,0xC0,0xE4,0x40,0x64,0x40,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x6893, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x24,0x40,0x32,0x80,0x6F,0xE0,0x69,0x00,0x61,0x00,0xA7,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6894, {0x60,0xC0,0x6F,0x00,0xFF,0xE0,0xFF,0xE0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0xEB,0xC0,0xEA,0x40,0x72,0x20,0x72,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x6897, {0x20,0x00,0x3F,0xE0,0xFF,0xC0,0x39,0x40,0x6F,0xC0,0x69,0x40,0x7F,0xC0,0xB9,0x40,0xA6,0x00,0x22,0x00,0x2D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x689B, {0x60,0x00,0x7F,0xC0,0xEB,0xC0,0xFF,0xC0,0x7B,0x80,0x6B,0xC0,0x7F,0xC0,0xEB,0xA0,0xEB,0xA0,0x73,0xE0,0x73,0x80,0x6D,0x80,0x00,0x00,}}, +{ 0x689D, {0x22,0x00,0x22,0x00,0x37,0xE0,0x3E,0x80,0x73,0x80,0x7F,0xE0,0xF1,0x00,0x7F,0xE0,0x77,0x80,0x79,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x689F, {0x04,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0xC0,0x20,0x00,0x3F,0x80,0x24,0x80,0xFF,0xE0,0xFF,0xE0,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x68A0, {0x30,0x00,0x33,0xC0,0x7A,0x40,0x7A,0x40,0x33,0xC0,0x38,0x80,0x39,0x00,0x77,0xE0,0x74,0x20,0x34,0x20,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x68A2, {0x20,0x80,0x24,0xA0,0xFA,0xA0,0x20,0x80,0x23,0xC0,0x72,0x40,0x6B,0xC0,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x22,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x68A6, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x79,0x80,0x6B,0xC0,0xA5,0xA0,0x07,0x80,0x18,0x80,0x29,0x00,0x06,0x00,0x18,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x68A7, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0x27,0x80,0x32,0x80,0x72,0x80,0x6F,0xE0,0x60,0x00,0xA7,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x68A8, {0x04,0x40,0x79,0x40,0x11,0x40,0xFF,0x40,0x35,0x40,0xD2,0xC0,0x14,0x00,0x7F,0xC0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x68AD, {0x21,0x00,0x23,0xC0,0xFF,0xE0,0xFF,0x80,0x33,0xA0,0x6D,0xE0,0x69,0x00,0x63,0x80,0xA4,0x80,0x23,0x00,0x27,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x68AF, {0x24,0x80,0x22,0x80,0xFF,0xC0,0x21,0x40,0x2F,0xC0,0x79,0x00,0x6F,0xE0,0x6B,0x20,0xA5,0x20,0x29,0x60,0x31,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x68B0, {0x21,0x00,0x21,0x80,0xF9,0x40,0x2F,0xE0,0x31,0x80,0x7A,0x80,0x6A,0x80,0x7F,0xA0,0xAA,0xC0,0x2A,0xC0,0x33,0x60,0x22,0x20,0x00,0x00,}}, +{ 0x68B1, {0x10,0x00,0x17,0xE0,0x7C,0xA0,0x14,0xA0,0x37,0xE0,0x34,0xA0,0x3D,0xE0,0x5D,0xE0,0x56,0xA0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x68B3, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF4,0xC0,0x7F,0xA0,0x70,0x00,0x75,0x80,0xE5,0x80,0xE5,0x80,0x69,0xA0,0x69,0xA0,0x70,0x60,0x00,0x00,}}, +{ 0x68B5, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x79,0x80,0x6B,0xC0,0xA5,0xA0,0x1F,0x00,0x11,0x00,0x19,0x00,0x15,0x20,0x21,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x68B6, {0x20,0x00,0x27,0xC0,0xFC,0x40,0x27,0xC0,0x27,0xC0,0x75,0x00,0x6F,0xC0,0x6D,0x00,0xA7,0xE0,0x29,0x00,0x29,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x68B9, {0x60,0x40,0x61,0x80,0xF6,0x00,0xF7,0xE0,0x64,0xC0,0x74,0x80,0x74,0x80,0xE4,0xC0,0xFF,0xE0,0x64,0x40,0x68,0x20,0x70,0x20,0x00,0x00,}}, +{ 0x68BA, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x7B,0xC0,0xAD,0xA0,0x21,0x80,0xFF,0xE0,0x04,0x00,0x07,0x00,0x04,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x68BC, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x27,0xC0,0x63,0x00,0x7F,0xE0,0x72,0x80,0xBF,0xE0,0xA4,0x80,0x3A,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x68C4, {0x04,0x00,0xFF,0xE0,0x3F,0x00,0x3F,0x80,0xFF,0xE0,0x25,0x80,0x3F,0x00,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x68C6, {0x61,0x00,0x63,0x00,0xF6,0x80,0xFF,0xC0,0x70,0x20,0x6F,0xC0,0x7B,0xC0,0xFB,0xC0,0xEF,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x68C9, {0x21,0x00,0x22,0x00,0xFB,0xC0,0x23,0xC0,0x32,0x40,0x6B,0xC0,0x68,0x80,0x67,0xE0,0xA4,0xA0,0x24,0xA0,0x24,0xC0,0x20,0x80,0x00,0x00,}}, +{ 0x68CA, {0x11,0x00,0x7F,0xC0,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x35,0x80,0xFF,0xE0,0x9F,0x20,0x64,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x68CB, {0x22,0x80,0x22,0x80,0xFF,0xE0,0x22,0x80,0x33,0x80,0x6A,0x80,0x6B,0x80,0x62,0x80,0xAF,0xE0,0x22,0x40,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x68CD, {0x20,0x00,0x27,0xC0,0xFC,0x40,0xFF,0xC0,0x34,0x40,0x6F,0xC0,0x6D,0x80,0x65,0xA0,0xA7,0xC0,0x25,0xA0,0x27,0xA0,0x3C,0xE0,0x00,0x00,}}, +{ 0x68D2, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2F,0xC0,0x33,0x80,0x7F,0xE0,0x65,0x80,0x6F,0xC0,0xB1,0x20,0x27,0xC0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x68D4, {0x20,0xC0,0x27,0x80,0xFF,0xE0,0xFF,0xE0,0x34,0x80,0x6F,0xA0,0x6C,0x60,0x67,0xE0,0xA7,0xC0,0x27,0xC0,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x68D5, {0x21,0x80,0x21,0x80,0xFF,0xE0,0xF8,0x00,0x33,0xC0,0x68,0x00,0x6F,0xE0,0x61,0x80,0xA3,0xC0,0x25,0xA0,0x29,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x68D7, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x77,0x80,0x64,0x80,0xFF,0xE0,0x04,0x00,0x7F,0x80,0x7F,0x80,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x68D8, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x31,0x80,0x7B,0xC0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x68DA, {0x10,0x00,0x17,0xE0,0x7D,0xA0,0x15,0xA0,0x37,0xE0,0x35,0xA0,0x3D,0xA0,0x5F,0xE0,0x55,0xA0,0x1D,0xA0,0x19,0xA0,0x13,0x60,0x00,0x00,}}, +{ 0x68DF, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2F,0xC0,0x69,0x40,0x6F,0xC0,0x79,0x40,0xBF,0xC0,0xA7,0x80,0x39,0x40,0x21,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x68E0, {0x24,0x80,0x35,0x80,0x7F,0xE0,0x9F,0x00,0x31,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x68E1, {0x30,0x00,0x3F,0xE0,0x7A,0xE0,0x79,0xA0,0x3F,0xE0,0x38,0xA0,0x3A,0xE0,0x7A,0xE0,0x7B,0xE0,0x3B,0xE0,0x38,0x20,0x38,0x60,0x00,0x00,}}, +{ 0x68E3, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xFF,0xE0,0x63,0x40,0x7F,0xC0,0x79,0x40,0xE5,0xC0,0xE7,0x80,0x67,0x40,0x79,0x20,0x63,0x00,0x00,0x00,}}, +{ 0x68E7, {0x21,0x80,0x21,0x40,0xFF,0xE0,0xFF,0xC0,0x31,0xA0,0x6F,0x60,0x69,0xA0,0x63,0xE0,0xAF,0xC0,0x20,0xA0,0x21,0xE0,0x26,0x20,0x00,0x00,}}, +{ 0x68EE, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x0E,0x00,0x75,0xC0,0x24,0x80,0x20,0x80,0xFF,0xE0,0x71,0x80,0x6A,0xC0,0xA4,0xA0,0x20,0x80,0x00,0x00,}}, +{ 0x68EF, {0x61,0x00,0x63,0x00,0xF6,0x80,0xFF,0xC0,0x70,0x20,0x67,0x80,0x71,0x00,0xF3,0x00,0xE3,0x80,0x6A,0x20,0x72,0xA0,0x61,0x80,0x00,0x00,}}, +{ 0x68F2, {0x21,0x00,0x2F,0xE0,0xF1,0x00,0x27,0xC0,0x6F,0xE0,0x71,0x40,0x6F,0xC0,0xA2,0x00,0xBF,0xE0,0x24,0x80,0x23,0x80,0x2C,0x40,0x00,0x00,}}, +{ 0x68F9, {0x61,0x00,0x61,0x00,0xF1,0xE0,0xFF,0xC0,0x68,0x40,0x7F,0xC0,0x78,0x40,0xEF,0xC0,0xEF,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x68FA, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x28,0x40,0x27,0x80,0x74,0x80,0x6F,0x80,0x6C,0x00,0xA7,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x6900, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2C,0x00,0x77,0xC0,0x75,0x40,0x7D,0x40,0xAB,0x40,0xB3,0x40,0x25,0x20,0x29,0x20,0x30,0xE0,0x00,0x00,}}, +{ 0x6901, {0x61,0x00,0x7F,0xE0,0xF7,0x80,0xF7,0x80,0x67,0x80,0x70,0x00,0x7F,0xC0,0xE0,0x80,0xEF,0xE0,0x6F,0xE0,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x6904, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xF6,0x80,0x7F,0xE0,0x71,0x00,0x7F,0xE0,0xE2,0x80,0xE7,0x80,0x67,0x80,0x63,0x40,0x7C,0x40,0x00,0x00,}}, +{ 0x6905, {0x21,0x00,0x21,0x00,0x27,0xE0,0xF9,0x80,0x32,0x40,0x6F,0xE0,0x68,0x40,0x67,0x40,0xA5,0x40,0x27,0x40,0x25,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x6908, {0x32,0x00,0x32,0x00,0x7F,0xE0,0x7D,0x20,0x35,0xE0,0x33,0xA0,0x3F,0xE0,0x7B,0xA0,0x73,0xE0,0x3D,0x20,0x31,0x20,0x30,0x40,0x00,0x00,}}, +{ 0x690B, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x23,0xC0,0x22,0x40,0x72,0x40,0x6B,0xC0,0x69,0x00,0xA3,0x40,0x25,0x20,0x29,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x690C, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFB,0x80,0x73,0xA0,0x74,0xE0,0x78,0x00,0xEF,0xC0,0xE1,0x00,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x690D, {0x20,0x80,0x23,0xE0,0xF0,0x80,0x25,0xC0,0x25,0x40,0x75,0xC0,0x6D,0x40,0x6D,0xC0,0xA5,0x40,0x25,0xC0,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x690E, {0x22,0x80,0x22,0x80,0xFE,0x80,0x2F,0xE0,0x24,0x80,0x77,0xC0,0x7C,0x80,0x6C,0x80,0xA7,0xC0,0x24,0x80,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x690F, {0x60,0x00,0x6F,0xC0,0xF3,0x80,0xF3,0x80,0x6F,0xC0,0x78,0x40,0x78,0x40,0xEF,0xC0,0xEB,0xC0,0x63,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6912, {0x64,0x00,0x64,0x00,0xF7,0xE0,0xF5,0xA0,0x7F,0xC0,0x65,0xC0,0x74,0xC0,0xFE,0x80,0xED,0xC0,0x75,0xC0,0x65,0x20,0x6E,0x20,0x00,0x00,}}, +{ 0x6919, {0x10,0x00,0x13,0xC0,0x7E,0x40,0x13,0xC0,0x33,0xC0,0x3A,0x40,0x38,0x00,0x57,0xE0,0x54,0x20,0x17,0xE0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x691A, {0x30,0x00,0x37,0xE0,0x7F,0xE0,0x7F,0xE0,0x37,0xE0,0x3C,0x20,0x3C,0x20,0x74,0x20,0x74,0x20,0x34,0x20,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x691B, {0x22,0x80,0x22,0x80,0xFF,0xE0,0x22,0x80,0x30,0x00,0x72,0xA0,0x6A,0xC0,0x64,0x80,0xAC,0x80,0x24,0xA0,0x24,0xA0,0x24,0xE0,0x00,0x00,}}, +{ 0x691C, {0x21,0x00,0x21,0x00,0xFA,0x80,0x27,0xC0,0x29,0x20,0x77,0xC0,0x75,0x40,0x6D,0x40,0xA7,0xC0,0x22,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x6921, {0x30,0x20,0x3F,0xA0,0x7A,0xE0,0x7F,0xE0,0x3F,0xE0,0x32,0xE0,0x3A,0xE0,0x7F,0xE0,0x72,0xE0,0x33,0xA0,0x3E,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x6922, {0x30,0x00,0x37,0xE0,0x7F,0xE0,0x7F,0xE0,0x34,0xA0,0x3F,0xE0,0x3C,0xA0,0x74,0xE0,0x77,0xE0,0x37,0xE0,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x6923, {0x63,0x80,0x63,0x80,0xFF,0xC0,0xFF,0xC0,0x6B,0xC0,0x7F,0xC0,0x7B,0xC0,0xEB,0xC0,0xFF,0xE0,0x62,0x80,0x64,0x40,0x78,0x40,0x00,0x00,}}, +{ 0x6925, {0x34,0x00,0x34,0x00,0x7F,0xE0,0x7F,0xE0,0x3A,0xE0,0x3F,0xE0,0x3A,0xE0,0x7A,0xE0,0x73,0xE0,0x34,0xE0,0x38,0xE0,0x30,0x00,0x00,0x00,}}, +{ 0x6926, {0x61,0x00,0x65,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xE0,0x73,0x80,0x75,0x80,0xFB,0x60,0xEF,0xC0,0x62,0x40,0x64,0x40,0x68,0x80,0x00,0x00,}}, +{ 0x6928, {0x61,0x80,0x61,0x80,0xFF,0xE0,0xF9,0x40,0x69,0x40,0x7B,0xE0,0x7B,0x40,0xEF,0xC0,0xEA,0x40,0x72,0x40,0x72,0x40,0x62,0xC0,0x00,0x00,}}, +{ 0x692A, {0x64,0x80,0x62,0x80,0xFF,0xE0,0xFF,0xE0,0x6B,0xC0,0x7B,0xC0,0x77,0xC0,0xE7,0x80,0xE7,0x80,0x67,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6930, {0x60,0x00,0x7F,0xC0,0xFB,0xC0,0xFF,0xC0,0x6B,0x80,0x7B,0xC0,0x7F,0xC0,0xEB,0xA0,0xEF,0xA0,0x7F,0xE0,0x63,0x80,0x63,0x80,0x00,0x00,}}, +{ 0x6934, {0x21,0x00,0x23,0xC0,0xFD,0x40,0x2F,0x60,0x6B,0x60,0x68,0x20,0x7F,0xC0,0xB9,0x40,0xAE,0xC0,0x38,0x80,0x29,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x6936, {0x61,0x80,0x69,0x40,0xFF,0x40,0xFB,0xC0,0x6F,0xC0,0x73,0x80,0x74,0xA0,0xEA,0xE0,0xE7,0x80,0x7F,0x80,0x63,0x80,0x7C,0x60,0x00,0x00,}}, +{ 0x6939, {0x64,0x80,0x64,0xC0,0xFF,0xE0,0xF7,0x80,0x64,0x80,0x77,0x80,0x74,0x80,0xFF,0xE0,0xEB,0x80,0x6C,0xC0,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x693D, {0x62,0x00,0x63,0xC0,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x73,0x40,0x7D,0xC0,0xE3,0x80,0xEF,0xC0,0x7D,0xA0,0x61,0x80,0x63,0x00,0x00,0x00,}}, +{ 0x693F, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x37,0x80,0x63,0x80,0x7F,0xE0,0x74,0x80,0xAF,0xC0,0xB7,0xA0,0x27,0x80,0x27,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x694A, {0x20,0x00,0x27,0x80,0xF4,0x80,0x27,0x80,0x67,0x80,0x70,0x00,0x7F,0xE0,0xA4,0x00,0xA7,0xC0,0x25,0xC0,0x2B,0x40,0x23,0x80,0x00,0x00,}}, +{ 0x6953, {0x20,0x00,0x2F,0xC0,0xF9,0xC0,0x2F,0x40,0x69,0x40,0x7F,0xC0,0x7D,0xC0,0xAF,0xC0,0xAD,0x60,0x31,0xE0,0x3E,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x6954, {0x64,0x00,0x64,0x00,0xFF,0xE0,0xFF,0xA0,0x65,0xA0,0x67,0x20,0x7C,0xC0,0xF7,0x00,0xFF,0xE0,0x63,0x00,0x6C,0x80,0x70,0x60,0x00,0x00,}}, +{ 0x6955, {0x21,0x00,0x2F,0xE0,0xF3,0xC0,0x24,0x80,0x2B,0xE0,0x70,0x00,0x77,0xC0,0x6C,0x40,0xAF,0xC0,0x27,0xC0,0x24,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x6959, {0x60,0x80,0x7F,0x80,0xFF,0xE0,0xFD,0xE0,0x7F,0x80,0x65,0xC0,0x77,0xC0,0xFD,0xC0,0xED,0xA0,0x74,0x80,0x64,0x80,0x6C,0x80,0x00,0x00,}}, +{ 0x695A, {0x10,0x80,0x10,0x80,0xFF,0xE0,0x39,0x80,0xD6,0xE0,0x10,0x80,0xFF,0xC0,0x04,0x80,0x24,0x00,0x27,0x80,0x5C,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x695C, {0x32,0x00,0x32,0xE0,0x7F,0xE0,0x7F,0xE0,0x32,0xE0,0x3F,0xE0,0x3D,0xE0,0x75,0xE0,0x77,0xA0,0x37,0xA0,0x31,0x20,0x32,0x60,0x00,0x00,}}, +{ 0x695D, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFF,0xC0,0x6F,0xC0,0x7B,0xC0,0x7B,0xC0,0xEF,0xC0,0xE7,0x80,0x79,0x60,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x695E, {0x60,0x00,0x6F,0xC0,0xFB,0xC0,0xFF,0xC0,0x6B,0x40,0x61,0x00,0x7F,0xE0,0xF1,0x00,0xE3,0xC0,0x62,0x40,0x64,0x40,0x78,0x80,0x00,0x00,}}, +{ 0x6960, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x2F,0xC0,0x6C,0xC0,0x6B,0x40,0x7F,0xC0,0xB9,0x40,0xAF,0xC0,0x29,0x40,0x29,0x40,0x28,0xC0,0x00,0x00,}}, +{ 0x6961, {0x67,0x00,0x63,0x00,0xF6,0x80,0xFF,0xC0,0x70,0x20,0x7E,0x40,0x73,0xC0,0xFB,0xC0,0xFF,0x80,0x7F,0xC0,0x73,0xC0,0x77,0xC0,0x00,0x00,}}, +{ 0x6962, {0x24,0x80,0x22,0x80,0xFF,0xE0,0x23,0x00,0x6F,0xC0,0x6B,0x40,0x7B,0x40,0xBA,0xC0,0xAF,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x696A, {0x65,0x80,0x67,0xC0,0xFF,0xE0,0xF5,0x80,0x64,0x00,0x77,0xC0,0x71,0x00,0xFF,0xE0,0xE7,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x696B, {0x60,0x00,0x67,0x80,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x74,0x80,0x77,0x80,0xE4,0x80,0xE7,0xE0,0x67,0xE0,0x7C,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x696D, {0x0A,0x00,0x2A,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x696E, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xF1,0x40,0x7F,0xE0,0x71,0x80,0x72,0x80,0xE7,0xC0,0xFF,0xC0,0x67,0xC0,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x696F, {0x20,0x40,0x21,0x80,0xFE,0x80,0x2F,0xE0,0x28,0x80,0x7B,0xC0,0x7A,0x40,0xAB,0xC0,0xAA,0x40,0x33,0xC0,0x33,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x6973, {0x22,0x80,0x22,0x80,0xFF,0xE0,0x23,0x80,0x22,0x80,0x73,0x80,0x69,0x00,0x6F,0xE0,0xA7,0x80,0x29,0x40,0x31,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x6974, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xF6,0x80,0x6F,0xE0,0x79,0x40,0x71,0x00,0xEF,0xC0,0xE9,0x40,0x69,0x40,0x69,0xC0,0x61,0x00,0x00,0x00,}}, +{ 0x6975, {0x20,0x00,0x3F,0xE0,0xF2,0x00,0x26,0x60,0x65,0xA0,0x6F,0xA0,0x7B,0xC0,0xBB,0xC0,0xAF,0xA0,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6977, {0x25,0x80,0x25,0xA0,0xFF,0xC0,0xFD,0x80,0x27,0xA0,0x7D,0xE0,0x69,0x00,0x6F,0xC0,0xA7,0xC0,0x27,0xC0,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x6978, {0x61,0x80,0x62,0x80,0xFC,0x80,0xF4,0xA0,0x7F,0xC0,0x65,0xC0,0x76,0x80,0xFD,0x80,0xED,0xC0,0x75,0xC0,0x65,0x20,0x66,0x20,0x00,0x00,}}, +{ 0x6979, {0x60,0x00,0x6F,0x80,0xF2,0xE0,0xF7,0xE0,0x67,0xA0,0x79,0xA0,0x7A,0xC0,0xEF,0xC0,0xEB,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x697C, {0x21,0x00,0x29,0x40,0xF7,0x80,0x2F,0xE0,0x37,0x80,0x69,0x40,0x69,0x00,0xAF,0xE0,0xA2,0x80,0x27,0x00,0x22,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0x697D, {0x04,0x00,0x48,0x40,0x3F,0x40,0x1F,0x80,0x31,0xC0,0xDF,0x20,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x697E, {0x61,0x00,0x62,0x00,0xFF,0xC0,0xFF,0xC0,0x68,0x40,0x7F,0xC0,0x71,0x40,0xFF,0xC0,0xE7,0x80,0x69,0x40,0x71,0x20,0x63,0x00,0x00,0x00,}}, +{ 0x6981, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFF,0xE0,0x73,0x80,0x74,0x80,0x7F,0x40,0xE3,0x00,0xEF,0xC0,0x61,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6982, {0x40,0x00,0x5F,0xE0,0x54,0x80,0xFD,0x80,0x55,0x80,0x77,0xE0,0x7D,0x80,0xF9,0x80,0xD7,0x80,0x5F,0xA0,0x52,0xA0,0x44,0x60,0x00,0x00,}}, +{ 0x698A, {0x24,0x40,0x24,0x40,0xFF,0xE0,0x23,0x60,0x63,0xE0,0x75,0x60,0x7F,0x60,0xAF,0xE0,0xB5,0x60,0x24,0x40,0x24,0x40,0x24,0x40,0x00,0x00,}}, +{ 0x698E, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0x27,0xC0,0x34,0x40,0x6F,0xC0,0x6C,0x40,0x67,0xC0,0xAE,0xC0,0x23,0x80,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x6991, {0x61,0x40,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x79,0x40,0x7F,0xC0,0xE9,0x40,0xEF,0xE0,0x6F,0xE0,0x62,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x6994, {0x64,0x00,0x65,0xE0,0xFF,0xA0,0xF3,0xC0,0x7F,0xC0,0x73,0xC0,0x7F,0xA0,0xF9,0xA0,0xF5,0xA0,0x77,0xE0,0x79,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x6995, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFC,0x40,0x75,0x40,0x79,0x40,0x72,0x80,0xE4,0xC0,0xEF,0xE0,0x64,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x699B, {0x21,0x00,0x2F,0xE0,0xF7,0xC0,0x2F,0xC0,0x7F,0xE0,0x64,0x80,0x7B,0x40,0xB1,0x20,0xAF,0xC0,0x27,0x80,0x39,0x60,0x21,0x00,0x00,0x00,}}, +{ 0x699C, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xF6,0x80,0x6F,0xE0,0x79,0x40,0x7F,0xC0,0xE1,0x00,0xE3,0xC0,0x62,0x40,0x64,0x40,0x78,0x80,0x00,0x00,}}, +{ 0x69A0, {0x60,0x00,0x6F,0xE0,0xFF,0xC0,0xF7,0x80,0x67,0x80,0x74,0x80,0x77,0x80,0xE3,0x00,0xFF,0xE0,0x62,0x00,0x64,0x40,0x78,0x40,0x00,0x00,}}, +{ 0x69A7, {0x60,0x00,0x6F,0xE0,0xF9,0x80,0xFF,0xE0,0x6B,0xC0,0x7F,0xE0,0x79,0x80,0xEF,0xE0,0xEA,0x80,0x6C,0x80,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x69AE, {0x21,0x80,0x7B,0xA0,0xB7,0xC0,0x31,0xC0,0x4A,0x40,0x7F,0xE0,0x44,0x40,0xBF,0x80,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x69B1, {0x61,0x00,0x7F,0xE0,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x64,0x80,0x77,0x80,0xF3,0x40,0xED,0xC0,0x6C,0x80,0x67,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x69B2, {0x60,0x00,0x6F,0xC0,0xF9,0x40,0xFB,0xC0,0x6C,0x40,0x7F,0xC0,0x70,0x00,0xEF,0xC0,0xEB,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x69B4, {0x61,0x00,0x6E,0xE0,0xF8,0xA0,0xFA,0xA0,0x6B,0xA0,0x7D,0xE0,0x71,0x00,0xEF,0xC0,0xEF,0xC0,0x6F,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x69BB, {0x30,0x00,0x37,0xC0,0x7F,0xC0,0x7F,0xC0,0x37,0xC0,0x38,0x00,0x3F,0xE0,0x73,0x60,0x7F,0xE0,0x3F,0xE0,0x31,0x20,0x33,0x60,0x00,0x00,}}, +{ 0x69BE, {0x60,0x00,0x67,0xC0,0xF5,0xC0,0xF5,0xC0,0x6F,0xE0,0x78,0x40,0x77,0xC0,0xE4,0x40,0xE7,0xC0,0x67,0xC0,0x64,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x69BF, {0x61,0x00,0x69,0x40,0xFF,0xC0,0xFF,0xC0,0x7F,0xE0,0x70,0x00,0x77,0x80,0xE4,0x80,0xE7,0x80,0x66,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x69C1, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF7,0x80,0x64,0x80,0x77,0x80,0x70,0x00,0xEF,0xC0,0xEB,0x40,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x69C3, {0x23,0x80,0x7A,0x80,0x6E,0x60,0x7F,0xE0,0xFA,0xC0,0x69,0x80,0x9E,0xE0,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x69C7, {0x22,0xC0,0x23,0x00,0xFF,0xE0,0xFD,0xE0,0x25,0x40,0x75,0xC0,0x6D,0x40,0x6D,0xC0,0xA5,0xC0,0x27,0xE0,0x23,0xC0,0x2C,0x20,0x00,0x00,}}, +{ 0x69CA, {0x48,0x00,0x73,0xC0,0xFF,0xC0,0x2B,0xC0,0x6B,0xC0,0x7A,0x40,0x24,0xC0,0x64,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x69CB, {0x22,0x80,0x2F,0xE0,0xFA,0x80,0x27,0xC0,0x6F,0xE0,0x71,0x00,0x77,0xC0,0xA5,0x40,0xA7,0xC0,0x2F,0xE0,0x24,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x69CC, {0x20,0x80,0x29,0x00,0xF5,0xC0,0x21,0x40,0x61,0xC0,0x6D,0x00,0x75,0xC0,0xB5,0x40,0xA5,0x40,0x25,0xC0,0x2A,0x00,0x31,0xE0,0x00,0x00,}}, +{ 0x69CD, {0x21,0x00,0x23,0x00,0xFF,0x80,0x3F,0xC0,0x77,0xE0,0x64,0x80,0x77,0x80,0xB7,0x80,0xA7,0xC0,0x3C,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x69CE, {0x64,0x80,0x63,0x80,0xFF,0xE0,0xFF,0xC0,0x63,0x00,0x7F,0xE0,0x74,0x00,0xE7,0xC0,0xE9,0x00,0x71,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x69D0, {0x61,0x00,0x62,0x00,0xFF,0xC0,0xF9,0x40,0x6F,0xC0,0x79,0x40,0x7F,0xC0,0xE5,0x80,0xE5,0xC0,0x69,0xE0,0x71,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x69D3, {0x20,0x00,0x27,0xC0,0xFF,0xE0,0xFF,0xE0,0x27,0xC0,0x74,0x40,0x6F,0xC0,0x6C,0x40,0xA7,0xC0,0x27,0xC0,0x26,0xC0,0x38,0x20,0x00,0x00,}}, +{ 0x69D8, {0x22,0x80,0x27,0xC0,0xF9,0x00,0x27,0xC0,0x21,0x00,0x7F,0xE0,0x69,0x00,0x6F,0x60,0xA3,0xC0,0x2D,0x20,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x69D9, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x27,0x80,0x24,0x80,0x77,0x80,0x6C,0x80,0x6F,0x80,0xA4,0x80,0x3F,0xE0,0x26,0x80,0x38,0x40,0x00,0x00,}}, +{ 0x69DD, {0x62,0x00,0x6F,0x80,0xFF,0x80,0xFF,0x80,0x6F,0x80,0x78,0x00,0x7F,0xE0,0xE8,0x00,0xEF,0xE0,0x72,0xA0,0x7F,0xA0,0x70,0xC0,0x00,0x00,}}, +{ 0x69DE, {0x61,0x00,0x63,0x00,0xFF,0xC0,0xF6,0x80,0x7F,0xE0,0x70,0x00,0x7F,0xC0,0xEB,0x40,0xEF,0xC0,0x6F,0xE0,0x6B,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x69E7, {0x20,0xC0,0xFF,0x00,0x7B,0xE0,0x7B,0xE0,0x7A,0x80,0x7A,0x80,0xFC,0x80,0x34,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x69E8, {0x64,0x00,0x65,0xC0,0xFF,0xC0,0xFF,0xC0,0x6B,0x80,0x6F,0xC0,0x71,0xC0,0xFF,0xA0,0xE7,0xA0,0x7D,0xE0,0x65,0x80,0x6D,0x80,0x00,0x00,}}, +{ 0x69EB, {0x61,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6B,0x40,0x7F,0xC0,0x71,0x80,0xFF,0xC0,0xEF,0xE0,0x6F,0xE0,0x62,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x69ED, {0x61,0x80,0x61,0xC0,0xFF,0xE0,0xFF,0xE0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0xEF,0xC0,0xEE,0x80,0x77,0xA0,0x7B,0xE0,0x67,0x20,0x00,0x00,}}, +{ 0x69F2, {0x68,0x40,0x6F,0xC0,0xF6,0xC0,0xFE,0x40,0x77,0x40,0x75,0xC0,0x7F,0xC0,0xF5,0x60,0xFF,0xC0,0x7F,0x40,0x71,0x40,0x63,0x40,0x00,0x00,}}, +{ 0x69F9, {0x61,0x00,0x62,0x00,0xFF,0xC0,0xFF,0xC0,0x68,0x40,0x7F,0xC0,0x71,0x00,0xED,0xC0,0xE1,0x40,0x7F,0xE0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x69FB, {0x24,0x00,0x25,0xC0,0xF5,0x40,0x3F,0xC0,0x65,0x40,0x7F,0xC0,0x75,0x40,0xA5,0x40,0xAB,0xC0,0x31,0xA0,0x31,0xA0,0x22,0x60,0x00,0x00,}}, +{ 0x69FD, {0x63,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x6B,0xC0,0x7F,0xC0,0xF7,0x80,0xE7,0x80,0x67,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x69FF, {0x65,0x80,0x7F,0xE0,0xF7,0x80,0xFF,0xC0,0x6B,0x40,0x7F,0xC0,0x71,0x00,0xEF,0xC0,0xE7,0xC0,0x67,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6A02, {0x64,0x80,0x64,0xC0,0xEF,0xC0,0x6E,0xC0,0x6A,0xC0,0x7A,0xE0,0xDF,0xA0,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6A05, {0x65,0x40,0x65,0x40,0xF9,0x40,0xF7,0xE0,0x67,0xA0,0x78,0x00,0x79,0x80,0xFB,0x80,0xEB,0xC0,0x6B,0x80,0x6F,0x80,0x68,0xE0,0x00,0x00,}}, +{ 0x6A0A, {0x62,0x80,0x62,0xC0,0xFF,0xE0,0x6E,0xC0,0x73,0xC0,0xFD,0xA0,0xE6,0xA0,0x6C,0xC0,0xFF,0xE0,0x0E,0x00,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x6A0B, {0x20,0x00,0x27,0xC0,0xF9,0x80,0x2B,0xC0,0x62,0xC0,0x7A,0xC0,0x7B,0xC0,0xBA,0xC0,0xAB,0xC0,0x2A,0xC0,0x36,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x6A0C, {0x60,0x00,0x67,0xC0,0xFF,0xE0,0xFF,0xE0,0x6F,0x80,0x77,0xC0,0x74,0x40,0xE7,0xC0,0xE7,0xC0,0x67,0xC0,0x66,0xC0,0x78,0x20,0x00,0x00,}}, +{ 0x6A12, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFA,0xC0,0x6B,0xC0,0x6B,0xA0,0x73,0xA0,0xF7,0x80,0xF9,0x00,0x69,0x40,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x6A13, {0x61,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6F,0xC0,0x7F,0xC0,0x79,0x40,0xEF,0xC0,0xEF,0xE0,0x6F,0xE0,0x63,0x80,0x7E,0x40,0x00,0x00,}}, +{ 0x6A14, {0x69,0x40,0x72,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x79,0x40,0x7F,0xC0,0xE3,0x00,0xFF,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x6A17, {0x60,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6D,0xC0,0x67,0x80,0x70,0x00,0xFF,0xE0,0xE3,0x80,0x67,0x80,0x60,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x6A19, {0x20,0x00,0x3F,0xE0,0xF4,0x80,0x2F,0xC0,0x6F,0xC0,0x70,0x00,0x77,0x80,0xA0,0x00,0xBF,0xE0,0x29,0x40,0x31,0x40,0x23,0x00,0x00,0x00,}}, +{ 0x6A1B, {0x60,0x00,0x6F,0xE0,0xF7,0x60,0xFF,0xE0,0x67,0xE0,0x79,0xA0,0x77,0x80,0xFB,0x60,0xE7,0x00,0x66,0x40,0x63,0x80,0x6E,0x00,0x00,0x00,}}, +{ 0x6A1E, {0x60,0x00,0x6F,0xC0,0xFB,0x80,0xFB,0x80,0x6B,0x80,0x78,0x00,0x7F,0xC0,0xED,0xC0,0xEF,0xC0,0x6F,0xC0,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x6A1F, {0x20,0x80,0x27,0xE0,0xF9,0x40,0x27,0xE0,0x33,0xC0,0x6A,0x40,0x6B,0xC0,0x62,0x40,0xA3,0xC0,0x2F,0xE0,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6A21, {0x22,0x80,0x22,0x80,0xFF,0xE0,0x27,0xC0,0x34,0x40,0x6F,0xC0,0x6C,0x40,0x67,0xC0,0xA1,0x00,0x3F,0xE0,0x24,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x6A22, {0x62,0x00,0x6F,0x80,0xFF,0x80,0xFF,0x80,0x6F,0x80,0x78,0x00,0x7F,0xE0,0xE8,0x00,0xEF,0xE0,0x7F,0xA0,0x74,0x20,0x60,0xC0,0x00,0x00,}}, +{ 0x6A23, {0x64,0x80,0x63,0x80,0xFF,0xC0,0xF7,0x80,0x63,0x00,0x7F,0xE0,0x73,0x00,0xE7,0x40,0xEF,0xC0,0x6F,0x80,0x79,0x60,0x63,0x00,0x00,0x00,}}, +{ 0x6A29, {0x22,0x00,0x23,0xC0,0xFD,0x00,0x2F,0xE0,0x62,0x80,0x67,0xE0,0x7D,0x00,0xB7,0xC0,0xA7,0xC0,0x25,0x00,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x6A2A, {0x22,0x80,0x27,0xC0,0xF2,0x80,0x2F,0xE0,0x61,0x00,0x7F,0xC0,0x79,0x40,0xBF,0xC0,0xA9,0x40,0x2F,0xC0,0x24,0x80,0x28,0x40,0x00,0x00,}}, +{ 0x6A2B, {0x20,0x00,0x2F,0xC0,0xFF,0x40,0x2E,0xC0,0x6F,0x80,0x6A,0xC0,0x7F,0x20,0xB1,0x00,0xAF,0xC0,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x6A2E, {0x60,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6B,0xC0,0x7F,0xC0,0x71,0x00,0xE9,0x40,0xEB,0x40,0x63,0x80,0x6C,0x80,0x70,0x60,0x00,0x00,}}, +{ 0x6A35, {0x22,0x80,0x22,0x80,0xF7,0xE0,0x2D,0x00,0x67,0xC0,0x65,0x00,0x77,0xC0,0xB5,0x00,0xA7,0xE0,0x2B,0x40,0x2A,0xA0,0x34,0xA0,0x00,0x00,}}, +{ 0x6A36, {0x60,0x00,0x67,0x80,0xF7,0x80,0xF7,0x80,0x67,0x80,0x7F,0xE0,0x7A,0x00,0xEF,0xC0,0xEF,0xC0,0x6E,0xC0,0x7F,0xC0,0x62,0x20,0x00,0x00,}}, +{ 0x6A38, {0x63,0x80,0x6B,0xC0,0xFF,0xE0,0xFF,0xE0,0x62,0x80,0x7F,0xC0,0x71,0x00,0xE7,0x80,0xEF,0xE0,0x6F,0xE0,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x6A39, {0x24,0x40,0x24,0x40,0xFF,0xE0,0x2F,0x40,0x60,0x40,0x6F,0xC0,0x79,0xC0,0xBF,0x40,0xBA,0x40,0x2E,0x40,0x38,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x6A3A, {0x24,0x80,0x24,0x80,0xFF,0xE0,0x24,0x80,0x6F,0xC0,0x7F,0xE0,0x75,0x40,0xAF,0xE0,0xA1,0x00,0x2F,0xE0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x6A3D, {0x24,0x80,0x22,0x80,0xFF,0xE0,0x2F,0xC0,0x2B,0xC0,0x2C,0xC0,0x3F,0xC0,0x6F,0xC0,0xA0,0x80,0x2F,0xE0,0x22,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6A44, {0x61,0x80,0x6F,0x80,0xFF,0x80,0xFF,0xE0,0x6B,0xC0,0x7F,0xC0,0x7B,0xC0,0xEE,0x80,0xEE,0x80,0x7F,0xC0,0x63,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x6A47, {0x61,0x80,0x6F,0x00,0xFF,0x80,0xFF,0xC0,0x6E,0x40,0x71,0xC0,0x76,0xC0,0xFB,0x80,0xEF,0xC0,0x6F,0xE0,0x7B,0xA0,0x67,0xE0,0x00,0x00,}}, +{ 0x6A48, {0x61,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6E,0xC0,0x74,0x80,0x77,0xE0,0xF8,0x00,0xFF,0xE0,0x63,0x80,0x65,0xA0,0x78,0xE0,0x00,0x00,}}, +{ 0x6A4B, {0x20,0xC0,0x2F,0x00,0xFF,0xE0,0x3F,0x80,0x67,0xC0,0x7B,0xA0,0x73,0x80,0xAF,0xE0,0xA8,0x20,0x2B,0xA0,0x2B,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x6A58, {0x2F,0xC0,0x27,0x80,0xFF,0xE0,0x25,0x20,0x69,0xC0,0x71,0x00,0x7F,0xE0,0xAB,0x20,0xAD,0xE0,0x2B,0xA0,0x2B,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x6A59, {0x67,0x80,0x63,0xC0,0xFF,0xC0,0xF4,0xC0,0x6F,0xC0,0x70,0x20,0x77,0x80,0xE4,0x80,0xE7,0x80,0x66,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6A5F, {0x25,0x40,0x27,0x40,0xFB,0xA0,0x3F,0x60,0x6B,0xC0,0x7F,0xE0,0x71,0x80,0xAF,0xE0,0xA9,0x40,0x3E,0xC0,0x30,0xA0,0x23,0x60,0x00,0x00,}}, +{ 0x6A61, {0x23,0x80,0x25,0x00,0xFF,0xC0,0x2A,0x40,0x6F,0xC0,0x62,0x00,0x77,0x40,0xBB,0x80,0xAD,0xC0,0x26,0xA0,0x39,0x80,0x23,0x00,0x00,0x00,}}, +{ 0x6A62, {0x61,0x80,0x7F,0xE0,0xF5,0xC0,0xFF,0xC0,0x7F,0xE0,0x74,0x00,0x75,0xC0,0xF5,0x40,0xFD,0xC0,0x79,0xC0,0x71,0x40,0x71,0xC0,0x00,0x00,}}, +{ 0x6A66, {0x61,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6B,0x40,0x7F,0xC0,0x79,0x40,0xEF,0xC0,0xE7,0xC0,0x67,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6A72, {0x61,0x00,0x6F,0xC0,0xF7,0x80,0xF7,0x80,0x67,0x80,0x74,0x80,0x77,0x80,0xE3,0x80,0xFF,0xE0,0x67,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x6A78, {0x30,0x00,0x33,0xC0,0x7B,0xC0,0x7B,0xC0,0x33,0xC0,0x3A,0x40,0x38,0x00,0x77,0xE0,0x77,0xE0,0x37,0xE0,0x37,0xE0,0x35,0xE0,0x00,0x00,}}, +{ 0x6A7F, {0x20,0x00,0x2F,0xE0,0xF0,0x00,0x27,0x80,0x67,0x80,0x77,0x80,0x7F,0xC0,0xA0,0x00,0xA7,0x80,0x27,0x80,0x27,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0x6A80, {0x21,0x00,0x3F,0xE0,0xFF,0xC0,0x2B,0xC0,0x6B,0xC0,0x6F,0xC0,0x77,0x80,0xB4,0x80,0xA7,0x80,0x27,0x80,0x20,0x00,0x3F,0xE0,0x00,0x00,}}, +{ 0x6A84, {0x65,0x80,0x6F,0x80,0xFF,0xE0,0xFF,0xE0,0x6F,0xC0,0x75,0xC0,0x7F,0xC0,0xE4,0x80,0xE6,0x80,0x6A,0xC0,0x73,0x40,0x66,0x20,0x00,0x00,}}, +{ 0x6A8D, {0x61,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x67,0x80,0x74,0x80,0x77,0x80,0xE4,0x80,0xE7,0xC0,0x6B,0x20,0x6A,0xA0,0x71,0x80,0x00,0x00,}}, +{ 0x6A8E, {0x21,0x00,0x23,0x80,0xFF,0xE0,0x2C,0xC0,0x2B,0x40,0x7C,0xC0,0x7F,0xC0,0xA1,0x00,0xAF,0xE0,0x2A,0xA0,0x2F,0xA0,0x28,0xE0,0x00,0x00,}}, +{ 0x6A90, {0x61,0x00,0x63,0x80,0xFF,0xE0,0xFF,0xE0,0x6F,0xC0,0x79,0x00,0x7F,0xE0,0xEB,0x80,0xEF,0xC0,0x77,0xC0,0x77,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x6A97, {0x01,0x80,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0xE9,0x80,0x3C,0x00,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6A9C, {0x61,0x00,0x62,0x80,0xFF,0xC0,0xFF,0xE0,0x6F,0xC0,0x6B,0xC0,0x7F,0xC0,0xF7,0x80,0xE7,0x80,0x67,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x6AA0, {0x71,0x00,0xFD,0x00,0x7B,0xE0,0x7E,0x80,0xE9,0x80,0x69,0x80,0x6E,0x60,0x34,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6AA2, {0x61,0x00,0x63,0x00,0xF6,0x80,0xFF,0xC0,0x70,0x20,0x6E,0xC0,0x7B,0xC0,0xFE,0xC0,0xE4,0x80,0x66,0xC0,0x6B,0xA0,0x71,0x20,0x00,0x00,}}, +{ 0x6AA3, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xF5,0x80,0x6B,0xC0,0x7F,0xE0,0x70,0x00,0xEF,0xC0,0xEB,0xC0,0x6B,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x6AAA, {0x61,0x00,0x72,0x20,0xFF,0xE0,0xFF,0xC0,0x6C,0xE0,0x77,0xA0,0x71,0x00,0xFF,0xE0,0xE7,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x6AAC, {0x64,0x80,0x7F,0xE0,0xFF,0xE0,0xFF,0xE0,0x77,0xC0,0x7F,0xE0,0x73,0x40,0xFF,0xC0,0xE7,0x80,0x67,0xC0,0x7D,0xA0,0x63,0x00,0x00,0x00,}}, +{ 0x6AAE, {0x61,0x00,0x6F,0xC0,0xF7,0x80,0xFF,0xE0,0x67,0xC0,0x61,0x00,0x77,0x80,0xFF,0xE0,0xE7,0xE0,0x6F,0xE0,0x6F,0xC0,0x60,0xC0,0x00,0x00,}}, +{ 0x6AB3, {0x61,0x00,0x6F,0xE0,0xFF,0xC0,0xF7,0xC0,0x69,0x80,0x67,0xC0,0x7C,0x40,0xF7,0xC0,0xE7,0xC0,0x67,0xC0,0x66,0x40,0x78,0x20,0x00,0x00,}}, +{ 0x6AB8, {0x61,0x00,0x6F,0xE0,0xFF,0x40,0xF6,0xE0,0x6B,0x80,0x6F,0xC0,0x7B,0xC0,0xFF,0xE0,0xEF,0xE0,0x6F,0xE0,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x6ABB, {0x61,0x80,0x7F,0x80,0xFD,0xE0,0xFF,0xE0,0x7E,0x00,0x74,0xC0,0x7F,0x00,0xF0,0x00,0xEF,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6AC1, {0x61,0x00,0x6F,0xE0,0xFA,0xC0,0xFB,0xC0,0x6B,0xA0,0x73,0xA0,0x77,0x80,0xFB,0x00,0xEF,0xC0,0x6F,0xC0,0x63,0xC0,0x7F,0xA0,0x00,0x00,}}, +{ 0x6AC2, {0x60,0x00,0x6F,0xE0,0xFF,0xE0,0xFF,0xE0,0x6F,0xE0,0x72,0x80,0x77,0xE0,0xED,0x80,0xF7,0xC0,0x67,0xC0,0x65,0x80,0x67,0xE0,0x00,0x00,}}, +{ 0x6AC3, {0x60,0x00,0x6F,0xE0,0xFB,0xC0,0xFB,0xC0,0x6F,0xE0,0x7B,0xC0,0x7B,0xC0,0xEB,0xC0,0xEB,0xC0,0x6E,0x40,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x6AD1, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x78,0x40,0x70,0x00,0xFF,0xE0,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0x71,0x20,0x00,0x00,}}, +{ 0x6AD3, {0x22,0x00,0x27,0x80,0xF9,0x00,0x3F,0xC0,0x6F,0xC0,0x79,0x40,0x7F,0xC0,0xAB,0xC0,0xB7,0xA0,0x27,0x80,0x24,0x80,0x27,0x80,0x00,0x00,}}, +{ 0x6ADA, {0x30,0x00,0x37,0xE0,0x7F,0xE0,0x7F,0xE0,0x37,0xE0,0x3D,0xE0,0x3D,0xE0,0x75,0xA0,0x75,0xA0,0x35,0xE0,0x35,0xE0,0x34,0x60,0x00,0x00,}}, +{ 0x6ADB, {0x29,0x00,0x2F,0xE0,0xFB,0x40,0x32,0x40,0x6E,0xE0,0x7A,0xA0,0x7E,0xA0,0xAA,0xA0,0xAC,0xA0,0x2E,0xE0,0x2A,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6ADE, {0x64,0x80,0x65,0xE0,0xFB,0xC0,0xFF,0xC0,0x67,0xE0,0x7B,0x80,0x7F,0xA0,0xE5,0xE0,0xF7,0xC0,0x77,0xE0,0x74,0x80,0x65,0x80,0x00,0x00,}}, +{ 0x6ADF, {0x69,0x40,0x6B,0x40,0xFF,0xE0,0xFF,0xE0,0x77,0xE0,0x7F,0xE0,0x71,0x00,0xFF,0xE0,0xE7,0x80,0x69,0x40,0x71,0x20,0x61,0x00,0x00,0x00,}}, +{ 0x6AE8, {0x61,0x80,0x6F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0xEB,0xC0,0xF7,0xC0,0x77,0xC0,0x65,0xC0,0x7F,0xE0,0x00,0x00,}}, +{ 0x6AEA, {0x60,0x00,0x7F,0xE0,0xF7,0xC0,0xFF,0xE0,0x77,0xC0,0x7B,0xC0,0x72,0xA0,0xF1,0x00,0xF5,0xC0,0x75,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x6AFA, {0x60,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x7D,0xC0,0x6D,0xC0,0x71,0x00,0xFF,0xE0,0xF7,0xA0,0x77,0xA0,0x7F,0xE0,0x77,0xA0,0x00,0x00,}}, +{ 0x6AFB, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6B,0xC0,0x6F,0xC0,0x7B,0x40,0xF3,0x20,0xFF,0xE0,0x67,0x80,0x63,0x80,0x6E,0x40,0x00,0x00,}}, +{ 0x6B04, {0x20,0x00,0x3E,0xE0,0xF2,0xA0,0x3E,0xE0,0x71,0x20,0x7F,0xE0,0x77,0xA0,0xB7,0xA0,0xB7,0xA0,0x33,0xA0,0x3D,0x60,0x31,0x60,0x00,0x00,}}, +{ 0x6B05, {0x66,0xC0,0x6B,0xC0,0xFF,0xC0,0xFF,0xC0,0x6B,0xC0,0x7F,0xE0,0x65,0x80,0xEF,0x40,0xF7,0xA0,0x6F,0xC0,0x63,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x6B0A, {0x64,0x80,0x7F,0xE0,0xFC,0xC0,0xFF,0xC0,0x6F,0xC0,0x77,0xE0,0x75,0x80,0xEF,0xC0,0xEF,0xC0,0x67,0xC0,0x67,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x6B12, {0x6E,0x80,0x7F,0xC0,0xE7,0xC0,0x6E,0xC0,0xFF,0xE0,0x6B,0xC0,0xFF,0xA0,0x64,0xC0,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6B16, {0x61,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xE0,0x77,0xE0,0x7F,0xE0,0x7F,0x80,0xF8,0x80,0xEF,0x80,0x6F,0xA0,0x67,0xA0,0x78,0xE0,0x00,0x00,}}, +{ 0x6B1D, {0x2A,0x80,0xF7,0xE0,0x7F,0xC0,0xFF,0xA0,0x6A,0x80,0x7F,0x80,0x78,0x80,0x4F,0xE0,0x7A,0x80,0x59,0x80,0x78,0x80,0xC0,0x80,0x00,0x00,}}, +{ 0x6B1F, {0x72,0x00,0x7F,0xC0,0xFF,0xC0,0xFF,0xC0,0x7F,0xC0,0x75,0xC0,0x7F,0xC0,0xF5,0xC0,0xFF,0xC0,0x7F,0xA0,0x7F,0xA0,0x72,0x60,0x00,0x00,}}, +{ 0x6B20, {0x20,0x00,0x20,0x00,0x3F,0xE0,0x20,0x40,0x44,0x80,0x44,0x00,0x84,0x00,0x06,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x6B21, {0x04,0x00,0x04,0x00,0x44,0x00,0x27,0xE0,0x09,0x40,0x09,0x80,0x21,0x00,0x43,0x00,0x42,0x80,0x84,0x80,0x98,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x6B23, {0x05,0x00,0x09,0x00,0x71,0x00,0x43,0xE0,0x7E,0x40,0x55,0x00,0x51,0x00,0x51,0x00,0x51,0x00,0x52,0x80,0x94,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x6B27, {0x01,0x00,0x7D,0x00,0x4B,0xE0,0x4A,0xA0,0x6C,0xC0,0x50,0x80,0x58,0x80,0x69,0x00,0x65,0x00,0x42,0x80,0x7C,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x6B32, {0x51,0x00,0x49,0x00,0x89,0x00,0x23,0xE0,0x32,0xC0,0x4C,0x80,0x48,0x80,0xF8,0x80,0x49,0x80,0x7A,0x40,0x4C,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x6B37, {0x09,0x00,0x71,0x00,0xF9,0x00,0xA3,0xE0,0xFF,0xA0,0x65,0xC0,0x61,0x80,0xF9,0x80,0x69,0x80,0x7A,0x80,0x74,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x6B38, {0x21,0x00,0x31,0x00,0x39,0x00,0xFF,0xE0,0xC3,0xA0,0x7D,0xC0,0x61,0x80,0xB1,0x80,0xFD,0x80,0x32,0x80,0x4C,0x40,0x88,0x20,0x00,0x00,}}, +{ 0x6B39, {0x21,0x00,0x31,0x00,0xFD,0x00,0x3B,0xE0,0x4B,0xA0,0xFD,0xC0,0x09,0x80,0x69,0x80,0x69,0x80,0x69,0x80,0x0A,0x40,0x1C,0x20,0x00,0x00,}}, +{ 0x6B3A, {0x49,0x00,0x49,0x00,0xFD,0x00,0x49,0xE0,0x7A,0x40,0x4C,0x80,0x78,0x80,0x48,0x80,0xFC,0x80,0x31,0x80,0x4A,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x6B3D, {0x21,0x00,0x31,0x00,0x79,0x00,0x4B,0xE0,0xF2,0x40,0x25,0x00,0xF9,0x00,0x21,0x00,0x79,0x00,0x72,0x80,0x3C,0x40,0xE8,0x20,0x00,0x00,}}, +{ 0x6B3E, {0x21,0x00,0x21,0x00,0xFD,0x00,0x7B,0xE0,0x02,0x40,0x7D,0x00,0x01,0x00,0xFD,0x00,0x31,0x00,0x6A,0x80,0xA4,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x6B43, {0x0D,0x00,0x71,0x00,0xF9,0x00,0xFF,0xE0,0x23,0xA0,0xED,0xC0,0xA5,0x80,0xA5,0x80,0xAD,0x80,0xA5,0x80,0xFE,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x6B47, {0x01,0x00,0x79,0x00,0x79,0x00,0x7B,0xE0,0x7B,0xA0,0x65,0xC0,0x7D,0x80,0xF5,0x80,0xFD,0x80,0x6D,0x80,0x76,0x40,0x5C,0x20,0x00,0x00,}}, +{ 0x6B49, {0x69,0x00,0xF3,0x00,0xFF,0x00,0x7D,0xE0,0x77,0xA0,0xFF,0xC0,0x75,0x80,0x7D,0x80,0x79,0x80,0x75,0x80,0xF2,0x40,0x74,0x20,0x00,0x00,}}, +{ 0x6B4C, {0x01,0x00,0xFD,0x00,0x69,0x00,0x6B,0xE0,0x6A,0xC0,0x0C,0x80,0xF9,0x00,0x09,0x00,0x69,0x80,0x6A,0x80,0x6C,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x6B4E, {0x71,0x00,0x71,0x00,0xFF,0xE0,0x7A,0x20,0x7D,0x40,0x79,0x00,0x21,0x00,0x79,0x00,0xF9,0x80,0xFE,0x80,0x4C,0x40,0x88,0x20,0x00,0x00,}}, +{ 0x6B50, {0x01,0x00,0xFD,0x00,0xB9,0x00,0xF9,0xE0,0xFB,0xA0,0x83,0xC0,0xFD,0x80,0xF5,0x80,0xFD,0x80,0xF9,0x80,0xFE,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x6B53, {0x41,0x00,0x41,0x00,0x7D,0x00,0xA1,0xE0,0xFA,0x40,0x7C,0x80,0x70,0x80,0xFC,0x80,0x78,0x80,0x79,0x80,0x7A,0x40,0x44,0x20,0x00,0x00,}}, +{ 0x6B54, {0x11,0x00,0x1D,0x00,0x7F,0x00,0x7F,0xE0,0x77,0xA0,0x5F,0xC0,0x69,0x80,0x6D,0x80,0x6D,0x80,0x69,0x80,0xBE,0x40,0x64,0x20,0x00,0x00,}}, +{ 0x6B59, {0x21,0x00,0x31,0x00,0x79,0x00,0xFF,0xE0,0x6B,0xA0,0x7D,0xC0,0xFD,0x80,0x7D,0x80,0xFD,0x80,0xFD,0x80,0xB6,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x6B5B, {0x11,0x00,0x11,0x00,0x29,0x00,0x7F,0xE0,0x83,0xA0,0x7D,0xC0,0x75,0x80,0x7D,0x80,0x69,0x80,0x7D,0x80,0x52,0x40,0xA4,0x20,0x00,0x00,}}, +{ 0x6B5F, {0x61,0x80,0x77,0x80,0x7B,0x80,0x7F,0xE0,0x4B,0xA0,0x6B,0xC0,0x6F,0x80,0x6B,0x80,0xFF,0x80,0xFF,0x80,0x26,0x40,0xC4,0x20,0x00,0x00,}}, +{ 0x6B61, {0x71,0x00,0xFD,0x00,0xF9,0x00,0xFF,0xE0,0xFF,0xA0,0x7D,0xC0,0x51,0x80,0xFD,0x80,0x79,0x80,0x79,0x80,0x7E,0x40,0x44,0x20,0x00,0x00,}}, +{ 0x6B62, {0x04,0x00,0x04,0x00,0x04,0x00,0x24,0x00,0x27,0xC0,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6B63, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x27,0x80,0x24,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6B64, {0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x40,0x5F,0x80,0x51,0x00,0x51,0x00,0x51,0x00,0x51,0x00,0x59,0x20,0x61,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x6B66, {0x01,0x80,0x3D,0x40,0x01,0x40,0xFF,0xE0,0x11,0x00,0x11,0x00,0x5F,0x00,0x51,0x00,0x50,0x80,0x5E,0xA0,0xF0,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x6B69, {0x04,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0,0x04,0x00,0x24,0x80,0x24,0xC0,0x45,0x40,0x06,0x00,0x18,0x00,0xE0,0x00,0x00,0x00,}}, +{ 0x6B6A, {0x00,0x00,0xFF,0xE0,0x06,0x00,0x1F,0x80,0xE4,0x40,0x04,0x00,0x7F,0xC0,0x04,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6B6F, {0x04,0x00,0x24,0x00,0x27,0xC0,0xFF,0xE0,0x7F,0xC0,0x55,0x40,0x7F,0xC0,0x4E,0x40,0x55,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x6B73, {0x04,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0,0x7F,0xE0,0x41,0x00,0x7F,0x40,0x49,0xC0,0x5C,0x80,0x7A,0xA0,0x6B,0x60,0x98,0x20,0x00,0x00,}}, +{ 0x6B74, {0x00,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x5D,0x80,0x6A,0xC0,0x48,0xA0,0x42,0x00,0x53,0x80,0x92,0x00,0xBF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x6B78, {0x20,0x00,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x48,0x00,0x7F,0xE0,0x35,0xC0,0x7B,0xC0,0x63,0xC0,0x7B,0xC0,0xE1,0x80,0x00,0x00,}}, +{ 0x6B79, {0x00,0x00,0xFF,0xE0,0x08,0x00,0x0F,0x80,0x10,0x80,0x10,0x80,0x29,0x80,0x45,0x00,0x06,0x00,0x04,0x00,0x18,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x6B7B, {0x00,0x00,0xFF,0xE0,0x22,0x00,0x3A,0x40,0x2A,0x40,0x4A,0x80,0x6B,0x00,0x92,0x00,0x12,0x00,0x22,0x20,0x42,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x6B7F, {0x01,0x00,0xF9,0x00,0x63,0xC0,0x7A,0x40,0x6C,0x40,0x68,0x80,0x6F,0xC0,0xB2,0x40,0x12,0x80,0x21,0x80,0x43,0x80,0x9C,0x60,0x00,0x00,}}, +{ 0x6B80, {0x00,0x40,0xF9,0x80,0x67,0x00,0x79,0x00,0x49,0x00,0x4F,0xE0,0xA9,0x00,0x33,0x00,0x13,0x80,0x24,0x80,0x48,0x40,0x90,0x20,0x00,0x00,}}, +{ 0x6B83, {0x01,0x00,0xF9,0x00,0x67,0xC0,0x77,0xC0,0x55,0x40,0x55,0x40,0xFF,0xE0,0x23,0x00,0x23,0x80,0x64,0x80,0x48,0x40,0x90,0x20,0x00,0x00,}}, +{ 0x6B84, {0x01,0x00,0xFF,0x00,0x63,0x80,0x7C,0x80,0x48,0xC0,0x49,0x20,0xAE,0x00,0x30,0x80,0x17,0x00,0x24,0x40,0x41,0x80,0x8E,0x00,0x00,0x00,}}, +{ 0x6B86, {0x01,0x00,0xFD,0x00,0x21,0x00,0x3A,0x40,0x2A,0x60,0x4F,0xA0,0x68,0x00,0x97,0xC0,0x14,0x40,0x24,0x40,0x47,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x6B89, {0x01,0x00,0x7D,0x00,0x23,0xE0,0x3E,0x20,0x2B,0xA0,0x2A,0xA0,0x5B,0xA0,0x1A,0xA0,0x13,0xA0,0x12,0xA0,0x20,0x20,0x40,0x40,0x00,0x00,}}, +{ 0x6B8A, {0x01,0x00,0xFD,0x00,0x47,0xC0,0x79,0x00,0x51,0x00,0x5F,0xE0,0xB1,0x00,0x23,0x80,0x25,0x40,0x39,0x20,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x6B8B, {0x01,0x80,0xF9,0x40,0x67,0xC0,0x79,0x00,0x57,0xC0,0x51,0x00,0xFF,0xE0,0x21,0x40,0x20,0xC0,0x40,0xA0,0x43,0x60,0x8C,0x20,0x00,0x00,}}, +{ 0x6B8D, {0x00,0x40,0xF9,0x80,0x6F,0x40,0x75,0x20,0x58,0x20,0x5F,0xC0,0xF0,0x80,0x33,0x80,0x3F,0xE0,0x61,0x00,0x41,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x6B95, {0x01,0x00,0xFB,0x00,0x6F,0xC0,0x76,0x80,0x52,0x80,0x5F,0xE0,0xF0,0x00,0x27,0xC0,0x24,0x40,0x64,0x40,0x47,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x6B96, {0x00,0x80,0xFB,0xE0,0x20,0x80,0x75,0xC0,0x55,0x40,0x55,0xC0,0xB5,0x40,0x35,0xC0,0x25,0x40,0x25,0xC0,0x47,0xE0,0x84,0x00,0x00,0x00,}}, +{ 0x6B98, {0x01,0x80,0xF9,0x40,0x67,0xE0,0x7F,0xC0,0x51,0xA0,0x56,0x60,0xB1,0xA0,0x23,0xE0,0x2F,0x40,0x61,0xA0,0x43,0xE0,0x8C,0x20,0x00,0x00,}}, +{ 0x6B9E, {0x00,0x00,0xF7,0xC0,0x67,0xC0,0x77,0xC0,0x57,0xC0,0x54,0x40,0xF7,0xC0,0x24,0x40,0x27,0xC0,0x67,0xC0,0x46,0xC0,0x98,0x20,0x00,0x00,}}, +{ 0x6BA4, {0x04,0x00,0xFF,0xE0,0x67,0x80,0x7F,0x80,0x54,0x80,0x57,0x80,0xFF,0xE0,0x24,0x00,0x27,0xC0,0x7B,0xC0,0x47,0x40,0x8B,0x80,0x00,0x00,}}, +{ 0x6BAA, {0x01,0x00,0xFF,0xC0,0x67,0x80,0x77,0x80,0x5F,0xE0,0x58,0x40,0xFF,0xC0,0x27,0x80,0x27,0x80,0x67,0x80,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6BAB, {0x00,0x00,0xFF,0xC0,0x6F,0xC0,0x7C,0xC0,0x5F,0xC0,0x59,0x40,0xFF,0xC0,0x2B,0x40,0x2F,0xC0,0x7F,0xE0,0x43,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x6BAF, {0x01,0x00,0xFF,0xE0,0x6F,0xC0,0x77,0xC0,0x59,0x80,0x57,0xC0,0xFC,0x40,0x27,0xC0,0x27,0xC0,0x67,0xC0,0x46,0xC0,0x98,0x20,0x00,0x00,}}, +{ 0x6BB1, {0x05,0x80,0xF5,0xC0,0x7F,0xC0,0x7F,0xE0,0x7B,0x80,0x7B,0xC0,0xEB,0xC0,0xFB,0xC0,0x7A,0x80,0x6F,0xE0,0x7B,0x60,0x82,0x20,0x00,0x00,}}, +{ 0x6BB2, {0x0B,0x80,0xFB,0xC0,0x6F,0xC0,0x71,0x80,0x7F,0xE0,0x6B,0x80,0xFB,0xC0,0xFB,0xC0,0x7B,0x80,0x7A,0xE0,0x4F,0xE0,0xB9,0x20,0x00,0x00,}}, +{ 0x6BB3, {0x00,0x00,0x3F,0x00,0x21,0x00,0x21,0x20,0x21,0xE0,0xC0,0x00,0x7F,0x80,0x31,0x00,0x1A,0x00,0x0E,0x00,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x6BB4, {0x00,0x00,0x7D,0x80,0x49,0x80,0x49,0xA0,0x6A,0xA0,0x54,0x60,0x53,0xC0,0x69,0x40,0x69,0x80,0x41,0x80,0x7B,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x6BB5, {0x18,0x00,0x63,0x80,0x42,0x80,0x72,0xA0,0x44,0xA0,0x48,0x60,0x77,0xC0,0x44,0x40,0x52,0x80,0x61,0x00,0xC2,0x80,0x4C,0x60,0x00,0x00,}}, +{ 0x6BB7, {0x18,0x00,0x63,0x80,0x7A,0x80,0x7A,0xA0,0x7A,0x60,0x4C,0x00,0x7F,0xC0,0x42,0x40,0x79,0x80,0x49,0x80,0x4B,0x80,0xBC,0x60,0x00,0x00,}}, +{ 0x6BBA, {0x08,0x00,0x0B,0x80,0x72,0x80,0x3A,0xA0,0xE4,0x60,0x28,0x00,0xFF,0xC0,0x32,0x40,0x69,0x40,0xA1,0x80,0x22,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x6BBB, {0x20,0x00,0x23,0x80,0xFA,0x80,0x72,0xA0,0x04,0x60,0x7C,0x00,0x4B,0xC0,0xF2,0x40,0x51,0x80,0x59,0x80,0x52,0x80,0x8C,0x60,0x00,0x00,}}, +{ 0x6BBC, {0x20,0x00,0xFD,0x80,0x79,0x80,0x79,0xA0,0x7D,0xA0,0x4A,0x60,0xB7,0xC0,0x02,0x40,0x71,0x80,0x79,0x80,0x53,0x80,0xAC,0x60,0x00,0x00,}}, +{ 0x6BBF, {0x00,0x00,0x7D,0x80,0x45,0x80,0x7D,0xA0,0x6A,0xA0,0x6A,0x60,0x7F,0xC0,0x69,0x40,0x7D,0x80,0xB1,0x80,0xAA,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x6BC0, {0x20,0x00,0x5B,0x80,0x4A,0x80,0x4A,0xA0,0x4C,0xA0,0x78,0x60,0x6F,0xC0,0x32,0x40,0x7A,0x80,0x21,0x80,0x3B,0x80,0xEC,0x60,0x00,0x00,}}, +{ 0x6BC5, {0x10,0x00,0x11,0x80,0x7D,0x80,0x29,0xA0,0xFE,0xA0,0x64,0x60,0xB7,0xC0,0x59,0x40,0xB5,0x80,0xD1,0x80,0x12,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x6BC6, {0x00,0x00,0xFD,0x80,0xB9,0x80,0xF9,0xA0,0xFA,0xA0,0x84,0x60,0xFF,0xC0,0xF5,0x40,0xFD,0x80,0xF9,0x80,0xFD,0x40,0x86,0x20,0x00,0x00,}}, +{ 0x6BCB, {0x00,0x00,0x7F,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0xFF,0xE0,0x64,0x80,0x64,0x80,0x64,0x80,0x7F,0xE0,0x41,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x6BCD, {0x00,0x00,0x3F,0x80,0x24,0x80,0x22,0x80,0xFF,0xE0,0x28,0x80,0x24,0x80,0x24,0x80,0x40,0x80,0x7F,0xE0,0x00,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x6BCE, {0x20,0x00,0x20,0x00,0x7F,0xE0,0x5F,0x80,0x94,0x80,0x14,0x80,0xFF,0xE0,0x24,0x80,0x24,0x80,0x7F,0xC0,0x00,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x6BD2, {0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x3F,0x80,0xFF,0xE0,0x24,0x80,0x3F,0xC0,0x61,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x6BD3, {0x61,0x80,0x61,0x80,0x7F,0xE0,0xF9,0xC0,0xEF,0xE0,0x68,0x20,0xFF,0xC0,0x6B,0xC0,0x7F,0xC0,0x7F,0xE0,0x15,0xE0,0x38,0x20,0x00,0x00,}}, +{ 0x6BD4, {0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x40,0x3E,0x40,0x22,0x80,0x23,0x00,0x22,0x00,0x26,0x00,0x2A,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x6BD8, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x22,0x00,0x3E,0xC0,0x23,0x00,0x22,0x20,0x3A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x6BDB, {0x01,0x80,0x06,0x00,0x38,0x00,0x08,0x00,0x7F,0xC0,0x08,0x00,0x08,0x00,0xFF,0xE0,0x08,0x00,0x08,0x20,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x6BDF, {0x04,0x00,0x64,0xC0,0x45,0xE0,0x87,0x20,0x38,0x00,0xE3,0x00,0x3C,0x00,0x0F,0x80,0x7F,0xE0,0xFF,0xE0,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x6BEB, {0x04,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x43,0x40,0xBC,0x00,0x3F,0x80,0x3F,0xC0,0x78,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x6BEC, {0x11,0x80,0x23,0x40,0xEF,0xC0,0x79,0x40,0xE5,0x40,0x65,0x80,0x73,0x80,0xE5,0x40,0x79,0x20,0x63,0x20,0x60,0x20,0x3F,0xE0,0x00,0x00,}}, +{ 0x6BEF, {0x11,0x40,0x25,0x40,0xE5,0x80,0x7B,0x80,0xE7,0x80,0x69,0x40,0x75,0x40,0xE5,0x80,0x6B,0x80,0x64,0xA0,0x68,0x20,0x3F,0xE0,0x00,0x00,}}, +{ 0x6BF3, {0x03,0x00,0x3C,0x00,0x3F,0x00,0x3F,0x80,0x78,0x40,0x07,0xC0,0x18,0xC0,0x73,0x80,0x7B,0xC0,0x7F,0xE0,0xF7,0xA0,0x3D,0xE0,0x00,0x00,}}, +{ 0x6C08, {0x10,0x40,0xFF,0x80,0x7F,0x80,0x7B,0xC0,0x7B,0x80,0x7F,0x80,0x7D,0x80,0x65,0xE0,0x7F,0x80,0x7D,0xA0,0x7F,0xA0,0xE0,0xE0,0x00,0x00,}}, +{ 0x6C0F, {0x01,0x00,0x06,0x00,0x3C,0x00,0x24,0x00,0x25,0xC0,0x3E,0x00,0x22,0x00,0x21,0x00,0x21,0x00,0x2C,0xA0,0x30,0x60,0xC0,0x20,0x00,0x00,}}, +{ 0x6C11, {0x00,0x00,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x22,0x40,0x22,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x28,0xA0,0x30,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x6C13, {0x60,0x00,0x6F,0xC0,0x68,0x40,0xFF,0xC0,0x8B,0x40,0x89,0x00,0x8F,0xE0,0x89,0x00,0xF9,0x80,0x7A,0xA0,0x0C,0x60,0x30,0x20,0x00,0x00,}}, +{ 0x6C14, {0x20,0x00,0x30,0x00,0x7F,0xC0,0x7F,0x00,0x80,0x00,0x7F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x60,0x00,0x60,0x00,0x20,0x00,0x00,}}, +{ 0x6C17, {0x20,0x00,0x20,0x00,0x3F,0xC0,0x40,0x00,0x9F,0x00,0x7F,0x80,0x02,0x80,0x04,0x80,0x3C,0x80,0x0E,0xA0,0x32,0x60,0xC0,0x20,0x00,0x00,}}, +{ 0x6C1B, {0x20,0x00,0x30,0x00,0x7F,0xC0,0x7F,0x80,0x80,0x00,0x7F,0x80,0x3C,0x80,0x62,0x80,0xFF,0x80,0x12,0x60,0x22,0x60,0xCC,0x20,0x00,0x00,}}, +{ 0x6C23, {0x20,0x00,0x30,0x00,0x7F,0xC0,0x7F,0x00,0x80,0x00,0x7F,0x80,0x29,0x80,0x3A,0x80,0x7E,0x80,0x1E,0x60,0x6B,0x60,0x08,0x20,0x00,0x00,}}, +{ 0x6C24, {0x20,0x00,0x30,0x00,0x7F,0xC0,0x7F,0x00,0x80,0x00,0x7F,0x80,0x7F,0x80,0x6B,0x80,0x7F,0x80,0x77,0x60,0x7F,0x60,0x61,0x20,0x00,0x00,}}, +{ 0x6C34, {0x04,0x00,0x04,0x00,0x04,0x40,0xFC,0x40,0x16,0x80,0x15,0x00,0x25,0x00,0x24,0x80,0x44,0x40,0x84,0x20,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6C37, {0x04,0x00,0x24,0x00,0x24,0x40,0x06,0x40,0xF6,0x80,0x15,0x00,0x25,0x00,0x24,0x80,0x44,0x40,0x84,0x20,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6C38, {0x0C,0x00,0x02,0x00,0x1C,0x00,0x04,0x40,0x06,0x40,0xFE,0x80,0x15,0x00,0x15,0x00,0x24,0x80,0xC4,0x60,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x6C3E, {0x20,0x00,0x27,0xC0,0x04,0x40,0x84,0x40,0x44,0x40,0x04,0x40,0x24,0x80,0x24,0x00,0x24,0x00,0x44,0x20,0x44,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x6C40, {0x20,0x00,0x2F,0xE0,0x01,0x00,0x81,0x00,0x41,0x00,0x01,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x41,0x00,0x43,0x00,0x00,0x00,}}, +{ 0x6C41, {0x21,0x00,0x21,0x00,0x01,0x00,0x81,0x00,0x5F,0xE0,0x01,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6C42, {0x04,0x80,0x04,0x80,0xFF,0xE0,0x04,0x00,0x06,0x40,0x46,0x40,0x25,0x80,0x0D,0x00,0x34,0x80,0xC4,0x40,0x04,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x6C4E, {0x20,0x00,0x27,0x80,0x04,0x80,0x84,0x80,0x46,0x80,0x05,0x80,0x25,0x80,0x24,0x80,0x24,0x80,0x48,0xA0,0x48,0xA0,0x50,0x60,0x00,0x00,}}, +{ 0x6C50, {0x11,0x00,0x11,0x00,0x01,0xE0,0x43,0x20,0x22,0x20,0x05,0x40,0x18,0xC0,0x10,0x40,0x10,0x80,0x21,0x00,0x26,0x00,0x28,0x00,0x00,0x00,}}, +{ 0x6C55, {0x10,0x80,0x10,0x80,0x00,0x80,0x44,0xA0,0x24,0xA0,0x04,0xA0,0x14,0xA0,0x14,0xA0,0x34,0xA0,0x27,0xE0,0x24,0x20,0x24,0x20,0x00,0x00,}}, +{ 0x6C57, {0x20,0x00,0x2F,0xC0,0x01,0x00,0x81,0x00,0x41,0x00,0x1F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6C5A, {0x20,0x00,0x2F,0xC0,0x01,0x00,0x9F,0xE0,0x42,0x00,0x02,0x00,0x27,0xC0,0x24,0x40,0x20,0x40,0x40,0x40,0x40,0x40,0x41,0x80,0x00,0x00,}}, +{ 0x6C5D, {0x22,0x00,0x22,0x00,0x02,0x00,0x9F,0xE0,0x44,0x80,0x04,0x80,0x24,0x80,0x2E,0x80,0x29,0x00,0x41,0x80,0x46,0x40,0x58,0x40,0x00,0x00,}}, +{ 0x6C5E, {0x00,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x06,0x40,0xF6,0x40,0x15,0x80,0x25,0x80,0x24,0x80,0xC4,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x6C5F, {0x20,0x00,0x2F,0xC0,0x01,0x00,0x81,0x00,0x41,0x00,0x01,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6C60, {0x21,0x00,0x29,0x00,0x09,0x00,0x89,0xC0,0x4F,0x40,0x39,0x40,0x09,0x40,0x29,0x40,0x29,0x80,0x48,0x20,0x48,0x20,0x47,0xE0,0x00,0x00,}}, +{ 0x6C62, {0x21,0x00,0x21,0x00,0x01,0x00,0x81,0x00,0x4F,0xC0,0x01,0x00,0x21,0x00,0x21,0x00,0x61,0x00,0x41,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6C68, {0x10,0x00,0x17,0xE0,0x04,0x20,0x44,0x20,0x24,0x20,0x07,0xE0,0x14,0x20,0x14,0x20,0x34,0x20,0x24,0x20,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x6C6A, {0x20,0x00,0x3F,0xE0,0x01,0x00,0x81,0x00,0x41,0x00,0x0F,0xC0,0x21,0x00,0x21,0x00,0x61,0x00,0x41,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6C70, {0x21,0x00,0x21,0x00,0x01,0x00,0x9F,0xE0,0x41,0x00,0x01,0x00,0x23,0x00,0x22,0x80,0x44,0x80,0x4E,0x40,0x91,0x40,0xA0,0x20,0x00,0x00,}}, +{ 0x6C72, {0x40,0x00,0x4F,0x80,0x28,0x80,0x89,0x00,0x4D,0xC0,0x0C,0x40,0x2A,0x80,0x2A,0x80,0x49,0x00,0x51,0x80,0xA2,0x40,0xAC,0x20,0x00,0x00,}}, +{ 0x6C73, {0x20,0x00,0x2F,0xE0,0x08,0x00,0x8F,0xC0,0x4A,0x40,0x0A,0x40,0x29,0x80,0x29,0x80,0x69,0x80,0x5B,0x80,0x5C,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x6C7A, {0x22,0x00,0x22,0x00,0x1F,0x80,0x82,0x80,0x42,0x80,0x02,0x80,0x3F,0xE0,0x22,0x00,0x45,0x00,0x48,0x80,0x90,0x40,0xA0,0x20,0x00,0x00,}}, +{ 0x6C7D, {0x24,0x00,0x24,0x00,0x0F,0xC0,0x97,0x80,0x40,0x00,0x1F,0x80,0x00,0x80,0x20,0x80,0x20,0x80,0x20,0x60,0x40,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x6C7E, {0x23,0x80,0x21,0x80,0x04,0x80,0x88,0x80,0x48,0x40,0x1F,0xA0,0x22,0x80,0x22,0x80,0x66,0x80,0x44,0x80,0x48,0x80,0x51,0x80,0x00,0x00,}}, +{ 0x6C81, {0x21,0x00,0x21,0x80,0x00,0x00,0x82,0x00,0x42,0x00,0x0A,0x40,0x2A,0x20,0x3A,0x20,0x72,0x00,0x42,0x40,0x42,0x40,0x41,0xC0,0x00,0x00,}}, +{ 0x6C82, {0x20,0x40,0x21,0x80,0x0E,0x00,0x88,0x00,0x4F,0xE0,0x09,0x80,0x29,0x80,0x29,0x80,0x69,0x80,0x59,0x80,0x51,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x6C83, {0x20,0x40,0x21,0x80,0x0F,0x00,0x81,0x00,0x41,0x00,0x1F,0xE0,0x21,0x00,0x41,0x00,0x42,0x80,0x84,0x80,0x88,0x40,0xB0,0x20,0x00,0x00,}}, +{ 0x6C88, {0x21,0x00,0x21,0x00,0x01,0x00,0x8F,0xE0,0x49,0x40,0x11,0x00,0x41,0x00,0x43,0x00,0x43,0x00,0x85,0x20,0x89,0x20,0x90,0xE0,0x00,0x00,}}, +{ 0x6C8C, {0x21,0x00,0x21,0x00,0x01,0xE0,0x9F,0x40,0x49,0x40,0x09,0x40,0x29,0x40,0x2F,0xC0,0x29,0x40,0x41,0x20,0x41,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x6C8D, {0x20,0x00,0x3F,0xE0,0x02,0x00,0x87,0x80,0x44,0x80,0x04,0x80,0x24,0x80,0x2F,0x80,0x69,0x80,0x41,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6C90, {0x21,0x00,0x21,0x00,0x01,0x00,0x9F,0xE0,0x43,0x00,0x03,0x00,0x23,0x80,0x25,0x80,0x65,0x40,0x59,0x20,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6C92, {0x24,0x00,0x27,0xC0,0x04,0x40,0x88,0x40,0x51,0xC0,0x00,0x00,0x2F,0xC0,0x24,0x40,0x62,0x80,0x43,0x00,0x47,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x6C93, {0x04,0x00,0x04,0x40,0x7F,0x80,0x15,0x00,0x24,0x80,0xCC,0x60,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6C96, {0x20,0x80,0x10,0x80,0x07,0xE0,0x44,0xA0,0x24,0xA0,0x04,0xA0,0x14,0xA0,0x17,0xE0,0x14,0xA0,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x6C99, {0x21,0x00,0x21,0x00,0x01,0x00,0x89,0x40,0x49,0x40,0x09,0x60,0x31,0xA0,0x23,0x80,0x40,0x80,0x41,0x00,0x86,0x00,0xB8,0x00,0x00,0x00,}}, +{ 0x6C9A, {0x21,0x00,0x21,0x00,0x01,0x00,0x89,0x00,0x49,0xC0,0x09,0x00,0x29,0x00,0x29,0x00,0x69,0x00,0x49,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6C9B, {0x21,0x00,0x21,0x00,0x1F,0xE0,0x8F,0xE0,0x41,0x00,0x0F,0xC0,0x29,0x40,0x29,0x40,0x69,0x40,0x49,0xC0,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6CA1, {0x20,0x00,0x27,0x80,0x04,0x80,0x84,0xA0,0x48,0x60,0x10,0x00,0x2F,0xC0,0x24,0x40,0x22,0x80,0x41,0x00,0x46,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x6CA2, {0x20,0x00,0x2F,0xC0,0x08,0x40,0x88,0x40,0x4F,0xC0,0x09,0x40,0x29,0x00,0x29,0x00,0x48,0x80,0x50,0x80,0x90,0x40,0xA0,0x20,0x00,0x00,}}, +{ 0x6CAB, {0x21,0x00,0x21,0x00,0x1F,0xE0,0x81,0x00,0x41,0x00,0x0F,0xC0,0x21,0x00,0x23,0x80,0x25,0x80,0x49,0x40,0x51,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x6CAE, {0x20,0x00,0x27,0x80,0x04,0x80,0x84,0x80,0x47,0x80,0x04,0x80,0x24,0x80,0x27,0x80,0x64,0x80,0x44,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6CB1, {0x21,0x00,0x23,0x00,0x0F,0xE0,0x9C,0x00,0x44,0x00,0x04,0x40,0x25,0x80,0x27,0x00,0x64,0x00,0x44,0x20,0x44,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x6CB3, {0x40,0x00,0x3F,0xE0,0x00,0x40,0x8F,0x40,0x49,0x40,0x09,0x40,0x09,0x40,0x2F,0x40,0x29,0x40,0x20,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x6CB8, {0x45,0x00,0x25,0x00,0x1F,0xC0,0x85,0x40,0x5F,0xC0,0x15,0x40,0x35,0x00,0x3F,0xE0,0x55,0x20,0x49,0x60,0x89,0x00,0x91,0x00,0x00,0x00,}}, +{ 0x6CB9, {0x10,0x80,0x10,0x80,0x00,0x80,0x47,0xE0,0x24,0xA0,0x04,0xA0,0x14,0xA0,0x17,0xE0,0x14,0xA0,0x24,0xA0,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x6CBA, {0x10,0x00,0x17,0xE0,0x04,0xA0,0x44,0xA0,0x24,0xA0,0x07,0xE0,0x14,0xA0,0x14,0xA0,0x34,0xA0,0x24,0xA0,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x6CBB, {0x22,0x00,0x22,0x00,0x02,0x00,0x84,0x80,0x44,0xC0,0x3F,0x20,0x00,0x00,0x2F,0xC0,0x48,0x40,0x48,0x40,0x8F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x6CBC, {0x20,0x00,0x17,0xE0,0x01,0x20,0x42,0x20,0x22,0x20,0x04,0x40,0x08,0x00,0x27,0xE0,0x24,0x20,0x24,0x20,0x47,0xE0,0x44,0x20,0x00,0x00,}}, +{ 0x6CBD, {0x21,0x00,0x21,0x00,0x1F,0xE0,0x8F,0xE0,0x41,0x00,0x01,0x00,0x2F,0xC0,0x28,0x40,0x68,0x40,0x48,0x40,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6CBE, {0x21,0x00,0x21,0x00,0x01,0xE0,0x81,0xE0,0x41,0x00,0x01,0x00,0x2F,0xC0,0x28,0x40,0x68,0x40,0x48,0x40,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6CBF, {0x23,0x00,0x21,0x00,0x05,0x00,0x84,0x80,0x48,0x80,0x08,0x40,0x3F,0xA0,0x28,0x80,0x48,0x80,0x48,0x80,0x8F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6CC1, {0x20,0x00,0x2F,0xC0,0x08,0x40,0x88,0x40,0x4F,0xC0,0x0A,0xC0,0x22,0x80,0x22,0x80,0x44,0x80,0x48,0xA0,0x90,0xA0,0xA0,0x60,0x00,0x00,}}, +{ 0x6CC4, {0x29,0x80,0x29,0x80,0x09,0x80,0x9F,0xE0,0x4B,0xC0,0x09,0x80,0x29,0x80,0x29,0x80,0x69,0x80,0x48,0x00,0x4F,0xE0,0x48,0x00,0x00,0x00,}}, +{ 0x6CC5, {0x10,0x00,0x1F,0xE0,0x08,0x20,0x49,0x20,0x29,0x20,0x09,0x20,0x19,0xA0,0x1A,0xA0,0x3E,0x60,0x2C,0x20,0x2F,0xE0,0x28,0x20,0x00,0x00,}}, +{ 0x6CC9, {0x04,0x00,0x08,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x40,0x7E,0x80,0x0F,0x00,0x34,0x80,0xC4,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x6CCA, {0x10,0x80,0x11,0x00,0x02,0x00,0x47,0xE0,0x24,0x20,0x04,0x20,0x17,0xE0,0x14,0x20,0x24,0x20,0x24,0x20,0x47,0xE0,0x44,0x20,0x00,0x00,}}, +{ 0x6CCC, {0x21,0x00,0x21,0x40,0x00,0x40,0x82,0x40,0x4A,0x80,0x0A,0x80,0x2B,0x40,0x33,0x20,0x52,0x20,0x46,0x40,0x8A,0x40,0x91,0xC0,0x00,0x00,}}, +{ 0x6CD3, {0x21,0x80,0x3D,0x80,0x05,0x80,0x9D,0x80,0x51,0x80,0x11,0x80,0x3D,0x80,0x35,0xC0,0x65,0x40,0x45,0x60,0x47,0xA0,0x58,0x20,0x00,0x00,}}, +{ 0x6CD5, {0x21,0x00,0x21,0x00,0x07,0xC0,0x81,0x00,0x41,0x00,0x1F,0xE0,0x01,0x00,0x22,0x00,0x22,0x40,0x44,0xC0,0x5F,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x6CD7, {0x10,0x00,0x1F,0xE0,0x0A,0xA0,0x4A,0xA0,0x2A,0xA0,0x0A,0xA0,0x1A,0xE0,0x1C,0xE0,0x3C,0x60,0x28,0x20,0x2F,0xE0,0x28,0x20,0x00,0x00,}}, +{ 0x6CD9, {0x20,0x00,0x2F,0xC0,0x01,0x00,0x85,0x40,0x49,0x40,0x01,0x00,0x3F,0xE0,0x21,0x00,0x61,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6CDB, {0x20,0x40,0x21,0x80,0x0F,0x00,0x81,0x00,0x5F,0xC0,0x00,0x40,0x20,0x80,0x20,0x80,0x61,0x00,0x4E,0x00,0x53,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x6CDD, {0x20,0x40,0x21,0x80,0x0E,0x00,0x88,0x00,0x4F,0xE0,0x09,0x80,0x2B,0x80,0x29,0xC0,0x69,0xE0,0x59,0x80,0x51,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x6CE1, {0x24,0x00,0x24,0x00,0x07,0xC0,0x88,0x40,0x5F,0x40,0x21,0x40,0x0F,0x40,0x29,0x80,0x28,0x00,0x48,0x20,0x48,0x20,0x47,0xE0,0x00,0x00,}}, +{ 0x6CE2, {0x21,0x00,0x21,0x00,0x0F,0xE0,0x89,0x40,0x49,0x00,0x0F,0xC0,0x2C,0x40,0x2A,0x80,0x4B,0x00,0x51,0x00,0x92,0x80,0xAC,0x60,0x00,0x00,}}, +{ 0x6CE3, {0x21,0x00,0x21,0x00,0x1F,0xE0,0x88,0x40,0x48,0x40,0x04,0x40,0x24,0x40,0x22,0x80,0x62,0x80,0x42,0x80,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6CE5, {0x20,0x00,0x2F,0xC0,0x08,0x40,0x8F,0xC0,0x4A,0x40,0x0A,0x00,0x2A,0xC0,0x2B,0x00,0x4A,0x00,0x52,0x20,0x92,0x20,0xA1,0xE0,0x00,0x00,}}, +{ 0x6CE8, {0x42,0x00,0x21,0x00,0x1F,0xE0,0x81,0x00,0x41,0x00,0x01,0x00,0x2F,0xC0,0x21,0x00,0x41,0x00,0x41,0x00,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6CEA, {0x10,0x00,0x17,0xE0,0x04,0x20,0x44,0x20,0x27,0xE0,0x04,0x20,0x14,0x20,0x17,0xE0,0x34,0x20,0x24,0x20,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x6CEF, {0x20,0x00,0x2F,0xC0,0x08,0x40,0x8F,0xC0,0x4B,0x40,0x09,0x00,0x2F,0xE0,0x29,0x80,0x68,0x80,0x48,0xA0,0x4F,0x60,0x78,0x20,0x00,0x00,}}, +{ 0x6CF0, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x1F,0x00,0x0A,0x00,0xFF,0xE0,0x15,0x00,0x75,0xC0,0x9F,0x60,0x1F,0x00,0x64,0xC0,0x0C,0x00,0x00,0x00,}}, +{ 0x6CF1, {0x21,0x00,0x21,0x00,0x07,0xC0,0x8F,0xC0,0x49,0x40,0x09,0x40,0x29,0x40,0x3F,0xE0,0x61,0x00,0x43,0x00,0x4C,0x80,0x70,0x60,0x00,0x00,}}, +{ 0x6CF3, {0x43,0x00,0x20,0x80,0x07,0x00,0x81,0x40,0x41,0x40,0x1F,0x80,0x23,0x80,0x25,0x80,0x45,0x40,0x59,0x20,0x81,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x6D0B, {0x24,0x40,0x22,0x80,0x1F,0xE0,0x81,0x00,0x41,0x00,0x0F,0xC0,0x21,0x00,0x21,0x00,0x3F,0xE0,0x41,0x00,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6D0C, {0x10,0x20,0x1F,0xA0,0x04,0xE0,0x47,0xE0,0x29,0xE0,0x09,0xE0,0x1D,0xE0,0x13,0xE0,0x32,0xE0,0x24,0x20,0x28,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x6D12, {0x20,0x00,0x3F,0xE0,0x05,0x00,0x9F,0xC0,0x57,0x40,0x15,0x40,0x35,0xC0,0x35,0xC0,0x78,0xC0,0x58,0x40,0x5F,0xC0,0x50,0x40,0x00,0x00,}}, +{ 0x6D17, {0x21,0x00,0x25,0x00,0x07,0xC0,0x89,0x00,0x51,0x00,0x1F,0xE0,0x02,0x80,0x22,0x80,0x44,0x80,0x48,0xA0,0x90,0xA0,0xA0,0x60,0x00,0x00,}}, +{ 0x6D19, {0x21,0x00,0x25,0x00,0x07,0xC0,0x8F,0xC0,0x51,0x00,0x1F,0xE0,0x23,0x80,0x23,0x80,0x65,0x80,0x49,0x40,0x51,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x6D1B, {0x22,0x00,0x22,0x00,0x07,0x80,0x8C,0x80,0x53,0x00,0x03,0x00,0x4C,0x80,0x7F,0xE0,0x48,0x80,0x88,0x80,0x8F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6D1E, {0x10,0x00,0x1F,0xE0,0x08,0x20,0x4F,0xE0,0x28,0x20,0x0B,0xA0,0x1A,0xA0,0x1A,0xA0,0x2B,0xA0,0x28,0x20,0x48,0x20,0x48,0x60,0x00,0x00,}}, +{ 0x6D1F, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x8F,0xC0,0x43,0x40,0x0F,0xC0,0x29,0x00,0x2F,0xE0,0x69,0x60,0x43,0xC0,0x44,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x6D25, {0x41,0x00,0x21,0x00,0x0F,0xC0,0x9F,0xE0,0x41,0x40,0x0F,0xC0,0x21,0x00,0x2F,0xC0,0x41,0x00,0x5F,0xE0,0x81,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x6D29, {0x42,0x00,0x22,0x00,0x0F,0xC0,0x8A,0x40,0x4F,0xC0,0x0A,0x40,0x2F,0xC0,0x29,0x40,0x21,0x80,0x43,0xA0,0x5C,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x6D2A, {0x24,0x80,0x24,0x80,0x04,0x80,0x9F,0xC0,0x44,0x80,0x04,0x80,0x04,0x80,0x5F,0xE0,0x44,0x00,0x48,0x80,0x90,0x40,0xA0,0x40,0x00,0x00,}}, +{ 0x6D2B, {0x21,0x00,0x23,0x00,0x07,0xC0,0x8F,0xC0,0x4B,0xC0,0x0B,0xC0,0x2B,0xC0,0x2B,0xC0,0x6B,0xC0,0x4B,0xC0,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6D32, {0x14,0x20,0x14,0xA0,0x04,0xA0,0x4C,0xA0,0x2F,0xE0,0x1D,0xE0,0x04,0xA0,0x14,0xA0,0x24,0xA0,0x28,0xA0,0x48,0xA0,0x50,0x20,0x00,0x00,}}, +{ 0x6D33, {0x12,0x00,0x12,0x00,0x02,0xE0,0x4F,0xE0,0x25,0xE0,0x05,0xE0,0x15,0xE0,0x1D,0xE0,0x3F,0xE0,0x23,0xE0,0x24,0xE0,0x28,0x00,0x00,0x00,}}, +{ 0x6D35, {0x12,0x00,0x12,0x00,0x03,0xE0,0x47,0xE0,0x27,0xA0,0x0C,0xA0,0x17,0xA0,0x15,0xA0,0x37,0xA0,0x20,0x20,0x20,0x20,0x20,0x40,0x00,0x00,}}, +{ 0x6D36, {0x12,0x00,0x12,0x00,0x03,0xE0,0x47,0xE0,0x28,0xA0,0x1C,0xA0,0x3B,0xE0,0x29,0xE0,0x2E,0xE0,0x4F,0xE0,0x48,0xE0,0x40,0xC0,0x00,0x00,}}, +{ 0x6D38, {0x21,0x00,0x21,0x00,0x09,0x40,0x85,0x40,0x41,0x00,0x1F,0xE0,0x23,0x80,0x23,0x80,0x67,0x80,0x45,0xA0,0x49,0xA0,0x50,0xE0,0x00,0x00,}}, +{ 0x6D3B, {0x20,0x40,0x21,0x80,0x0F,0x00,0x81,0x00,0x5F,0xE0,0x01,0x00,0x21,0x00,0x2F,0xC0,0x48,0x40,0x48,0x40,0x8F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x6D3D, {0x21,0x00,0x23,0x00,0x03,0x80,0x84,0x80,0x4F,0xC0,0x10,0x20,0x20,0x00,0x2F,0xC0,0x68,0x40,0x48,0x40,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6D3E, {0x21,0x00,0x23,0x00,0x0C,0xC0,0x8B,0x00,0x4A,0x40,0x0B,0x40,0x2B,0x80,0x2A,0x80,0x4A,0x80,0x52,0x40,0x92,0x20,0xA2,0x00,0x00,0x00,}}, +{ 0x6D41, {0x42,0x00,0x22,0x00,0x3F,0xE0,0x84,0x80,0x5F,0xC0,0x00,0x40,0x2A,0x80,0x4A,0x80,0x4A,0x80,0x8A,0xA0,0x92,0xA0,0xA0,0xE0,0x00,0x00,}}, +{ 0x6D44, {0x42,0x00,0x22,0x00,0x07,0x80,0x99,0x00,0x4F,0xC0,0x01,0x40,0x3F,0xE0,0x21,0x40,0x4F,0xC0,0x41,0x00,0x81,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x6D45, {0x22,0x80,0x22,0x40,0x1F,0xC0,0x83,0x80,0x4E,0x00,0x03,0xC0,0x3E,0x80,0x21,0x80,0x41,0x00,0x46,0xA0,0x98,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x6D59, {0x28,0x40,0x28,0x80,0x3F,0x00,0x9F,0x00,0x49,0xE0,0x09,0x80,0x2B,0x80,0x3D,0x80,0x79,0x80,0x4A,0x80,0x4A,0x80,0x5C,0x80,0x00,0x00,}}, +{ 0x6D5A, {0x21,0x00,0x23,0xC0,0x1F,0xE0,0x8F,0x80,0x45,0xA0,0x0A,0xE0,0x33,0x80,0x24,0x80,0x6D,0x80,0x43,0x00,0x47,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x6D5C, {0x21,0x80,0x2E,0x00,0x08,0x00,0x8F,0xC0,0x49,0x00,0x09,0x00,0x29,0x00,0x7F,0xE0,0x40,0x00,0x88,0x80,0x90,0x40,0xA0,0x40,0x00,0x00,}}, +{ 0x6D63, {0x21,0x00,0x23,0x00,0x0F,0xE0,0x9F,0xC0,0x40,0x00,0x00,0x00,0x3F,0xE0,0x23,0x80,0x67,0x80,0x45,0xA0,0x49,0xA0,0x50,0xE0,0x00,0x00,}}, +{ 0x6D64, {0x21,0x00,0x23,0x00,0x0F,0xE0,0x9A,0x00,0x42,0x00,0x1F,0xE0,0x22,0x00,0x25,0x80,0x65,0x80,0x59,0x40,0x73,0xE0,0x4E,0x20,0x00,0x00,}}, +{ 0x6D66, {0x41,0x80,0x21,0x40,0x1F,0xE0,0x81,0x00,0x4F,0xC0,0x09,0x40,0x2F,0xC0,0x29,0x40,0x2F,0xC0,0x49,0x40,0x49,0x40,0x49,0xC0,0x00,0x00,}}, +{ 0x6D69, {0x21,0x00,0x25,0x00,0x07,0xC0,0x89,0x00,0x51,0x00,0x3F,0xE0,0x00,0x00,0x2F,0xC0,0x48,0x40,0x48,0x40,0x8F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x6D6A, {0x22,0x00,0x22,0x00,0x0F,0x80,0x88,0x80,0x4F,0x80,0x08,0x80,0x2F,0x80,0x4A,0x40,0x49,0x40,0x89,0x80,0x8E,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x6D6C, {0x20,0x00,0x2F,0xC0,0x09,0x40,0x8F,0xC0,0x49,0x40,0x09,0x40,0x2F,0xC0,0x21,0x00,0x2F,0xC0,0x41,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6D6E, {0x40,0x40,0x21,0x80,0x3E,0x40,0x89,0x40,0x44,0x80,0x0F,0xC0,0x20,0x80,0x21,0x00,0x5F,0xE0,0x41,0x00,0x81,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x6D74, {0x24,0x80,0x24,0x80,0x08,0x40,0x92,0x00,0x42,0x00,0x05,0x00,0x28,0x80,0x3F,0xC0,0x68,0xA0,0x48,0x80,0x8F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6D77, {0x48,0x00,0x28,0x00,0x0F,0xE0,0x97,0xC0,0x45,0x40,0x05,0x40,0x7F,0xE0,0x49,0x40,0x49,0x40,0x4F,0xE0,0x80,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x6D78, {0x40,0x00,0x2F,0x80,0x00,0x80,0x87,0x80,0x4F,0x80,0x00,0x00,0x3F,0xE0,0x30,0x40,0x4F,0x80,0x43,0x00,0x87,0x00,0xB8,0xE0,0x00,0x00,}}, +{ 0x6D79, {0x21,0x00,0x21,0x00,0x1F,0xE0,0x8F,0xE0,0x45,0x80,0x05,0xC0,0x2B,0x20,0x33,0x20,0x63,0x80,0x44,0x80,0x48,0x40,0x50,0x20,0x00,0x00,}}, +{ 0x6D85, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x8F,0xC0,0x4F,0xC0,0x09,0x40,0x21,0x00,0x2F,0xC0,0x61,0x00,0x41,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6D88, {0x20,0x80,0x14,0xA0,0x12,0xA0,0x42,0xC0,0x27,0xE0,0x04,0x20,0x17,0xE0,0x14,0x20,0x27,0xE0,0x24,0x20,0x44,0x20,0x44,0x60,0x00,0x00,}}, +{ 0x6D8C, {0x20,0x00,0x17,0xE0,0x01,0xC0,0x47,0xE0,0x24,0xA0,0x04,0xA0,0x17,0xE0,0x14,0xA0,0x24,0xA0,0x27,0xE0,0x44,0xA0,0x44,0xE0,0x00,0x00,}}, +{ 0x6D8E, {0x20,0x20,0x3C,0x40,0x05,0x80,0x88,0x80,0x49,0x80,0x1D,0xE0,0x25,0x80,0x35,0x80,0x7D,0x80,0x4D,0xE0,0x52,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x6D93, {0x10,0x00,0x17,0xE0,0x04,0x20,0x47,0xE0,0x20,0x00,0x07,0xE0,0x14,0x20,0x17,0xE0,0x37,0xE0,0x27,0xE0,0x24,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x6D95, {0x28,0x80,0x24,0x80,0x1F,0xC0,0x8F,0xC0,0x4F,0xC0,0x09,0x00,0x2F,0xE0,0x2B,0x20,0x67,0x20,0x49,0x60,0x71,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6D99, {0x40,0x00,0x3F,0xE0,0x0F,0xC0,0x88,0x40,0x4F,0xC0,0x09,0x40,0x29,0x00,0x4F,0xE0,0x51,0x00,0x92,0x80,0xAC,0x40,0xB0,0x20,0x00,0x00,}}, +{ 0x6D9B, {0x21,0x00,0x31,0x00,0x1F,0xE0,0x8F,0xC0,0x43,0x00,0x1F,0xE0,0x22,0x80,0x3F,0xE0,0x64,0x80,0x5A,0x80,0x70,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x6D9C, {0x41,0x00,0x21,0x00,0x1F,0xE0,0x8F,0xC0,0x40,0x00,0x0F,0xE0,0x28,0x40,0x32,0x80,0x42,0x80,0x44,0xA0,0x88,0xA0,0xB0,0xE0,0x00,0x00,}}, +{ 0x6DAF, {0x40,0x00,0x2F,0xE0,0x09,0x00,0x8B,0xC0,0x49,0x00,0x0F,0xE0,0x29,0x00,0x29,0x00,0x4F,0xC0,0x51,0x00,0xAF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6DB2, {0x21,0x00,0x11,0x00,0x1F,0xE0,0x85,0xC0,0x49,0x40,0x1B,0x40,0x3A,0xC0,0x2D,0x80,0x49,0x80,0x49,0x80,0x8A,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x6DB5, {0x40,0x00,0x7F,0xE0,0x04,0x00,0x86,0x40,0x7B,0xC0,0x2B,0x40,0x6B,0x40,0x77,0xC0,0x7A,0xC0,0xA6,0x40,0xBF,0xC0,0xA0,0x40,0x00,0x00,}}, +{ 0x6DB8, {0x10,0x00,0x17,0xE0,0x04,0xA0,0x47,0xE0,0x25,0xA0,0x04,0xA0,0x15,0xE0,0x15,0xE0,0x35,0xE0,0x25,0xA0,0x27,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x6DBC, {0x41,0x00,0x21,0x00,0x3F,0xE0,0x8F,0xC0,0x48,0x40,0x08,0x40,0x2F,0xC0,0x21,0x00,0x49,0x40,0x49,0x20,0x91,0x20,0x83,0x00,0x00,0x00,}}, +{ 0x6DC0, {0x21,0x00,0x21,0x00,0x0F,0xE0,0x88,0x00,0x5F,0xE0,0x01,0x00,0x29,0x00,0x49,0xC0,0x49,0x00,0x8D,0x00,0x93,0x00,0xA1,0xE0,0x00,0x00,}}, +{ 0x6DC5, {0x48,0x40,0x68,0x80,0x3F,0x00,0x9F,0x00,0x4D,0xE0,0x1B,0x80,0x7B,0x80,0x79,0x80,0x6A,0x80,0xEA,0x80,0x8C,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6DC6, {0x20,0x80,0x27,0x80,0x07,0x40,0x9F,0xE0,0x42,0x00,0x07,0xC0,0x24,0x40,0x3F,0xC0,0x77,0xC0,0x67,0xC0,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x6DC7, {0x24,0x80,0x24,0x80,0x1F,0xE0,0x8F,0xE0,0x47,0x80,0x04,0x80,0x27,0x80,0x34,0xC0,0x7F,0xE0,0x42,0x00,0x44,0x40,0x58,0x40,0x00,0x00,}}, +{ 0x6DCB, {0x48,0x80,0x28,0x80,0x1F,0xE0,0x88,0x80,0x4C,0x80,0x1B,0x80,0x1B,0xC0,0x2A,0xC0,0x4C,0xA0,0x48,0x80,0x88,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6DCC, {0x21,0x00,0x25,0xC0,0x05,0x60,0x99,0x20,0x4F,0xC0,0x08,0x40,0x2B,0xC0,0x2B,0xC0,0x6B,0xC0,0x4B,0xC0,0x48,0x40,0x48,0xC0,0x00,0x00,}}, +{ 0x6DD1, {0x28,0x00,0x28,0x00,0x0F,0xC0,0x89,0x40,0x7F,0x40,0x09,0x40,0x4C,0x80,0x5A,0x80,0x5A,0x80,0x69,0x40,0x8A,0x40,0x9C,0x20,0x00,0x00,}}, +{ 0x6DD2, {0x21,0x00,0x3F,0xE0,0x07,0xC0,0x87,0xC0,0x5F,0xE0,0x01,0x40,0x2F,0xC0,0x33,0x00,0x7F,0xE0,0x47,0x80,0x43,0x80,0x5E,0x40,0x00,0x00,}}, +{ 0x6DD5, {0x21,0x00,0x23,0x00,0x0F,0xC0,0x9F,0xE0,0x45,0x80,0x05,0xA0,0x29,0xE0,0x33,0x00,0x6F,0xC0,0x41,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6DD8, {0x12,0x00,0x12,0x00,0x03,0xE0,0x46,0x20,0x2B,0xA0,0x15,0x20,0x3F,0xE0,0x31,0x20,0x25,0x60,0x27,0xE0,0x44,0x60,0x40,0x40,0x00,0x00,}}, +{ 0x6DD9, {0x21,0x00,0x23,0x00,0x0F,0xE0,0x9F,0xC0,0x40,0x00,0x00,0x00,0x3F,0xE0,0x21,0x00,0x65,0x40,0x49,0x20,0x51,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x6DDE, {0x49,0x80,0x68,0x80,0x3F,0x80,0x9F,0x40,0x4D,0x40,0x1B,0x20,0x7B,0x80,0x79,0x80,0x69,0xC0,0x89,0x40,0x8F,0xA0,0x88,0x20,0x00,0x00,}}, +{ 0x6DE1, {0x21,0x00,0x21,0x40,0x0B,0x40,0x93,0x80,0x44,0x40,0x19,0x20,0x21,0x40,0x2B,0x40,0x4B,0x00,0x45,0x00,0x88,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x6DE4, {0x29,0x80,0x29,0x80,0x09,0x80,0x9F,0x80,0x4A,0x40,0x08,0x20,0x2E,0x80,0x2A,0x80,0x6B,0x00,0x52,0x80,0x72,0x40,0x6C,0x40,0x00,0x00,}}, +{ 0x6DE6, {0x21,0x00,0x23,0x00,0x06,0x80,0x8F,0xC0,0x53,0x20,0x01,0x00,0x2F,0xC0,0x21,0x00,0x69,0x40,0x45,0x40,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6DE8, {0x20,0xC0,0x2F,0xC0,0x09,0x60,0x98,0x20,0x4F,0xC0,0x01,0x40,0x3F,0xE0,0x23,0x40,0x6F,0xC0,0x41,0x00,0x41,0x00,0x43,0x00,0x00,0x00,}}, +{ 0x6DEA, {0x21,0x00,0x23,0x00,0x06,0x80,0x8F,0xC0,0x50,0x20,0x0F,0xC0,0x2B,0xC0,0x2B,0xC0,0x6F,0xC0,0x4B,0xC0,0x4B,0xC0,0x48,0xC0,0x00,0x00,}}, +{ 0x6DEB, {0x40,0x60,0x23,0x80,0x3E,0x40,0x8A,0x40,0x49,0xC0,0x0F,0x00,0x21,0x00,0x3F,0xE0,0x41,0x00,0x41,0x00,0x9F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6DEC, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x84,0x80,0x44,0xC0,0x0A,0xA0,0x31,0x20,0x33,0x00,0x7F,0xE0,0x41,0x00,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6DEE, {0x24,0x80,0x24,0x80,0x07,0xE0,0x8F,0xE0,0x49,0x80,0x1F,0xC0,0x29,0x80,0x29,0x80,0x6F,0xC0,0x49,0x80,0x4F,0xE0,0x48,0x00,0x00,0x00,}}, +{ 0x6DF1, {0x40,0x00,0x2F,0xE0,0x0A,0x80,0x92,0xA0,0x44,0xE0,0x09,0x00,0x21,0x00,0x2F,0xE0,0x43,0x80,0x45,0x40,0x99,0x20,0x81,0x00,0x00,0x00,}}, +{ 0x6DF3, {0x21,0x00,0x3F,0xE0,0x07,0x80,0x84,0x80,0x47,0x80,0x00,0x00,0x2F,0xC0,0x20,0x80,0x4F,0xE0,0x41,0x00,0x81,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x6DF5, {0x15,0x60,0x15,0x60,0x05,0x60,0x47,0x60,0x24,0x20,0x07,0xE0,0x14,0x20,0x17,0x60,0x25,0x60,0x2D,0x60,0x49,0x60,0x50,0x20,0x00,0x00,}}, +{ 0x6DF7, {0x20,0x00,0x2F,0x80,0x08,0x80,0x8F,0x80,0x48,0x80,0x0F,0x80,0x29,0x00,0x2B,0x40,0x4D,0x80,0x49,0x20,0x8F,0x20,0xB1,0xE0,0x00,0x00,}}, +{ 0x6DF9, {0x22,0x00,0x32,0x00,0x1F,0xE0,0x84,0x80,0x49,0x40,0x1F,0xE0,0x29,0x40,0x2F,0xC0,0x6F,0xC0,0x4F,0xE0,0x41,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x6DFA, {0x22,0x80,0x22,0x40,0x1F,0xE0,0x8E,0x80,0x41,0xA0,0x0E,0xE0,0x23,0xA0,0x33,0xE0,0x7E,0x80,0x41,0xA0,0x43,0xE0,0x5C,0x20,0x00,0x00,}}, +{ 0x6DFB, {0x20,0xC0,0x2F,0x00,0x12,0x00,0x8F,0xE0,0x44,0x80,0x0A,0x40,0x52,0x20,0x6A,0xC0,0x4A,0xA0,0x52,0xA0,0x82,0x00,0x86,0x00,0x00,0x00,}}, +{ 0x6E05, {0x22,0x00,0x3F,0xC0,0x1F,0x80,0x82,0x00,0x7F,0xE0,0x00,0x00,0x0F,0x80,0x28,0x80,0x4F,0x80,0x4F,0x80,0x88,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6E07, {0x10,0x00,0x17,0xC0,0x04,0x40,0x47,0xC0,0x27,0xC0,0x02,0x00,0x17,0xE0,0x1D,0xA0,0x37,0x20,0x24,0x20,0x43,0xA0,0x40,0xC0,0x00,0x00,}}, +{ 0x6E08, {0x21,0x00,0x11,0x00,0x1F,0xE0,0x84,0x80,0x43,0x00,0x1C,0xE0,0x24,0x40,0x27,0xC0,0x24,0x40,0x4F,0xC0,0x48,0x40,0x50,0x40,0x00,0x00,}}, +{ 0x6E09, {0x21,0x00,0x21,0x00,0x05,0xC0,0x85,0x00,0x5F,0xE0,0x01,0x80,0x29,0x40,0x29,0xA0,0x53,0xA0,0x41,0x00,0x86,0x00,0xB8,0x00,0x00,0x00,}}, +{ 0x6E0A, {0x14,0x20,0x14,0xA0,0x07,0xE0,0x45,0xE0,0x25,0xA0,0x07,0xE0,0x14,0xA0,0x15,0xE0,0x37,0xE0,0x2C,0xA0,0x28,0xA0,0x30,0x20,0x00,0x00,}}, +{ 0x6E0B, {0x21,0x00,0x21,0x00,0x09,0xC0,0x89,0x00,0x49,0x00,0x1F,0xE0,0x40,0x00,0x58,0x40,0x44,0x80,0x42,0x00,0x8C,0xC0,0xB0,0x20,0x00,0x00,}}, +{ 0x6E13, {0x20,0x40,0x23,0xC0,0x0E,0x40,0x85,0x40,0x45,0x80,0x01,0x00,0x2F,0xC0,0x21,0x00,0x5F,0xE0,0x43,0x00,0x84,0x80,0x98,0x60,0x00,0x00,}}, +{ 0x6E15, {0x10,0x20,0x19,0x20,0x07,0xE0,0x4F,0xE0,0x22,0xE0,0x02,0xE0,0x1F,0xE0,0x12,0xE0,0x33,0xE0,0x2C,0xA0,0x38,0x20,0x20,0x60,0x00,0x00,}}, +{ 0x6E19, {0x42,0x00,0x67,0x80,0x3F,0xC0,0x9F,0xC0,0x55,0xC0,0x15,0xC0,0x78,0xC0,0x72,0x40,0x5F,0xE0,0x86,0x00,0x99,0x80,0xA0,0x60,0x00,0x00,}}, +{ 0x6E1A, {0x42,0x00,0x22,0x00,0x0F,0xA0,0x82,0x40,0x5F,0xE0,0x02,0x00,0x27,0xC0,0x2C,0x40,0x57,0xC0,0x64,0x40,0x87,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x6E1B, {0x21,0x80,0x21,0x40,0x1F,0xE0,0x91,0x00,0x5F,0x40,0x11,0x40,0x3F,0xC0,0x3A,0x80,0x5E,0x80,0x53,0xA0,0xA2,0x60,0xA4,0x20,0x00,0x00,}}, +{ 0x6E1D, {0x27,0x00,0x23,0x00,0x06,0x80,0x8F,0xC0,0x70,0x20,0x1E,0x40,0x33,0xC0,0x3B,0xC0,0x7F,0x80,0x5F,0xC0,0x53,0xC0,0x57,0xC0,0x00,0x00,}}, +{ 0x6E1F, {0x21,0x00,0x3F,0xE0,0x07,0x80,0x87,0x80,0x47,0x80,0x00,0x00,0x2F,0xE0,0x38,0x40,0x7F,0xC0,0x41,0x00,0x41,0x00,0x43,0x00,0x00,0x00,}}, +{ 0x6E20, {0x20,0x00,0x2F,0xC0,0x8F,0x80,0x48,0x80,0x0F,0x80,0x28,0x00,0x4F,0xC0,0x84,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x6E21, {0x41,0x00,0x21,0x00,0x1F,0xE0,0x92,0x80,0x5F,0xE0,0x13,0x80,0x30,0x00,0x3F,0xC0,0x54,0x80,0x53,0x00,0xA6,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x6E23, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x87,0x80,0x59,0x60,0x07,0x80,0x24,0x80,0x27,0x80,0x67,0x80,0x47,0x80,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6E24, {0x24,0xC0,0x34,0xC0,0x1F,0xC0,0x4F,0xE0,0x39,0xE0,0x3E,0xE0,0x32,0xE0,0x24,0xE0,0x2F,0xA0,0x4C,0xA0,0x45,0x20,0x4E,0x40,0x00,0x00,}}, +{ 0x6E25, {0x40,0x00,0x2F,0xC0,0x08,0x40,0x8F,0xC0,0x4F,0xE0,0x09,0x80,0x2A,0xC0,0x2F,0xA0,0x49,0x00,0x57,0xC0,0xB1,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x6E26, {0x10,0x00,0x17,0xC0,0x04,0x40,0x45,0xC0,0x25,0x40,0x0F,0xE0,0x28,0x20,0x2B,0xA0,0x2A,0xA0,0x2B,0xA0,0x4A,0xA0,0x48,0x60,0x00,0x00,}}, +{ 0x6E29, {0x40,0x00,0x2F,0x80,0x08,0x80,0x8F,0x80,0x4F,0x80,0x08,0x80,0x40,0x00,0x5F,0xC0,0x55,0x40,0x55,0x40,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6E2B, {0x25,0x80,0x37,0xC0,0x1F,0xE0,0x85,0x80,0x44,0x00,0x07,0xC0,0x21,0x00,0x3F,0xE0,0x67,0x80,0x49,0x40,0x51,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x6E2C, {0x20,0x20,0x1F,0x20,0x09,0xA0,0x4F,0xA0,0x29,0xA0,0x0F,0xA0,0x19,0xA0,0x19,0xA0,0x2F,0x20,0x26,0x20,0x49,0x20,0x50,0x60,0x00,0x00,}}, +{ 0x6E2D, {0x10,0x00,0x1F,0xE0,0x0F,0xE0,0x4F,0xE0,0x2F,0xE0,0x08,0x20,0x17,0xC0,0x14,0x40,0x37,0xC0,0x27,0xC0,0x24,0x40,0x24,0x40,0x00,0x00,}}, +{ 0x6E2E, {0x24,0x80,0x34,0xC0,0x1F,0xE0,0x84,0x80,0x5F,0xE0,0x00,0x40,0x2F,0x40,0x29,0x40,0x6F,0x40,0x4F,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x6E2F, {0x44,0x80,0x44,0x80,0x3F,0xC0,0x84,0x80,0x5F,0xE0,0x08,0x80,0x5F,0xC0,0x60,0xA0,0x4F,0x80,0x48,0x40,0x88,0x40,0x87,0xC0,0x00,0x00,}}, +{ 0x6E38, {0x29,0x80,0x29,0x80,0x09,0xE0,0x9F,0xE0,0x4B,0xC0,0x08,0x40,0x2E,0x80,0x2A,0xC0,0x6B,0xE0,0x5A,0x80,0x52,0x80,0x6C,0x80,0x00,0x00,}}, +{ 0x6E3A, {0x41,0x80,0x7D,0x80,0x25,0x80,0xBD,0xC0,0x75,0xC0,0x27,0xA0,0x7D,0xE0,0x65,0xC0,0x7D,0x80,0xBC,0x80,0x83,0x00,0x8C,0x00,0x00,0x00,}}, +{ 0x6E3E, {0x20,0x00,0x2F,0xE0,0x1F,0xE0,0x8F,0xE0,0x4F,0xC0,0x09,0x40,0x2F,0xC0,0x2B,0x40,0x6F,0xC0,0x5F,0xE0,0x43,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6E43, {0x21,0x00,0x37,0xE0,0x1C,0x80,0x85,0xE0,0x5E,0xC0,0x04,0x80,0x25,0xE0,0x36,0x80,0x7D,0xE0,0x49,0xE0,0x48,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x6E4A, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x8F,0xC0,0x43,0x80,0x1F,0xE0,0x64,0x80,0x6F,0x40,0x5F,0xE0,0x47,0xC0,0x84,0x80,0x98,0x60,0x00,0x00,}}, +{ 0x6E4D, {0x21,0x00,0x29,0x40,0x09,0x40,0x8F,0xC0,0x40,0x00,0x1F,0xE0,0x22,0x00,0x2F,0xC0,0x6B,0xC0,0x4B,0xC0,0x4B,0xC0,0x48,0xC0,0x00,0x00,}}, +{ 0x6E4E, {0x20,0x00,0x3F,0xE0,0x06,0x00,0x9F,0xC0,0x55,0xC0,0x15,0xC0,0x37,0xC0,0x35,0xC0,0x77,0xC0,0x55,0xC0,0x5F,0xC0,0x50,0x40,0x00,0x00,}}, +{ 0x6E56, {0x20,0x00,0x14,0xE0,0x04,0xA0,0x4F,0xA0,0x24,0xE0,0x04,0xA0,0x0E,0xA0,0x2A,0xA0,0x2A,0xE0,0x2F,0x20,0x41,0x20,0x42,0x60,0x00,0x00,}}, +{ 0x6E58, {0x24,0x00,0x24,0xE0,0x1F,0xA0,0x44,0xA0,0x24,0xE0,0x0E,0xA0,0x2D,0xA0,0x2D,0xE0,0x34,0xA0,0x24,0xA0,0x44,0xE0,0x44,0xA0,0x00,0x00,}}, +{ 0x6E5B, {0x44,0x80,0x2F,0xE0,0x07,0x80,0x84,0x80,0x47,0x80,0x04,0x80,0x3F,0xE0,0x32,0x80,0x54,0xE0,0x58,0x20,0x9F,0xE0,0x90,0x00,0x00,0x00,}}, +{ 0x6E5F, {0x21,0x00,0x22,0x00,0x0F,0xC0,0x8F,0xC0,0x48,0x40,0x0F,0xC0,0x20,0x00,0x3F,0xE0,0x67,0xC0,0x47,0xC0,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6E67, {0x40,0x00,0x2F,0xC0,0x03,0x80,0x8F,0xC0,0x49,0x40,0x0F,0xC0,0x29,0x40,0x4F,0xC0,0x41,0x00,0x9F,0xE0,0x86,0x20,0xB8,0xC0,0x00,0x00,}}, +{ 0x6E6B, {0x43,0x80,0x65,0x80,0x39,0x80,0x89,0xA0,0x7F,0xC0,0x09,0x80,0x7F,0x80,0x7B,0x80,0x6B,0x80,0xE9,0x40,0x8A,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x6E6E, {0x20,0x00,0x3F,0xE0,0x1F,0xC0,0x9F,0xC0,0x55,0xC0,0x19,0xC0,0x3F,0xC0,0x32,0x00,0x7F,0xC0,0x42,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6E6F, {0x20,0x00,0x2F,0x80,0x08,0x80,0x8F,0x80,0x4F,0x80,0x00,0x00,0x7F,0xE0,0x48,0x00,0x4F,0xC0,0x95,0xC0,0x89,0x40,0x83,0x80,0x00,0x00,}}, +{ 0x6E72, {0x20,0xC0,0x2F,0xC0,0x09,0x60,0x9F,0xA0,0x42,0x00,0x1F,0xE0,0x22,0x00,0x27,0xC0,0x65,0x40,0x59,0x80,0x73,0x80,0x4C,0x60,0x00,0x00,}}, +{ 0x6E76, {0x21,0x00,0x22,0x00,0x0F,0xC0,0x8F,0xC0,0x48,0x40,0x0F,0xC0,0x21,0x20,0x3F,0xA0,0x67,0xC0,0x49,0x40,0x71,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x6E7E, {0x41,0x00,0x21,0x00,0x1F,0xE0,0x8A,0xC0,0x54,0xA0,0x0F,0x80,0x20,0x80,0x2F,0x80,0x4F,0xC0,0x50,0x40,0x80,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x6E7F, {0x20,0x00,0x2F,0xC0,0x08,0x40,0x8F,0xC0,0x48,0x40,0x0F,0xC0,0x42,0x80,0x52,0xC0,0x4A,0xC0,0x42,0x80,0x9F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6E80, {0x45,0x00,0x3F,0xC0,0x25,0x00,0x9F,0xE0,0x42,0x00,0x3F,0xC0,0x62,0x40,0x6A,0xC0,0x6A,0xC0,0xAF,0xC0,0xA0,0x40,0xA0,0xC0,0x00,0x00,}}, +{ 0x6E82, {0x24,0x20,0x34,0xE0,0x1F,0xE0,0x4F,0xE0,0x3D,0xE0,0x15,0xE0,0x3F,0xE0,0x24,0xE0,0x2E,0xE0,0x4D,0x20,0x54,0x20,0x44,0x60,0x00,0x00,}}, +{ 0x6E8C, {0x4E,0x80,0x22,0x80,0x1D,0xA0,0x88,0xC0,0x5F,0xC0,0x25,0x20,0x05,0x00,0x7F,0xE0,0x45,0x00,0x49,0x20,0x91,0x20,0xA0,0xE0,0x00,0x00,}}, +{ 0x6E8F, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x97,0xC0,0x53,0x40,0x1F,0xE0,0x71,0x40,0x57,0xC0,0x57,0xC0,0x97,0xC0,0xA7,0xC0,0xA4,0x40,0x00,0x00,}}, +{ 0x6E90, {0x20,0x00,0x2F,0xE0,0x09,0x00,0x8B,0xC0,0x4A,0x40,0x0B,0xC0,0x2A,0x40,0x2B,0xC0,0x48,0x80,0x52,0xA0,0xA4,0xA0,0x80,0x80,0x00,0x00,}}, +{ 0x6E96, {0x25,0x00,0x25,0x00,0x8F,0xC0,0x5F,0x80,0x19,0x00,0x2F,0x80,0x49,0x00,0x4F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x6E98, {0x21,0x00,0x23,0x00,0x0F,0xC0,0x9F,0xE0,0x43,0x80,0x04,0x80,0x3F,0xC0,0x20,0x40,0x6F,0xC0,0x4B,0xC0,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6E9C, {0x22,0x00,0x3D,0xE0,0x08,0x60,0x4B,0x60,0x2B,0xA0,0x1C,0xE0,0x31,0x00,0x2F,0xC0,0x29,0x40,0x4F,0xC0,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6E9D, {0x25,0x00,0x3F,0xC0,0x1F,0x80,0x85,0x00,0x7F,0xE0,0x02,0x00,0x2F,0x80,0x2A,0x80,0x4F,0x80,0x5F,0xE0,0x88,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6E9F, {0x20,0x00,0x2F,0xE0,0x1F,0xC0,0x87,0x80,0x47,0x80,0x04,0x80,0x27,0x80,0x33,0x00,0x7F,0xE0,0x42,0x00,0x44,0x40,0x58,0x40,0x00,0x00,}}, +{ 0x6EA2, {0x50,0x80,0x28,0x80,0x3F,0xE0,0x89,0x00,0x49,0x00,0x10,0x80,0x7F,0xC0,0x55,0xA0,0x55,0x80,0x55,0x80,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6EA5, {0x21,0x80,0x3F,0xE0,0x07,0xC0,0x8F,0xC0,0x4F,0xC0,0x09,0x40,0x2F,0xC0,0x29,0x40,0x6F,0xE0,0x4F,0xE0,0x42,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x6EAA, {0x20,0xC0,0x2F,0xC0,0x0A,0x60,0x99,0x20,0x46,0x80,0x02,0x80,0x21,0x80,0x2F,0xC0,0x6F,0xE0,0x4F,0xE0,0x44,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x6EAF, {0x31,0x00,0x39,0xE0,0x1F,0xE0,0x4F,0xE0,0x35,0xE0,0x15,0xE0,0x35,0xE0,0x3F,0xE0,0x25,0xA0,0x44,0xA0,0x49,0x20,0x52,0x60,0x00,0x00,}}, +{ 0x6EB2, {0x25,0x00,0x29,0xC0,0x09,0x40,0x89,0x40,0x4D,0xC0,0x09,0x40,0x21,0x00,0x2F,0xC0,0x64,0x80,0x43,0x00,0x47,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x6EB6, {0x21,0x00,0x21,0x00,0x0F,0xE0,0x94,0x40,0x45,0x40,0x09,0x40,0x22,0x80,0x44,0x40,0x4F,0xA0,0x84,0x80,0x87,0x80,0x84,0x80,0x00,0x00,}}, +{ 0x6EB7, {0x10,0x00,0x1F,0xE0,0x0F,0xE0,0x4F,0xE0,0x2B,0xE0,0x0D,0xE0,0x1A,0xE0,0x1D,0xE0,0x3E,0xE0,0x2F,0x20,0x2F,0xE0,0x28,0x20,0x00,0x00,}}, +{ 0x6EBA, {0x20,0x00,0x1F,0xE0,0x01,0x20,0x4F,0xE0,0x29,0x00,0x0F,0xE0,0x11,0x20,0x19,0xA0,0x27,0x60,0x2D,0xA0,0x41,0x20,0x46,0x40,0x00,0x00,}}, +{ 0x6EBD, {0x20,0x00,0x2F,0xE0,0x0F,0xC0,0x8F,0xC0,0x5F,0xE0,0x15,0xC0,0x27,0x80,0x3C,0xE0,0x6F,0xE0,0x4F,0xE0,0x42,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x6EC2, {0x21,0x00,0x23,0x00,0x0F,0xC0,0x86,0x80,0x5F,0xE0,0x11,0x40,0x21,0x00,0x3F,0xE0,0x61,0xC0,0x43,0xC0,0x44,0x40,0x58,0x80,0x00,0x00,}}, +{ 0x6EC4, {0x21,0x00,0x23,0x00,0x07,0x80,0x8F,0xC0,0x57,0xE0,0x04,0x80,0x27,0x80,0x27,0x80,0x6F,0xC0,0x5F,0xC0,0x77,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x6EC5, {0x21,0x00,0x21,0x40,0x01,0x20,0x9F,0xE0,0x5F,0x40,0x15,0x40,0x3D,0x40,0x36,0x80,0x54,0x80,0x5B,0xA0,0xB2,0x60,0xA0,0x20,0x00,0x00,}}, +{ 0x6EC9, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x8F,0xC0,0x4F,0xC0,0x09,0x40,0x25,0x40,0x37,0xC0,0x7F,0xE0,0x43,0x80,0x45,0xA0,0x58,0xE0,0x00,0x00,}}, +{ 0x6ECB, {0x24,0x80,0x22,0x80,0x1F,0xE0,0x84,0x80,0x44,0x80,0x05,0xA0,0x19,0xA0,0x4A,0xC0,0x46,0xC0,0x4A,0xC0,0xBF,0xE0,0x81,0x20,0x00,0x00,}}, +{ 0x6ECC, {0x49,0x80,0x69,0x80,0x09,0xE0,0x97,0xC0,0x75,0x80,0x77,0xE0,0x75,0x80,0x57,0xE0,0x55,0x80,0x97,0xC0,0x95,0xA0,0x91,0x80,0x00,0x00,}}, +{ 0x6ED1, {0x20,0x00,0x2F,0x80,0x0B,0x80,0x8B,0x80,0x5F,0xE0,0x10,0x20,0x3F,0xC0,0x28,0x80,0x4F,0x80,0x4F,0x80,0x88,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6ED3, {0x21,0x00,0x23,0x00,0x0F,0xE0,0x98,0x00,0x4F,0xC0,0x04,0x80,0x23,0x80,0x3F,0xE0,0x67,0xC0,0x47,0xC0,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6ED4, {0x20,0xC0,0x2F,0xC0,0x09,0x60,0x99,0xA0,0x42,0x00,0x0C,0xC0,0x28,0x40,0x28,0x40,0x6E,0xC0,0x48,0x40,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6ED5, {0x01,0x00,0x75,0xC0,0x5F,0xC0,0x5F,0xC0,0x7F,0xE0,0x55,0x80,0x59,0x40,0x77,0xA0,0x53,0x80,0x5F,0x80,0x51,0x40,0xB3,0x00,0x00,0x00,}}, +{ 0x6EDD, {0x42,0x00,0x22,0x00,0x1F,0xC0,0x85,0x00,0x7F,0xE0,0x00,0x00,0x2F,0x80,0x2A,0x80,0x4F,0x80,0x4F,0xA0,0x8A,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x6EDE, {0x45,0x40,0x25,0x40,0x1F,0xE0,0x87,0xC0,0x40,0x00,0x1F,0xE0,0x11,0x20,0x6F,0xC0,0x49,0x40,0x49,0x40,0x89,0xC0,0x81,0x00,0x00,0x00,}}, +{ 0x6EEC, {0x40,0x00,0x7F,0xE0,0x0F,0xC0,0x9F,0xC0,0x5F,0xC0,0x17,0x80,0x74,0x80,0x57,0xC0,0x5F,0xC0,0x9F,0xC0,0xA8,0x20,0xA7,0xE0,0x00,0x00,}}, +{ 0x6EEF, {0x55,0x80,0x77,0xC0,0x3F,0xE0,0x97,0xA0,0x70,0x60,0x3F,0xE0,0x62,0x40,0x5F,0x80,0x52,0x80,0x92,0x80,0x93,0x80,0x82,0x00,0x00,0x00,}}, +{ 0x6EF2, {0x21,0x00,0x22,0xC0,0x0F,0xC0,0x86,0xC0,0x4B,0xA0,0x1F,0xE0,0x23,0x80,0x3F,0xC0,0x77,0x60,0x46,0x40,0x43,0x80,0x4E,0x00,0x00,0x00,}}, +{ 0x6EF4, {0x42,0x00,0x22,0x00,0x3F,0xE0,0x85,0x00,0x5F,0xC0,0x12,0x40,0x5F,0xC0,0x52,0x40,0x57,0x40,0x57,0x40,0x95,0x40,0x90,0x40,0x00,0x00,}}, +{ 0x6EF7, {0x22,0x00,0x22,0x00,0x03,0xE0,0x9F,0xC0,0x53,0xC0,0x19,0xC0,0x35,0xC0,0x3B,0xC0,0x77,0x40,0x5F,0xC0,0x5F,0xC0,0x50,0x40,0x00,0x00,}}, +{ 0x6EF8, {0x41,0x80,0x7D,0x80,0x3F,0xE0,0x9F,0xE0,0x5E,0x80,0x00,0x80,0x7C,0x80,0x43,0xE0,0x5C,0x80,0x94,0x80,0x9C,0x80,0x94,0x80,0x00,0x00,}}, +{ 0x6EFE, {0x21,0x00,0x3F,0xE0,0x04,0x40,0x9F,0xE0,0x48,0x80,0x08,0x80,0x2F,0x80,0x23,0x40,0x7D,0xC0,0x7C,0x80,0x47,0x40,0x58,0x20,0x00,0x00,}}, +{ 0x6EFF, {0x49,0x80,0x7F,0xE0,0x0F,0x80,0x87,0x00,0x7F,0xC0,0x22,0x40,0x7B,0xC0,0x6B,0xC0,0x7F,0xC0,0xB6,0x40,0xA2,0x40,0xA2,0xC0,0x00,0x00,}}, +{ 0x6F01, {0x22,0x00,0x22,0x00,0x07,0x80,0x89,0x00,0x5F,0xC0,0x09,0x40,0x2F,0xC0,0x29,0x40,0x4F,0xC0,0x55,0x40,0x92,0xA0,0xA2,0xA0,0x00,0x00,}}, +{ 0x6F02, {0x40,0x00,0x3F,0xE0,0x04,0x80,0x8F,0xC0,0x4F,0xC0,0x00,0x00,0x2F,0xC0,0x20,0x00,0x5F,0xE0,0x49,0x40,0x91,0x40,0x83,0x00,0x00,0x00,}}, +{ 0x6F06, {0x41,0x00,0x21,0x00,0x0F,0xE0,0x87,0x80,0x59,0x60,0x03,0x00,0x2D,0xC0,0x39,0x60,0x47,0x80,0x47,0x80,0x99,0x60,0x83,0x00,0x00,0x00,}}, +{ 0x6F09, {0x42,0x00,0x22,0x00,0x1F,0xE0,0x95,0x00,0x5F,0xC0,0x15,0x40,0x3F,0xC0,0x35,0x00,0x57,0xC0,0x55,0x20,0xA7,0x20,0xB9,0xE0,0x00,0x00,}}, +{ 0x6F0F, {0x40,0x00,0x7F,0xC0,0x1F,0xC0,0x9F,0xC0,0x5F,0xE0,0x11,0x00,0x7F,0xC0,0x7F,0xC0,0x7B,0x40,0x6D,0x40,0xEB,0xC0,0x89,0xC0,0x00,0x00,}}, +{ 0x6F11, {0x48,0x00,0x6B,0xC0,0x3C,0x80,0xA5,0x80,0x7D,0x80,0x27,0xE0,0x7D,0x80,0x71,0x80,0x7D,0x80,0xBD,0xA0,0xB2,0xA0,0xA4,0x60,0x00,0x00,}}, +{ 0x6F13, {0x42,0x00,0x7F,0xE0,0x19,0x80,0x9F,0x80,0x55,0x80,0x1F,0x80,0x62,0x00,0x7F,0xC0,0x67,0x40,0xBF,0xC0,0xB0,0x40,0xA0,0xC0,0x00,0x00,}}, +{ 0x6F14, {0x41,0x00,0x3F,0xE0,0x17,0xA0,0x91,0x20,0x4F,0xC0,0x09,0x40,0x2F,0xC0,0x29,0x40,0x4F,0xC0,0x42,0x80,0x8C,0x40,0xB0,0x20,0x00,0x00,}}, +{ 0x6F15, {0x23,0x80,0x3F,0xE0,0x07,0xC0,0x8F,0xC0,0x4F,0xC0,0x0B,0xC0,0x2F,0xC0,0x27,0x80,0x27,0x80,0x67,0x80,0x47,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x6F20, {0x45,0x00,0x5F,0xE0,0x25,0x00,0x8F,0x80,0x48,0x80,0x0F,0x80,0x28,0x80,0x2F,0x80,0x42,0x00,0x5F,0xE0,0x8D,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x6F22, {0x44,0x80,0x24,0x80,0x1F,0xE0,0x8F,0xC0,0x49,0x40,0x0F,0xC0,0x21,0x00,0x2F,0xC0,0x41,0x00,0x4F,0xE0,0x84,0x80,0x98,0x60,0x00,0x00,}}, +{ 0x6F23, {0x40,0x80,0x37,0xE0,0x08,0x80,0x83,0xC0,0x42,0xC0,0x3B,0xC0,0x6B,0xC0,0x48,0x80,0x4F,0xE0,0x88,0x80,0x96,0x80,0xA1,0xE0,0x00,0x00,}}, +{ 0x6F2B, {0x20,0x00,0x2F,0x80,0x0F,0x80,0x88,0x80,0x4F,0x80,0x1F,0xC0,0x75,0xC0,0x5F,0xC0,0x4F,0x80,0x85,0x00,0x87,0x00,0xB8,0xE0,0x00,0x00,}}, +{ 0x6F2C, {0x41,0x00,0x2F,0xC0,0x01,0x00,0x87,0x80,0x5F,0xE0,0x07,0x80,0x24,0x80,0x27,0x80,0x44,0x80,0x47,0x80,0x87,0x80,0x98,0x40,0x00,0x00,}}, +{ 0x6F31, {0x49,0x80,0x69,0x80,0x3F,0x80,0x9F,0xE0,0x7B,0xA0,0x2B,0xC0,0x7F,0x80,0x4D,0x80,0x5B,0x80,0x9B,0x80,0xAA,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x6F32, {0x40,0x00,0x7B,0xC0,0x0B,0x80,0x9B,0x80,0x73,0x80,0x22,0x00,0x7F,0xE0,0x6B,0xC0,0x4A,0xC0,0x8A,0x80,0x8B,0x40,0xB6,0x20,0x00,0x00,}}, +{ 0x6F38, {0x48,0x40,0x28,0x40,0x3F,0x80,0x9F,0x00,0x6B,0xE0,0x3F,0x40,0x2B,0x40,0x7F,0x40,0x49,0x40,0x5F,0x40,0x89,0x40,0x8A,0x40,0x00,0x00,}}, +{ 0x6F3E, {0x24,0x80,0x3F,0xE0,0x07,0xC0,0x87,0xC0,0x5F,0xE0,0x0F,0x80,0x27,0x00,0x33,0xC0,0x7F,0xC0,0x47,0x40,0x59,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x6F3F, {0x51,0x00,0x53,0xC0,0x7F,0x80,0xFF,0x80,0x77,0xE0,0x52,0x80,0x94,0x80,0x04,0x40,0xFF,0x80,0x35,0x80,0xC4,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x6F41, {0x40,0x00,0x4F,0xE0,0x71,0x00,0x4B,0xC0,0x7A,0x40,0x23,0xC0,0x2A,0x40,0xFB,0xC0,0x73,0xC0,0x7B,0xC0,0xA6,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x6F45, {0x44,0x00,0x27,0xC0,0x0A,0x00,0x9F,0xE0,0x54,0x80,0x2F,0xE0,0x09,0x00,0x5F,0xC0,0x4F,0xC0,0x89,0x00,0x8F,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x6F54, {0x24,0x00,0x3F,0xE0,0x1E,0xA0,0x46,0xA0,0x2F,0x60,0x15,0x00,0x2A,0x80,0x2F,0x60,0x3F,0xE0,0x27,0x80,0x5D,0x60,0x41,0x00,0x00,0x00,}}, +{ 0x6F58, {0x20,0xC0,0x2F,0x40,0x09,0x40,0x9F,0xE0,0x43,0x80,0x05,0x80,0x39,0x60,0x2F,0xC0,0x6F,0xC0,0x4F,0xC0,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6F5B, {0x48,0x80,0x7F,0xE0,0x29,0x80,0xBF,0xE0,0x5B,0xC0,0x1D,0xA0,0x69,0x60,0x4F,0x80,0x4F,0x80,0x8F,0x80,0x8F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6F5C, {0x24,0x80,0x34,0x80,0x1F,0xC0,0x9F,0xE0,0x4D,0x80,0x0B,0x40,0x32,0x20,0x2F,0x80,0x48,0x80,0x4F,0x80,0x8F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6F5F, {0x22,0x00,0x2C,0xC0,0x08,0x40,0x8F,0xC0,0x4F,0xC0,0x04,0x00,0x4F,0xE0,0x58,0x20,0x4D,0x60,0x9A,0xA0,0xA4,0x20,0x80,0xC0,0x00,0x00,}}, +{ 0x6F64, {0x20,0x00,0x3E,0xE0,0x1E,0xE0,0x5E,0xE0,0x3E,0xE0,0x10,0x20,0x17,0xA0,0x31,0x20,0x37,0xA0,0x37,0xA0,0x50,0x20,0x50,0x60,0x00,0x00,}}, +{ 0x6F66, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x8C,0xC0,0x4F,0xC0,0x34,0xA0,0x27,0x80,0x24,0x80,0x67,0x80,0x49,0x40,0x51,0x40,0x43,0x00,0x00,0x00,}}, +{ 0x6F6D, {0x20,0x00,0x3F,0xE0,0x07,0xC0,0x8F,0xC0,0x4F,0xC0,0x07,0x80,0x24,0x80,0x27,0x80,0x67,0x80,0x5F,0xE0,0x43,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6F6E, {0x24,0x00,0x34,0xE0,0x1F,0xA0,0x4E,0xA0,0x3A,0xE0,0x0E,0xA0,0x2A,0xA0,0x2E,0xE0,0x24,0xA0,0x5F,0xA0,0x45,0x20,0x46,0x60,0x00,0x00,}}, +{ 0x6F6F, {0x20,0x00,0x2F,0x80,0x1F,0xE0,0x8F,0xE0,0x4F,0x80,0x1F,0xC0,0x25,0xC0,0x36,0xC0,0x7F,0xE0,0x4F,0xE0,0x42,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x6F70, {0x42,0x00,0x2F,0x80,0x0F,0x80,0x82,0x00,0x7F,0xE0,0x0F,0x80,0x28,0x80,0x2F,0x80,0x4F,0x80,0x4F,0x80,0x8C,0x80,0xB0,0x40,0x00,0x00,}}, +{ 0x6F74, {0x49,0x00,0x6B,0x00,0x3F,0xC0,0x91,0x40,0x7F,0xE0,0x09,0x80,0x7A,0x40,0x7F,0xC0,0x6B,0xC0,0x8B,0xC0,0x8B,0xC0,0xB2,0x40,0x00,0x00,}}, +{ 0x6F78, {0x48,0x80,0x68,0xC0,0x3F,0xE0,0x8A,0xC0,0x6B,0xE0,0x2A,0xA0,0x6F,0x80,0x48,0x80,0x4F,0x80,0x8F,0x80,0x90,0x80,0xA0,0x80,0x00,0x00,}}, +{ 0x6F7A, {0x40,0x00,0x7F,0xC0,0x1F,0xC0,0x9F,0xC0,0x53,0x80,0x1F,0xE0,0x71,0x00,0x5F,0xC0,0x56,0x40,0xBF,0xE0,0xA4,0xC0,0x8C,0x80,0x00,0x00,}}, +{ 0x6F7C, {0x21,0x00,0x2F,0xC0,0x1F,0xE0,0x8F,0xE0,0x4B,0x40,0x0F,0xC0,0x29,0x40,0x2F,0xC0,0x67,0xC0,0x47,0xC0,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x6F80, {0x40,0x00,0x7F,0xC0,0x2B,0xC0,0x9B,0xC0,0x53,0x40,0x2F,0x80,0x68,0x80,0x6F,0xE0,0x69,0x80,0xAD,0x80,0xBB,0xE0,0xA0,0x00,0x00,0x00,}}, +{ 0x6F81, {0x41,0x00,0x69,0x00,0x09,0xC0,0x89,0x00,0x7F,0xE0,0x08,0x80,0x69,0x80,0x6F,0xE0,0x69,0x80,0xAD,0x80,0xBB,0xE0,0xA0,0x00,0x00,0x00,}}, +{ 0x6F82, {0x49,0x80,0x6B,0x80,0x2B,0x80,0xBF,0xE0,0x43,0x40,0x3F,0x40,0x63,0xC0,0x7E,0x80,0x5C,0x80,0x9C,0xC0,0x8F,0x40,0xB2,0x20,0x00,0x00,}}, +{ 0x6F84, {0x4E,0x80,0x22,0x80,0x1D,0xA0,0x8F,0xC0,0x50,0x40,0x2F,0xA0,0x08,0x80,0x4F,0x80,0x48,0x80,0x45,0x00,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6F86, {0x21,0x00,0x2F,0xC0,0x1F,0xE0,0x8F,0xE0,0x5E,0xE0,0x04,0x80,0x26,0xE0,0x38,0x00,0x7F,0xE0,0x43,0xA0,0x45,0xA0,0x58,0xE0,0x00,0x00,}}, +{ 0x6F8E, {0x24,0x80,0x34,0x80,0x1F,0x80,0x9F,0x40,0x40,0xC0,0x1F,0x80,0x31,0x20,0x3F,0x20,0x7A,0x40,0x4A,0x40,0x4D,0x80,0x71,0x00,0x00,0x00,}}, +{ 0x6F91, {0x20,0x00,0x3F,0xE0,0x07,0xC0,0x8F,0xC0,0x4B,0xC0,0x0F,0xC0,0x23,0x80,0x2F,0xC0,0x6F,0xC0,0x4F,0xC0,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x6F97, {0x00,0x00,0x2E,0xE0,0x1A,0xA0,0x4E,0xE0,0x2E,0xE0,0x18,0x20,0x0B,0xA0,0x2A,0xA0,0x2B,0xA0,0x2B,0xA0,0x4A,0xA0,0x48,0x60,0x00,0x00,}}, +{ 0x6FA1, {0x20,0x00,0x27,0x80,0x07,0x80,0x87,0x80,0x5E,0xE0,0x13,0xA0,0x3F,0xE0,0x33,0x00,0x7F,0xE0,0x47,0x80,0x59,0x60,0x41,0x00,0x00,0x00,}}, +{ 0x6FA3, {0x49,0x80,0x69,0x80,0x3F,0x80,0x9D,0x40,0x77,0xE0,0x3D,0x80,0x65,0x80,0x7F,0xE0,0x7D,0x80,0xFD,0x80,0x89,0x80,0x89,0x80,0x00,0x00,}}, +{ 0x6FA4, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x87,0xC0,0x4F,0xC0,0x01,0x00,0x3F,0xE0,0x34,0xC0,0x7F,0xE0,0x4F,0xC0,0x43,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x6FAA, {0x20,0x00,0x2F,0xC0,0x07,0xE0,0x8F,0xE0,0x5D,0xC0,0x0D,0xC0,0x23,0x80,0x3F,0xC0,0x7F,0xE0,0x47,0xC0,0x41,0xC0,0x41,0x00,0x00,0x00,}}, +{ 0x6FB1, {0x40,0x00,0x7F,0xC0,0x23,0xC0,0xBF,0xC0,0xFB,0xE0,0x6B,0x20,0x3F,0xE0,0x6B,0xC0,0x7F,0xC0,0x7F,0x80,0xF3,0x40,0xA2,0x20,0x00,0x00,}}, +{ 0x6FB3, {0x21,0x00,0x22,0x00,0x0F,0xC0,0x8F,0xC0,0x4B,0xC0,0x0F,0xC0,0x2B,0xC0,0x2D,0xC0,0x6F,0xE0,0x4F,0xE0,0x47,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x6FB9, {0x42,0x00,0x6F,0x80,0x3F,0xE0,0x9F,0xE0,0x5C,0xE0,0x13,0x80,0x7F,0xE0,0x53,0x80,0x57,0xC0,0x97,0xC0,0xA7,0xC0,0xA4,0x40,0x00,0x00,}}, +{ 0x6FC0, {0x45,0x00,0x29,0x00,0x1F,0x00,0x9F,0xE0,0x53,0x40,0x1F,0x40,0x29,0x40,0x3F,0x80,0x48,0x80,0x5E,0xC0,0x93,0x40,0xA6,0x20,0x00,0x00,}}, +{ 0x6FC1, {0x20,0x00,0x3F,0xC0,0x0F,0xC0,0x47,0xC0,0x27,0xE0,0x0A,0x20,0x3F,0xA0,0x3B,0xA0,0x2F,0xA0,0x23,0xA0,0x5C,0xE0,0x40,0xC0,0x00,0x00,}}, +{ 0x6FC2, {0x41,0x00,0x7F,0xE0,0x1F,0xE0,0x9F,0xE0,0x5F,0xC0,0x13,0xC0,0x7F,0xE0,0x53,0xC0,0x5F,0xC0,0x9F,0xC0,0xB3,0xA0,0xA3,0x80,0x00,0x00,}}, +{ 0x6FC3, {0x22,0x80,0x2F,0xC0,0x0A,0xC0,0x8F,0xC0,0x4A,0xC0,0x1F,0xE0,0x17,0x80,0x50,0x00,0x5F,0xE0,0x55,0xC0,0xA7,0x80,0xAC,0x60,0x00,0x00,}}, +{ 0x6FC6, {0x21,0x00,0x2F,0xC0,0x1F,0xE0,0x8F,0xE0,0xCF,0xC0,0x48,0x40,0x2F,0xC0,0x28,0x40,0x6F,0xC0,0x4F,0xC0,0x46,0xC0,0x78,0x20,0x00,0x00,}}, +{ 0x6FD4, {0x40,0x00,0x7F,0xE0,0x3A,0xC0,0xBF,0xC0,0x76,0xC0,0x3B,0xC0,0x6F,0xC0,0x73,0xC0,0x7F,0xC0,0xBF,0xC0,0xB3,0xC0,0xA2,0xC0,0x00,0x00,}}, +{ 0x6FD5, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x8F,0xC0,0x4F,0xC0,0x04,0x80,0x3B,0xC0,0x2D,0xC0,0x6F,0xE0,0x4F,0xE0,0x53,0x20,0x63,0xA0,0x00,0x00,}}, +{ 0x6FD8, {0x21,0x00,0x2F,0xE0,0x1F,0x40,0x8E,0xE0,0x53,0xA0,0x0F,0xC0,0x2B,0xC0,0x3F,0xE0,0x67,0xC0,0x47,0xC0,0x41,0x00,0x43,0x00,0x00,0x00,}}, +{ 0x6FDB, {0x24,0x80,0x3F,0xE0,0x07,0xE0,0x8F,0xE0,0x50,0x00,0x1F,0xE0,0x23,0x40,0x3F,0xC0,0x67,0x80,0x47,0xC0,0x4D,0xA0,0x43,0x00,0x00,0x00,}}, +{ 0x6FDF, {0x42,0x00,0x7F,0xE0,0x3F,0xC0,0x9F,0xC0,0x57,0xC0,0x1F,0xC0,0x68,0xA0,0x4F,0x80,0x4F,0x80,0x8F,0x80,0x90,0x80,0xA0,0x80,0x00,0x00,}}, +{ 0x6FE0, {0x21,0x00,0x3F,0xE0,0x07,0x80,0x87,0x80,0x5F,0xE0,0x10,0x40,0x3F,0xC0,0x63,0x40,0x5F,0x80,0x47,0xC0,0x99,0xA0,0x83,0x00,0x00,0x00,}}, +{ 0x6FE1, {0x20,0x00,0x2F,0xC0,0x1F,0xE0,0x9F,0xE0,0x4D,0xC0,0x01,0x00,0x3F,0xE0,0x22,0x00,0x6F,0xC0,0x4A,0xC0,0x4A,0xC0,0x4A,0xC0,0x00,0x00,}}, +{ 0x6FE4, {0x42,0x00,0x7F,0xC0,0x07,0x80,0x9F,0xE0,0x4F,0xC0,0x02,0x00,0x6F,0x80,0x7F,0xE0,0x4F,0xE0,0x9F,0xE0,0x9D,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x6FEB, {0x40,0x80,0x3F,0x80,0x1C,0xE0,0x93,0x00,0x5E,0x00,0x14,0xC0,0x5F,0x00,0x40,0x00,0x5F,0xC0,0x95,0x40,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x6FEC, {0x21,0x00,0x23,0xC0,0x0F,0xE0,0x9F,0xC0,0x45,0x40,0x0B,0x40,0x27,0x80,0x3C,0xE0,0x67,0x80,0x47,0x80,0x47,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x6FEE, {0x49,0x80,0x6F,0xE0,0x0F,0xE0,0x9F,0xE0,0x73,0xC0,0x17,0xE0,0x71,0x80,0x53,0xC0,0x57,0xE0,0x97,0xE0,0x91,0x80,0x96,0x60,0x00,0x00,}}, +{ 0x6FEF, {0x40,0x00,0x7F,0xC0,0x0F,0xC0,0x8F,0xC0,0x5F,0xC0,0x09,0x80,0x6F,0xC0,0x7B,0x00,0x6F,0x80,0x4F,0x80,0x8F,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x6FF1, {0x21,0x00,0x2F,0xE0,0x1F,0xC0,0x8F,0xC0,0x53,0xA0,0x07,0xC0,0x3C,0x40,0x27,0xC0,0x67,0xC0,0x47,0xC0,0x46,0xC0,0x58,0x20,0x00,0x00,}}, +{ 0x6FF3, {0x59,0x80,0x79,0xC0,0x3F,0xE0,0xFF,0xE0,0x55,0xC0,0x17,0xA0,0x75,0x60,0x6F,0x80,0x4F,0x80,0x8F,0x80,0x8F,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x6FF6, {0x20,0x00,0x3E,0xE0,0x1E,0xE0,0x5E,0xE0,0x3E,0xE0,0x10,0xE0,0x37,0x20,0x3F,0xE0,0x33,0xA0,0x57,0xE0,0x57,0xE0,0x54,0xE0,0x00,0x00,}}, +{ 0x6FFA, {0x41,0x80,0x7D,0x40,0x27,0xE0,0xBF,0xC0,0x75,0xE0,0x27,0x60,0x7D,0xA0,0x67,0xE0,0x7F,0xC0,0x98,0xE0,0xB5,0xE0,0xA6,0x20,0x00,0x00,}}, +{ 0x6FFE, {0x41,0x00,0x63,0xC0,0x1F,0xE0,0x9F,0x40,0x53,0xC0,0x17,0x80,0x75,0x80,0x57,0x80,0x57,0xC0,0x9F,0xE0,0xAA,0xA0,0xB1,0x80,0x00,0x00,}}, +{ 0x7001, {0x24,0x80,0x3F,0xE0,0x07,0x80,0x9F,0xE0,0x44,0xC0,0x0B,0xC0,0x37,0xA0,0x24,0x80,0x67,0xC0,0x47,0xC0,0x47,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x7009, {0x21,0x00,0x2F,0xE0,0x1E,0xC0,0x88,0xC0,0x4E,0xC0,0x08,0x40,0x2F,0xC0,0x22,0x00,0x7F,0xE0,0x7F,0xA0,0x54,0x20,0x50,0xC0,0x00,0x00,}}, +{ 0x700B, {0x21,0x00,0x2F,0xE0,0x1F,0x40,0x8F,0x40,0x5F,0xE0,0x03,0x80,0x2D,0xC0,0x3F,0xE0,0x6F,0xC0,0x4F,0xC0,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x700F, {0x24,0x20,0x3F,0xA0,0x1E,0xE0,0x7F,0xE0,0x24,0xE0,0x0A,0xE0,0x3F,0xE0,0x34,0xE0,0x3F,0xE0,0x4E,0x20,0x47,0x20,0x5C,0x60,0x00,0x00,}}, +{ 0x7011, {0x40,0x00,0x7F,0x80,0x1F,0x80,0x9F,0x80,0x5F,0x80,0x3F,0xC0,0x69,0x80,0x7F,0xE0,0x7F,0xE0,0xEF,0xE0,0xB2,0x40,0x86,0x00,0x00,0x00,}}, +{ 0x7015, {0x48,0x00,0x2B,0xE0,0x2C,0x80,0x89,0xC0,0x7F,0x40,0x0D,0xC0,0x5B,0x40,0x5B,0xC0,0x6D,0x40,0x89,0xC0,0x91,0x40,0xA6,0x20,0x00,0x00,}}, +{ 0x7018, {0x41,0x00,0x63,0xC0,0x1F,0xE0,0x9F,0xC0,0x57,0xC0,0x15,0x80,0x77,0x80,0x57,0x80,0x5F,0xC0,0x9F,0xC0,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x701A, {0x51,0x80,0x71,0x80,0x3D,0x80,0x9A,0x40,0x7C,0x20,0x3F,0xC0,0x69,0x40,0x7B,0xC0,0x7F,0xC0,0xFF,0xC0,0x91,0x40,0x93,0xC0,0x00,0x00,}}, +{ 0x701B, {0x42,0x00,0x7F,0xE0,0x0F,0xC0,0x9F,0xC0,0x50,0x80,0x1F,0x80,0x7B,0xC0,0x7F,0xC0,0x7D,0xC0,0xBF,0xE0,0xBB,0xE0,0xBD,0x20,0x00,0x00,}}, +{ 0x701D, {0x40,0x00,0x7F,0xE0,0x17,0xC0,0x9F,0xE0,0x57,0xC0,0x1B,0xA0,0x71,0x00,0x55,0x00,0x55,0xC0,0x95,0x00,0xBF,0xE0,0xA0,0x00,0x00,0x00,}}, +{ 0x701E, {0x49,0x80,0x7D,0x80,0x3E,0xC0,0x88,0x80,0x7F,0xC0,0x00,0xC0,0x5F,0xE0,0x54,0xC0,0x5F,0xC0,0x9C,0x80,0x94,0x80,0x95,0x80,0x00,0x00,}}, +{ 0x701F, {0x49,0x80,0x7F,0xE0,0x0F,0x80,0x8F,0x80,0x7F,0xE0,0x1F,0x80,0x6B,0xC0,0x7B,0xC0,0x7F,0xC0,0xBA,0xC0,0xBB,0xC0,0xAB,0xC0,0x00,0x00,}}, +{ 0x7026, {0x41,0x80,0x7D,0x80,0x0B,0xC0,0x9B,0xC0,0x7B,0xE0,0x0D,0x80,0x7D,0xC0,0x6F,0x40,0x4B,0xC0,0xFB,0x40,0x89,0xC0,0xB1,0x40,0x00,0x00,}}, +{ 0x7027, {0x49,0x00,0x4B,0xC0,0x3F,0x00,0x95,0xC0,0x7F,0xC0,0x01,0x00,0x1D,0xC0,0x55,0x00,0x5D,0xC0,0x5D,0xC0,0x95,0x20,0xAD,0xE0,0x00,0x00,}}, +{ 0x702C, {0x48,0x00,0x4B,0xE0,0x3F,0x00,0x89,0xC0,0x7F,0x40,0x2B,0xC0,0x3F,0x40,0x69,0xC0,0x5D,0x40,0x5B,0xC0,0xA9,0x20,0x8A,0x20,0x00,0x00,}}, +{ 0x7030, {0x40,0x00,0x7F,0xE0,0x0F,0xE0,0x9F,0xE0,0x77,0xE0,0x27,0xE0,0x7D,0xE0,0x6F,0xE0,0x4F,0xE0,0x8F,0xE0,0x8F,0xE0,0xB5,0xE0,0x00,0x00,}}, +{ 0x7032, {0x49,0x80,0x69,0x80,0x0D,0x80,0x9F,0xE0,0x73,0x40,0x3F,0x40,0x6D,0xC0,0x7F,0xC0,0x5E,0x80,0x92,0xC0,0xBF,0xC0,0xA9,0x20,0x00,0x00,}}, +{ 0x703E, {0x20,0x00,0x3E,0xE0,0x1E,0xE0,0x5E,0xE0,0x3F,0xE0,0x1F,0xE0,0x37,0xE0,0x37,0xE0,0x37,0xE0,0x53,0xA0,0x5D,0xE0,0x51,0x60,0x00,0x00,}}, +{ 0x704C, {0x23,0x80,0x3F,0xE0,0x07,0xC0,0x8F,0xC0,0x4F,0xC0,0x05,0x80,0x6F,0xE0,0x7B,0x00,0x6F,0xC0,0x4F,0xC0,0x8F,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x7051, {0x40,0x00,0x7D,0xE0,0x39,0xC0,0xBF,0xC0,0x7F,0xE0,0x25,0x00,0x7F,0xC0,0x77,0x40,0x7F,0xC0,0xAF,0xC0,0xAF,0x20,0xF1,0xE0,0x00,0x00,}}, +{ 0x7058, {0x54,0xA0,0x7E,0xA0,0x35,0x40,0x9F,0xE0,0x7B,0x40,0x3F,0xE0,0x69,0x40,0x7F,0x40,0x49,0xE0,0x9F,0x40,0x93,0xE0,0xA1,0x00,0x00,0x00,}}, +{ 0x7063, {0x53,0x40,0x7F,0xE0,0x3A,0x60,0x9B,0x60,0x57,0xC0,0x3D,0xE0,0x77,0xE0,0x5F,0x80,0x4F,0x80,0x9F,0xC0,0xB0,0x40,0x83,0x80,0x00,0x00,}}, +{ 0x706B, {0x04,0x00,0x04,0x00,0x04,0x40,0x24,0x40,0x24,0x80,0x46,0x00,0x4A,0x00,0x09,0x00,0x11,0x00,0x10,0x80,0x20,0x40,0xC0,0x20,0x00,0x00,}}, +{ 0x706F, {0x20,0x00,0x27,0xE0,0x20,0x80,0x28,0x80,0x70,0x80,0x60,0x80,0xA0,0x80,0x30,0x80,0x28,0x80,0x48,0x80,0x40,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x7070, {0x00,0x00,0x3F,0xE0,0x20,0x00,0x22,0x40,0x2A,0x40,0x2A,0x80,0x32,0x00,0x22,0x00,0x45,0x00,0x49,0x00,0x90,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x7078, {0x04,0x00,0x0F,0x00,0x72,0x00,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x80,0x24,0x80,0x4A,0x00,0x09,0x00,0x30,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x707C, {0x11,0x00,0x11,0x00,0x11,0xE0,0x15,0x20,0x3A,0x20,0x33,0x20,0x54,0xA0,0x10,0xA0,0x18,0x20,0x24,0x20,0x24,0x20,0x40,0x40,0x00,0x00,}}, +{ 0x707D, {0x22,0x40,0x22,0x40,0x44,0x80,0x44,0x80,0x22,0x40,0x04,0x00,0x04,0x40,0x24,0x40,0x4A,0x00,0x09,0x00,0x30,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7089, {0x20,0x00,0x27,0xE0,0x20,0x00,0x2B,0xC0,0x72,0x40,0x62,0x40,0xA3,0xC0,0x22,0x40,0x32,0x00,0x4A,0x00,0x44,0x00,0x88,0x00,0x00,0x00,}}, +{ 0x708A, {0x21,0x00,0x21,0x00,0x21,0x00,0x2B,0xE0,0x72,0xC0,0x64,0x80,0xA0,0x80,0x31,0x00,0x29,0x00,0x4A,0x80,0x44,0x40,0x88,0x20,0x00,0x00,}}, +{ 0x708E, {0x04,0x80,0x24,0x80,0x24,0x00,0x0E,0x00,0x11,0x80,0x64,0x40,0x24,0x80,0x24,0x80,0x45,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7092, {0x21,0x80,0x21,0x80,0x21,0x80,0x2B,0xC0,0x73,0xC0,0x63,0xA0,0xA5,0xE0,0x31,0xC0,0x38,0x80,0x69,0x00,0x46,0x00,0x98,0x00,0x00,0x00,}}, +{ 0x7099, {0x04,0x00,0x0F,0xC0,0x74,0x80,0x4B,0x00,0x1C,0x00,0xE4,0x40,0x24,0x40,0x24,0x80,0x44,0x00,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x70AC, {0x20,0x00,0x27,0xE0,0x24,0x00,0x2F,0xC0,0x74,0x40,0x64,0x40,0xA4,0x40,0x37,0xC0,0x3C,0x40,0x6C,0x00,0x47,0xE0,0x84,0x00,0x00,0x00,}}, +{ 0x70AD, {0x04,0x00,0x24,0x80,0x3F,0x80,0x00,0x00,0x3F,0xE0,0x22,0x00,0x22,0x40,0x32,0x40,0x55,0x00,0x49,0x00,0x90,0x80,0x20,0x60,0x00,0x00,}}, +{ 0x70AE, {0x22,0x00,0x22,0x00,0x2B,0xC0,0x3F,0xC0,0x77,0x40,0x6D,0xC0,0xA5,0xC0,0x37,0xC0,0x3C,0x80,0x6C,0x20,0x44,0x20,0x83,0xE0,0x00,0x00,}}, +{ 0x70AF, {0x30,0x00,0x37,0xE0,0x34,0x20,0x3D,0xA0,0x3D,0xE0,0x35,0xE0,0x75,0xE0,0x35,0xE0,0x3D,0xE0,0x2C,0x20,0x24,0x20,0x44,0x60,0x00,0x00,}}, +{ 0x70B3, {0x20,0x00,0x2F,0xE0,0x21,0x00,0x2F,0xC0,0x77,0x40,0x65,0x40,0xA5,0xC0,0x36,0xC0,0x3E,0x40,0x6C,0x40,0x44,0x40,0x84,0xC0,0x00,0x00,}}, +{ 0x70B8, {0x22,0x00,0x22,0x00,0x2B,0xE0,0x3F,0xE0,0x75,0x00,0x69,0xC0,0xA1,0x00,0x31,0x00,0x39,0xC0,0x69,0x00,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x70B9, {0x04,0x00,0x04,0x00,0x07,0xC0,0x04,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x12,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x70BA, {0x24,0x00,0x14,0x00,0x7F,0x80,0x08,0x80,0x09,0x00,0x1F,0x80,0x10,0x80,0x3F,0xE0,0x30,0x20,0x6A,0xA0,0xAA,0xA0,0x20,0xC0,0x00,0x00,}}, +{ 0x70C8, {0x00,0x40,0xFE,0x40,0x11,0x40,0x3D,0x40,0x65,0x40,0x19,0x40,0x11,0x40,0x20,0x40,0xC0,0xC0,0x4A,0x40,0x49,0x20,0x80,0x20,0x00,0x00,}}, +{ 0x70CB, {0x21,0x00,0x21,0x00,0x6F,0xE0,0x6F,0xE0,0xE3,0x80,0x65,0x80,0x69,0x40,0x71,0x20,0x00,0x00,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x70CF, {0x04,0x00,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x55,0x40,0x54,0x40,0x80,0x80,0x00,0x00,}}, +{ 0x70D9, {0x21,0x00,0x21,0x00,0x23,0xC0,0x2A,0x40,0x77,0x80,0x61,0x80,0xA3,0xC0,0x3F,0xE0,0x3A,0x40,0x6A,0x40,0x43,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x70DD, {0x00,0x00,0x3F,0x00,0x06,0x00,0x7E,0x40,0x15,0xC0,0x25,0x80,0x44,0x80,0xCC,0x60,0x3F,0x80,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x70DF, {0x10,0x00,0x13,0xE0,0x12,0xA0,0x16,0xA0,0x3B,0xE0,0x32,0xA0,0x52,0xA0,0x1B,0xE0,0x1F,0x60,0x36,0x20,0x23,0xE0,0x42,0x20,0x00,0x00,}}, +{ 0x70F1, {0x30,0x00,0x37,0xE0,0x35,0xE0,0x3D,0xE0,0x3E,0xE0,0x34,0x60,0x75,0xE0,0x35,0xE0,0x3D,0xE0,0x2D,0xE0,0x24,0x20,0x44,0x60,0x00,0x00,}}, +{ 0x70F9, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x7F,0xC0,0x01,0x00,0x06,0x00,0x04,0x00,0x1E,0x00,0x4B,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x70FD, {0x21,0x00,0x23,0x00,0x2F,0xC0,0x3F,0x80,0x73,0x80,0x7D,0x60,0xAF,0xC0,0x33,0x00,0x3F,0x80,0x6F,0xC0,0x43,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x7109, {0x00,0x00,0x7F,0xC0,0x07,0x80,0x27,0x80,0xFF,0xE0,0x20,0x00,0x3F,0x80,0x30,0x00,0x3F,0xC0,0x7D,0x40,0x50,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x7114, {0x10,0x80,0x10,0x80,0x15,0xE0,0x16,0x20,0x38,0x40,0x32,0xE0,0x52,0xA0,0x1A,0xA0,0x16,0xE0,0x26,0xA0,0x22,0xE0,0x42,0xA0,0x00,0x00,}}, +{ 0x7119, {0x21,0x00,0x23,0x00,0x2F,0xC0,0x2E,0x80,0x72,0x80,0x6F,0xE0,0xA0,0x00,0x37,0xC0,0x3C,0x40,0x6C,0x40,0x47,0xC0,0x84,0x40,0x00,0x00,}}, +{ 0x711A, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x7B,0x80,0x65,0x40,0xA1,0x20,0x04,0x80,0x24,0x80,0x24,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x711C, {0x20,0x00,0x27,0xC0,0x24,0x40,0x2F,0xC0,0x74,0x40,0x67,0xC0,0xA5,0x80,0x35,0xA0,0x3F,0xC0,0x6D,0xA0,0x47,0xA0,0x9C,0xE0,0x00,0x00,}}, +{ 0x7121, {0x20,0x00,0x20,0x00,0x7F,0xC0,0x6A,0x80,0xFF,0xC0,0x2A,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x12,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7126, {0x11,0x00,0x12,0x00,0x3F,0xC0,0x22,0x00,0x7F,0x80,0xA2,0x00,0x3F,0x80,0x22,0x00,0x3F,0xE0,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7136, {0x21,0x00,0x31,0x80,0x39,0x40,0x6F,0xE0,0x59,0x00,0xA9,0x00,0x32,0x80,0x64,0x40,0xC0,0x20,0x6A,0x40,0x49,0x20,0x80,0x20,0x00,0x00,}}, +{ 0x713C, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x3B,0x80,0x7F,0xC0,0x62,0x80,0xA2,0x80,0x3F,0xE0,0x22,0x80,0x54,0xA0,0x48,0xA0,0x90,0xE0,0x00,0x00,}}, +{ 0x7149, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x3F,0xC0,0x79,0x40,0x6F,0xC0,0xA9,0x40,0x2F,0xC0,0x23,0x80,0x55,0x40,0x59,0x20,0x81,0x00,0x00,0x00,}}, +{ 0x714C, {0x21,0x00,0x23,0x00,0x27,0xC0,0x2F,0xC0,0x74,0x40,0x67,0xC0,0xA0,0x00,0x2F,0xE0,0x37,0xC0,0x77,0xC0,0x4F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x714E, {0x21,0x00,0x12,0x00,0xFF,0xE0,0x78,0x40,0x49,0x40,0x79,0x40,0x79,0x40,0x49,0x40,0x18,0x40,0x12,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7155, {0x00,0x00,0x7D,0xC0,0x49,0x40,0x65,0xC0,0x65,0x40,0x6D,0x00,0x49,0x20,0x7D,0x20,0x00,0xE0,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7156, {0x20,0xC0,0x27,0xC0,0x25,0x60,0x28,0x20,0x77,0xC0,0x61,0x00,0xAF,0xE0,0x33,0x00,0x3B,0xC0,0x67,0xC0,0x49,0x80,0x96,0x60,0x00,0x00,}}, +{ 0x7159, {0x40,0x00,0x5F,0xE0,0x43,0x00,0x5F,0xC0,0x6B,0x40,0xCF,0xC0,0xC9,0x40,0x61,0x00,0x5F,0xC0,0x41,0x00,0x9F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7162, {0x21,0x80,0x7B,0xC0,0xF7,0x80,0xCE,0x40,0x7F,0xE0,0x40,0x40,0xBF,0x80,0x08,0x80,0x3E,0x80,0x3E,0x60,0x08,0x60,0x08,0x20,0x00,0x00,}}, +{ 0x7164, {0x22,0x80,0x22,0x80,0x2F,0xE0,0x33,0x80,0x72,0x80,0x63,0x80,0xA1,0x00,0x2F,0xE0,0x33,0x80,0x4D,0x40,0x49,0x20,0x81,0x00,0x00,0x00,}}, +{ 0x7165, {0x62,0x00,0x63,0x80,0x6D,0x00,0x7F,0xC0,0x7B,0xC0,0x6B,0xC0,0xEC,0xC0,0x6B,0x40,0x7F,0xE0,0x53,0x00,0x44,0x80,0x98,0x60,0x00,0x00,}}, +{ 0x7166, {0x02,0x00,0x72,0x00,0x57,0xC0,0x5F,0x40,0x75,0xC0,0x55,0xC0,0x57,0xC0,0x74,0x40,0x10,0xC0,0x12,0xC0,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7167, {0x00,0x00,0x7F,0xC0,0x52,0x40,0x54,0xC0,0x70,0x00,0x57,0xC0,0x54,0x40,0x77,0xC0,0x40,0x00,0x12,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7169, {0x20,0x00,0x2F,0xE0,0x21,0x00,0x2F,0xC0,0x74,0x40,0x67,0xC0,0xA4,0x40,0x27,0xC0,0x34,0x40,0x4F,0xC0,0x44,0x40,0x98,0x20,0x00,0x00,}}, +{ 0x716C, {0x20,0x00,0x27,0xC0,0x27,0xC0,0x2F,0xC0,0x77,0xC0,0x60,0x00,0xAF,0xE0,0x34,0x00,0x3F,0xC0,0x7B,0xC0,0x47,0x40,0x8B,0x80,0x00,0x00,}}, +{ 0x716E, {0x04,0x80,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x1F,0x80,0x30,0x80,0xDF,0x80,0x10,0x80,0x1F,0x80,0x12,0x40,0x4A,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x717D, {0x20,0x00,0x3F,0xE0,0x2F,0xC0,0x38,0x40,0x7F,0xC0,0x68,0x00,0xAF,0xC0,0x29,0x40,0x3F,0xC0,0x4F,0xC0,0x51,0x40,0xA3,0xC0,0x00,0x00,}}, +{ 0x7184, {0x21,0x00,0x23,0x00,0x27,0xC0,0x2F,0xC0,0x74,0x40,0x67,0xC0,0xA4,0x40,0x37,0xC0,0x3B,0x00,0x6A,0x20,0x52,0xA0,0x81,0x80,0x00,0x00,}}, +{ 0x7188, {0x00,0x00,0x7F,0xC0,0x79,0x40,0x7D,0xC0,0x65,0x40,0x7D,0x00,0x69,0x20,0xFF,0x20,0x80,0xE0,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x718A, {0x21,0x00,0x49,0x40,0xFD,0x80,0x79,0xE0,0x49,0x00,0x79,0x60,0x49,0x80,0x79,0x00,0x49,0xE0,0x52,0x40,0x49,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x718F, {0x01,0x80,0x3F,0x00,0xFF,0xE0,0xFF,0xE0,0x77,0x80,0x6E,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0xFF,0xE0,0xD2,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x7194, {0x21,0x00,0x21,0x00,0x2F,0xE0,0x3C,0x40,0x75,0x40,0x69,0x40,0xA2,0x80,0x24,0x40,0x3F,0xA0,0x54,0x80,0x47,0x80,0x84,0x80,0x00,0x00,}}, +{ 0x7195, {0x20,0x00,0x27,0xC0,0x27,0xE0,0x2F,0xE0,0x77,0xC0,0x64,0x40,0xA7,0xC0,0x34,0x40,0x3F,0xC0,0x6F,0xC0,0x46,0xC0,0x98,0x20,0x00,0x00,}}, +{ 0x719F, {0x21,0x00,0xF9,0x00,0x07,0x80,0x79,0x80,0x4B,0x80,0x79,0x80,0x19,0xA0,0xF2,0x60,0x14,0x00,0x12,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x71A8, {0x00,0x40,0x7C,0x40,0x7F,0xE0,0x7F,0xE0,0x7F,0x40,0x79,0xC0,0xF4,0x40,0x74,0xC0,0x24,0x80,0x2E,0x80,0x33,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x71AC, {0x21,0x00,0x79,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0x80,0x21,0x80,0x39,0x80,0x4B,0xC0,0x9E,0x60,0x92,0x60,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x71B1, {0x21,0x00,0x79,0x00,0x27,0x80,0xFD,0x80,0x77,0x80,0x6D,0x80,0xF9,0xA0,0x32,0xE0,0xFC,0x60,0x52,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x71B9, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x52,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x71BE, {0x65,0x80,0x65,0xC0,0x7F,0xC0,0x7B,0x80,0x7F,0xE0,0x61,0x80,0xEF,0xC0,0x6B,0xC0,0x7F,0x80,0x5F,0xE0,0x4B,0x60,0x82,0x20,0x00,0x00,}}, +{ 0x71C3, {0x24,0x80,0x24,0xC0,0x37,0xA0,0x3D,0xE0,0x6A,0x80,0x7A,0x80,0xA5,0x80,0x2B,0xC0,0x32,0x60,0x74,0x60,0x53,0x20,0xA3,0xA0,0x00,0x00,}}, +{ 0x71C8, {0x27,0x40,0x23,0x40,0x3C,0x80,0x37,0xE0,0x68,0x40,0x77,0xA0,0xA4,0x80,0x27,0x80,0x34,0x80,0x52,0x80,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x71C9, {0x65,0x80,0x65,0x80,0x7F,0x80,0x7F,0xE0,0x7B,0x40,0x6F,0x40,0xE1,0xC0,0x6E,0x80,0x76,0x80,0x5F,0xC0,0x45,0x40,0x8E,0x20,0x00,0x00,}}, +{ 0x71CE, {0x61,0x00,0x63,0x00,0x6F,0xE0,0x7C,0xC0,0x7F,0xC0,0x74,0xA0,0xE7,0x80,0x64,0x80,0x77,0x80,0x55,0x40,0x49,0x40,0x83,0x00,0x00,0x00,}}, +{ 0x71D0, {0x21,0x00,0x29,0x40,0x27,0x80,0x7F,0xE0,0x75,0x80,0xB9,0x60,0x25,0x40,0x27,0xE0,0x3B,0x40,0x4F,0xE0,0x48,0x40,0x90,0x40,0x00,0x00,}}, +{ 0x71D2, {0x61,0x00,0x6F,0xC0,0x6F,0xE0,0x7F,0xE0,0x7E,0xC0,0x64,0x80,0xE7,0xE0,0x78,0x00,0x7F,0xE0,0x53,0xA0,0x45,0xA0,0x98,0xE0,0x00,0x00,}}, +{ 0x71D4, {0x60,0xC0,0x6F,0x40,0x69,0x40,0x7F,0xE0,0x73,0x80,0x65,0x80,0xE9,0x40,0x7F,0xE0,0x7F,0xC0,0x5F,0xC0,0x4F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x71D5, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x1F,0x20,0xF1,0xC0,0x2F,0x00,0x6B,0x00,0xEA,0xA0,0x3E,0xE0,0x6A,0x40,0x49,0x20,0x80,0x20,0x00,0x00,}}, +{ 0x71D7, {0x30,0x00,0x37,0xE0,0x37,0xE0,0x3F,0xE0,0x3F,0xE0,0x35,0xE0,0x75,0xE0,0x35,0xE0,0x3D,0xE0,0x2D,0xE0,0x27,0xE0,0x44,0x60,0x00,0x00,}}, +{ 0x71DF, {0x15,0xC0,0x7B,0x80,0x7B,0xC0,0x7F,0xE0,0x40,0x40,0xBF,0x00,0x21,0x80,0x3F,0x00,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x71E0, {0x61,0x00,0x62,0x00,0x6F,0xC0,0x7F,0xC0,0x7B,0xC0,0x6F,0xC0,0xEB,0xC0,0x6B,0xC0,0x7F,0xE0,0x5F,0xE0,0x44,0x80,0x98,0x60,0x00,0x00,}}, +{ 0x71E5, {0x20,0x00,0x27,0x80,0x24,0x80,0x37,0x80,0x7F,0xC0,0x6B,0x40,0xAF,0xC0,0x21,0x00,0x3F,0xE0,0x73,0x80,0x5D,0x60,0x81,0x00,0x00,0x00,}}, +{ 0x71E6, {0x24,0x00,0x27,0xC0,0x2F,0x40,0x7B,0x80,0x76,0xC0,0xA5,0x20,0x39,0x40,0x27,0xC0,0x3F,0xE0,0x27,0x80,0x59,0x60,0x81,0x00,0x00,0x00,}}, +{ 0x71E7, {0x69,0x80,0x65,0xC0,0x66,0x60,0x7B,0xE0,0x75,0xA0,0x67,0xA0,0xFD,0xC0,0x67,0xC0,0x77,0xA0,0x56,0x80,0x4B,0x80,0x91,0xE0,0x00,0x00,}}, +{ 0x71EC, {0x64,0x00,0x79,0xC0,0x77,0xC0,0x7F,0xE0,0x73,0xE0,0x73,0x20,0xFF,0xC0,0x65,0xC0,0x7E,0xC0,0x54,0x80,0x46,0xC0,0x99,0x20,0x00,0x00,}}, +{ 0x71ED, {0x10,0x00,0x17,0xE0,0x15,0xA0,0x1F,0xE0,0x3A,0x00,0x33,0xE0,0x55,0x20,0x1F,0xE0,0x1D,0x60,0x2F,0xE0,0x21,0xE0,0x4E,0xC0,0x00,0x00,}}, +{ 0x71EE, {0x6E,0x80,0x7F,0xA0,0xFD,0xE0,0xEF,0xC0,0x6E,0xC0,0x6A,0xA0,0x4F,0x20,0x80,0x00,0x3F,0x00,0x0E,0x00,0x1B,0x00,0x61,0xC0,0x00,0x00,}}, +{ 0x71F5, {0x69,0x80,0x67,0xC0,0x67,0xE0,0x7F,0xE0,0x75,0xC0,0x67,0xE0,0xFD,0x80,0x67,0xC0,0x77,0xE0,0x57,0xE0,0x4B,0x80,0x91,0xE0,0x00,0x00,}}, +{ 0x71F9, {0x00,0x00,0xFB,0xE0,0xE3,0x80,0xFB,0xA0,0xF3,0xC0,0x69,0xA0,0xEB,0xA0,0x65,0x80,0x24,0x80,0x2E,0x80,0x33,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x71FB, {0x60,0xC0,0x6F,0x00,0x6F,0xE0,0x7F,0xE0,0x7F,0xC0,0x6B,0xC0,0xEF,0xC0,0x63,0x00,0x7F,0xC0,0x5F,0xE0,0x4B,0xC0,0x91,0xA0,0x00,0x00,}}, +{ 0x71FC, {0x61,0x00,0x6F,0xC0,0x6F,0xE0,0x7F,0xE0,0x7F,0xC0,0x61,0x00,0xFF,0xE0,0x6B,0xC0,0x7F,0xE0,0x4F,0xC0,0x4B,0xC0,0x9F,0xE0,0x00,0x00,}}, +{ 0x71FF, {0x60,0x00,0x7F,0xC0,0x6F,0xC0,0x7F,0xC0,0x73,0x40,0x69,0x00,0xEF,0xC0,0x7B,0x00,0x7F,0x80,0x5F,0x80,0x4F,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x7206, {0x20,0x00,0x27,0x80,0x27,0x80,0x37,0x80,0x73,0x80,0x6F,0xC0,0xA3,0x80,0x3F,0xE0,0x3D,0xC0,0x5F,0xE0,0x4F,0xC0,0x83,0x00,0x00,0x00,}}, +{ 0x720D, {0x69,0x40,0x6B,0x40,0x7F,0xE0,0x7F,0xE0,0x77,0xE0,0x7F,0xE0,0xE1,0x00,0x7F,0xE0,0x67,0x80,0x79,0x40,0x51,0x20,0x81,0x00,0x00,0x00,}}, +{ 0x7210, {0x62,0x00,0x63,0xC0,0x7F,0xE0,0x7F,0xC0,0x77,0xC0,0x75,0x80,0xF7,0x80,0x77,0x80,0x7F,0xC0,0x7F,0xC0,0x7B,0xC0,0xFF,0xE0,0x00,0x00,}}, +{ 0x721B, {0x60,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0xF7,0xA0,0x77,0xA0,0x77,0xA0,0x77,0xA0,0x5F,0xA0,0x91,0x60,0x00,0x00,}}, +{ 0x7228, {0x3F,0x80,0x77,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xE0,0x51,0xC0,0xFF,0xE0,0x3B,0xC0,0xFF,0xE0,0xFF,0xE0,0xFB,0x60,0x71,0x80,0x00,0x00,}}, +{ 0x722A, {0x00,0x80,0x03,0x00,0x3D,0x00,0x25,0x00,0x25,0x00,0x25,0x00,0x24,0x80,0x24,0x80,0x24,0x80,0x44,0x40,0x44,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x722C, {0x04,0x00,0x1B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6A,0x40,0x6A,0x00,0x6A,0x20,0x67,0xE0,0x67,0xE0,0x63,0x00,0x80,0xE0,0x00,0x00,}}, +{ 0x722D, {0x01,0x80,0x7F,0x80,0x68,0x40,0x44,0x40,0xFF,0xC0,0x04,0x80,0xFF,0xE0,0x04,0x80,0x3F,0x80,0x3F,0x80,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x7230, {0x01,0x80,0x7F,0x80,0x64,0x40,0x7F,0xC0,0x88,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x29,0x00,0x27,0x00,0x4D,0x80,0xF0,0x60,0x00,0x00,}}, +{ 0x7232, {0x01,0x80,0x7F,0x80,0x68,0x40,0x7F,0x40,0xB1,0x80,0x3F,0x80,0x20,0x80,0x30,0xC0,0x3F,0xE0,0x7E,0xA0,0x68,0x20,0xE0,0xC0,0x00,0x00,}}, +{ 0x7235, {0x01,0xC0,0x7E,0x80,0x17,0x00,0x7F,0xC0,0x7F,0xC0,0x78,0x80,0x7F,0xE0,0x4A,0x80,0x79,0x80,0x58,0x80,0x68,0x80,0xC5,0x80,0x00,0x00,}}, +{ 0x7236, {0x11,0x00,0x10,0x80,0x20,0x40,0x50,0x40,0x11,0x00,0x11,0x00,0x0A,0x00,0x0A,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x723A, {0x0B,0x00,0x31,0x80,0x4A,0x40,0x1F,0x00,0xF0,0xE0,0x7F,0xC0,0x49,0x40,0x79,0x80,0x49,0x60,0x7D,0x20,0xF9,0xC0,0x09,0x00,0x00,0x00,}}, +{ 0x723B, {0x01,0x00,0x03,0x00,0x1F,0x00,0x19,0x80,0x71,0x00,0x11,0x00,0x11,0x00,0x0A,0x00,0x0E,0x00,0x0E,0x00,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x723C, {0x10,0x00,0x17,0x80,0xF4,0x80,0x24,0x80,0x37,0x80,0x44,0x80,0x94,0x80,0x57,0x80,0x24,0x80,0x34,0x80,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x723D, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x55,0x40,0x24,0x80,0x35,0xC0,0xD7,0x40,0x64,0x80,0x35,0x40,0x4A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x723E, {0x00,0x00,0xFF,0xE0,0x44,0x40,0xFF,0xE0,0x4C,0xC0,0x75,0xC0,0x6D,0xC0,0x6E,0xC0,0x55,0xC0,0x5D,0xC0,0x66,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x723F, {0x08,0xC0,0x08,0xC0,0x08,0xC0,0x0F,0xC0,0x08,0xC0,0x00,0xC0,0x3F,0xC0,0x04,0xC0,0x04,0xC0,0x0C,0xC0,0x18,0xC0,0x30,0xC0,0x00,0x00,}}, +{ 0x7240, {0x11,0x00,0x51,0x00,0x51,0x00,0x7F,0xE0,0x53,0x00,0x13,0x00,0xF3,0x80,0x75,0x80,0x7D,0x40,0x59,0x20,0x51,0x00,0x91,0x00,0x00,0x00,}}, +{ 0x7246, {0x21,0x00,0x73,0x00,0x7F,0xE0,0x6D,0xC0,0x73,0xA0,0x3F,0xE0,0xE0,0x00,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x6F,0xC0,0xA8,0x40,0x00,0x00,}}, +{ 0x7247, {0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x40,0x80,0x40,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x7248, {0x50,0x00,0x57,0xE0,0x54,0x00,0x7F,0xC0,0x46,0x40,0x46,0x40,0x75,0x80,0x55,0x80,0x55,0x80,0x59,0x80,0x96,0x40,0x98,0x20,0x00,0x00,}}, +{ 0x724B, {0x51,0x80,0x51,0x40,0x57,0xE0,0x7F,0xC0,0x41,0xA0,0x46,0x60,0x71,0xA0,0x53,0xE0,0x5F,0xC0,0x51,0xA0,0x56,0x60,0x90,0x20,0x00,0x00,}}, +{ 0x724C, {0x50,0x80,0x51,0x00,0x57,0xE0,0x7D,0x20,0x47,0xE0,0x45,0x20,0x77,0xE0,0x51,0x40,0x52,0x40,0x5F,0xF0,0x50,0x40,0x90,0x40,0x00,0x00,}}, +{ 0x7252, {0x65,0x80,0x67,0xC0,0x6F,0xE0,0x75,0x80,0x45,0x80,0x44,0x00,0x67,0xC0,0x73,0x00,0x7F,0xE0,0x67,0x80,0x79,0x60,0xA1,0x00,0x00,0x00,}}, +{ 0x7258, {0x61,0x00,0x7F,0xE0,0x67,0xC0,0x7F,0xC0,0x4D,0xC0,0x4F,0xC0,0x67,0x80,0x64,0x80,0x67,0x80,0x67,0x80,0x66,0x80,0xB8,0x40,0x00,0x00,}}, +{ 0x7259, {0x00,0x00,0x3F,0x80,0x21,0x00,0x21,0x00,0x21,0x00,0xFF,0xE0,0x03,0x00,0x05,0x00,0x09,0x00,0x31,0x00,0xC1,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x725B, {0x04,0x00,0x24,0x00,0x24,0x00,0x3F,0x80,0x44,0x00,0x44,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x725D, {0x22,0x00,0x62,0x00,0x62,0x00,0x7A,0x40,0x62,0x40,0xA2,0x80,0x23,0x00,0x3A,0x00,0xE2,0x00,0x22,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x725F, {0x08,0x00,0x09,0x00,0x13,0x80,0x7C,0x40,0x24,0x00,0x3F,0x80,0x44,0x00,0x84,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7261, {0x21,0x00,0x21,0x00,0x61,0x00,0x79,0x00,0x67,0xC0,0x61,0x00,0xA1,0x00,0x39,0x00,0xE1,0x00,0x21,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7262, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x84,0x00,0x24,0x00,0x3F,0x80,0x44,0x00,0x84,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7267, {0x22,0x00,0x22,0x00,0x62,0x00,0x7B,0xE0,0x64,0x40,0x66,0x40,0xAA,0x40,0x31,0x80,0xE1,0x80,0x21,0x80,0x26,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x7269, {0x12,0x00,0x32,0x00,0x33,0xE0,0x3F,0x60,0x35,0x60,0x59,0x60,0x12,0xA0,0x1A,0xA0,0x74,0xA0,0x11,0x20,0x12,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x7272, {0x21,0x00,0x25,0x00,0x65,0x00,0x7F,0xE0,0x65,0x00,0x69,0x00,0xA1,0x00,0x37,0xC0,0xE1,0x00,0x21,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7274, {0x20,0x40,0x21,0x80,0x67,0x80,0x7D,0x80,0x77,0xE0,0x65,0x80,0xA5,0x80,0x3D,0x80,0xE6,0x80,0x20,0x60,0x2F,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x7279, {0x21,0x00,0x21,0x00,0x6F,0xC0,0x71,0x00,0x7F,0xE0,0x60,0x80,0xA0,0x80,0x3F,0xE0,0xE4,0x80,0x22,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x727D, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0xFF,0xE0,0x91,0x40,0xBF,0x80,0x14,0x80,0x3F,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x727E, {0x20,0x00,0x2F,0xE0,0x61,0x00,0x7F,0x80,0x72,0x80,0x62,0x80,0xAF,0xE0,0x30,0x00,0xE7,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x7280, {0x3F,0xE0,0x20,0x20,0x3F,0xE0,0x2D,0x60,0x21,0x00,0x2D,0x60,0x29,0x00,0x2F,0xC0,0x31,0x00,0x2F,0xE0,0x41,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x7281, {0x08,0x40,0x71,0x40,0xF9,0x40,0xF9,0x40,0x79,0x40,0x68,0x40,0xA4,0xC0,0x64,0x00,0x7F,0xC0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7282, {0x1A,0x00,0x62,0x00,0xFF,0xC0,0xFD,0xC0,0x79,0x40,0x6A,0x40,0xA4,0x80,0x64,0x00,0x7F,0xC0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7287, {0x04,0x00,0x34,0x00,0x3F,0x80,0x7F,0xC0,0x04,0x00,0x24,0x00,0x63,0x80,0x7B,0xC0,0xBF,0x80,0xFF,0xE0,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7292, {0x21,0x00,0x23,0x00,0x6F,0xE0,0x77,0x80,0x74,0x80,0x67,0x80,0xA0,0x00,0x3F,0xC0,0xEB,0x40,0x2B,0xC0,0x2B,0xC0,0x28,0xC0,0x00,0x00,}}, +{ 0x7296, {0x21,0x80,0x7B,0xC0,0xB7,0x80,0x31,0x80,0x4A,0x40,0x7F,0xE0,0x64,0x40,0xBF,0x80,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x72A0, {0x24,0x80,0x23,0x00,0x6F,0xE0,0x77,0xC0,0x71,0x00,0xAF,0xE0,0x37,0xC0,0x73,0xA0,0xBF,0xE0,0x2E,0x40,0x22,0xE0,0x27,0x20,0x00,0x00,}}, +{ 0x72A2, {0x21,0x00,0x2F,0xE0,0x67,0xC0,0x7F,0xC0,0x7C,0xC0,0x6F,0xC0,0xA7,0x80,0x34,0x80,0xE7,0x80,0x27,0x80,0x26,0x80,0x38,0x40,0x00,0x00,}}, +{ 0x72A7, {0x22,0x80,0x2F,0xE0,0x67,0xC0,0x7F,0xE0,0x77,0xC0,0x63,0xA0,0xAF,0xE0,0x37,0xC0,0xEF,0xC0,0x27,0xE0,0x2B,0xE0,0x23,0x20,0x00,0x00,}}, +{ 0x72AC, {0x04,0x00,0x04,0x80,0x04,0x80,0xFF,0xE0,0x04,0x00,0x0C,0x00,0x0A,0x00,0x0A,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x72AF, {0x10,0x00,0x97,0xC0,0x64,0x40,0x44,0x40,0xA4,0x40,0x24,0x40,0x24,0x80,0x64,0x00,0xA4,0x00,0x24,0x20,0x24,0x20,0x63,0xE0,0x00,0x00,}}, +{ 0x72B2, {0x11,0x80,0x91,0x80,0x61,0x80,0x7F,0xE0,0xB3,0x80,0x21,0x80,0x63,0x80,0xE3,0x80,0xA5,0x80,0x39,0x80,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x72B6, {0x21,0x00,0x21,0x80,0x21,0x40,0xA1,0x00,0x6F,0xE0,0x21,0x00,0x21,0x00,0x61,0x00,0xA2,0x80,0x24,0x80,0x28,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x72B9, {0x11,0x80,0x91,0x40,0x61,0x40,0x7F,0xE0,0xB3,0x00,0x23,0x00,0x63,0x00,0xE3,0x00,0xA5,0x00,0x29,0x20,0x71,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x72C2, {0x20,0x00,0xBF,0xE0,0x41,0x00,0x61,0x00,0xA1,0x00,0x2F,0xC0,0x61,0x00,0x61,0x00,0xA1,0x00,0x21,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x72C3, {0x10,0x00,0x9F,0x80,0x62,0x80,0x62,0x80,0xA2,0x80,0x2F,0xE0,0x62,0x80,0xE2,0x80,0xA2,0x80,0x22,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x72C4, {0x21,0x00,0xA1,0x00,0x61,0x40,0x65,0x40,0xA5,0x80,0x29,0x00,0x69,0x80,0xE3,0x80,0xA2,0x80,0x24,0x80,0x68,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x72C6, {0x10,0x80,0x50,0x80,0x33,0xE0,0x37,0xE0,0x54,0xA0,0x14,0xA0,0x37,0xE0,0x74,0xA0,0x50,0x80,0x10,0x80,0x30,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x72CE, {0x10,0x00,0x57,0xE0,0x34,0xA0,0x37,0xE0,0x55,0xA0,0x14,0xA0,0x37,0xE0,0x74,0xA0,0x50,0x80,0x10,0x80,0x30,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x72D0, {0x10,0x40,0x91,0x80,0x67,0x80,0x65,0x80,0xA5,0x80,0x25,0x80,0x25,0x80,0x65,0xC0,0xA5,0x40,0x29,0xC0,0x4E,0xE0,0x50,0x20,0x00,0x00,}}, +{ 0x72D2, {0x13,0x80,0x93,0x80,0x6F,0xC0,0x63,0xC0,0xAF,0xC0,0x2B,0xC0,0x6B,0x80,0xEF,0xE0,0xAB,0xA0,0x25,0xE0,0x69,0x80,0x71,0x80,0x00,0x00,}}, +{ 0x72D7, {0x11,0x00,0x51,0x00,0x23,0xE0,0x32,0x20,0x54,0x20,0x1B,0xA0,0x12,0xA0,0x32,0xA0,0x53,0xA0,0x10,0x20,0x20,0x20,0x20,0x40,0x00,0x00,}}, +{ 0x72D9, {0x10,0x00,0x97,0x80,0x64,0x80,0x64,0x80,0xA7,0x80,0x24,0x80,0x64,0x80,0x67,0x80,0xA4,0x80,0x24,0x80,0x3F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x72DB, {0x10,0x80,0x51,0x00,0x22,0x00,0x23,0xE0,0x52,0x20,0x12,0x20,0x33,0xE0,0x52,0x20,0x12,0x20,0x12,0x20,0x23,0xE0,0x22,0x20,0x00,0x00,}}, +{ 0x72E0, {0x10,0x00,0x97,0x80,0x64,0x80,0x67,0x80,0xA4,0x80,0x24,0x80,0x67,0xA0,0xE5,0x20,0xA5,0xC0,0x24,0x80,0x67,0x40,0x7C,0x20,0x00,0x00,}}, +{ 0x72E1, {0x21,0x00,0xB3,0x00,0x7F,0xE0,0x64,0x40,0xAC,0xE0,0x34,0xA0,0x63,0x80,0xE3,0x00,0xA3,0x00,0x24,0x80,0x68,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x72E2, {0x22,0x00,0xA2,0x00,0x67,0x80,0x6C,0x80,0xB3,0x00,0x23,0x00,0x65,0x80,0xFF,0xE0,0xA8,0x80,0x28,0x80,0x6F,0x80,0x68,0x80,0x00,0x00,}}, +{ 0x72E9, {0x21,0x00,0xA1,0x00,0x4F,0xE0,0x48,0x40,0xB0,0x80,0x3F,0xE0,0x20,0x80,0x64,0x80,0xA2,0x80,0x20,0x80,0x60,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x72EC, {0x11,0x00,0x91,0x00,0x61,0x00,0x6F,0xC0,0xA9,0x40,0x29,0x40,0x2F,0xC0,0x69,0x00,0xA1,0x40,0x21,0xC0,0x5E,0x20,0x40,0x20,0x00,0x00,}}, +{ 0x72ED, {0x11,0x00,0x91,0x00,0x7F,0xE0,0x69,0x40,0xA5,0x40,0x25,0x80,0x3F,0xE0,0x61,0x00,0xA3,0x00,0x24,0x80,0x68,0x40,0x50,0x20,0x00,0x00,}}, +{ 0x72F7, {0x10,0x00,0x57,0xE0,0x34,0x20,0x37,0xE0,0x50,0x00,0x17,0xE0,0x34,0x20,0x77,0xE0,0x57,0xE0,0x17,0xE0,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x72F8, {0x20,0x00,0xAF,0xC0,0x49,0x40,0x4F,0xC0,0xA9,0x40,0x29,0x40,0x6F,0xC0,0xA1,0x00,0x2F,0xC0,0x21,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x72F9, {0x21,0x00,0xA1,0x00,0x6F,0xE0,0x6F,0xE0,0xA5,0x80,0x25,0x80,0x6B,0x40,0xF3,0x20,0xA3,0x80,0x24,0x80,0x68,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x72FC, {0x11,0x00,0x91,0x00,0x67,0x80,0x44,0x80,0xA7,0x80,0x24,0x80,0x27,0x80,0x65,0x40,0xA4,0x80,0x25,0x80,0x26,0x40,0x68,0x20,0x00,0x00,}}, +{ 0x72FD, {0x10,0x00,0x97,0xC0,0x64,0x40,0x47,0xC0,0xA4,0x40,0x27,0xC0,0x64,0x40,0x64,0x40,0xA7,0xC0,0x22,0x40,0x24,0x20,0x68,0x20,0x00,0x00,}}, +{ 0x730A, {0x22,0x00,0xAC,0xC0,0x68,0x40,0x6E,0xC0,0xA8,0x40,0x28,0x40,0x6F,0xC0,0xE3,0x80,0xA3,0x80,0x25,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x7316, {0x10,0x00,0x53,0xC0,0x33,0xC0,0x33,0xC0,0x53,0xC0,0x12,0x40,0x30,0x00,0x77,0xE0,0x57,0xE0,0x17,0xE0,0x37,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x7317, {0x11,0x00,0x93,0x00,0x6F,0xC0,0x63,0x00,0xA4,0x80,0x3F,0xE0,0x60,0x40,0xE7,0xC0,0xA7,0xC0,0x27,0xC0,0x60,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x731B, {0x20,0x00,0xAF,0xC0,0x41,0x00,0x7F,0xE0,0xA2,0x00,0x22,0x00,0x2F,0xC0,0x6A,0xC0,0xAA,0xC0,0x2A,0xC0,0x3F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x731C, {0x21,0x00,0xBF,0xE0,0x67,0xC0,0x67,0xC0,0xBF,0xE0,0x20,0x00,0x6F,0xC0,0xE9,0x40,0xAF,0xC0,0x2F,0xC0,0x68,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x731D, {0x21,0x00,0xB3,0x00,0x7F,0xE0,0x64,0x80,0xAA,0xC0,0x31,0x20,0x61,0x00,0xFF,0xE0,0xA1,0x00,0x21,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x731F, {0x22,0x40,0xA9,0x40,0x45,0x80,0x67,0xC0,0xA5,0x40,0x27,0xC0,0x25,0x40,0x67,0xC0,0xA5,0x40,0x29,0x40,0x31,0x60,0x61,0x20,0x00,0x00,}}, +{ 0x7325, {0x20,0x00,0xAF,0xC0,0x6F,0xC0,0x6F,0xC0,0xAF,0xC0,0x20,0x00,0x7F,0xE0,0xE5,0x40,0xA5,0xC0,0x24,0x80,0x67,0x40,0x78,0x20,0x00,0x00,}}, +{ 0x7329, {0x20,0x00,0xAF,0xC0,0x6F,0xC0,0x6F,0xC0,0xAF,0xC0,0x25,0x00,0x67,0xC0,0xFB,0x00,0xB7,0x80,0x21,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x732A, {0x12,0x00,0x92,0x40,0x6F,0xC0,0x62,0x80,0xBF,0xE0,0x22,0x00,0x67,0xC0,0xAC,0x40,0x37,0xC0,0x24,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x732B, {0x24,0x80,0xA4,0x80,0x7F,0xE0,0x44,0x80,0xA0,0x00,0x2F,0xC0,0x29,0x40,0x69,0x40,0xAF,0xC0,0x29,0x40,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x732E, {0x10,0x80,0x10,0xC0,0xFE,0xA0,0x7F,0xE0,0x6C,0x80,0x74,0x80,0x7C,0x80,0x55,0x80,0x7D,0x40,0x56,0x40,0x56,0x20,0x4C,0x20,0x00,0x00,}}, +{ 0x732F, {0x21,0x00,0xA9,0x40,0x6F,0xC0,0x67,0xC0,0xBF,0xE0,0x21,0x00,0x6F,0xC0,0xEB,0xC0,0xAB,0xC0,0x2B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x7334, {0x24,0x00,0xA7,0x80,0x64,0x80,0x6F,0xE0,0xBA,0x00,0x2B,0xC0,0x6B,0x80,0xED,0x80,0xAF,0xE0,0x29,0x80,0x6A,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x7336, {0x24,0x80,0xA2,0x80,0x4F,0xE0,0x42,0x80,0xAF,0xC0,0x2A,0xC0,0x2A,0xC0,0x6C,0x40,0xAF,0xC0,0x28,0x40,0x2F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x7337, {0x44,0x80,0x28,0xC0,0xFC,0xA0,0x30,0x80,0x7F,0xE0,0x74,0x80,0x74,0x80,0x7C,0x80,0x7D,0x80,0x45,0x40,0x7E,0x40,0x44,0x20,0x00,0x00,}}, +{ 0x733E, {0x20,0x00,0xAF,0x80,0x6B,0x80,0x6B,0x80,0xBF,0xE0,0x30,0x40,0x6F,0x80,0xE8,0x80,0xAF,0x80,0x2F,0x80,0x68,0x80,0x68,0x80,0x00,0x00,}}, +{ 0x733F, {0x21,0x00,0xAF,0xC0,0x61,0x00,0x4F,0xE0,0xA7,0x80,0x24,0x80,0x67,0x80,0x73,0x40,0xBD,0xC0,0x24,0x80,0x67,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x7344, {0x20,0x80,0xAE,0xC0,0x5E,0xA0,0x40,0x80,0xAF,0xE0,0x20,0x80,0x2E,0x80,0x60,0xC0,0xAE,0xC0,0x2A,0xC0,0x4F,0x20,0x42,0x20,0x00,0x00,}}, +{ 0x7345, {0x28,0x00,0xAB,0xE0,0x50,0x80,0x5D,0xE0,0xB5,0xA0,0x3D,0xA0,0x71,0xA0,0x7D,0xA0,0xB5,0xA0,0x3D,0xE0,0x50,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x734E, {0x51,0x00,0x53,0xC0,0x7D,0x80,0x17,0x80,0xFF,0xE0,0x54,0x80,0x53,0x80,0x94,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x734F, {0x24,0x80,0xBF,0xE0,0x67,0xC0,0x6F,0xC0,0xAF,0xC0,0x28,0x40,0x6F,0xC0,0xF3,0x00,0xBF,0xE0,0x23,0x00,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x7357, {0x60,0x00,0xFF,0xE0,0x59,0x80,0x56,0x80,0xFF,0xE0,0x75,0xA0,0x7D,0xC0,0x7F,0xC0,0xFF,0x80,0x7D,0xC0,0x69,0x40,0x72,0x20,0x00,0x00,}}, +{ 0x7363, {0xA5,0x00,0x55,0x40,0x79,0x20,0x69,0x00,0x7F,0xE0,0x69,0x00,0x79,0x00,0xFD,0x00,0x79,0x00,0x4A,0x80,0x7C,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x7368, {0x10,0x00,0x57,0xE0,0x37,0xE0,0x33,0xE0,0x53,0xE0,0x15,0x20,0x3F,0xE0,0x75,0xE0,0x57,0xE0,0x11,0xE0,0x3E,0x60,0x30,0x40,0x00,0x00,}}, +{ 0x736A, {0x21,0x00,0xA3,0x80,0x6F,0xE0,0x6F,0xE0,0xAF,0xC0,0x2B,0xC0,0x6F,0xC0,0xE7,0x80,0xA7,0x80,0x27,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x7370, {0x21,0x00,0xAF,0xE0,0x6B,0x40,0x6A,0xE0,0xB3,0x80,0x2F,0xC0,0x6B,0xC0,0xEF,0xC0,0xBF,0xE0,0x3F,0xE0,0x61,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x7372, {0x24,0x80,0xBF,0xE0,0x44,0x80,0x6F,0xE0,0xB7,0xC0,0x27,0xC0,0x25,0x80,0x67,0xE0,0xAF,0xC0,0x22,0x80,0x63,0x80,0x5C,0x60,0x00,0x00,}}, +{ 0x7375, {0x29,0x40,0xB2,0xC0,0x6F,0xC0,0x6F,0xC0,0xAF,0xC0,0x2F,0xC0,0x6D,0xC0,0xEB,0xC0,0xAF,0xC0,0x2B,0x60,0x6D,0x60,0x79,0x20,0x00,0x00,}}, +{ 0x7378, {0xFD,0x80,0xF5,0xC0,0xFD,0xA0,0x7D,0x80,0x7F,0xE0,0x55,0x80,0x7D,0x80,0xFF,0x80,0x79,0x80,0x7D,0x80,0x7E,0x40,0x44,0x20,0x00,0x00,}}, +{ 0x737A, {0x34,0x00,0x75,0xE0,0x2F,0xA0,0x3F,0xE0,0x7D,0xA0,0x35,0xE0,0x3F,0xA0,0x74,0xE0,0x7F,0xE0,0x3D,0xE0,0x34,0xA0,0x65,0x20,0x00,0x00,}}, +{ 0x737B, {0x11,0x80,0x1F,0xC0,0x7F,0xA0,0x7D,0x80,0x7F,0xE0,0x7D,0x80,0x65,0x80,0x7D,0x80,0x7F,0x80,0x7F,0x40,0x6A,0x40,0xEA,0x20,0x00,0x00,}}, +{ 0x7384, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x08,0x80,0x29,0x00,0x19,0x00,0x06,0x00,0x04,0x80,0x09,0xC0,0xFE,0x20,0x00,0x20,0x00,0x00,}}, +{ 0x7387, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x58,0x40,0x0A,0x00,0x26,0x80,0xC9,0x60,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7389, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x80,0x04,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x738B, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7396, {0x02,0x00,0x02,0x00,0xF3,0x80,0x44,0x80,0x44,0x80,0xF8,0x80,0x41,0x00,0x41,0x00,0x73,0x00,0xC4,0x80,0x08,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x73A9, {0x00,0x00,0x07,0xC0,0xF0,0x00,0x20,0x00,0x2F,0xE0,0xF2,0x80,0x22,0x80,0x22,0x80,0x34,0x80,0xC8,0xA0,0x10,0xA0,0x20,0x60,0x00,0x00,}}, +{ 0x73B2, {0x01,0x00,0x01,0x00,0xF2,0x80,0x24,0x80,0x2B,0xC0,0xF0,0x20,0x2F,0xC0,0x21,0x40,0x31,0x40,0xC1,0xC0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x73B3, {0x05,0x80,0x05,0xC0,0xFD,0xA0,0x69,0xE0,0x7F,0x80,0xE9,0x80,0x69,0x80,0x68,0x80,0x68,0x80,0xE8,0x60,0x08,0x60,0x08,0x20,0x00,0x00,}}, +{ 0x73BB, {0x01,0x00,0x03,0x00,0xFF,0xE0,0x69,0x40,0x69,0x00,0xFF,0xC0,0x6A,0x40,0x69,0x80,0x69,0x80,0xF9,0x80,0x16,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x73C0, {0x00,0x80,0x01,0x80,0x7B,0xE0,0x33,0xE0,0x32,0x20,0x7A,0x20,0x33,0xE0,0x32,0x20,0x3A,0x20,0x7A,0x20,0x03,0xE0,0x02,0x20,0x00,0x00,}}, +{ 0x73C2, {0x00,0x00,0x0F,0xE0,0xF0,0x40,0x47,0x40,0x45,0x40,0xF5,0x40,0x45,0x40,0x47,0x40,0x75,0x40,0xC0,0x40,0x00,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x73C8, {0x04,0x00,0x04,0x00,0x74,0x60,0x3F,0xE0,0x35,0xE0,0x75,0xE0,0x35,0xE0,0x35,0xE0,0x3D,0xE0,0x79,0xE0,0x19,0xE0,0x16,0x00,0x00,0x00,}}, +{ 0x73CA, {0x00,0x00,0x0F,0xC0,0xFA,0xC0,0x4A,0xC0,0x4A,0xC0,0xFF,0xE0,0x4A,0xC0,0x4A,0xC0,0x7A,0xC0,0xCA,0xC0,0x0A,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x73CD, {0x01,0x00,0x01,0x00,0xF2,0x80,0x24,0x80,0x29,0x40,0xF2,0x20,0x2C,0x80,0x21,0x00,0x36,0x40,0xC0,0x80,0x03,0x00,0x1C,0x00,0x00,0x00,}}, +{ 0x73CE, {0x04,0x00,0x04,0x00,0xF7,0xE0,0x6F,0xE0,0x71,0xC0,0xF1,0x00,0x65,0x80,0x65,0xC0,0x65,0x60,0xF9,0x20,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x73DE, {0x02,0x00,0x02,0x00,0xF7,0x80,0x6C,0x80,0x73,0x00,0xF3,0x00,0x65,0x80,0x7F,0xE0,0x68,0x80,0xE8,0x80,0x0F,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x73E0, {0x01,0x00,0x05,0x00,0xF7,0xC0,0x29,0x00,0x31,0x00,0xFF,0xE0,0x21,0x00,0x23,0x80,0x35,0x40,0xC9,0x20,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x73E5, {0x00,0x00,0x1F,0xE0,0xF4,0x80,0x67,0x80,0x64,0x80,0xF4,0x80,0x67,0x80,0x64,0x80,0x67,0x80,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x73EA, {0x01,0x00,0x01,0x00,0xFF,0xC0,0x21,0x00,0x2F,0xE0,0xF1,0x00,0x21,0x00,0x2F,0xC0,0x71,0x00,0x81,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x73ED, {0x02,0x00,0xF3,0xE0,0x2A,0x80,0x2A,0x80,0x2A,0x80,0xFB,0xE0,0x2A,0x80,0x2A,0x80,0x36,0x80,0xC4,0x80,0x0B,0xE0,0x10,0x00,0x00,0x00,}}, +{ 0x73EE, {0x00,0x00,0x1F,0x80,0xFF,0x80,0x7F,0x80,0x72,0x80,0xFF,0x80,0x7B,0x80,0x7B,0x80,0x7B,0x80,0xFB,0xE0,0x32,0x60,0x22,0x20,0x00,0x00,}}, +{ 0x73F1, {0x02,0x20,0x11,0x20,0xE8,0x40,0x62,0x00,0x62,0x00,0xFF,0xE0,0x64,0x80,0x64,0x80,0x7F,0x80,0xF1,0x80,0x06,0x40,0x38,0x40,0x00,0x00,}}, +{ 0x73F8, {0x00,0x00,0x0F,0xC0,0xF1,0x00,0x67,0x80,0x62,0x80,0xF2,0x80,0x7F,0xE0,0x60,0x00,0x77,0xC0,0xF4,0x40,0x07,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x73FE, {0x00,0x00,0x07,0xC0,0xF4,0x40,0x27,0xC0,0x24,0x40,0xF7,0xC0,0x24,0x40,0x27,0xC0,0x32,0x80,0xC4,0xA0,0x18,0xA0,0x20,0xE0,0x00,0x00,}}, +{ 0x7403, {0x01,0x80,0xF1,0x40,0x2F,0xE0,0x21,0x00,0x29,0x40,0xF5,0x40,0x25,0x80,0x23,0x80,0x37,0x40,0xC9,0x20,0x01,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x7405, {0x01,0x00,0x03,0x00,0xF7,0xC0,0x67,0xC0,0x64,0x40,0xF4,0x40,0x67,0xC0,0x65,0xA0,0x74,0xE0,0xF4,0xC0,0x06,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x7406, {0x00,0x00,0x0F,0xC0,0xF9,0x40,0x2F,0xC0,0x29,0x40,0xF9,0x40,0x2F,0xC0,0x21,0x00,0x37,0xC0,0xC1,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7409, {0x01,0x00,0x01,0x00,0xFF,0xE0,0x22,0x80,0x2F,0xC0,0xF0,0x40,0x25,0x80,0x25,0x80,0x3D,0x80,0xC9,0xA0,0x11,0xA0,0x20,0x60,0x00,0x00,}}, +{ 0x7422, {0x00,0x00,0x0F,0xE0,0xF2,0x00,0x26,0x40,0x3B,0x40,0xF3,0x80,0x25,0x80,0x3B,0xC0,0x26,0xE0,0xF8,0x80,0x01,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x7425, {0x01,0x00,0x01,0xC0,0xFF,0xE0,0x6F,0xE0,0x69,0xC0,0xFF,0x40,0x69,0xC0,0x6B,0x80,0x7B,0x80,0xF3,0xA0,0x35,0xA0,0x28,0xE0,0x00,0x00,}}, +{ 0x7432, {0x03,0x80,0x03,0x80,0xFF,0xE0,0x6F,0xE0,0x63,0x80,0xFF,0xE0,0x63,0x80,0x63,0x80,0x7F,0xE0,0xFD,0x80,0x09,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x7433, {0x04,0x80,0x04,0x80,0xFF,0xE0,0x24,0x80,0x26,0x80,0xFD,0xC0,0x2D,0xC0,0x2F,0xA0,0x36,0xA0,0xC4,0x80,0x04,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x7434, {0x00,0x00,0x7B,0xC0,0x21,0x00,0x7B,0xC0,0x3F,0xE0,0xEA,0x00,0x11,0x00,0x7F,0xC0,0x80,0x60,0x1F,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7435, {0x00,0x00,0xFB,0xE0,0x31,0xC0,0x7B,0xC0,0x3B,0xE0,0xE2,0x00,0x22,0x00,0x3E,0xC0,0x23,0x00,0x22,0x20,0x3A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x7436, {0x00,0x00,0x7B,0xC0,0x11,0x00,0x7B,0xC0,0x3B,0xE0,0xE0,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x20,0x20,0x20,0x20,0x3F,0xE0,0x00,0x00,}}, +{ 0x743A, {0x09,0x80,0x05,0x80,0xF7,0xC0,0x6B,0xC0,0x69,0x80,0xF7,0xE0,0x65,0x80,0x65,0x80,0x79,0xC0,0xF9,0xC0,0x17,0x20,0x10,0x20,0x00,0x00,}}, +{ 0x743F, {0x00,0x00,0x0F,0xE0,0xFF,0xE0,0x6F,0xE0,0x6F,0xC0,0xF9,0x40,0x6F,0xC0,0x6B,0x40,0x6F,0xC0,0xFF,0xE0,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x7441, {0x00,0x00,0x07,0xE0,0x7D,0xA0,0x35,0xA0,0x35,0xA0,0x7B,0xC0,0x32,0x40,0x33,0xC0,0x3B,0xC0,0x7B,0xC0,0x03,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x7455, {0x00,0x00,0x1E,0xC0,0xF2,0x40,0x7E,0xC0,0x72,0x40,0xF0,0x00,0x7F,0xC0,0x71,0x40,0x7D,0xC0,0xFC,0x80,0x10,0xC0,0x13,0x20,0x00,0x00,}}, +{ 0x7459, {0x04,0xA0,0x05,0xA0,0x7D,0x20,0x34,0xA0,0x31,0x00,0x7F,0xE0,0x34,0xE0,0x37,0xA0,0x35,0xA0,0x76,0x60,0x07,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x745A, {0x04,0x00,0x04,0xE0,0x7F,0xA0,0x24,0xA0,0x24,0xE0,0x74,0xA0,0x2E,0xA0,0x2A,0xE0,0x3A,0xA0,0x2E,0xA0,0x41,0x20,0x02,0x60,0x00,0x00,}}, +{ 0x745B, {0x04,0x80,0x04,0x80,0xFF,0xE0,0x25,0x80,0x2F,0xC0,0xF9,0x40,0x29,0x40,0x3F,0xE0,0x31,0x00,0xC3,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x745C, {0x07,0x00,0x03,0x00,0xF6,0x80,0x6F,0xC0,0x70,0x20,0xFE,0x40,0x73,0xC0,0x7B,0xC0,0x7F,0x80,0xFF,0xC0,0x13,0xC0,0x17,0xC0,0x00,0x00,}}, +{ 0x745E, {0x01,0x00,0x09,0x40,0xFF,0xC0,0x20,0x00,0x2F,0xE0,0xF2,0x00,0x2F,0xC0,0x2B,0x40,0x3B,0x40,0xCB,0x40,0x0B,0x40,0x08,0xC0,0x00,0x00,}}, +{ 0x745F, {0x00,0x00,0xFB,0xE0,0x7B,0xC0,0x7B,0xC0,0xFB,0xE0,0x09,0x80,0x05,0x80,0x15,0xC0,0x72,0x60,0x54,0x20,0x98,0x80,0x2F,0x80,0x00,0x00,}}, +{ 0x7460, {0x02,0x00,0x0D,0xE0,0xF8,0xA0,0x2A,0xA0,0x2D,0xA0,0xF1,0x60,0x2F,0xC0,0x29,0x40,0x3F,0xC0,0xC9,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x7463, {0x01,0x00,0x05,0xC0,0xFD,0x60,0x7F,0xE0,0x68,0x40,0xFF,0xC0,0x68,0x40,0x6F,0xC0,0x6F,0xC0,0xE7,0xC0,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x7464, {0x01,0x00,0x03,0xC0,0xF7,0xC0,0x7F,0x80,0x63,0x00,0xFC,0x00,0x67,0xC0,0x6B,0x00,0x7F,0xE0,0xF9,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x7469, {0x21,0x80,0x29,0xC0,0x7B,0xC0,0xF7,0x80,0xCA,0x40,0x7F,0xE0,0x40,0x40,0xFF,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x746A, {0x00,0x00,0x0F,0xE0,0xFF,0xC0,0x6F,0xC0,0x6F,0xC0,0xF9,0x00,0x6F,0xE0,0x68,0xA0,0x7A,0xA0,0xFD,0x20,0x34,0x20,0x20,0xC0,0x00,0x00,}}, +{ 0x746F, {0x04,0x00,0x05,0xC0,0xFF,0xC0,0x7F,0xC0,0x73,0x80,0xF3,0xC0,0x7F,0xC0,0x73,0xA0,0x77,0xA0,0xF7,0xE0,0x19,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7470, {0x01,0x00,0x02,0x00,0xFF,0xC0,0x6F,0xC0,0x6B,0x40,0xF9,0x40,0x6F,0xC0,0x63,0x80,0x77,0xC0,0xF5,0xE0,0x09,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x7473, {0x04,0x40,0x02,0x80,0xFF,0xC0,0x21,0x00,0x27,0x80,0xF1,0x00,0x2F,0xE0,0x34,0x00,0x6F,0xC0,0x91,0x00,0x2F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7476, {0x01,0xC0,0x0F,0x40,0xF9,0x40,0x65,0x80,0x61,0x00,0xFF,0xC0,0x61,0x00,0x7F,0xE0,0x79,0x40,0xF9,0x40,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x747E, {0x04,0x80,0x1F,0xE0,0xF7,0x80,0x6F,0xC0,0x6B,0x40,0xFF,0xC0,0x61,0x00,0x6F,0xC0,0x77,0x80,0xF7,0x80,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7483, {0x01,0x00,0x1F,0xE0,0xF9,0x40,0x2B,0x40,0x2C,0xC0,0xFF,0xC0,0x21,0x00,0x3F,0xE0,0x32,0xA0,0xDF,0xA0,0x10,0xA0,0x10,0x60,0x00,0x00,}}, +{ 0x748B, {0x01,0x00,0x0F,0xC0,0xF4,0x80,0x7F,0xE0,0x67,0xC0,0xF4,0x80,0x67,0x80,0x64,0x80,0x77,0x80,0xFF,0xE0,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x749E, {0x03,0x80,0x0B,0xC0,0xFF,0xE0,0x6F,0xE0,0x62,0x80,0xFF,0xC0,0x61,0x00,0x67,0x80,0x7F,0xE0,0xFF,0xE0,0x06,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x74A2, {0x00,0x00,0x1F,0xE0,0xFF,0xC0,0x6F,0xC0,0x6B,0xC0,0xFF,0xC0,0x63,0x80,0x6F,0xC0,0x7F,0xC0,0xFF,0xC0,0x0F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x74A7, {0x01,0x80,0x7F,0xE0,0x7A,0x40,0x7F,0xE0,0x79,0x80,0xEF,0xE0,0x79,0x80,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x74B0, {0x00,0x00,0x0F,0xC0,0xFB,0x40,0x2F,0xC0,0x3F,0xE0,0xF7,0x80,0x24,0x80,0x37,0xC0,0x67,0x40,0x8E,0x80,0x12,0x60,0x02,0x00,0x00,0x00,}}, +{ 0x74BD, {0x00,0x00,0xFF,0xE0,0x24,0x80,0xFF,0xE0,0x55,0x40,0x6E,0xC0,0x55,0x40,0x6E,0xC0,0x7F,0xC0,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x74CA, {0x02,0x00,0x07,0x80,0xFF,0xC0,0x6F,0xC0,0x6F,0xC0,0xF4,0x80,0x67,0x80,0x67,0x80,0x77,0xC0,0xFF,0xC0,0x03,0x80,0x1C,0xE0,0x00,0x00,}}, +{ 0x74CF, {0x05,0x80,0x1F,0xE0,0xEB,0xC0,0x7F,0xC0,0x61,0xC0,0xFF,0x80,0x73,0xC0,0x7F,0x80,0x7F,0xC0,0xFF,0xC0,0x13,0xA0,0x16,0xE0,0x00,0x00,}}, +{ 0x74D4, {0x00,0x00,0x1F,0xE0,0xFF,0xE0,0x7F,0xE0,0x73,0xA0,0xFF,0xE0,0x6D,0x40,0x73,0x20,0x7F,0xE0,0xE6,0x80,0x03,0xC0,0x1E,0x20,0x00,0x00,}}, +{ 0x74DC, {0x00,0x80,0x03,0x00,0x3D,0x00,0x25,0x00,0x25,0x00,0x25,0x00,0x24,0x80,0x24,0x80,0x26,0x80,0x45,0x40,0x59,0x40,0x80,0x20,0x00,0x00,}}, +{ 0x74E0, {0x20,0x40,0x31,0x80,0xFF,0x80,0x75,0x80,0xFD,0x80,0x05,0x80,0xFD,0x80,0x65,0x80,0x75,0x80,0x19,0xC0,0x19,0xC0,0x37,0x20,0x00,0x00,}}, +{ 0x74E2, {0x00,0x40,0xFD,0x80,0xFF,0x80,0xFD,0x80,0xFD,0x80,0x05,0x80,0x75,0x80,0x05,0x80,0xFD,0x80,0x79,0xC0,0xEF,0xC0,0x70,0x20,0x00,0x00,}}, +{ 0x74E3, {0x61,0x80,0x62,0xC0,0xFF,0xE0,0x6F,0xC0,0x6F,0xC0,0xFF,0xE0,0x6E,0x80,0x7E,0xC0,0xEF,0xE0,0x77,0x80,0x7D,0x80,0xA0,0x80,0x00,0x00,}}, +{ 0x74E6, {0x00,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x00,0x11,0x00,0x11,0x00,0x19,0x00,0x25,0x00,0x25,0x00,0x27,0x20,0x39,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x74E7, {0x01,0x80,0xFF,0x80,0x61,0x80,0x79,0x80,0x6F,0xE0,0x69,0x80,0x69,0x80,0x79,0x80,0x79,0x80,0x79,0xA0,0x78,0x20,0xC7,0xE0,0x00,0x00,}}, +{ 0x74E9, {0x00,0x40,0xFC,0x80,0x63,0x80,0x79,0x80,0x69,0x80,0x6F,0xE0,0x79,0x80,0x79,0x80,0x69,0x80,0x79,0xA0,0x78,0x20,0xC7,0xE0,0x00,0x00,}}, +{ 0x74EE, {0x1F,0x00,0x11,0x00,0xE4,0xE0,0x8F,0x20,0x3E,0x80,0x00,0x00,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x17,0xA0,0x3F,0xA0,0xE0,0xE0,0x00,0x00,}}, +{ 0x74F0, {0x01,0x80,0xFC,0x80,0x61,0x40,0x7A,0x40,0x6F,0xE0,0x69,0x40,0x79,0x40,0x7B,0x40,0x6E,0xC0,0x78,0xA0,0x78,0x20,0xC7,0xE0,0x00,0x00,}}, +{ 0x74F1, {0x00,0x40,0xFD,0x80,0x67,0x00,0x79,0xC0,0x6F,0x00,0x69,0x00,0x79,0xE0,0x7F,0x00,0x69,0x00,0x79,0xE0,0x78,0x20,0xC7,0xE0,0x00,0x00,}}, +{ 0x74F2, {0x01,0x80,0xFD,0xE0,0x67,0x80,0x7B,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x69,0x80,0x78,0xE0,0x78,0x20,0xC7,0xE0,0x00,0x00,}}, +{ 0x74F6, {0x48,0x00,0x4F,0xE0,0x52,0x00,0xFB,0x80,0x52,0x80,0x53,0x80,0xFF,0x80,0x52,0x80,0x52,0x80,0x53,0xA0,0x5C,0x60,0x90,0x20,0x00,0x00,}}, +{ 0x74F7, {0x04,0x00,0x04,0x00,0xE7,0xE0,0x3B,0x40,0xC5,0x80,0x18,0xC0,0xFF,0xE0,0x30,0x00,0x3F,0x80,0x25,0xA0,0x7F,0xA0,0xE0,0xE0,0x00,0x00,}}, +{ 0x74F8, {0x00,0x00,0xFF,0xE0,0x61,0x00,0x7B,0xC0,0x6A,0x40,0x6B,0xC0,0x7A,0x40,0x7A,0x40,0x6B,0xC0,0x78,0x20,0x78,0x20,0xC7,0xE0,0x00,0x00,}}, +{ 0x7503, {0x09,0x80,0x71,0xA0,0xFB,0xA0,0xFF,0xC0,0x79,0x40,0xA2,0x20,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x17,0xA0,0x3F,0xA0,0xE0,0xE0,0x00,0x00,}}, +{ 0x7504, {0x00,0x00,0xFF,0xE0,0xF9,0x00,0xFD,0xC0,0xF5,0x40,0xFD,0x40,0xA5,0xC0,0x31,0xC0,0xFD,0x40,0x21,0x60,0x39,0xE0,0xE6,0x20,0x00,0x00,}}, +{ 0x7505, {0x00,0x00,0xFF,0xE0,0x47,0xC0,0x77,0xC0,0x57,0xC0,0x57,0xC0,0x77,0xC0,0x75,0x80,0x5B,0xC0,0x5F,0xE0,0x70,0x20,0xCF,0xE0,0x00,0x00,}}, +{ 0x750C, {0x00,0x00,0xFF,0xE0,0xB9,0x00,0xF9,0xC0,0xF9,0x40,0x81,0x40,0xFD,0xC0,0xF5,0xC0,0xFD,0x60,0xF9,0x60,0xFD,0xA0,0x86,0x20,0x00,0x00,}}, +{ 0x750D, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xE0,0x40,0x40,0xBF,0x80,0x7F,0x00,0x7F,0xA0,0x3F,0xA0,0xE0,0xE0,0x00,0x00,}}, +{ 0x750E, {0x20,0x00,0xFF,0xE0,0x79,0x00,0x79,0xC0,0x79,0x40,0x79,0x40,0x29,0xC0,0xFD,0xC0,0xF9,0x60,0xF9,0x60,0x51,0xA0,0x36,0x20,0x00,0x00,}}, +{ 0x7511, {0x88,0x00,0x53,0xE0,0xFD,0x00,0xFD,0xC0,0xB5,0x40,0xFD,0x40,0x01,0xC0,0x7A,0xC0,0x4A,0x40,0x7B,0x60,0x7E,0x60,0x48,0x20,0x00,0x00,}}, +{ 0x7513, {0x01,0x80,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0xE9,0x80,0x79,0x80,0xFF,0xE0,0x1F,0x00,0x1F,0xA0,0x3F,0xA0,0xE0,0xE0,0x00,0x00,}}, +{ 0x7515, {0x04,0x00,0xFF,0xE0,0x63,0xE0,0x7F,0xE0,0x3B,0xC0,0xFB,0xC0,0x12,0x80,0x33,0xE0,0x7F,0xC0,0x7F,0x20,0x35,0xA0,0xFA,0xE0,0x00,0x00,}}, +{ 0x7518, {0x10,0x80,0x10,0x80,0x10,0x80,0x7F,0xE0,0x10,0x80,0x10,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x751A, {0x11,0x00,0x7F,0xC0,0x11,0x00,0x1F,0x00,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x2A,0x00,0x2B,0xC0,0x30,0x00,0x3F,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x751C, {0x1A,0x40,0x62,0x40,0x22,0x40,0xFF,0xE0,0x22,0x40,0x22,0x40,0x22,0x40,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x00,0x00,}}, +{ 0x751E, {0x24,0x80,0x35,0x80,0x7F,0xE0,0x9F,0x00,0x31,0x80,0x3F,0x80,0x21,0x80,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x751F, {0x04,0x00,0x24,0x00,0x24,0x00,0x3F,0xC0,0x64,0x00,0x44,0x00,0x84,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7523, {0x04,0x00,0x7F,0xE0,0x11,0x00,0x7F,0xE0,0x4A,0x00,0x4A,0x00,0x5F,0xC0,0x72,0x00,0x5F,0x80,0x42,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7525, {0x10,0x00,0x37,0xE0,0x3C,0xA0,0x37,0xE0,0x54,0xA0,0x14,0xA0,0x3F,0xE0,0x11,0x80,0x17,0xE0,0x19,0x20,0x62,0x20,0x0C,0x40,0x00,0x00,}}, +{ 0x7526, {0x01,0x80,0xFF,0x80,0x7B,0x80,0x7B,0xE0,0x7D,0x80,0x6D,0x80,0x7B,0xC0,0xE9,0x80,0x67,0xE0,0x67,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x7528, {0x00,0x00,0x1F,0xC0,0x12,0x40,0x12,0x40,0x1F,0xC0,0x12,0x40,0x12,0x40,0x1F,0xC0,0x12,0x40,0x12,0x40,0x22,0x40,0x40,0x40,0x00,0x00,}}, +{ 0x752B, {0x04,0x80,0x04,0x40,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x752C, {0x00,0x00,0x7F,0xC0,0x1F,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x7530, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,0x00,0x00,}}, +{ 0x7531, {0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x7532, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7533, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7537, {0x00,0x00,0x1F,0xC0,0x12,0x40,0x1F,0xC0,0x12,0x40,0x12,0x40,0x1F,0xC0,0x02,0x00,0x7F,0xE0,0x04,0x20,0x18,0x20,0x60,0xC0,0x00,0x00,}}, +{ 0x7538, {0x10,0x00,0x18,0x00,0x1F,0xE0,0x30,0x20,0x3F,0xA0,0x74,0xA0,0x34,0xA0,0x3F,0xA0,0x34,0xA0,0x3F,0xA0,0x31,0xA0,0x00,0xC0,0x00,0x00,}}, +{ 0x753A, {0x00,0x00,0x7E,0x00,0x53,0xE0,0x52,0x80,0x7E,0x80,0x52,0x80,0x52,0x80,0x52,0x80,0x7E,0x80,0x00,0x80,0x00,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x753B, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x5F,0x40,0x55,0x40,0x55,0x40,0x5F,0x40,0x55,0x40,0x55,0x40,0x5F,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x753C, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x7544, {0x08,0x40,0x44,0x40,0x64,0x80,0x01,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x7546, {0x21,0x80,0x21,0x80,0xF9,0x80,0xF9,0x80,0x79,0x80,0x69,0x80,0x69,0x80,0x79,0xC0,0x69,0x40,0x69,0xE0,0x7E,0x20,0x48,0x20,0x00,0x00,}}, +{ 0x7549, {0x01,0x00,0x01,0x00,0xFF,0xC0,0xFF,0xC0,0xF1,0x00,0xF1,0x00,0xFF,0xE0,0xF3,0x00,0xF3,0x80,0xF4,0x80,0x08,0x40,0x10,0x20,0x00,0x00,}}, +{ 0x754A, {0x02,0x80,0x02,0x80,0xFF,0xE0,0xFF,0xE0,0xF2,0x80,0xF2,0x80,0xF2,0x80,0xFF,0xE0,0xF6,0x80,0xF4,0x80,0x08,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x754B, {0x02,0x00,0x02,0x00,0xF3,0xE0,0xF7,0xE0,0xF6,0x80,0xFA,0x80,0xF1,0x80,0xF1,0x80,0xF1,0x80,0xF1,0x80,0x06,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x754C, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x0A,0x00,0x31,0x80,0xD1,0x60,0x11,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x754D, {0x01,0x00,0x01,0x00,0xF3,0x00,0xF3,0x80,0xF4,0x80,0xFA,0xC0,0xF3,0xA0,0xF3,0x80,0xF7,0x80,0xF5,0x80,0x09,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x754F, {0x00,0x00,0x7F,0x80,0x44,0x80,0x7F,0x80,0x44,0x80,0x7F,0x80,0x00,0x00,0xFF,0xE0,0x22,0x80,0x2F,0x00,0x31,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x7551, {0x10,0x00,0x11,0xE0,0x11,0x60,0x15,0x60,0x39,0x60,0x31,0xE0,0x51,0x60,0x11,0x60,0x19,0x60,0x25,0xE0,0x25,0x20,0x40,0x00,0x00,0x00,}}, +{ 0x7554, {0x01,0x00,0x09,0x40,0xF5,0x40,0xB1,0x00,0xBF,0xC0,0xB1,0x00,0xF1,0x00,0xBF,0xE0,0xB1,0x00,0xF1,0x00,0x81,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x7559, {0x0C,0x00,0x33,0xE0,0x20,0xA0,0x2D,0x20,0x32,0x20,0x44,0x40,0x1F,0xC0,0x12,0x40,0x1F,0xC0,0x12,0x40,0x1F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x755A, {0x08,0x00,0x0B,0x00,0x7F,0xC0,0x7C,0x00,0xFF,0xE0,0x11,0x00,0x61,0x80,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x755B, {0x01,0x00,0x03,0x00,0xF3,0x80,0xF4,0x80,0xF8,0xC0,0xF3,0x20,0xFC,0x80,0xF1,0x00,0xFE,0x40,0xF8,0x80,0x03,0x00,0x1C,0x00,0x00,0x00,}}, +{ 0x755C, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3B,0x00,0x15,0x00,0x0F,0x80,0xF8,0x40,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x755D, {0x21,0x00,0x21,0x00,0xF9,0xC0,0x01,0x40,0x7A,0x40,0x6C,0x80,0x68,0x80,0x78,0x80,0x69,0x40,0x7A,0x40,0x4C,0x20,0x08,0x20,0x00,0x00,}}, +{ 0x7560, {0x04,0x00,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x00,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x7562, {0x00,0x00,0x7F,0x80,0x44,0x80,0x7F,0x80,0x7F,0x80,0x25,0x80,0xFF,0xE0,0x35,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7564, {0x01,0x00,0x03,0x00,0xFF,0xC0,0xF1,0x00,0xFF,0xE0,0xF0,0x80,0xF0,0x80,0xFF,0xE0,0xF4,0x80,0xF2,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x7565, {0x01,0x00,0x01,0x00,0xF3,0xC0,0xB6,0x40,0xB9,0x80,0xF1,0x80,0xB6,0x40,0xBB,0xE0,0xB2,0x40,0xF2,0x40,0x83,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x7566, {0x01,0x00,0x01,0x00,0xFF,0xC0,0xD1,0x00,0xDF,0xE0,0xD1,0x00,0xF1,0x00,0xDF,0xC0,0xD1,0x00,0xF1,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7567, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x08,0x00,0x1F,0x80,0x73,0x00,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7569, {0x01,0x00,0x01,0x00,0xFF,0xE0,0xFF,0xE0,0xF3,0x40,0xF5,0x40,0xF5,0x80,0xFD,0x80,0xF4,0x80,0xF4,0x80,0x06,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x756A, {0x01,0x80,0x7E,0x80,0x25,0x00,0xFF,0xE0,0x0E,0x00,0x15,0x00,0x64,0x80,0xBF,0xE0,0x24,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x756B, {0x04,0x00,0x7F,0xC0,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x7F,0x80,0x64,0x80,0x7F,0x80,0x7F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x756D, {0x01,0x00,0x03,0x00,0xF6,0x80,0xFF,0xC0,0xF3,0x20,0xF1,0x00,0xFF,0xE0,0xF1,0x00,0xF5,0x40,0xF9,0x20,0x11,0x20,0x03,0x00,0x00,0x00,}}, +{ 0x7570, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x09,0x00,0x10,0x80,0x60,0x40,0x00,0x00,}}, +{ 0x7573, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x00,0x00,0x7F,0xE0,0x5F,0x40,0x91,0x00,0x1F,0x00,0x11,0x00,0x1F,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x7574, {0x01,0x00,0x03,0x00,0xFF,0xE0,0xF7,0xC0,0xF3,0x00,0xFF,0xE0,0xF2,0x80,0xFF,0xE0,0xF6,0x80,0xF9,0x80,0x10,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x7576, {0x24,0x80,0x35,0x80,0x7F,0xE0,0x9F,0x00,0x31,0x80,0x3F,0x80,0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7577, {0x00,0x00,0x0F,0xC0,0xFB,0x40,0xBC,0xC0,0xB6,0x80,0xF9,0x40,0xBF,0xC0,0xB3,0x40,0xBC,0xC0,0xF6,0x80,0x8B,0xC0,0x11,0x20,0x00,0x00,}}, +{ 0x7578, {0x01,0x00,0x03,0x00,0xFF,0xC0,0xF3,0x00,0xF4,0x80,0xFF,0xE0,0xF0,0x40,0xF7,0xC0,0xF7,0xC0,0xF7,0xC0,0x00,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x757F, {0x65,0x80,0x55,0x40,0xF7,0xC0,0x75,0xC0,0xFF,0xE0,0x0B,0xA0,0xFF,0xE0,0x7A,0x40,0x79,0x40,0x79,0x80,0x79,0xA0,0x46,0x60,0x00,0x00,}}, +{ 0x7582, {0x3F,0x80,0x35,0x80,0x3F,0x80,0x7F,0xC0,0x3B,0x80,0x60,0xC0,0x7F,0xE0,0xFF,0xC0,0xBF,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7586, {0x00,0x00,0xFF,0xE0,0x17,0xC0,0x77,0xC0,0x47,0x40,0x77,0xC0,0x5F,0xE0,0x77,0xC0,0x77,0xC0,0x77,0xC0,0xD7,0xC0,0x6F,0xE0,0x00,0x00,}}, +{ 0x7587, {0x01,0x00,0x0F,0xC0,0xF7,0x80,0xFF,0xE0,0xF7,0xC0,0xF1,0x00,0xF7,0x80,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x0E,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x7589, {0x3F,0x80,0x35,0x80,0x3F,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x7F,0xC0,0x7F,0xE0,0x8F,0x40,0x1F,0x00,0x35,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x758A, {0x3F,0x80,0x35,0x80,0x3F,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7F,0xE0,0xFF,0xC0,0x3F,0x80,0x31,0x80,0xFF,0xE0,0x00,0x00,}}, +{ 0x758B, {0x00,0x00,0xFF,0xE0,0x04,0x40,0x04,0x80,0x24,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0x34,0x00,0x6C,0x00,0x46,0x00,0x81,0xE0,0x00,0x00,}}, +{ 0x758E, {0x01,0x00,0xF9,0x00,0x1F,0xE0,0x2F,0xC0,0x69,0x40,0x79,0x40,0x6F,0xC0,0x63,0x80,0x67,0x80,0x79,0x40,0x71,0x20,0xC1,0x00,0x00,0x00,}}, +{ 0x758F, {0x01,0x00,0xF9,0x00,0x1F,0xE0,0x32,0xC0,0x2F,0xA0,0x60,0x80,0x75,0x80,0x65,0x80,0x65,0x80,0x75,0xA0,0x68,0xA0,0xD0,0x60,0x00,0x00,}}, +{ 0x7591, {0x40,0x00,0x5F,0xC0,0x62,0x80,0x79,0x80,0x47,0xE0,0x79,0x40,0x55,0x00,0xFD,0xC0,0x35,0x00,0x2F,0x00,0x49,0x80,0x90,0x60,0x00,0x00,}}, +{ 0x7594, {0x01,0x00,0x03,0x00,0x3F,0xE0,0xA0,0x00,0x7F,0xE0,0x21,0x00,0x61,0x00,0xE1,0x00,0xA1,0x00,0x61,0x00,0x41,0x00,0x83,0x00,0x00,0x00,}}, +{ 0x759A, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA2,0x00,0x67,0x80,0x24,0x80,0x69,0x80,0xF1,0x00,0xA3,0x00,0x67,0x00,0x58,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x759D, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA1,0x00,0x69,0x40,0x29,0x40,0x69,0x40,0xE9,0x40,0xA9,0x40,0x69,0x40,0x4F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x75A3, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA2,0x40,0x7F,0xE0,0x22,0x00,0x63,0x00,0xE3,0x00,0xA5,0x00,0x69,0x20,0x51,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x75A5, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA1,0x00,0x63,0x00,0x24,0x80,0x6D,0xC0,0xF5,0xA0,0xA5,0x80,0x65,0x80,0x49,0x80,0x91,0x80,0x00,0x00,}}, +{ 0x75AB, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA7,0x00,0x65,0x20,0x25,0x20,0x68,0xE0,0xBF,0x80,0x24,0x80,0x43,0x00,0x45,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x75B1, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA4,0x00,0x6F,0xC0,0x30,0x40,0x6F,0x40,0xEB,0x40,0xAF,0xC0,0x69,0xA0,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x75B2, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA2,0x00,0x6F,0xC0,0x2A,0x40,0x2F,0x80,0x6C,0x80,0xAA,0x80,0x49,0x00,0x52,0x80,0xAC,0x60,0x00,0x00,}}, +{ 0x75B3, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA4,0x80,0x7F,0xE0,0x24,0x80,0x64,0x80,0xE7,0x80,0xA4,0x80,0x64,0x80,0x47,0x80,0x84,0x80,0x00,0x00,}}, +{ 0x75B5, {0x02,0x00,0x02,0x00,0x7F,0xE0,0xE5,0x80,0x75,0x80,0x75,0xA0,0x77,0xC0,0xF5,0x80,0xF5,0x80,0x57,0xA0,0x5D,0xA0,0xF0,0xE0,0x00,0x00,}}, +{ 0x75B8, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAF,0x80,0x68,0x80,0x28,0x80,0x6F,0x80,0xE8,0x80,0xAF,0x80,0x67,0x80,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x75B9, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA6,0x00,0x69,0x80,0x31,0x60,0x26,0x00,0x61,0x00,0xA6,0x40,0x20,0x80,0x43,0x00,0x9C,0x00,0x00,0x00,}}, +{ 0x75BC, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA3,0x80,0x64,0x80,0x3A,0x80,0x63,0x00,0xFD,0xC0,0xB3,0x60,0x6E,0x00,0x43,0x00,0x80,0x80,0x00,0x00,}}, +{ 0x75BD, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAF,0x80,0x68,0x80,0x28,0x80,0x6F,0x80,0xE8,0x80,0xAF,0x80,0x68,0x80,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x75BE, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA4,0x00,0x67,0xC0,0x29,0x00,0x71,0x00,0xBF,0xE0,0x23,0x00,0x24,0x80,0x48,0x40,0xB0,0x20,0x00,0x00,}}, +{ 0x75C2, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA8,0x00,0x7E,0xC0,0x2B,0xC0,0x6B,0xC0,0xEB,0xC0,0xAB,0xC0,0x6B,0xC0,0x53,0xC0,0xA6,0x00,0x00,0x00,}}, +{ 0x75C3, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA1,0x00,0x7F,0xE0,0x21,0x00,0x62,0x80,0xEE,0x80,0xA1,0x80,0x62,0xC0,0x7F,0xA0,0x80,0x20,0x00,0x00,}}, +{ 0x75C5, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAF,0xC0,0x61,0x00,0x2F,0xC0,0x69,0x40,0xAB,0x40,0x2C,0xC0,0x48,0x40,0x48,0x40,0x88,0xC0,0x00,0x00,}}, +{ 0x75C7, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA0,0x00,0x6F,0xC0,0x21,0x00,0x21,0x00,0x69,0xC0,0xA9,0x00,0x29,0x00,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x75CA, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA7,0x00,0x64,0x80,0x3F,0xE0,0x61,0x00,0xE3,0x00,0xAF,0xC0,0x61,0x00,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x75CD, {0x02,0x00,0x3F,0xE0,0xBF,0xE0,0x7F,0xE0,0x2F,0xC0,0x21,0x40,0x6F,0xC0,0xBB,0x00,0x3F,0xE0,0x63,0xE0,0x4C,0xC0,0xB0,0x60,0x00,0x00,}}, +{ 0x75D2, {0x01,0x00,0x03,0x00,0x3F,0xE0,0xA6,0x80,0x7F,0xE0,0x21,0x00,0x6F,0xC0,0xE1,0x00,0xBF,0xE0,0x7F,0xE0,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x75D4, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA1,0x00,0x6F,0xC0,0x21,0x00,0x3F,0xE0,0x60,0x80,0xBF,0xE0,0x24,0x80,0x44,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x75D5, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAF,0x80,0x68,0x80,0x2F,0x80,0x68,0x80,0xAF,0xC0,0x29,0x40,0x69,0x80,0x4E,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x75D8, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xBF,0xC0,0x60,0x00,0x2F,0x80,0x28,0x80,0x68,0x80,0xAF,0x80,0x24,0x80,0x45,0x00,0xBF,0xE0,0x00,0x00,}}, +{ 0x75D9, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xBF,0xE0,0x7B,0x40,0x29,0x40,0x72,0x80,0xEB,0x40,0xAF,0xC0,0x61,0x00,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x75DB, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAF,0x80,0x65,0x00,0x23,0x00,0x2F,0xC0,0x6A,0x40,0xAF,0xC0,0x2F,0xC0,0x4A,0x40,0x8A,0xC0,0x00,0x00,}}, +{ 0x75DE, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xBF,0xE0,0x73,0x80,0x27,0xC0,0x79,0x20,0xE3,0x00,0xAF,0xC0,0x68,0x40,0x4F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x75E2, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA7,0x40,0x7D,0x40,0x25,0x40,0x3F,0x40,0x6D,0x40,0xAF,0x40,0x55,0x40,0x44,0x40,0x84,0xC0,0x00,0x00,}}, +{ 0x75E3, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA1,0x00,0x7F,0xE0,0x21,0x00,0x6F,0xC0,0xE1,0x00,0xB5,0x80,0x74,0x20,0x74,0xA0,0x83,0x80,0x00,0x00,}}, +{ 0x75E9, {0x02,0x00,0x3F,0xE0,0x21,0x00,0xAF,0xC0,0x6F,0xC0,0x29,0x40,0x6F,0xC0,0xA3,0x00,0x2F,0xC0,0x23,0x80,0x47,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x75F0, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA9,0x40,0x69,0xC0,0x33,0x80,0x65,0x60,0xF9,0x40,0xA9,0x40,0x7B,0x80,0x4C,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x75F2, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA4,0x80,0x7F,0xE0,0x24,0x80,0x6F,0xC0,0xEF,0xC0,0xAF,0xE0,0x7F,0xE0,0x76,0xC0,0x84,0x80,0x00,0x00,}}, +{ 0x75F3, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA4,0x80,0x7F,0xE0,0x24,0x80,0x6F,0xC0,0xEF,0xC0,0xBD,0xE0,0x76,0xA0,0x74,0x80,0x84,0x80,0x00,0x00,}}, +{ 0x75F4, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA8,0x00,0x6F,0xC0,0x35,0x40,0x25,0x40,0x7F,0x40,0xA5,0x40,0x6F,0xC0,0x53,0x40,0xA0,0x00,0x00,0x00,}}, +{ 0x75FA, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAF,0xC0,0x6B,0x40,0x2F,0xC0,0x69,0x40,0xEF,0xC0,0xA7,0x80,0x7F,0xE0,0x41,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x75FC, {0x02,0x00,0x02,0x00,0x7F,0xE0,0xFF,0xC0,0x72,0x40,0x7F,0xC0,0x72,0x40,0xF7,0xC0,0xF7,0xC0,0x57,0x40,0x5F,0xC0,0x90,0x40,0x00,0x00,}}, +{ 0x75FE, {0x02,0x00,0x02,0x00,0x7F,0xE0,0xFF,0xE0,0x74,0x40,0x7B,0x40,0x7B,0xC0,0xF7,0xC0,0xF7,0xC0,0x5C,0x40,0x50,0x40,0x90,0xC0,0x00,0x00,}}, +{ 0x75FF, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA7,0x80,0x7F,0xE0,0x27,0x80,0x79,0x60,0xF3,0x00,0xBF,0xE0,0x6F,0x80,0x43,0x80,0x9C,0x40,0x00,0x00,}}, +{ 0x7601, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xBF,0xE0,0x74,0xC0,0x24,0x80,0x6D,0x40,0xF3,0x20,0xBF,0xE0,0x7F,0xE0,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x7609, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xA7,0x00,0x6F,0x80,0x30,0x60,0x7F,0xC0,0xFB,0xC0,0xBF,0x80,0x7F,0xC0,0x53,0xC0,0x97,0xC0,0x00,0x00,}}, +{ 0x760B, {0x02,0x00,0x7F,0xE0,0xEF,0x80,0x7F,0x80,0x7E,0x80,0x7F,0x80,0x7B,0x80,0xFB,0x80,0x7F,0xE0,0x73,0xE0,0x7C,0xE0,0xE0,0x20,0x00,0x00,}}, +{ 0x760D, {0x02,0x00,0x3F,0xE0,0xAF,0x80,0x6F,0x80,0x28,0x80,0x2F,0x80,0x7F,0xE0,0xA8,0x00,0x3F,0xC0,0x75,0x40,0x4A,0x40,0x94,0x80,0x00,0x00,}}, +{ 0x761F, {0x02,0x00,0x3F,0xE0,0xA7,0x80,0x6F,0x80,0x2B,0x80,0x2D,0x80,0x6F,0x80,0xA0,0x00,0x2F,0xC0,0x6B,0xC0,0x7F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x7620, {0x02,0x00,0x3F,0xE0,0xB9,0x60,0x79,0x60,0x3F,0xE0,0x24,0x80,0x7F,0xE0,0xA4,0x80,0x27,0x80,0x67,0x80,0x44,0x80,0x84,0x80,0x00,0x00,}}, +{ 0x7621, {0x02,0x00,0x3F,0xE0,0xA3,0x00,0x67,0x80,0x3F,0xE0,0x24,0x80,0x67,0x80,0xA7,0x80,0x27,0xC0,0x6F,0xC0,0x57,0xC0,0xA4,0x40,0x00,0x00,}}, +{ 0x7622, {0x02,0x00,0x7F,0xE0,0xE4,0xC0,0x7F,0xC0,0x73,0xC0,0x7B,0xE0,0x77,0x20,0xFF,0xC0,0x7B,0xC0,0x5A,0xC0,0x7A,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x7624, {0x02,0x00,0x3F,0xE0,0x27,0xC0,0xAD,0xC0,0x6B,0xC0,0x3F,0xC0,0x62,0x00,0xEF,0xC0,0xAF,0xC0,0x6F,0xC0,0x4F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x7627, {0x02,0x00,0x3F,0xE0,0xA1,0xC0,0x6F,0xE0,0x2B,0xC0,0x2F,0x40,0x69,0xC0,0xAB,0xC0,0x3F,0xE0,0x7F,0xE0,0x73,0xC0,0xE2,0x00,0x00,0x00,}}, +{ 0x7630, {0x02,0x00,0x3F,0xE0,0xAF,0xC0,0x6F,0xC0,0x2B,0x40,0x2F,0xC0,0x62,0x80,0xAD,0xC0,0x3F,0xE0,0x7F,0xE0,0x59,0x20,0x81,0x00,0x00,0x00,}}, +{ 0x7634, {0x02,0x00,0x3F,0xE0,0xA7,0xC0,0x67,0xC0,0x3F,0xE0,0x27,0x80,0x64,0x80,0xA7,0x80,0x27,0x80,0x7F,0xE0,0x43,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x763B, {0x02,0x00,0x3F,0xE0,0xA7,0xC0,0x7F,0xE0,0x3F,0xC0,0x21,0x00,0x6F,0xC0,0xAF,0xC0,0x3F,0xE0,0x6F,0xE0,0x43,0x80,0x9E,0x40,0x00,0x00,}}, +{ 0x7642, {0x02,0x00,0x3F,0xE0,0x22,0x00,0xBF,0xE0,0x74,0xC0,0x2F,0xC0,0x74,0xA0,0xA7,0x80,0x27,0x80,0x2D,0x40,0x51,0x20,0x83,0x00,0x00,0x00,}}, +{ 0x7646, {0x02,0x00,0x3F,0xE0,0xB7,0xA0,0x77,0xE0,0x3B,0xC0,0x33,0x20,0x7F,0xE0,0xB2,0x40,0x3F,0xC0,0x64,0x40,0x48,0x40,0xB0,0x80,0x00,0x00,}}, +{ 0x7647, {0x02,0x00,0x7F,0xE0,0xEF,0xC0,0x7F,0xC0,0x7F,0xC0,0x73,0x40,0x7F,0xC0,0xF7,0xC0,0x77,0xC0,0x57,0xC0,0x57,0xC0,0x95,0xC0,0x00,0x00,}}, +{ 0x7648, {0x02,0x00,0x3F,0xE0,0xB7,0x80,0x7F,0xA0,0x38,0xC0,0x3D,0xA0,0x65,0xA0,0xBE,0xE0,0x3F,0xC0,0x6D,0xC0,0x45,0x80,0x9B,0x60,0x00,0x00,}}, +{ 0x764C, {0x02,0x00,0x3F,0xE0,0x27,0x80,0xA4,0x80,0x67,0x80,0x3E,0xE0,0x72,0xA0,0xBE,0xE0,0x31,0x20,0x29,0x40,0x4F,0xC0,0x88,0x40,0x00,0x00,}}, +{ 0x7652, {0x02,0x00,0x3F,0xE0,0x3F,0x80,0xBF,0xE0,0x6F,0xC0,0x2B,0xC0,0x6F,0xC0,0xAE,0xC0,0x2A,0x40,0x77,0x40,0x54,0xE0,0xA3,0xA0,0x00,0x00,}}, +{ 0x7656, {0x02,0x00,0x02,0x00,0x3F,0xE0,0xAE,0x80,0x6B,0xE0,0x2B,0x40,0x2F,0x80,0x69,0xE0,0xAE,0x80,0x5B,0xE0,0x6E,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x7658, {0x02,0x00,0x3F,0xE0,0xBF,0xE0,0x7F,0xE0,0x2B,0x40,0x2F,0xC0,0x69,0x40,0xBF,0xC0,0x3F,0xE0,0x71,0xE0,0x5E,0x60,0x90,0x60,0x00,0x00,}}, +{ 0x765C, {0x02,0x00,0x7F,0xE0,0xEF,0xC0,0x7F,0xC0,0x7F,0xE0,0x7B,0xE0,0x7F,0x20,0xFB,0xC0,0x7F,0xC0,0x7F,0x80,0x6B,0xC0,0x91,0x20,0x00,0x00,}}, +{ 0x7661, {0x02,0x00,0x3F,0xE0,0xAB,0xE0,0x6F,0xE0,0x2A,0xC0,0x27,0xE0,0x68,0xA0,0xBF,0xC0,0x3F,0xE0,0x7F,0x80,0x53,0x80,0xA2,0x60,0x00,0x00,}}, +{ 0x7662, {0x02,0x00,0x3F,0xE0,0xBF,0xE0,0x7F,0xE0,0x2F,0xC0,0x3F,0xE0,0x65,0x80,0xBF,0xC0,0x37,0xA0,0x67,0xC0,0x47,0xC0,0x9E,0x40,0x00,0x00,}}, +{ 0x7667, {0x02,0x00,0x7F,0xE0,0xEF,0xE0,0x7F,0xE0,0x74,0xC0,0x7F,0xE0,0x76,0xC0,0xFD,0xA0,0x71,0xC0,0x75,0xC0,0x7F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x7668, {0x02,0x00,0x3F,0xE0,0xAF,0xC0,0x7F,0xE0,0x3F,0xC0,0x2D,0xC0,0x6F,0xC0,0xB9,0x80,0x2F,0xC0,0x6F,0xC0,0x4F,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x7669, {0x02,0x00,0x7F,0xE0,0xFF,0xC0,0x7F,0xC0,0x7F,0xC0,0x6B,0xC0,0x6B,0x40,0xFF,0xC0,0x7F,0xC0,0x7B,0xC0,0x69,0xC0,0x8B,0x20,0x00,0x00,}}, +{ 0x766A, {0x02,0x00,0x7F,0xE0,0xFF,0xC0,0x7B,0xC0,0x6B,0xE0,0x7F,0xC0,0x69,0x40,0xFF,0xC0,0x7B,0xC0,0x6B,0xC0,0x49,0xC0,0x8B,0x20,0x00,0x00,}}, +{ 0x766C, {0x02,0x00,0x7F,0xE0,0xEF,0x40,0x7D,0xC0,0x7F,0xE0,0x6A,0x80,0x7E,0xC0,0xFA,0xC0,0x7F,0xE0,0x7E,0x80,0x6B,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x7670, {0x02,0x00,0x7F,0xE0,0xFF,0xC0,0x7F,0xE0,0x7F,0xC0,0x73,0xC0,0x7F,0xE0,0xFF,0xC0,0x7F,0xE0,0x7D,0xC0,0x63,0xE0,0x9F,0x80,0x00,0x00,}}, +{ 0x7672, {0x02,0x00,0x7F,0xE0,0xFF,0xE0,0x7F,0xE0,0x6E,0xC0,0x6F,0xC0,0x6F,0xC0,0xEF,0xC0,0x6F,0xC0,0x7F,0xC0,0x4A,0xC0,0xB1,0xA0,0x00,0x00,}}, +{ 0x7676, {0x00,0x00,0x00,0x00,0x1D,0x80,0x0F,0x40,0x4A,0x40,0x31,0x80,0x20,0x80,0x40,0xC0,0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0x7678, {0x3A,0x80,0x0A,0x80,0x51,0x20,0x31,0x60,0x3F,0xC0,0x44,0x40,0x84,0x20,0x7F,0xC0,0x04,0x00,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x767A, {0x3A,0x80,0x0A,0x80,0x51,0x20,0x20,0xC0,0x3F,0x80,0x49,0x40,0x89,0x20,0x7F,0xC0,0x09,0x00,0x11,0x20,0x21,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x767B, {0x3A,0x80,0x0A,0x80,0x51,0x20,0x21,0x40,0x3F,0xC0,0x40,0x40,0x9F,0x20,0x11,0x00,0x1F,0x00,0x0A,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x767C, {0x3A,0x80,0x0A,0xA0,0x71,0xA0,0x73,0xC0,0xD3,0xA0,0x13,0xC0,0x74,0xC0,0x4F,0x80,0x72,0x80,0x13,0x00,0x33,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x767D, {0x04,0x00,0x08,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x00,}}, +{ 0x767E, {0x00,0x00,0xFF,0xE0,0x08,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7680, {0x04,0x00,0x08,0x00,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x61,0x80,0x7E,0x00,0x78,0x40,0x60,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0x7683, {0x04,0x00,0x08,0x00,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x52,0x40,0x12,0x00,0x12,0x00,0x22,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x7684, {0x11,0x00,0x21,0x00,0x41,0xE0,0x7A,0x20,0x4A,0x20,0x4D,0x20,0x78,0xA0,0x48,0xA0,0x48,0x20,0x78,0x20,0x40,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x7686, {0x42,0x00,0x42,0xC0,0x7F,0x00,0x42,0x20,0x77,0xE0,0xC8,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7687, {0x04,0x00,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x00,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x7688, {0x60,0x00,0x47,0xE0,0xE4,0x00,0xE7,0xC0,0xA6,0x40,0xE6,0x40,0xA5,0x80,0xA5,0x80,0xE9,0x80,0xF9,0x80,0x36,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x768B, {0x04,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x35,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x768E, {0x61,0x00,0x43,0x00,0xFF,0xE0,0xE4,0x40,0xA8,0xE0,0xF4,0xA0,0xA4,0x80,0xA3,0x80,0xE3,0x00,0xE3,0x00,0x0C,0xC0,0x30,0x20,0x00,0x00,}}, +{ 0x7690, {0x08,0x00,0x10,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x35,0x80,0x04,0x00,0x35,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7693, {0x61,0x00,0x45,0x00,0xE7,0xC0,0xEF,0xC0,0xB1,0x00,0xFF,0xE0,0xA0,0x00,0xA7,0x80,0xE4,0x80,0xE4,0x80,0x07,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x7696, {0x61,0x00,0x43,0x00,0xEF,0xE0,0xFF,0xC0,0xB0,0x00,0xE0,0x00,0xBF,0xE0,0xA3,0x80,0xE3,0x80,0x05,0xA0,0x19,0xA0,0x20,0xE0,0x00,0x00,}}, +{ 0x7699, {0x20,0xC0,0x33,0x00,0xFB,0xE0,0x7B,0xE0,0x62,0x80,0xAA,0x80,0x34,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x769A, {0x61,0x00,0x49,0x40,0xEF,0xC0,0xE7,0xC0,0xBF,0xE0,0xE0,0x00,0xAF,0xC0,0xA8,0x40,0xEF,0xC0,0xE6,0x80,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76AE, {0x02,0x00,0x02,0x00,0x3F,0xE0,0x22,0x40,0x22,0x00,0x3F,0x80,0x28,0x80,0x25,0x00,0x22,0x00,0x43,0x00,0x4C,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x76B0, {0x21,0x00,0x31,0x00,0x7F,0xE0,0x7B,0xE0,0x77,0xA0,0x7A,0xA0,0x6A,0xA0,0x7B,0xE0,0x52,0x40,0x5A,0x20,0x6A,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x76B4, {0x21,0x80,0x31,0x80,0xFF,0xE0,0xF7,0xC0,0x77,0x80,0x6F,0xC0,0xA3,0x40,0x7B,0xC0,0xFA,0x80,0x34,0x80,0x2D,0x40,0xCA,0x20,0x00,0x00,}}, +{ 0x76B7, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x7B,0xE0,0x03,0x80,0x7B,0xC0,0x4B,0x40,0x7B,0x80,0x57,0x80,0x7D,0x80,0x7A,0x40,0xD4,0x20,0x00,0x00,}}, +{ 0x76B8, {0x01,0x80,0x7D,0x80,0xFF,0xE0,0xFF,0xC0,0x7B,0x80,0x6B,0xC0,0x7B,0x40,0x7B,0xC0,0x7A,0x80,0xFC,0x80,0x35,0x40,0x2A,0x20,0x00,0x00,}}, +{ 0x76B9, {0x20,0x00,0x33,0xE0,0x7F,0xE0,0x7F,0xE0,0x73,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x53,0xC0,0x5F,0xE0,0x69,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x76BA, {0x61,0x80,0x79,0x80,0xFB,0xE0,0xFB,0xC0,0x7B,0x80,0x73,0xC0,0x7B,0x40,0xFB,0xC0,0xFA,0x80,0x7A,0x80,0x6B,0x40,0x54,0x20,0x00,0x00,}}, +{ 0x76BF, {0x00,0x00,0x00,0x00,0x3F,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76C2, {0x00,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0C,0x00,0x7F,0x80,0x6A,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76C3, {0x00,0x00,0xFF,0xE0,0x06,0x00,0x1D,0x80,0xE4,0x40,0x04,0x20,0x3F,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76C6, {0x0F,0x00,0x21,0x00,0x3F,0x80,0x49,0x40,0x89,0x20,0x11,0x00,0x62,0x00,0x3F,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76C8, {0x00,0x00,0x3F,0x00,0x11,0x00,0x1F,0xC0,0x32,0x40,0x2C,0x40,0x4A,0x40,0xB1,0x80,0x3F,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76CA, {0x20,0x80,0x11,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x20,0x80,0x7F,0xC0,0xAA,0xA0,0xAA,0xA0,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76CD, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x11,0x80,0x7E,0x40,0x00,0x00,0x7F,0x80,0x6A,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76D2, {0x04,0x00,0x0A,0x00,0x3F,0x80,0xFF,0xE0,0x3F,0x00,0x21,0x80,0x3F,0x00,0x00,0x00,0x7F,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76D6, {0x21,0x00,0x13,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0x80,0x6A,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76D7, {0x04,0x00,0x44,0x00,0x27,0xE0,0x09,0x40,0x33,0x00,0x24,0x80,0x48,0x60,0x3F,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76DB, {0x02,0x80,0x02,0x40,0x7F,0xE0,0x42,0x80,0x7B,0x00,0x49,0xA0,0xB2,0xE0,0x3F,0xA0,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76DC, {0x24,0x00,0x24,0x00,0x87,0xE0,0x09,0x40,0x31,0x80,0x42,0x80,0x44,0x60,0x7F,0x80,0x6A,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76DE, {0x09,0x80,0xFF,0xE0,0x07,0x00,0x3F,0xA0,0x0B,0xE0,0xFD,0x80,0x07,0x20,0x79,0xE0,0x7F,0xE0,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76DF, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x08,0xC0,0x3F,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76E1, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x52,0x80,0xCB,0x40,0xFF,0xA0,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76E3, {0x01,0x00,0x7D,0x00,0x53,0xE0,0x7A,0x00,0x7C,0x00,0x51,0xC0,0x7C,0x00,0x00,0x00,0x3F,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76E4, {0x20,0x00,0x79,0x80,0x6A,0x60,0x5F,0xE0,0xFA,0x40,0x69,0x80,0x9A,0x60,0x3F,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76E5, {0x24,0x00,0x45,0xC0,0x7F,0xC0,0x6E,0xC0,0x77,0xC0,0x65,0xC0,0x4C,0x40,0x7F,0x80,0x6A,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76E7, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x7F,0xC0,0x63,0x80,0x7F,0x80,0x72,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xC0,0x77,0x40,0xFF,0xE0,0x00,0x00,}}, +{ 0x76EA, {0x27,0x80,0x24,0x80,0x87,0x80,0x1F,0xE0,0x24,0x00,0x6F,0xE0,0x53,0xA0,0x47,0xC0,0x7F,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x76EE, {0x00,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x76F2, {0x04,0x00,0xFF,0xE0,0x20,0x00,0x3F,0x80,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x76F4, {0x02,0x00,0x02,0x00,0xFF,0xE0,0x1F,0x80,0x50,0x80,0x5F,0x80,0x50,0x80,0x5F,0x80,0x50,0x80,0x5F,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x76F8, {0x10,0x00,0x13,0xE0,0x7E,0x20,0x12,0x20,0x13,0xE0,0x3A,0x20,0x36,0x20,0x37,0xE0,0x52,0x20,0x12,0x20,0x13,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x76FB, {0x00,0x00,0x07,0x80,0xE4,0x80,0xB8,0x40,0xFF,0xE0,0xA2,0x00,0xA3,0x80,0xE4,0x80,0xA4,0x80,0xE0,0x80,0xA0,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x76FE, {0x00,0xC0,0x07,0x00,0x7A,0x00,0x7F,0xE0,0x42,0x00,0x5F,0x80,0x50,0x80,0x5F,0x80,0x50,0x80,0x5F,0x80,0x9F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7701, {0x04,0x00,0x24,0x80,0x44,0xE0,0x87,0x00,0x1C,0x00,0xFF,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7704, {0x00,0x00,0x1F,0xE0,0xE1,0x00,0xA9,0xC0,0xE9,0x40,0xA9,0x40,0xA9,0x40,0xEF,0xC0,0xA8,0x40,0xE0,0x40,0xA0,0x40,0x00,0x80,0x00,0x00,}}, +{ 0x7707, {0x01,0x00,0x01,0x00,0xE1,0x00,0xA5,0x40,0xE5,0x20,0xA9,0x60,0xA9,0x40,0xF3,0x80,0xA3,0x80,0xE1,0x00,0xA6,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x7708, {0x01,0x00,0x01,0x00,0xE7,0xE0,0xAF,0xE0,0xE9,0x00,0xA1,0x00,0xA1,0x80,0xE3,0x80,0xA7,0x80,0xE9,0xA0,0xB1,0xA0,0x20,0xE0,0x00,0x00,}}, +{ 0x7709, {0x00,0x00,0x3F,0xE0,0x22,0x20,0x3F,0xE0,0x20,0x20,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x28,0x40,0x2F,0xC0,0x4F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x770B, {0x01,0x80,0x3E,0x00,0x08,0x00,0x7F,0xC0,0xFF,0xE0,0x10,0x00,0x1F,0x80,0x30,0x80,0x3F,0x80,0x5F,0x80,0x90,0x80,0x1F,0x80,0x00,0x00,}}, +{ 0x770C, {0x00,0x00,0x1F,0x80,0x50,0x80,0x5F,0x80,0x50,0x80,0x5F,0x80,0x5F,0x80,0x40,0x00,0x7F,0xE0,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x771B, {0x01,0x00,0x01,0x00,0xE7,0xC0,0xA7,0xC0,0xE1,0x00,0xBF,0xE0,0xA3,0x80,0xE3,0x80,0xA5,0x40,0xF9,0x20,0xB1,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x771E, {0x61,0x80,0x67,0x00,0x3F,0xC0,0x1F,0xC0,0x50,0x80,0x5F,0x80,0x50,0x80,0x5F,0x80,0x5F,0x80,0x7F,0xE0,0x31,0xC0,0xE0,0x60,0x00,0x00,}}, +{ 0x771F, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x7720, {0x00,0x00,0xE7,0xC0,0xA4,0x40,0xE7,0xC0,0xA5,0x00,0xA5,0x00,0xE7,0xE0,0xA4,0x80,0xA4,0x80,0xE4,0xA0,0x86,0x60,0x18,0x20,0x00,0x00,}}, +{ 0x7724, {0x00,0x00,0x0F,0xC0,0xE8,0x40,0xAF,0xC0,0xEA,0x40,0xAA,0x00,0xAA,0x40,0xEB,0x80,0xAA,0x00,0xFA,0x20,0xB2,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7725, {0x11,0x00,0x71,0x40,0x7D,0x80,0x7D,0x20,0xF1,0xE0,0x7F,0x80,0x60,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7726, {0x02,0x80,0x02,0x80,0xE2,0x80,0xAA,0xA0,0xEB,0xC0,0xAA,0x80,0xAA,0x80,0xEA,0x80,0xAA,0x80,0xEB,0xA0,0xAC,0xA0,0x30,0x60,0x00,0x00,}}, +{ 0x7729, {0x01,0x00,0x01,0x00,0xFF,0xE0,0xBF,0xE0,0xE9,0x80,0xA6,0x80,0xA3,0x80,0xE1,0x80,0xA3,0x80,0xE4,0xC0,0xBF,0x20,0x00,0x20,0x00,0x00,}}, +{ 0x7737, {0x04,0x00,0x35,0x80,0x3F,0x80,0xFF,0xE0,0x31,0x80,0x3F,0x80,0xE1,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7738, {0x01,0x00,0x03,0x80,0xFF,0xC0,0xBF,0x40,0xE5,0x00,0xAF,0xC0,0xB1,0x00,0xF3,0x00,0xBF,0xE0,0xE1,0x00,0xA1,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x773A, {0x02,0x80,0xE2,0x80,0xA2,0xC0,0xEA,0xC0,0xA6,0x80,0xA2,0x80,0xE6,0xC0,0xBA,0xA0,0xE2,0xA0,0xA4,0xA0,0x88,0xA0,0x10,0xE0,0x00,0x00,}}, +{ 0x773C, {0x00,0x00,0xE7,0x80,0xA4,0x80,0xE7,0x80,0xA4,0x80,0xE7,0x80,0xA4,0x40,0xA5,0x40,0xE4,0x80,0xA5,0x80,0x86,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x7740, {0x11,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x10,0x00,0x3F,0x80,0x5F,0x80,0x50,0x80,0x9F,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7747, {0x04,0x80,0x02,0x80,0xE7,0xC0,0xA7,0xC0,0xEF,0xC0,0xA9,0x00,0xAF,0xE0,0xEB,0x20,0xA7,0x20,0xE9,0x60,0xB1,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x775A, {0x00,0x00,0x0F,0xE0,0xEB,0xC0,0xAB,0xC0,0xE9,0x80,0xAF,0xE0,0xA9,0x80,0xE9,0x80,0xAB,0xC0,0xF9,0x80,0xBF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x775B, {0x01,0x00,0xEF,0xC0,0xA7,0x80,0xE7,0x80,0xBF,0xE0,0xA0,0x00,0xEF,0xC0,0xA9,0x40,0xEF,0xC0,0xEF,0xC0,0x08,0x40,0x08,0xC0,0x00,0x00,}}, +{ 0x7761, {0x00,0xC0,0xEF,0x00,0xA1,0x00,0xEF,0xC0,0xA5,0x80,0xBF,0xE0,0xE5,0x80,0xA5,0x80,0xEF,0xC0,0xA1,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7763, {0x20,0x00,0x3F,0xC0,0xF9,0x40,0x79,0x80,0x76,0x80,0xBF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7765, {0x01,0x00,0x02,0x00,0xEF,0xC0,0xAF,0xC0,0xEB,0x40,0xAF,0xC0,0xAA,0x40,0xE3,0x80,0xBF,0xE0,0xFF,0xE0,0xA1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x7766, {0x01,0x00,0xEF,0xC0,0xA1,0x00,0xFF,0xE0,0xA4,0x80,0xA4,0xA0,0xE8,0xE0,0xB1,0x00,0xEF,0xC0,0xA1,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7768, {0x02,0x00,0x0C,0xC0,0xEC,0xC0,0xAC,0xC0,0xE8,0x40,0xAF,0xC0,0xAB,0xC0,0xE3,0x80,0xA7,0x80,0xE5,0xA0,0xA9,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x776B, {0x01,0x00,0x1F,0xE0,0xE7,0xC0,0xA7,0xC0,0xFF,0xE0,0xA1,0x40,0xAF,0xC0,0xE1,0x40,0xA9,0xE0,0xED,0xE0,0xB3,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x7779, {0x02,0x00,0x02,0x40,0xEF,0xC0,0xA2,0x80,0xFF,0xE0,0xA1,0x80,0xA2,0x40,0xF7,0xC0,0xBF,0xC0,0xE7,0xC0,0xA7,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x777E, {0x04,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x13,0x00,0x7F,0xC0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x777F, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0xBF,0x80,0x2A,0x80,0x11,0x00,0x7F,0x80,0xF1,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x778B, {0x04,0x40,0xE5,0xA0,0xA7,0xE0,0xEB,0xE0,0xAA,0x40,0xAB,0xC0,0xEA,0x40,0xAB,0xC0,0xEB,0xC0,0xEF,0xE0,0x06,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x778E, {0x01,0x00,0x0F,0xE0,0xFF,0xC0,0xB7,0x00,0xEF,0xC0,0xA1,0x00,0xBF,0xE0,0xE3,0x00,0xAF,0xC0,0xE8,0x40,0xAF,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x7791, {0x00,0x00,0x0F,0xE0,0xFF,0xC0,0xB7,0x80,0xE7,0x80,0xA4,0x80,0xA7,0x80,0xF3,0x00,0xBF,0xE0,0xE2,0x00,0xA4,0x40,0x18,0x40,0x00,0x00,}}, +{ 0x779E, {0x04,0x80,0x04,0xC0,0xFF,0xE0,0xE7,0x80,0xE3,0x00,0xFF,0xE0,0xF1,0x20,0xFD,0xA0,0xF5,0xA0,0xFF,0xE0,0xF3,0x20,0x11,0x60,0x00,0x00,}}, +{ 0x77A0, {0x01,0x00,0xE9,0x40,0xA7,0xE0,0xEF,0xE0,0xB7,0xC0,0xA4,0x80,0xE4,0x80,0xA7,0x80,0xE7,0xC0,0xE7,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x77A5, {0xA5,0x00,0xF9,0x00,0xFF,0xE0,0xB6,0x40,0xFD,0x80,0xBF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x77AC, {0x00,0xC0,0xEF,0x40,0xA9,0x40,0xE5,0x80,0xBF,0xE0,0xB4,0xC0,0xE7,0xC0,0xBA,0x80,0xFE,0x80,0xA7,0xE0,0x88,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x77AD, {0x02,0x00,0xE2,0x00,0xBF,0xE0,0xF4,0xC0,0xAF,0xC0,0xB4,0xA0,0xE7,0x80,0xA4,0x80,0xE7,0x80,0xA9,0x40,0x91,0x20,0x03,0x00,0x00,0x00,}}, +{ 0x77B0, {0x01,0x80,0x1F,0x80,0xFF,0x80,0xFF,0xE0,0xF3,0xC0,0xFF,0xC0,0xF3,0xC0,0xFE,0xC0,0xFE,0x80,0xFE,0xC0,0xE3,0x40,0x02,0x20,0x00,0x00,}}, +{ 0x77B3, {0x01,0x00,0xEF,0xC0,0xA4,0x80,0xFF,0xE0,0xA9,0x40,0xAF,0xC0,0xE9,0x40,0xAF,0xC0,0xE1,0x00,0xA7,0xC0,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x77B6, {0x01,0x00,0x0F,0xC0,0xEF,0xC0,0xBF,0xE0,0xFF,0xC0,0xA8,0x40,0xAF,0xC0,0xE8,0x40,0xAF,0xC0,0xEF,0xC0,0xA6,0xC0,0x18,0x20,0x00,0x00,}}, +{ 0x77B9, {0x00,0xC0,0x0F,0x20,0xE9,0xC0,0xAF,0xE0,0xEB,0x40,0xB7,0x40,0xAA,0xA0,0xE3,0xC0,0xBF,0xC0,0xFB,0x80,0xA7,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x77BB, {0x01,0x00,0x03,0x80,0xFF,0xE0,0xAF,0xE0,0xEA,0xC0,0xAD,0x80,0xAF,0xE0,0xE9,0x80,0xAB,0xC0,0xFB,0xC0,0xB3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x77BC, {0x01,0x00,0x03,0x00,0xE6,0x80,0xAF,0xC0,0xF0,0x20,0xAE,0xC0,0xAB,0xC0,0xEB,0xC0,0xAE,0xC0,0xE6,0xC0,0xAB,0xA0,0x11,0x20,0x00,0x00,}}, +{ 0x77BD, {0x21,0x80,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x79,0xC0,0x7F,0xC0,0xFF,0xA0,0x60,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x77BF, {0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x21,0x00,0x3F,0xC0,0x72,0x00,0xBF,0x80,0x3F,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x77C7, {0x04,0x80,0x1F,0xE0,0xE7,0xE0,0xAF,0xE0,0xF0,0x00,0xBF,0xE0,0xA3,0x40,0xFF,0xC0,0xBF,0x80,0xFF,0xC0,0xB9,0xA0,0x03,0x00,0x00,0x00,}}, +{ 0x77CD, {0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3F,0xC0,0x6F,0x80,0xFF,0x80,0x7F,0xC0,0x7F,0x00,0x0F,0x00,0xF1,0xE0,0x00,0x00,}}, +{ 0x77D7, {0x04,0x00,0x7F,0xC0,0x1F,0x00,0x7F,0x00,0x7F,0x00,0x7F,0xC0,0xFF,0xE0,0x71,0x80,0xF5,0x80,0xF5,0x80,0xFF,0xE0,0x84,0x00,0x00,0x00,}}, +{ 0x77DA, {0x00,0x00,0x1F,0xE0,0xFF,0xE0,0xFF,0xE0,0xFD,0xC0,0xFF,0xC0,0xFB,0xC0,0xFF,0xC0,0xFF,0xE0,0xFF,0xA0,0xA3,0xE0,0x3E,0xC0,0x00,0x00,}}, +{ 0x77DB, {0x00,0x00,0x3F,0x80,0x09,0x00,0x06,0x00,0xFF,0xE0,0x02,0x40,0x06,0x80,0x0A,0x00,0x32,0x00,0xC2,0x00,0x02,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x77DC, {0x01,0x80,0x7D,0x80,0x39,0x80,0x12,0x40,0xFF,0xE0,0x34,0x00,0x38,0x00,0x73,0xC0,0x50,0x40,0x90,0x40,0x10,0x40,0x30,0x40,0x00,0x00,}}, +{ 0x77E2, {0x20,0x00,0x20,0x00,0x3F,0x80,0x44,0x00,0x44,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x09,0x00,0x30,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x77E3, {0x04,0x00,0x04,0x00,0x09,0x80,0x7F,0xC0,0x30,0x00,0x3F,0xC0,0x44,0x00,0xC4,0x00,0xFF,0xE0,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x77E5, {0x20,0x00,0x20,0x00,0x21,0xE0,0x3D,0x20,0x51,0x20,0x11,0x20,0x7F,0x20,0x11,0x20,0x19,0x20,0x25,0xE0,0x25,0x20,0x40,0x00,0x00,0x00,}}, +{ 0x77E7, {0x20,0x20,0x23,0xA0,0x20,0xA0,0x3F,0xA0,0x52,0x20,0x12,0x20,0x7F,0xA0,0x12,0xA0,0x18,0xA0,0x24,0xA0,0x20,0xA0,0x43,0x20,0x00,0x00,}}, +{ 0x77E9, {0x40,0x00,0x43,0xE0,0x7E,0x00,0x63,0xC0,0xA2,0x40,0x22,0x40,0xFE,0x40,0x33,0xC0,0x32,0x40,0x4A,0x00,0x4B,0xE0,0x82,0x00,0x00,0x00,}}, +{ 0x77ED, {0x40,0x00,0x4F,0xE0,0x40,0x00,0x7F,0xC0,0xA4,0x40,0x27,0xC0,0xFC,0x40,0x24,0x40,0x32,0x80,0x48,0x80,0x4F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x77EE, {0x60,0xC0,0x67,0x80,0x7F,0xE0,0x7F,0xE0,0x63,0xC0,0xA5,0xA0,0xF9,0x80,0x37,0xE0,0x3B,0x40,0x6B,0xC0,0x41,0xC0,0x8E,0x20,0x00,0x00,}}, +{ 0x77EF, {0x40,0xC0,0x4F,0x00,0x5F,0xE0,0x7B,0x80,0xA7,0xC0,0x2A,0xA0,0xFB,0x80,0x2F,0xE0,0x38,0x20,0x5B,0xA0,0x4B,0xA0,0x88,0x60,0x00,0x00,}}, +{ 0x77F3, {0x00,0x00,0x7F,0xE0,0x08,0x00,0x08,0x00,0x10,0x00,0x1F,0xC0,0x30,0x40,0x30,0x40,0x50,0x40,0x90,0x40,0x1F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x77FC, {0x00,0x00,0x7F,0xC0,0x21,0x80,0x21,0x80,0x21,0x80,0x79,0x80,0x69,0x80,0xE9,0x80,0x69,0x80,0x79,0x80,0x6F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7802, {0x01,0x00,0x7D,0x00,0x21,0x00,0x23,0x40,0x23,0x40,0x7D,0x20,0x6D,0x60,0xA9,0x40,0x28,0x80,0x38,0x80,0x23,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x780C, {0x04,0x00,0x7D,0xE0,0x34,0xE0,0x36,0xE0,0x3C,0xE0,0x34,0xE0,0x74,0xE0,0x35,0xE0,0x37,0xA0,0x33,0xA0,0x21,0x20,0x02,0x60,0x00,0x00,}}, +{ 0x7812, {0x05,0x80,0xFD,0x80,0x65,0x80,0x65,0xA0,0x77,0xC0,0x55,0x80,0xD5,0x80,0x55,0x80,0x75,0x80,0x75,0xA0,0x47,0xA0,0x18,0xE0,0x00,0x00,}}, +{ 0x7814, {0x00,0x00,0x7F,0xC0,0x22,0x80,0x22,0x80,0x22,0x80,0x7F,0xE0,0x6A,0x80,0xAA,0x80,0x2A,0x80,0x3C,0x80,0x24,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x7815, {0x01,0x00,0x79,0x00,0x27,0x80,0x22,0xA0,0x22,0xA0,0x7C,0x60,0x69,0x00,0xA9,0x00,0x2F,0xE0,0x39,0x00,0x21,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x7820, {0x00,0x00,0xFB,0xC0,0x62,0x40,0x62,0x40,0x73,0xC0,0x52,0x40,0xD2,0x40,0x53,0xC0,0x72,0x40,0x72,0x40,0x4F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7825, {0x00,0x40,0xFF,0x80,0x25,0x00,0x25,0x00,0x47,0xE0,0x75,0x00,0xD4,0x80,0x54,0x80,0x5E,0x80,0x78,0x60,0x57,0xE0,0x00,0x20,0x00,0x00,}}, +{ 0x7826, {0x22,0x00,0x22,0x40,0x7F,0x80,0x62,0x20,0x7B,0xE0,0xE0,0x00,0x7F,0xC0,0x08,0x00,0x3F,0x80,0xD0,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7827, {0x00,0x80,0x7C,0x80,0x20,0xE0,0x20,0x80,0x20,0x80,0x78,0x80,0x6B,0xC0,0xAA,0x40,0x2A,0x40,0x3A,0x40,0x23,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x7832, {0x02,0x00,0xFA,0x00,0x27,0xC0,0x28,0x40,0x47,0x40,0x71,0x40,0xD7,0x40,0x54,0x80,0x54,0x00,0x74,0x20,0x54,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x7834, {0x01,0x00,0xF9,0x00,0x27,0xE0,0x25,0x40,0x45,0x80,0x77,0xC0,0xD6,0x40,0x55,0x40,0x55,0x80,0x79,0x80,0x56,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x783A, {0x00,0x00,0xFF,0xE0,0x24,0x00,0x27,0xE0,0x75,0x00,0x55,0x00,0xD5,0xC0,0x55,0x40,0x75,0x40,0x59,0x40,0x52,0x40,0x24,0x80,0x00,0x00,}}, +{ 0x783F, {0x01,0x00,0xF9,0x00,0x27,0xE0,0x24,0x00,0x74,0x80,0x54,0x80,0xD5,0x00,0x55,0x00,0x75,0x40,0x5A,0x40,0x4F,0xE0,0x10,0x20,0x00,0x00,}}, +{ 0x7845, {0x01,0x00,0xFB,0x00,0x6F,0xC0,0x61,0x00,0x7F,0xE0,0x51,0x00,0xD1,0x00,0x5F,0xC0,0x71,0x00,0x71,0x00,0x5F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x785D, {0x01,0x00,0xF9,0x20,0x25,0x20,0x21,0x40,0x27,0xC0,0x74,0x40,0x57,0xC0,0xD4,0x40,0x57,0xC0,0x74,0x40,0x54,0x40,0x04,0xC0,0x00,0x00,}}, +{ 0x786B, {0x01,0x00,0xF1,0x00,0x2F,0xE0,0x22,0x80,0x7F,0xC0,0x50,0x40,0xD5,0x80,0x55,0x80,0x75,0x80,0x55,0xA0,0x49,0xA0,0x10,0x60,0x00,0x00,}}, +{ 0x786C, {0x00,0x00,0xFF,0xE0,0x21,0x00,0x2F,0xC0,0x4F,0xC0,0x79,0x40,0xDF,0xC0,0x59,0x40,0x56,0x00,0x72,0x00,0x4D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x786F, {0x00,0x00,0xFF,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x77,0xC0,0x54,0x40,0xD7,0xC0,0x52,0x80,0x74,0xA0,0x48,0xA0,0x10,0xE0,0x00,0x00,}}, +{ 0x7872, {0x02,0x80,0xFA,0x80,0x24,0x40,0x21,0x00,0x71,0x00,0x52,0x80,0xD4,0x80,0x5F,0xC0,0x74,0xA0,0x54,0x80,0x47,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x7874, {0x02,0x80,0xF2,0xC0,0x6F,0xE0,0x62,0x80,0x72,0x80,0x53,0xA0,0xD5,0xC0,0x5D,0x80,0x75,0x80,0x75,0xA0,0x45,0xA0,0x04,0xE0,0x00,0x00,}}, +{ 0x787C, {0x00,0x00,0x7F,0xE0,0x35,0xE0,0x35,0xE0,0x37,0xE0,0x35,0xE0,0x75,0xE0,0x37,0xE0,0x35,0xE0,0x3D,0xA0,0x29,0xA0,0x13,0x60,0x00,0x00,}}, +{ 0x7881, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x20,0x80,0x7F,0xC0,0x90,0x20,0x7F,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7886, {0x21,0x00,0x2F,0xE0,0x8F,0xC0,0x0F,0xC0,0x2B,0x80,0x53,0x80,0x6C,0x60,0xFF,0xE0,0x3F,0x80,0xFF,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7887, {0x00,0x80,0xF8,0x80,0x27,0xE0,0x28,0x00,0x7F,0xE0,0x50,0x80,0xD2,0x80,0x52,0xC0,0x52,0x80,0x76,0x80,0x49,0x80,0x10,0x60,0x00,0x00,}}, +{ 0x788C, {0x02,0x00,0xFB,0x80,0x67,0x80,0x67,0x80,0x7F,0xE0,0x59,0xC0,0xD5,0xC0,0x57,0x80,0x77,0x40,0x79,0x20,0x41,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x788D, {0x00,0x00,0xF7,0xC0,0x27,0xC0,0x24,0x40,0x47,0xC0,0x70,0x00,0xD7,0xC0,0x50,0x80,0x7F,0xE0,0x54,0x80,0x42,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x788E, {0x01,0x80,0xF9,0x80,0x6F,0xE0,0x62,0x80,0x72,0xC0,0x55,0xA0,0xD9,0xA0,0x51,0x80,0x7F,0xE0,0x71,0x80,0x41,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x7891, {0x01,0x00,0xF2,0x00,0x2F,0xC0,0x29,0x40,0x2F,0xC0,0x79,0x40,0x5F,0xC0,0xD2,0x80,0x54,0x80,0x7F,0xE0,0x40,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x7893, {0x02,0x80,0xFA,0x80,0x27,0xE0,0x24,0x80,0x7C,0x80,0x57,0xC0,0xD4,0x80,0x54,0x80,0x77,0xC0,0x54,0x80,0x47,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7895, {0x01,0x00,0xF1,0x00,0x2F,0xE0,0x22,0x80,0x74,0x40,0x5F,0xE0,0xD0,0x40,0x57,0x40,0x75,0x40,0x47,0x40,0x44,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x7897, {0x01,0x00,0xF1,0x00,0x2F,0xE0,0x2C,0x00,0x47,0xC0,0x75,0x40,0xD5,0x40,0x5B,0x40,0x7B,0xC0,0x55,0x20,0x49,0x20,0x10,0xE0,0x00,0x00,}}, +{ 0x789A, {0x01,0x00,0xFB,0x00,0x6F,0xC0,0x66,0x80,0x72,0x80,0x5F,0xE0,0xD0,0x00,0x57,0xC0,0x74,0x40,0x74,0x40,0x47,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x78A3, {0x00,0x00,0x7F,0xC0,0x33,0xC0,0x33,0xC0,0x3B,0xC0,0x29,0x00,0x69,0xE0,0x2A,0xA0,0x3F,0xE0,0x3B,0xE0,0x22,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x78A7, {0x01,0x00,0xFE,0x00,0x13,0xC0,0x7B,0xC0,0x3E,0x40,0xE3,0xC0,0x00,0x00,0xFF,0xE0,0x08,0x00,0x3F,0x80,0xDF,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x78A9, {0x00,0x00,0xFF,0xE0,0x22,0x00,0x27,0xC0,0x74,0x40,0x57,0xC0,0xD4,0x40,0x57,0xC0,0x74,0x40,0x57,0xC0,0x4C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x78AA, {0x02,0x80,0xF2,0xC0,0x6F,0xE0,0x63,0x80,0x72,0x80,0x53,0x80,0xD2,0x80,0x5F,0xE0,0x75,0x80,0x76,0x60,0x47,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x78AF, {0x04,0xA0,0x7D,0xA0,0x3D,0x20,0x34,0xA0,0x31,0x00,0x37,0xE0,0x74,0xE0,0x37,0xA0,0x35,0xA0,0x36,0x60,0x27,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x78B5, {0x01,0x00,0xF9,0x00,0x61,0xE0,0x67,0xC0,0x74,0x40,0x57,0xC0,0xD4,0x40,0x57,0xC0,0x77,0xC0,0x77,0xC0,0x44,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x78BA, {0x01,0x00,0xF9,0x00,0x27,0xE0,0x2A,0x20,0x72,0x80,0x57,0xE0,0xDC,0x80,0x57,0xC0,0x77,0xC0,0x54,0x80,0x47,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x78BC, {0x00,0x00,0xFF,0xE0,0x67,0xC0,0x67,0xC0,0x77,0xC0,0x55,0x80,0xD5,0x80,0x57,0xE0,0x79,0xE0,0x7F,0xE0,0x4A,0x20,0x10,0xC0,0x00,0x00,}}, +{ 0x78BE, {0x00,0x00,0xF7,0xC0,0x67,0xC0,0x67,0xC0,0x75,0x80,0x57,0xC0,0xD5,0x80,0x57,0xC0,0x7F,0xE0,0x7A,0xC0,0x13,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x78C1, {0x04,0x80,0xF2,0x80,0x2F,0xE0,0x24,0x80,0x44,0x80,0x6D,0xA0,0xF9,0xA0,0x66,0xC0,0x66,0x40,0x6A,0xC0,0x5F,0xE0,0x01,0x20,0x00,0x00,}}, +{ 0x78C5, {0x01,0x00,0xFB,0x00,0x6F,0xC0,0x66,0x80,0x7F,0xE0,0x59,0x40,0xD1,0x00,0x5F,0xE0,0x71,0xC0,0x73,0xC0,0x44,0x40,0x18,0x80,0x00,0x00,}}, +{ 0x78C6, {0x00,0x00,0xFF,0x80,0x65,0x80,0x65,0x80,0x7F,0xE0,0x58,0x40,0xD7,0x80,0x54,0x80,0x77,0x80,0x77,0x80,0x44,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x78CA, {0x00,0x00,0x7F,0xC0,0x0F,0x80,0x3F,0x80,0xDF,0x80,0x10,0x80,0xFB,0xE0,0x61,0x00,0x7B,0xC0,0xEF,0x40,0x79,0xC0,0x69,0x40,0x00,0x00,}}, +{ 0x78CB, {0x04,0x80,0xF3,0x80,0x6F,0xC0,0x67,0x80,0x73,0x00,0x5F,0xE0,0xD2,0x00,0x53,0xC0,0x75,0x80,0x79,0x80,0x5F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x78D0, {0x20,0x00,0x79,0x80,0x6A,0x60,0x5F,0xE0,0xFA,0x40,0x69,0x80,0x9B,0x60,0x7F,0xC0,0x10,0x00,0x3F,0x80,0xDF,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x78D1, {0x01,0x00,0xFB,0x40,0x6F,0xC0,0x7F,0xE0,0x70,0x00,0x57,0x80,0xD4,0x80,0x54,0x80,0x77,0x80,0x76,0x80,0x5F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x78D4, {0x04,0x40,0xF4,0x40,0x67,0xE0,0x7B,0xC0,0x77,0xE0,0x65,0x40,0xE9,0x40,0x7F,0xE0,0x67,0x80,0x69,0x40,0x51,0x20,0x01,0x00,0x00,0x00,}}, +{ 0x78DA, {0x01,0x00,0xFF,0xE0,0x67,0xC0,0x67,0xC0,0x77,0xC0,0x55,0x40,0xD7,0xC0,0x53,0x40,0x7F,0xE0,0x7F,0xE0,0x42,0xC0,0x01,0x80,0x00,0x00,}}, +{ 0x78E7, {0x01,0x00,0xFF,0xC0,0x67,0x80,0x67,0x80,0x7F,0xE0,0x57,0x80,0xD4,0x80,0x57,0x80,0x77,0x80,0x77,0x80,0x46,0x80,0x18,0x40,0x00,0x00,}}, +{ 0x78E8, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7D,0xC0,0x6B,0xA0,0x6A,0x80,0x7F,0xE0,0x44,0x00,0x5F,0xC0,0x8F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x78EC, {0x20,0x00,0xFD,0x80,0x7A,0x60,0x7F,0xE0,0x7B,0xC0,0x79,0x80,0x46,0x60,0xFF,0xC0,0x3F,0x80,0xFF,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x78EF, {0x05,0x80,0xF5,0xC0,0x2B,0x40,0x27,0x80,0x6B,0xC0,0x7F,0xE0,0xE1,0x40,0x6F,0xE0,0x6D,0xC0,0x6A,0xA0,0x10,0xE0,0x23,0x20,0x00,0x00,}}, +{ 0x78F4, {0x07,0x80,0xFB,0xA0,0x6F,0xA0,0x64,0xC0,0x7F,0xC0,0x50,0x20,0xD7,0xC0,0x54,0x40,0x77,0xC0,0x73,0x80,0x5F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x78FD, {0x01,0x00,0xFF,0xC0,0x6F,0xE0,0x6F,0xE0,0x7E,0xE0,0x64,0x80,0xE6,0xE0,0x78,0x00,0x7F,0xE0,0x63,0xA0,0x45,0xA0,0x18,0xE0,0x00,0x00,}}, +{ 0x7901, {0x02,0x80,0xFA,0x80,0x27,0xE0,0x25,0x00,0x7F,0xC0,0x55,0x00,0xD7,0xC0,0x55,0x00,0x77,0xE0,0x59,0x40,0x4A,0xA0,0x14,0xA0,0x00,0x00,}}, +{ 0x7907, {0x01,0x00,0xFF,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6B,0xC0,0xED,0xC0,0x69,0x40,0x7F,0xE0,0x7F,0xE0,0x44,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x790E, {0x04,0x80,0xF4,0x80,0x3F,0xE0,0x2E,0xC0,0x6F,0xE0,0x74,0x80,0xEF,0xE0,0x61,0x40,0x69,0x00,0x6D,0xC0,0x53,0x00,0x21,0xE0,0x00,0x00,}}, +{ 0x7911, {0x09,0x40,0xF7,0xC0,0x6F,0xE0,0x7F,0xC0,0x74,0x80,0x67,0x80,0xE0,0x00,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x4F,0xC0,0x08,0x40,0x00,0x00,}}, +{ 0x7912, {0x04,0x80,0xFF,0xE0,0x67,0xC0,0x67,0xC0,0x7F,0xE0,0x63,0xC0,0xFD,0xA0,0x7F,0xE0,0x64,0xC0,0x7C,0xE0,0x47,0x60,0x0C,0x20,0x00,0x00,}}, +{ 0x7919, {0x10,0x00,0xF3,0xE0,0x7C,0xC0,0x6E,0x80,0x6B,0xE0,0x6E,0xA0,0xF5,0xC0,0x77,0xC0,0x7F,0xE0,0x6F,0x80,0x53,0x80,0x22,0x60,0x00,0x00,}}, +{ 0x7926, {0x01,0x80,0xFF,0xE0,0x6F,0xE0,0x6F,0xE0,0x69,0x80,0x6F,0xE0,0xEB,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x53,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x792A, {0x00,0x00,0xFF,0xE0,0x6F,0xE0,0x6F,0xE0,0x6B,0xC0,0x6B,0xC0,0xEB,0xC0,0x6B,0xC0,0x7F,0xE0,0x77,0xE0,0x74,0x20,0x04,0x60,0x00,0x00,}}, +{ 0x792B, {0x09,0x40,0xFB,0x40,0x6F,0xE0,0x6F,0xE0,0x6B,0xC0,0x77,0xA0,0xFD,0xE0,0x73,0x00,0x7F,0xE0,0x67,0x80,0x59,0x60,0x01,0x00,0x00,0x00,}}, +{ 0x792C, {0x62,0x80,0x6A,0xC0,0xFF,0xE0,0x7A,0xC0,0xE7,0xE0,0x6A,0x80,0xFF,0xE0,0x11,0x80,0xFF,0xE0,0x9F,0xE0,0x70,0x80,0x1F,0x80,0x00,0x00,}}, +{ 0x793A, {0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0x40,0x44,0x20,0x84,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x793C, {0x21,0x00,0x21,0x00,0xF9,0x00,0x09,0x00,0x11,0x00,0x21,0x00,0x71,0x00,0xA9,0x00,0x29,0x00,0x21,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x793E, {0x21,0x00,0x21,0x00,0xF9,0x00,0x09,0x00,0x17,0xC0,0x31,0x00,0x69,0x00,0xA9,0x00,0x21,0x00,0x21,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7940, {0x00,0x00,0x7B,0xC0,0x02,0x40,0xFE,0x40,0x32,0x40,0x6B,0xC0,0x6A,0x40,0x6A,0x00,0x6A,0x00,0x6A,0x20,0xA2,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7941, {0x20,0x00,0x23,0xC0,0xFA,0x40,0x0A,0x80,0x12,0x80,0x22,0x80,0x72,0x40,0xAA,0x20,0x2A,0x20,0x23,0xE0,0x22,0x00,0x22,0x00,0x00,0x00,}}, +{ 0x7947, {0x20,0x40,0x21,0x80,0xF7,0x00,0x15,0x00,0x35,0x00,0x27,0xE0,0x64,0x80,0x74,0x80,0xB4,0xA0,0x26,0x60,0x28,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x7948, {0x20,0x40,0x21,0x80,0xFA,0x00,0x0A,0x00,0x13,0xE0,0x32,0x80,0x6A,0x80,0xAA,0x80,0x26,0x80,0x24,0x80,0x28,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x7949, {0x20,0x80,0x20,0x80,0xF8,0x80,0x0A,0x80,0x12,0xE0,0x32,0x80,0x6A,0x80,0xAA,0x80,0x22,0x80,0x22,0x80,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7950, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x22,0x00,0x73,0xC0,0xB6,0x40,0x26,0x40,0x3A,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7953, {0x01,0x80,0x79,0x40,0x01,0x40,0xFF,0xE0,0x33,0x00,0x69,0x40,0x69,0xC0,0x6B,0xC0,0x6A,0x80,0x64,0x80,0xA9,0x40,0x32,0x20,0x00,0x00,}}, +{ 0x7955, {0x00,0x80,0x78,0x80,0x01,0x40,0xFD,0x40,0x33,0x40,0x6B,0xC0,0x6B,0xA0,0x6D,0xA0,0x6D,0xA0,0x61,0x40,0xA3,0x40,0x25,0xC0,0x00,0x00,}}, +{ 0x7956, {0x20,0x00,0x27,0x80,0xF4,0x80,0x14,0x80,0x27,0x80,0x24,0x80,0x64,0x80,0xB7,0x80,0xAC,0x80,0x24,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7957, {0x00,0x40,0x78,0x80,0x03,0x80,0xFF,0x80,0x33,0xE0,0x6B,0x80,0x6A,0x80,0x6A,0x80,0x6B,0xE0,0x6E,0x60,0xA7,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x795A, {0x01,0x00,0x79,0x00,0x01,0xE0,0xFF,0xE0,0x33,0x80,0x6D,0xE0,0x69,0x80,0x69,0x80,0x69,0xE0,0x69,0x80,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x795D, {0x20,0x00,0x27,0xC0,0xF4,0x40,0x14,0x40,0x27,0xC0,0x22,0x80,0x72,0x80,0xAA,0x80,0x22,0x80,0x24,0xA0,0x28,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x795E, {0x10,0x80,0x10,0x80,0x7F,0xE0,0x0A,0xA0,0x12,0xA0,0x13,0xE0,0x32,0xA0,0x5A,0xA0,0x53,0xE0,0x10,0x80,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x795F, {0x04,0x00,0x64,0x80,0x7F,0x80,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x3F,0x00,0x00,0x00,0xFF,0xE0,0x35,0x80,0xC4,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x7960, {0x00,0x00,0x3B,0xE0,0x03,0xE0,0x7F,0xE0,0x19,0xA0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x34,0x20,0x50,0x20,0x10,0x60,0x00,0x00,}}, +{ 0x7962, {0x22,0x00,0x22,0x00,0xF7,0xE0,0x15,0x00,0x29,0x00,0x23,0x00,0x63,0x40,0xB3,0x40,0x35,0x20,0x29,0x20,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x7965, {0x24,0x80,0x22,0x80,0xFF,0xE0,0x11,0x00,0x21,0x00,0x2F,0xC0,0x71,0x00,0xA1,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x7968, {0x00,0x00,0xFF,0xE0,0x12,0x00,0x7F,0x80,0x7F,0x80,0x00,0x00,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x35,0x80,0xC4,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x796D, {0x20,0x00,0x3F,0xC0,0x66,0x40,0xD9,0x80,0x30,0x80,0x7F,0xE0,0x80,0x00,0x7F,0xC0,0x24,0x80,0x24,0x40,0x44,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x7977, {0x21,0x00,0x21,0x00,0xFF,0xC0,0x17,0x80,0x31,0x00,0x2F,0xE0,0x72,0x80,0xBF,0xE0,0x26,0x80,0x39,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x797A, {0x02,0x80,0x72,0x80,0x07,0xE0,0xFF,0xE0,0x33,0x80,0x6A,0x80,0x6B,0x80,0x6A,0x80,0x6F,0xE0,0x67,0xE0,0xA4,0x40,0x28,0x40,0x00,0x00,}}, +{ 0x797F, {0x01,0x00,0x7B,0xC0,0x03,0xC0,0xFB,0x80,0x37,0xE0,0x6D,0x80,0x6B,0xA0,0x6B,0xC0,0x6B,0xC0,0x6D,0xA0,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7980, {0x04,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x00,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x64,0xC0,0x0C,0x00,0x00,0x00,}}, +{ 0x7981, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x31,0x80,0x6B,0x40,0xA5,0x20,0x3F,0x00,0x00,0x00,0xFF,0xE0,0x24,0x80,0xC4,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x7984, {0x20,0x00,0x27,0x80,0xF0,0x80,0x17,0x80,0x2F,0xE0,0x21,0x00,0x75,0xA0,0xB3,0xC0,0x25,0x80,0x29,0x40,0x21,0x20,0x23,0x00,0x00,0x00,}}, +{ 0x7985, {0x22,0x40,0x29,0x40,0xF5,0x80,0x1F,0xC0,0x29,0x40,0x2F,0xC0,0x69,0x40,0xBF,0xC0,0xB1,0x00,0x2F,0xE0,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x798A, {0x04,0x00,0x77,0xC0,0x0F,0xC0,0xFF,0xC0,0x67,0xC0,0x7D,0x40,0x76,0xC0,0x73,0x00,0x7F,0xE0,0x73,0x00,0xE4,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x798D, {0x10,0x00,0x13,0xC0,0x7A,0x40,0x0A,0xC0,0x12,0xC0,0x17,0xE0,0x34,0x20,0x5D,0xA0,0x1D,0xA0,0x15,0xA0,0x14,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x798E, {0x21,0x00,0x21,0xE0,0xF1,0x00,0x17,0xC0,0x24,0x40,0x27,0xC0,0x64,0x40,0xB7,0xC0,0x34,0x40,0x27,0xC0,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x798F, {0x10,0x00,0x17,0xE0,0x7B,0xC0,0x0A,0x40,0x13,0xC0,0x10,0x00,0x37,0xE0,0x5C,0xA0,0x1F,0xE0,0x14,0xA0,0x17,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x799D, {0x00,0x00,0x7B,0xC0,0x03,0xC0,0xFF,0xC0,0x33,0xC0,0x69,0x80,0x6A,0xA0,0x6D,0x60,0x6B,0x80,0x6F,0x80,0xA1,0x80,0x26,0x60,0x00,0x00,}}, +{ 0x79A6, {0x28,0x00,0x5F,0xC0,0xB5,0x40,0x5F,0x40,0xC7,0x40,0x55,0xC0,0x5F,0x00,0x41,0x00,0x3F,0x80,0xFF,0xE0,0x35,0x80,0xCC,0x60,0x00,0x00,}}, +{ 0x79A7, {0x01,0x80,0x7F,0xE0,0x03,0xC0,0xFB,0xC0,0x33,0xC0,0x6A,0x40,0x6B,0xC0,0x6B,0xC0,0x6F,0xE0,0x6B,0xC0,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x79AA, {0x00,0x00,0x7F,0xE0,0x07,0xE0,0xFE,0x60,0x33,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6F,0xE0,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x79AE, {0x03,0x80,0x7F,0xC0,0x0F,0xC0,0xFF,0xC0,0x6F,0xC0,0x70,0x00,0x7F,0xE0,0x77,0x80,0x77,0x80,0x67,0x80,0xFF,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x79B0, {0x60,0x00,0x6F,0xE0,0xFD,0x60,0xFF,0xE0,0x3B,0xC0,0x2F,0xC0,0x6B,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x6F,0xC0,0x69,0xC0,0x00,0x00,}}, +{ 0x79B3, {0x01,0x00,0x7F,0xE0,0x0F,0xC0,0xFF,0xC0,0x63,0x80,0x7F,0xC0,0x77,0x80,0x73,0x80,0x7F,0xE0,0x7F,0xC0,0xE7,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x79B9, {0x01,0xC0,0x7F,0x00,0x3F,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0x04,0x00,0x7F,0xC0,0x45,0x40,0x7F,0xC0,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x79BA, {0x00,0x00,0x7F,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0x04,0x00,0x7F,0xC0,0x45,0x40,0x7F,0xC0,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x79BD, {0x04,0x00,0x0A,0x00,0x35,0x80,0xFF,0xE0,0x27,0x80,0x39,0x80,0x3F,0x00,0x04,0x00,0x7F,0xC0,0x4E,0x40,0x73,0x40,0x41,0xC0,0x00,0x00,}}, +{ 0x79BE, {0x01,0x80,0x06,0x00,0x3C,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x15,0x00,0x64,0xC0,0x84,0x20,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x79BF, {0x01,0x80,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x15,0x00,0x24,0x80,0xC4,0x60,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x79C0, {0x01,0x80,0x3F,0x00,0x04,0x00,0xFF,0xE0,0x16,0x00,0x25,0x80,0xFF,0x60,0x09,0x00,0x09,0xC0,0x10,0x40,0x20,0x40,0xC1,0x80,0x00,0x00,}}, +{ 0x79C1, {0x04,0x80,0x18,0x80,0x70,0x80,0x10,0x80,0xFD,0x00,0x11,0x00,0x39,0x00,0x35,0x40,0x56,0x40,0x92,0x40,0x1F,0xA0,0x10,0x20,0x00,0x00,}}, +{ 0x79C9, {0x01,0x80,0x7E,0x00,0xFF,0xE0,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x04,0x80,0x3F,0x80,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x79CB, {0x08,0x80,0x10,0x80,0x60,0x80,0x22,0xA0,0xFA,0xC0,0x22,0x80,0x74,0x80,0x68,0x80,0xA9,0x80,0x22,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x79D1, {0x08,0x80,0x32,0x80,0x61,0x80,0x25,0x80,0xFA,0x80,0x22,0x80,0x70,0xE0,0x6B,0x80,0xAE,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x79D2, {0x08,0x80,0x10,0x80,0x60,0x80,0x22,0xC0,0xFA,0xA0,0x22,0xA0,0x74,0xC0,0x68,0xC0,0xA8,0x80,0x20,0x80,0x23,0x00,0x2C,0x00,0x00,0x00,}}, +{ 0x79D5, {0x0D,0x80,0x15,0x80,0x65,0x80,0x25,0xA0,0xFF,0xC0,0x25,0x80,0x75,0x80,0x6D,0x80,0xAD,0x80,0x25,0xA0,0x27,0xA0,0x2C,0xE0,0x00,0x00,}}, +{ 0x79D8, {0x11,0x00,0x61,0x00,0xA0,0x40,0x22,0x40,0xFA,0xC0,0x2A,0x80,0x6A,0x80,0x7B,0x40,0xB2,0x20,0x26,0x60,0x2A,0x40,0x31,0xC0,0x00,0x00,}}, +{ 0x79DF, {0x08,0x00,0x13,0xC0,0x62,0x40,0x22,0x40,0xFF,0xC0,0x22,0x40,0x72,0x40,0x6B,0xC0,0xAA,0x40,0x22,0x40,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x79E1, {0x09,0x00,0x11,0xC0,0x61,0x40,0x27,0xE0,0xFB,0x00,0x21,0x40,0x71,0xC0,0x6B,0xC0,0xAA,0x80,0x24,0x80,0x29,0x40,0x32,0x20,0x00,0x00,}}, +{ 0x79E3, {0x09,0x80,0x11,0x80,0x67,0xE0,0x27,0xE0,0xF9,0x80,0x23,0xC0,0x71,0x80,0x69,0x80,0xAB,0xC0,0x25,0xA0,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x79E4, {0x08,0x00,0x17,0xE0,0x60,0x80,0x24,0xC0,0xFA,0xC0,0x20,0x80,0x77,0xE0,0x68,0x80,0xA8,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x79E6, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x3E,0x80,0x64,0xC0,0x9F,0x60,0x1F,0x00,0x64,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x79E7, {0x09,0x80,0x11,0x80,0x63,0xC0,0x23,0xC0,0xFB,0xC0,0x23,0xC0,0x77,0xE0,0x69,0x80,0xA9,0x80,0x22,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x79E9, {0x08,0x80,0x10,0x80,0x62,0x80,0x23,0xC0,0xFA,0x80,0x24,0x80,0x77,0xE0,0x68,0x80,0xA9,0x80,0x22,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x79EC, {0x08,0x00,0x13,0xE0,0x62,0x00,0x23,0xC0,0xFE,0x40,0x22,0x40,0x72,0x40,0x6B,0xC0,0xAA,0x40,0x22,0x00,0x23,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x79F0, {0x0A,0x00,0x12,0x00,0x67,0xE0,0x24,0x80,0xF8,0x80,0x22,0x80,0x72,0xC0,0x6A,0xC0,0xAC,0xA0,0x28,0xA0,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x79FB, {0x09,0x00,0x33,0xC0,0x66,0x40,0x21,0x80,0xF9,0x00,0x27,0x00,0x71,0xE0,0x6B,0x20,0xAE,0xC0,0x20,0xC0,0x21,0x80,0x2E,0x00,0x00,0x00,}}, +{ 0x7A00, {0x08,0x80,0x13,0x00,0x61,0x80,0x26,0x40,0xFF,0xE0,0x22,0x80,0x77,0xC0,0x6E,0xC0,0xAA,0xC0,0x22,0xC0,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7A08, {0x08,0x00,0x13,0xC0,0x63,0xC0,0x23,0xC0,0xFB,0xC0,0x20,0x00,0x73,0xC0,0x69,0x80,0xAF,0xE0,0x27,0xE0,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7A0B, {0x08,0x00,0x17,0xC0,0x64,0x40,0x27,0xC0,0xF8,0x00,0x27,0xC0,0x71,0x00,0x6F,0xC0,0xA1,0x00,0x21,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7A0D, {0x09,0x80,0x13,0xC0,0x67,0xE0,0x21,0x80,0xFB,0xC0,0x22,0x40,0x73,0xC0,0x6A,0x40,0xAB,0xC0,0x22,0x40,0x22,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x7A0E, {0x0C,0x80,0x12,0x80,0x62,0x80,0x27,0xC0,0xFC,0x40,0x27,0xC0,0x72,0x80,0x6A,0x80,0xAA,0x80,0x24,0xA0,0x28,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x7A14, {0x11,0x00,0x23,0x00,0xE4,0x80,0x2F,0xC0,0xF0,0x20,0x2F,0xC0,0x60,0x80,0x73,0x00,0xB9,0x40,0x2A,0x20,0x32,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7A17, {0x11,0x00,0x62,0x00,0xAF,0xC0,0x29,0x40,0xFF,0xC0,0x2F,0xC0,0x62,0x80,0x74,0x80,0xBF,0xE0,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7A18, {0x0A,0x80,0x12,0x80,0x67,0xE0,0x27,0xE0,0xFB,0x80,0x32,0x80,0x6B,0x80,0x6A,0x80,0xA7,0xE0,0x27,0xE0,0x24,0x40,0x28,0x40,0x00,0x00,}}, +{ 0x7A19, {0x09,0x80,0x11,0x80,0x67,0xE0,0x25,0xC0,0xFD,0x40,0x25,0xC0,0x75,0x40,0x6D,0xC0,0xAD,0xC0,0x25,0xC0,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x7A1A, {0x0A,0x80,0x12,0x80,0x65,0x00,0x2F,0xE0,0xFD,0x00,0x27,0xC0,0x75,0x00,0x6D,0x00,0xAF,0xC0,0x25,0x00,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x7A1C, {0x11,0x00,0x6F,0xC0,0xA1,0x00,0x3F,0xE0,0xF2,0x80,0x24,0xA0,0x6A,0xE0,0x73,0x80,0xB6,0x80,0x29,0x00,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x7A1F, {0x04,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x01,0x00,0x7E,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7A20, {0x04,0x00,0x0B,0xE0,0x32,0xA0,0x13,0xE0,0x7F,0xA0,0x13,0xE0,0x3A,0x20,0x37,0xE0,0x57,0xE0,0x17,0xE0,0x15,0xE0,0x18,0x60,0x00,0x00,}}, +{ 0x7A2E, {0x10,0x40,0x67,0x80,0xBF,0xE0,0x21,0x00,0xFF,0xC0,0x29,0x40,0x6F,0xC0,0x79,0x40,0xBF,0xC0,0x2F,0xC0,0x21,0x00,0x3F,0xE0,0x00,0x00,}}, +{ 0x7A31, {0x08,0xC0,0x13,0xC0,0x63,0xE0,0x24,0x20,0xF8,0x00,0x33,0xC0,0x6B,0xC0,0x6B,0xC0,0xA7,0xE0,0x27,0xE0,0x22,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x7A32, {0x08,0xC0,0x3F,0x20,0xE5,0x40,0x25,0x40,0xF8,0x00,0x25,0xC0,0x75,0x40,0x6D,0x40,0xAD,0xC0,0x25,0x40,0x25,0xC0,0x25,0x40,0x00,0x00,}}, +{ 0x7A37, {0x08,0x00,0x17,0xC0,0x67,0xC0,0x27,0xC0,0xFF,0xC0,0x23,0x80,0x75,0xA0,0x6B,0xE0,0xAF,0x80,0x27,0x80,0x23,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x7A3B, {0x08,0x40,0x11,0xC0,0x67,0x60,0x29,0xA0,0xF9,0x00,0x27,0xC0,0x74,0x40,0x6C,0x40,0xAE,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x7A3C, {0x11,0x00,0x21,0x00,0xEF,0xE0,0x3F,0xC0,0xF3,0x00,0x23,0x20,0x6D,0xC0,0x72,0x80,0xBD,0xC0,0xA6,0xA0,0x20,0x80,0x23,0x00,0x00,0x00,}}, +{ 0x7A3D, {0x09,0x40,0x37,0xE0,0xE3,0x80,0x26,0xE0,0xFB,0xC0,0x22,0x20,0x71,0xE0,0x6B,0xC0,0xAA,0x40,0x23,0xC0,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7A3E, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0xC0,0xFF,0xE0,0xFF,0xE0,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7A3F, {0x08,0x80,0x37,0xE0,0x53,0xC0,0x12,0x40,0x7B,0xC0,0x10,0x00,0x37,0xE0,0x3C,0x20,0x5D,0xA0,0x15,0xA0,0x14,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x7A40, {0x20,0x00,0xFF,0x80,0x7A,0x80,0x7A,0xA0,0x7C,0x60,0x58,0x00,0xE7,0xC0,0x32,0x40,0xFD,0x80,0x79,0x80,0xA3,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x7A42, {0x01,0x00,0x31,0x00,0xEF,0xE0,0x2F,0xC0,0xF9,0x40,0x2F,0xC0,0x69,0x40,0x7F,0xC0,0xBA,0x80,0x2A,0x20,0x32,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7A43, {0x09,0x80,0x11,0x80,0x67,0xE0,0x2E,0x40,0xFA,0xC0,0x25,0xA0,0x71,0x80,0x6A,0x40,0xAF,0xE0,0x22,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7A46, {0x11,0x00,0x67,0xC0,0xE7,0xC0,0x67,0xC0,0xF7,0xC0,0x61,0x00,0x65,0xC0,0x7B,0xA0,0xF7,0x80,0x67,0x40,0x60,0xC0,0x6F,0x00,0x00,0x00,}}, +{ 0x7A49, {0x08,0x00,0x17,0xC0,0x67,0xC0,0x27,0xC0,0xFF,0xE0,0x27,0xE0,0x75,0x80,0x6D,0x80,0xAF,0xC0,0x2F,0xE0,0x29,0x80,0x31,0x80,0x00,0x00,}}, +{ 0x7A4D, {0x11,0x00,0x6F,0xE0,0xA7,0xC0,0x21,0x00,0xFF,0xE0,0x27,0xC0,0x64,0x40,0x77,0xC0,0xB4,0x40,0x27,0xC0,0x26,0xC0,0x38,0x20,0x00,0x00,}}, +{ 0x7A4E, {0x40,0x00,0x57,0xE0,0x61,0x00,0x7B,0xC0,0x0A,0x40,0x73,0xC0,0x22,0x40,0xFB,0xC0,0x72,0x40,0x6B,0xC0,0xA2,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x7A4F, {0x10,0xC0,0x6F,0x40,0xA9,0x40,0x27,0xC0,0xF0,0x40,0x27,0xC0,0x60,0x40,0x77,0xC0,0xBB,0x00,0x2A,0x20,0x32,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7A50, {0x12,0x00,0x27,0xC0,0xE8,0x80,0x27,0xC0,0xF5,0x40,0x27,0xC0,0x6F,0xC0,0x79,0x40,0xBF,0xC0,0x29,0x60,0x2F,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7A57, {0x09,0x80,0x17,0xE0,0x63,0xC0,0x23,0xC0,0xFB,0xC0,0x23,0xC0,0x71,0xC0,0x6F,0xA0,0xAB,0x00,0x27,0xA0,0x2A,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7A61, {0x11,0x00,0x33,0x00,0xFF,0xE0,0x65,0x80,0xFB,0xC0,0x7F,0xE0,0x60,0x00,0xFF,0xC0,0xFB,0xC0,0x6B,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x7A62, {0x11,0x00,0x25,0x00,0xE5,0xC0,0x7F,0xE0,0xF1,0xC0,0x6F,0xE0,0x69,0x80,0xFF,0xC0,0xFF,0xE0,0x7F,0xE0,0x73,0xE0,0x6D,0x20,0x00,0x00,}}, +{ 0x7A63, {0x11,0x00,0x6F,0xE0,0xA4,0xC0,0x3F,0xE0,0xF2,0x80,0x2F,0xC0,0x62,0x80,0x7F,0xE0,0xB3,0xC0,0x2E,0x80,0x23,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x7A69, {0x10,0x40,0x27,0xC0,0xE7,0xE0,0x67,0x80,0xF7,0x80,0x67,0xC0,0x6F,0xE0,0xF0,0x40,0xF7,0xC0,0x6B,0x40,0x72,0xE0,0x61,0x80,0x00,0x00,}}, +{ 0x7A6B, {0x12,0x80,0x2F,0xE0,0xE6,0x80,0x2F,0xE0,0xF7,0xC0,0x27,0xC0,0x64,0x80,0x77,0xE0,0xBF,0xC0,0x23,0x80,0x23,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0x7A70, {0x11,0x00,0x3F,0xE0,0xEF,0xC0,0x6F,0xC0,0xF3,0x80,0x6F,0xC0,0x67,0x80,0xF3,0x80,0xFF,0xE0,0x7F,0xC0,0x67,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x7A74, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x80,0x40,0x03,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x20,0x80,0x20,0x80,0x40,0x40,0x80,0x20,0x00,0x00,}}, +{ 0x7A76, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x00,0x12,0x40,0x25,0xC0,0x44,0x00,0x7F,0x00,0x09,0x00,0x09,0x20,0x11,0x20,0x60,0xE0,0x00,0x00,}}, +{ 0x7A79, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9A,0x40,0xE3,0xC0,0x7F,0x80,0x00,0x80,0x7F,0x80,0x7F,0xC0,0x7F,0xC0,0x00,0x40,0x03,0x80,0x00,0x00,}}, +{ 0x7A7A, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x00,0x12,0x40,0x21,0xC0,0x00,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7A7D, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9A,0x40,0xF3,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0xFF,0xE0,0x31,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x7A7F, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x40,0x23,0xC0,0x3F,0x80,0x21,0x00,0x33,0x00,0xFF,0xE0,0x19,0x00,0xE1,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x7A81, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x00,0x12,0x40,0x25,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7A83, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x40,0x33,0xC0,0x00,0x00,0x2F,0xC0,0x31,0x40,0xE2,0x40,0x2A,0x40,0x34,0x40,0x08,0x80,0x00,0x00,}}, +{ 0x7A84, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x40,0x1B,0xC0,0x28,0x00,0x1F,0xE0,0x64,0x00,0x87,0xC0,0x04,0x00,0x07,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x7A88, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9A,0x40,0xE3,0xC0,0x21,0x00,0x29,0x00,0xEF,0xC0,0x31,0x40,0x3A,0x40,0x3C,0x40,0xC8,0x80,0x00,0x00,}}, +{ 0x7A92, {0x04,0x00,0x7F,0xE0,0x92,0x40,0x13,0x80,0x7F,0xC0,0x09,0x00,0x11,0x80,0x7E,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7A93, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x95,0xC0,0x35,0x00,0x09,0x80,0x3F,0x40,0x04,0x00,0x52,0x40,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x7A95, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x92,0x40,0xEB,0xC0,0x0A,0x40,0x6B,0x80,0x3B,0x00,0xFA,0xC0,0xD2,0x20,0x32,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x7A96, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9A,0x40,0xF7,0xC0,0x14,0x00,0x3F,0x80,0x64,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7A97, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x95,0x40,0xE9,0xC0,0x7F,0x80,0x64,0x80,0x7F,0x80,0x7E,0x80,0x7E,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7A98, {0x04,0x00,0x7F,0xE0,0x9A,0x40,0xF3,0xC0,0x7F,0xC0,0x08,0x80,0xFF,0xE0,0x08,0x80,0x3F,0xC0,0x3F,0xC0,0xDF,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x7A9F, {0x04,0x00,0x7F,0xE0,0x8A,0x40,0x73,0xC0,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x52,0x80,0x5F,0x80,0x62,0x40,0xBF,0xC0,0x20,0x40,0x00,0x00,}}, +{ 0x7AA9, {0x04,0x00,0x04,0x00,0x7F,0xE0,0x9A,0x40,0xE3,0xC0,0x3F,0x80,0x27,0x80,0x35,0x80,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x7AAA, {0x04,0x00,0x7F,0xE0,0x92,0x40,0x13,0xC0,0x21,0x00,0x2F,0xC0,0xA1,0x00,0x5F,0xE0,0x07,0xC0,0x21,0x00,0x3F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x7AAE, {0x04,0x00,0x7F,0xE0,0x92,0x40,0x33,0x80,0x7B,0x80,0x48,0x80,0x7B,0x80,0x4A,0x00,0x7B,0xC0,0xD8,0x40,0x28,0x40,0xD8,0x80,0x00,0x00,}}, +{ 0x7AAF, {0x04,0x00,0x7F,0xE0,0x91,0x00,0x2B,0xC0,0x7F,0xC0,0x04,0x00,0x3F,0x00,0x04,0x00,0x7F,0xC0,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7AB0, {0x04,0x00,0x7F,0xE0,0x9A,0x40,0xFB,0xC0,0x1F,0xC0,0x69,0x80,0x2E,0x00,0xFF,0x80,0xFF,0xE0,0xFF,0xE0,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7AB6, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x35,0x80,0xFF,0xE0,0xFF,0xE0,0x07,0x00,0x78,0x80,0x00,0x00,}}, +{ 0x7ABA, {0x04,0x00,0x7F,0xE0,0x92,0x00,0x27,0xC0,0x24,0x80,0x7F,0x80,0x24,0x80,0xFF,0x80,0x24,0x80,0x33,0xA0,0x45,0x20,0x98,0xE0,0x00,0x00,}}, +{ 0x7ABF, {0x04,0x00,0x7F,0xE0,0x9B,0xC0,0xF1,0xC0,0x73,0xC0,0x5E,0x80,0x63,0x80,0x7F,0xE0,0x5F,0xC0,0x7F,0x80,0x43,0x00,0x5F,0xE0,0x00,0x00,}}, +{ 0x7AC3, {0x04,0x00,0x7F,0xE0,0xBF,0xC0,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x24,0x80,0x7F,0xC0,0x7F,0xC0,0x7F,0xE0,0x7C,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x7AC4, {0x04,0x00,0x7F,0xE0,0xF7,0xC0,0x7F,0xC0,0x60,0x80,0x7B,0x80,0x7F,0x80,0x64,0x80,0x77,0x80,0x76,0x60,0x77,0x60,0xEC,0x20,0x00,0x00,}}, +{ 0x7AC5, {0x04,0x00,0x7F,0xE0,0x9A,0x40,0xF3,0xC0,0x79,0x00,0x49,0xE0,0x7A,0x40,0x7D,0x40,0xF9,0x80,0xF9,0x80,0x2B,0x40,0xDC,0x20,0x00,0x00,}}, +{ 0x7AC7, {0x04,0x00,0x7F,0xE0,0xF9,0xC0,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x73,0xC0,0x7F,0xC0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x7AC8, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x7F,0xC0,0x6A,0x80,0x7B,0x80,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x4A,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x7ACA, {0x04,0x00,0x7F,0xE0,0xFB,0xC0,0x39,0xC0,0xF9,0xE0,0x6B,0xC0,0x73,0xC0,0xFB,0xC0,0x77,0xE0,0x7F,0xE0,0xA4,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x7ACB, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x00,0x80,0x20,0x80,0x10,0x80,0x10,0x80,0x09,0x00,0x09,0x00,0x02,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7ACD, {0x21,0x80,0x21,0x80,0xF9,0x80,0xF9,0x80,0x49,0x80,0x4F,0xE0,0x69,0x80,0x71,0x80,0x19,0x80,0x39,0x80,0xC1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x7ACF, {0x20,0x40,0x20,0x80,0xFF,0x80,0xF9,0x80,0x49,0x80,0x4F,0xE0,0x69,0x80,0x71,0x80,0x19,0x80,0x39,0x80,0xC1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x7AD2, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x11,0x80,0x11,0x00,0xFF,0xE0,0x00,0x80,0x7C,0x80,0x64,0x80,0x7C,0x80,0x64,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x7AD3, {0x20,0x40,0x20,0x80,0xFF,0x00,0xF9,0x00,0x51,0xC0,0x57,0x00,0x71,0x00,0x73,0xE0,0x3F,0x00,0x39,0x20,0xC1,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x7AD5, {0x21,0x80,0x20,0x80,0xF9,0x80,0xFA,0x40,0x52,0x40,0x57,0xE0,0x79,0x40,0x71,0x40,0x3A,0x40,0x3A,0x40,0xC4,0x40,0x08,0x80,0x00,0x00,}}, +{ 0x7AD9, {0x21,0x00,0x21,0x00,0xF9,0xE0,0xF9,0xE0,0x51,0x00,0x51,0x00,0x77,0xC0,0x34,0x40,0x3C,0x40,0x3C,0x40,0xC7,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x7ADA, {0x21,0x80,0x21,0x80,0xFF,0xE0,0xF8,0x00,0x50,0x00,0x57,0xE0,0x71,0x80,0x71,0x80,0x39,0x80,0x39,0x80,0xC1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x7ADC, {0x04,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0xA0,0x04,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x7ADD, {0x21,0x80,0x21,0x80,0xFF,0xE0,0xFF,0xE0,0x4A,0x40,0x49,0x40,0x69,0x40,0x71,0x80,0x18,0x80,0x38,0x80,0xCF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7ADF, {0x04,0x00,0x04,0x00,0x7F,0xC0,0xFF,0xE0,0x00,0x00,0x3F,0x00,0x21,0x80,0x3F,0x80,0x3F,0x80,0x1F,0x20,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x7AE0, {0x04,0x00,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7AE1, {0x20,0x00,0x2F,0xE0,0xF9,0x00,0xFF,0xC0,0x54,0x40,0x54,0x40,0x74,0x40,0x37,0xC0,0x3C,0x40,0x3C,0x40,0xC7,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x7AE2, {0x21,0x80,0x21,0x80,0xF9,0xC0,0xFF,0xE0,0x52,0x20,0x53,0xC0,0x73,0x80,0x35,0x80,0x3F,0xE0,0x39,0x80,0xC2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x7AE3, {0x01,0x00,0x22,0x40,0x27,0xA0,0xFA,0x80,0x12,0xA0,0x94,0xE0,0x5B,0xC0,0x62,0x40,0x36,0x80,0xC9,0x00,0x02,0x80,0x0C,0x60,0x00,0x00,}}, +{ 0x7AE5, {0x04,0x00,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7AE6, {0x21,0x80,0x21,0x80,0xFF,0xE0,0xFB,0xC0,0x53,0xC0,0x53,0xC0,0x73,0xC0,0x31,0x80,0x3B,0xC0,0x3D,0xA0,0xC9,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x7AEA, {0x00,0x00,0x7F,0xC0,0x79,0x40,0x79,0xC0,0x79,0x80,0x53,0x40,0x7C,0x20,0x04,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7AED, {0x10,0x00,0x13,0xC0,0x7F,0xC0,0x7F,0xC0,0x2B,0xC0,0x29,0x00,0x39,0xE0,0x1A,0xA0,0x1F,0xE0,0x1F,0xE0,0x62,0x20,0x00,0x40,0x00,0x00,}}, +{ 0x7AEF, {0x01,0x00,0x29,0x40,0x2F,0xC0,0xF0,0x00,0x2F,0xE0,0xA1,0x00,0x6F,0xC0,0x6B,0x40,0x7B,0x40,0xCB,0x40,0x0B,0x40,0x08,0xC0,0x00,0x00,}}, +{ 0x7AF0, {0x60,0x00,0x6F,0xE0,0xFB,0xC0,0xFB,0xC0,0xAB,0xC0,0x6B,0xC0,0x6B,0xC0,0x69,0x80,0x6B,0xC0,0x79,0x80,0xDF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7AF6, {0x21,0x00,0xFF,0xC0,0x52,0x80,0x52,0x80,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x35,0x80,0x5A,0xA0,0x94,0x60,0x00,0x00,}}, +{ 0x7AF8, {0x21,0x80,0x7B,0xC0,0xFF,0xE0,0xFF,0xE0,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x75,0xA0,0x5A,0xA0,0xB4,0x60,0x00,0x00,}}, +{ 0x7AF9, {0x21,0x00,0x21,0x00,0x21,0x00,0x3F,0xE0,0x72,0x80,0x54,0x80,0x90,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7AFA, {0x41,0x00,0x41,0x00,0x7D,0xE0,0x53,0x80,0x52,0x80,0x94,0x80,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7AFF, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x54,0x80,0x88,0x80,0x7F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7B02, {0x61,0x00,0x63,0x00,0x7F,0xE0,0x94,0x80,0x04,0x00,0x7F,0x00,0x05,0x80,0x35,0x80,0x0D,0x80,0x1B,0xA0,0x31,0xA0,0xC0,0xE0,0x00,0x00,}}, +{ 0x7B04, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x00,0x00,0x7F,0xC0,0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0xC1,0x00,0x00,0x00,}}, +{ 0x7B06, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x00,0x00,0x3F,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x60,0x20,0x60,0x20,0x3F,0xE0,0x00,0x00,}}, +{ 0x7B08, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x54,0x80,0x90,0x80,0x7F,0x00,0x12,0x00,0x1B,0xC0,0x28,0x80,0x27,0x00,0x4E,0x00,0xB1,0xE0,0x00,0x00,}}, +{ 0x7B0A, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x00,0xC0,0x3F,0x80,0x25,0x80,0x25,0x80,0x24,0x80,0x64,0x80,0x44,0x40,0x84,0x20,0x00,0x00,}}, +{ 0x7B0B, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x3F,0x80,0x04,0x80,0xFF,0xE0,0x04,0x80,0x3F,0x80,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x7B0F, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x30,0x00,0x3F,0xC0,0x49,0x40,0xCB,0x40,0x92,0x40,0x24,0x40,0x08,0xC0,0x01,0x80,0x00,0x00,}}, +{ 0x7B11, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x54,0x80,0x88,0x80,0x07,0x80,0x3C,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7B18, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x04,0x00,0x07,0xE0,0x04,0x00,0x04,0x00,0x7F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7B19, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x34,0x00,0x24,0x00,0x7F,0xC0,0x64,0x00,0x9F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7B1B, {0x21,0x00,0x22,0x00,0x7F,0xE0,0x44,0x80,0x84,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7B1E, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x08,0x00,0x09,0x00,0x11,0xC0,0xFF,0x20,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7B20, {0x21,0x00,0x21,0x00,0x7F,0xE0,0x54,0x80,0x94,0x80,0x04,0x00,0x7F,0xC0,0x01,0x00,0x11,0x00,0x12,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7B25, {0x42,0x00,0x7B,0xE0,0x94,0x80,0x00,0x00,0xFF,0xC0,0x00,0x40,0x7F,0x40,0x00,0x40,0x3E,0x40,0x3E,0x40,0x22,0x40,0x00,0xC0,0x00,0x00,}}, +{ 0x7B26, {0x42,0x00,0x42,0x00,0x7F,0xE0,0x94,0x80,0x10,0x80,0x20,0x80,0x3F,0xE0,0x64,0x80,0xA2,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7B28, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7B2C, {0x21,0x00,0x21,0x00,0x3F,0xE0,0x4A,0x40,0x7F,0xC0,0x02,0x40,0x3F,0xC0,0x22,0x00,0x3F,0xE0,0x06,0x20,0x1A,0x60,0x62,0x00,0x00,0x00,}}, +{ 0x7B33, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x30,0x00,0x23,0xC0,0xFA,0x40,0x2A,0x40,0x2A,0x40,0x6A,0x40,0x4B,0xC0,0xB2,0x40,0x00,0x00,}}, +{ 0x7B35, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x00,0x00,0x27,0xC0,0xA4,0x40,0x44,0x40,0x14,0xC0,0x24,0xA0,0x44,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x7B36, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x30,0x00,0x3F,0xC0,0x44,0x00,0xC4,0x00,0xFF,0xE0,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7B39, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x4C,0x80,0xA4,0x80,0x24,0x80,0xFF,0xE0,0x24,0x80,0x27,0x80,0x24,0x00,0x3F,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x7B45, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x34,0x00,0x3F,0x80,0x64,0x00,0xFF,0xE0,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x7B46, {0x42,0x00,0x7F,0xE0,0x94,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x80,0x3F,0x80,0x04,0x00,0x3F,0x80,0x7F,0xC0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7B48, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x48,0x80,0xFF,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7B49, {0x42,0x00,0x42,0x00,0x7F,0xE0,0x94,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x01,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x7B4B, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x4C,0x80,0x89,0x00,0x79,0x00,0x4F,0xC0,0x79,0x40,0x49,0x40,0x7A,0x40,0x4A,0x40,0x9C,0x80,0x00,0x00,}}, +{ 0x7B4C, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x0A,0x00,0x11,0x00,0x61,0x80,0xFF,0x60,0x1F,0x00,0x1F,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x7B4D, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x10,0x00,0x3F,0xC0,0x60,0x40,0xFE,0x40,0x3E,0x40,0x3E,0x40,0x3E,0x40,0x22,0x80,0x00,0x00,}}, +{ 0x7B4F, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x4C,0x80,0x91,0x80,0x11,0x40,0x2F,0xE0,0x61,0x40,0xA1,0x80,0x22,0xA0,0x2C,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x7B50, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xE0,0x40,0x00,0x7F,0xC0,0x42,0x00,0x5F,0x80,0x5F,0xC0,0x5F,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x7B51, {0x21,0x00,0x21,0x00,0x7F,0xE0,0x4C,0x80,0x88,0x80,0xFF,0x80,0x24,0x80,0x26,0x80,0x3D,0x80,0xE8,0xA0,0x10,0xA0,0x20,0x60,0x00,0x00,}}, +{ 0x7B52, {0x21,0x00,0x21,0x00,0x7F,0xE0,0x4A,0x80,0xBF,0xC0,0x20,0x40,0x2F,0x40,0x20,0x40,0x2F,0x40,0x29,0x40,0x2F,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x7B54, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x4E,0x80,0x8A,0x00,0x11,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7B56, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x94,0x80,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x24,0x80,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x7B5D, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x0F,0x80,0x32,0x00,0x7F,0x80,0x04,0x80,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x7B65, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x3F,0x80,0x60,0x80,0x60,0x80,0x3F,0x80,0x08,0x00,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x7B67, {0x61,0x00,0x63,0x00,0x7F,0xE0,0xBF,0x80,0x31,0x80,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0x80,0x1F,0x20,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x7B6C, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x02,0x80,0x3F,0xE0,0x62,0x40,0x79,0x40,0x69,0x80,0x69,0xA0,0x73,0x60,0x8C,0x20,0x00,0x00,}}, +{ 0x7B6E, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0xFF,0xC0,0x25,0x80,0x25,0x80,0x35,0xC0,0x4E,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7B70, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x34,0x00,0x27,0xE0,0x69,0x00,0xF1,0xE0,0xE1,0xE0,0x61,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x7B71, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x32,0x00,0x22,0x00,0x73,0xE0,0xF6,0x80,0xFA,0x80,0x71,0x80,0x73,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x7B74, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x04,0x00,0xFF,0xE0,0x25,0x80,0x35,0xC0,0x5A,0x40,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7B75, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0xE0,0xFF,0xC0,0x21,0x80,0x65,0xE0,0xF5,0x80,0xA5,0x80,0x67,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x7B7A, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xE0,0x40,0x00,0x7F,0xC0,0x42,0x00,0x5F,0x80,0x5F,0xC0,0x5F,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x7B86, {0x21,0x00,0x33,0x00,0x7F,0xE0,0xFF,0x80,0x64,0x80,0x6A,0x80,0x71,0x80,0x62,0x40,0x7F,0x80,0x6F,0x20,0x72,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x7B87, {0x41,0x00,0x7B,0xE0,0x94,0x80,0xFF,0xC0,0x44,0x40,0x7F,0x40,0x44,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x7B8B, {0x61,0x00,0x7F,0xE0,0x96,0xC0,0xFF,0xE0,0x04,0xC0,0x03,0x80,0x3F,0xA0,0x0B,0x60,0xFF,0xC0,0x07,0x20,0x0F,0xA0,0x70,0x60,0x00,0x00,}}, +{ 0x7B8D, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x00,0x00,0x6F,0xE0,0xF9,0x80,0x6B,0xC0,0x6B,0xC0,0xEB,0xC0,0xE9,0xC0,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x7B8F, {0x61,0x00,0x7F,0xE0,0x96,0xC0,0xFF,0xC0,0x64,0x40,0x7F,0xA0,0x84,0x80,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x7B92, {0x61,0x00,0x7F,0xE0,0xFF,0x80,0x3F,0x80,0xFF,0xE0,0x7F,0x80,0x7F,0xE0,0xC4,0x40,0xFF,0x80,0x64,0x80,0x65,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x7B94, {0x21,0x00,0x21,0x00,0x7B,0xE0,0x95,0x80,0x41,0x00,0x27,0xC0,0x84,0x40,0x64,0x40,0x27,0xC0,0x64,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x7B95, {0x41,0x00,0x7F,0xE0,0xB5,0x80,0xFF,0xC0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0xFF,0xE0,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x7B97, {0x21,0x00,0x7F,0xE0,0x95,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x7B98, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xC0,0x41,0xC0,0x7F,0x40,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0x64,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x7B99, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xF7,0xC0,0x54,0x40,0x54,0x80,0x77,0xC0,0x55,0x40,0x75,0xC0,0x55,0x80,0x57,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x7B9A, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x10,0x40,0x19,0x40,0x25,0x40,0x7F,0x40,0xF9,0x40,0x7D,0x40,0x7C,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x7B9C, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x04,0x00,0x7F,0xE0,0x4A,0x40,0xB2,0x40,0x63,0xC0,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7B9D, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x34,0x80,0x24,0x80,0xFF,0xE0,0x34,0x80,0x37,0x80,0xE4,0x80,0x27,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x7B9F, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x3F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x7F,0xC0,0x7E,0x40,0x7F,0xA0,0x7A,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x7BA1, {0x21,0x00,0x7F,0xE0,0x94,0x80,0xFF,0xE0,0x40,0x40,0xBF,0x80,0x20,0x80,0x3F,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7BAA, {0x42,0x00,0x7B,0xE0,0x94,0x80,0x28,0x80,0x15,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7BAD, {0x41,0x00,0x7F,0xE0,0xB4,0x80,0x11,0x80,0xFF,0xE0,0x00,0x00,0x79,0x40,0x49,0x40,0x79,0x40,0x79,0x40,0x48,0x40,0x58,0xC0,0x00,0x00,}}, +{ 0x7BB1, {0x21,0x00,0x21,0x00,0x7F,0xE0,0x94,0x80,0x30,0x00,0x23,0xC0,0xFE,0x40,0x33,0xC0,0x6A,0x40,0x6B,0xC0,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7BB4, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x00,0x80,0x3F,0xE0,0x61,0x40,0x7F,0x40,0x63,0x40,0x7F,0x80,0x7F,0xA0,0x53,0x60,0x86,0x20,0x00,0x00,}}, +{ 0x7BB8, {0x41,0x00,0x7F,0xE0,0x96,0x80,0x3F,0xC0,0x05,0x00,0xFF,0xE0,0x0C,0x00,0x3F,0x80,0xD0,0x80,0x1F,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7BC0, {0x42,0x00,0x42,0x00,0x7F,0xE0,0x94,0x80,0x79,0xC0,0x49,0x40,0x79,0x40,0x49,0x40,0x79,0x40,0x49,0xC0,0x75,0x00,0xC1,0x00,0x00,0x00,}}, +{ 0x7BC1, {0x61,0x00,0x7F,0xE0,0x9E,0x80,0x1F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7BC4, {0x41,0x00,0x7F,0xE0,0x94,0x80,0xFF,0xC0,0x22,0x40,0x7A,0x40,0x6A,0x40,0x7A,0x40,0x7A,0x80,0x22,0x20,0xFE,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7BC6, {0x61,0x00,0x7F,0xE0,0x9F,0x80,0x1F,0x00,0x3F,0x00,0xFF,0xE0,0x0E,0x40,0xF7,0x80,0x7F,0x80,0x7E,0x80,0x72,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x7BC7, {0x41,0x00,0x7F,0xE0,0x92,0x80,0xFF,0xE0,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x60,0x00,0x7F,0xC0,0x7F,0xC0,0xAA,0x40,0x2A,0xC0,0x00,0x00,}}, +{ 0x7BC9, {0x41,0x00,0x7F,0xE0,0x96,0x80,0xFF,0x80,0x22,0x80,0x3B,0xA0,0xC4,0x60,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7BCB, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xE0,0x42,0x00,0x7F,0xC0,0x52,0x80,0x5B,0xC0,0x45,0x40,0x58,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x7BCC, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x17,0x80,0x20,0x80,0x3F,0xE0,0x64,0x00,0xE7,0xC0,0xEF,0xE0,0x6F,0xE0,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x7BCF, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x09,0x00,0x69,0x00,0xFF,0xE0,0x6B,0xA0,0x7D,0xC0,0x69,0x80,0x7A,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x7BDD, {0x61,0x00,0x7F,0xE0,0x96,0x40,0xFF,0xC0,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x31,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7BE0, {0x41,0x00,0x7B,0xE0,0x94,0x80,0x12,0x00,0x33,0xC0,0x3E,0x80,0x53,0x80,0xDF,0xE0,0x53,0x00,0x55,0x80,0x59,0x60,0x41,0x00,0x00,0x00,}}, +{ 0x7BE4, {0x41,0x00,0x7F,0xE0,0x96,0x80,0x3F,0xC0,0x22,0x00,0x3F,0x80,0x22,0x00,0x3F,0x80,0x3F,0xE0,0x2A,0x60,0x52,0xA0,0x80,0xC0,0x00,0x00,}}, +{ 0x7BE5, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xE0,0x13,0x00,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0xF5,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7BE6, {0x61,0x00,0x7F,0xE0,0x9E,0x80,0xFF,0xC0,0x5B,0x40,0x47,0x40,0x79,0xC0,0x7F,0xC0,0x7E,0x40,0x7F,0xA0,0x7A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x7BE9, {0x61,0x00,0x61,0x00,0x7F,0xE0,0x94,0x80,0x37,0xE0,0x79,0x80,0x4B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x49,0x80,0x00,0x00,}}, +{ 0x7BED, {0x42,0x00,0x7F,0xE0,0x94,0x80,0xFF,0xC0,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0xA0,0x24,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x7BF3, {0x61,0x00,0x7F,0xE0,0xFF,0x80,0x7F,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x7BF6, {0x61,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x27,0x80,0x24,0x00,0xFF,0xE0,0x1F,0x80,0x1F,0xC0,0x3F,0xC0,0x55,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x7BF7, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x07,0x80,0x2F,0x80,0x83,0x80,0x5D,0xE0,0x0F,0xC0,0xE7,0xC0,0x67,0xC0,0x71,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x7C00, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xC0,0x7F,0xC0,0xFF,0xE0,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x7C07, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x16,0x00,0x23,0xE0,0xFE,0x00,0x23,0xC0,0x3D,0x80,0x6F,0xE0,0x49,0x80,0x92,0x40,0x3C,0x20,0x00,0x00,}}, +{ 0x7C0D, {0x61,0x00,0x7F,0xE0,0x9F,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x35,0x80,0xFF,0xE0,0xFF,0xE0,0x07,0x00,0x78,0x80,0x00,0x00,}}, +{ 0x7C11, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xE0,0x3F,0x80,0x21,0x80,0xFF,0xE0,0x31,0x80,0x1F,0xC0,0xFB,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x7C12, {0x61,0x00,0x7F,0xE0,0xFF,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x3F,0x80,0x08,0x00,0xFF,0xE0,0xFB,0xE0,0x75,0x00,0x1F,0x80,0x00,0x00,}}, +{ 0x7C13, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFE,0x80,0x52,0x80,0x7E,0xC0,0x53,0x40,0x7E,0x80,0x5A,0x20,0x7A,0x60,0x7A,0xC0,0x86,0x80,0x00,0x00,}}, +{ 0x7C14, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xE0,0xFF,0xC0,0x21,0x80,0xFF,0xE0,0x31,0x80,0x7F,0xC0,0xFB,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x7C17, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x0F,0x80,0xA2,0xC0,0x4A,0xA0,0x54,0xA0,0xCF,0x80,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7C1F, {0x61,0x00,0x7F,0xE0,0xFF,0xE0,0xFF,0xE0,0x6A,0x80,0x7F,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7C21, {0x41,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x50,0xC0,0x00,0x00,}}, +{ 0x7C23, {0x61,0x00,0x7F,0xE0,0xBF,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x7C27, {0x61,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x1F,0x00,0xFF,0xE0,0x7F,0x80,0x64,0x80,0x7F,0x80,0x7F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x7C2A, {0x61,0x00,0x7F,0xE0,0xFB,0xC0,0xFB,0xC0,0xFF,0xE0,0x39,0x80,0x73,0xA0,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7C2B, {0x61,0x00,0x7F,0xE0,0xFF,0x80,0x3F,0x80,0xFF,0xE0,0x7F,0x80,0x75,0x80,0x75,0x80,0x7F,0x80,0x7F,0x80,0x55,0x80,0x95,0x80,0x00,0x00,}}, +{ 0x7C37, {0x61,0x00,0x7F,0xE0,0x9F,0x80,0x1F,0x00,0xFF,0xE0,0x69,0xA0,0x77,0xE0,0x7F,0xC0,0x67,0x80,0x6F,0x80,0x48,0x80,0x8F,0x80,0x00,0x00,}}, +{ 0x7C38, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x08,0x80,0xFF,0xE0,0x6B,0xC0,0x7B,0x80,0x6B,0xC0,0x7B,0x40,0xFE,0xC0,0x77,0xC0,0xCE,0x20,0x00,0x00,}}, +{ 0x7C3D, {0x61,0x00,0x7F,0xE0,0x96,0x80,0x0E,0x00,0x33,0x00,0xFF,0xE0,0x00,0x00,0x7B,0x80,0x7B,0x80,0x3B,0x80,0x2A,0x80,0xC4,0x40,0x00,0x00,}}, +{ 0x7C3E, {0x61,0x00,0x7F,0xE0,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0x80,0x65,0x80,0x7F,0xE0,0x7F,0x80,0x5F,0x80,0xF5,0x60,0x05,0x00,0x00,0x00,}}, +{ 0x7C3F, {0x41,0x00,0x7F,0xE0,0x96,0xC0,0x1F,0xE0,0x37,0xC0,0xA5,0x80,0x47,0x80,0x67,0x80,0x3F,0x80,0x6F,0xE0,0x42,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x7C40, {0x61,0x00,0x7F,0xE0,0xD6,0x00,0x6F,0xE0,0xFA,0xE0,0x6B,0xA0,0x7D,0xC0,0x6F,0xC0,0xFF,0xC0,0xEF,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x7C43, {0x61,0x00,0x7F,0xE0,0xFE,0x00,0xF9,0xE0,0x7A,0x00,0x7C,0x00,0x51,0xC0,0x7C,0x00,0x7F,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7C4C, {0x61,0x00,0x7F,0xE0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x7F,0xC0,0x04,0x00,0x7F,0x80,0xFF,0xE0,0x7F,0xE0,0x7A,0xC0,0x60,0x80,0x00,0x00,}}, +{ 0x7C4D, {0x41,0x00,0x7F,0xE0,0x94,0x80,0x32,0x80,0xFF,0xE0,0x22,0x80,0x7F,0xE0,0x20,0x00,0xFF,0xC0,0x72,0x40,0xAB,0xC0,0x23,0xC0,0x00,0x00,}}, +{ 0x7C4F, {0x61,0x00,0x7F,0xE0,0xB6,0x80,0x37,0xE0,0xFA,0xC0,0x6F,0xE0,0x72,0x80,0x73,0x80,0x73,0x80,0x5F,0xE0,0x52,0xC0,0xEC,0x40,0x00,0x00,}}, +{ 0x7C50, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xF9,0x40,0x5F,0xE0,0x53,0x80,0x7F,0xE0,0x55,0xC0,0x7F,0xE0,0x5F,0x80,0x51,0x60,0xB3,0x00,0x00,0x00,}}, +{ 0x7C54, {0x61,0x00,0x7F,0xE0,0xFE,0x80,0x7D,0x80,0xFF,0xE0,0x7D,0x40,0x7F,0x40,0x75,0xC0,0xFC,0x80,0xFC,0x80,0x19,0x40,0x66,0x20,0x00,0x00,}}, +{ 0x7C56, {0x61,0x00,0x7F,0xE0,0x92,0x00,0xFF,0x00,0x13,0x40,0xFF,0xE0,0x29,0xC0,0x6F,0xC0,0x6E,0x80,0x6E,0xA0,0x3F,0x60,0xE2,0x20,0x00,0x00,}}, +{ 0x7C58, {0x61,0x00,0x7F,0xE0,0x96,0x80,0xFF,0xC0,0x53,0xA0,0x5F,0xE0,0x75,0x80,0x5F,0xE0,0x7F,0xC0,0x5F,0xE0,0x55,0x40,0xB9,0x40,0x00,0x00,}}, +{ 0x7C5F, {0x61,0x00,0x7F,0xE0,0x97,0xC0,0xFF,0xC0,0x32,0xC0,0x7B,0xC0,0x6A,0x40,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0xA3,0x40,0x26,0x20,0x00,0x00,}}, +{ 0x7C60, {0x61,0x00,0x7F,0xE0,0x96,0x00,0xF9,0xE0,0x71,0xC0,0xFC,0x40,0x79,0xC0,0x49,0x00,0x79,0xC0,0x79,0xC0,0x49,0x20,0x59,0xE0,0x00,0x00,}}, +{ 0x7C64, {0x61,0x00,0x7F,0xE0,0xDA,0x00,0x69,0x00,0x75,0x40,0xFF,0xE0,0x29,0xC0,0x6F,0xC0,0x6E,0x80,0x6E,0xA0,0x3F,0x60,0xE2,0x20,0x00,0x00,}}, +{ 0x7C65, {0x61,0x00,0x7F,0xE0,0x9E,0x80,0x1B,0x80,0xFF,0xE0,0x6F,0xC0,0x6B,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x53,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x7C6C, {0x61,0x00,0x7F,0xE0,0x96,0x40,0xFD,0x40,0xD9,0xE0,0x6B,0x80,0x7D,0xC0,0xF9,0xC0,0xFD,0xC0,0xFD,0x80,0x85,0xE0,0x8D,0x00,0x00,0x00,}}, +{ 0x7C73, {0x04,0x00,0x24,0x80,0x24,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x15,0x00,0x24,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7C75, {0x21,0x80,0xA9,0x80,0x79,0x80,0x31,0x80,0xFF,0xE0,0x21,0x80,0x71,0x80,0x69,0x80,0xA9,0x80,0x21,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7C7E, {0x10,0x00,0x13,0xE0,0x54,0xA0,0x38,0xA0,0x12,0xA0,0x7D,0xA0,0x18,0xE0,0x34,0xA0,0x35,0x20,0x51,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x7C81, {0x20,0x40,0xA8,0x80,0x7B,0x80,0x20,0x80,0xF8,0x80,0x27,0xE0,0x70,0x80,0x68,0x80,0xA8,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7C82, {0x04,0x00,0x1F,0x00,0x26,0x00,0x1B,0x00,0xE4,0xE0,0x24,0x80,0x15,0x00,0x7F,0xC0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x7C83, {0x65,0x80,0xF5,0x80,0x75,0x80,0x65,0xA0,0xF7,0xC0,0x65,0x80,0x65,0x80,0xF5,0x80,0xF5,0x80,0x65,0xA0,0x67,0xA0,0x78,0xE0,0x00,0x00,}}, +{ 0x7C89, {0x23,0x80,0xA8,0x80,0x72,0x80,0x32,0x80,0xFC,0x80,0x27,0xC0,0x79,0xA0,0x69,0x80,0xAA,0x80,0x22,0x80,0x24,0x80,0x29,0x80,0x00,0x00,}}, +{ 0x7C8B, {0x21,0x00,0xA9,0x00,0x7F,0x80,0x31,0xA0,0xFA,0xA0,0x24,0xE0,0x71,0x00,0x69,0x00,0xAF,0xE0,0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x7C8D, {0x20,0x40,0xA9,0x80,0x7F,0x00,0x31,0x00,0xFF,0xC0,0x21,0x00,0x71,0x00,0x6F,0xE0,0xA9,0x00,0x21,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7C90, {0x20,0x00,0xAF,0xE0,0x7B,0xC0,0x33,0xC0,0xFA,0x40,0x22,0x40,0x73,0xC0,0x6A,0x40,0xAE,0x00,0x24,0x00,0x28,0x00,0x30,0x00,0x00,0x00,}}, +{ 0x7C92, {0x20,0x80,0xA8,0x80,0x70,0x80,0x37,0xE0,0xF8,0x40,0x22,0x40,0x71,0x40,0x69,0x40,0xA9,0x80,0x20,0x80,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7C95, {0x10,0x80,0x54,0x80,0x39,0xE0,0x19,0x20,0x7D,0x20,0x11,0x20,0x39,0xE0,0x35,0x20,0x55,0x20,0x11,0x20,0x11,0xE0,0x11,0x20,0x00,0x00,}}, +{ 0x7C97, {0x20,0x00,0xAB,0xC0,0x7A,0x40,0x32,0x40,0xFB,0xC0,0x22,0x40,0x72,0x40,0x6B,0xC0,0xAA,0x40,0x22,0x40,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7C98, {0x21,0x00,0xA9,0x00,0x79,0xE0,0x31,0x00,0xF9,0x00,0x21,0x00,0x77,0xC0,0x6C,0x40,0xAC,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x7C9B, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0x04,0x80,0x3F,0x80,0x64,0xC0,0x55,0x40,0x7F,0xC0,0x4E,0x40,0x75,0xC0,0x44,0x40,0x84,0x40,0x00,0x00,}}, +{ 0x7C9F, {0x00,0x00,0xFF,0xE0,0x0A,0x00,0x3F,0x80,0x2A,0x80,0x3F,0x80,0x24,0x80,0x15,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7CA1, {0x30,0x00,0x7F,0xE0,0x3C,0x20,0x37,0xE0,0x7C,0x20,0x35,0xA0,0x35,0xE0,0x7D,0xE0,0x7D,0xE0,0x34,0x20,0x34,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x7CA2, {0x02,0x00,0xF2,0x00,0x07,0xE0,0x1B,0x00,0xE5,0x80,0x6D,0xE0,0x25,0x00,0x37,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7CA4, {0x08,0x00,0x7F,0x80,0x7E,0x80,0x7F,0x80,0x6E,0x80,0x75,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x7CA5, {0x02,0x00,0x72,0xE0,0x1B,0x20,0x77,0xE0,0x46,0x80,0x5F,0x80,0x72,0xE0,0x17,0xA0,0x16,0xA0,0x1A,0x20,0x12,0x20,0x62,0x40,0x00,0x00,}}, +{ 0x7CA7, {0x20,0x80,0xA8,0x80,0x7F,0xE0,0x34,0x00,0xFC,0x80,0x24,0x80,0x77,0xC0,0x64,0x80,0xA4,0x80,0x28,0x80,0x2F,0xE0,0x30,0x00,0x00,0x00,}}, +{ 0x7CA8, {0x20,0x00,0xAF,0xE0,0x79,0x80,0x31,0x00,0xFF,0xC0,0x22,0x40,0x72,0x40,0x6B,0xC0,0xAA,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7CAB, {0x60,0x00,0xFF,0xE0,0x71,0x00,0x62,0x00,0xFF,0xC0,0x6B,0xC0,0x6B,0xC0,0xFB,0xC0,0xFB,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x7CAD, {0x21,0x00,0xAB,0x00,0x7B,0x80,0x34,0x80,0xFF,0xC0,0x20,0x20,0x70,0x00,0x6F,0xC0,0xAC,0x40,0x24,0x40,0x27,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x7CAE, {0x21,0x80,0xA9,0x80,0x7B,0xC0,0x32,0x40,0xFF,0xC0,0x22,0x40,0x73,0xC0,0x6B,0xA0,0xAA,0xC0,0x22,0x80,0x23,0xC0,0x2C,0x20,0x00,0x00,}}, +{ 0x7CB1, {0x20,0x00,0x2F,0x80,0x82,0xC0,0x6A,0xE0,0x54,0xA0,0x49,0x80,0x24,0x80,0x35,0x80,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7CB2, {0x20,0x00,0x3B,0xC0,0x39,0x40,0xF9,0x80,0x33,0x80,0xEC,0x60,0x24,0x80,0x35,0x80,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7CB3, {0x20,0x00,0xAF,0xE0,0x7F,0xC0,0x37,0xC0,0xFF,0xC0,0x25,0x40,0x77,0xC0,0x6F,0x40,0xAE,0x00,0x26,0x00,0x29,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x7CB9, {0x21,0x80,0xA9,0x80,0x7F,0xE0,0x32,0x80,0xFB,0xC0,0x25,0xA0,0x79,0xA0,0x69,0x80,0xAF,0xE0,0x21,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7CBD, {0x21,0x80,0xA9,0x80,0x7B,0xE0,0x37,0xC0,0xF8,0x00,0x20,0x00,0x77,0xE0,0x69,0x80,0xAB,0xC0,0x25,0xA0,0x29,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7CBE, {0x20,0x80,0xAF,0xE0,0x78,0x80,0x33,0xC0,0xFF,0xE0,0x20,0x00,0x73,0xC0,0x6A,0x40,0xAB,0xC0,0x23,0xC0,0x22,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x7CC0, {0x62,0x80,0xF2,0xC0,0x7F,0xE0,0x62,0x80,0xF3,0x80,0x65,0xA0,0x65,0xC0,0xFD,0x80,0xF5,0x80,0x65,0xA0,0x65,0xA0,0x64,0xE0,0x00,0x00,}}, +{ 0x7CC2, {0x22,0x80,0xAA,0xC0,0x7F,0xE0,0x33,0x80,0xFA,0x80,0x23,0x80,0x72,0x80,0x6F,0xE0,0xAD,0x80,0x26,0x60,0x27,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x7CC5, {0x60,0x00,0xF7,0xC0,0x71,0x80,0x6F,0xE0,0xF3,0xC0,0x6D,0x80,0x61,0x00,0xF3,0x00,0xFF,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x7CCA, {0x10,0x00,0x5A,0xE0,0x3A,0xA0,0x37,0xE0,0x7A,0xA0,0x12,0xE0,0x37,0xA0,0x3D,0xA0,0x5D,0xA0,0x17,0xA0,0x11,0x20,0x12,0x60,0x00,0x00,}}, +{ 0x7CCE, {0x20,0x00,0xBF,0xE0,0x78,0x00,0x6B,0xC0,0xFA,0xC0,0x2B,0xC0,0x6A,0xC0,0x7B,0xC0,0xA8,0x80,0x2B,0xC0,0x30,0x80,0x27,0xE0,0x00,0x00,}}, +{ 0x7CD2, {0x62,0x80,0xFF,0xE0,0x72,0x00,0x6F,0xE0,0xF8,0x00,0x6B,0xC0,0x6B,0xC0,0xFB,0xC0,0xFB,0xC0,0x7B,0xC0,0x73,0xC0,0x62,0xC0,0x00,0x00,}}, +{ 0x7CD6, {0x21,0x00,0xBF,0xE0,0x79,0x00,0x6F,0xC0,0xFF,0xE0,0x29,0x40,0x6F,0xC0,0x78,0x00,0xBF,0xC0,0x3C,0x40,0x37,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x7CD8, {0x21,0x80,0xA9,0x80,0x7F,0xE0,0x3F,0xE0,0xFB,0x00,0x27,0x20,0x71,0xC0,0x6F,0x80,0xAB,0xC0,0x2D,0xA0,0x21,0x80,0x23,0x00,0x00,0x00,}}, +{ 0x7CDC, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xE0,0x69,0xA0,0x72,0x80,0x6B,0x80,0x7F,0xE0,0x5F,0x80,0x72,0x60,0x82,0x00,0x00,0x00,}}, +{ 0x7CDE, {0x25,0x80,0x7F,0xC0,0x3F,0x00,0xFF,0xE0,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x7F,0xC0,0xFF,0xE0,0x13,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x7CDF, {0x63,0x80,0xFF,0xE0,0x7F,0xC0,0x6F,0xC0,0xFF,0xC0,0x6B,0xC0,0x6F,0xC0,0xF7,0x80,0xF7,0x80,0x67,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x7CE0, {0x21,0x00,0xBF,0xE0,0x79,0x00,0x6B,0xC0,0xFF,0xE0,0x29,0x40,0x7B,0xC0,0x7D,0x20,0xBB,0xC0,0x2B,0x40,0x35,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x7CE2, {0x62,0x80,0xF2,0xC0,0x7F,0xE0,0x67,0xC0,0xFC,0x40,0x67,0xC0,0x64,0x40,0xF7,0xC0,0xFF,0xE0,0x67,0xE0,0x64,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x7CE7, {0x20,0x00,0xB7,0xC0,0x77,0xC0,0x67,0xC0,0xFF,0xE0,0x27,0xC0,0x65,0x40,0x77,0xC0,0xA9,0x00,0x27,0xC0,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7CEF, {0x60,0x00,0xFF,0xE0,0x7F,0xE0,0x6F,0xE0,0xF7,0xC0,0x61,0x00,0x6F,0xE0,0xF2,0x00,0xFF,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x7CF2, {0x60,0x00,0xFF,0xE0,0x7F,0xE0,0x6F,0xE0,0xFB,0xC0,0x6B,0xC0,0x6B,0xC0,0xFB,0xC0,0xFF,0xE0,0x7F,0xE0,0x74,0x20,0x64,0x60,0x00,0x00,}}, +{ 0x7CF4, {0x00,0x00,0x67,0xC0,0x27,0xC0,0x37,0xC0,0x4F,0xC0,0xA1,0x80,0x6B,0xE0,0x76,0xC0,0xFB,0xC0,0x7B,0xC0,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x7CF6, {0x20,0x00,0x6F,0xC0,0x7F,0xC0,0xFF,0xC0,0xFF,0xC0,0xA9,0x80,0x6B,0xE0,0x76,0xC0,0xFB,0xC0,0x7B,0xC0,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x7CF8, {0x04,0x00,0x04,0x80,0x29,0x00,0x12,0x00,0x0C,0x80,0x08,0x40,0xFF,0xA0,0x04,0x00,0x24,0x80,0x24,0x40,0x44,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x7CFA, {0x21,0x00,0x21,0x00,0xE9,0x00,0xF9,0x00,0x31,0x00,0x29,0x00,0xF5,0x00,0x21,0x00,0x69,0x00,0x65,0x20,0xA1,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7CFB, {0x01,0xC0,0x7F,0x00,0x09,0x80,0x39,0x00,0x0E,0x80,0x04,0x40,0xFF,0xE0,0x04,0x20,0x24,0x80,0x24,0x40,0x44,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x7CFE, {0x20,0x80,0x22,0x80,0x4A,0x80,0xFA,0x80,0x32,0x80,0x6A,0x80,0xF6,0x80,0x32,0xE0,0x7B,0x80,0x6C,0x80,0xA0,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7D00, {0x20,0x00,0x23,0xC0,0x48,0x40,0xF8,0x40,0x33,0xC0,0x6A,0x40,0xF6,0x00,0x32,0x00,0x7A,0x00,0x6A,0x20,0xA2,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7D02, {0x20,0x80,0x20,0x80,0xE8,0x80,0xFF,0xE0,0x30,0xC0,0x2A,0x80,0xF5,0x80,0x31,0x80,0x78,0x80,0x68,0x80,0xA0,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7D04, {0x11,0x00,0x11,0x00,0x25,0xE0,0x6D,0x20,0x1A,0x20,0x35,0x20,0x7C,0xA0,0x18,0xA0,0x3C,0x20,0x34,0x20,0x50,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x7D05, {0x20,0x00,0x27,0xC0,0x49,0x00,0xF9,0x00,0x31,0x00,0x69,0x00,0xF5,0x00,0x31,0x00,0x79,0x00,0x69,0x00,0xAF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7D06, {0x20,0x00,0x23,0xC0,0xE9,0x80,0xF9,0x80,0x31,0x80,0x2F,0xE0,0xF9,0x80,0x31,0x80,0x79,0x80,0x69,0x80,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7D0A, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x37,0x00,0xE4,0xE0,0x09,0x00,0x3A,0x80,0xFF,0xE0,0xFF,0x00,0x35,0x80,0x64,0x40,0x00,0x00,}}, +{ 0x7D0B, {0x20,0x80,0x20,0x80,0x4F,0xE0,0xFA,0x40,0x32,0x40,0x6A,0x40,0xF9,0x80,0x31,0x80,0x69,0x80,0x61,0x80,0xA6,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x7D0D, {0x10,0x80,0x10,0x80,0x2F,0xE0,0x7C,0xA0,0x14,0xA0,0x2C,0xA0,0x7D,0x60,0x15,0x60,0x3E,0x20,0x3C,0x20,0x54,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x7D10, {0x20,0x00,0x27,0xC0,0x69,0x40,0xF9,0x40,0x31,0x40,0x6F,0xE0,0xF9,0x40,0x31,0x40,0x69,0x40,0x69,0x40,0xA7,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7D14, {0x21,0x00,0x21,0x60,0x6F,0x80,0xF9,0x40,0x35,0x40,0x6D,0x40,0xFD,0x40,0x37,0xC0,0x7D,0x40,0x69,0x20,0xA1,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7D15, {0x65,0x80,0x65,0x80,0xD5,0x80,0xF5,0xA0,0x67,0xC0,0x55,0x80,0xF5,0x80,0x65,0x80,0x75,0x80,0x75,0xA0,0xE7,0xA0,0x78,0xE0,0x00,0x00,}}, +{ 0x7D17, {0x20,0x80,0x20,0x80,0x48,0x80,0xD2,0xC0,0x32,0xC0,0x6A,0xA0,0xFC,0xA0,0x35,0xC0,0x78,0x40,0x68,0x80,0xA3,0x00,0x2C,0x00,0x00,0x00,}}, +{ 0x7D18, {0x21,0x00,0x21,0x00,0x4F,0xE0,0xD9,0x00,0x31,0x00,0x69,0x00,0xFA,0x80,0x32,0x80,0x6D,0x00,0x65,0x40,0xAB,0xE0,0x30,0x20,0x00,0x00,}}, +{ 0x7D19, {0x20,0x40,0x21,0x80,0x4A,0x80,0xFA,0x80,0x33,0xE0,0x6A,0x80,0xFA,0x80,0x32,0x80,0x7A,0x80,0x6A,0xA0,0xA3,0x60,0x2C,0x20,0x00,0x00,}}, +{ 0x7D1A, {0x20,0x00,0x23,0xC0,0x4A,0x40,0xFA,0x80,0x32,0xC0,0x6A,0x40,0xFA,0x40,0x33,0x40,0x7A,0x80,0x6C,0x80,0xA5,0x40,0x2A,0x20,0x00,0x00,}}, +{ 0x7D1B, {0x23,0x80,0x20,0x80,0x4A,0x80,0xD2,0x80,0x34,0x80,0x6F,0xC0,0xF9,0xA0,0x31,0x80,0x6A,0x80,0x62,0x80,0xA4,0x80,0x29,0x80,0x00,0x00,}}, +{ 0x7D1C, {0x20,0x00,0x23,0xC0,0xE8,0x00,0xF8,0x00,0x37,0xE0,0x29,0x80,0xF5,0x80,0x31,0x80,0x79,0x40,0x6A,0x40,0xAF,0xA0,0x20,0x20,0x00,0x00,}}, +{ 0x7D20, {0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x09,0x00,0x32,0x00,0x0D,0x80,0xFF,0x40,0x35,0x80,0xC4,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x7D21, {0x21,0x00,0x21,0x00,0x4F,0xE0,0xF9,0x00,0x31,0x00,0x69,0xC0,0xF5,0x40,0x31,0x40,0x6A,0x40,0x62,0x40,0xA4,0x40,0x28,0x80,0x00,0x00,}}, +{ 0x7D22, {0x04,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xE0,0x48,0x40,0xB2,0x00,0x0D,0x00,0x09,0xC0,0xFF,0x40,0x35,0x80,0xC4,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x7D2B, {0x22,0x00,0x22,0xC0,0x7B,0x00,0x62,0x20,0x7F,0xE0,0xE9,0x00,0x33,0x00,0x0D,0xC0,0xFF,0x40,0x35,0x80,0xC4,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x7D2C, {0x10,0x80,0x10,0x80,0x28,0x80,0x7F,0xE0,0x14,0xA0,0x2C,0xA0,0x7C,0xA0,0x17,0xE0,0x3C,0xA0,0x3C,0xA0,0x57,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x7D2E, {0x21,0x00,0x31,0x00,0xFD,0x00,0x79,0x20,0x65,0x20,0xA5,0xE0,0x09,0x00,0x3A,0x80,0xFF,0xE0,0xFF,0x00,0x35,0x80,0x64,0x40,0x00,0x00,}}, +{ 0x7D2F, {0x00,0x00,0x3F,0xC0,0x22,0x40,0x3F,0xC0,0x3F,0xC0,0x04,0x80,0x19,0x80,0x06,0xC0,0x7F,0xA0,0x1A,0xC0,0x62,0x20,0x02,0x00,0x00,0x00,}}, +{ 0x7D30, {0x10,0x00,0x13,0xE0,0x26,0xA0,0x7E,0xA0,0x1A,0xA0,0x37,0xE0,0x7E,0xA0,0x1A,0xA0,0x3E,0xA0,0x37,0xE0,0x52,0x20,0x10,0x00,0x00,0x00,}}, +{ 0x7D32, {0x23,0xC0,0x23,0xC0,0xEB,0xC0,0xFF,0xE0,0x33,0xC0,0x2B,0xC0,0xFB,0xC0,0x33,0xC0,0x7A,0x40,0x6A,0x00,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x7D33, {0x10,0x80,0x10,0x80,0x2B,0xE0,0x7E,0xA0,0x32,0xA0,0x2B,0xE0,0x7A,0xA0,0x12,0xA0,0x3B,0xE0,0x34,0x80,0x50,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7D35, {0x21,0x80,0x21,0x80,0xEB,0xE0,0xFC,0x00,0x30,0x00,0x2F,0xE0,0xF9,0x80,0x31,0x80,0x79,0x80,0x69,0x80,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7D39, {0x10,0x00,0x17,0xE0,0x24,0xA0,0x6C,0xA0,0x19,0x20,0x35,0x40,0x7E,0x00,0x1B,0xE0,0x3E,0x20,0x36,0x20,0x53,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x7D3A, {0x22,0x40,0x22,0x40,0x4A,0x40,0xFF,0xE0,0x32,0x40,0x6A,0x40,0xFA,0x40,0x33,0xC0,0x7A,0x40,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7D3F, {0x21,0x00,0x21,0x00,0xE9,0x00,0xFA,0x00,0x32,0x40,0x2F,0xA0,0xF8,0x20,0x37,0xC0,0x7C,0x40,0x6C,0x40,0xA7,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x7D42, {0x21,0x00,0x21,0x00,0x53,0xC0,0xDE,0x40,0x31,0x80,0x6A,0x80,0xFC,0x40,0x31,0x20,0x78,0x80,0x6A,0x00,0xA1,0x80,0x20,0x40,0x00,0x00,}}, +{ 0x7D43, {0x21,0x00,0x21,0x00,0x4F,0xE0,0xF9,0x00,0x31,0x40,0x6A,0x40,0xFE,0x80,0x31,0x00,0x6B,0x00,0x62,0x40,0xAF,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x7D44, {0x20,0x00,0x23,0xC0,0x4A,0x40,0xDA,0x40,0x33,0xC0,0x6A,0x40,0xFE,0x40,0x33,0xC0,0x6A,0x40,0x62,0x40,0xAF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7D45, {0x30,0x00,0x37,0xE0,0x6C,0x20,0x7D,0xA0,0x35,0xE0,0x2D,0xE0,0x7D,0xE0,0x35,0xE0,0x3D,0x20,0x3C,0x20,0x74,0x20,0x34,0x60,0x00,0x00,}}, +{ 0x7D46, {0x21,0x80,0x21,0x80,0xEB,0xE0,0xFD,0xA0,0x33,0xC0,0x29,0x80,0xF9,0x80,0x37,0xE0,0x79,0x80,0x69,0x80,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7D4B, {0x21,0x80,0x21,0x80,0xEF,0xE0,0xFF,0xE0,0x34,0x00,0x2D,0x80,0xFD,0x80,0x35,0x80,0x6D,0xC0,0x65,0x40,0xAF,0xA0,0x30,0x20,0x00,0x00,}}, +{ 0x7D4C, {0x20,0x00,0x27,0xC0,0x4A,0x40,0xF9,0x80,0x33,0x80,0x6E,0x60,0xFC,0x80,0x33,0xC0,0x68,0x80,0x60,0x80,0xAF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7D4E, {0x62,0x00,0x63,0xC0,0xD4,0x00,0xFE,0x00,0x63,0xE0,0x52,0x80,0xF4,0x80,0x6C,0x80,0x74,0x80,0x74,0x80,0xE4,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x7D4F, {0x21,0x00,0x23,0x00,0xEF,0xC0,0xFF,0xC0,0x37,0x40,0x2F,0xC0,0xFD,0x40,0x31,0x40,0x69,0x80,0x63,0xA0,0xAC,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x7D50, {0x21,0x00,0x21,0x00,0x51,0x00,0xFF,0xE0,0x31,0x00,0x6B,0xC0,0xF8,0x00,0x33,0xC0,0x7A,0x40,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7D56, {0x21,0x80,0x21,0x80,0xED,0xA0,0xFB,0xE0,0x31,0x80,0x2F,0xE0,0xF9,0x80,0x31,0x80,0x6A,0x80,0x62,0xA0,0xA4,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x7D5B, {0x22,0x00,0x23,0xE0,0x3F,0x80,0x7B,0x80,0x7F,0x60,0xF1,0x80,0x77,0x80,0x73,0x40,0x7F,0xE0,0x75,0x40,0x69,0x40,0x61,0x00,0x00,0x00,}}, +{ 0x7D5E, {0x21,0x00,0x21,0x00,0x4F,0xE0,0xFA,0x40,0x36,0x40,0x6A,0xA0,0xF9,0x80,0x31,0x00,0x69,0x00,0x62,0x80,0xA4,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x7D61, {0x21,0x00,0x21,0x00,0x4B,0xC0,0xDA,0x40,0x35,0x80,0x69,0x80,0xFA,0x40,0x37,0xE0,0x7A,0x40,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7D62, {0x12,0x00,0x22,0x00,0x4B,0xE0,0x32,0x20,0x2F,0xA0,0x4A,0xA0,0x7B,0xA0,0x12,0xA0,0x3B,0xA0,0x58,0x20,0x50,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x7D63, {0x22,0x40,0x21,0x40,0xEF,0xE0,0xFF,0xE0,0x31,0x80,0x29,0x80,0xFF,0xE0,0x31,0x80,0x6A,0x80,0x62,0x80,0xA4,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x7D66, {0x20,0x80,0x20,0x80,0x49,0x80,0xFA,0x40,0x37,0xE0,0x68,0x00,0xF8,0x00,0x33,0xC0,0x7A,0x40,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7D68, {0x61,0x80,0x61,0xC0,0xD1,0xA0,0xFF,0xE0,0x63,0x80,0x53,0xC0,0xF3,0xC0,0x6E,0xC0,0x76,0x80,0x74,0xE0,0xE9,0x60,0x62,0x20,0x00,0x00,}}, +{ 0x7D6E, {0x20,0x00,0xFB,0xC0,0x6A,0x40,0x7A,0x40,0x13,0xC0,0x2E,0x40,0xC9,0x00,0x32,0x80,0xFF,0xE0,0xFF,0x00,0x35,0x80,0x64,0x40,0x00,0x00,}}, +{ 0x7D71, {0x20,0x80,0x20,0x80,0x4F,0xE0,0xF9,0x00,0x32,0xC0,0x2F,0xA0,0xF9,0x80,0x31,0x80,0x6A,0x80,0x62,0xA0,0xA4,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x7D72, {0x21,0x80,0x21,0x80,0xEF,0x40,0xFF,0x40,0x31,0x80,0x29,0x40,0xFF,0xE0,0x35,0xA0,0x7B,0xC0,0x6B,0xA0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7D73, {0x21,0x00,0x21,0x00,0xEB,0xC0,0xFE,0x40,0x31,0x80,0x2B,0xE0,0xFC,0x80,0x33,0xC0,0x7A,0x80,0x6F,0xE0,0xA0,0xC0,0x20,0x80,0x00,0x00,}}, +{ 0x7D75, {0x21,0x00,0x21,0x00,0x49,0x80,0xF2,0x40,0x37,0xE0,0x68,0x00,0xF8,0x00,0x37,0xE0,0x79,0x00,0x6A,0x40,0xA7,0xA0,0x20,0x20,0x00,0x00,}}, +{ 0x7D76, {0x21,0x00,0x21,0x00,0x6B,0xC0,0xFC,0x80,0x33,0xC0,0x6A,0xC0,0xFA,0xC0,0x23,0xC0,0x72,0x00,0x6A,0x20,0xA2,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7D79, {0x10,0x00,0x11,0xE0,0x25,0x20,0x7D,0xE0,0x18,0x00,0x35,0xE0,0x7D,0x20,0x19,0xE0,0x3D,0x20,0x35,0xE0,0x51,0x20,0x11,0x60,0x00,0x00,}}, +{ 0x7D7D, {0x20,0x00,0x23,0xC0,0xEA,0x40,0xFA,0x40,0x33,0xC0,0x29,0x80,0xF9,0x00,0x37,0xE0,0x7C,0x20,0x6C,0x20,0xA7,0xE0,0x24,0x20,0x00,0x00,}}, +{ 0x7D89, {0x20,0x40,0x23,0x80,0xEF,0xE0,0xFF,0xE0,0x33,0xC0,0x2D,0xA0,0xFB,0x80,0x31,0x80,0x6A,0xE0,0x62,0x60,0xA4,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x7D8F, {0x20,0x40,0x20,0xC0,0xEF,0xE0,0xFA,0xA0,0x34,0x80,0x29,0x80,0xFF,0xE0,0x31,0x40,0x7B,0xC0,0x6B,0x80,0xA1,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x7D93, {0x20,0x00,0x27,0xE0,0xEB,0xC0,0xFF,0xC0,0x33,0xC0,0x2B,0xC0,0xF8,0x00,0x37,0xC0,0x69,0x80,0x61,0x80,0xAF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7D99, {0x20,0x80,0x24,0x80,0x4E,0xC0,0xFD,0xC0,0x35,0x80,0x6F,0xE0,0xFD,0x80,0x37,0xC0,0x7E,0xC0,0x6C,0x80,0xA7,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x7D9A, {0x20,0x80,0x20,0x80,0x6F,0xE0,0xFB,0xC0,0x30,0x00,0x6F,0xE0,0xFC,0x40,0x35,0x80,0x79,0x80,0x6A,0xA0,0xA2,0xA0,0x24,0x60,0x00,0x00,}}, +{ 0x7D9B, {0x60,0x00,0x6F,0xC0,0xD1,0x40,0xD7,0x40,0x63,0x40,0x55,0x80,0xF9,0x00,0x73,0x80,0x76,0x60,0x6E,0x20,0xF2,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x7D9C, {0x20,0x80,0x20,0x80,0x6B,0xE0,0xFC,0x00,0x33,0xC0,0x68,0x00,0xFF,0xE0,0x30,0x80,0x6A,0xC0,0x64,0xA0,0xA0,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7D9F, {0x60,0x00,0x6F,0xE0,0xD7,0xC0,0xF7,0xC0,0x67,0xC0,0x55,0x80,0xF5,0x80,0x77,0xE0,0x75,0x80,0x69,0x80,0xEE,0x40,0x78,0x20,0x00,0x00,}}, +{ 0x7DA2, {0x30,0x00,0x37,0xE0,0x6C,0xA0,0x7F,0xE0,0x35,0xA0,0x2F,0xE0,0x7C,0xA0,0x3D,0xE0,0x3D,0xE0,0x35,0xE0,0x78,0x20,0x30,0x60,0x00,0x00,}}, +{ 0x7DA3, {0x21,0x80,0x23,0xC0,0xEF,0xE0,0xFF,0xE0,0x37,0xE0,0x29,0x80,0xFA,0x40,0x37,0xA0,0x7A,0x80,0x6A,0xA0,0xA2,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7DAB, {0x21,0x80,0x21,0x40,0xEF,0xE0,0xFF,0xC0,0x31,0xE0,0x2B,0x60,0xF9,0x80,0x33,0xE0,0x7F,0xC0,0x68,0xE0,0xA1,0xE0,0x26,0x20,0x00,0x00,}}, +{ 0x7DAC, {0x20,0x40,0x27,0xA0,0x4A,0xA0,0xFA,0xC0,0x37,0xE0,0x6C,0x40,0xFF,0x80,0x32,0x80,0x6B,0x00,0x61,0x00,0xA6,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x7DAD, {0x21,0x40,0x21,0x40,0x4A,0x80,0xFF,0xE0,0x32,0x80,0x6B,0xC0,0xFA,0x80,0x32,0x80,0x7B,0xC0,0x6A,0x80,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x7DAE, {0x01,0x00,0xFB,0x00,0x7F,0xE0,0x7E,0x80,0x79,0x80,0x4E,0x80,0x49,0x60,0xBB,0x00,0xFF,0xC0,0xFF,0x00,0x64,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x7DAF, {0x31,0x00,0x31,0x00,0x6B,0xE0,0x7F,0xE0,0x33,0xA0,0x2D,0x20,0x7F,0xE0,0x31,0x20,0x3D,0xE0,0x3F,0xE0,0x74,0xE0,0x30,0xC0,0x00,0x00,}}, +{ 0x7DB0, {0x21,0x00,0x23,0x00,0xEF,0xE0,0xFF,0xC0,0x32,0x80,0x2A,0x80,0xFB,0x80,0x32,0x00,0x7B,0xC0,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7DB1, {0x10,0x00,0x17,0xE0,0x2E,0x60,0x7D,0x60,0x17,0xE0,0x2C,0xA0,0x7E,0xE0,0x16,0xE0,0x3E,0xE0,0x37,0xE0,0x54,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x7DB2, {0x10,0x00,0x17,0xE0,0x2E,0xE0,0x7D,0xA0,0x17,0xE0,0x2C,0xA0,0x7F,0xE0,0x15,0x20,0x3D,0x20,0x3D,0xE0,0x54,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x7DB4, {0x20,0x00,0x6F,0xC0,0x5F,0xC0,0xF6,0x80,0x27,0xC0,0x69,0x40,0xFF,0xC0,0x39,0x40,0x77,0xC0,0x66,0x80,0xA8,0xC0,0x31,0x20,0x00,0x00,}}, +{ 0x7DB5, {0x20,0x40,0x20,0xC0,0xEB,0xE0,0xFA,0xA0,0x34,0x80,0x28,0x80,0xF9,0x80,0x37,0xE0,0x79,0x80,0x6B,0xC0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7DB8, {0x61,0x00,0x63,0x00,0xD3,0x80,0xF4,0x80,0x6F,0xC0,0x50,0x20,0xFF,0xC0,0x6B,0xC0,0x7F,0xC0,0x7B,0xC0,0xEB,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x7DBA, {0x21,0x80,0x21,0x80,0xEF,0xE0,0xF9,0x80,0x32,0x40,0x2F,0xE0,0xF8,0x40,0x33,0xC0,0x7B,0xC0,0x6B,0xC0,0xA0,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x7DBB, {0x20,0x80,0x20,0x80,0x6B,0xE0,0xFC,0x00,0x37,0xE0,0x68,0x80,0xFA,0x80,0x22,0xC0,0x72,0x80,0x6A,0x80,0xA5,0x80,0x28,0x60,0x00,0x00,}}, +{ 0x7DBD, {0x21,0x80,0x21,0x80,0xE9,0xE0,0xFB,0xC0,0x32,0x40,0x2B,0xC0,0xFA,0x40,0x33,0xC0,0x7F,0xE0,0x6F,0xE0,0xA1,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7DBE, {0x21,0x00,0x27,0xC0,0x59,0x00,0xFF,0xE0,0x22,0x80,0x64,0xA0,0xFA,0xE0,0x33,0x80,0x7E,0x80,0x69,0x00,0xA6,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x7DBF, {0x10,0x80,0x11,0x00,0x2B,0xC0,0x7B,0xC0,0x12,0x40,0x2B,0xC0,0x78,0x80,0x17,0xE0,0x3C,0xA0,0x34,0xA0,0x54,0xE0,0x10,0x80,0x00,0x00,}}, +{ 0x7DC7, {0x34,0xA0,0x35,0xA0,0x6D,0x20,0x7C,0xA0,0x30,0x00,0x2F,0xE0,0x7C,0xA0,0x35,0xA0,0x3F,0xE0,0x3C,0xA0,0x77,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x7DCA, {0x00,0x00,0x7F,0xC0,0x52,0x40,0x79,0x80,0x7B,0x80,0x7C,0x60,0x45,0x80,0x3B,0x40,0xFF,0xE0,0x1F,0x00,0x34,0x80,0x44,0x40,0x00,0x00,}}, +{ 0x7DCB, {0x22,0x80,0x22,0x80,0x5E,0xE0,0xF2,0x80,0x22,0x80,0x5E,0xE0,0xF2,0x80,0x22,0x80,0x7E,0xE0,0x74,0x80,0xA8,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x7DCF, {0x20,0x80,0x22,0x80,0x6A,0xC0,0xFD,0xA0,0x31,0x80,0x6B,0xC0,0xF9,0x40,0x31,0x80,0x6B,0x60,0x67,0x20,0xA9,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7DD1, {0x20,0x00,0x27,0x80,0x50,0x80,0xF7,0x80,0x2F,0xE0,0x59,0x00,0xF5,0xA0,0x23,0xC0,0x77,0x80,0x79,0x40,0xA1,0x20,0x23,0x00,0x00,0x00,}}, +{ 0x7DD2, {0x21,0x00,0x21,0x40,0x4B,0xC0,0xD1,0x80,0x3F,0xE0,0x69,0x00,0xFB,0xC0,0x36,0x40,0x7B,0xC0,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7DD5, {0x21,0x80,0x21,0x80,0xEF,0xE0,0xFA,0x40,0x31,0x80,0x2E,0x60,0xFA,0x40,0x33,0xC0,0x6B,0xC0,0x63,0xC0,0xA4,0x40,0x28,0x40,0x00,0x00,}}, +{ 0x7DD8, {0x61,0x80,0x61,0xC0,0xDF,0xE0,0xDF,0xE0,0x6F,0xC0,0x59,0xC0,0xFF,0xC0,0x6D,0x80,0x7F,0xE0,0x6F,0xE0,0xF1,0x20,0x62,0x20,0x00,0x00,}}, +{ 0x7DDA, {0x21,0x00,0x22,0x00,0x4B,0xC0,0xFB,0xC0,0x32,0x40,0x6B,0xC0,0xFD,0x00,0x37,0x20,0x6B,0xC0,0x65,0x40,0xA9,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x7DDC, {0x20,0x60,0x67,0x80,0x7B,0x00,0x7B,0x40,0x49,0x80,0x79,0x40,0x27,0xE0,0xF9,0xA0,0xAB,0xC0,0xAB,0xA0,0xBD,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7DDD, {0x20,0x00,0x23,0xC0,0xEB,0xC0,0xFB,0xC0,0x3F,0xE0,0x2A,0x40,0xFB,0xC0,0x32,0x40,0x6B,0xC0,0x63,0xC0,0xAE,0x40,0x20,0x40,0x00,0x00,}}, +{ 0x7DDE, {0x62,0x00,0x6D,0x80,0xD9,0x80,0xDF,0xA0,0x6B,0x60,0x5A,0x00,0xFF,0xC0,0x69,0x40,0x7D,0xC0,0x7C,0x80,0xE8,0xC0,0x6B,0x20,0x00,0x00,}}, +{ 0x7DE0, {0x21,0x00,0x21,0x00,0x5F,0xE0,0xD2,0x80,0x2F,0xE0,0x49,0x40,0xF1,0x00,0x27,0xC0,0x75,0x40,0x75,0x40,0xA5,0xC0,0x21,0x00,0x00,0x00,}}, +{ 0x7DE1, {0x60,0x00,0x67,0xC0,0xD7,0xC0,0xD7,0xC0,0x67,0xE0,0x54,0x80,0xF7,0x60,0x6F,0xE0,0x77,0xC0,0x77,0xC0,0xE7,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x7DE4, {0x23,0xC0,0x23,0xC0,0xEF,0xE0,0xFB,0xC0,0x32,0x00,0x2B,0xE0,0xF9,0x80,0x37,0xE0,0x79,0x80,0x6B,0xC0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7DE8, {0x20,0x00,0x2F,0xE0,0x50,0x00,0xF7,0xC0,0x27,0xC0,0x54,0x00,0xFF,0xE0,0x25,0x60,0x7F,0xE0,0x7D,0x60,0xAD,0x60,0x34,0x60,0x00,0x00,}}, +{ 0x7DE9, {0x20,0x60,0x27,0xA0,0x4A,0xC0,0xFF,0xE0,0x31,0x00,0x6F,0xE0,0xFA,0x00,0x33,0xE0,0x72,0x40,0x65,0x80,0xAB,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x7DEC, {0x20,0x00,0x3F,0xE0,0x52,0x00,0xFF,0xC0,0x2A,0xC0,0x5A,0xC0,0xFB,0xC0,0x2A,0xC0,0x7B,0xC0,0x7A,0xC0,0xAF,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x7DEF, {0x21,0x00,0x27,0xC0,0x49,0x40,0xFF,0xE0,0x33,0xC0,0x6A,0x40,0xFB,0xC0,0x30,0x80,0x7B,0xC0,0x6F,0xE0,0xA0,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7DF2, {0x60,0x80,0x6E,0x80,0xDA,0xC0,0xDF,0xC0,0x6B,0xE0,0x5B,0xA0,0xFF,0xA0,0x6A,0xC0,0x7E,0x40,0x7E,0x80,0xE3,0x00,0x62,0x00,0x00,0x00,}}, +{ 0x7DF4, {0x21,0x00,0x21,0x00,0x5F,0xE0,0xFF,0xC0,0x29,0x40,0x5F,0xC0,0xF9,0x40,0x3F,0xC0,0x73,0x80,0x6D,0x40,0xB9,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x7DFB, {0x61,0x80,0x7F,0x80,0xE5,0x80,0xEF,0xE0,0x6B,0x40,0x5D,0x40,0xF5,0xC0,0x7F,0xC0,0x74,0x80,0x67,0xC0,0xFB,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x7E01, {0x20,0x00,0x27,0x80,0x50,0x80,0xF7,0x80,0x2F,0xE0,0x51,0x00,0xF3,0xA0,0x2D,0xC0,0x72,0x80,0x7F,0xC0,0xAD,0xA0,0x23,0x00,0x00,0x00,}}, +{ 0x7E04, {0x20,0x00,0x2F,0xC0,0x5F,0xC0,0xDF,0xC0,0x21,0x00,0x5F,0xC0,0xF9,0x40,0x2F,0xC0,0x79,0x40,0x7F,0xE0,0xA9,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x7E05, {0x61,0x80,0x61,0xC0,0xDF,0xE0,0xDF,0xE0,0x6F,0xC0,0x5B,0xC0,0xFF,0xC0,0x6D,0xC0,0x7E,0x80,0x7F,0xE0,0xF5,0xE0,0x69,0x20,0x00,0x00,}}, +{ 0x7E09, {0x60,0x00,0x6F,0xE0,0xD2,0x80,0xD7,0xC0,0x6F,0xE0,0x50,0x00,0xFF,0xE0,0x67,0xC0,0x77,0xC0,0x77,0xC0,0xE7,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x7E0A, {0x63,0x80,0x60,0x80,0xD7,0xC0,0xDF,0xE0,0x62,0x80,0x52,0x80,0xF4,0x40,0x6F,0xE0,0x75,0xC0,0x75,0xC0,0xEF,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x7E0B, {0x68,0x80,0x65,0x80,0xD5,0xC0,0xD9,0x40,0x65,0xC0,0x55,0x00,0xF1,0xC0,0x6D,0x40,0x75,0xC0,0x75,0xC0,0xEB,0x00,0x71,0xE0,0x00,0x00,}}, +{ 0x7E12, {0x22,0x40,0x21,0x40,0xEF,0xE0,0xFF,0xE0,0x33,0xC0,0x29,0x80,0xFF,0xE0,0x32,0x00,0x6F,0xC0,0x69,0x80,0xBF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x7E1B, {0x21,0x80,0x21,0x40,0x5F,0xE0,0xDF,0xC0,0x69,0x40,0x5F,0xC0,0xF9,0x40,0x2F,0xC0,0x70,0x80,0x7F,0xE0,0xA2,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7E1E, {0x21,0x00,0x2F,0xE0,0x48,0x00,0xFB,0x80,0x33,0x80,0x68,0x00,0xFF,0xC0,0x34,0x40,0x7F,0xC0,0x6F,0xC0,0xA4,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x7E1F, {0x60,0x00,0x6F,0xE0,0xDF,0xC0,0xDF,0xC0,0x6F,0xE0,0x5B,0xC0,0xFB,0x80,0x6E,0xE0,0x7F,0xE0,0x7F,0xE0,0xF3,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x7E21, {0x61,0x00,0x63,0x00,0xDF,0xE0,0xD9,0x00,0x7F,0xC0,0x54,0x80,0xF3,0x80,0x6F,0xE0,0x7F,0xC0,0x7F,0xC0,0xE1,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x7E22, {0x01,0x00,0x67,0xC0,0x67,0xE0,0x7F,0xE0,0x77,0xC0,0x69,0xC0,0x77,0xA0,0x73,0x40,0x7F,0xE0,0x65,0x40,0x69,0x40,0xE1,0x00,0x00,0x00,}}, +{ 0x7E23, {0x00,0x20,0x7B,0xC0,0xFB,0x00,0xFB,0x40,0xF9,0x80,0xE9,0x40,0xBF,0xE0,0x81,0xA0,0xFB,0xC0,0x7B,0xA0,0xAD,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7E26, {0x22,0x40,0x23,0x40,0x55,0x40,0xDB,0xE0,0x62,0x80,0x54,0x80,0xF5,0x80,0x2D,0xE0,0x75,0x80,0x75,0x80,0xA6,0x80,0x24,0x60,0x00,0x00,}}, +{ 0x7E2B, {0x61,0x80,0x69,0xC0,0xD7,0xC0,0xD7,0xC0,0x61,0xA0,0x5F,0xC0,0xF5,0x80,0x77,0xC0,0x77,0xE0,0x67,0xE0,0xEB,0x80,0x71,0xE0,0x00,0x00,}}, +{ 0x7E2E, {0x20,0x80,0x20,0x80,0x57,0xE0,0xDC,0x20,0x23,0xC0,0x52,0x80,0xF5,0xE0,0x2D,0x20,0x75,0xE0,0x75,0x20,0xA5,0xE0,0x25,0x20,0x00,0x00,}}, +{ 0x7E31, {0x65,0x80,0x65,0x80,0xE9,0x80,0xFF,0xC0,0x77,0xA0,0x55,0xA0,0xFB,0x80,0x7B,0x80,0x7B,0xC0,0x7B,0x80,0xED,0x80,0x68,0xE0,0x00,0x00,}}, +{ 0x7E32, {0x60,0x00,0x6F,0xC0,0xDF,0xC0,0xDF,0xC0,0x6F,0xC0,0x52,0x80,0xF7,0x80,0x63,0x40,0x7F,0xA0,0x75,0x40,0xE9,0x40,0x61,0x00,0x00,0x00,}}, +{ 0x7E35, {0x20,0x00,0x23,0xC0,0xEB,0xC0,0xFB,0xC0,0x33,0xC0,0x2F,0xE0,0xFD,0xA0,0x37,0xE0,0x7F,0xC0,0x6B,0x80,0xA3,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x7E37, {0x21,0x80,0x23,0xC0,0xEF,0xE0,0xFF,0xE0,0x33,0xC0,0x2B,0xC0,0xFB,0xC0,0x33,0xC0,0x7F,0xE0,0x6B,0xC0,0xA1,0xC0,0x27,0x20,0x00,0x00,}}, +{ 0x7E39, {0x60,0x00,0x7F,0xE0,0xE7,0xC0,0xEF,0xC0,0x6F,0xC0,0x50,0x00,0xF7,0x80,0x60,0x00,0x7F,0xE0,0x75,0x40,0xE9,0x40,0x63,0x00,0x00,0x00,}}, +{ 0x7E3A, {0x69,0x80,0x65,0x80,0xD7,0xE0,0xDB,0xC0,0x67,0xC0,0x57,0xC0,0xF3,0xC0,0x6F,0xC0,0x77,0xE0,0x77,0xE0,0xEB,0x80,0x71,0xE0,0x00,0x00,}}, +{ 0x7E3B, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xE0,0x6B,0xA0,0x65,0x80,0x7F,0x80,0x7F,0xE0,0x7F,0x80,0x72,0x40,0x82,0x00,0x00,0x00,}}, +{ 0x7E3D, {0x62,0x00,0x6F,0xC0,0xDB,0xC0,0xDF,0xC0,0x6B,0xC0,0x5A,0xC0,0xFF,0xC0,0x73,0x00,0x7B,0xE0,0x6A,0x20,0xF2,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x7E3E, {0x20,0x80,0x27,0xE0,0x6B,0xC0,0xF8,0x80,0x37,0xE0,0x6B,0xC0,0xFA,0x40,0x33,0xC0,0x7A,0x40,0x6B,0xC0,0xA3,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x7E41, {0x61,0x00,0xFF,0x00,0xFF,0xE0,0xFF,0x40,0x75,0xC0,0x7F,0xC0,0x4D,0x20,0x33,0x00,0x7F,0xC0,0x7F,0x00,0x64,0xC0,0x04,0x00,0x00,0x00,}}, +{ 0x7E43, {0x30,0x80,0x34,0xA0,0x6F,0xE0,0x6F,0xE0,0x37,0x60,0x2D,0xE0,0x7D,0xE0,0x37,0xE0,0x3F,0xE0,0x3F,0xE0,0x79,0xA0,0x33,0x60,0x00,0x00,}}, +{ 0x7E46, {0x60,0x00,0x6F,0xE0,0xDF,0xE0,0xDF,0xE0,0x6F,0xE0,0x51,0x20,0xF3,0x80,0x6F,0xC0,0x77,0xE0,0x77,0xC0,0xE3,0x80,0x6E,0x00,0x00,0x00,}}, +{ 0x7E4A, {0x22,0x80,0x22,0xC0,0x5F,0xA0,0xF2,0x80,0x2F,0xE0,0x55,0x80,0xF5,0xA0,0x2D,0xA0,0x7D,0xC0,0x67,0xA0,0xB8,0xE0,0x21,0x20,0x00,0x00,}}, +{ 0x7E4B, {0x20,0x00,0xFD,0x80,0x7A,0x60,0x7F,0xE0,0x7A,0xC0,0x79,0x80,0xFF,0x80,0x3B,0x60,0x1F,0x80,0xFF,0xC0,0x34,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x7E4D, {0x21,0x00,0x27,0xC0,0x4F,0xE0,0x97,0xC0,0x6F,0xC0,0x59,0x40,0xFD,0xC0,0x2B,0x40,0x7F,0xC0,0x7B,0x40,0xAD,0xC0,0x31,0x40,0x00,0x00,}}, +{ 0x7E54, {0x24,0x80,0x24,0xC0,0x5F,0xC0,0xDA,0x80,0x2F,0xE0,0x50,0x80,0xFE,0xC0,0x2A,0xC0,0x7E,0x80,0x7A,0xA0,0xAF,0x60,0x22,0x20,0x00,0x00,}}, +{ 0x7E55, {0x22,0x40,0x27,0xE0,0x48,0x80,0xFB,0xC0,0x37,0xE0,0x6A,0xC0,0xF9,0x80,0x37,0xE0,0x7B,0xC0,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7E56, {0x6B,0x80,0x6B,0x80,0xFF,0x80,0xFF,0xE0,0x73,0x40,0x6F,0x40,0xFB,0xC0,0x6E,0xC0,0x7E,0x80,0x7E,0xC0,0xEB,0x40,0x6A,0x20,0x00,0x00,}}, +{ 0x7E59, {0x20,0xC0,0x27,0xC0,0xEB,0xC0,0xFF,0xE0,0x33,0xC0,0x2B,0xC0,0xFD,0xA0,0x33,0xC0,0x7B,0xC0,0x6B,0xC0,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x7E5A, {0x21,0x80,0x21,0x80,0xEF,0xE0,0xFE,0x60,0x37,0xE0,0x2A,0x40,0xFB,0xC0,0x32,0x40,0x7B,0xC0,0x6B,0xA0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x7E5D, {0x30,0x00,0x37,0xE0,0x6F,0xE0,0x6F,0xE0,0x37,0xE0,0x2D,0xE0,0x7D,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x77,0xE0,0x34,0x20,0x00,0x00,}}, +{ 0x7E5E, {0x61,0x00,0x67,0xC0,0xDF,0xE0,0xDF,0xE0,0x6E,0xC0,0x54,0x80,0xF7,0xE0,0x6C,0x00,0x7F,0xE0,0x73,0xA0,0xE5,0xA0,0x68,0xE0,0x00,0x00,}}, +{ 0x7E66, {0x60,0x00,0x7D,0xC0,0xE5,0x40,0xFD,0xC0,0x71,0x80,0x73,0xC0,0xFF,0xC0,0x77,0xC0,0x77,0xC0,0x75,0xC0,0xE7,0xE0,0x78,0x20,0x00,0x00,}}, +{ 0x7E67, {0x60,0x00,0x6F,0xE0,0xDF,0xE0,0xDF,0xE0,0x6F,0xC0,0x51,0x00,0xF7,0xC0,0x60,0x00,0x7F,0xE0,0x72,0x40,0xEF,0xE0,0x60,0x20,0x00,0x00,}}, +{ 0x7E69, {0x60,0x00,0x6F,0xC0,0xDF,0xC0,0xDF,0xC0,0x6B,0xC0,0x5B,0xC0,0xFF,0xC0,0x6B,0xC0,0x7F,0xC0,0x7F,0xE0,0xE2,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x7E6A, {0x61,0x00,0x63,0x00,0xD7,0x80,0xDF,0xC0,0x6F,0xE0,0x5D,0xC0,0xFB,0xC0,0x6F,0xC0,0x77,0x80,0x77,0x80,0xE4,0x80,0x67,0x80,0x00,0x00,}}, +{ 0x7E6D, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x6F,0xC0,0x6F,0xC0,0x57,0xC0,0x7F,0xC0,0x7D,0xC0,0x5F,0xC0,0x74,0x40,0x54,0xC0,0x00,0x00,}}, +{ 0x7E70, {0x20,0x00,0x23,0xC0,0x4A,0x40,0xFB,0xC0,0x37,0xE0,0x6D,0xA0,0xFF,0xE0,0x30,0x80,0x7F,0xE0,0x69,0xC0,0xA6,0xA0,0x20,0x80,0x00,0x00,}}, +{ 0x7E79, {0x60,0x00,0x6F,0xC0,0xDF,0xC0,0xDF,0xC0,0x6F,0xC0,0x51,0x00,0xFF,0xE0,0x64,0xC0,0x7F,0xE0,0x7F,0xC0,0xE3,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x7E7B, {0x60,0x00,0x67,0xC0,0xDF,0xE0,0xDF,0xE0,0x7D,0xC0,0x51,0x00,0xFF,0xE0,0x63,0x00,0x7F,0xC0,0x7B,0xC0,0xEB,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x7E7C, {0x62,0x80,0x6B,0xC0,0xDF,0xC0,0xDB,0xC0,0x6F,0xC0,0x5F,0xE0,0xFB,0xC0,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0xEF,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x7E7D, {0x21,0x80,0x27,0xE0,0xEF,0xE0,0xFF,0xE0,0x37,0xC0,0x29,0xC0,0xFE,0x40,0x33,0xC0,0x7B,0xC0,0x6B,0xC0,0xA2,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x7E7F, {0x60,0x80,0x6F,0x80,0xDE,0xE0,0xDF,0xE0,0x6F,0x00,0x5B,0xC0,0xFF,0x00,0x70,0x00,0x7F,0xC0,0x6B,0xC0,0xFF,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x7E82, {0x42,0x00,0x7F,0xE0,0x94,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x5F,0x00,0xFF,0xE0,0x1F,0x00,0x24,0xC0,0x00,0x00,}}, +{ 0x7E83, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFF,0xE0,0x6B,0xC0,0x6B,0xC0,0xF7,0xA0,0x64,0x80,0x77,0x80,0x77,0x80,0xE8,0x80,0x70,0x80,0x00,0x00,}}, +{ 0x7E88, {0x64,0x00,0x65,0xE0,0xDE,0x80,0xDF,0xC0,0x65,0xC0,0x5F,0xC0,0xF1,0xC0,0x6F,0xC0,0x7B,0xC0,0x7F,0xC0,0xEB,0xA0,0x61,0x20,0x00,0x00,}}, +{ 0x7E89, {0x64,0x80,0x6E,0xC0,0xDF,0xE0,0xDF,0xE0,0x6A,0xC0,0x57,0xA0,0xF4,0x80,0x67,0x80,0x77,0x80,0x77,0x80,0xE2,0x80,0x6C,0x40,0x00,0x00,}}, +{ 0x7E8C, {0x61,0x00,0x7F,0xE0,0xCF,0xC0,0xDF,0xC0,0x6D,0xC0,0x5F,0xC0,0xFF,0x80,0x67,0x80,0x77,0x80,0x77,0x80,0xE6,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x7E8E, {0x65,0x80,0x65,0xC0,0xFF,0xC0,0xFF,0xE0,0x7B,0x80,0x7B,0xC0,0xEB,0xC0,0x7B,0xC0,0x7A,0x80,0x7F,0xA0,0xFB,0x60,0x62,0x20,0x00,0x00,}}, +{ 0x7E8F, {0x61,0x80,0x6F,0xE0,0xDB,0xC0,0xDB,0xC0,0x6B,0xC0,0x5B,0xC0,0xFB,0xC0,0x6F,0xE0,0x7F,0xE0,0x7F,0xE0,0xE9,0x80,0x77,0xE0,0x00,0x00,}}, +{ 0x7E90, {0x64,0x00,0x65,0xE0,0xDE,0x80,0xDF,0xC0,0x6B,0xC0,0x53,0xC0,0xFB,0xC0,0x77,0xC0,0x77,0xC0,0x69,0xC0,0xF1,0xA0,0x61,0x20,0x00,0x00,}}, +{ 0x7E92, {0x60,0x00,0x6F,0xE0,0xDB,0xC0,0xDB,0xC0,0x6B,0xC0,0x5B,0xC0,0xFB,0xC0,0x6F,0xE0,0x7F,0xE0,0x7F,0xE0,0xF1,0x80,0x6F,0xE0,0x00,0x00,}}, +{ 0x7E93, {0x60,0x00,0x6F,0xC0,0xDF,0xC0,0xDF,0xC0,0x6B,0xC0,0x5F,0xC0,0xF7,0x40,0x6B,0x20,0x7F,0xE0,0x77,0x80,0xE3,0x80,0x6E,0x40,0x00,0x00,}}, +{ 0x7E94, {0x63,0x80,0x65,0x80,0xDF,0xC0,0xD7,0xE0,0x65,0xC0,0x57,0xA0,0xFD,0xE0,0x63,0x80,0x7F,0x80,0x77,0xC0,0xE3,0xA0,0x7C,0xE0,0x00,0x00,}}, +{ 0x7E96, {0x6B,0x80,0x6B,0xC0,0xFF,0xC0,0xFF,0xE0,0x7B,0x80,0x7B,0xC0,0xEB,0xC0,0x7B,0xC0,0x7A,0x80,0x7F,0xA0,0xFB,0x60,0x62,0x20,0x00,0x00,}}, +{ 0x7E9B, {0x04,0x00,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x7F,0x80,0x7B,0xE0,0x7F,0xC0,0x7B,0xC0,0x7F,0xE0,0x7B,0xC0,0xA6,0xA0,0x00,0x00,}}, +{ 0x7E9C, {0x61,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xE0,0x77,0xE0,0x7F,0xE0,0xF7,0x80,0x77,0x80,0x77,0x80,0x67,0xA0,0xE3,0xA0,0x7C,0xE0,0x00,0x00,}}, +{ 0x7F36, {0x20,0x00,0x20,0x00,0x3F,0xC0,0x44,0x00,0x44,0x00,0xBF,0xE0,0x04,0x00,0x24,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7F38, {0x60,0x00,0x67,0xE0,0x79,0x80,0xA1,0x80,0xFD,0x80,0x21,0x80,0x69,0x80,0x69,0x80,0x69,0x80,0x79,0x80,0x4F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x7F3A, {0x61,0x80,0x61,0x80,0x7B,0xC0,0xA3,0xC0,0xFD,0xC0,0x21,0xC0,0x6F,0xE0,0x69,0x80,0x69,0x80,0x7A,0x80,0x4C,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x7F45, {0x61,0x00,0x63,0xC0,0x7F,0xE0,0x7F,0xC0,0xA5,0xC0,0xFC,0xC0,0x27,0xC0,0x77,0xC0,0x77,0xE0,0x7F,0xE0,0x59,0x80,0x51,0x80,0x00,0x00,}}, +{ 0x7F4C, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x71,0x80,0xDA,0x60,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7F4D, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0xFF,0xE0,0xFF,0xE0,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7F4E, {0x67,0x80,0x64,0x80,0x7F,0x80,0x7F,0xC0,0xA3,0x00,0xFF,0xE0,0x2D,0xC0,0x77,0xC0,0x7F,0xE0,0x7F,0xE0,0x53,0xC0,0x4C,0x40,0x00,0x00,}}, +{ 0x7F50, {0x62,0x80,0x6F,0xE0,0x7F,0xC0,0x7F,0xC0,0xA7,0xC0,0xFA,0x80,0x27,0xE0,0x7D,0x80,0x77,0xC0,0x77,0xC0,0x57,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x7F51, {0x00,0x00,0x7F,0xE0,0x48,0xA0,0x48,0xA0,0x6C,0xA0,0x6A,0xA0,0x51,0x20,0x59,0xA0,0x5F,0xA0,0x72,0xE0,0x64,0x20,0x40,0x60,0x00,0x00,}}, +{ 0x7F54, {0x00,0x00,0x7F,0xC0,0x59,0x40,0x4A,0x40,0x7F,0xC0,0x44,0x40,0x5F,0x40,0x50,0x40,0x50,0x40,0x4E,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x7F55, {0x00,0x00,0x7F,0xE0,0x92,0x40,0x13,0xC0,0x20,0x00,0x7F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7F58, {0x00,0x00,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x02,0x00,0x06,0x00,0x3D,0xC0,0xE4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7F5F, {0x00,0x00,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x44,0x40,0x04,0x00,0xFF,0xE0,0x04,0x00,0x7F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x7F60, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x60,0x80,0x7F,0x80,0x64,0x00,0x7F,0xC0,0x62,0x20,0x7D,0xA0,0xE0,0x60,0x00,0x00,}}, +{ 0x7F67, {0x00,0x00,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x31,0x80,0x21,0x80,0xFF,0xE0,0x71,0x80,0x6B,0xC0,0xA5,0xA0,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x7F68, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0xFF,0xE0,0x25,0x80,0x7F,0x80,0xF5,0xE0,0x3F,0x80,0x3F,0xC0,0x34,0x40,0x03,0xC0,0x00,0x00,}}, +{ 0x7F69, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x07,0xC0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7F6A, {0x00,0x00,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x09,0x00,0x79,0xC0,0x09,0x00,0x79,0xC0,0x09,0x00,0xF1,0xE0,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x7F6B, {0x00,0x00,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x7C,0x80,0x10,0x80,0xFE,0xC0,0x10,0xA0,0x7C,0xA0,0x1E,0x80,0xF0,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x7F6E, {0x00,0x00,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0xFF,0xE0,0x1F,0x80,0x50,0x80,0x5F,0x80,0x5F,0x80,0x5F,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x7F70, {0x00,0x00,0x3F,0xE0,0x28,0xA0,0x3F,0xE0,0x1C,0x20,0x7E,0xA0,0x1C,0xA0,0x1C,0xA0,0x00,0xA0,0x3E,0xA0,0x3E,0x20,0x22,0x60,0x00,0x00,}}, +{ 0x7F72, {0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x04,0x40,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x1F,0x80,0x70,0x80,0x9F,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x7F75, {0x00,0x00,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x22,0x00,0x3F,0x80,0x22,0x00,0x3F,0x80,0x3F,0xE0,0x2B,0xA0,0x52,0xA0,0x80,0xC0,0x00,0x00,}}, +{ 0x7F77, {0x00,0x00,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x29,0x40,0xFD,0x80,0x79,0x20,0x49,0xE0,0x79,0x40,0x79,0x80,0x49,0x20,0x59,0xE0,0x00,0x00,}}, +{ 0x7F78, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x30,0x80,0xFF,0xE0,0x00,0x80,0x72,0x80,0x79,0x80,0x78,0x80,0x78,0x80,0x48,0x80,0x00,0x00,}}, +{ 0x7F79, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x64,0x80,0x6F,0xC0,0x79,0x00,0xFF,0x80,0xEF,0x80,0x6F,0x80,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x7F82, {0x00,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x39,0x40,0x69,0xC0,0x33,0xE0,0x3A,0x20,0x7F,0xE0,0x3F,0xE0,0x52,0x20,0x12,0x60,0x00,0x00,}}, +{ 0x7F83, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0xFF,0xE0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x25,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x7F85, {0x00,0x00,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x32,0xC0,0xD3,0xE0,0x66,0x80,0x53,0xC0,0xFA,0x80,0x73,0xC0,0xAB,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x7F86, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0xFB,0x80,0x7A,0x40,0x49,0xC0,0x7A,0x80,0x7B,0x00,0x5B,0xC0,0x52,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x7F87, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0xFF,0xC0,0x71,0x80,0x72,0x80,0x7F,0xE0,0x7B,0xC0,0xFF,0xC0,0x32,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x7F88, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xE0,0xFF,0x80,0x73,0xC0,0x73,0x80,0x7B,0xC0,0x7B,0xE0,0xFF,0xE0,0x37,0xE0,0x28,0xC0,0x00,0x00,}}, +{ 0x7F8A, {0x20,0x80,0x11,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7F8C, {0x21,0x80,0x11,0x00,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x7F8E, {0x20,0x80,0x11,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x7F94, {0x21,0x80,0x11,0x00,0x7F,0xC0,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x7F9A, {0x49,0x80,0x69,0x80,0xF9,0x80,0xFE,0x40,0x27,0xE0,0x78,0x00,0x27,0xC0,0x39,0x40,0xE1,0x40,0x61,0xC0,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x7F9D, {0x48,0x40,0x68,0x80,0xFF,0x80,0xFF,0x80,0x23,0x80,0x7B,0xE0,0x22,0x80,0x3A,0x80,0xE2,0x60,0x66,0x60,0x5F,0xE0,0x80,0x20,0x00,0x00,}}, +{ 0x7F9E, {0x21,0x00,0x13,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x20,0x00,0x3F,0x80,0x7F,0xC0,0x9F,0xC0,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7FA3, {0x00,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x1F,0xC0,0x30,0x40,0xDF,0xC0,0x13,0x00,0x7F,0xC0,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x7FA4, {0x02,0x40,0x79,0x40,0x2F,0xE0,0xF8,0x80,0x28,0x80,0x3B,0xC0,0x20,0x80,0x78,0x80,0x6F,0xE0,0xA8,0x80,0x38,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x7FA8, {0x11,0x00,0x7F,0xC0,0x04,0x00,0x1F,0x80,0xFF,0xE0,0x42,0x00,0x22,0x00,0x87,0xE0,0x59,0x40,0x23,0x80,0x44,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x7FA9, {0x11,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x1A,0x80,0x62,0x40,0xFF,0xE0,0x29,0x40,0xF0,0xA0,0x23,0xA0,0x6C,0x60,0x00,0x00,}}, +{ 0x7FAE, {0x11,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x52,0x40,0x89,0x20,0x7F,0xC0,0x1F,0x00,0xFF,0xE0,0x33,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x7FAF, {0x48,0x00,0x6B,0xC0,0xFF,0xC0,0xFF,0xC0,0x23,0xC0,0x79,0x00,0x23,0xE0,0x3D,0xA0,0xE7,0xA0,0x67,0xA0,0x44,0x20,0x80,0xC0,0x00,0x00,}}, +{ 0x7FB2, {0x11,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x19,0x80,0x61,0x40,0xFF,0xE0,0xF9,0xC0,0xF8,0xE0,0x09,0xE0,0x36,0x20,0x00,0x00,}}, +{ 0x7FB6, {0x91,0x00,0xFF,0xE0,0xFF,0xC0,0x6B,0xC0,0x6B,0xC0,0x6F,0xC0,0x77,0x80,0xE4,0x80,0x47,0x80,0x47,0x80,0x9F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7FB8, {0x04,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x60,0x80,0x7F,0x80,0x6B,0xC0,0x7F,0xC0,0x6F,0xC0,0x7F,0xE0,0x75,0xE0,0xE5,0x20,0x00,0x00,}}, +{ 0x7FB9, {0x11,0x00,0x7F,0xC0,0x3F,0x80,0xFF,0xE0,0xD2,0x40,0xA9,0x20,0x7F,0xC0,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x7FBD, {0x00,0x00,0x7F,0xE0,0x04,0x20,0x05,0x20,0x24,0xA0,0x14,0xA0,0x04,0x20,0x0C,0x60,0x14,0xA0,0x67,0x20,0x04,0x20,0x0C,0x60,0x00,0x00,}}, +{ 0x7FC1, {0x17,0x80,0x10,0x80,0xE6,0x60,0x8F,0x20,0x7E,0x80,0x00,0x00,0xFF,0xC0,0x4A,0x40,0x08,0x40,0x39,0xC0,0xCE,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x7FC5, {0x60,0x00,0x6F,0xC0,0xF3,0xC0,0xF7,0xC0,0x69,0x40,0xF3,0xC0,0x53,0xC0,0x75,0x40,0x29,0x40,0x33,0x40,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x7FC6, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0x40,0x08,0x00,0x7F,0x00,0x11,0x20,0x64,0xE0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7FCA, {0x30,0x00,0x3F,0xE0,0x7B,0x20,0x7B,0x60,0x55,0x60,0x39,0xA0,0x31,0x60,0x33,0x60,0x33,0xA0,0x7D,0x20,0x01,0x20,0x03,0x60,0x00,0x00,}}, +{ 0x7FCC, {0x00,0x00,0x7F,0xC0,0x29,0x40,0x39,0xC0,0x6B,0x40,0x1C,0xC0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x0A,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x7FD2, {0x00,0x00,0x7F,0xE0,0x25,0x20,0x1C,0xE0,0x67,0x20,0x08,0x60,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x7FD4, {0x48,0x00,0x2F,0xE0,0x79,0x20,0x7D,0x20,0x33,0xA0,0x3B,0xE0,0x31,0x20,0x33,0x60,0x75,0xA0,0x31,0x20,0x21,0x20,0x43,0x60,0x00,0x00,}}, +{ 0x7FD5, {0x04,0x00,0x0A,0x00,0xFF,0xE0,0xFF,0xE0,0x31,0x80,0x3F,0x80,0x00,0x00,0xFF,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x7FE0, {0x00,0x00,0x7B,0xC0,0x39,0xC0,0x7B,0xC0,0x1C,0xC0,0x04,0x00,0x7F,0xC0,0x11,0x80,0x2E,0x40,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x7FE1, {0x12,0x00,0xF3,0xE0,0x73,0xC0,0x73,0xC0,0xF3,0xE0,0x22,0x00,0xFF,0xC0,0x18,0xC0,0xFF,0xC0,0xFF,0xC0,0xCE,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x7FE6, {0x11,0x00,0xFF,0xE0,0x78,0x40,0x79,0x40,0x79,0x40,0x59,0x40,0x58,0xC0,0xFF,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x7FE9, {0x00,0x00,0x7F,0xE0,0x3D,0xA0,0x3D,0xE0,0x3F,0xE0,0x20,0xA0,0x3D,0xE0,0x7D,0xE0,0x7E,0xA0,0x7C,0xA0,0x3C,0xA0,0x2D,0xE0,0x00,0x00,}}, +{ 0x7FEB, {0x00,0x00,0xFF,0xE0,0xBA,0x00,0x6E,0x00,0xB3,0xE0,0x67,0x80,0x21,0x80,0x7D,0x80,0x45,0x80,0x7D,0xA0,0x7E,0xA0,0x44,0x60,0x00,0x00,}}, +{ 0x7FF0, {0x21,0x00,0x21,0x00,0xFA,0x80,0x7C,0x40,0x4F,0xE0,0x79,0x40,0x4D,0xC0,0x7B,0x40,0x27,0xC0,0xFD,0xC0,0x21,0x40,0x23,0xC0,0x00,0x00,}}, +{ 0x7FF3, {0x00,0x00,0x7D,0x80,0x7A,0x60,0x7F,0xE0,0x73,0xC0,0x69,0x80,0x7F,0x60,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x7FF9, {0x20,0x00,0x77,0xC0,0xFB,0xC0,0xFF,0xC0,0xF9,0x40,0x53,0xC0,0x7B,0xC0,0x85,0x40,0xF9,0x40,0x73,0x60,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x7FFB, {0x0C,0x00,0x77,0xE0,0x3C,0xA0,0x7E,0xA0,0x39,0xE0,0x35,0xE0,0x34,0xA0,0x7D,0xE0,0x3E,0xA0,0x3C,0xA0,0x3C,0xA0,0x25,0xE0,0x00,0x00,}}, +{ 0x7FFC, {0x00,0x00,0xFF,0xC0,0x6B,0xC0,0xDF,0xC0,0x24,0x80,0x3F,0x80,0x24,0x80,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x1B,0x00,0xE0,0xC0,0x00,0x00,}}, +{ 0x8000, {0x20,0x00,0x27,0xC0,0xAF,0xC0,0x7F,0xC0,0x37,0xC0,0xFA,0x80,0x67,0xE0,0x6D,0x80,0x67,0xC0,0x7F,0xC0,0x77,0xE0,0x84,0x00,0x00,0x00,}}, +{ 0x8001, {0x04,0x00,0x04,0x80,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x0C,0x00,0x18,0x00,0x19,0x80,0x6E,0x00,0x88,0x40,0x08,0x40,0x07,0xC0,0x00,0x00,}}, +{ 0x8003, {0x04,0x80,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x02,0x00,0x0C,0x00,0x3F,0xC0,0xC8,0x00,0x1F,0x80,0x10,0x80,0x00,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x8004, {0x08,0x80,0x3F,0x00,0xFF,0xE0,0xFF,0xE0,0x3F,0x40,0xE8,0x40,0x07,0xC0,0x3E,0x00,0x7F,0x80,0x7F,0xE0,0xF8,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x8005, {0x04,0x00,0x04,0x80,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x04,0x00,0x1F,0x80,0x70,0x80,0x9F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x8006, {0x08,0x80,0x3F,0x00,0xFF,0xE0,0xFF,0xE0,0x3F,0x40,0xE8,0x40,0x07,0xC0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x800B, {0x08,0x80,0x3F,0x00,0xFF,0xE0,0xFF,0xE0,0x3F,0x20,0xE7,0xE0,0x7F,0xC0,0x09,0x80,0x7F,0xC0,0x1F,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x800C, {0x00,0x00,0x7F,0xE0,0x02,0x00,0x3F,0xC0,0x29,0x40,0x29,0x40,0x29,0x40,0x29,0x40,0x29,0x40,0x29,0x40,0x29,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x8010, {0x00,0x40,0xFC,0x40,0x20,0x40,0xFF,0xE0,0xB4,0x40,0xB5,0x40,0xB4,0xC0,0xB4,0x40,0xB4,0x40,0xB4,0x40,0xB4,0x40,0x8C,0xC0,0x00,0x00,}}, +{ 0x8012, {0x04,0xC0,0x07,0x00,0x7C,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xE4,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8015, {0x21,0x40,0x21,0x40,0xFF,0xE0,0x79,0x40,0x21,0x40,0xFD,0x40,0x21,0x40,0x77,0xE0,0x6A,0x40,0xA2,0x40,0x24,0x40,0x28,0x40,0x00,0x00,}}, +{ 0x8017, {0x20,0x40,0x21,0x80,0xFF,0x00,0x71,0x40,0x27,0x80,0xF9,0x00,0x21,0x20,0x77,0xC0,0x69,0x00,0xA1,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x8018, {0x20,0x00,0x3B,0xC0,0xE0,0x00,0x78,0x00,0x37,0xE0,0xF9,0x80,0x21,0x80,0x71,0x80,0x69,0xC0,0xA1,0x40,0x27,0xA0,0x20,0x20,0x00,0x00,}}, +{ 0x8019, {0x20,0x00,0x3B,0xC0,0xE3,0xC0,0x7B,0xC0,0x33,0xC0,0xFF,0xC0,0x22,0x40,0x72,0x00,0x6A,0x00,0xA2,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x801C, {0x10,0x00,0x1D,0xC0,0x71,0x40,0x3D,0x40,0x19,0xC0,0x7D,0x40,0x11,0x00,0x39,0xE0,0x35,0x20,0x51,0x20,0x11,0xE0,0x11,0x20,0x00,0x00,}}, +{ 0x8021, {0x30,0xC0,0x3F,0xC0,0x75,0xC0,0x37,0xE0,0x35,0xE0,0x7D,0xE0,0x37,0xE0,0x3D,0xE0,0x7F,0xA0,0x3F,0xA0,0x31,0x20,0x32,0x40,0x00,0x00,}}, +{ 0x8028, {0x20,0x00,0x3F,0xE0,0xE7,0xC0,0x7F,0xC0,0x37,0xE0,0xFD,0xA0,0x35,0xC0,0x6F,0x60,0x6F,0xE0,0xA9,0x40,0x20,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x8033, {0x00,0x00,0xFF,0xE0,0x21,0x00,0x3F,0x00,0x21,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x21,0xC0,0xFF,0x00,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x8036, {0x00,0x00,0xFF,0xC0,0x49,0x40,0x79,0x80,0x49,0x80,0x49,0x80,0x79,0x40,0x49,0x20,0x4D,0x20,0xF9,0xE0,0x09,0x00,0x09,0x00,0x00,0x00,}}, +{ 0x803B, {0x01,0x80,0xF9,0x80,0x51,0x80,0x73,0x80,0x53,0xC0,0x53,0x80,0x73,0x80,0x53,0x80,0x73,0x80,0xF3,0x80,0x1F,0xE0,0x10,0x00,0x00,0x00,}}, +{ 0x803D, {0x01,0x00,0xF9,0x00,0x57,0xE0,0x75,0x20,0x59,0x00,0x51,0x00,0x71,0x80,0x51,0x80,0x7A,0x80,0xD2,0xA0,0x14,0xA0,0x18,0xE0,0x00,0x00,}}, +{ 0x803F, {0x01,0x80,0xFD,0x80,0x69,0x80,0x7B,0xA0,0x6B,0xC0,0x6B,0x80,0x7D,0x80,0x69,0x80,0x79,0x80,0xFA,0x40,0x0C,0x40,0x08,0x20,0x00,0x00,}}, +{ 0x8046, {0x01,0x00,0xFB,0x00,0x53,0x80,0x74,0x80,0x5F,0xC0,0x50,0x20,0x7F,0xC0,0x51,0x40,0x71,0x40,0xF1,0xC0,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x804A, {0x01,0x00,0x7E,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x35,0xE0,0x3F,0xE0,0x7D,0xE0,0x12,0xC0,0x14,0xC0,0x00,0x00,}}, +{ 0x8052, {0x00,0x40,0xF8,0x80,0x53,0x80,0x71,0x80,0x57,0xE0,0x51,0x80,0x71,0x80,0x53,0xC0,0x72,0x40,0xF2,0x40,0x13,0xC0,0x12,0x40,0x00,0x00,}}, +{ 0x8056, {0x00,0x00,0xFE,0x00,0x79,0xC0,0x79,0x40,0x4D,0xC0,0xF9,0x40,0x08,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x8058, {0x01,0x00,0xFF,0xC0,0x57,0xC0,0x77,0xC0,0x57,0xC0,0x50,0x00,0x7F,0xE0,0x51,0x00,0x73,0xC0,0xF0,0x40,0x10,0x40,0x10,0x80,0x00,0x00,}}, +{ 0x805A, {0x00,0x00,0xFC,0x00,0x7B,0xC0,0x79,0xC0,0x69,0x80,0x7E,0x40,0xC9,0x20,0x0E,0x80,0x77,0x80,0x75,0x80,0x64,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x805E, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x7F,0xC0,0x51,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x7F,0x40,0x41,0xC0,0x00,0x00,}}, +{ 0x805F, {0x60,0x00,0x7B,0xC0,0xFE,0x40,0xFF,0xC0,0x2A,0x40,0x40,0x00,0xFF,0xE0,0x31,0x80,0x3F,0x80,0x3F,0xE0,0xFF,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8061, {0x01,0x80,0xFA,0x80,0x56,0x40,0x79,0x20,0x52,0x80,0x57,0xC0,0x71,0x40,0x53,0x80,0x76,0x60,0xDE,0x20,0x12,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x8062, {0x01,0x80,0xF9,0x80,0x57,0xE0,0x78,0x00,0x57,0xE0,0x51,0x80,0x73,0x80,0x53,0xC0,0x73,0x80,0xF3,0x80,0x15,0x80,0x18,0xE0,0x00,0x00,}}, +{ 0x8068, {0x04,0x80,0xF4,0xC0,0x7B,0xC0,0x64,0xC0,0x6A,0xC0,0x7F,0xE0,0x61,0x20,0x72,0xC0,0x7F,0xE0,0xE2,0x80,0x24,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x806F, {0x04,0x80,0xF4,0xC0,0x7B,0xC0,0x64,0xC0,0x6A,0xC0,0x7F,0xE0,0x63,0xA0,0x7B,0xC0,0x7F,0xC0,0xEF,0xC0,0x25,0x80,0x29,0x80,0x00,0x00,}}, +{ 0x8070, {0x01,0x00,0xFF,0xC0,0x55,0xC0,0x77,0xC0,0x57,0xC0,0x56,0xC0,0x77,0xC0,0x53,0x00,0x77,0xE0,0xFE,0x20,0x12,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x8072, {0x21,0x80,0xFD,0x80,0x7A,0x60,0x7B,0xE0,0x7B,0xC0,0x79,0x80,0x47,0x60,0xBF,0xC0,0x3F,0x80,0x3F,0xC0,0xFF,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8073, {0x24,0x80,0x66,0xC0,0x39,0x60,0xE5,0xE0,0x6B,0x00,0x71,0xE0,0xFF,0xE0,0x31,0x80,0x3F,0x80,0x3F,0xE0,0xFF,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8074, {0x00,0x80,0xFF,0xF0,0x50,0x80,0x77,0xE0,0x55,0x60,0x75,0x60,0x57,0xE0,0x79,0x80,0xD5,0x40,0x15,0x10,0x19,0x50,0x10,0xC0,0x00,0x00,}}, +{ 0x8076, {0x00,0x00,0x7F,0xC0,0x1F,0x00,0x1F,0x00,0x7F,0x00,0x01,0x00,0xFF,0xE0,0x6A,0x80,0x7B,0x80,0x7B,0x80,0xFF,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x8077, {0x04,0x80,0xF4,0xC0,0x7F,0xC0,0x6A,0x80,0x7F,0xE0,0x60,0x80,0x6E,0xC0,0x6A,0xC0,0x7E,0x80,0xEE,0xA0,0x2B,0x60,0x22,0x20,0x00,0x00,}}, +{ 0x8079, {0x01,0x00,0xFF,0xE0,0x7F,0x40,0x7E,0xE0,0x73,0x80,0x6F,0xC0,0x6B,0xC0,0x7F,0xE0,0x7F,0xE0,0xFF,0xE0,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x807D, {0x01,0x00,0xF3,0x00,0x7F,0xE0,0x6F,0xC0,0x6B,0xC0,0x6F,0xC0,0xE0,0x00,0xFF,0xE0,0xE3,0x00,0xEB,0xA0,0xF2,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x807E, {0x12,0x00,0x7F,0xC0,0xFF,0x80,0xFF,0x80,0x6B,0x80,0x7B,0x80,0x7B,0xA0,0x7B,0xE0,0xFF,0xE0,0x1F,0xC0,0xFF,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x807F, {0x04,0x00,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x04,0xC0,0x3F,0x80,0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8084, {0x41,0x80,0x59,0x80,0x63,0xC0,0x7F,0xE0,0x61,0xC0,0x7B,0xC0,0x61,0x80,0xFB,0xC0,0x37,0xE0,0x6F,0xE0,0x49,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x8085, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x75,0x80,0x75,0x80,0x64,0x80,0x7F,0x80,0x75,0x80,0x55,0x80,0x95,0x80,0x00,0x00,}}, +{ 0x8086, {0x01,0x80,0x79,0x80,0x73,0xC0,0x77,0xE0,0x71,0xC0,0x43,0xC0,0xF9,0x80,0x63,0xC0,0x77,0xE0,0x5F,0xE0,0xE9,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8087, {0x01,0x00,0xFF,0x00,0x7F,0xE0,0x79,0xC0,0x47,0x60,0xBF,0x00,0xFF,0xE0,0x3F,0x00,0x04,0x00,0x7F,0xC0,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x8089, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x44,0x40,0x4A,0x40,0x55,0x40,0x64,0x40,0x46,0x40,0x49,0x40,0x50,0xC0,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x808B, {0x00,0x80,0x38,0x80,0x28,0x80,0x2F,0xE0,0x38,0xA0,0x28,0xA0,0x28,0xA0,0x38,0xA0,0x29,0x20,0x29,0x20,0x2A,0x20,0x5C,0x40,0x00,0x00,}}, +{ 0x808C, {0x00,0x00,0x73,0x80,0x52,0x80,0x72,0x80,0x52,0x80,0x52,0x80,0x72,0x80,0x52,0x80,0x52,0x80,0x54,0xA0,0x54,0xA0,0xB8,0x60,0x00,0x00,}}, +{ 0x8093, {0x04,0x00,0x7F,0xE0,0x40,0x00,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x60,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8096, {0x04,0x00,0x44,0x40,0x24,0x80,0x04,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8098, {0x00,0x80,0x70,0x80,0x50,0x80,0x5F,0xE0,0x70,0x80,0x54,0x80,0x52,0x80,0x72,0x80,0x50,0x80,0x50,0x80,0x50,0x80,0xB0,0x80,0x00,0x00,}}, +{ 0x809A, {0x01,0x00,0x71,0x00,0x51,0x00,0x51,0x00,0x7F,0xC0,0x51,0x00,0x51,0x00,0x71,0x00,0x51,0x00,0x51,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x809B, {0x00,0x00,0x7F,0xC0,0x51,0x00,0x51,0x00,0x71,0x00,0x51,0x00,0x51,0x00,0x71,0x00,0x51,0x00,0x51,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x809D, {0x00,0x00,0x7F,0xC0,0x51,0x00,0x51,0x00,0x71,0x00,0x5F,0xE0,0x51,0x00,0x71,0x00,0x51,0x00,0x51,0x00,0x51,0x00,0xB1,0x00,0x00,0x00,}}, +{ 0x80A1, {0x00,0x00,0x73,0x80,0x52,0x80,0x72,0xA0,0x54,0xA0,0x58,0x60,0x77,0xC0,0x52,0x40,0x51,0x80,0x51,0x00,0x56,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x80A2, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x71,0x00,0x51,0x00,0x5F,0xC0,0x74,0x40,0x52,0x80,0x53,0x00,0x51,0x00,0x56,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x80A5, {0x00,0x00,0x77,0xC0,0x55,0x40,0x55,0x40,0x75,0x40,0x57,0xC0,0x54,0x40,0x74,0x00,0x54,0x00,0x54,0x20,0x54,0x20,0xB3,0xE0,0x00,0x00,}}, +{ 0x80A9, {0x00,0x00,0x3F,0xE0,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x00,0x1F,0xC0,0x28,0x40,0x2F,0xC0,0x4F,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0x80AA, {0x01,0x00,0x71,0x00,0x51,0x00,0x5F,0xE0,0x71,0x00,0x51,0xC0,0x51,0x40,0x72,0x40,0x52,0x40,0x54,0x40,0x58,0x40,0xB0,0x80,0x00,0x00,}}, +{ 0x80AC, {0x01,0x80,0x71,0x40,0x5F,0xE0,0x5F,0xE0,0x71,0x00,0x51,0x00,0x51,0x80,0x73,0x80,0x53,0x80,0x55,0xA0,0x59,0xA0,0xB0,0xE0,0x00,0x00,}}, +{ 0x80AD, {0x03,0x80,0x38,0x80,0x2B,0xE0,0x2B,0xE0,0x3A,0xA0,0x2A,0xA0,0x2A,0xE0,0x3B,0x60,0x2A,0x20,0x2A,0x20,0x2A,0x20,0x5A,0x60,0x00,0x00,}}, +{ 0x80AF, {0x04,0x00,0x27,0x80,0x24,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x80B1, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x51,0x00,0x71,0x00,0x52,0x00,0x52,0x80,0x72,0x80,0x55,0x00,0x59,0x40,0x57,0xA0,0xB0,0x20,0x00,0x00,}}, +{ 0x80B2, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x19,0x80,0x7E,0x40,0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x80B4, {0x09,0x00,0x06,0x00,0x3D,0x80,0xFF,0xE0,0x08,0x00,0x1F,0x80,0x30,0x80,0x5F,0x80,0x90,0x80,0x1F,0x80,0x10,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x80BA, {0x01,0x00,0x71,0x00,0x51,0x00,0x7F,0xE0,0x51,0x00,0x57,0xE0,0x75,0x20,0x55,0x20,0x55,0x20,0x55,0x60,0x51,0x00,0xB1,0x00,0x00,0x00,}}, +{ 0x80C3, {0x00,0x00,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x80C4, {0x04,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0x7F,0x80,0x60,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x80C6, {0x00,0x00,0x77,0x80,0x54,0x80,0x74,0x80,0x57,0x80,0x54,0x80,0x74,0x80,0x54,0x80,0x57,0x80,0x50,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x80CC, {0x12,0x00,0x12,0x40,0xF3,0x80,0x32,0x20,0xD3,0xE0,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x80CE, {0x01,0x00,0x71,0x00,0x51,0x00,0x72,0x40,0x52,0xE0,0x5F,0x20,0x70,0x00,0x57,0xC0,0x54,0x40,0x54,0x40,0x57,0xC0,0xB4,0x40,0x00,0x00,}}, +{ 0x80D6, {0x01,0x00,0x71,0x00,0x55,0x40,0x59,0x20,0x7F,0xC0,0x51,0x00,0x51,0x00,0x7F,0xE0,0x51,0x00,0x51,0x00,0x51,0x00,0xB1,0x00,0x00,0x00,}}, +{ 0x80D9, {0x02,0x00,0x72,0x00,0x53,0xE0,0x57,0xE0,0x79,0x00,0x51,0xE0,0x51,0x00,0x71,0x00,0x51,0xE0,0x51,0x00,0x51,0x00,0xB1,0x00,0x00,0x00,}}, +{ 0x80DA, {0x00,0x00,0x7F,0xE0,0x51,0x80,0x51,0x00,0x71,0x00,0x53,0x80,0x55,0x40,0x79,0x20,0x51,0x20,0x51,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x80DB, {0x00,0x00,0x3B,0xE0,0x2A,0xA0,0x2B,0xE0,0x3B,0xA0,0x2A,0xA0,0x2B,0xE0,0x3A,0xA0,0x28,0x80,0x28,0x80,0x28,0x80,0x58,0x80,0x00,0x00,}}, +{ 0x80DD, {0x00,0x40,0x71,0x80,0x57,0x80,0x55,0x80,0x77,0xE0,0x55,0x80,0x55,0x80,0x75,0x80,0x5E,0xA0,0x58,0x60,0x5F,0xE0,0xB0,0x20,0x00,0x00,}}, +{ 0x80DE, {0x02,0x00,0x72,0x00,0x57,0xE0,0x74,0x20,0x5B,0xA0,0x50,0xA0,0x77,0xA0,0x54,0xC0,0x54,0x00,0x54,0x20,0x54,0x20,0xB3,0xE0,0x00,0x00,}}, +{ 0x80E1, {0x10,0x00,0x11,0xE0,0x7F,0x20,0x11,0xE0,0x11,0x20,0x11,0x20,0x3D,0xE0,0x25,0x20,0x25,0x20,0x3D,0x20,0x26,0x20,0x04,0x60,0x00,0x00,}}, +{ 0x80E4, {0x44,0x80,0x45,0x80,0x7A,0x80,0x46,0x80,0x7F,0x80,0x40,0x80,0x5E,0x80,0x52,0x80,0x5E,0x80,0x5E,0xA0,0x52,0xA0,0x92,0x60,0x00,0x00,}}, +{ 0x80E5, {0x00,0x00,0xFF,0xC0,0x27,0xC0,0x3F,0xC0,0xC7,0xE0,0x00,0x00,0x7F,0x80,0x60,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x80EF, {0x01,0x00,0x73,0x00,0x5F,0xE0,0x54,0x80,0x7B,0xC0,0x50,0x20,0x5F,0xC0,0x71,0x00,0x53,0xC0,0x50,0x40,0x50,0x40,0xB0,0x80,0x00,0x00,}}, +{ 0x80F1, {0x01,0x00,0x71,0x40,0x59,0x40,0x55,0x80,0x71,0x00,0x5F,0xE0,0x53,0x80,0x73,0x80,0x57,0x80,0x55,0xA0,0x59,0xA0,0xB0,0xE0,0x00,0x00,}}, +{ 0x80F4, {0x00,0x00,0x77,0xE0,0x54,0x20,0x77,0xE0,0x54,0x20,0x55,0xA0,0x75,0xA0,0x55,0xA0,0x55,0xA0,0x55,0xA0,0x54,0x20,0xB4,0x60,0x00,0x00,}}, +{ 0x80F8, {0x02,0x00,0x72,0x00,0x57,0xE0,0x54,0x20,0x79,0x20,0x57,0x20,0x55,0xA0,0x76,0xA0,0x54,0xA0,0x57,0xA0,0x50,0x20,0xB0,0xC0,0x00,0x00,}}, +{ 0x80FC, {0x04,0x40,0x72,0x40,0x5F,0xE0,0x5F,0xE0,0x72,0x80,0x52,0x80,0x5F,0xE0,0x72,0x80,0x52,0x80,0x54,0x80,0x54,0x80,0xB8,0x80,0x00,0x00,}}, +{ 0x80FD, {0x21,0x00,0x31,0x00,0x49,0x60,0xFD,0x80,0x05,0x20,0x79,0xE0,0x49,0x00,0x79,0x60,0x49,0x80,0x79,0x20,0x49,0x20,0x59,0xE0,0x00,0x00,}}, +{ 0x8102, {0x04,0x00,0x74,0xC0,0x57,0x00,0x54,0x20,0x73,0xE0,0x50,0x00,0x53,0xC0,0x72,0x40,0x53,0xC0,0x52,0x40,0x53,0xC0,0xB2,0x40,0x00,0x00,}}, +{ 0x8105, {0x04,0x00,0x1F,0x80,0x08,0x80,0x7F,0xE0,0x14,0xA0,0x2D,0x60,0x5F,0xC0,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x10,0xC0,0x00,0x00,}}, +{ 0x8106, {0x01,0x00,0x77,0xC0,0x52,0x80,0x5F,0xE0,0x74,0x00,0x55,0xC0,0x55,0x40,0x75,0x40,0x55,0x80,0x55,0x20,0x59,0x20,0xB1,0xE0,0x00,0x00,}}, +{ 0x8107, {0x01,0x00,0x71,0x00,0x57,0xC0,0x71,0x40,0x52,0x40,0x54,0x80,0x74,0x80,0x5F,0xE0,0x55,0xA0,0x55,0xA0,0x59,0xA0,0xB3,0x60,0x00,0x00,}}, +{ 0x8108, {0x00,0xC0,0x77,0x00,0x54,0x20,0x75,0xC0,0x55,0x20,0x55,0xA0,0x75,0xC0,0x55,0x80,0x55,0x40,0x59,0x40,0x59,0x20,0xB1,0x00,0x00,0x00,}}, +{ 0x8109, {0x01,0x00,0x71,0x80,0x57,0x00,0x57,0x40,0x7F,0x40,0x53,0x80,0x53,0x80,0x75,0x80,0x5D,0x40,0x59,0x20,0x51,0x00,0xB3,0x00,0x00,0x00,}}, +{ 0x810A, {0x04,0x00,0x64,0xC0,0x04,0x00,0x6B,0xC0,0x11,0x00,0x3F,0x80,0xE0,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x811A, {0x02,0x00,0x72,0xE0,0x5F,0xA0,0x52,0xA0,0x72,0xA0,0x5F,0xA0,0x52,0xA0,0x72,0xA0,0x55,0xA0,0x5F,0xE0,0x58,0x80,0x90,0x80,0x00,0x00,}}, +{ 0x811B, {0x00,0x00,0x7F,0xE0,0x53,0xC0,0x57,0xC0,0x75,0x80,0x53,0xC0,0x50,0x00,0x77,0xC0,0x51,0x00,0x51,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x8123, {0x00,0x00,0x7F,0xE0,0x7F,0x80,0x7F,0xE0,0x72,0xC0,0x7D,0x80,0x70,0xE0,0xFF,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8129, {0x22,0x00,0x22,0x00,0x37,0xE0,0x7F,0x80,0x73,0x80,0xFC,0x60,0x73,0xC0,0x72,0x40,0x73,0xC0,0x73,0xC0,0x72,0x40,0x62,0xC0,0x00,0x00,}}, +{ 0x812F, {0x01,0x80,0x73,0x40,0x5F,0xE0,0x57,0xC0,0x77,0x40,0x55,0x40,0x57,0xC0,0x75,0x40,0x57,0xC0,0x57,0xC0,0x55,0x40,0xB5,0xC0,0x00,0x00,}}, +{ 0x8131, {0x04,0x40,0x72,0x80,0x57,0xC0,0x54,0x40,0x74,0x40,0x57,0xC0,0x55,0xC0,0x71,0x80,0x52,0x80,0x52,0xA0,0x54,0xA0,0xB8,0xE0,0x00,0x00,}}, +{ 0x8133, {0x01,0x20,0x3C,0xA0,0x2A,0x20,0x38,0x40,0x2A,0x60,0x2B,0x60,0x3A,0xA0,0x2A,0xA0,0x2B,0x60,0x2A,0x20,0x2B,0xE0,0x5A,0x20,0x00,0x00,}}, +{ 0x8139, {0x00,0x00,0x73,0xC0,0x53,0x80,0x73,0x80,0x53,0x80,0x52,0x00,0x7F,0xE0,0x53,0x40,0x52,0xC0,0x52,0x80,0x53,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x813E, {0x01,0x00,0x72,0x00,0x57,0xC0,0x57,0xC0,0x77,0x40,0x55,0x40,0x57,0xC0,0x73,0x80,0x5F,0xE0,0x5F,0xE0,0x50,0x80,0xB0,0x80,0x00,0x00,}}, +{ 0x8146, {0x03,0x80,0x63,0x80,0x67,0xC0,0x6F,0xC0,0x6B,0xC0,0x6F,0xC0,0x6B,0xC0,0x7B,0xC0,0x7F,0xE0,0x62,0x80,0x64,0x40,0xE8,0x40,0x00,0x00,}}, +{ 0x814B, {0x01,0x00,0x73,0x00,0x5F,0xE0,0x53,0x80,0x75,0xC0,0x55,0x40,0x5D,0xC0,0x77,0x80,0x55,0x80,0x55,0x80,0x56,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x814E, {0x00,0x00,0x7F,0xC0,0x72,0x40,0x79,0x80,0x72,0x80,0x7C,0x60,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8150, {0x02,0x00,0x7F,0xE0,0x44,0x80,0x5F,0xE0,0x6A,0x80,0x49,0x80,0x4B,0x80,0x7F,0xC0,0xAF,0x40,0x27,0x40,0x29,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x8151, {0x01,0x80,0x61,0x80,0x6F,0xE0,0x69,0x40,0x6A,0x40,0x6B,0xE0,0x6F,0x40,0x6B,0xC0,0x6A,0x40,0x7A,0x40,0x72,0x40,0xE2,0xC0,0x00,0x00,}}, +{ 0x8153, {0x03,0x80,0x73,0x80,0x5F,0xE0,0x5F,0xE0,0x73,0x80,0x5F,0xE0,0x53,0x80,0x73,0x80,0x5F,0xE0,0x55,0x80,0x55,0x80,0xB9,0x80,0x00,0x00,}}, +{ 0x8154, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x5A,0x80,0x72,0x80,0x54,0xC0,0x58,0x00,0x7F,0xC0,0x51,0x00,0x51,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x8155, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x5C,0x00,0x77,0xC0,0x55,0x40,0x55,0x40,0x7B,0x40,0x53,0xC0,0x55,0x20,0x59,0x20,0xB0,0xE0,0x00,0x00,}}, +{ 0x815F, {0x01,0x00,0x73,0x00,0x5F,0xE0,0x5F,0xE0,0x73,0xC0,0x52,0x40,0x5F,0xA0,0x73,0x00,0x57,0xC0,0x51,0x00,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x8165, {0x00,0x00,0x77,0xC0,0x57,0xC0,0x57,0xC0,0x77,0xC0,0x53,0x80,0x53,0x80,0x77,0xE0,0x5F,0xC0,0x57,0xC0,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x8166, {0x01,0xE0,0x39,0xE0,0x2A,0xC0,0x2B,0xE0,0x39,0x80,0x2B,0xE0,0x2A,0xE0,0x3B,0xE0,0x2A,0xE0,0x2B,0x20,0x2B,0xE0,0x5A,0x20,0x00,0x00,}}, +{ 0x816B, {0x00,0x20,0x77,0xC0,0x5F,0xF0,0x50,0x80,0x77,0xE0,0x54,0xA0,0x57,0xE0,0x74,0xA0,0x57,0xE0,0x57,0xE0,0x50,0x80,0x9F,0xF0,0x00,0x00,}}, +{ 0x816E, {0x00,0x00,0x77,0xC0,0x55,0x40,0x57,0xC0,0x77,0x40,0x55,0x40,0x57,0xC0,0x73,0x00,0x57,0xE0,0x5E,0x20,0x52,0x80,0xB1,0x80,0x00,0x00,}}, +{ 0x8170, {0x00,0x00,0x7F,0xF0,0x51,0x40,0x57,0xE0,0x75,0x60,0x57,0xE0,0x50,0x80,0x7F,0xF0,0x51,0x40,0x53,0x80,0x51,0x40,0x96,0x20,0x00,0x00,}}, +{ 0x8171, {0x01,0x80,0x71,0x80,0x7F,0xC0,0x6F,0xE0,0x69,0xC0,0x7F,0xC0,0x65,0x80,0x77,0xC0,0x7F,0xE0,0x6F,0xE0,0x73,0x80,0xE1,0xE0,0x00,0x00,}}, +{ 0x8174, {0x01,0x00,0x75,0xC0,0x59,0x40,0x5D,0x40,0x79,0x40,0x59,0x40,0x5D,0xC0,0x79,0x40,0x53,0x80,0x52,0x80,0x54,0x40,0xB8,0x20,0x00,0x00,}}, +{ 0x8178, {0x00,0x00,0x77,0x80,0x54,0x80,0x57,0x80,0x77,0x80,0x50,0x00,0x5F,0xE0,0x74,0x00,0x5F,0xC0,0x5D,0xC0,0x5B,0x40,0xB3,0x80,0x00,0x00,}}, +{ 0x8179, {0x02,0x00,0x72,0x00,0x57,0xE0,0x5B,0xC0,0x73,0xC0,0x52,0x40,0x53,0xC0,0x73,0x00,0x57,0xC0,0x59,0x80,0x53,0x80,0xBC,0x60,0x00,0x00,}}, +{ 0x817A, {0x01,0x00,0x72,0x00,0x57,0xC0,0x57,0xC0,0x74,0x40,0x57,0xC0,0x51,0x00,0x77,0x20,0x53,0xC0,0x55,0x40,0x59,0x20,0xB1,0x00,0x00,0x00,}}, +{ 0x817F, {0x00,0x00,0x79,0xC0,0x55,0x40,0x51,0xC0,0x71,0x40,0x51,0xC0,0x5D,0xA0,0x75,0xC0,0x55,0xC0,0x57,0x20,0x5A,0x00,0xB1,0xE0,0x00,0x00,}}, +{ 0x8180, {0x01,0x00,0x73,0x00,0x5F,0xE0,0x56,0x80,0x7F,0xE0,0x59,0x40,0x5F,0xE0,0x71,0x00,0x51,0xC0,0x52,0x40,0x54,0x40,0xB8,0x80,0x00,0x00,}}, +{ 0x8182, {0x22,0x00,0xFB,0xE0,0x7F,0x80,0x7B,0xC0,0x53,0xC0,0x66,0x20,0xBF,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x31,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8183, {0x00,0x00,0x77,0xC0,0x55,0xC0,0x55,0xC0,0x76,0x40,0x57,0xC0,0x50,0x00,0x77,0xC0,0x55,0xC0,0x55,0xC0,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x8188, {0x00,0x00,0x37,0xE0,0x33,0xC0,0x33,0xC0,0x33,0xC0,0x30,0x00,0x37,0xE0,0x35,0xE0,0x37,0xE0,0x35,0xA0,0x34,0xA0,0x74,0x60,0x00,0x00,}}, +{ 0x818A, {0x01,0x80,0x7F,0xE0,0x57,0xC0,0x57,0xC0,0x77,0x40,0x57,0xC0,0x55,0x40,0x75,0xC0,0x5F,0xE0,0x5F,0xE0,0x52,0x80,0xB0,0x80,0x00,0x00,}}, +{ 0x818F, {0x04,0x00,0xFF,0xE0,0x1F,0x00,0x00,0x00,0x7F,0xE0,0x5F,0x40,0x80,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8193, {0x02,0x00,0x72,0x00,0x5F,0xE0,0x5F,0x80,0x77,0x80,0x54,0x80,0x57,0x80,0x7F,0xE0,0x57,0xC0,0x5F,0xC0,0x57,0x40,0xB3,0x80,0x00,0x00,}}, +{ 0x8195, {0x00,0x00,0x37,0xE0,0x34,0xE0,0x37,0xE0,0x34,0xE0,0x37,0xE0,0x36,0xE0,0x37,0xE0,0x37,0xE0,0x37,0xE0,0x37,0xE0,0x74,0x20,0x00,0x00,}}, +{ 0x819A, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x6F,0x80,0x7F,0xC0,0x7F,0xC0,0x72,0x40,0x7F,0xC0,0x4F,0x80,0x4F,0x80,0x8F,0x80,0x09,0x80,0x00,0x00,}}, +{ 0x819C, {0x02,0x80,0x72,0x80,0x5F,0xE0,0x57,0xC0,0x74,0x40,0x57,0xC0,0x54,0x40,0x77,0xC0,0x51,0x00,0x5F,0xE0,0x54,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x819D, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x77,0x80,0x59,0x60,0x53,0x00,0x7D,0xC0,0x59,0x60,0x57,0x80,0x5F,0xC0,0x51,0x20,0xB3,0x00,0x00,0x00,}}, +{ 0x81A0, {0x00,0x00,0x7F,0xC0,0x5F,0xC0,0x5F,0xC0,0x7B,0x40,0x51,0x00,0x57,0x80,0x7B,0x60,0x57,0x00,0x56,0x40,0x53,0x80,0xBE,0x00,0x00,0x00,}}, +{ 0x81A3, {0x01,0x00,0x73,0x00,0x5F,0xE0,0x5B,0xA0,0x74,0xE0,0x5F,0xC0,0x52,0x80,0x77,0xC0,0x57,0xC0,0x57,0xC0,0x5F,0xE0,0xB0,0x00,0x00,0x00,}}, +{ 0x81A4, {0x00,0x00,0x7F,0xC0,0x5F,0xE0,0x5F,0xE0,0x7D,0xC0,0x5D,0xC0,0x50,0x00,0x77,0xC0,0x5F,0xE0,0x5F,0xE0,0x57,0xC0,0xB0,0x40,0x00,0x00,}}, +{ 0x81A8, {0x02,0x20,0x77,0x20,0x52,0x40,0x5F,0xC0,0x70,0x20,0x57,0xA0,0x54,0xC0,0x77,0x90,0x55,0x10,0x53,0xA0,0x5E,0x20,0x90,0x40,0x00,0x00,}}, +{ 0x81A9, {0x01,0xC0,0x71,0xA0,0x7F,0xE0,0x67,0x80,0x7F,0x80,0x6F,0x80,0x69,0x80,0x6F,0x80,0x6F,0x60,0x6F,0x60,0x66,0x20,0xE9,0x20,0x00,0x00,}}, +{ 0x81B0, {0x00,0xC0,0x7F,0x40,0x57,0x40,0x5F,0xE0,0x73,0x80,0x55,0x80,0x59,0x60,0x77,0xC0,0x57,0xC0,0x57,0xC0,0x57,0xC0,0xB4,0x40,0x00,0x00,}}, +{ 0x81B3, {0x04,0x40,0x72,0x80,0x5F,0xE0,0x51,0x00,0x77,0xC0,0x5F,0xE0,0x55,0x80,0x7F,0xE0,0x57,0xC0,0x54,0x40,0x57,0xC0,0xB4,0x40,0x00,0x00,}}, +{ 0x81B5, {0x02,0x80,0x72,0xC0,0x5F,0xE0,0x53,0x00,0x7F,0xE0,0x55,0x80,0x55,0x80,0x7B,0x40,0x5F,0xE0,0x5F,0xE0,0x51,0x00,0xB1,0x00,0x00,0x00,}}, +{ 0x81B8, {0x09,0x00,0x77,0xE0,0x55,0xC0,0x5B,0xC0,0x77,0xE0,0x55,0xC0,0x51,0x40,0x7D,0xC0,0x55,0xC0,0x55,0xC0,0x5B,0xC0,0xB1,0xE0,0x00,0x00,}}, +{ 0x81BA, {0x02,0x00,0x7F,0xE0,0x6B,0xE0,0x7F,0xE0,0x7B,0xC0,0x72,0x80,0x73,0xE0,0x6F,0x80,0x6F,0x80,0x4F,0x80,0x48,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x81BD, {0x01,0x00,0x73,0x80,0x5F,0xE0,0x5F,0xE0,0x76,0x60,0x55,0x80,0x57,0xE0,0x75,0x80,0x57,0xC0,0x5F,0xC0,0x5B,0xC0,0xB2,0x40,0x00,0x00,}}, +{ 0x81BE, {0x01,0x00,0x73,0x80,0x5F,0xC0,0x5F,0xE0,0x7F,0xC0,0x5B,0xC0,0x5F,0xC0,0x77,0x80,0x57,0x80,0x57,0x80,0x57,0x80,0xB4,0x80,0x00,0x00,}}, +{ 0x81BF, {0x01,0x40,0x77,0xE0,0x55,0x60,0x57,0xE0,0x75,0x60,0x57,0xF0,0x55,0xE0,0x74,0x00,0x57,0xF0,0x55,0x60,0x59,0xC0,0x96,0x30,0x00,0x00,}}, +{ 0x81C0, {0x00,0x00,0x7D,0x80,0x7E,0xE0,0x7F,0xE0,0x7B,0xC0,0x7D,0x80,0xEB,0x60,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x81C2, {0x01,0x80,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x6B,0xC0,0xF9,0x80,0x7F,0x80,0x60,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x81C6, {0x01,0x00,0x7F,0xE0,0x54,0x80,0x5F,0xE0,0x77,0xC0,0x54,0x40,0x57,0xC0,0x74,0x40,0x57,0xC0,0x57,0xA0,0x5A,0xA0,0xB1,0x80,0x00,0x00,}}, +{ 0x81C8, {0x03,0x80,0x73,0x80,0x5F,0xE0,0x57,0x80,0x77,0x80,0x54,0x80,0x57,0x80,0x73,0xC0,0x5D,0x40,0x57,0xC0,0x57,0xC0,0xB5,0x80,0x00,0x00,}}, +{ 0x81C9, {0x01,0x00,0x73,0x00,0x56,0x80,0x5F,0xC0,0x70,0x20,0x5E,0xC0,0x5B,0xC0,0x7B,0xC0,0x5E,0xC0,0x56,0xC0,0x5B,0xA0,0xB1,0x20,0x00,0x00,}}, +{ 0x81CD, {0x01,0x00,0x73,0x00,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x6F,0xC0,0x71,0x20,0x64,0x80,0x67,0x80,0x67,0x80,0x68,0x80,0xF0,0x80,0x00,0x00,}}, +{ 0x81D1, {0x00,0x00,0x6F,0xC0,0x67,0xE0,0x6F,0xE0,0x7D,0xC0,0x6D,0xC0,0x61,0x00,0x6F,0xC0,0x67,0xC0,0x6F,0xC0,0x6B,0xC0,0xEB,0xC0,0x00,0x00,}}, +{ 0x81D3, {0x02,0x40,0x7F,0xF0,0x52,0x60,0x57,0xF0,0x74,0xC0,0x57,0xE0,0x57,0xE0,0x77,0xE0,0x57,0xC0,0x57,0x70,0x5B,0xF0,0x90,0x90,0x00,0x00,}}, +{ 0x81D8, {0x09,0x40,0x7B,0x40,0x7A,0x40,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xE0,0xFB,0x20,0x00,0x00,}}, +{ 0x81D9, {0x03,0x80,0x7F,0xE0,0x63,0x80,0x67,0x80,0x7F,0xA0,0x67,0xC0,0x67,0x80,0x7F,0xE0,0x76,0x60,0x6A,0x40,0x6B,0xE0,0xF1,0xA0,0x00,0x00,}}, +{ 0x81DA, {0x01,0x00,0x63,0xC0,0x6F,0xE0,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6F,0xC0,0x6F,0xC0,0x75,0xC0,0xEF,0xE0,0x00,0x00,}}, +{ 0x81DF, {0x04,0x80,0x7F,0xE0,0x64,0xE0,0x77,0xE0,0x74,0xC0,0x7F,0xA0,0x67,0xA0,0x7F,0xC0,0x6F,0xE0,0x7F,0xE0,0x7B,0xE0,0xF1,0x20,0x00,0x00,}}, +{ 0x81E0, {0x6E,0x80,0xFF,0xC0,0x6E,0xC0,0xFF,0xE0,0xFB,0xC0,0xFF,0xA0,0x04,0x00,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x71,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x81E3, {0x00,0x00,0x7F,0xE0,0x44,0x00,0x7F,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x7F,0x80,0x44,0x00,0x44,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x81E5, {0x01,0x00,0x7F,0x00,0x51,0x00,0x7D,0x00,0x45,0x00,0x45,0x00,0x45,0x00,0x7D,0x00,0x52,0x80,0x7E,0x80,0x44,0x40,0x08,0x20,0x00,0x00,}}, +{ 0x81E7, {0x01,0x80,0x03,0x40,0x7F,0xE0,0x7F,0x40,0x77,0x40,0x7F,0x40,0x33,0xC0,0xF3,0x80,0x7E,0x80,0xFF,0xA0,0x73,0x60,0x42,0x20,0x00,0x00,}}, +{ 0x81E8, {0x02,0x00,0x7A,0x00,0x63,0xE0,0x77,0xC0,0x5A,0x40,0x52,0x40,0x53,0xC0,0x70,0x00,0x67,0xE0,0x7D,0xA0,0x47,0xE0,0x05,0xA0,0x00,0x00,}}, +{ 0x81EA, {0x02,0x00,0x04,0x00,0x08,0x00,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x00,}}, +{ 0x81ED, {0x04,0x00,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x81F3, {0x00,0x00,0xFF,0xE0,0x08,0x00,0x11,0x80,0x7F,0x40,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x81F4, {0x02,0x00,0xFE,0x00,0x23,0xE0,0x4C,0x80,0xFC,0x80,0x2A,0x80,0x21,0x00,0x79,0x00,0x21,0x00,0x3A,0x80,0xE4,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x81FA, {0x04,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x7F,0x40,0x8B,0x00,0x3F,0x80,0x1F,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x81FB, {0x01,0x00,0xF3,0x00,0x6F,0xE0,0x77,0xC0,0xF3,0x80,0x6F,0xE0,0x65,0x80,0xFB,0x40,0x6F,0xE0,0x77,0x80,0xC9,0x60,0x01,0x00,0x00,0x00,}}, +{ 0x81FC, {0x04,0x00,0x18,0x00,0x63,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x7B,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x81FE, {0x04,0x00,0x14,0x00,0x65,0xC0,0x44,0x40,0x75,0xC0,0x44,0x40,0x44,0x40,0x77,0xC0,0x06,0x40,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x8201, {0x08,0x00,0x73,0x80,0x7B,0x80,0x7B,0x80,0x60,0x80,0x7F,0x80,0x09,0x80,0x0B,0x00,0xFF,0xE0,0x19,0x00,0x31,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x8202, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x69,0x80,0xF3,0xE0,0x3B,0x80,0x3B,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8205, {0x04,0x00,0x39,0xE0,0x3D,0xE0,0x3F,0xE0,0x3F,0xE0,0x32,0x40,0x3F,0xC0,0x32,0x40,0x7F,0xE0,0x7F,0xE0,0x18,0x20,0x70,0xC0,0x00,0x00,}}, +{ 0x8207, {0x28,0x00,0x48,0xC0,0x4E,0x40,0x6E,0xC0,0x42,0x40,0x6A,0xC0,0x4A,0x40,0xCA,0x40,0xFF,0xE0,0x11,0x00,0x30,0xC0,0xC0,0x20,0x00,0x00,}}, +{ 0x8208, {0x20,0x00,0x5F,0xC0,0x5F,0x40,0x71,0xC0,0x5F,0x40,0x7B,0xC0,0x5F,0x40,0x51,0x40,0xFF,0xE0,0x11,0x00,0x20,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x8209, {0x18,0x00,0x6E,0x80,0x6C,0x80,0x6E,0x80,0x6A,0x80,0x6A,0x80,0xFF,0xE0,0x35,0x80,0xDE,0x60,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x820A, {0x11,0x00,0xFF,0xE0,0x3F,0xC0,0xFF,0xC0,0x7F,0x00,0x7F,0x80,0x3F,0xC0,0x08,0x00,0x7B,0x80,0x7B,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x820C, {0x00,0x80,0x03,0x00,0x3C,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x820D, {0x04,0x00,0x0A,0x00,0x31,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x7F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x820E, {0x04,0x00,0x0A,0x00,0x31,0x80,0xC4,0x60,0x1F,0x00,0x04,0x00,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8210, {0x08,0x40,0x10,0x80,0x63,0x80,0x23,0x80,0xFF,0x80,0x23,0xE0,0x23,0x80,0x7A,0x80,0x4A,0x80,0x4A,0xE0,0x7B,0x60,0x4C,0x20,0x00,0x00,}}, +{ 0x8212, {0x20,0x00,0x37,0xC0,0x59,0x80,0x48,0x80,0xFF,0xE0,0x20,0xA0,0xF8,0xC0,0x20,0x80,0x78,0x80,0x48,0x80,0x78,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x8216, {0x21,0x80,0x33,0x40,0x7F,0xE0,0x7F,0xC0,0xB7,0x40,0x25,0x40,0xFF,0xC0,0x35,0x40,0x77,0xC0,0x57,0xC0,0x75,0x40,0x55,0xC0,0x00,0x00,}}, +{ 0x8217, {0x21,0x80,0x31,0x40,0x7F,0xE0,0x61,0x00,0xFF,0xC0,0x25,0x40,0xFF,0xC0,0x05,0x40,0x77,0xC0,0x55,0x40,0x75,0x40,0x55,0xC0,0x00,0x00,}}, +{ 0x8218, {0x21,0x00,0x31,0x00,0x7F,0xE0,0x4C,0x40,0xFB,0x80,0x22,0x80,0xFB,0x80,0x32,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x00,0x00,}}, +{ 0x821B, {0x20,0x80,0x20,0x80,0x38,0x80,0x2B,0xE0,0x4A,0x80,0x4A,0x80,0xAA,0x80,0x17,0xE0,0x10,0x80,0x10,0x80,0x20,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x821C, {0x01,0x80,0x06,0x80,0x78,0x80,0x25,0x00,0x7F,0xE0,0x50,0x40,0xBF,0xC0,0x2A,0x80,0x5A,0x80,0x17,0xE0,0x20,0x80,0xC0,0x80,0x00,0x00,}}, +{ 0x821E, {0x20,0x00,0x20,0x00,0x7F,0xC0,0xAA,0x80,0x7F,0xE0,0x2A,0x80,0x7F,0xC0,0x3F,0xC0,0x6A,0x80,0x9F,0xE0,0x30,0x80,0xC0,0x80,0x00,0x00,}}, +{ 0x821F, {0x04,0x00,0x08,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x20,0x80,0xFF,0xE0,0x24,0x80,0x24,0x80,0x24,0x80,0x44,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x8229, {0x11,0x80,0x30,0x80,0x79,0x80,0x6A,0x40,0x7A,0x40,0x7C,0x20,0x7D,0x80,0xE9,0x80,0x69,0x40,0x6A,0x40,0x4F,0xA0,0x98,0x20,0x00,0x00,}}, +{ 0x822A, {0x11,0x00,0x21,0x00,0x7F,0xE0,0x68,0x00,0x59,0x80,0x59,0x80,0xFD,0x80,0x69,0x80,0x6A,0x80,0x6A,0xA0,0x4C,0xA0,0x98,0x60,0x00,0x00,}}, +{ 0x822B, {0x11,0x80,0x31,0x80,0x7F,0xE0,0x6F,0xE0,0x79,0x00,0x79,0xC0,0x7D,0x40,0xE9,0x40,0x6A,0x40,0x6A,0x40,0x4C,0x40,0x98,0x80,0x00,0x00,}}, +{ 0x822C, {0x10,0x00,0x23,0x80,0x7A,0x80,0x6A,0xA0,0x5A,0xA0,0x5C,0x60,0xFF,0xC0,0x6A,0x40,0x6A,0x80,0x69,0x80,0x49,0x80,0x9E,0x60,0x00,0x00,}}, +{ 0x822E, {0x10,0x00,0x37,0xE0,0x7B,0xC0,0x6B,0xC0,0x7A,0x40,0x7A,0x40,0x7F,0xC0,0xEA,0x40,0x6A,0x00,0x6A,0x00,0x4C,0x00,0x9C,0x00,0x00,0x00,}}, +{ 0x8233, {0x08,0xC0,0x18,0xC0,0x3C,0xC0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x3F,0xE0,0x75,0xE0,0x35,0xE0,0x35,0xE0,0x25,0xE0,0x4D,0x20,0x00,0x00,}}, +{ 0x8235, {0x10,0x80,0x20,0x80,0x7B,0xE0,0x6E,0x00,0x59,0x00,0x59,0x40,0xFD,0x80,0x49,0x00,0x69,0x00,0x69,0x20,0x49,0x20,0x99,0xE0,0x00,0x00,}}, +{ 0x8236, {0x08,0x40,0x10,0x80,0x3D,0xE0,0x35,0x20,0x2D,0x20,0x2D,0x20,0x7F,0xE0,0x35,0x20,0x35,0x20,0x35,0x20,0x25,0xE0,0x4D,0x20,0x00,0x00,}}, +{ 0x8237, {0x10,0x80,0x20,0x80,0x7F,0xE0,0x68,0x80,0x79,0x00,0x5F,0x40,0xFD,0x80,0x68,0x80,0x68,0xC0,0x69,0x40,0x4F,0xE0,0x98,0x20,0x00,0x00,}}, +{ 0x8238, {0x10,0x00,0x37,0xE0,0x78,0x40,0x6B,0x40,0x7B,0xC0,0x7B,0xC0,0x7F,0xC0,0xEB,0xC0,0x6A,0x40,0x68,0x40,0x48,0x40,0x98,0xC0,0x00,0x00,}}, +{ 0x8239, {0x11,0x80,0x20,0x80,0x7A,0x80,0x6A,0x40,0x5A,0x40,0x5C,0x20,0x7B,0xC0,0xCA,0x40,0x6A,0x40,0x6A,0x40,0x4B,0xC0,0x9A,0x40,0x00,0x00,}}, +{ 0x8240, {0x10,0x60,0x37,0xC0,0x7B,0xE0,0x6D,0xA0,0x78,0x80,0x7F,0xC0,0x78,0x80,0xE9,0x80,0x6F,0xE0,0x69,0x80,0x49,0x80,0x99,0x80,0x00,0x00,}}, +{ 0x8247, {0x20,0x00,0x4E,0x60,0x73,0x80,0x54,0x80,0x7E,0x80,0x73,0xE0,0xFA,0x80,0x5A,0x80,0x75,0xE0,0x7C,0x00,0x53,0x00,0xB0,0xE0,0x00,0x00,}}, +{ 0x8258, {0x21,0x00,0x63,0x00,0x75,0x40,0x57,0x40,0x77,0x40,0x77,0xC0,0x7D,0x40,0xD3,0x00,0x7F,0xC0,0x73,0x80,0x57,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x8259, {0x11,0x80,0x31,0x80,0x7B,0xC0,0x6F,0xE0,0x7B,0xC0,0x7B,0xC0,0x7A,0x40,0xEB,0xC0,0x6F,0xC0,0x6F,0xC0,0x4B,0xC0,0x9A,0x40,0x00,0x00,}}, +{ 0x825A, {0x23,0x80,0x6F,0xE0,0x7F,0xC0,0x5F,0xC0,0x7F,0xC0,0x7B,0xC0,0x7F,0xC0,0xD7,0x80,0x77,0x80,0x77,0x80,0x57,0x80,0xB4,0x80,0x00,0x00,}}, +{ 0x825D, {0x20,0x00,0x67,0xC0,0x7F,0xE0,0x5F,0xE0,0x77,0xC0,0x77,0xC0,0x79,0x00,0xD7,0xC0,0x7F,0xE0,0x7F,0xE0,0x57,0xC0,0xB0,0x40,0x00,0x00,}}, +{ 0x825F, {0x11,0x80,0x33,0xC0,0x7F,0xE0,0x6F,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0xEB,0xC0,0x6B,0xC0,0x6B,0xC0,0x4F,0xE0,0x98,0x00,0x00,0x00,}}, +{ 0x8262, {0x21,0x00,0x63,0x00,0x7F,0xE0,0x55,0x80,0x7B,0xC0,0x7F,0xE0,0x70,0x00,0xDF,0xC0,0x7B,0xC0,0x7B,0xC0,0x5F,0xC0,0xB8,0x40,0x00,0x00,}}, +{ 0x8264, {0x24,0x80,0x63,0x80,0x7F,0xC0,0x57,0x80,0x73,0x00,0x7F,0xE0,0x71,0xC0,0xD7,0xA0,0x7F,0xE0,0x7F,0xE0,0x53,0xE0,0xB6,0x20,0x00,0x00,}}, +{ 0x8266, {0x20,0x80,0x67,0x80,0x77,0xE0,0x57,0x80,0x77,0x00,0x75,0xE0,0xFF,0x00,0x50,0x00,0x77,0xC0,0x75,0xC0,0x55,0xC0,0xBF,0xE0,0x00,0x00,}}, +{ 0x8268, {0x22,0x80,0x6F,0xE0,0x7F,0xE0,0x5F,0xE0,0x70,0x00,0x7F,0xE0,0x71,0x40,0xDF,0xC0,0x7F,0x80,0x7F,0xC0,0x5D,0xA0,0xB3,0x00,0x00,0x00,}}, +{ 0x826A, {0x21,0x00,0x63,0x80,0x7F,0xC0,0x57,0xC0,0x77,0xC0,0x77,0xC0,0x77,0xC0,0xDB,0xE0,0x77,0xC0,0x77,0xC0,0x57,0xC0,0xB4,0x40,0x00,0x00,}}, +{ 0x826B, {0x21,0x00,0x63,0xC0,0x77,0xE0,0x57,0xC0,0x77,0xC0,0x77,0xC0,0x77,0xC0,0xD7,0xC0,0x77,0xC0,0x7F,0xC0,0x5B,0xC0,0xB7,0xE0,0x00,0x00,}}, +{ 0x826E, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x20,0x80,0x3F,0xC0,0x24,0x40,0x22,0x80,0x2B,0x00,0x31,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x826F, {0x04,0x00,0x04,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x28,0x80,0x25,0x00,0x22,0x00,0x39,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x8271, {0x70,0x00,0xFF,0xC0,0x72,0x40,0x7B,0xC0,0x7A,0x40,0x7B,0xC0,0x23,0xA0,0x7B,0xA0,0xFA,0xC0,0xFA,0x80,0x4B,0xC0,0x86,0x20,0x00,0x00,}}, +{ 0x8272, {0x10,0x00,0x1F,0x00,0x22,0x00,0xFF,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x00,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x8276, {0x51,0x00,0xF9,0xC0,0xDA,0x40,0xF8,0x80,0xFF,0xC0,0x02,0xC0,0xFE,0xC0,0x4B,0xC0,0x7A,0x40,0x52,0x20,0x7A,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x8277, {0xED,0x00,0xFF,0xC0,0xFE,0x80,0xFF,0xC0,0xFF,0xC0,0xFF,0xC0,0x03,0xC0,0xFF,0xC0,0x7A,0x40,0x7A,0x20,0x7A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x8278, {0x21,0x80,0x21,0x80,0x21,0x80,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x2B,0xC0,0x21,0x80,0x21,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x827E, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x01,0x00,0x21,0x80,0x21,0x80,0x11,0x00,0x13,0x00,0x0E,0x00,0x0E,0x00,0x31,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x828B, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x828D, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x20,0x00,0x3F,0xC0,0x40,0x40,0xC8,0x40,0x84,0x40,0x00,0x40,0x00,0xC0,0x01,0x80,0x00,0x00,}}, +{ 0x8292, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0xFF,0xE0,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x8299, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x829D, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0x7F,0xC0,0x00,0x80,0x01,0x00,0x06,0x00,0x78,0x00,0x50,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x829F, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x1F,0x00,0x13,0x40,0x11,0x40,0x21,0xC0,0x7F,0x00,0x1A,0x00,0x0E,0x00,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x82A5, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x0A,0x00,0x11,0x00,0x31,0x80,0xD1,0x60,0x11,0x00,0x21,0x00,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x82A6, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x40,0x00,0x80,0x00,0x00,0x00,}}, +{ 0x82AB, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x82AC, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x1F,0x00,0x13,0x00,0x21,0x00,0x60,0x80,0xFF,0xE0,0x09,0x80,0x19,0x80,0x31,0x80,0x63,0x00,0x00,0x00,}}, +{ 0x82AD, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x00,0x20,0x20,0x20,0x20,0x3F,0xE0,0x00,0x00,}}, +{ 0x82AF, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x00,0x00,0x04,0x00,0x12,0x80,0x51,0x40,0x50,0x20,0x90,0x00,0x10,0x80,0x0F,0x80,0x00,0x00,}}, +{ 0x82B1, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x12,0x00,0x22,0x40,0x22,0x80,0x63,0x00,0xA2,0x00,0x22,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x82B3, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x07,0x80,0x08,0x80,0x08,0x80,0x30,0x80,0xC1,0x80,0x00,0x00,}}, +{ 0x82B8, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x09,0x00,0x13,0x80,0x7C,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x82B9, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x80,0x3F,0x00,0x20,0x00,0x3F,0xE0,0x21,0x00,0x21,0x00,0x41,0x00,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x82BB, {0x10,0x00,0x1F,0xE0,0x74,0xA0,0x7F,0xA0,0x35,0xA0,0x18,0xC0,0x30,0x00,0x1F,0xE0,0x74,0xA0,0x7F,0xA0,0x09,0xA0,0x30,0xC0,0x00,0x00,}}, +{ 0x82BD, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x21,0x00,0xFF,0xE0,0x03,0x00,0x0D,0x00,0x39,0x00,0xC1,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x82C5, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x08,0x40,0x49,0x40,0x29,0x40,0x31,0x40,0x11,0x40,0x29,0x40,0x48,0x40,0x80,0xC0,0x00,0x00,}}, +{ 0x82D1, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x23,0xC0,0x3A,0x40,0x4A,0x40,0x4A,0x40,0xB2,0x80,0x12,0x20,0x22,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x82D2, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0xFF,0xE0,0xFF,0xE0,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x82D3, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x0E,0x00,0x11,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x80,0x04,0x80,0x05,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x82D4, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x04,0x00,0x09,0x00,0x11,0x80,0xFE,0x40,0x00,0x20,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x82D7, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x82D9, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0x7F,0xC0,0x01,0x80,0x31,0x00,0x11,0x00,0x12,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x82DB, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x00,0x80,0x3C,0x80,0x24,0x80,0x3C,0x80,0x24,0x80,0x00,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x82DC, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x3F,0x80,0x60,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x82DE, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x3F,0xC0,0x20,0x40,0x7E,0x40,0xB2,0x40,0x3E,0xC0,0x20,0xA0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x82DF, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x3F,0xC0,0x20,0x40,0x7E,0x40,0xA2,0x40,0x3E,0x40,0x3E,0x40,0x00,0x40,0x00,0x80,0x00,0x00,}}, +{ 0x82E1, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x00,0x80,0x68,0x80,0x64,0x80,0x64,0x80,0x60,0x80,0x79,0xC0,0x73,0x20,0xCC,0x20,0x00,0x00,}}, +{ 0x82E3, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x3F,0xC0,0x60,0x00,0x7F,0x80,0x60,0x80,0x60,0x80,0x7F,0x80,0x60,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x82E5, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x1F,0x80,0x70,0x80,0x90,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x82E6, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x82E7, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xE0,0x40,0x40,0x80,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x82EB, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0x07,0xC0,0x04,0x00,0x04,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x82F1, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0xFF,0xE0,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x82F3, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0F,0x00,0x33,0x00,0x6A,0x00,0x0E,0x00,0x39,0x80,0xC4,0x60,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x00,}}, +{ 0x82F4, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x1F,0x00,0x31,0x80,0x21,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x21,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x82F9, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7F,0xC0,0x35,0x80,0x24,0x80,0x44,0x40,0xC4,0x40,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x82FA, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x1F,0x00,0x39,0x80,0x25,0x80,0xFF,0xE0,0x69,0x80,0x65,0x80,0x7F,0xC0,0x43,0x00,0x06,0x00,0x00,0x00,}}, +{ 0x82FB, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x20,0x80,0x3F,0xE0,0x60,0x80,0xE4,0x80,0xE2,0x80,0x60,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8302, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x04,0x40,0x3F,0xE0,0x24,0x00,0x22,0x80,0x22,0x80,0x41,0x00,0x46,0xA0,0x98,0x60,0x00,0x00,}}, +{ 0x8303, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x00,0x00,0x27,0xC0,0xA4,0x40,0x44,0x40,0x44,0x40,0x24,0x80,0x64,0x20,0x44,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x8304, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x20,0x00,0xFB,0xC0,0x2A,0x40,0x2A,0x40,0x2A,0x40,0x4A,0x40,0x4B,0xC0,0xB2,0x40,0x00,0x00,}}, +{ 0x8305, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x13,0x00,0x0C,0x00,0xFF,0xE0,0x04,0xC0,0x0D,0x00,0x34,0x00,0xC4,0x00,0x0C,0x00,0x00,0x00,}}, +{ 0x8306, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x18,0x00,0x73,0xC0,0x52,0x40,0x52,0x40,0x52,0x40,0x72,0x40,0xF3,0xC0,0x32,0x00,0x22,0x00,0x00,0x00,}}, +{ 0x8309, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x15,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x830E, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x13,0x00,0x0E,0x00,0x35,0x80,0xE4,0xE0,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8316, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x0F,0x00,0x71,0x00,0x0E,0x00,0x1B,0x80,0xFF,0xE0,0x21,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8317, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x0F,0x80,0x39,0x80,0x45,0x00,0x06,0x00,0xFF,0xC0,0xD0,0x40,0x1F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x8318, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x3F,0x80,0x04,0x80,0x18,0x80,0x21,0x00,0x00,0x00,0xFF,0xC0,0x69,0x40,0x4A,0x40,0xB4,0x80,0x00,0x00,}}, +{ 0x831C, {0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x12,0x00,0x7F,0xC0,0x52,0x40,0x52,0xC0,0x61,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x8323, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0F,0x80,0x68,0x80,0x6F,0x80,0x60,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x8328, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0x44,0x00,0x27,0xE0,0x25,0x40,0x09,0x80,0x23,0x00,0xC4,0x80,0x18,0x40,0x20,0x20,0x00,0x00,}}, +{ 0x832B, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x01,0x00,0x21,0x00,0xAF,0xE0,0x48,0x00,0x48,0x00,0x28,0x00,0x68,0x00,0x47,0xC0,0x40,0x00,0x00,0x00,}}, +{ 0x832F, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x21,0x40,0x21,0x00,0x7F,0xE0,0xE1,0x00,0xE3,0x80,0x62,0x80,0x6C,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x8331, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x14,0x00,0x24,0x00,0x3F,0x80,0x44,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x8332, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x21,0x80,0x6B,0x40,0x29,0x40,0x30,0x80,0x10,0x80,0x39,0xC0,0xFF,0xE0,0x04,0x20,0x00,0x00,}}, +{ 0x8334, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x4E,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x8335, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x44,0x40,0x7F,0x40,0x44,0x40,0x4A,0x40,0x51,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x8336, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x11,0x00,0x24,0x80,0xC4,0x60,0x3F,0x80,0x04,0x00,0x35,0x80,0xC4,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x8338, {0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0xC0,0xFF,0x80,0x00,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x8339, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x23,0xC0,0xFA,0x40,0x6A,0x40,0x6A,0x40,0x7A,0x40,0x1B,0xC0,0x3A,0x40,0xC0,0x00,0x00,0x00,}}, +{ 0x8340, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x3F,0xC0,0x20,0x40,0x7E,0x40,0xB2,0x40,0x3E,0x40,0x3E,0x40,0x32,0x40,0x00,0x80,0x00,0x00,}}, +{ 0x8345, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0E,0x00,0x13,0x00,0x21,0x80,0xFF,0x60,0x00,0x00,0x7F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8349, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x834A, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x7D,0x40,0x29,0x40,0x29,0x40,0xFF,0x40,0x29,0x40,0x29,0x40,0x48,0x40,0x88,0xC0,0x00,0x00,}}, +{ 0x834F, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x40,0x2F,0x80,0x21,0x00,0x61,0x00,0xBF,0xE0,0x21,0x00,0x21,0x00,0x2F,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x8350, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x3F,0x80,0x21,0x00,0xFF,0xE0,0xBF,0xE0,0x21,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x8352, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x15,0x00,0xFF,0xE0,0x20,0x00,0x1F,0x80,0x00,0x00,0x25,0x00,0x25,0x20,0x25,0x20,0xC0,0xE0,0x00,0x00,}}, +{ 0x8358, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0xA1,0x00,0x61,0x00,0x7F,0xE0,0x21,0x00,0x61,0x00,0xA1,0x00,0x2F,0xC0,0x20,0x00,0x00,0x00,}}, +{ 0x8373, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7F,0xC0,0x00,0x00,0x3F,0x00,0x21,0x80,0x31,0x80,0x1F,0x00,0x0A,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8375, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7F,0x80,0x08,0x80,0x38,0x80,0x16,0x80,0x61,0x00,0xC4,0x00,0x52,0x20,0x90,0x20,0x0F,0x80,0x00,0x00,}}, +{ 0x8377, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x2F,0xE0,0x20,0x80,0x6F,0x80,0xA9,0x80,0x2F,0x80,0x28,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x837B, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x51,0x40,0x23,0x40,0x65,0x80,0xD5,0x00,0x35,0x00,0xD2,0x80,0x14,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x837C, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0E,0x00,0x13,0x00,0x3F,0x80,0xC4,0x60,0x3F,0x80,0x04,0x00,0x35,0x80,0xC4,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x8385, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x12,0x00,0x22,0x00,0x3F,0xC0,0x60,0x80,0xE8,0x80,0xE5,0x80,0x65,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8387, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x71,0x00,0x51,0x00,0x57,0xC0,0x71,0x40,0x51,0x40,0x72,0x40,0x5A,0x40,0x74,0x40,0xC8,0x80,0x00,0x00,}}, +{ 0x8389, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x18,0x40,0x71,0x40,0x21,0x40,0xFD,0x40,0x71,0x40,0x69,0x40,0xA1,0x40,0x20,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x838A, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x71,0x00,0x5F,0xE0,0x11,0x00,0xF1,0x00,0x71,0x00,0x5F,0xC0,0x90,0x00,0x00,0x00,}}, +{ 0x838E, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x01,0x00,0x25,0x80,0xA5,0x40,0x49,0x20,0x4B,0x60,0x33,0x80,0x61,0x00,0x46,0x00,0x58,0x00,0x00,0x00,}}, +{ 0x8393, {0x11,0x00,0xFF,0xE0,0x10,0x00,0x7F,0xE0,0x40,0x00,0xBF,0x00,0x25,0x80,0x33,0x80,0xFF,0xE0,0x65,0x80,0x7F,0xC0,0x03,0x00,0x00,0x00,}}, +{ 0x8396, {0x11,0x00,0x13,0x00,0xFF,0xE0,0xFF,0xE0,0x32,0x40,0x24,0x80,0x6C,0x80,0x32,0x40,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x839A, {0x11,0x00,0x13,0x00,0xFF,0xE0,0xF0,0x40,0x2F,0x80,0x21,0x00,0x69,0x00,0x29,0xC0,0xE9,0x00,0x67,0xC0,0x70,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x839E, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xE0,0x40,0x40,0xBF,0x00,0x00,0x00,0x7F,0xE0,0x1A,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x839F, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0E,0x00,0x13,0x00,0x3F,0x80,0xC0,0x60,0x3F,0x00,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x83A0, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x15,0x00,0x75,0xC0,0x9F,0x60,0x09,0x80,0x30,0x80,0x63,0x80,0x00,0x00,}}, +{ 0x83A2, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x25,0x80,0x25,0x80,0x57,0x40,0x0E,0x40,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x83A8, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x60,0x80,0x7F,0x80,0x60,0xC0,0x7F,0xC0,0x66,0x80,0x7B,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x83AA, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x19,0x00,0x71,0x40,0x21,0x00,0xFF,0xE0,0x31,0x40,0xF9,0x80,0xE3,0xA0,0x2C,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x83AB, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x33,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x83B1, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x7F,0xC0,0x24,0x80,0x15,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x83B5, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x08,0x00,0x3F,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x04,0x00,0x1D,0x20,0x35,0xA0,0xC3,0xE0,0x00,0x00,}}, +{ 0x83BD, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x11,0x00,0x71,0xC0,0xFF,0xE0,0x7F,0xC0,0x31,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x83C1, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x83C5, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x7F,0xE0,0x40,0x40,0xBF,0x00,0x21,0x00,0x3F,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x83CA, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x31,0x00,0x3F,0xC0,0x49,0x40,0x6A,0x40,0x9C,0x40,0x7F,0x40,0x1E,0x40,0x69,0x40,0x09,0x80,0x00,0x00,}}, +{ 0x83CC, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x5E,0x40,0x44,0x40,0x7F,0xC0,0x4E,0x40,0x55,0x40,0x44,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x83CE, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x3F,0x80,0x60,0x80,0x7F,0x80,0x60,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0x20,0x7A,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x83D3, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x83D6, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x83D8, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x80,0x20,0x80,0xFA,0x80,0x22,0x40,0x75,0x20,0x69,0x00,0xA2,0x40,0x2F,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x83DC, {0x11,0x00,0xFF,0xE0,0x07,0x80,0x7C,0x80,0x24,0x80,0x21,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x83DF, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x1F,0x00,0x32,0x00,0xFF,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x0C,0x20,0x35,0x20,0xC3,0xE0,0x00,0x00,}}, +{ 0x83E0, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x01,0x00,0x2F,0xE0,0xA9,0x40,0x49,0x80,0x4F,0xC0,0x2A,0x40,0x69,0x80,0x53,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x83E9, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x7F,0xC0,0x20,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x83EB, {0x11,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x64,0x80,0x7F,0x80,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x83EF, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x15,0x00,0xFF,0xE0,0x15,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x83F0, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x15,0x80,0x25,0x80,0x35,0x80,0x65,0x40,0xA9,0xC0,0x2F,0xE0,0x30,0xA0,0x00,0x00,}}, +{ 0x83F1, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x7F,0x80,0xFF,0xE0,0x12,0x40,0x29,0xC0,0xCF,0x00,0x1A,0x00,0x24,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x83F2, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0A,0x00,0x0A,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0xC0,0xFF,0xE0,0xFB,0xE0,0x32,0x00,0xC2,0x00,0x00,0x00,}}, +{ 0x83F4, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x15,0x00,0x7F,0x80,0xF5,0xE0,0x3F,0x80,0x3F,0xC0,0x34,0x40,0x03,0xC0,0x00,0x00,}}, +{ 0x83F7, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0x1F,0x80,0xFF,0xE0,0x01,0x80,0x3F,0x80,0x7F,0xE0,0xFF,0xC0,0x7F,0x80,0x64,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x83FB, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x11,0x00,0x21,0x80,0xFF,0xE0,0x21,0x80,0x71,0x80,0x6B,0xC0,0xA5,0xA0,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x83FD, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x3B,0xC0,0x21,0x40,0xFD,0x40,0x31,0x80,0x79,0x80,0x69,0x80,0xA2,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x8403, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x80,0x29,0x80,0x46,0x40,0xFF,0xE0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8404, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x31,0x00,0x3F,0xC0,0x50,0x40,0xBF,0x40,0x48,0x40,0x3F,0x40,0x29,0x40,0x3F,0x40,0x21,0x80,0x00,0x00,}}, +{ 0x8407, {0x11,0x00,0xFF,0xE0,0x1F,0x80,0x3F,0x80,0x3F,0x00,0x20,0x00,0x3F,0x00,0x30,0x00,0xFF,0xE0,0x26,0x80,0x3B,0x80,0x60,0xE0,0x00,0x00,}}, +{ 0x840B, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x05,0x80,0xFF,0xE0,0x05,0x80,0x7F,0x80,0xFF,0xE0,0x1F,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x840C, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x44,0x40,0x08,0xC0,0x00,0x00,}}, +{ 0x840D, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x0F,0xC0,0x27,0xC0,0xA5,0x40,0x49,0x40,0x43,0x00,0x3F,0xE0,0x61,0x00,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x840E, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0x3E,0x00,0xFF,0xE0,0x15,0x00,0x24,0x80,0xC8,0x60,0x7F,0xC0,0x1A,0x00,0x0F,0x00,0x70,0x80,0x00,0x00,}}, +{ 0x8413, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7F,0xE0,0x40,0x40,0xBF,0x00,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8420, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x39,0xC0,0x69,0x40,0x69,0x40,0x79,0xC0,0x69,0x40,0x79,0xC0,0x69,0x40,0x4A,0x40,0x9C,0xC0,0x00,0x00,}}, +{ 0x8422, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x27,0xC0,0xA8,0x40,0x5F,0x40,0x43,0x40,0x2F,0xC0,0x69,0xA0,0x48,0x20,0x47,0xE0,0x00,0x00,}}, +{ 0x8429, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x70,0xA0,0x22,0xA0,0xFA,0xC0,0x32,0x80,0x6C,0x80,0xA1,0x80,0x22,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x842A, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x19,0x40,0x71,0x40,0x21,0xC0,0xFA,0x40,0x71,0x40,0x69,0xE0,0xA3,0xC0,0x20,0x40,0x20,0x40,0x00,0x00,}}, +{ 0x842C, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x25,0x80,0x3F,0x00,0x04,0x00,0x7F,0xC0,0x47,0x40,0x79,0xC0,0x40,0xC0,0x00,0x00,}}, +{ 0x8431, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x7F,0xE0,0xBF,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8435, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x27,0x80,0x25,0x80,0x7F,0xC0,0x40,0x40,0x5F,0x40,0x5F,0x40,0x53,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x8438, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x14,0x00,0x35,0x80,0x64,0x80,0x75,0x80,0x64,0x80,0x7F,0x80,0x1A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x843C, {0x11,0x00,0xFF,0xE0,0x3B,0x80,0x7B,0x80,0x7B,0x80,0x00,0x00,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x1F,0x80,0x30,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x843D, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x53,0x80,0x26,0x80,0x89,0x00,0x43,0x00,0x54,0x80,0x3F,0xE0,0x24,0x80,0x47,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x8446, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x17,0x80,0x24,0x80,0x27,0x80,0x61,0x00,0xFF,0xE0,0xE7,0x80,0x79,0x60,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x8449, {0x11,0x00,0xFF,0xE0,0x15,0x00,0xFF,0xE0,0x25,0x00,0x27,0x00,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x844E, {0x11,0x00,0xFF,0xE0,0x13,0x00,0x4F,0x80,0x7F,0xE0,0xA2,0x80,0x4F,0x80,0x42,0x00,0xDF,0xC0,0x7F,0xE0,0x42,0x00,0x42,0x00,0x00,0x00,}}, +{ 0x8457, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x3F,0xC0,0x06,0x00,0xFF,0xE0,0x08,0x00,0x1F,0x80,0x70,0x80,0x9F,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x845B, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x1F,0xC0,0x7E,0x40,0xB8,0x40,0x1F,0x40,0x01,0x80,0x00,0x00,}}, +{ 0x8461, {0x11,0x00,0xFF,0xE0,0x51,0x00,0x7F,0xC0,0x7F,0x40,0x49,0xC0,0xBF,0x40,0x29,0x40,0x3F,0x40,0x29,0x40,0x3F,0x40,0x29,0x80,0x00,0x00,}}, +{ 0x8462, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x64,0x80,0xC2,0x60,0x7F,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8463, {0x11,0x00,0xFF,0xE0,0x1E,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x7F,0xC0,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8466, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0xC0,0x21,0x00,0xFF,0xE0,0x01,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x8469, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x27,0xC0,0x75,0x40,0x55,0x40,0x57,0xC0,0x74,0x40,0x54,0x20,0x74,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x846B, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x10,0x00,0x21,0xC0,0xFD,0x40,0x21,0x40,0x31,0xC0,0x79,0xC0,0x4B,0xC0,0x7A,0x40,0x4C,0xC0,0x00,0x00,}}, +{ 0x846C, {0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x3E,0xC0,0xEB,0x80,0x32,0x20,0xD1,0xE0,0x11,0x00,0xFF,0xE0,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x846D, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7B,0xC0,0x48,0x40,0x7B,0xC0,0x40,0x00,0x7B,0xC0,0x7A,0x40,0x79,0x80,0x43,0x80,0x4C,0x60,0x00,0x00,}}, +{ 0x846E, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x3B,0x80,0x62,0xA0,0x7A,0xA0,0x64,0x60,0x7F,0xC0,0x7A,0x40,0xF9,0x80,0x63,0x80,0x6C,0x60,0x00,0x00,}}, +{ 0x846F, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x02,0x00,0x72,0x00,0xD3,0xC0,0x64,0x40,0x7A,0x40,0xF9,0x40,0x78,0x40,0xA0,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x8471, {0x11,0x00,0xFF,0xE0,0x31,0x00,0x3F,0xC0,0x7A,0x40,0x97,0x40,0x24,0x40,0x0C,0x80,0x02,0x00,0x50,0x20,0x90,0xA0,0x0F,0x80,0x00,0x00,}}, +{ 0x8475, {0x11,0x00,0xFF,0xE0,0x19,0x00,0x0D,0x80,0x2B,0x40,0x11,0x80,0x7F,0x80,0xC4,0x60,0x3F,0x80,0x0C,0x00,0x13,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8477, {0x11,0x00,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0xFF,0xC0,0x3F,0x80,0x25,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8479, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x12,0x00,0x23,0xE0,0xFD,0x80,0x23,0xC0,0x3B,0xC0,0x6F,0xC0,0x4B,0xE0,0x8A,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x847A, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0xE0,0xFF,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x8482, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xE0,0xC4,0x40,0xBF,0x80,0x25,0x80,0x27,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8484, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7F,0xE0,0x40,0xC0,0xF8,0x80,0x07,0xE0,0xFA,0x80,0x71,0x80,0x70,0xA0,0x50,0xA0,0x8F,0xE0,0x00,0x00,}}, +{ 0x848B, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x31,0xE0,0xBF,0x40,0x65,0x80,0x62,0x80,0x2F,0xE0,0x64,0x80,0xA2,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8490, {0x11,0x00,0xFF,0xE0,0x18,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x15,0x80,0x17,0xE0,0x24,0x20,0xC3,0xE0,0x00,0x00,}}, +{ 0x8494, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x51,0x00,0x5F,0xE0,0x70,0x80,0x5F,0xE0,0x74,0x80,0x42,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x8499, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xE0,0x9F,0x80,0xFF,0xE0,0x0D,0x40,0x77,0x80,0x1E,0x80,0x6E,0x40,0xF2,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x849C, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x00,0x00,0xFF,0xE0,0x20,0x80,0x72,0xC0,0x6A,0xE0,0xA4,0xA0,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x849F, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x12,0x00,0x23,0xC0,0xFC,0x40,0x1B,0xC0,0x53,0xC0,0x73,0xC0,0x7B,0x40,0xE0,0x40,0x00,0x80,0x00,0x00,}}, +{ 0x84A1, {0x11,0x00,0xFF,0xE0,0x14,0x00,0x7F,0xC0,0x13,0x00,0x7F,0xE0,0x44,0x40,0xFF,0xC0,0x07,0x80,0x0F,0x80,0x30,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x84AD, {0x11,0x00,0xFF,0xE0,0x3F,0xC0,0xFF,0xC0,0x7F,0x40,0x31,0x40,0x71,0x80,0x3F,0xC0,0xE9,0x40,0xFF,0x40,0x33,0x40,0xE1,0xC0,0x00,0x00,}}, +{ 0x84B2, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x51,0x40,0x2F,0xE0,0xA1,0x00,0x4F,0xC0,0x29,0x40,0x0F,0xC0,0x2F,0xC0,0x49,0x40,0x89,0xC0,0x00,0x00,}}, +{ 0x84B8, {0x11,0x00,0xFF,0xE0,0x3F,0x00,0x03,0x40,0x76,0x40,0x15,0x80,0x24,0x80,0xCC,0x60,0x1F,0x00,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x84B9, {0x11,0x00,0xFF,0xE0,0x1B,0x00,0xFF,0xE0,0x7F,0xC0,0x0A,0x80,0xFF,0xE0,0x0A,0x80,0x3F,0x80,0x3B,0x80,0xCA,0x60,0x0A,0x00,0x00,0x00,}}, +{ 0x84BB, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x7B,0xC0,0x08,0x40,0x7B,0xC0,0x42,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x84BC, {0x20,0x80,0xFF,0xE0,0x24,0x80,0x1F,0x00,0xFF,0xE0,0x21,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x7F,0x80,0x5F,0x80,0x90,0x80,0x00,0x00,}}, +{ 0x84BF, {0x11,0x00,0xFF,0xE0,0x10,0x00,0xFF,0xE0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x7F,0xC0,0x4E,0x40,0x5F,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x84C1, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0xFF,0xE0,0x13,0x00,0x7D,0xC0,0x9F,0x60,0x1F,0x80,0x64,0x40,0x04,0x00,0x00,0x00,}}, +{ 0x84C4, {0x11,0x00,0xFF,0xE0,0x15,0x00,0xFF,0xC0,0x33,0x00,0x0D,0x80,0xFF,0x40,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x84C6, {0x11,0x00,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x49,0x80,0x4F,0x00,0x42,0x00,0x7F,0xC0,0x62,0x40,0xA2,0xC0,0x02,0x00,0x00,0x00,}}, +{ 0x84C9, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xE0,0x51,0x40,0xA4,0x80,0x0A,0x00,0x11,0x00,0x3F,0x80,0xE0,0xE0,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x84CA, {0x11,0x00,0xFF,0xE0,0x17,0x00,0x37,0x80,0xC9,0x60,0x7F,0x00,0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0x40,0x18,0xC0,0x00,0x00,}}, +{ 0x84CB, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7F,0x80,0x00,0x40,0x3F,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x84CD, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x00,0xFF,0xE0,0x1F,0x80,0x78,0x40,0xCF,0xC0,0x3F,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x84D0, {0x11,0x00,0xFF,0xE0,0x3F,0xE0,0x7F,0xE0,0x60,0x00,0x7F,0xE0,0x69,0x40,0x6F,0xC0,0x7F,0xE0,0x7F,0xE0,0x85,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x84D1, {0x11,0x00,0xFF,0xE0,0x15,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0xF2,0x40,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x84D6, {0x11,0x00,0xFF,0xE0,0x14,0x00,0x3F,0x80,0x6B,0x80,0x66,0x80,0x79,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0x00,0x7A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x84D9, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x55,0x80,0x55,0x80,0x6F,0xC0,0x7F,0xC0,0x5F,0x80,0xFF,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x84DA, {0x11,0x00,0xFF,0xE0,0x13,0x00,0x33,0xE0,0x36,0xC0,0x79,0x80,0x73,0x80,0xFD,0x60,0x73,0x80,0x73,0xC0,0x71,0xC0,0x67,0x00,0x00,0x00,}}, +{ 0x84EC, {0x11,0x00,0xFF,0xE0,0x13,0x80,0x5E,0x80,0x23,0x80,0x0D,0xE0,0xFF,0xC0,0x21,0x00,0x2F,0xC0,0x3F,0xE0,0x71,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x84EE, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x5F,0xE0,0x2F,0xC0,0x09,0x40,0xEF,0xC0,0x29,0x40,0x2F,0xC0,0x3F,0xE0,0x51,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x84F4, {0x11,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x64,0x80,0x7F,0x80,0x3F,0x80,0x04,0xC0,0x7F,0xC0,0xFF,0xE0,0x11,0x80,0x09,0x80,0x00,0x00,}}, +{ 0x84FC, {0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x2D,0xC0,0x6B,0x40,0x35,0x80,0xDF,0xE0,0x1F,0x00,0x06,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x84FF, {0x11,0x00,0xFF,0xE0,0x14,0x00,0x7F,0xE0,0x70,0x40,0xBF,0xC0,0x62,0x00,0x6F,0x80,0xEF,0x80,0x6F,0x80,0x6F,0x80,0x68,0x80,0x00,0x00,}}, +{ 0x8500, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x21,0xC0,0xFD,0x40,0x49,0x80,0x51,0x80,0xFD,0x40,0x79,0x20,0x49,0x20,0x79,0xC0,0x49,0x00,0x00,0x00,}}, +{ 0x8506, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x2F,0xC0,0xA3,0x00,0x5F,0xE0,0x44,0xA0,0x7A,0xE0,0x47,0x80,0x5F,0x00,0x87,0x80,0xB8,0x60,0x00,0x00,}}, +{ 0x8511, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x7F,0xC0,0x02,0x80,0x7F,0xE0,0x61,0x40,0x58,0xC0,0x48,0xA0,0x43,0x60,0x8C,0x20,0x00,0x00,}}, +{ 0x8513, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x2A,0x80,0x3F,0x80,0x7F,0x00,0x0A,0x00,0x1E,0x00,0xE1,0xC0,0x00,0x00,}}, +{ 0x8514, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0x40,0xBE,0x40,0x22,0x40,0x3E,0x40,0x7F,0x40,0x7F,0x40,0x7F,0x40,0x61,0x80,0x00,0x00,}}, +{ 0x8515, {0x11,0x00,0xFF,0xE0,0x1B,0x00,0xFF,0xE0,0x3B,0xA0,0x6E,0xE0,0x7F,0xE0,0xC4,0x40,0xFF,0x80,0x64,0x80,0x65,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x8517, {0x11,0x00,0xFF,0xE0,0x10,0x00,0x3F,0xC0,0x6B,0x00,0x69,0x00,0x7F,0x80,0x69,0x00,0x7F,0xC0,0x7F,0xC0,0x69,0x40,0xE5,0x20,0x00,0x00,}}, +{ 0x8518, {0x11,0x00,0xFF,0xE0,0x1E,0x00,0x1E,0x00,0x75,0xC0,0xFB,0xE0,0x11,0x00,0x77,0xC0,0x9E,0x60,0x1F,0x80,0x06,0x00,0x38,0x00,0x00,0x00,}}, +{ 0x851A, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x78,0x40,0x7F,0xE0,0x40,0x40,0x79,0x40,0x40,0xC0,0x7C,0x40,0xB8,0x40,0xD4,0x40,0x10,0xC0,0x00,0x00,}}, +{ 0x851F, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x12,0x00,0x27,0xE0,0xFA,0x00,0x23,0xC0,0x3D,0x80,0x6F,0xE0,0x49,0x80,0x8A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x8521, {0x11,0x00,0xFF,0xE0,0x19,0xC0,0x3F,0xC0,0xDB,0x80,0x51,0x80,0x7F,0x60,0xC0,0x00,0x3F,0x80,0x04,0x80,0x64,0x40,0x0C,0x00,0x00,0x00,}}, +{ 0x8526, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x52,0xA0,0x80,0xC0,0x00,0x00,}}, +{ 0x852C, {0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x39,0x80,0x31,0x40,0x67,0xE0,0x78,0x00,0x65,0x80,0x75,0xA0,0x79,0xA0,0xD0,0x60,0x00,0x00,}}, +{ 0x852D, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x76,0x80,0x5B,0x60,0x67,0x80,0x61,0x00,0x57,0xC0,0x50,0x00,0x7F,0xE0,0x45,0x80,0x4E,0x40,0x00,0x00,}}, +{ 0x8535, {0x11,0x00,0xFF,0xE0,0x11,0x40,0x7F,0xE0,0x63,0x00,0x7F,0x40,0x65,0xC0,0x7F,0xC0,0x7E,0x80,0x7C,0xA0,0x7F,0x60,0xA2,0x20,0x00,0x00,}}, +{ 0x853D, {0x11,0x00,0x11,0x00,0xFF,0xE0,0xB5,0x00,0xF5,0xE0,0x6B,0x40,0xFD,0x40,0xB5,0x40,0xFC,0x80,0xEC,0x80,0xA5,0x40,0xAE,0x20,0x00,0x00,}}, +{ 0x8540, {0x11,0x00,0xFF,0xE0,0x11,0x00,0xFF,0xE0,0x31,0x80,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x8541, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x7F,0x80,0x7B,0xC0,0x32,0x40,0xFF,0xE0,0xFF,0xE0,0x11,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x8543, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x1F,0x00,0xFF,0xE0,0x15,0x00,0x64,0x80,0xBF,0xE0,0x24,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8548, {0x11,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x6A,0x80,0x7F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8549, {0x11,0x00,0xFF,0xE0,0x12,0x00,0x3F,0xC0,0x24,0x00,0x7F,0x80,0x64,0x00,0xBF,0x80,0x24,0x00,0x3F,0xC0,0x4A,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x854A, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x32,0x40,0x50,0x40,0x0F,0x80,0x10,0x80,0x5A,0xC0,0x46,0x20,0xD6,0x80,0x31,0x80,0x00,0x00,}}, +{ 0x854B, {0x11,0x00,0xFF,0xE0,0x14,0x00,0x27,0x80,0x24,0x00,0x7F,0xC0,0x21,0x80,0x33,0x80,0x7B,0xC0,0x7B,0x80,0x77,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x854E, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x3E,0x00,0x7F,0xC0,0x1F,0x00,0x31,0x80,0xDF,0x60,0x3F,0x80,0x2E,0x80,0x2E,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8555, {0x11,0x00,0xFF,0xE0,0x13,0x80,0xA7,0x80,0x6F,0xC0,0x73,0xA0,0x6F,0xC0,0xAB,0xC0,0x6F,0xC0,0xAF,0xC0,0x2F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x8557, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x79,0xC0,0x4B,0x40,0x4C,0x80,0x79,0x80,0x12,0x40,0x5F,0xE0,0x5A,0x40,0x73,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x8558, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x21,0x80,0x7B,0xC0,0x39,0x80,0xFF,0xE0,0x7F,0xC0,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x855A, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x03,0x80,0x00,0x00,}}, +{ 0x8563, {0x11,0x00,0xFF,0xE0,0x7F,0x80,0x7C,0x80,0x25,0x00,0x7F,0xE0,0x61,0xC0,0xBB,0xC0,0x6B,0x80,0x1F,0xE0,0x31,0x80,0xC1,0x80,0x00,0x00,}}, +{ 0x8568, {0x11,0x00,0xFF,0xE0,0x3F,0xE0,0x7F,0xE0,0x6D,0x80,0x7F,0xE0,0x6B,0xA0,0x7B,0xC0,0x7E,0x80,0x69,0x80,0x51,0x40,0xA2,0x20,0x00,0x00,}}, +{ 0x8569, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x27,0x80,0x94,0x80,0x47,0x80,0x47,0x80,0x3F,0xE0,0x27,0xC0,0x5D,0xC0,0x4B,0x40,0x43,0x80,0x00,0x00,}}, +{ 0x856A, {0x11,0x00,0xFF,0xE0,0x30,0x00,0x3F,0xC0,0x6A,0x80,0xAA,0x80,0xFF,0xE0,0x2A,0x80,0xFF,0xE0,0x52,0x80,0x49,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x856D, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x7F,0x80,0x75,0x80,0x77,0x80,0x7F,0x80,0x75,0x80,0x55,0x80,0x95,0x80,0x00,0x00,}}, +{ 0x8577, {0x11,0x00,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0x33,0xC0,0xFE,0x40,0x2B,0xC0,0x32,0x40,0x23,0xC0,0x23,0xC0,0x23,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x857E, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xE0,0x75,0xC0,0xB5,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8580, {0x11,0x00,0xFF,0xE0,0x1F,0x80,0x2F,0x80,0xAB,0x80,0x4D,0x80,0x4F,0x80,0x60,0x00,0x5F,0xC0,0x55,0xC0,0xBF,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x8584, {0x11,0x00,0xFF,0xE0,0x51,0x40,0x3F,0xE0,0x8F,0xC0,0x49,0x40,0x4F,0xC0,0x29,0x40,0x2F,0xC0,0x5F,0xE0,0x82,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x8587, {0x11,0x00,0xFF,0xE0,0x19,0x00,0x4B,0x80,0xAB,0x80,0x3F,0xE0,0x61,0x40,0xFF,0xC0,0xC8,0x80,0x5E,0x80,0x77,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x8588, {0x21,0x80,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0xFF,0xE0,0x65,0x80,0x75,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x858A, {0x11,0x00,0xFF,0xE0,0x38,0x00,0x38,0x40,0x7D,0x40,0xF5,0x40,0x7D,0x40,0x75,0x40,0x7D,0x40,0x7F,0x40,0x6A,0x40,0x80,0xC0,0x00,0x00,}}, +{ 0x8590, {0x11,0x00,0xFF,0xE0,0x19,0x00,0x7F,0xC0,0x23,0x00,0xFF,0xE0,0x23,0xA0,0x75,0xE0,0x6F,0x80,0xA7,0x80,0x23,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x8591, {0x11,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x7F,0x80,0x64,0x80,0x7F,0x80,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0xFF,0xE0,0x00,0x00,}}, +{ 0x8594, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x35,0x80,0x2D,0x40,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8597, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x44,0x40,0x5F,0x40,0x7F,0xC0,0x51,0x40,0x5F,0xC0,0x4F,0x40,0x59,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x8599, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x51,0x40,0x7A,0x80,0x63,0xE0,0xA6,0x80,0xFB,0xC0,0x32,0x80,0x2B,0xC0,0x4B,0xE0,0x82,0x00,0x00,0x00,}}, +{ 0x859B, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x31,0x80,0x77,0xE0,0x52,0x40,0x71,0x80,0x47,0xE0,0x77,0xE0,0x57,0xE0,0x71,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x859C, {0x11,0x00,0x13,0x00,0xFF,0xE0,0x71,0x80,0x57,0xE0,0x52,0x40,0x71,0x80,0x47,0xE0,0xF7,0xE0,0xD7,0xE0,0x71,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x85A4, {0x11,0x00,0x13,0x00,0xFF,0xE0,0xFB,0x00,0x63,0x80,0x7F,0xC0,0x53,0x80,0xDF,0xC0,0xA7,0xC0,0x27,0xC0,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x85A6, {0x11,0x00,0xFF,0xE0,0x15,0x00,0x7F,0xE0,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x48,0x00,0x5F,0xE0,0x5F,0xE0,0xA7,0xA0,0x20,0xC0,0x00,0x00,}}, +{ 0x85A8, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xE0,0x40,0x40,0xFF,0xC0,0xFB,0xC0,0xFB,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x85A9, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xE0,0x52,0x40,0x6F,0xE0,0x6A,0x80,0x5B,0xC0,0x5C,0x80,0x6F,0xC0,0x48,0x80,0x57,0xE0,0x00,0x00,}}, +{ 0x85AA, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x7C,0x20,0x29,0xC0,0x79,0x00,0xFD,0xE0,0x21,0x40,0xFD,0x40,0x72,0x40,0xAA,0x40,0x24,0x40,0x00,0x00,}}, +{ 0x85AB, {0x11,0x00,0xFF,0xE0,0x1F,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0xFF,0xE0,0x2A,0x40,0xC5,0x20,0x00,0x00,}}, +{ 0x85AC, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x5F,0x40,0x3F,0x80,0x31,0xC0,0xDF,0x20,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x85AE, {0x11,0x00,0xFF,0xE0,0x39,0x00,0x79,0x00,0xFD,0xE0,0x72,0x80,0x6A,0x80,0xFD,0x00,0x29,0x00,0x51,0x80,0x32,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x85AF, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x05,0x00,0xFF,0xE0,0x1F,0x80,0x70,0x80,0x9F,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x85B9, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x31,0x80,0x3F,0x80,0x7F,0xE0,0xFF,0x40,0x9F,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0x85BA, {0x11,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0xF7,0xC0,0x75,0x80,0x77,0xC0,0xB5,0xA0,0x3F,0x80,0x3F,0x80,0x21,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x85C1, {0x11,0x00,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x1F,0x00,0x7F,0xC0,0x5F,0x40,0x53,0x40,0xFF,0xE0,0xFF,0xE0,0x35,0x80,0xC4,0x60,0x00,0x00,}}, +{ 0x85C9, {0x11,0x00,0xFF,0xE0,0x39,0x80,0xFB,0xC0,0x23,0xC0,0x7F,0xE0,0x20,0x00,0xFB,0xC0,0x7B,0xC0,0x6B,0xC0,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x85CD, {0x11,0x00,0xFF,0xE0,0x79,0x00,0x79,0xE0,0x4A,0x00,0x7C,0x00,0x51,0xC0,0x7C,0x00,0x3F,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x85CF, {0x11,0x00,0xFF,0xE0,0x11,0x40,0x1F,0xE0,0x73,0x00,0x7F,0x40,0x35,0x40,0xFF,0xC0,0x7E,0x80,0xFC,0xA0,0x7F,0x60,0x52,0x20,0x00,0x00,}}, +{ 0x85D0, {0x11,0x00,0xFF,0xE0,0x1A,0x00,0xFF,0xC0,0xF4,0x40,0x67,0xC0,0x64,0x40,0xF7,0xC0,0xF3,0x80,0xF3,0xA0,0xD5,0xA0,0x68,0xE0,0x00,0x00,}}, +{ 0x85D5, {0x11,0x00,0xFF,0xE0,0x3F,0xC0,0xFF,0xC0,0x33,0xC0,0x7B,0xC0,0x23,0xC0,0xF9,0x80,0x7F,0xE0,0x6F,0xE0,0xA4,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x85DC, {0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x67,0xC0,0xF9,0x40,0x76,0x40,0xEB,0x80,0x39,0x00,0xF5,0xE0,0x9F,0x20,0x75,0xC0,0x0C,0x00,0x00,0x00,}}, +{ 0x85DD, {0x11,0x00,0xFF,0xE0,0x7B,0x80,0xFF,0x80,0xF7,0x80,0xFD,0xA0,0x3A,0xA0,0x74,0x60,0xFF,0xE0,0xFF,0xE0,0x1F,0x80,0x60,0x40,0x00,0x00,}}, +{ 0x85E4, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x75,0x80,0x5F,0xC0,0x52,0x80,0x7F,0xE0,0x55,0x40,0x5B,0xE0,0x7D,0x80,0x51,0x40,0x93,0x00,0x00,0x00,}}, +{ 0x85E5, {0x11,0x00,0xFF,0xE0,0xFF,0xC0,0xEF,0xC0,0x6E,0xC0,0x6A,0xC0,0xFF,0xE0,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x85E9, {0x11,0x00,0xFF,0xE0,0x11,0xC0,0x2F,0x80,0xA7,0xC0,0x5F,0xE0,0x43,0x80,0x3F,0xC0,0x27,0xA0,0x47,0x80,0x47,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x85EA, {0x11,0x00,0xFF,0xE0,0x39,0x00,0x7D,0x80,0xFF,0xE0,0x7D,0x40,0x7F,0x40,0x75,0xC0,0xFC,0x80,0xFC,0x80,0x19,0x40,0x66,0x20,0x00,0x00,}}, +{ 0x85F7, {0x11,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0xF9,0x80,0x6F,0xE0,0x61,0x00,0x03,0xC0,0x76,0x40,0x5B,0xC0,0x73,0xC0,0x42,0x40,0x00,0x00,}}, +{ 0x85F9, {0x11,0x00,0xFF,0xE0,0x73,0xC0,0x73,0xC0,0xFB,0xC0,0x02,0x40,0x73,0xC0,0x73,0xE0,0x7D,0x20,0x7F,0xA0,0x77,0xA0,0x44,0xC0,0x00,0x00,}}, +{ 0x85FA, {0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x52,0x40,0x5F,0x40,0x7F,0x40,0x5E,0x40,0x5F,0x40,0x50,0xC0,0x00,0x00,}}, +{ 0x85FB, {0x11,0x00,0xFF,0xE0,0x17,0x80,0x27,0x80,0xA7,0x80,0x4F,0xC0,0x4B,0xC0,0x2F,0xC0,0x3F,0xE0,0x6F,0xE0,0x5B,0x60,0x41,0x00,0x00,0x00,}}, +{ 0x85FE, {0x11,0x00,0xFF,0xE0,0x37,0xC0,0xFF,0xC0,0x32,0xC0,0x7F,0xC0,0x6A,0x40,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0xA3,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x8602, {0x11,0x00,0xFF,0xE0,0x17,0x80,0x73,0xC0,0x4F,0x00,0x69,0x40,0x77,0xA0,0xB5,0xA0,0xFF,0xE0,0xFF,0xE0,0x35,0x80,0xC4,0x60,0x00,0x00,}}, +{ 0x8606, {0x11,0x00,0xFF,0xE0,0x17,0xC0,0x3F,0xE0,0x67,0x40,0x7B,0xC0,0x7F,0x80,0x72,0x80,0x7F,0x80,0x7F,0xC0,0x77,0x40,0xFF,0xE0,0x00,0x00,}}, +{ 0x8607, {0x11,0x00,0xFF,0xE0,0x11,0x40,0x7B,0x80,0x50,0x80,0xF8,0x80,0x6F,0xE0,0x79,0x80,0x7A,0xC0,0x7C,0xA0,0x74,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x860A, {0x11,0x00,0xFF,0xE0,0x17,0xC0,0x77,0xC0,0xD5,0x40,0x66,0xC0,0x77,0xC0,0xF8,0x00,0x37,0xC0,0x7D,0xC0,0xAF,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x860B, {0x11,0x00,0xFF,0xE0,0x17,0xE0,0x27,0xE0,0x7B,0xC0,0x62,0x40,0xFF,0xC0,0x62,0x40,0xEB,0xC0,0x3B,0xC0,0x32,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x8613, {0x11,0x00,0xFF,0xE0,0x19,0x80,0x7B,0x80,0x27,0xC0,0xFB,0xC0,0x23,0xC0,0x73,0xC0,0x6B,0xC0,0xA6,0x40,0x27,0xE0,0x29,0xA0,0x00,0x00,}}, +{ 0x8616, {0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x7F,0xE0,0x79,0x80,0x4B,0xC0,0x7C,0x00,0xFF,0xE0,0xFF,0xE0,0xF5,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x8617, {0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x7F,0xE0,0x79,0x80,0x6B,0xC0,0xBC,0x00,0xFF,0xE0,0xFF,0xE0,0xF5,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x861A, {0x11,0x00,0xFF,0xE0,0x3F,0x40,0x39,0x40,0x7F,0xE0,0xF5,0x80,0x7F,0xC0,0x75,0x80,0x7F,0xE0,0x7F,0xE0,0x6D,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x8622, {0x11,0x00,0xFF,0xE0,0x7B,0xE0,0x7B,0xE0,0xF8,0x40,0x03,0xC0,0x72,0x00,0x53,0xC0,0x73,0xC0,0x73,0xE0,0x52,0x20,0x71,0xE0,0x00,0x00,}}, +{ 0x862D, {0x11,0x00,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x4E,0x40,0x75,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x862F, {0x11,0x00,0xFF,0xE0,0x1F,0x80,0x4F,0x80,0x8F,0x80,0x7F,0xE0,0x6F,0xC0,0xF7,0x40,0xBF,0x80,0x7F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8630, {0x11,0x00,0xFF,0xE0,0x3B,0xC0,0xEB,0xC0,0x73,0xC0,0x37,0xE0,0x6D,0xA0,0xFF,0xE0,0x3F,0xC0,0x6B,0x80,0xA3,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x863F, {0x11,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x72,0x80,0xF3,0xE0,0x7E,0xC0,0xFB,0xC0,0x7B,0xC0,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x864D, {0x04,0x00,0x07,0xC0,0x3F,0xE0,0x7F,0xE0,0x64,0xC0,0x64,0xE0,0x67,0x00,0x7C,0x00,0x64,0x00,0x44,0x20,0x44,0x20,0x83,0xE0,0x00,0x00,}}, +{ 0x864E, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x44,0x60,0x47,0xC0,0x7C,0x40,0x43,0xC0,0x49,0x00,0x49,0x00,0x49,0x20,0x91,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x8650, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x44,0x00,0x5F,0xE0,0x44,0x00,0x47,0x80,0x7F,0xC0,0x50,0x00,0x5F,0xC0,0x90,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0x8654, {0x04,0x00,0x07,0xC0,0x3F,0xE0,0x7F,0xE0,0x7C,0x40,0x63,0xC0,0x62,0x00,0x7F,0xE0,0x69,0x00,0x46,0x00,0x4F,0x00,0xF0,0xE0,0x00,0x00,}}, +{ 0x8655, {0x04,0x00,0x07,0xC0,0x3F,0xE0,0x7F,0xE0,0x7C,0xC0,0x67,0x80,0x70,0x00,0x7D,0x80,0x75,0xA0,0x7F,0x60,0x56,0x00,0xE1,0xE0,0x00,0x00,}}, +{ 0x865A, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x4B,0xE0,0x7C,0x40,0x47,0xC0,0x45,0x00,0x55,0x40,0x55,0x40,0x45,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x865C, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x4F,0x80,0x7F,0x80,0x52,0x80,0x5F,0x80,0x52,0x80,0x5F,0xC0,0x7F,0xC0,0x8C,0x40,0x30,0x80,0x00,0x00,}}, +{ 0x865E, {0x04,0x00,0x07,0xC0,0x7F,0xE0,0x7F,0x40,0x43,0xC0,0x57,0x80,0x54,0x80,0x57,0x80,0x5F,0x80,0x7F,0xE0,0x99,0xC0,0x20,0x60,0x00,0x00,}}, +{ 0x865F, {0x01,0x00,0x71,0xC0,0x57,0xE0,0x77,0xE0,0x05,0xC0,0xFF,0x20,0x65,0xE0,0x75,0x80,0x15,0x80,0x19,0xA0,0x2A,0xA0,0x74,0x60,0x00,0x00,}}, +{ 0x8667, {0x20,0x00,0x3F,0xC0,0x7F,0x80,0x7D,0x80,0x5F,0xE0,0x69,0x00,0x7F,0x00,0x79,0xC0,0x7C,0x40,0x78,0x40,0xBE,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x866B, {0x04,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x04,0x80,0x07,0xC0,0xF8,0x20,0x00,0x20,0x00,0x00,}}, +{ 0x8671, {0x00,0x00,0x7F,0x80,0x07,0x80,0x79,0x80,0x11,0x80,0x7F,0x80,0x53,0x80,0x53,0x80,0x7E,0x80,0x16,0xA0,0x1F,0x60,0xE1,0x20,0x00,0x00,}}, +{ 0x8679, {0x20,0x00,0x20,0x00,0x7F,0xE0,0x69,0x00,0x69,0x00,0x69,0x00,0x69,0x00,0x79,0x00,0x29,0x00,0x3D,0x00,0x37,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x867B, {0x20,0x80,0x20,0x80,0xF8,0x80,0xAF,0xE0,0xAA,0x00,0xAA,0x00,0xFA,0x00,0xB2,0x00,0x2A,0x00,0x3E,0x00,0xE6,0x00,0x01,0xE0,0x00,0x00,}}, +{ 0x868A, {0x20,0x80,0x20,0x80,0x7F,0xE0,0x6A,0x40,0x6A,0x40,0x6A,0x40,0x79,0x80,0x61,0x80,0x29,0x80,0x3D,0x80,0xE2,0x40,0x04,0x20,0x00,0x00,}}, +{ 0x868B, {0x10,0xC0,0x10,0xC0,0x3D,0xE0,0x3D,0xE0,0x35,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x1D,0x20,0x1F,0x20,0x71,0x20,0x01,0x60,0x00,0x00,}}, +{ 0x868C, {0x21,0x80,0x21,0x80,0x7F,0xE0,0x7F,0xE0,0x69,0x80,0x6B,0xC0,0x79,0x80,0x79,0x80,0x3F,0xE0,0x3D,0x80,0xE1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8693, {0x30,0x20,0x33,0xE0,0x78,0xE0,0x7B,0xE0,0x7A,0x20,0x7A,0x20,0x7B,0xE0,0x7A,0xE0,0x38,0xE0,0x3C,0xE0,0x64,0xE0,0x03,0xA0,0x00,0x00,}}, +{ 0x8695, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x0A,0x00,0x35,0x80,0xFF,0xE0,0x24,0x80,0x3F,0x80,0x24,0x80,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x86A3, {0x21,0x80,0x20,0x80,0x79,0x80,0x7A,0x40,0x6A,0x40,0x6C,0x20,0x79,0x80,0x79,0x80,0x39,0xC0,0x3D,0x40,0xE7,0xA0,0x00,0x20,0x00,0x00,}}, +{ 0x86A4, {0x00,0x00,0x7F,0xC0,0x1B,0x80,0x26,0x00,0x1F,0x00,0x24,0x80,0xFF,0xE0,0x24,0x80,0x3F,0x80,0x04,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x86A9, {0x04,0x00,0x64,0x80,0x7F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7F,0x80,0x64,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x86AA, {0x20,0x40,0x21,0x40,0x79,0xC0,0x7A,0x40,0x6B,0x40,0x69,0x40,0x78,0x60,0x79,0xC0,0x3A,0x40,0x3C,0x40,0xE4,0x40,0x00,0x40,0x00,0x00,}}, +{ 0x86AB, {0x21,0x00,0x21,0x00,0x7B,0xC0,0x7B,0xC0,0x6F,0x40,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3A,0x80,0x3A,0x20,0xE2,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x86AF, {0x20,0x40,0x20,0x80,0x7B,0x00,0x7A,0x00,0x6B,0xE0,0x6A,0x80,0x7A,0x80,0x7A,0x80,0x3A,0x80,0x3A,0x80,0xE7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x86B0, {0x10,0xC0,0x10,0xC0,0x3D,0xE0,0x3D,0xE0,0x35,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x1D,0xE0,0x1F,0xE0,0x71,0xE0,0x01,0x20,0x00,0x00,}}, +{ 0x86B6, {0x22,0x40,0x22,0x40,0x7F,0xE0,0x7F,0xE0,0x6A,0x40,0x6A,0x40,0x7B,0xC0,0x7A,0x40,0x3A,0x40,0x3E,0x40,0xE3,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x86C4, {0x21,0x80,0x21,0x80,0x7F,0xE0,0x7F,0xE0,0x69,0x80,0x69,0x80,0x7B,0xC0,0x7A,0x40,0x3A,0x40,0x3E,0x40,0xE3,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x86C6, {0x20,0x00,0x23,0xC0,0x7A,0x40,0x7A,0x40,0x6B,0xC0,0x6A,0x40,0x7A,0x40,0x7B,0xC0,0x3A,0x40,0x3E,0x40,0xE7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x86C7, {0x20,0x80,0x20,0x80,0x7B,0xE0,0x6B,0x20,0x6F,0x00,0x69,0x40,0x69,0x40,0x79,0x80,0x29,0x00,0x3D,0x20,0xE5,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x86C9, {0x21,0x80,0x21,0x80,0x79,0x80,0x7A,0x40,0x6F,0xE0,0x68,0x00,0x7B,0xE0,0x79,0xA0,0x39,0xA0,0x3D,0xE0,0xE1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x86CB, {0x00,0x00,0x7F,0xC0,0x27,0x80,0x34,0x00,0x4F,0xE0,0x84,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x86CD, {0x28,0x80,0x14,0x80,0x7F,0xE0,0x44,0x40,0xBF,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x04,0x80,0x07,0xC0,0x78,0x40,0x00,0x00,}}, +{ 0x86CE, {0x20,0x00,0x23,0xE0,0x7A,0x00,0x6B,0xE0,0x6A,0x80,0x6A,0x80,0x7A,0xE0,0x6A,0xA0,0x2B,0x20,0x3D,0x20,0xEA,0x20,0x04,0xC0,0x00,0x00,}}, +{ 0x86D4, {0x10,0x00,0x13,0xE0,0x3E,0x20,0x3F,0xA0,0x37,0xE0,0x37,0xE0,0x3F,0xE0,0x3B,0xE0,0x1F,0x20,0x1E,0x20,0x73,0xE0,0x02,0x20,0x00,0x00,}}, +{ 0x86D9, {0x20,0x80,0x20,0x80,0x7B,0xC0,0x68,0x80,0x68,0x80,0x6F,0xE0,0x78,0x80,0x68,0x80,0x3B,0xC0,0x28,0x80,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x86DB, {0x21,0x80,0x23,0x80,0x7B,0xC0,0x7B,0xC0,0x6D,0x80,0x6F,0xE0,0x79,0x80,0x7B,0xC0,0x3B,0xC0,0x3D,0xA0,0xE9,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x86DE, {0x20,0x40,0x20,0x80,0x7B,0x80,0x79,0x80,0x6F,0xE0,0x69,0x80,0x79,0x80,0x7B,0xC0,0x3A,0x40,0x3E,0x40,0xE3,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x86DF, {0x21,0x80,0x21,0x80,0x7F,0xE0,0x79,0x40,0x6A,0xE0,0x6D,0xA0,0x79,0x80,0x79,0x80,0x39,0x80,0x3D,0x80,0xE2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x86E4, {0x21,0x80,0x21,0x80,0x79,0x80,0x6A,0x40,0x6F,0xE0,0x68,0x00,0x78,0x00,0x6B,0xC0,0x2A,0x40,0x3E,0x40,0xE3,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x86E9, {0x00,0x00,0xF7,0x80,0x64,0x80,0x66,0xA0,0x79,0xA0,0xD0,0x60,0x04,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x86EC, {0x11,0x00,0x13,0x00,0x7F,0xC0,0xFF,0xE0,0x17,0x00,0x25,0x80,0xFF,0xE0,0x25,0x80,0x3F,0x80,0x3F,0x80,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x86ED, {0x20,0x00,0x27,0xE0,0x79,0x00,0x6A,0x40,0x6F,0xE0,0x68,0xA0,0x78,0x80,0x6B,0xC0,0x28,0x80,0x38,0x80,0xEF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x86EE, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x69,0x40,0x51,0x20,0xA7,0x20,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x80,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x86EF, {0x21,0x80,0x21,0x80,0x7B,0xE0,0x79,0xE0,0x6F,0xE0,0x68,0x80,0x79,0x00,0x7B,0x60,0x3F,0x80,0x39,0x20,0xE1,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x86F8, {0x20,0x80,0x24,0xA0,0x7A,0xA0,0x68,0x80,0x6B,0xC0,0x6A,0x40,0x7B,0xC0,0x72,0x40,0x2B,0xC0,0x3E,0x40,0xE2,0x40,0x02,0xC0,0x00,0x00,}}, +{ 0x86F9, {0x10,0x00,0x13,0xE0,0x3C,0xC0,0x3D,0xE0,0x35,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x1D,0xE0,0x1F,0xE0,0x71,0xE0,0x01,0x60,0x00,0x00,}}, +{ 0x86FB, {0x21,0x80,0x20,0x80,0x79,0x40,0x7A,0x40,0x6F,0xE0,0x6A,0x40,0x7A,0x40,0x7B,0xC0,0x39,0x80,0x3A,0xA0,0xE4,0xA0,0x08,0x60,0x00,0x00,}}, +{ 0x86FE, {0x21,0x80,0x22,0x80,0xFE,0xC0,0xB2,0xA0,0xBF,0xE0,0xB2,0x80,0xF3,0xC0,0xA6,0xC0,0x3A,0x80,0x32,0xA0,0xC3,0x60,0x06,0x20,0x00,0x00,}}, +{ 0x8700, {0x00,0x00,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x1F,0xE0,0x14,0x20,0x3F,0xA0,0x75,0xA0,0x3F,0xA0,0x07,0xA0,0x78,0xE0,0x00,0xC0,0x00,0x00,}}, +{ 0x8702, {0x21,0x00,0x23,0xC0,0x7E,0x80,0x69,0x80,0x6B,0x40,0x6F,0xA0,0x79,0x00,0x73,0xC0,0x29,0x00,0x3F,0xE0,0xE1,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x8703, {0x00,0x00,0x7F,0xC0,0x7F,0x80,0x7F,0xE0,0x72,0xC0,0x5D,0x80,0xE4,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x8706, {0x20,0x00,0x23,0xC0,0x7A,0x40,0x7B,0xC0,0x6A,0x40,0x6B,0xC0,0x7A,0x40,0x7B,0xC0,0x3B,0xC0,0x3B,0xA0,0xE5,0xA0,0x08,0xE0,0x00,0x00,}}, +{ 0x8708, {0x20,0x00,0x21,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x6A,0x00,0x7B,0xC0,0x7B,0xC0,0x3F,0xE0,0x3F,0xE0,0xE2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x8709, {0x20,0x40,0x21,0x80,0x7F,0xC0,0x7B,0xA0,0x6C,0x20,0x6B,0xC0,0x78,0x80,0x71,0x80,0x3F,0xE0,0x3D,0x80,0xE1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x870A, {0x30,0xA0,0x31,0x20,0x7F,0xE0,0x79,0xE0,0x7F,0xE0,0x79,0xE0,0x7B,0xE0,0x73,0xE0,0x3D,0xE0,0x39,0x20,0x61,0x20,0x01,0x60,0x00,0x00,}}, +{ 0x870D, {0x21,0x80,0x21,0x80,0x79,0x80,0x7A,0x40,0x6F,0xE0,0x69,0x80,0x7F,0xE0,0x79,0x80,0x3B,0xC0,0x3D,0xA0,0xE9,0xA0,0x01,0x80,0x00,0x00,}}, +{ 0x8711, {0x00,0x60,0xF7,0x80,0x71,0xE0,0x75,0xE0,0x33,0xE0,0x38,0x00,0xC7,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x8712, {0x60,0x20,0x6E,0x40,0xF3,0x80,0xF4,0x80,0xF5,0xE0,0xFF,0x80,0xF3,0x80,0xEB,0x80,0x7F,0xE0,0x76,0xE0,0xCB,0x00,0x10,0xE0,0x00,0x00,}}, +{ 0x8718, {0x24,0x00,0x24,0x00,0xF7,0xE0,0xBA,0xA0,0xBA,0xA0,0xB2,0xA0,0xFF,0xA0,0xA2,0xA0,0x37,0xA0,0x3D,0xE0,0xC9,0xA0,0x10,0x00,0x00,0x00,}}, +{ 0x871A, {0x09,0x00,0x79,0xE0,0x39,0xC0,0x3D,0xC0,0xF9,0xE0,0x11,0x00,0x25,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x871C, {0x04,0x00,0x04,0x00,0x7F,0xE0,0xDE,0x40,0x74,0xC0,0x5F,0xA0,0x24,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x8725, {0x62,0x20,0x62,0x40,0xFF,0x80,0xFF,0x80,0xF7,0xE0,0xF7,0xC0,0xF7,0xC0,0xEB,0xC0,0x7B,0x40,0x73,0x40,0xD2,0x40,0x02,0x40,0x00,0x00,}}, +{ 0x8729, {0x30,0x00,0x33,0xE0,0x7A,0xA0,0x7B,0xE0,0x7B,0xA0,0x7B,0xE0,0x7A,0xA0,0x7B,0xE0,0x3B,0xE0,0x3F,0xE0,0x64,0x20,0x08,0x60,0x00,0x00,}}, +{ 0x8734, {0x20,0x00,0x23,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x69,0x00,0x7B,0xE0,0x75,0xA0,0x3A,0xA0,0x3C,0xA0,0xE1,0x20,0x00,0xC0,0x00,0x00,}}, +{ 0x8737, {0x21,0x80,0x23,0xC0,0x7F,0xA0,0x7F,0xE0,0x6B,0xC0,0x6F,0xE0,0x7A,0x40,0x77,0xA0,0x3A,0x80,0x3A,0xA0,0xE2,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x873B, {0x21,0x80,0x27,0xE0,0x7B,0xC0,0x7B,0xC0,0x6F,0xE0,0x68,0x00,0x7B,0xC0,0x7B,0xC0,0x3B,0xC0,0x3F,0xC0,0xE2,0x40,0x02,0xC0,0x00,0x00,}}, +{ 0x873F, {0x61,0x80,0x61,0x80,0xF7,0xE0,0xFE,0x00,0xF3,0xC0,0xF3,0xC0,0xF5,0xC0,0xFF,0xC0,0x73,0xC0,0x7B,0xA0,0xC5,0xA0,0x08,0xE0,0x00,0x00,}}, +{ 0x8749, {0x21,0x20,0x24,0xA0,0x7A,0xC0,0x6B,0xC0,0x6A,0xC0,0x6B,0xC0,0x7A,0xC0,0x73,0xC0,0x28,0x80,0x3F,0xE0,0xE0,0x80,0x00,0x80,0x00,0x00,}}, +{ 0x874B, {0x42,0x40,0x49,0x40,0xF7,0xC0,0xD5,0x40,0xD5,0x40,0xD7,0xC0,0xF5,0x40,0xE5,0x40,0x57,0xC0,0x75,0x40,0xC9,0x60,0x11,0x20,0x00,0x00,}}, +{ 0x874C, {0x61,0x40,0x62,0xC0,0xFE,0xC0,0xF2,0x40,0xFF,0x40,0xF2,0xC0,0xF6,0xC0,0xE7,0x60,0x7B,0xC0,0x7A,0x40,0xC2,0x40,0x02,0x40,0x00,0x00,}}, +{ 0x874E, {0x20,0x00,0x23,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x69,0x00,0x7B,0xE0,0x77,0xA0,0x3B,0xE0,0x3F,0xE0,0xE2,0x20,0x00,0xC0,0x00,0x00,}}, +{ 0x8753, {0x63,0x80,0x61,0x80,0xF2,0x80,0xF7,0xC0,0xF8,0x20,0xFE,0x40,0xFB,0xC0,0xEF,0xC0,0x7F,0x80,0x7F,0xC0,0xCB,0xC0,0x0B,0xC0,0x00,0x00,}}, +{ 0x8755, {0x10,0x40,0x18,0x40,0x25,0xE0,0x51,0x60,0xBD,0x60,0x25,0x60,0x3D,0x60,0x25,0xE0,0x3C,0x40,0x28,0x60,0x3C,0xD0,0x63,0x10,0x00,0x00,}}, +{ 0x8757, {0x21,0x00,0x23,0x00,0x7B,0xC0,0x7B,0xC0,0x6A,0x40,0x6B,0xC0,0x78,0x00,0x77,0xE0,0x3B,0xC0,0x3B,0xC0,0xEF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8759, {0x60,0x00,0x6F,0xE0,0xF7,0xC0,0xF7,0xC0,0xF7,0xC0,0xF4,0x00,0xF7,0xC0,0xE5,0xC0,0x7F,0xC0,0x7F,0xC0,0xD5,0xC0,0x04,0xC0,0x00,0x00,}}, +{ 0x875F, {0x20,0x00,0x27,0xE0,0x7F,0xE0,0x7F,0xE0,0x6F,0xE0,0x68,0x00,0x7B,0xC0,0x7A,0x40,0x3B,0xC0,0x3F,0xC0,0xE2,0x40,0x02,0xC0,0x00,0x00,}}, +{ 0x8760, {0x20,0x00,0x27,0xE0,0x7B,0x80,0x7B,0x80,0x6B,0x80,0x68,0x00,0x7F,0xC0,0x77,0x40,0x3F,0xC0,0x3D,0x40,0xE7,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x8763, {0x65,0x80,0x65,0x80,0xF5,0xE0,0xFF,0xE0,0xF7,0xE0,0xF4,0x40,0xF7,0x80,0xE5,0xC0,0x75,0xE0,0x79,0x80,0xC9,0x80,0x17,0x80,0x00,0x00,}}, +{ 0x8766, {0x20,0x00,0x26,0xC0,0xF6,0x40,0xB6,0x40,0xB6,0xC0,0xB4,0x00,0xF7,0xC0,0xA5,0xC0,0x37,0xC0,0x34,0x80,0xD4,0xC0,0x05,0x20,0x00,0x00,}}, +{ 0x8768, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0xA0,0x10,0x60,0x20,0x20,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3D,0xE0,0xE7,0x20,0x00,0x00,}}, +{ 0x876A, {0x20,0x00,0x23,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x68,0x00,0x7F,0xE0,0x72,0x00,0x3F,0xE0,0x3A,0xA0,0xE4,0xA0,0x01,0xC0,0x00,0x00,}}, +{ 0x876E, {0x22,0x00,0x22,0x00,0x7F,0xE0,0x7F,0xC0,0x6B,0xC0,0x6A,0x40,0x7B,0xC0,0x7B,0x00,0x3F,0xC0,0x3F,0x80,0xE3,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0x8774, {0x32,0x00,0x32,0xE0,0x7A,0xE0,0x7F,0xE0,0x7A,0xE0,0x7A,0xE0,0x7F,0xE0,0x75,0xE0,0x3F,0xA0,0x3F,0xA0,0x61,0x20,0x02,0x60,0x00,0x00,}}, +{ 0x8776, {0x22,0xC0,0x22,0xC0,0x7F,0xE0,0x6A,0xC0,0x6A,0xC0,0x6A,0x00,0x7B,0xE0,0x60,0x80,0x2F,0xE0,0x39,0xC0,0xEA,0xA0,0x00,0x80,0x00,0x00,}}, +{ 0x8778, {0x10,0x00,0x11,0xC0,0x3D,0xC0,0x3D,0xC0,0x35,0xC0,0x37,0xE0,0x3E,0x20,0x3B,0xE0,0x1F,0xE0,0x1F,0xE0,0x72,0x20,0x02,0x60,0x00,0x00,}}, +{ 0x877F, {0x20,0x00,0x23,0xC0,0x7B,0xC0,0x6A,0xC0,0x6B,0xC0,0x68,0x80,0x7B,0xC0,0x72,0xC0,0x2B,0xC0,0x3E,0xC0,0xE3,0xA0,0x00,0xE0,0x00,0x00,}}, +{ 0x8782, {0x64,0x00,0x65,0xC0,0xFF,0xC0,0xFB,0xC0,0xFF,0x80,0xFB,0xC0,0xFF,0xC0,0xEB,0xA0,0x7F,0xE0,0x7B,0xC0,0xCF,0x80,0x31,0x80,0x00,0x00,}}, +{ 0x878D, {0x01,0x00,0xFD,0x00,0x7B,0xC0,0x4B,0x40,0x7B,0x40,0x03,0x40,0xFF,0xC0,0xD7,0x00,0xFD,0x40,0xBD,0x40,0xA7,0xA0,0xAC,0x20,0x00,0x00,}}, +{ 0x879F, {0x20,0x00,0x27,0xE0,0x7F,0xC0,0x7B,0xC0,0x6B,0xC0,0x6A,0x40,0x7B,0xC0,0x71,0x80,0x3F,0xE0,0x3C,0x00,0xE2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x87A2, {0x21,0x80,0x7B,0xC0,0xB7,0x80,0x31,0xC0,0x4A,0x40,0x7F,0xE0,0x44,0x40,0xFF,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x87AB, {0x11,0x00,0x7D,0x00,0xFF,0xE0,0xFF,0x40,0x6A,0xC0,0xF9,0xC0,0x46,0x20,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x87AF, {0x21,0x00,0xF9,0x00,0xFF,0xE0,0xFE,0x80,0x39,0x80,0x29,0x80,0xDE,0x60,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0xF8,0x20,0x00,0x00,}}, +{ 0x87B3, {0x21,0x80,0x25,0xA0,0x7F,0xE0,0x7F,0xE0,0x6B,0xC0,0x6A,0x40,0x7B,0xC0,0x71,0x80,0x3B,0xC0,0x39,0x80,0xEF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x87BA, {0x20,0x00,0x23,0xC0,0x7B,0xC0,0x6B,0xC0,0x6B,0xC0,0x69,0x40,0x7A,0x80,0x71,0xC0,0x2F,0xE0,0x3B,0x40,0xE5,0x20,0x01,0x00,0x00,0x00,}}, +{ 0x87BB, {0x21,0x80,0x23,0xC0,0x7F,0xE0,0x7F,0xE0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x73,0xC0,0x3F,0xE0,0x3B,0x80,0xE3,0xC0,0x0E,0x20,0x00,0x00,}}, +{ 0x87BD, {0x04,0x00,0x0F,0x00,0x3E,0x00,0x1F,0x00,0xF2,0xE0,0x0E,0x00,0x21,0x80,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3D,0xE0,0xE7,0x20,0x00,0x00,}}, +{ 0x87C0, {0x21,0x80,0x21,0x80,0x7F,0xE0,0x7B,0xC0,0x6F,0xE0,0x69,0x80,0x7B,0xC0,0x7D,0xA0,0x3F,0xE0,0x3F,0xE0,0xE1,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x87C4, {0x21,0x00,0x7B,0x00,0xFF,0x80,0xFF,0x80,0xFF,0xA0,0x7A,0xA0,0x24,0x60,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0x78,0x40,0x00,0x00,}}, +{ 0x87C6, {0x21,0x80,0x23,0xC0,0x7F,0xE0,0x7B,0xC0,0x6A,0x40,0x6B,0xC0,0x7A,0x40,0x73,0xC0,0x3F,0xE0,0x3F,0xE0,0xE2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x87C7, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x08,0x00,0xFF,0xE0,0x35,0x80,0xFF,0xE0,0xBF,0xA0,0x07,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x87CB, {0x20,0xC0,0x27,0xC0,0x7B,0xC0,0x7F,0xE0,0x6B,0xC0,0x6B,0xC0,0x7D,0x20,0x71,0x00,0x3B,0x60,0x3B,0x20,0xE7,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x87D0, {0x25,0xA0,0x23,0xC0,0x7F,0xE0,0x7F,0xC0,0x6A,0x40,0x6B,0xC0,0x79,0x80,0x77,0xE0,0x3D,0xA0,0x3D,0xA0,0xE5,0xC0,0x01,0x80,0x00,0x00,}}, +{ 0x87D2, {0x21,0x80,0x23,0xC0,0x7F,0xE0,0x79,0x80,0x6F,0xE0,0x69,0x80,0x7A,0x40,0x75,0xA0,0x3F,0xE0,0x3F,0xE0,0xE2,0x80,0x04,0x80,0x00,0x00,}}, +{ 0x87E0, {0x20,0xC0,0x27,0xC0,0x7B,0xC0,0x7F,0xE0,0x6B,0xC0,0x6B,0xC0,0x7D,0xA0,0x73,0xC0,0x3B,0xC0,0x3F,0xC0,0xE3,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x87EF, {0x21,0x80,0x23,0xC0,0x7F,0xE0,0x7F,0xE0,0x6F,0xE0,0x6A,0x40,0x7B,0xE0,0x74,0x00,0x3F,0xE0,0x39,0xA0,0xE2,0xA0,0x0C,0x60,0x00,0x00,}}, +{ 0x87F2, {0x04,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0x78,0x40,0x21,0x80,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x3D,0xE0,0xE7,0x20,0x00,0x00,}}, +{ 0x87F6, {0x60,0x00,0x6F,0x80,0xF7,0xE0,0xF7,0xA0,0xF7,0xA0,0xFF,0xE0,0xF1,0xC0,0xE7,0x80,0x73,0xC0,0x73,0xC0,0xCF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x87F7, {0x25,0xA0,0x23,0xC0,0x7F,0xE0,0x7F,0xC0,0x6A,0x80,0x6B,0x80,0x78,0x00,0x77,0xC0,0x3F,0xC0,0x3F,0xC0,0xE7,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x87F9, {0x40,0x00,0x77,0xC0,0xFA,0x40,0xEE,0xC0,0x7B,0xC0,0x6D,0x00,0xFF,0xE0,0x8D,0x00,0x7F,0xC0,0x7F,0xC0,0x05,0x80,0xFE,0x40,0x00,0x00,}}, +{ 0x87FB, {0x22,0x80,0x2F,0xE0,0xF1,0x00,0xB7,0xC0,0xBF,0xE0,0xB3,0xC0,0xFE,0xA0,0xAF,0xE0,0x32,0xC0,0x3E,0xA0,0xC3,0x60,0x06,0x20,0x00,0x00,}}, +{ 0x87FE, {0x61,0x00,0x63,0x80,0xFF,0xE0,0xFF,0xE0,0xF6,0xE0,0xF5,0xC0,0xF7,0xE0,0xE5,0x80,0x7F,0xC0,0x7B,0xC0,0xD3,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x8805, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0xF7,0xC0,0xFB,0xC0,0xFF,0xC0,0xEB,0xC0,0x7F,0xC0,0x7B,0x80,0xC2,0x20,0x01,0xE0,0x00,0x00,}}, +{ 0x880D, {0x60,0x80,0x6F,0x80,0xFF,0x80,0xFF,0xE0,0xFF,0xE0,0xF4,0xC0,0xFF,0x80,0xED,0x80,0x7F,0xC0,0x7F,0xC0,0xCB,0x20,0x03,0x20,0x00,0x00,}}, +{ 0x880E, {0x21,0x80,0x27,0xE0,0x79,0x80,0x7F,0xE0,0x6B,0xC0,0x6B,0xC0,0x7F,0xE0,0x71,0x80,0x3F,0xE0,0x3F,0xE0,0xE4,0x40,0x08,0x40,0x00,0x00,}}, +{ 0x880F, {0x64,0x00,0x67,0xE0,0xFA,0xA0,0xFF,0xE0,0xFB,0x40,0xFB,0xC0,0xFF,0xE0,0xEB,0x40,0x7F,0xE0,0x7F,0xE0,0xD1,0x40,0x23,0x40,0x00,0x00,}}, +{ 0x8811, {0x62,0x80,0x67,0xE0,0xFB,0xC0,0xF7,0xC0,0xF9,0x20,0xF7,0xE0,0xF5,0xC0,0xE9,0x80,0x7F,0xE0,0x73,0xC0,0xCD,0xA0,0x01,0x80,0x00,0x00,}}, +{ 0x8815, {0x20,0x00,0x27,0xE0,0x7F,0xE0,0x7F,0xE0,0x6F,0xE0,0x6F,0xE0,0x7F,0xE0,0x71,0x80,0x3F,0xE0,0x3D,0xA0,0xE5,0xA0,0x04,0x60,0x00,0x00,}}, +{ 0x8816, {0x21,0x80,0x27,0xE0,0x7B,0xE0,0x7F,0xE0,0x6B,0xC0,0x6B,0xC0,0x7B,0x80,0x73,0xE0,0x3F,0xC0,0x3B,0x80,0xE3,0x80,0x0C,0x60,0x00,0x00,}}, +{ 0x8821, {0x10,0x00,0x1F,0x00,0xFF,0xE0,0xFF,0xE0,0x7F,0x80,0x77,0x80,0x7A,0x60,0x3D,0x80,0x7B,0xC0,0x7B,0xC0,0x39,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x8822, {0x04,0x00,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0x33,0x80,0xDF,0x60,0x1F,0x00,0x31,0x80,0x7B,0xC0,0x7B,0xC0,0x39,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x8823, {0x20,0x00,0x27,0xE0,0x7F,0xE0,0x7F,0xE0,0x6F,0xC0,0x6F,0xC0,0x7F,0xC0,0x77,0xC0,0x3F,0xE0,0x3F,0xE0,0xEC,0x20,0x14,0x60,0x00,0x00,}}, +{ 0x8827, {0x04,0x00,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0x9F,0x80,0x31,0x80,0xDF,0x80,0x31,0x80,0x7B,0xC0,0x7B,0xC0,0x39,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x8831, {0x04,0x00,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x31,0x80,0x7B,0xC0,0x7B,0xC0,0x39,0xC0,0xFF,0xA0,0x7F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8836, {0x00,0x00,0x7B,0xC0,0xFF,0xE0,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x7B,0xC0,0x7B,0xC0,0x39,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x8839, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0xE0,0x7F,0xC0,0x9F,0x80,0x69,0x80,0x3F,0x80,0x7B,0xC0,0x7B,0xC0,0x39,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x883B, {0x6E,0x80,0x7F,0xE0,0xFE,0xC0,0xFF,0xE0,0xFF,0xC0,0x7B,0xA0,0xEE,0xA0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x07,0xC0,0x78,0x40,0x00,0x00,}}, +{ 0x8840, {0x04,0x00,0x04,0x00,0x08,0x00,0x3F,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8842, {0x20,0x00,0x27,0xC0,0x79,0x40,0x7D,0x40,0x77,0x40,0x75,0x40,0x75,0xC0,0x75,0xC0,0x7E,0x60,0x7E,0x40,0xC4,0x40,0x08,0x80,0x00,0x00,}}, +{ 0x8844, {0x20,0x00,0x23,0xC0,0x79,0x40,0x7D,0x40,0x75,0x40,0x77,0xE0,0x75,0x40,0x75,0x40,0x7F,0x40,0x7F,0x40,0xC7,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8846, {0x04,0x00,0x08,0x00,0x3F,0x80,0x2A,0x80,0xFF,0xE0,0x01,0x00,0x26,0x40,0x5C,0x80,0x85,0x00,0x24,0x80,0xC4,0x60,0x04,0x00,0x00,0x00,}}, +{ 0x884C, {0x20,0x00,0x27,0xC0,0x40,0x00,0x10,0x00,0x3F,0xE0,0x20,0x80,0x60,0x80,0xA0,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x884D, {0x68,0x00,0x45,0xC0,0x84,0x00,0x30,0x00,0x2B,0xE0,0x68,0x80,0x60,0x80,0xE4,0x80,0x64,0x80,0x68,0x80,0x70,0x80,0x70,0x80,0x00,0x00,}}, +{ 0x8852, {0x68,0x00,0x48,0xC0,0x9E,0x00,0x3E,0x00,0x2B,0xE0,0x72,0x80,0x74,0x80,0xEC,0x80,0x6C,0x80,0x7E,0x80,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x8853, {0x24,0x00,0x46,0xE0,0x85,0x00,0x3F,0x00,0x25,0xE0,0x44,0x40,0x56,0x40,0xD5,0x40,0x55,0x40,0x54,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x8857, {0x24,0x00,0x45,0xE0,0x9E,0x00,0x24,0x00,0x3F,0xE0,0x44,0x40,0xC4,0x40,0x5F,0x40,0x44,0x40,0x46,0x40,0x58,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x8859, {0x60,0x00,0x7F,0xC0,0x9C,0x00,0x3E,0x00,0x2A,0xE0,0x7F,0x80,0x60,0x80,0xFE,0x80,0x72,0x80,0x7E,0x80,0x72,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x885B, {0x24,0x00,0x5E,0xC0,0x8A,0x00,0x3F,0xE0,0x3E,0x40,0x6A,0x40,0x6E,0x40,0xA4,0x40,0x2E,0x40,0x3F,0x40,0x24,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x885D, {0x23,0x00,0x5C,0xE0,0xBF,0x00,0x3F,0xE0,0x35,0x40,0x5F,0x40,0xD5,0x40,0x5F,0x40,0x44,0x40,0x4F,0x40,0x46,0x40,0x58,0xC0,0x00,0x00,}}, +{ 0x885E, {0x64,0x00,0x5F,0xE0,0x9F,0x00,0x3F,0x00,0x33,0xE0,0x7F,0x40,0x7F,0x40,0xE4,0x40,0x7F,0x40,0x75,0x40,0x77,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x8861, {0x28,0x00,0x4E,0xE0,0x94,0x00,0x3F,0xE0,0x35,0x40,0x5F,0x40,0xD5,0x40,0x5F,0x40,0x44,0x40,0x5F,0x40,0x4A,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x8862, {0x60,0x00,0x7B,0xE0,0xBB,0x80,0x3B,0x80,0x7B,0xE0,0x7B,0xC0,0x5F,0x40,0xF2,0x40,0x5F,0x40,0x5E,0x40,0x5F,0x40,0x50,0xC0,0x00,0x00,}}, +{ 0x8863, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0C,0x40,0x12,0x40,0x32,0x80,0xD1,0x00,0x11,0x00,0x14,0x80,0x18,0x40,0x60,0x20,0x00,0x00,}}, +{ 0x8868, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x08,0x80,0x12,0x80,0x33,0x00,0xD1,0x00,0x1C,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x886B, {0x20,0x80,0x20,0x80,0xF9,0x80,0xF9,0x40,0x16,0xC0,0x24,0x80,0x79,0x20,0xEB,0x20,0xA6,0x40,0x20,0x40,0x21,0x80,0x26,0x00,0x00,0x00,}}, +{ 0x8870, {0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x0C,0x00,0x34,0x80,0xD3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x8872, {0x31,0x80,0x30,0x80,0x7B,0xE0,0x7B,0xE0,0x16,0xA0,0x16,0xA0,0x3B,0xE0,0x7B,0x60,0x36,0x20,0x32,0x20,0x32,0x20,0x32,0x60,0x00,0x00,}}, +{ 0x8875, {0x30,0x00,0x33,0xE0,0x7A,0x20,0x7A,0x20,0x16,0x20,0x17,0xE0,0x3A,0x20,0x7A,0x20,0x36,0x20,0x32,0x20,0x33,0xE0,0x32,0x20,0x00,0x00,}}, +{ 0x8877, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x80,0x0C,0x40,0x33,0x80,0xD2,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x887D, {0x60,0x40,0x61,0x80,0xF7,0x80,0xF1,0x80,0x29,0x80,0x2F,0xE0,0x71,0x80,0xF1,0x80,0x69,0x80,0x61,0x80,0x67,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x887E, {0x04,0x00,0x0A,0x00,0xFF,0xE0,0xCE,0x60,0x3F,0x80,0x01,0x80,0x05,0x00,0xFF,0xE0,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x887F, {0x21,0x00,0x21,0x00,0xF3,0x80,0x12,0x80,0x2F,0xC0,0x28,0x20,0x70,0x00,0xB7,0xC0,0x28,0x80,0x20,0x80,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x8881, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x00,0x21,0x80,0x3F,0x00,0x0A,0x40,0xF2,0x40,0xD1,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x8882, {0x61,0x00,0x61,0x00,0xF7,0xC0,0xF7,0xC0,0x29,0x40,0x29,0x40,0x77,0xE0,0xF1,0x00,0x6B,0x80,0x62,0x80,0x64,0x40,0x68,0x20,0x00,0x00,}}, +{ 0x8888, {0x20,0x00,0x23,0xC0,0xFA,0x40,0x2A,0x40,0x4B,0xC0,0xB6,0x40,0x04,0x00,0xFF,0xE0,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x888B, {0x0A,0x80,0x12,0x40,0x7F,0xE0,0xA1,0x00,0x24,0xA0,0x24,0x40,0xFF,0xE0,0x0C,0x80,0x32,0x80,0xD3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x888D, {0x62,0x00,0x62,0x00,0xF7,0xC0,0xF7,0xC0,0x2F,0x40,0x2D,0xC0,0x75,0xC0,0xF7,0xC0,0x6C,0x80,0x64,0x20,0x64,0x20,0x63,0xE0,0x00,0x00,}}, +{ 0x8892, {0x60,0x00,0x67,0x80,0xF4,0x80,0xF4,0x80,0x2F,0x80,0x2C,0x80,0x74,0x80,0xF4,0x80,0x6F,0x80,0x60,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8896, {0x10,0x80,0x10,0x80,0x78,0x80,0x0B,0xE0,0x12,0xA0,0x16,0xA0,0x3A,0xA0,0x5B,0xE0,0x16,0xA0,0x12,0xA0,0x13,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x8897, {0x61,0x00,0x61,0x00,0xF3,0x80,0xF2,0x80,0x2C,0xC0,0x29,0x20,0x76,0x80,0xF1,0x00,0x6E,0x40,0x64,0x80,0x63,0x00,0x6C,0x00,0x00,0x00,}}, +{ 0x8899, {0x30,0x80,0x31,0x80,0x7B,0xE0,0x7B,0xE0,0x16,0x20,0x16,0x20,0x3B,0xE0,0x7A,0x20,0x36,0x20,0x32,0x20,0x33,0xE0,0x32,0x20,0x00,0x00,}}, +{ 0x889E, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x31,0xC0,0xFF,0xA0,0x21,0x80,0x21,0x80,0x3F,0x00,0xFA,0x40,0xF1,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88A2, {0x61,0x80,0x63,0xC0,0xF7,0xA0,0xF7,0xE0,0x29,0x80,0x29,0x80,0x77,0xE0,0xF1,0x80,0x69,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x88A4, {0x04,0x00,0xFF,0xE0,0x1F,0x00,0xFF,0xE0,0x0D,0xC0,0x34,0x00,0xCC,0x00,0x04,0x00,0xFF,0xE0,0xFF,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88AB, {0x21,0x00,0x21,0x00,0xF7,0xE0,0x15,0x20,0x2D,0x40,0x2F,0xC0,0x76,0x40,0xB6,0x80,0x29,0x80,0x29,0x80,0x36,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x88AE, {0x62,0x00,0x62,0x00,0xF2,0x00,0xF3,0xE0,0x2D,0x80,0x29,0x80,0x73,0x80,0xF3,0xC0,0x6F,0xE0,0x69,0xA0,0x61,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x88B0, {0x00,0x00,0x1F,0x80,0xFF,0xE0,0xFF,0xE0,0x22,0x80,0x3F,0xE0,0x05,0x00,0x04,0x00,0xFF,0xE0,0xFE,0x40,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88B1, {0x63,0x80,0x63,0xC0,0xF7,0xA0,0xF5,0x80,0x2F,0xE0,0x35,0x80,0x65,0x80,0xF5,0x80,0x75,0x80,0x66,0x40,0x66,0x40,0x64,0x20,0x00,0x00,}}, +{ 0x88B4, {0x20,0x80,0x20,0x80,0xF7,0xE0,0x12,0x40,0x2F,0xE0,0x28,0x00,0x77,0xE0,0xB1,0x00,0x2B,0xC0,0x20,0x40,0x20,0x40,0x20,0x80,0x00,0x00,}}, +{ 0x88B5, {0x62,0x00,0x62,0x60,0xF7,0x80,0xF4,0x80,0x2C,0x80,0x2C,0x80,0x77,0xE0,0xF4,0x80,0x6C,0x80,0x64,0x80,0x65,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x88B7, {0x21,0x00,0x21,0x00,0xFB,0x80,0x14,0x80,0x2F,0xC0,0x28,0x20,0x70,0x00,0xB7,0x80,0x2C,0x80,0x24,0x80,0x27,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x88BF, {0x61,0x00,0x63,0x00,0xF7,0xC0,0xF1,0x00,0x2F,0xE0,0x29,0x00,0x71,0x00,0xF7,0xC0,0x69,0x00,0x61,0x00,0x6F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x88C1, {0x22,0x00,0x7A,0x80,0x22,0x40,0xFF,0xE0,0x21,0x00,0xFD,0x40,0x31,0x40,0x54,0x80,0xD8,0x80,0x59,0xA0,0x66,0x60,0xC0,0x20,0x00,0x00,}}, +{ 0x88C2, {0x00,0x40,0x7F,0x40,0x11,0x40,0x3D,0x40,0x69,0x40,0x35,0x40,0x64,0xC0,0xFF,0xE0,0x0C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88C3, {0x61,0x00,0x61,0x00,0xF1,0xC0,0xF1,0x00,0x2F,0xE0,0x28,0x00,0x77,0xE0,0xF1,0x00,0x69,0xC0,0x61,0x00,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x88C4, {0x62,0x00,0x62,0xC0,0xFC,0x00,0xFA,0x00,0x23,0xE0,0x34,0x80,0x64,0x80,0xFC,0x80,0x74,0x80,0x64,0x80,0x64,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x88C5, {0x11,0x00,0x51,0x00,0x1F,0xE0,0x31,0x00,0xD7,0xC0,0x14,0x00,0x04,0x00,0xFF,0xE0,0x32,0x80,0xD3,0x80,0x1D,0x80,0x20,0x60,0x00,0x00,}}, +{ 0x88CF, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0xF3,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88D4, {0x04,0x00,0xFF,0xE0,0x1A,0x40,0xF1,0x80,0x1D,0x80,0x60,0x60,0x7F,0xC0,0x52,0xC0,0x7F,0xC0,0x5F,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x88D5, {0x22,0x80,0x22,0x80,0xFC,0x40,0x11,0x00,0x2B,0x00,0x32,0x80,0x64,0x40,0xBF,0xC0,0x34,0xA0,0x24,0x80,0x27,0x80,0x24,0x80,0x00,0x00,}}, +{ 0x88D8, {0x04,0x80,0xFF,0xE0,0x64,0xC0,0x7F,0x80,0x34,0xC0,0xCC,0x20,0x04,0x00,0xFF,0xE0,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88D9, {0x60,0x00,0x67,0xC0,0xF1,0x40,0xFF,0xE0,0x23,0x40,0x2F,0xC0,0x72,0x00,0xF3,0xC0,0x6E,0x40,0x7A,0x40,0x63,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x88DC, {0x21,0x80,0x21,0x40,0xFF,0xE0,0x1F,0xC0,0x29,0x40,0x39,0x40,0x6F,0xC0,0xB9,0x40,0x3F,0xC0,0x29,0x40,0x29,0x40,0x29,0xC0,0x00,0x00,}}, +{ 0x88DD, {0x51,0x00,0x53,0x00,0x7F,0xE0,0xF1,0x00,0xD7,0xC0,0x94,0x00,0x04,0x00,0xFF,0xE0,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88DF, {0x21,0x00,0x25,0x40,0x85,0x20,0x4B,0x60,0x21,0x80,0x2E,0x00,0x44,0x00,0xFF,0xE0,0x1A,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88E1, {0x20,0x00,0x2F,0xC0,0xF9,0x40,0x1F,0xC0,0x29,0x40,0x39,0x40,0x6F,0xC0,0xB1,0x00,0x2F,0xC0,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x88E8, {0x61,0x00,0x62,0x00,0xF7,0xC0,0xF5,0x40,0x2F,0xC0,0x2D,0x40,0x77,0xC0,0xF3,0x80,0xEF,0xE0,0x67,0xE0,0x60,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x88F2, {0x60,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x2F,0xC0,0x3B,0xC0,0x6B,0xC0,0xFB,0xC0,0x7D,0x40,0x69,0x40,0x69,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x88F3, {0x24,0x80,0x15,0x00,0x7F,0xE0,0x9F,0x20,0x11,0x00,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x1A,0x80,0xF3,0x00,0x1D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x88F4, {0x09,0x00,0xF9,0xE0,0x79,0xC0,0x7D,0xC0,0xF9,0xE0,0x11,0x00,0x25,0x00,0xFF,0xE0,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88F8, {0x20,0x00,0x2F,0xC0,0xF9,0x40,0x1F,0xC0,0x29,0x40,0x3F,0xC0,0x61,0x00,0xBF,0xE0,0x33,0x80,0x25,0x40,0x39,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x88F9, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x35,0x80,0x3F,0x80,0xFF,0xE0,0x45,0xC0,0x9F,0x60,0xF3,0x00,0x1D,0x80,0x20,0x60,0x00,0x00,}}, +{ 0x88FC, {0x60,0x00,0x67,0xC0,0xF7,0xC0,0xF7,0xC0,0x2F,0xC0,0x2A,0x00,0x73,0xE0,0xF5,0xA0,0x6A,0xA0,0x64,0xA0,0x61,0x20,0x60,0xC0,0x00,0x00,}}, +{ 0x88FD, {0x50,0x40,0x7D,0x40,0x91,0x40,0xFF,0x40,0x53,0x40,0x5C,0xC0,0x04,0x00,0xFF,0xE0,0x18,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x88FE, {0x20,0x00,0x27,0xC0,0xF4,0x40,0x17,0xC0,0x24,0x80,0x2F,0xE0,0x74,0x80,0xB4,0x80,0x2B,0xC0,0x2A,0x40,0x33,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x8902, {0x62,0x80,0x62,0x80,0xFF,0x80,0xF2,0x80,0x2F,0xC0,0x32,0xA0,0x62,0xA0,0xFF,0x80,0xF2,0x80,0x63,0x80,0x6E,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8904, {0x61,0x00,0x6F,0xE0,0xF7,0xC0,0xF7,0xC0,0x2F,0xE0,0x31,0x40,0x67,0xC0,0xF3,0x00,0xFF,0xE0,0x67,0x80,0x63,0x80,0x6E,0x40,0x00,0x00,}}, +{ 0x8907, {0x24,0x00,0x24,0x00,0xFF,0xE0,0x17,0x80,0x2F,0x80,0x2C,0x80,0x77,0x80,0xB2,0x00,0x2F,0x80,0x2B,0x00,0x26,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x890A, {0x30,0x60,0x37,0x80,0x7F,0xE0,0x7F,0xE0,0x17,0xE0,0x1C,0x00,0x37,0xE0,0x7D,0xE0,0x7F,0xE0,0x3F,0xE0,0x35,0xE0,0x34,0x60,0x00,0x00,}}, +{ 0x890C, {0x60,0x00,0x6F,0xE0,0xFF,0xE0,0xFF,0xE0,0x2F,0xC0,0x35,0x40,0x67,0xC0,0xF7,0x40,0xF7,0xC0,0x6F,0xE0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x8910, {0x10,0x00,0x13,0xC0,0x7A,0x40,0x0B,0xC0,0x17,0xC0,0x19,0x00,0x33,0xE0,0x5E,0xA0,0x1B,0x20,0x12,0x20,0x11,0xA0,0x10,0xC0,0x00,0x00,}}, +{ 0x8912, {0x04,0x00,0xFF,0xE0,0x27,0x80,0x27,0x80,0xFF,0xE0,0x65,0x80,0x79,0x60,0x05,0x00,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x20,0x60,0x00,0x00,}}, +{ 0x8913, {0x62,0x00,0x63,0xC0,0xF7,0x40,0xF5,0x40,0x2D,0xC0,0x35,0x80,0x67,0xE0,0xF5,0x80,0x77,0xC0,0x65,0xA0,0x65,0x80,0x65,0x80,0x00,0x00,}}, +{ 0x891D, {0x62,0x40,0x69,0x40,0xF5,0x80,0xF7,0xC0,0x2F,0x40,0x37,0xC0,0x65,0x40,0xF7,0xC0,0xFF,0xE0,0x6F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x891E, {0x60,0x00,0x67,0x80,0xF5,0x80,0xF7,0x80,0x2C,0x80,0x37,0x80,0x60,0x00,0xFF,0xC0,0x6B,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8925, {0x60,0x00,0x6F,0xE0,0xFB,0xC0,0xFF,0xE0,0x2B,0xC0,0x3B,0x80,0x6E,0x60,0xF8,0xC0,0x7F,0xE0,0x7A,0x80,0x70,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x892A, {0x68,0x00,0x65,0xC0,0xF5,0x40,0xF9,0xC0,0x25,0x40,0x35,0xE0,0x61,0x20,0xFD,0xC0,0x75,0xE0,0x67,0xA0,0x6B,0x00,0x71,0xE0,0x00,0x00,}}, +{ 0x892B, {0x60,0xC0,0x6F,0x80,0xF9,0xC0,0xFB,0xE0,0x2B,0xC0,0x3B,0xA0,0x6A,0xE0,0xFB,0x80,0xEF,0x80,0x75,0xA0,0x7A,0xA0,0x64,0x60,0x00,0x00,}}, +{ 0x8936, {0x60,0x00,0x6F,0xE0,0xF7,0x60,0xFF,0xE0,0x27,0xE0,0x39,0xA0,0x62,0x00,0xF7,0xC0,0xF7,0xC0,0x67,0xC0,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x8938, {0x61,0x00,0x67,0xC0,0xFF,0xE0,0xFF,0xE0,0x27,0xC0,0x37,0xC0,0x65,0x40,0xF7,0xC0,0x7F,0xE0,0x67,0x80,0x63,0x80,0x6E,0x40,0x00,0x00,}}, +{ 0x893B, {0x04,0x00,0xFF,0xE0,0x7B,0x80,0xFF,0x80,0xF7,0x80,0xAD,0x80,0x79,0xA0,0x3A,0xE0,0x4E,0x60,0xFB,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x8941, {0x41,0x80,0x5D,0xC0,0xE7,0xE0,0xFF,0xE0,0x73,0xC0,0x73,0xC0,0x7F,0xC0,0xF7,0xC0,0x47,0xC0,0x45,0xC0,0x47,0xE0,0x58,0x20,0x00,0x00,}}, +{ 0x8943, {0x04,0x00,0xFF,0xE0,0x73,0xC0,0x63,0xC0,0x77,0xE0,0x41,0x80,0x77,0xE0,0x44,0x80,0x1C,0x80,0xF3,0x00,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x8944, {0x04,0x00,0xFF,0xE0,0x7B,0x80,0x7B,0x80,0x13,0x00,0x7F,0xC0,0x3F,0x80,0x13,0x00,0xFF,0xE0,0xFB,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x894C, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFC,0xC0,0x2F,0x80,0x35,0x80,0x67,0x80,0xF7,0x80,0xF7,0x80,0x7F,0xE0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x894D, {0x62,0x80,0x63,0x80,0xFF,0xE0,0xFF,0xC0,0x2F,0xC0,0x35,0x80,0x67,0xE0,0xF3,0x00,0x7F,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x8956, {0x41,0x00,0x42,0x00,0xFF,0xC0,0x1F,0xC0,0x2F,0xC0,0x7B,0xC0,0x6D,0xC0,0xBB,0x40,0xBF,0xE0,0x23,0x00,0x2C,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x895E, {0x01,0x80,0x7F,0xE0,0x7A,0x40,0x7F,0xE0,0x79,0x80,0xEF,0xE0,0x79,0x80,0x65,0x80,0xFF,0xE0,0xFB,0x80,0x1D,0x80,0x60,0x60,0x00,0x00,}}, +{ 0x895F, {0x22,0x80,0x22,0x80,0xFF,0xE0,0x17,0xC0,0x2B,0xA0,0x72,0x80,0x67,0xC0,0xB0,0x00,0x3F,0xE0,0x25,0x40,0x29,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x8960, {0x69,0x40,0x67,0xC0,0xFF,0xE0,0xFF,0xC0,0x2C,0x80,0x37,0x80,0x60,0x00,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x6F,0xC0,0x68,0x40,0x00,0x00,}}, +{ 0x8964, {0x60,0x80,0x6F,0x80,0xFE,0xE0,0xFF,0xE0,0x2F,0x00,0x3B,0xC0,0x6F,0x00,0xF0,0x00,0x7F,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8966, {0x60,0x00,0x6F,0xC0,0xFF,0xE0,0xFF,0xE0,0x2D,0xC0,0x3D,0xC0,0x6F,0xC0,0xF2,0x00,0xFF,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x00,0x00,}}, +{ 0x896A, {0x63,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x2F,0xC0,0x31,0xC0,0x6F,0xE0,0xF9,0xC0,0xFE,0xC0,0x68,0xA0,0x73,0x60,0x60,0x20,0x00,0x00,}}, +{ 0x896D, {0x64,0x00,0x65,0xE0,0xFF,0x80,0xFF,0xC0,0x25,0xC0,0x3F,0xC0,0x61,0xC0,0xFF,0xC0,0xFB,0xC0,0x6E,0xC0,0x6A,0xA0,0x61,0x20,0x00,0x00,}}, +{ 0x896F, {0x60,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x3B,0xC0,0x3F,0xC0,0x65,0xC0,0xFF,0xC0,0xFF,0x80,0x7D,0xA0,0x65,0xA0,0x66,0x60,0x00,0x00,}}, +{ 0x8972, {0x22,0x00,0xFB,0xE0,0x53,0xC0,0xFC,0x40,0x7B,0xC0,0x4B,0x80,0x7B,0xA0,0x4D,0xE0,0xFF,0xE0,0x32,0xC0,0xD9,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x8974, {0x40,0x00,0x5F,0xE0,0xFF,0xE0,0xFF,0xE0,0x7F,0xE0,0x71,0x20,0x7F,0xE0,0xF7,0xA0,0x57,0xA0,0x57,0xA0,0x5F,0xE0,0x51,0x60,0x00,0x00,}}, +{ 0x8977, {0x62,0x00,0x67,0xC0,0xFF,0xC0,0xFF,0xC0,0x2B,0xC0,0x3F,0xE0,0x65,0x80,0xFB,0x40,0xF7,0xA0,0x6F,0xC0,0x63,0x00,0x63,0x00,0x00,0x00,}}, +{ 0x897E, {0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x53,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x50,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,}}, +{ 0x897F, {0x00,0x00,0xFF,0xE0,0x12,0x00,0x12,0x00,0x7F,0xC0,0x52,0x40,0x52,0x40,0x62,0xC0,0x63,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x8981, {0x00,0x00,0xFF,0xE0,0x0A,0x00,0x3F,0x80,0x2A,0x80,0x3F,0x80,0x08,0x00,0xFF,0xE0,0x11,0x00,0x3E,0x00,0x0D,0x80,0x70,0x40,0x00,0x00,}}, +{ 0x8983, {0x00,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x5F,0x40,0x3F,0x00,0x21,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8986, {0x00,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x24,0x00,0x47,0xE0,0xAF,0x80,0x77,0x80,0xA3,0x00,0x2F,0x80,0x23,0x80,0x3C,0xE0,0x00,0x00,}}, +{ 0x8987, {0x00,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0x80,0x50,0x00,0xFF,0xC0,0x72,0x40,0x7B,0xC0,0x7A,0x40,0xFF,0xC0,0x34,0x40,0x28,0xC0,0x00,0x00,}}, +{ 0x8988, {0x00,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x33,0x00,0x79,0x00,0x4B,0xE0,0x7A,0x80,0xFF,0x80,0xF9,0x80,0x49,0x80,0xB6,0x60,0x00,0x00,}}, +{ 0x898A, {0x00,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x53,0xE0,0xFF,0x80,0x73,0xC0,0x7B,0xC0,0x7B,0xE0,0xFF,0xE0,0x37,0xE0,0x28,0xC0,0x00,0x00,}}, +{ 0x898B, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x0A,0x00,0x12,0x20,0x22,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x898F, {0x20,0x00,0x27,0xC0,0x7C,0x40,0x27,0xC0,0x27,0xC0,0xFC,0x40,0x27,0xC0,0x23,0x40,0x37,0x00,0x55,0x20,0x49,0x20,0x90,0xE0,0x00,0x00,}}, +{ 0x8993, {0x01,0xC0,0x7F,0xC0,0x44,0x60,0x9F,0x20,0x31,0x80,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0x80,0x1F,0x20,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x8996, {0x20,0x00,0x27,0xC0,0xF4,0x40,0x17,0xC0,0x24,0x40,0x27,0xC0,0x64,0x40,0x77,0xC0,0xB2,0x80,0x24,0xA0,0x28,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x8997, {0x00,0x00,0xFB,0xC0,0x0A,0x40,0xFB,0xC0,0x0A,0x40,0x6B,0xC0,0x6A,0x40,0x6B,0xC0,0x69,0x80,0x09,0xA0,0x0A,0xA0,0x34,0x60,0x00,0x00,}}, +{ 0x8998, {0x60,0x00,0x67,0x80,0x7C,0x80,0x7F,0x80,0x64,0x80,0xF7,0x80,0x94,0x80,0x97,0x80,0xF3,0x80,0xF5,0xA0,0x09,0xA0,0x30,0xE0,0x00,0x00,}}, +{ 0x899A, {0x28,0x80,0x15,0x00,0x7F,0xE0,0xBF,0xA0,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x0A,0x20,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x89A1, {0x00,0x00,0x03,0xC0,0xFE,0x40,0x2B,0xC0,0x6A,0x40,0x6B,0xC0,0x6A,0x40,0xFF,0xC0,0xB5,0x80,0x3A,0xA0,0xE4,0xA0,0x18,0x60,0x00,0x00,}}, +{ 0x89A6, {0x38,0x00,0x19,0xC0,0x27,0x40,0x7F,0xC0,0x83,0x40,0x6B,0xC0,0x6B,0x40,0x7B,0xC0,0x75,0x80,0x7F,0xA0,0x6B,0xA0,0x6A,0x60,0x00,0x00,}}, +{ 0x89A7, {0x01,0x00,0xFB,0xE0,0xF4,0x00,0xF1,0xC0,0xF8,0x00,0xBF,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1A,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x89A9, {0x20,0x00,0x37,0xC0,0x7E,0x40,0x2B,0xC0,0xFE,0x40,0x33,0xC0,0x6A,0x40,0xFB,0xC0,0xF9,0x80,0x7A,0xA0,0x7C,0xA0,0x68,0x60,0x00,0x00,}}, +{ 0x89AA, {0x20,0x00,0x23,0xC0,0xFA,0x40,0x53,0xC0,0xFA,0x40,0x23,0xC0,0xFE,0x40,0x33,0xC0,0x69,0x80,0xA2,0xA0,0x24,0xA0,0x28,0xE0,0x00,0x00,}}, +{ 0x89AC, {0x20,0x00,0x6B,0xC0,0x7A,0x40,0x7B,0xC0,0xFE,0x40,0x03,0xC0,0x7A,0x40,0x4B,0xC0,0x79,0x80,0x59,0xA0,0x7A,0xA0,0xC4,0x60,0x00,0x00,}}, +{ 0x89AF, {0x70,0x00,0xFF,0xC0,0x7A,0x40,0x7B,0xC0,0xFE,0x40,0x23,0xC0,0x7A,0x40,0x7B,0xC0,0x79,0x80,0xFD,0xA0,0xCA,0xA0,0x5C,0x60,0x00,0x00,}}, +{ 0x89B2, {0x70,0x00,0xFF,0xC0,0x72,0x40,0x33,0xC0,0x7A,0x40,0x6B,0xC0,0x7A,0x40,0x33,0xC0,0x79,0x80,0x79,0xA0,0x32,0xA0,0xE4,0x60,0x00,0x00,}}, +{ 0x89B3, {0x40,0x00,0x43,0xC0,0x7A,0x40,0xA3,0xC0,0xFE,0x40,0x53,0xC0,0x7A,0x40,0xF3,0xC0,0x79,0x80,0x72,0xA0,0x7C,0xA0,0x48,0x60,0x00,0x00,}}, +{ 0x89BA, {0x12,0x00,0x6F,0x80,0x6A,0x80,0x65,0x80,0x6A,0x80,0x7F,0xE0,0x7F,0xC0,0xB1,0x80,0x3F,0x80,0x3F,0xA0,0x1B,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x89BD, {0x02,0x00,0xFB,0xE0,0xFF,0xC0,0xFF,0xE0,0xB7,0xE0,0xFF,0xE0,0xBF,0x80,0x31,0x80,0x3F,0x80,0x3F,0xA0,0x1A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x89BF, {0x20,0x00,0xFD,0xC0,0xF9,0x40,0xFD,0xC0,0xFD,0x40,0x79,0xC0,0x49,0x40,0x79,0xC0,0x79,0x80,0x79,0xA0,0x72,0xA0,0xCC,0x60,0x00,0x00,}}, +{ 0x89C0, {0x70,0x00,0xFD,0xC0,0xF9,0x40,0xFD,0xC0,0xFD,0x40,0x71,0xC0,0x7D,0x40,0xD1,0xC0,0x7D,0x80,0x79,0xA0,0x7E,0xA0,0x44,0x60,0x00,0x00,}}, +{ 0x89D2, {0x04,0x00,0x0F,0x80,0x31,0x00,0x1F,0xC0,0x12,0x40,0x1F,0xC0,0x12,0x40,0x12,0x40,0x1F,0xC0,0x10,0x40,0x20,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x89DA, {0x60,0x40,0x79,0x80,0x97,0x80,0xFD,0x80,0x7D,0x80,0x6D,0x80,0x7D,0x80,0x7D,0x80,0x7D,0xC0,0x4D,0xC0,0x4E,0xE0,0x98,0x20,0x00,0x00,}}, +{ 0x89DC, {0x22,0x00,0x7E,0xC0,0x7F,0x20,0xFF,0xE0,0x1F,0x00,0x22,0x00,0xFF,0x80,0x34,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x89DD, {0x60,0x40,0x78,0x80,0x93,0x80,0xFB,0x80,0x7B,0xE0,0x6B,0x80,0x7A,0x80,0x7A,0x80,0x7F,0xE0,0x4C,0x60,0x4F,0xE0,0x98,0x20,0x00,0x00,}}, +{ 0x89E3, {0x40,0x00,0x77,0xC0,0xA2,0x40,0xFC,0xC0,0x6A,0x80,0x7B,0xC0,0x6C,0x80,0x78,0x80,0x4F,0xE0,0x48,0x80,0x48,0x80,0x98,0x80,0x00,0x00,}}, +{ 0x89E6, {0x20,0x80,0x78,0x80,0x93,0xC0,0x7A,0xC0,0x6A,0xC0,0x7A,0xC0,0x6A,0xC0,0x7B,0xC0,0x48,0x80,0x48,0xC0,0x48,0xA0,0x9B,0x20,0x00,0x00,}}, +{ 0x89E7, {0x62,0x40,0x79,0x40,0x97,0xE0,0xFF,0xE0,0x79,0x80,0x6B,0xC0,0x79,0x80,0x79,0x80,0x7F,0xE0,0x49,0x80,0x49,0x80,0x99,0x80,0x00,0x00,}}, +{ 0x89F4, {0x61,0x00,0x7B,0x00,0x97,0xE0,0xFF,0x80,0x7B,0x80,0x6A,0x80,0x7B,0x80,0x7F,0xE0,0x7F,0xC0,0x4F,0xC0,0x4F,0x40,0x99,0x80,0x00,0x00,}}, +{ 0x89F8, {0x30,0x00,0x3F,0xE0,0x4B,0xE0,0x7F,0xE0,0x3D,0xE0,0x36,0xA0,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x24,0xE0,0x27,0x20,0x4C,0x40,0x00,0x00,}}, +{ 0x8A00, {0x00,0x00,0x3F,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x8A02, {0x00,0x00,0x70,0x00,0xFF,0xE0,0x01,0x00,0x71,0x00,0x01,0x00,0x71,0x00,0x01,0x00,0x71,0x00,0x51,0x00,0x71,0x00,0x53,0x00,0x00,0x00,}}, +{ 0x8A03, {0x01,0x80,0x79,0x80,0xF9,0x80,0xF9,0x80,0x79,0x80,0x01,0xC0,0x79,0xA0,0x01,0xA0,0x79,0x80,0x49,0x80,0x79,0x80,0x49,0x80,0x00,0x00,}}, +{ 0x8A08, {0x01,0x00,0x71,0x00,0xF9,0x00,0x07,0xE0,0x71,0x00,0x01,0x00,0x71,0x00,0x01,0x00,0x71,0x00,0x51,0x00,0x71,0x00,0x51,0x00,0x00,0x00,}}, +{ 0x8A0A, {0x00,0x00,0x77,0x80,0xFA,0x80,0x02,0x80,0x72,0x80,0x02,0x80,0x73,0x80,0x06,0x80,0x72,0x80,0x54,0xA0,0x74,0x60,0x48,0x20,0x00,0x00,}}, +{ 0x8A0C, {0x00,0x00,0x77,0xC0,0xF9,0x00,0xF9,0x00,0x71,0x00,0x01,0x00,0x71,0x00,0x01,0x00,0x71,0x00,0x51,0x00,0x7F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x8A0E, {0x00,0x80,0x70,0x80,0xF8,0x80,0x07,0xE0,0x70,0x80,0x04,0x80,0x72,0x80,0x02,0x80,0x70,0x80,0x50,0x80,0x70,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x8A10, {0x00,0x00,0x73,0xC0,0xF9,0x80,0xF9,0x80,0x71,0x80,0x07,0xE0,0x71,0x80,0x01,0x80,0x71,0x80,0x51,0x80,0x71,0x80,0x51,0x80,0x00,0x00,}}, +{ 0x8A13, {0x00,0x20,0x3D,0x20,0x7D,0xA0,0x01,0xA0,0x3D,0xA0,0x01,0xA0,0x3D,0xA0,0x01,0xA0,0x3D,0xA0,0x26,0x20,0x3E,0x20,0x24,0x20,0x00,0x00,}}, +{ 0x8A16, {0x02,0x00,0x72,0x00,0xFB,0xE0,0xFF,0xE0,0x7F,0xC0,0x00,0x80,0x71,0x00,0x03,0x00,0x76,0x00,0x54,0x20,0x74,0x20,0x53,0xE0,0x00,0x00,}}, +{ 0x8A17, {0x00,0x40,0x71,0x80,0xFF,0x00,0x01,0x00,0x71,0x00,0x01,0xE0,0x77,0x00,0x01,0x00,0x71,0x00,0x51,0x20,0x71,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x8A18, {0x78,0x00,0x03,0xC0,0xF8,0x40,0x00,0x40,0x7B,0xC0,0x02,0x40,0x7A,0x00,0x02,0x00,0x7A,0x00,0x4A,0x20,0x7A,0x20,0x49,0xE0,0x00,0x00,}}, +{ 0x8A1B, {0x03,0x80,0x73,0x80,0xFB,0x80,0xFD,0xA0,0x75,0xC0,0x0D,0xC0,0x75,0x80,0x05,0x80,0x75,0x80,0x55,0xA0,0x75,0xA0,0x54,0xE0,0x00,0x00,}}, +{ 0x8A1D, {0x00,0x00,0x77,0xC0,0xF8,0x80,0xFA,0x80,0x72,0x80,0x0F,0xE0,0x71,0x80,0x01,0x80,0x72,0x80,0x54,0x80,0x78,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x8A1F, {0x01,0x80,0x72,0x80,0xFA,0x80,0x02,0x80,0x74,0x40,0x05,0x40,0x79,0x20,0x02,0x00,0x72,0x80,0x54,0x80,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x8A23, {0x01,0x00,0x71,0x00,0xF1,0x00,0x0F,0xC0,0x71,0x40,0x01,0x40,0x7F,0xE0,0x03,0x00,0x72,0x80,0x54,0x80,0x78,0x40,0x50,0x20,0x00,0x00,}}, +{ 0x8A25, {0x01,0x80,0x38,0x80,0x7F,0xE0,0x7F,0xE0,0x3A,0xA0,0x02,0xA0,0x3A,0xE0,0x03,0x60,0x3B,0x20,0x2A,0x20,0x3A,0x20,0x2A,0x60,0x00,0x00,}}, +{ 0x8A2A, {0x01,0x00,0x71,0x00,0xF9,0x00,0x0F,0xE0,0x71,0x00,0x01,0xC0,0x71,0x40,0x02,0x40,0x72,0x40,0x54,0x40,0x78,0x40,0x50,0x80,0x00,0x00,}}, +{ 0x8A2D, {0x00,0x00,0x73,0x80,0xFA,0x80,0x02,0xA0,0x74,0x60,0x08,0x00,0x77,0xC0,0x02,0x40,0x72,0x80,0x51,0x00,0x72,0x80,0x4C,0x60,0x00,0x00,}}, +{ 0x8A31, {0x02,0x00,0x72,0x00,0xFF,0xC0,0x05,0x00,0x79,0x00,0x01,0x00,0x7F,0xE0,0x01,0x00,0x71,0x00,0x51,0x00,0x71,0x00,0x51,0x00,0x00,0x00,}}, +{ 0x8A33, {0x00,0x00,0x73,0xC0,0xFA,0x40,0x02,0x40,0x73,0xC0,0x03,0x40,0x73,0x00,0x03,0x00,0x72,0x80,0x54,0x80,0x78,0x40,0x50,0x20,0x00,0x00,}}, +{ 0x8A34, {0x00,0x40,0x71,0x80,0xFA,0x00,0x02,0x00,0x73,0xE0,0x02,0x80,0x72,0x80,0x02,0xC0,0x74,0xA0,0x54,0x80,0x78,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x8A36, {0x00,0x00,0x77,0xE0,0xF8,0x40,0xFF,0x40,0x75,0xC0,0x05,0xC0,0x75,0xC0,0x07,0xC0,0x74,0x40,0x50,0x40,0x70,0x40,0x50,0xC0,0x00,0x00,}}, +{ 0x8A3A, {0x01,0x00,0x71,0x00,0xFB,0x80,0x02,0x80,0x74,0xC0,0x09,0x20,0x76,0x80,0x01,0x00,0x76,0x20,0x50,0x40,0x71,0x80,0x4E,0x00,0x00,0x00,}}, +{ 0x8A3B, {0x02,0x00,0x71,0x00,0xFF,0xE0,0x01,0x00,0x71,0x00,0x01,0x00,0x7F,0xC0,0x01,0x00,0x71,0x00,0x51,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x8A3C, {0x00,0x00,0x77,0xE0,0xF8,0x80,0x02,0x80,0x72,0x80,0x02,0xC0,0x72,0x80,0x02,0x80,0x72,0x80,0x52,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x8A41, {0x01,0x80,0x71,0x80,0xFF,0xE0,0xFF,0xE0,0x71,0x80,0x01,0x80,0x73,0xC0,0x02,0x40,0x72,0x40,0x52,0x40,0x73,0xC0,0x52,0x40,0x00,0x00,}}, +{ 0x8A46, {0x00,0x40,0x71,0x80,0xFF,0x80,0xFD,0x80,0x77,0xE0,0x05,0x80,0x74,0x80,0x04,0x80,0x7E,0x80,0x58,0x60,0x7F,0x60,0x50,0x20,0x00,0x00,}}, +{ 0x8A48, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x00,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x8A50, {0x02,0x00,0x72,0x00,0xFB,0xE0,0x05,0x00,0x75,0x00,0x09,0xE0,0x71,0x00,0x01,0x00,0x71,0xE0,0x51,0x00,0x71,0x00,0x51,0x00,0x00,0x00,}}, +{ 0x8A51, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x0F,0xE0,0x7A,0x00,0x02,0x00,0x72,0xC0,0x03,0x00,0x72,0x00,0x52,0x20,0x72,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x8A52, {0x01,0x80,0x71,0x80,0xF9,0x80,0xF9,0x40,0x72,0x40,0x0F,0xA0,0x70,0x20,0x03,0xC0,0x72,0x40,0x52,0x40,0x73,0xC0,0x52,0x40,0x00,0x00,}}, +{ 0x8A54, {0x00,0x00,0x3B,0xE0,0x7C,0xA0,0x00,0xA0,0x39,0x20,0x02,0x40,0x3C,0x00,0x03,0xE0,0x3A,0x20,0x2A,0x20,0x3B,0xE0,0x22,0x20,0x00,0x00,}}, +{ 0x8A55, {0x00,0x00,0x77,0xE0,0xF8,0x80,0x04,0xA0,0x72,0xC0,0x00,0x80,0x7F,0xE0,0x00,0x80,0x70,0x80,0x50,0x80,0x70,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x8A5B, {0x00,0x00,0x73,0x80,0xFA,0x80,0xFA,0x80,0x73,0x80,0x02,0x80,0x72,0x80,0x03,0x80,0x72,0x80,0x52,0x80,0x7F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x8A5E, {0x00,0x00,0x3B,0xE0,0x7C,0x20,0x03,0xE0,0x38,0x20,0x03,0xA0,0x3A,0xA0,0x02,0xA0,0x3B,0xA0,0x28,0x20,0x38,0x20,0x20,0x40,0x00,0x00,}}, +{ 0x8A60, {0x01,0x00,0x70,0x80,0x00,0x80,0xFB,0xA0,0x70,0xA0,0x07,0xC0,0x71,0xC0,0x02,0xC0,0x74,0xC0,0x58,0xA0,0x70,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x8A62, {0x01,0x00,0x39,0x00,0x7D,0xE0,0x7F,0xE0,0x3F,0xA0,0x02,0xE0,0x3B,0xE0,0x02,0xE0,0x3B,0xE0,0x28,0x20,0x38,0x20,0x28,0x40,0x00,0x00,}}, +{ 0x8A63, {0x02,0x00,0x72,0xC0,0xFB,0x00,0x02,0x20,0x73,0xE0,0x00,0x00,0x73,0xC0,0x02,0x40,0x73,0xC0,0x52,0x40,0x73,0xC0,0x52,0x40,0x00,0x00,}}, +{ 0x8A66, {0x01,0x80,0x71,0x40,0xFF,0xE0,0x01,0x00,0x71,0x00,0x0F,0x80,0x72,0x80,0x02,0x80,0x73,0x80,0x5C,0xA0,0x70,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x8A69, {0x01,0x00,0x71,0x00,0xFF,0xC0,0x01,0x00,0x7F,0xE0,0x00,0x80,0x70,0x80,0x0F,0xE0,0x74,0x80,0x52,0x80,0x70,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x8A6B, {0x00,0x80,0x70,0x80,0xFF,0xE0,0x04,0x40,0x77,0x80,0x01,0x00,0x71,0xE0,0x0F,0x00,0x71,0x00,0x51,0x20,0x71,0x20,0x51,0xE0,0x00,0x00,}}, +{ 0x8A6C, {0x00,0xC0,0x77,0x00,0xFC,0x00,0xFF,0xE0,0x74,0x00,0x04,0x00,0x77,0xC0,0x06,0x40,0x7E,0x40,0x5A,0x40,0x73,0xC0,0x52,0x40,0x00,0x00,}}, +{ 0x8A6D, {0x01,0x00,0x73,0xC0,0xFE,0x80,0xFF,0xE0,0x74,0x00,0x05,0xC0,0x75,0x40,0x05,0x40,0x75,0x80,0x59,0x20,0x79,0x20,0x51,0xE0,0x00,0x00,}}, +{ 0x8A6E, {0x01,0x00,0x71,0x00,0xFA,0x80,0x04,0x80,0x78,0x40,0x0F,0xE0,0x71,0x00,0x01,0x00,0x77,0xC0,0x51,0x00,0x7F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x8A70, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x01,0x00,0x71,0x00,0x07,0xC0,0x70,0x00,0x07,0xC0,0x74,0x40,0x54,0x40,0x77,0xC0,0x54,0x40,0x00,0x00,}}, +{ 0x8A71, {0x00,0x40,0x71,0x80,0xFF,0x00,0x01,0x00,0x7F,0xE0,0x01,0x00,0x71,0x00,0x07,0xC0,0x74,0x40,0x54,0x40,0x77,0xC0,0x54,0x40,0x00,0x00,}}, +{ 0x8A72, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x01,0x00,0x76,0x80,0x02,0x80,0x71,0x40,0x03,0x40,0x76,0x80,0x51,0x40,0x76,0x20,0x58,0x20,0x00,0x00,}}, +{ 0x8A73, {0x04,0x80,0x72,0x80,0xFF,0xE0,0x01,0x00,0x71,0x00,0x0F,0xC0,0x71,0x00,0x01,0x00,0x7F,0xE0,0x51,0x00,0x71,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x8A7C, {0x01,0x00,0x73,0x00,0xFF,0xE0,0xFB,0x00,0x73,0xA0,0x05,0xA0,0x7B,0xC0,0x03,0x80,0x75,0x80,0x51,0x80,0x72,0x40,0x54,0x20,0x00,0x00,}}, +{ 0x8A82, {0x03,0x80,0x63,0x80,0xFB,0x80,0xFF,0xC0,0x67,0xC0,0x03,0x80,0x67,0xC0,0x1B,0xA0,0x67,0xA0,0x65,0xA0,0x69,0xA0,0x70,0xE0,0x00,0x00,}}, +{ 0x8A84, {0x01,0x00,0x73,0xC0,0xFF,0x00,0xF7,0xC0,0x73,0x00,0x0F,0xE0,0x73,0x80,0x03,0x80,0x7D,0x40,0x59,0x20,0x71,0x00,0x51,0x00,0x00,0x00,}}, +{ 0x8A85, {0x01,0x80,0x73,0x80,0xFB,0xC0,0xFF,0xC0,0x79,0x80,0x0F,0xE0,0x71,0x80,0x03,0xC0,0x77,0xC0,0x59,0xA0,0x71,0x80,0x51,0x80,0x00,0x00,}}, +{ 0x8A87, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x04,0x80,0x7B,0xC0,0x00,0x20,0x77,0xC0,0x02,0x00,0x77,0xC0,0x54,0x40,0x70,0x40,0x41,0x80,0x00,0x00,}}, +{ 0x8A89, {0x28,0x80,0x15,0x00,0xFF,0xE0,0x7F,0x80,0x7F,0xC0,0x80,0x20,0x1F,0x00,0x1F,0x00,0x00,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8A8C, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x01,0x00,0x71,0x00,0x0F,0xC0,0x70,0x80,0x02,0xC0,0x76,0x60,0x5A,0x20,0x72,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x8A8D, {0x00,0x00,0x77,0xC0,0xFD,0x40,0x03,0x40,0x73,0x40,0x04,0x80,0x71,0x00,0x03,0x80,0x76,0xC0,0x5A,0x20,0x72,0x80,0x51,0x80,0x00,0x00,}}, +{ 0x8A91, {0x02,0x00,0x63,0xE0,0xFE,0x80,0xF4,0x80,0x7C,0x80,0x03,0xE0,0x66,0x80,0x06,0x80,0x7A,0x80,0x72,0x80,0x63,0xE0,0x6C,0x00,0x00,0x00,}}, +{ 0x8A93, {0x20,0xC0,0xFB,0x00,0x3B,0xE0,0xE2,0x80,0x60,0x80,0x1F,0x00,0xFF,0xE0,0x1F,0x00,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8A95, {0x00,0x00,0x7C,0x60,0xF7,0x80,0x18,0x80,0x69,0x80,0x1D,0xE0,0x65,0x80,0x15,0x80,0x6B,0xE0,0x6C,0x00,0x72,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x8A98, {0x00,0xC0,0x77,0x00,0xF1,0x00,0x0F,0xE0,0x75,0x80,0x09,0x40,0x77,0xA0,0x02,0x80,0x72,0xC0,0x54,0x40,0x74,0x40,0x48,0x80,0x00,0x00,}}, +{ 0x8A9A, {0x01,0x80,0x73,0xC0,0xFF,0xE0,0xF9,0xA0,0x77,0xC0,0x04,0x40,0x77,0xC0,0x04,0x40,0x77,0xC0,0x54,0x40,0x74,0x40,0x54,0xC0,0x00,0x00,}}, +{ 0x8A9E, {0x00,0x00,0x77,0xC0,0xF9,0x00,0x07,0x80,0x72,0x80,0x02,0x80,0x7F,0xE0,0x00,0x00,0x77,0xC0,0x54,0x40,0x77,0xC0,0x54,0x40,0x00,0x00,}}, +{ 0x8AA0, {0x01,0x00,0x71,0x40,0xFF,0xE0,0x05,0x20,0x75,0x40,0x07,0x40,0x75,0xC0,0x05,0x80,0x75,0x80,0x55,0xA0,0x75,0x60,0x5A,0x20,0x00,0x00,}}, +{ 0x8AA1, {0x01,0xC0,0x61,0xA0,0xFF,0xE0,0xFF,0xE0,0x6B,0xC0,0x0B,0xC0,0x7F,0xC0,0x0A,0xC0,0x6A,0x80,0x6A,0xE0,0x73,0x60,0x62,0x20,0x00,0x00,}}, +{ 0x8AA3, {0x00,0x00,0x6F,0xE0,0xF1,0x00,0xF5,0x80,0x65,0x80,0x05,0x80,0x65,0x80,0x0B,0xC0,0x7B,0x20,0x71,0x00,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8AA4, {0x00,0x00,0x71,0xC0,0xFD,0x40,0x05,0xC0,0x75,0x40,0x04,0x00,0x77,0xC0,0x00,0x40,0x7F,0xE0,0x51,0x40,0x72,0x20,0x54,0x20,0x00,0x00,}}, +{ 0x8AA5, {0x01,0x80,0x73,0x80,0xFB,0xE0,0xFF,0xE0,0x79,0x80,0x0F,0xE0,0x71,0x80,0x03,0xC0,0x72,0x40,0x52,0x40,0x73,0xC0,0x52,0x40,0x00,0x00,}}, +{ 0x8AA6, {0x00,0x00,0x3B,0xE0,0x7C,0xC0,0x7F,0xE0,0x3B,0xA0,0x02,0xA0,0x3B,0xE0,0x02,0xA0,0x3B,0xE0,0x2B,0xE0,0x3A,0xA0,0x2A,0xE0,0x00,0x00,}}, +{ 0x8AA8, {0x02,0x00,0x72,0x00,0xFF,0xE0,0xFF,0xC0,0x73,0x40,0x03,0x40,0x7F,0xE0,0x05,0x40,0x75,0xC0,0x5F,0xE0,0x70,0x40,0x50,0x80,0x00,0x00,}}, +{ 0x8AAC, {0x04,0x40,0x72,0x80,0xFF,0xC0,0x04,0x40,0x74,0x40,0x07,0xC0,0x75,0xC0,0x01,0x80,0x72,0x80,0x52,0xA0,0x74,0xA0,0x58,0xE0,0x00,0x00,}}, +{ 0x8AAD, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x07,0xC0,0x70,0x00,0x07,0xE0,0x74,0x40,0x0A,0x80,0x72,0x80,0x52,0xA0,0x74,0xA0,0x58,0xE0,0x00,0x00,}}, +{ 0x8AB0, {0x02,0x80,0x72,0x80,0xFF,0xE0,0x05,0x00,0x7D,0x00,0x07,0xC0,0x75,0x00,0x05,0x00,0x77,0xC0,0x55,0x00,0x77,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x8AB2, {0x00,0x00,0x77,0xC0,0x05,0x40,0xFF,0xC0,0x75,0x40,0x07,0xC0,0x71,0x00,0x0F,0xE0,0x77,0x80,0x59,0x40,0x71,0x20,0x51,0x00,0x00,0x00,}}, +{ 0x8AB9, {0x02,0x80,0x72,0x80,0xF2,0x80,0x0E,0xE0,0x72,0x80,0x0E,0xE0,0x72,0x80,0x02,0x80,0x7E,0xE0,0x52,0x80,0x74,0x80,0x58,0x80,0x00,0x00,}}, +{ 0x8ABC, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x08,0x40,0x77,0x80,0x04,0x80,0x77,0x80,0x04,0x80,0x77,0x80,0x54,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x8ABF, {0x00,0x00,0x3B,0xE0,0x7E,0xA0,0x03,0xE0,0x3A,0xA0,0x03,0xE0,0x3A,0x20,0x03,0xE0,0x3B,0x60,0x2D,0xE0,0x3C,0x20,0x28,0x60,0x00,0x00,}}, +{ 0x8AC2, {0x00,0x80,0x38,0x80,0x7D,0xE0,0x7D,0x20,0x3A,0x60,0x00,0x80,0x3B,0x60,0x02,0x20,0x3B,0x60,0x2A,0x20,0x3B,0xE0,0x2A,0x20,0x00,0x00,}}, +{ 0x8AC4, {0x01,0x80,0x71,0x80,0xFF,0xE0,0xFB,0xC0,0x72,0x40,0x03,0xC0,0x70,0x00,0x03,0xC0,0x77,0xE0,0x57,0xE0,0x71,0x80,0x51,0x80,0x00,0x00,}}, +{ 0x8AC7, {0x00,0x80,0x70,0xC0,0xFA,0xC0,0x04,0x80,0x71,0x80,0x02,0x40,0x70,0xA0,0x02,0xA0,0x74,0xC0,0x51,0x80,0x72,0x40,0x54,0x20,0x00,0x00,}}, +{ 0x8ACB, {0x00,0x80,0x77,0xE0,0xFB,0xC0,0x00,0x80,0x7F,0xE0,0x00,0x00,0x73,0xC0,0x02,0x40,0x73,0xC0,0x53,0xC0,0x72,0x40,0x52,0xC0,0x00,0x00,}}, +{ 0x8ACC, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x07,0xC0,0x75,0x40,0x07,0xC0,0x75,0x40,0x07,0xC0,0x73,0x80,0x5D,0x40,0x71,0x20,0x51,0x00,0x00,0x00,}}, +{ 0x8ACD, {0x00,0xC0,0x77,0xC0,0xFD,0x60,0xF8,0x20,0x77,0xC0,0x01,0x40,0x7F,0xE0,0x03,0x40,0x77,0xC0,0x51,0x00,0x71,0x00,0x53,0x00,0x00,0x00,}}, +{ 0x8ACF, {0x00,0x00,0x7F,0x00,0xEB,0xC0,0x0F,0x40,0x6B,0x40,0x0B,0xC0,0x6E,0xC0,0x0A,0x80,0x6F,0x80,0x6B,0xC0,0x73,0x40,0x42,0x20,0x00,0x00,}}, +{ 0x8AD2, {0x00,0x80,0x70,0x80,0xFF,0xE0,0x03,0xC0,0x72,0x40,0x02,0x40,0x73,0xC0,0x00,0x80,0x72,0xC0,0x54,0xA0,0x78,0xA0,0x40,0x80,0x00,0x00,}}, +{ 0x8AD6, {0x01,0x00,0x61,0x00,0xF2,0x80,0x04,0x40,0x6F,0xC0,0x10,0x20,0x6F,0xC0,0x0A,0xC0,0x6F,0xC0,0x6A,0xC0,0x6A,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x8ADA, {0x01,0x80,0x71,0x80,0xFF,0xE0,0xF8,0x00,0x77,0xE0,0x01,0x80,0x73,0x80,0x03,0xC0,0x73,0x80,0x53,0x80,0x75,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x8ADB, {0x03,0x00,0x6D,0xC0,0xF9,0x40,0xFD,0x40,0x69,0x40,0x09,0x40,0x6F,0xC0,0x0B,0x40,0x63,0x80,0x64,0x80,0x68,0x40,0x70,0x20,0x00,0x00,}}, +{ 0x8ADC, {0x05,0x80,0x75,0x80,0xFF,0xE0,0x05,0x80,0x75,0x80,0x04,0x00,0x77,0xC0,0x01,0x00,0x7F,0xE0,0x53,0x80,0x7D,0x60,0x51,0x00,0x00,0x00,}}, +{ 0x8ADE, {0x00,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x08,0x00,0x6F,0xC0,0x0B,0xC0,0x7F,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x8AE0, {0x01,0x80,0x71,0x80,0xFF,0xE0,0xFF,0xE0,0x70,0x00,0x03,0xC0,0x72,0x40,0x03,0xC0,0x73,0xC0,0x53,0xC0,0x7F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x8AE1, {0x00,0x00,0x73,0x80,0xF7,0xC0,0xFF,0xE0,0x73,0x80,0x00,0x80,0x71,0x80,0x07,0xC0,0x75,0xC0,0x55,0xC0,0x7F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x8AE2, {0x00,0x00,0x77,0xE0,0xFF,0xE0,0xFF,0xE0,0x77,0xC0,0x05,0x40,0x77,0xC0,0x07,0x40,0x77,0xC0,0x5F,0xE0,0x73,0x00,0x51,0x00,0x00,0x00,}}, +{ 0x8AE4, {0x00,0x00,0x77,0xE0,0xFF,0xE0,0xFE,0x60,0x73,0xC0,0x00,0x00,0x77,0xE0,0x01,0x00,0x73,0xC0,0x50,0x40,0x70,0x40,0x50,0x80,0x00,0x00,}}, +{ 0x8AE6, {0x00,0x80,0x70,0x80,0xFF,0xE0,0x02,0x40,0x77,0xE0,0x04,0xA0,0x7B,0xC0,0x02,0xC0,0x72,0xC0,0x52,0xC0,0x70,0x80,0x50,0x80,0x00,0x00,}}, +{ 0x8AE7, {0x05,0x80,0x75,0xA0,0xFF,0xC0,0xFD,0xA0,0x77,0xA0,0x0D,0xE0,0x71,0x00,0x07,0xC0,0x77,0xC0,0x57,0xC0,0x77,0xC0,0x54,0x40,0x00,0x00,}}, +{ 0x8AEB, {0x01,0x00,0x73,0x00,0xFF,0xE0,0xFF,0xC0,0x7F,0xC0,0x0B,0xC0,0x7B,0xC0,0x0F,0xC0,0x77,0x80,0x59,0x40,0x71,0x20,0x51,0x00,0x00,0x00,}}, +{ 0x8AED, {0x01,0x00,0x63,0x00,0xF4,0x80,0x0F,0xC0,0x70,0x20,0x0E,0x40,0x6A,0xC0,0x0E,0xC0,0x6A,0xC0,0x6E,0xC0,0x6A,0x40,0x6A,0xC0,0x00,0x00,}}, +{ 0x8AEE, {0x01,0x00,0x79,0x00,0xF5,0xE0,0x03,0x40,0x76,0x80,0x09,0x80,0x72,0x40,0x0C,0x20,0x77,0xC0,0x54,0x40,0x77,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x8AF1, {0x01,0x00,0x77,0xC0,0xFF,0xE0,0xFF,0xE0,0x73,0xC0,0x02,0x40,0x73,0xC0,0x00,0xC0,0x73,0xC0,0x5F,0xE0,0x70,0xC0,0x50,0x80,0x00,0x00,}}, +{ 0x8AF3, {0x01,0x80,0x71,0x80,0xFF,0xE0,0xFA,0x40,0x71,0xC0,0x07,0xE0,0x70,0x00,0x03,0xC0,0x73,0xC0,0x53,0xC0,0x73,0xC0,0x52,0x40,0x00,0x00,}}, +{ 0x8AF7, {0x00,0x00,0x6F,0x80,0xFF,0x80,0xFE,0x80,0x6F,0x80,0x0F,0x80,0x6F,0x80,0x0F,0x80,0x6A,0x80,0x7B,0xE0,0x7C,0xE0,0x60,0x20,0x00,0x00,}}, +{ 0x8AF8, {0x01,0x00,0x71,0x20,0xF7,0xC0,0x01,0x40,0x77,0xE0,0x01,0x00,0x73,0xC0,0x06,0x40,0x7B,0xC0,0x52,0x40,0x73,0xC0,0x42,0x40,0x00,0x00,}}, +{ 0x8AFA, {0x01,0x00,0x71,0x00,0xFF,0xE0,0x02,0x40,0x77,0xE0,0x04,0x80,0x75,0x00,0x06,0x40,0x74,0x80,0x59,0x20,0x78,0xC0,0x57,0x00,0x00,0x00,}}, +{ 0x8AFE, {0x02,0x80,0x72,0x80,0xFF,0xE0,0x03,0x80,0x7F,0xE0,0x01,0x00,0x72,0x00,0x07,0xC0,0x7A,0x40,0x52,0x40,0x73,0xC0,0x42,0x40,0x00,0x00,}}, +{ 0x8B00, {0x04,0x80,0x64,0x80,0xFF,0xE0,0x07,0x80,0x74,0x80,0x07,0x80,0x71,0x00,0x0F,0xE0,0x73,0x80,0x55,0x40,0x79,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x8B01, {0x00,0x00,0x3B,0xC0,0x7E,0x40,0x03,0xC0,0x3B,0xC0,0x01,0x00,0x3B,0xE0,0x06,0xA0,0x3B,0xA0,0x2B,0xE0,0x38,0x20,0x20,0x40,0x00,0x00,}}, +{ 0x8B02, {0x00,0x00,0x77,0xE0,0x04,0xA0,0xFF,0xE0,0x77,0xE0,0x00,0x00,0x73,0xC0,0x02,0x40,0x73,0xC0,0x53,0xC0,0x72,0x40,0x52,0xC0,0x00,0x00,}}, +{ 0x8B04, {0x09,0x40,0x77,0xC0,0x53,0x80,0x5F,0xE0,0x74,0xC0,0x5B,0xC0,0x5F,0xE0,0x73,0x80,0x53,0x80,0x57,0xC0,0x54,0x40,0xB7,0xC0,0x00,0x00,}}, +{ 0x8B07, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x3F,0xC0,0xFF,0xE0,0x11,0x00,0x7F,0x80,0xFF,0x60,0x1F,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x8B0C, {0x00,0x00,0x77,0xE0,0xFB,0x40,0xFB,0xC0,0x73,0xC0,0x00,0xC0,0x77,0xE0,0x00,0x40,0x73,0xC0,0x53,0xC0,0x70,0x40,0x50,0xC0,0x00,0x00,}}, +{ 0x8B0E, {0x00,0x80,0x68,0xC0,0xF6,0xC0,0x01,0x80,0x63,0xE0,0x1C,0x80,0x65,0x80,0x06,0xC0,0x66,0xA0,0x6C,0x80,0x73,0x00,0x61,0xE0,0x00,0x00,}}, +{ 0x8B10, {0x01,0x00,0x61,0xC0,0xFA,0xC0,0xFA,0xC0,0x6A,0xA0,0x13,0xA0,0x63,0x80,0x0F,0xC0,0x6B,0xC0,0x6B,0xC0,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8B14, {0x01,0x80,0x71,0xE0,0xFF,0xE0,0xFF,0xE0,0x77,0xA0,0x04,0xE0,0x74,0x00,0x05,0xE0,0x77,0xE0,0x5F,0xE0,0x79,0xE0,0x51,0x00,0x00,0x00,}}, +{ 0x8B16, {0x00,0x00,0x77,0xC0,0xFF,0xC0,0xFF,0xC0,0x77,0xC0,0x03,0xA0,0x75,0xE0,0x0B,0x00,0x7F,0xC0,0x5F,0x80,0x73,0x80,0x5C,0x60,0x00,0x00,}}, +{ 0x8B17, {0x01,0x80,0x71,0x80,0xFF,0xE0,0xFA,0x40,0x77,0xE0,0x05,0xC0,0x79,0x80,0x07,0xE0,0x71,0xC0,0x51,0xC0,0x72,0x40,0x54,0x80,0x00,0x00,}}, +{ 0x8B19, {0x04,0x40,0x62,0x80,0xFF,0xE0,0x0F,0xC0,0x62,0xC0,0x1F,0xE0,0x62,0xC0,0x0F,0xC0,0x66,0x80,0x6A,0xC0,0x72,0xA0,0x42,0x80,0x00,0x00,}}, +{ 0x8B1A, {0x03,0x80,0x72,0xC0,0xFF,0xE0,0xFF,0x80,0x73,0x80,0x02,0x80,0x74,0x40,0x0F,0xE0,0x75,0xC0,0x55,0xC0,0x7F,0xE0,0x50,0x00,0x00,0x00,}}, +{ 0x8B1B, {0x02,0x80,0x77,0xC0,0xFA,0x80,0x0F,0xC0,0x7F,0xE0,0x01,0x00,0x77,0xC0,0x05,0x40,0x77,0xC0,0x5F,0xE0,0x74,0x40,0x54,0xC0,0x00,0x00,}}, +{ 0x8B1D, {0x01,0x20,0x72,0x20,0xFF,0xA0,0x04,0xF0,0x77,0xA0,0x07,0xA0,0x74,0xE0,0x0F,0xE0,0x73,0xA0,0x54,0xA0,0x78,0xA0,0x41,0xE0,0x00,0x00,}}, +{ 0x8B20, {0x01,0x00,0x73,0xC0,0xFF,0xC0,0xFB,0x80,0x7E,0x00,0x03,0xC0,0x75,0x80,0x0F,0xE0,0x71,0x80,0x55,0xC0,0x77,0xC0,0x54,0x40,0x00,0x00,}}, +{ 0x8B21, {0x00,0x40,0x71,0x80,0xFE,0x40,0x05,0x40,0x75,0x80,0x0F,0xC0,0x71,0x00,0x0F,0xE0,0x61,0x00,0x69,0x40,0x6F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x8B26, {0x21,0x80,0xFF,0x80,0x7F,0xE0,0x7F,0xE0,0x7B,0x80,0x4E,0xE0,0x9F,0x00,0x7F,0xC0,0x1F,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x8B28, {0x02,0x80,0x72,0xC0,0xFF,0xE0,0xFF,0xC0,0x74,0x40,0x07,0xC0,0x74,0x40,0x07,0xC0,0x7F,0xE0,0x5F,0xE0,0x74,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x8B2B, {0x01,0x00,0x73,0x00,0xFF,0xE0,0xF6,0x80,0x6F,0xC0,0x09,0x40,0x6F,0xC0,0x0B,0x40,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x8B2C, {0x00,0x00,0x7F,0xC0,0xF6,0xC0,0x0F,0xC0,0x73,0x40,0x06,0xC0,0x63,0x00,0x0D,0xC0,0x77,0x60,0x66,0x40,0x61,0xC0,0x6F,0x00,0x00,0x00,}}, +{ 0x8B33, {0x00,0x00,0x6F,0xE0,0xFB,0x80,0xFB,0x80,0x6B,0x80,0x08,0x00,0x6F,0xC0,0x0D,0xC0,0x6F,0xC0,0x6F,0xC0,0x6F,0xE0,0x68,0x00,0x00,0x00,}}, +{ 0x8B39, {0x02,0x80,0x72,0x80,0xFF,0xE0,0x0F,0xC0,0x7B,0x40,0x0F,0xC0,0x71,0x00,0x07,0xC0,0x77,0xC0,0x51,0x00,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x8B3E, {0x00,0x00,0x73,0xC0,0xFB,0xC0,0xFB,0xC0,0x73,0xC0,0x07,0xE0,0x75,0xA0,0x07,0xE0,0x77,0xC0,0x53,0x80,0x73,0x80,0x5C,0x60,0x00,0x00,}}, +{ 0x8B41, {0x03,0x80,0x73,0x80,0xFF,0xE0,0xFF,0xC0,0x67,0xC0,0x1F,0xE0,0x65,0x80,0x0F,0xC0,0x7F,0xE0,0x7F,0xE0,0x61,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x8B49, {0x07,0x40,0x63,0xC0,0xFE,0xA0,0xF7,0xE0,0x68,0x40,0x17,0xA0,0x64,0x80,0x04,0x80,0x67,0x80,0x66,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8B4C, {0x00,0xC0,0x6F,0xC0,0xF5,0x60,0xFF,0xA0,0x65,0x80,0x07,0x80,0x64,0x80,0x07,0xE0,0x6A,0x20,0x7F,0xE0,0x75,0x20,0x68,0xC0,0x00,0x00,}}, +{ 0x8B4E, {0x00,0x00,0x6F,0x80,0xF3,0x00,0xFF,0xE0,0x73,0x40,0x0D,0x80,0x63,0x00,0x0F,0xC0,0x6F,0xC0,0x6F,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x8B4F, {0x05,0x40,0x77,0x40,0xFB,0xA0,0xFF,0x60,0x6B,0xE0,0x1F,0xE0,0x61,0x80,0x0F,0xE0,0x65,0xC0,0x6E,0xE0,0x68,0xE0,0x73,0x20,0x00,0x00,}}, +{ 0x8B56, {0x02,0x40,0x6F,0xE0,0xFB,0xC0,0xFF,0xE0,0x67,0xC0,0x07,0xE0,0x69,0x60,0x17,0xC0,0x67,0xC0,0x67,0xC0,0x67,0xC0,0x64,0x40,0x00,0x00,}}, +{ 0x8B58, {0x04,0x80,0x74,0xC0,0xFF,0xA0,0x0A,0x80,0x7F,0xE0,0x00,0x80,0x6E,0xC0,0x0A,0xC0,0x6E,0x80,0x6A,0xA0,0x6F,0x60,0x42,0x20,0x00,0x00,}}, +{ 0x8B5A, {0x00,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x07,0x80,0x64,0x80,0x07,0x80,0x67,0x80,0x7F,0xE0,0x73,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x8B5B, {0x04,0x80,0x74,0xC0,0xFF,0xE0,0xFF,0xE0,0x74,0xC0,0x0A,0xC0,0x71,0x20,0x07,0x80,0x67,0x80,0x67,0x80,0x67,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x8B5C, {0x04,0x40,0x72,0x80,0xFF,0xE0,0x0A,0xC0,0x76,0xC0,0x0F,0xE0,0x70,0x00,0x07,0xC0,0x74,0x40,0x57,0xC0,0x77,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x8B5F, {0x00,0x00,0x67,0x80,0xF7,0x80,0xF7,0x80,0x6E,0xC0,0x0B,0xC0,0x6F,0xC0,0x03,0x00,0x7F,0xE0,0x67,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x8B66, {0x49,0x00,0xFF,0xE0,0x7F,0x40,0xF5,0x80,0x7B,0x60,0x1F,0x00,0xFF,0xE0,0x1F,0x00,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8B6B, {0x01,0x00,0x63,0xC0,0xFF,0xE0,0xFF,0xE0,0x6E,0x60,0x09,0x80,0x6F,0xE0,0x09,0x80,0x6B,0xC0,0x6B,0xC0,0x73,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x8B6C, {0x01,0x80,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x6F,0xE0,0xF9,0x80,0x3F,0x80,0xFF,0xE0,0x1F,0x00,0x1F,0x00,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x8B6F, {0x00,0x00,0x6F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x01,0x00,0x7F,0xE0,0x04,0xC0,0x7F,0xE0,0x6F,0xC0,0x63,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x8B70, {0x04,0x80,0x73,0x80,0xFF,0xE0,0x0F,0xC0,0x63,0x00,0x1F,0xE0,0x6F,0xC0,0x05,0xA0,0x7F,0xE0,0x5C,0xE0,0x75,0xE0,0x4C,0x20,0x00,0x00,}}, +{ 0x8B71, {0x21,0x80,0x7F,0xC0,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x24,0x80,0xFF,0xE0,0x65,0x80,0x75,0xC0,0x75,0xC0,0x75,0xC0,0x55,0x40,0x00,0x00,}}, +{ 0x8B72, {0x01,0x00,0x7F,0xE0,0xFC,0xC0,0x0F,0xE0,0x72,0x80,0x07,0xC0,0x72,0x80,0x0F,0xE0,0x73,0xC0,0x5E,0x80,0x73,0x40,0x5C,0x20,0x00,0x00,}}, +{ 0x8B74, {0x01,0x80,0x6B,0xC0,0xE7,0xC0,0xF7,0xC0,0x7F,0xE0,0x0B,0x80,0x62,0x80,0x1B,0xC0,0x6B,0xC0,0x6B,0xC0,0x76,0x00,0x63,0xE0,0x00,0x00,}}, +{ 0x8B77, {0x02,0x80,0x6F,0xE0,0xF6,0x80,0x0F,0xE0,0x77,0xC0,0x07,0xC0,0x75,0x00,0x07,0xE0,0x7F,0xC0,0x52,0x80,0x73,0x80,0x5C,0x60,0x00,0x00,}}, +{ 0x8B7D, {0x18,0x00,0x6F,0x80,0x7F,0x80,0x7B,0x80,0x6A,0x80,0xFF,0xE0,0x7F,0x80,0xFF,0xC0,0x9F,0x20,0x1F,0x00,0x31,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x8B80, {0x01,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6D,0xC0,0x0F,0xC0,0x67,0x80,0x04,0x80,0x67,0x80,0x67,0x80,0x66,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x8B83, {0x04,0x80,0x6F,0xC0,0xFF,0xC0,0x06,0xE0,0x7F,0x80,0x04,0x80,0x77,0x80,0x04,0x80,0x77,0x80,0x57,0x80,0x76,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x8B8A, {0x6E,0x80,0x7F,0xC0,0xE7,0xC0,0x6E,0xC0,0xFF,0xE0,0x6B,0xC0,0xFF,0xA0,0x08,0xC0,0x7F,0xC0,0x7E,0x00,0x3B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x8B8C, {0x03,0x80,0x73,0x80,0xFF,0xE0,0xF7,0x80,0x7C,0xA0,0x07,0xC0,0x6F,0x80,0x17,0xE0,0x66,0x60,0x6A,0x40,0x6B,0xE0,0x71,0xA0,0x00,0x00,}}, +{ 0x8B8E, {0x70,0xA0,0x7E,0xE0,0x7F,0xE0,0xFF,0xE0,0xEF,0xC0,0x71,0xE0,0x6F,0xC0,0x71,0xC0,0x7F,0xE0,0x6F,0xC0,0x7B,0xE0,0x41,0x80,0x00,0x00,}}, +{ 0x8B90, {0x52,0x80,0x7B,0xC0,0xD6,0x80,0x7B,0xC0,0x7B,0xC0,0x1F,0x00,0xFF,0xE0,0x1F,0x00,0x1F,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x8B92, {0x01,0x00,0x73,0xC0,0xFF,0x80,0xF7,0xA0,0x67,0xC0,0x07,0xA0,0x6D,0xE0,0x03,0x80,0x6F,0x80,0x67,0xA0,0x63,0xE0,0x7C,0xE0,0x00,0x00,}}, +{ 0x8B93, {0x01,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x63,0x80,0x1F,0xE0,0x6F,0xC0,0x03,0x80,0x7F,0xE0,0x7D,0xC0,0x77,0x80,0x78,0x60,0x00,0x00,}}, +{ 0x8B96, {0x0B,0x80,0x6B,0xC0,0xFF,0xC0,0xFF,0xE0,0x7B,0x80,0x1B,0xC0,0x6B,0xC0,0x1B,0xC0,0x7A,0x80,0x7F,0xE0,0x7B,0x60,0x62,0x20,0x00,0x00,}}, +{ 0x8B99, {0x03,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x02,0x80,0x67,0xE0,0x0D,0x80,0x77,0xC0,0x67,0xC0,0x67,0xE0,0x64,0x00,0x00,0x00,}}, +{ 0x8B9A, {0x0D,0x80,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6F,0xA0,0x15,0x60,0x67,0x80,0x04,0x80,0x67,0x80,0x67,0x80,0x66,0x80,0x78,0x40,0x00,0x00,}}, +{ 0x8C37, {0x11,0x00,0x10,0x80,0x20,0x80,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xDF,0xE0,0x10,0x80,0x10,0x80,0x1F,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x8C3A, {0x70,0x00,0x4B,0xC0,0x8A,0x80,0x22,0x80,0x32,0x80,0x6F,0xE0,0x49,0x80,0xF9,0x80,0x4A,0x80,0x7C,0x80,0x48,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x8C3F, {0x09,0x80,0x7B,0x40,0xA6,0x40,0x29,0x80,0x69,0x80,0x31,0x80,0x2A,0x40,0x7F,0xE0,0xFE,0x40,0xFE,0x40,0x2B,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x8C41, {0x21,0x80,0x7F,0x40,0xFA,0x40,0xFD,0x80,0x79,0x80,0x21,0x80,0xFE,0x40,0x33,0xE0,0x7A,0x40,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x00,0x00,}}, +{ 0x8C46, {0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x11,0x00,0x11,0x00,0x02,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8C48, {0x04,0x00,0x64,0x80,0x7F,0x80,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x31,0x80,0x1F,0x00,0x0A,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8C4A, {0x0A,0x00,0x7F,0xC0,0x4A,0x40,0x7F,0xC0,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8C4C, {0x01,0x80,0xF9,0x80,0x77,0xE0,0x7E,0x00,0x52,0xC0,0x53,0xC0,0x75,0xC0,0x5F,0xC0,0x73,0xC0,0x73,0xA0,0xC5,0xA0,0x08,0xE0,0x00,0x00,}}, +{ 0x8C4E, {0x00,0x00,0x7F,0xC0,0x7A,0x40,0x79,0x80,0x53,0x80,0x7C,0x60,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x1F,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8C50, {0x55,0x40,0x7F,0x40,0x5F,0x40,0x7F,0xC0,0x57,0x40,0x7F,0xC0,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x1F,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8C55, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x18,0x40,0xED,0x40,0x15,0x80,0x67,0x80,0xCA,0x80,0x32,0x40,0xE2,0x20,0x04,0x00,0x18,0x00,0x00,0x00,}}, +{ 0x8C5A, {0x00,0x00,0x7F,0xE0,0x52,0x00,0x5E,0x40,0x71,0x40,0x53,0x80,0x5D,0x80,0x72,0xC0,0x5C,0xA0,0x58,0x80,0x51,0x80,0xB3,0x00,0x00,0x00,}}, +{ 0x8C61, {0x0F,0x00,0x32,0x00,0xFF,0x80,0x24,0x80,0x3F,0x80,0x0C,0x40,0x36,0x80,0xCB,0x00,0x77,0x00,0x1A,0xC0,0x62,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x8C62, {0x24,0x80,0x34,0xC0,0x3F,0xC0,0xFF,0xE0,0x13,0x00,0x3F,0x80,0xCC,0xE0,0x76,0x80,0x7F,0x80,0x7F,0xC0,0x72,0x20,0x0C,0x00,0x00,0x00,}}, +{ 0x8C6A, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x7F,0xE0,0x40,0x40,0xFF,0xC0,0x1E,0x40,0x7F,0x80,0x3F,0x80,0x72,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x8C6B, {0x01,0x00,0xFB,0xC0,0x77,0xC0,0x27,0xC0,0xFB,0xC0,0x6B,0xE0,0x71,0xA0,0x6F,0xC0,0x67,0x80,0x67,0xC0,0x6D,0xA0,0x63,0x00,0x00,0x00,}}, +{ 0x8C6C, {0x01,0x00,0xFB,0x40,0x67,0xC0,0x69,0x80,0xAF,0xE0,0x31,0x80,0x71,0x40,0xAB,0xC0,0x6F,0xC0,0xA3,0xC0,0x23,0xC0,0x62,0x40,0x00,0x00,}}, +{ 0x8C78, {0x00,0x80,0x01,0x00,0x3F,0x20,0x3C,0xC0,0x07,0x00,0x79,0x00,0x02,0x80,0x0D,0xC0,0x33,0xC0,0x0C,0xC0,0x38,0x80,0x03,0x00,0x00,0x00,}}, +{ 0x8C79, {0x09,0x00,0x39,0x00,0x6D,0xE0,0x3A,0x20,0x74,0x20,0x19,0x20,0x28,0xA0,0x68,0xA0,0x18,0x20,0x68,0x20,0x08,0x20,0x10,0x40,0x00,0x00,}}, +{ 0x8C7A, {0x10,0x80,0x60,0x80,0xD8,0x80,0x7F,0xE0,0xE1,0xC0,0x21,0x80,0x71,0x80,0xD3,0x80,0x36,0x80,0xD8,0x80,0x10,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8C7C, {0x15,0x80,0x65,0x80,0xDD,0x80,0x75,0xA0,0xE7,0xC0,0x35,0x80,0x55,0x80,0xD5,0x80,0x35,0x80,0xD5,0xA0,0x17,0xA0,0x38,0xE0,0x00,0x00,}}, +{ 0x8C82, {0x08,0x00,0x33,0xE0,0x6C,0xA0,0x38,0xA0,0x71,0x20,0x1A,0x40,0x28,0x00,0x6B,0xE0,0x1A,0x20,0x6A,0x20,0x0B,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x8C85, {0x25,0x80,0x65,0x80,0xF5,0x80,0x6F,0xE0,0xE9,0x80,0x79,0x80,0x69,0x80,0xAB,0xC0,0x6F,0xE0,0xA9,0x80,0x29,0x80,0x69,0x80,0x00,0x00,}}, +{ 0x8C89, {0x11,0x00,0x63,0x00,0xDB,0xC0,0x76,0x40,0xEB,0x80,0x31,0x80,0x56,0x80,0xD8,0x60,0x37,0xC0,0xD4,0x40,0x17,0xC0,0x24,0x40,0x00,0x00,}}, +{ 0x8C8A, {0x10,0x00,0x67,0xE0,0xD9,0x80,0x71,0x00,0xE3,0xC0,0x32,0x40,0x52,0x40,0xD3,0xC0,0x32,0x40,0xD2,0x40,0x13,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x8C8C, {0x11,0x00,0x62,0x00,0xDF,0xC0,0x74,0x40,0xE7,0xC0,0x34,0x40,0x57,0xC0,0xD4,0xC0,0x32,0x80,0xD2,0xA0,0x14,0xA0,0x28,0xE0,0x00,0x00,}}, +{ 0x8C8D, {0x10,0x00,0x67,0xC0,0xDD,0x40,0x77,0xC0,0xE7,0x40,0x35,0x40,0x57,0xC0,0xD3,0x00,0x37,0xC0,0xD1,0x00,0x1F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x8C8E, {0x11,0x00,0x66,0xC0,0xDC,0x40,0x76,0xC0,0xE4,0x40,0x34,0x40,0x57,0xC0,0xD3,0x80,0x33,0x80,0xD3,0xA0,0x15,0xA0,0x28,0xE0,0x00,0x00,}}, +{ 0x8C94, {0x11,0x00,0x62,0x00,0xDF,0xC0,0x77,0xC0,0xE7,0xC0,0x36,0x40,0x57,0xC0,0xD5,0xA0,0x37,0xC0,0xD5,0xA0,0x17,0xA0,0x38,0xE0,0x00,0x00,}}, +{ 0x8C98, {0x12,0x80,0x6F,0xE0,0xD7,0xC0,0x77,0xC0,0xE7,0xC0,0x34,0x40,0x57,0xC0,0xD3,0x00,0x3F,0xE0,0xD3,0x00,0x14,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x8C9D, {0x00,0x00,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x05,0x00,0x18,0xC0,0x60,0x20,0x00,0x00,}}, +{ 0x8C9E, {0x02,0x00,0x03,0xE0,0x02,0x00,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x18,0xC0,0x60,0x20,0x00,0x00,}}, +{ 0x8CA0, {0x04,0x00,0x0F,0x80,0x71,0x00,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x08,0xC0,0x70,0x20,0x00,0x00,}}, +{ 0x8CA1, {0x00,0x80,0x78,0x80,0x48,0x80,0x7F,0xE0,0x48,0x80,0x79,0x80,0x49,0x80,0x4A,0x80,0x7C,0x80,0x30,0x80,0x48,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x8CA2, {0x00,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CA7, {0x06,0x00,0x13,0x00,0x7F,0xC0,0x9B,0x20,0x7F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CA8, {0x12,0x00,0x12,0x60,0x63,0x80,0xA3,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CA9, {0x00,0x00,0x7B,0xE0,0x4A,0x00,0x7B,0xC0,0x4A,0x40,0x7A,0x40,0x4A,0x40,0x4B,0x40,0x7E,0x80,0x34,0x80,0x4B,0x40,0x9C,0x20,0x00,0x00,}}, +{ 0x8CAA, {0x04,0x00,0x0A,0x00,0xFF,0xE0,0xFF,0xE0,0x03,0x00,0x3F,0x00,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CAB, {0x00,0x00,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x00,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x1F,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CAC, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CAD, {0x00,0xC0,0x7F,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0x80,0x70,0x80,0x7F,0x80,0x70,0x80,0x5F,0x80,0x5F,0x80,0x8D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x8CAE, {0x01,0x80,0x3D,0x40,0xFF,0xE0,0xFF,0xE0,0x3D,0x00,0x65,0x00,0x7D,0x00,0x65,0x80,0x7C,0x80,0x7C,0xA0,0x74,0x60,0xC2,0x20,0x00,0x00,}}, +{ 0x8CAF, {0x00,0x80,0x70,0x80,0x57,0xE0,0x78,0x20,0x50,0x00,0x77,0xE0,0x50,0x80,0x50,0x80,0x70,0x80,0x30,0x80,0x48,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x8CB0, {0x24,0x80,0xFF,0xE0,0x27,0x80,0x3F,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CB2, {0x22,0x00,0x7E,0xC0,0x7B,0x00,0xFB,0xE0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CB3, {0x01,0x80,0x03,0x40,0xFF,0xE0,0x39,0x00,0xFF,0x00,0x7D,0x00,0x65,0x00,0x7D,0x80,0x7C,0x80,0x7C,0xA0,0x74,0x60,0xC2,0x20,0x00,0x00,}}, +{ 0x8CB4, {0x04,0x00,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CB6, {0x00,0x40,0x71,0x80,0x5F,0x00,0x71,0x00,0x5F,0xC0,0x70,0x40,0x50,0x80,0x50,0x80,0x71,0x00,0x76,0x00,0x4B,0x00,0x91,0xE0,0x00,0x00,}}, +{ 0x8CB7, {0x00,0x00,0x7F,0xC0,0x51,0x40,0x7F,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CB8, {0x0A,0x80,0x12,0x40,0x6F,0xC0,0xA1,0x20,0x3F,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CBB, {0x0A,0x00,0x7F,0xC0,0x0A,0x40,0x7F,0xE0,0x92,0x20,0x3F,0xC0,0xE0,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CBC, {0x01,0x00,0x79,0x00,0x49,0x00,0x79,0xE0,0x49,0x00,0x79,0x00,0x4B,0xC0,0x4A,0x40,0x7A,0x40,0x32,0x40,0x4B,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x8CBD, {0x01,0x80,0x79,0x80,0x49,0x80,0x79,0x40,0x4A,0x40,0x7F,0xA0,0x48,0x20,0x4B,0xC0,0x7A,0x40,0x6A,0x40,0x4B,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x8CBF, {0x0C,0x00,0x39,0xE0,0x28,0xA0,0x3D,0x20,0x7F,0xE0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x1F,0xC0,0x0D,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x8CC0, {0x10,0x00,0x11,0xE0,0x7D,0x20,0x35,0xE0,0x3F,0xC0,0x50,0x40,0x1F,0xC0,0x10,0x40,0x1F,0xC0,0x10,0x40,0x0F,0xC0,0x30,0x60,0x00,0x00,}}, +{ 0x8CC1, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x00,0x21,0x80,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CC2, {0x01,0x00,0x79,0x00,0x4B,0xC0,0x7A,0x40,0x4D,0x80,0x79,0x80,0x4A,0x40,0x4F,0xE0,0x7A,0x40,0x32,0x40,0x4B,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x8CC3, {0x11,0x80,0x67,0x00,0xBF,0xE0,0x2F,0xC0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CC4, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x71,0x00,0x53,0xC0,0x72,0x40,0x57,0xC0,0x5A,0x40,0x73,0xC0,0x62,0x40,0x52,0x40,0x82,0xC0,0x00,0x00,}}, +{ 0x8CC7, {0x24,0x00,0x27,0xC0,0x1B,0x00,0x35,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CC8, {0x00,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CCA, {0x01,0x80,0x71,0x40,0x5F,0xE0,0x71,0x00,0x55,0x20,0x75,0x20,0x5F,0x40,0x54,0xC0,0x74,0x80,0x24,0xA0,0x55,0x60,0x82,0x20,0x00,0x00,}}, +{ 0x8CCD, {0x01,0x80,0x71,0x80,0x57,0xE0,0x75,0x80,0x55,0x80,0x77,0xC0,0x55,0x80,0x55,0x80,0x7D,0x80,0x79,0x80,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x8CCE, {0x01,0x80,0x71,0x40,0x5F,0xE0,0x71,0xC0,0x5F,0x00,0x71,0xE0,0x5F,0x40,0x51,0x40,0x71,0x80,0x52,0xA0,0x5C,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x8CD1, {0x00,0x00,0x77,0xE0,0x54,0x00,0x75,0xC0,0x54,0x00,0x77,0xE0,0x55,0x80,0x55,0xA0,0x75,0xC0,0x35,0x80,0x49,0xC0,0x96,0x20,0x00,0x00,}}, +{ 0x8CD3, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0x3F,0x80,0x6F,0x40,0xFF,0x00,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CDA, {0x04,0x00,0xFF,0xE0,0x3C,0xC0,0x5F,0x40,0x75,0xC0,0xFF,0xE0,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CDB, {0x20,0x80,0x7B,0xC0,0x31,0x80,0xFB,0xE0,0x7F,0xC0,0xA0,0xA0,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CDC, {0x00,0x00,0x77,0x80,0x54,0x80,0x57,0x80,0x77,0x80,0x50,0x00,0x5F,0xE0,0x74,0x00,0x57,0xC0,0x5A,0xC0,0x55,0x40,0x8A,0x80,0x00,0x00,}}, +{ 0x8CDE, {0x24,0x80,0x15,0x00,0x7F,0xE0,0x9F,0x00,0x1F,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CE0, {0x00,0x80,0x78,0x80,0x4F,0xE0,0x7A,0x40,0x49,0xC0,0x7F,0xE0,0x48,0x00,0x4B,0xC0,0x7A,0x40,0x2A,0x40,0x4B,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x8CE2, {0x00,0x00,0x7F,0xC0,0x7A,0x40,0x79,0x80,0x7E,0x60,0x7F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CE3, {0x04,0x00,0xFF,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x3F,0x80,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8CE4, {0x01,0x80,0x71,0x40,0x5F,0xE0,0x7F,0xC0,0x51,0xA0,0x76,0x60,0x51,0xA0,0x53,0xE0,0x7F,0xC0,0x71,0xA0,0x53,0x60,0x8C,0x20,0x00,0x00,}}, +{ 0x8CE6, {0x00,0x80,0x77,0xC0,0x50,0xA0,0x7F,0xE0,0x52,0x80,0x76,0x80,0x57,0x80,0x56,0x80,0x76,0x80,0x37,0xA0,0x5C,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x8CEA, {0x19,0x80,0x63,0x00,0x7F,0xE0,0x54,0x80,0xBF,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0x8CED, {0x01,0x00,0x71,0x40,0x5F,0xC0,0x71,0x80,0x5F,0xE0,0x71,0x00,0x53,0xC0,0x56,0x40,0x7B,0xC0,0x22,0x40,0x53,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x8CFA, {0x01,0x40,0x77,0xC0,0x5F,0xE0,0x7F,0xC0,0x53,0xC0,0x7F,0xE0,0x53,0xC0,0x5F,0xC0,0x77,0x80,0x7F,0xC0,0x53,0xA0,0x83,0x80,0x00,0x00,}}, +{ 0x8CFB, {0x01,0x80,0x7F,0xE0,0x57,0xC0,0x77,0xC0,0x57,0xC0,0x75,0x40,0x57,0xC0,0x55,0x40,0x7F,0xE0,0x7F,0xE0,0x52,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x8CFC, {0x02,0x80,0x7F,0xE0,0x52,0x80,0x57,0xC0,0x7F,0xE0,0x51,0x00,0x77,0xC0,0x55,0x40,0x57,0xC0,0x7F,0xE0,0x54,0x40,0x84,0xC0,0x00,0x00,}}, +{ 0x8CFD, {0x04,0x00,0x7F,0xE0,0xFF,0xE0,0xFF,0xE0,0x13,0x00,0xFF,0xE0,0x3F,0x80,0x71,0xC0,0xBF,0xE0,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8D04, {0x21,0x00,0xFB,0x00,0xFF,0x80,0xFF,0xA0,0xFB,0xA0,0x24,0x60,0x3F,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8D05, {0x21,0x00,0xFB,0x00,0xFF,0xE0,0xFE,0x80,0x79,0x80,0x5E,0x60,0xBF,0x80,0x31,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8D07, {0x23,0xA0,0xFF,0xE0,0x39,0x80,0x35,0xA0,0xCE,0x60,0x3F,0x20,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8D08, {0x02,0x20,0x39,0x40,0x2B,0xE0,0x3B,0xE0,0x2A,0xA0,0x3B,0xE0,0x28,0x00,0x2B,0xC0,0x3A,0x40,0x13,0xC0,0x2B,0xC0,0x42,0x40,0x00,0x00,}}, +{ 0x8D0A, {0x73,0x80,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0x56,0xA0,0xBF,0xE0,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x1B,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x8D0B, {0x00,0x00,0x7F,0xE0,0x4A,0x80,0x57,0xE0,0x7B,0xC0,0x53,0xE0,0x5F,0x80,0x48,0x80,0x4F,0x80,0x4F,0x80,0x8F,0x80,0x30,0x60,0x00,0x00,}}, +{ 0x8D0D, {0x01,0x00,0x73,0x80,0x5F,0xE0,0x77,0xE0,0x56,0x60,0x75,0x80,0x57,0xE0,0x55,0x80,0x7F,0xC0,0x7B,0xC0,0x53,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x8D0F, {0x04,0x00,0xFF,0xE0,0x1F,0x80,0x3F,0x80,0x60,0x80,0x7F,0x80,0x6F,0xC0,0x6B,0xC0,0x6F,0xC0,0x6F,0xE0,0x6F,0x60,0xF2,0x20,0x00,0x00,}}, +{ 0x8D10, {0x01,0x00,0x77,0xC0,0x5F,0xE0,0x7F,0xE0,0x53,0x00,0x7F,0xE0,0x57,0xC0,0x5B,0xE0,0x77,0xC0,0x75,0xC0,0x5F,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x8D13, {0x00,0xC0,0x70,0xE0,0x77,0xE0,0x77,0xA0,0x7F,0xA0,0x67,0xA0,0x7F,0xC0,0x77,0xC0,0x77,0xE0,0x7F,0xE0,0x68,0xA0,0x91,0x20,0x00,0x00,}}, +{ 0x8D14, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x73,0x40,0xCE,0x20,0x00,0x00,}}, +{ 0x8D16, {0x01,0x80,0x77,0xE0,0x57,0xE0,0x77,0xE0,0x56,0xE0,0x77,0xE0,0x53,0xC0,0x52,0x40,0x73,0xC0,0x73,0xC0,0x53,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x8D64, {0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x09,0x00,0x29,0x80,0x49,0x40,0x89,0x20,0x11,0x00,0x11,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x8D66, {0x21,0x00,0x21,0x00,0x79,0xE0,0x22,0x40,0xFC,0x40,0x51,0x40,0x59,0x40,0xD4,0x80,0xD4,0x80,0x51,0x80,0x52,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x8D67, {0x20,0x00,0x33,0xC0,0x7A,0x40,0x23,0xC0,0xFE,0x00,0x73,0xC0,0x7B,0x40,0x7B,0xC0,0xF6,0x80,0x76,0x80,0x53,0x40,0xB2,0x20,0x00,0x00,}}, +{ 0x8D6B, {0x20,0x80,0x20,0x80,0x7B,0xC0,0x20,0x80,0xFF,0xE0,0x51,0x80,0x5B,0x80,0xD7,0xC0,0xDD,0xA0,0x5A,0x80,0x52,0x80,0xB4,0x80,0x00,0x00,}}, +{ 0x8D6D, {0x21,0x00,0x33,0x40,0x7F,0xC0,0x21,0x80,0xFF,0xE0,0x71,0x80,0x7A,0x40,0x7F,0xC0,0xF7,0xC0,0x77,0xC0,0x53,0xC0,0xB2,0x40,0x00,0x00,}}, +{ 0x8D70, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x24,0x00,0x27,0xC0,0x24,0x00,0x34,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x8D71, {0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x21,0x80,0x11,0x00,0x13,0x00,0x66,0x00,0x78,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x8D73, {0x20,0x80,0x32,0x80,0x7A,0x80,0x22,0x80,0xFE,0x80,0x22,0x80,0x62,0xE0,0x7B,0x80,0x66,0x80,0x60,0x80,0x98,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8D74, {0x10,0x80,0x10,0x80,0x7E,0x80,0x10,0x80,0xFE,0x80,0x10,0xC0,0x50,0xA0,0x5E,0xA0,0x50,0x80,0x70,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8D77, {0x20,0x00,0x23,0xC0,0x78,0x40,0x20,0x40,0xFF,0xC0,0x22,0x40,0x62,0x00,0x7A,0x00,0x62,0x20,0x63,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8D81, {0x21,0x80,0x31,0x80,0x79,0x80,0x22,0x40,0xFC,0x20,0x21,0x00,0x62,0x80,0x79,0x20,0x62,0x40,0x61,0x80,0x9E,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8D85, {0x20,0x00,0x27,0xC0,0x79,0x40,0x22,0x40,0xFA,0xC0,0x24,0x00,0x63,0xC0,0x7A,0x40,0x63,0xC0,0x62,0x40,0x98,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8D8A, {0x21,0x00,0x21,0x40,0x7F,0xE0,0x27,0x00,0xFD,0xC0,0x25,0xC0,0x65,0x80,0x7F,0xA0,0x66,0xE0,0x61,0x20,0x98,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8D99, {0x21,0x80,0x33,0xC0,0x7F,0xA0,0x27,0xE0,0xFE,0x40,0x23,0xC0,0x62,0x40,0x7B,0xC0,0x62,0x40,0x62,0x40,0x98,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8DA3, {0x20,0x00,0x3F,0xE0,0x75,0x00,0x27,0xC0,0xFD,0x40,0x27,0x40,0x65,0x80,0x7F,0xC0,0x65,0xA0,0x61,0x00,0x59,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8DA8, {0x22,0x00,0x23,0xC0,0x7D,0x40,0x27,0xC0,0xFA,0x40,0x26,0x80,0x63,0xC0,0x7D,0x40,0x67,0xC0,0x67,0xC0,0x5C,0xC0,0x87,0xE0,0x00,0x00,}}, +{ 0x8DB3, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x24,0x80,0x04,0x00,0x24,0x00,0x27,0x80,0x24,0x00,0x34,0x00,0x4C,0x00,0x83,0xE0,0x00,0x00,}}, +{ 0x8DBA, {0x01,0x80,0x79,0x80,0x4B,0xC0,0x7B,0xC0,0x31,0x80,0x67,0xE0,0x79,0x80,0x61,0x80,0x79,0x80,0x7A,0x80,0xC4,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x8DBE, {0x01,0x80,0x79,0x80,0x49,0x80,0x7B,0x80,0x33,0xE0,0x63,0x80,0x7B,0x80,0x63,0x80,0x7B,0x80,0x7B,0x80,0xCF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8DC2, {0x01,0x80,0x79,0x80,0x4F,0xE0,0x7F,0xE0,0x31,0x80,0x67,0xC0,0x7A,0x40,0x61,0x80,0x79,0x80,0x79,0x80,0xC6,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x8DCB, {0x01,0x80,0x79,0x40,0x4F,0xE0,0x7F,0xE0,0x31,0x40,0x61,0x40,0x7B,0x40,0x63,0x80,0x7F,0x80,0x79,0x80,0xD2,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x8DCC, {0x01,0x80,0x7B,0x80,0x4B,0xC0,0x7B,0xC0,0x35,0x80,0x6F,0xE0,0x79,0x80,0x61,0x80,0x79,0x80,0x7A,0x80,0xC4,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x8DCF, {0x04,0x00,0x74,0x00,0x5E,0xE0,0x7F,0xA0,0x35,0xA0,0x65,0xA0,0x75,0xA0,0x65,0xA0,0x7D,0xA0,0x79,0xE0,0xD1,0xE0,0x26,0x00,0x00,0x00,}}, +{ 0x8DD6, {0x00,0x00,0x7F,0xE0,0x49,0x00,0x79,0x00,0x32,0x00,0x63,0xC0,0x7E,0x40,0x66,0x40,0x6A,0x40,0x7A,0x40,0x73,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x8DDA, {0x00,0x00,0xEF,0xC0,0xAB,0xC0,0xEB,0xC0,0x6B,0xC0,0xFF,0xE0,0xFB,0xC0,0xEB,0xC0,0xFB,0xC0,0xFB,0xC0,0x8B,0xC0,0x08,0xC0,0x00,0x00,}}, +{ 0x8DDB, {0x01,0x80,0x71,0x80,0x57,0xE0,0x75,0x80,0x35,0x80,0x67,0xC0,0x7E,0x40,0x65,0x80,0x7D,0x80,0x79,0x80,0xD6,0x40,0x38,0x20,0x00,0x00,}}, +{ 0x8DDD, {0x00,0x00,0x7B,0xE0,0x4A,0x00,0x7B,0xC0,0x22,0x40,0x62,0x40,0x7A,0x40,0x63,0xC0,0x62,0x40,0x7A,0x00,0x73,0xE0,0xC2,0x00,0x00,0x00,}}, +{ 0x8DDF, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x32,0x40,0x63,0xC0,0x7B,0xA0,0x63,0xA0,0x62,0xC0,0x7A,0x80,0x73,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x8DE1, {0x00,0x80,0x78,0x80,0x4F,0xE0,0x79,0x80,0x21,0x80,0x63,0xC0,0x7B,0xC0,0x65,0xA0,0x7A,0xA0,0x62,0x80,0x84,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x8DE3, {0x01,0x80,0x7B,0x80,0x4B,0xC0,0x7B,0xC0,0x35,0x80,0x67,0xE0,0x79,0x80,0x61,0x80,0x7A,0x80,0x7A,0xA0,0xC4,0xA0,0x08,0x60,0x00,0x00,}}, +{ 0x8DE8, {0x00,0x80,0x78,0x80,0x4F,0xE0,0x7A,0x40,0x17,0xE0,0x50,0x00,0x5F,0xE0,0x51,0x00,0x53,0xC0,0x5A,0x40,0x70,0x40,0xC0,0x80,0x00,0x00,}}, +{ 0x8DEA, {0x01,0x00,0x73,0xC0,0x5E,0x80,0x7F,0xE0,0x34,0x00,0x65,0xC0,0x7D,0x40,0x65,0x40,0x7D,0x80,0x79,0x20,0xD1,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x8DEB, {0x00,0x00,0x7F,0x80,0x24,0x80,0x3E,0xA0,0xE5,0xA0,0x08,0x60,0x7F,0x80,0x60,0x80,0x3F,0x80,0x27,0x80,0x34,0x00,0xCF,0xE0,0x00,0x00,}}, +{ 0x8DEF, {0x01,0x00,0x79,0x00,0x4B,0xC0,0x7A,0x40,0x25,0x80,0x21,0x80,0x7A,0x40,0x67,0xE0,0x62,0x40,0x7A,0x40,0x63,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x8DF3, {0x02,0x80,0x72,0x80,0x5A,0xC0,0x76,0xC0,0x22,0x80,0x62,0x80,0x76,0xC0,0x6A,0xA0,0x72,0x80,0x74,0xA0,0xC8,0xA0,0x10,0xE0,0x00,0x00,}}, +{ 0x8DF5, {0x01,0x80,0x79,0x40,0x4F,0xC0,0x79,0xC0,0x27,0x00,0x61,0xE0,0x7F,0x40,0x61,0x40,0x79,0x80,0x61,0xA0,0xC6,0x60,0x18,0x20,0x00,0x00,}}, +{ 0x8DFC, {0x00,0x00,0x77,0xC0,0x54,0x40,0x77,0xC0,0x34,0x00,0x67,0xE0,0x7C,0x20,0x67,0xA0,0x7F,0xA0,0x7B,0xA0,0xD0,0x20,0x20,0xC0,0x00,0x00,}}, +{ 0x8DFF, {0x01,0x80,0x79,0x80,0x4B,0xC0,0x79,0x80,0x37,0xE0,0x61,0x80,0x7B,0x80,0x63,0xC0,0x7F,0x80,0x7F,0x80,0xC9,0x80,0x10,0x60,0x00,0x00,}}, +{ 0x8E08, {0x01,0x80,0x79,0x80,0x4F,0xE0,0x7B,0xC0,0x33,0xC0,0x63,0xC0,0x7B,0xC0,0x61,0x80,0x7B,0xC0,0x7D,0xA0,0xC9,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8E09, {0x01,0x80,0x79,0x80,0x4B,0xC0,0x7A,0x40,0x73,0xC0,0x22,0x40,0x7B,0xC0,0x63,0xA0,0x62,0xC0,0x7A,0x80,0x73,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x8E0A, {0x00,0x00,0x3F,0xE0,0x29,0x80,0x3B,0xE0,0x3A,0xA0,0x12,0xA0,0x3B,0xE0,0x32,0xA0,0x33,0xE0,0x36,0xA0,0x3A,0xA0,0x62,0xE0,0x00,0x00,}}, +{ 0x8E0F, {0x00,0x80,0x78,0xA0,0x4F,0xC0,0x7A,0xC0,0x6C,0xA0,0x20,0x80,0x7B,0xC0,0x62,0x40,0x63,0xC0,0x6A,0x40,0x73,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x8E10, {0x01,0x80,0x79,0x40,0x4F,0xE0,0x7F,0xC0,0x31,0xA0,0x66,0x60,0x79,0xA0,0x63,0xE0,0x7F,0xC0,0x79,0xA0,0xC3,0xE0,0x0C,0x20,0x00,0x00,}}, +{ 0x8E1D, {0x00,0x00,0x7B,0xC0,0x4B,0xC0,0x7B,0xC0,0x33,0xC0,0x63,0xC0,0x79,0x80,0x67,0xE0,0x7B,0xC0,0x7D,0xA0,0xC9,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8E1E, {0x00,0x00,0x77,0xC0,0x54,0x40,0x77,0xC0,0x35,0xC0,0x65,0x80,0x7F,0xE0,0x65,0x80,0x7F,0xC0,0x7A,0x40,0xD3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x8E1F, {0x02,0x00,0x3A,0x00,0x2B,0xE0,0x3B,0xE0,0x1D,0xE0,0x31,0xE0,0x3F,0xE0,0x31,0xE0,0x3F,0xE0,0x3E,0xE0,0x64,0xE0,0x08,0x00,0x00,0x00,}}, +{ 0x8E2A, {0x01,0x80,0x79,0x80,0x4F,0xE0,0x78,0x00,0x73,0xC0,0x20,0x00,0x7F,0xE0,0x61,0x80,0x63,0xC0,0x75,0xA0,0x79,0xA0,0xC1,0x80,0x00,0x00,}}, +{ 0x8E30, {0x03,0x80,0x73,0x80,0x56,0x40,0x7F,0xE0,0x70,0x00,0x2E,0x40,0x7B,0xC0,0x6F,0xC0,0x6F,0x80,0x7F,0xC0,0x7B,0xC0,0xCB,0xC0,0x00,0x00,}}, +{ 0x8E34, {0x00,0x00,0x7F,0xC0,0x49,0x80,0x7B,0xC0,0x73,0xC0,0x23,0xC0,0x7B,0xC0,0x63,0xC0,0x67,0xE0,0x7F,0xE0,0x72,0x20,0xCC,0xC0,0x00,0x00,}}, +{ 0x8E35, {0x00,0xC0,0x7B,0x80,0x4F,0xE0,0x7B,0xC0,0x33,0xC0,0x63,0xC0,0x7B,0xC0,0x63,0xC0,0x7B,0xC0,0x7B,0xC0,0xCF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8E42, {0x00,0x00,0x7B,0xC0,0x49,0x80,0x7F,0xE0,0x73,0xC0,0x27,0x80,0x79,0x80,0x61,0x80,0x67,0xE0,0x7B,0xC0,0x75,0xA0,0xC1,0x80,0x00,0x00,}}, +{ 0x8E44, {0x00,0x80,0x78,0x80,0x4F,0xE0,0x7A,0x40,0x27,0xE0,0x24,0x80,0x7F,0xC0,0x62,0xC0,0x62,0xC0,0x6A,0xC0,0x70,0x80,0xC0,0x80,0x00,0x00,}}, +{ 0x8E47, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x13,0x00,0xFF,0xE0,0x3F,0x80,0x53,0xC0,0x9E,0x60,0x27,0x00,0x3C,0x00,0xC7,0xE0,0x00,0x00,}}, +{ 0x8E48, {0x00,0xC0,0x77,0xC0,0x55,0x60,0x79,0xA0,0x71,0x00,0x27,0xC0,0x7C,0x40,0x64,0x40,0x66,0xC0,0x7C,0x40,0x77,0xC0,0xC4,0x40,0x00,0x00,}}, +{ 0x8E49, {0x04,0x80,0x73,0x80,0x5F,0xE0,0x77,0xC0,0x33,0x00,0x6F,0xE0,0x72,0x00,0x63,0xC0,0x7F,0x80,0x79,0x80,0xDF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8E4A, {0x00,0xC0,0x77,0xC0,0x55,0x60,0x79,0xA0,0x36,0x80,0x61,0x80,0x79,0x80,0x67,0xC0,0x7F,0xE0,0x7F,0xE0,0xC4,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x8E4C, {0x01,0x00,0x73,0x00,0x57,0x80,0x7F,0xC0,0x37,0xE0,0x64,0x80,0x7F,0x80,0x67,0x80,0x7F,0xC0,0x7F,0xC0,0xD7,0xC0,0x04,0x40,0x00,0x00,}}, +{ 0x8E50, {0x01,0x00,0x7D,0xC0,0x59,0x40,0x7F,0xC0,0x74,0x80,0x2F,0xC0,0x7C,0xA0,0x67,0x80,0x67,0x80,0x7F,0x80,0x74,0x80,0xC4,0x80,0x00,0x00,}}, +{ 0x8E55, {0x00,0x00,0x7F,0xC0,0x5F,0xC0,0x7F,0xC0,0x7F,0xC0,0x25,0x80,0x7F,0xE0,0x67,0xC0,0x6F,0xC0,0x7F,0xE0,0x73,0x00,0xC1,0x00,0x00,0x00,}}, +{ 0x8E59, {0x01,0x80,0x7F,0xE0,0x6F,0x40,0x7F,0xC0,0x7D,0x80,0x6B,0xA0,0x48,0x60,0xBF,0xA0,0x3F,0x80,0x3F,0x80,0x3C,0x00,0x47,0xC0,0x00,0x00,}}, +{ 0x8E5F, {0x00,0x80,0x77,0xE0,0x53,0xC0,0x70,0x80,0x7F,0xE0,0x23,0xC0,0x7A,0x40,0x63,0xC0,0x62,0x40,0x7B,0xC0,0x62,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x8E60, {0x01,0x80,0x71,0x80,0x57,0xE0,0x75,0x80,0x37,0xE0,0x65,0x80,0x75,0x80,0x65,0x80,0x7C,0x00,0x7E,0x40,0xD7,0xE0,0x29,0xA0,0x00,0x00,}}, +{ 0x8E63, {0x03,0x80,0x73,0x80,0x5F,0xE0,0x73,0x80,0x73,0x00,0x2F,0xC0,0x79,0x40,0x6F,0xC0,0x6B,0xC0,0x7F,0xC0,0x79,0x40,0xC9,0xC0,0x00,0x00,}}, +{ 0x8E64, {0x03,0xC0,0x73,0xC0,0x5D,0xE0,0x7B,0xA0,0x32,0x80,0x64,0x80,0x7D,0x80,0x6D,0xE0,0x65,0x80,0x7F,0x80,0x76,0x80,0xC4,0x60,0x00,0x00,}}, +{ 0x8E72, {0x03,0x80,0x72,0xC0,0x5F,0xE0,0x7F,0xE0,0x77,0xC0,0x26,0xC0,0x7F,0xC0,0x67,0xC0,0x67,0xE0,0x7F,0xE0,0x73,0x80,0xC1,0x80,0x00,0x00,}}, +{ 0x8E74, {0x04,0x80,0x74,0xC0,0x5E,0xA0,0x7E,0x80,0x2B,0xE0,0x6A,0x80,0x7E,0x80,0x65,0x80,0x6F,0x80,0x75,0xA0,0xC6,0xA0,0x0C,0x60,0x00,0x00,}}, +{ 0x8E76, {0x00,0x00,0x7F,0xE0,0x5D,0x80,0x7B,0x80,0x3F,0xE0,0x6B,0xA0,0x7F,0xC0,0x6F,0x80,0x7E,0xC0,0x7E,0xC0,0xD5,0xA0,0x29,0x20,0x00,0x00,}}, +{ 0x8E7C, {0x03,0x80,0x7B,0xC0,0x5F,0xE0,0x7F,0xE0,0x32,0x80,0x6F,0xC0,0x71,0x00,0x67,0x80,0x7F,0xE0,0x7F,0xE0,0xC4,0x80,0x18,0x60,0x00,0x00,}}, +{ 0x8E81, {0x00,0x00,0x7B,0xC0,0x4B,0xC0,0x7B,0xC0,0x37,0xE0,0x65,0xA0,0x7F,0xE0,0x61,0x80,0x7F,0xE0,0x7B,0xC0,0xCD,0xA0,0x01,0x80,0x00,0x00,}}, +{ 0x8E84, {0x01,0x80,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x6B,0xC0,0xF9,0x80,0x3F,0x80,0x31,0x80,0x3F,0x00,0x27,0x80,0x3C,0x00,0x47,0xC0,0x00,0x00,}}, +{ 0x8E85, {0x00,0x00,0x77,0xC0,0x57,0xC0,0x77,0xC0,0x37,0xE0,0x65,0x20,0x7F,0xA0,0x67,0xA0,0x7F,0xA0,0x79,0xE0,0xCE,0x60,0x00,0xC0,0x00,0x00,}}, +{ 0x8E87, {0x02,0x80,0x7F,0xE0,0x52,0x40,0x77,0xC0,0x73,0xC0,0x2F,0xE0,0x79,0x80,0x63,0xC0,0x6F,0xC0,0x7B,0xC0,0x73,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x8E8A, {0x01,0x00,0x7F,0xE0,0x57,0x80,0x7F,0xE0,0x77,0xC0,0x21,0x00,0x7F,0x80,0x6F,0xE0,0x67,0xE0,0x7F,0xE0,0x7F,0x40,0xC8,0xC0,0x00,0x00,}}, +{ 0x8E8B, {0x01,0x00,0x7F,0xE0,0x5F,0xC0,0x7F,0xC0,0x3F,0xC0,0x71,0xA0,0x7C,0x80,0x67,0x80,0x7F,0x80,0x7F,0x80,0xC8,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x8E8D, {0x00,0x00,0x7F,0xC0,0x5F,0xC0,0x7F,0xC0,0x77,0xC0,0x22,0x80,0x77,0xE0,0x6D,0x00,0x67,0xC0,0x6F,0xC0,0x75,0x00,0xC7,0xE0,0x00,0x00,}}, +{ 0x8E91, {0x0A,0x00,0xFB,0xC0,0xBF,0xC0,0xFF,0xC0,0x77,0x80,0xFB,0xC0,0xFF,0xC0,0xFF,0xA0,0xFF,0xA0,0xFF,0xE0,0x93,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8E93, {0x01,0x40,0x77,0x80,0x57,0xE0,0x77,0xE0,0x79,0x40,0x27,0x80,0x7C,0x80,0x67,0x80,0x7F,0x80,0x7F,0x80,0xC6,0x80,0x18,0x40,0x00,0x00,}}, +{ 0x8E94, {0x01,0x80,0x7F,0xE0,0x5B,0xC0,0x7B,0xC0,0x3B,0xC0,0x6B,0xC0,0x7B,0xC0,0x6F,0xE0,0x7F,0xE0,0x7F,0xE0,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x8E99, {0x00,0x00,0x3F,0xE0,0x2F,0xE0,0x3F,0xE0,0x3F,0xE0,0x14,0xE0,0x3D,0xE0,0x37,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x64,0x60,0x00,0x00,}}, +{ 0x8EA1, {0x00,0x00,0x77,0xC0,0x53,0x80,0x73,0x80,0x37,0x80,0x60,0x80,0x7F,0xE0,0x6B,0xC0,0x7F,0xC0,0x7F,0xC0,0xDB,0xC0,0x02,0x40,0x00,0x00,}}, +{ 0x8EAA, {0x03,0x80,0x7F,0xE0,0x5F,0xC0,0x7F,0xC0,0x7F,0xC0,0x2F,0xC0,0x79,0xC0,0x6B,0xC0,0x6F,0xC0,0x7B,0xC0,0x7B,0xC0,0xC8,0xC0,0x00,0x00,}}, +{ 0x8EAB, {0x04,0x00,0x08,0x00,0x3F,0x80,0x3F,0x80,0x20,0xA0,0x3F,0xC0,0x20,0x80,0x3F,0x80,0xE3,0x80,0x0C,0x80,0x70,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x8EAC, {0x10,0x00,0x33,0xC0,0x38,0x40,0x3B,0xC0,0x2A,0x40,0x3A,0x00,0x2F,0xE0,0x7A,0x20,0x1A,0x20,0x68,0x20,0x08,0x60,0x18,0xC0,0x00,0x00,}}, +{ 0x8EAF, {0x20,0x00,0x63,0xE0,0x42,0x00,0x7A,0x40,0x4B,0x40,0x7B,0x80,0x4E,0x80,0xFA,0xC0,0x1B,0x40,0x2A,0x00,0xCB,0xE0,0x1A,0x00,0x00,0x00,}}, +{ 0x8EB0, {0x21,0x00,0x61,0x00,0x7F,0xE0,0x7F,0xE0,0x53,0x80,0x75,0x80,0x5D,0x80,0xFB,0x40,0x37,0xA0,0xD1,0x00,0x11,0x00,0x31,0x00,0x00,0x00,}}, +{ 0x8EB1, {0x20,0x00,0x67,0x80,0x73,0xC0,0x73,0xC0,0x54,0x40,0x79,0x80,0x59,0x00,0xFF,0xE0,0x37,0x80,0xD9,0x60,0x11,0x00,0x31,0x00,0x00,0x00,}}, +{ 0x8EBE, {0x24,0x80,0x63,0x80,0x7F,0xC0,0x77,0x80,0x53,0x00,0x7F,0xE0,0x59,0x00,0xF3,0x00,0x3F,0xE0,0xD3,0x00,0x14,0x80,0x38,0x60,0x00,0x00,}}, +{ 0x8EC5, {0x20,0x00,0x6F,0xE0,0x6B,0xC0,0x6B,0xC0,0x6F,0xE0,0x6F,0x80,0x7D,0xC0,0xED,0xC0,0x7D,0xC0,0xB5,0x80,0x35,0xE0,0x25,0x00,0x00,0x00,}}, +{ 0x8EC6, {0x23,0x80,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0x5F,0xC0,0x70,0x00,0x5F,0xE0,0xF7,0x80,0x37,0x80,0xD7,0x80,0x1F,0xE0,0x30,0x00,0x00,0x00,}}, +{ 0x8EC8, {0x21,0x00,0x6F,0xE0,0x6B,0xE0,0x6F,0xE0,0x6F,0xC0,0x6D,0xC0,0x7D,0x80,0xED,0xE0,0x7F,0x00,0xB7,0xA0,0x3A,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x8ECA, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8ECB, {0x21,0x00,0x31,0x00,0xFD,0x00,0x79,0x00,0x79,0x00,0x79,0x00,0x69,0x00,0x79,0x00,0xF9,0x00,0xF9,0x20,0x21,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x8ECC, {0x21,0x00,0x21,0x00,0xFD,0x80,0x7F,0x80,0x69,0x80,0x79,0x80,0x69,0x80,0x7A,0x80,0x22,0x80,0xFE,0xA0,0x24,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x8ECD, {0x00,0x00,0x7F,0xE0,0x84,0x20,0xFF,0xC0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8ED2, {0x20,0x00,0x23,0xC0,0xFD,0x00,0x79,0x00,0x69,0x00,0x7F,0xE0,0x69,0x00,0x79,0x00,0x21,0x00,0xF9,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x8EDB, {0x20,0x00,0x33,0xE0,0xFE,0x00,0x7B,0xC0,0x7B,0x40,0x7B,0x40,0x6B,0x40,0x7B,0xC0,0xFF,0x00,0xFD,0x20,0x29,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x8EDF, {0x21,0x00,0x21,0x00,0xFD,0x00,0x7B,0xE0,0x6A,0xC0,0x7C,0x80,0x68,0x80,0x78,0x80,0x21,0x80,0xFE,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x8EE2, {0x20,0x00,0x23,0xC0,0xFC,0x00,0x78,0x00,0x6F,0xE0,0x78,0x80,0x68,0x80,0x78,0x80,0x21,0x40,0xF9,0xC0,0x27,0x20,0x20,0x20,0x00,0x00,}}, +{ 0x8EE3, {0x04,0x00,0x7F,0xC0,0x3F,0x80,0x3F,0x80,0x35,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x75,0xC0,0x1B,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,}}, +{ 0x8EEB, {0x21,0x80,0x31,0x80,0xFD,0x80,0x7A,0x40,0x7C,0x20,0x7B,0x00,0x68,0x80,0x79,0x00,0xFA,0x20,0xF8,0x40,0x21,0x80,0x26,0x00,0x00,0x00,}}, +{ 0x8EF8, {0x10,0x40,0x10,0x40,0x7E,0x40,0x3D,0xE0,0x35,0x60,0x3D,0x60,0x35,0xE0,0x3D,0x60,0x11,0x60,0x7F,0x60,0x11,0xE0,0x11,0x20,0x00,0x00,}}, +{ 0x8EFB, {0x20,0x00,0x37,0xE0,0xFC,0x40,0x7B,0x40,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0xFE,0x40,0xF8,0x40,0x20,0x40,0x20,0xC0,0x00,0x00,}}, +{ 0x8EFC, {0x21,0x80,0x33,0x80,0xFF,0x80,0x7B,0xC0,0x7B,0x80,0x7D,0x80,0x6F,0xE0,0x79,0x80,0xF9,0x80,0xFE,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x8EFD, {0x20,0x00,0x27,0xC0,0xFA,0x40,0x79,0x80,0x6B,0x80,0x7D,0x60,0x69,0x00,0x7B,0xC0,0x21,0x00,0xF9,0x00,0x27,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x8EFE, {0x21,0xC0,0x31,0xA0,0xFF,0xE0,0x7F,0xE0,0x79,0x80,0x7F,0x80,0x6A,0x80,0x7A,0x80,0xFA,0x80,0xFB,0xE0,0x2C,0x60,0x20,0x20,0x00,0x00,}}, +{ 0x8F03, {0x21,0x00,0x21,0x00,0xFF,0xE0,0x79,0x80,0x6A,0x40,0x7E,0xA0,0x6A,0x80,0x79,0x80,0x21,0x80,0xF9,0x80,0x22,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x8F05, {0x21,0x00,0x31,0x00,0xFF,0xC0,0x7A,0x40,0x7D,0x80,0x79,0x80,0x6A,0x40,0x7F,0xE0,0xFE,0x40,0xFE,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x8F09, {0x11,0x00,0x3D,0x80,0x11,0x40,0xFF,0xE0,0x7D,0x00,0x55,0x40,0x7D,0x40,0x7C,0x80,0x10,0x80,0xFD,0xA0,0x12,0x60,0x10,0x20,0x00,0x00,}}, +{ 0x8F0A, {0x20,0x00,0x37,0xE0,0xFD,0x80,0x79,0xC0,0x7F,0xE0,0x79,0xA0,0x69,0x80,0x7B,0xC0,0xF9,0x80,0xF9,0x80,0x27,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x8F0C, {0x60,0x00,0x6F,0xE0,0xF1,0x00,0xFF,0xC0,0xFB,0x40,0xFD,0xC0,0xFD,0xC0,0xFF,0xC0,0xFF,0xC0,0xF8,0x40,0x68,0x40,0x68,0xC0,0x00,0x00,}}, +{ 0x8F12, {0x20,0x00,0x3F,0xE0,0xFD,0x80,0x77,0x80,0x77,0x80,0x75,0x80,0x77,0x80,0x75,0x80,0xFF,0x80,0xFF,0xA0,0x21,0xA0,0x21,0x60,0x00,0x00,}}, +{ 0x8F13, {0x21,0x00,0x33,0xC0,0xFE,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0xF9,0x80,0xFE,0xA0,0x24,0xA0,0x28,0x60,0x00,0x00,}}, +{ 0x8F14, {0x20,0xC0,0x20,0xA0,0xFF,0xE0,0x78,0x80,0x6B,0xC0,0x7A,0xC0,0x6A,0xC0,0x7B,0xC0,0x22,0xC0,0xFF,0xC0,0x22,0xC0,0x22,0xC0,0x00,0x00,}}, +{ 0x8F15, {0x20,0x00,0x37,0xE0,0xFF,0xC0,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x68,0x00,0x7B,0xC0,0xF9,0x80,0xF9,0x80,0x27,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x8F19, {0x20,0x00,0x3F,0xE0,0xFD,0x00,0x7F,0xC0,0x7F,0xC0,0x7D,0xC0,0x6F,0xC0,0x7D,0x80,0xFF,0xC0,0xFF,0xC0,0x21,0x20,0x21,0x00,0x00,0x00,}}, +{ 0x8F1B, {0x60,0x00,0x6F,0xE0,0xF1,0x00,0xFF,0xC0,0xFB,0x40,0xFF,0xC0,0xFB,0xC0,0xFB,0xC0,0xFD,0x40,0xF9,0x40,0x69,0x40,0x69,0xC0,0x00,0x00,}}, +{ 0x8F1C, {0x11,0xE0,0x19,0xE0,0x7E,0xC0,0x3F,0xE0,0x3D,0xE0,0x3C,0x00,0x35,0xE0,0x3D,0xE0,0x7F,0xE0,0x7F,0xE0,0x11,0xE0,0x11,0x20,0x00,0x00,}}, +{ 0x8F1D, {0x20,0x00,0x27,0xE0,0xA8,0xA0,0x7F,0xE0,0x33,0xC0,0xFE,0xC0,0x33,0xC0,0x33,0xC0,0x38,0x80,0x5F,0xE0,0x40,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x8F1F, {0x20,0x00,0x37,0xC0,0xF9,0x40,0x7F,0xC0,0x7B,0xC0,0x7D,0xA0,0x6F,0xC0,0x79,0xC0,0xFF,0xC0,0xFE,0x80,0x27,0xC0,0x29,0x20,0x00,0x00,}}, +{ 0x8F26, {0x21,0x80,0x7B,0xC0,0xFF,0xE0,0xFF,0xE0,0x4E,0x40,0xFF,0xA0,0x3F,0x80,0x35,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x8F29, {0x09,0x00,0xF9,0xE0,0x79,0xC0,0xFD,0xE0,0x15,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x8F2A, {0x21,0x00,0x21,0x00,0xFA,0x80,0x24,0x40,0xFF,0xC0,0xF0,0x20,0xFF,0xC0,0xFA,0xC0,0x2F,0xC0,0xFA,0xC0,0x2A,0xC0,0x28,0x40,0x00,0x00,}}, +{ 0x8F2F, {0x23,0xC0,0x22,0x40,0xFF,0xC0,0x7F,0xE0,0x6A,0x40,0x7B,0xC0,0x6A,0x40,0x7B,0xC0,0x22,0x60,0xFB,0xC0,0x26,0x40,0x20,0x40,0x00,0x00,}}, +{ 0x8F33, {0x21,0x80,0x31,0x80,0xFF,0xE0,0x7B,0xC0,0x79,0x80,0x7F,0xE0,0x69,0x80,0x7B,0xC0,0xFF,0xE0,0xFB,0xC0,0x21,0x40,0x26,0x20,0x00,0x00,}}, +{ 0x8F38, {0x41,0x00,0x41,0x00,0xFA,0x80,0x44,0x80,0xFF,0xC0,0xD0,0x20,0xFE,0xC0,0xFA,0xC0,0x4E,0xC0,0xFE,0xC0,0x4A,0x40,0x4A,0xC0,0x00,0x00,}}, +{ 0x8F39, {0x22,0x00,0x32,0x00,0xFF,0xE0,0x7F,0x80,0x7B,0x80,0x7A,0x80,0x6B,0x80,0x7B,0x00,0xFF,0xC0,0xFF,0x80,0x23,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x8F3B, {0x10,0x00,0x1B,0xE0,0x7D,0xC0,0x3D,0xC0,0x3D,0x40,0x3D,0xC0,0x34,0x00,0x3F,0xE0,0x7F,0xE0,0x7F,0xE0,0x13,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x8F3E, {0x20,0x00,0x37,0xC0,0xFC,0x40,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x6D,0x80,0x7F,0xC0,0xFF,0xE0,0xFE,0xC0,0x33,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x8F3F, {0x24,0x00,0x65,0xC0,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x55,0x40,0x7F,0xC0,0x7F,0x40,0xFF,0xE0,0xFF,0xE0,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x8F42, {0x20,0x00,0xFD,0x80,0x79,0x80,0x7D,0xA0,0xFA,0xA0,0xFC,0x60,0x7B,0xC0,0x79,0x40,0x79,0x80,0x79,0x80,0xFD,0x80,0x26,0x60,0x00,0x00,}}, +{ 0x8F44, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x7C,0xA0,0x6B,0xC0,0x7B,0xC0,0x68,0x80,0x7F,0xE0,0x23,0xC0,0xFA,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x8F45, {0x21,0x80,0x33,0xC0,0xFF,0xE0,0x7F,0xE0,0x7B,0xC0,0x7A,0x40,0x6B,0xC0,0x79,0xA0,0xFF,0xE0,0xFF,0xC0,0x21,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x8F46, {0x61,0x00,0x63,0x00,0xFF,0xE0,0xFF,0xC0,0xFB,0xC0,0xFB,0xC0,0xFF,0xC0,0xFD,0xA0,0xFF,0xC0,0xFD,0xA0,0x77,0xA0,0x68,0xE0,0x00,0x00,}}, +{ 0x8F49, {0x21,0xC0,0x37,0xE0,0xFB,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x79,0xC0,0xFF,0xE0,0xFF,0xE0,0x23,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x8F4C, {0x20,0x00,0x37,0xE0,0xFF,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x68,0x00,0x7B,0xC0,0xFF,0xE0,0xFF,0xE0,0x23,0xC0,0x20,0x40,0x00,0x00,}}, +{ 0x8F4D, {0x24,0x80,0x24,0x80,0xFE,0x80,0x2F,0xE0,0xFF,0x40,0xB1,0x40,0xFF,0x40,0xFA,0x80,0x2E,0x80,0xFE,0x80,0x2B,0x40,0x2A,0x20,0x00,0x00,}}, +{ 0x8F4E, {0x20,0xC0,0x33,0x80,0xFF,0xE0,0x7F,0xE0,0x7B,0xC0,0x7D,0xA0,0x69,0x80,0x7F,0xE0,0xFD,0xA0,0xFD,0xA0,0x25,0xA0,0x24,0x60,0x00,0x00,}}, +{ 0x8F57, {0x61,0xC0,0x61,0xA0,0xFF,0xE0,0xFF,0xC0,0xF8,0xC0,0xFF,0xA0,0xFD,0x60,0xF7,0x20,0xFB,0x00,0xFA,0x20,0x72,0xA0,0x61,0x80,0x00,0x00,}}, +{ 0x8F5C, {0x60,0x00,0x6F,0xE0,0xFF,0xE0,0xFF,0xE0,0xFD,0xC0,0xFD,0xC0,0xFF,0xE0,0xF2,0x00,0xFF,0xC0,0xFB,0xC0,0x6B,0xC0,0x68,0xC0,0x00,0x00,}}, +{ 0x8F5F, {0x04,0x00,0x3F,0x80,0x1F,0x00,0x1F,0x00,0x7F,0xC0,0x24,0x80,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0xFF,0xE0,0x20,0x80,0x00,0x00,}}, +{ 0x8F61, {0x44,0x80,0x7F,0xA0,0xFF,0xC0,0x7E,0xE0,0xFF,0xE0,0x75,0xC0,0xBF,0xA0,0x24,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x8F62, {0x69,0x40,0x6B,0x40,0xF7,0xA0,0xFF,0xE0,0xEB,0xC0,0xF7,0xA0,0xFD,0xE0,0xF3,0x00,0xFF,0xE0,0xE7,0x80,0x79,0x60,0x61,0x00,0x00,0x00,}}, +{ 0x8F63, {0x60,0x00,0x6F,0xE0,0xFF,0xC0,0xFF,0xE0,0xFB,0xC0,0xFF,0xC0,0xFA,0xA0,0xF9,0x80,0xFB,0xC0,0xFB,0x80,0x7F,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x8F64, {0x61,0x00,0x63,0xC0,0xFF,0xE0,0xFF,0xC0,0xFF,0xC0,0xFD,0x80,0xFF,0x80,0xFF,0x80,0xFF,0xC0,0xFF,0xC0,0x75,0xC0,0x6F,0xE0,0x00,0x00,}}, +{ 0x8F9B, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8F9C, {0x04,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0x80,0x7F,0x80,0x04,0x00,0x7F,0xC0,0x31,0x80,0xFF,0xE0,0x7F,0xC0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x8F9E, {0x08,0x80,0x10,0x80,0x67,0xE0,0x22,0x40,0xF9,0x40,0x27,0xE0,0x20,0x80,0x78,0x80,0x4F,0xE0,0x48,0x80,0x78,0x80,0x48,0x80,0x00,0x00,}}, +{ 0x8F9F, {0x01,0x80,0x79,0x80,0x6F,0xE0,0x6A,0x40,0x79,0xC0,0x6F,0xE0,0x61,0x80,0x79,0x80,0xEF,0xE0,0x79,0x80,0x69,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x8FA3, {0x21,0x00,0x33,0x00,0xFF,0xE0,0x57,0xC0,0x77,0x40,0xFD,0x40,0x27,0xC0,0x3B,0x80,0xE7,0x80,0x29,0x40,0x61,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x8FA7, {0x60,0x80,0x60,0xC0,0xFF,0xE0,0x6B,0xC0,0x6B,0xC0,0xFB,0xE0,0x6A,0x80,0x7A,0xC0,0xEB,0xE0,0x7A,0x80,0x52,0x80,0xA6,0x80,0x00,0x00,}}, +{ 0x8FA8, {0x62,0x80,0x62,0xC0,0xF3,0xE0,0x6B,0xC0,0x6B,0xC0,0xFB,0xE0,0x6A,0x80,0x7A,0xC0,0xE3,0xE0,0x64,0x80,0x44,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x8FAD, {0x0C,0x80,0x78,0xC0,0x7F,0xE0,0xF9,0x40,0x11,0xC0,0x7F,0xE0,0x6C,0x80,0x7C,0xC0,0x7F,0xE0,0x5C,0x80,0x7C,0x80,0x4C,0x80,0x00,0x00,}}, +{ 0x8FAE, {0x64,0x80,0x64,0xC0,0xFF,0xE0,0x7B,0xC0,0x65,0xC0,0xFB,0xE0,0x6F,0x80,0x74,0xC0,0xF7,0xE0,0x55,0x80,0x74,0x80,0x84,0x80,0x00,0x00,}}, +{ 0x8FAF, {0x60,0x80,0x6E,0xC0,0xFF,0xE0,0x7F,0xC0,0x6F,0xC0,0xF1,0xE0,0x6E,0x80,0x70,0xC0,0xEF,0xE0,0x4E,0x80,0x4A,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x8FB0, {0x00,0x00,0x7F,0xE0,0x40,0x00,0x5F,0xC0,0x40,0x00,0x7F,0xE0,0x4A,0x40,0x49,0x40,0x49,0x80,0x4A,0x80,0x8C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x8FB1, {0x00,0x00,0x7F,0xE0,0x4F,0x80,0x40,0x00,0x7F,0xE0,0x4B,0x40,0x4C,0x80,0xB1,0x60,0xFF,0xE0,0x11,0x00,0x09,0x00,0x03,0x00,0x00,0x00,}}, +{ 0x8FB2, {0x0A,0x00,0x3F,0x80,0x2A,0x80,0x3F,0x80,0x2A,0x80,0x7F,0xC0,0x5F,0x80,0x40,0x00,0x7F,0xE0,0x4A,0xC0,0x4D,0x80,0xB0,0x60,0x00,0x00,}}, +{ 0x8FB7, {0x20,0x00,0x20,0x00,0x00,0x00,0x40,0x00,0x7F,0xC0,0x00,0x00,0xE0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FBA, {0x00,0x00,0x80,0x00,0x5F,0xC0,0x42,0x40,0x02,0x40,0xE2,0x40,0x24,0x40,0x24,0x40,0x28,0xC0,0x30,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FBB, {0x01,0x00,0x41,0x00,0x21,0x00,0x01,0x00,0x1F,0xE0,0xE1,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x61,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FBC, {0x00,0x00,0x47,0x00,0x21,0x00,0x01,0x00,0x03,0x00,0xE3,0x00,0x24,0x80,0x24,0x80,0x28,0x40,0x70,0x20,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FBF, {0x01,0x00,0x41,0x00,0x29,0x40,0x09,0x40,0x09,0x40,0xE9,0x40,0x29,0x40,0x29,0x40,0x2F,0xC0,0x20,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FC2, {0x00,0x00,0x4F,0xC0,0x21,0x00,0x21,0x00,0x1F,0xE0,0xE1,0x00,0x21,0x00,0x21,0x00,0x21,0x00,0x23,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FC4, {0x04,0x00,0x44,0x00,0x27,0xE0,0x18,0x00,0x07,0x80,0xE2,0x00,0x24,0x00,0x28,0x20,0x28,0x20,0x27,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FC5, {0x00,0x00,0x5F,0x80,0x24,0x80,0x04,0x80,0x04,0x80,0x1F,0x80,0xE4,0x80,0x24,0x80,0x24,0x60,0x24,0x20,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FCE, {0x01,0x00,0x42,0x00,0x2D,0xC0,0x09,0x40,0x09,0x40,0xE9,0x40,0x29,0x40,0x2F,0x40,0x39,0x80,0x21,0x00,0x59,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FD1, {0x00,0x80,0x43,0x00,0x2C,0x00,0x08,0x00,0x0F,0xE0,0x09,0x00,0xE9,0x00,0x29,0x00,0x31,0x00,0x21,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FD4, {0x00,0x00,0x4F,0xE0,0x28,0x00,0x0F,0x80,0x0C,0x80,0xEA,0x80,0x29,0x00,0x29,0x80,0x36,0x40,0x30,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FDA, {0x21,0x00,0x21,0x00,0x07,0xC0,0x4F,0xC0,0x69,0x40,0x09,0x40,0xEF,0xC0,0x69,0x40,0x61,0x00,0x61,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FE2, {0x20,0x00,0x2F,0xC0,0x02,0x40,0x42,0x40,0x64,0xC0,0x08,0x00,0xE7,0xC0,0x64,0x40,0x67,0xC0,0x67,0xC0,0x70,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x8FE5, {0x20,0x00,0x2F,0xC0,0x08,0x40,0x4B,0x40,0x6B,0xC0,0x0B,0xC0,0xEB,0xC0,0x6A,0x40,0x68,0x40,0x68,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FE6, {0x08,0x00,0x48,0x00,0x29,0xC0,0x3F,0x40,0x0B,0x40,0xEB,0x40,0x2B,0x40,0x33,0x40,0x33,0xC0,0x2D,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FE9, {0x04,0x00,0x44,0x00,0x27,0xE0,0x09,0x00,0x11,0x00,0xE5,0x80,0x25,0x40,0x29,0x20,0x31,0x20,0x23,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FEA, {0x01,0x00,0x41,0x00,0x67,0xC0,0x0F,0xC0,0x09,0x40,0xCF,0xC0,0x69,0x40,0x6B,0x40,0x6F,0xC0,0x60,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FEB, {0x02,0x00,0x44,0x00,0x2F,0x80,0x08,0x80,0x08,0x80,0xE8,0x80,0x2F,0x80,0x28,0x80,0x28,0x80,0x2F,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FED, {0x01,0x00,0x49,0x00,0x2F,0xC0,0x19,0x00,0x11,0x00,0xEF,0xE0,0x21,0x00,0x22,0x80,0x24,0x40,0x20,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FEF, {0x49,0x80,0x69,0x80,0x0D,0x80,0x9F,0x80,0x53,0xC0,0x2B,0xA0,0xE5,0xA0,0x65,0x80,0x69,0x80,0x71,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FF0, {0x02,0x00,0x42,0xC0,0x5F,0xE0,0x22,0x00,0x0A,0x00,0xEA,0x80,0x2A,0x80,0x32,0x40,0x32,0x40,0x22,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FF4, {0x20,0x00,0x2F,0xC0,0x0B,0x40,0x4B,0xC0,0x6B,0xC0,0x0B,0xC0,0xEB,0xC0,0x6B,0x40,0x6F,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FF7, {0x02,0x00,0x52,0x80,0x2A,0x80,0x02,0x00,0x1F,0xC0,0xE2,0x00,0x27,0x00,0x2A,0x80,0x32,0x40,0x22,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FF8, {0x48,0x80,0x64,0x80,0x0F,0xC0,0x8F,0xC0,0x45,0x80,0x3F,0xE0,0xE5,0x80,0x65,0x80,0x69,0x80,0x71,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FF9, {0x21,0x00,0x21,0x00,0x1F,0xE0,0x4F,0xE0,0x6B,0x80,0x0B,0xC0,0xF3,0xA0,0x63,0xA0,0x65,0x80,0x69,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FFA, {0x20,0x00,0x3F,0xE0,0x03,0x80,0x4F,0xC0,0x6B,0xC0,0x0B,0xC0,0xEA,0xC0,0x6C,0xC0,0x6F,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x8FFD, {0x01,0x00,0x42,0x00,0x2F,0x80,0x08,0x80,0x0F,0x80,0xE8,0x00,0x2F,0x80,0x28,0x80,0x28,0x80,0x2F,0x80,0x50,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x9000, {0x00,0x00,0x4F,0x80,0x28,0x80,0x0F,0x80,0x0F,0x80,0xEA,0x40,0x29,0x40,0x29,0x80,0x2E,0x40,0x28,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9001, {0x08,0x80,0x44,0x80,0x2F,0xC0,0x01,0x00,0x01,0x00,0xFF,0xE0,0x23,0x00,0x22,0x80,0x22,0x40,0x24,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9003, {0x02,0x80,0x42,0x80,0x2A,0xC0,0x06,0xC0,0x02,0x80,0xE6,0x80,0x2A,0xC0,0x34,0xC0,0x24,0xA0,0x28,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9005, {0x20,0xC0,0x2F,0x00,0x08,0x00,0x4F,0xE0,0x68,0x00,0x08,0x00,0xEF,0xC0,0x74,0x40,0x77,0xC0,0x67,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9006, {0x08,0x80,0x44,0x80,0x2F,0xE0,0x01,0x00,0x09,0x40,0xE9,0x40,0x29,0x40,0x2F,0xC0,0x29,0x40,0x22,0x00,0x5C,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x900B, {0x21,0x80,0x33,0x40,0x1F,0xE0,0x4F,0xC0,0x6B,0x40,0x0F,0xC0,0xE9,0x40,0x6F,0xC0,0x69,0x40,0x69,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x900D, {0x21,0x00,0x25,0xC0,0x05,0x60,0x5F,0xA0,0x64,0x80,0x07,0x80,0xE4,0x80,0x67,0x80,0x64,0x80,0x64,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x900E, {0x20,0x00,0x3F,0xE0,0x07,0xC0,0x4F,0xC0,0x6B,0xC0,0x0B,0xC0,0xEC,0xC0,0x6B,0x40,0x6F,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x900F, {0x00,0x80,0x4F,0x00,0x21,0x00,0x0F,0xE0,0x07,0x80,0xFB,0xE0,0x22,0x80,0x24,0xC0,0x24,0x40,0x38,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9010, {0x00,0x00,0x1F,0xE0,0x46,0x00,0x3B,0x40,0x05,0xC0,0xF9,0x00,0x23,0x80,0x2D,0x40,0x31,0x20,0x26,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9011, {0x21,0x80,0x21,0x40,0x1F,0xE0,0x4F,0xE0,0x69,0x40,0x05,0x40,0xE5,0x80,0x67,0xC0,0x79,0x40,0x63,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9013, {0x00,0xC0,0x5F,0x00,0x3F,0xE0,0x11,0x00,0x1F,0xE0,0x11,0x00,0xFF,0xC0,0x29,0x40,0x29,0x40,0x21,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9014, {0x02,0x00,0x42,0x00,0x25,0x00,0x08,0x80,0x3F,0xC0,0xE2,0x20,0x3F,0xC0,0x2A,0x80,0x2A,0x40,0x36,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9015, {0x40,0x00,0x7F,0xE0,0x09,0x40,0x9A,0x40,0x4B,0x40,0x00,0x00,0xEF,0xC0,0x61,0x00,0x6F,0xE0,0x7F,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9016, {0x45,0x80,0x65,0x80,0x19,0x80,0x99,0xC0,0x7D,0xC0,0x0F,0x80,0xF5,0x80,0x65,0x80,0x66,0x40,0x7C,0x20,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9017, {0x00,0x00,0x5F,0xE0,0x20,0x00,0x0F,0xC0,0x08,0x40,0xEF,0xC0,0x28,0x80,0x24,0x80,0x25,0x00,0x6F,0xE0,0x50,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x9019, {0x00,0x00,0x47,0x80,0x2F,0xE0,0x00,0x00,0x07,0x80,0xE0,0x00,0x27,0x80,0x20,0x00,0x27,0x80,0x27,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x901A, {0x00,0x00,0x5F,0xC0,0x27,0x80,0x0F,0xC0,0x09,0x40,0xEF,0xC0,0x29,0x40,0x2F,0xC0,0x29,0x40,0x29,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x901D, {0x04,0x40,0x44,0x80,0x5F,0x00,0x25,0xE0,0x05,0x40,0x07,0x40,0xFD,0x40,0x25,0x40,0x26,0x40,0x24,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x901E, {0x20,0x00,0x27,0x80,0x04,0x80,0x47,0x80,0x60,0x00,0x0F,0xC0,0xE1,0x00,0x67,0x80,0x6F,0xE0,0x7F,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x901F, {0x01,0x00,0x41,0x00,0x3F,0xE0,0x0F,0xC0,0x09,0x40,0xE9,0x40,0x2F,0xC0,0x23,0x80,0x2D,0x40,0x31,0x20,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9020, {0x01,0x00,0x49,0x00,0x2F,0xC0,0x11,0x00,0x2F,0xE0,0xE0,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9021, {0x22,0x00,0x22,0x80,0x1F,0xE0,0x4F,0x80,0x65,0xA0,0x0A,0xE0,0xF3,0x80,0x66,0x80,0x6B,0x80,0x6E,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9022, {0x02,0x00,0x47,0xC0,0x2A,0x80,0x07,0x80,0x39,0x60,0xEF,0xC0,0x21,0x00,0x2F,0xC0,0x21,0x00,0x3F,0xE0,0x59,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9023, {0x01,0x00,0x41,0x00,0x3F,0xE0,0x0F,0xC0,0x09,0x40,0xEF,0xC0,0x29,0x40,0x2F,0xC0,0x21,0x00,0x3F,0xE0,0x51,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x9027, {0x22,0x80,0x22,0xC0,0x04,0x40,0x41,0x00,0x63,0x00,0x04,0x80,0xEF,0xC0,0x74,0xA0,0x67,0x80,0x67,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x902E, {0x01,0x00,0x4F,0xC0,0x21,0x40,0x1F,0xE0,0x0F,0xC0,0xF1,0x40,0x2D,0x80,0x23,0x80,0x2D,0x40,0x23,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9031, {0x00,0x00,0x4F,0xC0,0x29,0x40,0x0F,0xC0,0x0F,0xC0,0xE8,0x40,0x2F,0xC0,0x2C,0xC0,0x37,0xC0,0x20,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9032, {0x04,0x80,0x44,0x80,0x29,0x00,0x1F,0xE0,0x09,0x00,0xEF,0xC0,0x29,0x00,0x2F,0xC0,0x29,0x00,0x6F,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9035, {0x21,0x00,0x2F,0xC0,0x1F,0xE0,0x4F,0xE0,0x65,0xA0,0x09,0xE0,0xF1,0x00,0x67,0x80,0x6F,0xE0,0x7F,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9036, {0x20,0xC0,0x2F,0x00,0x1F,0xE0,0x4F,0xE0,0x67,0x80,0x09,0x40,0xFF,0xE0,0x62,0x80,0x67,0x80,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9038, {0x02,0x00,0x43,0x80,0x25,0x00,0x3F,0xC0,0x09,0x40,0xE9,0x40,0x2F,0xC0,0x25,0x40,0x25,0x00,0x29,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9039, {0x21,0x00,0x23,0x00,0x0F,0xC0,0x5F,0xE0,0x64,0xC0,0x02,0x80,0xFF,0xE0,0x63,0x00,0x6F,0xC0,0x61,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x903C, {0x00,0x00,0x5F,0xE0,0x27,0x80,0x04,0x80,0x07,0x80,0xE0,0x00,0x2F,0xC0,0x29,0x40,0x2F,0xC0,0x6F,0xC0,0x50,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x903E, {0x27,0x00,0x22,0x80,0x07,0xC0,0x5F,0xE0,0x6E,0x40,0x0B,0xC0,0xEF,0x80,0x6B,0xC0,0x6F,0xC0,0x6B,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9041, {0x00,0xC0,0x4F,0x80,0x29,0x00,0x0F,0xE0,0x0B,0xC0,0xEA,0x40,0x2B,0xC0,0x2A,0x40,0x33,0xC0,0x33,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9042, {0x08,0x80,0x45,0x00,0x3F,0xE0,0x06,0x40,0x3B,0x40,0xE5,0x80,0x3B,0x80,0x25,0x40,0x39,0x20,0x26,0x00,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9045, {0x00,0x00,0x5F,0xC0,0x30,0x40,0x1F,0xC0,0x12,0x80,0xFF,0xC0,0x31,0x00,0x37,0x80,0x31,0x00,0x27,0xC0,0x59,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9047, {0x00,0x00,0x4F,0x80,0x2A,0x80,0x2F,0x80,0x0F,0x80,0xE2,0x00,0x2F,0xC0,0x2A,0xC0,0x2B,0xC0,0x2E,0x40,0x58,0x40,0x87,0xE0,0x00,0x00,}}, +{ 0x9049, {0x22,0x00,0x23,0xC0,0x07,0x80,0x4F,0x80,0x6F,0x80,0x08,0x80,0xEF,0x80,0x68,0x80,0x6F,0x80,0x78,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x904A, {0x09,0x00,0x49,0x00,0x3F,0xE0,0x2A,0x00,0x09,0xE0,0xEE,0x40,0x2A,0x80,0x2B,0xE0,0x32,0x80,0x36,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x904B, {0x00,0x00,0x5F,0xE0,0x31,0x20,0x3F,0xE0,0x0F,0xC0,0xE9,0x40,0x2F,0xC0,0x29,0x40,0x2F,0xC0,0x3F,0xE0,0x51,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x904D, {0x00,0x00,0x5F,0xE0,0x20,0x00,0x0F,0xC0,0x0F,0xC0,0xE8,0x00,0x2F,0xC0,0x3A,0xC0,0x3F,0xC0,0x2A,0xC0,0x58,0xC0,0x87,0xE0,0x00,0x00,}}, +{ 0x904E, {0x00,0x00,0x4F,0x80,0x28,0x80,0x0B,0x80,0x1F,0xC0,0xF0,0x40,0x37,0x40,0x35,0x40,0x37,0x40,0x30,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x904F, {0x20,0x00,0x2F,0x80,0x0F,0x80,0x4F,0x80,0x6F,0x80,0x04,0x00,0xEF,0xC0,0x7B,0x40,0x6F,0xC0,0x6F,0xC0,0x58,0xC0,0x87,0xE0,0x00,0x00,}}, +{ 0x9050, {0x20,0x00,0x2E,0xC0,0x0A,0x40,0x4E,0xC0,0x68,0x00,0x0F,0xC0,0xE8,0xC0,0x68,0x80,0x6E,0xC0,0x69,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9051, {0x21,0x00,0x27,0x80,0x07,0x80,0x47,0x80,0x67,0x80,0x00,0x00,0xEF,0xC0,0x63,0x00,0x67,0x80,0x7F,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9052, {0x27,0x80,0x24,0xC0,0x1F,0xE0,0x4F,0xE0,0x6F,0xC0,0x0B,0xC0,0xED,0xC0,0x6B,0x40,0x6F,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9053, {0x08,0x80,0x45,0x00,0x3F,0xE0,0x0F,0x80,0x08,0x80,0xEF,0x80,0x28,0x80,0x2F,0x80,0x28,0x80,0x2F,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9054, {0x01,0x00,0x4F,0xC0,0x21,0x00,0x0F,0xE0,0x02,0x80,0xFF,0xE0,0x21,0x00,0x2F,0xC0,0x21,0x00,0x7F,0xE0,0x51,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x9055, {0x01,0x00,0x47,0xC0,0x22,0x40,0x2F,0xE0,0x04,0x40,0xE7,0xC0,0x20,0x80,0x27,0xC0,0x24,0x80,0x3F,0xE0,0x58,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9056, {0x21,0x00,0x33,0x00,0x1F,0xE0,0x4F,0xC0,0x6C,0xC0,0x0A,0xC0,0xEF,0xC0,0x6B,0x40,0x6F,0xC0,0x69,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9058, {0x23,0x80,0x3F,0xE0,0x07,0xC0,0x47,0xC0,0x7F,0xE0,0x07,0x80,0xE5,0x80,0x67,0x80,0x6F,0xE0,0x7F,0xE0,0x5C,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9059, {0x41,0x00,0x63,0xC0,0x0F,0x80,0x8F,0x00,0x7F,0xC0,0x09,0x00,0xFF,0xE0,0x69,0x40,0x6F,0xC0,0x6F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x905C, {0x00,0x60,0x5F,0xC0,0x25,0x40,0x0B,0x40,0x0D,0x80,0x39,0x40,0xEB,0xE0,0x2B,0xC0,0x2F,0xA0,0x39,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x905E, {0x20,0xC0,0x2F,0x80,0x0B,0xE0,0x4B,0xE0,0x6B,0xC0,0x0B,0xA0,0xEA,0xE0,0x75,0x80,0x7D,0xA0,0x62,0x60,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9060, {0x02,0x00,0x4F,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,0xEF,0x80,0x2F,0x80,0x26,0x40,0x3B,0x80,0x62,0xC0,0x5A,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9061, {0x12,0x00,0x4B,0xC0,0x7F,0x40,0x35,0x40,0x15,0xC0,0x15,0x40,0xFF,0xC0,0x35,0x40,0x29,0x40,0x32,0x40,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9063, {0x01,0x00,0x4F,0xC0,0x2F,0xC0,0x01,0x00,0x3F,0xE0,0xE7,0x80,0x24,0x80,0x27,0x80,0x27,0x80,0x24,0x80,0x5F,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9065, {0x00,0xE0,0x5F,0x40,0x29,0x40,0x05,0x80,0x0F,0xC0,0xE1,0x00,0x3F,0xE0,0x29,0x40,0x29,0x40,0x2F,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9068, {0x25,0x80,0x2F,0x80,0x1F,0xE0,0x4F,0xE0,0x7F,0x40,0x04,0xC0,0xE6,0x80,0x6A,0xC0,0x6B,0x60,0x76,0x20,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9069, {0x01,0x00,0x4F,0xE0,0x22,0x80,0x0F,0xC0,0x09,0x40,0xEF,0xC0,0x29,0x40,0x2B,0xC0,0x2A,0xC0,0x2B,0xC0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x906D, {0x03,0x80,0x5F,0xE0,0x2F,0xC0,0x0F,0xC0,0x0B,0xC0,0xEF,0xC0,0x27,0x80,0x24,0x80,0x27,0x80,0x27,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x906E, {0x01,0x00,0x41,0x00,0x2F,0xE0,0x0A,0x80,0x0F,0xE0,0xEB,0x80,0x2A,0x80,0x30,0x00,0x36,0xC0,0x6A,0xA0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x906F, {0x40,0x00,0x7F,0xE0,0x15,0x80,0x9F,0xA0,0x55,0xC0,0x17,0xC0,0xFD,0xC0,0x77,0xA0,0x74,0xA0,0x6D,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9072, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x4F,0xC0,0x6F,0xE0,0x0F,0xE0,0xEB,0x80,0x6B,0xC0,0x7F,0xE0,0x7F,0xE0,0x59,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9075, {0x04,0x80,0x83,0x00,0x5F,0xE0,0x4F,0xC0,0x0B,0x40,0xED,0xC0,0x2F,0xC0,0x2F,0xC0,0x3F,0xE0,0x62,0x80,0x58,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9076, {0x21,0x00,0x27,0x80,0x1F,0xE0,0x4F,0xE0,0x7E,0xC0,0x06,0x80,0xF9,0xE0,0x6F,0xC0,0x67,0x80,0x68,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9077, {0x00,0x00,0x5F,0xE0,0x24,0x80,0x0F,0xC0,0x0F,0xC0,0xE2,0x00,0x3F,0xE0,0x2F,0xC0,0x37,0xA0,0x24,0x80,0x5B,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9078, {0x00,0x00,0x5F,0xC0,0x2F,0xC0,0x19,0x00,0x0F,0xE0,0xE4,0x80,0x3F,0xC0,0x24,0x80,0x3F,0xE0,0x24,0x80,0x58,0x40,0x87,0xE0,0x00,0x00,}}, +{ 0x907A, {0x01,0x00,0x47,0xC0,0x27,0xC0,0x2F,0xE0,0x07,0xC0,0xE4,0x40,0x27,0xC0,0x27,0xC0,0x27,0xC0,0x22,0x80,0x5C,0x40,0x87,0xE0,0x00,0x00,}}, +{ 0x907C, {0x02,0x00,0x42,0x00,0x3F,0xE0,0x04,0xC0,0x0F,0xC0,0xF4,0xA0,0x27,0x80,0x24,0x80,0x27,0xC0,0x29,0x20,0x73,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x907D, {0x42,0x00,0x63,0xC0,0x1F,0xE0,0x9F,0xC0,0x53,0x80,0x1F,0xC0,0xF3,0x40,0x7F,0xC0,0x7F,0xC0,0x67,0xA0,0x5B,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x907F, {0x00,0x80,0x5C,0x80,0x37,0xE0,0x1D,0x40,0x11,0x40,0xFF,0xE0,0x34,0x80,0x34,0x80,0x3F,0xE0,0x30,0x80,0x58,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x9080, {0x25,0x80,0x3F,0x80,0x1F,0xE0,0x5F,0xE0,0x7F,0x40,0x09,0x40,0xFF,0x80,0x6E,0xC0,0x6B,0x60,0x76,0x20,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9081, {0x23,0x80,0x3F,0xE0,0x07,0x80,0x47,0x80,0x67,0x80,0x05,0x80,0xE7,0x80,0x6F,0xC0,0x6F,0xC0,0x6F,0xC0,0x58,0xC0,0x87,0xE0,0x00,0x00,}}, +{ 0x9082, {0x48,0x00,0x6F,0xC0,0x37,0xC0,0x9F,0xC0,0x57,0xC0,0x1F,0xC0,0xF7,0x80,0x7F,0xE0,0x72,0x80,0x76,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9083, {0x41,0x00,0x7F,0xE0,0x3F,0xE0,0x87,0xE0,0x5F,0xE0,0x03,0x40,0xFF,0xC0,0x63,0x80,0x6F,0xC0,0x6D,0xC0,0x73,0x00,0x8F,0xE0,0x00,0x00,}}, +{ 0x9084, {0x00,0x00,0x9F,0xC0,0x5F,0xC0,0x00,0x00,0x1F,0xE0,0xEF,0x80,0x28,0x80,0x2F,0xC0,0x23,0x80,0x66,0x80,0x5A,0x40,0x8F,0xE0,0x00,0x00,}}, +{ 0x9087, {0x40,0x00,0x7F,0xE0,0x05,0x60,0x9F,0xE0,0x4B,0xC0,0x0D,0xC0,0xEF,0xC0,0x6B,0xC0,0x6F,0xC0,0x6F,0xC0,0x69,0xC0,0x9F,0xE0,0x00,0x00,}}, +{ 0x9089, {0x21,0x00,0x27,0x80,0x06,0x80,0x47,0x80,0x67,0x80,0x0F,0xE0,0xEB,0xC0,0x74,0xC0,0x7F,0xE0,0x67,0x80,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x908A, {0x21,0x00,0x27,0x80,0x07,0x80,0x47,0x80,0x67,0x80,0x0F,0xE0,0xEB,0xC0,0x77,0xC0,0x7F,0xE0,0x67,0x80,0x59,0x80,0x87,0xE0,0x00,0x00,}}, +{ 0x908F, {0x20,0x00,0x2F,0xC0,0x0F,0xC0,0x4F,0xC0,0x75,0xE0,0x0D,0x80,0xEB,0xE0,0x7F,0xC0,0x6F,0xE0,0x77,0xE0,0x58,0x00,0x87,0xE0,0x00,0x00,}}, +{ 0x9091, {0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,0x7F,0xC0,0x44,0x40,0x44,0x40,0x7F,0xC0,0x40,0x00,0x40,0x20,0x7F,0xE0,0x00,0x00,}}, +{ 0x90A3, {0x00,0x00,0xFD,0xC0,0x25,0x40,0x7D,0x80,0x25,0x80,0x25,0x80,0x7D,0x40,0x25,0x20,0x25,0x20,0x45,0xE0,0x45,0x00,0x99,0x00,0x00,0x00,}}, +{ 0x90A6, {0x10,0x00,0x13,0xC0,0x7F,0x40,0x11,0x80,0x7F,0x80,0x11,0x80,0x11,0x40,0xFF,0x20,0x11,0x20,0x21,0xE0,0x21,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x90A8, {0x10,0x00,0x19,0xE0,0x7F,0x20,0x75,0x40,0x35,0x40,0x35,0x40,0x35,0x20,0x3D,0x20,0x15,0x20,0x15,0xE0,0x19,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x90AA, {0x00,0x00,0x7D,0xC0,0x29,0x40,0x29,0x80,0xFD,0x80,0x19,0x80,0x19,0x40,0x29,0x20,0x29,0x20,0x49,0xE0,0x89,0x00,0x19,0x00,0x00,0x00,}}, +{ 0x90AF, {0x34,0x00,0x34,0xE0,0x34,0xA0,0x7F,0xC0,0x35,0xC0,0x34,0xC0,0x34,0xC0,0x3C,0xA0,0x34,0xA0,0x34,0xE0,0x3C,0x80,0x34,0x80,0x00,0x00,}}, +{ 0x90B1, {0x02,0x00,0x0D,0xE0,0x31,0x20,0x21,0x40,0x3F,0x40,0x29,0x40,0x29,0x20,0x29,0x20,0x2F,0x20,0x3F,0xE0,0x61,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x90B5, {0x00,0x00,0x7D,0xE0,0x35,0x20,0x35,0x40,0x25,0x40,0x59,0x40,0x01,0x20,0x3D,0x20,0x25,0x20,0x25,0xE0,0x3D,0x00,0x25,0x00,0x00,0x00,}}, +{ 0x90B8, {0x0C,0x00,0x71,0xC0,0x51,0x40,0x51,0x80,0x7F,0x80,0x51,0x80,0x51,0x40,0x49,0x20,0xEB,0x20,0x87,0xE0,0xF9,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x90C1, {0x10,0x00,0x13,0xC0,0xFF,0x40,0x21,0x80,0x3D,0x80,0x65,0x80,0x7D,0x40,0xA5,0x20,0x3D,0x20,0x25,0xE0,0x25,0x00,0x2D,0x00,0x00,0x00,}}, +{ 0x90CA, {0x10,0x00,0x11,0xC0,0xFF,0x40,0x29,0x40,0x65,0x80,0x4D,0x80,0xAB,0x40,0x11,0x20,0x11,0x20,0x29,0xE0,0x41,0x00,0x81,0x00,0x00,0x00,}}, +{ 0x90CE, {0x10,0x00,0x11,0xC0,0x79,0x40,0x49,0x80,0x79,0x80,0x49,0x80,0x79,0x40,0x51,0x20,0x49,0x20,0x7D,0xE0,0xC1,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x90DB, {0x06,0x00,0x39,0xE0,0x37,0x20,0x33,0x40,0x41,0x40,0x3D,0x40,0x09,0x20,0x19,0x20,0x7D,0x20,0x71,0xE0,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0x90E1, {0x00,0x00,0x7D,0xC0,0x25,0x40,0xFD,0x80,0x25,0x80,0x7D,0x80,0x21,0x40,0x3D,0x20,0x65,0x20,0x65,0xE0,0xBD,0x00,0x25,0x00,0x00,0x00,}}, +{ 0x90E2, {0x00,0x00,0x3D,0xE0,0x25,0x20,0x3D,0x40,0x01,0x40,0x7D,0x40,0x11,0x20,0x19,0x20,0x3D,0x20,0x11,0xE0,0x1D,0x00,0x71,0x00,0x00,0x00,}}, +{ 0x90E4, {0x38,0x00,0x25,0xE0,0x45,0x20,0x11,0x40,0x19,0x40,0x35,0x40,0x25,0x20,0x7D,0x20,0x25,0x20,0x3D,0xE0,0x25,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x90E8, {0x20,0x00,0x21,0xC0,0xFD,0x40,0x49,0x40,0x51,0x80,0xFD,0x80,0x01,0x40,0x79,0x20,0x49,0x20,0x49,0xE0,0x79,0x00,0x49,0x00,0x00,0x00,}}, +{ 0x90ED, {0x10,0x00,0xFF,0xC0,0x01,0x40,0x7D,0x80,0x7D,0x80,0x01,0x80,0x7D,0x40,0x09,0x20,0x3D,0x20,0xF1,0xE0,0x11,0x00,0x31,0x00,0x00,0x00,}}, +{ 0x90F5, {0x06,0x00,0x79,0xC0,0x11,0x40,0x7F,0x80,0x35,0x80,0xFF,0x80,0x35,0x40,0x35,0x20,0x7F,0x20,0x11,0xE0,0x1D,0x00,0x61,0x00,0x00,0x00,}}, +{ 0x90F7, {0x20,0x00,0x4E,0xC0,0x8A,0xC0,0xDE,0xC0,0x6A,0x80,0x4E,0xC0,0xB8,0xA0,0xEC,0xA0,0x2A,0xA0,0x6E,0xE0,0x48,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x90FD, {0x20,0x00,0x21,0xC0,0x7D,0x40,0x29,0x80,0xFF,0x80,0x21,0x80,0x7D,0x40,0xA5,0x20,0x3D,0x20,0x25,0xE0,0x3D,0x00,0x25,0x00,0x00,0x00,}}, +{ 0x9102, {0x00,0x00,0x7E,0xE0,0x7A,0xA0,0x7E,0xC0,0x00,0xC0,0x3C,0xC0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x3C,0xE0,0x04,0x80,0x18,0x80,0x00,0x00,}}, +{ 0x9112, {0x30,0x00,0x3E,0xE0,0x72,0xA0,0x7E,0xC0,0x3A,0xC0,0x1C,0xC0,0x30,0xA0,0x3E,0xA0,0x72,0xA0,0x7E,0xE0,0x3A,0x80,0x3C,0x80,0x00,0x00,}}, +{ 0x9119, {0x00,0x00,0x3E,0xE0,0x3E,0xA0,0x7F,0xC0,0x19,0xC0,0x3E,0xC0,0x22,0xA0,0x3E,0xA0,0x3E,0xA0,0x2E,0xE0,0x3E,0x80,0x22,0x80,0x00,0x00,}}, +{ 0x912D, {0x24,0x00,0x3B,0xC0,0xFF,0x40,0x7D,0x80,0x7D,0x80,0x6D,0x80,0x7D,0x40,0x7D,0x20,0xFF,0x20,0xFF,0xE0,0x25,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x9130, {0x08,0x00,0x2A,0xE0,0x7F,0xA0,0x7F,0xC0,0x1A,0xC0,0x7B,0xC0,0x3F,0xA0,0x7A,0xA0,0x7F,0xA0,0x3F,0xE0,0x22,0x80,0x42,0x80,0x00,0x00,}}, +{ 0x9132, {0x00,0x00,0x7E,0xE0,0x7E,0xA0,0x64,0xC0,0x3C,0xC0,0x34,0xC0,0x3C,0xA0,0x3C,0xA0,0x3C,0xA0,0x7E,0xE0,0x18,0x80,0x10,0x80,0x00,0x00,}}, +{ 0x9149, {0x00,0x00,0xFF,0xE0,0x12,0x00,0x7F,0xC0,0x52,0x40,0x52,0xC0,0x52,0xC0,0x61,0xC0,0x7F,0xC0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x914A, {0x00,0x00,0xFE,0x00,0x33,0xE0,0x7C,0x80,0x74,0x80,0x74,0x80,0x7C,0x80,0x5C,0x80,0x7C,0x80,0x7C,0x80,0x7C,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x914B, {0x20,0x80,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x3F,0x80,0x2A,0x80,0x33,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x914C, {0x00,0x80,0x7F,0x80,0x18,0xE0,0x3E,0xA0,0x3B,0x20,0x3A,0xA0,0x3E,0x60,0x22,0x20,0x3E,0x20,0x22,0x20,0x3E,0x20,0x22,0x40,0x00,0x00,}}, +{ 0x914D, {0x00,0x00,0xFF,0xC0,0x30,0x40,0x7C,0x40,0x75,0xC0,0x75,0x40,0x75,0x00,0x5D,0x00,0x7D,0x00,0x45,0x20,0x7D,0x20,0x45,0xE0,0x00,0x00,}}, +{ 0x914E, {0x00,0x40,0xFE,0x40,0x30,0x40,0x7F,0xE0,0x74,0x40,0x75,0x40,0x7C,0xC0,0x44,0x40,0x7C,0x40,0x44,0x40,0x7C,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x9152, {0x20,0x00,0x3F,0xE0,0x05,0x00,0x9F,0xC0,0x55,0x40,0x15,0x40,0x55,0xC0,0x58,0x40,0x5F,0xC0,0x50,0x40,0x9F,0xC0,0x90,0x40,0x00,0x00,}}, +{ 0x9154, {0x01,0x00,0xFF,0x00,0x33,0x80,0x7D,0x80,0x75,0xA0,0x76,0xE0,0x7D,0x00,0x45,0x00,0x7F,0xE0,0x45,0x00,0x7D,0x00,0x45,0x00,0x00,0x00,}}, +{ 0x9156, {0x01,0x80,0xFF,0x80,0x31,0x80,0x7F,0xE0,0x77,0xC0,0x75,0x80,0x7D,0x80,0x6D,0x80,0x7D,0x80,0x7D,0xA0,0x7E,0xA0,0x44,0x60,0x00,0x00,}}, +{ 0x9158, {0x00,0x00,0xFF,0x80,0x31,0x80,0x7D,0xA0,0x76,0xA0,0x74,0x60,0x7F,0xC0,0x5D,0x40,0x7D,0x80,0x7D,0x80,0x7D,0x40,0x46,0x20,0x00,0x00,}}, +{ 0x9162, {0x01,0x00,0xFF,0x00,0x31,0xE0,0x7E,0x80,0x76,0x80,0x74,0xE0,0x7C,0x80,0x44,0x80,0x7C,0xE0,0x44,0x80,0x7C,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x9163, {0x01,0x40,0xFF,0x40,0x31,0x40,0x7F,0xE0,0x77,0x40,0x75,0x40,0x7D,0x40,0x5D,0xC0,0x7D,0x40,0x7D,0x40,0x7D,0xC0,0x45,0x40,0x00,0x00,}}, +{ 0x9165, {0x00,0x40,0xFF,0x80,0x33,0x80,0x7D,0x80,0x77,0xE0,0x75,0x80,0x7D,0x80,0x5F,0xC0,0x7F,0xC0,0x7D,0xA0,0x7D,0x80,0x45,0x80,0x00,0x00,}}, +{ 0x9169, {0x00,0xC0,0x7F,0xC0,0x18,0xE0,0x3F,0xA0,0x3A,0xC0,0x3A,0xC0,0x3E,0x80,0x2F,0xE0,0x3E,0xA0,0x3E,0xA0,0x3E,0xE0,0x22,0xA0,0x00,0x00,}}, +{ 0x916A, {0x00,0x80,0xFE,0x80,0x31,0xC0,0x7F,0x40,0x74,0x80,0x74,0x80,0x7D,0x40,0x5F,0xE0,0x7D,0x40,0x45,0x40,0x7D,0xC0,0x45,0x40,0x00,0x00,}}, +{ 0x916C, {0x00,0x20,0x7D,0x20,0x31,0x60,0x7D,0x60,0x77,0xE0,0x77,0xE0,0x7D,0x60,0x45,0x60,0x7D,0x60,0x46,0x60,0x7E,0x60,0x44,0x20,0x00,0x00,}}, +{ 0x9172, {0x00,0x00,0xFF,0xC0,0x31,0x40,0x7D,0x40,0x75,0xC0,0x74,0x40,0x7F,0x80,0x7D,0x80,0x7F,0xC0,0x7D,0x80,0x7F,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x9173, {0x01,0x80,0xFD,0x40,0x33,0xC0,0x7D,0xC0,0x77,0xE0,0x74,0x20,0x7D,0xC0,0x5D,0x40,0x7D,0xC0,0x7D,0xC0,0x7D,0x40,0x45,0xC0,0x00,0x00,}}, +{ 0x9175, {0x00,0x80,0xFC,0xA0,0x33,0xE0,0x7C,0xC0,0x77,0xE0,0x75,0x80,0x7F,0xC0,0x46,0x40,0x7F,0xE0,0x46,0x80,0x7C,0x80,0x44,0x80,0x00,0x00,}}, +{ 0x9177, {0x00,0x80,0xFF,0x80,0x31,0xE0,0x7E,0x80,0x74,0x80,0x77,0xE0,0x7C,0x00,0x5D,0xC0,0x7D,0x40,0x7D,0x40,0x7D,0xC0,0x45,0x40,0x00,0x00,}}, +{ 0x9178, {0x00,0x80,0xFD,0x00,0x33,0x40,0x7F,0xE0,0x75,0xA0,0x76,0xE0,0x7D,0xC0,0x45,0x40,0x7E,0x80,0x44,0x80,0x7D,0x40,0x46,0x20,0x00,0x00,}}, +{ 0x9182, {0x02,0x80,0xFE,0x80,0x32,0x80,0x7F,0xE0,0x7A,0xC0,0x7B,0xC0,0x7F,0xC0,0x5F,0xC0,0x7B,0xA0,0x7A,0x80,0x7A,0x80,0x4A,0x80,0x00,0x00,}}, +{ 0x9187, {0x00,0x80,0xFF,0xE0,0x31,0xC0,0x7D,0x40,0x75,0xC0,0x74,0x00,0x7D,0xC0,0x44,0x40,0x7C,0x80,0x47,0xE0,0x7C,0x80,0x45,0x80,0x00,0x00,}}, +{ 0x9189, {0x01,0x80,0xFD,0x80,0x33,0xE0,0x7D,0x40,0x75,0x40,0x77,0xA0,0x7D,0xA0,0x4D,0x80,0x7F,0xE0,0x7D,0x80,0x7D,0x80,0x45,0x80,0x00,0x00,}}, +{ 0x918B, {0x01,0x80,0xFF,0x80,0x33,0xC0,0x7F,0xC0,0x75,0x80,0x77,0xE0,0x7C,0x00,0x5D,0xC0,0x7D,0xC0,0x7D,0xC0,0x7D,0xC0,0x45,0x40,0x00,0x00,}}, +{ 0x918D, {0x00,0x00,0xFF,0xC0,0x31,0x40,0x7D,0xC0,0x75,0xC0,0x74,0x00,0x7F,0xE0,0x44,0x80,0x7D,0xE0,0x45,0x80,0x7F,0x80,0x44,0xE0,0x00,0x00,}}, +{ 0x9190, {0x02,0x00,0x7A,0xE0,0x32,0xA0,0x7F,0xE0,0x7A,0xA0,0x7A,0xE0,0x7F,0xA0,0x4D,0xA0,0x7D,0xA0,0x4F,0xA0,0x78,0xA0,0x49,0x60,0x00,0x00,}}, +{ 0x9192, {0x00,0x00,0xFF,0xC0,0x31,0xC0,0x7D,0xC0,0x75,0xC0,0x75,0x80,0x7D,0xE0,0x46,0x80,0x7D,0xC0,0x44,0x80,0x7F,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x9197, {0x01,0xC0,0xFD,0xC0,0x33,0xA0,0x7E,0x60,0x77,0xE0,0x75,0x80,0x7D,0x80,0x5F,0xE0,0x7D,0x80,0x46,0xA0,0x7E,0xA0,0x44,0x60,0x00,0x00,}}, +{ 0x919C, {0x01,0x00,0xFF,0x00,0x33,0xC0,0x7F,0x40,0x77,0xC0,0x77,0xC0,0x7D,0x80,0x45,0xC0,0x7F,0xE0,0x47,0xE0,0x7D,0xA0,0x44,0xE0,0x00,0x00,}}, +{ 0x91A2, {0x02,0x00,0xFA,0x00,0x67,0xE0,0xFF,0x80,0xFA,0x80,0xEB,0x80,0xF8,0x00,0xDF,0xC0,0xFD,0xC0,0xFD,0xC0,0xFF,0xE0,0x88,0x00,0x00,0x00,}}, +{ 0x91A4, {0x21,0xE0,0xFF,0x40,0x7F,0xE0,0xB7,0xE0,0x22,0x80,0xFF,0xE0,0x0A,0x00,0x7F,0xC0,0x53,0xC0,0x7F,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x91AA, {0x00,0x00,0xFF,0xC0,0x37,0xC0,0x7F,0xC0,0x7F,0xC0,0x79,0x80,0x7B,0x80,0x5D,0xE0,0x7B,0x80,0x7B,0x40,0x79,0xC0,0x4B,0x00,0x00,0x00,}}, +{ 0x91AB, {0x00,0x00,0x7D,0x80,0x7E,0xE0,0x7F,0xE0,0x7B,0xC0,0x7F,0xC0,0xFF,0xE0,0x0A,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x91AF, {0x01,0x80,0xFF,0xE0,0x37,0xC0,0x7F,0xC0,0x7A,0x40,0x7B,0xC0,0x7A,0x60,0x5C,0x20,0x7B,0xC0,0x7B,0xC0,0x7F,0xE0,0x48,0x00,0x00,0x00,}}, +{ 0x91B4, {0x01,0x80,0xFF,0xC0,0x37,0xC0,0x7F,0xC0,0x7F,0xC0,0x78,0x00,0x7F,0xE0,0x5B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7F,0xE0,0x48,0x00,0x00,0x00,}}, +{ 0x91B5, {0x01,0x80,0xFD,0xC0,0x33,0xE0,0x7B,0xC0,0x7A,0xC0,0x7B,0xE0,0x7B,0x80,0x5B,0xE0,0x7B,0xC0,0x7F,0xE0,0x7D,0xA0,0x49,0x80,0x00,0x00,}}, +{ 0x91B8, {0x00,0x80,0xFF,0xE0,0x36,0x60,0x7F,0xE0,0x7B,0xC0,0x7B,0xC0,0x79,0x80,0x5F,0xE0,0x7B,0xC0,0x4F,0x80,0x79,0xC0,0x4E,0x20,0x00,0x00,}}, +{ 0x91BA, {0x00,0xC0,0xFF,0x80,0x37,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x59,0x80,0x7F,0xE0,0x7F,0xE0,0x7B,0x40,0x4D,0xA0,0x00,0x00,}}, +{ 0x91C0, {0x01,0x80,0xFF,0xE0,0x37,0xE0,0x7F,0xE0,0x7B,0xC0,0x7F,0xE0,0x7B,0xC0,0x5B,0xC0,0x7F,0xE0,0x7F,0xC0,0x7B,0xC0,0x4E,0x20,0x00,0x00,}}, +{ 0x91C1, {0x6E,0x80,0x6A,0x80,0x6F,0x80,0x7F,0xE0,0x7F,0xC0,0xFF,0x80,0x73,0x80,0x7F,0x80,0x3F,0x80,0x1F,0x80,0xEB,0x60,0x33,0x00,0x00,0x00,}}, +{ 0x91C6, {0x01,0x80,0x06,0x00,0x7C,0x80,0x24,0x80,0x25,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x91C7, {0x00,0xC0,0x03,0x40,0x7C,0x40,0x24,0x80,0x13,0x00,0x04,0x00,0xFF,0xE0,0x0E,0x00,0x35,0x80,0xC4,0x60,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x91C8, {0x0C,0x00,0x33,0xC0,0xE6,0x40,0xAA,0x40,0x73,0xC0,0xFF,0x40,0x23,0x00,0x73,0x00,0x6A,0x80,0xA4,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x91C9, {0x06,0xC0,0x7A,0xC0,0x52,0xC0,0x3D,0xE0,0x7F,0xE0,0x31,0xE0,0x39,0xE0,0x35,0xE0,0x33,0xE0,0x53,0xE0,0x11,0xE0,0x11,0x20,0x00,0x00,}}, +{ 0x91CB, {0x08,0x00,0xF7,0xC0,0xAF,0xC0,0x7F,0xC0,0xFF,0xC0,0x61,0x00,0x77,0xE0,0x6A,0xC0,0x6F,0xE0,0xA7,0xC0,0x23,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x91CC, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x91CD, {0x01,0x80,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x91CE, {0x00,0x00,0x7F,0xC0,0x68,0x80,0x79,0x80,0x6F,0xE0,0x68,0xC0,0x78,0x80,0x20,0x80,0x78,0x80,0x38,0x80,0xE0,0x80,0x01,0x80,0x00,0x00,}}, +{ 0x91CF, {0x00,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x91D0, {0x21,0x00,0xFB,0xE0,0xFF,0x80,0x7B,0xE0,0xFF,0xC0,0x7F,0x80,0x72,0x80,0x7F,0x80,0x7F,0xC0,0x7F,0xC0,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x91D1, {0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xDF,0x60,0x04,0x00,0x7F,0xC0,0x04,0x00,0x24,0x80,0x15,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x91D6, {0x10,0x00,0x1B,0xE0,0x3C,0xA0,0x24,0xA0,0x78,0xA0,0x10,0xA0,0x7C,0xA0,0x10,0xA0,0x3D,0x20,0x39,0x20,0x1E,0x20,0x74,0x40,0x00,0x00,}}, +{ 0x91D8, {0x20,0x00,0x37,0xE0,0x78,0x80,0x48,0x80,0xF0,0x80,0x20,0x80,0xF8,0x80,0x20,0x80,0x78,0x80,0x70,0x80,0x38,0x80,0xE1,0x80,0x00,0x00,}}, +{ 0x91DB, {0x10,0x80,0x18,0x80,0x3C,0x80,0x27,0xE0,0x79,0xA0,0x10,0xA0,0x7C,0xA0,0x10,0xA0,0x3D,0x20,0x39,0x20,0x1E,0x20,0x74,0x40,0x00,0x00,}}, +{ 0x91DC, {0x09,0x00,0x31,0xC0,0x4E,0x40,0x0E,0x00,0x31,0x80,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x24,0x80,0x15,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x91DD, {0x20,0x80,0x30,0x80,0x78,0x80,0x48,0x80,0xF7,0xE0,0x20,0x80,0xF8,0x80,0x20,0x80,0x78,0x80,0x70,0x80,0x38,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x91DF, {0x20,0x00,0x31,0x80,0x78,0x80,0x48,0x80,0xF1,0x80,0x21,0x80,0xF9,0x80,0x22,0xC0,0x7A,0x40,0x74,0x40,0x3C,0x20,0xE8,0x20,0x00,0x00,}}, +{ 0x91E1, {0x11,0x00,0x10,0x80,0x24,0x80,0x0E,0x00,0x13,0x00,0x3F,0x80,0xC4,0x60,0x3F,0x80,0x15,0x80,0x15,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x91E3, {0x10,0x80,0x18,0x80,0x3C,0xE0,0x25,0x20,0x79,0x20,0x12,0xA0,0x7C,0x60,0x10,0x20,0x3C,0x20,0x38,0x20,0x1C,0x20,0x70,0x40,0x00,0x00,}}, +{ 0x91E6, {0x10,0x00,0x18,0x00,0x3D,0xE0,0x25,0x20,0x79,0x20,0x11,0x20,0x7D,0x20,0x11,0x20,0x3D,0x20,0x39,0x20,0x1D,0xE0,0x71,0x20,0x00,0x00,}}, +{ 0x91E7, {0x10,0x20,0x11,0x20,0x29,0xA0,0x25,0xA0,0x79,0xA0,0x11,0xA0,0x7D,0xA0,0x11,0xA0,0x5D,0xA0,0x3A,0xA0,0x1C,0x20,0x70,0x20,0x00,0x00,}}, +{ 0x91F5, {0x20,0x00,0x37,0xC0,0x7A,0x40,0x4B,0x40,0xF2,0xC0,0x21,0x80,0xF9,0x80,0x21,0x80,0x79,0x80,0x73,0x80,0x3C,0x40,0xE8,0x20,0x00,0x00,}}, +{ 0x91F6, {0x21,0x80,0x33,0x80,0x7B,0x80,0x4B,0xC0,0xF3,0xC0,0x27,0xC0,0xFB,0xC0,0x23,0xC0,0x7B,0xC0,0x72,0x20,0x3A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x91FC, {0x20,0x00,0x37,0xC0,0x79,0x40,0x4D,0x40,0xF3,0x40,0x21,0x40,0xF9,0xC0,0x21,0xC0,0x7A,0x60,0x72,0x40,0x3C,0x40,0xE8,0x80,0x00,0x00,}}, +{ 0x91FF, {0x20,0x40,0x30,0x80,0x7B,0x00,0x4A,0x00,0xF3,0xE0,0x22,0x80,0xFA,0x80,0x22,0x80,0x7E,0x80,0x74,0x80,0x38,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x920D, {0x21,0x00,0x31,0x00,0x79,0xE0,0x4F,0x40,0xF3,0x40,0x23,0x40,0xFB,0x40,0x23,0x40,0x7B,0xC0,0x71,0x20,0x39,0x20,0xE0,0xE0,0x00,0x00,}}, +{ 0x920E, {0x11,0x00,0x19,0x00,0x3D,0xE0,0x26,0x20,0x7C,0xA0,0x10,0xA0,0x7D,0x60,0x11,0xE0,0x3F,0x20,0x38,0x20,0x1C,0x20,0x70,0x40,0x00,0x00,}}, +{ 0x9211, {0x20,0x00,0x33,0xE0,0x7A,0x00,0x4B,0xC0,0xF3,0x40,0x23,0x40,0xFB,0xC0,0x22,0x80,0x7A,0x80,0x75,0xC0,0x3D,0x40,0xEA,0x20,0x00,0x00,}}, +{ 0x9214, {0x21,0x80,0x31,0x80,0x79,0x80,0x4B,0xC0,0xF3,0xC0,0x25,0xA0,0xFD,0xE0,0x21,0xC0,0x78,0x80,0x70,0x80,0x3B,0x00,0xEC,0x00,0x00,0x00,}}, +{ 0x9215, {0x20,0x00,0x37,0x80,0x7A,0x80,0x4A,0x80,0xF2,0x80,0x27,0xE0,0xFA,0x80,0x22,0x80,0x7A,0x80,0x72,0x80,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x921E, {0x10,0x80,0x18,0x80,0x3D,0xE0,0x25,0xE0,0x7A,0x20,0x11,0xA0,0x7C,0x20,0x10,0xA0,0x3D,0x20,0x38,0x20,0x1C,0x20,0x70,0x40,0x00,0x00,}}, +{ 0x9229, {0x20,0x00,0x37,0xE0,0x7B,0xC0,0x4B,0xC0,0xF2,0x40,0x22,0x40,0xFB,0xC0,0x22,0x40,0x7A,0x00,0x74,0x00,0x3C,0x00,0xE8,0x00,0x00,0x00,}}, +{ 0x922C, {0x20,0x00,0x33,0xC0,0x7A,0x40,0x4A,0x40,0xF3,0xC0,0x23,0xC0,0xFB,0x80,0x23,0x80,0x7A,0x80,0x74,0x80,0x3C,0x40,0xE8,0x20,0x00,0x00,}}, +{ 0x9234, {0x21,0x00,0x31,0x00,0x7B,0x80,0x4C,0x80,0xF7,0xC0,0x20,0x20,0xFF,0xC0,0x21,0x40,0x79,0x40,0x71,0xC0,0x39,0x00,0xE1,0x00,0x00,0x00,}}, +{ 0x9237, {0x20,0x80,0x30,0x80,0x78,0x80,0x4F,0xE0,0xF0,0x80,0x20,0x80,0xFB,0xC0,0x22,0x40,0x7A,0x40,0x72,0x40,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x923F, {0x10,0x00,0x19,0xE0,0x3D,0xE0,0x25,0xE0,0x79,0xE0,0x11,0xE0,0x7D,0xE0,0x11,0xE0,0x3D,0xE0,0x39,0xE0,0x1D,0x20,0x70,0x00,0x00,0x00,}}, +{ 0x9244, {0x20,0x80,0x30,0x80,0x7A,0x80,0x4B,0xC0,0xF2,0x80,0x24,0x80,0xFF,0xE0,0x20,0x80,0x78,0x80,0x71,0x80,0x3A,0x40,0xEC,0x20,0x00,0x00,}}, +{ 0x9245, {0x20,0x00,0x37,0xE0,0x7A,0x00,0x4B,0xC0,0xF2,0x40,0x22,0x40,0xFA,0x40,0x23,0xC0,0x7A,0x40,0x72,0x00,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x9248, {0x21,0x80,0x31,0x80,0x7B,0xE0,0x4B,0xE0,0xF7,0x00,0x21,0x00,0xF9,0x40,0x21,0x80,0x79,0x00,0x71,0x20,0x39,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x9249, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4F,0xE0,0xF5,0xC0,0x23,0x40,0xF9,0x80,0x21,0x80,0x79,0x80,0x71,0xC0,0x3F,0xE0,0xE0,0x20,0x00,0x00,}}, +{ 0x924B, {0x21,0x00,0x31,0x00,0x7B,0xC0,0x4B,0xC0,0xF7,0x40,0x23,0xC0,0xFB,0xC0,0x23,0xC0,0x7A,0x80,0x72,0x20,0x3A,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x9250, {0x20,0x00,0x37,0xE0,0x79,0x00,0x49,0x00,0xF2,0x00,0x23,0xC0,0xFE,0x40,0x22,0x40,0x7A,0x40,0x72,0x40,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x9257, {0x22,0x80,0x32,0x80,0x7A,0x80,0x4F,0xE0,0xF2,0xC0,0x22,0x80,0xFA,0x80,0x23,0x80,0x7A,0x80,0x72,0x80,0x3B,0x80,0xE2,0x80,0x00,0x00,}}, +{ 0x925A, {0x30,0x80,0x31,0x00,0x36,0xE0,0x2D,0xE0,0x7D,0xE0,0x35,0xE0,0x7D,0xE0,0x35,0xE0,0x7F,0xE0,0x32,0xE0,0x3A,0xC0,0x64,0xC0,0x00,0x00,}}, +{ 0x925B, {0x21,0x80,0x30,0x80,0x5A,0x80,0x4A,0x40,0xF4,0x40,0x24,0x20,0xFB,0xC0,0x22,0x40,0x7A,0x40,0x72,0x40,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x925E, {0x21,0x80,0x31,0xC0,0x7B,0xE0,0x4B,0xE0,0xF3,0xC0,0x23,0xC0,0xFA,0xC0,0x22,0xC0,0x7A,0x80,0x73,0xE0,0x3F,0xE0,0xE9,0x20,0x00,0x00,}}, +{ 0x9262, {0x21,0x00,0x31,0x00,0x79,0x00,0x4F,0xE0,0xF1,0x00,0x21,0x80,0xFB,0x80,0x25,0x40,0x79,0x20,0x73,0xC0,0x39,0x00,0xE1,0x00,0x00,0x00,}}, +{ 0x9264, {0x10,0x80,0x18,0x80,0x3D,0xE0,0x25,0xE0,0x7B,0xA0,0x11,0xE0,0x7D,0xE0,0x11,0xE0,0x3D,0x20,0x38,0x20,0x1C,0x20,0x70,0x40,0x00,0x00,}}, +{ 0x9266, {0x20,0x00,0x37,0xE0,0x78,0x80,0x4A,0x80,0xF2,0x80,0x22,0xC0,0xFA,0x80,0x22,0x80,0x7A,0x80,0x72,0x80,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x9271, {0x20,0x80,0x30,0x80,0x7B,0xE0,0x4A,0x00,0xF2,0x00,0x22,0x80,0xFA,0x80,0x24,0x80,0x7D,0x40,0x75,0x40,0x3F,0xA0,0xE8,0x20,0x00,0x00,}}, +{ 0x927E, {0x21,0x00,0x31,0x00,0x7A,0x40,0x4F,0xE0,0xF2,0x80,0x22,0x80,0xFF,0xC0,0x24,0x80,0x7C,0x80,0x77,0xE0,0x38,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x9280, {0x20,0x00,0x33,0xC0,0x7A,0x40,0x4B,0xC0,0xF2,0x40,0x22,0x40,0xFB,0xC0,0x23,0x20,0x6A,0xC0,0x72,0x80,0x3B,0x40,0xE4,0x20,0x00,0x00,}}, +{ 0x9283, {0x21,0x00,0x31,0x00,0x7F,0xE0,0x49,0x40,0xF2,0xE0,0x27,0xA0,0xF9,0x80,0x21,0x80,0x7A,0x80,0x72,0xA0,0x3C,0xA0,0xE8,0x60,0x00,0x00,}}, +{ 0x9285, {0x10,0x00,0x1B,0xE0,0x3E,0x20,0x27,0xE0,0x7A,0x20,0x13,0xE0,0x7F,0x60,0x13,0x60,0x3F,0x60,0x3B,0xE0,0x1E,0x20,0x72,0x60,0x00,0x00,}}, +{ 0x9291, {0x20,0x80,0x30,0x80,0x7A,0x80,0x4B,0xC0,0xF2,0x80,0x24,0x80,0xFF,0xE0,0x21,0x80,0x7A,0x80,0x72,0xA0,0x3C,0xA0,0xE8,0x60,0x00,0x00,}}, +{ 0x9293, {0x23,0x80,0x31,0x80,0x79,0x80,0x4A,0x40,0xF7,0xE0,0x21,0x80,0xF9,0x80,0x23,0xC0,0x79,0x80,0x71,0x80,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x9295, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4F,0xC0,0xF1,0xC0,0x27,0xC0,0xFD,0x80,0x27,0xE0,0x7D,0xE0,0x71,0xC0,0x3A,0x40,0xE4,0x20,0x00,0x00,}}, +{ 0x9296, {0x21,0x80,0x33,0x80,0x7B,0xC0,0x4B,0xC0,0xF5,0x80,0x27,0xE0,0xF9,0x80,0x23,0xC0,0x7B,0xC0,0x75,0xA0,0x39,0x80,0xE1,0x80,0x00,0x00,}}, +{ 0x9298, {0x10,0x80,0x18,0x80,0x3D,0xE0,0x25,0x20,0x7B,0x40,0x10,0xC0,0x7C,0x80,0x11,0xE0,0x3F,0x20,0x39,0x20,0x1D,0xE0,0x71,0x20,0x00,0x00,}}, +{ 0x929A, {0x21,0x80,0x31,0x80,0x79,0x80,0x4F,0xA0,0xF3,0xC0,0x21,0x80,0xFB,0xC0,0x25,0xA0,0x7A,0xA0,0x72,0xA0,0x3C,0xA0,0xE8,0x60,0x00,0x00,}}, +{ 0x929B, {0x20,0x40,0x30,0x80,0x7B,0x80,0x49,0x80,0xF7,0xE0,0x21,0x80,0xF9,0x80,0x23,0xC0,0x7A,0x40,0x72,0x40,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x929C, {0x64,0x00,0x44,0xE0,0x8A,0x00,0x3F,0xE0,0x24,0x40,0x7F,0x40,0x64,0x40,0xF7,0x40,0x6E,0x40,0x66,0x40,0x78,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x92AD, {0x21,0x00,0x31,0x40,0x7F,0xE0,0x41,0x00,0xF7,0xC0,0x21,0x00,0xFF,0xE0,0x21,0x40,0x78,0xC0,0x70,0xA0,0x3B,0x60,0xEC,0x20,0x00,0x00,}}, +{ 0x92B7, {0x21,0x80,0x31,0x80,0x7B,0xE0,0x4D,0xA0,0xF3,0xC0,0x22,0x40,0xFB,0xC0,0x22,0x40,0x7B,0xC0,0x72,0x40,0x3A,0x40,0xE2,0xC0,0x00,0x00,}}, +{ 0x92B9, {0x20,0xC0,0x33,0x80,0x7F,0xE0,0x4F,0xE0,0xF3,0xC0,0x25,0xA0,0xFB,0x80,0x21,0xC0,0x7A,0xE0,0x72,0x20,0x3C,0x20,0xE8,0xC0,0x00,0x00,}}, +{ 0x92CF, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4B,0xC0,0xF3,0xC0,0x23,0xC0,0xFD,0xA0,0x25,0xA0,0x79,0x80,0x72,0x80,0x3C,0x40,0xE8,0x20,0x00,0x00,}}, +{ 0x92D2, {0x21,0x00,0x33,0xC0,0x7E,0x80,0x49,0x80,0xF6,0xE0,0x23,0xC0,0xF8,0x80,0x23,0xC0,0x78,0x80,0x77,0xE0,0x38,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x92E4, {0x20,0x80,0x2E,0x80,0x7A,0x80,0x5F,0xE0,0xFA,0xA0,0x2E,0xA0,0xFA,0xA0,0x2B,0xA0,0xBE,0xA0,0x79,0x20,0x32,0x20,0xC4,0x40,0x00,0x00,}}, +{ 0x92E9, {0x22,0x80,0x32,0xC0,0x7F,0xE0,0x48,0x80,0xF1,0x80,0x27,0xE0,0xFA,0x00,0x22,0x00,0x7A,0x00,0x72,0x00,0x3A,0x00,0xE1,0xC0,0x00,0x00,}}, +{ 0x92EA, {0x21,0xC0,0x31,0x20,0x7F,0xE0,0x49,0x00,0xF7,0xC0,0x25,0x40,0xFF,0xC0,0x25,0x40,0x7F,0xC0,0x75,0x40,0x3D,0x40,0xE5,0x40,0x00,0x00,}}, +{ 0x92ED, {0x22,0x40,0x31,0x40,0x79,0x00,0x4B,0xC0,0xF2,0x40,0x22,0x40,0xFB,0xC0,0x21,0x80,0x7A,0x80,0x72,0xA0,0x3C,0xA0,0xE8,0x60,0x00,0x00,}}, +{ 0x92F2, {0x20,0x40,0x33,0x80,0x7A,0x00,0x4B,0xE0,0xF2,0x80,0x22,0x80,0xFA,0x80,0x27,0xE0,0x78,0x00,0x71,0x40,0x3A,0x20,0xE4,0x20,0x00,0x00,}}, +{ 0x92F3, {0x21,0x00,0x31,0x00,0x7F,0xE0,0x4B,0xC0,0xF1,0x00,0x27,0xE0,0xF9,0x40,0x27,0xE0,0x7B,0x40,0x75,0xC0,0x38,0x40,0xE0,0xC0,0x00,0x00,}}, +{ 0x92F8, {0x20,0x00,0x37,0xC0,0x5C,0x40,0x4F,0xC0,0xF4,0x80,0x27,0xE0,0xFC,0x80,0x24,0x80,0x7F,0xC0,0x76,0x40,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x92FA, {0x61,0x80,0x61,0x80,0x77,0xE0,0x5C,0x00,0xF7,0xC0,0x65,0xC0,0xF5,0xC0,0x6B,0xC0,0xF3,0xC0,0x65,0xA0,0x79,0xA0,0xD0,0xE0,0x00,0x00,}}, +{ 0x92FC, {0x30,0x00,0x37,0xE0,0x2E,0x60,0x4D,0x60,0x7F,0xE0,0x14,0xA0,0x7E,0xE0,0x16,0xE0,0x7E,0xE0,0x37,0xE0,0x3C,0x20,0x64,0x60,0x00,0x00,}}, +{ 0x9306, {0x20,0x80,0x37,0xE0,0x78,0x80,0x4B,0xC0,0xF7,0xE0,0x20,0x00,0xFB,0xC0,0x22,0x40,0x7B,0xC0,0x73,0xC0,0x3A,0x40,0xE2,0xC0,0x00,0x00,}}, +{ 0x930F, {0x60,0x00,0x6F,0xE0,0x73,0x80,0x5F,0xC0,0xF8,0x40,0x68,0x40,0xFF,0xC0,0x6B,0xC0,0xF3,0x80,0x63,0x80,0x7F,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x9310, {0x21,0x40,0x31,0x40,0x7A,0x80,0x4F,0xE0,0xFA,0x80,0x23,0xC0,0xFA,0x80,0x22,0x80,0x7B,0xC0,0x72,0x80,0x3B,0xE0,0xE2,0x00,0x00,0x00,}}, +{ 0x9318, {0x20,0xC0,0x37,0x80,0x78,0x80,0x4F,0xE0,0xF2,0xC0,0x27,0xE0,0xFA,0xC0,0x22,0xC0,0x7F,0xE0,0x70,0x80,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x9319, {0x11,0xE0,0x19,0xE0,0x3E,0xC0,0x27,0xE0,0x79,0xE0,0x10,0x00,0x7D,0xE0,0x11,0xE0,0x3D,0xE0,0x39,0xE0,0x1D,0xE0,0x71,0x20,0x00,0x00,}}, +{ 0x931A, {0x20,0x60,0x37,0xC0,0x7B,0xE0,0x4C,0x20,0xF3,0xC0,0x21,0xC0,0xFF,0xE0,0x21,0xC0,0x7B,0xC0,0x71,0x80,0x39,0x80,0xE1,0x80,0x00,0x00,}}, +{ 0x9320, {0x20,0x80,0x30,0x80,0x7F,0xE0,0x48,0x20,0xF7,0xE0,0x20,0x80,0xFA,0x80,0x22,0xC0,0x7A,0x80,0x72,0x80,0x3D,0x80,0xE8,0xE0,0x00,0x00,}}, +{ 0x9322, {0x21,0x80,0x31,0x40,0x7F,0xE0,0x4F,0xC0,0xF1,0xA0,0x26,0x60,0xF9,0x80,0x23,0xE0,0x7F,0xC0,0x71,0xA0,0x3E,0xE0,0xE0,0x20,0x00,0x00,}}, +{ 0x9323, {0x20,0x00,0x37,0xC0,0x79,0x40,0x4F,0xC0,0xF3,0x80,0x25,0xC0,0xFF,0xC0,0x21,0x40,0x7F,0xC0,0x72,0x80,0x3F,0xC0,0xE9,0x20,0x00,0x00,}}, +{ 0x9326, {0x21,0x00,0x32,0x00,0x7B,0xC0,0x4B,0xC0,0xF2,0x40,0x23,0xC0,0xF9,0x00,0x27,0xE0,0x7D,0x20,0x75,0x20,0x3D,0x40,0xE1,0x00,0x00,0x00,}}, +{ 0x9328, {0x22,0x80,0x32,0x80,0x7F,0xE0,0x4A,0x80,0xF0,0x00,0x27,0xC0,0xFD,0x40,0x25,0x40,0x6F,0xC0,0x75,0x40,0x3F,0xC0,0xE4,0x40,0x00,0x00,}}, +{ 0x932B, {0x20,0x00,0x37,0xC0,0x7C,0x40,0x4F,0xC0,0xF7,0xC0,0x22,0x00,0xFB,0xE0,0x25,0xA0,0x7A,0xA0,0x74,0xA0,0x39,0x20,0xE0,0xC0,0x00,0x00,}}, +{ 0x932C, {0x20,0x80,0x30,0x80,0x7F,0xE0,0x48,0x80,0xF3,0xC0,0x22,0xC0,0xFB,0xC0,0x23,0xC0,0x79,0xC0,0x72,0xA0,0x3C,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x932E, {0x10,0x00,0x1B,0xE0,0x3E,0xA0,0x27,0xE0,0x7B,0xA0,0x12,0xA0,0x7F,0xE0,0x13,0xE0,0x3F,0xE0,0x3B,0xA0,0x1F,0xE0,0x72,0x20,0x00,0x00,}}, +{ 0x932F, {0x22,0x80,0x32,0x80,0x7F,0xE0,0x4A,0x80,0xF2,0x80,0x27,0xE0,0xF8,0x00,0x23,0xC0,0x7A,0x40,0x73,0xC0,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x9332, {0x20,0x00,0x33,0xC0,0x58,0x40,0x4B,0xC0,0xF7,0xE0,0x20,0x80,0xFC,0xA0,0x22,0xC0,0x79,0xC0,0x76,0xA0,0x38,0x80,0xE0,0x80,0x00,0x00,}}, +{ 0x9335, {0x21,0x80,0x33,0xC0,0x7F,0xE0,0x49,0x80,0xF1,0x80,0x23,0xA0,0xFB,0xC0,0x27,0x80,0x7B,0x80,0x73,0xA0,0x3B,0xA0,0xE2,0xE0,0x00,0x00,}}, +{ 0x933A, {0x21,0x80,0x33,0xC0,0x7F,0xE0,0x49,0x80,0xF1,0x80,0x27,0xE0,0xF9,0x80,0x21,0xC0,0x79,0x40,0x71,0x40,0x3A,0x40,0xE4,0x80,0x00,0x00,}}, +{ 0x933B, {0x20,0x80,0x33,0xC0,0x78,0xA0,0x4F,0xE0,0xF3,0xC0,0x25,0x80,0xFD,0x80,0x25,0x80,0x7D,0x80,0x77,0xE0,0x3C,0x60,0xE0,0x20,0x00,0x00,}}, +{ 0x9344, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4B,0xC0,0xF2,0x40,0x22,0x40,0xFB,0xC0,0x21,0x80,0x7B,0xC0,0x75,0xA0,0x39,0xA0,0xE1,0x80,0x00,0x00,}}, +{ 0x934B, {0x20,0x00,0x33,0xC0,0x7A,0x40,0x4A,0xC0,0xF2,0xC0,0x27,0xE0,0xFC,0x20,0x25,0xA0,0x7D,0xA0,0x75,0xA0,0x3C,0x20,0xE4,0x60,0x00,0x00,}}, +{ 0x934D, {0x20,0x80,0x30,0x80,0x7F,0xE0,0x4D,0x80,0xF7,0xE0,0x25,0x80,0xFC,0x00,0x27,0xC0,0x7D,0x40,0x78,0x80,0x39,0x80,0xF6,0x60,0x00,0x00,}}, +{ 0x9354, {0x20,0x00,0x37,0xE0,0x7F,0xE0,0x4E,0x60,0xF3,0xC0,0x20,0x00,0xFF,0xE0,0x21,0x00,0x7B,0xC0,0x70,0x40,0x38,0x40,0xE0,0x80,0x00,0x00,}}, +{ 0x9356, {0x62,0x80,0x62,0xC0,0x7F,0xE0,0x53,0x80,0xF2,0x80,0x63,0x80,0xF2,0x80,0x6F,0xE0,0xF5,0x80,0x66,0x60,0x77,0xE0,0xC4,0x00,0x00,0x00,}}, +{ 0x935B, {0x21,0x00,0x33,0xC0,0x7D,0xC0,0x4F,0xC0,0xF7,0x60,0x24,0x20,0xFF,0xC0,0x25,0x40,0x7F,0xC0,0x7F,0x80,0x34,0xC0,0xE7,0x20,0x00,0x00,}}, +{ 0x935C, {0x20,0x00,0x37,0xC0,0x7D,0x40,0x4F,0x40,0xF7,0x40,0x24,0x00,0xFF,0xC0,0x25,0xC0,0x7F,0xC0,0x76,0x80,0x3C,0xC0,0xE5,0x20,0x00,0x00,}}, +{ 0x9360, {0x21,0x00,0x33,0x00,0x7B,0xC0,0x4B,0xC0,0xF2,0x40,0x23,0xC0,0xF8,0x00,0x27,0xE0,0x7B,0xC0,0x73,0xC0,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x936C, {0x21,0x80,0x22,0x80,0x76,0x80,0x8A,0xA0,0x7F,0xA0,0x23,0xC0,0xF7,0x80,0x26,0xC0,0xBA,0xC0,0x63,0x40,0x73,0x20,0xC2,0x20,0x00,0x00,}}, +{ 0x936E, {0x63,0x00,0x63,0x00,0x76,0x80,0x5F,0xC0,0xF0,0x20,0x6E,0x40,0xFB,0xC0,0x6F,0xC0,0xFF,0x80,0x6F,0xC0,0x7B,0xC0,0xCB,0xC0,0x00,0x00,}}, +{ 0x9375, {0x20,0x80,0x23,0xC0,0x7C,0xC0,0x57,0xE0,0xF4,0xC0,0x2F,0xC0,0xF0,0x80,0x2B,0xC0,0xFC,0x80,0x67,0xE0,0x6A,0x80,0xD1,0xE0,0x00,0x00,}}, +{ 0x937C, {0x61,0xC0,0x71,0xA0,0x5F,0xE0,0x4F,0xE0,0xEF,0xC0,0x69,0xC0,0xFF,0xC0,0x6D,0x80,0xFF,0x80,0x6F,0xE0,0x71,0x60,0xD2,0x20,0x00,0x00,}}, +{ 0x937E, {0x20,0xC0,0x33,0x80,0x7F,0xE0,0x48,0x80,0xF3,0xC0,0x23,0xC0,0xFB,0xC0,0x20,0x80,0x7B,0xC0,0x70,0x80,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x938C, {0x64,0x80,0x63,0x00,0x7F,0xE0,0x9F,0xC0,0xF2,0xC0,0x2F,0xE0,0xF2,0xC0,0x2F,0xC0,0xB6,0x80,0x6A,0xC0,0x72,0xA0,0xC2,0x80,0x00,0x00,}}, +{ 0x9394, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x49,0x40,0xF3,0x40,0x25,0x80,0xF1,0x80,0x22,0x40,0x7F,0xE0,0x72,0x40,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x9396, {0x20,0x80,0x34,0xA0,0x7A,0xA0,0x4B,0xC0,0xF2,0x40,0x23,0xC0,0xFA,0x40,0x23,0xC0,0x7A,0x40,0x73,0xC0,0x3A,0x40,0xEC,0x20,0x00,0x00,}}, +{ 0x9397, {0x21,0x80,0x31,0x80,0x7B,0xC0,0x4F,0xE0,0xF3,0xC0,0x22,0x40,0xFB,0xC0,0x23,0xC0,0x7F,0xE0,0x77,0xE0,0x3B,0xE0,0xE2,0x20,0x00,0x00,}}, +{ 0x939A, {0x60,0x80,0x69,0x00,0x75,0xC0,0x51,0x40,0xF1,0xC0,0x2D,0x00,0xF5,0xC0,0x25,0x40,0xF5,0x40,0x65,0xC0,0x7A,0x00,0xD1,0xE0,0x00,0x00,}}, +{ 0x93A7, {0x21,0x00,0x33,0x40,0x7B,0x40,0x4B,0x40,0xF7,0xE0,0x20,0x00,0xFB,0xC0,0x22,0x40,0x7B,0xC0,0x72,0x40,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x93AC, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4B,0xC0,0xF2,0x40,0x23,0xC0,0xF8,0x00,0x27,0xE0,0x7D,0xA0,0x75,0xA0,0x3D,0xA0,0xE4,0x60,0x00,0x00,}}, +{ 0x93AD, {0x22,0xC0,0x33,0x00,0x7B,0xE0,0x4D,0xE0,0xF5,0x40,0x25,0xC0,0xFD,0x40,0x25,0xC0,0x7D,0xC0,0x77,0xE0,0x3B,0x40,0xEC,0x20,0x00,0x00,}}, +{ 0x93AE, {0x20,0x80,0x37,0xE0,0x78,0x80,0x4B,0xC0,0xF3,0xC0,0x22,0x40,0xFB,0xC0,0x22,0x40,0x7B,0xC0,0x77,0xE0,0x3A,0x40,0xE4,0x20,0x00,0x00,}}, +{ 0x93B0, {0x23,0x80,0x32,0xC0,0x7F,0xE0,0x4F,0xE0,0xF3,0x80,0x22,0x80,0xFC,0x40,0x27,0xE0,0x7D,0xC0,0x75,0xC0,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x93B9, {0x69,0x80,0x64,0x80,0x7D,0x40,0x5E,0x20,0xF7,0xC0,0x61,0x80,0xF3,0xE0,0x6D,0x80,0xF5,0xC0,0x66,0x40,0x7A,0x00,0xD1,0xE0,0x00,0x00,}}, +{ 0x93C3, {0x65,0x80,0x65,0x80,0x75,0xE0,0x5F,0xE0,0xF5,0x80,0x67,0xE0,0xF7,0x80,0x67,0xE0,0xFE,0xC0,0x6B,0xC0,0x73,0x20,0xC6,0x20,0x00,0x00,}}, +{ 0x93C8, {0x69,0x80,0x65,0x80,0x77,0xE0,0x5B,0xC0,0xF7,0xC0,0x67,0xC0,0xF3,0xC0,0x6F,0xC0,0xF7,0xE0,0x67,0xE0,0x7B,0x80,0xD1,0xE0,0x00,0x00,}}, +{ 0x93D0, {0x20,0x00,0x37,0xC0,0x7F,0xC0,0x4F,0xC0,0xF7,0xC0,0x21,0x00,0xFB,0x80,0x25,0xC0,0x7B,0x60,0x73,0x40,0x39,0xC0,0xE7,0x00,0x00,0x00,}}, +{ 0x93D1, {0x61,0x00,0x61,0x00,0x7F,0xE0,0xD2,0x80,0xFF,0xC0,0x29,0x40,0xFF,0xC0,0x29,0x40,0xFB,0xC0,0x6B,0xC0,0x78,0x40,0xC8,0xC0,0x00,0x00,}}, +{ 0x93D6, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x5F,0xA0,0xA5,0xE0,0x3B,0x80,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x93D7, {0x60,0x00,0x6F,0xC0,0x7F,0xC0,0x5F,0xC0,0xFF,0x80,0x6B,0xC0,0xFF,0x20,0x6B,0x00,0xF7,0xC0,0x61,0x00,0x7F,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x93D8, {0x63,0x80,0x6B,0xC0,0x7B,0xC0,0x5F,0xC0,0xFB,0x80,0x63,0xC0,0xF3,0x40,0x6F,0xE0,0xFB,0x40,0x6B,0xC0,0x72,0x40,0xC2,0xC0,0x00,0x00,}}, +{ 0x93DD, {0x20,0x00,0x33,0xC0,0x7B,0xC0,0x4B,0xC0,0xF3,0xC0,0x27,0xE0,0xFD,0xA0,0x27,0xE0,0x7F,0xC0,0x72,0x40,0x39,0x80,0xEE,0x60,0x00,0x00,}}, +{ 0x93E1, {0x20,0x80,0x37,0xE0,0x79,0x40,0x4F,0xE0,0xF3,0xC0,0x22,0x40,0xFB,0xC0,0x22,0x40,0x7B,0xC0,0x71,0xA0,0x3A,0xA0,0xEC,0x60,0x00,0x00,}}, +{ 0x93E4, {0x21,0x80,0x33,0xC0,0x7F,0xE0,0x4F,0xE0,0xF3,0xC0,0x23,0xC0,0xFB,0xC0,0x23,0xC0,0x7F,0xE0,0x73,0x80,0x39,0x80,0xE7,0x40,0x00,0x00,}}, +{ 0x93E5, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4E,0x00,0xF3,0xE0,0x25,0x80,0xFD,0xC0,0x2D,0x40,0x7D,0xC0,0x75,0x40,0x3D,0xC0,0xE5,0x40,0x00,0x00,}}, +{ 0x93E8, {0x20,0xC0,0xFF,0x00,0x7B,0xE0,0x7B,0xE0,0x7A,0x80,0xFC,0x80,0x24,0x80,0x1B,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x9403, {0x61,0x00,0x67,0xC0,0x7F,0xE0,0x5F,0xE0,0xFE,0xC0,0x64,0x80,0xF6,0xE0,0x6C,0x00,0xFF,0xE0,0x63,0xA0,0x75,0xA0,0xC8,0xE0,0x00,0x00,}}, +{ 0x9407, {0x20,0xC0,0x37,0xC0,0x7B,0xC0,0x4F,0xE0,0xF3,0xC0,0x23,0xC0,0xFD,0xA0,0x23,0xC0,0x7B,0xC0,0x73,0xC0,0x3B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x9410, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x4E,0x60,0xF7,0xE0,0x22,0x40,0xFB,0xC0,0x22,0x40,0x7B,0xC0,0x73,0xA0,0x3D,0xA0,0xE1,0x80,0x00,0x00,}}, +{ 0x9413, {0x65,0x80,0x65,0x80,0x7F,0x80,0x5F,0xE0,0xFB,0xC0,0x6F,0xC0,0xFE,0xC0,0x62,0x80,0xFF,0x80,0x65,0xC0,0x75,0x40,0xCE,0x20,0x00,0x00,}}, +{ 0x9414, {0x60,0x00,0x7F,0xE0,0x7F,0xC0,0x5F,0xC0,0xFF,0xC0,0x67,0x80,0xF4,0x80,0x67,0x80,0xF7,0x80,0x6F,0xE0,0x73,0x00,0xC1,0x00,0x00,0x00,}}, +{ 0x9418, {0x20,0x80,0x37,0xE0,0x79,0x40,0x4F,0xE0,0xF3,0xC0,0x23,0xC0,0xFB,0xC0,0x23,0xC0,0x78,0x80,0x73,0xC0,0x38,0x80,0xE7,0xE0,0x00,0x00,}}, +{ 0x9419, {0x23,0x40,0x31,0xC0,0x7E,0x60,0x4B,0xE0,0xF4,0x40,0x27,0xE0,0xFA,0x40,0x23,0xC0,0x7A,0x80,0x71,0x80,0x3F,0xE0,0xE0,0x00,0x00,0x00,}}, +{ 0x941A, {0x60,0x00,0x6F,0xE0,0x7F,0xC0,0x5C,0xC0,0xFE,0xC0,0x6B,0xC0,0xF3,0x80,0x6F,0xE0,0xFB,0x00,0x6B,0xA0,0x72,0xA0,0xC1,0x80,0x00,0x00,}}, +{ 0x9421, {0x63,0x80,0x63,0xC0,0x7F,0xC0,0x5F,0xE0,0xF1,0x80,0x6F,0xC0,0xF9,0xC0,0x6F,0xC0,0xFE,0x80,0x67,0xE0,0x79,0xE0,0xC1,0x20,0x00,0x00,}}, +{ 0x942B, {0x22,0x80,0x32,0xC0,0x7F,0xE0,0x4F,0xC0,0xF7,0xC0,0x25,0x80,0xFF,0xE0,0x20,0x00,0x7F,0xE0,0x75,0xA0,0x3C,0x20,0xE4,0x60,0x00,0x00,}}, +{ 0x9435, {0x65,0x80,0x6F,0xC0,0x7F,0xE0,0x5F,0xE0,0xFF,0xC0,0x6B,0xC0,0xFF,0xC0,0x6F,0xC0,0xFC,0x80,0x67,0xE0,0x7F,0x60,0xC2,0x20,0x00,0x00,}}, +{ 0x9436, {0x20,0x00,0x37,0xE0,0x7F,0xE0,0x4F,0xE0,0xF7,0xE0,0x20,0x00,0xFB,0xC0,0x22,0x40,0x7B,0xE0,0x77,0xE0,0x3B,0xC0,0xE6,0x20,0x00,0x00,}}, +{ 0x9438, {0x20,0x00,0x37,0xE0,0x7F,0xE0,0x4F,0xE0,0xF3,0xC0,0x21,0x80,0xFF,0xE0,0x23,0xC0,0x7F,0xE0,0x73,0xC0,0x39,0x80,0xE1,0x80,0x00,0x00,}}, +{ 0x943A, {0x25,0xA0,0x33,0xC0,0x7F,0xE0,0x4F,0xC0,0xF2,0x40,0x23,0xC0,0xF8,0x00,0x27,0xE0,0x7F,0xE0,0x77,0xE0,0x3F,0xE0,0xE4,0x20,0x00,0x00,}}, +{ 0x9441, {0x21,0x80,0x35,0xE0,0x7F,0xA0,0x4F,0xE0,0xF6,0xE0,0x27,0xE0,0xF9,0xA0,0x27,0x60,0x7B,0x80,0x77,0x80,0x31,0x80,0xE6,0x60,0x00,0x00,}}, +{ 0x9444, {0x61,0x00,0x6F,0xE0,0x77,0x80,0x5F,0xE0,0xF7,0xC0,0x61,0x00,0xF7,0x80,0x6F,0xE0,0xFF,0xE0,0x6F,0xE0,0x7F,0x40,0xC0,0xC0,0x00,0x00,}}, +{ 0x9451, {0x60,0x80,0x6F,0x80,0x7A,0xE0,0x5F,0x80,0xFF,0x00,0x2A,0xE0,0xFF,0x00,0x28,0x00,0xB7,0xC0,0x65,0xC0,0x7F,0xE0,0xC0,0x00,0x00,0x00,}}, +{ 0x9452, {0x02,0x00,0x7A,0x00,0x7F,0xE0,0x7F,0xC0,0x77,0xC0,0x67,0xC0,0x7C,0x00,0x1B,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x9453, {0x61,0x80,0x6B,0xC0,0x77,0xC0,0x57,0xC0,0xF7,0xE0,0x61,0x80,0xFD,0x80,0x65,0xC0,0xF5,0xC0,0x65,0xC0,0x7B,0x00,0xD1,0xE0,0x00,0x00,}}, +{ 0x945A, {0x22,0x80,0x37,0xC0,0x7F,0xE0,0x4F,0xE0,0xF5,0xC0,0x23,0xE0,0xFA,0x40,0x23,0xC0,0x7B,0xC0,0x73,0xC0,0x3B,0x40,0xEC,0x20,0x00,0x00,}}, +{ 0x945B, {0x61,0x80,0x6F,0xE0,0x7F,0xE0,0x5F,0xE0,0xF9,0x80,0x6F,0xE0,0xFB,0xC0,0x6B,0xC0,0xFB,0xC0,0x6B,0xC0,0x73,0x40,0xDC,0x20,0x00,0x00,}}, +{ 0x945E, {0x65,0x80,0x67,0x80,0x7F,0x80,0x5F,0xC0,0xFB,0xC0,0x6E,0xC0,0xFF,0xC0,0x6F,0xC0,0xFF,0xC0,0x6F,0xE0,0x7F,0xA0,0xD2,0x20,0x00,0x00,}}, +{ 0x9460, {0x69,0x40,0x6A,0x40,0x77,0xA0,0x5F,0xE0,0xFB,0xC0,0x77,0xA0,0xFD,0xE0,0x63,0x00,0xFF,0xE0,0x67,0x80,0x79,0x60,0xC1,0x00,0x00,0x00,}}, +{ 0x9462, {0x61,0x00,0x63,0xC0,0x7F,0xE0,0x5F,0xC0,0xFB,0xC0,0x6B,0xC0,0xFB,0xC0,0x6B,0xC0,0xFB,0xC0,0x6B,0xE0,0x73,0x60,0xD5,0xC0,0x00,0x00,}}, +{ 0x946A, {0x61,0x00,0x63,0xC0,0x7F,0xE0,0x5F,0xC0,0xFB,0xC0,0x6B,0xC0,0xFB,0xC0,0x6B,0xC0,0xFF,0xC0,0x7F,0xC0,0x75,0xC0,0xDF,0xE0,0x00,0x00,}}, +{ 0x9470, {0x61,0x00,0x62,0x80,0x7F,0xE0,0x5F,0xE0,0xFF,0xE0,0x77,0xA0,0xFF,0xE0,0x6F,0xC0,0xFF,0xC0,0x6F,0xC0,0x7B,0xC0,0xCB,0xC0,0x00,0x00,}}, +{ 0x9475, {0x63,0x80,0x7F,0xE0,0x7F,0xC0,0x5F,0xC0,0xFF,0xC0,0x62,0x80,0xF7,0xE0,0x6D,0x80,0xF7,0xC0,0x67,0xC0,0x77,0xE0,0xC4,0x00,0x00,0x00,}}, +{ 0x9477, {0x60,0x00,0x6F,0xE0,0x73,0x80,0x53,0x80,0xFF,0x80,0x60,0x80,0xFF,0xE0,0x6B,0xC0,0xFF,0xC0,0x6F,0xC0,0x7F,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x947C, {0x60,0x00,0x6F,0xC0,0x7F,0xC0,0x5F,0xC0,0xF5,0xC0,0x7B,0xE0,0xF5,0x80,0x6B,0xC0,0xFF,0xC0,0x6F,0xC0,0x77,0xE0,0xC5,0x00,0x00,0x00,}}, +{ 0x947D, {0x66,0xC0,0x67,0xE0,0x7F,0xE0,0x5F,0xE0,0xFB,0xE0,0x67,0xE0,0xF4,0x40,0x67,0xC0,0xF7,0xC0,0x67,0xC0,0x76,0xC0,0xD8,0x20,0x00,0x00,}}, +{ 0x947E, {0x6E,0x80,0x7F,0xE0,0xFF,0xC0,0xFF,0xE0,0xFB,0xC0,0xFF,0xA0,0x04,0x80,0x1B,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x947F, {0x75,0x80,0xFF,0x80,0x7E,0x60,0xFF,0xE0,0xFF,0xC0,0x6F,0x80,0x7C,0x60,0x1B,0x00,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0x9481, {0x6F,0xC0,0x6B,0xC0,0x7F,0xC0,0x5F,0xC0,0xF7,0xE0,0x6F,0xC0,0xF7,0xC0,0x65,0x80,0xFF,0xE0,0x67,0xC0,0x73,0x80,0xCE,0xE0,0x00,0x00,}}, +{ 0x9577, {0x00,0x00,0x3F,0x80,0x20,0x00,0x3F,0x00,0x3F,0x00,0x20,0x00,0xFF,0xE0,0x24,0x80,0x22,0x80,0x23,0x00,0x3D,0x80,0xE0,0x60,0x00,0x00,}}, +{ 0x9580, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9582, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9583, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x44,0x40,0x4A,0x40,0x4A,0x40,0x51,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9587, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x7F,0x40,0x44,0x40,0x46,0x40,0x44,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x9589, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x42,0x40,0x42,0x40,0x7F,0x40,0x46,0x40,0x4A,0x40,0x72,0x40,0x46,0xC0,0x00,0x00,}}, +{ 0x958A, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x65,0xC0,0x65,0xC0,0x65,0xC0,0x7F,0xC0,0x71,0xC0,0x40,0xC0,0x00,0x00,}}, +{ 0x958B, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x5F,0x40,0x4A,0x40,0x7F,0xC0,0x4A,0x40,0x52,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x958F, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x5F,0x40,0x44,0x40,0x4E,0x40,0x44,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9591, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x44,0x40,0x5F,0x40,0x4E,0x40,0x55,0x40,0x64,0xC0,0x44,0xC0,0x00,0x00,}}, +{ 0x9593, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x9594, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x44,0x40,0x7F,0x40,0x4E,0x40,0x4E,0x40,0x73,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9596, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x45,0x40,0x7F,0x40,0x4E,0x40,0x55,0x40,0x4C,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9598, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x5F,0x40,0x57,0x40,0x5F,0x40,0x5F,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x9599, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x65,0xC0,0x67,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x95A0, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x7F,0x40,0x44,0x40,0x5E,0x40,0x46,0x40,0x7F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x95A2, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x51,0x40,0x4A,0x40,0x5F,0x40,0x5F,0x40,0x44,0x40,0x5B,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x95A3, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x4F,0x40,0x79,0x40,0x46,0x40,0x7F,0xC0,0x51,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x95A4, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x4A,0x40,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x95A5, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x55,0x40,0x55,0xC0,0x77,0x40,0x7F,0x40,0x6F,0xC0,0x61,0xC0,0x40,0xC0,0x00,0x00,}}, +{ 0x95A7, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x40,0x40,0x4A,0x40,0x7F,0x40,0x5F,0x40,0x5F,0x40,0x73,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x95A8, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x5F,0x40,0x44,0x40,0x5F,0x40,0x4E,0x40,0x7F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x95AD, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x4E,0x40,0x5F,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x95B2, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x51,0x40,0x4A,0x40,0x5F,0x40,0x5F,0x40,0x4E,0x40,0x52,0x40,0x61,0xC0,0x00,0x00,}}, +{ 0x95B9, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x7F,0xC0,0x5F,0x40,0x7F,0xC0,0x5F,0x40,0x55,0x40,0x43,0xC0,0x00,0x00,}}, +{ 0x95BB, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x4F,0x40,0x51,0x40,0x76,0x40,0x5B,0x40,0x5B,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x95BC, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x51,0x40,0x7D,0x40,0x53,0xC0,0x5F,0xC0,0x57,0x40,0x79,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x95BE, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x43,0xC0,0x7F,0xC0,0x7B,0x40,0x7B,0x40,0x5B,0xC0,0x75,0xC0,0x40,0xC0,0x00,0x00,}}, +{ 0x95C3, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x4A,0x40,0x71,0xC0,0x00,0x00,}}, +{ 0x95C7, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x44,0x40,0x5F,0x40,0x4A,0x40,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x51,0xC0,0x00,0x00,}}, +{ 0x95CA, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x61,0xC0,0x56,0x40,0x6F,0xC0,0x57,0x40,0x57,0xC0,0x77,0xC0,0x65,0xC0,0x00,0x00,}}, +{ 0x95CC, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x7F,0x40,0x5F,0x40,0x57,0x40,0x5F,0x40,0x4E,0x40,0x77,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x95CD, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x45,0xC0,0x5F,0x40,0x7F,0x40,0x47,0x40,0x7F,0x40,0x6F,0x40,0x4F,0x40,0x49,0xC0,0x00,0x00,}}, +{ 0x95D4, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x44,0x40,0x5F,0x40,0x7F,0x40,0x4B,0x40,0x5F,0x40,0x5F,0x40,0x7F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x95D5, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x66,0x40,0x5A,0x40,0x7F,0xC0,0x55,0x40,0x7D,0x40,0x53,0x40,0x64,0xC0,0x00,0x00,}}, +{ 0x95D6, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x5F,0xC0,0x54,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x5F,0xC0,0x77,0xC0,0x63,0xC0,0x00,0x00,}}, +{ 0x95D8, {0x00,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x41,0x40,0x7D,0x40,0x6F,0xC0,0x7B,0x40,0x69,0x40,0x5D,0x40,0x61,0x40,0x00,0x00,}}, +{ 0x95DC, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x51,0x40,0x6F,0xC0,0x5B,0xC0,0x7F,0xC0,0x7B,0xC0,0x52,0x40,0x62,0xC0,0x00,0x00,}}, +{ 0x95E1, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x7F,0xC0,0x44,0xC0,0x00,0x00,}}, +{ 0x95E2, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x79,0x40,0x6F,0xC0,0x7B,0xC0,0x7F,0xC0,0x7F,0xC0,0x7B,0x40,0x61,0xC0,0x00,0x00,}}, +{ 0x95E5, {0x00,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x72,0x40,0x57,0x40,0x6F,0x40,0x57,0x40,0x5F,0x40,0x5F,0x40,0x52,0x40,0x6F,0xC0,0x00,0x00,}}, +{ 0x961C, {0x04,0x00,0x08,0x00,0x3F,0x80,0x3F,0x80,0x20,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x9621, {0x00,0x40,0x71,0x80,0x57,0x80,0x61,0x80,0x61,0x80,0x5F,0xE0,0x51,0x80,0x51,0x80,0x71,0x80,0x61,0x80,0x41,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x9628, {0x00,0x00,0x77,0xE0,0x54,0x00,0x65,0xC0,0x65,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x7D,0x80,0x69,0x20,0x51,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x962A, {0x00,0x00,0x77,0xE0,0x54,0x00,0x67,0xC0,0x64,0x40,0x64,0x40,0x56,0x40,0x55,0x80,0x65,0x80,0x49,0x80,0x56,0x40,0x68,0x20,0x00,0x00,}}, +{ 0x962E, {0x00,0x00,0x77,0xC0,0x50,0x00,0x60,0x00,0x6F,0xE0,0x53,0x80,0x53,0x80,0x53,0x80,0x77,0x80,0x65,0xA0,0x49,0xA0,0x50,0xE0,0x00,0x00,}}, +{ 0x962F, {0x01,0x00,0x71,0x00,0x51,0x00,0x65,0x00,0x65,0xC0,0x55,0x00,0x55,0x00,0x55,0x00,0x75,0x00,0x65,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x9632, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x61,0x00,0x61,0x00,0x61,0xC0,0x51,0x40,0x52,0x40,0x52,0x40,0x74,0x40,0x48,0x40,0x50,0x80,0x00,0x00,}}, +{ 0x963B, {0x00,0x00,0x77,0x80,0x54,0x80,0x64,0x80,0x67,0x80,0x64,0x80,0x54,0x80,0x57,0x80,0x74,0x80,0x64,0x80,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x963F, {0x00,0x00,0x7F,0xE0,0x50,0x40,0x67,0x40,0x65,0x40,0x55,0x40,0x55,0x40,0x57,0x40,0x74,0x40,0x60,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9640, {0x00,0x80,0x70,0x80,0x57,0xE0,0x64,0x20,0x6A,0x00,0x62,0x00,0x52,0xC0,0x53,0x00,0x52,0x00,0x72,0x20,0x42,0x20,0x41,0xE0,0x00,0x00,}}, +{ 0x9642, {0x01,0x80,0x71,0x80,0x57,0xE0,0x67,0xE0,0x65,0x80,0x57,0xC0,0x56,0x40,0x55,0x80,0x7D,0x80,0x69,0x80,0x53,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x9644, {0x02,0x40,0x72,0x40,0x54,0x40,0x67,0xE0,0x6C,0x40,0x6D,0x40,0x54,0xC0,0x54,0x40,0x54,0x40,0x74,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x964B, {0x00,0x00,0x67,0xE0,0x63,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6B,0xC0,0x6A,0xC0,0x6A,0x40,0x68,0x40,0x4F,0xE0,0x48,0x00,0x00,0x00,}}, +{ 0x964C, {0x00,0x00,0x7F,0xE0,0x51,0x00,0x62,0x00,0x67,0xC0,0x54,0x40,0x54,0x40,0x57,0xC0,0x74,0x40,0x64,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x964D, {0x01,0x00,0x73,0xC0,0x56,0x40,0x69,0x80,0x63,0xE0,0x5C,0x80,0x53,0xC0,0x52,0x80,0x6F,0xE0,0x40,0x80,0x40,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x964F, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x67,0xE0,0x63,0xC0,0x56,0x40,0x5B,0xC0,0x52,0x40,0x73,0xC0,0x62,0x40,0x42,0x40,0x42,0xC0,0x00,0x00,}}, +{ 0x9650, {0x00,0x00,0x77,0x80,0x54,0x80,0x67,0x80,0x64,0x80,0x57,0x80,0x55,0x40,0x55,0x40,0x75,0x80,0x65,0x80,0x46,0x40,0x58,0x20,0x00,0x00,}}, +{ 0x965B, {0x04,0x80,0x74,0xA0,0x57,0xC0,0x64,0x80,0x65,0xA0,0x67,0xA0,0x5D,0xE0,0x51,0x00,0x7F,0xC0,0x61,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x965C, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x67,0xE0,0x65,0x80,0x55,0x80,0x5B,0x40,0x53,0x40,0x73,0x80,0x64,0x80,0x48,0x40,0x50,0x20,0x00,0x00,}}, +{ 0x965D, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x67,0xE0,0x6D,0xC0,0x55,0x40,0x55,0x40,0x5B,0xA0,0x73,0xA0,0x64,0x80,0x48,0x40,0x50,0x20,0x00,0x00,}}, +{ 0x965E, {0x01,0x80,0x77,0x80,0x52,0x80,0x6F,0xE0,0x62,0xC0,0x54,0x80,0x59,0x80,0x53,0x00,0x7F,0xC0,0x61,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x965F, {0x01,0x80,0x71,0x80,0x53,0xC0,0x63,0x80,0x6F,0xE0,0x51,0x80,0x53,0xA0,0x53,0xA0,0x7D,0xC0,0x61,0x80,0x43,0x00,0x4C,0x00,0x00,0x00,}}, +{ 0x9662, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x70,0x20,0x67,0xC0,0x50,0x00,0x5F,0xE0,0x52,0x80,0x54,0x80,0x64,0xA0,0x48,0xA0,0x50,0xE0,0x00,0x00,}}, +{ 0x9663, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x57,0xC0,0x65,0x40,0x67,0xC0,0x55,0x40,0x57,0xC0,0x51,0x00,0x6F,0xE0,0x41,0x00,0x41,0x00,0x00,0x00,}}, +{ 0x9664, {0x01,0x00,0x71,0x00,0x52,0x80,0x64,0x40,0x6F,0xE0,0x51,0x00,0x5F,0xE0,0x51,0x00,0x75,0x40,0x69,0x20,0x51,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x9665, {0x01,0x00,0x71,0x00,0x53,0xC0,0x64,0x80,0x68,0x80,0x55,0xC0,0x55,0x40,0x55,0x40,0x65,0xC0,0x45,0x40,0x45,0xC0,0x45,0x40,0x00,0x00,}}, +{ 0x9666, {0x01,0x00,0x73,0x00,0x5F,0xE0,0x67,0xC0,0x63,0x00,0x5F,0xE0,0x52,0x80,0x5F,0xE0,0x66,0x80,0x59,0x80,0x40,0x80,0x40,0x80,0x00,0x00,}}, +{ 0x966A, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x64,0x80,0x62,0x80,0x6F,0xE0,0x50,0x00,0x57,0xC0,0x54,0x40,0x64,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x966C, {0x00,0x00,0x7F,0xE0,0x6A,0x00,0x6F,0xC0,0x6B,0xC0,0x6B,0xC0,0x6F,0xC0,0x6A,0x80,0x6E,0x80,0x7F,0xC0,0x43,0x40,0x42,0x20,0x00,0x00,}}, +{ 0x9670, {0x01,0x00,0x73,0x00,0x54,0x80,0x6B,0x40,0x60,0x20,0x57,0x80,0x51,0x00,0x57,0x80,0x60,0x00,0x7F,0xE0,0x45,0x80,0x5F,0x40,0x00,0x00,}}, +{ 0x9672, {0x00,0xC0,0x77,0x00,0x5F,0xC0,0x67,0xC0,0x65,0x80,0x5F,0xE0,0x55,0x80,0x57,0xC0,0x7F,0xC0,0x61,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x9673, {0x01,0x00,0x71,0x00,0x5F,0xE0,0x57,0xC0,0x65,0x40,0x67,0xC0,0x55,0x40,0x57,0xC0,0x73,0x80,0x65,0x40,0x59,0x20,0x41,0x00,0x00,0x00,}}, +{ 0x9675, {0x01,0x00,0x71,0x00,0x57,0xC0,0x6F,0xE0,0x62,0x80,0x54,0xA0,0x5A,0xE0,0x53,0x80,0x7C,0x80,0x63,0x00,0x46,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x9676, {0x02,0x00,0x72,0x00,0x53,0xE0,0x6E,0x20,0x7B,0xA0,0x55,0x20,0x5F,0xE0,0x51,0x20,0x75,0x60,0x67,0xE0,0x44,0x60,0x40,0x40,0x00,0x00,}}, +{ 0x9677, {0x02,0x00,0x73,0xC0,0x56,0x40,0x64,0x40,0x68,0xC0,0x51,0x00,0x56,0xC0,0x54,0x40,0x76,0xC0,0x64,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x9678, {0x01,0x00,0x71,0x00,0x57,0xC0,0x5F,0xE0,0x62,0x80,0x64,0xA0,0x59,0xE0,0x51,0x00,0x77,0xC0,0x61,0x00,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x967A, {0x01,0x00,0x71,0x00,0x52,0x80,0x67,0xC0,0x69,0x20,0x67,0xC0,0x55,0x40,0x55,0x40,0x77,0xC0,0x63,0x00,0x44,0x80,0x58,0x60,0x00,0x00,}}, +{ 0x967D, {0x00,0x00,0x77,0x80,0x54,0x80,0x57,0x80,0x67,0x80,0x60,0x00,0x5F,0xE0,0x54,0x00,0x77,0xC0,0x7B,0xC0,0x47,0x40,0x4B,0x80,0x00,0x00,}}, +{ 0x9685, {0x00,0x00,0x77,0xC0,0x55,0x40,0x67,0xC0,0x65,0x40,0x57,0xC0,0x51,0x00,0x5F,0xE0,0x59,0x60,0x6F,0xE0,0x48,0x20,0x48,0x60,0x00,0x00,}}, +{ 0x9686, {0x01,0x00,0x73,0x00,0x56,0xC0,0x69,0x00,0x62,0x80,0x6D,0x60,0x55,0x00,0x57,0xC0,0x79,0x00,0x67,0xC0,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x9688, {0x00,0x00,0x77,0xC0,0x55,0x40,0x67,0xC0,0x67,0xC0,0x50,0x00,0x5F,0xE0,0x55,0x40,0x75,0x80,0x65,0x80,0x46,0x40,0x58,0x20,0x00,0x00,}}, +{ 0x968A, {0x04,0x80,0x72,0x80,0x5F,0xE0,0x67,0x20,0x63,0x40,0x6D,0xC0,0x52,0x80,0x5D,0x80,0x72,0xC0,0x6C,0xA0,0x41,0x80,0x43,0x00,0x00,0x00,}}, +{ 0x968B, {0x02,0x00,0x7F,0xE0,0x53,0xC0,0x67,0xC0,0x6B,0xE0,0x60,0x00,0x57,0xC0,0x54,0x40,0x77,0xC0,0x67,0xC0,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x968D, {0x01,0x00,0x72,0x00,0x57,0xC0,0x67,0xC0,0x64,0x40,0x57,0xC0,0x50,0x00,0x5F,0xE0,0x77,0xC0,0x67,0xC0,0x5F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x968E, {0x04,0x80,0x75,0xA0,0x56,0xC0,0x64,0xA0,0x67,0xE0,0x59,0x00,0x57,0xC0,0x54,0x40,0x77,0xC0,0x64,0x40,0x47,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x968F, {0x00,0x80,0x78,0x80,0x57,0xE0,0x61,0xC0,0x63,0x40,0x5D,0xC0,0x55,0x40,0x55,0xC0,0x75,0x40,0x65,0x40,0x4A,0x00,0x51,0xE0,0x00,0x00,}}, +{ 0x9694, {0x00,0x00,0x7F,0xC0,0x57,0x80,0x64,0x80,0x67,0x80,0x60,0x00,0x5F,0xC0,0x5B,0x40,0x7F,0xC0,0x6B,0xC0,0x49,0x40,0x49,0xC0,0x00,0x00,}}, +{ 0x9695, {0x00,0x00,0x77,0xC0,0x57,0xC0,0x67,0xC0,0x67,0xC0,0x54,0x40,0x57,0xC0,0x54,0x40,0x77,0xC0,0x67,0xC0,0x46,0xC0,0x58,0x20,0x00,0x00,}}, +{ 0x9697, {0x01,0x00,0x72,0x00,0x57,0xC0,0x65,0x40,0x67,0xC0,0x55,0x40,0x57,0xC0,0x53,0x80,0x73,0xC0,0x67,0xE0,0x49,0x20,0x51,0xE0,0x00,0x00,}}, +{ 0x9698, {0x03,0x80,0x72,0xC0,0x5F,0xE0,0x63,0x80,0x63,0x80,0x52,0x80,0x54,0x40,0x5F,0xE0,0x75,0xC0,0x65,0xC0,0x4F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x9699, {0x01,0x00,0x75,0xC0,0x5D,0x40,0x67,0xC0,0x64,0x80,0x57,0x80,0x54,0x80,0x57,0x80,0x75,0x40,0x69,0x20,0x51,0x20,0x43,0x00,0x00,0x00,}}, +{ 0x969B, {0x04,0x00,0x77,0xC0,0x5F,0x40,0x6B,0xC0,0x76,0x80,0x57,0xC0,0x58,0x20,0x5F,0xC0,0x61,0x00,0x45,0x40,0x49,0x40,0x43,0x00,0x00,0x00,}}, +{ 0x969C, {0x01,0x00,0x7F,0xC0,0x52,0x80,0x6F,0xE0,0x67,0xC0,0x64,0x40,0x57,0xC0,0x54,0x40,0x57,0xC0,0x61,0x00,0x4F,0xE0,0x41,0x00,0x00,0x00,}}, +{ 0x96A0, {0x00,0xC0,0x7F,0x20,0x59,0x20,0x67,0xC0,0x60,0x40,0x57,0xC0,0x50,0x40,0x57,0xC0,0x7A,0x00,0x6D,0xA0,0x54,0xA0,0x43,0x80,0x00,0x00,}}, +{ 0x96A3, {0x01,0x00,0x79,0x40,0x57,0x80,0x6F,0xE0,0x67,0x80,0x59,0x60,0x55,0x40,0x57,0xE0,0x6B,0x40,0x57,0xE0,0x44,0x40,0x58,0x40,0x00,0x00,}}, +{ 0x96A7, {0x11,0x80,0x6B,0xC0,0x6F,0xE0,0x77,0xE0,0x69,0xA0,0x6F,0xA0,0x61,0xC0,0x7F,0xC0,0x6E,0xA0,0x6C,0x80,0x55,0x80,0x63,0xE0,0x00,0x00,}}, +{ 0x96A8, {0x09,0x80,0x65,0x80,0x77,0xE0,0x7B,0xC0,0x6F,0xE0,0x61,0xC0,0x7D,0x40,0x55,0xC0,0x55,0xC0,0x75,0x40,0x4A,0x00,0x51,0xE0,0x00,0x00,}}, +{ 0x96AA, {0x01,0x00,0x63,0x00,0x66,0x80,0x6F,0xC0,0x70,0x20,0x6E,0xC0,0x6B,0xC0,0x6B,0xC0,0x6E,0xC0,0x66,0xC0,0x4B,0xA0,0x51,0x20,0x00,0x00,}}, +{ 0x96B0, {0x00,0x00,0x77,0xC0,0x57,0xC0,0x67,0xC0,0x67,0xC0,0x52,0x40,0x5D,0xA0,0x52,0x40,0x7F,0xE0,0x67,0xE0,0x4A,0x40,0x51,0xA0,0x00,0x00,}}, +{ 0x96B1, {0x00,0xC0,0x77,0xC0,0x5F,0xA0,0x67,0x80,0x67,0x80,0x57,0xC0,0x50,0x40,0x5F,0xE0,0x77,0xC0,0x6B,0x20,0x4A,0xA0,0x51,0x80,0x00,0x00,}}, +{ 0x96B2, {0x01,0x80,0x73,0xC0,0x5D,0xE0,0x67,0x80,0x67,0xE0,0x55,0x80,0x57,0xC0,0x57,0xC0,0x77,0xE0,0x6F,0xE0,0x4B,0xE0,0x50,0xC0,0x00,0x00,}}, +{ 0x96B4, {0x05,0x80,0x75,0x80,0x7F,0xE0,0x7F,0xC0,0x60,0x40,0x6E,0xC0,0x6B,0x80,0x6F,0xC0,0x6F,0xC0,0x4F,0xC0,0x4B,0xA0,0x4A,0xE0,0x00,0x00,}}, +{ 0x96B6, {0x04,0x00,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x04,0xC0,0x3F,0x80,0x24,0x80,0x26,0x80,0x3F,0x00,0xF5,0x80,0x04,0x60,0x0C,0x00,0x00,0x00,}}, +{ 0x96B7, {0x20,0x80,0x20,0x80,0xFB,0xC0,0x77,0xE0,0x00,0xC0,0x7B,0xC0,0x04,0x80,0xFA,0xA0,0x33,0xC0,0x7E,0xC0,0xA8,0xA0,0x20,0x80,0x00,0x00,}}, +{ 0x96B8, {0x21,0x80,0x31,0x80,0xFB,0xC0,0x7F,0xE0,0x69,0xC0,0xA3,0xC0,0x79,0xC0,0x03,0xA0,0xF9,0xC0,0x7F,0xC0,0xA9,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x96B9, {0x11,0x80,0x11,0x00,0x1F,0xE0,0x3F,0xE0,0x21,0x00,0x7F,0xC0,0xA1,0x00,0x33,0x00,0x3F,0xC0,0x21,0x00,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x96BB, {0x21,0x00,0x3F,0xC0,0x62,0x00,0x7F,0x80,0xBF,0x80,0x22,0x00,0x3F,0xE0,0x00,0x00,0x7F,0x80,0x09,0x00,0x0F,0x00,0xF0,0xE0,0x00,0x00,}}, +{ 0x96BC, {0x21,0x00,0x22,0x00,0x3F,0xC0,0x7F,0x80,0xA2,0x00,0x3F,0x80,0x22,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x96C0, {0x04,0x00,0x15,0x80,0x24,0x60,0xC7,0x00,0x0C,0x00,0x3F,0xC0,0xE2,0x00,0x3F,0x80,0x22,0x00,0x3F,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x96C1, {0x00,0x00,0x7F,0xE0,0x49,0x40,0x52,0x80,0x73,0xE0,0x76,0x80,0x5B,0xC0,0x52,0x80,0x53,0xC0,0x52,0x80,0x93,0xE0,0x12,0x00,0x00,0x00,}}, +{ 0x96C4, {0x21,0x40,0x21,0x40,0x22,0x80,0xFF,0xE0,0x26,0x80,0x23,0xC0,0x32,0x80,0x52,0x80,0x6B,0xC0,0xBA,0x80,0xE7,0xE0,0x02,0x00,0x00,0x00,}}, +{ 0x96C5, {0x01,0x40,0x7B,0x40,0x52,0x80,0x57,0xE0,0xFA,0x80,0x33,0xE0,0x32,0x80,0x72,0x80,0x53,0xE0,0x92,0x80,0x13,0xE0,0x32,0x00,0x00,0x00,}}, +{ 0x96C6, {0x22,0x00,0x3F,0xC0,0x62,0x00,0x7F,0x80,0xBF,0x80,0x22,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x96C7, {0x00,0x00,0x7F,0xE0,0x3F,0xC0,0x20,0x40,0x3F,0xC0,0x29,0x80,0x3F,0xE0,0x73,0x00,0x5F,0x80,0x5F,0x80,0x9F,0xE0,0x10,0x00,0x00,0x00,}}, +{ 0x96C9, {0x61,0x40,0x61,0x40,0x7B,0xE0,0x7B,0xE0,0xA6,0x80,0xFF,0xC0,0x22,0x80,0x32,0xC0,0x7B,0xC0,0x4A,0x80,0x83,0xE0,0x02,0x00,0x00,0x00,}}, +{ 0x96CB, {0x11,0x00,0x13,0x00,0x3F,0xE0,0x3F,0x80,0x73,0x00,0xBF,0x80,0x21,0x00,0x3F,0xE0,0x79,0xC0,0x6F,0x40,0x6B,0x40,0x60,0xC0,0x00,0x00,}}, +{ 0x96CC, {0x29,0x40,0x29,0x40,0x2A,0x80,0x2B,0xE0,0x7E,0x80,0x6B,0xC0,0x6A,0x80,0x6A,0x80,0x6B,0xC0,0x7E,0x80,0xC3,0xE0,0x02,0x00,0x00,0x00,}}, +{ 0x96CD, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x72,0x80,0xD7,0xE0,0x65,0x80,0x6F,0xC0,0x75,0x80,0xF7,0xC0,0x95,0x80,0x27,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x96CE, {0x01,0x40,0x71,0x40,0x53,0xE0,0x73,0xE0,0x56,0x80,0x5B,0xC0,0x72,0x80,0x52,0xC0,0x5B,0xC0,0x7A,0x80,0xC3,0xE0,0x02,0x00,0x00,0x00,}}, +{ 0x96D1, {0x21,0x40,0x31,0x40,0xF2,0x80,0x57,0xE0,0x4A,0x80,0xA3,0xC0,0x22,0x80,0xFE,0x80,0x73,0xC0,0x6A,0x80,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x96D5, {0x01,0x40,0x7D,0x40,0x55,0xE0,0x7F,0xE0,0x57,0x80,0x7D,0xC0,0x55,0x80,0x7D,0xC0,0x7D,0xC0,0x7D,0x80,0x45,0xE0,0x8D,0x00,0x00,0x00,}}, +{ 0x96D6, {0x01,0x40,0x79,0x40,0x7B,0xE0,0x7B,0xE0,0x7E,0x80,0x6B,0xC0,0x6A,0x80,0x7A,0xC0,0x23,0xC0,0x3E,0x80,0xE7,0xE0,0x02,0x00,0x00,0x00,}}, +{ 0x96D9, {0x69,0x40,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x7B,0xC0,0x52,0x80,0x7F,0xE0,0x42,0x00,0x3F,0x80,0x07,0x00,0x1B,0x00,0x60,0xE0,0x00,0x00,}}, +{ 0x96DB, {0x20,0xA0,0x20,0xA0,0x7D,0xF0,0xD7,0x40,0x7F,0x40,0x75,0xE0,0x29,0x40,0x7D,0x40,0xD5,0xE0,0x7D,0x40,0x75,0xF0,0x29,0x00,0x00,0x00,}}, +{ 0x96DC, {0x21,0x40,0x31,0x40,0xFF,0xE0,0x6B,0xE0,0x76,0x80,0xA7,0xC0,0x22,0x80,0xFE,0xC0,0x7B,0xC0,0x6A,0x80,0xA3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x96E2, {0x21,0x40,0x21,0x40,0xFE,0x80,0x5B,0xE0,0x7E,0x80,0x7B,0xC0,0x22,0x80,0xFB,0xC0,0xBA,0x80,0xFA,0x80,0x8B,0xE0,0x9A,0x00,0x00,0x00,}}, +{ 0x96E3, {0x51,0x40,0x51,0x40,0xFE,0x80,0x7B,0xE0,0x6E,0x80,0x7B,0xC0,0x22,0x80,0x7A,0x80,0x23,0xC0,0xFA,0x80,0x4B,0xE0,0x82,0x00,0x00,0x00,}}, +{ 0x96E8, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x44,0x40,0x55,0x40,0x55,0x40,0x44,0x40,0x55,0x40,0x55,0x40,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x96EA, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xBD,0xC0,0x35,0x80,0x04,0x00,0x3F,0x80,0x00,0x80,0x3F,0x80,0x00,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x96EB, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x00,0x00,0xFF,0xE0,0x06,0x00,0x05,0x80,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x96F0, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x1F,0x00,0x11,0x00,0x7F,0xC0,0x89,0x20,0x11,0x00,0x23,0x00,0x00,0x00,}}, +{ 0x96F2, {0x00,0x00,0x3F,0x80,0x04,0x00,0x7F,0xE0,0x75,0xC0,0xBD,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x13,0x80,0x7C,0x40,0x00,0x00,}}, +{ 0x96F6, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x0A,0x00,0x3F,0x80,0xDF,0x60,0x3F,0x80,0x05,0x80,0x04,0x00,0x00,0x00,}}, +{ 0x96F7, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x96F9, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x08,0x00,0x1F,0x80,0x70,0x80,0xBE,0x80,0x3F,0xA0,0x30,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x96FB, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0xA0,0x24,0x20,0x03,0xE0,0x00,0x00,}}, +{ 0x9700, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0xFF,0xE0,0x08,0x00,0x7F,0xC0,0x52,0x40,0x52,0x40,0x52,0xC0,0x00,0x00,}}, +{ 0x9704, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x15,0x80,0x64,0xC0,0xFF,0xA0,0x3F,0x80,0x3F,0x80,0x31,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x9706, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x00,0xC0,0x77,0x80,0x31,0x80,0x7F,0xE0,0x3B,0xC0,0x38,0x00,0xC7,0xE0,0x00,0x00,}}, +{ 0x9707, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x00,0x00,0x7F,0xC0,0x7F,0xE0,0x7F,0xE0,0x5F,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x9708, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x21,0x00,0xBF,0xE0,0x07,0xC0,0x2F,0xC0,0x49,0xC0,0x41,0x00,0x00,0x00,}}, +{ 0x970A, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x3F,0x00,0x00,0x00,0x7F,0xC0,0x2A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x970D, {0x00,0x00,0x7F,0xC0,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x15,0x00,0x3F,0xC0,0x72,0x00,0xBF,0x80,0x3F,0x80,0x3F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x970E, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x04,0x00,0x7F,0xC0,0x13,0x00,0xFF,0xE0,0x7F,0xC0,0x0F,0x00,0x71,0x80,0x00,0x00,}}, +{ 0x970F, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x0A,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0xF3,0xE0,0x22,0x00,0x00,0x00,}}, +{ 0x9711, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x21,0x00,0xA1,0xE0,0x07,0xC0,0x2F,0xC0,0x4F,0xC0,0x48,0x40,0x00,0x00,}}, +{ 0x9713, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x0C,0x00,0x73,0x80,0x7B,0x80,0x7F,0x80,0x3F,0xA0,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x9716, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x75,0x80,0x21,0x80,0xFF,0xE0,0x79,0x80,0x6B,0xC0,0xA5,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x9719, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x11,0x00,0xFF,0xE0,0x17,0x00,0x3F,0x80,0xFF,0xE0,0x1B,0x00,0x61,0xC0,0x00,0x00,}}, +{ 0x971C, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x7F,0xE0,0xF5,0xC0,0x00,0x00,0x23,0xC0,0xFE,0x40,0x7B,0xC0,0x67,0xC0,0xA3,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x971E, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x04,0x00,0x7B,0xC0,0x48,0x40,0x7F,0xC0,0x77,0xC0,0x71,0x80,0x46,0x60,0x00,0x00,}}, +{ 0x9724, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x7B,0xC0,0x69,0x40,0x76,0xC0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x9727, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x05,0x00,0x79,0xE0,0x73,0x80,0xFF,0xE0,0x7F,0xE0,0xB3,0x40,0x26,0xC0,0x00,0x00,}}, +{ 0x972A, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x60,0xC0,0x2F,0x80,0x9B,0x60,0x1F,0xE0,0x3F,0xE0,0x4F,0xC0,0x40,0x00,0x00,0x00,}}, +{ 0x9730, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x7D,0x00,0x71,0xE0,0xFE,0x80,0x7D,0x80,0x79,0x80,0x6B,0x40,0x7C,0x20,0x00,0x00,}}, +{ 0x9732, {0x00,0x00,0x7F,0xC0,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x04,0x00,0x79,0xC0,0x4F,0x80,0x7E,0xE0,0x3F,0xE0,0x7B,0xC0,0xE2,0x40,0x00,0x00,}}, +{ 0x9738, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xBF,0xC0,0x34,0x00,0xFF,0xC0,0x72,0x40,0x7B,0xC0,0x7B,0xC0,0xFE,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x9739, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x79,0x80,0x6B,0xC0,0x7B,0xC0,0x7F,0xE0,0xFF,0xE0,0x79,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x973D, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x04,0x00,0xFF,0xE0,0x7B,0xC0,0xF5,0xE0,0x9F,0xE0,0x3F,0x80,0x61,0x80,0x00,0x00,}}, +{ 0x973E, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x37,0x80,0xE5,0x80,0xFF,0x80,0xF7,0xC0,0x77,0xC0,0xDF,0xE0,0x60,0x00,0x00,0x00,}}, +{ 0x9742, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x7F,0xE0,0x79,0x80,0x7F,0xE0,0x7F,0xC0,0x57,0xC0,0x52,0x00,0xFF,0xE0,0x00,0x00,}}, +{ 0x9744, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x73,0xC0,0xFE,0x40,0x73,0xC0,0x7B,0xE0,0x7F,0xE0,0x7B,0xE0,0x4A,0xC0,0x00,0x00,}}, +{ 0x9746, {0x00,0x80,0x7C,0xC0,0x7B,0xC0,0x7B,0xE0,0xFC,0xC0,0x7B,0xC0,0x23,0xA0,0x71,0xC0,0xFF,0xE0,0xFA,0xA0,0x7B,0x80,0x8D,0xE0,0x00,0x00,}}, +{ 0x9748, {0x00,0x00,0x3F,0x80,0x7F,0xE0,0x7F,0xE0,0xF5,0xC0,0x6F,0xC0,0x6B,0xC0,0x7F,0xC0,0x7F,0xC0,0x75,0xC0,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x9749, {0x00,0x60,0x7B,0xE0,0x7B,0xC0,0x7F,0xE0,0xFD,0xC0,0x7B,0xC0,0x23,0xA0,0x75,0x20,0xFB,0xC0,0xFF,0xC0,0x79,0x80,0xCE,0x60,0x00,0x00,}}, +{ 0x9752, {0x04,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x20,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x9756, {0x00,0x80,0x27,0xE0,0x20,0x80,0xFB,0xC0,0x17,0xE0,0x50,0x00,0x53,0xC0,0x32,0x40,0x3B,0xC0,0xC3,0xC0,0x02,0x40,0x02,0xC0,0x00,0x00,}}, +{ 0x9759, {0x21,0x00,0xFD,0x00,0x23,0xC0,0x7C,0x80,0xFF,0xC0,0x01,0x40,0x7F,0xE0,0x49,0x40,0x7B,0xC0,0x79,0x00,0x49,0x00,0x59,0x00,0x00,0x00,}}, +{ 0x975C, {0x20,0xC0,0x33,0xC0,0xFF,0xE0,0x7C,0x20,0x33,0xC0,0xFD,0xC0,0x7F,0xE0,0x69,0xC0,0x7B,0xC0,0x79,0x80,0x49,0x80,0x59,0x80,0x00,0x00,}}, +{ 0x975E, {0x09,0x00,0x09,0x00,0x79,0xE0,0x09,0x00,0x09,0x00,0x79,0xE0,0x09,0x00,0x09,0x00,0xF9,0xE0,0x11,0x00,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x9760, {0x24,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x31,0x80,0x3F,0x80,0xFB,0xE0,0x0A,0x00,0x7F,0xC0,0xFF,0xE0,0x32,0x00,0x62,0x00,0x00,0x00,}}, +{ 0x9761, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x6B,0xA0,0x65,0x00,0x7D,0xE0,0x7F,0xC0,0x7F,0xE0,0x89,0x00,0x31,0x00,0x00,0x00,}}, +{ 0x9762, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x51,0x40,0x51,0x40,0x5F,0x40,0x51,0x40,0x5F,0x40,0x51,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x9764, {0x01,0x00,0xFF,0x00,0x21,0xC0,0x7F,0xC0,0x7F,0xC0,0x6D,0xC0,0x7D,0xC0,0x7D,0xC0,0x7D,0x00,0x6D,0x20,0x7D,0x20,0x45,0xE0,0x00,0x00,}}, +{ 0x9766, {0x00,0x00,0xFF,0xC0,0x21,0x40,0x7F,0xC0,0x7B,0x40,0x6B,0xC0,0x7B,0x40,0x7B,0xC0,0x7B,0x80,0x6B,0xA0,0x7F,0xA0,0x42,0x60,0x00,0x00,}}, +{ 0x9768, {0x00,0x00,0x7F,0xE0,0x7C,0xE0,0x7F,0xE0,0x7E,0xC0,0xBE,0xC0,0x27,0x20,0xFF,0xE0,0x7F,0x80,0x6E,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x9769, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x1F,0x00,0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0x976B, {0x70,0x00,0x77,0xC0,0xFB,0x40,0x73,0xC0,0x33,0x40,0x79,0x80,0x69,0x80,0x79,0x80,0xF9,0x80,0xFE,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x976D, {0x28,0x00,0x2B,0xE0,0x7C,0xA0,0x38,0xA0,0x10,0xA0,0x3D,0xA0,0x34,0xE0,0x3C,0xA0,0x11,0x20,0x7D,0x20,0x12,0x20,0x14,0x40,0x00,0x00,}}, +{ 0x9771, {0x70,0x00,0x77,0xC0,0xF9,0x40,0x75,0x40,0x33,0x40,0x79,0x40,0x69,0xC0,0x79,0xC0,0xFF,0x60,0xFE,0x40,0x24,0x40,0x28,0x80,0x00,0x00,}}, +{ 0x9774, {0x51,0x80,0x51,0x80,0xFF,0x80,0x72,0xA0,0x26,0xC0,0x7A,0x80,0x6A,0x80,0x7A,0x80,0x22,0x80,0xFE,0xA0,0x22,0xA0,0x22,0xE0,0x00,0x00,}}, +{ 0x9779, {0x39,0x80,0x38,0x80,0x7F,0xE0,0x3B,0xE0,0x1A,0xA0,0x3E,0xA0,0x37,0x60,0x3F,0x60,0x7E,0x20,0x7E,0x20,0x12,0x20,0x12,0x60,0x00,0x00,}}, +{ 0x977A, {0x71,0x80,0x71,0x80,0xFF,0xE0,0x77,0xE0,0x31,0x80,0x7B,0xC0,0x69,0x80,0x7B,0xC0,0xFF,0xE0,0xF9,0x80,0x21,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x977C, {0x70,0x00,0x73,0xC0,0xFE,0x40,0x72,0x40,0x33,0xC0,0x7A,0x40,0x6A,0x40,0x7A,0x40,0xFF,0xC0,0xFC,0x00,0x2F,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x9781, {0x71,0x80,0x71,0x80,0xFF,0xE0,0x73,0xC0,0x33,0x80,0x7B,0xC0,0x6B,0x40,0x7B,0x40,0xFF,0x80,0xFD,0x80,0x2A,0x40,0x24,0x20,0x00,0x00,}}, +{ 0x9784, {0x52,0x00,0x52,0x00,0xFF,0xC0,0x74,0x40,0x23,0xC0,0x7A,0xC0,0x6B,0xC0,0x7A,0xC0,0x22,0x00,0xFE,0x20,0x22,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x9785, {0x71,0x80,0x71,0x80,0xFF,0xC0,0x73,0xC0,0x33,0xC0,0x7B,0xC0,0x6F,0xE0,0x79,0x80,0xF9,0x80,0xFE,0x80,0x24,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x9786, {0x70,0x00,0x77,0xE0,0xF9,0x00,0x77,0xC0,0x37,0x40,0x7D,0x40,0x6D,0xC0,0x7E,0xC0,0xFE,0x40,0xFC,0x40,0x24,0x40,0x24,0xC0,0x00,0x00,}}, +{ 0x978B, {0x71,0x80,0x71,0x80,0xFF,0xC0,0x71,0x80,0x37,0xE0,0x79,0x80,0x69,0x80,0x7B,0xC0,0xF9,0x80,0xF9,0x80,0x27,0xE0,0x20,0x00,0x00,0x00,}}, +{ 0x978D, {0x50,0x80,0x50,0x80,0xFB,0xE0,0x55,0x40,0x71,0x00,0x7F,0xE0,0x69,0x40,0x7A,0x40,0x23,0x80,0xF8,0xC0,0x21,0x20,0x26,0x20,0x00,0x00,}}, +{ 0x978F, {0x00,0x00,0xFF,0x80,0x26,0x80,0x3D,0xA0,0xE8,0x60,0x11,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x9790, {0x71,0x00,0x71,0x00,0xFD,0xC0,0x71,0x00,0x37,0xE0,0x78,0x00,0x6F,0xE0,0x79,0x80,0xF9,0x80,0xF9,0x00,0x21,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x9798, {0x50,0x80,0x54,0xA0,0xFA,0xA0,0x50,0x80,0x73,0xC0,0xFA,0x40,0xAB,0xC0,0xFA,0x40,0x23,0xC0,0xFE,0x40,0x22,0x40,0x22,0xC0,0x00,0x00,}}, +{ 0x979C, {0x71,0x80,0x71,0xA0,0xFF,0xC0,0x73,0xC0,0x35,0xA0,0x79,0x80,0x6B,0xC0,0x7A,0x40,0xFF,0xC0,0xFE,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x97A0, {0x29,0x00,0x29,0x00,0x7D,0xE0,0x3A,0xA0,0x16,0xE0,0x3D,0xE0,0x37,0xE0,0x3D,0xA0,0x16,0xE0,0x7C,0xA0,0x10,0xA0,0x10,0xC0,0x00,0x00,}}, +{ 0x97A3, {0x70,0x00,0x77,0xC0,0xF9,0x80,0x77,0xE0,0x33,0xC0,0x7B,0x80,0x6D,0x80,0x79,0x80,0xFF,0xE0,0xFF,0xC0,0x25,0xA0,0x21,0x80,0x00,0x00,}}, +{ 0x97A6, {0x61,0x80,0xF2,0x80,0xFE,0x80,0x62,0xA0,0x6F,0xA0,0xF3,0xC0,0xF7,0x80,0xF7,0xC0,0xFB,0xC0,0xFB,0xC0,0x63,0x20,0x62,0x20,0x00,0x00,}}, +{ 0x97A8, {0x70,0x00,0x73,0xC0,0xFB,0xC0,0x73,0xC0,0x33,0xC0,0x79,0x00,0x6B,0xE0,0x7F,0xA0,0xFB,0xE0,0xFB,0xE0,0x22,0x20,0x20,0xC0,0x00,0x00,}}, +{ 0x97AB, {0x39,0x00,0x7F,0x00,0x3B,0xE0,0x1F,0xA0,0x3F,0xE0,0x34,0x20,0x35,0xE0,0x3D,0xA0,0x7F,0xA0,0x7F,0xE0,0x11,0xE0,0x10,0xC0,0x00,0x00,}}, +{ 0x97AD, {0x52,0x00,0xFB,0xE0,0x54,0x80,0x75,0xE0,0x2D,0xE0,0xF5,0xA0,0xB5,0xE0,0xF4,0xA0,0x25,0x80,0xF4,0x80,0x25,0x40,0x26,0x20,0x00,0x00,}}, +{ 0x97B3, {0x71,0x80,0x73,0xC0,0xFF,0xE0,0x71,0x80,0x31,0x80,0x7A,0x40,0x6F,0xE0,0x78,0x00,0xFF,0xC0,0xFE,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x97B4, {0x62,0x80,0xF2,0xC0,0xFF,0xE0,0x67,0xE0,0x64,0x00,0xF7,0xC0,0xF7,0xC0,0xF7,0xC0,0xFF,0xC0,0xFB,0xC0,0x73,0xC0,0x62,0xC0,0x00,0x00,}}, +{ 0x97C3, {0x69,0x80,0xF5,0x80,0xF7,0xC0,0x6B,0xE0,0x67,0xC0,0xF7,0xE0,0xF1,0x80,0xFF,0xC0,0xF7,0xE0,0xF7,0xE0,0x6B,0x80,0x71,0xE0,0x00,0x00,}}, +{ 0x97C6, {0x68,0x00,0xF7,0xE0,0xF7,0xE0,0x6B,0xE0,0x67,0xE0,0xF5,0x80,0xF3,0xE0,0xFF,0xC0,0xF7,0xA0,0xF5,0xC0,0x6B,0xC0,0x71,0xE0,0x00,0x00,}}, +{ 0x97C8, {0x63,0x80,0xFF,0xE0,0xFF,0xC0,0x6F,0xC0,0x6F,0xC0,0xF1,0x40,0xFF,0xE0,0xF9,0x40,0xFD,0xC0,0xFA,0xA0,0x70,0xE0,0x71,0x20,0x00,0x00,}}, +{ 0x97CB, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x00,0x21,0x80,0x3F,0x00,0x03,0x00,0x3F,0xC0,0xFF,0xE0,0x03,0x00,0x01,0x00,0x00,0x00,}}, +{ 0x97D3, {0x21,0x00,0x23,0xC0,0xF9,0x40,0x7F,0xE0,0x4B,0xC0,0x7A,0x40,0x4B,0xC0,0x78,0x80,0x23,0xC0,0xFF,0xE0,0x20,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x97DC, {0x20,0xC0,0x7B,0xC0,0xFF,0xE0,0xFC,0x20,0x78,0x00,0x4B,0xC0,0x7A,0x40,0x12,0x40,0x7A,0x40,0xFE,0x40,0x13,0xC0,0x12,0x40,0x00,0x00,}}, +{ 0x97ED, {0x09,0x00,0x09,0x00,0x79,0xC0,0x79,0xC0,0x09,0x00,0x79,0xC0,0x09,0x00,0x09,0x00,0x79,0xC0,0x09,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x97EE, {0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x71,0xC0,0x11,0x00,0x71,0xC0,0x11,0x00,0x71,0xC0,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x97F2, {0x04,0x00,0xFF,0xE0,0x7F,0xC0,0x75,0x80,0x77,0xC0,0x8A,0x20,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x3B,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x97F3, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x97F5, {0x11,0x00,0x19,0x00,0x7D,0xE0,0x2B,0xE0,0x3A,0x20,0x7D,0xA0,0x00,0x20,0x3C,0xA0,0x3D,0x20,0x3C,0x20,0x3C,0x20,0x24,0x40,0x00,0x00,}}, +{ 0x97F6, {0x10,0x00,0x1B,0xE0,0x7C,0xA0,0x28,0xA0,0x39,0x20,0x7E,0x40,0x00,0x00,0x3D,0xE0,0x3D,0x20,0x3D,0x20,0x3D,0xE0,0x25,0x20,0x00,0x00,}}, +{ 0x97FB, {0x20,0x00,0x23,0xC0,0xFE,0x40,0x53,0xC0,0xFF,0xC0,0x02,0x40,0x73,0xC0,0x52,0x40,0x73,0xC0,0x53,0xC0,0x73,0x40,0x5C,0x20,0x00,0x00,}}, +{ 0x97FF, {0x2E,0xC0,0xEA,0xC0,0x7E,0xA0,0xFA,0xE0,0x2E,0x80,0xFF,0xC0,0x11,0x00,0xFF,0xE0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x9801, {0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x9802, {0x00,0x00,0x0F,0xE0,0xF2,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x68,0x20,0x00,0x00,}}, +{ 0x9803, {0x00,0x00,0x5F,0xE0,0x42,0x00,0x5F,0xC0,0x74,0x40,0x47,0xC0,0x44,0x40,0x57,0xC0,0x54,0x40,0x37,0xC0,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x9805, {0x00,0x00,0x1F,0xE0,0xF2,0x00,0x27,0xC0,0x24,0x40,0x27,0xC0,0x24,0x40,0x37,0xC0,0xC4,0x40,0x07,0xC0,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x9806, {0x00,0x00,0x4F,0xE0,0x69,0x00,0x6B,0xC0,0x6A,0x40,0x6B,0xC0,0x6A,0x40,0x6B,0xC0,0x6A,0x40,0x4B,0xC0,0x4B,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9808, {0x20,0x00,0x5F,0xE0,0x82,0x00,0x27,0xC0,0x24,0x40,0x57,0xC0,0x94,0x40,0x27,0xC0,0x24,0x40,0x47,0xC0,0x8C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0x980C, {0x00,0x00,0x37,0xE0,0x11,0x00,0x6B,0xC0,0x4A,0x40,0xA7,0xC0,0x22,0x40,0x33,0xC0,0x7B,0xC0,0xFB,0xC0,0x02,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x980F, {0x20,0x00,0x27,0xE0,0xF9,0x00,0xFF,0xC0,0x32,0x40,0x73,0xC0,0x72,0x40,0x73,0xC0,0x77,0xC0,0x4F,0xC0,0x42,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9810, {0x00,0x00,0x7F,0xE0,0x19,0x00,0x33,0xC0,0xFE,0x40,0x27,0xC0,0x2A,0x40,0x33,0xC0,0x22,0x40,0x23,0xC0,0x22,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x9811, {0x00,0x00,0x07,0xE0,0x79,0x00,0x03,0xC0,0xFE,0x40,0x53,0xC0,0x52,0x40,0x53,0xC0,0x5E,0x40,0x43,0xC0,0x86,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x9812, {0x30,0x00,0x17,0xE0,0x31,0x00,0x2B,0xC0,0x4A,0x40,0x7F,0xC0,0xAA,0x40,0x2B,0xC0,0x2A,0x40,0x4B,0xC0,0x56,0x40,0x88,0x20,0x00,0x00,}}, +{ 0x9813, {0x20,0x00,0x27,0xE0,0x3D,0x00,0xE3,0xC0,0x6A,0x40,0x6B,0xC0,0x6A,0x40,0x6B,0xC0,0x7A,0x40,0x2B,0xC0,0x22,0x40,0x1C,0x20,0x00,0x00,}}, +{ 0x9817, {0x10,0x00,0x17,0xE0,0x7D,0x00,0x5B,0xC0,0x52,0x40,0x7B,0xC0,0x4A,0x40,0x6B,0xC0,0x52,0x40,0x5B,0xC0,0x6A,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9818, {0x20,0x00,0x27,0xE0,0x51,0x00,0x8B,0xC0,0xF2,0x40,0x03,0xC0,0xFA,0x40,0x2B,0xC0,0x2A,0x40,0x3B,0xC0,0x22,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x981A, {0x00,0x00,0xFF,0xE0,0x49,0x00,0x73,0xC0,0x3A,0x40,0x67,0xC0,0xA2,0x40,0x7B,0xC0,0x22,0x40,0x3B,0xC0,0xE2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x9821, {0x20,0x00,0x27,0xE0,0xF9,0x00,0xFF,0xC0,0x22,0x40,0x7B,0xC0,0x02,0x40,0x7B,0xC0,0x4B,0xC0,0x4B,0xC0,0x7A,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x9824, {0x00,0x00,0x7F,0xE0,0x51,0x00,0x5B,0xC0,0x7A,0x40,0x6B,0xC0,0x6A,0x40,0x7B,0xC0,0x53,0xC0,0x53,0xC0,0x7A,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x982C, {0x20,0x00,0x27,0xE0,0xF9,0x00,0xAF,0xC0,0xAA,0x40,0x73,0xC0,0x62,0x40,0xFF,0xC0,0x32,0x40,0x6B,0xC0,0x62,0x40,0xAC,0x20,0x00,0x00,}}, +{ 0x982D, {0x00,0x00,0xFF,0xE0,0x01,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x2B,0xC0,0x32,0x40,0x3B,0xC0,0xC6,0x40,0x18,0x20,0x00,0x00,}}, +{ 0x9834, {0x40,0x00,0x57,0xE0,0x61,0x00,0x7B,0xC0,0x02,0x40,0x7B,0xC0,0x02,0x40,0xFF,0xC0,0x3A,0x40,0x6B,0xC0,0xA2,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x9837, {0x20,0x00,0x37,0xE0,0x79,0x00,0x7B,0xC0,0x82,0x40,0x7B,0xC0,0x12,0x40,0x33,0xC0,0x7B,0xC0,0x4B,0xC0,0x7A,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x9838, {0x00,0x00,0xFF,0xE0,0x69,0x00,0xFB,0xC0,0xFA,0x40,0x6B,0xC0,0x02,0x40,0xFB,0xC0,0x23,0xC0,0x3B,0xC0,0xE2,0x40,0x0C,0x20,0x00,0x00,}}, +{ 0x983B, {0x20,0x00,0x27,0xE0,0x79,0x00,0x63,0xC0,0xFE,0x40,0x33,0xC0,0x2A,0x40,0x67,0xC0,0xAE,0x40,0x33,0xC0,0x22,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x983C, {0x20,0x00,0x27,0xE0,0xFD,0x00,0x23,0xC0,0x7A,0x40,0x6B,0xC0,0x7A,0x40,0x33,0xC0,0x6A,0x40,0xA3,0xC0,0x22,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x983D, {0x08,0x00,0x77,0xE0,0xF9,0x00,0xFF,0xC0,0x7A,0x40,0xAB,0xC0,0x72,0x40,0x73,0xC0,0x77,0xC0,0x7F,0xC0,0x52,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9846, {0x00,0x00,0x7F,0xE0,0x79,0x00,0x7B,0xC0,0x7A,0x40,0x23,0xC0,0xFE,0x40,0x73,0xC0,0x6B,0xC0,0xA3,0xC0,0x22,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x984B, {0x00,0x00,0x7F,0xE0,0x69,0x00,0x7B,0xC0,0x7A,0x40,0x7B,0xC0,0x22,0x40,0x1B,0xC0,0x77,0xC0,0xF7,0xC0,0xF2,0x40,0x3C,0x20,0x00,0x00,}}, +{ 0x984C, {0x00,0x00,0x7F,0xE0,0x4B,0xC0,0x7A,0x40,0x7B,0xC0,0x02,0x40,0xFF,0xC0,0x22,0x40,0x7B,0xC0,0x62,0x80,0x74,0x40,0x8F,0xE0,0x00,0x00,}}, +{ 0x984D, {0x20,0x00,0x27,0xE0,0xFD,0x00,0xBF,0xC0,0x2A,0x40,0x73,0xC0,0x32,0x40,0x6B,0xC0,0xFF,0xC0,0x4B,0xC0,0x7A,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x984E, {0x00,0x00,0xFF,0xE0,0xB5,0x00,0xFF,0xC0,0x02,0x40,0x7B,0xC0,0x02,0x40,0xFF,0xC0,0x42,0x40,0x7B,0xC0,0x0A,0x40,0x3C,0x20,0x00,0x00,}}, +{ 0x984F, {0x20,0x00,0x37,0xE0,0xFD,0x00,0x33,0xC0,0x2A,0x40,0x7F,0xC0,0x52,0x40,0x7B,0xC0,0x77,0xC0,0x6F,0xC0,0xB2,0x40,0x6C,0x20,0x00,0x00,}}, +{ 0x9854, {0x20,0x00,0x27,0xE0,0xF9,0x00,0x53,0xC0,0x7E,0x40,0x53,0xC0,0x6A,0x40,0x53,0xC0,0x66,0x40,0x4B,0xC0,0xB2,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x9855, {0x00,0x00,0x7F,0xE0,0x49,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x36,0x40,0xB7,0xC0,0x7A,0x40,0x73,0xC0,0x32,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x9858, {0x00,0x00,0x7F,0xE0,0x48,0x80,0x7D,0xC0,0x65,0x40,0x7D,0xC0,0x65,0x40,0x7D,0xC0,0x59,0x40,0x75,0xC0,0x91,0x40,0x36,0x20,0x00,0x00,}}, +{ 0x985B, {0x20,0x00,0x27,0xE0,0xFD,0x00,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7A,0x40,0x4B,0xC0,0x7A,0x40,0xFF,0xC0,0x2A,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x985E, {0x20,0x00,0xAB,0xE0,0x71,0x00,0xFF,0xC0,0x32,0x40,0x6B,0xC0,0x6A,0x40,0xA3,0xC0,0xFE,0x40,0x33,0xC0,0x52,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9867, {0x00,0x00,0xFF,0xE0,0x7C,0x80,0x45,0xC0,0x7D,0x40,0x69,0xC0,0x7F,0x40,0x79,0xC0,0x7D,0x40,0xB9,0xC0,0xBF,0x40,0x22,0x20,0x00,0x00,}}, +{ 0x986B, {0x10,0x00,0xFF,0xE0,0x7C,0x80,0x7D,0xC0,0x7D,0x40,0x7D,0xC0,0x79,0x40,0x69,0xC0,0x79,0xC0,0x79,0xC0,0x39,0x40,0xE6,0x20,0x00,0x00,}}, +{ 0x986F, {0x00,0x00,0x7F,0xE0,0x7C,0x80,0x7D,0xC0,0x7D,0x40,0x69,0xC0,0xF5,0x40,0x75,0xC0,0xFF,0xC0,0xFF,0xC0,0x7B,0x40,0xAA,0x20,0x00,0x00,}}, +{ 0x9870, {0x20,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0xF3,0xC0,0x6B,0xC0,0xFF,0xE0,0x35,0x80,0x3F,0x80,0x1F,0x00,0xFF,0xE0,0x01,0x00,0x00,0x00,}}, +{ 0x9871, {0x10,0x00,0x1F,0xE0,0x7E,0x80,0x7D,0xC0,0x7D,0x40,0x75,0xC0,0x7D,0x40,0x7D,0xC0,0x79,0xC0,0xFD,0xC0,0x7F,0x40,0x62,0x20,0x00,0x00,}}, +{ 0x9873, {0x00,0x00,0x7F,0xE0,0x3C,0x80,0x3D,0xC0,0x7D,0x40,0x05,0xC0,0xFF,0x40,0x6B,0xC0,0x6F,0xC0,0x6F,0xC0,0xFF,0xC0,0x23,0x20,0x00,0x00,}}, +{ 0x9874, {0x70,0x00,0xFF,0xE0,0xF8,0x80,0xFD,0xC0,0xFD,0x40,0x71,0xC0,0x7D,0x40,0xD1,0xC0,0x79,0xC0,0x79,0xC0,0x7D,0x40,0x46,0x20,0x00,0x00,}}, +{ 0x98A8, {0x00,0x00,0x7F,0x80,0x46,0x80,0x78,0x80,0x7E,0x80,0x6A,0x80,0x6A,0x80,0x7E,0x80,0x6A,0x80,0x4F,0xA0,0x71,0x60,0x80,0x20,0x00,0x00,}}, +{ 0x98AA, {0x00,0x00,0xFF,0xE0,0x07,0x00,0x04,0x00,0x3F,0x80,0x63,0x80,0x7C,0x80,0x7F,0x80,0x7F,0x80,0x6F,0xE0,0x7E,0xE0,0x80,0x20,0x00,0x00,}}, +{ 0x98AF, {0x60,0x00,0x6F,0x80,0x6F,0x80,0xFE,0x80,0x3F,0x80,0xAF,0x80,0x6F,0x80,0x6F,0x80,0x7B,0x80,0xF3,0xE0,0x3C,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x98B1, {0x01,0x80,0x7F,0x80,0x7F,0xC0,0x7B,0x60,0x7F,0xE0,0x76,0x00,0x77,0xC0,0x7F,0x40,0x7F,0xC0,0x5F,0xE0,0x73,0xA0,0x80,0x60,0x00,0x00,}}, +{ 0x98B6, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x73,0xC0,0x7F,0xC0,0x77,0xC0,0x77,0xC0,0x7F,0xE0,0x7F,0xE0,0x5F,0x20,0x73,0xA0,0x80,0x60,0x00,0x00,}}, +{ 0x98C3, {0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x77,0xE0,0x7F,0xE0,0x6D,0xC0,0x6C,0x00,0x7F,0xE0,0x7E,0xE0,0x7E,0xA0,0x67,0xA0,0x80,0xE0,0x00,0x00,}}, +{ 0x98C4, {0x00,0x00,0xFF,0xC0,0xFF,0xC0,0xFF,0x40,0xFF,0xC0,0x07,0xC0,0x77,0xC0,0x07,0xC0,0xFD,0xE0,0x79,0xE0,0xAE,0xA0,0x30,0x20,0x00,0x00,}}, +{ 0x98C6, {0x30,0x00,0x3F,0xC0,0x7F,0xC0,0x37,0x40,0x6F,0xC0,0x77,0xC0,0x7F,0xC0,0xFF,0xC0,0x5D,0xE0,0x79,0xE0,0xAE,0xA0,0xB0,0x20,0x00,0x00,}}, +{ 0x98DB, {0x00,0x00,0x3F,0x40,0x19,0x80,0x69,0x40,0x29,0x40,0x28,0xC0,0xFF,0x40,0x29,0x80,0x49,0xC0,0x49,0x20,0x88,0xA0,0x08,0x60,0x00,0x00,}}, +{ 0x98DC, {0x18,0x00,0xEF,0xE0,0x7B,0xC0,0xFF,0xE0,0x73,0xE0,0x6B,0xA0,0x67,0xA0,0xFB,0xC0,0x7B,0xE0,0x7B,0xE0,0x7D,0xE0,0x49,0xA0,0x00,0x00,}}, +{ 0x98DF, {0x04,0x00,0x04,0x00,0x0A,0x00,0x35,0x80,0xFF,0x60,0x21,0x00,0x3F,0x00,0x21,0x00,0x3F,0x00,0x26,0x00,0x3B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x98E2, {0x20,0x00,0x33,0x80,0x5A,0x80,0x62,0x80,0xFA,0x80,0x4A,0x80,0x7A,0x80,0x4A,0x80,0x7A,0x80,0x54,0xA0,0x7C,0xA0,0xC8,0x60,0x00,0x00,}}, +{ 0x98E9, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x7F,0x80,0xF3,0xC0,0x53,0xC0,0x73,0xC0,0x53,0xC0,0x73,0xC0,0x71,0xA0,0x79,0xA0,0x40,0xE0,0x00,0x00,}}, +{ 0x98EB, {0x20,0x40,0x30,0x80,0x7B,0x80,0x79,0x80,0xF1,0x80,0x57,0xE0,0x71,0x80,0x51,0x80,0x79,0x80,0x7A,0x80,0x7C,0x40,0x48,0x20,0x00,0x00,}}, +{ 0x98ED, {0x22,0x00,0x32,0x00,0x7B,0xE0,0x7F,0xE0,0xF9,0x00,0x4F,0xC0,0x79,0x40,0x49,0x40,0x79,0x40,0x7A,0x40,0x7A,0x40,0x44,0x80,0x00,0x00,}}, +{ 0x98EE, {0x21,0x00,0x31,0x00,0x79,0x00,0x7B,0xE0,0xFB,0xA0,0x4D,0xC0,0x79,0x80,0x49,0x80,0x79,0x80,0x79,0x80,0x7A,0x40,0x44,0x20,0x00,0x00,}}, +{ 0x98EF, {0x20,0x00,0x33,0xE0,0x6A,0x00,0xA3,0xC0,0xFA,0x40,0x4A,0x40,0x7B,0x40,0x4B,0x40,0x7A,0x80,0x5C,0x80,0x75,0x40,0xCA,0x20,0x00,0x00,}}, +{ 0x98F2, {0x21,0x00,0x31,0x00,0x79,0x00,0x57,0xE0,0xFB,0x20,0x4D,0x40,0x79,0x00,0x49,0x00,0x79,0x80,0x52,0x80,0x7C,0x40,0xC8,0x20,0x00,0x00,}}, +{ 0x98F4, {0x20,0x80,0x30,0x80,0x69,0x00,0xA1,0x40,0xFA,0xE0,0x4F,0x20,0x78,0x00,0x4B,0xC0,0x7A,0x40,0x52,0x40,0x7B,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x98FC, {0x10,0x00,0x1B,0xE0,0x3C,0x20,0x35,0xE0,0x7C,0x20,0x25,0xE0,0x3D,0x60,0x25,0x60,0x3D,0xE0,0x2C,0x20,0x3C,0x20,0x60,0x60,0x00,0x00,}}, +{ 0x98FD, {0x21,0x00,0x31,0x00,0x6B,0xC0,0xA4,0x40,0xFB,0xC0,0x48,0xC0,0x7B,0xC0,0x4A,0x80,0x7A,0x00,0x5A,0x20,0x7A,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x98FE, {0x21,0x00,0x31,0x00,0x7B,0xE0,0x64,0x80,0xF8,0x80,0x4B,0xC0,0x7A,0xC0,0x4A,0xC0,0x7A,0xC0,0x52,0xC0,0x78,0x80,0xC0,0x80,0x00,0x00,}}, +{ 0x9903, {0x21,0x80,0x31,0x80,0x7F,0xE0,0x79,0x40,0xF2,0xE0,0x55,0xA0,0x71,0x80,0x51,0x80,0x79,0x80,0x79,0x80,0x7A,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x9905, {0x24,0x40,0x32,0x40,0x6F,0xE0,0xA2,0x80,0xF2,0x80,0x52,0x80,0x7F,0xE0,0x52,0x80,0x72,0x80,0x54,0x80,0x74,0x80,0xC8,0x80,0x00,0x00,}}, +{ 0x9909, {0x10,0xC0,0x18,0x80,0x3F,0xE0,0x3F,0xE0,0x7B,0xA0,0x2B,0xE0,0x3B,0xE0,0x2B,0xE0,0x3F,0xE0,0x3E,0x20,0x3E,0x20,0x22,0x60,0x00,0x00,}}, +{ 0x990A, {0x11,0x00,0x7F,0xC0,0x04,0x00,0x3F,0x80,0xFF,0xE0,0x15,0x00,0x7F,0x80,0xDF,0x60,0x1F,0x00,0x14,0x80,0x1B,0x00,0x61,0xC0,0x00,0x00,}}, +{ 0x990C, {0x20,0x00,0x37,0xE0,0x69,0x40,0xA1,0xC0,0xF9,0x40,0x49,0x40,0x79,0xC0,0x49,0x40,0x79,0xE0,0x5F,0x40,0x78,0x40,0xC0,0x40,0x00,0x00,}}, +{ 0x9910, {0x23,0xC0,0x3A,0x40,0xFD,0x80,0xFD,0x40,0x6E,0x20,0x35,0x80,0xDF,0xE0,0x1F,0x00,0x1F,0x00,0x12,0x80,0x1F,0x80,0x60,0xC0,0x00,0x00,}}, +{ 0x9912, {0x20,0xC0,0x33,0xC0,0x7B,0xE0,0x7C,0x20,0xF8,0x00,0x49,0x80,0x7F,0xE0,0x49,0x40,0x7B,0xC0,0x7B,0x80,0x79,0xC0,0x4E,0x20,0x00,0x00,}}, +{ 0x9913, {0x21,0x80,0x32,0xC0,0x7E,0xA0,0x62,0x80,0xFF,0xE0,0x52,0x80,0x72,0xC0,0x53,0x80,0x7E,0x80,0x52,0xA0,0x7B,0x60,0xC6,0x20,0x00,0x00,}}, +{ 0x9914, {0x21,0x80,0x33,0x40,0x7F,0xE0,0x7F,0xC0,0xF7,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x7F,0xC0,0x7F,0xC0,0x7D,0x40,0x45,0xC0,0x00,0x00,}}, +{ 0x9918, {0x21,0x80,0x31,0x80,0x79,0x80,0x7A,0x40,0xF7,0xE0,0x51,0x80,0x77,0xE0,0x51,0x80,0x7B,0xC0,0x7D,0xA0,0x79,0xA0,0x41,0x80,0x00,0x00,}}, +{ 0x991D, {0x21,0x80,0x33,0xC0,0x7F,0xE0,0x79,0x80,0xF1,0x80,0x57,0xE0,0x71,0x80,0x51,0xC0,0x79,0x40,0x7A,0x40,0x7C,0x40,0x48,0x80,0x00,0x00,}}, +{ 0x991E, {0x21,0x80,0x31,0x40,0x7F,0xE0,0x7F,0xC0,0xF1,0xA0,0x56,0x60,0x71,0xA0,0x53,0xE0,0x7F,0xC0,0x79,0xA0,0x7E,0x60,0x40,0x20,0x00,0x00,}}, +{ 0x9920, {0x22,0x80,0x32,0x80,0x7F,0xE0,0x7F,0xE0,0xF2,0x80,0x52,0x80,0x73,0x80,0x5E,0xE0,0x7A,0x80,0x7C,0x80,0x7C,0x80,0x48,0x80,0x00,0x00,}}, +{ 0x9921, {0x11,0x00,0x19,0xE0,0x3D,0x20,0x3E,0x20,0x7C,0x60,0x28,0x80,0x3B,0x60,0x2A,0x20,0x3F,0x20,0x3E,0x20,0x3F,0xE0,0x22,0x20,0x00,0x00,}}, +{ 0x9924, {0x21,0x80,0x31,0xA0,0x7B,0xA0,0x7F,0xC0,0xF1,0x80,0x52,0x40,0x75,0xA0,0x53,0xA0,0x7F,0xC0,0x79,0x80,0x7A,0x40,0x44,0x20,0x00,0x00,}}, +{ 0x9928, {0x21,0x00,0x31,0x00,0x5F,0xE0,0x64,0x40,0xFB,0x80,0x4A,0x80,0x7B,0x80,0x4A,0x00,0x7B,0xC0,0x5A,0x40,0x77,0xC0,0xC2,0x40,0x00,0x00,}}, +{ 0x992C, {0x32,0x00,0x32,0xE0,0x3F,0xE0,0x3F,0xE0,0x7A,0xE0,0x37,0xE0,0x35,0xE0,0x35,0xE0,0x3F,0xA0,0x3F,0xA0,0x39,0x20,0x22,0x60,0x00,0x00,}}, +{ 0x992E, {0x01,0x80,0x7F,0xC0,0x3F,0xE0,0xFB,0xC0,0x75,0xC0,0xCA,0x00,0x3F,0x80,0xDF,0xE0,0x1F,0x00,0x1F,0x00,0x1F,0x80,0x71,0xC0,0x00,0x00,}}, +{ 0x993D, {0x21,0x00,0x32,0x00,0x7F,0xC0,0x7F,0xC0,0xF7,0x40,0x57,0xC0,0x77,0x40,0x53,0x80,0x7F,0xC0,0x7D,0xE0,0x79,0x20,0x51,0xE0,0x00,0x00,}}, +{ 0x993E, {0x21,0x00,0x36,0xE0,0x7C,0xA0,0x7E,0xA0,0xF7,0xA0,0x5D,0xE0,0x71,0x00,0x57,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x44,0x40,0x00,0x00,}}, +{ 0x9942, {0x20,0x00,0x37,0xC0,0x7D,0x40,0x7F,0xC0,0xF4,0xC0,0x57,0xC0,0x70,0x00,0x57,0xC0,0x7D,0xC0,0x7D,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x9945, {0x20,0x00,0x33,0xC0,0x7B,0xC0,0x7B,0xC0,0xF3,0xC0,0x57,0xE0,0x75,0xA0,0x57,0xE0,0x7B,0xC0,0x79,0x80,0x7B,0x80,0x4C,0x60,0x00,0x00,}}, +{ 0x9949, {0x21,0x80,0x37,0xE0,0x79,0x80,0x7B,0xC0,0xF3,0xC0,0x53,0xC0,0x71,0x80,0x57,0xE0,0x7B,0xC0,0x7B,0xC0,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x994B, {0x21,0x80,0x33,0xC0,0x7B,0xC0,0x7F,0xE0,0xF3,0xC0,0x52,0x40,0x73,0xC0,0x52,0x40,0x7B,0xC0,0x7B,0xC0,0x7B,0x40,0x4C,0x20,0x00,0x00,}}, +{ 0x994C, {0x20,0x00,0x37,0xC0,0x7F,0xC0,0x7F,0xC0,0xF5,0xA0,0x53,0xE0,0x71,0x80,0x57,0xC0,0x7F,0xE0,0x7F,0xE0,0x7A,0x40,0x44,0x40,0x00,0x00,}}, +{ 0x9950, {0x21,0x80,0x37,0xE0,0x7B,0xC0,0x7F,0xE0,0xF4,0x40,0x5F,0xE0,0x73,0xC0,0x52,0x40,0x7B,0xC0,0x7A,0x40,0x7F,0xE0,0x40,0x00,0x00,0x00,}}, +{ 0x9951, {0x65,0x40,0x67,0x40,0x7F,0xA0,0x77,0x60,0xFB,0xE0,0x6F,0xE0,0x61,0x40,0x6F,0xE0,0x7F,0x40,0x79,0xE0,0x7B,0x60,0x50,0x20,0x00,0x00,}}, +{ 0x9952, {0x21,0x80,0x31,0x80,0x7B,0xC0,0x7F,0xE0,0xF2,0xC0,0x5F,0xE0,0x72,0x80,0x53,0xE0,0x7F,0xE0,0x7F,0xE0,0x72,0xA0,0x4C,0x60,0x00,0x00,}}, +{ 0x9955, {0x79,0xC0,0x6B,0xE0,0xFF,0xC0,0xFF,0xC0,0x4D,0xA0,0x3B,0x60,0x3F,0x80,0xDF,0xE0,0x1F,0x00,0x1F,0x00,0x1B,0x80,0x61,0xC0,0x00,0x00,}}, +{ 0x9957, {0x2E,0xC0,0xEA,0xC0,0x7E,0xA0,0xFA,0xE0,0x2E,0x80,0xEF,0x80,0x15,0x00,0x7F,0xC0,0x9F,0x60,0x1E,0x80,0x1F,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0x9996, {0x21,0x00,0x12,0x00,0xFF,0xE0,0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x9997, {0x22,0x40,0x23,0xC0,0x27,0xE0,0xFB,0xC0,0x3A,0x40,0x2B,0xC0,0x2A,0x40,0x2B,0xC0,0x2B,0xC0,0x6B,0xE0,0x48,0x20,0x87,0xE0,0x00,0x00,}}, +{ 0x9998, {0x51,0x80,0x71,0xC0,0xFF,0xE0,0xFF,0xE0,0x27,0xC0,0x75,0xC0,0x55,0xC0,0x77,0x80,0x75,0x80,0x7F,0xE0,0x73,0x60,0x52,0x20,0x00,0x00,}}, +{ 0x9999, {0x01,0x80,0x3F,0x00,0x04,0x00,0xFF,0xE0,0x15,0x00,0x24,0x80,0xFF,0xE0,0x20,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,}}, +{ 0x99A5, {0x1A,0x00,0x62,0x00,0xFF,0xE0,0xFF,0xC0,0x7B,0xC0,0x6A,0x40,0xA3,0xC0,0x7B,0x00,0x7F,0xC0,0x7F,0x80,0x7B,0x80,0x4C,0x60,0x00,0x00,}}, +{ 0x99A8, {0x21,0xC0,0xFF,0x60,0x7B,0xE0,0x6B,0x40,0x79,0x80,0x5F,0x60,0x84,0x00,0xFF,0xE0,0x3F,0x80,0xDF,0x60,0x1F,0x00,0x1F,0x00,0x00,0x00,}}, +{ 0x99AC, {0x00,0x00,0x7F,0xC0,0x44,0x00,0x7F,0x80,0x7F,0x80,0x44,0x00,0x7F,0xE0,0x00,0x20,0x14,0xA0,0x50,0x20,0x40,0x20,0x80,0xC0,0x00,0x00,}}, +{ 0x99AD, {0x00,0x00,0x7F,0xC0,0x7A,0x40,0x7A,0x40,0x7B,0xC0,0x51,0x80,0x7D,0x80,0x15,0x80,0x7D,0x80,0x7D,0x80,0x8A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x99AE, {0x00,0x00,0x0F,0xC0,0x4F,0x80,0x6F,0x80,0x0F,0x80,0x29,0x00,0x2F,0xE0,0x60,0xA0,0x5E,0xA0,0x55,0x20,0x70,0x40,0x00,0x80,0x00,0x00,}}, +{ 0x99B3, {0x00,0x80,0x7E,0x80,0x7A,0xC0,0x7B,0xC0,0x7E,0xC0,0x62,0xC0,0x7A,0xC0,0x3A,0xC0,0x7A,0xC0,0x7A,0x20,0x8A,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x99B4, {0x00,0x20,0x3F,0x20,0x3D,0x60,0x3D,0x60,0x3D,0x60,0x31,0x60,0x3D,0x60,0x1D,0x60,0x3D,0x60,0x3D,0x60,0x4A,0x20,0x14,0x20,0x00,0x00,}}, +{ 0x99BC, {0x01,0x80,0x7D,0x80,0x7F,0xE0,0x7F,0xE0,0x7A,0x40,0x62,0x40,0x79,0x80,0x39,0x80,0x79,0x80,0x79,0x80,0x8A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x99C1, {0x00,0x40,0x7C,0x40,0x7B,0x80,0x79,0xC0,0x79,0x20,0x62,0x40,0x7D,0x40,0x39,0x80,0x79,0x80,0x69,0x80,0x8A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x99C4, {0x00,0x80,0x7C,0x80,0x78,0x80,0x7F,0xE0,0x78,0x80,0x60,0x80,0x79,0x80,0x39,0x80,0x7A,0x40,0x7B,0x40,0x94,0xA0,0x28,0x20,0x00,0x00,}}, +{ 0x99C5, {0x00,0x00,0x7F,0xC0,0x7A,0x40,0x7A,0x40,0x7B,0xC0,0x63,0x40,0x7B,0x00,0x7A,0x80,0xAA,0x80,0xAC,0x40,0x94,0x40,0x28,0x20,0x00,0x00,}}, +{ 0x99C6, {0x00,0x00,0x7F,0xE0,0x7A,0x40,0x7B,0x40,0x7A,0xC0,0x62,0x80,0x7A,0x80,0x3A,0xC0,0x7B,0x40,0x7A,0x00,0x8B,0xE0,0x32,0x00,0x00,0x00,}}, +{ 0x99C8, {0x00,0x40,0x7C,0x80,0x7B,0x00,0x7A,0x00,0x7B,0xE0,0x62,0x80,0x7A,0x80,0x3A,0x80,0x7A,0x80,0x7A,0x80,0x8F,0xE0,0x30,0x00,0x00,0x00,}}, +{ 0x99D0, {0x01,0x00,0x7C,0x80,0x7F,0xE0,0x78,0x80,0x78,0x80,0x60,0x80,0x7B,0xC0,0x38,0x80,0x78,0x80,0x78,0x80,0x8F,0xE0,0x30,0x00,0x00,0x00,}}, +{ 0x99D1, {0x20,0x00,0xFB,0xC0,0x69,0xC0,0x7B,0xC0,0xFF,0xE0,0x12,0x00,0x1F,0x80,0x1F,0x00,0x1F,0xC0,0x1F,0xC0,0x6B,0x40,0x41,0x80,0x00,0x00,}}, +{ 0x99D2, {0x00,0x80,0x3E,0x80,0x3D,0xE0,0x3D,0x20,0x3E,0x20,0x31,0xE0,0x3D,0x60,0x1D,0xE0,0x3D,0x20,0x3C,0x20,0x44,0x20,0x18,0x40,0x00,0x00,}}, +{ 0x99D5, {0x10,0x00,0x7D,0xE0,0x15,0x20,0x2D,0xE0,0x7F,0xE0,0x22,0x00,0x3F,0xC0,0x3F,0x80,0x3F,0xE0,0x1F,0xE0,0x2A,0xA0,0x40,0xC0,0x00,0x00,}}, +{ 0x99D8, {0x01,0x80,0x7D,0x80,0x79,0x80,0x79,0x80,0x79,0x40,0x67,0xA0,0x78,0x20,0x3B,0xC0,0x7A,0x40,0x7A,0x40,0x8B,0xC0,0x32,0x40,0x00,0x00,}}, +{ 0x99DB, {0x01,0x80,0x7D,0x80,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x63,0xC0,0x7B,0xC0,0x3F,0xC0,0x7B,0x00,0x79,0x00,0x8A,0xC0,0x34,0x20,0x00,0x00,}}, +{ 0x99DD, {0x01,0x80,0x7D,0x80,0x7B,0xE0,0x7B,0xE0,0x7F,0x00,0x61,0x00,0x79,0x60,0x39,0x80,0x79,0x00,0x79,0x00,0x89,0x20,0x31,0xE0,0x00,0x00,}}, +{ 0x99DF, {0x00,0x00,0x3F,0xE0,0x3A,0xE0,0x3A,0xE0,0x3A,0xE0,0x32,0xE0,0x3E,0xE0,0x1F,0x60,0x3F,0x20,0x3E,0x20,0x4B,0xE0,0x12,0x20,0x00,0x00,}}, +{ 0x99E2, {0x02,0x40,0x7D,0x40,0x7F,0xE0,0x7F,0xE0,0x79,0x80,0x61,0x80,0x7F,0xE0,0x39,0x80,0x7A,0x80,0x7A,0x80,0x94,0x80,0x28,0x80,0x00,0x00,}}, +{ 0x99ED, {0x01,0x80,0x7D,0x80,0x7F,0xE0,0x79,0x00,0x7E,0x80,0x61,0x80,0x79,0x40,0x3B,0x40,0x7A,0x80,0x78,0xC0,0x93,0x20,0x2C,0x20,0x00,0x00,}}, +{ 0x99EE, {0x01,0x80,0x7D,0x80,0x7F,0xE0,0x79,0x40,0x7A,0xE0,0x65,0xA0,0x79,0x80,0x39,0x80,0x79,0x80,0x79,0x80,0x8A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x99F1, {0x01,0x00,0x7D,0x00,0x7B,0xC0,0x7A,0x40,0x7D,0x80,0x61,0x80,0x7A,0x40,0x3F,0xE0,0x7A,0x40,0x7A,0x40,0x8B,0xC0,0x32,0x40,0x00,0x00,}}, +{ 0x99F2, {0x00,0x20,0x3D,0x20,0x39,0xE0,0x39,0xE0,0x39,0xE0,0x33,0xE0,0x3F,0xE0,0x1D,0xE0,0x3D,0xE0,0x3E,0xE0,0x4A,0xE0,0x14,0x20,0x00,0x00,}}, +{ 0x99F8, {0x00,0x00,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x60,0x00,0x7F,0xE0,0x3C,0x40,0x7B,0xC0,0x79,0x80,0x93,0x80,0x2C,0x60,0x00,0x00,}}, +{ 0x99FB, {0x00,0x00,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x60,0x00,0x7B,0xC0,0x39,0x80,0x7F,0xE0,0x79,0x80,0x89,0x80,0x31,0x80,0x00,0x00,}}, +{ 0x99FF, {0x01,0x00,0x7A,0x40,0x77,0xE0,0x72,0x80,0x72,0xA0,0x62,0x60,0x7D,0xC0,0x3B,0x40,0x7D,0x80,0x79,0x80,0x92,0x40,0x2C,0x20,0x00,0x00,}}, +{ 0x9A01, {0x01,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x60,0x00,0x7F,0xE0,0x39,0x00,0x7B,0xC0,0x78,0x40,0x88,0x40,0x30,0x80,0x00,0x00,}}, +{ 0x9A05, {0x01,0x40,0x7D,0x40,0x7B,0xE0,0x7B,0xE0,0x7E,0x80,0x63,0xC0,0x7A,0x80,0x3A,0xC0,0x7B,0xC0,0x7A,0x80,0x8B,0xE0,0x32,0x00,0x00,0x00,}}, +{ 0x9A0E, {0x00,0x80,0x7C,0x80,0x77,0xE0,0x79,0x80,0x7A,0x40,0x67,0xE0,0x78,0x40,0x3B,0xC0,0x7A,0xC0,0x7B,0xC0,0x88,0x40,0x30,0xC0,0x00,0x00,}}, +{ 0x9A0F, {0x01,0x40,0x7D,0x40,0x7B,0xE0,0x7B,0xE0,0x79,0xC0,0x61,0x40,0x79,0xC0,0x3B,0x40,0x7F,0xE0,0x79,0x40,0x8A,0x20,0x34,0x20,0x00,0x00,}}, +{ 0x9A12, {0x00,0x00,0x7F,0xC0,0x7A,0x40,0x79,0x80,0x7F,0xE0,0x60,0x80,0x7B,0xC0,0x3A,0xC0,0x7B,0xC0,0x78,0xC0,0x88,0xE0,0x37,0x20,0x00,0x00,}}, +{ 0x9A13, {0x00,0x80,0x7C,0x80,0x79,0x40,0x57,0xE0,0x78,0x80,0x53,0xE0,0x7A,0xA0,0x3B,0xE0,0x78,0x80,0x79,0x80,0x8A,0x40,0x34,0x20,0x00,0x00,}}, +{ 0x9A19, {0x00,0x00,0x7F,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x62,0x00,0x7B,0xE0,0x3B,0xE0,0x7F,0xE0,0x7F,0xA0,0x8B,0xA0,0x32,0x60,0x00,0x00,}}, +{ 0x9A28, {0x01,0x20,0x7D,0xA0,0x7A,0xC0,0x7B,0xC0,0x7A,0xC0,0x63,0xC0,0x7A,0xC0,0x3B,0xC0,0x78,0x80,0x7F,0xE0,0x88,0x80,0x30,0x80,0x00,0x00,}}, +{ 0x9A2B, {0x04,0x00,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x0A,0x00,0xFF,0xE0,0x3F,0x80,0x5F,0xC0,0x9E,0x60,0x1F,0x80,0x3A,0x80,0x55,0x80,0x00,0x00,}}, +{ 0x9A30, {0x02,0xA0,0x77,0xE0,0x51,0xC0,0x5F,0xF0,0x7A,0xA0,0x57,0xE0,0x5B,0xD0,0x73,0xC0,0x53,0xF0,0x57,0xF0,0x55,0xF0,0x98,0x60,0x00,0x00,}}, +{ 0x9A37, {0x00,0x00,0x7F,0xC0,0x7F,0xC0,0x7F,0x80,0x7B,0x80,0x6F,0xE0,0x7B,0xC0,0x3B,0xC0,0x7B,0xC0,0x79,0xC0,0x89,0xE0,0x37,0x20,0x00,0x00,}}, +{ 0x9A3E, {0x00,0x00,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x61,0x80,0x7B,0x80,0x39,0xC0,0x7F,0xE0,0x7B,0xA0,0x8D,0xA0,0x31,0x80,0x00,0x00,}}, +{ 0x9A40, {0x11,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x1F,0x00,0x75,0xC0,0x9F,0x60,0x1F,0xC0,0x3A,0x40,0x55,0x80,0x00,0x00,}}, +{ 0x9A42, {0x01,0x00,0x7A,0xC0,0x77,0xC0,0x77,0xC0,0x7F,0xE0,0x61,0x80,0x7A,0x80,0x3D,0x60,0x7B,0x00,0x7B,0x40,0x89,0xC0,0x37,0x00,0x00,0x00,}}, +{ 0x9A43, {0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x60,0x00,0x7B,0xC0,0x38,0x00,0x7F,0xE0,0x7B,0xA0,0x8D,0xA0,0x31,0x80,0x00,0x00,}}, +{ 0x9A45, {0x00,0x00,0x7F,0xE0,0x75,0xC0,0x75,0xC0,0x75,0xC0,0x64,0x00,0x7F,0xE0,0x3F,0xA0,0x7F,0xE0,0x7F,0xE0,0x97,0xE0,0x24,0x00,0x00,0x00,}}, +{ 0x9A4D, {0x01,0x80,0x7F,0xC0,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x62,0x40,0x7B,0xE0,0x3C,0x00,0x7F,0xE0,0x79,0x80,0x8A,0xA0,0x34,0x60,0x00,0x00,}}, +{ 0x9A55, {0x00,0xC0,0x7F,0x80,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x65,0xA0,0x79,0x80,0x3F,0xE0,0x7D,0xA0,0x7D,0xA0,0x94,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x9A57, {0x01,0x80,0x7D,0x80,0x79,0x80,0x7A,0x40,0x7F,0xE0,0x60,0x00,0x7F,0xC0,0x3F,0xC0,0x7F,0xC0,0x7A,0xC0,0x95,0xA0,0x29,0x20,0x00,0x00,}}, +{ 0x9A5A, {0x51,0x00,0xFD,0xE0,0x7B,0x40,0x69,0xC0,0xAB,0x60,0x7F,0x80,0x22,0x00,0x3F,0x80,0x3F,0xC0,0x3F,0xC0,0x55,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x9A5B, {0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x61,0x80,0x7F,0xE0,0x3B,0xC0,0x7F,0xE0,0x7B,0xC0,0x89,0x80,0x31,0x80,0x00,0x00,}}, +{ 0x9A5F, {0x00,0x00,0x7F,0x80,0x77,0xE0,0x77,0x60,0x77,0xE0,0x6F,0xA0,0x79,0x80,0x3B,0xA0,0x7F,0xC0,0x7B,0xC0,0x8D,0xA0,0x31,0x80,0x00,0x00,}}, +{ 0x9A62, {0x01,0x80,0x79,0xC0,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x67,0xC0,0x7F,0xC0,0x3F,0xC0,0x7F,0xC0,0x7F,0xC0,0x9B,0xC0,0x27,0xE0,0x00,0x00,}}, +{ 0x9A64, {0x01,0x80,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x67,0xE0,0x7B,0xC0,0x3B,0xC0,0x7F,0xE0,0x7F,0xC0,0x93,0xC0,0x26,0x20,0x00,0x00,}}, +{ 0x9A65, {0x01,0x80,0x7F,0xE0,0x7B,0xE0,0x7F,0x60,0x7B,0xC0,0x63,0xC0,0x7B,0xC0,0x3B,0xC0,0x7B,0xC0,0x7F,0xE0,0x8B,0x40,0x36,0x20,0x00,0x00,}}, +{ 0x9A69, {0x01,0x80,0x7F,0xE0,0x77,0xE0,0x77,0xE0,0x77,0xE0,0x61,0x80,0x7B,0xE0,0x3E,0xC0,0x7B,0xC0,0x7B,0xC0,0x8B,0xE0,0x32,0x00,0x00,0x00,}}, +{ 0x9A6A, {0x00,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x79,0x80,0x67,0xE0,0x7D,0x80,0x3F,0xC0,0x7F,0xE0,0x7F,0xE0,0x9B,0xE0,0x26,0x60,0x00,0x00,}}, +{ 0x9A6B, {0x00,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x80,0x3A,0x80,0x35,0x80,0x7F,0xE0,0x73,0x80,0x7B,0xC0,0x7F,0xE0,0x77,0xE0,0xFD,0xC0,0x00,0x00,}}, +{ 0x9AA8, {0x00,0x00,0x3F,0x80,0x27,0x80,0x24,0x80,0x7F,0xE0,0x40,0x40,0x9F,0x80,0x10,0x80,0x1F,0x80,0x1F,0x80,0x10,0x80,0x11,0x80,0x00,0x00,}}, +{ 0x9AAD, {0x00,0x00,0x7B,0xC0,0x59,0x80,0x79,0x80,0xFF,0xE0,0x89,0x80,0x79,0x80,0x49,0x80,0x79,0x80,0x79,0x80,0x49,0x80,0x59,0x80,0x00,0x00,}}, +{ 0x9AB0, {0x00,0x00,0x79,0x80,0x59,0x80,0x79,0xA0,0xFA,0x60,0x8C,0x00,0x7F,0xC0,0x49,0x40,0x79,0x80,0x79,0x80,0x4B,0x80,0x5C,0x60,0x00,0x00,}}, +{ 0x9AB8, {0x00,0x80,0x78,0x80,0x7F,0xE0,0x69,0x00,0xFE,0x80,0x8A,0x80,0xF9,0x40,0x4B,0x40,0x7A,0x80,0x79,0x40,0x4A,0x20,0x5C,0x20,0x00,0x00,}}, +{ 0x9ABC, {0x01,0x00,0x79,0x00,0x5B,0xC0,0x7A,0x40,0xFD,0x80,0x89,0x80,0x7A,0x40,0x4F,0xE0,0x7A,0x40,0x7A,0x40,0x4B,0xC0,0x5A,0x40,0x00,0x00,}}, +{ 0x9AC0, {0x01,0x00,0x7B,0x00,0x5B,0xC0,0x7B,0xC0,0xFF,0xC0,0x8B,0xC0,0x79,0x80,0x4A,0xC0,0x7F,0xE0,0x78,0x80,0x48,0x80,0x58,0x80,0x00,0x00,}}, +{ 0x9AC4, {0x00,0x80,0x70,0x80,0x57,0xE0,0x71,0xC0,0xF9,0x40,0x8F,0xC0,0xF5,0x40,0x55,0xC0,0x75,0x40,0x75,0x40,0x5A,0x00,0x71,0xE0,0x00,0x00,}}, +{ 0x9ACF, {0x01,0x80,0x7B,0xC0,0x5F,0xE0,0x7F,0xE0,0xFF,0xC0,0x8B,0xC0,0x7B,0xC0,0x4B,0xC0,0x7F,0xE0,0x7B,0x80,0x49,0x80,0x5F,0x40,0x00,0x00,}}, +{ 0x9AD1, {0x00,0x00,0x3B,0xE0,0x3B,0xE0,0x3B,0xE0,0x7D,0xE0,0x4A,0xA0,0x3F,0xE0,0x2B,0xE0,0x3B,0xE0,0x38,0xE0,0x2F,0x20,0x38,0x40,0x00,0x00,}}, +{ 0x9AD3, {0x09,0x80,0x77,0xE0,0x75,0xC0,0x7B,0xC0,0xFF,0xE0,0x95,0xC0,0x71,0x40,0x5D,0xC0,0x75,0xC0,0x75,0xC0,0x5B,0xC0,0x71,0xE0,0x00,0x00,}}, +{ 0x9AD4, {0x01,0x80,0x77,0xC0,0x77,0xC0,0x77,0xC0,0xFF,0xC0,0x88,0x00,0x7F,0xE0,0x57,0xC0,0x77,0xC0,0x77,0xC0,0x5F,0xE0,0x70,0x00,0x00,0x00,}}, +{ 0x9AD8, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1F,0x00,0x11,0x00,0x1F,0x00,0x00,0x00,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9AD9, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x1F,0x00,0x11,0x00,0x1F,0x00,0x11,0x00,0x7F,0xC0,0x5F,0x40,0x51,0x40,0x5F,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9ADE, {0x20,0x00,0x33,0xC0,0xFB,0xC0,0x73,0xC0,0x77,0xE0,0x05,0xA0,0xFF,0xE0,0x89,0x80,0xFF,0xE0,0xFB,0xC0,0x8D,0xA0,0x99,0x80,0x00,0x00,}}, +{ 0x9ADF, {0x00,0x80,0x7C,0x80,0x61,0x80,0x79,0x40,0x62,0xC0,0x78,0x80,0x61,0x20,0xFD,0x20,0x78,0x40,0x5C,0x40,0xF5,0x80,0x06,0x00,0x00,0x00,}}, +{ 0x9AE2, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x24,0x00,0x37,0x80,0xFC,0x80,0xE5,0xA0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x9AE3, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x04,0x00,0xFF,0xE0,0x07,0x80,0x0F,0x80,0x30,0x80,0x63,0x80,0x00,0x00,}}, +{ 0x9AE6, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x03,0x00,0x3C,0x00,0x3F,0x80,0xFF,0xE0,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x9AEA, {0x00,0x80,0x7F,0x00,0x78,0xC0,0xFF,0x20,0x68,0xC0,0x5F,0x80,0x84,0x00,0xFF,0xE0,0x08,0x00,0x3F,0x80,0xC7,0x00,0x79,0xE0,0x00,0x00,}}, +{ 0x9AEB, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x77,0x80,0x3F,0x80,0x0C,0x80,0xFF,0x80,0xFF,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x9AED, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0x20,0x68,0xC0,0x7F,0x80,0x92,0x00,0x52,0xC0,0x5F,0x00,0x52,0x20,0x5E,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x9AEE, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x04,0x40,0xFF,0xE0,0x09,0x00,0x36,0x00,0xDB,0x00,0x60,0xE0,0x00,0x00,}}, +{ 0x9AEF, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x04,0x00,0x3F,0x80,0x3F,0x80,0xFF,0xE0,0x31,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x9AF1, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x08,0x00,0x3F,0x80,0xFE,0x80,0x3F,0xA0,0x30,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x9AF4, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x3F,0x80,0x12,0x80,0x7F,0xE0,0x7F,0xE0,0x72,0xC0,0xC2,0x00,0x00,0x00,}}, +{ 0x9AF7, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x0A,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x9AFB, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x04,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x00,0x00,}}, +{ 0x9B06, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x21,0xC0,0xFA,0x40,0x77,0xA0,0x79,0xC0,0xA7,0xE0,0x20,0x20,0x00,0x00,}}, +{ 0x9B18, {0x00,0x80,0x7F,0x80,0x7B,0x80,0xFF,0xE0,0x7B,0x80,0x7F,0x00,0x1F,0x00,0x1F,0x00,0x7F,0x80,0x3F,0x80,0x0E,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0x9B1A, {0x00,0x80,0x7F,0x00,0x7A,0xC0,0xFF,0xA0,0x68,0xC0,0x7F,0x80,0x3F,0xE0,0xE7,0x80,0x67,0x80,0x57,0x80,0x37,0x80,0xDC,0xE0,0x00,0x00,}}, +{ 0x9B1F, {0x00,0x80,0x7F,0x80,0x7B,0x80,0xFF,0xE0,0x7B,0x80,0x7F,0x80,0x3F,0x80,0xFF,0xE0,0x1F,0x40,0xFF,0xC0,0x1F,0x80,0x20,0xE0,0x00,0x00,}}, +{ 0x9B22, {0x00,0x80,0x7F,0x80,0x7B,0x80,0xFD,0xE0,0x7B,0x80,0x7F,0xE0,0x7F,0x40,0xBF,0x00,0x7F,0x80,0x7F,0x80,0x1F,0x80,0x71,0xC0,0x00,0x00,}}, +{ 0x9B23, {0x00,0x80,0x7F,0x80,0x7B,0x80,0xFD,0xE0,0x7B,0xC0,0x65,0x80,0x12,0x40,0x7F,0x80,0x7F,0x80,0x7F,0xA0,0x77,0x60,0xEC,0x20,0x00,0x00,}}, +{ 0x9B25, {0x00,0x00,0x7B,0x40,0x5B,0x40,0x5B,0x40,0x7B,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,}}, +{ 0x9B27, {0x00,0x00,0x7B,0x40,0x5B,0x40,0x5B,0x40,0x7B,0x40,0x44,0x40,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x65,0xC0,0x67,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x9B28, {0x00,0x00,0x7B,0x40,0x5B,0x40,0x5B,0x40,0x7B,0x40,0x40,0x40,0x4A,0x40,0x7F,0x40,0x7F,0xC0,0x7F,0xC0,0x53,0x40,0x61,0xC0,0x00,0x00,}}, +{ 0x9B29, {0x00,0x00,0x7B,0x40,0x5B,0x40,0x5B,0x40,0x7B,0x40,0x48,0x40,0x53,0x40,0x5B,0x40,0x5F,0x40,0x4E,0x40,0x52,0x40,0x61,0xC0,0x00,0x00,}}, +{ 0x9B2A, {0x00,0x00,0x7B,0x40,0x5B,0x40,0x5B,0x40,0x7B,0x40,0x41,0xC0,0x7D,0xC0,0x7F,0xC0,0x7F,0xC0,0x79,0xC0,0x5D,0xC0,0x61,0xC0,0x00,0x00,}}, +{ 0x9B2E, {0x00,0x00,0x7B,0x40,0x5B,0x40,0x7B,0xC0,0x4E,0x40,0x7F,0x40,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x7A,0xC0,0x67,0xC0,0x00,0x00,}}, +{ 0x9B2F, {0x09,0x00,0x47,0x40,0x7E,0xC0,0x66,0x40,0x4D,0x40,0x72,0x40,0x7F,0xC0,0x60,0x40,0x3F,0x80,0x3C,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0x9B31, {0x68,0x80,0xFF,0xE0,0x7F,0xC0,0xFF,0xE0,0xFF,0xE0,0x6A,0x40,0xEE,0x80,0x7B,0xC0,0x7F,0x80,0x7F,0x60,0x72,0xC0,0x7F,0x00,0x00,0x00,}}, +{ 0x9B32, {0x00,0x00,0xFF,0xE0,0x1F,0x00,0x3F,0x80,0x3F,0x80,0x00,0x00,0x7F,0xC0,0x4A,0x40,0x7F,0xC0,0x4F,0xC0,0x44,0x40,0x44,0xC0,0x00,0x00,}}, +{ 0x9B3B, {0x75,0xC0,0x3F,0x40,0x7F,0xC0,0x7F,0xC0,0x65,0xC0,0xFF,0xE0,0x3F,0x80,0x31,0x80,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x44,0xC0,0x00,0x00,}}, +{ 0x9B3C, {0x04,0x00,0x08,0x00,0x7F,0x80,0x44,0x80,0x7F,0x80,0x44,0x80,0x7F,0x80,0x15,0x80,0x16,0x80,0x27,0xE0,0x24,0x20,0x43,0xE0,0x00,0x00,}}, +{ 0x9B41, {0x22,0x80,0x41,0x80,0x78,0x80,0x6E,0x80,0x7A,0x80,0x78,0xE0,0x77,0x80,0x34,0x80,0x3C,0x80,0x7E,0xA0,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x9B42, {0x01,0x00,0x02,0x00,0x77,0xC0,0x05,0x40,0xF7,0xC0,0x27,0xC0,0x23,0x40,0x53,0x80,0xFD,0xC0,0x89,0xE0,0x11,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x9B43, {0x21,0x00,0x61,0xC0,0x7F,0xE0,0x7F,0xE0,0x79,0x80,0x79,0x80,0x61,0x80,0x6B,0x80,0x7F,0x80,0x7E,0x40,0x74,0x20,0x9F,0xE0,0x00,0x00,}}, +{ 0x9B44, {0x21,0x00,0x22,0x00,0x77,0xC0,0x77,0xC0,0x57,0x40,0x77,0xC0,0x55,0x40,0x53,0x80,0x77,0xC0,0x75,0xC0,0x19,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x9B45, {0x20,0x80,0x40,0x80,0x7B,0xC0,0x58,0x80,0x7F,0xE0,0x58,0x80,0x71,0x80,0x36,0xC0,0x3C,0xA0,0x7F,0x80,0x50,0x20,0x8F,0xE0,0x00,0x00,}}, +{ 0x9B4D, {0x20,0x00,0x63,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x63,0xC0,0x6B,0x40,0x7E,0xC0,0x7E,0x60,0x70,0x20,0x9F,0xE0,0x00,0x00,}}, +{ 0x9B4E, {0x20,0x00,0x67,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x67,0xC0,0x6F,0x40,0x7D,0x40,0x7C,0x60,0x70,0x20,0x9F,0xE0,0x00,0x00,}}, +{ 0x9B4F, {0x19,0x00,0x63,0x00,0xFF,0xC0,0xFF,0xC0,0x7B,0xC0,0x6B,0xC0,0xA3,0x80,0xF9,0xC0,0x6B,0xE0,0x7B,0xE0,0x3D,0xA0,0xC8,0xE0,0x00,0x00,}}, +{ 0x9B51, {0x21,0x80,0x67,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x79,0x80,0x67,0xE0,0x77,0xE0,0x7F,0xE0,0x7C,0x60,0x70,0x20,0x9F,0xE0,0x00,0x00,}}, +{ 0x9B54, {0x04,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xC0,0x7F,0xA0,0x72,0x80,0x7F,0x80,0x5F,0xC0,0x4F,0xE0,0xB2,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x9B58, {0x00,0x00,0x7F,0xE0,0x7C,0xE0,0x7F,0xE0,0x7E,0xC0,0x7E,0xC0,0x67,0x20,0x7F,0x80,0x5F,0x80,0x4F,0xC0,0x9B,0xE0,0x61,0xE0,0x00,0x00,}}, +{ 0x9B5A, {0x10,0x00,0x1F,0x00,0x22,0x00,0x7F,0x80,0xA4,0x80,0x3F,0x80,0x24,0x80,0x24,0x80,0x3F,0x80,0x12,0x40,0x4B,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x9B6F, {0x08,0x00,0x1F,0x00,0xE2,0x00,0x3F,0x80,0x3F,0x80,0x24,0x80,0x3F,0x80,0x6B,0x40,0xBF,0xA0,0x3F,0x80,0x20,0x80,0x3F,0x80,0x00,0x00,}}, +{ 0x9B74, {0x21,0x80,0x31,0x80,0x7B,0xE0,0xFB,0xE0,0xF9,0x80,0x79,0xC0,0x69,0xC0,0x79,0x40,0x79,0x40,0x7A,0x40,0x74,0x40,0x88,0x80,0x00,0x00,}}, +{ 0x9B83, {0x20,0x00,0x37,0xE0,0x79,0x80,0xFB,0xA0,0xFD,0xA0,0x79,0x80,0x6F,0xE0,0x79,0x80,0x79,0x80,0x79,0x80,0x71,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9B8E, {0x21,0x00,0x31,0x00,0x59,0xE0,0xF9,0x00,0x59,0x00,0x79,0x00,0x5B,0xC0,0x7A,0x40,0x12,0x40,0x6A,0x40,0x53,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9B91, {0x21,0x00,0x31,0x00,0x79,0xC0,0xFB,0xC0,0xFF,0x40,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7A,0x80,0x7A,0x20,0x72,0x20,0x81,0xE0,0x00,0x00,}}, +{ 0x9B92, {0x21,0x40,0x31,0x40,0x7A,0x40,0xFB,0xE0,0xFE,0x40,0x7B,0x40,0x6A,0xC0,0x7A,0x40,0x7A,0x40,0x7A,0x40,0x72,0x40,0x82,0xC0,0x00,0x00,}}, +{ 0x9B93, {0x21,0x00,0x31,0x00,0x79,0xE0,0xFB,0xE0,0xFB,0x80,0x7D,0xE0,0x69,0x80,0x79,0x80,0x79,0xE0,0x79,0x80,0x71,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9B96, {0x20,0x00,0x37,0xE0,0x79,0x80,0xF9,0x80,0xF9,0x00,0x79,0x00,0x6B,0xC0,0x7E,0x40,0x7A,0x40,0x7A,0x40,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9B97, {0x21,0x00,0x31,0x00,0x7B,0xC0,0xFE,0x40,0xF9,0x80,0x79,0x80,0x6B,0x40,0x7D,0xA0,0x78,0x00,0x7A,0x00,0x71,0x80,0x80,0x40,0x00,0x00,}}, +{ 0x9B9F, {0x21,0x80,0x31,0x80,0x7B,0xE0,0xFC,0x00,0xF9,0x80,0x7F,0xE0,0x69,0x40,0x7B,0x40,0x7B,0x80,0x78,0xC0,0x73,0x20,0x8C,0x20,0x00,0x00,}}, +{ 0x9BA0, {0x21,0x80,0x31,0x80,0x7B,0xC0,0xFF,0xE0,0xFA,0x00,0x7B,0xC0,0x6B,0x40,0x7B,0x40,0x7B,0x40,0x7F,0x60,0x75,0x20,0x89,0xE0,0x00,0x00,}}, +{ 0x9BA8, {0x22,0x00,0x32,0xC0,0x7B,0x00,0xFA,0x20,0xFB,0xE0,0x78,0x00,0x6B,0xC0,0x7A,0x40,0x7B,0xC0,0x7A,0x40,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9BAA, {0x21,0x00,0x31,0x00,0x7F,0xE0,0xF9,0x00,0xF9,0xC0,0x7B,0x40,0x6B,0xC0,0x7D,0x40,0x79,0xC0,0x79,0x40,0x71,0x40,0x81,0x40,0x00,0x00,}}, +{ 0x9BAB, {0x20,0x80,0x30,0x80,0x5F,0xE0,0xB2,0x40,0x7A,0x40,0x6A,0x40,0x7D,0xA0,0x69,0x80,0x79,0x80,0x39,0x80,0x72,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9BAD, {0x20,0x80,0x30,0x80,0x5B,0xC0,0xB0,0x80,0x7F,0xE0,0x68,0x80,0x78,0x80,0x6B,0xC0,0x78,0x80,0x38,0x80,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9BAE, {0x22,0x40,0x31,0x40,0x5F,0xE0,0xA0,0x80,0x78,0x80,0x6B,0xC0,0x78,0x80,0x68,0x80,0x7F,0xE0,0x38,0x80,0x70,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x9BB4, {0x21,0x80,0x31,0x80,0x7A,0x80,0xFB,0xE0,0xFE,0xC0,0x7A,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xA0,0x7A,0x80,0x72,0x80,0x82,0x80,0x00,0x00,}}, +{ 0x9BB9, {0x21,0x80,0x31,0x80,0x7B,0xE0,0xFD,0xA0,0xFB,0xC0,0x7A,0x40,0x6B,0xC0,0x7A,0x40,0x7B,0xC0,0x7A,0x40,0x72,0x40,0x82,0xC0,0x00,0x00,}}, +{ 0x9BC0, {0x20,0x60,0x37,0x80,0x79,0x80,0xFB,0x40,0xF9,0xC0,0x79,0x80,0x69,0x40,0x7F,0xA0,0x79,0x80,0x7B,0xA0,0x75,0xA0,0x81,0x80,0x00,0x00,}}, +{ 0x9BC6, {0x21,0xC0,0x31,0xA0,0x7F,0xE0,0xFB,0xC0,0xFB,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x73,0xC0,0x82,0xC0,0x00,0x00,}}, +{ 0x9BC9, {0x20,0x00,0x33,0xC0,0x5A,0xC0,0xB3,0xC0,0x7A,0xC0,0x6A,0xC0,0x7B,0xC0,0x78,0x80,0x33,0xC0,0x78,0x80,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9BCA, {0x21,0x00,0xA5,0xC0,0x07,0x60,0x3B,0xA0,0x4E,0x00,0x5F,0x00,0x22,0x00,0x7F,0x80,0x3F,0x80,0x3F,0x80,0x32,0x80,0x49,0x40,0x00,0x00,}}, +{ 0x9BCF, {0x10,0xA0,0x19,0x20,0x3F,0xE0,0x7D,0xE0,0x7F,0xE0,0x3D,0xE0,0x35,0xE0,0x3F,0xE0,0x3F,0xE0,0x3D,0x20,0x39,0x20,0x41,0x60,0x00,0x00,}}, +{ 0x9BD1, {0x20,0x40,0x33,0x80,0x7F,0xC0,0xFD,0x80,0xFF,0xE0,0x79,0x80,0x6B,0x80,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x73,0xC0,0x81,0x80,0x00,0x00,}}, +{ 0x9BD2, {0x10,0x00,0x1B,0xE0,0x3C,0xC0,0x7D,0xE0,0x7D,0xE0,0x3D,0xE0,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x3D,0xE0,0x39,0xE0,0x41,0xE0,0x00,0x00,}}, +{ 0x9BD4, {0x11,0xE0,0x19,0xE0,0x3E,0xC0,0x7F,0xE0,0x7D,0xE0,0x3C,0x00,0x35,0xE0,0x3D,0xE0,0x3D,0xE0,0x3D,0xE0,0x39,0xE0,0x41,0x20,0x00,0x00,}}, +{ 0x9BD6, {0x20,0x80,0x37,0xE0,0x58,0x80,0xB3,0xC0,0xFF,0xE0,0x78,0x00,0x6B,0xC0,0x7A,0x40,0x6B,0xC0,0x3B,0xC0,0x72,0x40,0x82,0xC0,0x00,0x00,}}, +{ 0x9BDB, {0x10,0x00,0x19,0xE0,0x3D,0xE0,0x7D,0xE0,0x7D,0xE0,0x3D,0xE0,0x35,0x20,0x3D,0xE0,0x3D,0xE0,0x3F,0xE0,0x3A,0x20,0x44,0x60,0x00,0x00,}}, +{ 0x9BE1, {0x21,0x80,0x31,0x80,0x7F,0xE0,0xFF,0xE0,0xF9,0x80,0x7F,0xE0,0x69,0x80,0x7B,0xC0,0x7E,0xE0,0x7A,0x80,0x74,0x80,0x88,0x80,0x00,0x00,}}, +{ 0x9BE2, {0x21,0x00,0x33,0x00,0x7A,0x40,0xFA,0x40,0xFA,0x40,0x7A,0x40,0x6B,0xC0,0x79,0xC0,0x7B,0x80,0x7B,0xA0,0x75,0xA0,0x88,0xE0,0x00,0x00,}}, +{ 0x9BE3, {0x20,0x00,0x33,0xC0,0x7B,0xC0,0xFB,0xC0,0xFB,0xC0,0x79,0x00,0x6B,0xE0,0x7D,0xA0,0x7A,0xA0,0x7C,0xA0,0x71,0x20,0x80,0xC0,0x00,0x00,}}, +{ 0x9BE4, {0x20,0x00,0x33,0xC0,0x7A,0x40,0xFB,0xC0,0xFA,0x40,0x7B,0xC0,0x6A,0x80,0x7A,0xE0,0x7B,0xC0,0x7A,0xA0,0x73,0xA0,0x8C,0x60,0x00,0x00,}}, +{ 0x9BE8, {0x20,0x80,0x30,0x80,0x5F,0xE0,0xB3,0xC0,0xFA,0x40,0x7A,0x40,0x6B,0xC0,0x78,0x80,0x3A,0xC0,0x7A,0xA0,0x74,0xA0,0x80,0x80,0x00,0x00,}}, +{ 0x9BF0, {0x21,0x80,0x31,0x80,0x7A,0x40,0xFF,0xE0,0xF8,0x00,0x7B,0xC0,0x68,0x80,0x79,0x80,0x7B,0xE0,0x7B,0x20,0x77,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9BF1, {0x21,0x80,0x31,0xC0,0x7B,0xE0,0xFB,0xE0,0xFB,0xC0,0x7B,0xA0,0x6A,0xE0,0x7B,0x80,0x7F,0x80,0x7D,0xA0,0x7A,0xA0,0x84,0x60,0x00,0x00,}}, +{ 0x9BF2, {0x22,0x80,0x32,0x80,0x7A,0xC0,0xFF,0xC0,0xFA,0x20,0x7A,0xA0,0x6B,0x40,0x7B,0x40,0x7F,0x00,0x7D,0x40,0x79,0x20,0x86,0x20,0x00,0x00,}}, +{ 0x9BF5, {0x21,0x80,0x32,0x40,0x5F,0xE0,0xF8,0x80,0x5F,0xE0,0x79,0x80,0x5A,0xC0,0x7D,0x20,0x12,0x80,0x69,0x60,0x50,0xC0,0x87,0x00,0x00,0x00,}}, +{ 0x9C04, {0x61,0x80,0x61,0xC0,0x7F,0xE0,0xFF,0xE0,0xFF,0xC0,0x7B,0xC0,0x7F,0xC0,0x7D,0xC0,0x7E,0x80,0x7A,0xE0,0x75,0xE0,0xA1,0x20,0x00,0x00,}}, +{ 0x9C06, {0x21,0x80,0x31,0x80,0x7F,0xE0,0xFB,0xC0,0xF9,0x80,0x7F,0xE0,0x69,0x80,0x7B,0xC0,0x7F,0xE0,0x7B,0xC0,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9C08, {0x23,0xC0,0x33,0xC0,0x7F,0xE0,0xFB,0xC0,0xFA,0x00,0x7B,0xE0,0x69,0x80,0x7F,0xE0,0x79,0x80,0x7B,0xC0,0x75,0xA0,0x81,0x80,0x00,0x00,}}, +{ 0x9C09, {0x21,0x00,0x33,0x00,0x7B,0xC0,0xFB,0xC0,0xFA,0x40,0x7B,0xC0,0x68,0x00,0x7F,0xE0,0x7B,0xC0,0x7B,0xC0,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9C0A, {0x21,0x80,0x31,0x80,0x7F,0xE0,0xFB,0xC0,0xFB,0xC0,0x7B,0xC0,0x6B,0xC0,0x79,0x80,0x7B,0xC0,0x7D,0xA0,0x71,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9C0C, {0x21,0x80,0x31,0x80,0x7A,0x40,0xFF,0xE0,0xF9,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9C0D, {0x21,0x80,0x36,0x80,0x5A,0x80,0xA3,0xA0,0x7F,0xA0,0x7A,0xC0,0x6F,0x80,0x7E,0x80,0x7E,0x80,0x3B,0x40,0x73,0x20,0x82,0x20,0x00,0x00,}}, +{ 0x9C10, {0x20,0x00,0x37,0xE0,0x7F,0xE0,0xFE,0x60,0xFB,0xC0,0x78,0x00,0x6F,0xE0,0x79,0x00,0x7B,0xC0,0x78,0x40,0x70,0x40,0x80,0x80,0x00,0x00,}}, +{ 0x9C12, {0x21,0x00,0x33,0x00,0x7F,0xE0,0xFF,0xC0,0xFB,0xC0,0x7A,0x40,0x6B,0xC0,0x7B,0x00,0x7F,0xC0,0x79,0x80,0x73,0x80,0x8C,0x60,0x00,0x00,}}, +{ 0x9C13, {0x20,0x00,0x33,0xC0,0x7B,0xC0,0xFB,0xC0,0xFB,0xC0,0x7B,0xC0,0x69,0x80,0x7B,0xC0,0x7B,0x60,0x7F,0x20,0x75,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9C14, {0x21,0xC0,0x31,0xA0,0x7F,0xE0,0xFF,0xE0,0xFF,0xC0,0x7D,0xC0,0x6F,0xC0,0x7F,0x80,0x7F,0x80,0x7C,0xE0,0x79,0x60,0x8A,0x20,0x00,0x00,}}, +{ 0x9C15, {0x20,0x00,0x37,0xC0,0x7D,0x40,0xFF,0x40,0xFF,0x40,0x7C,0x00,0x6F,0xC0,0x7D,0xC0,0x7F,0xC0,0x7E,0x80,0x74,0xC0,0x85,0x20,0x00,0x00,}}, +{ 0x9C1B, {0x20,0x00,0x33,0xC0,0x7A,0x40,0xFB,0xC0,0xFA,0x40,0x7B,0xC0,0x68,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9C21, {0x21,0x00,0x33,0x00,0x7F,0xE0,0xFE,0xA0,0xFF,0xA0,0x7D,0xE0,0x69,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9C24, {0x22,0x00,0x33,0xE0,0x7E,0x80,0xFF,0xE0,0xFD,0xE0,0x7F,0xA0,0x6D,0xA0,0x7F,0xA0,0x7D,0xE0,0x7F,0xE0,0x74,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x9C25, {0x20,0x00,0x37,0xE0,0x7D,0xA0,0xFF,0xE0,0xF9,0x80,0x7B,0xC0,0x6B,0xC0,0x7D,0xA0,0x7B,0xC0,0x7D,0xA0,0x71,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9C2D, {0x21,0x80,0x33,0xC0,0x7F,0xE0,0xFF,0xE0,0xF9,0xC0,0x7B,0x20,0x6D,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9C2E, {0x20,0x00,0x33,0xC0,0x7B,0xC0,0xFB,0xC0,0xFA,0x40,0x7B,0xC0,0x68,0x00,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9C2F, {0x10,0x00,0x1B,0xE0,0x2C,0xA0,0x7F,0xE0,0x2E,0xC0,0x3F,0xE0,0x2C,0xA0,0x3F,0xE0,0x0D,0xA0,0x37,0xE0,0x28,0xA0,0x43,0xC0,0x00,0x00,}}, +{ 0x9C30, {0x60,0x80,0x67,0x80,0x70,0xE0,0xFF,0xE0,0xFB,0xA0,0x7F,0xE0,0x6F,0xA0,0x7F,0xE0,0x7F,0xE0,0x7E,0x80,0x72,0x80,0x82,0x80,0x00,0x00,}}, +{ 0x9C32, {0x21,0x00,0xF9,0x00,0xFF,0xE0,0xFF,0x40,0x79,0xC0,0x5B,0x40,0x9E,0x20,0x7F,0x80,0x3F,0x80,0x3F,0x80,0x32,0x80,0x49,0x40,0x00,0x00,}}, +{ 0x9C39, {0x20,0x00,0x37,0xE0,0x5F,0xA0,0xBF,0x40,0x7F,0xC0,0x6D,0xA0,0x7F,0xA0,0x68,0x80,0x7B,0xC0,0x38,0x80,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9C3A, {0x21,0x80,0x33,0xC0,0x7B,0xC0,0xFF,0xC0,0xFF,0xE0,0x79,0x80,0x6F,0x80,0x7B,0x60,0x7B,0x00,0x7A,0x40,0x71,0x80,0x86,0x00,0x00,0x00,}}, +{ 0x9C3B, {0x20,0x00,0x33,0xC0,0x5B,0xC0,0xBB,0xC0,0x7B,0xC0,0x5F,0xE0,0x7D,0xA0,0x5F,0xE0,0x7B,0xC0,0x39,0x80,0x73,0x80,0x8C,0x60,0x00,0x00,}}, +{ 0x9C3E, {0x20,0x00,0x37,0xE0,0x7F,0xE0,0xFF,0xE0,0xFF,0xE0,0x78,0x00,0x6B,0xC0,0x78,0x00,0x7F,0xE0,0x7B,0xA0,0x75,0xA0,0x81,0x80,0x00,0x00,}}, +{ 0x9C46, {0x21,0x80,0x31,0x80,0x7B,0xC0,0xFF,0xE0,0xFB,0xC0,0x7A,0x40,0x6B,0xC0,0x7A,0x40,0x7B,0xC0,0x7F,0xE0,0x71,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9C47, {0x21,0x80,0x31,0x80,0x7B,0xE0,0xFB,0xC0,0xFB,0xC0,0x7B,0xE0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7F,0xC0,0x77,0xA0,0x89,0x80,0x00,0x00,}}, +{ 0x9C48, {0x20,0x00,0x33,0xC0,0x78,0x80,0xFF,0xE0,0xFB,0xC0,0x7B,0xC0,0x69,0x80,0x7B,0xC0,0x78,0x40,0x7B,0xC0,0x70,0x40,0x83,0xC0,0x00,0x00,}}, +{ 0x9C52, {0x22,0x40,0x33,0xC0,0x7F,0xE0,0xFB,0xC0,0xFB,0xC0,0x7B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x73,0x80,0x81,0x80,0x00,0x00,}}, +{ 0x9C57, {0x21,0x80,0x33,0xC0,0x7F,0xE0,0xFF,0xE0,0xFB,0xC0,0x7D,0xA0,0x6B,0xC0,0x7B,0xE0,0x7F,0xC0,0x7F,0xE0,0x72,0x40,0x84,0x40,0x00,0x00,}}, +{ 0x9C5A, {0x21,0x80,0x37,0xE0,0x7B,0xC0,0xFB,0xC0,0xFB,0xC0,0x7A,0x40,0x6B,0xC0,0x7B,0xC0,0x7F,0xE0,0x7B,0xC0,0x73,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9C60, {0x21,0x00,0x33,0x80,0x7F,0xC0,0xFF,0xE0,0xFF,0xC0,0x7D,0xC0,0x6F,0xC0,0x7B,0x80,0x7B,0x80,0x7B,0x80,0x73,0x80,0x82,0x80,0x00,0x00,}}, +{ 0x9C67, {0x21,0x80,0x37,0xC0,0x7F,0xC0,0xFF,0xC0,0xFF,0xC0,0x78,0x00,0x6F,0xE0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x77,0xE0,0x80,0x00,0x00,0x00,}}, +{ 0x9C76, {0x22,0x40,0x33,0xC0,0x7F,0xE0,0xFB,0xC0,0xFF,0xE0,0x7B,0x80,0x6F,0xC0,0x7A,0xA0,0x7B,0x80,0x7B,0xC0,0x73,0xC0,0x8C,0x60,0x00,0x00,}}, +{ 0x9C78, {0x21,0x80,0x31,0xC0,0x7F,0xE0,0xFF,0xC0,0xFF,0xC0,0x7F,0xC0,0x6F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7B,0xC0,0x87,0xE0,0x00,0x00,}}, +{ 0x9CE5, {0x04,0x00,0x08,0x00,0x3F,0x80,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x56,0xA0,0x50,0x20,0x80,0xC0,0x00,0x00,}}, +{ 0x9CE7, {0x04,0x00,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xC0,0x75,0x40,0x4B,0xC0,0x0F,0x80,0x1F,0x00,0x31,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x9CE9, {0x41,0x00,0x42,0x00,0x77,0x80,0xD7,0x80,0x54,0x80,0x57,0x80,0x57,0xE0,0x5C,0x00,0x4F,0xE0,0x4F,0xE0,0x8A,0xA0,0x10,0xC0,0x00,0x00,}}, +{ 0x9CEB, {0x00,0x00,0x7F,0xE0,0x67,0x80,0x6F,0x80,0x6F,0x80,0x6F,0x80,0x6F,0xE0,0x68,0x00,0x4F,0xE0,0x5F,0xA0,0xB4,0x20,0x20,0xC0,0x00,0x00,}}, +{ 0x9CEC, {0x08,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xE0,0x60,0x00,0x7F,0xC0,0x00,0x40,0x1F,0xC0,0x13,0xA0,0x32,0x20,0xC1,0xE0,0x00,0x00,}}, +{ 0x9CF0, {0x01,0x00,0x02,0x00,0x67,0x80,0x27,0x80,0x24,0x80,0x27,0x80,0x77,0xE0,0x54,0x00,0x4F,0xE0,0x8F,0xA0,0x0A,0x20,0x10,0xC0,0x00,0x00,}}, +{ 0x9CF3, {0x00,0x00,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x71,0x80,0x7F,0x80,0x7F,0x80,0x7F,0xE0,0x5F,0xE0,0x77,0xE0,0xEB,0xA0,0x00,0x00,}}, +{ 0x9CF4, {0x01,0x00,0x02,0x00,0xEF,0x80,0xAF,0x80,0xA8,0x80,0xAF,0x80,0xAF,0xE0,0xA8,0x00,0xEF,0xE0,0x9F,0xA0,0x14,0x20,0x20,0xC0,0x00,0x00,}}, +{ 0x9CF6, {0x04,0x80,0xFF,0xE0,0x0A,0x00,0x3F,0x20,0x7F,0xE0,0x61,0x20,0x7F,0x00,0x7F,0x80,0x7F,0xC0,0x7F,0xC0,0x55,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x9D03, {0x21,0x80,0x61,0x80,0x7B,0xC0,0x7B,0xC0,0x49,0xC0,0x79,0xC0,0x7F,0xE0,0x41,0x80,0x7D,0x80,0x75,0x80,0x6A,0x40,0xB4,0x20,0x00,0x00,}}, +{ 0x9D06, {0x21,0x00,0x23,0x00,0x23,0xC0,0x7F,0xC0,0x7A,0x40,0xA3,0xC0,0x33,0xE0,0x32,0x00,0x7F,0xE0,0x5F,0xE0,0x87,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D07, {0x41,0x00,0x5A,0x00,0x67,0x80,0x4F,0x80,0x7C,0x80,0x67,0x80,0x67,0xE0,0xFC,0x00,0x67,0xE0,0x6F,0xE0,0x6A,0x20,0x70,0xC0,0x00,0x00,}}, +{ 0x9D08, {0x00,0x00,0x7F,0xE0,0x6B,0xC0,0x6B,0xC0,0x73,0xC0,0x73,0xC0,0x73,0xE0,0x72,0x00,0x53,0xE0,0x57,0xE0,0x97,0x20,0x18,0xC0,0x00,0x00,}}, +{ 0x9D09, {0x01,0x00,0x7B,0x00,0x53,0xC0,0x53,0xC0,0xFA,0x40,0x33,0xC0,0x33,0xE0,0x72,0x00,0x53,0xE0,0x97,0xE0,0x17,0x20,0x38,0xC0,0x00,0x00,}}, +{ 0x9D0E, {0x01,0x00,0x7F,0x00,0x43,0xC0,0x4B,0xC0,0x4A,0x40,0x73,0xC0,0x53,0xE0,0x5A,0x00,0x6B,0xE0,0x47,0xE0,0x7F,0x20,0x48,0xC0,0x00,0x00,}}, +{ 0x9D12, {0x21,0x00,0x33,0x00,0x7B,0xC0,0x4B,0xC0,0xF2,0x40,0x03,0xC0,0xFB,0xE0,0x6A,0x00,0x6B,0xE0,0x7F,0xE0,0x67,0x20,0x68,0xC0,0x00,0x00,}}, +{ 0x9D15, {0x21,0x80,0x61,0x80,0x7B,0xE0,0x7B,0xE0,0x4F,0x00,0x79,0x00,0x7D,0x60,0x41,0x80,0x7D,0x00,0x75,0x20,0x65,0x20,0x99,0xE0,0x00,0x00,}}, +{ 0x9D1B, {0x20,0x00,0x7F,0xC0,0xFA,0xC0,0x3A,0xA0,0xFF,0xE0,0x2F,0x00,0x3F,0x00,0x3F,0xC0,0x3F,0xC0,0x3F,0xC0,0x55,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x9D1F, {0x01,0x00,0x1B,0x00,0x63,0xC0,0x63,0xC0,0x7E,0x40,0x63,0xC0,0x6B,0xE0,0x5A,0x00,0x7B,0xE0,0xEF,0xE0,0xF7,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D23, {0x21,0x00,0x22,0x00,0x27,0x80,0xFF,0x80,0x34,0x80,0x27,0x80,0x77,0xE0,0x54,0x00,0x57,0xE0,0x7F,0xE0,0x4A,0x20,0x10,0xC0,0x00,0x00,}}, +{ 0x9D26, {0x04,0x00,0x3F,0x80,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0xD1,0x60,0x1F,0x00,0x1F,0x00,0x1F,0xE0,0x1F,0xC0,0x6B,0x40,0x41,0x80,0x00,0x00,}}, +{ 0x9D28, {0x01,0x00,0xF2,0x00,0xB7,0x80,0xB7,0x80,0xF4,0x80,0xB7,0x80,0xF7,0xE0,0xB4,0x00,0x27,0xE0,0x2B,0x60,0x2A,0xA0,0x30,0xC0,0x00,0x00,}}, +{ 0x9D2A, {0x21,0x00,0x33,0x00,0x7F,0xC0,0x83,0xC0,0x32,0x40,0x13,0xC0,0x73,0xE0,0x72,0x00,0x5B,0xE0,0x4F,0xE0,0x87,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D2B, {0x01,0x00,0x02,0x00,0xF7,0x80,0xD7,0x80,0xD4,0x80,0xF7,0x80,0xD7,0xE0,0xD4,0x00,0xD7,0xE0,0xFD,0xE0,0x0A,0x20,0x10,0xC0,0x00,0x00,}}, +{ 0x9D2C, {0x28,0x80,0x15,0x00,0x7F,0xE0,0x9F,0x00,0x31,0x80,0x3F,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xC0,0x3F,0xC0,0x53,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x9D3B, {0x41,0x00,0x42,0x00,0x3F,0x80,0x97,0x80,0x54,0x80,0x57,0x80,0x17,0xE0,0x54,0x00,0x5F,0xE0,0x6B,0xA0,0x8A,0x20,0x90,0xC0,0x00,0x00,}}, +{ 0x9D3E, {0x21,0x00,0x33,0x00,0xFF,0xC0,0xF7,0xC0,0x62,0x40,0x7B,0xC0,0x63,0xE0,0xB2,0x00,0xFF,0xE0,0x27,0xE0,0x27,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9D3F, {0x21,0x00,0x33,0x00,0x7B,0xC0,0x4B,0xC0,0xFA,0x40,0x03,0xC0,0x7B,0xE0,0x4A,0x00,0x7B,0xE0,0x7F,0xE0,0x47,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D41, {0x21,0x00,0x23,0x00,0xFF,0x80,0xFF,0x80,0x6A,0x80,0x4B,0x80,0xB3,0xE0,0x32,0x00,0x33,0xE0,0x37,0xE0,0x47,0x20,0x88,0xC0,0x00,0x00,}}, +{ 0x9D44, {0x01,0x00,0xFA,0x00,0x67,0x80,0x77,0x80,0xFC,0x80,0x27,0x80,0x27,0xE0,0x7C,0x00,0x27,0xE0,0x3F,0xE0,0xEA,0x20,0x10,0xC0,0x00,0x00,}}, +{ 0x9D46, {0x64,0x00,0x48,0xE0,0x9E,0x00,0x3E,0x00,0x32,0xE0,0x7E,0x40,0x7F,0x40,0xF0,0x40,0x7F,0x40,0x7D,0x40,0x71,0x40,0x66,0xC0,0x00,0x00,}}, +{ 0x9D48, {0x01,0x00,0xFB,0x00,0x53,0xC0,0x73,0xC0,0x52,0x40,0x53,0xC0,0x73,0xE0,0x52,0x00,0x73,0xE0,0xF7,0xE0,0x17,0x20,0x18,0xC0,0x00,0x00,}}, +{ 0x9D50, {0x01,0x00,0xFF,0x00,0x23,0xC0,0x6B,0xC0,0x6A,0x40,0x6B,0xC0,0x77,0xE0,0xB6,0x00,0xA3,0xE0,0x3F,0xE0,0xE7,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D51, {0x01,0x00,0x7B,0x00,0x7B,0xC0,0x7B,0xC0,0x7A,0x40,0x4B,0xC0,0x7B,0xE0,0x4A,0x00,0x7B,0xE0,0x4F,0xE0,0x4F,0x20,0x58,0xC0,0x00,0x00,}}, +{ 0x9D59, {0x01,0x00,0x7B,0x00,0x4B,0xC0,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4B,0xE0,0x4A,0x00,0x7B,0xE0,0x77,0xE0,0x57,0x20,0x88,0xC0,0x00,0x00,}}, +{ 0x9D5C, {0x51,0x00,0x32,0x00,0xFB,0xC0,0x2B,0xC0,0x7A,0x40,0x63,0xC0,0x7B,0xE0,0x6A,0x00,0x6B,0xE0,0xB7,0xE0,0x25,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9D5D, {0x30,0x80,0x79,0x80,0xF5,0xC0,0x71,0xC0,0xFD,0x40,0x75,0xC0,0x75,0xE0,0x79,0x00,0xE9,0xE0,0x7F,0xA0,0x67,0x20,0x64,0xC0,0x00,0x00,}}, +{ 0x9D5E, {0x19,0x80,0xF3,0x40,0xFF,0xE0,0xF7,0xA0,0x7F,0xE0,0x11,0x80,0x1F,0x80,0x1F,0x80,0x1F,0xE0,0x1F,0xC0,0x6B,0x40,0x41,0x80,0x00,0x00,}}, +{ 0x9D60, {0x21,0x00,0x63,0x00,0x7B,0xC0,0x63,0xC0,0xA2,0x40,0xFF,0xC0,0x03,0xE0,0x7A,0x00,0x4B,0xE0,0x7F,0xE0,0x47,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D61, {0x11,0x00,0x7B,0x00,0x17,0xC0,0xFF,0xC0,0x72,0x40,0x73,0xC0,0x73,0xE0,0x72,0x00,0x7B,0xE0,0x7F,0xE0,0xCF,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9D64, {0x21,0x00,0x33,0x00,0x7B,0xC0,0xFB,0xC0,0xFA,0x40,0x6B,0xC0,0x7B,0xE0,0x7A,0x00,0x7B,0xE0,0x4F,0xE0,0x4F,0x20,0x98,0xC0,0x00,0x00,}}, +{ 0x9D6C, {0x00,0x40,0x7E,0xC0,0x5A,0xE0,0x5A,0xE0,0x7E,0xA0,0x5A,0xE0,0x5A,0xF0,0x5A,0x80,0x7E,0xF0,0x5B,0xD0,0x5B,0x90,0xB6,0x60,0x00,0x00,}}, +{ 0x9D6F, {0x21,0x00,0x63,0x00,0x7B,0xC0,0x6B,0xC0,0x7A,0x40,0x6B,0xC0,0x7B,0xE0,0x52,0x00,0xFB,0xE0,0xFF,0xE0,0x17,0x20,0x18,0xC0,0x00,0x00,}}, +{ 0x9D72, {0x71,0x00,0x73,0x00,0xFF,0xC0,0xFF,0xC0,0x72,0x40,0xFF,0xC0,0x03,0xE0,0x7A,0x00,0x7B,0xE0,0x7F,0xE0,0x7F,0x20,0x48,0xC0,0x00,0x00,}}, +{ 0x9D7A, {0x21,0x00,0x23,0x00,0xFF,0xC0,0xFF,0xC0,0x7E,0x40,0x67,0xC0,0x7B,0xE0,0xEA,0x00,0x5B,0xE0,0x5F,0xE0,0x67,0x20,0x48,0xC0,0x00,0x00,}}, +{ 0x9D87, {0x21,0x00,0x33,0x00,0xFF,0xC0,0x7B,0xC0,0x7A,0x40,0x7B,0xC0,0x6B,0xE0,0x7A,0x00,0x7B,0xE0,0x67,0xE0,0xA7,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9D89, {0x21,0x00,0xFF,0x00,0x73,0xC0,0x73,0xC0,0x72,0x40,0x03,0xC0,0x7B,0xE0,0x12,0x00,0xFB,0xE0,0xE7,0xE0,0x27,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9D8F, {0x09,0x00,0x33,0x00,0xEB,0xC0,0xBB,0xC0,0x32,0x40,0x7B,0xC0,0x23,0xE0,0xFA,0x00,0x33,0xE0,0x6F,0xE0,0x47,0x20,0x89,0xC0,0x00,0x00,}}, +{ 0x9D9A, {0x01,0x00,0xFF,0x00,0xFF,0xC0,0xCF,0xC0,0x72,0x40,0x03,0xC0,0xFB,0xE0,0x62,0x00,0x73,0xE0,0x17,0xE0,0x17,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9DA4, {0x01,0x00,0x7F,0x00,0xFF,0xC0,0xFF,0xC0,0x7A,0x40,0x6B,0xC0,0x7B,0xE0,0x7A,0x00,0x7B,0xE0,0xFF,0xE0,0x37,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9DA9, {0x01,0x00,0x7B,0x00,0xFF,0xE0,0xFF,0x80,0x66,0xE0,0xFF,0x80,0x11,0x80,0x1F,0x80,0x1F,0xE0,0x1F,0xE0,0x17,0x40,0x4B,0x80,0x00,0x00,}}, +{ 0x9DAB, {0x21,0x00,0x33,0x00,0xFF,0xC0,0xFF,0xC0,0xFE,0x40,0xF7,0xC0,0xFF,0xE0,0x72,0x00,0x7B,0xE0,0xA7,0xE0,0x27,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9DAF, {0x37,0xC0,0x3B,0xC0,0x7F,0xE0,0x7F,0xE0,0xBF,0x00,0x21,0x80,0x3F,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xC0,0x55,0x40,0x81,0x80,0x00,0x00,}}, +{ 0x9DB2, {0x31,0x00,0x53,0x00,0xAF,0xC0,0x37,0xC0,0x7A,0x40,0x03,0xC0,0xFB,0xE0,0xFA,0x00,0xFB,0xE0,0xFF,0xE0,0x6F,0x20,0x78,0xC0,0x00,0x00,}}, +{ 0x9DB4, {0x21,0x00,0x22,0x00,0xFF,0xC0,0xFB,0xC0,0x72,0x40,0x7B,0xC0,0xD3,0xE0,0x7A,0x00,0x53,0xE0,0x7F,0xE0,0x7F,0x20,0x48,0xC0,0x00,0x00,}}, +{ 0x9DB8, {0x01,0x00,0xFB,0x00,0x6B,0xC0,0xFB,0xC0,0xB2,0x40,0xFB,0xC0,0xEB,0xE0,0xFA,0x00,0xFB,0xE0,0xFF,0xE0,0x6F,0x20,0xF8,0xC0,0x00,0x00,}}, +{ 0x9DBA, {0x21,0x00,0xEF,0x00,0xBF,0xC0,0xFF,0xC0,0x6A,0x40,0x7F,0xC0,0xEB,0xE0,0x7A,0x00,0x7B,0xE0,0x7F,0xE0,0x6F,0x20,0x78,0xC0,0x00,0x00,}}, +{ 0x9DBB, {0x01,0x00,0x7B,0x00,0x5B,0xC0,0x7B,0xC0,0xFE,0x40,0x87,0xC0,0x7B,0xE0,0x4A,0x00,0x7B,0xE0,0x7F,0xE0,0x4F,0x20,0x58,0xC0,0x00,0x00,}}, +{ 0x9DC1, {0x71,0x00,0x53,0x00,0x7F,0xC0,0xF7,0xC0,0x32,0x40,0x73,0xC0,0x4B,0xE0,0xFE,0x00,0x7B,0xE0,0x7F,0xE0,0xE7,0x20,0x08,0xC0,0x00,0x00,}}, +{ 0x9DC2, {0x61,0x00,0x7B,0x00,0x7B,0xC0,0xD3,0xC0,0x72,0x40,0xFB,0xC0,0x63,0xE0,0xFE,0x00,0x6B,0xE0,0x7F,0xE0,0x47,0x20,0x48,0xC0,0x00,0x00,}}, +{ 0x9DC4, {0x19,0x00,0x73,0x00,0xAF,0xC0,0x37,0xC0,0x72,0x40,0x23,0xC0,0x73,0xE0,0x7A,0x00,0xFB,0xE0,0xFF,0xE0,0x2F,0x20,0xC8,0xC0,0x00,0x00,}}, +{ 0x9DC6, {0x6D,0x00,0x73,0x00,0x3F,0xC0,0x3F,0xC0,0x7A,0x40,0x7B,0xC0,0x7B,0xE0,0x7A,0x00,0x7F,0xE0,0x7F,0xE0,0x6F,0x20,0xC8,0xC0,0x00,0x00,}}, +{ 0x9DCF, {0x21,0x00,0xFF,0x00,0x7B,0xC0,0x7B,0xC0,0x7A,0x40,0x7B,0xC0,0x4B,0xE0,0x7A,0x00,0xFF,0xE0,0xFF,0xE0,0x2F,0x20,0xC8,0xC0,0x00,0x00,}}, +{ 0x9DD3, {0x11,0x00,0x13,0x00,0x7F,0xC0,0x6B,0xC0,0x7E,0x40,0x6B,0xC0,0x7B,0xE0,0x6A,0x00,0x7B,0xE0,0xFF,0xE0,0xFF,0x20,0x44,0xC0,0x00,0x00,}}, +{ 0x9DD9, {0x21,0x00,0xFB,0x00,0xFF,0x80,0xFF,0xA0,0xFB,0xA0,0x24,0x60,0x3F,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xE0,0x37,0x40,0x4B,0x80,0x00,0x00,}}, +{ 0x9DE6, {0x69,0x00,0x73,0x00,0xFF,0xC0,0xFB,0xC0,0x72,0x40,0x7B,0xC0,0x63,0xE0,0x7E,0x00,0x7B,0xE0,0x7F,0xE0,0x77,0x20,0x88,0xC0,0x00,0x00,}}, +{ 0x9DED, {0x19,0x00,0x6B,0x00,0x7B,0xC0,0xFF,0xC0,0x72,0x40,0x6B,0xC0,0xFB,0xE0,0x7A,0x00,0x7B,0xE0,0x7F,0xE0,0x47,0x20,0x48,0xC0,0x00,0x00,}}, +{ 0x9DEF, {0x21,0x00,0x33,0x00,0xFF,0xC0,0xEF,0xC0,0x7E,0x40,0xCB,0xC0,0x7B,0xE0,0x4A,0x00,0x7B,0xE0,0x67,0xE0,0xA7,0x20,0x28,0xC0,0x00,0x00,}}, +{ 0x9DF2, {0x21,0x80,0xFD,0xC0,0x7F,0xE0,0x7B,0xA0,0x7C,0xE0,0xFF,0x80,0x21,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xE0,0x75,0xA0,0x92,0xC0,0x00,0x00,}}, +{ 0x9DF8, {0x00,0x80,0x7D,0x80,0x19,0xC0,0xFF,0xC0,0x77,0x40,0xD1,0xC0,0x7D,0xE0,0x75,0x00,0x7D,0xE0,0x7F,0xA0,0x7F,0x20,0x4C,0xC0,0x00,0x00,}}, +{ 0x9DF9, {0x02,0x00,0x7F,0xE0,0x6F,0xE0,0x7F,0xE0,0x77,0x80,0x77,0xE0,0x6F,0x80,0x6F,0x80,0x4F,0xC0,0x4F,0xC0,0xB7,0x40,0x2B,0x80,0x00,0x00,}}, +{ 0x9DFA, {0x79,0xC0,0x4A,0x40,0x7D,0x80,0x5E,0x60,0x7B,0xC0,0xDF,0x80,0x20,0x80,0x3F,0x80,0x3F,0xC0,0x3F,0xE0,0x7A,0x40,0x95,0x80,0x00,0x00,}}, +{ 0x9DFD, {0x2A,0x80,0x66,0x80,0x6F,0x80,0x7F,0xE0,0x44,0x40,0xBF,0x00,0x3F,0x80,0x31,0x80,0x3F,0xE0,0x3F,0xE0,0x37,0x40,0x4B,0x80,0x00,0x00,}}, +{ 0x9E1A, {0x00,0x80,0x6F,0x80,0x6F,0xC0,0x6F,0xC0,0x6B,0xC0,0x6F,0xC0,0x6D,0xE0,0xD3,0x80,0xFF,0xE0,0x3B,0xA0,0x37,0x20,0x64,0xC0,0x00,0x00,}}, +{ 0x9E1B, {0x70,0x80,0xFD,0x80,0xF9,0xC0,0xFD,0xC0,0xFD,0x40,0x71,0xC0,0x7D,0xE0,0xF1,0x00,0x79,0xE0,0x7B,0xE0,0x7F,0x20,0x44,0xC0,0x00,0x00,}}, +{ 0x9E1E, {0x6E,0x80,0x7F,0xE0,0xEF,0xC0,0xFF,0xE0,0xFB,0xC0,0xFF,0xA0,0x3F,0x80,0x3F,0x80,0x3F,0xE0,0x3F,0xE0,0x37,0x40,0x4B,0x80,0x00,0x00,}}, +{ 0x9E75, {0x04,0x00,0x07,0xE0,0x7F,0xC0,0x7F,0xC0,0x45,0x40,0x71,0x40,0x4E,0xC0,0x72,0xC0,0x5D,0x40,0x5E,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x9E78, {0x20,0x80,0x38,0x80,0x21,0x40,0xFF,0xE0,0xE8,0x80,0xBB,0xE0,0xFA,0xA0,0xEA,0xA0,0xFB,0xE0,0xD9,0x80,0xFA,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9E79, {0x61,0x80,0x61,0xC0,0x7F,0xE0,0xFF,0xE0,0xFF,0xC0,0xBD,0xC0,0xEF,0xC0,0xFF,0x80,0xFF,0x80,0xED,0xE0,0xF9,0x60,0x88,0x20,0x00,0x00,}}, +{ 0x9E7D, {0x04,0x00,0x77,0xE0,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x6F,0xC0,0x7F,0xC0,0x48,0x40,0x7F,0x80,0x6A,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x9E7F, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x49,0x00,0x7F,0xC0,0x49,0x40,0x7F,0xC0,0x51,0x00,0x5F,0xC0,0x51,0x20,0x9D,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x9E81, {0x04,0x00,0x0F,0x00,0xF6,0x00,0xFF,0xE0,0x6B,0x00,0x7F,0xC0,0x69,0x40,0x7F,0xC0,0x7F,0xE0,0x5F,0x80,0x5D,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x9E88, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x7D,0x80,0x7D,0x20,0x73,0xE0,0x5F,0xC0,0x8F,0x80,0x3F,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0x9E8B, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0x5D,0x80,0x9D,0x20,0x25,0xE0,0xFF,0xE0,0xFF,0xE0,0xF5,0xE0,0x04,0x00,0x00,0x00,}}, +{ 0x9E8C, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x5F,0xE0,0xF9,0xE0,0x1F,0x80,0x71,0x80,0x7F,0x80,0xFF,0xE0,0x1B,0x80,0xE0,0xE0,0x00,0x00,}}, +{ 0x9E91, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x7F,0xC0,0xB9,0x20,0x69,0xE0,0x73,0x80,0x7B,0x80,0x7F,0x80,0x32,0x20,0xE1,0xE0,0x00,0x00,}}, +{ 0x9E92, {0x11,0x40,0x11,0x40,0x7F,0xE0,0x7F,0xE0,0x7D,0xC0,0x6D,0x40,0x7D,0xC0,0x73,0x40,0x7F,0xE0,0xF9,0x40,0xF6,0x20,0x6C,0x20,0x00,0x00,}}, +{ 0x9E93, {0x10,0x80,0xFF,0xE0,0x39,0xC0,0x56,0xA0,0xBF,0xE0,0x29,0x00,0x3F,0xC0,0x29,0x40,0x7F,0xC0,0x59,0xC0,0x9D,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x9E95, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x4F,0xA0,0xB9,0xE0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x7E,0x80,0x7F,0x80,0x60,0x80,0x00,0x00,}}, +{ 0x9E97, {0x00,0x00,0xFF,0xE0,0x7B,0xC0,0x4E,0x40,0x7F,0xE0,0x69,0x00,0x7F,0xC0,0x6B,0x40,0x7F,0xC0,0x59,0xC0,0x9D,0x20,0x21,0xE0,0x00,0x00,}}, +{ 0x9E9D, {0x02,0x00,0x7F,0xE0,0x7F,0xC0,0x7F,0xC0,0x5F,0xE0,0xB9,0xE0,0x78,0x80,0x6F,0xE0,0x7A,0x80,0xF9,0x80,0x78,0x80,0xD8,0x80,0x00,0x00,}}, +{ 0x9E9F, {0x11,0x80,0x13,0xC0,0x7F,0xE0,0x7F,0xE0,0x7F,0xC0,0x6D,0xA0,0x7D,0x40,0x7B,0xE0,0x7F,0xC0,0x6B,0xE0,0x7E,0x40,0xE4,0x40,0x00,0x00,}}, +{ 0x9EA5, {0x04,0x00,0x04,0x00,0xFF,0xE0,0x25,0x80,0x5F,0x40,0x15,0x00,0x65,0x80,0xCF,0xE0,0x79,0x00,0x47,0x00,0x19,0x00,0x60,0x00,0x00,0x00,}}, +{ 0x9EA6, {0x04,0x00,0x04,0x00,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x04,0x00,0x0F,0x80,0x39,0x00,0x46,0x00,0x1B,0x00,0xE0,0xE0,0x00,0x00,}}, +{ 0x9EA9, {0x21,0x80,0x31,0x80,0xFF,0xC0,0x6B,0xC0,0xF5,0x80,0x6B,0xE0,0x65,0x80,0xB9,0x80,0x7A,0x40,0x94,0x40,0x3C,0x00,0xC3,0xE0,0x00,0x00,}}, +{ 0x9EAA, {0x20,0x00,0x37,0xE0,0xFD,0x80,0x6B,0xC0,0xF7,0xC0,0x73,0xC0,0x6B,0xC0,0xBB,0xC0,0x7A,0x40,0x90,0x40,0x38,0x40,0xC0,0x80,0x00,0x00,}}, +{ 0x9EAD, {0x21,0x00,0x31,0x00,0xFF,0xC0,0x6B,0x40,0xF7,0xC0,0x73,0xC0,0x6B,0xC0,0xBA,0x80,0x7A,0x00,0x93,0xE0,0x3C,0x00,0xC3,0xE0,0x00,0x00,}}, +{ 0x9EB8, {0x21,0x80,0x31,0x80,0xFF,0xC0,0x7B,0xC0,0x31,0x80,0xFF,0xE0,0x61,0x80,0x79,0x80,0xFA,0x40,0x14,0x40,0x3C,0x00,0xC3,0xE0,0x00,0x00,}}, +{ 0x9EB9, {0x21,0x00,0x23,0x00,0xFF,0xE0,0x7D,0xE0,0x23,0xE0,0xFD,0xA0,0x23,0xE0,0x7B,0xE0,0x5F,0xE0,0xB1,0xE0,0x3C,0x00,0xC3,0xE0,0x00,0x00,}}, +{ 0x9EBA, {0x20,0x00,0x27,0xE0,0xFA,0x00,0x77,0xE0,0x25,0x60,0xFD,0xE0,0x25,0x60,0x75,0xE0,0xD5,0x60,0x37,0xE0,0x28,0x00,0xC7,0xE0,0x00,0x00,}}, +{ 0x9EBB, {0x02,0x00,0x02,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x48,0x80,0x5D,0x80,0x5A,0xC0,0x6C,0xA0,0x48,0x80,0x88,0x80,0x08,0x80,0x00,0x00,}}, +{ 0x9EBC, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x7B,0xE0,0x6B,0xE0,0x6A,0x80,0x64,0x80,0x7F,0x80,0x46,0x40,0x7F,0xE0,0x80,0x20,0x00,0x00,}}, +{ 0x9EBE, {0x02,0x00,0x7F,0xE0,0x7F,0xE0,0x7F,0xE0,0x5B,0xA0,0x7D,0xE0,0x51,0x00,0x5E,0x00,0x5F,0x80,0x5F,0xE0,0x7C,0x20,0x83,0xE0,0x00,0x00,}}, +{ 0x9EBF, {0x02,0x00,0x7F,0xE0,0x48,0x80,0x7F,0xE0,0x5B,0xC0,0x7F,0xA0,0x48,0x80,0x4F,0x80,0x44,0x00,0x5F,0xC0,0x9F,0xC0,0x10,0x40,0x00,0x00,}}, +{ 0x9EC4, {0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x24,0x80,0x1F,0x00,0x31,0x80,0xC0,0x40,0x00,0x00,}}, +{ 0x9ECC, {0x2A,0x80,0x66,0x80,0x6F,0x80,0x7F,0xE0,0x53,0x40,0xFF,0x80,0x1F,0x00,0xFF,0xE0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x61,0xC0,0x00,0x00,}}, +{ 0x9ECD, {0x01,0x80,0x3E,0x00,0x04,0x00,0xFF,0xE0,0x1F,0x00,0xE4,0xE0,0x0E,0x00,0x35,0x80,0xDF,0x60,0x1F,0x00,0x64,0xC0,0x0C,0x00,0x00,0x00,}}, +{ 0x9ECE, {0x19,0x00,0x63,0x00,0xFF,0xC0,0xF9,0x40,0x7A,0x40,0xA4,0x80,0x2A,0x00,0x35,0x80,0xF7,0xE0,0x1F,0x00,0x74,0xC0,0x0C,0x00,0x00,0x00,}}, +{ 0x9ECF, {0x19,0x80,0x61,0x80,0xF9,0x80,0xF9,0xE0,0x79,0x80,0xB5,0x80,0x73,0xC0,0xFE,0x40,0x7A,0x40,0xFE,0x40,0x23,0xC0,0x22,0x40,0x00,0x00,}}, +{ 0x9ED0, {0x19,0x80,0x61,0x80,0xFF,0xE0,0xFF,0xC0,0x7B,0xC0,0xA7,0x40,0x73,0xC0,0xF9,0x80,0xF7,0xE0,0xFF,0xE0,0x24,0x20,0x24,0x60,0x00,0x00,}}, +{ 0x9ED2, {0x00,0x00,0x3F,0x80,0x24,0x80,0x3F,0x80,0x3F,0x80,0x04,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x12,0x40,0x49,0x20,0x89,0x20,0x00,0x00,}}, +{ 0x9ED4, {0x01,0x80,0x7D,0x80,0x7D,0x80,0x7D,0x80,0x7E,0x40,0x11,0xA0,0x7C,0x00,0x1B,0x80,0xE0,0x80,0x7C,0x80,0x74,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x9ED8, {0x00,0x80,0x7E,0xC0,0x7E,0xA0,0x7A,0x80,0x7F,0xE0,0x10,0x80,0x7E,0x80,0x10,0x80,0xFE,0xC0,0xF5,0xC0,0x7B,0x20,0x82,0x20,0x00,0x00,}}, +{ 0x9ED9, {0x00,0x80,0x7C,0xC0,0x54,0xA0,0x7F,0xE0,0x7C,0x80,0x10,0x80,0x7D,0x80,0x1A,0x40,0xF0,0x20,0x2A,0x40,0x49,0x20,0x80,0x20,0x00,0x00,}}, +{ 0x9EDB, {0x0A,0x80,0x13,0xE0,0xFF,0x00,0xA0,0xE0,0x3F,0xE0,0x64,0x80,0x7F,0x80,0x7F,0xC0,0x7F,0xC0,0xFF,0xE0,0xD2,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x9EDC, {0x00,0xC0,0x3E,0xC0,0x3F,0xE0,0x3F,0xE0,0x3F,0xE0,0x09,0xE0,0x3E,0xC0,0x0D,0xE0,0x71,0xE0,0x3F,0xE0,0x3B,0xE0,0x41,0x20,0x00,0x00,}}, +{ 0x9EDD, {0x02,0x80,0x7A,0x80,0x7A,0x80,0x7E,0x80,0x7D,0xE0,0x23,0xA0,0x7A,0xA0,0x33,0xA0,0xFF,0xA0,0x7F,0xA0,0x79,0x20,0x82,0xC0,0x00,0x00,}}, +{ 0x9EDE, {0x01,0x80,0x7D,0x80,0x7D,0xE0,0x7D,0xE0,0x7D,0x80,0x11,0x80,0x7F,0xC0,0x1A,0x40,0xE2,0x40,0x7E,0x40,0x77,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9EE0, {0x01,0x80,0x7D,0x80,0x7F,0xE0,0x7F,0xE0,0x7D,0x80,0x13,0xC0,0x7C,0x00,0x1B,0xC0,0xE2,0x40,0x7E,0x40,0x77,0xC0,0x82,0x40,0x00,0x00,}}, +{ 0x9EE5, {0x00,0x80,0x7C,0xC0,0x7F,0xE0,0x7D,0xC0,0x7D,0x40,0x11,0x40,0x7D,0xC0,0x18,0xC0,0xE1,0xE0,0x7E,0xA0,0x74,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x9EE8, {0x25,0x00,0x17,0x00,0x7F,0xE0,0x9F,0x00,0x3F,0x80,0x65,0x80,0x75,0x80,0x7F,0xC0,0x7F,0xC0,0xFF,0xE0,0xD2,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x9EEF, {0x01,0x80,0x7D,0x80,0x7F,0xE0,0x7D,0xC0,0x7F,0xE0,0x10,0x00,0x7D,0xC0,0x19,0x40,0xE1,0xC0,0x7D,0x40,0x75,0xC0,0x81,0x40,0x00,0x00,}}, +{ 0x9EF4, {0x69,0x80,0x7B,0x80,0xFF,0x80,0x7F,0xE0,0x7F,0xC0,0x7B,0xC0,0xFE,0xC0,0x7E,0xC0,0x7E,0xC0,0x7F,0xC0,0x7F,0x20,0x62,0x20,0x00,0x00,}}, +{ 0x9EF6, {0x00,0x00,0x7F,0xE0,0x7D,0xE0,0x7F,0xE0,0x7E,0x80,0xBF,0x40,0x3F,0xA0,0x37,0x80,0x3F,0x80,0xFF,0xE0,0xD2,0x40,0x89,0x20,0x00,0x00,}}, +{ 0x9EF7, {0x01,0x80,0x7F,0xE0,0x7B,0xC0,0x7F,0xE0,0x7F,0xE0,0x27,0xE0,0x7B,0xC0,0x32,0x40,0xFB,0xC0,0x7B,0xC0,0x73,0x40,0x8C,0x20,0x00,0x00,}}, +{ 0x9EF9, {0x0A,0x00,0x2A,0x80,0xFF,0xE0,0xFF,0xE0,0x64,0x40,0x7F,0xA0,0xE4,0xA0,0x75,0x80,0x75,0x80,0x75,0x80,0x64,0x80,0x64,0x80,0x00,0x00,}}, +{ 0x9EFB, {0x71,0x80,0xF5,0xC0,0xF9,0xC0,0xFF,0xE0,0x65,0x80,0xFD,0xC0,0x69,0xC0,0x79,0xC0,0x7B,0x80,0x7C,0x80,0x6B,0x40,0x5C,0x20,0x00,0x00,}}, +{ 0x9EFC, {0x71,0xC0,0xF5,0xA0,0xFF,0xE0,0xFF,0xC0,0x67,0xC0,0xFF,0xC0,0x6B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x6B,0xC0,0x5A,0xC0,0x00,0x00,}}, +{ 0x9EFD, {0x00,0x00,0x7F,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x7B,0xC0,0x7B,0xC0,0x08,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x9F07, {0x21,0x80,0xF9,0x80,0xFF,0xE0,0xFF,0xC0,0x79,0x80,0x5B,0x60,0xFF,0x80,0x7B,0xC0,0x7B,0xC0,0x7B,0xC0,0x7B,0xE0,0x47,0xE0,0x00,0x00,}}, +{ 0x9F08, {0x69,0x00,0xB7,0xE0,0xFF,0x40,0xFD,0xC0,0xA7,0x60,0x3F,0x80,0x7B,0x80,0x4B,0xC0,0x6B,0xC0,0x6B,0xC0,0x4A,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x9F0E, {0x00,0x00,0x1F,0x00,0x51,0x40,0x5F,0x40,0x5F,0x40,0x5F,0x40,0x7B,0xC0,0x0A,0x00,0xFB,0xE0,0x6A,0x80,0x4A,0x80,0x8A,0x80,0x00,0x00,}}, +{ 0x9F13, {0x20,0x80,0x20,0x80,0xFF,0xE0,0x78,0x80,0x07,0xC0,0x7A,0x40,0x4A,0x40,0x79,0x80,0x11,0x80,0x59,0x80,0x32,0x40,0xCC,0x20,0x00,0x00,}}, +{ 0x9F15, {0x21,0x80,0xFF,0xE0,0x7B,0xC0,0x7B,0xC0,0x79,0x80,0x3E,0x60,0xCF,0x00,0x1B,0x00,0x3F,0x00,0xFF,0xE0,0x03,0x00,0x1C,0x00,0x00,0x00,}}, +{ 0x9F20, {0x0C,0x00,0x73,0x80,0x7B,0x80,0x7B,0x80,0x7F,0x80,0x00,0x00,0x75,0x80,0x6C,0x80,0x76,0x80,0x55,0x60,0x76,0x60,0xD8,0x20,0x00,0x00,}}, +{ 0x9F21, {0x08,0x80,0x24,0x80,0x25,0x00,0x3F,0x80,0x64,0x80,0x64,0x80,0x7F,0x80,0x64,0x80,0x7F,0x80,0x7F,0xE0,0x44,0x60,0x84,0x20,0x00,0x00,}}, +{ 0x9F2C, {0x21,0x80,0x59,0x80,0x4B,0xC0,0x4B,0xC0,0x7B,0xC0,0x6B,0xC0,0x6B,0xC0,0x7B,0xC0,0x7F,0xC0,0x74,0x20,0x7B,0x20,0xA1,0xE0,0x00,0x00,}}, +{ 0x9F3B, {0x08,0x00,0x3F,0x80,0x20,0x80,0x3F,0x80,0x3F,0x80,0x7F,0xC0,0x44,0x40,0x7F,0xC0,0x7F,0xC0,0xFF,0xE0,0x11,0x00,0x21,0x00,0x00,0x00,}}, +{ 0x9F3E, {0x20,0x00,0x7B,0xC0,0x79,0x80,0x79,0x80,0x79,0x80,0x7F,0xE0,0x7D,0x80,0x55,0x80,0xFD,0x80,0xFD,0x80,0x69,0x80,0x49,0x80,0x00,0x00,}}, +{ 0x9F4A, {0x04,0x00,0xFF,0xE0,0xFF,0xC0,0xF5,0x80,0x75,0x80,0x77,0xC0,0xA1,0xA0,0x3F,0x80,0x3F,0x80,0x3F,0x80,0x21,0x80,0x41,0x80,0x00,0x00,}}, +{ 0x9F4B, {0x04,0x00,0xFF,0xE0,0xFF,0xC0,0xF5,0x80,0x75,0x80,0x77,0xC0,0xE0,0xA0,0x7F,0x80,0x7F,0x80,0x7F,0x80,0x55,0x80,0xA4,0x80,0x00,0x00,}}, +{ 0x9F4E, {0x04,0x00,0xFF,0xE0,0x7F,0xC0,0x75,0xC0,0x7F,0xE0,0xFF,0x80,0x7F,0x80,0x73,0x80,0x7F,0x80,0x7F,0x80,0x4A,0x80,0xB1,0x80,0x00,0x00,}}, +{ 0x9F4F, {0x04,0x00,0xFF,0xE0,0x7F,0xC0,0x75,0xC0,0xE4,0xE0,0x7F,0x80,0x7F,0x80,0x6A,0x80,0x7B,0x80,0x7B,0x80,0x7F,0x80,0x80,0x80,0x00,0x00,}}, +{ 0x9F52, {0x04,0x00,0x24,0x00,0x27,0x80,0xFF,0xE0,0xD3,0x40,0x6B,0x40,0x6D,0xC0,0x7F,0xC0,0x5B,0x40,0x6D,0xC0,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x9F54, {0x11,0x80,0x71,0x80,0x7F,0x80,0xFF,0xA0,0xFB,0xA0,0x6B,0xC0,0x77,0x80,0x7F,0x80,0x6B,0x80,0x7F,0xA0,0x7F,0xA0,0x42,0xE0,0x00,0x00,}}, +{ 0x9F5F, {0x10,0x00,0x71,0xC0,0x7D,0x40,0xFF,0x40,0xFF,0xC0,0x6D,0x40,0x75,0x40,0x7D,0xC0,0x6D,0x40,0x7D,0x40,0x7F,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x9F60, {0x08,0x00,0x39,0xE0,0x3E,0xE0,0x7F,0xE0,0x7F,0xA0,0x37,0xC0,0x3A,0x00,0x3E,0xE0,0x36,0xA0,0x3E,0xA0,0x3E,0xE0,0x22,0xA0,0x00,0x00,}}, +{ 0x9F61, {0x11,0x80,0x71,0x80,0x7D,0x80,0xFE,0x40,0xFF,0xE0,0x6C,0x00,0x77,0xC0,0x7D,0xC0,0x6D,0xC0,0x7D,0x80,0x7D,0x80,0x45,0x80,0x00,0x00,}}, +{ 0x9F62, {0x10,0x80,0x5C,0x80,0x51,0x40,0xFE,0x20,0x57,0xE0,0x76,0x00,0x5B,0xE0,0x7E,0xA0,0x7A,0xA0,0x56,0xC0,0x7E,0x80,0x42,0x80,0x00,0x00,}}, +{ 0x9F63, {0x08,0x80,0x38,0x80,0x3E,0xE0,0x7F,0xE0,0x7F,0xA0,0x37,0xE0,0x3B,0xE0,0x3F,0xE0,0x37,0x20,0x3E,0x20,0x3E,0x20,0x22,0x40,0x00,0x00,}}, +{ 0x9F66, {0x10,0x00,0x71,0xC0,0x7D,0x40,0xFF,0xC0,0xFF,0x40,0x6D,0x40,0x75,0xC0,0x7D,0xA0,0x6D,0xC0,0x7D,0x80,0x7D,0xC0,0x46,0x20,0x00,0x00,}}, +{ 0x9F67, {0x20,0x00,0xFF,0xC0,0x7A,0x40,0xFC,0xC0,0x27,0x80,0xFF,0xE0,0x59,0x40,0x77,0xC0,0x7F,0xC0,0x5F,0x40,0x7F,0xC0,0x40,0x40,0x00,0x00,}}, +{ 0x9F6A, {0x10,0x00,0x71,0xC0,0x7D,0x40,0xFF,0x40,0xFF,0xC0,0x6C,0x80,0x75,0x80,0x7D,0xE0,0x6D,0x80,0x7D,0x80,0x7E,0x80,0x44,0x60,0x00,0x00,}}, +{ 0x9F6C, {0x10,0x00,0x73,0xE0,0x7D,0x80,0xFF,0xC0,0xFF,0x40,0x6D,0x40,0x77,0xE0,0x7C,0x00,0x6D,0xC0,0x7D,0x40,0x7D,0xC0,0x45,0x40,0x00,0x00,}}, +{ 0x9F72, {0x10,0xC0,0x73,0x80,0x7F,0xC0,0xFF,0xC0,0xFF,0xC0,0x6F,0xC0,0x75,0x80,0x7F,0xE0,0x6F,0xE0,0x7F,0xE0,0x7E,0x20,0x46,0x60,0x00,0x00,}}, +{ 0x9F76, {0x10,0x00,0x73,0xE0,0x7F,0xE0,0xFF,0xE0,0xFD,0xC0,0x6C,0x00,0x77,0xE0,0x7D,0x80,0x6D,0xC0,0x7C,0x40,0x7C,0x40,0x44,0x80,0x00,0x00,}}, +{ 0x9F77, {0x10,0x00,0x71,0xC0,0x7D,0xC0,0xFF,0xC0,0xFF,0xE0,0x6D,0xC0,0x75,0xA0,0x7D,0xE0,0x6D,0xE0,0x7F,0xE0,0x7F,0xE0,0x44,0x00,0x00,0x00,}}, +{ 0x9F8D, {0x22,0x00,0x23,0xC0,0xFB,0xC0,0x50,0x40,0xFB,0xC0,0x02,0x00,0x7B,0xC0,0x4A,0x00,0x7B,0xC0,0x7B,0xC0,0x4A,0x20,0x59,0xE0,0x00,0x00,}}, +{ 0x9F95, {0x04,0x00,0x0A,0x00,0xFF,0xE0,0xFF,0xE0,0x3F,0x80,0x7F,0xC0,0x6B,0x80,0xFC,0x80,0x7B,0x80,0x7B,0x80,0x6B,0xA0,0x79,0xE0,0x00,0x00,}}, +{ 0x9F9C, {0x08,0x00,0x1F,0x00,0xFF,0x80,0xFF,0x80,0x7B,0x80,0x6A,0x00,0xFB,0xC0,0x6B,0xC0,0xFB,0xC0,0xFB,0xE0,0x6A,0x20,0x07,0xE0,0x00,0x00,}}, +{ 0x9F9D, {0x11,0x00,0x37,0x80,0xFF,0xC0,0x6F,0xC0,0xFF,0xC0,0x6F,0x80,0x7F,0xE0,0xFF,0xE0,0xFF,0xE0,0x7F,0xE0,0x6E,0x20,0x61,0xE0,0x00,0x00,}}, +{ 0x9FA0, {0x04,0x00,0x0A,0x00,0x3F,0x80,0xFF,0xE0,0xEE,0xC0,0x6B,0xC0,0x6E,0xC0,0x00,0x00,0x7F,0x80,0x7F,0x80,0x6A,0x80,0x6A,0x80,0x00,0x00,}}, +{ 0xAC00, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAC01, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAC02, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAC03, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAC04, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC05, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAC06, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAC07, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC08, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC09, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAC0A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC0B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC0C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC0D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC0E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC0F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAC10, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC11, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC12, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAC13, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xAC14, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAC15, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAC16, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC17, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC18, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC19, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC1A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAC1B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAC1C, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0x20,0x05,0x20,0x05,0x20,0x09,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xAC1D, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAC1E, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAC1F, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAC20, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC21, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAC22, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAC23, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC24, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC25, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAC26, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC27, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC28, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC29, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC2A, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC2B, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAC2C, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC2D, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC2E, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC2F, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xAC30, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xAC31, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC32, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC33, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC34, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC35, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC36, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAC37, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAC38, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x02,0x40,0x02,0x40,0x04,0x40,0x04,0x70,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAC39, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAC3A, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAC3B, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAC3C, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC3D, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAC3E, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAC3F, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC40, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC41, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAC42, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC43, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC44, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC45, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC46, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC47, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAC48, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC49, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC4A, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAC4B, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xAC4C, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAC4D, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAC4E, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC4F, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC50, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC51, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC52, {0x00,0x00,0x7E,0x40,0x02,0x70,0x02,0x40,0x04,0x70,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAC53, {0x00,0x00,0x7E,0x40,0x02,0x70,0x04,0x40,0x18,0x70,0x60,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAC54, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x05,0x20,0x09,0x20,0x09,0xE0,0x11,0x20,0x61,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xAC55, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAC56, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAC57, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAC58, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC59, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAC5A, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAC5B, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC5C, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC5D, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAC5E, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC5F, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC60, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC61, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC62, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC63, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAC64, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC65, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC66, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC67, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xAC68, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xAC69, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC6A, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC6B, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC6C, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC6D, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC6E, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x05,0x20,0x19,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAC6F, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x19,0x20,0x61,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAC70, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAC71, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAC72, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAC73, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAC74, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC75, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAC76, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAC77, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC78, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC79, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAC7A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC7B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC7C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC7D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC7E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC7F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAC80, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC81, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC82, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAC83, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAC84, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAC85, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAC86, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC87, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAC88, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC89, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAC8A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAC8B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAC8C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xA0,0x04,0xA0,0x07,0xA0,0x08,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xAC8D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAC8E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAC8F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAC90, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC91, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAC92, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAC93, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC94, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC95, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAC96, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC97, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC98, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC99, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC9A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC9B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAC9C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC9D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAC9E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAC9F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xACA0, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xACA1, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xACA2, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xACA3, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xACA4, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACA5, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACA6, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xACA7, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x18,0xA0,0x60,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xACA8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x02,0x40,0x02,0x40,0x05,0xC0,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xACA9, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xACAA, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xACAB, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xACAC, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xACAD, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xACAE, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xACAF, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xACB0, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xACB1, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xACB2, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xACB3, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xACB4, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xACB5, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACB6, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xACB7, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xACB8, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xACB9, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xACBA, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xACBB, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xACBC, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xACBD, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xACBE, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xACBF, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xACC0, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xACC1, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xACC2, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x02,0x40,0x05,0xC0,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xACC3, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x04,0x40,0x19,0xC0,0x60,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xACC4, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x04,0xA0,0x04,0xA0,0x0B,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xACC5, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xACC6, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xACC7, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xACC8, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACC9, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xACCA, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xACCB, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACCC, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACCD, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xACCE, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xACCF, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xACD0, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xACD1, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACD2, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xACD3, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xACD4, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xACD5, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xACD6, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xACD7, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xACD8, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xACD9, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xACDA, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xACDB, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xACDC, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACDD, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xACDE, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x04,0xA0,0x07,0xA0,0x18,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xACDF, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x04,0xA0,0x19,0xA0,0x60,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xACE0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xACE1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xACE2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xACE3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xACE4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x04,0x40,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xACE5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xACE6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xACE7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xACE8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xACE9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xACEA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xACEB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xACEC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xACED, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xACEE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xACEF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xACF0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xACF1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xACF2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xACF3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xACF4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xACF5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xACF6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xACF7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xACF8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xACF9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xACFA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xACFB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xACFC, {0x00,0x00,0x7F,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x11,0x70,0x11,0x40,0x11,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xACFD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xACFE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xACFF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAD00, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x70,0x0A,0x40,0x7F,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD01, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAD02, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD03, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD04, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD05, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAD06, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD07, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD08, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD09, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD0A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD0B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD0C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD0D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD0E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD0F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAD10, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAD11, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAD12, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD13, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD14, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD15, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD16, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x70,0x12,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAD17, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAD18, {0x00,0x00,0x7E,0xA0,0x02,0xA0,0x02,0xA0,0x02,0xA0,0x22,0xE0,0x22,0xA0,0x22,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xAD19, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAD1A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAD1B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAD1C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x04,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD1D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAD1E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAD1F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD20, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD21, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAD22, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD23, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD24, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD25, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD26, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD27, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD28, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD29, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD2A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD2B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD2C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAD2D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD2E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD2F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD30, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD31, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD32, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAD33, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x24,0xE0,0x20,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAD34, {0x00,0x00,0x7F,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAD35, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAD36, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAD37, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAD38, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x0A,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD39, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAD3A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD3B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD3C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD3D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAD3E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD3F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD40, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD41, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD42, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD43, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD44, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD45, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD46, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD47, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAD48, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAD49, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAD4A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD4B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD4C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD4D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD4E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAD4F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x12,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAD50, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xAD51, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAD52, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAD53, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xAD54, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x11,0x40,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD55, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xAD56, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAD57, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD58, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD59, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xAD5A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD5B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD5C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAD5D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD5E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD5F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAD60, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD61, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD62, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAD63, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAD64, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xAD65, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xAD66, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xAD67, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAD68, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD69, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD6A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xAD6B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x22,0x40,0x22,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xAD6C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xAD6D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAD6E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAD6F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xAD70, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x44,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD71, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xAD72, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAD73, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD74, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD75, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xAD76, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD77, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD78, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAD79, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD7A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD7B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAD7C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD7D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD7E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAD7F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAD80, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xAD81, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xAD82, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xAD83, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAD84, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD85, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAD86, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xAD87, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xAD88, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xAD89, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAD8A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAD8B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAD8C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD8D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAD8E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD8F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD90, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD91, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAD92, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD93, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD94, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD95, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD96, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAD97, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAD98, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD99, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAD9A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAD9B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAD9C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAD9D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAD9E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAD9F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xADA0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADA1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADA2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xADA3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0xC0,0x02,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xADA4, {0x00,0x00,0x7E,0xA0,0x02,0xA0,0x02,0xA0,0x02,0xA0,0x02,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xADA5, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xADA6, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xADA7, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xADA8, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADA9, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xADAA, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xADAB, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADAC, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADAD, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xADAE, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xADAF, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xADB0, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xADB1, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADB2, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xADB3, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xADB4, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xADB5, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xADB6, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xADB7, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xADB8, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xADB9, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xADBA, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xADBB, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xADBC, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADBD, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADBE, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xADBF, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x05,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xADC0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xADC1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xADC2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xADC3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xADC4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADC5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xADC6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xADC7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADC8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADC9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xADCA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xADCB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xADCC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xADCD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xADCE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xADCF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xADD0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xADD1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xADD2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xADD3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xADD4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xADD5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xADD6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xADD7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xADD8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADD9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xADDA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xADDB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xADDC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xADDD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xADDE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xADDF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xADE0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADE1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xADE2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xADE3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADE4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADE5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xADE6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xADE7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xADE8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xADE9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADEA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xADEB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xADEC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xADED, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xADEE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xADEF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xADF0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xADF1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xADF2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xADF3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xADF4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADF5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADF6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xADF7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xADF8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xADF9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xADFA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xADFB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xADFC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xADFD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xADFE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xADFF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE00, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE01, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xAE02, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE03, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE04, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAE05, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE06, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE07, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAE08, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE09, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE0A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAE0B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAE0C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xAE0D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xAE0E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xAE0F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAE10, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE11, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAE12, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xAE13, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xAE14, {0x00,0x00,0x7F,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE15, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE16, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAE17, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAE18, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE19, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAE1A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAE1B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE1C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE1D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAE1E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE1F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE20, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE21, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE22, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE23, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAE24, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE25, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE26, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE27, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAE28, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAE29, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAE2A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE2B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE2C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE2D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE2E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAE2F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAE30, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE31, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE32, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAE33, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAE34, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE35, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAE36, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAE37, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE38, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE39, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAE3A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE3B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE3C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE3D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE3E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE3F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAE40, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE41, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE42, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAE43, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xAE44, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAE45, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAE46, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE47, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE48, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE49, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE4A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAE4B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x04,0x40,0x18,0x40,0x60,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAE4C, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x11,0x70,0x11,0x40,0x21,0x40,0x22,0x40,0x42,0x40,0x04,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE4D, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE4E, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAE4F, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAE50, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE51, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAE52, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAE53, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE54, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE55, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAE56, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE57, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE58, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE59, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE5A, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE5B, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAE5C, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE5D, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE5E, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAE5F, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xAE60, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAE61, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAE62, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE63, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE64, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE65, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE66, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAE67, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAE68, {0x00,0x00,0xFD,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x25,0x20,0x25,0xE0,0x45,0x20,0x49,0x20,0x89,0x20,0x11,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xAE69, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAE6A, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAE6B, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAE6C, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE6D, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAE6E, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAE6F, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE70, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE71, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAE72, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE73, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE74, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE75, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE76, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE77, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAE78, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE79, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE7A, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE7B, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xAE7C, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xAE7D, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE7E, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE7F, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE80, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE81, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE82, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAE83, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAE84, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x70,0x11,0x40,0x11,0x40,0x11,0x40,0x21,0x70,0x22,0x40,0x42,0x40,0x04,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE85, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAE86, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAE87, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAE88, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE89, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAE8A, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAE8B, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE8C, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE8D, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAE8E, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE8F, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE90, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAE91, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE92, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAE93, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAE94, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE95, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE96, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAE97, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xAE98, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAE99, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAE9A, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE9B, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAE9C, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE9D, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAE9E, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x70,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAE9F, {0x00,0x00,0x7E,0x40,0x12,0x70,0x12,0x40,0x22,0x70,0x44,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAEA0, {0x00,0x00,0xFD,0x20,0x25,0x20,0x25,0xE0,0x25,0x20,0x25,0x20,0x25,0x20,0x45,0xE0,0x49,0x20,0x89,0x20,0x11,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xAEA1, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAEA2, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAEA3, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAEA4, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEA5, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAEA6, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAEA7, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEA8, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEA9, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAEAA, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEAB, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEAC, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAEAD, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEAE, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEAF, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAEB0, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEB1, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEB2, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAEB3, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xAEB4, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xAEB5, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEB6, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAEB7, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAEB8, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEB9, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEBA, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x11,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAEBB, {0x00,0x00,0x7F,0x20,0x13,0x20,0x13,0xE0,0x25,0x20,0x49,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAEBC, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0xC0,0x11,0x40,0x11,0x40,0x21,0x40,0x22,0x40,0x42,0x40,0x04,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAEBD, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAEBE, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAEBF, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAEC0, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEC1, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAEC2, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAEC3, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEC4, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEC5, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAEC6, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEC7, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEC8, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAEC9, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAECA, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAECB, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAECC, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAECD, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAECE, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAECF, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAED0, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAED1, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAED2, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAED3, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAED4, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAED5, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAED6, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAED7, {0x00,0x00,0x7E,0x40,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAED8, {0x00,0x00,0xFC,0xA0,0x24,0xA0,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x44,0xA0,0x48,0xA0,0x88,0xA0,0x10,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xAED9, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAEDA, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAEDB, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAEDC, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEDD, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAEDE, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAEDF, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE0, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE1, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAEE2, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE3, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE4, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAEE5, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE6, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE7, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAEE8, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEE9, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEEA, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAEEB, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xAEEC, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xAEED, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEEE, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAEEF, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAEF0, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEF1, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAEF2, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAEF3, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x24,0xA0,0x48,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAEF4, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0xC0,0x11,0x40,0x11,0x40,0x11,0xC0,0x21,0x40,0x22,0x40,0x42,0x40,0x04,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAEF5, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAEF6, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAEF7, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAEF8, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEF9, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAEFA, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xAEFB, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEFC, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEFD, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAEFE, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAEFF, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF00, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF01, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF02, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF03, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF04, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF05, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF06, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xAF07, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAF08, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAF09, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAF0A, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF0B, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF0C, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF0D, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF0E, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x13,0xC0,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAF0F, {0x00,0x00,0x7E,0x40,0x13,0xC0,0x12,0x40,0x23,0xC0,0x44,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAF10, {0x00,0x00,0xFC,0xA0,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x44,0xA0,0x48,0xA0,0x88,0xA0,0x10,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xAF11, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAF12, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAF13, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAF14, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF15, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAF16, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAF17, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF18, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF19, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAF1A, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF1B, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF1C, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF1D, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF1E, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF1F, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF20, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF21, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF22, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF23, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xAF24, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xAF25, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF26, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF27, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF28, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF29, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF2A, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x10,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAF2B, {0x00,0x00,0x7E,0xA0,0x13,0xA0,0x12,0xA0,0x27,0xA0,0x48,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAF2C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x44,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xAF2D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAF2E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAF2F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xAF30, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF31, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xAF32, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAF33, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF34, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF35, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xAF36, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF37, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF38, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAF39, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF3A, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF3B, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAF3C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF3D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF3E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAF3F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAF40, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xAF41, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xAF42, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xAF43, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAF44, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF45, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAF46, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xAF47, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x24,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xAF48, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x21,0x70,0x41,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAF49, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAF4A, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAF4B, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAF4C, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF4D, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAF4E, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF4F, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF50, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF51, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAF52, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF53, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF54, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF55, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF56, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF57, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF58, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF59, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF5A, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF5B, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAF5C, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAF5D, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAF5E, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF5F, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF60, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF61, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF62, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAF63, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAF64, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x12,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xAF65, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAF66, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAF67, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAF68, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF69, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAF6A, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAF6B, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF6C, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF6D, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAF6E, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF6F, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF70, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF71, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF72, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF73, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF74, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF75, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF76, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF77, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF78, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAF79, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF7A, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF7B, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF7C, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF7D, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF7E, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAF7F, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x22,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAF80, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAF81, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAF82, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAF83, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAF84, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF85, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAF86, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF87, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF88, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF89, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAF8A, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF8B, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF8C, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF8D, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF8E, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAF8F, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAF90, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF91, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF92, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAF93, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAF94, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAF95, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAF96, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF97, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAF98, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF99, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAF9A, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAF9B, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAF9C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x51,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xAF9D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAF9E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAF9F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xAFA0, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFA1, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xAFA2, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAFA3, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFA4, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFA5, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xAFA6, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFA7, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFA8, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAFA9, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFAA, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFAB, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAFAC, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFAD, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFAE, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAFAF, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAFB0, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xAFB1, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xAFB2, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xAFB3, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAFB4, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFB5, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFB6, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xAFB7, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x31,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xAFB8, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xAFB9, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAFBA, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAFBB, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xAFBC, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFBD, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xAFBE, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAFBF, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC0, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC1, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xAFC2, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC3, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC4, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAFC5, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC6, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC7, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xAFC8, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFC9, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFCA, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xAFCB, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAFCC, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xAFCD, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xAFCE, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xAFCF, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xAFD0, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFD1, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xAFD2, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xAFD3, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xAFD4, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xAFD5, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xAFD6, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xAFD7, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAFD8, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFD9, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xAFDA, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAFDB, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFDC, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFDD, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xAFDE, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFDF, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFE0, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAFE1, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFE2, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFE3, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xAFE4, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFE5, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFE6, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAFE7, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xAFE8, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xAFE9, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xAFEA, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAFEB, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xAFEC, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFED, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xAFEE, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xAFEF, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xAFF0, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x12,0xA0,0x12,0xA0,0x12,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xAFF1, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xAFF2, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xAFF3, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xAFF4, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFF5, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xAFF6, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xAFF7, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFF8, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFF9, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xAFFA, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFFB, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFFC, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xAFFD, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFFE, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xAFFF, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB000, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB001, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB002, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB003, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB004, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB005, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB006, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB007, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB008, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB009, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB00A, {0x00,0x00,0x7C,0xA0,0x14,0xA0,0x15,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB00B, {0x00,0x00,0x7E,0xA0,0x12,0xA0,0x13,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB00C, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB00D, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB00E, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB00F, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB010, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB011, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB012, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB013, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB014, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB015, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB016, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB017, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB018, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB019, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB01A, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB01B, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB01C, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB01D, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB01E, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB01F, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB020, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB021, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB022, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB023, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB024, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB025, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB026, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB027, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB028, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xB029, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB02A, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB02B, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB02C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB02D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB02E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB02F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB030, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB031, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB032, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB033, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB034, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB035, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB036, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB037, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB038, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB039, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB03A, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB03B, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB03C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB03D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB03E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB03F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB040, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB041, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB042, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB043, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB044, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x40,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB045, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB046, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB047, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB048, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB049, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB04A, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB04B, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB04C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB04D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB04E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB04F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB050, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB051, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB052, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB053, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB054, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB055, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB056, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB057, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB058, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB059, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB05A, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB05B, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB05C, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB05D, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB05E, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB05F, {0x00,0x00,0x7B,0xC0,0x08,0x40,0x10,0x40,0x20,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB060, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB061, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB062, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB063, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB064, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB065, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB066, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB067, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB068, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB069, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB06A, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB06B, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB06C, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB06D, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB06E, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB06F, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB070, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB071, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB072, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB073, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB074, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB075, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB076, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB077, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB078, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB079, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB07A, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB07B, {0x00,0x00,0x77,0x40,0x11,0x40,0x21,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB07C, {0x00,0x00,0x77,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x11,0x40,0x21,0x40,0x22,0x40,0x42,0x40,0x04,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB07D, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB07E, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB07F, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB080, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB081, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB082, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB083, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB084, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB085, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB086, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB087, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB088, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB089, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB08A, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB08B, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB08C, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB08D, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB08E, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB08F, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB090, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB091, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB092, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB093, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB094, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB095, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB096, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB097, {0x00,0x00,0x7E,0x40,0x12,0x40,0x12,0x40,0x22,0x40,0x44,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB098, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB099, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB09A, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB09B, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB09C, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB09D, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB09E, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB09F, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0A0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0A1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB0A2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0A3, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0A4, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB0A5, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0A6, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0A7, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB0A8, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0A9, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0AA, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB0AB, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB0AC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB0AD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB0AE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB0AF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB0B0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0B1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0B2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB0B3, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB0B4, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB0B5, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB0B6, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB0B7, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB0B8, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0B9, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB0BA, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB0BB, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0BC, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0BD, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB0BE, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0BF, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0C0, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB0C1, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0C2, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0C3, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB0C4, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0C5, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0C6, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB0C7, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB0C8, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB0C9, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0CA, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB0CB, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB0CC, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0CD, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0CE, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB0CF, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB0D0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB0D1, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB0D2, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB0D3, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB0D4, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0D5, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB0D6, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB0D7, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0D8, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0D9, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB0DA, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0DB, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0DC, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB0DD, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0DE, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0DF, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB0E0, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0E1, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0E2, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB0E3, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB0E4, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB0E5, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB0E6, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB0E7, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB0E8, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0E9, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB0EA, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB0EB, {0x00,0x00,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB0EC, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0xE0,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB0ED, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB0EE, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB0EF, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB0F0, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0F1, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB0F2, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB0F3, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0F4, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0F5, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB0F6, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0F7, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0F8, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB0F9, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0FA, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0FB, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB0FC, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0FD, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB0FE, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB0FF, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB100, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB101, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB102, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB103, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB104, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB105, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB106, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB107, {0x00,0x00,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB108, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB109, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB10A, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB10B, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB10C, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB10D, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB10E, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB10F, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB110, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB111, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB112, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB113, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB114, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB115, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB116, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB117, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB118, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB119, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB11A, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB11B, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB11C, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB11D, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB11E, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB11F, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB120, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB121, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB122, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB123, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB124, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB125, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB126, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB127, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB128, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB129, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB12A, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB12B, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB12C, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB12D, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB12E, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB12F, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB130, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB131, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB132, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB133, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB134, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB135, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB136, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB137, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB138, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB139, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB13A, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB13B, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB13C, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB13D, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB13E, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB13F, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB140, {0x00,0x00,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB141, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB142, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB143, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB144, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB145, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB146, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB147, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB148, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB149, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB14A, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB14B, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB14C, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB14D, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB14E, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB14F, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB150, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB151, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB152, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB153, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB154, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB155, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB156, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB157, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB158, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB159, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB15A, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB15B, {0x00,0x00,0x40,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB15C, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB15D, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB15E, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB15F, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB160, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB161, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB162, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB163, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB164, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB165, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB166, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB167, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB168, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB169, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB16A, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB16B, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB16C, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB16D, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB16E, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB16F, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB170, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB171, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB172, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB173, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB174, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB175, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB176, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB177, {0x00,0x00,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB178, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB179, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB17A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB17B, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB17C, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB17D, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB17E, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB17F, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB180, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB181, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB182, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB183, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB184, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB185, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB186, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB187, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB188, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB189, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB18A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB18B, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB18C, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB18D, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB18E, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB18F, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB190, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB191, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB192, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB193, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB194, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB195, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB196, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB197, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB198, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB199, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB19A, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB19B, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB19C, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB19D, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB19E, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB19F, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1A0, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB1A1, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1A2, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1A3, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB1A4, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1A5, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1A6, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB1A7, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB1A8, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB1A9, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB1AA, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1AB, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1AC, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1AD, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1AE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB1AF, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB1B0, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB1B1, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB1B2, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB1B3, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB1B4, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1B5, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB1B6, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB1B7, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1B8, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1B9, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB1BA, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1BB, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1BC, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB1BD, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1BE, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1BF, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB1C0, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1C1, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1C2, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB1C3, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1C4, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB1C5, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1C6, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1C7, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1C8, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1C9, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1CA, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB1CB, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB1CC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB1CD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB1CE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB1CF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB1D0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1D1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB1D2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB1D3, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1D4, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1D5, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB1D6, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1D7, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1D8, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB1D9, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1DA, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB1DB, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB1DC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1DD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1DE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB1DF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB1E0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB1E1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB1E2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1E3, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB1E4, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1E5, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB1E6, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB1E7, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB1E8, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB1E9, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB1EA, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB1EB, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB1EC, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1ED, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB1EE, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB1EF, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F0, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F1, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB1F2, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F3, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F4, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB1F5, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F6, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F7, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB1F8, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1F9, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB1FA, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB1FB, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB1FC, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB1FD, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB1FE, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB1FF, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB200, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB201, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB202, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB203, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB204, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xB205, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB206, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB207, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB208, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB209, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB20A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB20B, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB20C, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB20D, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB20E, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB20F, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB210, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB211, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB212, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB213, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB214, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB215, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB216, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB217, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB218, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB219, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB21A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB21B, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB21C, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB21D, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB21E, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB21F, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB220, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB221, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB222, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB223, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB224, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB225, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB226, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB227, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB228, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB229, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB22A, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB22B, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB22C, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB22D, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB22E, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB22F, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB230, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB231, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB232, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB233, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB234, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB235, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB236, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB237, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB238, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB239, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB23A, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB23B, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB23C, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xB23D, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB23E, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB23F, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB240, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB241, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB242, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB243, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB244, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB245, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB246, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB247, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB248, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB249, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB24A, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB24B, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB24C, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB24D, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB24E, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB24F, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB250, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB251, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB252, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB253, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB254, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB255, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB256, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB257, {0x00,0x00,0x40,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB258, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB259, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB25A, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB25B, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB25C, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB25D, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB25E, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB25F, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB260, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB261, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB262, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB263, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB264, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB265, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB266, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB267, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB268, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB269, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB26A, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB26B, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB26C, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB26D, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB26E, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB26F, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB270, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB271, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB272, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB273, {0x00,0x00,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB274, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xB275, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB276, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB277, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB278, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB279, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB27A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB27B, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB27C, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB27D, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB27E, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB27F, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB280, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB281, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB282, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB283, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB284, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB285, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB286, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB287, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB288, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB289, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB28A, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB28B, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB28C, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB28D, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB28E, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB28F, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB290, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB291, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB292, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB293, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB294, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB295, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB296, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB297, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB298, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB299, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB29A, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB29B, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB29C, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB29D, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB29E, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB29F, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB2A0, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB2A1, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB2A2, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB2A3, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB2A4, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB2A5, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB2A6, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB2A7, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB2A8, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB2A9, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB2AA, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB2AB, {0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB2AC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB2AD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB2AE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB2AF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB2B0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2B1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB2B2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB2B3, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2B4, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2B5, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB2B6, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2B7, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2B8, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB2B9, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB2BA, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB2BB, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB2BC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2BD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2BE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB2BF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB2C0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB2C1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB2C2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB2C3, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB2C4, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2C5, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2C6, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB2C7, {0x00,0x00,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB2C8, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB2C9, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB2CA, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB2CB, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB2CC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2CD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB2CE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB2CF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2D0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2D1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB2D2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2D3, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2D4, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB2D5, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2D6, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB2D7, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB2D8, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2D9, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2DA, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB2DB, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB2DC, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB2DD, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB2DE, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB2DF, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB2E0, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2E1, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2E2, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB2E3, {0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB2E4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB2E5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB2E6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB2E7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB2E8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2E9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB2EA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB2EB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2EC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2ED, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB2EE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2EF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2F0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB2F1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2F2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB2F3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB2F4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2F5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2F6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB2F7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB2F8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB2F9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB2FA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB2FB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB2FC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2FD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB2FE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB2FF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB300, {0x00,0x00,0x79,0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB301, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB302, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB303, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB304, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB305, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB306, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB307, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB308, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB309, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB30A, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB30B, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB30C, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB30D, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB30E, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB30F, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB310, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB311, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB312, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB313, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB314, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB315, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB316, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB317, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB318, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB319, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB31A, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB31B, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB31C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB31D, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB31E, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB31F, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB320, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB321, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB322, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB323, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB324, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB325, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB326, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB327, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB328, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB329, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB32A, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB32B, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB32C, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB32D, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB32E, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB32F, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB330, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB331, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB332, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB333, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB334, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB335, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB336, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB337, {0x00,0x00,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB338, {0x00,0x00,0x79,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x41,0x20,0x41,0x20,0x41,0xE0,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB339, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB33A, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB33B, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB33C, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB33D, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB33E, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB33F, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB340, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB341, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB342, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB343, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB344, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB345, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB346, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB347, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB348, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB349, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB34A, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB34B, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB34C, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB34D, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB34E, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB34F, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB350, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB351, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB352, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB353, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB354, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB355, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB356, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB357, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB358, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB359, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB35A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB35B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB35C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB35D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB35E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB35F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB360, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB361, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB362, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB363, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB364, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB365, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB366, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB367, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB368, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB369, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB36A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB36B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB36C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB36D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB36E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB36F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB370, {0x00,0x00,0x78,0xA0,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB371, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB372, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB373, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB374, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB375, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB376, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB377, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB378, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB379, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB37A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB37B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB37C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB37D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB37E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB37F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB380, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB381, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB382, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB383, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB384, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB385, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB386, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB387, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB388, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB389, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB38A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB38B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB38C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB38D, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB38E, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB38F, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB390, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB391, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB392, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB393, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB394, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB395, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB396, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB397, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB398, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB399, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB39A, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB39B, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB39C, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB39D, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB39E, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB39F, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB3A0, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB3A1, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB3A2, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB3A3, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB3A4, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3A5, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3A6, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB3A7, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x40,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB3A8, {0x00,0x00,0x78,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB3A9, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB3AA, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB3AB, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB3AC, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3AD, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB3AE, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB3AF, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B0, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B1, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB3B2, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B3, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B4, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB3B5, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B6, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B7, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB3B8, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3B9, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3BA, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB3BB, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB3BC, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB3BD, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3BE, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB3BF, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB3C0, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3C1, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3C2, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB3C3, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB3C4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB3C5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB3C6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB3C7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB3C8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3C9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB3CA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB3CB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3CC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3CD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB3CE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3CF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3D0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB3D1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3D2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3D3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB3D4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3D5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3D6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB3D7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB3D8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB3D9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB3DA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB3DB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB3DC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3DD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB3DE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB3DF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB3E0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB3E1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB3E2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB3E3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB3E4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3E5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB3E6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB3E7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3E8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3E9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB3EA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3EB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3EC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB3ED, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3EE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB3EF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB3F0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3F1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3F2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB3F3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB3F4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB3F5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB3F6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB3F7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB3F8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3F9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB3FA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB3FB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB3FC, {0x00,0x00,0x7E,0xA0,0x40,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB3FD, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB3FE, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB3FF, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB400, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB401, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB402, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB403, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB404, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB405, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB406, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB407, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB408, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB409, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB40A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB40B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB40C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB40D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB40E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB40F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB410, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB411, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB412, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB413, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB414, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB415, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB416, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB417, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB418, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB419, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB41A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB41B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB41C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB41D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB41E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB41F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB420, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB421, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB422, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB423, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB424, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB425, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB426, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB427, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB428, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB429, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB42A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB42B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB42C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB42D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB42E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB42F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB430, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB431, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB432, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB433, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB434, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB435, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB436, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB437, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB438, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB439, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB43A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB43B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB43C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB43D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB43E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB43F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB440, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB441, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB442, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB443, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB444, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB445, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB446, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB447, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB448, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB449, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB44A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB44B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB44C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB44D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB44E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB44F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB450, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xB451, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB452, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB453, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB454, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB455, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB456, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB457, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB458, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB459, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB45A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB45B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB45C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB45D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB45E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB45F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB460, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB461, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB462, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB463, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB464, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB465, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB466, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB467, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB468, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB469, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB46A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB46B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB46C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB46D, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB46E, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB46F, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB470, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB471, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB472, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB473, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB474, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB475, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB476, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB477, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB478, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB479, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB47A, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB47B, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB47C, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB47D, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB47E, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB47F, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB480, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB481, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB482, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB483, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB484, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB485, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB486, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB487, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB488, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xB489, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB48A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB48B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB48C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB48D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB48E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB48F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB490, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB491, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB492, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB493, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB494, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB495, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB496, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB497, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB498, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB499, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB49A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB49B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB49C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB49D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB49E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB49F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB4A0, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB4A1, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB4A2, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x41,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB4A3, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB4A4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB4A5, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB4A6, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB4A7, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB4A8, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4A9, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB4AA, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB4AB, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4AC, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4AD, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB4AE, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4AF, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4B0, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB4B1, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB4B2, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB4B3, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB4B4, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4B5, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4B6, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB4B7, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB4B8, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB4B9, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB4BA, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB4BB, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB4BC, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4BD, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4BE, {0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB4BF, {0x00,0x00,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB4C0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xB4C1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB4C2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB4C3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB4C4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4C5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB4C6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB4C7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4C8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4C9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB4CA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4CB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4CC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB4CD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4CE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4CF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB4D0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4D1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4D2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB4D3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB4D4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB4D5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB4D6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB4D7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB4D8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4D9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4DA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB4DB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB4DC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB4DD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB4DE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB4DF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB4E0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4E1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB4E2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB4E3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4E4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4E5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB4E6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4E7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4E8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB4E9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4EA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4EB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB4EC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4ED, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4EE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB4EF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB4F0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB4F1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB4F2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB4F3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB4F4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4F5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB4F6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB4F7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB4F8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB4F9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB4FA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB4FB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB4FC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB4FD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB4FE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB4FF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB500, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB501, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB502, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB503, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB504, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB505, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB506, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB507, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB508, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB509, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB50A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB50B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB50C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB50D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB50E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB50F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB510, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB511, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB512, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB513, {0x00,0x00,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB514, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB515, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB516, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB517, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB518, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB519, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB51A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB51B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB51C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB51D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB51E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB51F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB520, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB521, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB522, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB523, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB524, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB525, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB526, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB527, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB528, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB529, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB52A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB52B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB52C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB52D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB52E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB52F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB530, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB531, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB532, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB533, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB534, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB535, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB536, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB537, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB538, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB539, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB53A, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB53B, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB53C, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB53D, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB53E, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB53F, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB540, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB541, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB542, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB543, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB544, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB545, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB546, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB547, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB548, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB549, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB54A, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB54B, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB54C, {0x00,0x00,0x7D,0x20,0x51,0x20,0x51,0x20,0x51,0x20,0x51,0x20,0x51,0xE0,0x51,0x20,0x51,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB54D, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB54E, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB54F, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB550, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB551, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB552, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB553, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB554, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB555, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB556, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB557, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB558, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB559, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB55A, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB55B, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB55C, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB55D, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB55E, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB55F, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB560, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB561, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB562, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB563, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB564, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB565, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB566, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB567, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB568, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x70,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB569, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB56A, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB56B, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB56C, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB56D, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB56E, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB56F, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB570, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB571, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB572, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB573, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB574, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB575, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB576, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB577, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB578, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB579, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB57A, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB57B, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB57C, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB57D, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB57E, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB57F, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB580, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB581, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB582, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB583, {0x00,0x00,0x7F,0x40,0x48,0x70,0x48,0x40,0x48,0x70,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB584, {0x00,0x00,0x7D,0x20,0x51,0x20,0x51,0xE0,0x51,0x20,0x51,0x20,0x51,0x20,0x51,0xE0,0x51,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB585, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB586, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB587, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB588, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB589, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB58A, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB58B, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB58C, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB58D, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB58E, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB58F, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB590, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB591, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB592, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB593, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB594, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB595, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB596, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB597, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB598, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB599, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB59A, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB59B, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB59C, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB59D, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB59E, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB59F, {0x00,0x00,0x7F,0x20,0x49,0x20,0x49,0xE0,0x49,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB5A0, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB5A1, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB5A2, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB5A3, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB5A4, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5A5, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB5A6, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB5A7, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5A8, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5A9, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB5AA, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5AB, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5AC, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB5AD, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5AE, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5AF, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB5B0, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5B1, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5B2, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB5B3, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB5B4, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB5B5, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB5B6, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB5B7, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB5B8, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5B9, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5BA, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB5BB, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB5BC, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xA0,0x50,0xA0,0x53,0xA0,0x50,0xA0,0x50,0xA0,0x50,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB5BD, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB5BE, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB5BF, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB5C0, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5C1, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB5C2, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB5C3, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5C4, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5C5, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB5C6, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5C7, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5C8, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB5C9, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5CA, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5CB, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB5CC, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5CD, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5CE, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB5CF, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB5D0, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB5D1, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5D2, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB5D3, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB5D4, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5D5, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5D6, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB5D7, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x4B,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB5D8, {0x00,0x00,0x7F,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x48,0x40,0x49,0xC0,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB5D9, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB5DA, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB5DB, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB5DC, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5DD, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB5DE, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB5DF, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5E0, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5E1, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB5E2, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5E3, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5E4, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB5E5, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5E6, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5E7, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB5E8, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5E9, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5EA, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB5EB, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB5EC, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB5ED, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB5EE, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB5EF, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB5F0, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5F1, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB5F2, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB5F3, {0x00,0x00,0x7F,0x40,0x49,0xC0,0x48,0x40,0x49,0xC0,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB5F4, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x53,0xA0,0x50,0xA0,0x50,0xA0,0x53,0xA0,0x50,0xA0,0x50,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB5F5, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB5F6, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB5F7, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB5F8, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5F9, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB5FA, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB5FB, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5FC, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5FD, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB5FE, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB5FF, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB600, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB601, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB602, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB603, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB604, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB605, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB606, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB607, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB608, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB609, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB60A, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB60B, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB60C, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB60D, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB60E, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB60F, {0x00,0x00,0x7E,0xA0,0x4B,0xA0,0x48,0xA0,0x4B,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB610, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB611, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB612, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB613, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB614, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB615, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB616, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB617, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB618, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB619, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB61A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB61B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB61C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB61D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB61E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB61F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB620, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB621, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB622, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB623, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB624, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB625, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB626, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB627, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB628, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB629, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB62A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB62B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB62C, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB62D, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB62E, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB62F, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB630, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB631, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB632, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB633, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB634, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB635, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB636, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB637, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB638, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB639, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB63A, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB63B, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB63C, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB63D, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB63E, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB63F, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB640, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB641, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB642, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB643, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB644, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB645, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB646, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB647, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB648, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x48,0xA0,0x48,0xA0,0x3E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB649, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB64A, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB64B, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB64C, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB64D, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB64E, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB64F, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB650, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB651, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB652, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB653, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB654, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB655, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB656, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB657, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB658, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB659, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB65A, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB65B, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB65C, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB65D, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB65E, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB65F, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB660, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB661, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB662, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x50,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB663, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB664, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB665, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB666, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB667, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB668, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB669, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB66A, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB66B, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB66C, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB66D, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB66E, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB66F, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB670, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB671, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB672, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB673, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB674, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB675, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB676, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB677, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB678, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB679, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB67A, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB67B, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB67C, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB67D, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB67E, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB67F, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB680, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB681, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB682, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB683, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB684, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB685, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB686, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB687, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB688, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB689, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB68A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB68B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB68C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB68D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB68E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB68F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB690, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB691, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB692, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB693, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB694, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB695, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB696, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB697, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB698, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB699, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB69A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB69B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB69C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xB69D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB69E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB69F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB6A0, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6A1, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB6A2, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB6A3, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6A4, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6A5, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB6A6, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6A7, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6A8, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB6A9, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6AA, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6AB, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB6AC, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6AD, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6AE, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB6AF, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB6B0, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB6B1, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB6B2, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB6B3, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB6B4, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6B5, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB6B6, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB6B7, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB6B8, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB6B9, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB6BA, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB6BB, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB6BC, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6BD, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB6BE, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB6BF, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6C0, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6C1, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB6C2, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6C3, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6C4, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB6C5, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6C6, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6C7, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB6C8, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6C9, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6CA, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB6CB, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB6CC, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB6CD, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB6CE, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB6CF, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB6D0, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6D1, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6D2, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0xC0,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB6D3, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB6D4, {0x00,0x00,0x7E,0xA0,0x48,0xA0,0x48,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xB6D5, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB6D6, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB6D7, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB6D8, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6D9, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB6DA, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB6DB, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6DC, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6DD, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB6DE, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6DF, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6E0, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB6E1, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6E2, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6E3, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB6E4, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6E5, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6E6, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB6E7, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB6E8, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB6E9, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6EA, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB6EB, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB6EC, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6ED, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6EE, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x51,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB6EF, {0x00,0x00,0x7C,0xA0,0x50,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB6F0, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB6F1, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB6F2, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB6F3, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB6F4, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6F5, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB6F6, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB6F7, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6F8, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6F9, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB6FA, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6FB, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB6FC, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB6FD, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6FE, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB6FF, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB700, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB701, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB702, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB703, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB704, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB705, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB706, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB707, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB708, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB709, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB70A, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB70B, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB70C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xB70D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB70E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB70F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB710, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB711, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB712, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB713, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB714, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB715, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB716, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB717, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB718, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB719, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB71A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB71B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB71C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB71D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB71E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB71F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB720, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB721, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB722, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB723, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB724, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB725, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB726, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB727, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB728, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB729, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB72A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB72B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB72C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB72D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB72E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB72F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB730, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB731, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB732, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB733, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB734, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB735, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB736, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB737, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB738, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB739, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB73A, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xB73B, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB73C, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB73D, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB73E, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB73F, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB740, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB741, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB742, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB743, {0x00,0x00,0x7B,0xC0,0x42,0x00,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB744, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB745, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB746, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB747, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB748, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB749, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB74A, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB74B, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB74C, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB74D, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB74E, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB74F, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB750, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB751, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB752, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB753, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB754, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB755, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB756, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB757, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB758, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB759, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB75A, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB75B, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB75C, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB75D, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB75E, {0x00,0x00,0x7E,0x40,0x48,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB75F, {0x00,0x00,0x7E,0x40,0x48,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB760, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB761, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB762, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB763, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB764, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB765, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB766, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB767, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB768, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB769, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB76A, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB76B, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB76C, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB76D, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB76E, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB76F, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB770, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB771, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB772, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB773, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB774, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB775, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB776, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB777, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB778, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB779, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB77A, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB77B, {0x00,0x00,0x7F,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB77C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB77D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB77E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB77F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB780, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB781, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB782, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB783, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB784, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB785, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB786, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB787, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB788, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB789, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB78A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB78B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB78C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB78D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB78E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB78F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB790, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB791, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB792, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB793, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB794, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB795, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB796, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB797, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB798, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0x20,0x7D,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB799, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB79A, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB79B, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB79C, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB79D, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB79E, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB79F, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB7A2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A4, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB7A5, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A6, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A7, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB7A8, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7A9, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7AA, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB7AB, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB7AC, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB7AD, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7AE, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB7AF, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB7B0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7B1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7B2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB7B3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB7B4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB7B5, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB7B6, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB7B7, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB7B8, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7B9, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB7BA, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB7BB, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7BC, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7BD, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB7BE, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7BF, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7C0, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB7C1, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7C2, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7C3, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB7C4, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7C5, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7C6, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB7C7, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB7C8, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB7C9, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB7CA, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB7CB, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB7CC, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7CD, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7CE, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB7CF, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB7D0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x7D,0x20,0x41,0x20,0x41,0x20,0x41,0xE0,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB7D1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB7D2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB7D3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB7D4, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7D5, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB7D6, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB7D7, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7D8, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7D9, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB7DA, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7DB, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7DC, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB7DD, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7DE, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7DF, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB7E0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7E1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7E2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB7E3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB7E4, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB7E5, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7E6, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB7E7, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB7E8, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7E9, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7EA, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x41,0x20,0x3D,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB7EB, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB7EC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB7ED, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB7EE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB7EF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB7F0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7F1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB7F2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB7F3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7F4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7F5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB7F6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7F7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7F8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB7F9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7FA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB7FB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB7FC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7FD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB7FE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB7FF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB800, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB801, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB802, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB803, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB804, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB805, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB806, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB807, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB808, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB809, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB80A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB80B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB80C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB80D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB80E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB80F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB810, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB811, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB812, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB813, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB814, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB815, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB816, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB817, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB818, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB819, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB81A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB81B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB81C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB81D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB81E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB81F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB820, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB821, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB822, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB823, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB824, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x7E,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB825, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB826, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB827, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB828, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB829, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB82A, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB82B, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB82C, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB82D, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB82E, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB82F, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB830, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB831, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB832, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB833, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB834, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB835, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB836, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB837, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xB838, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB839, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB83A, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB83B, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB83C, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB83D, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB83E, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB83F, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB840, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB841, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB842, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB843, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB844, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB845, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB846, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB847, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB848, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB849, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB84A, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB84B, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB84C, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB84D, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB84E, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB84F, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB850, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB851, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB852, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB853, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB854, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB855, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB856, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB857, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB858, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB859, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB85A, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB85B, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x43,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB85C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB85D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB85E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB85F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB860, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB861, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB862, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB863, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB864, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB865, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB866, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB867, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB868, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB869, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB86A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB86B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB86C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB86D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB86E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB86F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB870, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB871, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB872, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB873, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB874, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB875, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB876, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB877, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB878, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB879, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB87A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB87B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB87C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB87D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB87E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB87F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB880, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB881, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB882, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB883, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB884, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB885, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB886, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB887, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB888, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB889, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB88A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB88B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB88C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB88D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB88E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB88F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB890, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB891, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB892, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB893, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB894, {0x00,0x00,0x7E,0xA0,0x02,0xA0,0x7E,0xA0,0x40,0xA0,0x40,0xE0,0x3E,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xB895, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB896, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB897, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xB898, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB899, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB89A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x40,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB89B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB89C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB89D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB89E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB89F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8A0, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB8A1, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xB8A2, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8A3, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB8A4, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8A5, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8A6, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x24,0x00,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB8A7, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB8A8, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB8A9, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8AA, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB8AB, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB8AC, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8AD, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8AE, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB8AF, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB8B0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB8B1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB8B2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB8B3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB8B4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8B5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB8B6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB8B7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8B8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8B9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB8BA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8BB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8BC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB8BD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8BE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB8BF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB8C0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8C1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8C2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB8C3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB8C4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB8C5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB8C6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB8C7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB8C8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8C9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB8CA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8CB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB8CC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB8CD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB8CE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB8CF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB8D0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8D1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB8D2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB8D3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8D4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8D5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB8D6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8D7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8D8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB8D9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8DA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8DB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB8DC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8DD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8DE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB8DF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB8E0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB8E1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB8E2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB8E3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB8E4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8E5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8E6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB8E7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB8E8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xB8E9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB8EA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB8EB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB8EC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8ED, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB8EE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB8EF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB8F2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB8F5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB8F8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8F9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x44,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB8FA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x4C,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB8FB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xB8FC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB8FD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB8FE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB8FF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB900, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB901, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB902, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB903, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB904, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB905, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB906, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB907, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB908, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB909, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB90A, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB90B, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB90C, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB90D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB90E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB90F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB910, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB911, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB912, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB913, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB914, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB915, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB916, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB917, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB918, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB919, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB91A, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB91B, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB91C, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB91D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB91E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB91F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB920, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xB921, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB922, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB923, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xB924, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x30,0x20,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB925, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB926, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xE0,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB927, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB928, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB929, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB92A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB92B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB92C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB92D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xB92E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB92F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB930, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB931, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x30,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB932, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x34,0xA0,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB933, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB934, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB935, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB936, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB937, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB938, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB939, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB93A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB93B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB93C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xB93D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB93E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB93F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB940, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB941, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB942, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB943, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB944, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB945, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB946, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB947, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB948, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB949, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB94A, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB94B, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB94C, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB94D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB94E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB94F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB950, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB951, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB952, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB953, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB954, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB955, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB956, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB957, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB958, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xB959, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB95A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB95B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB95C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB95D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB95E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB95F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB960, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB961, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB962, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB963, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB964, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB965, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB966, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB967, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB968, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB969, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x51,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB96A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x59,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB96B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xB96C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB96D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB96E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB96F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB970, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB971, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB972, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB973, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB974, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xB975, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB976, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB977, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xB978, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB979, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB97A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB97B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB97C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB97D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xB97E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB97F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB980, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB981, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB982, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x70,0x00,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB983, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB984, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB985, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xB986, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xB987, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xB988, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xB989, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xB98A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB98B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xB98C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB98D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xB98E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xB98F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xB990, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB991, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB992, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB993, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB994, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB995, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB996, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB997, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB998, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB999, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB99A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB99B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB99C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB99D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB99E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB99F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB9A0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9A1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9A2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x24,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB9A3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9A4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB9A5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB9A6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB9A7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xB9A8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9A9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9AA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xB9AB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB9AC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB9AD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB9AE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB9AF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB9B0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9B1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB9B2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB9B3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9B4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9B5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB9B6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9B7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9B8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB9B9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9BA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9BB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB9BC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9BD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9BE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB9BF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB9C0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB9C1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB9C2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9C3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9C4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9C5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9C6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB9C7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB9C8, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB9C9, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xB9CA, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xB9CB, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB9CC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9CD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xB9CE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xB9CF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9D0, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9D1, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xB9D2, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9D3, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9D4, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB9D5, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9D6, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9D7, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xB9D8, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9D9, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9DA, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xB9DB, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xB9DC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xB9DD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xB9DE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9DF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9E0, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9E1, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9E2, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB9E3, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xB9E4, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0x20,0x45,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x45,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xB9E5, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xB9E6, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xB9E7, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xB9E8, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9E9, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xB9EA, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xB9EB, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9EC, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9ED, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xB9EE, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9EF, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9F0, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB9F1, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9F2, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9F3, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xB9F4, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9F5, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9F6, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xB9F7, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xB9F8, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xB9F9, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xB9FA, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9FB, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xB9FC, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9FD, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xB9FE, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xB9FF, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBA00, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBA01, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBA02, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBA03, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBA04, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA05, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBA06, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBA07, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA08, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA09, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBA0A, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA0B, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA0C, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA0D, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA0E, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA0F, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBA10, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA11, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA12, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBA13, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBA14, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBA15, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBA16, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA17, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA18, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA19, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA1A, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBA1B, {0x00,0x00,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBA1C, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x45,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xBA1D, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBA1E, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBA1F, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBA20, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA21, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBA22, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBA23, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA24, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA25, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBA26, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA27, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA28, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA29, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA2A, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA2B, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBA2C, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA2D, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA2E, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA2F, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBA30, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBA31, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA32, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA33, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA34, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA35, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA36, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBA37, {0x00,0x00,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBA38, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBA39, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBA3A, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBA3B, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBA3C, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA3D, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBA3E, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBA3F, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA40, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA41, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBA42, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA43, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA44, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA45, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA46, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA47, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBA48, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA49, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA4A, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBA4B, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBA4C, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBA4D, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBA4E, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA4F, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA50, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA51, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA52, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBA53, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBA54, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBA55, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBA56, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBA57, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBA58, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA59, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBA5A, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBA5B, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA5C, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA5D, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBA5E, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA5F, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA60, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA61, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA62, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA63, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBA64, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA65, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA66, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA67, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBA68, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBA69, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA6A, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA6B, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA6C, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA6D, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA6E, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBA6F, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBA70, {0x00,0x00,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBA71, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBA72, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBA73, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBA74, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA75, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBA76, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBA77, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA78, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA79, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBA7A, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA7B, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA7C, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA7D, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA7E, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA7F, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBA80, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA81, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA82, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBA83, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBA84, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBA85, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBA86, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA87, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBA88, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA89, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBA8A, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBA8B, {0x00,0x00,0x7E,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBA8C, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBA8D, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBA8E, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBA8F, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBA90, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA91, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBA92, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBA93, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA94, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA95, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBA96, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA97, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA98, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA99, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA9A, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA9B, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBA9C, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA9D, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBA9E, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBA9F, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBAA0, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBAA1, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBAA2, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBAA3, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBAA4, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAA5, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAA6, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBAA7, {0x00,0x00,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBAA8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBAA9, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBAAA, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBAAB, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBAAC, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAAD, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBAAE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBAAF, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB0, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB1, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBAB2, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB3, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB4, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBAB5, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB6, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB7, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBAB8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAB9, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBABA, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBABB, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBABC, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBABD, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBABE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBABF, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBAC0, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAC1, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBAC2, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBAC3, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBAC4, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBAC5, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBAC6, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBAC7, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBAC8, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBAC9, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBACA, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBACB, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBACC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBACD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBACE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBACF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBAD0, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBAD1, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAD2, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAD3, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBAD4, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBAD5, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBAD6, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBAD7, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBAD8, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBAD9, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBADA, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBADB, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBADC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBADD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBADE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBADF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBAE0, {0x00,0x00,0x7E,0xA0,0x42,0xA0,0x42,0xA0,0x42,0xA0,0x3E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBAE1, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBAE2, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBAE3, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBAE4, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAE5, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBAE6, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBAE7, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAE8, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAE9, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBAEA, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAEB, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAEC, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBAED, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAEE, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAEF, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBAF0, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAF1, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAF2, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBAF3, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBAF4, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBAF5, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBAF6, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBAF7, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBAF8, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAF9, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBAFA, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBAFB, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3C,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBAFC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBAFD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBAFE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBAFF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBB00, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB01, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBB02, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB03, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB04, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB05, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBB06, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB07, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB08, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB09, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB0A, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB0B, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB0C, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB0D, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB0E, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB0F, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBB10, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBB11, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBB12, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB13, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB14, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB15, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB16, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBB17, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBB18, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBB19, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBB1A, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBB1B, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBB1C, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB1D, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBB1E, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBB1F, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB20, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB21, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBB22, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB23, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB24, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBB25, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB26, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB27, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBB28, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB29, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB2A, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBB2B, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBB2C, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBB2D, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBB2E, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBB2F, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBB30, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB31, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB32, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBB33, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBB34, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xBB35, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBB36, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBB37, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBB38, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB39, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBB3A, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBB3B, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB3C, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB3D, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBB3E, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB3F, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB40, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBB41, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB42, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB43, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBB44, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB45, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB46, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBB47, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBB48, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBB49, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBB4A, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBB4B, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBB4C, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB4D, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBB4E, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBB4F, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBB50, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xBB51, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBB52, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBB53, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBB54, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB55, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBB56, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB57, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB58, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB59, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBB5A, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB5B, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB5C, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB5D, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB5E, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB5F, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB60, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB61, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB62, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB63, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBB64, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBB65, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBB66, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB67, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB68, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB69, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB6A, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBB6B, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBB6C, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xBB6D, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBB6E, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBB6F, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBB70, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB71, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBB72, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBB73, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB74, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB75, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBB76, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB77, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB78, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB79, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB7A, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB7B, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB7C, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB7D, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB7E, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB7F, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB80, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBB81, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB82, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB83, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB84, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB85, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB86, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBB87, {0x00,0x00,0x7C,0xA0,0x44,0xA0,0x3D,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBB88, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xBB89, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBB8A, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBB8B, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBB8C, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB8D, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBB8E, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB8F, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB90, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB91, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBB92, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB93, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB94, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB95, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB96, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBB97, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBB98, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB99, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBB9A, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBB9B, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBB9C, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBB9D, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBB9E, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBB9F, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBBA0, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBA1, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBA2, {0x00,0x00,0x7C,0x40,0x44,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBBA3, {0x00,0x00,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBBA4, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xBBA5, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBBA6, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBBA7, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBBA8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBA9, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBBAA, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBBAB, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBAC, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBAD, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBBAE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBAF, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBB0, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBBB1, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBB2, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBB3, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBBB4, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBB5, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBB6, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBBB7, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBBB8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBBB9, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBBBA, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBBBB, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBBBC, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBBD, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBBE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBBBF, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBBC0, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBBC1, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBBC2, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBBC3, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBBC4, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBC5, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBBC6, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBBC7, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBC8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBC9, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBBCA, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBCB, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBCC, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBBCD, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBCE, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBCF, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBBD0, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBD1, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBD2, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBBD3, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBBD4, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBBD5, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBBD6, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBBD7, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBBD8, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBD9, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBBDA, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBBDB, {0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBBDC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBBDD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBBDE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBBDF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBBE0, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBE1, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBBE2, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBBE3, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBE4, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBE5, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBBE6, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBE7, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBE8, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBBE9, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBBEA, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBBEB, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBBEC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBED, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBEE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBBEF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBBF0, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBBF1, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBBF2, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBBF3, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBBF4, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBF5, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBF6, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBBF7, {0x00,0x00,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBBF8, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBBF9, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBBFA, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBBFB, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBBFC, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBBFD, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBBFE, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBBFF, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC00, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC01, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBC02, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC03, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC04, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC05, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC06, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC07, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBC08, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC09, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC0A, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBC0B, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBC0C, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBC0D, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBC0E, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC0F, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC10, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC11, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC12, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBC13, {0x00,0x00,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBC14, {0x00,0x00,0x42,0x40,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x70,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBC15, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBC16, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBC17, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBC18, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC19, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBC1A, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBC1B, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC1C, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC1D, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBC1E, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC1F, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC20, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC21, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC22, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC23, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBC24, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC25, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC26, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBC27, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBC28, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBC29, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBC2A, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC2B, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC2C, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC2D, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC2E, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBC2F, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x70,0x42,0x40,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBC30, {0x00,0x00,0x45,0x20,0x45,0x20,0x45,0x20,0x7D,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xBC31, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBC32, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBC33, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBC34, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC35, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBC36, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBC37, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC38, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC39, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBC3A, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC3B, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC3C, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC3D, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC3E, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC3F, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBC40, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC41, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC42, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC43, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBC44, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBC45, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC46, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC47, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC48, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC49, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC4A, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBC4B, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBC4C, {0x00,0x00,0x42,0x40,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBC4D, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBC4E, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBC4F, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBC50, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC51, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBC52, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBC53, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC54, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC55, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBC56, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC57, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC58, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC59, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC5A, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC5B, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBC5C, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC5D, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC5E, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBC5F, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBC60, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBC61, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBC62, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC63, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC64, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC65, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC66, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBC67, {0x00,0x00,0x42,0x40,0x42,0x70,0x7E,0x40,0x42,0x70,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBC68, {0x00,0x00,0x45,0x20,0x45,0x20,0x45,0xE0,0x7D,0x20,0x45,0x20,0x45,0x20,0x45,0xE0,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xBC69, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBC6A, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBC6B, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBC6C, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC6D, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBC6E, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBC6F, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC70, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC71, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBC72, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC73, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC74, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC75, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC76, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC77, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBC78, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC79, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC7A, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC7B, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBC7C, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBC7D, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC7E, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC7F, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC80, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC81, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC82, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBC83, {0x00,0x00,0x45,0x20,0x45,0x20,0x7D,0xE0,0x45,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBC84, {0x00,0x00,0x42,0x40,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBC85, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBC86, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBC87, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBC88, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC89, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBC8A, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBC8B, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC8C, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC8D, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBC8E, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC8F, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC90, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBC91, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC92, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBC93, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBC94, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC95, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC96, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBC97, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBC98, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBC99, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBC9A, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC9B, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBC9C, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC9D, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBC9E, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBC9F, {0x00,0x00,0x42,0x40,0x42,0x40,0x7F,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBCA0, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x44,0xA0,0x7C,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBCA1, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBCA2, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBCA3, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBCA4, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCA5, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBCA6, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBCA7, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCA8, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCA9, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBCAA, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCAB, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCAC, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBCAD, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCAE, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCAF, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBCB0, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCB1, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCB2, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBCB3, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBCB4, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBCB5, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCB6, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBCB7, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBCB8, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCB9, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCBA, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBCBB, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x7F,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBCBC, {0x00,0x00,0x42,0x40,0x42,0x40,0x43,0xC0,0x7E,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBCBD, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBCBE, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBCBF, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBCC0, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCC1, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBCC2, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBCC3, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCC4, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCC5, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBCC6, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCC7, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCC8, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBCC9, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCCA, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCCB, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBCCC, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCCD, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCCE, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBCCF, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBCD0, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBCD1, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBCD2, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBCD3, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBCD4, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCD5, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCD6, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBCD7, {0x00,0x00,0x42,0x40,0x43,0xC0,0x7E,0x40,0x43,0xC0,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBCD8, {0x00,0x00,0x44,0xA0,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBCD9, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBCDA, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBCDB, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBCDC, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCDD, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBCDE, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBCDF, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE0, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE1, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBCE2, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE3, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE4, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBCE5, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE6, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE7, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBCE8, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCE9, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCEA, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBCEB, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBCEC, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBCED, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBCEE, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBCEF, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBCF0, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCF1, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBCF2, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBCF3, {0x00,0x00,0x44,0xA0,0x47,0xA0,0x7C,0xA0,0x47,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBCF4, {0x00,0x00,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBCF5, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBCF6, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBCF7, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBCF8, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBCF9, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBCFA, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBCFB, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBCFC, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBCFD, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBCFE, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBCFF, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD00, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBD01, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD02, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD03, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBD04, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD05, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD06, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBD07, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBD08, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBD09, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBD0A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBD0B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBD0C, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD0D, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD0E, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBD0F, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBD10, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD11, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD12, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBD13, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBD14, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD15, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBD16, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBD17, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD18, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD19, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBD1A, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD1B, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD1C, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBD1D, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD1E, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD1F, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBD20, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD21, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD22, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBD23, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBD24, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBD25, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBD26, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD27, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD28, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD29, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD2A, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBD2B, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBD2C, {0x00,0x00,0x42,0xA0,0x42,0xA0,0x7E,0xA0,0x42,0xA0,0x3E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBD2D, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBD2E, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBD2F, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBD30, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD31, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBD32, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBD33, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD34, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD35, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBD36, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD37, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD38, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBD39, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD3A, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD3B, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBD3C, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD3D, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD3E, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBD3F, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD40, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBD41, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD42, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD43, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD44, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD45, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD46, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBD47, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBD48, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD49, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD4A, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBD4B, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBD4C, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD4D, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBD4E, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBD4F, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD50, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD51, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBD52, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD53, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD54, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBD55, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD56, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBD57, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBD58, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD59, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD5A, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBD5B, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBD5C, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBD5D, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBD5E, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD5F, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBD60, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD61, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBD62, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBD63, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBD64, {0x00,0x00,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBD65, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD66, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBD67, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBD68, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD69, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBD6A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBD6B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD6C, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD6D, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBD6E, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD6F, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD70, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBD71, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD72, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD73, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBD74, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD75, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD76, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBD77, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBD78, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBD79, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBD7A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBD7B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBD7C, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD7D, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD7E, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBD7F, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBD80, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xBD81, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD82, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBD83, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBD84, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD85, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBD86, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBD87, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD88, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD89, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBD8A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD8B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD8C, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBD8D, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD8E, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD8F, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBD90, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD91, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD92, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBD93, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBD94, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBD95, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBD96, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBD97, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBD98, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD99, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBD9A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBD9B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBD9C, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xBD9D, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBD9E, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBD9F, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBDA0, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDA1, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBDA2, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBDA3, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDA4, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDA5, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBDA6, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDA7, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDA8, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBDA9, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDAA, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDAB, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBDAC, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDAD, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDAE, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBDAF, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBDB0, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBDB1, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBDB2, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDB3, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDB4, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDB5, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDB6, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBDB7, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBDB8, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x44,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xBDB9, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBDBA, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBDBB, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBDBC, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDBD, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBDBE, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBDBF, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC0, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC1, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBDC2, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC3, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC4, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBDC5, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC6, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC7, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBDC8, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDC9, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDCA, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBDCB, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDCC, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBDCD, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDCE, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDCF, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDD0, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDD1, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDD2, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x45,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBDD3, {0x00,0x00,0x44,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBDD4, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xBDD5, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBDD6, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBDD7, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBDD8, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDD9, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBDDA, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBDDB, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDDC, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDDD, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBDDE, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDDF, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDE0, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBDE1, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDE2, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBDE3, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBDE4, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDE5, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDE6, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBDE7, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBDE8, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBDE9, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBDEA, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDEB, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBDEC, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDED, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBDEE, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBDEF, {0x00,0x00,0x44,0x40,0x7C,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBDF0, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xBDF1, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBDF2, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBDF3, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBDF4, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDF5, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBDF6, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBDF7, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDF8, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDF9, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBDFA, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDFB, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDFC, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBDFD, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDFE, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBDFF, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBE00, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE01, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE02, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBE03, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBE04, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBE05, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBE06, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBE07, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBE08, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE09, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE0A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBE0B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0x80,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBE0C, {0x00,0x00,0x40,0x40,0x40,0x40,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBE0D, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE0E, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBE0F, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBE10, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE11, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBE12, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBE13, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE14, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE15, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBE16, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE17, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE18, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBE19, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE1A, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE1B, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBE1C, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE1D, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE1E, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBE1F, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBE20, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBE21, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBE22, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBE23, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBE24, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE25, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBE26, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBE27, {0x00,0x00,0x40,0x40,0x7F,0xC0,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBE28, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE29, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE2A, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBE2B, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBE2C, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE2D, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBE2E, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBE2F, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE30, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE31, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBE32, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE33, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE34, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBE35, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE36, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE37, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBE38, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE39, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE3A, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBE3B, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBE3C, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBE3D, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBE3E, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE3F, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE40, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE41, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE42, {0x00,0x00,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBE43, {0x00,0x00,0x42,0x40,0x7E,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBE44, {0x00,0x00,0x42,0x40,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE45, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE46, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBE47, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBE48, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE49, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBE4A, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBE4B, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE4C, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE4D, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBE4E, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE4F, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE50, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBE51, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE52, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE53, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBE54, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE55, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE56, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBE57, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBE58, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBE59, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBE5A, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE5B, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE5C, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE5D, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE5E, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBE5F, {0x00,0x00,0x42,0x40,0x42,0x40,0x7E,0x40,0x42,0x40,0x3E,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBE60, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE61, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE62, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBE63, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBE64, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE65, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBE66, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBE67, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE68, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE69, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBE6A, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE6B, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE6C, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBE6D, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE6E, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE6F, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBE70, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE71, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE72, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBE73, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBE74, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBE75, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBE76, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE77, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE78, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE79, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE7A, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBE7B, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBE7C, {0x00,0x00,0xA9,0x20,0xA9,0x20,0xF9,0x20,0xA9,0x20,0xA9,0x20,0xA9,0xE0,0xA9,0x20,0xF9,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xBE7D, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBE7E, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBE7F, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBE80, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE81, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBE82, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBE83, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE84, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE85, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBE86, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE87, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE88, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBE89, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE8A, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE8B, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBE8C, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE8D, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE8E, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBE8F, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBE90, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBE91, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE92, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE93, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBE94, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE95, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBE96, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBE97, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBE98, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x70,0x55,0x40,0x55,0x40,0x55,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE99, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBE9A, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBE9B, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBE9C, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBE9D, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBE9E, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBE9F, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEA0, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEA1, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBEA2, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEA3, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEA4, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBEA5, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEA6, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEA7, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBEA8, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEA9, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEAA, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBEAB, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xBEAC, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBEAD, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBEAE, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBEAF, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBEB0, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEB1, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEB2, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBEB3, {0x00,0x00,0x55,0x40,0x55,0x70,0x77,0x40,0x55,0x70,0x33,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBEB4, {0x00,0x00,0xA9,0x20,0xA9,0x20,0xF9,0xE0,0xA9,0x20,0xA9,0x20,0xA9,0x20,0xA9,0xE0,0xF9,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xBEB5, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBEB6, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBEB7, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBEB8, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEB9, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBEBA, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBEBB, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEBC, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEBD, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBEBE, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEBF, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEC0, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBEC1, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEC2, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEC3, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBEC4, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEC5, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEC6, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBEC7, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBEC8, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBEC9, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBECA, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBECB, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBECC, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBECD, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBECE, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBECF, {0x00,0x00,0x55,0x20,0x55,0x20,0x7D,0xE0,0x55,0x20,0x3D,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBED0, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0xC0,0x55,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBED1, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBED2, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBED3, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBED4, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBED5, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBED6, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBED7, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBED8, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBED9, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBEDA, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEDB, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEDC, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBEDD, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEDE, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEDF, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBEE0, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEE1, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEE2, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBEE3, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBEE4, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBEE5, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBEE6, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBEE7, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBEE8, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEE9, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBEEA, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBEEB, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBEEC, {0x00,0x00,0xA8,0xA0,0xA8,0xA0,0xF8,0xA0,0xA8,0xA0,0xAB,0xA0,0xA8,0xA0,0xA8,0xA0,0xF8,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBEED, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBEEE, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBEEF, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBEF0, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEF1, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBEF2, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBEF3, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEF4, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEF5, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBEF6, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEF7, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEF8, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBEF9, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEFA, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEFB, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBEFC, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEFD, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBEFE, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBEFF, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBF00, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBF01, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF02, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF03, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF04, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF05, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF06, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBF07, {0x00,0x00,0x54,0xA0,0x54,0xA0,0x7F,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBF08, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0xC0,0x55,0x40,0x55,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF09, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF0A, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBF0B, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBF0C, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF0D, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBF0E, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xBF0F, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF10, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF11, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBF12, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF13, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF14, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF15, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF16, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF17, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBF18, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF19, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF1A, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xBF1B, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBF1C, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBF1D, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBF1E, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF1F, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF20, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF21, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF22, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBF23, {0x00,0x00,0x55,0x40,0x55,0xC0,0x77,0x40,0x55,0xC0,0x33,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBF24, {0x00,0x00,0xA8,0xA0,0xA8,0xA0,0xFB,0xA0,0xA8,0xA0,0xA8,0xA0,0xAB,0xA0,0xA8,0xA0,0xF8,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBF25, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBF26, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBF27, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBF28, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF29, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBF2A, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBF2B, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF2C, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF2D, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBF2E, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF2F, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF30, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF31, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF32, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF33, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBF34, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF35, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF36, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF37, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xBF38, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xBF39, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF3A, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF3B, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF3C, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF3D, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF3E, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBF3F, {0x00,0x00,0x54,0xA0,0x57,0xA0,0x7C,0xA0,0x57,0xA0,0x3C,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBF40, {0x00,0x00,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x39,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBF41, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF42, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBF43, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBF44, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF45, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBF46, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBF47, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF48, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF49, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBF4A, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF4B, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF4C, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBF4D, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF4E, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF4F, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBF50, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF51, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF52, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBF53, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBF54, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBF55, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBF56, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBF57, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBF58, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF59, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBF5A, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBF5B, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBF5C, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x70,0x33,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF5D, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF5E, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBF5F, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBF60, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF61, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBF62, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBF63, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF64, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF65, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBF66, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF67, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF68, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF69, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF6A, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF6B, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBF6C, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF6D, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF6E, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF6F, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBF70, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBF71, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBF72, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF73, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF74, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF75, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF76, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBF77, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBF78, {0x00,0x00,0x52,0xA0,0x52,0xA0,0x7E,0xA0,0x52,0xA0,0x52,0xE0,0x3E,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xBF79, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xBF7A, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xBF7B, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBF7C, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF7D, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xBF7E, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xBF7F, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF80, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF81, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xBF82, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF83, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF84, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF85, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF86, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF87, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBF88, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF89, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF8A, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBF8B, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF8C, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBF8D, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF8E, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF8F, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBF90, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF91, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBF92, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xE0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBF93, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBF94, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF95, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBF96, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBF97, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBF98, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF99, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBF9A, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBF9B, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF9C, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF9D, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBF9E, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBF9F, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFA0, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBFA1, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBFA2, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBFA3, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBFA4, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFA5, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFA6, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBFA7, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBFA8, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBFA9, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBFAA, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBFAB, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBFAC, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFAD, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFAE, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xBFAF, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xBFB0, {0x00,0x00,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x39,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xBFB1, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBFB2, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBFB3, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBFB4, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFB5, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBFB6, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBFB7, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFB8, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFB9, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBFBA, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFBB, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFBC, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBFBD, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFBE, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFBF, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBFC0, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFC1, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFC2, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBFC3, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBFC4, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBFC5, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBFC6, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBFC7, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBFC8, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFC9, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFCA, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBFCB, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBFCC, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xBFCD, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBFCE, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBFCF, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xBFD0, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFD1, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xBFD2, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBFD3, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFD4, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFD5, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xBFD6, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFD7, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFD8, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBFD9, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFDA, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFDB, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xBFDC, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFDD, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFDE, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xBFDF, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBFE0, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xBFE1, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xBFE2, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xBFE3, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xBFE4, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFE5, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xBFE6, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xBFE7, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xBFE8, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xBFE9, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xBFEA, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xBFEB, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xBFEC, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFED, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xBFEE, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBFEF, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFF0, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFF1, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xBFF2, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFF3, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFF4, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBFF5, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xBFF6, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xBFF7, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xBFF8, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFF9, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xBFFA, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xBFFB, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xBFFC, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xBFFD, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xBFFE, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xBFFF, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC000, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC001, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC002, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC003, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC004, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x54,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xC005, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC006, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC007, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC008, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC009, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC00A, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC00B, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC00C, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC00D, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC00E, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC00F, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC010, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC011, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC012, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC013, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC014, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC015, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC016, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC017, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC018, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC019, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC01A, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC01B, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC01C, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC01D, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC01E, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x55,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC01F, {0x00,0x00,0x54,0xA0,0x7C,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC020, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC021, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC022, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC023, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC024, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC025, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC026, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC027, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC028, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC029, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC02A, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC02B, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC02C, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC02D, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC02E, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC02F, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC030, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC031, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC032, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC033, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC034, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC035, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC036, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC037, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC038, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC039, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC03A, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC03B, {0x00,0x00,0x54,0x40,0x7C,0x40,0x54,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC03C, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xC03D, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC03E, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC03F, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC040, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC041, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC042, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC043, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC044, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC045, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC046, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC047, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC048, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC049, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC04A, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC04B, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC04C, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC04D, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC04E, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC04F, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC050, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC051, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC052, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC053, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC054, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC055, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC056, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC057, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x31,0x80,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC058, {0x00,0x00,0x4A,0x40,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x4A,0x40,0x39,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC059, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC05A, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC05B, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC05C, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC05D, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC05E, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC05F, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC060, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC061, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC062, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC063, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC064, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC065, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC066, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC067, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC068, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC069, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC06A, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC06B, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC06C, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC06D, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC06E, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC06F, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC070, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC071, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC072, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x4A,0x40,0x39,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC073, {0x00,0x00,0x4A,0x40,0x7B,0xC0,0x31,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC074, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC075, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC076, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC077, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC078, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC079, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC07A, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC07B, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC07C, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC07D, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC07E, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC07F, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC080, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC081, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC082, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC083, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC084, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC085, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC086, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC087, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC088, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC089, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC08A, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC08B, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC08C, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC08D, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC08E, {0x00,0x00,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC08F, {0x00,0x00,0x55,0x40,0x77,0x40,0x32,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC090, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC091, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC092, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC093, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC094, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC095, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC096, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC097, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC098, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC099, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC09A, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC09B, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC09C, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC09D, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC09E, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC09F, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC0A0, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0A1, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0A2, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC0A3, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC0A4, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC0A5, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC0A6, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0A7, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0A8, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0A9, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0AA, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x55,0x40,0x33,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC0AB, {0x00,0x00,0x55,0x40,0x55,0x40,0x77,0x40,0x55,0x40,0x33,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC0AC, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x70,0x14,0x40,0x22,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC0AD, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC0AE, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC0AF, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC0B0, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0B1, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC0B2, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC0B3, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0B4, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0B5, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC0B6, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0B7, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0B8, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC0B9, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0BA, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0BB, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC0BC, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0BD, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0BE, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC0BF, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC0C0, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC0C1, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC0C2, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0C3, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0C4, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0C5, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0C6, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC0C7, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC0C8, {0x00,0x00,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x29,0x20,0x29,0xE0,0x45,0x20,0x45,0x20,0x83,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC0C9, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC0CA, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC0CB, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC0CC, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0CD, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC0CE, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC0CF, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D0, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D1, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC0D2, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D3, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D4, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC0D5, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D6, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D7, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC0D8, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0D9, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0DA, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC0DB, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC0DC, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC0DD, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0DE, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0DF, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0E0, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0E1, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0E2, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC0E3, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC0E4, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC0E5, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC0E6, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC0E7, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC0E8, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0E9, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC0EA, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC0EB, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0EC, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0ED, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC0EE, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0EF, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0F0, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC0F1, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0F2, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC0F3, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC0F4, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0F5, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0F6, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC0F7, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC0F8, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC0F9, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC0FA, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0FB, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC0FC, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0FD, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC0FE, {0x00,0x00,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC0FF, {0x00,0x00,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC100, {0x00,0x00,0x11,0x20,0x11,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x29,0x20,0x45,0xE0,0x45,0x20,0x83,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC101, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC102, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC103, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC104, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC105, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC106, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC107, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC108, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC109, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC10A, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC10B, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC10C, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC10D, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC10E, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC10F, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC110, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC111, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC112, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC113, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC114, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC115, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC116, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC117, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC118, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC119, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC11A, {0x00,0x00,0x11,0x20,0x11,0x20,0x19,0xE0,0x25,0x20,0x43,0x20,0x81,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC11B, {0x00,0x00,0x09,0x20,0x09,0x20,0x15,0xE0,0x23,0x20,0x43,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC11C, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x14,0x40,0x22,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC11D, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC11E, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC11F, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC120, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC121, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC122, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC123, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC124, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC125, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC126, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC127, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC128, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC129, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC12A, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC12B, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC12C, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC12D, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC12E, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC12F, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC130, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC131, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC132, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC133, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC134, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC135, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC136, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC137, {0x00,0x00,0x08,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC138, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x10,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x44,0xA0,0x82,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC139, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC13A, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC13B, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC13C, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC13D, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC13E, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC13F, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC140, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC141, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC142, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC143, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC144, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC145, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC146, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC147, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC148, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC149, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC14A, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC14B, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC14C, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC14D, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC14E, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC14F, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC150, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC151, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC152, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x1B,0xA0,0x24,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC153, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x17,0xA0,0x22,0xA0,0x42,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC154, {0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xC0,0x08,0x40,0x14,0x40,0x15,0xC0,0x22,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC155, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC156, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC157, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC158, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC159, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC15A, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC15B, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC15C, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC15D, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC15E, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC15F, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC160, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC161, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC162, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC163, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC164, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC165, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC166, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC167, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC168, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC169, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC16A, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC16B, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC16C, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC16D, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC16E, {0x00,0x00,0x08,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC16F, {0x00,0x00,0x08,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC170, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x44,0xA0,0x82,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC171, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC172, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC173, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC174, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC175, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC176, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC177, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC178, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC179, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC17A, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC17B, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC17C, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC17D, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC17E, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC17F, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC180, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC181, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC182, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC183, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC184, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC185, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC186, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC187, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC188, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC189, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC18A, {0x00,0x00,0x10,0xA0,0x13,0xA0,0x18,0xA0,0x27,0xA0,0x42,0xA0,0x80,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC18B, {0x00,0x00,0x08,0xA0,0x0B,0xA0,0x14,0xA0,0x23,0xA0,0x42,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC18C, {0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC18D, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC18E, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC18F, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC190, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC191, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC192, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC193, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC194, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC195, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC196, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC197, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC198, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC199, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC19A, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC19B, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC19C, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC19D, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC19E, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC19F, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC1A0, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC1A1, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC1A2, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC1A3, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC1A4, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC1A5, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC1A6, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC1A7, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC1A8, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC1A9, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC1AA, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC1AB, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC1AC, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1AD, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC1AE, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC1AF, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1B0, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1B1, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC1B2, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1B3, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1B4, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC1B5, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1B6, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1B7, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC1B8, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1B9, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1BA, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC1BB, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC1BC, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC1BD, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC1BE, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1BF, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1C0, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1C1, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1C2, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC1C3, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC1C4, {0x00,0x00,0x08,0xA0,0x08,0xA0,0x08,0xA0,0x14,0xA0,0x24,0xE0,0x42,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC1C5, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC1C6, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC1C7, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC1C8, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1C9, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC1CA, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC1CB, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1CC, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1CD, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC1CE, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1CF, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1D0, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC1D1, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1D2, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1D3, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC1D4, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1D5, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1D6, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC1D7, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1D8, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC1D9, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1DA, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1DB, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1DC, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1DD, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1DE, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC1DF, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC1E0, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC1E1, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC1E2, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC1E3, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC1E4, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1E5, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC1E6, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC1E7, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1E8, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1E9, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC1EA, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1EB, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1EC, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC1ED, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1EE, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC1EF, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC1F0, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1F1, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1F2, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC1F3, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC1F4, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC1F5, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC1F6, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1F7, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC1F8, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1F9, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC1FA, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC1FB, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC1FC, {0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC1FD, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC1FE, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC1FF, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC200, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC201, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC202, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC203, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC204, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC205, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC206, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC207, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC208, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC209, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC20A, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC20B, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC20C, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC20D, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC20E, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC20F, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC210, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC211, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC212, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC213, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC214, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC215, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC216, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC217, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC218, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xC219, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC21A, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC21B, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC21C, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC21D, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC21E, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC21F, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC220, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC221, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC222, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC223, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC224, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC225, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC226, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC227, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC228, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC229, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC22A, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC22B, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC22C, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC22D, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC22E, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC22F, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC230, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC231, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC232, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC233, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC234, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC235, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC236, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC237, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC238, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC239, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC23A, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC23B, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC23C, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC23D, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC23E, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC23F, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC240, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC241, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC242, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC243, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC244, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC245, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC246, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC247, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC248, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC249, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC24A, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC24B, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC24C, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC24D, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC24E, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC24F, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC250, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xC251, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC252, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC253, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC254, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC255, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC256, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC257, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC258, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC259, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC25A, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC25B, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC25C, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC25D, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC25E, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC25F, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC260, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC261, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC262, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC263, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC264, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC265, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC266, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC267, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC268, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC269, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC26A, {0x00,0x00,0x10,0xA0,0x10,0xA0,0x29,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC26B, {0x00,0x00,0x10,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC26C, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC26D, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC26E, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC26F, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC270, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC271, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC272, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC273, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC274, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC275, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC276, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC277, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC278, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC279, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC27A, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC27B, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC27C, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC27D, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC27E, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC27F, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC280, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC281, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC282, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC283, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC284, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC285, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC286, {0x00,0x00,0x10,0x40,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC287, {0x00,0x00,0x10,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC288, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0xC0,0x60,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xC289, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC28A, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC28B, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC28C, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC28D, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC28E, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC28F, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC290, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC291, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC292, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC293, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC294, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC295, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC296, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC297, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC298, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC299, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC29A, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC29B, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC29C, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC29D, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC29E, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC29F, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC2A0, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2A1, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2A2, {0x00,0x00,0x04,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC2A3, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC2A4, {0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0A,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC2A5, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2A6, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC2A7, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC2A8, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2A9, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC2AA, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC2AB, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2AC, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2AD, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC2AE, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2AF, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2B0, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC2B1, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2B2, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2B3, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC2B4, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2B5, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2B6, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC2B7, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC2B8, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC2B9, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC2BA, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC2BB, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC2BC, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2BD, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC2BE, {0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC2BF, {0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC2C0, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2C1, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2C2, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC2C3, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC2C4, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2C5, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC2C6, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC2C7, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2C8, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2C9, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC2CA, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2CB, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2CC, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC2CD, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC2CE, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC2CF, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC2D0, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2D1, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2D2, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC2D3, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC2D4, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC2D5, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC2D6, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC2D7, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC2D8, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2D9, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2DA, {0x00,0x00,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC2DB, {0x00,0x00,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC2DC, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2DD, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2DE, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC2DF, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC2E0, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2E1, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC2E2, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC2E3, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2E4, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2E5, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC2E6, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2E7, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2E8, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC2E9, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2EA, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC2EB, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC2EC, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2ED, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2EE, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC2EF, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC2F0, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC2F1, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC2F2, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC2F3, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC2F4, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2F5, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2F6, {0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC2F7, {0x00,0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC2F8, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2F9, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC2FA, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC2FB, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC2FC, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC2FD, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC2FE, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC2FF, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC300, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC301, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC302, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC303, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC304, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC305, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC306, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC307, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC308, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC309, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC30A, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC30B, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC30C, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC30D, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC30E, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC30F, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC310, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC311, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC312, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC313, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC314, {0x00,0x00,0x29,0x20,0x29,0x20,0x29,0x20,0x29,0x20,0x29,0x20,0x55,0xE0,0x55,0x20,0x95,0x20,0x23,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC315, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC316, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC317, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC318, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC319, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC31A, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC31B, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC31C, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC31D, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC31E, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC31F, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC320, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC321, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC322, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC323, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC324, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC325, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC326, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC327, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC328, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC329, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC32A, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC32B, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC32C, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC32D, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC32E, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC32F, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC330, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x70,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC331, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC332, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC333, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC334, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC335, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC336, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC337, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC338, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC339, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC33A, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC33B, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC33C, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC33D, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC33E, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC33F, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC340, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC341, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC342, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC343, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC344, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC345, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC346, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC347, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC348, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC349, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC34A, {0x00,0x00,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC34B, {0x00,0x00,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC34C, {0x00,0x00,0x29,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x55,0x20,0x55,0xE0,0x95,0x20,0x23,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC34D, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC34E, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC34F, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC350, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC351, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC352, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC353, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC354, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC355, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC356, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC357, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC358, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC359, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC35A, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC35B, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC35C, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC35D, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC35E, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC35F, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC360, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC361, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC362, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC363, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC364, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC365, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC366, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC367, {0x00,0x00,0x25,0x20,0x25,0x20,0x25,0xE0,0x5B,0x20,0x93,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC368, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC369, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC36A, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC36B, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC36C, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC36D, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC36E, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC36F, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC370, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC371, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC372, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC373, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC374, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC375, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC376, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC377, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC378, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC379, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC37A, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC37B, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC37C, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC37D, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC37E, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC37F, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC380, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC381, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC382, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC383, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC384, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x28,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x94,0xA0,0x22,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC385, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC386, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC387, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC388, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC389, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC38A, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC38B, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC38C, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC38D, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC38E, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC38F, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC390, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC391, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC392, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC393, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC394, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC395, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC396, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC397, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC398, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC399, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC39A, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC39B, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC39C, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC39D, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC39E, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC39F, {0x00,0x00,0x24,0xA0,0x24,0xA0,0x27,0xA0,0x5A,0xA0,0x92,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC3A0, {0x00,0x00,0x22,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC3A1, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC3A2, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC3A3, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC3A4, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3A5, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC3A6, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC3A7, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3A8, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3A9, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC3AA, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3AB, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3AC, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC3AD, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3AE, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3AF, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC3B0, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3B1, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3B2, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC3B3, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC3B4, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC3B5, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC3B6, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC3B7, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC3B8, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3B9, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3BA, {0x00,0x00,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC3BB, {0x00,0x00,0x22,0x40,0x23,0xC0,0x55,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC3BC, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x94,0xA0,0x22,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC3BD, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC3BE, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC3BF, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC3C0, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3C1, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC3C2, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC3C3, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3C4, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3C5, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC3C6, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3C7, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3C8, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC3C9, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3CA, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3CB, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC3CC, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3CD, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3CE, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC3CF, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC3D0, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC3D1, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3D2, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC3D3, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC3D4, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3D5, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC3D6, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC3D7, {0x00,0x00,0x24,0xA0,0x27,0xA0,0x24,0xA0,0x5B,0xA0,0x92,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC3D8, {0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x31,0x80,0x4A,0x40,0x84,0x20,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC3D9, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC3DA, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC3DB, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC3DC, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3DD, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC3DE, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC3DF, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E0, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E1, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC3E2, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E3, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E4, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC3E5, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E6, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E7, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC3E8, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3E9, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3EA, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC3EB, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC3EC, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC3ED, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC3EE, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC3EF, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC3F0, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3F1, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC3F2, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC3F3, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC3F4, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC3F5, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC3F6, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC3F7, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC3F8, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3F9, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC3FA, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC3FB, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3FC, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3FD, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC3FE, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC3FF, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC400, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC401, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC402, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC403, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC404, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC405, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC406, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC407, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC408, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC409, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC40A, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC40B, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC40C, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC40D, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC40E, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC40F, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC410, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC411, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC412, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC413, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC414, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC415, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC416, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC417, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC418, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC419, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC41A, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC41B, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC41C, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC41D, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC41E, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC41F, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC420, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC421, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC422, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC423, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC424, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC425, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC426, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC427, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC428, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC429, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC42A, {0x00,0x00,0x14,0xA0,0x14,0xA0,0x2C,0xE0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC42B, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x52,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC42C, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC42D, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC42E, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC42F, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC430, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC431, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC432, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC433, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC434, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC435, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC436, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC437, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC438, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC439, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC43A, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC43B, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC43C, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC43D, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC43E, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC43F, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC440, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC441, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC442, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC443, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC444, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC445, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC446, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC447, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC448, {0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x31,0x80,0x4A,0x40,0x84,0x20,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC449, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC44A, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC44B, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC44C, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC44D, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC44E, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC44F, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC450, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC451, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC452, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC453, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC454, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC455, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC456, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC457, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC458, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC459, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC45A, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC45B, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC45C, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC45D, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC45E, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC45F, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC460, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC461, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC462, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC463, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC464, {0x00,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xC465, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC466, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC467, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC468, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC469, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC46A, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC46B, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC46C, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC46D, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC46E, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC46F, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC470, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC471, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC472, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC473, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC474, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC475, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC476, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC477, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC478, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC479, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC47A, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC47B, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC47C, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC47D, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC47E, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC47F, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC480, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC481, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC482, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC483, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC484, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC485, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC486, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC487, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC488, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC489, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC48A, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC48B, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC48C, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC48D, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC48E, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC48F, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC490, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC491, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC492, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC493, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC494, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC495, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC496, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC497, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC498, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC499, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC49A, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC49B, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC49C, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xC49D, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC49E, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC49F, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC4A0, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4A1, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC4A2, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC4A3, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4A4, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4A5, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC4A6, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4A7, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4A8, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC4A9, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4AA, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4AB, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC4AC, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4AD, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4AE, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC4AF, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC4B0, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC4B1, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4B2, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC4B3, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC4B4, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4B5, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4B6, {0x00,0x00,0x28,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC4B7, {0x00,0x00,0x14,0xA0,0x2A,0xA0,0x53,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC4B8, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC4B9, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC4BA, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC4BB, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC4BC, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4BD, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC4BE, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC4BF, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4C0, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4C1, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC4C2, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4C3, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4C4, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC4C5, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4C6, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC4C7, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC4C8, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4C9, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4CA, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC4CB, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC4CC, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC4CD, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC4CE, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC4CF, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC4D0, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4D1, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC4D2, {0x00,0x00,0x28,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC4D3, {0x00,0x00,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC4D4, {0x00,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xC4D5, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC4D6, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC4D7, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC4D8, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4D9, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC4DA, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC4DB, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4DC, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4DD, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC4DE, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4DF, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4E0, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC4E1, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4E2, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4E3, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC4E4, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4E5, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4E6, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC4E7, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC4E8, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC4E9, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC4EA, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC4EB, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC4EC, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4ED, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4EE, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC4EF, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC4F0, {0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x31,0x80,0x4A,0x40,0x84,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC4F1, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC4F2, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC4F3, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC4F4, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4F5, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC4F6, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC4F7, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4F8, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4F9, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC4FA, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4FB, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4FC, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC4FD, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4FE, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC4FF, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC500, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC501, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC502, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC503, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC504, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC505, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC506, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC507, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC508, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC509, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC50A, {0x00,0x00,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC50B, {0x00,0x00,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC50C, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC50D, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC50E, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC50F, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC510, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC511, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC512, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC513, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC514, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC515, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC516, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC517, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC518, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC519, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC51A, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC51B, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC51C, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC51D, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC51E, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC51F, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC520, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC521, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC522, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC523, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC524, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC525, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC526, {0x00,0x00,0x12,0x40,0x12,0x40,0x2D,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC527, {0x00,0x00,0x12,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC528, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC529, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC52A, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC52B, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC52C, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC52D, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC52E, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC52F, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC530, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC531, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC532, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC533, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC534, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC535, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC536, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC537, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC538, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC539, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC53A, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC53B, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC53C, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC53D, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC53E, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC53F, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC540, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC541, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC542, {0x00,0x00,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC543, {0x00,0x00,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC544, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC545, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC546, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC547, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC548, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC549, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC54A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC54B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC54C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC54D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC54E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC54F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC550, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC551, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC552, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC553, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC554, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC555, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC556, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC557, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC558, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC559, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC55A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC55B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC55C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC55D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC55E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC55F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC560, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0x20,0x45,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x45,0x20,0x39,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC561, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC562, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC563, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC564, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC565, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC566, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC567, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC568, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC569, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC56A, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC56B, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC56C, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC56D, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC56E, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC56F, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC570, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC571, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC572, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC573, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC574, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC575, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC576, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC577, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC578, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC579, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC57A, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC57B, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC57C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC57D, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC57E, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC57F, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC580, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC581, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC582, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC583, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC584, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC585, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC586, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC587, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC588, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC589, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC58A, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC58B, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC58C, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC58D, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC58E, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC58F, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC590, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC591, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC592, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC593, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC594, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC595, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC596, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC597, {0x00,0x00,0x3C,0x40,0x42,0x70,0x42,0x40,0x42,0x70,0x3C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC598, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x45,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC599, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC59A, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC59B, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC59C, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC59D, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC59E, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC59F, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A0, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A1, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC5A2, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A3, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A4, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC5A5, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A6, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A7, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC5A8, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5A9, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5AA, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC5AB, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC5AC, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC5AD, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5AE, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC5AF, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC5B0, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5B1, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5B2, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC5B3, {0x00,0x00,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC5B4, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC5B5, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC5B6, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC5B7, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC5B8, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5B9, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC5BA, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC5BB, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5BC, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5BD, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC5BE, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5BF, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5C0, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC5C1, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5C2, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5C3, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC5C4, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5C5, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5C6, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC5C7, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC5C8, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC5C9, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC5CA, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC5CB, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC5CC, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5CD, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5CE, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC5CF, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC5D0, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC5D1, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC5D2, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC5D3, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC5D4, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5D5, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC5D6, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC5D7, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5D8, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5D9, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC5DA, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5DB, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5DC, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC5DD, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5DE, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5DF, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC5E0, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5E1, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5E2, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC5E3, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC5E4, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC5E5, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5E6, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC5E7, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC5E8, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5E9, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5EA, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC5EB, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC5EC, {0x00,0x00,0x3C,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC5ED, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC5EE, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC5EF, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC5F0, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5F1, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC5F2, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC5F3, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5F4, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5F5, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC5F6, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5F7, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5F8, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC5F9, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5FA, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC5FB, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC5FC, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5FD, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC5FE, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC5FF, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC600, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC601, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC602, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC603, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC604, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC605, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC606, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC607, {0x00,0x00,0x3C,0x40,0x43,0xC0,0x42,0x40,0x43,0xC0,0x3C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC608, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC609, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC60A, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC60B, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC60C, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC60D, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC60E, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC60F, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC610, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC611, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC612, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC613, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC614, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC615, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC616, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC617, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC618, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC619, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC61A, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC61B, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC61C, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC61D, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC61E, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC61F, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC620, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC621, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC622, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC623, {0x00,0x00,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC624, {0x00,0x00,0x1F,0x00,0x20,0x80,0x40,0x40,0x40,0x40,0x20,0x80,0x1F,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC625, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC626, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC627, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC628, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC629, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC62A, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC62B, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC62C, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC62D, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC62E, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC62F, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC630, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC631, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC632, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC633, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC634, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC635, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC636, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC637, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC638, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC639, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC63A, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC63B, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC63C, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC63D, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC63E, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC63F, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC640, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC641, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC642, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC643, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC644, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC645, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC646, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC647, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC648, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC649, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC64A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC64B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC64C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC64D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC64E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC64F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC650, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC651, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC652, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC653, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC654, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC655, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC656, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC657, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC658, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC659, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC65A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC65B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC65C, {0x00,0x00,0x3C,0xA0,0x42,0xA0,0x42,0xA0,0x42,0xA0,0x3C,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC65D, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC65E, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC65F, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC660, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC661, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC662, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC663, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC664, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC665, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC666, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC667, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC668, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC669, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC66A, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC66B, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC66C, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC66D, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC66E, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC66F, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC670, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC671, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC672, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC673, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC674, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC675, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC676, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xE0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC677, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x38,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC678, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC679, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC67A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC67B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC67C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC67D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC67E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC67F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC680, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC681, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC682, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC683, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC684, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC685, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC686, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC687, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC688, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC689, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC68A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC68B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC68C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC68D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC68E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC68F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC690, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC691, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC692, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC693, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC694, {0x00,0x00,0x1F,0x00,0x20,0x80,0x40,0x40,0x40,0x40,0x20,0x80,0x1F,0x00,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC695, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC696, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC697, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC698, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC699, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC69A, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC69B, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC69C, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC69D, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC69E, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC69F, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6A0, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC6A1, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6A2, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6A3, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC6A4, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6A5, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6A6, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC6A7, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC6A8, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC6A9, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC6AA, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC6AB, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC6AC, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6AD, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6AE, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC6AF, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC6B0, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xC6B1, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC6B2, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC6B3, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC6B4, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6B5, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC6B6, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC6B7, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6B8, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6B9, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC6BA, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6BB, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6BC, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC6BD, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6BE, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6BF, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC6C0, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6C1, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6C2, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC6C3, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC6C4, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC6C5, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC6C6, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC6C7, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC6C8, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6C9, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC6CA, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC6CB, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC6CC, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC6CD, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC6CE, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC6CF, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC6D0, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6D1, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC6D2, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC6D3, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6D4, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6D5, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC6D6, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6D7, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6D8, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC6D9, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6DA, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6DB, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC6DC, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6DD, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6DE, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC6DF, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC6E0, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC6E1, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC6E2, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC6E3, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC6E4, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6E5, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6E6, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0xC0,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC6E7, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC6E8, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xC6E9, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC6EA, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC6EB, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC6EC, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6ED, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC6EE, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC6EF, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F0, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F1, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC6F2, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F3, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F4, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC6F5, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F6, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F7, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC6F8, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6F9, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC6FA, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC6FB, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC6FC, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC6FD, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC6FE, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC6FF, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC700, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC701, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC702, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x45,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC703, {0x00,0x00,0x38,0xA0,0x44,0xA0,0x39,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC704, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC705, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC706, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC707, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC708, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC709, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC70A, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC70B, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC70C, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC70D, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC70E, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC70F, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC710, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC711, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC712, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC713, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC714, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC715, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC716, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC717, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC718, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC719, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC71A, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC71B, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC71C, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC71D, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC71E, {0x00,0x00,0x38,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC71F, {0x00,0x00,0x38,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC720, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xC721, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC722, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC723, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC724, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC725, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC726, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC727, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC728, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC729, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC72A, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC72B, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC72C, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC72D, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC72E, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC72F, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC730, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC731, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC732, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC733, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC734, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC735, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC736, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC737, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC738, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC739, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC73A, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC73B, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC73C, {0x00,0x00,0x1F,0x00,0x20,0x80,0x40,0x40,0x40,0x40,0x20,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC73D, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC73E, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC73F, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC740, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC741, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC742, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC743, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC744, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC745, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC746, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC747, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC748, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC749, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC74A, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC74B, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC74C, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC74D, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC74E, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC74F, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC750, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC751, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC752, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC753, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC754, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC755, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC756, {0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC757, {0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC758, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC759, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC75A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC75B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC75C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC75D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC75E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC75F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC760, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC761, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC762, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC763, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC764, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC765, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC766, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC767, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC768, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC769, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC76A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC76B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC76C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC76D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC76E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC76F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC770, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC771, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC772, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC773, {0x00,0x00,0x3C,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC774, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC775, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC776, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC777, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC778, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC779, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC77A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC77B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC77C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC77D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC77E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC77F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC780, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC781, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC782, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC783, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC784, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC785, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC786, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC787, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC788, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC789, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC78A, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC78B, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC78C, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC78D, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC78E, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC78F, {0x00,0x00,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC790, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC791, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC792, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC793, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC794, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC795, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC796, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC797, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC798, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC799, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC79A, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC79B, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC79C, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC79D, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC79E, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC79F, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC7A0, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7A1, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7A2, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC7A3, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC7A4, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC7A5, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC7A6, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7A7, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7A8, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7A9, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7AA, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC7AB, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC7AC, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x45,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC7AD, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC7AE, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC7AF, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC7B0, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7B1, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC7B2, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC7B3, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7B4, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7B5, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC7B6, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7B7, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7B8, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC7B9, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7BA, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7BB, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC7BC, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7BD, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7BE, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC7BF, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC7C0, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC7C1, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7C2, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7C3, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7C4, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7C5, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7C6, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC7C7, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC7C8, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x70,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC7C9, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC7CA, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC7CB, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC7CC, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7CD, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC7CE, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC7CF, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7D0, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7D1, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC7D2, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7D3, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7D4, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC7D5, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7D6, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7D7, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC7D8, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7D9, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7DA, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC7DB, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC7DC, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC7DD, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC7DE, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7DF, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7E0, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7E1, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7E2, {0x00,0x00,0x7F,0x40,0x08,0x70,0x08,0x40,0x14,0x70,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC7E3, {0x00,0x00,0x7F,0x40,0x08,0x70,0x14,0x40,0x22,0x70,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC7E4, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x11,0x20,0x11,0x20,0x29,0x20,0x29,0xE0,0x45,0x20,0x45,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC7E5, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC7E6, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC7E7, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC7E8, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7E9, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC7EA, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC7EB, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7EC, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7ED, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC7EE, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7EF, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7F0, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC7F1, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7F2, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7F3, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC7F4, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7F5, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7F6, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC7F7, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC7F8, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC7F9, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC7FA, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7FB, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC7FC, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7FD, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC7FE, {0x00,0x00,0x7D,0x20,0x11,0x20,0x11,0xE0,0x29,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC7FF, {0x00,0x00,0x7D,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC800, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x09,0xC0,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC801, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC802, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC803, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC804, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC805, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC806, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC807, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC808, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC809, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC80A, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC80B, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC80C, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC80D, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC80E, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC80F, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC810, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC811, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC812, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC813, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC814, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC815, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC816, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC817, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC818, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC819, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC81A, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC81B, {0x00,0x00,0x7F,0x40,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC81C, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x10,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC81D, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC81E, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC81F, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC820, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC821, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC822, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC823, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC824, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC825, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC826, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC827, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC828, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC829, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC82A, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC82B, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC82C, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC82D, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC82E, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC82F, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC830, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC831, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC832, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC833, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC834, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC835, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC836, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC837, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC838, {0x00,0x00,0x7F,0x40,0x08,0x40,0x09,0xC0,0x08,0x40,0x08,0x40,0x15,0xC0,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC839, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC83A, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC83B, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC83C, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC83D, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC83E, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC83F, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC840, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC841, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC842, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC843, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC844, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC845, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC846, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC847, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC848, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC849, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC84A, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC84B, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC84C, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC84D, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC84E, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC84F, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC850, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC851, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC852, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x08,0x40,0x15,0xC0,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC853, {0x00,0x00,0x7F,0x40,0x09,0xC0,0x14,0x40,0x23,0xC0,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC854, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC855, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC856, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC857, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC858, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC859, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC85A, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC85B, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC85C, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC85D, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC85E, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC85F, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC860, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC861, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC862, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC863, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC864, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC865, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC866, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC867, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xC868, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xC869, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC86A, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC86B, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC86C, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC86D, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC86E, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC86F, {0x00,0x00,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC870, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC871, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC872, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC873, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC874, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC875, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC876, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC877, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC878, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC879, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC87A, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC87B, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC87C, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC87D, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC87E, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC87F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC880, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC881, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC882, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC883, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC884, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC885, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC886, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC887, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC888, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC889, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC88A, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC88B, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC88C, {0x00,0x00,0x7E,0x40,0x18,0x40,0x24,0x40,0x24,0x40,0x42,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC88D, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC88E, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC88F, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC890, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC891, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC892, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC893, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC894, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC895, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC896, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC897, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC898, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC899, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC89A, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC89B, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC89C, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC89D, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC89E, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC89F, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC8A0, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC8A1, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC8A2, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8A3, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8A4, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8A5, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8A6, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC8A7, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC8A8, {0x00,0x00,0x7E,0xA0,0x18,0xA0,0x24,0xA0,0x24,0xA0,0x42,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xC8A9, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC8AA, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC8AB, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC8AC, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8AD, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC8AE, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC8AF, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B0, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B1, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC8B2, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B3, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B4, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC8B5, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B6, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B7, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC8B8, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8B9, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8BA, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC8BB, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8BC, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC8BD, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8BE, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8BF, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8C0, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8C1, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8C2, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC8C3, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x44,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC8C4, {0x00,0x00,0x7E,0x40,0x18,0x40,0x24,0x40,0x24,0x40,0x42,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC8C5, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC8C6, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC8C7, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC8C8, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8C9, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC8CA, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC8CB, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8CC, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8CD, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC8CE, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8CF, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8D0, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC8D1, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8D2, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC8D3, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC8D4, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8D5, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8D6, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC8D7, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC8D8, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC8D9, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC8DA, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8DB, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC8DC, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8DD, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC8DE, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC8DF, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC8E0, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC8E1, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC8E2, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC8E3, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC8E4, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8E5, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC8E6, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC8E7, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8E8, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8E9, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC8EA, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8EB, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8EC, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC8ED, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8EE, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8EF, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC8F0, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8F1, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8F2, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC8F3, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC8F4, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC8F5, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC8F6, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC8F7, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC8F8, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8F9, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC8FA, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC8FB, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC8FC, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xC8FD, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC8FE, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC8FF, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC900, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC901, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC902, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC903, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC904, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC905, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC906, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC907, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC908, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC909, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC90A, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC90B, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC90C, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC90D, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC90E, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC90F, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC910, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC911, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC912, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC913, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC914, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC915, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC916, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC917, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC918, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC919, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC91A, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC91B, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC91C, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC91D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC91E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC91F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC920, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC921, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC922, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC923, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC924, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC925, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC926, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC927, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC928, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC929, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC92A, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC92B, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC92C, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC92D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC92E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC92F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC930, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC931, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC932, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC933, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC934, {0x00,0x00,0x7C,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xC935, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC936, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC937, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC938, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC939, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC93A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC93B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC93C, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC93D, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xC93E, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC93F, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC940, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC941, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC942, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC943, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC944, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC945, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xC946, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC947, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC948, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC949, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xC94A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC94B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC94C, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC94D, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC94E, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC94F, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x45,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC950, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xC951, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC952, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC953, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC954, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC955, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC956, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC957, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC958, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC959, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC95A, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC95B, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC95C, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC95D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC95E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC95F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC960, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC961, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC962, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC963, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC964, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC965, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC966, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC967, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC968, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC969, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC96A, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC96B, {0x00,0x00,0x7C,0x40,0x28,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC96C, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xC96D, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC96E, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC96F, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC970, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC971, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC972, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC973, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC974, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC975, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC976, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC977, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC978, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC979, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC97A, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC97B, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC97C, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC97D, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC97E, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC97F, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC980, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC981, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC982, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC983, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC984, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC985, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC986, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC987, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC988, {0x00,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xC989, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC98A, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC98B, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xC98C, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC98D, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xC98E, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC98F, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC990, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC991, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xC992, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC993, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC994, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC995, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC996, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xC997, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC998, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC999, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xC99A, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xC99B, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC99C, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xC99D, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xC99E, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xC99F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xC9A0, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC9A1, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xC9A2, {0x00,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xC9A3, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xC9A4, {0x00,0x00,0x7E,0x40,0x18,0x40,0x24,0x40,0x24,0x40,0x42,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC9A5, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC9A6, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC9A7, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC9A8, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9A9, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC9AA, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC9AB, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9AC, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9AD, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC9AE, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9AF, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9B0, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC9B1, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC9B2, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC9B3, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xC9B4, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9B5, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9B6, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC9B7, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xC9B8, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC9B9, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC9BA, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC9BB, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC9BC, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9BD, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9BE, {0x00,0x00,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC9BF, {0x00,0x00,0x7F,0x40,0x22,0x40,0x55,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC9C0, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC9C1, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC9C2, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC9C3, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC9C4, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9C5, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC9C6, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC9C7, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9C8, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9C9, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC9CA, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9CB, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9CC, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC9CD, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9CE, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC9CF, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC9D0, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9D1, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9D2, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC9D3, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC9D4, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC9D5, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC9D6, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC9D7, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC9D8, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9D9, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9DA, {0x00,0x00,0x7F,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC9DB, {0x00,0x00,0x7F,0x40,0x08,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC9DC, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC9DD, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xC9DE, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xC9DF, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC9E0, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9E1, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xC9E2, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xC9E3, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9E4, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9E5, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xC9E6, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9E7, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9E8, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xC9E9, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9EA, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xC9EB, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xC9EC, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9ED, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9EE, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xC9EF, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xC9F0, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xC9F1, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xC9F2, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC9F3, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xC9F4, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9F5, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xC9F6, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xC9F7, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xC9F8, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0x20,0x29,0x20,0x29,0x20,0x55,0xE0,0x55,0x20,0x95,0x20,0x23,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xC9F9, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xC9FA, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xC9FB, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xC9FC, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xC9FD, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xC9FE, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xC9FF, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA00, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA01, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCA02, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA03, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA04, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA05, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA06, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA07, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCA08, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA09, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA0A, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA0B, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCA0C, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCA0D, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA0E, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA0F, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA10, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA11, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA12, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCA13, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCA14, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x70,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x70,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCA15, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCA16, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCA17, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCA18, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA19, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCA1A, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCA1B, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA1C, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA1D, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCA1E, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA1F, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA20, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA21, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA22, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA23, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCA24, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA25, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA26, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCA27, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCA28, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCA29, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCA2A, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA2B, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA2C, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA2D, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA2E, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x22,0x70,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCA2F, {0x00,0x00,0x77,0x40,0x22,0x70,0x22,0x40,0x55,0x70,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCA30, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x55,0x20,0x55,0xE0,0x95,0x20,0x23,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xCA31, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCA32, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCA33, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCA34, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA35, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCA36, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCA37, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA38, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA39, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCA3A, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA3B, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA3C, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA3D, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA3E, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA3F, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCA40, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA41, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA42, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA43, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCA44, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCA45, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA46, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA47, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA48, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA49, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA4A, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x55,0x20,0x55,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCA4B, {0x00,0x00,0x7D,0x20,0x29,0x20,0x29,0xE0,0x55,0x20,0x55,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCA4C, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCA4D, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCA4E, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCA4F, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCA50, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA51, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCA52, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCA53, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA54, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA55, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCA56, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA57, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA58, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA59, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA5A, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA5B, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCA5C, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA5D, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA5E, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCA5F, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCA60, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCA61, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCA62, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA63, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA64, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA65, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA66, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCA67, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCA68, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x28,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x94,0xA0,0x22,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCA69, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCA6A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCA6B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCA6C, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA6D, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCA6E, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCA6F, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA70, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA71, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCA72, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA73, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA74, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA75, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA76, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA77, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCA78, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA79, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA7A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA7B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCA7C, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCA7D, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA7E, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA7F, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA80, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA81, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA82, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCA83, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCA84, {0x00,0x00,0x77,0x40,0x22,0x40,0x23,0xC0,0x22,0x40,0x22,0x40,0x55,0xC0,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCA85, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCA86, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCA87, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCA88, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA89, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCA8A, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCA8B, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA8C, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA8D, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCA8E, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA8F, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA90, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCA91, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA92, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCA93, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCA94, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA95, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA96, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCA97, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCA98, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCA99, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCA9A, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA9B, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCA9C, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA9D, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCA9E, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x23,0xC0,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCA9F, {0x00,0x00,0x77,0x40,0x23,0xC0,0x22,0x40,0x55,0xC0,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCAA0, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x94,0xA0,0x22,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCAA1, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCAA2, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCAA3, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCAA4, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAA5, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCAA6, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCAA7, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAA8, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAA9, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCAAA, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAAB, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAAC, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCAAD, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAAE, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAAF, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCAB0, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAB1, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAB2, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCAB3, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCAB4, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCAB5, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAB6, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCAB7, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCAB8, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAB9, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCABA, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x2B,0xA0,0x54,0xA0,0x54,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCABB, {0x00,0x00,0x7C,0xA0,0x2B,0xA0,0x28,0xA0,0x57,0xA0,0x54,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCABC, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCABD, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCABE, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCABF, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCAC0, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAC1, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCAC2, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCAC3, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAC4, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAC5, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCAC6, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAC7, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAC8, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCAC9, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCACA, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCACB, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCACC, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCACD, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCACE, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCACF, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCAD0, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCAD1, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCAD2, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCAD3, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCAD4, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAD5, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCAD6, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCAD7, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCAD8, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCAD9, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCADA, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCADB, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCADC, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCADD, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCADE, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCADF, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAE0, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAE1, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCAE2, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAE3, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAE4, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCAE5, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAE6, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAE7, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCAE8, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAE9, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAEA, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCAEB, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCAEC, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCAED, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCAEE, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCAEF, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCAF0, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAF1, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCAF2, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCAF3, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCAF4, {0x00,0x00,0x7E,0xA0,0x24,0xA0,0x24,0xA0,0x5A,0xA0,0x52,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCAF5, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCAF6, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCAF7, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCAF8, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAF9, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCAFA, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCAFB, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAFC, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAFD, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCAFE, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCAFF, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB00, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB01, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB02, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB03, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCB04, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB05, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB06, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB07, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB08, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCB09, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB0A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB0B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB0C, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB0D, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB0E, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x54,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCB0F, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x54,0xE0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCB10, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCB11, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCB12, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCB13, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCB14, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB15, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCB16, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCB17, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB18, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB19, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCB1A, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB1B, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB1C, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB1D, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB1E, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB1F, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCB20, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB21, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB22, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB23, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCB24, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCB25, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCB26, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB27, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB28, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB29, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB2A, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCB2B, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCB2C, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCB2D, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCB2E, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCB2F, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCB30, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB31, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCB32, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCB33, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB34, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB35, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCB36, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB37, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB38, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCB39, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB3A, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB3B, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCB3C, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB3D, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB3E, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCB3F, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCB40, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCB41, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCB42, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCB43, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCB44, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB45, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB46, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCB47, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCB48, {0x00,0x00,0x7B,0xC0,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xCB49, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCB4A, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCB4B, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCB4C, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB4D, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCB4E, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCB4F, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB50, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB51, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCB52, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB53, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB54, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCB55, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB56, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB57, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCB58, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB59, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB5A, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCB5B, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCB5C, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCB5D, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCB5E, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCB5F, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCB60, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB61, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCB62, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCB63, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCB64, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xCB65, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCB66, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCB67, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCB68, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB69, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCB6A, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCB6B, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB6C, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB6D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCB6E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB6F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB70, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB71, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB72, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB73, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCB74, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB75, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB76, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB77, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCB78, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCB79, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCB7A, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB7B, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB7C, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB7D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB7E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x54,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCB7F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCB80, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x28,0xA0,0x54,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xCB81, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCB82, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCB83, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCB84, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB85, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCB86, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCB87, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB88, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB89, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCB8A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB8B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB8C, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB8D, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB8E, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB8F, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCB90, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB91, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB92, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCB93, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB94, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCB95, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCB96, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB97, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCB98, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB99, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCB9A, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x54,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCB9B, {0x00,0x00,0x7C,0xA0,0x28,0xA0,0x55,0xA0,0x00,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCB9C, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xCB9D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCB9E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCB9F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCBA0, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBA1, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCBA2, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCBA3, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBA4, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBA5, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCBA6, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBA7, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBA8, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCBA9, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCBAA, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCBAB, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCBAC, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBAD, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBAE, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCBAF, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCBB0, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCBB1, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCBB2, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCBB3, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCBB4, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBB5, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBB6, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x54,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCBB7, {0x00,0x00,0x7C,0x40,0x28,0x40,0x54,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCBB8, {0x00,0x00,0x7B,0xC0,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xCBB9, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCBBA, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCBBB, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCBBC, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBBD, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCBBE, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCBBF, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC0, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC1, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCBC2, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC3, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC4, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCBC5, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC6, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC7, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCBC8, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBC9, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBCA, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCBCB, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCBCC, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCBCD, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCBCE, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCBCF, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCBD0, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBD1, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBD2, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCBD3, {0x00,0x00,0xFB,0xE0,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCBD4, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x20,0x80,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCBD5, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCBD6, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCBD7, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCBD8, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBD9, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCBDA, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCBDB, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBDC, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBDD, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCBDE, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBDF, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBE0, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCBE1, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBE2, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBE3, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCBE4, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBE5, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBE6, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCBE7, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCBE8, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCBE9, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCBEA, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCBEB, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCBEC, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBED, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCBEE, {0x00,0x00,0xFB,0xE0,0x20,0x80,0x51,0x40,0x8A,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCBEF, {0x00,0x00,0x7F,0xC0,0x2A,0x80,0x44,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCBF0, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCBF1, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCBF2, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCBF3, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCBF4, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBF5, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCBF6, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCBF7, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBF8, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBF9, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCBFA, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBFB, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCBFC, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCBFD, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCBFE, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCBFF, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCC00, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC01, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC02, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC03, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCC04, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCC05, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCC06, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC07, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC08, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC09, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC0A, {0x00,0x00,0x77,0x40,0x22,0x40,0x55,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCC0B, {0x00,0x00,0x7F,0x40,0x36,0x40,0x49,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCC0C, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x55,0x40,0x55,0x40,0x88,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC0D, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC0E, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCC0F, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCC10, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC11, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCC12, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCC13, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC14, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC15, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCC16, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC17, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC18, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC19, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC1A, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC1B, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCC1C, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC1D, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC1E, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCC1F, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCC20, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCC21, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCC22, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC23, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC24, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC25, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC26, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCC27, {0x00,0x00,0x77,0x40,0x22,0x40,0x22,0x40,0x55,0x40,0x89,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCC28, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x70,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC29, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC2A, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCC2B, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCC2C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC2D, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCC2E, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCC2F, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC30, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC31, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCC32, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC33, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC34, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC35, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC36, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC37, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCC38, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC39, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC3A, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCC3B, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCC3C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCC3D, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCC3E, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC3F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC40, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC41, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC42, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCC43, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCC44, {0x00,0x00,0x39,0x20,0x01,0x20,0x7D,0x20,0x11,0x20,0x11,0x20,0x29,0xE0,0x29,0x20,0x45,0x20,0x83,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xCC45, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCC46, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCC47, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCC48, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC49, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCC4A, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCC4B, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC4C, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC4D, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCC4E, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC4F, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC50, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC51, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC52, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC53, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCC54, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC55, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC56, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC57, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCC58, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCC59, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC5A, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC5B, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC5C, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC5D, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC5E, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCC5F, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCC60, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x70,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x70,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC61, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC62, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCC63, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCC64, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC65, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCC66, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCC67, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC68, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC69, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCC6A, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC6B, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC6C, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC6D, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC6E, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC6F, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCC70, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC71, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC72, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCC73, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCC74, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCC75, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCC76, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC77, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC78, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC79, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC7A, {0x00,0x00,0x1C,0x40,0x00,0x70,0x7F,0x40,0x08,0x70,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCC7B, {0x00,0x00,0x08,0x40,0x7F,0x70,0x08,0x40,0x14,0x70,0x63,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCC7C, {0x00,0x00,0x39,0x20,0x01,0x20,0x7D,0xE0,0x11,0x20,0x11,0x20,0x29,0x20,0x29,0xE0,0x45,0x20,0x83,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xCC7D, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCC7E, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCC7F, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCC80, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC81, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCC82, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCC83, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC84, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC85, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCC86, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC87, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC88, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC89, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC8A, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC8B, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCC8C, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC8D, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC8E, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCC8F, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCC90, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCC91, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC92, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC93, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCC94, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC95, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCC96, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x11,0x20,0x29,0x20,0x45,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCC97, {0x00,0x00,0x11,0x20,0x7D,0x20,0x11,0xE0,0x29,0x20,0x45,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCC98, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x09,0xC0,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC99, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCC9A, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCC9B, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCC9C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCC9D, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCC9E, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCC9F, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCA0, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCA1, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCCA2, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCA3, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCA4, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCCA5, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCA6, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCA7, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCCA8, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCA9, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCAA, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCCAB, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCCAC, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCCAD, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCCAE, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCCAF, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCCB0, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCB1, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCB2, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCCB3, {0x00,0x00,0x08,0x40,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCCB4, {0x00,0x00,0x38,0xA0,0x00,0xA0,0x7C,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x28,0xA0,0x44,0xA0,0x82,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCCB5, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCCB6, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCCB7, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCCB8, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCB9, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCCBA, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCCBB, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCBC, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCBD, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCCBE, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCBF, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCC0, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCCC1, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCC2, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCC3, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCCC4, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCC5, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCC6, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCCC7, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCCC8, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCCC9, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCCA, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCCCB, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCCCC, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCCD, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCCE, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCCCF, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCCD0, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x40,0x09,0xC0,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCCD1, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCCD2, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCCD3, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCCD4, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCD5, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCCD6, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCCD7, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCD8, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCD9, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCCDA, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCDB, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCDC, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCCDD, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCDE, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCDF, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCCE0, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCE1, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCE2, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCCE3, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCCE4, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCCE5, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCCE6, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCCE7, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCCE8, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCE9, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCCEA, {0x00,0x00,0x1C,0x40,0x01,0xC0,0x7F,0x40,0x09,0xC0,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCCEB, {0x00,0x00,0x08,0x40,0x7F,0xC0,0x08,0x40,0x15,0xC0,0x63,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCCEC, {0x00,0x00,0x38,0xA0,0x00,0xA0,0x7F,0xA0,0x10,0xA0,0x10,0xA0,0x2B,0xA0,0x28,0xA0,0x44,0xA0,0x82,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCCED, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCCEE, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCCEF, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCCF0, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCF1, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCCF2, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCCF3, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCF4, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCF5, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCCF6, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCF7, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCF8, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCCF9, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCFA, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCFB, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCCFC, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCFD, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCCFE, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCCFF, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCD00, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCD01, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD02, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCD03, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCD04, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD05, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD06, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x13,0xA0,0x28,0xA0,0x44,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCD07, {0x00,0x00,0x10,0xA0,0x7F,0xA0,0x10,0xA0,0x2B,0xA0,0x44,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCD08, {0x00,0x00,0x1F,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x44,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCD09, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD0A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCD0B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCD0C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD0D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD0E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCD0F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD10, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD11, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCD12, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD13, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD14, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD15, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD16, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD17, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCD18, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD19, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD1A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD1B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCD1C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCD1D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCD1E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCD1F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCD20, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD21, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD22, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCD23, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCD24, {0x00,0x00,0x18,0x40,0x00,0x40,0x7E,0x40,0x18,0x40,0x24,0x70,0x24,0x40,0x4A,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD25, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD26, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCD27, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCD28, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD29, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCD2A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCD2B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD2C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD2D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCD2E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD2F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD30, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCD31, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD32, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD33, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCD34, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD35, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD36, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCD37, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCD38, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCD39, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCD3A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCD3B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCD3C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD3D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD3E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD3F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x41,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCD40, {0x00,0x00,0x18,0xA0,0x00,0xA0,0x7E,0xA0,0x18,0xA0,0x24,0xE0,0x24,0xA0,0x52,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCD41, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCD42, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCD43, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xCD44, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD45, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCD46, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x40,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCD47, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD48, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD49, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCD4A, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD4B, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD4C, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCD4D, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7F,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xCD4E, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD4F, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCD50, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD51, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD52, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x24,0x00,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCD53, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCD54, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCD55, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD56, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCD57, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCD58, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD59, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD5A, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCD5B, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x18,0xE0,0x24,0xA0,0x42,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCD5C, {0x00,0x00,0x18,0x40,0x00,0x40,0x7E,0x40,0x18,0x40,0x24,0x40,0x24,0x40,0x4A,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD5D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD5E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCD5F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCD60, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD61, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCD62, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCD63, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD64, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD65, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCD66, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD67, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD68, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCD69, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD6A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCD6B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCD6C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD6D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD6E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCD6F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCD70, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCD71, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCD72, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCD73, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCD74, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD75, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCD76, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD77, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCD78, {0x00,0x00,0x1F,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x51,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCD79, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD7A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCD7B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCD7C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD7D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD7E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCD7F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD80, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD81, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCD82, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD83, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD84, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD85, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD86, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD87, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCD88, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD89, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD8A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD8B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCD8C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCD8D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCD8E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCD8F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCD90, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD91, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD92, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCD93, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCD94, {0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xCD95, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCD96, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCD97, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCD98, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD99, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCD9A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCD9B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD9C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD9D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCD9E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCD9F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDA0, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCDA1, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDA2, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDA3, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCDA4, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDA5, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x44,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDA6, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x4C,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCDA7, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xCDA8, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCDA9, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCDAA, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCDAB, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCDAC, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDAD, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDAE, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCDAF, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCDB0, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xCDB1, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCDB2, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCDB3, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCDB4, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDB5, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCDB6, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCDB7, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDB8, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDB9, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCDBA, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDBB, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDBC, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCDBD, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDBE, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDBF, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCDC0, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDC1, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDC2, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCDC3, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCDC4, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCDC5, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCDC6, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCDC7, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCDC8, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDC9, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDCA, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCDCB, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0xC0,0x44,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCDCC, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x10,0xA0,0x28,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xCDCD, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCDCE, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCDCF, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xCDD0, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x30,0x20,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDD1, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCDD2, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xE0,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCDD3, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDD4, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDD5, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCDD6, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDD7, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDD8, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCDD9, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xCDDA, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDDB, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCDDC, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDDD, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x30,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDDE, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x34,0xA0,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCDDF, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCDE0, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCDE1, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDE2, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCDE3, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCDE4, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDE5, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDE6, {0x00,0x00,0x10,0xA0,0x7C,0xA0,0x29,0xA0,0x44,0xA0,0x44,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCDE7, {0x00,0x00,0x10,0xA0,0x7E,0xA0,0x19,0xA0,0x24,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCDE8, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xCDE9, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCDEA, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCDEB, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCDEC, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDED, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCDEE, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCDEF, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDF0, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDF1, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCDF2, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDF3, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDF4, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCDF5, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDF6, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCDF7, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCDF8, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDF9, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCDFA, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCDFB, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCDFC, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCDFD, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCDFE, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCDFF, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCE00, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE01, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE02, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x44,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE03, {0x00,0x00,0x10,0x40,0x7C,0x40,0x28,0x40,0x44,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCE04, {0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xCE05, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE06, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCE07, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCE08, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE09, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCE0A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCE0B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE0C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE0D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCE0E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE0F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE10, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCE11, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE12, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE13, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCE14, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE15, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x51,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE16, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x59,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCE17, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xCE18, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCE19, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCE1A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCE1B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCE1C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE1D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE1E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCE1F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x11,0x00,0x60,0xC0,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCE20, {0x00,0x00,0x1F,0x00,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x40,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCE21, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE22, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCE23, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCE24, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE25, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCE26, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCE27, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE28, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE29, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCE2A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE2B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE2C, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCE2D, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE2E, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x70,0x00,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE2F, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCE30, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE31, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE32, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCE33, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCE34, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCE35, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCE36, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCE37, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCE38, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE39, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE3A, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCE3B, {0x00,0x00,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCE3C, {0x00,0x00,0x18,0x40,0x00,0x40,0x7E,0x40,0x18,0x40,0x24,0x40,0x24,0x40,0x42,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE3D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE3E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCE3F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCE40, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE41, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCE42, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCE43, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE44, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE45, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCE46, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE47, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE48, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCE49, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE4A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE4B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCE4C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE4D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE4E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x24,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCE4F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCE50, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCE51, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCE52, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCE53, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xCE54, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE55, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE56, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCE57, {0x00,0x00,0x08,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCE58, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x14,0x40,0x14,0x40,0x22,0x40,0x41,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE59, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE5A, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCE5B, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCE5C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE5D, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCE5E, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCE5F, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE60, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE61, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCE62, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE63, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE64, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCE65, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE66, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE67, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCE68, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE69, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE6A, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCE6B, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCE6C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCE6D, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCE6E, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCE6F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCE70, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE71, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE72, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCE73, {0x00,0x00,0x08,0x40,0x7F,0x40,0x08,0x40,0x14,0x40,0x63,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCE74, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x02,0x70,0x04,0x40,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE75, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCE76, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCE77, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCE78, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE79, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCE7A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCE7B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE7C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE7D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCE7E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE7F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE80, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCE81, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE82, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE83, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCE84, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE85, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE86, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCE87, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCE88, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCE89, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCE8A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCE8B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCE8C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE8D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCE8E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCE8F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x70,0x02,0x40,0x7C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCE90, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0x20,0x7D,0x20,0x05,0x20,0x09,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xCE91, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCE92, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCE93, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCE94, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE95, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCE96, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCE97, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE98, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE99, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCE9A, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE9B, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE9C, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCE9D, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE9E, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCE9F, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCEA0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEA1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEA2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCEA3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCEA4, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCEA5, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEA6, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEA7, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEA8, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEA9, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEAA, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCEAB, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCEAC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x70,0x7E,0x40,0x02,0x40,0x04,0x40,0x04,0x70,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCEAD, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCEAE, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCEAF, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCEB0, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEB1, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCEB2, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCEB3, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEB4, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEB5, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCEB6, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEB7, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEB8, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCEB9, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEBA, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEBB, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCEBC, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEBD, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEBE, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCEBF, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xCEC0, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCEC1, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCEC2, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEC3, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEC4, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEC5, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEC6, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCEC7, {0x00,0x00,0x7E,0x40,0x02,0x70,0x7E,0x40,0x02,0x70,0x7C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCEC8, {0x00,0x00,0x7D,0x20,0x05,0x20,0x05,0xE0,0x7D,0x20,0x05,0x20,0x09,0x20,0x09,0xE0,0x11,0x20,0x61,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xCEC9, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCECA, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCECB, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCECC, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCECD, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCECE, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCECF, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCED2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED4, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCED5, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED6, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED7, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCED8, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCED9, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEDA, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCEDB, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCEDC, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCEDD, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEDE, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEDF, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEE0, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEE1, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEE2, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x09,0x20,0x11,0x20,0x61,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCEE3, {0x00,0x00,0x7D,0x20,0x05,0x20,0x7D,0xE0,0x05,0x20,0x79,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCEE4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x03,0xC0,0x04,0x40,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCEE5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCEE6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCEE7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCEE8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEE9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCEEA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCEEB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEEC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEED, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCEEE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEEF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEF0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCEF1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEF2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCEF3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCEF4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEF5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEF6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCEF7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCEF8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCEF9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCEFA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEFB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCEFC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEFD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCEFE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCEFF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x02,0x40,0x7C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCF00, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x04,0xA0,0x7C,0xA0,0x07,0xA0,0x08,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCF01, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCF02, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCF03, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCF04, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF05, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCF06, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCF07, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF08, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF09, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCF0A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF0B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF0C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF0D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF0E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF0F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCF10, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF11, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF12, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF13, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCF14, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCF15, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF16, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF17, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF18, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF19, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF1A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7F,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCF1B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x78,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCF1C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x03,0xC0,0x7E,0x40,0x02,0x40,0x05,0xC0,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCF1D, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCF1E, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCF1F, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCF20, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF21, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCF22, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xCF23, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF24, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF25, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCF26, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF27, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF28, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF29, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF2A, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF2B, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCF2C, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF2D, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF2E, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xCF2F, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCF30, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCF31, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCF32, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF33, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF34, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF35, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF36, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCF37, {0x00,0x00,0x7E,0x40,0x03,0xC0,0x7E,0x40,0x03,0xC0,0x7C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCF38, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x07,0xA0,0x7C,0xA0,0x04,0xA0,0x0B,0xA0,0x08,0xA0,0x10,0xA0,0x60,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCF39, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCF3A, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCF3B, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCF3C, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF3D, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCF3E, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCF3F, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF40, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF41, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCF42, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF43, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF44, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF45, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF46, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF47, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCF48, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF49, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF4A, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF4B, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xCF4C, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xCF4D, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF4E, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF4F, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF50, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF51, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF52, {0x00,0x00,0x7C,0xA0,0x07,0xA0,0x7C,0xA0,0x0B,0xA0,0x10,0xA0,0x60,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCF53, {0x00,0x00,0x7C,0xA0,0x05,0xA0,0x7C,0xA0,0x05,0xA0,0x78,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCF54, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCF55, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCF56, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCF57, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCF58, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF59, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCF5A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCF5B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF5C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF5D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCF5E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF5F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF60, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCF61, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF62, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF63, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCF64, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF65, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF66, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCF67, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCF68, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCF69, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCF6A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCF6B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCF6C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF6D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCF6E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCF6F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x08,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCF70, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x12,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCF71, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCF72, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCF73, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCF74, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF75, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCF76, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCF77, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF78, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF79, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCF7A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF7B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF7C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF7D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF7E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF7F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCF80, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF81, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF82, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF83, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCF84, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCF85, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCF86, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF87, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCF88, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF89, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCF8A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x10,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCF8B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCF8C, {0x00,0x00,0x7E,0xA0,0x02,0xA0,0x02,0xA0,0x7E,0xA0,0x22,0xE0,0x22,0xA0,0x22,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xCF8D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xCF8E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xCF8F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCF90, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x04,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF91, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xCF92, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xCF93, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF94, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF95, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xCF96, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF97, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF98, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF99, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF9A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF9B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCF9C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF9D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xCF9E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCF9F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCFA0, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCFA1, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFA2, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCFA3, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCFA4, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCFA5, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCFA6, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x20,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCFA7, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xE0,0x24,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCFA8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x12,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCFA9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCFAA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCFAB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xCFAC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFAD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xCFAE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCFAF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFB0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFB1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xCFB2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFB3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFB4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCFB5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xCFB6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xCFB7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xCFB8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFB9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFBA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xCFBB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xCFBC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xCFBD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xCFBE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCFBF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xCFC0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFC1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xCFC2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x10,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xCFC3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x12,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xCFC4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xCFC5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCFC6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCFC7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCFC8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFC9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCFCA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCFCB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFCC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFCD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCFCE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFCF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFD0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCFD1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFD2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFD3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCFD4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFD5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFD6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCFD7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCFD8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCFD9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCFDA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCFDB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCFDC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFDD, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFDE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0x22,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCFDF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x22,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCFE0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xCFE1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCFE2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCFE3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xCFE4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x44,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFE5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xCFE6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCFE7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFE8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFE9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xCFEA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFEB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFEC, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCFED, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFEE, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFEF, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xCFF0, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFF1, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFF2, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xCFF3, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCFF4, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xCFF5, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xCFF6, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xCFF7, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xCFF8, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFF9, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xCFFA, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xCFFB, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xCFFC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xCFFD, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xCFFE, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xCFFF, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD000, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD001, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD002, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD003, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD004, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD005, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD006, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD007, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD008, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD009, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD00A, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD00B, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD00C, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD00D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD00E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD00F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD010, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD011, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD012, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD013, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD014, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD015, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD016, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD017, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0xC0,0x04,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD018, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7C,0xA0,0x04,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xD019, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD01A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD01B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD01C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD01D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD01E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD01F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD020, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD021, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD022, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD023, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD024, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD025, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD026, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD027, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD028, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD029, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD02A, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD02B, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD02C, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD02D, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD02E, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD02F, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD030, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD031, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD032, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD033, {0x00,0x00,0x7C,0xA0,0x04,0xA0,0x7D,0xA0,0x04,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD034, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD035, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD036, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD037, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD038, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD039, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD03A, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD03B, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD03C, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD03D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD03E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD03F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD040, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD041, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD042, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD043, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD044, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD045, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD046, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD047, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD048, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD049, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD04A, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD04B, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD04C, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD04D, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD04E, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD04F, {0x00,0x00,0x7C,0x40,0x04,0x40,0x7C,0x40,0x04,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD050, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xD051, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD052, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD053, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD054, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD055, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD056, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD057, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD058, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD059, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD05A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD05B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD05C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD05D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD05E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD05F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD060, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD061, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD062, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD063, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD064, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD065, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD066, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD067, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD068, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD069, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD06A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD06B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD06C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD06D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD06E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD06F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD070, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD071, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD072, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD073, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD074, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD075, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD076, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD077, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD078, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD079, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD07A, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD07B, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD07C, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD07D, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD07E, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD07F, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD080, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD081, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD082, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD083, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD084, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD085, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD086, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD087, {0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x00,0x40,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD088, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD089, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD08A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD08B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD08C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD08D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD08E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD08F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD090, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD091, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD092, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD093, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD094, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD095, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD096, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD097, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD098, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD099, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD09A, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD09B, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD09C, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD09D, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD09E, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD09F, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0A0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0A1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0A2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD0A3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD0A4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x70,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD0A5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD0A6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD0A7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD0A8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0A9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD0AA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD0AB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0AC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0AD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD0AE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0AF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0B0, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD0B1, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0B2, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0B3, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD0B4, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0B5, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0B6, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD0B7, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD0B8, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD0B9, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD0BA, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0BB, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0BC, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0BD, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0BE, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x04,0x40,0x78,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD0BF, {0x00,0x00,0x7E,0x40,0x02,0x40,0x7E,0x40,0x02,0x40,0x7C,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD0C0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD0C1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD0C2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD0C3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD0C4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0C5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD0C6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD0C7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0C8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0C9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD0CA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0CB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0CC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD0CD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0CE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0CF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD0D0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0D1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0D2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD0D3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD0D4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD0D5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD0D6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0D7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0D8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0D9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0DA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD0DB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD0DC, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0x20,0x79,0x20,0x41,0x20,0x41,0xE0,0x41,0x20,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xD0DD, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD0DE, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD0DF, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD0E0, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0E1, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD0E2, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD0E3, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0E4, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0E5, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD0E6, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0E7, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0E8, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD0E9, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0EA, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0EB, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD0EC, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0ED, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0EE, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD0EF, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD0F0, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD0F1, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0F2, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0F3, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD0F4, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0F5, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD0F6, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD0F7, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD0F8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x70,0x7C,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD0F9, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD0FA, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD0FB, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD0FC, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD0FD, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD0FE, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD0FF, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD100, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD101, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD102, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD103, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD104, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD105, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD106, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD107, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD108, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD109, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD10A, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD10B, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD10C, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD10D, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD10E, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD10F, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD110, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD111, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD112, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD113, {0x00,0x00,0x7E,0x40,0x40,0x70,0x7C,0x40,0x40,0x70,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD114, {0x00,0x00,0x7D,0x20,0x41,0x20,0x41,0xE0,0x79,0x20,0x41,0x20,0x41,0x20,0x41,0xE0,0x3D,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xD115, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD116, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD117, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD118, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD119, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD11A, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD11B, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD11C, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD11D, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD11E, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD11F, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD120, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD121, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD122, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD123, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD124, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD125, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD126, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD127, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD128, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD129, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD12A, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD12B, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD12C, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD12D, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD12E, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x41,0x20,0x3F,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD12F, {0x00,0x00,0x7D,0x20,0x41,0x20,0x79,0xE0,0x41,0x20,0x3F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD130, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD131, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD132, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD133, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD134, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD135, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD136, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD137, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD138, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD139, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD13A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD13B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD13C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD13D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD13E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD13F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD140, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD141, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD142, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD143, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD144, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD145, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD146, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD147, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD148, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD149, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD14A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD14B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7D,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD14C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x40,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD14D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD14E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD14F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD150, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD151, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD152, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD153, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD154, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD155, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD156, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD157, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD158, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD159, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD15A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD15B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD15C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD15D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD15E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD15F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD160, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD161, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD162, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD163, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD164, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD165, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD166, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD167, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x7B,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD168, {0x00,0x00,0x7E,0x40,0x40,0x40,0x41,0xC0,0x7C,0x40,0x40,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD169, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD16A, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD16B, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD16C, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD16D, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD16E, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD16F, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD170, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD171, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD172, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD173, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD174, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD175, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD176, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD177, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD178, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD179, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD17A, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD17B, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD17C, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD17D, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD17E, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD17F, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD180, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD181, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD182, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD183, {0x00,0x00,0x7E,0x40,0x41,0xC0,0x7C,0x40,0x41,0xC0,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD184, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x43,0xA0,0x78,0xA0,0x40,0xA0,0x43,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD185, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD186, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD187, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD188, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD189, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD18A, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD18B, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD18C, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD18D, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD18E, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD18F, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD190, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD191, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD192, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD193, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD194, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD195, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD196, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD197, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD198, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD199, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD19A, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD19B, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD19C, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD19D, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD19E, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x40,0xA0,0x3E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD19F, {0x00,0x00,0x7C,0xA0,0x43,0xA0,0x78,0xA0,0x43,0xA0,0x3E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD1A0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x7F,0x80,0x40,0x00,0x40,0x00,0x3F,0xC0,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD1A1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD1A2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD1A3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD1A4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1A5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD1A6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD1A7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1A8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1A9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD1AA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1AB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1AC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD1AD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1AE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1AF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD1B0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1B1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1B2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD1B3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD1B4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD1B5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD1B6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD1B7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD1B8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1B9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1BA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD1BB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD1BC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD1BD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD1BE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD1BF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD1C0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1C1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD1C2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD1C3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1C4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1C5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD1C6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1C7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1C8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD1C9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1CA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1CB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD1CC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1CD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1CE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD1CF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD1D0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD1D1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD1D2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD1D3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD1D4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1D5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1D6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD1D7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x70,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD1D8, {0x00,0x00,0x7E,0xA0,0x40,0xA0,0x7C,0xA0,0x40,0xA0,0x3E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD1D9, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD1DA, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD1DB, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xD1DC, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1DD, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD1DE, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x40,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD1DF, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1E0, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1E1, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD1E2, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1E3, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1E4, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD1E5, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xD1E6, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1E7, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD1E8, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1E9, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1EA, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x24,0x00,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD1EB, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD1EC, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD1ED, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1EE, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD1EF, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD1F0, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1F1, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD1F2, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD1F3, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xE0,0x40,0xA0,0x3C,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD1F4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD1F5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD1F6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD1F7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD1F8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1F9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD1FA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD1FB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1FC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1FD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD1FE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD1FF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD200, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD201, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD202, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD203, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD204, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD205, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD206, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD207, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD208, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD209, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD20A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD20B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD20C, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD20D, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD20E, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD20F, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD210, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x7F,0x80,0x40,0x00,0x40,0x00,0x3F,0xC0,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD211, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD212, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD213, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD214, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD215, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD216, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD217, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD218, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD219, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD21A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD21B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD21C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD21D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD21E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD21F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD220, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD221, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD222, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD223, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD224, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD225, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD226, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD227, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD228, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD229, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD22A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD22B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD22C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x40,0x00,0x3F,0xC0,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xD22D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD22E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD22F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD230, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD231, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD232, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD233, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD234, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD235, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD236, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD237, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD238, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD239, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD23A, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD23B, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD23C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD23D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x44,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD23E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x4C,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD23F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xD240, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD241, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD242, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD243, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD244, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD245, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD246, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD247, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD248, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD249, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD24A, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD24B, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD24C, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD24D, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD24E, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD24F, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD250, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD251, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD252, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD253, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD254, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD255, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD256, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD257, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD258, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD259, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD25A, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD25B, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD25C, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD25D, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD25E, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD25F, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD260, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD261, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD262, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD263, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0xC0,0x40,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD264, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x78,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xD265, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD266, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD267, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xD268, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x30,0x20,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD269, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD26A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xE0,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD26B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD26C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD26D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD26E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD26F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD270, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD271, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xD272, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD273, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD274, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD275, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x30,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD276, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x34,0xA0,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD277, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD278, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD279, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD27A, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD27B, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD27C, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD27D, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD27E, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x3C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD27F, {0x00,0x00,0x7C,0xA0,0x40,0xA0,0x79,0xA0,0x40,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD280, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD281, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD282, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD283, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD284, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD285, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD286, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD287, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD288, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD289, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD28A, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD28B, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD28C, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD28D, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD28E, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD28F, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD290, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD291, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD292, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD293, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD294, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD295, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD296, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD297, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD298, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD299, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD29A, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD29B, {0x00,0x00,0x7C,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD29C, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x40,0x00,0x3F,0xC0,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xD29D, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD29E, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD29F, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD2A0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2A1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD2A2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD2A3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2A4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2A5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD2A6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2A7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2A8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD2A9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2AA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2AB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD2AC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2AD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x51,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2AE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x59,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD2AF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xD2B0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD2B1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD2B2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD2B3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD2B4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2B5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2B6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD2B7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD2B8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x7F,0x80,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD2B9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD2BA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD2BB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD2BC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2BD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD2BE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD2BF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD2C2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C4, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD2C5, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C6, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x70,0x00,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C7, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD2C8, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2C9, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2CA, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD2CB, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD2CC, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD2CD, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD2CE, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD2CF, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD2D0, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2D1, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2D2, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD2D3, {0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD2D4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD2D5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD2D6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD2D7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD2D8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2D9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD2DA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD2DB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2DC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2DD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD2DE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2DF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2E0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD2E1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD2E2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD2E3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD2E4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2E5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2E6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x24,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD2E7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD2E8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD2E9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD2EA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD2EB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD2EC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2ED, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2EE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3E,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD2EF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD2F0, {0x00,0x00,0x7E,0x40,0x40,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD2F1, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD2F2, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD2F3, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD2F4, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2F5, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD2F6, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD2F7, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2F8, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2F9, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD2FA, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2FB, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2FC, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD2FD, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD2FE, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD2FF, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD300, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD301, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD302, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD303, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD304, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD305, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD306, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD307, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD308, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD309, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD30A, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x40,0x40,0x3F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD30B, {0x00,0x00,0x7E,0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x3F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD30C, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD30D, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD30E, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD30F, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD310, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD311, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD312, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD313, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD314, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD315, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD316, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD317, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD318, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD319, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD31A, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD31B, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD31C, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD31D, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD31E, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD31F, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD320, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD321, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD322, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD323, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD324, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD325, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD326, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD327, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD328, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0x20,0x29,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xD329, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD32A, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD32B, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD32C, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD32D, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD32E, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD32F, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD330, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD331, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD332, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD333, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD334, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD335, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD336, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD337, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD338, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD339, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD33A, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD33B, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD33C, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD33D, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD33E, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD33F, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD340, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD341, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD342, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD343, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD344, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x70,0x24,0x40,0x24,0x40,0x24,0x40,0x24,0x70,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD345, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD346, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD347, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD348, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD349, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD34A, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD34B, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD34C, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD34D, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD34E, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD34F, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD350, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD351, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD352, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD353, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD354, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD355, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD356, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD357, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD358, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD359, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD35A, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD35B, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD35C, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD35D, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD35E, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD35F, {0x00,0x00,0x7E,0x40,0x00,0x70,0x24,0x40,0x24,0x70,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD360, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x29,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xD361, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD362, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD363, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD364, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD365, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD366, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD367, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD368, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD369, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD36A, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD36B, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD36C, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD36D, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD36E, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD36F, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD370, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD371, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD372, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD373, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD374, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD375, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD376, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD377, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD378, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD379, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD37A, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x29,0x20,0x7F,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD37B, {0x00,0x00,0x7D,0x20,0x01,0x20,0x29,0xE0,0x29,0x20,0x7F,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD37C, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD37D, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD37E, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD37F, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD380, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD381, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD382, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD383, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD384, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD385, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD386, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD387, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD388, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD389, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD38A, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD38B, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD38C, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD38D, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD38E, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD38F, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD390, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD391, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD392, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD393, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD394, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD395, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD396, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD397, {0x00,0x00,0x7E,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD398, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD399, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD39A, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD39B, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD39C, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD39D, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD39E, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD39F, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A0, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A1, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD3A2, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A3, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A4, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD3A5, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A6, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A7, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD3A8, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3A9, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3AA, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD3AB, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD3AC, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD3AD, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3AE, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD3AF, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD3B0, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3B1, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3B2, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD3B3, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD3B4, {0x00,0x00,0x7F,0x40,0x00,0x40,0x25,0xC0,0x24,0x40,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD3B5, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD3B6, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD3B7, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD3B8, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3B9, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD3BA, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD3BB, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3BC, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3BD, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD3BE, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3BF, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3C0, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD3C1, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3C2, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3C3, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD3C4, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3C5, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3C6, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD3C7, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD3C8, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD3C9, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD3CA, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD3CB, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD3CC, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3CD, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3CE, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD3CF, {0x00,0x00,0x7E,0x40,0x01,0xC0,0x24,0x40,0x25,0xC0,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD3D0, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD3D1, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD3D2, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD3D3, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD3D4, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3D5, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD3D6, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD3D7, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3D8, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3D9, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD3DA, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3DB, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3DC, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD3DD, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3DE, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3DF, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD3E0, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3E1, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3E2, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD3E3, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD3E4, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD3E5, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD3E6, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD3E7, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD3E8, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3E9, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD3EA, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x28,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD3EB, {0x00,0x00,0x7C,0xA0,0x03,0xA0,0x28,0xA0,0x2B,0xA0,0x7E,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD3EC, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD3ED, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD3EE, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD3EF, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD3F0, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3F1, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD3F2, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD3F3, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3F4, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3F5, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD3F6, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3F7, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3F8, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD3F9, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3FA, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3FB, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD3FC, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3FD, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD3FE, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD3FF, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD400, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD401, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD402, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD403, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD404, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD405, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD406, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD407, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x04,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD408, {0x00,0x00,0x7F,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0x7F,0x70,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD409, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD40A, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD40B, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD40C, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD40D, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD40E, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD40F, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD410, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD411, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD412, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD413, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD414, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD415, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD416, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD417, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD418, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD419, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD41A, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD41B, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD41C, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD41D, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD41E, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD41F, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD420, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD421, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD422, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x70,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD423, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x70,0x7F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD424, {0x00,0x00,0x7E,0xA0,0x00,0xA0,0x24,0xA0,0x24,0xA0,0x7E,0xE0,0x00,0xA0,0x10,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD425, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD426, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD427, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD428, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD429, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD42A, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD42B, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD42C, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD42D, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD42E, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD42F, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD430, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD431, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD432, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD433, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD434, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD435, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD436, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD437, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD438, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD439, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD43A, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD43B, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD43C, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD43D, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD43E, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD43F, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xE0,0x7C,0xA0,0x7E,0xA0,0x00,0x00,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD440, {0x00,0x00,0x7F,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0x7F,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD441, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD442, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD443, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD444, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD445, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD446, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD447, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD448, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD449, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD44A, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD44B, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD44C, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD44D, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD44E, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD44F, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD450, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD451, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD452, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD453, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD454, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD455, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD456, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD457, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD458, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD459, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD45A, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD45B, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD45C, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD45D, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD45E, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD45F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD460, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD461, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD462, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD463, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD464, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD465, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD466, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD467, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD468, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD469, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD46A, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD46B, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD46C, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD46D, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD46E, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD46F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD470, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD471, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD472, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD473, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD474, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD475, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD476, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD477, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x11,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD478, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xD479, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD47A, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD47B, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD47C, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x44,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD47D, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD47E, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD47F, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD480, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD481, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD482, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD483, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD484, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD485, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD486, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD487, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD488, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD489, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD48A, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD48B, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD48C, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD48D, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD48E, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD48F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD490, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD491, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD492, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD493, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD494, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD495, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD496, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD497, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD498, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD499, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD49A, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD49B, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD49C, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD49D, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD49E, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD49F, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4A0, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD4A1, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4A2, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4A3, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD4A4, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4A5, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4A6, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD4A7, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD4A8, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD4A9, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD4AA, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4AB, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4AC, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4AD, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4AE, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0xC0,0x7C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD4AF, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0xC0,0x00,0x40,0x7F,0x40,0x08,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD4B0, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x28,0xA0,0x28,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xD4B1, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD4B2, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD4B3, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD4B4, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x08,0xA0,0x28,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4B5, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD4B6, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD4B7, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4B8, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4B9, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD4BA, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4BB, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4BC, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3C,0xA0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD4BD, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4BE, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4BF, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x38,0xA0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD4C0, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4C1, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4C2, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD4C3, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4C4, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD4C5, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4C6, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4C7, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4C8, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4C9, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4CA, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD4CB, {0x00,0x00,0x7C,0xA0,0x00,0xA0,0x29,0xA0,0x7C,0xA0,0x00,0xA0,0x7E,0xA0,0x17,0xA0,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD4CC, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7E,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD4CD, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD4CE, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD4CF, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD4D0, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4D1, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD4D2, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD4D3, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4D4, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4D5, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD4D6, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4D7, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4D8, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3C,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD4D9, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4DA, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD4DB, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x38,0xC0,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD4DC, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4DD, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4DE, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD4DF, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD4E0, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD4E1, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD4E2, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4E3, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x09,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD4E4, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4E5, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD4E6, {0x00,0x00,0x7C,0x40,0x00,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD4E7, {0x00,0x00,0x7C,0x40,0x28,0x40,0x7C,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x0F,0x40,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD4E8, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xD4E9, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD4EA, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD4EB, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD4EC, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x51,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4ED, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD4EE, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD4EF, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F0, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F1, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD4F2, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F3, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F4, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD4F5, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F6, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F7, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD4F8, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4F9, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD4FA, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD4FB, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD4FC, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD4FD, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD4FE, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD4FF, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD500, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD501, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD502, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD503, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD504, {0x00,0x00,0x7F,0xC0,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD505, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD506, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD507, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x08,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD508, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0xFF,0xE0,0x40,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD509, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x41,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD50A, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x01,0x00,0x47,0xE0,0x42,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD50B, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD50C, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD50D, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD50E, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD50F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD510, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x79,0x00,0x09,0x00,0x7A,0x80,0x44,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD511, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD512, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD513, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD514, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD515, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD516, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x49,0x00,0x7A,0x80,0x4C,0x40,0x38,0x20,0x00,0x00,}}, +{ 0xD517, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD518, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD519, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD51A, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x00,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD51B, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x02,0x00,0x7F,0xC0,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD51C, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD51D, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD51E, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD51F, {0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD520, {0x00,0x00,0x7F,0x40,0x00,0x40,0x22,0x40,0x22,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD521, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD522, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD523, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD524, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD525, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD526, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x01,0x40,0x27,0xE0,0x22,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD527, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD528, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD529, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD52A, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD52B, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD52C, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD52D, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD52E, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD52F, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD530, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD531, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD532, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD533, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD534, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD535, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD536, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD537, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD538, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD539, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD53A, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD53B, {0x00,0x00,0x7F,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD53C, {0x00,0x00,0x7F,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD53D, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD53E, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD53F, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD540, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD541, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD542, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD543, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD544, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD545, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD546, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD547, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD548, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD549, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD54A, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD54B, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD54C, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD54D, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD54E, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD54F, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD550, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD551, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD552, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD553, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD554, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD555, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD556, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD557, {0x00,0x00,0x7E,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x7F,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD558, {0x00,0x00,0x3C,0x40,0x00,0x40,0xFF,0x40,0x00,0x40,0x3C,0x70,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD559, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD55A, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD55B, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD55C, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x20,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD55D, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD55E, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD55F, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD560, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD561, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD562, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD563, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD564, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD565, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD566, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD567, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD568, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD569, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD56A, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD56B, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD56C, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD56D, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD56E, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD56F, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD570, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD571, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD572, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x70,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD573, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x70,0x44,0x40,0x38,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD574, {0x00,0x00,0x39,0x20,0x01,0x20,0xFF,0x20,0x01,0x20,0x39,0x20,0x45,0xE0,0x45,0x20,0x45,0x20,0x39,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xD575, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD576, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD577, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD578, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD579, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD57A, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD57B, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD57C, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD57D, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD57E, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD57F, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD580, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD581, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD582, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD583, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD584, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD585, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD586, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD587, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD588, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD589, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD58A, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD58B, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD58C, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD58D, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD58E, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD58F, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD590, {0x00,0x00,0x3C,0x40,0x00,0x40,0xFF,0x70,0x00,0x40,0x3C,0x40,0x42,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD591, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD592, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD593, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD594, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD595, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD596, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD597, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD598, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD599, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD59A, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD59B, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD59C, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD59D, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD59E, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD59F, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD5A0, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5A1, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5A2, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD5A3, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD5A4, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD5A5, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD5A6, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5A7, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5A8, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5A9, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5AA, {0x00,0x00,0x10,0x40,0xFF,0x70,0x24,0x40,0x42,0x70,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD5AB, {0x00,0x00,0x10,0x40,0xFE,0x70,0x44,0x40,0x44,0x70,0x38,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD5AC, {0x00,0x00,0x39,0x20,0x01,0x20,0xFF,0xE0,0x01,0x20,0x39,0x20,0x45,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x01,0x20,0x00,0x00,}}, +{ 0xD5AD, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD5AE, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD5AF, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD5B0, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5B1, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD5B2, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD5B3, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5B4, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5B5, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD5B6, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5B7, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5B8, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD5B9, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5BA, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5BB, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD5BC, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5BD, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5BE, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD5BF, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD5C0, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD5C1, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5C2, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5C3, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5C4, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5C5, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5C6, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD5C7, {0x00,0x00,0x11,0x20,0xFF,0x20,0x45,0xE0,0x45,0x20,0x39,0x20,0x01,0x20,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD5C8, {0x00,0x00,0x3C,0x40,0x00,0x40,0xFF,0x40,0x01,0xC0,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD5C9, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD5CA, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD5CB, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD5CC, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5CD, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD5CE, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD5CF, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5D0, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5D1, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD5D2, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5D3, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5D4, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD5D5, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5D6, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5D7, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD5D8, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5D9, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5DA, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD5DB, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD5DC, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD5DD, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD5DE, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5DF, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5E0, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5E1, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5E2, {0x00,0x00,0x10,0x40,0xFF,0x40,0x25,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD5E3, {0x00,0x00,0x10,0x40,0xFE,0x40,0x45,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD5E4, {0x00,0x00,0x38,0xA0,0x00,0xA0,0xFE,0xA0,0x00,0xA0,0x3B,0xA0,0x44,0xA0,0x44,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD5E5, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD5E6, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD5E7, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD5E8, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5E9, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD5EA, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD5EB, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5EC, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5ED, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD5EE, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5EF, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5F0, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD5F1, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5F2, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5F3, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD5F4, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5F5, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5F6, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD5F7, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD5F8, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD5F9, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD5FA, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5FB, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD5FC, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5FD, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD5FE, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD5FF, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x47,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD600, {0x00,0x00,0x3C,0x40,0x00,0x40,0xFF,0xC0,0x00,0x40,0x3C,0x40,0x43,0xC0,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD601, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD602, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD603, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD604, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD605, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD606, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD607, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD608, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD609, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD60A, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD60B, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3D,0x40,0x05,0x40,0x3D,0xC0,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD60C, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD60D, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3D,0xE0,0x05,0x00,0x3D,0xC0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD60E, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD60F, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD610, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD611, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD612, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD613, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x02,0x00,0x05,0x00,0x08,0x80,0x30,0x60,0x00,0x00,}}, +{ 0xD614, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD615, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD616, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD617, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD618, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD619, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD61A, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x24,0x40,0x43,0xC0,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD61B, {0x00,0x00,0x10,0x40,0xFF,0xC0,0x44,0x40,0x45,0xC0,0x38,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD61C, {0x00,0x00,0x38,0xA0,0x00,0xA0,0xFF,0xA0,0x00,0xA0,0x38,0xA0,0x47,0xA0,0x44,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD61D, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD61E, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xE0,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD61F, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD620, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD621, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x23,0xE0,0x20,0x80,0x21,0x40,0x1E,0x30,0x00,0x00,}}, +{ 0xD622, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x23,0xF0,0x21,0x20,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD623, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD624, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD625, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x04,0x20,0x3C,0x20,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD626, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x20,0x3D,0x20,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD627, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0x20,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD628, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD629, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD62A, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD62B, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x38,0x80,0x0F,0xE0,0x3A,0x40,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD62C, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD62D, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD62E, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD62F, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x00,0x80,0x00,0x80,0x03,0x40,0x1C,0x30,0x00,0x00,}}, +{ 0xD630, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xA0,0x23,0x10,0x00,0x00,}}, +{ 0xD631, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD632, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD633, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x80,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD634, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD635, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD636, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD637, {0x00,0x00,0x10,0xA0,0xFF,0xA0,0x44,0xA0,0x47,0xA0,0x38,0xA0,0x00,0xA0,0x07,0x00,0x00,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD638, {0x00,0x00,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD639, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD63A, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD63B, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD63C, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD63D, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD63E, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD63F, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD640, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD641, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD642, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD643, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD644, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD645, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD646, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD647, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD648, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD649, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD64A, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD64B, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD64C, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD64D, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD64E, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD64F, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD650, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD651, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD652, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD653, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x04,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD654, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x14,0x40,0x22,0x70,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD655, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD656, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD657, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD658, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD659, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD65A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD65B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD65C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD65D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD65E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD65F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD660, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD661, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD662, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD663, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD664, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD665, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD666, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD667, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD668, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD669, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD66A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD66B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD66C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD66D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD66E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD66F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x70,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD670, {0x00,0x00,0x38,0xA0,0x00,0xA0,0xFE,0xA0,0x28,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x00,}}, +{ 0xD671, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD672, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD673, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xD674, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x20,0x20,0x00,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD675, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD676, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x40,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD677, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD678, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD679, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD67A, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD67B, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD67C, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD67D, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7F,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xD67E, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD67F, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD680, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD681, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x20,0x20,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD682, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x24,0x00,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD683, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD684, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD685, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD686, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD687, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD688, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD689, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD68A, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x00,0x00,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD68B, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xE0,0x44,0xA0,0x38,0xA0,0x10,0xA0,0x7E,0xA0,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD68C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD68D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD68E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD68F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD690, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD691, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD692, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x80,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD693, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD694, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD695, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD696, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD697, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD698, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD699, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD69A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD69B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD69C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD69D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD69E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x24,0x80,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD69F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD6A0, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD6A1, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD6A2, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD6A3, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD6A4, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6A5, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6A6, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x40,0x00,0x00,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6A7, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x08,0x40,0x7F,0x80,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD6A8, {0x00,0x00,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD6A9, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD6AA, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD6AB, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD6AC, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6AD, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD6AE, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD6AF, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B0, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B1, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD6B2, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B3, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B4, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD6B5, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B6, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B7, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD6B8, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6B9, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6BA, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD6BB, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD6BC, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD6BD, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD6BE, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD6BF, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD6C0, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6C1, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6C2, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD6C3, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x11,0x00,0xFF,0xE0,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD6C4, {0x00,0x00,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xD6C5, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD6C6, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD6C7, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD6C8, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x44,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6C9, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD6CA, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD6CB, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6CC, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6CD, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD6CE, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6CF, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6D0, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD6D1, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6D2, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6D3, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD6D4, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6D5, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x44,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6D6, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x4C,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD6D7, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xD6D8, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD6D9, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD6DA, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD6DB, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD6DC, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6DD, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6DE, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x04,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD6DF, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x04,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD6E0, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x0B,0xC0,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD6E1, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD6E2, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD6E3, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD6E4, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6E5, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD6E6, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD6E7, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6E8, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6E9, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD6EA, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6EB, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6EC, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD6ED, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD6EE, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD6EF, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD6F0, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6F1, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6F2, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD6F3, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD6F4, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD6F5, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD6F6, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD6F7, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD6F8, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6F9, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD6FA, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD6FB, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0xC0,0x38,0x40,0x7F,0x40,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD6FC, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x44,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x13,0xA0,0x10,0xA0,0x10,0xA0,0x00,0x00,}}, +{ 0xD6FD, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,}}, +{ 0xD6FE, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x20,0x02,0x20,0x00,0x00,}}, +{ 0xD6FF, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x40,0x04,0xA0,0x05,0x10,0x00,0x00,}}, +{ 0xD700, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x30,0x20,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD701, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x23,0xE0,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD702, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xE0,0x23,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD703, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD704, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x00,0x20,0x3F,0xE0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD705, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x20,0x20,0x1E,0x20,0x00,0x00,}}, +{ 0xD706, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD707, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x05,0x20,0x3D,0xE0,0x21,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD708, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x00,0x3C,0x80,0x21,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD709, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3D,0xE0,0x05,0x00,0x3D,0xE0,0x21,0x00,0x1F,0xF0,0x00,0x00,}}, +{ 0xD70A, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD70B, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3C,0x00,0x04,0x40,0x3F,0xF0,0x21,0x20,0x1C,0xC0,0x00,0x00,}}, +{ 0xD70C, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD70D, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x30,0xA0,0x3F,0xE0,0x20,0x20,0x1F,0xE0,0x00,0x00,}}, +{ 0xD70E, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x34,0xA0,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD70F, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD710, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD711, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x1F,0xC0,0x20,0x20,0x1F,0xC0,0x00,0x00,}}, +{ 0xD712, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD713, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD714, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD715, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD716, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x38,0xA0,0x00,0xA0,0x7E,0xA0,0x10,0xA0,0x3F,0xE0,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD717, {0x00,0x00,0x10,0xA0,0xFE,0xA0,0x45,0xA0,0x44,0xA0,0x7E,0xA0,0x10,0xA0,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD718, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,}}, +{ 0xD719, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD71A, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD71B, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD71C, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x28,0x40,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD71D, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD71E, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD71F, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD720, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD721, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD722, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD723, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD724, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD725, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD726, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD727, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD728, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD729, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x28,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD72A, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x2C,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD72B, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD72C, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD72D, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD72E, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD72F, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD730, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD731, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD732, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x7F,0xC0,0x08,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD733, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x38,0x40,0x7F,0xC0,0x08,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD734, {0x00,0x00,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x00,0x00,}}, +{ 0xD735, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD736, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD737, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD738, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x51,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD739, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD73A, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD73B, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD73C, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD73D, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD73E, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x40,0x7A,0x40,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD73F, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7A,0x40,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD740, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x79,0x00,0x09,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD741, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD742, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x77,0xC0,0x12,0x80,0x72,0x80,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD743, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD744, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD745, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x51,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD746, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x59,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD747, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x0D,0x00,0x70,0xC0,0x00,0x00,}}, +{ 0xD748, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD749, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD74A, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD74B, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x11,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD74C, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD74D, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD74E, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD74F, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0xFF,0xE0,0x11,0x00,0x0E,0x00,0x00,0x00,0xFF,0xE0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD750, {0x00,0x00,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x11,0x00,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xD751, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD752, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD753, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x78,0x80,0x09,0x40,0x0A,0x20,0x00,0x00,}}, +{ 0xD754, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x40,0x00,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD755, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x47,0xC0,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD756, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x80,0x47,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD757, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD758, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x40,0x7F,0xC0,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD759, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x08,0x40,0x78,0x40,0x40,0x40,0x3C,0x40,0x00,0x00,}}, +{ 0xD75A, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD75B, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x78,0x00,0x0A,0x40,0x7B,0xC0,0x42,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD75C, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x00,0x79,0x00,0x42,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD75D, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x7B,0xC0,0x0A,0x00,0x7B,0x80,0x42,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD75E, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x70,0x00,0x10,0x00,0x77,0xC0,0x42,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD75F, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x78,0x00,0x08,0x80,0x7F,0xE0,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD760, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD761, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x40,0x40,0x7F,0xC0,0x40,0x40,0x3F,0xC0,0x00,0x00,}}, +{ 0xD762, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x48,0x00,0x79,0x00,0x4A,0x80,0x3C,0x40,0x00,0x00,}}, +{ 0xD763, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x04,0x00,0x1B,0x00,0x60,0xC0,0x00,0x00,}}, +{ 0xD764, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x11,0x00,0x2A,0x80,0x44,0x40,0x00,0x00,}}, +{ 0xD765, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x3F,0x80,0x40,0x40,0x3F,0x80,0x00,0x00,}}, +{ 0xD766, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD767, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x0A,0x00,0x71,0xC0,0x00,0x00,}}, +{ 0xD768, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD769, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x40,0x00,0x7F,0x80,0x40,0x00,0x3F,0xC0,0x00,0x00,}}, +{ 0xD76A, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0x1F,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x7F,0xC0,0x11,0x00,0x7F,0xC0,0x00,0x00,}}, +{ 0xD76B, {0x00,0x00,0x04,0x00,0xFF,0xE0,0x20,0x80,0x20,0x80,0xFF,0xE0,0x00,0x00,0x00,0x00,0x02,0x00,0x7F,0xC0,0x20,0x80,0x1F,0x00,0x00,0x00,}}, +{ 0xD76C, {0x00,0x00,0x1C,0x40,0x00,0x40,0x7F,0x40,0x14,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD76D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD76E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD76F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD770, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD771, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x27,0xC0,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD772, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0xC0,0x27,0xE0,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD773, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD774, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD775, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD776, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD777, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD778, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3C,0x00,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD779, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xE0,0x00,0x00,}}, +{ 0xD77A, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x00,0x3B,0xE0,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD77B, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x38,0x00,0x08,0x80,0x3F,0xE0,0x22,0x40,0x19,0x80,0x00,0x00,}}, +{ 0xD77C, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD77D, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD77E, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x24,0xC0,0x3D,0x40,0x26,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD77F, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD780, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD781, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x1F,0x80,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD782, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD783, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x02,0x80,0x3C,0x60,0x00,0x00,}}, +{ 0xD784, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD785, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD786, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x1C,0x40,0x00,0x40,0x7F,0xC0,0x00,0x40,0x3F,0xC0,0x08,0x80,0x3F,0xC0,0x00,0x00,}}, +{ 0xD787, {0x00,0x00,0x08,0x40,0x7F,0x40,0x22,0x40,0x22,0x40,0x7F,0xC0,0x00,0x40,0x00,0x00,0x01,0x00,0x3F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xD788, {0x00,0x00,0x3C,0x40,0x00,0x40,0xFF,0x40,0x00,0x40,0x3C,0x40,0x42,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD789, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,}}, +{ 0xD78A, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,}}, +{ 0xD78B, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3C,0x80,0x04,0x80,0x05,0x40,0x02,0x20,0x00,0x00,}}, +{ 0xD78C, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x40,0x20,0x00,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD78D, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x27,0xC0,0x21,0x00,0x22,0x80,0x1C,0x60,0x00,0x00,}}, +{ 0xD78E, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x01,0x00,0x27,0xE0,0x22,0x40,0x22,0x40,0x1D,0x80,0x00,0x00,}}, +{ 0xD78F, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x00,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD790, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x00,0x40,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD791, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x04,0x40,0x3C,0x40,0x20,0x40,0x1C,0x40,0x00,0x00,}}, +{ 0xD792, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3D,0xC0,0x05,0x40,0x3D,0x40,0x21,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD793, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3A,0x40,0x0A,0x40,0x3B,0xC0,0x22,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD794, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3C,0x80,0x04,0x80,0x3D,0x40,0x22,0x20,0x1C,0x10,0x00,0x00,}}, +{ 0xD795, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3B,0xC0,0x0A,0x00,0x3B,0xC0,0x22,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD796, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3B,0xE0,0x09,0x40,0x39,0x40,0x21,0x40,0x1F,0xE0,0x00,0x00,}}, +{ 0xD797, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x78,0x80,0x0F,0xE0,0x7A,0x40,0x42,0x40,0x39,0x80,0x00,0x00,}}, +{ 0xD798, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD799, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x1F,0xC0,0x00,0x00,}}, +{ 0xD79A, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x24,0x80,0x3C,0x80,0x25,0x40,0x1E,0x20,0x00,0x00,}}, +{ 0xD79B, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x20,0x00,0x00,}}, +{ 0xD79C, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x15,0x40,0x22,0x20,0x00,0x00,}}, +{ 0xD79D, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x1F,0x80,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00,}}, +{ 0xD79E, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD79F, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x01,0x00,0x3F,0xE0,0x01,0x00,0x06,0x80,0x38,0x60,0x00,0x00,}}, +{ 0xD7A0, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD7A1, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x3F,0xC0,0x20,0x00,0x3F,0xC0,0x20,0x00,0x1F,0xC0,0x00,0x00,}}, +{ 0xD7A2, {0x00,0x00,0x10,0x40,0xFF,0x40,0x24,0x40,0x42,0x40,0x42,0x40,0x3C,0x40,0x00,0x00,0x3F,0xE0,0x08,0x80,0x08,0x80,0x3F,0xE0,0x00,0x00,}}, +{ 0xD7A3, {0x00,0x00,0x10,0x40,0xFE,0x40,0x44,0x40,0x44,0x40,0x38,0x40,0x00,0x40,0x07,0x00,0x00,0x00,0x7F,0xE0,0x10,0x40,0x0F,0x80,0x00,0x00,}}, +{ 0xFB01, {0x00,0x00,0x00,0x00,0x07,0x00,0x09,0x80,0x18,0x00,0x3F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFB02, {0x00,0x00,0x00,0x00,0x07,0x80,0x09,0x80,0x19,0x80,0x3F,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFE30, {0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE31, {0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xFE32, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE33, {0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,}}, +{ 0xFE34, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE35, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x3F,0x80,0x60,0xC0,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE36, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x60,0xC0,0x3F,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE37, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x7B,0xC0,0xF1,0xE0,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE38, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0xF1,0xE0,0x7B,0xC0,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE39, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x40,0x40,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE3A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x40,0x40,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE3B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0xF1,0xE0,0xC0,0x60,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE3C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0xC0,0x60,0xF1,0xE0,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE3D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0xC0,0x60,0x0E,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE3E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x60,0x31,0x80,0x0E,0x00,0xC0,0x60,0x31,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE3F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0xC0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE40, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x60,0x31,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE41, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE42, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE43, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x80,0x20,0xFF,0xA0,0x00,0xA0,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE44, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xA0,0x00,0xBF,0xE0,0x80,0x20,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE45, {0x00,0x00,0xEE,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE46, {0x00,0x00,0xF5,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE47, {0x00,0x00,0x55,0x40,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE48, {0x00,0x00,0x55,0x40,0xAA,0xA0,0x00,0x00,0x55,0x40,0xAA,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE49, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0xE0,0x00,0x00,}}, +{ 0xFE4A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF5,0xE0,0x00,0x00,}}, +{ 0xFE4B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x40,0xAA,0xA0,0x00,0x00,}}, +{ 0xFE50, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0xFE51, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x30,0x00,0x10,0x00,0x08,0x00,0x00,0x00,}}, +{ 0xFE52, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE53, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xFE54, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE55, {0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x03,0x80,0x07,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE56, {0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE57, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE58, {0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE59, {0x00,0x00,0x00,0x00,0x0C,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE5A, {0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE5B, {0x00,0x00,0x00,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE5C, {0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE5D, {0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE5E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x1F,0x00,0x0A,0x00,0x1F,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE5F, {0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x12,0x00,0x12,0x00,0x0C,0x00,0x0A,0x80,0x11,0x00,0x12,0x80,0x0C,0x40,0x00,0x00,0x00,0x00,}}, +{ 0xFE60, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x1F,0x00,0x0E,0x00,0x11,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE61, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE62, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE63, {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE64, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE65, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE66, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE67, {0x00,0x00,0x00,0x00,0x04,0x00,0x0F,0x00,0x14,0x00,0x14,0x00,0x0C,0x00,0x06,0x00,0x05,0x00,0x05,0x00,0x1E,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xFE68, {0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x15,0x00,0x0A,0x00,0x02,0x00,0x04,0x00,0x05,0x00,0x0A,0x80,0x09,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFE69, {0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x10,0x40,0x25,0x40,0x2B,0x40,0x29,0x40,0x27,0x80,0x10,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF00, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF01, {0x00,0x00,0x04,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xFF02, {0x00,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF03, {0x00,0x00,0x08,0x80,0x08,0x80,0x3F,0xC0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7F,0x80,0x22,0x00,0x22,0x00,0x22,0x00,0x00,0x00,}}, +{ 0xFF04, {0x00,0x00,0x04,0x00,0x1F,0x00,0x24,0x80,0x25,0x80,0x3C,0x00,0x0F,0x00,0x05,0x80,0x34,0x80,0x24,0x80,0x1F,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xFF05, {0x00,0x00,0x38,0x20,0x6C,0x40,0x6C,0x80,0x6D,0x00,0x3A,0x00,0x05,0xC0,0x0B,0x60,0x13,0x60,0x23,0x60,0x41,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF06, {0x00,0x00,0x1C,0x00,0x32,0x00,0x32,0x00,0x3C,0x00,0x19,0xC0,0x38,0x80,0x6D,0x80,0x63,0x00,0x67,0x00,0x38,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF07, {0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF08, {0x00,0x00,0x00,0x80,0x01,0x00,0x03,0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x03,0x00,0x01,0x00,0x00,0x80,0x00,0x00,}}, +{ 0xFF09, {0x00,0x00,0x20,0x00,0x10,0x00,0x18,0x00,0x08,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x18,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0xFF0A, {0x00,0x00,0x04,0x00,0x0E,0x00,0x24,0x80,0x75,0xC0,0x0E,0x00,0x0E,0x00,0x75,0xC0,0x24,0x80,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF0B, {0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7F,0xC0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF0C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}}, +{ 0xFF0D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF0E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF0F, {0x00,0x00,0x00,0x60,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF10, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x0E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF11, {0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF12, {0x00,0x00,0x00,0x00,0x0F,0x00,0x11,0x80,0x38,0xC0,0x19,0x80,0x01,0x00,0x02,0x00,0x04,0x40,0x0F,0x80,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF13, {0x00,0x00,0x00,0x00,0x0F,0x00,0x11,0x80,0x30,0xC0,0x01,0x80,0x07,0x00,0x00,0x80,0x30,0xC0,0x11,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF14, {0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x05,0x80,0x09,0x80,0x11,0x80,0x31,0x80,0x3F,0xC0,0x01,0x80,0x03,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF15, {0x00,0x00,0x00,0x00,0x1F,0x80,0x1F,0x00,0x10,0x00,0x1F,0x00,0x01,0x80,0x00,0xC0,0x00,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF16, {0x00,0x00,0x00,0x00,0x0F,0x00,0x11,0x80,0x30,0x00,0x2F,0x00,0x71,0x80,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF17, {0x00,0x00,0x00,0x00,0x1F,0xC0,0x1F,0x80,0x21,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF18, {0x00,0x00,0x00,0x00,0x0F,0x00,0x10,0x80,0x38,0xC0,0x1D,0x80,0x0F,0x00,0x1B,0x80,0x31,0xC0,0x10,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF19, {0x00,0x00,0x00,0x00,0x06,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x19,0xC0,0x0E,0xC0,0x00,0x80,0x31,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF1A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF1B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x02,0x00,0x04,0x00,0x00,0x00,}}, +{ 0xFF1C, {0x00,0x00,0x00,0x40,0x01,0x80,0x02,0x00,0x0C,0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x0C,0x00,0x02,0x00,0x01,0x80,0x00,0x40,0x00,0x00,}}, +{ 0xFF1D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF1E, {0x00,0x00,0x20,0x00,0x18,0x00,0x04,0x00,0x03,0x00,0x00,0x80,0x00,0x40,0x00,0x80,0x03,0x00,0x04,0x00,0x18,0x00,0x20,0x00,0x00,0x00,}}, +{ 0xFF1F, {0x00,0x00,0x0E,0x00,0x13,0x00,0x21,0x80,0x31,0x80,0x33,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}}, +{ 0xFF20, {0x00,0x00,0x07,0x00,0x18,0xC0,0x27,0x20,0x29,0xA0,0x49,0xA0,0x51,0x20,0x53,0x40,0x4E,0x80,0x20,0x20,0x1F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF21, {0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x09,0x00,0x09,0x80,0x10,0x80,0x1F,0xC0,0x20,0x40,0x70,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xFF22, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3F,0x00,0x30,0x80,0x30,0xC0,0x30,0xC0,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF23, {0x00,0x00,0x00,0x00,0x07,0x40,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF24, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x31,0x80,0x7E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF25, {0x00,0x00,0x00,0x00,0x7F,0x80,0x30,0x80,0x30,0x00,0x31,0x00,0x3F,0x00,0x31,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF26, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x18,0x40,0x18,0x00,0x18,0x80,0x1F,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF27, {0x00,0x00,0x00,0x00,0x0E,0x80,0x31,0x80,0x60,0x00,0x60,0x00,0x63,0xC0,0x61,0x80,0x61,0x80,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF28, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x3F,0xC0,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xFF29, {0x00,0x00,0x00,0x00,0x1F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF2A, {0x00,0x00,0x00,0x00,0x07,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x61,0x80,0x61,0x80,0x63,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF2B, {0x00,0x00,0x00,0x00,0x79,0xE0,0x30,0x80,0x31,0x00,0x33,0x00,0x35,0x80,0x39,0x80,0x30,0xC0,0x30,0xC0,0x79,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xFF2C, {0x00,0x00,0x00,0x00,0x7C,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF2D, {0x00,0x00,0x00,0x00,0x61,0xC0,0x31,0x80,0x31,0x80,0x3B,0x80,0x3B,0x80,0x2D,0x80,0x2D,0x80,0x25,0x80,0x71,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF2E, {0x00,0x00,0x00,0x00,0x31,0xC0,0x18,0x80,0x1C,0x80,0x16,0x80,0x16,0x80,0x13,0x80,0x11,0x80,0x10,0x80,0x39,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF2F, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x31,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF30, {0x00,0x00,0x00,0x00,0x3F,0x00,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF31, {0x00,0x00,0x00,0x00,0x0E,0x00,0x31,0x80,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x60,0xC0,0x6C,0xC0,0x33,0x80,0x1F,0x80,0x00,0xC0,0x00,0x00,}}, +{ 0xFF32, {0x00,0x00,0x00,0x00,0x7E,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x3E,0x00,0x33,0x00,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF33, {0x00,0x00,0x00,0x00,0x0E,0x80,0x11,0x80,0x30,0x80,0x1C,0x00,0x0F,0x00,0x03,0x80,0x20,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF34, {0x00,0x00,0x00,0x00,0x3F,0xC0,0x26,0x40,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF35, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x40,0x18,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF36, {0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x18,0x40,0x18,0x80,0x0C,0x80,0x0D,0x00,0x07,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF37, {0x00,0x00,0x00,0x00,0xEE,0x60,0x66,0x40,0x66,0x40,0x37,0xC0,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF38, {0x00,0x00,0x00,0x00,0x79,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0E,0x00,0x13,0x00,0x21,0x80,0x63,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF39, {0x00,0x00,0x00,0x00,0x7B,0xC0,0x31,0x00,0x1A,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF3A, {0x00,0x00,0x00,0x00,0x7F,0x80,0x43,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x40,0x7F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF3B, {0x00,0x00,0x07,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x80,0x00,0x00,}}, +{ 0xFF3C, {0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x60,0x00,0x00,0x00,0x00,}}, +{ 0xFF3D, {0x00,0x00,0x3C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x3C,0x00,0x00,0x00,}}, +{ 0xFF3E, {0x00,0x00,0x06,0x00,0x0F,0x00,0x10,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF3F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,}}, +{ 0xFF40, {0x00,0x00,0x0C,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF41, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x33,0x00,0x31,0x80,0x0F,0x80,0x31,0x80,0x63,0x80,0x3C,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF42, {0x00,0x00,0x00,0x00,0x38,0x00,0x18,0x00,0x1B,0x00,0x1D,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1C,0xC0,0x3B,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF43, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x18,0xC0,0x30,0x40,0x30,0x00,0x30,0x40,0x18,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF44, {0x00,0x00,0x00,0x00,0x03,0x80,0x01,0x80,0x0D,0x80,0x33,0x80,0x61,0x80,0x61,0x80,0x61,0x80,0x33,0x80,0x1D,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF45, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x18,0x80,0x30,0xC0,0x3F,0xC0,0x30,0x00,0x18,0x40,0x0F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF46, {0x00,0x00,0x00,0x00,0x07,0x00,0x09,0x80,0x18,0x00,0x3F,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF47, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x19,0x80,0x11,0x80,0x11,0x00,0x0E,0x00,0x1F,0x80,0x31,0xC0,0x10,0x40,0x0F,0x80,}}, +{ 0xFF48, {0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x36,0x00,0x3B,0x00,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF49, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF4A, {0x00,0x00,0x02,0x00,0x07,0x00,0x02,0x00,0x00,0x00,0x1F,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x13,0x00,0x32,0x00,0x1C,0x00,}}, +{ 0xFF4B, {0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x31,0x80,0x33,0x00,0x36,0x00,0x3F,0x00,0x33,0x00,0x31,0x80,0x79,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF4C, {0x00,0x00,0x00,0x00,0x1E,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF4D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6D,0x80,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x36,0xC0,0x76,0xE0,0x00,0x00,0x00,0x00,}}, +{ 0xFF4E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x00,0x39,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x7B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF4F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x30,0xC0,0x30,0xC0,0x30,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF50, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x1C,0x80,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x1C,0x80,0x1B,0x00,0x18,0x00,0x3C,0x00,}}, +{ 0xFF51, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xC0,0x13,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x13,0x80,0x0D,0x80,0x01,0x80,0x03,0xC0,}}, +{ 0xFF52, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x1D,0x80,0x18,0x80,0x18,0x00,0x18,0x00,0x18,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF53, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x30,0x80,0x30,0x00,0x1F,0x80,0x00,0xC0,0x30,0xC0,0x2F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF54, {0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x80,0x07,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF55, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x31,0x80,0x1E,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF56, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xE0,0x30,0x40,0x18,0x80,0x18,0x80,0x0D,0x00,0x0F,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF57, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xE0,0x76,0x40,0x36,0x40,0x3B,0x80,0x3B,0x80,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFF58, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xC0,0x18,0x80,0x0D,0x00,0x06,0x00,0x0F,0x00,0x11,0x80,0x3B,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF59, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7D,0xC0,0x30,0x80,0x18,0x80,0x19,0x00,0x0D,0x00,0x0E,0x00,0x66,0x00,0x64,0x00,0x38,0x00,}}, +{ 0xFF5A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x21,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x40,0x3F,0xC0,0x00,0x00,0x00,0x00,}}, +{ 0xFF5B, {0x00,0x00,0x01,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x02,0x00,0x0C,0x00,0x02,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x00,0x00,}}, +{ 0xFF5C, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFF5D, {0x00,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x06,0x00,0x08,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x00,0x00,}}, +{ 0xFF5E, {0x00,0x00,0x1C,0xC0,0x33,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFFE0, {0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x0F,0x00,0x1B,0x80,0x32,0xC0,0x32,0x00,0x34,0x00,0x1C,0xC0,0x0F,0x80,0x08,0x00,0x08,0x00,}}, +{ 0xFFE1, {0x00,0x00,0x03,0x80,0x06,0xC0,0x0C,0xC0,0x0C,0x00,0x0C,0x00,0x3F,0x80,0x0C,0x00,0x3C,0x20,0x4E,0x40,0x39,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFFE2, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,}}, +{ 0xFFE3, {0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFFE4, {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}}, +{ 0xFFE5, {0x00,0x00,0x70,0xE0,0x30,0x40,0x18,0x80,0x0C,0x80,0x0D,0x00,0x3F,0xC0,0x06,0x00,0x3F,0xC0,0x06,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFFE6, {0x00,0x00,0x00,0x00,0xEE,0x60,0x66,0x40,0x66,0x40,0x36,0xC0,0xFF,0xE0,0x3B,0x80,0xFF,0xE0,0x19,0x80,0x19,0x80,0x00,0x00,0x00,0x00,}}, +{ 0xFFFD, {0x0F,0x00,0x1F,0x80,0x30,0xC0,0x66,0x60,0x7E,0x60,0x7C,0xE0,0x79,0xE0,0x79,0xE0,0x7F,0xE0,0x39,0xC0,0x19,0x80,0x0F,0x00,0x00,0x00,}}, diff --git a/libmednahawk/src/video/font18x18.h b/libmednahawk/src/video/font18x18.h new file mode 100644 index 0000000000..50f78c8649 --- /dev/null +++ b/libmednahawk/src/video/font18x18.h @@ -0,0 +1,27990 @@ +{ 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0023, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0024, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x04, 0x98, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x80, 0x00, 0x04, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x88, 0x00, 0x00, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x88, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x01, 0x00, 0x22, 0x02, 0x00, 0x22, 0x04, 0x00, 0x22, 0x08, 0x00, 0x22, 0x10, 0x00, 0x22, 0x20, 0x00, 0x1C, 0x40, 0x00, 0x00, 0x8E, 0x00, 0x01, 0x11, 0x00, 0x02, 0x11, 0x00, 0x04, 0x11, 0x00, 0x08, 0x11, 0x00, 0x10, 0x11, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x07, 0x3E, 0x00, 0x06, 0x08, 0x00, 0x0F, 0x18, 0x00, 0x19, 0x90, 0x00, 0x30, 0xF0, 0x00, 0x20, 0x60, 0x00, 0x20, 0xF1, 0x00, 0x11, 0x9B, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0027, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0028, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0029, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0C, 0x98, 0x00, 0x06, 0xB0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0031, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x08, 0x00, 0x0C, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0xD0, 0x00, 0x01, 0x90, 0x00, 0x03, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xF0, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0D, 0xE0, 0x00, 0x0A, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0037, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x10, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0038, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x14, 0x00, 0x01, 0xEC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0040, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x08, 0xD4, 0x00, 0x11, 0x32, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x64, 0x00, 0x09, 0xB8, 0x00, 0x08, 0x02, 0x00, 0x06, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0042, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x14, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x18, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x04, 0x00, 0x04, 0x06, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x18, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0046, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC8, 0x00, 0x0C, 0x38, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x3E, 0x00, 0x30, 0x08, 0x00, 0x10, 0x08, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x28, 0x00, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0048, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x08, 0x30, 0x00, 0x08, 0x60, 0x00, 0x08, 0xC0, 0x00, 0x09, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x09, 0x80, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x60, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x18, 0x0C, 0x00, 0x1C, 0x1C, 0x00, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x16, 0x34, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x13, 0x64, 0x00, 0x11, 0x44, 0x00, 0x11, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x78, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x00, 0x0E, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x64, 0x00, 0x08, 0x24, 0x00, 0x08, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x18, 0x06, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x18, 0x06, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0051, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x18, 0x18, 0x00, 0x10, 0x08, 0x00, 0x30, 0x0C, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x30, 0x0C, 0x00, 0x11, 0x88, 0x00, 0x1A, 0x58, 0x00, 0x0C, 0x30, 0x00, 0x03, 0xD2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0052, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0053, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x06, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0054, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0055, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0056, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x04, 0x18, 0x00, 0x06, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x30, 0x00, 0x03, 0x20, 0x00, 0x01, 0x60, 0x00, 0x01, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0057, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xCF, 0x80, 0x10, 0xC2, 0x00, 0x10, 0xC2, 0x00, 0x11, 0xE2, 0x00, 0x19, 0x26, 0x00, 0x09, 0x24, 0x00, 0x0B, 0x34, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0x14, 0x00, 0x0E, 0x1C, 0x00, 0x06, 0x18, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0058, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x08, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0059, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x18, 0x00, 0x08, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005B, { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005C, { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x005D, { 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005E, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x0060, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0061, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0062, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x03, 0x08, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x03, 0x08, 0x00, 0x02, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0064, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xD0, 0x00, 0x04, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x04, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0066, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x88, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0068, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0069, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x04, 0x20, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x30, 0x00, 0x04, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x60, 0x00, 0x04, 0x18, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x38, 0x00, 0x18, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x39, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0070, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xF0, 0x00, 0x03, 0x08, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x03, 0x08, 0x00, 0x02, 0xF0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0071, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xD0, 0x00, 0x04, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x04, 0x30, 0x00, 0x03, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0072, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x01, 0x48, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0073, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x05, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xCF, 0x00, 0x08, 0xC4, 0x00, 0x0D, 0xEC, 0x00, 0x05, 0x28, 0x00, 0x05, 0x28, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x13, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007E, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x30, 0x00, 0x04, 0x48, 0x00, 0x04, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x03, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x23, 0x01, 0x00, 0x22, 0xC2, 0x00, 0x1C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x0B, 0xE8, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xE8, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A9, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x44, 0x00, 0x80, 0x44, 0x00, 0x80, 0x44, 0x00, 0x80, 0x44, 0x00, 0x80, 0x24, 0x09, 0x00, 0x22, 0x11, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x30, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x20, 0x00, 0x02, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x02, 0x40, 0x00, 0x01, 0x20, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AE, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x13, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x22, 0x09, 0x00, 0x42, 0x10, 0x80, 0x43, 0xE0, 0x80, 0x42, 0x10, 0x80, 0x42, 0x10, 0x80, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AF, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x22, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x22, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x05, 0xE6, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF6, 0x00, 0x1C, 0x36, 0x00, 0x30, 0x36, 0x00, 0x30, 0x36, 0x00, 0x1C, 0x36, 0x00, 0x07, 0xF6, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x02, 0x40, 0x00, 0x01, 0x20, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x01, 0x20, 0x00, 0x02, 0x40, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x01, 0x00, 0x02, 0x02, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x02, 0x22, 0x00, 0x07, 0x46, 0x00, 0x00, 0x8A, 0x00, 0x01, 0x12, 0x00, 0x02, 0x22, 0x00, 0x04, 0x7F, 0x80, 0x08, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x01, 0x00, 0x02, 0x02, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x02, 0x2F, 0x00, 0x07, 0x50, 0x80, 0x00, 0x80, 0x80, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x04, 0x04, 0x00, 0x08, 0x08, 0x80, 0x10, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x21, 0x01, 0x00, 0x01, 0x02, 0x00, 0x0E, 0x04, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x21, 0x22, 0x00, 0x1E, 0x46, 0x00, 0x00, 0x8A, 0x00, 0x01, 0x12, 0x00, 0x02, 0x22, 0x00, 0x04, 0x7F, 0x80, 0x08, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C0, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C3, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C4, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C5, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x70, 0x80, 0x00, 0xB0, 0x00, 0x01, 0x31, 0x00, 0x02, 0x3F, 0x00, 0x07, 0xF1, 0x00, 0x08, 0x30, 0x00, 0x10, 0x30, 0x00, 0x20, 0x30, 0x80, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x14, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C8, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CB, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CC, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CF, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x0C, 0x70, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x3F, 0x8C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x70, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D1, { 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x3E, 0x7F, 0x00, 0x0E, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x64, 0x00, 0x08, 0x24, 0x00, 0x08, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D2, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D5, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D6, { 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x38, 0x00, 0x0C, 0x6C, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x0D, 0x8C, 0x00, 0x07, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D9, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DC, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DD, { 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x3F, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0xE0, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x0D, 0xC0, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x80, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3E, 0x00, 0x61, 0xE3, 0x00, 0x00, 0xC1, 0x80, 0x7F, 0xFF, 0x80, 0x60, 0xC0, 0x00, 0x61, 0xE1, 0x80, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x03, 0xF0, 0x00, 0x06, 0xD8, 0x00, 0x0D, 0x8C, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x78, 0x00, 0x0C, 0x6C, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x07, 0xF8, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x13, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x06, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x07, 0x18, 0x00, 0x07, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x13, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0100, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0101, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0102, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0106, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x14, 0x00, 0x04, 0x0C, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0108, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x14, 0x00, 0x04, 0x0C, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010A, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x14, 0x00, 0x04, 0x0C, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010C, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x14, 0x00, 0x04, 0x0C, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x18, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x04, 0x00, 0x04, 0x06, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x18, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010F, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x70, 0x00, 0x00, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xD0, 0x00, 0x04, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x04, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x18, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x04, 0x00, 0x04, 0x06, 0x00, 0x04, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x18, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x03, 0xEC, 0x00, 0x06, 0x1C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x1C, 0x00, 0x03, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0112, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0114, { 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0116, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x04, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x80, 0x00, 0x04, 0x40, 0x00, 0x03, 0xC8, 0x00, 0x0C, 0x38, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x3E, 0x00, 0x30, 0x08, 0x00, 0x10, 0x18, 0x00, 0x0C, 0x28, 0x00, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011E, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC8, 0x00, 0x0C, 0x38, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x3E, 0x00, 0x30, 0x08, 0x00, 0x10, 0x18, 0x00, 0x0C, 0x28, 0x00, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0120, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC8, 0x00, 0x0C, 0x38, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x3E, 0x00, 0x30, 0x08, 0x00, 0x10, 0x18, 0x00, 0x0C, 0x28, 0x00, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC8, 0x00, 0x0C, 0x38, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x3E, 0x00, 0x30, 0x08, 0x00, 0x10, 0x08, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x28, 0x00, 0x03, 0xC8, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0124, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0125, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1D, 0x40, 0x00, 0x06, 0x20, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x3F, 0xFF, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x06, 0xF0, 0x00, 0x07, 0x98, 0x00, 0x07, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0128, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012A, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012C, { 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0130, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0xCC, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0134, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x08, 0x30, 0x00, 0x08, 0x60, 0x00, 0x08, 0xC0, 0x00, 0x09, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x09, 0x80, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x60, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x3E, 0xBE, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x30, 0x00, 0x04, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x60, 0x00, 0x04, 0x18, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0E, 0xC0, 0x00, 0x0C, 0x60, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0139, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013D, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0xCC, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0143, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x5F, 0x00, 0x0E, 0x84, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x64, 0x00, 0x08, 0x24, 0x00, 0x08, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x00, 0x0E, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x64, 0x00, 0x08, 0x24, 0x00, 0x08, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x44, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0147, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3D, 0x5F, 0x00, 0x0E, 0x84, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x64, 0x00, 0x08, 0x24, 0x00, 0x08, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x38, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xE0, 0x00, 0x0E, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014C, { 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014E, { 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0150, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x90, 0x00, 0x01, 0x20, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0151, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x90, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0152, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x60, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, 0x00, 0x18, 0x7C, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0xE0, 0x00, 0x07, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x31, 0xE3, 0x00, 0x60, 0xC1, 0x80, 0x60, 0xFF, 0x80, 0x60, 0xC0, 0x00, 0x31, 0xE1, 0x80, 0x1F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0154, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x01, 0x48, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0156, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xBE, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x01, 0x48, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0158, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0159, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x01, 0x48, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x06, 0x04, 0x00, 0x01, 0xE0, 0x00, 0x08, 0x18, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x05, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x06, 0x04, 0x00, 0x01, 0xE0, 0x00, 0x08, 0x18, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x05, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x06, 0x04, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x05, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0160, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x06, 0x04, 0x00, 0x01, 0xE0, 0x00, 0x08, 0x18, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x05, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x78, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0164, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0165, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x18, 0xC6, 0x00, 0x10, 0xC2, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x01, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x88, 0x00, 0x01, 0x98, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0168, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016A, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0170, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x20, 0x00, 0x02, 0x40, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x02, 0x40, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0174, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7D, 0x5F, 0x00, 0x12, 0x24, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x19, 0xCC, 0x00, 0x09, 0x48, 0x00, 0x09, 0x48, 0x00, 0x0B, 0x68, 0x00, 0x0A, 0x28, 0x00, 0x0E, 0x38, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xCF, 0x00, 0x08, 0xC4, 0x00, 0x0D, 0xEC, 0x00, 0x05, 0x28, 0x00, 0x05, 0x28, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0176, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3D, 0x5E, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x13, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0178, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x3F, 0x7E, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0179, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x18, 0x00, 0x08, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x18, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017B, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x18, 0x00, 0x08, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x18, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017D, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x18, 0x00, 0x08, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x18, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xB0, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x88, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01CD, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x68, 0x00, 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01CF, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D1, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D3, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D5, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D9, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x03, 0xE0, 0x00, 0x03, 0x60, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DA, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DB, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DC, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x06, 0x30, 0x00, 0x03, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DC, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x04, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0300, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0301, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0302, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0303, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x04, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0307, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0308, { 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030A, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0384, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0385, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0386, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x80, 0x00, 0x11, 0xC0, 0x00, 0x11, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x08, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0388, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x22, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0389, { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x5F, 0x1F, 0x00, 0x44, 0x04, 0x00, 0x44, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xF8, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038C, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x21, 0xE0, 0x00, 0x26, 0x18, 0x00, 0x2C, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x18, 0x06, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x18, 0x06, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038E, { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x47, 0xBC, 0x00, 0x4C, 0xE6, 0x00, 0x58, 0x43, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038F, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0xF0, 0x00, 0x23, 0x0C, 0x00, 0x26, 0x06, 0x00, 0x04, 0x02, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x04, 0x02, 0x00, 0x06, 0x06, 0x00, 0x03, 0x0C, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0390, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x8C, 0x00, 0x01, 0xFC, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x8C, 0x00, 0x01, 0x0C, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x0C, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x40, 0x00, 0x0F, 0xC0, 0x00, 0x0C, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x70, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x1A, 0x2C, 0x00, 0x1B, 0xEC, 0x00, 0x1B, 0xEC, 0x00, 0x1A, 0x2C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0E, 0x00, 0x0C, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x0C, 0x40, 0x00, 0x0F, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x8C, 0x00, 0x01, 0x0C, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x0C, 0x00, 0x38, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x1C, 0x00, 0x1C, 0x2C, 0x00, 0x16, 0x4C, 0x00, 0x13, 0x8C, 0x00, 0x11, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x38, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x16, 0x04, 0x00, 0x13, 0x04, 0x00, 0x11, 0x84, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x64, 0x00, 0x10, 0x34, 0x00, 0x10, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x70, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x0C, 0x06, 0x00, 0x06, 0x02, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x18, 0xC6, 0x00, 0x10, 0xC2, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x78, 0x00, 0x13, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0xCC, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0xCC, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0E, 0x00, 0x0C, 0x08, 0x00, 0x06, 0x10, 0x00, 0x03, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x02, 0x30, 0x00, 0x04, 0x18, 0x00, 0x08, 0x0C, 0x00, 0x38, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE7, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0xCC, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AA, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AB, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x19, 0xCC, 0x00, 0x30, 0x86, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x02, 0x24, 0x00, 0x04, 0x28, 0x00, 0x04, 0x30, 0x00, 0x08, 0x20, 0x00, 0x08, 0x60, 0x00, 0x08, 0xA4, 0x00, 0x07, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x78, 0x00, 0x09, 0x8C, 0x00, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x02, 0x0C, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x04, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AF, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xB0, 0x00, 0x01, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x18, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x18, 0x00, 0x04, 0x10, 0x00, 0x04, 0x30, 0x00, 0x04, 0x60, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC4, 0x00, 0x0C, 0x68, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, 0x18, 0x78, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0xE0, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x0D, 0xC0, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x00, 0x06, 0x22, 0x00, 0x03, 0x40, 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x08, 0x00, 0x06, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x07, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x90, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x06, 0x30, 0x00, 0x06, 0x40, 0x00, 0x06, 0x80, 0x00, 0x07, 0x80, 0x00, 0x06, 0x60, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0xB0, 0x00, 0x01, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0B, 0xEC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x60, 0x00, 0x0D, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x04, 0x18, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0E, 0x18, 0x00, 0x0C, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x10, 0x00, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x03, 0x30, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x00, 0x0C, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0C, 0x08, 0x00, 0x06, 0x30, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x0C, 0x98, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x10, 0x00, 0x01, 0xA0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x02, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x86, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x0C, 0x98, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x0D, 0xEC, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x00, 0x01, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x18, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x18, 0x00, 0x04, 0x10, 0x00, 0x04, 0x30, 0x00, 0x04, 0x60, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x10, 0x00, 0x06, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x18, 0x00, 0x02, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x18, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x18, 0x00, 0x04, 0x10, 0x00, 0x04, 0x30, 0x00, 0x04, 0x60, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC4, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x40, 0x00, 0x0F, 0xC0, 0x00, 0x0C, 0x40, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0402, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xB8, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8A, 0x00, 0x03, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0403, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1C, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x18, 0x00, 0x00, 0x14, 0x70, 0x00, 0x13, 0x88, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x06, 0x1C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x06, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0407, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xBC, 0x00, 0x00, 0xA2, 0x00, 0x00, 0xA1, 0x00, 0x00, 0xA1, 0x00, 0x00, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x31, 0x22, 0x00, 0x1E, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x84, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x84, 0x00, 0x39, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xB8, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x03, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040C, { 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x08, 0x64, 0x00, 0x08, 0xC0, 0x00, 0x09, 0x80, 0x00, 0x09, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x09, 0x80, 0x00, 0x08, 0xE0, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x03, 0x60, 0x00, 0x01, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x13, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0410, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x8C, 0x00, 0x01, 0xFC, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x0C, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0411, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x20, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0414, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x02, 0x0C, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0415, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x40, 0x00, 0x0F, 0xC0, 0x00, 0x0C, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE7, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0xCC, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0xCC, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x39, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x01, 0xCC, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x04, 0x00, 0x0F, 0x1C, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x06, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x16, 0x00, 0x18, 0x26, 0x00, 0x18, 0x46, 0x00, 0x18, 0x86, 0x00, 0x19, 0x06, 0x00, 0x1A, 0x06, 0x00, 0x1C, 0x06, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0419, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x36, 0x00, 0x18, 0xC6, 0x00, 0x1B, 0x06, 0x00, 0x1C, 0x06, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0E, 0x00, 0x0C, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x0C, 0x40, 0x00, 0x0F, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x31, 0x0C, 0x00, 0x32, 0x0C, 0x00, 0x1C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x00, 0x0C, 0x0C, 0x00, 0x0E, 0x1C, 0x00, 0x0B, 0x2C, 0x00, 0x09, 0xCC, 0x00, 0x08, 0x8C, 0x00, 0x10, 0x06, 0x00, 0x10, 0x06, 0x00, 0x10, 0x06, 0x00, 0x10, 0x06, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x70, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0420, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0421, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF2, 0x00, 0x07, 0x1E, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x02, 0x00, 0x0C, 0x06, 0x00, 0x07, 0x1C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x18, 0xC6, 0x00, 0x10, 0xC2, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0423, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x0C, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x18, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x19, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0424, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0xCC, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0xCC, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0425, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0E, 0x00, 0x0C, 0x08, 0x00, 0x06, 0x10, 0x00, 0x03, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x02, 0x30, 0x00, 0x04, 0x18, 0x00, 0x08, 0x0C, 0x00, 0x38, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0427, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0428, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x63, 0x00, 0x00, 0x43, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x03, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x03, 0x06, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x1F, 0xC6, 0x00, 0x18, 0x66, 0x00, 0x18, 0x36, 0x00, 0x18, 0x36, 0x00, 0x18, 0x66, 0x00, 0x3F, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xE0, 0x00, 0x1E, 0x38, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x07, 0x06, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x76, 0x00, 0x10, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x0E, 0x38, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7C, 0x00, 0x18, 0xC6, 0x00, 0x19, 0x83, 0x00, 0x19, 0x83, 0x00, 0x1F, 0x83, 0x00, 0x19, 0x83, 0x00, 0x19, 0x83, 0x00, 0x19, 0x83, 0x00, 0x18, 0xC6, 0x00, 0x18, 0x7C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x07, 0x0C, 0x00, 0x01, 0xFC, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x26, 0x0C, 0x00, 0x1C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0430, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x30, 0x00, 0x18, 0x30, 0x00, 0x18, 0x70, 0x00, 0x0F, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x03, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0E, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0432, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x04, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x18, 0x00, 0x01, 0x18, 0x00, 0x01, 0x18, 0x00, 0x02, 0x18, 0x00, 0x04, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0435, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE7, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0xCC, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0xCC, 0x00, 0x18, 0xC6, 0x00, 0x39, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0437, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x01, 0xCC, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0F, 0x1C, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x0C, 0x38, 0x00, 0x0C, 0x58, 0x00, 0x0C, 0x98, 0x00, 0x0D, 0x18, 0x00, 0x0E, 0x18, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0439, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x0C, 0x38, 0x00, 0x0C, 0x58, 0x00, 0x0C, 0x98, 0x00, 0x0D, 0x18, 0x00, 0x0E, 0x18, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x06, 0x10, 0x00, 0x06, 0x20, 0x00, 0x06, 0x40, 0x00, 0x07, 0x80, 0x00, 0x06, 0xC0, 0x00, 0x06, 0x60, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x98, 0x00, 0x00, 0x98, 0x00, 0x00, 0x98, 0x00, 0x00, 0x98, 0x00, 0x18, 0x98, 0x00, 0x19, 0x18, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x0E, 0x38, 0x00, 0x0E, 0x38, 0x00, 0x0D, 0x58, 0x00, 0x0D, 0xD8, 0x00, 0x0C, 0x98, 0x00, 0x0C, 0x18, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x07, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE8, 0x00, 0x07, 0x38, 0x00, 0x0C, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x08, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0xCC, 0x00, 0x08, 0xC4, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x00, 0x04, 0x18, 0x00, 0x02, 0x30, 0x00, 0x01, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x06, 0xD8, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x06, 0xD8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0447, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x31, 0x80, 0x00, 0x21, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x86, 0x00, 0x01, 0x86, 0x00, 0x01, 0x86, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x1F, 0xC6, 0x00, 0x18, 0x66, 0x00, 0x18, 0x66, 0x00, 0x18, 0x66, 0x00, 0x3F, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x1C, 0x00, 0x04, 0xEC, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x18, 0xCC, 0x00, 0x19, 0x86, 0x00, 0x1F, 0x86, 0x00, 0x19, 0x86, 0x00, 0x18, 0xCC, 0x00, 0x18, 0x78, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x26, 0x18, 0x00, 0x1C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0451, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0452, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x02, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x03, 0x18, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x28, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0453, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0454, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x06, 0x60, 0x00, 0x05, 0x90, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x05, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0456, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0457, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0458, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x04, 0x20, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x78, 0x00, 0x01, 0x44, 0x00, 0x01, 0x42, 0x00, 0x11, 0x42, 0x00, 0x13, 0x44, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x88, 0x00, 0x1D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x04, 0x90, 0x00, 0x05, 0x00, 0x00, 0x07, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1C, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x03, 0x30, 0x00, 0x01, 0x20, 0x00, 0x01, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x09, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0490, { 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2010, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2011, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2012, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2013, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2014, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2015, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2016, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2017, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, }}, +{ 0x2018, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2019, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201B, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x01, 0x20, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201F, { 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x02, 0x40, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x10, 0x00, 0x12, 0x20, 0x00, 0x22, 0x40, 0x00, 0x24, 0x80, 0x00, 0x19, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0xC3, 0x00, 0x09, 0x24, 0x80, 0x12, 0x28, 0x80, 0x22, 0x49, 0x00, 0x41, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x0C, 0xCC, 0x00, 0x19, 0x98, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xC4, 0x00, 0x04, 0xC8, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0xC8, 0x00, 0x08, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x12, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2082, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x22, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2083, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x22, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2084, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x12, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x04, 0x02, 0x00, 0x3F, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x04, 0x02, 0x00, 0x06, 0x06, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x24, 0xF8, 0x00, 0x19, 0x8C, 0x00, 0x03, 0x06, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x06, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x24, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x03, 0x06, 0x00, 0x03, 0x00, 0x00, 0x03, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x03, 0x10, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x01, 0x40, 0x00, 0x01, 0x90, 0x00, 0x06, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x18, 0x80, 0x00, 0x18, 0x80, 0x00, 0x14, 0x80, 0x00, 0x14, 0x80, 0x00, 0x12, 0x98, 0x00, 0x12, 0xA4, 0x00, 0x11, 0xA4, 0x00, 0x11, 0xA4, 0x00, 0x30, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x24, 0x00, 0x09, 0xE4, 0x00, 0x09, 0x04, 0x00, 0x1C, 0xEE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xB6, 0x00, 0x04, 0x36, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x0E, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x01, 0x00, 0x02, 0x02, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x02, 0x2F, 0x00, 0x07, 0x50, 0x80, 0x00, 0x80, 0x80, 0x01, 0x07, 0x00, 0x02, 0x00, 0x80, 0x04, 0x00, 0x80, 0x08, 0x10, 0x80, 0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2154, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x21, 0x01, 0x00, 0x01, 0x02, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x10, 0x2F, 0x00, 0x3F, 0x50, 0x80, 0x00, 0x80, 0x80, 0x01, 0x07, 0x00, 0x02, 0x00, 0x80, 0x04, 0x00, 0x80, 0x08, 0x10, 0x80, 0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x01, 0x00, 0x02, 0x02, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x02, 0x20, 0x00, 0x07, 0x5F, 0x00, 0x00, 0xA0, 0x80, 0x01, 0x20, 0x80, 0x02, 0x1F, 0x00, 0x04, 0x20, 0x80, 0x08, 0x20, 0x80, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x81, 0x00, 0x00, 0x82, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x88, 0x00, 0x10, 0x90, 0x00, 0x0F, 0x20, 0x00, 0x00, 0x5F, 0x00, 0x00, 0xA0, 0x80, 0x01, 0x20, 0x80, 0x02, 0x1F, 0x00, 0x04, 0x20, 0x80, 0x08, 0x20, 0x80, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x84, 0x00, 0x00, 0x48, 0x00, 0x10, 0x90, 0x00, 0x0F, 0x20, 0x00, 0x00, 0x5F, 0x00, 0x00, 0xA0, 0x80, 0x01, 0x20, 0x80, 0x02, 0x1F, 0x00, 0x04, 0x20, 0x80, 0x08, 0x20, 0x80, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x41, 0x00, 0x00, 0x42, 0x00, 0x00, 0x84, 0x00, 0x01, 0x08, 0x00, 0x02, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x5F, 0x00, 0x00, 0xA0, 0x80, 0x01, 0x20, 0x80, 0x02, 0x1F, 0x00, 0x04, 0x20, 0x80, 0x08, 0x20, 0x80, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2160, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x87, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2164, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0x00, 0x20, 0x24, 0x00, 0x20, 0x24, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x05, 0x04, 0x00, 0x05, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x04, 0x12, 0x00, 0x04, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x20, 0xAA, 0x00, 0x20, 0xAA, 0x00, 0x20, 0xAA, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2168, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8F, 0x00, 0x12, 0x02, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x11, 0x04, 0x00, 0x12, 0x02, 0x00, 0x7F, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x77, 0x00, 0x20, 0x22, 0x00, 0x10, 0x42, 0x00, 0x08, 0x82, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x20, 0x22, 0x00, 0x70, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x7F, 0x00, 0x20, 0x2A, 0x00, 0x10, 0x4A, 0x00, 0x08, 0x8A, 0x00, 0x05, 0x0A, 0x00, 0x05, 0x0A, 0x00, 0x02, 0x0A, 0x00, 0x05, 0x0A, 0x00, 0x05, 0x0A, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x8A, 0x00, 0x10, 0x4A, 0x00, 0x20, 0x2A, 0x00, 0x70, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x60, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x19, 0x98, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x1D, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x8E, 0x00, 0x31, 0x04, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x20, 0x00, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2174, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE4, 0x00, 0x10, 0x4C, 0x00, 0x10, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x05, 0x04, 0x00, 0x05, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2176, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x22, 0x00, 0x22, 0x66, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x49, 0x00, 0x22, 0xDB, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xC7, 0x00, 0x30, 0x82, 0x00, 0x10, 0x44, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x39, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2179, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2193, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2194, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x18, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x50, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x50, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x08, 0x00, 0x20, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x20, 0x40, 0x00, 0x10, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x01, 0x00, 0x04, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x10, 0x00, 0x80, 0x20, 0x00, 0x80, 0x7F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x10, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x40, 0x02, 0x00, 0x40, 0x01, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x01, 0x00, 0x40, 0x02, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A7, { 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x0A, 0x28, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D3, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x0A, 0x28, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0E, 0x00, 0x06, 0x04, 0x00, 0x06, 0x04, 0x00, 0x03, 0xF8, 0x00, 0x03, 0x08, 0x00, 0x01, 0x90, 0x00, 0x01, 0x90, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x30, 0x00, 0x04, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0xF8, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x30, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x06, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x04, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x11, 0x44, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x11, 0x44, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x11, 0x44, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x11, 0x44, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x08, 0x02, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xCC, 0x00, 0x00, 0xCC, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xDE, 0x00, 0x03, 0x33, 0x00, 0x03, 0x33, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x33, 0x30, 0x00, 0x33, 0x30, 0x00, 0x1E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xCC, 0x00, 0x00, 0xCC, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x06, 0xD8, 0x00, 0x06, 0xD8, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2234, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2235, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2236, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x19, 0x86, 0x00, 0x30, 0xCC, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x38, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x11, 0x04, 0x00, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2248, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x23, 0x84, 0x00, 0x00, 0x78, 0x00, 0x1C, 0x02, 0x00, 0x23, 0x84, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x38, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x02, 0x00, 0x11, 0x04, 0x00, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0x0C, 0x60, 0x00, 0x03, 0x18, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0x0C, 0x60, 0x00, 0x03, 0x18, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x01, 0x18, 0x00, 0x01, 0x60, 0x00, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x19, 0x00, 0x00, 0x21, 0x00, 0x00, 0x19, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x60, 0x00, 0x01, 0x18, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x03, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x42, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x06, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x06, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2287, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x0C, 0x00, 0x08, 0xE2, 0x00, 0x11, 0xF1, 0x00, 0x13, 0xF9, 0x00, 0x13, 0xF9, 0x00, 0x11, 0xF1, 0x00, 0x08, 0xE2, 0x00, 0x06, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2302, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2308, { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2309, { 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2310, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2312, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x48, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2321, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x80, 0x00, 0x09, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x11, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2460, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x11, 0x00, 0x20, 0x21, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x01, 0x00, 0x12, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x20, 0x11, 0x00, 0x20, 0xE1, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2463, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x22, 0x00, 0x10, 0x62, 0x00, 0x20, 0xA1, 0x00, 0x21, 0x21, 0x00, 0x22, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2464, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x11, 0x00, 0x20, 0x09, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x01, 0x00, 0x22, 0xE1, 0x00, 0x23, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2466, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x12, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2467, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x11, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x21, 0xD1, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x72, 0x00, 0x12, 0x8A, 0x00, 0x22, 0x89, 0x00, 0x22, 0x89, 0x00, 0x22, 0x89, 0x00, 0x22, 0x89, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x72, 0x00, 0x12, 0x8A, 0x00, 0x22, 0x89, 0x00, 0x22, 0x19, 0x00, 0x22, 0x21, 0x00, 0x22, 0x41, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFA, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x72, 0x00, 0x12, 0x8A, 0x00, 0x22, 0x09, 0x00, 0x22, 0x31, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x32, 0x00, 0x12, 0x52, 0x00, 0x22, 0x51, 0x00, 0x22, 0x91, 0x00, 0x22, 0xF9, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x82, 0x00, 0x22, 0x81, 0x00, 0x22, 0xF1, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x11, 0x00, 0x20, 0x21, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x01, 0x00, 0x12, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2476, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x20, 0x11, 0x00, 0x20, 0xE1, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x22, 0x00, 0x10, 0x62, 0x00, 0x20, 0xA1, 0x00, 0x21, 0x21, 0x00, 0x22, 0x21, 0x00, 0x23, 0xF9, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2478, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x11, 0x00, 0x20, 0x09, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2479, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x01, 0x00, 0x22, 0xE1, 0x00, 0x23, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x12, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x11, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x12, 0x12, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x21, 0xD1, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x72, 0x00, 0x12, 0x8A, 0x00, 0x22, 0x89, 0x00, 0x22, 0x89, 0x00, 0x22, 0x89, 0x00, 0x22, 0x89, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x72, 0x00, 0x12, 0x8A, 0x00, 0x22, 0x89, 0x00, 0x22, 0x11, 0x00, 0x22, 0x21, 0x00, 0x22, 0x41, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFA, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x72, 0x00, 0x12, 0x8A, 0x00, 0x22, 0x09, 0x00, 0x22, 0x31, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2481, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x32, 0x00, 0x12, 0x52, 0x00, 0x22, 0x51, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0xF9, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x82, 0x00, 0x22, 0x81, 0x00, 0x22, 0xF1, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2483, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x48, 0xF1, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0x71, 0x00, 0x49, 0x89, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x48, 0xF1, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2484, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x49, 0xF9, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x48, 0x11, 0x00, 0x48, 0x21, 0x00, 0x48, 0x21, 0x00, 0x48, 0x21, 0x00, 0x48, 0x41, 0x00, 0x48, 0x41, 0x00, 0x48, 0x41, 0x00, 0x48, 0x41, 0x00, 0x48, 0x41, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2485, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x48, 0xF1, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x48, 0xF1, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x48, 0xF1, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x48, 0xF1, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x19, 0x00, 0x48, 0xE9, 0x00, 0x48, 0x09, 0x00, 0x48, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x48, 0xF1, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2487, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x4E, 0x39, 0x00, 0x51, 0x45, 0x00, 0x51, 0x45, 0x00, 0x41, 0x45, 0x00, 0x41, 0x45, 0x00, 0x42, 0x45, 0x00, 0x44, 0x45, 0x00, 0x48, 0x45, 0x00, 0x50, 0x45, 0x00, 0x51, 0x45, 0x00, 0x51, 0x45, 0x00, 0x5F, 0x39, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x02, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x02, 0x80, 0x00, 0x02, 0x80, 0x00, 0x02, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0x80, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0x80, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x04, 0x80, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2490, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x07, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x07, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x60, 0x00, 0x28, 0xA0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x60, 0x00, 0x08, 0x80, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x60, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x18, 0x50, 0x00, 0x28, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2496, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xF8, 0x00, 0x19, 0x00, 0x00, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x70, 0x00, 0x09, 0x88, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2497, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x70, 0x00, 0x09, 0x88, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x19, 0x04, 0x00, 0x29, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x90, 0x00, 0x08, 0x60, 0x00, 0x08, 0x90, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x18, 0x00, 0x08, 0xE8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x22, 0x88, 0x00, 0x22, 0x88, 0x00, 0x02, 0x88, 0x00, 0x02, 0x88, 0x00, 0x02, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x10, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x22, 0x88, 0x00, 0x22, 0x88, 0x00, 0x3E, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x21, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xEA, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x23, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x13, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x20, 0x11, 0x00, 0x21, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x01, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x62, 0x00, 0x10, 0x82, 0x00, 0x20, 0x81, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x21, 0xF1, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x22, 0xE1, 0x00, 0x23, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0xC2, 0x00, 0x20, 0x01, 0x00, 0x20, 0xC1, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x62, 0x00, 0x20, 0x01, 0x00, 0x20, 0x61, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x10, 0x22, 0x00, 0x12, 0x22, 0x00, 0x09, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x22, 0x21, 0x00, 0x22, 0x41, 0x00, 0x23, 0x81, 0x00, 0x12, 0x42, 0x00, 0x12, 0x32, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x11, 0x84, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x10, 0x84, 0x00, 0x11, 0xC4, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x27, 0xB1, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x26, 0xE1, 0x00, 0x23, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF1, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0x71, 0x00, 0x21, 0x89, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x22, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x27, 0xE1, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0x12, 0x00, 0x10, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x11, 0x22, 0x00, 0x10, 0xC2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x24, 0xC9, 0x00, 0x24, 0xC9, 0x00, 0x13, 0x32, 0x00, 0x12, 0x12, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x21, 0x00, 0x12, 0x12, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x21, 0x11, 0x00, 0x20, 0xA1, 0x00, 0x10, 0x42, 0x00, 0x10, 0x82, 0x00, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x20, 0x81, 0x00, 0x11, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x21, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xEA, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x23, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x13, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x20, 0x11, 0x00, 0x21, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xF2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x01, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x62, 0x00, 0x10, 0x82, 0x00, 0x20, 0x81, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x21, 0xF1, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x22, 0xE1, 0x00, 0x23, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0xC2, 0x00, 0x20, 0x01, 0x00, 0x20, 0xC1, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x62, 0x00, 0x20, 0x01, 0x00, 0x20, 0x61, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x12, 0x22, 0x00, 0x11, 0xC2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x01, 0x00, 0x22, 0x21, 0x00, 0x22, 0x41, 0x00, 0x23, 0x81, 0x00, 0x12, 0x42, 0x00, 0x12, 0x32, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x11, 0x82, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x27, 0xB1, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x12, 0x4A, 0x00, 0x10, 0x02, 0x00, 0x0E, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x26, 0xE1, 0x00, 0x23, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF1, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x0E, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x21, 0x71, 0x00, 0x21, 0x89, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x22, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x20, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x27, 0xE1, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0x12, 0x00, 0x10, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xF2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x11, 0x22, 0x00, 0x10, 0xC2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x24, 0xC9, 0x00, 0x24, 0xC9, 0x00, 0x13, 0x32, 0x00, 0x12, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x21, 0x00, 0x12, 0x12, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x21, 0x11, 0x00, 0x20, 0xA1, 0x00, 0x10, 0x42, 0x00, 0x10, 0x82, 0x00, 0x0F, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x20, 0x81, 0x00, 0x11, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2502, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2503, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xC7, 0x00, 0x71, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2506, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2507, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x3B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2509, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x3B, 0x80, 0x77, 0x3B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250B, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2510, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2511, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2512, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2513, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2514, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2515, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2516, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2517, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2518, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2519, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251A, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251B, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251C, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251D, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251E, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251F, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2520, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2521, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2522, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2523, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2524, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2525, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2526, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2527, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2528, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2529, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x252A, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x252B, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x252C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x252D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x252E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x252F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2534, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2535, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2536, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2537, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2538, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2539, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253A, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253B, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253C, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253D, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253E, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253F, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2540, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2541, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2542, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2543, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2544, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2545, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2546, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2547, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2548, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2549, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254A, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254B, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254F, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2551, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2552, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2553, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2554, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0x00, 0x00, 0x01, 0x7F, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2555, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2556, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2557, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x40, 0x00, 0xFF, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2558, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2559, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255A, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x7F, 0xC0, 0x01, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255B, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255C, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255D, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x40, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255E, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x255F, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x7F, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2560, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x7F, 0xC0, 0x01, 0x00, 0x00, 0x01, 0x7F, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2561, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2562, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2563, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x40, 0x00, 0x00, 0x40, 0x00, 0xFF, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2564, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2565, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2566, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x2567, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2568, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2569, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x256A, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x256B, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x256C, { 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xC0, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, }}, +{ 0x256D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x256E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x256F, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2570, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2571, { 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, }}, +{ 0x2572, { 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, }}, +{ 0x2573, { 0x80, 0x00, 0x40, 0x40, 0x00, 0x80, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x40, 0x00, 0x80, 0x80, 0x00, 0x40, }}, +{ 0x2574, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2575, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2576, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2579, { 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, }}, +{ 0x257C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257D, { 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, }}, +{ 0x257E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257F, { 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, }}, +{ 0x2580, { 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2584, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2586, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2587, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2588, { 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x2589, { 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, }}, +{ 0x258A, { 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, }}, +{ 0x258B, { 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, 0xFF, 0xE0, 0x00, }}, +{ 0x258C, { 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, }}, +{ 0x258D, { 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, }}, +{ 0x258E, { 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, }}, +{ 0x258F, { 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, }}, +{ 0x2590, { 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0xC0, }}, +{ 0x2591, { 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, 0x22, 0x22, 0x00, 0x88, 0x88, 0x80, }}, +{ 0x2592, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2593, { 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, 0xDD, 0xDD, 0xC0, 0x77, 0x77, 0x40, }}, +{ 0x2594, { 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2595, { 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, }}, +{ 0x25A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x13, 0xF2, 0x00, 0x13, 0xF2, 0x00, 0x13, 0xF2, 0x00, 0x13, 0xF2, 0x00, 0x13, 0xF2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x25A5, { 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A6, { 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x25A7, { 0x00, 0x00, 0x00, 0x44, 0x44, 0x00, 0x22, 0x22, 0x00, 0x11, 0x11, 0x00, 0x08, 0x88, 0x80, 0x44, 0x44, 0x00, 0x22, 0x22, 0x00, 0x11, 0x11, 0x00, 0x08, 0x88, 0x80, 0x44, 0x44, 0x00, 0x22, 0x22, 0x00, 0x11, 0x11, 0x00, 0x08, 0x88, 0x80, 0x44, 0x44, 0x00, 0x22, 0x22, 0x00, 0x11, 0x11, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x25A8, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x11, 0x11, 0x00, 0x22, 0x22, 0x00, 0x44, 0x44, 0x00, 0x08, 0x88, 0x80, 0x11, 0x11, 0x00, 0x22, 0x22, 0x00, 0x44, 0x44, 0x00, 0x08, 0x88, 0x80, 0x11, 0x11, 0x00, 0x22, 0x22, 0x00, 0x44, 0x44, 0x00, 0x08, 0x88, 0x80, 0x11, 0x11, 0x00, 0x22, 0x22, 0x00, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A9, { 0x00, 0x00, 0x00, 0x4C, 0xCC, 0x80, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x4C, 0xCC, 0x80, 0x4C, 0xCC, 0x80, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x4C, 0xCC, 0x80, 0x4C, 0xCC, 0x80, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x4C, 0xCC, 0x80, 0x4C, 0xCC, 0x80, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x4C, 0xCC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x25AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x10, 0x04, 0x00, 0x20, 0x08, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x09, 0x80, 0x00, 0x08, 0x60, 0x00, 0x08, 0x18, 0x00, 0x08, 0x06, 0x00, 0x08, 0x18, 0x00, 0x08, 0x60, 0x00, 0x09, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x05, 0x80, 0x00, 0x04, 0x60, 0x00, 0x04, 0x18, 0x00, 0x04, 0x60, 0x00, 0x05, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x3F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x27, 0x00, 0x00, 0x20, 0xE0, 0x00, 0x20, 0x1C, 0x00, 0x20, 0x03, 0x80, 0x20, 0x1C, 0x00, 0x20, 0xE0, 0x00, 0x27, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x64, 0x00, 0x01, 0x84, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x06, 0x04, 0x00, 0x01, 0x84, 0x00, 0x00, 0x64, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x68, 0x00, 0x01, 0x88, 0x00, 0x06, 0x08, 0x00, 0x01, 0x88, 0x00, 0x00, 0x68, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x80, 0x00, 0xE0, 0x80, 0x07, 0x00, 0x80, 0x38, 0x00, 0x80, 0x07, 0x00, 0x80, 0x00, 0xE0, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x90, 0x00, 0x09, 0xC8, 0x00, 0x13, 0xE4, 0x00, 0x27, 0xF2, 0x00, 0x13, 0xE4, 0x00, 0x09, 0xC8, 0x00, 0x04, 0x90, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x11, 0xE2, 0x00, 0x13, 0xF2, 0x00, 0x27, 0xF9, 0x00, 0x27, 0xF9, 0x00, 0x27, 0xF9, 0x00, 0x27, 0xF9, 0x00, 0x13, 0xF2, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0xB8, 0x00, 0x0A, 0xAC, 0x00, 0x1A, 0xAA, 0x00, 0x1A, 0xAA, 0x00, 0x2A, 0xAB, 0x00, 0x2A, 0xAB, 0x00, 0x2A, 0xAB, 0x00, 0x2A, 0xAB, 0x00, 0x1A, 0xAA, 0x00, 0x1A, 0xAA, 0x00, 0x0A, 0xAC, 0x00, 0x06, 0xB8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x18, 0x00, 0x11, 0xC4, 0x00, 0x24, 0x12, 0x00, 0x28, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x24, 0x12, 0x00, 0x11, 0xC4, 0x00, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xC2, 0x00, 0x1F, 0xC1, 0x00, 0x1F, 0xC1, 0x00, 0x1F, 0xC1, 0x00, 0x1F, 0xC1, 0x00, 0x0F, 0xC2, 0x00, 0x07, 0xCC, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x7C, 0x00, 0x08, 0x7E, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x7F, 0x00, 0x08, 0x7E, 0x00, 0x06, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x78, 0x00, 0x08, 0x7C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x7E, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x78, 0x00, 0x08, 0x7C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x7E, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x78, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D8, { 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFE, 0x3F, 0xC0, 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0xC0, 0xF8, 0x0F, 0xC0, 0xF8, 0x0F, 0xC0, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x25D9, { 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xC0, 0xF9, 0xE7, 0xC0, 0xF7, 0xFB, 0xC0, 0xEF, 0xFD, 0xC0, 0xEF, 0xFD, 0xC0, 0xDF, 0xFE, 0xC0, 0xDF, 0xFE, 0xC0, 0xDF, 0xFE, 0xC0, 0xDF, 0xFE, 0xC0, 0xEF, 0xFD, 0xC0, 0xEF, 0xFD, 0xC0, 0xF7, 0xFB, 0xC0, 0xF9, 0xE7, 0xC0, 0xFE, 0x1F, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x25DA, { 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xC0, 0xF9, 0xE7, 0xC0, 0xF7, 0xFB, 0xC0, 0xEF, 0xFD, 0xC0, 0xEF, 0xFD, 0xC0, 0xDF, 0xFE, 0xC0, 0xDF, 0xFE, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFE, 0xC0, 0xDF, 0xFE, 0xC0, 0xEF, 0xFD, 0xC0, 0xEF, 0xFD, 0xC0, 0xF7, 0xFB, 0xC0, 0xF9, 0xE7, 0xC0, 0xFE, 0x1F, 0xC0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, }}, +{ 0x25DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x0F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x7F, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFD, 0x00, 0x3F, 0xF9, 0x00, 0x3F, 0xF1, 0x00, 0x3F, 0xE1, 0x00, 0x3F, 0xC1, 0x00, 0x3F, 0x81, 0x00, 0x3F, 0x01, 0x00, 0x3E, 0x01, 0x00, 0x3C, 0x01, 0x00, 0x38, 0x01, 0x00, 0x30, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x03, 0x00, 0x20, 0x07, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x1F, 0x00, 0x20, 0x3F, 0x00, 0x20, 0x7F, 0x00, 0x20, 0xFF, 0x00, 0x21, 0xFF, 0x00, 0x23, 0xFF, 0x00, 0x27, 0xFF, 0x00, 0x2F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x88, 0x00, 0x09, 0xC8, 0x00, 0x08, 0x84, 0x00, 0x10, 0x04, 0x00, 0x10, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xA0, 0x00, 0x03, 0x90, 0x00, 0x07, 0x90, 0x00, 0x07, 0x88, 0x00, 0x0F, 0x88, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x70, 0x00, 0x02, 0x70, 0x00, 0x02, 0x78, 0x00, 0x04, 0x78, 0x00, 0x04, 0x7C, 0x00, 0x08, 0x7C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x7E, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EF, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x40, 0x00, 0x80, 0x40, 0x00, 0x80, 0x40, 0x00, 0x80, 0x40, 0x00, 0x80, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2600, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x08, 0x08, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x77, 0xF7, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2605, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2606, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x7E, 0x3F, 0x00, 0x10, 0x04, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x10, 0x00, 0x09, 0xC8, 0x00, 0x0B, 0x68, 0x00, 0x1C, 0x1C, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x7A, 0x2F, 0x00, 0x7B, 0xEF, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xF8, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, 0x7D, 0x5F, 0x00, 0x7F, 0xFF, 0x00, 0x38, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x30, 0x06, 0x00, 0x46, 0x31, 0x00, 0x7D, 0xDF, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x18, 0x00, 0x13, 0xE4, 0x00, 0x27, 0xF2, 0x00, 0x42, 0xA1, 0x00, 0x47, 0xF1, 0x00, 0x38, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xFE, 0x80, 0x20, 0x02, 0x80, 0x1F, 0xE2, 0x80, 0x02, 0x02, 0x80, 0x01, 0xE2, 0x80, 0x01, 0x02, 0x80, 0x00, 0xE2, 0x80, 0x00, 0x82, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x5F, 0xFE, 0x00, 0x50, 0x01, 0x00, 0x51, 0xFE, 0x00, 0x50, 0x10, 0x00, 0x51, 0xE0, 0x00, 0x50, 0x20, 0x00, 0x51, 0xC0, 0x00, 0x50, 0x40, 0x00, 0x5F, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2639, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x12, 0x12, 0x00, 0x17, 0x3A, 0x00, 0x22, 0x11, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x12, 0x12, 0x00, 0x14, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x08, 0x04, 0x00, 0x12, 0x12, 0x00, 0x17, 0x3A, 0x00, 0x22, 0x11, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x24, 0x09, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x06, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x1D, 0xEE, 0x00, 0x18, 0xC6, 0x00, 0x3D, 0xEF, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x3B, 0xF7, 0x00, 0x1D, 0xEE, 0x00, 0x1E, 0x1E, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x08, 0x08, 0x00, 0x01, 0xC0, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x74, 0x17, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2640, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2642, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x06, 0xD8, 0x00, 0x0C, 0xCC, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2660, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0xBC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2661, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x11, 0x44, 0x00, 0x20, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2662, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2663, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0xDE, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0x3F, 0x00, 0x1E, 0xDE, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2664, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x21, 0xC2, 0x00, 0x1E, 0xBC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2665, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2666, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2667, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x1E, 0xDE, 0x00, 0x21, 0xE1, 0x00, 0x20, 0xC1, 0x00, 0x21, 0xE1, 0x00, 0x1E, 0xDE, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2668, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x50, 0x00, 0x02, 0xA0, 0x00, 0x02, 0xA0, 0x00, 0x01, 0x50, 0x00, 0x11, 0x52, 0x00, 0x22, 0xA1, 0x00, 0x20, 0x01, 0x00, 0x18, 0x06, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2669, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x68, 0x00, 0x00, 0x58, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0xD0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x06, 0x03, 0x00, 0x1E, 0x0F, 0x00, 0x3E, 0x1F, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x06, 0x06, 0x00, 0x1E, 0x1E, 0x00, 0x3C, 0x3C, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x38, 0x00, 0x02, 0xC4, 0x00, 0x03, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x30, 0x00, 0x02, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x70, 0x00, 0x03, 0xF0, 0x00, 0x03, 0x90, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x70, 0x00, 0x03, 0xF0, 0x00, 0x03, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2800, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2801, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2802, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2803, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2804, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2805, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2806, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2807, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2808, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2809, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x280A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x280B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x280C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x280D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x280E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x280F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2810, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2811, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2812, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2813, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2814, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2815, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2816, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2817, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2818, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2819, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x281A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x281B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x281C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x281D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x281E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x281F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2820, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2821, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2822, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2823, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2824, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2825, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2826, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2827, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2828, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2829, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x282A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x282B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x282C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x282D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x282E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x282F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2830, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2831, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2832, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2833, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2834, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2835, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2836, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2837, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2838, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2839, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x283A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x283B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x283C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x283D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x283E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x283F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2840, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2841, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2842, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2843, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2844, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2845, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2846, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2847, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2848, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2849, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x284A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x284B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x284C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x284D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x284E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x284F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2850, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2851, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2852, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2853, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2854, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2855, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2856, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2857, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2858, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2859, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x285A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x285B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x285C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x285D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x285E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x285F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2860, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2861, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2862, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2863, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2864, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2865, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2866, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2867, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2868, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2869, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x286A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x286B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x286C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x286D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x286E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x286F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2870, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2871, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2872, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2873, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2874, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2875, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2876, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2877, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2878, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2879, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x287A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x287B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x287C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x287D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x287E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x287F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2880, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2881, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2882, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2883, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2884, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2885, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2886, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2887, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2888, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2889, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x288A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x288B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x288C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x288D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x288E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x288F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2890, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2891, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2892, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2893, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2894, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2895, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2896, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2897, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2898, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2899, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x289A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x289B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x289C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x289D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x289E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x289F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x28FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x38, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x0E, }}, +{ 0x2FF0, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF1, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF2, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0x84, 0x10, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF3, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x2A, 0xAA, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x2A, 0xAA, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF4, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x15, 0x54, 0x00, 0x80, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x00, 0x80, 0x15, 0x54, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF5, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x8A, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF6, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x8A, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF7, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x8A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, 0x8A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF8, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FF9, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xA0, 0x80, 0x00, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FFA, { 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0x00, 0x80, 0x00, 0x00, 0x00, 0x82, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x2FFB, { 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAA, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, 0xAA, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0A, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x3000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3001, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3002, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x09, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3003, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x00, 0x03, 0x30, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3005, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x19, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3006, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x03, 0x98, 0x00, 0x04, 0xF0, 0x00, 0x08, 0x60, 0x00, 0x08, 0xF0, 0x00, 0x19, 0x98, 0x00, 0x13, 0x00, 0x00, 0x16, 0x00, 0x00, 0x14, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3007, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x1C, 0x00, 0x18, 0x06, 0x00, 0x10, 0x02, 0x00, 0x30, 0x03, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x30, 0x03, 0x00, 0x10, 0x02, 0x00, 0x18, 0x06, 0x00, 0x0E, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3008, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3009, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x300A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x01, 0x98, 0x00, 0x03, 0x30, 0x00, 0x06, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x19, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x06, 0x60, 0x00, 0x03, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x300B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x06, 0x60, 0x00, 0x03, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0xCC, 0x00, 0x01, 0x98, 0x00, 0x03, 0x30, 0x00, 0x06, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x300C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x300D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x300E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0xF0, 0x00, 0x02, 0x80, 0x00, 0x02, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x300F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x50, 0x00, 0x00, 0x50, 0x00, 0x03, 0xD0, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3010, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3011, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3012, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3013, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3014, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3015, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3016, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x84, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3017, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x10, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x10, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x301C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x21, 0x80, 0x80, 0x40, 0x61, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x40, 0x00, 0x1F, 0xE0, 0x00, 0x02, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0E, 0xB0, 0x00, 0x13, 0x18, 0x00, 0x33, 0x18, 0x00, 0x35, 0x18, 0x00, 0x19, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3042, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x03, 0x20, 0x00, 0x1F, 0xF0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x40, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x4C, 0x00, 0x1A, 0xC6, 0x00, 0x13, 0x86, 0x00, 0x33, 0x06, 0x00, 0x37, 0x06, 0x00, 0x3D, 0x0C, 0x00, 0x11, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00, 0x18, 0x20, 0x00, 0x18, 0x10, 0x00, 0x18, 0x18, 0x00, 0x1A, 0x38, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x20, 0x00, 0x20, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x32, 0x03, 0x00, 0x34, 0x03, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x02, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x1F, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3046, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0xC0, 0x00, 0x09, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x39, 0x80, 0x00, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3048, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0xB0, 0x00, 0x0C, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x38, 0xC4, 0x00, 0x10, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0x90, 0x00, 0x38, 0x00, 0x00, 0x09, 0xF0, 0x00, 0x0F, 0x18, 0x00, 0x1C, 0x18, 0x00, 0x64, 0x18, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x304A, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x06, 0x1C, 0x00, 0x06, 0x06, 0x00, 0x07, 0xC4, 0x00, 0x3E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x78, 0x00, 0x05, 0x8C, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x3A, 0x06, 0x00, 0x0E, 0x0C, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x304B, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xCC, 0x00, 0x3E, 0x22, 0x00, 0x14, 0x21, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x23, 0x00, 0x08, 0x61, 0x00, 0x18, 0x40, 0x00, 0x12, 0x40, 0x00, 0x31, 0xC0, 0x00, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x304C, { 0x00, 0x00, 0x00, 0x0C, 0x02, 0x00, 0x06, 0x09, 0x00, 0x06, 0x04, 0x00, 0x06, 0x00, 0x00, 0x07, 0xCC, 0x00, 0x3E, 0x22, 0x00, 0x14, 0x21, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x23, 0x00, 0x08, 0x61, 0x00, 0x18, 0x40, 0x00, 0x12, 0x40, 0x00, 0x31, 0xC0, 0x00, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x304D, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x70, 0x00, 0x1F, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x06, 0x60, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x304E, { 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x03, 0x04, 0x80, 0x01, 0x72, 0x00, 0x1F, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x06, 0x60, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x304F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3050, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x31, 0x00, 0x00, 0x64, 0x80, 0x00, 0xC2, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3051, { 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x18, 0x10, 0x00, 0x10, 0x1A, 0x00, 0x31, 0xFF, 0x00, 0x20, 0x98, 0x00, 0x20, 0x18, 0x00, 0x20, 0x18, 0x00, 0x24, 0x18, 0x00, 0x34, 0x10, 0x00, 0x18, 0x30, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3052, { 0x00, 0x00, 0x00, 0x30, 0x61, 0x00, 0x18, 0x34, 0x80, 0x18, 0x12, 0x00, 0x10, 0x18, 0x00, 0x31, 0xFF, 0x00, 0x20, 0x98, 0x00, 0x20, 0x18, 0x00, 0x20, 0x18, 0x00, 0x24, 0x18, 0x00, 0x34, 0x10, 0x00, 0x18, 0x30, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3053, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3054, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x04, 0x80, 0x03, 0x82, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3055, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x30, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3056, { 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x03, 0x34, 0x80, 0x01, 0xE2, 0x00, 0x1F, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3057, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x06, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3058, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x08, 0x00, 0x06, 0x24, 0x00, 0x06, 0x10, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x06, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3059, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC6, 0x00, 0x7F, 0xFF, 0x00, 0x30, 0x80, 0x00, 0x07, 0x80, 0x00, 0x08, 0xC0, 0x00, 0x08, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x305A, { 0x00, 0x00, 0x00, 0x01, 0x81, 0x00, 0x00, 0xE4, 0x80, 0x00, 0xC2, 0x00, 0x7F, 0xFF, 0x00, 0x30, 0x80, 0x00, 0x07, 0x80, 0x00, 0x08, 0xC0, 0x00, 0x08, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x305B, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x70, 0x00, 0x08, 0x20, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x18, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x305C, { 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x18, 0x34, 0x80, 0x0C, 0x22, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x78, 0x20, 0x00, 0x28, 0x20, 0x00, 0x08, 0xE0, 0x00, 0x08, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x18, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x305D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x04, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x02, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x1E, 0x60, 0x00, 0x30, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x305E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x00, 0x0F, 0x74, 0x80, 0x04, 0xC2, 0x00, 0x01, 0x80, 0x00, 0x02, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x1E, 0x60, 0x00, 0x30, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x305F, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x40, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x18, 0x00, 0x2C, 0x0E, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x80, 0x00, 0x30, 0x80, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3060, { 0x00, 0x00, 0x00, 0x0C, 0x02, 0x00, 0x06, 0x09, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x18, 0x00, 0x2C, 0x0E, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x80, 0x00, 0x30, 0x80, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3061, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x40, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0x16, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x78, 0x00, 0x05, 0x8C, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3062, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x49, 0x00, 0x03, 0xE4, 0x00, 0x3E, 0x00, 0x00, 0x16, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x78, 0x00, 0x05, 0x8C, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x18, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3064, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x4F, 0x0C, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x4F, 0x0C, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3066, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0xF8, 0x00, 0x18, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0xF8, 0x00, 0x18, 0x21, 0x00, 0x00, 0x44, 0x80, 0x00, 0x82, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3068, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x78, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3069, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0x89, 0x00, 0x01, 0x04, 0x00, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x78, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x306A, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x22, 0x04, 0x00, 0x04, 0x1E, 0x00, 0x08, 0x22, 0x00, 0x18, 0x20, 0x00, 0x30, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x4C, 0x00, 0x07, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x306B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x78, 0x00, 0x11, 0x8C, 0x00, 0x30, 0x10, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x80, 0x00, 0x29, 0x00, 0x00, 0x39, 0x8C, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x306C, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x11, 0xF0, 0x00, 0x13, 0x08, 0x00, 0x15, 0x04, 0x00, 0x19, 0x06, 0x00, 0x1A, 0x06, 0x00, 0x2A, 0x06, 0x00, 0x2C, 0x06, 0x00, 0x44, 0x74, 0x00, 0x4A, 0x9C, 0x00, 0x30, 0x8C, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x306D, { 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x29, 0x8C, 0x00, 0x0A, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x28, 0x74, 0x00, 0x68, 0x9C, 0x00, 0x58, 0x8C, 0x00, 0x08, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x306E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0D, 0x18, 0x00, 0x19, 0x0C, 0x00, 0x11, 0x04, 0x00, 0x21, 0x06, 0x00, 0x23, 0x06, 0x00, 0x22, 0x06, 0x00, 0x26, 0x04, 0x00, 0x34, 0x0C, 0x00, 0x18, 0x38, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x306F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x11, 0xFF, 0x00, 0x30, 0xC8, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x28, 0x0C, 0x00, 0x28, 0xFC, 0x00, 0x39, 0x0E, 0x00, 0x11, 0x1B, 0x00, 0x10, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3070, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x30, 0x24, 0x80, 0x18, 0x32, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x30, 0xD0, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x28, 0x18, 0x00, 0x28, 0xF8, 0x00, 0x39, 0x1E, 0x00, 0x11, 0x1B, 0x00, 0x10, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3071, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x24, 0x80, 0x18, 0x34, 0x80, 0x18, 0x13, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x30, 0xD0, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x28, 0x18, 0x00, 0x28, 0xF8, 0x00, 0x39, 0x1E, 0x00, 0x11, 0x1B, 0x00, 0x10, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3072, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0E, 0x18, 0x00, 0x76, 0x18, 0x00, 0x04, 0x18, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x10, 0x16, 0x00, 0x10, 0x12, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3073, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x14, 0x80, 0x0E, 0x12, 0x00, 0x76, 0x10, 0x00, 0x04, 0x18, 0x00, 0x08, 0x18, 0x00, 0x08, 0x1C, 0x00, 0x10, 0x16, 0x00, 0x10, 0x12, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3074, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x14, 0x80, 0x0E, 0x14, 0x80, 0x76, 0x13, 0x00, 0x04, 0x18, 0x00, 0x08, 0x18, 0x00, 0x08, 0x1C, 0x00, 0x10, 0x16, 0x00, 0x10, 0x12, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0C, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0x00, 0x4E, 0x61, 0x80, 0x38, 0x61, 0x80, 0x31, 0xE2, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x64, 0x80, 0x00, 0x62, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0x00, 0x4E, 0x61, 0x80, 0x38, 0x61, 0x80, 0x31, 0xE2, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x64, 0x80, 0x00, 0x64, 0x80, 0x00, 0x83, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0x00, 0x4E, 0x61, 0x80, 0x38, 0x61, 0x80, 0x31, 0xE2, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x40, 0x00, 0x18, 0x20, 0x00, 0x10, 0x10, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x24, 0x00, 0x06, 0x10, 0x00, 0x09, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x40, 0x00, 0x18, 0x20, 0x00, 0x10, 0x10, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x307A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x06, 0x12, 0x00, 0x09, 0x12, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x40, 0x00, 0x18, 0x20, 0x00, 0x10, 0x10, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x307B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x10, 0x08, 0x00, 0x10, 0x0E, 0x00, 0x31, 0xF8, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0xF8, 0x00, 0x39, 0x18, 0x00, 0x11, 0x1C, 0x00, 0x10, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x307C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x19, 0xFD, 0x00, 0x18, 0x20, 0x80, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x31, 0xFC, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0xF0, 0x00, 0x39, 0x38, 0x00, 0x11, 0x34, 0x00, 0x10, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x307D, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x04, 0x80, 0x19, 0xFC, 0x80, 0x18, 0x23, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x31, 0xFC, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0xF0, 0x00, 0x39, 0x30, 0x00, 0x11, 0x3C, 0x00, 0x10, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x307E, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x10, 0xD8, 0x00, 0x0F, 0xF0, 0x00, 0x04, 0x80, 0x00, 0x10, 0xB8, 0x00, 0x0F, 0xF0, 0x00, 0x04, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x08, 0xF0, 0x00, 0x18, 0xDC, 0x00, 0x0F, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x307F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x06, 0xC0, 0x00, 0x00, 0x88, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x0C, 0x00, 0x07, 0xC8, 0x00, 0x1A, 0x38, 0x00, 0x24, 0x1E, 0x00, 0x2C, 0x13, 0x00, 0x38, 0x30, 0x00, 0x10, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3080, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x04, 0x00, 0x14, 0x0A, 0x00, 0x04, 0x09, 0x00, 0x1E, 0x0B, 0x00, 0x26, 0x08, 0x00, 0x26, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x1C, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x10, 0x60, 0x00, 0x13, 0xF0, 0x00, 0x0C, 0x4C, 0x00, 0x18, 0x82, 0x00, 0x2C, 0x83, 0x00, 0x25, 0x03, 0x00, 0x42, 0x03, 0x00, 0x47, 0x03, 0x00, 0x29, 0x06, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3082, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x08, 0x80, 0x00, 0x05, 0x80, 0x00, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x88, 0x00, 0x02, 0xC4, 0x00, 0x06, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x0C, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3083, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x10, 0xE0, 0x00, 0x13, 0x10, 0x00, 0x0C, 0x08, 0x00, 0x7C, 0x98, 0x00, 0x26, 0x70, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3084, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x40, 0x00, 0x08, 0x38, 0x00, 0x08, 0xC6, 0x00, 0x05, 0x03, 0x00, 0x0F, 0x23, 0x00, 0x7A, 0x1E, 0x00, 0x21, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3085, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x02, 0x40, 0x00, 0x22, 0x40, 0x00, 0x12, 0xE0, 0x00, 0x13, 0x50, 0x00, 0x26, 0x48, 0x00, 0x2A, 0xC8, 0x00, 0x3A, 0x90, 0x00, 0x11, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3086, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x21, 0x20, 0x00, 0x12, 0x78, 0x00, 0x1B, 0x96, 0x00, 0x12, 0x13, 0x00, 0x16, 0x11, 0x00, 0x25, 0x11, 0x00, 0x29, 0x33, 0x00, 0x38, 0xA6, 0x00, 0x10, 0x78, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3087, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x20, 0x00, 0x01, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x13, 0x70, 0x00, 0x0E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3088, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x10, 0xB8, 0x00, 0x11, 0x8C, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3089, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x07, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xE0, 0x00, 0x3C, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x308A, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x05, 0x30, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x04, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x308B, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0xF0, 0x00, 0x06, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0xE0, 0x00, 0x07, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x11, 0xC4, 0x00, 0x02, 0x6C, 0x00, 0x02, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x308C, { 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7C, 0x70, 0x00, 0x29, 0x98, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x18, 0x00, 0x28, 0x10, 0x00, 0x68, 0x10, 0x80, 0x58, 0x1B, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x308D, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0xF0, 0x00, 0x06, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x07, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x18, 0x02, 0x00, 0x30, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x308E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0C, 0xE0, 0x00, 0x0B, 0x10, 0x00, 0x1C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x38, 0x18, 0x00, 0x28, 0x30, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x308F, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x00, 0x00, 0x3E, 0x70, 0x00, 0x15, 0x8C, 0x00, 0x06, 0x06, 0x00, 0x04, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x14, 0x06, 0x00, 0x36, 0x04, 0x00, 0x2E, 0x18, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3090, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0xF0, 0x00, 0x06, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x0C, 0x00, 0x12, 0x02, 0x00, 0x24, 0x01, 0x00, 0x2C, 0x39, 0x00, 0x38, 0x47, 0x00, 0x10, 0x46, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3091, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xE0, 0x00, 0x04, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x08, 0x10, 0x00, 0x03, 0x90, 0x00, 0x06, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x02, 0x00, 0x00, 0x06, 0x1C, 0x00, 0x1D, 0x66, 0x00, 0x30, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3092, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xA0, 0x00, 0x1F, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x03, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x07, 0x98, 0x00, 0x0C, 0xE0, 0x00, 0x10, 0xE0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3093, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x0C, 0x61, 0x00, 0x08, 0x61, 0x00, 0x18, 0x62, 0x00, 0x30, 0x36, 0x00, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3099, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x309A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x309B, { 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x309C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x309D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x309E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x0C, 0x28, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x00, 0x3F, 0x38, 0x00, 0x18, 0x60, 0x00, 0x02, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7E, 0x00, 0x3F, 0x87, 0x00, 0x18, 0x0C, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x19, 0x30, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x30, 0x00, 0x08, 0x30, 0x00, 0x08, 0x20, 0x00, 0x08, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A6, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x8C, 0x00, 0x0F, 0xFE, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1F, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x18, 0x00, 0x3F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x83, 0x00, 0x7F, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, 0x00, 0x06, 0x80, 0x00, 0x08, 0x80, 0x00, 0x11, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30AA, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0x00, 0x7F, 0xFF, 0x80, 0x30, 0x70, 0x00, 0x00, 0x70, 0x00, 0x00, 0xD0, 0x00, 0x01, 0x90, 0x00, 0x03, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x30, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30AB, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x30, 0xFC, 0x00, 0x1F, 0xC6, 0x00, 0x01, 0x06, 0x00, 0x03, 0x04, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x10, 0x00, 0x10, 0xB0, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30AC, { 0x00, 0x00, 0x00, 0x01, 0x81, 0x00, 0x00, 0xC4, 0x80, 0x00, 0x82, 0x00, 0x30, 0xFC, 0x00, 0x1F, 0xC6, 0x00, 0x01, 0x06, 0x00, 0x03, 0x04, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x10, 0x00, 0x10, 0xB0, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30AD, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x30, 0x00, 0x01, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3D, 0x8C, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30AE, { 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x03, 0x04, 0x80, 0x03, 0x32, 0x00, 0x01, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3D, 0x8C, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30AF, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B0, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0xC4, 0x80, 0x01, 0x82, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x60, 0x00, 0x20, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B2, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0x04, 0x80, 0x03, 0x02, 0x00, 0x06, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x60, 0x00, 0x20, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B4, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B5, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x22, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xF0, 0x00, 0x24, 0x30, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B6, { 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x34, 0x80, 0x0C, 0x22, 0x00, 0x06, 0x20, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xF0, 0x00, 0x24, 0x30, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x02, 0x00, 0x03, 0x84, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B8, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x84, 0x80, 0x01, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x02, 0x00, 0x03, 0x84, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x3C, 0x00, 0x07, 0xDC, 0x00, 0x03, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x98, 0x00, 0x06, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30BA, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x02, 0x00, 0x10, 0x70, 0x00, 0x0F, 0xB8, 0x00, 0x06, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x0E, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x7C, 0x00, 0x07, 0xC6, 0x00, 0x7A, 0x0C, 0x00, 0x22, 0x18, 0x00, 0x02, 0x20, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xC6, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30BC, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x04, 0x80, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x02, 0x7C, 0x00, 0x07, 0xC6, 0x00, 0x7A, 0x0C, 0x00, 0x22, 0x18, 0x00, 0x02, 0x20, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xC6, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x06, 0x18, 0x00, 0x06, 0x10, 0x00, 0x02, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30BE, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x64, 0x80, 0x00, 0x32, 0x00, 0x40, 0x30, 0x00, 0x30, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30BF, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x13, 0x18, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C0, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0xC4, 0x80, 0x01, 0x82, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x13, 0x18, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC6, 0x00, 0x60, 0xFF, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C2, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x14, 0x80, 0x00, 0xE2, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC6, 0x00, 0x60, 0xFF, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x11, 0x98, 0x00, 0x09, 0x98, 0x00, 0x0D, 0x10, 0x00, 0x04, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x21, 0x8C, 0x00, 0x11, 0x8C, 0x00, 0x19, 0x8C, 0x00, 0x19, 0x88, 0x00, 0x08, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C5, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x02, 0x12, 0x00, 0x43, 0x18, 0x00, 0x23, 0x18, 0x00, 0x33, 0x18, 0x00, 0x33, 0x10, 0x00, 0x10, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0xFF, 0x80, 0x30, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C7, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x0F, 0xFA, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0xFF, 0x80, 0x30, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C8, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xB8, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x84, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30C9, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xC2, 0x00, 0x01, 0x89, 0x00, 0x01, 0x84, 0x00, 0x01, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xB8, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x84, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30CA, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC3, 0x00, 0x40, 0xFF, 0x80, 0x3F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFC, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x0C, 0x20, 0x00, 0x03, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0x18, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30CD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x28, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xB0, 0x00, 0x03, 0x8C, 0x00, 0x0C, 0xC6, 0x00, 0x30, 0xC3, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x03, 0x10, 0x00, 0x03, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x04, 0x02, 0x00, 0x08, 0x03, 0x00, 0x18, 0x03, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D0, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x02, 0x00, 0x02, 0x20, 0x00, 0x03, 0x10, 0x00, 0x03, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x04, 0x02, 0x00, 0x08, 0x03, 0x00, 0x18, 0x03, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D1, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x02, 0x23, 0x00, 0x03, 0x10, 0x00, 0x03, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x04, 0x02, 0x00, 0x08, 0x03, 0x00, 0x18, 0x03, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x0E, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D3, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x04, 0x80, 0x0E, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x0E, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D4, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x04, 0x80, 0x0E, 0x04, 0x80, 0x0C, 0x03, 0x00, 0x0C, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x0E, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x0F, 0xEE, 0x00, 0x07, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D6, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x40, 0xF2, 0x00, 0x3F, 0xB8, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D7, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x40, 0xF4, 0x80, 0x3F, 0xBB, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x08, 0x40, 0x00, 0x18, 0x20, 0x00, 0x30, 0x18, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x24, 0x00, 0x06, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x08, 0x40, 0x00, 0x18, 0x20, 0x00, 0x30, 0x18, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x24, 0x00, 0x06, 0x24, 0x00, 0x05, 0x18, 0x00, 0x0C, 0x80, 0x00, 0x08, 0x40, 0x00, 0x18, 0x20, 0x00, 0x30, 0x18, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30DB, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x31, 0xFE, 0x00, 0x1E, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x18, 0xC2, 0x00, 0x32, 0xC2, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30DC, { 0x00, 0x00, 0x00, 0x01, 0x81, 0x00, 0x00, 0xE4, 0x80, 0x00, 0xC2, 0x00, 0x00, 0xC0, 0x00, 0x31, 0xFE, 0x00, 0x1E, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x18, 0xC2, 0x00, 0x32, 0xC2, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30DD, { 0x00, 0x00, 0x00, 0x01, 0x83, 0x00, 0x00, 0xE4, 0x80, 0x00, 0xC4, 0x80, 0x00, 0xC3, 0x00, 0x31, 0xFC, 0x00, 0x1E, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x18, 0xC2, 0x00, 0x32, 0xC2, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x61, 0xFE, 0x00, 0x3F, 0x0E, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x02, 0x40, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30DF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x10, 0x00, 0x03, 0x08, 0x00, 0x02, 0x04, 0x00, 0x04, 0x06, 0x00, 0x48, 0x3E, 0x00, 0x3F, 0xC3, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x06, 0x08, 0x00, 0x01, 0x98, 0x00, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x78, 0x00, 0x00, 0xCC, 0x00, 0x01, 0x04, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x86, 0x00, 0x41, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x19, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x07, 0x30, 0x00, 0x7A, 0x40, 0x00, 0x22, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E4, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1E, 0x00, 0x03, 0xE7, 0x00, 0x7D, 0x0C, 0x00, 0x31, 0x10, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xE0, 0x00, 0x08, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x78, 0x00, 0x1F, 0x9C, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x41, 0xFF, 0x00, 0x3F, 0x03, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xF0, 0x00, 0x08, 0x30, 0x00, 0x00, 0x30, 0x00, 0x1F, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xE0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x1F, 0xFC, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFE, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30EA, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x1C, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x18, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x18, 0x81, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8C, 0x00, 0x30, 0x98, 0x00, 0x20, 0xF0, 0x00, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x30, 0x00, 0x08, 0x30, 0x00, 0x08, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1C, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F0, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x0C, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x43, 0x00, 0x7F, 0xFF, 0x80, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x1F, 0x9C, 0x00, 0x0C, 0x30, 0x00, 0x01, 0x40, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x0F, 0xCE, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x0C, 0x00, 0x21, 0xF8, 0x00, 0x1F, 0x18, 0x00, 0x08, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x06, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x27, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F4, { 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x89, 0x00, 0x01, 0x84, 0x00, 0x31, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x02, 0x30, 0x00, 0x06, 0x30, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x60, 0x00, 0x08, 0x40, 0x00, 0x12, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x18, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x30FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x06, 0x28, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3106, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x01, 0x88, 0x00, 0x06, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3108, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x88, 0x00, 0x10, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x310A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x310B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x310C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x28, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x310D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x310E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x310F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x30, 0x00, 0x04, 0xD0, 0x00, 0x07, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3112, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3114, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x10, 0x00, 0x02, 0x20, 0x00, 0x04, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0x10, 0x00, 0x04, 0x90, 0x00, 0x04, 0x50, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x08, 0x00, 0x01, 0x48, 0x00, 0x01, 0x30, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x311A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x311B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0x80, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x311C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0x80, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x311D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x311E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x311F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3120, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3124, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x40, 0x00, 0x30, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3125, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x42, 0x00, 0x08, 0x42, 0x00, 0x30, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3128, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x01, 0x04, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x3C, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x08, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x1C, 0x00, 0x06, 0x36, 0x00, 0x06, 0x67, 0x00, 0x06, 0xC3, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3134, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x0E, 0x38, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3F, 0x00, 0x18, 0x03, 0x00, 0x18, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x1E, 0x00, 0x18, 0x33, 0x00, 0x18, 0xE1, 0x80, 0x0F, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x18, 0x7F, 0x00, 0x18, 0x1C, 0x00, 0x18, 0x77, 0x00, 0x18, 0x63, 0x00, 0x19, 0xF7, 0x00, 0x0F, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x0E, 0x38, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x0C, 0xC4, 0x00, 0x0F, 0xF8, 0x00, 0x06, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3139, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x0F, 0xF8, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04, 0x00, 0x07, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x313A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x19, 0x83, 0x00, 0x01, 0x03, 0x00, 0x3F, 0x83, 0x00, 0x18, 0x03, 0x00, 0x18, 0x03, 0x00, 0x19, 0x83, 0x00, 0x0F, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x313B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x19, 0xB3, 0x00, 0x01, 0x33, 0x00, 0x3F, 0xB3, 0x00, 0x18, 0x33, 0x00, 0x18, 0x32, 0x00, 0x19, 0xB2, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x313C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3F, 0x63, 0x00, 0x1B, 0x33, 0x00, 0x03, 0x33, 0x00, 0x3E, 0x3F, 0x00, 0x18, 0x33, 0x00, 0x18, 0x33, 0x00, 0x19, 0xB3, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x313D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x18, 0x00, 0x1B, 0x0C, 0x00, 0x03, 0x0C, 0x00, 0x3E, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x18, 0x36, 0x00, 0x1B, 0x63, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x313E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x1B, 0x30, 0x00, 0x03, 0x30, 0x00, 0x3E, 0x3E, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, 0x19, 0xB2, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x313F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x1B, 0x36, 0x00, 0x03, 0x36, 0x00, 0x3E, 0x36, 0x00, 0x18, 0x36, 0x00, 0x18, 0x36, 0x00, 0x1B, 0x14, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3F, 0x0C, 0x00, 0x1B, 0x7F, 0x80, 0x03, 0x20, 0x00, 0x3E, 0x1E, 0x00, 0x18, 0x33, 0x00, 0x18, 0x33, 0x00, 0x1B, 0x33, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3143, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x06, 0xCC, 0x00, 0x33, 0x6C, 0x00, 0x1B, 0x6C, 0x00, 0x1F, 0x7C, 0x00, 0x1B, 0x6C, 0x00, 0x1B, 0x6C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x63, 0x06, 0x00, 0x33, 0x06, 0x00, 0x33, 0x0C, 0x00, 0x3F, 0x1C, 0x00, 0x33, 0x37, 0x00, 0x33, 0x63, 0x80, 0x3F, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xA0, 0x00, 0x03, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x30, 0x00, 0x06, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x1B, 0xC0, 0x00, 0x33, 0x70, 0x00, 0x46, 0x1C, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3147, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x98, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x98, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x19, 0x98, 0x00, 0x03, 0x30, 0x00, 0x06, 0x60, 0x00, 0x0E, 0xC0, 0x00, 0x1B, 0xB0, 0x00, 0x33, 0x1C, 0x00, 0x44, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x314A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x0C, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x18, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x314B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x03, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x314C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x18, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x314D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x20, 0x00, 0x01, 0x20, 0x00, 0x01, 0x24, 0x00, 0x0F, 0xFE, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x314E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x314F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3150, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x26, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3151, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3152, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x26, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3153, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3154, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x03, 0xF6, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x26, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3155, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3156, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x03, 0xF6, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x03, 0xF6, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x26, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC3, 0x00, 0x3F, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3158, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0F, 0x00, 0x06, 0x3C, 0x00, 0x3F, 0xCC, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3159, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x33, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x1B, 0x00, 0x0C, 0x1F, 0x00, 0x06, 0x1B, 0x00, 0x06, 0x7B, 0x00, 0x7F, 0x9B, 0x00, 0x30, 0x13, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x315A, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x06, 0x06, 0x00, 0x03, 0x06, 0x00, 0x03, 0x1E, 0x00, 0x3F, 0xE6, 0x00, 0x18, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x315B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x3F, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x315C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3F, 0xFF, 0x00, 0x18, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x315D, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x3F, 0xCC, 0x00, 0x16, 0x0C, 0x00, 0x06, 0x7C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x315E, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0x36, 0x00, 0x00, 0xF6, 0x00, 0x7F, 0x36, 0x00, 0x2C, 0x36, 0x00, 0x0D, 0xF6, 0x00, 0x0C, 0x36, 0x00, 0x0C, 0x36, 0x00, 0x08, 0x26, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x315F, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1E, 0x00, 0x3F, 0xE6, 0x00, 0x13, 0x06, 0x00, 0x03, 0x06, 0x00, 0x03, 0x06, 0x00, 0x03, 0x06, 0x00, 0x02, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3160, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x13, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x02, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3F, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3162, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1E, 0x00, 0x3F, 0xE6, 0x00, 0x18, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3163, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3164, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0xB1, 0x80, 0x3F, 0x3F, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7F, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x39, 0xB1, 0x80, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x30, 0x34, 0x00, 0x30, 0x66, 0x00, 0x36, 0xC3, 0x00, 0x1D, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3168, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x30, 0x1C, 0x00, 0x30, 0x36, 0x00, 0x30, 0x36, 0x00, 0x30, 0x63, 0x00, 0x30, 0x63, 0x00, 0x3B, 0xC1, 0x80, 0x1E, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xEE, 0x00, 0x0C, 0x66, 0x00, 0x0C, 0x66, 0x00, 0x7C, 0x66, 0x00, 0x60, 0x6F, 0x00, 0x60, 0x6D, 0x80, 0x66, 0x59, 0x80, 0x38, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x316A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x33, 0x30, 0x00, 0x03, 0x30, 0x00, 0x7E, 0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x33, 0x30, 0x80, 0x1F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x316B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x46, 0x00, 0x0F, 0x66, 0x00, 0x0F, 0x66, 0x00, 0x7B, 0xE6, 0x00, 0x63, 0x67, 0x00, 0x63, 0x6D, 0x00, 0x67, 0x79, 0x80, 0x3B, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x316C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x10, 0x00, 0x36, 0x38, 0x00, 0x06, 0x6C, 0x00, 0x7C, 0x6C, 0x00, 0x60, 0xC6, 0x00, 0x60, 0xC6, 0x00, 0x63, 0x83, 0x00, 0x3D, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x316D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x33, 0x00, 0x00, 0x03, 0x1C, 0x00, 0x3E, 0x36, 0x00, 0x30, 0x63, 0x00, 0x30, 0x63, 0x00, 0x33, 0x77, 0x00, 0x1C, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x316E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x7F, 0x63, 0x00, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x33, 0x3F, 0x00, 0x33, 0x33, 0x00, 0x33, 0x33, 0x00, 0x32, 0x33, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x316F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x0C, 0x00, 0x33, 0x06, 0x00, 0x33, 0x06, 0x00, 0x33, 0x06, 0x00, 0x33, 0x0C, 0x00, 0x33, 0x1A, 0x00, 0x32, 0x31, 0x80, 0x3F, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x08, 0x00, 0x63, 0x0C, 0x00, 0x63, 0x16, 0x00, 0x63, 0x36, 0x00, 0x63, 0x63, 0x00, 0x63, 0x63, 0x00, 0x63, 0xC1, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0x00, 0x61, 0xB3, 0x00, 0x31, 0x83, 0x00, 0x31, 0x83, 0x00, 0x3F, 0x83, 0x00, 0x31, 0x83, 0x00, 0x31, 0x83, 0x00, 0x3F, 0x83, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x31, 0xB0, 0x00, 0x31, 0xB0, 0x00, 0x3F, 0xB0, 0x00, 0x31, 0xB0, 0x00, 0x31, 0xB0, 0x80, 0x31, 0xBF, 0x00, 0x3F, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3174, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xDF, 0x80, 0x66, 0x6D, 0x80, 0x66, 0x61, 0x80, 0x7E, 0x61, 0x80, 0x66, 0x61, 0x80, 0x66, 0xD1, 0x80, 0x67, 0x99, 0x80, 0x7F, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x9F, 0x80, 0x6C, 0xCC, 0x00, 0x6C, 0xCC, 0x00, 0x7C, 0xCC, 0x00, 0x6C, 0xCC, 0x00, 0x6D, 0xAC, 0x00, 0x6F, 0x3C, 0x80, 0x7E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3176, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3F, 0x00, 0x63, 0x06, 0x00, 0x33, 0x06, 0x00, 0x3F, 0x0C, 0x00, 0x33, 0x1C, 0x00, 0x33, 0x33, 0x00, 0x33, 0x61, 0x80, 0x3F, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x61, 0x7F, 0x00, 0x31, 0xB0, 0x00, 0x31, 0xB0, 0x00, 0x3F, 0xBF, 0x00, 0x31, 0xB0, 0x00, 0x31, 0xB0, 0x00, 0x31, 0xB3, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3179, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0xC6, 0x00, 0x06, 0x66, 0x00, 0x07, 0xFE, 0x00, 0x06, 0x66, 0x00, 0x06, 0x66, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x03, 0x0C, 0x00, 0x03, 0x0C, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x317A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7F, 0x00, 0x03, 0x33, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x07, 0x03, 0x00, 0x0D, 0x83, 0x00, 0x18, 0xC3, 0x00, 0x20, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x317B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x07, 0x18, 0x00, 0x0C, 0x98, 0x00, 0x18, 0xD9, 0x80, 0x20, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x317C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7F, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x0E, 0x30, 0x00, 0x1B, 0x30, 0x00, 0x31, 0xB0, 0x80, 0x40, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x317D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x66, 0x00, 0x06, 0x33, 0x00, 0x06, 0x33, 0x00, 0x06, 0x3F, 0x00, 0x0E, 0x33, 0x00, 0x19, 0x33, 0x00, 0x31, 0xB3, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x317E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x06, 0x03, 0x00, 0x06, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0E, 0x18, 0x00, 0x1B, 0xB6, 0x00, 0x31, 0xE3, 0x80, 0x40, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x317F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3180, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0x1F, 0x00, 0x31, 0xB1, 0x80, 0x31, 0xB1, 0x80, 0x31, 0xB1, 0x80, 0x31, 0xB1, 0x80, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3181, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x0F, 0x06, 0x00, 0x19, 0x8E, 0x00, 0x19, 0x9B, 0x00, 0x19, 0xB1, 0x80, 0x0F, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0x1E, 0x00, 0x33, 0x1E, 0x00, 0x61, 0xB3, 0x00, 0x61, 0xB3, 0x00, 0x33, 0x61, 0x80, 0x1E, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3184, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3185, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x31, 0xB1, 0x80, 0x31, 0xB1, 0x80, 0x31, 0xB1, 0x80, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3186, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0x38, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3187, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x03, 0x06, 0x00, 0x19, 0x86, 0x00, 0x0D, 0x87, 0x80, 0x0D, 0x9E, 0x00, 0x3F, 0xE6, 0x00, 0x18, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x19, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x0F, 0x80, 0x03, 0x0D, 0x80, 0x19, 0x8D, 0x80, 0x0D, 0x8F, 0x80, 0x0D, 0xBD, 0x80, 0x3F, 0xCD, 0x80, 0x18, 0x0D, 0x80, 0x00, 0x09, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3189, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x01, 0x83, 0x00, 0x0C, 0xC3, 0x00, 0x06, 0xC3, 0x00, 0x06, 0xCF, 0x00, 0x1F, 0xF3, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x318A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x33, 0x00, 0x7F, 0xC3, 0x00, 0x1B, 0x1F, 0x00, 0x1B, 0x03, 0x00, 0x1B, 0x1F, 0x00, 0x1B, 0x03, 0x00, 0x13, 0x03, 0x00, 0x02, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x318B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x19, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x6D, 0x80, 0x7F, 0x8D, 0x80, 0x1B, 0x7D, 0x80, 0x1B, 0x0D, 0x80, 0x1B, 0x7D, 0x80, 0x1B, 0x0D, 0x80, 0x12, 0x0D, 0x80, 0x00, 0x09, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x318C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1B, 0x00, 0x3F, 0xE3, 0x00, 0x0D, 0x83, 0x00, 0x0D, 0x83, 0x00, 0x0D, 0x83, 0x00, 0x0D, 0x83, 0x00, 0x09, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x318D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x318E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x11, 0x00, 0x10, 0x22, 0x00, 0x10, 0x42, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x14, 0x02, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x14, 0x0A, 0x00, 0x13, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x14, 0x0A, 0x00, 0x13, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x01, 0x00, 0x14, 0x0A, 0x00, 0x13, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3204, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFA, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x12, 0x00, 0x14, 0x0A, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF9, 0x00, 0x22, 0x09, 0x00, 0x12, 0x0A, 0x00, 0x13, 0xFA, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x20, 0x41, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x21, 0x00, 0x22, 0x19, 0x00, 0x14, 0x0A, 0x00, 0x10, 0x02, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x20, 0x11, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x20, 0xA1, 0x00, 0x11, 0x12, 0x00, 0x12, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x10, 0x42, 0x00, 0x13, 0xFA, 0x00, 0x20, 0x11, 0x00, 0x20, 0x21, 0x00, 0x20, 0x61, 0x00, 0x20, 0x91, 0x00, 0x11, 0x0A, 0x00, 0x12, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x320A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFA, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x23, 0xF9, 0x00, 0x20, 0x11, 0x00, 0x10, 0x22, 0x00, 0x10, 0xC2, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x320B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x01, 0x00, 0x14, 0x0A, 0x00, 0x13, 0xF2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x320C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x22, 0x21, 0x00, 0x21, 0x11, 0x00, 0x21, 0x11, 0x00, 0x21, 0x21, 0x00, 0x11, 0x22, 0x00, 0x17, 0xFA, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x320D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x84, 0x00, 0x10, 0x42, 0x00, 0x17, 0xFA, 0x00, 0x20, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x320E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x51, 0x00, 0x20, 0x91, 0x00, 0x20, 0x9D, 0x00, 0x21, 0x11, 0x00, 0x12, 0x12, 0x00, 0x14, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x320F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x14, 0x12, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x13, 0x92, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3210, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x17, 0x92, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x51, 0x00, 0x27, 0xD1, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x13, 0x92, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x24, 0x51, 0x00, 0x24, 0x51, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x91, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x14, 0x52, 0x00, 0x24, 0x51, 0x00, 0x27, 0xD1, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x51, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3214, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x11, 0x12, 0x00, 0x20, 0x91, 0x00, 0x21, 0x91, 0x00, 0x22, 0x5D, 0x00, 0x24, 0x51, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x13, 0x12, 0x00, 0x24, 0x91, 0x00, 0x28, 0x51, 0x00, 0x28, 0x5D, 0x00, 0x24, 0x91, 0x00, 0x13, 0x12, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3216, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x91, 0x00, 0x21, 0x11, 0x00, 0x22, 0x9D, 0x00, 0x24, 0x51, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x10, 0x92, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x91, 0x00, 0x21, 0x11, 0x00, 0x22, 0x9D, 0x00, 0x24, 0x51, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x51, 0x00, 0x27, 0xD1, 0x00, 0x20, 0x9D, 0x00, 0x21, 0x11, 0x00, 0x12, 0x12, 0x00, 0x14, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x24, 0x11, 0x00, 0x27, 0x91, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x13, 0x92, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x321A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x9D, 0x00, 0x22, 0x91, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x321B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x24, 0x00, 0x13, 0x12, 0x00, 0x1F, 0xD2, 0x00, 0x20, 0x11, 0x00, 0x27, 0x91, 0x00, 0x28, 0x5D, 0x00, 0x28, 0x51, 0x00, 0x17, 0x92, 0x00, 0x10, 0x12, 0x00, 0x08, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x321C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x33, 0xF3, 0x00, 0x60, 0xC1, 0x80, 0x61, 0xB1, 0x80, 0x66, 0x19, 0x80, 0x60, 0x01, 0x80, 0x6F, 0xFD, 0x80, 0x60, 0xC1, 0x80, 0x60, 0xC1, 0x80, 0x30, 0xC3, 0x00, 0x18, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x09, 0x00, 0x5F, 0xFD, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3221, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x40, 0x11, 0x00, 0x4F, 0xF9, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x09, 0x00, 0x5F, 0xFD, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x12, 0x00, 0x4F, 0xF9, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x21, 0x00, 0x47, 0xF1, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x40, 0x09, 0x00, 0x5F, 0xFD, 0x00, 0x40, 0x01, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x40, 0x01, 0x00, 0x5F, 0xFD, 0x00, 0x52, 0x25, 0x00, 0x52, 0x25, 0x00, 0x52, 0x25, 0x00, 0x52, 0x25, 0x00, 0x52, 0x25, 0x00, 0x5F, 0xFD, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x12, 0x00, 0x4F, 0xF9, 0x00, 0x41, 0x01, 0x00, 0x41, 0x01, 0x00, 0x41, 0x11, 0x00, 0x4F, 0xF9, 0x00, 0x42, 0x11, 0x00, 0x42, 0x11, 0x00, 0x42, 0x11, 0x00, 0x42, 0x11, 0x00, 0x5F, 0xFD, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x41, 0x01, 0x00, 0x40, 0x81, 0x00, 0x40, 0x09, 0x00, 0x5F, 0xFD, 0x00, 0x40, 0x01, 0x00, 0x40, 0x01, 0x00, 0x42, 0x21, 0x00, 0x42, 0x11, 0x00, 0x44, 0x09, 0x00, 0x48, 0x09, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3226, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x21, 0x02, 0x00, 0x41, 0x01, 0x00, 0x41, 0x01, 0x00, 0x41, 0x09, 0x00, 0x41, 0x3D, 0x00, 0x41, 0xC1, 0x00, 0x5F, 0x01, 0x00, 0x41, 0x01, 0x00, 0x41, 0x01, 0x00, 0x41, 0x11, 0x00, 0x41, 0x11, 0x00, 0x20, 0xF2, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x42, 0x00, 0x42, 0x41, 0x00, 0x42, 0x41, 0x00, 0x42, 0x41, 0x00, 0x42, 0x41, 0x00, 0x42, 0x41, 0x00, 0x44, 0x21, 0x00, 0x44, 0x11, 0x00, 0x48, 0x0D, 0x00, 0x50, 0x09, 0x00, 0x40, 0x01, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x21, 0x02, 0x00, 0x41, 0x01, 0x00, 0x41, 0x21, 0x00, 0x4F, 0xF1, 0x00, 0x41, 0x21, 0x00, 0x41, 0x21, 0x00, 0x41, 0x21, 0x00, 0x42, 0x21, 0x00, 0x42, 0x25, 0x00, 0x44, 0x25, 0x00, 0x48, 0x1D, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x20, 0x82, 0x00, 0x40, 0x81, 0x00, 0x40, 0x81, 0x00, 0x40, 0x89, 0x00, 0x5F, 0xFD, 0x00, 0x40, 0x81, 0x00, 0x40, 0x81, 0x00, 0x40, 0x81, 0x00, 0x40, 0x81, 0x00, 0x40, 0x81, 0x00, 0x40, 0x81, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x27, 0xF9, 0x00, 0x22, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x11, 0x00, 0x20, 0x21, 0x00, 0x10, 0x42, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x14, 0x02, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x05, 0x00, 0x12, 0x3A, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x22, 0x00, 0x17, 0xF2, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x11, 0x00, 0x11, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x17, 0xF2, 0x00, 0x22, 0x11, 0x00, 0x20, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x22, 0x01, 0x00, 0x12, 0x12, 0x00, 0x11, 0xFA, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x17, 0xF2, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x13, 0xF2, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x22, 0x00, 0x24, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x82, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x21, 0x00, 0x22, 0x11, 0x00, 0x24, 0x11, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x22, 0x11, 0x00, 0x11, 0xE2, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x20, 0x41, 0x00, 0x20, 0x81, 0x00, 0x21, 0x41, 0x00, 0x22, 0x31, 0x00, 0x14, 0x12, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x8C, 0x00, 0x10, 0x42, 0x00, 0x17, 0xFA, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x20, 0xE1, 0x00, 0x21, 0x19, 0x00, 0x12, 0x0A, 0x00, 0x18, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x326A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x11, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x10, 0x42, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x326B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x17, 0xF2, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x01, 0x00, 0x12, 0x12, 0x00, 0x11, 0xFA, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x326C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x326D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0x82, 0x00, 0x10, 0x42, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x22, 0x11, 0x00, 0x12, 0x12, 0x00, 0x11, 0xE2, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x326E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x51, 0x00, 0x20, 0x51, 0x00, 0x20, 0x9D, 0x00, 0x21, 0x11, 0x00, 0x16, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x326F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x1C, 0x00, 0x10, 0x12, 0x00, 0x14, 0x12, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x13, 0x92, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x13, 0x92, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x51, 0x00, 0x27, 0xD1, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x17, 0x92, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x27, 0xD1, 0x00, 0x24, 0x51, 0x00, 0x24, 0x5D, 0x00, 0x27, 0xD1, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x18, 0x92, 0x00, 0x24, 0x51, 0x00, 0x27, 0xD1, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x51, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x11, 0x12, 0x00, 0x21, 0x11, 0x00, 0x23, 0x11, 0x00, 0x24, 0x9D, 0x00, 0x28, 0x51, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x13, 0x92, 0x00, 0x24, 0x51, 0x00, 0x24, 0x51, 0x00, 0x24, 0x5D, 0x00, 0x23, 0x91, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x91, 0x00, 0x21, 0x11, 0x00, 0x22, 0x9D, 0x00, 0x2C, 0x51, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x11, 0x92, 0x00, 0x27, 0xD1, 0x00, 0x20, 0x91, 0x00, 0x21, 0x9D, 0x00, 0x22, 0x51, 0x00, 0x14, 0x52, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x51, 0x00, 0x27, 0xD1, 0x00, 0x20, 0x9D, 0x00, 0x21, 0x11, 0x00, 0x16, 0x12, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x24, 0x11, 0x00, 0x27, 0x91, 0x00, 0x24, 0x1D, 0x00, 0x24, 0x51, 0x00, 0x17, 0x92, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x327A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x9D, 0x00, 0x22, 0x91, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x327B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0C, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x17, 0xD2, 0x00, 0x20, 0x11, 0x00, 0x23, 0x91, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x51, 0x00, 0x13, 0x92, 0x00, 0x10, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x327F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x18, 0x06, 0x00, 0x33, 0x1B, 0x00, 0x23, 0x31, 0x00, 0x63, 0x61, 0x80, 0x63, 0xC0, 0x00, 0x7B, 0xC7, 0x80, 0x03, 0x61, 0x80, 0x63, 0x31, 0x00, 0x33, 0x1B, 0x00, 0x18, 0x06, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3380, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x14, 0x00, 0x10, 0x94, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xBE, 0x00, 0x1F, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0xC1, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3381, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x2E, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x22, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3382, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x04, 0x34, 0x00, 0x08, 0x54, 0x00, 0x08, 0x62, 0x00, 0x10, 0xBE, 0x00, 0x10, 0xC1, 0x00, 0x31, 0x41, 0x00, 0x2E, 0xC1, 0x80, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3383, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x15, 0x14, 0x00, 0x15, 0x22, 0x00, 0x15, 0x3E, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x15, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x10, 0x08, 0x00, 0x11, 0x14, 0x00, 0x12, 0x14, 0x00, 0x14, 0x22, 0x00, 0x18, 0x3E, 0x00, 0x14, 0x41, 0x00, 0x12, 0x41, 0x00, 0x39, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3388, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1C, 0xE2, 0x00, 0x22, 0x12, 0x00, 0x20, 0xF2, 0x00, 0x21, 0x12, 0x00, 0x23, 0x12, 0x00, 0x1C, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3389, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x25, 0x99, 0x00, 0x2A, 0x45, 0x00, 0x32, 0x1D, 0x00, 0x2A, 0x25, 0x00, 0x25, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x338A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x21, 0x40, 0x00, 0x21, 0x7C, 0x00, 0x21, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x338B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x2E, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x338C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x10, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x31, 0x20, 0x00, 0x2E, 0xE0, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x338D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x00, 0x04, 0x31, 0x00, 0x08, 0x51, 0x00, 0x08, 0x4E, 0x00, 0x10, 0x90, 0x00, 0x10, 0x9E, 0x00, 0x31, 0xA1, 0x00, 0x2E, 0xA1, 0x00, 0x40, 0x5E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x338E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x00, 0x3E, 0x31, 0x00, 0x15, 0x11, 0x00, 0x15, 0x0E, 0x00, 0x15, 0x10, 0x00, 0x15, 0x1E, 0x00, 0x15, 0x21, 0x00, 0x15, 0xA1, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x338F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x10, 0x0E, 0x00, 0x11, 0x31, 0x00, 0x12, 0x11, 0x00, 0x14, 0x0E, 0x00, 0x18, 0x10, 0x00, 0x14, 0x1E, 0x00, 0x12, 0x21, 0x00, 0x39, 0xA1, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x80, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x24, 0x00, 0x11, 0x08, 0x00, 0x11, 0x12, 0x00, 0x3B, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x21, 0x20, 0x00, 0x21, 0x20, 0x00, 0x21, 0x20, 0x00, 0x27, 0xEF, 0x80, 0x29, 0x29, 0x00, 0x31, 0x22, 0x00, 0x29, 0x24, 0x80, 0x67, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x20, 0x00, 0x6D, 0x20, 0x00, 0x55, 0x20, 0x00, 0x55, 0x20, 0x00, 0x45, 0xEF, 0x80, 0x45, 0x29, 0x00, 0x45, 0x22, 0x00, 0x45, 0x24, 0x80, 0x45, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x20, 0x00, 0x45, 0x20, 0x00, 0x41, 0x20, 0x00, 0x41, 0x20, 0x00, 0x41, 0xEF, 0x80, 0x5D, 0x29, 0x00, 0x45, 0x22, 0x00, 0x4D, 0x24, 0x80, 0x35, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x20, 0x00, 0x55, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0xEF, 0x80, 0x11, 0x29, 0x00, 0x11, 0x22, 0x00, 0x11, 0x24, 0x80, 0x39, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x29, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x10, 0x89, 0x00, 0x10, 0x8A, 0x00, 0x31, 0x0C, 0x00, 0x2E, 0xF6, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x09, 0x00, 0x3D, 0x89, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4C, 0x00, 0x32, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x12, 0x00, 0x01, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x21, 0x12, 0x00, 0x21, 0x14, 0x00, 0x21, 0x18, 0x00, 0x1F, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x12, 0x12, 0x00, 0x14, 0x12, 0x00, 0x18, 0x12, 0x00, 0x14, 0x14, 0x00, 0x12, 0x18, 0x00, 0x39, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x3399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x0E, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x339A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x7C, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x11, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x339B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x08, 0xFC, 0x00, 0x08, 0xAA, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x32, 0x2A, 0x00, 0x2D, 0xEB, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x339C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x339D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x21, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x21, 0x2A, 0x00, 0x1E, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x339E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x7C, 0x00, 0x18, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x39, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x339F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x04, 0x80, 0x00, 0x01, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x04, 0x80, 0x00, 0x01, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x21, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x21, 0x2A, 0x00, 0x1E, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x09, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0xB0, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x06, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x04, 0x80, 0x30, 0x01, 0x00, 0x10, 0x07, 0x80, 0x11, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x7C, 0x00, 0x18, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x39, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A3, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A4, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x21, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x21, 0x2A, 0x00, 0x1E, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A5, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x00, 0x0F, 0xB0, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x06, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A6, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x80, 0x00, 0x01, 0x00, 0x30, 0x04, 0x80, 0x10, 0x03, 0x00, 0x11, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x7C, 0x00, 0x18, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x39, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x04, 0x00, 0x15, 0x08, 0x00, 0x15, 0x10, 0x00, 0x15, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x8C, 0x00, 0x01, 0x10, 0x00, 0x02, 0x0C, 0x00, 0x04, 0x02, 0x00, 0x08, 0x12, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x0B, 0x00, 0x15, 0x14, 0x80, 0x15, 0x21, 0x00, 0x15, 0x47, 0x80, 0x00, 0x80, 0x00, 0x01, 0x0C, 0x00, 0x02, 0x10, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x02, 0x00, 0x10, 0x12, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xB8, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xE0, 0x00, 0x21, 0x10, 0x00, 0x21, 0x10, 0x00, 0x21, 0x1E, 0x00, 0x25, 0xE1, 0x00, 0x29, 0x0F, 0x00, 0x31, 0x11, 0x00, 0x29, 0x11, 0x00, 0x25, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xE0, 0x00, 0x6D, 0x10, 0x00, 0x55, 0x10, 0x00, 0x55, 0x1E, 0x00, 0x55, 0xE1, 0x00, 0x45, 0x0F, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x45, 0x10, 0x00, 0x45, 0x10, 0x00, 0x41, 0x1E, 0x00, 0x41, 0xE1, 0x00, 0x5D, 0x0F, 0x00, 0x45, 0x11, 0x00, 0x4D, 0x11, 0x00, 0x35, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x2C, 0xC1, 0x00, 0x11, 0x27, 0x00, 0x10, 0xE9, 0x00, 0x11, 0x31, 0x00, 0x11, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33AE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x5B, 0x08, 0x00, 0x24, 0xBA, 0x00, 0x23, 0xCC, 0x00, 0x24, 0xC8, 0x00, 0x27, 0x78, 0x00, 0x00, 0x20, 0x00, 0x00, 0x46, 0x00, 0x00, 0x88, 0x00, 0x01, 0x06, 0x00, 0x02, 0x11, 0x00, 0x04, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33AF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x56, 0x10, 0x00, 0x29, 0x74, 0x00, 0x27, 0x9B, 0x00, 0x29, 0x94, 0x80, 0x2E, 0xF1, 0x00, 0x00, 0x47, 0x80, 0x00, 0x80, 0x00, 0x01, 0x0C, 0x00, 0x02, 0x10, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x22, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1E, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA0, 0x00, 0x10, 0x9E, 0x00, 0x1F, 0x01, 0x00, 0x10, 0x21, 0x00, 0x10, 0x5E, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x1E, 0x00, 0x11, 0x21, 0x00, 0x11, 0x20, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x01, 0x00, 0x11, 0x21, 0x00, 0x11, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2E, 0x00, 0x08, 0x51, 0x00, 0x08, 0x50, 0x00, 0x10, 0x8E, 0x00, 0x10, 0x81, 0x00, 0x31, 0x21, 0x00, 0x2E, 0xDE, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x15, 0x21, 0x00, 0x15, 0x20, 0x00, 0x15, 0x1E, 0x00, 0x15, 0x01, 0x00, 0x15, 0x21, 0x00, 0x15, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0x00, 0x00, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x21, 0x44, 0x00, 0x21, 0x44, 0x00, 0x21, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0x00, 0x00, 0x82, 0x00, 0x5C, 0x82, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x28, 0x00, 0x22, 0x28, 0x00, 0x22, 0x10, 0x00, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x41, 0x00, 0x04, 0x41, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x10, 0x94, 0x00, 0x10, 0x94, 0x00, 0x31, 0x08, 0x00, 0x2E, 0xC8, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x14, 0x00, 0x15, 0x14, 0x00, 0x15, 0x08, 0x00, 0x15, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC1, 0x80, 0x10, 0x41, 0x00, 0x11, 0x41, 0x00, 0x12, 0x22, 0x00, 0x14, 0x22, 0x00, 0x18, 0x14, 0x00, 0x14, 0x14, 0x00, 0x12, 0x08, 0x00, 0x39, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xC1, 0x80, 0x1B, 0x41, 0x00, 0x1B, 0x41, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x08, 0x00, 0x3B, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x49, 0x00, 0x10, 0xC9, 0x00, 0x10, 0xC9, 0x00, 0x10, 0xC9, 0x00, 0x1F, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x36, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x10, 0xC9, 0x00, 0x10, 0xC9, 0x00, 0x31, 0x49, 0x00, 0x2F, 0x36, 0x00, 0x41, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x41, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x15, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x41, 0x00, 0x12, 0x49, 0x00, 0x14, 0x49, 0x00, 0x18, 0x49, 0x00, 0x14, 0x49, 0x00, 0x12, 0x49, 0x00, 0x39, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x1B, 0x41, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x3B, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x00, 0x20, 0x44, 0x00, 0x20, 0x82, 0x00, 0x22, 0x82, 0x00, 0x24, 0x82, 0x00, 0x28, 0x44, 0x00, 0x30, 0x28, 0x00, 0x29, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x38, 0x00, 0x36, 0x44, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0x44, 0x00, 0x22, 0x28, 0x00, 0x23, 0x29, 0x00, 0x23, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xEC, 0x00, 0x44, 0x92, 0x00, 0x04, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x44, 0x92, 0x00, 0x44, 0x92, 0x00, 0x3D, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0x8F, 0x00, 0x08, 0x51, 0x00, 0x08, 0x51, 0x00, 0x08, 0x51, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0x13, 0x46, 0x00, 0x10, 0x40, 0x00, 0x10, 0xC2, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x1C, 0x00, 0x11, 0x24, 0x00, 0x10, 0x44, 0x00, 0x11, 0x44, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x90, 0x00, 0x0F, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x48, 0x00, 0x04, 0x53, 0x00, 0x08, 0x64, 0x80, 0x10, 0x54, 0x80, 0x00, 0x4B, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x10, 0x40, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x18, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x08, 0xA4, 0x00, 0x07, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7C, 0x00, 0x01, 0x42, 0x00, 0x01, 0x42, 0x00, 0x0F, 0x7C, 0x00, 0x11, 0x42, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x23, 0xA1, 0x00, 0x20, 0x91, 0x00, 0x11, 0x8A, 0x00, 0x0E, 0x84, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0x1C, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x9E, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x18, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0x10, 0x00, 0x12, 0x7C, 0x00, 0x14, 0x10, 0x00, 0x18, 0x10, 0x00, 0x14, 0x10, 0x00, 0x12, 0x12, 0x00, 0x39, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xF0, 0x00, 0x04, 0xA8, 0x00, 0x04, 0xA8, 0x00, 0x04, 0xA8, 0x00, 0x04, 0xA8, 0x00, 0x0E, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xCC, 0x00, 0x04, 0x48, 0x00, 0x04, 0x30, 0x00, 0x04, 0x30, 0x00, 0x04, 0x48, 0x00, 0x0E, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x7C, 0x72, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEC, 0x00, 0x42, 0x92, 0x00, 0x42, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x40, 0x92, 0x00, 0x40, 0x92, 0x00, 0x44, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x26, 0x00, 0x08, 0x19, 0x00, 0x07, 0x10, 0x00, 0x00, 0x90, 0x00, 0x10, 0x90, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x22, 0x00, 0x00, 0xA2, 0x00, 0x00, 0xA2, 0x00, 0x10, 0x94, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x33DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x0A, 0xA0, 0x00, 0x0A, 0xBC, 0x00, 0x0A, 0xA2, 0x00, 0x05, 0x22, 0x00, 0x05, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E03, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x03, 0x80, 0x02, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x3A, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x10, 0x04, 0x00, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E08, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x05, 0x20, 0x00, 0x09, 0x20, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E0A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x48, 0x00, 0x02, 0x44, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x40, 0x80, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E0E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x06, 0x82, 0x00, 0x03, 0x82, 0x00, 0x01, 0x02, 0x00, 0x03, 0x82, 0x00, 0x02, 0xC2, 0x00, 0x06, 0x46, 0x00, 0x0C, 0x04, 0x00, 0x18, 0x04, 0x00, 0x70, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E13, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x03, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xD0, 0x00, 0x01, 0x48, 0x00, 0x02, 0x44, 0x00, 0x0C, 0x42, 0x00, 0x30, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E16, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E17, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E18, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x11, 0x00, 0x12, 0x09, 0x00, 0x1C, 0x05, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E1A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x22, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x30, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x04, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x09, 0x48, 0x00, 0x10, 0xC4, 0x00, 0x20, 0x87, 0x00, 0x41, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E1C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x04, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x8C, 0x00, 0x22, 0x84, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E1D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x11, 0x22, 0x00, 0x3F, 0x7E, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x61, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x64, 0x00, 0x01, 0x68, 0x00, 0x02, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x48, 0x00, 0x08, 0x44, 0x00, 0x10, 0x42, 0x00, 0x23, 0x81, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x06, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x0F, 0xC2, 0x00, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E22, { 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x25, 0x29, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x28, 0x41, 0x00, 0x28, 0x81, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E25, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x09, 0x24, 0x00, 0x05, 0x28, 0x00, 0x01, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E26, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x32, 0x13, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E27, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x06, 0x98, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x09, 0x10, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x18, 0x00, 0x0C, 0x07, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E2A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E2C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E2D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xE8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x0D, 0x00, 0x02, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E2F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E30, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E31, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E32, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E34, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFF, 0x00, 0x29, 0x00, 0x00, 0x2A, 0x40, 0x00, 0x2C, 0x30, 0x00, 0x28, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E35, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E38, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x02, 0x84, 0x00, 0x01, 0x84, 0x00, 0x00, 0xC4, 0x00, 0x00, 0xA4, 0x00, 0x01, 0x14, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x80, 0x04, 0x04, 0x80, 0x08, 0x07, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E3A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x06, 0x40, 0x00, 0x02, 0x40, 0x00, 0x00, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x01, 0x42, 0x00, 0x02, 0x32, 0x00, 0x04, 0x12, 0x00, 0x08, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E3B, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E3C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x05, 0x88, 0x00, 0x04, 0xC8, 0x00, 0x04, 0x48, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x70, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E3D, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x7E, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x19, 0x64, 0x00, 0x15, 0x54, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x15, 0x54, 0x00, 0x12, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E3E, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x90, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x17, 0xF7, 0x00, 0x60, 0x82, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E3F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x12, 0x00, 0x00, 0x33, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x24, 0x04, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x1F, 0x80, 0x01, 0x10, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x00, 0x10, 0x01, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x03, 0x98, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xF0, 0x00, 0x01, 0x98, 0x00, 0x13, 0x00, 0x00, 0x12, 0x00, 0x00, 0x16, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E45, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x06, 0x00, 0x0C, 0x01, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E47, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x83, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E48, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x40, 0x00, 0x10, 0x80, 0x00, 0x20, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x10, 0x84, 0x00, 0x10, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x30, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x07, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E4B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E4C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E4D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x20, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E4E, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E4F, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x13, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E50, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x88, 0x00, 0x08, 0x84, 0x00, 0x10, 0x86, 0x00, 0x22, 0x82, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E51, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x18, 0x82, 0x00, 0x30, 0x86, 0x00, 0x60, 0xAC, 0x00, 0x00, 0xB0, 0x00, 0x08, 0x98, 0x00, 0x18, 0x8C, 0x00, 0x30, 0x86, 0x00, 0x60, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E52, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E53, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E54, { 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x28, 0x00, 0x1A, 0x27, 0x00, 0x62, 0x22, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E55, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x21, 0x00, 0x24, 0x21, 0x00, 0x64, 0x21, 0x00, 0x04, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E56, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x49, 0x80, 0x3E, 0x4E, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x0E, 0x48, 0x80, 0x32, 0x48, 0x80, 0x02, 0x4F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E57, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E58, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x3E, 0x4B, 0x80, 0x02, 0x4C, 0x00, 0x0E, 0x48, 0x80, 0x32, 0x6F, 0x80, 0x02, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x01, 0x80, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x80, 0x20, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E5A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x0C, 0x03, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E5C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x07, 0x00, 0x04, 0x3D, 0x00, 0x05, 0xE1, 0x00, 0x07, 0x01, 0x00, 0x7C, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x07, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x80, 0x06, 0x01, 0x80, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E5D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x80, 0x08, 0x08, 0x80, 0x10, 0x0F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E5E, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E5F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x8E, 0x00, 0x08, 0xF2, 0x00, 0x0B, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x12, 0x00, 0x00, 0x62, 0x00, 0x01, 0x82, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E61, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E62, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x7F, 0x20, 0x80, 0x00, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E63, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x61, 0x10, 0x00, 0x33, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x90, 0x00, 0x10, 0x90, 0x00, 0x3F, 0xD0, 0x80, 0x60, 0x59, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E66, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x00, 0x83, 0x00, 0x1F, 0xF9, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E68, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x90, 0x00, 0x30, 0x90, 0x00, 0x27, 0xD0, 0x00, 0x7C, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x20, 0x90, 0x00, 0x20, 0x90, 0x80, 0x20, 0x99, 0x80, 0x3F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E69, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xD0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x40, 0x90, 0x00, 0x40, 0x90, 0x00, 0x40, 0x90, 0x00, 0x40, 0x90, 0x80, 0x40, 0x99, 0x80, 0x7F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E6B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x91, 0x00, 0x04, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x11, 0x9F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x20, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x04, 0x44, 0x00, 0x03, 0x40, 0x00, 0x01, 0x40, 0x00, 0x10, 0x40, 0x00, 0x0C, 0x80, 0x00, 0x04, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x60, 0x00, 0x02, 0x18, 0x00, 0x04, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E71, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x07, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x20, 0x90, 0x00, 0x20, 0x90, 0x80, 0x20, 0x99, 0x80, 0x3F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E73, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x1C, 0x90, 0x00, 0x12, 0x50, 0x00, 0x21, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0xD0, 0x00, 0x07, 0x10, 0x00, 0x3A, 0x10, 0x00, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E74, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x0E, 0x44, 0x00, 0x78, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x19, 0x84, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x01, 0x00, 0x0C, 0x03, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E75, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x20, 0x90, 0x00, 0x31, 0x90, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x80, 0x04, 0x19, 0x80, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E76, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E77, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0xA4, 0x00, 0x01, 0x22, 0x00, 0x22, 0x21, 0x00, 0x10, 0x20, 0x00, 0x00, 0x21, 0x00, 0x08, 0x66, 0x00, 0x10, 0x18, 0x00, 0x20, 0x60, 0x00, 0x03, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x80, 0x30, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E79, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x80, 0x04, 0x10, 0x80, 0x04, 0x19, 0x80, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E7E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x40, 0x00, 0x3F, 0x80, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xC0, 0x80, 0x04, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E7F, { 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x29, 0x20, 0x00, 0x44, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x10, 0x20, 0x00, 0x22, 0x20, 0x00, 0x14, 0x20, 0x00, 0x08, 0x20, 0x00, 0x11, 0x20, 0x00, 0x7F, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x2A, 0x20, 0x80, 0x6B, 0x20, 0x80, 0x49, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E80, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x68, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x80, 0x00, 0x80, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E82, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x1C, 0x90, 0x00, 0x12, 0x50, 0x00, 0x11, 0x10, 0x00, 0x20, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x09, 0x10, 0x00, 0x06, 0x10, 0x00, 0x3F, 0xD0, 0x00, 0x24, 0x50, 0x00, 0x29, 0x50, 0x00, 0x33, 0xD0, 0x00, 0x3C, 0xD0, 0x80, 0x20, 0x50, 0x80, 0x20, 0x50, 0x80, 0x20, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4E85, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x00, 0x42, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E89, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x30, 0x00, 0x18, 0x60, 0x00, 0x70, 0xC0, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E8A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E8B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E8F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0x0F, 0x00, 0x11, 0xF0, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E93, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E95, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E97, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x06, 0xC8, 0x00, 0x04, 0x68, 0x00, 0x04, 0x08, 0x00, 0x05, 0x98, 0x00, 0x0C, 0xD0, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E9A, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x22, 0x24, 0x00, 0x12, 0x26, 0x00, 0x12, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x30, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E9B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x12, 0x11, 0x80, 0x13, 0xD6, 0x00, 0x12, 0x18, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x80, 0x13, 0xDF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E9D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x10, 0x08, 0x00, 0x22, 0x11, 0x00, 0x7F, 0x3F, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4E9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x51, 0x00, 0x22, 0x5B, 0x00, 0x22, 0x4E, 0x00, 0x22, 0x44, 0x00, 0x3E, 0xCE, 0x00, 0x00, 0x9B, 0x00, 0x03, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x08, 0x0F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x0A, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EA5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x48, 0x00, 0x04, 0x88, 0x00, 0x03, 0x12, 0x00, 0x01, 0x22, 0x00, 0x00, 0xC4, 0x00, 0x01, 0x08, 0x00, 0x06, 0x18, 0x00, 0x18, 0x24, 0x00, 0x00, 0xC2, 0x00, 0x03, 0x01, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x05, 0x14, 0x00, 0x05, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x12, 0x10, 0x80, 0x22, 0x10, 0x80, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x01, 0x08, 0x00, 0x01, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EA9, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EAB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EAC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EAD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EAE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EAF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EB0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EB2, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x8C, 0x00, 0x10, 0x86, 0x00, 0x22, 0x82, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EB3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0xF9, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EB5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x7E, 0x00, 0x04, 0x24, 0x00, 0x07, 0x64, 0x00, 0x3C, 0x54, 0x00, 0x04, 0x85, 0x00, 0x0D, 0x03, 0x00, 0x00, 0x88, 0x00, 0x01, 0x50, 0x00, 0x06, 0x20, 0x00, 0x0A, 0x98, 0x00, 0x33, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EB6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFA, 0x00, 0x0A, 0x0A, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EB9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3B, 0xF7, 0x00, 0x22, 0x11, 0x00, 0x3B, 0xD7, 0x00, 0x22, 0x51, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EBA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EBB, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EBF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x18, 0x20, 0x00, 0x28, 0x40, 0x00, 0x48, 0x80, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC2, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x21, 0x00, 0x30, 0x21, 0x00, 0x50, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x61, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0xC1, 0x00, 0x10, 0x83, 0x00, 0x11, 0x82, 0x00, 0x13, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC3, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x38, 0x08, 0x00, 0x68, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x21, 0x04, 0x00, 0x22, 0x02, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EC5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x28, 0x84, 0x00, 0x48, 0x84, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x83, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x38, 0x1C, 0x00, 0x68, 0x17, 0x00, 0x08, 0x11, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC7, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1B, 0xFC, 0x00, 0x18, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0x84, 0x80, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EC9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0x88, 0x00, 0x28, 0x88, 0x00, 0x48, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x0A, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ECA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ECB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ECD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x18, 0x4F, 0x80, 0x28, 0x48, 0x80, 0x28, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x09, 0x01, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ECE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0A, 0x1C, 0x00, 0x0B, 0x14, 0x00, 0x19, 0x14, 0x00, 0x11, 0xB6, 0x00, 0x30, 0xA2, 0x00, 0x60, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4ECF, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x60, 0x00, 0x10, 0x40, 0x00, 0x30, 0x40, 0x00, 0x50, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x83, 0x00, 0x10, 0x81, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xF1, 0x80, 0x13, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4ED0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x0F, 0x00, 0x64, 0x12, 0x00, 0x04, 0x30, 0x00, 0x04, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0F, 0x00, 0x67, 0xF2, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x50, 0x00, 0x04, 0x20, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x04, 0x00, 0x18, 0x18, 0x00, 0x18, 0x10, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x13, 0x00, 0x19, 0x15, 0x00, 0x19, 0x39, 0x00, 0x29, 0xD1, 0x00, 0x2F, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x17, 0x00, 0x09, 0x10, 0x00, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED7, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x29, 0x10, 0x00, 0x29, 0x10, 0x00, 0x0A, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x50, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4ED8, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x04, 0x00, 0x28, 0x04, 0x00, 0x28, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4ED9, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x19, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EDA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EDB, { 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x1E, 0x00, 0x06, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x19, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EDD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x06, 0x00, 0x0C, 0x01, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EDE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x21, 0x00, 0x08, 0x21, 0x00, 0x18, 0x21, 0x00, 0x10, 0xA1, 0x00, 0x30, 0xA1, 0x00, 0x51, 0xA1, 0x00, 0x11, 0x21, 0x00, 0x10, 0x61, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0xC3, 0x00, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x13, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EDF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EE0, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x7F, 0x00, 0x06, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x68, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EE1, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x80, 0x00, 0x11, 0x80, 0x00, 0x33, 0x7E, 0x00, 0x50, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x30, 0x00, 0x10, 0x60, 0x00, 0x10, 0xC0, 0x00, 0x11, 0x80, 0x00, 0x11, 0x00, 0x80, 0x11, 0x81, 0x80, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EE2, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0xC1, 0x00, 0x08, 0x81, 0x00, 0x19, 0x81, 0x00, 0x38, 0x31, 0x00, 0x68, 0x19, 0x00, 0x08, 0x09, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EE3, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x48, 0x00, 0x08, 0x44, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x28, 0x40, 0x00, 0x28, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x80, 0x08, 0x06, 0x80, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EE4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x1C, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EE5, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x0A, 0x00, 0x10, 0xD2, 0x00, 0x17, 0x22, 0x00, 0x38, 0x41, 0x00, 0x00, 0x81, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EE8, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x7E, 0x00, 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EEA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x32, 0x00, 0x09, 0x12, 0x00, 0x09, 0x02, 0x00, 0x19, 0x04, 0x00, 0x28, 0x84, 0x00, 0x48, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EEB, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x28, 0x00, 0x14, 0x48, 0x00, 0x24, 0x90, 0x00, 0x05, 0x10, 0x00, 0x06, 0x20, 0x00, 0x04, 0x40, 0x00, 0x04, 0x84, 0x00, 0x05, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EEC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x02, 0x00, 0x08, 0xBF, 0x00, 0x12, 0x42, 0x00, 0x12, 0x02, 0x00, 0x32, 0x02, 0x00, 0x52, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EED, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x22, 0x00, 0x18, 0x22, 0x00, 0x11, 0x22, 0x00, 0x31, 0xA2, 0x00, 0x50, 0xE2, 0x00, 0x10, 0x62, 0x00, 0x10, 0x72, 0x00, 0x10, 0x5A, 0x00, 0x10, 0x4E, 0x00, 0x10, 0xC7, 0x00, 0x10, 0x85, 0x80, 0x11, 0x84, 0x00, 0x13, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EEE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x31, 0x42, 0x00, 0x51, 0x46, 0x00, 0x11, 0x64, 0x00, 0x11, 0x2C, 0x00, 0x11, 0x38, 0x00, 0x13, 0x10, 0x00, 0x12, 0x38, 0x00, 0x16, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4EEF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x92, 0x00, 0x18, 0x92, 0x00, 0x11, 0x93, 0x00, 0x31, 0x11, 0x00, 0x53, 0x11, 0x80, 0x10, 0x12, 0x00, 0x10, 0x72, 0x00, 0x10, 0x06, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x30, 0x00, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF0, { 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x05, 0x8F, 0x80, 0x09, 0x08, 0x80, 0x09, 0x08, 0x80, 0x19, 0x08, 0x80, 0x19, 0x08, 0x80, 0x29, 0x08, 0x80, 0x29, 0x08, 0x80, 0x09, 0x08, 0x80, 0x09, 0x08, 0x80, 0x09, 0x78, 0x80, 0x0B, 0x8F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF1, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x33, 0x7D, 0x80, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF2, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x1A, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF3, { 0x00, 0x00, 0x00, 0x02, 0x88, 0x00, 0x02, 0x88, 0x00, 0x06, 0x88, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x88, 0x80, 0x08, 0x89, 0x80, 0x18, 0xEF, 0x00, 0x38, 0x88, 0x00, 0x68, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, 0x08, 0xED, 0x80, 0x0B, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF5, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x48, 0x00, 0x08, 0xC8, 0x00, 0x18, 0x08, 0x00, 0x38, 0x08, 0x00, 0x68, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x90, 0x00, 0x18, 0xFF, 0x00, 0x19, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EF7, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x18, 0x82, 0x00, 0x19, 0x01, 0x00, 0x2A, 0x00, 0x80, 0x28, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EFB, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x04, 0x38, 0x00, 0x09, 0xD0, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EFD, { 0x00, 0x00, 0x00, 0x04, 0x1C, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x18, 0x82, 0x00, 0x11, 0x83, 0x00, 0x33, 0x01, 0x80, 0x50, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x62, 0x00, 0x10, 0x42, 0x00, 0x10, 0x86, 0x00, 0x11, 0x84, 0x00, 0x13, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EFE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x10, 0xFC, 0x00, 0x30, 0x84, 0x00, 0x50, 0x84, 0x00, 0x11, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4EFF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0xFF, 0x80, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x38, 0x3F, 0x00, 0x68, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x61, 0x00, 0x08, 0x43, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F00, { 0x00, 0x00, 0x00, 0x02, 0x1C, 0x00, 0x02, 0x04, 0x00, 0x06, 0x26, 0x00, 0x04, 0x62, 0x00, 0x0C, 0x43, 0x00, 0x08, 0xC1, 0x00, 0x18, 0x91, 0x80, 0x39, 0x90, 0x00, 0x68, 0x10, 0x00, 0x08, 0x30, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x43, 0x00, 0x08, 0xC1, 0x00, 0x08, 0x8F, 0x00, 0x09, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F01, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F02, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F03, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x06, 0x02, 0x00, 0x04, 0x64, 0x00, 0x0C, 0x38, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x38, 0x10, 0x80, 0x68, 0x11, 0x00, 0x08, 0x12, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F08, { 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x04, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x08, 0x00, 0x18, 0x40, 0x00, 0x10, 0x40, 0x00, 0x30, 0x40, 0x00, 0x50, 0x40, 0x00, 0x11, 0x43, 0x00, 0x11, 0x41, 0x00, 0x13, 0x41, 0x80, 0x12, 0x40, 0x80, 0x16, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x66, 0x00, 0x10, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F09, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x28, 0x7C, 0x00, 0x28, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x80, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F0A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x18, 0x22, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F0B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x18, 0x84, 0x00, 0x18, 0xFF, 0x00, 0x28, 0xC1, 0x00, 0x28, 0xC2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x14, 0x00, 0x09, 0x22, 0x00, 0x0A, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F0C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFF, 0x80, 0x06, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0C, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x18, 0xA2, 0x00, 0x38, 0xA2, 0x00, 0x68, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA6, 0x00, 0x08, 0xA0, 0x00, 0x09, 0xA0, 0x00, 0x09, 0x20, 0x80, 0x0B, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F0D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x18, 0x20, 0x00, 0x28, 0x20, 0x00, 0x2B, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F0E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0x82, 0x00, 0x08, 0x42, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F0F, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x08, 0x22, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x28, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x09, 0x02, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F10, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x08, 0x22, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x28, 0x21, 0x00, 0x28, 0x21, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x80, 0x08, 0xC6, 0x80, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F11, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x38, 0x00, 0x28, 0x38, 0x00, 0x28, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F12, { 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x02, 0x0E, 0x00, 0x06, 0xF8, 0x00, 0x04, 0x80, 0x00, 0x0C, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x84, 0x00, 0x38, 0x84, 0x00, 0x68, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F15, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x68, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F16, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x05, 0xFF, 0x80, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x7E, 0x00, 0x38, 0x42, 0x00, 0x68, 0x42, 0x00, 0x08, 0xE6, 0x00, 0x08, 0xA4, 0x00, 0x09, 0xBC, 0x00, 0x0B, 0x18, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x66, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F17, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x74, 0x0B, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x0A, 0x14, 0x00, 0x1B, 0x36, 0x00, 0x31, 0xE3, 0x00, 0x60, 0xC1, 0x80, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F18, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x42, 0x00, 0x3F, 0xFF, 0x00, 0x50, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x14, 0x1F, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F19, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x11, 0x00, 0x04, 0x91, 0x00, 0x0C, 0x93, 0x00, 0x08, 0x92, 0x00, 0x19, 0x96, 0x00, 0x39, 0x10, 0x00, 0x68, 0x38, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F1A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x04, 0x7C, 0x00, 0x0F, 0xC6, 0x00, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F1B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x09, 0x04, 0x00, 0x19, 0x44, 0x00, 0x29, 0x28, 0x00, 0x49, 0x28, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x28, 0x00, 0x09, 0x44, 0x00, 0x09, 0x84, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F1C, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0D, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xC4, 0x80, 0x31, 0x84, 0x80, 0x53, 0x03, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F1D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x86, 0x00, 0x10, 0x82, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xF1, 0x80, 0x13, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F1E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x87, 0x00, 0x68, 0x8A, 0x00, 0x06, 0x98, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F1F, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x18, 0x24, 0x00, 0x2B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x24, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F20, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x18, 0x22, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F22, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8A, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x18, 0x00, 0x08, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0x48, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F24, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x05, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x28, 0x44, 0x00, 0x4B, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F25, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x84, 0x00, 0x04, 0x88, 0x00, 0x08, 0x90, 0x00, 0x08, 0xA0, 0x00, 0x18, 0xC0, 0x00, 0x28, 0x82, 0x00, 0x4F, 0xFF, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x90, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA3, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F26, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x19, 0x04, 0x00, 0x2A, 0x07, 0x00, 0x4C, 0x82, 0x00, 0x08, 0x88, 0x00, 0x08, 0x98, 0x00, 0x08, 0xE0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F27, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x19, 0x07, 0x00, 0x2A, 0x02, 0x00, 0x4C, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F2A, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x05, 0x20, 0x00, 0x04, 0xA0, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x22, 0x00, 0x28, 0x22, 0x00, 0x48, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x52, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x82, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x14, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F2B, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x1A, 0x04, 0x00, 0x28, 0x00, 0x00, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F2E, { 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x3F, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x11, 0x00, 0x1B, 0xD1, 0x00, 0x11, 0x5B, 0x00, 0x31, 0x4A, 0x00, 0x51, 0x4A, 0x00, 0x13, 0x4E, 0x00, 0x12, 0x44, 0x00, 0x12, 0xC4, 0x00, 0x13, 0x8E, 0x00, 0x10, 0x8A, 0x00, 0x11, 0xDB, 0x00, 0x11, 0x51, 0x00, 0x13, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F2F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x19, 0x01, 0x00, 0x29, 0x01, 0x00, 0x29, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F30, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x50, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F31, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x11, 0x93, 0x00, 0x33, 0x11, 0x80, 0x50, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x11, 0x11, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F32, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x05, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x49, 0x40, 0x00, 0x09, 0x44, 0x00, 0x09, 0x4C, 0x00, 0x09, 0x50, 0x00, 0x09, 0x60, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0x3F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F33, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x24, 0x00, 0x0D, 0x24, 0x00, 0x09, 0x24, 0x00, 0x19, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x31, 0x24, 0x00, 0x51, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x3C, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F34, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F35, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0D, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x19, 0x24, 0x80, 0x11, 0x24, 0x80, 0x31, 0x24, 0x80, 0x51, 0x24, 0x80, 0x11, 0x64, 0x80, 0x11, 0x47, 0x80, 0x11, 0xC0, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F36, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x19, 0x01, 0x00, 0x1A, 0x00, 0x80, 0x29, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x46, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F37, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x39, 0x11, 0x00, 0x69, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F38, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x19, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F39, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x06, 0x82, 0x00, 0x04, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x38, 0x82, 0x00, 0x68, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F3A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x18, 0x00, 0x80, 0x19, 0xFE, 0x80, 0x28, 0x00, 0x80, 0x28, 0x00, 0x80, 0x08, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x08, 0x84, 0x80, 0x08, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F3B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x54, 0x00, 0x18, 0xD6, 0x00, 0x10, 0x92, 0x00, 0x30, 0x92, 0x00, 0x50, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F3C, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x92, 0x00, 0x18, 0x8A, 0x00, 0x18, 0x82, 0x00, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFA, 0x00, 0x0F, 0x02, 0x00, 0x08, 0x05, 0x00, 0x08, 0x18, 0x80, 0x08, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F3D, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0B, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x18, 0x94, 0x80, 0x18, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x09, 0x14, 0x80, 0x09, 0x14, 0x80, 0x09, 0x67, 0x80, 0x0A, 0x04, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F3E, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x10, 0x00, 0x18, 0x34, 0x00, 0x38, 0x76, 0x00, 0x68, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F40, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x51, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F42, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x90, 0x00, 0x10, 0x90, 0x00, 0x30, 0x9F, 0x00, 0x50, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F43, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x19, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F46, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F47, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F48, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x90, 0x00, 0x19, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2D, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x13, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F49, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x38, 0x10, 0x00, 0x6B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x62, 0x00, 0x08, 0x42, 0x00, 0x08, 0x5F, 0x00, 0x08, 0xF1, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F4B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x21, 0x00, 0x08, 0x21, 0x00, 0x18, 0x61, 0x00, 0x10, 0x43, 0x00, 0x30, 0xC2, 0x00, 0x51, 0x8E, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F4C, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x45, 0x80, 0x12, 0x77, 0x00, 0x32, 0x44, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x74, 0x80, 0x13, 0xC6, 0x80, 0x16, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F4D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x29, 0x01, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x42, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F4E, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x05, 0xF0, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x10, 0x00, 0x19, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x08, 0x00, 0x09, 0xF8, 0x80, 0x0F, 0x04, 0x80, 0x08, 0x02, 0x80, 0x09, 0xFD, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F4F, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F50, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x40, 0x00, 0x18, 0x40, 0x00, 0x28, 0x80, 0x00, 0x28, 0x80, 0x00, 0x09, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F51, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x18, 0x80, 0x00, 0x28, 0x80, 0x00, 0x29, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F52, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x22, 0x00, 0x11, 0x22, 0x00, 0x31, 0x22, 0x00, 0x51, 0x22, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x10, 0x58, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x8C, 0x00, 0x11, 0x86, 0x00, 0x13, 0x03, 0x00, 0x16, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F53, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x10, 0xA8, 0x00, 0x30, 0xA8, 0x00, 0x50, 0xAC, 0x00, 0x11, 0xA4, 0x00, 0x11, 0x26, 0x00, 0x11, 0x22, 0x00, 0x13, 0x23, 0x00, 0x16, 0xFD, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F54, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x38, 0x10, 0x00, 0x68, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F55, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x18, 0x02, 0x00, 0x29, 0xF2, 0x00, 0x29, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F56, { 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x04, 0x30, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x10, 0x46, 0x00, 0x30, 0x44, 0x00, 0x51, 0x4C, 0x00, 0x11, 0x4B, 0x00, 0x11, 0x59, 0x80, 0x13, 0x70, 0x80, 0x12, 0x60, 0x00, 0x10, 0x40, 0x00, 0x11, 0xC1, 0x00, 0x17, 0x63, 0x00, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F57, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x12, 0x00, 0x80, 0x30, 0x40, 0x00, 0x50, 0x43, 0x00, 0x10, 0x4E, 0x00, 0x10, 0x78, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x80, 0x10, 0x61, 0x80, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F58, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x18, 0x86, 0x00, 0x30, 0x83, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F59, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x06, 0x00, 0x0C, 0x01, 0x80, 0x37, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F5A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F5B, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x49, 0x00, 0x18, 0x49, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x08, 0x88, 0x80, 0x08, 0x8B, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F5C, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x19, 0x20, 0x00, 0x1A, 0x20, 0x00, 0x28, 0x20, 0x00, 0x28, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F5D, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0C, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x13, 0x01, 0x00, 0x30, 0xF9, 0x00, 0x50, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0xF9, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F5E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x20, 0x00, 0x50, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x86, 0x00, 0x11, 0xE4, 0x00, 0x10, 0x3C, 0x00, 0x10, 0xE7, 0x00, 0x13, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F5F, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x7C, 0x00, 0x04, 0xC4, 0x00, 0x0D, 0x8C, 0x00, 0x08, 0x58, 0x00, 0x18, 0x30, 0x00, 0x38, 0x78, 0x00, 0x68, 0xCE, 0x00, 0x0B, 0x83, 0x80, 0x08, 0x70, 0x00, 0x08, 0x18, 0x00, 0x08, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x38, 0x00, 0x08, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F60, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x40, 0x00, 0x04, 0xFF, 0x80, 0x0C, 0x88, 0x80, 0x09, 0x89, 0x80, 0x1B, 0x09, 0x00, 0x38, 0x2A, 0x00, 0x68, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F63, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x51, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x13, 0x11, 0x00, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F64, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0x88, 0x00, 0x18, 0xFC, 0x00, 0x28, 0x88, 0x00, 0x48, 0x88, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x28, 0x00, 0x09, 0x18, 0x00, 0x09, 0x08, 0x00, 0x09, 0xE9, 0x00, 0x0B, 0x09, 0x00, 0x08, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F65, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x28, 0x00, 0x17, 0xF7, 0x00, 0x60, 0x02, 0x00, 0x09, 0x08, 0x00, 0x04, 0x88, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x20, 0x00, 0x00, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F67, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x48, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x28, 0x42, 0x00, 0x4F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x60, 0x00, 0x08, 0x50, 0x00, 0x08, 0x4C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F69, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x1B, 0xFE, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xFA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xBA, 0x80, 0x0A, 0x21, 0x80, 0x0A, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F6A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x00, 0x80, 0x09, 0x00, 0x80, 0x19, 0x00, 0x80, 0x11, 0x3C, 0x80, 0x31, 0x24, 0x80, 0x51, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x3C, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F6C, { 0x00, 0x00, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x06, 0xFF, 0x00, 0x04, 0x12, 0x00, 0x0C, 0x16, 0x00, 0x08, 0x14, 0x00, 0x19, 0xFF, 0x80, 0x38, 0x18, 0x00, 0x68, 0x30, 0x00, 0x08, 0xE3, 0x00, 0x09, 0xAE, 0x00, 0x08, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F6E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x38, 0x00, 0x06, 0x28, 0x00, 0x04, 0x6C, 0x00, 0x0C, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x1B, 0x01, 0x80, 0x38, 0xFE, 0x00, 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F6F, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F70, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x29, 0x01, 0x00, 0x29, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F71, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F73, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F74, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x48, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xBF, 0x00, 0x0B, 0xC4, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F75, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0xC6, 0x00, 0x0C, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x44, 0x00, 0x10, 0x44, 0x00, 0x30, 0x44, 0x00, 0x50, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x11, 0x84, 0x00, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F76, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F77, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x06, 0x82, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x38, 0xFE, 0x00, 0x68, 0x90, 0x80, 0x08, 0x99, 0x80, 0x08, 0x8B, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F78, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x1E, 0x00, 0x0D, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F79, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x7E, 0x00, 0x06, 0xC4, 0x00, 0x04, 0x88, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x18, 0x80, 0x00, 0x38, 0xBE, 0x00, 0x68, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA6, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x80, 0x09, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F7A, { 0x00, 0x00, 0x00, 0x04, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x18, 0x82, 0x00, 0x1B, 0x01, 0x80, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F7B, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x0C, 0x49, 0x00, 0x0A, 0x4B, 0x00, 0x1B, 0x4A, 0x00, 0x11, 0x48, 0x00, 0x30, 0x48, 0x00, 0x50, 0x48, 0x00, 0x10, 0x4E, 0x00, 0x11, 0xCB, 0x00, 0x17, 0x49, 0x80, 0x10, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x88, 0x80, 0x11, 0x89, 0x80, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F7C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x31, 0x83, 0x00, 0x53, 0x45, 0x80, 0x10, 0xC4, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F7D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x18, 0x60, 0x80, 0x17, 0x49, 0x80, 0x30, 0xC9, 0x00, 0x50, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x9C, 0x00, 0x13, 0x14, 0x00, 0x16, 0x14, 0x00, 0x10, 0x36, 0x00, 0x10, 0x22, 0x00, 0x10, 0x63, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F7E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x82, 0x00, 0x19, 0x01, 0x00, 0x1A, 0x00, 0x80, 0x2C, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F7F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x60, 0x00, 0x08, 0x50, 0x00, 0x08, 0x8C, 0x00, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F81, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x09, 0xFF, 0x00, 0x1A, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x28, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x80, 0x0A, 0x0F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F82, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x12, 0x0F, 0x00, 0x32, 0x78, 0x00, 0x52, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x16, 0x10, 0x00, 0x14, 0x10, 0x80, 0x14, 0x19, 0x80, 0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F83, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x19, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x80, 0x0A, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F84, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x42, 0x00, 0x18, 0x81, 0x00, 0x29, 0x3F, 0x00, 0x2B, 0xD0, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F85, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x10, 0x64, 0x00, 0x30, 0xCC, 0x00, 0x51, 0x89, 0x00, 0x10, 0xDB, 0x00, 0x10, 0x32, 0x00, 0x10, 0x66, 0x00, 0x10, 0xCC, 0x00, 0x13, 0x98, 0x00, 0x10, 0x36, 0x00, 0x10, 0xE3, 0x00, 0x17, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F86, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F88, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x42, 0x00, 0x18, 0xA4, 0x00, 0x1B, 0x18, 0x00, 0x28, 0x10, 0x00, 0x28, 0x28, 0x00, 0x08, 0xC8, 0x00, 0x0B, 0x1F, 0x80, 0x08, 0x21, 0x00, 0x08, 0xD2, 0x00, 0x0B, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x60, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F89, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x18, 0x42, 0x00, 0x11, 0x81, 0x80, 0x30, 0x7E, 0x00, 0x50, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F8A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x11, 0x00, 0x09, 0x11, 0x00, 0x08, 0x92, 0x00, 0x18, 0x92, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x80, 0x09, 0x04, 0x80, 0x0A, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F8B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x09, 0xFA, 0x80, 0x08, 0x42, 0x80, 0x18, 0x82, 0x80, 0x18, 0xFA, 0x80, 0x29, 0x0A, 0x80, 0x29, 0x8A, 0x80, 0x0A, 0x52, 0x80, 0x0C, 0x22, 0x80, 0x08, 0x22, 0x80, 0x08, 0x42, 0x80, 0x08, 0x82, 0x80, 0x09, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F8C, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x7C, 0x00, 0x0F, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F8D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F8E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x92, 0x00, 0x04, 0xD2, 0x00, 0x0C, 0x56, 0x00, 0x08, 0x54, 0x00, 0x18, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x68, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F8F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x34, 0x00, 0x08, 0x54, 0x00, 0x08, 0x52, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4F90, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x30, 0x00, 0x06, 0x20, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x18, 0xAA, 0x00, 0x38, 0xAA, 0x00, 0x68, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F91, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x40, 0x00, 0x18, 0x80, 0x00, 0x28, 0xFF, 0x00, 0x29, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F92, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x00, 0x80, 0x09, 0x20, 0x80, 0x18, 0x20, 0x00, 0x39, 0xFF, 0x80, 0x68, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0x46, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F93, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x11, 0x00, 0x08, 0x11, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x30, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F94, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x44, 0x00, 0x0C, 0xC4, 0x00, 0x08, 0x9E, 0x00, 0x19, 0xF3, 0x00, 0x10, 0x00, 0x00, 0x30, 0x10, 0x00, 0x50, 0x90, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x90, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F96, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x37, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F97, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x31, 0x01, 0x00, 0x51, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x45, 0x00, 0x11, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F98, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x06, 0x80, 0x18, 0x38, 0x00, 0x29, 0xE0, 0x00, 0x28, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F99, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x0A, 0x00, 0x06, 0x0B, 0x00, 0x04, 0x09, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x3B, 0xE8, 0x00, 0x68, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xE6, 0x00, 0x0B, 0x82, 0x80, 0x08, 0x03, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F9A, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0C, 0xFF, 0x00, 0x09, 0x81, 0x00, 0x19, 0x01, 0x00, 0x12, 0xF9, 0x00, 0x30, 0x89, 0x00, 0x50, 0x89, 0x00, 0x10, 0xF9, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0xF9, 0x00, 0x10, 0x03, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F9B, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1B, 0xFF, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x28, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x84, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F9D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x18, 0x50, 0x00, 0x28, 0x90, 0x80, 0x29, 0x91, 0x00, 0x0A, 0x92, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9A, 0x00, 0x08, 0xE1, 0x00, 0x0B, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F9E, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x87, 0x80, 0x18, 0x84, 0x80, 0x17, 0xF4, 0x80, 0x31, 0x14, 0x80, 0x31, 0x14, 0x80, 0x51, 0x34, 0x80, 0x13, 0x24, 0x80, 0x12, 0x24, 0x80, 0x12, 0x64, 0x80, 0x13, 0xC4, 0x80, 0x10, 0xE4, 0x80, 0x11, 0xB4, 0x80, 0x13, 0x17, 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4F9F, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x18, 0x60, 0x00, 0x10, 0x5F, 0x00, 0x30, 0xC1, 0x00, 0x50, 0x82, 0x00, 0x11, 0x84, 0x00, 0x12, 0xBF, 0x80, 0x14, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x12, 0x22, 0x00, 0x33, 0x26, 0x00, 0x31, 0x24, 0x00, 0x51, 0x24, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x10, 0xD8, 0x00, 0x10, 0x8C, 0x00, 0x11, 0x86, 0x00, 0x13, 0x03, 0x00, 0x16, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FA1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x18, 0x48, 0x00, 0x10, 0x48, 0x00, 0x33, 0xFF, 0x00, 0x52, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA3, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x05, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x28, 0x00, 0x00, 0x48, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA5, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x84, 0x00, 0x04, 0x7E, 0x00, 0x0B, 0xC0, 0x00, 0x08, 0x50, 0x00, 0x18, 0x22, 0x00, 0x28, 0x52, 0x00, 0x49, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x91, 0x00, 0x09, 0x11, 0x00, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA6, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x22, 0x00, 0x04, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x1B, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x48, 0x00, 0x08, 0x86, 0x00, 0x0B, 0x03, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA7, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x11, 0x00, 0x05, 0xF9, 0x00, 0x09, 0x15, 0x00, 0x09, 0x55, 0x00, 0x19, 0x55, 0x00, 0x29, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x51, 0x00, 0x08, 0x41, 0x00, 0x08, 0xA1, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x05, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA8, { 0x00, 0x00, 0x00, 0x04, 0x1C, 0x00, 0x05, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x90, 0x00, 0x48, 0x88, 0x00, 0x09, 0x07, 0x00, 0x0A, 0x8A, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FA9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x10, 0x00, 0x32, 0x08, 0x00, 0x54, 0x27, 0x00, 0x19, 0xF2, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x90, 0x00, 0x11, 0x08, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FAA, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x14, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x18, 0x20, 0x00, 0x28, 0x58, 0x00, 0x49, 0x87, 0x00, 0x0E, 0x8A, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FAB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x19, 0x00, 0x00, 0x11, 0x00, 0x00, 0x30, 0xFF, 0x00, 0x50, 0x00, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x86, 0x00, 0x11, 0xE4, 0x00, 0x10, 0x3C, 0x00, 0x10, 0xE7, 0x00, 0x13, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FAC, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x41, 0x00, 0x1C, 0x42, 0x00, 0x28, 0xA0, 0x00, 0x48, 0xA4, 0x00, 0x09, 0x98, 0x00, 0x0A, 0x90, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA7, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FAD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x31, 0x08, 0x00, 0x51, 0x0C, 0x00, 0x13, 0x04, 0x00, 0x12, 0xE6, 0x00, 0x16, 0x3B, 0x00, 0x1C, 0x09, 0x80, 0x11, 0xC0, 0x00, 0x10, 0x70, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FAE, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FAF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x80, 0x00, 0x28, 0x80, 0x00, 0x29, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FB2, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0x7F, 0x00, 0x11, 0x00, 0x00, 0x31, 0x00, 0x00, 0x51, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x11, 0x24, 0x80, 0x11, 0x25, 0x80, 0x11, 0x25, 0x00, 0x13, 0x26, 0x00, 0x12, 0x22, 0x00, 0x16, 0x3B, 0x00, 0x10, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FB5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x02, 0x00, 0x18, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x09, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FB6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x19, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x28, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FB7, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x81, 0x00, 0x04, 0x81, 0x00, 0x0C, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x18, 0x80, 0x00, 0x38, 0xFF, 0x80, 0x68, 0x80, 0x80, 0x08, 0xBC, 0x80, 0x08, 0xA4, 0x80, 0x09, 0xA4, 0x80, 0x09, 0x24, 0x80, 0x09, 0x3D, 0x80, 0x0A, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FB9, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, 0x0B, 0xC7, 0x00, 0x08, 0xBC, 0x00, 0x18, 0x84, 0x00, 0x11, 0x84, 0x00, 0x31, 0x04, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x44, 0x00, 0x14, 0x44, 0x00, 0x12, 0xC4, 0x00, 0x12, 0x84, 0x00, 0x13, 0x84, 0x00, 0x11, 0x3F, 0x80, 0x13, 0x80, 0x00, 0x12, 0xE0, 0x00, 0x16, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FBB, { 0x00, 0x00, 0x00, 0x02, 0x1C, 0x00, 0x02, 0x04, 0x00, 0x06, 0x66, 0x00, 0x04, 0xC3, 0x00, 0x0D, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x38, 0x81, 0x00, 0x68, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0x44, 0x80, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FBC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x51, 0x01, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FBD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x21, 0x00, 0x10, 0x61, 0x00, 0x10, 0x43, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FBE, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x11, 0x00, 0x06, 0xFF, 0x00, 0x04, 0x12, 0x00, 0x0C, 0x14, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x38, 0x20, 0x00, 0x68, 0xFE, 0x00, 0x0B, 0x04, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FBF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x1A, 0x21, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x21, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x70, 0x00, 0x08, 0x8F, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC0, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x1E, 0x00, 0x0D, 0xF0, 0x00, 0x08, 0x24, 0x00, 0x18, 0xB6, 0x00, 0x11, 0x93, 0x00, 0x31, 0x21, 0x00, 0x50, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x8C, 0x00, 0x11, 0xE8, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x66, 0x00, 0x11, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x3E, 0x00, 0x06, 0xA2, 0x00, 0x04, 0xA2, 0x00, 0x0C, 0xA2, 0x00, 0x08, 0xBE, 0x00, 0x18, 0x80, 0x00, 0x38, 0x80, 0x00, 0x68, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC2, { 0x00, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x05, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x18, 0x44, 0x00, 0x19, 0x88, 0x00, 0x28, 0x92, 0x00, 0x28, 0x61, 0x00, 0x08, 0x2F, 0x00, 0x0B, 0xF0, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x19, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x9F, 0x80, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x50, 0x00, 0x09, 0x50, 0x00, 0x0A, 0x3F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC4, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x35, 0x00, 0x09, 0xC4, 0x80, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x1F, 0xFF, 0x80, 0x28, 0x44, 0x00, 0x28, 0x44, 0x80, 0x08, 0x4C, 0x80, 0x08, 0x75, 0x00, 0x0B, 0xC5, 0x00, 0x08, 0x46, 0x00, 0x08, 0x42, 0x80, 0x08, 0x46, 0x80, 0x08, 0x49, 0x80, 0x08, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FC5, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x13, 0x00, 0x0C, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x11, 0x11, 0x00, 0x31, 0x93, 0x00, 0x50, 0x96, 0x00, 0x10, 0x10, 0x00, 0x10, 0x18, 0x00, 0x10, 0x5C, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x11, 0x11, 0x80, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x33, 0x7D, 0x80, 0x50, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC8, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x10, 0x00, 0x12, 0x10, 0x00, 0x30, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FC9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x19, 0xFE, 0x00, 0x18, 0x22, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FCA, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x84, 0x00, 0x09, 0x3E, 0x00, 0x0F, 0xC9, 0x00, 0x18, 0x88, 0x00, 0x18, 0x88, 0x80, 0x28, 0x8F, 0x80, 0x29, 0x40, 0x00, 0x0E, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x09, 0x84, 0x00, 0x0A, 0x48, 0x00, 0x0C, 0x30, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FCB, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x06, 0x82, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x39, 0x11, 0x00, 0x69, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x80, 0x09, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FCC, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x11, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x51, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FCD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x38, 0x82, 0x00, 0x68, 0xFE, 0x80, 0x08, 0x89, 0x80, 0x08, 0x8B, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FCE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x09, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x20, 0x42, 0x00, 0x00, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x0A, 0x42, 0x00, 0x09, 0x42, 0x00, 0x10, 0x42, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FCF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x92, 0x00, 0x0D, 0x93, 0x00, 0x09, 0x11, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x51, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FD0, { 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x08, 0xE9, 0x00, 0x1B, 0x89, 0x00, 0x10, 0x89, 0x00, 0x30, 0x89, 0x00, 0x37, 0xE9, 0x00, 0x50, 0x89, 0x00, 0x10, 0x89, 0x00, 0x11, 0xC9, 0x00, 0x11, 0xA9, 0x00, 0x12, 0xA9, 0x00, 0x12, 0x89, 0x00, 0x14, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FD1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x24, 0x00, 0x18, 0x18, 0x00, 0x1B, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FD2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x12, 0x01, 0x00, 0x30, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x50, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x88, 0x80, 0x11, 0x89, 0x80, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FD3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x19, 0x24, 0x00, 0x19, 0x24, 0x00, 0x28, 0x92, 0x00, 0x28, 0x49, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FD4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x80, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FD7, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x82, 0x00, 0x09, 0x01, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0x28, 0x00, 0x28, 0x44, 0x00, 0x28, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FD8, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x1E, 0x00, 0x0F, 0xF2, 0x00, 0x08, 0x93, 0x00, 0x19, 0x21, 0x00, 0x10, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x50, 0x06, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FDA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FDB, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0xFC, 0x00, 0x0C, 0x84, 0x00, 0x09, 0x8C, 0x00, 0x1B, 0x08, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x51, 0x11, 0x00, 0x11, 0x31, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x68, 0x00, 0x10, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x88, 0x80, 0x11, 0x89, 0x80, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FDC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FDD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x94, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FDE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x1B, 0xE7, 0x00, 0x60, 0x02, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x04, 0x00, 0x13, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FDF, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x3F, 0x00, 0x1B, 0xC0, 0x80, 0x18, 0x80, 0x00, 0x28, 0x80, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FE0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x18, 0x92, 0x00, 0x28, 0x92, 0x00, 0x29, 0x55, 0x00, 0x0A, 0x38, 0x80, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FE1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FE2, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0xFF, 0x80, 0x04, 0x82, 0x00, 0x0D, 0x46, 0x00, 0x08, 0x6C, 0x00, 0x18, 0x38, 0x00, 0x38, 0xEE, 0x00, 0x6B, 0x83, 0x80, 0x08, 0x30, 0x00, 0x08, 0xE6, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF1, 0x80, 0x08, 0x07, 0x00, 0x08, 0x3C, 0x00, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FE3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FE4, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0xC6, 0x00, 0x0C, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x11, 0x00, 0x10, 0x11, 0x00, 0x33, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x30, 0x80, 0x10, 0x50, 0x80, 0x10, 0xD1, 0x80, 0x11, 0x91, 0x00, 0x17, 0x17, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FE5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FE6, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0B, 0xFC, 0x00, 0x18, 0x80, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x88, 0x00, 0x09, 0x0A, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FE8, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x50, 0x00, 0x0A, 0x52, 0x00, 0x09, 0x54, 0x00, 0x18, 0x50, 0x00, 0x2B, 0xFF, 0x00, 0x4A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FE9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x10, 0x92, 0x00, 0x37, 0xFF, 0x00, 0x54, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x15, 0x6A, 0x00, 0x16, 0x46, 0x00, 0x14, 0x02, 0x00, 0x14, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FEA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x1B, 0xDF, 0x00, 0x2A, 0x52, 0x00, 0x4A, 0x52, 0x00, 0x0B, 0x5A, 0x00, 0x0A, 0xD6, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0xD6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FED, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x19, 0x04, 0x00, 0x2A, 0xFB, 0x00, 0x4C, 0x02, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA6, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FEE, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x09, 0x22, 0x00, 0x19, 0x54, 0x00, 0x19, 0x88, 0x00, 0x29, 0x16, 0x00, 0x29, 0x21, 0x80, 0x09, 0xC8, 0x00, 0x09, 0x12, 0x00, 0x09, 0x24, 0x80, 0x09, 0xC9, 0x00, 0x09, 0x12, 0x00, 0x09, 0x64, 0x00, 0x09, 0x18, 0x00, 0x08, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FEF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x19, 0x12, 0x00, 0x19, 0x22, 0x00, 0x29, 0x62, 0x00, 0x29, 0xBF, 0x80, 0x09, 0x22, 0x00, 0x09, 0x32, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FF0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0xE0, 0x00, 0x0B, 0x8F, 0x80, 0x18, 0x88, 0x80, 0x10, 0x88, 0x80, 0x37, 0xF8, 0x80, 0x30, 0x88, 0x80, 0x50, 0x88, 0x80, 0x11, 0xC8, 0x80, 0x11, 0xA8, 0x80, 0x13, 0xA8, 0x80, 0x12, 0x88, 0x80, 0x16, 0x88, 0x80, 0x14, 0x8F, 0x80, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FF1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x29, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x84, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FF2, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x0F, 0xF4, 0x00, 0x18, 0x0F, 0x80, 0x11, 0x44, 0x80, 0x33, 0x64, 0x80, 0x52, 0x24, 0x80, 0x11, 0x44, 0x80, 0x11, 0x44, 0x80, 0x11, 0xC4, 0x80, 0x10, 0x84, 0x80, 0x10, 0x8C, 0x80, 0x11, 0xC9, 0x80, 0x11, 0x59, 0x00, 0x13, 0x73, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FF3, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x1F, 0xCF, 0x80, 0x18, 0x48, 0x00, 0x28, 0x48, 0x00, 0x2F, 0xCF, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xCF, 0x80, 0x08, 0x48, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FF5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x08, 0xC8, 0x80, 0x09, 0x49, 0x00, 0x0E, 0x46, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7A, 0x00, 0x0B, 0x81, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FF6, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x3F, 0x00, 0x09, 0xD1, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x1B, 0x00, 0x3F, 0xEA, 0x00, 0x51, 0x0A, 0x00, 0x11, 0x0E, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x19, 0x2E, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x1B, 0x00, 0x13, 0x11, 0x00, 0x10, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FF8, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x18, 0x28, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FFA, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x18, 0x46, 0x00, 0x19, 0x91, 0x80, 0x2E, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FFC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x18, 0x22, 0x00, 0x10, 0x4F, 0x00, 0x30, 0xF1, 0x00, 0x50, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FFD, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0xC8, 0x00, 0x0F, 0x88, 0x00, 0x0A, 0x0F, 0x80, 0x1A, 0x18, 0x80, 0x13, 0xF5, 0x00, 0x32, 0x44, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x4E, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4B, 0x00, 0x14, 0x59, 0x00, 0x10, 0x51, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x4FFE, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x51, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x4FFF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x1F, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x00, 0x80, 0x11, 0x11, 0x00, 0x31, 0x1C, 0x00, 0x51, 0x70, 0x00, 0x11, 0x11, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x00, 0x00, 0x11, 0x24, 0x00, 0x13, 0x24, 0x00, 0x12, 0x24, 0x80, 0x16, 0x64, 0x80, 0x10, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5000, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x80, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x80, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x80, 0x00, 0x38, 0x80, 0x00, 0x6B, 0xFF, 0x80, 0x08, 0x91, 0x00, 0x08, 0x9B, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5001, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0C, 0x87, 0x80, 0x09, 0xF4, 0x80, 0x1A, 0x44, 0x80, 0x10, 0x44, 0x80, 0x30, 0x44, 0x80, 0x53, 0xFC, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0xE4, 0x80, 0x10, 0xA4, 0x80, 0x11, 0xB7, 0x80, 0x13, 0x18, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5002, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFF, 0x80, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x28, 0x84, 0x00, 0x08, 0xE4, 0x00, 0x0F, 0xBF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5004, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x05, 0x8C, 0x00, 0x0C, 0x70, 0x00, 0x09, 0x8E, 0x00, 0x18, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x30, 0x40, 0x00, 0x50, 0xFE, 0x00, 0x11, 0x82, 0x00, 0x16, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5005, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x18, 0x82, 0x00, 0x10, 0x82, 0x00, 0x31, 0x45, 0x00, 0x52, 0x28, 0x80, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5006, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0xBB, 0x00, 0x09, 0xBB, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5007, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x10, 0x80, 0x00, 0x30, 0xEF, 0x00, 0x50, 0xA9, 0x00, 0x11, 0xA9, 0x00, 0x11, 0x29, 0x00, 0x13, 0xE9, 0x00, 0x16, 0x4B, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x88, 0x80, 0x11, 0x89, 0x80, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5009, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x05, 0xF6, 0x00, 0x38, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x04, 0x00, 0x17, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x500A, { 0x00, 0x00, 0x00, 0x02, 0x2E, 0x00, 0x02, 0x22, 0x00, 0x06, 0x63, 0x00, 0x04, 0xD1, 0x80, 0x0C, 0x10, 0x00, 0x08, 0x32, 0x00, 0x18, 0x22, 0x00, 0x38, 0x3F, 0x00, 0x68, 0xE1, 0x80, 0x08, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x24, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x80, 0x09, 0xB2, 0x80, 0x09, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x500B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x500C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x19, 0x00, 0x80, 0x10, 0x7E, 0x00, 0x30, 0x42, 0x00, 0x50, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x500D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x18, 0x82, 0x00, 0x28, 0x44, 0x00, 0x2F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x500E, { 0x00, 0x00, 0x00, 0x02, 0x28, 0x00, 0x02, 0x28, 0x00, 0x06, 0x28, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x18, 0xAA, 0x00, 0x38, 0xFE, 0x00, 0x68, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x500F, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x0C, 0xC2, 0x00, 0x09, 0x86, 0x00, 0x18, 0x6C, 0x00, 0x14, 0x38, 0x00, 0x34, 0xEE, 0x00, 0x57, 0x83, 0x80, 0x14, 0x14, 0x00, 0x14, 0x12, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5010, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x0C, 0xC2, 0x00, 0x09, 0x86, 0x00, 0x18, 0x6C, 0x00, 0x14, 0x38, 0x00, 0x34, 0xEE, 0x00, 0x57, 0x83, 0x80, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x91, 0x00, 0x15, 0xBB, 0x00, 0x15, 0x2A, 0x00, 0x14, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5011, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x09, 0xE7, 0x80, 0x19, 0x24, 0x80, 0x19, 0xE7, 0x80, 0x29, 0x00, 0x80, 0x29, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5012, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x07, 0xF4, 0x80, 0x08, 0x84, 0x80, 0x09, 0x14, 0x80, 0x1A, 0x74, 0x80, 0x1F, 0x8C, 0x80, 0x28, 0x44, 0x80, 0x28, 0x44, 0x80, 0x08, 0x44, 0x80, 0x0B, 0xF4, 0x80, 0x08, 0x44, 0x80, 0x08, 0x44, 0x80, 0x08, 0x7C, 0x80, 0x0B, 0xC4, 0x80, 0x08, 0x00, 0x80, 0x08, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5013, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x05, 0x22, 0x00, 0x0D, 0x26, 0x00, 0x0B, 0x74, 0x00, 0x1A, 0x58, 0x00, 0x10, 0xCC, 0x00, 0x31, 0x86, 0x00, 0x53, 0x23, 0x80, 0x10, 0x20, 0x00, 0x11, 0x23, 0x00, 0x13, 0x76, 0x00, 0x12, 0x50, 0x00, 0x10, 0xD8, 0x00, 0x10, 0x8C, 0x00, 0x11, 0x86, 0x00, 0x13, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5014, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x31, 0x08, 0x00, 0x51, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x13, 0x08, 0x00, 0x12, 0x49, 0x00, 0x16, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5016, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x28, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5017, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xEF, 0x00, 0x0D, 0x29, 0x00, 0x09, 0x29, 0x00, 0x19, 0x29, 0x00, 0x11, 0xAD, 0x00, 0x31, 0x6B, 0x00, 0x51, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0xAD, 0x00, 0x11, 0x6B, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x69, 0x00, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5018, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x92, 0x00, 0x0D, 0x93, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x10, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5019, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x1A, 0xFF, 0x80, 0x1A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x7F, 0x00, 0x0A, 0x88, 0x00, 0x0B, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x41, 0x00, 0x09, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x501A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x18, 0x44, 0x00, 0x18, 0x82, 0x00, 0x2B, 0x01, 0x80, 0x28, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x501B, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x30, 0x42, 0x00, 0x50, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC3, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x501C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x09, 0x10, 0x80, 0x19, 0x7E, 0x80, 0x19, 0x10, 0x80, 0x29, 0x10, 0x80, 0x29, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x7E, 0x80, 0x09, 0x42, 0x80, 0x09, 0x7E, 0x80, 0x09, 0x42, 0x80, 0x09, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x501D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x9C, 0x00, 0x3F, 0x94, 0x00, 0x04, 0x14, 0x00, 0x7F, 0xF6, 0x00, 0x04, 0x22, 0x00, 0x04, 0x63, 0x00, 0x04, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x501E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x501F, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x84, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x2F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5021, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5022, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x11, 0xD0, 0x00, 0x13, 0x70, 0x00, 0x16, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5023, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xEF, 0x80, 0x19, 0x09, 0x00, 0x19, 0x09, 0x00, 0x29, 0xF9, 0x00, 0x29, 0x25, 0x00, 0x09, 0x25, 0x00, 0x09, 0x25, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x25, 0x00, 0x0A, 0x25, 0x00, 0x0A, 0x29, 0x00, 0x0C, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5024, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x1A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5025, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0x44, 0x80, 0x1A, 0x44, 0x80, 0x10, 0xC4, 0x00, 0x31, 0x87, 0x80, 0x53, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5026, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x28, 0x00, 0x18, 0x44, 0x00, 0x2F, 0xFF, 0x80, 0x29, 0x02, 0x00, 0x0A, 0x01, 0x00, 0x0C, 0xFC, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9D, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5027, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5028, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5029, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x502A, { 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x05, 0x87, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xC7, 0x00, 0x19, 0x01, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x45, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x502B, { 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x04, 0x48, 0x00, 0x08, 0x84, 0x00, 0x09, 0x02, 0x00, 0x1A, 0x01, 0x00, 0x1C, 0xFC, 0x80, 0x28, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x502C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x502D, { 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x05, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x38, 0x00, 0x18, 0x54, 0x00, 0x28, 0x92, 0x00, 0x2B, 0x11, 0x80, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x09, 0xC8, 0x00, 0x0A, 0x38, 0x00, 0x08, 0xC6, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x502E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0x56, 0x00, 0x10, 0xD2, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5030, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x30, 0xC4, 0x00, 0x53, 0x87, 0x80, 0x10, 0x20, 0x00, 0x10, 0x3E, 0x00, 0x10, 0x62, 0x00, 0x10, 0xC6, 0x00, 0x11, 0xAC, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6E, 0x00, 0x13, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5032, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x17, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5033, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x50, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5035, { 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x05, 0xF4, 0x80, 0x0C, 0x04, 0x80, 0x08, 0x04, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x30, 0x44, 0x00, 0x51, 0x44, 0x00, 0x11, 0x74, 0x00, 0x11, 0x44, 0x00, 0x11, 0x46, 0x00, 0x11, 0x42, 0x00, 0x11, 0x42, 0x00, 0x11, 0xFA, 0x80, 0x17, 0x03, 0x80, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5036, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x31, 0x02, 0x00, 0x51, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x11, 0x86, 0x00, 0x13, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5039, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x1B, 0x83, 0x80, 0x10, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x503A, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x04, 0x00, 0x49, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x58, 0x00, 0x08, 0x84, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x503B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x19, 0xE5, 0x00, 0x19, 0x24, 0x80, 0x29, 0x24, 0x80, 0x29, 0xE4, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0xFC, 0x80, 0x0F, 0x24, 0x80, 0x08, 0x24, 0x80, 0x08, 0x27, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x503C, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x19, 0xFE, 0x00, 0x29, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x503E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x14, 0x22, 0x00, 0x14, 0xFF, 0x00, 0x34, 0x82, 0x00, 0x57, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x15, 0x92, 0x00, 0x16, 0x92, 0x00, 0x14, 0x28, 0x00, 0x10, 0x26, 0x00, 0x10, 0x43, 0x00, 0x11, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5040, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5041, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x3C, 0x00, 0x0B, 0xE4, 0x00, 0x18, 0xB6, 0x00, 0x11, 0x93, 0x00, 0x31, 0x01, 0x00, 0x30, 0x20, 0x00, 0x51, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5042, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0xC6, 0x00, 0x0C, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x11, 0xE1, 0x00, 0x31, 0x29, 0x00, 0x51, 0x29, 0x00, 0x11, 0xA9, 0x00, 0x11, 0x69, 0x00, 0x11, 0x29, 0x00, 0x11, 0xA9, 0x00, 0x11, 0x61, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5043, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0A, 0x7E, 0x00, 0x0A, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x1A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x22, 0x00, 0x0A, 0x64, 0x00, 0x0A, 0x98, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0xC2, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5045, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x04, 0x1C, 0x00, 0x0D, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5046, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x28, 0x00, 0x31, 0xFF, 0x80, 0x50, 0x44, 0x00, 0x10, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x12, 0x82, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5047, { 0x00, 0x00, 0x00, 0x05, 0xEF, 0x80, 0x05, 0x20, 0x80, 0x09, 0x20, 0x80, 0x09, 0x20, 0x80, 0x19, 0xEF, 0x80, 0x19, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, 0x1F, 0x80, 0x09, 0xE8, 0x80, 0x09, 0x05, 0x00, 0x09, 0x05, 0x00, 0x09, 0xE2, 0x00, 0x09, 0x02, 0x00, 0x09, 0x05, 0x00, 0x09, 0x09, 0x00, 0x09, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5048, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x18, 0x20, 0x00, 0x28, 0x40, 0x00, 0x28, 0xFF, 0x80, 0x09, 0x88, 0x80, 0x0A, 0x94, 0x80, 0x08, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5049, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x504A, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x1E, 0x00, 0x0D, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x14, 0x80, 0x12, 0x1E, 0x80, 0x12, 0xF2, 0x80, 0x12, 0x00, 0x80, 0x12, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x504C, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0x20, 0x00, 0x30, 0x20, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x504E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x91, 0x00, 0x10, 0x9B, 0x00, 0x10, 0x8A, 0x00, 0x10, 0x8C, 0x00, 0x10, 0xE6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x504F, { 0x00, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x05, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x19, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x94, 0x80, 0x09, 0x94, 0x80, 0x09, 0xFF, 0x80, 0x0A, 0x94, 0x80, 0x0A, 0x94, 0x80, 0x0A, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5050, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0xC6, 0x00, 0x18, 0x38, 0x00, 0x10, 0xC6, 0x00, 0x33, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x12, 0x3C, 0x00, 0x12, 0xE0, 0x00, 0x12, 0x0E, 0x00, 0x12, 0x38, 0x00, 0x16, 0xE0, 0x00, 0x14, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5051, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x1A, 0x1A, 0x00, 0x12, 0xF2, 0x00, 0x32, 0x22, 0x00, 0x32, 0xFA, 0x00, 0x52, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x3A, 0x80, 0x12, 0xEA, 0x80, 0x14, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5052, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x06, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x38, 0x00, 0x00, 0x6B, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x0B, 0x24, 0x80, 0x08, 0x6C, 0x80, 0x09, 0xD9, 0x80, 0x08, 0x31, 0x00, 0x08, 0xE7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5053, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x31, 0x7F, 0x00, 0x51, 0x10, 0x00, 0x11, 0x22, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x08, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x16, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5055, { 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x05, 0x08, 0x00, 0x09, 0x09, 0x80, 0x09, 0xEE, 0x00, 0x19, 0x08, 0x00, 0x19, 0x08, 0x00, 0x29, 0x78, 0x80, 0x2F, 0x8F, 0x80, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5056, { 0x00, 0x00, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x18, 0x26, 0x00, 0x10, 0x24, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x18, 0x00, 0x10, 0x24, 0x00, 0x10, 0xFE, 0x00, 0x11, 0x82, 0x00, 0x16, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5057, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x56, 0x00, 0x0C, 0xD3, 0x00, 0x0B, 0x91, 0x80, 0x18, 0x34, 0x00, 0x10, 0x0C, 0x00, 0x30, 0xFF, 0x00, 0x57, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5059, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x30, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x52, 0x10, 0x80, 0x12, 0x10, 0x80, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x505A, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8F, 0x80, 0x1F, 0xF1, 0x00, 0x28, 0x91, 0x00, 0x28, 0x91, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xEA, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x2A, 0x00, 0x0B, 0xEA, 0x00, 0x0A, 0x31, 0x00, 0x08, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x505C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x505F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x20, 0x00, 0x06, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x38, 0xFE, 0x00, 0x68, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5060, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x0C, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x24, 0x80, 0x11, 0x24, 0x80, 0x31, 0x3C, 0x80, 0x50, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x46, 0x00, 0x10, 0xF4, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x77, 0x00, 0x11, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5062, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x09, 0xC8, 0x00, 0x0F, 0x09, 0x00, 0x19, 0x29, 0x00, 0x11, 0x2B, 0x00, 0x37, 0xEA, 0x00, 0x31, 0x2A, 0x00, 0x51, 0x08, 0x00, 0x13, 0x88, 0x00, 0x13, 0x5C, 0x00, 0x15, 0x54, 0x00, 0x15, 0x14, 0x00, 0x19, 0x16, 0x00, 0x11, 0x32, 0x00, 0x11, 0x23, 0x00, 0x11, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5063, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x18, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5065, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x19, 0xFF, 0x80, 0x19, 0x09, 0x00, 0x2A, 0x7F, 0x00, 0x2B, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x0B, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5066, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x80, 0x19, 0x3D, 0x00, 0x11, 0x20, 0x00, 0x33, 0xF0, 0x00, 0x36, 0x1F, 0x80, 0x54, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x12, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5067, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x19, 0x86, 0x00, 0x16, 0x79, 0x80, 0x30, 0x88, 0x00, 0x53, 0xD8, 0x00, 0x10, 0x30, 0x00, 0x10, 0xE0, 0x00, 0x13, 0x9E, 0x00, 0x10, 0x22, 0x00, 0x10, 0xF6, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x38, 0x00, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x506A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x506C, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0C, 0xFF, 0x00, 0x09, 0xA9, 0x00, 0x19, 0x29, 0x00, 0x12, 0xE9, 0x00, 0x30, 0x71, 0x00, 0x50, 0x9B, 0x00, 0x11, 0x22, 0x00, 0x10, 0x4E, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x59, 0x00, 0x11, 0x49, 0x80, 0x13, 0x62, 0x80, 0x12, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x506D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x18, 0x60, 0x00, 0x10, 0x40, 0x00, 0x33, 0xFF, 0x00, 0x32, 0x49, 0x00, 0x52, 0x49, 0x00, 0x12, 0x79, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x79, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5070, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x0B, 0xEF, 0x00, 0x08, 0x85, 0x00, 0x18, 0x85, 0x00, 0x13, 0xE5, 0x00, 0x30, 0x85, 0x00, 0x30, 0xED, 0x00, 0x53, 0x89, 0x00, 0x10, 0x9B, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5071, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x1E, 0x00, 0x0D, 0xF0, 0x00, 0x09, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x31, 0x7F, 0x00, 0x51, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x13, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5072, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x50, 0x00, 0x11, 0x59, 0x00, 0x11, 0x49, 0x80, 0x13, 0x42, 0x80, 0x12, 0x46, 0x00, 0x10, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5074, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x05, 0xF0, 0x80, 0x09, 0x14, 0x80, 0x09, 0x14, 0x80, 0x19, 0x14, 0x80, 0x19, 0xF4, 0x80, 0x29, 0x14, 0x80, 0x29, 0x14, 0x80, 0x09, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x09, 0x14, 0x80, 0x09, 0x14, 0x80, 0x09, 0xF4, 0x80, 0x08, 0x00, 0x80, 0x09, 0x20, 0x80, 0x0A, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5075, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5076, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x14, 0x80, 0x0A, 0x12, 0x80, 0x0A, 0x1D, 0x80, 0x0B, 0xE0, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5077, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xA0, 0x00, 0x11, 0x10, 0x00, 0x12, 0x08, 0x00, 0x35, 0xF7, 0x00, 0x58, 0x02, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x54, 0x00, 0x13, 0xD4, 0x00, 0x12, 0x54, 0x00, 0x13, 0xD4, 0x00, 0x12, 0x54, 0x00, 0x12, 0x44, 0x00, 0x12, 0x54, 0x00, 0x12, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5078, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xF8, 0x00, 0x09, 0x28, 0x00, 0x08, 0xC4, 0x00, 0x19, 0x82, 0x00, 0x1E, 0xFD, 0x80, 0x28, 0x00, 0x00, 0x2B, 0xE5, 0x00, 0x0A, 0x25, 0x00, 0x0B, 0xEA, 0x00, 0x0A, 0x34, 0x00, 0x0B, 0xEA, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x25, 0x00, 0x0A, 0x25, 0x00, 0x0A, 0x65, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x507B, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x05, 0x24, 0x00, 0x04, 0xA8, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x18, 0x70, 0x00, 0x28, 0xA8, 0x00, 0x49, 0x26, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x08, 0x90, 0x00, 0x08, 0x60, 0x00, 0x08, 0x98, 0x00, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x507D, { 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFE, 0x00, 0x18, 0x22, 0x00, 0x10, 0x24, 0x00, 0x30, 0x7F, 0x00, 0x50, 0xC1, 0x00, 0x10, 0x82, 0x00, 0x11, 0xFF, 0x80, 0x13, 0x00, 0x80, 0x16, 0x04, 0x80, 0x11, 0x52, 0x80, 0x11, 0x51, 0x80, 0x12, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x507E, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0xAA, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x48, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x58, 0x00, 0x08, 0x86, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x507F, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x05, 0x24, 0x00, 0x04, 0xA8, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x2C, 0x0A, 0x00, 0x49, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x48, 0x00, 0x08, 0x84, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5080, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x4D, 0x00, 0x08, 0x4B, 0x00, 0x08, 0x8C, 0x80, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5081, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x50, 0x00, 0x0D, 0xD7, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0xD7, 0x00, 0x31, 0x11, 0x00, 0x51, 0x11, 0x00, 0x11, 0xD7, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x4C, 0x00, 0x10, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5083, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x50, 0x22, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x29, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x80, 0x10, 0x54, 0x00, 0x11, 0xD7, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5084, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x19, 0x45, 0x00, 0x10, 0x82, 0x00, 0x31, 0xFF, 0x00, 0x56, 0x82, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5085, { 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x04, 0x12, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x13, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x12, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5086, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x04, 0x00, 0x09, 0x08, 0x00, 0x19, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x31, 0x41, 0x00, 0x51, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x13, 0x2A, 0x00, 0x12, 0x6B, 0x00, 0x16, 0xC9, 0x80, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5088, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x52, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x52, 0x00, 0x32, 0x52, 0x00, 0x52, 0x52, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x70, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x27, 0x00, 0x16, 0x22, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x508A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFE, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x52, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x11, 0x02, 0x00, 0x13, 0x03, 0x00, 0x16, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x508D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x41, 0x00, 0x18, 0x22, 0x00, 0x18, 0x22, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x41, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x508E, { 0x00, 0x00, 0x00, 0x04, 0x86, 0x00, 0x04, 0xFC, 0x00, 0x0C, 0x81, 0x80, 0x08, 0x7F, 0x00, 0x18, 0x00, 0x00, 0x11, 0x7E, 0x00, 0x31, 0x42, 0x00, 0x51, 0x7E, 0x00, 0x11, 0x42, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x42, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x508F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x19, 0x7F, 0x00, 0x11, 0x09, 0x00, 0x31, 0xFF, 0x80, 0x51, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x13, 0x41, 0x00, 0x12, 0x41, 0x00, 0x16, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5090, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x50, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x00, 0x80, 0x12, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5091, { 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x05, 0x04, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x54, 0x00, 0x1A, 0x54, 0x00, 0x1D, 0x94, 0x00, 0x29, 0x7F, 0x80, 0x2A, 0x04, 0x00, 0x0C, 0x24, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x70, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x22, 0x00, 0x0C, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5092, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xE2, 0x00, 0x19, 0x33, 0x00, 0x13, 0x11, 0x00, 0x32, 0x20, 0x00, 0x30, 0x64, 0x00, 0x50, 0xC8, 0x00, 0x10, 0x52, 0x00, 0x10, 0x3F, 0x00, 0x11, 0xE1, 0x80, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5093, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x0B, 0xFC, 0x00, 0x0A, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x33, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x73, 0x80, 0x13, 0xDE, 0x80, 0x12, 0x10, 0x80, 0x16, 0x73, 0x80, 0x15, 0xDE, 0x80, 0x1C, 0x10, 0x80, 0x10, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5094, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x49, 0x00, 0x30, 0x49, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x4C, 0x00, 0x10, 0xCA, 0x00, 0x11, 0xCB, 0x00, 0x13, 0x49, 0x80, 0x10, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5096, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x1B, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x30, 0xFE, 0x00, 0x50, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x11, 0x80, 0x00, 0x11, 0x7F, 0x00, 0x13, 0x41, 0x00, 0x16, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5098, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x46, 0x00, 0x32, 0x49, 0x80, 0x06, 0x54, 0x00, 0x09, 0x62, 0x00, 0x10, 0xC1, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5099, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x509A, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x1F, 0xEF, 0x80, 0x10, 0x09, 0x00, 0x32, 0x99, 0x00, 0x36, 0xD1, 0x00, 0x54, 0x4B, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x8E, 0x00, 0x13, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x13, 0x8A, 0x00, 0x12, 0x9B, 0x00, 0x16, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x509B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x45, 0x00, 0x10, 0xC6, 0x00, 0x31, 0x93, 0x00, 0x50, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x509C, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x3E, 0x00, 0x0C, 0x62, 0x00, 0x08, 0xD6, 0x00, 0x19, 0xAC, 0x00, 0x10, 0x18, 0x00, 0x30, 0x60, 0x00, 0x53, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x509E, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0x44, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x50, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x88, 0x00, 0x16, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x509F, { 0x00, 0x00, 0x00, 0x02, 0x5C, 0x00, 0x02, 0x44, 0x00, 0x06, 0xC6, 0x00, 0x05, 0xA3, 0x00, 0x0C, 0x64, 0x00, 0x08, 0x46, 0x00, 0x18, 0xFB, 0x00, 0x38, 0x00, 0x00, 0x6B, 0xEF, 0x00, 0x08, 0x21, 0x00, 0x09, 0x29, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x63, 0x00, 0x08, 0xA5, 0x00, 0x09, 0x29, 0x00, 0x08, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A0, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xC2, 0x00, 0x08, 0x02, 0x00, 0x1F, 0xE2, 0x00, 0x10, 0x1F, 0x80, 0x33, 0xC2, 0x00, 0x30, 0x12, 0x00, 0x50, 0x1A, 0x00, 0x13, 0xCA, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x02, 0x00, 0x13, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x13, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A1, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x1F, 0xDF, 0x80, 0x10, 0x00, 0x00, 0x32, 0x51, 0x00, 0x32, 0x51, 0x00, 0x52, 0x51, 0x00, 0x12, 0xDB, 0x00, 0x12, 0x8A, 0x00, 0x10, 0x8A, 0x00, 0x10, 0xEA, 0x00, 0x13, 0x8A, 0x00, 0x16, 0x02, 0x00, 0x10, 0x3F, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x10, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x50, 0xD1, 0x00, 0x13, 0x13, 0x00, 0x10, 0x2A, 0x00, 0x10, 0xC8, 0x00, 0x13, 0x1C, 0x00, 0x10, 0x2A, 0x00, 0x10, 0xCB, 0x00, 0x13, 0x09, 0x80, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A3, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFC, 0x00, 0x30, 0x80, 0x00, 0x5F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x12, 0x48, 0x00, 0x16, 0x4F, 0x00, 0x19, 0x52, 0x00, 0x10, 0xE0, 0x00, 0x11, 0x50, 0x00, 0x12, 0x4C, 0x00, 0x14, 0x44, 0x00, 0x10, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A5, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x05, 0x24, 0x00, 0x04, 0xA8, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x2D, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x54, 0x00, 0x08, 0x50, 0x00, 0x08, 0x51, 0x00, 0x08, 0x91, 0x00, 0x0B, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A7, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x1A, 0x00, 0x18, 0xE0, 0x00, 0x28, 0x84, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x86, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0C, 0x24, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x28, 0x00, 0x30, 0x32, 0x00, 0x5E, 0xFF, 0x00, 0x12, 0x44, 0x00, 0x12, 0xFE, 0x00, 0x13, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0xFC, 0x00, 0x13, 0x44, 0x00, 0x12, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50A9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x14, 0x00, 0x17, 0xBF, 0x00, 0x10, 0xA4, 0x00, 0x38, 0xE4, 0x00, 0x55, 0x3F, 0x00, 0x15, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x3F, 0x00, 0x15, 0x24, 0x00, 0x14, 0xA4, 0x00, 0x18, 0xA4, 0x00, 0x10, 0x3F, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50AA, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x7C, 0x00, 0x09, 0x02, 0x00, 0x1A, 0x44, 0x80, 0x13, 0xC7, 0x80, 0x30, 0x10, 0x00, 0x50, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x93, 0x80, 0x10, 0x20, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x33, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50AC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x18, 0x00, 0x00, 0x28, 0x88, 0x00, 0x29, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50AD, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x05, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x19, 0x09, 0x00, 0x19, 0xFF, 0x80, 0x29, 0x09, 0x00, 0x29, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50AF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x21, 0x00, 0x12, 0xBD, 0x00, 0x32, 0x45, 0x00, 0x32, 0xA9, 0x00, 0x52, 0x31, 0x00, 0x12, 0xE9, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x12, 0x99, 0x00, 0x12, 0x89, 0x80, 0x16, 0x82, 0x80, 0x14, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50B0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x11, 0x00, 0x0D, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x31, 0x29, 0x00, 0x51, 0x29, 0x00, 0x11, 0xAD, 0x00, 0x11, 0x6B, 0x00, 0x11, 0x29, 0x00, 0x11, 0xAD, 0x00, 0x11, 0x6B, 0x00, 0x11, 0x29, 0x00, 0x11, 0x69, 0x00, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50B2, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xE7, 0x80, 0x18, 0x85, 0x00, 0x1F, 0xFD, 0x00, 0x28, 0x95, 0x00, 0x28, 0x85, 0x00, 0x0B, 0xF5, 0x00, 0x08, 0x85, 0x00, 0x08, 0xFA, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x15, 0x00, 0x09, 0x25, 0x00, 0x0A, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50B3, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x3F, 0x80, 0x0F, 0xC4, 0x80, 0x08, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50B4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x00, 0x00, 0x09, 0x3E, 0x00, 0x19, 0x22, 0x00, 0x11, 0x22, 0x00, 0x31, 0x3E, 0x00, 0x51, 0x00, 0x00, 0x11, 0x77, 0x00, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x77, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50B5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50B7, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x0B, 0x24, 0x80, 0x08, 0x48, 0x80, 0x08, 0x91, 0x00, 0x0B, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50B9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x82, 0x00, 0x10, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x80, 0x11, 0x84, 0x80, 0x17, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50BA, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0xEF, 0x00, 0x09, 0x91, 0x00, 0x1B, 0x53, 0x00, 0x10, 0xAA, 0x00, 0x30, 0x44, 0x00, 0x30, 0x82, 0x00, 0x53, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50BB, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x72, 0x00, 0x32, 0x8A, 0x00, 0x53, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x12, 0x83, 0x00, 0x14, 0xFD, 0x00, 0x11, 0x84, 0x00, 0x12, 0x48, 0x00, 0x14, 0x30, 0x00, 0x10, 0x48, 0x00, 0x11, 0x87, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50BD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x18, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50BE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x3F, 0x80, 0x09, 0x04, 0x00, 0x09, 0x1F, 0x00, 0x19, 0x11, 0x00, 0x19, 0x71, 0x00, 0x29, 0x9F, 0x00, 0x29, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x1F, 0x00, 0x09, 0x11, 0x00, 0x09, 0x51, 0x00, 0x09, 0x5F, 0x00, 0x09, 0xD1, 0x00, 0x08, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50C0, { 0x00, 0x00, 0x00, 0x04, 0xAA, 0x00, 0x04, 0xAA, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0xAA, 0x00, 0x19, 0xAA, 0x00, 0x13, 0x3B, 0x80, 0x30, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50C2, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x19, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0xE4, 0x00, 0x10, 0x3E, 0x00, 0x13, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50C3, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x11, 0x44, 0x00, 0x31, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x56, 0x00, 0x80, 0x15, 0xFC, 0x80, 0x11, 0x24, 0x80, 0x11, 0xFC, 0x80, 0x11, 0x24, 0x80, 0x11, 0xFC, 0x80, 0x11, 0x24, 0x80, 0x11, 0x2D, 0x80, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50C4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x0C, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x24, 0x80, 0x11, 0x24, 0x80, 0x31, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50C5, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x44, 0x00, 0x0A, 0x7C, 0x00, 0x2A, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50C7, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xEF, 0x00, 0x0C, 0x63, 0x00, 0x08, 0xA5, 0x00, 0x18, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x30, 0x11, 0x00, 0x50, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x10, 0x10, 0x00, 0x10, 0xE4, 0x00, 0x10, 0x19, 0x00, 0x10, 0xE2, 0x00, 0x10, 0x0C, 0x00, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50C9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x05, 0x14, 0x00, 0x08, 0xA2, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50CA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x24, 0x80, 0x19, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x09, 0xFE, 0x00, 0x0E, 0x45, 0x80, 0x08, 0x4C, 0x00, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50CC, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xF4, 0x00, 0x18, 0x8F, 0x80, 0x13, 0xE9, 0x00, 0x32, 0xB9, 0x00, 0x32, 0xA9, 0x00, 0x53, 0xED, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xA7, 0x00, 0x13, 0xE2, 0x00, 0x10, 0x82, 0x00, 0x17, 0xF7, 0x00, 0x10, 0x85, 0x00, 0x10, 0x8D, 0x80, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50CD, { 0x00, 0x00, 0x00, 0x08, 0x64, 0x00, 0x0B, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xF4, 0x00, 0x10, 0x8F, 0x80, 0x37, 0xF4, 0x80, 0x34, 0x94, 0x80, 0x57, 0xF4, 0x80, 0x14, 0x94, 0x80, 0x17, 0xF4, 0x80, 0x10, 0x84, 0x80, 0x17, 0xF4, 0x80, 0x10, 0x8C, 0x80, 0x11, 0xE9, 0x80, 0x17, 0x19, 0x00, 0x10, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50CE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x0A, 0x28, 0x80, 0x1B, 0xEF, 0x80, 0x12, 0x08, 0x00, 0x32, 0x28, 0x80, 0x31, 0xE7, 0x80, 0x50, 0x00, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50CF, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x1B, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x71, 0x00, 0x08, 0x92, 0x00, 0x09, 0x2C, 0x00, 0x0E, 0x48, 0x00, 0x08, 0x9C, 0x00, 0x0B, 0x2A, 0x00, 0x08, 0xC9, 0x00, 0x0B, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50D0, { 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x51, 0x11, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50D1, { 0x00, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x05, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x19, 0xFE, 0x00, 0x2E, 0x45, 0x80, 0x28, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x7C, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x7C, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50D3, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x50, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50D4, { 0x00, 0x00, 0x00, 0x08, 0x9E, 0x00, 0x09, 0x01, 0x00, 0x0A, 0xFE, 0x80, 0x18, 0x28, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x29, 0x00, 0x31, 0xCF, 0x00, 0x51, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50D5, { 0x00, 0x00, 0x00, 0x04, 0x28, 0x00, 0x05, 0x29, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x28, 0x28, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50D6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50D8, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xA4, 0x00, 0x1C, 0x97, 0x80, 0x10, 0x85, 0x00, 0x37, 0xF5, 0x00, 0x34, 0x1D, 0x00, 0x54, 0x15, 0x00, 0x15, 0xD5, 0x00, 0x15, 0x57, 0x00, 0x15, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0xD7, 0x00, 0x14, 0x15, 0x00, 0x14, 0x35, 0x00, 0x10, 0x0D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50DA, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x09, 0x29, 0x00, 0x18, 0xC6, 0x00, 0x18, 0x82, 0x00, 0x2B, 0x01, 0x80, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50DC, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF4, 0x00, 0x0A, 0x28, 0x80, 0x19, 0x45, 0x00, 0x10, 0x82, 0x00, 0x33, 0x7D, 0x80, 0x30, 0x00, 0x00, 0x50, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50DD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x1B, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x32, 0x7E, 0x00, 0x32, 0x04, 0x00, 0x52, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x12, 0x18, 0x00, 0x12, 0xE7, 0x00, 0x12, 0x21, 0x00, 0x12, 0x72, 0x00, 0x13, 0xCF, 0x80, 0x14, 0x42, 0x00, 0x10, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50DE, { 0x00, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x04, 0xF1, 0x00, 0x08, 0x88, 0x80, 0x09, 0x04, 0x00, 0x18, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x29, 0x00, 0x80, 0x29, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x02, 0x80, 0x09, 0x05, 0x80, 0x09, 0x14, 0x80, 0x09, 0x54, 0x80, 0x0A, 0x51, 0x00, 0x0A, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50DF, { 0x00, 0x00, 0x00, 0x08, 0x91, 0x00, 0x09, 0x12, 0x00, 0x0B, 0x56, 0x80, 0x18, 0x91, 0x00, 0x11, 0x12, 0x80, 0x31, 0x57, 0x80, 0x33, 0xD2, 0x00, 0x50, 0x11, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x11, 0x89, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x44, 0x00, 0x13, 0x0A, 0x80, 0x12, 0x13, 0x80, 0x16, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50E2, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x0B, 0xF1, 0x00, 0x19, 0x23, 0x00, 0x10, 0x92, 0x00, 0x33, 0xFF, 0x80, 0x32, 0x00, 0x80, 0x52, 0x82, 0x80, 0x10, 0xE2, 0x00, 0x11, 0xAF, 0x80, 0x11, 0x2A, 0x00, 0x12, 0xEA, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xDF, 0x80, 0x11, 0x82, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50E3, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xEF, 0x80, 0x18, 0x82, 0x00, 0x10, 0x82, 0x00, 0x33, 0xEF, 0x80, 0x31, 0x45, 0x00, 0x51, 0x29, 0x00, 0x12, 0x00, 0x80, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50E4, { 0x00, 0x00, 0x00, 0x05, 0xEF, 0x00, 0x05, 0x29, 0x00, 0x0D, 0xEF, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50E5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x2F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0xE4, 0x00, 0x0F, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x08, 0x88, 0x80, 0x0B, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50E6, { 0x00, 0x00, 0x00, 0x04, 0x85, 0x00, 0x04, 0x85, 0x80, 0x0C, 0x84, 0x80, 0x0B, 0xE4, 0x00, 0x18, 0x1F, 0x80, 0x13, 0xE4, 0x00, 0x32, 0x24, 0x00, 0x52, 0x24, 0x00, 0x12, 0x2E, 0x00, 0x13, 0xEA, 0x00, 0x10, 0x8A, 0x00, 0x12, 0xCA, 0x00, 0x12, 0xAA, 0x00, 0x14, 0x9A, 0x80, 0x10, 0x92, 0x80, 0x11, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50E7, { 0x00, 0x00, 0x00, 0x04, 0x38, 0x00, 0x04, 0x04, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x1B, 0xFF, 0x80, 0x1D, 0x93, 0x00, 0x29, 0x55, 0x00, 0x29, 0x55, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50E8, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x82, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x30, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50E9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x0A, 0x28, 0x80, 0x1B, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x33, 0xEF, 0x80, 0x32, 0x00, 0x80, 0x52, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x4C, 0x80, 0x12, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50EC, { 0x00, 0x00, 0x00, 0x04, 0xA0, 0x00, 0x04, 0x92, 0x00, 0x04, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x0B, 0x14, 0x00, 0x1D, 0xFE, 0x00, 0x29, 0x10, 0x00, 0x49, 0x14, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x10, 0x00, 0x09, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0x49, 0x00, 0x0C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50ED, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x09, 0x54, 0x00, 0x09, 0x54, 0x00, 0x1F, 0xFF, 0x00, 0x19, 0x54, 0x00, 0x29, 0x54, 0x00, 0x29, 0x54, 0x80, 0x0A, 0x67, 0x80, 0x0D, 0x80, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50EE, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x18, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x50, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50EF, { 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x30, 0xD6, 0x00, 0x33, 0x93, 0x80, 0x50, 0x90, 0x00, 0x10, 0xE2, 0x00, 0x11, 0xAF, 0x80, 0x13, 0x2A, 0x00, 0x10, 0xEA, 0x00, 0x10, 0x5F, 0x80, 0x10, 0xC2, 0x00, 0x11, 0x82, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50F1, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x09, 0xF8, 0x00, 0x09, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x31, 0x12, 0x00, 0x51, 0x24, 0x00, 0x11, 0x7F, 0x00, 0x11, 0xC8, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x48, 0x00, 0x13, 0x7E, 0x00, 0x12, 0x48, 0x00, 0x16, 0x7F, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50F2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x1B, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x33, 0xFF, 0x00, 0x51, 0x02, 0x00, 0x11, 0xC2, 0x00, 0x13, 0x5F, 0x80, 0x12, 0x42, 0x00, 0x15, 0xCA, 0x00, 0x10, 0x92, 0x00, 0x11, 0xBF, 0x80, 0x13, 0x02, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50F3, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x52, 0x00, 0x32, 0x52, 0x00, 0x53, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x17, 0xFF, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x24, 0x00, 0x12, 0x23, 0x00, 0x14, 0x22, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50F5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x92, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50F6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x52, 0x00, 0x1A, 0x52, 0x00, 0x13, 0xDE, 0x00, 0x30, 0x50, 0x00, 0x37, 0xDF, 0x00, 0x54, 0x51, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x10, 0x50, 0x00, 0x10, 0x60, 0x80, 0x10, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50F9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x49, 0x00, 0x1B, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50FA, { 0x00, 0x00, 0x00, 0x02, 0x7C, 0x00, 0x02, 0x44, 0x00, 0x06, 0x44, 0x00, 0x04, 0x7C, 0x00, 0x0C, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x19, 0x29, 0x00, 0x39, 0x29, 0x00, 0x69, 0xEF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50FB, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0xE4, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x20, 0x00, 0x19, 0x29, 0x00, 0x19, 0xEA, 0x00, 0x29, 0x0A, 0x00, 0x29, 0x1F, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0xE4, 0x00, 0x0B, 0x24, 0x00, 0x0D, 0x3F, 0x80, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xE4, 0x00, 0x09, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x50FE, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x0B, 0xFC, 0x00, 0x09, 0x21, 0x00, 0x18, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x10, 0x80, 0x31, 0x49, 0x00, 0x51, 0x42, 0x80, 0x12, 0x3E, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x11, 0x82, 0x00, 0x13, 0x4C, 0x00, 0x10, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x50FF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x44, 0x80, 0x18, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0xFE, 0x80, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5100, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x72, 0x00, 0x0B, 0xD1, 0x00, 0x08, 0x90, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x89, 0x00, 0x08, 0xFA, 0x00, 0x0F, 0x84, 0x80, 0x08, 0x8A, 0x80, 0x09, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5101, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x04, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x19, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x0B, 0xC7, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x7C, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5102, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x49, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x48, 0x00, 0x12, 0x45, 0x00, 0x14, 0x72, 0x00, 0x11, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5103, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x31, 0x7D, 0x00, 0x31, 0x45, 0x00, 0x51, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5104, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x18, 0x28, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x09, 0x48, 0x80, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5106, { 0x00, 0x00, 0x00, 0x05, 0x22, 0x00, 0x05, 0x22, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0x27, 0x80, 0x19, 0x29, 0x00, 0x18, 0x8D, 0x00, 0x29, 0x15, 0x00, 0x29, 0xF5, 0x00, 0x0A, 0x15, 0x00, 0x0D, 0xD5, 0x00, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0xD6, 0x00, 0x08, 0x15, 0x00, 0x08, 0x29, 0x00, 0x08, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5107, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x49, 0x00, 0x09, 0x49, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x50, 0x80, 0x10, 0x93, 0x00, 0x11, 0x8C, 0x00, 0x12, 0xB3, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5108, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x0C, 0xC6, 0x00, 0x0B, 0xBB, 0x80, 0x18, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x51, 0x55, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5109, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x83, 0x00, 0x1B, 0x00, 0x80, 0x18, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x29, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0x45, 0x00, 0x0A, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x510B, { 0x00, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x88, 0x00, 0x0B, 0xFF, 0x80, 0x19, 0x22, 0x00, 0x11, 0xC3, 0x80, 0x31, 0x3E, 0x00, 0x31, 0x00, 0x00, 0x51, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x510C, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0B, 0xE4, 0x00, 0x1A, 0x2F, 0x80, 0x13, 0xE9, 0x00, 0x32, 0x39, 0x00, 0x33, 0xE9, 0x00, 0x50, 0x8D, 0x00, 0x17, 0xF5, 0x00, 0x11, 0x07, 0x00, 0x11, 0xE2, 0x00, 0x11, 0x22, 0x00, 0x13, 0x27, 0x00, 0x12, 0x65, 0x00, 0x16, 0x4D, 0x80, 0x14, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x510D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x45, 0x00, 0x0D, 0x29, 0x00, 0x09, 0x93, 0x00, 0x19, 0x29, 0x00, 0x11, 0x45, 0x00, 0x31, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x13, 0x03, 0x80, 0x10, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x13, 0xA4, 0x00, 0x10, 0x18, 0x00, 0x10, 0x6E, 0x00, 0x13, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x510E, { 0x00, 0x00, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x8B, 0x00, 0x0B, 0xE9, 0x00, 0x18, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x30, 0x88, 0x00, 0x33, 0xEA, 0x00, 0x50, 0x8A, 0x00, 0x13, 0xEA, 0x00, 0x12, 0xAA, 0x00, 0x13, 0xEE, 0x00, 0x12, 0xA4, 0x00, 0x13, 0xE4, 0x80, 0x10, 0x8E, 0x80, 0x13, 0xEB, 0x80, 0x10, 0x99, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5110, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x00, 0x80, 0x08, 0xFF, 0x00, 0x18, 0x52, 0x00, 0x11, 0x94, 0x00, 0x30, 0x18, 0x00, 0x50, 0xFF, 0x00, 0x13, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5112, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x10, 0x80, 0x19, 0xD7, 0x00, 0x28, 0x10, 0x00, 0x29, 0xD7, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x2B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5114, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x80, 0x50, 0xFE, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x01, 0x00, 0x13, 0xDF, 0x80, 0x12, 0x49, 0x00, 0x13, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5115, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x1B, 0xD7, 0x80, 0x11, 0x55, 0x00, 0x31, 0x55, 0x00, 0x52, 0xD6, 0x80, 0x10, 0x00, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x13, 0x01, 0x00, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5116, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xE4, 0x00, 0x0A, 0x84, 0x00, 0x1A, 0x8F, 0x80, 0x13, 0xE8, 0x00, 0x32, 0x38, 0x00, 0x33, 0xE0, 0x00, 0x52, 0x87, 0x80, 0x12, 0x80, 0x00, 0x13, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5117, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x5F, 0x80, 0x0B, 0x81, 0x00, 0x1A, 0x0A, 0x00, 0x12, 0x44, 0x00, 0x31, 0xDF, 0x80, 0x32, 0x04, 0x80, 0x53, 0xC5, 0x00, 0x15, 0x14, 0x00, 0x11, 0x17, 0x00, 0x17, 0xD4, 0x00, 0x11, 0x14, 0x00, 0x11, 0x94, 0x00, 0x11, 0x5C, 0x00, 0x12, 0x36, 0x00, 0x14, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5118, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x12, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x12, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x11, 0x49, 0x00, 0x12, 0x24, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5119, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x7F, 0x00, 0x0B, 0x49, 0x00, 0x19, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x33, 0x7F, 0x80, 0x31, 0x00, 0x00, 0x50, 0x7E, 0x00, 0x17, 0x42, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x40, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x80, 0x00, 0x16, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x511A, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x31, 0xFF, 0x00, 0x50, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x20, 0x80, 0x12, 0x7E, 0x80, 0x10, 0xC2, 0x00, 0x11, 0xB6, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x38, 0x00, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x511B, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0E, 0xAA, 0x00, 0x18, 0xAA, 0x00, 0x13, 0xFF, 0x80, 0x30, 0xAA, 0x00, 0x30, 0xAA, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0x02, 0x00, 0x11, 0xEF, 0x00, 0x13, 0x2A, 0x00, 0x16, 0xAA, 0x00, 0x10, 0x7F, 0x80, 0x11, 0xC2, 0x00, 0x17, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x511C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x20, 0x80, 0x12, 0x50, 0x80, 0x31, 0x45, 0x00, 0x32, 0x7C, 0x80, 0x50, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x511D, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x19, 0x45, 0x00, 0x12, 0x28, 0x80, 0x30, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x01, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x511E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x19, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x31, 0x11, 0x00, 0x31, 0xBB, 0x00, 0x51, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x511F, { 0x00, 0x00, 0x00, 0x04, 0x92, 0x00, 0x04, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x1A, 0xFE, 0x80, 0x18, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5121, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x0A, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x0B, 0xEF, 0x80, 0x0A, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x0B, 0xEF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5123, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x42, 0x00, 0x1A, 0xFF, 0x00, 0x12, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x32, 0x00, 0x00, 0x52, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x16, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x1C, 0x42, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5127, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0x82, 0x00, 0x1B, 0xEF, 0x80, 0x10, 0x82, 0x00, 0x31, 0x45, 0x00, 0x32, 0x28, 0x80, 0x50, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5128, { 0x00, 0x00, 0x00, 0x08, 0x61, 0x80, 0x0B, 0xCF, 0x00, 0x0A, 0x08, 0x00, 0x1B, 0xEF, 0x80, 0x12, 0x8A, 0x00, 0x34, 0x92, 0x00, 0x30, 0x00, 0x00, 0x51, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x17, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x512A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x50, 0x80, 0x09, 0x4B, 0x00, 0x0A, 0x7E, 0x80, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x28, 0x00, 0x08, 0x78, 0x00, 0x0B, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x512C, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x8F, 0x00, 0x0F, 0xF9, 0x00, 0x18, 0x89, 0x00, 0x13, 0xEF, 0x00, 0x30, 0x89, 0x00, 0x37, 0xF9, 0x00, 0x50, 0x0F, 0x00, 0x13, 0xE9, 0x00, 0x12, 0xA9, 0x00, 0x12, 0xAF, 0x00, 0x12, 0xAA, 0x00, 0x13, 0xEA, 0x00, 0x12, 0x2A, 0x80, 0x12, 0x2A, 0x80, 0x12, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x512D, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x9F, 0x00, 0x0F, 0xF1, 0x00, 0x09, 0x51, 0x00, 0x19, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x33, 0xF1, 0x00, 0x50, 0x9F, 0x00, 0x10, 0x91, 0x00, 0x13, 0xF1, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xCA, 0x00, 0x12, 0xAA, 0x00, 0x14, 0x9A, 0x80, 0x10, 0x92, 0x80, 0x10, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x512F, { 0x00, 0x00, 0x00, 0x08, 0xA4, 0x00, 0x09, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x48, 0x00, 0x17, 0xFF, 0x80, 0x31, 0x02, 0x00, 0x33, 0xFF, 0x00, 0x55, 0x10, 0x80, 0x11, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x12, 0xA8, 0x80, 0x16, 0xA4, 0x80, 0x14, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5131, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xF7, 0x80, 0x1A, 0x24, 0x00, 0x11, 0x47, 0x80, 0x37, 0xF0, 0x80, 0x30, 0x07, 0x80, 0x53, 0xE4, 0x00, 0x12, 0x27, 0x80, 0x13, 0xE4, 0x00, 0x12, 0x27, 0x80, 0x13, 0xE4, 0x00, 0x12, 0x27, 0x80, 0x12, 0x24, 0x00, 0x12, 0x24, 0x80, 0x12, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5132, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0xC4, 0x80, 0x08, 0x1F, 0x00, 0x0F, 0xE5, 0x00, 0x18, 0x06, 0x00, 0x18, 0x3F, 0x80, 0x2B, 0xC6, 0x00, 0x28, 0x09, 0x00, 0x0B, 0xD0, 0x00, 0x08, 0x2F, 0x00, 0x08, 0x49, 0x00, 0x0B, 0xCF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xCF, 0x00, 0x0A, 0x49, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5133, { 0x00, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x0B, 0x08, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x88, 0x00, 0x30, 0xEF, 0x00, 0x50, 0x88, 0x80, 0x11, 0xE7, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xC8, 0x80, 0x13, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5134, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x19, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x31, 0xEF, 0x00, 0x30, 0x44, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x80, 0x13, 0x85, 0x00, 0x10, 0xF2, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5135, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x0B, 0x66, 0x00, 0x18, 0x3C, 0x00, 0x14, 0x66, 0x00, 0x37, 0xFF, 0x80, 0x34, 0x92, 0x00, 0x54, 0xD6, 0x00, 0x14, 0xBA, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0xAA, 0x00, 0x11, 0x29, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5137, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xEF, 0x00, 0x1A, 0xAB, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x84, 0x00, 0x0A, 0xF7, 0x80, 0x0A, 0x84, 0x00, 0x0A, 0xB4, 0x80, 0x0D, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5138, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x30, 0x85, 0x00, 0x33, 0x0F, 0x80, 0x51, 0x5A, 0x00, 0x10, 0x8A, 0x00, 0x11, 0x2F, 0x00, 0x13, 0xEA, 0x00, 0x10, 0xAA, 0x00, 0x10, 0x8F, 0x00, 0x12, 0xAA, 0x00, 0x14, 0xAA, 0x00, 0x10, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5139, { 0x00, 0x00, 0x00, 0x0A, 0x8A, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x92, 0x00, 0x1B, 0xEF, 0x80, 0x11, 0x45, 0x00, 0x31, 0x65, 0x00, 0x32, 0x49, 0x80, 0x51, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x513A, { 0x00, 0x00, 0x00, 0x05, 0x45, 0x00, 0x05, 0x45, 0x00, 0x0F, 0xFA, 0x00, 0x09, 0x4F, 0x80, 0x0B, 0xFA, 0x00, 0x1A, 0xAA, 0x00, 0x1A, 0xAF, 0x80, 0x2B, 0xEA, 0x00, 0x08, 0x8A, 0x00, 0x0B, 0xEA, 0x00, 0x08, 0x8F, 0x80, 0x0F, 0xFA, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x2F, 0x80, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x513B, { 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x08, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x82, 0x80, 0x12, 0xFE, 0x80, 0x30, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x93, 0x00, 0x11, 0x55, 0x00, 0x11, 0x39, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x49, 0x00, 0x12, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x513C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x18, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x2A, 0xF4, 0x00, 0x2A, 0x44, 0x00, 0x0B, 0xF7, 0x80, 0x0A, 0xA9, 0x00, 0x0A, 0xF5, 0x00, 0x0A, 0xA2, 0x00, 0x0A, 0xE2, 0x00, 0x0A, 0xB5, 0x00, 0x0D, 0xE5, 0x00, 0x0C, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x513F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x80, 0x08, 0x08, 0x80, 0x10, 0x0F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5141, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x04, 0x7F, 0x00, 0x1F, 0x90, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5142, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0xA0, 0x00, 0x03, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5143, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5145, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0x91, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x04, 0x1F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5146, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x11, 0x11, 0x80, 0x09, 0x16, 0x00, 0x05, 0x18, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x18, 0x00, 0x03, 0x14, 0x00, 0x0D, 0x12, 0x00, 0x31, 0x11, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5147, { 0x00, 0x00, 0x00, 0x13, 0x09, 0x00, 0x10, 0xD1, 0x00, 0x10, 0x21, 0x00, 0x10, 0x51, 0x00, 0x10, 0x89, 0x00, 0x13, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5148, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5149, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x80, 0x08, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x514A, { 0x00, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x1D, 0x0E, 0x00, 0x73, 0x03, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x514B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x80, 0x08, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x514C, { 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x03, 0x80, 0x37, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x514D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x80, 0x08, 0x20, 0x80, 0x30, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x514E, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xC1, 0x00, 0x00, 0xC8, 0x00, 0x01, 0x44, 0x00, 0x01, 0x40, 0x80, 0x02, 0x40, 0x80, 0x0C, 0x7F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x514F, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x30, 0x88, 0x00, 0x21, 0x88, 0x00, 0x61, 0x08, 0x80, 0x03, 0x09, 0x80, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5150, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5151, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x28, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x0A, 0x28, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x08, 0x1F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5152, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x1E, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5153, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x1F, 0x9F, 0x80, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x7F, 0xBF, 0x80, 0x02, 0x02, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x00, 0x0A, 0x8A, 0x00, 0x1A, 0x9A, 0x80, 0x31, 0xB2, 0x80, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5154, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x18, 0x40, 0x00, 0x7F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x03, 0x20, 0x00, 0x02, 0x2C, 0x00, 0x06, 0x26, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x13, 0xF2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5156, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x09, 0x0C, 0x00, 0x11, 0x06, 0x00, 0x22, 0x22, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x48, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x42, 0x00, 0x04, 0x42, 0x00, 0x08, 0x3E, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5157, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x0C, 0x1C, 0x00, 0x18, 0x06, 0x00, 0x3F, 0xFF, 0x00, 0x68, 0x05, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5158, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x22, 0x00, 0x00, 0x62, 0x00, 0x7F, 0x4F, 0x00, 0x14, 0xF9, 0x00, 0x14, 0x00, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x34, 0x7E, 0x00, 0x24, 0x00, 0x80, 0x66, 0x01, 0x80, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x515A, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x18, 0x86, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xFC, 0x80, 0x48, 0x04, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x515C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x80, 0x00, 0x19, 0xF7, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xF7, 0x00, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x515F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x7F, 0x7F, 0x00, 0x48, 0x48, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x35, 0x64, 0x00, 0x26, 0x44, 0x80, 0x64, 0xC4, 0x80, 0x41, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5162, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x80, 0x20, 0xA0, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xBF, 0x80, 0x0A, 0x0A, 0x00, 0x0A, 0x0A, 0x00, 0x0A, 0x92, 0x80, 0x13, 0x12, 0x80, 0x14, 0x23, 0x80, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5164, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x4A, 0xA2, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xA2, 0x00, 0x08, 0xBE, 0x00, 0x7F, 0x80, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x14, 0xBE, 0x00, 0x14, 0xAA, 0x00, 0x14, 0xBE, 0x00, 0x35, 0x2A, 0x00, 0x24, 0x3E, 0x80, 0x66, 0x41, 0x80, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0x01, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5166, { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x47, 0xC0, 0x00, 0x40, 0x40, 0x00, 0x40, 0x40, 0x00, 0x40, 0x40, 0x00, 0x40, 0x40, 0x00, 0x40, 0xE0, 0x00, 0x40, 0xA0, 0x00, 0x41, 0xB0, 0x00, 0x41, 0x10, 0x00, 0x43, 0x18, 0x00, 0x46, 0x0C, 0x00, 0x4C, 0x06, 0x00, 0x60, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5167, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x11, 0x00, 0x12, 0x09, 0x00, 0x1C, 0x07, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5168, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x06, 0x06, 0x00, 0x38, 0x01, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1E, 0x79, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x15, 0x55, 0x00, 0x18, 0xE3, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x516A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x06, 0x06, 0x00, 0x3B, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x12, 0x00, 0x09, 0x12, 0x00, 0x0F, 0x24, 0x00, 0x09, 0x48, 0x00, 0x0F, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x12, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x516B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x516C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x81, 0x00, 0x20, 0x80, 0x80, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x04, 0x00, 0x04, 0x1E, 0x00, 0x09, 0xE1, 0x00, 0x3E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x516D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x516E, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x22, 0x00, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5170, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5171, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5173, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x04, 0x0C, 0x00, 0x02, 0x10, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x07, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5174, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x04, 0x00, 0x10, 0x84, 0x00, 0x08, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x06, 0x10, 0x00, 0x08, 0x0C, 0x00, 0x10, 0x06, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5175, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0x01, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5176, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5178, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5179, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x20, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x11, 0x22, 0x00, 0x12, 0x24, 0x00, 0x3C, 0x78, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x3F, 0x7E, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x517B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x44, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x1A, 0x27, 0x00, 0x62, 0x22, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x517C, { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x31, 0x11, 0x80, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x03, 0x18, 0x00, 0x05, 0x14, 0x00, 0x09, 0x12, 0x00, 0x31, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x517D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x02, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x517E, { 0x00, 0x00, 0x00, 0x05, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5180, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x01, 0x10, 0x00, 0x07, 0x10, 0x80, 0x39, 0x1F, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5181, { 0x00, 0x00, 0x00, 0x22, 0x02, 0x00, 0x12, 0xFF, 0x00, 0x14, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0xA4, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x3E, 0xFF, 0x00, 0x09, 0x52, 0x00, 0x7F, 0x54, 0x00, 0x09, 0x48, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x63, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5184, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5185, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x21, 0xC1, 0x00, 0x21, 0x61, 0x00, 0x23, 0x31, 0x00, 0x26, 0x19, 0x00, 0x2C, 0x0D, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5186, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5188, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x24, 0x12, 0x00, 0x22, 0x32, 0x00, 0x21, 0x42, 0x00, 0x20, 0x82, 0x00, 0x21, 0x42, 0x00, 0x22, 0x32, 0x00, 0x24, 0x1A, 0x00, 0x28, 0x0A, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5189, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x518A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x518B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x518C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x31, 0x62, 0x00, 0x27, 0x42, 0x00, 0x60, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x518D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x518E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x518F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x26, 0x3D, 0x00, 0x2C, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5191, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5193, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5195, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x37, 0xFE, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x20, 0x80, 0x06, 0x20, 0x80, 0x38, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x08, 0x0F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5198, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x03, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x40, 0x00, 0x0C, 0x40, 0x80, 0x18, 0x61, 0x80, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0x01, 0x00, 0x23, 0xF9, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x519B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x41, 0x0A, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x519C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x82, 0x00, 0x01, 0x00, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8C, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x60, 0x00, 0x14, 0x40, 0x00, 0x24, 0x20, 0x00, 0x44, 0x18, 0x00, 0x05, 0x07, 0x00, 0x06, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x519D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x02, 0x80, 0x00, 0x03, 0x00, 0x0F, 0x02, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x02, 0x00, 0x3F, 0xD2, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x0E, 0x00, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x06, 0x83, 0x00, 0x38, 0xC6, 0x00, 0x03, 0x4C, 0x00, 0x0E, 0x60, 0x00, 0x38, 0xF0, 0x00, 0x03, 0x58, 0x00, 0x0E, 0x4E, 0x00, 0x78, 0xC3, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x06, 0x82, 0x00, 0x38, 0x86, 0x00, 0x05, 0x4C, 0x00, 0x06, 0x60, 0x00, 0x3A, 0xF0, 0x00, 0x03, 0x58, 0x00, 0x0E, 0x4E, 0x00, 0x78, 0xC3, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x40, 0x02, 0x00, 0x40, 0x02, 0x00, 0x3F, 0x00, 0x00, 0x12, 0xFC, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x6C, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x38, 0x00, 0x12, 0x10, 0x00, 0x12, 0x38, 0x00, 0x1E, 0x2C, 0x00, 0x32, 0x66, 0x00, 0x02, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x20, 0x00, 0x7F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x03, 0x2C, 0x00, 0x06, 0x26, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x40, 0x08, 0x80, 0x3F, 0x0F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x7F, 0xA2, 0x00, 0x12, 0x36, 0x00, 0x12, 0x14, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x36, 0x00, 0x12, 0x63, 0x00, 0x32, 0x00, 0x80, 0x23, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x23, 0x81, 0x00, 0x0E, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x11, 0x00, 0x72, 0x49, 0x00, 0x09, 0x2B, 0x00, 0x09, 0x22, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51AA, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x37, 0xFD, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x4C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51AC, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x08, 0x00, 0x20, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0xB0, 0x00, 0x03, 0x0C, 0x00, 0x0C, 0x43, 0x80, 0x30, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51AD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x19, 0xC6, 0x00, 0x70, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51AF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x23, 0xFC, 0x00, 0x18, 0x08, 0x00, 0x09, 0x08, 0x00, 0x01, 0x08, 0x00, 0x05, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x0A, 0x00, 0x11, 0xFF, 0x00, 0x70, 0x02, 0x00, 0x10, 0x12, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x21, 0x00, 0x07, 0xA3, 0x00, 0x00, 0xB6, 0x00, 0x00, 0xB4, 0x00, 0x00, 0xA8, 0x00, 0x09, 0xA8, 0x00, 0x09, 0x2C, 0x00, 0x19, 0x24, 0x00, 0x13, 0x26, 0x00, 0x32, 0x23, 0x00, 0x26, 0x21, 0x80, 0x60, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x09, 0x84, 0x00, 0x09, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x30, 0x08, 0x00, 0x20, 0x08, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x50, 0x00, 0x18, 0x58, 0x00, 0x10, 0xC8, 0x00, 0x30, 0x8C, 0x00, 0x21, 0x86, 0x00, 0x63, 0x03, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x44, 0x00, 0x08, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x01, 0xFF, 0x80, 0x04, 0x14, 0x00, 0x0C, 0x34, 0x00, 0x08, 0x24, 0x00, 0x18, 0x64, 0x00, 0x10, 0xC4, 0x00, 0x31, 0x84, 0x00, 0x67, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x18, 0x48, 0x00, 0x10, 0x48, 0x00, 0x30, 0xC8, 0x00, 0x20, 0x88, 0x80, 0x61, 0x89, 0x80, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B6, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x1F, 0x80, 0x03, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B7, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x28, 0x00, 0x08, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x4E, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51B8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x92, 0x00, 0x19, 0x93, 0x00, 0x09, 0x11, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x19, 0x08, 0x00, 0x11, 0x0C, 0x00, 0x31, 0x04, 0x00, 0x21, 0x66, 0x80, 0x61, 0xC3, 0x80, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51BB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x90, 0x00, 0x00, 0x92, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x30, 0x50, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x11, 0x11, 0x00, 0x12, 0x11, 0x00, 0x10, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51BC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x90, 0x00, 0x18, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x01, 0x90, 0x00, 0x03, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0x44, 0x00, 0x30, 0xC4, 0x00, 0x20, 0x84, 0x80, 0x61, 0x84, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51BD, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x10, 0x00, 0x80, 0x03, 0xF4, 0x80, 0x00, 0x84, 0x80, 0x00, 0x84, 0x80, 0x01, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x0A, 0x94, 0x80, 0x0A, 0x64, 0x80, 0x0C, 0x24, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x84, 0x80, 0x11, 0x04, 0x80, 0x22, 0x00, 0x80, 0x24, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51BE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0x82, 0x00, 0x20, 0x82, 0x00, 0x60, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51BF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x11, 0x00, 0x08, 0x11, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x41, 0xF8, 0x00, 0x32, 0x10, 0x00, 0x14, 0x24, 0x00, 0x03, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x70, 0x44, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x44, 0x00, 0x10, 0x40, 0x00, 0x11, 0x40, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x7E, 0x00, 0x18, 0xC4, 0x00, 0x09, 0x8C, 0x00, 0x03, 0x08, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0x31, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x68, 0x00, 0x10, 0x48, 0x00, 0x30, 0xC8, 0x00, 0x20, 0x88, 0x80, 0x61, 0x89, 0x80, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C4, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x11, 0xC8, 0x00, 0x12, 0x38, 0x00, 0x20, 0xE6, 0x00, 0x27, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x0A, 0x10, 0x80, 0x02, 0xFE, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x7C, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x1A, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x32, 0x00, 0x80, 0x22, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C6, { 0x00, 0x00, 0x00, 0x20, 0x44, 0x00, 0x10, 0x44, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x88, 0x00, 0x01, 0x88, 0x00, 0x02, 0x88, 0x00, 0x02, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x20, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C7, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x0F, 0xE2, 0x00, 0x01, 0x22, 0x00, 0x13, 0x49, 0x00, 0x13, 0x88, 0x00, 0x15, 0x48, 0x00, 0x25, 0x50, 0x00, 0x69, 0x10, 0x00, 0x21, 0x24, 0x00, 0x21, 0x22, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C8, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x1E, 0x00, 0x19, 0xF3, 0x00, 0x08, 0x51, 0x80, 0x00, 0x88, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x18, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51C9, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x11, 0x00, 0x22, 0x10, 0x80, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51CB, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0xFE, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x24, 0x44, 0x80, 0x24, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51CC, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x48, 0x00, 0x00, 0x88, 0x80, 0x09, 0x4F, 0x80, 0x0A, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x11, 0x84, 0x00, 0x16, 0x48, 0x00, 0x10, 0x30, 0x00, 0x10, 0x68, 0x00, 0x21, 0x86, 0x00, 0x26, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51CD, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x21, 0x11, 0x00, 0x22, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51CF, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x30, 0x09, 0x00, 0x18, 0x09, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0xEB, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAE, 0x00, 0x1A, 0xA4, 0x00, 0x12, 0xE4, 0x00, 0x32, 0x0E, 0x80, 0x26, 0x1A, 0x80, 0x64, 0x33, 0x80, 0x0C, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51D1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x08, 0x9A, 0x00, 0x0B, 0x71, 0x80, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x28, 0x00, 0x20, 0x6C, 0x00, 0x60, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51D2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x30, 0x6C, 0x00, 0x20, 0x28, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x08, 0x48, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x49, 0x00, 0x01, 0x49, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x30, 0x92, 0x00, 0x21, 0x93, 0x00, 0x63, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x0A, 0xFE, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x20, 0x44, 0x00, 0x60, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51D6, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x88, 0x00, 0x19, 0xFF, 0x00, 0x03, 0x10, 0x00, 0x05, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x10, 0x00, 0x31, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51D8, { 0x00, 0x00, 0x00, 0x02, 0x41, 0x00, 0x62, 0x47, 0x00, 0x37, 0xEC, 0x00, 0x12, 0x48, 0x00, 0x02, 0x48, 0x00, 0x03, 0xCF, 0x80, 0x02, 0x4A, 0x00, 0x02, 0x4A, 0x00, 0x13, 0xCA, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x37, 0xEA, 0x00, 0x22, 0x8A, 0x00, 0x22, 0xCA, 0x00, 0x66, 0x52, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51DB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x7D, 0x00, 0x01, 0x45, 0x00, 0x01, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x92, 0x00, 0x03, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51DC, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x39, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x21, 0x92, 0x00, 0x26, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51DD, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x12, 0x6F, 0x00, 0x03, 0x81, 0x00, 0x02, 0x2A, 0x00, 0x03, 0xE4, 0x00, 0x01, 0x1F, 0x80, 0x09, 0x05, 0x00, 0x0B, 0xE4, 0x00, 0x0C, 0x84, 0x00, 0x08, 0x97, 0x80, 0x17, 0xF4, 0x00, 0x10, 0x94, 0x00, 0x11, 0x54, 0x00, 0x11, 0x34, 0x00, 0x22, 0x2F, 0x80, 0x2C, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51DE, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0xEF, 0x00, 0x02, 0x49, 0x00, 0x02, 0xE9, 0x00, 0x0A, 0xA9, 0x00, 0x0A, 0xAF, 0x00, 0x0A, 0xA8, 0x00, 0x12, 0xE8, 0x00, 0x12, 0x48, 0x00, 0x22, 0x48, 0x80, 0x23, 0xEF, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x11, 0x00, 0x11, 0x08, 0x80, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x80, 0x30, 0x19, 0x80, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x84, 0x00, 0x04, 0x44, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x80, 0x08, 0x04, 0x80, 0x10, 0x07, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51E2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51E4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x17, 0xF8, 0x00, 0x10, 0x28, 0x00, 0x14, 0x28, 0x00, 0x12, 0x48, 0x00, 0x11, 0x48, 0x00, 0x10, 0x88, 0x00, 0x11, 0x48, 0x00, 0x12, 0x68, 0x00, 0x14, 0x28, 0x00, 0x10, 0x09, 0x00, 0x20, 0x05, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x31, 0x08, 0x00, 0x23, 0x08, 0x80, 0x66, 0x0D, 0x80, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51E6, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3E, 0x00, 0x10, 0x22, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x33, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x04, 0x62, 0x80, 0x0E, 0x42, 0x80, 0x0A, 0xC1, 0x80, 0x1B, 0x00, 0x00, 0x31, 0x80, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0xB6, 0x00, 0x30, 0x82, 0x80, 0x20, 0x83, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0xC4, 0x00, 0x11, 0xC4, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x14, 0x96, 0x00, 0x30, 0x82, 0x80, 0x20, 0x83, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x74, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x46, 0x00, 0x32, 0x42, 0x80, 0x2F, 0xFB, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51EB, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x12, 0x10, 0x00, 0x11, 0x50, 0x00, 0x10, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD4, 0x00, 0x04, 0x48, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x41, 0x00, 0x10, 0x41, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51ED, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x0C, 0x1C, 0x00, 0x18, 0xF0, 0x00, 0x30, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x13, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x13, 0xF4, 0x00, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x13, 0xF4, 0x00, 0x12, 0x14, 0x00, 0x12, 0x16, 0x00, 0x32, 0x12, 0x80, 0x23, 0xF3, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51EF, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x24, 0xBE, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xA4, 0x00, 0x01, 0x24, 0x00, 0x7F, 0xA4, 0x00, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x24, 0x00, 0x20, 0x24, 0x00, 0x23, 0x45, 0x00, 0x2C, 0x45, 0x00, 0x30, 0x83, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x04, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x82, 0x00, 0x2F, 0xFA, 0x80, 0x20, 0x01, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51F1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x01, 0x12, 0x00, 0x11, 0x22, 0x00, 0x0B, 0xE2, 0x80, 0x3E, 0x42, 0x80, 0x00, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x51F2, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x92, 0x00, 0x11, 0x22, 0x00, 0x17, 0xFA, 0x00, 0x11, 0x42, 0x00, 0x13, 0xF2, 0x00, 0x11, 0x52, 0x00, 0x17, 0xFA, 0x00, 0x11, 0x52, 0x00, 0x13, 0xF2, 0x00, 0x11, 0x62, 0x00, 0x13, 0x52, 0x00, 0x37, 0x5A, 0x80, 0x25, 0x4B, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F3, { 0x00, 0x00, 0x00, 0x0F, 0xC4, 0x00, 0x21, 0x29, 0x00, 0x12, 0x12, 0x00, 0x0F, 0xFC, 0x00, 0x70, 0x03, 0x80, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F4, { 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x10, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFE, 0x00, 0x09, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x30, 0x04, 0x80, 0x62, 0x92, 0x80, 0x04, 0x49, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F5, { 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F6, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x12, 0x09, 0x00, 0x11, 0x09, 0x00, 0x10, 0x91, 0x00, 0x10, 0x61, 0x00, 0x10, 0x21, 0x00, 0x10, 0x51, 0x00, 0x10, 0x91, 0x00, 0x11, 0x09, 0x00, 0x16, 0x09, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51FA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51FB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51FC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x9A, 0x00, 0x2F, 0xA2, 0x00, 0x21, 0xC2, 0x00, 0x22, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x24, 0x92, 0x00, 0x28, 0x92, 0x00, 0x30, 0x8E, 0x00, 0x22, 0x82, 0x00, 0x21, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x11, 0xE1, 0x00, 0x11, 0x25, 0x00, 0x14, 0x29, 0x00, 0x12, 0x21, 0x00, 0x10, 0x71, 0x00, 0x10, 0xA9, 0x00, 0x11, 0x27, 0x00, 0x16, 0x61, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xFD, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0x91, 0x00, 0x2E, 0x99, 0x00, 0x20, 0xAD, 0x00, 0x23, 0x81, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x51FF, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x0A, 0x28, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x11, 0x44, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x10, 0xA4, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x39, 0x00, 0x01, 0xE1, 0x00, 0x0F, 0x01, 0x00, 0x38, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5202, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x08, 0x41, 0x00, 0x04, 0x41, 0x00, 0x02, 0x41, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x10, 0x1C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5204, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x10, 0x82, 0x00, 0x19, 0x82, 0x00, 0x0D, 0x02, 0x00, 0x07, 0x02, 0x00, 0x03, 0x86, 0x00, 0x02, 0xC4, 0x00, 0x06, 0x74, 0x00, 0x04, 0x1C, 0x00, 0x0C, 0x0F, 0x80, 0x18, 0x18, 0x00, 0x30, 0x10, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x11, 0x05, 0x00, 0x11, 0x05, 0x00, 0x33, 0x05, 0x00, 0x22, 0x05, 0x80, 0x62, 0x04, 0x80, 0x46, 0x04, 0x80, 0x04, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x70, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x80, 0x20, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5207, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0xD0, 0x80, 0x07, 0x10, 0x80, 0x3C, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x90, 0x80, 0x04, 0x90, 0x80, 0x07, 0xA0, 0x80, 0x00, 0x20, 0x80, 0x00, 0xC1, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5208, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x32, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x06, 0x11, 0x00, 0x02, 0x11, 0x00, 0x05, 0x11, 0x00, 0x05, 0x11, 0x00, 0x04, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x11, 0x00, 0x10, 0x11, 0x00, 0x20, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x520A, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x520B, { 0x00, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x07, 0x91, 0x00, 0x7C, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x0C, 0x01, 0x00, 0x08, 0x01, 0x00, 0x18, 0x01, 0x00, 0x30, 0x01, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x520D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x08, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x520E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x08, 0x04, 0x80, 0x0F, 0xF4, 0x80, 0x12, 0x54, 0x80, 0x22, 0x54, 0x80, 0x04, 0x94, 0x80, 0x04, 0x94, 0x80, 0x09, 0x14, 0x80, 0x11, 0x14, 0x80, 0x22, 0x14, 0x80, 0x04, 0x14, 0x80, 0x08, 0x24, 0x80, 0x10, 0x24, 0x80, 0x20, 0x44, 0x80, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5211, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xE9, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x81, 0x00, 0x10, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5212, { 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x04, 0xC9, 0x00, 0x04, 0x49, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x49, 0x00, 0x04, 0xC9, 0x00, 0x05, 0x89, 0x00, 0x07, 0x09, 0x00, 0x02, 0x09, 0x00, 0x07, 0x01, 0x00, 0x0D, 0x01, 0x00, 0x19, 0xA1, 0x00, 0x70, 0xE1, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5213, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x7F, 0xE9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0x21, 0x00, 0x31, 0xC1, 0x00, 0x63, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5214, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x7F, 0xE9, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0B, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0x81, 0x00, 0x30, 0xC1, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x86, 0x00, 0x07, 0x04, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x31, 0x18, 0x80, 0x21, 0x10, 0x80, 0x63, 0x31, 0x80, 0x46, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5216, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x20, 0x41, 0x00, 0x61, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5217, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xE1, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0F, 0xE9, 0x00, 0x08, 0x49, 0x00, 0x18, 0x49, 0x00, 0x14, 0x89, 0x00, 0x22, 0x89, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5218, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x1B, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0E, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x31, 0x81, 0x00, 0x60, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5219, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x1F, 0xE1, 0x00, 0x10, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x41, 0x00, 0x05, 0x01, 0x00, 0x04, 0x81, 0x00, 0x08, 0x45, 0x00, 0x30, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x521A, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xC2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x31, 0x92, 0x00, 0x31, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x24, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x29, 0x92, 0x00, 0x31, 0x92, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x22, 0x8A, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x521B, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x05, 0x01, 0x00, 0x04, 0x89, 0x00, 0x08, 0x69, 0x00, 0x08, 0x29, 0x00, 0x1F, 0x89, 0x00, 0x28, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0A, 0x89, 0x00, 0x09, 0x09, 0x00, 0x08, 0x01, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x07, 0xC5, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x521D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x1F, 0x08, 0x80, 0x01, 0x08, 0x80, 0x02, 0x08, 0x80, 0x04, 0x88, 0x80, 0x0D, 0x08, 0x80, 0x16, 0x08, 0x80, 0x25, 0x08, 0x80, 0x04, 0x08, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x20, 0x80, 0x04, 0x41, 0x00, 0x05, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5220, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1E, 0xF9, 0x00, 0x12, 0x91, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x3F, 0xFD, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x12, 0x91, 0x00, 0x16, 0x91, 0x00, 0x10, 0x95, 0x00, 0x21, 0x32, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5222, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x07, 0x04, 0x80, 0x0D, 0x84, 0x80, 0x18, 0xC4, 0x80, 0x30, 0x64, 0x80, 0x6F, 0xB4, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x04, 0x24, 0x80, 0x04, 0x24, 0x80, 0x04, 0x20, 0x80, 0x04, 0x20, 0x80, 0x04, 0xE0, 0x80, 0x04, 0x00, 0x80, 0x04, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5224, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x12, 0x89, 0x00, 0x12, 0x89, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x02, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x03, 0xE9, 0x00, 0x3E, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x04, 0x04, 0x80, 0x04, 0x04, 0x80, 0x07, 0xE4, 0x80, 0x04, 0x24, 0x80, 0x04, 0x24, 0x80, 0x08, 0x24, 0x80, 0x08, 0x24, 0x80, 0x10, 0x40, 0x80, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5227, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x08, 0x09, 0x00, 0x08, 0x09, 0x00, 0x09, 0x09, 0x00, 0x19, 0x19, 0x00, 0x11, 0x13, 0x00, 0x17, 0x92, 0x00, 0x3C, 0xB2, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5228, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x32, 0x49, 0x00, 0x72, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x11, 0xC9, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x21, 0x00, 0x18, 0x61, 0x00, 0x0F, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5229, { 0x00, 0x00, 0x00, 0x03, 0x81, 0x00, 0x1E, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x06, 0x09, 0x00, 0x07, 0x09, 0x00, 0x0A, 0x89, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x09, 0x00, 0x22, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x522A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0xE4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x3F, 0xFC, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x522B, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x0F, 0xE1, 0x00, 0x08, 0x41, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0F, 0xC9, 0x00, 0x0A, 0x09, 0x00, 0x02, 0x49, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x41, 0x00, 0x09, 0x41, 0x00, 0x10, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x522D, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xE1, 0x00, 0x00, 0x41, 0x00, 0x00, 0x89, 0x00, 0x01, 0x09, 0x00, 0x02, 0xC9, 0x00, 0x0C, 0x29, 0x00, 0x30, 0x09, 0x00, 0x0F, 0xE9, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x01, 0x01, 0x00, 0x01, 0xE1, 0x00, 0x1F, 0x01, 0x00, 0x08, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x522E, { 0x00, 0x00, 0x00, 0x01, 0xC1, 0x00, 0x1E, 0x01, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC1, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5230, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x08, 0x89, 0x00, 0x13, 0xC9, 0x00, 0x3C, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x07, 0xC9, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5231, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x09, 0x00, 0x7F, 0x89, 0x00, 0x12, 0x29, 0x00, 0x12, 0x29, 0x00, 0x12, 0x69, 0x00, 0x7F, 0xD9, 0x80, 0x12, 0x53, 0x80, 0x12, 0x52, 0x80, 0x12, 0x12, 0x80, 0x12, 0x12, 0x00, 0x12, 0x32, 0x00, 0x32, 0x26, 0x00, 0x22, 0x64, 0x00, 0x62, 0xDC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5232, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x7F, 0xE1, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5233, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x60, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x08, 0x09, 0x00, 0x1F, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5235, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xC9, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x01, 0x00, 0x71, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5236, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x22, 0x08, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0x40, 0x80, 0x12, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xF0, 0x80, 0x10, 0x14, 0x80, 0x10, 0x14, 0x80, 0x1F, 0xF4, 0x80, 0x10, 0x84, 0x80, 0x10, 0x84, 0x80, 0x17, 0xF4, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0xB4, 0x80, 0x20, 0x80, 0x80, 0x20, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5238, { 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x0C, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5239, { 0x00, 0x00, 0x00, 0x31, 0x81, 0x00, 0x0A, 0x11, 0x00, 0x04, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x11, 0x11, 0x00, 0x24, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x0C, 0x11, 0x00, 0x0E, 0x11, 0x00, 0x15, 0x11, 0x00, 0x14, 0x11, 0x00, 0x24, 0x11, 0x00, 0x04, 0x01, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x523A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x16, 0xC8, 0x80, 0x06, 0x08, 0x80, 0x0B, 0x08, 0x80, 0x0A, 0x88, 0x80, 0x12, 0x48, 0x80, 0x22, 0x00, 0x80, 0x02, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x523B, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x04, 0x09, 0x00, 0x29, 0x09, 0x00, 0x11, 0x09, 0x00, 0x0A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x31, 0x09, 0x00, 0x03, 0x09, 0x00, 0x04, 0x89, 0x00, 0x08, 0x41, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x523C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x09, 0x00, 0x3E, 0x09, 0x00, 0x08, 0x09, 0x00, 0x08, 0x49, 0x00, 0x08, 0x69, 0x00, 0x7F, 0x59, 0x00, 0x10, 0x09, 0x00, 0x10, 0x0D, 0x00, 0x12, 0x1B, 0x00, 0x33, 0x11, 0x80, 0x21, 0x11, 0x00, 0x27, 0xB3, 0x00, 0x7C, 0xE2, 0x00, 0x40, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x523D, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x05, 0x01, 0x00, 0x08, 0x89, 0x00, 0x10, 0x69, 0x00, 0x2F, 0xA9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x81, 0x00, 0x1F, 0xC1, 0x00, 0x00, 0x45, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x523F, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x12, 0x42, 0x00, 0x12, 0x52, 0x00, 0x1F, 0xD2, 0x00, 0x04, 0x52, 0x00, 0x04, 0x12, 0x00, 0x07, 0xD2, 0x00, 0x08, 0x52, 0x00, 0x08, 0x92, 0x00, 0x18, 0x92, 0x00, 0x25, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x0A, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5240, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x02, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5241, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x0F, 0xC1, 0x00, 0x08, 0x81, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x12, 0x69, 0x00, 0x02, 0x49, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x07, 0x09, 0x00, 0x0A, 0xC9, 0x00, 0x12, 0x41, 0x00, 0x22, 0x01, 0x00, 0x02, 0x05, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5242, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x21, 0x00, 0x1F, 0xF1, 0x00, 0x04, 0x49, 0x00, 0x02, 0x89, 0x00, 0x01, 0x09, 0x00, 0x02, 0x89, 0x00, 0x0C, 0x69, 0x00, 0x34, 0x59, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x41, 0x00, 0x08, 0x41, 0x00, 0x10, 0x45, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5243, { 0x00, 0x00, 0x00, 0x08, 0x81, 0x00, 0x05, 0x01, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x22, 0x29, 0x00, 0x06, 0x29, 0x00, 0x06, 0x29, 0x00, 0x0A, 0x29, 0x00, 0x0A, 0xC9, 0x00, 0x12, 0x01, 0x00, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5244, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x24, 0x89, 0x00, 0x49, 0x09, 0x00, 0x24, 0x89, 0x00, 0x12, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x05, 0xC1, 0x00, 0x1F, 0x01, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5245, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x31, 0x81, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x07, 0xC1, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5247, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x81, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x81, 0x00, 0x20, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5249, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x47, 0x14, 0x80, 0x02, 0x04, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x03, 0xF0, 0x80, 0x7E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x524A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x0A, 0x80, 0x80, 0x12, 0x48, 0x80, 0x22, 0x28, 0x80, 0x02, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x10, 0x40, 0x80, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x524B, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x05, 0x09, 0x00, 0x05, 0x03, 0x00, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x524C, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x07, 0x09, 0x00, 0x06, 0x89, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x01, 0x00, 0x22, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x524D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x01, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x01, 0x00, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x524F, { 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x33, 0x7F, 0x00, 0x12, 0x09, 0x00, 0x7F, 0x89, 0x00, 0x12, 0x09, 0x00, 0x12, 0x29, 0x00, 0x12, 0x29, 0x00, 0x7F, 0xB9, 0x00, 0x12, 0x13, 0x00, 0x12, 0x12, 0x00, 0x12, 0x1A, 0x00, 0x12, 0x16, 0x00, 0x12, 0x33, 0x80, 0x32, 0x26, 0x00, 0x22, 0x64, 0x00, 0x62, 0xDC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5250, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xE2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4A, 0x00, 0x1F, 0xCA, 0x00, 0x12, 0x4A, 0x00, 0x02, 0x0A, 0x00, 0x3F, 0xEA, 0x00, 0x22, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x25, 0x2A, 0x00, 0x28, 0xA2, 0x00, 0x20, 0x22, 0x00, 0x20, 0xAA, 0x00, 0x20, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5251, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x81, 0x00, 0x04, 0x49, 0x00, 0x08, 0x29, 0x00, 0x10, 0x99, 0x00, 0x2F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x09, 0x29, 0x00, 0x05, 0x29, 0x00, 0x05, 0x49, 0x00, 0x05, 0x49, 0x00, 0x00, 0xE1, 0x00, 0x1F, 0x01, 0x00, 0x08, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0xE4, 0x80, 0x08, 0x24, 0x80, 0x0F, 0xE4, 0x80, 0x08, 0x24, 0x80, 0x0F, 0xE4, 0x80, 0x04, 0x04, 0x80, 0x08, 0x04, 0x80, 0x1F, 0xF4, 0x80, 0x22, 0x54, 0x80, 0x04, 0x94, 0x80, 0x09, 0x14, 0x80, 0x32, 0x24, 0x80, 0x04, 0x20, 0x80, 0x18, 0x40, 0x80, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5255, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x80, 0x04, 0x84, 0x80, 0x04, 0x84, 0x80, 0x3C, 0xF4, 0x80, 0x04, 0x84, 0x80, 0x04, 0x84, 0x80, 0x3C, 0xF4, 0x80, 0x04, 0x84, 0x80, 0x04, 0x84, 0x80, 0x1C, 0xF4, 0x80, 0x74, 0x84, 0x80, 0x04, 0x80, 0x80, 0x04, 0x80, 0x80, 0x0C, 0x80, 0x80, 0x18, 0x80, 0x80, 0x30, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5256, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x01, 0x04, 0x80, 0x01, 0x04, 0x80, 0x1F, 0xF4, 0x80, 0x08, 0x24, 0x80, 0x04, 0x44, 0x80, 0x04, 0x44, 0x80, 0x3F, 0xFC, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x0F, 0xE4, 0x80, 0x08, 0x24, 0x80, 0x08, 0x24, 0x80, 0x08, 0x24, 0x80, 0x0F, 0xE0, 0x80, 0x08, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5257, { 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xC9, 0x00, 0x3C, 0x09, 0x00, 0x06, 0xC9, 0x00, 0x03, 0x09, 0x00, 0x0D, 0xA9, 0x00, 0x30, 0xE9, 0x00, 0x09, 0x09, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xC9, 0x00, 0x3C, 0x01, 0x00, 0x06, 0xC1, 0x00, 0x03, 0x01, 0x00, 0x0D, 0xA1, 0x00, 0x70, 0xE7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5258, { 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x11, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x7F, 0xC1, 0x00, 0x00, 0x01, 0x00, 0x13, 0x01, 0x00, 0x31, 0x81, 0x00, 0x60, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x525A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x04, 0x80, 0x7F, 0xF4, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE4, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x02, 0x24, 0x80, 0x7F, 0xF4, 0x80, 0x02, 0x20, 0x80, 0x3F, 0xE0, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x525B, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xE1, 0x00, 0x20, 0x29, 0x00, 0x28, 0xA9, 0x00, 0x25, 0x29, 0x00, 0x3F, 0xE9, 0x00, 0x22, 0x29, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x2F, 0xA9, 0x00, 0x28, 0xA9, 0x00, 0x20, 0x29, 0x00, 0x20, 0x21, 0x00, 0x20, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x525C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x20, 0x24, 0x80, 0x20, 0x24, 0x80, 0x10, 0x04, 0x80, 0x1D, 0xE4, 0x80, 0x15, 0x24, 0x80, 0x35, 0x24, 0x80, 0x25, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x09, 0x60, 0x80, 0x19, 0x00, 0x80, 0x11, 0x10, 0x80, 0x31, 0x30, 0x80, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x525D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x04, 0x20, 0x80, 0x07, 0xE4, 0x80, 0x08, 0x24, 0x80, 0x08, 0x44, 0x80, 0x17, 0xC4, 0x80, 0x01, 0x04, 0x80, 0x3F, 0xFC, 0x80, 0x01, 0x04, 0x80, 0x09, 0x24, 0x80, 0x05, 0x44, 0x80, 0x01, 0x84, 0x80, 0x03, 0x44, 0x80, 0x0D, 0x20, 0x80, 0x31, 0x10, 0x80, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x525E, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x7F, 0xE9, 0x00, 0x00, 0x89, 0x00, 0x3C, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x525F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3D, 0xE4, 0x80, 0x04, 0x24, 0x80, 0x35, 0xA4, 0x80, 0x08, 0x44, 0x80, 0x14, 0xA4, 0x80, 0x21, 0x14, 0x80, 0x00, 0x04, 0x80, 0x3D, 0xE4, 0x80, 0x04, 0x24, 0x80, 0x24, 0x24, 0x80, 0x19, 0x40, 0x80, 0x09, 0x40, 0x80, 0x14, 0x80, 0x80, 0x25, 0x40, 0x80, 0x42, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5260, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x04, 0x80, 0x02, 0x04, 0x80, 0x7F, 0xF4, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x32, 0x60, 0x80, 0x62, 0x30, 0x80, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5261, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x40, 0x80, 0x12, 0x88, 0x80, 0x13, 0x08, 0x80, 0x15, 0x08, 0x80, 0x04, 0x88, 0x80, 0x08, 0x48, 0x80, 0x10, 0x28, 0x80, 0x22, 0x08, 0x80, 0x02, 0x08, 0x80, 0x12, 0x48, 0x80, 0x12, 0x88, 0x80, 0x15, 0x08, 0x80, 0x04, 0x80, 0x80, 0x08, 0x40, 0x80, 0x30, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5263, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x07, 0x09, 0x00, 0x0D, 0x89, 0x00, 0x18, 0xC9, 0x00, 0x30, 0x69, 0x00, 0x6F, 0x89, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x22, 0x29, 0x00, 0x22, 0x29, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x01, 0x00, 0x07, 0x01, 0x00, 0x0D, 0x81, 0x00, 0x18, 0xC1, 0x00, 0x70, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5264, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x09, 0x00, 0x7F, 0xF9, 0x00, 0x10, 0x49, 0x00, 0x0D, 0x89, 0x00, 0x07, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x70, 0x79, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC1, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5265, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x09, 0x00, 0x01, 0x09, 0x00, 0x3F, 0x09, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x24, 0x89, 0x00, 0x35, 0x89, 0x00, 0x15, 0x09, 0x00, 0x0E, 0x01, 0x00, 0x15, 0x01, 0x00, 0x35, 0x81, 0x00, 0x64, 0xC1, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5266, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x04, 0x04, 0x80, 0x7F, 0xFC, 0x80, 0x08, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x12, 0x24, 0x80, 0x3F, 0xF4, 0x80, 0x52, 0x2C, 0x80, 0x12, 0x24, 0x80, 0x1F, 0xE4, 0x80, 0x12, 0x24, 0x80, 0x12, 0x24, 0x80, 0x1F, 0xE0, 0x80, 0x02, 0x08, 0x80, 0x03, 0x18, 0x80, 0x01, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5267, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x0F, 0xF1, 0x00, 0x08, 0x29, 0x00, 0x08, 0x29, 0x00, 0x0F, 0xE9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x49, 0x00, 0x0F, 0xE9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x29, 0x00, 0x0F, 0xF9, 0x00, 0x14, 0x29, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x27, 0xE5, 0x00, 0x04, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5269, { 0x00, 0x00, 0x00, 0x03, 0xC1, 0x00, 0x1E, 0x01, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x3F, 0xE9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x3F, 0xE9, 0x00, 0x06, 0x09, 0x00, 0x0B, 0x09, 0x00, 0x0A, 0x89, 0x00, 0x12, 0x41, 0x00, 0x22, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x526A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x08, 0x92, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x82, 0x00, 0x11, 0x86, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x03, 0x01, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x526E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xC4, 0x80, 0x20, 0x44, 0x80, 0x20, 0x44, 0x80, 0x27, 0xC4, 0x80, 0x24, 0x44, 0x80, 0x24, 0x44, 0x80, 0x7F, 0xE4, 0x80, 0x40, 0x24, 0x80, 0x4F, 0x24, 0x80, 0x49, 0x24, 0x80, 0x49, 0x20, 0x80, 0x49, 0x20, 0x80, 0x4F, 0x20, 0x80, 0x40, 0x20, 0x80, 0x40, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x526F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xE0, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE0, 0x80, 0x20, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5270, { 0x00, 0x00, 0x00, 0x01, 0xC1, 0x00, 0x1F, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x7F, 0xF9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x3F, 0xE9, 0x00, 0x0A, 0x09, 0x00, 0x0B, 0x89, 0x00, 0x1A, 0xC1, 0x00, 0x32, 0x61, 0x00, 0x62, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5271, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x1B, 0x09, 0x00, 0x71, 0xC9, 0x00, 0x1F, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xA9, 0x00, 0x24, 0x99, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8D, 0x00, 0x3F, 0x8B, 0x00, 0x0A, 0x09, 0x80, 0x1A, 0x09, 0x00, 0x13, 0x1B, 0x00, 0x31, 0x12, 0x00, 0x61, 0xB6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5272, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x3F, 0xE9, 0x00, 0x22, 0x29, 0x00, 0x03, 0xC9, 0x00, 0x1E, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC1, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5273, { 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x11, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x11, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x1B, 0x09, 0x00, 0x71, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5274, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x01, 0x00, 0x19, 0x01, 0x00, 0x0B, 0xC1, 0x00, 0x1E, 0x01, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x80, 0x04, 0x84, 0x80, 0x08, 0x64, 0x80, 0x3F, 0xC4, 0x80, 0x00, 0x04, 0x80, 0x0F, 0xC4, 0x80, 0x08, 0x44, 0x80, 0x0F, 0xC4, 0x80, 0x08, 0x44, 0x80, 0x0F, 0xC4, 0x80, 0x08, 0x04, 0x80, 0x0F, 0xC4, 0x80, 0x18, 0x44, 0x80, 0x1F, 0xC0, 0x80, 0x28, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5277, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x08, 0x84, 0x80, 0x07, 0x04, 0x80, 0x18, 0xC4, 0x80, 0x3F, 0xE4, 0x80, 0x20, 0x04, 0x80, 0x29, 0x04, 0x80, 0x2F, 0xC4, 0x80, 0x29, 0x04, 0x80, 0x21, 0x00, 0x80, 0x27, 0xC0, 0x80, 0x61, 0x00, 0x80, 0x41, 0x00, 0x80, 0x1F, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5278, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x04, 0x80, 0x7F, 0xF4, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE4, 0x80, 0x02, 0x44, 0x80, 0x0F, 0xE4, 0x80, 0x78, 0x30, 0x80, 0x00, 0x40, 0x80, 0x7F, 0xF0, 0x80, 0x10, 0x40, 0x80, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xC9, 0x00, 0x18, 0xC9, 0x00, 0x29, 0x49, 0x00, 0x18, 0xC9, 0x00, 0x29, 0x49, 0x00, 0x04, 0x49, 0x00, 0x0E, 0x09, 0x00, 0x1B, 0x89, 0x00, 0x70, 0xE9, 0x00, 0x04, 0x09, 0x00, 0x39, 0x01, 0x00, 0x06, 0x41, 0x00, 0x38, 0x81, 0x00, 0x03, 0x01, 0x00, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x527D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xF0, 0x80, 0x04, 0x84, 0x80, 0x1F, 0xE4, 0x80, 0x14, 0xA4, 0x80, 0x14, 0xA4, 0x80, 0x1F, 0xE4, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xE4, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xF4, 0x80, 0x02, 0x04, 0x80, 0x12, 0x44, 0x80, 0x12, 0x24, 0x80, 0x22, 0x10, 0x80, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x527F, { 0x00, 0x00, 0x00, 0x08, 0x90, 0x80, 0x11, 0x20, 0x80, 0x22, 0x44, 0x80, 0x11, 0x24, 0x80, 0x08, 0x94, 0x80, 0x1F, 0xF4, 0x80, 0x11, 0x14, 0x80, 0x1F, 0xF4, 0x80, 0x11, 0x14, 0x80, 0x1F, 0xF4, 0x80, 0x01, 0x04, 0x80, 0x3F, 0xFC, 0x80, 0x03, 0x84, 0x80, 0x05, 0x40, 0x80, 0x09, 0x20, 0x80, 0x31, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xC0, 0x80, 0x08, 0x84, 0x80, 0x05, 0x04, 0x80, 0x7F, 0xE4, 0x80, 0x0A, 0x44, 0x80, 0x12, 0x84, 0x80, 0x26, 0x04, 0x80, 0x7F, 0xE4, 0x80, 0x49, 0x24, 0x80, 0x51, 0x24, 0x80, 0x6F, 0xE0, 0x80, 0x49, 0x20, 0x80, 0x49, 0x20, 0x80, 0x4F, 0x20, 0x80, 0x40, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5281, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x09, 0x41, 0x00, 0x0F, 0xE1, 0x00, 0x09, 0x09, 0x00, 0x09, 0x49, 0x00, 0x1F, 0xE9, 0x00, 0x29, 0x09, 0x00, 0x09, 0x49, 0x00, 0x0F, 0xE9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x49, 0x00, 0x0F, 0xE1, 0x00, 0x08, 0x01, 0x00, 0x15, 0x21, 0x00, 0x12, 0x95, 0x00, 0x22, 0x92, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xFE, 0x80, 0x28, 0x82, 0x80, 0x2D, 0xC2, 0x80, 0x25, 0x42, 0x80, 0x3F, 0xFE, 0x80, 0x22, 0x46, 0x80, 0x2A, 0x92, 0x80, 0x2A, 0x92, 0x80, 0x2A, 0x92, 0x80, 0x2A, 0x92, 0x80, 0x2F, 0xB8, 0x80, 0x62, 0x28, 0x80, 0x46, 0x28, 0x80, 0x4C, 0x6C, 0x80, 0x18, 0x45, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5283, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x1F, 0xC0, 0x80, 0x02, 0x44, 0x80, 0x3F, 0xF4, 0x80, 0x02, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x3F, 0xE4, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE4, 0x80, 0x01, 0xF0, 0x80, 0x3E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xF2, 0x80, 0x24, 0x92, 0x80, 0x24, 0x92, 0x80, 0x3F, 0xF2, 0x80, 0x08, 0x02, 0x80, 0x1F, 0xFA, 0x80, 0x32, 0x0A, 0x80, 0x7F, 0xCA, 0x80, 0x12, 0x4A, 0x80, 0x12, 0x4A, 0x80, 0x1F, 0xC8, 0x80, 0x02, 0x88, 0x80, 0x0F, 0xD8, 0x80, 0x38, 0x50, 0x80, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5287, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x03, 0xF0, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xFC, 0x80, 0x12, 0xC4, 0x80, 0x1F, 0x14, 0x80, 0x13, 0xF4, 0x80, 0x10, 0x04, 0x80, 0x1F, 0xF4, 0x80, 0x13, 0x04, 0x80, 0x15, 0xA4, 0x80, 0x1A, 0xC4, 0x80, 0x15, 0xC4, 0x80, 0x2A, 0xA4, 0x80, 0x24, 0x90, 0x80, 0x2B, 0x09, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5288, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xBF, 0x80, 0x38, 0x84, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x06, 0x02, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5289, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x80, 0x19, 0xF4, 0x80, 0x10, 0x94, 0x80, 0x12, 0x94, 0x80, 0x11, 0x14, 0x80, 0x1F, 0x34, 0x80, 0x31, 0x84, 0x80, 0x02, 0x44, 0x80, 0x0C, 0x34, 0x80, 0x37, 0xC4, 0x80, 0x01, 0x04, 0x80, 0x1F, 0xE4, 0x80, 0x01, 0x44, 0x80, 0x09, 0x44, 0x80, 0x05, 0xF0, 0x80, 0x1F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x528A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x05, 0x04, 0x80, 0x18, 0xC4, 0x80, 0x77, 0x74, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x22, 0x24, 0x80, 0x2A, 0xA4, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xE4, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xC0, 0x80, 0x10, 0x40, 0x80, 0x1F, 0xC0, 0x80, 0x10, 0x40, 0x80, 0x1F, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x528C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x09, 0xF2, 0x80, 0x09, 0x02, 0x80, 0x3F, 0xFA, 0x80, 0x00, 0x52, 0x80, 0x00, 0x4A, 0x80, 0x3F, 0xFA, 0x80, 0x20, 0x22, 0x80, 0x2F, 0xA2, 0x80, 0x22, 0x22, 0x80, 0x2A, 0xAA, 0x80, 0x3A, 0xF0, 0x80, 0x23, 0x20, 0x80, 0x2C, 0x68, 0x80, 0x20, 0xA8, 0x80, 0x43, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x528D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x05, 0x00, 0x80, 0x08, 0x84, 0x80, 0x10, 0x44, 0x80, 0x20, 0x24, 0x80, 0x3F, 0xC4, 0x80, 0x00, 0x04, 0x80, 0x3D, 0xE4, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x3D, 0xE4, 0x80, 0x08, 0x44, 0x80, 0x08, 0x44, 0x80, 0x14, 0xA0, 0x80, 0x23, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5290, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x08, 0x82, 0x00, 0x09, 0x12, 0x00, 0x1F, 0xD2, 0x00, 0x29, 0x12, 0x00, 0x0F, 0xD2, 0x00, 0x09, 0x12, 0x00, 0x09, 0xD2, 0x00, 0x08, 0x12, 0x00, 0x1F, 0xD2, 0x00, 0x08, 0x82, 0x00, 0x05, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0D, 0x8A, 0x00, 0x30, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5291, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x3F, 0xF8, 0x80, 0x02, 0xB4, 0x80, 0x3D, 0x44, 0x80, 0x15, 0x64, 0x80, 0x15, 0x54, 0x80, 0x15, 0xEC, 0x80, 0x29, 0x04, 0x80, 0x10, 0x14, 0x80, 0x10, 0x14, 0x80, 0x1F, 0xF4, 0x80, 0x10, 0x14, 0x80, 0x1F, 0xF4, 0x80, 0x10, 0x10, 0x80, 0x20, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5292, { 0x00, 0x00, 0x00, 0x02, 0x3F, 0x80, 0x05, 0x04, 0x80, 0x08, 0x84, 0x80, 0x10, 0x44, 0x80, 0x20, 0x24, 0x80, 0x1F, 0xC4, 0x80, 0x00, 0x0C, 0x80, 0x3D, 0xF4, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x3D, 0xE4, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x14, 0xA8, 0x80, 0x23, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5293, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x81, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xC1, 0x00, 0x11, 0x01, 0x00, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5294, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x1B, 0x09, 0x00, 0x31, 0x89, 0x00, 0x60, 0xC9, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x29, 0x00, 0x3B, 0x99, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x8D, 0x00, 0x3B, 0x8B, 0x00, 0x00, 0x09, 0x80, 0x11, 0x09, 0x00, 0x11, 0x1B, 0x00, 0x3B, 0x92, 0x00, 0x6A, 0xB6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5295, { 0x00, 0x00, 0x00, 0x06, 0x18, 0x80, 0x3C, 0xF2, 0x80, 0x20, 0x82, 0x80, 0x3E, 0xFA, 0x80, 0x28, 0xA2, 0x80, 0x49, 0x22, 0x80, 0x00, 0x02, 0x80, 0x1F, 0xE2, 0x80, 0x10, 0x22, 0x80, 0x1F, 0xE2, 0x80, 0x10, 0x22, 0x80, 0x1F, 0xE0, 0x80, 0x10, 0x20, 0x80, 0x1F, 0xE0, 0x80, 0x08, 0x40, 0x80, 0x70, 0x39, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5296, { 0x00, 0x00, 0x00, 0x0F, 0x00, 0x80, 0x12, 0x04, 0x80, 0x7F, 0xC4, 0x80, 0x20, 0x44, 0x80, 0x3F, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x1D, 0xC4, 0x80, 0x11, 0x24, 0x80, 0x3C, 0xE4, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xC4, 0x80, 0x24, 0x40, 0x80, 0x3F, 0xC0, 0x80, 0x0A, 0x80, 0x80, 0x1A, 0x20, 0x80, 0x31, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5297, { 0x00, 0x00, 0x00, 0x28, 0xA0, 0x80, 0x3F, 0xFA, 0x80, 0x49, 0x22, 0x80, 0x3E, 0xFA, 0x80, 0x14, 0x52, 0x80, 0x16, 0x52, 0x80, 0x24, 0x9A, 0x80, 0x1F, 0xF2, 0x80, 0x10, 0x12, 0x80, 0x1F, 0xF2, 0x80, 0x10, 0x12, 0x80, 0x1F, 0xF0, 0x80, 0x10, 0x10, 0x80, 0x1F, 0xF0, 0x80, 0x08, 0x20, 0x80, 0x30, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5298, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x3F, 0xFA, 0x80, 0x24, 0x22, 0x80, 0x3E, 0xFA, 0x80, 0x24, 0x22, 0x80, 0x2D, 0x6A, 0x80, 0x2D, 0x6A, 0x80, 0x35, 0xAA, 0x80, 0x22, 0x42, 0x80, 0x2E, 0x72, 0x80, 0x22, 0x42, 0x80, 0x2E, 0x70, 0x80, 0x22, 0x40, 0x80, 0x6E, 0x70, 0x80, 0x42, 0x40, 0x80, 0x04, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x529A, { 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x80, 0x20, 0x0A, 0x80, 0x3F, 0xFA, 0x80, 0x20, 0x82, 0x80, 0x2E, 0xBA, 0x80, 0x20, 0x82, 0x80, 0x2F, 0xF2, 0x80, 0x2A, 0x52, 0x80, 0x2F, 0xFA, 0x80, 0x25, 0x0A, 0x80, 0x3F, 0xEA, 0x80, 0x29, 0x28, 0x80, 0x2F, 0xE8, 0x80, 0x21, 0x58, 0x80, 0x43, 0xD0, 0x80, 0x1E, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x529B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x04, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x529C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x18, 0x90, 0x00, 0x10, 0x90, 0x00, 0x11, 0x90, 0x00, 0x31, 0x10, 0x80, 0x21, 0x19, 0x80, 0x63, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x529D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x01, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x04, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x11, 0x42, 0x00, 0x21, 0x42, 0x00, 0x40, 0x82, 0x00, 0x01, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x529E, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0x18, 0x00, 0x19, 0x16, 0x00, 0x11, 0x13, 0x00, 0x22, 0x11, 0x00, 0x42, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x50, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x529F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0F, 0x21, 0x00, 0x38, 0x21, 0x00, 0x00, 0x41, 0x00, 0x00, 0x82, 0x00, 0x03, 0x02, 0x00, 0x0C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A0, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0F, 0x80, 0x1F, 0xE8, 0x80, 0x02, 0x28, 0x80, 0x02, 0x28, 0x80, 0x02, 0x28, 0x80, 0x02, 0x28, 0x80, 0x02, 0x28, 0x80, 0x04, 0x28, 0x80, 0x04, 0x28, 0x80, 0x04, 0x28, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x11, 0x8F, 0x80, 0x20, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x52A1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x13, 0x60, 0x00, 0x20, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0D, 0x18, 0x00, 0x71, 0x07, 0x00, 0x0F, 0xFA, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x50, 0x00, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xD0, 0x00, 0x08, 0x12, 0x00, 0x08, 0x7F, 0x00, 0x09, 0x12, 0x00, 0x0F, 0x92, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x25, 0x42, 0x00, 0x42, 0x54, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A3, { 0x00, 0x00, 0x00, 0x02, 0x44, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x40, 0x80, 0x00, 0x42, 0x00, 0x01, 0xCC, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x3E, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x06, 0x02, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A4, { 0x00, 0x00, 0x00, 0x01, 0x84, 0x00, 0x1E, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x3F, 0x80, 0x1F, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x11, 0x10, 0x80, 0x21, 0x11, 0x00, 0x21, 0x21, 0x00, 0x21, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A5, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x11, 0x0C, 0x80, 0x11, 0x48, 0x80, 0x31, 0x99, 0x80, 0x21, 0x31, 0x00, 0x60, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x01, 0x82, 0x00, 0x03, 0x06, 0x00, 0x0E, 0x04, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x88, 0x80, 0x18, 0x98, 0x80, 0x11, 0x91, 0x80, 0x31, 0x31, 0x00, 0x67, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A7, { 0x00, 0x00, 0x00, 0x01, 0x88, 0x00, 0x07, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x7F, 0xC8, 0x80, 0x04, 0x08, 0x80, 0x04, 0x18, 0x80, 0x04, 0x10, 0x80, 0x04, 0x31, 0x80, 0x04, 0x61, 0x00, 0x1C, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x00, 0x22, 0x00, 0x02, 0xFF, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x10, 0x22, 0x00, 0x12, 0x22, 0x00, 0x21, 0x42, 0x00, 0x7F, 0x42, 0x00, 0x20, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52A9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x21, 0x00, 0x17, 0xA1, 0x00, 0x38, 0x41, 0x00, 0x00, 0x8E, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52AA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x21, 0x00, 0x12, 0x12, 0x00, 0x12, 0x0C, 0x00, 0x2C, 0x0C, 0x00, 0x24, 0x32, 0x00, 0x0A, 0xC1, 0x80, 0x11, 0x00, 0x00, 0x20, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x04, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52AB, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xDF, 0x80, 0x02, 0x04, 0x80, 0x02, 0x04, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x04, 0x04, 0x80, 0x04, 0x04, 0x80, 0x08, 0x88, 0x80, 0x08, 0x48, 0x80, 0x13, 0xF0, 0x80, 0x3C, 0x10, 0x80, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52AC, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0xFF, 0x80, 0x60, 0x88, 0x80, 0x3C, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3C, 0x98, 0x80, 0x00, 0x90, 0x80, 0x01, 0x91, 0x80, 0x01, 0x31, 0x00, 0x07, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52AD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0xBF, 0x80, 0x11, 0x88, 0x80, 0x31, 0x08, 0x80, 0x67, 0x08, 0x80, 0x00, 0x08, 0x80, 0x3F, 0x08, 0x80, 0x21, 0x08, 0x80, 0x21, 0x18, 0x80, 0x21, 0x10, 0x80, 0x21, 0x11, 0x80, 0x21, 0x31, 0x00, 0x3F, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52AF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x80, 0x1F, 0x08, 0x80, 0x11, 0x08, 0x80, 0x31, 0x08, 0x80, 0x31, 0x08, 0x80, 0x51, 0x18, 0x80, 0x11, 0x10, 0x80, 0x11, 0x11, 0x80, 0x1F, 0x31, 0x00, 0x00, 0x21, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x22, 0x21, 0x00, 0x3E, 0x23, 0x00, 0x00, 0x62, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x99, 0x00, 0x64, 0x93, 0x00, 0x4D, 0x92, 0x00, 0x49, 0x32, 0x00, 0x1B, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x01, 0x10, 0x00, 0x02, 0x12, 0x00, 0x06, 0x7F, 0x00, 0x09, 0x12, 0x00, 0x10, 0x92, 0x00, 0x20, 0x12, 0x00, 0x7F, 0x12, 0x00, 0x04, 0x12, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x07, 0xC2, 0x00, 0x38, 0x82, 0x00, 0x11, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B3, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x41, 0x0A, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x50, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B4, { 0x00, 0x00, 0x00, 0x10, 0x81, 0x00, 0x18, 0xC3, 0x00, 0x08, 0x46, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x01, 0x82, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x04, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B5, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B6, { 0x00, 0x00, 0x00, 0x01, 0x88, 0x00, 0x07, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x3F, 0x80, 0x3F, 0xC8, 0x80, 0x20, 0x08, 0x80, 0x20, 0x08, 0x80, 0x20, 0x08, 0x80, 0x2F, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x48, 0x98, 0x80, 0x08, 0x91, 0x80, 0x08, 0x91, 0x00, 0x0F, 0xB3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B7, { 0x00, 0x00, 0x00, 0x22, 0x10, 0x00, 0x36, 0x10, 0x00, 0x14, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0F, 0x11, 0x00, 0x78, 0x31, 0x00, 0x08, 0x21, 0x00, 0x18, 0x23, 0x00, 0x10, 0x62, 0x00, 0x30, 0x42, 0x00, 0x60, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x04, 0x18, 0x80, 0x04, 0x10, 0x80, 0x07, 0x91, 0x80, 0x1C, 0x31, 0x00, 0x70, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52B9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x11, 0x3F, 0x80, 0x31, 0x88, 0x80, 0x60, 0xC8, 0x80, 0x11, 0x08, 0x80, 0x1B, 0x08, 0x80, 0x0A, 0x08, 0x80, 0x0E, 0x18, 0x80, 0x04, 0x10, 0x80, 0x0E, 0x11, 0x80, 0x1B, 0x31, 0x00, 0x31, 0x21, 0x00, 0x60, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52BA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x19, 0x08, 0x00, 0x11, 0x08, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x44, 0x09, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xD9, 0x00, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x04, 0x32, 0x00, 0x04, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52BB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x40, 0x10, 0x00, 0x40, 0x10, 0x00, 0x5F, 0x7F, 0x00, 0x44, 0x11, 0x00, 0x44, 0x11, 0x00, 0x5F, 0x11, 0x00, 0x44, 0x11, 0x00, 0x44, 0x11, 0x00, 0x44, 0x11, 0x00, 0x5F, 0x11, 0x00, 0x40, 0x33, 0x00, 0x40, 0x22, 0x00, 0x7F, 0xA2, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52BC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x08, 0x80, 0x08, 0x08, 0x80, 0x3F, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x3F, 0x08, 0x80, 0x21, 0x18, 0x80, 0x21, 0x10, 0x80, 0x21, 0x11, 0x80, 0x21, 0x31, 0x00, 0x3F, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52BD, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x18, 0x89, 0x00, 0x35, 0x89, 0x00, 0x03, 0x09, 0x00, 0x06, 0x01, 0x00, 0x1C, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x07, 0x03, 0x00, 0x3C, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52BE, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x02, 0x1F, 0x80, 0x14, 0x84, 0x80, 0x08, 0x84, 0x80, 0x05, 0x04, 0x80, 0x02, 0x44, 0x80, 0x04, 0x44, 0x80, 0x08, 0x88, 0x80, 0x31, 0x08, 0x80, 0x02, 0x90, 0x80, 0x04, 0x50, 0x80, 0x08, 0x61, 0x00, 0x30, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52BF, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3E, 0xFE, 0x00, 0x04, 0x24, 0x00, 0x0E, 0x24, 0x00, 0x74, 0xC4, 0x00, 0x04, 0x65, 0x00, 0x14, 0x95, 0x00, 0x09, 0x03, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x44, 0x00, 0x08, 0x28, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C0, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x80, 0x20, 0x84, 0x80, 0x20, 0x84, 0x80, 0x20, 0x84, 0x80, 0x3F, 0x84, 0x80, 0x0A, 0x04, 0x80, 0x0A, 0x04, 0x80, 0x1A, 0x0D, 0x80, 0x12, 0x49, 0x00, 0x33, 0x89, 0x00, 0x66, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xE8, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x88, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x3F, 0xC8, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x07, 0xE1, 0x00, 0x38, 0x41, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C3, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x24, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x00, 0x84, 0x80, 0x03, 0x04, 0x80, 0x02, 0xE8, 0x80, 0x3F, 0x08, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x21, 0x00, 0x0E, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C4, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x20, 0x04, 0x00, 0x60, 0x1F, 0x80, 0x1F, 0xC4, 0x80, 0x10, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x7F, 0xE4, 0x80, 0x20, 0x44, 0x80, 0x24, 0x44, 0x80, 0x24, 0x4C, 0x80, 0x3F, 0xE9, 0x80, 0x00, 0x99, 0x00, 0x07, 0xB7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xE8, 0x00, 0x02, 0x3F, 0x80, 0x1F, 0xC8, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x06, 0x08, 0x80, 0x07, 0x08, 0x80, 0x0A, 0x90, 0x80, 0x0A, 0x50, 0x80, 0x12, 0x23, 0x00, 0x22, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0xBF, 0x80, 0x3F, 0x88, 0x80, 0x20, 0x88, 0x80, 0x20, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x20, 0x08, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x25, 0x18, 0x80, 0x3F, 0x11, 0x80, 0x61, 0xB1, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x01, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x40, 0x80, 0x00, 0x80, 0x80, 0x03, 0x01, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x12, 0x08, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x99, 0x80, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x25, 0xB3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52C9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0F, 0x88, 0x00, 0x11, 0x08, 0x00, 0x22, 0x3F, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xD1, 0x00, 0x05, 0x11, 0x00, 0x05, 0x21, 0x00, 0x09, 0x46, 0x00, 0x09, 0x80, 0x00, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x52CB, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x12, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xA2, 0x00, 0x0A, 0x22, 0x00, 0x11, 0xCA, 0x00, 0x60, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52CC, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x35, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x08, 0x80, 0x7F, 0xC8, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x71, 0x48, 0x80, 0x11, 0x08, 0x80, 0x17, 0x19, 0x80, 0x10, 0x51, 0x00, 0x10, 0xD1, 0x00, 0x0F, 0xB3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52CD, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0xC4, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x0A, 0x84, 0x80, 0x12, 0x88, 0x80, 0x12, 0x48, 0x80, 0x22, 0x53, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52CF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x20, 0x88, 0x00, 0x31, 0xBF, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x7F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x20, 0x88, 0x80, 0x20, 0x99, 0x80, 0x20, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0xB3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x01, 0x10, 0x00, 0x02, 0x12, 0x00, 0x3F, 0x7F, 0x00, 0x02, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x7F, 0xC2, 0x00, 0x00, 0x54, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x04, 0x08, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x55, 0x48, 0x80, 0x55, 0x48, 0x80, 0x0E, 0x08, 0x80, 0x0E, 0x08, 0x80, 0x15, 0x08, 0x80, 0x35, 0x99, 0x80, 0x64, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D2, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x7F, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x42, 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xBF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2E, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2E, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x98, 0x80, 0x2A, 0x91, 0x80, 0x3F, 0xB1, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D5, { 0x00, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x1E, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x02, 0x1F, 0x80, 0x1F, 0xC4, 0x80, 0x12, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x12, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x08, 0x80, 0x03, 0xE8, 0x80, 0x3C, 0x11, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D6, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x20, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x44, 0x80, 0x3F, 0xC4, 0x80, 0x00, 0x04, 0x80, 0x1F, 0x84, 0x80, 0x10, 0x84, 0x80, 0x1F, 0x84, 0x80, 0x10, 0x88, 0x80, 0x1F, 0x88, 0x80, 0x10, 0x90, 0x80, 0x1F, 0x91, 0x00, 0x10, 0xA1, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D7, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x7F, 0x80, 0x3F, 0x08, 0x80, 0x21, 0x08, 0x80, 0x3F, 0x18, 0x80, 0x21, 0x10, 0x80, 0x3F, 0xB1, 0x80, 0x60, 0x61, 0x00, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D8, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xDF, 0x00, 0x08, 0x89, 0x00, 0x0F, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0F, 0x89, 0x00, 0x08, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x15, 0x09, 0x00, 0x15, 0x49, 0x00, 0x1D, 0xD1, 0x00, 0x10, 0x11, 0x00, 0x1F, 0xE1, 0x00, 0x10, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52D9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x01, 0x3F, 0x80, 0x0A, 0x31, 0x00, 0x04, 0x4A, 0x00, 0x3F, 0xC4, 0x00, 0x04, 0x8A, 0x00, 0x05, 0x11, 0x00, 0x0C, 0x30, 0x80, 0x0C, 0xD0, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x11, 0x00, 0x24, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x4E, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52DB, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x00, 0x04, 0x80, 0x3F, 0x84, 0x80, 0x20, 0x84, 0x80, 0x3F, 0x84, 0x80, 0x20, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x20, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x00, 0x10, 0x80, 0x11, 0x10, 0x80, 0x20, 0xA3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52DC, { 0x00, 0x00, 0x00, 0x0E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x33, 0x08, 0x00, 0x69, 0x88, 0x00, 0x1A, 0x3F, 0x80, 0x13, 0x08, 0x80, 0x3D, 0x08, 0x80, 0x00, 0x08, 0x80, 0x7F, 0x88, 0x80, 0x19, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x4C, 0x98, 0x80, 0x19, 0x90, 0x80, 0x2A, 0x91, 0x80, 0x4C, 0xB1, 0x00, 0x19, 0xA7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52DD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x54, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x28, 0x00, 0x12, 0x46, 0x00, 0x13, 0x91, 0x80, 0x1E, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x12, 0x21, 0x00, 0x12, 0x41, 0x00, 0x22, 0x82, 0x00, 0x27, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52DE, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0A, 0x55, 0x00, 0x0A, 0x96, 0x00, 0x13, 0x24, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x04, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52DF, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0x85, 0x80, 0x01, 0x04, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC4, 0x00, 0x29, 0x44, 0x00, 0x4A, 0x44, 0x00, 0x29, 0x5F, 0x80, 0x4A, 0x44, 0x80, 0x04, 0x44, 0x80, 0x0A, 0x04, 0x80, 0x11, 0x04, 0x80, 0x64, 0xC4, 0x80, 0x09, 0x04, 0x80, 0x32, 0x44, 0x80, 0x0C, 0x8C, 0x80, 0x31, 0x09, 0x80, 0x06, 0x19, 0x00, 0x38, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x0A, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x2A, 0xBF, 0x80, 0x2A, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x00, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x00, 0x08, 0x80, 0x7F, 0xC8, 0x80, 0x04, 0x08, 0x80, 0x15, 0x19, 0x80, 0x35, 0x91, 0x00, 0x64, 0xD1, 0x00, 0x0C, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E2, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x04, 0x7E, 0x00, 0x3F, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x17, 0xB2, 0x00, 0x24, 0x12, 0x80, 0x3F, 0x2B, 0x80, 0x04, 0x40, 0x00, 0x07, 0xC0, 0x00, 0x38, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x81, 0x00, 0x03, 0x02, 0x00, 0x3C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E3, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xDF, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x10, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x10, 0x44, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x1F, 0xD0, 0x80, 0x10, 0x50, 0x80, 0x20, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E4, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xBF, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x12, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xC8, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xF0, 0x80, 0x02, 0x11, 0x00, 0x03, 0xA1, 0x00, 0x1C, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7E, 0x62, 0x00, 0x02, 0x4F, 0x00, 0x3E, 0xF9, 0x80, 0x20, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x88, 0x80, 0x02, 0xFF, 0x80, 0x06, 0x09, 0x00, 0x05, 0xFF, 0x80, 0x1C, 0x00, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x06, 0x03, 0x00, 0x78, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E6, { 0x00, 0x00, 0x00, 0x24, 0x88, 0x00, 0x49, 0x08, 0x00, 0x6D, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x7F, 0xC8, 0x80, 0x0E, 0x08, 0x80, 0x15, 0x18, 0x80, 0x34, 0x91, 0x80, 0x64, 0x31, 0x00, 0x04, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E7, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x08, 0x00, 0x44, 0x3F, 0x80, 0x3F, 0xC8, 0x80, 0x09, 0x08, 0x80, 0x12, 0x08, 0x80, 0x3F, 0xC8, 0x80, 0x52, 0x18, 0x80, 0x1F, 0x90, 0x80, 0x12, 0x10, 0x80, 0x1F, 0xB1, 0x80, 0x12, 0x21, 0x00, 0x1F, 0xE1, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E8, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x31, 0x04, 0x00, 0x22, 0x04, 0x00, 0x7F, 0xDF, 0x80, 0x24, 0x44, 0x80, 0x24, 0x44, 0x80, 0x3F, 0xC4, 0x80, 0x04, 0x04, 0x80, 0x18, 0x44, 0x80, 0x64, 0xC4, 0x80, 0x1A, 0x8C, 0x80, 0x67, 0x08, 0x80, 0x1A, 0x89, 0x80, 0x62, 0x99, 0x00, 0x0E, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52E9, { 0x00, 0x00, 0x00, 0x24, 0x84, 0x00, 0x7F, 0xE4, 0x00, 0x24, 0x84, 0x00, 0x27, 0x84, 0x00, 0x20, 0x1F, 0x80, 0x3F, 0xC4, 0x80, 0x00, 0x04, 0x80, 0x3F, 0x84, 0x80, 0x20, 0x84, 0x80, 0x3F, 0x84, 0x80, 0x20, 0x84, 0x80, 0x3F, 0x8C, 0x80, 0x20, 0x88, 0x80, 0x3F, 0x89, 0x80, 0x11, 0x19, 0x00, 0x60, 0xD3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52EA, { 0x00, 0x00, 0x00, 0x03, 0x84, 0x00, 0x3E, 0x04, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xE4, 0x00, 0x09, 0x1F, 0x80, 0x1F, 0x84, 0x80, 0x69, 0x64, 0x80, 0x0F, 0x04, 0x80, 0x00, 0x04, 0x80, 0x3F, 0xC4, 0x80, 0x20, 0x44, 0x80, 0x2F, 0x4C, 0x80, 0x29, 0x48, 0x80, 0x2F, 0x49, 0x80, 0x20, 0x59, 0x00, 0x21, 0xD3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52EC, { 0x00, 0x00, 0x00, 0x15, 0x04, 0x00, 0x24, 0x84, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x09, 0x1F, 0x80, 0x7F, 0xE4, 0x80, 0x10, 0x84, 0x80, 0x24, 0x44, 0x80, 0x59, 0x24, 0x80, 0x0A, 0x04, 0x80, 0x04, 0x84, 0x80, 0x3F, 0xCC, 0x80, 0x04, 0x48, 0x80, 0x15, 0x09, 0x80, 0x35, 0x99, 0x00, 0x64, 0xD3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F0, { 0x00, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x15, 0x00, 0x3F, 0x95, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x95, 0x00, 0x18, 0x95, 0x00, 0x31, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x21, 0x04, 0x00, 0x7B, 0xC2, 0x00, 0x29, 0x44, 0x00, 0x29, 0x55, 0x00, 0x29, 0x54, 0x80, 0x29, 0x55, 0x00, 0x29, 0x45, 0x00, 0x5A, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F1, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x11, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x80, 0x3F, 0x84, 0x80, 0x24, 0x84, 0x80, 0x3F, 0x84, 0x80, 0x04, 0x04, 0x80, 0x7F, 0xC4, 0x80, 0x44, 0x4C, 0x80, 0x45, 0x48, 0x80, 0x5F, 0x49, 0x80, 0x41, 0x59, 0x00, 0x40, 0xD3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F2, { 0x00, 0x00, 0x00, 0x01, 0x88, 0x00, 0x3F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x98, 0x80, 0x04, 0x11, 0x80, 0x3F, 0x91, 0x00, 0x04, 0x33, 0x00, 0x7F, 0xC0, 0x00, 0x22, 0x11, 0x00, 0x41, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x52F3, { 0x00, 0x00, 0x00, 0x01, 0xC4, 0x00, 0x1E, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x1A, 0xC4, 0x80, 0x17, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x15, 0x50, 0x80, 0x25, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F4, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x03, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x24, 0x2F, 0x80, 0x3F, 0x84, 0x80, 0x24, 0x24, 0x80, 0x2F, 0xE4, 0x80, 0x2A, 0x44, 0x80, 0x2F, 0xC4, 0x80, 0x2A, 0x44, 0x80, 0x2F, 0xC4, 0x80, 0x22, 0x0C, 0x80, 0x55, 0x49, 0x80, 0x14, 0xA9, 0x00, 0x23, 0x9B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F5, { 0x00, 0x00, 0x00, 0x1F, 0xF4, 0x00, 0x12, 0x84, 0x00, 0x1F, 0xF4, 0x00, 0x12, 0x84, 0x00, 0x17, 0xDF, 0x80, 0x15, 0x44, 0x80, 0x17, 0xC4, 0x80, 0x15, 0x44, 0x80, 0x17, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x1F, 0xE4, 0x80, 0x19, 0x24, 0x80, 0x19, 0xE4, 0x80, 0x1F, 0x68, 0x80, 0x28, 0x28, 0x80, 0x28, 0x73, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F6, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x1B, 0xE4, 0x00, 0x31, 0x0F, 0x80, 0x4A, 0x49, 0x00, 0x1B, 0xF9, 0x00, 0x30, 0x25, 0x00, 0x53, 0xE7, 0x00, 0x12, 0x22, 0x00, 0x13, 0xE7, 0x00, 0x12, 0x2D, 0x80, 0x12, 0x68, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x06, 0x03, 0x00, 0x78, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F7, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC4, 0x00, 0x4A, 0x5F, 0x80, 0x7B, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x7F, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x7F, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x7F, 0xC4, 0x80, 0x19, 0x04, 0x80, 0x71, 0x44, 0x80, 0x1C, 0x88, 0x80, 0x70, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x52F8, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xDF, 0x80, 0x12, 0x44, 0x80, 0x1F, 0xC4, 0x80, 0x04, 0x84, 0x80, 0x09, 0x04, 0x80, 0x1F, 0xE4, 0x80, 0x31, 0x04, 0x80, 0x1F, 0xE4, 0x80, 0x11, 0x08, 0x80, 0x1F, 0xE8, 0x80, 0x11, 0x08, 0x80, 0x1F, 0xD1, 0x00, 0x10, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52F9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x01, 0x00, 0x60, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52FA, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x10, 0x00, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x80, 0x07, 0xF0, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52FB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0xF1, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52FE, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x11, 0x01, 0x00, 0x22, 0x01, 0x00, 0x02, 0x01, 0x00, 0x04, 0x01, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x13, 0xF1, 0x00, 0x3C, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x52FF, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x21, 0x09, 0x00, 0x01, 0x11, 0x00, 0x02, 0x11, 0x00, 0x04, 0x21, 0x00, 0x08, 0x21, 0x00, 0x30, 0x41, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x04, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5300, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x01, 0x00, 0x6F, 0xF1, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0xF1, 0x00, 0x07, 0x83, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5301, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x14, 0x42, 0x00, 0x36, 0xC2, 0x00, 0x62, 0x82, 0x00, 0x03, 0x82, 0x00, 0x01, 0x06, 0x00, 0x03, 0xC4, 0x00, 0x06, 0x74, 0x00, 0x0C, 0x1C, 0x00, 0x18, 0x0F, 0x80, 0x70, 0x08, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5302, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x00, 0x34, 0x01, 0x00, 0x64, 0x31, 0x00, 0x04, 0xE1, 0x00, 0x07, 0x81, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x09, 0x00, 0x06, 0x19, 0x00, 0x03, 0xF3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5303, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x81, 0x00, 0x68, 0x81, 0x00, 0x08, 0x81, 0x00, 0x09, 0xC1, 0x00, 0x09, 0x41, 0x00, 0x0B, 0x63, 0x00, 0x0E, 0x32, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xF6, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5305, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x20, 0x01, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x01, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5306, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x33, 0x11, 0x00, 0x62, 0x31, 0x00, 0x0E, 0x21, 0x00, 0x07, 0x21, 0x00, 0x0D, 0xE1, 0x00, 0x18, 0x43, 0x00, 0x30, 0xE2, 0x00, 0x01, 0xB2, 0x00, 0x07, 0x06, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5308, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x80, 0x28, 0x14, 0x80, 0x0B, 0x14, 0x80, 0x08, 0xA4, 0x80, 0x08, 0x44, 0x80, 0x08, 0xA4, 0x80, 0x09, 0x14, 0x80, 0x0A, 0x14, 0x80, 0x0F, 0xFC, 0x80, 0x08, 0x05, 0x00, 0x08, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x530A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x00, 0x80, 0x10, 0x80, 0x80, 0x34, 0x90, 0x80, 0x66, 0xB0, 0x80, 0x02, 0xA0, 0x80, 0x00, 0x80, 0x80, 0x1F, 0xFC, 0x80, 0x01, 0x80, 0x80, 0x03, 0xE0, 0x80, 0x06, 0xB1, 0x80, 0x0C, 0x99, 0x00, 0x10, 0x83, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x530B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x01, 0x00, 0x34, 0x01, 0x00, 0x67, 0xF9, 0x00, 0x0C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x1F, 0xFD, 0x00, 0x00, 0x81, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xFB, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x530C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x31, 0xC1, 0x00, 0x63, 0x61, 0x00, 0x06, 0x31, 0x00, 0x1C, 0x1D, 0x00, 0x03, 0xE1, 0x00, 0x00, 0x01, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x07, 0xF2, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x530D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x20, 0x81, 0x00, 0x1F, 0xFD, 0x00, 0x00, 0x81, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x99, 0x00, 0x00, 0x82, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x530F, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x81, 0x00, 0x21, 0x7D, 0x00, 0x1F, 0x45, 0x00, 0x00, 0x45, 0x00, 0x3F, 0xFD, 0x00, 0x08, 0x41, 0x00, 0x1F, 0x46, 0x00, 0x11, 0x40, 0x00, 0x01, 0x40, 0x80, 0x02, 0x7F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5310, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x1F, 0xFC, 0x80, 0x23, 0xF0, 0x80, 0x02, 0x10, 0x80, 0x03, 0xF0, 0x80, 0x00, 0x00, 0x80, 0x07, 0xF8, 0x80, 0x04, 0x88, 0x80, 0x07, 0xF8, 0x80, 0x04, 0x89, 0x00, 0x07, 0xF9, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5311, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x32, 0x00, 0x80, 0x64, 0x7C, 0x80, 0x0F, 0x04, 0x80, 0x09, 0x04, 0x80, 0x0F, 0x7C, 0x80, 0x09, 0x40, 0x80, 0x0F, 0x40, 0x80, 0x09, 0x7C, 0x80, 0x3F, 0x04, 0x80, 0x05, 0x04, 0x80, 0x0D, 0x05, 0x80, 0x19, 0x0D, 0x00, 0x03, 0x3B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5313, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x32, 0x00, 0x80, 0x64, 0x38, 0x80, 0x1F, 0x28, 0x80, 0x11, 0x4E, 0x80, 0x1F, 0x00, 0x80, 0x11, 0x7C, 0x80, 0x1F, 0x24, 0x80, 0x00, 0x2C, 0x80, 0x13, 0x18, 0x80, 0x1C, 0x10, 0x80, 0x11, 0x39, 0x80, 0x1F, 0x6D, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5315, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x01, 0x80, 0x10, 0x0E, 0x00, 0x10, 0x70, 0x00, 0x13, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5316, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x21, 0x00, 0x18, 0x22, 0x00, 0x18, 0x24, 0x00, 0x28, 0x28, 0x00, 0x28, 0x30, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5317, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x11, 0x80, 0x01, 0x16, 0x00, 0x3F, 0x18, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x03, 0x10, 0x00, 0x0D, 0x10, 0x80, 0x31, 0x10, 0x80, 0x01, 0x1F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5318, { 0x00, 0x00, 0x00, 0x40, 0x49, 0x00, 0x40, 0x92, 0x00, 0x41, 0x24, 0x00, 0x40, 0x92, 0x00, 0x4C, 0x49, 0x00, 0x58, 0x00, 0x00, 0x70, 0x20, 0x00, 0x41, 0xFF, 0x00, 0x41, 0x01, 0x00, 0x41, 0x45, 0x00, 0x41, 0x29, 0x00, 0x41, 0x11, 0x00, 0x45, 0x29, 0x00, 0x6D, 0x45, 0x00, 0x39, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5319, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xC8, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xC8, 0x00, 0x08, 0x49, 0x80, 0x0F, 0xCE, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0xE8, 0x80, 0x09, 0x0F, 0x80, 0x09, 0x00, 0x00, 0x15, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x531A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x531B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x21, 0xF8, 0x00, 0x23, 0x08, 0x00, 0x26, 0x18, 0x00, 0x20, 0x30, 0x00, 0x20, 0x20, 0x00, 0x20, 0x70, 0x00, 0x20, 0xD8, 0x00, 0x21, 0x8C, 0x00, 0x2F, 0x07, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x531C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x22, 0x40, 0x00, 0x22, 0x4C, 0x00, 0x22, 0x74, 0x00, 0x23, 0xC4, 0x00, 0x2E, 0x44, 0x00, 0x22, 0x4C, 0x00, 0x22, 0x40, 0x00, 0x22, 0x02, 0x00, 0x23, 0x06, 0x00, 0x21, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x531D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x5C, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x531E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x531F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x21, 0xF0, 0x00, 0x21, 0x10, 0x00, 0x21, 0x10, 0x00, 0x23, 0x10, 0x00, 0x22, 0x12, 0x00, 0x26, 0x12, 0x00, 0x2C, 0x0E, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xE0, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x12, 0x08, 0x00, 0x14, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5321, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x00, 0x00, 0x23, 0x10, 0x00, 0x22, 0x78, 0x00, 0x27, 0x8C, 0x00, 0x20, 0x00, 0x00, 0x21, 0x10, 0x00, 0x2F, 0xFE, 0x00, 0x21, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x24, 0x10, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5326, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x25, 0x20, 0x00, 0x3F, 0xA8, 0x00, 0x28, 0x7C, 0x00, 0x2A, 0x28, 0x00, 0x3F, 0xA8, 0x00, 0x22, 0x28, 0x00, 0x22, 0x28, 0x00, 0x3F, 0xAA, 0x00, 0x22, 0x2A, 0x00, 0x22, 0x46, 0x00, 0x22, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x22, 0x48, 0x00, 0x22, 0x48, 0x00, 0x25, 0x54, 0x00, 0x28, 0xE2, 0x00, 0x21, 0xB0, 0x00, 0x23, 0x18, 0x00, 0x2E, 0x0E, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x21, 0x08, 0x00, 0x25, 0x08, 0x00, 0x25, 0x08, 0x00, 0x27, 0x7F, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x2F, 0x08, 0x00, 0x25, 0x08, 0x00, 0x25, 0x08, 0x00, 0x29, 0x3E, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5329, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x23, 0xF8, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x532A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x17, 0xCF, 0x80, 0x10, 0x48, 0x00, 0x13, 0xCF, 0x00, 0x10, 0x48, 0x00, 0x13, 0xCF, 0x80, 0x1C, 0x48, 0x00, 0x10, 0x88, 0x00, 0x11, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x532B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x27, 0xFE, 0x00, 0x2C, 0x92, 0x00, 0x21, 0xB6, 0x00, 0x23, 0x64, 0x00, 0x20, 0x0C, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x532C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x21, 0xF0, 0x00, 0x27, 0x1C, 0x00, 0x3C, 0xE7, 0x00, 0x20, 0x00, 0x00, 0x2F, 0x89, 0x00, 0x2C, 0x9B, 0x00, 0x2B, 0x92, 0x00, 0x2C, 0x92, 0x00, 0x2B, 0x9A, 0x00, 0x28, 0x8B, 0x00, 0x29, 0x89, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x532D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x2F, 0x90, 0x00, 0x22, 0x7C, 0x00, 0x2F, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2F, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2F, 0x94, 0x00, 0x22, 0x35, 0x00, 0x2F, 0xA5, 0x00, 0x22, 0x63, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x532E, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x04, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x21, 0xB0, 0x00, 0x26, 0x0C, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x532F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x14, 0x24, 0x00, 0x12, 0x24, 0x00, 0x18, 0x48, 0x00, 0x14, 0xFF, 0x00, 0x11, 0x48, 0x00, 0x10, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x14, 0x48, 0x00, 0x14, 0x7F, 0x80, 0x18, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5330, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xBE, 0x00, 0x28, 0xA2, 0x00, 0x2F, 0xBE, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x23, 0xFC, 0x00, 0x22, 0x44, 0x00, 0x23, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x21, 0x08, 0x00, 0x21, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x21, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x21, 0xF8, 0x00, 0x23, 0x0C, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x2F, 0xFE, 0x00, 0x21, 0x10, 0x00, 0x27, 0xFC, 0x00, 0x3D, 0x17, 0x00, 0x21, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x27, 0xBC, 0x00, 0x24, 0xA4, 0x00, 0x27, 0xBC, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x20, 0xA0, 0x00, 0x23, 0x18, 0x00, 0x2C, 0xE6, 0x00, 0x20, 0x00, 0x00, 0x27, 0xBC, 0x00, 0x24, 0xA4, 0x00, 0x27, 0xBC, 0x00, 0x22, 0x08, 0x00, 0x27, 0x1C, 0x00, 0x2D, 0xB6, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5335, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xFE, 0x00, 0x29, 0x12, 0x00, 0x2F, 0xFE, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x23, 0x18, 0x00, 0x26, 0x0C, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x12, 0x1F, 0x00, 0x14, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x533A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x04, 0x00, 0x26, 0x0C, 0x00, 0x23, 0x08, 0x00, 0x21, 0x98, 0x00, 0x20, 0xF0, 0x00, 0x20, 0x60, 0x00, 0x20, 0xF0, 0x00, 0x21, 0x98, 0x00, 0x23, 0x0C, 0x00, 0x2E, 0x04, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x533B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x2C, 0x40, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0xA0, 0x00, 0x21, 0xB0, 0x00, 0x21, 0x10, 0x00, 0x23, 0x18, 0x00, 0x26, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x533C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x70, 0x00, 0x10, 0xD8, 0x00, 0x11, 0x8C, 0x00, 0x17, 0x07, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x18, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x533D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x80, 0x00, 0x2F, 0xFE, 0x00, 0x21, 0x10, 0x00, 0x23, 0xE0, 0x00, 0x20, 0xB8, 0x00, 0x27, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x533E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x16, 0x49, 0x00, 0x1B, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x4B, 0x00, 0x18, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x533F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0xA8, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x11, 0xFE, 0x00, 0x13, 0x02, 0x00, 0x15, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5340, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x23, 0xF8, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x23, 0xF8, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xBE, 0x00, 0x28, 0xA2, 0x00, 0x28, 0xA2, 0x00, 0x2F, 0xBE, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5341, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5342, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x7F, 0xF4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x06, 0x00, 0x02, 0x02, 0x80, 0x02, 0x03, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5343, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5344, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5345, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x18, 0x84, 0x00, 0x10, 0x84, 0x00, 0x30, 0x84, 0x00, 0x60, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5346, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0x10, 0x00, 0x03, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x80, 0x0C, 0x19, 0x80, 0x38, 0x8F, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5347, { 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x03, 0x88, 0x00, 0x1E, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5348, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5349, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x02, 0x48, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x534A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x534B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x534C, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x534D, { 0x00, 0x00, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x534E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x04, 0x2C, 0x00, 0x04, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x14, 0xA0, 0x00, 0x25, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x9E, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x534F, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x7D, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x12, 0x46, 0x00, 0x12, 0x45, 0x00, 0x12, 0x45, 0x00, 0x14, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x12, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5351, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5352, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x05, 0x14, 0x00, 0x08, 0xA2, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5353, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5354, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x21, 0x00, 0x3E, 0x42, 0x00, 0x09, 0x8C, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x0A, 0xCB, 0x00, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5355, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5356, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0x44, 0x00, 0x11, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x04, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5357, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x09, 0x00, 0x11, 0x11, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFD, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5358, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x19, 0x86, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5359, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0xC4, 0x00, 0x30, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x535A, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x12, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x535B, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x40, 0x08, 0x00, 0x29, 0xE5, 0x00, 0x10, 0x02, 0x00, 0x25, 0xE4, 0x80, 0x7C, 0x0F, 0x80, 0x11, 0xE2, 0x00, 0x55, 0x2A, 0x80, 0x55, 0xEA, 0x80, 0x10, 0x82, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x535C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x90, 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x535E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x42, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x535F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x50, 0x00, 0x24, 0x4C, 0x00, 0x24, 0x46, 0x00, 0x24, 0x42, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5360, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5361, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x86, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5362, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5363, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5364, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFC, 0x00, 0x20, 0x08, 0x00, 0x28, 0x28, 0x00, 0x24, 0x68, 0x00, 0x22, 0x88, 0x00, 0x21, 0x08, 0x00, 0x21, 0x88, 0x00, 0x22, 0x48, 0x00, 0x24, 0x28, 0x00, 0x28, 0x18, 0x00, 0x3F, 0xF8, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5365, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x20, 0x04, 0x00, 0x20, 0x94, 0x00, 0x2C, 0x94, 0x00, 0x23, 0x24, 0x00, 0x2C, 0xC4, 0x00, 0x21, 0x24, 0x00, 0x26, 0x14, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5366, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x06, 0x00, 0x3F, 0xE5, 0x00, 0x02, 0x04, 0x80, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5367, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x3F, 0x30, 0x00, 0x21, 0x28, 0x00, 0x21, 0x24, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x25, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5368, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x08, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x08, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5369, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x78, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x536B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x14, 0x00, 0x01, 0x08, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x536C, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x2F, 0x41, 0x00, 0x78, 0x41, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x536D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x41, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x536E, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0E, 0x00, 0x32, 0x00, 0x00, 0x22, 0x00, 0x80, 0x63, 0x01, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x536F, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x3F, 0x00, 0x10, 0x21, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x17, 0xA1, 0x00, 0x38, 0xA1, 0x00, 0x01, 0x27, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5370, { 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x38, 0x3F, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0x2E, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5371, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x1C, 0x00, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5372, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x80, 0x08, 0x50, 0x80, 0x08, 0x50, 0x80, 0x18, 0x50, 0x80, 0x10, 0xD0, 0x80, 0x30, 0x90, 0x80, 0x63, 0x90, 0x80, 0x00, 0x10, 0x80, 0x3F, 0xD0, 0x80, 0x20, 0x50, 0x80, 0x20, 0x50, 0x80, 0x20, 0x53, 0x80, 0x20, 0x50, 0x00, 0x20, 0x50, 0x00, 0x3F, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5373, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x20, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x27, 0xAF, 0x00, 0x3C, 0xA0, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5374, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x1F, 0xD1, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x08, 0x91, 0x00, 0x08, 0x51, 0x00, 0x13, 0xD1, 0x00, 0x3C, 0x33, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5375, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x1E, 0x1F, 0x80, 0x10, 0x10, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x18, 0x94, 0x80, 0x14, 0x92, 0x80, 0x12, 0x91, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x13, 0x90, 0x80, 0x3D, 0x10, 0x80, 0x01, 0x13, 0x80, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5377, { 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x41, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x18, 0x03, 0x00, 0x67, 0xF8, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x38, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5378, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0x21, 0x00, 0x44, 0x21, 0x00, 0x04, 0x21, 0x00, 0x7F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x24, 0x21, 0x00, 0x27, 0xA1, 0x00, 0x24, 0x21, 0x00, 0x24, 0x21, 0x00, 0x27, 0xA7, 0x00, 0x3C, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5379, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x1F, 0x00, 0x08, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xD1, 0x00, 0x2B, 0x91, 0x00, 0x2E, 0x17, 0x00, 0x38, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x537A, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x20, 0x00, 0x00, 0xC4, 0x00, 0x1E, 0xD8, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x98, 0x00, 0x19, 0x87, 0x00, 0x60, 0x82, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x32, 0x00, 0x08, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x537B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x1F, 0x00, 0x1B, 0x11, 0x00, 0x31, 0x91, 0x00, 0x64, 0xD1, 0x00, 0x0E, 0x11, 0x00, 0x1B, 0x11, 0x00, 0x31, 0x91, 0x00, 0x60, 0xD1, 0x00, 0x00, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0x97, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x537D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x00, 0x21, 0x00, 0x20, 0x21, 0x00, 0x23, 0xA1, 0x00, 0x3C, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0xA7, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x537E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x4A, 0x51, 0x00, 0x7B, 0xD1, 0x00, 0x00, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x08, 0x11, 0x00, 0x10, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x97, 0x00, 0x00, 0x90, 0x00, 0x01, 0x90, 0x00, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x537F, { 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x18, 0x47, 0x80, 0x12, 0xF4, 0x80, 0x12, 0x94, 0x80, 0x12, 0x94, 0x80, 0x12, 0xF4, 0x80, 0x12, 0x94, 0x80, 0x12, 0x94, 0x80, 0x12, 0xF4, 0x80, 0x12, 0x04, 0x80, 0x12, 0x84, 0x80, 0x3C, 0x9C, 0x80, 0x04, 0xE4, 0x80, 0x08, 0x85, 0x80, 0x10, 0x94, 0x00, 0x20, 0xF4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5382, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5383, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x20, 0x00, 0x30, 0x40, 0x00, 0x5F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x3C, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5385, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x41, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5386, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0x02, 0x00, 0x21, 0x02, 0x00, 0x22, 0x22, 0x00, 0x44, 0x14, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5387, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x3C, 0x00, 0x17, 0xE0, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x30, 0x40, 0x00, 0x20, 0x41, 0x00, 0x60, 0x63, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5388, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x30, 0x20, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5389, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x44, 0x00, 0x44, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x538B, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x50, 0x00, 0x10, 0x4C, 0x00, 0x10, 0x44, 0x00, 0x20, 0x40, 0x00, 0x20, 0x42, 0x00, 0x4F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x538C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x50, 0x00, 0x10, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x10, 0x00, 0x21, 0x10, 0x00, 0x22, 0x08, 0x00, 0x44, 0x07, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x538D, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x84, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x12, 0x28, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x538E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x13, 0xF0, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x18, 0x00, 0x13, 0xC8, 0x00, 0x36, 0x0C, 0x00, 0x20, 0x05, 0x00, 0x6F, 0xF7, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x11, 0x84, 0x00, 0x11, 0x3E, 0x00, 0x17, 0xE3, 0x00, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5395, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xC2, 0x00, 0x14, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0x52, 0x00, 0x11, 0x12, 0x00, 0x22, 0x82, 0x00, 0x22, 0x42, 0x00, 0x44, 0x4A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x22, 0x82, 0x00, 0x22, 0x46, 0x00, 0x22, 0x0C, 0x00, 0x2F, 0xD9, 0x00, 0x22, 0x03, 0x00, 0x22, 0x06, 0x00, 0x22, 0x1C, 0x80, 0x27, 0x01, 0x80, 0x25, 0x03, 0x00, 0x65, 0x06, 0x00, 0x4D, 0x1C, 0x80, 0x49, 0x81, 0x80, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x539A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x539D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x21, 0x02, 0x00, 0x61, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x539F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x12, 0x22, 0x00, 0x24, 0x21, 0x00, 0x28, 0x20, 0x80, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x01, 0x00, 0x17, 0xC1, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x17, 0xC9, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x17, 0xC9, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x17, 0xC9, 0x00, 0x20, 0x09, 0x00, 0x24, 0x41, 0x00, 0x28, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x80, 0x17, 0xB1, 0x80, 0x10, 0xAB, 0x00, 0x31, 0xAC, 0x00, 0x23, 0x26, 0x00, 0x6E, 0x23, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A2, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x02, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0xE2, 0x00, 0x11, 0x22, 0x00, 0x13, 0x3E, 0x00, 0x13, 0xA2, 0x00, 0x15, 0x62, 0x00, 0x15, 0x3E, 0x00, 0x19, 0x22, 0x00, 0x21, 0x22, 0x00, 0x21, 0x22, 0x00, 0x41, 0x3E, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A3, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x0F, 0x8F, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x21, 0x8E, 0x00, 0x2F, 0x38, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2F, 0xBF, 0x00, 0x22, 0x08, 0x00, 0x27, 0x1C, 0x00, 0x26, 0x9C, 0x00, 0x6A, 0xAA, 0x00, 0x4A, 0x2A, 0x00, 0x52, 0x49, 0x00, 0x02, 0x08, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x14, 0x48, 0x00, 0x12, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x14, 0x80, 0x15, 0x65, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x17, 0xCA, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x12, 0x00, 0x21, 0x11, 0x00, 0x22, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFE, 0x00, 0x12, 0x84, 0x00, 0x2C, 0x58, 0x00, 0x20, 0xF0, 0x00, 0x27, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x20, 0x02, 0x00, 0x2F, 0xC2, 0x00, 0x20, 0x02, 0x00, 0x27, 0xBF, 0x80, 0x24, 0x82, 0x00, 0x24, 0x92, 0x00, 0x24, 0x9A, 0x00, 0x27, 0x8A, 0x00, 0x20, 0x02, 0x00, 0x64, 0x82, 0x00, 0x44, 0x82, 0x00, 0x43, 0xC2, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x2F, 0x9F, 0x00, 0x28, 0x94, 0x00, 0x28, 0x94, 0x00, 0x2F, 0x94, 0x00, 0x28, 0x94, 0x00, 0x28, 0xBF, 0x80, 0x2F, 0x84, 0x00, 0x28, 0x0C, 0x00, 0x29, 0x0C, 0x00, 0x69, 0x1C, 0x00, 0x4F, 0x94, 0x80, 0x58, 0xB4, 0x80, 0x00, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x2F, 0xFF, 0x00, 0x21, 0x08, 0x00, 0x21, 0xF8, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFE, 0x00, 0x60, 0x40, 0x00, 0x43, 0xFC, 0x00, 0x40, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x27, 0xC8, 0x00, 0x21, 0x1F, 0x80, 0x27, 0xD1, 0x00, 0x21, 0x09, 0x00, 0x2F, 0xEB, 0x00, 0x22, 0x0A, 0x00, 0x23, 0xCE, 0x00, 0x22, 0x44, 0x00, 0x62, 0x44, 0x00, 0x46, 0x4E, 0x00, 0x44, 0x4B, 0x00, 0x0C, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x17, 0xC6, 0x00, 0x14, 0x45, 0x00, 0x17, 0xC4, 0x00, 0x10, 0x3F, 0x80, 0x17, 0xC4, 0x00, 0x14, 0x44, 0x00, 0x17, 0xC4, 0x00, 0x14, 0x44, 0x00, 0x17, 0xCA, 0x00, 0x24, 0x4A, 0x00, 0x24, 0x51, 0x00, 0x24, 0xD1, 0x00, 0x20, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x24, 0x83, 0x00, 0x2F, 0xDE, 0x00, 0x24, 0x90, 0x00, 0x27, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x24, 0x92, 0x00, 0x27, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x6F, 0xD2, 0x00, 0x44, 0x92, 0x00, 0x4C, 0xD2, 0x00, 0x18, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x23, 0x8E, 0x00, 0x2D, 0x55, 0x80, 0x21, 0x04, 0x00, 0x20, 0x00, 0x00, 0x22, 0xC0, 0x00, 0x22, 0x63, 0x00, 0x62, 0x21, 0x80, 0x42, 0x04, 0x80, 0x43, 0x0C, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x25, 0x44, 0x00, 0x2D, 0x64, 0x00, 0x29, 0x24, 0x00, 0x21, 0x0F, 0x80, 0x2F, 0xE9, 0x00, 0x28, 0x39, 0x00, 0x2B, 0xA5, 0x00, 0x2A, 0xA7, 0x00, 0x2A, 0xA2, 0x00, 0x6B, 0xA2, 0x00, 0x48, 0x27, 0x00, 0x48, 0x25, 0x00, 0x08, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x2F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x68, 0x20, 0x80, 0x48, 0x28, 0x80, 0x4B, 0xFC, 0x80, 0x08, 0x05, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53B3, { 0x00, 0x00, 0x00, 0x10, 0x81, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x2F, 0x88, 0x00, 0x22, 0x08, 0x00, 0x3F, 0xDF, 0x80, 0x28, 0x92, 0x00, 0x2F, 0xB2, 0x00, 0x28, 0x8A, 0x00, 0x2F, 0x8E, 0x00, 0x28, 0x84, 0x00, 0x68, 0x8E, 0x00, 0x4F, 0x8A, 0x00, 0x58, 0x9B, 0x00, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53B4, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x85, 0x00, 0x2F, 0x84, 0x80, 0x20, 0x3F, 0x80, 0x2F, 0x84, 0x00, 0x28, 0x8E, 0x00, 0x2F, 0x8A, 0x00, 0x28, 0x9B, 0x00, 0x29, 0xB1, 0x80, 0x2F, 0xFE, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFE, 0x00, 0x64, 0x42, 0x00, 0x47, 0xFE, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53B5, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x31, 0x24, 0x00, 0x23, 0x26, 0x00, 0x66, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x22, 0x22, 0x00, 0x2F, 0xAF, 0x80, 0x28, 0xA8, 0x80, 0x2F, 0xAF, 0x80, 0x62, 0x22, 0x00, 0x4A, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53B6, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x06, 0x00, 0x18, 0x02, 0x00, 0x10, 0x7F, 0x00, 0x1F, 0xC1, 0x80, 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53B7, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0xC8, 0x00, 0x08, 0x8C, 0x00, 0x18, 0x84, 0x00, 0x31, 0x86, 0x00, 0x61, 0x02, 0x00, 0x01, 0x3F, 0x00, 0x03, 0xE1, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53B8, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x14, 0x12, 0x00, 0x34, 0x12, 0x00, 0x26, 0x13, 0x00, 0x22, 0x31, 0x00, 0x22, 0x21, 0x00, 0x2F, 0x27, 0x80, 0x79, 0x7C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53BA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x71, 0x83, 0x80, 0x01, 0x10, 0x00, 0x03, 0x18, 0x00, 0x06, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x0F, 0x84, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53BB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53BD, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x06, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x19, 0x19, 0x00, 0x11, 0x11, 0x00, 0x31, 0x31, 0x00, 0x27, 0xA7, 0x80, 0x7C, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53BF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53C0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x06, 0x00, 0x0F, 0xFF, 0x00, 0x78, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53C1, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x27, 0x00, 0x67, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53C2, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x04, 0x0C, 0x00, 0x0F, 0xF4, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x1C, 0xCE, 0x00, 0x71, 0x83, 0x80, 0x07, 0x30, 0x00, 0x1C, 0x60, 0x00, 0x03, 0xC6, 0x00, 0x1E, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53C3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x04, 0x00, 0x02, 0x3E, 0x00, 0x1F, 0xC1, 0x00, 0x04, 0x04, 0x00, 0x09, 0x09, 0x00, 0x13, 0x93, 0x80, 0x3C, 0xFC, 0x80, 0x00, 0x90, 0x00, 0x01, 0x28, 0x00, 0x06, 0x46, 0x00, 0x3B, 0x99, 0x80, 0x00, 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53C5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x10, 0x08, 0x00, 0x24, 0x91, 0x00, 0x7D, 0xDE, 0x80, 0x07, 0x70, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x80, 0x00, 0x08, 0x86, 0x00, 0x08, 0xB3, 0x00, 0x18, 0x99, 0x00, 0x30, 0x88, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x02, 0x00, 0x06, 0x02, 0x00, 0x09, 0x04, 0x00, 0x11, 0x04, 0x00, 0x00, 0x88, 0x00, 0x00, 0x90, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x01, 0x04, 0x00, 0x06, 0x02, 0x00, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x04, 0x44, 0x00, 0x02, 0x24, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0x90, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x06, 0x10, 0x00, 0x06, 0x20, 0x00, 0x05, 0x3E, 0x00, 0x05, 0x02, 0x00, 0x04, 0x82, 0x00, 0x04, 0x84, 0x00, 0x04, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0x38, 0x00, 0x08, 0x10, 0x00, 0x10, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53CB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x02, 0x00, 0x05, 0x04, 0x00, 0x04, 0x88, 0x00, 0x08, 0x50, 0x00, 0x08, 0x30, 0x00, 0x10, 0x48, 0x00, 0x21, 0x86, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x01, 0x21, 0x00, 0x01, 0x21, 0x00, 0x01, 0x23, 0x00, 0x03, 0x22, 0x00, 0x32, 0x32, 0x00, 0x1A, 0x16, 0x00, 0x0E, 0x14, 0x00, 0x04, 0x1C, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x1C, 0x00, 0x19, 0x34, 0x00, 0x10, 0x66, 0x00, 0x30, 0xC3, 0x00, 0x63, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x23, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53CE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x41, 0x00, 0x24, 0x43, 0x00, 0x24, 0x42, 0x00, 0x24, 0x66, 0x00, 0x24, 0x24, 0x00, 0x24, 0x2C, 0x00, 0x24, 0x38, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x64, 0x2C, 0x00, 0x04, 0x66, 0x00, 0x04, 0xC3, 0x00, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53CF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x03, 0x08, 0x00, 0x05, 0x10, 0x00, 0x04, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x10, 0xA0, 0x00, 0x21, 0x18, 0x00, 0x46, 0x07, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53D2, { 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x21, 0x21, 0x00, 0x33, 0x33, 0x00, 0x16, 0x16, 0x00, 0x0C, 0x0C, 0x00, 0x36, 0x36, 0x00, 0x63, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x07, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xCA, 0x00, 0x04, 0x0A, 0x00, 0x15, 0x0C, 0x00, 0x15, 0x04, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x8A, 0x00, 0x24, 0x12, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x21, 0x21, 0x00, 0x33, 0x33, 0x00, 0x16, 0x16, 0x00, 0x0C, 0x0C, 0x00, 0x36, 0x36, 0x00, 0x63, 0x63, 0x80, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x21, 0x21, 0x00, 0x33, 0x33, 0x00, 0x16, 0x16, 0x00, 0x0C, 0x0C, 0x00, 0x36, 0x36, 0x00, 0x63, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x14, 0x00, 0x31, 0x22, 0x00, 0x01, 0x41, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D7, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x04, 0x22, 0x00, 0x02, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0xB0, 0x00, 0x03, 0x0C, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53D8, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x26, 0x00, 0x22, 0x22, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x60, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53D9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x0B, 0x21, 0x00, 0x19, 0xA1, 0x00, 0x10, 0xA3, 0x00, 0x3F, 0x32, 0x00, 0x64, 0x16, 0x00, 0x04, 0x14, 0x00, 0x7F, 0x9C, 0x00, 0x04, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x1C, 0x00, 0x35, 0x94, 0x00, 0x24, 0xB6, 0x00, 0x64, 0x23, 0x00, 0x0C, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x42, 0x02, 0x00, 0x42, 0x02, 0x00, 0x42, 0x02, 0x00, 0x7E, 0xFE, 0x00, 0x40, 0x00, 0x00, 0x41, 0xFE, 0x00, 0x7E, 0x42, 0x00, 0x40, 0x46, 0x00, 0x40, 0x6C, 0x00, 0x40, 0x38, 0x00, 0x7E, 0x10, 0x00, 0x40, 0x38, 0x00, 0x40, 0xEC, 0x00, 0x43, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53DB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x29, 0x40, 0x00, 0x28, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x61, 0x00, 0x08, 0x51, 0x00, 0x08, 0x52, 0x00, 0x0F, 0x4A, 0x00, 0x38, 0x4C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x8C, 0x00, 0x10, 0x8A, 0x00, 0x10, 0x91, 0x00, 0x21, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53DD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x47, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x00, 0x10, 0x51, 0x00, 0x10, 0x51, 0x00, 0x10, 0x5B, 0x00, 0x34, 0x4A, 0x00, 0x24, 0xCE, 0x00, 0x3E, 0x84, 0x00, 0x62, 0x8E, 0x00, 0x01, 0x9B, 0x00, 0x03, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x11, 0x00, 0x20, 0x1B, 0x00, 0x2F, 0x8A, 0x00, 0x20, 0x0A, 0x00, 0x2F, 0x8E, 0x00, 0x22, 0x04, 0x00, 0x2A, 0x84, 0x00, 0x6A, 0x8E, 0x00, 0x4A, 0x8A, 0x00, 0x52, 0x9B, 0x00, 0x06, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53DF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x9E, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1C, 0x9E, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x0C, 0x00, 0x03, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53E0, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x12, 0x12, 0x00, 0x7F, 0xFF, 0x80, 0x48, 0x04, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53E1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x02, 0x1F, 0x00, 0x3F, 0xE9, 0x00, 0x20, 0x29, 0x00, 0x07, 0x09, 0x00, 0x08, 0x8A, 0x00, 0x10, 0x4A, 0x00, 0x08, 0x86, 0x00, 0x1F, 0xC4, 0x00, 0x28, 0xA4, 0x00, 0x0F, 0x8A, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0x89, 0x00, 0x08, 0x91, 0x00, 0x0F, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53E2, { 0x00, 0x00, 0x00, 0x04, 0xA4, 0x00, 0x02, 0xA8, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x0F, 0xA1, 0x00, 0x08, 0x92, 0x00, 0x0F, 0x8C, 0x00, 0x08, 0x8C, 0x00, 0x0F, 0x92, 0x00, 0x38, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53E4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53E5, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x03, 0x03, 0x00, 0x06, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x03, 0x03, 0x00, 0x06, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x10, 0x80, 0x44, 0x10, 0x80, 0x44, 0x10, 0x80, 0x44, 0x10, 0x80, 0x44, 0x10, 0x80, 0x44, 0x10, 0x80, 0x44, 0x30, 0x80, 0x44, 0x20, 0x80, 0x44, 0x21, 0x80, 0x7C, 0x61, 0x00, 0x00, 0x41, 0x00, 0x00, 0xC3, 0x00, 0x01, 0x82, 0x00, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53EB, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x47, 0x80, 0x3C, 0x7C, 0x00, 0x03, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x84, 0x00, 0x3D, 0x04, 0x00, 0x25, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x01, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x7C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x80, 0x3E, 0x41, 0x00, 0x22, 0x42, 0x00, 0x22, 0x44, 0x00, 0x22, 0x48, 0x00, 0x22, 0x50, 0x00, 0x22, 0x60, 0x00, 0x22, 0x40, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x80, 0x00, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x80, 0x10, 0x40, 0x80, 0x10, 0x40, 0x80, 0x10, 0x40, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x06, 0x70, 0x00, 0x38, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53F3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x14, 0x02, 0x00, 0x24, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x23, 0xF0, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x23, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xF9, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0F, 0xF1, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0F, 0xF1, 0x00, 0x08, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0x04, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x3C, 0x50, 0x00, 0x24, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x07, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x38, 0x00, 0x44, 0x28, 0x00, 0x44, 0x28, 0x00, 0x44, 0x6C, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x82, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x53FB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x0A, 0x00, 0x24, 0x12, 0x00, 0x24, 0x22, 0x00, 0x24, 0x42, 0x00, 0x24, 0xC2, 0x00, 0x3D, 0x82, 0x00, 0x24, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x53FD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x3E, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x25, 0x09, 0x00, 0x01, 0x09, 0x00, 0x02, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5402, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5403, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x7F, 0x80, 0x24, 0x80, 0x00, 0x25, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x06, 0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x40, 0x00, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5404, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x08, 0x00, 0x09, 0x10, 0x00, 0x30, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xB0, 0x00, 0x03, 0x0C, 0x00, 0x0C, 0x03, 0x80, 0x37, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5406, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x40, 0x00, 0x24, 0x42, 0x00, 0x24, 0x82, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x84, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5408, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5409, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x540A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x540B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7C, 0x08, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x47, 0xFF, 0x00, 0x44, 0x08, 0x00, 0x44, 0x08, 0x00, 0x45, 0x88, 0x00, 0x44, 0xC8, 0x00, 0x44, 0x48, 0x00, 0x44, 0x08, 0x00, 0x7C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x540C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x540D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x02, 0x02, 0x00, 0x04, 0x04, 0x00, 0x19, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x07, 0xFF, 0x00, 0x3A, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x540E, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x540F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x40, 0x00, 0x02, 0x40, 0x00, 0x01, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x38, 0x00, 0x38, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5410, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5411, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5412, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x3E, 0xF0, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x22, 0x00, 0x24, 0x3F, 0x00, 0x27, 0xE0, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x1C, 0x00, 0x44, 0x16, 0x00, 0x44, 0x13, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5415, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x3E, 0x86, 0x00, 0x24, 0x48, 0x00, 0x24, 0x50, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5417, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x05, 0xFC, 0x00, 0x3E, 0x08, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x8A, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xFA, 0x00, 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x541A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x11, 0x00, 0x48, 0x11, 0x00, 0x48, 0x11, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x11, 0x00, 0x48, 0x11, 0x00, 0x48, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x78, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x541B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x12, 0x01, 0x00, 0x22, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x541D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xB0, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x541E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x17, 0xF7, 0x00, 0x24, 0x12, 0x00, 0x44, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x541F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x82, 0x00, 0x27, 0x01, 0x80, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x02, 0x00, 0x24, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5420, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x20, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5421, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x79, 0x10, 0x00, 0x49, 0x11, 0x00, 0x49, 0x13, 0x00, 0x49, 0xDE, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x79, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x80, 0x01, 0xD9, 0x80, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5423, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x24, 0x50, 0x00, 0x24, 0x40, 0x00, 0x25, 0x44, 0x00, 0x25, 0x42, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x3D, 0x45, 0x00, 0x22, 0x45, 0x00, 0x00, 0x44, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x58, 0x00, 0x02, 0x46, 0x00, 0x0C, 0x41, 0x00, 0x30, 0x40, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5427, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x00, 0x00, 0x45, 0x00, 0x00, 0x45, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x01, 0x00, 0x80, 0x01, 0x81, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5428, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0x00, 0x7C, 0x1E, 0x00, 0x45, 0xF0, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x92, 0x00, 0x44, 0x92, 0x00, 0x44, 0x92, 0x00, 0x44, 0x92, 0x00, 0x44, 0x92, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x80, 0x00, 0x19, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x38, 0x84, 0x00, 0x28, 0x82, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x00, 0x80, 0x2D, 0xFE, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x38, 0x42, 0x00, 0x28, 0x42, 0x00, 0x20, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x04, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x542A, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x50, 0x00, 0x78, 0xD0, 0x00, 0x48, 0x92, 0x00, 0x48, 0x96, 0x00, 0x49, 0x9C, 0x00, 0x4A, 0xB0, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x78, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x91, 0x00, 0x00, 0x93, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x542B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x542C, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x7C, 0xF8, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0xFF, 0x80, 0x44, 0x84, 0x00, 0x44, 0x84, 0x00, 0x44, 0x84, 0x00, 0x44, 0x84, 0x00, 0x44, 0x84, 0x00, 0x7D, 0x84, 0x00, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x06, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x542D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x7C, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x80, 0x01, 0x84, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x542E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x7C, 0x42, 0x00, 0x44, 0xC2, 0x00, 0x44, 0x9F, 0x00, 0x47, 0xF5, 0x80, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x80, 0x01, 0x84, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x542F, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x3E, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x34, 0x01, 0x00, 0x24, 0x01, 0x00, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5431, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xC6, 0x00, 0x44, 0x6C, 0x00, 0x44, 0x38, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5432, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0xFA, 0x00, 0x3E, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x25, 0xF2, 0x00, 0x25, 0x02, 0x00, 0x25, 0x02, 0x00, 0x25, 0x12, 0x00, 0x25, 0xFA, 0x00, 0x24, 0x12, 0x00, 0x3C, 0x12, 0x00, 0x24, 0x12, 0x00, 0x01, 0x12, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5435, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x54, 0x00, 0x44, 0x56, 0x00, 0x44, 0xD3, 0x00, 0x45, 0x91, 0x80, 0x44, 0x10, 0x00, 0x44, 0x11, 0x00, 0x44, 0x13, 0x00, 0x44, 0x72, 0x00, 0x7C, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5436, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x39, 0x00, 0x49, 0x29, 0x00, 0x49, 0x6D, 0x00, 0x49, 0x45, 0x00, 0x79, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x3C, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFF, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xA2, 0x00, 0x3D, 0x12, 0x00, 0x25, 0x14, 0x00, 0x02, 0x08, 0x00, 0x02, 0x18, 0x00, 0x04, 0x24, 0x00, 0x08, 0xC2, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5439, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x91, 0x00, 0x25, 0x12, 0x00, 0x26, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x84, 0x00, 0x01, 0x02, 0x00, 0x02, 0x01, 0x00, 0x0C, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x543B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x92, 0x80, 0x25, 0x12, 0x80, 0x24, 0x24, 0x80, 0x24, 0x24, 0x80, 0x24, 0x48, 0x80, 0x24, 0x88, 0x80, 0x3D, 0x10, 0x80, 0x24, 0x20, 0x80, 0x20, 0x41, 0x00, 0x00, 0x81, 0x00, 0x03, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x543C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x39, 0xF4, 0x00, 0x28, 0x24, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x5C, 0x00, 0x28, 0xE4, 0x00, 0x2F, 0x44, 0x00, 0x38, 0x44, 0x00, 0x28, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x80, 0x00, 0x47, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x543D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x7C, 0x90, 0x00, 0x44, 0x90, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x10, 0x00, 0x47, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x543E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x14, 0x00, 0x44, 0x34, 0x00, 0x7C, 0x24, 0x00, 0x00, 0x64, 0x00, 0x00, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x79, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x26, 0x00, 0x79, 0x20, 0x00, 0x03, 0x20, 0x00, 0x02, 0x20, 0x80, 0x06, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5444, { 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x0F, 0x00, 0x03, 0x01, 0x00, 0x06, 0x01, 0x00, 0x1C, 0x03, 0x00, 0x70, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5447, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x83, 0x00, 0x7E, 0xC6, 0x00, 0x02, 0xEC, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x544A, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x544B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x3C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x01, 0x04, 0x00, 0x02, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x544D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0xC4, 0x00, 0x7C, 0x86, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9F, 0x00, 0x01, 0xF1, 0x80, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x544E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x7C, 0x8C, 0x00, 0x00, 0x84, 0x00, 0x01, 0x86, 0x00, 0x01, 0x02, 0x00, 0x03, 0x03, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x544F, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x72, 0x00, 0x7B, 0xC2, 0x00, 0x48, 0x42, 0x00, 0x48, 0x42, 0x00, 0x48, 0x42, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x42, 0x00, 0x48, 0x42, 0x00, 0x48, 0x42, 0x00, 0x48, 0x42, 0x00, 0x78, 0x42, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x82, 0x00, 0x01, 0x82, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5450, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x52, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x8A, 0x00, 0x25, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x25, 0x02, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5451, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5452, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x3E, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x90, 0x00, 0x3C, 0x90, 0x00, 0x25, 0x11, 0x00, 0x01, 0x11, 0x00, 0x02, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5453, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4A, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x48, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0x40, 0x00, 0x24, 0x80, 0x00, 0x3D, 0x00, 0x00, 0x25, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5454, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x3C, 0xC8, 0x00, 0x25, 0x24, 0x00, 0x02, 0x24, 0x00, 0x04, 0x03, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5455, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x3F, 0x00, 0x00, 0x25, 0x84, 0x00, 0x25, 0x44, 0x00, 0x25, 0x28, 0x00, 0x25, 0x28, 0x00, 0x25, 0x10, 0x00, 0x25, 0x10, 0x00, 0x25, 0x28, 0x00, 0x25, 0x28, 0x00, 0x25, 0x44, 0x00, 0x3D, 0x84, 0x00, 0x25, 0x02, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5456, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x3F, 0x20, 0x00, 0x25, 0x20, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x3D, 0x22, 0x00, 0x22, 0x42, 0x00, 0x02, 0x42, 0x00, 0x04, 0x94, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5457, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x3E, 0x82, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x20, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x83, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5458, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5459, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x42, 0x00, 0x21, 0x22, 0x00, 0x22, 0x12, 0x00, 0x24, 0x12, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x545B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0x07, 0x00, 0x26, 0xFA, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0xA8, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x545C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x44, 0x00, 0x3E, 0xFE, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x94, 0x00, 0x24, 0x88, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x3C, 0x12, 0x00, 0x23, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x545E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x7C, 0x01, 0x00, 0x44, 0x01, 0x00, 0x44, 0xF9, 0x00, 0x44, 0x01, 0x00, 0x44, 0x01, 0x00, 0x44, 0xF9, 0x00, 0x44, 0x89, 0x00, 0x44, 0x89, 0x00, 0x44, 0x89, 0x00, 0x7C, 0xF9, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x545F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x20, 0x00, 0x44, 0x60, 0x00, 0x44, 0xC4, 0x00, 0x45, 0x8C, 0x00, 0x44, 0xC8, 0x00, 0x44, 0x58, 0x00, 0x44, 0x30, 0x00, 0x7C, 0x20, 0x00, 0x00, 0x62, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x9F, 0x00, 0x03, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x00, 0x00, 0x49, 0x20, 0x00, 0x49, 0x21, 0x00, 0x49, 0x27, 0x00, 0x49, 0x3C, 0x00, 0x79, 0x20, 0x00, 0x03, 0x20, 0x00, 0x02, 0x20, 0x80, 0x06, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5464, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x45, 0x83, 0x00, 0x47, 0x7D, 0x80, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x21, 0x00, 0x44, 0x21, 0x00, 0x7C, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5466, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x79, 0x84, 0x00, 0x49, 0x04, 0x00, 0x4B, 0x1F, 0x80, 0x4A, 0x44, 0x80, 0x4B, 0x44, 0x80, 0x49, 0xC4, 0x80, 0x48, 0x84, 0x80, 0x48, 0x84, 0x80, 0x49, 0x8C, 0x80, 0x79, 0x28, 0x80, 0x01, 0x29, 0x80, 0x03, 0xF9, 0x00, 0x06, 0x11, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5467, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x7C, 0xF8, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0xFF, 0x80, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x8C, 0x00, 0x7C, 0x84, 0x00, 0x00, 0xE4, 0x00, 0x03, 0x86, 0x00, 0x00, 0x02, 0x80, 0x03, 0xFB, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x0B, 0xFE, 0x80, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x09, 0xFC, 0x80, 0x09, 0x04, 0x80, 0x09, 0x04, 0x80, 0x09, 0xFC, 0x80, 0x11, 0x04, 0x80, 0x10, 0x00, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x92, 0x00, 0x7C, 0x93, 0x00, 0x01, 0x91, 0x00, 0x01, 0x11, 0x80, 0x03, 0x10, 0x80, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x546A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x80, 0x02, 0x07, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x546B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x3F, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x45, 0xFE, 0x00, 0x45, 0x02, 0x00, 0x7D, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x546D, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x78, 0x92, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x9E, 0x00, 0x78, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x546E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5470, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x21, 0x00, 0x24, 0x27, 0x00, 0x27, 0xBC, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x80, 0x27, 0xB1, 0x80, 0x3C, 0x1F, 0x00, 0x60, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5471, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xF4, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x22, 0x00, 0x3D, 0x2A, 0x00, 0x02, 0x2A, 0x00, 0x02, 0x3D, 0x00, 0x04, 0xC5, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5472, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x24, 0x48, 0x00, 0x25, 0x49, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x7C, 0x00, 0x25, 0x48, 0x00, 0x25, 0x48, 0x00, 0x25, 0x48, 0x00, 0x25, 0x48, 0x00, 0x3D, 0x58, 0x00, 0x25, 0x69, 0x00, 0x01, 0x89, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5473, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x38, 0x00, 0x3C, 0x38, 0x00, 0x24, 0x54, 0x00, 0x20, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0x12, 0x00, 0x02, 0x11, 0x00, 0x04, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5474, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x78, 0x80, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x4B, 0x01, 0x00, 0x48, 0xF9, 0x00, 0x48, 0x89, 0x00, 0x48, 0x89, 0x00, 0x48, 0x89, 0x00, 0x48, 0x89, 0x00, 0x78, 0xF9, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3C, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x02, 0x00, 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5476, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x79, 0x09, 0x00, 0x4F, 0xE9, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x2B, 0x00, 0x4B, 0x2A, 0x00, 0x4A, 0x6A, 0x00, 0x4E, 0x4E, 0x00, 0x4B, 0x44, 0x00, 0x79, 0xC4, 0x00, 0x00, 0x8E, 0x00, 0x01, 0xCA, 0x00, 0x03, 0x5B, 0x00, 0x06, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5478, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0x60, 0x00, 0x24, 0x60, 0x00, 0x24, 0xA8, 0x00, 0x24, 0xA6, 0x00, 0x25, 0x23, 0x00, 0x26, 0x21, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x547B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x547C, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x3D, 0xD0, 0x00, 0x24, 0x11, 0x00, 0x25, 0x11, 0x00, 0x24, 0x92, 0x00, 0x24, 0x52, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x547D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x2E, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x547F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x62, 0x00, 0x00, 0x42, 0x00, 0x00, 0x5F, 0x00, 0x00, 0xF1, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5481, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x44, 0x42, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x7E, 0x00, 0x44, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5482, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x3D, 0x10, 0x00, 0x25, 0x14, 0x00, 0x25, 0x7E, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x3D, 0x5C, 0x00, 0x25, 0x10, 0x00, 0x01, 0x12, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5483, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0xA8, 0x00, 0x78, 0xA8, 0x00, 0x49, 0xAB, 0x00, 0x49, 0x2D, 0x00, 0x4B, 0x39, 0x00, 0x4B, 0x29, 0x00, 0x4D, 0x69, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x2B, 0x00, 0x79, 0x28, 0x00, 0x01, 0x28, 0x00, 0x01, 0x20, 0x80, 0x01, 0x31, 0x80, 0x01, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5484, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x11, 0x00, 0x79, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x79, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5485, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5486, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3C, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x26, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0xF9, 0x00, 0x3C, 0x81, 0x00, 0x24, 0x86, 0x00, 0x20, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5488, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x49, 0x00, 0x48, 0x49, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x48, 0x00, 0x4A, 0x48, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x48, 0x80, 0x48, 0x48, 0x80, 0x78, 0x49, 0x80, 0x00, 0xC9, 0x00, 0x00, 0x8B, 0x00, 0x01, 0x88, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5489, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x28, 0x00, 0x78, 0x6C, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x548B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x44, 0xFF, 0x80, 0x44, 0x90, 0x00, 0x45, 0x90, 0x00, 0x47, 0x10, 0x00, 0x44, 0x1F, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x548C, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x06, 0x11, 0x00, 0x07, 0x11, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0x51, 0x00, 0x12, 0x11, 0x00, 0x22, 0x11, 0x00, 0x02, 0x11, 0x00, 0x02, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x548D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x78, 0xC0, 0x00, 0x48, 0x84, 0x00, 0x49, 0x84, 0x00, 0x49, 0x3E, 0x00, 0x4B, 0xE3, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x548E, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x04, 0x00, 0x07, 0xE4, 0x00, 0x08, 0x4A, 0x00, 0x18, 0x91, 0x00, 0x25, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x548F, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x78, 0x00, 0x00, 0x49, 0xF0, 0x00, 0x48, 0x11, 0x00, 0x48, 0x13, 0x00, 0x4B, 0xD2, 0x00, 0x48, 0x58, 0x00, 0x48, 0xD8, 0x00, 0x48, 0x94, 0x00, 0x79, 0x96, 0x00, 0x03, 0x13, 0x00, 0x06, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5490, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x38, 0x82, 0x00, 0x28, 0x82, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xA2, 0x00, 0x28, 0x92, 0x00, 0x28, 0x8A, 0x00, 0x28, 0x82, 0x00, 0x38, 0x82, 0x00, 0x28, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5491, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x78, 0xBF, 0x80, 0x48, 0x84, 0x00, 0x4B, 0xE4, 0x00, 0x48, 0x84, 0x00, 0x48, 0x84, 0x00, 0x48, 0x84, 0x00, 0x48, 0xE4, 0x00, 0x4B, 0x84, 0x00, 0x48, 0x84, 0x00, 0x78, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5494, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x3E, 0x7E, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x24, 0x50, 0x00, 0x24, 0x48, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5495, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5496, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x79, 0x0F, 0x00, 0x49, 0x09, 0x00, 0x4F, 0xE9, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x7B, 0x29, 0x00, 0x02, 0x29, 0x00, 0x02, 0x69, 0x00, 0x06, 0x4F, 0x00, 0x0C, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5499, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x50, 0x00, 0x3E, 0x48, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x24, 0x52, 0x00, 0x24, 0x52, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x24, 0x98, 0x00, 0x3D, 0x10, 0x00, 0x21, 0x31, 0x00, 0x02, 0x51, 0x00, 0x05, 0x8F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x549A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3E, 0x7C, 0x00, 0x24, 0x84, 0x00, 0x24, 0x88, 0x00, 0x25, 0x50, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0x47, 0x00, 0x26, 0x32, 0x00, 0x3C, 0x10, 0x00, 0x24, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x549B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x02, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x549C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x45, 0x00, 0x80, 0x45, 0x00, 0x80, 0x44, 0x40, 0x00, 0x44, 0x43, 0x00, 0x44, 0x4E, 0x00, 0x44, 0x78, 0x00, 0x44, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x80, 0x00, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x549D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x3C, 0x84, 0x00, 0x28, 0x84, 0x00, 0x29, 0x08, 0x00, 0x29, 0x4A, 0x00, 0x2B, 0xDE, 0x00, 0x28, 0x84, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x2A, 0x10, 0x00, 0x3B, 0xDE, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x549F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x08, 0x00, 0x44, 0x18, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x7E, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x7E, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x7C, 0x43, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3D, 0x24, 0x00, 0x24, 0xA6, 0x00, 0x24, 0xA8, 0x00, 0x24, 0xA8, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x3C, 0x90, 0x00, 0x25, 0x11, 0x00, 0x01, 0x11, 0x00, 0x02, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x24, 0x1E, 0x00, 0x24, 0xF0, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x1F, 0x80, 0x3D, 0xF0, 0x00, 0x24, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x40, 0x00, 0x44, 0x42, 0x00, 0x44, 0xC2, 0x00, 0x44, 0x9F, 0x00, 0x45, 0xF1, 0x80, 0x44, 0x00, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x48, 0x28, 0x80, 0x78, 0x28, 0x80, 0x00, 0x6D, 0x80, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x07, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xF4, 0x80, 0x78, 0x84, 0x80, 0x48, 0x84, 0x80, 0x48, 0x84, 0x80, 0x49, 0xE4, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x4B, 0xA4, 0x80, 0x4A, 0xE4, 0x80, 0x48, 0x44, 0x80, 0x78, 0xC0, 0x80, 0x00, 0x80, 0x80, 0x01, 0x80, 0x80, 0x03, 0x00, 0x80, 0x06, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54A8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x89, 0x00, 0x01, 0x08, 0x00, 0x07, 0x14, 0x00, 0x38, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54A9, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0xC6, 0x00, 0x7C, 0x44, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54AA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x44, 0xD2, 0x00, 0x44, 0x56, 0x00, 0x44, 0x54, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x38, 0x00, 0x44, 0x38, 0x00, 0x7C, 0x54, 0x00, 0x00, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0x11, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x10, 0xC0, 0x80, 0x10, 0x80, 0x00, 0x10, 0x40, 0x00, 0x10, 0x30, 0x00, 0x20, 0x0F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54AC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x48, 0x00, 0x48, 0x84, 0x00, 0x49, 0x02, 0x00, 0x4A, 0x85, 0x00, 0x48, 0x84, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x78, 0x30, 0x00, 0x48, 0x30, 0x00, 0x00, 0x48, 0x00, 0x01, 0x86, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54AD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x78, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54AE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x78, 0x90, 0x00, 0x48, 0x90, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x48, 0x54, 0x00, 0x78, 0xD6, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54AF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x4B, 0x8C, 0x00, 0x4E, 0xD8, 0x00, 0x48, 0x70, 0x00, 0x49, 0xDC, 0x00, 0x4F, 0x07, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x79, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54B1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x7C, 0x10, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54B2, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x83, 0x00, 0x00, 0xC6, 0x00, 0x7C, 0x44, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x28, 0x00, 0x44, 0x28, 0x00, 0x7C, 0x6C, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54B3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x25, 0x44, 0x00, 0x24, 0x84, 0x00, 0x24, 0x49, 0x00, 0x24, 0x31, 0x00, 0x3C, 0x22, 0x00, 0x24, 0xC4, 0x00, 0x03, 0x0A, 0x00, 0x00, 0x11, 0x00, 0x00, 0x60, 0x80, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54B4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x42, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x24, 0x50, 0x00, 0x24, 0x90, 0x00, 0x24, 0x92, 0x00, 0x25, 0x56, 0x00, 0x26, 0x58, 0x00, 0x24, 0x90, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x87, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54B7, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x78, 0x49, 0x00, 0x4B, 0x4B, 0x00, 0x49, 0xCA, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x48, 0x4E, 0x00, 0x49, 0xCB, 0x00, 0x4B, 0x49, 0x80, 0x78, 0x48, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54B8, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x17, 0xA1, 0x00, 0x10, 0x21, 0x00, 0x10, 0x22, 0x00, 0x17, 0xA2, 0x00, 0x14, 0xA4, 0x00, 0x14, 0x94, 0x00, 0x17, 0x98, 0x00, 0x14, 0x98, 0x00, 0x20, 0x24, 0x80, 0x20, 0xC2, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54B9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x21, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x42, 0x00, 0x48, 0xC6, 0x00, 0x48, 0x84, 0x00, 0x79, 0xEC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54BB, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x79, 0x88, 0x00, 0x49, 0x08, 0x00, 0x4B, 0x7F, 0x00, 0x4B, 0x08, 0x00, 0x4D, 0x08, 0x00, 0x49, 0x1C, 0x00, 0x49, 0x1C, 0x00, 0x49, 0x2A, 0x00, 0x49, 0x2A, 0x00, 0x79, 0x49, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x3C, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x94, 0x80, 0x24, 0x94, 0x80, 0x24, 0xA2, 0x80, 0x3C, 0xC1, 0x80, 0x24, 0x80, 0x80, 0x20, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54BE, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x22, 0x00, 0x44, 0x26, 0x00, 0x44, 0x24, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x30, 0x00, 0x44, 0x63, 0x00, 0x44, 0xFE, 0x00, 0x7D, 0xA0, 0x00, 0x03, 0x20, 0x00, 0x00, 0x20, 0x80, 0x00, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54BF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xBF, 0x00, 0x79, 0x89, 0x00, 0x49, 0x09, 0x00, 0x4B, 0x09, 0x00, 0x4B, 0x7F, 0x80, 0x4D, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x09, 0x00, 0x49, 0x3F, 0x00, 0x49, 0x08, 0x00, 0x79, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x18, 0x00, 0x01, 0x10, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54C0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x80, 0x03, 0x09, 0x00, 0x0D, 0x06, 0x00, 0x31, 0x02, 0x00, 0x01, 0xF9, 0x00, 0x1F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x21, 0x10, 0x80, 0x21, 0x10, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x78, 0x48, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x4A, 0xC9, 0x00, 0x4B, 0x8F, 0x00, 0x7A, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54C4, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54C6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3E, 0x00, 0x7C, 0x62, 0x00, 0x44, 0xC6, 0x00, 0x45, 0xAC, 0x00, 0x44, 0x18, 0x00, 0x44, 0x30, 0x00, 0x44, 0xE8, 0x00, 0x44, 0x0F, 0x00, 0x44, 0x19, 0x00, 0x44, 0x33, 0x00, 0x7C, 0xEA, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54C7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54C8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x82, 0x00, 0x27, 0x01, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54C9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x14, 0x00, 0x02, 0x12, 0x00, 0x1F, 0xD1, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x94, 0x00, 0x10, 0x88, 0x00, 0x10, 0x98, 0x80, 0x1F, 0xA4, 0x80, 0x10, 0xC2, 0x80, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54CA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x48, 0x40, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x49, 0x82, 0x00, 0x4A, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0x82, 0x00, 0x78, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54CC, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x3D, 0xE0, 0x00, 0x25, 0x02, 0x00, 0x25, 0x0C, 0x00, 0x25, 0x70, 0x00, 0x25, 0x50, 0x00, 0x25, 0x52, 0x00, 0x25, 0x54, 0x00, 0x25, 0x48, 0x00, 0x25, 0x48, 0x00, 0x3D, 0x48, 0x00, 0x22, 0x44, 0x00, 0x02, 0x57, 0x00, 0x04, 0x62, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54CD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x00, 0x80, 0x49, 0x00, 0x80, 0x49, 0x3C, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x79, 0x3C, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54CE, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x44, 0x00, 0x00, 0x44, 0x82, 0x00, 0x44, 0xC2, 0x00, 0x44, 0x46, 0x00, 0x44, 0x64, 0x00, 0x44, 0x2C, 0x00, 0x44, 0x18, 0x00, 0x7C, 0x38, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x66, 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54CF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x3E, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xA4, 0x00, 0x24, 0x98, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x88, 0x00, 0x00, 0xA7, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x3F, 0x00, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x10, 0x00, 0x25, 0x10, 0x00, 0x25, 0x7C, 0x00, 0x25, 0x10, 0x00, 0x25, 0x10, 0x00, 0x25, 0x14, 0x00, 0x3D, 0xFE, 0x00, 0x25, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D1, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x3E, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x26, 0x49, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x24, 0xCC, 0x00, 0x24, 0x48, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x00, 0x00, 0x4A, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x38, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x29, 0x12, 0x00, 0x29, 0x7F, 0x00, 0x28, 0x10, 0x00, 0x2F, 0x10, 0x00, 0x29, 0x10, 0x00, 0x29, 0x28, 0x00, 0x29, 0x24, 0x00, 0x39, 0x46, 0x00, 0x29, 0x82, 0x00, 0x03, 0x00, 0x00, 0x04, 0x83, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x3E, 0x7E, 0x00, 0x25, 0xC0, 0x00, 0x24, 0x24, 0x00, 0x24, 0x28, 0x00, 0x24, 0x31, 0x00, 0x25, 0xC9, 0x00, 0x24, 0x07, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x90, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x91, 0x00, 0x01, 0x11, 0x00, 0x02, 0x0F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D4, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3D, 0x12, 0x00, 0x25, 0xD4, 0x00, 0x25, 0x18, 0x00, 0x25, 0x12, 0x00, 0x25, 0x52, 0x00, 0x25, 0x8E, 0x00, 0x24, 0x20, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x22, 0x00, 0x24, 0x20, 0x00, 0x24, 0x7E, 0x00, 0x24, 0xC2, 0x00, 0x25, 0x22, 0x00, 0x3C, 0x14, 0x00, 0x24, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D7, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x04, 0x52, 0x00, 0x3E, 0x96, 0x00, 0x24, 0x98, 0x00, 0x25, 0xB0, 0x00, 0x26, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x8F, 0x00, 0x24, 0xA0, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x4F, 0x00, 0x78, 0x80, 0x00, 0x49, 0x00, 0x00, 0x4A, 0x40, 0x00, 0x48, 0x40, 0x00, 0x48, 0x9F, 0x80, 0x49, 0x82, 0x00, 0x4A, 0x82, 0x00, 0x48, 0x82, 0x00, 0x48, 0x82, 0x00, 0x78, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54D9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x04, 0x50, 0x00, 0x3E, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0x04, 0x00, 0x26, 0xFB, 0x00, 0x24, 0x00, 0x00, 0x24, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x88, 0x00, 0x01, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54DA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFC, 0x00, 0x04, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x25, 0x26, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x70, 0x00, 0x3C, 0x68, 0x00, 0x24, 0xA4, 0x00, 0x01, 0x27, 0x00, 0x06, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54DC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x84, 0x00, 0x24, 0x48, 0x00, 0x24, 0x30, 0x00, 0x24, 0x48, 0x00, 0x24, 0x87, 0x00, 0x27, 0x4A, 0x00, 0x24, 0x48, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x00, 0x00, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54DD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0xA1, 0x00, 0x25, 0x22, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x24, 0x52, 0x00, 0x24, 0x94, 0x00, 0x24, 0xC8, 0x00, 0x3D, 0x48, 0x00, 0x22, 0x44, 0x00, 0x04, 0x57, 0x00, 0x00, 0x62, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54DE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x04, 0x44, 0x00, 0x3E, 0x82, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x94, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x90, 0x00, 0x25, 0x10, 0x00, 0x24, 0x12, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54DF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x90, 0x00, 0x3C, 0x92, 0x00, 0x29, 0x1F, 0x00, 0x29, 0x22, 0x00, 0x2A, 0x42, 0x00, 0x2F, 0x82, 0x00, 0x29, 0x22, 0x00, 0x2A, 0x12, 0x00, 0x2F, 0xD2, 0x00, 0x28, 0x02, 0x00, 0x38, 0xC2, 0x00, 0x27, 0x02, 0x00, 0x02, 0x22, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x78, 0x90, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x78, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0x44, 0x00, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E6, { 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0xEB, 0x00, 0x7B, 0x89, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x4F, 0xFF, 0x80, 0x48, 0x88, 0x00, 0x48, 0x89, 0x00, 0x48, 0x89, 0x00, 0x48, 0xEB, 0x00, 0x4B, 0x8A, 0x00, 0x78, 0x8E, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8E, 0x80, 0x00, 0x9B, 0x80, 0x03, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x3D, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x25, 0x54, 0x00, 0x25, 0x52, 0x00, 0x3D, 0x52, 0x00, 0x22, 0x92, 0x00, 0x04, 0x90, 0x00, 0x01, 0x10, 0x00, 0x02, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x54, 0x00, 0x00, 0x92, 0x00, 0x3D, 0x11, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF7, 0x80, 0x78, 0x94, 0x80, 0x48, 0x94, 0x80, 0x48, 0x94, 0x80, 0x4B, 0xF5, 0x00, 0x48, 0x95, 0x00, 0x48, 0x95, 0x00, 0x48, 0x94, 0x80, 0x4B, 0xF4, 0x80, 0x48, 0x94, 0x80, 0x78, 0x94, 0x80, 0x01, 0x94, 0x80, 0x01, 0x35, 0x80, 0x03, 0x24, 0x00, 0x06, 0xE4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54EC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x78, 0x82, 0x00, 0x49, 0x82, 0x00, 0x49, 0x3A, 0x00, 0x4B, 0x2A, 0x00, 0x4B, 0x2A, 0x00, 0x4D, 0x2A, 0x00, 0x49, 0x2A, 0x00, 0x49, 0x2A, 0x00, 0x49, 0x3A, 0x00, 0x79, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54EE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x80, 0x3C, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x12, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x04, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x3C, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x78, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0xC8, 0x80, 0x01, 0x89, 0x80, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54F2, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x04, 0x38, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x00, 0x04, 0xBF, 0x80, 0x07, 0x22, 0x00, 0x3C, 0x22, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x0C, 0x82, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54F3, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x06, 0x00, 0x39, 0x38, 0x00, 0x2F, 0xE0, 0x00, 0x29, 0x20, 0x00, 0x29, 0x22, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x64, 0x00, 0x29, 0xA4, 0x00, 0x2F, 0x24, 0x00, 0x29, 0x24, 0x00, 0x39, 0x24, 0x00, 0x29, 0x44, 0x00, 0x01, 0x44, 0x00, 0x05, 0x84, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54F6, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xC7, 0x80, 0x48, 0x44, 0x00, 0x48, 0x44, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54FA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54FC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x01, 0x00, 0x48, 0x06, 0x00, 0x78, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x01, 0x30, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x70, 0x00, 0x00, 0xDC, 0x00, 0x03, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x54FE, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x78, 0xCC, 0x00, 0x49, 0x86, 0x00, 0x4B, 0x03, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x48, 0x00, 0x78, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x89, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x54FF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x7F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x18, 0x91, 0x00, 0x30, 0x91, 0x00, 0x63, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5500, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x79, 0xF0, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x48, 0xD6, 0x00, 0x4B, 0x93, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x24, 0x00, 0x78, 0x27, 0x00, 0x00, 0x61, 0x00, 0x00, 0x41, 0x00, 0x00, 0xC1, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x78, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x78, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x24, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5505, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x78, 0x00, 0x78, 0xCC, 0x00, 0x49, 0x86, 0x00, 0x4F, 0x7B, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x02, 0x00, 0x48, 0x04, 0x00, 0x48, 0x08, 0x00, 0x48, 0x10, 0x00, 0x79, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5506, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x42, 0x00, 0x00, 0x8F, 0x00, 0x3B, 0xF8, 0x80, 0x28, 0x48, 0x00, 0x28, 0x88, 0x80, 0x29, 0x0F, 0x80, 0x2E, 0x40, 0x00, 0x28, 0x40, 0x00, 0x38, 0xFE, 0x00, 0x29, 0x84, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x30, 0x00, 0x00, 0x50, 0x00, 0x01, 0x8C, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5507, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x14, 0x00, 0x22, 0x0C, 0x00, 0x23, 0xC3, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x79, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xFE, 0x00, 0x7A, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x03, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5509, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x78, 0xC2, 0x00, 0x48, 0x9F, 0x00, 0x4B, 0xF1, 0x80, 0x48, 0x80, 0x00, 0x48, 0x80, 0x00, 0x49, 0xFF, 0x00, 0x4B, 0x10, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x28, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x550C, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0xC7, 0x00, 0x78, 0x9C, 0x00, 0x48, 0x84, 0x00, 0x49, 0x04, 0x00, 0x49, 0x14, 0x00, 0x4B, 0xD7, 0x00, 0x48, 0x54, 0x00, 0x49, 0x54, 0x00, 0x49, 0x54, 0x00, 0x49, 0x54, 0x00, 0x49, 0xD4, 0x00, 0x78, 0xBF, 0x80, 0x01, 0xC0, 0x00, 0x03, 0x70, 0x00, 0x06, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x550D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x48, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x78, 0x48, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x550E, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x01, 0xC4, 0x80, 0x3C, 0x44, 0x80, 0x24, 0x44, 0x80, 0x25, 0xF4, 0x80, 0x24, 0x44, 0x80, 0x24, 0xC4, 0x80, 0x24, 0xE4, 0x80, 0x25, 0x54, 0x80, 0x25, 0x44, 0x80, 0x3E, 0x44, 0x80, 0x24, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x40, 0x80, 0x00, 0x40, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x550F, { 0x00, 0x00, 0x00, 0x01, 0x82, 0x00, 0x00, 0xE6, 0x00, 0x78, 0x3C, 0x00, 0x48, 0xE6, 0x00, 0x4B, 0x83, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x80, 0x48, 0x40, 0x00, 0x48, 0x90, 0x00, 0x49, 0xFF, 0x00, 0x4F, 0x11, 0x00, 0x79, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5510, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5511, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x01, 0x24, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x26, 0xAA, 0x00, 0x24, 0x71, 0x00, 0x24, 0x20, 0x00, 0x24, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5514, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x20, 0x00, 0x44, 0x20, 0x00, 0x45, 0xFE, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5515, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5516, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x78, 0x48, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x78, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x551B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x3D, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x24, 0x88, 0x00, 0x3D, 0x50, 0x00, 0x22, 0x20, 0x00, 0x00, 0x58, 0x00, 0x01, 0x87, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x551C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x91, 0x80, 0x10, 0x9E, 0x00, 0x10, 0x90, 0x80, 0x1F, 0x90, 0x80, 0x10, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5520, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4A, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x21, 0x00, 0x26, 0x22, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x24, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x84, 0x00, 0x01, 0x04, 0x00, 0x02, 0x28, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5522, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x22, 0x00, 0x04, 0xA6, 0x00, 0x3E, 0xA8, 0x00, 0x24, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x54, 0x00, 0x00, 0x48, 0x00, 0x00, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5523, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x44, 0x00, 0x3D, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x20, 0x00, 0x3C, 0x22, 0x00, 0x20, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5524, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x7C, 0x00, 0x24, 0x88, 0x00, 0x25, 0x12, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x83, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5527, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x03, 0xE2, 0x00, 0x3A, 0x5F, 0x00, 0x2A, 0x52, 0x00, 0x2B, 0xD2, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2B, 0xD2, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x92, 0x00, 0x3A, 0x5A, 0x00, 0x2A, 0x94, 0x00, 0x03, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x552A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x28, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x48, 0x92, 0x00, 0x4B, 0x11, 0x80, 0x48, 0xFE, 0x00, 0x78, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x552B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x78, 0x28, 0x00, 0x48, 0x6C, 0x00, 0x48, 0xC6, 0x00, 0x49, 0x83, 0x00, 0x4B, 0x7D, 0x80, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x79, 0x11, 0x00, 0x01, 0x93, 0x00, 0x00, 0x92, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x552C, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x04, 0x3E, 0x00, 0x3E, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x21, 0x00, 0x25, 0x2E, 0x00, 0x25, 0xF0, 0x00, 0x25, 0x22, 0x00, 0x25, 0x1E, 0x00, 0x25, 0x08, 0x00, 0x25, 0x7C, 0x00, 0x3D, 0x48, 0x00, 0x26, 0x48, 0x00, 0x04, 0x49, 0x00, 0x08, 0x89, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x552E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x30, 0x40, 0x00, 0x5F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x552F, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x88, 0x00, 0x3C, 0xFF, 0x00, 0x25, 0x88, 0x00, 0x25, 0x88, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5530, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0B, 0xE2, 0x00, 0x3E, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x2B, 0xEA, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2B, 0xEA, 0x00, 0x2A, 0xAA, 0x00, 0x3A, 0xAA, 0x00, 0x26, 0xAA, 0x00, 0x0A, 0xA2, 0x00, 0x0A, 0xA2, 0x00, 0x12, 0xE2, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x3D, 0x00, 0x80, 0x25, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5532, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x79, 0xCF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xEF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x78, 0x48, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x10, 0x00, 0x7B, 0x38, 0x00, 0x02, 0x28, 0x00, 0x06, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5535, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x24, 0x54, 0x00, 0x24, 0x92, 0x00, 0x27, 0x11, 0x80, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x92, 0x00, 0x00, 0x10, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5536, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x48, 0x44, 0x00, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x78, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5537, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x24, 0x84, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x3C, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5538, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x47, 0x83, 0x80, 0x44, 0x7C, 0x00, 0x44, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x02, 0x00, 0x44, 0x04, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x18, 0x00, 0x01, 0x49, 0x00, 0x01, 0x41, 0x80, 0x03, 0x42, 0x80, 0x02, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5539, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x79, 0x0E, 0x00, 0x4F, 0xEA, 0x00, 0x49, 0x1B, 0x00, 0x49, 0x11, 0x00, 0x49, 0xF1, 0x80, 0x49, 0x20, 0x00, 0x49, 0x2C, 0x00, 0x49, 0x26, 0x00, 0x49, 0x22, 0x00, 0x7B, 0x20, 0x00, 0x02, 0x6C, 0x00, 0x02, 0x46, 0x00, 0x06, 0x43, 0x00, 0x0C, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x553B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x49, 0xD7, 0x00, 0x49, 0x55, 0x00, 0x4B, 0x39, 0x80, 0x48, 0x38, 0x00, 0x78, 0x54, 0x00, 0x00, 0xD6, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x553C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x82, 0x00, 0x48, 0xC6, 0x00, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x42, 0x00, 0x78, 0x86, 0x00, 0x01, 0xEC, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE7, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x553D, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x79, 0x1C, 0x00, 0x4F, 0xD0, 0x00, 0x49, 0x10, 0x00, 0x49, 0x1F, 0x80, 0x49, 0x92, 0x00, 0x4B, 0x52, 0x00, 0x4B, 0x52, 0x00, 0x4D, 0x12, 0x00, 0x49, 0x12, 0x00, 0x79, 0x12, 0x00, 0x01, 0x32, 0x00, 0x01, 0x22, 0x00, 0x01, 0x62, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x553E, { 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x553F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x82, 0x00, 0x3E, 0xFF, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x26, 0x4A, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x25, 0x2A, 0x00, 0x24, 0x04, 0x00, 0x24, 0xA0, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x91, 0x00, 0x04, 0x85, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5540, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x79, 0x00, 0x00, 0x49, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x00, 0x00, 0x49, 0x08, 0x00, 0x79, 0x08, 0x00, 0x03, 0x7F, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5541, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x01, 0x00, 0x49, 0x11, 0x00, 0x49, 0x7D, 0x00, 0x49, 0x11, 0x00, 0x49, 0x7D, 0x00, 0x49, 0x11, 0x00, 0x49, 0x01, 0x00, 0x49, 0x7D, 0x00, 0x49, 0x45, 0x00, 0x79, 0x45, 0x00, 0x01, 0x7D, 0x00, 0x03, 0x01, 0x00, 0x02, 0x01, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5543, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0xA4, 0x00, 0x3E, 0xBE, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA2, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x04, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x3D, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x14, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x38, 0x30, 0x00, 0x28, 0x50, 0x00, 0x29, 0x91, 0x00, 0x2E, 0x52, 0x00, 0x28, 0x34, 0x00, 0x28, 0x28, 0x00, 0x2A, 0x58, 0x00, 0x39, 0x98, 0x00, 0x2A, 0xB4, 0x00, 0x04, 0x54, 0x00, 0x18, 0x92, 0x00, 0x01, 0x12, 0x00, 0x06, 0x21, 0x00, 0x18, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5545, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x3E, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x78, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5546, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x12, 0x1F, 0x00, 0x1C, 0x01, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5547, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5549, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x78, 0x84, 0x00, 0x4B, 0xDF, 0x80, 0x48, 0x84, 0x00, 0x48, 0x84, 0x00, 0x49, 0xCE, 0x00, 0x49, 0xAE, 0x00, 0x4A, 0x95, 0x00, 0x4A, 0x95, 0x00, 0x4C, 0xA4, 0x80, 0x78, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x554A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xDF, 0x80, 0x7A, 0x41, 0x00, 0x4A, 0x41, 0x00, 0x4A, 0xDD, 0x00, 0x4A, 0x95, 0x00, 0x4A, 0x95, 0x00, 0x4A, 0x55, 0x00, 0x4A, 0x55, 0x00, 0x4A, 0x55, 0x00, 0x4A, 0x5D, 0x00, 0x7A, 0xC1, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x554C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x48, 0x48, 0x00, 0x48, 0xC8, 0x00, 0x49, 0x8F, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x79, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x554D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x06, 0x00, 0x48, 0x18, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x554F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5550, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x48, 0x44, 0x00, 0x48, 0x44, 0x00, 0x48, 0xEE, 0x00, 0x49, 0xAB, 0x00, 0x48, 0x00, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5551, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x11, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x90, 0x00, 0x78, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x01, 0xD0, 0x00, 0x03, 0x70, 0x00, 0x06, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5553, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x9F, 0x80, 0x10, 0xB1, 0x00, 0x10, 0xCA, 0x00, 0x1F, 0x84, 0x00, 0x10, 0x8A, 0x00, 0x20, 0x31, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5555, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x02, 0x00, 0x3D, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x2D, 0x12, 0x00, 0x29, 0xFA, 0x00, 0x2A, 0x42, 0x00, 0x28, 0x4A, 0x00, 0x2F, 0xFE, 0x00, 0x28, 0x42, 0x00, 0x2A, 0x4A, 0x00, 0x3A, 0x4A, 0x00, 0x2B, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5556, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x92, 0x00, 0x3C, 0x94, 0x00, 0x24, 0x10, 0x00, 0x24, 0x28, 0x00, 0x24, 0x46, 0x00, 0x25, 0x91, 0x80, 0x24, 0x12, 0x00, 0x24, 0x94, 0x00, 0x3C, 0x98, 0x00, 0x24, 0xA8, 0x00, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5557, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x78, 0xC2, 0x00, 0x48, 0x86, 0x00, 0x49, 0x84, 0x00, 0x4B, 0x1C, 0x00, 0x48, 0x00, 0x00, 0x48, 0x60, 0x00, 0x49, 0xCF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x79, 0xEF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5558, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x48, 0x80, 0x00, 0x48, 0xEF, 0x00, 0x48, 0xA9, 0x00, 0x49, 0xA9, 0x00, 0x49, 0x29, 0x00, 0x4B, 0xE9, 0x00, 0x78, 0x4B, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x555A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x13, 0xF2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x555B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x11, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x42, 0x00, 0x00, 0x84, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x2F, 0x00, 0x03, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x555C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x78, 0x41, 0x00, 0x49, 0x4A, 0x00, 0x48, 0x84, 0x00, 0x49, 0x4A, 0x00, 0x4A, 0x11, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xDF, 0x00, 0x48, 0x41, 0x00, 0x4A, 0x49, 0x00, 0x79, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x01, 0x44, 0x00, 0x02, 0x4A, 0x00, 0x04, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x555D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x87, 0x80, 0x48, 0x84, 0x80, 0x48, 0x84, 0x80, 0x4F, 0xF4, 0x80, 0x48, 0x84, 0x80, 0x48, 0x84, 0x80, 0x49, 0xC4, 0x80, 0x49, 0xA4, 0x80, 0x4B, 0xB4, 0x80, 0x7A, 0x97, 0x80, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x555E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x48, 0x00, 0x38, 0x48, 0x00, 0x28, 0x48, 0x00, 0x2B, 0xCF, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x3B, 0xCF, 0x00, 0x28, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5560, { 0x00, 0x00, 0x00, 0x01, 0x83, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xBF, 0x80, 0x12, 0x24, 0x00, 0x32, 0x64, 0x00, 0x62, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5561, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x7C, 0x24, 0x00, 0x45, 0xE7, 0x80, 0x44, 0x24, 0x00, 0x44, 0x24, 0x00, 0x44, 0x24, 0x00, 0x45, 0xE7, 0x80, 0x44, 0x24, 0x00, 0x44, 0x24, 0x00, 0x44, 0x64, 0x00, 0x7D, 0xA7, 0x80, 0x00, 0x24, 0x00, 0x00, 0x64, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5563, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x39, 0x07, 0x80, 0x2B, 0xF4, 0x80, 0x2C, 0x84, 0x80, 0x28, 0x84, 0x80, 0x2F, 0xFC, 0x80, 0x28, 0x84, 0x80, 0x28, 0x84, 0x80, 0x2A, 0xF4, 0x80, 0x2A, 0x84, 0x80, 0x2A, 0x84, 0x80, 0x3A, 0x84, 0x80, 0x2A, 0xF7, 0x00, 0x07, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5564, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x21, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x78, 0x88, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5565, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0xFF, 0x00, 0x26, 0x22, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x3D, 0x04, 0x00, 0x25, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5566, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x78, 0x84, 0x00, 0x48, 0x9F, 0x80, 0x4B, 0xE0, 0x00, 0x48, 0x91, 0x00, 0x48, 0x91, 0x00, 0x48, 0x91, 0x00, 0x48, 0xDB, 0x00, 0x4B, 0x8A, 0x00, 0x48, 0x8A, 0x00, 0x78, 0x8A, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x82, 0x00, 0x00, 0xBF, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5567, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x04, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0x24, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x24, 0x00, 0x00, 0x58, 0x00, 0x00, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x556A, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x09, 0x08, 0x00, 0x3D, 0x12, 0x00, 0x2F, 0xFF, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x62, 0x00, 0x29, 0xBE, 0x00, 0x2F, 0x22, 0x00, 0x29, 0x22, 0x00, 0x39, 0x22, 0x00, 0x29, 0x22, 0x00, 0x01, 0x22, 0x00, 0x05, 0x3E, 0x00, 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x556C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x556D, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3C, 0x8A, 0x00, 0x2B, 0xFF, 0x00, 0x29, 0x08, 0x00, 0x29, 0x0A, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x88, 0x00, 0x2F, 0xC8, 0x00, 0x28, 0x90, 0x00, 0x28, 0xBF, 0x00, 0x39, 0xC2, 0x00, 0x26, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x86, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x556E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3E, 0xBE, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA2, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x5A, 0x00, 0x3D, 0x8A, 0x00, 0x25, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5575, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x39, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x2C, 0x49, 0x00, 0x2A, 0x4A, 0x00, 0x28, 0x48, 0x00, 0x29, 0x7E, 0x00, 0x29, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2E, 0x54, 0x00, 0x3A, 0x48, 0x00, 0x2A, 0x94, 0x00, 0x02, 0x94, 0x00, 0x03, 0x23, 0x00, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5576, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x26, 0x02, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x90, 0x00, 0x24, 0x9E, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x90, 0x00, 0x01, 0x50, 0x00, 0x02, 0x30, 0x00, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5577, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0B, 0xDE, 0x00, 0x3E, 0x52, 0x00, 0x2A, 0x54, 0x00, 0x2B, 0xD4, 0x00, 0x2A, 0x58, 0x00, 0x2A, 0x54, 0x00, 0x2B, 0xD2, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x3A, 0x92, 0x00, 0x2A, 0x5A, 0x00, 0x02, 0xD4, 0x00, 0x03, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5578, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x3D, 0xFE, 0x00, 0x24, 0x24, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x25, 0x24, 0x00, 0x25, 0x74, 0x00, 0x25, 0x6C, 0x00, 0x3D, 0xAC, 0x00, 0x21, 0x24, 0x00, 0x02, 0x24, 0x00, 0x04, 0x24, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x557B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x8C, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x557C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x26, 0x10, 0x80, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x557E, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0xE4, 0x00, 0x7B, 0x84, 0x80, 0x48, 0x94, 0x80, 0x48, 0x95, 0x80, 0x4B, 0xF5, 0x00, 0x48, 0x95, 0x00, 0x48, 0x84, 0x00, 0x49, 0xC4, 0x00, 0x49, 0xAE, 0x00, 0x79, 0x8A, 0x00, 0x02, 0x8A, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x9B, 0x00, 0x00, 0x91, 0x00, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x557F, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x82, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0x82, 0x00, 0x4F, 0xFF, 0x80, 0x79, 0x24, 0x00, 0x01, 0x24, 0x00, 0x01, 0xC7, 0x80, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5580, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x20, 0x80, 0x48, 0x20, 0x00, 0x48, 0x7E, 0x00, 0x48, 0xC4, 0x00, 0x49, 0x28, 0x00, 0x4E, 0x10, 0x00, 0x48, 0x6C, 0x00, 0x79, 0x83, 0x80, 0x4E, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x44, 0x91, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x91, 0x00, 0x44, 0x91, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x45, 0x10, 0x80, 0x7D, 0x14, 0x80, 0x01, 0x1E, 0x80, 0x01, 0x72, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x91, 0x00, 0x78, 0x9B, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x8C, 0x00, 0x00, 0xE6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5583, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x8A, 0x00, 0x4A, 0x52, 0x00, 0x4A, 0xFA, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x7A, 0xFA, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5584, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5586, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5587, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x28, 0x89, 0x00, 0x2B, 0xE9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x2B, 0xE9, 0x00, 0x28, 0x89, 0x00, 0x39, 0x89, 0x00, 0x01, 0xC9, 0x00, 0x02, 0xA9, 0x00, 0x04, 0x81, 0x00, 0x08, 0x81, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5588, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x09, 0x80, 0x79, 0xEF, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x80, 0x49, 0xC7, 0x80, 0x4B, 0x10, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x79, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5589, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xBE, 0x00, 0x39, 0x02, 0x00, 0x29, 0x02, 0x00, 0x2B, 0xFF, 0x80, 0x2B, 0x10, 0x00, 0x2D, 0x20, 0x00, 0x2D, 0x7F, 0x00, 0x29, 0x88, 0x00, 0x29, 0x08, 0x00, 0x39, 0xFF, 0x80, 0x29, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x12, 0x00, 0x01, 0x21, 0x00, 0x01, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x558A, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x00, 0x3B, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2B, 0xF8, 0x00, 0x2A, 0x09, 0x00, 0x2A, 0x09, 0x00, 0x2A, 0xEA, 0x00, 0x3A, 0xAA, 0x00, 0x2A, 0xAC, 0x00, 0x22, 0xE4, 0x00, 0x02, 0x0A, 0x80, 0x04, 0x12, 0x80, 0x04, 0x21, 0x80, 0x08, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x558B, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x9E, 0x00, 0x48, 0x80, 0x00, 0x48, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x54, 0x00, 0x00, 0x54, 0x00, 0x00, 0xD6, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x558E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x01, 0x00, 0x4A, 0x79, 0x00, 0x4A, 0x49, 0x00, 0x7A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x79, 0x00, 0x02, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x558F, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0xFF, 0x00, 0x7D, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5591, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x82, 0x00, 0x48, 0xC6, 0x00, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x78, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5592, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0xF4, 0x00, 0x78, 0x94, 0x00, 0x49, 0x97, 0x80, 0x4B, 0x34, 0x00, 0x4E, 0xA4, 0x00, 0x48, 0x64, 0x00, 0x48, 0xD8, 0x00, 0x49, 0x8E, 0x00, 0x4B, 0x03, 0x80, 0x48, 0x00, 0x00, 0x79, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5593, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x44, 0x80, 0x4A, 0x44, 0x80, 0x4A, 0x7C, 0x80, 0x48, 0x20, 0x00, 0x48, 0x40, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x82, 0x00, 0x78, 0x86, 0x00, 0x01, 0xE4, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x03, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5594, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x45, 0x01, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x00, 0x00, 0x45, 0x7F, 0x00, 0x45, 0x10, 0x00, 0x45, 0x22, 0x00, 0x45, 0x7F, 0x00, 0x45, 0x09, 0x00, 0x7D, 0x08, 0x00, 0x03, 0x7F, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5597, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x00, 0x80, 0x4A, 0x10, 0x80, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5598, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x28, 0x00, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x28, 0x40, 0x00, 0x3B, 0xFF, 0x00, 0x2A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5599, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x38, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0xFC, 0x00, 0x28, 0x08, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x68, 0x00, 0x28, 0x99, 0x00, 0x2B, 0x2A, 0x00, 0x38, 0x4C, 0x00, 0x29, 0x9C, 0x00, 0x06, 0x2A, 0x00, 0x00, 0xCA, 0x00, 0x07, 0x11, 0x00, 0x00, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x559A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x84, 0x00, 0x25, 0x08, 0x00, 0x26, 0xFF, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xC7, 0x00, 0x24, 0x91, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x559C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x559D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x88, 0x80, 0x3D, 0x94, 0x80, 0x02, 0xA2, 0x80, 0x04, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x559E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x8F, 0x80, 0x7B, 0xE8, 0x80, 0x4A, 0x28, 0x80, 0x4A, 0x28, 0x80, 0x4B, 0xE8, 0x80, 0x4A, 0x28, 0x80, 0x4A, 0x28, 0x80, 0x4B, 0xE8, 0x80, 0x4A, 0x08, 0x80, 0x4A, 0x08, 0x80, 0x7B, 0xE8, 0x80, 0x02, 0x0B, 0x80, 0x02, 0x08, 0x00, 0x03, 0xE8, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x559F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7D, 0x10, 0x80, 0x45, 0xFF, 0x80, 0x45, 0x10, 0x80, 0x45, 0x10, 0x80, 0x45, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55A3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x27, 0x01, 0x00, 0x24, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3C, 0xF9, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55A4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x79, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55A7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x2A, 0x00, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55A8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x80, 0x4A, 0x44, 0x80, 0x78, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC4, 0x80, 0x01, 0x84, 0x80, 0x07, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x39, 0x82, 0x00, 0x2E, 0xFD, 0x80, 0x28, 0x00, 0x00, 0x29, 0xE5, 0x00, 0x29, 0x25, 0x00, 0x29, 0xEA, 0x00, 0x29, 0x34, 0x00, 0x29, 0xF2, 0x00, 0x39, 0x2A, 0x00, 0x29, 0x29, 0x00, 0x01, 0x25, 0x00, 0x01, 0x65, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55AA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x40, 0x00, 0x04, 0x21, 0x00, 0x04, 0x12, 0x00, 0x04, 0xEC, 0x00, 0x07, 0x06, 0x00, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55AB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x38, 0x9F, 0x00, 0x28, 0x85, 0x00, 0x2B, 0xE5, 0x00, 0x28, 0x85, 0x00, 0x2B, 0xE9, 0x00, 0x38, 0x89, 0x00, 0x2F, 0xF6, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55AC, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x32, 0x0B, 0x80, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55AD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x48, 0x38, 0x00, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x04, 0x00, 0x49, 0x1C, 0x00, 0x49, 0x73, 0x00, 0x49, 0x06, 0x00, 0x79, 0x1D, 0x80, 0x03, 0x73, 0x00, 0x02, 0x06, 0x00, 0x06, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x47, 0x93, 0x80, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x80, 0x44, 0x91, 0x80, 0x7C, 0x9B, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x86, 0x00, 0x00, 0xF3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55B1, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3A, 0x14, 0x00, 0x24, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x08, 0x12, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B2, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x78, 0x84, 0x00, 0x4B, 0x2F, 0x80, 0x49, 0x68, 0x80, 0x48, 0xD8, 0x80, 0x48, 0x80, 0x80, 0x49, 0x20, 0x80, 0x4B, 0xF7, 0x80, 0x48, 0x90, 0x80, 0x48, 0x80, 0x80, 0x7A, 0xA0, 0x80, 0x02, 0xB0, 0x80, 0x06, 0x91, 0x80, 0x04, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x24, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x70, 0x00, 0x24, 0xA8, 0x00, 0x25, 0x27, 0x00, 0x26, 0x22, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x3D, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B5, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x3A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x02, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B6, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x19, 0x86, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B7, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x05, 0xFE, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x8A, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0x04, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x24, 0x00, 0x00, 0x48, 0x00, 0x00, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55B9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x22, 0x00, 0x3B, 0xFF, 0x00, 0x28, 0x50, 0x00, 0x28, 0xA8, 0x00, 0x29, 0xFC, 0x00, 0x2E, 0x23, 0x00, 0x29, 0xFC, 0x00, 0x28, 0x20, 0x00, 0x28, 0x24, 0x00, 0x3B, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x00, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55BB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x60, 0x00, 0x3C, 0x90, 0x00, 0x29, 0x08, 0x00, 0x2A, 0xF7, 0x00, 0x2C, 0x02, 0x00, 0x2B, 0xC4, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x2B, 0xD4, 0x00, 0x2A, 0x54, 0x00, 0x3A, 0x54, 0x00, 0x2B, 0xD4, 0x00, 0x02, 0x44, 0x00, 0x02, 0x54, 0x00, 0x02, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55BD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x05, 0x24, 0x00, 0x3E, 0xA8, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x24, 0xA8, 0x00, 0x25, 0x24, 0x00, 0x24, 0x40, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x3D, 0x08, 0x00, 0x24, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0x98, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55BE, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x08, 0x88, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x48, 0x92, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55BF, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55C1, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x3E, 0x00, 0x7B, 0xE8, 0x00, 0x4A, 0x0F, 0x00, 0x4A, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x4A, 0x88, 0x80, 0x4A, 0x8E, 0x00, 0x4A, 0xB8, 0x80, 0x4A, 0x8F, 0x80, 0x4A, 0x80, 0x00, 0x7A, 0x92, 0x00, 0x02, 0x92, 0x00, 0x04, 0x92, 0x80, 0x01, 0x32, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55C3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x7D, 0x00, 0x79, 0x45, 0x00, 0x01, 0x45, 0x00, 0x01, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x78, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x78, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x07, 0x04, 0x00, 0x00, 0x88, 0x00, 0x00, 0x70, 0x00, 0x07, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55C5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x14, 0x00, 0x3C, 0x12, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55C6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x78, 0x6C, 0x00, 0x48, 0xC6, 0x00, 0x4B, 0xBB, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x79, 0x80, 0x00, 0x01, 0x7F, 0x00, 0x03, 0x41, 0x00, 0x06, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55C7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x09, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55C9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x48, 0x22, 0x00, 0x48, 0xC4, 0x00, 0x48, 0x29, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x10, 0x80, 0x00, 0x54, 0x00, 0x00, 0xD6, 0x00, 0x03, 0x93, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55CB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x61, 0x00, 0x49, 0x87, 0x00, 0x48, 0x82, 0x00, 0x4B, 0xEF, 0x80, 0x49, 0x24, 0x80, 0x4B, 0x69, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x79, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55CC, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x8C, 0x00, 0x79, 0x86, 0x00, 0x4B, 0x7B, 0x00, 0x48, 0x00, 0x00, 0x48, 0x7C, 0x00, 0x49, 0x06, 0x00, 0x4B, 0x03, 0x00, 0x4E, 0x01, 0x80, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x7A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55CD, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x02, 0x2F, 0x00, 0x09, 0x4A, 0x00, 0x3F, 0xFA, 0x00, 0x28, 0x8A, 0x00, 0x2A, 0xAE, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAE, 0x00, 0x2B, 0xEA, 0x00, 0x38, 0xAA, 0x00, 0x28, 0x92, 0x00, 0x01, 0x12, 0x00, 0x02, 0x2A, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x78, 0x00, 0x80, 0x00, 0x08, 0x80, 0x02, 0xAC, 0x80, 0x06, 0xA5, 0x80, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55D1, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x79, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x48, 0x84, 0x00, 0x49, 0x3E, 0x00, 0x4B, 0xE3, 0x00, 0x48, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55D2, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x48, 0x10, 0x00, 0x48, 0x38, 0x00, 0x48, 0x6C, 0x00, 0x48, 0xC6, 0x00, 0x4B, 0xBB, 0x80, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x78, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55D3, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x24, 0x00, 0x78, 0x18, 0x00, 0x48, 0xE7, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xEF, 0x80, 0x49, 0x45, 0x00, 0x48, 0x82, 0x00, 0x4B, 0x6D, 0x80, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x54, 0x00, 0x00, 0xD6, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55D4, { 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0xF8, 0x00, 0x3C, 0x80, 0x80, 0x24, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x25, 0x7E, 0x00, 0x25, 0x42, 0x00, 0x25, 0x7E, 0x00, 0x25, 0x42, 0x00, 0x25, 0x7E, 0x00, 0x3D, 0x42, 0x00, 0x25, 0x7E, 0x00, 0x21, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55D6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xA4, 0x00, 0x3D, 0x2E, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0xAC, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x3D, 0xFC, 0x00, 0x24, 0x88, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0xD8, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55D7, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x78, 0x9E, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x80, 0x4A, 0x00, 0x80, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x78, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55D8, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x00, 0x79, 0xE2, 0x00, 0x49, 0x33, 0x00, 0x4B, 0x11, 0x00, 0x4A, 0x20, 0x00, 0x48, 0x64, 0x00, 0x48, 0xC8, 0x00, 0x48, 0x52, 0x00, 0x48, 0x3F, 0x00, 0x49, 0xE1, 0x80, 0x78, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55DA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x84, 0x80, 0x20, 0x12, 0x80, 0x00, 0x09, 0x80, 0x02, 0x48, 0x80, 0x02, 0x21, 0x00, 0x04, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55DB, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x48, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x49, 0x00, 0x48, 0x49, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x49, 0x00, 0x48, 0x49, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x4C, 0x00, 0x00, 0xCA, 0x00, 0x01, 0xCB, 0x00, 0x03, 0x49, 0x80, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55DC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x14, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x67, 0x00, 0x25, 0xB8, 0x00, 0x26, 0xC1, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55DD, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x3D, 0xFE, 0x00, 0x29, 0x04, 0x00, 0x29, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x28, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x52, 0x00, 0x3A, 0xFA, 0x00, 0x2A, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x2A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55DE, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x48, 0x00, 0x00, 0x48, 0x82, 0x00, 0x49, 0x04, 0x00, 0x49, 0x04, 0x00, 0x4A, 0x49, 0x00, 0x49, 0x45, 0x00, 0x48, 0x82, 0x00, 0x78, 0x82, 0x00, 0x01, 0x45, 0x00, 0x01, 0x45, 0x00, 0x03, 0xEF, 0x80, 0x02, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55DF, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x3C, 0x80, 0x00, 0x25, 0xFF, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55E1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x50, 0x00, 0x3C, 0x88, 0x00, 0x29, 0x24, 0x00, 0x2A, 0x43, 0x00, 0x2C, 0x8A, 0x00, 0x29, 0xFC, 0x00, 0x28, 0x00, 0x00, 0x2B, 0xDE, 0x00, 0x28, 0x42, 0x00, 0x2A, 0x52, 0x00, 0x39, 0x4A, 0x00, 0x2A, 0x52, 0x00, 0x00, 0x42, 0x00, 0x01, 0x4A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x72, 0x00, 0x49, 0x5A, 0x00, 0x49, 0x86, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x7A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x9F, 0x80, 0x10, 0x80, 0x80, 0x10, 0x80, 0x80, 0x1F, 0xBF, 0x80, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xDE, 0x80, 0x15, 0x52, 0x80, 0x15, 0x52, 0x80, 0x1F, 0xDE, 0x80, 0x15, 0x52, 0x80, 0x15, 0x40, 0x80, 0x35, 0x40, 0x80, 0x35, 0xC0, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55E4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x21, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x12, 0x00, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55E5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x44, 0x00, 0x3D, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x24, 0xA8, 0x00, 0x3D, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x04, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55E6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x3C, 0x20, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x21, 0x00, 0x2C, 0x4A, 0x00, 0x29, 0xF8, 0x00, 0x28, 0x20, 0x00, 0x28, 0x44, 0x00, 0x2B, 0xFE, 0x00, 0x38, 0xA8, 0x00, 0x29, 0x26, 0x00, 0x02, 0x22, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55E8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x3A, 0xFE, 0x00, 0x28, 0x80, 0x00, 0x29, 0xFC, 0x00, 0x2C, 0x84, 0x00, 0x2A, 0xA4, 0x00, 0x28, 0x94, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xA4, 0x00, 0x3A, 0x94, 0x00, 0x2C, 0x84, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55E9, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x79, 0x11, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55EA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x05, 0xFE, 0x00, 0x3E, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x40, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0xFC, 0x00, 0x26, 0x23, 0x00, 0x3D, 0xFC, 0x00, 0x24, 0x60, 0x00, 0x00, 0xB8, 0x00, 0x03, 0x24, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55EB, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x39, 0x08, 0x00, 0x29, 0xF8, 0x00, 0x29, 0x08, 0x00, 0x29, 0xF8, 0x00, 0x29, 0x0A, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x08, 0x00, 0x2F, 0xDE, 0x00, 0x28, 0x42, 0x00, 0x3A, 0x52, 0x00, 0x2A, 0x94, 0x00, 0x01, 0x08, 0x00, 0x02, 0x94, 0x00, 0x04, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55EC, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x94, 0x00, 0x0B, 0xFE, 0x00, 0x3C, 0x90, 0x00, 0x28, 0x82, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x2D, 0x74, 0x00, 0x29, 0x54, 0x00, 0x29, 0x54, 0x00, 0x39, 0x74, 0x00, 0x29, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x14, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55EF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x24, 0x00, 0x25, 0x54, 0x00, 0x25, 0x8C, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x3C, 0x00, 0x00, 0x22, 0xA2, 0x00, 0x02, 0x91, 0x00, 0x04, 0x85, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55F2, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x8C, 0x00, 0x05, 0x52, 0x00, 0x3E, 0x20, 0x00, 0x24, 0xD8, 0x00, 0x27, 0x27, 0x00, 0x24, 0x78, 0x00, 0x25, 0xC8, 0x00, 0x24, 0x30, 0x00, 0x25, 0xD0, 0x00, 0x24, 0x3C, 0x00, 0x3D, 0xC4, 0x00, 0x24, 0x48, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55F3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x3C, 0x00, 0x3D, 0xC0, 0x00, 0x29, 0x24, 0x00, 0x28, 0xA8, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x41, 0x00, 0x2C, 0x42, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x80, 0x00, 0x28, 0xF8, 0x00, 0x39, 0x88, 0x00, 0x29, 0x50, 0x00, 0x02, 0x20, 0x00, 0x04, 0x58, 0x00, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55F5, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x3A, 0x28, 0x00, 0x2A, 0x12, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x92, 0x00, 0x2E, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x3A, 0x92, 0x00, 0x2A, 0x96, 0x00, 0x05, 0x03, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55F7, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x7B, 0xE4, 0x00, 0x48, 0x87, 0x80, 0x48, 0x8D, 0x00, 0x4B, 0xE9, 0x00, 0x48, 0x99, 0x00, 0x48, 0x85, 0x00, 0x4F, 0xF5, 0x00, 0x49, 0x07, 0x00, 0x49, 0xE2, 0x00, 0x79, 0x22, 0x00, 0x01, 0x27, 0x00, 0x03, 0x25, 0x00, 0x02, 0x2D, 0x80, 0x06, 0xE8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55F9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7B, 0xFF, 0x80, 0x49, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x4B, 0x49, 0x00, 0x49, 0x49, 0x00, 0x48, 0x7F, 0x00, 0x4F, 0x49, 0x00, 0x49, 0x49, 0x00, 0x49, 0x7F, 0x00, 0x79, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x03, 0x08, 0x00, 0x02, 0x88, 0x00, 0x06, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55FD, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x38, 0x84, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x8D, 0x00, 0x2B, 0xF4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2B, 0xE4, 0x00, 0x39, 0x84, 0x00, 0x21, 0xC4, 0x00, 0x02, 0xAA, 0x00, 0x04, 0x8A, 0x00, 0x08, 0x91, 0x00, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x55FE, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x39, 0x10, 0x00, 0x2F, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x29, 0x48, 0x00, 0x29, 0xC8, 0x00, 0x29, 0x5F, 0x00, 0x29, 0x64, 0x00, 0x29, 0x44, 0x00, 0x39, 0x7F, 0x80, 0x29, 0x44, 0x00, 0x02, 0x4A, 0x00, 0x02, 0x4A, 0x00, 0x04, 0x91, 0x00, 0x0B, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x55FF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x00, 0x78, 0xC6, 0x00, 0x4B, 0xBB, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x04, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x79, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5600, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x28, 0x52, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xFA, 0x00, 0x3A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x02, 0xFA, 0x00, 0x02, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5601, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x3B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0xF2, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2B, 0xF4, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x3D, 0xC8, 0x00, 0x26, 0xA8, 0x00, 0x08, 0x95, 0x00, 0x11, 0xA5, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5605, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x1F, 0x00, 0x7B, 0xC2, 0x00, 0x4A, 0x52, 0x00, 0x4B, 0xD2, 0x00, 0x4A, 0x52, 0x00, 0x4A, 0x52, 0x00, 0x4B, 0xDF, 0x80, 0x48, 0x02, 0x00, 0x4A, 0x62, 0x00, 0x4B, 0xC6, 0x00, 0x7A, 0x06, 0x00, 0x02, 0x2A, 0x00, 0x01, 0xEA, 0x80, 0x00, 0x12, 0x80, 0x00, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5606, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x38, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5608, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x44, 0x80, 0x4B, 0xFF, 0x80, 0x4A, 0x44, 0x80, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5609, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x3F, 0x3E, 0x00, 0x09, 0x22, 0x00, 0x11, 0x22, 0x00, 0x13, 0x3E, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x560A, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x00, 0x4A, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x4A, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x7A, 0x00, 0x00, 0x02, 0x08, 0x00, 0x06, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x560C, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFF, 0x00, 0x38, 0x50, 0x00, 0x28, 0x52, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0xA8, 0x00, 0x01, 0x26, 0x00, 0x02, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x560D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x4B, 0xFF, 0x80, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x560E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x78, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x78, 0x81, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x48, 0x00, 0x00, 0x30, 0x00, 0x01, 0xCC, 0x80, 0x0F, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x560F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x7D, 0x21, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x1F, 0x00, 0x7D, 0xE9, 0x00, 0x45, 0x0B, 0x00, 0x45, 0x0A, 0x00, 0x45, 0xEE, 0x00, 0x45, 0x04, 0x00, 0x7D, 0x0E, 0x00, 0x01, 0x1B, 0x00, 0x01, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5610, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x78, 0x63, 0x00, 0x48, 0xA5, 0x00, 0x48, 0x63, 0x00, 0x48, 0xA5, 0x00, 0x48, 0x11, 0x00, 0x48, 0x38, 0x00, 0x48, 0xEE, 0x00, 0x4B, 0x83, 0x80, 0x48, 0x10, 0x00, 0x78, 0xE4, 0x00, 0x00, 0x19, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5611, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x20, 0x80, 0x4A, 0x38, 0x80, 0x4A, 0xE2, 0x00, 0x4A, 0x3E, 0x00, 0x4A, 0x00, 0x00, 0x4A, 0x0F, 0x00, 0x7A, 0xF8, 0x00, 0x06, 0x49, 0x00, 0x04, 0x2A, 0x00, 0x0D, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5612, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x7B, 0xEF, 0x80, 0x48, 0x82, 0x00, 0x4B, 0xEF, 0x80, 0x48, 0x82, 0x00, 0x48, 0xEF, 0x80, 0x4B, 0x82, 0x00, 0x48, 0x82, 0x00, 0x48, 0x00, 0x00, 0x79, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5614, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x3D, 0x1E, 0x00, 0x25, 0x12, 0x00, 0x25, 0x12, 0x00, 0x25, 0x1E, 0x00, 0x25, 0x00, 0x00, 0x25, 0x3F, 0x00, 0x25, 0x2D, 0x00, 0x25, 0x2D, 0x00, 0x3D, 0x3F, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5616, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x79, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5617, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x23, 0xF8, 0x80, 0x02, 0x08, 0x00, 0x13, 0xF8, 0x00, 0x10, 0x1F, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5618, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x20, 0x80, 0x4A, 0x3D, 0x00, 0x4A, 0xE0, 0x00, 0x4A, 0x21, 0x00, 0x4A, 0x1F, 0x00, 0x4A, 0x00, 0x00, 0x7A, 0x24, 0x00, 0x06, 0xA4, 0x80, 0x04, 0xA5, 0x00, 0x0C, 0xA5, 0x00, 0x18, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5619, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x04, 0x00, 0x71, 0xBF, 0x80, 0x56, 0x24, 0x80, 0x53, 0x3F, 0x00, 0x50, 0x29, 0x00, 0x51, 0xAA, 0x00, 0x53, 0x64, 0x00, 0x56, 0xCA, 0x00, 0x50, 0x31, 0x80, 0x50, 0x40, 0x00, 0x77, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x01, 0xE8, 0x00, 0x00, 0x3C, 0x00, 0x03, 0xE7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x561B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x77, 0xFF, 0x80, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x57, 0xEF, 0x80, 0x54, 0x82, 0x00, 0x56, 0xAA, 0x80, 0x56, 0xAA, 0x80, 0x56, 0xAA, 0x80, 0x76, 0xAA, 0x80, 0x06, 0xAA, 0x80, 0x0E, 0x8A, 0x00, 0x0A, 0x8A, 0x00, 0x18, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x561E, { 0x00, 0x00, 0x00, 0x01, 0x48, 0x00, 0x09, 0x48, 0x00, 0x3F, 0xF8, 0x00, 0x29, 0x4A, 0x00, 0x29, 0xDF, 0x00, 0x28, 0x8A, 0x00, 0x2B, 0xEA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2B, 0xEA, 0x00, 0x28, 0x8A, 0x00, 0x2F, 0xFA, 0x00, 0x38, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0xAA, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x561F, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x1E, 0x00, 0x3F, 0xD2, 0x00, 0x29, 0x12, 0x00, 0x29, 0x52, 0x00, 0x2F, 0xF4, 0x00, 0x29, 0x12, 0x00, 0x2B, 0xD2, 0x00, 0x2E, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x2B, 0xD1, 0x00, 0x3A, 0x5A, 0x00, 0x2A, 0x54, 0x00, 0x03, 0xD0, 0x00, 0x02, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5623, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x02, 0x00, 0x2B, 0xDF, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2B, 0xDE, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x3B, 0xDE, 0x00, 0x2A, 0x52, 0x00, 0x04, 0x52, 0x00, 0x05, 0x6A, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5624, { 0x00, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x3E, 0xD6, 0x00, 0x2A, 0xD6, 0x00, 0x2B, 0x5A, 0x00, 0x2B, 0x5A, 0x00, 0x2A, 0x94, 0x00, 0x2C, 0x62, 0x00, 0x28, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x39, 0x08, 0x00, 0x28, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0x98, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5627, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x3A, 0x01, 0x00, 0x2C, 0x4A, 0x00, 0x28, 0xA8, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xA5, 0x00, 0x2C, 0xC5, 0x00, 0x29, 0x7C, 0x00, 0x2E, 0x20, 0x00, 0x39, 0x24, 0x00, 0x29, 0x24, 0x00, 0x01, 0x24, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5629, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x562C, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x78, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x49, 0x20, 0x00, 0x49, 0xEF, 0x00, 0x49, 0x25, 0x00, 0x49, 0xE5, 0x00, 0x79, 0x27, 0x00, 0x01, 0x22, 0x00, 0x01, 0xE7, 0x00, 0x03, 0x2D, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x562D, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0xA2, 0x00, 0x07, 0xF2, 0x00, 0x38, 0x84, 0x00, 0x2B, 0xE4, 0x00, 0x28, 0x08, 0x00, 0x2B, 0xE2, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x24, 0x00, 0x2B, 0xE9, 0x00, 0x28, 0x01, 0x00, 0x3A, 0x22, 0x00, 0x29, 0x42, 0x00, 0x07, 0xF4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x562F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x38, 0x22, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x29, 0xFE, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2B, 0xA7, 0x00, 0x2A, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x03, 0xA7, 0x00, 0x02, 0xA5, 0x00, 0x04, 0xA5, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5630, { 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x01, 0x12, 0x00, 0x7B, 0x56, 0x80, 0x48, 0x91, 0x00, 0x49, 0x12, 0x80, 0x49, 0x57, 0x80, 0x4B, 0xD2, 0x00, 0x48, 0x11, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x10, 0x00, 0x49, 0x09, 0x00, 0x79, 0x8A, 0x00, 0x01, 0x44, 0x00, 0x03, 0x4A, 0x80, 0x02, 0x13, 0x80, 0x06, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5631, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x00, 0x80, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x00, 0x4A, 0xFF, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0xFF, 0x00, 0x4A, 0x91, 0x00, 0x4A, 0xFF, 0x00, 0x7A, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x05, 0x14, 0x80, 0x0D, 0x1E, 0x80, 0x19, 0x72, 0x80, 0x01, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5632, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x87, 0x80, 0x07, 0xF4, 0x80, 0x38, 0x84, 0x80, 0x2B, 0xE4, 0x80, 0x2A, 0x27, 0x80, 0x2A, 0x24, 0x80, 0x2B, 0xE4, 0x80, 0x2A, 0x24, 0x80, 0x2A, 0x27, 0x80, 0x3B, 0xE4, 0x80, 0x2A, 0xA4, 0x80, 0x00, 0x84, 0x80, 0x07, 0xF4, 0x80, 0x00, 0x88, 0x80, 0x00, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5633, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFC, 0x00, 0x79, 0x24, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x79, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5634, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x02, 0xE9, 0x80, 0x3A, 0x8E, 0x00, 0x2A, 0xF8, 0x80, 0x2F, 0x8F, 0x80, 0x28, 0x40, 0x00, 0x28, 0xFC, 0x00, 0x29, 0x10, 0x00, 0x3B, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5635, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x48, 0x82, 0x00, 0x4B, 0xEF, 0x80, 0x48, 0x82, 0x00, 0x48, 0xE2, 0x00, 0x4B, 0x8F, 0x80, 0x48, 0x00, 0x00, 0x79, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0x44, 0x80, 0x00, 0xC4, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5636, { 0x00, 0x00, 0x00, 0x01, 0x23, 0x00, 0x01, 0x2C, 0x00, 0x39, 0x28, 0x00, 0x2F, 0xF8, 0x00, 0x29, 0x28, 0x00, 0x29, 0x2F, 0x80, 0x29, 0xE9, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x29, 0xE9, 0x00, 0x29, 0x29, 0x00, 0x39, 0x29, 0x00, 0x27, 0xF9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x29, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5637, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFC, 0x00, 0x79, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xAE, 0x00, 0x78, 0x20, 0x00, 0x03, 0xAE, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5638, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7B, 0xFE, 0x00, 0x4F, 0x54, 0x00, 0x49, 0x54, 0x00, 0x49, 0x54, 0x00, 0x4F, 0xFF, 0x00, 0x49, 0x54, 0x00, 0x49, 0x54, 0x00, 0x49, 0x54, 0x00, 0x79, 0x54, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x00, 0x03, 0x56, 0x00, 0x06, 0x53, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5639, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x49, 0x45, 0x00, 0x48, 0x82, 0x00, 0x49, 0xFF, 0x00, 0x4A, 0x82, 0x80, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x78, 0x10, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x563B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x82, 0x00, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x563C, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x563D, { 0x00, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x02, 0x52, 0x00, 0x7B, 0xDE, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x79, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x563F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x49, 0x93, 0x00, 0x49, 0x55, 0x00, 0x49, 0x39, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0x49, 0x00, 0x03, 0x6D, 0x80, 0x02, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5640, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x7A, 0x28, 0x80, 0x4B, 0xEF, 0x80, 0x4A, 0x08, 0x00, 0x4A, 0x28, 0x80, 0x49, 0xE7, 0x80, 0x48, 0x00, 0x00, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x78, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5641, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x28, 0x00, 0x49, 0xEF, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xEF, 0x00, 0x48, 0x28, 0x00, 0x48, 0x28, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x78, 0x18, 0x00, 0x01, 0x49, 0x00, 0x01, 0x41, 0x80, 0x03, 0x42, 0x80, 0x02, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5642, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x28, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x29, 0x00, 0x49, 0xCF, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x02, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x42, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5643, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF8, 0x00, 0x79, 0x11, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x48, 0xD6, 0x00, 0x49, 0x93, 0x00, 0x4B, 0x11, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5644, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xEF, 0x80, 0x7B, 0x84, 0x80, 0x48, 0xE4, 0x80, 0x4B, 0x8C, 0x80, 0x48, 0xE9, 0x80, 0x4B, 0x9B, 0x00, 0x48, 0x80, 0x00, 0x48, 0x44, 0x00, 0x48, 0x88, 0x00, 0x48, 0x51, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x10, 0x80, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5646, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x07, 0xDF, 0x00, 0x7A, 0x8A, 0x00, 0x4A, 0x8A, 0x00, 0x4F, 0xDF, 0x80, 0x49, 0x86, 0x00, 0x4A, 0xCA, 0x80, 0x4C, 0x93, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x79, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5649, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xF4, 0x00, 0x78, 0x84, 0x00, 0x48, 0x87, 0x80, 0x4B, 0xF5, 0x00, 0x49, 0x29, 0x00, 0x49, 0x25, 0x00, 0x49, 0xE5, 0x00, 0x49, 0x25, 0x00, 0x49, 0x27, 0x00, 0x49, 0xE2, 0x00, 0x79, 0x22, 0x00, 0x01, 0x27, 0x00, 0x01, 0xE5, 0x00, 0x07, 0x2D, 0x80, 0x00, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x564B, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xF4, 0x00, 0x48, 0x0F, 0x80, 0x4B, 0xE9, 0x00, 0x4A, 0x39, 0x00, 0x4B, 0xEB, 0x00, 0x48, 0x0A, 0x00, 0x4B, 0xEA, 0x00, 0x48, 0x4E, 0x00, 0x48, 0x84, 0x00, 0x78, 0xE4, 0x00, 0x03, 0x8E, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x9B, 0x00, 0x03, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x564C, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x80, 0x45, 0x10, 0x80, 0x45, 0x10, 0x80, 0x45, 0xFF, 0x80, 0x45, 0x10, 0x80, 0x45, 0x10, 0x80, 0x45, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x564D, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x90, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x4B, 0x10, 0x00, 0x4D, 0xFE, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4A, 0x00, 0x03, 0x4B, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x564E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x02, 0x00, 0x4A, 0xFA, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x79, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x88, 0x00, 0x00, 0x50, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x564F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x00, 0x78, 0xC6, 0x00, 0x4B, 0xBB, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xEF, 0x80, 0x48, 0xA2, 0x80, 0x7B, 0x2C, 0x80, 0x00, 0x61, 0x80, 0x01, 0xA6, 0x80, 0x02, 0x28, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5650, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5653, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3E, 0x00, 0x38, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x21, 0x00, 0x2A, 0x3E, 0x00, 0x2B, 0xE1, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x00, 0x00, 0x3A, 0x28, 0x00, 0x2A, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x02, 0xEE, 0x00, 0x04, 0x28, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5654, { 0x00, 0x00, 0x00, 0x01, 0xF9, 0x00, 0x02, 0x2A, 0x80, 0x79, 0x6D, 0x00, 0x48, 0xC6, 0x00, 0x49, 0x83, 0x00, 0x4B, 0x7D, 0x80, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0x82, 0x00, 0x78, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5657, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x01, 0x54, 0x00, 0x3C, 0xD8, 0x00, 0x24, 0x52, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0x50, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5658, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFF, 0x00, 0x3A, 0x04, 0x00, 0x2B, 0x14, 0x00, 0x2A, 0xA7, 0x00, 0x2B, 0xF9, 0x00, 0x2A, 0x42, 0x00, 0x2B, 0x54, 0x00, 0x2B, 0x54, 0x00, 0x2B, 0x54, 0x00, 0x3D, 0xF4, 0x00, 0x24, 0x54, 0x00, 0x04, 0x44, 0x00, 0x08, 0x8A, 0x00, 0x11, 0x12, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5659, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0x50, 0x00, 0x3C, 0x88, 0x00, 0x29, 0x24, 0x00, 0x2A, 0xFB, 0x00, 0x2C, 0x50, 0x00, 0x29, 0x24, 0x00, 0x29, 0x54, 0x00, 0x29, 0xFC, 0x00, 0x28, 0x22, 0x00, 0x3B, 0xFF, 0x00, 0x2A, 0x4A, 0x00, 0x02, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x565B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x78, 0x9F, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x4B, 0xFF, 0x80, 0x49, 0x01, 0x00, 0x49, 0x55, 0x00, 0x49, 0x11, 0x00, 0x49, 0x7D, 0x00, 0x49, 0x11, 0x00, 0x79, 0x39, 0x00, 0x01, 0x55, 0x00, 0x01, 0x11, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x565C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0xF8, 0x00, 0x3D, 0x10, 0x00, 0x2B, 0xFE, 0x00, 0x2E, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x565E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x78, 0x6C, 0x00, 0x48, 0xC6, 0x00, 0x4B, 0x83, 0x80, 0x48, 0x7C, 0x00, 0x48, 0x00, 0x00, 0x49, 0xEF, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0xEF, 0x00, 0x78, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0xC7, 0x00, 0x03, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5660, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7B, 0x7F, 0x00, 0x49, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x4B, 0x22, 0x00, 0x49, 0x14, 0x00, 0x48, 0x7F, 0x00, 0x4F, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x08, 0x00, 0x79, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x02, 0x80, 0x00, 0x06, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5661, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x88, 0x00, 0x7B, 0xFF, 0x80, 0x49, 0x22, 0x00, 0x49, 0xC3, 0x80, 0x49, 0x3E, 0x00, 0x49, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x00, 0x00, 0x79, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x01, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5662, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x05, 0x00, 0x49, 0x79, 0x00, 0x49, 0x55, 0x00, 0x49, 0x11, 0x00, 0x49, 0x7D, 0x00, 0x49, 0x39, 0x00, 0x49, 0x55, 0x00, 0x49, 0x21, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5663, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x7A, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x49, 0xFF, 0x80, 0x4B, 0x20, 0x80, 0x4F, 0xFC, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x79, 0xFC, 0x80, 0x00, 0x28, 0x80, 0x00, 0xFD, 0x80, 0x03, 0x85, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5664, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x48, 0xEE, 0x00, 0x49, 0x55, 0x00, 0x4A, 0x44, 0x80, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5666, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x9F, 0x00, 0x78, 0x90, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x05, 0x00, 0x48, 0x04, 0x80, 0x4B, 0xFF, 0x80, 0x4A, 0x02, 0x00, 0x4A, 0xFA, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0xAA, 0x80, 0x7B, 0xAB, 0x00, 0x02, 0x32, 0x00, 0x02, 0xC6, 0x80, 0x02, 0x0A, 0x80, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5668, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0C, 0x0C, 0x00, 0x30, 0x03, 0x80, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5669, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1E, 0xBC, 0x00, 0x12, 0xA4, 0x00, 0x1E, 0xBC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1E, 0xBC, 0x00, 0x12, 0xA4, 0x00, 0x1E, 0xBC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x566A, { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x48, 0xF8, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xDE, 0x00, 0x4A, 0x52, 0x00, 0x4A, 0x52, 0x00, 0x4B, 0xDE, 0x00, 0x78, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xA8, 0x00, 0x01, 0xAC, 0x00, 0x03, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x566B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x28, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x00, 0x21, 0x00, 0x02, 0x90, 0x80, 0x02, 0x82, 0x80, 0x04, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x566C, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x7B, 0xDF, 0x00, 0x4A, 0x94, 0x00, 0x4C, 0xA4, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x7B, 0xAE, 0x00, 0x02, 0xAA, 0x00, 0x04, 0x71, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x566D, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x7B, 0xE4, 0x00, 0x4A, 0x2F, 0x80, 0x4B, 0xE9, 0x00, 0x4A, 0x39, 0x00, 0x4B, 0xE9, 0x00, 0x48, 0x8D, 0x00, 0x4F, 0xF5, 0x00, 0x49, 0x07, 0x00, 0x49, 0xE2, 0x00, 0x79, 0x22, 0x00, 0x03, 0x27, 0x00, 0x02, 0x65, 0x00, 0x06, 0x4D, 0x80, 0x0C, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x566F, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x79, 0x21, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x10, 0x80, 0x49, 0x49, 0x00, 0x49, 0x42, 0x80, 0x4A, 0x3E, 0x00, 0x48, 0x40, 0x00, 0x48, 0xFE, 0x00, 0x79, 0x82, 0x00, 0x03, 0x4C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5671, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x20, 0x80, 0x4A, 0xFC, 0x00, 0x4A, 0x21, 0x00, 0x4A, 0x1F, 0x00, 0x4A, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x20, 0x00, 0x7A, 0xD1, 0x00, 0x02, 0x2A, 0x00, 0x02, 0xDC, 0x00, 0x04, 0x2A, 0x00, 0x01, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5672, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x78, 0xC6, 0x00, 0x4B, 0xBB, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x55, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x78, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5674, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x82, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5675, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x79, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5676, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x88, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x22, 0x00, 0x3E, 0x32, 0x00, 0x25, 0x4A, 0x00, 0x01, 0x02, 0x00, 0x01, 0xF2, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5678, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x3F, 0x80, 0x71, 0xC4, 0x00, 0x57, 0x1F, 0x00, 0x51, 0x11, 0x00, 0x55, 0x51, 0x00, 0x55, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x00, 0x57, 0xDF, 0x00, 0x51, 0x11, 0x00, 0x71, 0x11, 0x00, 0x01, 0x5F, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x567A, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x80, 0x00, 0x8F, 0x00, 0x77, 0xF8, 0x00, 0x52, 0x28, 0x00, 0x53, 0x68, 0x00, 0x51, 0x4F, 0x80, 0x57, 0xF9, 0x00, 0x50, 0x89, 0x00, 0x50, 0x89, 0x00, 0x57, 0xF9, 0x00, 0x50, 0x89, 0x00, 0x71, 0xC9, 0x00, 0x01, 0xA9, 0x00, 0x02, 0x89, 0x00, 0x04, 0x89, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x567B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x3B, 0xFF, 0x00, 0x2A, 0x89, 0x00, 0x2D, 0xFE, 0x00, 0x28, 0x88, 0x00, 0x29, 0xFC, 0x00, 0x28, 0x88, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0xA8, 0x00, 0x29, 0x24, 0x00, 0x3A, 0xFB, 0x00, 0x24, 0x20, 0x00, 0x00, 0x24, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x567C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE4, 0x00, 0x3A, 0x3F, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x2A, 0x00, 0x2B, 0xEA, 0x00, 0x2A, 0x1F, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0xE4, 0x00, 0x2B, 0x24, 0x00, 0x3B, 0x3F, 0x00, 0x25, 0x24, 0x00, 0x05, 0x24, 0x00, 0x09, 0xE4, 0x00, 0x11, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5680, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x4A, 0x20, 0x80, 0x4A, 0x50, 0x80, 0x49, 0x45, 0x00, 0x4A, 0x7C, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x49, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5684, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x44, 0x00, 0x48, 0x88, 0x00, 0x49, 0xFF, 0x80, 0x4B, 0x10, 0x00, 0x4D, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x46, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5685, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x10, 0x80, 0x4A, 0xD6, 0x80, 0x4A, 0x10, 0x80, 0x48, 0xD6, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x20, 0x00, 0x7B, 0xFF, 0x80, 0x02, 0x48, 0x80, 0x02, 0x48, 0x80, 0x02, 0x48, 0x80, 0x02, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5686, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x54, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x2A, 0x00, 0x80, 0x22, 0x7C, 0x80, 0x02, 0x44, 0x80, 0x02, 0x7C, 0x80, 0x02, 0x44, 0x80, 0x02, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5687, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x77, 0xDF, 0x00, 0x51, 0x04, 0x00, 0x51, 0x04, 0x00, 0x51, 0x04, 0x00, 0x5F, 0xFF, 0x80, 0x52, 0x8A, 0x00, 0x52, 0x8A, 0x00, 0x5A, 0xDB, 0x00, 0x7A, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x12, 0x8A, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x09, 0xA6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5688, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x74, 0x00, 0x00, 0x55, 0xE3, 0x00, 0x55, 0x22, 0x80, 0x55, 0xE2, 0x00, 0x55, 0x2F, 0x80, 0x55, 0xE2, 0x00, 0x54, 0x02, 0x00, 0x55, 0xE2, 0x00, 0x55, 0x22, 0x00, 0x75, 0xE7, 0x00, 0x05, 0x25, 0x00, 0x09, 0xE5, 0x00, 0x01, 0x2D, 0x80, 0x01, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x568A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x21, 0x00, 0x4B, 0xFF, 0x00, 0x7A, 0x21, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x568B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x80, 0x48, 0xFE, 0x80, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x01, 0x00, 0x03, 0xDF, 0x80, 0x02, 0x49, 0x00, 0x03, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x568C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x28, 0x00, 0x4B, 0xD7, 0x80, 0x49, 0x55, 0x00, 0x49, 0x55, 0x00, 0x4A, 0xD6, 0x80, 0x48, 0x00, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x568E, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x48, 0xF8, 0x00, 0x48, 0x88, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x01, 0x00, 0x4D, 0xFE, 0x00, 0x48, 0x40, 0x00, 0x48, 0xA4, 0x00, 0x4B, 0x78, 0x00, 0x78, 0xA8, 0x00, 0x4B, 0x67, 0x00, 0x00, 0xA2, 0x00, 0x03, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x568F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x80, 0x48, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x48, 0xFE, 0x00, 0x78, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x90, 0x80, 0x00, 0x9F, 0x00, 0x01, 0x50, 0x00, 0x06, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5693, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x3B, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2C, 0xDE, 0x00, 0x29, 0x54, 0x00, 0x2B, 0x58, 0x00, 0x28, 0x88, 0x00, 0x29, 0xFC, 0x00, 0x2A, 0x03, 0x00, 0x2D, 0xFC, 0x00, 0x38, 0x20, 0x00, 0x28, 0xA8, 0x00, 0x01, 0x26, 0x00, 0x02, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5694, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x80, 0x48, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x48, 0xFE, 0x00, 0x78, 0x41, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x90, 0x80, 0x00, 0x9F, 0x00, 0x01, 0x50, 0x00, 0x06, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5695, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xFC, 0x00, 0x79, 0x88, 0x00, 0x4F, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x49, 0x00, 0x4A, 0x24, 0x80, 0x48, 0x00, 0x00, 0x79, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5699, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x78, 0x9F, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x4B, 0xFF, 0x80, 0x49, 0x45, 0x00, 0x49, 0x45, 0x00, 0x49, 0xAB, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x45, 0x00, 0x01, 0x45, 0x00, 0x01, 0xAB, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x569A, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x569D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x42, 0x00, 0x4A, 0xFF, 0x00, 0x4A, 0x42, 0x00, 0x4A, 0x7E, 0x00, 0x4A, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x10, 0x00, 0x4A, 0xFF, 0x00, 0x4A, 0x91, 0x00, 0x7A, 0xFF, 0x00, 0x06, 0x91, 0x00, 0x04, 0xFF, 0x00, 0x0C, 0x42, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x569E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x569F, { 0x00, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x03, 0x9F, 0x80, 0x70, 0xB2, 0x80, 0x57, 0xE6, 0x80, 0x52, 0x8C, 0x80, 0x56, 0xE1, 0x80, 0x54, 0x87, 0x00, 0x50, 0xB0, 0x00, 0x50, 0x78, 0x00, 0x51, 0xCE, 0x00, 0x57, 0x03, 0x80, 0x70, 0x20, 0x00, 0x03, 0x27, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xAE, 0x00, 0x07, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A0, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x06, 0x7A, 0x80, 0x74, 0x2A, 0x80, 0x55, 0x2A, 0x80, 0x57, 0x4A, 0x80, 0x54, 0x9A, 0x80, 0x51, 0x42, 0x80, 0x52, 0x22, 0x80, 0x55, 0xD2, 0x80, 0x50, 0x82, 0x80, 0x53, 0xE2, 0x80, 0x70, 0x80, 0x80, 0x04, 0x90, 0x80, 0x02, 0xA0, 0x80, 0x00, 0xF0, 0x80, 0x07, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x48, 0x04, 0x80, 0x12, 0x12, 0x00, 0x6F, 0xFD, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x24, 0x00, 0x78, 0x18, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A3, { 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x09, 0x48, 0x00, 0x02, 0x20, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56A5, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x38, 0x48, 0x00, 0x28, 0x78, 0x00, 0x29, 0x02, 0x00, 0x2F, 0x7A, 0x80, 0x29, 0x4B, 0x00, 0x29, 0x4A, 0x00, 0x3F, 0x7A, 0x80, 0x29, 0x4B, 0x80, 0x20, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x48, 0x80, 0x04, 0x48, 0x80, 0x04, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x22, 0x00, 0x4A, 0xEE, 0x00, 0x4A, 0x44, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0xEE, 0x00, 0x4B, 0x55, 0x00, 0x4A, 0x44, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0x90, 0x00, 0x7A, 0x9F, 0x00, 0x02, 0x90, 0x00, 0x04, 0x90, 0x00, 0x00, 0x90, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x21, 0x00, 0x4A, 0xFC, 0x00, 0x4A, 0x21, 0x00, 0x4A, 0xFF, 0x00, 0x4A, 0x92, 0x00, 0x4A, 0xFE, 0x00, 0x4A, 0x92, 0x00, 0x7A, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x01, 0x49, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A8, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x49, 0x14, 0x00, 0x48, 0xA7, 0x80, 0x4B, 0xF8, 0x80, 0x48, 0x07, 0x80, 0x49, 0xF4, 0x00, 0x49, 0x17, 0x80, 0x49, 0xF4, 0x00, 0x49, 0x17, 0x80, 0x79, 0xF4, 0x00, 0x01, 0x17, 0x80, 0x01, 0x14, 0x00, 0x01, 0x14, 0x80, 0x01, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56A9, { 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x01, 0x85, 0x00, 0x71, 0x3F, 0x80, 0x56, 0x44, 0x00, 0x52, 0xDF, 0x00, 0x51, 0x95, 0x00, 0x51, 0x1F, 0x00, 0x52, 0x55, 0x00, 0x57, 0xDF, 0x00, 0x51, 0x55, 0x00, 0x51, 0x02, 0x00, 0x75, 0x5F, 0x80, 0x0D, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x01, 0x02, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56AB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x9F, 0x00, 0x7B, 0xF1, 0x00, 0x49, 0x51, 0x00, 0x49, 0x5F, 0x00, 0x49, 0x51, 0x00, 0x4B, 0xF1, 0x00, 0x48, 0x9F, 0x00, 0x48, 0x91, 0x00, 0x4B, 0xF1, 0x00, 0x48, 0x9F, 0x00, 0x79, 0xCA, 0x00, 0x02, 0xAA, 0x00, 0x04, 0x9A, 0x80, 0x00, 0x92, 0x80, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56AC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x9F, 0x80, 0x00, 0x82, 0x00, 0x3A, 0xE4, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x2F, 0xF9, 0x00, 0x28, 0x8F, 0x00, 0x28, 0x99, 0x00, 0x2A, 0x99, 0x00, 0x2A, 0xAF, 0x00, 0x3D, 0xC9, 0x00, 0x28, 0x49, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56AD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x04, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x3F, 0x3A, 0x00, 0x21, 0x6B, 0x00, 0x3F, 0x49, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56AE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xF7, 0x80, 0x33, 0x14, 0x80, 0x0D, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x33, 0xF4, 0x80, 0x0D, 0x04, 0x80, 0x09, 0xF5, 0x80, 0x31, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56AF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x38, 0x20, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x2C, 0x72, 0x00, 0x28, 0xA8, 0x00, 0x28, 0x90, 0x00, 0x29, 0xFE, 0x00, 0x2B, 0x10, 0x00, 0x2D, 0xFE, 0x00, 0x39, 0x10, 0x00, 0x29, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56B1, { 0x00, 0x00, 0x00, 0x01, 0x05, 0x00, 0x01, 0xE5, 0x80, 0x71, 0x04, 0x80, 0x57, 0xE4, 0x00, 0x55, 0x27, 0x80, 0x57, 0xDC, 0x00, 0x55, 0x24, 0x00, 0x54, 0xE5, 0x00, 0x54, 0x05, 0x00, 0x57, 0xF7, 0x00, 0x54, 0x02, 0x00, 0x77, 0xE2, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xE6, 0x80, 0x19, 0x4D, 0x80, 0x03, 0xE8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56B3, { 0x00, 0x00, 0x00, 0x05, 0x20, 0x00, 0x1C, 0xCE, 0x00, 0x11, 0x22, 0x00, 0x1C, 0x0E, 0x00, 0x11, 0x22, 0x00, 0x1C, 0xCE, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x08, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56B4, { 0x00, 0x00, 0x00, 0x0F, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x17, 0xC4, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xEF, 0x80, 0x14, 0x49, 0x00, 0x17, 0xD1, 0x00, 0x14, 0x6A, 0x00, 0x17, 0xC6, 0x00, 0x14, 0x44, 0x00, 0x15, 0xCA, 0x00, 0x2E, 0x51, 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x7A, 0x28, 0x80, 0x4B, 0xEF, 0x80, 0x4A, 0x28, 0x80, 0x4B, 0xEF, 0x80, 0x4A, 0x28, 0x80, 0x4B, 0xEF, 0x80, 0x49, 0x45, 0x00, 0x4A, 0x28, 0x80, 0x78, 0x40, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x3C, 0x00, 0x03, 0xE7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56B7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x49, 0xEF, 0x00, 0x49, 0x29, 0x00, 0x49, 0xEF, 0x00, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x00, 0x48, 0x80, 0x03, 0x85, 0x00, 0x00, 0xF2, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56BC, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x01, 0xE1, 0x00, 0x01, 0x10, 0x80, 0x3A, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x44, 0x80, 0x2B, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x2B, 0xE2, 0x00, 0x2A, 0x22, 0x00, 0x3B, 0xFF, 0x80, 0x2B, 0xE2, 0x00, 0x02, 0x12, 0x00, 0x03, 0xEA, 0x00, 0x03, 0xE2, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56BE, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0xC7, 0x80, 0x78, 0x44, 0x00, 0x49, 0xEF, 0x00, 0x49, 0x29, 0x00, 0x49, 0xEF, 0x00, 0x48, 0x42, 0x00, 0x48, 0x44, 0x00, 0x48, 0xFF, 0x00, 0x49, 0x88, 0x00, 0x4A, 0xFE, 0x00, 0x78, 0x88, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56C0, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x3F, 0x80, 0x77, 0xC4, 0x00, 0x51, 0x1F, 0x80, 0x57, 0xD4, 0x80, 0x55, 0x5F, 0x80, 0x55, 0x54, 0x80, 0x57, 0xDF, 0x80, 0x55, 0x49, 0x00, 0x55, 0x5E, 0x80, 0x57, 0xC1, 0x00, 0x71, 0x3F, 0x80, 0x07, 0xC1, 0x00, 0x01, 0x11, 0x00, 0x01, 0x09, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56C1, { 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x78, 0xFC, 0x00, 0x48, 0x84, 0x00, 0x48, 0xFC, 0x00, 0x48, 0x87, 0x00, 0x4B, 0xFC, 0x00, 0x48, 0x04, 0x00, 0x4F, 0xFF, 0x80, 0x4A, 0x49, 0x00, 0x4B, 0xCF, 0x00, 0x7A, 0x49, 0x00, 0x03, 0xCF, 0x00, 0x02, 0x49, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56C2, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x70, 0x03, 0x80, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56C3, { 0x00, 0x00, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x77, 0xD2, 0x00, 0x50, 0x1F, 0x80, 0x52, 0xB2, 0x00, 0x52, 0x92, 0x00, 0x55, 0x52, 0x00, 0x50, 0x1F, 0x80, 0x51, 0x12, 0x00, 0x57, 0xD2, 0x00, 0x51, 0x12, 0x00, 0x73, 0x9F, 0x80, 0x03, 0x52, 0x00, 0x05, 0x52, 0x00, 0x09, 0x12, 0x00, 0x01, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x77, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0x4A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0x54, 0x80, 0x08, 0x55, 0x00, 0x7F, 0x56, 0x00, 0x08, 0x9B, 0x00, 0x08, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56C8, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x78, 0x48, 0x00, 0x48, 0x84, 0x00, 0x4B, 0xE4, 0x00, 0x48, 0x8F, 0x00, 0x4F, 0xF5, 0x00, 0x4A, 0x2D, 0x00, 0x4C, 0xB7, 0x00, 0x49, 0xC5, 0x00, 0x78, 0x85, 0x00, 0x07, 0xE9, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x49, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x48, 0x85, 0x00, 0x4B, 0x0F, 0x80, 0x49, 0x5A, 0x00, 0x48, 0x8A, 0x00, 0x49, 0x2F, 0x00, 0x4B, 0xEA, 0x00, 0x78, 0xAA, 0x00, 0x00, 0x8F, 0x00, 0x01, 0xAA, 0x00, 0x02, 0xAA, 0x00, 0x00, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56CA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0xA2, 0x80, 0x0F, 0xBE, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xA2, 0x00, 0x3E, 0x14, 0x00, 0x03, 0xCC, 0x00, 0x1E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56CB, { 0x00, 0x00, 0x00, 0x05, 0x14, 0x00, 0x07, 0xDF, 0x00, 0x75, 0x14, 0x00, 0x51, 0x04, 0x00, 0x5F, 0xDF, 0x80, 0x52, 0x8A, 0x00, 0x52, 0x4A, 0x80, 0x57, 0xFF, 0x80, 0x52, 0x02, 0x00, 0x53, 0xFE, 0x00, 0x52, 0x02, 0x00, 0x73, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56CC, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x07, 0xFF, 0x80, 0x70, 0x84, 0x00, 0x52, 0x01, 0x80, 0x53, 0xC3, 0x00, 0x52, 0x4E, 0x00, 0x57, 0xE2, 0x00, 0x52, 0xAF, 0x80, 0x53, 0xE2, 0x00, 0x52, 0xA7, 0x00, 0x52, 0xA7, 0x00, 0x73, 0xEA, 0x80, 0x00, 0x0A, 0x00, 0x05, 0x52, 0x00, 0x05, 0x52, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56CD, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56CE, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x91, 0x80, 0x74, 0xB0, 0x80, 0x54, 0x80, 0x00, 0x57, 0xBF, 0x80, 0x54, 0xB5, 0x80, 0x54, 0xAE, 0x80, 0x54, 0xA4, 0x80, 0x57, 0xBF, 0x80, 0x54, 0x80, 0x00, 0x54, 0x9F, 0x00, 0x74, 0x91, 0x00, 0x07, 0x9F, 0x00, 0x02, 0x11, 0x00, 0x06, 0x91, 0x00, 0x0C, 0x5F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56CF, { 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x14, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x36, 0x41, 0x00, 0x62, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56D0, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0xE2, 0x80, 0x71, 0x02, 0x80, 0x5F, 0xF2, 0x00, 0x51, 0x12, 0x00, 0x57, 0xCF, 0x80, 0x51, 0x12, 0x00, 0x5F, 0xF2, 0x00, 0x52, 0x42, 0x00, 0x53, 0xC2, 0x00, 0x50, 0x02, 0x00, 0x7F, 0xF7, 0x00, 0x1A, 0x55, 0x00, 0x1C, 0x75, 0x00, 0x2B, 0x9D, 0x00, 0x09, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56D1, { 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3A, 0x01, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0xD6, 0x00, 0x2A, 0xD6, 0x00, 0x2B, 0xFF, 0x00, 0x2B, 0x49, 0x00, 0x2B, 0xFF, 0x00, 0x3A, 0x40, 0x00, 0x2A, 0xFF, 0x80, 0x03, 0x20, 0x80, 0x03, 0xFC, 0x80, 0x03, 0x24, 0x80, 0x05, 0xFC, 0x80, 0x04, 0x3E, 0x80, 0x0B, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56D3, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xDF, 0x80, 0x71, 0x04, 0x80, 0x57, 0xC4, 0x80, 0x51, 0x08, 0x80, 0x57, 0xD1, 0x80, 0x50, 0x9E, 0x00, 0x50, 0x90, 0x00, 0x5F, 0xFF, 0x80, 0x54, 0x89, 0x00, 0x74, 0x89, 0x00, 0x05, 0x55, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x89, 0x00, 0x05, 0x55, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56D4, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x3C, 0x20, 0x00, 0x29, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x89, 0x00, 0x2D, 0xFE, 0x00, 0x28, 0x88, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0xA4, 0x00, 0x01, 0x98, 0x00, 0x06, 0xCF, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x09, 0x00, 0x23, 0x19, 0x00, 0x21, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xE1, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x20, 0x21, 0x00, 0x3F, 0xE1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x21, 0x41, 0x00, 0x21, 0x21, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x28, 0x05, 0x00, 0x30, 0x03, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x13, 0x00, 0x24, 0x1F, 0x00, 0x38, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x21, 0x81, 0x00, 0x21, 0x01, 0x00, 0x21, 0x11, 0x00, 0x23, 0x19, 0x00, 0x22, 0x09, 0x00, 0x22, 0xF9, 0x00, 0x27, 0x8D, 0x00, 0x2C, 0x05, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x11, 0x00, 0x20, 0x21, 0x00, 0x20, 0x41, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x21, 0xC1, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56DF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x20, 0x12, 0x00, 0x24, 0x32, 0x00, 0x22, 0x22, 0x00, 0x21, 0x62, 0x00, 0x20, 0xC2, 0x00, 0x21, 0xA2, 0x00, 0x23, 0x32, 0x00, 0x2E, 0x12, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x11, 0x00, 0x12, 0x09, 0x00, 0x1C, 0x07, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x27, 0xA1, 0x00, 0x20, 0xE1, 0x00, 0x21, 0xB1, 0x00, 0x27, 0x19, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E2, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x42, 0x00, 0x20, 0x42, 0x00, 0x20, 0x4A, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0xC2, 0x00, 0x21, 0x42, 0x00, 0x22, 0x42, 0x00, 0x24, 0x42, 0x00, 0x28, 0x42, 0x00, 0x30, 0x42, 0x00, 0x21, 0x42, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0x11, 0x00, 0x21, 0x11, 0x00, 0x20, 0x11, 0x00, 0x20, 0x11, 0x00, 0x20, 0x71, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x99, 0x00, 0x20, 0xF1, 0x00, 0x2F, 0x81, 0x00, 0x20, 0x81, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x27, 0xF1, 0x00, 0x20, 0x85, 0x00, 0x20, 0x8D, 0x00, 0x20, 0x79, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x23, 0x21, 0x00, 0x22, 0x25, 0x00, 0x26, 0x25, 0x00, 0x2C, 0x1D, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x45, 0x00, 0x2F, 0x4D, 0x00, 0x21, 0x59, 0x00, 0x23, 0x61, 0x00, 0x22, 0x51, 0x00, 0x26, 0x4D, 0x00, 0x2C, 0x47, 0x00, 0x20, 0x41, 0x00, 0x21, 0xC1, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x26, 0x3D, 0x00, 0x2C, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x21, 0x81, 0x00, 0x23, 0xB1, 0x00, 0x26, 0x99, 0x00, 0x3C, 0x8F, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x24, 0x01, 0x00, 0x27, 0xFD, 0x00, 0x25, 0x25, 0x00, 0x2D, 0x25, 0x00, 0x29, 0x25, 0x00, 0x23, 0x65, 0x00, 0x26, 0x45, 0x00, 0x2C, 0xCD, 0x00, 0x21, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x23, 0x25, 0x00, 0x26, 0x25, 0x00, 0x2C, 0x1D, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x21, 0x41, 0x00, 0x21, 0x49, 0x00, 0x22, 0x59, 0x00, 0x26, 0x71, 0x00, 0x2A, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x45, 0x00, 0x22, 0x45, 0x00, 0x22, 0x3D, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0xE1, 0x00, 0x11, 0x51, 0x00, 0x12, 0x4D, 0x00, 0x14, 0x43, 0x00, 0x18, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x42, 0x00, 0x22, 0xFA, 0x00, 0x21, 0x8A, 0x00, 0x23, 0x1A, 0x00, 0x2E, 0xB2, 0x00, 0x20, 0x62, 0x00, 0x20, 0xC2, 0x00, 0x23, 0xA2, 0x00, 0x2E, 0x12, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x2C, 0x11, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x21, 0x81, 0x00, 0x2C, 0xC5, 0x00, 0x26, 0x4D, 0x00, 0x22, 0x09, 0x00, 0x20, 0x19, 0x00, 0x21, 0xB1, 0x00, 0x20, 0x61, 0x00, 0x20, 0xB1, 0x00, 0x23, 0x99, 0x00, 0x2E, 0x09, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F4, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x8A, 0x00, 0x20, 0xAA, 0x00, 0x20, 0x92, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F5, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x42, 0x00, 0x22, 0x22, 0x00, 0x24, 0x12, 0x00, 0x2A, 0x2E, 0x00, 0x32, 0x42, 0x00, 0x22, 0x82, 0x00, 0x23, 0x02, 0x00, 0x22, 0x12, 0x00, 0x21, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x21, 0xE1, 0x00, 0x20, 0x21, 0x00, 0x23, 0x31, 0x00, 0x26, 0x19, 0x00, 0x2C, 0x8D, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x19, 0x00, 0x20, 0xF1, 0x00, 0x27, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0xA1, 0x00, 0x22, 0xA1, 0x00, 0x22, 0xB1, 0x00, 0x26, 0x99, 0x00, 0x2C, 0x8D, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x41, 0x00, 0x20, 0xA1, 0x00, 0x21, 0x11, 0x00, 0x22, 0x09, 0x00, 0x2C, 0x07, 0x00, 0x23, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x09, 0x00, 0x21, 0x09, 0x00, 0x21, 0x71, 0x00, 0x21, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x2F, 0xFE, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x27, 0xFC, 0x80, 0x24, 0x04, 0x80, 0x24, 0x04, 0x80, 0x27, 0xFC, 0x80, 0x24, 0x04, 0x80, 0x20, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x56FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x91, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56FE, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x23, 0xF2, 0x00, 0x26, 0x22, 0x00, 0x29, 0x42, 0x00, 0x20, 0x82, 0x00, 0x21, 0x42, 0x00, 0x23, 0x22, 0x00, 0x24, 0x9E, 0x00, 0x38, 0x4A, 0x00, 0x23, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x42, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x56FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x01, 0x00, 0x23, 0xF9, 0x00, 0x26, 0x09, 0x00, 0x2B, 0xF9, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF9, 0x00, 0x22, 0x09, 0x00, 0x22, 0x19, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x24, 0x21, 0x00, 0x28, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x01, 0x00, 0x21, 0xF9, 0x00, 0x21, 0x09, 0x00, 0x23, 0x09, 0x00, 0x26, 0x19, 0x00, 0x2C, 0x71, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5701, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5702, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x21, 0x01, 0x00, 0x22, 0x89, 0x00, 0x24, 0x99, 0x00, 0x21, 0x51, 0x00, 0x22, 0x41, 0x00, 0x2C, 0xE1, 0x00, 0x21, 0x71, 0x00, 0x22, 0x59, 0x00, 0x2C, 0x4D, 0x00, 0x21, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5703, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x51, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFD, 0x00, 0x14, 0x45, 0x00, 0x17, 0xFD, 0x00, 0x14, 0x45, 0x00, 0x17, 0xFD, 0x00, 0x14, 0x45, 0x00, 0x14, 0x4D, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5704, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xF9, 0x00, 0x21, 0x09, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5706, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x2F, 0xFA, 0x00, 0x28, 0x0A, 0x00, 0x28, 0x8A, 0x00, 0x28, 0x8A, 0x00, 0x29, 0x4A, 0x00, 0x22, 0x22, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5707, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x40, 0x81, 0x00, 0x41, 0xC1, 0x00, 0x47, 0x71, 0x00, 0x5C, 0x1D, 0x00, 0x43, 0xE1, 0x00, 0x40, 0x01, 0x00, 0x4F, 0xFD, 0x00, 0x49, 0x25, 0x00, 0x4F, 0xFD, 0x00, 0x49, 0x25, 0x00, 0x49, 0x25, 0x00, 0x49, 0x2D, 0x00, 0x40, 0x01, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5708, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x51, 0x00, 0x24, 0x49, 0x00, 0x2F, 0xFD, 0x00, 0x30, 0xA3, 0x00, 0x3F, 0xFF, 0x00, 0x26, 0x19, 0x00, 0x3B, 0xE7, 0x00, 0x22, 0x21, 0x00, 0x22, 0xE1, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5709, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x570A, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x24, 0x19, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x570B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x41, 0x00, 0x20, 0x49, 0x00, 0x3F, 0xC5, 0x00, 0x20, 0x41, 0x00, 0x2F, 0x43, 0x00, 0x29, 0x25, 0x00, 0x2F, 0x29, 0x00, 0x20, 0x11, 0x00, 0x23, 0xB1, 0x00, 0x3C, 0x4B, 0x00, 0x21, 0x87, 0x00, 0x26, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x570C, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x41, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x29, 0x25, 0x00, 0x29, 0x25, 0x00, 0x29, 0x25, 0x00, 0x29, 0x2D, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x570D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xFF, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x41, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x41, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x41, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x570F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x22, 0x91, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x27, 0xE9, 0x00, 0x38, 0x27, 0x00, 0x23, 0xE1, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5711, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0xA1, 0x00, 0x20, 0x91, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x20, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x11, 0x00, 0x20, 0x31, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5712, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x41, 0x00, 0x27, 0xFD, 0x00, 0x20, 0x41, 0x00, 0x2F, 0xFF, 0x00, 0x23, 0xF9, 0x00, 0x22, 0x09, 0x00, 0x23, 0xF9, 0x00, 0x20, 0xC5, 0x00, 0x23, 0x29, 0x00, 0x3D, 0x19, 0x00, 0x21, 0xE7, 0x00, 0x2E, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5713, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x28, 0x05, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5715, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5716, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0xC9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5718, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x3F, 0xFF, 0x80, 0x27, 0xFC, 0x80, 0x24, 0x44, 0x80, 0x27, 0xFC, 0x80, 0x24, 0x44, 0x80, 0x27, 0xFC, 0x80, 0x20, 0x48, 0x80, 0x20, 0x7F, 0x80, 0x2F, 0xC8, 0x80, 0x21, 0x08, 0x80, 0x20, 0x98, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x571A, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x22, 0x11, 0x00, 0x24, 0x09, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x571B, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x29, 0x25, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x571C, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x25, 0x49, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF5, 0x00, 0x21, 0x49, 0x00, 0x2E, 0x31, 0x00, 0x23, 0x8D, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x571D, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x48, 0x84, 0x80, 0x48, 0x84, 0x80, 0x51, 0xE8, 0x80, 0x54, 0x0A, 0x80, 0x48, 0xC4, 0x80, 0x52, 0x09, 0x80, 0x7E, 0xDF, 0x80, 0x4A, 0x05, 0x80, 0x59, 0xEC, 0x80, 0x6F, 0x37, 0x80, 0x49, 0x24, 0x80, 0x49, 0xE4, 0x80, 0x40, 0x00, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x571F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5720, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x80, 0x00, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5722, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5723, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5724, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x38, 0x00, 0x08, 0x2E, 0x00, 0x08, 0x23, 0x00, 0x08, 0x21, 0x80, 0x0F, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5725, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5726, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x1C, 0x28, 0x00, 0x70, 0x6C, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5727, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x30, 0x20, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5728, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5729, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x572A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7F, 0x80, 0x7C, 0xC0, 0x00, 0x11, 0x80, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x06, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x1C, 0x30, 0x00, 0x70, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x80, 0x00, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x572C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x1C, 0x01, 0x00, 0x70, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x572D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x572E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x7C, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x70, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x572F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x7C, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x70, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5730, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x93, 0x00, 0x3E, 0x9D, 0x00, 0x08, 0xB1, 0x00, 0x08, 0xD1, 0x00, 0x0B, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x97, 0x00, 0x38, 0x90, 0x00, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5733, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x78, 0x49, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5734, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x7C, 0xC1, 0x00, 0x10, 0x81, 0x00, 0x11, 0x81, 0x00, 0x10, 0x01, 0x00, 0x10, 0x79, 0x00, 0x10, 0x01, 0x00, 0x1C, 0x01, 0x00, 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5737, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x16, 0x00, 0x10, 0x13, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5738, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x7C, 0x08, 0x00, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x1C, 0x88, 0x80, 0x70, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5739, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x79, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x573A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x40, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1D, 0x12, 0x00, 0x71, 0x22, 0x00, 0x22, 0x22, 0x00, 0x04, 0x42, 0x00, 0x08, 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x573B, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x30, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x573D, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x10, 0xA4, 0x80, 0x7D, 0xA4, 0x80, 0x11, 0x24, 0x80, 0x13, 0x24, 0x80, 0x10, 0x64, 0x80, 0x10, 0x4C, 0x80, 0x1C, 0xC8, 0x80, 0x71, 0x98, 0x80, 0x03, 0x10, 0x80, 0x00, 0x31, 0x80, 0x00, 0x61, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x573E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x8C, 0x00, 0x10, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x42, 0x00, 0x11, 0x62, 0x00, 0x11, 0x26, 0x00, 0x1D, 0x34, 0x00, 0x31, 0x1C, 0x00, 0x63, 0x08, 0x00, 0x02, 0x1C, 0x00, 0x02, 0x36, 0x00, 0x06, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x573F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x11, 0xC7, 0x00, 0x13, 0x45, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5740, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x48, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5742, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0xC2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x0E, 0x88, 0x00, 0x39, 0x08, 0x00, 0x01, 0x14, 0x00, 0x02, 0x22, 0x00, 0x04, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5745, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x02, 0x00, 0x70, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5746, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x7C, 0x82, 0x00, 0x11, 0xC2, 0x00, 0x13, 0x46, 0x00, 0x10, 0x64, 0x00, 0x10, 0x2C, 0x00, 0x10, 0x38, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5747, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x08, 0x7C, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x09, 0x80, 0x80, 0x0E, 0xFE, 0x80, 0x30, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x574A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x0F, 0x41, 0x00, 0x38, 0x41, 0x00, 0x00, 0x81, 0x00, 0x01, 0x02, 0x00, 0x06, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x574C, { 0x00, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x38, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x574D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x8A, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x31, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x574E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x91, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x0F, 0x44, 0x00, 0x38, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x574F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x7C, 0x18, 0x00, 0x10, 0x10, 0x00, 0x10, 0x34, 0x00, 0x10, 0x76, 0x00, 0x10, 0xD3, 0x00, 0x11, 0x91, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5750, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x20, 0xE0, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5751, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x38, 0x22, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x80, 0x00, 0x82, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5752, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x23, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x80, 0x10, 0x21, 0x80, 0x1F, 0x3F, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5757, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFE, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x0E, 0x40, 0x00, 0x78, 0xA0, 0x00, 0x20, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x575A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0xFC, 0x00, 0x12, 0x84, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x30, 0x00, 0x12, 0x10, 0x00, 0x12, 0x68, 0x00, 0x13, 0x87, 0x00, 0x02, 0x82, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x575B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x48, 0x00, 0x0E, 0x84, 0x00, 0x78, 0x82, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x575C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x7F, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x79, 0x22, 0x00, 0x22, 0x42, 0x00, 0x02, 0x42, 0x00, 0x04, 0x94, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x575D, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0x92, 0x00, 0x20, 0x28, 0x00, 0x00, 0x24, 0x00, 0x00, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x575E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7E, 0x84, 0x00, 0x08, 0x94, 0x00, 0x08, 0x88, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x0E, 0x12, 0x00, 0x79, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x575F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x28, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x28, 0x00, 0x20, 0x44, 0x00, 0x00, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5760, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x24, 0x50, 0x00, 0x28, 0x50, 0x00, 0x24, 0x50, 0x00, 0x22, 0x88, 0x00, 0x32, 0x84, 0x00, 0x2D, 0x07, 0x00, 0x22, 0x02, 0x00, 0x20, 0x80, 0x00, 0x2F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5761, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x00, 0x3E, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0x92, 0x00, 0x08, 0x94, 0x00, 0x0E, 0x8C, 0x00, 0x39, 0x08, 0x00, 0x01, 0x14, 0x00, 0x02, 0x22, 0x00, 0x02, 0x41, 0x00, 0x05, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5762, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x11, 0x11, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5764, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x0F, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5765, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5766, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5767, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x30, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x10, 0x61, 0x00, 0x10, 0xE1, 0x00, 0x1D, 0xA1, 0x00, 0x30, 0x21, 0x00, 0x40, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5768, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7D, 0x00, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x47, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x70, 0x40, 0x00, 0x00, 0x40, 0x80, 0x00, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5769, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x576A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x91, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x576B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x78, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x576D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x20, 0x00, 0x11, 0x23, 0x00, 0x11, 0x2E, 0x00, 0x1D, 0x38, 0x00, 0x31, 0x20, 0x00, 0x63, 0x20, 0x00, 0x02, 0x20, 0x80, 0x06, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x576E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x4F, 0x00, 0x08, 0xF0, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x30, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x576F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x34, 0x00, 0x10, 0x36, 0x00, 0x10, 0x72, 0x00, 0x10, 0xD3, 0x00, 0x11, 0x91, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5770, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x0F, 0xBD, 0x00, 0x38, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5771, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x1C, 0x6C, 0x00, 0x70, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5773, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x84, 0x00, 0x11, 0x04, 0x00, 0x7B, 0x1F, 0x80, 0x12, 0x44, 0x80, 0x13, 0x44, 0x80, 0x11, 0xC4, 0x80, 0x10, 0x84, 0x80, 0x10, 0x84, 0x80, 0x1D, 0x8C, 0x80, 0x71, 0x28, 0x80, 0x01, 0x29, 0x80, 0x03, 0xF9, 0x00, 0x06, 0x11, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5774, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x9F, 0x00, 0x38, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5775, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0x84, 0x00, 0x38, 0x84, 0x00, 0x00, 0x84, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5776, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x7E, 0x94, 0x00, 0x08, 0x85, 0x00, 0x0B, 0xFF, 0x00, 0x09, 0x04, 0x00, 0x09, 0x44, 0x00, 0x0F, 0x24, 0x00, 0x79, 0x24, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5777, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x7C, 0xF2, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1C, 0xF2, 0x00, 0x70, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5779, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x3C, 0x80, 0x10, 0x04, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x1C, 0x66, 0x00, 0x70, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x577A, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x26, 0x00, 0x10, 0x22, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x10, 0x72, 0x00, 0x10, 0x56, 0x00, 0x10, 0x54, 0x00, 0x1C, 0xDC, 0x00, 0x30, 0x88, 0x00, 0x61, 0x9C, 0x00, 0x03, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x577B, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8C, 0x00, 0x1C, 0x84, 0x00, 0x70, 0xE4, 0x00, 0x03, 0x86, 0x00, 0x00, 0x02, 0x80, 0x03, 0xFB, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x577C, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x86, 0x00, 0x0E, 0x85, 0x00, 0x39, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x577E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x577F, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x82, 0x00, 0x7D, 0xBF, 0x80, 0x11, 0x82, 0x00, 0x12, 0x82, 0x00, 0x14, 0x92, 0x00, 0x10, 0x9A, 0x00, 0x10, 0x8A, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5781, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x7D, 0x90, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x38, 0x00, 0x70, 0x28, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5782, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5783, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x4C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5784, { 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x01, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x80, 0x00, 0x02, 0x88, 0x00, 0x04, 0x90, 0x00, 0x08, 0xE2, 0x00, 0x13, 0x82, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5785, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x94, 0x00, 0x0E, 0x94, 0x00, 0x78, 0x98, 0x00, 0x21, 0x31, 0x00, 0x01, 0x51, 0x00, 0x02, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5786, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x7F, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x0F, 0x04, 0x00, 0x79, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5788, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x40, 0x00, 0x18, 0x4F, 0x80, 0x1B, 0xF0, 0x00, 0x28, 0x40, 0x00, 0x08, 0x20, 0x00, 0x08, 0x18, 0x80, 0x08, 0x47, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5789, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x81, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xF9, 0x00, 0x13, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0xFB, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x578B, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xE9, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x81, 0x00, 0x20, 0x43, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x578C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x45, 0x00, 0x1D, 0x45, 0x00, 0x71, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5792, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x12, 0x24, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5793, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x09, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x49, 0x00, 0x08, 0x31, 0x00, 0x0E, 0x22, 0x00, 0x38, 0xC4, 0x00, 0x03, 0x0A, 0x00, 0x00, 0x11, 0x00, 0x00, 0x60, 0x80, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5794, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x40, 0x00, 0x1F, 0xFC, 0x00, 0x12, 0x44, 0x00, 0x14, 0x44, 0x00, 0x18, 0x7C, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5795, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5797, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x12, 0x49, 0x00, 0x13, 0x4B, 0x00, 0x11, 0x4E, 0x00, 0x7D, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x11, 0xCE, 0x00, 0x13, 0x4B, 0x00, 0x10, 0x49, 0x00, 0x1C, 0x48, 0x00, 0x70, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5799, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x80, 0x01, 0x84, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x579A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x78, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x579B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0B, 0x26, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x60, 0x00, 0x0E, 0x70, 0x00, 0x78, 0xA8, 0x00, 0x21, 0x24, 0x00, 0x02, 0x23, 0x00, 0x04, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x579C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x12, 0x00, 0x10, 0x13, 0x80, 0x7C, 0x30, 0x80, 0x10, 0x60, 0x80, 0x10, 0xC1, 0x80, 0x11, 0x97, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x54, 0x00, 0x70, 0xD6, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x579D, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x88, 0x00, 0x7D, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xBE, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x1C, 0xA2, 0x00, 0x70, 0xA6, 0x00, 0x01, 0xA0, 0x00, 0x01, 0x20, 0x80, 0x03, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x579E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x11, 0x06, 0x80, 0x7C, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x00, 0x20, 0x80, 0x00, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x579F, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x90, 0x80, 0x08, 0x91, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x8C, 0x00, 0x30, 0x88, 0x00, 0x00, 0xF4, 0x00, 0x03, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57A1, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x42, 0x00, 0x1B, 0xFF, 0x80, 0x70, 0x20, 0x00, 0x10, 0x22, 0x00, 0x10, 0x36, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x78, 0x80, 0x13, 0xCD, 0x80, 0x10, 0x87, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A2, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x41, 0x00, 0x01, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x82, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x7C, 0xC2, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xF1, 0x80, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A6, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x11, 0x04, 0x00, 0x10, 0xC8, 0x00, 0x12, 0x30, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A7, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x30, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x3C, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x1D, 0x24, 0x80, 0x71, 0x3C, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57A8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7D, 0x00, 0x80, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1C, 0xC4, 0x00, 0x70, 0x64, 0x00, 0x00, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x11, 0x22, 0x00, 0x19, 0x26, 0x00, 0x09, 0x24, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57AA, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57AB, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x7E, 0x00, 0x04, 0x24, 0x00, 0x05, 0x64, 0x00, 0x0E, 0x34, 0x00, 0x34, 0x2C, 0x00, 0x04, 0x45, 0x00, 0x15, 0x83, 0x00, 0x08, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57AC, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57AD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0x54, 0x00, 0x09, 0x54, 0x00, 0x0E, 0x50, 0x00, 0x78, 0x50, 0x00, 0x20, 0x50, 0x00, 0x00, 0x52, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57AE, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x7C, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x07, 0x00, 0x12, 0xFA, 0x00, 0x14, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x1C, 0x40, 0x00, 0x70, 0xFC, 0x00, 0x20, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57B0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x1F, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x1E, 0x00, 0x00, 0x13, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57B2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x7E, 0x02, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x0F, 0x04, 0x00, 0x79, 0x00, 0x00, 0x21, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57B3, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x5F, 0x00, 0x10, 0x80, 0x00, 0x11, 0x00, 0x00, 0x7C, 0x40, 0x00, 0x10, 0x5F, 0x80, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x12, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57B4, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x22, 0x00, 0x12, 0x52, 0x00, 0x1E, 0x4A, 0x00, 0x72, 0x8A, 0x00, 0x22, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57B8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x1C, 0x48, 0x00, 0x70, 0x48, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57BD, { 0x00, 0x00, 0x00, 0x18, 0x07, 0x00, 0x0C, 0xFC, 0x00, 0x60, 0x80, 0x00, 0x30, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x0C, 0x88, 0x00, 0x39, 0x88, 0x00, 0x61, 0x08, 0x00, 0x03, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57C0, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x04, 0x92, 0x00, 0x3C, 0x9C, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x91, 0x00, 0x34, 0x8F, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57C2, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x1E, 0x22, 0x00, 0x71, 0xA0, 0x00, 0x20, 0x40, 0x00, 0x00, 0xB0, 0x00, 0x03, 0x0F, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57C3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0x47, 0x00, 0x08, 0xF8, 0x80, 0x3E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0E, 0xFF, 0x80, 0x30, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0x00, 0x00, 0xC2, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57C6, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7F, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x84, 0x00, 0x7C, 0xFF, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x1C, 0xFF, 0x80, 0x70, 0x80, 0x80, 0x00, 0x80, 0x80, 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57C7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x0F, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57C8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0x4F, 0x00, 0x09, 0xF4, 0x80, 0x3E, 0x24, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x0E, 0x82, 0x00, 0x39, 0x44, 0x00, 0x06, 0x28, 0x00, 0x00, 0x18, 0x00, 0x00, 0x66, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57CB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x3F, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57CC, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x7D, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x10, 0x80, 0x1D, 0x19, 0x80, 0x71, 0x0B, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x66, 0x00, 0x01, 0xC3, 0x00, 0x07, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57CE, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x12, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x09, 0x11, 0x00, 0x09, 0xF1, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x0F, 0x2C, 0x00, 0x39, 0x28, 0x00, 0x01, 0x4C, 0x00, 0x02, 0x14, 0x80, 0x02, 0x22, 0x80, 0x04, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57CF, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x13, 0xC7, 0x00, 0x10, 0x5C, 0x00, 0x10, 0x44, 0x00, 0x7C, 0x84, 0x00, 0x10, 0x94, 0x00, 0x11, 0xD7, 0x00, 0x10, 0x54, 0x00, 0x11, 0x54, 0x00, 0x11, 0x54, 0x00, 0x1D, 0x54, 0x00, 0x71, 0xD4, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57D2, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x0B, 0x00, 0x7C, 0x99, 0x80, 0x11, 0x90, 0x80, 0x11, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x1C, 0xC2, 0x00, 0x70, 0x62, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57D3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x31, 0x00, 0x10, 0x6B, 0x00, 0x11, 0xC6, 0x00, 0x7C, 0x2C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x70, 0x00, 0x11, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x80, 0x1C, 0x02, 0x00, 0x70, 0xC2, 0x00, 0x00, 0x62, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57D4, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57D5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57D6, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x28, 0x00, 0x10, 0x28, 0x00, 0x10, 0x69, 0x80, 0x10, 0x4B, 0x00, 0x10, 0xCE, 0x00, 0x1D, 0xC8, 0x00, 0x73, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x80, 0x00, 0x49, 0x80, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57D8, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x44, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x44, 0x00, 0x12, 0x45, 0x00, 0x7E, 0x7F, 0x00, 0x12, 0x44, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x64, 0x00, 0x12, 0x54, 0x00, 0x12, 0x54, 0x00, 0x1E, 0x44, 0x00, 0x73, 0xC4, 0x00, 0x22, 0x44, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57D9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x7E, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x0F, 0x12, 0x00, 0x79, 0x22, 0x00, 0x21, 0x22, 0x00, 0x00, 0x4C, 0x00, 0x01, 0x82, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57DA, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x7E, 0xA4, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x79, 0x5A, 0x00, 0x21, 0x8A, 0x00, 0x01, 0x02, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57DC, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x35, 0x6B, 0x00, 0x24, 0x49, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57DD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x80, 0x10, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x1C, 0x34, 0x00, 0x70, 0x18, 0x00, 0x01, 0x4B, 0x00, 0x01, 0x41, 0x80, 0x03, 0x62, 0x80, 0x02, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57DE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x1C, 0x90, 0x00, 0x70, 0x90, 0x00, 0x00, 0x90, 0x00, 0x01, 0xD0, 0x00, 0x01, 0x70, 0x00, 0x03, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57DF, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x80, 0x09, 0xE8, 0x80, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEA, 0x00, 0x0E, 0x0A, 0x00, 0x38, 0x7C, 0x00, 0x07, 0x88, 0x80, 0x00, 0x14, 0x80, 0x00, 0x62, 0x80, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57E0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x90, 0x00, 0x30, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x7D, 0xC7, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xC7, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x44, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57E3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC7, 0x00, 0x13, 0x6D, 0x80, 0x10, 0x00, 0x00, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57E4, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x21, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x1C, 0x88, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57E6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7C, 0x80, 0x00, 0x10, 0xEF, 0x00, 0x10, 0xA9, 0x00, 0x11, 0xA9, 0x00, 0x13, 0x29, 0x00, 0x10, 0xE9, 0x00, 0x1C, 0x4B, 0x00, 0x70, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57E7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57E9, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF2, 0x00, 0x10, 0x53, 0x00, 0x7C, 0x89, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x1C, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57ED, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x22, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x11, 0x23, 0x00, 0x11, 0xA6, 0x00, 0x10, 0xAC, 0x00, 0x1C, 0x30, 0x00, 0x71, 0xAC, 0x00, 0x03, 0x26, 0x00, 0x06, 0x23, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57EF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x7E, 0xA8, 0x00, 0x09, 0xFC, 0x00, 0x0B, 0x27, 0x00, 0x0D, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x0F, 0x24, 0x00, 0x79, 0x24, 0x00, 0x21, 0xFC, 0x00, 0x01, 0x25, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57F0, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x71, 0x00, 0x08, 0x48, 0x80, 0x08, 0x84, 0x00, 0x3F, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0E, 0x38, 0x00, 0x30, 0x34, 0x00, 0x00, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57F4, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x0F, 0x21, 0x00, 0x39, 0x3F, 0x00, 0x01, 0x21, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57F5, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x70, 0x92, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57F6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x92, 0x00, 0x12, 0x12, 0x00, 0x12, 0x52, 0x00, 0x63, 0xB2, 0x00, 0x08, 0x12, 0x00, 0x08, 0x1A, 0x00, 0x3F, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x22, 0x80, 0x0F, 0x62, 0x80, 0x78, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57F7, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x7E, 0x00, 0x3F, 0x92, 0x00, 0x11, 0x52, 0x00, 0x0A, 0x32, 0x00, 0x3F, 0x9A, 0x00, 0x04, 0x16, 0x00, 0x04, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x04, 0x22, 0x80, 0x04, 0x22, 0x80, 0x04, 0x41, 0x80, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x57F8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x1D, 0x92, 0x80, 0x73, 0x36, 0x80, 0x00, 0x64, 0x80, 0x00, 0xCD, 0x80, 0x00, 0x19, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57F9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x30, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57FA, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57FC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0E, 0xFA, 0x00, 0x30, 0x8A, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57FD, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x02, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x33, 0x00, 0x11, 0x16, 0x00, 0x11, 0x0C, 0x00, 0x1F, 0x1E, 0x00, 0x71, 0x73, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x57FF, { 0x00, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x00, 0x00, 0x01, 0x46, 0x00, 0x0D, 0x5C, 0x00, 0x39, 0x70, 0x00, 0x63, 0x40, 0x80, 0x06, 0x61, 0x80, 0x00, 0xBF, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5800, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x0F, 0x08, 0x00, 0x39, 0x49, 0x00, 0x01, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5802, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5803, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x33, 0x33, 0x00, 0x22, 0x22, 0x00, 0x6E, 0xEE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5804, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x60, 0x00, 0x11, 0xCF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x1C, 0x48, 0x00, 0x70, 0x48, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5805, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x21, 0x00, 0x24, 0x22, 0x00, 0x3F, 0x12, 0x00, 0x21, 0x14, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x14, 0x00, 0x24, 0x23, 0x00, 0x3F, 0xC0, 0x80, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5806, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC8, 0x00, 0x3E, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5807, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5808, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xA2, 0x80, 0x08, 0x94, 0x80, 0x3E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x0F, 0xAA, 0x80, 0x38, 0xBE, 0x80, 0x00, 0xA2, 0x80, 0x00, 0x80, 0x80, 0x00, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5809, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x9F, 0x00, 0x09, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x580A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x580B, { 0x00, 0x00, 0x00, 0x11, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x1D, 0x24, 0x80, 0x71, 0x24, 0x80, 0x01, 0x24, 0x80, 0x03, 0x24, 0x80, 0x02, 0x24, 0x80, 0x06, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x580C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x7E, 0xFD, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0x79, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x72, 0x79, 0x00, 0x02, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x580D, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0xC4, 0x00, 0x11, 0x8C, 0x00, 0x11, 0x08, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x31, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x1C, 0x6E, 0x00, 0x70, 0x4B, 0x00, 0x00, 0xC8, 0x80, 0x01, 0x89, 0x80, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5811, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x7F, 0x78, 0x00, 0x10, 0x40, 0x00, 0x14, 0x42, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x48, 0x00, 0x07, 0xC8, 0x00, 0x7C, 0x88, 0x00, 0x25, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5815, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x28, 0x3F, 0x00, 0x24, 0x61, 0x00, 0x22, 0xBF, 0x00, 0x22, 0x21, 0x00, 0x2E, 0x3F, 0x00, 0x20, 0x21, 0x00, 0x20, 0x23, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5819, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x581B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x31, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x581D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x9E, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x1D, 0x45, 0x00, 0x71, 0x45, 0x00, 0x01, 0x45, 0x00, 0x01, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x581E, { 0x00, 0x00, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0xA2, 0x00, 0x3E, 0xA2, 0x00, 0x08, 0xBE, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x0E, 0x08, 0x00, 0x39, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x49, 0x00, 0x01, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x581F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x7C, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x51, 0x00, 0x09, 0x9B, 0x00, 0x0C, 0x2A, 0x00, 0x38, 0x48, 0x00, 0x61, 0x9C, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x49, 0x00, 0x01, 0x88, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5820, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0xBE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x13, 0x20, 0x00, 0x15, 0x3F, 0x00, 0x11, 0x48, 0x00, 0x11, 0x08, 0x00, 0x1D, 0x7F, 0x80, 0x31, 0x08, 0x00, 0x61, 0x1C, 0x00, 0x01, 0x14, 0x00, 0x01, 0x36, 0x00, 0x01, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5821, { 0x00, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x38, 0x00, 0x08, 0xD6, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x50, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5824, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x0E, 0x90, 0x00, 0x30, 0x90, 0x00, 0x01, 0x50, 0x00, 0x02, 0x3F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5826, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x11, 0x09, 0x80, 0x11, 0xEF, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x08, 0x80, 0x11, 0xE7, 0x80, 0x13, 0x10, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x31, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5827, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x29, 0x00, 0x3F, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x2B, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x582A, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xFF, 0x80, 0x31, 0x24, 0x80, 0x01, 0x47, 0x80, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x582D, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x30, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x582F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x07, 0x84, 0x00, 0x38, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5830, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x7E, 0x00, 0x09, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x3F, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x0F, 0x64, 0x00, 0x39, 0x98, 0x00, 0x02, 0x24, 0x00, 0x02, 0xC2, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5831, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x1F, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x3F, 0xC7, 0x00, 0x00, 0x40, 0x00, 0x11, 0x7F, 0x00, 0x0A, 0x51, 0x00, 0x3F, 0xD1, 0x00, 0x04, 0x4A, 0x00, 0x04, 0x4A, 0x00, 0x3F, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x04, 0x49, 0x00, 0x04, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5832, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x27, 0x21, 0x00, 0x3C, 0x2F, 0x00, 0x21, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5834, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x0E, 0x92, 0x80, 0x33, 0x22, 0x80, 0x00, 0x44, 0x80, 0x00, 0x88, 0x80, 0x03, 0x31, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5835, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x14, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x0E, 0x40, 0x00, 0x39, 0xFF, 0x00, 0x06, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5839, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x583A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x24, 0x00, 0x0F, 0x66, 0x00, 0x30, 0xA5, 0x00, 0x01, 0x24, 0x80, 0x06, 0x44, 0x00, 0x18, 0x44, 0x00, 0x00, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x583D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1D, 0x0F, 0x00, 0x71, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x583F, { 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x10, 0x04, 0x80, 0x10, 0x04, 0x80, 0x11, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x7D, 0x74, 0x00, 0x11, 0x05, 0x00, 0x11, 0x75, 0x00, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x1D, 0x57, 0x00, 0x31, 0x72, 0x00, 0x61, 0x06, 0x80, 0x03, 0x0E, 0x80, 0x02, 0x1B, 0x80, 0x06, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5840, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x42, 0x00, 0x12, 0x24, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x1F, 0xFF, 0x80, 0x72, 0x24, 0x00, 0x06, 0x64, 0x00, 0x04, 0x44, 0x00, 0x0C, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5841, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x30, 0x03, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5844, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x7F, 0xFE, 0x00, 0x09, 0x22, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0E, 0x7C, 0x00, 0x78, 0x44, 0x00, 0x20, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x14, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5849, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xD7, 0x00, 0x10, 0x38, 0x00, 0x7D, 0xAB, 0x00, 0x10, 0x44, 0x00, 0x10, 0xFE, 0x00, 0x13, 0x83, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x584A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x4A, 0x00, 0x0F, 0x4D, 0x00, 0x38, 0x4B, 0x00, 0x00, 0x8C, 0x80, 0x00, 0x88, 0x80, 0x03, 0x0F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x584B, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x14, 0x94, 0x80, 0x15, 0x15, 0x00, 0x24, 0x24, 0x00, 0x06, 0x0A, 0x00, 0x09, 0x11, 0x00, 0x10, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x584C, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x61, 0x80, 0x10, 0xA2, 0x80, 0x1D, 0x65, 0x80, 0x30, 0x61, 0x80, 0x60, 0xA2, 0x80, 0x01, 0x24, 0x80, 0x02, 0x28, 0x80, 0x00, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x584D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x34, 0x48, 0x00, 0x2C, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x86, 0x00, 0x35, 0x93, 0x00, 0x2F, 0x11, 0x80, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4D, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x584F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x42, 0x00, 0x00, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5850, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x48, 0x00, 0x10, 0x92, 0x00, 0x1C, 0x61, 0x00, 0x71, 0xFF, 0x80, 0x00, 0x10, 0x80, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x01, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5851, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0A, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x04, 0x1F, 0x00, 0x24, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x08, 0x21, 0x00, 0x30, 0x43, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5852, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x5F, 0x00, 0x12, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x41, 0x00, 0x1E, 0x51, 0x00, 0x73, 0xD9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5854, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x3E, 0x54, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x80, 0x0E, 0xFE, 0x00, 0x38, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5855, { 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x13, 0x21, 0x80, 0x10, 0x24, 0x00, 0x7C, 0x42, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xEF, 0x80, 0x10, 0xA2, 0x80, 0x1D, 0x24, 0x80, 0x70, 0x61, 0x80, 0x00, 0xA2, 0x80, 0x01, 0x24, 0x80, 0x02, 0x28, 0x80, 0x00, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5857, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x28, 0x00, 0x00, 0xC6, 0x00, 0x23, 0x01, 0x80, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x10, 0x94, 0x00, 0x11, 0x12, 0x00, 0x20, 0x30, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5858, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x3F, 0x09, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x09, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x39, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5859, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x1E, 0x7C, 0x80, 0x72, 0x44, 0x80, 0x02, 0x44, 0x80, 0x02, 0x7C, 0x80, 0x02, 0x00, 0x80, 0x02, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x585A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x51, 0x00, 0x09, 0x9A, 0x00, 0x08, 0x2C, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x9C, 0x00, 0x03, 0x2A, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x91, 0x00, 0x03, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x585E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x585F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x23, 0x00, 0x71, 0x3E, 0x00, 0x1A, 0x20, 0x80, 0x0C, 0x21, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5861, { 0x00, 0x00, 0x00, 0x08, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x7F, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5862, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x84, 0x80, 0x38, 0x12, 0x80, 0x00, 0x09, 0x80, 0x02, 0x48, 0x80, 0x06, 0x21, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5864, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5865, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x8A, 0x00, 0x0E, 0x52, 0x00, 0x7A, 0xFA, 0x00, 0x22, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x2A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5867, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x10, 0x8C, 0x00, 0x11, 0x86, 0x00, 0x13, 0x7B, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x11, 0x06, 0x00, 0x13, 0x03, 0x00, 0x16, 0x01, 0x80, 0x10, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x72, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5868, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x13, 0x21, 0x80, 0x10, 0x20, 0x00, 0x1C, 0xA9, 0x00, 0x70, 0xA9, 0x80, 0x01, 0xAC, 0x80, 0x03, 0x24, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5869, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x16, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x7D, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x72, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x586B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x586C, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0x22, 0x00, 0x09, 0x7F, 0x00, 0x7F, 0x42, 0x00, 0x09, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x09, 0x42, 0x00, 0x09, 0x42, 0x00, 0x0F, 0x7E, 0x00, 0x79, 0x10, 0x00, 0x22, 0x54, 0x00, 0x02, 0x93, 0x00, 0x05, 0x11, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5870, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0xFF, 0x80, 0x1B, 0x00, 0x00, 0x06, 0xFF, 0x00, 0x60, 0x91, 0x00, 0x30, 0x89, 0x00, 0x03, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x19, 0x09, 0x00, 0x31, 0xFF, 0x80, 0x60, 0x02, 0x00, 0x00, 0x86, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5872, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x13, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x80, 0x00, 0x71, 0xFF, 0x00, 0x03, 0x49, 0x00, 0x00, 0x91, 0x00, 0x03, 0x23, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5875, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x09, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xD3, 0x80, 0x12, 0x1C, 0x00, 0x13, 0xF0, 0x80, 0x1E, 0x3F, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5878, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3C, 0x00, 0x7D, 0x24, 0x00, 0x11, 0x3C, 0x00, 0x11, 0x00, 0x00, 0x11, 0x77, 0x00, 0x11, 0x55, 0x00, 0x1D, 0x55, 0x00, 0x31, 0x77, 0x00, 0x61, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5879, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x3F, 0xB8, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x587C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x0A, 0x1F, 0x80, 0x0F, 0xE4, 0x80, 0x08, 0x04, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x587E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x0A, 0x00, 0x1F, 0x0A, 0x00, 0x00, 0x2A, 0x00, 0x1F, 0x12, 0x00, 0x02, 0x1A, 0x00, 0x07, 0xA2, 0x80, 0x3C, 0x23, 0x80, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x587F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x13, 0xFF, 0x80, 0x7D, 0x22, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0xFE, 0x00, 0x1C, 0x80, 0x00, 0x33, 0xFF, 0x80, 0x60, 0x88, 0x00, 0x01, 0xD8, 0x00, 0x00, 0x70, 0x00, 0x03, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5880, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x6B, 0x00, 0x11, 0x08, 0x00, 0x11, 0x6B, 0x00, 0x11, 0x00, 0x00, 0x11, 0x28, 0x00, 0x1D, 0x3F, 0x00, 0x31, 0x48, 0x00, 0x61, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x03, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5881, { 0x00, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x7A, 0x00, 0x11, 0x02, 0x00, 0x7D, 0x7A, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1D, 0xFE, 0x00, 0x30, 0x84, 0x00, 0x60, 0x58, 0x00, 0x00, 0x30, 0x00, 0x00, 0xEC, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5883, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x24, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0F, 0x82, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x80, 0x00, 0x88, 0x80, 0x03, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5885, { 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x09, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x07, 0xC8, 0x00, 0x3C, 0x18, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5887, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x30, 0xFF, 0x00, 0x60, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5888, { 0x00, 0x00, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x17, 0xFF, 0x80, 0x7A, 0x24, 0x80, 0x13, 0xE4, 0x80, 0x12, 0x24, 0x80, 0x13, 0xE4, 0x80, 0x12, 0x24, 0x80, 0x17, 0xF4, 0x80, 0x1A, 0xA4, 0x80, 0x32, 0xA4, 0x80, 0x62, 0xA8, 0x80, 0x03, 0x30, 0x80, 0x02, 0x05, 0x80, 0x01, 0xF3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5889, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x09, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x0F, 0x49, 0x00, 0x39, 0x7F, 0x00, 0x01, 0x49, 0x00, 0x01, 0x7F, 0x00, 0x02, 0x49, 0x00, 0x04, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x588A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x7E, 0x00, 0x08, 0x12, 0x00, 0x7F, 0x92, 0x00, 0x12, 0x12, 0x00, 0x7F, 0xB2, 0x00, 0x08, 0x1A, 0x00, 0x7F, 0xA2, 0x80, 0x08, 0x42, 0x80, 0x08, 0x03, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x588C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x7C, 0x00, 0x1E, 0x00, 0x00, 0x32, 0xA9, 0x00, 0x62, 0xA9, 0x00, 0x06, 0x94, 0x80, 0x0C, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x588D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x26, 0x14, 0x00, 0x3C, 0x14, 0x00, 0x21, 0x25, 0x00, 0x3F, 0x43, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x588F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x22, 0x3F, 0x00, 0x22, 0xE9, 0x00, 0x3E, 0x2E, 0x00, 0x02, 0xF8, 0x00, 0x7E, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x12, 0x62, 0x00, 0x32, 0x22, 0x00, 0x62, 0x0E, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5890, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5892, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x7E, 0x4A, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x86, 0x00, 0x09, 0x7A, 0x00, 0x0F, 0x4A, 0x00, 0x79, 0x4A, 0x00, 0x21, 0x7A, 0x00, 0x01, 0x02, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5893, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x90, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5894, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x7C, 0x90, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x13, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x10, 0x00, 0x31, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5896, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x7C, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5897, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x7D, 0x10, 0x80, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x70, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5899, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x7D, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x1D, 0x74, 0x00, 0x71, 0x54, 0x00, 0x21, 0x74, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x589A, { 0x00, 0x00, 0x00, 0x12, 0x04, 0x00, 0x11, 0x7E, 0x00, 0x14, 0x24, 0x00, 0x12, 0x64, 0x00, 0x10, 0xA4, 0x00, 0x7E, 0x44, 0x00, 0x12, 0x54, 0x00, 0x14, 0x88, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x1C, 0x20, 0x00, 0x70, 0x70, 0x00, 0x20, 0xA8, 0x00, 0x01, 0x27, 0x00, 0x06, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x589C, { 0x00, 0x00, 0x00, 0x3C, 0x18, 0x00, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x2B, 0x7D, 0x80, 0x24, 0x30, 0x00, 0x24, 0xDA, 0x00, 0x27, 0x1C, 0x00, 0x24, 0x6C, 0x00, 0x25, 0x9A, 0x00, 0x3C, 0x69, 0x80, 0x21, 0xB0, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x589D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x82, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x82, 0x00, 0x10, 0xE2, 0x00, 0x13, 0x8F, 0x80, 0x1C, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x60, 0x48, 0x00, 0x00, 0x48, 0x80, 0x00, 0xC8, 0x80, 0x03, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x589E, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x02, 0x00, 0x08, 0x41, 0x80, 0x09, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xAA, 0x80, 0x08, 0x9C, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x589F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x3F, 0x1F, 0x00, 0x09, 0xF1, 0x00, 0x09, 0x1F, 0x00, 0x09, 0x00, 0x00, 0x09, 0x55, 0x00, 0x0F, 0x55, 0x00, 0x39, 0x55, 0x00, 0x01, 0x77, 0x00, 0x02, 0x14, 0x00, 0x02, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58A0, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58A1, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x91, 0x00, 0x10, 0x52, 0x00, 0x11, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x70, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58A2, { 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x10, 0x14, 0x80, 0x11, 0xA9, 0x00, 0x10, 0x46, 0x00, 0x13, 0x81, 0x80, 0x7C, 0x00, 0x00, 0x11, 0xCE, 0x00, 0x10, 0x4A, 0x00, 0x11, 0xCA, 0x80, 0x11, 0x11, 0x80, 0x1D, 0xC0, 0x00, 0x30, 0x7F, 0x80, 0x60, 0x51, 0x00, 0x00, 0x4A, 0x00, 0x00, 0xC4, 0x00, 0x01, 0xBB, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58A6, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x13, 0xF0, 0x00, 0x11, 0x22, 0x00, 0x10, 0xA4, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0xA4, 0x00, 0x10, 0xA6, 0x00, 0x11, 0xA3, 0x00, 0x13, 0x21, 0x80, 0x1D, 0xFE, 0x00, 0x31, 0x22, 0x00, 0x61, 0xFE, 0x00, 0x01, 0x22, 0x00, 0x01, 0x22, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x21, 0x48, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58A9, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x15, 0x00, 0x09, 0x15, 0x00, 0x09, 0xF9, 0x00, 0x08, 0x0D, 0x00, 0x09, 0xF7, 0x00, 0x0E, 0x22, 0x00, 0x30, 0x7A, 0x00, 0x01, 0xC5, 0x00, 0x06, 0x45, 0x00, 0x00, 0x48, 0x80, 0x00, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58AB, { 0x00, 0x00, 0x00, 0x10, 0x9E, 0x00, 0x11, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x28, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xCF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x02, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x42, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58AE, { 0x00, 0x00, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x22, 0x88, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x2E, 0x3F, 0x00, 0x20, 0x21, 0x00, 0x20, 0x47, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58B1, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0xF4, 0x00, 0x11, 0x18, 0x80, 0x10, 0xA5, 0x00, 0x10, 0x42, 0x00, 0x7D, 0xBD, 0x80, 0x10, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x30, 0x00, 0x00, 0x60, 0x42, 0x00, 0x00, 0x66, 0x00, 0x00, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58B2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x80, 0x13, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x7C, 0xAA, 0x00, 0x13, 0xFF, 0x80, 0x10, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x1B, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x01, 0xAB, 0x00, 0x03, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58B3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x0F, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58B8, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x21, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x22, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x1C, 0x64, 0x00, 0x71, 0xFF, 0x00, 0x07, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58B9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x7E, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x00, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x1E, 0x44, 0x80, 0x72, 0x44, 0x80, 0x02, 0x7C, 0x80, 0x02, 0x00, 0x80, 0x02, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58BA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x1D, 0x00, 0x09, 0x71, 0x00, 0x3F, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x39, 0x00, 0x09, 0x55, 0x00, 0x09, 0x93, 0x00, 0x0F, 0x11, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58BB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x3E, 0x5D, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x80, 0x80, 0x30, 0xBE, 0x80, 0x00, 0xBE, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58BC, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x80, 0x24, 0xA3, 0x80, 0x3F, 0x80, 0x00, 0x24, 0xBF, 0x80, 0x7F, 0xD1, 0x00, 0x04, 0x0A, 0x00, 0x24, 0x84, 0x00, 0x3F, 0xBB, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58BE, { 0x00, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x0D, 0x22, 0x00, 0x32, 0x3E, 0x00, 0x0E, 0x22, 0x00, 0x33, 0x3E, 0x00, 0x05, 0x28, 0x00, 0x09, 0x29, 0x00, 0x33, 0x26, 0x00, 0x05, 0x3C, 0x00, 0x09, 0xE2, 0x00, 0x36, 0x01, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58C1, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xBF, 0x80, 0x38, 0x84, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x84, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58C2, { 0x00, 0x00, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x29, 0x12, 0x80, 0x3F, 0xA3, 0x80, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x80, 0x3F, 0xA1, 0x00, 0x2A, 0x12, 0x00, 0x29, 0x0C, 0x00, 0x50, 0xBB, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58C4, { 0x00, 0x00, 0x00, 0x13, 0xE4, 0x00, 0x11, 0x24, 0x00, 0x7C, 0xDF, 0x80, 0x13, 0xE4, 0x00, 0x30, 0xAC, 0x00, 0x38, 0xCE, 0x00, 0x5C, 0x97, 0x00, 0x56, 0x95, 0x80, 0x10, 0x84, 0x00, 0x11, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58C5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x24, 0x00, 0x28, 0x7F, 0x00, 0x12, 0xC8, 0x00, 0x0D, 0x7F, 0x00, 0x09, 0x48, 0x00, 0x32, 0x7F, 0x00, 0x0C, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x30, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58C7, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x3D, 0x39, 0x00, 0x11, 0x39, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1C, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58C8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x30, 0xFE, 0x00, 0x60, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x92, 0x00, 0x03, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58CA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x48, 0x00, 0x30, 0xCC, 0x80, 0x61, 0x85, 0x00, 0x06, 0x86, 0x00, 0x00, 0xF3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58CC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x13, 0x83, 0x80, 0x7C, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x49, 0x00, 0x70, 0xCA, 0x00, 0x07, 0x8C, 0x00, 0x00, 0xF6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58CD, { 0x00, 0x00, 0x00, 0x21, 0x07, 0x80, 0x17, 0xD8, 0x00, 0x01, 0x10, 0x00, 0x47, 0xDF, 0x80, 0x25, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x15, 0x52, 0x00, 0x17, 0xD2, 0x00, 0x21, 0x12, 0x00, 0x27, 0xD2, 0x00, 0x41, 0x22, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58CE, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x93, 0x00, 0x09, 0x55, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x02, 0x49, 0x00, 0x04, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D0, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x6A, 0x95, 0x80, 0x24, 0x89, 0x00, 0x2A, 0x95, 0x00, 0x20, 0x81, 0x00, 0x2A, 0x95, 0x00, 0x24, 0x89, 0x00, 0x2A, 0x95, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xD1, 0x00, 0x2F, 0x4A, 0x00, 0x00, 0x0A, 0x00, 0x16, 0x84, 0x00, 0x29, 0x4C, 0x00, 0x10, 0x8A, 0x00, 0x3F, 0x51, 0x00, 0x11, 0x20, 0x80, 0x1F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D2, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x61, 0x29, 0x00, 0x01, 0x29, 0x00, 0x01, 0x29, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x17, 0x86, 0x00, 0x14, 0x85, 0x00, 0x17, 0xBF, 0x80, 0x17, 0x84, 0x00, 0x14, 0x8A, 0x00, 0x17, 0x8A, 0x00, 0x17, 0x91, 0x00, 0x14, 0xE0, 0x80, 0x15, 0xA0, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58D4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x7D, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x52, 0x00, 0x01, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58D5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x09, 0xFF, 0x00, 0x08, 0x51, 0x00, 0x0E, 0xAA, 0x00, 0x3B, 0x4C, 0x00, 0x0C, 0x9C, 0x00, 0x03, 0x2A, 0x00, 0x0C, 0xC9, 0x00, 0x03, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x7E, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x70, 0x20, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x48, 0x80, 0x02, 0x48, 0x80, 0x02, 0x4B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D7, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x11, 0x49, 0x00, 0x12, 0x24, 0x80, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x01, 0x49, 0x00, 0x01, 0x49, 0x00, 0x01, 0x49, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D8, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58D9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x3F, 0x22, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x0F, 0x49, 0x00, 0x31, 0x7F, 0x00, 0x01, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x02, 0x22, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58DA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x7D, 0x7E, 0x00, 0x11, 0x10, 0x80, 0x11, 0x7F, 0x80, 0x11, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x49, 0x00, 0x71, 0x7F, 0x00, 0x01, 0x00, 0x00, 0x01, 0x7F, 0x00, 0x03, 0x55, 0x00, 0x06, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58DC, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x10, 0x10, 0x00, 0x1C, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x9F, 0x00, 0x01, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58DD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x13, 0x3F, 0x00, 0x11, 0x29, 0x00, 0x12, 0x3F, 0x00, 0x13, 0x08, 0x00, 0x7D, 0x7F, 0x80, 0x10, 0x00, 0x00, 0x13, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x1D, 0x21, 0x00, 0x31, 0x3F, 0x00, 0x61, 0x21, 0x00, 0x01, 0x3F, 0x00, 0x03, 0x40, 0x80, 0x04, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58DE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x94, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xEB, 0x80, 0x08, 0x08, 0x00, 0x0E, 0xEB, 0x80, 0x38, 0x15, 0x00, 0x00, 0x66, 0x00, 0x01, 0xA2, 0x00, 0x06, 0x3D, 0x00, 0x00, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58DF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x9F, 0x00, 0x09, 0x10, 0x00, 0x3F, 0xDF, 0x00, 0x1F, 0x81, 0x00, 0x10, 0x9F, 0x00, 0x1F, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x90, 0x80, 0x11, 0x9F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58E1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xBF, 0x80, 0x04, 0x10, 0x80, 0x7F, 0xC9, 0x00, 0x40, 0x4A, 0x00, 0x0F, 0x04, 0x00, 0x20, 0x8A, 0x00, 0x5F, 0x51, 0x80, 0x20, 0x84, 0x00, 0x7F, 0xE4, 0x00, 0x20, 0x84, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x73, 0x80, 0x13, 0xCE, 0x00, 0x7E, 0x42, 0x00, 0x13, 0xFF, 0x80, 0x12, 0xC6, 0x00, 0x13, 0x6B, 0x00, 0x12, 0x52, 0x80, 0x1E, 0x52, 0x00, 0x32, 0x10, 0x00, 0x62, 0x9E, 0x00, 0x06, 0x90, 0x00, 0x04, 0x90, 0x00, 0x0D, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58E4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0xE7, 0x00, 0x08, 0xA5, 0x00, 0x3E, 0xE7, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x0F, 0x24, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x69, 0x00, 0x01, 0xC6, 0x00, 0x06, 0x7A, 0x00, 0x01, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58E5, { 0x00, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x6B, 0x00, 0x7E, 0x5D, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x72, 0x55, 0x00, 0x06, 0x88, 0x80, 0x04, 0x7F, 0x00, 0x0C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58E9, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x7A, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x11, 0x40, 0x00, 0x13, 0xEF, 0x80, 0x11, 0x48, 0x80, 0x1B, 0xEF, 0x80, 0x32, 0xA8, 0x80, 0x63, 0xEF, 0x80, 0x00, 0x88, 0x80, 0x03, 0xE8, 0x80, 0x00, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x58EB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58EC, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58EE, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x34, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x34, 0x10, 0x00, 0x64, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58EF, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x48, 0x18, 0x80, 0x08, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x0C, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0x21, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xF8, 0x80, 0x40, 0x00, 0x80, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x11, 0x00, 0x08, 0x11, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x42, 0x20, 0x00, 0x12, 0x24, 0x00, 0x0A, 0x2C, 0x00, 0x06, 0x30, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58F9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58FA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x10, 0x00, 0x0F, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0x1E, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58FB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x80, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x3E, 0x90, 0x00, 0x08, 0xD0, 0x00, 0x09, 0x3F, 0x80, 0x0A, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x30, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58FC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x01, 0x20, 0x00, 0x0F, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x3C, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x58FD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x01, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x1E, 0x24, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5902, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x1A, 0x18, 0x00, 0x33, 0x10, 0x00, 0x01, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5904, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x11, 0x30, 0x00, 0x11, 0x28, 0x00, 0x11, 0x26, 0x00, 0x2A, 0x22, 0x00, 0x4A, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x11, 0x03, 0x00, 0x20, 0xFE, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5905, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0E, 0x08, 0x00, 0x34, 0x10, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0x7C, 0x00, 0x78, 0x27, 0x80, 0x00, 0x20, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5906, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0E, 0x08, 0x00, 0x34, 0x30, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x78, 0x00, 0x70, 0x87, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5907, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x20, 0x00, 0x11, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0F, 0x00, 0x6F, 0xFA, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5909, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x12, 0x12, 0x00, 0x32, 0x13, 0x00, 0x66, 0x11, 0x80, 0x0C, 0x10, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x3B, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x590A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x80, 0x00, 0x18, 0x80, 0x00, 0x09, 0xFC, 0x00, 0x0D, 0x04, 0x00, 0x07, 0x0C, 0x00, 0x02, 0x08, 0x00, 0x07, 0x18, 0x00, 0x0D, 0x30, 0x00, 0x19, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x590B, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x10, 0x00, 0x06, 0x18, 0x00, 0x1F, 0xEC, 0x00, 0x00, 0x06, 0x00, 0x03, 0x20, 0x00, 0x0E, 0x31, 0x00, 0x38, 0x1F, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x1D, 0xB0, 0x00, 0x00, 0x60, 0x00, 0x01, 0xB0, 0x00, 0x0F, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x590C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0E, 0x18, 0x00, 0x78, 0x0F, 0x80, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x1F, 0xB0, 0x00, 0x00, 0x60, 0x00, 0x01, 0xB0, 0x00, 0x0F, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x590D, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xF8, 0x00, 0x24, 0x08, 0x00, 0x47, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x10, 0x00, 0x09, 0x20, 0x00, 0x10, 0xC0, 0x00, 0x21, 0x20, 0x00, 0x02, 0x18, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x590F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x05, 0x04, 0x00, 0x38, 0x98, 0x00, 0x00, 0x60, 0x00, 0x03, 0x9C, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5910, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x18, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x20, 0xC1, 0x00, 0x23, 0x31, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x3A, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5912, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0xEF, 0x00, 0x2F, 0x29, 0x00, 0x29, 0xE9, 0x00, 0x29, 0x2F, 0x00, 0x29, 0xE8, 0x80, 0x3F, 0x28, 0x80, 0x61, 0xE7, 0x80, 0x06, 0x18, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x7A, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5913, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xF7, 0x00, 0x30, 0x81, 0x00, 0x23, 0xF1, 0x00, 0x3A, 0x17, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x3A, 0x17, 0x00, 0x03, 0xF2, 0x00, 0x1E, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x7A, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5914, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x09, 0xF7, 0x80, 0x29, 0x14, 0x80, 0x2F, 0xF7, 0x80, 0x29, 0x14, 0x00, 0x29, 0xF4, 0x00, 0x2F, 0x14, 0x80, 0x31, 0xF7, 0x80, 0x00, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x07, 0x04, 0x00, 0x18, 0x98, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5915, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x04, 0x82, 0x00, 0x08, 0x44, 0x00, 0x10, 0x28, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5916, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x54, 0x00, 0x14, 0x8C, 0x00, 0x22, 0x84, 0x00, 0x01, 0x06, 0x00, 0x01, 0x05, 0x00, 0x02, 0x04, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5918, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x0F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x18, 0x91, 0x00, 0x10, 0x91, 0x00, 0x39, 0x91, 0x00, 0x6D, 0x11, 0x00, 0x07, 0x11, 0x00, 0x02, 0x11, 0x00, 0x06, 0x11, 0x00, 0x04, 0x11, 0x00, 0x0C, 0x17, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5919, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x8A, 0x00, 0x09, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x10, 0x82, 0x80, 0x11, 0x01, 0x80, 0x26, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x591A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x10, 0x00, 0x06, 0x20, 0x00, 0x09, 0x50, 0x00, 0x30, 0xA0, 0x00, 0x01, 0x3F, 0x80, 0x02, 0x41, 0x00, 0x0C, 0xC2, 0x00, 0x33, 0x24, 0x00, 0x0C, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x591B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x0E, 0x06, 0x00, 0x39, 0x8C, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x591C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x3F, 0x80, 0x04, 0x21, 0x00, 0x0C, 0x49, 0x00, 0x0C, 0xA6, 0x00, 0x15, 0x14, 0x00, 0x26, 0x18, 0x00, 0x04, 0x08, 0x00, 0x04, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x05, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x591D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x48, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x32, 0xC8, 0x00, 0x22, 0x88, 0x00, 0x72, 0x08, 0x00, 0x5A, 0x08, 0x00, 0x0E, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x591F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0x3E, 0x00, 0x1F, 0xA2, 0x00, 0x21, 0x44, 0x00, 0x41, 0xA8, 0x00, 0x3D, 0x10, 0x00, 0x25, 0x28, 0x00, 0x25, 0x4F, 0x00, 0x25, 0x91, 0x00, 0x25, 0x22, 0x00, 0x3D, 0x54, 0x00, 0x21, 0x08, 0x00, 0x05, 0x10, 0x00, 0x02, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5921, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x88, 0x00, 0x18, 0x88, 0x00, 0x31, 0x7F, 0x00, 0x5B, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x04, 0x08, 0x00, 0x18, 0x3E, 0x00, 0x6F, 0x80, 0x00, 0x18, 0x80, 0x00, 0x31, 0x7F, 0x00, 0x5B, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x04, 0x41, 0x00, 0x18, 0x41, 0x00, 0x70, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5922, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x03, 0xFC, 0x00, 0x05, 0x08, 0x00, 0x18, 0x90, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5923, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x04, 0x78, 0x00, 0x1F, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x41, 0x00, 0x80, 0x43, 0xFC, 0x80, 0x0E, 0x18, 0x00, 0x19, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5924, { 0x00, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x07, 0x0C, 0x00, 0x1D, 0xB8, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x47, 0xFC, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5925, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x99, 0x00, 0x24, 0xB3, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x86, 0x00, 0x24, 0x8C, 0x00, 0x3F, 0xB8, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC7, 0x80, 0x15, 0x0C, 0x80, 0x15, 0x99, 0x80, 0x34, 0x85, 0x00, 0x24, 0xC3, 0x00, 0x64, 0x06, 0x00, 0x04, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5927, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5928, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5929, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x592A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x90, 0x00, 0x01, 0x10, 0x00, 0x01, 0x48, 0x00, 0x02, 0x28, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x592B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x592C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x592D, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x592E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x592F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x01, 0x82, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x06, 0x06, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5930, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5931, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5932, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5933, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x70, 0x03, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5934, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x03, 0x40, 0x00, 0x11, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x04, 0x40, 0x00, 0x00, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0xB0, 0x00, 0x01, 0x08, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5935, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8C, 0x00, 0x10, 0x86, 0x00, 0x30, 0x83, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5936, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x16, 0x16, 0x00, 0x32, 0x32, 0x00, 0x22, 0x22, 0x00, 0x63, 0x63, 0x00, 0x41, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5937, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x80, 0x00, 0xA0, 0x80, 0x01, 0x10, 0x80, 0x02, 0x0B, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5938, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5939, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x07, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x593A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x07, 0x00, 0x60, 0x12, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x593C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x07, 0x00, 0x64, 0x92, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x10, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x593E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x20, 0xE0, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x593F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x7F, 0xFB, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0C, 0x06, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5941, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x68, 0x13, 0x00, 0x0A, 0x20, 0x00, 0x09, 0x40, 0x00, 0x08, 0x80, 0x00, 0x09, 0x40, 0x00, 0x0A, 0x30, 0x00, 0x0C, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5942, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x10, 0x48, 0x00, 0x2F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x30, 0x00, 0x0C, 0x0E, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5943, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0xF3, 0x80, 0x0F, 0x80, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x0F, 0x90, 0x00, 0x38, 0x19, 0x00, 0x00, 0x0F, 0x00, 0x3F, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5944, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x0C, 0x00, 0x0C, 0x43, 0x80, 0x30, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5946, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFE, 0x00, 0x78, 0x03, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5947, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x07, 0xE2, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x07, 0xE2, 0x00, 0x04, 0x22, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5948, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x40, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5949, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xA0, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x594B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0F, 0x00, 0x6F, 0xFA, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x594E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x594F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5950, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x30, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x1E, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5951, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x42, 0x00, 0x04, 0x8C, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5952, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x06, 0x64, 0x00, 0x0C, 0xCC, 0x00, 0x03, 0x98, 0x00, 0x0E, 0x30, 0x00, 0x00, 0xEC, 0x00, 0x1F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5953, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x8E, 0x00, 0x71, 0xF3, 0x80, 0x07, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xC2, 0x00, 0x1E, 0x84, 0x00, 0x00, 0x48, 0x00, 0x00, 0x70, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5954, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x40, 0x00, 0x02, 0x48, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5955, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x05, 0x14, 0x00, 0x09, 0x12, 0x00, 0x12, 0x11, 0x00, 0x0C, 0x70, 0x00, 0x30, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5956, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x22, 0x20, 0x00, 0x12, 0x3E, 0x00, 0x02, 0x42, 0x00, 0x0A, 0xA4, 0x00, 0x12, 0x18, 0x00, 0x32, 0x10, 0x00, 0x02, 0x20, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x07, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5957, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x03, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5958, { 0x00, 0x00, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x64, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5959, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x08, 0x00, 0x06, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x86, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0xC0, 0x00, 0x07, 0x70, 0x00, 0x1C, 0x1C, 0x00, 0x6F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x80, 0x00, 0x80, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x595A, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x07, 0xE1, 0x00, 0x08, 0x10, 0x80, 0x10, 0x88, 0x00, 0x05, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0x22, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x595B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x7F, 0x80, 0x1F, 0x42, 0x00, 0x11, 0x42, 0x00, 0x11, 0x7E, 0x00, 0x1F, 0x42, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x42, 0x00, 0x1F, 0x42, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x595D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x09, 0xF2, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x42, 0x00, 0x09, 0xF2, 0x00, 0x19, 0x12, 0x00, 0x11, 0xF2, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x595E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x72, 0x23, 0x80, 0x04, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x595F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x7F, 0x7F, 0x80, 0x11, 0x42, 0x00, 0x19, 0x72, 0x00, 0x17, 0x4E, 0x00, 0x11, 0x42, 0x00, 0x19, 0x72, 0x00, 0x17, 0x4E, 0x00, 0x11, 0x42, 0x00, 0x31, 0x42, 0x00, 0x67, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5960, { 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x31, 0x11, 0x80, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0E, 0x0E, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5961, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x3A, 0x1E, 0x00, 0x66, 0x13, 0x80, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5962, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x37, 0xF5, 0x80, 0x00, 0x48, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xD0, 0x00, 0x07, 0x08, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5963, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x40, 0x00, 0x07, 0x70, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x3E, 0xC2, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5965, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x14, 0x92, 0x00, 0x12, 0xA2, 0x00, 0x17, 0xFA, 0x00, 0x11, 0xC2, 0x00, 0x12, 0xA2, 0x00, 0x14, 0x9A, 0x00, 0x10, 0x82, 0x00, 0x11, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5967, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x4A, 0x00, 0x09, 0x52, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0xE2, 0x00, 0x09, 0x52, 0x00, 0x0A, 0x4A, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5968, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x24, 0xFC, 0x00, 0x34, 0x10, 0x80, 0x14, 0x89, 0x00, 0x04, 0x42, 0x00, 0x05, 0xFF, 0x80, 0x1C, 0x02, 0x00, 0x74, 0x62, 0x00, 0x04, 0x32, 0x00, 0x04, 0x06, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5969, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x06, 0x18, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x03, 0x80, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x92, 0x00, 0x17, 0x9E, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x596A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x06, 0x2C, 0x00, 0x3A, 0x43, 0x80, 0x07, 0xFE, 0x00, 0x0C, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x24, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x40, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x596B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xB0, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x11, 0x29, 0x00, 0x09, 0x29, 0x00, 0x21, 0xEF, 0x00, 0x11, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x21, 0x29, 0x00, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x596C, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0x22, 0x00, 0x11, 0xD4, 0x00, 0x01, 0x1A, 0x00, 0x3F, 0x62, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x12, 0x00, 0x11, 0x4E, 0x00, 0x21, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x596D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x1F, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x1F, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x1F, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x596E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x05, 0x28, 0x00, 0x0A, 0x46, 0x00, 0x37, 0xFD, 0x80, 0x08, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x28, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x596F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x0E, 0x1C, 0x00, 0x70, 0x43, 0x80, 0x08, 0x7C, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x0A, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x08, 0x00, 0x2F, 0x8E, 0x00, 0x22, 0x04, 0x80, 0x2A, 0x8E, 0x80, 0x69, 0x9B, 0x80, 0x43, 0x71, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5972, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xBB, 0x80, 0x13, 0x2A, 0x80, 0x29, 0xFB, 0x80, 0x48, 0x80, 0x00, 0x3F, 0x3F, 0x80, 0x0C, 0x24, 0x80, 0x7F, 0xBF, 0x80, 0x1A, 0x64, 0x80, 0x3F, 0x3F, 0x80, 0x71, 0x04, 0x00, 0x1F, 0x7F, 0x80, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5973, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x12, 0x20, 0x00, 0x21, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x30, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5974, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x11, 0x22, 0x00, 0x11, 0x12, 0x00, 0x12, 0x12, 0x00, 0x22, 0x14, 0x00, 0x32, 0x0C, 0x00, 0x2C, 0x08, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x12, 0x00, 0x09, 0x22, 0x00, 0x10, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5975, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x31, 0x08, 0x00, 0x23, 0x08, 0x00, 0x22, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x07, 0x08, 0x00, 0x0D, 0x08, 0x00, 0x18, 0x08, 0x00, 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5976, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x47, 0x80, 0x32, 0x40, 0x80, 0x26, 0x40, 0x80, 0x24, 0x40, 0x80, 0x7C, 0xC0, 0x80, 0x0A, 0x81, 0x80, 0x19, 0x81, 0x00, 0x31, 0x81, 0x00, 0x63, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5978, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x34, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x12, 0x08, 0x00, 0x21, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5979, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4B, 0x00, 0x7E, 0x4F, 0x00, 0x12, 0x79, 0x00, 0x13, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x32, 0x4B, 0x00, 0x26, 0x48, 0x00, 0x24, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x0A, 0x40, 0x00, 0x18, 0x40, 0x80, 0x30, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x597B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x31, 0x00, 0x23, 0x23, 0x00, 0x22, 0x22, 0x00, 0x7E, 0x7E, 0x00, 0x07, 0x07, 0x00, 0x0D, 0x8D, 0x80, 0x18, 0x18, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x597C, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x32, 0x10, 0x00, 0x26, 0x10, 0x00, 0x24, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x18, 0x10, 0x80, 0x30, 0x19, 0x80, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x597D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x02, 0x00, 0x3F, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x34, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x12, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5981, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x11, 0xC1, 0x00, 0x11, 0x01, 0x00, 0x11, 0x31, 0x00, 0x31, 0x19, 0x00, 0x23, 0x09, 0x00, 0x22, 0x01, 0x00, 0x7E, 0x01, 0x00, 0x07, 0x01, 0x00, 0x0D, 0x83, 0x00, 0x18, 0x82, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5982, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x09, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x12, 0x21, 0x00, 0x22, 0x21, 0x00, 0x32, 0x21, 0x00, 0x2C, 0x21, 0x00, 0x06, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x10, 0xA1, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5983, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x09, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x20, 0x00, 0x12, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x26, 0x20, 0x00, 0x05, 0x20, 0x00, 0x09, 0x20, 0x80, 0x08, 0xA0, 0x80, 0x10, 0xBF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5984, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x02, 0x08, 0x00, 0x05, 0x90, 0x00, 0x00, 0x78, 0x00, 0x03, 0x86, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5986, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x24, 0x40, 0x00, 0x14, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x15, 0x04, 0x00, 0x24, 0x88, 0x00, 0x64, 0x50, 0x00, 0x04, 0x20, 0x00, 0x04, 0x58, 0x00, 0x04, 0x86, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5987, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x14, 0x02, 0x00, 0x08, 0x02, 0x00, 0x14, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5988, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x8A, 0x00, 0x12, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x14, 0x12, 0x00, 0x09, 0xFA, 0x00, 0x14, 0x02, 0x00, 0x22, 0x02, 0x00, 0x42, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x598A, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x38, 0x00, 0x09, 0xD0, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x34, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x598B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x32, 0xFF, 0x80, 0x26, 0x10, 0x00, 0x24, 0x38, 0x00, 0x7E, 0x28, 0x00, 0x0A, 0x6C, 0x00, 0x18, 0x44, 0x00, 0x30, 0xC6, 0x00, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x598C, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x32, 0x22, 0x00, 0x26, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x0A, 0x62, 0x00, 0x18, 0x42, 0x00, 0x30, 0xC2, 0x00, 0x61, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x598D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x32, 0x22, 0x00, 0x26, 0x22, 0x00, 0x24, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x0B, 0x22, 0x00, 0x19, 0x62, 0x00, 0x30, 0x42, 0x00, 0x60, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x598E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x7E, 0x36, 0x00, 0x12, 0x22, 0x00, 0x12, 0x63, 0x00, 0x12, 0xC1, 0x80, 0x32, 0x22, 0x00, 0x26, 0x22, 0x00, 0x24, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x18, 0x62, 0x00, 0x30, 0x42, 0x00, 0x60, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5992, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x80, 0x08, 0x7C, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x7F, 0x80, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x32, 0x7F, 0x80, 0x26, 0x40, 0x00, 0x24, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x18, 0xC0, 0x00, 0x30, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5993, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x24, 0x42, 0x00, 0x34, 0x22, 0x00, 0x28, 0x24, 0x00, 0x0C, 0x18, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x14, 0x00, 0x10, 0x62, 0x00, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5995, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x32, 0x88, 0x80, 0x26, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5996, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x0A, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x24, 0x10, 0x00, 0x34, 0x28, 0x00, 0x28, 0x28, 0x00, 0x2C, 0x28, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x82, 0x00, 0x21, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5997, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x3F, 0x14, 0x00, 0x12, 0x22, 0x00, 0x12, 0x41, 0x00, 0x12, 0xBE, 0x80, 0x12, 0x00, 0x00, 0x24, 0x00, 0x00, 0x34, 0x7E, 0x00, 0x2C, 0x02, 0x00, 0x24, 0x02, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x12, 0x04, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5999, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x29, 0x00, 0x3F, 0x48, 0x80, 0x12, 0x48, 0x00, 0x12, 0x88, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x80, 0x34, 0x09, 0x00, 0x2C, 0x39, 0x00, 0x24, 0x02, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x12, 0x30, 0x00, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x599B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x18, 0x00, 0x1F, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x599D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x46, 0x00, 0x7C, 0xC4, 0x00, 0x24, 0x84, 0x00, 0x24, 0x8C, 0x00, 0x25, 0xE8, 0x00, 0x24, 0x38, 0x00, 0x24, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x05, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x599E, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0xFC, 0x00, 0x12, 0x44, 0x00, 0x22, 0x44, 0x00, 0x14, 0x44, 0x00, 0x08, 0x44, 0x00, 0x14, 0x44, 0x00, 0x22, 0x44, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x599F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x18, 0x00, 0x0F, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59A3, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x80, 0x7E, 0x45, 0x80, 0x12, 0x77, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x32, 0x44, 0x00, 0x26, 0x44, 0x00, 0x24, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x19, 0x44, 0x80, 0x30, 0x74, 0x80, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59A4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x03, 0x00, 0x08, 0x34, 0x00, 0x7E, 0x18, 0x00, 0x12, 0x0C, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x08, 0x80, 0x32, 0x08, 0x80, 0x26, 0x08, 0x80, 0x24, 0x0B, 0x80, 0x7E, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x18, 0x08, 0x00, 0x70, 0x08, 0x00, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59A5, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x82, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x10, 0x00, 0x0F, 0x20, 0x00, 0x10, 0xE0, 0x00, 0x01, 0x98, 0x00, 0x06, 0x06, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59A7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x32, 0x24, 0x00, 0x26, 0x24, 0x00, 0x24, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x0A, 0x64, 0x80, 0x18, 0x44, 0x80, 0x30, 0xC4, 0x80, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59A8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x1F, 0x00, 0x22, 0x11, 0x00, 0x24, 0x21, 0x00, 0x34, 0x21, 0x00, 0x28, 0x21, 0x00, 0x0C, 0x41, 0x00, 0x0A, 0x42, 0x00, 0x10, 0x82, 0x00, 0x23, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59A9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x22, 0x28, 0x00, 0x14, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x49, 0x00, 0x22, 0x89, 0x00, 0x41, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59AA, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xC2, 0x00, 0x12, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x22, 0x94, 0x00, 0x14, 0xA2, 0x00, 0x08, 0xC2, 0x00, 0x14, 0x80, 0x00, 0x22, 0x82, 0x00, 0x42, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59AB, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x7E, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x14, 0x52, 0x00, 0x08, 0x4A, 0x00, 0x14, 0x82, 0x00, 0x22, 0x82, 0x00, 0x41, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59AC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x3F, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x00, 0x22, 0xFF, 0x00, 0x25, 0x41, 0x00, 0x26, 0x41, 0x00, 0x34, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59AD, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x26, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x22, 0x00, 0x12, 0x72, 0x00, 0x32, 0x56, 0x00, 0x26, 0x54, 0x00, 0x24, 0xDC, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x9C, 0x00, 0x1B, 0x36, 0x00, 0x30, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59AE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x40, 0x00, 0x12, 0x50, 0x00, 0x32, 0x50, 0x00, 0x26, 0x53, 0x00, 0x24, 0x5C, 0x00, 0x7E, 0x50, 0x00, 0x0A, 0xD0, 0x80, 0x18, 0x90, 0x80, 0x31, 0x90, 0x80, 0x63, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59AF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x32, 0x88, 0x80, 0x26, 0xFF, 0x80, 0x24, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x18, 0x88, 0x80, 0x30, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59B0, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x7E, 0xD0, 0x00, 0x12, 0x90, 0x00, 0x12, 0x90, 0x00, 0x12, 0x1F, 0x00, 0x32, 0x10, 0x00, 0x26, 0x10, 0x00, 0x24, 0x10, 0x00, 0x7E, 0x1F, 0x00, 0x0A, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59B2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x32, 0x41, 0x00, 0x26, 0x41, 0x00, 0x24, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x0B, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59B3, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x7E, 0xC8, 0x80, 0x13, 0x89, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x32, 0x49, 0x00, 0x26, 0x49, 0x00, 0x24, 0x49, 0x00, 0x7E, 0xC9, 0x80, 0x0A, 0x88, 0x80, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59B7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0xC8, 0x00, 0x12, 0x88, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x26, 0x08, 0x00, 0x24, 0x1C, 0x00, 0x7E, 0x14, 0x00, 0x0A, 0x36, 0x00, 0x18, 0x22, 0x00, 0x30, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59B9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x34, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x0A, 0x54, 0x00, 0x12, 0x52, 0x00, 0x10, 0x91, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59BA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x54, 0x00, 0x26, 0x54, 0x00, 0x24, 0x54, 0x00, 0x7E, 0xD6, 0x00, 0x0A, 0x92, 0x00, 0x19, 0x93, 0x00, 0x31, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59BB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x07, 0x88, 0x00, 0x08, 0x70, 0x00, 0x01, 0xCE, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59BC, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x26, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x32, 0xAC, 0x00, 0x26, 0xAB, 0x00, 0x25, 0xB9, 0x80, 0x7D, 0x30, 0x80, 0x0A, 0x20, 0x00, 0x18, 0xE1, 0x00, 0x33, 0xB3, 0x00, 0x60, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59BE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x07, 0x88, 0x00, 0x08, 0x70, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59C1, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x13, 0x80, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x32, 0x44, 0x80, 0x26, 0x44, 0x80, 0x24, 0x44, 0x80, 0x7E, 0x7C, 0x80, 0x0A, 0x00, 0x80, 0x18, 0x00, 0x80, 0x30, 0x01, 0x80, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59C3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x4F, 0x80, 0x22, 0x48, 0x00, 0x24, 0x48, 0x00, 0x34, 0x48, 0x00, 0x28, 0x48, 0x00, 0x0C, 0x48, 0x00, 0x14, 0x48, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59C4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x32, 0xFF, 0x80, 0x26, 0x88, 0x00, 0x24, 0x88, 0x00, 0x7E, 0x8C, 0x00, 0x0A, 0x84, 0x00, 0x18, 0xB6, 0x80, 0x30, 0xE3, 0x80, 0x61, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59C6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x3F, 0x29, 0x00, 0x12, 0x25, 0x00, 0x12, 0x21, 0x00, 0x12, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x34, 0x52, 0x00, 0x28, 0x4A, 0x00, 0x0C, 0x42, 0x00, 0x16, 0xFF, 0x80, 0x12, 0x84, 0x00, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59C8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x66, 0x00, 0x7E, 0xC3, 0x00, 0x13, 0x81, 0x80, 0x12, 0x7E, 0x00, 0x12, 0x00, 0x00, 0x32, 0x00, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x7E, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x18, 0x17, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59C9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x24, 0x49, 0x00, 0x34, 0x49, 0x00, 0x2C, 0x49, 0x00, 0x04, 0x49, 0x00, 0x0A, 0x4B, 0x00, 0x12, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59CA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x13, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x90, 0x00, 0x12, 0x90, 0x00, 0x12, 0x90, 0x00, 0x12, 0x90, 0x00, 0x32, 0xFF, 0x80, 0x26, 0x10, 0x80, 0x24, 0x30, 0x80, 0x7E, 0x30, 0x80, 0x0A, 0x50, 0x80, 0x18, 0x90, 0x80, 0x31, 0x11, 0x80, 0x60, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59CB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x12, 0x41, 0x00, 0x12, 0x4F, 0x80, 0x12, 0xF0, 0x80, 0x12, 0x00, 0x00, 0x24, 0x00, 0x00, 0x34, 0x7F, 0x00, 0x2C, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59CD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x7E, 0xA9, 0x00, 0x12, 0xA9, 0x00, 0x12, 0xA9, 0x00, 0x13, 0xFF, 0x80, 0x32, 0xA9, 0x00, 0x26, 0xA9, 0x00, 0x24, 0xA9, 0x00, 0x7C, 0xA9, 0x00, 0x0A, 0xA9, 0x00, 0x18, 0xA9, 0x00, 0x31, 0xA9, 0x00, 0x63, 0x2B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59D0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3F, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x22, 0x42, 0x00, 0x24, 0x42, 0x00, 0x34, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x2C, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x12, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59D1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x11, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x2C, 0x41, 0x00, 0x24, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x09, 0x41, 0x00, 0x11, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59D2, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x12, 0xB1, 0x00, 0x12, 0x99, 0x00, 0x12, 0x89, 0x00, 0x32, 0x81, 0x00, 0x26, 0x83, 0x00, 0x24, 0x92, 0x00, 0x7E, 0xA2, 0x00, 0x0A, 0xC7, 0x00, 0x18, 0xCD, 0x00, 0x31, 0x99, 0x80, 0x60, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59D3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3F, 0x48, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x08, 0x00, 0x24, 0x08, 0x00, 0x34, 0x7F, 0x00, 0x2C, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x12, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59D4, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x10, 0x00, 0x0F, 0x20, 0x00, 0x10, 0xE0, 0x00, 0x07, 0x1C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59D7, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xEF, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x7E, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x13, 0xFF, 0x00, 0x12, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x14, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x14, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x41, 0x76, 0x00, 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59D8, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x44, 0x00, 0x14, 0x44, 0x00, 0x08, 0x44, 0x00, 0x14, 0x44, 0x00, 0x22, 0x44, 0x00, 0x40, 0x84, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59D9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x23, 0x00, 0x08, 0x4C, 0x00, 0x0A, 0xB8, 0x00, 0x3F, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x34, 0x88, 0x00, 0x28, 0x88, 0x00, 0x08, 0x88, 0x00, 0x14, 0x88, 0x00, 0x14, 0xBF, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59DA, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0x24, 0x80, 0x12, 0xA5, 0x00, 0x3F, 0x66, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x22, 0x24, 0x00, 0x24, 0x66, 0x00, 0x34, 0xA5, 0x00, 0x29, 0x24, 0x80, 0x2C, 0x24, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x44, 0x80, 0x12, 0x87, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59DC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x17, 0x20, 0x00, 0x00, 0xF0, 0x00, 0x03, 0x0E, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59DD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x3F, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x88, 0x00, 0x22, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x0C, 0x00, 0x34, 0x1C, 0x00, 0x08, 0x1A, 0x00, 0x0C, 0x2A, 0x00, 0x14, 0x29, 0x00, 0x12, 0x49, 0x00, 0x22, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59DE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x18, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59DF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x12, 0x60, 0x00, 0x12, 0xC4, 0x00, 0x12, 0x6C, 0x00, 0x32, 0x18, 0x00, 0x26, 0x32, 0x00, 0x24, 0x66, 0x00, 0x7D, 0xCC, 0x00, 0x0A, 0x18, 0x00, 0x18, 0x36, 0x00, 0x30, 0x63, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59E3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x44, 0x00, 0x12, 0xC6, 0x00, 0x13, 0x83, 0x00, 0x13, 0x45, 0x80, 0x32, 0x44, 0x00, 0x26, 0x6C, 0x00, 0x24, 0x38, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59E4, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x12, 0x80, 0x00, 0x32, 0x80, 0x00, 0x26, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x7E, 0xA1, 0x00, 0x0A, 0xA1, 0x00, 0x18, 0xA1, 0x00, 0x31, 0xA1, 0x00, 0x63, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59E5, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x12, 0x00, 0x7E, 0x16, 0x00, 0x12, 0x14, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x18, 0x00, 0x32, 0x30, 0x00, 0x26, 0xE3, 0x00, 0x25, 0xAE, 0x00, 0x74, 0x38, 0x00, 0x0C, 0x20, 0x00, 0x1A, 0x20, 0x80, 0x32, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59E6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x05, 0x90, 0x00, 0x08, 0x78, 0x00, 0x03, 0x87, 0x00, 0x1C, 0x04, 0x00, 0x09, 0x0A, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x12, 0x44, 0x00, 0x2C, 0xB8, 0x00, 0x0A, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x20, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59E7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x80, 0x7F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x21, 0x04, 0x00, 0x7E, 0x04, 0x00, 0x0D, 0x84, 0x00, 0x70, 0x7F, 0x80, 0x08, 0x04, 0x00, 0x7F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x31, 0x04, 0x00, 0x23, 0x04, 0x00, 0x7E, 0x04, 0x00, 0x0D, 0x84, 0x00, 0x78, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59E8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x90, 0x00, 0x24, 0x90, 0x00, 0x25, 0xFF, 0x80, 0x39, 0x10, 0x80, 0x2C, 0x10, 0x80, 0x0A, 0x2B, 0x00, 0x12, 0x44, 0x00, 0x10, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59EA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3F, 0x42, 0x00, 0x12, 0x41, 0x00, 0x12, 0xBF, 0x00, 0x23, 0xD0, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x35, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59EB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x36, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x0B, 0x44, 0x00, 0x19, 0x44, 0x00, 0x30, 0x7F, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59EC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x34, 0x88, 0x00, 0x28, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x12, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59EE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x22, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x34, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2C, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59EF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x52, 0x00, 0x7E, 0x52, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x24, 0x00, 0x26, 0x24, 0x00, 0x24, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x0A, 0x64, 0x00, 0x18, 0x44, 0x80, 0x30, 0xC4, 0x80, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59F1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0x66, 0x00, 0x13, 0xC3, 0x80, 0x12, 0x3C, 0x00, 0x12, 0x00, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x10, 0x00, 0x24, 0x20, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x01, 0x00, 0x18, 0x01, 0x00, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59F2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0xA2, 0x80, 0x12, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x32, 0x62, 0x00, 0x26, 0x42, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x66, 0x00, 0x0A, 0x34, 0x00, 0x18, 0x1C, 0x00, 0x30, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59F4, { 0x00, 0x00, 0x00, 0x3F, 0xC1, 0x00, 0x04, 0x11, 0x00, 0x0F, 0x91, 0x00, 0x18, 0x91, 0x00, 0x35, 0x91, 0x00, 0x03, 0x11, 0x00, 0x06, 0x01, 0x00, 0x3C, 0x07, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x18, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xBC, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59F6, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x14, 0x00, 0x10, 0x36, 0x00, 0x7E, 0x63, 0x00, 0x12, 0xC1, 0x80, 0x12, 0x00, 0x00, 0x32, 0x3E, 0x00, 0x26, 0x00, 0x00, 0x24, 0x00, 0x00, 0x74, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59F7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x12, 0x7F, 0x00, 0x12, 0xC1, 0x00, 0x13, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x24, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x18, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59F8, { 0x00, 0x00, 0x00, 0x08, 0x1B, 0x00, 0x08, 0xEC, 0x00, 0x08, 0x24, 0x00, 0x12, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x2C, 0x00, 0x22, 0x74, 0x00, 0x25, 0xAF, 0x00, 0x24, 0x24, 0x00, 0x34, 0x24, 0x00, 0x2C, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59F9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x7E, 0x02, 0x00, 0x12, 0x1C, 0x00, 0x12, 0xE0, 0x00, 0x12, 0x20, 0x00, 0x12, 0x22, 0x00, 0x23, 0xFF, 0x00, 0x14, 0x20, 0x00, 0x08, 0x20, 0x00, 0x14, 0x21, 0x00, 0x22, 0x21, 0x00, 0x42, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x59FB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x12, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x22, 0x88, 0x80, 0x24, 0x94, 0x80, 0x24, 0x94, 0x80, 0x34, 0xA2, 0x80, 0x28, 0xC1, 0x80, 0x0C, 0x80, 0x80, 0x12, 0x80, 0x80, 0x12, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x59FF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x89, 0x00, 0x01, 0x08, 0x00, 0x07, 0x14, 0x00, 0x38, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0x90, 0x00, 0x08, 0x70, 0x00, 0x03, 0x8C, 0x00, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A00, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x08, 0x05, 0x80, 0x08, 0x04, 0x80, 0x08, 0x04, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x04, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x32, 0xFC, 0x80, 0x26, 0x25, 0x80, 0x24, 0x25, 0x00, 0x7E, 0x67, 0x00, 0x0A, 0x42, 0x00, 0x18, 0xC6, 0x80, 0x31, 0x8B, 0x80, 0x60, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A01, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x1F, 0xE1, 0x00, 0x11, 0x21, 0x00, 0x12, 0x12, 0x00, 0x1F, 0xF2, 0x00, 0x12, 0x94, 0x00, 0x14, 0x8C, 0x00, 0x1D, 0x08, 0x00, 0x13, 0x18, 0x00, 0x22, 0x94, 0x80, 0x24, 0x62, 0x80, 0x29, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A03, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x3F, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x34, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x12, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A04, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x0C, 0x98, 0x00, 0x02, 0xA0, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x38, 0x8F, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x18, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A05, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x49, 0x00, 0x13, 0x4A, 0x00, 0x12, 0xCC, 0x00, 0x22, 0x48, 0x00, 0x14, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x48, 0x00, 0x22, 0x4A, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A06, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x2E, 0x00, 0x09, 0xF0, 0x00, 0x7E, 0x24, 0x00, 0x12, 0x29, 0x00, 0x12, 0x31, 0x00, 0x13, 0xCF, 0x00, 0x12, 0x00, 0x00, 0x23, 0xFC, 0x00, 0x14, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x48, 0x00, 0x22, 0x49, 0x00, 0x40, 0x89, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A07, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x50, 0x00, 0x12, 0x88, 0x00, 0x13, 0x8F, 0x00, 0x22, 0x8A, 0x00, 0x14, 0x88, 0x00, 0x08, 0x88, 0x00, 0x14, 0x88, 0x00, 0x22, 0x88, 0x00, 0x41, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A08, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x12, 0x26, 0x00, 0x22, 0x22, 0x00, 0x02, 0xA0, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x03, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A09, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x00, 0x00, 0x26, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x7C, 0x7F, 0x00, 0x0A, 0x01, 0x00, 0x1A, 0x01, 0x00, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A0C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x26, 0x10, 0x00, 0x24, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A0D, { 0x00, 0x00, 0x00, 0x20, 0x12, 0x00, 0x20, 0x13, 0x00, 0x20, 0x11, 0x00, 0x23, 0xFF, 0x80, 0x7A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xF1, 0x00, 0x2A, 0x59, 0x00, 0x6A, 0x4B, 0x00, 0x4A, 0x4A, 0x00, 0x5A, 0x4E, 0x00, 0x72, 0x44, 0x00, 0x12, 0x4E, 0x00, 0x3A, 0xDA, 0x80, 0x2E, 0x33, 0x80, 0x64, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A0E, { 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x78, 0x00, 0x7F, 0x40, 0x00, 0x04, 0x7F, 0x80, 0x05, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x74, 0x44, 0x00, 0x04, 0x44, 0x00, 0x05, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x18, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A11, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x49, 0x00, 0x24, 0x88, 0x80, 0x15, 0x08, 0x00, 0x08, 0x19, 0x00, 0x08, 0x06, 0x00, 0x10, 0x38, 0x00, 0x11, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0x90, 0x00, 0x08, 0x70, 0x00, 0x03, 0x8E, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A12, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x81, 0x00, 0x7E, 0x91, 0x00, 0x0A, 0x91, 0x00, 0x18, 0xFF, 0x80, 0x30, 0x02, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A13, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x7E, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x12, 0x83, 0x00, 0x12, 0xBE, 0x00, 0x32, 0x88, 0x00, 0x26, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x7C, 0xFF, 0x80, 0x0B, 0x88, 0x00, 0x19, 0x08, 0x80, 0x33, 0x0C, 0x80, 0x60, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A18, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x3F, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x22, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x34, 0x49, 0x00, 0x2C, 0x4A, 0x00, 0x2A, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x42, 0x00, 0x10, 0x7D, 0x00, 0x21, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A1A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x26, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x7C, 0x11, 0x00, 0x0A, 0x31, 0x00, 0x1A, 0x23, 0x00, 0x30, 0x62, 0x00, 0x61, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A1B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x0A, 0xA2, 0x00, 0x3F, 0xA2, 0x00, 0x12, 0xBE, 0x00, 0x12, 0x80, 0x00, 0x12, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x34, 0x11, 0x00, 0x28, 0x11, 0x00, 0x2D, 0xFF, 0x80, 0x0A, 0x28, 0x00, 0x12, 0x44, 0x00, 0x10, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A1C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x54, 0x80, 0x3F, 0x54, 0x80, 0x0A, 0x54, 0x80, 0x0B, 0xFC, 0x80, 0x12, 0x54, 0x80, 0x12, 0x54, 0x80, 0x14, 0x54, 0x80, 0x25, 0xFC, 0x80, 0x38, 0x54, 0x80, 0x28, 0x54, 0x80, 0x0C, 0x54, 0x80, 0x14, 0x55, 0x80, 0x14, 0x94, 0x00, 0x21, 0x64, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A1E, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x12, 0x00, 0x7E, 0x5B, 0x00, 0x12, 0xC9, 0x80, 0x12, 0x80, 0x80, 0x12, 0x10, 0x00, 0x32, 0xFF, 0x80, 0x26, 0x22, 0x00, 0x24, 0x62, 0x00, 0x7C, 0x46, 0x00, 0x0A, 0xF4, 0x00, 0x18, 0x1E, 0x00, 0x30, 0x33, 0x00, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A1F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x12, 0x42, 0x00, 0x3F, 0x7E, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x34, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x0A, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A20, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x3F, 0xC0, 0x00, 0x09, 0x7F, 0x80, 0x09, 0x40, 0x00, 0x11, 0x40, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x54, 0x00, 0x32, 0x55, 0x80, 0x2C, 0x56, 0x00, 0x24, 0x54, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x9E, 0x00, 0x10, 0xF1, 0x00, 0x21, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A23, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x7E, 0x11, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x90, 0x00, 0x12, 0x90, 0x00, 0x32, 0xFF, 0x80, 0x26, 0x30, 0x80, 0x24, 0x30, 0x80, 0x7C, 0x51, 0x80, 0x0A, 0x51, 0x00, 0x18, 0x97, 0x00, 0x31, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A24, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x32, 0x08, 0x00, 0x62, 0x7F, 0x00, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A25, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x3A, 0x00, 0x08, 0xE9, 0x00, 0x0A, 0x28, 0x00, 0x3F, 0x28, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x28, 0x00, 0x12, 0x28, 0x80, 0x24, 0x28, 0x80, 0x24, 0x39, 0x00, 0x34, 0x65, 0x00, 0x29, 0xA6, 0x00, 0x0C, 0x22, 0x00, 0x12, 0x26, 0x80, 0x12, 0x29, 0x80, 0x20, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A27, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x7F, 0x81, 0x80, 0x12, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x32, 0x81, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x18, 0x64, 0x80, 0x30, 0x44, 0x80, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A28, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x10, 0x00, 0x24, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A29, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x44, 0x00, 0x3F, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x24, 0x91, 0x00, 0x34, 0xFF, 0x00, 0x2C, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x12, 0x48, 0x80, 0x10, 0x88, 0x80, 0x23, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A2A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x7C, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x18, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A2D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x90, 0x00, 0x26, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x7C, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x18, 0x66, 0x00, 0x30, 0xC3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A2F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x5E, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x7E, 0x52, 0x00, 0x12, 0x5E, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x00, 0x36, 0x7F, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x7C, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x1A, 0x22, 0x00, 0x30, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A30, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x50, 0x80, 0x7E, 0xD0, 0x80, 0x12, 0x94, 0x80, 0x12, 0x96, 0x80, 0x33, 0x92, 0x80, 0x23, 0x90, 0x80, 0x26, 0x90, 0x80, 0x24, 0x90, 0x80, 0x7C, 0x91, 0x80, 0x0A, 0x99, 0x00, 0x18, 0xF3, 0x00, 0x30, 0x86, 0x80, 0x60, 0x8C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A31, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7E, 0xFC, 0x00, 0x12, 0x84, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFC, 0x00, 0x12, 0x20, 0x00, 0x22, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x41, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A32, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x15, 0x11, 0x00, 0x09, 0x29, 0x00, 0x15, 0x45, 0x00, 0x23, 0x01, 0x00, 0x41, 0x05, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A34, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x5F, 0x00, 0x08, 0x42, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xBA, 0x00, 0x22, 0xB6, 0x00, 0x14, 0xD6, 0x00, 0x08, 0x92, 0x00, 0x14, 0x92, 0x00, 0x22, 0x82, 0x00, 0x42, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A35, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x7D, 0x3F, 0x80, 0x15, 0xE8, 0x80, 0x15, 0x28, 0x80, 0x35, 0x2D, 0x80, 0x25, 0x25, 0x00, 0x2D, 0xE5, 0x00, 0x29, 0x27, 0x00, 0x79, 0x22, 0x00, 0x15, 0x27, 0x00, 0x15, 0xE5, 0x00, 0x33, 0x2D, 0x80, 0x60, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x36, 0x00, 0x17, 0xC1, 0x80, 0x39, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0x10, 0x00, 0x08, 0xE0, 0x00, 0x03, 0x9C, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A3C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x34, 0x80, 0x80, 0x28, 0x80, 0x80, 0x0C, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x12, 0x80, 0x80, 0x12, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A40, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xDF, 0x80, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x7D, 0x5D, 0x00, 0x15, 0x95, 0x00, 0x15, 0x95, 0x00, 0x35, 0x55, 0x00, 0x25, 0x55, 0x00, 0x2D, 0x55, 0x00, 0x29, 0x5D, 0x00, 0x79, 0x41, 0x00, 0x15, 0xC1, 0x00, 0x15, 0x01, 0x00, 0x31, 0x01, 0x00, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A41, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0x10, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A44, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x12, 0x66, 0x00, 0x12, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x0A, 0x81, 0x00, 0x18, 0x81, 0x00, 0x30, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A45, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x7E, 0x40, 0x80, 0x12, 0x90, 0x80, 0x12, 0x92, 0x80, 0x12, 0x54, 0x80, 0x32, 0xFE, 0x80, 0x26, 0x30, 0x80, 0x24, 0x7C, 0x80, 0x7E, 0x56, 0x80, 0x0A, 0xD2, 0x80, 0x19, 0x91, 0x80, 0x30, 0x11, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A46, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x89, 0x00, 0x20, 0x88, 0x00, 0x14, 0xFF, 0x00, 0x08, 0xC2, 0x00, 0x08, 0xA4, 0x00, 0x10, 0x98, 0x00, 0x21, 0x16, 0x00, 0x01, 0x61, 0x80, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0x10, 0x00, 0x08, 0xE0, 0x00, 0x03, 0x9C, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A47, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x11, 0x00, 0x7E, 0x59, 0x80, 0x12, 0xC8, 0x80, 0x12, 0x80, 0x00, 0x12, 0x08, 0x00, 0x32, 0x08, 0x00, 0x26, 0xFF, 0x80, 0x24, 0x2A, 0x00, 0x7E, 0x2A, 0x00, 0x0A, 0x6B, 0x00, 0x18, 0x49, 0x00, 0x30, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A48, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0xC4, 0x00, 0x13, 0xA7, 0x80, 0x32, 0x20, 0x00, 0x26, 0x7E, 0x00, 0x24, 0xC2, 0x00, 0x3D, 0x86, 0x00, 0x0A, 0x6C, 0x00, 0x18, 0x38, 0x00, 0x30, 0x6E, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A49, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3F, 0x00, 0x80, 0x15, 0x40, 0x80, 0x14, 0x40, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x99, 0x00, 0x25, 0x99, 0x00, 0x2A, 0x69, 0x00, 0x38, 0x2B, 0x00, 0x2C, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x12, 0x88, 0x80, 0x11, 0x0F, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A4A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x20, 0x00, 0x14, 0x52, 0x00, 0x08, 0xD4, 0x00, 0x15, 0x48, 0x00, 0x22, 0x44, 0x00, 0x40, 0x63, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A4C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x74, 0x80, 0x08, 0x44, 0x80, 0x7E, 0x44, 0x80, 0x12, 0x45, 0x80, 0x13, 0xF5, 0x00, 0x12, 0x45, 0x00, 0x32, 0x47, 0x00, 0x26, 0xE2, 0x00, 0x25, 0xF2, 0x00, 0x7D, 0x57, 0x00, 0x09, 0x55, 0x00, 0x18, 0x45, 0x00, 0x30, 0x4D, 0x80, 0x60, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A50, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x7C, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x18, 0x91, 0x00, 0x31, 0x10, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A55, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFE, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x32, 0xFE, 0x00, 0x26, 0x10, 0x00, 0x24, 0x90, 0x00, 0x7C, 0x9E, 0x00, 0x0A, 0x90, 0x00, 0x18, 0xD0, 0x00, 0x31, 0x70, 0x00, 0x63, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A5A, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x88, 0x00, 0x12, 0x84, 0x00, 0x12, 0xF2, 0x80, 0x23, 0x81, 0x80, 0x24, 0x00, 0x00, 0x34, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x0C, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A5E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x12, 0x66, 0x00, 0x32, 0x24, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A62, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3F, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x22, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x34, 0x44, 0x00, 0x2D, 0xFF, 0x80, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x10, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A63, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x7E, 0xF7, 0x80, 0x12, 0x80, 0x80, 0x12, 0x80, 0x80, 0x12, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x26, 0x80, 0x80, 0x24, 0xF7, 0x80, 0x7C, 0x94, 0x80, 0x0A, 0x94, 0x80, 0x19, 0x94, 0x80, 0x31, 0x14, 0x80, 0x63, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A65, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x26, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A66, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x14, 0x88, 0x80, 0x24, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x38, 0x49, 0x00, 0x2C, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x11, 0x49, 0x00, 0x10, 0x4B, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A67, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x49, 0x00, 0x24, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A6A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x17, 0x2A, 0x00, 0x35, 0xEB, 0x00, 0x64, 0x49, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0x3C, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A6C, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x08, 0x02, 0x00, 0x7E, 0x53, 0x00, 0x12, 0xD9, 0x00, 0x12, 0x88, 0x00, 0x12, 0x03, 0x00, 0x32, 0x7E, 0x00, 0x26, 0x08, 0x00, 0x24, 0x08, 0x00, 0x7C, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A6D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x12, 0xE7, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x32, 0x81, 0x00, 0x26, 0xE7, 0x00, 0x24, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x18, 0x24, 0x00, 0x30, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A74, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x7E, 0x00, 0x11, 0x44, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x0A, 0x28, 0x00, 0x31, 0x44, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x02, 0x30, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A75, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x22, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x22, 0x10, 0x00, 0x42, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A76, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x7E, 0x10, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x92, 0x00, 0x14, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x92, 0x00, 0x22, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A77, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x32, 0xFF, 0x80, 0x26, 0x80, 0x80, 0x24, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A7A, { 0x00, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x09, 0x3F, 0x80, 0x06, 0x20, 0x80, 0x7F, 0xD1, 0x00, 0x0A, 0x8A, 0x00, 0x12, 0x04, 0x00, 0x22, 0x0A, 0x00, 0x06, 0x71, 0x80, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x0C, 0x00, 0x04, 0x18, 0x00, 0x0F, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xBC, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A7B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0xA2, 0x80, 0x12, 0xB6, 0x80, 0x32, 0x94, 0x80, 0x26, 0xBE, 0x80, 0x24, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x0A, 0x88, 0x80, 0x18, 0x88, 0x80, 0x30, 0x88, 0x80, 0x60, 0x8B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A7E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x7F, 0xBB, 0x80, 0x12, 0x00, 0x00, 0x12, 0xF2, 0x80, 0x12, 0x92, 0x80, 0x32, 0x92, 0x80, 0x26, 0xD5, 0x00, 0x24, 0xB5, 0x00, 0x7E, 0x95, 0x00, 0x0A, 0xD5, 0x00, 0x18, 0xB2, 0x80, 0x30, 0x92, 0x80, 0x60, 0xB2, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A7F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x80, 0x08, 0x4F, 0x00, 0x7E, 0x48, 0x00, 0x12, 0x68, 0x00, 0x12, 0xDF, 0x80, 0x12, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x0B, 0x7F, 0x00, 0x19, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A8B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x32, 0x81, 0x00, 0x27, 0x7E, 0x80, 0x24, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x0A, 0x7E, 0x00, 0x18, 0x42, 0x00, 0x30, 0x42, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF, 0x00, 0x44, 0x21, 0x00, 0x57, 0x21, 0x00, 0x51, 0x3F, 0x00, 0x57, 0x20, 0x80, 0x44, 0x20, 0x80, 0x7F, 0x9F, 0x80, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x18, 0x00, 0x1F, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A92, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x24, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x2C, 0x0C, 0x00, 0x0A, 0x1A, 0x00, 0x12, 0x2A, 0x00, 0x10, 0x49, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A93, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0x7E, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A96, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x7E, 0x52, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x32, 0x91, 0x00, 0x26, 0x91, 0x00, 0x25, 0xFF, 0x80, 0x7C, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x18, 0x66, 0x00, 0x30, 0xC3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A99, { 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x10, 0x04, 0x80, 0x10, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x04, 0x00, 0x15, 0x74, 0x00, 0x15, 0x04, 0x80, 0x35, 0x24, 0x80, 0x25, 0xFD, 0x80, 0x2D, 0x55, 0x00, 0x29, 0x57, 0x00, 0x79, 0x72, 0x00, 0x15, 0x2A, 0x80, 0x15, 0x46, 0x80, 0x31, 0x0B, 0x80, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A9A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x22, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x34, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x0C, 0xBF, 0x00, 0x0A, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x11, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5A9B, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x79, 0x00, 0x08, 0x48, 0x80, 0x12, 0x84, 0x00, 0x3F, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x34, 0x3F, 0x00, 0x28, 0x42, 0x00, 0x0C, 0x64, 0x00, 0x14, 0x98, 0x00, 0x11, 0x36, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A9C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x26, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x0A, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x24, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A9E, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x26, 0x08, 0x00, 0x24, 0x88, 0x00, 0x7E, 0x8F, 0x00, 0x0A, 0x88, 0x00, 0x18, 0xC8, 0x00, 0x31, 0x78, 0x00, 0x61, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5A9F, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x12, 0x9E, 0x00, 0x12, 0x80, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x7E, 0x54, 0x00, 0x0A, 0xD6, 0x00, 0x18, 0x93, 0x00, 0x31, 0x91, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AA0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x7C, 0xFF, 0x00, 0x15, 0x88, 0x00, 0x14, 0x7F, 0x80, 0x34, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x78, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x30, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AA2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x7E, 0x80, 0x80, 0x12, 0xBE, 0x80, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AA4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x34, 0x08, 0x00, 0x2C, 0x05, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0xA2, 0x80, 0x12, 0xA2, 0x80, 0x11, 0x3E, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AA7, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x12, 0x80, 0x80, 0x32, 0xBE, 0x80, 0x26, 0xA2, 0x80, 0x24, 0xA2, 0x80, 0x7E, 0xA2, 0x80, 0x0A, 0xBE, 0x80, 0x18, 0x80, 0x80, 0x30, 0x80, 0x80, 0x60, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AAA, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x7D, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x2A, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x47, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AAC, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x5F, 0x00, 0x08, 0x51, 0x00, 0x08, 0xD1, 0x00, 0x7E, 0x91, 0x00, 0x12, 0x9F, 0x00, 0x13, 0x84, 0x00, 0x13, 0x84, 0x00, 0x33, 0xBF, 0x80, 0x26, 0x84, 0x00, 0x24, 0x8E, 0x00, 0x7E, 0x8E, 0x00, 0x0A, 0x95, 0x00, 0x18, 0x95, 0x00, 0x30, 0xA4, 0x80, 0x60, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AB1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x62, 0x00, 0x09, 0xD6, 0x00, 0x7E, 0x2C, 0x00, 0x12, 0x18, 0x00, 0x12, 0x70, 0x00, 0x13, 0xC0, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x90, 0x00, 0x24, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x18, 0x91, 0x00, 0x30, 0x91, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AB2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0xA5, 0x00, 0x12, 0x99, 0x00, 0x12, 0xA5, 0x00, 0x12, 0x81, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x88, 0x00, 0x24, 0x88, 0x00, 0x7E, 0xEB, 0x00, 0x0A, 0x8E, 0x00, 0x18, 0x88, 0x80, 0x30, 0xE8, 0x80, 0x61, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AB3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x32, 0x81, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x7E, 0x18, 0x00, 0x0A, 0x29, 0x00, 0x18, 0xA1, 0x80, 0x30, 0xA2, 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AB5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x48, 0x00, 0x34, 0x48, 0x00, 0x2F, 0xFF, 0x80, 0x24, 0x86, 0x00, 0x25, 0x83, 0x00, 0x37, 0x21, 0x80, 0x2D, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x24, 0x4C, 0x00, 0x24, 0xF8, 0x00, 0x64, 0x2C, 0x00, 0x4D, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AB8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x91, 0x00, 0x24, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x18, 0x11, 0x00, 0x30, 0x1F, 0x00, 0x61, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ABA, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xAF, 0x80, 0x7F, 0xE9, 0x00, 0x14, 0x19, 0x00, 0x14, 0x01, 0x00, 0x17, 0xF5, 0x00, 0x35, 0x45, 0x00, 0x25, 0x47, 0x00, 0x2D, 0x42, 0x00, 0x79, 0x42, 0x00, 0x15, 0x57, 0x00, 0x31, 0x65, 0x00, 0x23, 0x4D, 0x80, 0x62, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ABB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x15, 0x23, 0x80, 0x7F, 0xC0, 0x00, 0x11, 0x3F, 0x00, 0x15, 0x11, 0x00, 0x15, 0x12, 0x00, 0x11, 0x0C, 0x00, 0x23, 0x33, 0x80, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0x90, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ABC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x5D, 0x00, 0x12, 0x55, 0x00, 0x12, 0x63, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x24, 0x55, 0x00, 0x7C, 0x55, 0x00, 0x0A, 0x55, 0x00, 0x1A, 0x55, 0x00, 0x30, 0x55, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ABD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x48, 0x00, 0x26, 0x48, 0x00, 0x24, 0x7F, 0x80, 0x7E, 0x00, 0x80, 0x0A, 0xAA, 0x80, 0x18, 0xAA, 0x80, 0x31, 0x01, 0x80, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ABE, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0xFF, 0x00, 0x12, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x81, 0x00, 0x30, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ABF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x28, 0x00, 0x24, 0x2A, 0x00, 0x7E, 0x2A, 0x80, 0x0A, 0x6F, 0x80, 0x18, 0x48, 0x00, 0x30, 0xC8, 0x80, 0x60, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AC1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x80, 0x80, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x28, 0x00, 0x12, 0x55, 0x00, 0x24, 0x9E, 0x00, 0x25, 0x2C, 0x00, 0x34, 0x4C, 0x00, 0x28, 0x9A, 0x00, 0x08, 0x2A, 0x00, 0x14, 0x49, 0x00, 0x12, 0x89, 0x00, 0x20, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AC2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x0A, 0x6B, 0x00, 0x3F, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x00, 0x34, 0x42, 0x00, 0x2C, 0x24, 0x00, 0x0A, 0x18, 0x00, 0x12, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AC4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0A, 0x88, 0x00, 0x3F, 0xBF, 0x00, 0x12, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x12, 0xA1, 0x00, 0x24, 0xBF, 0x00, 0x24, 0x88, 0x00, 0x34, 0x88, 0x00, 0x28, 0xA9, 0x00, 0x0C, 0xC9, 0x00, 0x14, 0x88, 0x80, 0x15, 0x08, 0x80, 0x21, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AC6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0xA2, 0x80, 0x12, 0x63, 0x00, 0x12, 0xC9, 0x80, 0x12, 0x1C, 0x00, 0x32, 0x36, 0x00, 0x26, 0x63, 0x00, 0x24, 0xC1, 0x80, 0x7C, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x18, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AC8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x21, 0x01, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0F, 0x90, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AC9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7F, 0x80, 0x3F, 0x48, 0x00, 0x12, 0x48, 0x00, 0x13, 0x5F, 0x00, 0x12, 0xD4, 0x00, 0x12, 0x64, 0x00, 0x14, 0x44, 0x00, 0x34, 0xFF, 0x80, 0x2D, 0x44, 0x00, 0x24, 0x4A, 0x00, 0x0A, 0x4A, 0x00, 0x0A, 0x91, 0x00, 0x12, 0xA1, 0x00, 0x21, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ACB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x20, 0x80, 0x10, 0x20, 0x80, 0x7D, 0xEF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x35, 0xEF, 0x80, 0x24, 0x61, 0x80, 0x2C, 0xA2, 0x80, 0x29, 0x24, 0x80, 0x78, 0x61, 0x80, 0x14, 0xA2, 0x80, 0x15, 0x24, 0x80, 0x30, 0x61, 0x80, 0x61, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ACC, { 0x00, 0x00, 0x00, 0x08, 0x3B, 0x00, 0x08, 0xEE, 0x00, 0x08, 0x28, 0x00, 0x10, 0x28, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x28, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x2A, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x2A, 0x00, 0x34, 0xFE, 0x00, 0x2C, 0x6C, 0x00, 0x0A, 0x6A, 0x00, 0x12, 0xAA, 0x00, 0x11, 0x29, 0x00, 0x22, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ACF, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x87, 0x80, 0x11, 0xF4, 0x80, 0x11, 0x15, 0x80, 0x7D, 0x15, 0x00, 0x15, 0xF7, 0x00, 0x15, 0x16, 0x00, 0x15, 0x15, 0x00, 0x35, 0xF4, 0x80, 0x25, 0x04, 0x80, 0x2D, 0x54, 0x80, 0x79, 0x54, 0x80, 0x09, 0xE6, 0x80, 0x1B, 0x25, 0x80, 0x36, 0x14, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AD0, { 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x23, 0xE4, 0x00, 0x22, 0xA4, 0x00, 0x22, 0xA4, 0x00, 0x7B, 0xFF, 0x80, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2B, 0xE5, 0x00, 0x28, 0x85, 0x00, 0x6B, 0xED, 0x00, 0x48, 0xA9, 0x00, 0x78, 0xAF, 0x00, 0x14, 0xA2, 0x00, 0x35, 0xA7, 0x00, 0x21, 0x25, 0x80, 0x63, 0x6C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AD2, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x92, 0x00, 0x10, 0x54, 0x00, 0x7D, 0xFF, 0x00, 0x25, 0x21, 0x00, 0x26, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x44, 0x40, 0x00, 0x28, 0xFE, 0x00, 0x11, 0x44, 0x00, 0x12, 0x28, 0x00, 0x28, 0x10, 0x00, 0x44, 0x6C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AD4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x7E, 0x0E, 0x00, 0x12, 0x70, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x44, 0x00, 0x22, 0x44, 0x00, 0x14, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x22, 0x44, 0x00, 0x42, 0x83, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AD6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x55, 0x00, 0x12, 0x55, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x7C, 0x08, 0x00, 0x0A, 0x2A, 0x00, 0x1A, 0x6B, 0x00, 0x30, 0xC9, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AD7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x7E, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0x9F, 0x00, 0x12, 0x80, 0x00, 0x32, 0xBB, 0x80, 0x26, 0xAA, 0x80, 0x24, 0xAA, 0x80, 0x7C, 0xAA, 0x80, 0x0A, 0xBB, 0x80, 0x1A, 0x80, 0x00, 0x30, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AD8, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x12, 0x42, 0x00, 0x12, 0xFC, 0x00, 0x22, 0x10, 0x00, 0x14, 0x24, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x54, 0x00, 0x22, 0x93, 0x00, 0x43, 0x11, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ADA, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x5D, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x5D, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x32, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x7C, 0x63, 0x00, 0x0A, 0x36, 0x00, 0x18, 0x1C, 0x00, 0x30, 0x36, 0x00, 0x61, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ADC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AE0, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xD4, 0x00, 0x0E, 0x08, 0x00, 0x15, 0x14, 0x00, 0x24, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x24, 0x08, 0x00, 0x2F, 0x90, 0x00, 0x60, 0xF8, 0x00, 0x4F, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AE1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x12, 0x22, 0x00, 0x12, 0x14, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x34, 0x88, 0x80, 0x28, 0xBE, 0x80, 0x0C, 0xA2, 0x80, 0x12, 0xBE, 0x80, 0x12, 0x80, 0x80, 0x20, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AE3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x4F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x40, 0x00, 0x26, 0x7F, 0x80, 0x24, 0x40, 0x00, 0x7C, 0x7F, 0x80, 0x0A, 0x00, 0x80, 0x1A, 0xAA, 0x80, 0x30, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AE5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x11, 0x00, 0x26, 0xFF, 0x80, 0x24, 0x02, 0x80, 0x7E, 0xFF, 0x80, 0x0A, 0x02, 0x00, 0x18, 0x22, 0x00, 0x30, 0x12, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AE6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x80, 0x80, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x34, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x0C, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x20, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AE9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x13, 0xF9, 0x00, 0x13, 0x59, 0x00, 0x25, 0x59, 0x00, 0x25, 0x5A, 0x00, 0x35, 0xFE, 0x00, 0x2C, 0x4A, 0x00, 0x04, 0xE2, 0x00, 0x0A, 0xD5, 0x00, 0x09, 0x4C, 0x80, 0x11, 0x48, 0x80, 0x22, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AEA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x63, 0x00, 0x08, 0xA5, 0x00, 0x7E, 0x63, 0x00, 0x12, 0xA5, 0x00, 0x12, 0x11, 0x00, 0x12, 0x38, 0x00, 0x32, 0xEE, 0x00, 0x27, 0x83, 0x80, 0x24, 0x10, 0x00, 0x7C, 0xE4, 0x00, 0x0A, 0x19, 0x00, 0x18, 0xE2, 0x00, 0x30, 0x0C, 0x00, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AEB, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x22, 0x28, 0x00, 0x42, 0x47, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AEE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x12, 0xAA, 0x80, 0x12, 0x88, 0x80, 0x12, 0x2A, 0x00, 0x32, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x24, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x18, 0x3F, 0x00, 0x30, 0x01, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AF1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x92, 0x00, 0x12, 0x54, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x14, 0xBA, 0x00, 0x08, 0xAA, 0x00, 0x14, 0xBA, 0x00, 0x22, 0x82, 0x00, 0x42, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AF5, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0xD5, 0x00, 0x7E, 0x55, 0x00, 0x12, 0x55, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x55, 0x00, 0x32, 0x55, 0x00, 0x26, 0x55, 0x00, 0x25, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x18, 0x55, 0x00, 0x30, 0xD5, 0x80, 0x60, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AF6, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC8, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x32, 0xFF, 0x00, 0x26, 0x88, 0x00, 0x24, 0x88, 0x00, 0x7C, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x18, 0xA9, 0x00, 0x31, 0xAD, 0x80, 0x61, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5AFA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7D, 0x29, 0x00, 0x15, 0xEF, 0x00, 0x15, 0x01, 0x00, 0x35, 0x7D, 0x00, 0x25, 0x45, 0x00, 0x2D, 0x7D, 0x00, 0x29, 0x45, 0x00, 0x79, 0x7D, 0x00, 0x15, 0x45, 0x00, 0x15, 0x45, 0x00, 0x31, 0x4D, 0x00, 0x61, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AFB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7D, 0x29, 0x00, 0x15, 0xEF, 0x00, 0x15, 0x01, 0x00, 0x35, 0x11, 0x00, 0x25, 0x7D, 0x00, 0x2D, 0x11, 0x00, 0x29, 0x39, 0x00, 0x79, 0x39, 0x00, 0x15, 0x55, 0x00, 0x15, 0x11, 0x00, 0x31, 0x11, 0x00, 0x61, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5AFD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0xA5, 0x00, 0x12, 0x42, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x26, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x7C, 0x10, 0x00, 0x0A, 0x92, 0x00, 0x18, 0x93, 0x00, 0x31, 0x91, 0x80, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B00, { 0x00, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x10, 0xF8, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x12, 0x00, 0x7D, 0xFE, 0x00, 0x15, 0x02, 0x00, 0x15, 0x02, 0x00, 0x35, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x2D, 0x01, 0x00, 0x29, 0xFF, 0x80, 0x7D, 0x00, 0x80, 0x15, 0x0A, 0x80, 0x12, 0xAA, 0x80, 0x31, 0xA1, 0x80, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B01, { 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x08, 0x14, 0x00, 0x08, 0xB8, 0x80, 0x08, 0x6D, 0x00, 0x7E, 0xC6, 0x00, 0x13, 0xBB, 0x00, 0x13, 0x01, 0x80, 0x32, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x26, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x7E, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x18, 0x6C, 0x00, 0x30, 0x28, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B05, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x3E, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x35, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B08, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x12, 0x42, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x42, 0x00, 0x32, 0x72, 0x00, 0x27, 0xCF, 0x80, 0x24, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x0A, 0x44, 0x00, 0x18, 0x44, 0x80, 0x30, 0xC4, 0x80, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B09, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x24, 0x14, 0x00, 0x34, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x0C, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B0B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x77, 0x00, 0x08, 0x55, 0x00, 0x0A, 0x55, 0x00, 0x3F, 0x77, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x49, 0x00, 0x34, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B0C, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x12, 0x7E, 0x00, 0x13, 0xA5, 0x80, 0x14, 0x3C, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x38, 0x81, 0x00, 0x28, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x14, 0xBD, 0x00, 0x14, 0x81, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B16, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xBF, 0x80, 0x18, 0x84, 0x00, 0x18, 0xBF, 0x00, 0x2F, 0x84, 0x00, 0x08, 0x44, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x05, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B17, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x12, 0xBD, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xBD, 0x00, 0x32, 0x81, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x0A, 0x42, 0x00, 0x18, 0x7E, 0x00, 0x30, 0x42, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B19, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x13, 0x55, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x7E, 0xBD, 0x00, 0x0A, 0xA5, 0x00, 0x18, 0xBD, 0x00, 0x30, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B1B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x7E, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x7E, 0x14, 0x80, 0x0A, 0x35, 0x00, 0x18, 0xE6, 0x00, 0x30, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B1D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC1, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x40, 0x00, 0x26, 0x7F, 0x80, 0x24, 0x10, 0x80, 0x7E, 0xFE, 0x80, 0x0A, 0x34, 0x80, 0x18, 0x68, 0x80, 0x30, 0xA4, 0x80, 0x60, 0x32, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B21, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x91, 0x00, 0x08, 0x4A, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0xD5, 0x00, 0x12, 0x52, 0x80, 0x32, 0x9E, 0x00, 0x26, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x7E, 0xC1, 0x00, 0x0A, 0x26, 0x00, 0x18, 0x1C, 0x00, 0x30, 0x77, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B22, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x7D, 0x81, 0x80, 0x14, 0x24, 0x00, 0x14, 0xFF, 0x00, 0x34, 0x24, 0x00, 0x24, 0xFF, 0x00, 0x2C, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x78, 0x24, 0x00, 0x14, 0x65, 0x00, 0x15, 0xC2, 0x00, 0x30, 0x73, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B25, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x52, 0x80, 0x08, 0xB5, 0x80, 0x7E, 0x52, 0x80, 0x12, 0x94, 0x80, 0x12, 0x22, 0x00, 0x12, 0x44, 0x00, 0x32, 0xFF, 0x80, 0x27, 0x88, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x0A, 0xFF, 0x00, 0x18, 0x88, 0x00, 0x30, 0x88, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B2A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x80, 0x80, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x4B, 0x00, 0x24, 0x8C, 0x00, 0x25, 0x38, 0x00, 0x34, 0xFF, 0x00, 0x2C, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B2C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x12, 0xEE, 0x80, 0x12, 0x88, 0x80, 0x12, 0x6E, 0x00, 0x36, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x7C, 0xFF, 0x80, 0x0A, 0xA4, 0x80, 0x1A, 0xA4, 0x80, 0x30, 0xA4, 0x80, 0x60, 0xA5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B2D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0xDD, 0x80, 0x12, 0xAA, 0x80, 0x32, 0xDD, 0x80, 0x26, 0x88, 0x80, 0x24, 0x88, 0x80, 0x7E, 0xDD, 0x80, 0x0A, 0xAA, 0x80, 0x18, 0xDD, 0x80, 0x30, 0x88, 0x80, 0x60, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B30, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x21, 0x21, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x30, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B32, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7C, 0x8F, 0x80, 0x54, 0x8A, 0x80, 0x54, 0x8A, 0x80, 0x7F, 0xFF, 0x80, 0x54, 0xAA, 0x80, 0x54, 0xAA, 0x80, 0x7D, 0xAF, 0x80, 0x11, 0x22, 0x00, 0x7D, 0x6F, 0x80, 0x15, 0x42, 0x80, 0x15, 0xC2, 0x80, 0x34, 0x46, 0x80, 0x24, 0xE4, 0x80, 0x24, 0xA4, 0x80, 0x6D, 0x8D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B34, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3C, 0xAF, 0x00, 0x27, 0xF9, 0x00, 0x3D, 0x2D, 0x00, 0x25, 0x2B, 0x00, 0x3C, 0xA9, 0x00, 0x24, 0xC9, 0x00, 0x4D, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B36, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x35, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x2D, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x84, 0x00, 0x63, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B37, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x20, 0x12, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x44, 0x00, 0x7A, 0x44, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xEE, 0x00, 0x2B, 0x55, 0x00, 0x4A, 0x20, 0x00, 0x2A, 0x48, 0x00, 0x12, 0x90, 0x00, 0x12, 0x24, 0x00, 0x2A, 0x42, 0x00, 0x44, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B38, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x1E, 0x80, 0x7E, 0xF2, 0x00, 0x12, 0x54, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x38, 0x00, 0x32, 0x54, 0x00, 0x27, 0x93, 0x80, 0x24, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x30, 0x91, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B3E, { 0x00, 0x00, 0x00, 0x20, 0x8F, 0x80, 0x20, 0x82, 0x80, 0x23, 0xE6, 0x80, 0x20, 0x8D, 0x80, 0x7B, 0xE0, 0x00, 0x2A, 0xAF, 0x80, 0x2A, 0xA8, 0x80, 0x2A, 0xAF, 0x80, 0x2B, 0xE8, 0x80, 0x68, 0x8F, 0x80, 0x49, 0xC8, 0x80, 0x79, 0xC8, 0x80, 0x12, 0xAF, 0x80, 0x3A, 0xA2, 0x00, 0x28, 0x8B, 0x00, 0x60, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B40, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x3F, 0x88, 0x80, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x00, 0x00, 0x24, 0x47, 0x80, 0x25, 0xF4, 0x80, 0x34, 0x47, 0x80, 0x28, 0xE4, 0x80, 0x09, 0x57, 0x80, 0x16, 0x44, 0x80, 0x14, 0x47, 0x80, 0x20, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B41, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B43, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x12, 0xE7, 0x00, 0x3F, 0xA5, 0x00, 0x12, 0xE7, 0x00, 0x12, 0x24, 0x00, 0x12, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x24, 0xFF, 0x00, 0x34, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x69, 0x00, 0x14, 0xC6, 0x00, 0x17, 0x7A, 0x00, 0x21, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B45, { 0x00, 0x00, 0x00, 0x11, 0x14, 0x00, 0x11, 0x15, 0x00, 0x12, 0xAD, 0x80, 0x12, 0xAC, 0x80, 0x7C, 0x04, 0x00, 0x17, 0xFF, 0x80, 0x14, 0xA4, 0x00, 0x35, 0xB5, 0x00, 0x24, 0xA5, 0x00, 0x2D, 0xB5, 0x00, 0x28, 0xA7, 0x00, 0x7D, 0xB2, 0x00, 0x14, 0xA6, 0x00, 0x10, 0xF6, 0x80, 0x33, 0x8B, 0x80, 0x60, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B4B, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x11, 0x2A, 0x80, 0x7D, 0x6A, 0x80, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x24, 0x00, 0x35, 0xFF, 0x80, 0x25, 0x24, 0x80, 0x2D, 0xFF, 0x80, 0x79, 0x44, 0x00, 0x15, 0x77, 0x00, 0x35, 0x44, 0x00, 0x63, 0x74, 0x80, 0x42, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B4C, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x68, 0x0D, 0x00, 0x11, 0xE2, 0x00, 0x24, 0x04, 0x80, 0x7D, 0xEF, 0x80, 0x10, 0x02, 0x00, 0x55, 0xEA, 0x80, 0x55, 0x2A, 0x80, 0x11, 0xE2, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0x90, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x41, 0x80, 0x00, 0x46, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x08, 0xC0, 0x00, 0x04, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x98, 0x00, 0x00, 0x86, 0x00, 0x00, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B54, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xD0, 0x00, 0x00, 0x90, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x70, 0x00, 0x07, 0x90, 0x00, 0x3A, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x02, 0x3F, 0x80, 0x04, 0x00, 0x80, 0x0B, 0xF8, 0x80, 0x10, 0x11, 0x00, 0x20, 0x26, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x05, 0x84, 0x00, 0x07, 0x7F, 0x80, 0x1C, 0x04, 0x00, 0x74, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B57, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B58, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x02, 0x02, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x08, 0x00, 0x17, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B59, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0x58, 0x00, 0x06, 0x54, 0x00, 0x1C, 0x92, 0x00, 0x64, 0x93, 0x00, 0x05, 0x11, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x14, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B5A, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x82, 0x00, 0x08, 0x41, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B5B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B5C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x01, 0x20, 0x00, 0x02, 0x3F, 0x80, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0xA2, 0x00, 0x05, 0xA4, 0x00, 0x0E, 0x14, 0x00, 0x34, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x14, 0x00, 0x04, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x0D, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B5D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x41, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x02, 0x0C, 0x00, 0x0C, 0x30, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x63, 0x00, 0x12, 0x21, 0x80, 0x12, 0x04, 0x80, 0x33, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B62, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x44, 0x00, 0x02, 0xFE, 0x00, 0x05, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xF4, 0x00, 0x0F, 0x14, 0x00, 0x19, 0x14, 0x00, 0x69, 0xF4, 0x00, 0x09, 0x04, 0x00, 0x09, 0x14, 0x00, 0x09, 0x09, 0x00, 0x09, 0x01, 0x00, 0x28, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B63, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B64, { 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x02, 0xF4, 0x00, 0x04, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0xA4, 0x00, 0x0C, 0xA4, 0x00, 0x18, 0xA4, 0x00, 0x28, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x26, 0x00, 0x09, 0x3D, 0x00, 0x0A, 0xC5, 0x00, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B65, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0xA1, 0x00, 0x19, 0xB3, 0x00, 0x11, 0x16, 0x00, 0x3F, 0x0C, 0x00, 0x05, 0xB6, 0x00, 0x18, 0x03, 0x80, 0x67, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B66, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x19, 0x86, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x3E, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x07, 0x7F, 0x00, 0x3C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B69, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0x44, 0x00, 0x0C, 0x84, 0x00, 0x18, 0x49, 0x00, 0x28, 0x31, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC4, 0x00, 0x0B, 0x0A, 0x00, 0x08, 0x11, 0x00, 0x08, 0x60, 0x80, 0x1B, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B6A, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x12, 0x26, 0x00, 0x22, 0x22, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x0F, 0x00, 0x02, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x08, 0x24, 0x00, 0x08, 0xC8, 0x00, 0x0A, 0x51, 0x00, 0x0C, 0x2F, 0x00, 0x1B, 0xF0, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B6C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x80, 0x00, 0x02, 0xB0, 0x00, 0x0C, 0x8C, 0x00, 0x30, 0x82, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x7F, 0x04, 0x00, 0x11, 0x08, 0x00, 0x11, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x50, 0x00, 0x31, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B6E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x05, 0xFF, 0x80, 0x0D, 0x00, 0x80, 0x19, 0x00, 0x80, 0x10, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x11, 0x11, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x26, 0x00, 0x21, 0x1C, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x3C, 0x00, 0x3F, 0x67, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B70, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x7E, 0x00, 0x11, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x00, 0x32, 0x00, 0x1F, 0x1A, 0x00, 0x02, 0x16, 0x00, 0x04, 0x12, 0x00, 0x07, 0x92, 0x00, 0x3C, 0x22, 0x00, 0x04, 0x22, 0x80, 0x04, 0x43, 0x80, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B71, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x3F, 0x80, 0x17, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x10, 0x30, 0x00, 0x17, 0xCF, 0x80, 0x10, 0x81, 0x00, 0x11, 0xE3, 0x80, 0x2F, 0x1E, 0x00, 0x21, 0x02, 0x00, 0x23, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B73, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x19, 0x32, 0x00, 0x0A, 0x14, 0x00, 0x05, 0x0A, 0x00, 0x3E, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B75, { 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x19, 0xED, 0x00, 0x15, 0x2A, 0x80, 0x15, 0x31, 0x00, 0x15, 0x20, 0x00, 0x1D, 0xBF, 0x80, 0x15, 0x61, 0x00, 0x15, 0x22, 0x00, 0x15, 0x3F, 0x80, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x1D, 0x24, 0x00, 0x35, 0x64, 0x00, 0x05, 0x04, 0x00, 0x09, 0x04, 0x00, 0x11, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B78, { 0x00, 0x00, 0x00, 0x03, 0xA0, 0x00, 0x0C, 0x5E, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0x3E, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0x5E, 0x00, 0x08, 0xA2, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x09, 0xD7, 0x00, 0x08, 0x10, 0x00, 0x0D, 0xD7, 0x00, 0x18, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x19, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B7C, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x24, 0x84, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x11, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x17, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B7D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x20, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEF, 0x00, 0x05, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x1D, 0xEF, 0x00, 0x70, 0xAA, 0x00, 0x11, 0x11, 0x00, 0x10, 0x40, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x11, 0xE4, 0x00, 0x10, 0x3E, 0x00, 0x71, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B7F, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x68, 0x0D, 0x00, 0x11, 0xE2, 0x00, 0x24, 0x04, 0x80, 0x7D, 0xEF, 0x80, 0x11, 0xE2, 0x00, 0x55, 0x2A, 0x80, 0x55, 0xEA, 0x80, 0x10, 0x02, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B81, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B83, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x03, 0x00, 0x06, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B84, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x21, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x02, 0x09, 0x00, 0x06, 0x0D, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B85, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x0C, 0x80, 0x20, 0x30, 0x80, 0x01, 0xC0, 0x00, 0x0E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x87, 0x80, 0x01, 0xF8, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B86, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B87, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B88, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x04, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B89, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x13, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xB0, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B8A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x99, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x20, 0x00, 0x02, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B8B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B8C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B8D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x30, 0x03, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5B8E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x79, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B8F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x44, 0x00, 0x04, 0x82, 0x00, 0x09, 0x3E, 0x00, 0x17, 0xC1, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B90, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0x01, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0D, 0x8C, 0x00, 0x18, 0xC8, 0x00, 0x00, 0x68, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B91, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0x11, 0x00, 0x22, 0x10, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B93, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x84, 0x00, 0x04, 0x48, 0x00, 0x14, 0x10, 0x00, 0x14, 0x22, 0x00, 0x24, 0x41, 0x00, 0x04, 0x80, 0x80, 0x05, 0x02, 0x00, 0x06, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B94, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B95, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B96, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x89, 0x00, 0x00, 0x91, 0x00, 0x00, 0x97, 0x80, 0x01, 0x78, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B97, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B98, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B99, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B9A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B9B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x22, 0x00, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x51, 0x00, 0x0C, 0x91, 0x00, 0x12, 0x91, 0x00, 0x21, 0x17, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B9C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B9D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B9E, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x43, 0x42, 0x00, 0x01, 0x40, 0x00, 0x08, 0x40, 0x00, 0x06, 0x40, 0x00, 0x02, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5B9F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BA0, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x41, 0x42, 0x00, 0x01, 0x28, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x01, 0x48, 0x00, 0x02, 0x58, 0x00, 0x02, 0x60, 0x00, 0x04, 0x40, 0x00, 0x04, 0xC1, 0x00, 0x09, 0x41, 0x00, 0x10, 0x3F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA1, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x82, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x21, 0x00, 0x80, 0x03, 0xFC, 0x00, 0x06, 0x08, 0x00, 0x09, 0x10, 0x00, 0x30, 0xA0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x07, 0x80, 0x37, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0xC1, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x06, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0x21, 0x00, 0x02, 0x24, 0x00, 0x1A, 0x2C, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x0E, 0x3C, 0x00, 0x3A, 0x26, 0x00, 0x06, 0x20, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x31, 0x00, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BA9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x08, 0x88, 0x00, 0x0C, 0x98, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8C, 0x00, 0x30, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BAA, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x44, 0x92, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x0C, 0x3F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BAB, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x40, 0x12, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BAC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x24, 0x00, 0x11, 0x18, 0x00, 0x11, 0x18, 0x00, 0x16, 0x24, 0x80, 0x20, 0xC2, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BAD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x32, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BAE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BAF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x89, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x90, 0x00, 0x00, 0xA0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x24, 0x81, 0x00, 0x04, 0x80, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x20, 0x00, 0x1B, 0x20, 0x00, 0x18, 0x3E, 0x00, 0x28, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0x90, 0x00, 0x08, 0x70, 0x00, 0x03, 0x8C, 0x00, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x2F, 0xFE, 0x80, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x02, 0xA2, 0x00, 0x04, 0xD4, 0x00, 0x09, 0x58, 0x00, 0x32, 0x68, 0x00, 0x0C, 0xA8, 0x00, 0x31, 0x24, 0x00, 0x06, 0x22, 0x00, 0x18, 0x21, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x88, 0x00, 0x0C, 0x98, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x90, 0x00, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BB8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x04, 0x00, 0x23, 0xF2, 0x00, 0x2E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BB9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x08, 0x00, 0x04, 0x44, 0x00, 0x18, 0xA3, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BBA, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x40, 0x02, 0x00, 0x40, 0x02, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x09, 0x11, 0x00, 0x19, 0x1B, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BBC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x1F, 0x90, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x12, 0x00, 0x3F, 0xA2, 0x00, 0x09, 0x26, 0x00, 0x09, 0x7C, 0x00, 0x09, 0x0E, 0x00, 0x09, 0x73, 0x00, 0x19, 0x01, 0x00, 0x11, 0x81, 0x00, 0x30, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BBD, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x42, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x28, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x02, 0x41, 0x00, 0x04, 0x41, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BBE, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x20, 0x74, 0x00, 0x07, 0x80, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x04, 0x18, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BBF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BC0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x3C, 0x00, 0x07, 0xC2, 0x00, 0x08, 0x21, 0x00, 0x10, 0x10, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BC1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x14, 0x80, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BC2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xBF, 0x80, 0x04, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x04, 0x0A, 0x00, 0x0E, 0x0C, 0x00, 0x0D, 0x04, 0x00, 0x14, 0x8A, 0x00, 0x24, 0x12, 0x00, 0x04, 0x21, 0x00, 0x0C, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BC3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x01, 0xFD, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x30, 0x00, 0x37, 0xFE, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x07, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x80, 0x0C, 0x3F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BC4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x03, 0x18, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x07, 0xE2, 0x00, 0x04, 0x22, 0x00, 0x07, 0xE2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BC5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BC6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x00, 0x80, 0x00, 0x0A, 0x42, 0x00, 0x12, 0x05, 0x00, 0x22, 0x04, 0x80, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BC7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x08, 0x80, 0x0F, 0x08, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x24, 0x00, 0x09, 0x18, 0x00, 0x09, 0x14, 0x00, 0x09, 0x62, 0x00, 0x11, 0x80, 0x80, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BC9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x26, 0x11, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x40, 0x00, 0x38, 0x40, 0x00, 0x6F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BCC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BCD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0xC1, 0x00, 0x04, 0x66, 0x00, 0x14, 0x23, 0x00, 0x14, 0x01, 0x00, 0x36, 0x04, 0x00, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BCF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x04, 0x20, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x0B, 0x24, 0x00, 0x0E, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BD0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0x1C, 0x00, 0x11, 0x1C, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x21, 0x49, 0x00, 0x21, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BD2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x26, 0x00, 0x33, 0x81, 0x80, 0x00, 0x70, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BD3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x44, 0x80, 0x20, 0x7E, 0x80, 0x2F, 0xC1, 0x80, 0x20, 0x00, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BD4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x40, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BD6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x38, 0xFD, 0x00, 0x0C, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x30, 0x04, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x02, 0xFD, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x31, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BD7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x0A, 0x42, 0x00, 0x0A, 0x05, 0x00, 0x13, 0xFC, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BD8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x04, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xF8, 0x00, 0x0A, 0x08, 0x00, 0x0B, 0xF8, 0x00, 0x0A, 0x08, 0x00, 0x0B, 0xF8, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BD9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x41, 0x86, 0x80, 0x07, 0x0C, 0x00, 0x1C, 0x3A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0xAA, 0x00, 0x14, 0xEA, 0x00, 0x15, 0x2A, 0x00, 0x37, 0x6E, 0x80, 0x2D, 0x5B, 0x80, 0x60, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BDA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BDB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x42, 0x10, 0x80, 0x5F, 0xFE, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x80, 0x0E, 0x11, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BDD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x28, 0xFD, 0x00, 0x08, 0x04, 0x00, 0x48, 0xFC, 0x00, 0x68, 0x04, 0x00, 0x28, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x3A, 0x01, 0x00, 0x68, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x08, 0x38, 0x00, 0x0B, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BDE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BDF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x01, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x05, 0x52, 0x00, 0x0C, 0x8C, 0x00, 0x33, 0x06, 0x00, 0x06, 0x01, 0x80, 0x3B, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x06, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFA, 0x00, 0x31, 0x09, 0x80, 0x06, 0x10, 0x00, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x12, 0x7E, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x1E, 0x02, 0x00, 0x12, 0x7E, 0x00, 0x02, 0x00, 0x00, 0x02, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x12, 0x7F, 0x00, 0x12, 0x24, 0x00, 0x12, 0x18, 0x00, 0x22, 0x2C, 0x00, 0x22, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BE4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7E, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x22, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x04, 0x89, 0x00, 0x19, 0x93, 0x00, 0x06, 0xE5, 0x00, 0x18, 0x89, 0x00, 0x00, 0xE1, 0x00, 0x03, 0x18, 0x00, 0x3C, 0x67, 0x80, 0x03, 0x98, 0x00, 0x1C, 0x62, 0x00, 0x03, 0x8C, 0x00, 0x1C, 0x70, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFE, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0A, 0x22, 0x00, 0x0A, 0x05, 0x00, 0x13, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BE8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BE9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x60, 0x00, 0x02, 0x58, 0x00, 0x0C, 0x46, 0x00, 0x37, 0xFD, 0x80, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BEB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x80, 0x80, 0x0E, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x04, 0x80, 0x10, 0x22, 0x80, 0x21, 0x10, 0x80, 0x08, 0x81, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BEC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x80, 0x06, 0x10, 0x80, 0x38, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BEE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0xA2, 0x00, 0x07, 0x1C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BEF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x10, 0x80, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BF0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFD, 0x00, 0x02, 0x43, 0x00, 0x0C, 0x32, 0x00, 0x77, 0x9C, 0x00, 0x0C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BF1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x21, 0x00, 0x22, 0x41, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x1E, 0x82, 0x00, 0x02, 0xFE, 0x00, 0x02, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x54, 0x00, 0x62, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BF3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x21, 0x00, 0x1F, 0x3E, 0x00, 0x04, 0x48, 0x00, 0x1F, 0x2A, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BF4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x44, 0x00, 0x80, 0x44, 0x3E, 0x80, 0x3F, 0xA2, 0x00, 0x11, 0x3E, 0x00, 0x1B, 0x22, 0x00, 0x0A, 0x3E, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xBE, 0x00, 0x15, 0x14, 0x00, 0x15, 0x94, 0x80, 0x34, 0x94, 0x80, 0x64, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BF5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x00, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xDF, 0x00, 0x08, 0x90, 0x00, 0x05, 0x1F, 0x00, 0x3F, 0xE1, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x0F, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x0F, 0x90, 0x00, 0x08, 0x90, 0x80, 0x09, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5BF6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x10, 0x80, 0x1F, 0xDF, 0x00, 0x02, 0x24, 0x00, 0x1F, 0xFF, 0x00, 0x03, 0xC4, 0x80, 0x1E, 0x3F, 0x80, 0x0F, 0xFE, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BF8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BF9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x0A, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x24, 0x08, 0x00, 0x14, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BFA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BFB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BFC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BFD, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x0F, 0xC8, 0x00, 0x08, 0x8C, 0x00, 0x08, 0xC4, 0x00, 0x18, 0x46, 0x00, 0x30, 0x43, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BFE, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xC2, 0x00, 0x01, 0x3F, 0x80, 0x01, 0x02, 0x00, 0x33, 0x02, 0x00, 0x1A, 0x32, 0x00, 0x0E, 0x1A, 0x00, 0x04, 0x0A, 0x00, 0x0E, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x19, 0x82, 0x00, 0x30, 0x82, 0x00, 0x60, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5BFF, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x02, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x0D, 0x84, 0x00, 0x18, 0xC4, 0x00, 0x30, 0x44, 0x00, 0x60, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C01, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x04, 0x12, 0x00, 0x04, 0x0A, 0x00, 0x1F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xE2, 0x00, 0x3C, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C02, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x06, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C04, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0x92, 0x00, 0x10, 0xCA, 0x00, 0x17, 0x82, 0x00, 0x39, 0x82, 0x00, 0x02, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x31, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C05, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x9A, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x32, 0x0E, 0x80, 0x23, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C06, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xF0, 0x80, 0x48, 0x21, 0x80, 0x69, 0x33, 0x00, 0x29, 0x92, 0x00, 0x08, 0x80, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x02, 0x00, 0x38, 0xC2, 0x00, 0x68, 0x62, 0x00, 0x08, 0x22, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C07, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x62, 0x00, 0x22, 0x94, 0x00, 0x23, 0x98, 0x00, 0x3E, 0x50, 0x00, 0x22, 0x64, 0x00, 0x03, 0x84, 0x00, 0x02, 0x04, 0x00, 0x3E, 0xFF, 0x80, 0x12, 0x04, 0x00, 0x12, 0x44, 0x00, 0x12, 0x24, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C08, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0xFF, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C09, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x1F, 0x80, 0x10, 0x02, 0x00, 0x17, 0xC2, 0x00, 0x10, 0x12, 0x00, 0x1F, 0xEA, 0x00, 0x11, 0x02, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x25, 0x22, 0x00, 0x29, 0x22, 0x00, 0x23, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C0A, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x37, 0xFD, 0x80, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0E, 0x1E, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x07, 0xBF, 0x00, 0x38, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C0C, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x7F, 0xC1, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x99, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x81, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C0D, { 0x00, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x2A, 0x84, 0x00, 0x1B, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x07, 0x80, 0x11, 0x7C, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x14, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C0E, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x39, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C0F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x42, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x10, 0x40, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C11, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x40, 0x80, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C13, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x30, 0x80, 0x00, 0x60, 0x80, 0x00, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x18, 0x86, 0x00, 0x30, 0x83, 0x00, 0x60, 0x81, 0x80, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C14, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x10, 0x44, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x02, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x04, 0x46, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x12, 0x00, 0x02, 0x3F, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x8A, 0x00, 0x10, 0x84, 0x00, 0x24, 0x80, 0x00, 0x44, 0x90, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x86, 0x00, 0x02, 0x82, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C16, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C17, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x30, 0x83, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C18, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x02, 0xA0, 0x00, 0x06, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x10, 0x86, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C19, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C1A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x18, 0x86, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C1C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x88, 0x00, 0x08, 0x84, 0x00, 0x11, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x8F, 0x00, 0x64, 0x92, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x12, 0x84, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C1D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x40, 0x12, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C1E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x13, 0x32, 0x00, 0x0A, 0x14, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x37, 0xFB, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C1F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x2A, 0x00, 0x21, 0x2A, 0x00, 0x21, 0x2B, 0x00, 0x3F, 0x49, 0x80, 0x00, 0x08, 0x00, 0x7F, 0x99, 0x00, 0x04, 0x03, 0x00, 0x24, 0x02, 0x00, 0x27, 0x86, 0x00, 0x24, 0x0C, 0x00, 0x34, 0x38, 0x00, 0x6C, 0x00, 0x00, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C20, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x11, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x11, 0x2B, 0x00, 0x1F, 0x49, 0x80, 0x11, 0x08, 0x00, 0x7F, 0xC9, 0x00, 0x2A, 0x19, 0x00, 0x2A, 0x03, 0x00, 0x2B, 0x82, 0x00, 0x30, 0x06, 0x00, 0x20, 0x0C, 0x00, 0x3F, 0x98, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C22, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x03, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x40, 0x00, 0x0C, 0x40, 0x80, 0x18, 0x61, 0x80, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C23, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x1A, 0x26, 0x00, 0x72, 0x23, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x31, 0x00, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C24, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x80, 0x04, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C25, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x10, 0x7E, 0x00, 0x7E, 0x84, 0x00, 0x14, 0x84, 0x00, 0x15, 0x44, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x04, 0x00, 0x14, 0x04, 0x00, 0x14, 0x44, 0x00, 0x14, 0x29, 0x00, 0x24, 0x11, 0x00, 0x23, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C26, { 0x00, 0x00, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x36, 0x20, 0x00, 0x22, 0x3F, 0x80, 0x63, 0x60, 0x80, 0x41, 0x40, 0x80, 0x55, 0xC0, 0x80, 0x14, 0x00, 0x80, 0x14, 0x3C, 0x80, 0x14, 0x01, 0x80, 0x14, 0x01, 0x00, 0x14, 0x01, 0x00, 0x14, 0x03, 0x00, 0x34, 0x0E, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C27, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x3F, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x42, 0x00, 0x03, 0xB2, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x21, 0x00, 0x04, 0x21, 0x00, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C28, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x08, 0x00, 0x02, 0x04, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x04, 0x00, 0x03, 0x08, 0x80, 0x05, 0x11, 0x00, 0x05, 0x62, 0x00, 0x05, 0x04, 0x00, 0x09, 0x18, 0x00, 0x09, 0x60, 0x80, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C29, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x36, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x63, 0x10, 0x00, 0x40, 0x10, 0x00, 0x54, 0x10, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x34, 0x00, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x34, 0x00, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C2C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x7E, 0xC6, 0x00, 0x11, 0x83, 0x80, 0x14, 0x00, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0xC4, 0x00, 0x14, 0x84, 0x00, 0x35, 0x84, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C2D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x80, 0x0C, 0x19, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C2E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x44, 0x00, 0x10, 0x47, 0x00, 0x7E, 0x41, 0x00, 0x10, 0xC1, 0x00, 0x15, 0x87, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x54, 0x00, 0x14, 0x54, 0x00, 0x14, 0xD6, 0x00, 0x15, 0x93, 0x00, 0x34, 0x10, 0x00, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C30, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x35, 0xFF, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C31, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x0A, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE8, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x10, 0x4C, 0x00, 0x1F, 0xCC, 0x00, 0x02, 0x0C, 0x00, 0x0A, 0x8C, 0x00, 0x0A, 0x94, 0x00, 0x12, 0x54, 0x80, 0x22, 0x54, 0x80, 0x02, 0x27, 0x80, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C32, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x36, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x24, 0x00, 0x11, 0xFF, 0x00, 0x14, 0x25, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x25, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x24, 0x00, 0x14, 0x66, 0x00, 0x14, 0xA5, 0x00, 0x34, 0x24, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C34, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x11, 0x48, 0x00, 0x11, 0x50, 0x00, 0x11, 0x7E, 0x00, 0x7F, 0x40, 0x00, 0x15, 0x48, 0x00, 0x14, 0x44, 0x00, 0x14, 0x40, 0x00, 0x15, 0xFC, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C35, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x34, 0xFE, 0x80, 0x27, 0x01, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C36, { 0x00, 0x00, 0x00, 0x01, 0xF4, 0x00, 0x7F, 0x44, 0x00, 0x15, 0xEF, 0x80, 0x15, 0x28, 0x00, 0x15, 0xF0, 0x00, 0x15, 0x47, 0x80, 0x15, 0xF0, 0x00, 0x14, 0x00, 0x00, 0x14, 0xFF, 0x00, 0x14, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x35, 0xFF, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x80, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x10, 0x08, 0x00, 0x10, 0x06, 0x00, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0B, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x80, 0x11, 0x04, 0x80, 0x12, 0x07, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x83, 0x00, 0x10, 0x9C, 0x00, 0x10, 0xE0, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x80, 0x10, 0x80, 0x80, 0x20, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0x8C, 0x00, 0x18, 0xE4, 0x00, 0x10, 0x26, 0x00, 0x30, 0x03, 0x00, 0x63, 0x01, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x70, 0x00, 0x13, 0xC0, 0x00, 0x10, 0x7E, 0x00, 0x17, 0xC0, 0x00, 0x10, 0x5F, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x7F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x80, 0x0F, 0xD1, 0x00, 0x08, 0x5A, 0x00, 0x08, 0x98, 0x00, 0x08, 0x94, 0x00, 0x09, 0x14, 0x00, 0x09, 0x12, 0x00, 0x12, 0x12, 0x00, 0x14, 0x11, 0x00, 0x20, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x13, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x13, 0x00, 0x13, 0xDE, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x32, 0x10, 0x00, 0x22, 0x10, 0x80, 0x63, 0xD9, 0x80, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C42, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x11, 0x08, 0x00, 0x12, 0x04, 0x00, 0x27, 0xFE, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x15, 0xFD, 0x00, 0x24, 0x01, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C49, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x4A, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x78, 0x00, 0x12, 0x00, 0x00, 0x22, 0x04, 0x00, 0x43, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x21, 0x00, 0x24, 0x21, 0x00, 0x64, 0x21, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x82, 0x00, 0x11, 0x3F, 0x00, 0x17, 0xE1, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x28, 0x00, 0x0B, 0xF9, 0x80, 0x0A, 0x2E, 0x00, 0x0D, 0x48, 0x00, 0x10, 0x88, 0x00, 0x11, 0x08, 0x80, 0x12, 0x08, 0x80, 0x2C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x70, 0x00, 0x08, 0x68, 0x00, 0x08, 0xA4, 0x00, 0x11, 0x22, 0x00, 0x12, 0x21, 0x00, 0x24, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x31, 0x88, 0x00, 0x21, 0x08, 0x00, 0x63, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x13, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x1C, 0x08, 0x00, 0x11, 0x7E, 0x00, 0x13, 0x22, 0x00, 0x1E, 0x36, 0x00, 0x32, 0x14, 0x00, 0x22, 0x1C, 0x00, 0x62, 0x36, 0x00, 0x02, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x37, 0xFF, 0x00, 0x21, 0x04, 0x00, 0x63, 0x06, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x11, 0x0A, 0x00, 0x21, 0x04, 0x00, 0x21, 0xE2, 0x00, 0x2E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xBF, 0x80, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x15, 0x39, 0x00, 0x14, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x35, 0xB9, 0x00, 0x24, 0x01, 0x00, 0x64, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x15, 0x29, 0x00, 0x14, 0xA5, 0x00, 0x34, 0x21, 0x00, 0x25, 0x29, 0x00, 0x64, 0xA5, 0x00, 0x04, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C5B, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0xC8, 0x00, 0x1F, 0x7F, 0x80, 0x11, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x12, 0x20, 0x00, 0x12, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x15, 0xFF, 0x80, 0x19, 0x2A, 0x00, 0x13, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x36, 0x2E, 0x00, 0x2A, 0x20, 0x00, 0x62, 0x20, 0x00, 0x02, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x29, 0x00, 0x24, 0x3D, 0x00, 0x65, 0xE5, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x60, 0x00, 0x10, 0x80, 0x00, 0x13, 0xFE, 0x00, 0x2E, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x44, 0x00, 0x12, 0x48, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x48, 0x00, 0x16, 0x47, 0x00, 0x10, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x63, 0xF0, 0x00, 0x00, 0x4C, 0x00, 0x0F, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C62, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x23, 0x0C, 0x00, 0x20, 0xF0, 0x00, 0x2F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x08, 0x00, 0x12, 0x28, 0x00, 0x12, 0x2F, 0x00, 0x16, 0x28, 0x00, 0x15, 0x28, 0x00, 0x19, 0x7F, 0x80, 0x13, 0x08, 0x00, 0x12, 0x08, 0x00, 0x36, 0x4F, 0x00, 0x2A, 0x68, 0x00, 0x62, 0x58, 0x00, 0x02, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C64, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x38, 0x00, 0x11, 0x04, 0x00, 0x12, 0x03, 0x80, 0x1F, 0xFF, 0x00, 0x15, 0x25, 0x00, 0x14, 0xA9, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C65, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x14, 0x3F, 0x00, 0x19, 0x40, 0x00, 0x12, 0xBF, 0x00, 0x16, 0x21, 0x00, 0x1A, 0x3F, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x20, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x52, 0x00, 0x22, 0x8C, 0x00, 0x22, 0x36, 0x00, 0x22, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C66, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x12, 0x54, 0x00, 0x14, 0x10, 0x00, 0x19, 0xFE, 0x00, 0x12, 0x54, 0x00, 0x16, 0x92, 0x00, 0x1A, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x44, 0x00, 0x22, 0x38, 0x00, 0x42, 0x24, 0x00, 0x02, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C67, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x12, 0x52, 0x00, 0x12, 0xFF, 0x80, 0x16, 0x52, 0x00, 0x15, 0x5E, 0x00, 0x19, 0x40, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x3A, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x62, 0x6B, 0x00, 0x02, 0xC9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C68, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x15, 0xFF, 0x80, 0x19, 0x49, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x1A, 0x49, 0x00, 0x32, 0xFF, 0x80, 0x22, 0x32, 0x00, 0x62, 0x1C, 0x00, 0x02, 0xF7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C69, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x10, 0x00, 0x16, 0x7F, 0x00, 0x15, 0x24, 0x00, 0x19, 0x7E, 0x00, 0x13, 0xA5, 0x00, 0x12, 0xFF, 0x80, 0x16, 0x81, 0x00, 0x3A, 0xBD, 0x00, 0x22, 0xA5, 0x00, 0x62, 0xBD, 0x00, 0x02, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C6C, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x13, 0xAE, 0x00, 0x13, 0xAE, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x89, 0x00, 0x17, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x1B, 0xF9, 0x00, 0x12, 0x49, 0x00, 0x13, 0xF9, 0x00, 0x20, 0x45, 0x00, 0x20, 0xFF, 0x00, 0x27, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C6D, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x17, 0x9F, 0x00, 0x14, 0x91, 0x00, 0x37, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x67, 0x9F, 0x00, 0x0C, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C6E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C6F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x8F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C70, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C71, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C74, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x02, 0x06, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C75, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C76, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x02, 0x01, 0x00, 0x06, 0x01, 0x00, 0x0C, 0x03, 0x00, 0x18, 0x02, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C79, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x80, 0x00, 0x2B, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x06, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x40, 0x00, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C7A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C7B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x54, 0x10, 0x80, 0x54, 0x90, 0x80, 0x54, 0x90, 0x80, 0x55, 0xB0, 0x80, 0x55, 0x20, 0x80, 0x55, 0x60, 0x80, 0x54, 0x40, 0x80, 0x7C, 0xC1, 0x80, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C7C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x48, 0x00, 0x54, 0x48, 0x00, 0x54, 0x48, 0x00, 0x54, 0x48, 0x00, 0x54, 0x48, 0x00, 0x54, 0x48, 0x00, 0x54, 0x48, 0x00, 0x54, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x8C, 0x80, 0x03, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C7D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C7F, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0x12, 0x00, 0x2B, 0xFA, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C81, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x09, 0x04, 0x00, 0x10, 0x88, 0x00, 0x00, 0x50, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C82, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C87, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x27, 0x41, 0x00, 0x78, 0x47, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C88, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x80, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x12, 0x00, 0x54, 0x12, 0x00, 0x54, 0x32, 0x00, 0x7C, 0x22, 0x00, 0x00, 0x62, 0x00, 0x00, 0xC2, 0x00, 0x03, 0x82, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x3F, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x20, 0x02, 0x00, 0x30, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C8C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x07, 0xFE, 0x00, 0x05, 0x06, 0x00, 0x0D, 0x8C, 0x00, 0x18, 0xD8, 0x00, 0x30, 0x70, 0x00, 0x60, 0xD8, 0x00, 0x03, 0x8E, 0x00, 0x1E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C8D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x84, 0x00, 0x02, 0x84, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C8F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x7C, 0x64, 0x00, 0x00, 0x44, 0x80, 0x00, 0xC4, 0x80, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C90, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x18, 0x00, 0x22, 0x18, 0x00, 0x00, 0x24, 0x00, 0x00, 0xC2, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5C91, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x0C, 0x00, 0x0D, 0xF3, 0x80, 0x30, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C92, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x54, 0xC6, 0x00, 0x55, 0x83, 0x00, 0x57, 0x7D, 0x80, 0x54, 0x00, 0x00, 0x54, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x02, 0x00, 0x7C, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C94, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x38, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C96, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xA2, 0x00, 0x3E, 0xC0, 0x00, 0x02, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C97, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x24, 0x12, 0x00, 0x22, 0x22, 0x00, 0x21, 0x42, 0x00, 0x20, 0x82, 0x00, 0x21, 0x42, 0x00, 0x22, 0x22, 0x00, 0x24, 0x1A, 0x00, 0x28, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C98, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xB4, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x50, 0x00, 0x3E, 0x91, 0x00, 0x02, 0x91, 0x00, 0x01, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C99, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x87, 0x00, 0x60, 0x82, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C9A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x28, 0x00, 0x09, 0x48, 0x00, 0x08, 0x88, 0x00, 0x09, 0x48, 0x00, 0x12, 0x28, 0x00, 0x14, 0x29, 0x00, 0x20, 0x05, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C9B, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x09, 0x20, 0x00, 0x08, 0x60, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x02, 0x04, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3F, 0xE4, 0x00, 0x20, 0x34, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C9C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C9D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x80, 0x00, 0x30, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5C9F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0x92, 0x00, 0x54, 0x92, 0x00, 0x54, 0x92, 0x00, 0x54, 0x92, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x28, 0x00, 0x7C, 0x6C, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CA0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x24, 0x11, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CA2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CA3, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x54, 0x80, 0x80, 0x55, 0x80, 0x80, 0x54, 0x7C, 0x80, 0x54, 0x44, 0x80, 0x54, 0x44, 0x80, 0x54, 0x44, 0x80, 0x54, 0x44, 0x80, 0x7C, 0x7C, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CA6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x18, 0x00, 0x06, 0x10, 0x00, 0x02, 0x30, 0x00, 0x02, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CA9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x34, 0x01, 0x00, 0x04, 0x01, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CAA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x06, 0x21, 0x00, 0x0C, 0x23, 0x00, 0x38, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CAB, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xA4, 0x80, 0x20, 0xBF, 0x80, 0x20, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CAC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CAD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xA7, 0x00, 0x2B, 0x12, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x02, 0x00, 0x2E, 0x04, 0x00, 0x3A, 0x28, 0x00, 0x22, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CB1, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x40, 0x00, 0x18, 0x5F, 0x80, 0x1B, 0xE0, 0x00, 0x28, 0x40, 0x00, 0x08, 0x20, 0x00, 0x08, 0x18, 0x80, 0x08, 0x07, 0x80, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CB2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x7C, 0x64, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC4, 0x80, 0x01, 0x84, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CB3, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CB4, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x10, 0xF0, 0x00, 0x10, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CB5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CB6, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x10, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x7C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CB7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x90, 0x00, 0x3E, 0x88, 0x00, 0x22, 0x88, 0x00, 0x00, 0xBC, 0x80, 0x01, 0xC2, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CB8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CBA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x31, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x18, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CBB, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x88, 0x00, 0x54, 0x88, 0x00, 0x54, 0x88, 0x00, 0x54, 0xFF, 0x80, 0x54, 0x88, 0x00, 0x54, 0x88, 0x00, 0x54, 0x8C, 0x00, 0x54, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x00, 0xF6, 0x00, 0x03, 0x82, 0x80, 0x00, 0x03, 0x80, 0x03, 0xF9, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CBC, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x54, 0x92, 0x00, 0x55, 0x93, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x54, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CBD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x02, 0x40, 0x00, 0x04, 0x48, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x04, 0x48, 0x00, 0x08, 0x46, 0x00, 0x31, 0x42, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CBE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0F, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CBF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x04, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x28, 0x02, 0x00, 0x08, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CC0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CC1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x02, 0x00, 0x3C, 0x7F, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x27, 0x42, 0x00, 0x39, 0x52, 0x00, 0x02, 0x4C, 0x00, 0x02, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CC4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x6C, 0x00, 0x2B, 0x83, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CC5, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x54, 0x9F, 0x00, 0x55, 0xF5, 0x80, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CC7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CC9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x08, 0x00, 0x3F, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CCB, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x11, 0x80, 0x80, 0x55, 0x00, 0x80, 0x54, 0x7C, 0x80, 0x54, 0x44, 0x80, 0x54, 0x44, 0x80, 0x54, 0x7C, 0x80, 0x54, 0x44, 0x80, 0x54, 0x44, 0x80, 0x7C, 0x7C, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CD2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x55, 0x7D, 0x00, 0x55, 0x01, 0x00, 0x55, 0x01, 0x00, 0x55, 0x7D, 0x00, 0x55, 0x45, 0x00, 0x55, 0x45, 0x00, 0x55, 0x45, 0x00, 0x7D, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CD7, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7E, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x88, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0xBE, 0x00, 0x54, 0xA2, 0x00, 0x54, 0xA2, 0x00, 0x54, 0xA2, 0x00, 0x7C, 0xA6, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x80, 0x00, 0xB1, 0x80, 0x01, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CD9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x04, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CDD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CE0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x0F, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x24, 0x8C, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x89, 0x00, 0x20, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CE1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x55, 0x11, 0x00, 0x55, 0x93, 0x00, 0x54, 0x92, 0x00, 0x54, 0x92, 0x00, 0x54, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x28, 0x00, 0x7C, 0x6C, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CE4, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x54, 0x22, 0x00, 0x57, 0xFF, 0x00, 0x54, 0x50, 0x00, 0x54, 0x88, 0x00, 0x54, 0x8C, 0x00, 0x55, 0x8B, 0x00, 0x56, 0x88, 0x00, 0x54, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x04, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CE5, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x88, 0x00, 0x2B, 0x12, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x12, 0x00, 0x02, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CE6, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x22, 0x20, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CE8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x3A, 0x00, 0x08, 0xE9, 0x00, 0x08, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x80, 0x2A, 0x28, 0x80, 0x2A, 0x39, 0x00, 0x2A, 0x65, 0x00, 0x2B, 0xA6, 0x00, 0x2A, 0x22, 0x00, 0x3E, 0x26, 0x80, 0x22, 0x29, 0x80, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CE9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0x22, 0x00, 0x3C, 0x23, 0x00, 0x08, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x12, 0x00, 0x08, 0x16, 0x00, 0x0F, 0x1C, 0x00, 0x78, 0x08, 0x00, 0x08, 0x1C, 0x80, 0x08, 0x76, 0x80, 0x39, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CEA, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x55, 0x83, 0x00, 0x54, 0x10, 0x00, 0x54, 0x38, 0x00, 0x54, 0x6C, 0x00, 0x54, 0xC6, 0x00, 0x57, 0x83, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CED, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x52, 0x00, 0x10, 0xD3, 0x00, 0x10, 0x91, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CEE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x22, 0x00, 0x54, 0x22, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x40, 0x00, 0x54, 0x40, 0x00, 0x54, 0xFF, 0x00, 0x7D, 0xC1, 0x00, 0x03, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CEF, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x01, 0xFC, 0x00, 0x07, 0x08, 0x00, 0x18, 0x90, 0x00, 0x00, 0x60, 0x00, 0x03, 0x9F, 0x80, 0x3C, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CF0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x42, 0x00, 0x2A, 0xA4, 0x00, 0x2B, 0x18, 0x00, 0x2A, 0x2C, 0x00, 0x2A, 0x53, 0x80, 0x2B, 0x90, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CF1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFC, 0x00, 0x28, 0x24, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x49, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CF2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x1E, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x0D, 0x22, 0x00, 0x14, 0x82, 0x00, 0x24, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CF4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x28, 0x00, 0x22, 0x28, 0x00, 0x00, 0x48, 0x80, 0x00, 0x8F, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CF6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x22, 0x10, 0x80, 0x22, 0x10, 0x80, 0x3F, 0xF1, 0x00, 0x20, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5CFA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x7C, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x78, 0x00, 0x00, 0xCE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CFB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0x4F, 0x00, 0x09, 0xF4, 0x80, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x80, 0x2A, 0x47, 0x80, 0x2B, 0xA0, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0xA2, 0x00, 0x3F, 0x14, 0x00, 0x22, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x66, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5CFD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0xAA, 0x80, 0x2A, 0xAC, 0x80, 0x2B, 0x08, 0x00, 0x2A, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D01, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x09, 0x93, 0x00, 0x08, 0x12, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x0E, 0x2C, 0x00, 0x78, 0x66, 0x00, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D02, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x2B, 0x21, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x44, 0x00, 0x02, 0x44, 0x00, 0x00, 0x94, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D03, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x38, 0x00, 0x2A, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x02, 0x92, 0x00, 0x01, 0x11, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D06, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x44, 0x80, 0x55, 0x44, 0x80, 0x54, 0x44, 0x00, 0x54, 0xC4, 0x00, 0x55, 0x83, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D07, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D0B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D0D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0xAA, 0x80, 0x2B, 0x1C, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x22, 0x2C, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x89, 0x00, 0x01, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D0E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x28, 0x00, 0x2A, 0x46, 0x00, 0x2B, 0x81, 0x80, 0x2A, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x02, 0x00, 0x2A, 0xF2, 0x00, 0x3E, 0x92, 0x00, 0x22, 0xF2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D11, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x13, 0x80, 0x0F, 0x9C, 0x00, 0x08, 0x10, 0x80, 0x0F, 0xD0, 0x80, 0x38, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D12, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x1B, 0x36, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D14, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x04, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D15, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x55, 0x08, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x55, 0x08, 0x00, 0x7D, 0x7F, 0x00, 0x03, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D16, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D17, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x21, 0x10, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x24, 0x44, 0x80, 0x24, 0x44, 0x80, 0x24, 0x44, 0x80, 0x27, 0xFC, 0x80, 0x24, 0x04, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D18, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x54, 0xC6, 0x00, 0x57, 0x83, 0x80, 0x54, 0x7C, 0x00, 0x54, 0x00, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x7D, 0xFF, 0x00, 0x01, 0x49, 0x00, 0x01, 0x49, 0x00, 0x01, 0x49, 0x00, 0x01, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D19, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xC1, 0x00, 0x01, 0x20, 0x00, 0x02, 0x18, 0x00, 0x0D, 0xF6, 0x00, 0x30, 0x01, 0x80, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D1A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x44, 0x00, 0x54, 0xC4, 0x00, 0x55, 0xA7, 0x80, 0x54, 0x20, 0x00, 0x54, 0x7E, 0x00, 0x54, 0xC2, 0x00, 0x7D, 0x86, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D1B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x55, 0x01, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x00, 0x00, 0x55, 0x08, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x7D, 0x08, 0x00, 0x03, 0x49, 0x00, 0x02, 0x49, 0x00, 0x06, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D1E, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x30, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D1F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x02, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D22, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF2, 0x00, 0x54, 0x53, 0x00, 0x54, 0x89, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x11, 0x00, 0x54, 0x11, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x11, 0x00, 0x54, 0x11, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D23, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x38, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x90, 0x00, 0x38, 0x8E, 0x00, 0x01, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x07, 0x20, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D24, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x38, 0x00, 0x11, 0xC6, 0x00, 0x54, 0x20, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x54, 0x7F, 0x00, 0x54, 0xC1, 0x00, 0x55, 0x7F, 0x00, 0x54, 0x41, 0x00, 0x7C, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D26, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x54, 0x54, 0x00, 0x54, 0x92, 0x00, 0x55, 0xFF, 0x00, 0x56, 0x92, 0x80, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x10, 0x80, 0x00, 0x19, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D27, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x0E, 0x00, 0x02, 0x02, 0x00, 0x1F, 0xD1, 0x00, 0x02, 0x21, 0x00, 0x07, 0x48, 0x80, 0x06, 0x88, 0x00, 0x0A, 0x52, 0x00, 0x12, 0x11, 0x00, 0x22, 0x27, 0x00, 0x02, 0x78, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D29, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x23, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D2B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x20, 0x00, 0x12, 0x21, 0x00, 0x32, 0x21, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D2D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0x70, 0x00, 0x10, 0x40, 0x00, 0x24, 0x42, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x48, 0x00, 0x07, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x24, 0x88, 0x00, 0x04, 0x88, 0x00, 0x05, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D2E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D31, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x81, 0x00, 0x20, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x0A, 0x01, 0x00, 0x31, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D34, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x2F, 0xD2, 0x00, 0x22, 0x1A, 0x00, 0x2F, 0xCA, 0x00, 0x24, 0x8E, 0x00, 0x2E, 0x84, 0x80, 0x63, 0x0E, 0x80, 0x4E, 0xDB, 0x80, 0x40, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D39, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x54, 0x66, 0x00, 0x54, 0x24, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x10, 0x80, 0x55, 0x10, 0x80, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x7C, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0x93, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D3D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x32, 0x25, 0x80, 0x63, 0x0C, 0x80, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D3E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x08, 0x2A, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x48, 0x00, 0x02, 0x30, 0x00, 0x00, 0x4C, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D3F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x55, 0xEF, 0x00, 0x54, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x54, 0x40, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D42, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x11, 0x00, 0x63, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D43, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x3C, 0x00, 0x54, 0x42, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x02, 0x00, 0x55, 0x0E, 0x00, 0x55, 0x79, 0x00, 0x55, 0x03, 0x00, 0x55, 0x1E, 0x00, 0x7D, 0x70, 0x80, 0x01, 0x01, 0x80, 0x01, 0x03, 0x00, 0x02, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D46, { 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x1E, 0x13, 0x00, 0x04, 0x10, 0x00, 0x7F, 0x7F, 0x80, 0x04, 0x10, 0x00, 0x0E, 0x38, 0x00, 0x0D, 0x28, 0x00, 0x14, 0x68, 0x80, 0x24, 0x4C, 0x80, 0x04, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D47, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x50, 0x00, 0x78, 0x4A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x50, 0x00, 0x08, 0x91, 0x00, 0x18, 0x91, 0x00, 0x1D, 0x0F, 0x00, 0x2A, 0x20, 0x00, 0x28, 0x20, 0x00, 0x49, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D48, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x13, 0xFC, 0x00, 0x10, 0xA2, 0x00, 0x55, 0xB3, 0x00, 0x55, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x20, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x40, 0x00, 0x54, 0x7E, 0x00, 0x54, 0xC2, 0x00, 0x7D, 0x86, 0x00, 0x03, 0x6C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D4A, { 0x00, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x54, 0x54, 0x00, 0x54, 0x54, 0x00, 0x55, 0xD7, 0x80, 0x54, 0x54, 0x00, 0x54, 0x54, 0x80, 0x55, 0xD4, 0x80, 0x54, 0x53, 0x80, 0x7C, 0x38, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xD6, 0x00, 0x03, 0x93, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D4B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x3E, 0xBF, 0x00, 0x22, 0xA1, 0x00, 0x00, 0xBF, 0x00, 0x01, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D4C, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x3F, 0x80, 0x3F, 0xA9, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x21, 0x00, 0x12, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D4E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x54, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x10, 0x80, 0x7D, 0x14, 0x80, 0x01, 0x1E, 0x80, 0x01, 0x72, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D50, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0xE4, 0x00, 0x17, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x94, 0x80, 0x10, 0xFA, 0x80, 0x27, 0x05, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D51, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x40, 0x00, 0x54, 0xFF, 0x80, 0x55, 0x90, 0x80, 0x57, 0x10, 0x80, 0x7D, 0x38, 0x80, 0x01, 0x6C, 0x80, 0x01, 0x01, 0x80, 0x01, 0xF9, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D52, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D55, { 0x00, 0x00, 0x00, 0x10, 0x81, 0x00, 0x10, 0xA5, 0x00, 0x10, 0x99, 0x00, 0x10, 0xA5, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x44, 0x00, 0x54, 0xC4, 0x00, 0x55, 0xA3, 0x80, 0x54, 0x7E, 0x00, 0x54, 0xC2, 0x00, 0x7D, 0xA6, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x76, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D58, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2B, 0x12, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x38, 0x00, 0x3E, 0x54, 0x00, 0x02, 0x93, 0x00, 0x01, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D59, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x7C, 0x62, 0x00, 0x08, 0x32, 0x00, 0x08, 0x02, 0x00, 0x7F, 0x62, 0x00, 0x08, 0x32, 0x00, 0x1C, 0x03, 0x80, 0x3A, 0x1E, 0x00, 0x29, 0x72, 0x00, 0x48, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D5B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x1C, 0x18, 0x00, 0x67, 0xF7, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x13, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D5C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D5D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x20, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x84, 0x00, 0x3E, 0x48, 0x00, 0x02, 0x30, 0x00, 0x00, 0x4C, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D5F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x12, 0x20, 0x00, 0x17, 0xFE, 0x00, 0x1C, 0x20, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x20, 0x00, 0x37, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x64, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D60, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xE2, 0x00, 0x10, 0xB3, 0x00, 0x55, 0x91, 0x00, 0x55, 0x20, 0x00, 0x54, 0x64, 0x00, 0x54, 0xC8, 0x00, 0x54, 0x52, 0x00, 0x54, 0x3F, 0x00, 0x55, 0xE1, 0x80, 0x7C, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D61, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x87, 0x00, 0x01, 0x10, 0x00, 0x03, 0xF8, 0x00, 0x0E, 0x0C, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x31, 0x31, 0x00, 0x07, 0x07, 0x00, 0x09, 0x09, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D62, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x55, 0xBB, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x7C, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x41, 0x00, 0x03, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D64, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D69, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D6A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x54, 0x7E, 0x00, 0x54, 0x42, 0x00, 0x54, 0x7E, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x55, 0x7E, 0x80, 0x7D, 0x42, 0x80, 0x01, 0x42, 0x80, 0x01, 0x7E, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D6B, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xAA, 0x00, 0x2B, 0xDC, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x8A, 0x00, 0x3F, 0x52, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D6C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x2A, 0x00, 0x01, 0x37, 0x00, 0x02, 0x39, 0x00, 0x0C, 0x20, 0x80, 0x30, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D6D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x54, 0x24, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x55, 0x10, 0x80, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x7C, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x61, 0x00, 0x00, 0xC1, 0x00, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D6F, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x3E, 0x80, 0x00, 0x22, 0xFF, 0x00, 0x21, 0x08, 0x00, 0x02, 0x08, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D70, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x48, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x49, 0x00, 0x54, 0x49, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x49, 0x00, 0x54, 0x49, 0x00, 0x55, 0xFF, 0x00, 0x7C, 0x4C, 0x00, 0x00, 0xCA, 0x00, 0x01, 0x4B, 0x00, 0x02, 0x49, 0x80, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D73, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D74, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x55, 0x24, 0x00, 0x54, 0x50, 0x00, 0x54, 0x88, 0x00, 0x55, 0xFF, 0x00, 0x56, 0x8A, 0x00, 0x54, 0x88, 0x00, 0x54, 0xF8, 0x00, 0x54, 0x88, 0x00, 0x54, 0x88, 0x00, 0x7C, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D76, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x20, 0x80, 0x54, 0x20, 0x80, 0x55, 0xE7, 0x80, 0x55, 0x04, 0x00, 0x55, 0x04, 0x00, 0x55, 0xE7, 0x80, 0x54, 0x61, 0x80, 0x55, 0xA6, 0x80, 0x57, 0x2C, 0x80, 0x7C, 0xE3, 0x80, 0x01, 0xA6, 0x80, 0x03, 0x2C, 0x80, 0x00, 0x61, 0x80, 0x01, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D79, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x7C, 0xC4, 0x00, 0x04, 0x8E, 0x00, 0x05, 0xFB, 0x00, 0x3C, 0x20, 0x00, 0x21, 0xFE, 0x00, 0x21, 0x22, 0x00, 0x3D, 0x22, 0x00, 0x05, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x39, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D7A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x54, 0x63, 0x00, 0x54, 0xA5, 0x00, 0x54, 0x10, 0x00, 0x54, 0x38, 0x00, 0x54, 0xEE, 0x00, 0x57, 0x83, 0x80, 0x54, 0x10, 0x00, 0x7C, 0xE4, 0x00, 0x00, 0x19, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D7E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x12, 0x22, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x0C, 0x6C, 0x00, 0x77, 0x83, 0x80, 0x00, 0x70, 0x00, 0x07, 0x84, 0x00, 0x00, 0x38, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D7F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x38, 0x42, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D81, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x15, 0xFF, 0x80, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x20, 0x00, 0x7D, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D82, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x54, 0x44, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D83, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x80, 0x10, 0x41, 0x80, 0x13, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x55, 0xF4, 0x00, 0x55, 0x57, 0x80, 0x55, 0x55, 0x00, 0x55, 0xF5, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0xF5, 0x00, 0x7C, 0x45, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x49, 0x00, 0x00, 0x51, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D84, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xC3, 0x00, 0x04, 0x1E, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xF2, 0x00, 0x04, 0x22, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D87, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9E, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xAD, 0x00, 0x2A, 0xAD, 0x00, 0x3E, 0xBF, 0x00, 0x22, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D88, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x3F, 0x00, 0x22, 0xE9, 0x00, 0x3E, 0x2E, 0x00, 0x02, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0x24, 0x00, 0x32, 0x04, 0x00, 0x62, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D8A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x48, 0x00, 0x3E, 0xFF, 0x00, 0x09, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7E, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x7E, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x18, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D8B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x84, 0x80, 0x20, 0x12, 0x80, 0x00, 0x48, 0x80, 0x01, 0x21, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D8C, { 0x00, 0x00, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x24, 0x90, 0x80, 0x62, 0x49, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D90, { 0x00, 0x00, 0x00, 0x41, 0x02, 0x00, 0x41, 0x02, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7C, 0xFC, 0x00, 0x45, 0x8C, 0x00, 0x4B, 0x58, 0x00, 0x50, 0x30, 0x00, 0x50, 0xEC, 0x00, 0x4B, 0xBB, 0x00, 0x48, 0x90, 0x00, 0x49, 0xFF, 0x00, 0x5B, 0x10, 0x00, 0x40, 0xFE, 0x00, 0x40, 0x10, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D92, { 0x00, 0x00, 0x00, 0x10, 0x78, 0x00, 0x10, 0x0C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x55, 0x00, 0x55, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D93, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x10, 0x78, 0x00, 0x10, 0x91, 0x00, 0x10, 0x52, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x54, 0x00, 0x54, 0xD6, 0x00, 0x55, 0x93, 0x00, 0x55, 0x11, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D94, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x1B, 0x3F, 0x00, 0x30, 0x21, 0x00, 0x3F, 0x6B, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x35, 0x1C, 0x00, 0x14, 0x14, 0x00, 0x07, 0xB6, 0x00, 0x3C, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D95, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x48, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x55, 0x88, 0x00, 0x56, 0xFE, 0x00, 0x54, 0x88, 0x00, 0x54, 0x88, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x88, 0x00, 0x54, 0x88, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x01, 0xAB, 0x00, 0x03, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D99, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x92, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x54, 0x54, 0x00, 0x54, 0xD6, 0x00, 0x57, 0x93, 0x80, 0x54, 0x90, 0x00, 0x54, 0xE2, 0x00, 0x55, 0xAF, 0x80, 0x57, 0x2A, 0x00, 0x7C, 0xEA, 0x00, 0x00, 0x5F, 0x80, 0x00, 0xC2, 0x00, 0x01, 0x82, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D9B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x55, 0x45, 0x00, 0x54, 0x82, 0x00, 0x55, 0xFF, 0x00, 0x56, 0x82, 0x80, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5D9D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFA, 0x00, 0x08, 0x14, 0x80, 0x08, 0xA5, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x81, 0x80, 0x2B, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5D9F, { 0x00, 0x00, 0x00, 0x10, 0x5E, 0x00, 0x10, 0x81, 0x00, 0x11, 0x7E, 0x80, 0x10, 0x28, 0x00, 0x54, 0xFF, 0x00, 0x54, 0xA9, 0x00, 0x54, 0xCF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x02, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x22, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DA0, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x78, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x24, 0x00, 0x2A, 0x7E, 0x00, 0x2B, 0xA5, 0x80, 0x2A, 0x3C, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xBD, 0x00, 0x3E, 0xA5, 0x00, 0x22, 0xBD, 0x00, 0x00, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DA2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x44, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x74, 0x00, 0x2B, 0x9F, 0x80, 0x2A, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x00, 0x44, 0x00, 0x00, 0x84, 0x80, 0x03, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x42, 0x00, 0x54, 0x24, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DAA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x09, 0x12, 0x00, 0x05, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DAB, { 0x00, 0x00, 0x00, 0x11, 0x29, 0x00, 0x11, 0xAB, 0x00, 0x10, 0xAA, 0x00, 0x11, 0xFF, 0x80, 0x54, 0x42, 0x00, 0x54, 0x24, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x7C, 0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 0xD3, 0x00, 0x01, 0x91, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DAC, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x02, 0x00, 0x55, 0xE9, 0x00, 0x54, 0x88, 0x00, 0x57, 0xFF, 0x80, 0x7C, 0x89, 0x00, 0x00, 0xEA, 0x00, 0x03, 0x84, 0x80, 0x00, 0x8A, 0x80, 0x01, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DAE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x54, 0xC6, 0x00, 0x57, 0x83, 0x80, 0x54, 0x7C, 0x00, 0x54, 0x00, 0x00, 0x55, 0xEF, 0x00, 0x55, 0x29, 0x00, 0x55, 0x29, 0x00, 0x55, 0xEF, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0xC7, 0x00, 0x03, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DB0, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0xEF, 0x80, 0x10, 0xA4, 0x80, 0x11, 0x24, 0x80, 0x55, 0xFB, 0x00, 0x55, 0x52, 0x00, 0x55, 0x5A, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x52, 0x00, 0x55, 0x52, 0x00, 0x55, 0xFF, 0x80, 0x7D, 0x12, 0x00, 0x01, 0x12, 0x00, 0x03, 0x12, 0x00, 0x02, 0x12, 0x00, 0x02, 0x32, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DB2, { 0x00, 0x00, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x79, 0x10, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x38, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x43, 0xF0, 0x80, 0x40, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DB4, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x34, 0x00, 0x0F, 0xD4, 0x00, 0x0A, 0xA4, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0xC4, 0x00, 0x0A, 0xA4, 0x00, 0x0C, 0x94, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DB7, { 0x00, 0x00, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x3C, 0x02, 0x00, 0x21, 0x14, 0x00, 0x3F, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x3F, 0x08, 0x80, 0x24, 0x28, 0x00, 0x7F, 0xAF, 0x00, 0x04, 0x28, 0x00, 0x0E, 0x38, 0x00, 0x1B, 0x6E, 0x00, 0x70, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DB8, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x09, 0x54, 0x80, 0x09, 0x75, 0x00, 0x08, 0x4A, 0x00, 0x2A, 0xA9, 0x00, 0x2B, 0x10, 0x80, 0x2B, 0xFF, 0x80, 0x2B, 0x10, 0x80, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x30, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0x11, 0x00, 0x06, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DB9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x01, 0x00, 0x54, 0x7D, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x52, 0x00, 0x01, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DBA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x0A, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x20, 0xBF, 0x00, 0x1F, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x17, 0x3F, 0x00, 0x10, 0x12, 0x00, 0x10, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DBC, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0xCE, 0x00, 0x08, 0xA2, 0x00, 0x2A, 0xBA, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DBD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x21, 0xE3, 0x80, 0x13, 0xF6, 0x00, 0x08, 0x02, 0x00, 0x15, 0xEF, 0x80, 0x24, 0x02, 0x00, 0x0D, 0xE2, 0x00, 0x14, 0x02, 0x00, 0x25, 0xE5, 0x00, 0x05, 0x25, 0x00, 0x05, 0xE9, 0x00, 0x19, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DC3, { 0x00, 0x00, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x11, 0x20, 0x00, 0x0A, 0x3F, 0x00, 0x7F, 0xC1, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x20, 0x80, 0x13, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DC5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x7F, 0xAA, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x13, 0x00, 0x31, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DC7, { 0x00, 0x00, 0x00, 0x10, 0x85, 0x00, 0x10, 0xF5, 0x80, 0x10, 0x84, 0x80, 0x17, 0xF4, 0x00, 0x54, 0x95, 0x80, 0x57, 0xEE, 0x00, 0x54, 0x94, 0x00, 0x54, 0x74, 0x80, 0x54, 0x04, 0x80, 0x55, 0xF7, 0x00, 0x54, 0x03, 0x00, 0x7D, 0xF6, 0x00, 0x05, 0x16, 0x00, 0x05, 0xFA, 0x80, 0x08, 0xA3, 0x80, 0x01, 0xF1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DC9, { 0x00, 0x00, 0x00, 0x10, 0xFC, 0x00, 0x13, 0x08, 0x00, 0x11, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x54, 0xEF, 0x00, 0x54, 0x88, 0x80, 0x55, 0xE7, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x4A, 0x00, 0x00, 0xC8, 0x80, 0x03, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DCB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x01, 0x00, 0x3F, 0x7F, 0x80, 0x20, 0x01, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x2F, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x2F, 0x4B, 0x00, 0x78, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DCC, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x2F, 0x88, 0x00, 0x22, 0x1F, 0x80, 0x3F, 0xD2, 0x00, 0x28, 0xB2, 0x00, 0x2F, 0x8A, 0x00, 0x28, 0x8E, 0x00, 0x2F, 0x84, 0x00, 0x68, 0x8E, 0x00, 0x4F, 0x9B, 0x00, 0x18, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DCD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xFF, 0x00, 0x0E, 0x49, 0x00, 0x15, 0x7F, 0x80, 0x24, 0x95, 0x00, 0x3F, 0xD6, 0x80, 0x11, 0x27, 0x00, 0x3A, 0x24, 0x80, 0x06, 0x47, 0x80, 0x39, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DCE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0x3B, 0x80, 0x55, 0xEA, 0x80, 0x55, 0x3B, 0x80, 0x55, 0x2A, 0x00, 0x55, 0x7A, 0x80, 0x57, 0xAB, 0x80, 0x54, 0x44, 0x00, 0x55, 0xA3, 0x00, 0x7C, 0x7E, 0x00, 0x01, 0xCC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DD0, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x41, 0x02, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x04, 0x00, 0x00, 0x74, 0x00, 0x7F, 0x24, 0x00, 0x41, 0xFF, 0x00, 0x5D, 0x24, 0x00, 0x55, 0x24, 0x00, 0x5D, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DD2, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x08, 0x05, 0x00, 0x35, 0xF9, 0x00, 0x14, 0x06, 0x00, 0x1A, 0xE5, 0x00, 0x3F, 0x0F, 0x80, 0x08, 0xE2, 0x00, 0x2A, 0x0A, 0x80, 0x2A, 0xEA, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DD3, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x26, 0x00, 0x00, 0x3C, 0x7F, 0x80, 0x21, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x52, 0x21, 0x00, 0x5E, 0x3F, 0x00, 0x52, 0x21, 0x00, 0x5E, 0x3F, 0x00, 0x52, 0x21, 0x00, 0x5E, 0x21, 0x00, 0x40, 0x3F, 0x00, 0x7F, 0x12, 0x00, 0x22, 0x33, 0x00, 0x41, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DD6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0x1E, 0x00, 0x09, 0x12, 0x00, 0x0F, 0x1E, 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0x88, 0x00, 0x12, 0x0F, 0x80, 0x1F, 0xD1, 0x00, 0x14, 0xB2, 0x00, 0x17, 0xCA, 0x00, 0x14, 0x84, 0x00, 0x27, 0x8C, 0x00, 0x2C, 0x92, 0x00, 0x20, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DD8, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0xE3, 0x00, 0x10, 0x82, 0x80, 0x17, 0xF2, 0x00, 0x54, 0x8F, 0x80, 0x57, 0xE2, 0x00, 0x54, 0x92, 0x00, 0x57, 0xF2, 0x00, 0x55, 0x22, 0x00, 0x57, 0xF7, 0x00, 0x55, 0x55, 0x00, 0x7E, 0x75, 0x00, 0x04, 0x15, 0x00, 0x05, 0xD5, 0x00, 0x0C, 0x95, 0x00, 0x04, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DD9, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x55, 0x3B, 0x80, 0x55, 0xEA, 0x80, 0x55, 0x3B, 0x80, 0x55, 0x6A, 0x00, 0x57, 0xBB, 0x80, 0x54, 0x44, 0x00, 0x55, 0x83, 0x00, 0x7C, 0x3E, 0x00, 0x03, 0xE4, 0x00, 0x00, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DDB, { 0x00, 0x00, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x63, 0x00, 0x08, 0xC6, 0x00, 0x18, 0x84, 0x00, 0x11, 0x8C, 0x00, 0x33, 0x18, 0x00, 0x22, 0x10, 0x00, 0x33, 0x18, 0x00, 0x11, 0x8C, 0x00, 0x18, 0x84, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x42, 0x00, 0x0C, 0x63, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DDD, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DDE, { 0x00, 0x00, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x15, 0x29, 0x00, 0x14, 0xA5, 0x00, 0x14, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x24, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x10, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x0C, 0xCC, 0x00, 0x08, 0x88, 0x00, 0x19, 0x98, 0x00, 0x0C, 0xCC, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x92, 0x00, 0x01, 0x24, 0x00, 0x22, 0x48, 0x00, 0x12, 0x44, 0x00, 0x01, 0x24, 0x00, 0x00, 0x92, 0x00, 0x38, 0x92, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE2, { 0x00, 0x00, 0x00, 0x02, 0x22, 0x00, 0x04, 0x44, 0x00, 0x08, 0x88, 0x00, 0x04, 0x44, 0x00, 0x02, 0x22, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DE3, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x19, 0x86, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE4, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x0C, 0xCC, 0x00, 0x19, 0x98, 0x00, 0x0C, 0xCC, 0x00, 0x04, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x13, 0x32, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x32, 0x00, 0x1F, 0xFE, 0x00, 0x14, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x14, 0xA6, 0x00, 0x12, 0x92, 0x80, 0x1C, 0xE3, 0x80, 0x73, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x01, 0x00, 0x0F, 0x01, 0x00, 0x38, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x7E, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0xF4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x38, 0x84, 0x00, 0x60, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x80, 0x01, 0x04, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DEE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DEF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x7D, 0xFF, 0x00, 0x04, 0x40, 0x00, 0x08, 0x40, 0x00, 0x16, 0x84, 0x00, 0x61, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x3E, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x0E, 0xA9, 0x00, 0x79, 0x29, 0x00, 0x22, 0x27, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5DF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF5, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x00, 0x00, 0x34, 0x00, 0x00, 0x24, 0x00, 0x80, 0x66, 0x01, 0x80, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF7, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0B, 0xFA, 0x00, 0x32, 0x09, 0x80, 0x03, 0xF8, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7E, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x57, 0x42, 0x00, 0x51, 0x42, 0x00, 0x51, 0x42, 0x00, 0x51, 0x7E, 0x00, 0x57, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DF9, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x20, 0x00, 0x1E, 0xC6, 0x00, 0x02, 0x98, 0x00, 0x02, 0x90, 0x00, 0x0C, 0x88, 0x00, 0x70, 0x87, 0x80, 0x01, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x18, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DFB, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x16, 0x00, 0x70, 0x13, 0x80, 0x07, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x06, 0x06, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DFD, { 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5DFE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x47, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E01, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x94, 0x00, 0x10, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E02, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E03, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x24, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E05, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x24, 0x12, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x04, 0x92, 0x00, 0x08, 0x9A, 0x00, 0x08, 0x94, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E06, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2E, 0x84, 0x00, 0x08, 0x84, 0x80, 0x09, 0x04, 0x80, 0x09, 0x07, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E07, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E08, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x12, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x08, 0x9A, 0x00, 0x08, 0x94, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E0B, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x30, 0x80, 0x1F, 0x1D, 0x80, 0x70, 0x87, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E0C, { 0x00, 0x00, 0x00, 0x0E, 0x06, 0x00, 0x01, 0xD8, 0x00, 0x00, 0x70, 0x00, 0x03, 0x8C, 0x00, 0x3C, 0x82, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x14, 0x42, 0x00, 0x24, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x46, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E0D, { 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x1A, 0x21, 0x00, 0x12, 0x21, 0x00, 0x32, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E0F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2E, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x08, 0x15, 0x00, 0x08, 0x12, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E10, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x3F, 0x44, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x42, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x48, 0x00, 0x2E, 0x48, 0x00, 0x08, 0x44, 0x00, 0x08, 0x47, 0x00, 0x08, 0x62, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E11, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x11, 0x0A, 0x00, 0x3E, 0x04, 0x00, 0x05, 0x0A, 0x00, 0x09, 0x31, 0x80, 0x30, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E12, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x4C, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x7F, 0x00, 0x1B, 0xE0, 0x00, 0x28, 0x30, 0x00, 0x08, 0x19, 0x00, 0x08, 0x8F, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x86, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E14, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0x88, 0x80, 0x52, 0x89, 0x00, 0x52, 0x88, 0x00, 0x52, 0xFF, 0x00, 0x52, 0xA1, 0x00, 0x52, 0xA3, 0x00, 0x56, 0xB2, 0x00, 0x10, 0x96, 0x00, 0x11, 0x8C, 0x00, 0x11, 0x1E, 0x00, 0x13, 0x33, 0x00, 0x10, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E15, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x49, 0x40, 0x80, 0x49, 0x40, 0x80, 0x49, 0x40, 0x80, 0x49, 0x40, 0x80, 0x49, 0x7F, 0x80, 0x49, 0x40, 0x80, 0x4B, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E16, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x0F, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E18, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0F, 0x80, 0x70, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E19, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2E, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E1B, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E1C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x3F, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x00, 0x00, 0x2E, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x83, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E1D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E1F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x12, 0x12, 0x00, 0x32, 0x13, 0x00, 0x66, 0x11, 0x80, 0x0C, 0x10, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E20, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E25, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x49, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E26, { 0x00, 0x00, 0x00, 0x04, 0x90, 0x00, 0x04, 0x94, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x82, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E27, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x08, 0x1F, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2E, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E28, { 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x04, 0x00, 0x10, 0x66, 0x00, 0x7E, 0xC3, 0x00, 0x53, 0x81, 0x80, 0x52, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x52, 0x81, 0x00, 0x52, 0x81, 0x00, 0x52, 0xFF, 0x00, 0x56, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x64, 0x80, 0x10, 0x44, 0x80, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E2B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x49, 0x00, 0x20, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x21, 0x49, 0x00, 0x21, 0x49, 0x00, 0x21, 0x49, 0x00, 0x3F, 0x4B, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E2D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E2E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x22, 0x00, 0x04, 0x21, 0x00, 0x7F, 0xA1, 0x00, 0x08, 0x27, 0x00, 0x10, 0x20, 0x00, 0x60, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E2F, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E30, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x02, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x02, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x13, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E31, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x3E, 0x20, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x20, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xFF, 0x00, 0x2E, 0x84, 0x00, 0x29, 0x44, 0x00, 0x0A, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x14, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E32, { 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x10, 0x33, 0x00, 0x10, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x52, 0xF7, 0x80, 0x52, 0x22, 0x00, 0x52, 0x22, 0x00, 0x52, 0x22, 0x00, 0x52, 0x32, 0x00, 0x52, 0xE7, 0x80, 0x56, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x62, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x11, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E33, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x40, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x48, 0x00, 0x2A, 0x49, 0x00, 0x2E, 0x4A, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7A, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E35, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x55, 0x01, 0x00, 0x54, 0x80, 0x00, 0x54, 0xEF, 0x00, 0x54, 0xA9, 0x00, 0x55, 0xA9, 0x00, 0x55, 0x29, 0x00, 0x54, 0xA9, 0x00, 0x10, 0x6B, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x80, 0x10, 0xC9, 0x80, 0x11, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E36, { 0x00, 0x00, 0x00, 0x09, 0x14, 0x00, 0x09, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x15, 0x00, 0x09, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4E, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E37, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x36, 0x00, 0x10, 0x24, 0x00, 0x7E, 0x7F, 0x80, 0x52, 0xC8, 0x00, 0x53, 0x48, 0x00, 0x52, 0x48, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x48, 0x00, 0x52, 0x48, 0x00, 0x56, 0x48, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E38, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E3B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x08, 0x90, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x43, 0x00, 0x09, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E3C, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x9A, 0x00, 0x2A, 0x96, 0x00, 0x2E, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E3D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E3E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x11, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x12, 0x00, 0x52, 0x16, 0x00, 0x52, 0x14, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x08, 0x00, 0x52, 0x14, 0x00, 0x52, 0x7F, 0x00, 0x56, 0xC1, 0x00, 0x11, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E3F, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x5E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0xFF, 0x80, 0x2B, 0x88, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x9F, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xC4, 0x00, 0x2A, 0xFF, 0x80, 0x2E, 0x84, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x91, 0x00, 0x08, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E40, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0F, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x4F, 0xFA, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x90, 0x00, 0x0F, 0xF8, 0x00, 0x14, 0x97, 0x00, 0x64, 0x92, 0x00, 0x04, 0xB0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E43, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0x7E, 0x00, 0x52, 0x42, 0x00, 0x52, 0x7E, 0x00, 0x52, 0x04, 0x00, 0x56, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E44, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x90, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xA7, 0x80, 0x2A, 0xF8, 0x80, 0x2A, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x08, 0xBF, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E45, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E47, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x82, 0x00, 0x04, 0x22, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x3C, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E49, { 0x00, 0x00, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x92, 0x00, 0x52, 0x92, 0x00, 0x52, 0x9E, 0x00, 0x52, 0x80, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x56, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x10, 0x93, 0x00, 0x11, 0x91, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E4B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x15, 0x23, 0x80, 0x7F, 0xC0, 0x00, 0x11, 0x3F, 0x00, 0x15, 0x13, 0x00, 0x35, 0x0C, 0x00, 0x63, 0x37, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E4C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x54, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x24, 0x00, 0x2E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E4E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x7D, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x7C, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x7C, 0x00, 0x5C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E50, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x34, 0x48, 0x00, 0x2C, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x86, 0x00, 0x25, 0xA3, 0x00, 0x37, 0x21, 0x80, 0x2D, 0xFE, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x65, 0x2E, 0x00, 0x4C, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E51, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x1A, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x32, 0xAF, 0x80, 0x63, 0xE9, 0x00, 0x08, 0x19, 0x00, 0x1B, 0xE5, 0x00, 0x10, 0x85, 0x00, 0x30, 0x85, 0x00, 0x73, 0xE7, 0x00, 0x12, 0xA2, 0x00, 0x12, 0xA2, 0x00, 0x12, 0xA7, 0x00, 0x12, 0xA5, 0x00, 0x10, 0x8D, 0x80, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E54, { 0x00, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x7C, 0x42, 0x00, 0x54, 0x7E, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x24, 0x80, 0x55, 0xFF, 0x80, 0x54, 0x00, 0x00, 0x5D, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x24, 0x00, 0x10, 0x18, 0x00, 0x10, 0x76, 0x00, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E55, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x45, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x4C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E56, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0xA4, 0x80, 0x52, 0xA4, 0x80, 0x52, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x00, 0x00, 0x56, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xCB, 0x00, 0x11, 0x89, 0x80, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E57, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x80, 0x7D, 0x0A, 0x80, 0x55, 0xFF, 0x80, 0x55, 0x04, 0x80, 0x55, 0x74, 0x80, 0x55, 0x55, 0x80, 0x55, 0x76, 0x80, 0x55, 0x04, 0x80, 0x5D, 0x75, 0x80, 0x11, 0x0B, 0x80, 0x11, 0x32, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E58, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x52, 0x08, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x56, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x22, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E5B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x42, 0x00, 0x52, 0x24, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x52, 0xFF, 0x00, 0x56, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E5C, { 0x00, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x56, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x52, 0x00, 0x10, 0xD3, 0x00, 0x11, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E5E, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x11, 0x24, 0x80, 0x10, 0xA5, 0x00, 0x7E, 0x24, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x42, 0x00, 0x52, 0x24, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x56, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x10, 0x66, 0x00, 0x10, 0xC3, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E5F, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x49, 0x00, 0x09, 0xF8, 0x00, 0x3E, 0xA8, 0x00, 0x2A, 0xA8, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0xE9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xEA, 0x00, 0x2E, 0xA4, 0x00, 0x08, 0xE4, 0x00, 0x08, 0xAA, 0x80, 0x08, 0x31, 0x80, 0x08, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E61, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x3F, 0xFF, 0x80, 0x2A, 0x1C, 0x00, 0x2A, 0x6A, 0x00, 0x2B, 0x89, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E62, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E63, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0x88, 0x00, 0x24, 0x5F, 0x80, 0x04, 0x11, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xD4, 0x00, 0x2E, 0x8C, 0x00, 0x35, 0x8A, 0x00, 0x24, 0x91, 0x80, 0x25, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E64, { 0x00, 0x00, 0x00, 0x2A, 0x20, 0x00, 0x6B, 0x20, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x44, 0x00, 0x41, 0xEC, 0x00, 0x5D, 0x38, 0x00, 0x55, 0x10, 0x00, 0x5D, 0x3C, 0x00, 0x43, 0x67, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x21, 0x1C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E68, { 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x48, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x92, 0x00, 0x52, 0xE3, 0x80, 0x52, 0x9E, 0x00, 0x52, 0x80, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x80, 0x00, 0x52, 0x9E, 0x00, 0x56, 0x80, 0x00, 0x10, 0x9E, 0x00, 0x10, 0x80, 0x00, 0x10, 0xBF, 0x00, 0x11, 0x21, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E6A, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0x80, 0x80, 0x52, 0x7F, 0x00, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x10, 0x00, 0x52, 0x68, 0x80, 0x56, 0x95, 0x00, 0x10, 0x6E, 0x00, 0x10, 0x95, 0x00, 0x10, 0x25, 0x00, 0x10, 0xC4, 0x80, 0x10, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E6B, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x7F, 0x80, 0x04, 0x02, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x1A, 0x00, 0x3F, 0x4A, 0x00, 0x04, 0x82, 0x00, 0x7F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E6C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x00, 0x80, 0x54, 0xFE, 0x80, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x01, 0x00, 0x13, 0xDF, 0x80, 0x12, 0x49, 0x00, 0x13, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E6D, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x29, 0x00, 0x55, 0x29, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x04, 0x80, 0x55, 0xFF, 0x80, 0x55, 0x04, 0x00, 0x11, 0x85, 0x00, 0x11, 0x45, 0x00, 0x13, 0x06, 0x80, 0x12, 0x0A, 0x80, 0x16, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E6E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x41, 0x00, 0x53, 0xF9, 0x00, 0x52, 0x41, 0x00, 0x52, 0xF7, 0x80, 0x52, 0x01, 0x00, 0x52, 0xF5, 0x00, 0x52, 0x95, 0x00, 0x56, 0xF5, 0x00, 0x12, 0x01, 0x00, 0x12, 0x91, 0x00, 0x12, 0xD1, 0x00, 0x14, 0x79, 0x00, 0x11, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E70, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x7E, 0xFE, 0x80, 0x54, 0x10, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x11, 0x80, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x29, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0x4B, 0x00, 0x11, 0x45, 0x80, 0x13, 0x3C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E74, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E76, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E77, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xC8, 0x00, 0x3C, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E78, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E79, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E7A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x06, 0x40, 0x00, 0x02, 0xC0, 0x00, 0x01, 0x84, 0x00, 0x03, 0x06, 0x00, 0x06, 0x02, 0x00, 0x0C, 0x3F, 0x00, 0x1F, 0xE1, 0x00, 0x70, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E7B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x12, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x09, 0x01, 0x00, 0x08, 0x81, 0x00, 0x13, 0xC2, 0x00, 0x3C, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E7C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x29, 0x09, 0x00, 0x11, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x06, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x13, 0xD1, 0x00, 0x3C, 0x51, 0x00, 0x00, 0x21, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E7D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x22, 0x48, 0x80, 0x22, 0x48, 0x80, 0x34, 0x50, 0x80, 0x29, 0x64, 0x80, 0x25, 0x54, 0x80, 0x22, 0x48, 0x80, 0x25, 0x52, 0x80, 0x2B, 0xEF, 0x80, 0x3C, 0xF1, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E7E, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x94, 0x00, 0x34, 0xA4, 0x00, 0x08, 0x99, 0x00, 0x0A, 0x93, 0x00, 0x17, 0xFC, 0x80, 0x39, 0x88, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x14, 0x18, 0x00, 0x12, 0x38, 0x80, 0x20, 0xC6, 0x80, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E7F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E80, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x06, 0x00, 0x11, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x00, 0x00, 0x21, 0x00, 0x80, 0x61, 0x81, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E81, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E83, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0x88, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x04, 0x00, 0x13, 0x06, 0x00, 0x32, 0x02, 0x00, 0x22, 0x3F, 0x00, 0x67, 0xE1, 0x00, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E84, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E86, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x22, 0x08, 0x00, 0x44, 0x07, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E87, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x39, 0x80, 0x11, 0xCE, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0xE8, 0x80, 0x27, 0x0F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E8A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x60, 0x00, 0x10, 0xB0, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x28, 0x00, 0x12, 0x24, 0x00, 0x24, 0x22, 0x00, 0x28, 0x21, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E8B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x86, 0x00, 0x10, 0xCC, 0x00, 0x30, 0x78, 0x00, 0x20, 0x30, 0x00, 0x60, 0xF8, 0x00, 0x07, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E8E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x70, 0x00, 0x10, 0xD8, 0x00, 0x11, 0x8C, 0x00, 0x13, 0x06, 0x00, 0x1E, 0x8B, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x30, 0x88, 0x00, 0x21, 0x88, 0x00, 0x61, 0x08, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E8F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x90, 0x00, 0x10, 0x60, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x21, 0x00, 0x10, 0x22, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E90, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x12, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E91, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x08, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x21, 0x20, 0x00, 0x21, 0x21, 0x00, 0x42, 0x21, 0x00, 0x0C, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E93, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x00, 0x00, 0x12, 0x40, 0x00, 0x14, 0x48, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E94, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x14, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x20, 0x10, 0x00, 0x20, 0x22, 0x00, 0x4F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E95, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x13, 0xD0, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xF4, 0x00, 0x1F, 0x04, 0x80, 0x20, 0x02, 0x80, 0x21, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E96, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x17, 0xF2, 0x00, 0x1C, 0x12, 0x00, 0x10, 0x12, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x0E, 0x00, 0x32, 0x00, 0x00, 0x22, 0x00, 0x80, 0x63, 0x01, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E97, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E99, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x17, 0xFC, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x47, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E9A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x23, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5E9C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x15, 0x02, 0x00, 0x19, 0x22, 0x00, 0x11, 0x12, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x21, 0x02, 0x00, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E9E, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x00, 0x00, 0x21, 0x20, 0x00, 0x21, 0x14, 0x00, 0x3F, 0xFE, 0x00, 0x21, 0x40, 0x00, 0x21, 0x40, 0x00, 0x22, 0x44, 0x00, 0x22, 0x48, 0x00, 0x22, 0x50, 0x00, 0x24, 0x61, 0x00, 0x25, 0xC1, 0x00, 0x48, 0x41, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5E9F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x12, 0x48, 0x00, 0x12, 0x44, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x12, 0x88, 0x00, 0x12, 0x50, 0x00, 0x14, 0x20, 0x00, 0x18, 0x58, 0x00, 0x21, 0x87, 0x00, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EA0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EA2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EA4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x31, 0x84, 0x00, 0x20, 0x84, 0x00, 0x60, 0x04, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EA5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x13, 0x7F, 0x80, 0x12, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x1A, 0x2A, 0x00, 0x12, 0x6B, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0xC9, 0x80, 0x62, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EA6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x70, 0x00, 0x21, 0x8C, 0x00, 0x2E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EA7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x12, 0xAA, 0x00, 0x14, 0xB2, 0x00, 0x18, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EA8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x24, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x70, 0x00, 0x11, 0xC0, 0x00, 0x1F, 0x7E, 0x00, 0x10, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EAA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x80, 0x17, 0x88, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x23, 0x00, 0x13, 0xA2, 0x00, 0x16, 0x36, 0x00, 0x32, 0x1C, 0x00, 0x22, 0x1C, 0x00, 0x62, 0x36, 0x00, 0x06, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EAB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EAC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x12, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x04, 0x00, 0x12, 0x88, 0x00, 0x12, 0xB2, 0x00, 0x12, 0x84, 0x00, 0x12, 0x89, 0x00, 0x12, 0xB2, 0x00, 0x32, 0x84, 0x00, 0x26, 0xB8, 0x80, 0x64, 0xC0, 0x80, 0x0C, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EAD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x17, 0xC7, 0x00, 0x10, 0xBC, 0x00, 0x11, 0x04, 0x00, 0x12, 0x04, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x84, 0x00, 0x14, 0x84, 0x00, 0x13, 0x3F, 0x00, 0x22, 0x80, 0x00, 0x24, 0x7F, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EB1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x11, 0x88, 0x00, 0x17, 0x4F, 0x80, 0x10, 0xFC, 0x00, 0x11, 0x84, 0x00, 0x37, 0x4C, 0x00, 0x20, 0x30, 0x00, 0x60, 0xDC, 0x00, 0x07, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EB3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x42, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x11, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EB5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xA8, 0x00, 0x13, 0x26, 0x00, 0x1C, 0x21, 0x80, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x20, 0x20, 0x80, 0x20, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EB6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x22, 0x44, 0x80, 0x24, 0x44, 0x80, 0x28, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EB7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFC, 0x00, 0x14, 0x62, 0x00, 0x12, 0x64, 0x00, 0x10, 0xD8, 0x00, 0x11, 0x48, 0x00, 0x12, 0x46, 0x00, 0x2C, 0x41, 0x80, 0x21, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EB8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x22, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EB9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x13, 0xF8, 0x00, 0x12, 0x08, 0x00, 0x13, 0xF8, 0x00, 0x12, 0x40, 0x00, 0x22, 0x20, 0x00, 0x24, 0x18, 0x00, 0x44, 0x07, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EBD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x34, 0x29, 0x00, 0x24, 0x7D, 0x00, 0x65, 0xC5, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EBE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x11, 0xA0, 0x00, 0x16, 0x2F, 0x00, 0x14, 0x21, 0x00, 0x17, 0xAF, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x20, 0x88, 0x00, 0x23, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EBF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x62, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EC1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x27, 0xC1, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x27, 0xC9, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x27, 0xC9, 0x00, 0x24, 0x49, 0x00, 0x64, 0x41, 0x00, 0x47, 0xC1, 0x00, 0x42, 0x81, 0x00, 0x0C, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EC2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x13, 0x9F, 0x00, 0x15, 0x51, 0x00, 0x15, 0x11, 0x00, 0x19, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x21, 0x11, 0x00, 0x21, 0x1F, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EC3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x17, 0xE2, 0x00, 0x10, 0x54, 0x80, 0x14, 0x89, 0x00, 0x13, 0x06, 0x00, 0x1D, 0xFD, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x30, 0x88, 0x00, 0x21, 0x88, 0x80, 0x63, 0x09, 0x80, 0x0E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EC6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x42, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x11, 0x2A, 0x00, 0x31, 0x2B, 0x00, 0x23, 0x2D, 0x00, 0x62, 0x30, 0x80, 0x06, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EC8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFC, 0x00, 0x12, 0x88, 0x00, 0x2C, 0x70, 0x00, 0x21, 0xD8, 0x00, 0x2E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EC9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xEE, 0x00, 0x17, 0xB8, 0x00, 0x10, 0x90, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x90, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x98, 0x00, 0x22, 0x94, 0x00, 0x24, 0x92, 0x00, 0x28, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ECA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x12, 0x00, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x92, 0x00, 0x17, 0x94, 0x00, 0x14, 0x92, 0x00, 0x17, 0x91, 0x00, 0x14, 0x11, 0x00, 0x14, 0x91, 0x00, 0x14, 0x51, 0x00, 0x17, 0xD6, 0x00, 0x2C, 0x50, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ECB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0xA0, 0x00, 0x13, 0x2E, 0x00, 0x12, 0x22, 0x00, 0x13, 0xAE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x30, 0x88, 0x00, 0x20, 0x70, 0x00, 0x61, 0xDC, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ECC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x30, 0x00, 0x80, 0x25, 0x24, 0x80, 0x6D, 0xB6, 0x80, 0x08, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ECE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x08, 0x00, 0x15, 0xBF, 0x00, 0x17, 0x21, 0x00, 0x14, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x14, 0x3F, 0x00, 0x14, 0xA1, 0x00, 0x34, 0xA1, 0x00, 0x23, 0xBF, 0x00, 0x60, 0x12, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ECF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x2F, 0x9E, 0x00, 0x28, 0x92, 0x00, 0x2F, 0x92, 0x00, 0x28, 0x93, 0x80, 0x28, 0xA0, 0x00, 0x2F, 0x80, 0x00, 0x20, 0x3F, 0x00, 0x29, 0x91, 0x00, 0x6F, 0x0A, 0x00, 0x48, 0x04, 0x00, 0x48, 0x8A, 0x00, 0x07, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ED0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x17, 0xBF, 0x00, 0x14, 0x94, 0x00, 0x17, 0x94, 0x00, 0x14, 0xA4, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x0C, 0x00, 0x14, 0x6C, 0x00, 0x15, 0x94, 0x00, 0x16, 0x14, 0x00, 0x24, 0x64, 0x80, 0x27, 0xC4, 0x80, 0x20, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ED1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x23, 0xFE, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ED2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x1F, 0xDF, 0x80, 0x11, 0x31, 0x00, 0x11, 0x21, 0x00, 0x1F, 0xF1, 0x00, 0x11, 0x13, 0x00, 0x11, 0x1A, 0x00, 0x1F, 0xEE, 0x00, 0x12, 0x04, 0x00, 0x33, 0xCE, 0x00, 0x26, 0x4A, 0x00, 0x64, 0x5B, 0x00, 0x0C, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ED3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x1F, 0xEF, 0x00, 0x10, 0x09, 0x00, 0x17, 0xC9, 0x00, 0x14, 0x4A, 0x00, 0x17, 0xC9, 0x00, 0x10, 0x08, 0x80, 0x17, 0xC8, 0x80, 0x10, 0x88, 0x80, 0x11, 0xF8, 0x80, 0x2F, 0x08, 0x80, 0x21, 0x0B, 0x00, 0x23, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ED4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x31, 0x08, 0x00, 0x23, 0x90, 0x00, 0x60, 0xF8, 0x00, 0x07, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5ED5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x2F, 0x1C, 0x00, 0x29, 0x36, 0x00, 0x29, 0x6B, 0x00, 0x2A, 0xC1, 0x80, 0x2A, 0x3E, 0x00, 0x29, 0x04, 0x00, 0x29, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x2B, 0x00, 0x00, 0x68, 0xFF, 0x80, 0x48, 0x12, 0x00, 0x48, 0x27, 0x00, 0x08, 0xFD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5ED6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x45, 0x00, 0x12, 0xCB, 0x00, 0x15, 0x55, 0x00, 0x12, 0xCB, 0x00, 0x10, 0x30, 0x00, 0x10, 0x48, 0x00, 0x11, 0xB6, 0x00, 0x16, 0xC9, 0x80, 0x13, 0x30, 0x00, 0x23, 0xC6, 0x00, 0x20, 0x38, 0x00, 0x27, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EDA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x02, 0x00, 0x17, 0xC2, 0x00, 0x11, 0x02, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x17, 0xD2, 0x00, 0x14, 0x4A, 0x00, 0x17, 0xC2, 0x00, 0x14, 0x82, 0x00, 0x22, 0xE2, 0x00, 0x2F, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EDB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x13, 0xFE, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x91, 0x00, 0x13, 0x2F, 0x00, 0x1C, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EDC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x01, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x24, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x64, 0x00, 0x29, 0xFE, 0x00, 0x6E, 0x82, 0x00, 0x58, 0xFE, 0x00, 0x50, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EDD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x24, 0x83, 0x00, 0x2F, 0xDE, 0x00, 0x24, 0x90, 0x00, 0x27, 0x9F, 0x80, 0x24, 0x92, 0x00, 0x27, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x6F, 0xD2, 0x00, 0x44, 0x92, 0x00, 0x4C, 0xD2, 0x00, 0x18, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EDE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x27, 0x08, 0x00, 0x25, 0x88, 0x00, 0x2C, 0xCF, 0x80, 0x28, 0x78, 0x80, 0x3F, 0xD1, 0x80, 0x21, 0x35, 0x00, 0x2F, 0xC4, 0x00, 0x21, 0x04, 0x00, 0x2D, 0x44, 0x00, 0x65, 0x0E, 0x00, 0x41, 0xCA, 0x00, 0x47, 0x1B, 0x00, 0x1C, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EDF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x0F, 0x00, 0x1F, 0xE9, 0x00, 0x11, 0x0D, 0x00, 0x17, 0xCB, 0x00, 0x14, 0x49, 0x00, 0x17, 0xCD, 0x00, 0x14, 0x4B, 0x00, 0x17, 0xC9, 0x00, 0x11, 0x09, 0x00, 0x2F, 0xE9, 0x00, 0x21, 0x11, 0x00, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EE0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x14, 0x94, 0x00, 0x18, 0x8F, 0x80, 0x10, 0x89, 0x00, 0x17, 0xF9, 0x00, 0x14, 0x15, 0x00, 0x15, 0xD5, 0x00, 0x15, 0x56, 0x00, 0x15, 0x52, 0x00, 0x15, 0x55, 0x00, 0x25, 0xD5, 0x00, 0x24, 0x15, 0x00, 0x24, 0x38, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EE1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x24, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x34, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x2F, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x44, 0x92, 0x00, 0x4C, 0xDB, 0x00, 0x18, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EE2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x17, 0xD9, 0x00, 0x10, 0x4A, 0x00, 0x11, 0x86, 0x00, 0x1E, 0x01, 0x80, 0x17, 0x9C, 0x00, 0x10, 0x95, 0x00, 0x17, 0xA7, 0x00, 0x14, 0x40, 0x00, 0x17, 0xBF, 0x00, 0x10, 0x92, 0x00, 0x10, 0x8C, 0x00, 0x20, 0x96, 0x00, 0x23, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EE3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EE5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x70, 0x00, 0x10, 0x88, 0x00, 0x11, 0x74, 0x00, 0x12, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x1A, 0xAA, 0x80, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x31, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x61, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EE8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x27, 0xBF, 0x00, 0x28, 0x89, 0x00, 0x31, 0x09, 0x00, 0x2F, 0xD3, 0x00, 0x2A, 0x40, 0x00, 0x2F, 0xD4, 0x00, 0x2A, 0x5F, 0x00, 0x2F, 0xE4, 0x00, 0x68, 0x44, 0x00, 0x48, 0x7F, 0x80, 0x48, 0x44, 0x00, 0x11, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EE9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x22, 0x02, 0x00, 0x22, 0xFA, 0x00, 0x22, 0x8A, 0x00, 0x22, 0xFA, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x20, 0x03, 0x00, 0x27, 0xFE, 0x00, 0x60, 0x20, 0x00, 0x4F, 0xFF, 0x80, 0x41, 0x24, 0x00, 0x0E, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EEA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x15, 0x14, 0x00, 0x15, 0xF4, 0x00, 0x15, 0x14, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x13, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x2F, 0xFE, 0x00, 0x21, 0x50, 0x00, 0x46, 0x4C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EEB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x2F, 0xF7, 0x80, 0x29, 0x31, 0x80, 0x29, 0x52, 0x80, 0x29, 0x31, 0x80, 0x2F, 0x52, 0x80, 0x29, 0x08, 0x00, 0x29, 0x36, 0x00, 0x2F, 0xC5, 0x80, 0x29, 0x38, 0x00, 0x69, 0x03, 0x00, 0x49, 0x3C, 0x00, 0x59, 0x01, 0x80, 0x13, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EEC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x5F, 0x00, 0x17, 0xE0, 0x00, 0x14, 0x7F, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x29, 0x29, 0x00, 0x2B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EF0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3F, 0x88, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x2F, 0x7F, 0x00, 0x29, 0x55, 0x00, 0x29, 0x55, 0x00, 0x2F, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x69, 0x15, 0x00, 0x4F, 0x50, 0x80, 0x59, 0x52, 0x00, 0x01, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EF1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x32, 0x49, 0x00, 0x29, 0x2A, 0x00, 0x20, 0x1F, 0x80, 0x27, 0xB2, 0x00, 0x24, 0x92, 0x00, 0x27, 0x9F, 0x80, 0x20, 0x12, 0x00, 0x2F, 0xD2, 0x00, 0x2A, 0x5F, 0x80, 0x6F, 0xD2, 0x00, 0x48, 0x12, 0x00, 0x48, 0x52, 0x00, 0x07, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EF3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x1F, 0xE4, 0x00, 0x14, 0xBF, 0x80, 0x17, 0x88, 0x00, 0x14, 0xBF, 0x80, 0x17, 0xAA, 0x80, 0x15, 0xBF, 0x80, 0x1E, 0x80, 0x00, 0x1F, 0xBF, 0x80, 0x12, 0x88, 0x00, 0x1F, 0x95, 0x00, 0x12, 0xB2, 0x80, 0x2F, 0xDE, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x28, 0x00, 0x00, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EF6, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x1C, 0x00, 0x04, 0x68, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x48, 0x00, 0x1E, 0x4F, 0x00, 0x22, 0x48, 0x00, 0x02, 0x48, 0x00, 0x22, 0x48, 0x00, 0x24, 0x48, 0x00, 0x15, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x02, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x24, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EF8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x05, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x2D, 0x11, 0x00, 0x29, 0x11, 0x00, 0x39, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EFA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x05, 0xFE, 0x00, 0x08, 0x12, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x12, 0x00, 0x11, 0xFE, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x16, 0x10, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x10, 0xA5, 0x00, 0x3E, 0xA5, 0x00, 0x02, 0xA5, 0x00, 0x02, 0xBD, 0x00, 0x02, 0xA5, 0x00, 0x24, 0x81, 0x00, 0x14, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x0C, 0x81, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x04, 0x28, 0x00, 0x08, 0x28, 0x00, 0x10, 0xFF, 0x00, 0x3C, 0xA9, 0x00, 0x04, 0xA9, 0x00, 0x04, 0xA9, 0x00, 0x24, 0xAF, 0x00, 0x34, 0xC1, 0x00, 0x1C, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x00, 0x00, 0x33, 0x80, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5EFE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5EFF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F00, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F01, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0x81, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x03, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F03, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x1F, 0x96, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F06, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x1F, 0x86, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F07, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F08, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x12, 0x12, 0x00, 0x36, 0x13, 0x00, 0x6C, 0x71, 0x80, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F09, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F0A, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x24, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0x91, 0x00, 0x2E, 0xAA, 0x00, 0x35, 0xC4, 0x00, 0x24, 0x8A, 0x00, 0x25, 0x91, 0x80, 0x00, 0x60, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F0B, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F0C, { 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x23, 0x00, 0x00, 0x21, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x98, 0x00, 0x00, 0x08, 0x80, 0x00, 0x0D, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F0D, { 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x23, 0x00, 0x00, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x80, 0x7F, 0xCD, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F0E, { 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x23, 0x00, 0x00, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x80, 0x7F, 0xCD, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F0F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xE0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0xE8, 0x00, 0x3C, 0x04, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F10, { 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x1F, 0x23, 0x00, 0x00, 0x21, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x98, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x01, 0xC4, 0x00, 0x1F, 0x06, 0x80, 0x70, 0x03, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F11, { 0x00, 0x00, 0x00, 0x11, 0x05, 0x00, 0x0A, 0x04, 0x80, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x7F, 0x80, 0x20, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x7C, 0x00, 0x3F, 0x94, 0x00, 0x0C, 0x14, 0x00, 0x0E, 0x14, 0x00, 0x15, 0x14, 0x00, 0x14, 0x12, 0x00, 0x24, 0x1E, 0x80, 0x04, 0x61, 0x80, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x80, 0x00, 0x40, 0x80, 0x00, 0x41, 0x00, 0x00, 0x46, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F15, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x1F, 0x81, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x20, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F17, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x21, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x11, 0x00, 0x30, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F18, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x3F, 0x20, 0x00, 0x21, 0x20, 0x00, 0x01, 0x22, 0x00, 0x01, 0x41, 0x00, 0x01, 0x41, 0x00, 0x01, 0x4F, 0x80, 0x03, 0xF8, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F1B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x02, 0x48, 0x00, 0x02, 0x4B, 0x00, 0x1E, 0x4D, 0x00, 0x10, 0x59, 0x00, 0x20, 0xE9, 0x00, 0x3F, 0x49, 0x00, 0x21, 0x49, 0x00, 0x01, 0x49, 0x00, 0x01, 0x4B, 0x00, 0x01, 0x48, 0x00, 0x01, 0x48, 0x80, 0x01, 0x40, 0x80, 0x02, 0x7F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x3F, 0x3F, 0x80, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x3F, 0x3F, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x03, 0x01, 0x80, 0x02, 0x01, 0x00, 0x06, 0x03, 0x00, 0x1C, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x05, 0x11, 0x00, 0x05, 0x11, 0x00, 0x05, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x21, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x80, 0x0D, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F1F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xC0, 0x80, 0x11, 0x40, 0x80, 0x02, 0x40, 0x80, 0x04, 0x41, 0x00, 0x08, 0x46, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F20, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x7E, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x88, 0x00, 0x04, 0x90, 0x00, 0x3C, 0xA0, 0x00, 0x20, 0x82, 0x00, 0x23, 0xFF, 0x00, 0x20, 0xA0, 0x00, 0x3C, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x88, 0x00, 0x04, 0xA7, 0x00, 0x28, 0xC2, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x3C, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F22, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7D, 0x11, 0x00, 0x05, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x21, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0xC6, 0x00, 0x3C, 0x6C, 0x00, 0x04, 0x38, 0x00, 0x04, 0x10, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x3B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F23, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x04, 0xC2, 0x00, 0x04, 0x82, 0x00, 0x05, 0xBF, 0x80, 0x3D, 0x82, 0x00, 0x22, 0x82, 0x00, 0x24, 0x92, 0x00, 0x20, 0x9A, 0x00, 0x3C, 0x8A, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x38, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F24, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7C, 0x0E, 0x00, 0x04, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x20, 0xFF, 0x80, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3C, 0x8C, 0x00, 0x04, 0x84, 0x00, 0x04, 0xE4, 0x00, 0x07, 0x86, 0x00, 0x0C, 0x02, 0x80, 0x0B, 0xFB, 0x80, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F25, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x3D, 0x88, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0xC9, 0x80, 0x04, 0x88, 0x80, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F26, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x20, 0x20, 0x00, 0x20, 0xC4, 0x00, 0x3E, 0x48, 0x00, 0x02, 0x30, 0x00, 0x02, 0x10, 0x00, 0x02, 0x22, 0x00, 0x02, 0x41, 0x00, 0x02, 0x8F, 0x80, 0x03, 0xF0, 0x80, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F27, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x1C, 0x00, 0x04, 0xE4, 0x00, 0x04, 0xA4, 0x00, 0x04, 0xA4, 0x00, 0x3C, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x3C, 0xA4, 0x00, 0x04, 0xA4, 0x00, 0x04, 0xA2, 0x00, 0x04, 0xA2, 0x00, 0x04, 0xAA, 0x00, 0x05, 0x3D, 0x00, 0x05, 0xC5, 0x00, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x61, 0x00, 0x3C, 0x43, 0x00, 0x20, 0xC2, 0x00, 0x21, 0x8E, 0x00, 0x20, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x04, 0x81, 0x00, 0x04, 0x81, 0x00, 0x0C, 0x81, 0x00, 0x08, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F29, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xA1, 0x00, 0x11, 0x12, 0x00, 0x12, 0x0C, 0x00, 0x2C, 0x0C, 0x00, 0x0A, 0x12, 0x00, 0x11, 0x61, 0x80, 0x2F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F2A, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0xFE, 0x00, 0x02, 0x04, 0x00, 0x02, 0x18, 0x00, 0x02, 0x2C, 0x00, 0x3E, 0x43, 0x00, 0x21, 0x81, 0x00, 0x20, 0x04, 0x00, 0x20, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x12, 0x00, 0x15, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x01, 0x44, 0x00, 0x01, 0x44, 0x00, 0x01, 0x44, 0x00, 0x3F, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x01, 0x44, 0x00, 0x01, 0x44, 0x00, 0x03, 0x44, 0x00, 0x02, 0x44, 0x00, 0x06, 0x7F, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x01, 0x44, 0x00, 0x01, 0x44, 0x00, 0x01, 0x44, 0x00, 0x3F, 0x57, 0x00, 0x20, 0x51, 0x00, 0x20, 0x51, 0x00, 0x20, 0x51, 0x00, 0x3F, 0x57, 0x00, 0x01, 0x44, 0x00, 0x01, 0x44, 0x00, 0x03, 0x44, 0x00, 0x02, 0x44, 0x00, 0x06, 0x7F, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x20, 0x42, 0x00, 0x20, 0x42, 0x00, 0x20, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x05, 0xC2, 0x00, 0x0C, 0x02, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F2E, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0B, 0xF4, 0x00, 0x10, 0x12, 0x00, 0x67, 0xF1, 0x80, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F2F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x12, 0x12, 0x00, 0x32, 0x13, 0x00, 0x64, 0x11, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F30, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x05, 0x93, 0x00, 0x05, 0x11, 0x00, 0x04, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x3D, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0xFF, 0x00, 0x05, 0x01, 0x00, 0x0D, 0x01, 0x00, 0x09, 0x01, 0x00, 0x39, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x10, 0x00, 0x20, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x22, 0xA4, 0x80, 0x04, 0x88, 0x80, 0x09, 0x91, 0x80, 0x32, 0xE2, 0x80, 0x04, 0x84, 0x80, 0x08, 0x98, 0x80, 0x31, 0x60, 0x80, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F34, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x3C, 0x06, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x02, 0x7E, 0x00, 0x02, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x90, 0x00, 0x02, 0x91, 0x00, 0x02, 0x8A, 0x00, 0x02, 0x8C, 0x00, 0x02, 0x84, 0x00, 0x04, 0xF2, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F36, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x0D, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F37, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x42, 0x00, 0x04, 0xC2, 0x00, 0x04, 0x9F, 0x00, 0x05, 0xF1, 0x80, 0x3C, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x21, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x11, 0x00, 0x0C, 0x11, 0x00, 0x08, 0x7F, 0x80, 0x3B, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEF, 0x00, 0x05, 0x29, 0x00, 0x05, 0x29, 0x00, 0x05, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x21, 0x29, 0x00, 0x21, 0x29, 0x00, 0x21, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x05, 0x29, 0x00, 0x05, 0x29, 0x00, 0x05, 0x29, 0x00, 0x0D, 0x29, 0x00, 0x09, 0x69, 0x00, 0x3A, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F39, { 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x3E, 0x88, 0x00, 0x04, 0x50, 0x00, 0x05, 0xFC, 0x00, 0x05, 0x24, 0x00, 0x3D, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x21, 0x24, 0x00, 0x21, 0x24, 0x00, 0x3D, 0xFC, 0x00, 0x04, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x28, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F3A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x02, 0x22, 0x00, 0x02, 0x5F, 0x00, 0x02, 0xE8, 0x80, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x02, 0x0A, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x70, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xF7, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x7B, 0xF7, 0x80, 0x42, 0x54, 0x00, 0x42, 0x54, 0x00, 0x7A, 0xF7, 0x80, 0x0A, 0xB0, 0x80, 0x0B, 0xB0, 0x80, 0x0B, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x1A, 0x11, 0x80, 0x12, 0x11, 0x00, 0x73, 0xF7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xF7, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x80, 0x80, 0x3D, 0xF7, 0x80, 0x21, 0x14, 0x00, 0x21, 0x14, 0x00, 0x21, 0x17, 0x80, 0x3D, 0xF0, 0x80, 0x05, 0x10, 0x80, 0x05, 0x10, 0x80, 0x05, 0x10, 0x80, 0x05, 0x10, 0x80, 0x05, 0xF0, 0x80, 0x19, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F3D, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x78, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x78, 0x9E, 0x00, 0x40, 0x80, 0x00, 0x40, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x19, 0x93, 0x00, 0x13, 0x11, 0x80, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F3E, { 0x00, 0x00, 0x00, 0x01, 0x21, 0x00, 0x7D, 0xB3, 0x00, 0x04, 0x92, 0x00, 0x05, 0xFF, 0x00, 0x05, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x21, 0x11, 0x00, 0x3D, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F3F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x13, 0x80, 0x07, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F40, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x9E, 0x00, 0x08, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xA3, 0x80, 0x40, 0x80, 0x00, 0x5E, 0xBF, 0x00, 0x00, 0x11, 0x00, 0x1E, 0x13, 0x00, 0x02, 0x12, 0x00, 0x3E, 0x16, 0x00, 0x20, 0x0C, 0x00, 0x3F, 0x1E, 0x00, 0x01, 0x33, 0x00, 0x1E, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x04, 0x02, 0x00, 0x04, 0xF2, 0x00, 0x04, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x20, 0xF2, 0x00, 0x20, 0x06, 0x00, 0x20, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x04, 0x02, 0x00, 0x04, 0xF2, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x0C, 0xF2, 0x00, 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x05, 0x00, 0x00, 0x05, 0x3E, 0x00, 0x05, 0x22, 0x00, 0x3D, 0x22, 0x00, 0x21, 0x3E, 0x00, 0x21, 0x00, 0x00, 0x21, 0x77, 0x00, 0x3D, 0x55, 0x00, 0x05, 0x55, 0x00, 0x05, 0x55, 0x00, 0x05, 0x77, 0x00, 0x0D, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F45, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7C, 0x44, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x05, 0xE1, 0x00, 0x3D, 0xA9, 0x00, 0x21, 0x69, 0x00, 0x21, 0xA9, 0x00, 0x21, 0x69, 0x00, 0x3D, 0x21, 0x00, 0x05, 0x67, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x11, 0x00, 0x08, 0x73, 0x00, 0x39, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F47, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x09, 0x00, 0x02, 0xFF, 0x80, 0x02, 0x09, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x08, 0x00, 0x20, 0xAA, 0x80, 0x20, 0xEB, 0x80, 0x3E, 0x88, 0x80, 0x02, 0xFF, 0x80, 0x02, 0x88, 0x80, 0x02, 0xEB, 0x80, 0x06, 0xAA, 0x80, 0x04, 0xAA, 0x80, 0x1D, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x05, 0x29, 0x00, 0x05, 0xEF, 0x00, 0x04, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F4A, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x05, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x05, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x92, 0x00, 0x05, 0x11, 0x00, 0x3E, 0x10, 0x80, 0x25, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x21, 0xBB, 0x00, 0x3D, 0x55, 0x00, 0x25, 0xBB, 0x00, 0x05, 0x11, 0x00, 0x05, 0xBB, 0x00, 0x05, 0x55, 0x00, 0x05, 0xBB, 0x00, 0x05, 0x11, 0x00, 0x19, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F4D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7D, 0xFF, 0x80, 0x05, 0x22, 0x00, 0x05, 0x7F, 0x00, 0x05, 0x22, 0x00, 0x3D, 0x3E, 0x00, 0x21, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x3D, 0x7F, 0x00, 0x05, 0x49, 0x00, 0x05, 0x7F, 0x00, 0x05, 0x49, 0x00, 0x0D, 0x7F, 0x00, 0x0A, 0x22, 0x00, 0x38, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F4E, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x33, 0xF9, 0x00, 0x14, 0x06, 0x00, 0x1A, 0xE5, 0x00, 0x3F, 0x0F, 0x80, 0x08, 0xE2, 0x00, 0x2A, 0x0A, 0x80, 0x2A, 0xEA, 0x80, 0x00, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F51, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F52, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F53, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x18, 0x86, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F54, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x18, 0x82, 0x00, 0x0C, 0x86, 0x00, 0x04, 0xCC, 0x00, 0x00, 0xE0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F55, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x08, 0x88, 0x00, 0x04, 0xD0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8F, 0x00, 0x32, 0x82, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F56, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x0D, 0x52, 0x00, 0x32, 0x74, 0x00, 0x04, 0xA8, 0x00, 0x09, 0x28, 0x00, 0x32, 0x24, 0x00, 0x0C, 0x22, 0x00, 0x31, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F57, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xBF, 0x80, 0x3C, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F58, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x23, 0xE8, 0x00, 0x3A, 0x8F, 0x00, 0x20, 0x88, 0x00, 0x23, 0xE8, 0x00, 0x20, 0x88, 0x00, 0x21, 0xC8, 0x80, 0x25, 0x4D, 0x80, 0x7B, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F59, { 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x07, 0x5C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F5B, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x24, 0x87, 0x00, 0x15, 0x11, 0x00, 0x3F, 0xE0, 0x80, 0x0E, 0x1F, 0x00, 0x15, 0x09, 0x00, 0x24, 0x91, 0x00, 0x00, 0x62, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F5C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x12, 0x00, 0x2A, 0x21, 0x00, 0x7F, 0x5E, 0x80, 0x1C, 0x0A, 0x00, 0x2A, 0x12, 0x00, 0x49, 0x66, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F5D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x2A, 0x32, 0x00, 0x7F, 0x0C, 0x80, 0x1C, 0xFF, 0x80, 0x2A, 0x2A, 0x00, 0x49, 0x49, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F60, { 0x00, 0x00, 0x00, 0x3E, 0x12, 0x00, 0x02, 0xFF, 0x80, 0x3E, 0x12, 0x00, 0x02, 0x24, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0xC4, 0x00, 0x77, 0x7F, 0x00, 0x25, 0x44, 0x00, 0x25, 0x7F, 0x00, 0x77, 0x44, 0x00, 0x02, 0x7F, 0x80, 0x7F, 0x00, 0x00, 0x32, 0xFF, 0x00, 0x1A, 0x22, 0x00, 0x02, 0x1C, 0x00, 0x0E, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F61, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xF1, 0x00, 0x04, 0x82, 0x00, 0x04, 0x84, 0x00, 0x04, 0x89, 0x00, 0x04, 0x91, 0x00, 0x3F, 0xF2, 0x00, 0x04, 0x84, 0x00, 0x04, 0x88, 0x80, 0x04, 0x90, 0x80, 0x04, 0x81, 0x00, 0x08, 0x82, 0x00, 0x08, 0x84, 0x00, 0x10, 0x88, 0x00, 0x20, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F63, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x04, 0x0C, 0x00, 0x7F, 0xD8, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x33, 0x06, 0x00, 0x1A, 0x0C, 0x00, 0x0E, 0x18, 0x80, 0x04, 0x01, 0x80, 0x0E, 0x03, 0x00, 0x0A, 0x06, 0x00, 0x1B, 0x1C, 0x00, 0x31, 0x80, 0x00, 0x60, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F64, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x83, 0x00, 0x10, 0x86, 0x00, 0x10, 0x8C, 0x00, 0x14, 0x98, 0x00, 0x16, 0x81, 0x00, 0x12, 0x83, 0x00, 0x10, 0xE6, 0x00, 0x1F, 0x8C, 0x00, 0x70, 0x98, 0x00, 0x10, 0x80, 0x80, 0x10, 0x81, 0x80, 0x10, 0x83, 0x00, 0x10, 0x86, 0x00, 0x30, 0x8C, 0x00, 0x63, 0xB8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F66, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x08, 0xC8, 0x00, 0x0B, 0x11, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC4, 0x00, 0x13, 0x18, 0x00, 0x10, 0x60, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F67, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x1F, 0xA5, 0x00, 0x10, 0xA9, 0x00, 0x10, 0x9A, 0x00, 0x1F, 0x94, 0x80, 0x10, 0xA9, 0x00, 0x00, 0x5A, 0x00, 0x07, 0xAC, 0x00, 0x38, 0x0C, 0x80, 0x00, 0x32, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F69, { 0x00, 0x00, 0x00, 0x03, 0xC1, 0x00, 0x1C, 0x01, 0x00, 0x02, 0x42, 0x00, 0x12, 0x44, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x11, 0x00, 0x02, 0x01, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xE4, 0x00, 0x06, 0x08, 0x80, 0x07, 0x10, 0x80, 0x0A, 0x81, 0x00, 0x0A, 0x42, 0x00, 0x12, 0x04, 0x00, 0x22, 0x08, 0x00, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F6A, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xE1, 0x00, 0x01, 0x02, 0x00, 0x1F, 0xFA, 0x00, 0x11, 0x14, 0x00, 0x11, 0xF0, 0x80, 0x1F, 0x09, 0x00, 0x11, 0xFA, 0x00, 0x10, 0x04, 0x00, 0x12, 0x48, 0x80, 0x12, 0x41, 0x00, 0x12, 0x42, 0x00, 0x12, 0x44, 0x80, 0x24, 0x40, 0x80, 0x24, 0x7F, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE1, 0x00, 0x22, 0x22, 0x00, 0x22, 0x24, 0x00, 0x2F, 0xA8, 0x00, 0x22, 0x30, 0x80, 0x22, 0x21, 0x00, 0x3F, 0xE2, 0x00, 0x20, 0x24, 0x00, 0x2F, 0xA8, 0x00, 0x28, 0xB0, 0x80, 0x28, 0xA1, 0x00, 0x2F, 0xA2, 0x00, 0x28, 0xA4, 0x00, 0x20, 0x28, 0x00, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F6C, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xE8, 0x00, 0x08, 0x91, 0x00, 0x1C, 0xC2, 0x00, 0x1B, 0xA2, 0x00, 0x3A, 0x84, 0x00, 0x2A, 0x88, 0x80, 0x28, 0x91, 0x00, 0x08, 0x81, 0x00, 0x08, 0x82, 0x00, 0x08, 0x84, 0x00, 0x08, 0x88, 0x00, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F6D, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xE8, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xC1, 0x00, 0x10, 0x42, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC8, 0x80, 0x00, 0x30, 0x80, 0x10, 0x81, 0x00, 0x09, 0x02, 0x00, 0x03, 0xC4, 0x00, 0x3C, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F6F, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xE6, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0xCC, 0x00, 0x2A, 0x59, 0x00, 0x2A, 0x43, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x06, 0x00, 0x3F, 0xCC, 0x00, 0x00, 0x18, 0x80, 0x7F, 0xE1, 0x80, 0x04, 0x01, 0x00, 0x14, 0x83, 0x00, 0x34, 0xC6, 0x00, 0x64, 0x6C, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F70, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x88, 0x80, 0x05, 0x10, 0x80, 0x3F, 0xE1, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x40, 0x80, 0x1F, 0xC1, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xE4, 0x00, 0x02, 0x08, 0x00, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F71, { 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xD0, 0x00, 0x02, 0x01, 0x00, 0x3F, 0xE1, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE4, 0x00, 0x20, 0x28, 0x00, 0x20, 0x20, 0x80, 0x3F, 0xE1, 0x00, 0x02, 0x01, 0x00, 0x0A, 0x82, 0x00, 0x12, 0x44, 0x00, 0x26, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F72, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3D, 0xE2, 0x00, 0x00, 0x06, 0x00, 0x3D, 0xEC, 0x00, 0x2D, 0x68, 0x00, 0x02, 0x01, 0x00, 0x3F, 0xE3, 0x00, 0x25, 0x02, 0x00, 0x3F, 0xE6, 0x00, 0x25, 0x2C, 0x00, 0x3F, 0xE0, 0x80, 0x29, 0x01, 0x80, 0x2D, 0xE1, 0x00, 0x69, 0x03, 0x00, 0x4D, 0x26, 0x00, 0x18, 0xEC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F73, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC4, 0x00, 0x03, 0x8C, 0x00, 0x0E, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0E, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F74, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x18, 0xFF, 0x80, 0x30, 0x80, 0x80, 0x65, 0x80, 0x80, 0x0C, 0x00, 0x80, 0x08, 0x60, 0x80, 0x18, 0x30, 0x80, 0x38, 0x18, 0x80, 0x68, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x80, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F75, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x17, 0x00, 0x31, 0x1D, 0x00, 0x65, 0x71, 0x00, 0x0D, 0xD1, 0x00, 0x0B, 0x11, 0x00, 0x19, 0x11, 0x00, 0x39, 0x13, 0x00, 0x69, 0x10, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x80, 0x09, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F77, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x18, 0x21, 0x00, 0x28, 0x21, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F78, { 0x00, 0x00, 0x00, 0x04, 0x3C, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x46, 0x00, 0x18, 0x42, 0x00, 0x30, 0xC3, 0x00, 0x64, 0x81, 0x00, 0x0D, 0xA1, 0x80, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x38, 0x20, 0x00, 0x68, 0x62, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x79, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F79, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x24, 0x44, 0x00, 0x04, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x00, 0x00, 0x18, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F7A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x64, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x38, 0x10, 0x00, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F7B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x02, 0x00, 0x09, 0x7F, 0x00, 0x11, 0x12, 0x00, 0x21, 0x12, 0x00, 0x49, 0x52, 0x00, 0x09, 0xF2, 0x00, 0x17, 0x12, 0x00, 0x31, 0x12, 0x00, 0x51, 0x32, 0x00, 0x11, 0x52, 0x00, 0x11, 0x92, 0x00, 0x10, 0x22, 0x00, 0x10, 0x42, 0x00, 0x10, 0x94, 0x00, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F7C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x89, 0x00, 0x04, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x18, 0xA1, 0x00, 0x28, 0xA2, 0x00, 0x08, 0x94, 0x00, 0x08, 0x98, 0x00, 0x08, 0x88, 0x00, 0x08, 0x94, 0x00, 0x09, 0x24, 0x00, 0x09, 0x42, 0x00, 0x0A, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F7D, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x0C, 0x0E, 0x00, 0x09, 0xF8, 0x00, 0x19, 0x08, 0x00, 0x31, 0x08, 0x00, 0x65, 0x08, 0x00, 0x0D, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x19, 0x08, 0x00, 0x39, 0x0C, 0x00, 0x69, 0x04, 0x00, 0x09, 0xE4, 0x00, 0x0B, 0x06, 0x00, 0x08, 0x02, 0x80, 0x0B, 0xF3, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F7E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x31, 0x83, 0x00, 0x65, 0x7D, 0x80, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x38, 0x21, 0x00, 0x68, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x27, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F7F, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x08, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x49, 0x00, 0x04, 0x49, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x08, 0x88, 0x80, 0x08, 0x8B, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F80, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F81, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x48, 0x00, 0x18, 0x4F, 0x80, 0x28, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F82, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x30, 0x82, 0x00, 0x64, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x30, 0x82, 0x00, 0x70, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F83, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x90, 0x00, 0x10, 0x90, 0x00, 0x30, 0x90, 0x00, 0x61, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x1B, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x70, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F84, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x60, 0xC6, 0x00, 0x00, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x18, 0xEE, 0x00, 0x33, 0x83, 0x80, 0x70, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F85, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x24, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x28, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F87, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x80, 0x00, 0x25, 0xFF, 0x80, 0x05, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x1C, 0xFC, 0x80, 0x18, 0x84, 0x80, 0x28, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x08, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F88, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0D, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x31, 0x02, 0x00, 0x65, 0xFE, 0x00, 0x0D, 0x02, 0x00, 0x19, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x71, 0x10, 0x80, 0x11, 0x11, 0x80, 0x11, 0x1B, 0x00, 0x11, 0x08, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x06, 0x00, 0x11, 0xE3, 0x00, 0x17, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F89, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xC6, 0x00, 0x08, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x64, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x38, 0x10, 0x00, 0x68, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F8A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x11, 0x00, 0x80, 0x25, 0x3C, 0x80, 0x05, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x19, 0x24, 0x80, 0x29, 0x3C, 0x80, 0x09, 0x24, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F8B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x22, 0x12, 0x00, 0x05, 0xFF, 0x80, 0x0C, 0x12, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F8C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x10, 0x22, 0x00, 0x24, 0xC4, 0x00, 0x04, 0x48, 0x00, 0x08, 0x31, 0x00, 0x08, 0x2F, 0x00, 0x1B, 0xF0, 0x80, 0x28, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC2, 0x00, 0x0B, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F8D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x64, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x18, 0x10, 0x00, 0x38, 0x10, 0x00, 0x69, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F8F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x18, 0x90, 0x00, 0x30, 0x90, 0x00, 0x65, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x08, 0x51, 0x00, 0x18, 0xD1, 0x00, 0x39, 0x93, 0x00, 0x68, 0x12, 0x00, 0x08, 0x36, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F90, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x08, 0x44, 0x00, 0x10, 0x82, 0x00, 0x25, 0x01, 0x80, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x94, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x11, 0x00, 0x08, 0x10, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F91, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x10, 0x92, 0x00, 0x24, 0x92, 0x00, 0x05, 0x24, 0x00, 0x09, 0x24, 0x00, 0x18, 0x92, 0x00, 0x18, 0x92, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F92, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x10, 0x00, 0x09, 0x90, 0x00, 0x0A, 0x7F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F93, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x18, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x30, 0x44, 0x00, 0x63, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x90, 0x00, 0x30, 0x9F, 0x00, 0x70, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x11, 0xD0, 0x00, 0x11, 0x70, 0x00, 0x13, 0x1C, 0x00, 0x16, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F95, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x05, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x1B, 0xFF, 0x00, 0x28, 0x20, 0x00, 0x48, 0x70, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x27, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F96, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x00, 0x80, 0x31, 0x00, 0x80, 0x64, 0x7E, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x68, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x00, 0x09, 0x11, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F97, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F98, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x10, 0x48, 0x00, 0x23, 0xCF, 0x80, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x08, 0x48, 0x00, 0x1B, 0xCF, 0x00, 0x28, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xCF, 0x80, 0x08, 0x48, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F99, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x24, 0x90, 0x00, 0x04, 0x90, 0x00, 0x08, 0x90, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x28, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x90, 0x00, 0x0A, 0x7F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5F9C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x52, 0x00, 0x08, 0x52, 0x00, 0x18, 0xD3, 0x00, 0x30, 0x91, 0x00, 0x65, 0xFF, 0x80, 0x0D, 0x00, 0x80, 0x09, 0x00, 0x80, 0x19, 0x7E, 0x80, 0x39, 0x42, 0x80, 0x69, 0x42, 0x80, 0x09, 0x42, 0x80, 0x09, 0x7E, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F9D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x30, 0x7F, 0x00, 0x65, 0x41, 0x00, 0x0D, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x19, 0x41, 0x00, 0x39, 0x41, 0x00, 0x69, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5F9E, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x08, 0x42, 0x00, 0x10, 0xA5, 0x00, 0x25, 0x18, 0x80, 0x04, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x90, 0x00, 0x28, 0x9F, 0x80, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x50, 0x00, 0x09, 0x3F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FA0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x04, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x19, 0x55, 0x00, 0x2A, 0x38, 0x80, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FA1, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x87, 0x80, 0x11, 0xF4, 0x80, 0x22, 0x44, 0x80, 0x04, 0x44, 0x80, 0x04, 0x44, 0x80, 0x0F, 0xFC, 0x80, 0x18, 0x44, 0x80, 0x29, 0x44, 0x80, 0x09, 0x7C, 0x80, 0x09, 0x44, 0x80, 0x09, 0x44, 0x80, 0x09, 0x7C, 0x80, 0x0F, 0xC5, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FA2, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x64, 0x11, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x68, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x09, 0xD0, 0x00, 0x0B, 0x70, 0x00, 0x0A, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FA4, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xBF, 0x00, 0x30, 0x89, 0x00, 0x21, 0x09, 0x00, 0x4A, 0x7F, 0x80, 0x0F, 0x89, 0x00, 0x18, 0x89, 0x00, 0x10, 0xBF, 0x00, 0x32, 0x88, 0x00, 0x72, 0xBF, 0x00, 0x13, 0x88, 0x00, 0x11, 0x7F, 0x80, 0x11, 0x08, 0x00, 0x13, 0x08, 0x00, 0x12, 0x80, 0x00, 0x16, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FA7, { 0x00, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x0D, 0xF8, 0x00, 0x09, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x65, 0x01, 0x00, 0x0D, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x3B, 0xA4, 0x80, 0x6A, 0xA4, 0x80, 0x0A, 0xFF, 0x80, 0x0A, 0xA4, 0x80, 0x0C, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FA8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x10, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FA9, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x18, 0x00, 0x08, 0x66, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FAA, { 0x00, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x09, 0xE0, 0x00, 0x11, 0x08, 0x00, 0x25, 0x08, 0x00, 0x05, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FAB, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0D, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x33, 0xFF, 0x80, 0x64, 0x00, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x38, 0x04, 0x00, 0x68, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FAC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x42, 0x00, 0x30, 0x24, 0x00, 0x65, 0xFF, 0x80, 0x0D, 0x00, 0x80, 0x09, 0x10, 0x80, 0x18, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x68, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x61, 0x00, 0x08, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FAD, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x3E, 0x00, 0x18, 0x62, 0x00, 0x30, 0xD6, 0x00, 0x65, 0xAC, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x60, 0x00, 0x33, 0x80, 0x00, 0x70, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FAE, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x09, 0x52, 0x00, 0x11, 0x52, 0x00, 0x25, 0x57, 0x80, 0x05, 0x55, 0x00, 0x09, 0xF9, 0x00, 0x08, 0x0D, 0x00, 0x1B, 0xF5, 0x00, 0x28, 0x15, 0x00, 0x09, 0xE5, 0x00, 0x09, 0x26, 0x00, 0x09, 0x22, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x35, 0x00, 0x0A, 0x69, 0x00, 0x08, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FAF, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x0C, 0x1E, 0x00, 0x09, 0xE2, 0x00, 0x18, 0xB3, 0x00, 0x31, 0x91, 0x00, 0x65, 0x20, 0x00, 0x0C, 0x64, 0x00, 0x08, 0xC8, 0x00, 0x18, 0x52, 0x00, 0x38, 0x3F, 0x00, 0x69, 0xE1, 0x80, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FB0, { 0x00, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x9E, 0x00, 0x30, 0x90, 0x00, 0x64, 0x90, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x39, 0xFF, 0x00, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x9E, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FB1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x49, 0x00, 0x65, 0x49, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x6B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FB3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x30, 0x20, 0x00, 0x63, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x33, 0xFF, 0x00, 0x70, 0x00, 0x00, 0x10, 0x60, 0x00, 0x10, 0xB3, 0x00, 0x12, 0x91, 0x80, 0x12, 0x82, 0x80, 0x16, 0xC6, 0x00, 0x14, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FB4, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x1A, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x32, 0xAF, 0x80, 0x63, 0xE9, 0x00, 0x08, 0x19, 0x00, 0x18, 0x05, 0x00, 0x13, 0xE5, 0x00, 0x30, 0x85, 0x00, 0x70, 0x87, 0x00, 0x13, 0xE2, 0x00, 0x10, 0x82, 0x00, 0x10, 0x87, 0x00, 0x10, 0xE5, 0x00, 0x13, 0x8D, 0x80, 0x10, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FB5, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x05, 0x52, 0x00, 0x09, 0x52, 0x00, 0x11, 0x54, 0x00, 0x25, 0xF7, 0x80, 0x05, 0x15, 0x00, 0x0B, 0xF9, 0x00, 0x08, 0x09, 0x00, 0x19, 0xF5, 0x00, 0x28, 0x45, 0x00, 0x09, 0xF6, 0x00, 0x08, 0x42, 0x00, 0x08, 0x72, 0x00, 0x0B, 0x85, 0x00, 0x08, 0x09, 0x00, 0x08, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FB7, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x06, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1B, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x81, 0x00, 0x0A, 0x82, 0x80, 0x0C, 0xFE, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FB8, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x42, 0x00, 0x30, 0x24, 0x00, 0x65, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x38, 0xFF, 0x00, 0x68, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FB9, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x13, 0xF4, 0x00, 0x14, 0x8F, 0x80, 0x25, 0x29, 0x00, 0x0B, 0xF1, 0x00, 0x08, 0x11, 0x00, 0x1B, 0xFA, 0x00, 0x2A, 0x2A, 0x00, 0x0B, 0xEA, 0x00, 0x0A, 0x2A, 0x00, 0x0B, 0xE4, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x29, 0x00, 0x0A, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FBC, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x19, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x32, 0x2F, 0x80, 0x63, 0xE9, 0x00, 0x0A, 0x39, 0x00, 0x1B, 0xE5, 0x00, 0x10, 0x85, 0x00, 0x37, 0xF5, 0x00, 0x71, 0x07, 0x00, 0x11, 0xE2, 0x00, 0x11, 0x22, 0x00, 0x11, 0x27, 0x00, 0x13, 0x25, 0x00, 0x12, 0x2D, 0x80, 0x16, 0xE8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FBD, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x09, 0x52, 0x00, 0x11, 0x52, 0x00, 0x25, 0x54, 0x00, 0x05, 0xF7, 0x80, 0x08, 0x85, 0x00, 0x08, 0xAD, 0x00, 0x1B, 0x35, 0x00, 0x29, 0x45, 0x00, 0x08, 0x95, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x42, 0x00, 0x09, 0x52, 0x00, 0x09, 0x55, 0x00, 0x0A, 0x55, 0x00, 0x08, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x14, 0x01, 0x00, 0x14, 0x00, 0x80, 0x14, 0x00, 0x80, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FC4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x02, 0x50, 0x00, 0x02, 0x58, 0x00, 0x02, 0x4C, 0x00, 0x06, 0x44, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FC5, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x42, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x21, 0x00, 0x12, 0x40, 0x80, 0x22, 0x80, 0x80, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, 0x06, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FC6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x28, 0x40, 0x00, 0x48, 0x80, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FC7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2C, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x6A, 0x10, 0x80, 0x48, 0x10, 0x80, 0x08, 0x10, 0x80, 0x08, 0x30, 0x80, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x08, 0x61, 0x80, 0x08, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x02, 0x60, 0x00, 0x12, 0x23, 0x00, 0x12, 0x01, 0x80, 0x32, 0x04, 0x80, 0x63, 0x0C, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FC9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x10, 0x80, 0x2C, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x6A, 0x10, 0x80, 0x48, 0x30, 0x80, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x08, 0x61, 0x80, 0x08, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x09, 0x87, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FCB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x28, 0x01, 0x00, 0x2C, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x41, 0x00, 0x14, 0x01, 0x00, 0x14, 0x02, 0x80, 0x24, 0x02, 0x80, 0x27, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x04, 0x41, 0x00, 0x08, 0x41, 0x00, 0x10, 0x81, 0x00, 0x01, 0x02, 0x00, 0x06, 0x1C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x41, 0x00, 0x04, 0x21, 0x00, 0x14, 0x04, 0x80, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FCF, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x2C, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x28, 0x22, 0x00, 0x4B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x86, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD2, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x06, 0x10, 0x00, 0x02, 0x18, 0x00, 0x08, 0xC8, 0x00, 0x28, 0x68, 0x00, 0x28, 0x2C, 0x00, 0x28, 0x84, 0x00, 0x6D, 0x86, 0x80, 0x47, 0x03, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD4, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x28, 0xFF, 0x80, 0x2C, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x6B, 0x7F, 0x00, 0x48, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x30, 0x00, 0x08, 0x60, 0x00, 0x08, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD6, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x04, 0x00, 0x28, 0x04, 0x00, 0x28, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x14, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0x00, 0x04, 0x40, 0x80, 0x14, 0x02, 0x80, 0x14, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x02, 0x20, 0x00, 0x12, 0x01, 0x00, 0x12, 0x04, 0x80, 0x22, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FD9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x28, 0x80, 0x00, 0x28, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FDC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x60, 0x00, 0x10, 0x30, 0x00, 0x10, 0x98, 0x00, 0x10, 0x88, 0x00, 0x12, 0x80, 0x00, 0x12, 0x82, 0x00, 0x12, 0x83, 0x00, 0x16, 0x81, 0x80, 0x34, 0x80, 0x80, 0x24, 0x82, 0x00, 0x60, 0xC6, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FDD, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x1D, 0x0E, 0x00, 0x71, 0x03, 0x80, 0x01, 0x00, 0x00, 0x09, 0x24, 0x00, 0x09, 0x36, 0x00, 0x19, 0x1B, 0x00, 0x31, 0x09, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FDE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x70, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FE0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x41, 0x00, 0x14, 0x05, 0x00, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FE1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x28, 0x08, 0x00, 0x2C, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x6A, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FE4, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x29, 0x90, 0x00, 0x2D, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x68, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FE7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x2C, 0x42, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0xA0, 0x00, 0x48, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x09, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x1F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FE8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0xFF, 0x80, 0x48, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0x44, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FE9, { 0x00, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x71, 0x93, 0x80, 0x03, 0x10, 0x00, 0x06, 0x78, 0x00, 0x1F, 0x8C, 0x00, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FEA, { 0x00, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x46, 0x00, 0x28, 0x42, 0x00, 0x2C, 0xC3, 0x00, 0x2A, 0x81, 0x00, 0x6B, 0xA1, 0x80, 0x48, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x62, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x79, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FEB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x28, 0x12, 0x00, 0x28, 0x12, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FEC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x03, 0x00, 0x28, 0x34, 0x00, 0x2C, 0x18, 0x00, 0x2A, 0x0C, 0x00, 0x6A, 0xFF, 0x80, 0x48, 0x08, 0x80, 0x08, 0x08, 0x80, 0x08, 0x08, 0x80, 0x08, 0x0B, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FED, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0x1C, 0x00, 0x08, 0x16, 0x00, 0x08, 0x13, 0x00, 0x08, 0x11, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FEE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x41, 0x00, 0x08, 0x63, 0x00, 0x08, 0x36, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FEF, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x28, 0x88, 0x00, 0x2C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0x88, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x08, 0x82, 0x80, 0x08, 0xF3, 0x80, 0x0B, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FF0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x28, 0x24, 0x00, 0x2C, 0x64, 0x00, 0x2A, 0x44, 0x80, 0x68, 0xC4, 0x80, 0x49, 0x83, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FF1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x10, 0x80, 0x2D, 0x10, 0x80, 0x6A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x68, 0x00, 0x08, 0x48, 0x80, 0x08, 0xC9, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FF2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x9B, 0x00, 0x09, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FF3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x13, 0x00, 0x08, 0x1E, 0x00, 0x28, 0xF0, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x92, 0x00, 0x6A, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x19, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FF5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x01, 0x10, 0x00, 0x04, 0xA1, 0x00, 0x14, 0x49, 0x00, 0x14, 0x08, 0x80, 0x27, 0xF8, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FF6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x64, 0x00, 0x08, 0x46, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4F, 0x00, 0x08, 0xF9, 0x80, 0x09, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FF8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x28, 0x22, 0x00, 0x2C, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FFA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x28, 0x7F, 0x80, 0x2C, 0x48, 0x80, 0x2A, 0xC9, 0x80, 0x6A, 0x09, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FFB, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x28, 0x80, 0x00, 0x2C, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x84, 0x00, 0x48, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FFC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0x7C, 0x00, 0x48, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x80, 0x09, 0x84, 0x80, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x5FFD, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x04, 0x49, 0x00, 0x08, 0x89, 0x00, 0x31, 0x11, 0x00, 0x06, 0x21, 0x00, 0x1C, 0x42, 0x00, 0x01, 0x9C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x21, 0x00, 0x12, 0x25, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FFE, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x2D, 0xFC, 0x00, 0x2A, 0x00, 0x00, 0x29, 0xF8, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x09, 0x00, 0x08, 0x05, 0x00, 0x08, 0x03, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x5FFF, { 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x30, 0x00, 0x30, 0x82, 0x00, 0x02, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6000, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x28, 0x20, 0x00, 0x48, 0x68, 0x00, 0x08, 0xA6, 0x00, 0x09, 0x23, 0x00, 0x0A, 0x21, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6001, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x05, 0x18, 0x00, 0x18, 0x87, 0x00, 0x60, 0x02, 0x00, 0x01, 0x00, 0x00, 0x14, 0x88, 0x00, 0x14, 0x84, 0x00, 0x14, 0x12, 0x00, 0x24, 0x12, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6002, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x11, 0x47, 0x00, 0x20, 0x82, 0x00, 0x40, 0x00, 0x00, 0x15, 0x08, 0x00, 0x14, 0xC4, 0x00, 0x14, 0x52, 0x00, 0x24, 0x12, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6003, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x2C, 0x20, 0x00, 0x2A, 0x22, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6004, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x09, 0x02, 0x00, 0x2D, 0x42, 0x00, 0x2B, 0x24, 0x00, 0x29, 0x24, 0x00, 0x49, 0x18, 0x00, 0x09, 0x08, 0x00, 0x09, 0x14, 0x00, 0x09, 0x24, 0x00, 0x09, 0x42, 0x00, 0x09, 0x82, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6005, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x88, 0x00, 0x08, 0x90, 0x00, 0x2C, 0xA0, 0x00, 0x2A, 0xC0, 0x00, 0x28, 0x82, 0x00, 0x4F, 0xFF, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA7, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6006, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x2C, 0x84, 0x00, 0x2B, 0x07, 0x00, 0x2A, 0x02, 0x00, 0x48, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6007, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x28, 0x80, 0x00, 0x2C, 0x80, 0x00, 0x2A, 0xFF, 0x00, 0x6A, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x600A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x10, 0x80, 0x28, 0x10, 0x80, 0x2C, 0x30, 0x80, 0x2A, 0x21, 0x80, 0x6A, 0x61, 0x00, 0x48, 0xC7, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x600D, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x28, 0xFF, 0x80, 0x2C, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x6B, 0x10, 0x00, 0x48, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x600E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x80, 0x00, 0x30, 0x80, 0x00, 0x60, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x02, 0x60, 0x00, 0x12, 0x33, 0x00, 0x12, 0x15, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x600F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6010, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x29, 0xFF, 0x00, 0x2D, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x68, 0xF9, 0x00, 0x48, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6012, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xA1, 0x00, 0x11, 0x12, 0x00, 0x12, 0x0C, 0x00, 0x2C, 0x0C, 0x00, 0x0A, 0x12, 0x00, 0x11, 0x61, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x14, 0x41, 0x00, 0x14, 0x04, 0x80, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6013, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x9F, 0x80, 0x10, 0x88, 0x80, 0x50, 0x88, 0x80, 0x5B, 0xE8, 0x80, 0x55, 0x28, 0x80, 0x55, 0x2D, 0x80, 0x55, 0x25, 0x00, 0x51, 0x25, 0x00, 0x13, 0x67, 0x00, 0x12, 0x42, 0x00, 0x17, 0xE7, 0x00, 0x10, 0xA5, 0x00, 0x10, 0x85, 0x00, 0x11, 0x8D, 0x80, 0x13, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6014, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6015, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6016, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x28, 0x00, 0x2A, 0x48, 0x00, 0x28, 0x88, 0x00, 0x29, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x4B, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6017, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2C, 0x1F, 0x80, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6018, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE3, 0x00, 0x12, 0x31, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6019, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x601A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x28, 0x82, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x6A, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x601B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x28, 0x82, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x6A, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x601C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x0C, 0x81, 0x00, 0x2A, 0x00, 0x80, 0x2A, 0x7E, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x26, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x601D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x02, 0x22, 0x00, 0x0A, 0x01, 0x00, 0x12, 0x04, 0x80, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x601F, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x28, 0x88, 0x00, 0x2C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0xFF, 0x80, 0x48, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0xE4, 0x00, 0x0B, 0x86, 0x00, 0x08, 0x02, 0x80, 0x0B, 0xFB, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6020, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x02, 0x40, 0x00, 0x02, 0x21, 0x00, 0x12, 0x02, 0x80, 0x13, 0xFE, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6021, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x41, 0x00, 0x2A, 0x8F, 0x00, 0x29, 0xF0, 0x80, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6024, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x04, 0x00, 0x31, 0x84, 0x00, 0x50, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x02, 0x63, 0x00, 0x12, 0x21, 0x80, 0x12, 0x04, 0x80, 0x33, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6025, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x30, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x14, 0x21, 0x00, 0x14, 0x00, 0x80, 0x24, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6026, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x28, 0x54, 0x00, 0x2C, 0xD6, 0x00, 0x2A, 0x92, 0x00, 0x68, 0x92, 0x00, 0x48, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6027, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6028, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xBF, 0x00, 0x0F, 0xE1, 0x00, 0x08, 0xA1, 0x00, 0x19, 0x21, 0x00, 0x25, 0x27, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x31, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x41, 0x00, 0x04, 0x01, 0x00, 0x14, 0x04, 0x80, 0x17, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6029, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x29, 0x01, 0x00, 0x2D, 0xFF, 0x00, 0x2B, 0x00, 0x00, 0x69, 0x20, 0x00, 0x49, 0x20, 0x00, 0x09, 0x27, 0x00, 0x09, 0x3C, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0B, 0x20, 0x00, 0x0A, 0x20, 0x80, 0x0E, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x602A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x0A, 0x42, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x18, 0x00, 0x28, 0x18, 0x00, 0x28, 0x66, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x602B, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x49, 0x00, 0x50, 0x49, 0x00, 0x5B, 0xFF, 0x00, 0x56, 0x48, 0x00, 0x52, 0x48, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x10, 0x49, 0x80, 0x10, 0xC9, 0x00, 0x10, 0x8B, 0x00, 0x11, 0x88, 0x00, 0x13, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x602D, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x28, 0x22, 0x00, 0x2C, 0x22, 0x00, 0x2A, 0x26, 0x00, 0x6A, 0x24, 0x00, 0x48, 0xAC, 0x00, 0x08, 0xAF, 0x00, 0x08, 0xB9, 0x80, 0x09, 0xB0, 0x80, 0x09, 0x20, 0x00, 0x08, 0x60, 0x00, 0x08, 0xA0, 0x80, 0x0B, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x602F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x9F, 0x00, 0x0B, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6031, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x6D, 0x91, 0x00, 0x07, 0x31, 0x00, 0x0D, 0xA1, 0x00, 0x38, 0xE3, 0x00, 0x03, 0xB2, 0x00, 0x1E, 0x0E, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x63, 0x00, 0x12, 0x21, 0x80, 0x12, 0x04, 0x80, 0x33, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6033, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x28, 0x81, 0x00, 0x2C, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6035, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x13, 0x00, 0x08, 0x11, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x12, 0x00, 0x09, 0x13, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x603A, { 0x00, 0x00, 0x00, 0x08, 0x60, 0x00, 0x08, 0x38, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00, 0x2C, 0xF0, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x11, 0x00, 0x69, 0xDB, 0x00, 0x48, 0x5A, 0x00, 0x08, 0x5C, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x603B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x01, 0x00, 0x00, 0x28, 0xC2, 0x00, 0x28, 0x49, 0x00, 0x48, 0x09, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x603C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x0A, 0x00, 0x01, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x0A, 0x48, 0x00, 0x04, 0x28, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x28, 0x00, 0x20, 0x10, 0x00, 0x15, 0x04, 0x00, 0x14, 0xC2, 0x00, 0x24, 0x49, 0x00, 0x44, 0x09, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x603F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x2C, 0x20, 0x00, 0x2A, 0x50, 0x00, 0x28, 0xA8, 0x00, 0x49, 0x27, 0x00, 0x0A, 0xFA, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6040, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x62, 0x00, 0x28, 0xC6, 0x00, 0x2D, 0xAC, 0x00, 0x2A, 0x18, 0x00, 0x6A, 0x30, 0x00, 0x48, 0xE8, 0x00, 0x08, 0x0F, 0x80, 0x08, 0x18, 0x80, 0x08, 0x71, 0x80, 0x08, 0xC9, 0x00, 0x08, 0x0B, 0x00, 0x08, 0x06, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6041, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x04, 0x38, 0x00, 0x09, 0xD0, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x00, 0x80, 0x00, 0x12, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6042, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0A, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x2B, 0x00, 0x80, 0x28, 0x7C, 0x80, 0x28, 0x44, 0x80, 0x08, 0x7C, 0x80, 0x08, 0x44, 0x80, 0x08, 0x7C, 0x80, 0x08, 0x44, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6043, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6046, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x28, 0x80, 0x00, 0x2C, 0xFC, 0x00, 0x2A, 0x84, 0x00, 0x6A, 0xA4, 0x00, 0x48, 0x94, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x08, 0x84, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6047, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x28, 0xBF, 0x80, 0x2C, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x6A, 0x84, 0x00, 0x48, 0x84, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xBF, 0x80, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6048, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x62, 0x00, 0x08, 0x42, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x01, 0x00, 0x2A, 0x48, 0x00, 0x6A, 0x48, 0x00, 0x48, 0xFF, 0x00, 0x09, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6049, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x87, 0x00, 0x08, 0xFC, 0x00, 0x28, 0x80, 0x00, 0x2C, 0x80, 0x80, 0x2A, 0xC1, 0x80, 0x6A, 0x7F, 0x00, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x604A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x58, 0x62, 0x00, 0x54, 0xC6, 0x00, 0x51, 0x8C, 0x00, 0x50, 0x00, 0x00, 0x11, 0x04, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x13, 0x2C, 0x80, 0x12, 0x69, 0x80, 0x16, 0xDB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x604B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x19, 0x26, 0x00, 0x33, 0x23, 0x00, 0x62, 0x21, 0x80, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x604C, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0x24, 0x80, 0x29, 0xA5, 0x80, 0x2C, 0xA7, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x27, 0x00, 0x08, 0xE5, 0x80, 0x09, 0xA4, 0x80, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x604D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x80, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x64, 0x00, 0x08, 0x54, 0x80, 0x0F, 0x44, 0x80, 0x38, 0x87, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x42, 0x00, 0x14, 0x21, 0x00, 0x14, 0x04, 0x80, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6051, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x62, 0x00, 0x28, 0x84, 0x00, 0x2D, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x6A, 0x80, 0x00, 0x48, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA7, 0x00, 0x08, 0xA0, 0x00, 0x09, 0xA0, 0x80, 0x09, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6052, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6054, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x42, 0x00, 0x2A, 0xC3, 0x00, 0x6B, 0x81, 0x80, 0x48, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6055, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x11, 0x21, 0x00, 0x12, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x24, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x20, 0x40, 0x00, 0x02, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x04, 0x80, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6056, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x13, 0x12, 0x00, 0x11, 0xB2, 0x00, 0x10, 0xE2, 0x00, 0x11, 0xB2, 0x00, 0x17, 0x1A, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6057, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x2C, 0x42, 0x00, 0x2A, 0x81, 0x80, 0x6A, 0x7E, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6059, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02, 0x41, 0x00, 0x12, 0x02, 0x80, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x605A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x605D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x21, 0x00, 0x3E, 0x21, 0x00, 0x08, 0x42, 0x00, 0x09, 0x8C, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x82, 0x00, 0x14, 0x45, 0x00, 0x24, 0x04, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x605F, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x29, 0x81, 0x00, 0x2D, 0x01, 0x00, 0x2A, 0x51, 0x00, 0x69, 0x55, 0x00, 0x49, 0x25, 0x00, 0x09, 0x25, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x05, 0x00, 0x09, 0xFD, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6060, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x2C, 0x40, 0x00, 0x2A, 0x44, 0x00, 0x68, 0xC4, 0x00, 0x48, 0x84, 0x00, 0x09, 0x9F, 0x00, 0x0B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xBF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6061, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x66, 0x00, 0x08, 0x18, 0x00, 0x28, 0x3C, 0x00, 0x2C, 0xE6, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0x40, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0xDA, 0x00, 0x08, 0x92, 0x00, 0x09, 0x92, 0x00, 0x0B, 0x3F, 0x00, 0x08, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6062, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x40, 0x00, 0x0A, 0x48, 0x00, 0x28, 0x48, 0x80, 0x28, 0x59, 0x00, 0x28, 0x6A, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x09, 0x22, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6063, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x91, 0x00, 0x01, 0x12, 0x00, 0x00, 0x28, 0x00, 0x07, 0x44, 0x00, 0x38, 0x82, 0x00, 0x01, 0x01, 0x80, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x00, 0x80, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6064, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x90, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0xA0, 0x00, 0x1E, 0xA1, 0x00, 0x13, 0x20, 0x80, 0x12, 0x20, 0x80, 0x17, 0x22, 0x80, 0x3A, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x3E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6068, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x90, 0x00, 0x08, 0x91, 0x00, 0x08, 0x92, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x88, 0x00, 0x08, 0xF4, 0x00, 0x0B, 0x82, 0x00, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6069, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x0A, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x00, 0x80, 0x00, 0x04, 0x41, 0x00, 0x14, 0x05, 0x00, 0x14, 0x04, 0x80, 0x17, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x606A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x42, 0x00, 0x0A, 0xA4, 0x00, 0x2B, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x28, 0x00, 0x28, 0x46, 0x00, 0x09, 0x81, 0x80, 0x0E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x606B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x29, 0x01, 0x00, 0x2D, 0x7D, 0x00, 0x2B, 0x01, 0x00, 0x69, 0x01, 0x00, 0x49, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x09, 0x45, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x606C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x09, 0xF0, 0x00, 0x0C, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x606D, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x04, 0x52, 0x00, 0x08, 0x49, 0x00, 0x10, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x606F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x25, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6070, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x0A, 0x42, 0x00, 0x0B, 0x81, 0x80, 0x2A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6071, { 0x00, 0x00, 0x00, 0x08, 0x5C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x29, 0xA3, 0x80, 0x2C, 0x20, 0x00, 0x2A, 0x64, 0x00, 0x6A, 0x44, 0x00, 0x48, 0x5E, 0x00, 0x08, 0xF3, 0x00, 0x08, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x68, 0x80, 0x08, 0xCD, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6073, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x11, 0x04, 0x00, 0x10, 0xC8, 0x00, 0x12, 0x30, 0x00, 0x1C, 0x0E, 0x00, 0x01, 0x04, 0x00, 0x28, 0xC2, 0x00, 0x28, 0x49, 0x00, 0x48, 0x09, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6075, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6076, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x0A, 0x2C, 0x00, 0x0A, 0x30, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x14, 0xC4, 0x00, 0x14, 0x52, 0x00, 0x24, 0x12, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6077, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x30, 0xA8, 0x00, 0x50, 0xAC, 0x00, 0x11, 0xA6, 0x00, 0x13, 0x23, 0x00, 0x16, 0x21, 0x80, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6078, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x88, 0x00, 0x17, 0xC8, 0x00, 0x18, 0x0A, 0x00, 0x54, 0x3F, 0x00, 0x50, 0x0A, 0x00, 0x5F, 0xEA, 0x00, 0x51, 0x0A, 0x00, 0x11, 0x0A, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x92, 0x00, 0x14, 0x52, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x22, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6079, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x12, 0x28, 0x00, 0x5A, 0x24, 0x00, 0x56, 0x20, 0x00, 0x53, 0xFF, 0x00, 0x52, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x50, 0x00, 0x12, 0x50, 0x00, 0x14, 0x50, 0x00, 0x14, 0x88, 0x00, 0x18, 0x87, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x607A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x2D, 0xFC, 0x00, 0x2A, 0x00, 0x00, 0x29, 0xFC, 0x00, 0x48, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x00, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x607B, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x09, 0xF9, 0x00, 0x09, 0x11, 0x00, 0x09, 0x15, 0x00, 0x2D, 0x55, 0x00, 0x2B, 0x55, 0x00, 0x29, 0x55, 0x00, 0x29, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x08, 0x41, 0x00, 0x08, 0xA1, 0x00, 0x08, 0x91, 0x00, 0x09, 0x15, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x607C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x2C, 0x00, 0x00, 0x29, 0x0A, 0x00, 0x29, 0x8A, 0x00, 0x49, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0x22, 0x00, 0x09, 0x52, 0x00, 0x09, 0x8E, 0x00, 0x09, 0x06, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x607D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x14, 0x42, 0x00, 0x5B, 0xFC, 0x00, 0x54, 0x80, 0x00, 0x50, 0xA0, 0x00, 0x51, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x607E, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x44, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x607F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x30, 0x00, 0x02, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x20, 0x86, 0x00, 0x00, 0x61, 0x00, 0x12, 0x21, 0x80, 0x12, 0x04, 0x80, 0x33, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6081, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x28, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6082, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8B, 0x00, 0x28, 0xEE, 0x00, 0x2C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0x88, 0x80, 0x48, 0xE7, 0x80, 0x09, 0x80, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6083, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x29, 0x11, 0x00, 0x2D, 0x11, 0x00, 0x2B, 0x7D, 0x00, 0x69, 0x11, 0x00, 0x49, 0x39, 0x00, 0x09, 0x39, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6084, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x28, 0x91, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x6A, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6085, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x02, 0x00, 0x0C, 0x81, 0x00, 0x0B, 0x00, 0x80, 0x2A, 0xFF, 0x00, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x80, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6086, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x04, 0x08, 0x00, 0x1B, 0xF6, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x04, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x19, 0x86, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE3, 0x00, 0x12, 0x31, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6088, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x08, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x08, 0x00, 0x2A, 0xA8, 0x00, 0x6A, 0xA9, 0x00, 0x48, 0xA9, 0x00, 0x09, 0xFB, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAE, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xAE, 0x80, 0x09, 0x1A, 0x80, 0x08, 0x33, 0x80, 0x08, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6089, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x04, 0x42, 0x00, 0x02, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x31, 0x41, 0x80, 0x00, 0x80, 0x00, 0x02, 0x42, 0x00, 0x02, 0x01, 0x00, 0x0A, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x608A, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x7C, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x84, 0x00, 0x18, 0x04, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x608B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x2C, 0xC6, 0x00, 0x2A, 0x6C, 0x00, 0x68, 0x38, 0x00, 0x48, 0xEE, 0x00, 0x0B, 0x83, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x608C, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x28, 0x00, 0x0A, 0xFF, 0x00, 0x2A, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x08, 0x30, 0x80, 0x08, 0x50, 0x80, 0x08, 0x91, 0x00, 0x09, 0x16, 0x00, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x608D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x608E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x28, 0xFF, 0x00, 0x2D, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6091, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x6A, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6092, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x28, 0x82, 0x00, 0x2C, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x69, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x80, 0x09, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6093, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x28, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6094, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x80, 0x00, 0x0B, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x51, 0x00, 0x28, 0x49, 0x00, 0x08, 0x41, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6095, { 0x00, 0x00, 0x00, 0x08, 0x62, 0x00, 0x08, 0x36, 0x00, 0x08, 0x1C, 0x00, 0x28, 0x76, 0x00, 0x2D, 0xC3, 0x00, 0x2A, 0x20, 0x00, 0x6A, 0xFF, 0x80, 0x48, 0x40, 0x00, 0x08, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x93, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6096, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x2B, 0x00, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6097, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x2D, 0x8C, 0x00, 0x2B, 0x08, 0x00, 0x29, 0xFF, 0x00, 0x69, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0x31, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x68, 0x00, 0x08, 0x48, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x88, 0x80, 0x09, 0x89, 0x80, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6098, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x40, 0x00, 0x14, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x609A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x609B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x5F, 0x00, 0x0A, 0xE4, 0x80, 0x2A, 0x24, 0x00, 0x28, 0x44, 0x80, 0x28, 0x97, 0x80, 0x2B, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x42, 0x00, 0x08, 0xA4, 0x00, 0x0B, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x609D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x28, 0x91, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x6A, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x609E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0xA2, 0x00, 0x28, 0xA2, 0x00, 0x2C, 0xA2, 0x00, 0x2A, 0xBE, 0x00, 0x6A, 0x80, 0x00, 0x48, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x609F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x29, 0xFE, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60A0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x09, 0x20, 0x00, 0x09, 0x3F, 0x80, 0x19, 0x42, 0x00, 0x19, 0xA4, 0x00, 0x29, 0x14, 0x00, 0x09, 0x08, 0x00, 0x09, 0x16, 0x00, 0x09, 0x21, 0x80, 0x08, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x11, 0x00, 0x12, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60A2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x6A, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x90, 0x80, 0x08, 0x99, 0x80, 0x08, 0x8B, 0x00, 0x08, 0x8E, 0x00, 0x08, 0x84, 0x00, 0x08, 0xF6, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60A3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x01, 0x40, 0x00, 0x00, 0x81, 0x00, 0x12, 0x85, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60A4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x09, 0xF2, 0x00, 0x0B, 0x22, 0x00, 0x0C, 0xC2, 0x00, 0x09, 0xB2, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x81, 0x00, 0x14, 0x05, 0x00, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60A5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE3, 0x00, 0x12, 0x31, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60A6, { 0x00, 0x00, 0x00, 0x08, 0x81, 0x00, 0x08, 0xC3, 0x00, 0x08, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x68, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60A7, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x80, 0x09, 0xC4, 0x80, 0x08, 0x44, 0x80, 0x0C, 0x44, 0x80, 0x2B, 0xF4, 0x80, 0x2A, 0x44, 0x80, 0x28, 0xC4, 0x80, 0x28, 0xE4, 0x80, 0x09, 0x54, 0x80, 0x09, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x0C, 0x44, 0x80, 0x08, 0x44, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60A8, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x12, 0x21, 0x00, 0x30, 0x22, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x13, 0x26, 0x00, 0x12, 0x23, 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE3, 0x00, 0x12, 0x31, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60A9, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x12, 0x31, 0x80, 0x13, 0x11, 0x00, 0x11, 0x13, 0x00, 0x59, 0x02, 0x00, 0x54, 0x00, 0x00, 0x54, 0x04, 0x00, 0x51, 0x4D, 0x00, 0x11, 0x69, 0x00, 0x11, 0x39, 0x00, 0x11, 0x11, 0x00, 0x11, 0x39, 0x00, 0x11, 0x6D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60AB, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x47, 0xF2, 0x00, 0x04, 0x10, 0x00, 0x04, 0x14, 0x00, 0x18, 0x1C, 0x00, 0x05, 0x00, 0x00, 0x14, 0xC2, 0x00, 0x24, 0x49, 0x00, 0x44, 0x09, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60AC, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x0A, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x28, 0xC2, 0x00, 0x28, 0x41, 0x00, 0x48, 0x09, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60AD, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x12, 0x80, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x5A, 0x94, 0x00, 0x56, 0x88, 0x00, 0x52, 0x94, 0x00, 0x52, 0xA3, 0x00, 0x12, 0xC0, 0x00, 0x10, 0x40, 0x00, 0x10, 0x48, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60AF, { 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x08, 0xBF, 0x00, 0x08, 0x02, 0x00, 0x09, 0x22, 0x00, 0x2D, 0x12, 0x00, 0x2B, 0xFE, 0x00, 0x29, 0x4A, 0x00, 0x49, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x12, 0x00, 0x09, 0x2A, 0x00, 0x09, 0xC6, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x2A, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B1, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x29, 0xE7, 0x80, 0x2C, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x48, 0xE7, 0x80, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0xE4, 0x00, 0x09, 0xA7, 0x80, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B2, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x07, 0x9F, 0x80, 0x38, 0x90, 0x00, 0x01, 0x10, 0x00, 0x06, 0x10, 0x00, 0x18, 0x92, 0x00, 0x02, 0x41, 0x00, 0x0A, 0x24, 0x80, 0x12, 0x04, 0x00, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x04, 0x41, 0x00, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x82, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x28, 0xFE, 0x00, 0x2C, 0x80, 0x00, 0x2A, 0xFE, 0x00, 0x68, 0x80, 0x00, 0x48, 0x80, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x91, 0x00, 0x08, 0x9B, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x20, 0x41, 0x00, 0x22, 0x09, 0x00, 0x2A, 0x15, 0x00, 0x2A, 0x13, 0x00, 0x2B, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60B7, { 0x00, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x59, 0x01, 0x00, 0x55, 0x01, 0x00, 0x55, 0xFF, 0x00, 0x51, 0x10, 0x00, 0x51, 0x11, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x11, 0x38, 0x00, 0x13, 0x28, 0x00, 0x12, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60B8, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x38, 0x00, 0x2A, 0x54, 0x00, 0x28, 0x92, 0x00, 0x2B, 0x11, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60BB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x6A, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60BC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x0A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60BD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x11, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0xE4, 0x00, 0x09, 0x1C, 0x00, 0x08, 0x73, 0x00, 0x0B, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60BE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x28, 0xA4, 0x80, 0x2C, 0xA4, 0x80, 0x2A, 0x64, 0x00, 0x6A, 0xC7, 0x80, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x28, 0x61, 0x00, 0x2C, 0x41, 0x00, 0x2A, 0xC3, 0x00, 0x6A, 0x02, 0x00, 0x48, 0x0E, 0x00, 0x08, 0x60, 0x00, 0x08, 0xCF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xEF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x7F, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xB6, 0x00, 0x04, 0x1C, 0x00, 0x15, 0x08, 0x00, 0x35, 0x1C, 0x00, 0x25, 0xB6, 0x00, 0x2C, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x29, 0x11, 0x00, 0x2D, 0x7D, 0x00, 0x2B, 0x11, 0x00, 0x69, 0x11, 0x00, 0x49, 0x7D, 0x00, 0x09, 0x11, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x28, 0x91, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x6A, 0x91, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60C9, { 0x00, 0x00, 0x00, 0x18, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x24, 0x3F, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x05, 0x02, 0x00, 0x09, 0x02, 0x00, 0x39, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60CA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x6A, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60CB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x2D, 0x01, 0x00, 0x2A, 0x80, 0x00, 0x6A, 0xEF, 0x00, 0x48, 0xA9, 0x00, 0x09, 0xA9, 0x00, 0x09, 0x29, 0x00, 0x08, 0xA9, 0x00, 0x08, 0x6B, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x80, 0x08, 0xC9, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60CE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0xC6, 0x00, 0x62, 0x61, 0x80, 0x0A, 0x26, 0x00, 0x0A, 0x03, 0x00, 0x1B, 0x04, 0x00, 0x31, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60CF, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x53, 0xDF, 0x80, 0x58, 0x84, 0x00, 0x54, 0x84, 0x00, 0x55, 0xCE, 0x00, 0x51, 0xAE, 0x00, 0x12, 0x95, 0x00, 0x12, 0x95, 0x00, 0x14, 0xA4, 0x80, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60D1, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x11, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x94, 0x00, 0x0F, 0x88, 0x80, 0x00, 0x1C, 0x80, 0x1F, 0xA3, 0x80, 0x00, 0xC0, 0x00, 0x03, 0x21, 0x00, 0x12, 0x11, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60D3, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x00, 0x2D, 0xFF, 0x00, 0x2A, 0x28, 0x00, 0x28, 0x28, 0x00, 0x6B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x85, 0x80, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x81, 0x00, 0x08, 0x83, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60D4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x80, 0x08, 0x49, 0x80, 0x28, 0xDD, 0x00, 0x2C, 0x94, 0x00, 0x2A, 0x36, 0x00, 0x6A, 0x63, 0x00, 0x48, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x48, 0x80, 0x08, 0x49, 0x80, 0x08, 0xDD, 0x00, 0x08, 0x94, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60D5, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x6A, 0xFE, 0x00, 0x48, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0xA4, 0x80, 0x08, 0x64, 0x80, 0x08, 0xCC, 0x80, 0x09, 0x98, 0x80, 0x08, 0x31, 0x80, 0x08, 0x61, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60D8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x29, 0x45, 0x00, 0x2D, 0x29, 0x00, 0x2B, 0xFF, 0x00, 0x69, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x3D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60D9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x51, 0xAD, 0x00, 0x58, 0x42, 0x00, 0x54, 0xA5, 0x00, 0x55, 0x08, 0x80, 0x50, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x11, 0x21, 0x00, 0x10, 0xCA, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x2A, 0x00, 0x12, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60DA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x95, 0x00, 0x0B, 0x25, 0x00, 0x28, 0x49, 0x00, 0x29, 0x91, 0x00, 0x28, 0x22, 0x00, 0x08, 0xCC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x51, 0x00, 0x09, 0x41, 0x00, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60DB, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x28, 0x88, 0x00, 0x2C, 0xFF, 0x80, 0x2A, 0x84, 0x00, 0x6A, 0x84, 0x00, 0x48, 0xE2, 0x80, 0x09, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60DC, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0D, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60DD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x2C, 0x49, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x80, 0x80, 0x48, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60DE, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x13, 0x88, 0x00, 0x52, 0x1F, 0x80, 0x52, 0x14, 0x80, 0x5B, 0xF4, 0x80, 0x56, 0x45, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x4E, 0x00, 0x12, 0x4A, 0x00, 0x16, 0x4A, 0x00, 0x14, 0x4B, 0x00, 0x14, 0x59, 0x00, 0x10, 0x51, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60DF, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x88, 0x00, 0x0C, 0xFF, 0x00, 0x2B, 0x88, 0x00, 0x29, 0x88, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x45, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x02, 0x42, 0x00, 0x12, 0x21, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E2, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x12, 0x66, 0x00, 0x12, 0x23, 0x00, 0x32, 0x01, 0x00, 0x22, 0x00, 0x00, 0x23, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x06, 0x86, 0x80, 0x2A, 0xAA, 0x80, 0x28, 0xA8, 0x80, 0x28, 0x28, 0x00, 0x29, 0x29, 0x00, 0x2D, 0x2D, 0x00, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E3, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x28, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x69, 0x25, 0x00, 0x0B, 0x6D, 0x00, 0x08, 0x49, 0x00, 0x0E, 0xD9, 0x00, 0x79, 0x93, 0x00, 0x08, 0x32, 0x00, 0x08, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E5, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x10, 0xBE, 0x00, 0x10, 0x82, 0x00, 0x1E, 0xBE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0xC7, 0x00, 0x02, 0x60, 0x00, 0x12, 0x23, 0x00, 0x12, 0x05, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x2D, 0x10, 0x00, 0x2B, 0x12, 0x00, 0x29, 0x1F, 0x00, 0x49, 0x10, 0x00, 0x09, 0x12, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x42, 0x00, 0x09, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E7, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x6A, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x62, 0x00, 0x08, 0x43, 0x00, 0x08, 0xFD, 0x00, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x6A, 0x24, 0x00, 0x48, 0x42, 0x00, 0x09, 0x89, 0x80, 0x08, 0x30, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x18, 0x80, 0x08, 0xE1, 0x80, 0x08, 0x07, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60E9, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x06, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x14, 0x00, 0x04, 0x9E, 0x00, 0x06, 0x90, 0x00, 0x0C, 0x90, 0x00, 0x14, 0x92, 0x00, 0x25, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x84, 0x00, 0x0A, 0x62, 0x00, 0x0A, 0x29, 0x00, 0x12, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60EB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x0A, 0x20, 0x00, 0x09, 0x40, 0x00, 0x11, 0xC0, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0F, 0x00, 0x6F, 0xFA, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x14, 0xC4, 0x00, 0x14, 0x4A, 0x00, 0x23, 0xFA, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60EC, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x14, 0x00, 0x2E, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x54, 0x00, 0x4A, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x44, 0x00, 0x0A, 0x82, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60ED, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x83, 0x00, 0x10, 0x9C, 0x00, 0x17, 0xF0, 0x00, 0x59, 0x10, 0x00, 0x56, 0x90, 0x00, 0x52, 0x9F, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x94, 0x00, 0x10, 0x94, 0x00, 0x10, 0xF4, 0x00, 0x17, 0x94, 0x00, 0x12, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60EE, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x09, 0xFC, 0x00, 0x2D, 0x24, 0x00, 0x2B, 0x24, 0x00, 0x29, 0xFC, 0x00, 0x49, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60EF, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFF, 0x00, 0x2D, 0x24, 0x00, 0x2B, 0xFC, 0x00, 0x28, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x58, 0x00, 0x08, 0x86, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x2A, 0x40, 0x00, 0x28, 0xFF, 0x00, 0x29, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x92, 0x00, 0x0D, 0x24, 0x00, 0x2A, 0x92, 0x00, 0x28, 0x49, 0x00, 0x28, 0x10, 0x00, 0x28, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x45, 0x00, 0x09, 0x29, 0x00, 0x09, 0x11, 0x00, 0x09, 0x29, 0x00, 0x09, 0x45, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x29, 0x10, 0x80, 0x2C, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x14, 0xA1, 0x00, 0x24, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x12, 0x41, 0x00, 0x12, 0x21, 0x00, 0x22, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x28, 0x91, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x69, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F5, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x2C, 0x92, 0x00, 0x2A, 0x9E, 0x00, 0x6A, 0x80, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x0B, 0x80, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x40, 0x00, 0x12, 0x23, 0x00, 0x32, 0x09, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60F8, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x29, 0x80, 0x80, 0x2C, 0x7C, 0x80, 0x2A, 0x44, 0x80, 0x6A, 0x7C, 0x80, 0x48, 0x44, 0x80, 0x08, 0x7D, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60F9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x01, 0x21, 0x00, 0x09, 0x10, 0x80, 0x11, 0x02, 0x80, 0x21, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60FA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x90, 0x00, 0x28, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x60FB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, 0xF0, 0x80, 0x08, 0x94, 0x80, 0x0A, 0x94, 0x80, 0x0A, 0x94, 0x80, 0x2A, 0xF4, 0x80, 0x28, 0x94, 0x80, 0x28, 0x94, 0x80, 0x08, 0xF4, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0xF4, 0x80, 0x08, 0x00, 0x80, 0x08, 0x90, 0x80, 0x09, 0x09, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60FC, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x09, 0x94, 0x80, 0x09, 0xFF, 0x80, 0x0A, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x60FD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x88, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x8C, 0x00, 0x48, 0xE4, 0x80, 0x09, 0x87, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6100, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x11, 0xC8, 0x00, 0x17, 0x09, 0x00, 0x51, 0x29, 0x00, 0x59, 0x2B, 0x00, 0x57, 0xEA, 0x00, 0x51, 0x2A, 0x00, 0x11, 0x08, 0x00, 0x13, 0x88, 0x00, 0x13, 0x5C, 0x00, 0x15, 0x54, 0x00, 0x15, 0x14, 0x00, 0x19, 0x16, 0x00, 0x11, 0x32, 0x00, 0x11, 0x23, 0x00, 0x11, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6101, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xAA, 0x00, 0x0C, 0x48, 0x00, 0x0E, 0x08, 0x00, 0x15, 0x14, 0x00, 0x14, 0x22, 0x00, 0x24, 0xC1, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6102, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xC9, 0x00, 0x20, 0x49, 0x00, 0x1F, 0x99, 0x00, 0x01, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x02, 0x11, 0x00, 0x0E, 0x37, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6103, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x29, 0x00, 0x80, 0x2D, 0x7E, 0x80, 0x2A, 0x00, 0x00, 0x68, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6106, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x10, 0xBF, 0x00, 0x20, 0x00, 0x00, 0x05, 0x00, 0x00, 0x08, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x31, 0x04, 0x00, 0x11, 0x04, 0x00, 0x12, 0x04, 0x00, 0x12, 0x1C, 0x00, 0x00, 0x82, 0x00, 0x02, 0x41, 0x00, 0x12, 0x20, 0x80, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6107, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x28, 0x22, 0x00, 0x2D, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x6A, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6108, { 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x01, 0x90, 0x00, 0x06, 0x0C, 0x00, 0x39, 0xFB, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x0F, 0x92, 0x00, 0x08, 0xA4, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x89, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6109, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x28, 0x00, 0x0C, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x29, 0xE5, 0x00, 0x29, 0x25, 0x00, 0x09, 0xEA, 0x00, 0x09, 0x34, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x29, 0x00, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x610A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x2C, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x610C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0xC2, 0x00, 0x28, 0x84, 0x00, 0x2D, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x6A, 0xA9, 0x00, 0x48, 0xA9, 0x00, 0x08, 0xCF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x610D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x90, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x8C, 0x00, 0x11, 0x0C, 0x00, 0x16, 0x92, 0x00, 0x38, 0x61, 0x80, 0x00, 0x80, 0x00, 0x04, 0x42, 0x00, 0x14, 0x01, 0x00, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x610E, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x80, 0x00, 0x0B, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC2, 0x00, 0x0B, 0x2C, 0x00, 0x08, 0x10, 0x00, 0x08, 0x6C, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x610F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x12, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6110, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x28, 0x10, 0x00, 0x2C, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x6A, 0x94, 0x80, 0x48, 0x9C, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x9C, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6111, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x6A, 0x91, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x81, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x80, 0x08, 0x31, 0x80, 0x08, 0x61, 0x00, 0x08, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6112, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x6A, 0xFE, 0x00, 0x48, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x90, 0x80, 0x0B, 0x10, 0x80, 0x09, 0x38, 0x80, 0x09, 0x6C, 0x80, 0x09, 0x01, 0x80, 0x09, 0xF9, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6113, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x6A, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x0A, 0x6C, 0x80, 0x08, 0xC8, 0x80, 0x09, 0x99, 0x80, 0x08, 0x31, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6114, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x2C, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x6A, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6115, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x0A, 0x94, 0x80, 0x0A, 0xF7, 0x80, 0x2A, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x80, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6116, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x42, 0x00, 0x2C, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x6A, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0xA7, 0x80, 0x08, 0xC0, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6117, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x11, 0x3F, 0x00, 0x0A, 0x22, 0x00, 0x3F, 0xF6, 0x00, 0x0C, 0x9C, 0x00, 0x0D, 0x08, 0x00, 0x14, 0x1C, 0x00, 0x24, 0x36, 0x00, 0x0C, 0x23, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6119, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x13, 0xF2, 0x00, 0x06, 0x20, 0x00, 0x19, 0xC0, 0x00, 0x03, 0x38, 0x00, 0x3C, 0x0F, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x12, 0x40, 0x00, 0x12, 0x63, 0x00, 0x32, 0x25, 0x80, 0x23, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x611A, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x44, 0x80, 0x20, 0x7E, 0x80, 0x2F, 0x82, 0x80, 0x20, 0x81, 0x80, 0x00, 0x40, 0x00, 0x02, 0x21, 0x00, 0x12, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x611B, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0x80, 0x00, 0x08, 0x22, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0x45, 0x00, 0x0A, 0x04, 0x80, 0x13, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x02, 0x84, 0x00, 0x0C, 0x48, 0x00, 0x30, 0x30, 0x00, 0x01, 0xD8, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x611C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x52, 0x10, 0x00, 0x5B, 0xFF, 0x80, 0x56, 0x92, 0x00, 0x52, 0x92, 0x00, 0x52, 0x92, 0x00, 0x13, 0x55, 0x00, 0x13, 0x54, 0x80, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x12, 0x46, 0x00, 0x13, 0x81, 0x80, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x611E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x24, 0x80, 0x2D, 0x24, 0x80, 0x6B, 0x24, 0x80, 0x49, 0x25, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x611F, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x1F, 0xD2, 0x00, 0x10, 0x14, 0x00, 0x17, 0x88, 0x00, 0x14, 0x94, 0x00, 0x17, 0xA2, 0x80, 0x10, 0xC1, 0x80, 0x23, 0x02, 0x00, 0x20, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6120, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x5B, 0xFC, 0x00, 0x56, 0x04, 0x00, 0x52, 0x04, 0x00, 0x53, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6121, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x5A, 0xC9, 0x00, 0x54, 0x71, 0x00, 0x50, 0x99, 0x00, 0x51, 0x2B, 0x00, 0x10, 0x42, 0x00, 0x10, 0x0E, 0x00, 0x10, 0x20, 0x00, 0x10, 0xB0, 0x00, 0x12, 0x93, 0x00, 0x12, 0x85, 0x80, 0x16, 0x8C, 0x80, 0x14, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6122, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x28, 0x91, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x6A, 0x91, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0x1B, 0x00, 0x09, 0x49, 0x80, 0x09, 0x40, 0x80, 0x09, 0x40, 0x00, 0x0B, 0x63, 0x00, 0x0A, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6123, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x2F, 0xFE, 0x00, 0x2A, 0x40, 0x00, 0x28, 0x22, 0x00, 0x4F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x14, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6124, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x2C, 0xAA, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x49, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x50, 0x00, 0x08, 0x8C, 0x00, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6126, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x0D, 0x24, 0x00, 0x29, 0xFC, 0x00, 0x28, 0x20, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x58, 0x00, 0x08, 0x84, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6127, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x4D, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x88, 0x80, 0x09, 0x08, 0x80, 0x0A, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6128, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x43, 0x80, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x22, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x36, 0x00, 0x00, 0xC1, 0x80, 0x12, 0x60, 0x00, 0x12, 0x25, 0x00, 0x33, 0x0D, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x612A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x28, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x612B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x28, 0xFE, 0x00, 0x2C, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x6A, 0x10, 0x00, 0x48, 0x24, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x32, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x612C, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x31, 0x9F, 0x00, 0x11, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x1F, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x9F, 0x00, 0x08, 0x11, 0x00, 0x18, 0x11, 0x00, 0x70, 0x27, 0x00, 0x02, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6130, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x29, 0x11, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6131, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0xA0, 0x00, 0x29, 0xA0, 0x00, 0x2C, 0xBF, 0x00, 0x6A, 0xC8, 0x00, 0x48, 0x88, 0x00, 0x09, 0x88, 0x00, 0x0A, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x9C, 0x00, 0x09, 0x94, 0x00, 0x09, 0x36, 0x00, 0x09, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6134, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0xBE, 0x80, 0x2A, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC1, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6135, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x10, 0x20, 0x80, 0x10, 0x20, 0x80, 0x51, 0xEF, 0x80, 0x59, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0xEF, 0x80, 0x50, 0x20, 0x80, 0x10, 0x63, 0x80, 0x10, 0xA4, 0x80, 0x11, 0x28, 0x80, 0x10, 0x63, 0x80, 0x10, 0xA4, 0x80, 0x11, 0x28, 0x80, 0x10, 0x61, 0x80, 0x10, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6136, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x62, 0x00, 0x51, 0x8C, 0x00, 0x51, 0x04, 0x00, 0x5B, 0xEF, 0x80, 0x55, 0x24, 0x80, 0x52, 0x69, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6137, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6139, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x2C, 0xA2, 0x80, 0x2A, 0x63, 0x00, 0x6A, 0xC9, 0x80, 0x48, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x613C, { 0x00, 0x00, 0x00, 0x08, 0x87, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x80, 0x80, 0x0C, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x0A, 0x81, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x81, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x613D, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x00, 0x2B, 0x11, 0x00, 0x69, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x42, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x613E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x80, 0x00, 0x2B, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x29, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xB2, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x08, 0x72, 0x80, 0x08, 0xA9, 0x80, 0x0B, 0x26, 0x80, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x613F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x22, 0x22, 0x00, 0x24, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x12, 0x45, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6141, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFA, 0x00, 0x11, 0xC2, 0x00, 0x17, 0x66, 0x00, 0x10, 0xBA, 0x00, 0x17, 0x72, 0x00, 0x10, 0xAA, 0x00, 0x17, 0x26, 0x00, 0x10, 0xC2, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x43, 0x00, 0x12, 0x61, 0x80, 0x32, 0x24, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6142, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x4C, 0x00, 0x20, 0x30, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x21, 0x00, 0x22, 0x23, 0x00, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6144, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x0D, 0xFF, 0x00, 0x2B, 0x29, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x18, 0x00, 0x08, 0x34, 0x00, 0x08, 0x52, 0x00, 0x08, 0x91, 0x00, 0x0B, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6145, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x51, 0x00, 0x09, 0x4A, 0x00, 0x29, 0xA4, 0x00, 0x2C, 0xA8, 0x00, 0x2A, 0x18, 0x00, 0x6A, 0x26, 0x00, 0x49, 0xC1, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x1F, 0x80, 0x09, 0xF0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6146, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xF0, 0x00, 0x28, 0x52, 0x00, 0x2C, 0xDB, 0x00, 0x2A, 0x89, 0x00, 0x6A, 0x00, 0x00, 0x48, 0x70, 0x00, 0x09, 0xC7, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xE7, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6147, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x1E, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x12, 0x80, 0x1F, 0x23, 0x80, 0x11, 0xC0, 0x00, 0x1F, 0x7F, 0x00, 0x10, 0x21, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x26, 0x21, 0x80, 0x00, 0xC0, 0x00, 0x12, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6148, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x05, 0x52, 0x00, 0x29, 0x22, 0x00, 0x12, 0x14, 0x00, 0x0C, 0x89, 0x00, 0x09, 0xD7, 0x80, 0x3E, 0x78, 0x80, 0x01, 0x00, 0x00, 0x04, 0x81, 0x00, 0x14, 0x41, 0x00, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6149, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x2C, 0x24, 0x00, 0x2A, 0xF9, 0x00, 0x6A, 0x11, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x614A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x0A, 0x82, 0x00, 0x0B, 0xFF, 0x00, 0x2A, 0x48, 0x80, 0x28, 0x48, 0x00, 0x29, 0xFE, 0x00, 0x08, 0x4A, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x4A, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x08, 0xCC, 0x00, 0x09, 0x4A, 0x00, 0x0A, 0x49, 0x00, 0x08, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x614B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x13, 0xA7, 0x00, 0x3C, 0x78, 0x00, 0x00, 0x20, 0x80, 0x1F, 0xBF, 0x80, 0x10, 0x80, 0x00, 0x1F, 0xA3, 0x80, 0x10, 0xBC, 0x00, 0x1F, 0xA0, 0x80, 0x10, 0xBF, 0x80, 0x13, 0x80, 0x00, 0x00, 0x42, 0x00, 0x12, 0x21, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x614C, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x80, 0x00, 0x28, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x80, 0x09, 0x13, 0x80, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x614D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2C, 0xBA, 0x00, 0x2A, 0xAA, 0x00, 0x6A, 0xC6, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x614E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x58, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x50, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6151, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x2C, 0xFC, 0x00, 0x2A, 0x84, 0x00, 0x28, 0xFC, 0x00, 0x48, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x09, 0x54, 0x00, 0x08, 0x88, 0x00, 0x09, 0x54, 0x00, 0x0A, 0x23, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6153, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x14, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6155, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x49, 0x80, 0x04, 0x64, 0x00, 0x08, 0x52, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6158, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x4F, 0x00, 0x0B, 0xF0, 0x80, 0x0A, 0x44, 0x00, 0x2A, 0x89, 0x00, 0x29, 0x3F, 0x80, 0x2B, 0xE8, 0x80, 0x28, 0x24, 0x00, 0x08, 0xD3, 0x80, 0x0B, 0x24, 0x00, 0x08, 0x48, 0x00, 0x09, 0xB1, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x18, 0x00, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6159, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x3F, 0xB8, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x04, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x20, 0x80, 0x12, 0x02, 0x80, 0x23, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x615A, { 0x00, 0x00, 0x00, 0x10, 0x81, 0x80, 0x10, 0x8F, 0x00, 0x17, 0xF8, 0x00, 0x50, 0x88, 0x00, 0x5B, 0xE8, 0x00, 0x56, 0xAF, 0x80, 0x52, 0xA9, 0x00, 0x13, 0xE9, 0x00, 0x12, 0xA9, 0x00, 0x12, 0xA9, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x89, 0x00, 0x17, 0xF9, 0x00, 0x10, 0x89, 0x00, 0x10, 0x91, 0x00, 0x10, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x615D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x1D, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x20, 0x80, 0x12, 0x02, 0x80, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x615E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x28, 0x42, 0x00, 0x2C, 0x24, 0x00, 0x2B, 0xFF, 0x80, 0x6A, 0x00, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x615F, { 0x00, 0x00, 0x00, 0x04, 0x72, 0x00, 0x05, 0xC2, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x18, 0x4F, 0x80, 0x19, 0xF2, 0x80, 0x29, 0x52, 0x80, 0x29, 0xF2, 0x80, 0x09, 0x52, 0x80, 0x09, 0xF2, 0x80, 0x08, 0x44, 0x80, 0x0B, 0xF4, 0x80, 0x08, 0x44, 0x80, 0x08, 0x78, 0x80, 0x0B, 0xC8, 0x80, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6160, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x13, 0xE8, 0x00, 0x50, 0x8F, 0x80, 0x58, 0x99, 0x00, 0x57, 0xF9, 0x00, 0x54, 0x89, 0x00, 0x50, 0x8D, 0x00, 0x13, 0xE5, 0x00, 0x10, 0x85, 0x00, 0x10, 0xE7, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xA7, 0x00, 0x11, 0x25, 0x00, 0x11, 0x2D, 0x80, 0x12, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6162, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x0A, 0x44, 0x80, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x66, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6163, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x92, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6164, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBE, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x80, 0x20, 0xA3, 0x80, 0x3F, 0x40, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x14, 0x00, 0x1F, 0x0C, 0x00, 0x11, 0x53, 0x80, 0x21, 0xA0, 0x00, 0x04, 0x41, 0x00, 0x14, 0x24, 0x80, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6165, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x12, 0x28, 0x00, 0x13, 0x28, 0x00, 0x51, 0x7F, 0x00, 0x5A, 0x48, 0x00, 0x57, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x17, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x3E, 0x00, 0x13, 0x80, 0x00, 0x16, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6167, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x1F, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x07, 0xBF, 0x80, 0x3C, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6168, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x0D, 0x2A, 0x00, 0x2B, 0x2A, 0x00, 0x29, 0xEA, 0x00, 0x29, 0x2A, 0x00, 0x29, 0x3F, 0x80, 0x09, 0xE2, 0x00, 0x09, 0x02, 0x00, 0x09, 0xE6, 0x00, 0x09, 0x06, 0x00, 0x09, 0xEA, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x80, 0x09, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x616B, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0xAA, 0x00, 0x23, 0x11, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x9F, 0x00, 0x28, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x50, 0x00, 0x0A, 0x3F, 0x80, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x02, 0x80, 0x13, 0xFE, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x616C, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x42, 0x00, 0x2C, 0x7E, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x616E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBC, 0x80, 0x1F, 0xC1, 0x00, 0x10, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x41, 0x00, 0x25, 0x20, 0x80, 0x25, 0x02, 0x80, 0x29, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x616F, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x68, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x08, 0x91, 0x00, 0x09, 0x23, 0x00, 0x08, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6170, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xC2, 0x00, 0x22, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x86, 0x00, 0x02, 0x00, 0x00, 0x05, 0x01, 0x00, 0x14, 0x84, 0x80, 0x17, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6171, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x00, 0x2B, 0x11, 0x00, 0x69, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x12, 0x00, 0x08, 0x7F, 0x00, 0x0B, 0xC1, 0x80, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6172, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x50, 0x44, 0x00, 0x50, 0x7C, 0x00, 0x58, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x52, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x52, 0x80, 0x12, 0x52, 0x80, 0x12, 0xB5, 0x80, 0x13, 0x39, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6173, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xE0, 0x00, 0x12, 0x9F, 0x00, 0x52, 0x89, 0x00, 0x5B, 0xEB, 0x00, 0x56, 0x2E, 0x00, 0x53, 0xE4, 0x00, 0x12, 0x8E, 0x00, 0x12, 0x9B, 0x00, 0x13, 0xE1, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6174, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0xA2, 0x80, 0x2D, 0x24, 0x80, 0x2A, 0x61, 0x80, 0x28, 0xA2, 0x80, 0x69, 0x24, 0x80, 0x48, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6175, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x5A, 0x11, 0x00, 0x57, 0xFF, 0x80, 0x52, 0x11, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x16, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x1C, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x10, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6176, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x15, 0x26, 0x00, 0x19, 0xFD, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFE, 0x00, 0x12, 0x88, 0x00, 0x2C, 0x70, 0x00, 0x21, 0xDC, 0x00, 0x2E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6177, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x88, 0x00, 0x0A, 0xBE, 0x00, 0x2A, 0x8A, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x8A, 0x00, 0x08, 0xBE, 0x00, 0x08, 0xC9, 0x00, 0x08, 0xAA, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x9C, 0x00, 0x08, 0xAA, 0x00, 0x09, 0x29, 0x00, 0x09, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6178, { 0x00, 0x00, 0x00, 0x05, 0x28, 0x00, 0x05, 0x28, 0x00, 0x3F, 0xFF, 0x00, 0x05, 0x28, 0x00, 0x19, 0x26, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x00, 0x80, 0x00, 0x14, 0xE3, 0x00, 0x34, 0x21, 0x80, 0x26, 0x04, 0x80, 0x63, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x617B, { 0x00, 0x00, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x92, 0x00, 0x29, 0xFF, 0x00, 0x2C, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x6B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x82, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x617C, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0xD0, 0x00, 0x11, 0x12, 0x00, 0x1F, 0xDA, 0x00, 0x11, 0x0A, 0x00, 0x15, 0x4C, 0x00, 0x19, 0x55, 0x00, 0x13, 0x17, 0x00, 0x20, 0x12, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x32, 0x25, 0x80, 0x23, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x617D, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x05, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x0D, 0x24, 0x00, 0x2B, 0x3C, 0x80, 0x29, 0x24, 0x80, 0x29, 0xFD, 0x00, 0x09, 0x25, 0x00, 0x09, 0x75, 0x00, 0x09, 0xAE, 0x00, 0x09, 0x24, 0x00, 0x09, 0x26, 0x00, 0x09, 0x6A, 0x80, 0x0A, 0x12, 0x80, 0x0A, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x617E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x10, 0x00, 0x24, 0xBF, 0x80, 0x0A, 0x41, 0x00, 0x11, 0x08, 0x00, 0x20, 0x88, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x41, 0x80, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x12, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x617F, { 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x32, 0x20, 0x00, 0x1B, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x03, 0xFC, 0x00, 0x1A, 0x20, 0x00, 0x33, 0xFF, 0x00, 0x01, 0x21, 0x00, 0x1F, 0xFD, 0x00, 0x02, 0x21, 0x00, 0x04, 0x23, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x32, 0x25, 0x80, 0x23, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6180, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x63, 0x00, 0x28, 0xA5, 0x00, 0x2C, 0x63, 0x00, 0x2A, 0xA5, 0x00, 0x68, 0x10, 0x00, 0x48, 0x38, 0x00, 0x08, 0xEE, 0x00, 0x0B, 0x83, 0x80, 0x08, 0x10, 0x00, 0x08, 0xE4, 0x00, 0x08, 0x19, 0x00, 0x08, 0xE2, 0x00, 0x08, 0x0C, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6181, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0xA1, 0x00, 0x0A, 0xBD, 0x00, 0x2A, 0xE5, 0x00, 0x28, 0x99, 0x00, 0x28, 0x95, 0x00, 0x08, 0xA3, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0x49, 0x00, 0x09, 0x48, 0x80, 0x0A, 0x42, 0x80, 0x0A, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6182, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x0A, 0x4A, 0x00, 0x13, 0xF9, 0x00, 0x21, 0x01, 0x00, 0x03, 0xFC, 0x00, 0x0D, 0x18, 0x00, 0x30, 0xE0, 0x00, 0x03, 0xB0, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6183, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x88, 0x00, 0x0F, 0x3C, 0x00, 0x34, 0x0B, 0x00, 0x07, 0x38, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x12, 0x41, 0x00, 0x32, 0x25, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6184, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x25, 0x7E, 0x00, 0x0D, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x19, 0x42, 0x00, 0x29, 0x7E, 0x00, 0x09, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6187, { 0x00, 0x00, 0x00, 0x03, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x78, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x7F, 0xA2, 0x00, 0x08, 0x3E, 0x00, 0x3F, 0x22, 0x00, 0x21, 0x22, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x618A, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0x93, 0x00, 0x00, 0x40, 0x00, 0x0A, 0x21, 0x00, 0x12, 0x02, 0x80, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x618B, { 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x24, 0x90, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xF6, 0x00, 0x2E, 0x9C, 0x00, 0x35, 0x88, 0x00, 0x24, 0x9E, 0x00, 0x25, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x618D, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x20, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x44, 0x00, 0x2A, 0xFE, 0x00, 0x6B, 0x45, 0x80, 0x48, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x618E, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x02, 0x00, 0x08, 0x41, 0x80, 0x0B, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x28, 0xAA, 0x80, 0x28, 0x9C, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6190, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x38, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x92, 0x00, 0x29, 0x11, 0x80, 0x08, 0x82, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x2A, 0x00, 0x0A, 0xCA, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x1F, 0x80, 0x0A, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6191, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x04, 0x80, 0x20, 0x92, 0x80, 0x24, 0x49, 0x00, 0x09, 0x06, 0x00, 0x02, 0x80, 0x00, 0x0A, 0x45, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6192, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x2C, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x00, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6193, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x2D, 0x11, 0x00, 0x2B, 0xFF, 0x00, 0x69, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x80, 0x08, 0xB3, 0x00, 0x0A, 0x91, 0x80, 0x0A, 0x82, 0x80, 0x0A, 0xC6, 0x00, 0x0A, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6194, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x50, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x90, 0x00, 0x29, 0x90, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x29, 0x00, 0x09, 0x14, 0x80, 0x0A, 0x14, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6196, { 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x0B, 0x00, 0x7F, 0xC9, 0x00, 0x04, 0x3F, 0x80, 0x15, 0x08, 0x00, 0x2E, 0x9C, 0x00, 0x04, 0x14, 0x00, 0x0E, 0x16, 0x00, 0x15, 0x33, 0x00, 0x64, 0x61, 0x80, 0x04, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6197, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xBF, 0x80, 0x04, 0x22, 0x00, 0x15, 0x56, 0x00, 0x15, 0x1C, 0x00, 0x2E, 0x88, 0x00, 0x4E, 0x5C, 0x00, 0x15, 0x37, 0x00, 0x64, 0xA1, 0x80, 0x04, 0x40, 0x00, 0x02, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6198, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6199, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x14, 0x40, 0x80, 0x14, 0x02, 0x80, 0x27, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x619A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x0B, 0xEF, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x619C, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0x88, 0x00, 0x12, 0xBF, 0x80, 0x12, 0x90, 0x00, 0x53, 0xBF, 0x00, 0x5B, 0x44, 0x00, 0x57, 0x3F, 0x80, 0x52, 0x80, 0x00, 0x52, 0x9F, 0x00, 0x12, 0x91, 0x00, 0x13, 0x9F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x619D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x76, 0x00, 0x3F, 0x9C, 0x00, 0x02, 0x08, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x36, 0x00, 0x04, 0x23, 0x00, 0x0C, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x619F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x29, 0xFF, 0x00, 0x2D, 0x49, 0x00, 0x2B, 0x49, 0x00, 0x69, 0xFF, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61A0, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x50, 0x00, 0x12, 0x90, 0x00, 0x1F, 0xDF, 0x00, 0x11, 0x29, 0x00, 0x15, 0x4A, 0x00, 0x15, 0x48, 0x00, 0x17, 0xDC, 0x00, 0x31, 0x14, 0x00, 0x23, 0x36, 0x00, 0x0E, 0x23, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61A4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0C, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61A5, { 0x00, 0x00, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x32, 0x25, 0x80, 0x23, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61A7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0C, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61A8, { 0x00, 0x00, 0x00, 0x0F, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xBF, 0x00, 0x09, 0x22, 0x00, 0x0F, 0x76, 0x00, 0x09, 0x1C, 0x00, 0x0F, 0x08, 0x00, 0x09, 0x1C, 0x00, 0x3F, 0xB6, 0x00, 0x01, 0x23, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61A9, { 0x00, 0x00, 0x00, 0x03, 0x22, 0x00, 0x3C, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xBE, 0x00, 0x20, 0xA2, 0x00, 0x20, 0xA2, 0x00, 0x3F, 0xBE, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61AA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x51, 0x24, 0x80, 0x59, 0xE7, 0x80, 0x55, 0x00, 0x80, 0x51, 0x3C, 0x80, 0x51, 0x24, 0x80, 0x11, 0x3C, 0x80, 0x11, 0x24, 0x80, 0x11, 0x3C, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x2C, 0x80, 0x11, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61AB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x0D, 0xE7, 0x80, 0x2B, 0x24, 0x80, 0x2B, 0xE7, 0x80, 0x29, 0x00, 0x80, 0x29, 0x08, 0x80, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x80, 0x09, 0x14, 0x80, 0x09, 0x08, 0x80, 0x09, 0x18, 0x80, 0x09, 0x24, 0x80, 0x09, 0x42, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61AC, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61AD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x28, 0x44, 0x00, 0x2D, 0x45, 0x00, 0x2A, 0x82, 0x00, 0x69, 0xFF, 0x00, 0x4A, 0x82, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61AE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x0B, 0xFF, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0x25, 0x00, 0x09, 0x25, 0x00, 0x09, 0x25, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61B2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x12, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61B6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0C, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x09, 0x48, 0x80, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61B7, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x2D, 0xDC, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0x88, 0x00, 0x4B, 0xFE, 0x00, 0x08, 0x24, 0x00, 0x09, 0x20, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x20, 0x00, 0x09, 0xA0, 0x00, 0x09, 0x60, 0x00, 0x0A, 0x23, 0x00, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61B8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x28, 0xC6, 0x00, 0x2D, 0x83, 0x80, 0x2A, 0x7C, 0x00, 0x6A, 0x00, 0x00, 0x49, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0xC7, 0x00, 0x0B, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61B9, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x51, 0xFF, 0x00, 0x59, 0x49, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x91, 0x00, 0x12, 0x9B, 0x00, 0x14, 0xEE, 0x00, 0x11, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61BA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x0A, 0x84, 0x00, 0x0B, 0xFF, 0x80, 0x2B, 0x28, 0x80, 0x2B, 0xC7, 0x80, 0x29, 0x7F, 0x00, 0x29, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61BC, { 0x00, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x0A, 0x3F, 0x00, 0x10, 0x22, 0x00, 0x3F, 0xF6, 0x00, 0x20, 0x9C, 0x00, 0x1C, 0x88, 0x00, 0x14, 0x9E, 0x00, 0x1D, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x21, 0x80, 0x32, 0x04, 0x80, 0x23, 0x0C, 0x00, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61BE, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x0B, 0x10, 0x00, 0x2B, 0xF8, 0x00, 0x2B, 0x08, 0x00, 0x29, 0x74, 0x80, 0x09, 0x52, 0x80, 0x09, 0x71, 0x80, 0x09, 0x00, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x48, 0x80, 0x0D, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61C0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0xC6, 0x00, 0x2B, 0xBB, 0x80, 0x2C, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x6B, 0x11, 0x00, 0x49, 0x55, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61C1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x29, 0x49, 0x00, 0x2D, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x6B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x50, 0x80, 0x08, 0x93, 0x00, 0x09, 0x8C, 0x00, 0x0A, 0xB3, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61C2, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x6A, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61C3, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x3F, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x4C, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61C6, { 0x00, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x2C, 0x7C, 0x00, 0x2A, 0x00, 0x00, 0x29, 0xEF, 0x00, 0x69, 0x29, 0x00, 0x49, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61C7, { 0x00, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x0D, 0x22, 0x00, 0x32, 0x3E, 0x00, 0x0E, 0x22, 0x00, 0x33, 0x3E, 0x00, 0x05, 0x28, 0x00, 0x09, 0x29, 0x00, 0x33, 0x26, 0x00, 0x05, 0x3C, 0x00, 0x09, 0xE2, 0x00, 0x36, 0x01, 0x80, 0x00, 0x80, 0x00, 0x04, 0x45, 0x00, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61C8, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x8F, 0x00, 0x09, 0xF5, 0x00, 0x09, 0x25, 0x00, 0x0E, 0x45, 0x00, 0x2D, 0xF9, 0x00, 0x29, 0x56, 0x00, 0x29, 0x52, 0x00, 0x09, 0xFA, 0x00, 0x09, 0x5F, 0x80, 0x09, 0x5A, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x1F, 0x80, 0x09, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x0C, 0x32, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61C9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x11, 0x28, 0x00, 0x12, 0x7F, 0x00, 0x16, 0x48, 0x00, 0x1A, 0xFF, 0x00, 0x13, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x80, 0x12, 0xC0, 0x00, 0x10, 0x41, 0x00, 0x25, 0x20, 0x80, 0x25, 0x02, 0x80, 0x29, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61CA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x1D, 0x00, 0x0D, 0x71, 0x00, 0x2B, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x39, 0x00, 0x09, 0x55, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61CB, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x3E, 0x2F, 0x80, 0x0B, 0xFA, 0x00, 0x1C, 0x56, 0x00, 0x1A, 0xC7, 0x00, 0x29, 0x4A, 0x80, 0x2A, 0x52, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x00, 0x40, 0x00, 0x02, 0x22, 0x00, 0x12, 0x01, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61CC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x2D, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x68, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61CD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x2A, 0xBA, 0x00, 0x6A, 0xAA, 0x00, 0x48, 0xBA, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x01, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x0B, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61CE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2D, 0x55, 0x00, 0x6A, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xBD, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61CF, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x88, 0x00, 0x2D, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x3C, 0x80, 0x09, 0x00, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61D0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x59, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x10, 0xCC, 0x80, 0x11, 0x85, 0x00, 0x16, 0x86, 0x00, 0x10, 0xF3, 0x00, 0x13, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61D1, { 0x00, 0x00, 0x00, 0x20, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x43, 0xFE, 0x00, 0x30, 0x88, 0x00, 0x17, 0xFE, 0x00, 0x0A, 0x8A, 0x00, 0x13, 0x56, 0x00, 0x72, 0x22, 0x00, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, 0x15, 0x04, 0x00, 0x14, 0xC2, 0x00, 0x24, 0x49, 0x00, 0x44, 0x09, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61D2, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xEE, 0x00, 0x11, 0x12, 0x00, 0x57, 0xE4, 0x00, 0x55, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x55, 0x55, 0x00, 0x17, 0xD5, 0x00, 0x11, 0x15, 0x00, 0x13, 0x95, 0x00, 0x15, 0x55, 0x00, 0x19, 0x15, 0x00, 0x11, 0x04, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61D4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x2E, 0x8A, 0x00, 0x2A, 0xFA, 0x00, 0x2A, 0x8A, 0x00, 0x4B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61D5, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x2F, 0x8A, 0x00, 0x20, 0x09, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x2F, 0x9C, 0x00, 0x28, 0x94, 0x00, 0x6F, 0x96, 0x00, 0x48, 0xB2, 0x00, 0x49, 0xA3, 0x00, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61DC, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xC7, 0x80, 0x10, 0x44, 0x00, 0x51, 0xFF, 0x00, 0x51, 0x29, 0x00, 0x59, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x12, 0x20, 0x80, 0x12, 0x7E, 0x80, 0x10, 0xC4, 0x00, 0x11, 0xAC, 0x00, 0x10, 0x18, 0x00, 0x10, 0x30, 0x00, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61DD, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x5F, 0x00, 0x13, 0x81, 0x00, 0x12, 0x12, 0x00, 0x52, 0x4C, 0x00, 0x59, 0xC4, 0x00, 0x56, 0xBF, 0x80, 0x53, 0xC4, 0x80, 0x52, 0x85, 0x00, 0x14, 0x94, 0x00, 0x13, 0xD7, 0x00, 0x10, 0x94, 0x00, 0x11, 0x54, 0x00, 0x11, 0x3C, 0x00, 0x12, 0x16, 0x00, 0x12, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61DE, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x00, 0x80, 0x2D, 0x7E, 0x80, 0x6A, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x51, 0x80, 0x09, 0xAB, 0x00, 0x08, 0x48, 0x00, 0x09, 0x9C, 0x00, 0x08, 0x6A, 0x00, 0x09, 0x89, 0x80, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61DF, { 0x00, 0x00, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0xC2, 0x00, 0x1A, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xDA, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x3F, 0xCE, 0x00, 0x00, 0x40, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61E1, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x42, 0x00, 0x5A, 0xCA, 0x80, 0x57, 0x6A, 0x80, 0x52, 0x52, 0x80, 0x12, 0x00, 0x00, 0x12, 0x24, 0x00, 0x12, 0x4C, 0x00, 0x16, 0xD9, 0x00, 0x14, 0x31, 0x00, 0x14, 0x67, 0x00, 0x11, 0xFD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61E2, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xF4, 0x00, 0x12, 0x84, 0x00, 0x13, 0xEF, 0x80, 0x52, 0x28, 0x00, 0x5A, 0x38, 0x00, 0x57, 0xE7, 0x00, 0x52, 0x80, 0x00, 0x53, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61E3, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x60, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0x55, 0x00, 0x19, 0xBB, 0x00, 0x31, 0x11, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, 0x12, 0xC3, 0x00, 0x12, 0x65, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61E5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x52, 0x00, 0x80, 0x58, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x50, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x41, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x90, 0x80, 0x10, 0x9E, 0x00, 0x11, 0xF0, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61E6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x2B, 0x10, 0x80, 0x29, 0xD7, 0x00, 0x28, 0x10, 0x00, 0x09, 0xD7, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61E7, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x20, 0x80, 0x52, 0x50, 0x80, 0x59, 0x45, 0x00, 0x56, 0x7C, 0x80, 0x54, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61E9, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x50, 0xFE, 0x00, 0x58, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x92, 0x00, 0x51, 0xFF, 0x00, 0x12, 0x82, 0x80, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x80, 0x10, 0x89, 0x00, 0x10, 0xE6, 0x00, 0x11, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61EC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x27, 0xFE, 0x00, 0x21, 0x08, 0x00, 0x20, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x64, 0x44, 0x00, 0x47, 0xFC, 0x00, 0x5C, 0x07, 0x00, 0x02, 0xC0, 0x00, 0x12, 0x65, 0x00, 0x33, 0x0D, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61ED, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x2D, 0x7F, 0x00, 0x2B, 0x22, 0x00, 0x29, 0x3E, 0x00, 0x69, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61EF, { 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xB2, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x8E, 0x00, 0x08, 0x04, 0x00, 0x3F, 0x8E, 0x00, 0x08, 0x0A, 0x00, 0x0F, 0x1B, 0x00, 0x19, 0x31, 0x80, 0x33, 0x00, 0x00, 0x02, 0x43, 0x00, 0x32, 0x25, 0x80, 0x61, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61F2, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x09, 0x52, 0x00, 0x11, 0x52, 0x00, 0x25, 0xF7, 0x80, 0x05, 0x15, 0x00, 0x08, 0x0D, 0x00, 0x19, 0xF5, 0x00, 0x28, 0x42, 0x00, 0x09, 0xF6, 0x00, 0x08, 0x45, 0x00, 0x09, 0xF8, 0x80, 0x00, 0x80, 0x00, 0x04, 0x41, 0x00, 0x14, 0x40, 0x80, 0x14, 0x04, 0x80, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61F4, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x85, 0x00, 0x13, 0xE5, 0x80, 0x50, 0x84, 0x80, 0x58, 0x84, 0x00, 0x57, 0xFF, 0x80, 0x51, 0x44, 0x00, 0x17, 0x75, 0x00, 0x11, 0x45, 0x00, 0x17, 0x75, 0x00, 0x11, 0x47, 0x00, 0x17, 0x72, 0x00, 0x11, 0x46, 0x00, 0x11, 0xF6, 0x80, 0x17, 0x0B, 0x80, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61F5, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x11, 0xFC, 0x00, 0x59, 0x54, 0x00, 0x55, 0xFC, 0x00, 0x50, 0x00, 0x00, 0x57, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x19, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61F6, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x44, 0x80, 0x0B, 0xF4, 0x80, 0x2C, 0x48, 0x80, 0x2B, 0xF3, 0x00, 0x29, 0x50, 0x00, 0x09, 0x57, 0x80, 0x09, 0x54, 0x80, 0x09, 0xF7, 0x80, 0x08, 0x44, 0x80, 0x08, 0xE7, 0x80, 0x08, 0xD4, 0x80, 0x09, 0x47, 0x80, 0x09, 0x42, 0x80, 0x0A, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61F7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0xA5, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x29, 0xD7, 0x00, 0x08, 0x10, 0x00, 0x09, 0xD7, 0x00, 0x08, 0x28, 0x80, 0x08, 0x69, 0x00, 0x08, 0xA6, 0x00, 0x0B, 0x22, 0x00, 0x08, 0x3D, 0x00, 0x09, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61F8, { 0x00, 0x00, 0x00, 0x0F, 0x88, 0x00, 0x28, 0x88, 0x00, 0x2F, 0xD2, 0x00, 0x28, 0xA2, 0x00, 0x2F, 0x94, 0x00, 0x2F, 0x89, 0x00, 0x20, 0x17, 0x00, 0x3F, 0xB8, 0x80, 0x24, 0x0A, 0x00, 0x15, 0x29, 0x00, 0x14, 0xC8, 0x80, 0x21, 0x00, 0x00, 0x04, 0x82, 0x00, 0x14, 0x85, 0x00, 0x14, 0x05, 0x00, 0x27, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61FA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x29, 0x00, 0x0A, 0xA8, 0x00, 0x0C, 0x58, 0x00, 0x2C, 0x88, 0x00, 0x2F, 0xFF, 0x80, 0x29, 0x48, 0x00, 0x0B, 0x69, 0x00, 0x09, 0x49, 0x00, 0x0B, 0x6A, 0x00, 0x09, 0x4C, 0x00, 0x09, 0xF4, 0x00, 0x0F, 0x0A, 0x80, 0x08, 0x11, 0x80, 0x08, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61FC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xE7, 0x00, 0x08, 0xA5, 0x00, 0x0A, 0xE7, 0x00, 0x0A, 0xA5, 0x00, 0x2A, 0xE7, 0x00, 0x28, 0x28, 0x00, 0x28, 0x48, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61FD, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x29, 0xEF, 0x00, 0x29, 0x29, 0x00, 0x2D, 0xEF, 0x00, 0x6A, 0x44, 0x00, 0x48, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x88, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x61FE, { 0x00, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x50, 0x84, 0x00, 0x58, 0xFC, 0x00, 0x54, 0x87, 0x00, 0x53, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x17, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x13, 0xCF, 0x00, 0x12, 0x49, 0x00, 0x13, 0xCF, 0x00, 0x12, 0x49, 0x00, 0x17, 0xDF, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x61FF, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x3F, 0xA8, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xD5, 0x00, 0x00, 0x24, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x94, 0x00, 0x1F, 0x6A, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x60, 0x80, 0x11, 0x10, 0x00, 0x1F, 0x28, 0x00, 0x12, 0x61, 0x00, 0x0B, 0xA2, 0x80, 0x3C, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6200, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x08, 0x04, 0x00, 0x33, 0xF9, 0x00, 0x14, 0x1A, 0x00, 0x1A, 0xE5, 0x00, 0x3E, 0x1F, 0x80, 0x08, 0xE2, 0x00, 0x2A, 0x0A, 0x80, 0x2A, 0xEA, 0x80, 0x08, 0xE2, 0x00, 0x01, 0x00, 0x00, 0x02, 0x82, 0x00, 0x12, 0x01, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6201, { 0x00, 0x00, 0x00, 0x11, 0x09, 0x00, 0x7F, 0xCB, 0x00, 0x11, 0x1F, 0x80, 0x3F, 0xB2, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x9F, 0x80, 0x04, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0x92, 0x00, 0x0A, 0x12, 0x00, 0x1B, 0x1F, 0x80, 0x71, 0xC0, 0x00, 0x02, 0x43, 0x00, 0x32, 0x25, 0x80, 0x61, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6203, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x82, 0x80, 0x52, 0xFE, 0x80, 0x58, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x93, 0x00, 0x11, 0x55, 0x00, 0x11, 0x39, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x49, 0x00, 0x12, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6204, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x51, 0xEF, 0x00, 0x59, 0x29, 0x00, 0x55, 0xFF, 0x80, 0x57, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x10, 0x78, 0x00, 0x17, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6206, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7F, 0xBF, 0x00, 0x0A, 0x54, 0x00, 0x7F, 0x88, 0x00, 0x11, 0x77, 0x00, 0x1F, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x1F, 0x22, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x14, 0x00, 0x05, 0x22, 0x00, 0x28, 0xC2, 0x00, 0x28, 0x49, 0x00, 0x48, 0x09, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6207, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x3F, 0x00, 0x0A, 0x62, 0x00, 0x3F, 0x9C, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0xC8, 0x00, 0x1F, 0x7F, 0x80, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x01, 0x12, 0x00, 0x14, 0xA1, 0x00, 0x24, 0x04, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6208, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x80, 0x03, 0x10, 0x80, 0x0C, 0x0C, 0x80, 0x30, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6209, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x46, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0x66, 0x00, 0x10, 0x24, 0x00, 0x10, 0x2C, 0x00, 0x10, 0x38, 0x00, 0x13, 0x10, 0x00, 0x1E, 0x38, 0x80, 0x70, 0x6D, 0x80, 0x01, 0xC7, 0x00, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x620A, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x42, 0x00, 0x10, 0x44, 0x00, 0x10, 0x48, 0x00, 0x10, 0x30, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x20, 0x88, 0x80, 0x23, 0x04, 0x80, 0x2C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x620B, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x24, 0x00, 0x02, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x7F, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x22, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x620C, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x42, 0x00, 0x1F, 0x64, 0x00, 0x10, 0x28, 0x00, 0x10, 0x30, 0x00, 0x10, 0x30, 0x00, 0x10, 0x48, 0x00, 0x10, 0x84, 0x80, 0x23, 0x02, 0x80, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x620D, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x14, 0x12, 0x00, 0x12, 0x12, 0x00, 0x11, 0x14, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x10, 0x14, 0x00, 0x10, 0x24, 0x80, 0x20, 0xC2, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x620E, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0x18, 0x00, 0x04, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x80, 0x10, 0x82, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x620F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x24, 0x00, 0x01, 0x20, 0x00, 0x21, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x04, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x09, 0x28, 0x00, 0x11, 0x10, 0x00, 0x20, 0x30, 0x00, 0x40, 0x49, 0x00, 0x00, 0x85, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6210, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xA4, 0x00, 0x10, 0x98, 0x00, 0x10, 0x90, 0x00, 0x17, 0x28, 0x80, 0x10, 0x44, 0x80, 0x21, 0x82, 0x80, 0x26, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6211, { 0x00, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x03, 0x12, 0x00, 0x0D, 0x11, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x80, 0x01, 0x11, 0x00, 0x01, 0x71, 0x00, 0x07, 0x92, 0x00, 0x39, 0x0A, 0x00, 0x01, 0x0C, 0x80, 0x01, 0x0C, 0x80, 0x01, 0x12, 0x80, 0x07, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6212, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x09, 0x22, 0x00, 0x3F, 0xE4, 0x00, 0x09, 0x24, 0x00, 0x09, 0x18, 0x00, 0x09, 0x10, 0x00, 0x09, 0x18, 0x00, 0x11, 0x24, 0x80, 0x11, 0x42, 0x80, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6213, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x26, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x33, 0x00, 0x21, 0x12, 0x00, 0x21, 0x16, 0x00, 0x21, 0x1C, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x1C, 0x80, 0x00, 0x76, 0x80, 0x01, 0xC3, 0x80, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6214, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x61, 0x00, 0x03, 0x9B, 0x00, 0x3C, 0x06, 0x00, 0x02, 0x20, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x80, 0x03, 0x99, 0x80, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6215, { 0x00, 0x00, 0x00, 0x04, 0x16, 0x00, 0x24, 0x13, 0x00, 0x24, 0x11, 0x00, 0x24, 0x10, 0x00, 0x24, 0x1F, 0x80, 0x3D, 0xF0, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x7C, 0x13, 0x00, 0x24, 0x16, 0x00, 0x24, 0x1C, 0x00, 0x24, 0x08, 0x00, 0x24, 0x1C, 0x00, 0x24, 0x36, 0x80, 0x44, 0x63, 0x80, 0x05, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6216, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x14, 0x00, 0x00, 0xC8, 0x00, 0x07, 0x18, 0x00, 0x38, 0x24, 0x80, 0x00, 0xC2, 0x80, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6217, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x28, 0x00, 0x0A, 0x24, 0x00, 0x09, 0xA4, 0x00, 0x10, 0xA0, 0x00, 0x20, 0x3F, 0x00, 0x5F, 0xE0, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x15, 0x14, 0x00, 0x12, 0x14, 0x00, 0x10, 0x08, 0x00, 0x11, 0x09, 0x00, 0x11, 0x15, 0x00, 0x0F, 0x25, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6218, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xA4, 0x00, 0x08, 0x3F, 0x00, 0x09, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x21, 0x24, 0x00, 0x21, 0x14, 0x00, 0x21, 0x18, 0x00, 0x21, 0x10, 0x00, 0x21, 0x28, 0x00, 0x3F, 0x49, 0x00, 0x20, 0x85, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x621A, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0xD1, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xEA, 0x00, 0x11, 0x0A, 0x00, 0x15, 0x4C, 0x00, 0x15, 0x24, 0x00, 0x19, 0x0C, 0x80, 0x21, 0x12, 0x80, 0x23, 0x21, 0x80, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x621B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x90, 0x00, 0x00, 0x60, 0x80, 0x03, 0x99, 0x80, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x621C, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x26, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x33, 0x00, 0x00, 0x12, 0x00, 0x7F, 0x96, 0x00, 0x08, 0x1C, 0x00, 0x3F, 0x88, 0x00, 0x08, 0x1C, 0x80, 0x0F, 0xB6, 0x80, 0x78, 0x63, 0x80, 0x01, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x621D, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3E, 0x13, 0x00, 0x22, 0x11, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x1F, 0x80, 0x22, 0xF0, 0x00, 0x22, 0x11, 0x00, 0x22, 0x19, 0x00, 0x3E, 0x0B, 0x00, 0x22, 0x0A, 0x00, 0x22, 0x0E, 0x00, 0x22, 0x04, 0x00, 0x3E, 0x0E, 0x00, 0x14, 0x1A, 0x80, 0x36, 0x33, 0x80, 0x62, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x621E, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x20, 0x80, 0x41, 0x10, 0x80, 0x1F, 0xFE, 0x00, 0x01, 0x08, 0x00, 0x00, 0xB1, 0x00, 0x03, 0xE3, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x621F, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x11, 0x80, 0x3F, 0x9E, 0x00, 0x20, 0xF0, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x91, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x14, 0x80, 0x04, 0x62, 0x80, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6220, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x0B, 0x00, 0x7F, 0x89, 0x00, 0x21, 0x08, 0x00, 0x33, 0x0F, 0x80, 0x12, 0x78, 0x00, 0x7F, 0x88, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x0B, 0x00, 0x21, 0x0A, 0x00, 0x21, 0x0E, 0x00, 0x3F, 0x04, 0x00, 0x21, 0x0E, 0x00, 0x21, 0x1A, 0x80, 0x3F, 0x33, 0x80, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6221, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xC8, 0x00, 0x09, 0x7F, 0x80, 0x0F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x09, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xEA, 0x00, 0x15, 0x0A, 0x00, 0x15, 0x44, 0x00, 0x19, 0xCC, 0x80, 0x10, 0x12, 0x80, 0x1F, 0xE1, 0x80, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6222, { 0x00, 0x00, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x0B, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xCF, 0x80, 0x11, 0x38, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x0B, 0x00, 0x11, 0x0A, 0x00, 0x1F, 0x0E, 0x00, 0x11, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x1F, 0x1A, 0x80, 0x71, 0x33, 0x80, 0x01, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6223, { 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x3E, 0x8B, 0x00, 0x4A, 0x29, 0x00, 0x3B, 0x48, 0x00, 0x11, 0x0F, 0x80, 0x31, 0xB8, 0x00, 0x60, 0xC8, 0x00, 0x1F, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0B, 0x00, 0x3F, 0x8E, 0x00, 0x08, 0x04, 0x00, 0x0E, 0x0E, 0x80, 0x1B, 0x1A, 0x80, 0x31, 0x33, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6224, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xD4, 0x00, 0x10, 0x92, 0x00, 0x11, 0x12, 0x00, 0x1E, 0x90, 0x00, 0x2A, 0xFF, 0x00, 0x24, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x41, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x99, 0x00, 0x7F, 0xE5, 0x00, 0x00, 0x45, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6225, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x3F, 0xD4, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x15, 0x10, 0x00, 0x1F, 0x92, 0x00, 0x24, 0x12, 0x00, 0x5F, 0x14, 0x00, 0x04, 0x08, 0x00, 0x07, 0x99, 0x00, 0x7C, 0x25, 0x00, 0x20, 0x45, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6226, { 0x00, 0x00, 0x00, 0x48, 0x4A, 0x00, 0x6C, 0xCB, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x8F, 0x80, 0x24, 0xF8, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8B, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xCE, 0x00, 0x04, 0x1A, 0x80, 0x04, 0x33, 0x80, 0x04, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6227, { 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x0E, 0x0B, 0x00, 0x1B, 0x09, 0x00, 0x31, 0x88, 0x00, 0x6E, 0xCF, 0x80, 0x00, 0x38, 0x00, 0x1F, 0x89, 0x00, 0x10, 0x89, 0x00, 0x1F, 0x8B, 0x00, 0x10, 0x8A, 0x00, 0x1F, 0x8E, 0x00, 0x10, 0x04, 0x00, 0x3F, 0x8E, 0x80, 0x28, 0x8A, 0x80, 0x68, 0x9B, 0x80, 0x0F, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6229, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x7F, 0xCB, 0x00, 0x21, 0x09, 0x00, 0x21, 0x0F, 0x80, 0x42, 0x38, 0x00, 0x52, 0x88, 0x00, 0x6B, 0x49, 0x00, 0x00, 0x09, 0x00, 0x7F, 0xCB, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x8E, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x8E, 0x80, 0x20, 0x8A, 0x80, 0x20, 0x9B, 0x80, 0x3F, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x622A, { 0x00, 0x00, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x09, 0x00, 0x1F, 0xE8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x05, 0x08, 0x80, 0x0F, 0xE8, 0x80, 0x19, 0x09, 0x00, 0x2F, 0xEA, 0x00, 0x09, 0x06, 0x00, 0x0F, 0xE4, 0x00, 0x09, 0x0C, 0x80, 0x0F, 0xF2, 0x80, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x622B, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x08, 0x04, 0x80, 0x7F, 0x04, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x22, 0xF4, 0x80, 0x22, 0x94, 0x80, 0x7E, 0x95, 0x80, 0x22, 0x95, 0x00, 0x22, 0xF7, 0x00, 0x3E, 0x02, 0x00, 0x22, 0xF6, 0x00, 0x22, 0x0A, 0x80, 0x22, 0x3B, 0x80, 0x2E, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x622C, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x94, 0x00, 0x0A, 0x12, 0x00, 0x2A, 0x92, 0x00, 0x1B, 0x10, 0x00, 0x0A, 0x7F, 0x00, 0x7F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x19, 0x00, 0x11, 0x25, 0x00, 0x1F, 0x45, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x622E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xCA, 0x00, 0x15, 0x49, 0x00, 0x26, 0xC8, 0x00, 0x0D, 0x4B, 0x80, 0x16, 0x7C, 0x00, 0x2C, 0xC8, 0x00, 0x02, 0x08, 0x00, 0x05, 0x08, 0x80, 0x0A, 0xC9, 0x00, 0x34, 0xBA, 0x00, 0x09, 0x0C, 0x00, 0x36, 0x48, 0x00, 0x19, 0x94, 0x80, 0x06, 0x62, 0x80, 0x39, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x622F, { 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x07, 0x89, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xC9, 0x80, 0x24, 0x4F, 0x00, 0x27, 0x38, 0x00, 0x3C, 0x49, 0x00, 0x27, 0xC9, 0x00, 0x20, 0x0B, 0x00, 0x25, 0x0A, 0x00, 0x35, 0x4E, 0x00, 0x2D, 0x84, 0x00, 0x25, 0x0E, 0x00, 0x25, 0x0A, 0x80, 0x47, 0xDB, 0x80, 0x1C, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6230, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3B, 0x94, 0x00, 0x2A, 0x92, 0x00, 0x3B, 0x90, 0x00, 0x00, 0x13, 0x80, 0x3F, 0x9C, 0x00, 0x24, 0xF0, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x8A, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0xC8, 0x00, 0x04, 0x14, 0x80, 0x04, 0x62, 0x80, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6231, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0xE5, 0x00, 0x01, 0x04, 0x80, 0x1F, 0xF4, 0x00, 0x11, 0x14, 0x00, 0x11, 0xE7, 0x80, 0x1F, 0x3C, 0x00, 0x11, 0xE4, 0x80, 0x10, 0x04, 0x80, 0x11, 0x45, 0x00, 0x15, 0x55, 0x00, 0x15, 0x56, 0x00, 0x17, 0x72, 0x00, 0x25, 0x56, 0x80, 0x21, 0x49, 0x80, 0x27, 0xF0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6232, { 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x07, 0xCB, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x4F, 0x80, 0x3F, 0xB8, 0x00, 0x24, 0x49, 0x00, 0x23, 0xC9, 0x00, 0x20, 0x0B, 0x00, 0x3F, 0xCA, 0x00, 0x20, 0x0E, 0x00, 0x2F, 0x84, 0x00, 0x28, 0x8E, 0x00, 0x2F, 0x8A, 0x80, 0x45, 0x1B, 0x80, 0x1F, 0xD1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6233, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x7B, 0xCB, 0x00, 0x29, 0x49, 0x00, 0x5A, 0xC8, 0x00, 0x29, 0x4F, 0x80, 0x4A, 0x78, 0x00, 0x11, 0x09, 0x00, 0x12, 0x09, 0x00, 0x3F, 0xCB, 0x00, 0x64, 0x0A, 0x00, 0x3F, 0x8E, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x8E, 0x00, 0x24, 0x0A, 0x80, 0x3F, 0xDB, 0x80, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6234, { 0x00, 0x00, 0x00, 0x02, 0x14, 0x00, 0x1F, 0xD2, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x1F, 0xD1, 0x00, 0x12, 0x51, 0x00, 0x1F, 0xD1, 0x00, 0x12, 0x52, 0x00, 0x1F, 0xCA, 0x00, 0x08, 0x8A, 0x00, 0x3F, 0xEC, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xEA, 0x80, 0x08, 0x92, 0x80, 0x10, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6236, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6237, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6238, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6239, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x38, 0x00, 0x30, 0xE0, 0x00, 0x23, 0x80, 0x00, 0x66, 0x00, 0x80, 0x04, 0x01, 0x80, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x623B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0xE0, 0x00, 0x30, 0xB0, 0x00, 0x21, 0x98, 0x00, 0x63, 0x0E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x623D, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0x88, 0x00, 0x10, 0xC8, 0x00, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x20, 0x0F, 0x80, 0x60, 0xF8, 0x00, 0x0F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x623E, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x10, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x23, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x623F, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x11, 0x01, 0x00, 0x12, 0x02, 0x00, 0x2C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6240, { 0x00, 0x00, 0x00, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xA0, 0x00, 0x10, 0xBF, 0x80, 0x10, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x1F, 0xA2, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x42, 0x00, 0x20, 0x42, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6241, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x18, 0x88, 0x80, 0x18, 0x88, 0x80, 0x1F, 0xFF, 0x80, 0x18, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6242, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x40, 0x00, 0x30, 0x40, 0x00, 0x27, 0xFE, 0x00, 0x64, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6243, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x15, 0xFD, 0x00, 0x35, 0x05, 0x00, 0x25, 0x05, 0x00, 0x65, 0xFD, 0x00, 0x04, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6244, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x80, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x35, 0xFD, 0x00, 0x25, 0x05, 0x00, 0x65, 0xFD, 0x00, 0x04, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6246, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0xA0, 0x00, 0x23, 0xB3, 0x00, 0x2E, 0x16, 0x00, 0x62, 0x18, 0x00, 0x03, 0xCE, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6247, { 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x45, 0x00, 0x12, 0x49, 0x00, 0x14, 0xD3, 0x00, 0x29, 0x65, 0x00, 0x22, 0x49, 0x00, 0x24, 0xD3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6248, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0xF8, 0x00, 0x09, 0x08, 0x00, 0x09, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x14, 0x42, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x00, 0x80, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6249, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x1F, 0x9F, 0x80, 0x10, 0x90, 0x00, 0x17, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x13, 0x9F, 0x80, 0x1C, 0x90, 0x00, 0x21, 0x10, 0x00, 0x26, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x624B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x624C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x624D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x22, 0x00, 0x00, 0x24, 0x00, 0x00, 0x28, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0xA0, 0x00, 0x06, 0x20, 0x00, 0x38, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x624E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x78, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6250, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0E, 0x11, 0x00, 0x78, 0x31, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x63, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x39, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6251, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x16, 0x00, 0x0F, 0x13, 0x00, 0x78, 0x11, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6252, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0x83, 0x00, 0x11, 0x01, 0x00, 0x73, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6253, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6254, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x23, 0x80, 0x08, 0x20, 0x80, 0x0E, 0x20, 0x80, 0x78, 0x60, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0xC0, 0x80, 0x08, 0x81, 0x80, 0x09, 0x81, 0x00, 0x3B, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6255, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x60, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0E, 0x40, 0x00, 0x78, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x83, 0x00, 0x08, 0x81, 0x00, 0x08, 0x9F, 0x00, 0x09, 0xF1, 0x80, 0x3B, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6256, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x3B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6258, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF0, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x17, 0x80, 0x0D, 0xF8, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x625A, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0xC1, 0x00, 0x08, 0x81, 0x00, 0x09, 0x81, 0x00, 0x08, 0x01, 0x00, 0x0E, 0x01, 0x00, 0x78, 0x79, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x38, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x625B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x625C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x08, 0x00, 0x78, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x625E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x08, 0x00, 0x78, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6260, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xA2, 0x00, 0x7E, 0x92, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x44, 0x00, 0x08, 0x6C, 0x00, 0x0E, 0x28, 0x00, 0x78, 0x38, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x3B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6263, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x0E, 0x81, 0x00, 0x78, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6264, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x78, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, 0x09, 0x8C, 0x80, 0x3B, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6266, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x20, 0x00, 0x68, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x28, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6267, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x48, 0x00, 0x7F, 0xFC, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0C, 0x48, 0x00, 0x18, 0xC8, 0x00, 0x68, 0x48, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA9, 0x00, 0x08, 0x89, 0x00, 0x09, 0x09, 0x00, 0x2A, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6268, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x7C, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0xA2, 0x00, 0x10, 0xE2, 0x00, 0x1C, 0x62, 0x00, 0x70, 0x72, 0x00, 0x10, 0x5A, 0x00, 0x10, 0x4E, 0x00, 0x10, 0xC7, 0x00, 0x10, 0x85, 0x80, 0x11, 0x84, 0x00, 0x33, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6269, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x19, 0x00, 0x00, 0x69, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x626A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x02, 0x00, 0x08, 0xBF, 0x00, 0x09, 0x42, 0x00, 0x7F, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x19, 0x02, 0x00, 0x69, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x29, 0x0A, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x626B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0xFE, 0x00, 0x18, 0x02, 0x00, 0x68, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x28, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x626C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x52, 0x00, 0x18, 0x52, 0x00, 0x68, 0x52, 0x00, 0x08, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x42, 0x00, 0x28, 0x94, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x626D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x22, 0x00, 0x78, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x626E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x84, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x09, 0xFE, 0x00, 0x0E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x1A, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x626F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x78, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6270, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x30, 0x00, 0x18, 0x50, 0x00, 0x68, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x29, 0x0F, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6271, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4F, 0x00, 0x0B, 0x41, 0x00, 0x0C, 0x42, 0x00, 0x38, 0xA2, 0x00, 0x08, 0x94, 0x00, 0x08, 0x8C, 0x00, 0x09, 0x0C, 0x00, 0x09, 0x12, 0x00, 0x09, 0x21, 0x00, 0x1A, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6273, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA3, 0x00, 0x0E, 0xB2, 0x00, 0x78, 0x96, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x88, 0x00, 0x09, 0x9C, 0x00, 0x09, 0x16, 0x00, 0x0B, 0x33, 0x00, 0x38, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6276, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x14, 0x00, 0x38, 0x14, 0x00, 0x08, 0x24, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x00, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6279, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x89, 0x80, 0x08, 0xEE, 0x00, 0x08, 0x88, 0x00, 0x0B, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x38, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, 0x08, 0xF8, 0x80, 0x0B, 0x8F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x627A, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x88, 0x00, 0x78, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x08, 0x82, 0x80, 0x08, 0xF3, 0x80, 0x3B, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x627C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x22, 0x00, 0x0B, 0x22, 0x00, 0x0D, 0x22, 0x00, 0x39, 0x2E, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x80, 0x0A, 0x20, 0x80, 0x0A, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x627D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x13, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x7C, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0x11, 0x00, 0x71, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x80, 0x10, 0x19, 0x80, 0x30, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x627E, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x13, 0x00, 0x08, 0x11, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x11, 0x00, 0x08, 0x13, 0x00, 0x0E, 0x16, 0x00, 0x78, 0x1C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x34, 0x00, 0x08, 0x66, 0x80, 0x09, 0xC3, 0x80, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x627F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x48, 0x80, 0x3F, 0xFB, 0x00, 0x02, 0x4C, 0x00, 0x02, 0x48, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0B, 0xFC, 0x00, 0x08, 0x42, 0x00, 0x10, 0x42, 0x00, 0x20, 0x41, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6280, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x0B, 0x41, 0x00, 0x0C, 0x42, 0x00, 0x38, 0x22, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0xC2, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6282, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6283, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x16, 0x00, 0x0E, 0x13, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6284, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x4A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x09, 0x08, 0x80, 0x08, 0x08, 0x00, 0x0E, 0x09, 0x00, 0x38, 0x09, 0x00, 0x08, 0x3A, 0x00, 0x08, 0x02, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x30, 0x00, 0x18, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6289, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x0B, 0x12, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x628A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x40, 0x00, 0x38, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x628D, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x72, 0x00, 0x09, 0xC2, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x78, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x39, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x628E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x32, 0x00, 0x08, 0x22, 0x00, 0x08, 0x23, 0x00, 0x08, 0x61, 0x00, 0x08, 0x4F, 0x00, 0x38, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x628F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x0E, 0x24, 0x00, 0x78, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x39, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6290, { 0x00, 0x00, 0x00, 0x10, 0x70, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x39, 0x00, 0x1D, 0x29, 0x00, 0x71, 0x6D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6291, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0xDF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x38, 0x88, 0x80, 0x08, 0xF8, 0x80, 0x0B, 0x88, 0x80, 0x08, 0x0B, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6292, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x01, 0x00, 0x14, 0x22, 0x00, 0x3F, 0x14, 0x00, 0x24, 0x08, 0x00, 0x25, 0xFF, 0x80, 0x04, 0x09, 0x00, 0x05, 0x8A, 0x00, 0x0E, 0x08, 0x00, 0x34, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6293, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x3C, 0x00, 0x11, 0xE4, 0x00, 0x11, 0x04, 0x00, 0x7D, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1D, 0x24, 0x00, 0x71, 0x26, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x13, 0x23, 0x00, 0x12, 0x21, 0x00, 0x36, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6294, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x30, 0x00, 0x10, 0x20, 0x00, 0x10, 0x64, 0x00, 0x10, 0x66, 0x00, 0x1C, 0xE2, 0x00, 0x71, 0xA3, 0x00, 0x13, 0x21, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6295, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0xC2, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6296, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x62, 0x00, 0x08, 0x32, 0x00, 0x08, 0x12, 0x00, 0x7F, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x62, 0x00, 0x08, 0x32, 0x00, 0x0F, 0x12, 0x00, 0x78, 0x02, 0x00, 0x08, 0x03, 0x80, 0x08, 0x1E, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6297, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x38, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6298, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x78, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x629A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x20, 0x00, 0x18, 0x20, 0x00, 0x68, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x90, 0x00, 0x08, 0x91, 0x00, 0x09, 0x11, 0x00, 0x2A, 0x0F, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x629B, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3E, 0x9F, 0x00, 0x08, 0x85, 0x00, 0x09, 0xE5, 0x00, 0x08, 0xA5, 0x00, 0x0A, 0xA5, 0x00, 0x0C, 0xA5, 0x00, 0x38, 0xA9, 0x00, 0x09, 0xA9, 0x00, 0x09, 0x31, 0x00, 0x09, 0x36, 0x00, 0x0A, 0x20, 0x80, 0x0A, 0x20, 0x80, 0x1C, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x629C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x70, 0xE6, 0x00, 0x10, 0xA4, 0x00, 0x11, 0xBC, 0x00, 0x13, 0x18, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x66, 0x00, 0x31, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x629E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x7C, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x70, 0x88, 0x00, 0x10, 0x8C, 0x00, 0x10, 0x84, 0x00, 0x11, 0x86, 0x00, 0x11, 0x02, 0x00, 0x13, 0x03, 0x00, 0x36, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x629F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x18, 0xFC, 0x00, 0x68, 0x04, 0x00, 0x09, 0x88, 0x00, 0x08, 0x68, 0x00, 0x08, 0x10, 0x00, 0x28, 0x08, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A0, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x09, 0x84, 0x00, 0x7F, 0x44, 0x00, 0x09, 0x28, 0x00, 0x0B, 0x28, 0x00, 0x0D, 0x10, 0x00, 0x19, 0x10, 0x00, 0x69, 0x28, 0x00, 0x09, 0x4C, 0x00, 0x09, 0x84, 0x00, 0x09, 0x00, 0x00, 0x09, 0x02, 0x00, 0x29, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x84, 0x00, 0x09, 0x07, 0x00, 0x0E, 0x82, 0x00, 0x18, 0x88, 0x00, 0x68, 0x98, 0x00, 0x08, 0xE0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x28, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x07, 0x00, 0x0A, 0xFA, 0x00, 0x0C, 0x88, 0x00, 0x18, 0x88, 0x00, 0x68, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x28, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A4, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x30, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x02, 0x00, 0x09, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x69, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A5, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7E, 0x94, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x80, 0x00, 0x0C, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x68, 0xC8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xC7, 0x00, 0x28, 0x82, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A6, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x39, 0x00, 0x1D, 0x29, 0x00, 0x71, 0x6D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62A8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x52, 0x00, 0x7C, 0xD3, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x70, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62AB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x89, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA1, 0x00, 0x0E, 0xA2, 0x00, 0x38, 0x92, 0x00, 0x08, 0x94, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8C, 0x00, 0x09, 0x14, 0x00, 0x09, 0x22, 0x00, 0x1A, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62AC, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x60, 0x00, 0x08, 0x42, 0x00, 0x7E, 0xC2, 0x00, 0x08, 0x9F, 0x00, 0x09, 0xF1, 0x80, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62B1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x81, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x79, 0x00, 0x08, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x79, 0x00, 0x08, 0x41, 0x00, 0x08, 0x46, 0x00, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62B3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x20, 0x00, 0x1D, 0x23, 0x00, 0x71, 0x2E, 0x00, 0x11, 0x38, 0x00, 0x11, 0x20, 0x00, 0x13, 0x20, 0x00, 0x12, 0x20, 0x80, 0x16, 0x31, 0x80, 0x30, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62B5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0E, 0x88, 0x00, 0x38, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xB8, 0x00, 0x0B, 0xC4, 0x80, 0x08, 0x02, 0x80, 0x08, 0xFD, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62B6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0xFF, 0x00, 0x7D, 0x90, 0x00, 0x11, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x2C, 0x00, 0x10, 0x64, 0x00, 0x10, 0x46, 0x00, 0x10, 0xC3, 0x00, 0x31, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62B7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x18, 0x00, 0x08, 0x10, 0x00, 0x08, 0x34, 0x00, 0x08, 0x76, 0x00, 0x0E, 0xD3, 0x00, 0x79, 0x91, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62B9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x38, 0x00, 0x08, 0x58, 0x00, 0x08, 0x54, 0x00, 0x08, 0x94, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x11, 0x00, 0x18, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62BA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x54, 0x00, 0x70, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62BB, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x71, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62BC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62BD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x18, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62BE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x70, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x62, 0x00, 0x10, 0x42, 0x00, 0x10, 0x5F, 0x00, 0x10, 0xF1, 0x00, 0x31, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62BF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0xB6, 0x80, 0x08, 0xE3, 0x80, 0x3B, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C2, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0B, 0xFF, 0x00, 0x0D, 0x48, 0x00, 0x1A, 0x48, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x08, 0x88, 0x80, 0x08, 0x8B, 0x00, 0x09, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C4, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C6, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1C, 0xB8, 0x00, 0x70, 0x8F, 0x00, 0x10, 0x89, 0x80, 0x10, 0x88, 0x00, 0x11, 0x88, 0x00, 0x11, 0x08, 0x00, 0x13, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x51, 0x00, 0x08, 0x49, 0x00, 0x08, 0x45, 0x00, 0x08, 0x41, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x82, 0x00, 0x38, 0xA2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x82, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x18, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62C9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x0B, 0x44, 0x00, 0x0C, 0x24, 0x00, 0x38, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62CA, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x7C, 0xBF, 0x80, 0x11, 0x82, 0x00, 0x12, 0x82, 0x00, 0x10, 0x92, 0x00, 0x1C, 0x9A, 0x00, 0x70, 0x8A, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62CC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x3E, 0x10, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62CD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x0F, 0x7F, 0x80, 0x38, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62CE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x27, 0x00, 0x10, 0x20, 0x00, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62CF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0xA1, 0x00, 0x11, 0x22, 0x00, 0x11, 0x14, 0x00, 0x2A, 0x08, 0x00, 0x06, 0x16, 0x00, 0x09, 0x21, 0x80, 0x30, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x09, 0x90, 0x00, 0x0E, 0x10, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x21, 0x00, 0x08, 0x41, 0x00, 0x19, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D1, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x30, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0B, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x38, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0xC1, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D4, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0B, 0x34, 0x00, 0x0C, 0x54, 0x00, 0x38, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x92, 0x00, 0x09, 0x21, 0x00, 0x1A, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62D5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x20, 0x00, 0x08, 0x23, 0x00, 0x0E, 0x2E, 0x00, 0x78, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x4B, 0x00, 0x0A, 0x5D, 0x00, 0x0C, 0x69, 0x00, 0x3B, 0xC9, 0x00, 0x08, 0x49, 0x00, 0x08, 0x4B, 0x00, 0x08, 0x48, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D7, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x3E, 0x9F, 0x80, 0x09, 0x04, 0x80, 0x09, 0x24, 0x80, 0x0A, 0x24, 0x80, 0x09, 0x44, 0x80, 0x0C, 0xC4, 0x80, 0x38, 0xA4, 0x80, 0x09, 0x14, 0x80, 0x0A, 0x74, 0x80, 0x0F, 0x98, 0x80, 0x08, 0x08, 0x80, 0x08, 0x10, 0x80, 0x18, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x80, 0x80, 0x09, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x08, 0x7C, 0x80, 0x0B, 0x44, 0x80, 0x0C, 0x44, 0x80, 0x38, 0x7C, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62D9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x18, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62DA, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x9F, 0x00, 0x7D, 0xF5, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1D, 0xFF, 0x80, 0x70, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x11, 0x84, 0x00, 0x33, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62DB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x21, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x4C, 0x00, 0x0D, 0x80, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62DC, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x3C, 0x7F, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x07, 0x84, 0x00, 0x3C, 0x04, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62DD, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62DF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x44, 0x00, 0x09, 0x24, 0x00, 0x7F, 0x34, 0x00, 0x09, 0x14, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x19, 0x04, 0x00, 0x69, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x44, 0x00, 0x09, 0x8A, 0x00, 0x09, 0x11, 0x00, 0x28, 0x21, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E0, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x1E, 0x00, 0x13, 0xD2, 0x00, 0x12, 0x52, 0x00, 0x7A, 0x52, 0x00, 0x16, 0x52, 0x00, 0x14, 0xD2, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x1B, 0x92, 0x00, 0x71, 0x12, 0x80, 0x11, 0x12, 0x80, 0x13, 0xA1, 0x80, 0x12, 0xC0, 0x00, 0x16, 0x70, 0x00, 0x34, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62E1, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x1D, 0x30, 0x00, 0x71, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x23, 0x00, 0x11, 0x61, 0x00, 0x13, 0x41, 0x00, 0x12, 0x4F, 0x80, 0x36, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62E2, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x42, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0x50, 0x00, 0x18, 0x92, 0x00, 0x68, 0x92, 0x00, 0x08, 0x94, 0x00, 0x09, 0x19, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x31, 0x00, 0x2A, 0x4F, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x90, 0x00, 0x0F, 0x12, 0x00, 0x19, 0xFF, 0x00, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x2A, 0x51, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E5, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x32, 0x22, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x58, 0x2A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x52, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x19, 0xFE, 0x00, 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x2F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E7, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x0A, 0x02, 0x00, 0x08, 0x00, 0x00, 0x0D, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x50, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x09, 0x24, 0x00, 0x09, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x08, 0x84, 0x00, 0x18, 0xC8, 0x00, 0x69, 0x28, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x44, 0x00, 0x28, 0x87, 0x00, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62E9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x88, 0x00, 0x0D, 0x27, 0x00, 0x1A, 0xFA, 0x00, 0x68, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x28, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62EA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x1D, 0x24, 0x80, 0x71, 0x44, 0x80, 0x11, 0x83, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62EC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x78, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62ED, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x3E, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x0D, 0xF8, 0x00, 0x38, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x0B, 0x82, 0x80, 0x08, 0x01, 0x80, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62EE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62EF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x11, 0x00, 0x0B, 0xDA, 0x00, 0x08, 0x5C, 0x00, 0x0E, 0x54, 0x00, 0x38, 0x94, 0x00, 0x08, 0x92, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x11, 0x00, 0x08, 0x30, 0x80, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62F1, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x0B, 0x24, 0x00, 0x0C, 0x24, 0x00, 0x39, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x00, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62F2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x76, 0x00, 0x77, 0xC3, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62F3, { 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0xA1, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x0C, 0x7A, 0x00, 0x37, 0xC1, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62F4, { 0x00, 0x00, 0x00, 0x10, 0xF0, 0x00, 0x10, 0x18, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x00, 0x13, 0x01, 0x80, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62F5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xDF, 0x00, 0x10, 0x82, 0x00, 0x1D, 0x84, 0x00, 0x72, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x30, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62F6, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x80, 0x11, 0x99, 0x80, 0x11, 0x11, 0x00, 0x13, 0x33, 0x00, 0x7D, 0x99, 0x80, 0x10, 0x88, 0x80, 0x10, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x1C, 0x61, 0x00, 0x70, 0xC3, 0x00, 0x11, 0xA2, 0x00, 0x10, 0x16, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x70, 0x00, 0x31, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62F7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x80, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x14, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0A, 0xFF, 0x80, 0x0D, 0x40, 0x00, 0x3A, 0x7F, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x01, 0x00, 0x08, 0x02, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62FC, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x08, 0x63, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x39, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62FD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x10, 0x00, 0x10, 0x11, 0x00, 0x10, 0x1B, 0x00, 0x10, 0x0E, 0x00, 0x10, 0x38, 0x80, 0x10, 0xEE, 0x80, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x62FE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x81, 0x00, 0x09, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x62FF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x07, 0xFC, 0x00, 0x38, 0x03, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6301, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x38, 0x04, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6302, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6303, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x7C, 0xC2, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6304, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x52, 0x00, 0x7E, 0x52, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x24, 0x00, 0x78, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x39, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6307, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x47, 0x80, 0x3E, 0x78, 0x00, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6308, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xBF, 0x00, 0x7C, 0x09, 0x00, 0x07, 0x89, 0x00, 0x3C, 0x19, 0x00, 0x04, 0x11, 0x00, 0x07, 0xB1, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x60, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6309, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x22, 0x00, 0x38, 0x42, 0x00, 0x08, 0x44, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x18, 0x00, 0x08, 0x14, 0x00, 0x08, 0x62, 0x00, 0x19, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x630A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x13, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x630B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x0E, 0x81, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x630C, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7D, 0xC6, 0x00, 0x13, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x1C, 0xC6, 0x00, 0x73, 0x83, 0x80, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x630D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x78, 0x36, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x38, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x630E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x7C, 0x50, 0x00, 0x08, 0x88, 0x00, 0x0D, 0x07, 0x00, 0x1A, 0xFA, 0x00, 0x68, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x28, 0x48, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6310, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x11, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x05, 0xBF, 0x00, 0x18, 0x00, 0x00, 0x60, 0x70, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6311, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x49, 0x00, 0x09, 0x4A, 0x00, 0x08, 0xCC, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0C, 0xC8, 0x00, 0x39, 0x4F, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6313, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7D, 0x06, 0x80, 0x10, 0x1C, 0x00, 0x10, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x80, 0x10, 0x19, 0x80, 0x30, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6316, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x7D, 0x49, 0x00, 0x10, 0xC8, 0x00, 0x11, 0x8F, 0x00, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x70, 0x00, 0x10, 0xC0, 0x00, 0x11, 0x80, 0x80, 0x11, 0x81, 0x80, 0x30, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6318, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x52, 0x00, 0x10, 0xD3, 0x00, 0x11, 0x91, 0x80, 0x7C, 0x12, 0x00, 0x10, 0x36, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x70, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x10, 0x31, 0x00, 0x10, 0x23, 0x00, 0x10, 0x62, 0x00, 0x31, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6319, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x19, 0x86, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x73, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x631A, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x7E, 0x00, 0x04, 0x24, 0x00, 0x07, 0x64, 0x00, 0x7C, 0x34, 0x00, 0x24, 0x45, 0x00, 0x0C, 0x9B, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x631B, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x1A, 0x26, 0x00, 0x22, 0x3A, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x631D, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x09, 0x04, 0x00, 0x7C, 0x7F, 0x00, 0x08, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x24, 0x00, 0x19, 0x14, 0x00, 0x69, 0x14, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x14, 0x00, 0x0A, 0x8B, 0x00, 0x2C, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x631E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x0B, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x18, 0x94, 0x00, 0x68, 0x94, 0x00, 0x08, 0xA3, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x09, 0x43, 0x00, 0x2A, 0x3E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x631F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6320, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x0B, 0xC0, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x19, 0x00, 0x08, 0x69, 0x00, 0x0F, 0x87, 0x00, 0x18, 0x04, 0x00, 0x6B, 0xFE, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x29, 0x0F, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6321, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x08, 0xA6, 0x00, 0x7E, 0xA8, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x02, 0x00, 0x18, 0x02, 0x00, 0x68, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x2B, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6322, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1E, 0x00, 0x0B, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x42, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x88, 0x00, 0x0D, 0x04, 0x00, 0x1A, 0x8B, 0x00, 0x6C, 0x8A, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x29, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6323, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFC, 0x00, 0x09, 0x08, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFC, 0x00, 0x0A, 0x24, 0x00, 0x0C, 0x24, 0x00, 0x1B, 0xFF, 0x00, 0x68, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x24, 0x00, 0x08, 0x20, 0x00, 0x28, 0xA0, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6324, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0xD8, 0x00, 0x1B, 0x07, 0x00, 0x68, 0x8A, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x29, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6325, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x24, 0x00, 0x7D, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x90, 0x00, 0x0D, 0x14, 0x00, 0x19, 0xFE, 0x00, 0x68, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6327, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xDF, 0x00, 0x10, 0x41, 0x00, 0x10, 0xC3, 0x00, 0x7D, 0x45, 0x00, 0x13, 0x4D, 0x00, 0x16, 0x59, 0x00, 0x10, 0x41, 0x00, 0x1C, 0xC3, 0x00, 0x71, 0x45, 0x00, 0x13, 0x4D, 0x00, 0x16, 0x59, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x31, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6328, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x7C, 0x9F, 0x00, 0x13, 0xF1, 0x80, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x1B, 0x10, 0x00, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6329, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x7F, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x0E, 0x81, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0x44, 0x80, 0x39, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x632A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xF7, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x7C, 0x94, 0x80, 0x13, 0xFD, 0x00, 0x10, 0x95, 0x00, 0x10, 0x95, 0x00, 0x1C, 0x94, 0x80, 0x73, 0xFC, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x11, 0x94, 0x80, 0x11, 0x35, 0x80, 0x13, 0x24, 0x00, 0x36, 0xE4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x632B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x55, 0x00, 0x0A, 0x38, 0x80, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x632D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x91, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xD0, 0x00, 0x08, 0x70, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6E, 0x00, 0x39, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x632F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0D, 0x48, 0x00, 0x39, 0x49, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x44, 0x00, 0x09, 0x44, 0x00, 0x09, 0x7A, 0x00, 0x0A, 0xC1, 0x00, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6332, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x04, 0xA8, 0x00, 0x20, 0xA6, 0x00, 0x13, 0x2A, 0x00, 0x04, 0x30, 0x00, 0x38, 0x60, 0x00, 0x11, 0x80, 0x00, 0x06, 0x78, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6335, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1C, 0x44, 0x00, 0x70, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x11, 0x84, 0x00, 0x33, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6336, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x80, 0x80, 0x78, 0xBC, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x09, 0xA4, 0x80, 0x09, 0x3D, 0x80, 0x0B, 0x01, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6339, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0x11, 0x00, 0x71, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x80, 0x11, 0x81, 0x80, 0x30, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x633A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xE3, 0x00, 0x08, 0x3C, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x84, 0x00, 0x09, 0xE4, 0x00, 0x08, 0x3F, 0x80, 0x0A, 0x24, 0x00, 0x0C, 0x24, 0x00, 0x3A, 0x24, 0x00, 0x09, 0x44, 0x00, 0x09, 0x5F, 0x80, 0x08, 0x80, 0x00, 0x08, 0xC0, 0x00, 0x09, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x633B, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, 0x09, 0xE6, 0x00, 0x08, 0x5C, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x94, 0x00, 0x09, 0xD7, 0x80, 0x0A, 0x54, 0x00, 0x0E, 0x54, 0x00, 0x38, 0x54, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x54, 0x00, 0x09, 0xFF, 0x80, 0x08, 0xC0, 0x00, 0x09, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x633C, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x12, 0x00, 0x7E, 0x5B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x90, 0x80, 0x08, 0x10, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x46, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x33, 0x00, 0x38, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x633D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x84, 0x00, 0x09, 0x08, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x91, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x80, 0x1B, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x633E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0A, 0xAA, 0x80, 0x0D, 0x2C, 0x80, 0x38, 0x08, 0x00, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x18, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x633F, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6341, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x10, 0x00, 0x12, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6342, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x1D, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x30, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6343, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x40, 0x00, 0x70, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x11, 0xC1, 0x00, 0x13, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6344, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x13, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x96, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x18, 0x00, 0x10, 0x5C, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6345, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x50, 0x00, 0x7C, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x16, 0x22, 0x00, 0x1B, 0xFE, 0x00, 0x72, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x52, 0x2A, 0x00, 0x22, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6346, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x11, 0x00, 0x11, 0x39, 0x00, 0x1D, 0x39, 0x00, 0x71, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6349, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x50, 0x00, 0x09, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x634A, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x13, 0xF4, 0x00, 0x10, 0xA6, 0x00, 0x7D, 0xB3, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x1C, 0x0C, 0x00, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x634B, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF2, 0x00, 0x10, 0x23, 0x00, 0x7C, 0xB1, 0x80, 0x11, 0x90, 0x80, 0x11, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1D, 0xFF, 0x80, 0x70, 0x02, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x62, 0x00, 0x10, 0x22, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x634C, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x09, 0xF1, 0x00, 0x09, 0x15, 0x00, 0x3F, 0x15, 0x00, 0x09, 0x15, 0x00, 0x09, 0xF5, 0x00, 0x09, 0x55, 0x00, 0x08, 0x45, 0x00, 0x0E, 0x45, 0x00, 0x39, 0xF5, 0x00, 0x08, 0x95, 0x00, 0x08, 0x95, 0x00, 0x08, 0x95, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x1A, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x634D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x634E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x11, 0x11, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x634F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6350, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x18, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6352, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x91, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6353, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF7, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x25, 0x00, 0x17, 0xF5, 0x00, 0x10, 0xA5, 0x00, 0x1C, 0xA4, 0x80, 0x70, 0xA4, 0x80, 0x11, 0xA4, 0x80, 0x11, 0x24, 0x80, 0x13, 0x24, 0x80, 0x16, 0x25, 0x80, 0x10, 0x24, 0x00, 0x30, 0xE4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6354, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7F, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x84, 0x00, 0x7C, 0xFF, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x70, 0x88, 0x80, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0x80, 0x80, 0x11, 0x80, 0x80, 0x11, 0x00, 0x80, 0x33, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6355, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x12, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x0B, 0x11, 0x00, 0x0D, 0xFF, 0x00, 0x39, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x13, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6357, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x7C, 0x90, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x1D, 0x93, 0x00, 0x73, 0x11, 0x80, 0x10, 0x12, 0x00, 0x10, 0x76, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x70, 0x00, 0x31, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6358, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x49, 0x00, 0x10, 0xC8, 0x00, 0x11, 0x8F, 0x80, 0x13, 0x40, 0x00, 0x1C, 0x7E, 0x00, 0x70, 0xC2, 0x00, 0x11, 0x86, 0x00, 0x13, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x635B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x30, 0x00, 0x78, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x39, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x635C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x4C, 0x00, 0x10, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x635E, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x7C, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0x42, 0x00, 0x19, 0xFC, 0x00, 0x68, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x28, 0x94, 0x00, 0x17, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x635F, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x18, 0x92, 0x00, 0x68, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x28, 0x00, 0x28, 0x46, 0x00, 0x11, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6361, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x07, 0x00, 0x0A, 0xFA, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x20, 0x00, 0x69, 0x24, 0x00, 0x08, 0xA6, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6362, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xF8, 0x00, 0x09, 0x10, 0x00, 0x7E, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x24, 0x00, 0x0F, 0x24, 0x00, 0x19, 0x24, 0x00, 0x69, 0x24, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x29, 0x07, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6363, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x7E, 0xA4, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x94, 0x00, 0x0C, 0x88, 0x00, 0x18, 0x80, 0x00, 0x68, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xF9, 0x00, 0x28, 0x05, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6365, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10, 0xEF, 0x00, 0x10, 0xA9, 0x00, 0x1D, 0xA9, 0x00, 0x71, 0x29, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x4B, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x88, 0x80, 0x11, 0x89, 0x80, 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6366, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6367, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x0D, 0x11, 0x00, 0x3A, 0x10, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6368, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x81, 0x00, 0x09, 0x00, 0x80, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6369, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x1D, 0x10, 0x00, 0x71, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x13, 0x38, 0x00, 0x12, 0x28, 0x00, 0x16, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x636B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x7E, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x1E, 0x00, 0x80, 0x72, 0x00, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x32, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x636C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x7D, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x7F, 0x80, 0x11, 0x42, 0x00, 0x1D, 0xD2, 0x00, 0x71, 0x5A, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x42, 0x00, 0x11, 0x42, 0x00, 0x11, 0x42, 0x00, 0x12, 0x42, 0x00, 0x30, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x636D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x21, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x48, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x636E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x88, 0x00, 0x38, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6371, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x1D, 0x00, 0x00, 0x71, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x12, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6372, { 0x00, 0x00, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x82, 0x00, 0x0D, 0x01, 0x00, 0x3A, 0xFC, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6374, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xD1, 0x80, 0x7E, 0x10, 0x00, 0x08, 0x32, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x0E, 0xE1, 0x80, 0x78, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x24, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x80, 0x09, 0xB2, 0x80, 0x39, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6375, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x49, 0x00, 0x71, 0x49, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x11, 0x83, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6376, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x92, 0x00, 0x70, 0x92, 0x00, 0x10, 0x92, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6377, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x0C, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x50, 0x00, 0x09, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6378, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x1D, 0x91, 0x80, 0x70, 0xDB, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x76, 0x00, 0x11, 0xD3, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x637A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x46, 0x00, 0x09, 0x81, 0x80, 0x0A, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x637B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x82, 0x00, 0x09, 0x01, 0x80, 0x0A, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x38, 0x04, 0x00, 0x08, 0x48, 0x00, 0x08, 0x21, 0x00, 0x08, 0x91, 0x00, 0x0A, 0x84, 0x80, 0x0A, 0xFC, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x637C, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x10, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x80, 0x1C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x84, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x2E, 0x00, 0x33, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x637D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0xEE, 0x00, 0x11, 0xAB, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x637F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x12, 0x00, 0x0E, 0xFE, 0x00, 0x38, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x09, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0xEC, 0x00, 0x1B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6380, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x13, 0x88, 0x00, 0x12, 0x0F, 0x80, 0x7E, 0x18, 0x80, 0x13, 0xF5, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x72, 0x44, 0x00, 0x12, 0x4E, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4B, 0x00, 0x14, 0x59, 0x00, 0x30, 0x51, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6382, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x7D, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x0F, 0x80, 0x11, 0x08, 0x00, 0x1D, 0x08, 0x00, 0x71, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x13, 0x41, 0x00, 0x12, 0x41, 0x00, 0x16, 0x41, 0x00, 0x10, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6383, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x10, 0x80, 0x38, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x96, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6384, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x80, 0x10, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x49, 0x00, 0x71, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x31, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6387, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x11, 0xAD, 0x00, 0x7C, 0x42, 0x00, 0x10, 0xA5, 0x00, 0x11, 0x08, 0x80, 0x10, 0x00, 0x00, 0x1D, 0xEF, 0x00, 0x70, 0x21, 0x00, 0x11, 0x21, 0x00, 0x10, 0xCA, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x2A, 0x00, 0x32, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6388, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x3E, 0x01, 0x00, 0x08, 0x49, 0x00, 0x08, 0x4A, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x0E, 0x00, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6389, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x638A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x638C, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x638E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x7C, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x02, 0x00, 0x70, 0xF2, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xF2, 0x00, 0x10, 0x02, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x638F, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x80, 0x13, 0x00, 0x80, 0x7C, 0x80, 0x80, 0x10, 0xFC, 0x80, 0x11, 0xA0, 0x80, 0x10, 0x20, 0x80, 0x1B, 0xFE, 0x80, 0x70, 0x20, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0xFD, 0x80, 0x10, 0x01, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6390, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x61, 0x00, 0x7E, 0x43, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x30, 0x00, 0x78, 0xE7, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xE7, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6392, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x27, 0xCF, 0x80, 0x10, 0x48, 0x00, 0x00, 0x48, 0x00, 0x03, 0xCF, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xCF, 0x80, 0x10, 0x48, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x21, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x12, 0x00, 0x21, 0x0A, 0x00, 0x3F, 0x0C, 0x00, 0x24, 0x36, 0x00, 0x3F, 0x83, 0x80, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6395, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x11, 0xA7, 0x80, 0x1C, 0x20, 0x00, 0x70, 0x7E, 0x00, 0x10, 0xC2, 0x00, 0x11, 0x86, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6396, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x1F, 0x00, 0x0B, 0x19, 0x00, 0x0D, 0x26, 0x00, 0x39, 0x52, 0x00, 0x09, 0x94, 0x00, 0x09, 0x08, 0x00, 0x09, 0x0C, 0x00, 0x09, 0x12, 0x00, 0x09, 0x21, 0x00, 0x19, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6398, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x08, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0B, 0x49, 0x00, 0x1D, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6399, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF2, 0x00, 0x10, 0x53, 0x00, 0x7C, 0x89, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x1B, 0xFF, 0x80, 0x70, 0x11, 0x00, 0x10, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x639A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xDD, 0x00, 0x1D, 0x55, 0x00, 0x71, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x639B, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xF2, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFB, 0x00, 0x0C, 0x42, 0x80, 0x38, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7A, 0x00, 0x0B, 0xC2, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x639E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x91, 0x00, 0x10, 0x93, 0x00, 0x11, 0xBA, 0x00, 0x7D, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x91, 0x00, 0x10, 0x93, 0x00, 0x11, 0xBA, 0x00, 0x11, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x639F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x90, 0x00, 0x70, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x11, 0xD0, 0x00, 0x11, 0x70, 0x00, 0x33, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63A0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x09, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63A1, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x79, 0x00, 0x08, 0x48, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x1A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x1B, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63A2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x3E, 0x24, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x38, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x1B, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63A3, { 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x1F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x24, 0x41, 0x00, 0x24, 0xC1, 0x00, 0x20, 0x37, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63A4, { 0x00, 0x00, 0x00, 0x11, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0xA6, 0x80, 0x11, 0x65, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x1D, 0xA6, 0x80, 0x71, 0x65, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x13, 0x24, 0x80, 0x12, 0x24, 0x80, 0x36, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63A5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x42, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x28, 0x00, 0x08, 0x18, 0x00, 0x08, 0x66, 0x00, 0x19, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63A6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x20, 0x00, 0x78, 0x7F, 0x80, 0x08, 0xCA, 0x80, 0x0B, 0x92, 0x80, 0x08, 0x24, 0x80, 0x08, 0xC9, 0x80, 0x08, 0x11, 0x00, 0x38, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63A7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x94, 0x80, 0x08, 0x14, 0x00, 0x08, 0x24, 0x80, 0x08, 0x47, 0x80, 0x0B, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63A8, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x88, 0x00, 0x3E, 0xFF, 0x00, 0x09, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x0E, 0x88, 0x00, 0x38, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63A9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x09, 0xFF, 0x00, 0x0F, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63AA, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x00, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63AB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x7D, 0x3F, 0x00, 0x11, 0xE9, 0x00, 0x11, 0x29, 0x00, 0x11, 0x2B, 0x00, 0x1D, 0x2A, 0x00, 0x71, 0xEE, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x2E, 0x00, 0x11, 0xEA, 0x00, 0x13, 0x33, 0x00, 0x30, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63AC, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x00, 0x80, 0x12, 0x20, 0x80, 0x11, 0x24, 0x80, 0x10, 0xA8, 0x80, 0x1B, 0xFE, 0x80, 0x70, 0x60, 0x80, 0x10, 0xF8, 0x80, 0x10, 0xAC, 0x80, 0x11, 0xA4, 0x80, 0x13, 0x21, 0x80, 0x10, 0x21, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63AD, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x10, 0xCC, 0x00, 0x1D, 0x86, 0x00, 0x73, 0x23, 0x80, 0x10, 0x20, 0x00, 0x11, 0x29, 0x00, 0x11, 0x2D, 0x80, 0x13, 0x24, 0x80, 0x12, 0x24, 0x80, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63AE, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x1D, 0x7F, 0x00, 0x71, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x16, 0x41, 0x00, 0x30, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63AF, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x4F, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x70, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x30, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x43, 0x00, 0x79, 0x5C, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x24, 0x00, 0x3C, 0x1F, 0x00, 0x0B, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x0F, 0x44, 0x00, 0x79, 0x7F, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x44, 0x00, 0x14, 0xC4, 0x00, 0x20, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B2, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1C, 0xFF, 0x80, 0x71, 0x80, 0x80, 0x17, 0x18, 0x80, 0x11, 0xF0, 0x80, 0x11, 0x00, 0x80, 0x11, 0x09, 0x80, 0x10, 0xF9, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B3, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x22, 0x00, 0x09, 0x38, 0x00, 0x0B, 0xE2, 0x00, 0x0D, 0x3E, 0x00, 0x19, 0x00, 0x00, 0x69, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x42, 0x00, 0x2A, 0x4A, 0x00, 0x14, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0xFD, 0x00, 0x7E, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0xFD, 0x00, 0x1E, 0x21, 0x00, 0x72, 0x29, 0x00, 0x12, 0x25, 0x00, 0x12, 0x21, 0x00, 0x12, 0xFD, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1D, 0xEF, 0x00, 0x71, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEB, 0x00, 0x10, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B7, { 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x12, 0xBE, 0x00, 0x10, 0x22, 0x00, 0x17, 0xE2, 0x00, 0x79, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x28, 0x00, 0x15, 0x24, 0x00, 0x1F, 0xE2, 0x00, 0x71, 0x21, 0x00, 0x11, 0x21, 0x00, 0x12, 0xB1, 0x00, 0x12, 0x6A, 0x00, 0x14, 0x24, 0x00, 0x58, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63B8, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x92, 0x00, 0x18, 0x92, 0x00, 0x68, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63BA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x09, 0xFC, 0x00, 0x7C, 0x40, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x0C, 0x88, 0x00, 0x19, 0x24, 0x00, 0x6A, 0x47, 0x00, 0x0C, 0x92, 0x00, 0x09, 0x20, 0x00, 0x08, 0x48, 0x00, 0x08, 0x90, 0x00, 0x28, 0x20, 0x00, 0x11, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63BB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x7C, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x10, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x11, 0x00, 0x10, 0x7F, 0x80, 0x33, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63BC, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x24, 0x00, 0x0B, 0xFF, 0x00, 0x7D, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0D, 0xFC, 0x00, 0x19, 0x04, 0x00, 0x69, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x58, 0x00, 0x28, 0x84, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63BD, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x66, 0x00, 0x10, 0x24, 0x00, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x11, 0x24, 0x80, 0x1D, 0x24, 0x80, 0x71, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63BE, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x11, 0xFC, 0x00, 0x7C, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0xA1, 0x00, 0x1B, 0x23, 0x00, 0x70, 0x56, 0x00, 0x10, 0x90, 0x00, 0x13, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x13, 0x11, 0x80, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63C0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0B, 0xAA, 0x80, 0x0C, 0x9C, 0x80, 0x38, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x19, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63C1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x78, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x39, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63C3, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x11, 0xE1, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x1D, 0xE9, 0x00, 0x71, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0xE9, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x31, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63C4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x28, 0x00, 0x3E, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xE5, 0x00, 0x0F, 0x25, 0x00, 0x39, 0xEA, 0x00, 0x09, 0x34, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x29, 0x00, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x1F, 0x7F, 0x80, 0x31, 0x12, 0x00, 0x51, 0x32, 0x00, 0x1F, 0x62, 0x00, 0x00, 0x18, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63C6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFA, 0x00, 0x09, 0x1C, 0x80, 0x08, 0xA5, 0x00, 0x3E, 0x42, 0x00, 0x09, 0x81, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x0B, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63C8, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x80, 0x13, 0x00, 0x80, 0x7C, 0xF8, 0x80, 0x10, 0x00, 0x80, 0x13, 0xFE, 0x80, 0x10, 0x00, 0x80, 0x1C, 0xF8, 0x80, 0x70, 0x00, 0x80, 0x10, 0xF8, 0x80, 0x10, 0x00, 0x80, 0x11, 0xFC, 0x80, 0x11, 0x05, 0x80, 0x11, 0xFD, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63C9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x29, 0x00, 0x10, 0x6A, 0x00, 0x10, 0xC8, 0x00, 0x1D, 0x88, 0x00, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63CD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x7D, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x88, 0x00, 0x19, 0x07, 0x00, 0x6E, 0xFA, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x58, 0x00, 0x28, 0x86, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63CE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7D, 0x7E, 0x80, 0x10, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63CF, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x18, 0x49, 0x00, 0x28, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63D0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x0E, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x09, 0x50, 0x00, 0x09, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63D1, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x11, 0xCF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7D, 0xCF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63D2, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0xD0, 0x00, 0x1D, 0x97, 0x00, 0x71, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xD7, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63D3, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x7A, 0x20, 0x00, 0x12, 0x64, 0x00, 0x13, 0x95, 0x80, 0x12, 0x96, 0x80, 0x1A, 0x9C, 0x80, 0x72, 0xB4, 0x80, 0x12, 0xD5, 0x80, 0x12, 0x94, 0x00, 0x16, 0x94, 0x00, 0x14, 0x90, 0x80, 0x14, 0x99, 0x80, 0x3D, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63D4, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x29, 0x00, 0x12, 0xC9, 0x00, 0x10, 0x71, 0x00, 0x10, 0x99, 0x00, 0x11, 0x2B, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x0E, 0x00, 0x10, 0x30, 0x00, 0x10, 0x98, 0x00, 0x12, 0x83, 0x00, 0x12, 0x85, 0x80, 0x16, 0x8C, 0x80, 0x34, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63D5, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x7C, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x73, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x47, 0x80, 0x11, 0x80, 0x00, 0x11, 0x00, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63D6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9F, 0x80, 0x0B, 0xE2, 0x00, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63DA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x40, 0x00, 0x0C, 0xFF, 0x80, 0x39, 0x11, 0x80, 0x0E, 0x22, 0x80, 0x08, 0x44, 0x80, 0x08, 0x88, 0x80, 0x0B, 0x31, 0x00, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63DB, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x84, 0x00, 0x09, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x0A, 0xA5, 0x00, 0x0C, 0xC7, 0x00, 0x38, 0x91, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63DC, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x31, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63DE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x52, 0x00, 0x0F, 0xFF, 0x00, 0x0A, 0x04, 0x00, 0x0D, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x69, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63E0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x1E, 0x10, 0x00, 0x72, 0xFF, 0x00, 0x12, 0x24, 0x00, 0x12, 0x6C, 0x00, 0x12, 0x18, 0x00, 0x12, 0xE7, 0x00, 0x12, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63E1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x20, 0x00, 0x09, 0x21, 0x00, 0x0F, 0x4F, 0x00, 0x39, 0xF8, 0x80, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63E3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x1C, 0x20, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x31, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63E5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x7C, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63E9, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x09, 0x80, 0x11, 0xEF, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x08, 0x00, 0x11, 0x08, 0x80, 0x11, 0xE7, 0x80, 0x13, 0x10, 0x00, 0x18, 0x20, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63EA, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0xE4, 0x00, 0x13, 0x84, 0x80, 0x10, 0x94, 0x80, 0x7C, 0x95, 0x80, 0x13, 0xF5, 0x00, 0x10, 0x95, 0x00, 0x10, 0x84, 0x00, 0x1D, 0xC4, 0x00, 0x71, 0xAE, 0x00, 0x11, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x14, 0x9B, 0x00, 0x10, 0x91, 0x00, 0x30, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63EC, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x10, 0x64, 0x00, 0x10, 0xC7, 0x80, 0x11, 0x80, 0x00, 0x1C, 0x14, 0x00, 0x70, 0x12, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x37, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63ED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0B, 0x40, 0x00, 0x0C, 0xFF, 0x80, 0x39, 0x88, 0x80, 0x0A, 0x94, 0x80, 0x08, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x81, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63EE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63F2, { 0x00, 0x00, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x9E, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63F3, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0xEF, 0x00, 0x13, 0x85, 0x00, 0x10, 0x85, 0x00, 0x7C, 0xE5, 0x00, 0x13, 0x85, 0x00, 0x10, 0x8D, 0x00, 0x10, 0xE9, 0x00, 0x1B, 0x9B, 0x00, 0x70, 0x80, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x10, 0xCC, 0x00, 0x11, 0x86, 0x00, 0x37, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63F4, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x79, 0x00, 0x08, 0x48, 0x80, 0x3E, 0x84, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x38, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x42, 0x00, 0x08, 0x64, 0x00, 0x08, 0x98, 0x00, 0x09, 0x36, 0x00, 0x1A, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63F5, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x17, 0xBF, 0x00, 0x10, 0x89, 0x00, 0x11, 0x09, 0x00, 0x7A, 0x7F, 0x80, 0x13, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0xBF, 0x00, 0x1A, 0x88, 0x00, 0x72, 0xBF, 0x00, 0x13, 0x88, 0x00, 0x11, 0x7F, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x12, 0x80, 0x00, 0x36, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x63F6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x09, 0xE5, 0x00, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0xE4, 0x80, 0x0B, 0x24, 0x80, 0x3D, 0x24, 0x80, 0x09, 0x7C, 0x80, 0x0B, 0xA4, 0x80, 0x08, 0x27, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63F7, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0x78, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x18, 0x00, 0x08, 0x6B, 0x00, 0x0A, 0x49, 0x00, 0x0C, 0x49, 0x00, 0x38, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63F8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x7C, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x01, 0x80, 0x1C, 0xFE, 0x00, 0x70, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63F9, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x13, 0xC9, 0x80, 0x10, 0x4F, 0x00, 0x7C, 0x48, 0x00, 0x11, 0xC8, 0x80, 0x16, 0x4C, 0x80, 0x10, 0x47, 0x80, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63FA, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x13, 0xF1, 0x00, 0x11, 0x23, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63FD, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4F, 0x00, 0x09, 0x54, 0x00, 0x7F, 0x62, 0x00, 0x09, 0x42, 0x00, 0x0A, 0x44, 0x00, 0x0D, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x69, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x34, 0x00, 0x09, 0x54, 0x00, 0x08, 0x51, 0x00, 0x28, 0x91, 0x00, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x63FF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xD2, 0x00, 0x7A, 0x1F, 0x00, 0x14, 0x22, 0x00, 0x1B, 0xD4, 0x00, 0x11, 0x10, 0x00, 0x19, 0x10, 0x00, 0x17, 0xD0, 0x00, 0x71, 0x10, 0x00, 0x11, 0x28, 0x00, 0x11, 0xA8, 0x00, 0x11, 0x44, 0x00, 0x50, 0x47, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6400, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0xF8, 0x00, 0x09, 0x10, 0x00, 0x7F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x0B, 0x24, 0x00, 0x0D, 0xFC, 0x00, 0x18, 0x50, 0x00, 0x68, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x0E, 0x60, 0x00, 0x08, 0x18, 0x00, 0x08, 0xC0, 0x00, 0x28, 0x30, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6401, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x7A, 0x00, 0x0A, 0x8A, 0x00, 0x0B, 0x52, 0x00, 0x0E, 0x22, 0x00, 0x1A, 0x52, 0x00, 0x6B, 0x8E, 0x00, 0x0A, 0xFA, 0x00, 0x0A, 0x8A, 0x00, 0x0A, 0x8A, 0x00, 0x0A, 0xFA, 0x00, 0x2A, 0x8A, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6402, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x0E, 0x22, 0x00, 0x18, 0x40, 0x00, 0x6B, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x08, 0xD8, 0x00, 0x08, 0x20, 0x00, 0x28, 0xD8, 0x00, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6405, { 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, 0x08, 0x92, 0x00, 0x08, 0x94, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x01, 0x00, 0x0A, 0x02, 0x00, 0x09, 0xFC, 0x00, 0x0D, 0x04, 0x00, 0x19, 0x24, 0x00, 0x69, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x51, 0x00, 0x28, 0x91, 0x00, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6406, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6409, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x20, 0x80, 0x7D, 0x62, 0x80, 0x10, 0x44, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x88, 0x00, 0x1A, 0x88, 0x00, 0x70, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x30, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x640A, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x91, 0x00, 0x13, 0x55, 0x00, 0x7C, 0x55, 0x00, 0x10, 0x7D, 0x00, 0x10, 0x23, 0x00, 0x10, 0x46, 0x00, 0x1C, 0x80, 0x00, 0x70, 0xFF, 0x00, 0x11, 0x91, 0x00, 0x13, 0x55, 0x00, 0x10, 0x55, 0x00, 0x10, 0x7D, 0x00, 0x10, 0x23, 0x00, 0x30, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x640B, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x3E, 0x00, 0x0B, 0xD0, 0x00, 0x0A, 0x1E, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0xFC, 0x00, 0x0E, 0x92, 0x00, 0x1A, 0x9E, 0x00, 0x6A, 0x80, 0x00, 0x0A, 0xBC, 0x00, 0x0A, 0xA4, 0x00, 0x0B, 0x25, 0x00, 0x2C, 0x45, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x640C, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x7F, 0xFE, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x48, 0x00, 0x0B, 0xFE, 0x00, 0x0D, 0x48, 0x00, 0x19, 0x4A, 0x00, 0x69, 0xFF, 0x00, 0x0A, 0xA0, 0x00, 0x0A, 0x94, 0x00, 0x0A, 0x88, 0x00, 0x2C, 0xC7, 0x00, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x640D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x81, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x81, 0x00, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x640F, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x12, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x11, 0x00, 0x0D, 0xFF, 0x00, 0x38, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6410, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x7C, 0x44, 0x00, 0x11, 0x89, 0x00, 0x10, 0xD1, 0x00, 0x10, 0x3F, 0x80, 0x1B, 0xE0, 0x80, 0x70, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6412, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x7C, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x21, 0x00, 0x1C, 0x20, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x11, 0x82, 0x00, 0x33, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6413, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x20, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x88, 0x00, 0x16, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6414, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x52, 0x00, 0x3E, 0xA4, 0x00, 0x08, 0x58, 0x00, 0x08, 0x16, 0x00, 0x08, 0x61, 0x80, 0x09, 0x90, 0x00, 0x0E, 0x10, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x12, 0x00, 0x08, 0x1F, 0x00, 0x09, 0xE0, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6416, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x62, 0x00, 0x3E, 0x94, 0x00, 0x09, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x0B, 0x40, 0x00, 0x0C, 0xFF, 0x00, 0x39, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6417, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x09, 0x80, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x48, 0x80, 0x0A, 0x48, 0x80, 0x0B, 0xF8, 0x80, 0x0A, 0x09, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6418, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x11, 0xFD, 0x80, 0x10, 0x23, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x30, 0x00, 0x10, 0xC7, 0x00, 0x13, 0x7C, 0x00, 0x10, 0x40, 0x80, 0x1C, 0x3F, 0x80, 0x70, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x30, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x641B, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x52, 0x00, 0x0B, 0xFF, 0x00, 0x7C, 0x50, 0x00, 0x08, 0x52, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x52, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x52, 0x00, 0x6B, 0xFE, 0x00, 0x08, 0xD8, 0x00, 0x09, 0x54, 0x00, 0x0A, 0x53, 0x00, 0x2C, 0x52, 0x00, 0x10, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x641C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x08, 0xCB, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xEB, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x08, 0x41, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x00, 0x08, 0x66, 0x00, 0x19, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x641E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x14, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x32, 0x00, 0x80, 0x52, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x00, 0x80, 0x32, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6420, { 0x00, 0x00, 0x00, 0x12, 0x20, 0x00, 0x13, 0x6F, 0x80, 0x11, 0x48, 0x80, 0x17, 0xF8, 0x80, 0x78, 0x88, 0x80, 0x10, 0x8F, 0x80, 0x12, 0xA8, 0x80, 0x12, 0xA8, 0x80, 0x1A, 0xA8, 0x80, 0x72, 0xAF, 0x80, 0x12, 0xA8, 0x80, 0x13, 0xE8, 0x80, 0x10, 0x88, 0x80, 0x11, 0x88, 0x80, 0x13, 0x08, 0x80, 0x36, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6421, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x70, 0x00, 0x7D, 0x8C, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x0D, 0x8C, 0x00, 0x1A, 0x52, 0x00, 0x68, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x24, 0x00, 0x2A, 0x23, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6422, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x99, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x80, 0x0A, 0x00, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6424, { 0x00, 0x00, 0x00, 0x10, 0x38, 0x00, 0x10, 0x8C, 0x00, 0x11, 0x86, 0x00, 0x13, 0x7B, 0x00, 0x7C, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x11, 0x06, 0x00, 0x13, 0x03, 0x00, 0x1A, 0x01, 0x80, 0x70, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x37, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6425, { 0x00, 0x00, 0x00, 0x13, 0x04, 0x00, 0x11, 0x88, 0x00, 0x10, 0xBF, 0x00, 0x13, 0x21, 0x00, 0x7D, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0x3F, 0x00, 0x13, 0xA0, 0x00, 0x1C, 0xA0, 0x00, 0x70, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x11, 0xBF, 0x00, 0x13, 0x40, 0x00, 0x36, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6426, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x20, 0x80, 0x7C, 0x20, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0xEF, 0x80, 0x1C, 0x61, 0x80, 0x71, 0xA6, 0x80, 0x13, 0x2C, 0x80, 0x10, 0xE3, 0x80, 0x11, 0xA6, 0x80, 0x13, 0x2C, 0x80, 0x10, 0x61, 0x80, 0x31, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6428, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x1C, 0x61, 0x80, 0x71, 0xA6, 0x80, 0x13, 0x2C, 0x80, 0x10, 0xE3, 0x80, 0x11, 0xA6, 0x80, 0x13, 0x2C, 0x80, 0x10, 0x20, 0x80, 0x30, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6429, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x11, 0x2F, 0x80, 0x13, 0xAA, 0x00, 0x7A, 0xEA, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xDF, 0x80, 0x11, 0x82, 0x00, 0x1B, 0x02, 0x00, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x642A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x7D, 0x7F, 0x00, 0x11, 0x09, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x09, 0x00, 0x1D, 0x09, 0x00, 0x71, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x13, 0x41, 0x00, 0x12, 0x41, 0x00, 0x16, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x642C, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x09, 0x0E, 0x00, 0x0B, 0xEA, 0x00, 0x3E, 0x2A, 0x00, 0x0A, 0xAA, 0x80, 0x0A, 0xAB, 0x80, 0x0A, 0xB0, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x3A, 0x29, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xA6, 0x00, 0x0A, 0xA4, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x29, 0x00, 0x1C, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x642D, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x54, 0x00, 0x18, 0x28, 0x00, 0x1C, 0x44, 0x00, 0x3A, 0x82, 0x00, 0x29, 0x01, 0x80, 0x2A, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x642F, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x24, 0x00, 0x7C, 0xB6, 0x00, 0x11, 0x93, 0x00, 0x11, 0x01, 0x00, 0x10, 0x60, 0x00, 0x1D, 0xCF, 0x00, 0x71, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6430, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x9E, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x1C, 0xFE, 0x00, 0x70, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6434, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1B, 0xF6, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6435, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x7C, 0xBA, 0x00, 0x10, 0xEE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6436, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x13, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x70, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x41, 0x00, 0x13, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x643A, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0xFF, 0x00, 0x3F, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x80, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x80, 0x80, 0x09, 0x00, 0x80, 0x1A, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x643D, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x14, 0xC6, 0x00, 0x1B, 0x93, 0x80, 0x30, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x643E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3F, 0x28, 0x80, 0x09, 0x49, 0x00, 0x08, 0x8F, 0x00, 0x09, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0E, 0x7F, 0x80, 0x38, 0x90, 0x00, 0x09, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x643F, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x80, 0x0C, 0x83, 0x00, 0x78, 0x8E, 0x00, 0x11, 0xC2, 0x00, 0x11, 0x42, 0x00, 0x7B, 0x6F, 0x80, 0x16, 0x32, 0x00, 0x15, 0xD2, 0x00, 0x10, 0x02, 0x00, 0x1D, 0xDF, 0x80, 0x71, 0x42, 0x00, 0x11, 0x42, 0x00, 0x11, 0x42, 0x00, 0x31, 0x42, 0x00, 0x21, 0xC2, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6441, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x09, 0x54, 0x00, 0x0B, 0x8C, 0x00, 0x0D, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x68, 0x00, 0x00, 0x08, 0xA0, 0x00, 0x0A, 0xA2, 0x00, 0x0A, 0x89, 0x00, 0x2C, 0x89, 0x00, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6442, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x02, 0x00, 0x70, 0x00, 0x00, 0x11, 0x83, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x00, 0x00, 0x10, 0x6C, 0x00, 0x11, 0xC7, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6444, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x7E, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x0A, 0x84, 0x00, 0x0D, 0xFF, 0x00, 0x18, 0x04, 0x00, 0x6B, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x09, 0x54, 0x00, 0x08, 0x88, 0x00, 0x09, 0x54, 0x00, 0x2A, 0x23, 0x00, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6445, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x7F, 0x22, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x0B, 0x20, 0x00, 0x0D, 0x22, 0x00, 0x19, 0x1E, 0x00, 0x69, 0x00, 0x00, 0x0A, 0x50, 0x00, 0x0D, 0x4A, 0x00, 0x09, 0x41, 0x00, 0x2A, 0x45, 0x00, 0x10, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6446, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x7F, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x28, 0x00, 0x0D, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x68, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x88, 0x00, 0x09, 0x04, 0x00, 0x2B, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6447, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1E, 0x00, 0x0B, 0xE0, 0x00, 0x09, 0x24, 0x00, 0x7E, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x0B, 0x00, 0x00, 0x0D, 0xFE, 0x00, 0x1A, 0x20, 0x00, 0x68, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x29, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6448, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x7E, 0x1A, 0x00, 0x08, 0xE0, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0xFC, 0x00, 0x18, 0x88, 0x00, 0x68, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0xC8, 0x00, 0x28, 0x86, 0x00, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x644A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x28, 0x00, 0x10, 0x22, 0x00, 0x17, 0x7F, 0x00, 0x79, 0xC8, 0x00, 0x15, 0x48, 0x00, 0x15, 0x7E, 0x00, 0x1D, 0x48, 0x00, 0x35, 0x48, 0x00, 0x52, 0x7E, 0x00, 0x15, 0x48, 0x00, 0x14, 0xC8, 0x00, 0x18, 0xCA, 0x00, 0x10, 0x7F, 0x00, 0x50, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x644B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x12, 0x27, 0x00, 0x11, 0x45, 0x00, 0x10, 0x85, 0x00, 0x7D, 0x45, 0x00, 0x12, 0x29, 0x80, 0x10, 0x80, 0x00, 0x10, 0xAF, 0x80, 0x1C, 0x84, 0x80, 0x73, 0xF5, 0x80, 0x10, 0x85, 0x00, 0x11, 0xC7, 0x00, 0x11, 0xA2, 0x00, 0x12, 0xA7, 0x00, 0x14, 0x8D, 0x00, 0x30, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x644E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xCF, 0x00, 0x11, 0x45, 0x00, 0x12, 0xCB, 0x00, 0x7D, 0x45, 0x00, 0x12, 0x49, 0x00, 0x10, 0x51, 0x00, 0x10, 0x38, 0x00, 0x1C, 0xEE, 0x00, 0x73, 0x83, 0x80, 0x10, 0x10, 0x00, 0x10, 0xE4, 0x00, 0x10, 0x19, 0x00, 0x10, 0xE2, 0x00, 0x10, 0x0C, 0x00, 0x30, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x644F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x7D, 0xFE, 0x00, 0x10, 0x50, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x19, 0x86, 0x00, 0x77, 0x63, 0x80, 0x11, 0xCE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xCE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6451, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x15, 0x00, 0x14, 0x13, 0x00, 0x7F, 0xFF, 0x00, 0x14, 0x11, 0x00, 0x15, 0xD1, 0x00, 0x15, 0x53, 0x00, 0x1D, 0xD5, 0x00, 0x74, 0x09, 0x00, 0x15, 0xD9, 0x00, 0x17, 0x2B, 0x00, 0x14, 0x45, 0x00, 0x14, 0x01, 0x00, 0x17, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6452, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0x21, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xEF, 0x80, 0x72, 0x42, 0x00, 0x12, 0x72, 0x00, 0x13, 0xCF, 0x80, 0x12, 0x42, 0x00, 0x12, 0xC2, 0x00, 0x14, 0x82, 0x00, 0x31, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6453, { 0x00, 0x00, 0x00, 0x12, 0x10, 0x00, 0x13, 0x1F, 0x00, 0x11, 0x21, 0x00, 0x12, 0x52, 0x00, 0x7F, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x10, 0x61, 0x80, 0x13, 0x08, 0x00, 0x1D, 0x3F, 0x00, 0x71, 0x08, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x80, 0x13, 0x08, 0x00, 0x12, 0x80, 0x00, 0x34, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6454, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7C, 0xA2, 0x00, 0x11, 0x29, 0x00, 0x10, 0x10, 0x00, 0x10, 0xA2, 0x00, 0x1D, 0x49, 0x00, 0x70, 0x74, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6458, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x41, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0E, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x18, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x645A, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x92, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x7C, 0x00, 0x70, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x645B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0xA5, 0x00, 0x08, 0x99, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x81, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x20, 0x80, 0x09, 0x24, 0x80, 0x09, 0x7A, 0x80, 0x09, 0x00, 0x80, 0x39, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x645C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x645D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1B, 0xFF, 0x00, 0x72, 0x00, 0x00, 0x12, 0x88, 0x00, 0x12, 0xEB, 0x00, 0x12, 0x8E, 0x00, 0x12, 0x88, 0x00, 0x14, 0xE8, 0x80, 0x31, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x645E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x7E, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x42, 0x00, 0x08, 0x88, 0x00, 0x0D, 0xF0, 0x00, 0x18, 0x20, 0x00, 0x68, 0x44, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x2A, 0x22, 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x645F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0xE4, 0x00, 0x10, 0x3E, 0x00, 0x33, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6460, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0xA1, 0x00, 0x08, 0xBD, 0x00, 0x08, 0xE5, 0x00, 0x08, 0x99, 0x00, 0x0A, 0x95, 0x00, 0x0C, 0xA3, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0x49, 0x00, 0x09, 0x48, 0x80, 0x0A, 0x42, 0x80, 0x0A, 0x7E, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6461, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x11, 0x8F, 0x00, 0x11, 0x0A, 0x00, 0x13, 0xCA, 0x00, 0x7E, 0x4A, 0x00, 0x13, 0xCA, 0x00, 0x12, 0x4A, 0x00, 0x13, 0xDF, 0x80, 0x1C, 0x02, 0x00, 0x72, 0x02, 0x00, 0x12, 0x66, 0x00, 0x13, 0xC6, 0x00, 0x12, 0x0A, 0x00, 0x13, 0x2A, 0x80, 0x11, 0xEA, 0x80, 0x30, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6463, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x1F, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x10, 0x80, 0x11, 0x1C, 0x00, 0x11, 0x71, 0x00, 0x11, 0x1F, 0x00, 0x1D, 0x00, 0x00, 0x71, 0x7E, 0x00, 0x11, 0x42, 0x00, 0x11, 0x7E, 0x00, 0x13, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x16, 0x42, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6467, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x48, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x1D, 0x88, 0x00, 0x72, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x30, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6469, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x24, 0x00, 0x10, 0x1C, 0x00, 0x13, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x646D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x7D, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x7F, 0x80, 0x11, 0x12, 0x00, 0x1D, 0x12, 0x00, 0x71, 0x12, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x00, 0x00, 0x13, 0x00, 0x00, 0x12, 0x55, 0x00, 0x16, 0xD5, 0x80, 0x30, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x646F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x3E, 0x00, 0x3F, 0x8A, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0x9A, 0x80, 0x04, 0x1A, 0x80, 0x1F, 0x21, 0x80, 0x04, 0x5C, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6473, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x7D, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x00, 0x00, 0x1D, 0x77, 0x00, 0x71, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x77, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6474, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6476, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x70, 0x12, 0x00, 0x10, 0x7F, 0x00, 0x13, 0xC1, 0x80, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x30, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6478, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x81, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6479, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x78, 0x00, 0x0B, 0xC6, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x647A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x3D, 0x29, 0x00, 0x0A, 0x73, 0x00, 0x08, 0xA5, 0x00, 0x0B, 0x39, 0x00, 0x08, 0x63, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x647B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x82, 0x00, 0x7D, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x1C, 0xC6, 0x00, 0x73, 0x93, 0x80, 0x10, 0x20, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x33, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x1C, 0x00, 0x31, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x647D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x70, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6482, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x7F, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x0A, 0x40, 0x00, 0x0C, 0xFC, 0x00, 0x19, 0x88, 0x00, 0x68, 0x70, 0x00, 0x09, 0x8C, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6483, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x24, 0xA3, 0x80, 0x3F, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x0C, 0x00, 0x7F, 0xD3, 0x80, 0x04, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6484, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0xD6, 0x00, 0x7E, 0xD6, 0x00, 0x0B, 0x1A, 0x00, 0x09, 0x8C, 0x00, 0x0A, 0x52, 0x00, 0x0C, 0x40, 0x00, 0x1B, 0xFF, 0x00, 0x68, 0x88, 0x00, 0x09, 0x08, 0x00, 0x08, 0x90, 0x00, 0x08, 0x70, 0x00, 0x28, 0xCC, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6485, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x13, 0x14, 0x00, 0x7E, 0xA4, 0x00, 0x13, 0xF7, 0x80, 0x12, 0x4C, 0x80, 0x12, 0x4A, 0x80, 0x1E, 0xD2, 0x00, 0x72, 0xD2, 0x00, 0x12, 0xF2, 0x00, 0x12, 0x47, 0x00, 0x12, 0x45, 0x00, 0x12, 0xC5, 0x00, 0x14, 0x8D, 0x80, 0x31, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6487, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x16, 0xB7, 0x80, 0x14, 0x9D, 0x00, 0x78, 0x89, 0x00, 0x17, 0xF5, 0x00, 0x14, 0x95, 0x00, 0x14, 0x95, 0x00, 0x1C, 0x95, 0x00, 0x75, 0xD7, 0x00, 0x16, 0xB2, 0x00, 0x14, 0x92, 0x00, 0x14, 0x97, 0x00, 0x14, 0x95, 0x00, 0x14, 0x95, 0x00, 0x34, 0x3D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6488, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xAA, 0x80, 0x0A, 0xCB, 0x00, 0x08, 0x82, 0x00, 0x3F, 0x45, 0x00, 0x0A, 0x28, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x41, 0x00, 0x08, 0x82, 0x00, 0x1B, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x648F, { 0x00, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x7D, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x00, 0x10, 0x89, 0x00, 0x1C, 0xE9, 0x00, 0x73, 0x8F, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6490, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x00, 0x80, 0x12, 0xFE, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x70, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x14, 0x00, 0x10, 0x64, 0x00, 0x13, 0x84, 0x00, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6491, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x0F, 0x00, 0x38, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6492, { 0x00, 0x00, 0x00, 0x09, 0x44, 0x00, 0x09, 0x44, 0x00, 0x09, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x15, 0x00, 0x0F, 0xE5, 0x00, 0x3A, 0x26, 0x00, 0x0B, 0xE2, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xE5, 0x00, 0x0A, 0x25, 0x00, 0x0A, 0x28, 0x80, 0x1A, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6493, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x74, 0x00, 0x3B, 0xBF, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x80, 0x1B, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6495, { 0x00, 0x00, 0x00, 0x12, 0x41, 0x00, 0x12, 0x43, 0x00, 0x17, 0xEE, 0x00, 0x12, 0x48, 0x00, 0x7A, 0x48, 0x00, 0x13, 0xCF, 0x80, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1B, 0xC9, 0x00, 0x72, 0x49, 0x00, 0x12, 0x49, 0x00, 0x17, 0xE9, 0x00, 0x10, 0x09, 0x00, 0x12, 0x49, 0x00, 0x12, 0x51, 0x00, 0x34, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6496, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0xC8, 0x00, 0x10, 0x92, 0x00, 0x7D, 0x1F, 0x00, 0x17, 0xE2, 0x00, 0x12, 0x52, 0x00, 0x13, 0xD4, 0x00, 0x16, 0x54, 0x00, 0x1B, 0xD4, 0x00, 0x72, 0x48, 0x00, 0x12, 0x68, 0x00, 0x1F, 0xD4, 0x00, 0x10, 0x54, 0x00, 0x50, 0x63, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6498, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x94, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x1C, 0xC6, 0x00, 0x73, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6499, { 0x00, 0x00, 0x00, 0x10, 0x9E, 0x00, 0x11, 0x01, 0x00, 0x12, 0xFE, 0x80, 0x10, 0x28, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xCF, 0x00, 0x11, 0x01, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x42, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x649A, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x85, 0x00, 0x09, 0xE4, 0x80, 0x3F, 0x24, 0x00, 0x0A, 0xBF, 0x80, 0x0E, 0x44, 0x00, 0x09, 0x8A, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0x11, 0x00, 0x3A, 0x20, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x49, 0x00, 0x09, 0x24, 0x80, 0x0A, 0x24, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x649B, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x92, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x13, 0x93, 0x80, 0x10, 0x90, 0x00, 0x1C, 0xE2, 0x00, 0x71, 0xAF, 0x80, 0x13, 0x2A, 0x00, 0x10, 0xEA, 0x00, 0x10, 0x5F, 0x80, 0x10, 0xC2, 0x00, 0x11, 0x82, 0x00, 0x33, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x649D, { 0x00, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x11, 0xFA, 0x00, 0x10, 0xA3, 0x00, 0x11, 0x11, 0x00, 0x7D, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x71, 0x01, 0x00, 0x11, 0xFF, 0x80, 0x13, 0x00, 0x80, 0x12, 0x0A, 0x80, 0x16, 0xAA, 0x80, 0x11, 0xA1, 0x80, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x649E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x28, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x0F, 0xFF, 0x00, 0x39, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x649F, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x10, 0xFE, 0x00, 0x13, 0x45, 0x80, 0x10, 0x7C, 0x00, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64A1, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x82, 0x00, 0x7D, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x1C, 0xC6, 0x00, 0x73, 0x83, 0x80, 0x10, 0x20, 0x00, 0x10, 0xA3, 0x00, 0x11, 0xA9, 0x80, 0x13, 0x2C, 0x80, 0x10, 0x24, 0x00, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64A3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7C, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1C, 0xFE, 0x00, 0x70, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64A4, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0B, 0xF4, 0x00, 0x3E, 0x8F, 0x80, 0x09, 0x29, 0x00, 0x0B, 0xF1, 0x00, 0x08, 0x11, 0x00, 0x0B, 0xFA, 0x00, 0x0E, 0x2A, 0x00, 0x3B, 0xEA, 0x00, 0x0A, 0x2A, 0x00, 0x0B, 0xE4, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x2A, 0x00, 0x0A, 0x29, 0x00, 0x1A, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64A5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFA, 0x00, 0x08, 0xAC, 0x80, 0x3E, 0x45, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x0B, 0xDE, 0x00, 0x08, 0x52, 0x80, 0x0F, 0xD3, 0x80, 0x3A, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x51, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x44, 0x00, 0x08, 0x9A, 0x00, 0x1B, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64A6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x13, 0xA3, 0x80, 0x10, 0x28, 0x00, 0x11, 0xFE, 0x00, 0x1C, 0x30, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xFE, 0x00, 0x13, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64A8, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x48, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x7D, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1C, 0xFF, 0x00, 0x70, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0xA9, 0x00, 0x11, 0xAD, 0x80, 0x31, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64A9, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7D, 0x45, 0x00, 0x10, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x12, 0x82, 0x80, 0x1C, 0xFE, 0x00, 0x70, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64AB, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0xAA, 0x00, 0x38, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0x25, 0x00, 0x09, 0x25, 0x00, 0x19, 0x25, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64AC, { 0x00, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x7C, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x21, 0x00, 0x10, 0x1F, 0x00, 0x1C, 0xC2, 0x00, 0x73, 0x9C, 0x00, 0x11, 0x04, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xDF, 0x00, 0x11, 0x24, 0x80, 0x30, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64AD, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x92, 0x00, 0x0D, 0x11, 0x80, 0x3A, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64AE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0D, 0x20, 0x00, 0x39, 0xFF, 0x80, 0x09, 0x29, 0x00, 0x09, 0xEA, 0x00, 0x09, 0x24, 0x00, 0x09, 0xE6, 0x00, 0x0E, 0x29, 0x00, 0x18, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64B0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x3F, 0xEF, 0x00, 0x09, 0x08, 0x00, 0x09, 0x18, 0x80, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x19, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64B2, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x09, 0x29, 0x00, 0x08, 0xAA, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x1B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64B3, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x11, 0xC8, 0x00, 0x11, 0x68, 0x00, 0x13, 0x2F, 0x80, 0x7C, 0x18, 0x80, 0x13, 0xE5, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1B, 0xE4, 0x00, 0x70, 0x84, 0x00, 0x12, 0xAE, 0x00, 0x12, 0xAA, 0x00, 0x12, 0x8A, 0x00, 0x10, 0xEB, 0x00, 0x17, 0x89, 0x00, 0x30, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64B5, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x88, 0x00, 0x7F, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x11, 0x57, 0x00, 0x1E, 0x42, 0x00, 0x33, 0xFC, 0x00, 0x50, 0x80, 0x00, 0x11, 0x20, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x50, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64B7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x02, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x08, 0x00, 0x7F, 0xD2, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x22, 0x00, 0x0B, 0xEA, 0x00, 0x0C, 0x2A, 0x00, 0x1B, 0xAA, 0x00, 0x6A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0B, 0x90, 0x00, 0x28, 0x26, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64B8, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x09, 0xF8, 0x00, 0x0A, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x68, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64B9, { 0x00, 0x00, 0x00, 0x11, 0x21, 0x00, 0x11, 0xB3, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x00, 0x80, 0x12, 0xFE, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x80, 0x10, 0xC9, 0x80, 0x33, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64BA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x89, 0x00, 0x7D, 0x24, 0x00, 0x0A, 0x22, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x0D, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x6B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x28, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64BB, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0x84, 0x00, 0x08, 0xBF, 0x00, 0x3E, 0x84, 0x00, 0x09, 0x7F, 0x80, 0x09, 0x11, 0x00, 0x0B, 0x8A, 0x00, 0x08, 0xFF, 0x80, 0x0C, 0x84, 0x00, 0x3A, 0xBF, 0x80, 0x0A, 0x84, 0x00, 0x09, 0xBF, 0x80, 0x09, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x3F, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64BC, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x7E, 0xF9, 0x00, 0x12, 0x0B, 0x00, 0x12, 0xEE, 0x00, 0x12, 0xA4, 0x00, 0x1E, 0xEE, 0x80, 0x72, 0x1B, 0x80, 0x14, 0x71, 0x00, 0x10, 0x00, 0x00, 0x11, 0x53, 0x00, 0x11, 0x49, 0x80, 0x13, 0x42, 0x80, 0x36, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64BD, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x7E, 0x2F, 0x80, 0x13, 0xE9, 0x00, 0x12, 0x39, 0x00, 0x13, 0xE9, 0x00, 0x1C, 0x8D, 0x00, 0x70, 0x85, 0x00, 0x17, 0xF7, 0x00, 0x11, 0x02, 0x00, 0x11, 0xE2, 0x00, 0x11, 0x27, 0x00, 0x13, 0x25, 0x00, 0x12, 0x2D, 0x80, 0x36, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64BE, { 0x00, 0x00, 0x00, 0x10, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x13, 0x22, 0x00, 0x11, 0x2E, 0x00, 0x7A, 0x2A, 0x00, 0x13, 0x2A, 0x00, 0x11, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x1B, 0x5D, 0x00, 0x71, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x5D, 0x00, 0x11, 0x41, 0x00, 0x13, 0x43, 0x00, 0x12, 0x80, 0x00, 0x36, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64BF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x7C, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x1D, 0x29, 0x00, 0x71, 0xEF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC7, 0x00, 0x33, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64C0, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x17, 0xD4, 0x00, 0x79, 0x22, 0x00, 0x17, 0xC1, 0x00, 0x14, 0x7E, 0x00, 0x17, 0xC8, 0x00, 0x1C, 0x48, 0x00, 0x77, 0xCA, 0x00, 0x11, 0x3F, 0x00, 0x17, 0xC8, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x51, 0x08, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64C1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x89, 0x00, 0x08, 0x8A, 0x00, 0x0D, 0x5F, 0x80, 0x0A, 0x52, 0x00, 0x09, 0xB2, 0x00, 0x0F, 0x5F, 0x80, 0x3A, 0x32, 0x00, 0x0F, 0xD2, 0x00, 0x08, 0x5F, 0x80, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x1F, 0x80, 0x1A, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64C2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64C4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x17, 0x00, 0x09, 0xF8, 0x00, 0x09, 0x1F, 0x80, 0x09, 0x7F, 0x00, 0x0F, 0x49, 0x00, 0x39, 0xFF, 0x80, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x11, 0x00, 0x1A, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64C5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xBA, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x38, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x1B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64C7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x0C, 0x22, 0x00, 0x38, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64C9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x7B, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x80, 0x13, 0x20, 0x80, 0x1F, 0xFC, 0x80, 0x71, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0xFC, 0x80, 0x10, 0x28, 0x80, 0x10, 0xFD, 0x80, 0x13, 0x85, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64CA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBE, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x80, 0x24, 0xA3, 0x80, 0x3F, 0xC0, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x11, 0x00, 0x3F, 0x8E, 0x00, 0x04, 0xF3, 0x80, 0x0F, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64CB, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x11, 0x93, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x00, 0x80, 0x12, 0xFE, 0x80, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64CC, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x92, 0x00, 0x7C, 0x41, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x1C, 0x92, 0x00, 0x70, 0x92, 0x00, 0x11, 0x55, 0x00, 0x11, 0x39, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x33, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64CD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x0B, 0x29, 0x00, 0x0D, 0xEF, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x1B, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64CE, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x3F, 0xD0, 0x00, 0x09, 0x1F, 0x80, 0x1F, 0xA1, 0x00, 0x20, 0xD2, 0x00, 0x0E, 0x8C, 0x00, 0x0A, 0x8B, 0x80, 0x0E, 0x90, 0x00, 0x01, 0xBE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64D0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x50, 0x80, 0x10, 0x93, 0x00, 0x11, 0x8C, 0x00, 0x12, 0xB3, 0x00, 0x30, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64D1, { 0x00, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x13, 0xCB, 0x00, 0x12, 0x49, 0x00, 0x12, 0x48, 0x00, 0x7B, 0xCF, 0x80, 0x10, 0x38, 0x00, 0x17, 0xE9, 0x00, 0x12, 0x49, 0x00, 0x1B, 0xCB, 0x00, 0x72, 0x4A, 0x00, 0x13, 0xCE, 0x00, 0x12, 0x44, 0x00, 0x13, 0xCE, 0x00, 0x16, 0x4A, 0x80, 0x10, 0x59, 0x80, 0x30, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64D2, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0x4A, 0x00, 0x3E, 0x89, 0x80, 0x09, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x99, 0x00, 0x0A, 0xA5, 0x00, 0x0C, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x09, 0x4C, 0x80, 0x09, 0xF2, 0x80, 0x09, 0x00, 0x80, 0x19, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64D4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x09, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x28, 0x80, 0x09, 0xC7, 0x80, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x39, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x1A, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64D5, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x90, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x15, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x10, 0x00, 0x71, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xCF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x79, 0x00, 0x12, 0x01, 0x00, 0x32, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64D7, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x5F, 0x00, 0x12, 0x40, 0x00, 0x7A, 0x51, 0x00, 0x12, 0x5B, 0x00, 0x13, 0xCA, 0x00, 0x12, 0x3F, 0x80, 0x1A, 0x04, 0x00, 0x73, 0xC4, 0x00, 0x16, 0x5F, 0x00, 0x16, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x12, 0x44, 0x00, 0x13, 0xC4, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64D8, { 0x00, 0x00, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x04, 0x00, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64DA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x2F, 0x00, 0x09, 0xF0, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x39, 0x31, 0x00, 0x09, 0x5A, 0x00, 0x09, 0xAC, 0x00, 0x09, 0x5C, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64DE, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x15, 0x48, 0x00, 0x13, 0x88, 0x00, 0x11, 0x0A, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x22, 0x00, 0x1B, 0x92, 0x00, 0x15, 0x52, 0x00, 0x31, 0x14, 0x00, 0x5F, 0xF4, 0x00, 0x12, 0x48, 0x00, 0x14, 0x48, 0x00, 0x12, 0x94, 0x00, 0x11, 0x14, 0x00, 0x52, 0xA3, 0x00, 0x24, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x7B, 0xD7, 0x80, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x12, 0xD6, 0x80, 0x18, 0x00, 0x00, 0x71, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x13, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x0D, 0xFE, 0x00, 0x38, 0x41, 0x00, 0x08, 0xBF, 0x00, 0x0B, 0xD0, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64E2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x3F, 0x6B, 0x00, 0x0A, 0xB5, 0x00, 0x09, 0x39, 0x00, 0x08, 0x68, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0xFF, 0x00, 0x39, 0x90, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x80, 0x10, 0xFE, 0x80, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x01, 0x00, 0x13, 0xDF, 0x80, 0x12, 0x49, 0x00, 0x33, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E4, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x31, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E5, { 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x55, 0x00, 0x20, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E6, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x3F, 0x52, 0x00, 0x0B, 0x34, 0x00, 0x08, 0xCC, 0x00, 0x08, 0x83, 0x80, 0x0B, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x1A, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64E7, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x18, 0x8F, 0x00, 0x10, 0xF1, 0x00, 0x1E, 0x87, 0x00, 0x10, 0xF1, 0x00, 0x1E, 0xAF, 0x00, 0x10, 0x21, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64E9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x1C, 0x00, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x32, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64EA, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x2F, 0x91, 0x00, 0x20, 0x7F, 0x80, 0x2F, 0x94, 0x00, 0x28, 0x94, 0x00, 0x2F, 0x96, 0x00, 0x28, 0xB2, 0x00, 0x2F, 0xA3, 0x00, 0x29, 0xF9, 0x80, 0x20, 0x20, 0x00, 0x27, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x5F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64EC, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x6F, 0x00, 0x0B, 0x81, 0x00, 0x3E, 0x2A, 0x00, 0x0B, 0xE4, 0x00, 0x09, 0x1F, 0x80, 0x09, 0x05, 0x00, 0x0B, 0xE4, 0x00, 0x0C, 0x84, 0x00, 0x38, 0x97, 0x80, 0x0F, 0xF4, 0x00, 0x08, 0x94, 0x00, 0x09, 0x54, 0x00, 0x09, 0x34, 0x00, 0x0A, 0x2F, 0x80, 0x1C, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64ED, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x88, 0x00, 0x7D, 0xFF, 0x80, 0x13, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x46, 0x00, 0x10, 0x38, 0x00, 0x33, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64EF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x11, 0xFF, 0x00, 0x7C, 0x12, 0x00, 0x10, 0x94, 0x00, 0x13, 0x18, 0x00, 0x10, 0xFF, 0x00, 0x1B, 0x81, 0x00, 0x70, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x31, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64F0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x20, 0x80, 0x12, 0x50, 0x80, 0x11, 0x45, 0x00, 0x12, 0x7C, 0x80, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64F1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x7E, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x20, 0x80, 0x12, 0x7C, 0x80, 0x1E, 0xC4, 0x80, 0x72, 0x38, 0x80, 0x12, 0xC6, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x32, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64F2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xE7, 0x80, 0x09, 0x14, 0x80, 0x3F, 0xFC, 0x80, 0x0A, 0x45, 0x00, 0x09, 0xF4, 0x80, 0x09, 0x54, 0x80, 0x09, 0xB4, 0x80, 0x0D, 0x14, 0x80, 0x39, 0xF4, 0x80, 0x08, 0x44, 0x80, 0x0F, 0xFC, 0x80, 0x08, 0x44, 0x80, 0x08, 0xA7, 0x00, 0x09, 0x24, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64F4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x0D, 0x08, 0x00, 0x39, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x22, 0x00, 0x1A, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64F5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x12, 0xD6, 0x80, 0x13, 0x5A, 0x80, 0x1E, 0x06, 0x00, 0x72, 0x7C, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64F6, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0xEF, 0x80, 0x12, 0x94, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1D, 0xE1, 0x00, 0x71, 0x29, 0x00, 0x11, 0xE9, 0x00, 0x11, 0x29, 0x00, 0x11, 0xE9, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x31, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64F7, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x9F, 0x80, 0x10, 0x84, 0x00, 0x13, 0xEF, 0x00, 0x7C, 0x89, 0x00, 0x10, 0x89, 0x00, 0x13, 0xEF, 0x00, 0x10, 0x09, 0x00, 0x1C, 0x09, 0x00, 0x73, 0xEF, 0x00, 0x12, 0x29, 0x00, 0x12, 0x29, 0x00, 0x12, 0x2F, 0x00, 0x13, 0xE0, 0x00, 0x10, 0x09, 0x00, 0x30, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64FA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x09, 0x69, 0x80, 0x0B, 0xBE, 0x00, 0x08, 0x08, 0x80, 0x0F, 0xEF, 0x80, 0x39, 0x20, 0x00, 0x09, 0xE8, 0x00, 0x09, 0x2B, 0x00, 0x09, 0xEC, 0x00, 0x09, 0x28, 0x80, 0x09, 0x2F, 0x80, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64FB, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x13, 0xE4, 0x00, 0x12, 0xA4, 0x00, 0x17, 0xFF, 0x80, 0x7A, 0xA9, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x89, 0x00, 0x13, 0xED, 0x00, 0x1A, 0xA5, 0x00, 0x73, 0xE7, 0x00, 0x11, 0x02, 0x00, 0x17, 0xF2, 0x00, 0x12, 0x67, 0x00, 0x17, 0xC5, 0x00, 0x11, 0x6D, 0x80, 0x36, 0x38, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64FD, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x13, 0x23, 0x00, 0x12, 0x3A, 0x00, 0x12, 0xAA, 0x80, 0x7D, 0x29, 0x00, 0x11, 0x39, 0x00, 0x12, 0x2A, 0x00, 0x12, 0xAA, 0x80, 0x1F, 0xBB, 0x80, 0x70, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x64FE, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x20, 0x80, 0x39, 0x93, 0x00, 0x0A, 0xFE, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x0B, 0x8C, 0x00, 0x08, 0x70, 0x00, 0x1B, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x64FF, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0x7F, 0x80, 0x11, 0x21, 0x00, 0x7A, 0x12, 0x00, 0x13, 0x7F, 0x80, 0x11, 0x48, 0x80, 0x10, 0x7F, 0x80, 0x1B, 0x48, 0x80, 0x71, 0x5E, 0x80, 0x11, 0x52, 0x80, 0x11, 0x5E, 0x80, 0x11, 0x40, 0x80, 0x13, 0x41, 0x80, 0x12, 0x80, 0x00, 0x36, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6500, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x08, 0xC4, 0x00, 0x3E, 0xBF, 0x80, 0x0D, 0x2E, 0x00, 0x1A, 0xD5, 0x00, 0x29, 0x24, 0x80, 0x08, 0xA4, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x78, 0x00, 0x0B, 0xC6, 0x00, 0x30, 0x41, 0x80, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6501, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x7D, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x75, 0x05, 0x80, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFD, 0x00, 0x11, 0x12, 0x00, 0x11, 0xDC, 0x00, 0x37, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6504, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x2F, 0x00, 0x09, 0xF0, 0x80, 0x09, 0x3F, 0x80, 0x0B, 0x7F, 0x00, 0x0D, 0x49, 0x00, 0x39, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x10, 0x00, 0x09, 0xA9, 0x00, 0x0A, 0xA2, 0x80, 0x1A, 0xBE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6505, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x82, 0x00, 0x13, 0xEF, 0x80, 0x7C, 0x82, 0x00, 0x11, 0x45, 0x00, 0x12, 0x28, 0x80, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x31, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6508, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x7E, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x12, 0xEE, 0x00, 0x1E, 0x88, 0x80, 0x73, 0xEF, 0x80, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x33, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6509, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x7E, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x88, 0x00, 0x71, 0xFF, 0x80, 0x13, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x650A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0xCC, 0x00, 0x7A, 0x44, 0x00, 0x13, 0xFF, 0x00, 0x12, 0xEE, 0x00, 0x13, 0x55, 0x00, 0x1A, 0x44, 0x00, 0x72, 0x10, 0x00, 0x12, 0x90, 0x00, 0x12, 0x9F, 0x00, 0x12, 0x90, 0x00, 0x14, 0x90, 0x00, 0x10, 0x90, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x650F, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF7, 0x80, 0x12, 0x24, 0x00, 0x79, 0x47, 0x80, 0x17, 0xF0, 0x80, 0x10, 0x07, 0x80, 0x13, 0xE4, 0x00, 0x1A, 0x27, 0x80, 0x73, 0xE4, 0x00, 0x12, 0x27, 0x80, 0x13, 0xE4, 0x00, 0x12, 0x27, 0x80, 0x12, 0x24, 0x00, 0x12, 0x24, 0x80, 0x32, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6512, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x15, 0x14, 0x00, 0x17, 0xDF, 0x00, 0x19, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x14, 0xD3, 0x00, 0x19, 0xFC, 0x00, 0x71, 0x04, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x10, 0x50, 0x00, 0x51, 0x8C, 0x00, 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6513, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x48, 0x80, 0x15, 0xFE, 0x80, 0x78, 0x48, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x18, 0x84, 0x00, 0x73, 0xFF, 0x00, 0x16, 0x85, 0x80, 0x10, 0xFC, 0x00, 0x10, 0x50, 0x00, 0x10, 0xDE, 0x00, 0x11, 0xB0, 0x00, 0x33, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6514, { 0x00, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x7B, 0xEF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x10, 0x80, 0x1A, 0xFE, 0x80, 0x72, 0xD6, 0x80, 0x12, 0xBA, 0x80, 0x12, 0x92, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x54, 0x80, 0x12, 0x92, 0x80, 0x32, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6516, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7D, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x1C, 0xAA, 0x00, 0x71, 0x11, 0x00, 0x10, 0x40, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x11, 0xE4, 0x00, 0x10, 0x3E, 0x00, 0x31, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6518, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0xE7, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xE7, 0x00, 0x08, 0x24, 0x00, 0x0A, 0xFF, 0x00, 0x0C, 0x24, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x69, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x7A, 0x00, 0x19, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6519, { 0x00, 0x00, 0x00, 0x10, 0xFC, 0x00, 0x13, 0x08, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0xEF, 0x00, 0x10, 0x88, 0x80, 0x1D, 0xE7, 0x80, 0x70, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xC8, 0x80, 0x33, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x651B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x17, 0x8F, 0x80, 0x78, 0x60, 0x00, 0x13, 0xCF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xCF, 0x00, 0x1A, 0x01, 0x00, 0x73, 0xFF, 0x00, 0x11, 0x12, 0x00, 0x11, 0xDA, 0x00, 0x11, 0x12, 0x80, 0x11, 0xDA, 0x80, 0x11, 0x11, 0x80, 0x33, 0xBC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x651C, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x7D, 0xFF, 0x00, 0x13, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x12, 0xFF, 0x00, 0x13, 0x49, 0x00, 0x12, 0x79, 0x00, 0x32, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x651D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x4F, 0x80, 0x09, 0xF2, 0x00, 0x0D, 0xFF, 0x00, 0x38, 0xAA, 0x00, 0x08, 0xEE, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xEE, 0x00, 0x08, 0xFB, 0x80, 0x0B, 0x2E, 0x00, 0x18, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x651E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x10, 0x85, 0x00, 0x13, 0x0F, 0x80, 0x11, 0x5A, 0x00, 0x1C, 0x8A, 0x00, 0x71, 0x2F, 0x00, 0x13, 0xEA, 0x00, 0x10, 0xAA, 0x00, 0x10, 0x8F, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x30, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x651F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x7C, 0x89, 0x00, 0x17, 0xFF, 0x00, 0x15, 0x08, 0x00, 0x15, 0xEE, 0x00, 0x1D, 0x08, 0x80, 0x77, 0xFF, 0x80, 0x15, 0x7D, 0x00, 0x15, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x19, 0x39, 0x00, 0x11, 0x55, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6522, { 0x00, 0x00, 0x00, 0x12, 0x8A, 0x00, 0x13, 0xFF, 0x80, 0x14, 0x92, 0x00, 0x13, 0xEF, 0x80, 0x7D, 0x45, 0x00, 0x11, 0x65, 0x00, 0x12, 0x49, 0x80, 0x11, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x33, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6523, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x13, 0xF9, 0x00, 0x24, 0x0A, 0x00, 0x1A, 0xE5, 0x00, 0x3E, 0x1F, 0x80, 0x08, 0xE2, 0x00, 0x2A, 0x0A, 0x80, 0x2A, 0xEA, 0x80, 0x08, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6524, { 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x80, 0x17, 0xF5, 0x00, 0x11, 0x4F, 0x80, 0x7D, 0xDA, 0x00, 0x10, 0x8A, 0x00, 0x13, 0xEA, 0x00, 0x12, 0xAF, 0x80, 0x1B, 0xEA, 0x00, 0x70, 0x8A, 0x00, 0x13, 0xEA, 0x00, 0x10, 0x8F, 0x80, 0x17, 0xFA, 0x00, 0x11, 0x4A, 0x00, 0x13, 0x6A, 0x00, 0x36, 0x2F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6525, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0xEF, 0x00, 0x0A, 0x94, 0x00, 0x09, 0xFC, 0x00, 0x7F, 0x44, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x0C, 0x40, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0xA8, 0x00, 0x69, 0x4C, 0x00, 0x0E, 0xF3, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFC, 0x00, 0x28, 0xA8, 0x00, 0x13, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6526, { 0x00, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x7A, 0xAA, 0x80, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x48, 0x00, 0x1B, 0xFF, 0x00, 0x72, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x12, 0xEF, 0x00, 0x12, 0x88, 0x00, 0x14, 0xE8, 0x80, 0x31, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6529, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x82, 0x80, 0x7A, 0xFE, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x93, 0x00, 0x1D, 0x55, 0x00, 0x71, 0x39, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x49, 0x00, 0x32, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x652A, { 0x00, 0x00, 0x00, 0x08, 0xDB, 0x00, 0x08, 0xE7, 0x00, 0x08, 0x99, 0x00, 0x3E, 0xEF, 0x00, 0x08, 0x81, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x08, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x64, 0x80, 0x1B, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x652B, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x3F, 0xEF, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x48, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x46, 0x00, 0x08, 0x38, 0x00, 0x1B, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x652C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xAB, 0x80, 0x09, 0x10, 0x80, 0x3F, 0xEB, 0x80, 0x09, 0x10, 0x80, 0x09, 0xEB, 0x80, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x0E, 0xFF, 0x00, 0x38, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x80, 0x08, 0xC4, 0x80, 0x1B, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x652E, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x21, 0xFC, 0x00, 0x71, 0x24, 0x00, 0x2F, 0xFF, 0x80, 0x2A, 0x52, 0x80, 0x23, 0xDE, 0x00, 0x20, 0x88, 0x00, 0x33, 0xFE, 0x00, 0x60, 0x88, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x88, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x92, 0x00, 0x27, 0x0C, 0x00, 0x61, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x652F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x01, 0x90, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6531, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x32, 0x21, 0x00, 0x12, 0x23, 0x00, 0x16, 0x32, 0x00, 0x14, 0x16, 0x00, 0x04, 0x1C, 0x00, 0x07, 0x08, 0x00, 0x3C, 0x1C, 0x00, 0x60, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6534, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6535, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x34, 0x18, 0x00, 0x66, 0x10, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6536, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x11, 0x20, 0x00, 0x11, 0x3F, 0x80, 0x11, 0x21, 0x00, 0x11, 0x51, 0x00, 0x11, 0x52, 0x00, 0x11, 0x92, 0x00, 0x11, 0x0C, 0x00, 0x17, 0x08, 0x00, 0x39, 0x0C, 0x00, 0x01, 0x14, 0x00, 0x01, 0x12, 0x00, 0x01, 0x21, 0x00, 0x01, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6537, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x1F, 0x42, 0x00, 0x21, 0xA2, 0x00, 0x21, 0x14, 0x00, 0x01, 0x14, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x02, 0x22, 0x00, 0x02, 0x41, 0x00, 0x1D, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6538, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x3F, 0x80, 0x19, 0x21, 0x00, 0x29, 0x42, 0x00, 0x29, 0xA2, 0x00, 0x09, 0x14, 0x00, 0x09, 0x14, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x14, 0x00, 0x09, 0x22, 0x00, 0x09, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6539, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x02, 0x20, 0x00, 0x02, 0x3F, 0x00, 0x02, 0x22, 0x00, 0x02, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x20, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x21, 0x14, 0x00, 0x20, 0x18, 0x00, 0x20, 0x08, 0x00, 0x21, 0x14, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x653A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x42, 0x7F, 0x00, 0x42, 0x44, 0x00, 0x42, 0xC4, 0x00, 0x7E, 0xA4, 0x00, 0x41, 0xAC, 0x00, 0x40, 0x28, 0x00, 0x40, 0x38, 0x00, 0x40, 0x10, 0x00, 0x42, 0x38, 0x00, 0x62, 0x28, 0x00, 0x3E, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x653B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x28, 0x00, 0x08, 0x10, 0x00, 0x0B, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x30, 0x44, 0x00, 0x01, 0x82, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x653C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x7F, 0x52, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x14, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x653D, { 0x00, 0x00, 0x00, 0x1E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0x1F, 0x80, 0x31, 0x32, 0x00, 0x61, 0xA2, 0x00, 0x40, 0xD6, 0x00, 0x3F, 0x14, 0x00, 0x09, 0x14, 0x00, 0x09, 0x1C, 0x00, 0x09, 0x08, 0x00, 0x09, 0x1C, 0x00, 0x19, 0x14, 0x00, 0x13, 0x36, 0x00, 0x32, 0x23, 0x00, 0x66, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x653E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0x62, 0x00, 0x0F, 0xA2, 0x00, 0x09, 0x24, 0x00, 0x09, 0x14, 0x00, 0x09, 0x14, 0x00, 0x09, 0x08, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x12, 0x21, 0x00, 0x2C, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x653F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x02, 0x10, 0x00, 0x02, 0x1F, 0x80, 0x12, 0x21, 0x00, 0x12, 0x51, 0x00, 0x13, 0xD1, 0x00, 0x12, 0x12, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x04, 0x00, 0x12, 0x0C, 0x00, 0x3F, 0xD2, 0x00, 0x00, 0x21, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6543, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x20, 0x48, 0x00, 0x20, 0x4F, 0x80, 0x20, 0x59, 0x00, 0x3F, 0xD1, 0x00, 0x24, 0x33, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x24, 0x0E, 0x00, 0x24, 0x04, 0x00, 0x26, 0x0E, 0x00, 0x22, 0x4A, 0x00, 0x23, 0x4B, 0x00, 0x39, 0xD9, 0x00, 0x60, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6545, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xDF, 0x80, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x51, 0x00, 0x04, 0x92, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x8C, 0x00, 0x20, 0x84, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x92, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6547, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x32, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xE6, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x25, 0x9C, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x15, 0x14, 0x00, 0x34, 0xB6, 0x00, 0x64, 0x23, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6548, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xBF, 0x80, 0x0A, 0x21, 0x00, 0x11, 0x61, 0x00, 0x10, 0x92, 0x00, 0x21, 0x52, 0x00, 0x09, 0x14, 0x00, 0x06, 0x0C, 0x00, 0x02, 0x08, 0x00, 0x05, 0x14, 0x00, 0x04, 0x94, 0x00, 0x08, 0x22, 0x00, 0x10, 0xC1, 0x00, 0x23, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6549, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x49, 0x10, 0x00, 0x6B, 0x10, 0x00, 0x2A, 0x1F, 0x80, 0x08, 0x32, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x66, 0x00, 0x08, 0x14, 0x00, 0x1C, 0x14, 0x00, 0x1A, 0x1C, 0x00, 0x29, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x48, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x654C, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x03, 0x90, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x22, 0x00, 0x04, 0x3F, 0x00, 0x05, 0x44, 0x00, 0x7F, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x05, 0x24, 0x00, 0x1F, 0xA4, 0x00, 0x11, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x28, 0x00, 0x11, 0x47, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x654D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x08, 0x00, 0x20, 0x0F, 0x80, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x12, 0x00, 0x15, 0x14, 0x00, 0x15, 0x08, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x92, 0x00, 0x04, 0x21, 0x00, 0x0C, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x654E, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x06, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x15, 0x08, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0x91, 0x00, 0x08, 0x31, 0x00, 0x0F, 0xD1, 0x00, 0x11, 0x12, 0x00, 0x22, 0x0A, 0x00, 0x07, 0xCC, 0x00, 0x3C, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x12, 0x00, 0x04, 0x21, 0x00, 0x0C, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x654F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0xE8, 0x00, 0x10, 0x10, 0x00, 0x20, 0x1F, 0x80, 0x1F, 0xD1, 0x00, 0x12, 0x71, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x3F, 0xEC, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x84, 0x00, 0x24, 0x8A, 0x00, 0x3F, 0xD2, 0x00, 0x21, 0x21, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6550, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x10, 0x00, 0x20, 0x1F, 0x80, 0x2F, 0x32, 0x00, 0x20, 0x22, 0x00, 0x20, 0x66, 0x00, 0x3F, 0x94, 0x00, 0x28, 0x14, 0x00, 0x28, 0x5C, 0x00, 0x2A, 0x88, 0x00, 0x29, 0x1C, 0x00, 0x29, 0x14, 0x00, 0x2B, 0xB6, 0x00, 0x4C, 0xA3, 0x00, 0x18, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6551, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x1F, 0x80, 0x04, 0xA1, 0x00, 0x25, 0x21, 0x00, 0x14, 0x52, 0x00, 0x04, 0x92, 0x00, 0x0E, 0x0C, 0x00, 0x0D, 0x08, 0x00, 0x14, 0x8C, 0x00, 0x14, 0x14, 0x00, 0x24, 0x22, 0x00, 0x04, 0x41, 0x00, 0x0D, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6552, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x1F, 0xCF, 0x80, 0x15, 0x59, 0x00, 0x35, 0x51, 0x00, 0x35, 0x73, 0x00, 0x57, 0xCA, 0x00, 0x15, 0x4A, 0x00, 0x15, 0x4E, 0x00, 0x15, 0x44, 0x00, 0x17, 0xC4, 0x00, 0x11, 0x0E, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x1B, 0x00, 0x11, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6554, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x3E, 0x32, 0x00, 0x12, 0x22, 0x00, 0x12, 0x66, 0x00, 0x12, 0x14, 0x00, 0x7F, 0x94, 0x00, 0x00, 0x1C, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x1C, 0x00, 0x21, 0x14, 0x00, 0x21, 0x36, 0x00, 0x21, 0x23, 0x00, 0x3F, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6555, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x32, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xE6, 0x00, 0x24, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x04, 0x1C, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x15, 0x14, 0x00, 0x34, 0xB6, 0x00, 0x64, 0x23, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6556, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xA2, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x14, 0x00, 0x0F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x11, 0x22, 0x00, 0x21, 0x41, 0x00, 0x26, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6557, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x3F, 0x80, 0x22, 0x22, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0xA4, 0x00, 0x3F, 0x24, 0x00, 0x22, 0x18, 0x00, 0x22, 0x08, 0x00, 0x22, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x00, 0x22, 0x00, 0x12, 0x41, 0x00, 0x22, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6558, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x1B, 0x10, 0x00, 0x31, 0x9F, 0x80, 0x60, 0x32, 0x00, 0x1F, 0x22, 0x00, 0x04, 0x66, 0x00, 0x04, 0x14, 0x00, 0x7F, 0x94, 0x00, 0x04, 0x1C, 0x00, 0x15, 0x08, 0x00, 0x15, 0x9C, 0x00, 0x34, 0xD4, 0x00, 0x64, 0x36, 0x00, 0x04, 0x63, 0x00, 0x1C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6559, { 0x00, 0x00, 0x00, 0x04, 0x50, 0x00, 0x04, 0x50, 0x00, 0x3F, 0x90, 0x00, 0x04, 0xBF, 0x80, 0x05, 0x22, 0x00, 0x7F, 0xA2, 0x00, 0x02, 0x52, 0x00, 0x3F, 0x16, 0x00, 0x09, 0x14, 0x00, 0x12, 0x1C, 0x00, 0x64, 0x08, 0x00, 0x07, 0x9C, 0x00, 0x7C, 0x14, 0x00, 0x04, 0x36, 0x00, 0x04, 0x63, 0x00, 0x1C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x655B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x09, 0x92, 0x00, 0x10, 0xBF, 0x00, 0x20, 0x42, 0x00, 0x5F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x08, 0xA4, 0x00, 0x24, 0x94, 0x00, 0x15, 0x14, 0x00, 0x15, 0x08, 0x00, 0x15, 0x14, 0x00, 0x03, 0x94, 0x00, 0x3C, 0x23, 0x00, 0x10, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x655D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x64, 0xC8, 0x00, 0x44, 0x4F, 0x80, 0x04, 0x19, 0x00, 0x7F, 0xD1, 0x00, 0x44, 0x73, 0x00, 0x44, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x4E, 0x00, 0x75, 0xC4, 0x00, 0x64, 0xCE, 0x00, 0x44, 0x4A, 0x00, 0x44, 0x4B, 0x00, 0x44, 0x59, 0x00, 0x40, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x655E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x15, 0x08, 0x00, 0x24, 0x90, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xD2, 0x00, 0x20, 0x92, 0x00, 0x2E, 0x8C, 0x00, 0x2A, 0x88, 0x00, 0x2E, 0x8C, 0x00, 0x2A, 0x94, 0x00, 0x20, 0x92, 0x00, 0x20, 0xA1, 0x00, 0x21, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x655F, { 0x00, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x2A, 0xB2, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xE6, 0x00, 0x3F, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x9C, 0x00, 0x2A, 0x88, 0x00, 0x7F, 0xDC, 0x00, 0x00, 0x14, 0x00, 0x12, 0x36, 0x00, 0x33, 0x23, 0x00, 0x21, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6560, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC4, 0x00, 0x08, 0x47, 0x80, 0x6B, 0x44, 0x00, 0x10, 0x84, 0x00, 0x29, 0x7F, 0x00, 0x42, 0x11, 0x00, 0x00, 0x11, 0x00, 0x7B, 0xDB, 0x00, 0x08, 0x4A, 0x00, 0x4A, 0x4E, 0x00, 0x31, 0x84, 0x00, 0x10, 0x8E, 0x00, 0x29, 0x4A, 0x00, 0x2A, 0x5B, 0x00, 0x44, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6562, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xDF, 0x80, 0x11, 0x11, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x52, 0x00, 0x11, 0x94, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x14, 0x00, 0x3F, 0x12, 0x00, 0x01, 0x21, 0x00, 0x01, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6563, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x09, 0x1F, 0x80, 0x09, 0x11, 0x00, 0x3F, 0xE1, 0x00, 0x00, 0x32, 0x00, 0x1F, 0xD2, 0x00, 0x10, 0x8A, 0x00, 0x1F, 0x8C, 0x00, 0x10, 0x84, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x8A, 0x00, 0x10, 0x91, 0x00, 0x11, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6566, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x52, 0x00, 0x00, 0x94, 0x00, 0x1F, 0x14, 0x00, 0x02, 0x08, 0x00, 0x07, 0xC8, 0x00, 0x3C, 0x14, 0x00, 0x04, 0x12, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6567, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC7, 0x80, 0x0A, 0x04, 0x00, 0x1B, 0x04, 0x00, 0x31, 0xBF, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x01, 0x1B, 0x00, 0x3D, 0x0A, 0x00, 0x25, 0x0E, 0x00, 0x25, 0x04, 0x00, 0x3D, 0x0E, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x1B, 0x00, 0x07, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x656B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x21, 0x1F, 0x80, 0x3F, 0x32, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x66, 0x00, 0x04, 0x14, 0x00, 0x7F, 0x94, 0x00, 0x08, 0x1C, 0x00, 0x0F, 0x08, 0x00, 0x09, 0x1C, 0x00, 0x19, 0x14, 0x00, 0x13, 0x36, 0x00, 0x32, 0x63, 0x00, 0x66, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x656C, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x3F, 0xE8, 0x00, 0x09, 0x0F, 0x80, 0x09, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0F, 0xF1, 0x00, 0x10, 0x4A, 0x00, 0x20, 0x4A, 0x00, 0x1E, 0x46, 0x00, 0x12, 0x44, 0x00, 0x12, 0x4A, 0x00, 0x1E, 0x4A, 0x00, 0x00, 0x91, 0x00, 0x00, 0xA1, 0x00, 0x07, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x656D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x90, 0x00, 0x1F, 0x9F, 0x80, 0x10, 0xA1, 0x00, 0x1F, 0xB1, 0x00, 0x04, 0x51, 0x00, 0x04, 0x92, 0x00, 0x08, 0x0A, 0x00, 0x1F, 0xCA, 0x00, 0x24, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x12, 0x4A, 0x00, 0x24, 0x92, 0x00, 0x08, 0xA1, 0x00, 0x13, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6570, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x90, 0x00, 0x35, 0x90, 0x00, 0x15, 0x3F, 0x80, 0x7F, 0xA2, 0x00, 0x14, 0x62, 0x00, 0x17, 0x12, 0x00, 0x35, 0x96, 0x00, 0x64, 0x94, 0x00, 0x08, 0x1C, 0x00, 0x7F, 0xC8, 0x00, 0x11, 0x08, 0x00, 0x13, 0x1C, 0x00, 0x3E, 0x16, 0x00, 0x0B, 0x33, 0x00, 0x71, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6572, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x0F, 0x80, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xA2, 0x00, 0x20, 0x92, 0x00, 0x2E, 0x94, 0x00, 0x2A, 0x8C, 0x00, 0x2A, 0x8C, 0x00, 0x2E, 0x8A, 0x00, 0x20, 0x91, 0x00, 0x21, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6574, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x02, 0x0F, 0x80, 0x1F, 0xD0, 0x80, 0x12, 0x71, 0x00, 0x1F, 0xCA, 0x00, 0x07, 0x04, 0x00, 0x0A, 0x8A, 0x00, 0x12, 0x51, 0x00, 0x22, 0x60, 0x80, 0x02, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6575, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x01, 0x10, 0x00, 0x11, 0x1F, 0x80, 0x0A, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0xD2, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x8C, 0x00, 0x24, 0x88, 0x00, 0x2E, 0x8C, 0x00, 0x2A, 0x94, 0x00, 0x2E, 0x92, 0x00, 0x20, 0xA1, 0x00, 0x21, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6577, { 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xD0, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x3F, 0xD1, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x8C, 0x00, 0x08, 0x94, 0x00, 0x08, 0x92, 0x00, 0x11, 0x21, 0x00, 0x26, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6578, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x3F, 0xEF, 0x80, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x11, 0x00, 0x1F, 0xDA, 0x00, 0x12, 0x6A, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xC6, 0x00, 0x11, 0x0A, 0x00, 0x2A, 0x09, 0x00, 0x07, 0x11, 0x00, 0x38, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x657A, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x40, 0x07, 0x80, 0x4F, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0x3F, 0x00, 0x4F, 0x11, 0x00, 0x40, 0x11, 0x00, 0x5D, 0xDB, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x44, 0x00, 0x5D, 0xCE, 0x00, 0x40, 0x0A, 0x00, 0x7F, 0xDB, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x657D, { 0x00, 0x00, 0x00, 0x03, 0x84, 0x00, 0x3E, 0x04, 0x00, 0x04, 0x07, 0x80, 0x7F, 0xC4, 0x00, 0x09, 0x04, 0x00, 0x1F, 0xBF, 0x00, 0x69, 0x51, 0x00, 0x0F, 0x11, 0x00, 0x00, 0x1B, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x8E, 0x00, 0x2E, 0x84, 0x00, 0x2A, 0x8E, 0x00, 0x2E, 0x8A, 0x00, 0x20, 0x9B, 0x00, 0x21, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x657E, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xE8, 0x00, 0x02, 0x1F, 0x80, 0x1F, 0xD1, 0x00, 0x02, 0x31, 0x00, 0x3F, 0xD1, 0x00, 0x12, 0x51, 0x00, 0x0A, 0x8A, 0x00, 0x3F, 0xEA, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4A, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6581, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x8F, 0x80, 0x3F, 0x99, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xB3, 0x00, 0x04, 0x0A, 0x00, 0x7F, 0xCA, 0x00, 0x11, 0x0E, 0x00, 0x0A, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x0E, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x1B, 0x00, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6582, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x08, 0x00, 0x20, 0x9F, 0x80, 0x1F, 0x11, 0x00, 0x00, 0x21, 0x00, 0x3B, 0xA1, 0x00, 0x2A, 0xD2, 0x00, 0x2A, 0x92, 0x00, 0x3B, 0x8A, 0x00, 0x00, 0x0C, 0x00, 0x11, 0x04, 0x00, 0x11, 0x0A, 0x00, 0x2A, 0x8A, 0x00, 0x24, 0x91, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6583, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x24, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xD1, 0x00, 0x2E, 0xAA, 0x00, 0x35, 0xC4, 0x00, 0x24, 0x8A, 0x00, 0x25, 0x91, 0x80, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x50, 0x00, 0x07, 0xD3, 0x80, 0x0C, 0x9C, 0x00, 0x33, 0x10, 0x00, 0x06, 0x10, 0x80, 0x38, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6585, { 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x1A, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1D, 0xC7, 0x80, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x31, 0x00, 0x0F, 0x8A, 0x00, 0x01, 0x0A, 0x00, 0x03, 0xE4, 0x00, 0x3E, 0x04, 0x00, 0x02, 0x0A, 0x00, 0x02, 0x11, 0x00, 0x06, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6587, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6588, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6589, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x30, 0x04, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x658A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x0F, 0x80, 0x7F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x658B, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x38, 0x00, 0x70, 0x07, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x658C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x69, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x02, 0xFF, 0x80, 0x22, 0x28, 0x00, 0x12, 0x28, 0x00, 0x0C, 0xA8, 0x00, 0x04, 0xB8, 0x00, 0x06, 0xA8, 0x00, 0x0A, 0xA4, 0x00, 0x0A, 0xA4, 0x00, 0x10, 0xBA, 0x80, 0x13, 0xC1, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x658E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x70, 0x00, 0x0E, 0x1C, 0x00, 0x7B, 0xE7, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xF4, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xA4, 0x00, 0x1C, 0x94, 0x00, 0x11, 0x84, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6590, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x07, 0x9F, 0x80, 0x39, 0x10, 0x00, 0x02, 0x50, 0x00, 0x0C, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6591, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x4F, 0x80, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3E, 0xAF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0E, 0xA2, 0x00, 0x38, 0xA3, 0x80, 0x01, 0x2E, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6592, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x80, 0x08, 0x7E, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x66, 0x7F, 0x00, 0x34, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x08, 0x54, 0x80, 0x1C, 0x54, 0x80, 0x36, 0xFF, 0x80, 0x60, 0xD4, 0x80, 0x41, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6593, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x21, 0x7F, 0x00, 0x10, 0x22, 0x00, 0x02, 0x2A, 0x00, 0x7F, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x2A, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xFA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xFA, 0x00, 0x26, 0x72, 0x00, 0x46, 0xAA, 0x00, 0x03, 0x26, 0x00, 0x02, 0x2A, 0x00, 0x02, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6595, { 0x00, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x7E, 0x28, 0x80, 0x0B, 0xEF, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0xFE, 0x80, 0x3A, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x1A, 0xD6, 0x80, 0x2A, 0xBA, 0x80, 0x22, 0x92, 0x80, 0x22, 0xFE, 0x80, 0x42, 0x54, 0x80, 0x02, 0x92, 0x80, 0x02, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6597, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6598, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0x32, 0x00, 0x1F, 0x1A, 0x00, 0x11, 0x0A, 0x00, 0x31, 0x02, 0x00, 0x21, 0x62, 0x00, 0x71, 0x32, 0x00, 0x5B, 0x12, 0x00, 0x0A, 0x02, 0x00, 0x0E, 0x03, 0x80, 0x04, 0x1E, 0x00, 0x0C, 0x72, 0x00, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x30, 0x02, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6599, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x29, 0x24, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x05, 0x80, 0x1A, 0x1E, 0x00, 0x28, 0xE4, 0x00, 0x28, 0x04, 0x00, 0x28, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x659B, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x11, 0x14, 0x00, 0x22, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x64, 0x00, 0x12, 0x54, 0x00, 0x1F, 0xC5, 0x80, 0x12, 0x46, 0x00, 0x12, 0x5C, 0x00, 0x1F, 0xE4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x20, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x659C, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x12, 0x00, 0x20, 0x8A, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x22, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x03, 0x80, 0x15, 0x0E, 0x00, 0x15, 0x32, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x04, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x659D, { 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0x11, 0x00, 0x01, 0x90, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x06, 0x10, 0x00, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x659F, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x92, 0x00, 0x3F, 0xEA, 0x00, 0x08, 0x82, 0x00, 0x0F, 0x82, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x82, 0x00, 0x3F, 0xE3, 0x80, 0x15, 0x1E, 0x00, 0x15, 0x02, 0x00, 0x1C, 0xE2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xE2, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A0, { 0x00, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x12, 0x00, 0x7F, 0xDA, 0x00, 0x0A, 0x0A, 0x00, 0x3F, 0x82, 0x00, 0x0A, 0x12, 0x00, 0x7F, 0xDA, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x83, 0x80, 0x7F, 0xCE, 0x00, 0x24, 0xBA, 0x00, 0x7F, 0xC2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x21, 0x00, 0x04, 0x40, 0x80, 0x1F, 0x82, 0x00, 0x11, 0x12, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x13, 0x80, 0x15, 0x0E, 0x00, 0x04, 0x72, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A3, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xE9, 0x00, 0x49, 0x2D, 0x00, 0x49, 0x25, 0x00, 0x7F, 0xE1, 0x00, 0x10, 0x09, 0x00, 0x3F, 0xED, 0x00, 0x64, 0x25, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0xA1, 0x80, 0x3F, 0xA7, 0x00, 0x04, 0x3D, 0x00, 0x05, 0x21, 0x00, 0x0F, 0x61, 0x00, 0x39, 0x41, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A4, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A5, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x14, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A6, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x07, 0x07, 0x00, 0x1C, 0x3C, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xBF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x32, 0x62, 0x00, 0x22, 0x42, 0x00, 0x62, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A7, { 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x34, 0x09, 0x80, 0x03, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x1F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65A9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x0A, 0x70, 0x00, 0x7F, 0x40, 0x00, 0x10, 0x40, 0x00, 0x14, 0x42, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x48, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x07, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x24, 0x88, 0x00, 0x04, 0x88, 0x00, 0x05, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65AB, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x3F, 0xB8, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3F, 0x80, 0x1F, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x42, 0x00, 0x0F, 0x42, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65AC, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x04, 0x38, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65AD, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x44, 0x0E, 0x00, 0x55, 0x78, 0x00, 0x55, 0x40, 0x00, 0x55, 0x40, 0x00, 0x44, 0x40, 0x00, 0x5F, 0x7F, 0x00, 0x44, 0x44, 0x00, 0x4E, 0x44, 0x00, 0x4D, 0x44, 0x00, 0x55, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x40, 0x44, 0x00, 0x7F, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65AE, { 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x09, 0x07, 0x00, 0x3F, 0xDC, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x1F, 0x80, 0x7F, 0xF2, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1F, 0xB2, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xE2, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65AF, { 0x00, 0x00, 0x00, 0x08, 0x83, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x90, 0x00, 0x3F, 0xF0, 0x00, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x80, 0x0F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xF1, 0x00, 0x00, 0x11, 0x00, 0x08, 0xA1, 0x00, 0x10, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65B0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x07, 0x00, 0x3F, 0xB8, 0x00, 0x11, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x0C, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x15, 0x22, 0x00, 0x24, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65B2, { 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x73, 0xC7, 0x00, 0x4A, 0x5C, 0x00, 0x4A, 0x50, 0x00, 0x7B, 0xD0, 0x00, 0x0A, 0x1F, 0x80, 0x0A, 0x12, 0x00, 0x7B, 0xD2, 0x00, 0x40, 0x52, 0x00, 0x40, 0x52, 0x00, 0x7B, 0xD2, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x0B, 0xD2, 0x00, 0x1E, 0x22, 0x00, 0x70, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65B3, { 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x7F, 0xDC, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x32, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x62, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65B4, { 0x00, 0x00, 0x00, 0x24, 0x81, 0x00, 0x15, 0x07, 0x00, 0x04, 0x1C, 0x00, 0x7F, 0xD0, 0x00, 0x15, 0x10, 0x00, 0x35, 0x9F, 0x80, 0x64, 0xD2, 0x00, 0x24, 0x12, 0x00, 0x38, 0x92, 0x00, 0x6B, 0xD2, 0x00, 0x4A, 0x92, 0x00, 0x3A, 0x92, 0x00, 0x1F, 0xD2, 0x00, 0x30, 0x92, 0x00, 0x60, 0xA2, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65B7, { 0x00, 0x00, 0x00, 0x24, 0x03, 0x00, 0x25, 0x3C, 0x00, 0x29, 0x60, 0x00, 0x32, 0xA0, 0x00, 0x2D, 0x60, 0x00, 0x25, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x2B, 0x62, 0x00, 0x35, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x3F, 0xE2, 0x00, 0x22, 0x62, 0x00, 0x3F, 0xE2, 0x00, 0x20, 0x22, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65B9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x10, 0x04, 0x00, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65BC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x3F, 0x94, 0x00, 0x08, 0x12, 0x00, 0x08, 0x22, 0x00, 0x08, 0x21, 0x00, 0x0F, 0xC0, 0x80, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x10, 0x82, 0x00, 0x10, 0x80, 0x00, 0x10, 0x90, 0x00, 0x11, 0x08, 0x00, 0x21, 0x04, 0x00, 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65BD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x09, 0x24, 0x00, 0x08, 0x25, 0x80, 0x1E, 0x3E, 0x80, 0x12, 0xE4, 0x80, 0x12, 0x24, 0x80, 0x12, 0x24, 0x80, 0x12, 0x25, 0x80, 0x12, 0x20, 0x00, 0x12, 0x20, 0x80, 0x22, 0x3F, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65BF, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x3F, 0x00, 0x0F, 0x01, 0x00, 0x09, 0x02, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x19, 0x7F, 0x80, 0x13, 0x04, 0x00, 0x12, 0x04, 0x00, 0x32, 0x04, 0x00, 0x6E, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65C1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x04, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65C2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0x40, 0x00, 0x10, 0xC7, 0x00, 0x1E, 0x3C, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x3F, 0x80, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x64, 0x00, 0x32, 0x44, 0x00, 0x22, 0xC4, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65C3, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x11, 0x80, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x41, 0x00, 0x32, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x6E, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65C4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0xC0, 0x00, 0x10, 0x06, 0x00, 0x1E, 0x7C, 0x00, 0x12, 0x10, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x22, 0x10, 0x80, 0x22, 0x19, 0x80, 0x6E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65C5, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0x07, 0x00, 0x08, 0x78, 0x00, 0x0F, 0x49, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4C, 0x00, 0x11, 0x48, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x7A, 0x00, 0x21, 0xC1, 0x00, 0x26, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65C6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0xC8, 0x00, 0x10, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x22, 0x08, 0x00, 0x6E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65C8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x20, 0x00, 0x10, 0x21, 0x00, 0x10, 0x4F, 0x80, 0x1E, 0xF8, 0x80, 0x12, 0x00, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x32, 0x6A, 0x80, 0x22, 0x4A, 0x80, 0x66, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65C9, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65CB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x08, 0x7F, 0x80, 0x0F, 0x09, 0x00, 0x09, 0x08, 0x00, 0x09, 0x28, 0x00, 0x11, 0x2F, 0x80, 0x11, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x5F, 0x80, 0x26, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65CC, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x08, 0x80, 0x00, 0x09, 0x08, 0x00, 0x08, 0x28, 0x00, 0x0E, 0x28, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x88, 0x00, 0x13, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65CE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x11, 0x80, 0x00, 0x11, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x50, 0x00, 0x12, 0x53, 0x00, 0x12, 0x5E, 0x00, 0x12, 0x50, 0x00, 0x32, 0xD0, 0x80, 0x22, 0x99, 0x80, 0x66, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65CF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x08, 0x90, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x7F, 0x00, 0x09, 0x88, 0x00, 0x09, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x12, 0x14, 0x00, 0x22, 0x22, 0x00, 0x2C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65D0, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x11, 0x80, 0x00, 0x10, 0x24, 0x00, 0x1C, 0x24, 0x80, 0x15, 0xA5, 0x80, 0x14, 0xA5, 0x00, 0x14, 0x24, 0x00, 0x14, 0xE7, 0x00, 0x17, 0xA5, 0x80, 0x14, 0x24, 0x00, 0x34, 0x64, 0x80, 0x24, 0xC4, 0x80, 0x6D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65D2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x88, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x12, 0x00, 0x0F, 0x27, 0x00, 0x09, 0xF8, 0x80, 0x09, 0x08, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x80, 0x26, 0x8B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65D4, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xDF, 0x00, 0x08, 0x45, 0x00, 0x7E, 0x85, 0x00, 0x10, 0xBF, 0x80, 0x11, 0x05, 0x00, 0x1D, 0xC5, 0x00, 0x14, 0x5F, 0x00, 0x14, 0x44, 0x00, 0x15, 0x5F, 0x00, 0x15, 0x44, 0x00, 0x14, 0xBF, 0x80, 0x34, 0x84, 0x00, 0x24, 0x84, 0x00, 0x25, 0xC0, 0x00, 0x6D, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65D6, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x11, 0x88, 0x00, 0x10, 0x7F, 0x80, 0x1E, 0x12, 0x00, 0x12, 0x61, 0x80, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x01, 0x00, 0x12, 0x3D, 0x00, 0x12, 0x25, 0x00, 0x32, 0x3D, 0x00, 0x22, 0x01, 0x00, 0x6E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65D7, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x10, 0xA2, 0x00, 0x10, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x22, 0x22, 0x00, 0x2C, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65D8, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x45, 0x00, 0x09, 0xF5, 0x80, 0x7E, 0x04, 0x80, 0x11, 0x14, 0x00, 0x10, 0xA4, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x04, 0x00, 0x12, 0xF5, 0x00, 0x12, 0x95, 0x00, 0x12, 0x97, 0x00, 0x12, 0xF2, 0x00, 0x12, 0x92, 0x00, 0x32, 0x92, 0x80, 0x22, 0xF7, 0x80, 0x6E, 0x0D, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65D9, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7F, 0x49, 0x00, 0x10, 0x2A, 0x00, 0x10, 0xFF, 0x80, 0x1E, 0x2A, 0x00, 0x12, 0x6B, 0x00, 0x12, 0xC9, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x32, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x6E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65DB, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x10, 0x07, 0x00, 0x10, 0xFC, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x2A, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x6E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65DF, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x10, 0x60, 0x00, 0x11, 0xD3, 0x00, 0x1D, 0x1D, 0x00, 0x15, 0xD3, 0x00, 0x15, 0x19, 0x00, 0x15, 0x09, 0x00, 0x15, 0xAB, 0x00, 0x15, 0x29, 0x00, 0x15, 0x29, 0x00, 0x37, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x6D, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x20, 0x80, 0x02, 0x20, 0x80, 0x0C, 0x3F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0xA0, 0x00, 0x03, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x24, 0x00, 0x21, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x24, 0x00, 0x21, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x04, 0x00, 0x20, 0x0C, 0x00, 0x22, 0x0C, 0x00, 0x22, 0x1C, 0x00, 0x2F, 0x14, 0x00, 0x39, 0x34, 0x80, 0x60, 0x64, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65E3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x0C, 0x00, 0x20, 0x0C, 0x00, 0x20, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x20, 0x24, 0x80, 0x3E, 0x44, 0x80, 0x20, 0x87, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3E, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65EC, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x10, 0x00, 0x80, 0x23, 0xF8, 0x80, 0x02, 0x08, 0x80, 0x03, 0xF8, 0x80, 0x02, 0x08, 0x80, 0x03, 0xF8, 0x80, 0x02, 0x08, 0x80, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65ED, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x1F, 0x22, 0x00, 0x05, 0x22, 0x00, 0x05, 0x22, 0x00, 0x05, 0x3E, 0x00, 0x05, 0x22, 0x00, 0x05, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x22, 0x00, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65EE, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xF8, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x11, 0x00, 0x08, 0x11, 0x00, 0x10, 0x0F, 0x00, 0x6F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65EF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xF8, 0x00, 0x02, 0x10, 0x00, 0x02, 0x11, 0x00, 0x04, 0x11, 0x00, 0x08, 0x0F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F6, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x22, 0x04, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x24, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x00, 0x00, 0x25, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x25, 0x00, 0x00, 0x25, 0x00, 0x00, 0x25, 0x00, 0x00, 0x25, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65F9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65FA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x00, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x08, 0x00, 0x09, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x1C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65FC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x18, 0x00, 0x24, 0x24, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x65FD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x1F, 0x00, 0x25, 0xF0, 0x00, 0x24, 0x10, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x80, 0x20, 0x10, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65FE, { 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x80, 0x00, 0x81, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x65FF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x80, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x26, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6600, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x22, 0xC1, 0x00, 0x22, 0x81, 0x00, 0x23, 0x81, 0x00, 0x3E, 0x79, 0x00, 0x22, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0xFD, 0x00, 0x22, 0x01, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6602, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6603, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x70, 0x00, 0x30, 0xD8, 0x00, 0x21, 0x8C, 0x00, 0x63, 0x06, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6604, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0xFE, 0x00, 0x44, 0xA2, 0x00, 0x7C, 0xA2, 0x00, 0x44, 0xB6, 0x00, 0x44, 0x94, 0x00, 0x44, 0x9C, 0x00, 0x44, 0x88, 0x00, 0x7D, 0x9C, 0x00, 0x01, 0x14, 0x00, 0x03, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6606, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x21, 0x80, 0x0F, 0xA6, 0x00, 0x08, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x0F, 0xA0, 0x80, 0x38, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6607, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x01, 0xE8, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6608, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x7C, 0xF8, 0x00, 0x44, 0x80, 0x00, 0x44, 0xFF, 0x80, 0x44, 0x80, 0x80, 0x44, 0x80, 0x80, 0x7C, 0x80, 0x80, 0x44, 0xFF, 0x80, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6609, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x81, 0x00, 0x20, 0x81, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x660A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x660C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x660D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x660E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x21, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x81, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x660F, { 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x04, 0x08, 0x80, 0x07, 0xF4, 0x80, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6610, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x3C, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x82, 0x00, 0x25, 0x01, 0x00, 0x24, 0x00, 0x80, 0x3F, 0xFE, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x21, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6611, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x25, 0x7D, 0x00, 0x3E, 0x00, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x24, 0x04, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6612, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x44, 0xFF, 0x80, 0x44, 0xA4, 0x80, 0x45, 0xA4, 0x80, 0x45, 0x24, 0x80, 0x7C, 0x24, 0x80, 0x44, 0x6C, 0x80, 0x44, 0x48, 0x80, 0x44, 0xC8, 0x80, 0x45, 0x98, 0x80, 0x7C, 0x10, 0x80, 0x00, 0x31, 0x80, 0x00, 0x61, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6613, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x45, 0x00, 0x30, 0x89, 0x00, 0x01, 0x11, 0x00, 0x06, 0x21, 0x00, 0x18, 0xC2, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6614, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6615, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xF8, 0x00, 0x3C, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x80, 0x3C, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3C, 0x84, 0x00, 0x24, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6616, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x7C, 0x46, 0x00, 0x44, 0x42, 0x00, 0x44, 0xC3, 0x00, 0x44, 0x81, 0x00, 0x45, 0xA1, 0x80, 0x7C, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x62, 0x00, 0x44, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x79, 0x00, 0x01, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6619, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x661C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x73, 0x31, 0x00, 0x06, 0x23, 0x00, 0x1C, 0x62, 0x00, 0x01, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x661D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x31, 0x1C, 0x00, 0x63, 0x16, 0x00, 0x16, 0x33, 0x00, 0x0C, 0x61, 0x80, 0x1B, 0x00, 0x00, 0x31, 0xE0, 0x00, 0x60, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x661E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x29, 0x00, 0x25, 0x45, 0x00, 0x25, 0x85, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x25, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x661F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6620, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x24, 0x48, 0x00, 0x3E, 0x44, 0x00, 0x20, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6621, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x20, 0x00, 0x44, 0x60, 0x00, 0x44, 0x44, 0x00, 0x7C, 0xC4, 0x00, 0x45, 0x8C, 0x00, 0x44, 0xF8, 0x00, 0x44, 0x10, 0x00, 0x44, 0x32, 0x00, 0x7C, 0x63, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x80, 0x03, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6622, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6623, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x45, 0x83, 0x00, 0x47, 0x11, 0x80, 0x44, 0x30, 0x00, 0x7C, 0x62, 0x00, 0x45, 0xC6, 0x00, 0x44, 0x0C, 0x00, 0x44, 0x38, 0x80, 0x45, 0xE1, 0x80, 0x7C, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6624, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x45, 0x83, 0x00, 0x47, 0x7D, 0x80, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x21, 0x00, 0x44, 0x21, 0x00, 0x44, 0x21, 0x00, 0x7C, 0x21, 0x00, 0x00, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6625, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6626, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x72, 0x13, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6627, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x38, 0x00, 0x24, 0x38, 0x00, 0x3C, 0x54, 0x00, 0x24, 0x94, 0x00, 0x00, 0x92, 0x00, 0x01, 0x12, 0x00, 0x02, 0x11, 0x00, 0x04, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6628, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x24, 0xA0, 0x00, 0x25, 0x20, 0x00, 0x26, 0x20, 0x00, 0x3C, 0x3F, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6629, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x54, 0x00, 0x44, 0x54, 0x00, 0x44, 0x54, 0x00, 0x44, 0xD6, 0x00, 0x7C, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x662A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x7C, 0x00, 0x3F, 0xC7, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x662B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x44, 0xFF, 0x80, 0x44, 0x80, 0x80, 0x45, 0x80, 0x80, 0x44, 0x7C, 0x80, 0x7C, 0x44, 0x80, 0x44, 0x44, 0x80, 0x44, 0x44, 0x80, 0x44, 0x44, 0x80, 0x44, 0x7C, 0x80, 0x7C, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x662C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x31, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x662D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x11, 0x00, 0x24, 0x11, 0x00, 0x24, 0x21, 0x00, 0x24, 0x21, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x8C, 0x00, 0x27, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x24, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x662E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x0E, 0x61, 0x00, 0x38, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x662F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x09, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6630, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6631, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6633, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x7C, 0x90, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x10, 0x00, 0x45, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x28, 0x00, 0x44, 0x28, 0x00, 0x44, 0x6C, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6634, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x18, 0x3F, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x17, 0xA1, 0x00, 0x38, 0xA1, 0x00, 0x01, 0x27, 0x00, 0x06, 0x20, 0x00, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6635, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x00, 0x00, 0x79, 0x20, 0x00, 0x49, 0x21, 0x00, 0x49, 0x27, 0x00, 0x49, 0x3C, 0x00, 0x49, 0x20, 0x00, 0x7B, 0x20, 0x00, 0x02, 0x20, 0x80, 0x06, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6636, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xCF, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x01, 0x2F, 0x00, 0x01, 0x49, 0x00, 0x1F, 0x89, 0x00, 0x03, 0x89, 0x00, 0x05, 0x4F, 0x00, 0x05, 0x49, 0x00, 0x09, 0x20, 0x00, 0x09, 0x10, 0x00, 0x11, 0x08, 0x00, 0x11, 0x06, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6637, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6639, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x08, 0x00, 0x44, 0x00, 0x00, 0x44, 0xF0, 0x00, 0x44, 0x10, 0x00, 0x44, 0x11, 0x00, 0x7D, 0xDB, 0x00, 0x44, 0x5E, 0x00, 0x44, 0x54, 0x00, 0x44, 0x54, 0x00, 0x44, 0xD6, 0x00, 0x7C, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x663A, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x11, 0x00, 0x12, 0x0D, 0x00, 0x1C, 0x07, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x663B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x07, 0xA1, 0x00, 0x38, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x663C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x18, 0x04, 0x00, 0x17, 0xFE, 0x00, 0x34, 0x0B, 0x00, 0x67, 0xF9, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x663E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x0A, 0x28, 0x00, 0x22, 0x22, 0x00, 0x1A, 0x26, 0x00, 0x0A, 0x28, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x663F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x10, 0x00, 0x79, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0x30, 0x00, 0x49, 0x20, 0x00, 0x49, 0x22, 0x00, 0x79, 0x63, 0x00, 0x03, 0x41, 0x00, 0x02, 0x4F, 0x80, 0x06, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6640, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x7A, 0x49, 0x00, 0x4B, 0x4B, 0x00, 0x49, 0x4E, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x78, 0x48, 0x00, 0x48, 0x4E, 0x00, 0x49, 0xCB, 0x00, 0x4B, 0x49, 0x00, 0x48, 0x48, 0x00, 0x78, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6641, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x09, 0x12, 0x00, 0x05, 0x14, 0x00, 0x01, 0x18, 0x00, 0x07, 0x14, 0x00, 0x39, 0x13, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6642, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x04, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x04, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6643, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6644, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0x11, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x54, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x84, 0x80, 0x00, 0x84, 0x80, 0x01, 0x07, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6645, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6646, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6649, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0xA1, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x664A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x62, 0x00, 0x44, 0x4E, 0x00, 0x45, 0xFB, 0x00, 0x7C, 0x00, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x664B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x05, 0x14, 0x00, 0x05, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x664C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x7C, 0x20, 0x00, 0x45, 0xFF, 0x80, 0x45, 0x00, 0x80, 0x45, 0x00, 0x80, 0x45, 0x3C, 0x80, 0x7D, 0x24, 0x80, 0x45, 0x24, 0x80, 0x45, 0x24, 0x80, 0x45, 0x24, 0x80, 0x45, 0x3C, 0x80, 0x7D, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x664E, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x44, 0x44, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x664F, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x10, 0x00, 0x09, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x38, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6651, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6652, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x28, 0x00, 0x48, 0x28, 0x00, 0x48, 0x28, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x29, 0x00, 0x79, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x29, 0x00, 0x49, 0x4F, 0x00, 0x49, 0x81, 0x00, 0x79, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6653, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x3E, 0x7E, 0x00, 0x27, 0xC0, 0x00, 0x24, 0x28, 0x00, 0x24, 0x11, 0x00, 0x3C, 0x69, 0x00, 0x25, 0x87, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x50, 0x00, 0x3C, 0x50, 0x00, 0x24, 0x91, 0x00, 0x00, 0x91, 0x00, 0x01, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6654, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x04, 0x52, 0x00, 0x3E, 0x96, 0x00, 0x24, 0x98, 0x00, 0x25, 0x90, 0x00, 0x26, 0xB1, 0x00, 0x24, 0xD1, 0x00, 0x3C, 0x8F, 0x00, 0x24, 0xA0, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6655, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x4F, 0xFA, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6656, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3D, 0x01, 0x00, 0x25, 0x22, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x40, 0x00, 0x3C, 0x94, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6657, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x28, 0x00, 0x44, 0x6C, 0x00, 0x44, 0xC6, 0x00, 0x47, 0xBB, 0x80, 0x44, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x04, 0x00, 0x44, 0x08, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6658, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6659, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x22, 0x00, 0x3C, 0x4F, 0x00, 0x25, 0xF4, 0x80, 0x24, 0x24, 0x00, 0x24, 0x24, 0x80, 0x3C, 0x47, 0x80, 0x27, 0xA0, 0x00, 0x24, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x3C, 0xA2, 0x00, 0x25, 0x14, 0x00, 0x06, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x66, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x665A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3E, 0xFC, 0x00, 0x25, 0x08, 0x00, 0x26, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x22, 0x00, 0x3D, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x32, 0x00, 0x24, 0x50, 0x00, 0x3C, 0x51, 0x00, 0x24, 0x91, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x665B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x80, 0x00, 0x88, 0x80, 0x01, 0x0F, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x665C, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x80, 0x80, 0x06, 0x80, 0x80, 0x1C, 0x81, 0x80, 0x70, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x665D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x665E, { 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x34, 0x00, 0x3C, 0x1C, 0x00, 0x24, 0x62, 0x00, 0x25, 0xA1, 0x00, 0x24, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x90, 0x00, 0x25, 0x90, 0x00, 0x26, 0xFF, 0x00, 0x3C, 0x91, 0x00, 0x24, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0x93, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x665F, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x12, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x08, 0x00, 0x11, 0x18, 0x00, 0x16, 0x24, 0x80, 0x20, 0xC2, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6660, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0B, 0x00, 0x7C, 0x09, 0x00, 0x45, 0xFF, 0x80, 0x45, 0x08, 0x00, 0x45, 0x08, 0x00, 0x45, 0xF9, 0x00, 0x7D, 0x29, 0x00, 0x45, 0x2B, 0x00, 0x45, 0x2E, 0x00, 0x45, 0x26, 0x00, 0x45, 0x24, 0x00, 0x7D, 0x2E, 0x00, 0x03, 0x6A, 0x80, 0x02, 0x1B, 0x80, 0x06, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6661, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x11, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6662, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x0E, 0x44, 0x00, 0x78, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x19, 0x84, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6664, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x22, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6665, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x00, 0x44, 0x00, 0x00, 0x84, 0x80, 0x01, 0x07, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6666, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x25, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x24, 0x51, 0x00, 0x3C, 0x49, 0x00, 0x24, 0x41, 0x00, 0x25, 0xFF, 0x80, 0x24, 0xA2, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6667, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x3C, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x25, 0x10, 0x00, 0x26, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6668, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x11, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x22, 0xF2, 0x00, 0x2F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6669, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x84, 0x00, 0x25, 0x08, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x3C, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x00, 0x44, 0x00, 0x01, 0x84, 0x80, 0x06, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x666A, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x49, 0x00, 0x45, 0x49, 0x00, 0x45, 0x49, 0x00, 0x7D, 0xFF, 0x00, 0x45, 0x49, 0x00, 0x45, 0x49, 0x00, 0x45, 0x49, 0x00, 0x47, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x666B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x1F, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x666C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x45, 0xC6, 0x00, 0x7D, 0x6D, 0x00, 0x46, 0x00, 0x80, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x666E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x09, 0x12, 0x00, 0x05, 0x14, 0x00, 0x05, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x666F, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x21, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6670, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x79, 0x1C, 0x00, 0x4F, 0xD0, 0x00, 0x49, 0x10, 0x00, 0x49, 0x1F, 0x80, 0x49, 0x92, 0x00, 0x7B, 0x52, 0x00, 0x4B, 0x52, 0x00, 0x4D, 0x12, 0x00, 0x49, 0x12, 0x00, 0x49, 0x12, 0x00, 0x79, 0x32, 0x00, 0x01, 0x22, 0x00, 0x01, 0x62, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6673, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x04, 0x38, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x00, 0x0E, 0x3F, 0x80, 0x15, 0x22, 0x00, 0x14, 0x22, 0x00, 0x24, 0x42, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6674, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6675, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x3E, 0x10, 0x00, 0x20, 0x3F, 0x80, 0x3F, 0x22, 0x00, 0x21, 0x66, 0x00, 0x21, 0x14, 0x00, 0x3F, 0x1C, 0x00, 0x20, 0x36, 0x00, 0x20, 0x63, 0x00, 0x60, 0x01, 0x80, 0x4F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6676, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6677, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x07, 0xE4, 0x00, 0x0C, 0x24, 0x00, 0x34, 0x47, 0x80, 0x03, 0x84, 0x00, 0x02, 0xC4, 0x00, 0x0C, 0x3F, 0x80, 0x30, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6678, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x21, 0x00, 0x17, 0xD2, 0x00, 0x14, 0x8C, 0x00, 0x14, 0x08, 0x00, 0x17, 0x94, 0x00, 0x38, 0x62, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6679, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x40, 0x00, 0x44, 0xFF, 0x80, 0x45, 0x94, 0x80, 0x47, 0x14, 0x80, 0x44, 0x24, 0x80, 0x7C, 0xC8, 0x80, 0x00, 0x10, 0x80, 0x00, 0x61, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x667A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xDF, 0x00, 0x22, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xF1, 0x00, 0x05, 0x11, 0x00, 0x08, 0x9F, 0x00, 0x10, 0x91, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x667B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x44, 0x54, 0x00, 0x44, 0x92, 0x00, 0x45, 0xFF, 0x00, 0x7E, 0x92, 0x80, 0x44, 0x92, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x92, 0x00, 0x44, 0x92, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x10, 0x80, 0x00, 0x19, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x667C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x45, 0x01, 0x00, 0x45, 0x01, 0x00, 0x44, 0x80, 0x00, 0x44, 0xEF, 0x00, 0x7D, 0xA9, 0x00, 0x45, 0x29, 0x00, 0x47, 0x29, 0x00, 0x44, 0xA9, 0x00, 0x44, 0x6B, 0x00, 0x7C, 0x48, 0x00, 0x00, 0xC8, 0x80, 0x01, 0x8D, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x667E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x44, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x667F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x7C, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x45, 0xFF, 0x80, 0x45, 0x00, 0x80, 0x45, 0x00, 0x80, 0x7D, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6680, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x98, 0x00, 0x79, 0x08, 0x00, 0x4A, 0x7F, 0x80, 0x4C, 0x88, 0x00, 0x48, 0x88, 0x00, 0x49, 0x88, 0x00, 0x79, 0x08, 0x00, 0x4B, 0x3F, 0x00, 0x4D, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x79, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x7F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6681, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x92, 0x00, 0x48, 0x82, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x82, 0x00, 0x48, 0x82, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x78, 0x44, 0x00, 0x00, 0xC4, 0x80, 0x01, 0x84, 0x80, 0x07, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6682, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x3F, 0x78, 0x00, 0x08, 0x40, 0x00, 0x14, 0x42, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x48, 0x00, 0x7F, 0x48, 0x00, 0x04, 0x88, 0x00, 0x05, 0x08, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6683, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x1E, 0x1F, 0x80, 0x72, 0x10, 0x00, 0x06, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6684, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x2A, 0x00, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6687, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x10, 0x80, 0x25, 0x10, 0x80, 0x25, 0x10, 0x80, 0x25, 0xF7, 0x80, 0x25, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x08, 0x80, 0x25, 0x09, 0x00, 0x25, 0xE6, 0x00, 0x25, 0x04, 0x00, 0x3D, 0x0A, 0x00, 0x01, 0x11, 0x00, 0x01, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6688, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6689, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x3A, 0x10, 0x80, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x39, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x668B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x62, 0x00, 0x24, 0x52, 0x00, 0x3F, 0x94, 0x00, 0x22, 0x08, 0x00, 0x29, 0x14, 0x00, 0x30, 0xA3, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x668C, { 0x00, 0x00, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x2A, 0x00, 0x7E, 0x6C, 0x80, 0x45, 0x45, 0x00, 0x44, 0xC6, 0x00, 0x45, 0x83, 0x00, 0x47, 0x7D, 0x80, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x24, 0x00, 0x7C, 0x64, 0x00, 0x00, 0x46, 0x00, 0x00, 0xC3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x668D, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x40, 0x00, 0x44, 0xFF, 0x80, 0x45, 0x88, 0x80, 0x47, 0x88, 0x80, 0x44, 0x9C, 0x80, 0x7C, 0xB6, 0x80, 0x00, 0x80, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x668E, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x54, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6690, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x21, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x08, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6691, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x58, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x90, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6692, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x90, 0x00, 0x44, 0xFF, 0x00, 0x45, 0x90, 0x00, 0x45, 0x10, 0x00, 0x7C, 0x7E, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6696, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x01, 0xE1, 0x00, 0x78, 0x90, 0x80, 0x49, 0x08, 0x00, 0x4A, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x80, 0x48, 0x40, 0x00, 0x78, 0x7F, 0x00, 0x48, 0xC2, 0x00, 0x41, 0x24, 0x00, 0x06, 0x18, 0x00, 0x00, 0x66, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6697, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6698, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x40, 0x00, 0x3C, 0xFF, 0x80, 0x25, 0x11, 0x80, 0x02, 0x22, 0x80, 0x0C, 0x44, 0x80, 0x00, 0x88, 0x80, 0x03, 0x11, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6699, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x28, 0x00, 0x47, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x44, 0x82, 0x00, 0x45, 0xFF, 0x00, 0x46, 0x82, 0x80, 0x44, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x669A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3E, 0x00, 0x7C, 0x62, 0x00, 0x45, 0xD6, 0x00, 0x44, 0x2C, 0x00, 0x44, 0x18, 0x00, 0x44, 0x70, 0x00, 0x7D, 0xC0, 0x00, 0x44, 0x7F, 0x00, 0x44, 0x90, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x669B, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x40, 0x00, 0x44, 0x40, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x669C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x36, 0x33, 0x00, 0x14, 0x12, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x669D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3D, 0x00, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x24, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x669F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x91, 0x00, 0x7C, 0x91, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x42, 0x00, 0x7C, 0x66, 0x00, 0x00, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66A0, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66A2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x20, 0x00, 0x3E, 0x7F, 0x80, 0x28, 0x92, 0x80, 0x0B, 0x22, 0x80, 0x08, 0x44, 0x80, 0x09, 0x88, 0x80, 0x08, 0x11, 0x00, 0x08, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66A4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x7C, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x44, 0xC6, 0x00, 0x45, 0x93, 0x00, 0x7D, 0x11, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x23, 0x8E, 0x00, 0x2D, 0x55, 0x80, 0x21, 0x04, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x67, 0xFF, 0x00, 0x44, 0x01, 0x00, 0x44, 0x01, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66A7, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x05, 0xF0, 0x00, 0x3E, 0x92, 0x00, 0x24, 0x54, 0x00, 0x27, 0xFF, 0x00, 0x26, 0x21, 0x00, 0x24, 0x22, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x24, 0x7C, 0x00, 0x24, 0x84, 0x00, 0x24, 0xA8, 0x00, 0x3D, 0x10, 0x00, 0x26, 0x28, 0x00, 0x00, 0xC7, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66A8, { 0x00, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x92, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x24, 0x29, 0x00, 0x2E, 0x49, 0x00, 0x31, 0x87, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66AB, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x3F, 0xB8, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66AD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x7C, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x81, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x44, 0xD7, 0x00, 0x44, 0x10, 0x00, 0x44, 0xD7, 0x00, 0x44, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66AE, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x32, 0x09, 0x80, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7D, 0x00, 0x00, 0x45, 0x22, 0x00, 0x45, 0x7F, 0x00, 0x45, 0x22, 0x00, 0x45, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x45, 0x20, 0x00, 0x45, 0x7F, 0x00, 0x45, 0xA1, 0x00, 0x45, 0x21, 0x00, 0x7D, 0x3F, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66B2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66B3, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x38, 0x84, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x2B, 0xEF, 0x00, 0x28, 0x84, 0x00, 0x38, 0xFF, 0x80, 0x2F, 0x84, 0x00, 0x28, 0x84, 0x00, 0x28, 0x84, 0x00, 0x29, 0xFE, 0x00, 0x28, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66B4, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0E, 0x4E, 0x00, 0x31, 0x71, 0x80, 0x01, 0xD0, 0x00, 0x06, 0x4C, 0x00, 0x38, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66B5, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x44, 0x7C, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x7C, 0x28, 0x00, 0x00, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66B8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x49, 0x45, 0x00, 0x48, 0x82, 0x00, 0x49, 0xFF, 0x00, 0x7A, 0x82, 0x80, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x78, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66B9, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x01, 0x10, 0x00, 0x03, 0xFF, 0x00, 0x05, 0xFF, 0x00, 0x39, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0D, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66BB, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x92, 0x00, 0x01, 0x11, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66BC, { 0x00, 0x00, 0x00, 0x2A, 0x20, 0x00, 0x49, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x64, 0x00, 0x49, 0xC4, 0x00, 0x5D, 0x28, 0x00, 0x6B, 0x10, 0x00, 0x49, 0x2C, 0x00, 0x4B, 0x43, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66BE, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x38, 0x84, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x05, 0x00, 0x2B, 0xE9, 0x00, 0x2A, 0x29, 0x00, 0x3B, 0xEA, 0x00, 0x28, 0x1A, 0x00, 0x2B, 0xF6, 0x00, 0x28, 0x44, 0x00, 0x28, 0xF4, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x01, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66BF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x42, 0x7F, 0x00, 0x42, 0x00, 0x00, 0x42, 0x7F, 0x00, 0x42, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x42, 0x22, 0x00, 0x42, 0x14, 0x00, 0x42, 0xFF, 0x80, 0x42, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66C0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x45, 0x7D, 0x00, 0x44, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66C1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x3F, 0x80, 0x3F, 0x0C, 0x00, 0x26, 0x14, 0x00, 0x3C, 0x64, 0x80, 0x23, 0x03, 0x80, 0x1F, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66C2, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x44, 0x00, 0x44, 0x7C, 0x00, 0x44, 0x00, 0x00, 0x47, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66C3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7B, 0x7F, 0x00, 0x49, 0x09, 0x00, 0x4A, 0x7F, 0x80, 0x4B, 0x09, 0x00, 0x49, 0x7F, 0x00, 0x78, 0x08, 0x00, 0x4F, 0x49, 0x00, 0x49, 0x2B, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x6B, 0x00, 0x79, 0x49, 0x80, 0x03, 0x18, 0x00, 0x02, 0x80, 0x00, 0x06, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66C4, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xC7, 0x00, 0x17, 0x1C, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x24, 0x80, 0x11, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66C7, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x2F, 0x5E, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66C8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x82, 0x00, 0x44, 0x44, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x92, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x92, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66C9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x38, 0x84, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0xF4, 0x00, 0x2F, 0x9F, 0x80, 0x38, 0x00, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x48, 0x00, 0x00, 0x88, 0x80, 0x01, 0x0F, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66CC, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x83, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x1C, 0x00, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x49, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x44, 0x82, 0x00, 0x44, 0x44, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66CF, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x33, 0xEF, 0x80, 0x6A, 0x28, 0x80, 0x5B, 0xE9, 0x00, 0x32, 0x2A, 0x00, 0x23, 0xEB, 0x00, 0x7A, 0x08, 0x80, 0x0B, 0xC8, 0x80, 0x1A, 0x0B, 0x80, 0x32, 0x28, 0x00, 0x61, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66D4, { 0x00, 0x00, 0x00, 0x01, 0x48, 0x00, 0x01, 0x48, 0x00, 0x7B, 0xE8, 0x00, 0x49, 0x4F, 0x80, 0x49, 0x59, 0x00, 0x4A, 0x11, 0x00, 0x4B, 0xE9, 0x00, 0x7C, 0x2B, 0x00, 0x4B, 0xAA, 0x00, 0x4A, 0xAA, 0x00, 0x4A, 0xAE, 0x00, 0x4A, 0xA4, 0x00, 0x7B, 0xAE, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x4B, 0x00, 0x00, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66D6, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x38, 0x92, 0x00, 0x28, 0x52, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x28, 0x49, 0x00, 0x39, 0x42, 0x80, 0x2A, 0x7E, 0x00, 0x28, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x28, 0xC4, 0x00, 0x39, 0x28, 0x00, 0x2E, 0x10, 0x00, 0x20, 0x6C, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3A, 0x49, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x20, 0x00, 0x28, 0x21, 0x00, 0x29, 0xFE, 0x00, 0x38, 0x2C, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x68, 0x00, 0x29, 0xFE, 0x00, 0x2E, 0x82, 0x00, 0x38, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66DA, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x07, 0xFF, 0x80, 0x78, 0x84, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x01, 0x00, 0x4A, 0xFD, 0x00, 0x48, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x48, 0x40, 0x00, 0x48, 0xA3, 0x00, 0x4B, 0x56, 0x00, 0x48, 0x98, 0x00, 0x7B, 0x34, 0x00, 0x00, 0xD2, 0x00, 0x07, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66DB, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x45, 0x93, 0x00, 0x7D, 0x55, 0x00, 0x45, 0x39, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x49, 0x00, 0x02, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x38, 0xA2, 0x80, 0x29, 0x24, 0x80, 0x2E, 0x69, 0x80, 0x29, 0xA2, 0x80, 0x2E, 0x2C, 0x80, 0x38, 0x50, 0x00, 0x28, 0xFF, 0x00, 0x29, 0x90, 0x00, 0x2A, 0xFF, 0x00, 0x38, 0x90, 0x00, 0x28, 0xFF, 0x00, 0x00, 0x90, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66DD, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x39, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x38, 0x44, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x39, 0x92, 0x00, 0x2E, 0xBD, 0x80, 0x20, 0x54, 0x00, 0x01, 0x92, 0x00, 0x06, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66DF, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x34, 0x84, 0x00, 0x24, 0xEC, 0x00, 0x67, 0xB8, 0x00, 0x4E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66E0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x55, 0x3E, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x7D, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x02, 0x22, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66E6, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x38, 0x7A, 0x00, 0x2B, 0xC9, 0x00, 0x28, 0x48, 0x00, 0x2F, 0xFF, 0x80, 0x38, 0xE9, 0x00, 0x29, 0x59, 0x00, 0x27, 0xF6, 0x00, 0x00, 0x96, 0x80, 0x01, 0x29, 0x80, 0x02, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66E8, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x4A, 0x28, 0x00, 0x49, 0x4F, 0x00, 0x4F, 0xF1, 0x00, 0x48, 0x0F, 0x00, 0x7B, 0xE8, 0x00, 0x4A, 0x2F, 0x00, 0x4B, 0xE8, 0x00, 0x4A, 0x2F, 0x00, 0x4B, 0xE8, 0x00, 0x7A, 0x2F, 0x00, 0x02, 0x28, 0x00, 0x02, 0x2C, 0x80, 0x02, 0x67, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66E9, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x06, 0x48, 0x00, 0x38, 0x30, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66EB, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x68, 0x05, 0x00, 0x11, 0xE2, 0x00, 0x24, 0x04, 0x80, 0x7D, 0xEF, 0x80, 0x11, 0x22, 0x00, 0x59, 0x2B, 0x00, 0x55, 0xEA, 0x80, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66EC, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x00, 0x00, 0x7B, 0xEF, 0x80, 0x4A, 0x28, 0x80, 0x4A, 0xAA, 0x80, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x7A, 0x48, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x88, 0x00, 0x7A, 0xEF, 0x00, 0x02, 0x88, 0x00, 0x04, 0xE8, 0x80, 0x01, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66EE, { 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x79, 0xEF, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x00, 0x4A, 0xF4, 0x00, 0x7A, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x99, 0x00, 0x4A, 0xF5, 0x00, 0x4A, 0x97, 0x00, 0x7A, 0xF2, 0x00, 0x06, 0x97, 0x00, 0x04, 0xFD, 0x80, 0x01, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66F2, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66F3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x00, 0x42, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC8, 0x80, 0x07, 0x06, 0x80, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x04, 0x80, 0x00, 0x03, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x0C, 0x38, 0x00, 0x30, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66F5, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x58, 0x80, 0x00, 0xF0, 0x80, 0x07, 0x9C, 0x80, 0x7C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x20, 0x80, 0x28, 0x50, 0x80, 0x08, 0x88, 0x80, 0x09, 0x04, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66F8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66F9, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66FA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x3F, 0x80, 0x39, 0x24, 0x00, 0x69, 0x24, 0x00, 0x07, 0x24, 0x00, 0x06, 0xFF, 0x80, 0x1C, 0x04, 0x00, 0x70, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66FC, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x01, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x66FD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66FE, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x1F, 0xFF, 0x80, 0x2A, 0x4A, 0x00, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x66FF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x05, 0x14, 0x00, 0x08, 0xA2, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6700, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x08, 0x00, 0x17, 0x08, 0x00, 0x39, 0x14, 0x00, 0x01, 0x22, 0x00, 0x01, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6703, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x3B, 0xFB, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x4A, 0x00, 0x09, 0x52, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6705, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0xC8, 0x80, 0x11, 0xC8, 0x80, 0x32, 0x5C, 0x80, 0x22, 0x76, 0x80, 0x3F, 0x40, 0x80, 0x61, 0x7D, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6707, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x08, 0x00, 0x11, 0x1F, 0x80, 0x6E, 0xD4, 0x80, 0x00, 0x14, 0x80, 0x7F, 0xDF, 0x80, 0x44, 0x54, 0x80, 0x55, 0x54, 0x80, 0x44, 0x5F, 0x80, 0x7F, 0xCA, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x92, 0x00, 0x20, 0xFF, 0x80, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6708, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6709, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x670A, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x1E, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x22, 0x49, 0x00, 0x22, 0x89, 0x00, 0x4B, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x670B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x9F, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x1F, 0x9F, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x1F, 0x9F, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x20, 0xA0, 0x80, 0x21, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x670D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x47, 0x00, 0x11, 0x40, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x62, 0x00, 0x11, 0x52, 0x00, 0x11, 0x54, 0x00, 0x11, 0x48, 0x00, 0x11, 0x4C, 0x00, 0x21, 0x52, 0x00, 0x23, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x670E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x6C, 0x00, 0x22, 0xC6, 0x00, 0x23, 0x83, 0x80, 0x3E, 0x7C, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x27, 0x00, 0x62, 0x20, 0x00, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x670F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x62, 0x91, 0x00, 0x4E, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6710, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x1F, 0x40, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x12, 0x7A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x1E, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x7A, 0x00, 0x22, 0x42, 0x00, 0x22, 0x02, 0x00, 0x4A, 0x0A, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6713, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x28, 0x00, 0x25, 0x29, 0x00, 0x25, 0xAB, 0x00, 0x24, 0xAE, 0x00, 0x3C, 0xA8, 0x00, 0x24, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x2E, 0x00, 0x3C, 0xEB, 0x00, 0x27, 0xA9, 0x00, 0x24, 0x28, 0x00, 0x24, 0x68, 0x00, 0x24, 0x48, 0x80, 0x64, 0xC9, 0x80, 0x4D, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6714, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x04, 0x9F, 0x80, 0x04, 0x90, 0x80, 0x01, 0x10, 0x80, 0x3F, 0xF0, 0x80, 0x02, 0x1F, 0x80, 0x12, 0x50, 0x80, 0x12, 0x50, 0x80, 0x12, 0x50, 0x80, 0x12, 0x5F, 0x80, 0x1F, 0xD0, 0x80, 0x12, 0x50, 0x80, 0x04, 0x10, 0x80, 0x04, 0x20, 0x80, 0x08, 0x20, 0x80, 0x10, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6715, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1C, 0x00, 0x12, 0x04, 0x00, 0x12, 0x42, 0x00, 0x1A, 0x81, 0x80, 0x17, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x12, 0x18, 0x00, 0x12, 0x14, 0x00, 0x12, 0x24, 0x00, 0x12, 0x22, 0x00, 0x22, 0x41, 0x00, 0x26, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6716, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x48, 0x80, 0x22, 0x49, 0x80, 0x22, 0x4D, 0x00, 0x22, 0x44, 0x00, 0x22, 0x46, 0x00, 0x62, 0x7B, 0x00, 0x4E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6717, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x1F, 0x90, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x1F, 0x9F, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x1F, 0x90, 0x80, 0x10, 0x5F, 0x80, 0x14, 0x90, 0x80, 0x13, 0x10, 0x80, 0x11, 0x10, 0x80, 0x1E, 0xA0, 0x80, 0x30, 0x40, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6719, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x4A, 0x51, 0x00, 0x4A, 0x51, 0x00, 0x4A, 0x5F, 0x00, 0x52, 0x51, 0x00, 0x61, 0xD1, 0x00, 0x40, 0x51, 0x00, 0x4E, 0x5F, 0x00, 0x4A, 0x51, 0x00, 0x4A, 0x51, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x31, 0x00, 0x00, 0x21, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x671B, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x10, 0x1F, 0x00, 0x10, 0x11, 0x00, 0x10, 0x3F, 0x00, 0x1F, 0xE1, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x671C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x04, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x62, 0x08, 0x00, 0x4E, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x671D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x80, 0x3F, 0xF0, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x1F, 0xDF, 0x80, 0x10, 0x50, 0x80, 0x1F, 0xD0, 0x80, 0x10, 0x50, 0x80, 0x1F, 0xDF, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x3F, 0xF0, 0x80, 0x02, 0x10, 0x80, 0x02, 0x20, 0x80, 0x02, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x671E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x05, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x671F, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xF1, 0x00, 0x08, 0x91, 0x00, 0x08, 0x9F, 0x00, 0x0F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xF1, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x00, 0x20, 0xA3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6720, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x14, 0x00, 0x22, 0x14, 0x00, 0x22, 0x36, 0x00, 0x62, 0x63, 0x00, 0x4E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6722, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0x21, 0x00, 0x3F, 0xC3, 0x00, 0x00, 0x1C, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6726, { 0x00, 0x00, 0x00, 0x1C, 0x42, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x42, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x00, 0x80, 0x1C, 0x7E, 0x00, 0x14, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x34, 0x00, 0x14, 0x5C, 0x80, 0x1C, 0xAF, 0x00, 0x17, 0x4A, 0x00, 0x15, 0x95, 0x00, 0x14, 0x65, 0x00, 0x25, 0x84, 0x80, 0x2C, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6727, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x17, 0xEF, 0x80, 0x15, 0x48, 0x00, 0x15, 0x4F, 0x80, 0x1F, 0xF0, 0x80, 0x14, 0x0F, 0x80, 0x15, 0xE8, 0x00, 0x15, 0x28, 0x00, 0x1D, 0xEF, 0x80, 0x15, 0x28, 0x00, 0x15, 0xE8, 0x00, 0x15, 0x2F, 0x80, 0x15, 0x28, 0x00, 0x25, 0x28, 0x80, 0x2D, 0x6F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6728, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x672A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x672B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x672C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x672D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x16, 0x10, 0x00, 0x15, 0x10, 0x00, 0x14, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x1F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x672E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0x44, 0x80, 0x10, 0x47, 0x80, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x672F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x98, 0x00, 0x00, 0x88, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x87, 0x00, 0x60, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6731, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6733, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x7E, 0x04, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x18, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0x46, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x83, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6734, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x07, 0x06, 0x00, 0x06, 0x85, 0x00, 0x0A, 0x44, 0x80, 0x0A, 0x04, 0x00, 0x12, 0x04, 0x00, 0x22, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6735, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x18, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8E, 0x00, 0x30, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6736, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x1F, 0x80, 0x02, 0x10, 0x80, 0x02, 0x20, 0x80, 0x04, 0x00, 0x80, 0x08, 0x07, 0x00, 0x30, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6737, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x7E, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x1C, 0x21, 0x00, 0x1A, 0x21, 0x00, 0x1A, 0x21, 0x00, 0x28, 0x61, 0x00, 0x28, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0xC3, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x0B, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6738, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x1C, 0x11, 0x00, 0x1A, 0x11, 0x00, 0x1A, 0x11, 0x00, 0x28, 0x31, 0x00, 0x28, 0x21, 0x00, 0x48, 0x21, 0x00, 0x08, 0x63, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x673A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x15, 0x44, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x84, 0x80, 0x04, 0x84, 0x80, 0x05, 0x07, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x673D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x1F, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x15, 0x3F, 0x80, 0x14, 0x40, 0x80, 0x14, 0x00, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x01, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x673E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x1A, 0x04, 0x00, 0x19, 0x04, 0x00, 0x28, 0x04, 0x00, 0x28, 0x04, 0x00, 0x48, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x673F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC2, 0x00, 0x11, 0xEE, 0x00, 0x02, 0xB0, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6740, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x04, 0x18, 0x00, 0x03, 0x60, 0x00, 0x00, 0x80, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x84, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8E, 0x00, 0x30, 0x84, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6741, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x19, 0x38, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x48, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6742, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x08, 0x8E, 0x00, 0x10, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x12, 0x84, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6743, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x09, 0x04, 0x00, 0x18, 0x84, 0x00, 0x1C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x50, 0x00, 0x48, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x09, 0x07, 0x00, 0x0A, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6745, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0xFF, 0x80, 0x19, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6746, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0D, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6747, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x40, 0x00, 0x1A, 0x40, 0x00, 0x18, 0x40, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6748, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x7E, 0x21, 0x00, 0x08, 0xB3, 0x00, 0x08, 0x92, 0x00, 0x1D, 0x96, 0x00, 0x1B, 0x44, 0x00, 0x19, 0x4C, 0x00, 0x28, 0x68, 0x00, 0x28, 0x38, 0x00, 0x48, 0x30, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6749, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x21, 0x00, 0x0E, 0xC2, 0x00, 0x15, 0x04, 0x00, 0x14, 0x88, 0x00, 0x24, 0x10, 0x80, 0x24, 0x21, 0x00, 0x04, 0xC2, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x04, 0x30, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x674C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x24, 0x00, 0x1A, 0x24, 0x00, 0x19, 0x24, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x674E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x03, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x674F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6750, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0E, 0x0A, 0x00, 0x15, 0x0A, 0x00, 0x14, 0x92, 0x00, 0x14, 0x12, 0x00, 0x24, 0x22, 0x00, 0x24, 0x42, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6751, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x3A, 0x44, 0x00, 0x28, 0x24, 0x00, 0x28, 0x14, 0x00, 0x28, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6753, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x04, 0x7F, 0x80, 0x0C, 0x80, 0x80, 0x0E, 0x00, 0x80, 0x15, 0x00, 0x80, 0x14, 0x7C, 0x80, 0x14, 0x00, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x01, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6754, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x80, 0x19, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x19, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6755, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x18, 0x38, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x48, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x83, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6756, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x18, 0x48, 0x00, 0x18, 0xC8, 0x00, 0x3D, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0xC2, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6759, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x13, 0x00, 0x08, 0x11, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x1A, 0x18, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x0C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x06, 0x80, 0x08, 0x03, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x675C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x14, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x675D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x7E, 0x93, 0x00, 0x08, 0x9D, 0x00, 0x08, 0xB1, 0x00, 0x1C, 0xD1, 0x00, 0x1B, 0x91, 0x00, 0x18, 0x91, 0x00, 0x28, 0x93, 0x00, 0x28, 0x90, 0x00, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x675E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x1F, 0x01, 0x00, 0x04, 0x01, 0x00, 0x0C, 0x01, 0x00, 0x0E, 0x01, 0x00, 0x15, 0x7F, 0x00, 0x14, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x675F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6760, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6761, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x3B, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6762, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6763, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0x88, 0x80, 0x1A, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6764, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x3F, 0x00, 0x1A, 0x21, 0x00, 0x1A, 0x21, 0x00, 0x28, 0x21, 0x00, 0x28, 0x21, 0x00, 0x48, 0x61, 0x00, 0x08, 0x43, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6765, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x02, 0xB0, 0x00, 0x06, 0x90, 0x00, 0x04, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6766, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x46, 0x00, 0x1C, 0xC4, 0x00, 0x1A, 0x04, 0x00, 0x19, 0x0C, 0x00, 0x28, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x48, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6768, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x42, 0x00, 0x19, 0xFF, 0x00, 0x1C, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x28, 0x52, 0x00, 0x48, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x42, 0x00, 0x08, 0x94, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6769, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x2A, 0x8A, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x02, 0x00, 0x08, 0x12, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x676A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x54, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x19, 0x91, 0x80, 0x1C, 0x10, 0x00, 0x1A, 0x11, 0x00, 0x2A, 0x13, 0x00, 0x28, 0x72, 0x00, 0x48, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x30, 0x00, 0x08, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x676C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x24, 0x00, 0x19, 0x24, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x676D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1C, 0x7C, 0x00, 0x1A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x676E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x88, 0x80, 0x18, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0x8B, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x676F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x1F, 0x01, 0x00, 0x04, 0x02, 0x00, 0x0C, 0x04, 0x00, 0x0E, 0x0C, 0x00, 0x15, 0x1A, 0x00, 0x14, 0x29, 0x00, 0x24, 0x48, 0x80, 0x05, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6770, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6771, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6772, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6773, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6774, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x68, 0x80, 0x08, 0x49, 0x80, 0x1C, 0xC9, 0x00, 0x1A, 0x08, 0x00, 0x19, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x28, 0x14, 0x00, 0x48, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6775, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x88, 0x00, 0x19, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x3A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6776, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x13, 0x00, 0x08, 0x1E, 0x00, 0x7E, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x18, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x19, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6777, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x04, 0x49, 0x00, 0x0C, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x14, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x677B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x08, 0x11, 0x00, 0x1C, 0x11, 0x00, 0x1A, 0x11, 0x00, 0x18, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x677C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x08, 0x80, 0x1A, 0x09, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x677E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x22, 0x00, 0x18, 0x42, 0x00, 0x1C, 0x41, 0x00, 0x3A, 0x90, 0x80, 0x29, 0x10, 0x00, 0x28, 0x20, 0x00, 0x28, 0x44, 0x00, 0x08, 0x42, 0x00, 0x08, 0x9E, 0x00, 0x09, 0xE1, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x677F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x18, 0xFF, 0x00, 0x1C, 0xC2, 0x00, 0x3A, 0xA2, 0x00, 0x28, 0xA4, 0x00, 0x28, 0x94, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x08, 0x94, 0x00, 0x09, 0x22, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6781, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x26, 0x00, 0x08, 0x24, 0x00, 0x08, 0x3F, 0x00, 0x1C, 0x21, 0x00, 0x1A, 0x71, 0x00, 0x19, 0x53, 0x00, 0x28, 0x5A, 0x00, 0x28, 0x4E, 0x00, 0x48, 0xC4, 0x00, 0x08, 0x8E, 0x00, 0x09, 0x9A, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6784, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0xD0, 0x80, 0x1C, 0x90, 0x80, 0x1A, 0x10, 0x80, 0x19, 0x34, 0x80, 0x28, 0x24, 0x80, 0x28, 0x64, 0x80, 0x48, 0x5E, 0x80, 0x08, 0xF2, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6785, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6787, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0x89, 0x80, 0x1C, 0xEE, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, 0x08, 0xF8, 0x80, 0x0B, 0x8F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6789, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x678B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x3F, 0x00, 0x28, 0x21, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x678C, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x7E, 0x82, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x18, 0xFE, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x28, 0x22, 0x00, 0x48, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x46, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x678E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x48, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x678F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6790, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x04, 0x78, 0x00, 0x04, 0x40, 0x00, 0x1F, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x0E, 0x7F, 0x80, 0x15, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x24, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6791, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x18, 0xC2, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6793, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x24, 0x00, 0x04, 0x14, 0x00, 0x1F, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x44, 0x00, 0x0E, 0x24, 0x00, 0x15, 0x04, 0x00, 0x14, 0x04, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x80, 0x04, 0x3C, 0x00, 0x05, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6795, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x18, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x3A, 0x18, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x28, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6796, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x08, 0x00, 0x19, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x28, 0x14, 0x00, 0x48, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6797, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x0D, 0x1A, 0x00, 0x14, 0xAA, 0x00, 0x14, 0x29, 0x00, 0x24, 0x48, 0x80, 0x24, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6798, { 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0x9C, 0x80, 0x18, 0xB6, 0x80, 0x28, 0xE3, 0x80, 0x28, 0x80, 0x80, 0x48, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6799, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x1C, 0xA1, 0x00, 0x1A, 0xA1, 0x00, 0x18, 0xA1, 0x00, 0x28, 0xA1, 0x00, 0x28, 0xA3, 0x00, 0x49, 0xA0, 0x00, 0x09, 0x20, 0x00, 0x0B, 0x20, 0x80, 0x08, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x679A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x10, 0x00, 0x04, 0x1F, 0x80, 0x0C, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x52, 0x00, 0x14, 0x92, 0x00, 0x15, 0x14, 0x00, 0x24, 0x08, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x05, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x679B, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF2, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x18, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x00, 0x09, 0x11, 0x00, 0x0B, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x679C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x679D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x3A, 0xFF, 0x80, 0x28, 0x21, 0x00, 0x28, 0x22, 0x00, 0x28, 0x12, 0x00, 0x08, 0x14, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x08, 0x62, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x679E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x29, 0x54, 0x00, 0x49, 0x54, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x22, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x81, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFC, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x64, 0x00, 0x0C, 0x44, 0x80, 0x1A, 0xC4, 0x80, 0x19, 0x83, 0x80, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A1, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x72, 0x00, 0x09, 0xC2, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x08, 0x81, 0x00, 0x08, 0xB3, 0x00, 0x1C, 0x9A, 0x00, 0x1A, 0x8E, 0x00, 0x1A, 0x84, 0x00, 0x28, 0x8E, 0x00, 0x28, 0x9B, 0x00, 0x48, 0xB1, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x11, 0xC4, 0x00, 0x12, 0xA8, 0x00, 0x04, 0x98, 0x00, 0x18, 0x07, 0x00, 0x63, 0x82, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x07, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x09, 0x22, 0x00, 0x19, 0xFF, 0x00, 0x1D, 0x22, 0x00, 0x2B, 0x22, 0x00, 0x29, 0x22, 0x00, 0x49, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x94, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x80, 0x00, 0x28, 0x80, 0x00, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x09, 0x80, 0x00, 0x09, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A7, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x94, 0x00, 0x7E, 0x94, 0x00, 0x08, 0x94, 0x00, 0x18, 0x94, 0x00, 0x1C, 0x94, 0x00, 0x2A, 0xA4, 0x00, 0x28, 0xA4, 0x00, 0x48, 0x30, 0x00, 0x08, 0x50, 0x00, 0x08, 0x51, 0x00, 0x08, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A8, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x90, 0x00, 0x7E, 0xA0, 0x00, 0x08, 0xC0, 0x00, 0x18, 0x82, 0x00, 0x1D, 0xFF, 0x00, 0x2A, 0xA0, 0x00, 0x28, 0x90, 0x00, 0x48, 0x90, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA7, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67A9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x04, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x72, 0x03, 0x80, 0x02, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x04, 0xF6, 0x00, 0x3F, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67AA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x07, 0x00, 0x1A, 0xFA, 0x00, 0x1C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x48, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67AB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x09, 0x04, 0x00, 0x1D, 0x8C, 0x00, 0x1B, 0x54, 0x00, 0x29, 0x24, 0x00, 0x29, 0x24, 0x00, 0x49, 0x54, 0x00, 0x09, 0x8C, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x05, 0x00, 0x0A, 0x05, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67AD, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xB0, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x01, 0xCA, 0x00, 0x02, 0xA4, 0x00, 0x0C, 0x98, 0x00, 0x30, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67AF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x52, 0x00, 0x1C, 0x52, 0x00, 0x3A, 0x91, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x62, 0x00, 0x7E, 0x43, 0x00, 0x08, 0xC1, 0x00, 0x08, 0x9F, 0x00, 0x1D, 0xF1, 0x80, 0x1A, 0x00, 0x80, 0x18, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B2, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x7C, 0x00, 0x3F, 0xC6, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x18, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x3A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67B4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x21, 0x00, 0x28, 0x21, 0x00, 0x48, 0x61, 0x00, 0x08, 0x41, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x82, 0x00, 0x0B, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x80, 0x19, 0x20, 0x00, 0x28, 0x40, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B6, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xDF, 0x00, 0x02, 0x51, 0x00, 0x04, 0x51, 0x00, 0x04, 0x51, 0x00, 0x08, 0x51, 0x00, 0x11, 0xDF, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67B7, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x47, 0x80, 0x3F, 0xF4, 0x80, 0x04, 0x54, 0x80, 0x0E, 0x54, 0x80, 0x0D, 0x54, 0x80, 0x15, 0x54, 0x80, 0x14, 0x54, 0x80, 0x14, 0x54, 0x80, 0x24, 0x54, 0x80, 0x24, 0x54, 0x80, 0x04, 0x54, 0x80, 0x04, 0x94, 0x80, 0x04, 0xB7, 0x80, 0x05, 0x04, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67B8, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x0C, 0x40, 0x80, 0x0C, 0x80, 0x80, 0x16, 0x80, 0x80, 0x15, 0x7C, 0x80, 0x14, 0x44, 0x80, 0x24, 0x44, 0x80, 0x24, 0x7C, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67B9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0xC1, 0x00, 0x08, 0x81, 0x00, 0x09, 0xF9, 0x00, 0x18, 0x89, 0x00, 0x1C, 0x89, 0x00, 0x1A, 0x89, 0x00, 0x2A, 0xFB, 0x00, 0x28, 0x82, 0x00, 0x48, 0x8E, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67BB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x18, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x9E, 0x00, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67BC, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67BD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67BE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x15, 0x49, 0x00, 0x14, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x05, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x00, 0x1C, 0x88, 0x00, 0x1A, 0xFF, 0x00, 0x18, 0xA1, 0x00, 0x28, 0xA3, 0x00, 0x28, 0xB2, 0x00, 0x48, 0x96, 0x00, 0x09, 0x8C, 0x00, 0x09, 0x1E, 0x00, 0x0B, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67C1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x1C, 0x20, 0x00, 0x1A, 0x23, 0x00, 0x1A, 0x2E, 0x00, 0x28, 0x38, 0x00, 0x28, 0x20, 0x00, 0x48, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C2, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0x88, 0x00, 0x1C, 0x4B, 0x00, 0x1A, 0x4D, 0x00, 0x18, 0x59, 0x00, 0x28, 0x69, 0x00, 0x28, 0xCB, 0x00, 0x48, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x40, 0x80, 0x08, 0x61, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x3C, 0x00, 0x7E, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x09, 0xBD, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x21, 0x00, 0x28, 0x21, 0x00, 0x48, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x27, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x3A, 0x88, 0x80, 0x28, 0x94, 0x80, 0x28, 0xA2, 0x80, 0x28, 0xC2, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67C5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x80, 0x00, 0x1A, 0xA0, 0x00, 0x18, 0xA3, 0x00, 0x28, 0xAE, 0x00, 0x28, 0xB8, 0x00, 0x48, 0xA0, 0x00, 0x09, 0xA0, 0x00, 0x09, 0x20, 0x80, 0x0B, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x1A, 0x66, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x18, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67C9, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x02, 0x00, 0x18, 0x06, 0x00, 0x28, 0x04, 0x00, 0x28, 0x0C, 0x00, 0x48, 0x18, 0x00, 0x08, 0x30, 0x00, 0x08, 0x78, 0x00, 0x09, 0xCC, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67CA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x7E, 0xC4, 0x00, 0x09, 0x8C, 0x00, 0x08, 0x58, 0x00, 0x1C, 0x30, 0x00, 0x1A, 0x78, 0x00, 0x18, 0xCE, 0x00, 0x2B, 0x83, 0x80, 0x28, 0x70, 0x00, 0x48, 0x18, 0x00, 0x08, 0x00, 0x00, 0x08, 0xE0, 0x00, 0x08, 0x38, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67CE, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x7E, 0xC2, 0x00, 0x08, 0xBF, 0x80, 0x08, 0x82, 0x00, 0x1D, 0x82, 0x00, 0x1A, 0x92, 0x00, 0x18, 0x9A, 0x00, 0x28, 0x8A, 0x00, 0x28, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67CF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x7F, 0x80, 0x04, 0x40, 0x80, 0x0C, 0x40, 0x80, 0x0C, 0x40, 0x80, 0x16, 0x40, 0x80, 0x15, 0x7F, 0x80, 0x14, 0x40, 0x80, 0x24, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x04, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67D0, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67D1, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0xFF, 0x80, 0x0C, 0x22, 0x00, 0x0C, 0x22, 0x00, 0x16, 0x22, 0x00, 0x15, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x24, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67D2, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x2F, 0x80, 0x23, 0xF0, 0x00, 0x10, 0x20, 0x00, 0x04, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67D3, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFC, 0x00, 0x20, 0x24, 0x00, 0x14, 0x24, 0x00, 0x04, 0x44, 0x80, 0x08, 0x44, 0x80, 0x10, 0x87, 0x80, 0x23, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67D4, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC1, 0x00, 0x01, 0x42, 0x00, 0x06, 0x40, 0x00, 0x38, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67D7, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x63, 0x00, 0x08, 0x41, 0x00, 0x08, 0xC1, 0x80, 0x1C, 0x80, 0x80, 0x1A, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67D8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x30, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x7F, 0x00, 0x18, 0xC1, 0x00, 0x29, 0xC1, 0x00, 0x28, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67D9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0x88, 0x80, 0x18, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67DA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x88, 0x80, 0x1C, 0x88, 0x80, 0x3A, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67DC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x81, 0x00, 0x18, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67DD, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x18, 0xFF, 0x80, 0x18, 0x84, 0x00, 0x3C, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x28, 0x94, 0x00, 0x28, 0x8C, 0x00, 0x28, 0x86, 0x00, 0x08, 0x85, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67DE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x90, 0x00, 0x09, 0x90, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x1F, 0x00, 0x1A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x01, 0x00, 0x0A, 0x02, 0x00, 0x18, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x1A, 0x11, 0x00, 0x19, 0xD3, 0x00, 0x28, 0x5A, 0x00, 0x28, 0x5C, 0x00, 0x48, 0xD4, 0x00, 0x08, 0x96, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E2, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x88, 0x00, 0x1A, 0x88, 0x00, 0x28, 0x8C, 0x00, 0x28, 0x84, 0x00, 0x48, 0xE4, 0x00, 0x0B, 0x86, 0x00, 0x08, 0x02, 0x80, 0x0B, 0xFB, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xFF, 0x00, 0x68, 0x0A, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x19, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67E7, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF2, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x93, 0x00, 0x09, 0x95, 0x00, 0x09, 0x7D, 0x00, 0x0B, 0x05, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67E9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x90, 0x00, 0x3E, 0x9F, 0x00, 0x08, 0xA2, 0x00, 0x18, 0xA2, 0x00, 0x1C, 0xD4, 0x00, 0x3A, 0x94, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x94, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67EC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x45, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x11, 0x51, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xE1, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67EE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67EF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x1C, 0xF2, 0x00, 0x2A, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x28, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67F0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x40, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67F1, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0D, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67F2, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x26, 0x00, 0x1A, 0xA4, 0x00, 0x18, 0xAF, 0x00, 0x28, 0xA9, 0x80, 0x29, 0xB8, 0x80, 0x49, 0x30, 0x00, 0x08, 0x20, 0x00, 0x08, 0xE1, 0x00, 0x0B, 0xB3, 0x00, 0x08, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67F3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x6F, 0x00, 0x09, 0x89, 0x00, 0x3F, 0x29, 0x00, 0x09, 0x29, 0x00, 0x19, 0x29, 0x00, 0x1D, 0x29, 0x00, 0x1B, 0x29, 0x00, 0x29, 0x29, 0x00, 0x29, 0xE9, 0x00, 0x2B, 0x29, 0x00, 0x08, 0x49, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67F4, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0x13, 0x80, 0x09, 0xFC, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x80, 0x09, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67F5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x18, 0xAA, 0x00, 0x1C, 0xAA, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67F6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x18, 0x94, 0x80, 0x1C, 0x94, 0x80, 0x3A, 0x94, 0x80, 0x28, 0xA7, 0x80, 0x28, 0xC0, 0x80, 0x28, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67F7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x67F9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x17, 0x00, 0x7E, 0xFC, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x1C, 0x90, 0x00, 0x1A, 0x90, 0x00, 0x18, 0xFF, 0x80, 0x28, 0x50, 0x80, 0x28, 0x50, 0x80, 0x48, 0x50, 0x80, 0x08, 0xD0, 0x80, 0x08, 0x90, 0x80, 0x09, 0x91, 0x80, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67FB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67FD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x50, 0x00, 0x08, 0x20, 0x00, 0x18, 0x58, 0x00, 0x1D, 0x87, 0x00, 0x2A, 0x22, 0x00, 0x28, 0x28, 0x00, 0x49, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67FE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x48, 0x00, 0x18, 0x48, 0x00, 0x3C, 0x4F, 0x80, 0x2A, 0x48, 0x00, 0x28, 0x48, 0x00, 0x28, 0x48, 0x00, 0x28, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x67FF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x1B, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x17, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6800, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x7F, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x00, 0x00, 0x1D, 0x7C, 0x00, 0x2B, 0x44, 0x00, 0x29, 0x44, 0x00, 0x49, 0x54, 0x00, 0x09, 0x48, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0x3F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6802, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x99, 0x00, 0x08, 0x89, 0x00, 0x1C, 0x81, 0x00, 0x1B, 0xFF, 0x80, 0x19, 0x01, 0x00, 0x29, 0x21, 0x00, 0x29, 0x31, 0x00, 0x49, 0x11, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6803, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF0, 0x00, 0x7E, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x90, 0x00, 0x1C, 0x90, 0x00, 0x1A, 0x9F, 0x00, 0x1A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x28, 0x91, 0x00, 0x49, 0xB1, 0x00, 0x09, 0x23, 0x00, 0x0B, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6804, { 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x31, 0x86, 0x00, 0x18, 0x8C, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x04, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6805, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xDF, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x7E, 0x52, 0x00, 0x12, 0x52, 0x00, 0x3A, 0x52, 0x00, 0x37, 0xFF, 0x00, 0x52, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x14, 0xD2, 0x00, 0x18, 0x2A, 0x00, 0x10, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6807, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x02, 0x00, 0x1B, 0xFF, 0x00, 0x1C, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x28, 0xA8, 0x00, 0x48, 0xA4, 0x00, 0x09, 0x26, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6808, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x48, 0x00, 0x08, 0x44, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x7C, 0x00, 0x09, 0xC0, 0x00, 0x18, 0x44, 0x00, 0x1C, 0x7E, 0x00, 0x2B, 0xC0, 0x00, 0x28, 0x24, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC9, 0x00, 0x0B, 0x05, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6809, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x04, 0x00, 0x19, 0xFE, 0x00, 0x1C, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0x54, 0x00, 0x08, 0x48, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x680A, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x18, 0x50, 0x00, 0x1C, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x28, 0x54, 0x00, 0x48, 0x94, 0x00, 0x08, 0x98, 0x00, 0x09, 0x31, 0x00, 0x09, 0x51, 0x00, 0x0A, 0x0F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x680B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x7E, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x50, 0x00, 0x1A, 0x92, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x94, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x680C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x02, 0x00, 0x1D, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x680E, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x12, 0x00, 0x1D, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x680F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x52, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6811, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xE4, 0x00, 0x7E, 0x3F, 0x00, 0x0A, 0x24, 0x00, 0x19, 0x44, 0x00, 0x1D, 0x54, 0x00, 0x28, 0x8C, 0x00, 0x28, 0x84, 0x00, 0x49, 0x44, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6812, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x19, 0x00, 0x80, 0x1C, 0x7C, 0x80, 0x3A, 0x44, 0x80, 0x29, 0x7C, 0x80, 0x28, 0x44, 0x80, 0x28, 0x7C, 0x80, 0x28, 0x44, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6813, { 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x41, 0x00, 0x09, 0x80, 0x80, 0x18, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x3A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6814, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x18, 0x80, 0x1F, 0x91, 0x80, 0x74, 0x33, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6816, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x14, 0x00, 0x1F, 0x14, 0x00, 0x04, 0x14, 0x00, 0x0C, 0x7F, 0x00, 0x0E, 0x55, 0x00, 0x15, 0x55, 0x00, 0x14, 0x55, 0x00, 0x14, 0x57, 0x00, 0x24, 0x61, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6817, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6819, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0xC2, 0x00, 0x09, 0xA4, 0x00, 0x08, 0x18, 0x00, 0x1C, 0x6E, 0x00, 0x1B, 0xC3, 0x80, 0x18, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x88, 0x00, 0x48, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x681D, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x19, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x681E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x84, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x681F, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x08, 0x63, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x1A, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x48, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6821, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x0C, 0x41, 0x00, 0x0E, 0x80, 0x80, 0x15, 0x42, 0x00, 0x14, 0x22, 0x00, 0x24, 0x24, 0x00, 0x24, 0x14, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x04, 0x14, 0x00, 0x04, 0x62, 0x00, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6822, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x3E, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x38, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6827, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x28, 0x19, 0x00, 0x48, 0x0B, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x1C, 0x80, 0x08, 0x76, 0x80, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6828, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x3F, 0x80, 0x13, 0xA0, 0x80, 0x10, 0x69, 0x80, 0x38, 0x49, 0x00, 0x34, 0x08, 0x00, 0x54, 0x08, 0x00, 0x50, 0x88, 0x00, 0x10, 0x9C, 0x00, 0x11, 0x94, 0x00, 0x11, 0x16, 0x00, 0x13, 0x32, 0x00, 0x12, 0x23, 0x00, 0x10, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6829, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x7C, 0x21, 0x00, 0x10, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x39, 0xAD, 0x00, 0x35, 0x29, 0x00, 0x54, 0x63, 0x00, 0x50, 0xA5, 0x00, 0x11, 0xAD, 0x00, 0x13, 0x39, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0xE7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x682A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x3E, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x3A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x38, 0x00, 0x28, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x682B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x08, 0x60, 0x00, 0x0C, 0x5F, 0x00, 0x1A, 0xC1, 0x00, 0x18, 0x82, 0x00, 0x19, 0x84, 0x00, 0x2A, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x48, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x682C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x08, 0xC4, 0x00, 0x7E, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0x91, 0x00, 0x18, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x80, 0x00, 0x48, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x682D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x1C, 0x94, 0x80, 0x1A, 0x94, 0x80, 0x1A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0x94, 0x80, 0x48, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x682F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x18, 0x40, 0x00, 0x1C, 0x7E, 0x00, 0x3A, 0xC2, 0x00, 0x29, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6830, { 0x00, 0x00, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x2B, 0x00, 0x08, 0x69, 0x00, 0x7E, 0x48, 0x00, 0x08, 0xC8, 0x00, 0x08, 0xBF, 0x80, 0x1D, 0x88, 0x00, 0x1A, 0x89, 0x00, 0x1A, 0x89, 0x00, 0x28, 0x8A, 0x00, 0x28, 0x8A, 0x00, 0x48, 0x8C, 0x00, 0x08, 0x84, 0x80, 0x08, 0x86, 0x80, 0x08, 0x8B, 0x80, 0x08, 0x91, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6831, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x24, 0x00, 0x1A, 0x24, 0x00, 0x1A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6832, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x12, 0x00, 0x08, 0x14, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x1A, 0x3F, 0x00, 0x18, 0xE0, 0x00, 0x2B, 0x20, 0x00, 0x28, 0x3F, 0x00, 0x48, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6833, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x12, 0x00, 0x08, 0x16, 0x00, 0x08, 0x14, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x18, 0x00, 0x1A, 0x30, 0x00, 0x28, 0xE3, 0x00, 0x29, 0xAE, 0x00, 0x48, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6834, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x09, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x1A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6837, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x0B, 0xFE, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x28, 0x00, 0x1D, 0xFC, 0x00, 0x1A, 0x20, 0x00, 0x28, 0x20, 0x00, 0x28, 0x22, 0x00, 0x4F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6838, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x1C, 0xA2, 0x00, 0x3A, 0x42, 0x00, 0x28, 0x24, 0x80, 0x28, 0x18, 0x80, 0x28, 0x11, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x31, 0x00, 0x08, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6839, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x1F, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x15, 0x7E, 0x00, 0x14, 0x48, 0x80, 0x14, 0x49, 0x00, 0x24, 0x4A, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x7A, 0x00, 0x05, 0xC1, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x683B, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x05, 0x00, 0x08, 0x05, 0x80, 0x7E, 0x04, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x1A, 0xF4, 0x00, 0x1A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x46, 0x00, 0x48, 0x72, 0x00, 0x09, 0xC2, 0x00, 0x08, 0x02, 0x80, 0x08, 0x03, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x683C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x42, 0x00, 0x18, 0xA4, 0x00, 0x1D, 0x18, 0x00, 0x1A, 0x18, 0x00, 0x28, 0x26, 0x00, 0x28, 0xC1, 0x80, 0x2B, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x683D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x14, 0x00, 0x1F, 0xD2, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xD2, 0x00, 0x06, 0x0A, 0x00, 0x0B, 0x0C, 0x00, 0x0A, 0x88, 0x00, 0x12, 0x14, 0x80, 0x22, 0x22, 0x80, 0x02, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x683E, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x22, 0x00, 0x22, 0xA2, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x98, 0x00, 0x08, 0x87, 0x00, 0x30, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x683F, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x80, 0x11, 0x88, 0x80, 0x7D, 0x08, 0x00, 0x11, 0x7F, 0x80, 0x13, 0x08, 0x00, 0x39, 0x08, 0x00, 0x35, 0x1C, 0x00, 0x55, 0x14, 0x00, 0x51, 0x14, 0x00, 0x11, 0x16, 0x00, 0x11, 0x32, 0x00, 0x11, 0x23, 0x00, 0x11, 0x21, 0x00, 0x11, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6840, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0xA4, 0x00, 0x19, 0x24, 0x00, 0x26, 0x24, 0x00, 0x04, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x30, 0x44, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6841, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x09, 0x20, 0x00, 0x1A, 0x3F, 0x80, 0x1C, 0x42, 0x00, 0x3A, 0x82, 0x00, 0x29, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6842, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6843, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x49, 0x00, 0x09, 0x4A, 0x00, 0x18, 0xCC, 0x00, 0x1C, 0x48, 0x00, 0x3A, 0x48, 0x00, 0x28, 0x4E, 0x00, 0x28, 0xC9, 0x00, 0x29, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6844, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0xD3, 0x00, 0x7E, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x24, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6845, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0xC4, 0x00, 0x7E, 0x88, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x1A, 0xBE, 0x00, 0x18, 0xA2, 0x00, 0x28, 0xA2, 0x00, 0x28, 0xA2, 0x00, 0x48, 0xA6, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x80, 0x09, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6846, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x1D, 0x08, 0x00, 0x1B, 0x3E, 0x00, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x49, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6848, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0x90, 0x00, 0x08, 0x78, 0x00, 0x01, 0x86, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6849, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x01, 0x00, 0x0A, 0x22, 0x00, 0x18, 0x20, 0x00, 0x1C, 0x42, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x48, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0x48, 0x00, 0x08, 0x86, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x684A, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x40, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x06, 0x18, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x77, 0xFB, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x684C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x684D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x19, 0xBD, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x20, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x684E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x42, 0x00, 0x18, 0x81, 0x00, 0x1D, 0x3F, 0x00, 0x3B, 0xD0, 0x80, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6850, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x3A, 0xBD, 0x00, 0x28, 0xA5, 0x00, 0x28, 0xA5, 0x00, 0x28, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6851, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x11, 0x11, 0x00, 0x0E, 0x0E, 0x00, 0x39, 0xB3, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6852, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6853, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x3A, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6854, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6855, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x08, 0x20, 0x00, 0x7E, 0xC7, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x18, 0xE7, 0x00, 0x28, 0x81, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6857, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x12, 0x00, 0x7E, 0x13, 0x80, 0x08, 0x30, 0x80, 0x08, 0x20, 0x80, 0x1C, 0x61, 0x80, 0x1A, 0xD7, 0x00, 0x18, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x48, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6858, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x19, 0x40, 0x00, 0x28, 0x40, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6859, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x7E, 0x9F, 0x00, 0x09, 0xF1, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x50, 0x00, 0x1A, 0x50, 0x00, 0x18, 0xFF, 0x00, 0x29, 0x90, 0x00, 0x28, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x685B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x1E, 0x00, 0x08, 0x13, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x685C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x80, 0x09, 0x31, 0x80, 0x09, 0x91, 0x00, 0x7E, 0x93, 0x00, 0x08, 0x82, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x20, 0x00, 0x19, 0xFF, 0x80, 0x28, 0x42, 0x00, 0x28, 0xC2, 0x00, 0x48, 0x86, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x685D, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x7D, 0xE2, 0x00, 0x11, 0x2F, 0x80, 0x11, 0x2A, 0x00, 0x33, 0xAA, 0x00, 0x3A, 0xEA, 0x00, 0x54, 0x4A, 0x00, 0x50, 0x4A, 0x00, 0x10, 0xDF, 0x80, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x11, 0x02, 0x00, 0x13, 0x02, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x685F, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x13, 0x00, 0x08, 0x11, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x80, 0x1A, 0x10, 0x00, 0x28, 0x19, 0x00, 0x28, 0x0B, 0x00, 0x48, 0x0E, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x76, 0x80, 0x09, 0xC3, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6860, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x19, 0x4A, 0x00, 0x1D, 0x4A, 0x00, 0x2A, 0xCA, 0x00, 0x28, 0x4C, 0x00, 0x48, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6861, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4E, 0x00, 0x09, 0xF0, 0x00, 0x7E, 0x28, 0x00, 0x08, 0x10, 0x00, 0x18, 0x29, 0x00, 0x1C, 0xC7, 0x00, 0x2A, 0x00, 0x00, 0x29, 0xFE, 0x00, 0x48, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x89, 0x00, 0x09, 0x09, 0x00, 0x0A, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6862, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x1D, 0x24, 0x00, 0x2B, 0x24, 0x00, 0x29, 0x24, 0x00, 0x49, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x40, 0x00, 0x08, 0x58, 0x00, 0x08, 0x86, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6863, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x09, 0x93, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x1A, 0x01, 0x00, 0x28, 0x01, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6864, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFC, 0x00, 0x1C, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x09, 0x00, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6865, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x42, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x90, 0x00, 0x1C, 0x88, 0x00, 0x2B, 0x07, 0x00, 0x2A, 0x8A, 0x00, 0x4C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6866, { 0x00, 0x00, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x52, 0x00, 0x08, 0x94, 0x00, 0x7E, 0x98, 0x00, 0x09, 0xB0, 0x00, 0x1A, 0xD2, 0x00, 0x1C, 0x8E, 0x00, 0x2A, 0xA0, 0x00, 0x28, 0x22, 0x00, 0x4B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6867, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x2C, 0x00, 0x7E, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x1C, 0x7E, 0x00, 0x1A, 0x00, 0x00, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x48, 0x24, 0x00, 0x08, 0x66, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7F, 0x00, 0x09, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6868, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x22, 0x20, 0x00, 0x12, 0x3E, 0x00, 0x02, 0x42, 0x00, 0x0A, 0xA4, 0x00, 0x12, 0x18, 0x00, 0x32, 0x10, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x87, 0x00, 0x60, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6869, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x09, 0x10, 0x00, 0x19, 0x10, 0x00, 0x1D, 0x14, 0x00, 0x2B, 0xFE, 0x00, 0x29, 0x10, 0x00, 0x49, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x12, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x686B, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0x84, 0x00, 0x7E, 0xD5, 0x00, 0x08, 0x55, 0x00, 0x08, 0x35, 0x80, 0x1D, 0xA4, 0x80, 0x1A, 0xC4, 0x00, 0x18, 0x45, 0x00, 0x28, 0x0D, 0x00, 0x28, 0x43, 0x00, 0x48, 0x42, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x84, 0x00, 0x09, 0x8C, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x686D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x29, 0x28, 0x00, 0x29, 0x29, 0x00, 0x29, 0x2A, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x3A, 0x00, 0x0A, 0xE1, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x686E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x18, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x6B, 0x00, 0x1C, 0xC9, 0x80, 0x1A, 0x08, 0x00, 0x19, 0x08, 0x00, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x686F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0x07, 0x00, 0x18, 0xFC, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x7E, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6870, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7E, 0x84, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x1C, 0x84, 0x00, 0x1A, 0xE2, 0x80, 0x19, 0x81, 0x80, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6871, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x24, 0x80, 0x08, 0x49, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x49, 0x00, 0x1A, 0x24, 0x80, 0x19, 0x24, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6872, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x80, 0x80, 0x1A, 0x80, 0x80, 0x18, 0x7F, 0x00, 0x28, 0x02, 0x00, 0x28, 0x04, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6874, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xFA, 0x00, 0x7E, 0x4B, 0x00, 0x08, 0xD9, 0x80, 0x08, 0x90, 0x80, 0x1C, 0xFF, 0x00, 0x1A, 0x02, 0x00, 0x1A, 0x04, 0x00, 0x28, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6875, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF0, 0x00, 0x7E, 0x12, 0x00, 0x08, 0x5B, 0x00, 0x08, 0xC9, 0x80, 0x1C, 0x90, 0x80, 0x1A, 0x10, 0x00, 0x18, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x62, 0x00, 0x48, 0x46, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x33, 0x00, 0x08, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6876, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x02, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x3A, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6877, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x08, 0xC4, 0x00, 0x7E, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x09, 0x81, 0x00, 0x09, 0x01, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6879, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x1A, 0x82, 0x00, 0x18, 0xFE, 0x80, 0x28, 0x89, 0x80, 0x28, 0x8B, 0x00, 0x48, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x687A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xE7, 0x80, 0x1D, 0x24, 0x80, 0x1B, 0x24, 0x80, 0x19, 0x24, 0x80, 0x29, 0x24, 0x80, 0x29, 0xE7, 0x80, 0x48, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x687B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x62, 0x00, 0x7E, 0xC6, 0x00, 0x09, 0xAC, 0x00, 0x08, 0x38, 0x00, 0x1C, 0x6E, 0x00, 0x1B, 0xC3, 0x80, 0x18, 0x10, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x687C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x88, 0x00, 0x18, 0x98, 0x00, 0x0A, 0xE0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x9C, 0x00, 0x1B, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x687E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0xFE, 0x00, 0x1A, 0x40, 0x00, 0x28, 0x40, 0x00, 0x28, 0xFF, 0x00, 0x49, 0xC1, 0x00, 0x0B, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x687F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x24, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6881, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x20, 0x22, 0x00, 0x10, 0xA3, 0x00, 0x05, 0x22, 0x80, 0x0A, 0x22, 0x80, 0x08, 0x42, 0x80, 0x10, 0x82, 0x00, 0x23, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6882, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x13, 0x00, 0x08, 0x11, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x1C, 0xD3, 0x00, 0x1A, 0x56, 0x00, 0x18, 0x10, 0x00, 0x28, 0x18, 0x00, 0x28, 0x5C, 0x00, 0x48, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x80, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6883, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x13, 0xC7, 0x00, 0x10, 0x5C, 0x00, 0x7C, 0x84, 0x00, 0x11, 0x04, 0x00, 0x13, 0xC4, 0x00, 0x38, 0x7F, 0x80, 0x34, 0x44, 0x00, 0x50, 0x44, 0x00, 0x52, 0x44, 0x00, 0x13, 0x44, 0x00, 0x11, 0xC4, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xC0, 0x00, 0x13, 0x70, 0x00, 0x16, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6884, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x7F, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x1C, 0x94, 0x80, 0x1A, 0x94, 0x80, 0x19, 0x94, 0x80, 0x38, 0xA4, 0x80, 0x28, 0xC3, 0x80, 0x48, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6885, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x80, 0x00, 0x19, 0x7F, 0x00, 0x1C, 0x49, 0x00, 0x3A, 0x49, 0x00, 0x28, 0x49, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6886, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x09, 0xF8, 0x80, 0x7E, 0x49, 0x80, 0x08, 0x4B, 0x00, 0x09, 0xFA, 0x00, 0x1C, 0x49, 0x00, 0x1A, 0x48, 0x80, 0x18, 0x48, 0x80, 0x28, 0x78, 0x80, 0x29, 0xC8, 0x80, 0x48, 0x4B, 0x80, 0x08, 0x48, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x88, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6888, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x18, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x02, 0x00, 0x48, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x688D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x1A, 0x82, 0x00, 0x1A, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x28, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x688F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x28, 0x00, 0x04, 0x28, 0x00, 0x1F, 0x7F, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6893, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x41, 0x00, 0x0E, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6894, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x80, 0x00, 0x1C, 0xBE, 0x00, 0x3A, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x28, 0xBE, 0x00, 0x28, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x09, 0x20, 0x80, 0x09, 0x3F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6896, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6897, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x24, 0x88, 0x00, 0x04, 0x50, 0x00, 0x04, 0x30, 0x00, 0x04, 0x28, 0x00, 0x04, 0xC6, 0x00, 0x07, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6898, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x689A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x64, 0x00, 0x7E, 0xCC, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0x91, 0x00, 0x18, 0xB1, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x28, 0x00, 0x48, 0x28, 0x00, 0x08, 0x68, 0x00, 0x08, 0x48, 0x80, 0x08, 0xCD, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x689B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xF7, 0x80, 0x10, 0x94, 0x80, 0x7C, 0x94, 0x80, 0x10, 0x94, 0x80, 0x13, 0xF5, 0x00, 0x38, 0x95, 0x00, 0x34, 0x95, 0x00, 0x50, 0x94, 0x80, 0x53, 0xF4, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x11, 0x94, 0x80, 0x11, 0x35, 0x80, 0x13, 0x24, 0x00, 0x16, 0xE4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x689C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1B, 0x55, 0x00, 0x19, 0x55, 0x00, 0x28, 0x38, 0x80, 0x28, 0x28, 0x00, 0x48, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x83, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x689D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x1A, 0xA8, 0x00, 0x1B, 0x18, 0x00, 0x2A, 0x66, 0x00, 0x2B, 0x91, 0x80, 0x0A, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x0A, 0x38, 0x00, 0x0A, 0x34, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x91, 0x80, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x689F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x40, 0x80, 0x00, 0x43, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68A0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x10, 0x00, 0x1A, 0x30, 0x00, 0x28, 0x20, 0x00, 0x29, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x88, 0x80, 0x08, 0x08, 0x00, 0x18, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x3A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x1C, 0x36, 0x00, 0x1A, 0x63, 0x00, 0x18, 0xDD, 0x80, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x22, 0xF1, 0x00, 0x0E, 0x1C, 0x00, 0x19, 0x06, 0x00, 0x01, 0x10, 0x00, 0x06, 0x78, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x17, 0x2A, 0x00, 0x35, 0xEB, 0x00, 0x64, 0x49, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0x18, 0x00, 0x39, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0x42, 0x00, 0x38, 0x42, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68A8, { 0x00, 0x00, 0x00, 0x03, 0x81, 0x00, 0x1E, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x06, 0x11, 0x00, 0x07, 0x11, 0x00, 0x0A, 0x91, 0x00, 0x12, 0x11, 0x00, 0x22, 0x07, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68A9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68AA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x19, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x28, 0x22, 0x00, 0x48, 0x32, 0x00, 0x08, 0x16, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68AD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x8F, 0x80, 0x09, 0xF4, 0x80, 0x18, 0x24, 0x00, 0x1C, 0x44, 0x80, 0x2A, 0xA7, 0x80, 0x29, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x84, 0x00, 0x0B, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68AE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x1A, 0xFF, 0x80, 0x18, 0x80, 0x80, 0x28, 0xBC, 0x80, 0x28, 0xA4, 0x80, 0x49, 0xA4, 0x80, 0x09, 0x24, 0x80, 0x09, 0x3D, 0x80, 0x0A, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68AF, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x28, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x18, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x3B, 0x10, 0x00, 0x29, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x08, 0x30, 0x80, 0x08, 0x50, 0x80, 0x08, 0x91, 0x00, 0x09, 0x16, 0x00, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68B0, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x1C, 0xA8, 0x80, 0x1A, 0xA8, 0x80, 0x18, 0xA9, 0x00, 0x2B, 0xF9, 0x00, 0x28, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x08, 0xAC, 0x00, 0x09, 0x2C, 0x00, 0x09, 0x14, 0x80, 0x0A, 0x22, 0x80, 0x08, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68B1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x18, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0x9C, 0x80, 0x28, 0x9A, 0x80, 0x28, 0xA9, 0x80, 0x28, 0xC8, 0x80, 0x28, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68B2, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x66, 0x00, 0x7E, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x08, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x18, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0x44, 0x80, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68B3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x18, 0x4F, 0x00, 0x1C, 0xF0, 0x80, 0x3A, 0x00, 0x00, 0x28, 0x10, 0x00, 0x28, 0x52, 0x00, 0x28, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x80, 0x09, 0x13, 0x80, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68B5, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x0C, 0x0C, 0x00, 0x16, 0x16, 0x00, 0x15, 0x25, 0x00, 0x24, 0x44, 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x88, 0x80, 0x02, 0x48, 0x80, 0x04, 0x28, 0x80, 0x08, 0x0F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68B6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x3F, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x06, 0x00, 0x1D, 0x18, 0x00, 0x3B, 0x70, 0x00, 0x29, 0x1F, 0x00, 0x29, 0xF0, 0x00, 0x09, 0x17, 0x80, 0x09, 0xF8, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68B9, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF0, 0x00, 0x7E, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x1C, 0x84, 0x00, 0x1A, 0x84, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68BA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x17, 0x2A, 0x00, 0x35, 0xEB, 0x00, 0x64, 0x49, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x86, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68BB, { 0x00, 0x00, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x8A, 0x80, 0x09, 0x8A, 0x80, 0x09, 0xBF, 0x80, 0x1A, 0xAA, 0x00, 0x1C, 0xAA, 0x00, 0x1A, 0xBF, 0x80, 0x28, 0x8A, 0x80, 0x28, 0x8A, 0x80, 0x48, 0x8A, 0x80, 0x08, 0x9A, 0x80, 0x08, 0x92, 0x80, 0x08, 0x92, 0x80, 0x08, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68BC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x20, 0x00, 0x18, 0x22, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x42, 0x00, 0x48, 0xD2, 0x00, 0x08, 0x9A, 0x00, 0x09, 0x8A, 0x00, 0x0B, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68C0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x07, 0x00, 0x1A, 0xFA, 0x00, 0x18, 0x00, 0x00, 0x2C, 0x20, 0x00, 0x2B, 0x24, 0x00, 0x48, 0xA6, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68C2, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x7E, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x1D, 0xFC, 0x00, 0x2A, 0x20, 0x00, 0x28, 0xA4, 0x00, 0x48, 0xA4, 0x00, 0x09, 0x28, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x08, 0x87, 0x00, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68C4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x02, 0x7E, 0x00, 0x1F, 0xC1, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68C5, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x12, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x12, 0x00, 0x28, 0xFE, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68C6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x7E, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x08, 0x7C, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x49, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68C8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x19, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x49, 0x00, 0x48, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68C9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x7F, 0x00, 0x1F, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0E, 0x7F, 0x00, 0x0D, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x24, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68CA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x62, 0x91, 0x80, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68CB, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x0C, 0x22, 0x00, 0x0E, 0x3E, 0x00, 0x15, 0x22, 0x00, 0x14, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68CC, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x59, 0x80, 0x08, 0xC8, 0x80, 0x1C, 0x80, 0x00, 0x1A, 0x08, 0x00, 0x19, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x2A, 0x00, 0x48, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68CD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x80, 0x28, 0x7D, 0x00, 0x28, 0x46, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0x7C, 0x80, 0x09, 0xC7, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68CF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x28, 0x04, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x1E, 0x1E, 0x00, 0x02, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x1F, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D1, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x7F, 0x73, 0x80, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x1C, 0x12, 0x00, 0x1A, 0x73, 0x80, 0x19, 0x12, 0x00, 0x28, 0x12, 0x00, 0x28, 0x72, 0x00, 0x48, 0xD3, 0x80, 0x08, 0x12, 0x00, 0x08, 0x32, 0x00, 0x08, 0x62, 0x00, 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x28, 0x00, 0x1D, 0xFF, 0x80, 0x3A, 0x82, 0x00, 0x29, 0x11, 0x00, 0x2A, 0x10, 0x80, 0x28, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D4, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x0C, 0x84, 0x00, 0x1A, 0x84, 0x00, 0x18, 0xE2, 0x80, 0x19, 0x81, 0x80, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x18, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x3A, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68D6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x40, 0x00, 0x1A, 0x40, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x49, 0x00, 0x68, 0x4B, 0x00, 0x48, 0x4E, 0x00, 0x08, 0x44, 0x00, 0x08, 0x46, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68D7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0xE2, 0x00, 0x09, 0x52, 0x00, 0x06, 0x4E, 0x00, 0x38, 0x03, 0x80, 0x00, 0x40, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0xE2, 0x00, 0x09, 0x52, 0x00, 0x06, 0x4E, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68D8, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x25, 0xA5, 0x80, 0x0E, 0x06, 0x00, 0x0E, 0x0E, 0x00, 0x15, 0x15, 0x00, 0x15, 0x15, 0x00, 0x14, 0xA5, 0x00, 0x24, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68D9, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x88, 0x00, 0x1A, 0x89, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x00, 0x48, 0x9C, 0x00, 0x08, 0x94, 0x00, 0x09, 0xB6, 0x00, 0x09, 0x23, 0x00, 0x0B, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68DA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x08, 0xD6, 0x80, 0x18, 0xB5, 0x80, 0x1C, 0x94, 0x80, 0x3A, 0xD6, 0x80, 0x28, 0xB5, 0x80, 0x28, 0x94, 0x80, 0x28, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x09, 0x18, 0x80, 0x09, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68DC, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x7F, 0xEA, 0x00, 0x11, 0x1B, 0x00, 0x11, 0x11, 0x80, 0x11, 0xE0, 0x00, 0x39, 0x20, 0x00, 0x35, 0x2C, 0x00, 0x57, 0x26, 0x00, 0x52, 0x23, 0x00, 0x12, 0x20, 0x00, 0x12, 0x6C, 0x00, 0x16, 0x46, 0x00, 0x14, 0x43, 0x00, 0x14, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68DD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0x88, 0x80, 0x1A, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x28, 0xA2, 0x80, 0x48, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68DF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0xFF, 0x80, 0x38, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x1C, 0x00, 0x28, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68E0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68E1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x45, 0x00, 0x11, 0x29, 0x00, 0x11, 0x01, 0x00, 0x39, 0x7D, 0x00, 0x35, 0x11, 0x00, 0x55, 0x11, 0x00, 0x51, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68E3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x18, 0x91, 0x00, 0x28, 0xDB, 0x00, 0x28, 0x5A, 0x00, 0x48, 0x14, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68E5, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x22, 0x00, 0x7D, 0x2F, 0x80, 0x08, 0xC2, 0x00, 0x08, 0x42, 0x00, 0x1C, 0xA6, 0x00, 0x1B, 0x07, 0x00, 0x1A, 0x06, 0x80, 0x28, 0x2A, 0x80, 0x29, 0x2A, 0x00, 0x48, 0xD2, 0x00, 0x08, 0x42, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68E7, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x2F, 0x80, 0x09, 0xF0, 0x00, 0x18, 0x10, 0x00, 0x1C, 0x0C, 0x80, 0x3A, 0x23, 0x80, 0x28, 0x28, 0x00, 0x28, 0x27, 0x80, 0x28, 0x38, 0x00, 0x2B, 0xD2, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x80, 0x08, 0x66, 0x80, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68E8, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x10, 0x1F, 0x80, 0x1F, 0xA1, 0x00, 0x10, 0xE2, 0x00, 0x10, 0x94, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x36, 0x00, 0x20, 0xC1, 0x80, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68EA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x80, 0x08, 0x49, 0x80, 0x7E, 0xDD, 0x00, 0x08, 0x94, 0x00, 0x08, 0x36, 0x00, 0x1C, 0x63, 0x00, 0x1A, 0xC9, 0x80, 0x1A, 0x08, 0x00, 0x28, 0x48, 0x80, 0x28, 0x49, 0x80, 0x48, 0xDD, 0x00, 0x08, 0x94, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68EB, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x08, 0x09, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x09, 0xE8, 0x00, 0x1D, 0x28, 0x80, 0x1B, 0x28, 0x80, 0x19, 0x2D, 0x80, 0x29, 0xE5, 0x00, 0x28, 0x07, 0x00, 0x48, 0xE4, 0x00, 0x09, 0x8E, 0x80, 0x08, 0x12, 0x80, 0x08, 0x63, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68EC, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x44, 0x00, 0x18, 0x82, 0x00, 0x29, 0xFF, 0x00, 0x2A, 0x85, 0x80, 0x48, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x81, 0x00, 0x08, 0x83, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68ED, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0xCF, 0x00, 0x1C, 0x89, 0x00, 0x1B, 0x99, 0x00, 0x19, 0x95, 0x00, 0x2A, 0xB3, 0x00, 0x28, 0x8A, 0x00, 0x48, 0x8E, 0x00, 0x08, 0x84, 0x00, 0x08, 0x8E, 0x00, 0x08, 0x9B, 0x00, 0x08, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68EE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x04, 0x44, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x0E, 0x0E, 0x00, 0x0D, 0x0D, 0x00, 0x14, 0x94, 0x80, 0x24, 0x24, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68EF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x7E, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x08, 0x7C, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x02, 0x00, 0x28, 0x04, 0x00, 0x28, 0x10, 0x00, 0x48, 0x18, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA1, 0x80, 0x09, 0xA2, 0x80, 0x09, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68F0, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF0, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68F1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x1C, 0xC4, 0x00, 0x1B, 0xA7, 0x80, 0x18, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x28, 0xC2, 0x00, 0x49, 0x86, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6E, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68F2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x12, 0x00, 0x1D, 0xFF, 0x80, 0x3A, 0x12, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x09, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0xEC, 0x00, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x68F5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x48, 0x56, 0x00, 0x08, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68F6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1B, 0x55, 0x00, 0x19, 0x55, 0x00, 0x28, 0x38, 0x00, 0x28, 0x38, 0x00, 0x48, 0x54, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68F9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x3A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68FA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x04, 0x80, 0x80, 0x0C, 0x00, 0x00, 0x0E, 0x7E, 0x00, 0x15, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x24, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68FB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0xF0, 0x00, 0x0E, 0x18, 0x00, 0x1B, 0xFE, 0x00, 0x31, 0x0B, 0x00, 0x03, 0x18, 0x00, 0x06, 0x30, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68FC, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x35, 0x6B, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x01, 0xE0, 0x00, 0x04, 0x18, 0x00, 0x18, 0x06, 0x00, 0x77, 0xFB, 0x80, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x06, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x68FD, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x35, 0x6B, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x88, 0x00, 0x03, 0x60, 0x00, 0x1C, 0x1C, 0x00, 0x73, 0xE7, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6900, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x3F, 0x00, 0x80, 0x09, 0x00, 0x80, 0x18, 0x40, 0x00, 0x1C, 0x7F, 0x00, 0x3A, 0x99, 0x00, 0x28, 0x99, 0x00, 0x29, 0x69, 0x00, 0x2A, 0x2B, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6901, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x06, 0x00, 0x28, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6904, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x66, 0x00, 0x08, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x18, 0x20, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x48, 0x46, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x77, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6905, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x28, 0x00, 0x08, 0x44, 0x00, 0x18, 0x82, 0x00, 0x1D, 0x01, 0x80, 0x3A, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x28, 0xF2, 0x00, 0x28, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6906, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x1C, 0xBE, 0x80, 0x1A, 0x88, 0x80, 0x1A, 0x80, 0x80, 0x28, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x48, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x09, 0x80, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6908, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x01, 0x00, 0x08, 0x21, 0x00, 0x09, 0x25, 0x00, 0x18, 0xA9, 0x00, 0x1D, 0xFD, 0x00, 0x1A, 0x21, 0x00, 0x28, 0x71, 0x00, 0x28, 0x69, 0x00, 0x48, 0xA5, 0x00, 0x09, 0xA1, 0x00, 0x0B, 0x23, 0x00, 0x08, 0x22, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6909, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x0F, 0x7F, 0x00, 0x39, 0x24, 0x00, 0x0B, 0x24, 0x00, 0x0E, 0x3F, 0x00, 0x78, 0x04, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x690A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x1C, 0x63, 0x00, 0x1A, 0x94, 0x80, 0x19, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x690B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x48, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x88, 0x80, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x690C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x49, 0x00, 0x09, 0x49, 0x00, 0x08, 0xC8, 0x00, 0x1D, 0x8F, 0x00, 0x1A, 0x00, 0x00, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x690D, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0xBF, 0x00, 0x1C, 0xA1, 0x00, 0x3A, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x28, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x690E, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x88, 0x00, 0x3E, 0xFF, 0x00, 0x09, 0x88, 0x00, 0x1A, 0x88, 0x00, 0x1C, 0xFF, 0x00, 0x3A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x690F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0xE7, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x28, 0xE7, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6910, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x1A, 0xFF, 0x80, 0x1A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0xBF, 0x00, 0x48, 0xA1, 0x00, 0x09, 0xA1, 0x00, 0x09, 0x21, 0x00, 0x0B, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6911, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xA1, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x48, 0x00, 0x28, 0x88, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6912, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x80, 0x3E, 0xE9, 0x00, 0x08, 0x89, 0x00, 0x18, 0x89, 0x00, 0x1F, 0xFA, 0x00, 0x3A, 0x8A, 0x00, 0x28, 0x86, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x0A, 0xA6, 0x00, 0x0A, 0xAA, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x91, 0x00, 0x09, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6913, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x7E, 0x60, 0x00, 0x08, 0xD1, 0x00, 0x09, 0x93, 0x00, 0x1D, 0xBA, 0x00, 0x1A, 0xE8, 0x00, 0x18, 0xC8, 0x00, 0x29, 0xDC, 0x00, 0x28, 0x2C, 0x00, 0x48, 0x6A, 0x00, 0x08, 0xCB, 0x00, 0x09, 0x89, 0x80, 0x08, 0x18, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6916, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x88, 0x00, 0x1A, 0x88, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x90, 0x00, 0x48, 0x9F, 0x00, 0x09, 0x91, 0x00, 0x09, 0x31, 0x00, 0x0B, 0x21, 0x00, 0x08, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6917, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x7F, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x1A, 0x48, 0x00, 0x28, 0x4F, 0x00, 0x28, 0x48, 0x00, 0x48, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0xE8, 0x00, 0x08, 0xB8, 0x00, 0x09, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6919, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x1A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x691A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x7D, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x39, 0x01, 0x00, 0x35, 0x01, 0x00, 0x55, 0x01, 0x00, 0x51, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x691B, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x1C, 0x68, 0x00, 0x1A, 0x49, 0x80, 0x18, 0xCB, 0x00, 0x29, 0xCE, 0x00, 0x2B, 0x48, 0x00, 0x48, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x80, 0x08, 0x49, 0x80, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x691C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x0B, 0x83, 0x80, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x1B, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x691F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x1C, 0x52, 0x00, 0x2B, 0x10, 0x00, 0x28, 0x90, 0x00, 0x48, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x2C, 0x00, 0x08, 0xC3, 0x00, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6920, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0x06, 0x00, 0x3F, 0xB8, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x1F, 0xBF, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xA4, 0x00, 0x02, 0x44, 0x00, 0x02, 0x84, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x0C, 0x98, 0x00, 0x30, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6921, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x17, 0xF1, 0x00, 0x11, 0x05, 0x00, 0x7D, 0x25, 0x00, 0x11, 0x25, 0x00, 0x13, 0xF5, 0x00, 0x38, 0x95, 0x00, 0x34, 0x85, 0x00, 0x50, 0x85, 0x00, 0x53, 0xE5, 0x00, 0x10, 0x85, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xF1, 0x00, 0x17, 0x81, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6922, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x7E, 0xFD, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x3A, 0x21, 0x00, 0x36, 0xFD, 0x00, 0x52, 0x21, 0x00, 0x52, 0x29, 0x00, 0x12, 0x25, 0x00, 0x12, 0x21, 0x00, 0x12, 0xFD, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6923, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x39, 0x49, 0x00, 0x35, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x51, 0x49, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6924, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x40, 0x00, 0x1C, 0x44, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x49, 0x44, 0x00, 0x0A, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x60, 0x00, 0x09, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6925, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x0F, 0x80, 0x7D, 0xE8, 0x80, 0x12, 0x88, 0x80, 0x10, 0x88, 0x80, 0x38, 0x88, 0x80, 0x37, 0xF8, 0x80, 0x50, 0x88, 0x80, 0x50, 0x88, 0x80, 0x10, 0x88, 0x80, 0x11, 0xC8, 0x80, 0x11, 0x48, 0x80, 0x11, 0x68, 0x80, 0x13, 0x2F, 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6926, { 0x00, 0x00, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x18, 0xD3, 0x00, 0x29, 0x91, 0x80, 0x28, 0x7E, 0x00, 0x48, 0x12, 0x00, 0x08, 0x32, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6927, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x81, 0x00, 0x09, 0x00, 0x80, 0x18, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x29, 0xEF, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x09, 0xE9, 0x00, 0x09, 0x2B, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6928, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x3A, 0x7F, 0x80, 0x36, 0x42, 0x00, 0x52, 0xD2, 0x00, 0x53, 0x5A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x14, 0x42, 0x00, 0x10, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x692A, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x66, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x0C, 0x24, 0x00, 0x1A, 0x24, 0x00, 0x18, 0x24, 0x00, 0x19, 0x24, 0x80, 0x29, 0xA5, 0x80, 0x28, 0xA5, 0x00, 0x48, 0xA5, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x692D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0xC8, 0x00, 0x12, 0x4A, 0x00, 0x12, 0xBF, 0x00, 0x7E, 0x88, 0x00, 0x13, 0x12, 0x00, 0x3A, 0xBF, 0x00, 0x36, 0xD2, 0x00, 0x52, 0x52, 0x00, 0x12, 0x5E, 0x00, 0x13, 0x52, 0x00, 0x12, 0x92, 0x00, 0x12, 0x1E, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x12, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6930, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x09, 0xE5, 0x00, 0x19, 0x24, 0x80, 0x1D, 0x24, 0x80, 0x3B, 0xE4, 0x80, 0x29, 0x24, 0x80, 0x29, 0x24, 0x80, 0x29, 0x7C, 0x80, 0x2B, 0xA4, 0x80, 0x08, 0x27, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6931, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x28, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x48, 0xC2, 0x00, 0x09, 0xB6, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6933, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x91, 0x00, 0x48, 0x93, 0x00, 0x08, 0x9A, 0x00, 0x08, 0xAC, 0x00, 0x08, 0xE6, 0x00, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6934, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0xDE, 0x00, 0x13, 0x92, 0x00, 0x7E, 0x12, 0x00, 0x12, 0x12, 0x00, 0x13, 0x92, 0x00, 0x3A, 0x23, 0x80, 0x36, 0x00, 0x00, 0x53, 0xBF, 0x00, 0x52, 0x11, 0x00, 0x12, 0x1B, 0x00, 0x12, 0x0E, 0x00, 0x13, 0x84, 0x00, 0x16, 0x0E, 0x00, 0x12, 0x1B, 0x00, 0x12, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6935, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x21, 0x00, 0x7D, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x00, 0x00, 0x39, 0x1F, 0x00, 0x35, 0xE1, 0x00, 0x55, 0x13, 0x00, 0x51, 0x0A, 0x00, 0x11, 0x0E, 0x00, 0x11, 0xE4, 0x00, 0x11, 0x0E, 0x00, 0x11, 0x1B, 0x00, 0x11, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6936, { 0x00, 0x00, 0x00, 0x08, 0x81, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x99, 0x00, 0x7E, 0xA5, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x44, 0x00, 0x1A, 0xC4, 0x00, 0x19, 0xA3, 0x80, 0x28, 0x7E, 0x00, 0x28, 0xC2, 0x00, 0x49, 0xA6, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x76, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6938, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x10, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x20, 0x00, 0x11, 0x04, 0x00, 0x11, 0xD5, 0x80, 0x39, 0x56, 0x80, 0x35, 0x5C, 0x80, 0x55, 0x74, 0x80, 0x51, 0x55, 0x80, 0x12, 0x54, 0x00, 0x12, 0x50, 0x00, 0x12, 0x50, 0x80, 0x16, 0x59, 0x80, 0x10, 0xCF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6939, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x29, 0xFF, 0x80, 0x28, 0xA4, 0x00, 0x48, 0xA4, 0x00, 0x08, 0xC7, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x693B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x1D, 0x41, 0x00, 0x1B, 0x7F, 0x00, 0x19, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x22, 0x00, 0x49, 0x74, 0x00, 0x09, 0x1E, 0x00, 0x09, 0x73, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x693D, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x3E, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x20, 0x00, 0x3A, 0x71, 0x00, 0x28, 0x9A, 0x00, 0x2B, 0x2C, 0x00, 0x28, 0x4C, 0x00, 0x08, 0x9A, 0x00, 0x0B, 0x2A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x0B, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x693F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x28, 0x00, 0x1D, 0xFF, 0x80, 0x3A, 0x44, 0x00, 0x28, 0x82, 0x00, 0x2B, 0x01, 0x80, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6942, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x08, 0x93, 0x00, 0x1D, 0x91, 0x80, 0x1A, 0x10, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6945, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x00, 0x00, 0x1A, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x48, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6949, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x80, 0x19, 0x20, 0x00, 0x28, 0x20, 0x00, 0x28, 0x7F, 0x80, 0x48, 0xE0, 0x80, 0x09, 0xA0, 0x80, 0x08, 0x20, 0x80, 0x08, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x694A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x29, 0x40, 0x00, 0x28, 0xFF, 0x80, 0x29, 0x11, 0x80, 0x0E, 0x22, 0x80, 0x08, 0xC4, 0x80, 0x0B, 0x08, 0x80, 0x08, 0x31, 0x00, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x694E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x7F, 0x10, 0x80, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6953, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x3F, 0x3A, 0x00, 0x09, 0xE2, 0x00, 0x19, 0x22, 0x00, 0x1D, 0xFA, 0x00, 0x3B, 0xAA, 0x00, 0x29, 0xAA, 0x00, 0x29, 0xFA, 0x00, 0x29, 0x22, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x3A, 0x80, 0x09, 0xE5, 0x80, 0x09, 0x00, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6954, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x45, 0x00, 0x09, 0xF5, 0x00, 0x18, 0x45, 0x00, 0x1D, 0xF9, 0x00, 0x3A, 0x49, 0x00, 0x28, 0x56, 0x00, 0x28, 0x30, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6955, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x88, 0x00, 0x1D, 0xFF, 0x80, 0x3A, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6957, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xC8, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x4A, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x8A, 0x00, 0x1D, 0x7E, 0x00, 0x1B, 0xC8, 0x00, 0x18, 0x7F, 0x00, 0x28, 0x48, 0x00, 0x2A, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x09, 0x68, 0x00, 0x09, 0x1F, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6959, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xE4, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0xA4, 0x00, 0x18, 0x8E, 0x00, 0x1D, 0x8E, 0x00, 0x3B, 0x95, 0x00, 0x29, 0x95, 0x00, 0x2A, 0xA4, 0x80, 0x0C, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x695A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0x1C, 0x00, 0x0A, 0xAA, 0x00, 0x12, 0x49, 0x00, 0x22, 0x88, 0x80, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x00, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x695B, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x1A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x695C, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x8F, 0x00, 0x10, 0x89, 0x00, 0x7C, 0x89, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x8F, 0x00, 0x38, 0x89, 0x00, 0x34, 0x89, 0x00, 0x53, 0xE9, 0x00, 0x52, 0x2F, 0x00, 0x12, 0x29, 0x00, 0x12, 0x29, 0x00, 0x12, 0x29, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x695D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x39, 0x93, 0x00, 0x35, 0x55, 0x00, 0x55, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x695E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x09, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x28, 0x20, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6960, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x1C, 0x80, 0x80, 0x3A, 0xA2, 0x80, 0x28, 0x94, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6961, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x78, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x09, 0x81, 0x80, 0x18, 0x7E, 0x00, 0x1C, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x28, 0xF2, 0x80, 0x28, 0x94, 0x80, 0x28, 0xF9, 0x00, 0x28, 0x9A, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x95, 0x00, 0x08, 0x92, 0x80, 0x08, 0xB2, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6962, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x81, 0x00, 0x09, 0x00, 0x80, 0x18, 0xFF, 0x00, 0x1C, 0x24, 0x00, 0x3A, 0xFF, 0x00, 0x28, 0xA5, 0x00, 0x28, 0xA5, 0x00, 0x28, 0xC7, 0x00, 0x28, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6963, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x88, 0x80, 0x1F, 0x88, 0x80, 0x04, 0xFF, 0x80, 0x0C, 0x80, 0x00, 0x0E, 0x80, 0x00, 0x15, 0xBF, 0x00, 0x14, 0xA1, 0x00, 0x24, 0xBF, 0x00, 0x04, 0xA1, 0x00, 0x04, 0xBF, 0x00, 0x04, 0xA1, 0x00, 0x05, 0x3F, 0x00, 0x05, 0x21, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6964, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0xA9, 0x00, 0x09, 0x29, 0x00, 0x08, 0xC9, 0x00, 0x1C, 0x71, 0x00, 0x1A, 0x99, 0x00, 0x19, 0x23, 0x00, 0x28, 0x46, 0x00, 0x28, 0x10, 0x00, 0x48, 0x58, 0x00, 0x09, 0x4B, 0x00, 0x09, 0x45, 0x80, 0x0B, 0x4C, 0x80, 0x0A, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6965, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x52, 0x00, 0x7E, 0xDB, 0x00, 0x08, 0x89, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x28, 0xC2, 0x00, 0x49, 0x86, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6E, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6966, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x00, 0x80, 0x09, 0x7E, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x42, 0x00, 0x18, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6968, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x18, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6969, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x7D, 0x88, 0x00, 0x11, 0x7F, 0x80, 0x13, 0x48, 0x80, 0x13, 0x7F, 0x80, 0x39, 0x48, 0x80, 0x35, 0x7F, 0x80, 0x55, 0x08, 0x00, 0x51, 0x28, 0x00, 0x11, 0x18, 0x00, 0x11, 0x1C, 0x00, 0x11, 0x16, 0x00, 0x11, 0x33, 0x00, 0x11, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x696A, { 0x00, 0x00, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x9E, 0x00, 0x38, 0x80, 0x00, 0x34, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x696B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9F, 0x80, 0x0B, 0xE2, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x696C, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x40, 0x00, 0x18, 0xFF, 0x80, 0x29, 0x90, 0x80, 0x2B, 0x10, 0x80, 0x49, 0x38, 0x80, 0x09, 0x6C, 0x80, 0x09, 0x01, 0x80, 0x09, 0xF9, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x696D, { 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x08, 0xA2, 0x00, 0x04, 0xA4, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x696E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x80, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x14, 0x00, 0x1B, 0xFF, 0x80, 0x1C, 0x14, 0x00, 0x3A, 0x22, 0x00, 0x28, 0xC0, 0x00, 0x2B, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x696F, { 0x00, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x09, 0xE0, 0x00, 0x09, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x10, 0x00, 0x1D, 0x10, 0x00, 0x3B, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6970, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0xD0, 0x00, 0x09, 0x97, 0x00, 0x7F, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xD7, 0x00, 0x1D, 0x11, 0x00, 0x1B, 0x11, 0x00, 0x19, 0xD7, 0x00, 0x28, 0x10, 0x00, 0x28, 0x38, 0x00, 0x48, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6971, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x28, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x44, 0x00, 0x18, 0x82, 0x00, 0x29, 0x7D, 0x80, 0x28, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6972, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x08, 0x04, 0x80, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x09, 0x74, 0x00, 0x1D, 0x04, 0x80, 0x1B, 0x24, 0x80, 0x19, 0xFD, 0x80, 0x29, 0x55, 0x00, 0x29, 0x57, 0x00, 0x49, 0x72, 0x00, 0x09, 0x2A, 0x80, 0x09, 0x46, 0x80, 0x09, 0x0B, 0x80, 0x0A, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6973, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x1A, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x48, 0x56, 0x00, 0x08, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6974, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x08, 0x66, 0x00, 0x08, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x1B, 0x10, 0x80, 0x19, 0x10, 0x80, 0x28, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x97, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6975, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xF0, 0x00, 0x1C, 0x17, 0x00, 0x1A, 0x11, 0x00, 0x39, 0xD1, 0x00, 0x29, 0x5A, 0x00, 0x29, 0x56, 0x00, 0x29, 0xD3, 0x00, 0x08, 0x14, 0x80, 0x08, 0x68, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6977, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x89, 0x80, 0x3E, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x18, 0x88, 0x80, 0x1C, 0xB8, 0x80, 0x3B, 0xCF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x20, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6978, { 0x00, 0x00, 0x00, 0x08, 0x34, 0x00, 0x09, 0xC5, 0x00, 0x08, 0x44, 0x80, 0x3E, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x1C, 0xC4, 0x00, 0x3A, 0xE4, 0x00, 0x29, 0x54, 0x00, 0x29, 0x44, 0x00, 0x29, 0x4A, 0x00, 0x0A, 0x4A, 0x00, 0x0A, 0x4A, 0x00, 0x08, 0x51, 0x00, 0x08, 0x51, 0x00, 0x08, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6979, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x90, 0x80, 0x1D, 0x50, 0x80, 0x1A, 0x20, 0x80, 0x38, 0xD9, 0x00, 0x2B, 0x06, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x697A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x26, 0x00, 0x7F, 0x18, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x29, 0x00, 0x1C, 0x2A, 0x00, 0x1A, 0x48, 0x00, 0x1A, 0x88, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x697B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x697C, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x08, 0x49, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x1C, 0x6B, 0x00, 0x1A, 0xC9, 0x80, 0x1A, 0x00, 0x00, 0x28, 0x10, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x22, 0x00, 0x08, 0x46, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x17, 0x00, 0x08, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x697D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x83, 0x00, 0x1B, 0xF6, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x1A, 0x16, 0x00, 0x33, 0xF3, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x697E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x1A, 0xFE, 0x00, 0x1A, 0x11, 0x00, 0x29, 0xD3, 0x00, 0x28, 0x5A, 0x00, 0x48, 0xD4, 0x00, 0x08, 0x96, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x697F, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF0, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x1C, 0xD6, 0x00, 0x1B, 0x93, 0x00, 0x19, 0x11, 0x80, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6980, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x00, 0x00, 0x19, 0xEF, 0x80, 0x29, 0x28, 0x80, 0x29, 0x28, 0x80, 0x49, 0x28, 0x80, 0x09, 0x28, 0x80, 0x09, 0x28, 0x80, 0x09, 0xEF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6981, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x01, 0x00, 0x09, 0x01, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x44, 0x00, 0x1A, 0xFE, 0x00, 0x28, 0x12, 0x00, 0x28, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6982, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xDF, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x7F, 0xCA, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x3B, 0xDF, 0x80, 0x36, 0x02, 0x00, 0x32, 0x02, 0x00, 0x52, 0x46, 0x00, 0x12, 0x46, 0x00, 0x12, 0x6A, 0x00, 0x13, 0xAA, 0x80, 0x16, 0x12, 0x80, 0x10, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6984, { 0x00, 0x00, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x90, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0x9F, 0x00, 0x7E, 0xA8, 0x00, 0x0A, 0xC4, 0x00, 0x18, 0x04, 0x00, 0x1D, 0xFE, 0x00, 0x2B, 0x04, 0x00, 0x29, 0x24, 0x00, 0x49, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x54, 0x00, 0x08, 0x51, 0x00, 0x08, 0x91, 0x00, 0x0B, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6986, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x30, 0x00, 0x08, 0x48, 0x00, 0x08, 0x84, 0x00, 0x7F, 0x7B, 0x00, 0x0A, 0x00, 0x00, 0x19, 0xE2, 0x00, 0x1D, 0x2A, 0x00, 0x2B, 0x2A, 0x00, 0x29, 0xEA, 0x00, 0x49, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0xE2, 0x00, 0x09, 0x22, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x64, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6987, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x52, 0x00, 0x1B, 0xFF, 0x00, 0x1C, 0x20, 0x00, 0x2A, 0x24, 0x00, 0x2B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x0A, 0x22, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6988, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x0A, 0xFA, 0x00, 0x1A, 0x8A, 0x00, 0x1E, 0x8A, 0x00, 0x2A, 0xFA, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0xFA, 0x00, 0x0A, 0x8A, 0x00, 0x0A, 0x8A, 0x00, 0x0A, 0xFA, 0x00, 0x0A, 0x0A, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6989, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x24, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x50, 0x00, 0x1C, 0x88, 0x00, 0x2B, 0x24, 0x00, 0x2A, 0xFB, 0x00, 0x4C, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x698A, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7F, 0xEF, 0x80, 0x08, 0x2A, 0x80, 0x08, 0x6A, 0x80, 0x1C, 0x4A, 0x80, 0x1A, 0xCF, 0x80, 0x18, 0xAA, 0x80, 0x29, 0xAA, 0x80, 0x2A, 0x8A, 0x80, 0x48, 0x8F, 0x80, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x698D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x1C, 0x95, 0x00, 0x1A, 0xA4, 0x80, 0x18, 0xBF, 0x80, 0x28, 0xA0, 0x80, 0x28, 0xBF, 0x80, 0x48, 0xA0, 0x80, 0x09, 0xBF, 0x80, 0x09, 0x20, 0x80, 0x0B, 0x20, 0x80, 0x08, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x698E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x20, 0x00, 0x48, 0x7F, 0x00, 0x09, 0xC3, 0x00, 0x08, 0x66, 0x00, 0x08, 0x3C, 0x00, 0x09, 0xE7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6991, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x35, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6992, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x20, 0x80, 0x7C, 0x20, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x3B, 0xEF, 0x80, 0x34, 0xA2, 0x80, 0x55, 0xA6, 0x80, 0x53, 0x2C, 0x80, 0x10, 0xE3, 0x80, 0x11, 0xA6, 0x80, 0x13, 0x2C, 0x80, 0x10, 0x61, 0x80, 0x11, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6994, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x8F, 0x80, 0x13, 0xE8, 0x80, 0x7E, 0x29, 0x80, 0x12, 0x29, 0x00, 0x13, 0xEB, 0x00, 0x3A, 0x2A, 0x00, 0x36, 0x29, 0x00, 0x53, 0xE8, 0x80, 0x52, 0x08, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x12, 0xEB, 0x80, 0x13, 0xA8, 0x00, 0x16, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6995, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x08, 0x14, 0x00, 0x18, 0x22, 0x00, 0x1C, 0xC9, 0x80, 0x3A, 0x14, 0x00, 0x28, 0x22, 0x00, 0x28, 0xC1, 0x80, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6996, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x23, 0x80, 0x7F, 0x80, 0x00, 0x40, 0xBF, 0x00, 0x5E, 0x91, 0x00, 0x00, 0x11, 0x00, 0x04, 0x1B, 0x00, 0x7F, 0x8E, 0x00, 0x15, 0x04, 0x00, 0x35, 0x8E, 0x00, 0x64, 0xDB, 0x00, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6998, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x80, 0x3F, 0x90, 0x00, 0x64, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x0A, 0x1F, 0x00, 0x1B, 0x10, 0x00, 0x31, 0xBF, 0x80, 0x60, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x699B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x28, 0x00, 0x1D, 0xFF, 0x80, 0x3A, 0x44, 0x00, 0x28, 0x9E, 0x00, 0x2B, 0x71, 0x80, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x699C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x24, 0x00, 0x18, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x3B, 0x10, 0x80, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x41, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69A0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x7F, 0x7D, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x7C, 0x00, 0x1A, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x28, 0x7C, 0x00, 0x28, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69A1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x30, 0x00, 0x1A, 0x46, 0x00, 0x19, 0x98, 0x00, 0x28, 0x61, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x11, 0x80, 0x08, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69A5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x3B, 0x11, 0x00, 0x28, 0x92, 0x00, 0x28, 0x54, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69A6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x7F, 0x94, 0x00, 0x08, 0x36, 0x00, 0x3F, 0x63, 0x00, 0x21, 0xC9, 0x80, 0x21, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x08, 0x00, 0x21, 0x1C, 0x00, 0x3F, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x7F, 0xAB, 0x00, 0x08, 0x49, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69A7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x3E, 0x94, 0x00, 0x08, 0x94, 0x00, 0x18, 0xF7, 0x80, 0x1C, 0x94, 0x00, 0x3A, 0xF7, 0x00, 0x28, 0x94, 0x00, 0x28, 0xF7, 0x80, 0x28, 0x94, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69A8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x24, 0x80, 0x09, 0x64, 0x80, 0x08, 0xC4, 0x00, 0x1D, 0x87, 0x80, 0x1A, 0x40, 0x00, 0x18, 0x7F, 0x80, 0x28, 0xD0, 0x00, 0x29, 0x9F, 0x80, 0x48, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69AB, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0xCC, 0x00, 0x08, 0x88, 0x00, 0x7E, 0xFF, 0x80, 0x09, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x88, 0x00, 0x1A, 0xFF, 0x00, 0x18, 0x88, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69AD, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x81, 0x00, 0x11, 0xE1, 0x00, 0x7D, 0x21, 0x00, 0x11, 0x3F, 0x80, 0x11, 0xE1, 0x00, 0x11, 0x21, 0x00, 0x39, 0xE1, 0x00, 0x35, 0x29, 0x00, 0x55, 0x2D, 0x00, 0x53, 0xF5, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x11, 0xA1, 0x00, 0x13, 0x21, 0x00, 0x10, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69AE, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x14, 0x94, 0x80, 0x15, 0x15, 0x00, 0x24, 0x24, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69AF, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x1B, 0x21, 0x00, 0x19, 0x21, 0x00, 0x29, 0x3F, 0x80, 0x29, 0x21, 0x00, 0x49, 0xE9, 0x00, 0x08, 0x0D, 0x00, 0x08, 0x05, 0x00, 0x08, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69B1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x28, 0x28, 0x80, 0x28, 0x69, 0x80, 0x49, 0xCD, 0x00, 0x08, 0x44, 0x00, 0x08, 0x46, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69B2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0xBA, 0x00, 0x08, 0xAA, 0x00, 0x1C, 0xC6, 0x00, 0x1A, 0xFE, 0x00, 0x1A, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x49, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69B4, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0xDF, 0x80, 0x08, 0x84, 0x80, 0x3E, 0x84, 0x80, 0x08, 0x94, 0x80, 0x18, 0x98, 0x80, 0x1C, 0xF7, 0x00, 0x3B, 0x80, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69B7, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x20, 0x80, 0x09, 0x64, 0x80, 0x08, 0x48, 0x00, 0x1C, 0xFF, 0x00, 0x1B, 0x88, 0x00, 0x18, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x48, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69B8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x3F, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x3F, 0x80, 0x13, 0xE4, 0x80, 0x11, 0x24, 0x80, 0x39, 0x3F, 0x80, 0x35, 0x04, 0x00, 0x55, 0x04, 0x00, 0x51, 0x3F, 0x80, 0x11, 0xC4, 0x00, 0x13, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x7F, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69BA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x34, 0x48, 0x00, 0x2C, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x86, 0x00, 0x35, 0x93, 0x00, 0x2F, 0x11, 0x80, 0x25, 0xFF, 0x00, 0x24, 0x54, 0x00, 0x24, 0xD6, 0x00, 0x65, 0x93, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69BB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x52, 0x80, 0x28, 0x94, 0x80, 0x09, 0x39, 0x80, 0x0A, 0x52, 0x80, 0x08, 0x94, 0x80, 0x09, 0x18, 0x80, 0x0A, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69BC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x20, 0x00, 0x1A, 0x24, 0x00, 0x18, 0x5E, 0x00, 0x29, 0xF3, 0x00, 0x28, 0x00, 0x00, 0x48, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69BE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x9E, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x33, 0xFF, 0x80, 0x3A, 0x00, 0x80, 0x54, 0xFE, 0x00, 0x50, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69BF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x34, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x50, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x28, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69C1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x0E, 0x22, 0x00, 0x15, 0x3E, 0x00, 0x14, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x04, 0x5D, 0x00, 0x04, 0x55, 0x00, 0x04, 0x55, 0x00, 0x04, 0x5D, 0x00, 0x04, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69C3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x80, 0x15, 0x23, 0x80, 0x17, 0xC0, 0x00, 0x3D, 0x7F, 0x00, 0x15, 0x22, 0x00, 0x15, 0x14, 0x00, 0x21, 0x0C, 0x00, 0x23, 0x53, 0x80, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69C5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x80, 0x19, 0x94, 0x80, 0x28, 0xA4, 0x80, 0x28, 0xC3, 0x80, 0x48, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69C7, { 0x00, 0x00, 0x00, 0x08, 0x43, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x40, 0x80, 0x7E, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x08, 0xBF, 0x00, 0x1C, 0xA1, 0x00, 0x1A, 0xBF, 0x00, 0x1A, 0xA1, 0x00, 0x28, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x48, 0xBF, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69C8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7F, 0xBF, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0xB1, 0x00, 0x1A, 0xAA, 0x00, 0x19, 0xB4, 0x00, 0x28, 0xA3, 0x80, 0x28, 0x82, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x09, 0xA2, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69CA, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0A, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x1F, 0x00, 0x24, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x08, 0x23, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69CB, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x1C, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69CC, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x1F, 0x00, 0x3E, 0x11, 0x00, 0x09, 0x11, 0x00, 0x18, 0x9F, 0x00, 0x1C, 0x10, 0x00, 0x3A, 0x10, 0x00, 0x28, 0x1F, 0x00, 0x29, 0xD1, 0x00, 0x28, 0x51, 0x00, 0x28, 0x51, 0x00, 0x08, 0x5F, 0x00, 0x08, 0x50, 0x00, 0x08, 0xBF, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69CD, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x3F, 0x81, 0x80, 0x08, 0x7E, 0x00, 0x18, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69CE, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x20, 0x00, 0x28, 0x40, 0x00, 0x48, 0xFF, 0x00, 0x0B, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69D0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x38, 0xFE, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x4D, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x88, 0x80, 0x09, 0x08, 0x80, 0x0A, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x0C, 0x0C, 0x00, 0x0E, 0x1C, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x24, 0xC9, 0x00, 0x44, 0xC8, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69D3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69D4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x7F, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x1C, 0x40, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x49, 0x24, 0x00, 0x0A, 0x23, 0x00, 0x0D, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69D6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x1A, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69D7, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xC1, 0x00, 0x1D, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x1A, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x48, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69D8, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x29, 0x91, 0x80, 0x28, 0xDB, 0x00, 0x48, 0x1C, 0x00, 0x08, 0x76, 0x00, 0x09, 0xD3, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69D9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69DB, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x48, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x5F, 0x00, 0x7F, 0x68, 0x00, 0x09, 0x46, 0x00, 0x19, 0x42, 0x00, 0x1C, 0x40, 0x00, 0x2A, 0x04, 0x00, 0x29, 0xFE, 0x00, 0x49, 0x54, 0x00, 0x09, 0x54, 0x00, 0x09, 0x54, 0x00, 0x09, 0x54, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69DD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x80, 0x00, 0x1A, 0xFF, 0x80, 0x28, 0x80, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x41, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xFB, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69DE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69DF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x7C, 0x1A, 0x00, 0x08, 0xE0, 0x00, 0x18, 0x84, 0x00, 0x1C, 0xFE, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x48, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x88, 0x00, 0x09, 0x06, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69E0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x09, 0x12, 0x00, 0x09, 0x7E, 0x00, 0x7C, 0x14, 0x00, 0x0B, 0x18, 0x00, 0x19, 0xFF, 0x00, 0x1D, 0x20, 0x00, 0x2B, 0x7E, 0x00, 0x29, 0xA2, 0x00, 0x49, 0x22, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x62, 0x00, 0x09, 0xA2, 0x00, 0x09, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69E2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x80, 0x08, 0x61, 0x80, 0x7D, 0xA6, 0x80, 0x08, 0x2C, 0x80, 0x08, 0xE3, 0x80, 0x1D, 0xAE, 0x80, 0x1A, 0x20, 0x80, 0x1A, 0x10, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69E5, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xEF, 0x80, 0x7E, 0x42, 0x00, 0x08, 0xE7, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x6F, 0x80, 0x1A, 0xC2, 0x00, 0x1A, 0x42, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x01, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69E7, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x7F, 0xC7, 0x00, 0x04, 0x1C, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x22, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x0C, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69E8, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x47, 0x80, 0x0B, 0xFC, 0x80, 0x3E, 0x04, 0x80, 0x09, 0xF5, 0x00, 0x19, 0x14, 0x80, 0x1D, 0xF4, 0x80, 0x3A, 0x04, 0x80, 0x29, 0xF4, 0x80, 0x28, 0x24, 0x80, 0x28, 0x44, 0x80, 0x2B, 0xFC, 0x80, 0x08, 0x44, 0x80, 0x08, 0x44, 0x80, 0x08, 0x45, 0x00, 0x08, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69EA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x3F, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x19, 0xEA, 0x00, 0x1D, 0x2A, 0x00, 0x1B, 0x3F, 0x80, 0x29, 0xE2, 0x00, 0x29, 0x02, 0x00, 0x29, 0xE6, 0x00, 0x09, 0x06, 0x00, 0x09, 0xEA, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x80, 0x09, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69EB, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x35, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x50, 0x12, 0x00, 0x10, 0x7F, 0x00, 0x13, 0xC1, 0x80, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69ED, { 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x10, 0x04, 0x80, 0x10, 0x04, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0x24, 0x00, 0x39, 0x34, 0x80, 0x35, 0x24, 0x80, 0x55, 0xFD, 0x80, 0x51, 0x25, 0x00, 0x11, 0x27, 0x00, 0x11, 0x72, 0x00, 0x11, 0xAA, 0x00, 0x13, 0x26, 0x80, 0x12, 0x6A, 0x80, 0x16, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69EE, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x01, 0x00, 0x08, 0x42, 0x00, 0x08, 0x94, 0x80, 0x1D, 0xFF, 0x80, 0x1A, 0x18, 0x00, 0x18, 0x66, 0x00, 0x29, 0xC3, 0x80, 0x28, 0x08, 0x00, 0x48, 0xF2, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x71, 0x00, 0x08, 0x06, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69EF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x88, 0x00, 0x19, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x48, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69F1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0xFF, 0x80, 0x08, 0xA4, 0x80, 0x1C, 0xA4, 0x80, 0x1A, 0xC3, 0x80, 0x29, 0x80, 0x80, 0x28, 0xFF, 0x80, 0x48, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69F2, { 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x11, 0xE1, 0x00, 0x13, 0x29, 0x00, 0x7A, 0x4D, 0x00, 0x17, 0xE5, 0x00, 0x12, 0xA1, 0x00, 0x3A, 0xA9, 0x00, 0x37, 0xED, 0x00, 0x52, 0xA5, 0x00, 0x52, 0xA1, 0x00, 0x13, 0xE1, 0x80, 0x12, 0x27, 0x00, 0x12, 0x2D, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x14, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69F3, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x22, 0x3F, 0x00, 0x22, 0xE9, 0x00, 0x3E, 0x2E, 0x00, 0x02, 0xF8, 0x00, 0x7E, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x32, 0x62, 0x00, 0x62, 0x26, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0E, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69F5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x18, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x08, 0x00, 0x08, 0xAD, 0x80, 0x08, 0xA4, 0x80, 0x09, 0xB1, 0x00, 0x09, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69F9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x1A, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x19, 0xD7, 0x00, 0x28, 0x10, 0x00, 0x29, 0xD7, 0x00, 0x48, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69FB, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xF1, 0x00, 0x08, 0x9F, 0x00, 0x18, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1B, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x28, 0xD1, 0x00, 0x28, 0xBF, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x80, 0x0A, 0x12, 0x80, 0x0A, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69FD, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x24, 0x80, 0x1D, 0xFF, 0x80, 0x3B, 0x24, 0x80, 0x29, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x69FE, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x5D, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x5D, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x94, 0x80, 0x18, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x63, 0x00, 0x08, 0x36, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x76, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x69FF, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0xFF, 0x80, 0x1F, 0x22, 0x00, 0x04, 0x3E, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A00, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x1D, 0x00, 0x80, 0x1B, 0x10, 0x80, 0x19, 0x7E, 0x80, 0x29, 0x10, 0x80, 0x29, 0x7E, 0x80, 0x49, 0x42, 0x80, 0x09, 0x42, 0x80, 0x09, 0x7E, 0x80, 0x09, 0x00, 0x80, 0x09, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A01, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x18, 0x91, 0x00, 0x29, 0x66, 0x80, 0x28, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x6E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A02, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x11, 0xF9, 0x00, 0x25, 0x15, 0x00, 0x15, 0xF2, 0x00, 0x09, 0x15, 0x00, 0x15, 0xFB, 0x80, 0x3B, 0x1C, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A03, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x87, 0x80, 0x09, 0xF4, 0x80, 0x7F, 0x14, 0x80, 0x09, 0x14, 0x80, 0x09, 0xF7, 0x80, 0x1D, 0x14, 0x80, 0x1B, 0x14, 0x80, 0x19, 0xF4, 0x80, 0x29, 0x07, 0x80, 0x29, 0x4C, 0x80, 0x49, 0x54, 0x80, 0x09, 0x24, 0x80, 0x09, 0xE4, 0x80, 0x0B, 0x14, 0x80, 0x08, 0x09, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A05, { 0x00, 0x00, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x11, 0x77, 0x00, 0x7D, 0x55, 0x00, 0x12, 0x55, 0x00, 0x18, 0x88, 0x00, 0x34, 0x88, 0x00, 0x31, 0x08, 0x00, 0x53, 0x2F, 0x00, 0x51, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x38, 0x00, 0x11, 0x6E, 0x00, 0x11, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A0A, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0x22, 0x00, 0x3E, 0xDF, 0x80, 0x19, 0x26, 0x00, 0x1C, 0x07, 0x00, 0x2A, 0xAA, 0x80, 0x28, 0xD2, 0x00, 0x09, 0x22, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x0C, 0x0C, 0x00, 0x30, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A0B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x13, 0x02, 0x00, 0x7D, 0x34, 0x00, 0x10, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x38, 0x49, 0x00, 0x37, 0x7F, 0x00, 0x51, 0x49, 0x00, 0x51, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x13, 0x4B, 0x00, 0x12, 0x80, 0x00, 0x16, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A0C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0xFE, 0x00, 0x1A, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A0F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x24, 0x00, 0x1A, 0xC9, 0x00, 0x28, 0x51, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x10, 0x80, 0x08, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x91, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A11, { 0x00, 0x00, 0x00, 0x09, 0x20, 0x00, 0x08, 0xBF, 0x00, 0x0A, 0x49, 0x00, 0x3D, 0x99, 0x00, 0x08, 0x49, 0x00, 0x18, 0x95, 0x00, 0x1D, 0x21, 0x00, 0x3A, 0x06, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A12, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x21, 0x00, 0x11, 0x15, 0x00, 0x10, 0xA4, 0x00, 0x38, 0xA9, 0x00, 0x35, 0x30, 0x80, 0x54, 0x62, 0x00, 0x51, 0xDE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A13, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0B, 0x88, 0x00, 0x08, 0x7C, 0x00, 0x0B, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A14, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x92, 0x00, 0x08, 0xDB, 0x00, 0x7E, 0x49, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A15, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x13, 0xE4, 0x00, 0x7C, 0x8F, 0x80, 0x13, 0xE8, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xB2, 0x80, 0x3A, 0xA2, 0x00, 0x37, 0xE2, 0x00, 0x54, 0x86, 0x00, 0x51, 0xC5, 0x00, 0x11, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x12, 0x8D, 0x00, 0x10, 0x89, 0x80, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A17, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x18, 0x6B, 0x00, 0x1C, 0x6B, 0x00, 0x3A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A18, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x0A, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x18, 0xFA, 0x00, 0x1C, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x28, 0xF8, 0x00, 0x48, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A19, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x18, 0x94, 0x80, 0x1C, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A1A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x1D, 0x24, 0x80, 0x1B, 0x24, 0x80, 0x19, 0xFF, 0x80, 0x29, 0x44, 0x00, 0x29, 0x45, 0x80, 0x49, 0x77, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0A, 0x74, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A1B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x63, 0x00, 0x7E, 0xA5, 0x00, 0x08, 0x63, 0x00, 0x08, 0xA5, 0x00, 0x1C, 0x11, 0x00, 0x1A, 0x38, 0x00, 0x18, 0xEE, 0x00, 0x2B, 0x83, 0x80, 0x28, 0x10, 0x00, 0x48, 0xE4, 0x00, 0x08, 0x19, 0x00, 0x08, 0xE2, 0x00, 0x08, 0x0C, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A1D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x90, 0x80, 0x08, 0xFF, 0x00, 0x1C, 0x90, 0x00, 0x1A, 0x8F, 0x00, 0x18, 0x80, 0x00, 0x28, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x48, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A1E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x18, 0x91, 0x00, 0x1C, 0x9F, 0x00, 0x3A, 0x80, 0x00, 0x28, 0x80, 0x00, 0x28, 0xBB, 0x80, 0x28, 0xAA, 0x80, 0x08, 0xBB, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A1F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x3B, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A20, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0xFF, 0x80, 0x1A, 0x88, 0x80, 0x28, 0xEE, 0x80, 0x28, 0xAA, 0x80, 0x48, 0xAA, 0x80, 0x08, 0xDD, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A21, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A22, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x80, 0x00, 0x1A, 0xFF, 0x80, 0x28, 0x80, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x01, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x0A, 0x03, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A23, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x28, 0x78, 0x80, 0x28, 0x09, 0x00, 0x29, 0xFE, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x0B, 0x08, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A24, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x9F, 0x80, 0x7D, 0x11, 0x00, 0x11, 0x2A, 0x00, 0x13, 0x44, 0x00, 0x11, 0x4A, 0x00, 0x39, 0x71, 0x80, 0x35, 0x44, 0x00, 0x55, 0x44, 0x00, 0x51, 0x7F, 0x80, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x35, 0x80, 0x11, 0x24, 0x80, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A28, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7F, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x1C, 0xEB, 0x00, 0x1A, 0x88, 0x00, 0x1A, 0xEB, 0x00, 0x28, 0x80, 0x00, 0x28, 0xA8, 0x00, 0x48, 0xBF, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x7F, 0x80, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A29, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0xA0, 0x00, 0x09, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x1C, 0x48, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x29, 0xFF, 0x00, 0x4A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A2A, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x1B, 0x11, 0x00, 0x19, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A2B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xE0, 0x00, 0x12, 0x9F, 0x00, 0x7E, 0x89, 0x00, 0x13, 0xEB, 0x00, 0x12, 0x2E, 0x00, 0x1B, 0xE4, 0x00, 0x36, 0x8E, 0x00, 0x32, 0x9B, 0x00, 0x33, 0xE1, 0x80, 0x50, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A2E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x39, 0x49, 0x00, 0x35, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x50, 0x11, 0x00, 0x10, 0x93, 0x00, 0x11, 0xBA, 0x00, 0x11, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A2F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x7D, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x1B, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x2B, 0xFE, 0x00, 0x2A, 0x02, 0x00, 0x4A, 0xFA, 0x00, 0x0A, 0x8A, 0x00, 0x0A, 0xFA, 0x00, 0x0A, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A30, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x08, 0xD6, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xD6, 0x00, 0x1A, 0x10, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x01, 0x00, 0x48, 0x01, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A31, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0xD6, 0x00, 0x7E, 0xD6, 0x00, 0x0B, 0x5A, 0x00, 0x1D, 0x8C, 0x00, 0x1A, 0x52, 0x00, 0x28, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x08, 0xD8, 0x00, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A32, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x08, 0x04, 0x80, 0x09, 0xFF, 0x80, 0x7E, 0x04, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x04, 0x00, 0x1D, 0xFE, 0x00, 0x1A, 0x02, 0x00, 0x1A, 0xFA, 0x00, 0x28, 0x8A, 0x00, 0x28, 0xFA, 0x00, 0x48, 0x8B, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x09, 0x8D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A34, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x45, 0x00, 0x09, 0xF5, 0x80, 0x7E, 0x04, 0x80, 0x09, 0x14, 0x00, 0x08, 0xA4, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x04, 0x00, 0x19, 0xF5, 0x00, 0x29, 0x15, 0x00, 0x29, 0x17, 0x00, 0x49, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x80, 0x09, 0xF7, 0x80, 0x08, 0x0D, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A35, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x28, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x18, 0x7F, 0x00, 0x1C, 0x48, 0x00, 0x3A, 0x48, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x48, 0x00, 0x28, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x08, 0x00, 0x00, 0x08, 0xA5, 0x00, 0x09, 0x12, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A36, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x35, 0x20, 0x00, 0x55, 0xEF, 0x00, 0x51, 0x25, 0x00, 0x11, 0xE5, 0x00, 0x11, 0x27, 0x00, 0x11, 0x22, 0x00, 0x11, 0xE7, 0x00, 0x13, 0x2D, 0x80, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A37, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x35, 0x6B, 0x00, 0x64, 0xC9, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x84, 0x00, 0x1F, 0x8A, 0x00, 0x70, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A38, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x09, 0x29, 0x00, 0x08, 0xAA, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x18, 0x44, 0x00, 0x1D, 0xFF, 0x00, 0x3A, 0x10, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A39, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFA, 0x00, 0x08, 0x42, 0x00, 0x1B, 0xFF, 0x80, 0x1C, 0x02, 0x00, 0x3B, 0xF2, 0x00, 0x29, 0x1A, 0x00, 0x29, 0x16, 0x00, 0x29, 0xF2, 0x00, 0x08, 0x22, 0x00, 0x09, 0x22, 0x00, 0x08, 0xBA, 0x00, 0x0B, 0xC2, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A3A, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x3E, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A3B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0x7F, 0x00, 0x19, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A3D, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x18, 0xFF, 0x00, 0x1C, 0xA5, 0x00, 0x3A, 0xC7, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A3E, { 0x00, 0x00, 0x00, 0x10, 0x85, 0x00, 0x10, 0x85, 0x80, 0x13, 0xE4, 0x80, 0x78, 0x9F, 0x80, 0x10, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x95, 0x00, 0x38, 0x95, 0x00, 0x34, 0xF5, 0x00, 0x50, 0x92, 0x00, 0x52, 0x9A, 0x00, 0x12, 0xB2, 0x80, 0x12, 0x85, 0x80, 0x13, 0x89, 0x00, 0x16, 0x60, 0x00, 0x14, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A3F, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x80, 0x09, 0x28, 0x80, 0x09, 0x28, 0x80, 0x7D, 0xEF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A44, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x19, 0x29, 0x00, 0x1D, 0x29, 0x00, 0x2B, 0xF9, 0x00, 0x29, 0x29, 0x00, 0x29, 0x26, 0x00, 0x29, 0xE6, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0xE5, 0x00, 0x0F, 0x29, 0x00, 0x08, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A45, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0xD5, 0x00, 0x09, 0x55, 0x00, 0x08, 0x55, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x55, 0x00, 0x18, 0x55, 0x00, 0x28, 0x55, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x55, 0x00, 0x08, 0xD5, 0x80, 0x08, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A46, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x29, 0x24, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x14, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x35, 0x6B, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A47, { 0x00, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x7D, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x38, 0x21, 0x00, 0x34, 0x1F, 0x00, 0x50, 0xC2, 0x00, 0x53, 0x9C, 0x00, 0x11, 0x04, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x04, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x24, 0x80, 0x10, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A48, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x1D, 0xFF, 0x00, 0x3A, 0x44, 0x00, 0x28, 0x74, 0x00, 0x29, 0xDF, 0x80, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x88, 0x80, 0x0B, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A49, { 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x1D, 0x93, 0x80, 0x1A, 0x90, 0x00, 0x18, 0xE2, 0x00, 0x29, 0x3F, 0x80, 0x29, 0x2A, 0x00, 0x49, 0xAA, 0x00, 0x08, 0x6F, 0x80, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A4A, { 0x00, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x7E, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x1C, 0xF7, 0x80, 0x1A, 0x14, 0x00, 0x19, 0x14, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A4B, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x18, 0xFE, 0x00, 0x1D, 0x45, 0x80, 0x3A, 0x7C, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A4E, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x54, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x54, 0x00, 0x1A, 0x56, 0x00, 0x18, 0xD3, 0x00, 0x29, 0x91, 0x80, 0x28, 0xFF, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A50, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x1A, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A51, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x42, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x18, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x48, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A52, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x19, 0xD7, 0x00, 0x1C, 0x10, 0x00, 0x3B, 0xD7, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x82, 0x00, 0x09, 0x3F, 0x00, 0x0B, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A53, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x89, 0x00, 0x08, 0x49, 0x00, 0x19, 0xFF, 0x80, 0x1D, 0x00, 0x80, 0x3A, 0x82, 0x00, 0x28, 0x82, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x32, 0x00, 0x0A, 0xD2, 0x00, 0x0C, 0x7F, 0x80, 0x08, 0x82, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A55, { 0x00, 0x00, 0x00, 0x08, 0x91, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x52, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x7E, 0x80, 0x1C, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x1A, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x42, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x12, 0x00, 0x08, 0x32, 0x00, 0x08, 0x62, 0x00, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A56, { 0x00, 0x00, 0x00, 0x08, 0x91, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x52, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x7E, 0x80, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x18, 0x7E, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A58, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x02, 0x00, 0x1F, 0x7F, 0x80, 0x04, 0x0C, 0x00, 0x0E, 0x14, 0x00, 0x0D, 0x24, 0x00, 0x14, 0x4C, 0x00, 0x14, 0x80, 0x00, 0x24, 0x7F, 0x80, 0x04, 0x52, 0x80, 0x04, 0x73, 0x80, 0x04, 0x5E, 0x80, 0x04, 0x52, 0x80, 0x04, 0x5E, 0x80, 0x04, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A59, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFA, 0x00, 0x08, 0x14, 0x80, 0x3E, 0xA5, 0x00, 0x08, 0x42, 0x00, 0x19, 0x81, 0x80, 0x1C, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A5B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x8A, 0x00, 0x7E, 0x8A, 0x00, 0x12, 0x52, 0x00, 0x12, 0xFB, 0x80, 0x12, 0x24, 0x80, 0x3A, 0x25, 0x00, 0x36, 0xAA, 0x00, 0x52, 0xAA, 0x00, 0x52, 0xFA, 0x00, 0x12, 0x22, 0x00, 0x12, 0x27, 0x00, 0x12, 0x65, 0x00, 0x14, 0x4D, 0x80, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A5F, { 0x00, 0x00, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x09, 0x29, 0x00, 0x3E, 0x71, 0x00, 0x0B, 0xAE, 0x00, 0x18, 0xA4, 0x00, 0x1D, 0x3F, 0x80, 0x3B, 0xF4, 0x00, 0x28, 0x22, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x91, 0x00, 0x08, 0x92, 0x00, 0x09, 0x4C, 0x00, 0x09, 0x0C, 0x80, 0x0A, 0x32, 0x80, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A61, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x3A, 0xFF, 0x00, 0x28, 0x38, 0x00, 0x28, 0xC9, 0x00, 0x2B, 0x1E, 0x00, 0x08, 0x6C, 0x00, 0x0B, 0x9A, 0x00, 0x08, 0x2A, 0x00, 0x09, 0xC9, 0x00, 0x08, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A62, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0xC8, 0x00, 0x12, 0x7F, 0x80, 0x7E, 0x48, 0x00, 0x12, 0x9F, 0x00, 0x12, 0xA4, 0x00, 0x3A, 0x5F, 0x80, 0x36, 0x40, 0x00, 0x52, 0x5F, 0x00, 0x52, 0x51, 0x00, 0x12, 0x5F, 0x00, 0x12, 0xD1, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A64, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x44, 0x00, 0x13, 0x10, 0x00, 0x01, 0xF0, 0x00, 0x0A, 0x0A, 0x00, 0x55, 0x55, 0x00, 0x50, 0x50, 0x00, 0x59, 0x58, 0x80, 0x0F, 0x0F, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A65, { 0x00, 0x00, 0x00, 0x22, 0x24, 0x00, 0x14, 0xF8, 0x00, 0x08, 0x2A, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x40, 0x00, 0x0C, 0xFC, 0x00, 0x15, 0x84, 0x00, 0x26, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x14, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x0C, 0x98, 0x00, 0x30, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A66, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A67, { 0x00, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x7F, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x09, 0x92, 0x80, 0x1D, 0x54, 0x80, 0x1B, 0x10, 0x80, 0x19, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A6A, { 0x00, 0x00, 0x00, 0x10, 0x85, 0x00, 0x10, 0x85, 0x80, 0x11, 0xE4, 0x80, 0x7D, 0x24, 0x00, 0x11, 0xBF, 0x80, 0x12, 0x64, 0x00, 0x13, 0x44, 0x00, 0x38, 0xCE, 0x00, 0x38, 0x8B, 0x00, 0x51, 0x99, 0x80, 0x53, 0x30, 0x80, 0x10, 0x00, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x13, 0x6D, 0x80, 0x12, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A6B, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x18, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x3A, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A71, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x01, 0x00, 0x12, 0xEF, 0x80, 0x3A, 0xA1, 0x00, 0x36, 0xA9, 0x00, 0x52, 0xAD, 0x00, 0x52, 0xE5, 0x00, 0x12, 0x01, 0x00, 0x12, 0xA1, 0x00, 0x14, 0xA1, 0x00, 0x18, 0x71, 0x00, 0x11, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A72, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x42, 0x00, 0x28, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A73, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xD5, 0x00, 0x12, 0x64, 0x80, 0x7E, 0x44, 0x00, 0x13, 0x5F, 0x00, 0x12, 0xC4, 0x00, 0x12, 0x4A, 0x00, 0x3A, 0x7F, 0x80, 0x36, 0x51, 0x00, 0x53, 0x64, 0x80, 0x52, 0xC4, 0x00, 0x12, 0x5F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0xD3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A78, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x38, 0x82, 0x00, 0x34, 0xFE, 0x00, 0x50, 0x00, 0x00, 0x53, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A79, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0xF8, 0x00, 0x09, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x1E, 0x22, 0x00, 0x1B, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A7C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0x3C, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x7A, 0x7C, 0x00, 0x17, 0x84, 0x00, 0x19, 0x7F, 0x00, 0x36, 0x10, 0x00, 0x32, 0x2A, 0x00, 0x57, 0xDC, 0x00, 0x10, 0x28, 0x00, 0x11, 0xDC, 0x00, 0x16, 0x2A, 0x00, 0x10, 0x49, 0x00, 0x10, 0x88, 0x00, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A7E, { 0x00, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x1C, 0x94, 0x80, 0x1A, 0x94, 0x80, 0x19, 0xF7, 0x80, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A7F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x92, 0x00, 0x3B, 0xFF, 0x80, 0x34, 0x00, 0x00, 0x50, 0xFE, 0x00, 0x50, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A80, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x18, 0xBD, 0x00, 0x1C, 0xBD, 0x00, 0x3A, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A81, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x1C, 0xA2, 0x80, 0x1A, 0xBE, 0x80, 0x18, 0x80, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x49, 0x00, 0x09, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A83, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x3D, 0xFC, 0x00, 0x24, 0x49, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x25, 0xFF, 0x80, 0x2C, 0x01, 0x00, 0x20, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0E, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A84, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x09, 0xE2, 0x00, 0x09, 0x22, 0x00, 0x3F, 0xE4, 0x00, 0x09, 0x27, 0x80, 0x1D, 0xE5, 0x00, 0x1A, 0x89, 0x00, 0x18, 0x89, 0x00, 0x2B, 0xED, 0x00, 0x28, 0x96, 0x00, 0x28, 0xE2, 0x00, 0x29, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x25, 0x00, 0x09, 0x25, 0x00, 0x0A, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A86, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x7E, 0xA4, 0x00, 0x11, 0xC7, 0x80, 0x11, 0x44, 0x00, 0x13, 0x64, 0x00, 0x3A, 0x34, 0x00, 0x38, 0x84, 0x00, 0x56, 0xAF, 0x80, 0x52, 0xA8, 0x80, 0x12, 0xA8, 0x80, 0x11, 0xC8, 0x80, 0x11, 0x48, 0x80, 0x13, 0x68, 0x80, 0x12, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A87, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x44, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x88, 0x00, 0x18, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x29, 0xE7, 0x80, 0x49, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x3C, 0x80, 0x09, 0x00, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A89, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xF0, 0x00, 0x09, 0x2F, 0x00, 0x3F, 0xE9, 0x00, 0x09, 0x29, 0x00, 0x19, 0xE9, 0x00, 0x1D, 0x29, 0x00, 0x3B, 0x2F, 0x00, 0x29, 0xE9, 0x00, 0x2B, 0x20, 0x00, 0x28, 0x2F, 0x00, 0x28, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A8B, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x1C, 0xFE, 0x00, 0x1B, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x92, 0x80, 0x28, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A8D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x28, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x09, 0x48, 0x80, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A8E, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x08, 0x4A, 0x00, 0x3E, 0x89, 0x80, 0x09, 0xFF, 0x00, 0x18, 0xA5, 0x00, 0x1C, 0x99, 0x00, 0x3A, 0xA5, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x09, 0x4C, 0x80, 0x09, 0xF2, 0x80, 0x09, 0x00, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A90, { 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFF, 0x80, 0x7D, 0x22, 0x00, 0x11, 0xC3, 0x80, 0x11, 0x3E, 0x00, 0x39, 0x00, 0x00, 0x35, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x51, 0x3E, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x13, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A91, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x08, 0xD6, 0x80, 0x1C, 0x10, 0x80, 0x1A, 0xD6, 0x00, 0x18, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A97, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xBF, 0x80, 0x38, 0x84, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x84, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A9B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x3F, 0x00, 0x13, 0x21, 0x00, 0x7D, 0x2F, 0x00, 0x12, 0x29, 0x00, 0x13, 0x29, 0x00, 0x11, 0x7F, 0x80, 0x38, 0x40, 0x80, 0x3B, 0x5E, 0x80, 0x55, 0x52, 0x80, 0x51, 0x52, 0x80, 0x11, 0x5E, 0x80, 0x11, 0x40, 0x80, 0x11, 0x41, 0x80, 0x13, 0x80, 0x00, 0x12, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6A9C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xC1, 0x80, 0x08, 0x3E, 0x00, 0x18, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x3A, 0xAA, 0x80, 0x28, 0x9C, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A9D, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xE5, 0x00, 0x11, 0x25, 0x80, 0x7D, 0xE4, 0x80, 0x10, 0x04, 0x00, 0x13, 0xEF, 0x80, 0x11, 0x24, 0x00, 0x39, 0xE4, 0x00, 0x35, 0x25, 0x00, 0x55, 0xE5, 0x00, 0x51, 0x27, 0x00, 0x11, 0x32, 0x00, 0x11, 0xE6, 0x00, 0x13, 0x26, 0x80, 0x10, 0x2B, 0x80, 0x10, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A9E, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x13, 0x24, 0x80, 0x7E, 0x44, 0x80, 0x13, 0xEC, 0x80, 0x12, 0xB9, 0x80, 0x12, 0xA0, 0x00, 0x3B, 0xEA, 0x00, 0x36, 0xAA, 0x00, 0x52, 0xBF, 0x80, 0x53, 0xF2, 0x00, 0x12, 0x22, 0x00, 0x12, 0x3F, 0x80, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x14, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6A9F, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x19, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AA0, { 0x00, 0x00, 0x00, 0x12, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x12, 0x3F, 0x80, 0x3F, 0x62, 0x00, 0x21, 0x12, 0x00, 0x7D, 0x16, 0x00, 0x25, 0x0C, 0x00, 0x3D, 0x16, 0x00, 0x03, 0x63, 0x80, 0x0E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x0C, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AA2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x83, 0x00, 0x09, 0x00, 0x80, 0x18, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x2B, 0xEF, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0x45, 0x00, 0x0A, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AA3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x18, 0x5D, 0x00, 0x1C, 0x08, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x28, 0xBE, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AA5, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x02, 0x00, 0x19, 0xE9, 0x00, 0x28, 0x48, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x49, 0x00, 0x08, 0x6A, 0x00, 0x09, 0xC4, 0x80, 0x08, 0x4A, 0x80, 0x08, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AA9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x7E, 0x8A, 0x00, 0x0A, 0xFA, 0x00, 0x1A, 0x8A, 0x00, 0x1F, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x0A, 0xA2, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AAA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x12, 0x20, 0x80, 0x13, 0x7D, 0x80, 0x7D, 0x45, 0x00, 0x10, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x39, 0x45, 0x00, 0x37, 0x45, 0x80, 0x52, 0x7C, 0x80, 0x50, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AAB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x00, 0x80, 0x09, 0x7F, 0x80, 0x08, 0xA9, 0x00, 0x1D, 0x6A, 0x00, 0x1A, 0xA4, 0x00, 0x1A, 0x42, 0x00, 0x28, 0xBD, 0x80, 0x29, 0x00, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AAC, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x11, 0x7E, 0x80, 0x38, 0x00, 0x00, 0x35, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x50, 0x51, 0x80, 0x11, 0xAB, 0x00, 0x10, 0x48, 0x00, 0x11, 0x9C, 0x00, 0x10, 0x6A, 0x00, 0x11, 0x89, 0x80, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AAE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x1C, 0x01, 0x00, 0x1A, 0x7D, 0x00, 0x18, 0x10, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x52, 0x00, 0x09, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AAF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x1B, 0xFF, 0x80, 0x19, 0x00, 0x80, 0x28, 0xFF, 0x00, 0x28, 0x42, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AB0, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x11, 0x88, 0x00, 0x13, 0x1F, 0x00, 0x7E, 0x51, 0x00, 0x12, 0xDF, 0x00, 0x11, 0x91, 0x00, 0x13, 0x11, 0x00, 0x3A, 0x5F, 0x00, 0x37, 0xC4, 0x00, 0x51, 0x5F, 0x80, 0x51, 0x14, 0x80, 0x13, 0x54, 0x80, 0x13, 0x54, 0x80, 0x15, 0x35, 0x80, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AB1, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xF7, 0x80, 0x7D, 0x4A, 0x00, 0x08, 0x21, 0x00, 0x08, 0x42, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AB3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x08, 0x7F, 0x00, 0x1C, 0x08, 0x80, 0x1A, 0x4B, 0x00, 0x38, 0x9C, 0x00, 0x28, 0x7F, 0x00, 0x2B, 0xC1, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AB4, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0x48, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x88, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x88, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x28, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x46, 0x00, 0x08, 0x38, 0x00, 0x09, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AB8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x20, 0x80, 0x12, 0x50, 0x80, 0x11, 0x45, 0x00, 0x32, 0x7C, 0x80, 0x38, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ABB, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xF2, 0x00, 0x08, 0xA4, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x98, 0x00, 0x18, 0x90, 0x00, 0x1C, 0xF0, 0x00, 0x3A, 0xAF, 0x80, 0x28, 0xF0, 0x00, 0x28, 0x80, 0x00, 0x28, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ABD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x09, 0x56, 0x80, 0x1D, 0x10, 0x80, 0x1A, 0x56, 0x00, 0x18, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ABE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x24, 0x11, 0x00, 0x1F, 0x7E, 0x00, 0x04, 0x10, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x15, 0x55, 0x00, 0x24, 0x93, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ABF, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x2F, 0x8A, 0x00, 0x20, 0x09, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x88, 0x00, 0x2F, 0x9C, 0x00, 0x28, 0x94, 0x00, 0x6F, 0xB6, 0x00, 0x48, 0xA3, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0E, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AC1, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x20, 0x80, 0x12, 0x14, 0x80, 0x11, 0x49, 0x00, 0x32, 0x52, 0x80, 0x38, 0x3E, 0x00, 0x55, 0xC0, 0x00, 0x50, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x12, 0x00, 0x10, 0x7F, 0x00, 0x13, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AC2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x3F, 0x6B, 0x00, 0x0A, 0xB5, 0x00, 0x19, 0x6B, 0x00, 0x1C, 0x24, 0x00, 0x3A, 0x48, 0x00, 0x28, 0xFF, 0x00, 0x29, 0x90, 0x00, 0x2A, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AC3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x19, 0x7F, 0x00, 0x1D, 0x08, 0x00, 0x3B, 0xFF, 0x80, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x22, 0x00, 0x09, 0x41, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AC6, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x81, 0x00, 0x13, 0xF5, 0x00, 0x7E, 0x93, 0x00, 0x12, 0x91, 0x00, 0x13, 0xF5, 0x00, 0x12, 0x93, 0x00, 0x3A, 0x91, 0x00, 0x37, 0xF1, 0x80, 0x55, 0x4F, 0x00, 0x51, 0x51, 0x00, 0x11, 0x55, 0x00, 0x11, 0x7D, 0x00, 0x13, 0x40, 0x80, 0x12, 0x61, 0x80, 0x16, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AC8, { 0x00, 0x00, 0x00, 0x08, 0x72, 0x00, 0x09, 0x14, 0x80, 0x08, 0xBD, 0x00, 0x7E, 0xC3, 0x00, 0x09, 0xBD, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x42, 0x00, 0x18, 0x7E, 0x00, 0x28, 0x24, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AC9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x7E, 0x41, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x41, 0x00, 0x12, 0xEF, 0x80, 0x3A, 0x01, 0x00, 0x36, 0xF1, 0x00, 0x56, 0x95, 0x00, 0x52, 0xF3, 0x00, 0x12, 0x01, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x14, 0x79, 0x00, 0x11, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ACC, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x1D, 0xFF, 0x80, 0x1B, 0x08, 0x80, 0x18, 0xA5, 0x00, 0x28, 0xA2, 0x80, 0x29, 0x1E, 0x00, 0x48, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x09, 0xA2, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AD0, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x90, 0x00, 0x0E, 0x9C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AD1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x38, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x53, 0xEF, 0x80, 0x52, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x13, 0xEF, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x13, 0xEF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AD3, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x18, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x09, 0x00, 0x29, 0x24, 0x80, 0x29, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AD4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x09, 0x7F, 0x00, 0x1D, 0x49, 0x00, 0x1B, 0x7F, 0x00, 0x19, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x49, 0x7F, 0x80, 0x09, 0x4A, 0x80, 0x09, 0x4E, 0x80, 0x0A, 0x7A, 0x80, 0x08, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AD5, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0xEF, 0x00, 0x08, 0x42, 0x00, 0x7E, 0xEF, 0x80, 0x08, 0x46, 0x00, 0x08, 0xAD, 0x00, 0x1D, 0x18, 0x80, 0x1A, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AD6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x20, 0x80, 0x09, 0xFE, 0x00, 0x1D, 0x20, 0x80, 0x1B, 0x7F, 0x80, 0x19, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x49, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x0A, 0xA5, 0x00, 0x0C, 0xA2, 0x80, 0x09, 0x1E, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ADA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x3F, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x19, 0xE7, 0x80, 0x1D, 0x00, 0x80, 0x3B, 0x3C, 0x80, 0x29, 0x24, 0x80, 0x29, 0x3C, 0x80, 0x29, 0x10, 0x80, 0x09, 0x7E, 0x80, 0x09, 0x42, 0x80, 0x09, 0x7E, 0x80, 0x09, 0x00, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ADB, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x8A, 0x00, 0x3E, 0x51, 0x00, 0x08, 0x00, 0x00, 0x19, 0xEF, 0x00, 0x1D, 0x29, 0x00, 0x3B, 0xE9, 0x00, 0x29, 0x29, 0x00, 0x29, 0xE9, 0x00, 0x29, 0x09, 0x00, 0x09, 0xE9, 0x00, 0x09, 0x09, 0x00, 0x09, 0xEB, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ADC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x47, 0x90, 0x80, 0x5C, 0x9C, 0x80, 0x03, 0x10, 0x00, 0x1C, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ADD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x94, 0x80, 0x1A, 0xFF, 0x80, 0x19, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ADE, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x1F, 0x00, 0x12, 0x11, 0x00, 0x7E, 0x9F, 0x00, 0x12, 0x82, 0x00, 0x19, 0x3F, 0x80, 0x35, 0x08, 0x00, 0x32, 0x54, 0x00, 0x57, 0xC6, 0x80, 0x51, 0x4B, 0x00, 0x11, 0x12, 0x00, 0x15, 0x46, 0x00, 0x15, 0x4B, 0x00, 0x15, 0x52, 0x80, 0x19, 0x02, 0x00, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ADF, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x13, 0x23, 0x00, 0x12, 0x3A, 0x00, 0x7E, 0xAA, 0x80, 0x11, 0x29, 0x00, 0x11, 0x39, 0x00, 0x3A, 0x2A, 0x00, 0x36, 0xAA, 0x80, 0x53, 0xBB, 0x80, 0x50, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AE4, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0xF7, 0x80, 0x09, 0x4A, 0x00, 0x7E, 0x21, 0x00, 0x08, 0x41, 0x00, 0x08, 0x22, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x18, 0xF8, 0x80, 0x28, 0x8A, 0x80, 0x28, 0xEA, 0x80, 0x48, 0x9A, 0x80, 0x08, 0xCA, 0x80, 0x08, 0xB8, 0x80, 0x08, 0x88, 0x80, 0x08, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AE7, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xC4, 0x80, 0x10, 0x1F, 0x80, 0x7F, 0xE5, 0x00, 0x10, 0x05, 0x00, 0x13, 0xC6, 0x00, 0x10, 0x3F, 0x80, 0x38, 0x06, 0x00, 0x37, 0xC9, 0x00, 0x54, 0x1F, 0x80, 0x50, 0x28, 0x80, 0x13, 0xC8, 0x80, 0x12, 0x4F, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x13, 0xCF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AE8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x7E, 0x21, 0x00, 0x12, 0xFC, 0x00, 0x12, 0x21, 0x00, 0x3A, 0xFF, 0x00, 0x36, 0x92, 0x00, 0x32, 0xFE, 0x00, 0x52, 0x92, 0x00, 0x52, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AEA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x66, 0x00, 0x7E, 0xCC, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x44, 0x00, 0x3A, 0xEE, 0x00, 0x37, 0x55, 0x00, 0x52, 0x44, 0x00, 0x52, 0x10, 0x00, 0x12, 0x90, 0x00, 0x12, 0x9F, 0x00, 0x14, 0x90, 0x00, 0x10, 0x90, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AEC, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x9F, 0x00, 0x13, 0xF1, 0x00, 0x7D, 0x51, 0x00, 0x11, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x13, 0xF1, 0x00, 0x38, 0x9F, 0x00, 0x34, 0x91, 0x00, 0x57, 0xF1, 0x00, 0x50, 0x9F, 0x00, 0x11, 0xCA, 0x00, 0x12, 0xAA, 0x00, 0x14, 0x9A, 0x00, 0x10, 0x92, 0x80, 0x10, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AF0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x09, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x1B, 0xD7, 0x00, 0x1A, 0x10, 0x00, 0x29, 0xD7, 0x00, 0x28, 0x38, 0x80, 0x48, 0x69, 0x80, 0x09, 0xCD, 0x00, 0x08, 0x46, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AF1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x25, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x3F, 0x36, 0x00, 0x21, 0x14, 0x00, 0x3F, 0x7F, 0x00, 0x20, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x98, 0x00, 0x3C, 0x8F, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AF2, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0xCF, 0x00, 0x10, 0x51, 0x00, 0x7E, 0xA2, 0x00, 0x11, 0x9F, 0x80, 0x11, 0x14, 0x80, 0x13, 0xF4, 0x80, 0x39, 0x3F, 0x80, 0x35, 0x48, 0x00, 0x51, 0x14, 0x80, 0x51, 0x2A, 0x80, 0x11, 0x17, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x13, 0x00, 0x11, 0x22, 0x80, 0x13, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AF6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x0F, 0x00, 0x08, 0x78, 0x00, 0x18, 0xFF, 0x00, 0x1C, 0x08, 0x00, 0x3A, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x94, 0x80, 0x28, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x09, 0x51, 0x00, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AFA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x3A, 0x10, 0x80, 0x34, 0xD6, 0x00, 0x50, 0x10, 0x00, 0x50, 0x00, 0x00, 0x13, 0xBB, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x13, 0xBB, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AFB, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x19, 0x29, 0x00, 0x1D, 0xEF, 0x00, 0x3B, 0x29, 0x00, 0x2A, 0x30, 0x80, 0x28, 0x40, 0x00, 0x2F, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6AFC, { 0x00, 0x00, 0x00, 0x11, 0x24, 0x00, 0x11, 0x25, 0x00, 0x12, 0xD5, 0x80, 0x7E, 0xD4, 0x80, 0x10, 0x04, 0x00, 0x13, 0xFF, 0x80, 0x10, 0xA4, 0x00, 0x3B, 0xBD, 0x00, 0x34, 0xA5, 0x00, 0x57, 0xBD, 0x00, 0x50, 0xA7, 0x00, 0x13, 0xBA, 0x00, 0x10, 0xA6, 0x00, 0x10, 0xFE, 0x80, 0x13, 0x8B, 0x80, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6AFD, { 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x54, 0x00, 0x24, 0xFE, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x01, 0x00, 0x2C, 0xFF, 0x00, 0x21, 0x51, 0x00, 0x23, 0x4A, 0x80, 0x22, 0x3E, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B02, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x05, 0x00, 0x13, 0x3F, 0x80, 0x11, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x3B, 0x24, 0x80, 0x35, 0xBF, 0x80, 0x54, 0xA4, 0x80, 0x50, 0x3F, 0x80, 0x10, 0xA4, 0x80, 0x11, 0x81, 0x00, 0x11, 0x3F, 0x80, 0x13, 0x11, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B03, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x09, 0x84, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x77, 0x00, 0x1A, 0x44, 0x80, 0x18, 0xF3, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x68, 0x80, 0x09, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B04, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x19, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x3B, 0x11, 0x00, 0x29, 0x7D, 0x00, 0x29, 0x55, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x39, 0x00, 0x09, 0x55, 0x00, 0x09, 0x93, 0x00, 0x09, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B05, { 0x00, 0x00, 0x00, 0x08, 0xD0, 0x00, 0x09, 0x9B, 0x00, 0x09, 0x11, 0x00, 0x7F, 0x9B, 0x00, 0x09, 0x29, 0x00, 0x09, 0xAB, 0x00, 0x1D, 0x29, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x28, 0xBA, 0x00, 0x29, 0x11, 0x00, 0x4A, 0xFE, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B06, { 0x00, 0x00, 0x00, 0x08, 0x52, 0x80, 0x08, 0xA5, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0xA5, 0x00, 0x08, 0xF7, 0x80, 0x08, 0xA5, 0x00, 0x1C, 0xF7, 0x80, 0x1A, 0xA5, 0x00, 0x18, 0xF7, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x41, 0x00, 0x08, 0x36, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x76, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B07, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x47, 0x00, 0x1D, 0xFC, 0x00, 0x18, 0x04, 0x00, 0x1B, 0xFF, 0x80, 0x29, 0x29, 0x00, 0x29, 0xEF, 0x00, 0x49, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x80, 0x0B, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B09, { 0x00, 0x00, 0x00, 0x11, 0x29, 0x00, 0x10, 0xAA, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x82, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x51, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x29, 0x00, 0x11, 0xE6, 0x00, 0x13, 0x2B, 0x00, 0x10, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B0A, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x99, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x44, 0x00, 0x18, 0x88, 0x00, 0x29, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B0C, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x3E, 0x05, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x84, 0x00, 0x1E, 0xFC, 0x00, 0x1B, 0xD4, 0x80, 0x28, 0xF4, 0x80, 0x28, 0xD5, 0x00, 0x2B, 0xD5, 0x00, 0x0A, 0xF6, 0x00, 0x0A, 0xD2, 0x00, 0x09, 0x56, 0x80, 0x09, 0x79, 0x80, 0x0A, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B0F, { 0x00, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x7F, 0xFF, 0x80, 0x10, 0x89, 0x00, 0x11, 0x12, 0x00, 0x12, 0x3F, 0x80, 0x39, 0x52, 0x00, 0x34, 0x92, 0x00, 0x55, 0x3F, 0x80, 0x53, 0xF2, 0x00, 0x10, 0x92, 0x00, 0x12, 0xBF, 0x80, 0x12, 0xB2, 0x00, 0x12, 0xB2, 0x00, 0x10, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B10, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x80, 0x7F, 0x28, 0x80, 0x09, 0x6A, 0x80, 0x08, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x1B, 0x24, 0x00, 0x19, 0xFF, 0x80, 0x29, 0x24, 0x80, 0x29, 0xFF, 0x80, 0x49, 0x44, 0x00, 0x09, 0x77, 0x80, 0x09, 0x44, 0x00, 0x0A, 0x74, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B11, { 0x00, 0x00, 0x00, 0x09, 0x4A, 0x00, 0x09, 0xEF, 0x80, 0x08, 0x42, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x1D, 0x39, 0x80, 0x1A, 0xFF, 0x00, 0x1A, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B12, { 0x00, 0x00, 0x00, 0x08, 0xE2, 0x00, 0x30, 0x04, 0x00, 0x15, 0xF9, 0x00, 0x08, 0x06, 0x00, 0x14, 0xE4, 0x80, 0x3E, 0x0F, 0x80, 0x08, 0xE2, 0x00, 0x2A, 0x0A, 0x80, 0x2A, 0xEA, 0x80, 0x08, 0xE2, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B16, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xAB, 0x80, 0x09, 0x10, 0x80, 0x3F, 0xEB, 0x80, 0x09, 0x10, 0x80, 0x19, 0xEB, 0x80, 0x1D, 0xFF, 0x80, 0x3B, 0x00, 0x80, 0x28, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0xC4, 0x80, 0x1B, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B17, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7F, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x3B, 0xEF, 0x80, 0x36, 0x10, 0x80, 0x56, 0xFE, 0x80, 0x52, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x12, 0xBA, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x54, 0x80, 0x12, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B1B, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x39, 0x40, 0x00, 0x37, 0xFF, 0x80, 0x55, 0x48, 0x80, 0x53, 0xEF, 0x80, 0x12, 0xA8, 0x80, 0x13, 0xEF, 0x80, 0x10, 0x88, 0x80, 0x17, 0xF8, 0x80, 0x10, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B1D, { 0x00, 0x00, 0x00, 0x11, 0x22, 0x00, 0x7C, 0xCF, 0x80, 0x11, 0x22, 0x00, 0x38, 0xC7, 0x00, 0x55, 0x2A, 0x80, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x21, 0x7F, 0x80, 0x3F, 0x02, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x12, 0x00, 0x22, 0x02, 0x00, 0x7D, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B1E, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7E, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x38, 0x00, 0x00, 0x37, 0xBB, 0x80, 0x52, 0xAA, 0x80, 0x53, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x11, 0x55, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B1F, { 0x00, 0x00, 0x00, 0x11, 0x40, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x7B, 0xE9, 0x00, 0x12, 0xAF, 0x00, 0x1B, 0xE9, 0x00, 0x35, 0x49, 0x00, 0x33, 0xEF, 0x00, 0x56, 0x89, 0x00, 0x53, 0xE9, 0x00, 0x12, 0x8F, 0x00, 0x13, 0xEA, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x8A, 0x80, 0x13, 0xFA, 0x80, 0x10, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B20, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x41, 0x00, 0x10, 0x42, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B21, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x01, 0x01, 0x00, 0x01, 0x32, 0x00, 0x02, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x02, 0x20, 0x00, 0x0C, 0x50, 0x00, 0x30, 0x50, 0x00, 0x00, 0x88, 0x00, 0x01, 0x04, 0x00, 0x06, 0x02, 0x00, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B22, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x02, 0x7E, 0x00, 0x22, 0x82, 0x00, 0x23, 0x24, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x08, 0x20, 0x00, 0x14, 0x20, 0x00, 0x12, 0x50, 0x00, 0x22, 0x50, 0x00, 0x40, 0x88, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B23, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x1C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x1F, 0x80, 0x10, 0x29, 0x00, 0x1F, 0xA9, 0x00, 0x11, 0x48, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x12, 0x00, 0x11, 0x22, 0x00, 0x21, 0x21, 0x00, 0x21, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B24, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xBF, 0x80, 0x08, 0x20, 0x80, 0x08, 0x69, 0x80, 0x08, 0x09, 0x00, 0x7F, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x9C, 0x00, 0x06, 0x94, 0x00, 0x1C, 0x94, 0x00, 0x71, 0x96, 0x00, 0x01, 0x32, 0x00, 0x01, 0x23, 0x00, 0x07, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B27, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x40, 0x40, 0x00, 0x40, 0x7F, 0x00, 0x54, 0xC1, 0x00, 0x54, 0x93, 0x00, 0x49, 0x92, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x48, 0x38, 0x00, 0x54, 0x28, 0x00, 0x54, 0x28, 0x00, 0x40, 0x6C, 0x00, 0x40, 0x44, 0x00, 0x7E, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B28, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x80, 0x40, 0xE9, 0x80, 0x3C, 0x89, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x9C, 0x00, 0x24, 0x94, 0x00, 0x3C, 0x94, 0x00, 0x01, 0x96, 0x00, 0x01, 0x32, 0x00, 0x01, 0x23, 0x00, 0x07, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B2B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x3F, 0x80, 0x44, 0x20, 0x80, 0x04, 0x69, 0x80, 0x3F, 0x89, 0x00, 0x04, 0x08, 0x00, 0x24, 0x08, 0x00, 0x27, 0x9C, 0x00, 0x24, 0x14, 0x00, 0x24, 0x14, 0x00, 0x27, 0xB6, 0x00, 0x3C, 0x22, 0x00, 0x60, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B2C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x20, 0x80, 0x18, 0x69, 0x80, 0x31, 0x09, 0x00, 0x63, 0x08, 0x00, 0x36, 0x08, 0x00, 0x0C, 0x88, 0x00, 0x19, 0x9C, 0x00, 0x33, 0x14, 0x00, 0x66, 0x16, 0x00, 0x0D, 0x32, 0x00, 0x19, 0xA3, 0x00, 0x70, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B2F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x20, 0x80, 0x08, 0x69, 0x80, 0x08, 0x09, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x1C, 0x00, 0x21, 0x14, 0x00, 0x21, 0x16, 0x00, 0x21, 0x32, 0x00, 0x21, 0x23, 0x00, 0x3F, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B32, { 0x00, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x11, 0x10, 0x00, 0x20, 0x90, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x29, 0x00, 0x0A, 0x29, 0x00, 0x11, 0x48, 0x00, 0x20, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x12, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B35, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x27, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x20, 0x7F, 0x80, 0x21, 0x40, 0x80, 0x1F, 0x89, 0x80, 0x20, 0x09, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x08, 0x00, 0x44, 0x08, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x14, 0x00, 0x0E, 0x16, 0x00, 0x1B, 0x32, 0x00, 0x31, 0xA3, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B36, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xA0, 0x80, 0x24, 0xC9, 0x80, 0x24, 0x89, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x15, 0x14, 0x00, 0x14, 0x96, 0x00, 0x24, 0x32, 0x00, 0x44, 0x23, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B37, { 0x00, 0x00, 0x00, 0x11, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0A, 0x3F, 0x80, 0x31, 0x60, 0x80, 0x04, 0x49, 0x80, 0x7F, 0xC9, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x54, 0x9C, 0x00, 0x14, 0x94, 0x00, 0x14, 0x96, 0x00, 0x15, 0xB2, 0x00, 0x04, 0x23, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B38, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x19, 0x20, 0x00, 0x11, 0x20, 0x00, 0x17, 0xBF, 0x80, 0x7C, 0xE0, 0x80, 0x10, 0x49, 0x80, 0x3F, 0x89, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xDC, 0x00, 0x04, 0x14, 0x00, 0x0E, 0x14, 0x00, 0x0B, 0x36, 0x00, 0x19, 0xA2, 0x00, 0x30, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B39, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x0A, 0x3F, 0x80, 0x1B, 0x20, 0x80, 0x31, 0x69, 0x80, 0x00, 0x09, 0x00, 0x7F, 0xC8, 0x00, 0x01, 0x08, 0x00, 0x3D, 0x08, 0x00, 0x25, 0x1C, 0x00, 0x25, 0x14, 0x00, 0x3D, 0x16, 0x00, 0x01, 0x32, 0x00, 0x01, 0x23, 0x00, 0x07, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B3A, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x3F, 0xD0, 0x00, 0x09, 0x1F, 0x80, 0x09, 0x28, 0x80, 0x0F, 0x49, 0x00, 0x09, 0x8A, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x0C, 0x00, 0x3F, 0xD4, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x09, 0x21, 0x00, 0x10, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B3B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x90, 0x00, 0x25, 0x90, 0x00, 0x6D, 0x3F, 0x80, 0x4A, 0x20, 0x80, 0x1B, 0x49, 0x80, 0x31, 0x89, 0x00, 0x64, 0x88, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x25, 0x9C, 0x00, 0x6D, 0x14, 0x00, 0x4A, 0x16, 0x00, 0x1B, 0x32, 0x00, 0x31, 0xA3, 0x00, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B3D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x3E, 0x49, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x28, 0x22, 0x00, 0x0F, 0x42, 0x00, 0x38, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B3E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x48, 0x80, 0x00, 0x89, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x14, 0x00, 0x15, 0x14, 0x00, 0x14, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x24, 0x41, 0x00, 0x0C, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B3F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x10, 0xBF, 0x80, 0x20, 0xA0, 0x80, 0x20, 0xE9, 0x80, 0x43, 0x89, 0x00, 0x18, 0x08, 0x00, 0x63, 0x88, 0x00, 0x40, 0x88, 0x00, 0x40, 0x9C, 0x00, 0x7B, 0x94, 0x00, 0x40, 0x96, 0x00, 0x40, 0xB2, 0x00, 0x40, 0xA3, 0x00, 0x7F, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B43, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x07, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x20, 0x80, 0x7F, 0xC9, 0x80, 0x04, 0x09, 0x00, 0x14, 0x08, 0x00, 0x35, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x9C, 0x00, 0x35, 0x94, 0x00, 0x24, 0x96, 0x00, 0x24, 0xB2, 0x00, 0x3F, 0xA3, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B46, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x3F, 0x80, 0x11, 0x49, 0x00, 0x0A, 0x8A, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x22, 0x00, 0x11, 0x42, 0x00, 0x1F, 0x81, 0x00, 0x11, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B47, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xDF, 0x80, 0x10, 0x54, 0x80, 0x1F, 0xE5, 0x00, 0x04, 0x44, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xE4, 0x00, 0x32, 0x24, 0x00, 0x12, 0x24, 0x00, 0x15, 0x2A, 0x00, 0x18, 0xAA, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x51, 0x00, 0x11, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B49, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x09, 0x08, 0x00, 0x7F, 0xE8, 0x00, 0x0A, 0x0F, 0x80, 0x3F, 0xD8, 0x80, 0x0A, 0x55, 0x80, 0x7F, 0xF5, 0x00, 0x0A, 0x44, 0x00, 0x3F, 0xC4, 0x00, 0x0A, 0x04, 0x00, 0x1B, 0x0E, 0x00, 0x1B, 0x0A, 0x00, 0x2A, 0x8A, 0x00, 0x4A, 0x5B, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B4A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x00, 0x1F, 0x80, 0x1F, 0x30, 0x80, 0x11, 0x25, 0x80, 0x1F, 0x45, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x2E, 0x8E, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2E, 0x9B, 0x00, 0x20, 0x91, 0x00, 0x21, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B4C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x00, 0x44, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x4F, 0x80, 0x1E, 0x54, 0x80, 0x00, 0x54, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x4A, 0x00, 0x1E, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x1E, 0x51, 0x00, 0x00, 0x51, 0x00, 0x00, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B4D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x21, 0x3F, 0x80, 0x21, 0x20, 0x80, 0x21, 0x65, 0x80, 0x3F, 0x05, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xCE, 0x00, 0x01, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5B, 0x00, 0x54, 0xD1, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B4E, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xE8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0x9F, 0x80, 0x02, 0x15, 0x00, 0x1F, 0xE4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xEA, 0x00, 0x02, 0x0A, 0x00, 0x05, 0x09, 0x00, 0x08, 0x91, 0x00, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B50, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x20, 0x10, 0x00, 0x27, 0x9F, 0x80, 0x24, 0xA0, 0x80, 0x24, 0xA1, 0x00, 0x27, 0xC8, 0x00, 0x20, 0x88, 0x00, 0x20, 0x08, 0x00, 0x2F, 0xC8, 0x00, 0x2B, 0x4C, 0x00, 0x2B, 0x54, 0x00, 0x2F, 0xD2, 0x00, 0x20, 0x22, 0x00, 0x3F, 0xE1, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B52, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x12, 0x3F, 0x80, 0x12, 0x20, 0x80, 0x12, 0x69, 0x80, 0x7F, 0x89, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x7F, 0x88, 0x00, 0x48, 0x9C, 0x00, 0x5E, 0x94, 0x00, 0x52, 0x96, 0x00, 0x52, 0xB2, 0x00, 0x5E, 0xA3, 0x00, 0x41, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B53, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x68, 0x1F, 0x80, 0x08, 0x30, 0x80, 0x7F, 0xA9, 0x80, 0x12, 0x69, 0x00, 0x14, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x64, 0x1C, 0x00, 0x3F, 0x14, 0x00, 0x24, 0x14, 0x00, 0x3F, 0x36, 0x00, 0x24, 0x22, 0x00, 0x3F, 0xE3, 0x00, 0x00, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B54, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x07, 0x88, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xDF, 0x80, 0x24, 0x50, 0x80, 0x3F, 0x35, 0x80, 0x24, 0x45, 0x00, 0x23, 0xC4, 0x00, 0x20, 0x04, 0x00, 0x25, 0x04, 0x00, 0x35, 0x4E, 0x00, 0x3D, 0xCA, 0x00, 0x25, 0x0A, 0x00, 0x25, 0xDB, 0x00, 0x47, 0x11, 0x00, 0x1C, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B56, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x08, 0x3F, 0x80, 0x3F, 0x20, 0x80, 0x00, 0x69, 0x80, 0x3F, 0x09, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x12, 0x08, 0x00, 0x7F, 0x9C, 0x00, 0x00, 0x14, 0x00, 0x3F, 0x16, 0x00, 0x21, 0x32, 0x00, 0x21, 0x23, 0x00, 0x3F, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B58, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x90, 0x00, 0x25, 0x90, 0x00, 0x6D, 0x3F, 0x80, 0x4A, 0x20, 0x80, 0x1B, 0x69, 0x80, 0x31, 0x89, 0x00, 0x60, 0x88, 0x00, 0x11, 0x08, 0x00, 0x51, 0x48, 0x00, 0x5B, 0x5C, 0x00, 0x55, 0x94, 0x00, 0x33, 0x16, 0x00, 0x2A, 0xB2, 0x00, 0x66, 0xA3, 0x00, 0x44, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B59, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x08, 0x00, 0x6E, 0xCF, 0x80, 0x00, 0x18, 0x80, 0x1F, 0x15, 0x80, 0x11, 0x35, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC4, 0x00, 0x29, 0x4E, 0x00, 0x4A, 0x4A, 0x00, 0x18, 0xCA, 0x00, 0x29, 0x5B, 0x00, 0x4A, 0x51, 0x00, 0x18, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B5B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x1B, 0x08, 0x00, 0x31, 0x8F, 0x80, 0x60, 0xD8, 0x80, 0x1F, 0x15, 0x80, 0x00, 0x35, 0x00, 0x3B, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x3B, 0x8E, 0x00, 0x00, 0x0A, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x1B, 0x00, 0x3B, 0x91, 0x00, 0x6A, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B5D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x20, 0x80, 0x3F, 0xC9, 0x80, 0x04, 0x09, 0x00, 0x7F, 0xC8, 0x00, 0x11, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x14, 0x00, 0x3F, 0x96, 0x00, 0x04, 0x32, 0x00, 0x04, 0x23, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B5F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x1A, 0xC8, 0x00, 0x13, 0x48, 0x00, 0x12, 0x5F, 0x80, 0x1B, 0xD5, 0x00, 0x12, 0x64, 0x00, 0x10, 0x44, 0x00, 0x1A, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x3F, 0xEA, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x00, 0x08, 0x92, 0x00, 0x08, 0x51, 0x00, 0x10, 0x51, 0x00, 0x20, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B60, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x08, 0x90, 0x00, 0x33, 0x1F, 0x80, 0x4C, 0xD0, 0x80, 0x7F, 0xE5, 0x80, 0x08, 0x85, 0x00, 0x33, 0x04, 0x00, 0x4C, 0xC4, 0x00, 0x7F, 0xC4, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0xCA, 0x00, 0x4A, 0x4A, 0x00, 0x7F, 0xDB, 0x00, 0x40, 0x51, 0x00, 0x7F, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B61, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xE8, 0x00, 0x08, 0x88, 0x00, 0x1D, 0xDF, 0x80, 0x15, 0x54, 0x80, 0x1D, 0xE5, 0x00, 0x01, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x12, 0x0A, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x11, 0x00, 0x1F, 0xE1, 0x00, 0x10, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B62, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B64, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x13, 0x80, 0x09, 0xFC, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x80, 0x0F, 0xF0, 0x80, 0x38, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B65, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x41, 0x00, 0x08, 0x42, 0x00, 0x10, 0x44, 0x00, 0x21, 0xC8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B66, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x1F, 0xA1, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x12, 0x20, 0x00, 0x13, 0xD0, 0x00, 0x12, 0x10, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x17, 0xC4, 0x80, 0x38, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B67, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x00, 0x2F, 0x41, 0x00, 0x28, 0x63, 0x00, 0x28, 0x22, 0x00, 0x28, 0x36, 0x00, 0x28, 0x1C, 0x00, 0x28, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x2F, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B69, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x8B, 0x80, 0x03, 0x98, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x60, 0x00, 0x00, 0xD0, 0x00, 0x01, 0x4C, 0x00, 0x06, 0x43, 0x80, 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B6B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x7E, 0x00, 0x27, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x27, 0x40, 0x00, 0x3C, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B6E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x28, 0x00, 0x13, 0xAF, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x17, 0xA8, 0x00, 0x7C, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B6F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x14, 0x92, 0x00, 0x12, 0xA2, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC2, 0x00, 0x12, 0xA2, 0x00, 0x14, 0x9A, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B70, { 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x84, 0x80, 0x24, 0xA4, 0x80, 0x2C, 0xAC, 0x80, 0x19, 0x99, 0x80, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x28, 0x00, 0x13, 0xAF, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x17, 0xA8, 0x00, 0x7C, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B72, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x7E, 0x00, 0x02, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x24, 0x00, 0x00, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x21, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x12, 0x00, 0x16, 0xB4, 0x00, 0x1A, 0x48, 0x00, 0x16, 0x94, 0x80, 0x23, 0x22, 0x80, 0x2C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B73, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x17, 0xD9, 0x00, 0x11, 0x0B, 0x00, 0x15, 0x4E, 0x00, 0x15, 0x44, 0x80, 0x31, 0x0E, 0x80, 0x23, 0x1B, 0x80, 0x60, 0x71, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x23, 0x8E, 0x00, 0x2D, 0x55, 0x80, 0x21, 0x04, 0x00, 0x20, 0x20, 0x00, 0x22, 0x20, 0x00, 0x62, 0x3F, 0x00, 0x42, 0x20, 0x00, 0x42, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B75, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x2F, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x2F, 0x7F, 0x00, 0x38, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0xC7, 0x00, 0x17, 0x1C, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x24, 0x80, 0x11, 0x04, 0x00, 0x10, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x21, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B78, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x01, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x01, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x2E, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x49, 0x00, 0x2F, 0x49, 0x00, 0x38, 0x4B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x06, 0x04, 0x00, 0x0D, 0x8C, 0x00, 0x38, 0xC8, 0x00, 0x00, 0x58, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x07, 0xD0, 0x00, 0x04, 0x51, 0x80, 0x0C, 0x56, 0x00, 0x0A, 0x98, 0x00, 0x11, 0x90, 0x00, 0x21, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B7C, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x12, 0x00, 0x31, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x06, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B7D, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x10, 0x78, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1E, 0x7F, 0x80, 0x12, 0x44, 0x00, 0x32, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x66, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x18, 0x84, 0x00, 0x31, 0x84, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B7E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x10, 0x3F, 0x80, 0x10, 0x2A, 0x80, 0x1E, 0x6A, 0x80, 0x12, 0x4A, 0x80, 0x32, 0xDA, 0x80, 0x22, 0x12, 0x80, 0x3A, 0x36, 0x80, 0x6E, 0x24, 0x80, 0x04, 0x6C, 0x80, 0x0C, 0xC8, 0x80, 0x08, 0x19, 0x80, 0x18, 0x31, 0x00, 0x30, 0x61, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B7F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x11, 0x00, 0x0F, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x10, 0xC2, 0x00, 0x19, 0x0C, 0x00, 0x15, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x02, 0x42, 0x00, 0x04, 0x24, 0x00, 0x04, 0x18, 0x00, 0x08, 0x18, 0x00, 0x10, 0x66, 0x00, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B80, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x10, 0x78, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3A, 0x08, 0x00, 0x6E, 0x1C, 0x00, 0x04, 0x14, 0x00, 0x0C, 0x14, 0x00, 0x08, 0x36, 0x00, 0x18, 0x22, 0x00, 0x30, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B81, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x7E, 0x00, 0x7F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1E, 0x87, 0x00, 0x13, 0x00, 0x00, 0x22, 0xFC, 0x00, 0x32, 0x04, 0x00, 0x4C, 0x44, 0x00, 0x04, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x10, 0x48, 0x00, 0x20, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1E, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x3A, 0x42, 0x00, 0x6E, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x31, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B83, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x2B, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x10, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B84, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xA8, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x89, 0x80, 0x0F, 0x08, 0x00, 0x11, 0x12, 0x00, 0x11, 0x22, 0x00, 0x2A, 0x44, 0x00, 0x26, 0x88, 0x80, 0x04, 0x11, 0x00, 0x04, 0x22, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x08, 0x00, 0x10, 0x30, 0x00, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B85, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0xFF, 0x00, 0x3C, 0x90, 0x00, 0x25, 0x10, 0x00, 0x24, 0x10, 0x00, 0x54, 0x10, 0x00, 0x4C, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x41, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B86, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xCF, 0x00, 0x11, 0x70, 0x80, 0x11, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x06, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B87, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x42, 0x00, 0x7F, 0x7F, 0x00, 0x10, 0x80, 0x00, 0x11, 0x7C, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x12, 0x00, 0x22, 0xFF, 0x00, 0x32, 0x4A, 0x00, 0x4C, 0x4A, 0x00, 0x04, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x22, 0x00, 0x12, 0x42, 0x00, 0x20, 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B89, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x0F, 0x80, 0x80, 0x11, 0x7C, 0x80, 0x11, 0x44, 0x80, 0x1A, 0x7C, 0x80, 0x26, 0x44, 0x80, 0x02, 0x7C, 0x80, 0x04, 0x44, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B8A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x28, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x88, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x26, 0x1C, 0x00, 0x02, 0x2C, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x22, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B8B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x10, 0x11, 0x00, 0x10, 0xFF, 0x80, 0x1E, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x3A, 0x10, 0x00, 0x6E, 0x19, 0x00, 0x04, 0x0B, 0x00, 0x0C, 0x0E, 0x00, 0x08, 0x1C, 0x00, 0x18, 0x76, 0x80, 0x31, 0xC3, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B8D, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x10, 0x7A, 0x00, 0x10, 0x53, 0x00, 0x1E, 0xD9, 0x80, 0x12, 0x88, 0x80, 0x32, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x3A, 0x04, 0x00, 0x6E, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B92, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0xFF, 0x00, 0x7F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1E, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x32, 0x92, 0x00, 0x4C, 0x92, 0x00, 0x04, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x28, 0x00, 0x20, 0x46, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B93, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x1F, 0x05, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x00, 0x00, 0x32, 0x22, 0x00, 0x4C, 0x92, 0x00, 0x04, 0x92, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x10, 0x08, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B95, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x66, 0x00, 0x12, 0x24, 0x00, 0x32, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x3A, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x30, 0x42, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B96, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0xBF, 0x00, 0x11, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x26, 0xBF, 0x00, 0x04, 0xA1, 0x00, 0x04, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA0, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B97, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x1C, 0x54, 0x00, 0x14, 0x92, 0x00, 0x35, 0xFF, 0x00, 0x26, 0x92, 0x80, 0x74, 0x92, 0x00, 0x1C, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x10, 0x80, 0x30, 0x19, 0x80, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B98, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x24, 0x00, 0x08, 0x20, 0x00, 0x08, 0x2F, 0x80, 0x09, 0xF0, 0x00, 0x0F, 0x10, 0x00, 0x09, 0x0C, 0x80, 0x11, 0x23, 0x80, 0x1A, 0x28, 0x00, 0x26, 0x27, 0x80, 0x04, 0x38, 0x00, 0x05, 0xD2, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x80, 0x10, 0x66, 0x80, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B9A, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02, 0x44, 0x00, 0x7F, 0x08, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x92, 0x00, 0x32, 0x92, 0x00, 0x4C, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1C, 0x78, 0x00, 0x14, 0x08, 0x00, 0x35, 0xCF, 0x80, 0x25, 0x48, 0x80, 0x75, 0x4A, 0x80, 0x1D, 0x49, 0x00, 0x09, 0xDB, 0x00, 0x08, 0x14, 0x80, 0x18, 0x70, 0x00, 0x10, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6B9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x0F, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x19, 0x40, 0x80, 0x15, 0x7F, 0x80, 0x22, 0x40, 0x80, 0x02, 0x7F, 0x80, 0x04, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x10, 0x21, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6B9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1C, 0xBA, 0x00, 0x14, 0xEE, 0x00, 0x34, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x74, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x19, 0x49, 0x00, 0x11, 0x49, 0x00, 0x33, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BA0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x20, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x32, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x3A, 0xFE, 0x00, 0x6E, 0x10, 0x00, 0x04, 0x11, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x18, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BA1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x12, 0x1A, 0x00, 0x1E, 0xE0, 0x00, 0x12, 0x84, 0x00, 0x22, 0xFE, 0x00, 0x32, 0x88, 0x00, 0x4C, 0x88, 0x00, 0x04, 0x8A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x10, 0x88, 0x00, 0x21, 0x06, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BA2, { 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x7C, 0xAA, 0x00, 0x13, 0xFF, 0x80, 0x10, 0xAA, 0x00, 0x1D, 0xAA, 0x00, 0x17, 0x3B, 0x80, 0x34, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x75, 0x10, 0x80, 0x1D, 0x10, 0x80, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x18, 0x91, 0x00, 0x10, 0x91, 0x00, 0x30, 0x93, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BA3, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x1E, 0x3E, 0x00, 0x12, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3A, 0x49, 0x00, 0x6E, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BA4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7E, 0xFF, 0x00, 0x11, 0x80, 0x00, 0x10, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x32, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x3A, 0x00, 0x00, 0x6F, 0xFF, 0x80, 0x04, 0x40, 0x00, 0x0C, 0xFF, 0x00, 0x09, 0xA5, 0x00, 0x18, 0x49, 0x00, 0x30, 0x93, 0x00, 0x60, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BA8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3A, 0x41, 0x00, 0x6E, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEF, 0x00, 0x10, 0x81, 0x00, 0x11, 0xEA, 0x00, 0x1D, 0x24, 0x00, 0x16, 0xAA, 0x00, 0x34, 0x51, 0x80, 0x25, 0x80, 0x00, 0x74, 0x92, 0x00, 0x1C, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x18, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x33, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BAA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x32, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x3A, 0xBE, 0x80, 0x6E, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x22, 0x00, 0x30, 0x14, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BAB, { 0x00, 0x00, 0x00, 0x00, 0xF7, 0x80, 0x7E, 0x94, 0x80, 0x10, 0xF7, 0x80, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3A, 0x49, 0x00, 0x6E, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x10, 0x55, 0x00, 0x10, 0x55, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3A, 0xFF, 0x80, 0x6E, 0x22, 0x00, 0x04, 0x14, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x49, 0x00, 0x22, 0xFF, 0x80, 0x3A, 0x00, 0x00, 0x6E, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x0C, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x00, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BAE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x94, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x1F, 0x7F, 0x00, 0x11, 0x00, 0x00, 0x11, 0x77, 0x00, 0x29, 0x55, 0x00, 0x06, 0x55, 0x00, 0x02, 0x77, 0x00, 0x04, 0x00, 0x00, 0x04, 0x22, 0x00, 0x08, 0x22, 0x00, 0x10, 0x55, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BAF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0x7F, 0x00, 0x1E, 0x28, 0x80, 0x12, 0x4B, 0x00, 0x12, 0x0C, 0x00, 0x2A, 0x7F, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x1E, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x32, 0xA4, 0x80, 0x22, 0xFF, 0x80, 0x3A, 0x41, 0x00, 0x6E, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB1, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x45, 0x00, 0x11, 0xF5, 0x80, 0x10, 0x44, 0x80, 0x1C, 0x44, 0x00, 0x17, 0xFF, 0x80, 0x34, 0xA4, 0x00, 0x25, 0xB5, 0x00, 0x74, 0xA5, 0x00, 0x1D, 0xB5, 0x00, 0x08, 0xA7, 0x00, 0x09, 0xB2, 0x00, 0x18, 0xA6, 0x00, 0x10, 0xF6, 0x80, 0x33, 0x8B, 0x80, 0x60, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BB2, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0xA5, 0x00, 0x08, 0xA4, 0x80, 0x09, 0x54, 0x00, 0x0A, 0x4C, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0xA4, 0x00, 0x13, 0xBC, 0x80, 0x2A, 0xA5, 0x00, 0x27, 0xBD, 0x00, 0x04, 0xA6, 0x00, 0x07, 0xBC, 0x00, 0x08, 0xEC, 0x00, 0x0F, 0x12, 0x80, 0x10, 0x61, 0x80, 0x21, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x1F, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x0C, 0x00, 0x03, 0x18, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB0, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7C, 0x00, 0x40, 0x44, 0x00, 0x40, 0x44, 0x00, 0x54, 0xC4, 0x00, 0x55, 0x87, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x42, 0x00, 0x54, 0x66, 0x00, 0x54, 0x2C, 0x00, 0x40, 0x38, 0x00, 0x40, 0x10, 0x00, 0x7E, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x01, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BB5, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x80, 0x1E, 0x47, 0x80, 0x10, 0x80, 0x00, 0x11, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x24, 0x00, 0x17, 0x18, 0x00, 0x38, 0x18, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB7, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x3E, 0x00, 0x10, 0x22, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x22, 0x80, 0x1F, 0x43, 0x80, 0x11, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x21, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x94, 0x00, 0x10, 0x88, 0x00, 0x10, 0x94, 0x00, 0x11, 0x22, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB8, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xA3, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x9B, 0x00, 0x20, 0x0E, 0x00, 0x20, 0x04, 0x00, 0x20, 0x0E, 0x00, 0x20, 0x1B, 0x00, 0x40, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDE, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x2F, 0x92, 0x00, 0x3A, 0x23, 0x80, 0x22, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0x9B, 0x00, 0x2C, 0xCE, 0x00, 0x38, 0x44, 0x00, 0x20, 0x0E, 0x00, 0x1F, 0xDB, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BBA, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x0A, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x11, 0x22, 0x80, 0x20, 0x43, 0x80, 0x04, 0x40, 0x00, 0x04, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x21, 0x00, 0x0E, 0x12, 0x00, 0x0D, 0x14, 0x00, 0x14, 0x88, 0x00, 0x24, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BBB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x3F, 0x23, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xBF, 0x00, 0x40, 0x91, 0x00, 0x5E, 0x93, 0x00, 0x12, 0x12, 0x00, 0x12, 0x16, 0x00, 0x12, 0x0C, 0x00, 0x32, 0x9E, 0x00, 0x21, 0xB3, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BBC, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x80, 0x3F, 0xA2, 0x80, 0x20, 0xA3, 0x80, 0x1F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x21, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x92, 0x00, 0x26, 0x61, 0x00, 0x21, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BBD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x33, 0x1E, 0x00, 0x0C, 0x12, 0x00, 0x33, 0x92, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xA3, 0x80, 0x08, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x31, 0x11, 0x00, 0x5F, 0x11, 0x00, 0x11, 0x1B, 0x00, 0x1F, 0x0E, 0x00, 0x11, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x11, 0x1B, 0x00, 0x13, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BBE, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9E, 0x00, 0x3F, 0x92, 0x00, 0x09, 0x12, 0x00, 0x0B, 0x12, 0x00, 0x0A, 0x23, 0x80, 0x7F, 0x80, 0x00, 0x0C, 0x3F, 0x00, 0x12, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x51, 0x1B, 0x00, 0x11, 0x0E, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x11, 0x1B, 0x00, 0x1F, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xDE, 0x00, 0x10, 0x52, 0x00, 0x10, 0x52, 0x00, 0x1F, 0xD2, 0x80, 0x10, 0x13, 0x80, 0x15, 0x20, 0x00, 0x15, 0x40, 0x00, 0x1F, 0xDF, 0x80, 0x15, 0x09, 0x00, 0x15, 0x0A, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x25, 0x0A, 0x00, 0x25, 0x11, 0x00, 0x28, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x67, 0x3E, 0x00, 0x41, 0x22, 0x00, 0x41, 0x22, 0x00, 0x77, 0x22, 0x00, 0x41, 0x43, 0x80, 0x41, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x21, 0x00, 0x08, 0x33, 0x00, 0x7F, 0x12, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x0C, 0x00, 0x0F, 0x1E, 0x00, 0x38, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC1, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x33, 0x9E, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x80, 0x3B, 0x92, 0x80, 0x20, 0xA3, 0x80, 0x20, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x24, 0xBF, 0x80, 0x04, 0x11, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x04, 0x00, 0x07, 0xCA, 0x00, 0x38, 0x31, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC2, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBE, 0x00, 0x04, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x00, 0x24, 0x00, 0x7F, 0xA4, 0x00, 0x48, 0xC3, 0x00, 0x49, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x14, 0x42, 0x00, 0x14, 0x44, 0x00, 0x3F, 0x28, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xA8, 0x00, 0x04, 0x47, 0x00, 0x05, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BC3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x00, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x23, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x91, 0x00, 0x2E, 0x9B, 0x00, 0x2A, 0x8E, 0x00, 0x2A, 0x84, 0x00, 0x2E, 0x8E, 0x00, 0x20, 0x9B, 0x00, 0x21, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x24, 0xA3, 0x80, 0x3F, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xDB, 0x00, 0x04, 0x0E, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x8E, 0x00, 0x20, 0x9B, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x3F, 0xA2, 0x00, 0x11, 0x22, 0x00, 0x0A, 0x22, 0x80, 0x3F, 0xC3, 0x80, 0x04, 0x40, 0x00, 0x0A, 0xFF, 0x00, 0x17, 0x21, 0x00, 0x2A, 0x12, 0x00, 0x13, 0x14, 0x00, 0x26, 0x88, 0x00, 0x0A, 0x4C, 0x00, 0x12, 0x32, 0x00, 0x22, 0x21, 0x00, 0x0C, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDE, 0x00, 0x20, 0x12, 0x00, 0x27, 0x92, 0x00, 0x24, 0x92, 0x80, 0x24, 0xA3, 0x80, 0x27, 0xA0, 0x00, 0x20, 0x40, 0x00, 0x20, 0x3F, 0x80, 0x2F, 0xD1, 0x00, 0x2B, 0x52, 0x00, 0x2B, 0x4C, 0x00, 0x2F, 0xCC, 0x00, 0x20, 0x12, 0x00, 0x3F, 0xE1, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BC9, { 0x00, 0x00, 0x00, 0x3F, 0xDE, 0x00, 0x24, 0x12, 0x00, 0x27, 0x93, 0x80, 0x2A, 0x20, 0x00, 0x3F, 0xDF, 0x00, 0x25, 0x0A, 0x00, 0x28, 0x84, 0x00, 0x3F, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1C, 0x8E, 0x00, 0x36, 0x9B, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x1F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x04, 0x41, 0x00, 0x04, 0x21, 0x00, 0x04, 0x11, 0x00, 0x04, 0x01, 0x00, 0x1F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x42, 0x00, 0x08, 0x22, 0x00, 0x08, 0x02, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BCE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x67, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BCF, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x20, 0x22, 0x00, 0x1F, 0x4F, 0x00, 0x19, 0xF0, 0x80, 0x15, 0x00, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x32, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x3F, 0x4A, 0x80, 0x22, 0x4B, 0x80, 0x06, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x21, 0x80, 0x0F, 0xA6, 0x00, 0x08, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0xE0, 0x80, 0x0F, 0x20, 0x80, 0x38, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD5, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x4C, 0x00, 0x1F, 0x70, 0x00, 0x10, 0x40, 0x00, 0x11, 0x42, 0x00, 0x16, 0x42, 0x00, 0x38, 0x3E, 0x00, 0x10, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x21, 0x80, 0x0F, 0xA6, 0x00, 0x08, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x0B, 0xE0, 0x80, 0x3C, 0x3F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x02, 0x12, 0x00, 0x0A, 0x21, 0x00, 0x12, 0xC2, 0x80, 0x23, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD7, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x2A, 0x89, 0x80, 0x2A, 0x8E, 0x00, 0x2A, 0xF8, 0x00, 0x3E, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x22, 0x88, 0x80, 0x20, 0xF8, 0x80, 0x03, 0x8F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x21, 0x80, 0x0F, 0xE6, 0x00, 0x08, 0x38, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x0F, 0xA0, 0x80, 0x38, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BD9, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x4C, 0x00, 0x1F, 0x70, 0x00, 0x10, 0x40, 0x00, 0x17, 0x44, 0x00, 0x18, 0x3C, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0x44, 0x00, 0x11, 0x4C, 0x00, 0x29, 0x50, 0x00, 0x06, 0x60, 0x00, 0x04, 0x42, 0x00, 0x08, 0x42, 0x00, 0x30, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BDA, { 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x80, 0x08, 0x21, 0x80, 0x7F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x24, 0x00, 0x0E, 0x20, 0x80, 0x78, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BDB, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xBF, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x3F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BDF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8E, 0x00, 0x18, 0x83, 0x80, 0x73, 0x98, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x38, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x8C, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x83, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BE1, { 0x00, 0x00, 0x00, 0x06, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x7E, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x7F, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x00, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BE3, { 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x05, 0x05, 0x00, 0x19, 0x19, 0x00, 0x67, 0x67, 0x00, 0x1D, 0x1D, 0x00, 0x71, 0x71, 0x00, 0x01, 0x01, 0x00, 0x00, 0x38, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BE6, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x22, 0x78, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x62, 0x10, 0x80, 0x02, 0x19, 0x80, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BE7, { 0x00, 0x00, 0x00, 0x06, 0x05, 0x00, 0x1C, 0x04, 0x80, 0x70, 0x04, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x7E, 0x24, 0x80, 0x10, 0x24, 0x80, 0x10, 0xFD, 0x00, 0x10, 0x25, 0x00, 0x7E, 0x26, 0x00, 0x10, 0x62, 0x80, 0x10, 0x43, 0x80, 0x10, 0xC5, 0x00, 0x11, 0x98, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BEA, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x78, 0x44, 0x00, 0x08, 0x42, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x94, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x90, 0x00, 0x0F, 0x12, 0x00, 0x79, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BEB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x38, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BEC, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x07, 0x09, 0x00, 0x38, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0F, 0x49, 0x00, 0x38, 0x2A, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x2C, 0x00, 0x0F, 0x4A, 0x00, 0x38, 0x89, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BEE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x7D, 0xB3, 0x00, 0x13, 0x0D, 0x80, 0x10, 0x38, 0x00, 0x11, 0xE0, 0x00, 0x10, 0x06, 0x00, 0x1C, 0xFC, 0x00, 0x70, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x18, 0x80, 0x30, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BEF, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x1C, 0x51, 0x00, 0x70, 0xD3, 0x00, 0x10, 0xBA, 0x00, 0x10, 0x28, 0x00, 0x1E, 0x6C, 0x00, 0x70, 0xC6, 0x00, 0x10, 0x10, 0x00, 0x10, 0x51, 0x00, 0x1E, 0xD3, 0x00, 0x70, 0xBA, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BF1, { 0x00, 0x00, 0x00, 0x06, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x70, 0xFF, 0x00, 0x11, 0x81, 0x00, 0x10, 0x55, 0x00, 0x7E, 0x55, 0x00, 0x10, 0x11, 0x00, 0x10, 0x7D, 0x00, 0x10, 0x11, 0x00, 0x7E, 0x39, 0x00, 0x10, 0x55, 0x00, 0x10, 0x93, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BF3, { 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x02, 0x00, 0x00, 0xFE, 0x00, 0x06, 0x04, 0x00, 0x3C, 0x38, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x88, 0x80, 0x07, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6BF5, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1E, 0x00, 0x12, 0xF0, 0x00, 0x3F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x94, 0x00, 0x14, 0x7E, 0x00, 0x26, 0x10, 0x00, 0x49, 0x10, 0x00, 0x12, 0x12, 0x00, 0x24, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x32, 0x10, 0x00, 0x04, 0x11, 0x00, 0x18, 0x11, 0x00, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BF7, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x41, 0x78, 0x00, 0x5D, 0x10, 0x00, 0x41, 0x10, 0x00, 0x5D, 0x7F, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x80, 0x22, 0x19, 0x80, 0x3E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BF9, { 0x00, 0x00, 0x00, 0x3C, 0x03, 0x00, 0x06, 0x0E, 0x00, 0x0A, 0x38, 0x00, 0x1B, 0x08, 0x00, 0x31, 0x88, 0x00, 0x6E, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x79, 0x48, 0x00, 0x49, 0x48, 0x00, 0x69, 0x7F, 0x80, 0x5A, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x6A, 0x88, 0x00, 0x59, 0x48, 0x80, 0x49, 0x49, 0x80, 0x59, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BFD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x14, 0x00, 0x70, 0x7E, 0x00, 0x17, 0x14, 0x00, 0x11, 0xFF, 0x00, 0x12, 0x14, 0x00, 0x7A, 0x7C, 0x00, 0x17, 0x10, 0x00, 0x11, 0x7C, 0x00, 0x11, 0x10, 0x00, 0x7D, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x15, 0x11, 0x00, 0x18, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6BFF, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x12, 0x0E, 0x00, 0x1E, 0x38, 0x00, 0x21, 0x08, 0x00, 0x4A, 0x48, 0x00, 0x7B, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x31, 0x88, 0x00, 0x64, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x32, 0x08, 0x00, 0x0C, 0xC8, 0x00, 0x31, 0x88, 0x80, 0x07, 0x09, 0x80, 0x7C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C02, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xD2, 0x00, 0x15, 0x0C, 0x00, 0x64, 0xB3, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x23, 0xF0, 0x00, 0x20, 0x80, 0x00, 0x27, 0xFC, 0x00, 0x20, 0x80, 0x00, 0x2F, 0xFE, 0x80, 0x40, 0x81, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C04, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x3F, 0xC7, 0x00, 0x08, 0x9C, 0x00, 0x05, 0x04, 0x00, 0x7F, 0xE4, 0x00, 0x0A, 0x5F, 0x80, 0x12, 0x84, 0x00, 0x26, 0x04, 0x00, 0x7F, 0xE4, 0x00, 0x49, 0x3F, 0x80, 0x51, 0x24, 0x00, 0x6F, 0xE4, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x80, 0x4F, 0x24, 0x80, 0x40, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C05, { 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x24, 0x90, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xE2, 0x00, 0x2E, 0x94, 0x00, 0x2A, 0x88, 0x00, 0x2E, 0x96, 0x00, 0x21, 0xA1, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x80, 0x01, 0x01, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C06, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x1C, 0x90, 0x00, 0x73, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x12, 0x94, 0x00, 0x11, 0x98, 0x00, 0x78, 0x92, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x7D, 0x08, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x11, 0xF9, 0x00, 0x10, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C07, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1C, 0xF8, 0x00, 0x71, 0x10, 0x00, 0x13, 0xFC, 0x00, 0x15, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x79, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFD, 0x00, 0x10, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C08, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x38, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x2E, 0x8F, 0x00, 0x20, 0xB8, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x0F, 0x00, 0x11, 0x38, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x80, 0x17, 0x8F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C09, { 0x00, 0x00, 0x00, 0x1F, 0x03, 0x00, 0x11, 0x0E, 0x00, 0x11, 0x38, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x3B, 0x88, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xC8, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x35, 0x88, 0x80, 0x64, 0xC9, 0x80, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C0D, { 0x00, 0x00, 0x00, 0x3B, 0x83, 0x00, 0x2A, 0x8E, 0x00, 0x3B, 0xB8, 0x00, 0x2A, 0x88, 0x00, 0x3B, 0x88, 0x00, 0x2A, 0xBF, 0x00, 0x3B, 0x88, 0x00, 0x12, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x64, 0x3F, 0x80, 0x3F, 0xC8, 0x00, 0x24, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x08, 0x80, 0x3F, 0xC9, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C0E, { 0x00, 0x00, 0x00, 0x1F, 0xC1, 0x80, 0x12, 0x4F, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x7F, 0xF2, 0x00, 0x55, 0x5F, 0x80, 0x7D, 0xF2, 0x00, 0x55, 0x52, 0x00, 0x7D, 0xF2, 0x00, 0x02, 0x0F, 0x80, 0x7F, 0xF2, 0x00, 0x48, 0x12, 0x00, 0x1F, 0xC2, 0x00, 0x34, 0x42, 0x80, 0x02, 0x82, 0x80, 0x7F, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C0F, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0xF4, 0x80, 0x0F, 0x02, 0x80, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C10, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x30, 0x00, 0x10, 0x10, 0x00, 0x10, 0x18, 0x00, 0x1F, 0x08, 0x00, 0x70, 0x0C, 0x00, 0x00, 0x06, 0x80, 0x3F, 0xF3, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x17, 0x88, 0x80, 0x38, 0x04, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C12, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x30, 0x80, 0x1E, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C13, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x3F, 0xC1, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x1F, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x7A, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C14, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x80, 0x00, 0x02, 0x80, 0x00, 0x03, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C15, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x05, 0x00, 0x04, 0x05, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C16, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x4F, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xE4, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0xF4, 0x00, 0x04, 0x14, 0x00, 0x08, 0x15, 0x00, 0x08, 0x15, 0x00, 0x10, 0xA5, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C17, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0x00, 0x0C, 0x64, 0x00, 0x06, 0xC4, 0x00, 0x03, 0x84, 0x00, 0x06, 0xC6, 0x80, 0x0C, 0x62, 0x80, 0x18, 0x23, 0x80, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C18, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x45, 0x00, 0x10, 0x45, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C19, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x26, 0x80, 0x22, 0x22, 0x80, 0x3F, 0xE3, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C1A, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0x25, 0x00, 0x11, 0x25, 0x00, 0x20, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C1B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x01, 0xC4, 0x00, 0x0C, 0x64, 0x00, 0x38, 0x3C, 0x00, 0x0F, 0xE4, 0x00, 0x02, 0x26, 0x80, 0x06, 0x62, 0x80, 0x1C, 0x43, 0x80, 0x71, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C1F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x1F, 0xF4, 0x00, 0x04, 0x94, 0x00, 0x3F, 0xF4, 0x00, 0x24, 0x84, 0x00, 0x3F, 0xF6, 0x80, 0x04, 0x92, 0x80, 0x0C, 0xB3, 0x80, 0x18, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C21, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x07, 0xE4, 0x00, 0x08, 0x44, 0x00, 0x36, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0xC4, 0x00, 0x3B, 0x3C, 0x00, 0x00, 0x85, 0x00, 0x06, 0x05, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C22, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x08, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xC8, 0x00, 0x01, 0x08, 0x00, 0x06, 0xC8, 0x00, 0x38, 0x38, 0x00, 0x0F, 0xE8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x29, 0x00, 0x3F, 0xF5, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C23, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x2F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x22, 0x28, 0x00, 0x12, 0x48, 0x00, 0x0A, 0x88, 0x00, 0x3F, 0xF8, 0x00, 0x07, 0x08, 0x00, 0x0A, 0x88, 0x00, 0x12, 0x44, 0x80, 0x22, 0x32, 0x80, 0x02, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C24, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xF4, 0x00, 0x11, 0x14, 0x00, 0x17, 0xD4, 0x00, 0x11, 0x14, 0x00, 0x13, 0x96, 0x80, 0x16, 0xD2, 0x80, 0x10, 0x13, 0x80, 0x1F, 0xF1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C26, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x04, 0x84, 0x00, 0x03, 0x36, 0x80, 0x1C, 0x42, 0x80, 0x01, 0xA3, 0x80, 0x3E, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C27, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x24, 0x00, 0x04, 0x44, 0x00, 0x1F, 0xF4, 0x00, 0x01, 0x04, 0x00, 0x0F, 0xE4, 0x00, 0x01, 0x06, 0x80, 0x3F, 0xFA, 0x80, 0x01, 0x03, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C28, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xE4, 0x00, 0x10, 0x24, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x08, 0x46, 0x80, 0x1E, 0xC2, 0x80, 0x03, 0x83, 0x80, 0x1C, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C29, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x04, 0x84, 0x00, 0x24, 0x94, 0x00, 0x14, 0xA4, 0x00, 0x14, 0xC4, 0x00, 0x04, 0x84, 0x00, 0x04, 0x85, 0x00, 0x7F, 0xFD, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C2A, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x05, 0x04, 0x00, 0x05, 0x15, 0x00, 0x09, 0x15, 0x00, 0x30, 0xF2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C2C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xF4, 0x00, 0x02, 0x84, 0x00, 0x1E, 0xF4, 0x00, 0x10, 0x14, 0x00, 0x1E, 0xF6, 0x80, 0x02, 0x82, 0x80, 0x3F, 0xFB, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C2E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x09, 0x14, 0x00, 0x13, 0xA4, 0x00, 0x06, 0xC4, 0x00, 0x1D, 0x74, 0x00, 0x09, 0x16, 0x80, 0x13, 0xA2, 0x80, 0x06, 0xC3, 0x80, 0x1C, 0x71, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C2F, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x24, 0x00, 0x1F, 0xF4, 0x00, 0x00, 0x24, 0x00, 0x0F, 0xE4, 0x00, 0x00, 0x24, 0x00, 0x7F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x05, 0x45, 0x00, 0x19, 0x35, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C30, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x08, 0x00, 0x5F, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xC8, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xC8, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xE8, 0x00, 0x00, 0x48, 0x00, 0x04, 0x89, 0x00, 0x03, 0x05, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C32, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x5F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xE4, 0x00, 0x13, 0x24, 0x00, 0x1F, 0xE4, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x24, 0x94, 0x00, 0x24, 0x95, 0x00, 0x7F, 0xFD, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C33, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xE4, 0x00, 0x09, 0x24, 0x00, 0x0A, 0xA4, 0x00, 0x0F, 0xE4, 0x00, 0x00, 0x06, 0x00, 0x1F, 0xF2, 0x80, 0x12, 0x53, 0x80, 0x3F, 0xF9, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C34, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC2, 0x00, 0x7E, 0x86, 0x00, 0x02, 0x8C, 0x00, 0x06, 0xD8, 0x00, 0x04, 0xE0, 0x00, 0x0C, 0xB0, 0x00, 0x08, 0x98, 0x00, 0x18, 0x8C, 0x00, 0x30, 0x86, 0x00, 0x60, 0x83, 0x80, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C37, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x04, 0x20, 0x80, 0x02, 0x21, 0x00, 0x00, 0x22, 0x00, 0x1F, 0xB4, 0x00, 0x00, 0xB0, 0x00, 0x01, 0x30, 0x00, 0x01, 0x28, 0x00, 0x02, 0x28, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x08, 0x22, 0x00, 0x10, 0x21, 0x00, 0x20, 0x20, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C38, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x31, 0x00, 0x1F, 0xB2, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xA8, 0x00, 0x01, 0x28, 0x00, 0x01, 0x28, 0x00, 0x02, 0x24, 0x00, 0x04, 0x24, 0x00, 0x08, 0x22, 0x00, 0x30, 0x21, 0x00, 0x00, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C3A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x18, 0x86, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x98, 0x00, 0x00, 0x90, 0x00, 0x02, 0x80, 0x00, 0x06, 0xF0, 0x00, 0x0C, 0x9C, 0x00, 0x38, 0x86, 0x00, 0x60, 0x83, 0x00, 0x00, 0x81, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C3B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x60, 0x21, 0x00, 0x30, 0x21, 0x00, 0x10, 0x21, 0x00, 0x00, 0x21, 0x00, 0x08, 0x61, 0x00, 0x08, 0x41, 0x00, 0x18, 0x41, 0x00, 0x10, 0xC1, 0x00, 0x30, 0x83, 0x00, 0x21, 0x82, 0x00, 0x63, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C3D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x98, 0x00, 0x18, 0x87, 0x00, 0x60, 0x82, 0x00, 0x1E, 0xC8, 0x00, 0x02, 0xB0, 0x00, 0x04, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x87, 0x00, 0x20, 0x82, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C3E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x20, 0x81, 0x00, 0x10, 0x81, 0x00, 0x00, 0x81, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C3F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x40, 0x00, 0x18, 0x40, 0x00, 0x08, 0x40, 0x00, 0x03, 0xFC, 0x00, 0x60, 0x44, 0x00, 0x30, 0x44, 0x00, 0x10, 0x44, 0x00, 0x00, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x31, 0x84, 0x80, 0x23, 0x04, 0x80, 0x66, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C40, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x20, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C41, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C42, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x10, 0x42, 0x00, 0x08, 0xE4, 0x00, 0x04, 0xE8, 0x00, 0x01, 0x50, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x48, 0x00, 0x08, 0x44, 0x00, 0x10, 0x42, 0x00, 0x21, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C46, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x8C, 0x00, 0x60, 0x83, 0x00, 0x00, 0x80, 0x00, 0x1E, 0xC8, 0x00, 0x02, 0xB0, 0x00, 0x04, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x87, 0x00, 0x20, 0x82, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x00, 0x00, 0x02, 0x00, 0x00, 0x42, 0x00, 0x00, 0x32, 0x00, 0x00, 0x12, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x72, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x41, 0x04, 0x00, 0x31, 0x04, 0x00, 0x11, 0x08, 0x00, 0x04, 0x88, 0x00, 0x08, 0x90, 0x00, 0x10, 0x50, 0x00, 0x70, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x04, 0x00, 0x12, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x22, 0x00, 0x01, 0xB2, 0x00, 0x60, 0x96, 0x00, 0x30, 0xC4, 0x00, 0x10, 0x4C, 0x00, 0x00, 0x68, 0x00, 0x08, 0x38, 0x00, 0x08, 0x10, 0x00, 0x18, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x21, 0x83, 0x00, 0x67, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C4B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x01, 0x81, 0x00, 0x61, 0x01, 0x00, 0x33, 0x01, 0x00, 0x10, 0x01, 0x00, 0x00, 0x79, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x03, 0x00, 0x20, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C4D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x03, 0xFC, 0x00, 0x60, 0x24, 0x00, 0x30, 0x24, 0x00, 0x11, 0xA4, 0x00, 0x00, 0xE4, 0x00, 0x08, 0x64, 0x00, 0x08, 0x74, 0x00, 0x18, 0xD4, 0x00, 0x10, 0x84, 0x00, 0x31, 0x84, 0x80, 0x23, 0x04, 0x80, 0x66, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C4E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x21, 0x44, 0x00, 0x11, 0x24, 0x00, 0x01, 0x24, 0x00, 0x05, 0x14, 0x00, 0x05, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x80, 0x12, 0x04, 0x80, 0x12, 0x07, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C4F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x67, 0xFF, 0x80, 0x30, 0x50, 0x00, 0x10, 0x50, 0x00, 0x00, 0x50, 0x00, 0x08, 0xD8, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8C, 0x00, 0x11, 0x84, 0x00, 0x31, 0x06, 0x00, 0x23, 0x03, 0x00, 0x66, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C50, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x20, 0x40, 0x80, 0x10, 0x81, 0x00, 0x01, 0x21, 0x00, 0x02, 0x12, 0x00, 0x08, 0x14, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x21, 0x80, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C52, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x31, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x80, 0x00, 0x20, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C54, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x63, 0x00, 0x00, 0x36, 0xFE, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x08, 0x30, 0x00, 0x08, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x11, 0x80, 0x00, 0x31, 0x00, 0x80, 0x21, 0x81, 0x80, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C55, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0x11, 0x00, 0x21, 0x11, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C57, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x60, 0x10, 0x00, 0x30, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C5A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x18, 0x44, 0x00, 0x08, 0x44, 0x00, 0x00, 0x44, 0x00, 0x60, 0x44, 0x00, 0x30, 0x44, 0x00, 0x11, 0xF4, 0x00, 0x00, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x30, 0x82, 0x80, 0x21, 0x83, 0x80, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x01, 0x01, 0x00, 0x61, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0x00, 0x00, 0x11, 0x00, 0x80, 0x31, 0x81, 0x80, 0x20, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C5D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x44, 0x00, 0x10, 0x84, 0x00, 0x00, 0x84, 0x00, 0x09, 0x08, 0x00, 0x09, 0x88, 0x00, 0x0A, 0x70, 0x00, 0x12, 0x18, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x20, 0x81, 0x00, 0x23, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x51, 0x00, 0x1F, 0x52, 0x00, 0x01, 0x54, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C5F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C60, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x01, 0x20, 0x00, 0x21, 0x23, 0x00, 0x11, 0x2D, 0x00, 0x01, 0x71, 0x00, 0x07, 0xA1, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x11, 0x2F, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x80, 0x21, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C61, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x02, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x84, 0x00, 0x11, 0xFE, 0x00, 0x70, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x44, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C62, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x60, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x0C, 0x08, 0x00, 0x04, 0x10, 0x00, 0x40, 0x20, 0x00, 0x30, 0x42, 0x00, 0x11, 0xFF, 0x00, 0x04, 0x52, 0x00, 0x08, 0x52, 0x00, 0x10, 0x92, 0x00, 0x70, 0xA2, 0x00, 0x11, 0x22, 0x00, 0x12, 0x42, 0x00, 0x14, 0x82, 0x00, 0x11, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xEF, 0x80, 0x18, 0x82, 0x00, 0x08, 0x82, 0x00, 0x00, 0x82, 0x00, 0x60, 0x82, 0x00, 0x30, 0xE2, 0x00, 0x13, 0x8F, 0x80, 0x00, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x11, 0x82, 0x00, 0x31, 0x02, 0x00, 0x23, 0x02, 0x00, 0x66, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C68, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0xFF, 0x00, 0x05, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x42, 0x02, 0x00, 0x22, 0x02, 0x00, 0x26, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x72, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C6A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C6B, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x44, 0x00, 0x18, 0x44, 0x00, 0x08, 0x44, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x44, 0x00, 0x30, 0x44, 0x00, 0x10, 0x44, 0x00, 0x00, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x30, 0x84, 0x00, 0x21, 0x84, 0x00, 0x63, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C6D, { 0x00, 0x00, 0x00, 0x10, 0x70, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x45, 0x00, 0x09, 0x83, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C6F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x40, 0x00, 0x18, 0x40, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x60, 0x40, 0x00, 0x30, 0xC8, 0x00, 0x10, 0x88, 0x00, 0x00, 0x88, 0x00, 0x08, 0x98, 0x00, 0x09, 0x90, 0x00, 0x19, 0x12, 0x00, 0x13, 0x32, 0x00, 0x32, 0x22, 0x00, 0x26, 0x3F, 0x00, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C70, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x10, 0x44, 0x00, 0x10, 0x52, 0x00, 0x10, 0x8A, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C72, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x20, 0x88, 0x00, 0x10, 0x88, 0x00, 0x00, 0x8F, 0x00, 0x08, 0xC1, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x12, 0x00, 0x11, 0x14, 0x00, 0x11, 0x0C, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x12, 0x00, 0x24, 0x21, 0x00, 0x28, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x00, 0x00, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x31, 0x42, 0x00, 0x11, 0x46, 0x00, 0x01, 0x64, 0x00, 0x09, 0x2C, 0x00, 0x09, 0x38, 0x00, 0x19, 0x10, 0x00, 0x13, 0x38, 0x00, 0x32, 0x6C, 0x00, 0x26, 0xC6, 0x00, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C74, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x30, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x60, 0x10, 0x00, 0x30, 0x10, 0x00, 0x10, 0x1C, 0x00, 0x00, 0x16, 0x00, 0x08, 0x13, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C76, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C78, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x60, 0x20, 0x00, 0x30, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x18, 0x61, 0x00, 0x10, 0x43, 0x00, 0x30, 0xC2, 0x00, 0x21, 0x82, 0x00, 0x63, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x1A, 0x05, 0x00, 0x0A, 0xC5, 0x00, 0x02, 0x6D, 0x00, 0x62, 0x29, 0x00, 0x32, 0x39, 0x00, 0x12, 0x11, 0x00, 0x02, 0x39, 0x00, 0x0A, 0x29, 0x00, 0x0A, 0x6D, 0x00, 0x1A, 0xC5, 0x00, 0x12, 0x01, 0x00, 0x32, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C7A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x20, 0x22, 0x00, 0x10, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x10, 0x88, 0x00, 0x10, 0x84, 0x00, 0x11, 0x02, 0x00, 0x22, 0x01, 0x00, 0x24, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C7B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x03, 0x10, 0x00, 0x60, 0x10, 0x00, 0x30, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C7D, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10, 0x80, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x15, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x80, 0x20, 0x02, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C7E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x21, 0x02, 0x00, 0x12, 0x01, 0x00, 0x04, 0x00, 0x80, 0x03, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0x04, 0x00, 0x22, 0x04, 0x00, 0x24, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C81, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x20, 0x00, 0x00, 0x90, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x10, 0x80, 0x00, 0x00, 0x81, 0x00, 0x09, 0x81, 0x00, 0x09, 0x80, 0x80, 0x0A, 0x80, 0x80, 0x0A, 0x80, 0x80, 0x12, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C82, { 0x00, 0x00, 0x00, 0x20, 0x07, 0x00, 0x11, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x12, 0x04, 0x00, 0x22, 0x04, 0x00, 0x24, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C83, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x08, 0x38, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x11, 0x04, 0x00, 0x22, 0x02, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C85, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x80, 0x11, 0x04, 0x80, 0x22, 0x07, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C86, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x80, 0x22, 0x0F, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C87, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x82, 0x00, 0x20, 0x81, 0x00, 0x11, 0x3F, 0x80, 0x07, 0xC8, 0x80, 0x00, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x21, 0x0F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C88, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x88, 0x80, 0x21, 0x0F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x02, 0x00, 0x80, 0x60, 0x7C, 0x00, 0x30, 0x44, 0x00, 0x10, 0x44, 0x00, 0x00, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x30, 0x84, 0x80, 0x21, 0x84, 0x80, 0x63, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C8C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0x80, 0x23, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x20, 0x1F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x60, 0x7C, 0x00, 0x30, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x18, 0x04, 0x00, 0x10, 0x04, 0x00, 0x30, 0x04, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C8F, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x0A, 0x7F, 0x00, 0x02, 0x12, 0x00, 0x42, 0x92, 0x00, 0x2F, 0xD2, 0x00, 0x22, 0x12, 0x00, 0x02, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x12, 0x12, 0x00, 0x72, 0xA2, 0x00, 0x13, 0x22, 0x00, 0x12, 0x22, 0x00, 0x10, 0x42, 0x00, 0x10, 0x8A, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C90, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x00, 0x38, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x10, 0x92, 0x00, 0x11, 0x12, 0x00, 0x12, 0x11, 0x00, 0x14, 0x10, 0x80, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C92, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x20, 0x84, 0x80, 0x11, 0x07, 0x80, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x10, 0x44, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x20, 0xC6, 0x00, 0x27, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6C93, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x61, 0x00, 0x1F, 0xE2, 0x00, 0x01, 0x54, 0x00, 0x02, 0x58, 0x00, 0x04, 0x48, 0x00, 0x08, 0x44, 0x00, 0x10, 0x42, 0x00, 0x20, 0x41, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C94, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x21, 0x10, 0x00, 0x11, 0x1F, 0x80, 0x01, 0x10, 0x80, 0x09, 0x10, 0x80, 0x09, 0x10, 0x80, 0x09, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x20, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C95, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x01, 0x24, 0x80, 0x22, 0x24, 0x80, 0x14, 0x44, 0x80, 0x00, 0x48, 0x80, 0x04, 0x88, 0x80, 0x04, 0x90, 0x80, 0x09, 0x10, 0x80, 0x0A, 0x20, 0x80, 0x08, 0x21, 0x00, 0x10, 0x41, 0x00, 0x10, 0x82, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C96, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x0C, 0x8C, 0x00, 0x06, 0xB8, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C98, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x31, 0x10, 0x00, 0x19, 0x10, 0x00, 0x09, 0x11, 0x00, 0x01, 0x13, 0x00, 0x61, 0xDE, 0x00, 0x31, 0x10, 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x10, 0x00, 0x11, 0x10, 0x00, 0x31, 0x10, 0x80, 0x21, 0xD9, 0x80, 0x67, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C99, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x92, 0x00, 0x00, 0x91, 0x00, 0x21, 0x10, 0x80, 0x11, 0x10, 0x00, 0x02, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x11, 0x00, 0x10, 0x72, 0x00, 0x10, 0x04, 0x00, 0x10, 0x08, 0x00, 0x20, 0x30, 0x00, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C9A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x20, 0x88, 0x00, 0x10, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x8F, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C9B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x13, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C9C, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x31, 0x08, 0x00, 0x19, 0x08, 0x00, 0x09, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x61, 0x00, 0x00, 0x31, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x19, 0x04, 0x00, 0x11, 0x04, 0x00, 0x33, 0x04, 0x00, 0x22, 0x04, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6C9F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x63, 0x21, 0x00, 0x30, 0x21, 0x00, 0x10, 0x61, 0x00, 0x00, 0x49, 0x00, 0x08, 0xC9, 0x00, 0x08, 0x9D, 0x00, 0x19, 0xF5, 0x00, 0x10, 0x03, 0x00, 0x30, 0x02, 0x00, 0x20, 0x06, 0x00, 0x60, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x61, 0x87, 0x80, 0x33, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xC6, 0x00, 0x18, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x30, 0x6C, 0x00, 0x20, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x08, 0x81, 0x00, 0x00, 0x81, 0x00, 0x60, 0x81, 0x00, 0x30, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x00, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8C, 0x00, 0x18, 0x84, 0x00, 0x11, 0x86, 0x00, 0x31, 0x02, 0x00, 0x23, 0x03, 0x00, 0x66, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CA3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x40, 0x20, 0x00, 0x24, 0x28, 0x00, 0x25, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x22, 0x00, 0x77, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CA4, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x00, 0x00, 0x09, 0x84, 0x00, 0x41, 0x44, 0x00, 0x31, 0x28, 0x00, 0x11, 0x28, 0x00, 0x05, 0x10, 0x00, 0x09, 0x10, 0x00, 0x11, 0x28, 0x00, 0x71, 0x28, 0x00, 0x11, 0x44, 0x00, 0x11, 0x84, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CA5, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x1A, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x02, 0x22, 0x00, 0x42, 0x22, 0x00, 0x33, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x06, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x72, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x8A, 0x00, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CA6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x50, 0x00, 0x08, 0x50, 0x00, 0x00, 0x88, 0x00, 0x41, 0x04, 0x00, 0x32, 0x07, 0x00, 0x14, 0x82, 0x00, 0x08, 0x88, 0x00, 0x08, 0x98, 0x00, 0x70, 0xE0, 0x00, 0x10, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CA7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x18, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x41, 0x10, 0x00, 0x22, 0x08, 0x00, 0x24, 0x07, 0x00, 0x09, 0xFA, 0x00, 0x09, 0x08, 0x00, 0x11, 0x08, 0x00, 0x71, 0x28, 0x00, 0x11, 0x10, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CA9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x1A, 0x20, 0x00, 0x09, 0xA0, 0x00, 0x40, 0xA2, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x10, 0x62, 0x00, 0x70, 0x9A, 0x00, 0x10, 0x8A, 0x00, 0x11, 0x02, 0x00, 0x11, 0x22, 0x00, 0x12, 0x14, 0x00, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CAA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x30, 0x00, 0x18, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x41, 0x02, 0x00, 0x31, 0x02, 0x00, 0x11, 0x02, 0x00, 0x05, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0x00, 0x00, 0x71, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CAB, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x38, 0x00, 0x08, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x11, 0x12, 0x00, 0x22, 0x11, 0x00, 0x24, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CAD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x28, 0x00, 0x18, 0x26, 0x00, 0x08, 0x22, 0x00, 0x43, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x70, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x11, 0x24, 0x00, 0x71, 0x24, 0x00, 0x12, 0x22, 0x00, 0x14, 0x23, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CAE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x21, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x60, 0x60, 0x00, 0x30, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x00, 0xC1, 0x00, 0x09, 0xC1, 0x00, 0x0B, 0x41, 0x00, 0x18, 0x41, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x62, 0x00, 0x80, 0x30, 0x40, 0x00, 0x10, 0x43, 0x00, 0x00, 0x4E, 0x00, 0x08, 0x78, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x10, 0x40, 0x00, 0x30, 0x40, 0x80, 0x20, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x63, 0x10, 0x00, 0x30, 0x93, 0x00, 0x10, 0x9D, 0x00, 0x00, 0xB1, 0x00, 0x08, 0xD1, 0x00, 0x0B, 0x93, 0x00, 0x18, 0x90, 0x00, 0x10, 0x90, 0x00, 0x30, 0x80, 0x80, 0x20, 0xC1, 0x80, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x11, 0xF2, 0x00, 0x01, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0xF2, 0x00, 0x11, 0x12, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x63, 0x11, 0x80, 0x30, 0x30, 0x00, 0x10, 0x62, 0x00, 0x01, 0xC6, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x38, 0x80, 0x19, 0xE1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x0E, 0x00, 0x20, 0x38, 0x00, 0x61, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB8, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x48, 0x00, 0x00, 0x48, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x49, 0x00, 0x10, 0x49, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x48, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x11, 0x0B, 0x00, 0x22, 0x08, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CB9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x23, 0xFF, 0x80, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x02, 0x21, 0x00, 0x62, 0x21, 0x00, 0x32, 0x21, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x1A, 0x21, 0x00, 0x12, 0x21, 0x00, 0x32, 0x21, 0x00, 0x23, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CBB, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x44, 0x00, 0x20, 0x82, 0x00, 0x10, 0x87, 0x00, 0x01, 0x38, 0x80, 0x03, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CBC, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x20, 0x21, 0x00, 0x10, 0x21, 0x00, 0x00, 0x42, 0x00, 0x00, 0x8C, 0x00, 0x0B, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CBD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CBE, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x20, 0x3F, 0x80, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CBF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x20, 0x42, 0x00, 0x10, 0x42, 0x80, 0x00, 0x83, 0x80, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CC1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x21, 0x02, 0x00, 0x11, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x4A, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x80, 0x11, 0x08, 0x80, 0x22, 0x0F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CC2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x21, 0x00, 0x80, 0x11, 0x3C, 0x80, 0x01, 0x24, 0x80, 0x01, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x3C, 0x80, 0x09, 0x24, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x21, 0x00, 0x80, 0x21, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CC4, { 0x00, 0x00, 0x00, 0x11, 0x24, 0x00, 0x09, 0x24, 0x00, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x21, 0x24, 0x00, 0x17, 0xFF, 0x80, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x3C, 0x00, 0x11, 0x24, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x0A, 0x21, 0x00, 0x02, 0x21, 0x00, 0x62, 0x21, 0x00, 0x32, 0x21, 0x00, 0x12, 0x71, 0x00, 0x02, 0x51, 0x00, 0x0A, 0x51, 0x00, 0x0A, 0x59, 0x00, 0x1A, 0xC9, 0x00, 0x12, 0x8D, 0x00, 0x32, 0x01, 0x00, 0x22, 0x01, 0x00, 0x63, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CC6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x90, 0x00, 0x18, 0x90, 0x00, 0x08, 0x90, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x10, 0x00, 0x33, 0x10, 0x00, 0x10, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x18, 0x6C, 0x00, 0x10, 0x44, 0x00, 0x30, 0xC6, 0x00, 0x21, 0x83, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CC9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x61, 0x00, 0x1F, 0x62, 0x00, 0x01, 0x54, 0x00, 0x02, 0x58, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CCA, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x20, 0x80, 0x80, 0x10, 0x80, 0x80, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x04, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CCC, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x22, 0x00, 0x00, 0x12, 0x00, 0x00, 0x02, 0x00, 0x20, 0x84, 0x00, 0x10, 0x84, 0x00, 0x00, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x91, 0x00, 0x0A, 0x91, 0x00, 0x12, 0xA0, 0x80, 0x14, 0xA0, 0x80, 0x14, 0xC2, 0x00, 0x18, 0x82, 0x00, 0x23, 0x7E, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CCD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x60, 0xA8, 0x00, 0x30, 0xA8, 0x00, 0x10, 0xAC, 0x00, 0x01, 0xA4, 0x00, 0x09, 0x26, 0x00, 0x09, 0x22, 0x00, 0x1B, 0x23, 0x00, 0x16, 0xFD, 0x80, 0x30, 0x20, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CCF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x61, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x33, 0xC4, 0x00, 0x1A, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x02, 0xDF, 0x80, 0x62, 0x84, 0x80, 0x32, 0x84, 0x80, 0x12, 0x44, 0x80, 0x02, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x1A, 0xC4, 0x80, 0x12, 0x0C, 0x80, 0x32, 0x09, 0x80, 0x22, 0x19, 0x00, 0x62, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD1, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x30, 0x84, 0x00, 0x19, 0x84, 0x00, 0x09, 0x04, 0x00, 0x03, 0x1F, 0x80, 0x62, 0x44, 0x80, 0x33, 0x44, 0x80, 0x11, 0xC4, 0x80, 0x00, 0x84, 0x80, 0x08, 0x84, 0x80, 0x09, 0x8C, 0x80, 0x19, 0x28, 0x80, 0x11, 0x29, 0x80, 0x33, 0xF9, 0x00, 0x26, 0x11, 0x00, 0x60, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD2, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x1E, 0x00, 0x19, 0xF2, 0x00, 0x09, 0x02, 0x00, 0x01, 0x22, 0x00, 0x61, 0x22, 0x00, 0x31, 0x22, 0x00, 0x11, 0x22, 0x00, 0x01, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x19, 0x2A, 0x00, 0x11, 0x2B, 0x00, 0x33, 0x3D, 0x00, 0x22, 0xE5, 0x00, 0x66, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CD3, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x23, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0B, 0xC4, 0x00, 0x0A, 0x44, 0x00, 0x08, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x48, 0x80, 0x10, 0x57, 0x80, 0x20, 0x78, 0x80, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD4, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x30, 0x84, 0x00, 0x18, 0x84, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x60, 0x84, 0x00, 0x30, 0x84, 0x00, 0x10, 0x84, 0x00, 0x00, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x18, 0x84, 0x00, 0x10, 0x84, 0x00, 0x30, 0x84, 0x00, 0x20, 0x84, 0x00, 0x60, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0x81, 0x00, 0x11, 0x3F, 0x80, 0x27, 0xC0, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x60, 0x00, 0x19, 0xC7, 0x80, 0x09, 0x24, 0x80, 0x01, 0x24, 0x80, 0x61, 0x24, 0x80, 0x31, 0x24, 0x80, 0x11, 0x24, 0x80, 0x01, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x19, 0xE4, 0x80, 0x13, 0x27, 0x80, 0x30, 0x24, 0x00, 0x20, 0x64, 0x00, 0x60, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CD7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x24, 0x80, 0x01, 0x24, 0x80, 0x21, 0x24, 0x80, 0x11, 0x24, 0x80, 0x01, 0x24, 0x80, 0x01, 0x24, 0x80, 0x09, 0x47, 0x80, 0x09, 0x80, 0x80, 0x09, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x08, 0x92, 0x00, 0x01, 0x93, 0x00, 0x61, 0x11, 0x00, 0x31, 0x11, 0x00, 0x10, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CDA, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x30, 0x88, 0x00, 0x18, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x02, 0x89, 0x80, 0x62, 0xEF, 0x00, 0x32, 0x88, 0x00, 0x12, 0x88, 0x00, 0x02, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x1A, 0x88, 0x00, 0x12, 0x88, 0x00, 0x32, 0x88, 0x80, 0x22, 0xE8, 0x80, 0x67, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CDB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x30, 0x00, 0x12, 0xC0, 0x00, 0x13, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CDC, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x0E, 0x00, 0x19, 0xF8, 0x00, 0x09, 0x08, 0x00, 0x01, 0x08, 0x00, 0x61, 0x08, 0x00, 0x31, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x01, 0x08, 0x00, 0x09, 0x0C, 0x00, 0x09, 0x04, 0x00, 0x19, 0xE4, 0x00, 0x13, 0x06, 0x00, 0x30, 0x02, 0x80, 0x23, 0xFB, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CDD, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x0E, 0x00, 0x18, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, 0x60, 0xFF, 0x80, 0x30, 0x84, 0x00, 0x10, 0x84, 0x00, 0x00, 0x9C, 0x00, 0x08, 0x87, 0x00, 0x08, 0x85, 0x80, 0x18, 0x84, 0x00, 0x11, 0x84, 0x00, 0x31, 0x04, 0x00, 0x23, 0x04, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CDE, { 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x42, 0x01, 0x00, 0x34, 0x02, 0x00, 0x10, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x70, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0xA0, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x63, 0x7D, 0x80, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x18, 0x21, 0x00, 0x10, 0x21, 0x00, 0x30, 0x27, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE1, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x12, 0x01, 0x00, 0x05, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0xF9, 0x00, 0x09, 0x07, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x21, 0x11, 0x00, 0x11, 0x12, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x42, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0x18, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x22, 0x46, 0x00, 0x24, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CE3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x08, 0x42, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x09, 0x23, 0x80, 0x11, 0x3C, 0x00, 0x11, 0x20, 0x00, 0x12, 0x20, 0x80, 0x12, 0x20, 0x80, 0x22, 0x3F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE7, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x30, 0x0B, 0x00, 0x18, 0x09, 0x00, 0x08, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x61, 0x08, 0x00, 0x31, 0x09, 0x00, 0x11, 0x09, 0x00, 0x01, 0x0B, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x0E, 0x00, 0x19, 0x04, 0x00, 0x11, 0xCE, 0x80, 0x37, 0x1A, 0x80, 0x20, 0x33, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE8, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CE9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x90, 0x00, 0x18, 0x90, 0x00, 0x08, 0x90, 0x00, 0x00, 0xFF, 0x00, 0x61, 0x90, 0x00, 0x33, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x04, 0x41, 0x00, 0x00, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x08, 0x41, 0x00, 0x00, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x08, 0x41, 0x00, 0x18, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CEB, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0x20, 0x00, 0x10, 0x42, 0x00, 0x10, 0x81, 0x00, 0x11, 0x3F, 0x80, 0x27, 0xC0, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CEC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x62, 0x00, 0x80, 0x32, 0x7C, 0x80, 0x10, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x30, 0x82, 0x00, 0x21, 0x83, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CEE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CEF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x00, 0x05, 0x10, 0x00, 0x05, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x04, 0x00, 0x11, 0xF4, 0x80, 0x17, 0x02, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CF0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x0C, 0x46, 0x00, 0x30, 0x45, 0x80, 0x04, 0x68, 0x00, 0x02, 0xF0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CF1, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x22, 0x00, 0x61, 0x22, 0x00, 0x31, 0x22, 0x00, 0x11, 0x22, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x50, 0x00, 0x08, 0x58, 0x00, 0x18, 0xC8, 0x00, 0x10, 0x8C, 0x00, 0x31, 0x86, 0x00, 0x23, 0x03, 0x00, 0x66, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CF2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x11, 0x80, 0x18, 0x1F, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x61, 0x10, 0x00, 0x31, 0x10, 0x00, 0x11, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x08, 0x30, 0x80, 0x08, 0x30, 0x80, 0x18, 0x51, 0x80, 0x10, 0xD1, 0x00, 0x31, 0x97, 0x00, 0x23, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CF3, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x80, 0x03, 0xF9, 0x00, 0x00, 0x3A, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x10, 0x94, 0x00, 0x10, 0x92, 0x00, 0x11, 0x12, 0x00, 0x22, 0x11, 0x00, 0x24, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6CF4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x81, 0x00, 0x3E, 0x83, 0x00, 0x02, 0xCE, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CF5, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x14, 0x08, 0x00, 0x64, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x84, 0x00, 0x00, 0x8C, 0x00, 0x3E, 0xD0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8F, 0x00, 0x30, 0x82, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CF6, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x08, 0x8C, 0x00, 0x04, 0x90, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x82, 0x00, 0x00, 0x88, 0x00, 0x1E, 0xD0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x10, 0x87, 0x00, 0x60, 0x82, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CF7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x90, 0x00, 0x18, 0x88, 0x00, 0x08, 0x82, 0x00, 0x47, 0xFF, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x11, 0x28, 0x00, 0x71, 0x30, 0x00, 0x11, 0x20, 0x00, 0x12, 0x61, 0x00, 0x12, 0xA1, 0x00, 0x14, 0x1F, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CF8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x22, 0x00, 0x18, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x40, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x71, 0x02, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CFA, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x3E, 0x00, 0x1B, 0xC0, 0x00, 0x0A, 0x20, 0x00, 0x42, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x70, 0xA8, 0x00, 0x11, 0x24, 0x00, 0x12, 0x23, 0x00, 0x14, 0x21, 0x00, 0x10, 0xA0, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CFB, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x04, 0x82, 0x00, 0x40, 0x80, 0x00, 0x30, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x04, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x70, 0x12, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CFC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x28, 0x00, 0x19, 0x24, 0x00, 0x0A, 0x20, 0x00, 0x43, 0xFF, 0x00, 0x30, 0x40, 0x00, 0x10, 0x40, 0x00, 0x04, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x11, 0x88, 0x00, 0x71, 0x48, 0x00, 0x12, 0x50, 0x00, 0x14, 0x20, 0x00, 0x10, 0x58, 0x00, 0x10, 0x87, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CFD, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x19, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x00, 0x50, 0x00, 0x40, 0x20, 0x00, 0x30, 0x50, 0x00, 0x10, 0x88, 0x00, 0x05, 0x27, 0x00, 0x0A, 0xFA, 0x00, 0x10, 0x20, 0x00, 0x70, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6CFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x1B, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x40, 0x10, 0x00, 0x24, 0x60, 0x00, 0x24, 0x8C, 0x00, 0x09, 0x03, 0x00, 0x0A, 0x01, 0x00, 0x13, 0xFE, 0x00, 0x70, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D01, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x40, 0x24, 0x00, 0x33, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x71, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x02, 0x79, 0x00, 0x62, 0x49, 0x00, 0x32, 0x49, 0x00, 0x12, 0x49, 0x00, 0x02, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x79, 0x00, 0x1A, 0x01, 0x00, 0x12, 0x01, 0x00, 0x32, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x61, 0x7D, 0x00, 0x31, 0x11, 0x00, 0x11, 0x11, 0x00, 0x01, 0x39, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x19, 0x45, 0x00, 0x11, 0x01, 0x00, 0x31, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D0A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x60, 0x40, 0x00, 0x30, 0xDF, 0x00, 0x10, 0x82, 0x00, 0x01, 0x84, 0x00, 0x0A, 0x84, 0x00, 0x08, 0xBF, 0x80, 0x18, 0x84, 0x00, 0x10, 0x84, 0x00, 0x30, 0x84, 0x00, 0x20, 0x84, 0x00, 0x60, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D0B, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0x44, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D0C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x80, 0x03, 0xF4, 0x80, 0x00, 0x84, 0x80, 0x21, 0x04, 0x80, 0x11, 0xF4, 0x80, 0x02, 0x14, 0x80, 0x0B, 0x24, 0x80, 0x0C, 0xA4, 0x80, 0x08, 0x44, 0x80, 0x10, 0x44, 0x80, 0x10, 0x84, 0x80, 0x11, 0x04, 0x80, 0x12, 0x04, 0x80, 0x24, 0x00, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D0E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x60, 0x00, 0x18, 0x40, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x62, 0x01, 0x00, 0x32, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x1B, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x32, 0x01, 0x00, 0x22, 0x01, 0x00, 0x63, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x08, 0x30, 0x00, 0x00, 0x20, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x49, 0x00, 0x12, 0x49, 0x00, 0x02, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x49, 0x00, 0x62, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D11, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x23, 0x7F, 0x80, 0x13, 0x08, 0x00, 0x05, 0x08, 0x00, 0x01, 0x14, 0x00, 0x09, 0x14, 0x00, 0x09, 0x14, 0x00, 0x09, 0x14, 0x00, 0x11, 0x12, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x21, 0x21, 0x00, 0x21, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x08, 0x48, 0x00, 0x00, 0x48, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x49, 0x00, 0x12, 0x49, 0x00, 0x02, 0x49, 0x00, 0x0A, 0xC9, 0x00, 0x0A, 0x8F, 0x00, 0x1B, 0x81, 0x00, 0x12, 0x01, 0x00, 0x32, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D13, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x21, 0x00, 0x12, 0x21, 0x00, 0x02, 0x21, 0x00, 0x0A, 0x73, 0x00, 0x08, 0x70, 0x00, 0x18, 0xA8, 0x00, 0x11, 0xAC, 0x00, 0x33, 0x26, 0x00, 0x26, 0x23, 0x80, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D17, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x90, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x80, 0x11, 0x04, 0x80, 0x22, 0x07, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D19, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x50, 0x00, 0x00, 0x50, 0x00, 0x00, 0x90, 0x00, 0x20, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x58, 0x00, 0x10, 0x54, 0x00, 0x10, 0x94, 0x00, 0x11, 0x12, 0x00, 0x22, 0x11, 0x00, 0x24, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D1A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x40, 0x00, 0x18, 0xFE, 0x00, 0x09, 0x82, 0x00, 0x03, 0x64, 0x00, 0x66, 0x18, 0x00, 0x30, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x19, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D1B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x82, 0x00, 0x21, 0x44, 0x00, 0x12, 0x28, 0x00, 0x00, 0x18, 0x00, 0x08, 0x26, 0x00, 0x08, 0x41, 0x80, 0x09, 0x80, 0x00, 0x16, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D1E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x22, 0xFE, 0x80, 0x12, 0x00, 0x80, 0x02, 0x00, 0x80, 0x0A, 0x7C, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x40, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x22, 0x00, 0x80, 0x22, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D1F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x03, 0xFE, 0x00, 0x60, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x02, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x51, 0x00, 0x18, 0x51, 0x00, 0x10, 0xDB, 0x00, 0x30, 0x8C, 0x00, 0x21, 0x86, 0x00, 0x67, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D25, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x12, 0x00, 0x43, 0xFF, 0x80, 0x60, 0x12, 0x00, 0x11, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x08, 0x30, 0x00, 0x00, 0x20, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x11, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D27, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x11, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x03, 0x02, 0x00, 0x0D, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x21, 0x02, 0x00, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D28, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x60, 0xC6, 0x00, 0x31, 0x83, 0x00, 0x13, 0x45, 0x80, 0x00, 0x44, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x18, 0x10, 0x00, 0x10, 0x38, 0x00, 0x30, 0x6C, 0x00, 0x20, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D29, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x22, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x21, 0x00, 0x08, 0x22, 0x00, 0x10, 0x24, 0x00, 0x10, 0x18, 0x00, 0x10, 0x28, 0x80, 0x20, 0xC4, 0x80, 0x23, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D2A, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x03, 0xFF, 0x00, 0x20, 0x84, 0x00, 0x10, 0x84, 0x00, 0x00, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x02, 0x00, 0x22, 0x01, 0x00, 0x24, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D2B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x30, 0x00, 0x18, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x52, 0x00, 0x61, 0x52, 0x00, 0x31, 0x52, 0x00, 0x11, 0x52, 0x00, 0x01, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x19, 0x52, 0x00, 0x11, 0x52, 0x00, 0x31, 0x52, 0x00, 0x27, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D2E, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x30, 0x48, 0x00, 0x1A, 0x49, 0x00, 0x0B, 0x4B, 0x00, 0x01, 0x4E, 0x00, 0x61, 0x48, 0x00, 0x30, 0x48, 0x00, 0x10, 0x48, 0x00, 0x00, 0x4E, 0x00, 0x09, 0xCB, 0x00, 0x0B, 0x49, 0x00, 0x18, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x30, 0x88, 0x80, 0x21, 0x89, 0x80, 0x63, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D2F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xBF, 0x00, 0x7C, 0x09, 0x00, 0x07, 0x89, 0x00, 0x3C, 0x19, 0x00, 0x07, 0x91, 0x00, 0x7C, 0x33, 0x00, 0x04, 0x66, 0x00, 0x00, 0x80, 0x00, 0x00, 0x81, 0x00, 0x3E, 0xC3, 0x00, 0x02, 0xB6, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x82, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x30, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0x83, 0x80, 0x10, 0xFE, 0x00, 0x33, 0x82, 0x00, 0x20, 0x02, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D32, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x20, 0x88, 0x80, 0x10, 0xAA, 0x80, 0x02, 0xAA, 0x80, 0x02, 0xAA, 0x80, 0x0A, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x11, 0x08, 0x80, 0x21, 0x08, 0x80, 0x22, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D33, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0x87, 0x80, 0x08, 0x84, 0x80, 0x07, 0xF4, 0x80, 0x61, 0x14, 0x80, 0x31, 0x14, 0x80, 0x11, 0x34, 0x80, 0x03, 0x24, 0x80, 0x0A, 0x24, 0x80, 0x0A, 0x64, 0x80, 0x1B, 0xC4, 0x80, 0x10, 0xE4, 0x80, 0x31, 0xB4, 0x80, 0x23, 0x17, 0x80, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D35, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x12, 0x00, 0x80, 0x04, 0xFC, 0x80, 0x00, 0x84, 0x80, 0x08, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x08, 0xFC, 0x80, 0x10, 0x84, 0x80, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x20, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D36, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x13, 0x02, 0x80, 0x05, 0x4A, 0x80, 0x01, 0x2A, 0x80, 0x09, 0x12, 0x80, 0x09, 0x32, 0x80, 0x09, 0x4A, 0x80, 0x11, 0x8A, 0x80, 0x11, 0xFE, 0x80, 0x11, 0x02, 0x80, 0x20, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D38, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0x11, 0x00, 0x00, 0x92, 0x00, 0x20, 0x92, 0x00, 0x10, 0x92, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x80, 0x21, 0x04, 0x80, 0x26, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D39, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x10, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D3B, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x08, 0x3C, 0x00, 0x01, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D3C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x60, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D3D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x24, 0x00, 0x00, 0x42, 0x00, 0x21, 0x81, 0x80, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D3E, { 0x00, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x09, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00, 0x21, 0x1C, 0x00, 0x11, 0x68, 0x00, 0x01, 0x49, 0x00, 0x01, 0x4A, 0x00, 0x09, 0x4C, 0x00, 0x09, 0x48, 0x00, 0x09, 0x44, 0x00, 0x11, 0x44, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7A, 0x00, 0x23, 0xC1, 0x00, 0x24, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D3F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x01, 0x86, 0x00, 0x66, 0x01, 0x80, 0x31, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x30, 0x01, 0x00, 0x20, 0x03, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D41, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x20, 0x41, 0x00, 0x10, 0x9F, 0x00, 0x03, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x26, 0x12, 0x80, 0x24, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D43, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x40, 0x20, 0x00, 0x25, 0x24, 0x00, 0x24, 0xA8, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x70, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x10, 0x84, 0x00, 0x11, 0x07, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D44, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x7E, 0x00, 0x18, 0xC4, 0x00, 0x09, 0x88, 0x00, 0x00, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x11, 0x00, 0x10, 0x11, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D45, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x30, 0x22, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x20, 0x00, 0x10, 0x20, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x11, 0x00, 0x18, 0x1B, 0x00, 0x10, 0x0E, 0x00, 0x30, 0x1C, 0x80, 0x20, 0x76, 0x80, 0x63, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D46, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x22, 0x20, 0x00, 0x12, 0x3E, 0x00, 0x02, 0x42, 0x00, 0x0A, 0xA4, 0x00, 0x12, 0x18, 0x00, 0x32, 0x10, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x84, 0x00, 0x3E, 0xCC, 0x00, 0x02, 0xB0, 0x00, 0x04, 0x90, 0x00, 0x04, 0x88, 0x00, 0x08, 0x87, 0x00, 0x32, 0x82, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D47, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x18, 0x84, 0x00, 0x08, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x40, 0x50, 0x00, 0x30, 0x22, 0x00, 0x10, 0x52, 0x00, 0x05, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x70, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0x91, 0x00, 0x11, 0x11, 0x00, 0x16, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D48, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x22, 0x00, 0x18, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x40, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0x24, 0x00, 0x71, 0x24, 0x00, 0x11, 0x24, 0x00, 0x10, 0x50, 0x00, 0x10, 0x48, 0x00, 0x10, 0x86, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D4A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x22, 0x00, 0x43, 0xFF, 0x00, 0x32, 0x22, 0x00, 0x12, 0x22, 0x00, 0x06, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x72, 0x22, 0x00, 0x10, 0x28, 0x00, 0x10, 0x24, 0x00, 0x10, 0x3E, 0x00, 0x17, 0xE2, 0x00, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x09, 0xF9, 0x00, 0x09, 0x15, 0x00, 0x21, 0x55, 0x00, 0x19, 0x55, 0x00, 0x09, 0x55, 0x00, 0x03, 0x55, 0x00, 0x05, 0x55, 0x00, 0x09, 0x55, 0x00, 0x39, 0x55, 0x00, 0x08, 0x41, 0x00, 0x08, 0xA1, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x15, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D4D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x50, 0x00, 0x08, 0x88, 0x00, 0x41, 0x04, 0x00, 0x26, 0x07, 0x00, 0x24, 0xFA, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x70, 0x20, 0x00, 0x10, 0x40, 0x00, 0x10, 0x88, 0x00, 0x11, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D4E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x22, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x40, 0x50, 0x00, 0x30, 0x20, 0x00, 0x10, 0xD8, 0x00, 0x07, 0x07, 0x00, 0x08, 0x8A, 0x00, 0x10, 0x88, 0x00, 0x70, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x11, 0x08, 0x00, 0x12, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D4F, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x10, 0x41, 0x00, 0x0C, 0x45, 0x00, 0x07, 0xFD, 0x00, 0x20, 0x15, 0x00, 0x11, 0x15, 0x00, 0x10, 0xA5, 0x00, 0x04, 0xA5, 0x00, 0x04, 0x45, 0x00, 0x08, 0x45, 0x00, 0x38, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x08, 0x05, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D51, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x42, 0x00, 0x04, 0x44, 0x00, 0x40, 0x80, 0x00, 0x33, 0xFE, 0x00, 0x10, 0xA0, 0x00, 0x05, 0x20, 0x00, 0x0A, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x70, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D52, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x24, 0x20, 0x00, 0x12, 0x24, 0x00, 0x12, 0x7E, 0x00, 0x40, 0x50, 0x00, 0x28, 0x90, 0x00, 0x2E, 0x10, 0x00, 0x0A, 0x12, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x72, 0x10, 0x00, 0x12, 0x90, 0x00, 0x13, 0x10, 0x00, 0x12, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D53, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x18, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x44, 0x24, 0x00, 0x30, 0x40, 0x00, 0x10, 0x42, 0x00, 0x04, 0xA6, 0x00, 0x09, 0xA8, 0x00, 0x12, 0x90, 0x00, 0x74, 0x90, 0x00, 0x10, 0x88, 0x00, 0x10, 0x87, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xC0, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D54, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x23, 0xFE, 0x00, 0x18, 0x04, 0x00, 0x08, 0x04, 0x00, 0x41, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x0A, 0x00, 0x17, 0xFF, 0x00, 0x71, 0x08, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x08, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D57, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x30, 0x13, 0x00, 0x18, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x61, 0x11, 0x00, 0x31, 0x93, 0x00, 0x10, 0x96, 0x00, 0x00, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x5C, 0x00, 0x18, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x33, 0x11, 0x80, 0x20, 0x10, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D59, { 0x00, 0x00, 0x00, 0x11, 0x03, 0x00, 0x09, 0x1C, 0x00, 0x01, 0x10, 0x00, 0x07, 0xD0, 0x00, 0x21, 0x10, 0x00, 0x11, 0x1F, 0x80, 0x01, 0x12, 0x00, 0x01, 0x12, 0x00, 0x09, 0xD2, 0x00, 0x0F, 0x12, 0x00, 0x09, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x21, 0x22, 0x00, 0x23, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D5A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x42, 0x00, 0x00, 0x8F, 0x00, 0x01, 0xF4, 0x80, 0x22, 0x44, 0x00, 0x10, 0x44, 0x80, 0x00, 0x87, 0x80, 0x01, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC2, 0x00, 0x11, 0x24, 0x00, 0x16, 0x18, 0x00, 0x10, 0x28, 0x00, 0x20, 0xC6, 0x00, 0x27, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D5C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x01, 0x01, 0x00, 0x61, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x18, 0x90, 0x00, 0x11, 0x90, 0x00, 0x31, 0x50, 0x00, 0x23, 0x38, 0x00, 0x66, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D5F, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x30, 0x48, 0x00, 0x18, 0xC8, 0x00, 0x08, 0x8F, 0x80, 0x01, 0x99, 0x00, 0x61, 0x51, 0x00, 0x33, 0x73, 0x00, 0x15, 0x4A, 0x00, 0x01, 0x4A, 0x00, 0x09, 0x4E, 0x00, 0x09, 0x44, 0x00, 0x19, 0x4E, 0x00, 0x11, 0x4A, 0x00, 0x31, 0x4B, 0x00, 0x21, 0x19, 0x00, 0x61, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D60, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x20, 0xD8, 0x00, 0x18, 0x20, 0x00, 0x08, 0xD8, 0x00, 0x41, 0x24, 0x00, 0x20, 0x40, 0x00, 0x27, 0xFF, 0x00, 0x08, 0xA0, 0x00, 0x09, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x75, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x2C, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D61, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x11, 0x01, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D63, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x20, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x84, 0x80, 0x21, 0x07, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D64, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x02, 0x21, 0x00, 0x60, 0x20, 0x00, 0x37, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0xD0, 0x00, 0x08, 0x90, 0x00, 0x19, 0xB0, 0x00, 0x11, 0x22, 0x00, 0x33, 0x62, 0x00, 0x26, 0x4F, 0x00, 0x60, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x00, 0x00, 0x11, 0x00, 0x00, 0x31, 0x00, 0x80, 0x21, 0x81, 0x80, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D66, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x08, 0x12, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x13, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x02, 0x00, 0x01, 0x02, 0x00, 0x61, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x30, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D69, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x90, 0x00, 0x00, 0x90, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x10, 0x00, 0x12, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D6A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x21, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x10, 0x80, 0x11, 0x09, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFA, 0x00, 0x27, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D6C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D6E, { 0x00, 0x00, 0x00, 0x10, 0x1E, 0x00, 0x08, 0xE2, 0x00, 0x00, 0x91, 0x00, 0x01, 0x08, 0x80, 0x22, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x06, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x60, 0x42, 0x00, 0x30, 0x42, 0x00, 0x10, 0x42, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x11, 0x01, 0x00, 0x31, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D70, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x30, 0xE9, 0x00, 0x1B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x00, 0x89, 0x00, 0x67, 0xE9, 0x00, 0x30, 0x89, 0x00, 0x10, 0x89, 0x00, 0x01, 0xC9, 0x00, 0x09, 0xA9, 0x00, 0x0A, 0xA9, 0x00, 0x1A, 0x89, 0x00, 0x14, 0x81, 0x00, 0x30, 0x81, 0x00, 0x20, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D74, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x10, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D77, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFF, 0x80, 0x22, 0x80, 0x00, 0x14, 0xFF, 0x80, 0x00, 0x91, 0x00, 0x00, 0x89, 0x00, 0x08, 0x81, 0x00, 0x0B, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x11, 0x12, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x21, 0x02, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D78, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFF, 0x80, 0x20, 0x02, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x09, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x10, 0x24, 0x00, 0x10, 0x18, 0x00, 0x10, 0x28, 0x00, 0x20, 0xC6, 0x00, 0x27, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D79, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x10, 0x92, 0x00, 0x00, 0x92, 0x00, 0x01, 0x55, 0x00, 0x0A, 0x38, 0x80, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x21, 0x01, 0x00, 0x26, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D7C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x7E, 0x00, 0x18, 0xC4, 0x00, 0x09, 0x8C, 0x00, 0x03, 0x08, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x11, 0x11, 0x00, 0x01, 0x31, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x68, 0x00, 0x18, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x30, 0x88, 0x80, 0x21, 0x89, 0x80, 0x67, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D7F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D82, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x70, 0x00, 0x18, 0x50, 0x00, 0x08, 0xD8, 0x00, 0x01, 0x8C, 0x00, 0x63, 0x06, 0x00, 0x36, 0xFB, 0x80, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x19, 0x24, 0x00, 0x11, 0x24, 0x00, 0x33, 0x26, 0x00, 0x26, 0x23, 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D85, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D87, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x92, 0x00, 0x11, 0x24, 0x00, 0x01, 0x24, 0x00, 0x00, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D88, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D89, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x90, 0x00, 0x00, 0x9F, 0x00, 0x20, 0x90, 0x00, 0x10, 0x90, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x10, 0x32, 0x00, 0x10, 0x04, 0x00, 0x10, 0x18, 0x00, 0x20, 0x60, 0x00, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D8C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x24, 0x00, 0x20, 0x18, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x22, 0x10, 0x80, 0x22, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D8D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x21, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x20, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x0B, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D8E, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x80, 0x0B, 0xC6, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x84, 0x00, 0x20, 0x84, 0x00, 0x11, 0x14, 0x00, 0x01, 0xD7, 0x80, 0x02, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x12, 0x54, 0x00, 0x11, 0xFF, 0x80, 0x10, 0xC0, 0x00, 0x21, 0x3F, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D91, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x21, 0x11, 0x00, 0x26, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x18, 0x22, 0x00, 0x08, 0x22, 0x00, 0x03, 0xFF, 0x80, 0x60, 0x22, 0x00, 0x30, 0x22, 0x00, 0x11, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x19, 0x81, 0x00, 0x12, 0x81, 0x00, 0x30, 0x81, 0x00, 0x20, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D93, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D94, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x10, 0x00, 0x30, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x0B, 0xBB, 0x80, 0x08, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x30, 0x06, 0x00, 0x20, 0x0C, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D95, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x28, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x11, 0x00, 0x20, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x30, 0x80, 0x08, 0x50, 0x80, 0x10, 0x50, 0x80, 0x10, 0x90, 0x80, 0x11, 0x11, 0x00, 0x22, 0x16, 0x00, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D96, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x30, 0x88, 0x00, 0x19, 0x88, 0x00, 0x09, 0x7F, 0x00, 0x01, 0x00, 0x00, 0x63, 0x22, 0x00, 0x35, 0x22, 0x00, 0x11, 0x22, 0x00, 0x01, 0x36, 0x00, 0x09, 0x14, 0x00, 0x09, 0x14, 0x00, 0x19, 0x14, 0x00, 0x11, 0x14, 0x00, 0x31, 0x04, 0x00, 0x21, 0x7F, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D97, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x30, 0x08, 0x00, 0x18, 0xCC, 0x00, 0x09, 0x86, 0x00, 0x03, 0x03, 0x00, 0x61, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x11, 0x02, 0x00, 0x01, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x18, 0x48, 0x00, 0x10, 0x48, 0x00, 0x30, 0xC8, 0x80, 0x21, 0x89, 0x80, 0x67, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D98, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x42, 0x00, 0x18, 0xC2, 0x00, 0x08, 0x9F, 0x00, 0x03, 0xF1, 0x80, 0x60, 0x80, 0x00, 0x30, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x03, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x21, 0x83, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x61, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x1B, 0x38, 0x00, 0x12, 0x28, 0x00, 0x36, 0x6C, 0x00, 0x20, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D9B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x20, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x00, 0x42, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x19, 0xA2, 0x00, 0x11, 0x32, 0x00, 0x33, 0x12, 0x00, 0x26, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D9C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x0A, 0x44, 0x80, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0x44, 0x00, 0x30, 0xC4, 0x80, 0x21, 0x84, 0x80, 0x63, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6D9D, { 0x00, 0x00, 0x00, 0x20, 0x88, 0x00, 0x18, 0x88, 0x00, 0x0B, 0xFE, 0x00, 0x40, 0x88, 0x00, 0x30, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x08, 0x42, 0x00, 0x08, 0x44, 0x00, 0x13, 0xFE, 0x00, 0x70, 0x44, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x12, 0x28, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D9E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x40, 0x20, 0x00, 0x21, 0x24, 0x00, 0x24, 0xA8, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x68, 0x00, 0x70, 0xA8, 0x00, 0x11, 0x24, 0x00, 0x12, 0x27, 0x00, 0x14, 0x22, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6D9F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x44, 0x14, 0x00, 0x32, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x00, 0x50, 0x00, 0x40, 0x94, 0x00, 0x36, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0A, 0x12, 0x00, 0x73, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x15, 0x13, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA0, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x1A, 0x22, 0x00, 0x0A, 0x2A, 0x00, 0x43, 0xFE, 0x00, 0x26, 0x22, 0x00, 0x26, 0xFA, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFA, 0x00, 0x12, 0x2A, 0x00, 0x72, 0x2A, 0x00, 0x12, 0x3A, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA1, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x09, 0x04, 0x00, 0x41, 0x04, 0x00, 0x31, 0xFC, 0x00, 0x10, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x22, 0x00, 0x72, 0x22, 0x00, 0x12, 0x52, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA3, { 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x18, 0x40, 0x00, 0x08, 0xF8, 0x00, 0x01, 0x10, 0x00, 0x42, 0x24, 0x00, 0x31, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x05, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x77, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x07, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x18, 0xFC, 0x00, 0x09, 0x88, 0x00, 0x42, 0x50, 0x00, 0x30, 0x20, 0x00, 0x10, 0x50, 0x00, 0x04, 0x88, 0x00, 0x09, 0x27, 0x00, 0x12, 0x20, 0x00, 0x75, 0xFE, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x26, 0x00, 0x12, 0x22, 0x00, 0x10, 0xA0, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA6, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x21, 0xBF, 0x00, 0x18, 0x82, 0x00, 0x0A, 0x12, 0x00, 0x42, 0xFA, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0xFA, 0x00, 0x12, 0x22, 0x00, 0x72, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA7, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x20, 0xDF, 0x00, 0x1A, 0x42, 0x00, 0x0A, 0x02, 0x00, 0x42, 0x02, 0x00, 0x32, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x06, 0x8A, 0x00, 0x0A, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x72, 0x8A, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA8, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x17, 0xA0, 0x00, 0x10, 0xA2, 0x00, 0x00, 0xA2, 0x00, 0x40, 0xA4, 0x00, 0x27, 0xA8, 0x00, 0x24, 0x22, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x28, 0x00, 0x17, 0xA8, 0x00, 0x70, 0xA8, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA2, 0x00, 0x15, 0x31, 0x00, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DA9, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x04, 0x22, 0x00, 0x40, 0xA2, 0x00, 0x31, 0x22, 0x00, 0x10, 0x42, 0x00, 0x04, 0x8A, 0x00, 0x09, 0x04, 0x00, 0x12, 0x20, 0x00, 0x71, 0x24, 0x00, 0x11, 0x3E, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DAA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x01, 0x86, 0x00, 0x60, 0x84, 0x00, 0x30, 0x84, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x11, 0x02, 0x00, 0x31, 0x02, 0x00, 0x21, 0x02, 0x00, 0x61, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DAB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x44, 0x02, 0x00, 0x21, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x00, 0x00, 0x71, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DAC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x00, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DAE, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0xF9, 0x00, 0x0D, 0x11, 0x00, 0x05, 0x15, 0x00, 0x21, 0xF5, 0x00, 0x11, 0x45, 0x00, 0x13, 0x55, 0x00, 0x05, 0xFD, 0x00, 0x05, 0x55, 0x00, 0x0B, 0x55, 0x00, 0x3B, 0x55, 0x00, 0x0D, 0x55, 0x00, 0x09, 0x51, 0x00, 0x09, 0x71, 0x00, 0x08, 0x45, 0x00, 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DAF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x12, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x14, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DB2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x88, 0x00, 0x10, 0x88, 0x00, 0x01, 0x1F, 0x00, 0x01, 0x19, 0x00, 0x0B, 0x26, 0x00, 0x0D, 0x52, 0x00, 0x09, 0x94, 0x00, 0x11, 0x08, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x21, 0x21, 0x00, 0x21, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DB4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x01, 0x01, 0x00, 0x60, 0x80, 0x00, 0x30, 0xEF, 0x00, 0x10, 0xA9, 0x00, 0x01, 0xA9, 0x00, 0x09, 0x29, 0x00, 0x0B, 0xE9, 0x00, 0x18, 0x4B, 0x00, 0x10, 0xC8, 0x00, 0x30, 0x88, 0x80, 0x21, 0x89, 0x80, 0x63, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DB5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x20, 0x40, 0x00, 0x12, 0x72, 0x80, 0x02, 0x14, 0x80, 0x0A, 0x98, 0x80, 0x0A, 0x50, 0x80, 0x0A, 0x38, 0x80, 0x12, 0x54, 0x80, 0x13, 0x92, 0x80, 0x12, 0x71, 0x80, 0x12, 0x00, 0x80, 0x23, 0xFF, 0x80, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DB7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x54, 0x00, 0x18, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x0A, 0x21, 0x00, 0x02, 0x21, 0x00, 0x62, 0xFD, 0x00, 0x32, 0x21, 0x00, 0x12, 0x21, 0x00, 0x02, 0x79, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x49, 0x00, 0x12, 0x79, 0x00, 0x32, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DB9, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x1C, 0x00, 0x19, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x60, 0x54, 0x00, 0x30, 0xD6, 0x00, 0x13, 0x93, 0x80, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x42, 0x00, 0x10, 0x84, 0x00, 0x31, 0xF8, 0x00, 0x20, 0x2E, 0x00, 0x63, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DBC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x60, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x18, 0x92, 0x00, 0x10, 0x92, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DBD, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x33, 0xFC, 0x00, 0x1A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x62, 0x08, 0x00, 0x32, 0x0C, 0x00, 0x13, 0x86, 0x80, 0x06, 0x03, 0x80, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x21, 0x02, 0x00, 0x61, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x08, 0x60, 0x00, 0x00, 0xD1, 0x00, 0x63, 0x93, 0x00, 0x31, 0x3A, 0x00, 0x11, 0x68, 0x00, 0x00, 0xC8, 0x00, 0x0B, 0x9C, 0x00, 0x08, 0xAC, 0x00, 0x18, 0x6A, 0x00, 0x10, 0xCB, 0x00, 0x31, 0x89, 0x80, 0x27, 0x18, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x11, 0x50, 0x00, 0x11, 0x50, 0x00, 0x22, 0x3F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC3, { 0x00, 0x00, 0x00, 0x20, 0x54, 0x00, 0x10, 0x92, 0x00, 0x01, 0xFF, 0x00, 0x02, 0x10, 0x80, 0x20, 0x28, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x09, 0x02, 0x00, 0x0A, 0xFD, 0x80, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x9C, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x49, 0x00, 0x00, 0x92, 0x00, 0x01, 0x24, 0x00, 0x20, 0x92, 0x00, 0x10, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC5, { 0x00, 0x00, 0x00, 0x10, 0x83, 0x00, 0x08, 0x9C, 0x00, 0x00, 0x90, 0x00, 0x03, 0xF0, 0x00, 0x20, 0x90, 0x00, 0x11, 0x9F, 0x80, 0x01, 0xD2, 0x00, 0x03, 0xB2, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xA2, 0x00, 0x20, 0xA2, 0x00, 0x20, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC6, { 0x00, 0x00, 0x00, 0x11, 0x86, 0x00, 0x08, 0x78, 0x00, 0x00, 0x2C, 0x00, 0x00, 0xC3, 0x00, 0x23, 0x20, 0x00, 0x10, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x09, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC7, { 0x00, 0x00, 0x00, 0x21, 0x04, 0x00, 0x11, 0x04, 0x00, 0x01, 0x04, 0x00, 0x07, 0xFF, 0x00, 0x21, 0x04, 0x00, 0x11, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x21, 0x04, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x00, 0x00, 0x31, 0x08, 0x00, 0x11, 0x49, 0x00, 0x01, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x19, 0x08, 0x00, 0x11, 0x49, 0x00, 0x33, 0x49, 0x00, 0x22, 0x49, 0x00, 0x66, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DCA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x40, 0x00, 0x18, 0x7F, 0x00, 0x08, 0xC1, 0x00, 0x00, 0x83, 0x00, 0x61, 0x82, 0x00, 0x33, 0x0E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x00, 0x09, 0xCF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0xEF, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DCB, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x84, 0x00, 0x11, 0x8E, 0x00, 0x01, 0xCE, 0x00, 0x0A, 0xB5, 0x00, 0x0A, 0x95, 0x00, 0x0C, 0xA4, 0x80, 0x14, 0xA4, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DCC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x92, 0x00, 0x19, 0x93, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x60, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x19, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DCE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x28, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x00, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DCF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DD1, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x10, 0x8A, 0x00, 0x07, 0xFA, 0x00, 0x00, 0x86, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xA4, 0x00, 0x0A, 0xA4, 0x00, 0x14, 0xAA, 0x00, 0x14, 0xAA, 0x00, 0x10, 0x91, 0x00, 0x20, 0x91, 0x00, 0x21, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DD2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x11, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x42, 0x00, 0x10, 0x84, 0x00, 0x31, 0xF8, 0x00, 0x20, 0x2F, 0x00, 0x63, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DD5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x01, 0x87, 0x80, 0x0B, 0x10, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DD6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x01, 0x00, 0x31, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DD8, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x11, 0x00, 0x80, 0x03, 0xFE, 0x80, 0x0C, 0x20, 0x80, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x80, 0x12, 0x22, 0x80, 0x12, 0x22, 0x80, 0x13, 0xFE, 0x80, 0x12, 0x02, 0x80, 0x20, 0x01, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DD9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x20, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x11, 0x00, 0x22, 0x10, 0x80, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DDA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x12, 0x22, 0x00, 0x22, 0x41, 0x00, 0x24, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DDB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x32, 0x84, 0x80, 0x1A, 0x84, 0x80, 0x0B, 0xF4, 0x80, 0x04, 0x84, 0x80, 0x60, 0x84, 0x80, 0x37, 0xF4, 0x80, 0x10, 0x84, 0x80, 0x00, 0x84, 0x80, 0x07, 0xF4, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x34, 0x90, 0x80, 0x24, 0x90, 0x80, 0x24, 0xB0, 0x80, 0x60, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xDF, 0x00, 0x1A, 0x55, 0x00, 0x0A, 0x55, 0x00, 0x02, 0x55, 0x00, 0x63, 0xD5, 0x00, 0x32, 0x55, 0x00, 0x12, 0x5F, 0x00, 0x02, 0x50, 0x00, 0x0B, 0xD0, 0x00, 0x0A, 0x50, 0x00, 0x1A, 0x50, 0x00, 0x12, 0x50, 0x00, 0x32, 0x50, 0x80, 0x26, 0x59, 0x80, 0x64, 0xCF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DDE, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x8E, 0x00, 0x00, 0x82, 0x00, 0x03, 0xEA, 0x00, 0x20, 0x89, 0x00, 0x11, 0x91, 0x00, 0x01, 0xE0, 0x80, 0x03, 0xA8, 0x00, 0x0A, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0A, 0x92, 0x00, 0x10, 0x91, 0x00, 0x10, 0xA7, 0x00, 0x10, 0xF8, 0x80, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DDF, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x30, 0x48, 0x00, 0x18, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x62, 0x49, 0x00, 0x32, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x30, 0x84, 0x00, 0x21, 0x86, 0x00, 0x63, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x31, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x10, 0x44, 0x00, 0x30, 0xC4, 0x00, 0x20, 0x84, 0x00, 0x61, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE1, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x22, 0x00, 0x01, 0x24, 0x00, 0x01, 0x28, 0x00, 0x20, 0x20, 0x00, 0x10, 0x50, 0x00, 0x00, 0x8C, 0x00, 0x0B, 0x23, 0x80, 0x08, 0x20, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x28, 0x00, 0x12, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x23, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DE2, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x30, 0x12, 0x00, 0x18, 0x12, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x60, 0x10, 0x00, 0x33, 0xD1, 0x00, 0x12, 0x59, 0x00, 0x02, 0x4B, 0x00, 0x0A, 0x4A, 0x00, 0x0B, 0xCE, 0x00, 0x18, 0x04, 0x00, 0x11, 0xCC, 0x80, 0x37, 0x16, 0x80, 0x20, 0x63, 0x80, 0x61, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE4, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x31, 0x04, 0x00, 0x19, 0x0E, 0x00, 0x0F, 0xEA, 0x00, 0x02, 0x0A, 0x00, 0x62, 0x1B, 0x00, 0x33, 0xD1, 0x00, 0x12, 0x71, 0x80, 0x02, 0x4C, 0x00, 0x02, 0x46, 0x00, 0x12, 0x42, 0x00, 0x12, 0x40, 0x00, 0x36, 0x40, 0x00, 0x24, 0x4C, 0x00, 0x24, 0x46, 0x00, 0x6C, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x7E, 0x00, 0x18, 0xC2, 0x00, 0x08, 0x86, 0x00, 0x01, 0xFC, 0x00, 0x60, 0x04, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x01, 0x91, 0x00, 0x08, 0xD3, 0x00, 0x08, 0x5A, 0x00, 0x18, 0x3C, 0x00, 0x10, 0xD6, 0x00, 0x31, 0x93, 0x00, 0x27, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x61, 0x83, 0x00, 0x33, 0x7D, 0x80, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x19, 0x11, 0x00, 0x11, 0x93, 0x00, 0x30, 0x92, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE8, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x88, 0x80, 0x01, 0x04, 0x00, 0x22, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DE9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x60, 0x44, 0x00, 0x30, 0xC4, 0x00, 0x11, 0x87, 0x80, 0x00, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x62, 0x00, 0x18, 0xC6, 0x00, 0x11, 0xAC, 0x00, 0x30, 0x38, 0x00, 0x20, 0x6E, 0x00, 0x63, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DEA, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x08, 0x48, 0x00, 0x00, 0x84, 0x00, 0x01, 0x02, 0x00, 0x26, 0x01, 0x80, 0x10, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DEB, { 0x00, 0x00, 0x00, 0x10, 0x1E, 0x00, 0x09, 0xE1, 0x00, 0x01, 0x10, 0x80, 0x02, 0x08, 0x00, 0x24, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DEC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x60, 0x44, 0x00, 0x30, 0xEE, 0x00, 0x11, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DEE, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x44, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x21, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x04, 0x88, 0x00, 0x00, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DEF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x00, 0x82, 0x00, 0x61, 0xFF, 0x00, 0x37, 0x01, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x21, 0x02, 0x00, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x60, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x08, 0x06, 0x00, 0x08, 0x34, 0x00, 0x18, 0x18, 0x00, 0x11, 0x4B, 0x00, 0x31, 0x41, 0x80, 0x23, 0x62, 0x80, 0x62, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x28, 0x80, 0x00, 0x28, 0x00, 0x20, 0x48, 0x80, 0x10, 0x8F, 0x80, 0x03, 0x10, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x21, 0x11, 0x00, 0x26, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DF3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x29, 0x00, 0x06, 0x49, 0x00, 0x60, 0x91, 0x00, 0x31, 0x23, 0x00, 0x10, 0x42, 0x00, 0x00, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x08, 0x30, 0x00, 0x18, 0x98, 0x00, 0x12, 0x83, 0x00, 0x32, 0x85, 0x80, 0x26, 0x8C, 0x80, 0x64, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF5, { 0x00, 0x00, 0x00, 0x11, 0x24, 0x80, 0x09, 0x24, 0x80, 0x01, 0x24, 0x80, 0x01, 0x24, 0x80, 0x21, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x01, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x09, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x12, 0x24, 0x80, 0x22, 0x24, 0x80, 0x24, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DF6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x00, 0x92, 0x00, 0x60, 0x92, 0x00, 0x30, 0x92, 0x00, 0x11, 0xD7, 0x00, 0x01, 0x55, 0x00, 0x0B, 0x39, 0x80, 0x08, 0x38, 0x00, 0x18, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0xF9, 0x80, 0x11, 0x0E, 0x00, 0x11, 0x08, 0x00, 0x11, 0x78, 0x80, 0x27, 0x8F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DF9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x20, 0x44, 0x00, 0x10, 0x92, 0x00, 0x03, 0x11, 0x80, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x80, 0x20, 0x1F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DFA, { 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x08, 0x27, 0x80, 0x00, 0x3D, 0x00, 0x03, 0xE2, 0x00, 0x20, 0x14, 0x00, 0x10, 0x18, 0x80, 0x00, 0x67, 0x80, 0x03, 0xA8, 0x00, 0x08, 0x24, 0x00, 0x08, 0x2F, 0x80, 0x0B, 0xF1, 0x00, 0x10, 0x22, 0x00, 0x10, 0x14, 0x00, 0x10, 0x18, 0x80, 0x20, 0x64, 0x80, 0x23, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6DFB, { 0x00, 0x00, 0x00, 0x10, 0x1E, 0x00, 0x0B, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x00, 0x88, 0x00, 0x01, 0x06, 0x00, 0x0E, 0x01, 0x80, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x11, 0x29, 0x00, 0x11, 0x25, 0x00, 0x12, 0x24, 0x80, 0x22, 0x24, 0x80, 0x24, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6DFC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x83, 0x00, 0x3E, 0xCE, 0x00, 0x02, 0xB0, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x01, 0x80, 0x00, 0x04, 0x08, 0x00, 0x75, 0x89, 0x80, 0x17, 0x7B, 0x00, 0x16, 0x1C, 0x00, 0x35, 0xAA, 0x00, 0x64, 0x6B, 0x00, 0x04, 0xC9, 0x80, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E00, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x01, 0x86, 0x00, 0x67, 0x23, 0x80, 0x30, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x84, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x31, 0x84, 0x00, 0x21, 0x04, 0x00, 0x63, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E04, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x30, 0x24, 0x00, 0x18, 0x24, 0x00, 0x09, 0xE7, 0x80, 0x00, 0x24, 0x00, 0x60, 0x24, 0x00, 0x30, 0x24, 0x00, 0x11, 0xE7, 0x80, 0x00, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0xE4, 0x00, 0x1B, 0xA7, 0x80, 0x10, 0x24, 0x00, 0x30, 0x64, 0x00, 0x20, 0xC4, 0x00, 0x61, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E05, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x20, 0x82, 0x00, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E07, { 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x61, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x09, 0x80, 0x80, 0x0B, 0x18, 0x80, 0x1F, 0xF0, 0x80, 0x11, 0x00, 0x80, 0x31, 0x09, 0x80, 0x20, 0xF9, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E08, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x00, 0x6C, 0x00, 0x60, 0x38, 0x00, 0x30, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x00, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x31, 0x82, 0x00, 0x21, 0x02, 0x00, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E09, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x90, 0x00, 0x18, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x00, 0x90, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x10, 0x92, 0x00, 0x01, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x12, 0x00, 0x18, 0x36, 0x00, 0x10, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x20, 0x70, 0x00, 0x63, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E0A, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x31, 0x11, 0x00, 0x19, 0x55, 0x00, 0x09, 0x55, 0x00, 0x01, 0x39, 0x00, 0x61, 0x11, 0x00, 0x31, 0x7D, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0x39, 0x00, 0x09, 0x39, 0x00, 0x19, 0x55, 0x00, 0x13, 0x55, 0x00, 0x32, 0x11, 0x00, 0x26, 0x11, 0x00, 0x6C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E0B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x90, 0x00, 0x08, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x60, 0x90, 0x00, 0x30, 0x90, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0x83, 0x00, 0x08, 0xC6, 0x00, 0x18, 0x44, 0x00, 0x10, 0x00, 0x00, 0x30, 0xC6, 0x00, 0x21, 0x83, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E0C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x18, 0x04, 0x00, 0x08, 0x04, 0x00, 0x41, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x12, 0x22, 0x00, 0x71, 0x74, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x24, 0x00, 0x16, 0x27, 0x00, 0x10, 0xA2, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E0D, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x23, 0xFE, 0x00, 0x18, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x40, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x11, 0x24, 0x00, 0x71, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x10, 0x58, 0x00, 0x11, 0x86, 0x00, 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E0E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x40, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x91, 0x00, 0x08, 0x52, 0x00, 0x09, 0x30, 0x00, 0x10, 0x90, 0x00, 0x70, 0x52, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E10, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x06, 0x00, 0x11, 0x18, 0x00, 0x17, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x42, 0x92, 0x00, 0x34, 0x9F, 0x00, 0x17, 0xF4, 0x00, 0x08, 0x94, 0x00, 0x10, 0x94, 0x00, 0x70, 0xF4, 0x00, 0x1F, 0x94, 0x00, 0x14, 0x94, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E11, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x09, 0x04, 0x00, 0x41, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x72, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x21, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E13, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x1E, 0x00, 0x19, 0xF0, 0x00, 0x08, 0x21, 0x00, 0x01, 0x33, 0x00, 0x61, 0x96, 0x00, 0x30, 0x84, 0x00, 0x10, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x30, 0x6C, 0x00, 0x20, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E14, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x18, 0xFC, 0x00, 0x09, 0x08, 0x00, 0x42, 0x12, 0x00, 0x37, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x06, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x72, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x32, 0x24, 0x80, 0x1B, 0x64, 0x80, 0x09, 0x44, 0x80, 0x07, 0xF4, 0x80, 0x60, 0x84, 0x80, 0x30, 0x84, 0x80, 0x17, 0xF4, 0x80, 0x00, 0x84, 0x80, 0x08, 0x84, 0x80, 0x09, 0xC4, 0x80, 0x19, 0x44, 0x80, 0x13, 0x60, 0x80, 0x32, 0x20, 0x80, 0x26, 0x30, 0x80, 0x60, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E16, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x44, 0x20, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x72, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E17, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x42, 0x00, 0x00, 0x8F, 0x00, 0x03, 0xF0, 0x80, 0x20, 0x40, 0x00, 0x10, 0x82, 0x00, 0x01, 0x1F, 0x00, 0x07, 0xE0, 0x80, 0x08, 0x30, 0x00, 0x08, 0x4C, 0x00, 0x09, 0xB3, 0x80, 0x16, 0xC8, 0x00, 0x10, 0x31, 0x00, 0x11, 0xC6, 0x00, 0x20, 0x38, 0x00, 0x21, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E19, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x24, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x0B, 0x8F, 0x00, 0x0A, 0x21, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x21, 0x06, 0x00, 0x26, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E1A, { 0x00, 0x00, 0x00, 0x10, 0x21, 0x00, 0x08, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x24, 0x00, 0x20, 0x28, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x09, 0x80, 0x00, 0x0E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E1B, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x10, 0x12, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x22, 0x10, 0x80, 0x13, 0xF0, 0x80, 0x02, 0x11, 0x00, 0x02, 0xF1, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xA4, 0x00, 0x12, 0xEC, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x12, 0x80, 0x24, 0x21, 0x80, 0x24, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E1D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x03, 0xBB, 0x80, 0x60, 0x00, 0x00, 0x31, 0xE4, 0x80, 0x11, 0x24, 0x80, 0x01, 0xA4, 0x80, 0x09, 0x6D, 0x80, 0x09, 0x29, 0x00, 0x19, 0xA9, 0x00, 0x11, 0x6D, 0x80, 0x31, 0x24, 0x80, 0x21, 0x24, 0x80, 0x61, 0x64, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E1E, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0xC6, 0x00, 0x18, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x60, 0x20, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E1F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E20, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x01, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E21, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x21, 0x22, 0x00, 0x11, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x09, 0x3E, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x42, 0x00, 0x11, 0x24, 0x00, 0x12, 0x18, 0x00, 0x12, 0x18, 0x00, 0x22, 0x66, 0x00, 0x25, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x1A, 0x02, 0x00, 0x0A, 0x1A, 0x00, 0x02, 0xF2, 0x00, 0x62, 0x22, 0x00, 0x32, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x02, 0xAA, 0x00, 0x0A, 0xFA, 0x00, 0x0A, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x32, 0x3A, 0x80, 0x22, 0xEA, 0x80, 0x64, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E23, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x38, 0x00, 0x20, 0x54, 0x00, 0x10, 0x92, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E24, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x07, 0xF4, 0x00, 0x00, 0x8F, 0x80, 0x23, 0xE4, 0x80, 0x10, 0x04, 0x80, 0x03, 0xE4, 0x80, 0x08, 0x44, 0x80, 0x08, 0x84, 0x80, 0x08, 0xF8, 0x80, 0x1F, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x91, 0x00, 0x20, 0x91, 0x00, 0x21, 0xA6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E25, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x03, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x0A, 0x42, 0x00, 0x0A, 0x8F, 0x00, 0x0B, 0xF8, 0x80, 0x0A, 0x10, 0x00, 0x12, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E26, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x20, 0xBE, 0x00, 0x10, 0xA2, 0x00, 0x00, 0xA2, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x7C, 0x80, 0x0A, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x22, 0x00, 0x80, 0x22, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E27, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x00, 0xC6, 0x00, 0x60, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x02, 0x10, 0x80, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x13, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x61, 0x02, 0x00, 0x31, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x49, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E2B, { 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x09, 0x44, 0x00, 0x01, 0x44, 0x00, 0x07, 0xFF, 0x80, 0x21, 0x44, 0x00, 0x11, 0x44, 0x00, 0x01, 0x7C, 0x00, 0x01, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x21, 0x11, 0x00, 0x26, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E2C, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x0B, 0xE1, 0x00, 0x02, 0x29, 0x00, 0x02, 0x29, 0x00, 0x22, 0x29, 0x00, 0x13, 0xE9, 0x00, 0x02, 0x29, 0x00, 0x02, 0x29, 0x00, 0x0B, 0xE9, 0x00, 0x0A, 0x29, 0x00, 0x0A, 0x29, 0x00, 0x12, 0x29, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x01, 0x00, 0x22, 0x21, 0x00, 0x24, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E2D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x03, 0xFF, 0x80, 0x22, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E2E, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x00, 0x44, 0x00, 0x60, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x01, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x19, 0x12, 0x00, 0x11, 0xF2, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E2F, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x48, 0x00, 0x00, 0x48, 0x00, 0x03, 0xFF, 0x00, 0x20, 0x48, 0x00, 0x10, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x09, 0x02, 0x00, 0x0E, 0xFD, 0x80, 0x08, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E32, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x80, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x10, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x88, 0x80, 0x0A, 0x94, 0x80, 0x14, 0xA2, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E36, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x20, 0x54, 0x00, 0x10, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E38, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x09, 0x04, 0x00, 0x01, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x11, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x01, 0xE2, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x27, 0x80, 0x0A, 0x3C, 0x00, 0x12, 0x24, 0x00, 0x12, 0x44, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x29, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E39, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x0B, 0x00, 0x80, 0x02, 0x78, 0x80, 0x66, 0x00, 0x80, 0x31, 0xFE, 0x80, 0x10, 0x00, 0x80, 0x00, 0x78, 0x80, 0x08, 0x00, 0x80, 0x08, 0x78, 0x80, 0x18, 0x00, 0x80, 0x10, 0xFC, 0x80, 0x30, 0x85, 0x80, 0x20, 0xFD, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E3A, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x0B, 0x84, 0x00, 0x02, 0x84, 0x00, 0x02, 0x95, 0x00, 0x22, 0x94, 0x80, 0x13, 0xA4, 0x80, 0x02, 0xC4, 0x00, 0x0A, 0x84, 0x80, 0x0A, 0x84, 0x80, 0x0B, 0x8D, 0x00, 0x12, 0x81, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x13, 0x84, 0x00, 0x22, 0x88, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E3B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x56, 0x00, 0x18, 0xD3, 0x00, 0x0B, 0x91, 0x80, 0x00, 0x34, 0x00, 0x60, 0x0C, 0x00, 0x30, 0xFF, 0x00, 0x13, 0x81, 0x00, 0x00, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x18, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x30, 0x81, 0x00, 0x20, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E3C, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E3D, { 0x00, 0x00, 0x00, 0x10, 0x90, 0x00, 0x08, 0x94, 0x00, 0x07, 0xF2, 0x00, 0x00, 0x90, 0x00, 0x20, 0x90, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x0B, 0xD2, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x54, 0x00, 0x12, 0x48, 0x00, 0x13, 0xD8, 0x00, 0x10, 0x24, 0x80, 0x20, 0x42, 0x80, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E3E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E43, { 0x00, 0x00, 0x00, 0x10, 0xE0, 0x00, 0x0B, 0xBF, 0x80, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x24, 0x9F, 0x00, 0x13, 0xE4, 0x00, 0x00, 0x84, 0x00, 0x08, 0x9F, 0x00, 0x08, 0xE4, 0x00, 0x09, 0x84, 0x00, 0x16, 0xBF, 0x80, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x22, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E44, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x10, 0x80, 0x01, 0x10, 0x80, 0x21, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x7F, 0x00, 0x05, 0x41, 0x00, 0x05, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E45, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x31, 0x93, 0x00, 0x11, 0x55, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x54, 0x00, 0x18, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E48, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0x82, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x30, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x18, 0xD6, 0x00, 0x10, 0x92, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E49, { 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x30, 0x86, 0x00, 0x18, 0x9C, 0x00, 0x0A, 0x84, 0x00, 0x02, 0xC4, 0x00, 0x62, 0xA4, 0x00, 0x36, 0xBF, 0x80, 0x14, 0x84, 0x00, 0x00, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9F, 0x00, 0x18, 0x91, 0x00, 0x10, 0x91, 0x00, 0x30, 0x91, 0x00, 0x20, 0x91, 0x00, 0x60, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E4A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x7D, 0x80, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E4B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x31, 0xFE, 0x00, 0x18, 0x42, 0x00, 0x08, 0x42, 0x00, 0x03, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x08, 0x00, 0x11, 0x08, 0x00, 0x31, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E4D, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x22, 0x44, 0x80, 0x22, 0x45, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x08, 0x60, 0x00, 0x00, 0x40, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x49, 0x00, 0x12, 0x49, 0x00, 0x02, 0x79, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x79, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x49, 0x00, 0x63, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x61, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x82, 0x00, 0x21, 0x83, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x20, 0x80, 0x09, 0x3D, 0x00, 0x01, 0x20, 0x00, 0x63, 0xA0, 0x00, 0x36, 0x7F, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x21, 0x02, 0x00, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x83, 0x80, 0x10, 0xFE, 0x00, 0x33, 0x82, 0x00, 0x20, 0x02, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E53, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x30, 0x86, 0x00, 0x19, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x00, 0xFE, 0x00, 0x60, 0x22, 0x00, 0x30, 0x62, 0x00, 0x10, 0xC2, 0x00, 0x01, 0x8E, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x49, 0x00, 0x11, 0x49, 0x00, 0x31, 0x49, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E54, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0xC6, 0x00, 0x18, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x61, 0xE1, 0x00, 0x31, 0x29, 0x00, 0x11, 0x29, 0x00, 0x01, 0xA9, 0x00, 0x09, 0x69, 0x00, 0x09, 0x29, 0x00, 0x19, 0xA9, 0x00, 0x11, 0x61, 0x00, 0x31, 0x21, 0x00, 0x21, 0x21, 0x00, 0x61, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E56, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x8F, 0x80, 0x00, 0x88, 0x80, 0x07, 0xF8, 0x80, 0x00, 0x88, 0x80, 0x20, 0x8F, 0x80, 0x10, 0x88, 0x80, 0x03, 0xE8, 0x80, 0x0A, 0x28, 0x80, 0x0A, 0x2F, 0x80, 0x0A, 0x28, 0x80, 0x12, 0x28, 0x80, 0x12, 0x28, 0x80, 0x13, 0xE8, 0x80, 0x22, 0x30, 0x80, 0x22, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E57, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x30, 0x81, 0x00, 0x1B, 0xE1, 0x00, 0x08, 0x81, 0x00, 0x00, 0x8F, 0x80, 0x67, 0xF1, 0x00, 0x30, 0x01, 0x00, 0x10, 0x89, 0x00, 0x00, 0x8D, 0x00, 0x0B, 0xE5, 0x00, 0x08, 0x81, 0x00, 0x18, 0x81, 0x00, 0x10, 0x81, 0x00, 0x30, 0xE1, 0x00, 0x23, 0x81, 0x00, 0x66, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E58, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x8F, 0x80, 0x00, 0x88, 0x80, 0x07, 0xE8, 0x80, 0x20, 0x88, 0x80, 0x11, 0x8F, 0x80, 0x01, 0xC8, 0x80, 0x03, 0xA8, 0x80, 0x0A, 0x88, 0x80, 0x0A, 0x8F, 0x80, 0x0A, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x20, 0x8F, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E5B, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x20, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0x44, 0x00, 0x12, 0x44, 0x80, 0x13, 0x83, 0x80, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E5C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x11, 0x10, 0x00, 0x11, 0x90, 0x00, 0x22, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E5D, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x31, 0x09, 0x80, 0x19, 0xEF, 0x00, 0x09, 0x08, 0x00, 0x01, 0x08, 0x00, 0x61, 0x08, 0x80, 0x31, 0xC7, 0x80, 0x17, 0x10, 0x00, 0x00, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E5E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E5F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x61, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x1A, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x32, 0x10, 0x80, 0x22, 0x10, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E63, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x19, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x08, 0x00, 0x61, 0x08, 0x00, 0x31, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x01, 0x04, 0x80, 0x09, 0xC2, 0x80, 0x0B, 0x01, 0x80, 0x19, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E67, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x24, 0x00, 0x20, 0x18, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x20, 0x80, 0x10, 0x40, 0x80, 0x21, 0x81, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x14, 0x00, 0x08, 0x16, 0x00, 0x08, 0x12, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x30, 0x6C, 0x00, 0x20, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E6B, { 0x00, 0x00, 0x00, 0x10, 0x34, 0x00, 0x09, 0xC5, 0x00, 0x00, 0x44, 0x80, 0x00, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0xE4, 0x00, 0x09, 0x54, 0x00, 0x09, 0x44, 0x00, 0x09, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x10, 0x51, 0x00, 0x20, 0x51, 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E6E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x07, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x15, 0x0F, 0x00, 0x06, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E6F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x12, 0x80, 0x16, 0x24, 0x80, 0x10, 0xC8, 0x80, 0x17, 0x10, 0x80, 0x20, 0x21, 0x00, 0x20, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E72, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x08, 0xF9, 0x00, 0x00, 0x90, 0x80, 0x01, 0x08, 0x00, 0x20, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x42, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x18, 0x00, 0x22, 0x36, 0x00, 0x24, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E73, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x28, 0x80, 0x0A, 0xFE, 0x80, 0x12, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x22, 0x10, 0x80, 0x22, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E76, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x20, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x30, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x80, 0x0B, 0xD1, 0x80, 0x08, 0x5B, 0x00, 0x18, 0xD4, 0x00, 0x10, 0x96, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E7A, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0xBE, 0x00, 0x01, 0x22, 0x00, 0x01, 0x22, 0x00, 0x23, 0x22, 0x00, 0x13, 0x3E, 0x00, 0x05, 0x08, 0x00, 0x01, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x0C, 0x00, 0x09, 0x1C, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x49, 0x00, 0x21, 0x88, 0x80, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E7B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x30, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E7D, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x31, 0x11, 0x00, 0x1A, 0x22, 0x00, 0x0F, 0xFF, 0x80, 0x02, 0x22, 0x00, 0x61, 0x11, 0x00, 0x30, 0x88, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x21, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E7E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x01, 0x45, 0x00, 0x62, 0x44, 0x80, 0x30, 0x84, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x30, 0x00, 0x80, 0x20, 0x01, 0x80, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x61, 0x02, 0x00, 0x31, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x49, 0x00, 0x1B, 0x4B, 0x00, 0x11, 0x4A, 0x00, 0x30, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E80, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x00, 0x44, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x19, 0x55, 0x00, 0x11, 0x7D, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E82, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x30, 0x89, 0x00, 0x1F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x03, 0xE9, 0x00, 0x62, 0xA9, 0x00, 0x32, 0xA9, 0x00, 0x12, 0xA9, 0x00, 0x03, 0xE9, 0x00, 0x08, 0x89, 0x00, 0x09, 0x89, 0x00, 0x19, 0xC1, 0x00, 0x12, 0xA1, 0x00, 0x36, 0x91, 0x00, 0x2C, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E83, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x24, 0x00, 0x19, 0xFE, 0x00, 0x09, 0x24, 0x00, 0x41, 0xFC, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x71, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x10, 0x58, 0x00, 0x10, 0x86, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E85, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x17, 0xD2, 0x00, 0x14, 0x57, 0x00, 0x05, 0x78, 0x00, 0x45, 0x50, 0x00, 0x25, 0x57, 0x00, 0x25, 0x78, 0x00, 0x0D, 0x52, 0x00, 0x15, 0x52, 0x00, 0x65, 0x54, 0x00, 0x25, 0x48, 0x00, 0x21, 0x18, 0x00, 0x22, 0xA5, 0x00, 0x24, 0x45, 0x00, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E86, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1A, 0x82, 0x00, 0x0A, 0x7F, 0x00, 0x44, 0x22, 0x00, 0x2B, 0xA2, 0x00, 0x21, 0x22, 0x00, 0x09, 0x14, 0x00, 0x0F, 0xD4, 0x00, 0x11, 0x14, 0x00, 0x73, 0x88, 0x00, 0x15, 0x48, 0x00, 0x19, 0x14, 0x00, 0x11, 0x14, 0x00, 0x15, 0x22, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E89, { 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x04, 0x88, 0x00, 0x47, 0xA8, 0x00, 0x24, 0xA8, 0x00, 0x24, 0xAA, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x65, 0x10, 0x00, 0x25, 0x98, 0x00, 0x26, 0xA9, 0x00, 0x24, 0x29, 0x00, 0x20, 0x47, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E8C, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0xFA, 0x00, 0x1A, 0x28, 0x80, 0x09, 0x6D, 0x00, 0x00, 0xC6, 0x00, 0x61, 0x83, 0x00, 0x33, 0x01, 0x80, 0x10, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x10, 0x44, 0x00, 0x30, 0xC4, 0x80, 0x21, 0x84, 0x80, 0x63, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x82, 0x00, 0x08, 0x82, 0x00, 0x01, 0x04, 0x00, 0x61, 0x45, 0x00, 0x33, 0xAE, 0x80, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E8F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x02, 0xFF, 0x00, 0x62, 0x11, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x11, 0x00, 0x02, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x32, 0x81, 0x00, 0x24, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E90, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x02, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x08, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x24, 0x89, 0x00, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E93, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x30, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x49, 0x00, 0x30, 0x49, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x49, 0x00, 0x08, 0x49, 0x00, 0x09, 0xFF, 0x00, 0x18, 0xCC, 0x00, 0x11, 0x4A, 0x00, 0x33, 0x4B, 0x00, 0x26, 0x49, 0x80, 0x60, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E96, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x48, 0x00, 0x20, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x01, 0xFF, 0x00, 0x0A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E98, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x19, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x63, 0xFF, 0x00, 0x30, 0x80, 0x00, 0x10, 0x84, 0x00, 0x01, 0x3E, 0x00, 0x0B, 0xE3, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x49, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E99, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x28, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x44, 0x00, 0x10, 0x82, 0x00, 0x03, 0x11, 0x80, 0x08, 0x10, 0x00, 0x09, 0x93, 0x00, 0x18, 0xD6, 0x00, 0x10, 0x3C, 0x00, 0x30, 0xD7, 0x00, 0x23, 0x91, 0x80, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E9C, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x09, 0x9F, 0x80, 0x01, 0x04, 0x80, 0x01, 0x04, 0x80, 0x21, 0x14, 0x80, 0x11, 0x74, 0x80, 0x03, 0x98, 0x80, 0x08, 0x13, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x21, 0x10, 0x80, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6E9D, { 0x00, 0x00, 0x00, 0x20, 0x88, 0x00, 0x10, 0x88, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x27, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6E9F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EA0, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x60, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x10, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x18, 0xFF, 0x00, 0x11, 0x88, 0x00, 0x36, 0x08, 0x00, 0x20, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EA2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x82, 0x00, 0x21, 0x7D, 0x00, 0x12, 0x00, 0x80, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x0A, 0x00, 0x80, 0x11, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EA5, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x08, 0x12, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x11, 0x13, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x20, 0x22, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x08, 0x48, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x49, 0x00, 0x31, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x18, 0xD6, 0x00, 0x10, 0x92, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EAA, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x91, 0x00, 0x01, 0x08, 0x80, 0x20, 0x20, 0x00, 0x10, 0x28, 0x00, 0x01, 0x48, 0x00, 0x00, 0x92, 0x00, 0x08, 0x6E, 0x00, 0x0B, 0xF1, 0x00, 0x08, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x30, 0x00, 0x10, 0x48, 0x00, 0x21, 0x86, 0x00, 0x22, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EAB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x22, 0x52, 0x00, 0x12, 0x8A, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x89, 0x00, 0x14, 0x89, 0x00, 0x14, 0x89, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x03, 0x87, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x19, 0x86, 0x00, 0x17, 0x6C, 0x00, 0x30, 0x38, 0x00, 0x20, 0xEE, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EAE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x31, 0x1F, 0x80, 0x1B, 0xC4, 0x00, 0x0A, 0x44, 0x00, 0x02, 0x5F, 0x80, 0x62, 0x54, 0x80, 0x33, 0xD4, 0x80, 0x12, 0x14, 0x80, 0x02, 0x14, 0x80, 0x0B, 0xD4, 0x80, 0x0A, 0x54, 0x80, 0x1A, 0x54, 0x80, 0x12, 0x54, 0x80, 0x32, 0x55, 0x80, 0x23, 0xC4, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EAF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0A, 0x27, 0x80, 0x01, 0x44, 0x80, 0x00, 0x04, 0x80, 0x27, 0xF4, 0x80, 0x10, 0x87, 0x80, 0x02, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x0B, 0xE7, 0x80, 0x0A, 0xA4, 0x80, 0x10, 0x84, 0x80, 0x11, 0x04, 0x80, 0x11, 0x08, 0x80, 0x22, 0x08, 0x80, 0x24, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EB1, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x20, 0xFE, 0x00, 0x10, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x08, 0x9E, 0x00, 0x0B, 0x71, 0x80, 0x08, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x20, 0x92, 0x00, 0x23, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EB2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0xD0, 0x00, 0x19, 0x97, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x61, 0xD7, 0x00, 0x31, 0x11, 0x00, 0x11, 0x11, 0x00, 0x01, 0xD7, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x82, 0x00, 0x10, 0x4C, 0x00, 0x30, 0x38, 0x00, 0x20, 0xEE, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x82, 0x00, 0x21, 0x83, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EB4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x84, 0x00, 0x1B, 0xFE, 0x00, 0x0A, 0x04, 0x00, 0x43, 0xFC, 0x00, 0x22, 0x04, 0x00, 0x23, 0xFC, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0xFC, 0x00, 0x10, 0x50, 0x00, 0x70, 0x4A, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xA0, 0x00, 0x10, 0x90, 0x00, 0x11, 0x08, 0x00, 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EB6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x20, 0x44, 0x00, 0x10, 0x92, 0x00, 0x03, 0x29, 0x80, 0x00, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x08, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x0A, 0xFD, 0x00, 0x02, 0x21, 0x00, 0x62, 0x41, 0x00, 0x32, 0xA5, 0x00, 0x12, 0x29, 0x00, 0x02, 0x51, 0x00, 0x0A, 0x91, 0x00, 0x0A, 0x39, 0x00, 0x1A, 0x55, 0x00, 0x12, 0x93, 0x00, 0x32, 0x31, 0x00, 0x22, 0x01, 0x00, 0x63, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EBA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xE7, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x21, 0xE7, 0x80, 0x11, 0x04, 0x00, 0x02, 0x08, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0x62, 0x80, 0x08, 0xA4, 0x80, 0x11, 0x28, 0x80, 0x12, 0x71, 0x80, 0x10, 0xA2, 0x80, 0x11, 0x24, 0x80, 0x22, 0x28, 0x80, 0x24, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x1A, 0x02, 0x00, 0x0A, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x62, 0xFA, 0x00, 0x30, 0x00, 0x00, 0x17, 0xDF, 0x00, 0x00, 0xC3, 0x00, 0x0B, 0x4D, 0x00, 0x08, 0x51, 0x00, 0x18, 0xC7, 0x00, 0x13, 0x4D, 0x00, 0x36, 0x59, 0x00, 0x20, 0x41, 0x00, 0x61, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x80, 0x19, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x01, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x31, 0x49, 0x00, 0x11, 0x4A, 0x00, 0x01, 0x44, 0x00, 0x0A, 0x72, 0x00, 0x08, 0xC1, 0x80, 0x18, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x82, 0x00, 0x20, 0xC2, 0x00, 0x60, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EBF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x37, 0xD5, 0x00, 0x1D, 0x55, 0x80, 0x05, 0x74, 0x80, 0x05, 0x44, 0x00, 0x65, 0x5F, 0x00, 0x37, 0xC4, 0x00, 0x15, 0x44, 0x00, 0x05, 0x44, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x37, 0xC4, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x00, 0x84, 0x00, 0x63, 0x88, 0x00, 0x30, 0xD1, 0x00, 0x10, 0x3F, 0x80, 0x07, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x21, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC1, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x33, 0xCE, 0x00, 0x1A, 0x4B, 0x00, 0x0A, 0x59, 0x80, 0x02, 0xD0, 0x80, 0x62, 0xBF, 0x00, 0x32, 0x84, 0x00, 0x12, 0x44, 0x00, 0x02, 0x7F, 0x80, 0x0A, 0x44, 0x00, 0x0A, 0x55, 0x00, 0x1A, 0xD5, 0x00, 0x12, 0x35, 0x80, 0x32, 0x24, 0x80, 0x22, 0x04, 0x00, 0x62, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x00, 0x44, 0x00, 0x20, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x10, 0x41, 0x00, 0x10, 0x82, 0x00, 0x23, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC3, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x30, 0x86, 0x00, 0x19, 0x83, 0x00, 0x0B, 0x21, 0x80, 0x00, 0x64, 0x00, 0x60, 0xCE, 0x00, 0x31, 0xF3, 0x00, 0x10, 0x00, 0x00, 0x03, 0xEF, 0x00, 0x08, 0x63, 0x00, 0x08, 0xA5, 0x00, 0x19, 0x29, 0x00, 0x10, 0x63, 0x00, 0x30, 0xA5, 0x00, 0x21, 0x29, 0x00, 0x60, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC4, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x23, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x13, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC5, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x08, 0x12, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x12, 0x11, 0x00, 0x03, 0xF1, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0B, 0x6C, 0x00, 0x13, 0x5C, 0x00, 0x12, 0x48, 0x00, 0x12, 0x14, 0x80, 0x12, 0x22, 0x80, 0x24, 0x41, 0x80, 0x24, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EC7, { 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x31, 0xFC, 0x00, 0x19, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x62, 0xFE, 0x00, 0x32, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x02, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x1A, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x20, 0x44, 0x00, 0x61, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x7D, 0x00, 0x19, 0x45, 0x00, 0x11, 0x45, 0x00, 0x31, 0x7D, 0x00, 0x21, 0x01, 0x00, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EC9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x00, 0x92, 0x00, 0x08, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x84, 0x80, 0x21, 0x07, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ECA, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x10, 0x42, 0x00, 0x02, 0x4A, 0x00, 0x09, 0x52, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0xE2, 0x00, 0x11, 0x52, 0x80, 0x33, 0x5A, 0x80, 0x26, 0x4D, 0x80, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ECB, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x44, 0x00, 0x00, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x84, 0x00, 0x05, 0x29, 0x00, 0x0A, 0x31, 0x00, 0x09, 0x4A, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xFF, 0x80, 0x20, 0x20, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ECC, { 0x00, 0x00, 0x00, 0x10, 0x90, 0x00, 0x08, 0x90, 0x00, 0x01, 0x3F, 0x80, 0x01, 0x21, 0x00, 0x22, 0xD2, 0x00, 0x12, 0x8C, 0x00, 0x06, 0x96, 0x00, 0x0A, 0xE9, 0x80, 0x0A, 0x88, 0x00, 0x0A, 0xFF, 0x80, 0x0A, 0x88, 0x00, 0x12, 0x9C, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xC9, 0x00, 0x22, 0x88, 0x80, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ECD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x60, 0x40, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x30, 0x11, 0x00, 0x20, 0x7F, 0x80, 0x63, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ECE, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x14, 0x94, 0x80, 0x15, 0x15, 0x00, 0x24, 0x24, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x60, 0x80, 0x1F, 0x62, 0x00, 0x01, 0x54, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x31, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6ECF, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x6C, 0x00, 0x19, 0xC7, 0x00, 0x08, 0x6C, 0x00, 0x00, 0x38, 0x00, 0x60, 0xEE, 0x00, 0x33, 0x83, 0x80, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x92, 0x00, 0x10, 0xD6, 0x00, 0x30, 0x54, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ED1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x3E, 0x00, 0x21, 0x22, 0x00, 0x17, 0xFF, 0x80, 0x04, 0x00, 0x80, 0x01, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x21, 0x02, 0x00, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ED3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ED4, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x08, 0xF2, 0x00, 0x00, 0x91, 0x00, 0x01, 0x08, 0x80, 0x22, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x09, 0xC7, 0x00, 0x09, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ED5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x54, 0x00, 0x24, 0x92, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x28, 0x00, 0x3C, 0x28, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0xD6, 0x00, 0x3D, 0x93, 0x00, 0x27, 0x55, 0x80, 0x24, 0x38, 0x00, 0x24, 0x54, 0x00, 0x24, 0xD6, 0x00, 0x65, 0x93, 0x00, 0x4C, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6ED7, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x21, 0x12, 0x00, 0x19, 0xDF, 0x00, 0x0A, 0xA8, 0x00, 0x44, 0x44, 0x00, 0x20, 0x1E, 0x00, 0x27, 0xE0, 0x00, 0x08, 0x48, 0x00, 0x0B, 0xFC, 0x00, 0x10, 0x40, 0x00, 0x70, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EDA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x41, 0xA6, 0x00, 0x32, 0x22, 0x00, 0x10, 0x40, 0x00, 0x04, 0x88, 0x00, 0x09, 0xFC, 0x00, 0x10, 0x40, 0x00, 0x70, 0xA2, 0x00, 0x11, 0x94, 0x00, 0x12, 0x88, 0x00, 0x14, 0xA7, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EDD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x00, 0x44, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x20, 0x10, 0x80, 0x60, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EDE, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x30, 0x92, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x00, 0x92, 0x00, 0x60, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x11, 0x00, 0x21, 0x13, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EDF, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x21, 0x10, 0x00, 0x11, 0x1E, 0x00, 0x17, 0xA4, 0x00, 0x41, 0x4A, 0x00, 0x21, 0x3F, 0x00, 0x27, 0xEA, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x77, 0xFE, 0x00, 0x11, 0x20, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x27, 0xFE, 0x00, 0x19, 0x08, 0x00, 0x09, 0xF8, 0x00, 0x41, 0x08, 0x00, 0x25, 0xF8, 0x00, 0x25, 0x0A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x17, 0xFE, 0x00, 0x74, 0x42, 0x00, 0x12, 0x94, 0x00, 0x11, 0x08, 0x00, 0x12, 0x94, 0x00, 0x14, 0x63, 0x00, 0x18, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE1, { 0x00, 0x00, 0x00, 0x20, 0x90, 0x00, 0x18, 0x92, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x90, 0x00, 0x40, 0x04, 0x00, 0x37, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x00, 0x92, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x92, 0x00, 0x74, 0x92, 0x00, 0x15, 0x6A, 0x00, 0x16, 0x06, 0x00, 0x14, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE2, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x8A, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x47, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x24, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x10, 0x28, 0x00, 0x71, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x10, 0x28, 0x00, 0x10, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE4, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x20, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFF, 0x00, 0x04, 0x41, 0x00, 0x44, 0x7A, 0x00, 0x2F, 0xC0, 0x00, 0x24, 0x44, 0x00, 0x0C, 0x3C, 0x00, 0x14, 0x00, 0x00, 0x64, 0xA0, 0x00, 0x25, 0x92, 0x00, 0x26, 0x95, 0x00, 0x28, 0x85, 0x00, 0x28, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE5, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x20, 0x90, 0x00, 0x1A, 0x92, 0x00, 0x0A, 0x9F, 0x00, 0x42, 0xA8, 0x00, 0x32, 0xC4, 0x00, 0x12, 0x84, 0x00, 0x00, 0x80, 0x00, 0x08, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x72, 0x94, 0x00, 0x12, 0x94, 0x00, 0x12, 0x94, 0x00, 0x12, 0x94, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x03, 0x18, 0x00, 0x45, 0x16, 0x00, 0x29, 0x12, 0x00, 0x21, 0x50, 0x00, 0x08, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x60, 0xE0, 0x00, 0x21, 0x50, 0x00, 0x22, 0x48, 0x00, 0x24, 0x47, 0x00, 0x28, 0x42, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x08, 0x32, 0x00, 0x41, 0xC0, 0x00, 0x29, 0x08, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x10, 0x00, 0x11, 0x10, 0x00, 0x71, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0x90, 0x00, 0x11, 0x0C, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EE9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x14, 0x00, 0x18, 0x10, 0x00, 0x0F, 0xBF, 0x00, 0x40, 0xA4, 0x00, 0x34, 0xE4, 0x00, 0x14, 0xBE, 0x00, 0x03, 0x24, 0x00, 0x09, 0x24, 0x00, 0x12, 0xBE, 0x00, 0x74, 0xA4, 0x00, 0x18, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x3F, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EEB, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x30, 0x90, 0x00, 0x19, 0xBF, 0x80, 0x09, 0x61, 0x00, 0x03, 0x13, 0x00, 0x62, 0x8E, 0x00, 0x36, 0xBB, 0x00, 0x1A, 0xE1, 0x80, 0x02, 0xBF, 0x00, 0x02, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x12, 0xA1, 0x00, 0x32, 0xBF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x62, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x12, 0x7E, 0x00, 0x02, 0x42, 0x00, 0x0A, 0x7E, 0x00, 0x0A, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x24, 0x80, 0x80, 0x60, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x10, 0x92, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EEE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x70, 0x80, 0x18, 0x41, 0x80, 0x07, 0xFB, 0x00, 0x04, 0x8A, 0x00, 0x64, 0xF0, 0x80, 0x37, 0x81, 0x80, 0x14, 0x93, 0x00, 0x04, 0x76, 0x00, 0x14, 0x04, 0x80, 0x15, 0x21, 0x80, 0x15, 0x23, 0x00, 0x35, 0x26, 0x00, 0x25, 0x24, 0x80, 0x29, 0x31, 0x80, 0x62, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EEF, { 0x00, 0x00, 0x00, 0x10, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xAA, 0x00, 0x20, 0xAA, 0x80, 0x11, 0x3B, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x11, 0x00, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EF2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x82, 0x00, 0x19, 0xFD, 0x00, 0x08, 0x82, 0x00, 0x01, 0x45, 0x00, 0x63, 0xAE, 0x80, 0x30, 0x38, 0x00, 0x10, 0xC6, 0x00, 0x03, 0x09, 0x80, 0x08, 0x30, 0x00, 0x09, 0xC4, 0x00, 0x18, 0x19, 0x00, 0x11, 0xE3, 0x00, 0x30, 0x0E, 0x00, 0x20, 0x38, 0x00, 0x61, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EF4, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x20, 0x44, 0x00, 0x10, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x22, 0x00, 0x80, 0x22, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EF7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x32, 0x20, 0x80, 0x12, 0x92, 0x80, 0x02, 0x44, 0x80, 0x0B, 0x28, 0x80, 0x0A, 0x92, 0x80, 0x1A, 0x29, 0x80, 0x12, 0x44, 0x80, 0x32, 0x92, 0x80, 0x22, 0x08, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EF8, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x0B, 0xC8, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x24, 0x00, 0x20, 0x04, 0x00, 0x13, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x23, 0xC4, 0x00, 0x22, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EF9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x1F, 0x00, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x10, 0x80, 0x61, 0x7E, 0x00, 0x31, 0x10, 0x80, 0x11, 0x0F, 0x80, 0x01, 0x01, 0x00, 0x09, 0x7E, 0x00, 0x09, 0x49, 0x00, 0x19, 0x2A, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x26, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EFB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x00, 0x38, 0x00, 0x60, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x02, 0x48, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x88, 0x00, 0x1A, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x08, 0x00, 0x24, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EFD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x02, 0x11, 0x00, 0x63, 0xFF, 0x80, 0x32, 0x11, 0x00, 0x12, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x60, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6EFE, { 0x00, 0x00, 0x00, 0x22, 0x10, 0x00, 0x12, 0x10, 0x00, 0x02, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x50, 0x00, 0x10, 0x91, 0x00, 0x31, 0x8A, 0x00, 0x12, 0x8C, 0x00, 0x14, 0x84, 0x00, 0x10, 0xF2, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6EFF, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0xDC, 0x80, 0x12, 0x54, 0x80, 0x12, 0x54, 0x80, 0x13, 0xBB, 0x80, 0x12, 0x10, 0x80, 0x22, 0x10, 0x80, 0x22, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F01, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x21, 0x08, 0x00, 0x13, 0xFF, 0x00, 0x05, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x12, 0x49, 0x00, 0x22, 0x24, 0x80, 0x24, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F02, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x44, 0x80, 0x22, 0x44, 0x80, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x11, 0x00, 0x22, 0x10, 0x80, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F04, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x31, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x32, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x1A, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x21, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F06, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x38, 0x00, 0x20, 0x54, 0x00, 0x11, 0x92, 0x00, 0x06, 0x29, 0x80, 0x00, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x11, 0x80, 0x09, 0x92, 0x00, 0x10, 0x54, 0x00, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x21, 0x92, 0x00, 0x2E, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F08, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0xEF, 0x00, 0x19, 0x91, 0x00, 0x0B, 0x53, 0x00, 0x00, 0xAA, 0x00, 0x60, 0x44, 0x00, 0x30, 0x82, 0x00, 0x13, 0x7D, 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x10, 0x92, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F09, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x0A, 0x48, 0x00, 0x02, 0x48, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x49, 0x00, 0x12, 0x49, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x12, 0x88, 0x00, 0x12, 0xEB, 0x00, 0x16, 0x8E, 0x00, 0x34, 0x88, 0x00, 0x2C, 0xE8, 0x80, 0x61, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F0A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x30, 0xE4, 0x00, 0x20, 0x3C, 0x00, 0x61, 0xE7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F0C, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x60, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x14, 0x80, 0x0A, 0x12, 0x80, 0x03, 0xFF, 0x80, 0x62, 0x10, 0x80, 0x32, 0xE8, 0x80, 0x12, 0xAA, 0x80, 0x02, 0xAA, 0x80, 0x0A, 0xEE, 0x80, 0x0A, 0x04, 0x80, 0x1A, 0xED, 0x80, 0x12, 0x1B, 0x80, 0x32, 0x72, 0x80, 0x22, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F0F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x23, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0xEB, 0x80, 0x12, 0x88, 0x80, 0x12, 0xEB, 0x80, 0x24, 0x88, 0x80, 0x24, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F11, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x80, 0x00, 0x0B, 0xDF, 0x80, 0x02, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x13, 0xCA, 0x00, 0x02, 0x4A, 0x00, 0x02, 0x7F, 0x80, 0x0B, 0xC2, 0x00, 0x0A, 0x02, 0x00, 0x0B, 0xC6, 0x00, 0x12, 0x06, 0x00, 0x13, 0xCA, 0x00, 0x12, 0x12, 0x00, 0x22, 0x22, 0x80, 0x22, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F13, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x60, 0x92, 0x00, 0x30, 0xAA, 0x00, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x21, 0x00, 0x11, 0x49, 0x00, 0x31, 0x75, 0x00, 0x21, 0x01, 0x00, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F14, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F15, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x48, 0x00, 0x23, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x21, 0xFE, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F16, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x31, 0xB4, 0x00, 0x18, 0xE4, 0x00, 0x0B, 0xB7, 0x80, 0x00, 0x0D, 0x00, 0x60, 0x49, 0x00, 0x33, 0xF5, 0x00, 0x10, 0x85, 0x00, 0x01, 0x05, 0x00, 0x0A, 0xF7, 0x00, 0x08, 0x22, 0x00, 0x18, 0x42, 0x00, 0x10, 0x77, 0x00, 0x33, 0xC5, 0x00, 0x20, 0x45, 0x00, 0x60, 0xCD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F18, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x31, 0x00, 0x00, 0x19, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x61, 0x25, 0x00, 0x31, 0x26, 0x00, 0x11, 0x3B, 0x00, 0x01, 0xE1, 0x80, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x19, 0x7F, 0x00, 0x13, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x00, 0x00, 0x0A, 0x3E, 0x00, 0x02, 0x22, 0x00, 0x62, 0x22, 0x00, 0x32, 0x3E, 0x00, 0x12, 0x00, 0x00, 0x02, 0xF7, 0x80, 0x0A, 0x94, 0x80, 0x0A, 0x94, 0x80, 0x1A, 0x94, 0x80, 0x12, 0xF7, 0x80, 0x32, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F1B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x54, 0x00, 0x18, 0x92, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x28, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x44, 0x00, 0x11, 0x93, 0x00, 0x03, 0x65, 0x80, 0x08, 0x28, 0x00, 0x08, 0x12, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x11, 0x80, 0x30, 0x54, 0x00, 0x20, 0xD6, 0x00, 0x61, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F20, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F22, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x44, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x20, 0xC6, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F23, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0A, 0xFF, 0x80, 0x01, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0F, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x88, 0x00, 0x22, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F24, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x21, 0x08, 0x00, 0x17, 0xFE, 0x00, 0x09, 0x08, 0x00, 0x43, 0x9C, 0x00, 0x25, 0x6A, 0x00, 0x29, 0x09, 0x00, 0x09, 0x48, 0x00, 0x08, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x70, 0x88, 0x00, 0x11, 0x08, 0x00, 0x10, 0x90, 0x00, 0x10, 0x60, 0x00, 0x11, 0x98, 0x00, 0x16, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F26, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xE2, 0x00, 0x15, 0x14, 0x00, 0x24, 0x88, 0x00, 0x44, 0x16, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x46, 0x00, 0x2F, 0x4C, 0x00, 0x21, 0x70, 0x00, 0x42, 0x5C, 0x00, 0x1C, 0x47, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F29, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x31, 0x08, 0x00, 0x19, 0x1F, 0x80, 0x0F, 0xD0, 0x00, 0x02, 0x20, 0x00, 0x62, 0x1F, 0x80, 0x33, 0x84, 0x80, 0x12, 0x85, 0x00, 0x02, 0x94, 0x00, 0x0A, 0x94, 0x00, 0x0A, 0x97, 0x80, 0x1A, 0x94, 0x00, 0x12, 0x94, 0x00, 0x36, 0x9C, 0x00, 0x24, 0xB6, 0x00, 0x6D, 0xA3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F2A, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x24, 0x44, 0x00, 0x32, 0xBF, 0x80, 0x11, 0x04, 0x00, 0x01, 0x0A, 0x00, 0x42, 0x91, 0x00, 0x64, 0x80, 0x00, 0x20, 0xBF, 0x80, 0x01, 0x81, 0x00, 0x11, 0x9D, 0x00, 0x12, 0x95, 0x00, 0x14, 0x95, 0x00, 0x30, 0x9D, 0x00, 0x20, 0x81, 0x00, 0x21, 0x81, 0x00, 0x67, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F2B, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x44, 0x80, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x10, 0x38, 0x00, 0x20, 0xEC, 0x00, 0x27, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F2C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F2D, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x8A, 0x00, 0x08, 0x8B, 0x00, 0x00, 0x21, 0x00, 0x67, 0xFF, 0x80, 0x30, 0x48, 0x00, 0x11, 0xCE, 0x00, 0x07, 0x03, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x31, 0x84, 0x00, 0x23, 0x04, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x10, 0x64, 0x00, 0x01, 0x88, 0x00, 0x08, 0x51, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x80, 0x10, 0x92, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F30, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x61, 0xEF, 0x00, 0x31, 0x29, 0x00, 0x11, 0xAD, 0x00, 0x01, 0x6B, 0x00, 0x09, 0x29, 0x00, 0x09, 0xAD, 0x00, 0x19, 0x6B, 0x00, 0x11, 0x29, 0x00, 0x31, 0x29, 0x00, 0x21, 0x69, 0x00, 0x62, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F31, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x8D, 0x00, 0x13, 0xF4, 0x00, 0x02, 0xA4, 0x00, 0x02, 0xA4, 0x00, 0x0B, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x09, 0xC4, 0x00, 0x12, 0xAA, 0x00, 0x12, 0x8A, 0x00, 0x14, 0x89, 0x00, 0x28, 0x91, 0x00, 0x20, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F32, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xBF, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xBE, 0x00, 0x20, 0xA0, 0x00, 0x17, 0xBE, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0xA8, 0x00, 0x08, 0xA9, 0x00, 0x10, 0xA6, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA2, 0x00, 0x21, 0x39, 0x00, 0x26, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F33, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x00, 0x44, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F36, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x60, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x20, 0x00, 0x12, 0xB3, 0x00, 0x32, 0x91, 0x80, 0x26, 0x84, 0x80, 0x64, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F38, { 0x00, 0x00, 0x00, 0x10, 0x83, 0x00, 0x08, 0x8C, 0x00, 0x03, 0xE8, 0x00, 0x00, 0x88, 0x00, 0x23, 0xE8, 0x00, 0x12, 0xAF, 0x80, 0x02, 0xA9, 0x00, 0x03, 0xE9, 0x00, 0x0A, 0xA9, 0x00, 0x0A, 0xA9, 0x00, 0x0B, 0xE9, 0x00, 0x12, 0xA9, 0x00, 0x10, 0x89, 0x00, 0x17, 0xF1, 0x00, 0x20, 0x91, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xEF, 0x00, 0x18, 0x63, 0x00, 0x08, 0xA5, 0x00, 0x00, 0x63, 0x00, 0x60, 0xA5, 0x00, 0x30, 0x11, 0x00, 0x10, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x0B, 0x83, 0x80, 0x08, 0x10, 0x00, 0x18, 0xE4, 0x00, 0x10, 0x19, 0x00, 0x30, 0xE2, 0x00, 0x20, 0x0C, 0x00, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F3C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x60, 0x90, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x03, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x21, 0x10, 0x00, 0x21, 0x10, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F3E, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x00, 0x18, 0x00, 0x09, 0xF1, 0x00, 0x08, 0x13, 0x00, 0x1B, 0xDA, 0x00, 0x10, 0x54, 0x00, 0x30, 0x92, 0x00, 0x23, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F3F, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x32, 0x00, 0x1F, 0x4C, 0x00, 0x11, 0xA8, 0x00, 0x01, 0x12, 0x00, 0x01, 0x62, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x12, 0x00, 0x11, 0x4A, 0x00, 0x21, 0x4E, 0x80, 0x1F, 0x63, 0x00, 0x01, 0x54, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x31, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F41, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x27, 0x7F, 0x80, 0x38, 0x08, 0x00, 0x20, 0x10, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x7F, 0x00, 0x06, 0xA1, 0x00, 0x3F, 0x21, 0x00, 0x0E, 0x3F, 0x00, 0x0D, 0x21, 0x00, 0x15, 0x21, 0x00, 0x14, 0xBF, 0x00, 0x14, 0xA1, 0x00, 0x24, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F45, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x60, 0x44, 0x00, 0x30, 0x88, 0x00, 0x11, 0xFF, 0x00, 0x03, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x19, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x10, 0x00, 0x21, 0x10, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F46, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x8A, 0x00, 0x17, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x43, 0xFF, 0x00, 0x22, 0x41, 0x00, 0x24, 0x8A, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x40, 0x00, 0x10, 0x84, 0x00, 0x73, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x11, 0x28, 0x00, 0x12, 0x26, 0x00, 0x14, 0xA2, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F47, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x27, 0xFF, 0x00, 0x18, 0x88, 0x00, 0x08, 0x20, 0x00, 0x43, 0xFE, 0x00, 0x20, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x72, 0x22, 0x00, 0x12, 0xB2, 0x00, 0x12, 0xAA, 0x00, 0x13, 0x2A, 0x00, 0x14, 0x22, 0x00, 0x18, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F4B, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x21, 0x08, 0x00, 0x1A, 0x88, 0x00, 0x0A, 0x52, 0x00, 0x44, 0x3F, 0x00, 0x2B, 0xD2, 0x00, 0x20, 0x12, 0x00, 0x0D, 0x52, 0x00, 0x0D, 0x54, 0x00, 0x15, 0x54, 0x00, 0x75, 0x48, 0x00, 0x10, 0x88, 0x00, 0x11, 0xD4, 0x00, 0x1E, 0x14, 0x00, 0x14, 0x22, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F4D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x28, 0x00, 0x12, 0x22, 0x00, 0x12, 0x7F, 0x00, 0x44, 0x48, 0x00, 0x2F, 0xC8, 0x00, 0x21, 0x7E, 0x00, 0x02, 0x48, 0x00, 0x14, 0x48, 0x00, 0x2F, 0xFE, 0x00, 0x60, 0x48, 0x00, 0x20, 0x48, 0x00, 0x21, 0xCA, 0x00, 0x2E, 0x7F, 0x00, 0x24, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x18, 0x44, 0x00, 0x08, 0x28, 0x00, 0x03, 0xFF, 0x00, 0x60, 0x52, 0x00, 0x30, 0x94, 0x00, 0x11, 0x30, 0x00, 0x03, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x89, 0x00, 0x1B, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x22, 0x79, 0x00, 0x62, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F51, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFA, 0x00, 0x00, 0xAC, 0x80, 0x00, 0x45, 0x00, 0x21, 0x82, 0x00, 0x16, 0x01, 0x80, 0x03, 0xDE, 0x00, 0x08, 0x52, 0x80, 0x0B, 0xD3, 0x80, 0x0A, 0x20, 0x00, 0x0A, 0x7F, 0x00, 0x13, 0xD1, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4C, 0x00, 0x20, 0x9A, 0x00, 0x23, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F52, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0xFE, 0x00, 0x19, 0x84, 0x00, 0x09, 0x08, 0x00, 0x03, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x31, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x08, 0x61, 0x00, 0x09, 0x93, 0x00, 0x18, 0x6A, 0x00, 0x11, 0x9C, 0x00, 0x30, 0x6A, 0x00, 0x23, 0x89, 0x80, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F53, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x11, 0x80, 0x19, 0x58, 0x00, 0x11, 0x4D, 0x00, 0x33, 0x41, 0x80, 0x26, 0x62, 0x80, 0x60, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F54, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x8F, 0x80, 0x07, 0xF4, 0x80, 0x00, 0x84, 0x80, 0x27, 0xF8, 0x80, 0x10, 0x89, 0x00, 0x07, 0xF6, 0x00, 0x00, 0x20, 0x00, 0x09, 0x44, 0x00, 0x08, 0x88, 0x00, 0x08, 0x51, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x80, 0x11, 0x24, 0x00, 0x22, 0x22, 0x00, 0x24, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F57, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x08, 0x90, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x23, 0xFF, 0x00, 0x15, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x08, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x21, 0x92, 0x00, 0x26, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F58, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x09, 0xF1, 0x00, 0x00, 0x92, 0x00, 0x00, 0x54, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x38, 0x00, 0x10, 0x54, 0x00, 0x00, 0x92, 0x00, 0x07, 0x11, 0x80, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F59, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x30, 0xFA, 0x00, 0x18, 0xA3, 0x00, 0x09, 0x11, 0x00, 0x01, 0xFE, 0x00, 0x61, 0x02, 0x00, 0x31, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x80, 0x1B, 0x00, 0x80, 0x12, 0x0A, 0x80, 0x36, 0xAA, 0x80, 0x21, 0xA1, 0x80, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F5A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x11, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x02, 0x54, 0x80, 0x0A, 0x54, 0x80, 0x0B, 0xD7, 0x80, 0x0A, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x13, 0xD7, 0x80, 0x22, 0x54, 0x80, 0x24, 0x54, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F5B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x01, 0x4A, 0x00, 0x01, 0x4A, 0x00, 0x21, 0x4A, 0x00, 0x17, 0xFF, 0x80, 0x01, 0x4A, 0x00, 0x01, 0x6A, 0x80, 0x0A, 0xD3, 0x80, 0x0C, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F5C, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0x82, 0x00, 0x1B, 0xEF, 0x80, 0x08, 0x82, 0x00, 0x03, 0xEF, 0x80, 0x60, 0x82, 0x00, 0x31, 0x45, 0x00, 0x12, 0x28, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F5D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0xEE, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x7C, 0x00, 0x60, 0x00, 0x00, 0x30, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x18, 0xA2, 0x80, 0x13, 0x2C, 0x80, 0x30, 0xE3, 0x80, 0x23, 0x2C, 0x80, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F5E, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x09, 0xE4, 0x00, 0x01, 0x27, 0x80, 0x01, 0x29, 0x00, 0x21, 0x29, 0x00, 0x11, 0x36, 0x00, 0x01, 0xE2, 0x00, 0x08, 0x45, 0x00, 0x08, 0x48, 0x80, 0x09, 0x70, 0x00, 0x11, 0x4F, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x79, 0x00, 0x23, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F5F, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x09, 0x8F, 0x00, 0x01, 0x01, 0x00, 0x01, 0xEF, 0x00, 0x21, 0x01, 0x00, 0x11, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x41, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x04, 0x80, 0x14, 0x12, 0x80, 0x10, 0x48, 0x80, 0x11, 0x29, 0x00, 0x21, 0x21, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F61, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x30, 0x84, 0x00, 0x1F, 0xF4, 0x00, 0x08, 0x0F, 0x80, 0x03, 0xE9, 0x00, 0x62, 0x39, 0x00, 0x33, 0xEB, 0x00, 0x10, 0x0A, 0x00, 0x03, 0xEA, 0x00, 0x08, 0x4E, 0x00, 0x08, 0x84, 0x00, 0x18, 0xE4, 0x00, 0x13, 0x8E, 0x00, 0x30, 0x8A, 0x00, 0x20, 0x9B, 0x00, 0x63, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F62, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x20, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F64, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x02, 0x28, 0x80, 0x03, 0xEF, 0x80, 0x22, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x02, 0x00, 0x80, 0x02, 0xFE, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0xFE, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x22, 0x00, 0x80, 0x22, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F66, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x01, 0x45, 0x00, 0x60, 0x82, 0x00, 0x31, 0xFF, 0x00, 0x12, 0x82, 0x80, 0x00, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x10, 0x92, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F68, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x67, 0xFF, 0x80, 0x30, 0x18, 0x00, 0x11, 0xF1, 0x00, 0x00, 0xAB, 0x00, 0x09, 0xAA, 0x00, 0x0B, 0x2C, 0x00, 0x18, 0x64, 0x00, 0x10, 0xE6, 0x00, 0x31, 0xA3, 0x00, 0x27, 0x21, 0x80, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F6C, { 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x31, 0x29, 0x00, 0x19, 0xEF, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x92, 0x00, 0x30, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F6D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x29, 0x00, 0x11, 0xCF, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F6E, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x87, 0x80, 0x07, 0xF4, 0x80, 0x00, 0x84, 0x80, 0x23, 0xE4, 0x80, 0x12, 0x27, 0x80, 0x03, 0xE4, 0x80, 0x02, 0x24, 0x80, 0x0B, 0xE4, 0x80, 0x0A, 0xA7, 0x80, 0x08, 0x84, 0x80, 0x10, 0x84, 0x80, 0x17, 0xF4, 0x80, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x20, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F6F, { 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x30, 0x02, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x60, 0x00, 0x00, 0x33, 0xEF, 0x00, 0x10, 0x89, 0x00, 0x00, 0xE9, 0x00, 0x0B, 0x8F, 0x00, 0x08, 0x02, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x30, 0xC2, 0x00, 0x20, 0x42, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F70, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F72, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x64, 0x00, 0x0B, 0x95, 0x00, 0x04, 0x8E, 0x00, 0x20, 0x84, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x05, 0x91, 0x00, 0x05, 0xDF, 0x00, 0x0A, 0xB1, 0x00, 0x3A, 0x91, 0x00, 0x0C, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x95, 0x00, 0x08, 0x92, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F74, { 0x00, 0x00, 0x00, 0x24, 0x48, 0x80, 0x36, 0x48, 0x80, 0x12, 0xBF, 0x80, 0x03, 0x89, 0x00, 0x41, 0x0B, 0x00, 0x63, 0x0A, 0x00, 0x25, 0x7F, 0x80, 0x09, 0x06, 0x00, 0x01, 0x0A, 0x00, 0x13, 0x1F, 0x00, 0x15, 0x31, 0x00, 0x19, 0xD1, 0x00, 0x31, 0x1F, 0x00, 0x21, 0x11, 0x00, 0x23, 0x11, 0x00, 0x66, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F78, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0x82, 0x00, 0x1B, 0xEF, 0x80, 0x08, 0x82, 0x00, 0x02, 0xAA, 0x80, 0x62, 0xAA, 0x80, 0x30, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x21, 0x82, 0x00, 0x63, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F7A, { 0x00, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x22, 0x3E, 0x00, 0x12, 0x04, 0x00, 0x02, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x18, 0x00, 0x0B, 0xEF, 0x80, 0x12, 0x41, 0x00, 0x12, 0x73, 0x80, 0x13, 0xCE, 0x00, 0x24, 0x42, 0x00, 0x24, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F7C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x20, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F7D, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x03, 0xFF, 0x00, 0x20, 0x48, 0x00, 0x12, 0x49, 0x00, 0x01, 0x4A, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x21, 0x02, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F7E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x92, 0x00, 0x00, 0x54, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x38, 0x00, 0x10, 0x54, 0x00, 0x00, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x84, 0x00, 0x09, 0xFF, 0x00, 0x13, 0x34, 0x00, 0x14, 0xD4, 0x00, 0x10, 0xBF, 0x80, 0x11, 0x04, 0x00, 0x22, 0x04, 0x00, 0x24, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xDF, 0x00, 0x19, 0x45, 0x00, 0x09, 0x45, 0x00, 0x05, 0x55, 0x00, 0x65, 0x55, 0x00, 0x32, 0x49, 0x00, 0x14, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xEB, 0x80, 0x1A, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x32, 0xEA, 0x00, 0x23, 0x9F, 0x80, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F81, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x90, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x20, 0x90, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x8A, 0x00, 0x0A, 0xEB, 0x80, 0x12, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x12, 0xFA, 0x00, 0x27, 0x8F, 0x80, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F82, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x32, 0xA4, 0x00, 0x1A, 0xA4, 0x00, 0x0A, 0xAF, 0x80, 0x03, 0xE9, 0x00, 0x60, 0x19, 0x00, 0x33, 0xE5, 0x00, 0x10, 0x05, 0x00, 0x03, 0xE5, 0x00, 0x08, 0x87, 0x00, 0x08, 0x82, 0x00, 0x1B, 0xE2, 0x00, 0x10, 0x87, 0x00, 0x30, 0xE5, 0x00, 0x23, 0x8D, 0x80, 0x60, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F83, { 0x00, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x70, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x70, 0x81, 0x00, 0x04, 0xFF, 0x00, 0x0C, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x70, 0x24, 0x00, 0x01, 0xC3, 0x80, 0x3E, 0x82, 0x00, 0x02, 0xC4, 0x00, 0x0C, 0xB8, 0x00, 0x78, 0x87, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F84, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xF9, 0x00, 0x00, 0x1A, 0x00, 0x01, 0x24, 0x80, 0x20, 0xC3, 0x00, 0x11, 0x81, 0x00, 0x06, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F86, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x82, 0x00, 0x33, 0xEF, 0x80, 0x10, 0x82, 0x00, 0x00, 0xE2, 0x00, 0x0B, 0x8F, 0x80, 0x08, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x30, 0x44, 0x80, 0x20, 0xC4, 0x80, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F87, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x32, 0xAA, 0x80, 0x1A, 0xAA, 0x80, 0x08, 0x82, 0x00, 0x01, 0x45, 0x00, 0x62, 0x28, 0x80, 0x30, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x0A, 0x20, 0x80, 0x09, 0xFF, 0x00, 0x18, 0x21, 0x00, 0x10, 0x61, 0x00, 0x30, 0x43, 0x00, 0x20, 0xC2, 0x00, 0x63, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F88, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x07, 0xF4, 0x00, 0x00, 0x8F, 0x80, 0x21, 0x29, 0x00, 0x17, 0xF1, 0x00, 0x00, 0x11, 0x00, 0x03, 0xFA, 0x00, 0x0A, 0x2A, 0x00, 0x0B, 0xEA, 0x00, 0x0A, 0x26, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x26, 0x00, 0x12, 0x2A, 0x00, 0x22, 0x29, 0x00, 0x22, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F89, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x23, 0xC8, 0x00, 0x18, 0x48, 0x00, 0x08, 0x92, 0x00, 0x47, 0xFF, 0x00, 0x22, 0x52, 0x00, 0x26, 0x52, 0x00, 0x0B, 0xD2, 0x00, 0x0A, 0x54, 0x00, 0x12, 0x54, 0x00, 0x73, 0xC8, 0x00, 0x12, 0x48, 0x00, 0x12, 0x54, 0x00, 0x1F, 0xD4, 0x00, 0x10, 0x62, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x61, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x10, 0x94, 0x00, 0x31, 0x96, 0x00, 0x23, 0x13, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F8C, { 0x00, 0x00, 0x00, 0x02, 0x41, 0x80, 0x32, 0x4F, 0x00, 0x1F, 0xE8, 0x00, 0x0A, 0x48, 0x00, 0x02, 0x48, 0x00, 0x63, 0xCF, 0x80, 0x32, 0x49, 0x00, 0x12, 0x49, 0x00, 0x03, 0xC9, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1F, 0xE9, 0x00, 0x12, 0x89, 0x00, 0x32, 0xC9, 0x00, 0x26, 0x51, 0x00, 0x6C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F8D, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0x82, 0x00, 0x03, 0xE2, 0x00, 0x00, 0x82, 0x00, 0x07, 0xF2, 0x00, 0x20, 0x1F, 0x80, 0x13, 0xE2, 0x00, 0x02, 0x22, 0x00, 0x0A, 0x2A, 0x00, 0x0B, 0xE6, 0x00, 0x08, 0x02, 0x00, 0x12, 0x42, 0x00, 0x11, 0x42, 0x00, 0x11, 0x7A, 0x00, 0x27, 0x82, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F8E, { 0x00, 0x00, 0x00, 0x10, 0x81, 0x00, 0x08, 0x81, 0x00, 0x03, 0xE2, 0x00, 0x00, 0x82, 0x00, 0x27, 0xF4, 0x00, 0x10, 0x09, 0x00, 0x03, 0xE1, 0x00, 0x02, 0x22, 0x00, 0x0B, 0xE2, 0x00, 0x0A, 0x24, 0x80, 0x08, 0x08, 0x80, 0x12, 0x21, 0x00, 0x11, 0x42, 0x00, 0x11, 0xF4, 0x00, 0x27, 0x08, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F90, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x10, 0x80, 0x11, 0xD7, 0x00, 0x00, 0x10, 0x00, 0x01, 0xD7, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x10, 0x82, 0x00, 0x21, 0x3F, 0x00, 0x27, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x28, 0x00, 0x09, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x61, 0x29, 0x00, 0x31, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x00, 0x28, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x21, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7F, 0x80, 0x37, 0x88, 0x00, 0x12, 0x3F, 0x00, 0x02, 0x21, 0x00, 0x42, 0x21, 0x00, 0x62, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x02, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x13, 0xA1, 0x00, 0x16, 0x21, 0x00, 0x30, 0x3F, 0x00, 0x20, 0x12, 0x00, 0x20, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F93, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x21, 0x90, 0x00, 0x33, 0x3F, 0x80, 0x16, 0x60, 0x00, 0x00, 0x1F, 0x00, 0x40, 0x91, 0x00, 0x61, 0x9F, 0x00, 0x23, 0x11, 0x00, 0x07, 0x1F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x31, 0x00, 0x31, 0x6B, 0x00, 0x21, 0x0E, 0x00, 0x21, 0x1B, 0x00, 0x61, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F94, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x94, 0x00, 0x01, 0x14, 0x00, 0x03, 0xDF, 0x00, 0x02, 0x64, 0x00, 0x22, 0x44, 0x00, 0x12, 0x7F, 0x80, 0x02, 0x44, 0x00, 0x0B, 0xC4, 0x00, 0x0A, 0x5F, 0x00, 0x0A, 0x51, 0x00, 0x12, 0x51, 0x00, 0x12, 0x51, 0x00, 0x13, 0xDF, 0x00, 0x22, 0x51, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xEF, 0x80, 0x1A, 0x28, 0x80, 0x0B, 0xEF, 0x80, 0x02, 0x28, 0x80, 0x63, 0xEF, 0x80, 0x32, 0x00, 0x80, 0x12, 0x10, 0x80, 0x02, 0xFE, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x38, 0x80, 0x1A, 0x38, 0x80, 0x12, 0x54, 0x80, 0x32, 0x92, 0x80, 0x22, 0x10, 0x80, 0x62, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x01, 0xE7, 0x80, 0x21, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x09, 0x3C, 0x80, 0x09, 0x24, 0x80, 0x09, 0x3C, 0x80, 0x11, 0x24, 0x80, 0x11, 0x3C, 0x80, 0x11, 0x00, 0x80, 0x21, 0x00, 0x80, 0x21, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6F9A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x20, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x09, 0x00, 0x01, 0x71, 0x00, 0x61, 0x55, 0x00, 0x31, 0x11, 0x00, 0x11, 0x7D, 0x00, 0x01, 0x39, 0x00, 0x09, 0x55, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x30, 0x01, 0x00, 0x20, 0x03, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F9C, { 0x00, 0x00, 0x00, 0x21, 0x02, 0x00, 0x18, 0xBF, 0x00, 0x0A, 0x82, 0x00, 0x02, 0x2A, 0x00, 0x43, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x12, 0xFA, 0x00, 0x06, 0xAA, 0x00, 0x0A, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x72, 0xFA, 0x00, 0x12, 0x72, 0x00, 0x12, 0xAA, 0x00, 0x13, 0x26, 0x00, 0x12, 0x22, 0x00, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6F9F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x60, 0xBA, 0x00, 0x30, 0xAA, 0x00, 0x10, 0xBA, 0x00, 0x00, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x01, 0x00, 0x19, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x20, 0x54, 0x00, 0x63, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x03, 0xCF, 0x00, 0x60, 0x48, 0x00, 0x30, 0x48, 0x00, 0x13, 0xCF, 0x00, 0x02, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xCF, 0x00, 0x1A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x33, 0xCF, 0x00, 0x20, 0x60, 0x80, 0x60, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FA1, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x30, 0x44, 0x00, 0x18, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x61, 0xEF, 0x00, 0x31, 0x29, 0x00, 0x11, 0x29, 0x00, 0x01, 0xEF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FA3, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x07, 0xFA, 0x00, 0x20, 0x89, 0x00, 0x13, 0xF0, 0x80, 0x02, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x0A, 0x24, 0x00, 0x0B, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FA4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x44, 0x80, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FA5, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0xFF, 0x80, 0x1B, 0x24, 0x80, 0x0E, 0x44, 0x80, 0x03, 0xEC, 0x80, 0x62, 0xBB, 0x80, 0x32, 0xA0, 0x00, 0x13, 0xE2, 0x00, 0x02, 0xAA, 0x00, 0x0A, 0xAF, 0x80, 0x0B, 0xF2, 0x00, 0x1A, 0x22, 0x00, 0x12, 0x3F, 0x80, 0x32, 0x22, 0x00, 0x22, 0x22, 0x00, 0x64, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xBF, 0x80, 0x30, 0x84, 0x00, 0x15, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x42, 0x11, 0x00, 0x6F, 0xDF, 0x00, 0x22, 0x51, 0x00, 0x02, 0x91, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x32, 0x1F, 0x00, 0x22, 0x0A, 0x00, 0x22, 0x1B, 0x00, 0x66, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FA7, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x08, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xA5, 0x00, 0x20, 0xFF, 0x00, 0x10, 0xA5, 0x00, 0x00, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x20, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FA8, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x30, 0x84, 0x00, 0x19, 0xEF, 0x80, 0x09, 0x4A, 0x00, 0x02, 0x52, 0x00, 0x60, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x00, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xD7, 0x00, 0x19, 0x55, 0x00, 0x12, 0x38, 0x80, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x62, 0xD6, 0x80, 0x32, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x00, 0x38, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x39, 0x80, 0x18, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x30, 0x11, 0x00, 0x20, 0x13, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FAE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x23, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x92, 0x80, 0x0A, 0x54, 0x80, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FAF, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0xFF, 0x80, 0x01, 0x99, 0x00, 0x22, 0x6A, 0x00, 0x15, 0x44, 0x00, 0x00, 0x8A, 0x00, 0x01, 0x31, 0x80, 0x0A, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x21, 0x92, 0x00, 0x26, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FB0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x60, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x18, 0x00, 0x00, 0x10, 0x82, 0x00, 0x30, 0x82, 0x00, 0x21, 0xC7, 0x00, 0x63, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FB1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xEE, 0x00, 0x02, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x13, 0xEA, 0x80, 0x02, 0x0B, 0x80, 0x02, 0xB0, 0x00, 0x02, 0xA0, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0xA9, 0x00, 0x0A, 0xA9, 0x00, 0x13, 0xF6, 0x00, 0x12, 0x04, 0x00, 0x12, 0xA6, 0x00, 0x22, 0xA9, 0x00, 0x25, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FB3, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x1D, 0x00, 0x01, 0x71, 0x00, 0x21, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x39, 0x00, 0x09, 0x55, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FB5, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x80, 0x20, 0x8F, 0x00, 0x37, 0xF8, 0x00, 0x12, 0x28, 0x00, 0x03, 0x68, 0x00, 0x41, 0x4F, 0x80, 0x67, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x00, 0x89, 0x00, 0x17, 0xF9, 0x00, 0x10, 0x89, 0x00, 0x11, 0xC9, 0x00, 0x32, 0xA9, 0x00, 0x24, 0x89, 0x00, 0x20, 0x91, 0x00, 0x60, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FB6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x61, 0x7D, 0x00, 0x31, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FB9, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x84, 0x00, 0x01, 0xFF, 0x80, 0x23, 0x28, 0x80, 0x11, 0xC7, 0x80, 0x01, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FBC, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x33, 0xC4, 0x00, 0x1A, 0x5F, 0x00, 0x0A, 0x40, 0x00, 0x02, 0x51, 0x00, 0x62, 0x5B, 0x00, 0x33, 0xCA, 0x00, 0x12, 0x3F, 0x80, 0x02, 0x04, 0x00, 0x13, 0xC4, 0x00, 0x16, 0x5F, 0x00, 0x16, 0x44, 0x00, 0x3A, 0x44, 0x00, 0x22, 0x44, 0x00, 0x23, 0xC4, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FBE, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x0B, 0x84, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x84, 0x00, 0x21, 0x7F, 0x80, 0x12, 0x11, 0x00, 0x03, 0x8A, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0A, 0xBF, 0x80, 0x12, 0x84, 0x00, 0x11, 0xBF, 0x80, 0x10, 0x84, 0x00, 0x10, 0xC4, 0x00, 0x21, 0x3F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FC0, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x0B, 0xE2, 0x00, 0x02, 0x22, 0x00, 0x03, 0xE4, 0x00, 0x22, 0x27, 0x80, 0x13, 0xE5, 0x00, 0x05, 0x09, 0x00, 0x05, 0x09, 0x00, 0x0F, 0xFD, 0x00, 0x09, 0x16, 0x00, 0x09, 0xE2, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x12, 0x25, 0x00, 0x22, 0x25, 0x00, 0x24, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FC1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x44, 0x80, 0x03, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x12, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x20, 0x80, 0x0B, 0xFE, 0x80, 0x0A, 0x22, 0x80, 0x0B, 0xFE, 0x80, 0x10, 0x22, 0x80, 0x10, 0x7F, 0x80, 0x17, 0xC1, 0x80, 0x20, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FC2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x37, 0x00, 0x02, 0xEC, 0x00, 0x22, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x24, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x25, 0x00, 0x0B, 0xFF, 0x80, 0x12, 0x25, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x66, 0x00, 0x12, 0xA5, 0x00, 0x25, 0x25, 0x00, 0x26, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FC3, { 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x29, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x29, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x91, 0x00, 0x12, 0x8A, 0x00, 0x24, 0xF6, 0x00, 0x25, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FC5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x0A, 0xFE, 0x80, 0x00, 0x02, 0x00, 0x61, 0xFF, 0x80, 0x30, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x0A, 0xFE, 0x80, 0x08, 0x92, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x83, 0x00, 0x20, 0x7C, 0x00, 0x67, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FC6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x08, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x60, 0x82, 0x00, 0x30, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FC7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x08, 0x92, 0x00, 0x00, 0x92, 0x00, 0x61, 0x55, 0x00, 0x30, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x31, 0x7D, 0x00, 0x21, 0x01, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FC8, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x27, 0x8B, 0x00, 0x34, 0x89, 0x00, 0x14, 0x88, 0x00, 0x07, 0x8F, 0x80, 0x40, 0x38, 0x00, 0x6F, 0xC9, 0x00, 0x24, 0x89, 0x00, 0x07, 0x8B, 0x00, 0x14, 0x8A, 0x00, 0x17, 0x8E, 0x00, 0x14, 0xC4, 0x00, 0x37, 0x8E, 0x00, 0x2C, 0x8A, 0x80, 0x20, 0x9B, 0x80, 0x60, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FC9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x18, 0x00, 0x17, 0xA4, 0x00, 0x14, 0xBF, 0x00, 0x44, 0xE4, 0x00, 0x24, 0xA4, 0x00, 0x2F, 0xBF, 0x00, 0x0C, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x17, 0xBF, 0x00, 0x74, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x17, 0xBF, 0x00, 0x14, 0xA0, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FCA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x0A, 0x00, 0x10, 0x09, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x09, 0x00, 0x0B, 0xF9, 0x00, 0x0A, 0x4A, 0x00, 0x0A, 0xEA, 0x00, 0x13, 0x54, 0x00, 0x12, 0x44, 0x00, 0x12, 0xCA, 0x80, 0x22, 0x11, 0x80, 0x24, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FD1, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x22, 0x10, 0x00, 0x1F, 0xBE, 0x00, 0x12, 0x44, 0x00, 0x42, 0x08, 0x00, 0x2F, 0xBE, 0x00, 0x0A, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x2F, 0xAA, 0x00, 0x22, 0x2A, 0x00, 0x66, 0x2A, 0x00, 0x27, 0x2A, 0x00, 0x2A, 0xAA, 0x00, 0x32, 0x14, 0x00, 0x22, 0x23, 0x00, 0x22, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FD2, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x21, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x15, 0xD2, 0x00, 0x05, 0x3F, 0x00, 0x45, 0x22, 0x00, 0x2F, 0xEA, 0x00, 0x01, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x6A, 0x00, 0x69, 0xAA, 0x00, 0x21, 0x2A, 0x00, 0x22, 0x08, 0x00, 0x24, 0x14, 0x00, 0x28, 0x23, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x92, 0x00, 0x09, 0x11, 0x00, 0x03, 0xFF, 0x80, 0x61, 0x11, 0x00, 0x31, 0xBB, 0x00, 0x11, 0x55, 0x00, 0x01, 0xBB, 0x00, 0x09, 0x11, 0x00, 0x09, 0xBB, 0x00, 0x19, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x31, 0x11, 0x00, 0x21, 0x11, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FD5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x48, 0x00, 0x02, 0xB2, 0x00, 0x09, 0x4C, 0x00, 0x08, 0x89, 0x00, 0x09, 0x77, 0x80, 0x13, 0x98, 0x00, 0x10, 0x00, 0x00, 0x12, 0x24, 0x80, 0x22, 0x24, 0x80, 0x24, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FD8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x0A, 0x20, 0x80, 0x02, 0x50, 0x80, 0x61, 0x45, 0x00, 0x32, 0x7C, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x20, 0x10, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FDA, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x09, 0x54, 0x80, 0x01, 0x75, 0x00, 0x00, 0x4A, 0x00, 0x20, 0xA9, 0x00, 0x11, 0x10, 0x80, 0x03, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x30, 0x00, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x10, 0x92, 0x00, 0x21, 0x11, 0x00, 0x26, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FDB, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x62, 0xFD, 0x00, 0x30, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x08, 0xA3, 0x00, 0x0B, 0x36, 0x00, 0x18, 0xD8, 0x00, 0x13, 0x34, 0x00, 0x30, 0xD3, 0x00, 0x27, 0x11, 0x80, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FDE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x60, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x33, 0xFF, 0x80, 0x20, 0x82, 0x00, 0x61, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FDF, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x27, 0xA3, 0x00, 0x12, 0xAC, 0x00, 0x02, 0xAA, 0x00, 0x04, 0xA9, 0x80, 0x09, 0xBE, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FE0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x09, 0xFF, 0x00, 0x08, 0x51, 0x00, 0x08, 0xAA, 0x00, 0x11, 0x4C, 0x00, 0x16, 0x9C, 0x00, 0x11, 0x2A, 0x00, 0x26, 0xC9, 0x00, 0x23, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FE1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x10, 0x80, 0x11, 0xD7, 0x00, 0x00, 0x10, 0x00, 0x01, 0xD7, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x21, 0x29, 0x00, 0x21, 0x2B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FE4, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x11, 0xDF, 0x80, 0x21, 0xD2, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FE8, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x82, 0x00, 0x08, 0x00, 0x00, 0x00, 0x82, 0x00, 0x61, 0x04, 0x00, 0x32, 0x49, 0x00, 0x11, 0x86, 0x00, 0x01, 0x45, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0x20, 0x80, 0x18, 0x10, 0x00, 0x11, 0x59, 0x00, 0x31, 0x49, 0x80, 0x23, 0x62, 0x80, 0x62, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FE9, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x4C, 0x00, 0x00, 0x90, 0x00, 0x21, 0xFF, 0x00, 0x13, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x86, 0x00, 0x20, 0x78, 0x00, 0x27, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FEB, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xF2, 0x00, 0x02, 0x44, 0x00, 0x03, 0xF7, 0x80, 0x22, 0x18, 0x00, 0x13, 0xF0, 0x00, 0x02, 0x40, 0x00, 0x0B, 0xF7, 0x80, 0x0A, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FEC, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x7C, 0x80, 0x10, 0x84, 0x00, 0x01, 0x32, 0x00, 0x02, 0x49, 0x00, 0x08, 0x86, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FEE, { 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x31, 0x54, 0x80, 0x19, 0x55, 0x00, 0x0B, 0x14, 0x00, 0x02, 0xFF, 0x80, 0x62, 0x22, 0x00, 0x36, 0x14, 0x00, 0x12, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x14, 0x00, 0x22, 0x36, 0x00, 0x22, 0x63, 0x00, 0x62, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FEF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0xA5, 0x00, 0x01, 0x6B, 0x00, 0x22, 0xB5, 0x00, 0x11, 0x39, 0x00, 0x00, 0x68, 0x00, 0x00, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FF0, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x21, 0x89, 0x00, 0x31, 0x1B, 0x00, 0x16, 0x12, 0x00, 0x02, 0xBF, 0x80, 0x41, 0x92, 0x00, 0x61, 0x12, 0x00, 0x22, 0x5F, 0x80, 0x07, 0xD2, 0x00, 0x11, 0x52, 0x00, 0x11, 0x12, 0x00, 0x15, 0x5F, 0x80, 0x35, 0x52, 0x00, 0x25, 0x52, 0x00, 0x21, 0x12, 0x00, 0x61, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FF1, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x21, 0xFF, 0x00, 0x10, 0x51, 0x00, 0x00, 0x96, 0x00, 0x01, 0x18, 0x00, 0x08, 0xFF, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x21, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FF3, { 0x00, 0x00, 0x00, 0x25, 0x14, 0x00, 0x37, 0xDF, 0x00, 0x15, 0x14, 0x00, 0x01, 0x04, 0x00, 0x0F, 0xDF, 0x80, 0x42, 0x8A, 0x00, 0x62, 0xCA, 0x80, 0x24, 0x93, 0x80, 0x00, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x33, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x63, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FF5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x00, 0x80, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x31, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x01, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x1B, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x20, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FF6, { 0x00, 0x00, 0x00, 0x27, 0xDF, 0x00, 0x34, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x04, 0x51, 0x00, 0x47, 0xDF, 0x00, 0x64, 0x01, 0x00, 0x24, 0x19, 0x00, 0x04, 0xF1, 0x00, 0x04, 0x21, 0x00, 0x15, 0xFD, 0x00, 0x14, 0x21, 0x00, 0x14, 0xF9, 0x00, 0x34, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0xF9, 0x00, 0x64, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0xAA, 0x00, 0x1B, 0x11, 0x80, 0x10, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FFA, { 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x37, 0x89, 0x00, 0x14, 0x8F, 0x80, 0x04, 0xB8, 0x00, 0x07, 0x8A, 0x00, 0x44, 0x84, 0x00, 0x64, 0x8A, 0x80, 0x27, 0xB1, 0x80, 0x04, 0x8A, 0x00, 0x14, 0x89, 0x00, 0x14, 0x8F, 0x80, 0x17, 0xB8, 0x00, 0x30, 0x0A, 0x00, 0x24, 0x84, 0x00, 0x24, 0x4A, 0x80, 0x68, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FFC, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x33, 0x23, 0x00, 0x1A, 0x3A, 0x00, 0x0A, 0xAA, 0x80, 0x01, 0x29, 0x00, 0x61, 0x39, 0x00, 0x32, 0x2A, 0x00, 0x12, 0xAA, 0x80, 0x03, 0xBB, 0x80, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x31, 0x93, 0x00, 0x23, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x6FFD, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x33, 0xEF, 0x80, 0x18, 0x82, 0x00, 0x0B, 0xEF, 0x80, 0x00, 0x82, 0x00, 0x61, 0x45, 0x00, 0x32, 0x28, 0x80, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x31, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x63, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x6FFE, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x2E, 0x00, 0x13, 0xF0, 0x80, 0x02, 0x3F, 0x80, 0x0A, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x11, 0x00, 0x14, 0x48, 0x80, 0x25, 0x42, 0x80, 0x2A, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7000, { 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x01, 0x49, 0x00, 0x09, 0x42, 0x80, 0x0A, 0x3E, 0x00, 0x18, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x33, 0x42, 0x00, 0x20, 0x3C, 0x00, 0x63, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7001, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x30, 0x00, 0x00, 0x4C, 0x00, 0x09, 0xFE, 0x00, 0x0F, 0x03, 0x80, 0x09, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x80, 0x11, 0x11, 0x00, 0x21, 0xFE, 0x00, 0x27, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7005, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0xAA, 0x80, 0x02, 0xCB, 0x00, 0x04, 0x92, 0x00, 0x21, 0x45, 0x00, 0x12, 0x28, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x14, 0x00, 0x20, 0x12, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7006, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7007, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x24, 0x00, 0x0A, 0xFF, 0x00, 0x02, 0x24, 0x00, 0x62, 0x3C, 0x00, 0x32, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x16, 0x91, 0x00, 0x34, 0xFF, 0x00, 0x2C, 0x42, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7009, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x60, 0x80, 0x01, 0x8F, 0x00, 0x21, 0x01, 0x00, 0x11, 0xEF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x41, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x12, 0x04, 0x80, 0x14, 0x12, 0x80, 0x10, 0x48, 0x80, 0x21, 0x21, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x700B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x00, 0x1F, 0x00, 0x21, 0xF0, 0x00, 0x11, 0x12, 0x00, 0x00, 0x94, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0xD6, 0x00, 0x0F, 0x11, 0x80, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x700D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x31, 0xFF, 0x80, 0x19, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x01, 0x49, 0x00, 0x61, 0x7F, 0x00, 0x31, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x01, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x19, 0xC7, 0x80, 0x13, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x26, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x700F, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x80, 0x0B, 0x7A, 0x80, 0x02, 0x2A, 0x80, 0x02, 0x2A, 0x80, 0x22, 0xAA, 0x80, 0x13, 0xCA, 0x80, 0x02, 0x52, 0x80, 0x08, 0xA2, 0x80, 0x09, 0x12, 0x80, 0x0B, 0xFA, 0x80, 0x14, 0x46, 0x80, 0x13, 0xFA, 0x80, 0x10, 0x52, 0x80, 0x11, 0x52, 0x80, 0x20, 0xF8, 0x80, 0x23, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7011, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x00, 0x44, 0x00, 0x01, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x11, 0x92, 0x00, 0x16, 0xBD, 0x80, 0x10, 0x54, 0x00, 0x21, 0x92, 0x00, 0x26, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7015, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x9F, 0x80, 0x00, 0x82, 0x00, 0x02, 0xE4, 0x00, 0x22, 0x8F, 0x00, 0x12, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x8F, 0x00, 0x08, 0x99, 0x00, 0x0A, 0x99, 0x00, 0x0A, 0xAF, 0x00, 0x15, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x8F, 0x00, 0x21, 0x09, 0x00, 0x26, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7017, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x34, 0x21, 0x00, 0x15, 0xFD, 0x00, 0x00, 0x20, 0x00, 0x41, 0xFC, 0x00, 0x60, 0x23, 0x00, 0x27, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x4A, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x22, 0x91, 0x00, 0x26, 0x85, 0x80, 0x6C, 0x7C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7018, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x2E, 0x80, 0x13, 0xF0, 0x00, 0x02, 0x3F, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x24, 0x55, 0x00, 0x24, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x701A, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x07, 0xFA, 0x00, 0x20, 0x89, 0x00, 0x13, 0xF0, 0x80, 0x02, 0x20, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x2D, 0x80, 0x0B, 0xF6, 0x80, 0x08, 0x84, 0x80, 0x17, 0xED, 0x80, 0x10, 0x96, 0x80, 0x10, 0xA4, 0x80, 0x20, 0x84, 0x80, 0x20, 0x8D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x701B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x0B, 0xA7, 0x00, 0x0A, 0xFD, 0x00, 0x0B, 0x95, 0x00, 0x12, 0xD7, 0x00, 0x13, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x22, 0xD5, 0x80, 0x25, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x701C, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xE2, 0x00, 0x00, 0x02, 0x00, 0x03, 0xEF, 0x80, 0x22, 0x2A, 0x80, 0x13, 0xEA, 0x80, 0x00, 0x0A, 0x80, 0x0F, 0xFF, 0x80, 0x0D, 0x5A, 0x80, 0x0D, 0x52, 0x00, 0x16, 0x72, 0x00, 0x14, 0x12, 0x00, 0x17, 0xF2, 0x80, 0x14, 0x93, 0x80, 0x24, 0x9C, 0x80, 0x24, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x701D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x3B, 0x80, 0x22, 0xEE, 0x00, 0x12, 0x22, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x77, 0x00, 0x0A, 0xAA, 0x80, 0x0B, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x48, 0x00, 0x12, 0x4F, 0x00, 0x12, 0x48, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x701E, { 0x00, 0x00, 0x00, 0x10, 0x83, 0x00, 0x08, 0x8D, 0x00, 0x07, 0xEA, 0x80, 0x00, 0x91, 0x00, 0x23, 0xE4, 0x00, 0x10, 0x8F, 0x00, 0x0F, 0xF5, 0x00, 0x00, 0x05, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x25, 0x00, 0x0B, 0xE5, 0x00, 0x12, 0x2F, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x6C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x701F, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x01, 0x24, 0x00, 0x03, 0xFE, 0x00, 0x20, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x0A, 0xA5, 0x00, 0x0B, 0xA7, 0x00, 0x0A, 0x21, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x21, 0x00, 0x13, 0xA7, 0x00, 0x22, 0xA5, 0x00, 0x24, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7020, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x32, 0xAA, 0x80, 0x1A, 0xAA, 0x80, 0x09, 0x45, 0x00, 0x02, 0x28, 0x80, 0x60, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x02, 0x22, 0x80, 0x08, 0xC4, 0x00, 0x08, 0x29, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x10, 0x80, 0x30, 0x92, 0x00, 0x21, 0x93, 0x00, 0x63, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7023, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0xE0, 0x00, 0x02, 0x9F, 0x80, 0x03, 0xE9, 0x00, 0x22, 0x46, 0x00, 0x15, 0x46, 0x00, 0x08, 0x89, 0x00, 0x01, 0x58, 0x80, 0x0A, 0x48, 0x00, 0x0B, 0xCF, 0x00, 0x08, 0x48, 0x00, 0x13, 0xCF, 0x00, 0x10, 0x48, 0x00, 0x13, 0xCF, 0x00, 0x20, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7026, { 0x00, 0x00, 0x00, 0x20, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x12, 0x1F, 0x80, 0x02, 0x05, 0x00, 0x05, 0x25, 0x00, 0x49, 0x46, 0x00, 0x63, 0xBF, 0x80, 0x25, 0x04, 0x00, 0x09, 0x08, 0x00, 0x01, 0x1F, 0x00, 0x13, 0x29, 0x00, 0x15, 0x89, 0x00, 0x19, 0x4F, 0x00, 0x31, 0x29, 0x00, 0x23, 0x09, 0x00, 0x66, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7027, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x08, 0x88, 0x00, 0x03, 0xEF, 0x80, 0x01, 0x48, 0x00, 0x21, 0x4F, 0x80, 0x17, 0xF0, 0x80, 0x00, 0x0F, 0x80, 0x0B, 0xE8, 0x00, 0x0A, 0x28, 0x00, 0x0B, 0xEF, 0x80, 0x12, 0x28, 0x00, 0x13, 0xE8, 0x00, 0x12, 0x2F, 0x80, 0x12, 0x28, 0x00, 0x22, 0x28, 0x80, 0x22, 0x6F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7028, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x03, 0xE9, 0x00, 0x00, 0x89, 0x00, 0x20, 0x96, 0x00, 0x13, 0xE0, 0x00, 0x02, 0xAF, 0x00, 0x0A, 0xA9, 0x00, 0x0A, 0xAF, 0x00, 0x0B, 0xE9, 0x00, 0x10, 0x8F, 0x00, 0x11, 0xC9, 0x00, 0x12, 0xAF, 0x00, 0x12, 0x80, 0x00, 0x24, 0x89, 0x00, 0x20, 0x90, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x702C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x3F, 0x80, 0x37, 0xC4, 0x00, 0x11, 0x1F, 0x00, 0x07, 0xD1, 0x00, 0x45, 0x51, 0x00, 0x65, 0x5F, 0x00, 0x25, 0x51, 0x00, 0x07, 0xD1, 0x00, 0x11, 0x1F, 0x00, 0x13, 0x11, 0x00, 0x13, 0x91, 0x00, 0x35, 0x5F, 0x00, 0x25, 0x4A, 0x00, 0x29, 0x1B, 0x00, 0x61, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x702F, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x09, 0x54, 0x80, 0x01, 0x75, 0x00, 0x00, 0x4A, 0x00, 0x20, 0xA9, 0x00, 0x11, 0x10, 0x80, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7030, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x12, 0x2A, 0x00, 0x02, 0x49, 0x00, 0x4E, 0xFF, 0x80, 0x68, 0x88, 0x80, 0x28, 0xDD, 0x80, 0x08, 0xAA, 0x80, 0x0E, 0xDD, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0xDD, 0x80, 0x32, 0xAA, 0x80, 0x26, 0xDD, 0x80, 0x24, 0x88, 0x80, 0x6C, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7032, { 0x00, 0x00, 0x00, 0x20, 0x84, 0x00, 0x31, 0xC4, 0x00, 0x13, 0x64, 0x00, 0x06, 0x37, 0x80, 0x41, 0xCD, 0x00, 0x60, 0x09, 0x00, 0x27, 0x75, 0x00, 0x05, 0x55, 0x00, 0x05, 0x57, 0x00, 0x17, 0x72, 0x00, 0x10, 0x02, 0x00, 0x12, 0x22, 0x00, 0x32, 0x27, 0x00, 0x27, 0x55, 0x00, 0x25, 0x55, 0x80, 0x68, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xEF, 0x00, 0x19, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x61, 0xEF, 0x00, 0x31, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x00, 0xAA, 0x00, 0x09, 0x11, 0x00, 0x08, 0x40, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x31, 0xE4, 0x00, 0x20, 0x3E, 0x00, 0x61, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7035, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x10, 0xA8, 0x00, 0x41, 0x24, 0x00, 0x27, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x70, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x04, 0x00, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7037, { 0x00, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x01, 0x29, 0x00, 0x06, 0x73, 0x00, 0x21, 0xA5, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x82, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7039, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0xEE, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x7C, 0x00, 0x60, 0x00, 0x00, 0x33, 0xBB, 0x80, 0x12, 0xAA, 0x80, 0x03, 0xBB, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x49, 0x00, 0x21, 0x49, 0x00, 0x61, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x703C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x61, 0xEF, 0x00, 0x30, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x64, 0x00, 0x31, 0xC5, 0x00, 0x20, 0x72, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x703E, { 0x00, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x0A, 0x28, 0x80, 0x03, 0xEF, 0x80, 0x02, 0x28, 0x80, 0x23, 0xEF, 0x80, 0x12, 0x10, 0x80, 0x03, 0xFF, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0xFE, 0x80, 0x0A, 0xD6, 0x80, 0x12, 0xBA, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x38, 0x80, 0x12, 0x54, 0x80, 0x22, 0x92, 0x80, 0x23, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7043, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x80, 0x6B, 0xAE, 0x80, 0x39, 0x24, 0x80, 0x0B, 0xAE, 0x80, 0x09, 0x24, 0x80, 0x6B, 0xAE, 0x80, 0x39, 0x24, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x20, 0x88, 0x00, 0x6F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7044, { 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x30, 0x84, 0x00, 0x18, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x60, 0x87, 0x00, 0x33, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x07, 0xFF, 0x80, 0x0A, 0x49, 0x00, 0x0B, 0xCF, 0x00, 0x1A, 0x49, 0x00, 0x13, 0xCF, 0x00, 0x32, 0x49, 0x00, 0x2F, 0xDF, 0x00, 0x60, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7048, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x32, 0x28, 0x80, 0x1B, 0xEF, 0x80, 0x0A, 0x28, 0x80, 0x03, 0xEF, 0x80, 0x62, 0x28, 0x80, 0x33, 0xEF, 0x80, 0x10, 0x44, 0x00, 0x00, 0x88, 0x00, 0x09, 0xFF, 0x80, 0x0B, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x21, 0x10, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7049, { 0x00, 0x00, 0x00, 0x05, 0x49, 0x00, 0x45, 0x4B, 0x00, 0x6A, 0x8A, 0x00, 0x2A, 0x9F, 0x80, 0x05, 0x52, 0x00, 0x45, 0x72, 0x00, 0x60, 0x12, 0x00, 0x27, 0xDF, 0x80, 0x04, 0x52, 0x00, 0x17, 0xD2, 0x00, 0x10, 0x12, 0x00, 0x17, 0xDF, 0x80, 0x35, 0x52, 0x00, 0x27, 0xD2, 0x00, 0x24, 0x32, 0x00, 0x63, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x704A, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x27, 0xDF, 0x00, 0x32, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x07, 0xDF, 0x80, 0x41, 0x86, 0x00, 0x62, 0xCA, 0x80, 0x24, 0x93, 0x80, 0x00, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x32, 0x49, 0x00, 0x23, 0x8F, 0x00, 0x22, 0x71, 0x00, 0x62, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x704B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x1A, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x63, 0xFF, 0x00, 0x32, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x0A, 0xAA, 0x80, 0x0B, 0x11, 0x80, 0x1A, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x33, 0xFF, 0x00, 0x24, 0x42, 0x00, 0x60, 0xFD, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x704C, { 0x00, 0x00, 0x00, 0x20, 0x44, 0x00, 0x10, 0x44, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x21, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x01, 0xEF, 0x00, 0x08, 0x90, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x704E, { 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x5F, 0xC4, 0x00, 0x35, 0x5F, 0x00, 0x1F, 0xC4, 0x00, 0x15, 0x44, 0x00, 0x5F, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x1F, 0xD9, 0x00, 0x00, 0x13, 0x80, 0x2F, 0xBC, 0x80, 0x28, 0x80, 0x00, 0x28, 0x9F, 0x00, 0x6F, 0x95, 0x00, 0x45, 0x15, 0x00, 0x47, 0xD5, 0x00, 0x5C, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x704F, { 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x1F, 0xBF, 0x00, 0x18, 0x88, 0x00, 0x4F, 0x92, 0x00, 0x28, 0xBF, 0x00, 0x2F, 0xA2, 0x00, 0x02, 0x2A, 0x00, 0x1F, 0xAA, 0x00, 0x10, 0x2A, 0x00, 0x2F, 0xAA, 0x00, 0x68, 0xAA, 0x00, 0x2F, 0xAA, 0x00, 0x22, 0x10, 0x00, 0x2A, 0x94, 0x00, 0x32, 0x23, 0x00, 0x26, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7050, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0xAA, 0x80, 0x02, 0xCB, 0x00, 0x04, 0x92, 0x00, 0x21, 0x45, 0x00, 0x12, 0x28, 0x80, 0x03, 0xFF, 0x80, 0x02, 0x30, 0x80, 0x08, 0x48, 0x00, 0x09, 0x86, 0x00, 0x0E, 0xF9, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x20, 0xA8, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7051, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x02, 0xAA, 0x80, 0x22, 0x38, 0x80, 0x13, 0xFF, 0x80, 0x02, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x44, 0x80, 0x0B, 0xFF, 0x80, 0x12, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x24, 0xB8, 0x80, 0x29, 0xCF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7054, { 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x27, 0xF3, 0x80, 0x35, 0x54, 0x80, 0x17, 0xF9, 0x00, 0x05, 0x52, 0x00, 0x47, 0xFF, 0x80, 0x60, 0x0A, 0x80, 0x27, 0xFA, 0x80, 0x00, 0x0A, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x33, 0xE8, 0x00, 0x21, 0x48, 0x80, 0x21, 0xF8, 0x80, 0x67, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7055, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x80, 0x41, 0x05, 0x80, 0x2F, 0xE5, 0x00, 0x20, 0x0F, 0x80, 0x0A, 0xBA, 0x00, 0x49, 0x2A, 0x00, 0x2A, 0xAA, 0x00, 0x2F, 0xEF, 0x00, 0x01, 0x0A, 0x00, 0x2F, 0xEA, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0xAF, 0x00, 0x2F, 0x6A, 0x00, 0x68, 0x2A, 0x00, 0x48, 0x2A, 0x00, 0x48, 0x6F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7058, { 0x00, 0x00, 0x00, 0x11, 0x45, 0x00, 0x0F, 0xF5, 0x00, 0x01, 0x4A, 0x00, 0x01, 0xCF, 0x80, 0x20, 0x9A, 0x00, 0x13, 0xEA, 0x00, 0x02, 0xAA, 0x00, 0x03, 0xEF, 0x80, 0x08, 0x8A, 0x00, 0x0B, 0xEA, 0x00, 0x08, 0x8F, 0x80, 0x17, 0xFA, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x22, 0x2F, 0x80, 0x2C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x705D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x02, 0x22, 0x00, 0x03, 0xE4, 0x00, 0x22, 0x2F, 0x00, 0x13, 0xE9, 0x00, 0x00, 0x89, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x09, 0x00, 0x0B, 0xE9, 0x00, 0x0A, 0x2F, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x89, 0x00, 0x12, 0xAF, 0x00, 0x24, 0x99, 0x00, 0x21, 0x90, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x705E, { 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x37, 0xFF, 0x80, 0x14, 0x20, 0x80, 0x05, 0xAE, 0x80, 0x40, 0x20, 0x00, 0x61, 0xAE, 0x00, 0x21, 0x40, 0x00, 0x07, 0xF7, 0x80, 0x11, 0x44, 0x80, 0x13, 0xE7, 0x80, 0x12, 0xA4, 0x80, 0x33, 0xE7, 0x80, 0x20, 0x84, 0x80, 0x27, 0xF4, 0x80, 0x60, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7063, { 0x00, 0x00, 0x00, 0x11, 0x32, 0x00, 0x09, 0x02, 0x00, 0x02, 0xFD, 0x00, 0x05, 0x85, 0x00, 0x22, 0xBA, 0x80, 0x13, 0xFF, 0x80, 0x01, 0x42, 0x00, 0x0B, 0x36, 0x80, 0x0D, 0x36, 0x80, 0x0B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x24, 0x00, 0x80, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7064, { 0x00, 0x00, 0x00, 0x04, 0x62, 0x00, 0x48, 0x04, 0x00, 0x2A, 0xFD, 0x00, 0x24, 0x02, 0x00, 0x09, 0x64, 0x80, 0x5F, 0x0F, 0x80, 0x25, 0x62, 0x80, 0x24, 0x02, 0x00, 0x0E, 0x77, 0x00, 0x15, 0x5A, 0x80, 0x24, 0x72, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x70, 0x00, 0x43, 0xAE, 0x00, 0x4E, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7065, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x83, 0x00, 0x3E, 0xE6, 0x00, 0x0C, 0x98, 0x00, 0x71, 0x87, 0x80, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x08, 0x88, 0x80, 0x7B, 0x7B, 0x00, 0x1E, 0x1E, 0x00, 0x69, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x706B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x41, 0x00, 0x04, 0x42, 0x00, 0x04, 0x44, 0x00, 0x08, 0x48, 0x00, 0x10, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x706C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x44, 0x00, 0x12, 0x66, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x706D, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x90, 0x00, 0x10, 0xA0, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x08, 0x07, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x706E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x82, 0x00, 0x09, 0xC6, 0x00, 0x19, 0x4C, 0x00, 0x13, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x72, 0x27, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x706F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x7F, 0x80, 0x09, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x68, 0x04, 0x00, 0x48, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x14, 0x04, 0x00, 0x16, 0x04, 0x00, 0x32, 0x04, 0x00, 0x23, 0x04, 0x00, 0x60, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7070, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x09, 0x21, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x21, 0x04, 0x00, 0x22, 0x02, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x08, 0x82, 0x00, 0x09, 0xC6, 0x00, 0x19, 0x4C, 0x00, 0x13, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7076, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x29, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x14, 0x08, 0x00, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x20, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7078, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x30, 0x30, 0x00, 0x00, 0x48, 0x00, 0x01, 0x86, 0x00, 0x06, 0x01, 0x80, 0x38, 0x42, 0x00, 0x04, 0x44, 0x00, 0x08, 0x48, 0x00, 0x10, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x707C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x80, 0x80, 0x28, 0x80, 0x80, 0x09, 0x00, 0x80, 0x08, 0x7C, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x14, 0x00, 0x80, 0x12, 0x01, 0x00, 0x22, 0x01, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x707D, { 0x00, 0x00, 0x00, 0x04, 0x21, 0x00, 0x08, 0x42, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x08, 0x42, 0x00, 0x04, 0x21, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x04, 0x44, 0x00, 0x04, 0x48, 0x00, 0x08, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x707E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x08, 0x86, 0x00, 0x08, 0x8C, 0x00, 0x19, 0xC0, 0x00, 0x11, 0x40, 0x00, 0x03, 0x60, 0x00, 0x02, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x707F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x05, 0x08, 0x00, 0x15, 0x08, 0x00, 0x16, 0x49, 0x00, 0x14, 0x49, 0x00, 0x24, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x09, 0x49, 0x00, 0x11, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7080, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x2C, 0x42, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x0C, 0x92, 0x00, 0x12, 0xA2, 0x00, 0x11, 0x22, 0x00, 0x22, 0x42, 0x00, 0x40, 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xA0, 0x00, 0x03, 0x20, 0x80, 0x0E, 0x31, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7085, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x04, 0x42, 0x00, 0x08, 0x44, 0x00, 0x10, 0xA8, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7086, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x68, 0x22, 0x00, 0x48, 0x36, 0x00, 0x08, 0x14, 0x00, 0x08, 0x1C, 0x00, 0x1C, 0x08, 0x00, 0x14, 0x1C, 0x00, 0x16, 0x14, 0x00, 0x32, 0x36, 0x00, 0x20, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7089, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0x00, 0x00, 0x2B, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x68, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x14, 0x40, 0x00, 0x16, 0x40, 0x00, 0x32, 0xC0, 0x00, 0x20, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x708A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x7F, 0x80, 0x2C, 0x51, 0x00, 0x28, 0x92, 0x00, 0x29, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x14, 0x24, 0x00, 0x14, 0x42, 0x00, 0x10, 0x81, 0x00, 0x23, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x708E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x41, 0x00, 0x04, 0x42, 0x00, 0x08, 0x44, 0x00, 0x10, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x43, 0x80, 0x04, 0x42, 0x00, 0x04, 0x44, 0x00, 0x08, 0x48, 0x00, 0x10, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7092, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0x0A, 0x00, 0x0A, 0x49, 0x00, 0x2C, 0x48, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x00, 0x09, 0x09, 0x00, 0x08, 0x09, 0x00, 0x08, 0x1A, 0x00, 0x08, 0x02, 0x00, 0x08, 0x04, 0x00, 0x14, 0x08, 0x00, 0x14, 0x30, 0x00, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7094, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x68, 0x12, 0x00, 0x48, 0x12, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x1C, 0x28, 0x00, 0x14, 0x2C, 0x00, 0x16, 0x64, 0x00, 0x32, 0x46, 0x00, 0x20, 0xC3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7095, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x68, 0x3E, 0x00, 0x48, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x14, 0x22, 0x00, 0x16, 0x62, 0x00, 0x32, 0x42, 0x80, 0x20, 0xC2, 0x80, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7096, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x09, 0x80, 0x08, 0x0F, 0x00, 0x0A, 0xF8, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x49, 0x00, 0x68, 0x49, 0x00, 0x48, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0x08, 0x80, 0x20, 0x09, 0x80, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7097, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x82, 0x00, 0x08, 0x86, 0x00, 0x19, 0xCC, 0x00, 0x11, 0x40, 0x00, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7098, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x78, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x28, 0x7F, 0x80, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x82, 0x00, 0x24, 0x82, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7099, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x02, 0x88, 0x00, 0x06, 0x50, 0x00, 0x19, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x40, 0x00, 0x3C, 0x41, 0x00, 0x04, 0x42, 0x00, 0x04, 0x44, 0x00, 0x08, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x709A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x80, 0x24, 0x91, 0x00, 0x24, 0x92, 0x00, 0x25, 0x14, 0x00, 0x25, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x709B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x82, 0x00, 0x09, 0xC6, 0x00, 0x19, 0x4C, 0x00, 0x13, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x01, 0x20, 0x00, 0x03, 0x20, 0x00, 0x06, 0x23, 0x00, 0x1C, 0x3E, 0x00, 0x74, 0x60, 0x00, 0x04, 0x20, 0x80, 0x04, 0x31, 0x80, 0x04, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x709C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x2C, 0x24, 0x00, 0x29, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x22, 0x24, 0x00, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x709D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x50, 0x00, 0x2A, 0x88, 0x00, 0x2C, 0x88, 0x00, 0x29, 0x07, 0x00, 0x4A, 0xFA, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x14, 0xA8, 0x00, 0x12, 0x92, 0x00, 0x22, 0x82, 0x00, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70A1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x48, 0x00, 0x28, 0x4F, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x48, 0x00, 0x14, 0x48, 0x00, 0x15, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70A4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0A, 0x21, 0x00, 0x2C, 0x21, 0x00, 0x28, 0x42, 0x00, 0x28, 0x8C, 0x00, 0x0B, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x14, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70AB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x20, 0x00, 0x28, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x0C, 0x41, 0x00, 0x14, 0x9F, 0x80, 0x15, 0xE0, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70AC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x80, 0x00, 0x0A, 0x80, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x80, 0x00, 0x14, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70AD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x12, 0x42, 0x00, 0x12, 0x44, 0x00, 0x14, 0x68, 0x00, 0x14, 0xA0, 0x00, 0x10, 0x90, 0x00, 0x21, 0x08, 0x00, 0x22, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70AE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0xC1, 0x00, 0x2A, 0x81, 0x00, 0x2C, 0xF9, 0x00, 0x69, 0x89, 0x00, 0x48, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0xFB, 0x00, 0x1C, 0x82, 0x00, 0x14, 0x8E, 0x00, 0x16, 0x80, 0x00, 0x32, 0x80, 0x80, 0x20, 0xC1, 0x80, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70AF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x0A, 0x80, 0x80, 0x0A, 0x80, 0x80, 0x2A, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x28, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x14, 0x80, 0x80, 0x14, 0x80, 0x80, 0x20, 0x80, 0x80, 0x20, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70B0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x70, 0x22, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xE6, 0x00, 0x10, 0x04, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x00, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70B1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x06, 0x00, 0x0F, 0xFF, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x19, 0xC6, 0x00, 0x33, 0x6C, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70B3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x2C, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x08, 0x94, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xC2, 0x80, 0x08, 0x80, 0x80, 0x14, 0x80, 0x80, 0x12, 0x80, 0x80, 0x22, 0x80, 0x80, 0x20, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70B4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x68, 0x92, 0x00, 0x48, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x1C, 0x28, 0x00, 0x14, 0x2C, 0x00, 0x16, 0x64, 0x00, 0x32, 0x46, 0x00, 0x20, 0xC3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70B7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x00, 0x00, 0x2D, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70B8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x7F, 0x80, 0x0A, 0xA0, 0x00, 0x2B, 0x20, 0x00, 0x28, 0x20, 0x00, 0x28, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x20, 0x00, 0x14, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70B9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70BA, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x19, 0x00, 0x00, 0x09, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x0C, 0x02, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0x00, 0x80, 0x60, 0x08, 0x80, 0x0A, 0x44, 0x80, 0x09, 0x25, 0x80, 0x11, 0x21, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70BB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x40, 0x00, 0x2C, 0x40, 0x00, 0x48, 0x84, 0x00, 0x09, 0xFE, 0x00, 0x0A, 0x84, 0x00, 0x08, 0x84, 0x00, 0x14, 0x84, 0x00, 0x12, 0x84, 0x00, 0x22, 0x84, 0x00, 0x20, 0xFC, 0x00, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70BC, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x40, 0x00, 0x2C, 0x50, 0x00, 0x2B, 0xF8, 0x00, 0x28, 0x90, 0x00, 0x48, 0x90, 0x00, 0x09, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x14, 0x54, 0x00, 0x12, 0x93, 0x00, 0x21, 0x11, 0x00, 0x42, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70BD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x7F, 0x00, 0x05, 0x42, 0x00, 0x16, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x24, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x24, 0x00, 0x09, 0x62, 0x00, 0x10, 0x83, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70C0, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x56, 0x00, 0x2C, 0x58, 0x00, 0x48, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x20, 0x50, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70C1, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xF0, 0x00, 0x0B, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x29, 0x10, 0x00, 0x29, 0x12, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x54, 0x00, 0x14, 0x92, 0x00, 0x13, 0x11, 0x00, 0x22, 0x11, 0x00, 0x40, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70C2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x50, 0x00, 0x2C, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x48, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x20, 0x02, 0x00, 0x47, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70C3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x2C, 0x10, 0x00, 0x28, 0x2C, 0x00, 0x28, 0xC3, 0x00, 0x4B, 0x01, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x12, 0x10, 0x00, 0x20, 0x12, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70C8, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xE9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0F, 0xC9, 0x00, 0x08, 0x49, 0x00, 0x14, 0x89, 0x00, 0x22, 0x89, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x01, 0x00, 0x08, 0x07, 0x00, 0x30, 0x00, 0x00, 0x09, 0x11, 0x00, 0x10, 0x89, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70CA, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x08, 0x63, 0x00, 0x08, 0x22, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x68, 0x08, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x32, 0x08, 0x00, 0x20, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70CB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x38, 0x00, 0x18, 0x54, 0x00, 0x28, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70CF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x04, 0x80, 0x00, 0x22, 0x80, 0x12, 0x10, 0x80, 0x11, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70D1, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0x94, 0x80, 0x0A, 0xD5, 0x80, 0x2A, 0x57, 0x00, 0x2A, 0x14, 0x00, 0x68, 0x14, 0x00, 0x48, 0x14, 0x00, 0x08, 0x17, 0x00, 0x08, 0x75, 0x80, 0x1C, 0xD4, 0x80, 0x14, 0x14, 0x00, 0x16, 0x34, 0x00, 0x32, 0x24, 0x80, 0x20, 0x64, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70D3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x68, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x08, 0x00, 0x12, 0x08, 0x00, 0x30, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70D4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x0A, 0x81, 0x00, 0x2A, 0xBD, 0x00, 0x2A, 0x81, 0x00, 0x68, 0x81, 0x00, 0x48, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x1C, 0xA5, 0x00, 0x14, 0xBD, 0x00, 0x16, 0x81, 0x00, 0x32, 0x81, 0x00, 0x20, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70D5, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x26, 0x00, 0x00, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x2F, 0xA0, 0x00, 0x20, 0x22, 0x00, 0x22, 0x32, 0x00, 0x2A, 0x56, 0x00, 0x2A, 0x94, 0x00, 0x22, 0x1C, 0x00, 0x27, 0x08, 0x00, 0x25, 0x9C, 0x80, 0x6C, 0xB6, 0x80, 0x58, 0x63, 0x80, 0x40, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70D6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x93, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x04, 0x11, 0x00, 0x24, 0x59, 0x00, 0x24, 0xCB, 0x00, 0x65, 0x8A, 0x00, 0x4E, 0x0E, 0x00, 0x0B, 0x04, 0x00, 0x19, 0x8E, 0x80, 0x30, 0x3B, 0x80, 0x61, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70D8, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x44, 0x00, 0x12, 0x82, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70D9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x29, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2C, 0x18, 0x00, 0x08, 0x26, 0x00, 0x08, 0x41, 0x80, 0x09, 0x80, 0x00, 0x0E, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0x82, 0x00, 0x12, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70DB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x12, 0x00, 0x2A, 0xFF, 0x00, 0x2C, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x14, 0x10, 0x00, 0x12, 0x12, 0x00, 0x22, 0x1E, 0x00, 0x41, 0xF1, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70DC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x68, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x16, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x30, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x61, 0x00, 0x1F, 0x52, 0x00, 0x01, 0x54, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x31, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70DF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x94, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xC1, 0x80, 0x0C, 0x80, 0x80, 0x12, 0x80, 0x80, 0x12, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70E4, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x12, 0x00, 0x2A, 0x14, 0x00, 0x2D, 0xFF, 0x80, 0x68, 0x10, 0x00, 0x48, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x14, 0x7F, 0x00, 0x16, 0x01, 0x00, 0x32, 0x01, 0x00, 0x20, 0x03, 0x00, 0x60, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70E6, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x44, 0x00, 0x2C, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x28, 0x94, 0x00, 0x48, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x12, 0x40, 0x00, 0x22, 0x48, 0x00, 0x40, 0x86, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70E7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x7E, 0x00, 0x2F, 0xC0, 0x00, 0x28, 0x28, 0x00, 0x28, 0x11, 0x00, 0x48, 0x69, 0x00, 0x0B, 0x87, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x14, 0x90, 0x00, 0x12, 0x90, 0x00, 0x22, 0x91, 0x00, 0x41, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70E8, { 0x00, 0x00, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x92, 0x00, 0x2A, 0x94, 0x00, 0x2C, 0x98, 0x00, 0x29, 0xB2, 0x00, 0x4A, 0x8E, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x14, 0x20, 0x00, 0x12, 0x20, 0x00, 0x22, 0x20, 0x00, 0x20, 0x20, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70E9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x48, 0x00, 0x2C, 0x84, 0x00, 0x29, 0x13, 0x00, 0x2A, 0xFA, 0x00, 0x48, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x14, 0x20, 0x00, 0x12, 0x48, 0x00, 0x20, 0x84, 0x00, 0x41, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70EB, { 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x08, 0x20, 0x00, 0x20, 0x42, 0x00, 0x11, 0xFF, 0x00, 0x04, 0x92, 0x00, 0x38, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x2A, 0x00, 0x0A, 0x44, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x05, 0x50, 0x00, 0x09, 0x40, 0x00, 0x02, 0x30, 0x00, 0x0C, 0x0E, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70EC, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x84, 0x00, 0x2C, 0xFC, 0x00, 0x28, 0x94, 0x00, 0x28, 0x90, 0x00, 0x49, 0x08, 0x00, 0x09, 0x07, 0x00, 0x0A, 0x62, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x14, 0x60, 0x00, 0x22, 0x18, 0x00, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70ED, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x24, 0x00, 0x05, 0x24, 0x00, 0x0E, 0x64, 0x00, 0x34, 0x24, 0x00, 0x04, 0x54, 0x00, 0x04, 0x45, 0x00, 0x14, 0x85, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x00, 0x22, 0x23, 0x00, 0x42, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70EF, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x6C, 0x00, 0x2C, 0x82, 0x00, 0x28, 0x40, 0x00, 0x2B, 0xFF, 0x00, 0x48, 0x50, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x92, 0x00, 0x16, 0x92, 0x00, 0x14, 0x9A, 0x00, 0x22, 0x94, 0x00, 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70F1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x0A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x28, 0xC7, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x14, 0xBD, 0x00, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70F7, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x01, 0x00, 0x2D, 0x0A, 0x00, 0x28, 0xFC, 0x00, 0x28, 0x00, 0x00, 0x48, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x48, 0x00, 0x12, 0x89, 0x00, 0x22, 0x89, 0x00, 0x41, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x70F9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x11, 0x09, 0x00, 0x10, 0x84, 0x80, 0x20, 0x84, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70FA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x68, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x80, 0x08, 0x89, 0x80, 0x1C, 0x8B, 0x00, 0x14, 0x8C, 0x00, 0x16, 0x84, 0x00, 0x32, 0x86, 0x00, 0x20, 0xF3, 0x00, 0x63, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x70FD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0xC2, 0x00, 0x2D, 0x24, 0x00, 0x28, 0x18, 0x00, 0x28, 0x2C, 0x00, 0x08, 0xD3, 0x80, 0x0F, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7103, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x68, 0xFF, 0x80, 0x48, 0x24, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x1D, 0xA5, 0x80, 0x15, 0x24, 0x80, 0x16, 0x24, 0x00, 0x32, 0x64, 0x00, 0x20, 0x44, 0x00, 0x60, 0xCC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x89, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7105, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x08, 0x00, 0x68, 0x08, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x16, 0x41, 0x00, 0x32, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7106, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x09, 0x41, 0x00, 0x2B, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x68, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x14, 0x41, 0x00, 0x16, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7107, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x0A, 0x88, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x68, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x32, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x02, 0x7E, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x04, 0x80, 0x00, 0x22, 0x80, 0x11, 0x10, 0x80, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x710A, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x15, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x710B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x00, 0x82, 0x00, 0x08, 0x86, 0x00, 0x19, 0xCC, 0x00, 0x11, 0x60, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x710C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x9F, 0x80, 0x2D, 0xE4, 0x80, 0x28, 0x24, 0x00, 0x28, 0x44, 0x80, 0x29, 0xA7, 0x80, 0x0E, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x24, 0x00, 0x16, 0x18, 0x00, 0x14, 0x28, 0x00, 0x20, 0xC6, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x710F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xBF, 0x00, 0x3E, 0x91, 0x00, 0x22, 0x9B, 0x00, 0x22, 0x8E, 0x00, 0x22, 0x84, 0x00, 0x3E, 0x8E, 0x00, 0x00, 0x9B, 0x00, 0x03, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7110, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x44, 0x00, 0x2B, 0xFE, 0x00, 0x2C, 0x84, 0x00, 0x28, 0x84, 0x00, 0x48, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x12, 0x82, 0x00, 0x22, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7113, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x50, 0x00, 0x2A, 0x88, 0x00, 0x2C, 0xC8, 0x00, 0x29, 0x24, 0x00, 0x4A, 0xFB, 0x00, 0x0C, 0x0A, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x13, 0x04, 0x00, 0x23, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7114, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x2B, 0x63, 0x00, 0x2A, 0xC6, 0x00, 0x28, 0x04, 0x00, 0x68, 0x9F, 0x80, 0x48, 0x90, 0x80, 0x08, 0x90, 0x80, 0x1C, 0x90, 0x80, 0x14, 0x9F, 0x80, 0x16, 0x90, 0x80, 0x32, 0x90, 0x80, 0x20, 0x90, 0x80, 0x60, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7115, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7C, 0x00, 0x0A, 0x88, 0x00, 0x2D, 0x12, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0B, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x12, 0x28, 0x00, 0x20, 0x44, 0x00, 0x40, 0x83, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7116, { 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x11, 0x7F, 0x00, 0x10, 0x02, 0x00, 0x12, 0x02, 0x00, 0x56, 0x22, 0x00, 0x5A, 0x12, 0x00, 0x52, 0x52, 0x00, 0x12, 0x42, 0x00, 0x12, 0xCA, 0x00, 0x13, 0x56, 0x00, 0x12, 0x52, 0x00, 0x12, 0x72, 0x00, 0x2A, 0x02, 0x00, 0x26, 0x02, 0x00, 0x42, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7118, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x21, 0x10, 0x00, 0x40, 0x50, 0x00, 0x00, 0x20, 0x00, 0x12, 0x44, 0x00, 0x11, 0x22, 0x00, 0x21, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7119, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x82, 0x00, 0x2C, 0x44, 0x00, 0x28, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x711A, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x06, 0x0E, 0x00, 0x0D, 0x15, 0x00, 0x14, 0xA4, 0x80, 0x24, 0x44, 0x00, 0x04, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x04, 0x44, 0x00, 0x08, 0xA8, 0x00, 0x11, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x711C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x68, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x88, 0x00, 0x1C, 0x8B, 0x00, 0x14, 0xEE, 0x00, 0x16, 0x88, 0x00, 0x32, 0x88, 0x80, 0x20, 0xE9, 0x80, 0x61, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x711E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0F, 0x80, 0x09, 0xF8, 0x00, 0x14, 0x08, 0x00, 0x12, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7120, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x2B, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x68, 0x77, 0x00, 0x48, 0xD5, 0x80, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0x08, 0x00, 0x20, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7121, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x29, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7126, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x28, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x11, 0x00, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x712B, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x30, 0x00, 0x68, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x1C, 0xB9, 0x00, 0x14, 0xAD, 0x00, 0x16, 0xC5, 0x00, 0x32, 0x81, 0x00, 0x20, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x712D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x29, 0x52, 0x00, 0x2A, 0x54, 0x00, 0x14, 0x28, 0x00, 0x22, 0x44, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x40, 0x02, 0x00, 0x40, 0x02, 0x00, 0x07, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x21, 0x00, 0x18, 0x33, 0x00, 0x70, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x712F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0F, 0x80, 0x09, 0x08, 0x00, 0x2B, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x68, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7130, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x81, 0x00, 0x0A, 0x81, 0x00, 0x29, 0x01, 0x00, 0x2A, 0x0E, 0x00, 0x28, 0x00, 0x00, 0x28, 0x30, 0x00, 0x08, 0xC7, 0x00, 0x08, 0x81, 0x00, 0x08, 0xEF, 0x00, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7131, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x82, 0x00, 0x08, 0x86, 0x00, 0x19, 0xCC, 0x00, 0x11, 0x60, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x04, 0x08, 0x00, 0x15, 0xA9, 0x00, 0x37, 0x2B, 0x00, 0x24, 0x4A, 0x00, 0x0E, 0x1C, 0x00, 0x1B, 0x16, 0x00, 0x31, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7136, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x0A, 0x00, 0x07, 0xE9, 0x00, 0x04, 0x48, 0x00, 0x0A, 0x7F, 0x80, 0x09, 0x88, 0x00, 0x14, 0x94, 0x00, 0x23, 0x14, 0x00, 0x02, 0x22, 0x00, 0x04, 0x41, 0x00, 0x08, 0x80, 0x80, 0x30, 0x00, 0x00, 0x01, 0x11, 0x00, 0x09, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x08, 0x82, 0x00, 0x09, 0xC6, 0x00, 0x19, 0x4C, 0x00, 0x13, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x713C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0xFF, 0x80, 0x68, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x16, 0x24, 0x00, 0x32, 0x64, 0x80, 0x20, 0xC4, 0x80, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7141, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x68, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x16, 0xC7, 0x00, 0x32, 0x80, 0x00, 0x20, 0x80, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7145, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x11, 0xDE, 0x00, 0x11, 0x12, 0x00, 0x15, 0x12, 0x00, 0x55, 0xD2, 0x00, 0x59, 0x23, 0x80, 0x51, 0x00, 0x00, 0x51, 0xC0, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x1B, 0x00, 0x39, 0xCE, 0x00, 0x2B, 0x04, 0x00, 0x2D, 0x0E, 0x00, 0x65, 0x1B, 0x00, 0x41, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7146, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x21, 0x00, 0x15, 0x21, 0x00, 0x55, 0x21, 0x00, 0x59, 0xEF, 0x00, 0x51, 0x00, 0x00, 0x51, 0x1F, 0x00, 0x11, 0xE9, 0x00, 0x11, 0x0B, 0x00, 0x11, 0x0A, 0x00, 0x39, 0xEE, 0x00, 0x29, 0x04, 0x00, 0x2D, 0x0E, 0x00, 0x65, 0x1B, 0x00, 0x41, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7147, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7149, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x2C, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0x93, 0x00, 0x09, 0x55, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x18, 0x00, 0x14, 0x34, 0x00, 0x14, 0x52, 0x00, 0x14, 0x91, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x714A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x0C, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x714B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x50, 0xFE, 0x00, 0x50, 0x10, 0x00, 0x10, 0x90, 0x00, 0x11, 0xFF, 0x00, 0x13, 0x10, 0x00, 0x38, 0xFE, 0x00, 0x2C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x714C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x714E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x91, 0x00, 0x14, 0x91, 0x00, 0x12, 0x91, 0x00, 0x10, 0x91, 0x00, 0x14, 0x91, 0x00, 0x12, 0x91, 0x00, 0x11, 0x83, 0x00, 0x00, 0x00, 0x00, 0x12, 0x11, 0x00, 0x11, 0x08, 0x80, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7150, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x44, 0x00, 0x0C, 0x54, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x14, 0x28, 0x00, 0x14, 0x44, 0x00, 0x14, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7152, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x68, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x48, 0x00, 0x16, 0x48, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x22, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x2B, 0xA1, 0x00, 0x28, 0xA1, 0x00, 0x28, 0xBF, 0x00, 0x2B, 0xA0, 0x00, 0x2A, 0x20, 0x00, 0x22, 0x20, 0x80, 0x22, 0x31, 0x80, 0x3F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7156, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF1, 0x00, 0x08, 0x48, 0x80, 0x0A, 0x84, 0x00, 0x2D, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC2, 0x00, 0x15, 0x24, 0x00, 0x16, 0x18, 0x00, 0x14, 0x6C, 0x00, 0x23, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7157, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x55, 0x24, 0x80, 0x59, 0x24, 0x80, 0x51, 0x24, 0x80, 0x51, 0x24, 0x80, 0x11, 0x25, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x28, 0x28, 0x00, 0x2C, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x43, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7159, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x0C, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x715A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x80, 0x00, 0x22, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x18, 0x86, 0x00, 0x11, 0xCC, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x715C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x14, 0x82, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x715E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x07, 0x88, 0x00, 0x08, 0x9F, 0x80, 0x11, 0x11, 0x00, 0x22, 0x2A, 0x00, 0x1F, 0xCA, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x8A, 0x00, 0x1F, 0x91, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7160, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x9E, 0x00, 0x68, 0x80, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x54, 0x00, 0x16, 0x54, 0x00, 0x12, 0xD6, 0x00, 0x30, 0x93, 0x00, 0x21, 0x91, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7162, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x29, 0x52, 0x00, 0x2A, 0x54, 0x00, 0x14, 0x28, 0x00, 0x22, 0x44, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x40, 0x02, 0x00, 0x40, 0x02, 0x00, 0x3F, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xE8, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7164, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2C, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x14, 0x54, 0x00, 0x12, 0x92, 0x00, 0x11, 0x11, 0x00, 0x22, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7165, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x7E, 0x00, 0x0A, 0x84, 0x00, 0x0B, 0x08, 0x00, 0x28, 0xFF, 0x00, 0x28, 0xA5, 0x00, 0x28, 0xA5, 0x00, 0x08, 0xC7, 0x00, 0x08, 0x91, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x14, 0x28, 0x00, 0x14, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7166, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x80, 0x80, 0x13, 0x00, 0x80, 0x1E, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x1E, 0x01, 0x00, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x08, 0x88, 0x80, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x46, 0x00, 0x11, 0x80, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7168, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x15, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x51, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x91, 0x00, 0x38, 0x9B, 0x00, 0x2C, 0x8A, 0x00, 0x24, 0x8C, 0x00, 0x60, 0xE6, 0x00, 0x43, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7169, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x09, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x14, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x42, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x716C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x11, 0x80, 0x0A, 0x22, 0x80, 0x14, 0xC4, 0x80, 0x15, 0x08, 0x80, 0x14, 0x31, 0x00, 0x20, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x716E, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x42, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x68, 0x00, 0x01, 0x84, 0x00, 0x07, 0xFE, 0x00, 0x3C, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x02, 0x21, 0x00, 0x11, 0x10, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7172, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x05, 0xFE, 0x00, 0x05, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x70, 0x00, 0x08, 0xA8, 0x00, 0x0B, 0x27, 0x00, 0x08, 0xA0, 0x00, 0x04, 0x88, 0x00, 0x04, 0x90, 0x00, 0x09, 0x60, 0x00, 0x02, 0x20, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7173, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x92, 0x00, 0x17, 0xF2, 0x00, 0x54, 0x92, 0x00, 0x58, 0x9E, 0x00, 0x50, 0x92, 0x00, 0x13, 0xD2, 0x00, 0x12, 0x52, 0x00, 0x12, 0x5E, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x2B, 0xD2, 0x00, 0x24, 0x22, 0x00, 0x40, 0x4A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7178, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x2D, 0xFE, 0x00, 0x29, 0x00, 0x00, 0x49, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x14, 0xFE, 0x00, 0x12, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x20, 0xAA, 0x00, 0x40, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7179, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x24, 0x00, 0x51, 0xFF, 0x80, 0x50, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x11, 0xFF, 0x80, 0x38, 0x91, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x81, 0x00, 0x64, 0x81, 0x00, 0x40, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x717A, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x0A, 0x44, 0x00, 0x09, 0x44, 0x00, 0x2B, 0x7C, 0x00, 0x2C, 0x44, 0x00, 0x28, 0x44, 0x00, 0x4B, 0x7C, 0x00, 0x09, 0x52, 0x00, 0x09, 0x54, 0x00, 0x09, 0x48, 0x00, 0x15, 0x64, 0x00, 0x13, 0x42, 0x00, 0x22, 0x83, 0x00, 0x44, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x717D, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x80, 0x08, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x2C, 0xFF, 0x80, 0x28, 0x80, 0x00, 0x28, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x99, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xCC, 0x80, 0x14, 0x99, 0x80, 0x14, 0xAA, 0x80, 0x24, 0xCC, 0x80, 0x21, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7180, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x51, 0x11, 0x00, 0x51, 0x93, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2C, 0xC4, 0x00, 0x24, 0x84, 0x80, 0x61, 0x84, 0x80, 0x43, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7184, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x10, 0x00, 0x14, 0x29, 0x00, 0x14, 0xA0, 0x80, 0x14, 0xA2, 0x80, 0x21, 0x3E, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7185, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x52, 0x00, 0x09, 0x52, 0x00, 0x2B, 0x5A, 0x00, 0x2A, 0x6E, 0x00, 0x68, 0x42, 0x00, 0x48, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x16, 0xA9, 0x00, 0x32, 0xA9, 0x00, 0x21, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7187, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x68, 0x7E, 0x00, 0x48, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0xBD, 0x00, 0x14, 0xA5, 0x00, 0x16, 0xA5, 0x00, 0x32, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x60, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xDF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x27, 0xD1, 0x00, 0x24, 0x51, 0x00, 0x24, 0x5F, 0x00, 0x27, 0xD0, 0x00, 0x25, 0x10, 0x00, 0x65, 0x10, 0x80, 0x45, 0x19, 0x80, 0x47, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7189, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x2C, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x14, 0x80, 0x80, 0x14, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x22, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x718A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x23, 0x80, 0x17, 0x3C, 0x00, 0x38, 0xA0, 0x00, 0x00, 0x20, 0x80, 0x3F, 0x3F, 0x80, 0x21, 0x00, 0x00, 0x3F, 0x20, 0x00, 0x21, 0x27, 0x80, 0x3F, 0x38, 0x00, 0x21, 0x20, 0x80, 0x23, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x12, 0x11, 0x00, 0x11, 0x08, 0x80, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x718C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x17, 0xEF, 0x80, 0x5A, 0x28, 0x80, 0x53, 0xEF, 0x80, 0x52, 0x00, 0x80, 0x52, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0x10, 0x80, 0x12, 0x38, 0x80, 0x3A, 0x28, 0x80, 0x2A, 0x6C, 0x80, 0x26, 0xC6, 0x80, 0x62, 0x00, 0x80, 0x42, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x718F, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x4A, 0x00, 0x09, 0x52, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7192, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x15, 0x14, 0x80, 0x16, 0x15, 0x00, 0x24, 0xA6, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x20, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x42, 0x80, 0x04, 0x44, 0x00, 0x04, 0x48, 0x00, 0x08, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7194, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x0C, 0x14, 0x00, 0x28, 0x22, 0x00, 0x28, 0xC9, 0x80, 0x28, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7195, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x68, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x16, 0x7F, 0x00, 0x32, 0x22, 0x00, 0x20, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7198, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x13, 0xBF, 0x00, 0x12, 0x12, 0x00, 0x12, 0x92, 0x00, 0x56, 0x52, 0x00, 0x5A, 0xD2, 0x00, 0x53, 0x2A, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x26, 0x22, 0x00, 0x43, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x91, 0x00, 0x28, 0x9F, 0x00, 0x28, 0x90, 0x00, 0x2F, 0x90, 0x00, 0x22, 0x10, 0x80, 0x22, 0x10, 0x80, 0x3F, 0xDF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x719A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x68, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x08, 0x52, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x52, 0x00, 0x14, 0xFF, 0x00, 0x16, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x719B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x15, 0xFF, 0x80, 0x55, 0x24, 0x80, 0x59, 0x24, 0x80, 0x51, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x2C, 0x92, 0x00, 0x25, 0x93, 0x00, 0x63, 0x11, 0x80, 0x40, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x719F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x0A, 0x00, 0x1F, 0x0A, 0x00, 0x00, 0x2A, 0x00, 0x1F, 0x12, 0x00, 0x02, 0x1A, 0x00, 0x07, 0xA2, 0x80, 0x3C, 0x23, 0x80, 0x04, 0x40, 0x00, 0x0C, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71A0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x10, 0xA2, 0x80, 0x15, 0x24, 0x80, 0x54, 0x61, 0x80, 0x54, 0xA2, 0x80, 0x51, 0x24, 0x80, 0x50, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x38, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x64, 0x81, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71A2, { 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x21, 0x00, 0x0A, 0x52, 0x00, 0x0D, 0x8C, 0x00, 0x28, 0x0A, 0x00, 0x28, 0x31, 0x80, 0x28, 0xC8, 0x00, 0x08, 0x7F, 0x00, 0x0B, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x15, 0x88, 0x00, 0x22, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71A8, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x02, 0x00, 0x2F, 0xA2, 0x00, 0x20, 0x32, 0x00, 0x2F, 0x92, 0x00, 0x62, 0x02, 0x00, 0x4A, 0x8E, 0x00, 0x16, 0x40, 0x00, 0x00, 0x86, 0x00, 0x19, 0xCC, 0x00, 0x33, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71AC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x08, 0x64, 0x00, 0x3F, 0x94, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x0C, 0x00, 0x09, 0x12, 0x00, 0x11, 0x21, 0x80, 0x2E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71AF, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x28, 0x00, 0x2C, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x43, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71B0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x0A, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x68, 0x9F, 0x00, 0x48, 0x80, 0x00, 0x08, 0xBB, 0x80, 0x08, 0xAA, 0x80, 0x1C, 0xAA, 0x80, 0x14, 0xAA, 0x80, 0x16, 0xBB, 0x80, 0x32, 0x80, 0x00, 0x20, 0x7F, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71B1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x0A, 0x00, 0x3F, 0xEA, 0x00, 0x09, 0x1A, 0x00, 0x13, 0xEA, 0x00, 0x22, 0x0E, 0x00, 0x1F, 0xD2, 0x80, 0x02, 0x13, 0x80, 0x3F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71B2, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x23, 0x7F, 0x80, 0x3E, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x20, 0xA1, 0x00, 0x1F, 0xA1, 0x00, 0x00, 0x3F, 0x00, 0x14, 0xA1, 0x00, 0x15, 0xA1, 0x00, 0x35, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x0B, 0x3F, 0x00, 0x19, 0x92, 0x00, 0x30, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71B3, { 0x00, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x0A, 0x81, 0x00, 0x2A, 0xBD, 0x00, 0x2A, 0x00, 0x00, 0x69, 0xFF, 0x80, 0x49, 0x24, 0x80, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1D, 0xFF, 0x00, 0x14, 0x42, 0x00, 0x16, 0x24, 0x00, 0x32, 0x18, 0x00, 0x20, 0x76, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71B5, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x54, 0x52, 0x00, 0x5B, 0xFF, 0x00, 0x52, 0x52, 0x00, 0x12, 0x8A, 0x00, 0x13, 0x06, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x2A, 0xFA, 0x00, 0x26, 0x02, 0x00, 0x42, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71B9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x12, 0x21, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71BA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71BE, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFA, 0x00, 0x0A, 0xA9, 0x00, 0x0C, 0xA8, 0x00, 0x28, 0xA8, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x08, 0xE9, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xEA, 0x00, 0x08, 0xA4, 0x00, 0x14, 0xEC, 0x80, 0x14, 0x92, 0x80, 0x10, 0x21, 0x80, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71BF, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x14, 0x7C, 0x00, 0x58, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x50, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x39, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x2C, 0x82, 0x00, 0x65, 0x83, 0x00, 0x41, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71C0, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x14, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x50, 0x92, 0x00, 0x50, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x38, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2C, 0x10, 0x00, 0x64, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71C1, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x2C, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71C3, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x85, 0x00, 0x09, 0xF4, 0x80, 0x0B, 0x14, 0x00, 0x0C, 0xBF, 0x80, 0x2A, 0x44, 0x00, 0x29, 0x44, 0x00, 0x28, 0x8A, 0x00, 0x09, 0x0A, 0x00, 0x0A, 0x11, 0x00, 0x0C, 0x20, 0x80, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x15, 0x24, 0x80, 0x21, 0x24, 0x80, 0x22, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71C4, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x48, 0x80, 0x1E, 0x49, 0x80, 0x12, 0xDD, 0x00, 0x36, 0x94, 0x00, 0x24, 0x36, 0x00, 0x6C, 0x63, 0x00, 0x00, 0xC9, 0x80, 0x10, 0x08, 0x00, 0x76, 0x48, 0x80, 0x42, 0x49, 0x80, 0x42, 0xDD, 0x00, 0x76, 0x94, 0x00, 0x42, 0x36, 0x00, 0x42, 0x63, 0x00, 0x7E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71C8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFA, 0x00, 0x08, 0x14, 0x80, 0x0A, 0x25, 0x00, 0x2C, 0x42, 0x00, 0x29, 0x81, 0x80, 0x28, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x0C, 0x00, 0x00, 0x12, 0x42, 0x00, 0x10, 0x24, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71C9, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFC, 0x00, 0x0A, 0x07, 0x80, 0x2D, 0xFD, 0x00, 0x29, 0x15, 0x00, 0x29, 0xFD, 0x00, 0x08, 0x05, 0x00, 0x09, 0xFD, 0x00, 0x08, 0x22, 0x00, 0x08, 0x7A, 0x00, 0x17, 0xC5, 0x00, 0x14, 0x45, 0x00, 0x12, 0x48, 0x80, 0x20, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71CB, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x48, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x88, 0x00, 0x59, 0x88, 0x00, 0x52, 0xFF, 0x00, 0x50, 0x88, 0x00, 0x50, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x38, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x2C, 0xA5, 0x00, 0x65, 0xA5, 0x80, 0x41, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71CC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x22, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x68, 0x00, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71CE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x09, 0x29, 0x00, 0x0A, 0xC6, 0x00, 0x2C, 0x82, 0x00, 0x2B, 0x01, 0x80, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x14, 0x92, 0x00, 0x11, 0x11, 0x00, 0x22, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71D0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x38, 0x00, 0x2C, 0x54, 0x00, 0x28, 0x92, 0x00, 0x29, 0x11, 0x80, 0x08, 0x84, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x34, 0x00, 0x0D, 0x54, 0x00, 0x08, 0xFF, 0x80, 0x14, 0x84, 0x00, 0x15, 0x04, 0x00, 0x22, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71D2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x2C, 0x42, 0x00, 0x28, 0x42, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x12, 0x44, 0x00, 0x10, 0x84, 0x80, 0x23, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71D3, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0x22, 0x00, 0x7C, 0xCF, 0x80, 0x11, 0x22, 0x00, 0x10, 0x02, 0x00, 0x39, 0x27, 0x00, 0x34, 0xCB, 0x00, 0x51, 0x22, 0x80, 0x10, 0x02, 0x00, 0x00, 0x80, 0x00, 0x08, 0x86, 0x00, 0x19, 0xCC, 0x00, 0x31, 0x60, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71D4, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x91, 0x00, 0x0A, 0x52, 0x00, 0x0D, 0xFF, 0x80, 0x28, 0x38, 0x00, 0x28, 0x54, 0x00, 0x28, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x0C, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71D5, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x05, 0xF4, 0x00, 0x3C, 0x05, 0x80, 0x05, 0xF6, 0x00, 0x05, 0x14, 0x00, 0x05, 0x14, 0x00, 0x0D, 0xF4, 0x80, 0x35, 0x17, 0x80, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x12, 0x21, 0x00, 0x11, 0x10, 0x80, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71D6, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x14, 0x02, 0x00, 0x54, 0xFE, 0x00, 0x58, 0x00, 0x00, 0x53, 0xEF, 0x00, 0x50, 0x89, 0x00, 0x10, 0xE9, 0x00, 0x13, 0x8F, 0x00, 0x10, 0x02, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x2C, 0xC2, 0x00, 0x64, 0x42, 0x00, 0x40, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71D7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x17, 0xEF, 0x80, 0x5A, 0x28, 0x80, 0x53, 0xEF, 0x80, 0x52, 0x00, 0x80, 0x52, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x3A, 0x7C, 0x80, 0x2A, 0x44, 0x80, 0x26, 0x44, 0x80, 0x62, 0x4C, 0x80, 0x42, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71D9, { 0x00, 0x00, 0x00, 0x30, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x60, 0x84, 0x00, 0x30, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x31, 0xFF, 0x00, 0x22, 0x49, 0x00, 0x60, 0x93, 0x00, 0x00, 0x80, 0x00, 0x19, 0xCE, 0x00, 0x33, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71DA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x48, 0x80, 0x24, 0xC9, 0x80, 0x6E, 0x9D, 0x00, 0x4A, 0x14, 0x00, 0x1B, 0x36, 0x00, 0x31, 0x63, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x24, 0x48, 0x80, 0x64, 0xC9, 0x80, 0x4E, 0x9D, 0x00, 0x0A, 0x14, 0x00, 0x1B, 0x36, 0x00, 0x31, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71DC, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x17, 0xEF, 0x80, 0x5A, 0x28, 0x80, 0x53, 0xEF, 0x80, 0x52, 0x00, 0x80, 0x52, 0x10, 0x80, 0x12, 0x08, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xA1, 0x80, 0x3B, 0x20, 0x80, 0x2A, 0x24, 0x80, 0x26, 0x1C, 0x80, 0x62, 0x00, 0x80, 0x42, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71DF, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x14, 0xA4, 0x80, 0x15, 0x25, 0x00, 0x24, 0x4A, 0x00, 0x0B, 0x11, 0x00, 0x10, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71E0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x15, 0x19, 0x00, 0x55, 0x71, 0x00, 0x55, 0x55, 0x00, 0x51, 0x39, 0x00, 0x51, 0x7D, 0x00, 0x11, 0x39, 0x00, 0x11, 0x55, 0x00, 0x10, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x28, 0x00, 0x2C, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x41, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71E5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x09, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2C, 0x00, 0x00, 0x29, 0xEF, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x14, 0x38, 0x00, 0x12, 0x54, 0x00, 0x10, 0x92, 0x00, 0x23, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71E6, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0A, 0xFF, 0x80, 0x2D, 0x59, 0x00, 0x2B, 0x2A, 0x00, 0x2C, 0xC4, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x31, 0x80, 0x0A, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x14, 0x38, 0x00, 0x14, 0x54, 0x00, 0x11, 0x92, 0x00, 0x22, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71E7, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x8E, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0xBE, 0x80, 0x2A, 0x19, 0x00, 0x29, 0x2E, 0x00, 0x28, 0xD4, 0x00, 0x28, 0x26, 0x00, 0x0B, 0x4D, 0x00, 0x09, 0x15, 0x00, 0x09, 0x64, 0x80, 0x15, 0x18, 0x80, 0x15, 0x80, 0x00, 0x12, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71EC, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x13, 0x6E, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x57, 0x6A, 0x00, 0x5A, 0x33, 0x80, 0x52, 0x20, 0x00, 0x53, 0xFF, 0x00, 0x10, 0x89, 0x00, 0x10, 0x8B, 0x00, 0x13, 0xEA, 0x00, 0x38, 0x8E, 0x00, 0x2C, 0x84, 0x00, 0x24, 0xEE, 0x00, 0x63, 0x9B, 0x00, 0x40, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71ED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x24, 0x80, 0x0B, 0xFF, 0x80, 0x0C, 0x40, 0x00, 0x28, 0x80, 0x00, 0x29, 0xFF, 0x80, 0x2A, 0x20, 0x80, 0x09, 0xFE, 0x80, 0x09, 0x22, 0x80, 0x09, 0xFE, 0x80, 0x08, 0x24, 0x80, 0x08, 0x3E, 0x80, 0x15, 0xE1, 0x80, 0x14, 0x01, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71EE, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x08, 0x04, 0x00, 0x2B, 0xF4, 0x80, 0x2C, 0x05, 0x00, 0x28, 0xE4, 0x00, 0x08, 0x04, 0x00, 0x14, 0xEA, 0x00, 0x12, 0xA9, 0x00, 0x22, 0xF0, 0x80, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x38, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71F5, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x54, 0xFF, 0x80, 0x56, 0x22, 0x00, 0x5B, 0x14, 0x00, 0x51, 0x7F, 0x00, 0x10, 0x08, 0x00, 0x17, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x39, 0xFF, 0x80, 0x29, 0x08, 0x00, 0x25, 0x08, 0x00, 0x63, 0x80, 0x00, 0x46, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71F8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x5A, 0x10, 0x80, 0x52, 0xD6, 0x80, 0x52, 0x10, 0x80, 0x50, 0xD6, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x39, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x2D, 0x49, 0x00, 0x65, 0x49, 0x00, 0x41, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x11, 0x08, 0x80, 0x6A, 0x35, 0x00, 0x14, 0x0A, 0x00, 0x6E, 0x37, 0x00, 0x15, 0x0A, 0x80, 0x64, 0x32, 0x00, 0x1C, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x09, 0xC6, 0x00, 0x19, 0x6C, 0x00, 0x13, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71FB, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0x78, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x28, 0xC9, 0x80, 0x28, 0xAA, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x24, 0xA5, 0x00, 0x21, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71FC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x12, 0x00, 0x2D, 0xFF, 0x80, 0x28, 0x12, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0xA5, 0x00, 0x09, 0x25, 0x00, 0x08, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x29, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x71FE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x0F, 0xFC, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x0E, 0xFF, 0x80, 0x0E, 0x12, 0x00, 0x00, 0x02, 0x00, 0x12, 0x27, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x71FF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0xA2, 0x80, 0x09, 0x24, 0x80, 0x0A, 0x69, 0x80, 0x2D, 0xA2, 0x80, 0x2A, 0x2C, 0x80, 0x28, 0x50, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x90, 0x00, 0x14, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7200, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x84, 0x00, 0x28, 0x84, 0x00, 0x2F, 0xFF, 0x80, 0x29, 0x4A, 0x00, 0x0B, 0x6B, 0x00, 0x0B, 0x5A, 0x80, 0x0D, 0x5A, 0x80, 0x09, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x22, 0xD2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7206, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x01, 0x00, 0x0D, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x29, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x09, 0x92, 0x00, 0x0E, 0xBD, 0x80, 0x14, 0x54, 0x00, 0x11, 0x92, 0x00, 0x26, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7207, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3E, 0x00, 0x7F, 0xCA, 0x00, 0x11, 0x2A, 0x00, 0x65, 0xBA, 0x00, 0x1F, 0x12, 0x00, 0x04, 0x3A, 0x80, 0x7F, 0xA9, 0x80, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7208, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x1E, 0x00, 0x10, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x7C, 0x00, 0x51, 0x11, 0x00, 0x51, 0x7F, 0x00, 0x11, 0x52, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x52, 0x00, 0x39, 0x7E, 0x00, 0x29, 0x10, 0x00, 0x2A, 0xA9, 0x00, 0x64, 0xA2, 0x80, 0x41, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7209, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x12, 0x22, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFE, 0x00, 0x52, 0x52, 0x00, 0x56, 0x22, 0x00, 0x5A, 0x52, 0x00, 0x53, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0x32, 0x00, 0x12, 0xAA, 0x00, 0x3B, 0x32, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0x22, 0x80, 0x63, 0xBA, 0x80, 0x46, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x720D, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x13, 0x23, 0x00, 0x12, 0x3A, 0x00, 0x16, 0xAA, 0x80, 0x55, 0x29, 0x00, 0x55, 0x39, 0x00, 0x52, 0x2A, 0x00, 0x52, 0xAA, 0x80, 0x13, 0xBB, 0x80, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x38, 0x54, 0x00, 0x2C, 0xD6, 0x00, 0x25, 0x93, 0x00, 0x63, 0x11, 0x80, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7210, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0B, 0x2E, 0x80, 0x2D, 0xF0, 0x00, 0x29, 0x3F, 0x80, 0x29, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x24, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7213, { 0x00, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x16, 0x28, 0x80, 0x5B, 0xEF, 0x80, 0x52, 0x00, 0x80, 0x52, 0x20, 0x80, 0x52, 0x7E, 0x80, 0x12, 0xC4, 0x80, 0x12, 0x08, 0x80, 0x12, 0x4E, 0x80, 0x3A, 0x82, 0x80, 0x2A, 0xEE, 0x80, 0x2A, 0x82, 0x80, 0x66, 0xFE, 0x80, 0x42, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7217, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x44, 0x00, 0x51, 0xFF, 0x00, 0x50, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x38, 0x92, 0x00, 0x2D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x721A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x54, 0x7C, 0x00, 0x58, 0x00, 0x00, 0x53, 0xBB, 0x80, 0x52, 0xAA, 0x80, 0x13, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x39, 0x49, 0x00, 0x29, 0xFF, 0x00, 0x2D, 0x49, 0x00, 0x65, 0x49, 0x00, 0x41, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x721B, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x0B, 0x29, 0x00, 0x2D, 0xEF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x55, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x39, 0x00, 0x15, 0x55, 0x00, 0x15, 0x93, 0x00, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x721D, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x13, 0xFC, 0x00, 0x10, 0xA2, 0x00, 0x11, 0x11, 0x00, 0x57, 0xFF, 0x00, 0x5A, 0x49, 0x00, 0x53, 0xFF, 0x00, 0x50, 0x00, 0x00, 0x13, 0xE1, 0x00, 0x12, 0x2F, 0x80, 0x13, 0xE1, 0x00, 0x3A, 0x29, 0x00, 0x2B, 0xED, 0x00, 0x2A, 0x45, 0x00, 0x63, 0xE1, 0x00, 0x46, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x721F, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xC7, 0x80, 0x10, 0x44, 0x00, 0x15, 0xEF, 0x00, 0x55, 0x29, 0x00, 0x55, 0xEF, 0x00, 0x50, 0x44, 0x00, 0x50, 0x48, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x38, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x88, 0x00, 0x64, 0x88, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7224, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x17, 0xEF, 0x80, 0x5A, 0x28, 0x80, 0x53, 0xEF, 0x80, 0x52, 0x28, 0x80, 0x53, 0xEF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x10, 0x80, 0x3A, 0xFE, 0x80, 0x2A, 0xBA, 0x80, 0x2A, 0xFE, 0x80, 0x66, 0x54, 0x80, 0x42, 0x92, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7228, { 0x00, 0x00, 0x00, 0x3B, 0xF7, 0x00, 0x22, 0x11, 0x00, 0x3B, 0xD7, 0x00, 0x22, 0x11, 0x00, 0x3B, 0xD7, 0x00, 0x22, 0x51, 0x00, 0x7F, 0xFF, 0x80, 0x44, 0x08, 0x80, 0x3F, 0x7F, 0x00, 0x16, 0x2A, 0x00, 0x25, 0x49, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x75, 0xD7, 0x80, 0x07, 0x70, 0x00, 0x3C, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x722A, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x722B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x86, 0x00, 0x18, 0xC3, 0x00, 0x10, 0x41, 0x80, 0x30, 0x40, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x722C, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1D, 0x3E, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x3E, 0x00, 0x15, 0x20, 0x00, 0x14, 0xA0, 0x00, 0x14, 0xA0, 0x00, 0x14, 0xA0, 0x80, 0x14, 0xBF, 0x80, 0x14, 0x40, 0x00, 0x14, 0x40, 0x00, 0x14, 0x20, 0x00, 0x24, 0x18, 0x00, 0x24, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x722D, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x07, 0x84, 0x00, 0x08, 0x42, 0x00, 0x10, 0x21, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x722F, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x0F, 0xC8, 0x00, 0x08, 0x84, 0x00, 0x18, 0xC6, 0x00, 0x30, 0x43, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7230, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x07, 0x84, 0x00, 0x04, 0x42, 0x00, 0x08, 0x20, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x03, 0x08, 0x00, 0x04, 0x90, 0x00, 0x08, 0x60, 0x00, 0x10, 0xD8, 0x00, 0x27, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7231, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xC0, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x41, 0x02, 0x00, 0x3F, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x05, 0x10, 0x00, 0x04, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x08, 0xB0, 0x00, 0x11, 0x0E, 0x00, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7232, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xC4, 0x00, 0x08, 0x42, 0x00, 0x08, 0x21, 0x00, 0x10, 0x00, 0x00, 0x2F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x04, 0x80, 0x08, 0x22, 0x80, 0x09, 0x12, 0x80, 0x10, 0x90, 0x80, 0x14, 0x80, 0x80, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7234, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x7F, 0xC7, 0x00, 0x4A, 0x5D, 0x00, 0x49, 0x55, 0x00, 0x7F, 0xD5, 0x00, 0x48, 0x55, 0x00, 0x74, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x77, 0x55, 0x00, 0x42, 0x55, 0x00, 0x76, 0xD5, 0x00, 0x4D, 0xD5, 0x00, 0x79, 0x55, 0x80, 0x40, 0x64, 0x80, 0x7F, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7235, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC2, 0x00, 0x10, 0x21, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7236, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x22, 0x04, 0x80, 0x04, 0x04, 0x00, 0x0C, 0x08, 0x00, 0x12, 0x10, 0x00, 0x02, 0x10, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7237, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x70, 0x07, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x28, 0x00, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7238, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x3B, 0x37, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x80, 0x0C, 0x01, 0x80, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7239, { 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x3B, 0x37, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x7A, 0x07, 0x80, 0x03, 0xF8, 0x00, 0x1E, 0x18, 0x00, 0x01, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0xFE, 0x00, 0x07, 0x86, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x723A, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x02, 0x00, 0x12, 0x05, 0x00, 0x05, 0x98, 0x00, 0x09, 0xF0, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0B, 0x91, 0x00, 0x3C, 0x97, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x723B, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1C, 0x08, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x60, 0x00, 0x01, 0x98, 0x00, 0x06, 0x07, 0x00, 0x18, 0x04, 0x00, 0x0C, 0x08, 0x00, 0x12, 0x08, 0x00, 0x21, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x18, 0x00, 0x06, 0x06, 0x00, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x723C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x36, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x36, 0x7E, 0x00, 0x60, 0x42, 0x00, 0x00, 0x42, 0x00, 0x02, 0x42, 0x00, 0x36, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x36, 0x42, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x723D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x49, 0x00, 0x0A, 0x46, 0x00, 0x0C, 0x45, 0x00, 0x12, 0x48, 0x80, 0x00, 0x40, 0x00, 0x12, 0x49, 0x00, 0x0C, 0x46, 0x00, 0x14, 0xA5, 0x00, 0x23, 0x18, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x723E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x1F, 0xFF, 0x00, 0x10, 0x55, 0x00, 0x15, 0x49, 0x00, 0x12, 0x55, 0x00, 0x15, 0x43, 0x00, 0x10, 0x41, 0x00, 0x15, 0x55, 0x00, 0x12, 0x49, 0x00, 0x15, 0x55, 0x00, 0x10, 0x41, 0x00, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x723F, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x03, 0x04, 0x00, 0x02, 0x04, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7240, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x1F, 0x08, 0x00, 0x11, 0x1C, 0x00, 0x01, 0x1C, 0x00, 0x01, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x49, 0x00, 0x09, 0x88, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7241, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0xF2, 0x00, 0x3C, 0x92, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xF2, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x44, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7242, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x24, 0xC6, 0x00, 0x24, 0x44, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x44, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7243, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x38, 0x9E, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x28, 0x54, 0x00, 0x28, 0xD6, 0x00, 0x29, 0x93, 0x00, 0x4B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7245, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x11, 0x00, 0x3B, 0xFF, 0x80, 0x0A, 0x11, 0x00, 0x0A, 0xFF, 0x00, 0x7A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x4C, 0x91, 0x00, 0x08, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7246, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x22, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x5D, 0x00, 0x02, 0x08, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x12, 0xBE, 0x80, 0x12, 0xBE, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7247, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7248, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x40, 0x00, 0x12, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x61, 0x00, 0x10, 0x51, 0x00, 0x10, 0x52, 0x00, 0x1E, 0x4A, 0x00, 0x12, 0x4C, 0x00, 0x12, 0x4C, 0x00, 0x12, 0x54, 0x00, 0x12, 0x92, 0x00, 0x12, 0xA1, 0x00, 0x23, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x724B, { 0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x24, 0x22, 0x00, 0x24, 0x3F, 0x00, 0x24, 0xF0, 0x00, 0x3E, 0x1B, 0x00, 0x20, 0x0C, 0x00, 0x20, 0x36, 0x80, 0x20, 0xC3, 0x80, 0x3C, 0x24, 0x00, 0x24, 0x22, 0x00, 0x24, 0x3F, 0x00, 0x25, 0xF0, 0x00, 0x24, 0x1B, 0x00, 0x24, 0x0C, 0x00, 0x64, 0x36, 0x80, 0x45, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x724C, { 0x00, 0x00, 0x00, 0x12, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x1E, 0x28, 0x00, 0x12, 0x48, 0x00, 0x12, 0x88, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x724D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x24, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x3E, 0x01, 0x00, 0x20, 0x92, 0x00, 0x20, 0x50, 0x00, 0x3D, 0x10, 0x00, 0x24, 0x90, 0x00, 0x24, 0x12, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x28, 0x00, 0x44, 0x46, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x724E, { 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x25, 0x94, 0x80, 0x24, 0x64, 0x80, 0x3E, 0x38, 0x80, 0x20, 0x4C, 0x80, 0x20, 0x95, 0x80, 0x20, 0x21, 0x00, 0x3C, 0x07, 0x00, 0x24, 0x08, 0x00, 0x24, 0x2D, 0x00, 0x24, 0xA5, 0x80, 0x24, 0xA0, 0x80, 0x65, 0xA2, 0x00, 0x45, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x724F, { 0x00, 0x00, 0x00, 0x28, 0xF0, 0x00, 0x28, 0x18, 0x00, 0x28, 0x6C, 0x00, 0x28, 0xC6, 0x00, 0x3D, 0xBB, 0x80, 0x20, 0x00, 0x00, 0x21, 0xE4, 0x80, 0x21, 0x24, 0x80, 0x39, 0x6D, 0x80, 0x29, 0xA9, 0x00, 0x29, 0x29, 0x00, 0x29, 0x69, 0x00, 0x29, 0xAD, 0x80, 0x29, 0x24, 0x80, 0x69, 0x24, 0x80, 0x49, 0x64, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7250, { 0x00, 0x00, 0x00, 0x24, 0x03, 0x00, 0x24, 0x0E, 0x00, 0x24, 0xF8, 0x00, 0x24, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x68, 0x00, 0x3C, 0xCB, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0xEB, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x64, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7252, { 0x00, 0x00, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x92, 0x00, 0x1C, 0x9E, 0x00, 0x14, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x1C, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x1C, 0x00, 0x14, 0x1A, 0x00, 0x14, 0x2A, 0x00, 0x24, 0x49, 0x00, 0x25, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7253, { 0x00, 0x00, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x3E, 0x24, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x21, 0x10, 0x80, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x24, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x24, 0x61, 0x00, 0x64, 0xC1, 0x00, 0x45, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7255, { 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x3E, 0xDD, 0x00, 0x20, 0xA5, 0x00, 0x20, 0xD5, 0x00, 0x20, 0x89, 0x00, 0x3C, 0x95, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x08, 0x00, 0x24, 0xAD, 0x00, 0x24, 0xA5, 0x80, 0x65, 0xA2, 0x80, 0x45, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7256, { 0x00, 0x00, 0x00, 0x28, 0x07, 0x00, 0x29, 0xFC, 0x00, 0x29, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x3D, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x0A, 0x00, 0x21, 0xFF, 0x80, 0x39, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x68, 0x49, 0x00, 0x48, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7258, { 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x15, 0xFF, 0x00, 0x1D, 0x29, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x15, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7259, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0x48, 0x00, 0x00, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x725A, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x18, 0x8C, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x90, 0x00, 0x07, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x725B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x725C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x725D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x3F, 0xA1, 0x80, 0x24, 0x26, 0x00, 0x24, 0x38, 0x00, 0x04, 0x20, 0x00, 0x04, 0xE0, 0x00, 0x07, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x04, 0x20, 0x80, 0x04, 0x20, 0x80, 0x04, 0x3F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x725E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x68, 0x11, 0x00, 0x48, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0E, 0x11, 0x00, 0x78, 0x11, 0x00, 0x08, 0x31, 0x00, 0x08, 0x23, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x725F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x40, 0x80, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7260, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x90, 0x00, 0x28, 0x90, 0x00, 0x28, 0x93, 0x00, 0x3E, 0x9D, 0x00, 0x68, 0xB1, 0x00, 0x48, 0xD1, 0x00, 0x0B, 0x91, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x91, 0x00, 0x38, 0x93, 0x00, 0x68, 0x90, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7261, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x05, 0x88, 0x00, 0x0E, 0x08, 0x00, 0x34, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7262, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7263, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x11, 0x00, 0x28, 0x11, 0x00, 0x3E, 0x51, 0x00, 0x68, 0x51, 0x00, 0x48, 0x51, 0x00, 0x08, 0xD1, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x31, 0x00, 0x38, 0x21, 0x00, 0x68, 0x21, 0x00, 0x08, 0x63, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7266, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x15, 0xF0, 0x00, 0x14, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x24, 0x2E, 0x00, 0x24, 0xF0, 0x00, 0x44, 0x20, 0x00, 0x07, 0x22, 0x00, 0x0C, 0x3F, 0x00, 0x35, 0xE0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7267, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x1F, 0x7F, 0x00, 0x24, 0x42, 0x00, 0x24, 0xA2, 0x00, 0x04, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x05, 0x94, 0x00, 0x0E, 0x18, 0x00, 0x34, 0x18, 0x00, 0x04, 0x24, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7268, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x68, 0x00, 0x00, 0x48, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x44, 0x00, 0x68, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x80, 0x09, 0x84, 0x80, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7269, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x14, 0x20, 0x00, 0x14, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x24, 0x92, 0x80, 0x24, 0x92, 0x80, 0x25, 0x24, 0x80, 0x04, 0x24, 0x80, 0x04, 0x44, 0x80, 0x07, 0xC8, 0x80, 0x3C, 0x90, 0x80, 0x05, 0x10, 0x80, 0x04, 0x21, 0x00, 0x04, 0x41, 0x00, 0x04, 0x82, 0x00, 0x04, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x726B, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x28, 0x13, 0x00, 0x28, 0x11, 0x00, 0x28, 0x10, 0x00, 0x7E, 0x1F, 0x80, 0x49, 0xF0, 0x00, 0x08, 0x11, 0x00, 0x08, 0x19, 0x00, 0x08, 0x0B, 0x00, 0x0E, 0x0A, 0x00, 0x78, 0x0E, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x3A, 0x80, 0x09, 0xE3, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x726E, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x0C, 0x26, 0x00, 0x18, 0x22, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x10, 0x00, 0x10, 0x18, 0x00, 0x10, 0x0C, 0x00, 0x10, 0x06, 0x80, 0x08, 0x83, 0x80, 0x08, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x726F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x68, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x7F, 0x00, 0x78, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7271, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x48, 0xF2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7272, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x28, 0x00, 0x14, 0x28, 0x00, 0x1F, 0xC8, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x88, 0x00, 0x24, 0x08, 0x00, 0x05, 0x88, 0x00, 0x0E, 0x7F, 0x00, 0x34, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7274, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x28, 0x0E, 0x00, 0x28, 0xF8, 0x00, 0x28, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x48, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x0E, 0x88, 0x00, 0x38, 0x8C, 0x00, 0x68, 0x84, 0x00, 0x08, 0xE4, 0x00, 0x0B, 0x86, 0x00, 0x08, 0x02, 0x80, 0x0B, 0xFB, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7275, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x02, 0x30, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x44, 0x92, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7277, { 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x28, 0x0C, 0x00, 0x28, 0x36, 0x00, 0x28, 0x63, 0x00, 0x7E, 0xC1, 0x80, 0x48, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7278, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x68, 0x7F, 0x00, 0x48, 0x02, 0x00, 0x08, 0x04, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x68, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7279, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x27, 0xFF, 0x80, 0x04, 0x02, 0x00, 0x05, 0x82, 0x00, 0x0E, 0xFF, 0x80, 0x34, 0x02, 0x00, 0x04, 0x22, 0x00, 0x04, 0x12, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x727A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x28, 0x4A, 0x00, 0x4B, 0xFF, 0x00, 0x0D, 0x4A, 0x00, 0x19, 0x4A, 0x00, 0x69, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x46, 0x00, 0x09, 0x82, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x727B, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x28, 0x4C, 0x00, 0x28, 0x44, 0x00, 0x29, 0xFF, 0x80, 0x3E, 0x42, 0x00, 0x68, 0x46, 0x00, 0x48, 0x4C, 0x00, 0x08, 0x59, 0x00, 0x08, 0x43, 0x00, 0x0E, 0x46, 0x00, 0x38, 0xEC, 0x80, 0x68, 0xA1, 0x80, 0x08, 0xA3, 0x00, 0x09, 0xAE, 0x80, 0x09, 0x30, 0x80, 0x0B, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x727C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0E, 0x00, 0x00, 0x38, 0xFF, 0x00, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x727D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x01, 0x90, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x04, 0x7E, 0x00, 0x1F, 0xC1, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x727E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x7E, 0xFE, 0x00, 0x48, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x00, 0x00, 0x38, 0xFF, 0x00, 0x68, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x727F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x28, 0x48, 0x00, 0x28, 0x48, 0x00, 0x28, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x17, 0xAF, 0x00, 0x10, 0x20, 0x00, 0x17, 0x8F, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x14, 0x20, 0x00, 0x10, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7281, { 0x00, 0x00, 0x00, 0x01, 0xC1, 0x00, 0x1E, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x06, 0x11, 0x00, 0x0B, 0x11, 0x00, 0x12, 0x91, 0x00, 0x22, 0x11, 0x00, 0x02, 0x43, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7282, { 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0x69, 0x00, 0x14, 0xC9, 0x00, 0x16, 0x19, 0x00, 0x35, 0x33, 0x00, 0x64, 0x62, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7284, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x28, 0x00, 0x3E, 0x6C, 0x00, 0x68, 0xC6, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0E, 0xF2, 0x00, 0x78, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7287, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x28, 0x94, 0x00, 0x28, 0x14, 0x00, 0x7E, 0x3F, 0x00, 0x48, 0x24, 0x00, 0x08, 0x04, 0x00, 0x0E, 0x7F, 0x80, 0x78, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7289, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x68, 0x42, 0x00, 0x48, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x06, 0x00, 0x68, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x728A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x49, 0x00, 0x0A, 0x2A, 0x00, 0x0C, 0x88, 0x00, 0x18, 0x4A, 0x00, 0x6B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x46, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x728B, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x14, 0x84, 0x00, 0x14, 0xFC, 0x00, 0x1F, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x25, 0x84, 0x00, 0x46, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x37, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x04, 0x88, 0x00, 0x04, 0x84, 0x00, 0x05, 0x02, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x728D, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x29, 0xDF, 0x00, 0x28, 0x45, 0x00, 0x28, 0x85, 0x00, 0x7E, 0xBF, 0x80, 0x49, 0x05, 0x00, 0x09, 0xC5, 0x00, 0x08, 0x5F, 0x00, 0x0E, 0x44, 0x00, 0x39, 0x5F, 0x00, 0x69, 0x44, 0x00, 0x08, 0xBF, 0x80, 0x08, 0x84, 0x00, 0x09, 0x84, 0x00, 0x09, 0x40, 0x00, 0x0B, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x728E, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xC2, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x9A, 0x00, 0x04, 0x0A, 0x00, 0x07, 0xC2, 0x00, 0x7C, 0x0E, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x728F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x02, 0x00, 0x3F, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x09, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x19, 0xAA, 0x00, 0x69, 0xAA, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0xAA, 0x00, 0x0C, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7292, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x81, 0x00, 0x68, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xBD, 0x00, 0x08, 0x81, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7293, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x28, 0xFF, 0x80, 0x29, 0x10, 0x80, 0x28, 0x92, 0x80, 0x7E, 0x92, 0x80, 0x48, 0xFE, 0x80, 0x08, 0x21, 0x80, 0x08, 0x43, 0x00, 0x0E, 0x40, 0x00, 0x38, 0xFF, 0x80, 0x69, 0x10, 0x80, 0x08, 0x92, 0x80, 0x08, 0x92, 0x80, 0x08, 0xFE, 0x80, 0x08, 0x21, 0x80, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7296, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x24, 0x81, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x729B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xE2, 0x00, 0x15, 0x14, 0x00, 0x24, 0x88, 0x00, 0x44, 0x16, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x40, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x40, 0x00, 0x5F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x729F, { 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x02, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x10, 0x00, 0x20, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x02, 0xFE, 0x00, 0x14, 0x14, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x81, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72A0, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x28, 0x44, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x68, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x09, 0xC9, 0x00, 0x0C, 0x88, 0x00, 0x3B, 0xFF, 0x80, 0x68, 0x89, 0x00, 0x08, 0xEA, 0x00, 0x0B, 0x84, 0x80, 0x08, 0x8A, 0x80, 0x09, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72A2, { 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x24, 0xFF, 0x80, 0x24, 0x94, 0x80, 0x04, 0xFF, 0x80, 0x05, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x34, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x04, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x04, 0xFF, 0x80, 0x04, 0x41, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72A7, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x7A, 0x00, 0x09, 0xC9, 0x00, 0x0A, 0x48, 0x00, 0x0F, 0xFF, 0x80, 0x38, 0xE9, 0x00, 0x0B, 0x59, 0x00, 0x09, 0xF6, 0x00, 0x08, 0x96, 0x80, 0x09, 0x29, 0x80, 0x08, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72A8, { 0x00, 0x00, 0x00, 0x12, 0x12, 0x00, 0x3F, 0xBF, 0x80, 0x64, 0x64, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x24, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x24, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72AC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72AD, { 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x01, 0x90, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xA0, 0x00, 0x07, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00, 0xD0, 0x00, 0x01, 0x90, 0x00, 0x07, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72AE, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x06, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x07, 0x08, 0x00, 0x05, 0x18, 0x00, 0x05, 0x90, 0x00, 0x0C, 0xB0, 0x00, 0x18, 0xE0, 0x00, 0x30, 0x70, 0x00, 0x60, 0xD8, 0x00, 0x03, 0x8E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72AF, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x04, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x41, 0x00, 0x22, 0x41, 0x00, 0x02, 0x4F, 0x00, 0x06, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x12, 0x40, 0x00, 0x22, 0x40, 0x00, 0x02, 0x40, 0x80, 0x02, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72B0, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x44, 0x40, 0x00, 0x28, 0x40, 0x00, 0x10, 0x48, 0x00, 0x2B, 0xFC, 0x00, 0x44, 0x48, 0x00, 0x04, 0x48, 0x00, 0x0C, 0x48, 0x00, 0x14, 0x48, 0x00, 0x24, 0x88, 0x00, 0x44, 0x88, 0x00, 0x04, 0x88, 0x00, 0x05, 0x09, 0x00, 0x05, 0x09, 0x00, 0x2A, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72B1, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x44, 0x20, 0x00, 0x28, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0xA4, 0x00, 0x18, 0x64, 0x00, 0x18, 0x24, 0x00, 0x28, 0x34, 0x00, 0x48, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0xC4, 0x80, 0x19, 0x86, 0x80, 0x73, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72B2, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x44, 0x04, 0x00, 0x28, 0x04, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x48, 0x14, 0x00, 0x08, 0x14, 0x00, 0x18, 0x34, 0x00, 0x18, 0x24, 0x00, 0x28, 0x64, 0x00, 0x48, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x84, 0x00, 0x18, 0x04, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72B4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72B6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x24, 0x13, 0x00, 0x34, 0x11, 0x00, 0x14, 0x10, 0x00, 0x05, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1C, 0x38, 0x00, 0x34, 0x28, 0x00, 0x64, 0x2C, 0x00, 0x04, 0x64, 0x00, 0x04, 0x46, 0x00, 0x04, 0xC3, 0x00, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72B7, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x44, 0x10, 0x00, 0x28, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x28, 0x80, 0x00, 0x44, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0C, 0x80, 0x00, 0x14, 0x80, 0x00, 0x24, 0x80, 0x00, 0x44, 0x80, 0x00, 0x04, 0x80, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72B8, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x45, 0xFC, 0x00, 0x28, 0x08, 0x00, 0x10, 0x88, 0x00, 0x28, 0x88, 0x00, 0x44, 0x88, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8A, 0x00, 0x14, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x44, 0x12, 0x00, 0x07, 0xFA, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x28, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72B9, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x44, 0x26, 0x00, 0x28, 0x22, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x48, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x70, 0x00, 0x18, 0x50, 0x00, 0x28, 0x50, 0x00, 0x48, 0x50, 0x00, 0x08, 0xD0, 0x00, 0x08, 0x90, 0x80, 0x19, 0x99, 0x80, 0x73, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72BE, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x16, 0x00, 0x28, 0x13, 0x00, 0x10, 0x11, 0x00, 0x10, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x38, 0x00, 0x18, 0x28, 0x00, 0x28, 0x28, 0x00, 0x48, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x19, 0x83, 0x00, 0x73, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72C0, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x09, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x14, 0x00, 0x1F, 0x14, 0x00, 0x09, 0x24, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x21, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72C1, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x44, 0x60, 0x00, 0x28, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x9F, 0x00, 0x2B, 0xF5, 0x80, 0x48, 0x44, 0x00, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x18, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x80, 0x19, 0x84, 0x80, 0x73, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72C2, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x24, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0xFF, 0x00, 0x06, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72C3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFC, 0x00, 0x28, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x18, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72C4, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x90, 0x80, 0x18, 0x91, 0x00, 0x25, 0x12, 0x00, 0x05, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x14, 0x28, 0x00, 0x14, 0x28, 0x00, 0x24, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x82, 0x00, 0x05, 0x01, 0x00, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72C6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x28, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72C7, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x28, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x48, 0x54, 0x00, 0x08, 0x54, 0x00, 0x18, 0xD6, 0x00, 0x18, 0x92, 0x00, 0x29, 0x93, 0x00, 0x49, 0x11, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72C8, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x22, 0x02, 0x00, 0x14, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x14, 0x92, 0x00, 0x24, 0x92, 0x00, 0x44, 0x92, 0x00, 0x04, 0x92, 0x00, 0x0C, 0x92, 0x00, 0x14, 0x92, 0x00, 0x24, 0x92, 0x00, 0x44, 0xA2, 0x00, 0x04, 0x28, 0x00, 0x04, 0x44, 0x00, 0x28, 0x83, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72C9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, 0xFF, 0x00, 0x28, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x28, 0x10, 0x00, 0x48, 0x34, 0x00, 0x08, 0x76, 0x00, 0x18, 0xD3, 0x00, 0x19, 0x91, 0x80, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72CC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x90, 0x00, 0x28, 0x90, 0x00, 0x10, 0x90, 0x00, 0x10, 0xFF, 0x00, 0x29, 0x90, 0x00, 0x49, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72CD, { 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x44, 0x82, 0x00, 0x28, 0xFF, 0x00, 0x11, 0x02, 0x00, 0x29, 0x12, 0x00, 0x46, 0xFA, 0x00, 0x04, 0x92, 0x00, 0x0C, 0x92, 0x00, 0x14, 0x92, 0x00, 0x24, 0xF2, 0x00, 0x44, 0x94, 0x00, 0x04, 0x88, 0x00, 0x04, 0x81, 0x00, 0x04, 0x81, 0x00, 0x28, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72CE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x18, 0x88, 0x80, 0x08, 0x88, 0x80, 0x14, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x04, 0x88, 0x80, 0x06, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x0A, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x22, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72D0, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x24, 0x1C, 0x00, 0x18, 0xE4, 0x00, 0x08, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x04, 0xA4, 0x00, 0x0C, 0xA4, 0x00, 0x0C, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x14, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x05, 0x22, 0x00, 0x05, 0x3D, 0x00, 0x0A, 0xE1, 0x00, 0x32, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72D2, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x44, 0x48, 0x00, 0x2B, 0xFF, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x2B, 0xFF, 0x00, 0x4A, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x48, 0x80, 0x28, 0x48, 0x80, 0x48, 0x49, 0x80, 0x08, 0xC9, 0x00, 0x08, 0x8B, 0x00, 0x19, 0x88, 0x00, 0x73, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72D5, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x44, 0x84, 0x00, 0x29, 0x84, 0x00, 0x11, 0x04, 0x00, 0x13, 0x1F, 0x80, 0x2A, 0x44, 0x80, 0x4B, 0x44, 0x80, 0x09, 0xC4, 0x80, 0x18, 0x84, 0x80, 0x18, 0x84, 0x80, 0x29, 0x8C, 0x80, 0x49, 0x28, 0x80, 0x09, 0x29, 0x80, 0x0B, 0xF9, 0x00, 0x1E, 0x11, 0x00, 0x70, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72D6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x28, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x29, 0x01, 0x00, 0x49, 0x7D, 0x00, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x18, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x82, 0x00, 0x19, 0x83, 0x00, 0x73, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72D7, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x24, 0x40, 0x00, 0x18, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x15, 0x00, 0x80, 0x26, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x7C, 0x80, 0x0C, 0x44, 0x80, 0x0C, 0x44, 0x80, 0x14, 0x7C, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72D8, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x44, 0x13, 0x00, 0x28, 0x11, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x29, 0x10, 0x00, 0x49, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x1B, 0x00, 0x19, 0x0A, 0x00, 0x29, 0x0E, 0x00, 0x49, 0x04, 0x00, 0x09, 0xCE, 0x00, 0x0B, 0x1A, 0x80, 0x18, 0x33, 0x80, 0x70, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72D9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0x7E, 0x00, 0x18, 0x42, 0x00, 0x08, 0x42, 0x00, 0x14, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x24, 0x42, 0x00, 0x04, 0x42, 0x00, 0x05, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72DB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x28, 0x30, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x49, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x49, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72DE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x10, 0x00, 0x16, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x26, 0x02, 0x00, 0x44, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x14, 0x10, 0x00, 0x24, 0x10, 0x00, 0x44, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x28, 0x50, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72DF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x18, 0x82, 0x00, 0x28, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72E0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x80, 0x18, 0x89, 0x80, 0x28, 0x8B, 0x00, 0x48, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x18, 0xF3, 0x00, 0x73, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72E1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x08, 0x00, 0x18, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x22, 0x00, 0x14, 0x41, 0x00, 0x24, 0xC2, 0x80, 0x05, 0x42, 0x00, 0x0C, 0x22, 0x00, 0x0C, 0x24, 0x00, 0x14, 0x14, 0x00, 0x14, 0x08, 0x00, 0x24, 0x18, 0x00, 0x04, 0x24, 0x00, 0x04, 0x42, 0x00, 0x19, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72E2, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x44, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0xE6, 0x00, 0x29, 0xAC, 0x00, 0x48, 0x18, 0x00, 0x08, 0x3C, 0x00, 0x18, 0x66, 0x00, 0x19, 0xC3, 0x80, 0x28, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x70, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72E5, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x44, 0x80, 0x00, 0x28, 0xFF, 0x00, 0x11, 0x81, 0x00, 0x11, 0x01, 0x00, 0x2B, 0xF9, 0x00, 0x48, 0x89, 0x00, 0x08, 0x89, 0x00, 0x18, 0xF9, 0x00, 0x18, 0x89, 0x00, 0x28, 0x89, 0x00, 0x48, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x03, 0x00, 0x18, 0x02, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72E8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x44, 0x14, 0x00, 0x28, 0x12, 0x00, 0x10, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x24, 0x94, 0x00, 0x44, 0x94, 0x00, 0x04, 0x88, 0x00, 0x04, 0x89, 0x00, 0x05, 0x15, 0x00, 0x28, 0x63, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72E9, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x00, 0x80, 0x14, 0x04, 0x00, 0x22, 0x04, 0x00, 0x02, 0x04, 0x00, 0x07, 0xFF, 0x80, 0x06, 0x04, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x14, 0x00, 0x22, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72EC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x28, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x29, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x1F, 0x00, 0x18, 0xF1, 0x00, 0x73, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72ED, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x29, 0x11, 0x00, 0x49, 0x93, 0x00, 0x0C, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x44, 0x28, 0x00, 0x04, 0x6C, 0x00, 0x04, 0x44, 0x00, 0x04, 0xC6, 0x00, 0x0D, 0x83, 0x00, 0x3B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72EE, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x44, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x12, 0x88, 0x00, 0x2A, 0xBE, 0x00, 0x4A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x1A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x4A, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x09, 0x2E, 0x00, 0x2A, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72EF, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x44, 0x20, 0x00, 0x28, 0x50, 0x00, 0x10, 0x88, 0x00, 0x29, 0x07, 0x00, 0x46, 0x12, 0x00, 0x04, 0xF8, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x44, 0x20, 0x00, 0x04, 0x40, 0x00, 0x04, 0x88, 0x00, 0x05, 0x04, 0x00, 0x29, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F0, { 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x22, 0x40, 0x00, 0x14, 0xFC, 0x00, 0x09, 0x08, 0x00, 0x14, 0x10, 0x00, 0x25, 0xFC, 0x00, 0x44, 0x24, 0x00, 0x04, 0x24, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x24, 0x00, 0x24, 0x24, 0x00, 0x45, 0xFC, 0x00, 0x04, 0x24, 0x00, 0x04, 0x20, 0x00, 0x14, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F1, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x44, 0x10, 0x00, 0x2A, 0x18, 0x00, 0x11, 0x14, 0x00, 0x29, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x0F, 0x10, 0x00, 0x09, 0x10, 0x00, 0x19, 0x10, 0x00, 0x29, 0x10, 0x00, 0x49, 0x68, 0x00, 0x09, 0xA8, 0x00, 0x09, 0x44, 0x00, 0x08, 0x44, 0x00, 0x50, 0x83, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F2, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x08, 0x00, 0x2B, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x28, 0x88, 0x00, 0x49, 0x08, 0x00, 0x09, 0x6C, 0x00, 0x19, 0xAA, 0x00, 0x2B, 0x2A, 0x00, 0x4D, 0x29, 0x00, 0x09, 0x49, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0D, 0x08, 0x00, 0x52, 0x28, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F3, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x38, 0x00, 0x28, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x29, 0x83, 0x00, 0x4B, 0x7D, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F4, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x44, 0x88, 0x00, 0x28, 0x8B, 0x00, 0x10, 0xEE, 0x00, 0x10, 0x88, 0x00, 0x28, 0x88, 0x00, 0x48, 0x88, 0x80, 0x08, 0xE7, 0x80, 0x19, 0x80, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F7, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x49, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x71, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F8, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x05, 0x11, 0x00, 0x07, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x12, 0x10, 0x00, 0x23, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72F9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x08, 0x00, 0x18, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x14, 0x49, 0x00, 0x24, 0x49, 0x00, 0x04, 0xAA, 0x80, 0x0D, 0x2C, 0x80, 0x0C, 0x08, 0x00, 0x14, 0x14, 0x00, 0x24, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x19, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72FA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x72FB, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x45, 0x82, 0x00, 0x29, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x49, 0x00, 0x28, 0xC8, 0x00, 0x49, 0x8F, 0x80, 0x0B, 0x40, 0x00, 0x18, 0x7E, 0x00, 0x18, 0xC2, 0x00, 0x29, 0x86, 0x00, 0x4B, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72FC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x20, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x14, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x0C, 0xA1, 0x00, 0x14, 0xA2, 0x00, 0x24, 0x94, 0x00, 0x04, 0x88, 0x00, 0x04, 0xFC, 0x00, 0x07, 0x82, 0x00, 0x18, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72FD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x08, 0x81, 0x00, 0x14, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x0C, 0x81, 0x00, 0x0C, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x24, 0x81, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x42, 0x00, 0x04, 0x81, 0x00, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x72FE, { 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x49, 0x07, 0x00, 0x29, 0x1C, 0x00, 0x31, 0x10, 0x00, 0x17, 0xD0, 0x00, 0x31, 0x1F, 0x80, 0x51, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0xD2, 0x00, 0x37, 0x12, 0x00, 0x51, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x32, 0x00, 0x11, 0x22, 0x00, 0x11, 0x62, 0x00, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7301, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x22, 0x31, 0x00, 0x15, 0xC1, 0x00, 0x08, 0x45, 0x00, 0x14, 0x45, 0x00, 0x24, 0x55, 0x00, 0x07, 0xFD, 0x00, 0x0C, 0x45, 0x00, 0x14, 0xC5, 0x00, 0x24, 0xE5, 0x00, 0x05, 0x55, 0x00, 0x05, 0x45, 0x00, 0x06, 0x41, 0x00, 0x04, 0x41, 0x00, 0x28, 0x45, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7302, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x28, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7303, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x44, 0x20, 0x00, 0x28, 0x50, 0x00, 0x10, 0x88, 0x00, 0x29, 0x04, 0x00, 0x46, 0x03, 0x00, 0x05, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x04, 0x00, 0x25, 0x24, 0x00, 0x44, 0xA4, 0x00, 0x04, 0xA8, 0x00, 0x04, 0xA8, 0x00, 0x04, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7304, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x28, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7305, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x44, 0x24, 0x00, 0x28, 0x24, 0x00, 0x11, 0xE7, 0x80, 0x10, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x24, 0x00, 0x09, 0xE7, 0x80, 0x18, 0x24, 0x00, 0x18, 0x24, 0x00, 0x28, 0xE4, 0x00, 0x4B, 0xA7, 0x80, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x18, 0xC4, 0x00, 0x71, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7307, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x1F, 0x00, 0x28, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x29, 0x11, 0x00, 0x49, 0x1C, 0x00, 0x09, 0x70, 0x00, 0x19, 0x11, 0x00, 0x19, 0x0F, 0x00, 0x29, 0x00, 0x00, 0x49, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x80, 0x1A, 0x64, 0x80, 0x70, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x730A, { 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x25, 0x87, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x15, 0xC7, 0x00, 0x25, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x45, 0x00, 0x0C, 0x44, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x80, 0x05, 0x07, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x730B, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x09, 0x09, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0x14, 0x00, 0x1C, 0x14, 0x00, 0x36, 0x36, 0x00, 0x62, 0x63, 0x00, 0x40, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x730D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x09, 0xD7, 0x00, 0x19, 0x55, 0x00, 0x1B, 0x39, 0x80, 0x28, 0x38, 0x00, 0x48, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x730E, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x22, 0x48, 0x00, 0x16, 0x48, 0x00, 0x09, 0xFE, 0x00, 0x14, 0x48, 0x00, 0x24, 0x4A, 0x00, 0x47, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x0C, 0xFE, 0x00, 0x14, 0x84, 0x00, 0x24, 0x84, 0x00, 0x44, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x28, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7312, { 0x00, 0x00, 0x00, 0x7E, 0x10, 0x00, 0x42, 0x14, 0x00, 0x42, 0x16, 0x00, 0x7E, 0x12, 0x00, 0x42, 0x10, 0x00, 0x42, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x42, 0x38, 0x00, 0x7E, 0x28, 0x00, 0x42, 0x28, 0x00, 0x7E, 0x2C, 0x00, 0x42, 0x64, 0x00, 0x42, 0x46, 0x00, 0x46, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7313, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x49, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x48, 0x56, 0x00, 0x08, 0xD2, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7315, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x47, 0x90, 0x00, 0x28, 0x90, 0x00, 0x10, 0xA0, 0x00, 0x28, 0xBF, 0x00, 0x4B, 0xC1, 0x00, 0x0A, 0x0A, 0x00, 0x1A, 0x08, 0x00, 0x2A, 0x2A, 0x00, 0x4B, 0xAA, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xC9, 0x00, 0x08, 0x88, 0x00, 0x55, 0x28, 0x00, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7316, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x0C, 0x00, 0x00, 0x0D, 0xFF, 0x80, 0x15, 0x00, 0x80, 0x15, 0x00, 0x80, 0x25, 0xFF, 0x80, 0x05, 0x00, 0x80, 0x05, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7317, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x28, 0xC6, 0x00, 0x48, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x02, 0x00, 0x18, 0xF2, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x18, 0x02, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7318, { 0x00, 0x00, 0x00, 0x08, 0x81, 0x00, 0x4A, 0x85, 0x00, 0x2A, 0x85, 0x00, 0x37, 0xF5, 0x00, 0x14, 0x85, 0x00, 0x30, 0x85, 0x00, 0x57, 0xF5, 0x00, 0x10, 0x85, 0x00, 0x10, 0x85, 0x00, 0x37, 0xF5, 0x00, 0x54, 0x95, 0x00, 0x14, 0x95, 0x00, 0x14, 0x91, 0x00, 0x14, 0x91, 0x00, 0x14, 0xB1, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7319, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x44, 0x3C, 0x00, 0x2B, 0xE4, 0x00, 0x10, 0xA6, 0x00, 0x11, 0x12, 0x00, 0x29, 0xFE, 0x00, 0x48, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x22, 0x00, 0x28, 0x22, 0x00, 0x49, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x731B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x18, 0x04, 0x00, 0x08, 0x08, 0x00, 0x14, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x14, 0x70, 0x00, 0x24, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x05, 0x29, 0x00, 0x05, 0x29, 0x00, 0x07, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x731C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0C, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x06, 0x00, 0x00, 0x06, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x04, 0x41, 0x00, 0x18, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x731D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x04, 0xAA, 0x00, 0x0D, 0x11, 0x00, 0x0C, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x731E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x38, 0x00, 0x28, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x28, 0x7C, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x731F, { 0x00, 0x00, 0x00, 0x05, 0x22, 0x00, 0x45, 0xB6, 0x00, 0x28, 0x94, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x29, 0x22, 0x00, 0x49, 0x22, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x22, 0x00, 0x19, 0x22, 0x00, 0x29, 0xFE, 0x00, 0x49, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x80, 0x1B, 0x22, 0x80, 0x76, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7321, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x47, 0xFF, 0x00, 0x2A, 0x52, 0x00, 0x12, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x4B, 0xFE, 0x00, 0x0A, 0x42, 0x00, 0x08, 0x40, 0x00, 0x18, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x4A, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0x20, 0x00, 0x50, 0xC0, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7322, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x44, 0x8F, 0x80, 0x28, 0x88, 0x80, 0x10, 0x88, 0x80, 0x17, 0xF8, 0x80, 0x28, 0x8F, 0x80, 0x48, 0x88, 0x80, 0x08, 0x88, 0x80, 0x1B, 0xE8, 0x80, 0x1A, 0x2F, 0x80, 0x2A, 0x28, 0x80, 0x4A, 0x28, 0x80, 0x0A, 0x28, 0x80, 0x0A, 0x28, 0x80, 0x1B, 0xE8, 0x80, 0x70, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7324, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x45, 0xFA, 0x00, 0x2A, 0x28, 0x80, 0x11, 0x6D, 0x00, 0x10, 0xC6, 0x00, 0x29, 0x83, 0x00, 0x4B, 0x01, 0x80, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7325, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0C, 0x90, 0x00, 0x14, 0x91, 0x00, 0x24, 0x8A, 0x00, 0x04, 0x84, 0x00, 0x04, 0xBC, 0x00, 0x07, 0xC2, 0x00, 0x18, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7327, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x10, 0x9E, 0x00, 0x10, 0x92, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x19, 0x7D, 0x00, 0x29, 0x45, 0x00, 0x49, 0x45, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x19, 0x01, 0x00, 0x71, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7328, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x44, 0x1E, 0x00, 0x2B, 0xF2, 0x00, 0x10, 0xA3, 0x00, 0x11, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x40, 0x00, 0x18, 0x7E, 0x00, 0x28, 0xC2, 0x00, 0x49, 0x86, 0x00, 0x0B, 0x6C, 0x00, 0x08, 0x38, 0x00, 0x18, 0xEE, 0x00, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7329, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x0C, 0x90, 0x00, 0x0D, 0xFF, 0x00, 0x15, 0x10, 0x00, 0x26, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x732A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x80, 0x24, 0x11, 0x00, 0x18, 0xFF, 0x00, 0x08, 0x12, 0x00, 0x14, 0x14, 0x00, 0x27, 0xFF, 0x80, 0x04, 0x14, 0x00, 0x04, 0x22, 0x00, 0x0C, 0xC0, 0x00, 0x0F, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x732B, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x14, 0x22, 0x00, 0x0C, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x06, 0x49, 0x00, 0x06, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x22, 0x49, 0x00, 0x02, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x732C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x29, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0x01, 0x00, 0x71, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x732E, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x05, 0x00, 0x7F, 0xC5, 0x80, 0x04, 0x04, 0x80, 0x04, 0x04, 0x00, 0x7F, 0xDF, 0x80, 0x40, 0x44, 0x00, 0x51, 0x44, 0x00, 0x4A, 0x44, 0x00, 0x5F, 0x4E, 0x00, 0x44, 0x4A, 0x00, 0x5F, 0x4A, 0x00, 0x44, 0x4A, 0x00, 0x44, 0x4B, 0x00, 0x44, 0x59, 0x00, 0x40, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x732F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x45, 0x11, 0x00, 0x29, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x20, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x49, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x19, 0x49, 0x00, 0x71, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7331, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x28, 0x42, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x28, 0x29, 0x00, 0x48, 0x6A, 0x00, 0x08, 0xC8, 0x00, 0x19, 0x88, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7332, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x19, 0xA0, 0x80, 0x1B, 0x20, 0x80, 0x29, 0x78, 0x80, 0x49, 0xCC, 0x80, 0x09, 0x00, 0x80, 0x09, 0xFD, 0x80, 0x18, 0x01, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7334, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x49, 0x7E, 0x00, 0x2B, 0x02, 0x00, 0x32, 0x02, 0x00, 0x12, 0xFF, 0x80, 0x36, 0x20, 0x00, 0x5A, 0x20, 0x00, 0x12, 0x7F, 0x00, 0x12, 0xC8, 0x00, 0x32, 0x08, 0x00, 0x52, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x12, 0x36, 0x00, 0x12, 0x63, 0x00, 0x62, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7335, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x80, 0x45, 0xFE, 0x00, 0x29, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x29, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x19, 0x7F, 0x00, 0x19, 0x55, 0x00, 0x29, 0x55, 0x00, 0x49, 0x7F, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x1A, 0x55, 0x00, 0x70, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7336, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0x1E, 0x00, 0x18, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x0C, 0x94, 0x80, 0x15, 0x14, 0x00, 0x24, 0xFF, 0x80, 0x04, 0x94, 0x80, 0x0C, 0xA4, 0x80, 0x0C, 0xC7, 0x80, 0x14, 0x80, 0x80, 0x24, 0xFF, 0x80, 0x04, 0x80, 0x80, 0x04, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x18, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7337, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x04, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x25, 0x24, 0x00, 0x05, 0x3F, 0x80, 0x1F, 0xC4, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x19, 0xCA, 0x00, 0x10, 0x4A, 0x00, 0x1F, 0xCA, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x51, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7338, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x12, 0x00, 0x11, 0x12, 0x00, 0x29, 0xFE, 0x00, 0x45, 0x00, 0x00, 0x05, 0x7E, 0x00, 0x0D, 0x42, 0x00, 0x15, 0x7E, 0x00, 0x25, 0x42, 0x00, 0x45, 0x42, 0x00, 0x05, 0x7E, 0x00, 0x05, 0x42, 0x00, 0x05, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7339, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x44, 0x24, 0x00, 0x2B, 0xFE, 0x00, 0x10, 0x70, 0x00, 0x28, 0xA8, 0x00, 0x49, 0x24, 0x00, 0x0A, 0x23, 0x00, 0x1D, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x08, 0x00, 0x00, 0x57, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x733A, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x44, 0x3E, 0x00, 0x28, 0x62, 0x00, 0x10, 0xD6, 0x00, 0x11, 0xAC, 0x00, 0x28, 0x18, 0x00, 0x48, 0x60, 0x00, 0x0B, 0x80, 0x00, 0x18, 0xFF, 0x00, 0x19, 0x10, 0x00, 0x28, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x733B, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x4F, 0xCE, 0x00, 0x28, 0x78, 0x00, 0x30, 0x88, 0x00, 0x11, 0x11, 0x00, 0x31, 0x0B, 0x00, 0x51, 0x06, 0x00, 0x11, 0xCC, 0x00, 0x17, 0x09, 0x00, 0x31, 0x3F, 0x80, 0x51, 0x04, 0x80, 0x11, 0x15, 0x00, 0x11, 0x15, 0x00, 0x11, 0x35, 0x80, 0x11, 0x24, 0x80, 0x63, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x733D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x80, 0x29, 0x00, 0x80, 0x11, 0x7E, 0x80, 0x10, 0x42, 0x00, 0x28, 0x42, 0x00, 0x48, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x18, 0x7E, 0x00, 0x28, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x24, 0x00, 0x18, 0x66, 0x00, 0x71, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x733E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0xBE, 0x00, 0x0C, 0xA2, 0x00, 0x17, 0xFF, 0x80, 0x26, 0x00, 0x80, 0x04, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x18, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x733F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x05, 0x01, 0x00, 0x0D, 0xFF, 0x00, 0x0D, 0x29, 0x00, 0x14, 0x68, 0x80, 0x14, 0xA5, 0x00, 0x25, 0x26, 0x00, 0x06, 0x3E, 0x00, 0x05, 0xE1, 0x00, 0x18, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7343, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x8A, 0x00, 0x24, 0x8B, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x9C, 0x00, 0x11, 0x14, 0x00, 0x11, 0x16, 0x00, 0x0B, 0xB2, 0x00, 0x1E, 0x23, 0x00, 0x70, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7344, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x29, 0xE2, 0x00, 0x18, 0x03, 0x00, 0x08, 0x02, 0x80, 0x1B, 0xF2, 0x00, 0x14, 0x1F, 0x80, 0x24, 0x02, 0x00, 0x05, 0xE2, 0x00, 0x0C, 0x02, 0x00, 0x0D, 0xE5, 0x00, 0x14, 0x05, 0x00, 0x14, 0x05, 0x00, 0x25, 0xE5, 0x00, 0x05, 0x28, 0x80, 0x05, 0xE8, 0x80, 0x19, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7345, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x25, 0x3F, 0x80, 0x19, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x5F, 0x00, 0x25, 0xD5, 0x00, 0x05, 0x15, 0x00, 0x0D, 0x15, 0x00, 0x0D, 0x15, 0x00, 0x15, 0xD5, 0x00, 0x15, 0x55, 0x00, 0x25, 0x55, 0x00, 0x05, 0x55, 0x00, 0x05, 0xD7, 0x00, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x734D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x80, 0x19, 0x84, 0x80, 0x77, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x734E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x22, 0x3F, 0x00, 0x22, 0xE9, 0x00, 0x3E, 0x2E, 0x00, 0x02, 0xF8, 0x00, 0x7E, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x32, 0x62, 0x00, 0x62, 0x26, 0x00, 0x00, 0x88, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x734F, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x44, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7350, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x14, 0x44, 0x00, 0x17, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x0D, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7352, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x08, 0x62, 0x00, 0x3F, 0x54, 0x00, 0x09, 0x88, 0x00, 0x09, 0x16, 0x00, 0x11, 0x21, 0x80, 0x26, 0x50, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7356, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x28, 0x82, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x82, 0x00, 0x73, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7357, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x19, 0x02, 0x00, 0x09, 0x8A, 0x00, 0x15, 0x52, 0x00, 0x15, 0xFF, 0x80, 0x25, 0x06, 0x80, 0x05, 0xAB, 0x00, 0x0D, 0xAA, 0x00, 0x0D, 0xAA, 0x00, 0x15, 0xFA, 0x00, 0x15, 0x22, 0x00, 0x25, 0x25, 0x00, 0x05, 0x25, 0x00, 0x05, 0x48, 0x80, 0x1A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7358, { 0x00, 0x00, 0x00, 0x2A, 0x10, 0x00, 0x6B, 0x10, 0x00, 0x49, 0x3F, 0x80, 0x7F, 0x23, 0x00, 0x49, 0x76, 0x00, 0x5D, 0x1C, 0x00, 0x6B, 0x08, 0x00, 0x49, 0x1E, 0x00, 0x4B, 0x73, 0x80, 0x00, 0x84, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x735D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFE, 0x00, 0x28, 0x44, 0x00, 0x10, 0x28, 0x00, 0x13, 0xFF, 0x00, 0x28, 0x52, 0x00, 0x48, 0x94, 0x00, 0x09, 0x30, 0x00, 0x1B, 0xFF, 0x00, 0x1A, 0x49, 0x00, 0x2A, 0x89, 0x00, 0x4B, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1A, 0x79, 0x00, 0x72, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x735E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x92, 0x00, 0x18, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x735F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x28, 0x82, 0x00, 0x4B, 0xEF, 0x80, 0x08, 0x82, 0x00, 0x18, 0xE2, 0x00, 0x1B, 0x8F, 0x80, 0x28, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x80, 0x18, 0xC4, 0x80, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7360, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x44, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x11, 0x45, 0x00, 0x28, 0x82, 0x00, 0x49, 0xFF, 0x00, 0x0A, 0x82, 0x80, 0x18, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7363, { 0x00, 0x00, 0x00, 0x48, 0x48, 0x00, 0x24, 0x8A, 0x00, 0x00, 0x0B, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xDC, 0x00, 0x00, 0x14, 0x00, 0x3F, 0x94, 0x00, 0x20, 0x96, 0x00, 0x20, 0xB2, 0x00, 0x3F, 0xA3, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7366, { 0x00, 0x00, 0x00, 0x04, 0x84, 0x00, 0x47, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x80, 0x00, 0x19, 0xFF, 0x80, 0x2B, 0x10, 0x80, 0x4D, 0x38, 0x80, 0x09, 0x6C, 0x80, 0x09, 0x01, 0x80, 0x19, 0xF9, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7367, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x28, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x48, 0x50, 0x80, 0x08, 0x93, 0x00, 0x09, 0x8C, 0x00, 0x1A, 0xB3, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7368, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x19, 0x24, 0x80, 0x09, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x2C, 0x40, 0x00, 0x04, 0xFF, 0x80, 0x0D, 0x20, 0x80, 0x0F, 0xFC, 0x80, 0x15, 0x24, 0x80, 0x25, 0xFC, 0x80, 0x04, 0x24, 0x80, 0x04, 0x3E, 0x80, 0x07, 0xC2, 0x80, 0x08, 0x01, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7369, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x9F, 0x00, 0x28, 0x90, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x05, 0x00, 0x28, 0x04, 0x80, 0x4B, 0xFF, 0x80, 0x0A, 0x02, 0x00, 0x1A, 0xFA, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0xAA, 0x80, 0x4B, 0xAB, 0x00, 0x0A, 0x32, 0x00, 0x0A, 0xC6, 0x80, 0x1A, 0x0A, 0x80, 0x74, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x736A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x14, 0x00, 0x18, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x14, 0x3E, 0x00, 0x14, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x04, 0xAA, 0x80, 0x0C, 0x9C, 0x80, 0x0C, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x736B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x38, 0x00, 0x28, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x28, 0x7C, 0x00, 0x48, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x19, 0x29, 0x00, 0x19, 0x29, 0x00, 0x29, 0xEF, 0x00, 0x48, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x19, 0xC7, 0x00, 0x73, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x736C, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x4B, 0xDF, 0x80, 0x2E, 0x42, 0x80, 0x10, 0x82, 0x80, 0x13, 0xE6, 0x80, 0x2A, 0xAC, 0x80, 0x4A, 0xA9, 0x80, 0x0B, 0xE0, 0x00, 0x1A, 0xAA, 0x00, 0x1A, 0xAF, 0x80, 0x2B, 0xEA, 0x00, 0x4A, 0x22, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x74, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x736D, { 0x00, 0x00, 0x00, 0x45, 0x08, 0x00, 0x29, 0x08, 0x00, 0x17, 0xCE, 0x00, 0x31, 0x12, 0x00, 0x57, 0xE4, 0x00, 0x15, 0x5F, 0x00, 0x15, 0x51, 0x00, 0x35, 0x55, 0x00, 0x57, 0xD5, 0x00, 0x11, 0x15, 0x00, 0x13, 0x95, 0x00, 0x15, 0x55, 0x00, 0x19, 0x04, 0x00, 0x11, 0x0A, 0x00, 0x51, 0x11, 0x00, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x736E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x29, 0x11, 0x00, 0x49, 0xBB, 0x00, 0x09, 0x55, 0x00, 0x19, 0xBB, 0x00, 0x19, 0x11, 0x00, 0x29, 0xBB, 0x00, 0x49, 0x55, 0x00, 0x09, 0xBB, 0x00, 0x09, 0x11, 0x00, 0x19, 0x11, 0x00, 0x71, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x736F, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x45, 0xFC, 0x00, 0x28, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x49, 0x93, 0x00, 0x09, 0x55, 0x00, 0x19, 0x39, 0x00, 0x19, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x19, 0x49, 0x00, 0x72, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7370, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x1A, 0x20, 0x80, 0x08, 0x51, 0x00, 0x15, 0x42, 0x80, 0x16, 0x7E, 0x80, 0x24, 0x00, 0x00, 0x0D, 0xFF, 0x00, 0x0D, 0x29, 0x00, 0x15, 0x29, 0x00, 0x17, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7371, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x29, 0x00, 0x80, 0x10, 0xFF, 0x00, 0x10, 0x52, 0x00, 0x29, 0x94, 0x00, 0x48, 0x18, 0x00, 0x08, 0xFF, 0x00, 0x1B, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x42, 0x00, 0x71, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7372, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x25, 0xFF, 0x80, 0x18, 0x24, 0x00, 0x08, 0x48, 0x00, 0x14, 0xFF, 0x00, 0x25, 0x90, 0x00, 0x06, 0xFF, 0x00, 0x04, 0x90, 0x00, 0x0C, 0xFE, 0x00, 0x0C, 0x90, 0x00, 0x14, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x04, 0x38, 0x00, 0x19, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7375, { 0x00, 0x00, 0x00, 0x04, 0x92, 0x00, 0x25, 0x24, 0x00, 0x18, 0x92, 0x00, 0x08, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x25, 0x55, 0x00, 0x05, 0x29, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x12, 0x00, 0x15, 0x12, 0x00, 0x25, 0xDE, 0x00, 0x05, 0x12, 0x00, 0x05, 0xDE, 0x00, 0x05, 0x12, 0x00, 0x09, 0xDE, 0x80, 0x36, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7377, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x47, 0xFF, 0x80, 0x2A, 0x24, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x24, 0x00, 0x2A, 0x3C, 0x00, 0x4A, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x1A, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x4A, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x42, 0x00, 0x71, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7378, { 0x00, 0x00, 0x00, 0x3D, 0xE4, 0x00, 0x25, 0x25, 0x00, 0x3D, 0xE4, 0x80, 0x00, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x22, 0x3F, 0x80, 0x3F, 0xE4, 0x00, 0x22, 0x24, 0x00, 0x3F, 0xE4, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xEA, 0x00, 0x00, 0x0A, 0x00, 0x1F, 0xCA, 0x00, 0x10, 0x51, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7379, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x44, 0x1E, 0x00, 0x28, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x29, 0x7E, 0x00, 0x49, 0x10, 0x80, 0x09, 0x7F, 0x80, 0x19, 0x49, 0x00, 0x19, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x49, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x0A, 0xFF, 0x00, 0x18, 0xA9, 0x00, 0x71, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x737A, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x14, 0x4F, 0x80, 0x08, 0x44, 0x80, 0x0B, 0xF4, 0x80, 0x14, 0x49, 0x80, 0x25, 0xF0, 0x00, 0x05, 0x57, 0x80, 0x05, 0x54, 0x80, 0x0D, 0x57, 0x80, 0x0D, 0xF4, 0x80, 0x14, 0x47, 0x80, 0x24, 0xE4, 0x80, 0x04, 0xD7, 0x80, 0x05, 0x48, 0x00, 0x05, 0x42, 0x80, 0x1A, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x737B, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0xE5, 0x00, 0x01, 0x04, 0x80, 0x1F, 0xF4, 0x00, 0x12, 0xE4, 0x00, 0x1F, 0x3F, 0x80, 0x13, 0xE4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xF4, 0x00, 0x17, 0xE4, 0x00, 0x14, 0x24, 0x00, 0x17, 0xE6, 0x00, 0x1F, 0xEA, 0x00, 0x1A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x28, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x737C, { 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x52, 0x49, 0x00, 0x22, 0x88, 0x80, 0x26, 0xFF, 0x80, 0x54, 0x88, 0x80, 0x14, 0xDD, 0x80, 0x14, 0xAA, 0x80, 0x14, 0xDD, 0x80, 0x36, 0x88, 0x80, 0x52, 0xDD, 0x80, 0x12, 0xAA, 0x80, 0x12, 0xDD, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x64, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x737E, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x47, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x13, 0xDE, 0x00, 0x2A, 0x52, 0x00, 0x4B, 0xDE, 0x00, 0x08, 0xA0, 0x00, 0x19, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x4D, 0x10, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x10, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7380, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x28, 0x85, 0x00, 0x4B, 0x0F, 0x80, 0x09, 0x5A, 0x00, 0x18, 0x8A, 0x00, 0x19, 0x2F, 0x00, 0x29, 0xEA, 0x00, 0x48, 0xAA, 0x00, 0x08, 0x8F, 0x00, 0x09, 0xAA, 0x00, 0x1A, 0xAA, 0x00, 0x70, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7381, { 0x00, 0x00, 0x00, 0x13, 0xCF, 0x00, 0x12, 0x49, 0x00, 0x53, 0xCF, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x54, 0x04, 0x00, 0x15, 0xE4, 0x00, 0x14, 0x87, 0x80, 0x17, 0xFD, 0x00, 0x35, 0x29, 0x00, 0x55, 0xE5, 0x00, 0x15, 0x27, 0x00, 0x15, 0xE2, 0x00, 0x19, 0x27, 0x00, 0x11, 0xE5, 0x00, 0x63, 0x2D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7383, { 0x00, 0x00, 0x00, 0x05, 0xEF, 0x00, 0x45, 0x29, 0x00, 0x29, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x29, 0x29, 0x00, 0x4B, 0xFF, 0x80, 0x0E, 0x10, 0x00, 0x1B, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x46, 0x00, 0x18, 0x38, 0x00, 0x73, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7384, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x10, 0x80, 0x00, 0x09, 0x10, 0x00, 0x06, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x7F, 0x00, 0x3F, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7385, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x52, 0x00, 0x08, 0x52, 0x00, 0x18, 0x53, 0x00, 0x10, 0xD1, 0x00, 0x62, 0x91, 0x80, 0x36, 0x12, 0x00, 0x14, 0x12, 0x00, 0x0C, 0x36, 0x00, 0x18, 0x04, 0x00, 0x12, 0x0C, 0x00, 0x32, 0x18, 0x00, 0x2F, 0x30, 0x00, 0x79, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7386, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x50, 0x00, 0x29, 0x22, 0x00, 0x11, 0x12, 0x00, 0x0A, 0x14, 0x00, 0x04, 0x08, 0x00, 0x05, 0x08, 0x00, 0x08, 0x91, 0x00, 0x13, 0xE7, 0x80, 0x3C, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7387, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x10, 0x81, 0x00, 0x09, 0x22, 0x00, 0x02, 0x44, 0x00, 0x09, 0x82, 0x00, 0x11, 0x09, 0x00, 0x02, 0x7C, 0x80, 0x1F, 0xC2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7389, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x00, 0x42, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x738B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x738E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x71, 0x83, 0x00, 0x01, 0x01, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7391, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0x08, 0x00, 0x39, 0x09, 0x00, 0x12, 0x09, 0x00, 0x04, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7393, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x10, 0xC1, 0x00, 0x10, 0x81, 0x00, 0x11, 0x81, 0x00, 0x7C, 0x01, 0x00, 0x10, 0x79, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1C, 0x03, 0x00, 0x70, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7394, { 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0B, 0x49, 0x00, 0x0C, 0x49, 0x00, 0x30, 0x89, 0x00, 0x00, 0x89, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7396, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x38, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x00, 0x0C, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0E, 0x80, 0x80, 0x30, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x739B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x05, 0xFC, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x0E, 0x12, 0x00, 0x79, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x739C, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x7C, 0x46, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC3, 0x00, 0x10, 0x81, 0x00, 0x11, 0xA1, 0x80, 0x7C, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x62, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x4F, 0x00, 0x00, 0x79, 0x00, 0x01, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x739E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x1C, 0x44, 0x00, 0x70, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x739F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x18, 0x00, 0x38, 0x24, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73A0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0xC7, 0x00, 0x13, 0x45, 0x80, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1C, 0xC4, 0x00, 0x70, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73A2, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x46, 0x00, 0x10, 0xC2, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x7C, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x62, 0x00, 0x1C, 0x42, 0x00, 0x70, 0xC6, 0x00, 0x01, 0x84, 0x00, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x7C, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x1D, 0x81, 0x00, 0x71, 0x01, 0x00, 0x03, 0x01, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73A6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x7C, 0x12, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x28, 0x00, 0x10, 0x2C, 0x00, 0x1C, 0x64, 0x00, 0x70, 0x46, 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73A7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x00, 0x09, 0x1F, 0x00, 0x3F, 0xE4, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x44, 0x00, 0x00, 0x84, 0x80, 0x00, 0x84, 0x80, 0x01, 0x07, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x0E, 0x24, 0x00, 0x38, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x84, 0x80, 0x03, 0x07, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73AA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x1C, 0x04, 0x00, 0x70, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73AB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x10, 0x46, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x28, 0x00, 0x10, 0x38, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x38, 0x00, 0x70, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73AD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, 0x08, 0xFB, 0x00, 0x3E, 0x8C, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0E, 0xF8, 0x80, 0x33, 0x88, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73AE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x22, 0x00, 0x10, 0x2A, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73AF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x10, 0x68, 0x00, 0x10, 0xA6, 0x00, 0x11, 0x23, 0x00, 0x12, 0x21, 0x00, 0x10, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73B0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x7E, 0x84, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x3E, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x20, 0x00, 0x0E, 0x50, 0x00, 0x78, 0x50, 0x00, 0x20, 0x91, 0x00, 0x01, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73B2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x00, 0x09, 0x00, 0x80, 0x08, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x30, 0x21, 0x00, 0x00, 0x26, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73B3, { 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x29, 0x00, 0x3E, 0x48, 0x00, 0x08, 0xC8, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x4F, 0x80, 0x0A, 0x78, 0x00, 0x3E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x30, 0x44, 0x00, 0x00, 0x44, 0x80, 0x00, 0x42, 0x80, 0x00, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73B5, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73B7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x1D, 0x02, 0x00, 0x71, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73B9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x20, 0x00, 0x3E, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x22, 0x00, 0x0C, 0x41, 0x00, 0x30, 0x9F, 0x80, 0x03, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73BA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x24, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x11, 0x84, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73BB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x11, 0x00, 0x7D, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x41, 0x00, 0x11, 0x43, 0x00, 0x11, 0x66, 0x00, 0x1F, 0x2C, 0x00, 0x72, 0x18, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x66, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73BC, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x45, 0x80, 0x11, 0x77, 0x00, 0x7D, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x1D, 0x44, 0x00, 0x71, 0x74, 0x80, 0x01, 0xC4, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73BD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x13, 0x01, 0x00, 0x10, 0xF9, 0x00, 0x7C, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0xF9, 0x00, 0x1C, 0x01, 0x00, 0x70, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x61, 0x00, 0x10, 0x43, 0x00, 0x10, 0xC2, 0x00, 0x7D, 0x8E, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x70, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73C0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x3E, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x0E, 0x40, 0x80, 0x30, 0x7F, 0x80, 0x00, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73C5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x7D, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73C6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x60, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xF1, 0x80, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x70, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73C8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x10, 0x87, 0x80, 0x13, 0xF4, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x7C, 0x94, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x11, 0x94, 0x80, 0x11, 0x14, 0x80, 0x1D, 0x34, 0x80, 0x73, 0x24, 0x80, 0x02, 0x27, 0x80, 0x06, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0E, 0x84, 0x00, 0x30, 0xF4, 0x80, 0x01, 0x82, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x0E, 0xA5, 0x00, 0x30, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73CB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x60, 0x00, 0x11, 0xC7, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x1D, 0xE4, 0x80, 0x73, 0x27, 0x80, 0x00, 0x24, 0x00, 0x00, 0x64, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73CC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x11, 0x00, 0x3E, 0x09, 0x00, 0x08, 0x01, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0A, 0x50, 0x80, 0x08, 0x50, 0x80, 0x0E, 0x61, 0x00, 0x38, 0x41, 0x00, 0x00, 0xBF, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73CD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x89, 0x80, 0x09, 0x08, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x44, 0x00, 0x08, 0x88, 0x80, 0x08, 0x11, 0x00, 0x0A, 0x22, 0x00, 0x0C, 0xC4, 0x00, 0x30, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73CE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x11, 0x88, 0x00, 0x10, 0x08, 0x00, 0x7C, 0x08, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0xC9, 0x80, 0x1C, 0x88, 0x80, 0x70, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x0E, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73D0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x1C, 0x84, 0x00, 0x71, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73D1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x50, 0x00, 0x3E, 0x4C, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x3E, 0x50, 0x00, 0x08, 0x52, 0x00, 0x08, 0x92, 0x00, 0x08, 0x94, 0x00, 0x08, 0x98, 0x00, 0x0F, 0x10, 0x00, 0x39, 0x31, 0x00, 0x12, 0x51, 0x00, 0x04, 0x0F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73D2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x7C, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73D3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x10, 0x10, 0x00, 0x1C, 0x38, 0x00, 0x70, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73D6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x30, 0x84, 0x00, 0x00, 0x84, 0x80, 0x01, 0x04, 0x80, 0x06, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73D9, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x11, 0x80, 0x08, 0x32, 0x80, 0x08, 0x54, 0x80, 0x08, 0x98, 0x80, 0x09, 0x10, 0x80, 0x3E, 0x11, 0x80, 0x08, 0x11, 0x80, 0x08, 0x32, 0x80, 0x08, 0x54, 0x80, 0x0E, 0x98, 0x80, 0x39, 0x10, 0x80, 0x02, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73DE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x24, 0x00, 0x08, 0x18, 0x00, 0x3E, 0x16, 0x00, 0x08, 0x21, 0x80, 0x08, 0xC0, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x30, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73E0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x09, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x38, 0x00, 0x0E, 0x54, 0x00, 0x38, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x3F, 0x80, 0x78, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73E3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x0C, 0xFC, 0x80, 0x3E, 0x84, 0x80, 0x08, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x08, 0xFC, 0x80, 0x08, 0x84, 0x80, 0x0E, 0x00, 0x80, 0x30, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73E4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3E, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x0E, 0x91, 0x00, 0x30, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0E, 0x4F, 0x80, 0x31, 0xF2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73E6, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x3E, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xBD, 0x00, 0x08, 0x81, 0x00, 0x0E, 0x81, 0x00, 0x38, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73E7, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x12, 0x49, 0x00, 0x13, 0x4B, 0x00, 0x11, 0x4E, 0x00, 0x11, 0x48, 0x00, 0x7C, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x4E, 0x00, 0x11, 0xCB, 0x00, 0x17, 0x49, 0x00, 0x10, 0x48, 0x00, 0x1C, 0xC8, 0x00, 0x70, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x3E, 0x80, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x9F, 0x80, 0x3F, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x30, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73EA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73ED, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x2F, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x3F, 0x22, 0x00, 0x09, 0x2F, 0x80, 0x0A, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x38, 0x83, 0x80, 0x01, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x7E, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x12, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x1E, 0xBA, 0x00, 0x72, 0x22, 0x00, 0x06, 0x22, 0x80, 0x04, 0x22, 0x80, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73F1, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x01, 0x31, 0x80, 0x7D, 0x91, 0x00, 0x10, 0x93, 0x00, 0x10, 0x82, 0x00, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x86, 0x00, 0x1C, 0xF4, 0x00, 0x70, 0x1E, 0x00, 0x00, 0x73, 0x00, 0x01, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x7D, 0x21, 0x00, 0x12, 0x22, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x7C, 0x50, 0x00, 0x10, 0x94, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x14, 0x12, 0x00, 0x1B, 0xFF, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73F4, { 0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x7C, 0xCB, 0x00, 0x13, 0x89, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x88, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0xEB, 0x00, 0x13, 0x8A, 0x00, 0x10, 0x8E, 0x00, 0x1C, 0x84, 0x80, 0x70, 0x8E, 0x80, 0x00, 0x9B, 0x80, 0x03, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x07, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73F7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x3E, 0xE9, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x09, 0x78, 0x00, 0x09, 0x48, 0x00, 0x09, 0x48, 0x00, 0x0F, 0x48, 0x00, 0x31, 0x74, 0x00, 0x03, 0x84, 0x80, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x7C, 0x22, 0x00, 0x10, 0x22, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x70, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73F9, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xE9, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2C, 0x00, 0x0F, 0xCC, 0x00, 0x32, 0x08, 0x00, 0x02, 0x14, 0x80, 0x04, 0x62, 0x80, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x73FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x7C, 0x22, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x1D, 0xC1, 0x00, 0x73, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73FB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x13, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x11, 0x02, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x22, 0x00, 0x71, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE3, 0x00, 0x3E, 0x5C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0xE4, 0x00, 0x3E, 0x3F, 0x80, 0x08, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x09, 0x44, 0x00, 0x0E, 0x9F, 0x00, 0x30, 0x80, 0x00, 0x01, 0x60, 0x00, 0x02, 0x1F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x48, 0x00, 0x00, 0x88, 0x80, 0x01, 0x0F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x73FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x90, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x1D, 0x90, 0x00, 0x71, 0x50, 0x00, 0x03, 0x38, 0x00, 0x06, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7400, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x04, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7401, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x80, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x09, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x30, 0x88, 0x00, 0x00, 0xC8, 0x00, 0x01, 0x3F, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7403, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x34, 0x00, 0x08, 0x18, 0x00, 0x08, 0x34, 0x00, 0x08, 0x54, 0x00, 0x3E, 0x92, 0x00, 0x03, 0x12, 0x00, 0x0C, 0x11, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7405, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x94, 0x00, 0x0E, 0x88, 0x00, 0x30, 0xFC, 0x00, 0x03, 0x82, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3F, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x30, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7407, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x88, 0x80, 0x09, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x08, 0x27, 0x80, 0x0E, 0x40, 0x80, 0x30, 0x40, 0x80, 0x00, 0x81, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7409, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x42, 0x00, 0x08, 0x9F, 0x00, 0x3F, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x0E, 0x52, 0x00, 0x30, 0x92, 0x00, 0x00, 0x92, 0x00, 0x01, 0x12, 0x80, 0x06, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x740A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF7, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x25, 0x00, 0x7D, 0x25, 0x00, 0x13, 0xF5, 0x00, 0x10, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x1D, 0xA4, 0x80, 0x71, 0x24, 0x80, 0x03, 0x25, 0x80, 0x06, 0x24, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x740F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x7D, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0x28, 0x00, 0x7D, 0x48, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x08, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x08, 0x00, 0x71, 0x08, 0x00, 0x22, 0x8B, 0x00, 0x04, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7410, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x92, 0x00, 0x7E, 0x52, 0x00, 0x08, 0x54, 0x00, 0x08, 0x12, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0x10, 0x00, 0x20, 0x2C, 0x00, 0x00, 0xC2, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7411, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x7D, 0x11, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x1D, 0x01, 0x00, 0x71, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7413, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0x44, 0x00, 0x38, 0x44, 0x00, 0x00, 0x84, 0x80, 0x01, 0x07, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x741A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x41, 0x00, 0x73, 0x41, 0x00, 0x02, 0x41, 0x00, 0x06, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x741B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0x28, 0x80, 0x08, 0x29, 0x00, 0x08, 0x4F, 0x00, 0x09, 0x80, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x38, 0x00, 0x0E, 0x54, 0x00, 0x38, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7420, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x00, 0x00, 0x30, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7421, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x9F, 0x00, 0x3E, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x8A, 0x00, 0x0B, 0xFA, 0x00, 0x3E, 0x86, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xA4, 0x00, 0x0C, 0xA4, 0x00, 0x08, 0xAA, 0x00, 0x0E, 0x8A, 0x00, 0x30, 0x91, 0x00, 0x00, 0x91, 0x00, 0x01, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0x48, 0x80, 0x08, 0xC9, 0x00, 0x0B, 0x26, 0x00, 0x3E, 0x34, 0x00, 0x09, 0x5C, 0x00, 0x08, 0x8C, 0x00, 0x0B, 0x5A, 0x00, 0x0E, 0x2A, 0x00, 0x38, 0x4A, 0x00, 0x00, 0x89, 0x00, 0x03, 0x11, 0x00, 0x0C, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7424, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x00, 0x7D, 0xF2, 0x00, 0x10, 0x53, 0x00, 0x10, 0x89, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x7C, 0x11, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x10, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7425, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x20, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x21, 0x00, 0x09, 0x3E, 0x00, 0x09, 0xE0, 0x80, 0x3F, 0x3F, 0x80, 0x09, 0x00, 0x00, 0x09, 0x3C, 0x00, 0x09, 0x24, 0x00, 0x0F, 0x24, 0x00, 0x39, 0x44, 0x00, 0x02, 0x44, 0x80, 0x02, 0x87, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7426, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3E, 0x28, 0x00, 0x08, 0x46, 0x00, 0x09, 0x81, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0xF2, 0x00, 0x0E, 0x92, 0x00, 0x30, 0xF2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7428, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x80, 0x08, 0x89, 0x00, 0x08, 0xFA, 0x00, 0x0B, 0x8C, 0x00, 0x0C, 0x88, 0x00, 0x30, 0xF8, 0x80, 0x03, 0x8F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x11, 0x00, 0x80, 0x1D, 0xFF, 0x80, 0x71, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x742A, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x0D, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x742B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x82, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x08, 0xFE, 0x00, 0x0E, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x742C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x09, 0x00, 0x80, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x99, 0x00, 0x08, 0x99, 0x00, 0x09, 0x69, 0x00, 0x0A, 0x2B, 0x00, 0x0E, 0x48, 0x00, 0x30, 0x48, 0x00, 0x00, 0x88, 0x80, 0x01, 0x0F, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x742D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x7C, 0xC2, 0x00, 0x10, 0x86, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x10, 0x91, 0x00, 0x10, 0xD3, 0x00, 0x10, 0x5A, 0x00, 0x10, 0x3C, 0x00, 0x1C, 0x56, 0x00, 0x70, 0xD3, 0x00, 0x01, 0x91, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x742E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x4A, 0x00, 0x00, 0x89, 0x00, 0x01, 0x08, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x742F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0x7F, 0x00, 0x38, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7430, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x51, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x94, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x08, 0x51, 0x00, 0x0E, 0x52, 0x00, 0x38, 0x94, 0x00, 0x00, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x11, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x11, 0x00, 0x11, 0x7D, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x11, 0x45, 0x00, 0x1D, 0x7D, 0x00, 0x71, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7432, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x7C, 0x24, 0x00, 0x11, 0xE7, 0x80, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x7C, 0x24, 0x00, 0x11, 0xE7, 0x80, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x1C, 0xE7, 0x80, 0x73, 0xA4, 0x00, 0x00, 0x24, 0x00, 0x00, 0x64, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7433, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3C, 0x84, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x11, 0x8E, 0x00, 0x11, 0xCE, 0x00, 0x3E, 0xB5, 0x00, 0x12, 0x95, 0x00, 0x14, 0xA4, 0x80, 0x10, 0x84, 0x00, 0x1C, 0x84, 0x00, 0x30, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x07, 0xBF, 0x80, 0x38, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x06, 0x00, 0x0D, 0xF9, 0x80, 0x30, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7435, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x07, 0x84, 0x00, 0x38, 0x7F, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x0F, 0xD3, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x10, 0x80, 0x08, 0x10, 0x80, 0x0F, 0xDF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x1F, 0x9F, 0x80, 0x02, 0x04, 0x00, 0x3F, 0xDF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7438, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7439, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x78, 0xBF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x743A, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x09, 0x3F, 0x00, 0x08, 0x84, 0x00, 0x08, 0x04, 0x00, 0x3E, 0x84, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x10, 0x00, 0x31, 0x11, 0x00, 0x01, 0x27, 0x00, 0x02, 0x78, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x743C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x20, 0x00, 0x7C, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x7D, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x1C, 0xA8, 0x00, 0x71, 0xA6, 0x00, 0x22, 0x22, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x743F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7440, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x8A, 0x80, 0x0E, 0x8E, 0x80, 0x30, 0xF1, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x0E, 0x42, 0x00, 0x30, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7443, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x0B, 0xFF, 0x80, 0x3C, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x08, 0xFE, 0x00, 0x0E, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7444, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0x00, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x90, 0x00, 0x11, 0xFF, 0x00, 0x13, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7447, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x11, 0x02, 0x00, 0x1D, 0x12, 0x00, 0x71, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x744B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0xFF, 0x00, 0x30, 0x88, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x744D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7D, 0x84, 0x00, 0x11, 0x08, 0x00, 0x13, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x7D, 0x29, 0x00, 0x11, 0x4F, 0x00, 0x11, 0x81, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x28, 0x00, 0x70, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7451, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x7C, 0xA1, 0x00, 0x11, 0x33, 0x00, 0x10, 0x56, 0x00, 0x10, 0x98, 0x00, 0x11, 0x34, 0x00, 0x1C, 0x56, 0x00, 0x70, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7452, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x13, 0x29, 0x00, 0x1C, 0x49, 0x00, 0x71, 0x93, 0x00, 0x00, 0x22, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x3F, 0x21, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x00, 0x00, 0x3F, 0x1F, 0x00, 0x09, 0xD1, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x31, 0x0A, 0x00, 0x01, 0x11, 0x00, 0x01, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7457, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xF9, 0x00, 0x3E, 0x90, 0x80, 0x09, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x0E, 0x42, 0x00, 0x30, 0xA4, 0x00, 0x01, 0x18, 0x00, 0x02, 0x36, 0x00, 0x0C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x92, 0x00, 0x09, 0x24, 0x00, 0x08, 0x92, 0x00, 0x08, 0x49, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x45, 0x00, 0x0F, 0x29, 0x00, 0x31, 0x19, 0x00, 0x01, 0x65, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x745A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x47, 0x80, 0x3E, 0x44, 0x80, 0x08, 0x44, 0x80, 0x0B, 0xFC, 0x80, 0x08, 0x47, 0x80, 0x08, 0x44, 0x80, 0x3E, 0x44, 0x80, 0x08, 0x44, 0x80, 0x09, 0xF7, 0x80, 0x09, 0x14, 0x80, 0x09, 0x14, 0x80, 0x0F, 0x14, 0x80, 0x39, 0x14, 0x80, 0x01, 0xF4, 0x80, 0x01, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x745B, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x54, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3F, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x0E, 0x28, 0x00, 0x30, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x745C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x80, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xF2, 0x80, 0x08, 0x94, 0x80, 0x08, 0xF9, 0x00, 0x08, 0x9A, 0x00, 0x0E, 0xF9, 0x00, 0x30, 0x95, 0x00, 0x00, 0x92, 0x80, 0x00, 0xB2, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x745D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x745E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0E, 0xFF, 0x80, 0x30, 0x94, 0x80, 0x00, 0x94, 0x80, 0x00, 0x94, 0x80, 0x00, 0x94, 0x80, 0x00, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x745F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x07, 0x84, 0x00, 0x38, 0x7F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x12, 0x51, 0x00, 0x12, 0x21, 0x00, 0x22, 0x44, 0x80, 0x23, 0x84, 0x80, 0x0F, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7460, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0xDF, 0x80, 0x3F, 0x04, 0x80, 0x09, 0x04, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0xD8, 0x80, 0x3F, 0x13, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x09, 0x10, 0x80, 0x0F, 0xFF, 0x80, 0x31, 0x10, 0x80, 0x01, 0x10, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7462, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xC9, 0x80, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7463, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x7D, 0x93, 0x00, 0x11, 0x11, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x71, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7464, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x62, 0x00, 0x08, 0x94, 0x00, 0x09, 0x48, 0x00, 0x0A, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x3F, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x10, 0x00, 0x31, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xC6, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x0F, 0x29, 0x00, 0x39, 0x29, 0x00, 0x01, 0x29, 0x00, 0x01, 0x29, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7466, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x7D, 0xFE, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1C, 0x01, 0x00, 0x71, 0x55, 0x00, 0x03, 0x55, 0x00, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7467, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x28, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x9A, 0x00, 0x13, 0x71, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x1C, 0xD6, 0x00, 0x71, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x99, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x80, 0x3E, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x81, 0x00, 0x0C, 0xFF, 0x00, 0x30, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7469, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x15, 0x14, 0x80, 0x16, 0x15, 0x00, 0x24, 0xA6, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x20, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x746A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x84, 0x80, 0x30, 0x22, 0x80, 0x00, 0x90, 0x80, 0x02, 0x41, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x746B, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x00, 0x7D, 0xF0, 0x00, 0x10, 0x24, 0x00, 0x10, 0xB6, 0x00, 0x11, 0x93, 0x00, 0x11, 0x01, 0x00, 0x7C, 0x60, 0x00, 0x11, 0xCF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xEF, 0x00, 0x1D, 0x01, 0x00, 0x71, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x746D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x09, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x41, 0x00, 0x71, 0x41, 0x00, 0x02, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x746E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x48, 0x00, 0x10, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x1C, 0x92, 0x00, 0x71, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x746F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xF7, 0x80, 0x3F, 0x14, 0x80, 0x09, 0x14, 0x80, 0x09, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x09, 0x14, 0x80, 0x3F, 0xF4, 0x80, 0x09, 0x04, 0x80, 0x09, 0x4C, 0x80, 0x09, 0x34, 0x80, 0x0F, 0x14, 0x80, 0x31, 0xF5, 0x80, 0x03, 0x14, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7470, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4A, 0x80, 0x1C, 0xCF, 0x80, 0x70, 0x88, 0x00, 0x01, 0x88, 0x80, 0x03, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7471, { 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0xFC, 0x00, 0x7C, 0x80, 0x80, 0x10, 0x7F, 0x80, 0x10, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x7D, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x00, 0x00, 0x71, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7472, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x41, 0x00, 0x03, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7473, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x1C, 0xFF, 0x00, 0x71, 0x88, 0x00, 0x06, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7476, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x00, 0x7D, 0xF1, 0x00, 0x10, 0x23, 0x00, 0x11, 0x12, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1D, 0x11, 0x00, 0x71, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7477, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x0B, 0xE0, 0x00, 0x7D, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x7C, 0x42, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x1D, 0x50, 0x00, 0x72, 0x20, 0x00, 0x24, 0x50, 0x00, 0x00, 0x8F, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x747E, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0E, 0x08, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7480, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x90, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x13, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x1D, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7481, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x5D, 0x00, 0x11, 0x25, 0x00, 0x11, 0x55, 0x00, 0x7D, 0x09, 0x00, 0x11, 0x15, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x1D, 0x59, 0x00, 0x71, 0x49, 0x80, 0x03, 0x62, 0x80, 0x02, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7482, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x0E, 0x7F, 0x00, 0x38, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7483, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0xAA, 0x00, 0x08, 0x92, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x25, 0x00, 0x0B, 0x4F, 0x00, 0x0D, 0xF3, 0x00, 0x31, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7485, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x7D, 0x24, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x1C, 0xD6, 0x00, 0x71, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x7C, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x10, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x10, 0x11, 0x00, 0x7C, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x10, 0x10, 0x00, 0x10, 0xE4, 0x00, 0x1C, 0x19, 0x00, 0x70, 0xE2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7487, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xDF, 0x80, 0x11, 0x20, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3F, 0x80, 0x3D, 0xC5, 0x00, 0x11, 0x44, 0x00, 0x11, 0x54, 0x00, 0x11, 0x57, 0x80, 0x1D, 0x54, 0x00, 0x32, 0x54, 0x00, 0x02, 0x54, 0x00, 0x04, 0xAC, 0x00, 0x09, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7489, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x38, 0x7F, 0x00, 0x10, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x38, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x17, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x08, 0x00, 0x31, 0x88, 0x00, 0x02, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x748B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x3F, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x748E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x7E, 0xD6, 0x00, 0x12, 0xD6, 0x00, 0x13, 0x5A, 0x00, 0x13, 0x5A, 0x00, 0x7D, 0x8C, 0x00, 0x12, 0x52, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x1C, 0x88, 0x00, 0x70, 0x50, 0x00, 0x20, 0x20, 0x00, 0x00, 0xD8, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x748F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x7C, 0xC2, 0x00, 0x10, 0x86, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x20, 0x00, 0x12, 0x3A, 0x00, 0x12, 0x52, 0x80, 0x13, 0x93, 0x00, 0x12, 0x7A, 0x00, 0x1E, 0x12, 0x00, 0x72, 0x12, 0x00, 0x03, 0xAA, 0x80, 0x06, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7490, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xC4, 0x00, 0x7A, 0x4F, 0x00, 0x12, 0x59, 0x00, 0x12, 0x73, 0x00, 0x12, 0x4E, 0x00, 0x13, 0xC4, 0x00, 0x78, 0x8E, 0x00, 0x12, 0x9B, 0x00, 0x12, 0xD1, 0x80, 0x12, 0x80, 0x00, 0x12, 0x9F, 0x00, 0x1A, 0x91, 0x00, 0x72, 0xF1, 0x00, 0x03, 0x91, 0x00, 0x06, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7491, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7D, 0xFF, 0x80, 0x13, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0xAA, 0x00, 0x01, 0xAB, 0x00, 0x03, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7492, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF4, 0x00, 0x7D, 0x18, 0x80, 0x10, 0xA5, 0x00, 0x10, 0x42, 0x00, 0x11, 0xBD, 0x80, 0x10, 0x00, 0x00, 0x7C, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x42, 0x00, 0x70, 0x66, 0x00, 0x00, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7498, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x3F, 0x11, 0x80, 0x08, 0x84, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x34, 0x00, 0x0B, 0x54, 0x00, 0x0C, 0xFF, 0x80, 0x30, 0x84, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7499, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x11, 0x45, 0x00, 0x10, 0x82, 0x00, 0x7D, 0xFF, 0x00, 0x12, 0x82, 0x80, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x749A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x22, 0x00, 0x10, 0x14, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x29, 0x00, 0x10, 0x4A, 0x00, 0x7C, 0x98, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0x44, 0x80, 0x11, 0xBF, 0x80, 0x1D, 0x24, 0x80, 0x71, 0x24, 0x80, 0x01, 0x3C, 0x80, 0x01, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x749C, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x0E, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x749E, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x01, 0x29, 0x00, 0x00, 0xAA, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x10, 0x00, 0x30, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x749F, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x30, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0x11, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74A0, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0x11, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x7D, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74A1, { 0x00, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, 0x92, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0x24, 0x00, 0x09, 0x3F, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x0B, 0x3F, 0x00, 0x09, 0x24, 0x00, 0x0F, 0x24, 0x00, 0x39, 0x3F, 0x80, 0x01, 0xA0, 0x00, 0x02, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x28, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x7D, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x28, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0x11, 0x00, 0x71, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74A3, { 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x00, 0xA4, 0x00, 0x3F, 0x29, 0x00, 0x08, 0x71, 0x00, 0x09, 0xAE, 0x00, 0x08, 0xA4, 0x00, 0x09, 0x3F, 0x80, 0x3F, 0xF4, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x91, 0x00, 0x08, 0x92, 0x00, 0x0D, 0x4C, 0x00, 0x32, 0x0C, 0x80, 0x00, 0x32, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74A5, { 0x00, 0x00, 0x00, 0x01, 0x22, 0x00, 0x01, 0x22, 0x00, 0x03, 0xF4, 0x00, 0x39, 0x27, 0x80, 0x11, 0x25, 0x00, 0x10, 0x8D, 0x00, 0x11, 0xF5, 0x00, 0x3A, 0x15, 0x00, 0x15, 0xD5, 0x00, 0x11, 0x56, 0x00, 0x11, 0x52, 0x00, 0x1F, 0x52, 0x00, 0x31, 0xD2, 0x00, 0x00, 0x15, 0x00, 0x00, 0x25, 0x00, 0x00, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74A6, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x7D, 0x21, 0x00, 0x10, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x7D, 0x49, 0x00, 0x11, 0x42, 0x80, 0x12, 0x3E, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x1D, 0x82, 0x00, 0x73, 0x4C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74A7, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0xBF, 0x80, 0x38, 0x84, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x84, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74A8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x09, 0x59, 0x00, 0x0B, 0x2A, 0x00, 0x0C, 0xC4, 0x00, 0x08, 0x8A, 0x00, 0x3F, 0x31, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x54, 0x00, 0x0F, 0xFF, 0x80, 0x30, 0x38, 0x00, 0x00, 0x54, 0x00, 0x01, 0x92, 0x00, 0x06, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74A9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x3F, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x20, 0x80, 0x12, 0xFC, 0x00, 0x7E, 0x21, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x1E, 0xD1, 0x00, 0x72, 0x2A, 0x00, 0x02, 0xDC, 0x00, 0x04, 0x2A, 0x00, 0x01, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x38, 0x00, 0x30, 0x54, 0x00, 0x00, 0x92, 0x00, 0x03, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74AB, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x01, 0x93, 0x00, 0x7C, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x12, 0xFE, 0x80, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74AE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x7D, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74AF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x7C, 0xC6, 0x00, 0x13, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x55, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x28, 0x00, 0x0E, 0x69, 0x00, 0x38, 0xA6, 0x00, 0x07, 0x24, 0x00, 0x00, 0x7A, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74B1, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x13, 0xE7, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xEF, 0x80, 0x13, 0xA0, 0x00, 0x10, 0x30, 0x00, 0x10, 0x14, 0x00, 0x10, 0xA5, 0x00, 0x10, 0xAD, 0x80, 0x1D, 0xA8, 0x80, 0x71, 0x32, 0x00, 0x00, 0xE2, 0x00, 0x03, 0x9E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74B2, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x41, 0x00, 0x0A, 0xBE, 0x80, 0x09, 0x19, 0x00, 0x08, 0x2E, 0x00, 0x3E, 0xD4, 0x00, 0x08, 0x26, 0x00, 0x0B, 0x4D, 0x00, 0x09, 0x15, 0x00, 0x0F, 0x64, 0x80, 0x31, 0x18, 0x80, 0x01, 0x80, 0x00, 0x02, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74B5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xD3, 0x00, 0x3E, 0x99, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xDF, 0x00, 0x3E, 0x81, 0x00, 0x08, 0x9D, 0x00, 0x08, 0xE7, 0x00, 0x08, 0x95, 0x00, 0x0E, 0x95, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74B9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x7E, 0x00, 0x3E, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0E, 0xEA, 0x00, 0x30, 0xA6, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74BA, { 0x00, 0x00, 0x00, 0x07, 0xF2, 0x00, 0x3C, 0x1F, 0x00, 0x25, 0xD2, 0x00, 0x34, 0x16, 0x00, 0x25, 0xD2, 0x00, 0x35, 0x56, 0x00, 0x25, 0xD2, 0x00, 0x24, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x40, 0x01, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74BB, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x00, 0xA2, 0x80, 0x7D, 0x2C, 0x80, 0x10, 0xE3, 0x80, 0x13, 0xAE, 0x80, 0x10, 0x20, 0x80, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC7, 0x00, 0x13, 0x6D, 0x80, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74BD, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x1F, 0xFF, 0x00, 0x15, 0x55, 0x00, 0x13, 0x4D, 0x00, 0x14, 0xD3, 0x00, 0x15, 0x55, 0x00, 0x12, 0x49, 0x00, 0x15, 0x55, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74BF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x9C, 0x80, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x3E, 0x18, 0x00, 0x08, 0x66, 0x00, 0x09, 0x81, 0x80, 0x08, 0xFE, 0x00, 0x0E, 0x42, 0x00, 0x30, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74C6, { 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x01, 0xCE, 0x00, 0x3F, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x29, 0x00, 0x0A, 0x31, 0x00, 0x0A, 0x21, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74C8, { 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x03, 0xC8, 0x00, 0x7C, 0x9F, 0x80, 0x10, 0x92, 0x80, 0x17, 0xE6, 0x80, 0x12, 0x8C, 0x80, 0x16, 0xE0, 0x80, 0x7C, 0x93, 0x80, 0x10, 0x38, 0x00, 0x10, 0xEE, 0x00, 0x13, 0x83, 0x80, 0x10, 0x10, 0x00, 0x1D, 0x93, 0x00, 0x70, 0x7C, 0x00, 0x00, 0xD6, 0x00, 0x03, 0xB3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74C9, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x03, 0xEF, 0x80, 0x7C, 0x82, 0x00, 0x13, 0xEF, 0x80, 0x10, 0x82, 0x00, 0x11, 0x45, 0x00, 0x12, 0x28, 0x80, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74CA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x84, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x28, 0x80, 0x09, 0xCF, 0x80, 0x08, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0B, 0x7E, 0x00, 0x3C, 0xA4, 0x00, 0x01, 0x18, 0x00, 0x02, 0x67, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74CC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x00, 0x00, 0x13, 0xD7, 0x80, 0x10, 0x10, 0x00, 0x13, 0xD7, 0x80, 0x1C, 0x38, 0x00, 0x70, 0xE8, 0x80, 0x07, 0x8D, 0x00, 0x00, 0x86, 0x00, 0x00, 0xF3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74CF, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3B, 0xEF, 0x80, 0x12, 0x48, 0x00, 0x11, 0x4F, 0x80, 0x17, 0xF0, 0x80, 0x10, 0x0F, 0x80, 0x3B, 0xE8, 0x00, 0x12, 0x28, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x28, 0x00, 0x13, 0xE8, 0x00, 0x1E, 0x2F, 0x80, 0x32, 0x28, 0x00, 0x02, 0x28, 0x80, 0x02, 0x6F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74D0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x7E, 0x00, 0x11, 0x10, 0x80, 0x7D, 0x7F, 0x80, 0x11, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x1D, 0x00, 0x00, 0x72, 0xFF, 0x00, 0x00, 0xA9, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74D2, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x02, 0x94, 0x00, 0x7B, 0xDE, 0x00, 0x14, 0xA4, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x8C, 0x00, 0x7A, 0xD5, 0x00, 0x14, 0xA7, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x24, 0x00, 0x1D, 0x24, 0x00, 0x71, 0x24, 0x00, 0x20, 0x58, 0x00, 0x00, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74D3, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x02, 0x28, 0x80, 0x7F, 0xEF, 0x80, 0x12, 0x28, 0x80, 0x13, 0xEF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x7E, 0x10, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x92, 0x80, 0x12, 0xD6, 0x80, 0x12, 0xBA, 0x80, 0x1E, 0xFE, 0x80, 0x72, 0x54, 0x80, 0x02, 0x92, 0x80, 0x02, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x0A, 0x50, 0x80, 0x0F, 0xFF, 0x80, 0x38, 0x84, 0x00, 0x01, 0xC8, 0x00, 0x02, 0x30, 0x00, 0x00, 0xCC, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74D8, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x0E, 0xFF, 0x00, 0x30, 0x90, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74DA, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x03, 0xFF, 0x00, 0x3E, 0x84, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x09, 0x4A, 0x00, 0x0A, 0x31, 0x80, 0x3F, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x0B, 0x01, 0x00, 0x0D, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74DB, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0xE2, 0x80, 0x70, 0x82, 0x80, 0x2F, 0xF2, 0x00, 0x28, 0x92, 0x00, 0x2B, 0xEF, 0x80, 0x28, 0x92, 0x00, 0x7F, 0xF2, 0x00, 0x29, 0x22, 0x00, 0x29, 0xE2, 0x00, 0x28, 0x02, 0x00, 0x3F, 0xF7, 0x00, 0x6D, 0x55, 0x00, 0x0E, 0x75, 0x00, 0x15, 0xDD, 0x00, 0x04, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74DC, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x92, 0x00, 0x10, 0x8A, 0x00, 0x10, 0xFA, 0x00, 0x2F, 0x05, 0x00, 0x20, 0x05, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74DE, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x0E, 0x28, 0x00, 0x3A, 0x28, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x16, 0x00, 0x2B, 0x33, 0x00, 0x29, 0x61, 0x00, 0x29, 0x80, 0x00, 0x6A, 0xC0, 0x00, 0x4E, 0x70, 0x00, 0x5A, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74DF, { 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x3A, 0x3F, 0x00, 0x22, 0x61, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0xFD, 0x00, 0x2A, 0x25, 0x00, 0x2A, 0x25, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0x26, 0x00, 0x29, 0x20, 0x80, 0x29, 0xB1, 0x80, 0x6A, 0xDF, 0x00, 0x4E, 0x60, 0x00, 0x5A, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74E0, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x80, 0x04, 0x7E, 0x00, 0x3F, 0xD2, 0x00, 0x0A, 0x52, 0x00, 0x11, 0x52, 0x00, 0x20, 0xD2, 0x00, 0x1F, 0x52, 0x00, 0x00, 0x52, 0x00, 0x3F, 0xD2, 0x00, 0x10, 0x51, 0x00, 0x1F, 0x51, 0x00, 0x21, 0x55, 0x00, 0x01, 0x53, 0x00, 0x01, 0x5F, 0x00, 0x02, 0xF0, 0x80, 0x0D, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74E2, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x8E, 0x00, 0x0A, 0x3A, 0x00, 0x3F, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3F, 0xAA, 0x00, 0x00, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x4D, 0x00, 0x24, 0x71, 0x00, 0x0C, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74E3, { 0x00, 0x00, 0x00, 0x08, 0x62, 0x00, 0x09, 0x82, 0x00, 0x09, 0x12, 0x00, 0x3F, 0x5F, 0x80, 0x01, 0x50, 0x00, 0x23, 0x58, 0x80, 0x15, 0x55, 0x00, 0x3F, 0x5F, 0x80, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x0F, 0x52, 0x00, 0x39, 0x5F, 0x80, 0x09, 0x52, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x24, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74E4, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x80, 0x7F, 0xC7, 0x00, 0x00, 0x3D, 0x00, 0x3B, 0xA1, 0x00, 0x2A, 0xA9, 0x00, 0x3B, 0xA9, 0x00, 0x11, 0x29, 0x00, 0x3F, 0xA9, 0x00, 0x11, 0x29, 0x00, 0x3F, 0xA9, 0x00, 0x11, 0x29, 0x00, 0x7F, 0xE9, 0x00, 0x0A, 0x29, 0x80, 0x72, 0xAA, 0x80, 0x1D, 0x2E, 0x80, 0x30, 0xDA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x88, 0x00, 0x04, 0x48, 0x00, 0x04, 0x28, 0x00, 0x08, 0x08, 0x00, 0x08, 0x78, 0x00, 0x0F, 0x90, 0x80, 0x38, 0x10, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74E7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x32, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2E, 0x08, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xB4, 0x00, 0x1C, 0x94, 0x00, 0x71, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x80, 0x01, 0xE4, 0x80, 0x07, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74E9, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x20, 0x78, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x32, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2E, 0x08, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x51, 0x00, 0x22, 0x5B, 0x00, 0x32, 0x4A, 0x00, 0x2A, 0x4E, 0x00, 0x2A, 0xC4, 0x00, 0x22, 0x8E, 0x00, 0x23, 0x9B, 0x00, 0x22, 0x31, 0x80, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74EB, { 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x77, 0xFB, 0x80, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x05, 0x08, 0x00, 0x0D, 0x88, 0x00, 0x08, 0x88, 0x80, 0x0F, 0xF9, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x04, 0x82, 0x00, 0x09, 0x09, 0x00, 0x32, 0x7C, 0x80, 0x0F, 0x82, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x04, 0x44, 0x80, 0x08, 0xFC, 0x80, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x2F, 0x20, 0x00, 0x21, 0x3E, 0x00, 0x25, 0x22, 0x00, 0x27, 0x22, 0x00, 0x22, 0x32, 0x00, 0x27, 0x2A, 0x00, 0x2D, 0x2A, 0x00, 0x20, 0x22, 0x00, 0x30, 0x22, 0x00, 0x1F, 0x22, 0x80, 0x00, 0x3E, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74F0, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x20, 0x66, 0x00, 0x20, 0x42, 0x00, 0x3E, 0xC3, 0x00, 0x23, 0x81, 0x80, 0x22, 0x7E, 0x00, 0x32, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x32, 0x00, 0x22, 0x22, 0x00, 0x22, 0x62, 0x00, 0x22, 0xCE, 0x00, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74F1, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x7F, 0x1C, 0x00, 0x20, 0x70, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x80, 0x22, 0x11, 0x80, 0x22, 0x0F, 0x00, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74F2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x13, 0x00, 0x20, 0x1E, 0x00, 0x20, 0xF0, 0x00, 0x20, 0x10, 0x00, 0x3E, 0x52, 0x00, 0x22, 0x52, 0x00, 0x22, 0x52, 0x00, 0x32, 0x52, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x11, 0x00, 0x22, 0x13, 0x00, 0x22, 0x0E, 0x00, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74F4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x80, 0x1A, 0x20, 0x00, 0x33, 0x20, 0x00, 0x61, 0xA0, 0x00, 0x1E, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x32, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0B, 0x22, 0x80, 0x08, 0x3E, 0x80, 0x08, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74F6, { 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x33, 0x7F, 0x80, 0x12, 0x20, 0x00, 0x7F, 0xA0, 0x00, 0x12, 0x20, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xA2, 0x00, 0x12, 0x32, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x32, 0x22, 0x80, 0x22, 0x3A, 0x80, 0x62, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74F7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x89, 0x00, 0x00, 0x0A, 0x00, 0x07, 0x94, 0x00, 0x38, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x04, 0x48, 0x00, 0x08, 0xF8, 0x80, 0x3F, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x10, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x10, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3E, 0x00, 0x1F, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x32, 0x00, 0x7F, 0xAA, 0x00, 0x10, 0x2A, 0x00, 0x11, 0x22, 0x00, 0x31, 0x22, 0x00, 0x27, 0xA2, 0x80, 0x7C, 0xBE, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74FB, { 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x1B, 0x7F, 0x80, 0x0E, 0x10, 0x00, 0x1B, 0x10, 0x00, 0x71, 0x90, 0x00, 0x08, 0x1E, 0x00, 0x7F, 0x92, 0x00, 0x10, 0x12, 0x00, 0x24, 0x1A, 0x00, 0x7F, 0x96, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x80, 0x25, 0x9E, 0x80, 0x04, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x74FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x00, 0x20, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0xFE, 0x00, 0x32, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x22, 0x10, 0x00, 0x23, 0xFF, 0x00, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x74FF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x20, 0x00, 0x22, 0x20, 0x00, 0x36, 0x20, 0x00, 0x14, 0x3E, 0x00, 0x14, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x00, 0x32, 0x00, 0x00, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x80, 0x22, 0x3E, 0x80, 0x3E, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7501, { 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x7F, 0x00, 0x0A, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x1E, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x1A, 0x00, 0x3F, 0xA6, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x22, 0x80, 0x12, 0x3E, 0x80, 0x22, 0xC3, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7503, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x3E, 0x09, 0x00, 0x04, 0x2B, 0x00, 0x7F, 0x6A, 0x00, 0x14, 0x5C, 0x00, 0x16, 0x16, 0x00, 0x35, 0x33, 0x00, 0x64, 0x61, 0x80, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0D, 0x08, 0x00, 0x08, 0x88, 0x80, 0x0F, 0xF9, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x05, 0x10, 0x00, 0x05, 0x10, 0x00, 0x1F, 0xD0, 0x00, 0x15, 0x50, 0x00, 0x1D, 0xDE, 0x00, 0x10, 0x52, 0x00, 0x1F, 0xD2, 0x00, 0x02, 0x1A, 0x00, 0x02, 0x26, 0x00, 0x1F, 0xE2, 0x00, 0x02, 0x22, 0x00, 0x03, 0xE6, 0x80, 0x3C, 0x3A, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x00, 0x20, 0x80, 0x00, 0x20, 0xBE, 0x00, 0x20, 0xAA, 0x00, 0x3E, 0xBE, 0x00, 0x22, 0xAA, 0x00, 0x22, 0xBE, 0x00, 0x32, 0x88, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0x88, 0x00, 0x23, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x2E, 0x00, 0x80, 0x3B, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7506, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x12, 0x12, 0x00, 0x36, 0x36, 0x00, 0x1C, 0x1C, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x80, 0x80, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xF8, 0x80, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x750C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x20, 0x00, 0x4E, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x4A, 0x3E, 0x00, 0x4E, 0x22, 0x00, 0x40, 0x22, 0x00, 0x5F, 0x32, 0x00, 0x55, 0x2A, 0x00, 0x55, 0x2A, 0x00, 0x55, 0x22, 0x00, 0x5F, 0x22, 0x00, 0x40, 0x22, 0x80, 0x7F, 0xBE, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x750D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x5F, 0xFE, 0x80, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x48, 0x80, 0x0F, 0xF9, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x750E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x90, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x05, 0x1A, 0x00, 0x1F, 0x96, 0x00, 0x70, 0xD2, 0x00, 0x01, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x11, 0x12, 0x80, 0x19, 0x1E, 0x80, 0x0B, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x750F, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x3A, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x3A, 0x00, 0x1F, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x3F, 0xB0, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x90, 0x00, 0x04, 0x52, 0x00, 0x07, 0x12, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7511, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0x7F, 0x80, 0x10, 0x90, 0x00, 0x20, 0x50, 0x00, 0x3F, 0x90, 0x00, 0x35, 0x9E, 0x00, 0x2E, 0xB2, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xB2, 0x00, 0x00, 0x2A, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x2E, 0x80, 0x1F, 0x71, 0x80, 0x11, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7512, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x3F, 0x80, 0x3F, 0xD0, 0x00, 0x6A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x9E, 0x00, 0x7F, 0xD2, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x9A, 0x00, 0x2A, 0x96, 0x00, 0x2A, 0x92, 0x00, 0x7F, 0xD2, 0x00, 0x00, 0x12, 0x00, 0x2A, 0x92, 0x80, 0x6A, 0x9E, 0x80, 0x4A, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7513, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xBF, 0x80, 0x10, 0x91, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x28, 0xBF, 0x80, 0x68, 0x84, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x80, 0x0F, 0xF9, 0x80, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7515, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x24, 0x00, 0x28, 0x7F, 0x00, 0x12, 0xC8, 0x00, 0x0D, 0x7F, 0x00, 0x09, 0x48, 0x00, 0x32, 0x7F, 0x00, 0x0C, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x32, 0x40, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x04, 0x44, 0x80, 0x08, 0xFC, 0x80, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7516, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xF8, 0x80, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7517, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xBF, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xD0, 0x00, 0x22, 0x50, 0x00, 0x2F, 0x9E, 0x00, 0x22, 0x52, 0x00, 0x3F, 0xD2, 0x00, 0x24, 0x9A, 0x00, 0x27, 0x96, 0x00, 0x20, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x35, 0x52, 0x00, 0x39, 0xD2, 0x80, 0x57, 0x5E, 0x80, 0x12, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7518, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7519, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x50, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0xC0, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x751A, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x1F, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x751B, { 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x11, 0x38, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x751C, { 0x00, 0x00, 0x00, 0x03, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x78, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x751E, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x18, 0x8C, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x751F, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7520, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x90, 0x00, 0x7C, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0xFF, 0x00, 0x45, 0x90, 0x00, 0x45, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7521, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x24, 0x24, 0x00, 0x24, 0x24, 0x00, 0x24, 0x24, 0x00, 0x3F, 0xBF, 0x80, 0x64, 0x64, 0x00, 0x44, 0x44, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x3F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x78, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7523, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x20, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x14, 0x20, 0x00, 0x18, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7524, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0x94, 0x00, 0x08, 0x14, 0x00, 0x19, 0x3F, 0x80, 0x33, 0x24, 0x00, 0x6A, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x34, 0x1F, 0x00, 0x66, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x1D, 0x04, 0x00, 0x35, 0x04, 0x00, 0x65, 0xBF, 0x80, 0x04, 0xC0, 0x00, 0x0C, 0x70, 0x00, 0x38, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7525, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x3F, 0x80, 0x14, 0x24, 0x80, 0x14, 0x24, 0x80, 0x1F, 0xBF, 0x80, 0x24, 0x24, 0x80, 0x24, 0x24, 0x80, 0x24, 0x3F, 0x80, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x07, 0xD0, 0x80, 0x3C, 0x21, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7526, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x94, 0x00, 0x04, 0x14, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xA4, 0x00, 0x24, 0xC4, 0x00, 0x3F, 0x84, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x04, 0x04, 0x00, 0x24, 0x7F, 0x80, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7527, { 0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x24, 0x24, 0x00, 0x7F, 0x7F, 0x80, 0x44, 0x44, 0x00, 0x3F, 0x3F, 0x00, 0x04, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x78, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7528, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7529, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x7F, 0xFC, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x7F, 0xFC, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x752A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x752B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x752C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x752D, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x8C, 0x00, 0x70, 0x82, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x20, 0x94, 0x00, 0x40, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x752F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2A, 0x45, 0x00, 0x1A, 0x16, 0x00, 0x33, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7531, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7533, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7535, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFC, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7536, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7537, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x0C, 0x02, 0x00, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7538, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7539, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x753A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x753B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x753C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x753D, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x81, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x753E, { 0x00, 0x00, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x63, 0x00, 0x18, 0xC6, 0x00, 0x31, 0x8C, 0x00, 0x21, 0x08, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0x63, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x753F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7540, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7543, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x3F, 0x00, 0x49, 0x61, 0x00, 0x49, 0x41, 0x00, 0x49, 0xC1, 0x00, 0x7F, 0x01, 0x00, 0x49, 0x3D, 0x00, 0x49, 0x01, 0x00, 0x49, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x31, 0x83, 0x00, 0x18, 0xC6, 0x00, 0x0C, 0x4C, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7545, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x20, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x4A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3F, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0x94, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7546, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x99, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x97, 0x80, 0x00, 0x3C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7547, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x2B, 0x00, 0x80, 0x3E, 0x7C, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0xFE, 0x80, 0x3E, 0x00, 0x80, 0x22, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7548, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0x80, 0x00, 0x54, 0xFE, 0x00, 0x54, 0xA2, 0x00, 0x7C, 0xA2, 0x00, 0x54, 0xB6, 0x00, 0x54, 0x94, 0x00, 0x54, 0x9C, 0x00, 0x54, 0x88, 0x00, 0x7D, 0x9C, 0x00, 0x01, 0x14, 0x00, 0x03, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7549, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0x38, 0x00, 0x54, 0x28, 0x00, 0x54, 0x6C, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x754A, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x54, 0x44, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x754B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x54, 0x7F, 0x80, 0x54, 0xC2, 0x00, 0x54, 0x82, 0x00, 0x55, 0xC6, 0x00, 0x7C, 0x44, 0x00, 0x54, 0x6C, 0x00, 0x54, 0x38, 0x00, 0x54, 0x10, 0x00, 0x54, 0x38, 0x00, 0x7C, 0x2C, 0x00, 0x00, 0x66, 0x00, 0x00, 0xC3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x754C, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x0E, 0x00, 0x32, 0x09, 0x80, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x754D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x28, 0x00, 0x54, 0x6C, 0x00, 0x54, 0xC6, 0x00, 0x57, 0xC7, 0x80, 0x7C, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x754E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x16, 0x00, 0x7C, 0x13, 0x00, 0x54, 0x11, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x54, 0x38, 0x00, 0x54, 0x28, 0x00, 0x54, 0x28, 0x00, 0x54, 0x6C, 0x00, 0x7C, 0x44, 0x00, 0x00, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x754F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x42, 0x00, 0x04, 0x24, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF6, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7551, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x2C, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7552, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x9C, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x24, 0xB6, 0x00, 0x3F, 0xA2, 0x00, 0x00, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7553, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x61, 0x00, 0x1F, 0xE2, 0x00, 0x01, 0x54, 0x00, 0x02, 0x58, 0x00, 0x04, 0x48, 0x00, 0x08, 0x44, 0x00, 0x10, 0x42, 0x00, 0x20, 0x41, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7554, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x55, 0x11, 0x00, 0x56, 0x10, 0x80, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7557, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7559, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x3F, 0x80, 0x10, 0x08, 0x80, 0x10, 0x08, 0x80, 0x11, 0x08, 0x80, 0x10, 0x90, 0x80, 0x17, 0xD0, 0x80, 0x38, 0x63, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x755A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xF6, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x18, 0x06, 0x00, 0x6F, 0xFD, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x755B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x89, 0x80, 0x2B, 0x08, 0x00, 0x3E, 0x12, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x88, 0x80, 0x3E, 0x11, 0x00, 0x22, 0x22, 0x00, 0x20, 0xC4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x755C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x90, 0x00, 0x04, 0x90, 0x00, 0x03, 0x21, 0x00, 0x01, 0x7F, 0x00, 0x3F, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x755D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xEF, 0x80, 0x00, 0x10, 0x80, 0x1F, 0xD1, 0x00, 0x12, 0x61, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x46, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x61, 0x00, 0x10, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x755E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0xA2, 0x00, 0x3E, 0xE6, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x8E, 0x00, 0x2A, 0x8A, 0x00, 0x3E, 0x9B, 0x00, 0x00, 0xB1, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x755F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x80, 0x1C, 0x1F, 0x80, 0x72, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x3B, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7560, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7561, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x54, 0x64, 0x00, 0x54, 0xCC, 0x00, 0x7D, 0x89, 0x00, 0x54, 0xDB, 0x00, 0x54, 0x32, 0x00, 0x54, 0x66, 0x00, 0x54, 0xCC, 0x00, 0x7D, 0x98, 0x00, 0x00, 0x36, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7562, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7564, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x7C, 0x02, 0x00, 0x54, 0x02, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x02, 0x00, 0x54, 0xC2, 0x00, 0x7C, 0x62, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7565, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x42, 0x00, 0x2A, 0xC4, 0x00, 0x2B, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x46, 0x00, 0x2A, 0x81, 0x80, 0x2B, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x22, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7566, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7567, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x3B, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7569, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x54, 0x20, 0x00, 0x54, 0x71, 0x00, 0x7C, 0x53, 0x00, 0x54, 0xD6, 0x00, 0x55, 0x9C, 0x00, 0x56, 0x88, 0x00, 0x54, 0x8C, 0x00, 0x7C, 0x84, 0x00, 0x00, 0xB6, 0x00, 0x00, 0xE3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x756A, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x756B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x756D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x7C, 0x28, 0x00, 0x54, 0x6C, 0x00, 0x54, 0xC6, 0x00, 0x55, 0x83, 0x00, 0x7F, 0x7D, 0x80, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x01, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x756F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x9F, 0x80, 0x2B, 0xE4, 0x80, 0x2A, 0x24, 0x00, 0x3E, 0x44, 0x80, 0x2B, 0xA7, 0x80, 0x2A, 0x20, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0xC2, 0x00, 0x23, 0x24, 0x00, 0x06, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7570, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7571, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7572, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x0B, 0xE8, 0x00, 0x70, 0x07, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x12, 0x84, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7573, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7574, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x54, 0x40, 0x00, 0x54, 0x42, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x82, 0x00, 0x7D, 0xA2, 0x00, 0x01, 0x32, 0x00, 0x03, 0x12, 0x00, 0x06, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7575, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x17, 0xFD, 0x00, 0x17, 0xFD, 0x00, 0x14, 0x45, 0x00, 0x17, 0xFD, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7576, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x7C, 0x21, 0x00, 0x54, 0xA5, 0x00, 0x54, 0x42, 0x00, 0x54, 0xA5, 0x00, 0x55, 0x08, 0x80, 0x7C, 0x00, 0x00, 0x54, 0x00, 0x00, 0x57, 0xFF, 0x00, 0x54, 0x29, 0x00, 0x55, 0x49, 0x00, 0x7C, 0x8A, 0x00, 0x00, 0xC4, 0x00, 0x01, 0x4A, 0x00, 0x06, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7578, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x46, 0x00, 0x2B, 0x81, 0x80, 0x2A, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x02, 0x00, 0x2A, 0xF2, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x22, 0xF2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7579, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x55, 0x01, 0x00, 0x54, 0x80, 0x00, 0x54, 0xEF, 0x00, 0x7C, 0xA9, 0x00, 0x55, 0xA9, 0x00, 0x55, 0x29, 0x00, 0x57, 0xE9, 0x00, 0x54, 0x4B, 0x00, 0x7C, 0xC8, 0x00, 0x00, 0x88, 0x80, 0x01, 0x89, 0x80, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x757A, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x757B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x54, 0x00, 0x7C, 0x92, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x24, 0x00, 0x54, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x54, 0x42, 0x00, 0x54, 0xC3, 0x00, 0x55, 0x91, 0x80, 0x54, 0x10, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x757C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x54, 0xFC, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x54, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x80, 0x00, 0x55, 0xFF, 0x00, 0x57, 0x29, 0x00, 0x7C, 0x49, 0x00, 0x01, 0x93, 0x00, 0x00, 0x22, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x757D, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x7C, 0xF0, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x757E, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x7F, 0x3F, 0x80, 0x49, 0x24, 0x80, 0x49, 0x24, 0x80, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x757F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x32, 0x92, 0x00, 0x14, 0xA4, 0x00, 0x08, 0x99, 0x00, 0x12, 0xFF, 0x80, 0x3F, 0x88, 0x80, 0x01, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x3F, 0xC2, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0x98, 0x00, 0x24, 0x98, 0x80, 0x3F, 0xE6, 0x80, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x7C, 0x63, 0x00, 0x54, 0xA5, 0x00, 0x54, 0x63, 0x00, 0x54, 0xA5, 0x00, 0x54, 0x11, 0x00, 0x7C, 0x38, 0x00, 0x54, 0xEE, 0x00, 0x57, 0x83, 0x80, 0x54, 0x10, 0x00, 0x54, 0xE4, 0x00, 0x7C, 0x19, 0x00, 0x00, 0xE2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7582, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x07, 0x38, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7583, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0xFE, 0x00, 0x3F, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x7F, 0xFF, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x7C, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7586, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x3D, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7587, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x3E, 0x7F, 0x00, 0x2A, 0x3E, 0x00, 0x2A, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x02, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x72, 0x00, 0x00, 0x52, 0x00, 0x00, 0x72, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7589, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x29, 0x00, 0x3E, 0x3F, 0x00, 0x2A, 0x29, 0x00, 0x3E, 0xBF, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x07, 0xF8, 0x00, 0x0D, 0x08, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x758A, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x758B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x09, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x758E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x01, 0xFF, 0x80, 0x06, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x17, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x1C, 0x00, 0x14, 0x1C, 0x00, 0x17, 0xAA, 0x00, 0x38, 0x4A, 0x00, 0x00, 0x89, 0x00, 0x01, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x758F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x01, 0xFF, 0x80, 0x06, 0x10, 0x00, 0x04, 0x22, 0x00, 0x04, 0x4F, 0x00, 0x04, 0xF0, 0x80, 0x17, 0x10, 0x00, 0x14, 0x52, 0x00, 0x14, 0x52, 0x00, 0x14, 0x52, 0x00, 0x14, 0x52, 0x00, 0x17, 0x92, 0x00, 0x38, 0x92, 0x80, 0x01, 0x13, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7590, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xF9, 0x00, 0x14, 0x80, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7591, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x38, 0x02, 0x00, 0x21, 0x14, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x09, 0x00, 0x08, 0x0A, 0x00, 0x1F, 0x48, 0x00, 0x24, 0x4F, 0x00, 0x04, 0x48, 0x00, 0x3F, 0xC8, 0x00, 0x04, 0x48, 0x00, 0x0A, 0x68, 0x00, 0x11, 0x9F, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7592, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7593, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x00, 0x00, 0x2B, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x38, 0x88, 0x00, 0x68, 0x8F, 0x00, 0x08, 0x81, 0x00, 0x18, 0x81, 0x00, 0x11, 0x81, 0x00, 0x31, 0x03, 0x00, 0x63, 0x02, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7594, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x00, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x38, 0x10, 0x00, 0x68, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7595, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x00, 0x00, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x06, 0x00, 0x39, 0x3C, 0x00, 0x69, 0xE0, 0x00, 0x09, 0x00, 0x00, 0x19, 0x00, 0x00, 0x11, 0x00, 0x80, 0x31, 0x01, 0x80, 0x61, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7596, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x48, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x42, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x28, 0x42, 0x00, 0x68, 0x52, 0x00, 0x08, 0x4A, 0x00, 0x10, 0x44, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7597, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x48, 0x00, 0x00, 0x2B, 0xFC, 0x00, 0x28, 0x08, 0x00, 0x08, 0x10, 0x00, 0x18, 0x20, 0x00, 0x28, 0x20, 0x00, 0x68, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0x20, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7599, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x31, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x16, 0x00, 0x00, 0x14, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x50, 0x1C, 0x00, 0x10, 0x70, 0x00, 0x11, 0xC0, 0x00, 0x33, 0x00, 0x00, 0x22, 0x00, 0x80, 0x63, 0x01, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x759A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x80, 0x00, 0x30, 0x80, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x13, 0x18, 0x00, 0x36, 0x10, 0x00, 0x50, 0x30, 0x00, 0x10, 0x20, 0x00, 0x30, 0x70, 0x00, 0x20, 0xD8, 0x00, 0x61, 0x8C, 0x00, 0x03, 0x06, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x759C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x00, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x38, 0x10, 0x00, 0x68, 0x1C, 0x00, 0x08, 0x16, 0x00, 0x18, 0x13, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x759D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x21, 0x00, 0x1A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x759F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x48, 0x04, 0x00, 0x29, 0xFE, 0x00, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0x02, 0x00, 0x2F, 0xFF, 0x00, 0x69, 0x00, 0x00, 0x09, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75A0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x48, 0x02, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x80, 0x00, 0x08, 0x84, 0x00, 0x18, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x68, 0x84, 0x00, 0x09, 0x04, 0x00, 0x11, 0x04, 0x00, 0x12, 0x04, 0x00, 0x24, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75A1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x4B, 0xF8, 0x00, 0x28, 0x20, 0x00, 0x28, 0x40, 0x00, 0x08, 0x82, 0x00, 0x1B, 0xFF, 0x00, 0x28, 0x92, 0x00, 0x68, 0x92, 0x00, 0x09, 0x22, 0x00, 0x11, 0x22, 0x00, 0x12, 0x42, 0x00, 0x24, 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75A2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x40, 0x00, 0x10, 0x40, 0x00, 0x12, 0x42, 0x00, 0x12, 0x46, 0x00, 0x36, 0x4C, 0x00, 0x54, 0x40, 0x00, 0x10, 0xE0, 0x00, 0x30, 0xA0, 0x00, 0x21, 0xB0, 0x00, 0x63, 0x18, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75A3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x44, 0x00, 0x10, 0x46, 0x00, 0x10, 0x42, 0x00, 0x17, 0xFF, 0x80, 0x30, 0x40, 0x00, 0x50, 0x40, 0x00, 0x10, 0xE0, 0x00, 0x30, 0xA0, 0x00, 0x20, 0xA0, 0x00, 0x61, 0xA0, 0x80, 0x03, 0x31, 0x80, 0x0E, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75A4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x39, 0x11, 0x00, 0x69, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x19, 0x00, 0x00, 0x11, 0x00, 0x80, 0x31, 0x81, 0x80, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75A5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x28, 0x88, 0x00, 0x19, 0x06, 0x00, 0x0E, 0x01, 0x80, 0x08, 0x84, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x11, 0x04, 0x00, 0x12, 0x04, 0x00, 0x24, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75AB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x08, 0x84, 0x80, 0x09, 0x07, 0x80, 0x0E, 0x00, 0x00, 0x1B, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x30, 0x00, 0x10, 0x58, 0x00, 0x11, 0x86, 0x00, 0x26, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75AC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x28, 0x94, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75AE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x48, 0xA0, 0x00, 0x29, 0x10, 0x00, 0x2A, 0x08, 0x00, 0x0D, 0xF7, 0x00, 0x19, 0x12, 0x00, 0x29, 0x10, 0x00, 0x69, 0x50, 0x00, 0x09, 0x20, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75AF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x4B, 0xFE, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0x0C, 0x00, 0x0A, 0x8C, 0x00, 0x1A, 0x54, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x0A, 0x54, 0x00, 0x12, 0x8C, 0x00, 0x15, 0x0D, 0x00, 0x24, 0x05, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x48, 0x40, 0x00, 0x28, 0x24, 0x00, 0x2B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x28, 0x28, 0x00, 0x69, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B1, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x28, 0x80, 0x00, 0x19, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x0D, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x19, 0x12, 0x00, 0x29, 0xF2, 0x00, 0x09, 0x04, 0x00, 0x09, 0x18, 0x00, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x28, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x1A, 0x84, 0x00, 0x2A, 0x48, 0x00, 0x0A, 0x30, 0x00, 0x0A, 0x30, 0x00, 0x14, 0x48, 0x00, 0x14, 0x86, 0x00, 0x2B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75B3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x28, 0x84, 0x00, 0x18, 0x84, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x18, 0x84, 0x00, 0x28, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x31, 0xE4, 0x00, 0x51, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x31, 0xE4, 0x00, 0x20, 0x04, 0x00, 0x60, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x48, 0x00, 0x18, 0x48, 0x00, 0x0A, 0x49, 0x80, 0x0A, 0x4E, 0x00, 0x0A, 0x78, 0x00, 0x1A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0A, 0x48, 0x80, 0x12, 0x78, 0x80, 0x17, 0x8F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x29, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75B9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x28, 0x50, 0x00, 0x18, 0x88, 0x00, 0x09, 0x06, 0x00, 0x0E, 0x21, 0x80, 0x08, 0x40, 0x00, 0x18, 0x88, 0x00, 0x2B, 0x10, 0x00, 0x08, 0x22, 0x00, 0x10, 0xC4, 0x00, 0x13, 0x08, 0x00, 0x20, 0x30, 0x00, 0x23, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75BA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x1E, 0x00, 0x13, 0xF0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x50, 0x06, 0x00, 0x10, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x20, 0x70, 0x00, 0x63, 0xC0, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75BC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x28, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x50, 0x00, 0x18, 0x30, 0x00, 0x28, 0xCC, 0x00, 0x0F, 0x23, 0x80, 0x08, 0x10, 0x00, 0x08, 0x06, 0x00, 0x10, 0x38, 0x00, 0x11, 0xC0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75BD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x13, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75BE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x80, 0x00, 0x28, 0x80, 0x00, 0x19, 0xFE, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x2F, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x11, 0x04, 0x00, 0x12, 0x02, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75BF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x90, 0x00, 0x30, 0x90, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x37, 0xFE, 0x00, 0x54, 0x90, 0x00, 0x14, 0x90, 0x00, 0x37, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x61, 0x11, 0x00, 0x03, 0x17, 0x00, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x80, 0x00, 0x28, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x3B, 0x01, 0x00, 0x68, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x18, 0x89, 0x00, 0x10, 0xF9, 0x00, 0x30, 0x03, 0x00, 0x60, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x20, 0x00, 0x28, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x20, 0x00, 0x38, 0x20, 0x00, 0x68, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x11, 0x02, 0x00, 0x31, 0x02, 0x00, 0x61, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x29, 0x00, 0x00, 0x1F, 0xEF, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x19, 0x29, 0x00, 0x29, 0x29, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x0A, 0x29, 0x00, 0x12, 0x29, 0x00, 0x14, 0xEF, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0xC0, 0x00, 0x31, 0x88, 0x00, 0x53, 0x18, 0x00, 0x11, 0xB0, 0x00, 0x30, 0xE0, 0x00, 0x20, 0xC2, 0x00, 0x61, 0x82, 0x00, 0x01, 0x3F, 0x00, 0x0F, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75C4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x40, 0x00, 0x28, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x09, 0xA0, 0x00, 0x3B, 0x20, 0x00, 0x68, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x10, 0x3F, 0x00, 0x30, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0x52, 0x00, 0x0A, 0x8A, 0x00, 0x0B, 0x0A, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x52, 0x43, 0x00, 0x12, 0x4E, 0x00, 0x32, 0x78, 0x00, 0x26, 0x40, 0x00, 0x64, 0x40, 0x80, 0x0C, 0x61, 0x80, 0x18, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x19, 0x3E, 0x00, 0x29, 0x20, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x11, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x6B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x24, 0x2A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75C9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x2B, 0xFC, 0x00, 0x18, 0x18, 0x00, 0x08, 0x60, 0x00, 0x09, 0x9C, 0x00, 0x1E, 0x03, 0x00, 0x28, 0x00, 0x00, 0x4B, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75CA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x70, 0x00, 0x10, 0xD8, 0x00, 0x13, 0x8E, 0x00, 0x1E, 0x03, 0x80, 0x33, 0xFE, 0x00, 0x50, 0x20, 0x00, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75CC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x14, 0x01, 0x00, 0x15, 0xFD, 0x00, 0x34, 0x01, 0x00, 0x54, 0xF9, 0x00, 0x14, 0x89, 0x00, 0x34, 0x89, 0x00, 0x24, 0x89, 0x00, 0x64, 0xF9, 0x00, 0x04, 0x01, 0x00, 0x04, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75CD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x2F, 0xFF, 0x00, 0x18, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x1A, 0x20, 0x00, 0x2F, 0xFF, 0x00, 0x0C, 0x21, 0x00, 0x08, 0x56, 0x00, 0x10, 0x88, 0x00, 0x13, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75CE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x64, 0x00, 0x36, 0xCC, 0x00, 0x53, 0x19, 0x00, 0x11, 0xB3, 0x00, 0x30, 0x66, 0x00, 0x21, 0xCC, 0x00, 0x67, 0x1B, 0x00, 0x00, 0x71, 0x80, 0x07, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75CF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x40, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x31, 0xFE, 0x00, 0x53, 0x02, 0x00, 0x15, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x21, 0x02, 0x00, 0x61, 0x02, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75D2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x28, 0x88, 0x00, 0x18, 0x50, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75D4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x28, 0x20, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x04, 0x00, 0x28, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x04, 0x00, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75D5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x28, 0x40, 0x00, 0x19, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x29, 0x42, 0x00, 0x09, 0x24, 0x00, 0x09, 0x18, 0x00, 0x11, 0xE8, 0x00, 0x17, 0x06, 0x00, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75D6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x4F, 0xFE, 0x00, 0x28, 0x90, 0x00, 0x28, 0x90, 0x00, 0x0C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x2A, 0x94, 0x00, 0x6A, 0x94, 0x00, 0x0A, 0x98, 0x00, 0x10, 0x90, 0x00, 0x10, 0x92, 0x00, 0x2F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75D7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x80, 0x00, 0x68, 0x80, 0x00, 0x29, 0xFF, 0x00, 0x0B, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x68, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x19, 0x02, 0x00, 0x11, 0x22, 0x00, 0x31, 0xFF, 0x80, 0x60, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75D8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x2B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0x04, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75D9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x18, 0x92, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x48, 0x00, 0x09, 0x24, 0x00, 0x18, 0x92, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75DB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x29, 0xFC, 0x00, 0x18, 0x48, 0x00, 0x08, 0x30, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x1B, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x22, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75DC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x0E, 0x00, 0x28, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x38, 0x54, 0x00, 0x68, 0xD6, 0x00, 0x0B, 0x93, 0x80, 0x18, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x30, 0x44, 0x00, 0x60, 0xC4, 0x80, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75DE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x60, 0x00, 0x10, 0xE8, 0x00, 0x11, 0xAC, 0x00, 0x33, 0x26, 0x00, 0x5E, 0x23, 0x80, 0x10, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x62, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75DF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x68, 0x92, 0x00, 0x29, 0x93, 0x00, 0x09, 0x11, 0x00, 0x08, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x69, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x61, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x82, 0x00, 0x31, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x49, 0x00, 0x10, 0xC8, 0x00, 0x37, 0x8F, 0x80, 0x51, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x33, 0x06, 0x00, 0x26, 0xCC, 0x00, 0x60, 0x78, 0x00, 0x01, 0xCE, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75E1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x28, 0x00, 0x10, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x52, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x62, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xE1, 0x00, 0x2B, 0x89, 0x00, 0x18, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xE9, 0x00, 0x19, 0x89, 0x00, 0x29, 0xC9, 0x00, 0x0A, 0xA9, 0x00, 0x0A, 0x89, 0x00, 0x14, 0x89, 0x00, 0x14, 0x89, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x50, 0x00, 0x00, 0x10, 0x20, 0x00, 0x30, 0xB0, 0x00, 0x22, 0x91, 0x00, 0x62, 0x85, 0x80, 0x06, 0x8C, 0x80, 0x0C, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x31, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x12, 0xAA, 0x00, 0x32, 0xAA, 0x00, 0x54, 0x71, 0x00, 0x10, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x28, 0x40, 0x00, 0x29, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8A, 0x00, 0x2F, 0xFF, 0x00, 0x68, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x32, 0x08, 0x00, 0x13, 0x08, 0x00, 0x11, 0x2A, 0x00, 0x14, 0x6B, 0x00, 0x36, 0xC9, 0x80, 0x52, 0x08, 0x00, 0x10, 0x09, 0x00, 0x31, 0x3B, 0x00, 0x23, 0x06, 0x00, 0x66, 0x0C, 0x00, 0x0C, 0x38, 0x00, 0x08, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x4B, 0xFE, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x41, 0x00, 0x2C, 0x42, 0x00, 0x69, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x84, 0x00, 0x21, 0x14, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75E9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x53, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x57, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x30, 0x88, 0x00, 0x20, 0x70, 0x00, 0x61, 0xDC, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75EA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x28, 0xF8, 0x00, 0x19, 0x10, 0x00, 0x0A, 0x24, 0x00, 0x19, 0xFE, 0x00, 0x29, 0x24, 0x00, 0x69, 0x24, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x21, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75EB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0x22, 0x00, 0x0B, 0xFA, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0x62, 0x00, 0x6A, 0x72, 0x00, 0x0A, 0xAA, 0x00, 0x13, 0x26, 0x00, 0x12, 0x22, 0x00, 0x22, 0x2A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75EC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x33, 0xFE, 0x00, 0x51, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x44, 0x80, 0x26, 0xCC, 0x80, 0x6C, 0x99, 0x80, 0x01, 0xB1, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75EE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x00, 0x00, 0x31, 0xFC, 0x00, 0x51, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x31, 0x22, 0x00, 0x21, 0x34, 0x00, 0x61, 0x18, 0x00, 0x01, 0xCC, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75EF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x00, 0x80, 0x14, 0xFC, 0x80, 0x30, 0x84, 0x00, 0x50, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x30, 0x80, 0x00, 0x20, 0xFE, 0x00, 0x60, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75F0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x09, 0x24, 0x00, 0x28, 0x50, 0x00, 0x18, 0x88, 0x00, 0x09, 0x06, 0x00, 0x0E, 0x21, 0x80, 0x18, 0x20, 0x00, 0x29, 0x22, 0x00, 0x09, 0x24, 0x00, 0x08, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x06, 0x00, 0x26, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x75F1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x88, 0x00, 0x10, 0x88, 0x00, 0x17, 0x8F, 0x00, 0x10, 0x88, 0x00, 0x30, 0x88, 0x00, 0x57, 0x8F, 0x00, 0x10, 0x88, 0x00, 0x33, 0x88, 0x00, 0x2C, 0x8F, 0x80, 0x61, 0x88, 0x00, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75F2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x29, 0x08, 0x00, 0x19, 0x08, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x08, 0x00, 0x0B, 0x6A, 0x00, 0x1B, 0x6A, 0x00, 0x2B, 0x6A, 0x00, 0x0B, 0x6A, 0x80, 0x0B, 0x2A, 0x80, 0x11, 0x2B, 0x80, 0x11, 0x48, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75F3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x31, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xDF, 0x80, 0x11, 0x04, 0x00, 0x31, 0x04, 0x00, 0x53, 0x8E, 0x00, 0x13, 0x4E, 0x00, 0x35, 0x55, 0x00, 0x25, 0x15, 0x00, 0x69, 0x24, 0x80, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75F4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x0F, 0x00, 0x1B, 0xE9, 0x00, 0x0C, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xF9, 0x00, 0x28, 0x89, 0x00, 0x08, 0x89, 0x00, 0x09, 0x49, 0x00, 0x11, 0x2F, 0x00, 0x12, 0x29, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75F9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x50, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x30, 0x88, 0x00, 0x20, 0x88, 0x00, 0x61, 0x88, 0x00, 0x03, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75FA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x28, 0x40, 0x00, 0x1B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x1A, 0x22, 0x00, 0x2B, 0xFE, 0x00, 0x08, 0x90, 0x00, 0x09, 0x10, 0x00, 0x12, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75FC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x1A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x1A, 0xFD, 0x00, 0x2A, 0x85, 0x00, 0x0A, 0x85, 0x00, 0x0A, 0xFD, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75FE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xBF, 0x80, 0x14, 0x82, 0x00, 0x14, 0x82, 0x00, 0x15, 0x3A, 0x00, 0x35, 0x2A, 0x00, 0x54, 0xAA, 0x00, 0x14, 0xAA, 0x00, 0x34, 0xBA, 0x00, 0x25, 0x82, 0x00, 0x64, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x75FF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0xA8, 0x00, 0x31, 0x24, 0x00, 0x56, 0x23, 0x00, 0x10, 0x40, 0x00, 0x37, 0xFF, 0x00, 0x21, 0x04, 0x00, 0x63, 0xC8, 0x00, 0x00, 0x7C, 0x00, 0x07, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7600, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x29, 0x0A, 0x00, 0x1F, 0xE9, 0x00, 0x0A, 0x10, 0x80, 0x0A, 0x24, 0x00, 0x0B, 0xC2, 0x00, 0x1A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x0A, 0x41, 0x80, 0x14, 0x46, 0x00, 0x14, 0x58, 0x00, 0x29, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7601, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x32, 0x8A, 0x00, 0x54, 0x51, 0x00, 0x10, 0x00, 0x00, 0x30, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7602, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x37, 0x8F, 0x00, 0x54, 0x01, 0x00, 0x14, 0x01, 0x00, 0x37, 0x8F, 0x00, 0x20, 0x88, 0x00, 0x60, 0x88, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7603, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x11, 0xA1, 0x00, 0x36, 0x33, 0x00, 0x52, 0x56, 0x00, 0x11, 0x98, 0x00, 0x37, 0x38, 0x00, 0x20, 0xD4, 0x00, 0x63, 0x96, 0x00, 0x0E, 0x33, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7604, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x88, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x30, 0x88, 0x00, 0x5F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x63, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7605, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x51, 0x10, 0x00, 0x37, 0xFC, 0x00, 0x14, 0x44, 0x00, 0x17, 0xFC, 0x00, 0x34, 0x44, 0x00, 0x57, 0xFC, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7607, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x0C, 0x00, 0x51, 0xF8, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x63, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7608, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x31, 0xDF, 0x00, 0x17, 0x09, 0x00, 0x11, 0xC9, 0x00, 0x17, 0x09, 0x00, 0x31, 0xD9, 0x00, 0x57, 0x11, 0x00, 0x11, 0x37, 0x00, 0x30, 0x40, 0x00, 0x2F, 0xFF, 0x80, 0x61, 0x8C, 0x00, 0x03, 0x06, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7609, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x50, 0x00, 0x11, 0x8C, 0x00, 0x1E, 0x03, 0x80, 0x11, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x57, 0xC9, 0x00, 0x14, 0x49, 0x00, 0x37, 0x5B, 0x00, 0x24, 0xD2, 0x00, 0x66, 0x5B, 0x00, 0x05, 0xC9, 0x00, 0x04, 0x49, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x760A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x31, 0x7E, 0x00, 0x11, 0x02, 0x00, 0x13, 0x02, 0x00, 0x12, 0xFF, 0x80, 0x36, 0x20, 0x00, 0x5E, 0x7F, 0x00, 0x12, 0xC8, 0x00, 0x32, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x62, 0x14, 0x00, 0x02, 0x36, 0x00, 0x02, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x760B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x22, 0x00, 0x32, 0xFA, 0x00, 0x52, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x32, 0xFA, 0x00, 0x22, 0x22, 0x00, 0x66, 0x2A, 0x80, 0x04, 0x7A, 0x80, 0x0D, 0xCD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x760C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x01, 0x00, 0x31, 0x09, 0x00, 0x1F, 0xE9, 0x00, 0x11, 0x09, 0x00, 0x17, 0xC9, 0x00, 0x35, 0x49, 0x00, 0x55, 0x49, 0x00, 0x17, 0xC9, 0x00, 0x31, 0x01, 0x00, 0x23, 0x81, 0x00, 0x67, 0x41, 0x00, 0x0D, 0x21, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x760D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x19, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x29, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x45, 0x00, 0x10, 0x89, 0x00, 0x13, 0x32, 0x00, 0x2C, 0xCC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x760F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x24, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x28, 0x00, 0x37, 0xFF, 0x80, 0x50, 0x44, 0x00, 0x11, 0xFE, 0x00, 0x37, 0x02, 0x00, 0x2D, 0xFE, 0x00, 0x61, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7610, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x40, 0x00, 0x56, 0x5C, 0x00, 0x34, 0x44, 0x00, 0x14, 0x44, 0x00, 0x17, 0x5C, 0x00, 0x34, 0x44, 0x00, 0x54, 0x44, 0x00, 0x17, 0xFC, 0x00, 0x14, 0x44, 0x00, 0x20, 0xA0, 0x00, 0x21, 0x10, 0x00, 0x46, 0x0F, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7612, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x57, 0xFF, 0x00, 0x34, 0x01, 0x00, 0x14, 0x21, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x52, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7613, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x31, 0xF8, 0x00, 0x13, 0x08, 0x00, 0x16, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x32, 0x52, 0x00, 0x52, 0x9E, 0x00, 0x13, 0x02, 0x00, 0x30, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x88, 0x00, 0x03, 0x8E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7615, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xBF, 0x00, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x17, 0xBF, 0x00, 0x34, 0x00, 0x00, 0x54, 0x3F, 0x00, 0x17, 0x91, 0x00, 0x34, 0x11, 0x00, 0x24, 0x1B, 0x00, 0x67, 0x8E, 0x00, 0x04, 0x1B, 0x00, 0x04, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7616, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x30, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x04, 0x00, 0x30, 0x88, 0x00, 0x5F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x63, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7617, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x57, 0xFC, 0x00, 0x32, 0x48, 0x00, 0x11, 0x52, 0x00, 0x1F, 0xFF, 0x00, 0x31, 0x10, 0x00, 0x52, 0x48, 0x00, 0x14, 0x47, 0x00, 0x1B, 0xFA, 0x00, 0x20, 0x40, 0x00, 0x20, 0x44, 0x00, 0x4F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7618, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x49, 0x24, 0x00, 0x28, 0xA8, 0x00, 0x2B, 0xFE, 0x00, 0x08, 0xA8, 0x00, 0x1B, 0x26, 0x00, 0x28, 0x40, 0x00, 0x6F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x11, 0x90, 0x00, 0x10, 0x60, 0x00, 0x20, 0x98, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7619, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x29, 0x22, 0x00, 0x1A, 0x94, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x70, 0x00, 0x19, 0xAF, 0x80, 0x2E, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x10, 0x3F, 0x00, 0x27, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x761B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x31, 0xDF, 0x00, 0x17, 0x09, 0x00, 0x11, 0xC9, 0x00, 0x17, 0x09, 0x00, 0x31, 0xD9, 0x00, 0x57, 0x11, 0x00, 0x11, 0x37, 0x00, 0x30, 0x40, 0x00, 0x25, 0x63, 0x00, 0x65, 0x25, 0x80, 0x0D, 0x8C, 0x80, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x761C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x80, 0x00, 0x33, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x33, 0xFC, 0x00, 0x52, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x30, 0x40, 0x00, 0x25, 0x63, 0x00, 0x65, 0x25, 0x80, 0x0D, 0x8C, 0x80, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x761D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x14, 0x89, 0x00, 0x14, 0x89, 0x00, 0x17, 0xFF, 0x00, 0x30, 0x20, 0x00, 0x50, 0xA0, 0x00, 0x13, 0xB1, 0x80, 0x36, 0x2B, 0x00, 0x20, 0xAC, 0x00, 0x63, 0xA6, 0x00, 0x0E, 0x23, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x761E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x35, 0x75, 0x00, 0x55, 0x55, 0x00, 0x10, 0xD8, 0x00, 0x33, 0xAE, 0x00, 0x2E, 0x23, 0x80, 0x61, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x761F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x29, 0xFE, 0x00, 0x19, 0x22, 0x00, 0x09, 0x32, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x86, 0x00, 0x19, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7620, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x0B, 0xA7, 0x00, 0x28, 0x20, 0x00, 0x1B, 0xD7, 0x00, 0x08, 0x8C, 0x00, 0x0F, 0x03, 0x80, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7621, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x29, 0x8C, 0x00, 0x1E, 0xFB, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x15, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7622, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x2B, 0xDE, 0x00, 0x1A, 0x52, 0x00, 0x0A, 0xD2, 0x80, 0x0A, 0xD3, 0x80, 0x0A, 0x60, 0x00, 0x1A, 0xFF, 0x00, 0x2F, 0xD1, 0x00, 0x0A, 0x4A, 0x00, 0x0A, 0xC4, 0x00, 0x12, 0xCC, 0x00, 0x14, 0x52, 0x00, 0x24, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7623, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x40, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x53, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x30, 0x94, 0x00, 0x21, 0x95, 0x00, 0x61, 0x1F, 0x00, 0x03, 0x10, 0x80, 0x0E, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7624, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x60, 0x00, 0x2B, 0x9F, 0x00, 0x1A, 0x09, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xB1, 0x00, 0x1E, 0x2E, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x21, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7625, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x04, 0x00, 0x30, 0x88, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x57, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x30, 0x80, 0x00, 0x23, 0xFF, 0x00, 0x6E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7626, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x50, 0x00, 0x09, 0x97, 0x00, 0x29, 0x11, 0x00, 0x19, 0xD7, 0x00, 0x09, 0x11, 0x00, 0x09, 0xF7, 0x00, 0x19, 0x11, 0x00, 0x28, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x10, 0x30, 0x00, 0x10, 0xCC, 0x00, 0x27, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7627, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x50, 0x7E, 0x00, 0x30, 0x40, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x40, 0x80, 0x15, 0xFC, 0x00, 0x34, 0x41, 0x00, 0x54, 0x7F, 0x00, 0x14, 0x00, 0x00, 0x34, 0xFE, 0x00, 0x24, 0x80, 0x00, 0x6D, 0xFF, 0x00, 0x18, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7629, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x31, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x10, 0x70, 0x00, 0x30, 0xD8, 0x00, 0x53, 0x8E, 0x00, 0x1E, 0x73, 0x80, 0x30, 0x00, 0x00, 0x21, 0xFC, 0x00, 0x61, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x762A, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x53, 0xFC, 0x00, 0x32, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x32, 0x04, 0x00, 0x53, 0xFC, 0x00, 0x10, 0x90, 0x00, 0x11, 0x08, 0x00, 0x13, 0x37, 0x00, 0x1D, 0xC2, 0x00, 0x21, 0x04, 0x00, 0x40, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x762B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x48, 0x14, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0xA4, 0x00, 0x0C, 0xE4, 0x00, 0x1A, 0xBF, 0x00, 0x29, 0x24, 0x00, 0x49, 0x24, 0x00, 0x0A, 0xBF, 0x00, 0x12, 0xA4, 0x00, 0x14, 0x24, 0x00, 0x20, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x762D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x33, 0xFF, 0x00, 0x50, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x60, 0x10, 0x00, 0x03, 0x13, 0x00, 0x06, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7630, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x33, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x50, 0x48, 0x00, 0x11, 0x90, 0x00, 0x30, 0x62, 0x00, 0x27, 0xFF, 0x00, 0x60, 0x21, 0x00, 0x01, 0x24, 0x00, 0x06, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7632, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x22, 0x00, 0x31, 0x22, 0x00, 0x13, 0x22, 0x00, 0x16, 0x55, 0x00, 0x1D, 0x55, 0x00, 0x31, 0x00, 0x00, 0x53, 0x08, 0x00, 0x12, 0x48, 0x00, 0x36, 0x4E, 0x00, 0x2A, 0x48, 0x00, 0x62, 0x68, 0x00, 0x02, 0x5C, 0x00, 0x02, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7633, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x57, 0xDF, 0x00, 0x31, 0x45, 0x00, 0x12, 0xCB, 0x00, 0x11, 0x45, 0x00, 0x12, 0x28, 0x00, 0x30, 0x70, 0x00, 0x51, 0xDC, 0x00, 0x1E, 0x33, 0x80, 0x31, 0xC4, 0x00, 0x20, 0x18, 0x00, 0x61, 0xE3, 0x00, 0x00, 0x1E, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7634, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x31, 0xFC, 0x00, 0x51, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x31, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7635, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x33, 0xDF, 0x00, 0x1C, 0x51, 0x00, 0x12, 0x8A, 0x00, 0x15, 0x06, 0x00, 0x32, 0xFA, 0x00, 0x5C, 0x01, 0x80, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x22, 0x24, 0x00, 0x66, 0x26, 0x00, 0x0C, 0x23, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7638, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x37, 0xDF, 0x00, 0x11, 0x51, 0x00, 0x12, 0x51, 0x00, 0x1C, 0xDF, 0x00, 0x30, 0x00, 0x00, 0x50, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x51, 0x00, 0x24, 0x89, 0x00, 0x64, 0x21, 0x00, 0x04, 0x51, 0x00, 0x04, 0x8B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7639, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x08, 0x00, 0x33, 0x88, 0x00, 0x16, 0xC8, 0x00, 0x1C, 0x5F, 0x80, 0x17, 0x90, 0x80, 0x31, 0x30, 0x80, 0x57, 0xC0, 0x80, 0x11, 0x0E, 0x80, 0x35, 0x40, 0x80, 0x25, 0x40, 0x80, 0x65, 0x01, 0x80, 0x01, 0xC1, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x763A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x57, 0xFF, 0x00, 0x34, 0x01, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x15, 0x99, 0x00, 0x35, 0x55, 0x00, 0x2D, 0x11, 0x00, 0x69, 0x99, 0x00, 0x19, 0x55, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x763B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0B, 0xFE, 0x00, 0x1A, 0x02, 0x00, 0x2B, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFF, 0x80, 0x13, 0x08, 0x00, 0x10, 0xF0, 0x00, 0x2F, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x763C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x04, 0x00, 0x37, 0xFF, 0x00, 0x11, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x33, 0xFE, 0x00, 0x52, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x88, 0x00, 0x03, 0x8E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x763E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x17, 0x3C, 0x00, 0x55, 0x48, 0x00, 0x35, 0x7E, 0x00, 0x16, 0x02, 0x00, 0x15, 0x7E, 0x00, 0x34, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x16, 0x90, 0x00, 0x15, 0x08, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xA5, 0x00, 0x45, 0x25, 0x00, 0x04, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x763F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xBC, 0x00, 0x54, 0xA4, 0x00, 0x35, 0xAC, 0x00, 0x15, 0xAC, 0x00, 0x13, 0x18, 0x00, 0x34, 0xA4, 0x00, 0x50, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x23, 0x20, 0x00, 0x20, 0xE0, 0x00, 0x41, 0x18, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7640, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x57, 0xFF, 0x00, 0x31, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0x20, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x61, 0x04, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7641, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x20, 0x00, 0x33, 0x7F, 0x80, 0x16, 0xC0, 0x00, 0x1C, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x33, 0x3F, 0x00, 0x56, 0x21, 0x00, 0x1E, 0x3F, 0x00, 0x32, 0x10, 0x00, 0x22, 0x3F, 0x00, 0x62, 0xE2, 0x00, 0x02, 0x1C, 0x00, 0x02, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7642, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x2A, 0x52, 0x00, 0x19, 0x8C, 0x00, 0x0B, 0x06, 0x00, 0x0D, 0xFD, 0x80, 0x09, 0x04, 0x00, 0x19, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x11, 0x24, 0x00, 0x12, 0x22, 0x00, 0x24, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7643, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x57, 0x9F, 0x00, 0x34, 0xB3, 0x00, 0x15, 0x0E, 0x00, 0x15, 0x3B, 0x80, 0x14, 0x80, 0x00, 0x34, 0x8E, 0x00, 0x54, 0x80, 0x00, 0x14, 0xA4, 0x00, 0x35, 0xBF, 0x00, 0x24, 0x64, 0x00, 0x64, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7644, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x10, 0x00, 0x31, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x16, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x20, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x33, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x62, 0x92, 0x00, 0x06, 0xDB, 0x00, 0x0C, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7645, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x13, 0xDE, 0x00, 0x12, 0x52, 0x00, 0x33, 0xDE, 0x00, 0x50, 0x50, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x62, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7646, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x04, 0x00, 0x35, 0x55, 0x00, 0x12, 0x8A, 0x00, 0x14, 0x51, 0x00, 0x10, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x54, 0x01, 0x00, 0x14, 0x41, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x42, 0x00, 0x60, 0xC2, 0x00, 0x01, 0x86, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7647, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x37, 0xFF, 0x00, 0x54, 0x89, 0x00, 0x14, 0xF9, 0x00, 0x34, 0x89, 0x00, 0x24, 0xF9, 0x00, 0x64, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x9B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7648, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x02, 0x00, 0x37, 0xF4, 0x00, 0x18, 0x98, 0x80, 0x15, 0x8D, 0x00, 0x13, 0x06, 0x00, 0x3F, 0x9F, 0x80, 0x50, 0x92, 0x00, 0x17, 0xB3, 0x00, 0x34, 0x00, 0x00, 0x27, 0xBE, 0x00, 0x60, 0x92, 0x00, 0x00, 0x8C, 0x00, 0x03, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7649, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x53, 0xDE, 0x00, 0x32, 0x52, 0x00, 0x13, 0xDE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x6F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x764A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0x8C, 0x00, 0x14, 0x92, 0x00, 0x14, 0xAD, 0x00, 0x15, 0x40, 0x80, 0x35, 0x3E, 0x00, 0x54, 0x84, 0x00, 0x14, 0xBF, 0x00, 0x35, 0x80, 0x00, 0x24, 0x7F, 0x80, 0x64, 0x12, 0x00, 0x04, 0x27, 0x00, 0x04, 0x79, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x764B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x13, 0xDE, 0x00, 0x12, 0x02, 0x00, 0x33, 0xDE, 0x00, 0x50, 0x50, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0x20, 0x00, 0x21, 0x33, 0x00, 0x65, 0x11, 0x80, 0x0D, 0x84, 0x80, 0x18, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x764C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0xF8, 0x00, 0x18, 0x88, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xCF, 0x00, 0x1A, 0x49, 0x00, 0x2B, 0xCF, 0x00, 0x08, 0x20, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x764D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x40, 0x00, 0x5E, 0x0F, 0x00, 0x35, 0xF4, 0x00, 0x14, 0x24, 0x00, 0x14, 0xA4, 0x00, 0x34, 0xA4, 0x00, 0x5E, 0xAE, 0x00, 0x14, 0x44, 0x00, 0x14, 0xA4, 0x00, 0x25, 0x14, 0x00, 0x27, 0x04, 0x00, 0x5C, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x764E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xCF, 0x00, 0x2A, 0x49, 0x00, 0x1B, 0xCF, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xCF, 0x00, 0x0A, 0x01, 0x00, 0x1A, 0x79, 0x00, 0x2A, 0x49, 0x00, 0x0A, 0x79, 0x00, 0x12, 0x49, 0x00, 0x12, 0x79, 0x00, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7652, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x70, 0x00, 0x08, 0x88, 0x00, 0x29, 0x06, 0x00, 0x1E, 0xF9, 0x80, 0x0B, 0xE5, 0x00, 0x0A, 0x25, 0x00, 0x0B, 0xEA, 0x00, 0x1B, 0xEA, 0x00, 0x2A, 0x25, 0x00, 0x0A, 0xE5, 0x00, 0x08, 0x40, 0x00, 0x12, 0xA1, 0x00, 0x14, 0x82, 0x80, 0x28, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7654, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFC, 0x00, 0x51, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFC, 0x00, 0x34, 0x04, 0x00, 0x57, 0xFC, 0x00, 0x14, 0x04, 0x00, 0x17, 0xFC, 0x00, 0x20, 0x40, 0x00, 0x25, 0x22, 0x00, 0x49, 0x0A, 0x00, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7655, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x11, 0x12, 0x00, 0x12, 0x14, 0x00, 0x34, 0xBF, 0x80, 0x55, 0x64, 0x00, 0x12, 0x3F, 0x00, 0x34, 0xA4, 0x00, 0x2F, 0xBF, 0x00, 0x61, 0x24, 0x00, 0x02, 0x3F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7656, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x09, 0xE4, 0x00, 0x29, 0x24, 0x00, 0x19, 0x3F, 0x80, 0x09, 0x20, 0x00, 0x09, 0xEA, 0x00, 0x09, 0x0A, 0x00, 0x19, 0x1F, 0x00, 0x2B, 0xE4, 0x00, 0x0B, 0x24, 0x00, 0x0B, 0x3F, 0x80, 0x15, 0x24, 0x00, 0x15, 0xE4, 0x00, 0x11, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7658, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x88, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x33, 0xFE, 0x00, 0x52, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x64, 0x29, 0x00, 0x05, 0xF5, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7659, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x31, 0x80, 0x00, 0x17, 0x1E, 0x00, 0x14, 0x02, 0x00, 0x17, 0x9E, 0x00, 0x34, 0x02, 0x00, 0x57, 0xFE, 0x00, 0x14, 0x44, 0x00, 0x37, 0x74, 0x00, 0x24, 0x44, 0x00, 0x67, 0x76, 0x80, 0x04, 0x42, 0x80, 0x0E, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x765C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xEF, 0x00, 0x14, 0x29, 0x00, 0x17, 0xE9, 0x00, 0x15, 0x51, 0x80, 0x37, 0xE0, 0x00, 0x55, 0x5F, 0x00, 0x15, 0x49, 0x00, 0x17, 0xED, 0x00, 0x34, 0x07, 0x00, 0x25, 0x42, 0x00, 0x6B, 0x67, 0x00, 0x06, 0x2D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x765E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0x1E, 0x00, 0x57, 0xD2, 0x00, 0x31, 0x24, 0x00, 0x17, 0xDF, 0x00, 0x15, 0x51, 0x00, 0x35, 0x55, 0x00, 0x57, 0xD5, 0x00, 0x11, 0x15, 0x00, 0x13, 0x95, 0x00, 0x25, 0x55, 0x00, 0x29, 0x08, 0x00, 0x41, 0x0A, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x765F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x51, 0xFC, 0x00, 0x31, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x31, 0x04, 0x00, 0x53, 0xFE, 0x00, 0x1E, 0x03, 0x80, 0x33, 0xFE, 0x00, 0x22, 0x52, 0x00, 0x63, 0xFE, 0x00, 0x02, 0x52, 0x00, 0x02, 0x56, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7661, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0xC0, 0x00, 0x2B, 0x1E, 0x00, 0x1A, 0x44, 0x00, 0x0B, 0xC8, 0x00, 0x09, 0x7F, 0x80, 0x0A, 0x09, 0x00, 0x1F, 0xC8, 0x00, 0x29, 0x2F, 0x00, 0x0F, 0xE8, 0x00, 0x09, 0x28, 0x00, 0x12, 0xA8, 0x00, 0x14, 0xDF, 0x80, 0x28, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7662, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x88, 0x00, 0x37, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x53, 0x06, 0x00, 0x15, 0xFD, 0x00, 0x39, 0x04, 0x80, 0x21, 0xFD, 0x00, 0x61, 0x13, 0x00, 0x01, 0xCE, 0x00, 0x07, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7663, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x52, 0x14, 0x00, 0x37, 0xBE, 0x00, 0x19, 0x08, 0x00, 0x17, 0xC8, 0x00, 0x35, 0x7E, 0x00, 0x57, 0xC8, 0x00, 0x15, 0x4A, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x08, 0x00, 0x21, 0xC8, 0x00, 0x4E, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7664, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x2D, 0x12, 0x00, 0x18, 0xA1, 0x00, 0x0B, 0xEF, 0x80, 0x0A, 0x28, 0x80, 0x0B, 0xE8, 0x80, 0x1A, 0x28, 0x80, 0x2B, 0xE8, 0x80, 0x0A, 0x08, 0x80, 0x0A, 0x68, 0x80, 0x13, 0x8B, 0x80, 0x12, 0x28, 0x00, 0x23, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7665, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x52, 0x44, 0x00, 0x37, 0x54, 0x00, 0x1D, 0x57, 0x80, 0x11, 0xF5, 0x00, 0x12, 0x0D, 0x00, 0x36, 0xE5, 0x00, 0x5C, 0x07, 0x00, 0x15, 0xF2, 0x00, 0x34, 0x42, 0x00, 0x25, 0xF2, 0x00, 0x64, 0x47, 0x00, 0x05, 0xF5, 0x00, 0x04, 0x0D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7667, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x14, 0x63, 0x00, 0x14, 0xC6, 0x00, 0x15, 0xFF, 0x80, 0x34, 0xE7, 0x00, 0x55, 0x5A, 0x80, 0x14, 0x42, 0x00, 0x34, 0x10, 0x00, 0x2C, 0x9F, 0x00, 0x68, 0x90, 0x00, 0x18, 0x90, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7668, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x53, 0xFF, 0x00, 0x30, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x20, 0x80, 0x15, 0xAE, 0x80, 0x30, 0x20, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x33, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x61, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7669, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x2B, 0xE5, 0x00, 0x18, 0x89, 0x00, 0x0B, 0xF6, 0x00, 0x0A, 0xAF, 0x00, 0x0B, 0xE9, 0x00, 0x18, 0x8F, 0x00, 0x29, 0xC9, 0x00, 0x09, 0xAF, 0x00, 0x0A, 0x89, 0x00, 0x12, 0x8F, 0x00, 0x14, 0x89, 0x00, 0x20, 0x90, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x766A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x50, 0x08, 0x00, 0x31, 0xBF, 0x00, 0x1F, 0x08, 0x00, 0x12, 0x3F, 0x00, 0x1F, 0x88, 0x00, 0x32, 0x7F, 0x80, 0x53, 0x21, 0x00, 0x16, 0xBF, 0x00, 0x36, 0xA1, 0x00, 0x2A, 0x3F, 0x00, 0x62, 0x21, 0x00, 0x02, 0x3F, 0x00, 0x02, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x766B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x5F, 0xFF, 0x00, 0x31, 0x08, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x37, 0xD5, 0x00, 0x54, 0x55, 0x00, 0x17, 0xD5, 0x00, 0x14, 0x55, 0x00, 0x17, 0xD5, 0x00, 0x24, 0x55, 0x00, 0x2F, 0xE8, 0x00, 0x42, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x766C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x09, 0xD1, 0x00, 0x2A, 0x4A, 0x00, 0x1C, 0xBF, 0x80, 0x0B, 0xE4, 0x00, 0x0A, 0xA4, 0x00, 0x1B, 0xFF, 0x00, 0x2A, 0xA4, 0x00, 0x0B, 0xE4, 0x00, 0x0A, 0x1F, 0x80, 0x10, 0x54, 0x00, 0x15, 0x54, 0x00, 0x29, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x766D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x57, 0xDF, 0x00, 0x34, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x34, 0x51, 0x00, 0x57, 0xDF, 0x00, 0x12, 0x8A, 0x00, 0x34, 0x51, 0x00, 0x2F, 0xFF, 0x80, 0x63, 0x08, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x766E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x03, 0x00, 0x57, 0xBE, 0x00, 0x34, 0xA5, 0x00, 0x14, 0xC8, 0x80, 0x15, 0x3F, 0x00, 0x15, 0x08, 0x00, 0x34, 0xFF, 0x80, 0x54, 0x81, 0x00, 0x14, 0xBF, 0x80, 0x35, 0x81, 0x00, 0x24, 0x3F, 0x00, 0x64, 0x55, 0x00, 0x04, 0x52, 0x80, 0x04, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x766F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x51, 0x00, 0x57, 0xDF, 0x00, 0x34, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x31, 0x10, 0x00, 0x53, 0xFF, 0x00, 0x16, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x63, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7670, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0xA5, 0x00, 0x0D, 0x45, 0x00, 0x2A, 0xAA, 0x00, 0x18, 0x1F, 0x80, 0x0B, 0xEA, 0x00, 0x0A, 0x4A, 0x00, 0x1B, 0xCF, 0x80, 0x28, 0x0A, 0x00, 0x0F, 0xEA, 0x00, 0x0D, 0x2F, 0x80, 0x17, 0xEA, 0x00, 0x14, 0x0A, 0x00, 0x14, 0x2F, 0x80, 0x27, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7671, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x89, 0x00, 0x5F, 0xEA, 0x00, 0x32, 0x9F, 0x00, 0x13, 0x94, 0x00, 0x11, 0x14, 0x00, 0x17, 0xD4, 0x00, 0x35, 0x5F, 0x00, 0x57, 0xD4, 0x00, 0x11, 0x14, 0x00, 0x37, 0xDF, 0x00, 0x21, 0x14, 0x00, 0x6F, 0xF4, 0x00, 0x02, 0x94, 0x00, 0x0C, 0xDF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7672, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0x60, 0x00, 0x0B, 0x9F, 0x80, 0x2A, 0x04, 0x00, 0x1B, 0xEF, 0x00, 0x08, 0x09, 0x00, 0x0A, 0xE9, 0x00, 0x0A, 0xAF, 0x00, 0x1A, 0xE9, 0x00, 0x2A, 0xA9, 0x00, 0x0A, 0xEF, 0x00, 0x0A, 0xA9, 0x00, 0x13, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x22, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7674, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x55, 0x75, 0x00, 0x32, 0x02, 0x00, 0x15, 0x74, 0x80, 0x1F, 0x5F, 0x80, 0x12, 0x72, 0x00, 0x3B, 0x06, 0x80, 0x52, 0xFA, 0x80, 0x10, 0x20, 0x00, 0x33, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x6F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7676, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE4, 0x00, 0x01, 0x28, 0x00, 0x23, 0x31, 0x00, 0x16, 0x1A, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7678, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC4, 0x00, 0x10, 0xA8, 0x00, 0x09, 0x11, 0x00, 0x06, 0x0A, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x0C, 0x00, 0x30, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x767A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE4, 0x00, 0x01, 0x28, 0x00, 0x23, 0x31, 0x00, 0x16, 0x1A, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFE, 0x00, 0x72, 0x13, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x767B, { 0x00, 0x00, 0x00, 0x0F, 0xC2, 0x00, 0x00, 0x64, 0x00, 0x10, 0x98, 0x80, 0x09, 0x09, 0x00, 0x02, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x767C, { 0x00, 0x00, 0x00, 0x0F, 0xE4, 0x00, 0x08, 0x69, 0x00, 0x04, 0x92, 0x00, 0x03, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1F, 0x7C, 0x00, 0x01, 0x45, 0x00, 0x1F, 0x47, 0x00, 0x10, 0x80, 0x00, 0x20, 0xFE, 0x00, 0x3F, 0x44, 0x00, 0x01, 0x28, 0x00, 0x01, 0x10, 0x00, 0x02, 0x6C, 0x00, 0x0D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x767D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x767E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7680, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x20, 0x18, 0x00, 0x21, 0xF0, 0x00, 0x3F, 0x00, 0x00, 0x20, 0x02, 0x00, 0x30, 0x06, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7681, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7682, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7683, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7684, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x80, 0x80, 0x23, 0x00, 0x80, 0x22, 0x20, 0x80, 0x3E, 0x10, 0x80, 0x22, 0x08, 0x80, 0x22, 0x00, 0x80, 0x22, 0x00, 0x80, 0x22, 0x00, 0x80, 0x3E, 0x00, 0x80, 0x22, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7685, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0x11, 0x00, 0x45, 0xFF, 0x00, 0x7D, 0x00, 0x00, 0x45, 0x00, 0x00, 0x45, 0x00, 0x00, 0x45, 0x00, 0x00, 0x45, 0x00, 0x80, 0x7D, 0x81, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7686, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x11, 0x80, 0x08, 0x12, 0x00, 0x0F, 0x9C, 0x00, 0x08, 0x10, 0x80, 0x08, 0x10, 0x80, 0x0B, 0xDF, 0x80, 0x3C, 0x80, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7687, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7688, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0xFF, 0x00, 0x44, 0xA1, 0x00, 0x7C, 0xA3, 0x00, 0x44, 0xB2, 0x00, 0x44, 0x96, 0x00, 0x44, 0x9C, 0x00, 0x7D, 0x88, 0x00, 0x01, 0x1C, 0x00, 0x03, 0x36, 0x00, 0x06, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x768B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x768C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x7C, 0x54, 0x00, 0x44, 0x54, 0x00, 0x44, 0x54, 0x00, 0x44, 0xD6, 0x00, 0x44, 0x92, 0x00, 0x7D, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x768D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x10, 0x21, 0x00, 0x1F, 0xA1, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x1F, 0xA7, 0x00, 0x70, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x768E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x22, 0x42, 0x00, 0x22, 0x81, 0x00, 0x23, 0x42, 0x80, 0x3E, 0x42, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x18, 0x00, 0x22, 0x18, 0x00, 0x3E, 0x24, 0x00, 0x22, 0xC2, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7690, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x5F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x5F, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7691, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFE, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x80, 0x00, 0x3E, 0x81, 0x00, 0x22, 0x81, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7693, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x10, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x88, 0x00, 0x22, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7695, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x04, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7696, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x45, 0x01, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x7C, 0xC4, 0x00, 0x00, 0x84, 0x80, 0x01, 0x84, 0x80, 0x03, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7699, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x1C, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x28, 0xC4, 0x00, 0x49, 0x84, 0x00, 0x08, 0x44, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x769A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x19, 0x11, 0x00, 0x11, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x44, 0x00, 0x7C, 0x6C, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x769B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x769C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x44, 0x7E, 0x00, 0x44, 0x42, 0x00, 0x44, 0x7E, 0x00, 0x44, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x45, 0x00, 0x80, 0x45, 0x3C, 0x80, 0x45, 0x24, 0x80, 0x45, 0x24, 0x80, 0x7D, 0x3C, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x769D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x10, 0x49, 0x00, 0x3E, 0x6B, 0x00, 0x22, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x64, 0x00, 0x0F, 0x44, 0x80, 0x78, 0xC4, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x769F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76A0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x88, 0x80, 0x10, 0x88, 0x80, 0x7C, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x44, 0x48, 0x00, 0x44, 0xFF, 0x80, 0x44, 0x88, 0x00, 0x7D, 0x88, 0x00, 0x46, 0xFF, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76A2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x44, 0x82, 0x00, 0x45, 0xEF, 0x80, 0x44, 0x82, 0x00, 0x7C, 0xE2, 0x00, 0x45, 0x8F, 0x80, 0x44, 0x00, 0x00, 0x45, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x7C, 0x44, 0x80, 0x00, 0xC4, 0x80, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76A3, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x30, 0x44, 0x00, 0x23, 0xFF, 0x80, 0x78, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x92, 0x00, 0x48, 0x92, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76A4, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x18, 0xF8, 0x00, 0x11, 0x11, 0x00, 0x7C, 0x92, 0x00, 0x47, 0xFF, 0x80, 0x44, 0x54, 0x00, 0x44, 0x56, 0x00, 0x44, 0xD3, 0x00, 0x7D, 0x91, 0x80, 0x44, 0x00, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x91, 0x00, 0x44, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76A5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x20, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x45, 0xD7, 0x00, 0x44, 0x10, 0x00, 0x45, 0xD7, 0x00, 0x7C, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76A6, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x31, 0x04, 0x00, 0x23, 0xE4, 0x00, 0x7A, 0x2F, 0x80, 0x4B, 0xE9, 0x00, 0x4A, 0x39, 0x00, 0x4B, 0xE9, 0x00, 0x48, 0x8D, 0x00, 0x78, 0x85, 0x00, 0x4F, 0xF7, 0x00, 0x49, 0x02, 0x00, 0x49, 0xE2, 0x00, 0x49, 0x27, 0x00, 0x7B, 0x25, 0x00, 0x02, 0x2D, 0x80, 0x06, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76A7, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x33, 0xFC, 0x00, 0x21, 0x21, 0x00, 0x78, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x10, 0x80, 0x49, 0x49, 0x00, 0x49, 0x42, 0x80, 0x7A, 0x3E, 0x00, 0x48, 0x40, 0x00, 0x48, 0xFE, 0x00, 0x49, 0x82, 0x00, 0x4B, 0x4C, 0x00, 0x78, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76A8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76AA, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x33, 0x23, 0x00, 0x22, 0x3A, 0x00, 0x7A, 0xAA, 0x80, 0x49, 0x29, 0x00, 0x49, 0x39, 0x00, 0x4A, 0x2A, 0x00, 0x4A, 0xAA, 0x80, 0x7B, 0xBB, 0x80, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x48, 0xD6, 0x00, 0x79, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76AD, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x33, 0xFC, 0x00, 0x20, 0xA2, 0x00, 0x79, 0x11, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x7B, 0xE1, 0x00, 0x4A, 0x2F, 0x80, 0x4B, 0xE1, 0x00, 0x4A, 0x09, 0x00, 0x4B, 0xED, 0x00, 0x7A, 0x05, 0x00, 0x03, 0xE1, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76AE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x21, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x08, 0x30, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x13, 0x06, 0x00, 0x2C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76B0, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x25, 0x61, 0x00, 0x24, 0x41, 0x00, 0x24, 0xFD, 0x00, 0x3F, 0x25, 0x00, 0x21, 0x25, 0x00, 0x23, 0x3D, 0x00, 0x3A, 0x23, 0x00, 0x2E, 0x22, 0x00, 0x24, 0x26, 0x00, 0x6E, 0x20, 0x00, 0x4A, 0x20, 0x80, 0x1B, 0x31, 0x80, 0x30, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76B1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x62, 0x49, 0x00, 0x04, 0x4A, 0x00, 0x3F, 0x48, 0x00, 0x01, 0x7E, 0x00, 0x01, 0x42, 0x00, 0x3F, 0x62, 0x00, 0x01, 0x54, 0x00, 0x01, 0x54, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x94, 0x00, 0x01, 0x27, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76B2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x29, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x08, 0x92, 0x00, 0x14, 0x90, 0x00, 0x14, 0xFE, 0x00, 0x3E, 0xC4, 0x00, 0x04, 0xA8, 0x00, 0x04, 0x90, 0x00, 0x7E, 0xA8, 0x00, 0x05, 0x28, 0x00, 0x05, 0x44, 0x00, 0x06, 0x87, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76B4, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x32, 0x04, 0x00, 0x22, 0x04, 0x00, 0x7F, 0x7F, 0x80, 0x15, 0x44, 0x80, 0x34, 0x45, 0x00, 0x67, 0x44, 0x00, 0x10, 0x7F, 0x00, 0x1E, 0x51, 0x00, 0x32, 0x5B, 0x00, 0x66, 0x4A, 0x00, 0x14, 0x4E, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x4E, 0x00, 0x36, 0x9B, 0x00, 0x60, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76B7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x80, 0x3E, 0x48, 0x80, 0x00, 0x49, 0x00, 0x3E, 0x48, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x51, 0x00, 0x3E, 0x53, 0x00, 0x00, 0x5A, 0x00, 0x22, 0x4E, 0x00, 0x36, 0x44, 0x00, 0x14, 0x8E, 0x00, 0x1E, 0x1B, 0x00, 0x70, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76B8, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x40, 0x44, 0x00, 0x44, 0x7F, 0x80, 0x3F, 0xA4, 0x80, 0x04, 0x25, 0x00, 0x3F, 0xA4, 0x00, 0x24, 0xBF, 0x00, 0x3F, 0xA9, 0x00, 0x24, 0xAB, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x2E, 0x00, 0x7F, 0xA4, 0x00, 0x04, 0x4E, 0x00, 0x04, 0x1B, 0x00, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76B9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3A, 0x49, 0x00, 0x2E, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x6E, 0x08, 0x00, 0x4B, 0xFF, 0x80, 0x19, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76BA, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xBF, 0x80, 0x24, 0xA4, 0x00, 0x15, 0xA4, 0x00, 0x15, 0xBF, 0x80, 0x1F, 0xA0, 0x80, 0x18, 0xA1, 0x00, 0x09, 0x29, 0x00, 0x1F, 0xAA, 0x00, 0x34, 0xA6, 0x00, 0x15, 0xA4, 0x00, 0x1F, 0xA6, 0x00, 0x09, 0xAA, 0x00, 0x10, 0xC9, 0x00, 0x23, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76BD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x7F, 0x7F, 0x80, 0x41, 0x44, 0x80, 0x5D, 0x45, 0x00, 0x55, 0x44, 0x00, 0x5D, 0x7F, 0x00, 0x41, 0x51, 0x00, 0x7F, 0x5B, 0x00, 0x22, 0x4A, 0x00, 0x3E, 0x4E, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x4E, 0x00, 0x00, 0x9B, 0x00, 0x7F, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x0F, 0x00, 0x03, 0x01, 0x00, 0x06, 0x01, 0x00, 0x0C, 0x01, 0x00, 0x18, 0x03, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x01, 0x46, 0x00, 0x02, 0x41, 0x00, 0x0C, 0x40, 0x80, 0x30, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76C5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76C6, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x0F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x30, 0x00, 0x30, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x0F, 0xA1, 0x00, 0x18, 0x81, 0x00, 0x25, 0x01, 0x00, 0x02, 0x02, 0x00, 0x05, 0x0C, 0x00, 0x09, 0x00, 0x00, 0x30, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76C9, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76CA, { 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0B, 0xFA, 0x00, 0x30, 0x01, 0x80, 0x00, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76CB, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0x84, 0x00, 0x06, 0xEC, 0x00, 0x0C, 0x38, 0x00, 0x18, 0xEE, 0x00, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76CC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xBF, 0x00, 0x18, 0xA1, 0x00, 0x11, 0xA1, 0x00, 0x39, 0x27, 0x00, 0x6B, 0x20, 0x00, 0x06, 0x20, 0x80, 0x0C, 0x31, 0x80, 0x18, 0x1F, 0x00, 0x70, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76CD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76CE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76CF, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x3F, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xC1, 0x00, 0x07, 0x31, 0x00, 0x38, 0x0F, 0x00, 0x1F, 0xFC, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D0, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA8, 0x00, 0x04, 0x24, 0x00, 0x04, 0x22, 0x00, 0x07, 0xA2, 0x00, 0x3C, 0x20, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D1, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x50, 0x00, 0x12, 0x8C, 0x00, 0x12, 0x04, 0x00, 0x12, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x40, 0x00, 0x12, 0x46, 0x00, 0x16, 0x4C, 0x00, 0x14, 0xE0, 0x00, 0x11, 0xB0, 0x00, 0x33, 0x1C, 0x00, 0x2E, 0x07, 0x80, 0x60, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D6, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x21, 0x00, 0x03, 0x22, 0x00, 0x08, 0x70, 0x00, 0x18, 0xD8, 0x00, 0x31, 0x8E, 0x00, 0x63, 0x03, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D8, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x10, 0xA8, 0x00, 0x20, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76D9, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76DB, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x41, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x24, 0x00, 0x11, 0x18, 0x00, 0x11, 0x18, 0x00, 0x16, 0x24, 0x80, 0x20, 0xC2, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76DC, { 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x10, 0x40, 0x00, 0x00, 0xFF, 0x00, 0x21, 0x22, 0x00, 0x16, 0x24, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x06, 0x00, 0x26, 0x01, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76DE, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x50, 0x00, 0x00, 0x60, 0x00, 0x03, 0x98, 0x80, 0x3C, 0xA7, 0x80, 0x00, 0x90, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x88, 0x00, 0x00, 0x70, 0x00, 0x03, 0x98, 0x80, 0x3C, 0x07, 0x80, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x47, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76E0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA1, 0x00, 0x1C, 0x96, 0x00, 0x03, 0x58, 0x00, 0x3C, 0x4C, 0x00, 0x01, 0xC6, 0x00, 0x7E, 0x43, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76E1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76E3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x12, 0x10, 0x00, 0x12, 0x1F, 0x80, 0x1F, 0xA0, 0x00, 0x10, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x12, 0x00, 0x00, 0x12, 0x1F, 0x00, 0x1F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76E4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x80, 0x11, 0x43, 0x80, 0x17, 0x80, 0x00, 0x39, 0x7F, 0x00, 0x15, 0x22, 0x00, 0x15, 0x14, 0x00, 0x21, 0x08, 0x00, 0x23, 0x36, 0x00, 0x00, 0xC1, 0x80, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76E5, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x87, 0x00, 0x20, 0x91, 0x00, 0x3B, 0xA7, 0x00, 0x20, 0xC1, 0x00, 0x21, 0xC1, 0x00, 0x3A, 0xA7, 0x00, 0x24, 0x91, 0x00, 0x21, 0x81, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76E6, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0xC7, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x0E, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76E7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBD, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0xFE, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76E8, { 0x00, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x1C, 0x10, 0x00, 0x70, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x72, 0xFF, 0x00, 0x06, 0x81, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x42, 0x00, 0x71, 0x81, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x60, 0x84, 0x00, 0x30, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x31, 0xFF, 0x00, 0x22, 0x49, 0x00, 0x60, 0x93, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76EC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7E, 0x7F, 0x00, 0x48, 0xC8, 0x00, 0x48, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x42, 0x08, 0x00, 0x42, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x48, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76F2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76F4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x78, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x78, 0x48, 0x00, 0x48, 0x48, 0x00, 0x48, 0x48, 0x00, 0x48, 0xC8, 0x00, 0x78, 0x89, 0x00, 0x01, 0x89, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76F8, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x80, 0x02, 0x10, 0x80, 0x1F, 0xD0, 0x80, 0x02, 0x10, 0x80, 0x06, 0x1F, 0x80, 0x07, 0x10, 0x80, 0x0A, 0x90, 0x80, 0x0A, 0x50, 0x80, 0x12, 0x10, 0x80, 0x12, 0x1F, 0x80, 0x22, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x10, 0x80, 0x02, 0x1F, 0x80, 0x02, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x76F9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x27, 0x00, 0x48, 0x3C, 0x00, 0x4B, 0xE0, 0x00, 0x48, 0x20, 0x00, 0x79, 0x24, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x79, 0x24, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x21, 0x00, 0x00, 0x23, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76FB, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x78, 0x88, 0x00, 0x49, 0x8C, 0x00, 0x4B, 0x06, 0x00, 0x4E, 0x03, 0x00, 0x79, 0xFC, 0x00, 0x48, 0x40, 0x00, 0x48, 0xC0, 0x00, 0x48, 0x80, 0x00, 0x79, 0xFC, 0x00, 0x48, 0x04, 0x00, 0x48, 0x04, 0x00, 0x48, 0x04, 0x00, 0x78, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x00, 0x48, 0x44, 0x00, 0x48, 0x42, 0x00, 0x48, 0x81, 0x00, 0x79, 0x00, 0x80, 0x4A, 0x00, 0x00, 0x4C, 0xFF, 0x00, 0x48, 0x21, 0x00, 0x78, 0x21, 0x00, 0x48, 0x41, 0x00, 0x48, 0x41, 0x00, 0x48, 0x82, 0x00, 0x78, 0x82, 0x00, 0x49, 0x04, 0x00, 0x46, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x76FE, { 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0xC1, 0x00, 0x3E, 0x81, 0x00, 0x01, 0x81, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7701, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x45, 0x00, 0x20, 0x48, 0x80, 0x01, 0xD0, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7704, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0x10, 0x00, 0x3D, 0x1F, 0x80, 0x25, 0x10, 0x80, 0x25, 0x10, 0x80, 0x25, 0x10, 0x80, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x24, 0x00, 0x80, 0x24, 0x00, 0x80, 0x3C, 0x00, 0x80, 0x24, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7706, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x78, 0x40, 0x00, 0x48, 0x40, 0x00, 0x48, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x78, 0x42, 0x00, 0x48, 0x42, 0x00, 0x48, 0xC2, 0x00, 0x48, 0x86, 0x00, 0x78, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7707, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x7B, 0x26, 0x00, 0x4A, 0x23, 0x00, 0x4E, 0x20, 0x00, 0x48, 0x24, 0x00, 0x78, 0xEC, 0x00, 0x48, 0x08, 0x00, 0x48, 0x18, 0x00, 0x48, 0x30, 0x00, 0x78, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7708, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x10, 0x80, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x18, 0x00, 0x24, 0x28, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x80, 0x3C, 0x88, 0x80, 0x25, 0x0F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7709, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x770A, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x1C, 0x00, 0x49, 0xF0, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x79, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x21, 0x00, 0x00, 0x33, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x770B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x17, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x770C, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x27, 0xF8, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x27, 0xF8, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x27, 0xF8, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8C, 0x00, 0x70, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x770D, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x80, 0x00, 0x22, 0x82, 0x00, 0x22, 0xC2, 0x00, 0x3E, 0xA4, 0x00, 0x22, 0x94, 0x00, 0x22, 0x88, 0x00, 0x3E, 0x94, 0x00, 0x22, 0x94, 0x00, 0x22, 0xA2, 0x00, 0x22, 0xC2, 0x00, 0x3E, 0x80, 0x00, 0x22, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x770E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x78, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x79, 0x24, 0x00, 0x49, 0x24, 0x00, 0x4B, 0x26, 0x00, 0x4A, 0x23, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7712, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7714, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x18, 0x86, 0x00, 0x0C, 0x8C, 0x00, 0x00, 0xD8, 0x00, 0x02, 0xE0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x38, 0x8E, 0x00, 0x60, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7715, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x70, 0x00, 0x48, 0xD8, 0x00, 0x49, 0x8C, 0x00, 0x7B, 0x06, 0x00, 0x4E, 0x23, 0x00, 0x48, 0x60, 0x00, 0x48, 0xC4, 0x00, 0x7B, 0x8C, 0x00, 0x48, 0x18, 0x00, 0x48, 0x71, 0x00, 0x4B, 0xC3, 0x00, 0x78, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7717, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x3D, 0x81, 0x00, 0x24, 0x79, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x79, 0x00, 0x24, 0x01, 0x00, 0x3C, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7719, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x44, 0x60, 0x00, 0x44, 0x42, 0x00, 0x44, 0xC2, 0x00, 0x7C, 0x9F, 0x00, 0x45, 0xF1, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x771A, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x30, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x771B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0xA8, 0x00, 0x78, 0xA8, 0x00, 0x48, 0xA8, 0x00, 0x49, 0xAC, 0x00, 0x49, 0x24, 0x00, 0x7B, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x771C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0xA8, 0x00, 0x78, 0xA8, 0x00, 0x48, 0xA8, 0x00, 0x49, 0xAC, 0x00, 0x49, 0x24, 0x00, 0x7B, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x771E, { 0x00, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x771F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7720, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x3C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3C, 0xBA, 0x80, 0x25, 0xC1, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7722, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xBE, 0x00, 0x18, 0xA2, 0x00, 0x31, 0xA2, 0x00, 0x6D, 0x26, 0x00, 0x03, 0x20, 0x80, 0x0E, 0x31, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7724, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFE, 0x00, 0x4A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x7A, 0x02, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x00, 0x00, 0x4A, 0x40, 0x00, 0x7A, 0x46, 0x00, 0x4A, 0x5C, 0x00, 0x4A, 0x70, 0x00, 0x4A, 0x40, 0x00, 0x7A, 0x40, 0x00, 0x02, 0x41, 0x00, 0x04, 0x63, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7725, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x24, 0x23, 0x00, 0x27, 0xBE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x80, 0x27, 0xA1, 0x80, 0x3C, 0x1F, 0x00, 0x60, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7726, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x48, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x7A, 0x8B, 0x00, 0x4A, 0xEE, 0x00, 0x4A, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x7A, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x7A, 0xE9, 0x00, 0x03, 0x89, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7728, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x7C, 0x1C, 0x00, 0x44, 0xF0, 0x00, 0x44, 0x00, 0x00, 0x44, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x02, 0x00, 0x44, 0x06, 0x00, 0x7C, 0x04, 0x00, 0x44, 0x0C, 0x00, 0x44, 0x18, 0x00, 0x44, 0x30, 0x00, 0x7C, 0x60, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7729, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x24, 0x08, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0xC4, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x10, 0x00, 0x24, 0x22, 0x00, 0x24, 0x41, 0x00, 0x3C, 0x9F, 0x80, 0x25, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x772D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x772E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xBD, 0x00, 0x3C, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xBD, 0x00, 0x24, 0xA5, 0x00, 0x3C, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xBD, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x772F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x49, 0x24, 0x00, 0x49, 0xA4, 0x00, 0x48, 0xAC, 0x00, 0x78, 0xA8, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0xA8, 0x00, 0x78, 0xA8, 0x00, 0x48, 0xA8, 0x00, 0x49, 0xAC, 0x00, 0x49, 0x24, 0x00, 0x7B, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7734, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3C, 0x80, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x81, 0x00, 0x3D, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3C, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3C, 0xF9, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7735, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x78, 0x40, 0x00, 0x48, 0x7C, 0x00, 0x48, 0xC4, 0x00, 0x49, 0x8C, 0x00, 0x7B, 0x58, 0x00, 0x48, 0x30, 0x00, 0x48, 0xE8, 0x00, 0x4B, 0x8F, 0x00, 0x78, 0x19, 0x00, 0x48, 0x33, 0x00, 0x48, 0xEA, 0x00, 0x48, 0x06, 0x00, 0x78, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7736, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x00, 0x00, 0x4A, 0xFE, 0x00, 0x4A, 0x10, 0x00, 0x7A, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0x7C, 0x00, 0x4A, 0x10, 0x00, 0x7A, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0xFE, 0x00, 0x7A, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7737, { 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x37, 0xFD, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7738, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x50, 0x80, 0x24, 0x90, 0x00, 0x25, 0xFF, 0x00, 0x26, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7739, { 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x79, 0x0C, 0x00, 0x4B, 0x06, 0x00, 0x4E, 0x03, 0x00, 0x4B, 0xFE, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x78, 0x50, 0x00, 0x48, 0x50, 0x00, 0x48, 0xD8, 0x00, 0x48, 0x88, 0x00, 0x79, 0x8C, 0x00, 0x03, 0x06, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x773A, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x25, 0x29, 0x00, 0x24, 0xAA, 0x00, 0x3C, 0xAC, 0x00, 0x24, 0x28, 0x00, 0x24, 0x2C, 0x00, 0x24, 0x6A, 0x00, 0x25, 0xA9, 0x00, 0x3E, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x48, 0x00, 0x24, 0x88, 0x80, 0x3D, 0x0F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x773C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x91, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x8C, 0x00, 0x22, 0x88, 0x00, 0x22, 0x84, 0x00, 0x3E, 0xBA, 0x00, 0x23, 0xC1, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x773D, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x38, 0x00, 0x49, 0xE0, 0x00, 0x49, 0x06, 0x00, 0x49, 0x3C, 0x00, 0x79, 0x20, 0x00, 0x49, 0x22, 0x00, 0x49, 0x26, 0x00, 0x49, 0x2C, 0x00, 0x79, 0x30, 0x00, 0x49, 0x28, 0x00, 0x49, 0x28, 0x00, 0x49, 0x2C, 0x00, 0x79, 0x24, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x773E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x08, 0x64, 0x00, 0x08, 0xC4, 0x00, 0x0B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1C, 0x8E, 0x00, 0x14, 0x8A, 0x00, 0x36, 0x9B, 0x00, 0x62, 0xB1, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7740, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x17, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7741, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x24, 0xFC, 0x00, 0x25, 0x08, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xFC, 0x00, 0x24, 0x24, 0x00, 0x24, 0x24, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x24, 0x00, 0x3C, 0x20, 0x00, 0x24, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7742, { 0x00, 0x00, 0x00, 0x03, 0x81, 0x00, 0x0E, 0x71, 0x00, 0x38, 0x19, 0x00, 0x03, 0x81, 0x00, 0x0E, 0x71, 0x00, 0x38, 0x19, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x44, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7743, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x48, 0x00, 0x24, 0x84, 0x00, 0x25, 0xFE, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x86, 0x00, 0x25, 0x42, 0x00, 0x3C, 0x7C, 0x00, 0x24, 0x84, 0x00, 0x24, 0x88, 0x00, 0x25, 0x50, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x50, 0x00, 0x00, 0x8C, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7745, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x79, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7746, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x79, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4F, 0xFF, 0x00, 0x78, 0x90, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x49, 0x90, 0x00, 0x79, 0x11, 0x00, 0x03, 0x13, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7747, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x78, 0x88, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x22, 0x00, 0x48, 0x22, 0x00, 0x7B, 0xFE, 0x00, 0x4A, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x78, 0x61, 0x00, 0x48, 0x61, 0x00, 0x48, 0xA3, 0x00, 0x49, 0xA2, 0x00, 0x7B, 0x2E, 0x00, 0x06, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x774A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x774D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x28, 0x00, 0x24, 0x28, 0x80, 0x3C, 0x48, 0x80, 0x24, 0x8F, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x774E, { 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x78, 0x6C, 0x00, 0x48, 0x38, 0x00, 0x48, 0x6C, 0x00, 0x49, 0xC6, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x48, 0x90, 0x00, 0x79, 0xFE, 0x00, 0x4A, 0x92, 0x00, 0x48, 0x92, 0x00, 0x48, 0x92, 0x00, 0x78, 0x92, 0x00, 0x00, 0x96, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x774F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x7D, 0x00, 0x25, 0x11, 0x00, 0x25, 0x39, 0x00, 0x25, 0x39, 0x00, 0x3D, 0x55, 0x00, 0x25, 0x55, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7750, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x24, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x3D, 0x24, 0x00, 0x24, 0xA8, 0x00, 0x24, 0x32, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x60, 0x00, 0x24, 0x70, 0x00, 0x24, 0xA8, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x27, 0x00, 0x02, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7751, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0x07, 0x00, 0x3E, 0x12, 0x00, 0x24, 0xF8, 0x00, 0x24, 0x00, 0x00, 0x3D, 0x24, 0x00, 0x25, 0x24, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA8, 0x00, 0x3C, 0xA8, 0x00, 0x24, 0x12, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7752, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x79, 0x22, 0x00, 0x49, 0x26, 0x00, 0x4B, 0x74, 0x00, 0x4A, 0x50, 0x00, 0x78, 0xD8, 0x00, 0x49, 0x8C, 0x00, 0x4B, 0x07, 0x00, 0x48, 0x20, 0x00, 0x79, 0x22, 0x00, 0x49, 0x26, 0x00, 0x4B, 0x74, 0x00, 0x4A, 0x50, 0x00, 0x78, 0xD8, 0x00, 0x01, 0x8C, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7756, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x78, 0x88, 0x00, 0x49, 0x88, 0x00, 0x4B, 0x0F, 0x00, 0x48, 0x40, 0x00, 0x78, 0x7C, 0x00, 0x48, 0xC4, 0x00, 0x49, 0x8C, 0x00, 0x4B, 0x58, 0x00, 0x78, 0x70, 0x00, 0x00, 0xDC, 0x00, 0x07, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7757, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x79, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x80, 0x00, 0x79, 0xFF, 0x00, 0x4E, 0x49, 0x00, 0x48, 0x89, 0x00, 0x4B, 0x11, 0x00, 0x78, 0x23, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x775A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x00, 0x00, 0x4A, 0x10, 0x00, 0x7A, 0xFE, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x4B, 0xFF, 0x00, 0x7A, 0x00, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0xFE, 0x00, 0x4A, 0x10, 0x00, 0x7A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x775B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x3C, 0x41, 0x00, 0x24, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x775C, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x3C, 0x00, 0x4B, 0xE4, 0x00, 0x48, 0xA6, 0x00, 0x49, 0x12, 0x00, 0x79, 0xFE, 0x00, 0x48, 0x22, 0x00, 0x48, 0x22, 0x00, 0x4B, 0xFF, 0x00, 0x78, 0x22, 0x00, 0x48, 0x22, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x775E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x49, 0x24, 0x00, 0x79, 0x24, 0x00, 0x49, 0x24, 0x00, 0x4B, 0xAE, 0x00, 0x4A, 0xAA, 0x00, 0x7E, 0x73, 0x00, 0x48, 0x70, 0x00, 0x48, 0xA8, 0x00, 0x49, 0xAC, 0x00, 0x7B, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x775F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x48, 0x88, 0x00, 0x78, 0x88, 0x00, 0x49, 0xDC, 0x00, 0x4B, 0x56, 0x00, 0x48, 0x00, 0x00, 0x78, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7760, { 0x00, 0x00, 0x00, 0x01, 0x24, 0x00, 0x7B, 0x26, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x50, 0x00, 0x78, 0x50, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x88, 0x00, 0x49, 0x04, 0x00, 0x7B, 0xFE, 0x00, 0x4F, 0x0B, 0x00, 0x49, 0x08, 0x00, 0x49, 0x38, 0x00, 0x79, 0x02, 0x00, 0x01, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7761, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x39, 0xF0, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x38, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x92, 0x00, 0x38, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x38, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7762, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x78, 0x66, 0x00, 0x48, 0x44, 0x00, 0x48, 0xFF, 0x00, 0x49, 0x88, 0x00, 0x7A, 0x88, 0x00, 0x48, 0x88, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x88, 0x00, 0x78, 0x88, 0x00, 0x48, 0x88, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x88, 0x00, 0x78, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7763, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xBF, 0x80, 0x02, 0x11, 0x00, 0x3F, 0xEA, 0x00, 0x02, 0x0A, 0x00, 0x12, 0x84, 0x00, 0x22, 0x4A, 0x00, 0x0E, 0x11, 0x80, 0x00, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7764, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFE, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x7B, 0xFE, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xFE, 0x00, 0x78, 0x00, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x78, 0x88, 0x00, 0x01, 0x88, 0x00, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7765, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x40, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x7B, 0xFE, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xFE, 0x00, 0x78, 0x50, 0x00, 0x48, 0x90, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7766, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x48, 0x00, 0x24, 0x88, 0x80, 0x25, 0x0F, 0x80, 0x3E, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7767, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x79, 0xF8, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0xC5, 0x00, 0x4B, 0x03, 0x00, 0x79, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7768, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x7B, 0x9E, 0x00, 0x4A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0xDE, 0x00, 0x7A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x90, 0x00, 0x78, 0x90, 0x00, 0x48, 0x90, 0x00, 0x48, 0x90, 0x00, 0x49, 0x90, 0x00, 0x79, 0x11, 0x00, 0x03, 0x13, 0x00, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x776A, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x776B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x11, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x11, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x9F, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x25, 0x50, 0x00, 0x3D, 0x3F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x776C, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x3C, 0x00, 0x4B, 0xE0, 0x00, 0x48, 0x44, 0x00, 0x79, 0x66, 0x00, 0x4B, 0x22, 0x00, 0x4A, 0x00, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0xA8, 0x00, 0x48, 0xA8, 0x00, 0x79, 0xAC, 0x00, 0x03, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7770, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x78, 0x84, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x84, 0x00, 0x48, 0x84, 0x00, 0x78, 0x40, 0x00, 0x48, 0x40, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x80, 0x00, 0x78, 0x80, 0x00, 0x49, 0xFE, 0x00, 0x4A, 0x82, 0x00, 0x48, 0x82, 0x00, 0x78, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7772, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x79, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x49, 0x20, 0x00, 0x7B, 0xFE, 0x00, 0x4E, 0x20, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x78, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7773, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x48, 0x92, 0x00, 0x7B, 0x7D, 0x80, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x78, 0x00, 0x00, 0x48, 0x10, 0x00, 0x48, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x78, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7774, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x01, 0x00, 0x4A, 0x21, 0x00, 0x79, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x22, 0x00, 0x79, 0xFE, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0xFE, 0x00, 0x78, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7779, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x80, 0x3C, 0xFF, 0x80, 0x24, 0x11, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x0C, 0x00, 0x24, 0x12, 0x00, 0x24, 0x60, 0x00, 0x3D, 0xFF, 0x00, 0x26, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x3C, 0x41, 0x00, 0x24, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x777A, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x79, 0x7E, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x4A, 0xFF, 0x80, 0x7A, 0x00, 0x00, 0x4E, 0x40, 0x00, 0x4A, 0x7F, 0x00, 0x4A, 0x88, 0x00, 0x7A, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x4A, 0x14, 0x00, 0x4A, 0x36, 0x00, 0x7A, 0x22, 0x00, 0x02, 0x63, 0x00, 0x02, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x777D, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x79, 0xFA, 0x00, 0x4A, 0x28, 0x80, 0x49, 0x6D, 0x00, 0x48, 0xC6, 0x00, 0x79, 0x83, 0x00, 0x4B, 0x01, 0x80, 0x48, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x28, 0x00, 0x48, 0x28, 0x00, 0x78, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x777E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x777F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x03, 0xFC, 0x00, 0x04, 0x42, 0x00, 0x18, 0xA1, 0x80, 0x03, 0x18, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x05, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7780, { 0x00, 0x00, 0x00, 0x3F, 0x20, 0x00, 0x02, 0x3F, 0x80, 0x14, 0x62, 0x00, 0x7F, 0x92, 0x00, 0x0D, 0x14, 0x00, 0x14, 0x0C, 0x00, 0x64, 0x32, 0x00, 0x0C, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7784, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x78, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x48, 0x44, 0x00, 0x78, 0x00, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x79, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x79, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7785, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0xE8, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x89, 0x00, 0x24, 0xAB, 0x00, 0x3F, 0xDC, 0x00, 0x24, 0x88, 0x00, 0x25, 0xC8, 0x00, 0x25, 0xA8, 0x00, 0x3E, 0x88, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x3C, 0xA3, 0x00, 0x24, 0xC2, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x778B, { 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x3C, 0xF8, 0x00, 0x24, 0x80, 0x80, 0x24, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x3C, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xBF, 0x00, 0x3C, 0xA1, 0x00, 0x24, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x3C, 0xBF, 0x00, 0x24, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x778C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x40, 0x00, 0x48, 0xC2, 0x00, 0x48, 0x8F, 0x00, 0x79, 0xF9, 0x80, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x7A, 0x49, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x778D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0xD0, 0x00, 0x49, 0x97, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x79, 0xD7, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xD7, 0x00, 0x78, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x82, 0x00, 0x48, 0x4C, 0x00, 0x78, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x778E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x02, 0x00, 0x4A, 0x22, 0x00, 0x79, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x79, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7791, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7792, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x3C, 0x8A, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x48, 0x00, 0x24, 0x4A, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x25, 0xB6, 0x00, 0x25, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x25, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7794, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x7B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x79, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7795, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x84, 0x00, 0x48, 0x48, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x79, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x7B, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7796, { 0x00, 0x00, 0x00, 0x7F, 0xBC, 0x00, 0x48, 0x24, 0x00, 0x4F, 0x27, 0x00, 0x54, 0x40, 0x00, 0x7F, 0xBE, 0x00, 0x4A, 0x14, 0x00, 0x51, 0x08, 0x00, 0x7F, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x779A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x80, 0x4A, 0xFE, 0x80, 0x78, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x79, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x49, 0x11, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x82, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x779E, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x44, 0x00, 0x28, 0x7C, 0x00, 0x38, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0xD6, 0x80, 0x3A, 0x52, 0x80, 0x2A, 0x52, 0x80, 0x2A, 0xB5, 0x80, 0x2A, 0x10, 0x80, 0x3A, 0x10, 0x80, 0x2A, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x779F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x49, 0x00, 0x7A, 0x49, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x78, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x49, 0x24, 0x00, 0x7B, 0x26, 0x00, 0x06, 0x23, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77A0, { 0x00, 0x00, 0x00, 0x02, 0x22, 0x00, 0x7B, 0x26, 0x00, 0x49, 0x24, 0x00, 0x4B, 0xFE, 0x00, 0x7A, 0x02, 0x00, 0x4A, 0xFA, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x78, 0xF8, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFC, 0x00, 0x78, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77A2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7E, 0x1F, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77A5, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x24, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xA1, 0x00, 0x24, 0xD2, 0x00, 0x2E, 0x8C, 0x00, 0x35, 0x8C, 0x00, 0x24, 0x92, 0x00, 0x25, 0xA1, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77A7, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x78, 0x48, 0x00, 0x48, 0xFF, 0x80, 0x48, 0x88, 0x00, 0x49, 0x88, 0x00, 0x7A, 0xFF, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x48, 0xFF, 0x00, 0x78, 0x88, 0x00, 0x48, 0x88, 0x00, 0x48, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x78, 0xA9, 0x00, 0x01, 0xAD, 0x80, 0x01, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77A9, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFF, 0x00, 0x3A, 0x02, 0x00, 0x2B, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x3A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x3A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3B, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x09, 0x15, 0x00, 0x11, 0x7D, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77AA, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0xE8, 0x00, 0x4A, 0x31, 0x00, 0x49, 0x4A, 0x00, 0x48, 0x84, 0x00, 0x7B, 0x7B, 0x00, 0x48, 0x00, 0x00, 0x48, 0xFC, 0x00, 0x48, 0x84, 0x00, 0x78, 0x84, 0x00, 0x48, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x48, 0x84, 0x00, 0x78, 0xCC, 0x00, 0x00, 0x48, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77AC, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x38, 0xF0, 0x00, 0x28, 0x01, 0x00, 0x28, 0x89, 0x00, 0x28, 0x49, 0x00, 0x39, 0xFF, 0x80, 0x29, 0x00, 0x80, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x39, 0xFF, 0x80, 0x29, 0x32, 0x00, 0x2A, 0xD2, 0x00, 0x2C, 0x7F, 0x80, 0x38, 0x82, 0x00, 0x29, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77AD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x29, 0x29, 0x00, 0x28, 0xC6, 0x00, 0x38, 0x82, 0x00, 0x2B, 0x01, 0x80, 0x28, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x38, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x38, 0x92, 0x00, 0x29, 0x11, 0x00, 0x02, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77AE, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x78, 0x84, 0x00, 0x4F, 0xF4, 0x00, 0x49, 0x07, 0x80, 0x49, 0x4D, 0x00, 0x7A, 0x69, 0x00, 0x4B, 0xA5, 0x00, 0x48, 0x05, 0x00, 0x4B, 0xE5, 0x00, 0x7A, 0x27, 0x00, 0x4B, 0xE2, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xE7, 0x00, 0x7A, 0x25, 0x00, 0x02, 0x25, 0x00, 0x02, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x7D, 0x00, 0x25, 0x45, 0x00, 0x3D, 0x7D, 0x00, 0x25, 0x45, 0x00, 0x25, 0x7D, 0x00, 0x25, 0x45, 0x00, 0x3D, 0x4D, 0x00, 0x01, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77B0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0xE4, 0x00, 0x28, 0x88, 0x00, 0x28, 0x8F, 0x00, 0x2F, 0xFA, 0x00, 0x2A, 0x4A, 0x00, 0x3A, 0x52, 0x00, 0x2B, 0xD2, 0x00, 0x2A, 0x6A, 0x00, 0x2E, 0x4A, 0x00, 0x3B, 0xCC, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2B, 0xCA, 0x00, 0x3E, 0x49, 0x00, 0x28, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77B1, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x78, 0x44, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x78, 0x92, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x92, 0x00, 0x78, 0x92, 0x00, 0x49, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77B3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x24, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77B5, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x78, 0x92, 0x00, 0x48, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x54, 0x00, 0x78, 0xD6, 0x00, 0x4B, 0x93, 0x80, 0x48, 0x90, 0x00, 0x48, 0xE2, 0x00, 0x79, 0xAF, 0x80, 0x4B, 0x2A, 0x00, 0x48, 0xEA, 0x00, 0x48, 0x5F, 0x80, 0x78, 0xC2, 0x00, 0x01, 0x82, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77B6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x24, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x79, 0xFC, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77B9, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x7B, 0xFC, 0x00, 0x49, 0x21, 0x00, 0x48, 0x92, 0x00, 0x4B, 0xFF, 0x80, 0x7A, 0x10, 0x80, 0x49, 0x49, 0x00, 0x49, 0x42, 0x80, 0x4A, 0x3E, 0x00, 0x78, 0x40, 0x00, 0x48, 0xFE, 0x00, 0x49, 0x82, 0x00, 0x4B, 0x4C, 0x00, 0x78, 0x38, 0x00, 0x00, 0xEE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77BB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x3E, 0x00, 0x24, 0x44, 0x00, 0x24, 0xFF, 0x80, 0x25, 0x94, 0x80, 0x3E, 0xA7, 0x80, 0x24, 0xC0, 0x00, 0x24, 0x9E, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x3C, 0x9E, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x3C, 0xA1, 0x00, 0x25, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77BC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x44, 0x00, 0x24, 0x83, 0x00, 0x25, 0x00, 0x80, 0x26, 0xFE, 0x00, 0x3C, 0x00, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x3D, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x25, 0x45, 0x00, 0x3E, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77BD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x04, 0x00, 0x7F, 0xBF, 0x00, 0x21, 0x11, 0x00, 0x3F, 0x1B, 0x00, 0x12, 0x0E, 0x00, 0x0F, 0x9B, 0x00, 0x78, 0x31, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77BE, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2E, 0x11, 0x00, 0x78, 0x9F, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77BF, { 0x00, 0x00, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77C3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x20, 0x80, 0x4A, 0x50, 0x80, 0x79, 0x45, 0x00, 0x4A, 0x7C, 0x80, 0x48, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x79, 0x49, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77C7, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x4B, 0xFF, 0x00, 0x4A, 0x01, 0x00, 0x7A, 0xFD, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x78, 0xA3, 0x00, 0x4B, 0x56, 0x00, 0x48, 0x90, 0x00, 0x4B, 0x38, 0x00, 0x78, 0xD4, 0x00, 0x03, 0x13, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77C9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x80, 0x49, 0x00, 0x80, 0x48, 0xFF, 0x00, 0x48, 0x52, 0x00, 0x79, 0x94, 0x00, 0x48, 0x18, 0x00, 0x48, 0xFF, 0x00, 0x4B, 0x81, 0x00, 0x78, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x48, 0x81, 0x00, 0x78, 0xFF, 0x00, 0x00, 0x42, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77CD, { 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x68, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77D1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x1E, 0x00, 0x48, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x10, 0x80, 0x79, 0x7E, 0x00, 0x49, 0x10, 0x80, 0x49, 0x7F, 0x80, 0x49, 0x49, 0x00, 0x79, 0x7F, 0x00, 0x49, 0x49, 0x00, 0x49, 0x7F, 0x00, 0x4B, 0x00, 0x00, 0x7A, 0xFF, 0x00, 0x06, 0xA9, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77D2, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xC7, 0x80, 0x48, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x29, 0x00, 0x79, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x00, 0x80, 0x7A, 0xFE, 0x80, 0x48, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x78, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77D5, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x68, 0x05, 0x00, 0x11, 0xE2, 0x00, 0x24, 0x04, 0x80, 0x7D, 0xEF, 0x80, 0x11, 0x22, 0x00, 0x55, 0xEB, 0x00, 0x54, 0x0A, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77D7, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0B, 0xFC, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0xFC, 0x00, 0x0A, 0x04, 0x00, 0x0B, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xDF, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77D9, { 0x00, 0x00, 0x00, 0x07, 0xCF, 0x80, 0x74, 0x48, 0x80, 0x57, 0xCF, 0x80, 0x54, 0x48, 0x80, 0x57, 0xCF, 0x80, 0x74, 0x00, 0x80, 0x55, 0xC8, 0x80, 0x54, 0x8F, 0x80, 0x57, 0xFA, 0x80, 0x74, 0x0A, 0x80, 0x57, 0xEE, 0x80, 0x55, 0x44, 0x80, 0x55, 0xCE, 0x80, 0x75, 0x4B, 0x80, 0x07, 0xD8, 0x80, 0x04, 0x51, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77DA, { 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x74, 0x01, 0x00, 0x57, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x75, 0xD7, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x75, 0xFF, 0x80, 0x54, 0xA0, 0x80, 0x57, 0xFE, 0x80, 0x55, 0x22, 0x80, 0x75, 0xFE, 0x80, 0x04, 0x29, 0x80, 0x08, 0x7D, 0x00, 0x03, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC1, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x40, 0x00, 0x30, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77DC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x14, 0x00, 0x02, 0x12, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xC0, 0x80, 0x04, 0x3E, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x7F, 0x00, 0x14, 0x01, 0x00, 0x14, 0x02, 0x00, 0x24, 0x02, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77DE, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xC2, 0x00, 0x06, 0x44, 0x00, 0x38, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x22, 0x39, 0x00, 0x24, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x15, 0x00, 0x23, 0xF3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77DF, { 0x00, 0x00, 0x00, 0x3F, 0x88, 0x00, 0x01, 0x2A, 0x00, 0x0A, 0x6B, 0x00, 0x04, 0x49, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x00, 0x0D, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x44, 0x41, 0x00, 0x04, 0x41, 0x00, 0x14, 0x41, 0x00, 0x0C, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77E0, { 0x00, 0x00, 0x00, 0x3F, 0x92, 0x00, 0x01, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x04, 0x7F, 0x80, 0x02, 0x12, 0x00, 0x7F, 0x92, 0x00, 0x0D, 0x12, 0x00, 0x0E, 0x7F, 0x80, 0x14, 0x00, 0x00, 0x14, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x24, 0x21, 0x00, 0x44, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x14, 0x21, 0x00, 0x0C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77E2, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77E3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x02, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0xC1, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77E4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7C, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x90, 0x00, 0x3D, 0x10, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x04, 0x28, 0x00, 0x04, 0x6C, 0x00, 0x04, 0x44, 0x00, 0x0C, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x3B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77E5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x1F, 0xD1, 0x00, 0x12, 0x11, 0x00, 0x22, 0x11, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x05, 0x11, 0x00, 0x04, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x5F, 0x00, 0x10, 0x51, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77E6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x10, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x11, 0xFC, 0x00, 0x13, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x70, 0x00, 0x30, 0x50, 0x00, 0x20, 0xD8, 0x00, 0x61, 0x8C, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77E7, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x28, 0x11, 0x00, 0x68, 0xF1, 0x00, 0x08, 0x81, 0x00, 0x7F, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xF1, 0x00, 0x1C, 0x11, 0x00, 0x14, 0x11, 0x00, 0x16, 0x11, 0x00, 0x32, 0x31, 0x00, 0x60, 0x21, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77E9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x14, 0x20, 0x00, 0x24, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x06, 0x20, 0x00, 0x05, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x10, 0x3F, 0x80, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77EA, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x3E, 0x10, 0x00, 0x68, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x52, 0x00, 0x08, 0x4A, 0x00, 0x7F, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x1C, 0x52, 0x00, 0x14, 0x4A, 0x00, 0x36, 0x4A, 0x00, 0x22, 0xCA, 0x00, 0x60, 0x82, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77EB, { 0x00, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x11, 0xF0, 0x00, 0x14, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x28, 0x22, 0x00, 0x4B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x8F, 0x00, 0x0A, 0x8A, 0x00, 0x08, 0x88, 0x00, 0x14, 0x88, 0x00, 0x12, 0x88, 0x00, 0x20, 0x88, 0x00, 0x41, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77EC, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x92, 0x00, 0x68, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0xD7, 0x00, 0x7F, 0x55, 0x00, 0x0A, 0x38, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x16, 0x10, 0x00, 0x32, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77ED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x3F, 0xC1, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x14, 0x00, 0x11, 0x14, 0x00, 0x10, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77EE, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x10, 0x78, 0x00, 0x1F, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0xC9, 0x80, 0x3F, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0C, 0x22, 0x00, 0x12, 0x64, 0x00, 0x12, 0x98, 0x00, 0x10, 0x36, 0x00, 0x21, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77EF, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x09, 0x45, 0x80, 0x3F, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x13, 0x7D, 0x00, 0x13, 0x45, 0x00, 0x11, 0x7D, 0x00, 0x21, 0x01, 0x00, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77F0, { 0x00, 0x00, 0x00, 0x10, 0x2E, 0x00, 0x10, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x68, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0xAA, 0x80, 0x7F, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x16, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x60, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77F1, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x10, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x68, 0x44, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x48, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x1C, 0x7F, 0x80, 0x36, 0x00, 0x00, 0x62, 0x7F, 0x00, 0x00, 0x26, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x77F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x34, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77F6, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x32, 0x44, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x85, 0x00, 0x1E, 0x85, 0x00, 0x11, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77FB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x60, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x12, 0x03, 0x00, 0x32, 0x06, 0x00, 0x52, 0x0C, 0x00, 0x12, 0x18, 0x00, 0x12, 0x30, 0x00, 0x12, 0x60, 0x00, 0x1E, 0x40, 0x80, 0x00, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x32, 0x08, 0x00, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77FD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x10, 0x41, 0x00, 0x10, 0x42, 0x00, 0x3E, 0xA2, 0x00, 0x53, 0x12, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77FE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7E, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x14, 0xC8, 0x00, 0x3E, 0xA8, 0x00, 0x54, 0xA8, 0x00, 0x14, 0x88, 0x00, 0x14, 0x88, 0x00, 0x14, 0x88, 0x00, 0x14, 0x88, 0x00, 0x1D, 0x09, 0x00, 0x15, 0x09, 0x00, 0x02, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x77FF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x10, 0x80, 0x00, 0x12, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x32, 0x80, 0x00, 0x52, 0x80, 0x00, 0x12, 0x80, 0x00, 0x12, 0x80, 0x00, 0x1E, 0x80, 0x00, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7800, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0x42, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0x2A, 0x00, 0x52, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x52, 0x00, 0x12, 0x92, 0x00, 0x1E, 0xA2, 0x00, 0x11, 0x2A, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7801, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x12, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x32, 0x8A, 0x00, 0x52, 0xFF, 0x00, 0x12, 0x02, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFA, 0x00, 0x12, 0x02, 0x00, 0x1E, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7802, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x25, 0x00, 0x08, 0x25, 0x00, 0x08, 0x24, 0x80, 0x10, 0x44, 0x80, 0x1F, 0x44, 0x00, 0x29, 0x04, 0x80, 0x29, 0x04, 0x80, 0x09, 0x1D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x02, 0x00, 0x09, 0x04, 0x00, 0x0F, 0x08, 0x00, 0x09, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7805, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x80, 0x13, 0xD1, 0x80, 0x10, 0x5B, 0x00, 0x3C, 0x5A, 0x00, 0x24, 0x54, 0x00, 0x64, 0xD4, 0x00, 0x24, 0x96, 0x00, 0x24, 0x92, 0x00, 0x25, 0x93, 0x00, 0x25, 0x11, 0x80, 0x3F, 0x10, 0x80, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7806, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x14, 0x00, 0x12, 0x36, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7809, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x1C, 0x02, 0x00, 0x74, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x780C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7E, 0x9F, 0x80, 0x10, 0x84, 0x80, 0x10, 0x84, 0x80, 0x10, 0xE4, 0x80, 0x13, 0x84, 0x80, 0x3C, 0x84, 0x80, 0x24, 0x84, 0x80, 0x64, 0x84, 0x80, 0x24, 0x84, 0x80, 0x24, 0xAC, 0x80, 0x24, 0xA8, 0x80, 0x24, 0x68, 0x80, 0x3C, 0x19, 0x80, 0x00, 0x31, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x780D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x80, 0x10, 0xC0, 0x80, 0x10, 0x91, 0x80, 0x3D, 0x91, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x24, 0x38, 0x00, 0x24, 0x28, 0x00, 0x24, 0x6C, 0x00, 0x24, 0x44, 0x00, 0x3C, 0xC6, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x780E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x11, 0xC7, 0x00, 0x3F, 0x45, 0x80, 0x24, 0x44, 0x00, 0x64, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0xC4, 0x00, 0x3C, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7811, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x7F, 0x02, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFF, 0x80, 0x1E, 0x06, 0x00, 0x12, 0x0E, 0x00, 0x32, 0x0A, 0x00, 0x52, 0x1A, 0x00, 0x12, 0x12, 0x00, 0x12, 0x22, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x82, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7812, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xC4, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x80, 0x08, 0x7D, 0x00, 0x08, 0x46, 0x00, 0x10, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x29, 0x44, 0x00, 0x09, 0x44, 0x00, 0x09, 0x44, 0x00, 0x09, 0x44, 0x80, 0x09, 0x7C, 0x80, 0x0F, 0xC7, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7814, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x18, 0x22, 0x00, 0x10, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x32, 0x22, 0x00, 0x52, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x62, 0x00, 0x1E, 0x42, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7815, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x24, 0x00, 0x10, 0x64, 0x00, 0x10, 0x44, 0x80, 0x3C, 0xC4, 0x80, 0x25, 0x83, 0x80, 0x64, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7816, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x20, 0x00, 0x7F, 0x24, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x10, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x52, 0x40, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x30, 0x00, 0x12, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7817, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x10, 0x50, 0x00, 0x10, 0x90, 0x00, 0x1E, 0x94, 0x00, 0x33, 0xFE, 0x00, 0x52, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7818, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x32, 0x92, 0x00, 0x52, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x12, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x11, 0x00, 0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x781A, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x94, 0x00, 0x10, 0x94, 0x00, 0x12, 0x94, 0x00, 0x3F, 0xA4, 0x00, 0x52, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x12, 0x30, 0x00, 0x12, 0x50, 0x00, 0x1E, 0x51, 0x00, 0x12, 0x91, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x781C, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x7F, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x11, 0x8C, 0x00, 0x11, 0x4C, 0x00, 0x1D, 0x54, 0x00, 0x35, 0x54, 0x00, 0x55, 0x24, 0x00, 0x15, 0x24, 0x00, 0x15, 0x54, 0x00, 0x15, 0x4C, 0x00, 0x1D, 0x8D, 0x00, 0x12, 0x05, 0x00, 0x04, 0x05, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x781D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x52, 0x18, 0x00, 0x12, 0x30, 0x00, 0x12, 0x21, 0x00, 0x12, 0x61, 0x00, 0x1E, 0x4F, 0x80, 0x00, 0xF8, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x781F, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7F, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x20, 0x00, 0x1E, 0x24, 0x00, 0x32, 0x3E, 0x00, 0x52, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x24, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7820, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x42, 0x00, 0x32, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x52, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7821, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7822, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x79, 0x00, 0x08, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x52, 0x49, 0x00, 0x12, 0x79, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7823, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x1E, 0x20, 0x00, 0x12, 0x20, 0x00, 0x32, 0x26, 0x00, 0x52, 0x38, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x1E, 0x20, 0x80, 0x00, 0x30, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7825, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3E, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0x88, 0x00, 0x32, 0x88, 0x00, 0x32, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0xF4, 0x80, 0x13, 0x82, 0x80, 0x1E, 0x01, 0x80, 0x12, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7826, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0x13, 0x80, 0x09, 0xFC, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0xF0, 0x80, 0x1E, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0C, 0x01, 0x00, 0x34, 0x01, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7827, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x0F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x09, 0x41, 0x00, 0x0F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7829, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x7E, 0x4A, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4A, 0x00, 0x11, 0xFE, 0x00, 0x3D, 0x48, 0x00, 0x55, 0x48, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x4D, 0x00, 0x1C, 0x4A, 0x00, 0x00, 0x88, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x782C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x81, 0x00, 0x3E, 0x41, 0x00, 0x32, 0x42, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x04, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x782D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x0E, 0x00, 0x08, 0x70, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x32, 0x02, 0x00, 0x52, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0x10, 0x00, 0x12, 0xA0, 0x00, 0x1E, 0xE0, 0x00, 0x00, 0x98, 0x00, 0x00, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x782E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xC1, 0x00, 0x09, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x0C, 0x0A, 0x00, 0x0A, 0x11, 0x00, 0x11, 0x20, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x34, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7830, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x52, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7832, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x81, 0x00, 0x09, 0x01, 0x00, 0x08, 0x7D, 0x00, 0x1F, 0x45, 0x00, 0x19, 0x45, 0x00, 0x29, 0x7D, 0x00, 0x09, 0x41, 0x00, 0x09, 0x46, 0x00, 0x09, 0x40, 0x80, 0x09, 0x40, 0x80, 0x0F, 0x7F, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7834, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x3E, 0xFF, 0x00, 0x32, 0xA1, 0x00, 0x32, 0x92, 0x00, 0x12, 0x94, 0x00, 0x12, 0x88, 0x00, 0x12, 0x8C, 0x00, 0x1E, 0x92, 0x00, 0x12, 0xA1, 0x00, 0x11, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7835, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x32, 0x2A, 0x00, 0x52, 0x49, 0x00, 0x12, 0x88, 0x80, 0x12, 0x3E, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7837, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x52, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7838, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0xBE, 0x00, 0x12, 0xAA, 0x00, 0x3F, 0xAA, 0x00, 0x52, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAE, 0x00, 0x1E, 0x88, 0x00, 0x12, 0x8A, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7839, { 0x00, 0x00, 0x00, 0x02, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x82, 0x00, 0x32, 0x82, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x28, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x44, 0x00, 0x10, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x783A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x90, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x9F, 0x00, 0x64, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x25, 0x91, 0x00, 0x3D, 0x31, 0x00, 0x03, 0x21, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x783B, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x14, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x80, 0x00, 0x02, 0x98, 0x00, 0x04, 0xE2, 0x00, 0x1B, 0x82, 0x00, 0x60, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x0C, 0x08, 0x00, 0x14, 0x08, 0x00, 0x67, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x783C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x10, 0x44, 0x00, 0x12, 0x82, 0x00, 0x1F, 0x01, 0x00, 0x32, 0x04, 0x00, 0x52, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x783E, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x7E, 0xF0, 0x00, 0x08, 0x80, 0x00, 0x08, 0x90, 0x00, 0x10, 0x90, 0x00, 0x12, 0x92, 0x00, 0x3F, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x54, 0x00, 0x12, 0x92, 0x00, 0x1E, 0x91, 0x00, 0x11, 0x11, 0x00, 0x02, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x783F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x3C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x64, 0x88, 0x00, 0x24, 0x98, 0x00, 0x24, 0x90, 0x00, 0x24, 0x92, 0x00, 0x24, 0xB3, 0x00, 0x3D, 0xA1, 0x00, 0x01, 0x2F, 0x80, 0x03, 0x78, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7840, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x08, 0x49, 0x00, 0x09, 0x49, 0x00, 0x1F, 0xFF, 0x00, 0x29, 0x08, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x0F, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7843, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x1C, 0x00, 0x52, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7844, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x89, 0x00, 0x08, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x1E, 0x1C, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x14, 0x00, 0x52, 0x14, 0x00, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x12, 0x24, 0x00, 0x1E, 0x24, 0x80, 0x00, 0x44, 0x80, 0x00, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7845, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x19, 0x08, 0x00, 0x29, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7847, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x1E, 0x82, 0x80, 0x12, 0xA2, 0x80, 0x32, 0x94, 0x80, 0x52, 0x88, 0x80, 0x12, 0x94, 0x80, 0x12, 0xA6, 0x80, 0x12, 0xC2, 0x80, 0x1E, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7848, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x00, 0x00, 0x52, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x784C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x24, 0x00, 0x1E, 0x18, 0x00, 0x12, 0x18, 0x00, 0x32, 0x24, 0x00, 0x52, 0x42, 0x00, 0x12, 0x81, 0x00, 0x13, 0x7E, 0x80, 0x12, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x784E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7F, 0xF8, 0x80, 0x08, 0x90, 0x80, 0x08, 0x92, 0x80, 0x08, 0x92, 0x80, 0x08, 0x92, 0x80, 0x1F, 0xFE, 0x80, 0x12, 0x92, 0x80, 0x32, 0x92, 0x80, 0x52, 0x92, 0x80, 0x12, 0x92, 0x80, 0x12, 0x90, 0x80, 0x12, 0x90, 0x80, 0x1E, 0x90, 0x80, 0x01, 0x92, 0x80, 0x03, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x784F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x1F, 0x9B, 0x80, 0x19, 0x76, 0x00, 0x29, 0x12, 0x00, 0x29, 0x12, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0F, 0x42, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7850, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x11, 0x7A, 0x00, 0x11, 0x02, 0x00, 0x1D, 0x02, 0x00, 0x35, 0x7A, 0x00, 0x55, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x15, 0x7A, 0x00, 0x15, 0x4A, 0x00, 0x1D, 0x02, 0x00, 0x11, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7852, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x1E, 0x94, 0x80, 0x12, 0x94, 0x80, 0x32, 0x94, 0x80, 0x52, 0xA7, 0x80, 0x12, 0xA0, 0x80, 0x12, 0xC0, 0x80, 0x12, 0x80, 0x80, 0x1E, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7855, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x10, 0xFF, 0x00, 0x12, 0x82, 0x00, 0x1F, 0x92, 0x00, 0x32, 0x92, 0x00, 0x52, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x2C, 0x00, 0x00, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7856, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x11, 0x24, 0x00, 0x10, 0xA4, 0x00, 0x1C, 0xA8, 0x00, 0x34, 0x22, 0x00, 0x57, 0xFF, 0x00, 0x14, 0x50, 0x00, 0x14, 0x50, 0x00, 0x14, 0x88, 0x00, 0x14, 0x88, 0x00, 0x1D, 0x04, 0x00, 0x12, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7857, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x3E, 0x00, 0x09, 0xE0, 0x00, 0x10, 0x14, 0x00, 0x10, 0x09, 0x00, 0x1E, 0x35, 0x00, 0x32, 0xC3, 0x00, 0x52, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x89, 0x00, 0x10, 0x89, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x785C, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x08, 0x24, 0x80, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x92, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x32, 0x24, 0x80, 0x52, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x785D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x785E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x88, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7860, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x52, 0x50, 0x00, 0x12, 0x51, 0x80, 0x12, 0x4E, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x46, 0x00, 0x00, 0x73, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7861, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x90, 0x80, 0x1E, 0x10, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x10, 0x00, 0x52, 0x34, 0x00, 0x12, 0x24, 0x00, 0x12, 0x64, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x89, 0x80, 0x00, 0x9F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7863, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x7D, 0x00, 0x08, 0x12, 0x00, 0x08, 0x14, 0x00, 0x09, 0xFF, 0x80, 0x1E, 0x10, 0x00, 0x12, 0x60, 0x00, 0x33, 0xBE, 0x00, 0x52, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7864, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x29, 0x00, 0x1E, 0x29, 0x00, 0x12, 0x29, 0x00, 0x32, 0x5A, 0x80, 0x52, 0x9C, 0x80, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7868, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x49, 0x00, 0x52, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x786A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x2A, 0x00, 0x08, 0x69, 0x00, 0x09, 0xC9, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFF, 0x80, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x32, 0x59, 0x00, 0x52, 0x69, 0x00, 0x13, 0xC6, 0x00, 0x12, 0x44, 0x00, 0x12, 0x4A, 0x00, 0x1E, 0x52, 0x80, 0x00, 0x41, 0x80, 0x01, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x786B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x42, 0x00, 0x10, 0x9F, 0x00, 0x3F, 0xE0, 0x80, 0x32, 0x00, 0x00, 0x32, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x11, 0x12, 0x80, 0x12, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x786C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x28, 0x00, 0x09, 0x10, 0x00, 0x09, 0x28, 0x00, 0x0F, 0x46, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x786D, { 0x00, 0x00, 0x00, 0x02, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x12, 0x00, 0x33, 0xFF, 0x00, 0x52, 0x80, 0x00, 0x12, 0x80, 0x00, 0x12, 0x80, 0x00, 0x12, 0x80, 0x00, 0x12, 0x80, 0x00, 0x1E, 0x84, 0x00, 0x10, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x786E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x88, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x49, 0x00, 0x52, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x786F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x19, 0x21, 0x00, 0x29, 0x21, 0x00, 0x29, 0x3F, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x80, 0x0F, 0x43, 0x80, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7872, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC9, 0x80, 0x18, 0x1C, 0x00, 0x10, 0x14, 0x00, 0x1E, 0x36, 0x00, 0x32, 0x63, 0x00, 0x32, 0xC1, 0x80, 0x52, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7874, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x28, 0x00, 0x3C, 0x68, 0x00, 0x24, 0x49, 0x80, 0x64, 0xCB, 0x00, 0x25, 0xCE, 0x00, 0x27, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3C, 0x48, 0x80, 0x00, 0x49, 0x80, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7877, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x11, 0x07, 0x00, 0x16, 0xFA, 0x00, 0x3C, 0x00, 0x00, 0x54, 0x20, 0x00, 0x15, 0x24, 0x00, 0x14, 0xA6, 0x00, 0x14, 0xA4, 0x00, 0x14, 0xA8, 0x00, 0x1C, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x787A, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x21, 0x00, 0x08, 0x51, 0x00, 0x08, 0x9A, 0x00, 0x1E, 0x6C, 0x00, 0x12, 0x48, 0x00, 0x32, 0xBC, 0x00, 0x52, 0x2C, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x09, 0x00, 0x1E, 0x10, 0x80, 0x00, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x787C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0xD6, 0x80, 0x10, 0xB5, 0x80, 0x10, 0x94, 0x80, 0x1C, 0xD6, 0x80, 0x34, 0xB5, 0x80, 0x34, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x1D, 0x18, 0x80, 0x15, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x787E, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x7F, 0x3C, 0x00, 0x08, 0x68, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x33, 0xFF, 0x80, 0x52, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7881, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0x81, 0x80, 0x01, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x1A, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7886, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x31, 0xFE, 0x00, 0x09, 0x42, 0x00, 0x1B, 0x66, 0x00, 0x32, 0x3C, 0x00, 0x66, 0xE7, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x1C, 0x02, 0x00, 0x74, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7887, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x32, 0x48, 0x00, 0x12, 0x4F, 0x80, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0xA8, 0x00, 0x1E, 0x9F, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7889, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x1F, 0x92, 0x00, 0x32, 0xFE, 0x00, 0x52, 0x82, 0x00, 0x12, 0xBA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xBA, 0x00, 0x1E, 0x82, 0x00, 0x11, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x788A, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7F, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x80, 0x1E, 0x34, 0x80, 0x12, 0xC3, 0x80, 0x32, 0x24, 0x00, 0x52, 0x22, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x12, 0x14, 0x00, 0x1E, 0x18, 0x80, 0x00, 0x34, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x788C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x3E, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x12, 0x89, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x1E, 0x4A, 0x00, 0x12, 0x89, 0x00, 0x11, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x788D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x29, 0x02, 0x00, 0x29, 0x02, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x09, 0x12, 0x00, 0x0F, 0x02, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x788E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x55, 0x00, 0x10, 0x88, 0x80, 0x1F, 0x00, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x788F, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x52, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7891, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0x7F, 0x00, 0x29, 0x24, 0x00, 0x09, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7893, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x36, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x7F, 0x80, 0x08, 0xC4, 0x00, 0x19, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x44, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7894, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0x05, 0x00, 0x08, 0xF4, 0x80, 0x08, 0x04, 0x80, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x1E, 0x04, 0x00, 0x12, 0x24, 0x00, 0x32, 0x24, 0x00, 0x52, 0x24, 0x00, 0x12, 0x3E, 0x00, 0x12, 0xA2, 0x80, 0x12, 0xA2, 0x80, 0x1E, 0xA3, 0x80, 0x00, 0xB9, 0x80, 0x01, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7895, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x3C, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x02, 0x00, 0x64, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3C, 0xF2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7897, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x1E, 0x99, 0x00, 0x32, 0x99, 0x00, 0x33, 0x69, 0x00, 0x12, 0x2B, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x88, 0x80, 0x1F, 0x0F, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7898, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x7F, 0x14, 0x00, 0x08, 0x14, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x1E, 0x55, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x55, 0x00, 0x52, 0x55, 0x00, 0x12, 0x55, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x1E, 0x21, 0x00, 0x00, 0x40, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x789A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x66, 0x00, 0x10, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x25, 0xFF, 0x80, 0x64, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x789B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x52, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x1E, 0x2C, 0x00, 0x10, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x789C, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x84, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x1C, 0x48, 0x00, 0x34, 0x94, 0x00, 0x55, 0x23, 0x00, 0x16, 0xCA, 0x00, 0x14, 0x10, 0x00, 0x14, 0x64, 0x00, 0x15, 0x88, 0x00, 0x1C, 0x10, 0x00, 0x10, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x789D, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x1E, 0x55, 0x00, 0x12, 0x55, 0x00, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x1E, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x789E, { 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x14, 0x04, 0x00, 0x64, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x789F, { 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x2E, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x3F, 0x00, 0x32, 0x08, 0x00, 0x52, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78A1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1E, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x49, 0x00, 0x52, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x7F, 0x80, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x20, 0x00, 0x1E, 0x40, 0x00, 0x1A, 0x7F, 0x80, 0x2A, 0xC8, 0x80, 0x2B, 0x54, 0x80, 0x0A, 0x62, 0x80, 0x0A, 0x40, 0x80, 0x0A, 0x7F, 0x80, 0x0E, 0x40, 0x80, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78A4, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x22, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x52, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x14, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78A5, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x1D, 0x00, 0x00, 0x35, 0x02, 0x00, 0x55, 0xFF, 0x00, 0x15, 0xAA, 0x00, 0x15, 0xAA, 0x00, 0x16, 0xFE, 0x00, 0x14, 0xAA, 0x00, 0x1C, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78A7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x07, 0xA1, 0x00, 0x3C, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x14, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78A8, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x52, 0x40, 0x00, 0x12, 0x51, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x52, 0x00, 0x00, 0x61, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x1F, 0xA1, 0x00, 0x18, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x0F, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78AA, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x64, 0x42, 0x00, 0x25, 0xFF, 0x80, 0x24, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xC7, 0x80, 0x3C, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78AC, { 0x00, 0x00, 0x00, 0x00, 0xF7, 0x80, 0x7F, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0xF7, 0x80, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1E, 0x80, 0x00, 0x12, 0xF7, 0x80, 0x32, 0x80, 0x80, 0x52, 0x85, 0x80, 0x12, 0x85, 0x00, 0x12, 0xF3, 0x00, 0x12, 0x82, 0x00, 0x1E, 0x87, 0x00, 0x00, 0x84, 0x80, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78AD, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x32, 0x3F, 0x80, 0x52, 0x2A, 0x80, 0x12, 0x4A, 0x80, 0x12, 0x92, 0x80, 0x12, 0x24, 0x80, 0x1E, 0x49, 0x00, 0x00, 0x11, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78AF, { 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x7E, 0x92, 0x00, 0x11, 0x24, 0x00, 0x10, 0x92, 0x00, 0x10, 0x49, 0x00, 0x10, 0x00, 0x00, 0x3C, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x65, 0x01, 0x00, 0x25, 0x45, 0x00, 0x25, 0x29, 0x00, 0x25, 0x11, 0x00, 0x25, 0x29, 0x00, 0x3D, 0x45, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78B0, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x24, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x12, 0xA5, 0x00, 0x32, 0xA5, 0x00, 0x52, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xE7, 0x00, 0x12, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x00, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78B1, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7E, 0x05, 0x00, 0x10, 0x04, 0x80, 0x10, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x3D, 0x74, 0x00, 0x25, 0x04, 0x00, 0x65, 0x74, 0x00, 0x25, 0x54, 0x00, 0x25, 0x55, 0x00, 0x25, 0x76, 0x00, 0x25, 0x06, 0x80, 0x3E, 0x0A, 0x80, 0x02, 0x11, 0x80, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78B2, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x32, 0x88, 0x80, 0x52, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78B3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x1E, 0x80, 0x00, 0x12, 0x88, 0x00, 0x32, 0xC9, 0x00, 0x52, 0xAA, 0x00, 0x12, 0x88, 0x00, 0x12, 0x94, 0x00, 0x12, 0x94, 0x00, 0x1F, 0x22, 0x00, 0x01, 0x41, 0x00, 0x02, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78B4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x70, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x27, 0x00, 0x3E, 0x22, 0x00, 0x55, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x15, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x15, 0xFC, 0x00, 0x1C, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78B5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x0F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x32, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78B9, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x12, 0x02, 0x00, 0x10, 0xFE, 0x00, 0x1E, 0x00, 0x00, 0x32, 0xFE, 0x00, 0x52, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x1E, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78BA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x32, 0xC8, 0x00, 0x33, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x80, 0x1E, 0x40, 0x00, 0x12, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78BB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x32, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x12, 0xBE, 0x80, 0x12, 0xA2, 0x80, 0x12, 0xBE, 0x80, 0x12, 0xA2, 0x80, 0x1E, 0x80, 0x80, 0x12, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x3E, 0xFF, 0x00, 0x32, 0x90, 0x00, 0x12, 0x90, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x84, 0x80, 0x12, 0x12, 0x80, 0x12, 0x48, 0x80, 0x1E, 0xA1, 0x00, 0x12, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78BD, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x24, 0x00, 0x3D, 0x24, 0x00, 0x25, 0xFF, 0x00, 0x65, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x49, 0x00, 0x25, 0x4A, 0x00, 0x3D, 0x4C, 0x00, 0x02, 0x76, 0x00, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78BF, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x7F, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x49, 0x00, 0x3D, 0x88, 0x80, 0x25, 0x7F, 0x00, 0x65, 0x41, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x3D, 0x41, 0x00, 0x02, 0x41, 0x00, 0x04, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78C1, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x44, 0x00, 0x3E, 0x94, 0x80, 0x33, 0x18, 0x80, 0x32, 0xA5, 0x00, 0x12, 0x42, 0x00, 0x12, 0x84, 0x00, 0x13, 0x29, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78C5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x41, 0x00, 0x08, 0x22, 0x00, 0x08, 0x14, 0x00, 0x11, 0xFF, 0x80, 0x1F, 0x10, 0x80, 0x32, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x32, 0x20, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x82, 0x00, 0x13, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x5E, 0x00, 0x10, 0x52, 0x00, 0x10, 0x52, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x65, 0x7E, 0x80, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78C7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x99, 0x00, 0x1E, 0xA5, 0x00, 0x12, 0x81, 0x00, 0x32, 0xFF, 0x00, 0x52, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x77, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78C8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x32, 0xFE, 0x00, 0x52, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x54, 0x80, 0x12, 0x57, 0x80, 0x1E, 0x90, 0x80, 0x00, 0x90, 0x80, 0x01, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78C9, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x26, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x73, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x1E, 0x55, 0x00, 0x12, 0x22, 0x00, 0x32, 0xDD, 0x80, 0x52, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x1C, 0x00, 0x1E, 0x2A, 0x00, 0x00, 0x49, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x0E, 0x02, 0x00, 0x32, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xBF, 0x00, 0x28, 0xD1, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78CB, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x24, 0x00, 0x08, 0x14, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x32, 0x20, 0x00, 0x32, 0x20, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x88, 0x00, 0x1E, 0xFF, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78CC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x40, 0x80, 0x08, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x1E, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x32, 0xA1, 0x00, 0x52, 0xBF, 0x00, 0x12, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x12, 0x80, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78CE, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3F, 0x72, 0x00, 0x08, 0x51, 0x00, 0x08, 0x88, 0x80, 0x10, 0x20, 0x00, 0x10, 0x28, 0x00, 0x20, 0xC8, 0x00, 0x3E, 0x52, 0x00, 0x32, 0x2F, 0x00, 0x13, 0xF0, 0x80, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x46, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78D0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x15, 0x22, 0x80, 0x15, 0x23, 0x80, 0x17, 0x40, 0x00, 0x39, 0xFF, 0x00, 0x15, 0x22, 0x00, 0x25, 0x14, 0x00, 0x23, 0x0C, 0x00, 0x00, 0x93, 0x80, 0x01, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78D1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x64, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x44, 0x00, 0x24, 0x6C, 0x00, 0x3C, 0x28, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78D2, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x64, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78D3, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7D, 0x08, 0x00, 0x11, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x21, 0x00, 0x11, 0xA1, 0x00, 0x3C, 0xBF, 0x00, 0x24, 0x20, 0x00, 0x65, 0xA0, 0x00, 0x24, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x3D, 0xBF, 0x00, 0x01, 0x40, 0x00, 0x03, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78D4, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7C, 0xE2, 0x00, 0x11, 0xAF, 0x80, 0x11, 0x2A, 0x00, 0x13, 0xEA, 0x00, 0x10, 0x4A, 0x00, 0x3C, 0xDF, 0x80, 0x25, 0x82, 0x00, 0x67, 0x02, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x24, 0x56, 0x00, 0x3C, 0xD3, 0x00, 0x01, 0x91, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78D5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x3C, 0x40, 0x00, 0x24, 0xC2, 0x00, 0x64, 0x8F, 0x00, 0x25, 0xF9, 0x80, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0x29, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEF, 0x80, 0x10, 0x61, 0x80, 0x11, 0xA6, 0x80, 0x10, 0x2C, 0x80, 0x10, 0xE3, 0x80, 0x3D, 0xAE, 0x80, 0x24, 0x20, 0x80, 0x64, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78D9, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x11, 0x23, 0x00, 0x12, 0x49, 0x00, 0x1C, 0x84, 0x00, 0x35, 0xFE, 0x00, 0x54, 0x40, 0x00, 0x14, 0x44, 0x00, 0x14, 0xA8, 0x00, 0x15, 0x90, 0x00, 0x16, 0x88, 0x00, 0x1C, 0xA4, 0x00, 0x10, 0xC7, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78DA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x64, 0xFF, 0x00, 0x24, 0x12, 0x00, 0x24, 0x7F, 0x00, 0x25, 0xC1, 0x80, 0x24, 0x02, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78DB, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x7F, 0xC7, 0x00, 0x04, 0x1C, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0xB2, 0x00, 0x04, 0x22, 0x00, 0x7F, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEF, 0x00, 0x10, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x10, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x3C, 0x11, 0x00, 0x24, 0x38, 0x00, 0x64, 0xEE, 0x00, 0x27, 0x83, 0x80, 0x24, 0x10, 0x00, 0x24, 0xE4, 0x00, 0x24, 0x19, 0x00, 0x3C, 0xE2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78E0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x10, 0x1F, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x45, 0x00, 0x65, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0x93, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x3D, 0x45, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78E1, { 0x00, 0x00, 0x00, 0x01, 0x24, 0x00, 0x7D, 0x24, 0x00, 0x13, 0xF4, 0x00, 0x11, 0x24, 0x00, 0x11, 0xEF, 0x80, 0x11, 0x24, 0x80, 0x39, 0xE4, 0x80, 0x29, 0x24, 0x80, 0x6B, 0xF4, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x2B, 0x34, 0x80, 0x2A, 0x04, 0x80, 0x3A, 0x0C, 0x80, 0x03, 0xE8, 0x80, 0x00, 0x1B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78E4, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7D, 0xCF, 0x00, 0x11, 0x09, 0x00, 0x11, 0xE9, 0x00, 0x11, 0x29, 0x00, 0x11, 0xF1, 0x80, 0x39, 0x20, 0x00, 0x29, 0x3F, 0x80, 0x69, 0xE9, 0x80, 0x29, 0x09, 0x00, 0x29, 0xEB, 0x00, 0x29, 0x2A, 0x00, 0x2B, 0x26, 0x00, 0x3A, 0x6C, 0x00, 0x06, 0x4B, 0x00, 0x00, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x3D, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x64, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x92, 0x00, 0x3D, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78E7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x64, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78E8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x00, 0x13, 0x01, 0x00, 0x15, 0x01, 0x00, 0x29, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78EA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x90, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x67, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x25, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78EC, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xDE, 0x00, 0x02, 0x12, 0x80, 0x3F, 0xF3, 0x80, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x1F, 0xD2, 0x00, 0x10, 0x0C, 0x00, 0x20, 0x33, 0x80, 0x00, 0xC0, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78EF, { 0x00, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x09, 0x29, 0x00, 0x0A, 0x71, 0x00, 0x09, 0xAE, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x3F, 0x80, 0x3F, 0xF4, 0x00, 0x32, 0x22, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x91, 0x00, 0x12, 0x92, 0x00, 0x13, 0x4C, 0x00, 0x12, 0x0C, 0x80, 0x1E, 0x32, 0x80, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x9F, 0x80, 0x10, 0xD0, 0x00, 0x13, 0x1F, 0x00, 0x11, 0x91, 0x00, 0x10, 0x5F, 0x00, 0x3C, 0xD0, 0x00, 0x25, 0x9F, 0x80, 0x65, 0x00, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x24, 0xD6, 0x00, 0x3D, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78F3, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x7E, 0xC3, 0x00, 0x11, 0x81, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x11, 0x92, 0x80, 0x3D, 0x54, 0x80, 0x25, 0x10, 0x80, 0x65, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78F4, { 0x00, 0x00, 0x00, 0x01, 0xF9, 0x00, 0x7E, 0x2A, 0x80, 0x11, 0x6D, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x3C, 0x00, 0x00, 0x24, 0x00, 0x00, 0x64, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x6C, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x08, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x08, 0xF7, 0x80, 0x10, 0x80, 0x80, 0x1E, 0x80, 0x80, 0x1A, 0x9C, 0x80, 0x1A, 0x94, 0x80, 0x2A, 0x9C, 0x80, 0x2A, 0x94, 0x80, 0x0A, 0x9C, 0x80, 0x0A, 0x80, 0x80, 0x0A, 0x80, 0x80, 0x0E, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78F6, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x7E, 0xCF, 0x00, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0xEF, 0x00, 0x10, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x64, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x25, 0x80, 0x80, 0x27, 0x02, 0x80, 0x24, 0xAA, 0x80, 0x3C, 0xA8, 0x80, 0x01, 0x01, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78F7, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x7C, 0x92, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x3D, 0x93, 0x00, 0x27, 0x11, 0x80, 0x64, 0xE2, 0x00, 0x24, 0xAF, 0x00, 0x25, 0x2A, 0x00, 0x24, 0xAA, 0x00, 0x24, 0x5F, 0x80, 0x3C, 0xC2, 0x00, 0x01, 0x82, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78FA, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x65, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x82, 0x00, 0x01, 0x83, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78FB, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3E, 0xF8, 0x00, 0x08, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x09, 0xFF, 0x80, 0x10, 0x1C, 0x00, 0x10, 0x2A, 0x00, 0x3E, 0x49, 0x00, 0x33, 0x88, 0x80, 0x32, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x78FD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x42, 0x00, 0x3D, 0xEF, 0x80, 0x24, 0x42, 0x00, 0x64, 0x72, 0x00, 0x25, 0xCF, 0x80, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x80, 0x00, 0xC4, 0x80, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x78FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0xC7, 0x00, 0x27, 0x1C, 0x00, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x23, 0x8E, 0x00, 0x2D, 0x55, 0x80, 0x21, 0x04, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x80, 0x00, 0x41, 0xFE, 0x00, 0x47, 0x02, 0x00, 0x1D, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7900, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xEF, 0x80, 0x11, 0x28, 0x80, 0x11, 0xEF, 0x80, 0x11, 0x28, 0x80, 0x11, 0xEF, 0x80, 0x3D, 0x00, 0x80, 0x25, 0x3C, 0x80, 0x65, 0x24, 0x80, 0x25, 0x3C, 0x80, 0x25, 0x24, 0x80, 0x25, 0x3C, 0x80, 0x25, 0x24, 0x80, 0x3D, 0x2C, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7901, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x48, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x32, 0xFF, 0x00, 0x32, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x12, 0x00, 0x00, 0x1E, 0xA9, 0x00, 0x13, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7905, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x0B, 0xE8, 0x00, 0x08, 0x0F, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xEA, 0x00, 0x34, 0x0A, 0x00, 0x57, 0xEA, 0x00, 0x14, 0x4A, 0x00, 0x14, 0x84, 0x00, 0x14, 0xE4, 0x00, 0x17, 0x8A, 0x00, 0x1C, 0x8A, 0x00, 0x12, 0x91, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7906, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x10, 0x7C, 0x00, 0x3C, 0x00, 0x00, 0x25, 0xEF, 0x00, 0x65, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x01, 0xC7, 0x00, 0x03, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7907, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x19, 0x00, 0x11, 0x71, 0x00, 0x11, 0x55, 0x00, 0x3D, 0x39, 0x00, 0x25, 0x7D, 0x00, 0x65, 0x39, 0x00, 0x25, 0x55, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x3C, 0x6C, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x790C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x56, 0x80, 0x3D, 0x10, 0x80, 0x25, 0x56, 0x00, 0x64, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x790E, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0xE6, 0x00, 0x09, 0x5D, 0x00, 0x12, 0x54, 0x80, 0x10, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x32, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x11, 0x00, 0x12, 0x90, 0x00, 0x12, 0x9F, 0x00, 0x13, 0x50, 0x00, 0x1F, 0x3F, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7910, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1D, 0x2E, 0x00, 0x10, 0xC2, 0x00, 0x1D, 0x2E, 0x00, 0x10, 0x02, 0x00, 0x1D, 0x2E, 0x00, 0x10, 0xC2, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x1C, 0x04, 0x00, 0x74, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7911, { 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x7E, 0xD3, 0x00, 0x10, 0x52, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x11, 0x7E, 0x80, 0x3C, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x64, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7912, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7E, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x02, 0x00, 0x65, 0xE9, 0x00, 0x24, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x49, 0x00, 0x24, 0x6A, 0x00, 0x3D, 0xC4, 0x80, 0x00, 0x4A, 0x80, 0x00, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7913, { 0x00, 0x00, 0x00, 0x05, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x1F, 0xFF, 0x00, 0x32, 0x00, 0x00, 0x52, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x1E, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7916, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0xD3, 0x00, 0x08, 0x99, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x10, 0xDF, 0x00, 0x10, 0x81, 0x00, 0x1E, 0x9D, 0x00, 0x32, 0xE7, 0x00, 0x32, 0x95, 0x00, 0x32, 0x95, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x81, 0x00, 0x13, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7919, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x7E, 0x5F, 0x80, 0x13, 0x81, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x44, 0x00, 0x11, 0xDF, 0x80, 0x3A, 0x04, 0x80, 0x2B, 0xC5, 0x00, 0x2D, 0x14, 0x00, 0x69, 0x17, 0x00, 0x2F, 0xD4, 0x00, 0x29, 0x14, 0x00, 0x29, 0x94, 0x00, 0x39, 0x5C, 0x00, 0x02, 0x36, 0x00, 0x04, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x791A, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x64, 0x44, 0x00, 0x24, 0x82, 0x00, 0x25, 0xFD, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x29, 0x00, 0x01, 0x29, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x791C, { 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x1C, 0xEE, 0x00, 0x10, 0x82, 0x00, 0x1C, 0xEE, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x2E, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x18, 0x06, 0x00, 0x37, 0xFB, 0x00, 0x62, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x1C, 0x04, 0x00, 0x74, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x791E, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x11, 0x7E, 0x80, 0x3C, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x64, 0x20, 0x00, 0x24, 0x51, 0x80, 0x25, 0xAB, 0x00, 0x24, 0x48, 0x00, 0x25, 0x9C, 0x00, 0x3C, 0x6A, 0x00, 0x01, 0x89, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x791F, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xE9, 0x00, 0x12, 0x47, 0x00, 0x12, 0x42, 0x00, 0x13, 0xE5, 0x00, 0x12, 0x58, 0x80, 0x3A, 0x40, 0x00, 0x2B, 0xE8, 0x80, 0x6A, 0x48, 0x80, 0x2A, 0x48, 0x80, 0x2B, 0xF5, 0x00, 0x28, 0x15, 0x00, 0x2A, 0xB2, 0x00, 0x3A, 0xB5, 0x00, 0x05, 0x55, 0x00, 0x00, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7920, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x11, 0x04, 0x00, 0x3A, 0x49, 0x00, 0x2A, 0x8A, 0x00, 0x69, 0x24, 0x80, 0x2B, 0xEF, 0x80, 0x28, 0x20, 0x80, 0x28, 0x10, 0x00, 0x29, 0x59, 0x00, 0x39, 0x49, 0x80, 0x03, 0x62, 0x80, 0x02, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7924, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x7F, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x11, 0x10, 0x00, 0x11, 0xDE, 0x00, 0x22, 0x52, 0x00, 0x3D, 0x8C, 0x00, 0x6B, 0x04, 0x00, 0x2A, 0xFA, 0x00, 0x2C, 0x01, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x28, 0xA8, 0x00, 0x39, 0x26, 0x00, 0x22, 0x22, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7925, { 0x00, 0x00, 0x00, 0x01, 0xF7, 0x80, 0x7F, 0x40, 0x80, 0x11, 0xE4, 0x80, 0x11, 0x25, 0x00, 0x11, 0xE2, 0x00, 0x11, 0x45, 0x00, 0x3D, 0xF4, 0x80, 0x24, 0x00, 0x00, 0x64, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7926, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x22, 0x00, 0x11, 0x3E, 0x00, 0x3D, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x65, 0x08, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x25, 0x7F, 0x00, 0x3D, 0x49, 0x00, 0x01, 0x7F, 0x00, 0x02, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7927, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x38, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x6B, 0xEF, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2B, 0xEF, 0x80, 0x2A, 0xAA, 0x80, 0x3A, 0xAA, 0x80, 0x03, 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7929, { 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x7D, 0xCF, 0x00, 0x11, 0x08, 0x00, 0x11, 0xEF, 0x80, 0x11, 0x4A, 0x00, 0x12, 0x52, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x64, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x792A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x94, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x00, 0x10, 0xBE, 0x00, 0x10, 0xAA, 0x00, 0x20, 0xBE, 0x00, 0x3E, 0xAA, 0x00, 0x32, 0xBE, 0x00, 0x12, 0x88, 0x00, 0x12, 0xFF, 0x80, 0x12, 0xCA, 0x80, 0x12, 0xCE, 0x80, 0x1F, 0x71, 0x80, 0x11, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x792B, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0xBC, 0x00, 0x09, 0x29, 0x00, 0x09, 0xEE, 0x00, 0x13, 0x7A, 0x00, 0x10, 0xAA, 0x00, 0x3F, 0x6D, 0x80, 0x33, 0xBE, 0x80, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x38, 0x00, 0x1E, 0x54, 0x00, 0x12, 0x92, 0x00, 0x13, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x792C, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x08, 0xC4, 0x00, 0x3E, 0xBF, 0x80, 0x0D, 0x2E, 0x00, 0x1A, 0xD5, 0x00, 0x29, 0x24, 0x80, 0x08, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x792D, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x55, 0x00, 0x11, 0x11, 0x00, 0x3C, 0x54, 0x00, 0x24, 0x00, 0x00, 0x64, 0x44, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x88, 0x00, 0x26, 0xFE, 0x00, 0x24, 0x88, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7931, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1E, 0x00, 0x11, 0x10, 0x80, 0x13, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7934, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x05, 0x00, 0x13, 0x3F, 0x80, 0x11, 0x84, 0x00, 0x3C, 0xBF, 0x80, 0x27, 0x24, 0x80, 0x65, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x24, 0x3F, 0x80, 0x24, 0xA4, 0x80, 0x25, 0x81, 0x00, 0x3D, 0x3F, 0x80, 0x03, 0x11, 0x00, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7935, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x56, 0x80, 0x3D, 0x10, 0x80, 0x24, 0x56, 0x00, 0x64, 0x00, 0x00, 0x24, 0x47, 0x80, 0x25, 0xF4, 0x80, 0x24, 0x47, 0x80, 0x24, 0xE4, 0x80, 0x3D, 0x57, 0x80, 0x00, 0x44, 0x80, 0x00, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x793A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x793B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x793C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x18, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x6B, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x793D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x23, 0x80, 0x2A, 0x20, 0x80, 0x2A, 0x20, 0x80, 0x2A, 0x20, 0x80, 0x6A, 0x60, 0x80, 0x48, 0x41, 0x80, 0x08, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x793E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x25, 0x08, 0x00, 0x25, 0x08, 0x00, 0x25, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x793F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x7E, 0xC1, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x2A, 0x3D, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x48, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7940, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x15, 0x20, 0x00, 0x15, 0x20, 0x00, 0x15, 0x20, 0x00, 0x25, 0x20, 0x00, 0x25, 0x20, 0x80, 0x25, 0x20, 0x80, 0x04, 0x3F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7941, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x3F, 0xF2, 0x00, 0x02, 0x11, 0x00, 0x0A, 0x90, 0x80, 0x0A, 0x90, 0x80, 0x0A, 0x90, 0x80, 0x0A, 0x90, 0x80, 0x12, 0x90, 0x80, 0x12, 0x90, 0x80, 0x12, 0x97, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7944, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x36, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x63, 0x00, 0x08, 0xA2, 0x80, 0x08, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x48, 0x22, 0x00, 0x08, 0x62, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7945, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x14, 0x00, 0x6A, 0x14, 0x00, 0x48, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7946, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x28, 0x00, 0x54, 0x28, 0x00, 0x54, 0x2C, 0x00, 0x54, 0x64, 0x00, 0x50, 0x46, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x83, 0x00, 0x13, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7947, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x04, 0x3F, 0x80, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x22, 0x80, 0x04, 0x3A, 0x80, 0x04, 0xE1, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7948, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x38, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x3F, 0x80, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7949, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x15, 0x27, 0x80, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x794A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x6A, 0x21, 0x00, 0x48, 0x61, 0x00, 0x08, 0x43, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x794B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7C, 0xC4, 0x00, 0x11, 0x87, 0x80, 0x10, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x42, 0x00, 0x54, 0x66, 0x00, 0x54, 0x2C, 0x00, 0x50, 0x18, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x66, 0x00, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x794F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x30, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x61, 0x00, 0x2A, 0xA1, 0x00, 0x2B, 0x21, 0x00, 0x6A, 0x21, 0x00, 0x48, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7950, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x15, 0x10, 0x00, 0x15, 0x20, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x31, 0x00, 0x25, 0x51, 0x00, 0x25, 0x51, 0x00, 0x24, 0x91, 0x00, 0x04, 0x9F, 0x00, 0x05, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7951, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xC8, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x1C, 0x00, 0x6A, 0x14, 0x00, 0x48, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7953, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x26, 0x00, 0x00, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x72, 0x00, 0x2A, 0x56, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0xDC, 0x00, 0x6A, 0x88, 0x00, 0x49, 0x9C, 0x00, 0x09, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7954, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x38, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0xC2, 0x00, 0x00, 0xBF, 0x80, 0x7C, 0x82, 0x00, 0x11, 0x82, 0x00, 0x12, 0x92, 0x00, 0x54, 0x9A, 0x00, 0x54, 0x8A, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x50, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7955, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x3E, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x7F, 0x23, 0x00, 0x08, 0x22, 0x00, 0x08, 0xA6, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xAD, 0x80, 0x2A, 0xA8, 0x80, 0x6A, 0xB0, 0x00, 0x48, 0x20, 0x00, 0x08, 0x61, 0x00, 0x09, 0xB3, 0x00, 0x08, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7956, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x21, 0x00, 0x25, 0x21, 0x00, 0x25, 0x21, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7957, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x3F, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x74, 0x80, 0x09, 0xC2, 0x80, 0x08, 0x01, 0x80, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7958, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x6A, 0x6B, 0x00, 0x48, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x795A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xC8, 0x00, 0x04, 0x88, 0x00, 0x04, 0x08, 0x00, 0x15, 0x0F, 0x80, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x0F, 0x80, 0x25, 0x08, 0x00, 0x25, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x795B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x10, 0x00, 0x25, 0x10, 0x00, 0x25, 0x22, 0x00, 0x24, 0x4F, 0x00, 0x04, 0xF0, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x795C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x795D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3F, 0xC1, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x14, 0x00, 0x15, 0x14, 0x00, 0x15, 0x14, 0x00, 0x15, 0x14, 0x00, 0x15, 0x14, 0x00, 0x15, 0x24, 0x80, 0x25, 0x24, 0x80, 0x24, 0x47, 0x80, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x795E, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xE4, 0x80, 0x04, 0x24, 0x80, 0x04, 0x24, 0x80, 0x15, 0x3F, 0x80, 0x15, 0x24, 0x80, 0x15, 0x24, 0x80, 0x15, 0x24, 0x80, 0x25, 0x3F, 0x80, 0x25, 0x24, 0x80, 0x25, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x795F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x3B, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7960, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x80, 0x04, 0x00, 0x80, 0x04, 0x3E, 0x80, 0x15, 0x22, 0x80, 0x15, 0x22, 0x80, 0x15, 0x3E, 0x80, 0x25, 0x22, 0x80, 0x25, 0x00, 0x80, 0x25, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7962, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x7F, 0x80, 0x02, 0x48, 0x00, 0x06, 0xC8, 0x00, 0x05, 0x88, 0x00, 0x0C, 0x2A, 0x00, 0x18, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x6B, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7965, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x15, 0x04, 0x00, 0x15, 0x04, 0x00, 0x15, 0x04, 0x00, 0x15, 0x7F, 0x80, 0x25, 0x04, 0x00, 0x25, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7967, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x00, 0x24, 0x80, 0x01, 0xA5, 0x80, 0x00, 0x67, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x2A, 0x27, 0x00, 0x2A, 0x65, 0x80, 0x2B, 0xA4, 0x80, 0x6A, 0x24, 0x00, 0x48, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7968, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7969, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xC8, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x6A, 0x6B, 0x00, 0x48, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x796B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x64, 0x00, 0x00, 0x46, 0x00, 0x7E, 0xC3, 0x00, 0x09, 0xBD, 0x80, 0x08, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x6A, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x796D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x40, 0x00, 0x07, 0xFF, 0x00, 0x0C, 0xA2, 0x00, 0x33, 0x14, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x796F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x04, 0x12, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x10, 0x00, 0x02, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x04, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x15, 0x92, 0x00, 0x24, 0x92, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x04, 0x28, 0x00, 0x04, 0x26, 0x00, 0x04, 0x43, 0x00, 0x05, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7972, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7E, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x7C, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x55, 0x7E, 0x80, 0x54, 0x42, 0x00, 0x54, 0x66, 0x00, 0x50, 0x2C, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6E, 0x00, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7977, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x20, 0x00, 0x10, 0x22, 0x00, 0x3D, 0xFF, 0x80, 0x56, 0x42, 0x00, 0x10, 0xD2, 0x00, 0x10, 0x9A, 0x00, 0x11, 0x8A, 0x00, 0x13, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7978, { 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x01, 0x04, 0x00, 0x7D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x38, 0x22, 0x00, 0x57, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x5A, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7979, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x00, 0xFF, 0x80, 0x01, 0x80, 0x80, 0x01, 0x40, 0x80, 0x7E, 0x7C, 0x80, 0x08, 0xD0, 0x80, 0x08, 0x10, 0x80, 0x2A, 0xFE, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0x54, 0x80, 0x6A, 0x54, 0x80, 0x48, 0x54, 0x80, 0x08, 0x7D, 0x80, 0x08, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x797A, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x04, 0x3E, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x3E, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x797B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x6A, 0xA2, 0x80, 0x48, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x797C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x54, 0x00, 0x6A, 0x56, 0x00, 0x48, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x797E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x47, 0x80, 0x2A, 0xA0, 0x00, 0x2A, 0x3E, 0x00, 0x2A, 0x62, 0x00, 0x6A, 0xC6, 0x00, 0x49, 0xAC, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6E, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x797F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x22, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x49, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x1C, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x4A, 0x00, 0x04, 0x89, 0x00, 0x05, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7980, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xF4, 0x00, 0x0A, 0x14, 0x00, 0x0B, 0xF4, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x31, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7981, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0x0E, 0x00, 0x0A, 0x95, 0x00, 0x12, 0x24, 0x80, 0x22, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7984, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x7E, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x06, 0x02, 0x00, 0x05, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x18, 0x91, 0x00, 0x3E, 0xD3, 0x00, 0x6B, 0x5A, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7985, { 0x00, 0x00, 0x00, 0x08, 0x90, 0x80, 0x08, 0xD9, 0x80, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x49, 0x00, 0x06, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x18, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x6B, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x798A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3B, 0xEF, 0x00, 0x00, 0x85, 0x00, 0x00, 0x85, 0x00, 0x03, 0xE5, 0x00, 0x7C, 0x85, 0x00, 0x10, 0x8D, 0x00, 0x10, 0xE9, 0x00, 0x57, 0x9B, 0x00, 0x54, 0x80, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x50, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x798B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xA9, 0x00, 0x7F, 0xA9, 0x00, 0x08, 0xCF, 0x00, 0x08, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x798C, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x38, 0x66, 0x00, 0x00, 0x24, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x55, 0x29, 0x00, 0x54, 0xA5, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x50, 0xA5, 0x00, 0x10, 0xA5, 0x00, 0x11, 0xEF, 0x80, 0x11, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x798D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xAF, 0x00, 0x04, 0x29, 0x00, 0x04, 0x29, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x40, 0x80, 0x15, 0x5E, 0x80, 0x15, 0x52, 0x80, 0x25, 0x5E, 0x80, 0x25, 0x52, 0x80, 0x24, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x798E, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x20, 0x80, 0x04, 0x20, 0x80, 0x15, 0x3F, 0x80, 0x15, 0x20, 0x80, 0x15, 0x20, 0x80, 0x15, 0x3F, 0x80, 0x25, 0x20, 0x80, 0x25, 0x20, 0x80, 0x24, 0x3F, 0x80, 0x04, 0x11, 0x00, 0x04, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x798F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x48, 0x80, 0x15, 0x48, 0x80, 0x25, 0x7F, 0x80, 0x25, 0x48, 0x80, 0x25, 0x48, 0x80, 0x04, 0x7F, 0x80, 0x04, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7991, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x8A, 0x80, 0x2A, 0x8E, 0x80, 0x2A, 0xF1, 0x80, 0x2A, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7993, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x80, 0x00, 0x54, 0xFF, 0x80, 0x55, 0x24, 0x80, 0x50, 0x44, 0x80, 0x11, 0x89, 0x80, 0x10, 0x11, 0x00, 0x10, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7994, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x2A, 0x90, 0x00, 0x6A, 0x9F, 0x00, 0x48, 0x90, 0x00, 0x09, 0xD0, 0x00, 0x09, 0x70, 0x00, 0x0B, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7995, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0xFF, 0x00, 0x6A, 0x84, 0x00, 0x48, 0x84, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7996, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x54, 0x00, 0x6A, 0x56, 0x00, 0x48, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7998, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x00, 0x36, 0x00, 0x7F, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x48, 0x49, 0x00, 0x08, 0x4B, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x799A, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0x44, 0x00, 0x00, 0x28, 0x00, 0x7D, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x48, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0x52, 0x00, 0x09, 0x29, 0x00, 0x0A, 0x29, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x799B, { 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x40, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x7E, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x6A, 0xBF, 0x00, 0x48, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x799C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x73, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x799D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x2A, 0xC7, 0x80, 0x2A, 0x20, 0x00, 0x2A, 0x3E, 0x00, 0x6A, 0x62, 0x00, 0x48, 0xD6, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFE, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFE, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x00, 0x80, 0x48, 0xAA, 0x80, 0x09, 0xAA, 0x80, 0x09, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79A6, { 0x00, 0x00, 0x00, 0x08, 0x87, 0x80, 0x11, 0xF4, 0x80, 0x26, 0x44, 0x80, 0x04, 0x44, 0x80, 0x0B, 0xFC, 0x80, 0x18, 0x44, 0x80, 0x29, 0x54, 0x80, 0x09, 0xF5, 0x80, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79A7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x22, 0x00, 0x15, 0x14, 0x00, 0x15, 0xFF, 0x80, 0x25, 0x00, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79A8, { 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x39, 0x12, 0x00, 0x03, 0x56, 0x80, 0x00, 0x91, 0x00, 0x01, 0x12, 0x80, 0x7D, 0x57, 0x80, 0x13, 0xD2, 0x00, 0x10, 0x11, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x10, 0x00, 0x55, 0x09, 0x00, 0x55, 0x8A, 0x00, 0x51, 0x44, 0x00, 0x13, 0x4A, 0x80, 0x12, 0x13, 0x80, 0x12, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x66, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x77, 0x00, 0x00, 0x55, 0x00, 0x00, 0x55, 0x00, 0x3F, 0xF7, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x25, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xA9, 0x00, 0x7E, 0xB9, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x6A, 0x7E, 0x00, 0x48, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79AE, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xD5, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x22, 0x00, 0x04, 0x14, 0x00, 0x05, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79AF, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x80, 0x00, 0x6A, 0xFF, 0x80, 0x48, 0xA9, 0x00, 0x08, 0xAD, 0x00, 0x09, 0x36, 0x00, 0x08, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79B0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x7D, 0x11, 0x00, 0x07, 0xFF, 0x80, 0x0D, 0x11, 0x00, 0x09, 0xBB, 0x00, 0x19, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x39, 0x11, 0x00, 0x55, 0xBB, 0x00, 0x11, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79B1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x80, 0x04, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x15, 0x7F, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x02, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x6A, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79B3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xE7, 0x00, 0x00, 0xA5, 0x00, 0x3E, 0xE7, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x24, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x69, 0x00, 0x2A, 0xC6, 0x00, 0x2B, 0x7A, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79B4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0xDD, 0x80, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x94, 0x80, 0x48, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79B8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x21, 0x81, 0x00, 0x21, 0x11, 0x00, 0x23, 0x11, 0x00, 0x27, 0xF9, 0x00, 0x2C, 0x0D, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79B9, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x42, 0x80, 0x20, 0x7E, 0x80, 0x2F, 0x81, 0x80, 0x20, 0x00, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x91, 0x00, 0x20, 0xF9, 0x00, 0x2F, 0x8D, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79BB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0B, 0x34, 0x00, 0x08, 0xC4, 0x00, 0x0B, 0x34, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0xF1, 0x00, 0x27, 0x99, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79BD, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x03, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x37, 0xFD, 0x80, 0x05, 0x94, 0x00, 0x04, 0x64, 0x00, 0x05, 0x94, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x12, 0x79, 0x00, 0x1F, 0x85, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79BE, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79BF, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x80, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C0, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x1F, 0x00, 0x02, 0x01, 0x00, 0x0C, 0x02, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C1, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x15, 0x20, 0x00, 0x14, 0xA0, 0x00, 0x14, 0x21, 0x00, 0x24, 0x41, 0x00, 0x04, 0x4F, 0x00, 0x05, 0xF0, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C2, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x20, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79C3, { 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x88, 0x00, 0x13, 0xE7, 0x00, 0x22, 0x22, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x08, 0x1F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C4, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x7F, 0x80, 0x78, 0x03, 0x00, 0x08, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C6, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0xFE, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x12, 0x00, 0x1D, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C7, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x78, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFC, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x1C, 0xA4, 0x00, 0x1A, 0x64, 0x00, 0x2A, 0x24, 0x00, 0x28, 0x74, 0x00, 0x48, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79C8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79C9, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79CA, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x02, 0x4C, 0x00, 0x0C, 0x43, 0x80, 0x30, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79CB, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x80, 0x3F, 0xA9, 0x00, 0x04, 0x2A, 0x00, 0x0C, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x15, 0x08, 0x00, 0x14, 0x88, 0x00, 0x14, 0x14, 0x00, 0x24, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79CD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x12, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79CF, { 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x70, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x7E, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x19, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79D1, { 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x04, 0x24, 0x00, 0x04, 0x14, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x24, 0x00, 0x0D, 0x14, 0x00, 0x14, 0x87, 0x80, 0x14, 0x7C, 0x00, 0x24, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79D2, { 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x04, 0x05, 0x00, 0x04, 0x15, 0x00, 0x3F, 0x94, 0x80, 0x04, 0x24, 0x80, 0x0E, 0x24, 0x00, 0x0D, 0x44, 0x00, 0x14, 0x04, 0x80, 0x14, 0x04, 0x80, 0x14, 0x0D, 0x00, 0x24, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x04, 0x18, 0x00, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79D4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x48, 0xC4, 0x00, 0x08, 0x84, 0x80, 0x09, 0x84, 0x80, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79D5, { 0x00, 0x00, 0x00, 0x03, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xC4, 0x80, 0x0C, 0x7D, 0x00, 0x0E, 0x46, 0x00, 0x15, 0x44, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x80, 0x04, 0x7C, 0x80, 0x05, 0xC7, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79D6, { 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0E, 0x0E, 0x00, 0x78, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x88, 0x00, 0x1A, 0x8C, 0x00, 0x2A, 0x84, 0x00, 0x28, 0x84, 0x00, 0x48, 0x86, 0x00, 0x08, 0x82, 0x80, 0x08, 0xF3, 0x80, 0x0B, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79D8, { 0x00, 0x00, 0x00, 0x03, 0x40, 0x00, 0x1C, 0x22, 0x00, 0x04, 0x12, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x24, 0x00, 0x0C, 0x24, 0x00, 0x0E, 0x24, 0x00, 0x15, 0x28, 0x00, 0x14, 0xA9, 0x00, 0x24, 0xA8, 0x80, 0x25, 0x30, 0x80, 0x04, 0x30, 0x00, 0x04, 0x21, 0x00, 0x04, 0x61, 0x00, 0x04, 0xBF, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79DA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x2A, 0x00, 0x78, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79DD, { 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x0E, 0x0E, 0x00, 0x78, 0x78, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x1A, 0x1A, 0x00, 0x29, 0x29, 0x00, 0x28, 0x28, 0x80, 0x48, 0x48, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79DE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x28, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79DF, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x0C, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x21, 0x00, 0x14, 0x21, 0x00, 0x14, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79E0, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x34, 0x00, 0x08, 0x76, 0x00, 0x1C, 0xD3, 0x00, 0x1A, 0x91, 0x80, 0x2A, 0x10, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79E1, { 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x0E, 0x26, 0x00, 0x78, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x72, 0x00, 0x1C, 0x56, 0x00, 0x1A, 0x54, 0x00, 0x2A, 0xDC, 0x00, 0x28, 0x88, 0x00, 0x49, 0x9C, 0x00, 0x0B, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79E2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x80, 0x7E, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x28, 0x11, 0x00, 0x48, 0x11, 0x00, 0x08, 0x17, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79E3, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x1C, 0x54, 0x00, 0x1A, 0x54, 0x00, 0x2A, 0xD6, 0x00, 0x28, 0x92, 0x00, 0x49, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79E4, { 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x2A, 0x00, 0x06, 0x2A, 0x00, 0x0D, 0x08, 0x00, 0x0D, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79E5, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79E6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xA0, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x76, 0x00, 0x33, 0xC1, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79E7, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x3B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x28, 0x00, 0x28, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79E9, { 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x28, 0x00, 0x04, 0x28, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x48, 0x00, 0x0E, 0x88, 0x00, 0x0D, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x14, 0x14, 0x00, 0x24, 0x14, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x79EA, { 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0E, 0x0E, 0x00, 0x78, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x1A, 0x8C, 0x00, 0x2A, 0x84, 0x00, 0x28, 0x84, 0x00, 0x48, 0xF6, 0x00, 0x0B, 0x82, 0x80, 0x08, 0x03, 0x80, 0x0B, 0xF1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79EB, { 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x0E, 0x13, 0x00, 0x78, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x28, 0x92, 0x00, 0x49, 0x12, 0x00, 0x09, 0x13, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79EC, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x29, 0x40, 0x00, 0x28, 0x40, 0x00, 0x48, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79ED, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x13, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x90, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x1C, 0xFF, 0x80, 0x1A, 0x10, 0x80, 0x2A, 0x30, 0x80, 0x28, 0x30, 0x80, 0x48, 0x50, 0x80, 0x08, 0x90, 0x80, 0x09, 0x11, 0x80, 0x08, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79EF, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x02, 0x00, 0x3C, 0x7F, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x7F, 0x42, 0x00, 0x04, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x0E, 0x7E, 0x00, 0x15, 0x42, 0x00, 0x14, 0x00, 0x00, 0x24, 0x44, 0x00, 0x44, 0x62, 0x00, 0x04, 0x83, 0x00, 0x05, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79F0, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x78, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x48, 0x00, 0x7E, 0xC8, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x1C, 0x2A, 0x00, 0x1A, 0x2A, 0x00, 0x2A, 0x6B, 0x00, 0x28, 0x49, 0x00, 0x48, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79F1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x7E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x1C, 0xA5, 0x00, 0x1A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x28, 0xBD, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79F8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x2A, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79FB, { 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x04, 0x0F, 0x80, 0x04, 0x11, 0x00, 0x3F, 0xB2, 0x00, 0x04, 0x4C, 0x00, 0x05, 0x88, 0x00, 0x0E, 0x14, 0x00, 0x0D, 0x64, 0x00, 0x14, 0x8F, 0x80, 0x14, 0x11, 0x00, 0x24, 0x2A, 0x00, 0x04, 0xC4, 0x00, 0x04, 0x08, 0x00, 0x04, 0x30, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79FC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x48, 0x00, 0x78, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC8, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x2A, 0x00, 0x1A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x48, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x09, 0x88, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x79FD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0xA2, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x7F, 0x00, 0x28, 0x82, 0x00, 0x29, 0x42, 0x00, 0x48, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x00, 0x08, 0x60, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A00, { 0x00, 0x00, 0x00, 0x07, 0x31, 0x00, 0x1C, 0x0A, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x71, 0x00, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x0E, 0x28, 0x00, 0x15, 0x48, 0x00, 0x14, 0xFF, 0x00, 0x15, 0x49, 0x00, 0x24, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x4B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A02, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x1A, 0x90, 0x80, 0x2A, 0x99, 0x80, 0x28, 0x8B, 0x00, 0x48, 0x8C, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x0B, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A03, { 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0E, 0x1E, 0x00, 0x79, 0xF2, 0x00, 0x08, 0x53, 0x00, 0x08, 0x89, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x06, 0x00, 0x1C, 0x0C, 0x00, 0x1A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A05, { 0x00, 0x00, 0x00, 0x03, 0x1C, 0x00, 0x1C, 0x02, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x3F, 0x80, 0x80, 0x05, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x15, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x14, 0x00, 0x24, 0x14, 0x00, 0x04, 0x24, 0x00, 0x04, 0x44, 0x80, 0x04, 0x87, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A06, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0xFE, 0x00, 0x78, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7E, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x18, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x29, 0x02, 0x00, 0x49, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A07, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x80, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x7E, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x08, 0x9C, 0x80, 0x1C, 0x9C, 0x80, 0x1A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x28, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A08, { 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x0E, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A09, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x50, 0x00, 0x48, 0x30, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6E, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A0A, { 0x00, 0x00, 0x00, 0x02, 0x42, 0x00, 0x0E, 0x66, 0x00, 0x78, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x7E, 0x11, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x1C, 0x90, 0x00, 0x1A, 0xFF, 0x80, 0x2A, 0x30, 0x80, 0x28, 0x30, 0x80, 0x48, 0x51, 0x80, 0x08, 0xD1, 0x00, 0x09, 0x97, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A0B, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x0E, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A0C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x7F, 0x83, 0x00, 0x09, 0x7D, 0x80, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A0D, { 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x1C, 0x29, 0x00, 0x04, 0x29, 0x00, 0x04, 0x48, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x7F, 0x00, 0x0D, 0x41, 0x00, 0x14, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x24, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A0E, { 0x00, 0x00, 0x00, 0x02, 0x81, 0x00, 0x0E, 0xC3, 0x00, 0x78, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x48, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A11, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1C, 0xC3, 0x80, 0x1A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A14, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x09, 0xBD, 0x80, 0x18, 0x00, 0x00, 0x1C, 0x7E, 0x00, 0x3A, 0x04, 0x00, 0x28, 0x08, 0x00, 0x28, 0x20, 0x00, 0x28, 0x11, 0x00, 0x29, 0x49, 0x00, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A15, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x79, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x06, 0x00, 0x2A, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A17, { 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x1E, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x14, 0x28, 0x00, 0x14, 0x48, 0x00, 0x24, 0x88, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A18, { 0x00, 0x00, 0x00, 0x02, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x79, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x1A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A19, { 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x5F, 0x00, 0x0C, 0x51, 0x00, 0x0E, 0x5F, 0x00, 0x15, 0x51, 0x00, 0x14, 0x5F, 0x00, 0x24, 0x51, 0x00, 0x24, 0x5F, 0x00, 0x04, 0x51, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A1A, { 0x00, 0x00, 0x00, 0x07, 0x24, 0x00, 0x1C, 0x24, 0x00, 0x04, 0x48, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xC8, 0x00, 0x0C, 0xC8, 0x00, 0x0D, 0x48, 0x00, 0x16, 0x7F, 0x00, 0x15, 0x48, 0x00, 0x14, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A1B, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x80, 0x80, 0x08, 0x8E, 0x80, 0x08, 0xB8, 0x80, 0x7E, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x1C, 0x9C, 0x80, 0x1A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x28, 0x88, 0x80, 0x48, 0x88, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A1C, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x38, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x1C, 0x88, 0x80, 0x1B, 0x4F, 0x80, 0x3A, 0x40, 0x00, 0x28, 0xFE, 0x00, 0x29, 0x84, 0x00, 0x2A, 0x48, 0x00, 0x08, 0x30, 0x00, 0x08, 0x68, 0x00, 0x09, 0x86, 0x00, 0x0A, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A1E, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x2A, 0x54, 0x00, 0x28, 0x56, 0x00, 0x48, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A1F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0xF2, 0x00, 0x09, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x80, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x3E, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x18, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x3A, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x28, 0xA2, 0x80, 0x28, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x09, 0x00, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A21, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x77, 0x00, 0x08, 0xD5, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A23, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0E, 0x00, 0x1E, 0xF0, 0x00, 0x24, 0x10, 0x00, 0x48, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x2A, 0x34, 0x00, 0x2A, 0x54, 0x00, 0x3E, 0x93, 0x00, 0x01, 0x12, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A27, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x1C, 0xEF, 0x80, 0x73, 0x84, 0x80, 0x10, 0x84, 0x80, 0x10, 0xE4, 0x80, 0x7D, 0x84, 0x80, 0x10, 0x8C, 0x80, 0x10, 0xE8, 0x80, 0x3B, 0x9B, 0x80, 0x34, 0x80, 0x00, 0x50, 0x20, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0xC6, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A2B, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x28, 0x88, 0x80, 0x48, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A2D, { 0x00, 0x00, 0x00, 0x02, 0x88, 0x00, 0x0E, 0x89, 0x80, 0x78, 0xEF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x80, 0x08, 0xE7, 0x80, 0x09, 0x88, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x28, 0x81, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A2E, { 0x00, 0x00, 0x00, 0x07, 0x0F, 0x00, 0x1C, 0x78, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x24, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A2F, { 0x00, 0x00, 0x00, 0x02, 0x41, 0x00, 0x0E, 0x55, 0x00, 0x78, 0x49, 0x00, 0x08, 0x55, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x1C, 0xD3, 0x80, 0x1A, 0x3E, 0x00, 0x2A, 0x62, 0x00, 0x28, 0xD6, 0x00, 0x48, 0x14, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x3B, 0x00, 0x08, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A30, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x08, 0x80, 0x08, 0x4F, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x68, 0x00, 0x08, 0xDF, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A31, { 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x1C, 0x39, 0x00, 0x04, 0x24, 0x80, 0x04, 0x4A, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x7F, 0x00, 0x0E, 0x49, 0x00, 0x0D, 0x49, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x24, 0xFF, 0x80, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A32, { 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x0E, 0x1E, 0x00, 0x78, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xDB, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x9F, 0x00, 0x1A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x28, 0x9F, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A33, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x78, 0x7C, 0x00, 0x08, 0x88, 0x00, 0x09, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x1C, 0x02, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x4A, 0x92, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0x85, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A34, { 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x0E, 0x24, 0x00, 0x79, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x29, 0x00, 0x08, 0x29, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x29, 0x00, 0x1A, 0x29, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x2C, 0x00, 0x48, 0x6A, 0x00, 0x08, 0xAB, 0x00, 0x09, 0x29, 0x80, 0x08, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A35, { 0x00, 0x00, 0x00, 0x02, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x78, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1D, 0x29, 0x00, 0x1A, 0xA5, 0x00, 0x2A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x48, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x09, 0xEF, 0x80, 0x09, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A36, { 0x00, 0x00, 0x00, 0x06, 0x14, 0x00, 0x38, 0x12, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x09, 0xD2, 0x00, 0x19, 0x54, 0x00, 0x1D, 0x59, 0x00, 0x3B, 0xDA, 0x00, 0x28, 0x6C, 0x80, 0x29, 0x99, 0x00, 0x08, 0x6A, 0x00, 0x0B, 0x84, 0x00, 0x08, 0x0A, 0x80, 0x08, 0x31, 0x80, 0x09, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A37, { 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x7F, 0x00, 0x0E, 0x14, 0x80, 0x0D, 0x27, 0x80, 0x14, 0x50, 0x00, 0x15, 0x90, 0x00, 0x14, 0x3F, 0x00, 0x24, 0x62, 0x00, 0x04, 0x94, 0x00, 0x07, 0x18, 0x00, 0x04, 0x66, 0x00, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A38, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x79, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x7E, 0xF9, 0x00, 0x08, 0x11, 0x00, 0x09, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A39, { 0x00, 0x00, 0x00, 0x02, 0x46, 0x00, 0x0E, 0x7C, 0x00, 0x78, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x1C, 0xA1, 0x00, 0x1A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x28, 0xBF, 0x00, 0x48, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A3A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0xA2, 0x00, 0x1A, 0x94, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x00, 0x49, 0x88, 0x00, 0x09, 0x7F, 0x00, 0x0B, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A3B, { 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x00, 0x38, 0x71, 0x00, 0x08, 0x48, 0x80, 0x08, 0x84, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x18, 0x00, 0x1A, 0xE7, 0x80, 0x38, 0x80, 0x80, 0x28, 0x80, 0x80, 0x28, 0xF7, 0x80, 0x28, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A3C, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x80, 0x80, 0x3F, 0xFF, 0x80, 0x04, 0x24, 0x00, 0x0E, 0x34, 0x80, 0x0D, 0x4D, 0x00, 0x14, 0x9A, 0x00, 0x15, 0x26, 0x00, 0x24, 0x4E, 0x00, 0x05, 0x95, 0x00, 0x04, 0x25, 0x00, 0x04, 0x44, 0x80, 0x05, 0x84, 0x00, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A3D, { 0x00, 0x00, 0x00, 0x06, 0x24, 0x00, 0x38, 0x4E, 0x00, 0x09, 0xF9, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x48, 0x80, 0x08, 0x8F, 0x80, 0x19, 0x10, 0x00, 0x1C, 0x1E, 0x00, 0x1A, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A3E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A3F, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x3F, 0xBE, 0x00, 0x04, 0x22, 0x00, 0x0C, 0x3E, 0x00, 0x0E, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x55, 0x00, 0x04, 0x55, 0x00, 0x04, 0x5D, 0x00, 0x04, 0x41, 0x00, 0x04, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A40, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x80, 0x3F, 0xA2, 0x80, 0x20, 0xC3, 0x80, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xA1, 0x00, 0x0C, 0x12, 0x00, 0x0E, 0x0C, 0x00, 0x15, 0x0C, 0x00, 0x14, 0x12, 0x00, 0x24, 0x21, 0x00, 0x04, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A42, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x79, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x28, 0x18, 0x00, 0x48, 0xA9, 0x00, 0x08, 0xA1, 0x80, 0x09, 0xA2, 0x80, 0x09, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A43, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x45, 0x00, 0x7C, 0xC6, 0x00, 0x11, 0x93, 0x00, 0x10, 0x38, 0x00, 0x38, 0x6C, 0x00, 0x34, 0xC6, 0x00, 0x53, 0x83, 0x80, 0x50, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A44, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x1C, 0xEF, 0x00, 0x71, 0x91, 0x00, 0x13, 0x53, 0x00, 0x10, 0xAA, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x82, 0x00, 0x13, 0x7D, 0x80, 0x38, 0x00, 0x00, 0x34, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x50, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A45, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0xBF, 0x00, 0x7E, 0x89, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x89, 0x00, 0x1C, 0xBF, 0x00, 0x1A, 0x88, 0x00, 0x2A, 0xC9, 0x00, 0x28, 0xAA, 0x00, 0x49, 0x9C, 0x00, 0x09, 0x2A, 0x00, 0x0B, 0x49, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A46, { 0x00, 0x00, 0x00, 0x03, 0x18, 0x00, 0x1C, 0x67, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xC1, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x49, 0x00, 0x15, 0x98, 0x80, 0x14, 0x03, 0x00, 0x24, 0x1C, 0x00, 0x24, 0x63, 0x00, 0x04, 0x1C, 0x00, 0x04, 0x61, 0x80, 0x04, 0x0E, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A47, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x24, 0x00, 0x78, 0x3C, 0x00, 0x08, 0x42, 0x00, 0x08, 0x94, 0x80, 0x7E, 0xF7, 0x80, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x1C, 0x63, 0x00, 0x1A, 0xC9, 0x80, 0x2A, 0x10, 0x00, 0x28, 0x64, 0x00, 0x48, 0x19, 0x00, 0x08, 0x63, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A48, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x25, 0x05, 0x00, 0x25, 0x55, 0x00, 0x29, 0x54, 0x80, 0x20, 0x0E, 0x00, 0x23, 0xF8, 0x00, 0x20, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x60, 0xA8, 0x00, 0x43, 0xAE, 0x00, 0x4E, 0x23, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A49, { 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x88, 0x00, 0x08, 0xEB, 0x80, 0x18, 0xEB, 0x80, 0x1C, 0x80, 0x00, 0x3A, 0xA8, 0x00, 0x28, 0xA8, 0x00, 0x28, 0xBF, 0x00, 0x28, 0xC8, 0x00, 0x09, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A4C, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1F, 0x06, 0x00, 0x31, 0x3C, 0x00, 0x22, 0x04, 0x00, 0x7F, 0x84, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x8E, 0x00, 0x24, 0x8D, 0x00, 0x3F, 0x95, 0x80, 0x00, 0x14, 0x80, 0x2A, 0xA4, 0x00, 0x2A, 0x84, 0x00, 0x6A, 0x84, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A4D, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x88, 0x00, 0x04, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A4E, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x27, 0x7F, 0x80, 0x38, 0x08, 0x00, 0x21, 0x10, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x03, 0x3F, 0x00, 0x1C, 0x21, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x0E, 0x21, 0x00, 0x0D, 0x21, 0x00, 0x14, 0xBF, 0x00, 0x14, 0x21, 0x00, 0x24, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A4F, { 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x1C, 0x1E, 0x00, 0x73, 0xF1, 0x00, 0x11, 0x23, 0x00, 0x10, 0x92, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x35, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x50, 0x10, 0x00, 0x51, 0x59, 0x00, 0x11, 0x49, 0x80, 0x13, 0x42, 0x80, 0x12, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A50, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x1C, 0xF8, 0x00, 0x71, 0x10, 0x00, 0x13, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x7D, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x19, 0xFE, 0x00, 0x34, 0x20, 0x00, 0x33, 0xFF, 0x00, 0x32, 0x21, 0x00, 0x53, 0xFF, 0x00, 0x12, 0x21, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x80, 0x10, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A51, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x06, 0x24, 0x00, 0x7B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x7C, 0xA8, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFA, 0x00, 0x4A, 0x8A, 0x00, 0x0A, 0xFA, 0x00, 0x0A, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A55, { 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x0E, 0x48, 0x00, 0x78, 0xFF, 0x00, 0x09, 0x88, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x88, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x52, 0x00, 0x48, 0x52, 0x00, 0x08, 0xD3, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A56, { 0x00, 0x00, 0x00, 0x04, 0x91, 0x00, 0x1D, 0x12, 0x00, 0x73, 0x56, 0x80, 0x10, 0x91, 0x00, 0x11, 0x12, 0x80, 0x7D, 0x57, 0x80, 0x13, 0xD2, 0x00, 0x10, 0x11, 0x00, 0x39, 0xFF, 0x80, 0x35, 0x10, 0x00, 0x51, 0x09, 0x00, 0x51, 0x8A, 0x00, 0x11, 0x44, 0x00, 0x13, 0x4A, 0x80, 0x12, 0x13, 0x80, 0x16, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A57, { 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x0A, 0x00, 0x14, 0x0F, 0x00, 0x14, 0xF0, 0x80, 0x24, 0x10, 0x00, 0x04, 0xAB, 0x00, 0x04, 0xA2, 0x80, 0x05, 0x3E, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A59, { 0x00, 0x00, 0x00, 0x02, 0x14, 0x00, 0x0E, 0x94, 0x80, 0x78, 0x55, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A5C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x92, 0x00, 0x1A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x28, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A5D, { 0x00, 0x00, 0x00, 0x02, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x78, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x90, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x95, 0x00, 0x2A, 0xF5, 0x00, 0x28, 0x97, 0x00, 0x48, 0x92, 0x00, 0x08, 0xF7, 0x00, 0x09, 0x9D, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A5F, { 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x1D, 0x23, 0x00, 0x71, 0x61, 0x80, 0x10, 0xDE, 0x80, 0x11, 0x08, 0x00, 0x7D, 0x90, 0x80, 0x10, 0xA9, 0x80, 0x10, 0x09, 0x00, 0x39, 0x94, 0x00, 0x34, 0xA6, 0x00, 0x50, 0x8D, 0x00, 0x50, 0x94, 0x80, 0x10, 0xA4, 0x00, 0x11, 0x8C, 0x00, 0x11, 0x40, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A60, { 0x00, 0x00, 0x00, 0x02, 0x14, 0x00, 0x0E, 0x7F, 0x00, 0x78, 0x55, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x80, 0x00, 0x1A, 0xBF, 0x00, 0x2A, 0x80, 0x00, 0x28, 0xFF, 0x80, 0x48, 0xA9, 0x00, 0x09, 0xAD, 0x00, 0x0B, 0x36, 0x00, 0x08, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A61, { 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x2A, 0x00, 0x3F, 0x5D, 0x00, 0x04, 0x08, 0x00, 0x0E, 0xFF, 0x80, 0x0D, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x24, 0x5D, 0x00, 0x04, 0x55, 0x00, 0x04, 0x5D, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A62, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x38, 0x5F, 0x00, 0x08, 0x50, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x1D, 0xFF, 0x80, 0x1B, 0x09, 0x00, 0x39, 0xF9, 0x00, 0x29, 0x2A, 0x00, 0x29, 0x7A, 0x00, 0x09, 0xAC, 0x00, 0x09, 0x24, 0x00, 0x09, 0x6A, 0x80, 0x09, 0x11, 0x80, 0x0A, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A63, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x79, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x09, 0x81, 0x80, 0x7E, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x24, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x48, 0x65, 0x00, 0x09, 0xC2, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A65, { 0x00, 0x00, 0x00, 0x04, 0xC0, 0x00, 0x1D, 0xA7, 0x00, 0x71, 0x39, 0x00, 0x11, 0x21, 0x00, 0x11, 0xA3, 0x00, 0x7D, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0xAB, 0x00, 0x39, 0x29, 0x00, 0x35, 0x29, 0x00, 0x51, 0x29, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x82, 0x00, 0x11, 0x83, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A67, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x13, 0xD7, 0x80, 0x7D, 0x55, 0x00, 0x11, 0x55, 0x00, 0x12, 0xD6, 0x80, 0x38, 0x00, 0x00, 0x35, 0x01, 0x00, 0x51, 0xFF, 0x00, 0x51, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x13, 0x01, 0x00, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A69, { 0x00, 0x00, 0x00, 0x0E, 0x07, 0x00, 0x38, 0x79, 0x00, 0x08, 0x48, 0x80, 0x08, 0x84, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x1C, 0x7E, 0x00, 0x3A, 0x02, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x21, 0x00, 0x09, 0x50, 0x80, 0x09, 0x42, 0x80, 0x0A, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A6A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x70, 0x92, 0x00, 0x11, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7D, 0x11, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x55, 0x00, 0x39, 0xBB, 0x00, 0x35, 0x11, 0x00, 0x51, 0xBB, 0x00, 0x51, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A6B, { 0x00, 0x00, 0x00, 0x0E, 0x24, 0x00, 0x39, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x48, 0x00, 0x3E, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x1A, 0xFF, 0x00, 0x1C, 0x90, 0x00, 0x3A, 0xFF, 0x00, 0x28, 0x90, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x42, 0x00, 0x08, 0x3C, 0x00, 0x0B, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A6D, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x0E, 0x7C, 0x00, 0x78, 0xC8, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x55, 0x00, 0x1A, 0x94, 0x80, 0x2A, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A70, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x38, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0xE7, 0x00, 0x3E, 0xA5, 0x00, 0x08, 0xE7, 0x00, 0x18, 0x24, 0x00, 0x1C, 0xFF, 0x00, 0x3A, 0x24, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x69, 0x00, 0x09, 0xC6, 0x00, 0x0E, 0x7A, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A74, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A75, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x03, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A76, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x10, 0x80, 0x22, 0x10, 0x80, 0x02, 0x11, 0x00, 0x04, 0x9F, 0x00, 0x08, 0x80, 0x00, 0x37, 0xF8, 0x00, 0x00, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x80, 0x0C, 0x08, 0x80, 0x30, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A77, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x42, 0x22, 0x00, 0x06, 0x18, 0x00, 0x09, 0x08, 0x00, 0x01, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x44, 0x00, 0x08, 0x28, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A78, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x07, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x98, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A79, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0C, 0x1F, 0x00, 0x30, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A7A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x21, 0x10, 0x80, 0x02, 0x10, 0x00, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A7D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x11, 0x00, 0x06, 0x1F, 0x00, 0x3A, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A7E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A7F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0C, 0x0F, 0x00, 0x30, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x14, 0x00, 0x00, 0x24, 0x00, 0x00, 0xC4, 0x00, 0x07, 0x04, 0x00, 0x38, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A80, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x9F, 0x80, 0x70, 0x80, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A81, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A82, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x04, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x80, 0x00, 0x70, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A83, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x26, 0x21, 0x00, 0x1C, 0x3F, 0x80, 0x70, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1E, 0x21, 0x00, 0x70, 0x21, 0x00, 0x10, 0x21, 0x00, 0x12, 0x61, 0x00, 0x0E, 0x43, 0x00, 0x00, 0xC2, 0x00, 0x03, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A84, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0D, 0x1F, 0x00, 0x32, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A85, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x06, 0x20, 0x00, 0x1C, 0x3F, 0x80, 0x70, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A86, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0x33, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A88, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x11, 0x00, 0x06, 0x1F, 0x00, 0x38, 0x08, 0x00, 0x04, 0x08, 0x00, 0x05, 0x08, 0x00, 0x29, 0x3F, 0x00, 0x12, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x08, 0x91, 0x00, 0x13, 0xD1, 0x00, 0x3C, 0xA1, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A8A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x94, 0x00, 0x18, 0x96, 0x00, 0x10, 0xFA, 0x00, 0x37, 0x8B, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A8B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A8D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x44, 0x1A, 0x00, 0x08, 0x08, 0x00, 0x01, 0xFE, 0x00, 0x3F, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0x04, 0x00, 0x3C, 0x44, 0x00, 0x10, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A90, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A91, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x72, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x38, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A92, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x06, 0x11, 0x00, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x02, 0x3E, 0x00, 0x1F, 0xC1, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A93, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0C, 0x1F, 0x00, 0x31, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x7C, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x0A, 0x02, 0x80, 0x13, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A94, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x3A, 0x17, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7A95, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x38, 0x00, 0x00, 0x01, 0x11, 0x00, 0x11, 0x12, 0x00, 0x09, 0x14, 0x00, 0x05, 0x10, 0x00, 0x03, 0x18, 0x00, 0x0D, 0x14, 0x00, 0x31, 0x13, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x0F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A96, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2E, 0x11, 0x00, 0x78, 0x9F, 0x80, 0x04, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A97, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x24, 0x11, 0x00, 0x18, 0x9F, 0x80, 0x61, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x12, 0xF2, 0x00, 0x11, 0x12, 0x00, 0x12, 0xA2, 0x00, 0x10, 0xC2, 0x00, 0x17, 0x22, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A98, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x22, 0x80, 0x02, 0x3E, 0x00, 0x0C, 0x00, 0x00, 0x37, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A9C, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x4C, 0x9A, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A9D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x44, 0x12, 0x00, 0x0F, 0xF8, 0x00, 0x14, 0x14, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x11, 0x44, 0x00, 0x16, 0x34, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A9E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x0F, 0x80, 0x72, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x18, 0x1E, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7A9F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x06, 0x1F, 0x00, 0x38, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AA0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x78, 0x0F, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0E, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AA3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x1C, 0x1F, 0x80, 0x70, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x1B, 0x36, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AA5, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x44, 0x12, 0x00, 0x04, 0x7C, 0x00, 0x1F, 0x44, 0x00, 0x04, 0x54, 0x00, 0x04, 0x54, 0x00, 0x3F, 0x54, 0x00, 0x04, 0x54, 0x00, 0x04, 0x18, 0x00, 0x0A, 0x29, 0x00, 0x09, 0x29, 0x00, 0x10, 0x47, 0x00, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AA6, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x48, 0x8A, 0x00, 0x17, 0xF4, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x42, 0x00, 0x02, 0x44, 0x00, 0x09, 0x40, 0x00, 0x04, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AA8, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x49, 0x0A, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AA9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0C, 0x1F, 0x00, 0x37, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x08, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x08, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AAA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0C, 0x1F, 0x00, 0x30, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AAC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x7B, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x0E, 0x1C, 0x00, 0x7B, 0xF7, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x12, 0x00, 0x19, 0x36, 0x00, 0x17, 0x24, 0x00, 0x19, 0x24, 0x00, 0x17, 0x36, 0x00, 0x11, 0x12, 0x00, 0x13, 0x12, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AAD, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x48, 0x8A, 0x00, 0x14, 0x94, 0x00, 0x02, 0xA0, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x18, 0x8C, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x07, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x38, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AAE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x11, 0x00, 0x0D, 0x1F, 0x00, 0x3F, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x0F, 0x81, 0x00, 0x08, 0x9F, 0x00, 0x0F, 0x90, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0xA0, 0x80, 0x03, 0x80, 0x80, 0x0C, 0x81, 0x00, 0x31, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AAF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x02, 0x1F, 0x00, 0x0E, 0x08, 0x00, 0x31, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AB0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2C, 0x11, 0x00, 0x71, 0x1F, 0x80, 0x07, 0xF8, 0x00, 0x3C, 0x90, 0x00, 0x02, 0x60, 0x00, 0x03, 0x80, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AB3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x78, 0x1F, 0x80, 0x01, 0x82, 0x00, 0x1E, 0x3C, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0xAA, 0x00, 0x14, 0xEA, 0x00, 0x15, 0x2A, 0x00, 0x37, 0x6E, 0x80, 0x2D, 0x5B, 0x80, 0x60, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AB5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x1F, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AB6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x9F, 0x80, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AB9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x3E, 0x7E, 0x00, 0x02, 0x22, 0x00, 0x02, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x32, 0x41, 0x00, 0x22, 0x41, 0x00, 0x62, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ABA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x06, 0x11, 0x00, 0x38, 0x1F, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x1F, 0x22, 0x00, 0x04, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xBE, 0x00, 0x04, 0x22, 0x00, 0x0A, 0x3E, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x24, 0x80, 0x21, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7ABB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x9F, 0x80, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x12, 0xF2, 0x00, 0x17, 0x12, 0x00, 0x10, 0xA2, 0x00, 0x17, 0xC2, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x40, 0x00, 0x32, 0x25, 0x80, 0x61, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7ABC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x09, 0x00, 0x7C, 0x8F, 0x80, 0x11, 0x10, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0E, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7ABF, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x1F, 0x80, 0x00, 0x20, 0x00, 0x3C, 0x7E, 0x00, 0x25, 0xC4, 0x00, 0x24, 0x38, 0x00, 0x28, 0xEE, 0x00, 0x2B, 0xBB, 0x80, 0x24, 0x50, 0x00, 0x24, 0xFE, 0x00, 0x25, 0x10, 0x00, 0x2C, 0xFE, 0x00, 0x20, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AC3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x7B, 0xEF, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AC4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x11, 0x80, 0x06, 0x1F, 0x00, 0x39, 0x80, 0x00, 0x0E, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x32, 0x00, 0x09, 0x2A, 0x00, 0x0A, 0x32, 0x00, 0x09, 0x2A, 0x80, 0x0F, 0xBF, 0x80, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AC5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x06, 0x11, 0x00, 0x38, 0x1F, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1F, 0x80, 0x11, 0x21, 0x00, 0x1F, 0x52, 0x00, 0x04, 0x94, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x8C, 0x00, 0x08, 0x92, 0x00, 0x11, 0x21, 0x00, 0x26, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AC6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x1F, 0x80, 0x08, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x05, 0x41, 0x00, 0x19, 0x41, 0x00, 0x61, 0x41, 0x00, 0x07, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AC7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x1E, 0x5F, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AC8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x7B, 0xEF, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AC9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x7C, 0x1F, 0x80, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x11, 0x20, 0x00, 0x0A, 0x3F, 0x00, 0x7F, 0xC1, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x20, 0x80, 0x13, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7ACA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x11, 0x00, 0x06, 0x1F, 0x00, 0x38, 0x08, 0x00, 0x03, 0x0F, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xAD, 0x00, 0x0C, 0x33, 0x00, 0x0E, 0x7F, 0x80, 0x15, 0x4A, 0x80, 0x14, 0x57, 0x80, 0x24, 0x78, 0x80, 0x04, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7ACB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ACC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x00, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x32, 0x24, 0x00, 0x16, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x07, 0x24, 0x00, 0x1C, 0x64, 0x00, 0x70, 0x44, 0x80, 0x00, 0xC4, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7ACD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x16, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x07, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x70, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ACE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ACF, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x07, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x70, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AD1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x32, 0x34, 0x00, 0x16, 0x24, 0x00, 0x14, 0x2C, 0x00, 0x14, 0x68, 0x00, 0x07, 0x49, 0x00, 0x1C, 0xD9, 0x00, 0x70, 0x11, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AD2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AD3, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x38, 0x10, 0x00, 0x60, 0x10, 0x80, 0x00, 0x19, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AD5, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x66, 0x00, 0x00, 0x42, 0x00, 0x24, 0xC3, 0x00, 0x25, 0x81, 0x80, 0x24, 0x7E, 0x00, 0x2C, 0x12, 0x00, 0x28, 0x12, 0x00, 0x08, 0x12, 0x00, 0x0E, 0x32, 0x00, 0x38, 0x22, 0x00, 0x60, 0x66, 0x00, 0x00, 0xC4, 0x00, 0x01, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AD6, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0x44, 0x00, 0x12, 0x28, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x47, 0x00, 0x03, 0x82, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AD7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x29, 0x00, 0x3E, 0x48, 0x80, 0x00, 0x48, 0x00, 0x22, 0x88, 0x00, 0x22, 0x08, 0x80, 0x14, 0x08, 0x80, 0x14, 0x09, 0x00, 0x00, 0x39, 0x00, 0x07, 0x02, 0x00, 0x38, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AD9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x8F, 0x80, 0x00, 0x08, 0x00, 0x21, 0x08, 0x00, 0x11, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x41, 0x00, 0x07, 0xC1, 0x00, 0x38, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ADA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x80, 0x80, 0x00, 0x80, 0x80, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x16, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x07, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x70, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ADB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x22, 0x3E, 0x00, 0x22, 0x00, 0x00, 0x32, 0x00, 0x00, 0x16, 0x7F, 0x00, 0x14, 0x11, 0x00, 0x14, 0x11, 0x00, 0x07, 0x11, 0x00, 0x1C, 0x11, 0x00, 0x70, 0x17, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ADC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x80, 0x00, 0x81, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ADD, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x21, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x11, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x38, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ADE, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x0A, 0x28, 0x00, 0x02, 0x20, 0x00, 0x02, 0x21, 0x00, 0x04, 0x21, 0x00, 0x38, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ADF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AE0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AE1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x18, 0x00, 0x00, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x32, 0x41, 0x00, 0x16, 0x41, 0x00, 0x14, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x07, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x70, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AE2, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x7E, 0x8F, 0x00, 0x01, 0xF9, 0x80, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFF, 0x00, 0x2D, 0x90, 0x00, 0x28, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x28, 0x00, 0x38, 0x6C, 0x00, 0x60, 0x46, 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AE3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x9F, 0x80, 0x01, 0xE4, 0x80, 0x22, 0x24, 0x00, 0x22, 0x44, 0x80, 0x15, 0xA7, 0x80, 0x14, 0x20, 0x00, 0x14, 0x7F, 0x00, 0x04, 0xC2, 0x00, 0x07, 0x24, 0x00, 0x3A, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0xC6, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AE5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AE6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x2C, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x54, 0x00, 0x0E, 0x54, 0x00, 0x38, 0xD6, 0x00, 0x61, 0x93, 0x00, 0x03, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AE8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x2C, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AE9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x00, 0x80, 0x01, 0x00, 0x80, 0x24, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x2C, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0E, 0x7E, 0x00, 0x38, 0x42, 0x00, 0x60, 0x42, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x8A, 0x00, 0x10, 0x8C, 0x00, 0x1F, 0x84, 0x00, 0x14, 0x0A, 0x00, 0x1F, 0xB1, 0x80, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AEB, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xF2, 0x00, 0x7E, 0x53, 0x00, 0x00, 0x89, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x2D, 0xFF, 0x80, 0x28, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AEC, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF0, 0x00, 0x7E, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x2C, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x09, 0x10, 0x80, 0x0F, 0x14, 0x80, 0x39, 0x1E, 0x80, 0x61, 0x72, 0x80, 0x01, 0x00, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x10, 0x00, 0x22, 0x20, 0x00, 0x12, 0x7F, 0x80, 0x14, 0xC8, 0x80, 0x15, 0x54, 0x80, 0x14, 0x62, 0x80, 0x04, 0x40, 0x80, 0x07, 0x7F, 0x80, 0x38, 0x40, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AEF, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x14, 0x10, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x94, 0x80, 0x07, 0x94, 0x80, 0x38, 0x94, 0x80, 0x00, 0x94, 0x80, 0x00, 0x94, 0x80, 0x00, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AF0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x01, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x2D, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x39, 0x7F, 0x00, 0x61, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AF1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x2C, 0xFF, 0x00, 0x28, 0x12, 0x00, 0x08, 0x3F, 0x00, 0x0E, 0xE1, 0x80, 0x38, 0x02, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AF4, { 0x00, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xC3, 0x00, 0x09, 0xBD, 0x80, 0x7E, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xC7, 0x00, 0x24, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x02, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x42, 0x00, 0x00, 0x22, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AF6, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x13, 0xA4, 0x80, 0x2C, 0x44, 0x80, 0x20, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AF8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x35, 0x34, 0x80, 0x26, 0x24, 0x80, 0x64, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7AF9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x24, 0x24, 0x00, 0x24, 0x44, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AFA, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AFB, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x01, 0x82, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x04, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AFD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xBF, 0x80, 0x24, 0x48, 0x00, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AFE, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x44, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4E, 0x00, 0x09, 0xFA, 0x00, 0x0F, 0x42, 0x00, 0x78, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4E, 0x00, 0x08, 0x00, 0x80, 0x0C, 0x01, 0x80, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7AFF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B02, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x0D, 0x08, 0x00, 0x07, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0x08, 0x80, 0x0D, 0x89, 0x80, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B03, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B04, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xD0, 0x00, 0x62, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B06, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B07, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x84, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B08, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xBF, 0x80, 0x34, 0x48, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x02, 0x1F, 0x00, 0x07, 0x06, 0x00, 0x05, 0x8C, 0x00, 0x0C, 0xD8, 0x00, 0x18, 0x70, 0x00, 0x30, 0xD8, 0x00, 0x63, 0x8E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B0A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xD0, 0x00, 0x66, 0x18, 0x00, 0x02, 0x0E, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x18, 0x86, 0x00, 0x10, 0x82, 0x00, 0x30, 0x83, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B0B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xD0, 0x00, 0x62, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B0F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x49, 0x00, 0x10, 0x89, 0x00, 0x21, 0x11, 0x00, 0x02, 0x11, 0x00, 0x0C, 0x21, 0x00, 0x30, 0x41, 0x00, 0x00, 0x82, 0x00, 0x03, 0x04, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B11, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B14, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B15, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x09, 0x48, 0x00, 0x02, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B18, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B19, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B1B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B1E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x46, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B1F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xD0, 0x00, 0x66, 0x18, 0x00, 0x02, 0x0E, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x94, 0x00, 0x18, 0x96, 0x00, 0x10, 0xFA, 0x00, 0x37, 0x8B, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B20, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B23, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x30, 0x02, 0x00, 0x6F, 0xE2, 0x00, 0x08, 0x22, 0x00, 0x08, 0x26, 0x00, 0x0F, 0xE4, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x00, 0x80, 0x0C, 0x01, 0x80, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B24, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x08, 0x00, 0x02, 0x28, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x68, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B25, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x34, 0x48, 0x00, 0x66, 0x8C, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xF1, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xF1, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x1F, 0xF1, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B26, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x22, 0x44, 0x00, 0x01, 0x02, 0x00, 0x04, 0x04, 0x00, 0x04, 0x06, 0x00, 0x08, 0x05, 0x00, 0x1B, 0xFF, 0x80, 0x18, 0x04, 0x00, 0x28, 0x84, 0x00, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B27, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B28, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x84, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x04, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x77, 0xFB, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B29, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x0C, 0x26, 0x00, 0x18, 0x22, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x10, 0x30, 0x00, 0x10, 0x18, 0x00, 0x10, 0x0C, 0x80, 0x10, 0x07, 0x80, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B2A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B2B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x84, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x81, 0x00, 0x06, 0x81, 0x00, 0x1C, 0x83, 0x00, 0x70, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B2C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xC0, 0x80, 0x01, 0x40, 0x80, 0x02, 0x40, 0x80, 0x0C, 0x43, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B2D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B2E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x1C, 0x80, 0x00, 0x70, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B2F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x7F, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xB3, 0x00, 0x19, 0x92, 0x00, 0x11, 0x1E, 0x00, 0x3F, 0x0C, 0x00, 0x05, 0x9E, 0x00, 0x18, 0xB3, 0x00, 0x70, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B30, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x06, 0x21, 0x00, 0x0C, 0x23, 0x00, 0x38, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B31, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x37, 0xF1, 0x00, 0x64, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x07, 0xF3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B33, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x91, 0x00, 0x04, 0x91, 0x00, 0x04, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x08, 0x91, 0x00, 0x19, 0x91, 0x00, 0x31, 0x1F, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B34, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B35, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x30, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x60, 0x81, 0x00, 0x30, 0x81, 0x00, 0x04, 0x87, 0x00, 0x0C, 0x80, 0x00, 0x18, 0x80, 0x80, 0x30, 0xC1, 0x80, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B36, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B38, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0xF8, 0x00, 0x12, 0x08, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B39, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B3A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x24, 0x00, 0x1F, 0x7E, 0x00, 0x24, 0x10, 0x00, 0x01, 0x40, 0x00, 0x01, 0x28, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x03, 0xA2, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B3C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x01, 0x20, 0x00, 0x01, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x01, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x50, 0x00, 0x04, 0x61, 0x00, 0x04, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x13, 0x3F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B3D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B3E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x10, 0x40, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFE, 0x00, 0x38, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x14, 0x00, 0x16, 0x08, 0x00, 0x22, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B3F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x18, 0x00, 0x3B, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B40, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B41, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x32, 0xC8, 0x00, 0x61, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B45, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B46, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B47, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4C, 0x00, 0x08, 0x42, 0x00, 0x08, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x78, 0x41, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B48, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0x50, 0x00, 0x62, 0x88, 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B49, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B4B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x26, 0x00, 0x23, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B4C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x06, 0x06, 0x00, 0x3F, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B4D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x13, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x03, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x03, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B4E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x19, 0x91, 0x00, 0x11, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x05, 0x91, 0x00, 0x18, 0xDF, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B4F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x04, 0x50, 0x00, 0x04, 0x48, 0x00, 0x08, 0x4F, 0x80, 0x1B, 0xF0, 0x00, 0x18, 0x21, 0x00, 0x28, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x00, 0x08, 0x28, 0x80, 0x08, 0xC6, 0x80, 0x0B, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B50, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B51, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x04, 0x32, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x22, 0x00, 0x07, 0xC2, 0x80, 0x38, 0x42, 0x80, 0x00, 0x83, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B52, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xFD, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B54, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x02, 0x42, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B55, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0D, 0xFF, 0x80, 0x38, 0x04, 0x00, 0x68, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B56, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0xE1, 0x00, 0x09, 0x53, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B58, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7F, 0x7F, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x07, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B5A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x08, 0x40, 0x00, 0x0F, 0x4C, 0x00, 0x08, 0x70, 0x00, 0x08, 0x42, 0x00, 0x0F, 0x7E, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B5B, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x04, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x08, 0x9A, 0x00, 0x08, 0x94, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B5D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x07, 0xF0, 0x00, 0x0C, 0x20, 0x00, 0x30, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B60, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x22, 0x44, 0x00, 0x09, 0x22, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x3F, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x08, 0x79, 0x00, 0x08, 0x01, 0x00, 0x0F, 0x1D, 0x00, 0x38, 0xE2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B62, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x04, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x92, 0x00, 0x06, 0x92, 0x00, 0x0C, 0xFE, 0x00, 0x34, 0x82, 0x00, 0x04, 0x80, 0x00, 0x04, 0x81, 0x00, 0x14, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B64, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x23, 0x00, 0x08, 0x36, 0x00, 0x08, 0x18, 0x00, 0x0F, 0x8E, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B65, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B66, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B67, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x80, 0x0E, 0x11, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B69, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x20, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B6A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B6C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x41, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x24, 0x00, 0x11, 0x18, 0x00, 0x11, 0x18, 0x00, 0x16, 0x24, 0x80, 0x20, 0xC2, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B6D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B6E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B6F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x31, 0x00, 0x11, 0x21, 0x00, 0x17, 0xA1, 0x00, 0x7C, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B70, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xBF, 0x80, 0x34, 0x68, 0x00, 0x62, 0x04, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0xFF, 0x80, 0x19, 0xA0, 0x00, 0x3B, 0x20, 0x00, 0x68, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B71, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x12, 0x3F, 0x80, 0x32, 0x62, 0x00, 0x72, 0xD2, 0x00, 0x12, 0x16, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x10, 0x36, 0x00, 0x10, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B72, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x88, 0x00, 0x08, 0x84, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B73, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x06, 0x00, 0x7E, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x2C, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B74, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x1D, 0xDC, 0x00, 0x35, 0x56, 0x00, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B75, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x07, 0x00, 0x02, 0x78, 0x00, 0x04, 0x08, 0x00, 0x08, 0x48, 0x00, 0x1E, 0x4F, 0x00, 0x02, 0x48, 0x00, 0x22, 0x48, 0x00, 0x15, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B77, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFE, 0x00, 0x2C, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x68, 0x22, 0x00, 0x4B, 0xFF, 0x80, 0x08, 0x50, 0x00, 0x08, 0x58, 0x00, 0x08, 0xCC, 0x00, 0x09, 0x86, 0x00, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B79, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x12, 0x08, 0x00, 0x21, 0x08, 0x00, 0x01, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B7A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x10, 0x28, 0x00, 0x10, 0x24, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B7B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x22, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x14, 0x84, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x06, 0x70, 0x00, 0x38, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B7D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B7E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x27, 0x00, 0x67, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x04, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B80, { 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x48, 0x04, 0x00, 0x15, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B84, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B85, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B86, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x68, 0xC8, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x11, 0x62, 0x00, 0x16, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x10, 0x23, 0x00, 0x1F, 0x2E, 0x00, 0x10, 0x38, 0x00, 0x10, 0x20, 0x80, 0x1F, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B87, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFD, 0x00, 0x10, 0x41, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B89, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x1C, 0x3F, 0x00, 0x70, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x61, 0x00, 0x10, 0xC1, 0x00, 0x33, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B8B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x52, 0x00, 0x00, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x88, 0x00, 0x00, 0x70, 0x00, 0x03, 0x90, 0x80, 0x3C, 0x4F, 0x80, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0x28, 0x00, 0x01, 0xF0, 0x80, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B8D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x66, 0x0C, 0x00, 0x02, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7E, 0x88, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA9, 0x00, 0x0E, 0xA9, 0x00, 0x78, 0xAB, 0x00, 0x08, 0x88, 0x00, 0x08, 0x80, 0x00, 0x18, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B8E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x88, 0x00, 0x02, 0x44, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xF8, 0x00, 0x17, 0x82, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x31, 0x10, 0x00, 0x21, 0x10, 0x80, 0x63, 0x19, 0x80, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B8F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xE2, 0x00, 0x08, 0x11, 0x00, 0x10, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B90, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B91, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x1C, 0x80, 0x00, 0x36, 0x80, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B92, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x84, 0x00, 0x08, 0x8C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B94, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x08, 0x00, 0x10, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x20, 0x81, 0x00, 0x10, 0x81, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B95, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B96, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x0D, 0x1C, 0x00, 0x14, 0xAA, 0x00, 0x34, 0x6B, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B97, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B98, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0xA1, 0x00, 0x26, 0xB1, 0x00, 0x2C, 0x9D, 0x00, 0x20, 0x81, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B99, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x51, 0x00, 0x12, 0x5B, 0x00, 0x1E, 0x4A, 0x00, 0x12, 0x4E, 0x00, 0x12, 0x44, 0x00, 0x32, 0x4F, 0x00, 0x26, 0x59, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B9A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x09, 0x09, 0x00, 0x30, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x1F, 0x81, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B9B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x0F, 0x00, 0x7D, 0xFA, 0x00, 0x05, 0x02, 0x00, 0x09, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x22, 0x00, 0x71, 0x22, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2B, 0x00, 0x13, 0x3D, 0x00, 0x12, 0xE5, 0x00, 0x76, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B9C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x7C, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7B9D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x38, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x18, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B9E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x08, 0x84, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x1C, 0x16, 0x00, 0x74, 0x13, 0x80, 0x04, 0x70, 0x00, 0x04, 0x02, 0x00, 0x06, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7B9F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x08, 0x26, 0x00, 0x0F, 0xBC, 0x00, 0x08, 0x20, 0x80, 0x0F, 0xA1, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BA0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x1C, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BA1, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BA2, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x47, 0x7A, 0x00, 0x09, 0x48, 0x00, 0x09, 0x48, 0x00, 0x19, 0x48, 0x00, 0x26, 0x68, 0x00, 0x04, 0x50, 0x00, 0x08, 0x41, 0x00, 0x10, 0x41, 0x00, 0x20, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BA5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x08, 0x00, 0x30, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x09, 0x08, 0x80, 0x61, 0x08, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x41, 0x00, 0x09, 0x63, 0x00, 0x1B, 0x36, 0x00, 0x12, 0x1C, 0x00, 0x36, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BA6, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x09, 0x68, 0x00, 0x02, 0x18, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BA7, { 0x00, 0x00, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x62, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x48, 0x00, 0x17, 0xFC, 0x00, 0x12, 0x48, 0x00, 0x11, 0x50, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x18, 0x00, 0x12, 0x0A, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BA8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xBF, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x70, 0x00, 0x08, 0x88, 0x00, 0x09, 0x27, 0x00, 0x0E, 0xFA, 0x00, 0x78, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x28, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BA9, { 0x00, 0x00, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xBF, 0x00, 0x28, 0x50, 0x00, 0x44, 0x8A, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x14, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BAA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x50, 0x00, 0x42, 0x08, 0x00, 0x10, 0x82, 0x00, 0x08, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BAB, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x12, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0x8C, 0x00, 0x18, 0x8C, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BAC, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x02, 0x00, 0x74, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BAD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x81, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x21, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BAF, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xB0, 0x00, 0x10, 0x60, 0x00, 0x13, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BB0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x0A, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x70, 0x01, 0x00, 0x07, 0xF9, 0x00, 0x04, 0x09, 0x00, 0x07, 0xF9, 0x00, 0x04, 0x0B, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BB1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x0E, 0x3F, 0x00, 0x0D, 0x21, 0x00, 0x14, 0xA1, 0x00, 0x14, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BB2, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x10, 0x00, 0x30, 0x90, 0x00, 0x18, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x63, 0x10, 0x00, 0x30, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xC4, 0x80, 0x31, 0x84, 0x80, 0x63, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BB4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x21, 0x41, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x1F, 0xF1, 0x00, 0x10, 0x11, 0x00, 0x17, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x8C, 0x00, 0x17, 0x88, 0x00, 0x24, 0x94, 0x80, 0x20, 0x62, 0x80, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BB5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x04, 0x8E, 0x00, 0x1C, 0x83, 0x80, 0x73, 0x98, 0x00, 0x00, 0x60, 0x00, 0x0F, 0xFE, 0x00, 0x78, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BB6, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0x31, 0x00, 0x1F, 0x21, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BB8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x21, 0x61, 0x00, 0x00, 0x42, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x68, 0x00, 0x01, 0x84, 0x00, 0x07, 0xFE, 0x00, 0x3A, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BBA, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x0B, 0x80, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BBB, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x11, 0x00, 0x63, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BBC, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x02, 0x00, 0x12, 0x3F, 0x00, 0x17, 0xE1, 0x00, 0x30, 0x20, 0x00, 0x23, 0xFE, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BBD, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BC0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x10, 0x11, 0x00, 0x13, 0x91, 0x00, 0x1C, 0x11, 0x00, 0x10, 0x57, 0x00, 0x1F, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BC1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BC2, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x30, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BC4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0xA7, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x80, 0x3F, 0xA0, 0x80, 0x04, 0x3F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BC5, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x84, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BC6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x22, 0x00, 0x0C, 0xD4, 0x00, 0x31, 0x28, 0x00, 0x06, 0x54, 0x00, 0x39, 0x92, 0x00, 0x0E, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BC7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x88, 0x80, 0x18, 0x88, 0x80, 0x1F, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BC8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xB2, 0x00, 0x04, 0x12, 0x00, 0x04, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x78, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BC9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x04, 0x32, 0x80, 0x07, 0xAB, 0x80, 0x3C, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BCA, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x30, 0x44, 0x00, 0x18, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x60, 0x44, 0x00, 0x30, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x10, 0x44, 0x00, 0x30, 0xC6, 0x00, 0x61, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BCB, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x15, 0x54, 0x00, 0x10, 0xE0, 0x00, 0x11, 0xB8, 0x00, 0x17, 0x0E, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BCC, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x04, 0x00, 0x00, 0x0C, 0xFC, 0x00, 0x18, 0x04, 0x00, 0x33, 0xFF, 0x80, 0x70, 0x80, 0x00, 0x10, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BCF, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x00, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x3F, 0x80, 0x7F, 0xE0, 0x80, 0x11, 0x49, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x1C, 0x00, 0x11, 0x14, 0x00, 0x11, 0x36, 0x00, 0x1F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BD1, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x20, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x03, 0x30, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BD2, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x70, 0x00, 0x06, 0x8C, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x42, 0x00, 0x04, 0x34, 0x00, 0x05, 0xE8, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BD3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA4, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x06, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x02, 0x30, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BD4, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BD6, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x44, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x30, 0x20, 0x00, 0x23, 0xFE, 0x00, 0x62, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BD7, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x1C, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BD9, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xFB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BDA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x17, 0x9E, 0x00, 0x10, 0x90, 0x00, 0x17, 0x9E, 0x00, 0x10, 0x90, 0x00, 0x17, 0x9E, 0x00, 0x10, 0x90, 0x00, 0x11, 0x90, 0x00, 0x13, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BDB, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x7F, 0x7F, 0x00, 0x01, 0x01, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x09, 0x09, 0x00, 0x31, 0x31, 0x00, 0x47, 0x47, 0x00, 0x19, 0x19, 0x00, 0x63, 0x63, 0x00, 0x02, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BDD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x14, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BE0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x10, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x31, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x84, 0x00, 0x19, 0x1B, 0x00, 0x29, 0x64, 0x80, 0x09, 0x7F, 0x80, 0x09, 0x0C, 0x00, 0x09, 0x16, 0x00, 0x09, 0x25, 0x00, 0x08, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BE1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x2F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x05, 0x10, 0x00, 0x19, 0x4F, 0x00, 0x62, 0x22, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BE4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x08, 0x80, 0x02, 0x24, 0x80, 0x11, 0x11, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BE5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BE6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0x48, 0x00, 0x62, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x08, 0x26, 0x00, 0x0F, 0xBC, 0x00, 0x08, 0x20, 0x80, 0x0F, 0xA1, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BE8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x6C, 0x00, 0x24, 0xC6, 0x00, 0x29, 0x83, 0x00, 0x2B, 0x7D, 0x80, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x2C, 0x92, 0x00, 0x21, 0x93, 0x00, 0x23, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BE9, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x04, 0x00, 0x00, 0x08, 0x3F, 0x80, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x24, 0x80, 0x10, 0x24, 0x80, 0x1F, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x1F, 0xA5, 0x80, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BEA, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x00, 0x20, 0x7E, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x28, 0xF8, 0x00, 0x2B, 0x82, 0x00, 0x68, 0xFE, 0x00, 0x48, 0x90, 0x80, 0x51, 0x99, 0x80, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BED, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xBF, 0x80, 0x34, 0x48, 0x00, 0x62, 0x04, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BEE, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x42, 0x40, 0x00, 0x12, 0x7E, 0x00, 0x12, 0xA0, 0x00, 0x13, 0x10, 0x00, 0x12, 0x10, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BF1, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x28, 0x00, 0x09, 0xC8, 0x00, 0x0A, 0x28, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x13, 0xF4, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BF2, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BF3, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BF4, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x30, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x68, 0x40, 0x00, 0x31, 0xA1, 0x00, 0x12, 0x53, 0x00, 0x01, 0x9A, 0x00, 0x7A, 0x34, 0x00, 0x08, 0xD2, 0x00, 0x0B, 0x11, 0x80, 0x18, 0x70, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BF5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x31, 0x45, 0x00, 0x63, 0x6D, 0x80, 0x08, 0x00, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x70, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x11, 0x90, 0x00, 0x13, 0x50, 0x00, 0x16, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BF6, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BF7, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x24, 0x00, 0x30, 0x7E, 0x00, 0x19, 0xC4, 0x00, 0x00, 0x38, 0x00, 0x30, 0x6E, 0x00, 0x1B, 0x93, 0x80, 0x00, 0xFE, 0x00, 0x70, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7BF8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x3F, 0x80, 0x64, 0xE4, 0x00, 0x09, 0x12, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x12, 0x22, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x0C, 0x6C, 0x00, 0x77, 0x83, 0x80, 0x00, 0x70, 0x00, 0x07, 0x84, 0x00, 0x00, 0x38, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BF9, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x0C, 0x00, 0x1F, 0xFA, 0x00, 0x68, 0x01, 0x80, 0x08, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BFA, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x24, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BFC, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x80, 0x00, 0x3B, 0xF7, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3B, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7BFE, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x1A, 0x00, 0x17, 0xCE, 0x00, 0x30, 0x1C, 0x80, 0x20, 0x76, 0x80, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C00, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x48, 0x00, 0x02, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C01, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x10, 0x00, 0x18, 0x90, 0x00, 0x30, 0x9F, 0x00, 0x60, 0x90, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x70, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x11, 0x90, 0x00, 0x13, 0x50, 0x00, 0x16, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C02, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x25, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x21, 0x00, 0x27, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x27, 0xA9, 0x00, 0x20, 0x15, 0x00, 0x2F, 0xB5, 0x00, 0x20, 0x49, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C03, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x03, 0x10, 0x00, 0x0E, 0x3F, 0x00, 0x78, 0x63, 0x00, 0x08, 0xD6, 0x00, 0x7F, 0x0C, 0x00, 0x08, 0x78, 0x00, 0x1C, 0x0F, 0x80, 0x1A, 0x18, 0x80, 0x29, 0x75, 0x80, 0x48, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C04, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x07, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x04, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x22, 0x00, 0x37, 0xFE, 0x00, 0x24, 0x00, 0x80, 0x66, 0x01, 0x80, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C06, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x92, 0x00, 0x12, 0x22, 0x00, 0x12, 0x74, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x36, 0x80, 0x33, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C07, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x90, 0x00, 0x0F, 0x20, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x88, 0x00, 0x09, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x12, 0x22, 0x00, 0x2C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C09, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x30, 0x90, 0x00, 0x18, 0xFF, 0x00, 0x69, 0x10, 0x00, 0x30, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C0B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x64, 0x00, 0x0F, 0x18, 0x00, 0x78, 0x07, 0x80, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C0C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xA0, 0x80, 0x24, 0xC9, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x15, 0x16, 0x00, 0x64, 0xB3, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C0D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x48, 0x00, 0x02, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C0E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1C, 0xFE, 0x00, 0x70, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C0F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x33, 0xDE, 0x00, 0x22, 0x10, 0x80, 0x67, 0xD1, 0x80, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C11, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x48, 0x00, 0x02, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFD, 0x00, 0x02, 0x23, 0x00, 0x0C, 0x32, 0x00, 0x77, 0x9C, 0x00, 0x0C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C12, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x27, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x09, 0x16, 0x00, 0x32, 0x79, 0x80, 0x0F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C13, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7F, 0x80, 0x34, 0xC8, 0x00, 0x62, 0x04, 0x00, 0x1F, 0xC1, 0x00, 0x10, 0x43, 0x00, 0x12, 0x46, 0x00, 0x17, 0x5D, 0x00, 0x12, 0x43, 0x00, 0x17, 0x46, 0x00, 0x12, 0x5C, 0x80, 0x17, 0x41, 0x80, 0x35, 0x43, 0x00, 0x27, 0x46, 0x00, 0x60, 0xDC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C14, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x48, 0x00, 0x02, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x21, 0x00, 0x0C, 0x32, 0x00, 0x77, 0x9C, 0x00, 0x0C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C16, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0x88, 0x00, 0x04, 0x06, 0x00, 0x35, 0x78, 0x00, 0x2E, 0x40, 0x00, 0x24, 0x42, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x48, 0x00, 0x2C, 0x48, 0x00, 0x35, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3F, 0x48, 0x00, 0x00, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C17, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC4, 0x00, 0x02, 0x02, 0x00, 0x30, 0xFC, 0x00, 0x18, 0x24, 0x00, 0x61, 0x65, 0x00, 0x2A, 0x44, 0x80, 0x18, 0xC4, 0x00, 0x31, 0x9C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x0C, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C19, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x12, 0x15, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C1B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x07, 0x00, 0x12, 0x3C, 0x00, 0x7F, 0xA0, 0x00, 0x12, 0x20, 0x00, 0x1E, 0x3F, 0x80, 0x12, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xA4, 0x00, 0x00, 0x44, 0x00, 0x12, 0x44, 0x00, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C1E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x24, 0x48, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C1F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C20, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x86, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C21, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x21, 0x22, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C23, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x48, 0x00, 0x02, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C25, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1B, 0xF6, 0x00, 0x62, 0x11, 0x80, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C26, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC6, 0x00, 0x01, 0x6C, 0x00, 0x33, 0x31, 0x80, 0x16, 0x1B, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x06, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C27, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x03, 0x4A, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C28, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x20, 0x00, 0x21, 0x21, 0x00, 0x1F, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C2A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x14, 0x00, 0x13, 0xA4, 0x80, 0x2E, 0x47, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C2B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x52, 0x00, 0x0F, 0x5E, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0x5E, 0x00, 0x11, 0x52, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C2C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x62, 0x00, 0x22, 0xD6, 0x00, 0x3E, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x2E, 0xE3, 0x80, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C31, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x10, 0x3E, 0x00, 0x1E, 0x22, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x22, 0x22, 0x00, 0x6E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C33, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x22, 0xBE, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C34, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x88, 0x00, 0x02, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0xF8, 0x00, 0x17, 0x02, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x14, 0x92, 0x00, 0x32, 0x94, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x90, 0x00, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C36, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x40, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x7C, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x54, 0x91, 0x00, 0x54, 0x52, 0x00, 0x54, 0x3A, 0x00, 0x54, 0x56, 0x00, 0x11, 0x91, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C37, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x68, 0x88, 0x00, 0x07, 0xF4, 0x00, 0x0C, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x12, 0x04, 0x00, 0x1C, 0xF7, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x27, 0xFE, 0x00, 0x64, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C38, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x68, 0xD0, 0x00, 0x00, 0x04, 0x00, 0x12, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x44, 0x80, 0x1E, 0x44, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x51, 0x00, 0x12, 0x5B, 0x00, 0x7F, 0xCE, 0x00, 0x14, 0x44, 0x00, 0x36, 0x8A, 0x00, 0x63, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C39, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x84, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C3A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x86, 0x00, 0x67, 0xF9, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C3D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x01, 0xB0, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x02, 0x08, 0x00, 0x06, 0x0C, 0x00, 0x09, 0x12, 0x00, 0x10, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C3E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x90, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x98, 0x00, 0x22, 0x96, 0x00, 0x2C, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C3F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x00, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x01, 0xFE, 0x00, 0x09, 0x22, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x09, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C40, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x88, 0x00, 0x12, 0x60, 0x00, 0x11, 0xDF, 0x00, 0x11, 0x05, 0x00, 0x7D, 0x45, 0x00, 0x11, 0xED, 0x00, 0x13, 0x1B, 0x00, 0x18, 0x00, 0x00, 0x70, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x30, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C41, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x14, 0x50, 0x00, 0x22, 0xA8, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBC, 0x00, 0x04, 0x48, 0x00, 0x1F, 0xFE, 0x00, 0x15, 0x42, 0x00, 0x15, 0x4A, 0x00, 0x1F, 0x4A, 0x00, 0x0C, 0x52, 0x00, 0x16, 0x5A, 0x00, 0x25, 0x24, 0x00, 0x44, 0x23, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C43, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x02, 0x02, 0x00, 0x1F, 0x88, 0x00, 0x12, 0x10, 0x00, 0x1F, 0xBF, 0x80, 0x10, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x12, 0x1F, 0x00, 0x1F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C46, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x68, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C4A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x7F, 0x7F, 0x00, 0x33, 0x33, 0x00, 0x4D, 0x4D, 0x00, 0x31, 0x31, 0x00, 0x44, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C4C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x21, 0x21, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x84, 0x00, 0x03, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C4D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x04, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x04, 0x7F, 0x80, 0x1F, 0x12, 0x00, 0x04, 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x0C, 0x3F, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C4F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x1E, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x32, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x6E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C50, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x54, 0x00, 0x3C, 0x92, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x28, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x92, 0x00, 0x3D, 0x55, 0x80, 0x24, 0x38, 0x00, 0x24, 0x56, 0x00, 0x65, 0x91, 0x80, 0x4C, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C51, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0x0C, 0x00, 0x17, 0xFA, 0x00, 0x64, 0x09, 0x80, 0x07, 0xF8, 0x00, 0x04, 0x26, 0x00, 0x07, 0x98, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C52, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x7E, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x08, 0xF7, 0x80, 0x08, 0x14, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C53, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x30, 0x0F, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x92, 0x00, 0x00, 0x54, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x54, 0x00, 0x00, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x92, 0x00, 0x60, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C54, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x8F, 0x80, 0x7F, 0xDA, 0x00, 0x24, 0xB2, 0x00, 0x3F, 0x8A, 0x00, 0x15, 0x0A, 0x00, 0x1F, 0x0E, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xCE, 0x00, 0x11, 0x0A, 0x00, 0x0E, 0x1B, 0x00, 0x71, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C55, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x30, 0x00, 0x08, 0xE7, 0x80, 0x7E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x18, 0xD5, 0x80, 0x1C, 0x24, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x48, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C56, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xD0, 0x00, 0x02, 0x0A, 0x00, 0x3F, 0xEB, 0x00, 0x02, 0x09, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x39, 0xC9, 0x00, 0x09, 0x0B, 0x00, 0x39, 0xCA, 0x00, 0x09, 0x0E, 0x00, 0x39, 0xC4, 0x00, 0x09, 0x0E, 0x80, 0x0F, 0xDA, 0x80, 0x78, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C58, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x00, 0x54, 0x00, 0x3C, 0x92, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x25, 0x91, 0x80, 0x3C, 0x24, 0x00, 0x24, 0x19, 0x00, 0x24, 0xFE, 0x80, 0x64, 0x52, 0x00, 0x4D, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C59, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x7F, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x2A, 0x00, 0x2A, 0x1C, 0x00, 0x2F, 0x2A, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C5A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x88, 0x00, 0x02, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x17, 0xF8, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x48, 0x00, 0x13, 0xF8, 0x00, 0x32, 0x48, 0x00, 0x27, 0xFE, 0x00, 0x64, 0x92, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C5B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x3F, 0x00, 0x16, 0xF4, 0x00, 0x20, 0x18, 0x00, 0x7E, 0x2C, 0x80, 0x08, 0xC7, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x4A, 0xF4, 0x00, 0x28, 0x18, 0x00, 0x1E, 0x2C, 0x80, 0x70, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C5C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1C, 0x44, 0x00, 0x73, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C5D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x3D, 0x1E, 0x00, 0x27, 0xD2, 0x00, 0x3D, 0x52, 0x00, 0x25, 0x5A, 0x00, 0x3D, 0x92, 0x80, 0x24, 0xD2, 0x80, 0x45, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C5E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x09, 0x07, 0x80, 0x19, 0xF4, 0x80, 0x72, 0x44, 0x80, 0x0B, 0xF4, 0x80, 0x19, 0x44, 0x80, 0x71, 0x75, 0x80, 0x13, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x73, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C5F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x09, 0x00, 0x08, 0x3B, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x3F, 0x00, 0x49, 0x21, 0x00, 0x7F, 0x39, 0x00, 0x18, 0x2F, 0x00, 0x3C, 0x21, 0x00, 0x2A, 0x3F, 0x00, 0x49, 0x12, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C60, { 0x00, 0x00, 0x00, 0x48, 0x08, 0x00, 0x5F, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x02, 0x00, 0x00, 0x5F, 0x90, 0x00, 0x49, 0x1F, 0x80, 0x09, 0x10, 0x00, 0x3F, 0xDF, 0x80, 0x00, 0x00, 0x80, 0x1F, 0x9F, 0x80, 0x10, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x90, 0x80, 0x11, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C61, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x08, 0x6C, 0x00, 0x7E, 0xC6, 0x00, 0x09, 0xBB, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xEF, 0x00, 0x79, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x82, 0x00, 0x09, 0x45, 0x00, 0x3A, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C63, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x25, 0xA9, 0x00, 0x27, 0xF9, 0x00, 0x22, 0xA1, 0x00, 0x2C, 0x9B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C64, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x08, 0x90, 0x00, 0x08, 0x94, 0x00, 0x15, 0x52, 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0x80, 0x05, 0x10, 0x00, 0x1D, 0xD1, 0x00, 0x05, 0x0A, 0x00, 0x1D, 0xCC, 0x00, 0x05, 0x0C, 0x80, 0x07, 0xF2, 0x80, 0x3C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C65, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0x84, 0x00, 0x03, 0xE2, 0x00, 0x0E, 0x3C, 0x00, 0x79, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C67, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x1F, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x69, 0x10, 0x80, 0x31, 0x7C, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x80, 0x79, 0x31, 0x00, 0x09, 0x5A, 0x00, 0x0A, 0x2E, 0x00, 0x18, 0xD5, 0x80, 0x34, 0x2C, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C69, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x68, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x02, 0x44, 0x80, 0x78, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x18, 0x7E, 0x00, 0x34, 0x82, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C6C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x01, 0x02, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0xD4, 0x00, 0x1B, 0x3F, 0x80, 0x15, 0x64, 0x00, 0x1B, 0xA4, 0x00, 0x1F, 0x3F, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x3F, 0xBF, 0x80, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C6D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x22, 0x11, 0x00, 0x2A, 0x95, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x67, 0xBE, 0x80, 0x44, 0x20, 0x80, 0x1F, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C6E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x11, 0x00, 0x32, 0x22, 0x00, 0x14, 0x7F, 0x80, 0x0A, 0xC4, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x44, 0x00, 0x2A, 0x7F, 0x00, 0x6B, 0x44, 0x00, 0x49, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C70, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x02, 0x84, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x1C, 0x0E, 0x00, 0x07, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C72, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x64, 0xC8, 0x00, 0x0F, 0x04, 0x00, 0x39, 0xDF, 0x80, 0x6F, 0x64, 0x00, 0x00, 0x1F, 0x80, 0x77, 0x70, 0x80, 0x55, 0x5F, 0x80, 0x77, 0x70, 0x80, 0x00, 0x1F, 0x80, 0x3F, 0xD0, 0x80, 0x2A, 0x50, 0x80, 0x3F, 0xDF, 0x80, 0x2A, 0x49, 0x00, 0x2A, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C73, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x01, 0x50, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x01, 0x48, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C74, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x8C, 0x00, 0x60, 0x83, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8E, 0x00, 0x30, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C75, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x49, 0x08, 0x00, 0x6B, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C79, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x49, 0x10, 0x00, 0x6B, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x66, 0x00, 0x1A, 0x44, 0x00, 0x29, 0x44, 0x00, 0x28, 0xFC, 0x00, 0x48, 0x0E, 0x00, 0x08, 0x3B, 0x00, 0x08, 0x61, 0x80, 0x09, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C7B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x98, 0x00, 0x08, 0x88, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x0E, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C7C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x28, 0x91, 0x00, 0x48, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C7D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x49, 0x7F, 0x80, 0x6B, 0x03, 0x00, 0x2A, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C7E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x00, 0x6A, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x08, 0x11, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x51, 0x00, 0x08, 0x51, 0x00, 0x1C, 0x71, 0x00, 0x1A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x28, 0x71, 0x00, 0x48, 0x53, 0x00, 0x08, 0x52, 0x00, 0x08, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C81, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x49, 0x0E, 0x00, 0x6B, 0x78, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C82, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x20, 0x00, 0x38, 0x60, 0x00, 0x01, 0xB0, 0x00, 0x07, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x83, 0x80, 0x08, 0x84, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB8, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C83, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x25, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x3F, 0xC4, 0x80, 0x0C, 0x7D, 0x00, 0x0E, 0x46, 0x00, 0x15, 0x44, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x80, 0x04, 0x7C, 0x80, 0x05, 0xC7, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C86, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x2A, 0x54, 0x00, 0x08, 0x56, 0x00, 0x7E, 0xD3, 0x00, 0x08, 0x91, 0x80, 0x09, 0x90, 0x00, 0x1C, 0x11, 0x00, 0x1A, 0x11, 0x00, 0x2A, 0x73, 0x00, 0x28, 0x02, 0x00, 0x48, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x38, 0x00, 0x08, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C87, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x28, 0x22, 0x00, 0x48, 0x22, 0x00, 0x08, 0x62, 0x80, 0x08, 0x42, 0x80, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C89, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x29, 0x04, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x22, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x81, 0x00, 0x09, 0x00, 0x80, 0x18, 0xFE, 0x00, 0x3C, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x84, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C8B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x49, 0x10, 0x00, 0x6B, 0x7E, 0x00, 0x2A, 0x12, 0x00, 0x08, 0x32, 0x00, 0x7F, 0x22, 0x80, 0x08, 0x62, 0x80, 0x08, 0xC1, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C8D, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x49, 0x1C, 0x00, 0x6B, 0x70, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x1F, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x1F, 0x00, 0x2A, 0xF0, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x80, 0x08, 0x19, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C8F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x1C, 0x2C, 0x00, 0x1A, 0x24, 0x00, 0x2A, 0x64, 0x00, 0x28, 0x46, 0x00, 0x48, 0x52, 0x00, 0x08, 0x5A, 0x00, 0x08, 0xCB, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7C90, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x28, 0x40, 0x00, 0x48, 0x40, 0x00, 0x08, 0xC0, 0x00, 0x08, 0x80, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C91, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x4A, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x2C, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x18, 0x92, 0x00, 0x1C, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x80, 0x00, 0x48, 0x80, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C92, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x29, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x81, 0x00, 0x18, 0x41, 0x00, 0x1C, 0x42, 0x00, 0x3A, 0x22, 0x00, 0x29, 0x22, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C94, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x28, 0x40, 0x00, 0x48, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C95, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x24, 0x88, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x40, 0x80, 0x04, 0x40, 0x80, 0x3F, 0xC0, 0x80, 0x04, 0x40, 0x80, 0x0E, 0x7F, 0x80, 0x0D, 0x40, 0x80, 0x14, 0x40, 0x80, 0x14, 0x40, 0x80, 0x24, 0x40, 0x80, 0x04, 0x7F, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C97, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x22, 0x42, 0x00, 0x14, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x3F, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C98, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x14, 0x88, 0x00, 0x15, 0x0F, 0x80, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x0C, 0x08, 0x00, 0x0C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x15, 0x41, 0x00, 0x14, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C9B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x14, 0x8A, 0x00, 0x12, 0x92, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC2, 0x00, 0x12, 0xA2, 0x00, 0x34, 0x9A, 0x00, 0x20, 0x82, 0x00, 0x60, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C9C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x04, 0x98, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xB0, 0x00, 0x0C, 0x8E, 0x00, 0x30, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C9D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x4A, 0xFF, 0x00, 0x2A, 0x80, 0x00, 0x2C, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0xA0, 0x00, 0x18, 0xA2, 0x00, 0x1C, 0xBF, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x48, 0xA2, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x4A, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C9E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x1C, 0xA4, 0x80, 0x1A, 0xA3, 0x80, 0x2A, 0xC0, 0x80, 0x28, 0x80, 0x80, 0x48, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7C9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CA0, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x4A, 0x44, 0x00, 0x6A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x48, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CA1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x7D, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x7D, 0x00, 0x39, 0x45, 0x00, 0x35, 0x45, 0x00, 0x55, 0x45, 0x00, 0x51, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CA2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x39, 0xFF, 0x00, 0x03, 0x21, 0x00, 0x00, 0x22, 0x00, 0x08, 0x70, 0x00, 0x18, 0xD8, 0x00, 0x31, 0x8E, 0x00, 0x63, 0x03, 0x80, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CA4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x14, 0x92, 0x00, 0x12, 0xA2, 0x00, 0x17, 0xFA, 0x00, 0x11, 0xC2, 0x00, 0x12, 0xA2, 0x00, 0x14, 0x92, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CA5, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x3D, 0x5F, 0x00, 0x05, 0x51, 0x00, 0x05, 0x61, 0x00, 0x04, 0x41, 0x00, 0x1F, 0xF7, 0x00, 0x10, 0x44, 0x00, 0x20, 0xC8, 0x00, 0x3C, 0xEF, 0x80, 0x05, 0x50, 0x80, 0x05, 0x48, 0x80, 0x05, 0x40, 0x80, 0x06, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x18, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CA6, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x08, 0x04, 0x00, 0x0F, 0x3F, 0x80, 0x39, 0x24, 0x00, 0x69, 0x24, 0x00, 0x07, 0xFF, 0x80, 0x06, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CA7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x18, 0x88, 0x00, 0x1C, 0xFF, 0x00, 0x3A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x29, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CA8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x6A, 0x10, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x20, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CAA, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x06, 0x98, 0x00, 0x02, 0xA0, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x0C, 0x9E, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CAB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x6A, 0x10, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x20, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x1C, 0xA9, 0x00, 0x1A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x28, 0xA9, 0x00, 0x48, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x08, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CAD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x54, 0x38, 0x00, 0x54, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x7D, 0x83, 0x00, 0x13, 0x7D, 0x80, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x34, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x50, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CAE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x29, 0x10, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x1C, 0x7E, 0x00, 0x3A, 0x49, 0x00, 0x28, 0x4A, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x08, 0x5E, 0x00, 0x09, 0xE1, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CB0, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x4A, 0x0E, 0x00, 0x6A, 0xFA, 0x00, 0x2A, 0x53, 0x00, 0x08, 0xD9, 0x00, 0x7E, 0x89, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x1C, 0x04, 0x00, 0x1A, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CB1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x12, 0x00, 0x24, 0x52, 0x00, 0x14, 0x93, 0x00, 0x09, 0x22, 0x80, 0x10, 0xC2, 0x80, 0x13, 0x1C, 0x00, 0x20, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x60, 0x00, 0x02, 0x50, 0x00, 0x0C, 0x4C, 0x00, 0x30, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CB2, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x0A, 0x3F, 0x80, 0x0F, 0xD1, 0x00, 0x08, 0x8A, 0x00, 0x15, 0x04, 0x00, 0x22, 0x0A, 0x00, 0x04, 0x11, 0x80, 0x08, 0x60, 0x00, 0x34, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CB3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xC9, 0x00, 0x0C, 0x7F, 0x00, 0x0E, 0x49, 0x00, 0x15, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x24, 0x48, 0x00, 0x04, 0x30, 0x00, 0x04, 0x1C, 0x00, 0x04, 0x23, 0x80, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CB6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x1C, 0xC9, 0x00, 0x1A, 0x6B, 0x00, 0x2A, 0x0A, 0x00, 0x28, 0x1C, 0x00, 0x48, 0x2E, 0x00, 0x08, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CB7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x4A, 0x40, 0x00, 0x6A, 0x7F, 0x80, 0x2A, 0x80, 0x80, 0x09, 0x10, 0x80, 0x7E, 0x92, 0x80, 0x08, 0x54, 0x80, 0x08, 0xFE, 0x80, 0x1C, 0x10, 0x80, 0x1A, 0x38, 0x80, 0x2A, 0x34, 0x80, 0x28, 0x52, 0x80, 0x48, 0x50, 0x80, 0x08, 0x91, 0x80, 0x08, 0x11, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CB9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3E, 0xA5, 0x00, 0x09, 0x18, 0x80, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x38, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CBA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x08, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0xA1, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x48, 0x00, 0x2A, 0x88, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CBB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x00, 0x6A, 0x80, 0x00, 0x2A, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x1D, 0xFF, 0x80, 0x1A, 0x91, 0x00, 0x2A, 0x9B, 0x00, 0x28, 0x8A, 0x00, 0x48, 0x8C, 0x00, 0x08, 0x86, 0x00, 0x08, 0xF3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CBC, { 0x00, 0x00, 0x00, 0x24, 0x88, 0x80, 0x15, 0x08, 0x80, 0x04, 0x19, 0x80, 0x7F, 0xD1, 0x00, 0x15, 0x33, 0x00, 0x35, 0xA2, 0x00, 0x64, 0xC4, 0x00, 0x24, 0x44, 0x00, 0x38, 0xA2, 0x00, 0x6F, 0xE2, 0x00, 0x4A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x1A, 0x99, 0x80, 0x17, 0xC8, 0x80, 0x30, 0x88, 0x80, 0x60, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CBD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x54, 0x92, 0x00, 0x50, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CBE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x25, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x88, 0x00, 0x04, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CBF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x00, 0x6A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x2A, 0x54, 0x00, 0x28, 0x56, 0x00, 0x48, 0xD2, 0x00, 0x08, 0x93, 0x00, 0x09, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CC0, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x54, 0x44, 0x00, 0x55, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x7C, 0x28, 0x00, 0x10, 0x68, 0x00, 0x10, 0x49, 0x80, 0x38, 0xCB, 0x00, 0x35, 0xCE, 0x00, 0x53, 0x48, 0x00, 0x50, 0x48, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x80, 0x10, 0x49, 0x80, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CC1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x4A, 0x44, 0x00, 0x2A, 0xFE, 0x00, 0x2C, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x28, 0x00, 0x18, 0x4C, 0x00, 0x1C, 0x92, 0x00, 0x2B, 0x65, 0x00, 0x2A, 0x08, 0x00, 0x48, 0x32, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x18, 0x00, 0x08, 0x60, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CC2, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x54, 0x42, 0x00, 0x55, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x18, 0x42, 0x00, 0x34, 0x42, 0x00, 0x33, 0xFF, 0x80, 0x50, 0xA4, 0x00, 0x50, 0xA4, 0x00, 0x10, 0xC7, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CC4, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x4A, 0x7C, 0x00, 0x6A, 0x40, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x28, 0xFF, 0x00, 0x48, 0xD5, 0x00, 0x09, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CC5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x02, 0x00, 0x10, 0x2C, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x29, 0x00, 0x10, 0x4A, 0x00, 0x39, 0x98, 0x00, 0x34, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x50, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CC7, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x54, 0xBF, 0x00, 0x54, 0x81, 0x00, 0x11, 0x81, 0x00, 0x11, 0x7F, 0x80, 0x7D, 0x20, 0x00, 0x13, 0x20, 0x00, 0x11, 0x7F, 0x00, 0x39, 0x88, 0x00, 0x35, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x51, 0x08, 0x00, 0x11, 0x1C, 0x00, 0x11, 0x14, 0x00, 0x11, 0x36, 0x00, 0x11, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CC8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x08, 0x80, 0x2A, 0x4F, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x68, 0x00, 0x08, 0xDF, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CC9, { 0x00, 0x00, 0x00, 0x08, 0x81, 0x00, 0x4A, 0xA5, 0x00, 0x6A, 0x99, 0x00, 0x2A, 0xA5, 0x00, 0x08, 0x81, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x1D, 0xA3, 0x80, 0x1A, 0x7E, 0x00, 0x2A, 0xC2, 0x00, 0x29, 0xA6, 0x00, 0x48, 0x2C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x76, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CCA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x2A, 0x47, 0x80, 0x2A, 0x44, 0x80, 0x2B, 0xFC, 0x80, 0x08, 0x44, 0x80, 0x3E, 0x47, 0x80, 0x08, 0x44, 0x80, 0x1C, 0x44, 0x80, 0x1B, 0xF4, 0x80, 0x39, 0x17, 0x80, 0x29, 0x14, 0x80, 0x29, 0x14, 0x80, 0x29, 0x14, 0x80, 0x29, 0x14, 0x80, 0x09, 0xF8, 0x80, 0x09, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CCC, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x4A, 0xE8, 0x00, 0x2A, 0xAC, 0x00, 0x2D, 0x2A, 0x00, 0x08, 0xA8, 0x00, 0x7F, 0x48, 0x00, 0x18, 0xAB, 0x00, 0x1D, 0x1E, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0xFE, 0x00, 0x48, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CCD, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x4A, 0x66, 0x00, 0x6A, 0x24, 0x00, 0x2B, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1D, 0x29, 0x00, 0x1A, 0xA5, 0x00, 0x2A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x48, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x09, 0xEF, 0x80, 0x09, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CCE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x55, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x7D, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x39, 0x49, 0x00, 0x35, 0x7F, 0x00, 0x51, 0x08, 0x00, 0x51, 0x08, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x16, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CCF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x11, 0x00, 0x80, 0x11, 0xFF, 0x80, 0x7D, 0x08, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x49, 0x00, 0x39, 0x7F, 0x00, 0x35, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x51, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x13, 0x41, 0x00, 0x12, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CD2, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x54, 0x44, 0x00, 0x55, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x39, 0x49, 0x00, 0x35, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x51, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x12, 0x49, 0x00, 0x10, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CD3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x23, 0x80, 0x7F, 0x80, 0x00, 0x40, 0xBF, 0x00, 0x5E, 0x91, 0x00, 0x04, 0x11, 0x00, 0x24, 0x9B, 0x00, 0x15, 0x0E, 0x00, 0x7F, 0x84, 0x00, 0x15, 0x0E, 0x00, 0x35, 0x9B, 0x00, 0x24, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CD4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x00, 0x6A, 0x51, 0x00, 0x2A, 0x4A, 0x00, 0x08, 0xA4, 0x00, 0x7E, 0x98, 0x00, 0x08, 0x6E, 0x00, 0x09, 0x83, 0x80, 0x1C, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x08, 0x11, 0x00, 0x08, 0x1F, 0x80, 0x08, 0xF0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CD5, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x4A, 0xC6, 0x00, 0x6A, 0x44, 0x00, 0x2A, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x1A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x48, 0x00, 0x00, 0x09, 0x49, 0x00, 0x0B, 0x6D, 0x80, 0x0A, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CD6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x89, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x89, 0x00, 0x1C, 0xFF, 0x00, 0x3A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CD7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x12, 0x00, 0x2A, 0x11, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x24, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CD8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x10, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x51, 0x00, 0x39, 0x93, 0x00, 0x34, 0x2A, 0x00, 0x54, 0x48, 0x00, 0x51, 0x9C, 0x00, 0x10, 0x2A, 0x00, 0x10, 0x4B, 0x00, 0x11, 0x89, 0x80, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CD9, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x55, 0x24, 0x00, 0x55, 0xA4, 0x00, 0x10, 0xBF, 0x00, 0x11, 0x24, 0x00, 0x7D, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x10, 0x04, 0x00, 0x3B, 0x80, 0x00, 0x34, 0x9F, 0x00, 0x54, 0x91, 0x00, 0x50, 0x91, 0x00, 0x10, 0x91, 0x00, 0x11, 0x9F, 0x00, 0x11, 0x40, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CDA, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x54, 0x44, 0x00, 0x57, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x10, 0x00, 0x00, 0x7C, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x39, 0x7F, 0x80, 0x35, 0xC4, 0x00, 0x54, 0x44, 0x00, 0x53, 0xC4, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x12, 0x5F, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CDC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x25, 0x55, 0x00, 0x29, 0x55, 0x80, 0x20, 0x00, 0x00, 0x22, 0x22, 0x00, 0x21, 0x24, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0xA8, 0x00, 0x21, 0xAC, 0x00, 0x43, 0x26, 0x00, 0x0E, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CDD, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x54, 0x44, 0x00, 0x54, 0x7C, 0x00, 0x10, 0x82, 0x00, 0x11, 0x24, 0x80, 0x7D, 0xE7, 0x80, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x38, 0xC6, 0x00, 0x35, 0x93, 0x80, 0x54, 0x20, 0x00, 0x50, 0xC8, 0x00, 0x10, 0x33, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CDE, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CDF, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x25, 0x7F, 0x80, 0x15, 0x12, 0x00, 0x15, 0x7F, 0x80, 0x04, 0x52, 0x80, 0x3F, 0xFF, 0x80, 0x04, 0x52, 0x80, 0x0C, 0x7F, 0x80, 0x0E, 0x00, 0x00, 0x15, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CE0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x00, 0x2A, 0xBE, 0x00, 0x08, 0x8A, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x8A, 0x00, 0x1C, 0xBE, 0x00, 0x1A, 0xC9, 0x00, 0x18, 0xAA, 0x00, 0x28, 0x9C, 0x00, 0x28, 0x9C, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x29, 0x00, 0x0A, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CE2, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x4A, 0x24, 0x00, 0x6B, 0xFF, 0x80, 0x2A, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x24, 0x00, 0x08, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CE6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CE7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x1C, 0x7F, 0x00, 0x3A, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CE8, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x17, 0xBF, 0x00, 0x10, 0xA2, 0x00, 0x54, 0xA2, 0x00, 0x38, 0xBE, 0x00, 0x13, 0x88, 0x00, 0x7E, 0x0A, 0x00, 0x12, 0x3F, 0x00, 0x3B, 0xAA, 0x00, 0x34, 0xAA, 0x00, 0x54, 0xBE, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8A, 0x00, 0x15, 0x7F, 0x00, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CE9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x54, 0x28, 0x00, 0x54, 0xC6, 0x00, 0x13, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x55, 0x00, 0x39, 0x11, 0x00, 0x35, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x50, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CEB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x14, 0x80, 0x48, 0x35, 0x00, 0x08, 0xE6, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CEF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x7E, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x18, 0xD6, 0x00, 0x34, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x50, 0x20, 0x00, 0x51, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CF2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x7D, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x39, 0x49, 0x00, 0x35, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x51, 0x7F, 0x80, 0x11, 0x4A, 0x80, 0x11, 0x4E, 0x80, 0x12, 0x5A, 0x80, 0x10, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xF7, 0x80, 0x08, 0x52, 0x80, 0x08, 0xB5, 0x80, 0x1C, 0x52, 0x80, 0x36, 0x94, 0x80, 0x63, 0x12, 0x00, 0x08, 0x24, 0x00, 0x2A, 0x7F, 0x80, 0x08, 0xC8, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x1C, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x49, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CF5, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x14, 0x00, 0x20, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x3E, 0x00, 0x3F, 0x88, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CF6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x2A, 0xF7, 0x80, 0x3E, 0x52, 0x80, 0x08, 0xB5, 0x80, 0x2A, 0x52, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0x12, 0x00, 0x00, 0x24, 0x00, 0x2A, 0x7F, 0x80, 0x08, 0xC8, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x1C, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x49, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7CF8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x08, 0x00, 0x06, 0x18, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x62, 0x00, 0x06, 0xC3, 0x00, 0x01, 0x81, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x18, 0x86, 0x00, 0x30, 0x83, 0x00, 0x60, 0x81, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CFA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x30, 0x20, 0x00, 0x62, 0x20, 0x00, 0x36, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x18, 0x20, 0x00, 0x32, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x09, 0x20, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2B, 0x20, 0x00, 0x69, 0x20, 0x80, 0x48, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CFB, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x44, 0x00, 0x08, 0x88, 0x00, 0x05, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x42, 0x00, 0x00, 0x9F, 0x00, 0x3F, 0xE0, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7CFE, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x12, 0x24, 0x00, 0x22, 0x24, 0x00, 0x14, 0x24, 0x00, 0x08, 0x24, 0x00, 0x12, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x27, 0x80, 0x2A, 0xFC, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x28, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D00, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x12, 0x01, 0x00, 0x22, 0x01, 0x00, 0x14, 0x01, 0x00, 0x08, 0x01, 0x00, 0x11, 0x3F, 0x00, 0x3F, 0xA0, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x80, 0x2A, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D02, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x12, 0x04, 0x00, 0x22, 0x04, 0x00, 0x14, 0x7F, 0x80, 0x08, 0x04, 0x00, 0x12, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x09, 0x24, 0x00, 0x08, 0x14, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D03, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x18, 0x49, 0x00, 0x30, 0x49, 0x00, 0x62, 0x49, 0x00, 0x36, 0x49, 0x00, 0x0C, 0x49, 0x00, 0x18, 0x49, 0x00, 0x32, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x09, 0x49, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x6A, 0xC1, 0x00, 0x48, 0x81, 0x00, 0x09, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D04, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x10, 0x00, 0x22, 0x20, 0x00, 0x14, 0x3F, 0x80, 0x08, 0x40, 0x80, 0x12, 0x40, 0x80, 0x3F, 0x90, 0x80, 0x09, 0x08, 0x80, 0x08, 0x04, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D05, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x14, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D06, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x14, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x08, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D07, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x12, 0x40, 0x00, 0x22, 0xFF, 0x80, 0x15, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x06, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D08, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x12, 0x20, 0x00, 0x22, 0xFC, 0x00, 0x14, 0x24, 0x00, 0x08, 0x24, 0x00, 0x12, 0x24, 0x00, 0x3F, 0x64, 0x00, 0x09, 0x34, 0x00, 0x08, 0x2C, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x44, 0x80, 0x2A, 0x44, 0x80, 0x08, 0x87, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D09, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x30, 0x08, 0x80, 0x62, 0x08, 0x80, 0x36, 0x28, 0x80, 0x0C, 0x28, 0x80, 0x18, 0x68, 0x80, 0x32, 0x48, 0x80, 0x7E, 0xD8, 0x80, 0x0A, 0x90, 0x80, 0x08, 0x30, 0x80, 0x2A, 0x20, 0x80, 0x2A, 0x61, 0x80, 0x6A, 0x41, 0x00, 0x48, 0xC1, 0x00, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D0A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x98, 0x00, 0x3C, 0x87, 0x80, 0x03, 0x10, 0x00, 0x01, 0x22, 0x00, 0x00, 0xDF, 0x00, 0x3F, 0xE0, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D0B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x18, 0x41, 0x00, 0x0A, 0x42, 0x00, 0x11, 0x22, 0x00, 0x3F, 0x24, 0x00, 0x09, 0x14, 0x00, 0x08, 0x18, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D0D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x88, 0x80, 0x08, 0x88, 0x80, 0x12, 0x88, 0x80, 0x27, 0x88, 0x80, 0x39, 0x94, 0x80, 0x08, 0x92, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xC0, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D0F, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x18, 0x32, 0x00, 0x30, 0x1A, 0x00, 0x62, 0x0A, 0x00, 0x36, 0x02, 0x00, 0x0C, 0x62, 0x00, 0x18, 0x32, 0x00, 0x32, 0x12, 0x00, 0x7F, 0x02, 0x00, 0x09, 0x03, 0x80, 0x08, 0x1E, 0x00, 0x2A, 0xF2, 0x00, 0x2B, 0x02, 0x00, 0x69, 0x02, 0x00, 0x48, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D10, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x11, 0x00, 0x22, 0x11, 0x00, 0x14, 0x11, 0x00, 0x08, 0x11, 0x00, 0x12, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x08, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D11, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x30, 0x08, 0x00, 0x62, 0x08, 0x00, 0x36, 0x18, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x34, 0x00, 0x32, 0x76, 0x00, 0x7E, 0xD3, 0x00, 0x0A, 0x91, 0x80, 0x08, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0x10, 0x00, 0x69, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D12, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x1C, 0x00, 0x30, 0x14, 0x00, 0x62, 0x36, 0x00, 0x36, 0x63, 0x00, 0x0C, 0xE3, 0x80, 0x19, 0xA2, 0x80, 0x32, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x62, 0x00, 0x6A, 0x42, 0x00, 0x48, 0xC2, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D13, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x01, 0x00, 0x62, 0x32, 0x00, 0x36, 0x1C, 0x00, 0x0C, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x08, 0x80, 0x7F, 0x09, 0x80, 0x09, 0x09, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x69, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D14, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x1F, 0x00, 0x22, 0xF0, 0x00, 0x14, 0x10, 0x00, 0x08, 0x92, 0x00, 0x12, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x09, 0x92, 0x00, 0x08, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D15, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x18, 0x88, 0x00, 0x30, 0x88, 0x00, 0x62, 0x89, 0x00, 0x36, 0x8B, 0x00, 0x0C, 0xEE, 0x00, 0x18, 0x88, 0x00, 0x32, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x08, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0x88, 0x80, 0x48, 0xE9, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D16, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x19, 0xF1, 0x00, 0x10, 0x11, 0x00, 0x64, 0x11, 0x00, 0x2C, 0x11, 0x00, 0x19, 0xF1, 0x00, 0x11, 0x01, 0x00, 0x25, 0x01, 0x00, 0x7D, 0x01, 0x00, 0x15, 0xF1, 0x00, 0x10, 0x11, 0x00, 0x54, 0x11, 0x00, 0x54, 0x31, 0x00, 0x54, 0x21, 0x00, 0x10, 0x61, 0x00, 0x11, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D17, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x29, 0x00, 0x14, 0x29, 0x00, 0x08, 0x48, 0x80, 0x12, 0x48, 0x80, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x80, 0x08, 0x19, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D18, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x15, 0xFF, 0x80, 0x24, 0x40, 0x00, 0x18, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x13, 0x48, 0x00, 0x3D, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x90, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA1, 0x00, 0x29, 0x2F, 0x00, 0x09, 0x70, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D19, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0xF8, 0x00, 0x12, 0x88, 0x00, 0x22, 0x88, 0x00, 0x14, 0x88, 0x00, 0x08, 0x88, 0x00, 0x12, 0xFF, 0x00, 0x3F, 0x88, 0x00, 0x09, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xF4, 0x80, 0x0B, 0x82, 0x80, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D1A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x14, 0x24, 0x00, 0x08, 0x24, 0x00, 0x12, 0x27, 0x00, 0x3F, 0x21, 0x00, 0x09, 0x61, 0x00, 0x0A, 0x51, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x84, 0x00, 0x28, 0x8A, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D1B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x1C, 0x41, 0x00, 0x08, 0x81, 0x00, 0x12, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x42, 0x00, 0x08, 0x84, 0x00, 0x0B, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D1C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x00, 0x00, 0x62, 0x00, 0x00, 0x36, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x09, 0x10, 0x00, 0x08, 0x32, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0x23, 0x00, 0x69, 0x21, 0x00, 0x48, 0x2F, 0x00, 0x08, 0x79, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D1D, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x18, 0x0E, 0x00, 0x30, 0x78, 0x00, 0x62, 0x08, 0x00, 0x36, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x69, 0x08, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D1E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x62, 0xFF, 0x00, 0x36, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x18, 0x91, 0x00, 0x32, 0x10, 0x00, 0x7E, 0x38, 0x00, 0x0A, 0x28, 0x00, 0x08, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x68, 0x00, 0x6A, 0x48, 0x80, 0x48, 0xCD, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D20, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x90, 0x00, 0x05, 0x10, 0x00, 0x02, 0x22, 0x00, 0x01, 0x5F, 0x00, 0x3F, 0xE0, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D21, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x12, 0x20, 0x00, 0x23, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x18, 0x20, 0x00, 0x12, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D22, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x48, 0x80, 0x24, 0x88, 0x80, 0x03, 0x10, 0x00, 0x01, 0x21, 0x00, 0x00, 0xDF, 0x80, 0x3F, 0xE0, 0x80, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D23, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x30, 0xFC, 0x00, 0x62, 0x24, 0x00, 0x36, 0x24, 0x00, 0x0C, 0x64, 0x80, 0x18, 0x44, 0x80, 0x32, 0xC3, 0x80, 0x7E, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D26, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x91, 0x00, 0x62, 0x91, 0x00, 0x36, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x18, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x7E, 0x80, 0x00, 0x0A, 0x80, 0x00, 0x08, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x80, 0x6A, 0xC1, 0x80, 0x48, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D27, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0xFC, 0x00, 0x12, 0x88, 0x00, 0x12, 0x50, 0x00, 0x12, 0x20, 0x00, 0x12, 0x58, 0x00, 0x03, 0x87, 0x00, 0x02, 0x12, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x31, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D2A, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x18, 0x48, 0x00, 0x10, 0x48, 0x00, 0x65, 0x48, 0x00, 0x2D, 0x48, 0x00, 0x19, 0x48, 0x00, 0x11, 0x79, 0x80, 0x25, 0x4F, 0x00, 0x7D, 0x48, 0x00, 0x15, 0x48, 0x00, 0x11, 0x48, 0x00, 0x55, 0x48, 0x00, 0x55, 0x48, 0x00, 0x55, 0x78, 0x80, 0x11, 0xCD, 0x80, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D2B, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x12, 0x23, 0x80, 0x12, 0x3C, 0x00, 0x13, 0xE0, 0x00, 0x12, 0x20, 0x80, 0x17, 0xFF, 0x80, 0x38, 0x80, 0x00, 0x00, 0x90, 0x00, 0x05, 0x10, 0x00, 0x02, 0x22, 0x00, 0x01, 0x4F, 0x00, 0x3F, 0xF0, 0x80, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D2C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x09, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D2D, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x19, 0xE2, 0x00, 0x10, 0x22, 0x00, 0x64, 0x22, 0x00, 0x2C, 0x22, 0x00, 0x19, 0xE6, 0x00, 0x11, 0x04, 0x00, 0x25, 0x04, 0x00, 0x7D, 0x04, 0x00, 0x15, 0xE5, 0x00, 0x10, 0x25, 0x00, 0x54, 0x2D, 0x00, 0x54, 0x69, 0x00, 0x54, 0x49, 0x00, 0x10, 0xCF, 0x80, 0x11, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D2E, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x0E, 0x20, 0x80, 0x15, 0x20, 0x80, 0x24, 0xBF, 0x80, 0x04, 0x00, 0x00, 0x01, 0x10, 0x00, 0x05, 0x10, 0x00, 0x02, 0x22, 0x00, 0x01, 0x41, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x80, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x09, 0x10, 0x00, 0x06, 0x21, 0x00, 0x02, 0x5F, 0x00, 0x3F, 0xE0, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D30, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x24, 0x49, 0x00, 0x14, 0x49, 0x00, 0x08, 0x49, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D31, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x18, 0x26, 0x00, 0x10, 0x22, 0x00, 0x65, 0xFF, 0x80, 0x2C, 0x20, 0x00, 0x18, 0x20, 0x00, 0x10, 0x22, 0x00, 0x24, 0x72, 0x00, 0x7C, 0x56, 0x00, 0x14, 0xD4, 0x00, 0x10, 0x9C, 0x00, 0x55, 0x88, 0x00, 0x54, 0x1C, 0x00, 0x54, 0x36, 0x00, 0x10, 0x63, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D32, { 0x00, 0x00, 0x00, 0x08, 0x4A, 0x00, 0x18, 0x4A, 0x00, 0x30, 0x4A, 0x00, 0x62, 0x4A, 0x00, 0x36, 0xFF, 0x80, 0x0C, 0x4A, 0x00, 0x18, 0x4A, 0x00, 0x32, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x08, 0x4E, 0x00, 0x2A, 0x40, 0x00, 0x2B, 0x40, 0x00, 0x69, 0x40, 0x00, 0x48, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D33, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x12, 0x04, 0x00, 0x22, 0x3F, 0x80, 0x14, 0x24, 0x80, 0x09, 0x24, 0x80, 0x17, 0xA4, 0x80, 0x3C, 0xBF, 0x80, 0x04, 0x24, 0x80, 0x15, 0x24, 0x80, 0x15, 0x24, 0x80, 0x25, 0x3F, 0x80, 0x25, 0x24, 0x80, 0x25, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D35, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x12, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D39, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x22, 0x11, 0x00, 0x14, 0x21, 0x00, 0x08, 0x21, 0x00, 0x12, 0x42, 0x00, 0x3F, 0x8C, 0x00, 0x09, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D3A, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x08, 0x22, 0x00, 0x32, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x0C, 0x22, 0x00, 0x08, 0x22, 0x00, 0x12, 0x22, 0x00, 0x3D, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D3C, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x18, 0x48, 0x00, 0x11, 0xFF, 0x00, 0x64, 0x49, 0x00, 0x2C, 0x49, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x48, 0x00, 0x25, 0x48, 0x00, 0x7D, 0xFF, 0x80, 0x14, 0x48, 0x80, 0x10, 0x48, 0x80, 0x54, 0x49, 0x80, 0x54, 0xC9, 0x00, 0x54, 0x8B, 0x00, 0x11, 0x88, 0x00, 0x13, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D3D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x80, 0x80, 0x0C, 0x80, 0x80, 0x18, 0x20, 0x00, 0x32, 0x23, 0x00, 0x7E, 0x2E, 0x00, 0x0A, 0x38, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x6A, 0x20, 0x80, 0x48, 0x31, 0x80, 0x08, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D3E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x1C, 0x00, 0x30, 0x14, 0x00, 0x62, 0x36, 0x00, 0x36, 0x63, 0x00, 0x0C, 0xC9, 0x80, 0x18, 0x18, 0x00, 0x32, 0x32, 0x00, 0x7F, 0x66, 0x00, 0x09, 0x0C, 0x00, 0x08, 0x18, 0x80, 0x2A, 0x71, 0x80, 0x2B, 0x03, 0x00, 0x69, 0x06, 0x00, 0x48, 0x1C, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D3F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x30, 0x00, 0x62, 0x21, 0x00, 0x36, 0x61, 0x00, 0x0C, 0x4F, 0x80, 0x18, 0xF8, 0x80, 0x32, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2B, 0x41, 0x00, 0x69, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D40, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x88, 0x80, 0x30, 0x88, 0x80, 0x62, 0x88, 0x80, 0x36, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x18, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0x88, 0x80, 0x08, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x6A, 0x88, 0x80, 0x48, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D41, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x30, 0x40, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x80, 0x00, 0x0D, 0x08, 0x00, 0x18, 0x4B, 0x00, 0x32, 0x4D, 0x00, 0x7E, 0x59, 0x00, 0x0A, 0x69, 0x00, 0x08, 0xCB, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x6A, 0x40, 0x80, 0x48, 0x61, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D42, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x42, 0x00, 0x14, 0xA4, 0x00, 0x09, 0x18, 0x00, 0x12, 0x08, 0x00, 0x3F, 0x16, 0x00, 0x09, 0x21, 0x80, 0x08, 0xC8, 0x00, 0x08, 0x04, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x2A, 0x0C, 0x00, 0x2A, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D43, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x20, 0x00, 0x3F, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x08, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x9F, 0x80, 0x09, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D44, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x25, 0x42, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x0D, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x05, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D45, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x08, 0x20, 0x80, 0x32, 0x20, 0x80, 0x12, 0x20, 0x80, 0x0C, 0x2E, 0x80, 0x09, 0x2A, 0x80, 0x11, 0x2A, 0x80, 0x3E, 0xAA, 0x80, 0x04, 0x2A, 0x80, 0x15, 0x2E, 0x80, 0x15, 0x20, 0x80, 0x25, 0x20, 0x80, 0x25, 0x20, 0x80, 0x24, 0x20, 0x80, 0x04, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D46, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x2A, 0x00, 0x22, 0x49, 0x00, 0x14, 0x88, 0x80, 0x08, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D47, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x20, 0x00, 0x30, 0x20, 0x00, 0x62, 0x7F, 0x80, 0x36, 0x40, 0x80, 0x0C, 0xC0, 0x80, 0x18, 0x3C, 0x80, 0x32, 0x24, 0x80, 0x7F, 0x24, 0x80, 0x09, 0x24, 0x80, 0x08, 0x24, 0x80, 0x2A, 0x3C, 0x80, 0x2B, 0x00, 0x80, 0x69, 0x01, 0x80, 0x48, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D48, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x18, 0x00, 0x30, 0x10, 0x00, 0x62, 0x7F, 0x00, 0x36, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x18, 0x41, 0x00, 0x32, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2B, 0x41, 0x00, 0x69, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D4B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x80, 0x00, 0x0C, 0x80, 0x00, 0x18, 0x88, 0x00, 0x32, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x0A, 0x98, 0x00, 0x08, 0x90, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xB3, 0x00, 0x6A, 0xA1, 0x00, 0x49, 0x2F, 0x80, 0x08, 0x78, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D4C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x41, 0x00, 0x62, 0x63, 0x00, 0x36, 0x36, 0x00, 0x0C, 0x1C, 0x00, 0x18, 0x36, 0x00, 0x32, 0xE3, 0x80, 0x7F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D4D, { 0x00, 0x00, 0x00, 0x08, 0x43, 0x00, 0x18, 0x46, 0x00, 0x10, 0x5C, 0x00, 0x64, 0xC4, 0x00, 0x2C, 0x84, 0x00, 0x19, 0x84, 0x00, 0x12, 0x84, 0x00, 0x24, 0xBF, 0x80, 0x7C, 0x84, 0x00, 0x14, 0x84, 0x00, 0x10, 0x84, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D4E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x6F, 0x00, 0x10, 0x40, 0x00, 0x64, 0xC0, 0x00, 0x2D, 0x80, 0x00, 0x18, 0x20, 0x00, 0x10, 0x7F, 0x80, 0x24, 0x42, 0x00, 0x7C, 0xC2, 0x00, 0x15, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D4F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0xFF, 0x00, 0x62, 0x91, 0x00, 0x36, 0x91, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x32, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x0A, 0x10, 0x80, 0x08, 0x19, 0x80, 0x2A, 0x0B, 0x00, 0x2B, 0x0E, 0x00, 0x69, 0x1C, 0x80, 0x48, 0x76, 0x80, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D50, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x18, 0x08, 0x00, 0x12, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x29, 0x41, 0x00, 0x29, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D51, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x28, 0x00, 0x30, 0x28, 0x00, 0x62, 0x7F, 0x00, 0x36, 0x48, 0x00, 0x0C, 0xC8, 0x00, 0x18, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x7E, 0x2A, 0x00, 0x0A, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x2A, 0x6B, 0x00, 0x2A, 0x49, 0x00, 0x6A, 0xC9, 0x80, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D53, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x7F, 0x00, 0x62, 0x08, 0x00, 0x36, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D56, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x91, 0x00, 0x30, 0xD3, 0x00, 0x62, 0x52, 0x00, 0x36, 0x52, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x32, 0xFF, 0x80, 0x7F, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2B, 0x24, 0x00, 0x69, 0x64, 0x80, 0x48, 0x44, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D57, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x81, 0x00, 0x62, 0x81, 0x00, 0x36, 0x81, 0x00, 0x0C, 0xBD, 0x00, 0x18, 0xA5, 0x00, 0x32, 0xA5, 0x00, 0x7E, 0xA5, 0x00, 0x0A, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x2A, 0xBD, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D59, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x62, 0x00, 0x00, 0x36, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x18, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x08, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D5A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x40, 0x00, 0x62, 0x40, 0x00, 0x36, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x18, 0x52, 0x00, 0x32, 0x4A, 0x00, 0x7E, 0x42, 0x00, 0x0A, 0x52, 0x00, 0x08, 0x4A, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x02, 0x00, 0x6A, 0x02, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D5B, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0xFF, 0x80, 0x09, 0x84, 0x00, 0x18, 0x6C, 0x00, 0x14, 0x38, 0x00, 0x34, 0xEE, 0x00, 0x57, 0x83, 0x80, 0x14, 0x20, 0x00, 0x14, 0xC8, 0x00, 0x14, 0x51, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x10, 0x80, 0x14, 0x54, 0x00, 0x10, 0xD6, 0x00, 0x13, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D5C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x7C, 0x3F, 0x00, 0x07, 0x89, 0x00, 0x3C, 0x09, 0x00, 0x04, 0x19, 0x00, 0x07, 0x91, 0x00, 0x7C, 0x33, 0x00, 0x04, 0x86, 0x00, 0x01, 0x10, 0x00, 0x06, 0x20, 0x00, 0x02, 0x41, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D5D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x14, 0x00, 0x36, 0x22, 0x00, 0x0C, 0xC1, 0x80, 0x18, 0x3E, 0x00, 0x32, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x48, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D5E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x08, 0x41, 0x00, 0x12, 0xA2, 0x80, 0x26, 0x22, 0x00, 0x39, 0x24, 0x00, 0x08, 0x14, 0x00, 0x0A, 0x18, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x24, 0x00, 0x28, 0x42, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D61, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x14, 0xC2, 0x00, 0x09, 0x24, 0x00, 0x12, 0x18, 0x00, 0x3F, 0x16, 0x00, 0x09, 0x21, 0x80, 0x08, 0xC0, 0x00, 0x29, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D62, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x20, 0x00, 0x22, 0x3F, 0x80, 0x14, 0x40, 0x80, 0x08, 0x80, 0x80, 0x12, 0x3C, 0x80, 0x3F, 0x24, 0x80, 0x09, 0x3C, 0x80, 0x08, 0x24, 0x80, 0x2A, 0x3C, 0x80, 0x2A, 0x24, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0x00, 0x80, 0x08, 0x01, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D63, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x18, 0x63, 0x00, 0x30, 0x22, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x22, 0x00, 0x0C, 0x22, 0x00, 0x18, 0x22, 0x00, 0x32, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x22, 0x00, 0x08, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2B, 0x22, 0x00, 0x69, 0x62, 0x00, 0x48, 0x42, 0x00, 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D65, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x18, 0x45, 0x00, 0x10, 0x45, 0x80, 0x64, 0xC4, 0x80, 0x2C, 0x84, 0x00, 0x19, 0xBF, 0x80, 0x12, 0x84, 0x00, 0x24, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x14, 0x8E, 0x00, 0x10, 0x8A, 0x00, 0x54, 0x8A, 0x00, 0x54, 0x8A, 0x00, 0x54, 0x9B, 0x00, 0x10, 0x91, 0x00, 0x10, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D66, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x14, 0x00, 0x22, 0x22, 0x00, 0x14, 0x41, 0x00, 0x08, 0x80, 0x80, 0x12, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D67, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x81, 0x00, 0x62, 0x81, 0x00, 0x36, 0xBD, 0x00, 0x0C, 0x81, 0x00, 0x18, 0x81, 0x00, 0x32, 0xBD, 0x00, 0x7E, 0xA5, 0x00, 0x0A, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x2A, 0xBD, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D68, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x09, 0x4A, 0x00, 0x09, 0xFA, 0x00, 0x2A, 0x4C, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x4C, 0x00, 0x2A, 0x8A, 0x80, 0x08, 0x91, 0x80, 0x09, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D6A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x22, 0x88, 0x80, 0x14, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x09, 0x94, 0x80, 0x08, 0x94, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xC1, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D6E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x2C, 0x21, 0x00, 0x26, 0x3F, 0x00, 0x09, 0x40, 0x00, 0x14, 0x88, 0x00, 0x23, 0x10, 0x00, 0x01, 0x21, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0x40, 0x80, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D70, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x20, 0x00, 0x62, 0x62, 0x00, 0x36, 0x42, 0x00, 0x0C, 0x4F, 0x00, 0x18, 0xF9, 0x00, 0x32, 0x00, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D71, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x10, 0x00, 0x08, 0x22, 0x00, 0x12, 0x4F, 0x00, 0x3F, 0xB4, 0x80, 0x09, 0x24, 0x00, 0x08, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x44, 0x80, 0x2A, 0x44, 0x80, 0x08, 0x87, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D72, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x09, 0x12, 0x00, 0x31, 0x62, 0x00, 0x12, 0x24, 0x00, 0x0C, 0x18, 0x00, 0x09, 0x11, 0x00, 0x17, 0xA7, 0x80, 0x3C, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x15, 0x15, 0x00, 0x15, 0x15, 0x00, 0x15, 0x15, 0x00, 0x25, 0x25, 0x00, 0x25, 0x25, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D73, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x32, 0x62, 0x00, 0x12, 0x94, 0x00, 0x0D, 0x18, 0x00, 0x08, 0x26, 0x00, 0x12, 0xC5, 0x80, 0x3F, 0x04, 0x00, 0x09, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D75, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x38, 0x00, 0x30, 0x2C, 0x00, 0x62, 0x66, 0x00, 0x36, 0xC3, 0x00, 0x0D, 0x81, 0x80, 0x18, 0x7E, 0x00, 0x32, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x62, 0x00, 0x6A, 0x42, 0x00, 0x48, 0x5F, 0x00, 0x08, 0xF1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D76, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x12, 0x7E, 0x00, 0x22, 0x44, 0x00, 0x14, 0x88, 0x00, 0x09, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x09, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D77, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x7F, 0x7E, 0x00, 0x04, 0x24, 0x00, 0x1F, 0x64, 0x00, 0x64, 0x35, 0x00, 0x14, 0xC5, 0x00, 0x09, 0x13, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x10, 0x84, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D78, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x62, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x18, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x64, 0x80, 0x48, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D79, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x22, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x11, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0xC1, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x29, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D7A, { 0x00, 0x00, 0x00, 0x08, 0x62, 0x00, 0x18, 0x36, 0x00, 0x30, 0x1C, 0x00, 0x62, 0x36, 0x00, 0x36, 0xE3, 0x00, 0x0C, 0x10, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x20, 0x00, 0x7E, 0x48, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x48, 0x4B, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D7B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x3E, 0x00, 0x30, 0x22, 0x00, 0x62, 0x66, 0x00, 0x36, 0xC4, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x49, 0x00, 0x32, 0x49, 0x00, 0x7E, 0x59, 0x00, 0x0A, 0x7F, 0x00, 0x08, 0x14, 0x00, 0x2A, 0x34, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x64, 0x80, 0x48, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D7D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x62, 0x41, 0x00, 0x36, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x32, 0x08, 0x00, 0x7F, 0x18, 0x00, 0x09, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2B, 0x41, 0x00, 0x69, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D7F, { 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x09, 0x00, 0x08, 0x08, 0x00, 0x32, 0x08, 0x00, 0x12, 0x7F, 0x80, 0x0C, 0x08, 0x00, 0x09, 0x49, 0x00, 0x13, 0x2A, 0x00, 0x3C, 0x9C, 0x00, 0x04, 0x0C, 0x00, 0x15, 0x0A, 0x00, 0x15, 0x1A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x49, 0x00, 0x04, 0x89, 0x00, 0x04, 0x38, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D81, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x4F, 0x80, 0x11, 0xE8, 0x80, 0x64, 0x49, 0x80, 0x2C, 0x49, 0x00, 0x19, 0xEB, 0x00, 0x10, 0x4A, 0x00, 0x24, 0x49, 0x00, 0x7C, 0x48, 0x80, 0x15, 0xF8, 0x80, 0x10, 0x48, 0x80, 0x54, 0x48, 0x80, 0x54, 0xCB, 0x80, 0x54, 0x88, 0x00, 0x11, 0x88, 0x00, 0x13, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D82, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x31, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x36, 0x00, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x32, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x64, 0x00, 0x6A, 0x44, 0x80, 0x48, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D83, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x49, 0x00, 0x30, 0xC9, 0x80, 0x62, 0x88, 0x80, 0x36, 0x08, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x32, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2B, 0x41, 0x00, 0x69, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D85, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7E, 0x00, 0x30, 0x02, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x02, 0x00, 0x0C, 0x7E, 0x00, 0x18, 0x00, 0x00, 0x32, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x0A, 0xFE, 0x80, 0x08, 0x22, 0x00, 0x2A, 0x36, 0x00, 0x2A, 0x1C, 0x00, 0x6A, 0x08, 0x00, 0x48, 0x3E, 0x00, 0x08, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D86, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x62, 0xFF, 0x00, 0x36, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x18, 0xFF, 0x00, 0x32, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x50, 0x00, 0x6A, 0x38, 0x00, 0x48, 0x6E, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D88, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x18, 0x24, 0x00, 0x30, 0xFF, 0x00, 0x62, 0x11, 0x00, 0x36, 0x11, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x90, 0x00, 0x32, 0x90, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x30, 0x80, 0x08, 0x30, 0x80, 0x2A, 0x51, 0x80, 0x2A, 0xD1, 0x00, 0x6A, 0x97, 0x00, 0x49, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D89, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x18, 0x0E, 0x00, 0x30, 0x78, 0x00, 0x62, 0x08, 0x00, 0x36, 0xFF, 0x80, 0x0C, 0x2A, 0x00, 0x18, 0x6B, 0x00, 0x32, 0xC9, 0x80, 0x7F, 0x00, 0x00, 0x09, 0x7E, 0x00, 0x08, 0x12, 0x00, 0x2A, 0x13, 0x80, 0x2B, 0x30, 0x80, 0x69, 0x20, 0x80, 0x48, 0x60, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D8B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0xFF, 0x00, 0x62, 0x81, 0x00, 0x36, 0x91, 0x00, 0x0C, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x32, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x0A, 0x68, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x58, 0x00, 0x2A, 0xD2, 0x00, 0x6A, 0xB2, 0x00, 0x49, 0xA7, 0x00, 0x08, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D8C, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x18, 0x22, 0x00, 0x30, 0x63, 0x00, 0x62, 0xC1, 0x80, 0x36, 0x08, 0x00, 0x0C, 0x1C, 0x00, 0x18, 0x36, 0x00, 0x32, 0x63, 0x00, 0x7E, 0xC1, 0x80, 0x0A, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D8D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x31, 0xFF, 0x80, 0x62, 0x10, 0x00, 0x36, 0x10, 0x00, 0x0C, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x32, 0x81, 0x00, 0x7E, 0x7E, 0x00, 0x0A, 0x04, 0x00, 0x08, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D8E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF1, 0x80, 0x12, 0x1E, 0x00, 0x22, 0x22, 0x00, 0x14, 0x22, 0x00, 0x08, 0x42, 0x00, 0x12, 0xF2, 0x00, 0x3F, 0x1F, 0x80, 0x0A, 0x12, 0x00, 0x08, 0x92, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0x62, 0x00, 0x2A, 0x4F, 0x80, 0x2A, 0x60, 0x00, 0x08, 0x9F, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D8F, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x38, 0x00, 0x12, 0x49, 0x00, 0x22, 0x44, 0x80, 0x14, 0x84, 0x80, 0x08, 0x10, 0x00, 0x12, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x08, 0x42, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xB8, 0x00, 0x2A, 0x0C, 0x00, 0x2A, 0x12, 0x00, 0x08, 0x61, 0x00, 0x09, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D91, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x30, 0x80, 0x80, 0x62, 0x88, 0x80, 0x36, 0x88, 0x80, 0x0C, 0xBE, 0x80, 0x18, 0x88, 0x80, 0x32, 0x9C, 0x80, 0x7E, 0x9C, 0x80, 0x0A, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x6A, 0x80, 0x80, 0x48, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D93, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x25, 0x00, 0x32, 0x4A, 0x00, 0x12, 0x94, 0x00, 0x0C, 0x52, 0x00, 0x09, 0x29, 0x00, 0x11, 0x14, 0x80, 0x3E, 0x80, 0x00, 0x04, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x25, 0x08, 0x00, 0x25, 0x08, 0x00, 0x24, 0x08, 0x00, 0x05, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D96, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x1B, 0xC7, 0x00, 0x10, 0x5C, 0x00, 0x64, 0x84, 0x00, 0x2D, 0x04, 0x00, 0x1B, 0xD4, 0x00, 0x10, 0x57, 0x80, 0x24, 0x54, 0x00, 0x7C, 0x54, 0x00, 0x15, 0x54, 0x00, 0x11, 0x54, 0x00, 0x55, 0x94, 0x00, 0x54, 0x9F, 0x80, 0x55, 0xC0, 0x00, 0x13, 0x70, 0x00, 0x16, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D97, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0xA9, 0x00, 0x62, 0xA9, 0x00, 0x36, 0xA9, 0x00, 0x0C, 0xA7, 0x00, 0x18, 0xC1, 0x00, 0x32, 0x81, 0x00, 0x7E, 0xBD, 0x00, 0x0A, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xBD, 0x00, 0x6A, 0x81, 0x00, 0x48, 0x81, 0x00, 0x08, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D99, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x18, 0xA4, 0x80, 0x30, 0x95, 0x00, 0x62, 0x95, 0x00, 0x36, 0x84, 0x00, 0x0C, 0xBF, 0x80, 0x18, 0x84, 0x00, 0x32, 0x8E, 0x00, 0x7E, 0x8E, 0x00, 0x0A, 0x95, 0x00, 0x08, 0x95, 0x00, 0x2A, 0xA4, 0x80, 0x2A, 0x84, 0x00, 0x6A, 0x80, 0x00, 0x48, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D9A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x08, 0x00, 0x36, 0x08, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x00, 0x00, 0x32, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x0A, 0xA4, 0x80, 0x08, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2B, 0x24, 0x00, 0x69, 0x64, 0x80, 0x48, 0x44, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D9B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x09, 0x00, 0x62, 0x69, 0x00, 0x36, 0x39, 0x00, 0x0C, 0x11, 0x00, 0x18, 0x3B, 0x00, 0x32, 0x6A, 0x00, 0x7E, 0xC6, 0x00, 0x0A, 0x00, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x2C, 0x00, 0x2A, 0xA5, 0x00, 0x6A, 0xA1, 0x80, 0x49, 0xA2, 0x80, 0x09, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D9C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x80, 0x80, 0x08, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x89, 0x00, 0x2B, 0x08, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D9D, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x10, 0x42, 0x00, 0x65, 0xFF, 0x80, 0x2C, 0x42, 0x00, 0x18, 0x42, 0x00, 0x10, 0x42, 0x00, 0x24, 0xE7, 0x00, 0x7C, 0xE7, 0x00, 0x15, 0x5A, 0x80, 0x11, 0x4A, 0x80, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7D9E, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x18, 0x0E, 0x00, 0x30, 0x78, 0x00, 0x62, 0x08, 0x00, 0x36, 0xFF, 0x80, 0x0C, 0x49, 0x00, 0x18, 0x49, 0x00, 0x32, 0x49, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x49, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0xFF, 0x80, 0x6A, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7D9F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x64, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x18, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x14, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x54, 0x9C, 0x00, 0x55, 0x94, 0x00, 0x55, 0x36, 0x00, 0x13, 0x63, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DA0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x32, 0x21, 0x00, 0x12, 0x22, 0x00, 0x0C, 0x7E, 0x00, 0x0A, 0x44, 0x00, 0x11, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DA2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x10, 0x88, 0x80, 0x24, 0x88, 0x80, 0x14, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x12, 0x88, 0x80, 0x3F, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DA3, { 0x00, 0x00, 0x00, 0x08, 0x52, 0x00, 0x18, 0xD3, 0x00, 0x30, 0x91, 0x00, 0x62, 0xFF, 0x00, 0x36, 0x28, 0x00, 0x0C, 0x28, 0x00, 0x19, 0xFF, 0x80, 0x32, 0x44, 0x00, 0x7E, 0x42, 0x00, 0x0A, 0xFF, 0x00, 0x09, 0xC5, 0x80, 0x2A, 0x44, 0x00, 0x2A, 0x4C, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x43, 0x00, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DA6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x18, 0x86, 0x00, 0x65, 0x11, 0x80, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DA7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x18, 0x7F, 0x00, 0x32, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x06, 0x00, 0x08, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DAA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x63, 0x08, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x08, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DAB, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x18, 0x22, 0x00, 0x30, 0x3F, 0x00, 0x62, 0xF0, 0x00, 0x36, 0x1B, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x36, 0x80, 0x32, 0xC3, 0x80, 0x7F, 0x04, 0x00, 0x09, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x2A, 0xF0, 0x00, 0x2B, 0x1B, 0x00, 0x69, 0x0C, 0x00, 0x48, 0x36, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DAC, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x78, 0x00, 0x10, 0x01, 0x00, 0x20, 0x49, 0x00, 0x14, 0x25, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x09, 0x7F, 0x00, 0x08, 0x21, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x14, 0x00, 0x08, 0x62, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DAD, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x12, 0x48, 0x00, 0x22, 0x7F, 0x00, 0x14, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x12, 0x48, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x48, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DAE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0x62, 0x00, 0x11, 0x16, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x0E, 0x00, 0x30, 0x1B, 0x00, 0x20, 0x31, 0x80, 0x60, 0x80, 0x00, 0x05, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DAF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x80, 0x80, 0x37, 0xA0, 0x80, 0x0C, 0x3C, 0x80, 0x18, 0x50, 0x80, 0x32, 0x10, 0x80, 0x7E, 0xFE, 0x80, 0x0A, 0x10, 0x80, 0x08, 0x54, 0x80, 0x2A, 0x54, 0x80, 0x2B, 0x54, 0x80, 0x69, 0x7D, 0x80, 0x48, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DB0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x80, 0x80, 0x36, 0x80, 0x80, 0x0C, 0x3E, 0x00, 0x18, 0x22, 0x00, 0x32, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x09, 0x20, 0x00, 0x08, 0x20, 0x00, 0x2A, 0x3F, 0x00, 0x2B, 0x21, 0x00, 0x69, 0x21, 0x00, 0x48, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DB1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x24, 0xA2, 0x80, 0x1C, 0x94, 0x80, 0x08, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x3F, 0xAA, 0x80, 0x09, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DB2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x24, 0xA2, 0x80, 0x14, 0x94, 0x80, 0x08, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x3F, 0xFF, 0x80, 0x09, 0xA0, 0x80, 0x08, 0xA0, 0x80, 0x2A, 0xA0, 0x80, 0x2A, 0xBF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DB3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x65, 0x24, 0x80, 0x2D, 0x24, 0x80, 0x19, 0xA6, 0x80, 0x11, 0x65, 0x80, 0x25, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x15, 0xA6, 0x80, 0x11, 0x65, 0x80, 0x55, 0x24, 0x80, 0x55, 0x24, 0x80, 0x55, 0x24, 0x80, 0x11, 0x24, 0x80, 0x12, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DB4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x22, 0xA6, 0x00, 0x14, 0x62, 0x00, 0x08, 0x55, 0x00, 0x12, 0x88, 0x80, 0x3F, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x6A, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x56, 0x00, 0x08, 0x89, 0x00, 0x09, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DB5, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x08, 0x79, 0x00, 0x12, 0x48, 0x80, 0x22, 0x44, 0x00, 0x14, 0x80, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x1A, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x49, 0x00, 0x08, 0x88, 0x80, 0x0B, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DB6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x91, 0x00, 0x62, 0x91, 0x00, 0x36, 0xFF, 0x00, 0x0C, 0x91, 0x00, 0x18, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x2A, 0x56, 0x00, 0x2A, 0xD2, 0x00, 0x6A, 0x93, 0x00, 0x49, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DB7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x00, 0x00, 0x2C, 0x44, 0x00, 0x18, 0x44, 0x00, 0x10, 0xEE, 0x00, 0x25, 0xAB, 0x00, 0x7C, 0x00, 0x00, 0x14, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x54, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DB8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x12, 0x22, 0x00, 0x22, 0x41, 0x00, 0x14, 0xBE, 0x80, 0x08, 0x00, 0x00, 0x12, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x55, 0x00, 0x08, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DB9, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x18, 0xF4, 0x00, 0x10, 0x94, 0x00, 0x65, 0x94, 0x00, 0x2D, 0x37, 0x80, 0x1B, 0xE4, 0x00, 0x10, 0x44, 0x00, 0x24, 0xE4, 0x00, 0x7D, 0xB8, 0x00, 0x17, 0x0F, 0x80, 0x10, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DBA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x24, 0x14, 0x00, 0x14, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x12, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x02, 0x00, 0x08, 0x02, 0x00, 0x2A, 0x7A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x7A, 0x00, 0x2A, 0x02, 0x00, 0x28, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DBB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x80, 0x80, 0x08, 0x00, 0x00, 0x12, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x4F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x28, 0x48, 0x00, 0x08, 0xBF, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DBD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x0F, 0x80, 0x22, 0x08, 0x00, 0x14, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DBE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x14, 0xFF, 0x00, 0x24, 0x08, 0x00, 0x1B, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x3E, 0x44, 0x80, 0x09, 0xA7, 0x80, 0x0B, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0xC2, 0x00, 0x2B, 0x24, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x14, 0x00, 0x08, 0x62, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DBF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x10, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DC2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x48, 0x80, 0x30, 0x49, 0x80, 0x62, 0xDD, 0x00, 0x36, 0x94, 0x00, 0x0C, 0x36, 0x00, 0x18, 0x63, 0x00, 0x32, 0xC9, 0x80, 0x7E, 0x08, 0x00, 0x0A, 0x48, 0x80, 0x08, 0x49, 0x80, 0x2A, 0xDD, 0x00, 0x2A, 0x94, 0x00, 0x6A, 0x36, 0x00, 0x48, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DC3, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x30, 0x42, 0x00, 0x62, 0xE7, 0x00, 0x36, 0xA5, 0x00, 0x0D, 0xBD, 0x80, 0x18, 0x00, 0x00, 0x32, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x4F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x6A, 0xE8, 0x00, 0x48, 0xB8, 0x00, 0x09, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DC4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x62, 0x82, 0x00, 0x36, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x18, 0x82, 0x00, 0x32, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x0A, 0x88, 0x00, 0x08, 0x8B, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0x88, 0x80, 0x48, 0xE9, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DC5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x11, 0x20, 0x00, 0x65, 0x20, 0x00, 0x2D, 0x3F, 0x80, 0x19, 0xE8, 0x80, 0x11, 0x28, 0x80, 0x25, 0x2D, 0x80, 0x7D, 0x25, 0x00, 0x15, 0xE5, 0x00, 0x11, 0x27, 0x00, 0x55, 0x22, 0x00, 0x55, 0x27, 0x00, 0x55, 0xE5, 0x00, 0x13, 0x2D, 0x80, 0x10, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DC6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7E, 0x00, 0x30, 0x42, 0x00, 0x62, 0x42, 0x00, 0x36, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x18, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x7E, 0x20, 0x00, 0x0A, 0x7F, 0x80, 0x08, 0xCA, 0x80, 0x2B, 0x92, 0x80, 0x2A, 0x24, 0x80, 0x6A, 0xC9, 0x80, 0x48, 0x11, 0x00, 0x08, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DC7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x24, 0x80, 0x12, 0x49, 0x00, 0x22, 0x92, 0x00, 0x14, 0x49, 0x00, 0x08, 0x24, 0x80, 0x12, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x22, 0x01, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x8C, 0x00, 0x3F, 0x8A, 0x00, 0x22, 0x11, 0x80, 0x3F, 0xA0, 0x00, 0x05, 0x10, 0x00, 0x02, 0x24, 0x00, 0x01, 0x42, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x80, 0x08, 0x84, 0x00, 0x10, 0x82, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DCB, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x14, 0x00, 0x12, 0x14, 0x00, 0x22, 0xF7, 0x80, 0x14, 0x14, 0x00, 0x08, 0x14, 0x00, 0x12, 0x14, 0x00, 0x3F, 0xF7, 0x80, 0x09, 0x14, 0x00, 0x08, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x77, 0x80, 0x2B, 0xA4, 0x00, 0x2A, 0x24, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DCC, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x18, 0x0E, 0x00, 0x30, 0x78, 0x00, 0x62, 0x08, 0x00, 0x36, 0xFF, 0x80, 0x0C, 0x2A, 0x00, 0x18, 0x6B, 0x00, 0x32, 0xC9, 0x80, 0x7E, 0x08, 0x00, 0x0A, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x21, 0x00, 0x2A, 0x42, 0x00, 0x6A, 0x7C, 0x00, 0x48, 0x0F, 0x00, 0x08, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DCD, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x18, 0x7C, 0x00, 0x30, 0x44, 0x00, 0x62, 0x44, 0x00, 0x36, 0x7F, 0x80, 0x0C, 0x44, 0x00, 0x18, 0x44, 0x00, 0x32, 0x72, 0x80, 0x7E, 0xC1, 0x80, 0x0A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DCE, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x18, 0x09, 0x00, 0x30, 0x09, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x18, 0xFC, 0x80, 0x32, 0x94, 0x80, 0x7E, 0x95, 0x80, 0x0A, 0x95, 0x00, 0x08, 0xF7, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0x76, 0x00, 0x6A, 0xCA, 0x80, 0x48, 0x13, 0x80, 0x08, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DCF, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x18, 0x22, 0x00, 0x30, 0x63, 0x00, 0x62, 0xD1, 0x80, 0x36, 0x10, 0x00, 0x0C, 0x32, 0x00, 0x18, 0x22, 0x00, 0x32, 0x3F, 0x00, 0x7E, 0xE1, 0x80, 0x0A, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x51, 0x00, 0x6A, 0x51, 0x80, 0x48, 0xD2, 0x80, 0x08, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DD1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7E, 0x00, 0x30, 0x02, 0x00, 0x62, 0x7E, 0x00, 0x36, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x7E, 0xC9, 0x00, 0x0A, 0x6B, 0x00, 0x08, 0x0A, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x2E, 0x00, 0x6A, 0x6B, 0x00, 0x48, 0xC9, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DD2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x11, 0x00, 0x30, 0x7F, 0x00, 0x62, 0x12, 0x00, 0x36, 0x12, 0x00, 0x0C, 0x14, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x7E, 0x10, 0x00, 0x0A, 0x3F, 0x00, 0x08, 0xE1, 0x00, 0x2A, 0x21, 0x00, 0x2B, 0x3F, 0x00, 0x69, 0x21, 0x00, 0x48, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DD5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x31, 0xFF, 0x80, 0x62, 0x42, 0x00, 0x36, 0x66, 0x00, 0x0C, 0x3C, 0x00, 0x18, 0x66, 0x00, 0x33, 0xC3, 0x80, 0x7E, 0x42, 0x00, 0x0A, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x6A, 0xC2, 0x00, 0x48, 0x82, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DD6, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x80, 0x12, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x24, 0x12, 0x00, 0x19, 0xFF, 0x80, 0x12, 0x04, 0x00, 0x3F, 0x0A, 0x00, 0x09, 0x30, 0x00, 0x08, 0xFF, 0x00, 0x2B, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DD7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x4F, 0x80, 0x10, 0x48, 0x80, 0x65, 0xF8, 0x80, 0x2C, 0x48, 0x80, 0x18, 0x4F, 0x80, 0x10, 0xC8, 0x80, 0x24, 0xE8, 0x80, 0x7C, 0xE8, 0x80, 0x15, 0x5F, 0x80, 0x11, 0x48, 0x80, 0x54, 0x48, 0x80, 0x54, 0x48, 0x80, 0x54, 0x48, 0x80, 0x10, 0x4F, 0x80, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DD8, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x08, 0x05, 0x00, 0x12, 0x04, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x84, 0x00, 0x08, 0xFC, 0x80, 0x12, 0x84, 0x80, 0x3E, 0x85, 0x00, 0x09, 0xBD, 0x00, 0x2A, 0xAE, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x86, 0x80, 0x2B, 0x09, 0x80, 0x09, 0x11, 0x80, 0x0A, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DD9, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x31, 0xFF, 0x80, 0x62, 0x42, 0x00, 0x36, 0x42, 0x00, 0x0C, 0x7E, 0x00, 0x18, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x0A, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x6A, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DDA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x10, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x08, 0x80, 0x09, 0xFB, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x2C, 0x00, 0x2A, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DDC, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x80, 0x08, 0x3E, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x18, 0x00, 0x21, 0x32, 0x00, 0x3F, 0x16, 0x00, 0x21, 0x0C, 0x00, 0x21, 0x19, 0x00, 0x3F, 0x3F, 0x80, 0x08, 0x04, 0x80, 0x7F, 0x84, 0x00, 0x48, 0x95, 0x00, 0x48, 0x95, 0x00, 0x48, 0xB5, 0x80, 0x49, 0xA4, 0x80, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DDD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x08, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x3F, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x4F, 0x80, 0x2A, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DDE, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0xCE, 0x00, 0x10, 0x8A, 0x00, 0x24, 0x8A, 0x00, 0x14, 0xEA, 0x80, 0x08, 0x93, 0x80, 0x12, 0xA0, 0x00, 0x3F, 0x80, 0x00, 0x09, 0xE0, 0x00, 0x08, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xEA, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x8C, 0x00, 0x08, 0x92, 0x00, 0x08, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DE0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x14, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x3F, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x08, 0x4B, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DE1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x14, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x44, 0x00, 0x3F, 0x7A, 0x80, 0x09, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DE2, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x18, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x42, 0x00, 0x2C, 0x42, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x14, 0x91, 0x00, 0x10, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DE3, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x14, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x13, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x0A, 0x51, 0x00, 0x08, 0x9A, 0x00, 0x2B, 0x2C, 0x00, 0x2A, 0x4C, 0x00, 0x2B, 0x9A, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x49, 0x00, 0x08, 0x89, 0x00, 0x0B, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DE4, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x18, 0x92, 0x00, 0x13, 0xFF, 0x80, 0x64, 0x92, 0x00, 0x2C, 0x92, 0x00, 0x18, 0x9E, 0x00, 0x10, 0x80, 0x00, 0x24, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x54, 0x54, 0x00, 0x54, 0xD6, 0x00, 0x54, 0x93, 0x00, 0x11, 0x91, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DE5, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x5F, 0x00, 0x10, 0x51, 0x00, 0x64, 0xD1, 0x00, 0x2C, 0x91, 0x00, 0x19, 0x9F, 0x00, 0x12, 0x84, 0x00, 0x24, 0x84, 0x00, 0x7C, 0xBF, 0x80, 0x14, 0x84, 0x00, 0x10, 0x8E, 0x00, 0x54, 0x8E, 0x00, 0x54, 0x95, 0x00, 0x54, 0x95, 0x00, 0x10, 0xA4, 0x80, 0x10, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DE6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x64, 0x91, 0x00, 0x2C, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x10, 0x91, 0x00, 0x24, 0x91, 0x00, 0x7C, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x10, 0x08, 0x00, 0x54, 0x2C, 0x00, 0x54, 0xA5, 0x00, 0x54, 0xA1, 0x80, 0x11, 0xA2, 0x80, 0x11, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DE8, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF0, 0x00, 0x12, 0x80, 0x00, 0x22, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x08, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x09, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0xFF, 0x80, 0x29, 0x94, 0x80, 0x09, 0x94, 0x80, 0x0A, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DE9, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0x72, 0x00, 0x12, 0x49, 0x00, 0x22, 0x84, 0x00, 0x14, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x8C, 0x00, 0x29, 0x0C, 0x00, 0x0A, 0x32, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DEA, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x18, 0xBF, 0x80, 0x10, 0x88, 0x00, 0x64, 0x88, 0x00, 0x2C, 0x8F, 0x00, 0x19, 0xC9, 0x00, 0x11, 0xAD, 0x00, 0x26, 0x93, 0x00, 0x7C, 0x91, 0x00, 0x14, 0x99, 0x00, 0x10, 0xA6, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x10, 0xBF, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DEB, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x10, 0xFF, 0x00, 0x64, 0xA9, 0x00, 0x2D, 0x29, 0x00, 0x18, 0x69, 0x00, 0x10, 0x9F, 0x00, 0x24, 0x22, 0x00, 0x7C, 0x46, 0x00, 0x14, 0x00, 0x00, 0x10, 0x30, 0x00, 0x54, 0x58, 0x00, 0x55, 0x43, 0x00, 0x55, 0x45, 0x80, 0x11, 0x4C, 0x80, 0x11, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DEC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x24, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x3F, 0xBD, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xBD, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x30, 0x88, 0x80, 0x62, 0xFF, 0x80, 0x36, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x18, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DEF, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x17, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DF1, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x18, 0xBF, 0x00, 0x10, 0x81, 0x00, 0x65, 0x81, 0x00, 0x2D, 0x7F, 0x80, 0x1B, 0x20, 0x00, 0x11, 0x20, 0x00, 0x25, 0x7F, 0x00, 0x7D, 0x88, 0x00, 0x15, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x55, 0x1C, 0x00, 0x55, 0x14, 0x00, 0x11, 0x36, 0x00, 0x11, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DF2, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x19, 0xC4, 0x00, 0x11, 0x44, 0x00, 0x65, 0x55, 0x00, 0x2D, 0xD5, 0x00, 0x19, 0x55, 0x80, 0x11, 0x64, 0x80, 0x25, 0x44, 0x00, 0x7D, 0xC5, 0x00, 0x15, 0x4D, 0x00, 0x11, 0x43, 0x00, 0x55, 0x42, 0x00, 0x55, 0xC6, 0x00, 0x54, 0x0C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7DF4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x14, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x6B, 0x00, 0x09, 0x5D, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x1A, 0x00, 0x2A, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DF5, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x18, 0x55, 0x00, 0x30, 0x49, 0x00, 0x62, 0x55, 0x00, 0x36, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x24, 0x00, 0x32, 0x64, 0x00, 0x7E, 0xD3, 0x80, 0x0A, 0x3E, 0x00, 0x08, 0x62, 0x00, 0x2A, 0xD6, 0x00, 0x2A, 0x14, 0x00, 0x6A, 0x0C, 0x00, 0x48, 0x3B, 0x00, 0x08, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DF6, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x18, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x65, 0xFF, 0x80, 0x2D, 0x48, 0x80, 0x1B, 0x48, 0x80, 0x11, 0x7F, 0x80, 0x25, 0x48, 0x80, 0x7D, 0x48, 0x80, 0x15, 0x7F, 0x80, 0x11, 0x08, 0x00, 0x55, 0x48, 0x00, 0x55, 0x38, 0x00, 0x55, 0x10, 0x00, 0x11, 0x3C, 0x00, 0x11, 0x67, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DF9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7E, 0x00, 0x30, 0x42, 0x00, 0x62, 0x7E, 0x00, 0x36, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x18, 0x7E, 0x00, 0x32, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x4F, 0x00, 0x2A, 0x48, 0x00, 0x6A, 0xE8, 0x00, 0x48, 0xB8, 0x00, 0x09, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DFA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x62, 0x4F, 0x00, 0x36, 0x49, 0x00, 0x0C, 0x49, 0x00, 0x18, 0x49, 0x00, 0x32, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x0A, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x6A, 0xBE, 0x80, 0x48, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7DFB, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x12, 0x84, 0x00, 0x22, 0x84, 0x00, 0x15, 0x2F, 0x80, 0x09, 0x29, 0x00, 0x12, 0xF9, 0x00, 0x3F, 0x19, 0x00, 0x08, 0xAA, 0x00, 0x08, 0x86, 0x00, 0x2A, 0x84, 0x00, 0x2B, 0xE4, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2B, 0xF1, 0x00, 0x08, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E00, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xEF, 0x80, 0x11, 0x20, 0x80, 0x65, 0x20, 0x80, 0x2D, 0x20, 0x80, 0x19, 0xEF, 0x80, 0x11, 0x00, 0x00, 0x25, 0x1F, 0x80, 0x7D, 0xE8, 0x80, 0x15, 0x09, 0x80, 0x11, 0x0D, 0x00, 0x55, 0xE7, 0x00, 0x55, 0x02, 0x00, 0x55, 0x07, 0x00, 0x11, 0x0D, 0x00, 0x11, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E01, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x30, 0x02, 0x00, 0x62, 0xFE, 0x00, 0x36, 0x02, 0x00, 0x0D, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x32, 0x51, 0x00, 0x7E, 0x9A, 0x00, 0x0A, 0x2C, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x9C, 0x00, 0x2A, 0x2A, 0x00, 0x6A, 0x49, 0x00, 0x48, 0x88, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E04, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x91, 0x00, 0x62, 0xFF, 0x00, 0x36, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x18, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x6A, 0xFF, 0x00, 0x48, 0x10, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E05, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x18, 0x04, 0x80, 0x10, 0x04, 0x00, 0x65, 0xFF, 0x80, 0x2D, 0x04, 0x00, 0x19, 0x74, 0x00, 0x11, 0x04, 0x80, 0x25, 0x24, 0x80, 0x7D, 0xFD, 0x80, 0x15, 0x55, 0x00, 0x11, 0x57, 0x00, 0x55, 0x72, 0x00, 0x55, 0x2A, 0x80, 0x55, 0x46, 0x80, 0x11, 0x0B, 0x80, 0x12, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E08, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x23, 0x11, 0x00, 0x0C, 0x60, 0x00, 0x02, 0x81, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x04, 0x88, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E09, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x22, 0x44, 0x00, 0x14, 0x99, 0x00, 0x0B, 0xFF, 0x80, 0x12, 0x08, 0x80, 0x3F, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E0A, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x12, 0x81, 0x00, 0x23, 0x7C, 0x80, 0x14, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x12, 0x02, 0x00, 0x3E, 0x81, 0x00, 0x0B, 0x00, 0x80, 0x08, 0xFF, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E0B, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x19, 0x08, 0x00, 0x11, 0xBF, 0x00, 0x64, 0xA1, 0x00, 0x2C, 0x21, 0x00, 0x18, 0x21, 0x00, 0x10, 0x3F, 0x00, 0x25, 0xA0, 0x00, 0x7C, 0xA0, 0x00, 0x14, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x54, 0xA1, 0x00, 0x54, 0xA1, 0x00, 0x55, 0xBF, 0x00, 0x11, 0x40, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E10, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x91, 0x00, 0x62, 0x55, 0x00, 0x36, 0x55, 0x00, 0x0C, 0x7D, 0x00, 0x18, 0x23, 0x00, 0x32, 0x46, 0x00, 0x7F, 0x20, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x91, 0x00, 0x2A, 0x55, 0x00, 0x2B, 0x55, 0x00, 0x69, 0x7D, 0x00, 0x48, 0x23, 0x00, 0x08, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E11, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x18, 0x44, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x48, 0x00, 0x2D, 0xFF, 0x00, 0x18, 0x49, 0x00, 0x10, 0x49, 0x00, 0x27, 0xFF, 0x80, 0x7C, 0x49, 0x00, 0x14, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x4C, 0x00, 0x54, 0xCA, 0x00, 0x55, 0x4B, 0x00, 0x12, 0x49, 0x80, 0x10, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E12, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x18, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x64, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x24, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x14, 0x20, 0x00, 0x10, 0x40, 0x00, 0x54, 0xFF, 0x00, 0x55, 0x88, 0x00, 0x54, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E15, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x22, 0x92, 0x00, 0x14, 0xAA, 0x00, 0x08, 0xC6, 0x00, 0x12, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x0A, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x2B, 0x29, 0x00, 0x2B, 0x29, 0x00, 0x2B, 0x29, 0x00, 0x29, 0x29, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E17, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x64, 0x00, 0x00, 0x2C, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x24, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x14, 0x51, 0x00, 0x10, 0x5B, 0x00, 0x54, 0xCA, 0x00, 0x55, 0x4C, 0x00, 0x54, 0x46, 0x00, 0x10, 0x73, 0x00, 0x11, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E1B, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x12, 0x00, 0x13, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x3F, 0x91, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x44, 0x00, 0x2A, 0x24, 0x00, 0x28, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E1C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x62, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2B, 0x7F, 0x00, 0x69, 0x22, 0x00, 0x48, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E1D, { 0x00, 0x00, 0x00, 0x08, 0x8F, 0x00, 0x08, 0xF8, 0x00, 0x12, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x08, 0xBF, 0x00, 0x12, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x09, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E1E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E1F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x24, 0xFF, 0x00, 0x14, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x12, 0xA9, 0x00, 0x3F, 0xA6, 0x00, 0x09, 0xBA, 0x80, 0x2A, 0xE1, 0x80, 0x2A, 0x82, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0xA2, 0x00, 0x2A, 0x92, 0x00, 0x08, 0x82, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E20, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x23, 0x80, 0x7F, 0x80, 0x00, 0x40, 0xBF, 0x00, 0x5E, 0x91, 0x00, 0x24, 0x11, 0x00, 0x68, 0x1B, 0x00, 0x11, 0x0E, 0x00, 0x7E, 0x84, 0x00, 0x08, 0x0E, 0x00, 0x2A, 0x1B, 0x00, 0x49, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E21, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x14, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x3F, 0x22, 0x00, 0x09, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E22, { 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x24, 0x91, 0x00, 0x25, 0x64, 0x80, 0x3C, 0x28, 0x00, 0x24, 0x12, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x54, 0x00, 0x64, 0xD6, 0x00, 0x4D, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E23, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0F, 0xB8, 0x00, 0x28, 0x88, 0x00, 0x2F, 0xCA, 0x00, 0x28, 0xB2, 0x00, 0x2F, 0x94, 0x00, 0x28, 0x89, 0x00, 0x2F, 0x97, 0x80, 0x20, 0x7C, 0x80, 0x3F, 0xC8, 0x00, 0x24, 0x0A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x29, 0x00, 0x24, 0xA9, 0x00, 0x24, 0x88, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E26, { 0x00, 0x00, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x21, 0x8A, 0x00, 0x29, 0x0A, 0x00, 0x4B, 0x3F, 0x80, 0x30, 0x84, 0x00, 0x10, 0x84, 0x00, 0x25, 0xA4, 0x00, 0x7D, 0x24, 0x00, 0x13, 0x27, 0x00, 0x11, 0x24, 0x00, 0x59, 0x24, 0x00, 0x55, 0x24, 0x00, 0x51, 0x34, 0x00, 0x11, 0x2C, 0x00, 0x11, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E27, { 0x00, 0x00, 0x00, 0x08, 0x90, 0x00, 0x18, 0x90, 0x00, 0x10, 0x9F, 0x80, 0x65, 0xB1, 0x00, 0x2D, 0x2B, 0x00, 0x19, 0x4E, 0x00, 0x13, 0x44, 0x00, 0x25, 0x5E, 0x00, 0x7D, 0x73, 0x80, 0x15, 0x44, 0x00, 0x11, 0x7F, 0x80, 0x55, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x55, 0x00, 0x11, 0x24, 0x80, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E28, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x62, 0x7F, 0x00, 0x36, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x88, 0x80, 0x32, 0xC9, 0x80, 0x7E, 0x49, 0x00, 0x0A, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x6A, 0x64, 0x80, 0x48, 0x44, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E2B, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x4F, 0x80, 0x12, 0x10, 0x80, 0x22, 0x29, 0x00, 0x14, 0x46, 0x00, 0x09, 0x06, 0x00, 0x12, 0x99, 0x80, 0x3D, 0x64, 0x00, 0x08, 0x3F, 0x80, 0x09, 0x84, 0x00, 0x2A, 0xBF, 0x80, 0x2A, 0x84, 0x00, 0x2A, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E2C, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x18, 0x04, 0x80, 0x10, 0x04, 0x00, 0x65, 0xFF, 0x80, 0x2D, 0x04, 0x00, 0x19, 0x24, 0x00, 0x11, 0x3C, 0x80, 0x25, 0x24, 0x80, 0x7D, 0xFD, 0x80, 0x15, 0x25, 0x00, 0x11, 0x77, 0x00, 0x55, 0x6A, 0x00, 0x55, 0xAA, 0x80, 0x55, 0x26, 0x80, 0x11, 0x6B, 0x80, 0x12, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E2D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x36, 0x55, 0x00, 0x0C, 0x49, 0x00, 0x18, 0x55, 0x00, 0x32, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x90, 0x80, 0x2A, 0x94, 0x80, 0x6A, 0xBA, 0x80, 0x48, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E2E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x14, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x14, 0x84, 0x00, 0x3E, 0x88, 0x00, 0x29, 0xBF, 0x00, 0x0A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E2F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x14, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E31, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x12, 0x89, 0x00, 0x22, 0x96, 0x80, 0x15, 0x12, 0x80, 0x08, 0x44, 0x00, 0x14, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x0A, 0x94, 0x00, 0x08, 0x97, 0x80, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0xB4, 0x00, 0x2A, 0xAF, 0x80, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E32, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x49, 0x00, 0x62, 0x7F, 0x00, 0x36, 0x49, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x08, 0x00, 0x32, 0x12, 0x00, 0x7F, 0x24, 0x00, 0x09, 0x19, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x08, 0x80, 0x2B, 0x2A, 0x00, 0x69, 0x6B, 0x00, 0x48, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E33, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x10, 0x00, 0x2C, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x7C, 0xFF, 0x00, 0x14, 0x12, 0x00, 0x10, 0x3F, 0x00, 0x55, 0xE1, 0x80, 0x54, 0x02, 0x00, 0x55, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x10, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E35, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x18, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x64, 0x42, 0x00, 0x2C, 0x7E, 0x00, 0x18, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x25, 0x24, 0x80, 0x7D, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x42, 0x00, 0x54, 0x24, 0x00, 0x54, 0x18, 0x00, 0x10, 0x76, 0x00, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E36, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x7E, 0x00, 0x7F, 0x92, 0x00, 0x11, 0x32, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x2A, 0x80, 0x3F, 0x4A, 0x80, 0x04, 0x01, 0x80, 0x00, 0x80, 0x00, 0x05, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E37, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x14, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x09, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x2A, 0x40, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x84, 0x00, 0x2B, 0xE8, 0x00, 0x08, 0x3C, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E39, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x65, 0xFF, 0x80, 0x2D, 0x24, 0x80, 0x19, 0x24, 0x80, 0x11, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x54, 0x92, 0x00, 0x55, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E3A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x19, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x88, 0x00, 0x2D, 0x3F, 0x00, 0x19, 0xA9, 0x00, 0x10, 0xA9, 0x00, 0x24, 0x3F, 0x00, 0x7D, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x10, 0xBF, 0x00, 0x54, 0x88, 0x00, 0x54, 0xFF, 0x80, 0x55, 0x88, 0x00, 0x11, 0x48, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E3B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x25, 0x55, 0x00, 0x29, 0x55, 0x80, 0x21, 0x00, 0x00, 0x20, 0x44, 0x00, 0x22, 0x88, 0x00, 0x21, 0x11, 0x00, 0x2F, 0xFF, 0x80, 0x60, 0x20, 0x80, 0x41, 0x24, 0x00, 0x43, 0x26, 0x00, 0x0E, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E3D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x14, 0xA1, 0x00, 0x08, 0xBD, 0x00, 0x12, 0xE5, 0x00, 0x3F, 0x99, 0x00, 0x09, 0x95, 0x00, 0x08, 0xA3, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x49, 0x00, 0x29, 0x42, 0x80, 0x09, 0x7E, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E3E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E3F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x18, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x64, 0x82, 0x00, 0x2D, 0x24, 0x80, 0x1B, 0xE7, 0x80, 0x10, 0x10, 0x00, 0x24, 0x28, 0x00, 0x7C, 0xC6, 0x00, 0x17, 0x93, 0x80, 0x10, 0x20, 0x00, 0x54, 0xC8, 0x00, 0x54, 0x33, 0x00, 0x54, 0xC6, 0x00, 0x10, 0x1C, 0x00, 0x11, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E41, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x10, 0x3F, 0x80, 0x2F, 0xA1, 0x00, 0x0A, 0xD2, 0x00, 0x3F, 0x8C, 0x00, 0x15, 0x16, 0x00, 0x3F, 0x61, 0x80, 0x05, 0x08, 0x00, 0x02, 0x10, 0x00, 0x01, 0x21, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0x40, 0x80, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x18, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E43, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x80, 0x10, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x14, 0x80, 0x80, 0x08, 0xF7, 0x80, 0x12, 0x94, 0x80, 0x3F, 0xD6, 0x80, 0x09, 0xB5, 0x80, 0x08, 0x94, 0x80, 0x2A, 0xD6, 0x80, 0x2A, 0xB5, 0x80, 0x2A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x08, 0x94, 0x80, 0x09, 0x39, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDE, 0x00, 0x28, 0x12, 0x00, 0x2F, 0x93, 0x80, 0x32, 0x20, 0x00, 0x2F, 0x9F, 0x00, 0x25, 0x09, 0x00, 0x28, 0x86, 0x00, 0x3F, 0xD9, 0x80, 0x00, 0x80, 0x00, 0x05, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E45, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x18, 0x92, 0x00, 0x30, 0xDB, 0x00, 0x62, 0x49, 0x00, 0x36, 0xFF, 0x00, 0x0C, 0x91, 0x00, 0x18, 0xFF, 0x00, 0x32, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x34, 0x00, 0x2A, 0x56, 0x00, 0x6A, 0xD3, 0x00, 0x49, 0x91, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E46, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x2A, 0x80, 0x22, 0x5D, 0x80, 0x14, 0xAA, 0x80, 0x08, 0x4C, 0x80, 0x12, 0x19, 0x80, 0x3F, 0x18, 0x00, 0x09, 0x26, 0x00, 0x08, 0xC9, 0x80, 0x2A, 0x32, 0x00, 0x2A, 0xCC, 0x00, 0x2A, 0x31, 0x00, 0x2A, 0xC6, 0x00, 0x08, 0x18, 0x00, 0x08, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E47, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x07, 0x00, 0x0F, 0xB8, 0x00, 0x15, 0x0A, 0x00, 0x36, 0x32, 0x00, 0x0C, 0x14, 0x00, 0x18, 0x09, 0x00, 0x28, 0x7F, 0x80, 0x0F, 0xC4, 0x80, 0x12, 0x04, 0x00, 0x3F, 0xF5, 0x00, 0x02, 0x15, 0x00, 0x12, 0x54, 0x80, 0x12, 0x64, 0x80, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E4A, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x18, 0x45, 0x00, 0x11, 0xF5, 0x80, 0x64, 0x44, 0x80, 0x2C, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0xA4, 0x00, 0x24, 0xA5, 0x00, 0x7E, 0xAD, 0x00, 0x09, 0xB5, 0x00, 0x08, 0xA7, 0x00, 0x2C, 0xA2, 0x00, 0x2A, 0xA6, 0x00, 0x68, 0xF6, 0x80, 0x4B, 0x8B, 0x80, 0x08, 0x19, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E4B, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xA3, 0x80, 0x24, 0xC0, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xDB, 0x80, 0x04, 0x80, 0x00, 0x03, 0x10, 0x00, 0x01, 0xA1, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x80, 0x38, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E4D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x09, 0x00, 0x62, 0xFF, 0x80, 0x36, 0x09, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x08, 0x00, 0x32, 0xAA, 0x80, 0x7E, 0xAA, 0x80, 0x0A, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x9C, 0x80, 0x6A, 0xAA, 0x80, 0x48, 0x88, 0x80, 0x09, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E4E, { 0x00, 0x00, 0x00, 0x08, 0x85, 0x00, 0x18, 0x84, 0x80, 0x10, 0xF4, 0x00, 0x64, 0x9F, 0x80, 0x2D, 0x54, 0x00, 0x19, 0x34, 0x00, 0x12, 0xAE, 0x00, 0x24, 0x6A, 0x00, 0x7C, 0xCB, 0x00, 0x15, 0x91, 0x80, 0x10, 0x00, 0x00, 0x54, 0x00, 0x00, 0x55, 0x49, 0x00, 0x51, 0x49, 0x00, 0x13, 0x6D, 0x80, 0x12, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E50, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x10, 0x00, 0x2C, 0xFF, 0x00, 0x18, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x7C, 0xFF, 0x00, 0x14, 0x12, 0x00, 0x10, 0x7F, 0x00, 0x55, 0xC1, 0x80, 0x54, 0x10, 0x00, 0x54, 0xA9, 0x00, 0x10, 0xA2, 0x80, 0x11, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E52, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x22, 0x00, 0x12, 0x41, 0x00, 0x23, 0x80, 0x80, 0x14, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x12, 0xAA, 0x80, 0x3F, 0x9C, 0x80, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E54, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x12, 0x49, 0x00, 0x23, 0xF8, 0x00, 0x14, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x13, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x0A, 0xE9, 0x00, 0x08, 0xA9, 0x00, 0x2A, 0xEA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xE4, 0x80, 0x2A, 0xAA, 0x80, 0x08, 0x31, 0x80, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E55, { 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x08, 0x12, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x18, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x3F, 0x2A, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E56, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x19, 0x24, 0x00, 0x13, 0xF4, 0x00, 0x65, 0x27, 0x80, 0x2D, 0x2D, 0x00, 0x1B, 0xF9, 0x00, 0x10, 0x05, 0x00, 0x25, 0xE5, 0x00, 0x7D, 0x25, 0x00, 0x15, 0xE7, 0x00, 0x11, 0x22, 0x00, 0x55, 0xE2, 0x00, 0x55, 0x27, 0x00, 0x55, 0x25, 0x00, 0x11, 0x25, 0x00, 0x11, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E58, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x30, 0x22, 0x00, 0x62, 0x14, 0x00, 0x37, 0xFF, 0x80, 0x0C, 0x29, 0x00, 0x18, 0x4A, 0x00, 0x32, 0x98, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x94, 0x80, 0x08, 0xA4, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0xA4, 0x80, 0x6A, 0xA4, 0x80, 0x48, 0xBC, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E59, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x18, 0xF8, 0x00, 0x11, 0x11, 0x00, 0x64, 0x92, 0x00, 0x2D, 0xFF, 0x80, 0x18, 0x54, 0x00, 0x10, 0x56, 0x00, 0x24, 0xD3, 0x00, 0x7D, 0x91, 0x80, 0x14, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E5A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x64, 0x24, 0x00, 0x2C, 0xA5, 0x00, 0x18, 0x42, 0x00, 0x10, 0xFF, 0x00, 0x25, 0x42, 0x80, 0x7C, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x54, 0x10, 0x00, 0x54, 0x52, 0x00, 0x54, 0xD3, 0x00, 0x11, 0x91, 0x80, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E5D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x65, 0xEF, 0x00, 0x2D, 0x29, 0x00, 0x19, 0xEF, 0x00, 0x11, 0x01, 0x00, 0x25, 0x7D, 0x00, 0x7D, 0x45, 0x00, 0x15, 0x7D, 0x00, 0x11, 0x45, 0x00, 0x55, 0x7D, 0x00, 0x55, 0x45, 0x00, 0x55, 0x45, 0x00, 0x11, 0x4D, 0x00, 0x11, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E5E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x3F, 0x22, 0x00, 0x09, 0x3A, 0x00, 0x08, 0xEF, 0x80, 0x2A, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x08, 0x44, 0x80, 0x09, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E5F, { 0x00, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x18, 0x94, 0x80, 0x30, 0xF7, 0x80, 0x62, 0x00, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x49, 0x00, 0x18, 0x49, 0x00, 0x32, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x09, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x69, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E61, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x09, 0x00, 0x24, 0xFF, 0x80, 0x14, 0x09, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x3E, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x08, 0xEB, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xEB, 0x80, 0x08, 0xAA, 0x80, 0x09, 0x2A, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E62, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x49, 0x00, 0x62, 0x7F, 0x00, 0x36, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x6A, 0x7F, 0x00, 0x48, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E65, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x62, 0x08, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x6A, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E66, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xDF, 0x00, 0x10, 0x51, 0x00, 0x64, 0x51, 0x00, 0x2C, 0x5F, 0x00, 0x19, 0xC4, 0x00, 0x11, 0x1F, 0x00, 0x25, 0x15, 0x00, 0x7D, 0x15, 0x00, 0x15, 0xD5, 0x00, 0x10, 0x5F, 0x00, 0x54, 0x44, 0x00, 0x54, 0x45, 0x00, 0x54, 0x45, 0x00, 0x10, 0xCF, 0x80, 0x11, 0xB8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E67, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x1A, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x24, 0xD6, 0x00, 0x7C, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x40, 0x00, 0x54, 0xC2, 0x00, 0x10, 0x9F, 0x00, 0x11, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E69, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x10, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x14, 0xEE, 0x00, 0x08, 0x28, 0x00, 0x12, 0x28, 0x00, 0x3E, 0xEE, 0x00, 0x09, 0xAA, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0xA8, 0x00, 0x2A, 0x28, 0x80, 0x08, 0x3F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E6A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x12, 0x22, 0x00, 0x22, 0xC1, 0x80, 0x14, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x3E, 0xAA, 0x80, 0x09, 0x9C, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E6B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBE, 0x00, 0x04, 0x22, 0x80, 0x3F, 0xA3, 0x80, 0x24, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0xA1, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x8C, 0x00, 0x3F, 0xAB, 0x80, 0x02, 0x52, 0x00, 0x01, 0x9F, 0x00, 0x3F, 0xE0, 0x80, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E6D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x29, 0xFD, 0x00, 0x32, 0xD5, 0x00, 0x2C, 0xD5, 0x00, 0x3F, 0xFD, 0x00, 0x24, 0x95, 0x00, 0x2E, 0x9F, 0x00, 0x35, 0xE3, 0x00, 0x24, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E6E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x64, 0xFE, 0x00, 0x2C, 0x92, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E6F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x30, 0x55, 0x00, 0x62, 0x55, 0x00, 0x36, 0x7F, 0x00, 0x0C, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x14, 0x80, 0x2A, 0x35, 0x00, 0x6A, 0xE6, 0x00, 0x48, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E70, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x14, 0x00, 0x00, 0x0A, 0xE7, 0x00, 0x3F, 0xA5, 0x00, 0x09, 0xA5, 0x00, 0x08, 0xE7, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x38, 0x00, 0x28, 0x54, 0x00, 0x08, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E73, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x18, 0x84, 0x00, 0x11, 0xE4, 0x00, 0x61, 0x2F, 0x80, 0x29, 0xE9, 0x00, 0x19, 0x39, 0x00, 0x11, 0xE9, 0x00, 0x24, 0x8D, 0x00, 0x7D, 0xF5, 0x00, 0x14, 0x87, 0x00, 0x10, 0xF2, 0x00, 0x54, 0x92, 0x00, 0x55, 0x97, 0x00, 0x55, 0x35, 0x00, 0x13, 0x2D, 0x80, 0x16, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E78, { 0x00, 0x00, 0x00, 0x09, 0x0E, 0x00, 0x19, 0xA3, 0x00, 0x10, 0xE1, 0x80, 0x65, 0x5E, 0x80, 0x2D, 0x88, 0x00, 0x18, 0x90, 0x80, 0x10, 0x29, 0x80, 0x25, 0x89, 0x00, 0x7C, 0x94, 0x00, 0x14, 0xA6, 0x00, 0x10, 0x8D, 0x00, 0x54, 0x94, 0x80, 0x54, 0xA4, 0x00, 0x55, 0x8C, 0x00, 0x11, 0x40, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E79, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x22, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x08, 0x14, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E7B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x2A, 0x10, 0x80, 0x1A, 0xD6, 0x80, 0x12, 0x10, 0x80, 0x24, 0xD6, 0x00, 0x7C, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E7C, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x12, 0xA4, 0x80, 0x22, 0xCB, 0x00, 0x14, 0xB2, 0x00, 0x08, 0xED, 0x80, 0x12, 0x94, 0x80, 0x3D, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x0A, 0xA2, 0x80, 0x2A, 0xCC, 0x80, 0x2A, 0xD3, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0xAB, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E7D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x64, 0xFF, 0x00, 0x2C, 0x52, 0x00, 0x19, 0x94, 0x00, 0x10, 0x18, 0x00, 0x24, 0xFF, 0x00, 0x7D, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E7E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x19, 0x3F, 0x00, 0x11, 0xA9, 0x00, 0x64, 0xBF, 0x00, 0x2D, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x24, 0x3F, 0x00, 0x7D, 0xA1, 0x00, 0x14, 0xBF, 0x00, 0x10, 0xA0, 0x00, 0x54, 0xBF, 0x00, 0x54, 0xA1, 0x00, 0x55, 0xBF, 0x00, 0x11, 0x40, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E7F, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x19, 0xF2, 0x00, 0x11, 0x42, 0x00, 0x65, 0x47, 0x80, 0x2D, 0xF4, 0x00, 0x19, 0x10, 0x00, 0x11, 0xF0, 0x00, 0x25, 0x47, 0x80, 0x7D, 0x40, 0x00, 0x15, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x54, 0xA9, 0x00, 0x54, 0xA9, 0x00, 0x10, 0xA9, 0x00, 0x11, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E81, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x18, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x67, 0xFF, 0x80, 0x2C, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x24, 0xD6, 0x00, 0x7C, 0xBA, 0x00, 0x14, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x57, 0xFF, 0x80, 0x11, 0x49, 0x00, 0x12, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E82, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x27, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0xE1, 0x80, 0x03, 0x58, 0x00, 0x1C, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E83, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x60, 0x28, 0x00, 0x2B, 0xD7, 0x80, 0x19, 0x55, 0x00, 0x11, 0x55, 0x00, 0x26, 0xD6, 0x80, 0x7C, 0x00, 0x00, 0x15, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x11, 0x01, 0x00, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E86, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x92, 0x00, 0x10, 0xD6, 0x00, 0x64, 0xBA, 0x00, 0x2C, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x14, 0xA9, 0x00, 0x11, 0x24, 0x80, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E87, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x49, 0x7F, 0x80, 0x2A, 0x08, 0x00, 0x7F, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x49, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x10, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x68, 0x21, 0x00, 0x11, 0x21, 0x00, 0x7E, 0xBF, 0x00, 0x08, 0x12, 0x00, 0x2A, 0x33, 0x00, 0x49, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E88, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x18, 0x9F, 0x80, 0x10, 0x84, 0x00, 0x63, 0xEF, 0x00, 0x28, 0x89, 0x00, 0x18, 0x89, 0x00, 0x13, 0xEF, 0x00, 0x24, 0x09, 0x00, 0x7C, 0x09, 0x00, 0x15, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x55, 0x29, 0x00, 0x55, 0x2F, 0x00, 0x55, 0xE0, 0x00, 0x10, 0x09, 0x00, 0x10, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E89, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x19, 0xEF, 0x80, 0x10, 0x42, 0x00, 0x65, 0xEF, 0x80, 0x2C, 0x42, 0x00, 0x18, 0xA5, 0x00, 0x11, 0x00, 0x80, 0x24, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E8A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x65, 0x7F, 0x00, 0x2D, 0x22, 0x00, 0x19, 0x3E, 0x00, 0x11, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x7D, 0x08, 0x00, 0x15, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x12, 0x22, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E8C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x3F, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E8D, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x05, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E8E, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x18, 0x45, 0x00, 0x11, 0xF5, 0x80, 0x64, 0x44, 0x80, 0x2C, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0xA4, 0x00, 0x25, 0xB5, 0x00, 0x7C, 0xA5, 0x00, 0x15, 0xB5, 0x00, 0x10, 0xA7, 0x00, 0x55, 0xB2, 0x00, 0x54, 0xA6, 0x00, 0x54, 0xF6, 0x80, 0x13, 0x8B, 0x80, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E8F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x12, 0xBE, 0x00, 0x22, 0xAA, 0x00, 0x14, 0xBE, 0x00, 0x08, 0xAA, 0x00, 0x12, 0xBE, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0xA7, 0x80, 0x2A, 0xC8, 0x00, 0x2A, 0xFF, 0x00, 0x09, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E90, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x18, 0x9F, 0x80, 0x10, 0x84, 0x00, 0x63, 0xEF, 0x00, 0x28, 0x09, 0x00, 0x19, 0x49, 0x00, 0x12, 0x2F, 0x00, 0x25, 0x49, 0x00, 0x7D, 0x49, 0x00, 0x15, 0xCF, 0x00, 0x10, 0x89, 0x00, 0x54, 0x89, 0x00, 0x55, 0xCF, 0x00, 0x51, 0x40, 0x00, 0x13, 0x69, 0x00, 0x10, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E91, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x1F, 0x00, 0x10, 0x10, 0x00, 0x65, 0xFF, 0x80, 0x2D, 0x10, 0x80, 0x19, 0x7E, 0x00, 0x11, 0x10, 0x80, 0x25, 0x7F, 0x80, 0x7D, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x56, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x10, 0xA9, 0x00, 0x11, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E92, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x19, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x65, 0x49, 0x00, 0x2D, 0x7F, 0x00, 0x19, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x25, 0x08, 0x00, 0x7D, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x55, 0x55, 0x00, 0x55, 0x88, 0x80, 0x55, 0x3E, 0x00, 0x12, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E93, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x12, 0x94, 0x80, 0x22, 0xF7, 0x80, 0x14, 0x94, 0x80, 0x0A, 0xF7, 0x80, 0x13, 0x94, 0x80, 0x3D, 0xF7, 0x80, 0x08, 0x54, 0x80, 0x0A, 0xA8, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x42, 0x00, 0x2A, 0xE4, 0x00, 0x2B, 0x18, 0x00, 0x08, 0x66, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E94, { 0x00, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x1B, 0x08, 0x00, 0x11, 0xFF, 0x00, 0x65, 0x01, 0x00, 0x2D, 0xFF, 0x00, 0x18, 0x88, 0x00, 0x10, 0xEF, 0x00, 0x24, 0x88, 0x80, 0x7D, 0xE7, 0x80, 0x14, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x4A, 0x00, 0x10, 0xC8, 0x80, 0x13, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E95, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x64, 0xEE, 0x00, 0x2C, 0xAA, 0x00, 0x18, 0xEE, 0x00, 0x10, 0x44, 0x00, 0x24, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x14, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x24, 0x00, 0x55, 0xC5, 0x00, 0x10, 0x72, 0x00, 0x11, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E96, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xA5, 0x00, 0x14, 0xA4, 0x80, 0x15, 0x54, 0x00, 0x2A, 0x4C, 0x00, 0x1B, 0xFF, 0x80, 0x12, 0x54, 0x00, 0x3F, 0xDC, 0x80, 0x0A, 0x55, 0x00, 0x09, 0xDD, 0x00, 0x2A, 0x56, 0x00, 0x2B, 0xDC, 0x00, 0x2A, 0x6C, 0x00, 0x29, 0x92, 0x80, 0x08, 0x61, 0x80, 0x09, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E98, { 0x00, 0x00, 0x00, 0x09, 0x54, 0x00, 0x09, 0xFF, 0x00, 0x12, 0x44, 0x00, 0x23, 0xFF, 0x80, 0x14, 0xAA, 0x00, 0x08, 0xAA, 0x80, 0x15, 0x33, 0x80, 0x3E, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E9A, { 0x00, 0x00, 0x00, 0x09, 0xEF, 0x80, 0x18, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x65, 0x28, 0x80, 0x2D, 0x6A, 0x80, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x25, 0x24, 0x00, 0x7D, 0xFF, 0x00, 0x15, 0x25, 0x00, 0x11, 0xFF, 0x00, 0x55, 0x44, 0x00, 0x55, 0x77, 0x00, 0x55, 0x44, 0x00, 0x12, 0x74, 0x80, 0x10, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E9B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x17, 0x8C, 0x00, 0x1F, 0xB7, 0x00, 0x14, 0x94, 0x80, 0x3F, 0xFF, 0x80, 0x15, 0x55, 0x00, 0x25, 0x14, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E9C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xAB, 0x80, 0x11, 0x10, 0x80, 0x15, 0xEB, 0x80, 0x25, 0x10, 0x80, 0x19, 0xEB, 0x80, 0x15, 0xFF, 0x80, 0x27, 0x00, 0x80, 0x3A, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x24, 0x00, 0x08, 0xC4, 0x80, 0x0B, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7E9D, { 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x64, 0x92, 0x00, 0x2F, 0xFF, 0x80, 0x1A, 0xAA, 0x80, 0x13, 0xEF, 0x80, 0x22, 0xAA, 0x80, 0x7F, 0xEF, 0x80, 0x14, 0x24, 0x00, 0x10, 0xC8, 0x00, 0x54, 0x51, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x10, 0x80, 0x10, 0x92, 0x00, 0x11, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E9E, { 0x00, 0x00, 0x00, 0x08, 0x99, 0x00, 0x19, 0x02, 0x00, 0x11, 0x5A, 0x80, 0x64, 0x81, 0x00, 0x2D, 0x5A, 0x80, 0x19, 0xC3, 0x80, 0x10, 0x99, 0x00, 0x24, 0x81, 0x00, 0x7D, 0xFB, 0x80, 0x16, 0xAD, 0x00, 0x10, 0xB9, 0x00, 0x54, 0x00, 0x00, 0x54, 0x11, 0x00, 0x54, 0xA8, 0x80, 0x10, 0xA2, 0x80, 0x11, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7E9F, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x09, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA0, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x42, 0x00, 0x11, 0x42, 0x00, 0x3F, 0x42, 0x00, 0x02, 0x42, 0x00, 0x04, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0x5E, 0x00, 0x10, 0x62, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x38, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x90, 0x00, 0x11, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0x10, 0x00, 0x38, 0x10, 0x00, 0x10, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x22, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x12, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA3, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0x04, 0x00, 0x12, 0x04, 0x00, 0x3E, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x44, 0x00, 0x3F, 0x24, 0x00, 0x10, 0x24, 0x00, 0x00, 0x04, 0x00, 0x07, 0x04, 0x00, 0x38, 0x04, 0x00, 0x10, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA4, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x11, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA5, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x08, 0x42, 0x00, 0x09, 0x7F, 0x00, 0x12, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x04, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x10, 0x08, 0x00, 0x3F, 0x10, 0x00, 0x10, 0x20, 0x00, 0x00, 0x40, 0x00, 0x07, 0x81, 0x00, 0x38, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA6, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x82, 0x00, 0x22, 0xFF, 0x00, 0x7D, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x10, 0x42, 0x00, 0x20, 0x32, 0x00, 0x7E, 0x12, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x70, 0x22, 0x00, 0x20, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA7, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x24, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x08, 0x9E, 0x00, 0x10, 0xC2, 0x00, 0x20, 0xC4, 0x00, 0x7C, 0xA4, 0x00, 0x01, 0x28, 0x00, 0x01, 0x10, 0x00, 0x0D, 0x28, 0x00, 0x72, 0x44, 0x00, 0x24, 0x87, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA8, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x12, 0xFE, 0x00, 0x3E, 0x24, 0x00, 0x04, 0x24, 0x00, 0x08, 0xA4, 0x00, 0x10, 0x64, 0x00, 0x3F, 0x24, 0x00, 0x10, 0x54, 0x00, 0x00, 0x44, 0x00, 0x07, 0x45, 0x00, 0x38, 0x85, 0x00, 0x10, 0x85, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EA9, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x12, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x10, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x10, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x39, 0x00, 0x00, 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EAA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x12, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7E, 0x80, 0x00, 0x20, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0E, 0x81, 0x00, 0x70, 0x81, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EAB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x22, 0x00, 0x22, 0x22, 0x00, 0x7C, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x11, 0x22, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x70, 0x82, 0x00, 0x21, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EAC, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x7C, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x20, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x0E, 0x2A, 0x00, 0x70, 0x24, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EAD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x12, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x07, 0x44, 0x00, 0x38, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EAF, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x7D, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0x24, 0x00, 0x21, 0x24, 0x00, 0x7D, 0xFC, 0x00, 0x21, 0x24, 0x00, 0x00, 0x20, 0x00, 0x0C, 0x21, 0x00, 0x70, 0x21, 0x00, 0x20, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB0, { 0x00, 0x00, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x08, 0x90, 0x00, 0x09, 0x90, 0x00, 0x12, 0x92, 0x00, 0x3E, 0x96, 0x00, 0x04, 0xF8, 0x00, 0x08, 0x90, 0x00, 0x10, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x10, 0x90, 0x00, 0x00, 0x90, 0x00, 0x07, 0xB1, 0x00, 0x38, 0xD1, 0x00, 0x10, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x24, 0xA8, 0x00, 0x7C, 0xA4, 0x00, 0x09, 0x23, 0x00, 0x11, 0x21, 0x00, 0x22, 0x24, 0x00, 0x7C, 0x24, 0x00, 0x00, 0x28, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x70, 0x40, 0x00, 0x21, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB2, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x02, 0x00, 0x25, 0x02, 0x00, 0x25, 0x86, 0x00, 0x79, 0x46, 0x00, 0x09, 0x2A, 0x00, 0x11, 0x12, 0x00, 0x21, 0x12, 0x00, 0x7D, 0x2A, 0x00, 0x21, 0x46, 0x00, 0x01, 0x86, 0x00, 0x0D, 0x02, 0x00, 0x71, 0x02, 0x00, 0x21, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x25, 0x22, 0x00, 0x7D, 0x22, 0x00, 0x09, 0x22, 0x00, 0x11, 0x22, 0x00, 0x21, 0x52, 0x00, 0x7D, 0x4A, 0x00, 0x01, 0x8A, 0x00, 0x01, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x71, 0x02, 0x00, 0x21, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB5, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x22, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x20, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x21, 0x54, 0x00, 0x01, 0x54, 0x00, 0x0E, 0x24, 0x00, 0x72, 0x22, 0x00, 0x24, 0x41, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x10, 0x50, 0x00, 0x12, 0x88, 0x00, 0x3F, 0x07, 0x00, 0x02, 0x02, 0x00, 0x04, 0x80, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x98, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x06, 0x82, 0x00, 0x38, 0x82, 0x00, 0x10, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x48, 0x00, 0x24, 0x48, 0x00, 0x7C, 0x84, 0x00, 0x08, 0x87, 0x00, 0x11, 0x02, 0x00, 0x22, 0xFC, 0x00, 0x7C, 0x44, 0x00, 0x20, 0x44, 0x00, 0x00, 0x44, 0x00, 0x0C, 0x84, 0x00, 0x70, 0x84, 0x00, 0x21, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x11, 0xF0, 0x00, 0x11, 0x10, 0x00, 0x23, 0x10, 0x00, 0x7D, 0x10, 0x00, 0x09, 0x14, 0x00, 0x11, 0xFE, 0x00, 0x21, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x0F, 0x08, 0x00, 0x71, 0x49, 0x00, 0x21, 0x85, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EB9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x7D, 0x04, 0x00, 0x08, 0x88, 0x00, 0x10, 0x88, 0x00, 0x20, 0x50, 0x00, 0x7E, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x0E, 0x50, 0x00, 0x70, 0x88, 0x00, 0x21, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EBA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x7E, 0x40, 0x00, 0x08, 0x44, 0x00, 0x10, 0x7E, 0x00, 0x20, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x20, 0x44, 0x00, 0x00, 0x44, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x84, 0x00, 0x21, 0x28, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EBD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x24, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x08, 0x84, 0x00, 0x13, 0xFC, 0x00, 0x20, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x70, 0x84, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EBE, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x08, 0x28, 0x00, 0x12, 0x10, 0x00, 0x3E, 0x08, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x10, 0x12, 0x00, 0x3F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0x10, 0x00, 0x38, 0x10, 0x00, 0x10, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EBF, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x20, 0x00, 0x11, 0x3E, 0x00, 0x3F, 0xE0, 0x00, 0x04, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x11, 0xE0, 0x00, 0x3E, 0x24, 0x00, 0x00, 0x28, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x30, 0x00, 0x70, 0x49, 0x00, 0x21, 0x85, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC0, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0x44, 0x00, 0x13, 0xFF, 0x00, 0x3E, 0x44, 0x00, 0x04, 0x44, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x3F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x00, 0x44, 0x00, 0x07, 0x44, 0x00, 0x38, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC1, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x7E, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x00, 0xBC, 0x00, 0x0E, 0x80, 0x00, 0x70, 0x80, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC2, { 0x00, 0x00, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x10, 0x48, 0x00, 0x12, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x7C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0xFC, 0x00, 0x20, 0x84, 0x00, 0x7E, 0x84, 0x00, 0x21, 0x48, 0x00, 0x01, 0x30, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x28, 0x00, 0x24, 0x47, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x24, 0x50, 0x00, 0x7D, 0xF8, 0x00, 0x08, 0x90, 0x00, 0x10, 0x90, 0x00, 0x21, 0x12, 0x00, 0x7D, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x54, 0x00, 0x1C, 0x93, 0x00, 0x61, 0x11, 0x00, 0x22, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x22, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x7E, 0x84, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x84, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x22, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x20, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x0E, 0x92, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x22, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x20, 0xFE, 0x00, 0x7E, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x70, 0x92, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x22, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x0E, 0x24, 0x00, 0x70, 0x42, 0x00, 0x20, 0x81, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC8, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x84, 0x00, 0x22, 0xC8, 0x00, 0x7D, 0x28, 0x00, 0x08, 0x10, 0x00, 0x10, 0x28, 0x00, 0x20, 0x44, 0x00, 0x7E, 0x87, 0x00, 0x01, 0x32, 0x00, 0x00, 0x08, 0x00, 0x0E, 0x04, 0x00, 0x70, 0x60, 0x00, 0x20, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EC9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x7C, 0x00, 0x12, 0x84, 0x00, 0x25, 0x08, 0x00, 0x7C, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x20, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x70, 0x02, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ECA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x92, 0x00, 0x10, 0x56, 0x00, 0x22, 0x58, 0x00, 0x7C, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x7E, 0x12, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ECB, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x13, 0xFF, 0x00, 0x24, 0x4A, 0x00, 0x7C, 0x4A, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x48, 0x00, 0x23, 0x48, 0x00, 0x7D, 0xFF, 0x00, 0x20, 0x49, 0x00, 0x00, 0x49, 0x00, 0x0E, 0x4D, 0x00, 0x70, 0x8A, 0x00, 0x20, 0x88, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ECC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x12, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x10, 0x92, 0x00, 0x00, 0x92, 0x00, 0x06, 0x92, 0x00, 0x38, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ECD, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x22, 0x42, 0x00, 0x7C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x0A, 0x00, 0x22, 0x04, 0x00, 0x7E, 0x02, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ECE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x10, 0x28, 0x00, 0x22, 0x10, 0x00, 0x7C, 0x28, 0x00, 0x08, 0x47, 0x00, 0x11, 0x92, 0x00, 0x20, 0x10, 0x00, 0x7E, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x00, 0x0E, 0xFF, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ECF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x08, 0x00, 0x22, 0x18, 0x00, 0x7E, 0x24, 0x00, 0x04, 0x43, 0x00, 0x09, 0x81, 0x00, 0x10, 0x00, 0x00, 0x20, 0xFE, 0x00, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x12, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x24, 0x44, 0x00, 0x7C, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED1, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x10, 0x91, 0x00, 0x13, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x78, 0x94, 0x00, 0x13, 0xF2, 0x00, 0x20, 0x92, 0x00, 0x7C, 0x91, 0x00, 0x23, 0xF1, 0x00, 0x00, 0x91, 0x00, 0x0C, 0x9A, 0x00, 0x71, 0x14, 0x00, 0x21, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x10, 0x14, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x94, 0x00, 0x23, 0xF4, 0x00, 0x7C, 0x94, 0x00, 0x00, 0x98, 0x00, 0x00, 0x90, 0x00, 0x0D, 0x28, 0x00, 0x71, 0x49, 0x00, 0x22, 0x85, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED3, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x10, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x06, 0x82, 0x00, 0x38, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x50, 0x00, 0x24, 0x50, 0x00, 0x7C, 0x88, 0x00, 0x09, 0xFC, 0x00, 0x12, 0x03, 0x00, 0x21, 0xFE, 0x00, 0x7E, 0x80, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x70, 0x44, 0x00, 0x20, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED5, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x44, 0x00, 0x10, 0x7E, 0x00, 0x23, 0xC0, 0x00, 0x7C, 0x28, 0x00, 0x08, 0x11, 0x00, 0x10, 0x69, 0x00, 0x23, 0x87, 0x00, 0x7C, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x90, 0x00, 0x0C, 0x90, 0x00, 0x70, 0x91, 0x00, 0x21, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x10, 0xBE, 0x00, 0x12, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x11, 0x84, 0x00, 0x22, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x84, 0x00, 0x20, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x24, 0x88, 0x00, 0x7D, 0x07, 0x00, 0x0A, 0xFA, 0x00, 0x10, 0x00, 0x00, 0x20, 0x04, 0x00, 0x7D, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0C, 0x48, 0x00, 0x70, 0x84, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7ED9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x50, 0x00, 0x24, 0x88, 0x00, 0x7D, 0x07, 0x00, 0x0A, 0x02, 0x00, 0x11, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x7C, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x71, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EDA, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7F, 0x00, 0x22, 0x82, 0x00, 0x7D, 0x02, 0x00, 0x08, 0xFA, 0x00, 0x10, 0x8A, 0x00, 0x20, 0x8A, 0x00, 0x7E, 0xFA, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x8A, 0x00, 0x0E, 0xFA, 0x00, 0x70, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EDB, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x11, 0x88, 0x00, 0x12, 0x50, 0x00, 0x20, 0x20, 0x00, 0x7C, 0x50, 0x00, 0x08, 0xAC, 0x00, 0x13, 0x23, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x20, 0x00, 0x21, 0x24, 0x00, 0x03, 0xFE, 0x00, 0x0C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EDC, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x82, 0x00, 0x25, 0x44, 0x00, 0x7C, 0x28, 0x00, 0x08, 0x10, 0x00, 0x10, 0x28, 0x00, 0x20, 0xC7, 0x00, 0x7D, 0xFE, 0x00, 0x02, 0x82, 0x00, 0x00, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EDD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3C, 0x00, 0x10, 0x48, 0x00, 0x22, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x7E, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x80, 0x00, 0x0E, 0x80, 0x00, 0x70, 0x81, 0x00, 0x20, 0x81, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EDE, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x10, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x7C, 0x44, 0x00, 0x08, 0x83, 0x00, 0x11, 0x01, 0x00, 0x20, 0x44, 0x00, 0x7E, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x0E, 0x28, 0x00, 0x70, 0x44, 0x00, 0x20, 0x83, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EDF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x24, 0x40, 0x00, 0x7C, 0x88, 0x00, 0x09, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x20, 0x92, 0x00, 0x7C, 0x90, 0x00, 0x20, 0x90, 0x00, 0x00, 0x90, 0x00, 0x0D, 0x11, 0x00, 0x71, 0x11, 0x00, 0x22, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE0, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x25, 0x24, 0x00, 0x7D, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x21, 0x24, 0x00, 0x7D, 0xFC, 0x00, 0x21, 0x20, 0x00, 0x00, 0xA0, 0x00, 0x0C, 0x40, 0x00, 0x70, 0xB0, 0x00, 0x21, 0x0F, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE1, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x92, 0x00, 0x08, 0x54, 0x00, 0x08, 0x58, 0x00, 0x12, 0x12, 0x00, 0x3E, 0xFF, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x3F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x07, 0x82, 0x00, 0x38, 0x82, 0x00, 0x10, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE2, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x70, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE3, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x09, 0xF0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x27, 0xFE, 0x00, 0x7C, 0x70, 0x00, 0x08, 0xA8, 0x00, 0x11, 0x27, 0x00, 0x22, 0xFC, 0x00, 0x7C, 0x44, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4E, 0x00, 0x0C, 0x82, 0x00, 0x70, 0x82, 0x00, 0x21, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE5, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x0B, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x11, 0x24, 0x00, 0x20, 0xA8, 0x00, 0x7C, 0x10, 0x00, 0x08, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x20, 0x84, 0x00, 0x7C, 0x84, 0x00, 0x21, 0x08, 0x00, 0x00, 0x88, 0x00, 0x0C, 0x50, 0x00, 0x70, 0x20, 0x00, 0x20, 0xD8, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE6, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0xFC, 0x00, 0x11, 0x88, 0x00, 0x26, 0x50, 0x00, 0x7C, 0x20, 0x00, 0x08, 0x50, 0x00, 0x10, 0x88, 0x00, 0x23, 0x27, 0x00, 0x7C, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x0C, 0xA8, 0x00, 0x71, 0x26, 0x00, 0x22, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x92, 0x00, 0x25, 0x56, 0x00, 0x7D, 0x38, 0x00, 0x09, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x21, 0x10, 0x00, 0x7D, 0x38, 0x00, 0x21, 0x56, 0x00, 0x01, 0x92, 0x00, 0x0D, 0x10, 0x00, 0x71, 0x12, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE8, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x10, 0x50, 0x00, 0x13, 0xFC, 0x00, 0x24, 0x24, 0x00, 0x7C, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x20, 0x00, 0x21, 0x22, 0x00, 0x7D, 0xFF, 0x00, 0x20, 0x62, 0x00, 0x02, 0x62, 0x00, 0x0C, 0xAA, 0x00, 0x71, 0x24, 0x00, 0x22, 0x20, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EE9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x24, 0xF8, 0x00, 0x7C, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x7D, 0x04, 0x00, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x0D, 0x24, 0x00, 0x70, 0x48, 0x00, 0x20, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EEA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x28, 0x00, 0x24, 0x30, 0x00, 0x7C, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x21, 0xFE, 0x00, 0x7E, 0x84, 0x00, 0x04, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x84, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EEB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x10, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x24, 0x12, 0x00, 0x7D, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x10, 0xA3, 0x00, 0x21, 0x3D, 0x00, 0x7E, 0x44, 0x00, 0x20, 0x48, 0x00, 0x00, 0xA8, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x28, 0x00, 0x20, 0xC7, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EED, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x24, 0x20, 0x00, 0x7F, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x10, 0x54, 0x00, 0x21, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x0E, 0x30, 0x00, 0x70, 0x48, 0x00, 0x20, 0x86, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EEE, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x24, 0x58, 0x00, 0x7C, 0x8A, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x21, 0xE4, 0x00, 0x7D, 0x24, 0x00, 0x21, 0x24, 0x00, 0x01, 0x24, 0x00, 0x0D, 0xE4, 0x00, 0x71, 0x04, 0x00, 0x20, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EEF, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x10, 0x2A, 0x00, 0x11, 0xEF, 0x00, 0x24, 0x28, 0x00, 0x7C, 0x28, 0x00, 0x08, 0x2A, 0x00, 0x11, 0xEF, 0x00, 0x20, 0x28, 0x00, 0x7E, 0x28, 0x00, 0x20, 0x2A, 0x00, 0x01, 0xEF, 0x00, 0x0E, 0x28, 0x00, 0x70, 0x28, 0x00, 0x20, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF0, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x25, 0xFE, 0x00, 0x7D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x7C, 0x20, 0x00, 0x20, 0x22, 0x00, 0x03, 0xFF, 0x00, 0x0C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA8, 0x00, 0x24, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0xFA, 0x00, 0x7E, 0x8A, 0x00, 0x22, 0x8A, 0x00, 0x02, 0x8A, 0x00, 0x0E, 0xFA, 0x00, 0x72, 0x02, 0x00, 0x22, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF2, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x08, 0x00, 0x3E, 0x89, 0x00, 0x10, 0x8B, 0x00, 0x00, 0xEC, 0x00, 0x06, 0x88, 0x00, 0x38, 0xA9, 0x00, 0x10, 0xC9, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF3, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x7C, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x7F, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x02, 0x22, 0x00, 0x0F, 0xFE, 0x00, 0x72, 0x20, 0x00, 0x20, 0x21, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF4, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x7D, 0x88, 0x00, 0x0A, 0xFE, 0x00, 0x10, 0x88, 0x00, 0x20, 0x88, 0x00, 0x7E, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x0E, 0x8A, 0x00, 0x70, 0xFF, 0x00, 0x20, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF5, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x44, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x10, 0x22, 0x00, 0x23, 0xFF, 0x00, 0x7E, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x22, 0x00, 0x0E, 0x2A, 0x00, 0x72, 0x24, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF6, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x0B, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x11, 0x24, 0x00, 0x20, 0xA8, 0x00, 0x7B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x14, 0x02, 0x00, 0x20, 0xF8, 0x00, 0x7E, 0x08, 0x00, 0x20, 0x88, 0x00, 0x00, 0x50, 0x00, 0x0E, 0x20, 0x00, 0x70, 0x50, 0x00, 0x20, 0x8F, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF7, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xDF, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x22, 0x52, 0x00, 0x7F, 0xDE, 0x00, 0x0A, 0x52, 0x00, 0x12, 0x52, 0x00, 0x22, 0x52, 0x00, 0x7F, 0xDE, 0x00, 0x22, 0x52, 0x00, 0x02, 0x52, 0x00, 0x0E, 0x52, 0x00, 0x72, 0x62, 0x00, 0x25, 0x4A, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EF8, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x26, 0xFA, 0x00, 0x7E, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x12, 0xFA, 0x00, 0x22, 0x02, 0x00, 0x7E, 0xFA, 0x00, 0x02, 0x8A, 0x00, 0x02, 0x8A, 0x00, 0x0E, 0x8A, 0x00, 0x72, 0xFA, 0x00, 0x24, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EFA, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x10, 0xE8, 0x00, 0x12, 0xAC, 0x00, 0x25, 0x2B, 0x00, 0x7D, 0xA9, 0x00, 0x0A, 0x48, 0x00, 0x10, 0xA8, 0x00, 0x21, 0x1F, 0x00, 0x7E, 0x04, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x84, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EFB, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x10, 0x20, 0x00, 0x23, 0xFE, 0x00, 0x7C, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x20, 0x88, 0x00, 0x7D, 0xFF, 0x00, 0x22, 0x8A, 0x00, 0x00, 0x88, 0x00, 0x0E, 0xA8, 0x00, 0x70, 0x92, 0x00, 0x20, 0x82, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EFC, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x22, 0x02, 0x00, 0x7C, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x10, 0x02, 0x00, 0x21, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x54, 0x00, 0x00, 0x92, 0x00, 0x0C, 0x91, 0x00, 0x71, 0x11, 0x00, 0x20, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EFD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x22, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x20, 0x54, 0x00, 0x7E, 0x5E, 0x00, 0x20, 0x50, 0x00, 0x00, 0x90, 0x00, 0x0E, 0xD0, 0x00, 0x71, 0x33, 0x00, 0x22, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EFE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x20, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x26, 0x01, 0x00, 0x79, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x11, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x21, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x0F, 0x02, 0x00, 0x71, 0x02, 0x00, 0x21, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7EFF, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0xFC, 0x00, 0x22, 0x04, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x11, 0x22, 0x00, 0x20, 0xA6, 0x00, 0x7C, 0xA8, 0x00, 0x00, 0x70, 0x00, 0x00, 0xA8, 0x00, 0x0D, 0x24, 0x00, 0x72, 0x27, 0x00, 0x20, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F00, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x12, 0x52, 0x00, 0x11, 0x54, 0x00, 0x20, 0x88, 0x00, 0x7D, 0x54, 0x00, 0x09, 0x53, 0x00, 0x12, 0x20, 0x00, 0x23, 0xDE, 0x00, 0x7E, 0x52, 0x00, 0x02, 0x52, 0x00, 0x01, 0x54, 0x00, 0x0C, 0x88, 0x00, 0x71, 0x54, 0x00, 0x22, 0x23, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F01, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x11, 0x24, 0x00, 0x12, 0x48, 0x00, 0x25, 0x24, 0x00, 0x7C, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x7E, 0x22, 0x00, 0x22, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x0E, 0x22, 0x00, 0x72, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F02, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x24, 0xF8, 0x00, 0x7C, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x21, 0x24, 0x00, 0x7D, 0xFC, 0x00, 0x20, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x0C, 0x20, 0x00, 0x70, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F03, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x7C, 0x92, 0x00, 0x09, 0x9E, 0x00, 0x11, 0xD2, 0x00, 0x22, 0xB2, 0x00, 0x7E, 0x92, 0x00, 0x24, 0x9E, 0x00, 0x00, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x70, 0x92, 0x00, 0x20, 0x9E, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F04, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x10, 0x0A, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0xE8, 0x00, 0x12, 0x0A, 0x00, 0x22, 0xEA, 0x00, 0x7E, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x02, 0xAC, 0x00, 0x0E, 0xE8, 0x00, 0x72, 0x95, 0x00, 0x24, 0x23, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F05, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x42, 0x00, 0x25, 0xFF, 0x00, 0x7D, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x11, 0x7A, 0x00, 0x21, 0x4A, 0x00, 0x7D, 0x4A, 0x00, 0x01, 0x7A, 0x00, 0x01, 0x4A, 0x00, 0x0D, 0x4A, 0x00, 0x71, 0x4A, 0x00, 0x21, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F06, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x09, 0x48, 0x00, 0x11, 0x4F, 0x00, 0x11, 0x54, 0x00, 0x21, 0x62, 0x00, 0x7F, 0x42, 0x00, 0x04, 0x44, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x7F, 0x24, 0x00, 0x01, 0x24, 0x00, 0x01, 0x34, 0x00, 0x0E, 0x50, 0x00, 0x70, 0x51, 0x00, 0x20, 0x91, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F07, { 0x00, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x7D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x23, 0xFF, 0x00, 0x7C, 0x20, 0x00, 0x01, 0x24, 0x00, 0x01, 0x3E, 0x00, 0x0D, 0x20, 0x00, 0x71, 0xA0, 0x00, 0x22, 0x63, 0x00, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F08, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x13, 0xE8, 0x00, 0x12, 0x48, 0x00, 0x26, 0x5C, 0x00, 0x7E, 0x5B, 0x00, 0x0B, 0xE9, 0x00, 0x12, 0x48, 0x00, 0x22, 0x4A, 0x00, 0x7F, 0xCA, 0x00, 0x22, 0x4C, 0x00, 0x02, 0x44, 0x00, 0x0E, 0x48, 0x00, 0x73, 0xD0, 0x00, 0x22, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F09, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x7C, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x20, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x73, 0xFF, 0x00, 0x20, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F0B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x7C, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x21, 0x24, 0x00, 0x01, 0x24, 0x00, 0x0D, 0x44, 0x00, 0x70, 0x58, 0x00, 0x20, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F0C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x25, 0x24, 0x00, 0x7D, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x11, 0x24, 0x00, 0x21, 0xFC, 0x00, 0x7C, 0x40, 0x00, 0x20, 0xA0, 0x00, 0x02, 0x92, 0x00, 0x0E, 0x81, 0x00, 0x72, 0x85, 0x00, 0x24, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F0D, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x09, 0xF0, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x24, 0xA8, 0x00, 0x7C, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x13, 0xFE, 0x00, 0x20, 0xA8, 0x00, 0x7C, 0xA8, 0x00, 0x20, 0xAA, 0x00, 0x03, 0xFF, 0x00, 0x0C, 0x20, 0x00, 0x70, 0x24, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F0E, { 0x00, 0x00, 0x00, 0x10, 0xC4, 0x00, 0x13, 0x3E, 0x00, 0x12, 0x24, 0x00, 0x22, 0x24, 0x00, 0x27, 0xA4, 0x00, 0x7A, 0x24, 0x00, 0x12, 0x43, 0x00, 0x23, 0x80, 0x00, 0x22, 0xFE, 0x00, 0x7E, 0x44, 0x00, 0x02, 0x28, 0x00, 0x07, 0x90, 0x00, 0x1A, 0x28, 0x00, 0x62, 0x44, 0x00, 0x02, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F0F, { 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x12, 0xFE, 0x00, 0x26, 0x92, 0x00, 0x7A, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x22, 0x92, 0x00, 0x7E, 0xFE, 0x00, 0x22, 0x50, 0x00, 0x02, 0x50, 0x00, 0x0E, 0x20, 0x00, 0x72, 0x30, 0x00, 0x22, 0x4C, 0x00, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F11, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0xBE, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x25, 0xFF, 0x00, 0x7B, 0x20, 0x00, 0x0D, 0x24, 0x00, 0x11, 0x7E, 0x00, 0x21, 0x90, 0x00, 0x7D, 0x12, 0x00, 0x21, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x0D, 0x10, 0x00, 0x71, 0x28, 0x00, 0x21, 0x47, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F12, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x24, 0x00, 0x11, 0x7E, 0x00, 0x11, 0x44, 0x00, 0x24, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x0B, 0x7C, 0x00, 0x11, 0x40, 0x00, 0x21, 0x7C, 0x00, 0x7D, 0x44, 0x00, 0x21, 0x44, 0x00, 0x01, 0x44, 0x00, 0x0D, 0x7C, 0x00, 0x72, 0x80, 0x00, 0x24, 0x43, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F13, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x09, 0xF8, 0x00, 0x11, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x22, 0x10, 0x00, 0x7D, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0xC4, 0x00, 0x00, 0xA8, 0x00, 0x0D, 0x10, 0x00, 0x72, 0x28, 0x00, 0x24, 0xC7, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F14, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x88, 0x00, 0x24, 0x50, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x21, 0x00, 0x14, 0x22, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x24, 0x00, 0x21, 0x24, 0x00, 0x01, 0x24, 0x00, 0x0D, 0x24, 0x00, 0x71, 0x2C, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F15, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x10, 0x20, 0x00, 0x23, 0xFF, 0x00, 0x7C, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x12, 0x22, 0x00, 0x20, 0x40, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x0C, 0xD8, 0x00, 0x70, 0x20, 0x00, 0x20, 0xD8, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F16, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x25, 0x04, 0x00, 0x7D, 0xFC, 0x00, 0x09, 0x00, 0x00, 0x11, 0x02, 0x00, 0x21, 0xFF, 0x00, 0x7B, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x01, 0xFE, 0x00, 0x0D, 0x4A, 0x00, 0x71, 0x4A, 0x00, 0x21, 0x4A, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F17, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x25, 0x20, 0x00, 0x7D, 0xFE, 0x00, 0x09, 0x10, 0x00, 0x11, 0x49, 0x00, 0x21, 0x87, 0x00, 0x7E, 0xFC, 0x00, 0x20, 0x84, 0x00, 0x00, 0x84, 0x00, 0x0E, 0xFC, 0x00, 0x70, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F18, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x10, 0x84, 0x00, 0x11, 0xF8, 0x00, 0x24, 0x0A, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x10, 0xC4, 0x00, 0x21, 0x28, 0x00, 0x7E, 0x70, 0x00, 0x00, 0xB0, 0x00, 0x01, 0x28, 0x00, 0x0E, 0x64, 0x00, 0x70, 0xA7, 0x00, 0x23, 0x22, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F19, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x11, 0x4A, 0x00, 0x24, 0xCC, 0x00, 0x7C, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x20, 0xFE, 0x00, 0x7E, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x84, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F1A, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x24, 0x00, 0x20, 0x08, 0x00, 0x03, 0xFF, 0x00, 0x0D, 0x08, 0x00, 0x70, 0x88, 0x00, 0x20, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F1B, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFC, 0x00, 0x26, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x0A, 0xA4, 0x00, 0x12, 0x98, 0x00, 0x22, 0xC7, 0x00, 0x7E, 0x08, 0x00, 0x23, 0xFF, 0x00, 0x02, 0x48, 0x00, 0x0E, 0x28, 0x00, 0x72, 0x08, 0x00, 0x24, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F1C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x0F, 0xFF, 0x00, 0x70, 0x88, 0x00, 0x21, 0x06, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F1D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x12, 0x44, 0x00, 0x11, 0xA8, 0x00, 0x25, 0x10, 0x00, 0x7C, 0x6C, 0x00, 0x0B, 0x93, 0x00, 0x11, 0x7C, 0x00, 0x21, 0x10, 0x00, 0x7D, 0x7C, 0x00, 0x21, 0x10, 0x00, 0x01, 0xFE, 0x00, 0x0D, 0x10, 0x00, 0x71, 0x10, 0x00, 0x22, 0x93, 0x00, 0x04, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F1F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x24, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x10, 0x02, 0x00, 0x21, 0xFF, 0x00, 0x7D, 0x02, 0x00, 0x21, 0x7A, 0x00, 0x01, 0x4A, 0x00, 0x0D, 0x4A, 0x00, 0x71, 0x7A, 0x00, 0x21, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F20, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x26, 0xFE, 0x00, 0x7A, 0x92, 0x00, 0x12, 0x92, 0x00, 0x22, 0xFE, 0x00, 0x7E, 0x92, 0x00, 0x02, 0x92, 0x00, 0x02, 0xFE, 0x00, 0x0E, 0x10, 0x00, 0x72, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F21, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x25, 0x54, 0x00, 0x7D, 0x24, 0x00, 0x09, 0x54, 0x00, 0x11, 0xFC, 0x00, 0x20, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x02, 0x4A, 0x00, 0x0E, 0xFA, 0x00, 0x72, 0x02, 0x00, 0x22, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F22, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x00, 0x00, 0x25, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x08, 0x88, 0x00, 0x11, 0x04, 0x00, 0x22, 0x02, 0x00, 0x7D, 0xFC, 0x00, 0x21, 0x54, 0x00, 0x01, 0x54, 0x00, 0x0D, 0x54, 0x00, 0x71, 0x54, 0x00, 0x27, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F23, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x52, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x25, 0xFC, 0x00, 0x7C, 0x54, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x20, 0x54, 0x00, 0x7D, 0xFC, 0x00, 0x20, 0x50, 0x00, 0x00, 0xD8, 0x00, 0x0D, 0x54, 0x00, 0x72, 0x57, 0x00, 0x24, 0x52, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F24, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x24, 0x1A, 0x00, 0x7C, 0xE0, 0x00, 0x08, 0x84, 0x00, 0x10, 0xFE, 0x00, 0x20, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x20, 0x8A, 0x00, 0x03, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x88, 0x00, 0x21, 0x06, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F25, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x50, 0x00, 0x14, 0x52, 0x00, 0x27, 0xFF, 0x00, 0x7A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x13, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x7D, 0xFC, 0x00, 0x20, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0C, 0xA8, 0x00, 0x71, 0x26, 0x00, 0x22, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F26, { 0x00, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x12, 0x52, 0x00, 0x23, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x21, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x0C, 0xD8, 0x00, 0x70, 0x20, 0x00, 0x21, 0xD8, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F27, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x17, 0xFE, 0x00, 0x2A, 0x22, 0x00, 0x7B, 0xFE, 0x00, 0x0A, 0x42, 0x00, 0x10, 0x88, 0x00, 0x21, 0xF0, 0x00, 0x7C, 0x20, 0x00, 0x20, 0x44, 0x00, 0x03, 0xFE, 0x00, 0x0C, 0xA8, 0x00, 0x71, 0x26, 0x00, 0x22, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F28, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x12, 0x52, 0x00, 0x12, 0xD6, 0x00, 0x22, 0xD6, 0x00, 0x7F, 0x5A, 0x00, 0x09, 0x8C, 0x00, 0x12, 0x52, 0x00, 0x20, 0x40, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x48, 0x00, 0x00, 0x88, 0x00, 0x0E, 0x50, 0x00, 0x70, 0x20, 0x00, 0x20, 0xD8, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F29, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x24, 0x82, 0x00, 0x78, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x13, 0x22, 0x00, 0x25, 0x7F, 0x00, 0x7D, 0x42, 0x00, 0x21, 0x42, 0x00, 0x01, 0x7E, 0x00, 0x0D, 0x42, 0x00, 0x71, 0x42, 0x00, 0x21, 0x7E, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F2A, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xDF, 0x00, 0x12, 0x52, 0x00, 0x11, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x7A, 0x52, 0x00, 0x08, 0x28, 0x00, 0x10, 0x44, 0x00, 0x20, 0x92, 0x00, 0x7D, 0x21, 0x00, 0x22, 0xC8, 0x00, 0x00, 0x30, 0x00, 0x0C, 0xC4, 0x00, 0x70, 0x18, 0x00, 0x20, 0x60, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F2B, { 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x12, 0x48, 0x00, 0x11, 0x24, 0x00, 0x25, 0x24, 0x00, 0x7B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x7B, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x0C, 0x70, 0x00, 0x70, 0xA8, 0x00, 0x23, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F2C, { 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x09, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x17, 0xD2, 0x00, 0x21, 0x3F, 0x00, 0x7D, 0x22, 0x00, 0x0B, 0xAA, 0x00, 0x10, 0x2A, 0x00, 0x23, 0xAA, 0x00, 0x7E, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x02, 0xAA, 0x00, 0x0E, 0xAA, 0x00, 0x73, 0x94, 0x00, 0x20, 0x13, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F2D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x25, 0x54, 0x00, 0x7C, 0x88, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x06, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x00, 0xA8, 0x00, 0x0D, 0x26, 0x00, 0x72, 0x22, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F2E, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x08, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x7C, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x20, 0xA8, 0x00, 0x7F, 0xFF, 0x00, 0x20, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x0D, 0x04, 0x00, 0x71, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F2F, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x13, 0x55, 0x00, 0x3F, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x06, 0x82, 0x00, 0x38, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F30, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x26, 0x22, 0x00, 0x7F, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x0E, 0x22, 0x00, 0x73, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F31, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0xFF, 0x00, 0x12, 0x92, 0x00, 0x11, 0xFE, 0x00, 0x25, 0x10, 0x00, 0x7C, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x17, 0x7C, 0x00, 0x21, 0x44, 0x00, 0x7D, 0x7C, 0x00, 0x21, 0x40, 0x00, 0x01, 0x7C, 0x00, 0x0D, 0x44, 0x00, 0x72, 0xFC, 0x00, 0x24, 0x43, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F32, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFC, 0x00, 0x10, 0x88, 0x00, 0x12, 0x88, 0x00, 0x24, 0xF8, 0x00, 0x7C, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x12, 0x52, 0x00, 0x22, 0x52, 0x00, 0x7F, 0xDE, 0x00, 0x20, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x0C, 0x70, 0x00, 0x70, 0xA8, 0x00, 0x23, 0x27, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F33, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x11, 0x54, 0x00, 0x13, 0x54, 0x00, 0x25, 0xFC, 0x00, 0x7C, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x00, 0xA2, 0x00, 0x0D, 0xA4, 0x00, 0x72, 0x98, 0x00, 0x24, 0xC7, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F34, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x12, 0x48, 0x00, 0x17, 0xE8, 0x00, 0x24, 0x4A, 0x00, 0x27, 0xDF, 0x00, 0x7C, 0x62, 0x00, 0x0F, 0xD2, 0x00, 0x11, 0x14, 0x00, 0x2F, 0xF4, 0x00, 0x42, 0x14, 0x00, 0x7B, 0xC8, 0x00, 0x02, 0x48, 0x00, 0x1A, 0x54, 0x00, 0x64, 0x54, 0x00, 0x24, 0xE3, 0x00, 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F35, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x94, 0x00, 0x13, 0xDE, 0x00, 0x14, 0xA4, 0x00, 0x23, 0xDF, 0x00, 0x7D, 0x8C, 0x00, 0x0A, 0x95, 0x00, 0x14, 0xA7, 0x00, 0x21, 0xFC, 0x00, 0x7D, 0x04, 0x00, 0x21, 0x24, 0x00, 0x01, 0x24, 0x00, 0x0D, 0x24, 0x00, 0x70, 0x58, 0x00, 0x20, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F36, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F38, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x1F, 0x88, 0x00, 0x24, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F3A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x24, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x7F, 0x80, 0x24, 0x88, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xA2, 0x00, 0x20, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F3B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x68, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x52, 0x00, 0x2A, 0x5A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0xC2, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0xBA, 0x80, 0x00, 0xE2, 0x80, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F3C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x68, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0xC9, 0x80, 0x7F, 0x89, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x29, 0x1C, 0x00, 0x29, 0x14, 0x00, 0x29, 0x14, 0x00, 0x29, 0x36, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F3D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x68, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x54, 0x00, 0x7E, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x2A, 0xD6, 0x00, 0x2A, 0x92, 0x00, 0x2B, 0x93, 0x00, 0x2A, 0x7D, 0x80, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F3E, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x63, 0x00, 0x3E, 0x22, 0x00, 0x68, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x62, 0x00, 0x3E, 0x42, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F3F, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x3E, 0xF8, 0x00, 0x68, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x3E, 0xA1, 0x00, 0x01, 0xA1, 0x00, 0x03, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F42, { 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F43, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x28, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F44, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xA3, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xBE, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x8C, 0x00, 0x20, 0x73, 0x80, 0x48, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F45, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x20, 0x1F, 0x00, 0x7C, 0x10, 0x00, 0x51, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x1E, 0x00, 0x7D, 0x70, 0x80, 0x11, 0x1F, 0x80, 0x11, 0x02, 0x00, 0x55, 0x3C, 0x00, 0x55, 0x49, 0x00, 0x55, 0x2A, 0x00, 0x55, 0xFF, 0x80, 0x7D, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F47, { 0x00, 0x00, 0x00, 0x20, 0x5E, 0x00, 0x20, 0x81, 0x00, 0x7D, 0x7E, 0x80, 0x50, 0x28, 0x00, 0x10, 0xFF, 0x00, 0x10, 0xA9, 0x00, 0x7E, 0xCF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x02, 0x00, 0x55, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x00, 0x22, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F4C, { 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x91, 0x00, 0x24, 0x60, 0x80, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F4D, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F4E, { 0x00, 0x00, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x50, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x12, 0xD6, 0x80, 0x10, 0x10, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x7C, 0x42, 0x00, 0x00, 0x9E, 0x00, 0x01, 0xF3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F4F, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x20, 0x1F, 0x00, 0x7C, 0x10, 0x00, 0x51, 0xFF, 0x80, 0x11, 0x10, 0x80, 0x11, 0x7E, 0x00, 0x7F, 0x10, 0x80, 0x11, 0x7F, 0x80, 0x11, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x56, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x00, 0xA5, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F50, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x1F, 0x22, 0x00, 0x14, 0x7F, 0x00, 0x24, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x24, 0x00, 0x04, 0x7F, 0x00, 0x15, 0xA4, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x24, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x24, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x09, 0x00, 0x21, 0x09, 0x00, 0x21, 0x09, 0x00, 0x29, 0x49, 0x00, 0x27, 0x39, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x27, 0x39, 0x00, 0x25, 0x2D, 0x00, 0x2C, 0x65, 0x00, 0x38, 0xC1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x26, 0x19, 0x00, 0x23, 0xB1, 0x00, 0x20, 0xE1, 0x00, 0x21, 0xB1, 0x00, 0x27, 0x19, 0x00, 0x2C, 0x0D, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x22, 0x08, 0x80, 0x21, 0x10, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x2F, 0xFE, 0x80, 0x22, 0x00, 0x80, 0x22, 0x00, 0x80, 0x22, 0x00, 0x80, 0x23, 0xFC, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x11, 0x00, 0x06, 0x1F, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F57, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x21, 0x02, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x10, 0x00, 0x31, 0x60, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0xA0, 0x00, 0x03, 0xB0, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F5A, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x04, 0x00, 0x04, 0x44, 0x00, 0x00, 0x44, 0x00, 0x78, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x94, 0x00, 0x10, 0x96, 0x00, 0x30, 0xFA, 0x00, 0x27, 0x8B, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x30, 0x80, 0x1F, 0x1D, 0x80, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F62, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x81, 0x00, 0x0E, 0x81, 0x00, 0x78, 0x83, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F65, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x88, 0x00, 0x08, 0x44, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x35, 0x6B, 0x00, 0x24, 0x49, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F68, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x68, 0x85, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x80, 0x00, 0x81, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F69, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x01, 0x90, 0x00, 0x07, 0x1F, 0x80, 0x39, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x06, 0x00, 0x3F, 0xE5, 0x00, 0x02, 0x04, 0x80, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x03, 0xE4, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x3F, 0x32, 0x00, 0x21, 0x16, 0x00, 0x21, 0x1C, 0x00, 0x3F, 0x08, 0x80, 0x00, 0x1C, 0x80, 0x0F, 0x37, 0x80, 0x78, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F70, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x81, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0F, 0x81, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x42, 0x00, 0x00, 0x44, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC8, 0x00, 0x07, 0xFE, 0x00, 0x3C, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F74, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x44, 0x00, 0x11, 0x22, 0x00, 0x21, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x04, 0x80, 0x04, 0x42, 0x80, 0x12, 0x21, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x09, 0x13, 0x80, 0x13, 0x9C, 0x00, 0x3C, 0x50, 0x80, 0x00, 0x1F, 0x80, 0x1F, 0x80, 0x00, 0x10, 0x90, 0x00, 0x1F, 0x93, 0x80, 0x10, 0x9C, 0x00, 0x1F, 0x90, 0x80, 0x10, 0x9F, 0x80, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F78, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xBF, 0x80, 0x00, 0x02, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x32, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x02, 0x00, 0x21, 0x02, 0x00, 0x3F, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x88, 0x00, 0x2D, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F7D, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x25, 0x21, 0x00, 0x29, 0x49, 0x00, 0x22, 0x89, 0x00, 0x2C, 0x69, 0x00, 0x21, 0x09, 0x00, 0x25, 0x29, 0x00, 0x29, 0x41, 0x00, 0x62, 0x81, 0x00, 0x4C, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F7E, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x34, 0x93, 0x00, 0x52, 0xA2, 0x80, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F7F, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F80, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x29, 0x25, 0x00, 0x26, 0x19, 0x00, 0x29, 0x25, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F81, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x11, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x24, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xA4, 0x00, 0x24, 0xBE, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x7A, 0x00, 0x7F, 0x82, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F82, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x62, 0x41, 0x00, 0x34, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x6B, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F83, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x68, 0x85, 0x80, 0x08, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x24, 0x48, 0x00, 0x18, 0xFF, 0x00, 0x0B, 0x48, 0x00, 0x3D, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F86, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x21, 0x26, 0x00, 0x7F, 0xBC, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x1F, 0x00, 0x21, 0x20, 0x00, 0x3F, 0x3C, 0x00, 0x21, 0x21, 0x00, 0x23, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F87, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x49, 0x01, 0x00, 0x7F, 0x3D, 0x00, 0x08, 0x25, 0x00, 0x7F, 0x3D, 0x00, 0x08, 0x01, 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F88, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x15, 0x24, 0x00, 0x1F, 0x3F, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x02, 0x80, 0x04, 0x0A, 0x80, 0x3F, 0xA8, 0x80, 0x04, 0x21, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F8A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F8B, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x7C, 0x8F, 0x80, 0x04, 0x88, 0x00, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F8C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F8D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x1A, 0x16, 0x00, 0x73, 0x33, 0x80, 0x01, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F8E, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F8F, { 0x00, 0x00, 0x00, 0x22, 0x02, 0x00, 0x36, 0x06, 0x00, 0x14, 0x0C, 0x00, 0x7F, 0x18, 0x00, 0x08, 0x71, 0x00, 0x08, 0x03, 0x00, 0x3E, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x0F, 0x70, 0x80, 0x78, 0x01, 0x80, 0x08, 0x03, 0x00, 0x18, 0x06, 0x00, 0x10, 0x0C, 0x00, 0x30, 0x38, 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F90, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7E, 0x1F, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0E, 0x18, 0x00, 0x38, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F91, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x38, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB0, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F94, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F96, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x36, 0x3E, 0x00, 0x14, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x62, 0x00, 0x3E, 0xC3, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x0F, 0x21, 0x00, 0x78, 0x33, 0x00, 0x08, 0x16, 0x00, 0x18, 0x0C, 0x00, 0x10, 0x1E, 0x00, 0x30, 0x33, 0x00, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7F97, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x40, 0x00, 0x02, 0x48, 0x00, 0x02, 0x4A, 0x00, 0x06, 0x53, 0x00, 0x04, 0x5D, 0x00, 0x0C, 0x40, 0x80, 0x18, 0x61, 0x80, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F9A, { 0x00, 0x00, 0x00, 0x22, 0x10, 0x00, 0x12, 0x18, 0x00, 0x14, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x81, 0x00, 0x09, 0x00, 0x80, 0x08, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0xFF, 0x00, 0x38, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x10, 0x26, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F9C, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x36, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x78, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F9D, { 0x00, 0x00, 0x00, 0x22, 0x01, 0x80, 0x36, 0x07, 0x00, 0x14, 0x7C, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0x44, 0x00, 0x78, 0x44, 0x00, 0x08, 0x76, 0x00, 0x19, 0xC2, 0x00, 0x10, 0x02, 0x80, 0x31, 0xFB, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F9E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7F9F, { 0x00, 0x00, 0x00, 0x22, 0x04, 0x00, 0x12, 0xFE, 0x00, 0x14, 0x04, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x83, 0x00, 0x09, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x12, 0x00, 0x21, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FA1, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x38, 0xD1, 0x00, 0x01, 0x92, 0x00, 0x04, 0x38, 0x00, 0x0C, 0x28, 0x00, 0x18, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FA2, { 0x00, 0x00, 0x00, 0x22, 0x05, 0x00, 0x36, 0x05, 0x80, 0x14, 0x04, 0x80, 0x7F, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFC, 0x80, 0x0F, 0x25, 0x80, 0x78, 0x25, 0x00, 0x08, 0x67, 0x00, 0x18, 0x42, 0x00, 0x10, 0xC6, 0x80, 0x31, 0x8B, 0x80, 0x60, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FA3, { 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FA4, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x8A, 0x00, 0x04, 0x8A, 0x00, 0x04, 0xBF, 0x80, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x1F, 0xBF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x18, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FA6, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x36, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x0F, 0x24, 0x00, 0x78, 0x24, 0x00, 0x08, 0x24, 0x00, 0x18, 0x64, 0x00, 0x10, 0x44, 0x80, 0x30, 0xC4, 0x80, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FA7, { 0x00, 0x00, 0x00, 0x22, 0x10, 0x00, 0x12, 0x10, 0x00, 0x14, 0x28, 0x00, 0x7F, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x83, 0x00, 0x09, 0x41, 0x00, 0x08, 0x7C, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xA8, 0x00, 0x11, 0x10, 0x00, 0x10, 0x28, 0x00, 0x20, 0x47, 0x00, 0x41, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FA8, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x20, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x06, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x10, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FA9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xD4, 0x00, 0x1F, 0x12, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x11, 0x00, 0x03, 0xCA, 0x00, 0x3E, 0x04, 0x00, 0x02, 0x1A, 0x80, 0x0E, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FAA, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x36, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0F, 0x48, 0x80, 0x78, 0x49, 0x80, 0x08, 0x4D, 0x00, 0x18, 0x44, 0x00, 0x10, 0x46, 0x00, 0x30, 0x7B, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FAD, { 0x00, 0x00, 0x00, 0x44, 0xF0, 0x00, 0x6C, 0x18, 0x00, 0x28, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x11, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x7D, 0xE4, 0x80, 0x11, 0x24, 0x80, 0x11, 0xAD, 0x80, 0x1D, 0x69, 0x00, 0x71, 0x29, 0x00, 0x11, 0xA9, 0x00, 0x11, 0x6D, 0x80, 0x31, 0x24, 0x80, 0x21, 0x24, 0x80, 0x61, 0x64, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FAE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FAF, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x36, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x0F, 0x68, 0x80, 0x78, 0x48, 0x80, 0x08, 0xDC, 0x80, 0x18, 0x76, 0x80, 0x10, 0x41, 0x80, 0x30, 0x7D, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FB0, { 0x00, 0x00, 0x00, 0x22, 0x10, 0x00, 0x12, 0x92, 0x00, 0x14, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x42, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x7F, 0x48, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAC, 0x00, 0x11, 0x54, 0x00, 0x11, 0x14, 0x00, 0x22, 0x22, 0x00, 0x44, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FB2, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x92, 0x00, 0x1E, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0x10, 0x00, 0x0A, 0xD1, 0x00, 0x3F, 0xD2, 0x00, 0x04, 0x0C, 0x00, 0x0F, 0x8C, 0x80, 0x08, 0x92, 0x80, 0x13, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FB4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x22, 0x21, 0x00, 0x14, 0x12, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x3F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FB6, { 0x00, 0x00, 0x00, 0x44, 0x10, 0x00, 0x6D, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xBD, 0x00, 0x7C, 0xA5, 0x00, 0x10, 0xBD, 0x00, 0x10, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x70, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x30, 0x7E, 0x00, 0x20, 0x42, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FB8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x1E, 0xAF, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xFD, 0x00, 0x12, 0x4B, 0x00, 0x1F, 0xF9, 0x00, 0x12, 0x49, 0x00, 0x13, 0xF9, 0x80, 0x26, 0x51, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FB9, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x12, 0x00, 0x11, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x03, 0x18, 0x00, 0x1C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FBC, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x12, 0xAA, 0x00, 0x17, 0xDF, 0x00, 0x11, 0x04, 0x00, 0x37, 0xDF, 0x00, 0x21, 0x04, 0x00, 0x6F, 0xDF, 0x80, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x85, 0x00, 0x02, 0x85, 0x00, 0x04, 0x89, 0x00, 0x08, 0x91, 0x00, 0x10, 0xA3, 0x00, 0x21, 0xC3, 0x00, 0x01, 0x85, 0x00, 0x02, 0x89, 0x00, 0x04, 0x91, 0x00, 0x08, 0xA1, 0x00, 0x10, 0xC1, 0x00, 0x20, 0x81, 0x00, 0x00, 0x81, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x05, 0x05, 0x00, 0x19, 0x19, 0x00, 0x61, 0x23, 0x00, 0x07, 0x0D, 0x00, 0x19, 0x31, 0x00, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FC0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x5F, 0x80, 0x08, 0x54, 0x80, 0x39, 0xD4, 0x80, 0x6B, 0x54, 0x80, 0x08, 0x54, 0x80, 0x08, 0x54, 0x80, 0x08, 0x54, 0x80, 0x39, 0xDF, 0x80, 0x6B, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x39, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x04, 0xA4, 0x00, 0x09, 0x12, 0x00, 0x32, 0x79, 0x80, 0x0F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x85, 0x00, 0x04, 0x89, 0x00, 0x09, 0x93, 0x00, 0x32, 0xE3, 0x00, 0x04, 0x85, 0x00, 0x08, 0x89, 0x00, 0x31, 0xB3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FC3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xF7, 0x80, 0x08, 0x10, 0x80, 0x08, 0x10, 0x80, 0x7E, 0x10, 0x80, 0x10, 0x73, 0x80, 0x10, 0xD6, 0x80, 0x14, 0x10, 0x80, 0x34, 0x10, 0x80, 0x24, 0x10, 0x80, 0x2C, 0x73, 0x80, 0x68, 0xD6, 0x80, 0x4A, 0x10, 0x80, 0x4A, 0x10, 0x80, 0x1F, 0x10, 0x80, 0x31, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FC5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x1F, 0x89, 0x80, 0x04, 0x1A, 0x80, 0x04, 0x2C, 0x80, 0x3F, 0xC8, 0x80, 0x11, 0x08, 0x80, 0x11, 0x19, 0x80, 0x0A, 0x19, 0x80, 0x0A, 0x2A, 0x80, 0x0A, 0x4C, 0x80, 0x04, 0x08, 0x80, 0x04, 0x19, 0x80, 0x0A, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x0D, 0x0D, 0x00, 0x33, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x11, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF7, 0x80, 0x4A, 0x10, 0x80, 0x4A, 0x10, 0x80, 0x4A, 0x10, 0x80, 0x7E, 0x73, 0x80, 0x4A, 0xD6, 0x80, 0x4A, 0x10, 0x80, 0x4A, 0x10, 0x80, 0x4A, 0x10, 0x80, 0x7E, 0x73, 0x80, 0x08, 0xD6, 0x80, 0x08, 0x10, 0x80, 0x08, 0x10, 0x80, 0x08, 0x10, 0x80, 0x08, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FCA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x19, 0x80, 0x04, 0x19, 0x80, 0x3F, 0xAA, 0x80, 0x00, 0x4C, 0x80, 0x11, 0x88, 0x80, 0x11, 0x19, 0x80, 0x0A, 0x19, 0x80, 0x0A, 0x2A, 0x80, 0x0A, 0x2A, 0x80, 0x0B, 0xCC, 0x80, 0x3C, 0x88, 0x80, 0x01, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x85, 0x00, 0x08, 0x89, 0x00, 0x31, 0x93, 0x00, 0x02, 0xA5, 0x00, 0x0C, 0x89, 0x00, 0x31, 0x93, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FCE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0xF7, 0x80, 0x11, 0x10, 0x80, 0x20, 0x10, 0x80, 0x00, 0x11, 0x80, 0x3F, 0x32, 0x80, 0x00, 0x54, 0x80, 0x00, 0x90, 0x80, 0x3F, 0x10, 0x80, 0x11, 0x11, 0x80, 0x11, 0x32, 0x80, 0x11, 0x54, 0x80, 0x16, 0x90, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x10, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x73, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x01, 0xC1, 0x00, 0x07, 0x70, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0xC7, 0x80, 0x03, 0x80, 0x00, 0x0E, 0x70, 0x00, 0x01, 0xC6, 0x00, 0x0F, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x89, 0x00, 0x09, 0x91, 0x00, 0x32, 0xE3, 0x00, 0x04, 0x8D, 0x00, 0x08, 0xB1, 0x00, 0x33, 0x87, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FD4, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x7F, 0x80, 0x12, 0x08, 0x80, 0x02, 0x19, 0x80, 0x3F, 0x19, 0x80, 0x04, 0x2A, 0x80, 0x04, 0x2C, 0x80, 0x1F, 0x48, 0x80, 0x04, 0x99, 0x80, 0x04, 0x1A, 0x80, 0x07, 0xAA, 0x80, 0x3C, 0x2C, 0x80, 0x04, 0x48, 0x80, 0x08, 0x88, 0x80, 0x08, 0x08, 0x80, 0x10, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FD5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x3B, 0xFB, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x89, 0x00, 0x09, 0x93, 0x00, 0x32, 0xE5, 0x00, 0x0C, 0x89, 0x00, 0x31, 0xB3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FD8, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xEF, 0x00, 0x7F, 0x22, 0x00, 0x14, 0x22, 0x00, 0x08, 0xAA, 0x00, 0x15, 0x66, 0x00, 0x63, 0x22, 0x00, 0x00, 0x66, 0x00, 0x7E, 0xAA, 0x00, 0x15, 0x32, 0x00, 0x14, 0x22, 0x00, 0x14, 0xAA, 0x00, 0x14, 0x44, 0x00, 0x14, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FDB, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x86, 0x00, 0x19, 0x6C, 0x00, 0x14, 0x38, 0x00, 0x34, 0x6E, 0x00, 0x55, 0xC3, 0x80, 0x14, 0x00, 0x00, 0x15, 0xEF, 0x80, 0x14, 0xA2, 0x80, 0x15, 0x24, 0x80, 0x14, 0x61, 0x80, 0x14, 0xA2, 0x80, 0x11, 0x24, 0x80, 0x10, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x0C, 0xD3, 0x00, 0x31, 0x65, 0x00, 0x06, 0x49, 0x00, 0x1A, 0x71, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x04, 0x89, 0x00, 0x09, 0x93, 0x00, 0x12, 0xA5, 0x00, 0x24, 0xC9, 0x00, 0x08, 0x50, 0x00, 0x1F, 0xFF, 0x00, 0x03, 0x08, 0x00, 0x04, 0x94, 0x00, 0x08, 0x62, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FE1, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x07, 0x9F, 0x80, 0x39, 0x10, 0x00, 0x06, 0x10, 0x00, 0x38, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x04, 0x89, 0x00, 0x09, 0x93, 0x00, 0x12, 0xA5, 0x00, 0x24, 0xC9, 0x00, 0x08, 0x91, 0x00, 0x11, 0xA3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x73, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0x10, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FE5, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0xA0, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x78, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x33, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FE6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x00, 0x19, 0x22, 0x00, 0x17, 0x22, 0x00, 0x19, 0x22, 0x00, 0x17, 0x02, 0x00, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x0D, 0x0D, 0x00, 0x33, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x31, 0x31, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x33, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x00, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x80, 0x00, 0x04, 0xFE, 0x00, 0x0A, 0x80, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FE9, { 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x1F, 0x80, 0x08, 0x04, 0x80, 0x0F, 0xE5, 0x80, 0x08, 0x2D, 0x80, 0x08, 0x2E, 0x80, 0x0F, 0xF4, 0x80, 0x08, 0x24, 0x80, 0x08, 0x05, 0x80, 0x0F, 0xED, 0x80, 0x0A, 0xAE, 0x80, 0x1A, 0xB4, 0x80, 0x1F, 0xE4, 0x80, 0x1A, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xED, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x15, 0x40, 0x00, 0x26, 0xC0, 0x00, 0x0D, 0x40, 0x00, 0x16, 0x7F, 0x80, 0x2D, 0xD2, 0x00, 0x02, 0x12, 0x00, 0x04, 0x12, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1F, 0x92, 0x80, 0x10, 0x92, 0x80, 0x10, 0xA3, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FEC, { 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x73, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5F, 0xFE, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF7, 0x80, 0x00, 0x10, 0x80, 0x3E, 0x10, 0x80, 0x22, 0x10, 0x80, 0x3E, 0x73, 0x80, 0x00, 0xD6, 0x80, 0x7F, 0x10, 0x80, 0x55, 0x10, 0x80, 0x55, 0x10, 0x80, 0x67, 0x73, 0x80, 0x41, 0xD6, 0x80, 0x5D, 0x10, 0x80, 0x49, 0x10, 0x80, 0x49, 0x10, 0x80, 0x4B, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FEF, { 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x73, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FF0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x3E, 0x00, 0x00, 0x22, 0xF7, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x33, 0x00, 0x3E, 0x55, 0x00, 0x09, 0x99, 0x00, 0x08, 0x33, 0x00, 0x3E, 0x55, 0x00, 0x09, 0x99, 0x00, 0x08, 0x11, 0x00, 0x08, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FF1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x02, 0x00, 0x3E, 0xEF, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xAA, 0x00, 0x3E, 0x66, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x14, 0x66, 0x00, 0x2A, 0xAA, 0x00, 0x49, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xAA, 0x00, 0x08, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x77, 0x80, 0x14, 0x10, 0x80, 0x7F, 0x10, 0x80, 0x55, 0x10, 0x80, 0x55, 0x33, 0x80, 0x7F, 0x76, 0x80, 0x00, 0x10, 0x80, 0x3E, 0x10, 0x80, 0x00, 0x10, 0x80, 0x7F, 0x33, 0x80, 0x08, 0x76, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x49, 0x10, 0x80, 0x18, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDE, 0x00, 0x28, 0x12, 0x00, 0x2F, 0x93, 0x80, 0x32, 0x20, 0x00, 0x2F, 0x9F, 0x00, 0x25, 0x09, 0x00, 0x28, 0x86, 0x00, 0x3F, 0xD9, 0x80, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x0D, 0x0D, 0x00, 0x33, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x31, 0x31, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FF9, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xDB, 0x00, 0x09, 0x2D, 0x00, 0x09, 0x09, 0x00, 0x1F, 0x9B, 0x00, 0x09, 0x2D, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x09, 0x1B, 0x00, 0x09, 0x00, 0x80, 0x11, 0x00, 0x80, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FFA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x77, 0x80, 0x7F, 0x10, 0x80, 0x41, 0x10, 0x80, 0x7F, 0x10, 0x80, 0x41, 0x33, 0x80, 0x7F, 0x76, 0x80, 0x41, 0x10, 0x80, 0x7F, 0x10, 0x80, 0x08, 0x10, 0x80, 0x6B, 0x33, 0x80, 0x08, 0x76, 0x80, 0x6B, 0x10, 0x80, 0x08, 0x10, 0x80, 0x7F, 0x10, 0x80, 0x08, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FFB, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0xF7, 0x80, 0x38, 0x10, 0x80, 0x49, 0x10, 0x80, 0x2A, 0x54, 0x80, 0x7F, 0x32, 0x80, 0x1C, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x49, 0x10, 0x80, 0x00, 0x31, 0x80, 0x3E, 0x52, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x2A, 0x10, 0x80, 0x3E, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FFC, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x0C, 0xD3, 0x00, 0x31, 0x65, 0x00, 0x06, 0x49, 0x00, 0x38, 0x61, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x7FFD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x17, 0xBB, 0x80, 0x14, 0x08, 0x80, 0x7F, 0xC8, 0x80, 0x01, 0x99, 0x80, 0x01, 0x6A, 0x80, 0x3F, 0xC8, 0x80, 0x20, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x99, 0x80, 0x2C, 0xAA, 0x80, 0x35, 0xC8, 0x80, 0x26, 0x88, 0x80, 0x28, 0x88, 0x80, 0x21, 0x88, 0x80, 0x46, 0x59, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBB, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x3F, 0x99, 0x80, 0x00, 0x2A, 0x80, 0x7F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x20, 0x99, 0x80, 0x3F, 0xAA, 0x80, 0x0A, 0x08, 0x80, 0x1A, 0x48, 0x80, 0x73, 0x48, 0x80, 0x19, 0x88, 0x80, 0x30, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x7FFF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x7B, 0x80, 0x08, 0x08, 0x80, 0x3E, 0x08, 0x80, 0x00, 0x19, 0x80, 0x7F, 0xAA, 0x80, 0x00, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x08, 0x80, 0x3E, 0x19, 0x80, 0x00, 0x2A, 0x80, 0x7F, 0x88, 0x80, 0x01, 0x08, 0x80, 0x7F, 0x88, 0x80, 0x55, 0x08, 0x80, 0x73, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8000, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x29, 0x2A, 0x80, 0x2A, 0x4C, 0x80, 0x2A, 0x99, 0x80, 0x08, 0x2A, 0x80, 0x3F, 0x54, 0x80, 0x14, 0x48, 0x00, 0x14, 0xFF, 0x00, 0x15, 0x88, 0x00, 0x16, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x14, 0xFF, 0x00, 0x17, 0x88, 0x00, 0x2C, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8001, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x41, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x48, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x03, 0x0F, 0x00, 0x0D, 0xF0, 0x00, 0x31, 0x00, 0x00, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8003, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x48, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x9E, 0x00, 0x03, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8004, { 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x1F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x79, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x80, 0x01, 0x01, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8005, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x41, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x32, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8006, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x60, 0x00, 0x00, 0x9E, 0x00, 0x03, 0xE0, 0x00, 0x0D, 0x00, 0x80, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8007, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x83, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x73, 0xFF, 0x00, 0x06, 0x01, 0x00, 0x0D, 0xF1, 0x00, 0x39, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xF3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8008, { 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x1F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x71, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x30, 0x01, 0x00, 0x67, 0xE1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x07, 0xE3, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8009, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x90, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x03, 0x1F, 0x00, 0x0F, 0xE0, 0x00, 0x34, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x07, 0xF2, 0x00, 0x04, 0x12, 0x00, 0x07, 0xF2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x800A, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x83, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x72, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x800B, { 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x1F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x71, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF4, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x800C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x800D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x23, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0x3C, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x800E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x23, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x800F, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xC6, 0x00, 0x04, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x3F, 0xB1, 0x00, 0x2A, 0x83, 0x00, 0x2A, 0x86, 0x00, 0x2A, 0x8C, 0x00, 0x2A, 0x98, 0x00, 0x2A, 0xB0, 0x80, 0x2A, 0x81, 0x80, 0x2A, 0x83, 0x00, 0x2A, 0x86, 0x00, 0x2A, 0x8C, 0x00, 0x2A, 0x98, 0x00, 0x21, 0xB0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8010, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x21, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8011, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8012, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x02, 0xB0, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8013, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8014, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x80, 0x78, 0x03, 0x00, 0x08, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8015, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x0C, 0x7F, 0x80, 0x0E, 0x12, 0x00, 0x15, 0x12, 0x00, 0x14, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x42, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8016, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x78, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x08, 0x49, 0x80, 0x08, 0xC8, 0x00, 0x7F, 0x09, 0x00, 0x08, 0x09, 0x00, 0x1C, 0x3B, 0x00, 0x1A, 0x02, 0x00, 0x2A, 0x06, 0x00, 0x48, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8017, { 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x0F, 0x80, 0x04, 0x78, 0x00, 0x3F, 0x88, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x0F, 0x80, 0x15, 0xF8, 0x00, 0x14, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x80, 0x04, 0x08, 0x80, 0x04, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8018, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xBF, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x7F, 0x80, 0x7F, 0xC8, 0x00, 0x0C, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x15, 0x10, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x24, 0x4F, 0x80, 0x04, 0xF0, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8019, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x00, 0x78, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x1A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x48, 0x40, 0x80, 0x08, 0x61, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x801C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x00, 0x78, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x801D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7E, 0x00, 0x78, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x48, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x801E, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x70, 0x80, 0x00, 0x10, 0x87, 0x80, 0x13, 0xF4, 0x80, 0x7C, 0x94, 0x80, 0x10, 0x94, 0x80, 0x10, 0x94, 0x80, 0x7C, 0x94, 0x80, 0x10, 0x94, 0x80, 0x39, 0x94, 0x80, 0x35, 0x14, 0x80, 0x55, 0x34, 0x80, 0x53, 0x24, 0x80, 0x12, 0x27, 0x80, 0x16, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x801F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x80, 0x78, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x48, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8020, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x38, 0x00, 0x78, 0x2C, 0x00, 0x08, 0x64, 0x00, 0x08, 0x46, 0x00, 0x3E, 0xC3, 0x00, 0x09, 0xBD, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8021, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1D, 0xE4, 0x00, 0x71, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x3F, 0x80, 0x7D, 0xE4, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x11, 0xE4, 0x80, 0x39, 0x24, 0x80, 0x35, 0x24, 0x80, 0x55, 0x2C, 0x80, 0x51, 0xE9, 0x80, 0x13, 0x19, 0x00, 0x10, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8022, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x7E, 0x42, 0x00, 0x18, 0x40, 0x00, 0x1D, 0xFC, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x48, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x14, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8024, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x78, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8025, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA6, 0x00, 0x7E, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x3E, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x02, 0x00, 0x19, 0x7A, 0x00, 0x1D, 0x4A, 0x00, 0x2B, 0x4A, 0x00, 0x2B, 0x4A, 0x00, 0x49, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8026, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x00, 0x78, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1C, 0x88, 0x80, 0x1A, 0x8A, 0x80, 0x2A, 0x9E, 0x80, 0x48, 0xB2, 0x80, 0x08, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8027, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x7E, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0xA8, 0x00, 0x09, 0x26, 0x00, 0x7E, 0x22, 0x00, 0x1C, 0x40, 0x00, 0x1B, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x29, 0x08, 0x00, 0x48, 0xD0, 0x00, 0x08, 0x20, 0x00, 0x08, 0xD8, 0x00, 0x0B, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8028, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x78, 0x80, 0x00, 0x08, 0xBF, 0x00, 0x08, 0x80, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0xA8, 0x80, 0x08, 0xA5, 0x00, 0x7F, 0xBA, 0x00, 0x08, 0xE1, 0x80, 0x1C, 0x82, 0x00, 0x1A, 0xFF, 0x80, 0x28, 0xA2, 0x00, 0x48, 0xB2, 0x00, 0x09, 0x12, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8029, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0B, 0xFE, 0x00, 0x7C, 0x88, 0x00, 0x09, 0xFC, 0x00, 0x3C, 0x88, 0x00, 0x0B, 0xFF, 0x00, 0x7C, 0x20, 0x00, 0x19, 0xFC, 0x00, 0x1D, 0x24, 0x00, 0x2B, 0xFC, 0x00, 0x29, 0x24, 0x00, 0x4F, 0xFF, 0x00, 0x09, 0x04, 0x00, 0x09, 0x14, 0x00, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x802A, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x28, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x21, 0x00, 0x7E, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x1C, 0x40, 0x00, 0x1A, 0x7C, 0x00, 0x28, 0x44, 0x00, 0x48, 0x44, 0x00, 0x08, 0x84, 0x00, 0x09, 0x14, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x802C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x7F, 0x00, 0x78, 0x49, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0xFF, 0x80, 0x2A, 0x21, 0x00, 0x48, 0x72, 0x00, 0x08, 0x1E, 0x00, 0x08, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x802D, { 0x00, 0x00, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x3F, 0x29, 0x00, 0x0A, 0x71, 0x00, 0x3F, 0xAE, 0x00, 0x08, 0xA4, 0x00, 0x09, 0x3F, 0x80, 0x3F, 0xF4, 0x00, 0x08, 0x22, 0x00, 0x1B, 0xFF, 0x80, 0x1C, 0x91, 0x00, 0x2A, 0x92, 0x00, 0x29, 0x4C, 0x00, 0x2A, 0x0C, 0x80, 0x08, 0x32, 0x80, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x802E, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x0F, 0x54, 0x80, 0x79, 0x6D, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x29, 0x00, 0x3C, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x7F, 0x10, 0x80, 0x08, 0xFF, 0x00, 0x1C, 0x11, 0x00, 0x1A, 0x11, 0x00, 0x2A, 0x31, 0x00, 0x48, 0x23, 0x00, 0x08, 0x62, 0x00, 0x08, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8030, { 0x00, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x0E, 0x10, 0x00, 0x78, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x08, 0x80, 0x7E, 0xA5, 0x00, 0x08, 0xA2, 0x80, 0x1D, 0x1E, 0x00, 0x1A, 0x20, 0x00, 0x2A, 0x7E, 0x00, 0x49, 0xA2, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8031, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x24, 0x00, 0x09, 0xFF, 0x00, 0x3F, 0x2C, 0x00, 0x09, 0x76, 0x00, 0x7F, 0xA5, 0x00, 0x19, 0x24, 0x00, 0x1D, 0xFF, 0x00, 0x2B, 0x20, 0x00, 0x29, 0x7E, 0x00, 0x49, 0x42, 0x00, 0x0A, 0xC2, 0x00, 0x0D, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8034, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x62, 0x20, 0x80, 0x02, 0x31, 0x80, 0x02, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x62, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x50, 0x80, 0x08, 0x51, 0x00, 0x0F, 0xD2, 0x00, 0x08, 0x51, 0x00, 0x08, 0x50, 0x80, 0x0F, 0xD0, 0x80, 0x08, 0x50, 0x80, 0x08, 0x50, 0x80, 0x0B, 0xF0, 0x80, 0x3C, 0x50, 0x80, 0x00, 0x50, 0x80, 0x00, 0x57, 0x00, 0x00, 0x50, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8037, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8038, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x12, 0x44, 0x00, 0x21, 0x83, 0x00, 0x41, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8039, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x38, 0x00, 0x22, 0x28, 0x00, 0x22, 0x6C, 0x00, 0x3E, 0x46, 0x00, 0x22, 0xC3, 0x00, 0x23, 0xBD, 0x80, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x02, 0x00, 0x22, 0x06, 0x00, 0x3E, 0x04, 0x00, 0x62, 0x0C, 0x00, 0x02, 0x08, 0x00, 0x02, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x803A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x32, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x23, 0x00, 0x62, 0x21, 0x00, 0x02, 0x2F, 0x00, 0x02, 0x79, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x803B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x4F, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3C, 0x48, 0x00, 0x64, 0x48, 0x00, 0x05, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x803C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x64, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x803D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x90, 0x80, 0x1E, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x18, 0x00, 0x1E, 0x28, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x48, 0x00, 0x32, 0x48, 0x80, 0x02, 0x88, 0x80, 0x03, 0x0F, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x803E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x34, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x2C, 0x00, 0x22, 0x68, 0x00, 0x22, 0x49, 0x00, 0x3E, 0xD9, 0x00, 0x62, 0x11, 0x00, 0x02, 0x3F, 0x80, 0x02, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x803F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x80, 0x12, 0x29, 0x00, 0x1E, 0x2A, 0x00, 0x12, 0x48, 0x00, 0x12, 0x88, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x14, 0x00, 0x16, 0x14, 0x00, 0x3A, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0x41, 0x00, 0x02, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8040, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x7F, 0x13, 0x00, 0x22, 0x11, 0x00, 0x22, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x11, 0x00, 0x22, 0x13, 0x00, 0x3E, 0x16, 0x00, 0x22, 0x1C, 0x00, 0x22, 0x08, 0x00, 0x22, 0x1C, 0x00, 0x3E, 0x34, 0x00, 0x62, 0x66, 0x80, 0x03, 0xC3, 0x80, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8042, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x14, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x7E, 0x00, 0x01, 0x02, 0x00, 0x12, 0x24, 0x00, 0x0A, 0x14, 0x00, 0x04, 0x08, 0x00, 0x0B, 0x17, 0x00, 0x31, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8043, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x71, 0x41, 0x00, 0x01, 0x41, 0x00, 0x01, 0x41, 0x00, 0x01, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8044, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x1C, 0x00, 0x22, 0x14, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x22, 0xC9, 0x80, 0x22, 0x18, 0x00, 0x22, 0x32, 0x00, 0x3E, 0x66, 0x00, 0x22, 0x0C, 0x00, 0x22, 0x18, 0x80, 0x22, 0x71, 0x80, 0x3E, 0x03, 0x00, 0x62, 0x06, 0x00, 0x02, 0x1C, 0x00, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8046, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x98, 0x00, 0x12, 0x24, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x81, 0x00, 0x13, 0x00, 0x80, 0x12, 0x7E, 0x00, 0x12, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x21, 0x00, 0x1E, 0x21, 0x00, 0x32, 0x21, 0x00, 0x02, 0x26, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x804A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x37, 0x80, 0x12, 0xC4, 0x80, 0x12, 0x94, 0x80, 0x12, 0x94, 0x80, 0x1E, 0x94, 0x80, 0x12, 0x94, 0x80, 0x12, 0x94, 0x80, 0x1E, 0x94, 0x80, 0x12, 0x94, 0x80, 0x12, 0xF4, 0x80, 0x1F, 0x94, 0x80, 0x32, 0x15, 0x80, 0x02, 0x24, 0x00, 0x02, 0x24, 0x00, 0x02, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x804B, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x50, 0x00, 0x02, 0x62, 0x00, 0x0C, 0x7E, 0x00, 0x11, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x804C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x7F, 0x02, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x13, 0xA4, 0x00, 0x7E, 0x24, 0x00, 0x22, 0x42, 0x00, 0x02, 0x43, 0x00, 0x02, 0x81, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x804D, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x7F, 0x90, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x81, 0x00, 0x13, 0x02, 0x00, 0x12, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0x90, 0x00, 0x1E, 0x10, 0x00, 0x72, 0x10, 0x00, 0x22, 0x10, 0x00, 0x02, 0x50, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8052, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x0E, 0x00, 0x22, 0xF8, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x62, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8054, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0x66, 0x00, 0x12, 0x28, 0x00, 0x12, 0x00, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x72, 0x44, 0x00, 0x02, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8056, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x17, 0xBF, 0x00, 0x39, 0x21, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8058, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0xFF, 0x80, 0x1E, 0x88, 0x80, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x1E, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x16, 0x40, 0x00, 0x1A, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x02, 0x00, 0x80, 0x02, 0x01, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x805A, { 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x16, 0x00, 0x1F, 0x21, 0x80, 0x31, 0xC0, 0x00, 0x01, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x02, 0x62, 0x00, 0x0C, 0x64, 0x00, 0x31, 0x58, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x805E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x2E, 0x11, 0x00, 0x20, 0x17, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x805F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x21, 0x00, 0x7F, 0xE1, 0x00, 0x0A, 0x21, 0x00, 0x1B, 0x21, 0x00, 0x31, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x0F, 0x80, 0x7F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8060, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x63, 0x00, 0x22, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x62, 0x00, 0x62, 0x42, 0x00, 0x02, 0x42, 0x00, 0x02, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8061, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x22, 0x63, 0x00, 0x22, 0xD1, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x32, 0x00, 0x22, 0x22, 0x00, 0x22, 0x3F, 0x00, 0x3E, 0xE1, 0x80, 0x22, 0x08, 0x00, 0x22, 0x0C, 0x00, 0x22, 0x14, 0x00, 0x3E, 0x51, 0x00, 0x62, 0x51, 0x80, 0x02, 0xD2, 0x80, 0x02, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8062, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x48, 0x00, 0x22, 0x4F, 0x00, 0x22, 0x48, 0x00, 0x22, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x62, 0xE8, 0x00, 0x02, 0xB8, 0x00, 0x02, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8064, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x3C, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x25, 0x7E, 0x80, 0x24, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8066, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x24, 0x7F, 0x00, 0x24, 0xD5, 0x00, 0x3C, 0xA5, 0x00, 0x25, 0x39, 0x00, 0x24, 0x4D, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x26, 0x00, 0x24, 0x00, 0x00, 0x24, 0x18, 0x00, 0x24, 0x2C, 0x00, 0x3C, 0xA1, 0x00, 0x64, 0xA1, 0x80, 0x05, 0xA2, 0x80, 0x05, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8068, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x84, 0x00, 0x25, 0x08, 0x00, 0x24, 0xA5, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x84, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x44, 0x00, 0x64, 0x44, 0x00, 0x04, 0xC4, 0x00, 0x05, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8069, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x7F, 0x92, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x92, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x13, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x72, 0x92, 0x00, 0x22, 0x28, 0x00, 0x02, 0x46, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x806A, { 0x00, 0x00, 0x00, 0x02, 0x82, 0x00, 0x7F, 0x66, 0x00, 0x12, 0x28, 0x00, 0x12, 0x02, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0xA2, 0x00, 0x12, 0x10, 0x00, 0x12, 0x52, 0x00, 0x7E, 0xC5, 0x00, 0x03, 0x45, 0x00, 0x02, 0x3C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x806D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x20, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x28, 0x00, 0x22, 0x2A, 0x00, 0x22, 0x2A, 0x80, 0x3E, 0x6F, 0x80, 0x62, 0x48, 0x00, 0x02, 0xC8, 0x80, 0x03, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x806F, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x12, 0x44, 0x00, 0x13, 0xA9, 0x00, 0x12, 0xAA, 0x00, 0x1E, 0x44, 0x00, 0x12, 0xA9, 0x00, 0x13, 0xDF, 0x80, 0x1E, 0x00, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x1E, 0xA5, 0x00, 0x32, 0xE7, 0x00, 0x02, 0xA5, 0x00, 0x02, 0x44, 0x00, 0x02, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8070, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x10, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x51, 0x00, 0x1E, 0x5F, 0x00, 0x12, 0x75, 0x00, 0x12, 0x59, 0x00, 0x12, 0x65, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x24, 0x00, 0x32, 0xA5, 0x00, 0x02, 0xA2, 0x80, 0x03, 0x3E, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8071, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x7F, 0xF1, 0x00, 0x08, 0x1B, 0x00, 0x0F, 0x8E, 0x00, 0x18, 0x9A, 0x00, 0x31, 0xB3, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x0F, 0x80, 0x7F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8072, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xDE, 0x00, 0x02, 0x12, 0x80, 0x3F, 0xF3, 0x80, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x52, 0x00, 0x1F, 0xCC, 0x00, 0x10, 0x33, 0x80, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0xFE, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8073, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x25, 0x4A, 0x00, 0x0A, 0x31, 0x00, 0x18, 0xA0, 0x00, 0x28, 0xBF, 0x00, 0x09, 0xA0, 0x00, 0x0A, 0x7F, 0x80, 0x0C, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x07, 0x80, 0x3F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8074, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x3D, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0x08, 0x00, 0x24, 0x2C, 0x00, 0x3C, 0xA5, 0x00, 0x64, 0xA1, 0x80, 0x05, 0xA2, 0x80, 0x05, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8075, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x62, 0x7F, 0x00, 0x02, 0x22, 0x00, 0x02, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8076, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x1E, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xBF, 0x80, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x7F, 0x3F, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8077, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x3F, 0x4A, 0x00, 0x12, 0x49, 0x00, 0x13, 0xF8, 0x00, 0x12, 0xA8, 0x00, 0x1E, 0xA8, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0xE9, 0x00, 0x12, 0xA9, 0x00, 0x12, 0xEA, 0x00, 0x1E, 0xAA, 0x00, 0x32, 0xE4, 0x80, 0x02, 0xAA, 0x80, 0x02, 0x31, 0x80, 0x02, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8079, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x10, 0x80, 0x3D, 0x28, 0x80, 0x24, 0xA5, 0x00, 0x25, 0x3C, 0x80, 0x24, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0xA9, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x64, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x807D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x10, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x55, 0x00, 0x12, 0x55, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x0A, 0x29, 0x00, 0x3E, 0xA0, 0x80, 0x0B, 0x22, 0x80, 0x3E, 0x3E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x807E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x9F, 0x00, 0x09, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x1F, 0x81, 0x00, 0x10, 0x9F, 0x00, 0x1F, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x9F, 0x00, 0x11, 0x90, 0x80, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x807F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8080, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8081, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x37, 0xFE, 0x00, 0x20, 0x40, 0x00, 0x6F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8083, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x14, 0x94, 0x00, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8084, { 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x27, 0x08, 0x00, 0x38, 0x7F, 0x00, 0x21, 0x09, 0x00, 0x21, 0xFF, 0x00, 0x3F, 0x09, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x11, 0x08, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8085, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x11, 0x51, 0x00, 0x11, 0x51, 0x00, 0x1F, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x21, 0x51, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8086, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x9F, 0x00, 0x08, 0x05, 0x00, 0x0F, 0x85, 0x00, 0x08, 0x3F, 0x80, 0x0F, 0x85, 0x00, 0x08, 0x05, 0x00, 0x3F, 0xDF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x3F, 0x80, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xFF, 0x80, 0x38, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8087, { 0x00, 0x00, 0x00, 0x03, 0x88, 0x00, 0x1C, 0x1F, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xD4, 0x00, 0x10, 0x8C, 0x00, 0x1F, 0x93, 0x80, 0x20, 0x60, 0x00, 0x27, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8088, { 0x00, 0x00, 0x00, 0x3E, 0x12, 0x00, 0x20, 0x7F, 0x80, 0x3F, 0x11, 0x00, 0x21, 0x1A, 0x00, 0x3F, 0x0C, 0x80, 0x20, 0xB7, 0x80, 0x4F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8089, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x19, 0x00, 0x16, 0x47, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x13, 0x19, 0x00, 0x1C, 0x07, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x808B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x1E, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x21, 0x00, 0x12, 0x22, 0x00, 0x22, 0x42, 0x00, 0x26, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x808C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x22, 0x87, 0x80, 0x26, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x808E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8093, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8096, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8098, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x64, 0x00, 0x22, 0x34, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x62, 0x04, 0x00, 0x46, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x809A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x62, 0xFF, 0x80, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x809B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x809C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x0C, 0x00, 0x22, 0x18, 0x00, 0x22, 0x30, 0x00, 0x22, 0x62, 0x00, 0x3E, 0x06, 0x00, 0x22, 0x04, 0x00, 0x22, 0x0C, 0x00, 0x22, 0x38, 0x00, 0x3E, 0x61, 0x00, 0x22, 0x03, 0x00, 0x22, 0x02, 0x00, 0x22, 0x06, 0x00, 0x22, 0x0C, 0x00, 0x62, 0x38, 0x00, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x809D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x809E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xA2, 0x00, 0x24, 0x92, 0x00, 0x24, 0xD2, 0x00, 0x3C, 0x46, 0x00, 0x25, 0x44, 0x00, 0x25, 0x6C, 0x00, 0x26, 0x28, 0x00, 0x3C, 0x38, 0x00, 0x24, 0x10, 0x00, 0x24, 0x38, 0x00, 0x24, 0x6C, 0x00, 0x24, 0x46, 0x00, 0x64, 0xC3, 0x00, 0x4D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x809F, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0x7E, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x00, 0x12, 0x42, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x22, 0x00, 0x4A, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80A0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0x40, 0x00, 0x3C, 0x82, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x4A, 0x00, 0x24, 0x4A, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x25, 0x22, 0x00, 0x26, 0x22, 0x00, 0x24, 0x42, 0x00, 0x24, 0x94, 0x00, 0x4C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x80, 0x12, 0x44, 0x80, 0x1E, 0x87, 0x80, 0x12, 0x80, 0x00, 0x13, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x24, 0x00, 0x12, 0x14, 0x00, 0x12, 0x08, 0x00, 0x12, 0x14, 0x00, 0x22, 0x22, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80A2, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x41, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x14, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x14, 0x00, 0x22, 0x22, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80A4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x12, 0x14, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x26, 0x83, 0x00, 0x43, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x11, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x40, 0x00, 0x11, 0x40, 0x00, 0x1F, 0x40, 0x00, 0x11, 0x40, 0x00, 0x11, 0x40, 0x00, 0x11, 0x40, 0x80, 0x11, 0x40, 0x80, 0x21, 0x7F, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80A6, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x04, 0x00, 0x24, 0x46, 0x00, 0x24, 0xC2, 0x00, 0x25, 0x83, 0x00, 0x3F, 0x01, 0x80, 0x24, 0xFE, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x3C, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x62, 0x00, 0x24, 0x46, 0x00, 0x64, 0xC4, 0x00, 0x4D, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x30, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x68, 0x00, 0x24, 0xEC, 0x00, 0x25, 0xA6, 0x00, 0x3F, 0x23, 0x80, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x64, 0x20, 0x00, 0x4C, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80A9, { 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x01, 0x00, 0x12, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80AA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x1E, 0x21, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x81, 0x00, 0x22, 0x82, 0x00, 0x27, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80AB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x13, 0x00, 0x24, 0x1E, 0x00, 0x25, 0xF0, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3C, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x80, 0x64, 0x19, 0x80, 0x4C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80AC, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3C, 0x13, 0x00, 0x24, 0x11, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x38, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x68, 0x00, 0x24, 0x48, 0x80, 0x64, 0xC9, 0x80, 0x4D, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80AD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x39, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x3D, 0x6D, 0x00, 0x25, 0x45, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x65, 0x01, 0x00, 0x4D, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80AE, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x10, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x7C, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x49, 0x00, 0x22, 0x89, 0x00, 0x4B, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80AF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80B1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x12, 0x88, 0x00, 0x1E, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x90, 0x00, 0x12, 0x90, 0x00, 0x1E, 0x90, 0x00, 0x12, 0xA0, 0x00, 0x12, 0xA1, 0x00, 0x12, 0xA1, 0x00, 0x12, 0xCF, 0x80, 0x22, 0xF0, 0x80, 0x2E, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80B2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x04, 0x02, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80B4, { 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x01, 0xD8, 0x00, 0x00, 0x70, 0x00, 0x03, 0x8C, 0x00, 0x1C, 0x42, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x06, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x32, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80B7, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x1F, 0x40, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x92, 0x00, 0x13, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x4A, 0x83, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80B8, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x04, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0xC6, 0x00, 0x3D, 0x83, 0x00, 0x27, 0x01, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80B9, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x04, 0x00, 0x24, 0x44, 0x00, 0x24, 0xC6, 0x00, 0x25, 0x83, 0x00, 0x3F, 0x01, 0x80, 0x24, 0x7C, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x64, 0x06, 0x00, 0x4C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80BA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x4B, 0x00, 0x22, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80BC, { 0x00, 0x00, 0x00, 0x02, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x84, 0x00, 0x4A, 0x84, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80BD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x28, 0x00, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x22, 0x64, 0x00, 0x22, 0x54, 0x00, 0x4A, 0x83, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80BE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x88, 0x00, 0x24, 0x50, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0x07, 0x00, 0x0F, 0xFA, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80BF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C0, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x1F, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x44, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x50, 0x00, 0x12, 0x42, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x50, 0x00, 0x1E, 0x50, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x44, 0x00, 0x22, 0x47, 0x00, 0x4A, 0x62, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C1, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x24, 0x40, 0x00, 0x24, 0x44, 0x00, 0x25, 0xFE, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x25, 0x46, 0x00, 0x25, 0x45, 0x00, 0x3D, 0x45, 0x00, 0x26, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x25, 0x04, 0x00, 0x26, 0x14, 0x00, 0x4C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x12, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x22, 0x92, 0x00, 0x22, 0x10, 0x00, 0x4A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x65, 0xFF, 0x80, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80C8, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x26, 0x00, 0x24, 0x22, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x76, 0x00, 0x3C, 0x54, 0x00, 0x24, 0xDC, 0x00, 0x24, 0x88, 0x00, 0x25, 0x9C, 0x00, 0x27, 0x36, 0x00, 0x64, 0x63, 0x00, 0x4C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80CC, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x23, 0x80, 0x3F, 0x3C, 0x00, 0x01, 0x20, 0x00, 0x01, 0x20, 0x00, 0x07, 0x20, 0x80, 0x39, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80CD, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x1E, 0x00, 0x24, 0xF2, 0x00, 0x24, 0x82, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x93, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x25, 0x95, 0x00, 0x25, 0x15, 0x80, 0x65, 0x1C, 0x80, 0x4D, 0x76, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80CE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x20, 0x00, 0x12, 0x22, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x8F, 0x00, 0x13, 0xF0, 0x80, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80CF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x13, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x90, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0xFF, 0x80, 0x3C, 0x10, 0x80, 0x24, 0x30, 0x80, 0x24, 0x30, 0x80, 0x24, 0x50, 0x80, 0x24, 0x90, 0x80, 0x65, 0x11, 0x80, 0x4C, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA6, 0x00, 0x3C, 0xBC, 0x00, 0x24, 0xA0, 0x00, 0x25, 0xA0, 0x00, 0x25, 0x20, 0x00, 0x27, 0x21, 0x00, 0x64, 0x33, 0x00, 0x4C, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80D4, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x24, 0x23, 0x00, 0x27, 0xBE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x80, 0x27, 0xB1, 0x80, 0x3C, 0x1F, 0x00, 0x60, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x16, 0x9A, 0x00, 0x10, 0x82, 0x00, 0x11, 0x42, 0x00, 0x16, 0x3A, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80D5, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0xC2, 0x00, 0x24, 0xBF, 0x80, 0x3C, 0x82, 0x00, 0x25, 0x82, 0x00, 0x26, 0x92, 0x00, 0x24, 0x9A, 0x00, 0x3C, 0x8A, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x64, 0x82, 0x00, 0x4C, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80D6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x92, 0x00, 0x25, 0x93, 0x00, 0x25, 0x11, 0x00, 0x24, 0x10, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80D7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x24, 0x28, 0x00, 0x24, 0x6C, 0x00, 0x24, 0xC6, 0x00, 0x3D, 0x93, 0x00, 0x27, 0x31, 0x80, 0x24, 0x64, 0x00, 0x24, 0xCC, 0x00, 0x3C, 0x18, 0x00, 0x24, 0x31, 0x00, 0x24, 0xE3, 0x00, 0x24, 0x06, 0x00, 0x24, 0x0C, 0x00, 0x64, 0x38, 0x00, 0x4C, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80D8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x30, 0x00, 0x24, 0x62, 0x00, 0x24, 0xC6, 0x00, 0x24, 0x64, 0x00, 0x3C, 0x2C, 0x00, 0x24, 0x18, 0x00, 0x24, 0x32, 0x00, 0x24, 0x23, 0x00, 0x24, 0x61, 0x00, 0x64, 0xCF, 0x80, 0x4D, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80D9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x50, 0x00, 0x3E, 0xD0, 0x00, 0x23, 0x90, 0x00, 0x22, 0x1F, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x1F, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x62, 0x10, 0x00, 0x4E, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x02, 0x00, 0x12, 0x04, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x88, 0x80, 0x13, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x26, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x1E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x1E, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80DC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0x94, 0x00, 0x3C, 0xFE, 0x00, 0x25, 0x10, 0x00, 0x26, 0x10, 0x00, 0x24, 0x14, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80DD, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x0E, 0x00, 0x24, 0xF8, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3C, 0x8C, 0x00, 0x24, 0x84, 0x00, 0x24, 0xE4, 0x00, 0x25, 0x86, 0x00, 0x24, 0x02, 0x80, 0x65, 0xF3, 0x80, 0x4C, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80DE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x81, 0x00, 0x1F, 0x01, 0x00, 0x12, 0x7D, 0x00, 0x12, 0x45, 0x00, 0x12, 0x45, 0x00, 0x1E, 0x7D, 0x00, 0x12, 0x41, 0x00, 0x12, 0x46, 0x00, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x22, 0x7F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80E0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x62, 0x00, 0x24, 0x43, 0x00, 0x24, 0x41, 0x00, 0x24, 0xCF, 0x80, 0x64, 0xF8, 0x80, 0x4D, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80E1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0F, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x0F, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x4F, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x50, 0x80, 0x10, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80E4, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0xA4, 0x00, 0x15, 0x24, 0x00, 0x12, 0x44, 0x00, 0x11, 0x94, 0x00, 0x11, 0x3C, 0x00, 0x17, 0xCC, 0x00, 0x10, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x80, 0x14, 0x24, 0x80, 0x28, 0x67, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80E7, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x1F, 0x50, 0x00, 0x12, 0x48, 0x00, 0x12, 0x4A, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x50, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x54, 0x00, 0x1E, 0x54, 0x00, 0x12, 0x58, 0x00, 0x12, 0x50, 0x00, 0x22, 0xB1, 0x00, 0x22, 0x91, 0x00, 0x4B, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80E8, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x40, 0x00, 0x1E, 0x50, 0x00, 0x12, 0x90, 0x00, 0x12, 0x92, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x54, 0x00, 0x12, 0x52, 0x00, 0x22, 0x93, 0x00, 0x23, 0x11, 0x00, 0x4A, 0x50, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80E9, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x12, 0x24, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x30, 0x00, 0x12, 0x28, 0x00, 0x22, 0x26, 0x00, 0x22, 0x22, 0x00, 0x4A, 0x20, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80EA, { 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x1F, 0x1F, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x82, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x1E, 0x82, 0x00, 0x12, 0x80, 0x00, 0x12, 0x80, 0x00, 0x22, 0x80, 0x00, 0x22, 0x80, 0x00, 0x4A, 0x80, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80EB, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x12, 0x08, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x2C, 0x00, 0x12, 0x43, 0x00, 0x13, 0x81, 0x00, 0x12, 0x00, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x12, 0x00, 0x4B, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80EC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x7E, 0x00, 0x09, 0x04, 0x00, 0x1A, 0x28, 0x00, 0x06, 0x10, 0x00, 0x19, 0x6C, 0x00, 0x60, 0x83, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x11, 0x44, 0x00, 0x12, 0x24, 0x00, 0x10, 0x84, 0x00, 0x11, 0x44, 0x00, 0x12, 0x24, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x7D, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0x39, 0x00, 0x3D, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0x45, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x65, 0xFF, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80EE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x7E, 0x00, 0x24, 0xC2, 0x00, 0x25, 0xA4, 0x00, 0x3C, 0x18, 0x00, 0x24, 0x6E, 0x00, 0x25, 0xC3, 0x80, 0x24, 0x08, 0x00, 0x3C, 0x7F, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x64, 0x08, 0x00, 0x4C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80EF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x24, 0x42, 0x00, 0x3D, 0x81, 0x80, 0x24, 0x7E, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x64, 0x03, 0x00, 0x4C, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80F0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x25, 0xFE, 0x00, 0x3C, 0x22, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x20, 0x00, 0x25, 0x20, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x51, 0x00, 0x24, 0x51, 0x00, 0x24, 0xDB, 0x00, 0x24, 0x8C, 0x00, 0x65, 0x86, 0x00, 0x4F, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80F1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x88, 0x80, 0x12, 0x88, 0x80, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x80, 0x22, 0x82, 0x80, 0x2F, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80F2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x3C, 0x60, 0x00, 0x24, 0xC4, 0x00, 0x25, 0x8C, 0x00, 0x24, 0xD8, 0x00, 0x3C, 0x32, 0x00, 0x24, 0x66, 0x00, 0x24, 0xCC, 0x00, 0x25, 0x98, 0x00, 0x24, 0x36, 0x00, 0x64, 0x63, 0x00, 0x4D, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80F3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x25, 0xC6, 0x00, 0x3F, 0x6C, 0x00, 0x24, 0x38, 0x00, 0x24, 0x6C, 0x00, 0x24, 0xC6, 0x00, 0x3F, 0x83, 0x80, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x64, 0x82, 0x00, 0x4C, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xBD, 0x00, 0x12, 0xA5, 0x00, 0x1E, 0xA5, 0x00, 0x12, 0xBD, 0x00, 0x12, 0xA5, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x22, 0x81, 0x00, 0x26, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80F6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x3C, 0xC6, 0x00, 0x25, 0x83, 0x80, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x6C, 0x00, 0x24, 0x38, 0x00, 0x24, 0x10, 0x00, 0x24, 0x38, 0x00, 0x24, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x4D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80F8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x80, 0x80, 0x1F, 0x02, 0x80, 0x12, 0xCA, 0x80, 0x12, 0xAA, 0x80, 0x12, 0x92, 0x80, 0x1E, 0xB2, 0x80, 0x12, 0xCA, 0x80, 0x12, 0x8A, 0x80, 0x12, 0xFE, 0x80, 0x12, 0x82, 0x80, 0x22, 0x01, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x80, 0x3D, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x3D, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x65, 0x24, 0x80, 0x4D, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80FA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x3D, 0x20, 0x80, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x46, 0x00, 0x24, 0xF4, 0x00, 0x24, 0x0C, 0x00, 0x24, 0x1E, 0x00, 0x64, 0x73, 0x00, 0x4D, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80FC, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x3C, 0xC6, 0x00, 0x24, 0x44, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0xC4, 0x00, 0x64, 0x84, 0x00, 0x4D, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x80FD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x11, 0x23, 0x00, 0x27, 0xBC, 0x00, 0x38, 0xA0, 0x00, 0x00, 0x20, 0x80, 0x3F, 0x3F, 0x80, 0x21, 0x00, 0x00, 0x21, 0x20, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x26, 0x00, 0x21, 0x38, 0x00, 0x3F, 0x20, 0x00, 0x21, 0x20, 0x80, 0x21, 0x20, 0x80, 0x23, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x80FE, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x13, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xD9, 0x00, 0x24, 0x4B, 0x00, 0x2A, 0x4A, 0x00, 0x35, 0xCE, 0x00, 0x24, 0x44, 0x00, 0x2A, 0x4E, 0x80, 0x31, 0xCA, 0x80, 0x20, 0x5B, 0x80, 0x20, 0xD1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8102, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1E, 0x47, 0x00, 0x12, 0x78, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x80, 0x1E, 0x7F, 0x80, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x21, 0x00, 0x24, 0x61, 0x00, 0x24, 0xC3, 0x00, 0x3C, 0x86, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x00, 0x00, 0x25, 0x00, 0x00, 0x25, 0x00, 0x80, 0x65, 0x81, 0x80, 0x4C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8105, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x08, 0x00, 0x06, 0x74, 0x00, 0x1F, 0xDF, 0x80, 0x04, 0x84, 0x80, 0x08, 0x88, 0x80, 0x17, 0x17, 0x00, 0x20, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8106, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x84, 0x00, 0x13, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x12, 0xBE, 0x00, 0x12, 0xA2, 0x00, 0x1E, 0xA2, 0x00, 0x12, 0xAE, 0x00, 0x12, 0xA0, 0x00, 0x12, 0xA0, 0x80, 0x12, 0xA0, 0x80, 0x22, 0xBF, 0x80, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8107, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x11, 0x00, 0x14, 0x21, 0x00, 0x1C, 0x42, 0x00, 0x14, 0x8C, 0x00, 0x15, 0x82, 0x00, 0x14, 0x82, 0x00, 0x17, 0xEF, 0x80, 0x1C, 0xA2, 0x80, 0x14, 0xA2, 0x80, 0x15, 0x24, 0x80, 0x15, 0x24, 0x80, 0x26, 0xCB, 0x00, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8108, { 0x00, 0x00, 0x00, 0x1E, 0x07, 0x00, 0x12, 0xF8, 0x00, 0x12, 0x80, 0x00, 0x12, 0x86, 0x00, 0x1E, 0x98, 0x00, 0x12, 0xE0, 0x00, 0x12, 0xA1, 0x00, 0x12, 0xB2, 0x00, 0x12, 0xB4, 0x00, 0x1E, 0xA8, 0x00, 0x12, 0xA8, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA4, 0x00, 0x12, 0xA2, 0x00, 0x22, 0xA1, 0x00, 0x26, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8109, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x3C, 0x38, 0x00, 0x24, 0x08, 0x00, 0x24, 0x00, 0x00, 0x24, 0xF0, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x11, 0x00, 0x25, 0xD3, 0x00, 0x24, 0x5A, 0x00, 0x3C, 0x54, 0x00, 0x24, 0xD4, 0x00, 0x24, 0x92, 0x00, 0x25, 0x93, 0x00, 0x27, 0x11, 0x80, 0x64, 0x10, 0x00, 0x4C, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x810A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1E, 0x4F, 0x00, 0x00, 0x40, 0x00, 0x1E, 0xAF, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x810B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x82, 0x00, 0x1E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x80, 0x11, 0x08, 0x80, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x810D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x12, 0x83, 0x00, 0x1F, 0x08, 0x00, 0x12, 0x7C, 0x00, 0x12, 0x00, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x22, 0x24, 0x00, 0x22, 0x42, 0x00, 0x4A, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x810E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x84, 0x00, 0x12, 0x48, 0x00, 0x12, 0x30, 0x00, 0x12, 0x28, 0x00, 0x1E, 0x46, 0x00, 0x12, 0x92, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x54, 0x00, 0x12, 0x93, 0x00, 0x23, 0x11, 0x00, 0x22, 0x10, 0x00, 0x4A, 0x50, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x810F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x0A, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x80, 0x00, 0x12, 0x88, 0x00, 0x1E, 0x88, 0x00, 0x12, 0x8A, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x88, 0x00, 0x1E, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x22, 0x8A, 0x00, 0x4A, 0xFF, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8110, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x24, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x88, 0x00, 0x24, 0x50, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x58, 0x00, 0x24, 0x87, 0x00, 0x27, 0x0A, 0x00, 0x3C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x25, 0x08, 0x00, 0x46, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8111, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x3D, 0x0A, 0x00, 0x25, 0x8A, 0x00, 0x25, 0x52, 0x00, 0x25, 0x52, 0x00, 0x3D, 0x22, 0x00, 0x25, 0x52, 0x00, 0x25, 0x8E, 0x00, 0x25, 0x06, 0x00, 0x25, 0x02, 0x00, 0x25, 0xFE, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8112, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x12, 0x92, 0x00, 0x12, 0x52, 0x00, 0x12, 0x54, 0x00, 0x1E, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x30, 0x00, 0x1E, 0x38, 0x00, 0x12, 0x54, 0x00, 0x12, 0x54, 0x00, 0x22, 0x93, 0x00, 0x23, 0x12, 0x00, 0x4A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8113, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x22, 0x00, 0x26, 0x24, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x42, 0x00, 0x24, 0xA6, 0x00, 0x25, 0xA8, 0x00, 0x3E, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0x88, 0x00, 0x24, 0x87, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xC0, 0x00, 0x4C, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8114, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x12, 0x26, 0x00, 0x22, 0xA2, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x11, 0x44, 0x00, 0x12, 0x34, 0x00, 0x14, 0x94, 0x00, 0x11, 0x44, 0x00, 0x12, 0x34, 0x00, 0x14, 0x14, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8116, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x04, 0x00, 0x24, 0x08, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4C, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8117, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3C, 0x80, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x29, 0x00, 0x26, 0x49, 0x00, 0x3C, 0x91, 0x00, 0x25, 0x23, 0x00, 0x24, 0x42, 0x00, 0x24, 0x8E, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x64, 0x82, 0x00, 0x4C, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8118, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x16, 0x00, 0x80, 0x14, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x84, 0x80, 0x25, 0x07, 0x80, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x811A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1C, 0x47, 0x80, 0x14, 0x44, 0x80, 0x15, 0xF4, 0x80, 0x14, 0x44, 0x80, 0x1C, 0x44, 0x80, 0x14, 0x44, 0x80, 0x14, 0x44, 0x80, 0x17, 0xFC, 0x80, 0x1C, 0x84, 0x80, 0x14, 0xA4, 0x80, 0x15, 0x14, 0x80, 0x15, 0x74, 0x80, 0x17, 0x8D, 0x80, 0x24, 0x04, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x811B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0x49, 0x00, 0x12, 0x92, 0x00, 0x1F, 0x24, 0x00, 0x12, 0x92, 0x00, 0x12, 0x49, 0x00, 0x12, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x811C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x3C, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x64, 0x7F, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x811E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3D, 0x55, 0x00, 0x25, 0x55, 0x00, 0x26, 0x38, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x67, 0xFF, 0x80, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8120, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3D, 0xC7, 0x00, 0x24, 0x5C, 0x00, 0x24, 0x44, 0x00, 0x24, 0x84, 0x00, 0x3D, 0xD4, 0x00, 0x24, 0x57, 0x80, 0x24, 0x54, 0x00, 0x24, 0x54, 0x00, 0x3D, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0xD4, 0x00, 0x24, 0x9F, 0x80, 0x25, 0xC0, 0x00, 0x65, 0x70, 0x00, 0x4F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x13, 0xD8, 0x00, 0x1E, 0x07, 0x80, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8124, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x3C, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x80, 0x24, 0xA4, 0x00, 0x3C, 0xA4, 0x80, 0x24, 0xA5, 0x80, 0x24, 0xA5, 0x00, 0x25, 0xA6, 0x00, 0x25, 0x22, 0x00, 0x67, 0x3B, 0x00, 0x4C, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8127, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x62, 0x00, 0x24, 0x42, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x49, 0x00, 0x3C, 0x48, 0x00, 0x24, 0xCF, 0x80, 0x25, 0xA0, 0x00, 0x24, 0x3E, 0x00, 0x3C, 0x62, 0x00, 0x24, 0xC6, 0x00, 0x25, 0xAC, 0x00, 0x24, 0x18, 0x00, 0x24, 0x3C, 0x00, 0x64, 0x66, 0x00, 0x4D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8129, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x62, 0x00, 0x1A, 0xA4, 0x00, 0x1B, 0x18, 0x00, 0x2A, 0x14, 0x00, 0x0A, 0x63, 0x80, 0x0B, 0x80, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x812B, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x02, 0x00, 0x12, 0x41, 0x00, 0x12, 0x80, 0x80, 0x13, 0xFF, 0x00, 0x1E, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x80, 0x22, 0x47, 0x80, 0x26, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x812C, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3C, 0x1C, 0x00, 0x27, 0xF4, 0x00, 0x24, 0xA6, 0x00, 0x25, 0xB3, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x24, 0x0C, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4C, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x812F, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x1E, 0x09, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8130, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x82, 0x00, 0x24, 0xC6, 0x00, 0x24, 0x44, 0x00, 0x24, 0x04, 0x00, 0x65, 0xFF, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8131, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x66, 0x00, 0x22, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x64, 0x80, 0x62, 0x44, 0x80, 0x46, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8132, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x02, 0x00, 0x25, 0x02, 0x00, 0x25, 0xFE, 0x00, 0x3D, 0x10, 0x00, 0x25, 0x12, 0x00, 0x25, 0xD4, 0x00, 0x25, 0x58, 0x00, 0x3D, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x52, 0x00, 0x25, 0x92, 0x00, 0x25, 0x11, 0x00, 0x56, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8133, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x3D, 0x31, 0x80, 0x25, 0x91, 0x00, 0x24, 0x93, 0x00, 0x24, 0x82, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x82, 0x80, 0x24, 0xA6, 0x80, 0x24, 0xB4, 0x80, 0x3C, 0x9C, 0x80, 0x24, 0x88, 0x80, 0x24, 0x9C, 0x80, 0x24, 0xB6, 0x80, 0x24, 0xA2, 0x80, 0x64, 0x80, 0x80, 0x4C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x24, 0x2C, 0x00, 0x24, 0x66, 0x00, 0x64, 0xC3, 0x00, 0x4D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8136, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x1E, 0xFE, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0xAA, 0x00, 0x22, 0xC6, 0x00, 0x22, 0x82, 0x00, 0x4A, 0x8A, 0x00, 0x04, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8138, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x3D, 0x07, 0x00, 0x26, 0xFA, 0x00, 0x24, 0x00, 0x00, 0x25, 0x44, 0x00, 0x3D, 0x24, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA8, 0x00, 0x24, 0xA8, 0x00, 0x24, 0x12, 0x00, 0x27, 0xFF, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8139, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x40, 0x00, 0x1E, 0x7E, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x00, 0x13, 0xFF, 0x80, 0x1E, 0x48, 0x00, 0x12, 0x49, 0x00, 0x12, 0x46, 0x00, 0x12, 0x44, 0x00, 0x12, 0x42, 0x00, 0x22, 0x7D, 0x00, 0x26, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x813A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x24, 0xE7, 0x00, 0x25, 0xBD, 0x80, 0x24, 0x00, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x813C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xDD, 0x00, 0x25, 0x55, 0x00, 0x3D, 0x55, 0x00, 0x25, 0x55, 0x00, 0x25, 0xBB, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x65, 0x11, 0x00, 0x4D, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x813E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x44, 0x00, 0x12, 0x84, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x04, 0x00, 0x22, 0x04, 0x00, 0x26, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8145, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x91, 0x00, 0x24, 0x93, 0x00, 0x25, 0xBA, 0x00, 0x25, 0x28, 0x00, 0x3C, 0x6C, 0x00, 0x24, 0xC6, 0x00, 0x25, 0x93, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x91, 0x00, 0x24, 0x93, 0x00, 0x25, 0xBA, 0x00, 0x25, 0x28, 0x00, 0x24, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x4D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8146, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0xFE, 0x00, 0x24, 0xAA, 0x00, 0x3C, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xFE, 0x00, 0x24, 0xAA, 0x00, 0x3C, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0x44, 0x00, 0x64, 0xC6, 0x00, 0x4D, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8147, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3D, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x3C, 0xD6, 0x00, 0x25, 0x93, 0x00, 0x27, 0x11, 0x80, 0x24, 0x10, 0x00, 0x3C, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x8C, 0x00, 0x25, 0xF8, 0x00, 0x64, 0x2E, 0x00, 0x4D, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8148, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1F, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0xFE, 0x00, 0x1E, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x1E, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x4A, 0x8A, 0x00, 0x04, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x814A, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x64, 0x82, 0x00, 0x4C, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x814B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x88, 0x00, 0x38, 0x88, 0x00, 0x29, 0x1F, 0x00, 0x29, 0x19, 0x00, 0x2B, 0x26, 0x00, 0x3D, 0x52, 0x00, 0x29, 0x94, 0x00, 0x29, 0x08, 0x00, 0x29, 0x0C, 0x00, 0x29, 0x12, 0x00, 0x39, 0x21, 0x00, 0x29, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x814C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x54, 0x00, 0x3C, 0x92, 0x00, 0x25, 0xFF, 0x00, 0x26, 0x91, 0x80, 0x24, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x64, 0x18, 0x80, 0x4C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x814E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x1F, 0xCA, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xCA, 0x00, 0x12, 0x11, 0x00, 0x1F, 0xE0, 0x80, 0x10, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8150, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x06, 0x00, 0x12, 0x05, 0x00, 0x16, 0xFF, 0x80, 0x1A, 0x44, 0x00, 0x12, 0x24, 0x00, 0x12, 0x0C, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x51, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x25, 0x00, 0x24, 0x51, 0x00, 0x25, 0x8D, 0x00, 0x24, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8151, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x12, 0x00, 0x15, 0x12, 0x00, 0x1D, 0x22, 0x00, 0x15, 0x7F, 0x80, 0x15, 0xA2, 0x00, 0x15, 0x22, 0x00, 0x1D, 0x2A, 0x00, 0x15, 0x26, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x25, 0x22, 0x00, 0x2D, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8152, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x08, 0x00, 0x25, 0x08, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x08, 0x00, 0x3D, 0x08, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x26, 0x41, 0x00, 0x64, 0x41, 0x00, 0x4C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8153, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x25, 0xE7, 0x80, 0x24, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x25, 0xE7, 0x80, 0x24, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x64, 0x00, 0x25, 0xA7, 0x80, 0x24, 0x24, 0x00, 0x24, 0x64, 0x00, 0x64, 0x44, 0x00, 0x4C, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8154, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x12, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x44, 0x80, 0x12, 0x87, 0x80, 0x13, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8155, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x16, 0x00, 0x80, 0x14, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x99, 0x00, 0x14, 0x99, 0x00, 0x15, 0x69, 0x00, 0x1E, 0x2B, 0x00, 0x14, 0x48, 0x00, 0x14, 0x48, 0x00, 0x14, 0x88, 0x80, 0x25, 0x0F, 0x80, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8157, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x62, 0x00, 0x24, 0x42, 0x00, 0x64, 0xC2, 0x00, 0x4D, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8159, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3D, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x26, 0x02, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x24, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x90, 0x00, 0x24, 0x94, 0x00, 0x24, 0x93, 0x00, 0x25, 0x11, 0x00, 0x54, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x815A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x26, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x94, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x25, 0x53, 0x00, 0x56, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x815F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x25, 0x00, 0x80, 0x3C, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x64, 0x00, 0x24, 0x46, 0x00, 0x3C, 0xFB, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x64, 0x10, 0x00, 0x4D, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8160, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x28, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x7D, 0x80, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x28, 0x00, 0x24, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x4F, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x3D, 0x3D, 0x00, 0x25, 0x25, 0x00, 0x25, 0x25, 0x00, 0x25, 0x25, 0x00, 0x25, 0x3D, 0x00, 0x65, 0x01, 0x00, 0x4D, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x88, 0x00, 0x13, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x24, 0x80, 0x12, 0x49, 0x00, 0x12, 0x92, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x24, 0x80, 0x12, 0x00, 0x00, 0x12, 0x08, 0x00, 0x12, 0x10, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0xA2, 0x80, 0x12, 0x94, 0x80, 0x12, 0x9C, 0x80, 0x22, 0xA2, 0x80, 0x22, 0xFF, 0x80, 0x26, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8167, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3C, 0x18, 0x00, 0x24, 0x6C, 0x00, 0x24, 0xC6, 0x00, 0x27, 0x83, 0x80, 0x3C, 0x7C, 0x00, 0x24, 0x00, 0x00, 0x25, 0xE4, 0x80, 0x25, 0x24, 0x80, 0x3D, 0xAD, 0x80, 0x25, 0x69, 0x00, 0x25, 0x29, 0x00, 0x25, 0xA9, 0x00, 0x25, 0x6D, 0x80, 0x65, 0x24, 0x80, 0x4D, 0x64, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8168, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0x10, 0x80, 0x25, 0x10, 0x80, 0x25, 0x10, 0x80, 0x25, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x20, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x65, 0x24, 0x80, 0x4D, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8169, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x45, 0x00, 0x25, 0x29, 0x00, 0x25, 0x7D, 0x00, 0x3D, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0x7D, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x65, 0x11, 0x00, 0x4D, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x816B, { 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x12, 0x78, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x816D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x20, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x64, 0x06, 0x00, 0x4C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x816E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x08, 0x00, 0x24, 0x2C, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xA1, 0x80, 0x65, 0xA2, 0x80, 0x4D, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x816F, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x1E, 0x00, 0x25, 0xF0, 0x00, 0x25, 0x08, 0x00, 0x25, 0xFF, 0x80, 0x3D, 0x08, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x3D, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x25, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x64, 0x41, 0x00, 0x4C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x12, 0xFF, 0x00, 0x12, 0xA5, 0x00, 0x1E, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x1E, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0xC8, 0x00, 0x13, 0x38, 0x00, 0x22, 0x26, 0x00, 0x26, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8171, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1D, 0xC8, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x4A, 0x00, 0x14, 0xFF, 0x80, 0x1C, 0x8A, 0x00, 0x15, 0xFE, 0x00, 0x16, 0x48, 0x00, 0x14, 0x7F, 0x00, 0x1E, 0x48, 0x00, 0x15, 0x48, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x88, 0x00, 0x25, 0x48, 0x00, 0x25, 0x3F, 0x80, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8174, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xD0, 0x00, 0x25, 0x97, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0xD7, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xD7, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x38, 0x00, 0x24, 0x2C, 0x00, 0x24, 0x64, 0x00, 0x24, 0x46, 0x00, 0x64, 0xC3, 0x00, 0x4D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x65, 0x11, 0x00, 0x4D, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x14, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x40, 0x00, 0x14, 0xFF, 0x80, 0x1D, 0x12, 0x80, 0x16, 0x22, 0x80, 0x14, 0x44, 0x80, 0x15, 0x88, 0x80, 0x24, 0x31, 0x00, 0x2C, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8179, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x40, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x80, 0x00, 0x13, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x62, 0x00, 0x13, 0x94, 0x00, 0x12, 0x08, 0x00, 0x22, 0x36, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x817A, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x08, 0x80, 0x1E, 0xF9, 0x00, 0x12, 0x1A, 0x00, 0x12, 0x2C, 0x00, 0x12, 0x4A, 0x00, 0x22, 0x8A, 0x00, 0x23, 0x09, 0x00, 0x26, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x817B, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3C, 0x08, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x08, 0x00, 0x25, 0xE8, 0x00, 0x3C, 0x08, 0x00, 0x27, 0xF8, 0x00, 0x24, 0x08, 0x00, 0x25, 0xF4, 0x00, 0x3D, 0x14, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x55, 0x00, 0x25, 0x55, 0x00, 0x24, 0xA5, 0x00, 0x4D, 0x12, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x817C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x42, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x7A, 0x00, 0x3D, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x7A, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x55, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x817D, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x3E, 0xFE, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x3C, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFE, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x25, 0x4A, 0x00, 0x57, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x817E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3D, 0x24, 0x00, 0x24, 0xA8, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x25, 0x07, 0x00, 0x26, 0xFA, 0x00, 0x3C, 0x08, 0x00, 0x24, 0x8A, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x44, 0x0A, 0x00, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x817F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1E, 0x5F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x12, 0x1F, 0x00, 0x1F, 0x11, 0x00, 0x12, 0x91, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x18, 0x80, 0x1E, 0xD5, 0x00, 0x12, 0x52, 0x00, 0x12, 0x53, 0x00, 0x12, 0x5C, 0x80, 0x22, 0x70, 0x00, 0x22, 0xBF, 0x80, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8180, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x42, 0x00, 0x12, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x13, 0x10, 0x80, 0x12, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x41, 0x00, 0x22, 0x82, 0x00, 0x27, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8181, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3C, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x48, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x49, 0x00, 0x24, 0x49, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x4C, 0x00, 0x24, 0xCA, 0x00, 0x25, 0x4B, 0x00, 0x66, 0x49, 0x80, 0x4C, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8182, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0xC0, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x24, 0x80, 0x32, 0x25, 0x00, 0x22, 0x36, 0x00, 0x6E, 0x63, 0x00, 0x00, 0x01, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xBA, 0x00, 0x3C, 0xAA, 0x00, 0x24, 0xC6, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x67, 0xFF, 0x80, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8184, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xD0, 0x00, 0x25, 0x97, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x3D, 0xD7, 0x00, 0x25, 0x11, 0x00, 0x25, 0x11, 0x00, 0x25, 0xD7, 0x00, 0x3C, 0x00, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x24, 0x4C, 0x00, 0x24, 0x38, 0x00, 0x64, 0xEE, 0x00, 0x4F, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8185, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x08, 0x00, 0x25, 0x7F, 0x00, 0x3D, 0x09, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x09, 0x00, 0x25, 0x09, 0x00, 0x3D, 0x7F, 0x00, 0x25, 0x08, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x26, 0x41, 0x00, 0x64, 0x41, 0x00, 0x4C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8186, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x24, 0x00, 0x24, 0xC8, 0x00, 0x3C, 0x32, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x54, 0x00, 0x24, 0xD6, 0x00, 0x65, 0x93, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x1E, 0xF7, 0x80, 0x12, 0x80, 0x80, 0x12, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x22, 0x88, 0x80, 0x26, 0x8B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x818A, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x12, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x04, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0x24, 0x00, 0x22, 0x04, 0x00, 0x2E, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x818B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0xA9, 0x00, 0x15, 0x2A, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x04, 0x00, 0x10, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x818E, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x1E, 0x00, 0x24, 0xF1, 0x00, 0x24, 0x99, 0x80, 0x25, 0x88, 0x80, 0x3D, 0x20, 0x00, 0x24, 0x48, 0x00, 0x24, 0x90, 0x00, 0x24, 0x62, 0x00, 0x3C, 0x3F, 0x00, 0x25, 0xE1, 0x80, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x64, 0x46, 0x00, 0x4D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x818F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8190, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0xC0, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x24, 0x80, 0x32, 0x25, 0x00, 0x22, 0x36, 0x00, 0x6E, 0x63, 0x00, 0x00, 0x81, 0x80, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x16, 0x9A, 0x00, 0x11, 0x42, 0x00, 0x16, 0x3A, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8191, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x26, 0x1A, 0x00, 0x3C, 0xE0, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x24, 0x8A, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x48, 0x00, 0x54, 0x86, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8193, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3D, 0xFF, 0x00, 0x27, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x80, 0x00, 0x25, 0xFF, 0x00, 0x27, 0x25, 0x00, 0x24, 0x49, 0x00, 0x64, 0x91, 0x00, 0x4C, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x2A, 0x14, 0x80, 0x2A, 0x12, 0x80, 0x2B, 0xFF, 0x80, 0x3A, 0x10, 0x80, 0x2A, 0xE8, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x3A, 0xEE, 0x80, 0x2A, 0x04, 0x80, 0x2A, 0xED, 0x80, 0x2A, 0x1B, 0x80, 0x2A, 0x72, 0x80, 0x6A, 0x00, 0x80, 0x5B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8196, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0x1F, 0x00, 0x25, 0xB1, 0x00, 0x24, 0xAA, 0x00, 0x25, 0x0E, 0x00, 0x3D, 0x9B, 0x00, 0x24, 0xF1, 0x80, 0x24, 0x04, 0x00, 0x27, 0xBF, 0x80, 0x3C, 0x84, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x65, 0xC0, 0x00, 0x4F, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x24, 0xFF, 0x00, 0x24, 0xA9, 0x00, 0x3C, 0xA9, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x92, 0x00, 0x24, 0x93, 0x00, 0x65, 0x91, 0x80, 0x4C, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x819A, { 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBD, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0xFC, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x819B, { 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x3C, 0xD3, 0x00, 0x24, 0x52, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x3D, 0x7E, 0x80, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x65, 0xFF, 0x80, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x819C, { 0x00, 0x00, 0x00, 0x1C, 0x44, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x44, 0x00, 0x14, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x1C, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x28, 0x00, 0x14, 0x44, 0x00, 0x24, 0x82, 0x00, 0x2F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x819D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x38, 0x00, 0x12, 0x54, 0x00, 0x1E, 0x92, 0x00, 0x13, 0x29, 0x80, 0x12, 0x46, 0x00, 0x13, 0x91, 0x80, 0x1E, 0x92, 0x00, 0x12, 0x54, 0x00, 0x12, 0x38, 0x00, 0x12, 0x54, 0x00, 0x12, 0x92, 0x00, 0x23, 0x11, 0x00, 0x26, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x819E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x12, 0x00, 0x24, 0x7F, 0x00, 0x27, 0xC1, 0x80, 0x24, 0x02, 0x00, 0x27, 0xFF, 0x80, 0x64, 0x82, 0x00, 0x4C, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xEF, 0x00, 0x14, 0x63, 0x00, 0x14, 0xA5, 0x00, 0x15, 0x6B, 0x00, 0x1C, 0xA5, 0x00, 0x15, 0x21, 0x00, 0x14, 0x18, 0x00, 0x14, 0x24, 0x00, 0x1C, 0xCA, 0x00, 0x17, 0x35, 0x80, 0x14, 0xC8, 0x00, 0x14, 0x12, 0x00, 0x14, 0x64, 0x00, 0x25, 0x98, 0x00, 0x2C, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x92, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x42, 0x00, 0x24, 0xE4, 0x00, 0x64, 0x3C, 0x00, 0x4D, 0xE7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x12, 0x25, 0x00, 0x1E, 0x47, 0x00, 0x13, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x21, 0x00, 0x1E, 0x47, 0x00, 0x12, 0xF8, 0x80, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x10, 0x80, 0x3D, 0xD6, 0x80, 0x25, 0x10, 0x80, 0x24, 0xD6, 0x00, 0x24, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x01, 0x00, 0x64, 0x01, 0x00, 0x4C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3D, 0x24, 0x00, 0x24, 0xA8, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x70, 0x00, 0x3C, 0xA8, 0x00, 0x25, 0x24, 0x00, 0x25, 0x04, 0x00, 0x25, 0xDF, 0x00, 0x3D, 0x54, 0x00, 0x26, 0x54, 0x00, 0x25, 0x94, 0x00, 0x24, 0xBF, 0x00, 0x25, 0x04, 0x00, 0x56, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A8, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x15, 0xF2, 0x00, 0x14, 0x42, 0x00, 0x17, 0xFC, 0x00, 0x1C, 0x09, 0x00, 0x15, 0xF1, 0x00, 0x15, 0x12, 0x00, 0x15, 0xF2, 0x00, 0x1D, 0x14, 0x80, 0x14, 0x08, 0x80, 0x15, 0x31, 0x00, 0x14, 0xA2, 0x00, 0x14, 0xF4, 0x00, 0x27, 0x08, 0x00, 0x2C, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81A9, { 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x3C, 0x04, 0x80, 0x27, 0xFF, 0x00, 0x24, 0x04, 0x00, 0x24, 0xF4, 0x00, 0x3C, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x24, 0xF4, 0x00, 0x3C, 0x94, 0x00, 0x24, 0xF6, 0x00, 0x24, 0x92, 0x00, 0x24, 0xF2, 0x00, 0x24, 0x92, 0x80, 0x64, 0xF3, 0x80, 0x4D, 0x99, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81AA, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x24, 0x44, 0x00, 0x24, 0x28, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x11, 0x00, 0x26, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3C, 0x96, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81AE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x3C, 0x82, 0x00, 0x27, 0xEF, 0x80, 0x24, 0x82, 0x00, 0x24, 0xE2, 0x00, 0x3F, 0x8F, 0x80, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x44, 0x80, 0x64, 0xC4, 0x80, 0x4F, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81B0, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0xF8, 0x00, 0x25, 0x11, 0x00, 0x24, 0x92, 0x00, 0x27, 0xFF, 0x80, 0x3C, 0x54, 0x00, 0x24, 0xD6, 0x00, 0x25, 0x93, 0x00, 0x27, 0x11, 0x80, 0x3C, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x65, 0x11, 0x00, 0x4D, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81B2, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x48, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x90, 0x00, 0x25, 0x90, 0x00, 0x3E, 0xFE, 0x00, 0x24, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0xFE, 0x00, 0x3C, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0xAA, 0x00, 0x65, 0xAB, 0x00, 0x4F, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81B3, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x1E, 0x12, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x12, 0x2A, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81B4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x25, 0xD5, 0x00, 0x24, 0x55, 0x00, 0x3C, 0x55, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x55, 0x00, 0x24, 0x55, 0x00, 0x3C, 0x55, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x55, 0x00, 0x64, 0xD5, 0x80, 0x4D, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81B5, { 0x00, 0x00, 0x00, 0x1E, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0x54, 0x00, 0x1E, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0xAA, 0x00, 0x13, 0x11, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x26, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81B8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x7F, 0x80, 0x25, 0x90, 0x00, 0x24, 0xBF, 0x00, 0x25, 0x64, 0x00, 0x3D, 0x9F, 0x80, 0x24, 0x80, 0x00, 0x24, 0x1F, 0x00, 0x27, 0x91, 0x00, 0x3C, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x24, 0x93, 0x00, 0x65, 0x40, 0x00, 0x4D, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81BA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x11, 0x28, 0x00, 0x12, 0x7F, 0x00, 0x16, 0xC8, 0x00, 0x1B, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x13, 0x7F, 0x80, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81BB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xBD, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xBD, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x64, 0x00, 0x00, 0x4D, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81BD, { 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x84, 0x00, 0x15, 0xFF, 0x80, 0x1F, 0x28, 0x80, 0x15, 0xC7, 0x80, 0x15, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x1D, 0xFF, 0x80, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x2E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81BE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x22, 0x00, 0x12, 0xC1, 0x80, 0x12, 0x3E, 0x00, 0x1E, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0xAA, 0x80, 0x12, 0x9C, 0x80, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x26, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81BF, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x1E, 0xBF, 0x00, 0x12, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x12, 0x93, 0x00, 0x23, 0x1D, 0x00, 0x27, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81C0, { 0x00, 0x00, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x92, 0x80, 0x3F, 0x93, 0x80, 0x2A, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x12, 0x00, 0x3F, 0x8C, 0x00, 0x2A, 0x16, 0x00, 0x31, 0x69, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81C1, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3E, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x44, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x28, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x2A, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x2A, 0x00, 0x25, 0xFE, 0x00, 0x25, 0x28, 0x00, 0x25, 0x6C, 0x00, 0x25, 0x6A, 0x00, 0x56, 0xA9, 0x00, 0x08, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81C2, { 0x00, 0x00, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x3F, 0x80, 0x1F, 0x84, 0x00, 0x38, 0xFF, 0x80, 0x2F, 0x84, 0x00, 0x28, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81C3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x89, 0x00, 0x28, 0x8A, 0x00, 0x39, 0x9F, 0x80, 0x2B, 0x12, 0x00, 0x29, 0x52, 0x00, 0x28, 0xDF, 0x00, 0x38, 0x92, 0x00, 0x29, 0x32, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x52, 0x00, 0x28, 0xD2, 0x00, 0x49, 0x92, 0x00, 0x5B, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x80, 0x00, 0x25, 0xFF, 0x80, 0x27, 0x20, 0x80, 0x24, 0xFC, 0x80, 0x3C, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xFC, 0x80, 0x24, 0x28, 0x80, 0x24, 0x7D, 0x80, 0x65, 0xC5, 0x00, 0x4C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81C6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x24, 0x28, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x25, 0x48, 0x80, 0x3D, 0x42, 0x80, 0x26, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81C8, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x40, 0x00, 0x3C, 0xFF, 0x80, 0x25, 0x88, 0x80, 0x26, 0x9C, 0x80, 0x24, 0xB6, 0x80, 0x24, 0x81, 0x80, 0x64, 0xF9, 0x00, 0x4C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81C9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x24, 0x6C, 0x00, 0x24, 0xC6, 0x00, 0x27, 0x83, 0x80, 0x3C, 0x7C, 0x00, 0x24, 0x00, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x64, 0xE7, 0x00, 0x4D, 0xAD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81CA, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x7C, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x24, 0xD6, 0x00, 0x25, 0x93, 0x00, 0x67, 0x11, 0x80, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81CB, { 0x00, 0x00, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x92, 0x00, 0x3F, 0xA3, 0x80, 0x29, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x29, 0x11, 0x00, 0x7F, 0xCE, 0x00, 0x49, 0x31, 0x80, 0x10, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x16, 0x9A, 0x00, 0x11, 0x42, 0x00, 0x16, 0x3A, 0x00, 0x10, 0x02, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81CC, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3C, 0x84, 0x00, 0x27, 0xE4, 0x00, 0x24, 0x9F, 0x00, 0x25, 0xC4, 0x00, 0x3C, 0x04, 0x00, 0x25, 0xDF, 0x00, 0x25, 0x51, 0x00, 0x25, 0x51, 0x00, 0x3D, 0x4A, 0x00, 0x25, 0xCA, 0x00, 0x24, 0x04, 0x00, 0x25, 0x44, 0x00, 0x24, 0xEA, 0x00, 0x57, 0x0A, 0x00, 0x08, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81CD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x11, 0x00, 0x17, 0xD6, 0x00, 0x1D, 0x56, 0x00, 0x15, 0x55, 0x00, 0x16, 0xD6, 0x80, 0x14, 0x1C, 0x00, 0x15, 0x11, 0x00, 0x1D, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x01, 0x00, 0x15, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x2E, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x24, 0x63, 0x00, 0x24, 0xA5, 0x00, 0x24, 0x63, 0x00, 0x3C, 0xA5, 0x00, 0x24, 0x21, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x44, 0x00, 0x24, 0xC6, 0x00, 0x25, 0xAB, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x64, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81CF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x24, 0xFF, 0x00, 0x24, 0x52, 0x00, 0x3D, 0x94, 0x00, 0x24, 0x18, 0x00, 0x24, 0xFF, 0x00, 0x27, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x64, 0x42, 0x00, 0x4D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x3D, 0xDD, 0x00, 0x25, 0x11, 0x00, 0x24, 0xCC, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x65, 0x49, 0x00, 0x4D, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81D3, { 0x00, 0x00, 0x00, 0x38, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x45, 0x00, 0x28, 0x44, 0x80, 0x38, 0x02, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x02, 0x00, 0x2A, 0xFA, 0x00, 0x3A, 0xA2, 0x80, 0x2A, 0xFB, 0x80, 0x2A, 0x8B, 0x00, 0x2A, 0xFA, 0x00, 0x2A, 0xA6, 0x00, 0x2A, 0xFE, 0x80, 0x6C, 0x0B, 0x80, 0x58, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81D5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x24, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x24, 0x80, 0x3D, 0x24, 0x80, 0x25, 0xFF, 0x80, 0x25, 0x44, 0x00, 0x25, 0x77, 0x80, 0x3D, 0x44, 0x00, 0x25, 0x54, 0x80, 0x25, 0x33, 0x80, 0x25, 0x00, 0x00, 0x26, 0x55, 0x00, 0x64, 0xD5, 0x80, 0x4C, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81D7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x28, 0x80, 0x24, 0xFE, 0x80, 0x24, 0x28, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x49, 0x00, 0x64, 0xCC, 0x80, 0x4D, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x89, 0x00, 0x15, 0x12, 0x00, 0x14, 0x89, 0x00, 0x15, 0xFF, 0x00, 0x1D, 0x29, 0x00, 0x15, 0x49, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x1D, 0x11, 0x00, 0x15, 0xDD, 0x00, 0x15, 0x11, 0x00, 0x15, 0xDD, 0x00, 0x25, 0x11, 0x00, 0x25, 0xDD, 0x00, 0x2F, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81D9, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x7C, 0x00, 0x3C, 0x82, 0x00, 0x27, 0xBA, 0x80, 0x24, 0xAB, 0x00, 0x24, 0xAA, 0x00, 0x3C, 0xAA, 0x00, 0x25, 0xBA, 0x80, 0x26, 0x81, 0x80, 0x24, 0x00, 0x00, 0x24, 0xA9, 0x00, 0x65, 0xAD, 0x80, 0x4D, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81DA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x1E, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x10, 0x80, 0x3D, 0x7E, 0x00, 0x25, 0x10, 0x80, 0x25, 0x7F, 0x80, 0x25, 0x49, 0x00, 0x3D, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x00, 0x00, 0x26, 0xFF, 0x00, 0x64, 0xA9, 0x00, 0x4D, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81DB, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0x55, 0x00, 0x3D, 0x11, 0x00, 0x24, 0x54, 0x00, 0x24, 0x00, 0x00, 0x24, 0x44, 0x00, 0x3C, 0xFF, 0x00, 0x25, 0x88, 0x00, 0x26, 0xFE, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFE, 0x00, 0x64, 0x88, 0x00, 0x4C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81DD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xF7, 0x00, 0x25, 0x55, 0x00, 0x3D, 0xF5, 0x00, 0x25, 0x57, 0x00, 0x3D, 0xF5, 0x00, 0x24, 0xE5, 0x00, 0x4D, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81DE, { 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x3D, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x3D, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x24, 0x90, 0x00, 0x27, 0xFF, 0x80, 0x3D, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x10, 0x00, 0x65, 0x10, 0x00, 0x4D, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81DF, { 0x00, 0x00, 0x00, 0x38, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x28, 0x05, 0x00, 0x2A, 0xFF, 0x80, 0x3A, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2B, 0xD4, 0x80, 0x28, 0xF4, 0x80, 0x28, 0xD5, 0x00, 0x3B, 0xD5, 0x00, 0x2A, 0xF6, 0x00, 0x2A, 0xD2, 0x00, 0x2A, 0xD6, 0x80, 0x29, 0x79, 0x80, 0x2A, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81E0, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x68, 0x0D, 0x00, 0x11, 0xE2, 0x00, 0x24, 0x04, 0x80, 0x7D, 0xEF, 0x80, 0x11, 0x22, 0x00, 0x55, 0xEA, 0x80, 0x54, 0x0A, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x16, 0x9A, 0x00, 0x11, 0x42, 0x00, 0x16, 0x3A, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81E1, { 0x00, 0x00, 0x00, 0x0A, 0x12, 0x00, 0x3F, 0xA4, 0x00, 0x0A, 0x7F, 0x00, 0x3F, 0xA4, 0x00, 0x24, 0xBF, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA4, 0x00, 0x11, 0x3F, 0x00, 0x20, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x16, 0x9A, 0x00, 0x11, 0x42, 0x00, 0x16, 0x3A, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x48, 0x21, 0x00, 0x48, 0x21, 0x00, 0x48, 0x21, 0x00, 0x7F, 0x23, 0x00, 0x41, 0x32, 0x00, 0x41, 0x16, 0x00, 0x41, 0x14, 0x00, 0x7F, 0x1C, 0x00, 0x48, 0x08, 0x00, 0x48, 0x1C, 0x00, 0x48, 0x14, 0x00, 0x48, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81E5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x94, 0x00, 0x24, 0x14, 0x00, 0x24, 0x14, 0x00, 0x24, 0x22, 0x00, 0x3F, 0xE2, 0x00, 0x20, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81E7, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3D, 0xF1, 0x00, 0x25, 0x51, 0x00, 0x05, 0x52, 0x00, 0x05, 0xF2, 0x00, 0x3F, 0x34, 0x00, 0x15, 0x2C, 0x00, 0x15, 0xE8, 0x00, 0x25, 0x4C, 0x00, 0x25, 0xF4, 0x80, 0x29, 0x22, 0x80, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81E8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x80, 0x00, 0x25, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x21, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x3F, 0x00, 0x00, 0x24, 0xF7, 0x80, 0x24, 0x94, 0x80, 0x24, 0x94, 0x80, 0x24, 0x94, 0x80, 0x3F, 0xF7, 0x80, 0x20, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81EA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81EB, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x10, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x42, 0x40, 0x00, 0x42, 0x40, 0x00, 0x42, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x42, 0x40, 0x00, 0x42, 0x40, 0x00, 0x42, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x42, 0x40, 0x00, 0x42, 0x41, 0x00, 0x42, 0x63, 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81EC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81ED, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81F0, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x1F, 0x23, 0x80, 0x71, 0x3E, 0x00, 0x0B, 0x20, 0x80, 0x06, 0x30, 0x80, 0x7C, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81F1, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x24, 0x89, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x03, 0x02, 0x00, 0x06, 0x06, 0x00, 0x1C, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81F2, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x10, 0x7E, 0x00, 0x7E, 0xC4, 0x00, 0x42, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x42, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x42, 0xBE, 0x00, 0x7E, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x7E, 0xA2, 0x00, 0x10, 0xA6, 0x00, 0x38, 0xA0, 0x00, 0x34, 0xA0, 0x80, 0x53, 0x31, 0x80, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x3F, 0xC1, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81F4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x9F, 0x80, 0x13, 0xD1, 0x00, 0x3C, 0x61, 0x00, 0x04, 0x52, 0x00, 0x04, 0x92, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0x8C, 0x00, 0x04, 0x08, 0x00, 0x04, 0x14, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81F5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x10, 0x7F, 0x80, 0x34, 0x42, 0x00, 0x24, 0xC6, 0x00, 0x3E, 0x2C, 0x00, 0x62, 0x18, 0x00, 0x08, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81F6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x10, 0xFF, 0x80, 0x34, 0x20, 0x00, 0x24, 0x40, 0x00, 0x3E, 0x5F, 0x00, 0x62, 0xC2, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x44, 0x00, 0x60, 0x44, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0x10, 0x00, 0x32, 0x32, 0x00, 0x22, 0x22, 0x00, 0x3F, 0x3F, 0x00, 0x61, 0x61, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x88, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81F9, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x7F, 0x0B, 0x00, 0x10, 0x09, 0x00, 0x34, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x63, 0xFD, 0x00, 0x08, 0x95, 0x00, 0x08, 0x95, 0x00, 0x3E, 0x95, 0x00, 0x08, 0x97, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x39, 0xB6, 0x80, 0x61, 0x0D, 0x80, 0x03, 0x19, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81FA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x80, 0x02, 0x3E, 0x00, 0x1F, 0xC1, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81FB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x3F, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x0B, 0x1F, 0x80, 0x08, 0xF0, 0x00, 0x3E, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x3E, 0x92, 0x00, 0x03, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0x7F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81FD, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x08, 0x00, 0x30, 0x38, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x81FE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x03, 0x40, 0x00, 0x1C, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x81FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x9E, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1E, 0x9E, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8200, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x86, 0x00, 0x10, 0xC3, 0x00, 0x30, 0x41, 0x80, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8201, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8202, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x19, 0x86, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x0F, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8203, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x24, 0x90, 0x80, 0x66, 0xD9, 0x80, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8204, { 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x1C, 0x7E, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x74, 0x92, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x42, 0x00, 0x20, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8205, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x03, 0x02, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8206, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x84, 0x00, 0x18, 0x9E, 0x00, 0x13, 0xE4, 0x00, 0x11, 0x04, 0x00, 0x1E, 0x9C, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x84, 0x00, 0x1C, 0x9C, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x84, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x18, 0x06, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8207, { 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x0C, 0xEE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0E, 0xEE, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x22, 0x00, 0x0E, 0xAE, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8208, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1B, 0xFB, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x1E, 0x0F, 0x00, 0x12, 0xE9, 0x00, 0x12, 0xA9, 0x00, 0x1E, 0xAF, 0x00, 0x12, 0xE9, 0x00, 0x12, 0xA9, 0x00, 0x12, 0x09, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8209, { 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x1C, 0xEE, 0x00, 0x10, 0x82, 0x00, 0x1C, 0xEE, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x2E, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x77, 0xFB, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x820A, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x05, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x80, 0x00, 0x0E, 0x3E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0x3E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x820C, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x820D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x33, 0xF9, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x820E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x820F, { 0x00, 0x00, 0x00, 0x01, 0x81, 0x00, 0x07, 0x11, 0x00, 0x3C, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x71, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8210, { 0x00, 0x00, 0x00, 0x03, 0x01, 0x80, 0x0E, 0x07, 0x00, 0x78, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x46, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x80, 0x3E, 0x73, 0x80, 0x01, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8212, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x11, 0x01, 0x00, 0x20, 0xA2, 0x00, 0x00, 0x14, 0x00, 0x1F, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x09, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x98, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8213, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x78, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x80, 0x3E, 0xCA, 0x80, 0x22, 0x12, 0x80, 0x22, 0x64, 0x80, 0x22, 0x09, 0x80, 0x22, 0x31, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8214, { 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x48, 0x00, 0x08, 0xCC, 0x00, 0x08, 0x86, 0x00, 0x09, 0xA3, 0x80, 0x3E, 0x20, 0x00, 0x22, 0xA9, 0x00, 0x22, 0xAD, 0x80, 0x22, 0xA4, 0x80, 0x23, 0x24, 0x80, 0x3E, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8216, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x1C, 0x09, 0x00, 0x36, 0xFF, 0x80, 0x63, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8217, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x1C, 0x09, 0x00, 0x16, 0xFF, 0x80, 0x33, 0x08, 0x00, 0x60, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8218, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x33, 0x80, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8219, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0x03, 0x00, 0x3C, 0x3C, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x821A, { 0x00, 0x00, 0x00, 0x06, 0x7C, 0x00, 0x1C, 0x88, 0x00, 0x73, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x11, 0xC3, 0x80, 0x11, 0x3E, 0x00, 0x7F, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x3D, 0x00, 0x00, 0x25, 0x3E, 0x00, 0x25, 0x00, 0x00, 0x26, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x821B, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xA4, 0x00, 0x18, 0xA4, 0x00, 0x25, 0x24, 0x00, 0x03, 0x24, 0x00, 0x02, 0x24, 0x00, 0x02, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x821C, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x08, 0x42, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x07, 0xFF, 0x80, 0x0C, 0x64, 0x00, 0x32, 0xA4, 0x00, 0x01, 0x24, 0x00, 0x02, 0xFF, 0x80, 0x0C, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x821D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x08, 0x88, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x24, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x46, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x821E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x92, 0x00, 0x04, 0x92, 0x00, 0x1F, 0xFF, 0x80, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0xFF, 0x00, 0x29, 0x24, 0x00, 0x06, 0x24, 0x00, 0x04, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x821F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x42, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x02, 0x00, 0x1F, 0xFF, 0x80, 0x04, 0x02, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x10, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8221, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x11, 0xC8, 0x00, 0x17, 0x08, 0x00, 0x39, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x11, 0x08, 0x00, 0x21, 0x7F, 0x80, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8222, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x22, 0x88, 0x80, 0x7F, 0x88, 0x80, 0x22, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x22, 0x88, 0x80, 0x62, 0xFF, 0x80, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8223, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x12, 0x22, 0x00, 0x3F, 0x12, 0x00, 0x22, 0x92, 0x00, 0x32, 0x94, 0x00, 0x2A, 0x44, 0x00, 0x22, 0x44, 0x00, 0x7E, 0x48, 0x00, 0x22, 0x28, 0x00, 0x32, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x22, 0x44, 0x00, 0x22, 0x87, 0x00, 0x2B, 0x02, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8228, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7F, 0x00, 0x22, 0x51, 0x00, 0x7F, 0x51, 0x00, 0x22, 0x5B, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x4E, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xCE, 0x00, 0x22, 0x8A, 0x00, 0x63, 0x9B, 0x00, 0x46, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8229, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x24, 0x00, 0x2A, 0x66, 0x00, 0x2A, 0x42, 0x00, 0x22, 0xC3, 0x00, 0x7F, 0x91, 0x80, 0x22, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x30, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x26, 0x00, 0x22, 0x62, 0x00, 0x62, 0x4F, 0x00, 0x46, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x822A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x00, 0x00, 0x15, 0x00, 0x00, 0x15, 0x3E, 0x00, 0x13, 0xA2, 0x00, 0x3D, 0x22, 0x00, 0x11, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x80, 0x15, 0x42, 0x80, 0x21, 0x43, 0x80, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x822B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x10, 0x00, 0x15, 0x10, 0x00, 0x11, 0x10, 0x00, 0x17, 0x9F, 0x00, 0x39, 0x11, 0x00, 0x11, 0x11, 0x00, 0x15, 0x21, 0x00, 0x15, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x41, 0x00, 0x21, 0x42, 0x00, 0x23, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x822C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x80, 0x15, 0x22, 0x80, 0x15, 0x23, 0x80, 0x15, 0x40, 0x00, 0x13, 0x80, 0x00, 0x1D, 0x7F, 0x80, 0x11, 0x21, 0x00, 0x15, 0x12, 0x00, 0x15, 0x0C, 0x00, 0x15, 0x0C, 0x00, 0x21, 0x12, 0x00, 0x21, 0x21, 0x00, 0x27, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x822D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x12, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x22, 0x90, 0x00, 0x32, 0x90, 0x00, 0x2A, 0x92, 0x00, 0x22, 0xF6, 0x00, 0x7E, 0x98, 0x00, 0x22, 0x90, 0x00, 0x32, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x22, 0xB1, 0x00, 0x22, 0xD1, 0x00, 0x2A, 0x8F, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x822E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x21, 0x00, 0x22, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x22, 0x60, 0x00, 0x62, 0x40, 0x00, 0x46, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x822F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x12, 0x10, 0x00, 0x3F, 0x12, 0x00, 0x22, 0xFF, 0x00, 0x32, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x22, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x32, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x44, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8230, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x02, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x42, 0x00, 0x11, 0x4A, 0x00, 0x19, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x7F, 0x52, 0x00, 0x11, 0x52, 0x00, 0x19, 0x10, 0x00, 0x15, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x29, 0x00, 0x25, 0x49, 0x00, 0x42, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8231, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1E, 0x28, 0x00, 0x12, 0x28, 0x00, 0x1A, 0x44, 0x00, 0x16, 0x83, 0x00, 0x13, 0x02, 0x00, 0x7E, 0x7C, 0x00, 0x12, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x16, 0x54, 0x00, 0x12, 0x48, 0x00, 0x12, 0x40, 0x00, 0x12, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x44, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8232, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x36, 0x00, 0x2A, 0x63, 0x00, 0x2A, 0xDD, 0x80, 0x22, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x2A, 0x17, 0x00, 0x22, 0x10, 0x00, 0x62, 0x10, 0x00, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8233, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x22, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x22, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x22, 0x49, 0x00, 0x62, 0x49, 0x00, 0x46, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8234, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x2A, 0x50, 0x00, 0x2A, 0xD0, 0x00, 0x22, 0x90, 0x00, 0x7F, 0x1F, 0x00, 0x22, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x1F, 0x00, 0x2A, 0x10, 0x00, 0x22, 0x10, 0x00, 0x62, 0x10, 0x00, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8235, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x80, 0x80, 0x15, 0x00, 0x00, 0x11, 0x10, 0x00, 0x17, 0x90, 0x00, 0x39, 0x13, 0x80, 0x11, 0x1C, 0x00, 0x15, 0x10, 0x00, 0x15, 0x10, 0x00, 0x15, 0x10, 0x80, 0x11, 0x10, 0x80, 0x21, 0x1F, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8236, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x3F, 0x80, 0x15, 0x20, 0x80, 0x15, 0x20, 0x80, 0x15, 0x20, 0x80, 0x13, 0xE0, 0x80, 0x3D, 0x3F, 0x80, 0x11, 0x20, 0x80, 0x15, 0x20, 0x80, 0x15, 0x20, 0x80, 0x15, 0x20, 0x80, 0x21, 0x3F, 0x80, 0x21, 0x20, 0x80, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8237, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x10, 0x00, 0x15, 0x10, 0x00, 0x15, 0x20, 0x00, 0x11, 0xC4, 0x00, 0x17, 0x44, 0x00, 0x39, 0x28, 0x00, 0x15, 0x10, 0x00, 0x15, 0x12, 0x00, 0x15, 0x21, 0x00, 0x15, 0x4F, 0x80, 0x21, 0xF0, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8238, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x02, 0x00, 0x22, 0x02, 0x00, 0x2A, 0x7A, 0x00, 0x2A, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x7A, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0x02, 0x00, 0x22, 0x02, 0x00, 0x62, 0x02, 0x00, 0x46, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8239, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x22, 0x00, 0x15, 0x22, 0x00, 0x15, 0x22, 0x80, 0x11, 0x43, 0x80, 0x11, 0x80, 0x00, 0x17, 0x00, 0x00, 0x39, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x21, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x23, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x823A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x22, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x22, 0x88, 0x80, 0x7F, 0x88, 0x80, 0x22, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x22, 0x08, 0x00, 0x62, 0x08, 0x00, 0x46, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x823B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x12, 0x12, 0x00, 0x3F, 0x1F, 0x00, 0x22, 0x10, 0x00, 0x32, 0x12, 0x00, 0x2A, 0xFF, 0x00, 0x22, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x22, 0x82, 0x00, 0x32, 0xFE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x22, 0x80, 0x00, 0x22, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x823E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0x28, 0x00, 0x22, 0x28, 0x00, 0x32, 0x2A, 0x00, 0x2A, 0xFF, 0x00, 0x22, 0xAA, 0x00, 0x7E, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x32, 0xAA, 0x00, 0x2A, 0xAE, 0x00, 0x2A, 0xC2, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8240, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x08, 0x79, 0x00, 0x1F, 0x48, 0x80, 0x11, 0x44, 0x00, 0x15, 0x80, 0x00, 0x15, 0x00, 0x00, 0x11, 0x3F, 0x00, 0x17, 0x82, 0x00, 0x3D, 0x04, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x11, 0x08, 0x00, 0x21, 0x08, 0x00, 0x23, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8243, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x22, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x22, 0x08, 0x00, 0x62, 0x08, 0x00, 0x46, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8244, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x52, 0x00, 0x3E, 0xD3, 0x00, 0x22, 0x91, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x7F, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x22, 0x81, 0x00, 0x62, 0x81, 0x00, 0x46, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8245, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x14, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x41, 0x00, 0x15, 0x80, 0x80, 0x15, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x17, 0x88, 0x00, 0x39, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x49, 0x00, 0x11, 0x89, 0x00, 0x21, 0x08, 0x80, 0x23, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8246, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x48, 0x80, 0x2A, 0x49, 0x80, 0x2A, 0x4F, 0x00, 0x2A, 0x44, 0x00, 0x22, 0x46, 0x00, 0x62, 0x73, 0x00, 0x46, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8247, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xF1, 0x80, 0x1E, 0x1E, 0x00, 0x12, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x1A, 0x42, 0x00, 0x12, 0xF2, 0x00, 0x17, 0x1F, 0x80, 0x3A, 0x12, 0x00, 0x12, 0x92, 0x00, 0x1A, 0xA2, 0x00, 0x1A, 0xA2, 0x00, 0x12, 0x4F, 0x80, 0x12, 0x60, 0x00, 0x22, 0x9F, 0x80, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8249, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x12, 0xFF, 0x00, 0x3F, 0x82, 0x00, 0x22, 0x82, 0x00, 0x32, 0xFE, 0x00, 0x2A, 0x80, 0x00, 0x22, 0xFE, 0x00, 0x7E, 0x90, 0x00, 0x22, 0xFE, 0x00, 0x32, 0x90, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x90, 0x00, 0x22, 0x90, 0x00, 0x22, 0x91, 0x00, 0x2B, 0x11, 0x00, 0x44, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x824B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x22, 0x38, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x22, 0xA9, 0x00, 0x63, 0xFF, 0x80, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x824E, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x22, 0x08, 0x00, 0x62, 0xFF, 0x80, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x824F, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x08, 0x66, 0x00, 0x3E, 0x24, 0x00, 0x22, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x22, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x62, 0x41, 0x00, 0x46, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8251, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x08, 0x7C, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xD5, 0x00, 0x23, 0x55, 0x00, 0x62, 0x55, 0x00, 0x46, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8256, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x08, 0x24, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x7E, 0x00, 0x22, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0xFF, 0x00, 0x2B, 0x88, 0x00, 0x22, 0x08, 0x00, 0x62, 0x08, 0x00, 0x46, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8258, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x68, 0x00, 0x3E, 0xCB, 0x80, 0x22, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xEB, 0x80, 0x22, 0x88, 0x80, 0x7F, 0x88, 0x80, 0x22, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x22, 0x00, 0x22, 0x1C, 0x00, 0x62, 0x36, 0x00, 0x46, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8259, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x14, 0x00, 0x1E, 0x22, 0x00, 0x12, 0xC1, 0x80, 0x1A, 0x3E, 0x00, 0x1A, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x17, 0x41, 0x00, 0x3A, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x1A, 0x40, 0x00, 0x1A, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x22, 0xFF, 0x00, 0x27, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x825A, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x08, 0x24, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0xA4, 0x80, 0x22, 0xFF, 0x80, 0x7F, 0xA4, 0x80, 0x22, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x62, 0x41, 0x00, 0x46, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x825C, { 0x00, 0x00, 0x00, 0x08, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x7D, 0xFF, 0x80, 0x44, 0xAA, 0x00, 0x54, 0xAA, 0x00, 0x55, 0x3B, 0x80, 0x44, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x45, 0x10, 0x80, 0x55, 0x10, 0x80, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x44, 0x93, 0x00, 0x44, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x825D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xEE, 0x80, 0x22, 0x88, 0x80, 0x7F, 0x66, 0x00, 0x22, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0xFF, 0x80, 0x22, 0x01, 0x00, 0x62, 0x01, 0x00, 0x46, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x825F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x22, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x62, 0x08, 0x00, 0x46, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8260, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x08, 0xF4, 0x00, 0x3F, 0x18, 0x80, 0x22, 0xA5, 0x00, 0x2A, 0x42, 0x00, 0x2B, 0xBD, 0x80, 0x22, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x42, 0x00, 0x22, 0x66, 0x00, 0x62, 0x24, 0x00, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8262, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0xAA, 0x80, 0x22, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x5D, 0x00, 0x2A, 0x55, 0x00, 0x22, 0x5D, 0x00, 0x62, 0x41, 0x00, 0x46, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8263, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x10, 0x1E, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x80, 0x55, 0x10, 0x80, 0x55, 0xFF, 0x00, 0x45, 0x10, 0x80, 0x7F, 0x7F, 0x80, 0x45, 0x49, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x10, 0x00, 0x46, 0xFF, 0x00, 0x44, 0x11, 0x00, 0x4C, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8264, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x08, 0x28, 0x00, 0x1F, 0xFF, 0x80, 0x1A, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x16, 0x7A, 0x00, 0x3B, 0xC9, 0x00, 0x12, 0x48, 0x00, 0x1B, 0xFF, 0x80, 0x1A, 0x48, 0x00, 0x1A, 0x78, 0x00, 0x13, 0xC4, 0x80, 0x22, 0x42, 0x80, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8266, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x08, 0x7A, 0x00, 0x1F, 0x54, 0x00, 0x11, 0x57, 0x80, 0x15, 0x78, 0x00, 0x15, 0x48, 0x00, 0x11, 0x78, 0x00, 0x17, 0xD0, 0x00, 0x39, 0x57, 0x80, 0x11, 0x78, 0x00, 0x15, 0x40, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x55, 0x00, 0x11, 0x55, 0x00, 0x21, 0x55, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8267, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x44, 0x48, 0x00, 0x54, 0xFF, 0x80, 0x55, 0x88, 0x00, 0x44, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x44, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x54, 0xFF, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x44, 0x42, 0x00, 0x44, 0x3C, 0x00, 0x4D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8268, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xBD, 0x00, 0x22, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x22, 0x20, 0x00, 0x2A, 0x51, 0x80, 0x2A, 0xAB, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x9C, 0x00, 0x22, 0x2A, 0x00, 0x62, 0xC9, 0x80, 0x46, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x826A, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x08, 0x7C, 0x00, 0x3E, 0xC8, 0x00, 0x22, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x55, 0x00, 0x2A, 0x94, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x62, 0x41, 0x00, 0x46, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x826B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x0F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xBE, 0x00, 0x22, 0x88, 0x80, 0x7F, 0xBF, 0x80, 0x22, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x80, 0x00, 0x23, 0x7F, 0x00, 0x62, 0x55, 0x00, 0x46, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x826D, { 0x00, 0x00, 0x00, 0x08, 0xA5, 0x00, 0x11, 0x4A, 0x00, 0x7D, 0xEF, 0x80, 0x47, 0x5A, 0x00, 0x55, 0xEF, 0x80, 0x55, 0x4A, 0x00, 0x45, 0xEF, 0x80, 0x7F, 0x4A, 0x00, 0x45, 0xEF, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x42, 0x00, 0x54, 0x2C, 0x00, 0x44, 0x38, 0x00, 0x44, 0x6E, 0x00, 0x4D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x826E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x08, 0x83, 0x00, 0x08, 0x4C, 0x00, 0x08, 0x30, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xCC, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x826F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x08, 0x86, 0x00, 0x08, 0x58, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xD8, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8270, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x84, 0x00, 0x02, 0x84, 0x00, 0x22, 0xFC, 0x00, 0x14, 0x84, 0x00, 0x14, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0xA2, 0x00, 0x14, 0xA6, 0x00, 0x14, 0x98, 0x00, 0x22, 0x90, 0x00, 0x42, 0x88, 0x00, 0x00, 0xA7, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x3F, 0xE2, 0x00, 0x15, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xBE, 0x00, 0x3F, 0xA8, 0x00, 0x04, 0x29, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xA4, 0x00, 0x0A, 0x3A, 0x00, 0x11, 0x61, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8272, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8273, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7C, 0x00, 0x7F, 0x88, 0x00, 0x08, 0x92, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x80, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8274, { 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x14, 0x1F, 0x00, 0x7F, 0x91, 0x00, 0x14, 0xB3, 0x00, 0x14, 0xE2, 0x00, 0x7F, 0xBF, 0x80, 0x54, 0x24, 0x80, 0x54, 0x24, 0x80, 0x54, 0x24, 0x80, 0x7F, 0xBF, 0x80, 0x14, 0xA0, 0x00, 0x14, 0xA0, 0x00, 0x14, 0xA0, 0x00, 0x34, 0xA0, 0x80, 0x27, 0xB0, 0x80, 0x64, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8276, { 0x00, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x3F, 0x9F, 0x00, 0x2A, 0xA2, 0x00, 0x3F, 0xC4, 0x00, 0x2A, 0xBF, 0x80, 0x3F, 0xA4, 0x80, 0x00, 0x24, 0x80, 0x3F, 0xA4, 0x80, 0x00, 0x3F, 0x80, 0x1F, 0x20, 0x00, 0x11, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x0A, 0x20, 0x80, 0x0B, 0xA0, 0x80, 0x3C, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8277, { 0x00, 0x00, 0x00, 0x55, 0x48, 0x00, 0x7F, 0xCF, 0x00, 0x55, 0x59, 0x00, 0x7F, 0xF2, 0x00, 0x55, 0x5F, 0x80, 0x7F, 0xD4, 0x80, 0x55, 0x54, 0x80, 0x7F, 0xD4, 0x80, 0x00, 0x14, 0x80, 0x7F, 0xDF, 0x80, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x80, 0x11, 0x10, 0x80, 0x7F, 0xCF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8278, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8279, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x827A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x827B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x82, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x04, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x827D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x03, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x80, 0x0C, 0x09, 0x80, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x827E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x60, 0x00, 0x01, 0x90, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x827F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x06, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0C, 0x06, 0x00, 0x18, 0x04, 0x00, 0x30, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8280, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x02, 0x02, 0x00, 0x06, 0x02, 0x00, 0x0C, 0x06, 0x00, 0x18, 0x04, 0x00, 0x70, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8281, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8282, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x24, 0x00, 0x01, 0x14, 0x00, 0x01, 0x08, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8283, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0x90, 0x00, 0x04, 0xD0, 0x00, 0x04, 0x50, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8284, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x0D, 0x08, 0x00, 0x07, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0x08, 0x80, 0x0D, 0x89, 0x80, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8287, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8288, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x94, 0x00, 0x3C, 0x9E, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x04, 0x94, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8289, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x828A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x828B, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x828D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x10, 0x01, 0x00, 0x23, 0xF9, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x828E, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x828F, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8291, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x18, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8292, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8294, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x05, 0x04, 0x00, 0x04, 0x04, 0x00, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x18, 0x04, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8296, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x60, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8297, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x01, 0x90, 0x00, 0x06, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8298, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x23, 0x00, 0x1F, 0x2E, 0x00, 0x10, 0x38, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x17, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8299, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x829A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x87, 0x80, 0x01, 0xF8, 0x00, 0x3E, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x829B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x829C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x41, 0x00, 0x04, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x829D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x04, 0x60, 0x00, 0x0F, 0x80, 0x00, 0x12, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x829F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x80, 0x04, 0x08, 0x80, 0x08, 0x0F, 0x80, 0x30, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x30, 0x00, 0x38, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82A0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0x60, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82A1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x01, 0x00, 0x30, 0x83, 0x00, 0x60, 0x86, 0x00, 0x01, 0xC4, 0x00, 0x01, 0x40, 0x00, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82A3, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xA0, 0x00, 0x07, 0xB8, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82A4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x03, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0x90, 0x00, 0x1E, 0x10, 0x00, 0x74, 0x10, 0x00, 0x04, 0x10, 0x80, 0x04, 0x19, 0x80, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82A5, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x0C, 0x0C, 0x00, 0x32, 0x13, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82A6, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82A7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x18, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x00, 0x42, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82A8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x03, 0xFF, 0x00, 0x07, 0x06, 0x00, 0x05, 0x8C, 0x00, 0x0C, 0xD8, 0x00, 0x18, 0x70, 0x00, 0x30, 0xD8, 0x00, 0x63, 0x8E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82A9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x39, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82AA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x30, 0x00, 0x10, 0x10, 0x00, 0x10, 0x18, 0x80, 0x1F, 0x0D, 0x80, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82AB, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82AC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82AD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82AE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x03, 0xC8, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x11, 0x00, 0x12, 0x09, 0x00, 0x1C, 0x07, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82AF, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x40, 0x00, 0x02, 0x21, 0x00, 0x02, 0x01, 0x00, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x04, 0x18, 0x00, 0x06, 0x30, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x70, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82B1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x11, 0x00, 0x04, 0x12, 0x00, 0x0C, 0x14, 0x00, 0x0C, 0x18, 0x00, 0x14, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x1F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B2, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x74, 0x33, 0x80, 0x04, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x06, 0x06, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B3, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x63, 0x31, 0x00, 0x06, 0x21, 0x00, 0x0C, 0x61, 0x00, 0x38, 0xC3, 0x00, 0x01, 0x82, 0x00, 0x07, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B7, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B8, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0x1F, 0x00, 0x13, 0xE0, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82B9, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82BA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82BB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x89, 0x00, 0x24, 0x89, 0x00, 0x07, 0xF9, 0x00, 0x04, 0x09, 0x00, 0x02, 0x06, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x28, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x03, 0x0A, 0x00, 0x3C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82BC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82BD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x18, 0x00, 0x00, 0x28, 0x00, 0x00, 0x48, 0x00, 0x01, 0x88, 0x00, 0x06, 0x08, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82BE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82BF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x18, 0x4F, 0x80, 0x18, 0x48, 0x80, 0x28, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x09, 0x01, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82C1, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x28, 0x00, 0x04, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x09, 0x44, 0x00, 0x10, 0x44, 0x00, 0x20, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82C4, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x03, 0x20, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x98, 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82C5, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x81, 0x00, 0x30, 0x91, 0x00, 0x19, 0x91, 0x00, 0x0D, 0x11, 0x00, 0x07, 0x11, 0x00, 0x02, 0x11, 0x00, 0x07, 0x11, 0x00, 0x0D, 0x81, 0x00, 0x18, 0xC1, 0x00, 0x30, 0x41, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82C6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x16, 0x21, 0x00, 0x1C, 0x21, 0x00, 0x70, 0x21, 0x00, 0x10, 0x21, 0x00, 0x11, 0x21, 0x00, 0x13, 0x61, 0x00, 0x0E, 0x43, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82C7, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x90, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82C8, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x84, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x21, 0x04, 0x00, 0x22, 0x04, 0x00, 0x44, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82CA, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xF8, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x12, 0x50, 0x00, 0x12, 0x20, 0x00, 0x22, 0x02, 0x00, 0x42, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82CB, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x09, 0x48, 0x00, 0x02, 0x40, 0x00, 0x04, 0x42, 0x00, 0x18, 0x42, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82CC, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x60, 0x00, 0x05, 0x80, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x05, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x05, 0x10, 0x00, 0x06, 0x0E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82CD, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x0C, 0x18, 0x00, 0x37, 0xF7, 0x00, 0x44, 0x12, 0x00, 0x04, 0x50, 0x00, 0x04, 0x20, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82CE, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x03, 0x20, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82CF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x05, 0x10, 0x00, 0x01, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x11, 0x0C, 0x00, 0x12, 0x0B, 0x00, 0x22, 0x09, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x28, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D0, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x81, 0x00, 0x06, 0x81, 0x00, 0x1C, 0x83, 0x00, 0x70, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x0F, 0xE1, 0x00, 0x08, 0xA1, 0x00, 0x18, 0xA1, 0x00, 0x25, 0x21, 0x00, 0x02, 0x27, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x80, 0x10, 0x3F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D2, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D3, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x70, 0x00, 0x1C, 0x1C, 0x00, 0x77, 0xF7, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x1C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D4, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x04, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D7, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D8, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x10, 0x24, 0x00, 0x13, 0xF4, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82D9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x02, 0x30, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82DA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x20, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82DB, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82DC, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82DE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x17, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x04, 0x12, 0x00, 0x07, 0xF2, 0x00, 0x04, 0x02, 0x00, 0x04, 0x0C, 0x80, 0x04, 0x00, 0x80, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82DF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x10, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x07, 0xF1, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x30, 0x00, 0x10, 0x18, 0x80, 0x1F, 0x8D, 0x80, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x09, 0xD4, 0x00, 0x0E, 0x22, 0x00, 0x30, 0x41, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82E2, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E3, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xA0, 0x00, 0x07, 0xB8, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x32, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E6, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E7, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82E8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x0E, 0x00, 0x11, 0xF8, 0x00, 0x31, 0x00, 0x00, 0x21, 0x00, 0x80, 0x61, 0x81, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82EA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x11, 0xC2, 0x00, 0x13, 0x72, 0x00, 0x16, 0x1A, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82EB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82ED, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1A, 0x7F, 0x00, 0x32, 0x11, 0x00, 0x66, 0x11, 0x00, 0x34, 0x11, 0x00, 0x0D, 0x11, 0x00, 0x19, 0x31, 0x00, 0x13, 0x23, 0x00, 0x3D, 0x62, 0x00, 0x60, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82EF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8C, 0x00, 0x30, 0x86, 0x00, 0x67, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82F1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82F3, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x0E, 0x18, 0x00, 0x3B, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x79, 0xC7, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82F4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82F6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8C, 0x00, 0x30, 0x86, 0x00, 0x60, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82F7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82F9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82FA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x42, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82FB, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0D, 0xFF, 0x80, 0x18, 0x04, 0x00, 0x38, 0x84, 0x00, 0x68, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x82FD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x10, 0xF2, 0x00, 0x13, 0x8A, 0x00, 0x10, 0x05, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x82FE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x82, 0x00, 0x00, 0x42, 0x00, 0x01, 0x24, 0x00, 0x01, 0x08, 0x00, 0x09, 0x11, 0x00, 0x09, 0x21, 0x00, 0x11, 0x40, 0x80, 0x11, 0x82, 0x80, 0x03, 0x02, 0x00, 0x0D, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8300, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x06, 0x21, 0x00, 0x0C, 0x23, 0x00, 0x38, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8301, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8302, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x50, 0x00, 0x00, 0x48, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0x24, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x10, 0x30, 0x00, 0x10, 0x48, 0x80, 0x21, 0x84, 0x80, 0x26, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8303, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x41, 0x00, 0x20, 0x41, 0x00, 0x14, 0x41, 0x00, 0x04, 0x4F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x80, 0x10, 0x40, 0x80, 0x10, 0x7F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8304, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x13, 0x9F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8305, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x40, 0x00, 0x02, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x30, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8306, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x3E, 0x3F, 0x00, 0x20, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x61, 0x21, 0x00, 0x03, 0x27, 0x00, 0x0E, 0x20, 0x00, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8307, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0x08, 0x00, 0x02, 0x08, 0x00, 0x07, 0x18, 0x00, 0x0D, 0xB0, 0x00, 0x18, 0xE0, 0x00, 0x30, 0xF0, 0x00, 0x63, 0x9C, 0x00, 0x0E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8308, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x24, 0x23, 0x80, 0x27, 0xAE, 0x00, 0x24, 0x38, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x27, 0xA0, 0x80, 0x3C, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8309, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x830A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x830B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x30, 0x00, 0x1F, 0x10, 0x00, 0x70, 0x18, 0x80, 0x00, 0x0D, 0x80, 0x3F, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x830C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x20, 0x00, 0x28, 0x20, 0x00, 0x48, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x830E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x830F, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x01, 0x10, 0x00, 0x01, 0x0A, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x01, 0x44, 0x00, 0x02, 0x4C, 0x00, 0x02, 0x50, 0x00, 0x04, 0x60, 0x00, 0x04, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x13, 0x3F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8311, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x05, 0x10, 0x00, 0x04, 0xB0, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xE4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8314, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x82, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8315, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x4F, 0xF2, 0x00, 0x02, 0x10, 0x00, 0x02, 0x90, 0x00, 0x1F, 0xD0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x12, 0x00, 0x02, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8316, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x0C, 0x18, 0x00, 0x3B, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8317, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x88, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x02, 0x04, 0x00, 0x05, 0x08, 0x00, 0x18, 0x90, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0x02, 0x00, 0x3A, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8318, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x01, 0x84, 0x00, 0x03, 0x0C, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x18, 0x98, 0x80, 0x31, 0xB1, 0x80, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x831A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x03, 0x04, 0x00, 0x1C, 0x7E, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0x54, 0x00, 0x1C, 0x48, 0x00, 0x10, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x831B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x23, 0x00, 0x08, 0x36, 0x00, 0x08, 0x18, 0x00, 0x0F, 0x8E, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x831C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x26, 0x21, 0x00, 0x3C, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x831D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x7E, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x831E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x831F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8321, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8322, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x08, 0x89, 0x00, 0x19, 0x89, 0x00, 0x35, 0x09, 0x00, 0x03, 0x01, 0x00, 0x06, 0x01, 0x00, 0x0C, 0x01, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8323, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x1E, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8327, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x90, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8328, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x28, 0x00, 0x00, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x51, 0x00, 0x00, 0x92, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x07, 0x2C, 0x00, 0x38, 0x44, 0x00, 0x01, 0x82, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x832B, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x12, 0x08, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x14, 0x80, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x832C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x69, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x832D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x07, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x1E, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x832E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x18, 0x8C, 0x00, 0x30, 0x86, 0x00, 0x60, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x832F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x00, 0x04, 0x24, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x28, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8330, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x80, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x78, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8331, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8332, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x30, 0x00, 0x31, 0x62, 0x00, 0x1B, 0x36, 0x00, 0x0E, 0x1C, 0x00, 0x04, 0x08, 0x00, 0x0D, 0x1A, 0x00, 0x19, 0x32, 0x00, 0x17, 0xAF, 0x00, 0x7C, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8333, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x30, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x60, 0x10, 0x00, 0x30, 0x10, 0x00, 0x10, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8334, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8335, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFD, 0x00, 0x10, 0x41, 0x00, 0x10, 0xA1, 0x00, 0x11, 0x11, 0x00, 0x16, 0x0D, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8336, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8337, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0x23, 0x00, 0x0C, 0x21, 0x00, 0x19, 0xFF, 0x80, 0x38, 0x12, 0x00, 0x68, 0x16, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x80, 0x08, 0x76, 0x80, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8338, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8339, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1A, 0x11, 0x00, 0x26, 0x11, 0x00, 0x05, 0x1F, 0x00, 0x08, 0x91, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x833A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x04, 0x7C, 0x00, 0x1F, 0xC6, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x833C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x833D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x19, 0x10, 0x80, 0x39, 0x10, 0x80, 0x69, 0x10, 0x80, 0x09, 0x10, 0x80, 0x09, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8340, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x08, 0x01, 0x00, 0x13, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x03, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x03, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8342, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x04, 0x08, 0x00, 0x1B, 0xF6, 0x00, 0x60, 0x01, 0x80, 0x1F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8343, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x05, 0x88, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x77, 0xFB, 0x80, 0x00, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8344, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x80, 0x00, 0x1B, 0x20, 0x00, 0x0C, 0x64, 0x00, 0x06, 0xCC, 0x00, 0x01, 0x98, 0x00, 0x07, 0x70, 0x00, 0x3C, 0xD8, 0x00, 0x03, 0x8E, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8345, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8346, { 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x04, 0xA1, 0x00, 0x3F, 0xF1, 0x00, 0x04, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xE9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xA9, 0x00, 0x3F, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x08, 0x81, 0x00, 0x10, 0x85, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8347, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x18, 0x04, 0x00, 0x28, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8349, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x834A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0xE9, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x81, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x834D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x42, 0x00, 0x22, 0xA2, 0x00, 0x22, 0x36, 0x00, 0x2E, 0x1C, 0x00, 0x3A, 0x08, 0x00, 0x62, 0x1C, 0x00, 0x02, 0x36, 0x00, 0x02, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x834E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x06, 0x08, 0x00, 0x04, 0xFC, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x834F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x06, 0x00, 0x04, 0x18, 0x00, 0x08, 0xF0, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8350, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0D, 0xFE, 0x00, 0x18, 0x0C, 0x00, 0x68, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8351, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x80, 0x00, 0xA3, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8352, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x80, 0x04, 0x44, 0x80, 0x08, 0x47, 0x80, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8353, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x3F, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8354, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x84, 0x00, 0x03, 0x0C, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x88, 0x80, 0x18, 0x98, 0x80, 0x31, 0x91, 0x80, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8355, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x31, 0x00, 0x31, 0x21, 0x00, 0x63, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8356, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x00, 0x98, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x0E, 0x00, 0x73, 0xF8, 0x00, 0x02, 0x00, 0x80, 0x03, 0x01, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8357, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x44, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x14, 0x2C, 0x00, 0x16, 0x38, 0x00, 0x13, 0x10, 0x00, 0x31, 0x38, 0x80, 0x20, 0x6D, 0x80, 0x61, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8358, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x34, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x64, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x835A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x07, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x835B, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x90, 0x00, 0x00, 0xA2, 0x00, 0x01, 0xC2, 0x00, 0x1E, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x02, 0x41, 0x00, 0x04, 0x41, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x835C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x10, 0x40, 0x00, 0x10, 0x4C, 0x00, 0x1F, 0x70, 0x00, 0x10, 0x40, 0x00, 0x13, 0x42, 0x00, 0x1C, 0xBE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x835E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x1A, 0x27, 0x00, 0x62, 0x22, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x835F, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x18, 0x27, 0x00, 0x67, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8360, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x03, 0x60, 0x00, 0x00, 0x80, 0x00, 0x01, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1A, 0x27, 0x00, 0x62, 0x22, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8361, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x23, 0xF8, 0x00, 0x18, 0x20, 0x00, 0x08, 0x40, 0x00, 0x40, 0x82, 0x00, 0x23, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x71, 0x22, 0x00, 0x11, 0x22, 0x00, 0x12, 0x42, 0x00, 0x14, 0x94, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8363, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x82, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xC0, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8E, 0x00, 0x30, 0x84, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8364, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x02, 0x00, 0x41, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x80, 0x00, 0x04, 0x90, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8365, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x8A, 0x00, 0x5E, 0x90, 0x00, 0x02, 0xE0, 0x00, 0x04, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x08, 0x90, 0x00, 0x30, 0x8E, 0x00, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8366, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x44, 0x92, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x10, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8367, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x8A, 0x00, 0x04, 0x98, 0x00, 0x04, 0xA0, 0x00, 0x08, 0x80, 0x00, 0x01, 0x40, 0x00, 0x01, 0x20, 0x00, 0x02, 0x18, 0x00, 0x0C, 0x07, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8368, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8369, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x20, 0x00, 0x09, 0x10, 0x00, 0x08, 0xC8, 0x00, 0x10, 0x47, 0x00, 0x10, 0x02, 0x00, 0x21, 0x80, 0x00, 0x40, 0x60, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x836A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x50, 0x00, 0x07, 0x54, 0x00, 0x1C, 0x52, 0x00, 0x64, 0x92, 0x00, 0x04, 0x91, 0x00, 0x05, 0x11, 0x00, 0x04, 0x10, 0x00, 0x14, 0x50, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x836B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x24, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x32, 0x42, 0x00, 0x2C, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x0A, 0x00, 0x22, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x836C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x06, 0x48, 0x00, 0x01, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x02, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0x30, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x836D, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x13, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x10, 0x10, 0x00, 0x07, 0x12, 0x00, 0x39, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x836E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3E, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x08, 0x44, 0x00, 0x13, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x00, 0x04, 0x00, 0x07, 0x04, 0x00, 0x38, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x836F, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x22, 0x00, 0x11, 0x3F, 0x00, 0x3E, 0x42, 0x00, 0x04, 0x82, 0x00, 0x08, 0x22, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x12, 0x00, 0x07, 0x02, 0x00, 0x38, 0x02, 0x00, 0x10, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8370, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x18, 0x7F, 0x00, 0x1C, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x48, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8373, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8375, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x0D, 0x86, 0x00, 0x07, 0x04, 0x00, 0x0D, 0x9C, 0x00, 0x38, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x12, 0x63, 0x00, 0x12, 0x25, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8377, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x18, 0xF2, 0x00, 0x28, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8378, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xF9, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x837B, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x0A, 0x51, 0x00, 0x12, 0x52, 0x00, 0x26, 0x90, 0x00, 0x06, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x12, 0x28, 0x00, 0x22, 0x44, 0x00, 0x02, 0x82, 0x00, 0x0D, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x837C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x70, 0x00, 0x1C, 0x1C, 0x00, 0x77, 0xF7, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x837D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC8, 0x00, 0x09, 0x0C, 0x00, 0x10, 0x84, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x18, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0x9C, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x837F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x44, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x1F, 0xAC, 0x00, 0x11, 0x38, 0x00, 0x11, 0x10, 0x00, 0x33, 0x38, 0x80, 0x26, 0x6D, 0x80, 0x61, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8380, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x12, 0x33, 0x00, 0x12, 0x16, 0x00, 0x32, 0x18, 0x00, 0x23, 0xCE, 0x00, 0x6E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8382, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x81, 0x00, 0x20, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x08, 0x11, 0x00, 0x0F, 0x91, 0x00, 0x08, 0x91, 0x00, 0x18, 0x91, 0x00, 0x10, 0x81, 0x00, 0x31, 0x81, 0x00, 0x67, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8384, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x78, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8385, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x31, 0x02, 0x00, 0x51, 0x86, 0x00, 0x10, 0x84, 0x00, 0x10, 0x8C, 0x00, 0x10, 0x08, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8386, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x84, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8387, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x31, 0x00, 0x22, 0x21, 0x00, 0x23, 0x21, 0x00, 0x3E, 0x63, 0x00, 0x60, 0xC2, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8389, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0xC1, 0x00, 0x1E, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x06, 0x09, 0x00, 0x0B, 0x09, 0x00, 0x0A, 0x89, 0x00, 0x12, 0x09, 0x00, 0x22, 0x01, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x838A, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x838D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x84, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x18, 0x86, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0xD8, 0x00, 0x02, 0xE0, 0x00, 0x06, 0xB8, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x838E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x10, 0x10, 0x00, 0x08, 0x12, 0x00, 0x00, 0x91, 0x00, 0x21, 0x10, 0x80, 0x12, 0x10, 0x00, 0x00, 0x10, 0x80, 0x08, 0x11, 0x00, 0x08, 0x72, 0x00, 0x10, 0x04, 0x00, 0x10, 0x18, 0x00, 0x20, 0x60, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8392, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8393, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8394, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x26, 0x11, 0x00, 0x3C, 0x1F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8395, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB8, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8396, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x08, 0x88, 0x00, 0x11, 0x10, 0x00, 0x08, 0x88, 0x00, 0x04, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8398, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8399, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x1C, 0x01, 0x00, 0x74, 0x01, 0x00, 0x04, 0x01, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x839A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x07, 0x00, 0x09, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x3C, 0x90, 0x00, 0x04, 0x9E, 0x00, 0x4C, 0x90, 0x00, 0x68, 0x90, 0x00, 0x38, 0x90, 0x00, 0x10, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x839B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x02, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x2C, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x839C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x7F, 0x80, 0x18, 0x42, 0x00, 0x3A, 0xA2, 0x00, 0x6A, 0x36, 0x00, 0x0A, 0x1C, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x839D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x1C, 0x9C, 0x00, 0x16, 0xB6, 0x00, 0x32, 0xA3, 0x00, 0x60, 0x81, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x839E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x839F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x70, 0x00, 0x0E, 0x1C, 0x00, 0x79, 0xE7, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83A0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x78, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0C, 0x8C, 0x00, 0x77, 0xF3, 0x80, 0x01, 0x10, 0x00, 0x03, 0x1E, 0x00, 0x06, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x38, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83A2, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x90, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83A6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x84, 0x00, 0x18, 0x86, 0x00, 0x30, 0x83, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83A7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x19, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83A8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x23, 0x00, 0x08, 0x36, 0x00, 0x08, 0x18, 0x00, 0x0F, 0x8E, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83A9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC2, 0x00, 0x08, 0x41, 0x00, 0x10, 0x20, 0x80, 0x27, 0xF8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83AA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x01, 0xD4, 0x00, 0x1E, 0x12, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0xD1, 0x00, 0x07, 0x12, 0x00, 0x3A, 0x0C, 0x00, 0x02, 0x0C, 0x80, 0x02, 0x32, 0x80, 0x06, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83AB, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83AC, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x03, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83AD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x23, 0x21, 0x00, 0x3E, 0x27, 0x00, 0x20, 0x20, 0x00, 0x33, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B0, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x82, 0x00, 0x09, 0x24, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x0E, 0x50, 0x00, 0x70, 0x88, 0x00, 0x21, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B1, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x18, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B2, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x20, 0x00, 0x08, 0x48, 0x00, 0x0B, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x38, 0xA8, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x14, 0x23, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B3, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x0A, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x48, 0x00, 0x22, 0x28, 0x00, 0x22, 0x28, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B4, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x64, 0x00, 0x16, 0x24, 0x00, 0x10, 0x14, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B5, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x11, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x03, 0x2C, 0x00, 0x06, 0x26, 0x00, 0x0C, 0x20, 0x80, 0x18, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B6, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04, 0x18, 0x00, 0x1F, 0xF7, 0x00, 0x60, 0x02, 0x00, 0x01, 0x08, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x00, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B7, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x12, 0x14, 0x00, 0x0C, 0x12, 0x00, 0x08, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x14, 0x28, 0x00, 0x64, 0x28, 0x00, 0x04, 0x44, 0x00, 0x14, 0x83, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B8, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x10, 0x28, 0x00, 0x0A, 0x24, 0x00, 0x05, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x32, 0x30, 0x00, 0x06, 0x50, 0x00, 0x0A, 0x50, 0x00, 0x12, 0x50, 0x00, 0x62, 0x91, 0x00, 0x02, 0x91, 0x00, 0x15, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83B9, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x5F, 0xFA, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83BA, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x47, 0xF2, 0x00, 0x04, 0x10, 0x00, 0x05, 0x90, 0x00, 0x04, 0x50, 0x00, 0x04, 0x24, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83BC, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x24, 0x00, 0x05, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x3E, 0x24, 0x00, 0x00, 0x20, 0x00, 0x07, 0x21, 0x00, 0x38, 0x21, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83BD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x3A, 0x0B, 0x80, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83BE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x77, 0xFB, 0x80, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83BF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x7F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x2E, 0xC9, 0x00, 0x1D, 0x01, 0x00, 0x34, 0xC1, 0x00, 0x64, 0x01, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83C0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x28, 0x01, 0x00, 0x0F, 0xBE, 0x00, 0x18, 0xA2, 0x00, 0x31, 0xA2, 0x00, 0x6D, 0x26, 0x00, 0x03, 0x20, 0x00, 0x06, 0x20, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83C1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83C5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83C7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x36, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x7C, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x31, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83C9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x43, 0x00, 0x08, 0xEC, 0x00, 0x05, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83CA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x14, 0x91, 0x00, 0x22, 0xA1, 0x00, 0x0F, 0xF9, 0x00, 0x01, 0xC1, 0x00, 0x02, 0xA1, 0x00, 0x04, 0x91, 0x00, 0x08, 0x89, 0x00, 0x10, 0x82, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83CC, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x79, 0x00, 0x13, 0xC1, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFD, 0x00, 0x10, 0xE1, 0x00, 0x11, 0x51, 0x00, 0x16, 0x4D, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83CE, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x08, 0x26, 0x00, 0x0F, 0xBC, 0x00, 0x08, 0x20, 0x80, 0x0F, 0xA1, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83CF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x30, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x61, 0xE2, 0x00, 0x31, 0x22, 0x00, 0x11, 0x22, 0x00, 0x09, 0x22, 0x00, 0x19, 0xE2, 0x00, 0x10, 0x02, 0x00, 0x30, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83D0, { 0x00, 0x00, 0x00, 0x11, 0x22, 0x00, 0x19, 0x26, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83D1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x42, 0x00, 0x18, 0xC6, 0x00, 0x31, 0x8C, 0x00, 0x18, 0xC6, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83D3, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83D4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x43, 0x00, 0x3A, 0x40, 0x00, 0x2E, 0x7F, 0x00, 0x22, 0x51, 0x00, 0x3A, 0x5B, 0x00, 0x2E, 0x4E, 0x00, 0x22, 0x44, 0x00, 0x62, 0x4E, 0x00, 0x46, 0x5B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83D6, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83D8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x66, 0x00, 0x08, 0xC3, 0x00, 0x19, 0x91, 0x80, 0x1C, 0x10, 0x00, 0x2A, 0x30, 0x00, 0x2A, 0x22, 0x00, 0x48, 0x62, 0x00, 0x08, 0x4F, 0x00, 0x08, 0xF9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83DC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x01, 0x00, 0x08, 0x42, 0x00, 0x04, 0x24, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83DD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x22, 0x00, 0x10, 0x21, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x20, 0x00, 0x10, 0x62, 0x00, 0x10, 0x42, 0x00, 0x1C, 0xE6, 0x00, 0x70, 0xAC, 0x00, 0x11, 0x98, 0x00, 0x13, 0x3C, 0x00, 0x10, 0x66, 0x00, 0x31, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83DF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x28, 0x00, 0x02, 0x2C, 0x00, 0x06, 0x24, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83E0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x08, 0x00, 0x30, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x09, 0x08, 0x80, 0x61, 0x08, 0x00, 0x31, 0xFF, 0x00, 0x11, 0x41, 0x00, 0x09, 0x63, 0x00, 0x1B, 0x36, 0x00, 0x12, 0x1C, 0x00, 0x36, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83E1, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x20, 0x22, 0x00, 0x28, 0xCA, 0x00, 0x24, 0x92, 0x00, 0x22, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x24, 0x9A, 0x00, 0x29, 0x8A, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83E5, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x70, 0x00, 0x7F, 0x40, 0x00, 0x04, 0x42, 0x00, 0x0E, 0x7F, 0x00, 0x0D, 0x48, 0x00, 0x14, 0x48, 0x00, 0x24, 0x48, 0x00, 0x44, 0x88, 0x00, 0x04, 0x88, 0x00, 0x05, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83E8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x30, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83E9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83EA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83EB, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83EF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83F0, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x0F, 0x00, 0x3E, 0xF4, 0x00, 0x04, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0xA4, 0x00, 0x0C, 0xA4, 0x00, 0x18, 0xA2, 0x00, 0x29, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x3D, 0x00, 0x0A, 0xC5, 0x00, 0x1A, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83F1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x11, 0x00, 0x02, 0x1F, 0x00, 0x0C, 0x80, 0x00, 0x31, 0xFC, 0x00, 0x03, 0x08, 0x00, 0x04, 0x90, 0x00, 0x18, 0x60, 0x00, 0x03, 0x98, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83F2, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x01, 0x10, 0x00, 0x03, 0x90, 0x00, 0x3D, 0x1F, 0x80, 0x02, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83F4, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x58, 0x00, 0x06, 0x46, 0x00, 0x3F, 0xFD, 0x80, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x80, 0x00, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83F6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x06, 0x18, 0x00, 0x18, 0x86, 0x00, 0x67, 0xF9, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83F7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83F8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x7F, 0xB6, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x0F, 0x18, 0x00, 0x09, 0x0C, 0x00, 0x09, 0x06, 0x00, 0x19, 0x00, 0x00, 0x13, 0x06, 0x00, 0x32, 0x1C, 0x00, 0x66, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83F9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x20, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83FB, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x0D, 0x1C, 0x00, 0x14, 0xAA, 0x00, 0x34, 0x6B, 0x00, 0x64, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x83FC, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x86, 0x00, 0x18, 0x8C, 0x00, 0x11, 0xC0, 0x00, 0x07, 0x78, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x80, 0x00, 0x08, 0x86, 0x00, 0x18, 0x8C, 0x00, 0x31, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x83FD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x04, 0x3F, 0x00, 0x07, 0x91, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x04, 0x14, 0x00, 0x15, 0x0C, 0x00, 0x14, 0x88, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x92, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8401, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8403, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x05, 0x14, 0x00, 0x08, 0xA2, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8404, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x12, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x08, 0x81, 0x00, 0x1F, 0xFD, 0x00, 0x04, 0x91, 0x00, 0x04, 0x91, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x12, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8406, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8407, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x08, 0x66, 0x00, 0x08, 0x38, 0x00, 0x0F, 0x8E, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x840A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x20, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x840B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x840C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x00, 0x41, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x840D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x11, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x52, 0x00, 0x10, 0x91, 0x00, 0x09, 0x10, 0x80, 0x00, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x840E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0x30, 0x00, 0x01, 0xF8, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x840F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x06, 0x02, 0x00, 0x0C, 0x06, 0x00, 0x19, 0x9C, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8411, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8413, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8415, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x04, 0x00, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8418, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF8, 0x00, 0x18, 0x07, 0x00, 0x6F, 0xFA, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x08, 0x8C, 0x00, 0x12, 0x84, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8419, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x18, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x2A, 0x38, 0x00, 0x2A, 0x28, 0x00, 0x48, 0x68, 0x80, 0x08, 0xC9, 0x80, 0x09, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x841C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x1F, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x841D, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x0C, 0x04, 0x00, 0x32, 0x08, 0x00, 0x01, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8420, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x3A, 0x00, 0x17, 0x2E, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x3A, 0x00, 0x17, 0x2E, 0x00, 0x11, 0x22, 0x00, 0x31, 0x22, 0x00, 0x21, 0x62, 0x00, 0x63, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8422, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x19, 0xFF, 0x00, 0x0B, 0x01, 0x00, 0x60, 0xF9, 0x00, 0x30, 0x09, 0x00, 0x10, 0x0B, 0x00, 0x04, 0xFA, 0x00, 0x0C, 0x86, 0x00, 0x18, 0x80, 0x80, 0x30, 0xC1, 0x80, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8424, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x40, 0x8A, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8425, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x47, 0xF2, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8426, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x42, 0x12, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x90, 0x00, 0x04, 0x8C, 0x00, 0x18, 0x84, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8427, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x90, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x12, 0x94, 0x00, 0x14, 0x94, 0x00, 0x20, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8428, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFE, 0x00, 0x24, 0x44, 0x00, 0x28, 0x28, 0x00, 0x24, 0xFF, 0x00, 0x22, 0x80, 0x00, 0x22, 0x80, 0x00, 0x32, 0x80, 0x00, 0x2C, 0x80, 0x00, 0x20, 0x80, 0x00, 0x21, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8429, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x04, 0x00, 0x03, 0x04, 0x00, 0x1C, 0x04, 0x80, 0x04, 0x05, 0x00, 0x04, 0x16, 0x00, 0x3F, 0x94, 0x00, 0x0C, 0x24, 0x00, 0x0E, 0x04, 0x00, 0x15, 0x0A, 0x00, 0x14, 0x0A, 0x00, 0x24, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x842A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x82, 0x00, 0x3E, 0x32, 0x00, 0x04, 0x1A, 0x00, 0x7F, 0x82, 0x00, 0x14, 0x62, 0x00, 0x16, 0x32, 0x00, 0x35, 0x03, 0x80, 0x25, 0x1E, 0x00, 0x64, 0x72, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x842C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x48, 0x80, 0x20, 0x7C, 0x80, 0x27, 0x82, 0x80, 0x20, 0x00, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x842F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x60, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8431, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8435, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8438, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x03, 0x40, 0x00, 0x1C, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8439, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x0E, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x34, 0x92, 0x00, 0x27, 0xFE, 0x00, 0x64, 0x92, 0x00, 0x04, 0x96, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x843C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x843D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x42, 0x00, 0x10, 0xA4, 0x00, 0x09, 0x18, 0x00, 0x0A, 0x1C, 0x00, 0x08, 0x23, 0x80, 0x10, 0xFE, 0x00, 0x13, 0x42, 0x00, 0x10, 0x42, 0x00, 0x20, 0x7E, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8445, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x36, 0x3E, 0x00, 0x63, 0x22, 0x00, 0x00, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x36, 0x22, 0x00, 0x63, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8446, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x38, 0x10, 0x00, 0x6B, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8447, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x18, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x42, 0x00, 0x06, 0x44, 0x00, 0x3C, 0x40, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0C, 0x8C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8448, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0C, 0x00, 0x0F, 0xF7, 0x00, 0x38, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0C, 0x8C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8449, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x844A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x03, 0x70, 0x00, 0x0C, 0x0C, 0x00, 0x77, 0xFB, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x844D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x844E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x11, 0x00, 0x63, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x30, 0x10, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x844F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8451, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xC2, 0x00, 0x00, 0x22, 0x00, 0x04, 0x32, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0x82, 0x00, 0x7C, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8452, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x18, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x16, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x19, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x68, 0xFF, 0x80, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8456, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x06, 0x3E, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8457, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x50, 0x00, 0x01, 0x88, 0x00, 0x07, 0xFE, 0x00, 0x3A, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8458, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x44, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x08, 0x88, 0x00, 0x04, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8459, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x21, 0x00, 0x1C, 0x3F, 0x00, 0x1A, 0x21, 0x00, 0x29, 0x21, 0x00, 0x48, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x845A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1E, 0x1F, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x845B, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x41, 0x00, 0x28, 0xA1, 0x00, 0x09, 0x11, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x845C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xBF, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x19, 0x00, 0x3F, 0xB3, 0x00, 0x64, 0x66, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8460, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x18, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x12, 0xFE, 0x80, 0x10, 0x4C, 0x00, 0x10, 0x38, 0x00, 0x11, 0xCF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8461, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x41, 0x00, 0x07, 0xFD, 0x00, 0x04, 0x45, 0x00, 0x07, 0xFD, 0x00, 0x04, 0x45, 0x00, 0x07, 0xFD, 0x00, 0x04, 0x45, 0x00, 0x04, 0x4D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8462, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x06, 0x18, 0x00, 0x1D, 0x8E, 0x00, 0x70, 0xC3, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8463, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8464, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x02, 0x00, 0x18, 0x02, 0x00, 0x32, 0x02, 0x00, 0x16, 0x7F, 0x80, 0x0C, 0x02, 0x00, 0x19, 0x22, 0x00, 0x7F, 0x32, 0x00, 0x09, 0x12, 0x00, 0x2A, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x69, 0x02, 0x00, 0x48, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8465, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x02, 0x00, 0x11, 0x22, 0x00, 0x1D, 0x22, 0x00, 0x13, 0x22, 0x00, 0x19, 0x22, 0x00, 0x17, 0x02, 0x00, 0x11, 0x02, 0x00, 0x13, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8466, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8467, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xC9, 0x00, 0x40, 0x49, 0x00, 0x1F, 0x09, 0x00, 0x02, 0x19, 0x00, 0x07, 0xD1, 0x00, 0x7C, 0x11, 0x00, 0x04, 0x33, 0x00, 0x04, 0x62, 0x00, 0x1C, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8469, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x40, 0x80, 0x00, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x846A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x11, 0x00, 0x22, 0x11, 0x00, 0x7F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x60, 0x81, 0x00, 0x43, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x846B, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x3F, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x02, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x5F, 0x00, 0x10, 0x51, 0x00, 0x10, 0x51, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x846C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x07, 0xD3, 0x80, 0x0C, 0x9C, 0x00, 0x33, 0x10, 0x80, 0x02, 0x1F, 0x80, 0x0D, 0x08, 0x00, 0x31, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x06, 0x08, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x846D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x01, 0x00, 0x21, 0x01, 0x00, 0x3F, 0x7F, 0x00, 0x20, 0x00, 0x00, 0x20, 0x7F, 0x00, 0x3F, 0x23, 0x00, 0x20, 0x36, 0x00, 0x3F, 0x1C, 0x00, 0x20, 0x36, 0x00, 0x20, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x846E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3E, 0x00, 0x3C, 0x22, 0x00, 0x20, 0x62, 0x00, 0x3E, 0xC3, 0x80, 0x20, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x23, 0x00, 0x20, 0x36, 0x00, 0x3E, 0x1C, 0x00, 0x60, 0x36, 0x00, 0x20, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x846F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x20, 0x00, 0x32, 0x20, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x12, 0x81, 0x00, 0x3F, 0x11, 0x00, 0x09, 0x09, 0x00, 0x2A, 0x05, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0x02, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8470, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x40, 0x00, 0x04, 0x82, 0x00, 0x0D, 0xFD, 0x00, 0x08, 0x48, 0x00, 0x18, 0x8F, 0x80, 0x33, 0x40, 0x00, 0x50, 0xFE, 0x00, 0x11, 0x86, 0x00, 0x13, 0x4C, 0x00, 0x10, 0x38, 0x00, 0x10, 0xEC, 0x00, 0x13, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8471, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x89, 0x00, 0x77, 0x11, 0x00, 0x03, 0xE3, 0x00, 0x1C, 0x72, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x12, 0xC3, 0x00, 0x12, 0x65, 0x80, 0x33, 0x0C, 0x80, 0x61, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8473, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x0A, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x17, 0xD0, 0x00, 0x11, 0x19, 0x00, 0x17, 0xEB, 0x00, 0x12, 0x4E, 0x00, 0x17, 0x84, 0x00, 0x30, 0xCE, 0x80, 0x27, 0x3B, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8474, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x0A, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x17, 0xD0, 0x00, 0x10, 0x19, 0x00, 0x17, 0xCB, 0x00, 0x14, 0x4E, 0x00, 0x14, 0x44, 0x00, 0x37, 0xCE, 0x80, 0x20, 0x3B, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8475, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x54, 0x00, 0x04, 0x89, 0x00, 0x03, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8476, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xFC, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8477, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8478, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x12, 0x43, 0x00, 0x32, 0x09, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8479, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x7E, 0xC8, 0x00, 0x11, 0xA8, 0x00, 0x10, 0x2F, 0x00, 0x1E, 0x39, 0x00, 0x12, 0xE9, 0x00, 0x12, 0x2B, 0x00, 0x12, 0x28, 0x00, 0x32, 0x20, 0x80, 0x22, 0x31, 0x80, 0x6E, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x847A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x847C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x13, 0x32, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x32, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x06, 0x3F, 0x80, 0x7A, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x7A, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x847D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xE2, 0x00, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0x18, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8481, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x30, 0x44, 0x00, 0x18, 0x12, 0x00, 0x08, 0x11, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8482, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8484, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x1E, 0x02, 0x00, 0x00, 0x7F, 0x80, 0x7F, 0xA2, 0x00, 0x12, 0x32, 0x00, 0x12, 0x12, 0x00, 0x12, 0x02, 0x00, 0x12, 0x0E, 0x80, 0x33, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8485, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x18, 0x40, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x44, 0x00, 0x30, 0x44, 0x00, 0x0C, 0xC4, 0x00, 0x39, 0x84, 0x80, 0x63, 0x03, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8487, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x28, 0x00, 0x00, 0x14, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x17, 0xD0, 0x00, 0x14, 0x52, 0x00, 0x15, 0x52, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x15, 0x48, 0x00, 0x22, 0x99, 0x00, 0x22, 0x65, 0x00, 0x4C, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8488, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x4C, 0x00, 0x10, 0x70, 0x00, 0x17, 0x42, 0x00, 0x39, 0x3E, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8489, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x48, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x848B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x49, 0xF0, 0x80, 0x68, 0x89, 0x00, 0x28, 0x40, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x80, 0x38, 0x42, 0x00, 0x68, 0x62, 0x00, 0x08, 0x22, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x848C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0xA0, 0x00, 0x1C, 0x9C, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x848E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x10, 0x0E, 0x00, 0x0D, 0xF0, 0x00, 0x25, 0x06, 0x00, 0x11, 0x78, 0x00, 0x05, 0x52, 0x00, 0x09, 0x54, 0x00, 0x11, 0x48, 0x00, 0x32, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x54, 0x00, 0x14, 0x67, 0x00, 0x18, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8490, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x28, 0x00, 0x02, 0x32, 0x00, 0x02, 0x3D, 0x00, 0x04, 0x20, 0x80, 0x08, 0x3F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8492, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8493, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x09, 0x80, 0x18, 0x0F, 0x00, 0x32, 0xF8, 0x00, 0x16, 0x08, 0x00, 0x0C, 0x49, 0x00, 0x1A, 0x49, 0x00, 0x7D, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2B, 0x08, 0x80, 0x69, 0x09, 0x80, 0x48, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8494, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1E, 0x04, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x04, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8495, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x34, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8497, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x40, 0x00, 0x10, 0x24, 0x00, 0x0D, 0xFE, 0x00, 0x05, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x13, 0x04, 0x00, 0x05, 0xFC, 0x00, 0x09, 0x44, 0x00, 0x39, 0x28, 0x00, 0x09, 0x10, 0x00, 0x09, 0x48, 0x00, 0x09, 0x87, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8499, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xA0, 0x00, 0x02, 0x53, 0x00, 0x0C, 0x6C, 0x00, 0x31, 0x98, 0x00, 0x06, 0x34, 0x00, 0x38, 0xD2, 0x00, 0x03, 0x11, 0x80, 0x1C, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x849C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x29, 0x00, 0x15, 0x29, 0x00, 0x15, 0x48, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x849E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x31, 0x08, 0x00, 0x19, 0x08, 0x00, 0x0B, 0x7F, 0x00, 0x62, 0x00, 0x00, 0x32, 0x41, 0x00, 0x16, 0x63, 0x00, 0x0A, 0x22, 0x00, 0x1A, 0x26, 0x00, 0x12, 0x04, 0x00, 0x32, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x849F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0xC1, 0x00, 0x22, 0x79, 0x00, 0x32, 0x49, 0x00, 0x16, 0x49, 0x00, 0x14, 0x49, 0x00, 0x04, 0x79, 0x00, 0x1E, 0x03, 0x00, 0x70, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84A1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x04, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84A6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x30, 0x40, 0x00, 0x5F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x03, 0xF8, 0x00, 0x7E, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84A8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x50, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84A9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84AA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x14, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84AD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x31, 0x01, 0x00, 0x09, 0x11, 0x00, 0x0F, 0xF3, 0x00, 0x04, 0x0E, 0x00, 0x3A, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x34, 0x89, 0x00, 0x07, 0xFB, 0x00, 0x01, 0x02, 0x00, 0x3E, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84AF, { 0x00, 0x00, 0x00, 0x04, 0x81, 0x00, 0x04, 0x85, 0x00, 0x7F, 0xF5, 0x00, 0x04, 0x85, 0x00, 0x00, 0x05, 0x00, 0x3C, 0xF5, 0x00, 0x24, 0x95, 0x00, 0x24, 0x95, 0x00, 0x34, 0xD5, 0x00, 0x2C, 0xB5, 0x00, 0x24, 0x95, 0x00, 0x34, 0xD1, 0x00, 0x2C, 0xB1, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x4D, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84B1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x31, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84B2, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x13, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84B4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x20, 0x80, 0x00, 0x11, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x11, 0x00, 0x0C, 0x31, 0x00, 0x18, 0x61, 0x00, 0x30, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84B8, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x62, 0x00, 0x01, 0x54, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x09, 0xC2, 0x00, 0x30, 0x01, 0x80, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84B9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x88, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x05, 0x28, 0x00, 0x0D, 0x2C, 0x00, 0x19, 0x26, 0x00, 0x71, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84BA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x51, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x16, 0x20, 0x00, 0x30, 0x20, 0x00, 0x5F, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x30, 0xD8, 0x00, 0x21, 0x8C, 0x00, 0x63, 0x06, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84BB, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x81, 0x00, 0x0F, 0x9F, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xBF, 0x80, 0x02, 0x84, 0x80, 0x0D, 0x99, 0x80, 0x32, 0xE2, 0x80, 0x0C, 0x8C, 0x80, 0x30, 0xB0, 0x80, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84BC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x68, 0x00, 0x01, 0x90, 0x00, 0x06, 0x0C, 0x00, 0x3B, 0xFB, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x04, 0x00, 0x17, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84BD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x17, 0xFA, 0x00, 0x11, 0x22, 0x00, 0x12, 0x12, 0x00, 0x14, 0x0A, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x12, 0x43, 0x00, 0x32, 0x09, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84BE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x30, 0x10, 0x00, 0x19, 0x11, 0x00, 0x09, 0x93, 0x00, 0x30, 0x92, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x54, 0x00, 0x78, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84BF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C0, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x03, 0x00, 0x1F, 0x3C, 0x00, 0x02, 0x08, 0x00, 0x04, 0x52, 0x00, 0x04, 0x24, 0x00, 0x05, 0x99, 0x00, 0x0E, 0x1F, 0x80, 0x35, 0xF0, 0x80, 0x04, 0x10, 0x00, 0x04, 0x52, 0x00, 0x04, 0x91, 0x00, 0x05, 0x10, 0x80, 0x0C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C1, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x18, 0x36, 0x00, 0x67, 0xE1, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C2, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C4, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x20, 0x00, 0x02, 0x44, 0x00, 0x01, 0x9E, 0x00, 0x3F, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C6, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x23, 0x00, 0x21, 0x26, 0x00, 0x3F, 0x24, 0x00, 0x20, 0x22, 0x00, 0x24, 0xA1, 0x00, 0x25, 0x21, 0x00, 0x2E, 0x21, 0x00, 0x3B, 0x2E, 0x00, 0x61, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84C9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x06, 0x4C, 0x00, 0x18, 0xA3, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84CA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0xF8, 0x00, 0x1C, 0x0E, 0x00, 0x71, 0x13, 0x80, 0x06, 0x78, 0x00, 0x0F, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x0D, 0x0D, 0x00, 0x33, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x31, 0x31, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84CB, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84CC, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x1C, 0x96, 0x00, 0x62, 0xA3, 0x80, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x7A, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84CD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x9C, 0x00, 0x07, 0xE0, 0x00, 0x3A, 0x00, 0x80, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84CF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x83, 0x00, 0x07, 0x0E, 0x00, 0x1D, 0x3A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0xAA, 0x00, 0x14, 0xEA, 0x00, 0x15, 0x2A, 0x00, 0x37, 0x6E, 0x80, 0x2D, 0x5B, 0x80, 0x60, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84D0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x13, 0xCC, 0x00, 0x16, 0x03, 0x80, 0x10, 0x04, 0x00, 0x37, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x61, 0x84, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84D1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x01, 0x11, 0x00, 0x07, 0x0A, 0x00, 0x39, 0x04, 0x00, 0x01, 0xF2, 0x00, 0x0E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84D3, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x19, 0x86, 0x00, 0x10, 0x84, 0x00, 0x37, 0xFF, 0x80, 0x50, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84D6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x09, 0x24, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x24, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x23, 0x00, 0x0F, 0xBE, 0x00, 0x08, 0x20, 0x80, 0x0F, 0xA1, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84D9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x13, 0xAE, 0x00, 0x16, 0xAB, 0x00, 0x10, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84DA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x05, 0x3F, 0x00, 0x09, 0x62, 0x00, 0x09, 0x94, 0x00, 0x19, 0x0C, 0x00, 0x19, 0x33, 0x80, 0x29, 0xD8, 0x00, 0x09, 0x62, 0x00, 0x09, 0x0C, 0x00, 0x09, 0x33, 0x00, 0x09, 0x0C, 0x00, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84DC, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x0A, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x9F, 0x00, 0x2A, 0x90, 0x00, 0x33, 0x90, 0x00, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x99, 0x80, 0x3F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84DD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x02, 0x48, 0x00, 0x12, 0x7C, 0x00, 0x12, 0x80, 0x00, 0x13, 0x20, 0x00, 0x12, 0x10, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84DF, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x02, 0x00, 0x0F, 0x92, 0x00, 0x11, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x12, 0x52, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x52, 0x00, 0x1F, 0xD2, 0x00, 0x10, 0x02, 0x00, 0x01, 0xC2, 0x00, 0x3E, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84E0, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x28, 0x00, 0x09, 0xC8, 0x00, 0x0A, 0x28, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x02, 0x00, 0x22, 0x12, 0x00, 0x27, 0xFA, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84E3, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3E, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x14, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x82, 0x00, 0x0A, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x2C, 0x00, 0x28, 0x42, 0x00, 0x11, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84E5, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x41, 0x42, 0x00, 0x06, 0x30, 0x00, 0x1B, 0xEF, 0x00, 0x60, 0x82, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA4, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84E6, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x0A, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x60, 0x13, 0x00, 0x04, 0x10, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xE4, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84E7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x15, 0x82, 0x00, 0x14, 0x44, 0x00, 0x34, 0x38, 0x00, 0x55, 0xC7, 0x80, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x54, 0x00, 0x14, 0xD6, 0x00, 0x11, 0x93, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84EA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x30, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x46, 0x00, 0x30, 0x28, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x19, 0x13, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84EC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x10, 0x7E, 0x00, 0x08, 0x84, 0x00, 0x01, 0x48, 0x00, 0x26, 0x30, 0x00, 0x10, 0x2C, 0x00, 0x00, 0xD3, 0x80, 0x03, 0x7E, 0x00, 0x38, 0x10, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84EE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x39, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84EF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x31, 0x45, 0x00, 0x63, 0x6D, 0x80, 0x08, 0x00, 0x00, 0x18, 0x10, 0x00, 0x30, 0x10, 0x00, 0x70, 0x9F, 0x00, 0x11, 0x90, 0x00, 0x13, 0x50, 0x00, 0x16, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84F0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x90, 0x00, 0x30, 0x9F, 0x00, 0x60, 0x90, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x30, 0x10, 0x00, 0x70, 0x9F, 0x00, 0x11, 0x90, 0x00, 0x13, 0x50, 0x00, 0x16, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84F1, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x41, 0x00, 0x18, 0x82, 0x00, 0x0B, 0xEF, 0x80, 0x60, 0x82, 0x00, 0x30, 0x82, 0x00, 0x10, 0xE2, 0x00, 0x03, 0x8F, 0x80, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x31, 0x82, 0x00, 0x63, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84F2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x23, 0xF8, 0x00, 0x22, 0x08, 0x00, 0x23, 0xF8, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xBE, 0x00, 0x28, 0xA2, 0x00, 0x2F, 0xBE, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84F4, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xC4, 0x80, 0x00, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84F7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x22, 0x00, 0x10, 0x44, 0x00, 0x10, 0xFF, 0x80, 0x7D, 0x88, 0x00, 0x12, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x1C, 0x88, 0x00, 0x70, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x30, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84FA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3E, 0x00, 0x7F, 0xCA, 0x00, 0x11, 0x0A, 0x00, 0x25, 0xCA, 0x00, 0x5F, 0x3A, 0x00, 0x04, 0x12, 0x00, 0x0F, 0xBA, 0x80, 0x78, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84FB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x92, 0x00, 0x12, 0x12, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x72, 0x00, 0x3F, 0x22, 0x00, 0x08, 0x72, 0x80, 0x08, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x84FC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xBF, 0x00, 0x04, 0x89, 0x00, 0x09, 0x93, 0x00, 0x12, 0xA5, 0x00, 0x05, 0xCB, 0x00, 0x08, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x4C, 0x00, 0x39, 0x93, 0x80, 0x0E, 0x62, 0x00, 0x03, 0x8C, 0x00, 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84FD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x84FF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x28, 0x01, 0x00, 0x1B, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x51, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8500, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x9F, 0x80, 0x21, 0x10, 0x80, 0x33, 0x11, 0x00, 0x12, 0x12, 0x00, 0x7F, 0x91, 0x00, 0x00, 0x10, 0x80, 0x3F, 0x10, 0x80, 0x21, 0x10, 0x80, 0x21, 0x13, 0x80, 0x21, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8502, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x05, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8503, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x7C, 0xC2, 0x00, 0x04, 0x9F, 0x00, 0x05, 0xF1, 0x80, 0x3C, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x11, 0x00, 0x08, 0x7F, 0x80, 0x3B, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8506, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x30, 0x44, 0x00, 0x10, 0x87, 0x80, 0x05, 0x20, 0x00, 0x0C, 0x7E, 0x00, 0x09, 0xC4, 0x00, 0x18, 0x38, 0x00, 0x30, 0xEE, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8507, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x24, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x04, 0x00, 0x27, 0x0C, 0x00, 0x3C, 0x1C, 0x00, 0x20, 0x34, 0x80, 0x33, 0x64, 0x80, 0x1E, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x850C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0x9F, 0x80, 0x04, 0x30, 0x80, 0x3F, 0xA0, 0x80, 0x24, 0xC9, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x15, 0x16, 0x00, 0x64, 0xB3, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x850E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x3D, 0x87, 0x80, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x2C, 0x00, 0x24, 0x38, 0x00, 0x24, 0x6E, 0x00, 0x3D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8510, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8511, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x12, 0x24, 0x00, 0x11, 0x18, 0x00, 0x10, 0x28, 0x80, 0x20, 0xC6, 0x80, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8513, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x03, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8514, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x07, 0xF1, 0x00, 0x00, 0x01, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFA, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8515, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x11, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8517, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x24, 0x91, 0x00, 0x24, 0x48, 0x80, 0x28, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8518, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x88, 0x00, 0x01, 0x02, 0x00, 0x02, 0x3F, 0x00, 0x3F, 0xC0, 0x80, 0x04, 0x08, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x80, 0x02, 0x68, 0x00, 0x0D, 0x96, 0x00, 0x36, 0x61, 0x80, 0x03, 0x8C, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x851A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE2, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xE2, 0x00, 0x10, 0x1F, 0x80, 0x17, 0xC2, 0x00, 0x10, 0x12, 0x00, 0x1F, 0xEA, 0x00, 0x11, 0x02, 0x00, 0x15, 0x42, 0x00, 0x25, 0x42, 0x00, 0x29, 0x42, 0x00, 0x23, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x851C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x7F, 0xD1, 0x00, 0x04, 0x33, 0x00, 0x7F, 0xCA, 0x00, 0x08, 0x0E, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x8E, 0x00, 0x18, 0x9B, 0x00, 0x73, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x851E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0B, 0xF0, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x851F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0xC0, 0x00, 0x11, 0xA0, 0x00, 0x10, 0x3F, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x32, 0x36, 0x00, 0x22, 0x63, 0x00, 0x6E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8521, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0C, 0xA2, 0x00, 0x33, 0x14, 0x00, 0x0E, 0x0C, 0x00, 0x0C, 0x03, 0x80, 0x37, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8522, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x61, 0x11, 0x00, 0x31, 0xFE, 0x00, 0x03, 0x42, 0x00, 0x36, 0x3C, 0x00, 0x61, 0xE7, 0x80, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0x90, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8523, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x11, 0x10, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x4A, 0x00, 0x1F, 0xA4, 0x00, 0x11, 0x1A, 0x00, 0x01, 0x32, 0x00, 0x01, 0xC2, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x02, 0x00, 0x09, 0x22, 0x00, 0x11, 0x12, 0x00, 0x11, 0x02, 0x00, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8524, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x22, 0x50, 0x00, 0x12, 0x23, 0x00, 0x32, 0x45, 0x80, 0x07, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8525, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x09, 0xF2, 0x00, 0x0F, 0x22, 0x00, 0x08, 0xC2, 0x00, 0x0B, 0x3A, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x14, 0x80, 0x00, 0x14, 0x41, 0x00, 0x24, 0x04, 0x80, 0x27, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8526, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x66, 0xD9, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8527, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x3E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x3F, 0x3F, 0x80, 0x68, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x852A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x01, 0x00, 0x7F, 0xC7, 0x00, 0x04, 0x1C, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xF2, 0x00, 0x04, 0x22, 0x00, 0x04, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x852B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x64, 0x91, 0x80, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x852C, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x7F, 0x80, 0x02, 0x12, 0x00, 0x04, 0x2F, 0x00, 0x04, 0xF0, 0x80, 0x17, 0x00, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x1F, 0x4A, 0x80, 0x30, 0x8B, 0x80, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x852D, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x42, 0x00, 0x15, 0xBD, 0x80, 0x14, 0x00, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x04, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x22, 0x00, 0x10, 0x4F, 0x00, 0x11, 0xF0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x852F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x14, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x38, 0x00, 0x1C, 0x54, 0x00, 0x10, 0x92, 0x00, 0x13, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8532, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x40, 0x10, 0x80, 0x3F, 0x10, 0x00, 0x00, 0x3F, 0x80, 0x7F, 0xA2, 0x00, 0x12, 0x56, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x3B, 0x00, 0x33, 0x00, 0x80, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8533, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x60, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x92, 0x00, 0x10, 0x92, 0x00, 0x30, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8534, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x25, 0x55, 0x00, 0x25, 0x55, 0x00, 0x65, 0x55, 0x00, 0x49, 0x25, 0x80, 0x41, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8535, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x12, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x17, 0xE9, 0x00, 0x14, 0x8B, 0x00, 0x17, 0xEA, 0x00, 0x14, 0x2E, 0x00, 0x17, 0xE4, 0x00, 0x14, 0x8E, 0x00, 0x37, 0xFA, 0x80, 0x20, 0x33, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8536, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8537, { 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xE8, 0x00, 0x0A, 0x28, 0x00, 0x0B, 0xE8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8538, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x05, 0x04, 0x00, 0x1B, 0xFE, 0x00, 0x12, 0x24, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x17, 0xE4, 0x00, 0x18, 0x1C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x21, 0x00, 0x18, 0x21, 0x00, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8539, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x12, 0x00, 0x11, 0x1F, 0x00, 0x20, 0xA2, 0x00, 0x5F, 0x52, 0x00, 0x00, 0x12, 0x00, 0x24, 0x92, 0x00, 0x14, 0x94, 0x00, 0x15, 0x08, 0x00, 0x03, 0x94, 0x00, 0x3C, 0x23, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x853A, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x52, 0x00, 0x27, 0xFA, 0x00, 0x2C, 0x42, 0x00, 0x37, 0xF2, 0x00, 0x24, 0x42, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x42, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x853B, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x21, 0x00, 0x42, 0x3A, 0x00, 0x1F, 0x20, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0x84, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x12, 0xC5, 0x00, 0x22, 0x01, 0x00, 0x41, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x853C, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x21, 0xFC, 0x00, 0x19, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x79, 0xFC, 0x00, 0x08, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x22, 0x00, 0x0B, 0x52, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xEA, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x853D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x15, 0x08, 0x00, 0x24, 0x90, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xB1, 0x00, 0x24, 0xD2, 0x00, 0x2E, 0x8A, 0x00, 0x35, 0x84, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x92, 0x00, 0x25, 0xA1, 0x00, 0x04, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x853F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0xFC, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x42, 0x00, 0x10, 0x20, 0x00, 0x2F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x80, 0x10, 0x04, 0x80, 0x14, 0x92, 0x80, 0x14, 0x48, 0x80, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8540, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x2B, 0x2B, 0x00, 0x1C, 0x1C, 0x00, 0x1A, 0x1A, 0x00, 0x29, 0x2B, 0x00, 0x48, 0x49, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8541, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8543, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC4, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8546, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x14, 0x00, 0x00, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x2F, 0xA0, 0x00, 0x28, 0xB2, 0x00, 0x2F, 0x96, 0x00, 0x28, 0x9C, 0x00, 0x2F, 0x88, 0x00, 0x28, 0x9C, 0x00, 0x6F, 0xB6, 0x80, 0x45, 0x63, 0x80, 0x48, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8548, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8549, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x854A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x02, 0x40, 0x00, 0x12, 0x44, 0x00, 0x12, 0x12, 0x00, 0x21, 0xF2, 0x00, 0x08, 0x00, 0x00, 0x04, 0x08, 0x00, 0x09, 0x05, 0x00, 0x28, 0xA8, 0x80, 0x28, 0x28, 0x00, 0x49, 0x49, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x854B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7C, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x17, 0xAF, 0x00, 0x14, 0x28, 0x00, 0x14, 0x28, 0x00, 0x1F, 0xA8, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x854E, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x1C, 0x00, 0x3B, 0xFB, 0x80, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x854F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x44, 0x21, 0x00, 0x29, 0xFF, 0x00, 0x10, 0x22, 0x00, 0x28, 0x24, 0x00, 0x4B, 0xFF, 0x80, 0x18, 0x28, 0x00, 0x28, 0xFE, 0x00, 0x4B, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8550, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x14, 0x94, 0x00, 0x22, 0xA3, 0x00, 0x08, 0x88, 0x00, 0x14, 0x94, 0x00, 0x22, 0xA3, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8551, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x26, 0x11, 0x00, 0x24, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8552, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8553, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8555, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x5C, 0x00, 0x45, 0x83, 0x00, 0x2B, 0x7D, 0x80, 0x10, 0x28, 0x00, 0x29, 0xFF, 0x00, 0x49, 0x29, 0x00, 0x15, 0x49, 0x00, 0x25, 0x8F, 0x00, 0x45, 0x01, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x39, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8556, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x30, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x61, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x31, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x0C, 0x9C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8557, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x62, 0x00, 0x22, 0xD6, 0x00, 0x3E, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x2E, 0xE3, 0x80, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8558, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x3F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x80, 0x78, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8559, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x80, 0x00, 0x80, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x855A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x855C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x02, 0x20, 0x00, 0x7E, 0x3F, 0x80, 0x04, 0x20, 0x00, 0x18, 0x20, 0x00, 0x00, 0x80, 0x00, 0x12, 0x43, 0x00, 0x32, 0x09, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x855D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x11, 0x00, 0x32, 0x21, 0x00, 0x16, 0xC2, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x2B, 0x40, 0x80, 0x69, 0x61, 0x80, 0x48, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x855E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x33, 0x00, 0x11, 0x16, 0x00, 0x1F, 0x0C, 0x00, 0x71, 0x1E, 0x00, 0x01, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x855F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xC4, 0x00, 0x21, 0x29, 0x00, 0x12, 0x12, 0x00, 0x0C, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x7C, 0x00, 0x02, 0x44, 0x00, 0x1E, 0x47, 0x00, 0x10, 0x80, 0x00, 0x1E, 0x7E, 0x00, 0x02, 0x22, 0x00, 0x06, 0x1C, 0x00, 0x1C, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8560, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x21, 0xA1, 0x00, 0x3B, 0x21, 0x00, 0x06, 0x3F, 0x00, 0x1C, 0x80, 0x00, 0x75, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8561, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8562, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8563, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x00, 0x04, 0x42, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x04, 0x80, 0x07, 0xC4, 0x00, 0x08, 0xFF, 0x00, 0x15, 0x24, 0x00, 0x26, 0x24, 0x00, 0x04, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8564, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x28, 0x00, 0x19, 0x7F, 0x00, 0x33, 0x48, 0x00, 0x6A, 0x08, 0x00, 0x1C, 0x3E, 0x00, 0x36, 0x08, 0x00, 0x6D, 0x08, 0x00, 0x1D, 0x08, 0x00, 0x35, 0x7F, 0x00, 0x65, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8568, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x48, 0x00, 0x12, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x14, 0x80, 0x15, 0x55, 0x00, 0x15, 0x64, 0x00, 0x15, 0x44, 0x00, 0x17, 0xCA, 0x00, 0x15, 0x4A, 0x00, 0x11, 0x11, 0x00, 0x22, 0x11, 0x00, 0x24, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8569, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x21, 0xFF, 0x80, 0x14, 0x20, 0x00, 0x04, 0x7F, 0x80, 0x08, 0x92, 0x80, 0x0B, 0x24, 0x80, 0x10, 0xC8, 0x80, 0x13, 0x30, 0x80, 0x20, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x856A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x14, 0x92, 0x00, 0x04, 0x92, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x856B, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x856D, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x4F, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1E, 0x4F, 0x00, 0x12, 0x49, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x856F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x86, 0x00, 0x25, 0x4C, 0x00, 0x28, 0x38, 0x00, 0x28, 0x6E, 0x00, 0x25, 0xBB, 0x80, 0x24, 0x50, 0x00, 0x24, 0xFF, 0x00, 0x2D, 0x10, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8572, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x11, 0x06, 0x00, 0x0A, 0x38, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xA0, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x7F, 0xA4, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x84, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8574, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x24, 0x00, 0x08, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x22, 0xFC, 0x00, 0x3C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x4A, 0x00, 0x0F, 0x4A, 0x00, 0x71, 0x4A, 0x00, 0x23, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8577, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x38, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8579, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x18, 0x12, 0x00, 0x32, 0x24, 0x00, 0x66, 0x7F, 0x80, 0x18, 0xC4, 0x00, 0x22, 0x7F, 0x00, 0x7E, 0x44, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x44, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x857A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x09, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x7F, 0x89, 0x00, 0x11, 0x0B, 0x00, 0x1F, 0x0E, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x0E, 0x00, 0x11, 0x0A, 0x80, 0x1F, 0x13, 0x80, 0x71, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x857B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x12, 0x00, 0x10, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x10, 0x7F, 0x80, 0x1F, 0x12, 0x00, 0x10, 0x12, 0x00, 0x7F, 0x92, 0x00, 0x10, 0x7F, 0x80, 0x32, 0x12, 0x00, 0x23, 0x33, 0x00, 0x3D, 0xA1, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x857D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x01, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x22, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x63, 0x9C, 0x00, 0x0E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x857E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x857F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x07, 0x00, 0x09, 0xFC, 0x00, 0x0A, 0x52, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0xFF, 0x00, 0x68, 0x10, 0x00, 0x49, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x1C, 0x7E, 0x00, 0x14, 0xC2, 0x00, 0x37, 0xAC, 0x00, 0x22, 0x18, 0x00, 0x61, 0xE7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8580, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFC, 0x00, 0x19, 0x24, 0x00, 0x09, 0x74, 0x00, 0x61, 0x8C, 0x00, 0x31, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x1A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x32, 0x49, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8581, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x1A, 0x00, 0x17, 0xF2, 0x00, 0x12, 0xA2, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0xA2, 0x00, 0x12, 0x92, 0x00, 0x14, 0x8A, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8584, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x10, 0x14, 0x00, 0x08, 0x12, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x08, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x88, 0x00, 0x20, 0x58, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8585, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x12, 0xBF, 0x00, 0x12, 0x80, 0x00, 0x36, 0xFF, 0x80, 0x24, 0xA5, 0x00, 0x25, 0x3A, 0x00, 0x7D, 0x61, 0x80, 0x0A, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x30, 0x42, 0x00, 0x60, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8586, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xF9, 0x00, 0x08, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x0A, 0x46, 0x80, 0x1A, 0x0B, 0x00, 0x33, 0xF9, 0x00, 0x04, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x76, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8587, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x08, 0x42, 0x00, 0x09, 0x52, 0x00, 0x15, 0x54, 0x00, 0x25, 0x57, 0x80, 0x09, 0xF5, 0x00, 0x18, 0x19, 0x00, 0x2B, 0xF5, 0x00, 0x09, 0x25, 0x00, 0x09, 0x22, 0x00, 0x09, 0x26, 0x00, 0x09, 0x35, 0x00, 0x09, 0x49, 0x00, 0x0A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8588, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x01, 0x40, 0x00, 0x03, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x93, 0x80, 0x12, 0xA2, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8589, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x17, 0xD9, 0x00, 0x11, 0x0B, 0x00, 0x15, 0x4E, 0x00, 0x35, 0x44, 0x80, 0x21, 0x9E, 0x80, 0x63, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x858A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x22, 0x11, 0x00, 0x7F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x858B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x3C, 0xFF, 0x00, 0x01, 0x91, 0x00, 0x0C, 0x2A, 0x00, 0x38, 0x44, 0x00, 0x6F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x858C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x11, 0x00, 0x00, 0x33, 0xEF, 0x80, 0x62, 0x28, 0x80, 0x4B, 0xE9, 0x80, 0x3A, 0x2B, 0x00, 0x13, 0xEA, 0x00, 0x20, 0x09, 0x00, 0x7A, 0x68, 0x80, 0x0B, 0xC8, 0x80, 0x1A, 0x08, 0x80, 0x33, 0x2B, 0x80, 0x61, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x858F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x12, 0x41, 0x00, 0x12, 0x04, 0x80, 0x23, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8590, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x44, 0x00, 0x08, 0x87, 0x80, 0x1C, 0x20, 0x00, 0x1A, 0x7E, 0x00, 0x29, 0xC4, 0x00, 0x48, 0x38, 0x00, 0x08, 0x6E, 0x00, 0x09, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8591, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8593, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x02, 0x00, 0x0B, 0xFF, 0x80, 0x60, 0x02, 0x00, 0x33, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x02, 0xFE, 0x80, 0x08, 0x92, 0x00, 0x18, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x30, 0xC6, 0x00, 0x20, 0x38, 0x00, 0x63, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8594, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x09, 0xF2, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8597, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x8D, 0x00, 0x2E, 0xF1, 0x00, 0x20, 0x8D, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8598, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x30, 0x10, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x79, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8599, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x22, 0x00, 0x10, 0x24, 0x00, 0x3E, 0x7F, 0x80, 0x28, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x44, 0x00, 0x32, 0x44, 0x00, 0x60, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x859B, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x14, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x859C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x36, 0x00, 0x10, 0x14, 0x00, 0x10, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x69, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x859D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x01, 0xFC, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x11, 0x74, 0x00, 0x1E, 0x03, 0x80, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x23, 0xFC, 0x00, 0x62, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x859F, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x84, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x1C, 0x00, 0x1B, 0x36, 0x00, 0x70, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85A0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x2B, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x48, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x23, 0x22, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85A2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x24, 0x11, 0x00, 0x7F, 0xB1, 0x00, 0x24, 0xE7, 0x00, 0x3F, 0x80, 0x00, 0x24, 0x94, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0x84, 0x00, 0x20, 0xFF, 0x80, 0x60, 0x84, 0x00, 0x41, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85A4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x24, 0x00, 0x10, 0xE7, 0x00, 0x10, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0xE7, 0x00, 0x66, 0x24, 0x00, 0x14, 0x24, 0x00, 0x0C, 0xE7, 0x00, 0x18, 0x24, 0x00, 0x30, 0x24, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85A5, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x7F, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xF1, 0x00, 0x01, 0x23, 0x00, 0x01, 0xF2, 0x00, 0x1F, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85A6, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x04, 0x80, 0x25, 0x12, 0x80, 0x28, 0x8B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85A7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x5F, 0xFE, 0x80, 0x04, 0x20, 0x00, 0x1F, 0x23, 0x00, 0x71, 0x3E, 0x00, 0x1A, 0x20, 0x80, 0x0C, 0x21, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85A8, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x07, 0xF3, 0x80, 0x0C, 0xDC, 0x00, 0x33, 0x10, 0x80, 0x06, 0x1F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85A9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x28, 0x14, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x28, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x88, 0x00, 0x25, 0x7F, 0x00, 0x2D, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85AA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x1F, 0xDC, 0x00, 0x08, 0x90, 0x00, 0x05, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x11, 0x00, 0x1F, 0xD1, 0x00, 0x06, 0x11, 0x00, 0x0B, 0x11, 0x00, 0x12, 0xA1, 0x00, 0x22, 0x21, 0x00, 0x02, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85AB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x24, 0x21, 0x00, 0x42, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85AC, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x33, 0xF3, 0x00, 0x1A, 0x16, 0x00, 0x03, 0xF0, 0x00, 0x1A, 0x16, 0x00, 0x33, 0xF3, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85AD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x24, 0x00, 0x1A, 0x44, 0x00, 0x29, 0xFF, 0x80, 0x48, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85AE, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x15, 0x1F, 0x80, 0x7F, 0x92, 0x00, 0x0E, 0x32, 0x00, 0x15, 0x0A, 0x00, 0x64, 0xCA, 0x00, 0x08, 0x0E, 0x00, 0x7F, 0xC4, 0x00, 0x11, 0x0E, 0x00, 0x3A, 0x0A, 0x00, 0x0E, 0x1B, 0x00, 0x71, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85AF, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85B0, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x3C, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x4A, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85B4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2A, 0x45, 0x00, 0x1A, 0x16, 0x00, 0x33, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85B6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x62, 0x49, 0x00, 0x14, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x74, 0x49, 0x00, 0x04, 0x49, 0x00, 0x1A, 0x7F, 0x00, 0x62, 0x08, 0x00, 0x06, 0x7F, 0x00, 0x1A, 0x08, 0x00, 0x62, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85B7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85B8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x01, 0xFF, 0x00, 0x61, 0x49, 0x00, 0x31, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x30, 0x10, 0x00, 0x21, 0x93, 0x00, 0x63, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85B9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF4, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85BA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x13, 0x00, 0x1F, 0xAC, 0x00, 0x05, 0x4A, 0x00, 0x05, 0x4A, 0x00, 0x09, 0x4B, 0x00, 0x36, 0x5C, 0x80, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85BC, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x33, 0xDE, 0x00, 0x22, 0x10, 0x80, 0x6F, 0xCF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85BD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x0A, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x2A, 0xBE, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x32, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x2A, 0x00, 0x07, 0xA2, 0x80, 0x1C, 0x3E, 0x80, 0x70, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85BE, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x60, 0x81, 0x80, 0x2A, 0x95, 0x00, 0x24, 0x89, 0x00, 0x2A, 0x95, 0x00, 0x20, 0x81, 0x00, 0x2A, 0x95, 0x00, 0x24, 0x89, 0x00, 0x2A, 0x95, 0x00, 0x20, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85BF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x7F, 0x00, 0x3C, 0x02, 0x00, 0x21, 0x14, 0x00, 0x1F, 0x08, 0x00, 0x20, 0x7F, 0x80, 0x3F, 0x09, 0x00, 0x44, 0x28, 0x00, 0x3F, 0xAF, 0x00, 0x0C, 0x68, 0x00, 0x1A, 0x58, 0x00, 0x31, 0x4E, 0x00, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85C1, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x27, 0xFC, 0x80, 0x24, 0x04, 0x80, 0x27, 0xFD, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xE0, 0x00, 0x06, 0x58, 0x00, 0x38, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85C2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x7F, 0xBF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1B, 0x00, 0x11, 0x0E, 0x00, 0x1F, 0x0E, 0x00, 0x11, 0xBB, 0x00, 0x1F, 0x01, 0x80, 0x70, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x38, 0x83, 0x00, 0x60, 0xEE, 0x00, 0x1C, 0xB8, 0x00, 0x70, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85C7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x39, 0x0F, 0x00, 0x21, 0xE1, 0x00, 0x3D, 0x0F, 0x00, 0x21, 0xE1, 0x00, 0x20, 0x21, 0x00, 0x3D, 0x2F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1C, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85C9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x07, 0x12, 0x00, 0x1C, 0x12, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x92, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x80, 0x00, 0x0C, 0x3F, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85CA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x06, 0x00, 0x78, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x80, 0x00, 0x1A, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x49, 0xFF, 0x00, 0x09, 0xA9, 0x00, 0x0A, 0xA9, 0x00, 0x08, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85CB, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x73, 0x33, 0x00, 0x0D, 0x0D, 0x00, 0x71, 0x31, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85CD, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x88, 0x00, 0x12, 0x10, 0x00, 0x1F, 0xBF, 0x80, 0x10, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x12, 0x1F, 0x00, 0x1F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85CE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x11, 0x00, 0x21, 0x08, 0x80, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85CF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x25, 0xF1, 0x00, 0x3D, 0x51, 0x00, 0x25, 0xF2, 0x00, 0x05, 0x2A, 0x00, 0x3D, 0xE4, 0x00, 0x25, 0x44, 0x00, 0x25, 0xFA, 0x80, 0x28, 0x31, 0x80, 0x28, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85D0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x15, 0x10, 0x00, 0x62, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x74, 0x81, 0x00, 0x04, 0xFF, 0x00, 0x1A, 0x24, 0x00, 0x62, 0x24, 0x00, 0x06, 0x64, 0x00, 0x1A, 0x44, 0x80, 0x62, 0xC4, 0x80, 0x0D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85D3, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x22, 0x00, 0x1F, 0x14, 0x00, 0x22, 0x7F, 0x00, 0x44, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x24, 0xBE, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x07, 0x88, 0x00, 0x78, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85D5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x0E, 0xFF, 0x80, 0x0D, 0x8A, 0x80, 0x14, 0x8F, 0x80, 0x24, 0xB9, 0x80, 0x04, 0x80, 0x80, 0x04, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85D8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x17, 0xF8, 0x00, 0x10, 0x82, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x48, 0x00, 0x13, 0xF8, 0x00, 0x32, 0x48, 0x00, 0x27, 0xFB, 0x00, 0x6D, 0x05, 0x80, 0x18, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85DA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85DC, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x03, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xC9, 0x00, 0x0E, 0x91, 0x00, 0x15, 0x26, 0x00, 0x24, 0xC0, 0x00, 0x01, 0x30, 0x00, 0x06, 0x4C, 0x00, 0x3A, 0x4F, 0x80, 0x01, 0xF0, 0x00, 0x07, 0x58, 0x00, 0x38, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85DD, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x18, 0x00, 0x1F, 0x7E, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x09, 0x32, 0x00, 0x15, 0xDA, 0x80, 0x3F, 0x13, 0x80, 0x07, 0xA0, 0x00, 0x3C, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x3F, 0x00, 0x1F, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85DF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85E0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x50, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x04, 0x00, 0x10, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85E4, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x92, 0x00, 0x12, 0x54, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x46, 0x00, 0x1F, 0x99, 0x80, 0x12, 0x92, 0x00, 0x12, 0x7C, 0x00, 0x12, 0x58, 0x00, 0x22, 0x96, 0x00, 0x27, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85E5, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x28, 0x00, 0x10, 0x44, 0x00, 0x15, 0xF5, 0x00, 0x25, 0x19, 0x00, 0x19, 0xF6, 0x00, 0x17, 0x15, 0x80, 0x39, 0xFE, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85E6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x25, 0x55, 0x00, 0x25, 0x55, 0x00, 0x29, 0x0E, 0x80, 0x23, 0xF8, 0x00, 0x20, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x60, 0x20, 0x00, 0x4F, 0xFF, 0x80, 0x40, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85E8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0x9F, 0x80, 0x30, 0x00, 0x00, 0x24, 0x92, 0x00, 0x6C, 0xDB, 0x00, 0x18, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85E9, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x10, 0x1E, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x92, 0x00, 0x20, 0x54, 0x00, 0x13, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x56, 0x00, 0x09, 0x91, 0x80, 0x16, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x20, 0x92, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85EA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x0C, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x48, 0x00, 0x3F, 0xCF, 0x80, 0x12, 0x51, 0x00, 0x1F, 0xF1, 0x00, 0x12, 0x51, 0x00, 0x1F, 0xCA, 0x00, 0x02, 0x0A, 0x00, 0x3F, 0xE4, 0x00, 0x08, 0x8A, 0x00, 0x19, 0x0A, 0x00, 0x07, 0x11, 0x00, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85ED, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x0C, 0x1F, 0x80, 0x72, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x81, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA0, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x81, 0x00, 0x7F, 0x81, 0x00, 0x08, 0x83, 0x00, 0x73, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85F3, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x48, 0x04, 0x80, 0x4F, 0xFC, 0x80, 0x00, 0x03, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85F6, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x2F, 0xDF, 0x00, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x23, 0x8E, 0x00, 0x25, 0x55, 0x00, 0x29, 0x04, 0x80, 0x60, 0x20, 0x00, 0x42, 0x3F, 0x00, 0x42, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85F7, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x80, 0x00, 0x7F, 0x00, 0x3F, 0x0A, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x0A, 0x00, 0x00, 0x11, 0x00, 0x1E, 0x7F, 0x00, 0x01, 0xA1, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85F9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x7F, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0xC8, 0x80, 0x3E, 0x5C, 0x80, 0x22, 0x63, 0x80, 0x22, 0x7D, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85FA, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x11, 0x21, 0x00, 0x13, 0xF9, 0x00, 0x16, 0x41, 0x00, 0x1B, 0xF9, 0x00, 0x12, 0x41, 0x00, 0x13, 0xF9, 0x00, 0x13, 0xFD, 0x00, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x85FB, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x21, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x09, 0xEF, 0x00, 0x08, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x21, 0x92, 0x00, 0x26, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85FC, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x89, 0x00, 0x2F, 0xF1, 0x00, 0x00, 0x84, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x0A, 0x43, 0x00, 0x32, 0x29, 0x80, 0x61, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85FE, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x09, 0x00, 0x08, 0x3B, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x3F, 0x00, 0x49, 0x21, 0x00, 0x7F, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x1C, 0x3F, 0x00, 0x1A, 0x21, 0x00, 0x29, 0x3F, 0x00, 0x48, 0x12, 0x00, 0x08, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x85FF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8600, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x1C, 0x44, 0x00, 0x71, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8602, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x01, 0x21, 0x00, 0x09, 0x04, 0x80, 0x11, 0xFC, 0x80, 0x22, 0x08, 0x00, 0x05, 0x35, 0x00, 0x14, 0x52, 0x80, 0x27, 0xDE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8604, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x00, 0x01, 0x80, 0x7B, 0xC7, 0x00, 0x4A, 0x5C, 0x00, 0x7B, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x32, 0x00, 0x7F, 0xA2, 0x00, 0x04, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8605, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x19, 0xEF, 0x00, 0x13, 0x20, 0x00, 0x36, 0x40, 0x00, 0x6B, 0xEF, 0x80, 0x1A, 0xA2, 0x00, 0x13, 0xE2, 0x00, 0x32, 0xA2, 0x00, 0x73, 0xE2, 0x00, 0x10, 0x82, 0x00, 0x17, 0xF2, 0x00, 0x11, 0x42, 0x00, 0x13, 0x62, 0x00, 0x16, 0x36, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8606, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBD, 0x00, 0x1F, 0xC1, 0x00, 0x10, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8607, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x08, 0x00, 0x04, 0x00, 0x00, 0x0F, 0x83, 0x00, 0x11, 0x1C, 0x00, 0x22, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x7F, 0x80, 0x1F, 0xCC, 0x00, 0x12, 0x4E, 0x00, 0x1F, 0xD6, 0x00, 0x10, 0x55, 0x00, 0x01, 0x65, 0x00, 0x15, 0x44, 0x80, 0x25, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x860A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x24, 0x49, 0x00, 0x18, 0x55, 0x00, 0x12, 0x63, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x860B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x00, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x28, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x1B, 0x41, 0x00, 0x06, 0x7F, 0x00, 0x0C, 0x22, 0x00, 0x18, 0x63, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x860D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xC8, 0x00, 0x24, 0xBF, 0x80, 0x35, 0x88, 0x80, 0x2E, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x18, 0x80, 0x7F, 0xD1, 0x80, 0x2A, 0xB1, 0x00, 0x4A, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x860E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x80, 0x46, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8610, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x07, 0x00, 0x3D, 0xFC, 0x00, 0x00, 0x52, 0x00, 0x7E, 0x89, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x20, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0xC2, 0x00, 0x25, 0xAC, 0x00, 0x24, 0x18, 0x00, 0x3D, 0xE7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8611, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x25, 0x05, 0x00, 0x25, 0x55, 0x00, 0x29, 0x55, 0x80, 0x20, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x60, 0x80, 0x00, 0x43, 0xFF, 0x00, 0x4E, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8612, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x3E, 0x00, 0x78, 0x44, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x52, 0x00, 0x7E, 0x7E, 0x00, 0x08, 0x52, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x48, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8613, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x40, 0x00, 0x0E, 0x7C, 0x00, 0x78, 0xC4, 0x00, 0x09, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x08, 0xA5, 0x00, 0x09, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8616, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x11, 0x00, 0x1F, 0x0A, 0x00, 0x10, 0x7F, 0x80, 0x1F, 0x04, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8617, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x7F, 0x80, 0x11, 0x11, 0x00, 0x1F, 0x0A, 0x00, 0x10, 0x3F, 0x00, 0x2F, 0x04, 0x00, 0x29, 0x7F, 0x80, 0x0F, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8618, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x0F, 0x3C, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0x22, 0x00, 0x74, 0x34, 0x00, 0x07, 0x9E, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8619, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x3F, 0xDE, 0x00, 0x28, 0x13, 0x80, 0x2F, 0xA0, 0x00, 0x32, 0x1F, 0x00, 0x2F, 0x89, 0x00, 0x25, 0x06, 0x00, 0x3F, 0xD9, 0x80, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x09, 0x00, 0x35, 0x35, 0x00, 0x09, 0x09, 0x00, 0x33, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x861A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x00, 0x00, 0x07, 0x91, 0x00, 0x09, 0x0A, 0x00, 0x12, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x14, 0x84, 0x00, 0x14, 0x9F, 0x00, 0x1F, 0x84, 0x00, 0x14, 0x84, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x44, 0x00, 0x15, 0x44, 0x00, 0x25, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x861B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x11, 0x04, 0x00, 0x7F, 0xBF, 0x80, 0x11, 0x08, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x00, 0x80, 0x11, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x2A, 0x1F, 0x00, 0x2A, 0x11, 0x00, 0x33, 0x9F, 0x00, 0x20, 0x11, 0x00, 0x3F, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x861E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x1B, 0x08, 0x00, 0x31, 0x8F, 0x80, 0x6E, 0xD9, 0x00, 0x00, 0x11, 0x00, 0x3B, 0xB3, 0x00, 0x2A, 0x8A, 0x00, 0x3B, 0x8E, 0x00, 0x00, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x3B, 0x9B, 0x00, 0x6A, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8621, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0x90, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8622, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x80, 0x13, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8627, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x18, 0x00, 0x30, 0x1F, 0x00, 0x18, 0x10, 0x00, 0x69, 0xFF, 0x80, 0x31, 0x10, 0x80, 0x11, 0x7C, 0x00, 0x01, 0x11, 0x00, 0x79, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x09, 0x3D, 0x00, 0x0A, 0xD6, 0x00, 0x18, 0x25, 0x80, 0x34, 0xCC, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8629, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x3F, 0xD0, 0x00, 0x60, 0x3F, 0x80, 0x1F, 0x62, 0x00, 0x15, 0x16, 0x00, 0x7F, 0xCC, 0x00, 0x29, 0x16, 0x00, 0x3F, 0xE1, 0x80, 0x05, 0x10, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x862D, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x51, 0x00, 0x1F, 0x5F, 0x00, 0x17, 0xFD, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFD, 0x00, 0x15, 0x55, 0x00, 0x17, 0xFD, 0x00, 0x10, 0xE1, 0x00, 0x11, 0x59, 0x00, 0x16, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x862F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x30, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x60, 0xFC, 0x00, 0x30, 0x84, 0x00, 0x07, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x31, 0xFF, 0x00, 0x22, 0x49, 0x00, 0x60, 0x93, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8630, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x3E, 0x00, 0x18, 0x22, 0x00, 0x32, 0x3E, 0x00, 0x16, 0x22, 0x00, 0x0C, 0x7F, 0x00, 0x19, 0x55, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x2A, 0x21, 0x00, 0x6B, 0x12, 0x00, 0x49, 0x0C, 0x00, 0x08, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8636, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x49, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x7F, 0xAA, 0x80, 0x22, 0x2F, 0x80, 0x3C, 0x68, 0x00, 0x16, 0x48, 0x80, 0x62, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8638, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x7F, 0x22, 0x00, 0x14, 0x24, 0x00, 0x7F, 0x7F, 0x80, 0x55, 0xC8, 0x00, 0x67, 0x7F, 0x00, 0x41, 0x48, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x48, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x863A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x12, 0x00, 0x7F, 0x36, 0x00, 0x00, 0x24, 0x00, 0x55, 0x7F, 0x80, 0x49, 0xA4, 0x00, 0x55, 0x24, 0x00, 0x7F, 0x3F, 0x00, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x51, 0x3F, 0x00, 0x57, 0x24, 0x00, 0x79, 0x24, 0x00, 0x43, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x863C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x25, 0x55, 0x00, 0x25, 0x55, 0x00, 0x29, 0x05, 0x80, 0x20, 0x90, 0x00, 0x2F, 0x9F, 0x00, 0x20, 0x90, 0x00, 0x6F, 0x9F, 0x00, 0x40, 0x90, 0x00, 0x5F, 0x9F, 0x80, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x863D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x15, 0x00, 0x3E, 0x1F, 0x00, 0x2A, 0x15, 0x00, 0x3E, 0x9F, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0x8C, 0x00, 0x78, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x863F, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x0A, 0x48, 0x00, 0x32, 0xFF, 0x00, 0x15, 0x48, 0x00, 0x0B, 0x7F, 0x00, 0x3D, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8640, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3D, 0x5F, 0x00, 0x14, 0x92, 0x00, 0x6C, 0x99, 0x80, 0x01, 0x20, 0x00, 0x3F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8641, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7E, 0x1F, 0x80, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x09, 0xEF, 0x00, 0x2F, 0x29, 0x00, 0x29, 0xEF, 0x00, 0x2F, 0x28, 0x80, 0x79, 0xE7, 0x80, 0x06, 0x18, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x7A, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8642, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x00, 0x90, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0xE2, 0x00, 0x3E, 0x1C, 0x00, 0x08, 0xE3, 0x80, 0x2E, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8646, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x15, 0x00, 0x3E, 0x9F, 0x00, 0x2B, 0x35, 0x00, 0x3E, 0x5F, 0x00, 0x02, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x04, 0x88, 0x00, 0x38, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x864D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x80, 0x10, 0x81, 0x00, 0x10, 0x80, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x30, 0x80, 0x00, 0x20, 0x80, 0x80, 0x60, 0xC1, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x864E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x81, 0x00, 0x10, 0xFA, 0x00, 0x1F, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x22, 0x1F, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x864F, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFA, 0x00, 0x17, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x80, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x41, 0x14, 0x00, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8650, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x81, 0x00, 0x10, 0xFE, 0x00, 0x1F, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8651, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x10, 0xFA, 0x00, 0x17, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x10, 0x40, 0x00, 0x15, 0x24, 0x00, 0x25, 0x23, 0x00, 0x29, 0x09, 0x00, 0x40, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8652, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3F, 0xF8, 0x00, 0x20, 0x40, 0x00, 0x20, 0x7E, 0x00, 0x20, 0x40, 0x00, 0x2F, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x28, 0xFD, 0x00, 0x2B, 0x81, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x28, 0x90, 0x00, 0x28, 0x90, 0x00, 0x28, 0x90, 0x80, 0x69, 0x99, 0x80, 0x17, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8653, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x0F, 0x00, 0x10, 0x08, 0x00, 0x7E, 0x7F, 0x80, 0x12, 0x40, 0x80, 0x12, 0x48, 0x00, 0x12, 0x4F, 0x00, 0x12, 0x78, 0x00, 0x12, 0x48, 0x80, 0x12, 0x47, 0x80, 0x12, 0x40, 0x00, 0x12, 0x52, 0x00, 0x13, 0xD2, 0x00, 0x36, 0x52, 0x80, 0x20, 0x92, 0x80, 0x60, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8654, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x10, 0xFE, 0x00, 0x1F, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x04, 0x00, 0x11, 0x08, 0x00, 0x10, 0xD0, 0x00, 0x20, 0x60, 0x00, 0x21, 0x9C, 0x00, 0x2E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8655, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x1F, 0x80, 0x80, 0x10, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x17, 0xBC, 0x00, 0x14, 0xA4, 0x00, 0x19, 0x24, 0x80, 0x16, 0x47, 0x80, 0x26, 0x80, 0x00, 0x29, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8656, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFD, 0x00, 0x17, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3E, 0x00, 0x13, 0xE4, 0x00, 0x11, 0x28, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x60, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8657, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFD, 0x00, 0x17, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x10, 0x38, 0x00, 0x13, 0xC0, 0x00, 0x12, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x22, 0x08, 0x00, 0x62, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8658, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFD, 0x00, 0x17, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x62, 0x02, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8659, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFD, 0x00, 0x17, 0x80, 0x00, 0x10, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x20, 0x00, 0x10, 0xB0, 0x00, 0x12, 0x93, 0x00, 0x36, 0x89, 0x80, 0x2C, 0xB2, 0x80, 0x61, 0xE6, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x865A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFD, 0x00, 0x17, 0x80, 0x00, 0x10, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x10, 0x88, 0x00, 0x14, 0x89, 0x00, 0x36, 0x8B, 0x00, 0x22, 0x8A, 0x00, 0x60, 0x88, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x865B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x81, 0x00, 0x10, 0xFE, 0x00, 0x1F, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x17, 0x9E, 0x00, 0x10, 0x90, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x865C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBD, 0x00, 0x1F, 0xC0, 0x80, 0x10, 0x7F, 0x80, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x20, 0xC1, 0x00, 0x27, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x865D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xAA, 0x80, 0x24, 0x6A, 0x80, 0x27, 0x4A, 0x80, 0x3C, 0x5A, 0x80, 0x24, 0x96, 0x80, 0x23, 0xB4, 0x80, 0x20, 0x2D, 0x80, 0x29, 0x09, 0x00, 0x29, 0x01, 0x00, 0x29, 0x07, 0x80, 0x49, 0x80, 0x80, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x865E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBD, 0x00, 0x1F, 0xE1, 0x00, 0x10, 0xFF, 0x00, 0x11, 0xFE, 0x00, 0x15, 0x02, 0x00, 0x15, 0xFE, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x20, 0x50, 0x00, 0x21, 0x8C, 0x00, 0x2E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x865F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x91, 0x00, 0x3E, 0x9E, 0x00, 0x00, 0xF0, 0x80, 0x3F, 0x9F, 0x80, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x3E, 0x9E, 0x00, 0x22, 0x92, 0x00, 0x02, 0x92, 0x00, 0x02, 0x92, 0x80, 0x05, 0x23, 0x80, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8660, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x40, 0x80, 0x33, 0x48, 0x00, 0x61, 0xCF, 0x00, 0x12, 0x78, 0x00, 0x12, 0x48, 0x80, 0x0C, 0x47, 0x80, 0x04, 0x40, 0x00, 0x0C, 0x52, 0x00, 0x1A, 0x52, 0x00, 0x13, 0x52, 0x80, 0x31, 0x92, 0x80, 0x60, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8661, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x10, 0xFD, 0x00, 0x17, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x88, 0x00, 0x14, 0x89, 0x00, 0x14, 0x89, 0x00, 0x17, 0x8F, 0x00, 0x30, 0x88, 0x00, 0x2F, 0xFF, 0x80, 0x61, 0x04, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8662, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x0E, 0x0F, 0x00, 0x78, 0x08, 0x00, 0x02, 0x7F, 0x80, 0x2B, 0x40, 0x80, 0x6D, 0x48, 0x00, 0x44, 0x4F, 0x00, 0x02, 0x78, 0x00, 0x7F, 0xC8, 0x80, 0x02, 0x47, 0x80, 0x22, 0x40, 0x00, 0x32, 0x52, 0x00, 0x12, 0x52, 0x00, 0x02, 0x52, 0x80, 0x02, 0x92, 0x80, 0x0E, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8663, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3A, 0x8F, 0x00, 0x02, 0x88, 0x00, 0x02, 0x7F, 0x80, 0x7F, 0xC0, 0x80, 0x02, 0x48, 0x00, 0x0A, 0x4F, 0x00, 0x2A, 0x78, 0x00, 0x2E, 0x48, 0x80, 0x2A, 0x47, 0x80, 0x2A, 0x40, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x3E, 0xD2, 0x80, 0x62, 0x92, 0x80, 0x01, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8664, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x07, 0x0F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x24, 0x48, 0x00, 0x27, 0x4F, 0x00, 0x3C, 0x78, 0x00, 0x24, 0x48, 0x80, 0x23, 0xC7, 0x80, 0x20, 0x40, 0x00, 0x29, 0x52, 0x00, 0x29, 0x52, 0x00, 0x29, 0xD2, 0x80, 0x48, 0x52, 0x80, 0x10, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8667, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0xE8, 0x00, 0x24, 0x48, 0x00, 0x27, 0xBF, 0x80, 0x3C, 0x48, 0x00, 0x27, 0xD0, 0x00, 0x25, 0x1F, 0x80, 0x2F, 0xD0, 0x80, 0x39, 0x00, 0x80, 0x2F, 0xC0, 0x80, 0x2F, 0xC0, 0x80, 0x29, 0x01, 0x00, 0x2F, 0xC1, 0x00, 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8669, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x15, 0x0F, 0x00, 0x35, 0x88, 0x00, 0x64, 0xFF, 0x80, 0x04, 0x20, 0x80, 0x3F, 0xA8, 0x00, 0x20, 0xAF, 0x00, 0x3F, 0xB8, 0x00, 0x20, 0xA8, 0x80, 0x3F, 0xA7, 0x80, 0x04, 0x20, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x35, 0xAA, 0x80, 0x64, 0xCA, 0x80, 0x1C, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x866B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0xFE, 0x00, 0x07, 0x83, 0x00, 0x3C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x866C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0x20, 0x80, 0x39, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x866E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7C, 0x00, 0x0A, 0x48, 0x00, 0x3F, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x28, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0E, 0x89, 0x00, 0x72, 0x89, 0x00, 0x21, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x866F, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x1F, 0x00, 0x05, 0x71, 0x00, 0x05, 0x01, 0x00, 0x07, 0x81, 0x00, 0x1C, 0x81, 0x00, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8671, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x74, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x04, 0x00, 0x1F, 0xF4, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x1F, 0xF4, 0x00, 0x01, 0x04, 0x00, 0x01, 0x26, 0x00, 0x03, 0xF2, 0x80, 0x3E, 0x1B, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8675, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7F, 0x4B, 0x00, 0x49, 0x4D, 0x00, 0x49, 0x59, 0x00, 0x49, 0x69, 0x00, 0x49, 0xC9, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x4B, 0x00, 0x0A, 0x48, 0x00, 0x0A, 0x40, 0x00, 0x0F, 0x40, 0x80, 0x39, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8676, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x39, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8677, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x39, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8679, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x39, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x867A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x71, 0x00, 0x32, 0x00, 0x80, 0x23, 0x00, 0x80, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x867B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0F, 0xB0, 0x00, 0x78, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x867C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x0A, 0xFE, 0x00, 0x3F, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x28, 0x20, 0x00, 0x0A, 0x40, 0x00, 0x0E, 0x81, 0x00, 0x72, 0x81, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x867D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x867E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x28, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x79, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x867F, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x18, 0xA8, 0x00, 0x60, 0x94, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8680, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x12, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x92, 0x00, 0x24, 0x92, 0x00, 0x20, 0x92, 0x00, 0x50, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x12, 0x10, 0x00, 0x14, 0x12, 0x00, 0x18, 0x1F, 0x00, 0x11, 0xE1, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8681, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x32, 0x00, 0x09, 0x12, 0x00, 0x3F, 0x02, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x48, 0x00, 0x3E, 0x50, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x50, 0x00, 0x0E, 0x48, 0x00, 0x7A, 0x84, 0x00, 0x21, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8682, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x15, 0x7F, 0x00, 0x1F, 0x01, 0x00, 0x04, 0x09, 0x00, 0x05, 0xFD, 0x00, 0x07, 0x01, 0x00, 0x39, 0x01, 0x00, 0x10, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8688, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF7, 0x80, 0x10, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x72, 0x00, 0x53, 0xCF, 0x80, 0x7E, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x3E, 0xC2, 0x00, 0x62, 0x82, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x868A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x41, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x14, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x31, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x868B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x55, 0x39, 0x00, 0x55, 0x29, 0x00, 0x55, 0x29, 0x00, 0x7D, 0x6D, 0x00, 0x11, 0x45, 0x00, 0x15, 0x01, 0x00, 0x15, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x65, 0x01, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x868C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x0F, 0x80, 0x2A, 0xF8, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x0F, 0x08, 0x00, 0x39, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x868D, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x7E, 0x89, 0x00, 0x52, 0x8B, 0x00, 0x52, 0xEE, 0x00, 0x52, 0x88, 0x00, 0x52, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x14, 0x88, 0x00, 0x14, 0x88, 0x00, 0x3E, 0x88, 0x80, 0x62, 0xE9, 0x80, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8691, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x52, 0xFE, 0x00, 0x52, 0x42, 0x00, 0x7E, 0x46, 0x00, 0x10, 0x6C, 0x00, 0x10, 0x38, 0x00, 0x14, 0x10, 0x00, 0x14, 0x38, 0x00, 0x3E, 0x6C, 0x00, 0x62, 0xC6, 0x00, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8693, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x08, 0x79, 0x00, 0x08, 0x09, 0x00, 0x3E, 0x09, 0x00, 0x2A, 0x79, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0xF9, 0x00, 0x3E, 0x89, 0x00, 0x08, 0x09, 0x00, 0x08, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0F, 0x09, 0x00, 0x38, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8695, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x03, 0xFF, 0x80, 0x7E, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8696, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x64, 0x00, 0x3E, 0x44, 0x80, 0x62, 0xC4, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8698, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x13, 0x00, 0x10, 0x11, 0x00, 0x7E, 0x10, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x7E, 0x38, 0x00, 0x10, 0x28, 0x00, 0x10, 0x28, 0x00, 0x14, 0x28, 0x00, 0x14, 0x68, 0x00, 0x3E, 0x48, 0x80, 0x62, 0xC9, 0x80, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x869A, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x10, 0x78, 0x00, 0x7E, 0x40, 0x00, 0x52, 0x40, 0x00, 0x52, 0x7F, 0x80, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0xC2, 0x00, 0x3E, 0x82, 0x00, 0x62, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x869C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x53, 0xFF, 0x80, 0x7E, 0x12, 0x00, 0x10, 0x12, 0x00, 0x10, 0x12, 0x00, 0x14, 0x32, 0x00, 0x14, 0x22, 0x00, 0x1E, 0x62, 0x00, 0x32, 0xC2, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x869D, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x09, 0xF0, 0x00, 0x0A, 0x20, 0x00, 0x3F, 0x24, 0x00, 0x2A, 0x3E, 0x00, 0x2B, 0xE0, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x22, 0x00, 0x3E, 0x3F, 0x00, 0x29, 0xE0, 0x00, 0x0A, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x72, 0x21, 0x00, 0x20, 0x21, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86A1, { 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x04, 0x00, 0x10, 0x24, 0x00, 0x7E, 0x66, 0x00, 0x52, 0x42, 0x00, 0x52, 0xC3, 0x00, 0x53, 0x81, 0x80, 0x52, 0x7E, 0x00, 0x7E, 0x12, 0x00, 0x10, 0x12, 0x00, 0x10, 0x32, 0x00, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x3E, 0x66, 0x00, 0x62, 0xC4, 0x00, 0x01, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86A3, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x88, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x21, 0x00, 0x0F, 0x4F, 0x00, 0x39, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0x22, 0x00, 0x08, 0x94, 0x00, 0x04, 0x48, 0x00, 0x00, 0x70, 0x00, 0x03, 0x8C, 0x00, 0x3C, 0x43, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86A6, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x52, 0x42, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x62, 0x42, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86A7, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x28, 0x00, 0x7E, 0x6C, 0x00, 0x52, 0x46, 0x00, 0x52, 0x83, 0x00, 0x53, 0x45, 0x80, 0x52, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x62, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86A8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0x36, 0x00, 0x0F, 0x22, 0x00, 0x39, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86A9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x02, 0x02, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xC0, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86AA, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x32, 0x00, 0x08, 0x1A, 0x00, 0x7F, 0x0A, 0x00, 0x49, 0x02, 0x00, 0x49, 0x02, 0x00, 0x49, 0x62, 0x00, 0x49, 0x32, 0x00, 0x7F, 0x12, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x03, 0x80, 0x0A, 0x1E, 0x00, 0x0F, 0x72, 0x00, 0x39, 0x02, 0x00, 0x60, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86AB, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x7E, 0xC1, 0x00, 0x52, 0x81, 0x00, 0x52, 0xF9, 0x00, 0x53, 0xC9, 0x00, 0x52, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x10, 0x7B, 0x00, 0x10, 0x42, 0x00, 0x14, 0x4E, 0x00, 0x14, 0x40, 0x00, 0x1E, 0x40, 0x80, 0x72, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86AC, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x28, 0xD4, 0x00, 0x0A, 0x50, 0x00, 0x0E, 0x50, 0x00, 0x72, 0x91, 0x00, 0x21, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86AD, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x52, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x40, 0x00, 0x52, 0x50, 0x00, 0x7E, 0x53, 0x00, 0x10, 0x56, 0x00, 0x10, 0x5C, 0x00, 0x14, 0x50, 0x00, 0x14, 0xD0, 0x00, 0x3E, 0x90, 0x80, 0x63, 0x99, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86AF, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x38, 0x00, 0x7F, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x3F, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x39, 0x22, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86B0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x49, 0x00, 0x49, 0x49, 0x00, 0x49, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0F, 0x49, 0x00, 0x39, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x49, 0x50, 0x00, 0x49, 0xD0, 0x00, 0x49, 0x10, 0x00, 0x49, 0x1F, 0x00, 0x49, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x1F, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x39, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B3, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x10, 0x7C, 0x00, 0x7E, 0x44, 0x00, 0x52, 0x44, 0x00, 0x52, 0x44, 0x00, 0x52, 0x7F, 0x80, 0x52, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x14, 0x76, 0x00, 0x14, 0xC2, 0x00, 0x3E, 0x02, 0x80, 0x62, 0xFB, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B4, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x7D, 0x84, 0x00, 0x55, 0x2F, 0x80, 0x57, 0x24, 0x80, 0x55, 0xA4, 0x80, 0x54, 0xC4, 0x80, 0x54, 0x44, 0x80, 0x7C, 0x84, 0x80, 0x10, 0xAC, 0x80, 0x15, 0x28, 0x80, 0x15, 0xE8, 0x80, 0x3C, 0x29, 0x80, 0x64, 0x19, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x49, 0x7A, 0x00, 0x49, 0x4A, 0x00, 0x49, 0x4A, 0x00, 0x49, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x7A, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0F, 0x02, 0x00, 0x39, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B6, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x39, 0x22, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x3F, 0x00, 0x49, 0x21, 0x00, 0x49, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x39, 0x7F, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B8, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x10, 0x78, 0x00, 0x7E, 0x40, 0x00, 0x52, 0x40, 0x00, 0x52, 0x7F, 0x80, 0x52, 0x44, 0x00, 0x52, 0x44, 0x00, 0x52, 0x5C, 0x00, 0x7E, 0x47, 0x00, 0x10, 0x45, 0x80, 0x14, 0x44, 0x00, 0x14, 0xC4, 0x00, 0x3E, 0x84, 0x00, 0x62, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86B9, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x7C, 0xC2, 0x00, 0x54, 0xBF, 0x80, 0x54, 0x82, 0x00, 0x55, 0x82, 0x00, 0x56, 0x92, 0x00, 0x54, 0x9A, 0x00, 0x7C, 0x8A, 0x00, 0x10, 0x82, 0x00, 0x14, 0x82, 0x00, 0x14, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x64, 0x82, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86BA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0A, 0xFF, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x28, 0x92, 0x00, 0x0B, 0xFF, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86BF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x49, 0x08, 0x00, 0x49, 0x18, 0x00, 0x49, 0x10, 0x00, 0x49, 0x32, 0x00, 0x7F, 0x66, 0x00, 0x08, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x19, 0x00, 0x0F, 0x31, 0x00, 0x39, 0x27, 0x80, 0x60, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86C0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x62, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86C1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x21, 0x00, 0x7E, 0x21, 0x00, 0x52, 0x61, 0x00, 0x52, 0x43, 0x00, 0x52, 0xC2, 0x00, 0x52, 0x8E, 0x00, 0x7E, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x62, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86C3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0x91, 0x00, 0x52, 0xB9, 0x00, 0x7E, 0xA9, 0x00, 0x10, 0xAD, 0x00, 0x10, 0xC5, 0x00, 0x14, 0x81, 0x00, 0x14, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x62, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86C4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86C5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x0F, 0x80, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86C6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x39, 0x22, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86C7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x3E, 0x21, 0x80, 0x2A, 0x26, 0x00, 0x08, 0x38, 0x00, 0x0A, 0x20, 0x00, 0x09, 0x20, 0x80, 0x0F, 0xA0, 0x80, 0x38, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86C9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x49, 0xC1, 0x80, 0x49, 0x3E, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x0F, 0x11, 0x00, 0x39, 0x17, 0x00, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86CA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xFC, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x02, 0x40, 0x00, 0x02, 0x7E, 0x00, 0x06, 0x40, 0x00, 0x09, 0xFF, 0x80, 0x30, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x80, 0x1F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86CD, { 0x00, 0x00, 0x00, 0x01, 0x81, 0x00, 0x30, 0xC3, 0x00, 0x18, 0x46, 0x00, 0x08, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x40, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x07, 0xFF, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86CE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x54, 0xFF, 0x80, 0x54, 0x90, 0x00, 0x54, 0x90, 0x00, 0x54, 0x9F, 0x00, 0x7C, 0x91, 0x00, 0x10, 0x91, 0x00, 0x14, 0x91, 0x00, 0x1D, 0x91, 0x00, 0x35, 0x31, 0x00, 0x63, 0x23, 0x00, 0x06, 0x62, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86CF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x44, 0x00, 0x3F, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x47, 0x00, 0x2B, 0x92, 0x00, 0x3E, 0x10, 0x00, 0x28, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x12, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86D0, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x0A, 0x2A, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xFE, 0x00, 0x28, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0E, 0xAA, 0x00, 0x72, 0xAA, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86D1, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x10, 0x64, 0x00, 0x7E, 0x4E, 0x00, 0x52, 0xFB, 0x00, 0x52, 0x00, 0x00, 0x52, 0x08, 0x00, 0x52, 0x48, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0xC8, 0x00, 0x10, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x62, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86D2, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x7E, 0x00, 0x7E, 0xC6, 0x00, 0x53, 0xAC, 0x00, 0x52, 0x18, 0x00, 0x52, 0x30, 0x00, 0x52, 0x6C, 0x00, 0x7F, 0xC7, 0x80, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x62, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86D4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x3E, 0xA2, 0x80, 0x2A, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x0A, 0x80, 0x80, 0x0F, 0x80, 0x80, 0x38, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86D5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x52, 0x20, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x41, 0x00, 0x52, 0xC1, 0x00, 0x7F, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x62, 0x41, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86D7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86D8, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x46, 0x00, 0x08, 0x28, 0x00, 0x08, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x29, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86D9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x31, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86DA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x11, 0xF8, 0x80, 0x10, 0x40, 0x80, 0x7E, 0x44, 0x80, 0x52, 0x44, 0x80, 0x52, 0xF4, 0x80, 0x52, 0x94, 0x80, 0x52, 0x94, 0x80, 0x7F, 0xD4, 0x80, 0x10, 0x74, 0x80, 0x10, 0x10, 0x80, 0x14, 0x10, 0x80, 0x14, 0x30, 0x80, 0x3E, 0x20, 0x80, 0x62, 0x60, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86DB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x1C, 0x00, 0x08, 0x1C, 0x00, 0x0A, 0x2A, 0x00, 0x0E, 0x2A, 0x00, 0x39, 0x29, 0x00, 0x00, 0x49, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86DC, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x7C, 0xC9, 0x00, 0x54, 0x89, 0x00, 0x54, 0xFF, 0x80, 0x55, 0x89, 0x00, 0x56, 0x89, 0x00, 0x54, 0x89, 0x00, 0x7C, 0xBF, 0x00, 0x10, 0x88, 0x00, 0x14, 0x88, 0x00, 0x14, 0x98, 0x00, 0x3C, 0x90, 0x00, 0x64, 0xB0, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86DE, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86DF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0xA2, 0x80, 0x2A, 0x22, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x00, 0x0A, 0x08, 0x00, 0x0E, 0x14, 0x00, 0x31, 0x62, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86E0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x7C, 0x22, 0x00, 0x54, 0x62, 0x00, 0x54, 0xC6, 0x00, 0x55, 0x8C, 0x00, 0x54, 0x00, 0x00, 0x54, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0xA4, 0x80, 0x14, 0xA4, 0x80, 0x14, 0xA4, 0x80, 0x3D, 0xAC, 0x80, 0x65, 0x29, 0x80, 0x03, 0x7B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86E3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86E4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x42, 0x00, 0x2B, 0x81, 0x80, 0x2A, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0x42, 0x00, 0x0F, 0xC2, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86E5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x31, 0x00, 0x7F, 0x63, 0x00, 0x49, 0xD6, 0x00, 0x49, 0x0C, 0x00, 0x49, 0x18, 0x00, 0x49, 0x74, 0x00, 0x7F, 0x0F, 0x80, 0x08, 0x18, 0x80, 0x08, 0x31, 0x80, 0x0A, 0xED, 0x00, 0x0A, 0x03, 0x00, 0x0F, 0x06, 0x00, 0x39, 0x1C, 0x00, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86E7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7D, 0xFE, 0x80, 0x55, 0x12, 0x80, 0x55, 0x52, 0x80, 0x55, 0x52, 0x80, 0x55, 0x5A, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x34, 0x80, 0x11, 0x4A, 0x80, 0x15, 0x49, 0x80, 0x15, 0x90, 0x80, 0x3D, 0x00, 0x80, 0x65, 0x00, 0x80, 0x01, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0xE4, 0x00, 0x08, 0xB4, 0x00, 0x0E, 0x94, 0x80, 0x39, 0x84, 0x80, 0x63, 0x03, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86EC, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x68, 0x85, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86ED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x8F, 0x00, 0x3F, 0xF0, 0x80, 0x2A, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x31, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86EE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x12, 0x12, 0x00, 0x36, 0x13, 0x00, 0x6C, 0x11, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x00, 0x7E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86EF, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x12, 0x00, 0x49, 0x12, 0x00, 0x49, 0x14, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x08, 0x00, 0x7F, 0x18, 0x00, 0x08, 0x33, 0x00, 0x08, 0x7E, 0x00, 0x0A, 0xD0, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x80, 0x39, 0x19, 0x80, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F0, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x7F, 0xFE, 0x00, 0x04, 0x24, 0x00, 0x07, 0x64, 0x00, 0x3C, 0x24, 0x00, 0x04, 0x35, 0x00, 0x14, 0xC5, 0x00, 0x08, 0x83, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x0A, 0xFE, 0x00, 0x3F, 0x10, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x56, 0x00, 0x2A, 0x58, 0x00, 0x2A, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x0E, 0x48, 0x00, 0x72, 0x44, 0x00, 0x20, 0x83, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F2, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x2E, 0x00, 0x0A, 0xF0, 0x00, 0x3F, 0x28, 0x00, 0x2A, 0x11, 0x00, 0x2A, 0x69, 0x00, 0x2B, 0x87, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x28, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0E, 0x49, 0x00, 0x72, 0x49, 0x00, 0x20, 0x87, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F3, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x11, 0x5F, 0x00, 0x15, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x55, 0x5F, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x7D, 0x55, 0x00, 0x51, 0x55, 0x00, 0x15, 0x55, 0x00, 0x1C, 0x57, 0x00, 0x64, 0x84, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0A, 0xFF, 0x00, 0x3F, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x6C, 0x00, 0x2B, 0x83, 0x00, 0x3E, 0x44, 0x00, 0x28, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x72, 0x44, 0x00, 0x20, 0x84, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x80, 0x08, 0xC9, 0x80, 0x7F, 0x49, 0x00, 0x49, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x71, 0x41, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86F9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x7C, 0x64, 0x00, 0x54, 0x18, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x65, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86FA, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x52, 0x49, 0x00, 0x52, 0x49, 0x00, 0x52, 0x49, 0x00, 0x52, 0xAA, 0x80, 0x7E, 0xAA, 0x80, 0x10, 0x1C, 0x00, 0x10, 0x14, 0x00, 0x14, 0x14, 0x00, 0x14, 0x36, 0x00, 0x3E, 0x22, 0x00, 0x62, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86FB, { 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x04, 0x00, 0x10, 0x66, 0x00, 0x7C, 0xC3, 0x00, 0x55, 0x81, 0x80, 0x54, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x7C, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x1E, 0x64, 0x80, 0x72, 0x44, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86FC, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0x91, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x62, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x86FD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0F, 0x7F, 0x00, 0x39, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x86FE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x3A, 0x00, 0x08, 0xE9, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x80, 0x2A, 0x28, 0x80, 0x3E, 0x39, 0x00, 0x28, 0x65, 0x00, 0x09, 0xA6, 0x00, 0x0A, 0x22, 0x00, 0x0E, 0x26, 0x80, 0x39, 0x29, 0x80, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x0F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x40, 0x80, 0x17, 0xFC, 0x80, 0x24, 0x44, 0x80, 0x07, 0xFC, 0x80, 0x00, 0x40, 0x80, 0x00, 0x44, 0x80, 0x00, 0xFE, 0x80, 0x0F, 0x02, 0x80, 0x00, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8702, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x3E, 0x62, 0x00, 0x2B, 0x94, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x36, 0x00, 0x2A, 0xC9, 0x80, 0x2A, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x31, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8703, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x12, 0x24, 0x00, 0x12, 0xF8, 0x00, 0x2F, 0x07, 0x80, 0x28, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x28, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8704, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x52, 0xBF, 0x00, 0x52, 0x80, 0x00, 0x52, 0x80, 0x00, 0x52, 0xFF, 0x80, 0x7E, 0xA4, 0x00, 0x10, 0xA4, 0x80, 0x10, 0xA5, 0x80, 0x14, 0xA5, 0x00, 0x15, 0xA6, 0x00, 0x3F, 0x22, 0x00, 0x62, 0x3B, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8705, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x52, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x62, 0x91, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8706, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x14, 0x00, 0x0F, 0x34, 0x00, 0x39, 0x24, 0x80, 0x60, 0x64, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8707, { 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x78, 0x00, 0x7F, 0x40, 0x00, 0x04, 0x7F, 0x80, 0x05, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x74, 0x44, 0x00, 0x04, 0x44, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8708, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0xA2, 0x00, 0x3E, 0xA2, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x0B, 0xFF, 0x80, 0x0E, 0x18, 0x00, 0x39, 0x24, 0x00, 0x00, 0x42, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8709, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x80, 0x10, 0xFE, 0x00, 0x10, 0x29, 0x00, 0x7E, 0x6D, 0x80, 0x52, 0x44, 0x80, 0x52, 0x00, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x02, 0x00, 0x7E, 0x04, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x72, 0x08, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x870A, { 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x10, 0x71, 0x00, 0x11, 0xC5, 0x00, 0x7C, 0x45, 0x00, 0x54, 0x45, 0x00, 0x55, 0xF5, 0x00, 0x54, 0x45, 0x00, 0x54, 0x45, 0x00, 0x54, 0xE5, 0x00, 0x7C, 0xD5, 0x00, 0x11, 0x55, 0x00, 0x11, 0x45, 0x00, 0x14, 0x41, 0x00, 0x3C, 0x41, 0x00, 0x64, 0x41, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x870B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x52, 0x82, 0x00, 0x52, 0xFE, 0x00, 0x52, 0x82, 0x00, 0x52, 0x82, 0x00, 0x7E, 0xFE, 0x80, 0x10, 0x89, 0x80, 0x10, 0x8B, 0x00, 0x14, 0x8C, 0x00, 0x14, 0x84, 0x00, 0x3E, 0x86, 0x00, 0x62, 0xF3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x870D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x14, 0x00, 0x7E, 0x36, 0x00, 0x52, 0x63, 0x00, 0x52, 0xC1, 0x80, 0x52, 0x3E, 0x00, 0x52, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x1E, 0x6B, 0x00, 0x72, 0xC9, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x870E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0F, 0x41, 0x00, 0x39, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x870F, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x2A, 0x00, 0x49, 0x6B, 0x00, 0x49, 0xC9, 0x80, 0x7F, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x12, 0x00, 0x0A, 0x13, 0x80, 0x0A, 0x30, 0x80, 0x0F, 0x20, 0x80, 0x39, 0x60, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8710, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x7F, 0xE4, 0x00, 0x54, 0x9F, 0x80, 0x54, 0x84, 0x80, 0x54, 0x84, 0x80, 0x54, 0x84, 0x80, 0x57, 0xF4, 0x80, 0x7C, 0x84, 0x80, 0x10, 0x8C, 0x80, 0x15, 0xA8, 0x80, 0x15, 0x28, 0x80, 0x3D, 0x69, 0x80, 0x65, 0xD9, 0x00, 0x03, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8711, { 0x00, 0x00, 0x00, 0x7C, 0x03, 0x80, 0x09, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x3C, 0x9F, 0x00, 0x04, 0x90, 0x00, 0x2C, 0x90, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8712, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x13, 0xC7, 0x00, 0x10, 0x5C, 0x00, 0x7C, 0x44, 0x00, 0x54, 0x84, 0x00, 0x54, 0x94, 0x00, 0x55, 0xD7, 0x00, 0x54, 0x54, 0x00, 0x55, 0x54, 0x00, 0x7D, 0x54, 0x00, 0x11, 0x54, 0x00, 0x15, 0xD4, 0x00, 0x14, 0x9F, 0x00, 0x3C, 0x80, 0x00, 0x65, 0xE0, 0x00, 0x03, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8713, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x80, 0x13, 0xC7, 0x00, 0x10, 0xBC, 0x00, 0x7C, 0x84, 0x00, 0x55, 0x84, 0x00, 0x55, 0x04, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x44, 0x00, 0x54, 0x44, 0x00, 0x7D, 0x44, 0x00, 0x13, 0x44, 0x00, 0x15, 0xC4, 0x00, 0x14, 0xBF, 0x80, 0x3D, 0xC0, 0x00, 0x65, 0x70, 0x00, 0x03, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8714, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0x80, 0x80, 0x53, 0x80, 0x80, 0x52, 0x7C, 0x80, 0x52, 0x54, 0x80, 0x7E, 0x54, 0x80, 0x10, 0x7C, 0x80, 0x10, 0x54, 0x80, 0x14, 0x54, 0x80, 0x14, 0x7C, 0x80, 0x3E, 0x01, 0x80, 0x62, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8715, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x3E, 0x48, 0x00, 0x28, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x0E, 0x89, 0x00, 0x7A, 0x89, 0x00, 0x21, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8717, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x3F, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x08, 0xAA, 0x00, 0x0A, 0xC6, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8718, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x47, 0x80, 0x3E, 0x44, 0x80, 0x2B, 0xF4, 0x80, 0x2A, 0x44, 0x80, 0x2A, 0x44, 0x80, 0x2A, 0x44, 0x80, 0x3F, 0xFC, 0x80, 0x2A, 0x44, 0x80, 0x08, 0xA4, 0x80, 0x08, 0x94, 0x80, 0x0F, 0x97, 0x80, 0x39, 0x14, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8719, { 0x00, 0x00, 0x00, 0x10, 0x8E, 0x00, 0x10, 0x82, 0x00, 0x10, 0x92, 0x00, 0x7F, 0xD2, 0x00, 0x54, 0xB3, 0x00, 0x54, 0xA1, 0x00, 0x54, 0xA9, 0x80, 0x55, 0xC8, 0x00, 0x55, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x10, 0x98, 0x00, 0x14, 0x91, 0x00, 0x14, 0x91, 0x00, 0x3C, 0x97, 0x00, 0x64, 0x9D, 0x00, 0x00, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x871A, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x07, 0xDF, 0x80, 0x39, 0x10, 0x00, 0x06, 0x10, 0x00, 0x38, 0x50, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x871C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x00, 0x40, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x05, 0x00, 0x23, 0xFC, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x871E, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0A, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x0F, 0x22, 0x00, 0x39, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x871F, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x52, 0x21, 0x00, 0x52, 0x4F, 0x80, 0x52, 0xF0, 0x80, 0x52, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x62, 0x41, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8721, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x24, 0x00, 0x52, 0x24, 0x00, 0x52, 0x24, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x62, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8722, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x18, 0x00, 0x3F, 0x12, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x22, 0x00, 0x3E, 0xFF, 0x00, 0x28, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0E, 0xAA, 0x00, 0x72, 0xAA, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8723, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0xC6, 0x00, 0x10, 0x44, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x10, 0x00, 0x52, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x64, 0x00, 0x3E, 0x44, 0x80, 0x62, 0xC6, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8725, { 0x00, 0x00, 0x00, 0x10, 0x83, 0x00, 0x10, 0x9E, 0x00, 0x10, 0x90, 0x00, 0x7C, 0x90, 0x00, 0x57, 0xF0, 0x00, 0x54, 0x9F, 0x80, 0x54, 0x92, 0x00, 0x55, 0xD2, 0x00, 0x7D, 0xB2, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x10, 0x92, 0x00, 0x14, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x64, 0xA2, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8728, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x09, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x09, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0x08, 0x00, 0x10, 0x48, 0x00, 0x14, 0x4F, 0x00, 0x14, 0x48, 0x00, 0x3E, 0xE8, 0x00, 0x62, 0xB8, 0x00, 0x01, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8729, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x52, 0xBE, 0x80, 0x52, 0x88, 0x80, 0x52, 0x88, 0x80, 0x52, 0xBE, 0x80, 0x7E, 0x88, 0x80, 0x10, 0xBE, 0x80, 0x10, 0xA2, 0x80, 0x14, 0xA2, 0x80, 0x14, 0xBE, 0x80, 0x1E, 0x80, 0x80, 0x72, 0x80, 0x80, 0x01, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x872E, { 0x00, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x7D, 0xFF, 0x80, 0x54, 0x08, 0x00, 0x54, 0x08, 0x00, 0x55, 0xE9, 0x00, 0x55, 0x29, 0x00, 0x7D, 0x2B, 0x00, 0x11, 0x2A, 0x00, 0x11, 0xEA, 0x00, 0x14, 0x0C, 0x00, 0x14, 0xEC, 0x80, 0x3D, 0x96, 0x80, 0x64, 0x23, 0x80, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x872F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x52, 0xFE, 0x00, 0x52, 0x28, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x44, 0x00, 0x7E, 0x92, 0x00, 0x11, 0x11, 0x80, 0x10, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x62, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8731, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x52, 0x91, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0xA1, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x10, 0x88, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x62, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8732, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x52, 0x54, 0x00, 0x52, 0x56, 0x00, 0x52, 0xD3, 0x00, 0x53, 0x91, 0x80, 0x7E, 0x10, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x14, 0x46, 0x00, 0x3E, 0xFC, 0x00, 0x62, 0x36, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8734, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x52, 0x7E, 0x00, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x7E, 0x00, 0x7E, 0x20, 0x00, 0x10, 0x7F, 0x80, 0x10, 0xCA, 0x80, 0x15, 0x92, 0x80, 0x14, 0x24, 0x80, 0x1E, 0xC9, 0x80, 0x72, 0x11, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8737, { 0x00, 0x00, 0x00, 0x10, 0x52, 0x00, 0x10, 0xD3, 0x00, 0x10, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0x28, 0x00, 0x52, 0x28, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x24, 0x00, 0x7E, 0x42, 0x00, 0x10, 0xFF, 0x00, 0x11, 0xC5, 0x80, 0x14, 0x44, 0x00, 0x14, 0x5C, 0x00, 0x1E, 0x41, 0x00, 0x72, 0x43, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8739, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x44, 0x00, 0x52, 0x70, 0x00, 0x52, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x10, 0xB9, 0x00, 0x10, 0xA9, 0x00, 0x14, 0xAD, 0x00, 0x14, 0xC5, 0x00, 0x3E, 0x81, 0x00, 0x62, 0x81, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x873A, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x10, 0xE7, 0x00, 0x10, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x52, 0xE7, 0x00, 0x52, 0x81, 0x00, 0x52, 0x81, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x64, 0x00, 0x3E, 0x44, 0x80, 0x62, 0xC4, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x873B, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x08, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x72, 0x41, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x873C, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x10, 0xCC, 0x00, 0x7E, 0x88, 0x00, 0x52, 0xFF, 0x80, 0x53, 0x88, 0x00, 0x52, 0x88, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x62, 0x88, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x873D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x55, 0xDD, 0x00, 0x7D, 0x55, 0x00, 0x11, 0x55, 0x00, 0x11, 0x55, 0x00, 0x15, 0xBB, 0x00, 0x15, 0x11, 0x00, 0x3D, 0x11, 0x00, 0x65, 0x11, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x873E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0x91, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x14, 0x56, 0x00, 0x14, 0xD2, 0x00, 0x3E, 0x93, 0x00, 0x62, 0x91, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x873F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x55, 0x01, 0x00, 0x54, 0x80, 0x00, 0x54, 0xEF, 0x00, 0x54, 0xA9, 0x00, 0x54, 0xA9, 0x00, 0x7D, 0x29, 0x00, 0x10, 0xA9, 0x00, 0x14, 0x6B, 0x00, 0x14, 0x48, 0x00, 0x3C, 0x48, 0x80, 0x64, 0xC9, 0x80, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8740, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x14, 0x54, 0x00, 0x14, 0x56, 0x00, 0x3E, 0xD3, 0x00, 0x62, 0x91, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8743, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x7D, 0xAD, 0x00, 0x54, 0x42, 0x00, 0x54, 0xA5, 0x00, 0x55, 0x08, 0x80, 0x54, 0x00, 0x00, 0x55, 0xEF, 0x00, 0x7C, 0x21, 0x00, 0x11, 0x21, 0x00, 0x14, 0xCA, 0x00, 0x14, 0x4A, 0x00, 0x3C, 0xA4, 0x00, 0x65, 0x2A, 0x00, 0x02, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8745, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8747, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x0A, 0x44, 0x00, 0x3F, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x0E, 0xFE, 0x00, 0x7A, 0x10, 0x00, 0x20, 0x11, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8748, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x8A, 0x00, 0x3F, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x9A, 0x00, 0x28, 0x96, 0x00, 0x0A, 0xFE, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8749, { 0x00, 0x00, 0x00, 0x11, 0x21, 0x00, 0x11, 0xB3, 0x00, 0x10, 0x92, 0x00, 0x7C, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x62, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x874B, { 0x00, 0x00, 0x00, 0x11, 0x21, 0x00, 0x11, 0xB3, 0x00, 0x10, 0x92, 0x00, 0x7C, 0x00, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x54, 0x92, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x80, 0x3C, 0x92, 0x80, 0x65, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x874C, { 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x10, 0x71, 0x00, 0x11, 0xC9, 0x00, 0x7C, 0x4D, 0x00, 0x54, 0x45, 0x00, 0x55, 0xF1, 0x00, 0x54, 0x49, 0x00, 0x54, 0x4D, 0x00, 0x54, 0xE5, 0x00, 0x7C, 0xD1, 0x00, 0x11, 0x41, 0x80, 0x11, 0x4F, 0x00, 0x14, 0x41, 0x00, 0x3C, 0x41, 0x00, 0x64, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x874D, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x11, 0xF7, 0x80, 0x11, 0x14, 0x80, 0x7D, 0x14, 0x80, 0x55, 0xF4, 0x80, 0x55, 0x14, 0x80, 0x55, 0x14, 0x80, 0x55, 0x14, 0x80, 0x7D, 0xF4, 0x80, 0x10, 0x04, 0x80, 0x11, 0x34, 0x80, 0x15, 0xE4, 0x80, 0x15, 0x05, 0x80, 0x3D, 0x04, 0x00, 0x65, 0x94, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x874E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0xC8, 0x80, 0x09, 0x54, 0x80, 0x08, 0x62, 0x80, 0x0A, 0x40, 0x80, 0x0E, 0x7F, 0x80, 0x31, 0x40, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8753, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x7C, 0xC6, 0x00, 0x57, 0xBB, 0x80, 0x54, 0x00, 0x00, 0x55, 0xE4, 0x80, 0x55, 0x24, 0x80, 0x55, 0xA4, 0x80, 0x7D, 0x6D, 0x80, 0x11, 0x29, 0x00, 0x15, 0xA9, 0x00, 0x15, 0x6D, 0x80, 0x3D, 0x24, 0x80, 0x65, 0x24, 0x80, 0x01, 0x64, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8755, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x0A, 0x00, 0x3E, 0x09, 0x00, 0x20, 0x0F, 0x80, 0x3E, 0xF0, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8757, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x10, 0x00, 0x39, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8758, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x7D, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x15, 0x74, 0x00, 0x15, 0x1E, 0x00, 0x3D, 0x73, 0x00, 0x65, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8759, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x52, 0x41, 0x00, 0x52, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x40, 0x00, 0x7E, 0x7F, 0x80, 0x10, 0x54, 0x80, 0x10, 0xD4, 0x80, 0x14, 0xFF, 0x80, 0x15, 0x54, 0x80, 0x1E, 0x54, 0x80, 0x72, 0x54, 0x80, 0x00, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x875D, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x52, 0x04, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x20, 0x00, 0x52, 0x51, 0x00, 0x7E, 0x9A, 0x00, 0x10, 0x2C, 0x00, 0x10, 0x48, 0x00, 0x14, 0x9C, 0x00, 0x14, 0x2A, 0x00, 0x3E, 0x49, 0x00, 0x62, 0x88, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x875F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0F, 0x7F, 0x00, 0x38, 0xC1, 0x00, 0x00, 0x41, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8760, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x52, 0x41, 0x00, 0x52, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x14, 0xFF, 0x80, 0x14, 0x88, 0x80, 0x1E, 0x88, 0x80, 0x72, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8761, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0x94, 0x80, 0x52, 0x94, 0x80, 0x52, 0x94, 0x80, 0x52, 0x95, 0x80, 0x7E, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x3E, 0x36, 0x00, 0x62, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8763, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x7F, 0xEF, 0x80, 0x55, 0x18, 0x00, 0x55, 0x00, 0x00, 0x55, 0x0F, 0x80, 0x55, 0xE1, 0x00, 0x7D, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x2F, 0x80, 0x15, 0x22, 0x00, 0x1D, 0x22, 0x00, 0x37, 0x22, 0x00, 0x62, 0x22, 0x00, 0x06, 0xE6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8764, { 0x00, 0x00, 0x00, 0x10, 0x5E, 0x00, 0x10, 0xC3, 0x00, 0x11, 0x81, 0x80, 0x7F, 0x7E, 0x80, 0x52, 0x28, 0x00, 0x52, 0x28, 0x00, 0x52, 0xFF, 0x00, 0x52, 0xA9, 0x00, 0x7E, 0xA9, 0x00, 0x10, 0xA9, 0x00, 0x10, 0xCF, 0x00, 0x14, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x62, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8765, { 0x00, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x09, 0x3F, 0x80, 0x06, 0x20, 0x80, 0x7F, 0xD1, 0x00, 0x0A, 0x8A, 0x00, 0x12, 0x04, 0x00, 0x22, 0x0A, 0x00, 0x06, 0x71, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8766, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x00, 0x08, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xF7, 0x00, 0x2A, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x89, 0x00, 0x08, 0x8A, 0x00, 0x0A, 0x86, 0x00, 0x0E, 0xE4, 0x00, 0x31, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8768, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x0F, 0xE2, 0x80, 0x02, 0x01, 0x80, 0x06, 0x08, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x3E, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x1F, 0x3E, 0x00, 0x04, 0x08, 0x00, 0x04, 0x89, 0x00, 0x07, 0xCF, 0x80, 0x38, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x876A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x52, 0x42, 0x00, 0x52, 0x42, 0x00, 0x52, 0x7E, 0x00, 0x52, 0x00, 0x00, 0x53, 0xFF, 0x80, 0x7E, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x15, 0x92, 0x80, 0x14, 0x24, 0x80, 0x1E, 0xC9, 0x80, 0x72, 0x11, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x876E, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x53, 0x7F, 0x00, 0x52, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0x20, 0x00, 0x10, 0x3E, 0x00, 0x14, 0x62, 0x00, 0x14, 0xD6, 0x00, 0x1E, 0x1C, 0x00, 0x72, 0x36, 0x00, 0x00, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x876F, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xF2, 0x00, 0x7E, 0x53, 0x00, 0x52, 0x89, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x20, 0x00, 0x53, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x14, 0xE6, 0x00, 0x15, 0xB4, 0x00, 0x3E, 0x1C, 0x00, 0x62, 0x36, 0x00, 0x00, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8770, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x93, 0x00, 0x2B, 0x7C, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x0A, 0x7C, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x12, 0x00, 0x21, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8771, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8772, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x45, 0x00, 0x7D, 0xF5, 0x00, 0x54, 0x45, 0x00, 0x55, 0xF5, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x7D, 0x55, 0x00, 0x11, 0xF5, 0x00, 0x10, 0x45, 0x00, 0x14, 0xE1, 0x00, 0x14, 0xD1, 0x00, 0x3D, 0x51, 0x00, 0x65, 0x51, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8774, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x47, 0x80, 0x08, 0x44, 0x80, 0x3E, 0x44, 0x80, 0x2B, 0xFC, 0x80, 0x2A, 0x47, 0x80, 0x2A, 0x44, 0x80, 0x3E, 0x44, 0x80, 0x2B, 0xF4, 0x80, 0x09, 0x17, 0x80, 0x09, 0x14, 0x80, 0x0B, 0x14, 0x80, 0x0F, 0x14, 0x80, 0x39, 0x14, 0x80, 0x01, 0xF8, 0x80, 0x01, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8776, { 0x00, 0x00, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x3F, 0xFF, 0x80, 0x2A, 0x94, 0x00, 0x2A, 0x9C, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x0A, 0x1C, 0x00, 0x0F, 0x2A, 0x00, 0x31, 0x49, 0x00, 0x01, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8778, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x4F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x2A, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x0A, 0xA2, 0x80, 0x0F, 0xBE, 0x80, 0x31, 0xA2, 0x80, 0x00, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x877B, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x52, 0x08, 0x00, 0x52, 0xFF, 0x80, 0x52, 0xA2, 0x80, 0x52, 0x94, 0x80, 0x7E, 0xBE, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x14, 0xBE, 0x80, 0x14, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x62, 0x88, 0x80, 0x00, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x877C, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x14, 0x20, 0x00, 0x7F, 0xFE, 0x00, 0x54, 0x70, 0x00, 0x54, 0xAC, 0x00, 0x55, 0x24, 0x00, 0x54, 0x40, 0x00, 0x7F, 0xFF, 0x00, 0x50, 0x88, 0x00, 0x15, 0x08, 0x00, 0x1C, 0xD0, 0x00, 0x74, 0x20, 0x00, 0x00, 0xD8, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x877D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x7D, 0xFC, 0x00, 0x54, 0x40, 0x00, 0x57, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x55, 0xFC, 0x00, 0x7F, 0x06, 0x00, 0x55, 0x05, 0x00, 0x11, 0xFC, 0x00, 0x1D, 0x04, 0x00, 0x65, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x877E, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2B, 0xFF, 0x00, 0x2B, 0x01, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x28, 0x38, 0x00, 0x0A, 0x34, 0x00, 0x0E, 0x54, 0x00, 0x72, 0x93, 0x00, 0x21, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x877F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x7C, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x14, 0x91, 0x00, 0x1E, 0xFF, 0x00, 0x72, 0x10, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8782, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0xF7, 0x80, 0x3E, 0x94, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0xF4, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0xF4, 0x80, 0x08, 0x84, 0x80, 0x08, 0xAC, 0x80, 0x0A, 0xB4, 0x80, 0x0F, 0x95, 0x80, 0x38, 0xF4, 0x00, 0x01, 0x94, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8783, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x52, 0x24, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x52, 0x91, 0x00, 0x7E, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x14, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x3E, 0x61, 0x00, 0x62, 0xC1, 0x00, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8784, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x11, 0x1F, 0x80, 0x11, 0xC4, 0x00, 0x7D, 0x44, 0x00, 0x55, 0x5F, 0x80, 0x55, 0x54, 0x80, 0x55, 0xD4, 0x80, 0x55, 0x14, 0x80, 0x7D, 0x14, 0x80, 0x11, 0xD4, 0x80, 0x11, 0x54, 0x80, 0x15, 0x54, 0x80, 0x15, 0x54, 0x80, 0x3D, 0x55, 0x80, 0x65, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8785, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x52, 0xFE, 0x00, 0x52, 0x82, 0x00, 0x52, 0xFE, 0x00, 0x52, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x14, 0x1B, 0x00, 0x15, 0x49, 0x80, 0x3D, 0x42, 0x80, 0x67, 0x62, 0x00, 0x02, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8786, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xEF, 0x80, 0x7C, 0x00, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x54, 0x84, 0x00, 0x54, 0x84, 0x00, 0x55, 0x29, 0x00, 0x7C, 0xA5, 0x00, 0x10, 0x42, 0x00, 0x14, 0x42, 0x00, 0x14, 0xA5, 0x00, 0x3C, 0xA5, 0x00, 0x65, 0xEF, 0x80, 0x01, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8787, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x1E, 0x00, 0x10, 0xE2, 0x00, 0x7C, 0xB3, 0x00, 0x55, 0x91, 0x00, 0x55, 0x20, 0x00, 0x54, 0x64, 0x00, 0x54, 0xC8, 0x00, 0x54, 0x52, 0x00, 0x7C, 0x3F, 0x00, 0x10, 0xE1, 0x80, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x3C, 0x28, 0x00, 0x64, 0x66, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8788, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x7E, 0x88, 0x00, 0x52, 0xBF, 0x00, 0x52, 0xA1, 0x00, 0x52, 0xA1, 0x00, 0x52, 0xBF, 0x00, 0x7E, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x10, 0xBF, 0x00, 0x14, 0x88, 0x00, 0x15, 0xAA, 0x00, 0x3D, 0x2B, 0x00, 0x67, 0x69, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8789, { 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x7F, 0x21, 0x80, 0x52, 0x24, 0x00, 0x52, 0x42, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x01, 0x00, 0x7F, 0xEF, 0x80, 0x10, 0xA2, 0x80, 0x11, 0x24, 0x80, 0x14, 0x69, 0x80, 0x14, 0xA2, 0x80, 0x3F, 0x24, 0x80, 0x62, 0x28, 0x80, 0x00, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x878B, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x68, 0x00, 0x10, 0xCB, 0x80, 0x7E, 0x88, 0x80, 0x52, 0x88, 0x80, 0x52, 0xEB, 0x80, 0x52, 0x88, 0x80, 0x52, 0x88, 0x80, 0x7E, 0xEB, 0x80, 0x10, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x14, 0x41, 0x00, 0x14, 0x26, 0x00, 0x3E, 0x1C, 0x00, 0x62, 0x76, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x878C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x15, 0x23, 0x80, 0x7F, 0xC0, 0x00, 0x11, 0x3F, 0x00, 0x15, 0x21, 0x00, 0x15, 0x12, 0x00, 0x31, 0x0C, 0x00, 0x63, 0x33, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x878D, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x15, 0x00, 0x1F, 0x15, 0x00, 0x00, 0x15, 0x00, 0x3F, 0x95, 0x00, 0x2A, 0x9F, 0x00, 0x33, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x85, 0x00, 0x24, 0x87, 0x80, 0x24, 0x98, 0x80, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8790, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x52, 0x82, 0x00, 0x52, 0x82, 0x00, 0x52, 0xFE, 0x00, 0x52, 0x80, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x00, 0x80, 0x14, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x62, 0x81, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8793, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x52, 0x7E, 0x00, 0x52, 0x28, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x44, 0x00, 0x7E, 0x82, 0x00, 0x11, 0x7D, 0x80, 0x10, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x54, 0x00, 0x3E, 0xD6, 0x00, 0x62, 0x93, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8795, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x52, 0xA5, 0x00, 0x52, 0x99, 0x00, 0x52, 0xA5, 0x00, 0x52, 0x81, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x88, 0x00, 0x14, 0xE9, 0x80, 0x14, 0x8F, 0x00, 0x3E, 0x88, 0x00, 0x62, 0xE8, 0x80, 0x01, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8797, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x88, 0x00, 0x52, 0xBF, 0x00, 0x52, 0x89, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x89, 0x00, 0x7E, 0x89, 0x00, 0x10, 0xBF, 0x00, 0x10, 0x88, 0x00, 0x14, 0xBF, 0x00, 0x15, 0xA1, 0x00, 0x3D, 0x21, 0x00, 0x63, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8798, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x52, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x14, 0x22, 0x00, 0x14, 0x36, 0x00, 0x3E, 0x14, 0x00, 0x62, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8799, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x9C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x879E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x88, 0x00, 0x52, 0x88, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x00, 0x80, 0x14, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x62, 0x81, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x879F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x0F, 0x00, 0x00, 0x31, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87A0, { 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x10, 0x46, 0x00, 0x10, 0xC3, 0x00, 0x7F, 0xBD, 0x80, 0x52, 0x00, 0x00, 0x52, 0x1E, 0x00, 0x52, 0xC3, 0x00, 0x53, 0x81, 0x80, 0x7E, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x14, 0xA5, 0x00, 0x14, 0xA5, 0x00, 0x3E, 0xA5, 0x00, 0x62, 0xA5, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87A2, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x15, 0x14, 0x80, 0x16, 0x15, 0x00, 0x24, 0xA6, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x20, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x41, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87A3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFF, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x00, 0x27, 0xFF, 0x80, 0x24, 0xA6, 0x00, 0x3D, 0xA3, 0x00, 0x26, 0xFD, 0x80, 0x24, 0xA4, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x24, 0x00, 0x64, 0x3E, 0x00, 0x4D, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87A7, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x10, 0xFA, 0x00, 0x7E, 0x24, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x10, 0x00, 0x52, 0x66, 0x00, 0x53, 0xB8, 0x00, 0x7E, 0x20, 0x80, 0x10, 0x1F, 0x80, 0x10, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x62, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87A8, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x13, 0xFF, 0x00, 0x14, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x55, 0xFE, 0x00, 0x54, 0x48, 0x00, 0x55, 0x4A, 0x00, 0x55, 0xFF, 0x00, 0x7D, 0x4A, 0x00, 0x51, 0x4A, 0x00, 0x15, 0xB6, 0x00, 0x1D, 0x22, 0x00, 0x65, 0x02, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87AB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x7F, 0xD1, 0x00, 0x0A, 0x31, 0x00, 0x2A, 0x8A, 0x00, 0x4A, 0x44, 0x00, 0x12, 0x0A, 0x00, 0x26, 0x31, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87AC, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x52, 0xFF, 0x80, 0x52, 0xA4, 0x80, 0x52, 0xFF, 0x80, 0x52, 0xA4, 0x80, 0x7E, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x62, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87AD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x52, 0xA5, 0x00, 0x52, 0x99, 0x00, 0x52, 0xA5, 0x00, 0x52, 0x81, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x20, 0x80, 0x15, 0x24, 0x80, 0x3D, 0x7A, 0x80, 0x63, 0x00, 0x80, 0x01, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87AE, { 0x00, 0x00, 0x00, 0x10, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0xAA, 0x00, 0x54, 0xAA, 0x00, 0x55, 0x3B, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x10, 0x80, 0x7D, 0x10, 0x80, 0x10, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x14, 0x91, 0x00, 0x3C, 0x93, 0x00, 0x64, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87AF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xE1, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xDB, 0x00, 0x08, 0x0E, 0x00, 0x1F, 0x8A, 0x00, 0x30, 0x9B, 0x00, 0x63, 0xB1, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87B1, { 0x00, 0x00, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x02, 0x00, 0x2F, 0xA2, 0x00, 0x22, 0x12, 0x00, 0x6A, 0x92, 0x00, 0x4A, 0x82, 0x00, 0x16, 0x0E, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87B3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x3E, 0x00, 0x2A, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x39, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87B5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0xA4, 0x80, 0x52, 0xA4, 0x80, 0x52, 0xFF, 0x80, 0x52, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x10, 0x00, 0x14, 0x52, 0x00, 0x3E, 0xD3, 0x00, 0x63, 0x91, 0x80, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87BA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x20, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x29, 0x00, 0x08, 0x17, 0x00, 0x0A, 0xF8, 0x80, 0x0E, 0x08, 0x00, 0x31, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87BB, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0x49, 0x00, 0x52, 0x7F, 0x00, 0x52, 0x08, 0x00, 0x52, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x10, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x1E, 0x74, 0x00, 0x72, 0x1E, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87BD, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x0E, 0x08, 0x00, 0x3B, 0x10, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0xC7, 0x80, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x08, 0xE8, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87BE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7F, 0x00, 0x80, 0x52, 0x7E, 0x80, 0x52, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x14, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x3E, 0x42, 0x00, 0x62, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87BF, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x22, 0x3F, 0x00, 0x22, 0xE9, 0x00, 0x3E, 0x2E, 0x00, 0x02, 0xF8, 0x00, 0x7E, 0x02, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x42, 0x00, 0x32, 0x62, 0x00, 0x62, 0x26, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87C0, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x52, 0x51, 0x00, 0x52, 0x94, 0x80, 0x52, 0x08, 0x00, 0x52, 0x51, 0x00, 0x7E, 0xA4, 0x80, 0x10, 0x3A, 0x00, 0x10, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x72, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87C1, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x17, 0x99, 0x00, 0x7C, 0x07, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87C4, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x04, 0x7E, 0x00, 0x3F, 0x92, 0x00, 0x11, 0x32, 0x00, 0x0A, 0x1A, 0x80, 0x3F, 0xD7, 0x80, 0x04, 0x20, 0x00, 0x1F, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87C6, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x52, 0x24, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x1E, 0x66, 0x00, 0x72, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87C7, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x8B, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFD, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87C8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x0A, 0x80, 0x7D, 0x0A, 0x80, 0x55, 0xFF, 0x80, 0x55, 0x08, 0x80, 0x55, 0x74, 0x80, 0x55, 0x54, 0x80, 0x55, 0x54, 0x80, 0x7D, 0x75, 0x80, 0x11, 0x02, 0x80, 0x15, 0x76, 0x80, 0x15, 0x0D, 0x80, 0x3D, 0x39, 0x80, 0x65, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87C9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x63, 0x00, 0x7E, 0xA5, 0x00, 0x52, 0x63, 0x00, 0x52, 0xA5, 0x00, 0x52, 0x11, 0x00, 0x52, 0x38, 0x00, 0x7E, 0xEE, 0x00, 0x11, 0x83, 0x80, 0x10, 0x10, 0x00, 0x14, 0xE4, 0x00, 0x14, 0x19, 0x00, 0x3E, 0xE2, 0x00, 0x62, 0x0C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87CA, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x18, 0x00, 0x00, 0xA0, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x21, 0x00, 0x06, 0x26, 0x00, 0x38, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87CB, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x88, 0x80, 0x7E, 0x49, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x2A, 0x00, 0x52, 0x2A, 0x00, 0x52, 0x6B, 0x00, 0x7E, 0xC1, 0x80, 0x10, 0x08, 0x00, 0x10, 0x0C, 0x00, 0x14, 0x14, 0x00, 0x14, 0x51, 0x00, 0x1E, 0x51, 0x80, 0x72, 0xD2, 0x80, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87CE, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x52, 0x24, 0x00, 0x52, 0x3C, 0x00, 0x52, 0x08, 0x00, 0x52, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x10, 0xEE, 0x80, 0x10, 0xAA, 0x80, 0x14, 0xAA, 0x80, 0x14, 0xDD, 0x80, 0x3E, 0x88, 0x80, 0x62, 0x88, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87D0, { 0x00, 0x00, 0x00, 0x10, 0x49, 0x00, 0x10, 0x6B, 0x00, 0x10, 0x2A, 0x00, 0x7E, 0xFF, 0x80, 0x52, 0x80, 0x80, 0x52, 0xBE, 0x80, 0x52, 0x22, 0x00, 0x52, 0x22, 0x00, 0x7E, 0x3E, 0x00, 0x10, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x72, 0x4B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87D1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x28, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x72, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87D2, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x28, 0x00, 0x54, 0x44, 0x00, 0x55, 0x83, 0x00, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x14, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x64, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87D3, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x88, 0x00, 0x09, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x62, 0x00, 0x3E, 0x94, 0x00, 0x29, 0x38, 0x00, 0x0A, 0x58, 0x00, 0x0F, 0xB4, 0x00, 0x72, 0x57, 0x00, 0x21, 0x92, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87D5, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0xA5, 0x80, 0x10, 0xBF, 0x00, 0x7E, 0xA4, 0x00, 0x52, 0xBC, 0x80, 0x53, 0xE3, 0x80, 0x52, 0x3C, 0x00, 0x52, 0x48, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x62, 0x81, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87D6, { 0x00, 0x00, 0x00, 0x11, 0x21, 0x80, 0x11, 0x23, 0x00, 0x11, 0x2E, 0x00, 0x7F, 0xF8, 0x00, 0x55, 0x28, 0x00, 0x55, 0xEF, 0x80, 0x55, 0x29, 0x00, 0x55, 0x29, 0x00, 0x55, 0xE9, 0x00, 0x7D, 0x29, 0x00, 0x11, 0x29, 0x00, 0x17, 0xF9, 0x00, 0x15, 0x29, 0x00, 0x3D, 0x29, 0x00, 0x67, 0x31, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87D9, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x45, 0x00, 0x11, 0xF5, 0x80, 0x7C, 0x04, 0x80, 0x55, 0x14, 0x00, 0x54, 0xA4, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x04, 0x00, 0x55, 0xF5, 0x00, 0x7F, 0x15, 0x00, 0x11, 0x17, 0x00, 0x15, 0xF2, 0x00, 0x15, 0x12, 0x00, 0x3D, 0x12, 0x80, 0x65, 0xF7, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87DA, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xCC, 0x00, 0x02, 0x32, 0x00, 0x3F, 0xC6, 0x00, 0x10, 0x8C, 0x00, 0x1F, 0xB9, 0x00, 0x09, 0x03, 0x00, 0x0B, 0xCE, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87DB, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x10, 0x51, 0x00, 0x13, 0xFA, 0x00, 0x10, 0x42, 0x00, 0x7D, 0xF4, 0x00, 0x54, 0x09, 0x00, 0x55, 0xF1, 0x00, 0x55, 0x12, 0x00, 0x55, 0x14, 0x00, 0x7D, 0xF8, 0x00, 0x50, 0x01, 0x00, 0x15, 0x11, 0x00, 0x1C, 0xA2, 0x00, 0x67, 0xF4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87DC, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x52, 0x24, 0x00, 0x52, 0x7E, 0x00, 0x53, 0xA5, 0x80, 0x52, 0x3C, 0x00, 0x7E, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x14, 0xBD, 0x00, 0x14, 0xA5, 0x00, 0x3E, 0xBD, 0x00, 0x62, 0x81, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87DF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x52, 0xA5, 0x00, 0x52, 0x42, 0x00, 0x52, 0x7F, 0x00, 0x52, 0xC2, 0x80, 0x7F, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x14, 0x10, 0x00, 0x14, 0x92, 0x00, 0x3D, 0x93, 0x00, 0x63, 0x11, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87E0, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x2A, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x88, 0x80, 0x09, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x0F, 0x49, 0x00, 0x39, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87E2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x42, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x14, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x62, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87E3, { 0x00, 0x00, 0x00, 0x10, 0x91, 0x00, 0x11, 0x12, 0x00, 0x13, 0x56, 0x80, 0x7C, 0x91, 0x00, 0x55, 0x12, 0x80, 0x55, 0x57, 0x80, 0x57, 0xD2, 0x00, 0x54, 0x11, 0x00, 0x55, 0xFF, 0x80, 0x7D, 0x10, 0x00, 0x11, 0x09, 0x00, 0x15, 0x8A, 0x00, 0x15, 0x44, 0x00, 0x3D, 0x4A, 0x80, 0x67, 0x13, 0x80, 0x02, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87E4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x11, 0x28, 0x80, 0x7D, 0xEF, 0x80, 0x55, 0x08, 0x00, 0x55, 0x28, 0x80, 0x54, 0xE7, 0x80, 0x54, 0x00, 0x00, 0x7C, 0x24, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x15, 0xFF, 0x80, 0x3E, 0x24, 0x00, 0x62, 0x66, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87E5, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x0E, 0x00, 0x00, 0x72, 0x44, 0x00, 0x20, 0x83, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87EA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x91, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x12, 0x00, 0x10, 0x7F, 0x00, 0x15, 0xC1, 0x80, 0x14, 0x10, 0x00, 0x3E, 0xA9, 0x00, 0x62, 0xA2, 0x80, 0x01, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87EB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0xA9, 0x00, 0x52, 0xB9, 0x00, 0x52, 0x00, 0x00, 0x52, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x62, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87EC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x77, 0x00, 0x08, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x2A, 0x77, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x31, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87ED, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0xC8, 0x00, 0x7F, 0xFF, 0x00, 0x52, 0x88, 0x00, 0x52, 0x88, 0x00, 0x52, 0xFF, 0x00, 0x52, 0x88, 0x00, 0x7E, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x3E, 0xA9, 0x00, 0x63, 0xAD, 0x80, 0x01, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87EE, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x54, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87EF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x3E, 0x3A, 0x00, 0x2A, 0xEF, 0x80, 0x08, 0x00, 0x00, 0x0A, 0xFF, 0x80, 0x0F, 0x24, 0x00, 0x39, 0x24, 0x00, 0x00, 0x44, 0x80, 0x01, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87F1, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0xD5, 0x00, 0x53, 0x55, 0x00, 0x52, 0x55, 0x00, 0x53, 0xFF, 0x80, 0x52, 0x55, 0x00, 0x7E, 0x55, 0x00, 0x10, 0x55, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x3E, 0x55, 0x00, 0x62, 0xD5, 0x80, 0x00, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87F2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x85, 0x00, 0x07, 0xCF, 0x80, 0x38, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87F3, { 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x02, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x55, 0xEF, 0x00, 0x54, 0x49, 0x00, 0x54, 0x69, 0x00, 0x7D, 0xCF, 0x00, 0x10, 0x02, 0x00, 0x15, 0xFF, 0x80, 0x14, 0x42, 0x00, 0x3C, 0x62, 0x00, 0x64, 0x22, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87F6, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x97, 0x80, 0x7C, 0xF4, 0x80, 0x54, 0x94, 0x80, 0x54, 0xF4, 0x80, 0x54, 0x97, 0x80, 0x55, 0xF0, 0x00, 0x54, 0x10, 0x00, 0x7C, 0x03, 0x00, 0x10, 0x7E, 0x00, 0x14, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x3C, 0x08, 0x00, 0x64, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87F7, { 0x00, 0x00, 0x00, 0x10, 0x91, 0x00, 0x10, 0xD3, 0x00, 0x10, 0x52, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x55, 0x7E, 0x80, 0x54, 0x42, 0x00, 0x54, 0x7E, 0x00, 0x54, 0x00, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x14, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x1E, 0x91, 0x00, 0x72, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87F8, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x80, 0x00, 0x06, 0xC0, 0x00, 0x39, 0xA7, 0x00, 0x06, 0x78, 0x00, 0x39, 0xA0, 0x00, 0x06, 0x78, 0x00, 0x39, 0xCF, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87F9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x3F, 0x00, 0x12, 0x09, 0x00, 0x3F, 0x91, 0x00, 0x14, 0xA6, 0x00, 0x1F, 0x94, 0x00, 0x14, 0xBF, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0xFF, 0x80, 0x23, 0x84, 0x00, 0x20, 0x44, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87FA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0x81, 0x00, 0x52, 0xBD, 0x00, 0x52, 0xA5, 0x00, 0x52, 0xBD, 0x00, 0x7E, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x62, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87FB, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x7A, 0x00, 0x3F, 0xC9, 0x00, 0x08, 0x48, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x0A, 0x78, 0x00, 0x0F, 0xC4, 0x80, 0x3A, 0x42, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x87FE, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x2A, 0x94, 0x00, 0x2A, 0xF7, 0x80, 0x2A, 0x80, 0x00, 0x2A, 0xBE, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0xBE, 0x00, 0x08, 0xBE, 0x00, 0x0A, 0x80, 0x00, 0x0F, 0xFF, 0x00, 0x31, 0x41, 0x00, 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x87FF, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x80, 0x3F, 0xB3, 0x80, 0x24, 0x80, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x91, 0x00, 0x7F, 0xCE, 0x00, 0x24, 0x9B, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8801, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x1B, 0xEF, 0x80, 0x32, 0x28, 0x80, 0x6B, 0xE9, 0x00, 0x3A, 0x2B, 0x00, 0x13, 0xE8, 0x80, 0x7A, 0x08, 0x80, 0x0A, 0x2B, 0x80, 0x19, 0xE8, 0x00, 0x70, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x7F, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8803, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x38, 0x8E, 0x00, 0x2B, 0xEA, 0x00, 0x3A, 0xAA, 0x00, 0x2B, 0xEE, 0x00, 0x38, 0x8A, 0x80, 0x28, 0xEA, 0x80, 0x5B, 0xB3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8805, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0xEE, 0x00, 0x3E, 0xAA, 0x00, 0x08, 0xEE, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xEE, 0x00, 0x0A, 0xA8, 0x00, 0x0E, 0x28, 0x80, 0x31, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8806, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x91, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8809, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x49, 0x00, 0x7D, 0x49, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x14, 0x50, 0x80, 0x14, 0x93, 0x00, 0x3D, 0x8C, 0x00, 0x66, 0xB3, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x880A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x12, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x24, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x25, 0x00, 0x55, 0xFF, 0x80, 0x7D, 0x25, 0x00, 0x11, 0x7F, 0x00, 0x15, 0x24, 0x00, 0x15, 0x66, 0x00, 0x3D, 0x65, 0x00, 0x66, 0xA4, 0x80, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x880B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x7D, 0x29, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x80, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x20, 0x80, 0x7F, 0xFC, 0x80, 0x10, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x14, 0xFC, 0x80, 0x14, 0x28, 0x80, 0x3C, 0x7D, 0x80, 0x65, 0xC5, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x880D, { 0x00, 0x00, 0x00, 0x11, 0xE4, 0x00, 0x11, 0x24, 0x00, 0x11, 0x2F, 0x80, 0x7D, 0xE8, 0x80, 0x55, 0x3A, 0x80, 0x55, 0x23, 0x00, 0x55, 0xE2, 0x00, 0x54, 0x82, 0x00, 0x7D, 0xF2, 0x00, 0x11, 0x52, 0x00, 0x13, 0x57, 0x00, 0x15, 0xB5, 0x00, 0x15, 0x15, 0x00, 0x3D, 0xD5, 0x00, 0x64, 0x35, 0x80, 0x00, 0x6C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x880E, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x28, 0x00, 0x54, 0x44, 0x00, 0x55, 0x93, 0x00, 0x54, 0x7C, 0x00, 0x7C, 0x10, 0x00, 0x10, 0x42, 0x00, 0x13, 0xFF, 0x80, 0x14, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x64, 0xC2, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x880F, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x11, 0xEF, 0x80, 0x13, 0x22, 0x80, 0x7C, 0x42, 0x80, 0x55, 0xF6, 0x80, 0x55, 0x54, 0x80, 0x55, 0x5D, 0x80, 0x55, 0xF0, 0x00, 0x55, 0x55, 0x00, 0x7D, 0x57, 0x80, 0x11, 0xF5, 0x00, 0x15, 0x11, 0x00, 0x15, 0x17, 0x80, 0x3D, 0x11, 0x00, 0x65, 0x11, 0x00, 0x02, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8810, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x28, 0x00, 0x57, 0xD7, 0x80, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x56, 0xD6, 0x80, 0x54, 0x00, 0x00, 0x7C, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x65, 0x81, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8811, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x12, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x7D, 0x45, 0x00, 0x56, 0x28, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x14, 0x54, 0x00, 0x1C, 0xD6, 0x00, 0x35, 0x93, 0x00, 0x63, 0x11, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8812, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x6A, 0x95, 0x80, 0x24, 0x89, 0x00, 0x2A, 0x95, 0x00, 0x20, 0x81, 0x00, 0x2A, 0x95, 0x00, 0x24, 0x89, 0x00, 0x2A, 0x95, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8813, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x55, 0x7E, 0x80, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x20, 0x00, 0x7C, 0x51, 0x80, 0x11, 0x9B, 0x00, 0x14, 0x6C, 0x00, 0x15, 0x9A, 0x00, 0x3C, 0x69, 0x80, 0x65, 0x88, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8814, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x80, 0x7D, 0x7E, 0x80, 0x10, 0x30, 0x00, 0x14, 0xD9, 0x00, 0x14, 0x2A, 0x00, 0x3C, 0xDC, 0x00, 0x64, 0x2A, 0x00, 0x01, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8815, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x10, 0x80, 0x55, 0xD6, 0x80, 0x55, 0x10, 0x80, 0x54, 0xD6, 0x00, 0x54, 0x00, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x14, 0xFF, 0x00, 0x14, 0xA9, 0x00, 0x3C, 0xA9, 0x00, 0x64, 0xA9, 0x00, 0x00, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8816, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x7C, 0x48, 0x00, 0x54, 0xFF, 0x80, 0x55, 0x88, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x88, 0x00, 0x10, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x15, 0xFF, 0x00, 0x3C, 0x42, 0x00, 0x64, 0x3C, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8818, { 0x00, 0x00, 0x00, 0x10, 0x45, 0x00, 0x10, 0x45, 0x80, 0x11, 0xF4, 0x80, 0x7C, 0x44, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x94, 0x00, 0x54, 0xA4, 0x00, 0x55, 0xFC, 0x00, 0x57, 0x26, 0x00, 0x7D, 0x22, 0x00, 0x11, 0xFA, 0x00, 0x15, 0x22, 0x00, 0x15, 0xFA, 0x00, 0x3D, 0x22, 0x80, 0x65, 0x23, 0x80, 0x01, 0xF9, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8819, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7C, 0xFF, 0x00, 0x54, 0x52, 0x00, 0x55, 0x94, 0x00, 0x54, 0x18, 0x00, 0x54, 0xFF, 0x00, 0x55, 0x81, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x64, 0x42, 0x00, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x881A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x64, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x1F, 0x1F, 0x00, 0x71, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x881B, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x44, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x29, 0x00, 0x55, 0x29, 0x00, 0x55, 0xFF, 0x00, 0x7C, 0x09, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x15, 0x0A, 0x00, 0x15, 0x8E, 0x00, 0x3D, 0x44, 0x80, 0x67, 0x0E, 0x80, 0x02, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x881C, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0x22, 0x00, 0x7C, 0xCF, 0x80, 0x11, 0x22, 0x00, 0x38, 0x07, 0x00, 0x35, 0x2B, 0x00, 0x50, 0xC2, 0x80, 0x11, 0x22, 0x00, 0x14, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x8B, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFD, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x881E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x28, 0x48, 0x00, 0x7F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3C, 0x21, 0x00, 0x21, 0x27, 0x00, 0x3E, 0x20, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x81, 0x00, 0x7F, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x881F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x92, 0x00, 0x08, 0x49, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0x95, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFD, 0x00, 0x0A, 0x91, 0x00, 0x0F, 0xFD, 0x00, 0x30, 0x91, 0x00, 0x00, 0xDD, 0x00, 0x01, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8821, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x00, 0x00, 0x1C, 0x86, 0x00, 0x03, 0x4C, 0x00, 0x1C, 0xB0, 0x00, 0x03, 0x2C, 0x00, 0x3C, 0xE3, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x7D, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8822, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xA0, 0x00, 0x3F, 0xFF, 0x80, 0x0C, 0x06, 0x00, 0x37, 0xFD, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xBF, 0x00, 0x14, 0xA5, 0x00, 0x1F, 0xBF, 0x00, 0x07, 0xC7, 0x80, 0x3C, 0x7C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8823, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x94, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xBE, 0x00, 0x2A, 0xAA, 0x00, 0x08, 0xBE, 0x00, 0x08, 0x88, 0x00, 0x0A, 0xFF, 0x80, 0x0F, 0xCA, 0x80, 0x38, 0xCE, 0x80, 0x01, 0x71, 0x80, 0x01, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8827, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x0F, 0xFE, 0x00, 0x3A, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x7D, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8828, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x10, 0x00, 0x55, 0xFF, 0x00, 0x54, 0x11, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x11, 0x55, 0x00, 0x15, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x3D, 0x39, 0x00, 0x67, 0x55, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x882D, { 0x00, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x18, 0xC4, 0x00, 0x63, 0x38, 0x00, 0x30, 0x66, 0x00, 0x03, 0x91, 0x80, 0x78, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x7D, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x882E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xF7, 0x00, 0x11, 0x45, 0x00, 0x7D, 0x75, 0x80, 0x55, 0xA8, 0x00, 0x55, 0x77, 0x00, 0x55, 0x25, 0x00, 0x55, 0x52, 0x00, 0x55, 0xF5, 0x80, 0x7C, 0x00, 0x00, 0x11, 0xEF, 0x80, 0x14, 0xA4, 0x80, 0x15, 0x69, 0x80, 0x3C, 0xA2, 0x80, 0x65, 0x2C, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8830, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7C, 0xEE, 0x00, 0x54, 0xAA, 0x00, 0x54, 0xEE, 0x00, 0x54, 0x44, 0x00, 0x55, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x3D, 0xC5, 0x00, 0x64, 0x72, 0x00, 0x01, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8831, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x85, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8832, { 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x23, 0x7F, 0x00, 0x21, 0x55, 0x00, 0x5E, 0xD5, 0x00, 0x00, 0x7F, 0x00, 0x0E, 0x20, 0x00, 0x23, 0x7F, 0x80, 0x21, 0xC8, 0x80, 0x40, 0xBE, 0x80, 0x3F, 0xAA, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x8A, 0x80, 0x2A, 0xDF, 0x80, 0x2F, 0xB1, 0x00, 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8835, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x88, 0x00, 0x55, 0xFF, 0x00, 0x56, 0x90, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x90, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x11, 0xFF, 0x80, 0x15, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x3D, 0xC9, 0x00, 0x65, 0x79, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8836, { 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x14, 0x80, 0x13, 0xA7, 0x80, 0x2E, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x3F, 0x00, 0x25, 0x25, 0x00, 0x3F, 0x3F, 0x00, 0x05, 0xC5, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8839, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x0F, 0xFE, 0x00, 0x3A, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x7D, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x883A, { 0x00, 0x00, 0x00, 0x1F, 0x7E, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x0A, 0x0A, 0x00, 0x7D, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x883B, { 0x00, 0x00, 0x00, 0x10, 0xE4, 0x00, 0x17, 0xF5, 0x00, 0x28, 0x0A, 0x00, 0x12, 0xE4, 0x80, 0x3E, 0x0F, 0x80, 0x09, 0xE2, 0x00, 0x2A, 0x0A, 0x80, 0x2A, 0xEA, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x42, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x883C, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7D, 0x29, 0x00, 0x55, 0xEF, 0x00, 0x55, 0x29, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x88, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x15, 0xFF, 0x80, 0x3C, 0x42, 0x00, 0x64, 0x3C, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8840, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8841, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8842, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x7F, 0x00, 0x08, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0x99, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x99, 0x00, 0x2A, 0x95, 0x00, 0x2B, 0xF3, 0x00, 0x3E, 0x21, 0x80, 0x60, 0x63, 0x00, 0x00, 0xC2, 0x00, 0x01, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8843, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x3F, 0x86, 0x00, 0x2A, 0x8C, 0x00, 0x2A, 0x98, 0x00, 0x2A, 0xAC, 0x00, 0x2A, 0xCB, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x00, 0x2B, 0xC8, 0x00, 0x3E, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8844, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x7E, 0x00, 0x08, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2B, 0xD2, 0x00, 0x3E, 0x12, 0x00, 0x60, 0x12, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8845, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0C, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x3F, 0xC9, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x00, 0x2B, 0xC8, 0x00, 0x3E, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8846, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x01, 0x61, 0x00, 0x02, 0x62, 0x00, 0x0C, 0xD4, 0x00, 0x31, 0x48, 0x00, 0x02, 0x48, 0x00, 0x0C, 0xC4, 0x00, 0x31, 0x42, 0x00, 0x06, 0x41, 0x80, 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8848, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x7F, 0x80, 0x08, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2B, 0xE1, 0x00, 0x3E, 0x3F, 0x80, 0x60, 0x61, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8849, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x2A, 0xF3, 0x00, 0x2A, 0x96, 0x00, 0x2A, 0x8C, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0xB3, 0x00, 0x2A, 0xE1, 0x80, 0x2A, 0xBF, 0x00, 0x2B, 0xE1, 0x00, 0x3E, 0x21, 0x00, 0x60, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x884A, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x0C, 0x24, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0xA4, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x84, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x84, 0x00, 0x2B, 0xE5, 0x00, 0x3E, 0xB6, 0x00, 0x60, 0x8C, 0x80, 0x00, 0x9A, 0x80, 0x01, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x884B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x884C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x22, 0x00, 0x00, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x884D, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x9F, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x09, 0x3F, 0x80, 0x18, 0x04, 0x00, 0x28, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x884E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xF7, 0x80, 0x30, 0x40, 0x00, 0x60, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1B, 0xF7, 0x80, 0x30, 0x41, 0x00, 0x70, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8851, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x18, 0x87, 0x80, 0x31, 0xC0, 0x00, 0x61, 0x60, 0x00, 0x03, 0x30, 0x00, 0x0E, 0x18, 0x00, 0x19, 0xE7, 0x80, 0x30, 0x01, 0x00, 0x70, 0x01, 0x00, 0x13, 0xF1, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0xB1, 0x00, 0x10, 0x81, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8852, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x47, 0x80, 0x08, 0x40, 0x00, 0x13, 0xF8, 0x00, 0x24, 0x80, 0x00, 0x04, 0x80, 0x00, 0x0B, 0x0F, 0x80, 0x19, 0x22, 0x00, 0x28, 0xA2, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x08, 0x92, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x7A, 0x00, 0x0F, 0x8A, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8853, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x47, 0x80, 0x10, 0x40, 0x00, 0x25, 0xF0, 0x00, 0x04, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x09, 0x52, 0x00, 0x19, 0x52, 0x00, 0x19, 0x52, 0x00, 0x29, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8854, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9F, 0x00, 0x08, 0x80, 0x00, 0x11, 0xE0, 0x00, 0x21, 0x02, 0x00, 0x06, 0x3F, 0x00, 0x09, 0xC4, 0x00, 0x18, 0x84, 0x00, 0x28, 0x84, 0x00, 0x4B, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x14, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8855, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x34, 0x10, 0x00, 0x64, 0x10, 0x00, 0x05, 0xD0, 0x00, 0x0C, 0x10, 0x00, 0x1C, 0x1F, 0x80, 0x35, 0xD1, 0x00, 0x75, 0x51, 0x00, 0x15, 0x51, 0x00, 0x15, 0x51, 0x00, 0x15, 0xD1, 0x00, 0x14, 0x11, 0x00, 0x14, 0x11, 0x00, 0x14, 0x11, 0x00, 0x14, 0x33, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8856, { 0x00, 0x00, 0x00, 0x09, 0x20, 0x00, 0x19, 0x27, 0x80, 0x31, 0x20, 0x00, 0x61, 0x20, 0x00, 0x07, 0xF8, 0x00, 0x09, 0x20, 0x00, 0x19, 0x27, 0x80, 0x31, 0x21, 0x00, 0x71, 0x21, 0x00, 0x11, 0x21, 0x00, 0x17, 0xF9, 0x00, 0x10, 0x01, 0x00, 0x11, 0x21, 0x00, 0x13, 0x31, 0x00, 0x12, 0x11, 0x00, 0x16, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8857, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x10, 0x40, 0x00, 0x21, 0xF0, 0x00, 0x04, 0x40, 0x00, 0x04, 0x4F, 0x80, 0x0B, 0xFA, 0x00, 0x18, 0x42, 0x00, 0x28, 0x42, 0x00, 0x09, 0xF2, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8858, { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x19, 0x07, 0x80, 0x11, 0xF0, 0x00, 0x32, 0x40, 0x00, 0x62, 0x40, 0x00, 0x08, 0x40, 0x00, 0x1B, 0xF7, 0x80, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x72, 0x79, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x79, 0x00, 0x13, 0xC1, 0x00, 0x16, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8859, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xF7, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x05, 0xF0, 0x00, 0x08, 0x9F, 0x80, 0x08, 0x92, 0x00, 0x18, 0x92, 0x00, 0x2B, 0xFA, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x885A, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x7B, 0x80, 0x32, 0x48, 0x00, 0x22, 0x48, 0x00, 0x6F, 0xC8, 0x00, 0x12, 0x78, 0x00, 0x12, 0x4F, 0x80, 0x32, 0x49, 0x00, 0x27, 0x49, 0x00, 0x65, 0x79, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x27, 0x49, 0x00, 0x20, 0x9B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x885B, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xF7, 0x80, 0x10, 0x50, 0x00, 0x27, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x19, 0xF1, 0x00, 0x28, 0x01, 0x00, 0x0B, 0xF9, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x0F, 0xFD, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x885C, { 0x00, 0x00, 0x00, 0x0A, 0x10, 0x00, 0x1B, 0x37, 0x80, 0x11, 0x20, 0x00, 0x37, 0xF8, 0x00, 0x60, 0x80, 0x00, 0x09, 0x00, 0x00, 0x1B, 0xF7, 0x80, 0x12, 0x11, 0x00, 0x32, 0x11, 0x00, 0x73, 0xF1, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x13, 0xF3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x885D, { 0x00, 0x00, 0x00, 0x08, 0x70, 0x00, 0x0B, 0xC7, 0x80, 0x10, 0x40, 0x00, 0x24, 0x40, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x47, 0x80, 0x1B, 0xF9, 0x00, 0x1A, 0x49, 0x00, 0x2B, 0xF9, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xF9, 0x00, 0x08, 0x41, 0x00, 0x0B, 0xF9, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFD, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x885E, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x1B, 0xF7, 0x80, 0x31, 0x10, 0x00, 0x67, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xF7, 0x80, 0x1A, 0x11, 0x00, 0x33, 0xF1, 0x00, 0x70, 0x01, 0x00, 0x17, 0xF9, 0x00, 0x10, 0x81, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0xB1, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x885F, { 0x00, 0x00, 0x00, 0x09, 0x50, 0x00, 0x19, 0x57, 0x80, 0x12, 0xA0, 0x00, 0x32, 0xA0, 0x00, 0x61, 0x50, 0x00, 0x09, 0x50, 0x00, 0x18, 0x07, 0x80, 0x13, 0xF1, 0x00, 0x31, 0x01, 0x00, 0x73, 0xF1, 0x00, 0x12, 0x11, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x11, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x11, 0x00, 0x13, 0xF3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8860, { 0x00, 0x00, 0x00, 0x0A, 0x30, 0x00, 0x1A, 0xC7, 0x80, 0x13, 0x08, 0x00, 0x31, 0xF8, 0x00, 0x60, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x1D, 0x17, 0x80, 0x15, 0xF1, 0x00, 0x35, 0x11, 0x00, 0x75, 0xF1, 0x00, 0x15, 0x11, 0x00, 0x15, 0xF1, 0x00, 0x14, 0x01, 0x00, 0x17, 0xFD, 0x00, 0x11, 0x21, 0x00, 0x12, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8861, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x47, 0x80, 0x10, 0xF8, 0x00, 0x25, 0x10, 0x00, 0x06, 0x20, 0x00, 0x09, 0xF0, 0x00, 0x09, 0x5F, 0x80, 0x19, 0xF1, 0x00, 0x29, 0x51, 0x00, 0x09, 0xF1, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFD, 0x00, 0x08, 0x41, 0x00, 0x08, 0xA1, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8862, { 0x00, 0x00, 0x00, 0x0B, 0xB8, 0x00, 0x12, 0xAB, 0x80, 0x23, 0xB8, 0x00, 0x02, 0xA8, 0x00, 0x0B, 0xB8, 0x00, 0x12, 0xAF, 0x80, 0x33, 0xB9, 0x00, 0x11, 0x41, 0x00, 0x13, 0xF1, 0x00, 0x16, 0x41, 0x00, 0x1B, 0xF1, 0x00, 0x12, 0x41, 0x00, 0x13, 0xF1, 0x00, 0x12, 0x41, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8863, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x21, 0x00, 0x02, 0x22, 0x00, 0x0E, 0x14, 0x00, 0x32, 0x18, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x04, 0x00, 0x03, 0xF2, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8864, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC8, 0x00, 0x01, 0x90, 0x00, 0x03, 0xE0, 0x00, 0x06, 0xB0, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8865, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x01, 0x10, 0x00, 0x02, 0x18, 0x00, 0x02, 0x94, 0x00, 0x07, 0x13, 0x00, 0x0A, 0x91, 0x00, 0x12, 0x10, 0x00, 0x22, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8868, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x90, 0x00, 0x01, 0x11, 0x00, 0x03, 0x0A, 0x00, 0x0D, 0x0C, 0x00, 0x31, 0x04, 0x00, 0x01, 0x02, 0x00, 0x01, 0xF1, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8869, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x51, 0x00, 0x02, 0x49, 0x00, 0x06, 0x6B, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x36, 0x00, 0x1A, 0x14, 0x00, 0x3C, 0x1C, 0x00, 0x6A, 0x08, 0x00, 0x09, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x886B, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x10, 0x80, 0x02, 0x21, 0x00, 0x04, 0x82, 0x00, 0x0D, 0x04, 0x00, 0x16, 0x08, 0x00, 0x25, 0x10, 0x80, 0x04, 0xA1, 0x00, 0x04, 0x02, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x886C, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x0A, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x2C, 0x88, 0x00, 0x4A, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x886E, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x09, 0x0C, 0x00, 0x11, 0x26, 0x00, 0x22, 0x12, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x00, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x88, 0x00, 0x0A, 0x50, 0x00, 0x12, 0x20, 0x00, 0x62, 0x98, 0x00, 0x03, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8870, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xA1, 0x00, 0x03, 0x12, 0x00, 0x0D, 0x14, 0x00, 0x31, 0x08, 0x00, 0x01, 0x06, 0x00, 0x01, 0xF9, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8871, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x26, 0x00, 0x02, 0x24, 0x00, 0x06, 0x3F, 0x00, 0x0C, 0x21, 0x00, 0x08, 0x71, 0x00, 0x1A, 0x53, 0x00, 0x3C, 0x5A, 0x00, 0x6A, 0x4E, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x8E, 0x00, 0x09, 0x9A, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8872, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x88, 0x80, 0x04, 0x88, 0x80, 0x05, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x1C, 0x94, 0x80, 0x2A, 0x92, 0x80, 0x09, 0xA2, 0x80, 0x08, 0xC0, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8875, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x02, 0x41, 0x00, 0x06, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x3C, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x09, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8877, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0xC2, 0x00, 0x01, 0x21, 0x00, 0x02, 0x22, 0x00, 0x0E, 0x14, 0x00, 0x32, 0x08, 0x00, 0x02, 0x74, 0x00, 0x03, 0x82, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8879, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7E, 0x88, 0x00, 0x02, 0x88, 0x00, 0x06, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x88, 0x00, 0x3C, 0x8C, 0x00, 0x6A, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x86, 0x00, 0x08, 0x82, 0x80, 0x08, 0xF3, 0x80, 0x0B, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x887B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x02, 0x42, 0x00, 0x06, 0xFF, 0x80, 0x0C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1A, 0x42, 0x00, 0x3C, 0xFF, 0x80, 0x6A, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x887D, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x7E, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x887E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0D, 0xF6, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xA4, 0x00, 0x06, 0x18, 0x00, 0x3A, 0x08, 0x00, 0x03, 0xE6, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x887F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x02, 0x22, 0x00, 0x04, 0x41, 0x00, 0x09, 0x00, 0x80, 0x0A, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x01, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8880, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x7F, 0x80, 0x02, 0x40, 0x80, 0x06, 0xC0, 0x80, 0x0C, 0x3C, 0x80, 0x08, 0x00, 0x80, 0x1A, 0x00, 0x80, 0x3C, 0x0C, 0x80, 0x6A, 0x38, 0x80, 0x08, 0x60, 0x80, 0x08, 0x01, 0x80, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8881, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x91, 0x00, 0x03, 0x12, 0x00, 0x0D, 0x0C, 0x00, 0x31, 0x04, 0x00, 0x01, 0xF2, 0x00, 0x1F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8882, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x7E, 0x00, 0x02, 0x12, 0x00, 0x04, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x1C, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x18, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x09, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8884, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x09, 0xE0, 0x00, 0x7E, 0x20, 0x00, 0x04, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x1B, 0xFF, 0x00, 0x2C, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x09, 0x07, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8885, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x09, 0x50, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0x02, 0x00, 0x00, 0x92, 0x00, 0x7F, 0xFA, 0x00, 0x02, 0x8A, 0x00, 0x06, 0x54, 0x00, 0x0A, 0x20, 0x00, 0x32, 0x9E, 0x00, 0x03, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8888, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x13, 0xBF, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x22, 0x00, 0x0D, 0x14, 0x00, 0x31, 0x68, 0x00, 0x03, 0x86, 0x00, 0x1C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x888B, { 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x7F, 0x80, 0x1F, 0xC0, 0x00, 0x28, 0x20, 0x00, 0x08, 0x18, 0x80, 0x08, 0x07, 0x80, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x21, 0x00, 0x02, 0x22, 0x00, 0x0E, 0x14, 0x00, 0x32, 0x0C, 0x00, 0x03, 0xE6, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x888D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x7F, 0x00, 0x02, 0x81, 0x00, 0x05, 0x01, 0x00, 0x0A, 0x7D, 0x00, 0x0C, 0x45, 0x00, 0x1A, 0x45, 0x00, 0x28, 0x7D, 0x00, 0x08, 0x41, 0x00, 0x08, 0x46, 0x00, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8892, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x02, 0x41, 0x00, 0x04, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8896, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x01, 0x24, 0x80, 0x02, 0x24, 0x80, 0x04, 0xA4, 0x80, 0x05, 0x24, 0x80, 0x0E, 0x3F, 0x80, 0x15, 0x24, 0x80, 0x24, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x04, 0x24, 0x80, 0x04, 0x24, 0x80, 0x04, 0x3F, 0x80, 0x04, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8897, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x02, 0x89, 0x80, 0x05, 0x08, 0x00, 0x08, 0x12, 0x00, 0x0A, 0x22, 0x00, 0x1C, 0x44, 0x00, 0x2A, 0x88, 0x80, 0x08, 0x11, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x08, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8898, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x80, 0x00, 0x06, 0x88, 0x00, 0x0D, 0x4B, 0x00, 0x08, 0x4D, 0x00, 0x1A, 0x59, 0x00, 0x3C, 0x69, 0x00, 0x6A, 0xCB, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x40, 0x80, 0x08, 0x61, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8899, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x06, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x09, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x3C, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x09, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x889A, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x26, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x72, 0x00, 0x1A, 0x56, 0x00, 0x3C, 0x54, 0x00, 0x6A, 0xDC, 0x00, 0x08, 0x88, 0x00, 0x09, 0x9C, 0x00, 0x0B, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x889B, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF8, 0x00, 0x7E, 0x88, 0x00, 0x02, 0x88, 0x00, 0x06, 0x88, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x1A, 0x88, 0x00, 0x3C, 0x8C, 0x00, 0x6A, 0x84, 0x00, 0x08, 0xE4, 0x00, 0x09, 0x86, 0x80, 0x08, 0x02, 0x80, 0x09, 0xFB, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x889C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x1A, 0x2A, 0x00, 0x3C, 0x2A, 0x00, 0x6A, 0x2A, 0x00, 0x09, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x889E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x20, 0x80, 0x03, 0x11, 0x00, 0x05, 0x12, 0x00, 0x09, 0x0C, 0x00, 0x31, 0x04, 0x00, 0x01, 0xE2, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x889F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0xC8, 0x00, 0x06, 0x88, 0x00, 0x0C, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x6A, 0x1C, 0x00, 0x09, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88A0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x1C, 0x1C, 0x00, 0x71, 0x47, 0x80, 0x07, 0x62, 0x00, 0x1C, 0x34, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88A2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x7E, 0x88, 0x80, 0x02, 0x08, 0x00, 0x06, 0x7F, 0x00, 0x0C, 0x08, 0x00, 0x09, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x3C, 0xFF, 0x80, 0x6A, 0x08, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88A4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x18, 0x00, 0x00, 0xA0, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x41, 0x00, 0x06, 0x42, 0x00, 0x39, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC3, 0x00, 0x07, 0x66, 0x00, 0x7C, 0x38, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88A8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x08, 0x62, 0x00, 0x1A, 0x36, 0x00, 0x3C, 0x1C, 0x00, 0x6A, 0x08, 0x00, 0x08, 0x18, 0x00, 0x08, 0x31, 0x00, 0x08, 0x21, 0x00, 0x08, 0x6F, 0x80, 0x08, 0xF8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88AA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1A, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x08, 0x32, 0x00, 0x08, 0x22, 0x00, 0x08, 0x2F, 0x00, 0x08, 0x79, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88AB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x89, 0x00, 0x04, 0x88, 0x00, 0x0A, 0xFF, 0x00, 0x0C, 0xA1, 0x00, 0x1C, 0xA2, 0x00, 0x2A, 0x92, 0x00, 0x08, 0x94, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8C, 0x00, 0x09, 0x14, 0x00, 0x09, 0x22, 0x00, 0x0A, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88AD, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x14, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x40, 0x00, 0x02, 0x78, 0x00, 0x05, 0xC2, 0x00, 0x08, 0x3E, 0x00, 0x11, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x84, 0x00, 0x04, 0x88, 0x00, 0x1C, 0x50, 0x00, 0x65, 0x30, 0x00, 0x06, 0x0E, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88AE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x88, 0x00, 0x07, 0x88, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1A, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x00, 0x98, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x06, 0x34, 0x00, 0x7C, 0x18, 0x00, 0x07, 0xCE, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88B1, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x10, 0x45, 0x00, 0x10, 0x45, 0x80, 0x7C, 0xC4, 0x80, 0x04, 0x84, 0x00, 0x0D, 0xBF, 0x80, 0x1A, 0x84, 0x00, 0x10, 0x84, 0x00, 0x34, 0x84, 0x00, 0x58, 0x8E, 0x00, 0x14, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x10, 0x8A, 0x00, 0x10, 0x9B, 0x00, 0x10, 0x91, 0x00, 0x10, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88B4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x24, 0x00, 0x04, 0x42, 0x00, 0x04, 0xBD, 0x00, 0x0B, 0x00, 0x80, 0x1C, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88B5, { 0x00, 0x00, 0x00, 0x10, 0x43, 0x00, 0x10, 0x46, 0x00, 0x10, 0x5C, 0x00, 0x7C, 0xC4, 0x00, 0x04, 0x84, 0x00, 0x0D, 0x84, 0x00, 0x1A, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x34, 0x84, 0x00, 0x58, 0x84, 0x00, 0x14, 0x84, 0x00, 0x12, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x9F, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88B7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x7E, 0x36, 0x00, 0x02, 0x63, 0x00, 0x06, 0xC1, 0x80, 0x0C, 0x00, 0x00, 0x09, 0x3E, 0x00, 0x1B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x6B, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88BA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x1A, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x6A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88BC, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x00, 0xC4, 0x00, 0x7E, 0xA8, 0x00, 0x05, 0x10, 0x00, 0x08, 0x28, 0x00, 0x1A, 0x44, 0x00, 0x2D, 0x83, 0x00, 0x4A, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88BD, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x47, 0x80, 0x7C, 0x44, 0x80, 0x07, 0xF4, 0x80, 0x0C, 0x94, 0x80, 0x18, 0x94, 0x80, 0x10, 0x94, 0x80, 0x35, 0x94, 0x80, 0x59, 0x34, 0x80, 0x15, 0x24, 0x80, 0x13, 0xE4, 0x80, 0x10, 0x54, 0x80, 0x10, 0xD4, 0x80, 0x11, 0x87, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88BE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x48, 0x00, 0x06, 0xC8, 0x00, 0x0C, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x2A, 0x00, 0x3C, 0x2A, 0x00, 0x6A, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88BF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x09, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88C0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x02, 0x88, 0x80, 0x06, 0xBE, 0x80, 0x0C, 0x88, 0x80, 0x08, 0x88, 0x80, 0x1A, 0x9C, 0x80, 0x3C, 0x94, 0x80, 0x6A, 0x94, 0x80, 0x08, 0xA2, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88C1, { 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x02, 0x22, 0x00, 0x1F, 0xE0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x02, 0x21, 0x00, 0x3F, 0xD1, 0x00, 0x05, 0x32, 0x00, 0x09, 0x52, 0x00, 0x38, 0x8C, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xB4, 0x80, 0x38, 0x22, 0x80, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88C2, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xE9, 0x00, 0x04, 0x09, 0x00, 0x07, 0xC9, 0x00, 0x08, 0x49, 0x00, 0x14, 0x89, 0x00, 0x23, 0x09, 0x00, 0x06, 0x43, 0x00, 0x18, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x22, 0x00, 0x0D, 0x14, 0x00, 0x31, 0x08, 0x00, 0x01, 0xF6, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88C3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x7E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x09, 0x00, 0x00, 0x1A, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x09, 0x1E, 0x00, 0x08, 0x13, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88C4, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x4F, 0x00, 0x10, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x05, 0x00, 0x00, 0x0C, 0x40, 0x00, 0x18, 0x5F, 0x80, 0x10, 0x82, 0x00, 0x34, 0x82, 0x00, 0x59, 0x82, 0x00, 0x14, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88C5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x10, 0x00, 0x37, 0xFF, 0x80, 0x14, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x75, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x42, 0x00, 0x06, 0x66, 0x00, 0x7C, 0x34, 0x00, 0x04, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88C6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x00, 0x56, 0x00, 0x7E, 0x58, 0x00, 0x04, 0x12, 0x00, 0x08, 0xFF, 0x00, 0x1A, 0x02, 0x00, 0x2C, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88C9, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x7E, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1A, 0xFC, 0x00, 0x2C, 0xA2, 0x00, 0x4A, 0xA4, 0x00, 0x08, 0x98, 0x00, 0x08, 0x90, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA7, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88CA, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x87, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x22, 0x00, 0x0C, 0x34, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88CB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x02, 0x7E, 0x00, 0x06, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x3C, 0x00, 0x00, 0x6A, 0x42, 0x00, 0x08, 0x66, 0x00, 0x08, 0x24, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88CC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x02, 0x49, 0x00, 0x06, 0x49, 0x00, 0x0C, 0x49, 0x00, 0x08, 0xAA, 0x80, 0x1A, 0xAA, 0x80, 0x3C, 0x1C, 0x00, 0x6A, 0x14, 0x00, 0x09, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88CD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x02, 0x88, 0x80, 0x06, 0xBE, 0x80, 0x0C, 0x88, 0x80, 0x08, 0x9C, 0x80, 0x1A, 0x9C, 0x80, 0x3C, 0xAA, 0x80, 0x6A, 0xAA, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88CE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x02, 0x42, 0x00, 0x06, 0x7E, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x1A, 0xF8, 0x00, 0x3C, 0x10, 0x00, 0x6A, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88CF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x12, 0x00, 0x3E, 0x0C, 0x00, 0x03, 0xF6, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88D1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x02, 0x42, 0x00, 0x06, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x09, 0x42, 0x00, 0x1A, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x6A, 0x43, 0x80, 0x09, 0xFE, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x32, 0x00, 0x09, 0xC2, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88D2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x41, 0x00, 0x06, 0x63, 0x00, 0x1C, 0x36, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88D3, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0xA8, 0x00, 0x0C, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x1B, 0xFB, 0x00, 0x3C, 0xAA, 0x00, 0x6A, 0xAE, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x8E, 0x80, 0x09, 0x1A, 0x80, 0x08, 0x33, 0x80, 0x08, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88D4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x90, 0x00, 0x07, 0x0C, 0x00, 0x39, 0x03, 0x80, 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x12, 0x1F, 0x00, 0x1D, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88D5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x41, 0x00, 0x02, 0x88, 0x80, 0x04, 0x14, 0x00, 0x04, 0x22, 0x00, 0x0A, 0x41, 0x00, 0x1C, 0x80, 0x80, 0x2A, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88D8, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x18, 0x86, 0x00, 0x0C, 0xDC, 0x00, 0x02, 0xB0, 0x00, 0x0E, 0x9C, 0x00, 0x38, 0x07, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x22, 0x00, 0x0C, 0x34, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88D9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x02, 0xFF, 0x80, 0x04, 0x12, 0x00, 0x05, 0x12, 0x00, 0x0A, 0x7E, 0x00, 0x1C, 0x20, 0x00, 0x1A, 0x20, 0x00, 0x28, 0x7E, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x09, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88DB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x18, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0x62, 0x00, 0x07, 0x34, 0x00, 0x7C, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88DC, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x0A, 0x88, 0x80, 0x0C, 0x88, 0x80, 0x1A, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88DD, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x09, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x21, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x21, 0x00, 0x05, 0x12, 0x00, 0x09, 0x0C, 0x00, 0x31, 0xF6, 0x00, 0x0E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88DE, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x04, 0x00, 0x08, 0x66, 0x00, 0x7E, 0xC3, 0x00, 0x03, 0x81, 0x80, 0x06, 0xFF, 0x00, 0x0C, 0x81, 0x00, 0x08, 0x81, 0x00, 0x1A, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x6A, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88DF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x92, 0x00, 0x21, 0x11, 0x00, 0x1A, 0x10, 0x80, 0x08, 0x10, 0x00, 0x10, 0x71, 0x80, 0x10, 0x0E, 0x00, 0x21, 0xF0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xA1, 0x00, 0x07, 0x12, 0x00, 0x39, 0x0C, 0x00, 0x01, 0xE6, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88E1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x05, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x1C, 0x08, 0x00, 0x1A, 0x08, 0x00, 0x29, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88E2, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x12, 0x10, 0x00, 0x11, 0x14, 0x00, 0x01, 0x7E, 0x00, 0x7C, 0x20, 0x00, 0x08, 0x28, 0x00, 0x13, 0x48, 0x00, 0x15, 0x7E, 0x00, 0x39, 0x08, 0x00, 0x55, 0x0A, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x12, 0x8B, 0x00, 0x14, 0x7E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88E3, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x00, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x05, 0x14, 0x00, 0x0A, 0xFB, 0x00, 0x1A, 0x00, 0x00, 0x2D, 0x24, 0x00, 0x4A, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88E4, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x18, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x7F, 0x24, 0x00, 0x05, 0xFE, 0x00, 0x09, 0x40, 0x00, 0x1B, 0x94, 0x00, 0x2D, 0xFE, 0x00, 0x4B, 0x10, 0x00, 0x09, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88E5, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x08, 0xDF, 0x00, 0x08, 0x42, 0x00, 0x01, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x05, 0x7A, 0x00, 0x09, 0x4A, 0x00, 0x1B, 0x4A, 0x00, 0x2D, 0x7A, 0x00, 0x4B, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88E7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x80, 0x08, 0x49, 0x80, 0x7E, 0xDD, 0x00, 0x02, 0x94, 0x00, 0x06, 0x36, 0x00, 0x0C, 0x63, 0x00, 0x08, 0xC9, 0x80, 0x1A, 0x08, 0x00, 0x3C, 0x48, 0x80, 0x6A, 0x49, 0x80, 0x08, 0xDD, 0x00, 0x08, 0x94, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88E8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x02, 0x91, 0x00, 0x04, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x1C, 0x91, 0x00, 0x2A, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88EF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x02, 0xBE, 0x80, 0x06, 0x88, 0x80, 0x0C, 0xBE, 0x80, 0x08, 0x88, 0x80, 0x1A, 0x80, 0x80, 0x3C, 0xBE, 0x80, 0x6A, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x09, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88F0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x7D, 0xAD, 0x00, 0x04, 0x42, 0x00, 0x0C, 0xA5, 0x00, 0x19, 0x08, 0x80, 0x10, 0x00, 0x00, 0x35, 0xEF, 0x00, 0x58, 0x21, 0x00, 0x15, 0x21, 0x00, 0x10, 0xCA, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x2A, 0x00, 0x12, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88F1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x1A, 0x28, 0x00, 0x3C, 0x68, 0x80, 0x6A, 0x4D, 0x80, 0x08, 0xC5, 0x00, 0x09, 0x46, 0x00, 0x08, 0x42, 0x00, 0x08, 0x73, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88F2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x11, 0x00, 0x19, 0x11, 0x00, 0x11, 0xDD, 0x00, 0x35, 0x55, 0x00, 0x59, 0x55, 0x00, 0x15, 0x55, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88F3, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xA0, 0x00, 0x03, 0x13, 0x00, 0x0D, 0x0C, 0x00, 0x31, 0x04, 0x00, 0x01, 0xE2, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88F4, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x1F, 0x9F, 0x80, 0x00, 0x90, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x90, 0x00, 0x03, 0xDF, 0x80, 0x1D, 0x10, 0x00, 0x02, 0x50, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x90, 0x00, 0x07, 0x09, 0x00, 0x39, 0x36, 0x00, 0x01, 0xC1, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88F5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x01, 0xD0, 0x00, 0x3F, 0x1F, 0x80, 0x02, 0x10, 0x00, 0x04, 0xD0, 0x00, 0x19, 0x22, 0x00, 0x03, 0x14, 0x00, 0x0D, 0x08, 0x00, 0x31, 0x06, 0x00, 0x01, 0xF1, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88F7, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x52, 0x00, 0x08, 0x91, 0x00, 0x7E, 0x10, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x24, 0x00, 0x0C, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x3C, 0x81, 0x00, 0x6D, 0x7E, 0x80, 0x0A, 0x42, 0x00, 0x08, 0x46, 0x00, 0x08, 0x40, 0x00, 0x08, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88F8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x02, 0xFF, 0x80, 0x04, 0x88, 0x80, 0x0A, 0x88, 0x80, 0x0C, 0xFF, 0x80, 0x1A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88F9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x44, 0x00, 0x32, 0x62, 0x00, 0x0C, 0x35, 0x80, 0x74, 0x18, 0x00, 0x07, 0xCE, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88FC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x02, 0x7E, 0x00, 0x06, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x1A, 0x20, 0x00, 0x3C, 0x7F, 0x80, 0x6A, 0xCA, 0x80, 0x09, 0x92, 0x80, 0x08, 0x24, 0x80, 0x08, 0xC9, 0x80, 0x08, 0x11, 0x00, 0x08, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x88FD, { 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x22, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0xC3, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x11, 0x00, 0x0D, 0x0A, 0x00, 0x31, 0xF6, 0x00, 0x1F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x88FE, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x7C, 0x81, 0x00, 0x04, 0xFF, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x1A, 0xFF, 0x80, 0x14, 0x88, 0x00, 0x38, 0x88, 0x00, 0x54, 0xBF, 0x00, 0x14, 0xA1, 0x00, 0x11, 0xA1, 0x00, 0x11, 0x21, 0x00, 0x13, 0x21, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8901, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0C, 0x8C, 0x00, 0x70, 0x83, 0x80, 0x01, 0x46, 0x00, 0x07, 0x6C, 0x00, 0x7C, 0x38, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8902, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x11, 0xF2, 0x00, 0x7C, 0x42, 0x00, 0x04, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x1B, 0xFB, 0x00, 0x10, 0x02, 0x80, 0x34, 0x42, 0x80, 0x58, 0x42, 0x00, 0x15, 0xF2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x7A, 0x00, 0x13, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8904, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x04, 0xFF, 0x00, 0x0C, 0x11, 0x00, 0x19, 0xFF, 0x80, 0x10, 0x11, 0x00, 0x34, 0xFF, 0x00, 0x58, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x10, 0x22, 0x00, 0x10, 0x46, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x17, 0x00, 0x11, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8906, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x06, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x1A, 0xFF, 0x80, 0x3C, 0x08, 0x00, 0x6A, 0x48, 0x00, 0x08, 0x4F, 0x00, 0x08, 0x48, 0x00, 0x08, 0xE8, 0x00, 0x09, 0xB8, 0x00, 0x0B, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8907, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x28, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x42, 0x00, 0x08, 0xA4, 0x00, 0x0B, 0x18, 0x00, 0x08, 0x66, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x890A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x05, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x35, 0x7F, 0x00, 0x59, 0x55, 0x00, 0x15, 0x55, 0x00, 0x11, 0x7F, 0x00, 0x13, 0x55, 0x00, 0x12, 0x55, 0x00, 0x16, 0x55, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x890C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x80, 0x7D, 0x10, 0x80, 0x04, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x18, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x34, 0xFF, 0x00, 0x58, 0x91, 0x00, 0x14, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x890D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x02, 0xFF, 0x80, 0x06, 0x00, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x1A, 0x10, 0x00, 0x3C, 0xFF, 0x80, 0x6A, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x890E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0x20, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x2A, 0x00, 0x20, 0x6B, 0x00, 0x3E, 0xC9, 0x80, 0x00, 0x08, 0x00, 0x01, 0xC6, 0x00, 0x07, 0x6C, 0x00, 0x7C, 0x38, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x890F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x06, 0x10, 0x00, 0x3C, 0xFF, 0x00, 0x20, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x91, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC6, 0x00, 0x07, 0x6C, 0x00, 0x7C, 0x38, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8910, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x05, 0x10, 0x00, 0x0A, 0x20, 0x00, 0x1C, 0x7F, 0x80, 0x2A, 0xC8, 0x80, 0x09, 0x54, 0x80, 0x08, 0x62, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8912, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x04, 0x38, 0x00, 0x04, 0x56, 0x00, 0x05, 0x91, 0x80, 0x00, 0xA2, 0x00, 0x01, 0x24, 0x00, 0x07, 0x18, 0x00, 0x39, 0x08, 0x00, 0x01, 0xF6, 0x00, 0x1F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8913, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0xA2, 0x00, 0x3E, 0xA2, 0x00, 0x03, 0xA2, 0x00, 0x05, 0xBE, 0x00, 0x0A, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x8C, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x9A, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xC9, 0x00, 0x08, 0x88, 0x80, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8915, { 0x00, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x08, 0x18, 0x00, 0x08, 0x6C, 0x00, 0x7E, 0xC6, 0x00, 0x03, 0xBB, 0x80, 0x06, 0x00, 0x00, 0x0D, 0xE4, 0x80, 0x09, 0x24, 0x80, 0x1B, 0xAD, 0x80, 0x3D, 0x69, 0x00, 0x6B, 0x29, 0x00, 0x09, 0xA9, 0x00, 0x09, 0x6D, 0x80, 0x09, 0x24, 0x80, 0x09, 0x24, 0x80, 0x09, 0x64, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8916, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x02, 0x04, 0x00, 0x07, 0xFF, 0x80, 0x0C, 0x20, 0x00, 0x08, 0x51, 0x00, 0x1A, 0x9A, 0x00, 0x3C, 0x2C, 0x00, 0x6A, 0x48, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8918, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x22, 0x00, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x90, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8919, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xE7, 0x80, 0x3E, 0x24, 0x00, 0x02, 0x64, 0x00, 0x05, 0xA4, 0x80, 0x0A, 0x27, 0x80, 0x0C, 0x00, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x891A, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x12, 0x00, 0x02, 0x16, 0x00, 0x06, 0x14, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x0C, 0x00, 0x1A, 0x12, 0x00, 0x3C, 0x3F, 0x00, 0x6A, 0xE1, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x891B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0xA8, 0x00, 0x09, 0x24, 0x00, 0x1A, 0x23, 0x00, 0x2C, 0x40, 0x00, 0x4B, 0xFF, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x08, 0x00, 0x08, 0xD0, 0x00, 0x08, 0x20, 0x00, 0x08, 0xD8, 0x00, 0x0B, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x891C, { 0x00, 0x00, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x81, 0x00, 0x3E, 0xF9, 0x00, 0x23, 0x49, 0x00, 0x3E, 0x79, 0x00, 0x22, 0x47, 0x00, 0x62, 0x60, 0x80, 0x4E, 0x3F, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x22, 0x00, 0x0C, 0x34, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x891D, { 0x00, 0x00, 0x00, 0x11, 0x21, 0x00, 0x11, 0xB3, 0x00, 0x10, 0x92, 0x00, 0x7C, 0xFE, 0x00, 0x04, 0x92, 0x00, 0x0C, 0x92, 0x00, 0x18, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x34, 0x92, 0x00, 0x58, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x891E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x02, 0x5D, 0x00, 0x06, 0x55, 0x00, 0x0C, 0x63, 0x00, 0x09, 0x7F, 0x00, 0x1A, 0x00, 0x00, 0x3C, 0x7F, 0x00, 0x6A, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8920, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x24, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x3C, 0x91, 0x00, 0x6B, 0xFF, 0x80, 0x08, 0x91, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x08, 0x97, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8921, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x7E, 0x20, 0x00, 0x04, 0x50, 0x00, 0x08, 0x88, 0x00, 0x1D, 0x04, 0x00, 0x2A, 0xFB, 0x00, 0x4C, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8925, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x3E, 0xFF, 0x00, 0x02, 0x80, 0x00, 0x04, 0xFF, 0x80, 0x04, 0xA9, 0x00, 0x0A, 0xA6, 0x00, 0x1C, 0xBA, 0x80, 0x2C, 0xE1, 0x80, 0x0A, 0x82, 0x00, 0x08, 0xFF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x82, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8926, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8B, 0x00, 0x11, 0xAE, 0x00, 0x7D, 0x28, 0x00, 0x07, 0xD8, 0x80, 0x0C, 0x09, 0x80, 0x19, 0xE7, 0x00, 0x11, 0x20, 0x00, 0x35, 0x20, 0x00, 0x59, 0xE8, 0x00, 0x15, 0x2B, 0x00, 0x11, 0x2E, 0x00, 0x11, 0xE8, 0x00, 0x11, 0x28, 0x80, 0x11, 0x29, 0x80, 0x11, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8927, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x08, 0x00, 0x22, 0x48, 0x80, 0x3E, 0x49, 0x80, 0x22, 0xDD, 0x00, 0x3E, 0x94, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x62, 0x41, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x22, 0x00, 0x0C, 0x34, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8928, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x02, 0x10, 0x00, 0x06, 0x7E, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1A, 0xFF, 0x00, 0x3C, 0x10, 0x00, 0x6A, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x892A, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x5F, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x04, 0x1F, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x91, 0x00, 0x1C, 0x1F, 0x00, 0x1A, 0x18, 0x80, 0x29, 0xD5, 0x00, 0x08, 0x52, 0x00, 0x08, 0x53, 0x00, 0x08, 0x5C, 0x80, 0x08, 0x70, 0x00, 0x08, 0x9F, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x892B, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x10, 0x0E, 0x00, 0x11, 0xF8, 0x00, 0x7D, 0x0F, 0x00, 0x05, 0x08, 0x00, 0x0D, 0x7F, 0x80, 0x19, 0x48, 0x80, 0x11, 0x4E, 0x00, 0x35, 0x78, 0x80, 0x59, 0x4F, 0x80, 0x15, 0x40, 0x00, 0x11, 0x52, 0x00, 0x11, 0x52, 0x00, 0x12, 0x52, 0x80, 0x10, 0xB2, 0x80, 0x10, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8930, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1C, 0x8E, 0x00, 0x70, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x02, 0x42, 0x00, 0x3C, 0x34, 0x00, 0x07, 0x98, 0x00, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8931, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1E, 0x9E, 0x00, 0x00, 0x80, 0x00, 0x1E, 0x9E, 0x00, 0x00, 0x81, 0x00, 0x06, 0x63, 0x00, 0x1C, 0x36, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8932, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x00, 0x02, 0x88, 0x00, 0x06, 0xFF, 0x80, 0x0C, 0x88, 0x00, 0x08, 0xBF, 0x00, 0x1A, 0xA9, 0x00, 0x3C, 0xBF, 0x00, 0x6A, 0xA9, 0x00, 0x08, 0xBF, 0x00, 0x09, 0x88, 0x00, 0x09, 0x7F, 0x80, 0x0B, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8934, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x09, 0x48, 0x00, 0x09, 0x4A, 0x00, 0x01, 0x5F, 0x00, 0x7F, 0x50, 0x00, 0x05, 0x68, 0x00, 0x09, 0x44, 0x00, 0x1A, 0x40, 0x00, 0x2C, 0x02, 0x00, 0x4B, 0xFF, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8935, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x02, 0x55, 0x00, 0x06, 0x49, 0x00, 0x0C, 0x55, 0x00, 0x08, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x3C, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x08, 0x90, 0x80, 0x08, 0x94, 0x80, 0x08, 0xBA, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8936, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x52, 0x80, 0x3E, 0x94, 0x80, 0x03, 0x39, 0x80, 0x04, 0x52, 0x80, 0x04, 0x9C, 0x80, 0x0A, 0x31, 0x80, 0x1C, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8938, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x92, 0x00, 0x04, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0xFE, 0x00, 0x1C, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x09, 0xE8, 0x00, 0x08, 0x3C, 0x00, 0x0B, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8939, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x13, 0xE4, 0x00, 0x7C, 0x84, 0x00, 0x04, 0x9F, 0x00, 0x0F, 0xE5, 0x00, 0x19, 0x45, 0x00, 0x11, 0x45, 0x00, 0x36, 0x75, 0x00, 0x58, 0x8D, 0x00, 0x14, 0x87, 0x00, 0x13, 0xE5, 0x00, 0x10, 0x8D, 0x00, 0x10, 0x89, 0x00, 0x13, 0xE9, 0x00, 0x10, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x893A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3E, 0x00, 0x7F, 0xCA, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0x9A, 0x00, 0x04, 0x16, 0x80, 0x3F, 0xB2, 0x80, 0x04, 0x61, 0x80, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x22, 0x00, 0x0C, 0x34, 0x00, 0x74, 0x18, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x893B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x04, 0x7E, 0x00, 0x3F, 0x92, 0x00, 0x0A, 0x32, 0x00, 0x35, 0x1A, 0x80, 0x1F, 0xA3, 0x80, 0x04, 0x40, 0x00, 0x3F, 0xA3, 0x00, 0x01, 0x2C, 0x00, 0x06, 0x10, 0x00, 0x3C, 0x0C, 0x00, 0x05, 0xE3, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x893E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0xA4, 0x80, 0x06, 0xA4, 0x80, 0x0C, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1A, 0x7F, 0x00, 0x3C, 0x00, 0x00, 0x6A, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x4A, 0x00, 0x08, 0xCB, 0x00, 0x09, 0x89, 0x80, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8940, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x08, 0x00, 0x06, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1A, 0x41, 0x00, 0x3C, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8941, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xCE, 0x00, 0x08, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x02, 0x4A, 0x00, 0x05, 0xCE, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x1F, 0x00, 0x1D, 0x15, 0x00, 0x2B, 0xD5, 0x00, 0x08, 0x55, 0x00, 0x08, 0x5F, 0x00, 0x08, 0x44, 0x00, 0x08, 0x45, 0x00, 0x08, 0x87, 0x00, 0x0B, 0x38, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8942, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x08, 0x3C, 0x00, 0x7E, 0x42, 0x00, 0x02, 0x94, 0x80, 0x06, 0xF7, 0x80, 0x0C, 0x08, 0x00, 0x08, 0x14, 0x00, 0x1A, 0x22, 0x00, 0x3C, 0xC9, 0x80, 0x6A, 0x10, 0x00, 0x08, 0x64, 0x00, 0x08, 0x1B, 0x00, 0x08, 0x66, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8943, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x06, 0x3E, 0x00, 0x3C, 0x22, 0x00, 0x20, 0x3E, 0x00, 0x3E, 0x08, 0x00, 0x20, 0xFF, 0x80, 0x20, 0x2A, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x88, 0x80, 0x01, 0xC6, 0x00, 0x07, 0x6C, 0x00, 0x7C, 0x38, 0x00, 0x07, 0x8E, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8944, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xBE, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xA1, 0x00, 0x07, 0x12, 0x00, 0x39, 0x0C, 0x00, 0x03, 0xF6, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8945, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x02, 0x88, 0x80, 0x06, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x08, 0x49, 0x00, 0x1A, 0xFF, 0x80, 0x3C, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8946, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x94, 0x80, 0x08, 0x55, 0x00, 0x7E, 0x14, 0x00, 0x02, 0xFF, 0x80, 0x06, 0x41, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x1A, 0x08, 0x00, 0x3C, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8949, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x7E, 0xF7, 0x80, 0x02, 0x94, 0x80, 0x06, 0xF7, 0x80, 0x0C, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x1A, 0xA2, 0x80, 0x3C, 0xBE, 0x80, 0x6A, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x08, 0xA6, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x894C, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7C, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x92, 0x00, 0x18, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x34, 0x92, 0x00, 0x58, 0x92, 0x00, 0x14, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x894D, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x24, 0x00, 0x08, 0x7F, 0x80, 0x7E, 0xC8, 0x00, 0x02, 0x7F, 0x00, 0x06, 0x48, 0x00, 0x0C, 0x7F, 0x00, 0x09, 0x48, 0x00, 0x1A, 0x7F, 0x80, 0x3C, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x09, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x894F, { 0x00, 0x00, 0x00, 0x10, 0xF2, 0x00, 0x10, 0x14, 0x80, 0x11, 0xA9, 0x00, 0x7C, 0x46, 0x00, 0x07, 0x81, 0x80, 0x0C, 0x00, 0x00, 0x19, 0xCE, 0x00, 0x10, 0x4A, 0x00, 0x35, 0xCA, 0x80, 0x59, 0x11, 0x80, 0x15, 0xC0, 0x00, 0x10, 0x7F, 0x80, 0x10, 0x51, 0x00, 0x10, 0x4A, 0x00, 0x10, 0xC4, 0x00, 0x11, 0xBB, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8952, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x11, 0x52, 0x00, 0x13, 0x5B, 0x80, 0x7E, 0x4E, 0x80, 0x04, 0x44, 0x80, 0x0F, 0xFA, 0x80, 0x1A, 0x4A, 0x80, 0x12, 0x4A, 0x80, 0x36, 0x4B, 0x80, 0x5A, 0xE9, 0x00, 0x17, 0x59, 0x00, 0x12, 0x49, 0x00, 0x12, 0x4B, 0x00, 0x12, 0x4A, 0x80, 0x12, 0x4A, 0x80, 0x12, 0x1C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8956, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x05, 0x55, 0x00, 0x0D, 0x11, 0x00, 0x09, 0x7D, 0x00, 0x19, 0x39, 0x00, 0x35, 0x55, 0x00, 0x79, 0x11, 0x00, 0x14, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8957, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x7E, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x06, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x1A, 0x42, 0x00, 0x3C, 0x24, 0x00, 0x6A, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x895A, { 0x00, 0x00, 0x00, 0x12, 0x0E, 0x00, 0x13, 0x23, 0x00, 0x11, 0x61, 0x80, 0x7C, 0x5E, 0x80, 0x05, 0x08, 0x00, 0x0D, 0x90, 0x80, 0x18, 0xA9, 0x80, 0x10, 0x09, 0x00, 0x35, 0x94, 0x00, 0x58, 0xA6, 0x00, 0x14, 0x8D, 0x00, 0x10, 0x94, 0x80, 0x10, 0xA4, 0x00, 0x11, 0x8C, 0x00, 0x11, 0x40, 0x00, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x895B, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x55, 0x00, 0x06, 0x7F, 0x00, 0x0C, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x80, 0x00, 0x3C, 0xBF, 0x00, 0x6A, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0xA9, 0x00, 0x08, 0xAD, 0x00, 0x09, 0x36, 0x00, 0x08, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x895C, { 0x00, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x48, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x92, 0x00, 0x02, 0xE3, 0x80, 0x06, 0x9E, 0x00, 0x0C, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x1A, 0x80, 0x00, 0x3C, 0x9E, 0x00, 0x6A, 0x80, 0x00, 0x08, 0x9E, 0x00, 0x08, 0x80, 0x00, 0x08, 0xBF, 0x00, 0x09, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x895E, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xBF, 0x80, 0x10, 0x91, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x28, 0xBF, 0x80, 0x68, 0x84, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x06, 0x34, 0x00, 0x7C, 0x18, 0x00, 0x07, 0xCE, 0x00, 0x1C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x895F, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x42, 0x00, 0x02, 0xE7, 0x00, 0x05, 0x5A, 0x80, 0x0A, 0x52, 0x00, 0x0C, 0x42, 0x00, 0x1C, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8960, { 0x00, 0x00, 0x00, 0x10, 0x91, 0x00, 0x10, 0xD3, 0x00, 0x10, 0x52, 0x00, 0x7D, 0xFF, 0x80, 0x05, 0x00, 0x80, 0x0D, 0x7E, 0x80, 0x18, 0x42, 0x00, 0x10, 0x7E, 0x00, 0x34, 0x00, 0x00, 0x58, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8961, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x7E, 0xA9, 0x00, 0x02, 0xFF, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x7F, 0x80, 0x08, 0xD0, 0x80, 0x1A, 0x7C, 0x80, 0x3C, 0x54, 0x80, 0x6A, 0x54, 0x80, 0x09, 0x7C, 0x80, 0x08, 0x14, 0x80, 0x08, 0x3D, 0x80, 0x08, 0xE5, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8962, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x06, 0x5D, 0x00, 0x0C, 0x55, 0x00, 0x09, 0x5D, 0x00, 0x1A, 0x41, 0x00, 0x3C, 0x7F, 0x00, 0x6A, 0x22, 0x00, 0x09, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8963, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x02, 0x42, 0x00, 0x06, 0x7E, 0x00, 0x0C, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x1A, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x6A, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8964, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x44, 0x00, 0x3F, 0xF7, 0x80, 0x05, 0x18, 0x00, 0x05, 0xF0, 0x00, 0x09, 0x40, 0x00, 0x0B, 0xF7, 0x80, 0x1D, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x29, 0x00, 0x09, 0x29, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8966, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x05, 0x10, 0x80, 0x0D, 0xD6, 0x80, 0x19, 0x10, 0x80, 0x10, 0xD6, 0x00, 0x34, 0x00, 0x00, 0x59, 0xFF, 0x80, 0x14, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x896A, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x02, 0xFF, 0x80, 0x04, 0xA2, 0x80, 0x09, 0xFF, 0x80, 0x0A, 0x0A, 0x00, 0x1C, 0x89, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x86, 0x00, 0x09, 0x04, 0x00, 0x09, 0x1A, 0x80, 0x0A, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x896B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x05, 0xD7, 0x00, 0x0C, 0x92, 0x00, 0x19, 0xD7, 0x00, 0x11, 0x55, 0x00, 0x35, 0xD7, 0x00, 0x59, 0x55, 0x00, 0x15, 0x55, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x28, 0x00, 0x10, 0x6C, 0x00, 0x10, 0xC6, 0x00, 0x13, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x896D, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x9F, 0x80, 0x10, 0x84, 0x00, 0x7F, 0xEF, 0x00, 0x04, 0x89, 0x00, 0x0C, 0x89, 0x00, 0x1B, 0xEF, 0x00, 0x10, 0x09, 0x00, 0x34, 0x09, 0x00, 0x59, 0xEF, 0x00, 0x15, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x2F, 0x00, 0x11, 0xE0, 0x00, 0x10, 0x09, 0x00, 0x10, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x896E, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x02, 0x7E, 0x00, 0x06, 0x24, 0x00, 0x0C, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x1A, 0xFF, 0x80, 0x3C, 0x24, 0x00, 0x6A, 0x52, 0x00, 0x09, 0xD5, 0x80, 0x08, 0x38, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x896F, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x9F, 0x00, 0x13, 0xF1, 0x00, 0x7D, 0x51, 0x00, 0x05, 0x5F, 0x00, 0x0D, 0x51, 0x00, 0x1B, 0xF1, 0x00, 0x10, 0x9F, 0x00, 0x34, 0x91, 0x00, 0x5B, 0xF1, 0x00, 0x14, 0x9F, 0x00, 0x11, 0xCA, 0x00, 0x12, 0xAA, 0x00, 0x14, 0x9A, 0x80, 0x10, 0x92, 0x80, 0x10, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8970, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x9F, 0x80, 0x13, 0xE4, 0x80, 0x78, 0x89, 0x80, 0x0B, 0xE0, 0x00, 0x0A, 0xAF, 0x80, 0x1A, 0xA8, 0x80, 0x12, 0xAF, 0x80, 0x37, 0xE8, 0x80, 0x58, 0x8F, 0x80, 0x15, 0x88, 0x80, 0x11, 0xC8, 0x80, 0x12, 0xAF, 0x80, 0x12, 0xA5, 0x00, 0x14, 0x8D, 0x80, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8972, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x1F, 0x01, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x80, 0x11, 0x3F, 0x80, 0x13, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x42, 0x00, 0x0A, 0x34, 0x00, 0x33, 0xEC, 0x00, 0x1E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8973, { 0x00, 0x00, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA5, 0x00, 0x11, 0x55, 0x80, 0x7D, 0x54, 0x80, 0x04, 0x04, 0x00, 0x0D, 0xFF, 0x80, 0x18, 0xA4, 0x00, 0x11, 0xB5, 0x00, 0x34, 0xA5, 0x00, 0x59, 0xB5, 0x00, 0x14, 0xA7, 0x00, 0x11, 0xB2, 0x00, 0x10, 0xA6, 0x00, 0x10, 0xF6, 0x80, 0x13, 0x8B, 0x80, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8974, { 0x00, 0x00, 0x00, 0x11, 0xE7, 0x80, 0x11, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x7D, 0x24, 0x80, 0x05, 0xE7, 0x80, 0x0D, 0x10, 0x80, 0x19, 0x7E, 0x80, 0x11, 0x10, 0x80, 0x35, 0x7E, 0x80, 0x59, 0x56, 0x80, 0x15, 0x7A, 0x80, 0x11, 0x52, 0x80, 0x11, 0x7E, 0x80, 0x11, 0x34, 0x80, 0x11, 0x52, 0x80, 0x11, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8975, { 0x00, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x10, 0x78, 0x00, 0x7C, 0x48, 0x00, 0x04, 0x78, 0x00, 0x0C, 0x4E, 0x00, 0x19, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x37, 0xFF, 0x80, 0x59, 0x4A, 0x00, 0x15, 0xCE, 0x00, 0x11, 0x4A, 0x00, 0x11, 0xCE, 0x00, 0x11, 0x4A, 0x00, 0x13, 0xDE, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8977, { 0x00, 0x00, 0x00, 0x10, 0xD0, 0x00, 0x11, 0x9B, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x9B, 0x00, 0x05, 0x29, 0x00, 0x0D, 0xAB, 0x00, 0x19, 0x29, 0x00, 0x13, 0xFF, 0x80, 0x34, 0x44, 0x00, 0x58, 0xBA, 0x00, 0x15, 0x11, 0x00, 0x12, 0xFE, 0x80, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x897A, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7C, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x0E, 0x54, 0x80, 0x1A, 0x94, 0x80, 0x13, 0xBF, 0x80, 0x36, 0x55, 0x80, 0x5A, 0x95, 0x80, 0x17, 0xFF, 0x80, 0x12, 0x54, 0x80, 0x12, 0xF6, 0x80, 0x13, 0x5D, 0x80, 0x12, 0x50, 0x80, 0x12, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x897B, { 0x00, 0x00, 0x00, 0x10, 0xAA, 0x00, 0x13, 0xD7, 0x80, 0x10, 0xAA, 0x00, 0x7D, 0xD7, 0x00, 0x06, 0xAA, 0x80, 0x0C, 0x82, 0x00, 0x18, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x34, 0x44, 0x00, 0x58, 0xFA, 0x00, 0x1B, 0x11, 0x80, 0x14, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x897C, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x48, 0x00, 0x7C, 0x84, 0x00, 0x05, 0xE4, 0x00, 0x0C, 0x8F, 0x00, 0x1B, 0xF5, 0x00, 0x11, 0x2D, 0x00, 0x36, 0xB7, 0x00, 0x59, 0xC5, 0x00, 0x18, 0x85, 0x00, 0x15, 0xE9, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x11, 0xFD, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x897D, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x24, 0x00, 0x7D, 0xE7, 0x80, 0x05, 0x24, 0x80, 0x0D, 0xE7, 0x80, 0x19, 0x24, 0x80, 0x11, 0xE7, 0x80, 0x35, 0x10, 0x80, 0x59, 0xFF, 0x80, 0x15, 0x52, 0x80, 0x11, 0x76, 0x80, 0x11, 0x5A, 0x80, 0x11, 0x7E, 0x80, 0x11, 0x38, 0x80, 0x11, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x897E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x897F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x12, 0x13, 0x00, 0x14, 0x1F, 0x00, 0x18, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8981, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x04, 0x08, 0x00, 0x0F, 0x90, 0x00, 0x10, 0x78, 0x00, 0x03, 0x86, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8983, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8986, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x3F, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x15, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x7F, 0x00, 0x28, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x09, 0xC4, 0x00, 0x08, 0x38, 0x00, 0x0B, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8987, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x0A, 0x91, 0x00, 0x0F, 0x91, 0x00, 0x02, 0x1F, 0x00, 0x1F, 0xD1, 0x00, 0x12, 0x51, 0x00, 0x1F, 0xDF, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xE1, 0x00, 0x02, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8988, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x23, 0xE1, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x1F, 0x80, 0x1F, 0x11, 0x00, 0x11, 0x33, 0x00, 0x7F, 0xCA, 0x00, 0x08, 0x0E, 0x00, 0x0F, 0x04, 0x00, 0x19, 0x0E, 0x00, 0x31, 0x1B, 0x00, 0x67, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8989, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x23, 0xE1, 0x00, 0x12, 0x08, 0x00, 0x7F, 0xBF, 0x80, 0x12, 0x12, 0x00, 0x1E, 0x21, 0x80, 0x08, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x29, 0x01, 0x00, 0x3F, 0x39, 0x00, 0x08, 0x29, 0x00, 0x7F, 0xB9, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x898A, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x23, 0xE1, 0x00, 0x14, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x44, 0x00, 0x1C, 0x7F, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x7E, 0xAA, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x898B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x80, 0x08, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x898D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x60, 0x81, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x80, 0x0C, 0x19, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x898F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x1F, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0x24, 0x80, 0x11, 0x44, 0x80, 0x20, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8990, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x91, 0x00, 0x20, 0xA0, 0x00, 0x3F, 0x80, 0x00, 0x20, 0x91, 0x00, 0x20, 0x8A, 0x00, 0x3F, 0x84, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x11, 0x00, 0x12, 0x20, 0x80, 0x33, 0x00, 0x80, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8993, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xC2, 0x00, 0x08, 0x21, 0x00, 0x10, 0x10, 0x80, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8994, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x0C, 0x8C, 0x00, 0x38, 0x87, 0x00, 0x6F, 0xFD, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x80, 0x0C, 0x19, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8995, { 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x13, 0x21, 0x00, 0x12, 0x21, 0x00, 0x56, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x5D, 0xA1, 0x00, 0x58, 0xBF, 0x00, 0x10, 0x14, 0x00, 0x30, 0x14, 0x00, 0x51, 0x14, 0x80, 0x1B, 0x34, 0x80, 0x0E, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8996, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0xE1, 0x00, 0x04, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x25, 0x14, 0x00, 0x25, 0x14, 0x00, 0x25, 0x24, 0x80, 0x04, 0x47, 0x80, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8997, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x00, 0x01, 0x21, 0x00, 0x01, 0x21, 0x00, 0x3D, 0x3F, 0x00, 0x01, 0x21, 0x00, 0x01, 0x21, 0x00, 0x3D, 0x3F, 0x00, 0x25, 0x21, 0x00, 0x25, 0x21, 0x00, 0x25, 0x3F, 0x00, 0x3D, 0x12, 0x00, 0x01, 0x12, 0x00, 0x01, 0x12, 0x80, 0x01, 0x32, 0x80, 0x07, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8998, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x42, 0x41, 0x00, 0x42, 0x7F, 0x00, 0x42, 0x24, 0x00, 0x42, 0x24, 0x00, 0x42, 0x24, 0x80, 0x7E, 0x64, 0x80, 0x01, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x899A, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x19, 0x86, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x06, 0x10, 0x80, 0x1C, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x899B, { 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x07, 0x3F, 0x00, 0x3C, 0x21, 0x00, 0x20, 0x21, 0x00, 0x23, 0xBF, 0x00, 0x2E, 0x21, 0x00, 0x28, 0x21, 0x00, 0x28, 0xBF, 0x00, 0x2D, 0xA1, 0x00, 0x2D, 0x21, 0x00, 0x2E, 0x3F, 0x00, 0x2A, 0x14, 0x00, 0x6B, 0x14, 0x00, 0x49, 0x14, 0x80, 0x49, 0xB4, 0x80, 0x08, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x899C, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x1F, 0x00, 0x0A, 0x51, 0x00, 0x6A, 0xD1, 0x00, 0x3A, 0x9F, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x1F, 0x00, 0x0B, 0x91, 0x00, 0x3A, 0xD1, 0x00, 0x6A, 0x1F, 0x00, 0x0A, 0x0A, 0x00, 0x1A, 0x0A, 0x00, 0x12, 0x4A, 0x80, 0x32, 0xDA, 0x80, 0x61, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x899F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x00, 0x11, 0x00, 0x04, 0x11, 0x00, 0x16, 0x9F, 0x00, 0x52, 0xCA, 0x00, 0x50, 0x4A, 0x00, 0x51, 0x0A, 0x80, 0x59, 0x1A, 0x80, 0x0F, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x7F, 0xFF, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x1F, 0xBF, 0x00, 0x30, 0x94, 0x00, 0x50, 0x94, 0x00, 0x10, 0x94, 0x80, 0x10, 0xB4, 0x80, 0x1F, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x2E, 0xA1, 0x00, 0x2C, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x07, 0xD2, 0x00, 0x38, 0x12, 0x00, 0x00, 0x22, 0x80, 0x00, 0x42, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89A5, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x3F, 0x00, 0x0A, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x7F, 0xD4, 0x00, 0x00, 0x14, 0x00, 0x11, 0x14, 0x80, 0x31, 0xB4, 0x80, 0x60, 0xA3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89A6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x1B, 0x21, 0x00, 0x31, 0xA1, 0x00, 0x60, 0xFF, 0x00, 0x1F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x7A, 0xBF, 0x00, 0x4A, 0xA1, 0x00, 0x6A, 0xA1, 0x00, 0x5D, 0x3F, 0x00, 0x6D, 0x14, 0x00, 0x5A, 0x94, 0x00, 0x4A, 0x94, 0x80, 0x4A, 0xB4, 0x80, 0x5A, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89A7, { 0x00, 0x00, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x1F, 0x80, 0x3F, 0xA0, 0x00, 0x20, 0x80, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x80, 0x0E, 0x11, 0x80, 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89A9, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x3F, 0x00, 0x1F, 0xD1, 0x00, 0x02, 0x51, 0x00, 0x02, 0x9F, 0x00, 0x3F, 0xF1, 0x00, 0x02, 0x11, 0x00, 0x05, 0x1F, 0x00, 0x08, 0x91, 0x00, 0x1F, 0x91, 0x00, 0x28, 0x9F, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0x8A, 0x00, 0x08, 0x92, 0x80, 0x08, 0xA2, 0x80, 0x0F, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89AA, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x0A, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xE1, 0x00, 0x04, 0x3F, 0x00, 0x0E, 0x14, 0x00, 0x0D, 0x14, 0x00, 0x14, 0x24, 0x80, 0x24, 0x47, 0x80, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89AC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x7F, 0xA1, 0x00, 0x00, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x21, 0x14, 0x00, 0x33, 0x14, 0x00, 0x12, 0x14, 0x80, 0x1F, 0x34, 0x80, 0x70, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89AF, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x3F, 0x9F, 0x00, 0x11, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x11, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x8A, 0x00, 0x7F, 0xCA, 0x00, 0x20, 0x8A, 0x80, 0x20, 0x9A, 0x80, 0x21, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x9F, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x24, 0x5F, 0x00, 0x27, 0x11, 0x00, 0x3C, 0x51, 0x00, 0x27, 0xDF, 0x00, 0x20, 0x11, 0x00, 0x2F, 0x91, 0x00, 0x28, 0x9F, 0x00, 0x2F, 0x8A, 0x00, 0x68, 0x8A, 0x00, 0x4F, 0x8A, 0x80, 0x48, 0x9A, 0x80, 0x1F, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B2, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x12, 0x80, 0x3F, 0xA2, 0x80, 0x00, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x68, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0xC1, 0x00, 0x12, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x64, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x14, 0x00, 0x3F, 0x34, 0x00, 0x24, 0x24, 0x80, 0x3F, 0x64, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B4, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7A, 0x3F, 0x00, 0x4C, 0x61, 0x00, 0x2A, 0xA1, 0x00, 0x11, 0x3F, 0x00, 0x2E, 0xA1, 0x00, 0x40, 0x61, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x14, 0x00, 0x11, 0x14, 0x00, 0x1A, 0x14, 0x80, 0x0F, 0xB4, 0x80, 0x78, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x7B, 0xD1, 0x00, 0x4A, 0x5F, 0x00, 0x7B, 0xD1, 0x00, 0x40, 0x51, 0x00, 0x5F, 0x5F, 0x00, 0x51, 0x51, 0x00, 0x5F, 0x51, 0x00, 0x51, 0x5F, 0x00, 0x5F, 0x4A, 0x00, 0x51, 0x4A, 0x00, 0x53, 0x4A, 0x80, 0x40, 0x5A, 0x80, 0x40, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B6, { 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x7F, 0x1F, 0x00, 0x14, 0x91, 0x00, 0x22, 0x51, 0x00, 0x3F, 0xDF, 0x00, 0x00, 0x51, 0x00, 0x3F, 0xD1, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x29, 0x51, 0x00, 0x2E, 0xDF, 0x00, 0x20, 0x4A, 0x00, 0x3F, 0x4A, 0x00, 0x29, 0x4A, 0x80, 0x26, 0x5A, 0x80, 0x29, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89B7, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x9F, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x24, 0x5F, 0x00, 0x27, 0x91, 0x00, 0x3C, 0x11, 0x00, 0x24, 0x5F, 0x00, 0x23, 0xD1, 0x00, 0x20, 0x11, 0x00, 0x25, 0x1F, 0x00, 0x35, 0x4A, 0x00, 0x75, 0x4A, 0x00, 0x5D, 0xCA, 0x80, 0x45, 0x1A, 0x80, 0x1F, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89BA, { 0x00, 0x00, 0x00, 0x06, 0x0E, 0x00, 0x08, 0xA2, 0x00, 0x0E, 0x4E, 0x00, 0x08, 0xA2, 0x00, 0x0E, 0x4E, 0x00, 0x08, 0xA2, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x06, 0x10, 0x80, 0x38, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x15, 0x11, 0x00, 0x24, 0x91, 0x00, 0x7F, 0xDF, 0x00, 0x44, 0x51, 0x00, 0x6E, 0xD1, 0x00, 0x55, 0x5F, 0x00, 0x6E, 0xD1, 0x00, 0x44, 0x51, 0x00, 0x6E, 0xDF, 0x00, 0x55, 0x4A, 0x00, 0x6E, 0xCA, 0x00, 0x44, 0x4A, 0x80, 0x44, 0x5A, 0x80, 0x45, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89BD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x80, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x55, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0x10, 0x80, 0x3C, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89BF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x52, 0x51, 0x00, 0x7F, 0xDF, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x8A, 0x00, 0x3F, 0x8A, 0x80, 0x11, 0x1A, 0x80, 0x60, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89C0, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x1F, 0xD1, 0x00, 0x12, 0x5F, 0x00, 0x1F, 0xD1, 0x00, 0x08, 0x91, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0x91, 0x00, 0x32, 0x11, 0x00, 0x1F, 0x9F, 0x00, 0x12, 0x0A, 0x00, 0x1F, 0x8A, 0x00, 0x12, 0x12, 0x80, 0x1F, 0xD2, 0x80, 0x10, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89C1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x09, 0x48, 0x00, 0x02, 0x40, 0x00, 0x02, 0x41, 0x00, 0x04, 0x41, 0x00, 0x18, 0x3F, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C2, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x84, 0x00, 0x02, 0x94, 0x00, 0x22, 0x94, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x12, 0xB4, 0x00, 0x22, 0x50, 0x00, 0x40, 0x50, 0x00, 0x00, 0x91, 0x00, 0x03, 0x11, 0x00, 0x0C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x94, 0x00, 0x3E, 0x94, 0x00, 0x08, 0x94, 0x00, 0x0A, 0x94, 0x00, 0x7F, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x20, 0x00, 0x14, 0x48, 0x00, 0x12, 0x48, 0x00, 0x20, 0x89, 0x00, 0x41, 0x09, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C5, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x48, 0x00, 0x01, 0x40, 0x00, 0x02, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C6, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x01, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x05, 0x24, 0x00, 0x09, 0x24, 0x00, 0x19, 0x24, 0x00, 0x2D, 0x24, 0x00, 0x4B, 0x34, 0x00, 0x09, 0x54, 0x00, 0x08, 0x50, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C7, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x82, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x9A, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x22, 0x49, 0x00, 0x00, 0x89, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C8, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x24, 0x42, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x90, 0x00, 0x25, 0x08, 0x00, 0x24, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x02, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89C9, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x04, 0x88, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x40, 0x0A, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xC8, 0x00, 0x09, 0x48, 0x00, 0x09, 0x48, 0x00, 0x02, 0x42, 0x00, 0x04, 0x42, 0x00, 0x38, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89CA, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x24, 0xBF, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0xAA, 0x00, 0x00, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x00, 0xAA, 0x00, 0x00, 0xAA, 0x00, 0x1F, 0xAA, 0x00, 0x10, 0x8C, 0x00, 0x10, 0x14, 0x00, 0x11, 0x94, 0x00, 0x16, 0x25, 0x00, 0x18, 0x45, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89CB, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xBF, 0x00, 0x7F, 0xE2, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x2E, 0xAA, 0x00, 0x44, 0x6A, 0x00, 0x04, 0x0C, 0x00, 0x07, 0xD4, 0x00, 0x7C, 0x14, 0x00, 0x20, 0x25, 0x00, 0x00, 0x45, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89CC, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x05, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x7F, 0xEA, 0x00, 0x12, 0xAA, 0x00, 0x0A, 0x2A, 0x00, 0x32, 0x2A, 0x00, 0x0A, 0x2A, 0x00, 0x7F, 0x8C, 0x00, 0x02, 0x14, 0x00, 0x04, 0x14, 0x00, 0x06, 0x25, 0x00, 0x09, 0x45, 0x00, 0x30, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89CE, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x3F, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x40, 0x6A, 0x00, 0x38, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3A, 0xAA, 0x00, 0x2A, 0x8C, 0x00, 0x3A, 0x94, 0x00, 0x28, 0x94, 0x00, 0x2A, 0xA5, 0x00, 0x29, 0x45, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89CF, { 0x00, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x0A, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x0A, 0x2A, 0x00, 0x7F, 0xEA, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0x8C, 0x00, 0x24, 0x94, 0x00, 0x7F, 0xD4, 0x00, 0x20, 0xA5, 0x00, 0x22, 0xC5, 0x00, 0x21, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89D0, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x11, 0x3F, 0x00, 0x7F, 0xE2, 0x00, 0x11, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0x8C, 0x00, 0x04, 0x14, 0x00, 0x3F, 0x94, 0x00, 0x04, 0x25, 0x00, 0x7F, 0xC5, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89D1, { 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x07, 0xBF, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xEA, 0x00, 0x24, 0xAA, 0x00, 0x27, 0x2A, 0x00, 0x3C, 0xAA, 0x00, 0x27, 0xAA, 0x00, 0x20, 0x2A, 0x00, 0x25, 0x2A, 0x00, 0x35, 0x4C, 0x00, 0x2D, 0x94, 0x00, 0x25, 0x14, 0x00, 0x25, 0x25, 0x00, 0x5F, 0xC5, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89D2, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x2F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89D4, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x29, 0x08, 0x80, 0x29, 0x08, 0x80, 0x3F, 0x08, 0x80, 0x29, 0x08, 0x80, 0x29, 0x08, 0x80, 0x3F, 0x08, 0x80, 0x21, 0x18, 0x80, 0x21, 0x10, 0x80, 0x21, 0x31, 0x80, 0x61, 0x61, 0x00, 0x47, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89D5, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x1E, 0x00, 0x14, 0x32, 0x00, 0x14, 0x24, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x48, 0x80, 0x64, 0x48, 0x80, 0x04, 0x7F, 0x80, 0x07, 0x48, 0x80, 0x1C, 0x48, 0x80, 0x74, 0x7F, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0xC0, 0x80, 0x04, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89D6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x10, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x11, 0x00, 0x29, 0x11, 0x00, 0x29, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x14, 0x00, 0x3F, 0x14, 0x00, 0x21, 0x16, 0x00, 0x21, 0x32, 0x00, 0x21, 0x23, 0x00, 0x61, 0x61, 0x00, 0x47, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89D7, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x0E, 0x00, 0x32, 0x78, 0x00, 0x24, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x3E, 0x7F, 0x80, 0x2A, 0x48, 0x00, 0x2A, 0x4C, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x46, 0x00, 0x22, 0x42, 0x80, 0x62, 0x73, 0x80, 0x47, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89D8, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x29, 0x6B, 0x00, 0x29, 0x49, 0x00, 0x3F, 0xC9, 0x80, 0x29, 0x08, 0x00, 0x29, 0x39, 0x00, 0x3F, 0x03, 0x00, 0x21, 0x02, 0x00, 0x21, 0x06, 0x00, 0x21, 0x0C, 0x00, 0x61, 0x18, 0x00, 0x47, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89DA, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x0E, 0x00, 0x32, 0x7A, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x22, 0x53, 0x00, 0x22, 0x55, 0x00, 0x22, 0x5D, 0x00, 0x62, 0xB5, 0x80, 0x46, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89DC, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x14, 0x26, 0x00, 0x17, 0xBC, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x80, 0x1F, 0xB1, 0x80, 0x72, 0x1F, 0x00, 0x07, 0xE0, 0x00, 0x0C, 0x40, 0x00, 0x3F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x02, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89DD, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x1E, 0x07, 0x00, 0x32, 0x3C, 0x00, 0x24, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x29, 0x24, 0x00, 0x29, 0x3F, 0x80, 0x3F, 0x24, 0x00, 0x29, 0x24, 0x00, 0x29, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x36, 0x00, 0x21, 0x62, 0x00, 0x21, 0x02, 0x80, 0x61, 0x7B, 0x80, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89DE, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x0F, 0x7F, 0x00, 0x12, 0x80, 0x00, 0x14, 0x7C, 0x00, 0x3F, 0x10, 0x00, 0x55, 0x22, 0x00, 0x15, 0x7F, 0x00, 0x1F, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x1F, 0x4A, 0x00, 0x15, 0x52, 0x00, 0x25, 0x92, 0x00, 0x21, 0x2A, 0x00, 0x43, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89E3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x0F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x22, 0x11, 0x00, 0x1F, 0xA6, 0x00, 0x14, 0xC0, 0x00, 0x14, 0x94, 0x00, 0x1F, 0x94, 0x00, 0x14, 0xBF, 0x00, 0x14, 0xC4, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x21, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89E5, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x49, 0x00, 0x32, 0x6B, 0x00, 0x24, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x29, 0x14, 0x00, 0x29, 0x14, 0x00, 0x3F, 0x14, 0x00, 0x21, 0x14, 0x00, 0x21, 0x34, 0x00, 0x21, 0x24, 0x80, 0x61, 0x64, 0x80, 0x47, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89E6, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x31, 0x04, 0x00, 0x22, 0x3F, 0x80, 0x7F, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xBF, 0x80, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x85, 0x00, 0x20, 0x85, 0x00, 0x60, 0x8F, 0x80, 0x43, 0xB8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89E7, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x1E, 0x63, 0x00, 0x32, 0x22, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x61, 0x08, 0x00, 0x47, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89E9, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x1E, 0x13, 0x00, 0x32, 0x11, 0x00, 0x25, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xD3, 0x00, 0x3E, 0x56, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x18, 0x00, 0x3E, 0x5C, 0x00, 0x22, 0x56, 0x00, 0x22, 0xD3, 0x00, 0x23, 0x91, 0x80, 0x62, 0x10, 0x00, 0x46, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89EB, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x22, 0x6B, 0x00, 0x22, 0x49, 0x00, 0x62, 0xC9, 0x80, 0x46, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89ED, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x14, 0x00, 0x29, 0x22, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x29, 0x01, 0x00, 0x29, 0x39, 0x00, 0x3F, 0x29, 0x00, 0x21, 0x29, 0x00, 0x21, 0x39, 0x00, 0x21, 0x01, 0x00, 0x61, 0x01, 0x00, 0x47, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89EF, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x1E, 0x28, 0x00, 0x24, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x22, 0x10, 0x00, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89F1, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x20, 0x00, 0x2F, 0xB2, 0x00, 0x20, 0x16, 0x00, 0x2F, 0x98, 0x00, 0x28, 0x8C, 0x80, 0x6F, 0xF6, 0x80, 0x42, 0x13, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFE, 0x00, 0x30, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89F3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x23, 0x80, 0x7F, 0x80, 0x00, 0x40, 0xBF, 0x00, 0x3F, 0x11, 0x00, 0x12, 0x11, 0x00, 0x3F, 0x9B, 0x00, 0x24, 0x8E, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x8E, 0x00, 0x3F, 0x9B, 0x00, 0x60, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89F4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x3F, 0x80, 0x09, 0x40, 0x00, 0x12, 0xBF, 0x00, 0x24, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x15, 0x20, 0x00, 0x15, 0x7F, 0x80, 0x1F, 0x89, 0x80, 0x11, 0x12, 0x80, 0x11, 0x24, 0x80, 0x21, 0xC9, 0x00, 0x23, 0x36, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89F6, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xF7, 0x80, 0x32, 0x94, 0x80, 0x24, 0xF7, 0x80, 0x7F, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x61, 0x08, 0x00, 0x47, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89F8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x80, 0x11, 0x52, 0x80, 0x12, 0x7F, 0x80, 0x24, 0x10, 0x00, 0x1F, 0x20, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x90, 0x80, 0x1F, 0x7E, 0x80, 0x15, 0x52, 0x80, 0x15, 0x7E, 0x80, 0x1F, 0x12, 0x80, 0x11, 0x1F, 0x80, 0x11, 0xF1, 0x80, 0x11, 0x00, 0x80, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x89F9, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x1E, 0x24, 0x00, 0x32, 0x7F, 0x80, 0x24, 0xA4, 0x00, 0x7F, 0x3F, 0x00, 0x29, 0x24, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x24, 0x00, 0x29, 0x3F, 0x80, 0x29, 0x00, 0x00, 0x3F, 0x73, 0x80, 0x21, 0x52, 0x80, 0x21, 0x5E, 0x80, 0x21, 0x40, 0x80, 0x61, 0x40, 0x80, 0x47, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89FD, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x88, 0x80, 0x32, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x7F, 0x24, 0x00, 0x29, 0x7F, 0x80, 0x29, 0xA4, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x24, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x7F, 0x80, 0x21, 0x52, 0x80, 0x21, 0x5E, 0x80, 0x61, 0x40, 0x80, 0x47, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x89FF, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x88, 0x80, 0x32, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x7F, 0x24, 0x00, 0x29, 0x7F, 0x80, 0x29, 0xA4, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x24, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x7F, 0x80, 0x21, 0x52, 0x80, 0x21, 0x5F, 0x80, 0x61, 0x72, 0x80, 0x47, 0x5E, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A03, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x1F, 0x0A, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A04, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x12, 0x3C, 0x00, 0x12, 0x00, 0x00, 0x12, 0x3C, 0x00, 0x12, 0x00, 0x00, 0x12, 0x3C, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x3C, 0x00, 0x32, 0x00, 0x80, 0x23, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A05, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x00, 0x3E, 0x32, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x80, 0x22, 0x62, 0x80, 0x3E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A07, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0x00, 0x80, 0x67, 0xE0, 0x80, 0x00, 0x00, 0x80, 0x3F, 0xFC, 0x80, 0x00, 0x00, 0x80, 0x07, 0xE0, 0x80, 0x00, 0x00, 0x80, 0x07, 0xE0, 0x80, 0x00, 0x00, 0x80, 0x0F, 0xF0, 0x80, 0x08, 0x11, 0x80, 0x08, 0x11, 0x00, 0x0F, 0xF3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A08, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0x80, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x1E, 0xFA, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x12, 0x42, 0x80, 0x12, 0x42, 0x80, 0x1E, 0x81, 0x80, 0x12, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A0E, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xFF, 0x80, 0x1F, 0x02, 0x00, 0x00, 0x22, 0x00, 0x1F, 0x12, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x11, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A11, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x48, 0x00, 0x7F, 0x4B, 0x00, 0x00, 0x4D, 0x00, 0x3E, 0x59, 0x00, 0x00, 0x69, 0x00, 0x00, 0xC9, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x48, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x00, 0x22, 0x40, 0x80, 0x22, 0x61, 0x80, 0x3E, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x10, 0x80, 0x7F, 0x10, 0x80, 0x00, 0x10, 0x80, 0x3E, 0x50, 0x80, 0x00, 0x50, 0x80, 0x00, 0xD0, 0x80, 0x3E, 0x90, 0x80, 0x00, 0xB0, 0x80, 0x00, 0x20, 0x80, 0x3E, 0x20, 0x80, 0x22, 0x21, 0x80, 0x22, 0x61, 0x00, 0x22, 0x41, 0x00, 0x3E, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A13, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x89, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A14, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A15, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A16, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x06, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x40, 0x00, 0x12, 0x80, 0x80, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A17, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x00, 0x13, 0x80, 0x1F, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x1F, 0x1F, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x81, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x20, 0x80, 0x11, 0x20, 0x80, 0x1F, 0x3F, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A1B, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x00, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x00, 0x64, 0x80, 0x00, 0x65, 0x00, 0x1E, 0xA6, 0x00, 0x01, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x80, 0x1E, 0x27, 0x80, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x01, 0xFF, 0x80, 0x1E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x24, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x84, 0x00, 0x13, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A1E, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x36, 0x00, 0x22, 0x22, 0x00, 0x22, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x42, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x90, 0x80, 0x1F, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x47, 0x00, 0x12, 0xB8, 0x80, 0x1F, 0xC0, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A20, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0xF9, 0x00, 0x00, 0x09, 0x00, 0x7F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3E, 0x79, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x79, 0x00, 0x00, 0x09, 0x00, 0x3E, 0x09, 0x00, 0x22, 0x19, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x3E, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A22, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0xC4, 0x00, 0x22, 0x84, 0x00, 0x23, 0x84, 0x00, 0x3E, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A23, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1E, 0x09, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x14, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A24, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x63, 0x00, 0x00, 0x36, 0x00, 0x7F, 0x1C, 0x00, 0x00, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x42, 0x00, 0x00, 0x66, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x3C, 0x00, 0x22, 0x18, 0x00, 0x22, 0x3C, 0x00, 0x22, 0x66, 0x00, 0x3E, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A25, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x1E, 0x88, 0x80, 0x00, 0x94, 0x80, 0x1E, 0xA2, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x80, 0x80, 0x1E, 0x80, 0x80, 0x12, 0x80, 0x80, 0x12, 0x80, 0x80, 0x1E, 0x80, 0x80, 0x12, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A26, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x3C, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x68, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x80, 0x24, 0xCD, 0x80, 0x3D, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A2A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x1F, 0x00, 0x1E, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x21, 0x00, 0x1E, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A2B, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x18, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0xA3, 0x00, 0x00, 0xA1, 0x00, 0x00, 0xA1, 0x80, 0x3E, 0xA0, 0x80, 0x22, 0xA2, 0x00, 0x22, 0x22, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A2C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x4A, 0x00, 0x00, 0x4B, 0x00, 0x3C, 0xC9, 0x80, 0x00, 0x88, 0x80, 0x01, 0x88, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x02, 0x00, 0x3C, 0x06, 0x00, 0x24, 0x0C, 0x00, 0x24, 0x18, 0x00, 0x24, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x24, 0x00, 0x3F, 0x24, 0x80, 0x00, 0x24, 0x80, 0x00, 0x47, 0x80, 0x1E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x12, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x08, 0x00, 0x12, 0x14, 0x00, 0x1E, 0x22, 0x00, 0x12, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x26, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x71, 0x00, 0x3E, 0x53, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x4E, 0x00, 0x3E, 0xC4, 0x00, 0x22, 0x8E, 0x00, 0x23, 0x9A, 0x00, 0x22, 0x33, 0x00, 0x3E, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A31, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x46, 0x00, 0x22, 0x42, 0x00, 0x22, 0xC3, 0x00, 0x3E, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A34, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x38, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x1F, 0x2A, 0x00, 0x00, 0x26, 0x00, 0x00, 0x23, 0x00, 0x1F, 0x22, 0x80, 0x11, 0x42, 0x00, 0x11, 0x42, 0x00, 0x1F, 0x42, 0x00, 0x11, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x94, 0x80, 0x00, 0x94, 0x80, 0x3C, 0x94, 0x80, 0x00, 0x94, 0x80, 0x00, 0x94, 0x80, 0x3C, 0xB4, 0x80, 0x00, 0xA7, 0x80, 0x00, 0xE0, 0x80, 0x3C, 0x80, 0x80, 0x24, 0x80, 0x80, 0x24, 0x80, 0x80, 0x24, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x4A, 0x00, 0x1E, 0x4A, 0x00, 0x00, 0x4A, 0x00, 0x1E, 0x7A, 0x00, 0x00, 0x4A, 0x00, 0x1E, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1E, 0x02, 0x00, 0x12, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A37, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x48, 0x80, 0x3E, 0x48, 0x80, 0x00, 0x48, 0x80, 0x00, 0x7F, 0x80, 0x3E, 0x48, 0x80, 0x00, 0x48, 0x80, 0x00, 0x48, 0x80, 0x3E, 0x7F, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A3A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x18, 0x00, 0x00, 0x24, 0x00, 0x3F, 0x42, 0x00, 0x00, 0x89, 0x80, 0x01, 0x08, 0x00, 0x1E, 0x12, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x44, 0x00, 0x00, 0x88, 0x80, 0x00, 0x11, 0x00, 0x1E, 0x22, 0x00, 0x12, 0xC4, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x30, 0x00, 0x12, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A3B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4F, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A3D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x40, 0x80, 0x3E, 0x80, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x44, 0x80, 0x3E, 0x44, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x3E, 0x7C, 0x80, 0x22, 0x00, 0x80, 0x22, 0x01, 0x80, 0x22, 0x01, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A3E, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x24, 0x23, 0x00, 0x27, 0xBE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x80, 0x27, 0xB1, 0x80, 0x3C, 0x1F, 0x00, 0x61, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A40, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x0F, 0x80, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A41, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A43, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x32, 0x00, 0x3E, 0x66, 0x00, 0x00, 0x34, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x19, 0x00, 0x22, 0x31, 0x00, 0x22, 0x27, 0x80, 0x3E, 0xFC, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A45, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x7F, 0x36, 0x00, 0x00, 0x63, 0x00, 0x3E, 0xDD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x17, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A46, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x76, 0x00, 0x22, 0xC2, 0x00, 0x22, 0x02, 0x80, 0x22, 0xFB, 0x80, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A47, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x52, 0x00, 0x3C, 0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x6C, 0x00, 0x24, 0x44, 0x00, 0x24, 0xC6, 0x00, 0x24, 0x83, 0x00, 0x3D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A48, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A49, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x38, 0x8F, 0x80, 0x00, 0x84, 0x80, 0x7D, 0xF4, 0x80, 0x00, 0x94, 0x80, 0x38, 0x94, 0x80, 0x00, 0x95, 0x80, 0x01, 0x95, 0x00, 0x39, 0x35, 0x00, 0x03, 0x27, 0x00, 0x01, 0xA2, 0x00, 0x38, 0xE2, 0x00, 0x28, 0x47, 0x00, 0x28, 0xE5, 0x00, 0x29, 0xAD, 0x80, 0x3B, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x00, 0x92, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x9E, 0x00, 0x3C, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3E, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A50, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x1E, 0x88, 0x00, 0x00, 0x0F, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A51, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x23, 0x00, 0x3E, 0x2E, 0x00, 0x00, 0x38, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x80, 0x22, 0x31, 0x80, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A52, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x30, 0x00, 0x7F, 0x21, 0x00, 0x00, 0x61, 0x00, 0x3E, 0x4F, 0x80, 0x00, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A53, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x62, 0x00, 0x24, 0x42, 0x00, 0x24, 0x5F, 0x00, 0x24, 0xF1, 0x00, 0x3D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x00, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x1F, 0x27, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x20, 0x80, 0x1F, 0x20, 0x80, 0x11, 0x20, 0x80, 0x11, 0x20, 0x80, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x88, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A56, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x3C, 0x89, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0xA1, 0x00, 0x00, 0xA3, 0x00, 0x00, 0xB2, 0x00, 0x3C, 0x96, 0x00, 0x25, 0x8C, 0x00, 0x25, 0x1E, 0x00, 0x27, 0x33, 0x00, 0x3C, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x00, 0xBD, 0x00, 0x3C, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x3C, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x3C, 0xBD, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A58, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x00, 0x88, 0x80, 0x3C, 0x88, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x80, 0x3C, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A5C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x88, 0x80, 0x00, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x63, 0x00, 0x00, 0x36, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x1C, 0x00, 0x22, 0x36, 0x00, 0x22, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A5D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x80, 0x00, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x1E, 0x00, 0x80, 0x00, 0x3C, 0x80, 0x1E, 0x24, 0x80, 0x00, 0x24, 0x80, 0x00, 0x3C, 0x80, 0x1E, 0x24, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x1E, 0x00, 0x80, 0x12, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A60, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x80, 0x00, 0xFD, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x2A, 0x00, 0x1E, 0x2A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x89, 0x00, 0x13, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x10, 0x80, 0x7E, 0x10, 0x80, 0x00, 0x10, 0x80, 0x3C, 0x73, 0x80, 0x00, 0xD6, 0x80, 0x00, 0x10, 0x80, 0x3C, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x73, 0x80, 0x3C, 0xD6, 0x80, 0x24, 0x10, 0x80, 0x24, 0x10, 0x80, 0x24, 0x10, 0x80, 0x3C, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A62, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x80, 0x80, 0x01, 0x00, 0x80, 0x02, 0x7C, 0x80, 0x1E, 0x44, 0x80, 0x00, 0x7C, 0x80, 0x1E, 0x44, 0x80, 0x00, 0x7C, 0x80, 0x1E, 0x44, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x1E, 0x01, 0x00, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A63, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x47, 0x00, 0x00, 0x78, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A65, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x7F, 0x36, 0x00, 0x00, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A66, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x0A, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x01, 0xF8, 0x00, 0x1E, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x1E, 0x74, 0x00, 0x12, 0xC2, 0x00, 0x12, 0x02, 0x80, 0x1E, 0x01, 0x80, 0x12, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A67, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xBF, 0x00, 0x18, 0xC1, 0x00, 0x35, 0xE3, 0x00, 0x63, 0x36, 0x00, 0x16, 0xD8, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x03, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A69, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x1E, 0x04, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x24, 0x00, 0x12, 0x04, 0x00, 0x1E, 0x04, 0x00, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A6B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x00, 0x86, 0x80, 0x3C, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x1F, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x80, 0x24, 0x19, 0x80, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A6C, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x51, 0x00, 0x3E, 0x51, 0x00, 0x22, 0x91, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A6D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0x22, 0x00, 0x00, 0xC4, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x5F, 0x00, 0x1E, 0x51, 0x00, 0x00, 0x51, 0x00, 0x1E, 0x51, 0x00, 0x00, 0x53, 0x00, 0x1E, 0x50, 0x00, 0x12, 0x50, 0x80, 0x12, 0x90, 0x80, 0x1E, 0x9F, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A6E, { 0x00, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x14, 0x00, 0x00, 0x22, 0x00, 0x3F, 0x41, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A70, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A71, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x0C, 0x00, 0x00, 0x78, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A72, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x1E, 0xA2, 0x00, 0x00, 0x42, 0x00, 0x1E, 0x24, 0x80, 0x00, 0x18, 0x80, 0x00, 0x11, 0x00, 0x1E, 0x22, 0x00, 0x12, 0xC4, 0x00, 0x12, 0x0A, 0x00, 0x1E, 0x31, 0x00, 0x12, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A73, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x1F, 0x22, 0x00, 0x00, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A75, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x28, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x48, 0x00, 0x1E, 0x88, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x44, 0x80, 0x1E, 0x44, 0x80, 0x12, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A76, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3C, 0x49, 0x00, 0x00, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3D, 0x6D, 0x00, 0x01, 0x5B, 0x00, 0x01, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x24, 0xC9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x81, 0x00, 0x3D, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x00, 0xBD, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xBD, 0x00, 0x3C, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x3C, 0xBD, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A79, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x80, 0x29, 0x11, 0x00, 0x09, 0x1F, 0x00, 0x0A, 0x00, 0x00, 0x0D, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0B, 0xFE, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A7A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x1F, 0x00, 0x7F, 0x31, 0x00, 0x00, 0x23, 0x00, 0x3E, 0x72, 0x00, 0x00, 0xD6, 0x00, 0x00, 0x0C, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x70, 0x80, 0x3E, 0x10, 0x80, 0x22, 0x10, 0x80, 0x22, 0x10, 0x80, 0x22, 0x10, 0x80, 0x3E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A7B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x00, 0xE6, 0x00, 0x3D, 0xAC, 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x66, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A7C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x40, 0x00, 0x00, 0x44, 0x80, 0x3C, 0x54, 0x80, 0x00, 0x55, 0x80, 0x00, 0xD5, 0x00, 0x3C, 0x94, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3C, 0x8E, 0x00, 0x24, 0x0A, 0x00, 0x24, 0x1B, 0x00, 0x24, 0x11, 0x00, 0x3C, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A7E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x01, 0x80, 0x80, 0x3C, 0x28, 0x80, 0x00, 0xAA, 0x80, 0x00, 0x92, 0x80, 0x3C, 0x92, 0x80, 0x00, 0xAA, 0x80, 0x00, 0xAA, 0x80, 0x3C, 0x82, 0x80, 0x24, 0xFE, 0x80, 0x24, 0x01, 0x80, 0x24, 0x01, 0x00, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A7F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x43, 0x80, 0x24, 0x7E, 0x00, 0x25, 0xC2, 0x00, 0x24, 0x02, 0x00, 0x3C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A82, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x01, 0xA4, 0x80, 0x7E, 0xE5, 0x80, 0x00, 0x27, 0x00, 0x3C, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x27, 0x00, 0x00, 0xE5, 0x80, 0x01, 0xA4, 0x80, 0x3C, 0x24, 0x00, 0x24, 0x64, 0x00, 0x24, 0x44, 0x80, 0x24, 0xC4, 0x80, 0x3D, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A83, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x31, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xD6, 0x00, 0x3E, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x74, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x0C, 0x80, 0x00, 0x19, 0x80, 0x3E, 0x75, 0x00, 0x22, 0x03, 0x00, 0x22, 0x06, 0x00, 0x22, 0x1C, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A84, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x22, 0x49, 0x00, 0x22, 0xC9, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A85, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x28, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x48, 0x00, 0x1E, 0x88, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x13, 0x29, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x7E, 0xBF, 0x00, 0x00, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x9E, 0x00, 0x3C, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x24, 0xBF, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A87, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0xBE, 0x80, 0x1E, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x10, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x01, 0x00, 0x1E, 0x01, 0x00, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A89, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0D, 0xEC, 0x00, 0x08, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x60, 0x01, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A8A, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x04, 0x90, 0x00, 0x1F, 0xFF, 0x00, 0x60, 0x02, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x80, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x99, 0x00, 0x24, 0xA9, 0x80, 0x24, 0xA2, 0x80, 0x25, 0xA2, 0x00, 0x3D, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A8C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x24, 0x00, 0x1E, 0xA1, 0x00, 0x12, 0xA1, 0x00, 0x13, 0x22, 0x80, 0x1E, 0x3E, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x21, 0x00, 0x1E, 0x21, 0x00, 0x00, 0x46, 0x00, 0x1E, 0x90, 0x00, 0x01, 0x08, 0x00, 0x00, 0x01, 0x00, 0x1E, 0xA0, 0x80, 0x12, 0xA0, 0x00, 0x13, 0x21, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A8F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x90, 0x80, 0x00, 0x99, 0x80, 0x3C, 0x8B, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x86, 0x00, 0x24, 0xF3, 0x00, 0x3D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A90, { 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x3C, 0x4B, 0x00, 0x01, 0xC9, 0x00, 0x7E, 0x48, 0x00, 0x00, 0x48, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x48, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x00, 0x6B, 0x00, 0x01, 0xCA, 0x00, 0x3C, 0x46, 0x00, 0x24, 0x44, 0x00, 0x24, 0x4E, 0x80, 0x24, 0x4B, 0x80, 0x3C, 0xD9, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A91, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x39, 0x5F, 0x00, 0x01, 0xC4, 0x00, 0x7C, 0x84, 0x00, 0x00, 0x84, 0x00, 0x39, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x02, 0x5F, 0x00, 0x38, 0x44, 0x00, 0x00, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x3A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0xFF, 0x80, 0x39, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A92, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x22, 0x00, 0x7E, 0x42, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x41, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x3C, 0x90, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x24, 0x66, 0x00, 0x24, 0xC3, 0x00, 0x3D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A93, { 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x3F, 0xB8, 0x00, 0x04, 0x20, 0x00, 0x07, 0xBF, 0x80, 0x3C, 0x24, 0x00, 0x04, 0x44, 0x00, 0x1D, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE7, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x84, 0x00, 0x01, 0x14, 0x00, 0x1D, 0xD7, 0x80, 0x00, 0x54, 0x00, 0x1C, 0x54, 0x00, 0x02, 0x54, 0x00, 0x01, 0x54, 0x00, 0x1C, 0x94, 0x00, 0x14, 0xBF, 0x80, 0x15, 0x60, 0x00, 0x1D, 0x1F, 0x80, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A96, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x3E, 0x7F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A97, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x3C, 0x70, 0x80, 0x01, 0xC4, 0x80, 0x7E, 0x44, 0x80, 0x00, 0x44, 0x80, 0x3D, 0xF4, 0x80, 0x00, 0x44, 0x80, 0x00, 0x44, 0x80, 0x3C, 0xE4, 0x80, 0x00, 0xD4, 0x80, 0x01, 0x54, 0x80, 0x3D, 0x40, 0x80, 0x24, 0x40, 0x80, 0x24, 0x40, 0x80, 0x24, 0x40, 0x80, 0x3C, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8A98, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x2A, 0x00, 0x1E, 0x49, 0x00, 0x01, 0x88, 0x80, 0x1E, 0x08, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x27, 0x80, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x1E, 0x80, 0x80, 0x13, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A9A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x49, 0x00, 0x00, 0xC9, 0x80, 0x7F, 0x88, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8A9F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x11, 0x00, 0x00, 0x7D, 0x00, 0x7E, 0x12, 0x00, 0x00, 0x14, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x3D, 0xBE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AA0, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x1E, 0x09, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x1E, 0x88, 0x80, 0x00, 0xF8, 0x80, 0x1E, 0x95, 0x00, 0x00, 0x95, 0x00, 0x00, 0x96, 0x00, 0x1E, 0x94, 0x00, 0x12, 0xA6, 0x80, 0x12, 0x8A, 0x80, 0x1F, 0x11, 0x80, 0x12, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AA1, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x1E, 0x09, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0xA8, 0x80, 0x1E, 0xA8, 0x80, 0x00, 0xA9, 0x00, 0x03, 0xF9, 0x00, 0x1E, 0xAA, 0x00, 0x00, 0xAA, 0x00, 0x1E, 0xA4, 0x00, 0x12, 0xAC, 0x80, 0x12, 0x12, 0x80, 0x1E, 0x61, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0xAA, 0x80, 0x00, 0x9C, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x00, 0xA2, 0x00, 0x00, 0xBE, 0x00, 0x1E, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x1E, 0x91, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x82, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AA5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x28, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x48, 0x00, 0x00, 0x88, 0x00, 0x1E, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x88, 0x80, 0x00, 0x88, 0x80, 0x1E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x1E, 0xFF, 0x80, 0x12, 0x88, 0x80, 0x12, 0x88, 0x80, 0x1E, 0x88, 0x80, 0x12, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AA7, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3C, 0x11, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3C, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AA8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x45, 0x00, 0x1E, 0x41, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x92, 0x00, 0x1E, 0x8A, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x82, 0x00, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1C, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x80, 0x80, 0x01, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x44, 0x80, 0x1E, 0x47, 0x80, 0x12, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AAC, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x63, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x64, 0x80, 0x22, 0x44, 0x80, 0x3E, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AAD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x3C, 0x80, 0x80, 0x00, 0xA4, 0x80, 0x00, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x24, 0x24, 0x80, 0x24, 0x64, 0x80, 0x3C, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AAE, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x3C, 0x49, 0x80, 0x00, 0x4F, 0x00, 0x00, 0xD8, 0x00, 0x3D, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x80, 0x24, 0x4C, 0x80, 0x3C, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x80, 0x3E, 0x40, 0x80, 0x22, 0x7F, 0x80, 0x22, 0x40, 0x80, 0x22, 0x40, 0x80, 0x3E, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AB0, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x00, 0x48, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0xC8, 0x00, 0x01, 0x48, 0x00, 0x1E, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x7F, 0x80, 0x12, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x1E, 0x2C, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x4A, 0x00, 0x1E, 0x89, 0x00, 0x13, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x40, 0x80, 0x7F, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x00, 0x44, 0x00, 0x00, 0x54, 0x80, 0x3E, 0x54, 0x80, 0x00, 0x5F, 0x80, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0xD4, 0x80, 0x22, 0x94, 0x80, 0x23, 0x94, 0x80, 0x3E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AB6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x00, 0xEE, 0x00, 0x01, 0xAB, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x7E, 0xA2, 0x80, 0x00, 0x94, 0x80, 0x3C, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x3C, 0xFF, 0x80, 0x00, 0x90, 0x80, 0x00, 0x90, 0x80, 0x3C, 0x90, 0x80, 0x24, 0x9E, 0x80, 0x24, 0x80, 0x80, 0x24, 0x80, 0x80, 0x3C, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AB9, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x00, 0x14, 0x00, 0x3F, 0xF7, 0x80, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x00, 0xF7, 0x80, 0x1E, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x1E, 0xF7, 0x80, 0x12, 0x14, 0x00, 0x12, 0x24, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ABB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x09, 0x00, 0x00, 0xEB, 0x00, 0x7F, 0x2C, 0x00, 0x00, 0x2E, 0x00, 0x3E, 0x6B, 0x00, 0x00, 0xC9, 0x80, 0x00, 0x18, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ABC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ABE, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ABF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, 0xBE, 0x80, 0x1E, 0x88, 0x80, 0x00, 0xFF, 0x80, 0x1E, 0x88, 0x80, 0x00, 0xBE, 0x80, 0x00, 0xA2, 0x80, 0x1E, 0xA2, 0x80, 0x12, 0xBE, 0x80, 0x12, 0xA2, 0x80, 0x1E, 0x80, 0x80, 0x12, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AC2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0x20, 0x80, 0x00, 0x40, 0x80, 0x00, 0x81, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x18, 0x00, 0x00, 0x67, 0x80, 0x00, 0x40, 0x80, 0x1E, 0x7F, 0x80, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x1E, 0x7F, 0x80, 0x12, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AC3, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x42, 0x00, 0x7E, 0xEF, 0x80, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x00, 0xE7, 0x00, 0x00, 0xD7, 0x00, 0x3D, 0x4A, 0x80, 0x01, 0x4A, 0x80, 0x01, 0x4A, 0x80, 0x3C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AC4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7E, 0x00, 0x00, 0x04, 0x00, 0x1E, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AC6, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x22, 0x22, 0x00, 0x22, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AC7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x11, 0x00, 0x00, 0x92, 0x00, 0x3F, 0x94, 0x00, 0x00, 0x10, 0x00, 0x00, 0x28, 0x00, 0x1E, 0x46, 0x00, 0x01, 0x91, 0x80, 0x1E, 0x12, 0x00, 0x00, 0x94, 0x00, 0x00, 0x98, 0x00, 0x1E, 0x28, 0x00, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x82, 0x00, 0x13, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AC8, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x7E, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x3D, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AC9, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3C, 0x7C, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x00, 0x54, 0x00, 0x3C, 0x56, 0x00, 0x00, 0xD3, 0x00, 0x01, 0x91, 0x80, 0x3C, 0x10, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x22, 0x00, 0x24, 0x46, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x36, 0x00, 0x3C, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ACA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x7E, 0x80, 0x80, 0x01, 0x10, 0x80, 0x3C, 0x92, 0x80, 0x00, 0x54, 0x80, 0x00, 0xFE, 0x80, 0x3C, 0x10, 0x80, 0x00, 0x38, 0x80, 0x00, 0x34, 0x80, 0x3C, 0x52, 0x80, 0x24, 0x50, 0x80, 0x24, 0x91, 0x80, 0x24, 0x11, 0x00, 0x3C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ACB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ACC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x3C, 0x54, 0x00, 0x24, 0x56, 0x00, 0x24, 0xD3, 0x00, 0x25, 0x91, 0x80, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ACD, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1E, 0x39, 0x00, 0x00, 0x48, 0x80, 0x3F, 0x84, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x09, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ACF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0xA9, 0x00, 0x00, 0xA9, 0x00, 0x00, 0xAA, 0x00, 0x1C, 0xEA, 0x00, 0x00, 0xAA, 0x00, 0x1C, 0xA6, 0x00, 0x00, 0xE4, 0x00, 0x00, 0xA4, 0x00, 0x1C, 0xA6, 0x00, 0x14, 0xE6, 0x00, 0x15, 0xA9, 0x00, 0x1C, 0x29, 0x00, 0x14, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x7E, 0x60, 0x00, 0x00, 0xD1, 0x00, 0x3D, 0x93, 0x00, 0x00, 0xBA, 0x00, 0x00, 0xE8, 0x00, 0x3C, 0xC8, 0x00, 0x01, 0xDC, 0x00, 0x00, 0x6C, 0x00, 0x3C, 0x6A, 0x00, 0x24, 0xCB, 0x00, 0x25, 0x89, 0x80, 0x27, 0x18, 0x00, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AD2, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x88, 0x80, 0x12, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AD3, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x22, 0x00, 0x00, 0x3F, 0x00, 0x7E, 0xF0, 0x00, 0x00, 0x1B, 0x00, 0x3C, 0x0C, 0x00, 0x00, 0x36, 0x80, 0x00, 0xC3, 0x80, 0x3C, 0x24, 0x00, 0x00, 0x22, 0x00, 0x00, 0x3F, 0x00, 0x3D, 0xF0, 0x00, 0x24, 0x1B, 0x00, 0x24, 0x0C, 0x00, 0x24, 0x36, 0x80, 0x3D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AD4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x38, 0x9F, 0x00, 0x00, 0x89, 0x00, 0x7C, 0xE9, 0x00, 0x00, 0x89, 0x00, 0x38, 0x8B, 0x00, 0x00, 0x8A, 0x00, 0x03, 0xEA, 0x00, 0x38, 0x8E, 0x00, 0x00, 0x84, 0x00, 0x02, 0xA4, 0x00, 0x3A, 0xAE, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAB, 0x00, 0x28, 0x89, 0x00, 0x39, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AD5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x3C, 0x91, 0x00, 0x00, 0x9C, 0x00, 0x00, 0xF0, 0x00, 0x3C, 0x91, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x80, 0x00, 0x3C, 0x94, 0x00, 0x25, 0x94, 0x00, 0x25, 0x14, 0x80, 0x27, 0x34, 0x80, 0x3C, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AD6, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x14, 0x00, 0x00, 0x22, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x7F, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x94, 0x80, 0x00, 0x94, 0x80, 0x1E, 0xFF, 0x80, 0x12, 0x94, 0x80, 0x12, 0x94, 0x80, 0x1E, 0x94, 0x80, 0x12, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AD7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x7E, 0xC7, 0x00, 0x01, 0x81, 0x80, 0x3C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x18, 0x00, 0x24, 0xA9, 0x00, 0x24, 0xA1, 0x80, 0x25, 0xA2, 0x80, 0x3D, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ADA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x00, 0x80, 0x80, 0x3C, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x48, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0xE8, 0x00, 0x24, 0xB8, 0x00, 0x3D, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8ADB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x28, 0x00, 0x00, 0xCB, 0x80, 0x3F, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, 0xEB, 0x80, 0x1E, 0x88, 0x80, 0x00, 0x88, 0x80, 0x1E, 0xEB, 0x80, 0x00, 0x88, 0x80, 0x00, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8ADC, { 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x1E, 0x52, 0x00, 0x00, 0x52, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x52, 0x00, 0x00, 0x5E, 0x00, 0x1E, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x1E, 0x48, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8ADD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x08, 0x80, 0x7F, 0x4F, 0x00, 0x00, 0x48, 0x00, 0x3E, 0x68, 0x00, 0x00, 0xDF, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ADE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0xD4, 0x80, 0x00, 0xD4, 0x80, 0x3D, 0x7F, 0x80, 0x25, 0x54, 0x80, 0x24, 0x54, 0x80, 0x24, 0x54, 0x80, 0x3C, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8ADF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x5F, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0xB8, 0x00, 0x3D, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AE0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x00, 0x80, 0x80, 0x3C, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3C, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3C, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x41, 0x00, 0x3F, 0xBE, 0x80, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x00, 0x1E, 0x21, 0x00, 0x00, 0x02, 0x00, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x12, 0x55, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x7E, 0x88, 0x80, 0x00, 0x7F, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x94, 0x80, 0x7E, 0x94, 0x80, 0x00, 0xF7, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x3F, 0x00, 0x24, 0x01, 0x00, 0x24, 0x01, 0x00, 0x24, 0x03, 0x00, 0x3C, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AE6, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x88, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x4B, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AE7, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x00, 0x45, 0x80, 0x3F, 0x7E, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x80, 0x1E, 0x7C, 0x80, 0x01, 0xC7, 0x80, 0x1E, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AEA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x1E, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AEB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xC9, 0x80, 0x1E, 0xAA, 0x80, 0x00, 0x9C, 0x80, 0x1E, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AEC, { 0x00, 0x00, 0x00, 0x01, 0x12, 0x00, 0x1E, 0x11, 0x00, 0x04, 0x7F, 0x80, 0x7F, 0x10, 0x00, 0x0E, 0x38, 0x80, 0x15, 0x4C, 0x80, 0x24, 0x07, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x14, 0x00, 0x3F, 0x62, 0x00, 0x01, 0x81, 0x80, 0x00, 0x7E, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xF2, 0x80, 0x00, 0x92, 0x80, 0x00, 0xF5, 0x00, 0x1E, 0x9A, 0x00, 0x12, 0xF9, 0x00, 0x12, 0x95, 0x00, 0x1E, 0x94, 0x80, 0x12, 0xB2, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AEE, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1E, 0xE4, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0x15, 0x00, 0x00, 0x04, 0x00, 0x01, 0xEA, 0x00, 0x1E, 0x11, 0x00, 0x00, 0x20, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x1E, 0x81, 0x00, 0x12, 0x81, 0x00, 0x12, 0x81, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x7E, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x91, 0x00, 0x00, 0x91, 0x00, 0x00, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x18, 0x00, 0x24, 0xA9, 0x00, 0x24, 0xA1, 0x80, 0x25, 0xA2, 0x80, 0x3D, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AF1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x11, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x13, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AF3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x7E, 0x42, 0x00, 0x00, 0x66, 0x00, 0x3C, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AF4, { 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x3C, 0x04, 0x80, 0x00, 0x04, 0x80, 0x7F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x3D, 0x74, 0x80, 0x01, 0x04, 0x80, 0x01, 0x75, 0x80, 0x3D, 0x55, 0x00, 0x01, 0x57, 0x00, 0x01, 0x52, 0x00, 0x3D, 0x72, 0x00, 0x25, 0x06, 0x80, 0x25, 0x0E, 0x80, 0x26, 0x1B, 0x80, 0x3C, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AF5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0xA2, 0x80, 0x3C, 0x94, 0x80, 0x00, 0xBE, 0x80, 0x00, 0x88, 0x80, 0x3C, 0xBE, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3C, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AF6, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xA4, 0x00, 0x1E, 0xA5, 0x00, 0x12, 0xC7, 0x00, 0x12, 0x80, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x3F, 0x3A, 0x00, 0x01, 0xE2, 0x00, 0x01, 0x22, 0x00, 0x1D, 0xFA, 0x00, 0x01, 0xAA, 0x00, 0x1D, 0xAA, 0x00, 0x01, 0xFA, 0x00, 0x01, 0x22, 0x00, 0x1D, 0x2A, 0x00, 0x15, 0x3A, 0x80, 0x15, 0xE6, 0x80, 0x1D, 0x01, 0x80, 0x16, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AF8, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x80, 0x00, 0x11, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x14, 0x00, 0x1E, 0x22, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AFA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x24, 0x00, 0x00, 0x18, 0x00, 0x00, 0x26, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x1E, 0x84, 0x00, 0x00, 0x99, 0x00, 0x00, 0xE2, 0x00, 0x1E, 0x8C, 0x00, 0x12, 0xB0, 0x80, 0x12, 0x83, 0x00, 0x1F, 0x0C, 0x00, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AFC, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x1E, 0x00, 0x01, 0xF2, 0x00, 0x7E, 0x53, 0x00, 0x00, 0x89, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x20, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x3C, 0x76, 0x00, 0x25, 0xD4, 0x00, 0x24, 0x1C, 0x00, 0x24, 0x36, 0x00, 0x3D, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8AFE, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x1E, 0x40, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8AFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x43, 0x80, 0x24, 0x7E, 0x00, 0x25, 0xC2, 0x00, 0x24, 0x02, 0x00, 0x3C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B00, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x1E, 0x2A, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x51, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x7F, 0x80, 0x00, 0xC8, 0x80, 0x01, 0x48, 0x80, 0x1E, 0x54, 0x80, 0x12, 0x62, 0x80, 0x12, 0x7F, 0x80, 0x1E, 0x41, 0x00, 0x12, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x00, 0xFF, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B04, { 0x00, 0x00, 0x00, 0x1C, 0x54, 0x00, 0x14, 0x92, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x28, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x82, 0x00, 0x17, 0x7D, 0x80, 0x15, 0xFF, 0x00, 0x1C, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x2C, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B05, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0xFF, 0x00, 0x01, 0x21, 0x00, 0x7E, 0xA9, 0x00, 0x00, 0xA9, 0x00, 0x3C, 0xF9, 0x00, 0x00, 0x43, 0x00, 0x00, 0x8E, 0x00, 0x3C, 0x40, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x21, 0x00, 0x3C, 0xA9, 0x00, 0x24, 0xA9, 0x00, 0x24, 0xF9, 0x00, 0x24, 0x43, 0x00, 0x3C, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B06, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x3C, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7E, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x91, 0x80, 0x00, 0xB2, 0x80, 0x3C, 0xD4, 0x80, 0x25, 0x91, 0x80, 0x25, 0x32, 0x80, 0x27, 0x54, 0x80, 0x3C, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B07, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x03, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B0A, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x3C, 0x52, 0x00, 0x24, 0x52, 0x00, 0x24, 0x52, 0x80, 0x24, 0xD2, 0x80, 0x3D, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B0B, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x3C, 0xF1, 0x00, 0x00, 0x97, 0x80, 0x7D, 0xD5, 0x00, 0x01, 0x75, 0x00, 0x3C, 0x25, 0x00, 0x00, 0x6F, 0x80, 0x00, 0xC1, 0x00, 0x3D, 0x81, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x54, 0x00, 0x24, 0x56, 0x00, 0x24, 0xD3, 0x00, 0x25, 0x91, 0x80, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x7E, 0xF2, 0x00, 0x00, 0x92, 0x00, 0x3C, 0x92, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x3C, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xF2, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B0E, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x1C, 0xA4, 0x80, 0x00, 0x15, 0x00, 0x3E, 0x15, 0x00, 0x02, 0x04, 0x00, 0x01, 0x7F, 0x80, 0x1C, 0x04, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x0E, 0x00, 0x03, 0x95, 0x00, 0x00, 0x95, 0x00, 0x1C, 0xA4, 0x80, 0x14, 0xC4, 0x00, 0x14, 0xC4, 0x00, 0x1D, 0x3F, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B10, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x1E, 0x11, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x22, 0x80, 0x00, 0xA4, 0x80, 0x01, 0x29, 0x00, 0x1E, 0x31, 0x00, 0x00, 0x3F, 0x00, 0x1E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x55, 0x00, 0x12, 0x55, 0x00, 0x12, 0x55, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B11, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x00, 0x79, 0x00, 0x7E, 0x4D, 0x80, 0x00, 0xC4, 0x80, 0x3E, 0x90, 0x00, 0x00, 0x24, 0x00, 0x00, 0x48, 0x00, 0x3E, 0x32, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xF1, 0x80, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x14, 0x00, 0x22, 0x22, 0x00, 0x3E, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B14, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x91, 0x00, 0x00, 0x9F, 0x00, 0x1E, 0xF0, 0x80, 0x00, 0x9F, 0x80, 0x1E, 0x80, 0x00, 0x00, 0xBF, 0x00, 0x00, 0xA0, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0xA0, 0x00, 0x12, 0xBF, 0x00, 0x1F, 0x20, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x14, 0x00, 0x00, 0x24, 0x80, 0x1E, 0x47, 0x80, 0x01, 0xA0, 0x00, 0x00, 0x3F, 0x00, 0x1E, 0x62, 0x00, 0x13, 0x94, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x36, 0x00, 0x12, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B17, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x00, 0x3F, 0x42, 0x00, 0x00, 0x24, 0x00, 0x00, 0x14, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x10, 0x80, 0x1E, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x82, 0x00, 0x13, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7C, 0x00, 0x00, 0x82, 0x00, 0x03, 0xFF, 0x00, 0x3E, 0x48, 0x80, 0x00, 0x48, 0x00, 0x01, 0xFE, 0x00, 0x38, 0x4A, 0x00, 0x03, 0xFF, 0x80, 0x38, 0x4A, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x4C, 0x00, 0x38, 0xCA, 0x00, 0x29, 0x4A, 0x00, 0x2A, 0x49, 0x00, 0x3C, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1C, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x00, 0x80, 0x1E, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x1E, 0x42, 0x00, 0x00, 0x81, 0x00, 0x01, 0x00, 0x80, 0x1E, 0xFF, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xA5, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B1B, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x7E, 0x88, 0x00, 0x00, 0xBF, 0x00, 0x3C, 0xA1, 0x00, 0x00, 0xA1, 0x00, 0x00, 0xBF, 0x00, 0x3C, 0xA1, 0x00, 0x00, 0xA1, 0x00, 0x00, 0xBF, 0x00, 0x3C, 0x88, 0x00, 0x25, 0xAA, 0x00, 0x25, 0x6B, 0x00, 0x27, 0x49, 0x80, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B1D, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x1C, 0xE2, 0x00, 0x00, 0xA2, 0x00, 0x3E, 0xA2, 0x00, 0x00, 0xE2, 0x00, 0x00, 0xBF, 0x80, 0x1C, 0xA2, 0x00, 0x00, 0xE2, 0x00, 0x1C, 0xB2, 0x00, 0x00, 0xEA, 0x00, 0x01, 0xA2, 0x00, 0x1C, 0x62, 0x00, 0x14, 0xA2, 0x00, 0x14, 0xA2, 0x00, 0x1D, 0x22, 0x00, 0x16, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B1E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0xBD, 0x00, 0x3C, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xBD, 0x00, 0x24, 0x81, 0x00, 0x3C, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B1F, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x7E, 0x12, 0x00, 0x00, 0x5B, 0x00, 0x3C, 0xC9, 0x80, 0x00, 0x80, 0x80, 0x00, 0x30, 0x00, 0x3C, 0xE7, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x3C, 0xE7, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B20, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x1F, 0x80, 0x00, 0x31, 0x00, 0x3E, 0x4A, 0x00, 0x00, 0xA4, 0x00, 0x01, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x01, 0xA0, 0x00, 0x1C, 0x7F, 0x80, 0x00, 0x88, 0x00, 0x01, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x14, 0x88, 0x80, 0x14, 0x88, 0x80, 0x1C, 0xFF, 0x80, 0x14, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B21, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x91, 0x00, 0x3C, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3C, 0x08, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B26, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x23, 0x80, 0x3F, 0x80, 0x00, 0x15, 0x3F, 0x00, 0x1F, 0x11, 0x00, 0x30, 0x0E, 0x00, 0x67, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B28, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B2B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x41, 0x00, 0x00, 0x22, 0x00, 0x00, 0x14, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x1E, 0x88, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x1E, 0xBE, 0x80, 0x12, 0xA2, 0x80, 0x12, 0xBE, 0x80, 0x1E, 0x80, 0x80, 0x12, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x2A, 0x80, 0x3F, 0x4C, 0x80, 0x00, 0x99, 0x80, 0x00, 0x2A, 0x80, 0x1E, 0x59, 0x80, 0x00, 0x0C, 0x00, 0x1E, 0x32, 0x00, 0x00, 0xC5, 0x80, 0x00, 0x18, 0x00, 0x1E, 0x66, 0x00, 0x12, 0x18, 0x80, 0x12, 0x63, 0x00, 0x1E, 0x0C, 0x00, 0x12, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B2D, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7E, 0xF1, 0x00, 0x00, 0xD5, 0x00, 0x3C, 0xB5, 0x00, 0x00, 0xD5, 0x00, 0x00, 0xB1, 0x00, 0x3C, 0x91, 0x00, 0x00, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x20, 0x80, 0x24, 0x20, 0x80, 0x24, 0x61, 0x80, 0x3C, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B30, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x39, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x88, 0x00, 0x01, 0x3F, 0x00, 0x39, 0xA9, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x3F, 0x00, 0x3B, 0xA9, 0x00, 0x00, 0xA9, 0x00, 0x00, 0xBF, 0x00, 0x38, 0x88, 0x00, 0x28, 0xFF, 0x80, 0x29, 0x88, 0x00, 0x29, 0x48, 0x00, 0x3B, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xBE, 0x00, 0x00, 0xA2, 0x00, 0x1E, 0xBE, 0x00, 0x00, 0x80, 0x00, 0x1E, 0xBF, 0x00, 0x00, 0xAD, 0x00, 0x00, 0xAD, 0x00, 0x1E, 0xAD, 0x00, 0x12, 0xBF, 0x00, 0x12, 0x80, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B37, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xE1, 0x00, 0x08, 0x1B, 0x00, 0x1F, 0x8E, 0x00, 0x30, 0x9B, 0x00, 0x63, 0xF1, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B39, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x1E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B3C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x00, 0x90, 0x80, 0x3C, 0xFE, 0x80, 0x00, 0x91, 0x00, 0x00, 0x8F, 0x00, 0x3C, 0x82, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xA9, 0x00, 0x3C, 0x9A, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x08, 0x00, 0x27, 0x08, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B3E, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x24, 0x80, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x24, 0x00, 0x24, 0x18, 0x00, 0x24, 0x76, 0x00, 0x3D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B41, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x01, 0xFF, 0x80, 0x1E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x94, 0x80, 0x7E, 0xF7, 0x80, 0x00, 0x00, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B43, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x00, 0x90, 0x80, 0x3C, 0xFE, 0x80, 0x00, 0x91, 0x00, 0x00, 0x8F, 0x00, 0x3C, 0x80, 0x00, 0x00, 0x8A, 0x00, 0x00, 0xAA, 0x80, 0x3C, 0xAA, 0x80, 0x25, 0xAA, 0x80, 0x25, 0x3B, 0x80, 0x27, 0x0A, 0x00, 0x3C, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B44, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x3C, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x7F, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x3D, 0x92, 0x80, 0x01, 0x54, 0x80, 0x01, 0x10, 0x80, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xEF, 0x80, 0x01, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x03, 0x2C, 0x80, 0x39, 0x24, 0x80, 0x01, 0x24, 0x80, 0x02, 0x69, 0x80, 0x38, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02, 0xEB, 0x80, 0x3A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xEA, 0x00, 0x2B, 0x9F, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B46, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x22, 0x00, 0x00, 0x14, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B48, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x01, 0xF4, 0x00, 0x7E, 0x07, 0x80, 0x01, 0xF5, 0x00, 0x3D, 0x19, 0x00, 0x01, 0xF5, 0x00, 0x00, 0x05, 0x00, 0x3D, 0xF5, 0x00, 0x00, 0x27, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x72, 0x00, 0x25, 0xC7, 0x00, 0x24, 0x45, 0x00, 0x24, 0x4D, 0x80, 0x3D, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x55, 0x00, 0x00, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x1E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x22, 0x00, 0x12, 0x14, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B4C, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3C, 0xFD, 0x00, 0x00, 0x51, 0x80, 0x7E, 0x88, 0x80, 0x00, 0xFE, 0x00, 0x3C, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0xFF, 0x80, 0x3D, 0x00, 0x80, 0x27, 0x0A, 0x80, 0x24, 0xAA, 0x80, 0x24, 0xA1, 0x80, 0x3D, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B4D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x44, 0x00, 0x24, 0xFF, 0x00, 0x2D, 0x88, 0x00, 0x34, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x23, 0xFC, 0x00, 0x60, 0x00, 0x00, 0x47, 0xFE, 0x00, 0x44, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7E, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x19, 0x00, 0x00, 0x28, 0x00, 0x1E, 0xC8, 0x00, 0x00, 0x18, 0x00, 0x1E, 0xFF, 0x00, 0x00, 0xA5, 0x00, 0x00, 0xC7, 0x00, 0x1E, 0xBD, 0x00, 0x12, 0xA5, 0x00, 0x12, 0xBD, 0x00, 0x1E, 0xA5, 0x00, 0x12, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B4F, { 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x1E, 0x52, 0x00, 0x00, 0x94, 0x80, 0x3F, 0x38, 0x80, 0x00, 0xD7, 0x00, 0x00, 0x52, 0x00, 0x1E, 0x9F, 0x80, 0x01, 0xFA, 0x00, 0x00, 0x11, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x48, 0x80, 0x1E, 0x49, 0x00, 0x12, 0xAE, 0x00, 0x12, 0x04, 0x80, 0x1E, 0x1A, 0x80, 0x12, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B52, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3C, 0x1C, 0x00, 0x01, 0xF0, 0x00, 0x7E, 0x92, 0x00, 0x00, 0x54, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x54, 0x00, 0x00, 0xD6, 0x00, 0x3D, 0x93, 0x00, 0x03, 0x01, 0x80, 0x00, 0xFE, 0x00, 0x3C, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B53, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x12, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x11, 0x80, 0x3C, 0x58, 0x00, 0x25, 0x49, 0x00, 0x25, 0x41, 0x80, 0x25, 0x62, 0x80, 0x3D, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x94, 0x80, 0x7E, 0xF7, 0x80, 0x00, 0x84, 0x00, 0x3C, 0x94, 0x80, 0x00, 0x73, 0x80, 0x00, 0x00, 0x00, 0x3C, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x24, 0x66, 0x00, 0x3D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B56, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0xA5, 0x00, 0x7E, 0xA5, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x63, 0x00, 0x00, 0xB5, 0x00, 0x01, 0x29, 0x80, 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B58, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x25, 0x00, 0x00, 0x24, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x54, 0x00, 0x00, 0x54, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x1E, 0x74, 0x80, 0x00, 0x55, 0x00, 0x00, 0x75, 0x00, 0x1E, 0x52, 0x00, 0x12, 0x76, 0x80, 0x12, 0x56, 0x80, 0x1E, 0x09, 0x80, 0x12, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B59, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x48, 0x00, 0x00, 0xFF, 0x80, 0x7E, 0x88, 0x00, 0x01, 0x88, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x24, 0xA9, 0x00, 0x25, 0xAD, 0x80, 0x3D, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x94, 0x80, 0x00, 0xFF, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B5B, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x01, 0xEF, 0x80, 0x7E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3D, 0xEF, 0x80, 0x00, 0x42, 0x00, 0x00, 0xA5, 0x00, 0x3D, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x3C, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B5C, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x22, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x14, 0x00, 0x3F, 0x94, 0x80, 0x00, 0x55, 0x00, 0x1E, 0x55, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x14, 0x80, 0x22, 0x35, 0x00, 0x22, 0xE6, 0x00, 0x22, 0x33, 0x00, 0x3E, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B5F, { 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x94, 0x80, 0x00, 0x94, 0x80, 0x3C, 0xF7, 0x80, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3C, 0x2A, 0x00, 0x24, 0x2A, 0x00, 0x24, 0x6B, 0x00, 0x24, 0xC9, 0x80, 0x3C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B63, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x6C, 0x00, 0x7E, 0xC6, 0x00, 0x01, 0x83, 0x80, 0x3C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x00, 0x3C, 0xA9, 0x00, 0x00, 0xA9, 0x00, 0x00, 0xEF, 0x00, 0x3C, 0x00, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0xC7, 0x00, 0x3D, 0xAD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B66, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x3F, 0xC8, 0x00, 0x09, 0x1F, 0x80, 0x1F, 0xA1, 0x00, 0x20, 0xD2, 0x00, 0x1E, 0x8C, 0x00, 0x12, 0x96, 0x00, 0x1E, 0xE1, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B6B, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x48, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x92, 0x00, 0x00, 0xE3, 0x80, 0x3C, 0x9E, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x3C, 0x80, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x80, 0x00, 0x3C, 0x9E, 0x00, 0x24, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x25, 0x21, 0x00, 0x3C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B6C, { 0x00, 0x00, 0x00, 0x1F, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x1F, 0x91, 0x00, 0x10, 0x3F, 0x80, 0x1F, 0x84, 0x00, 0x28, 0xFF, 0x80, 0x2F, 0x84, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B6D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3B, 0x6E, 0x00, 0x02, 0x2A, 0x00, 0x7E, 0x2A, 0x00, 0x03, 0x6A, 0x00, 0x3A, 0x33, 0x80, 0x02, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x38, 0x89, 0x00, 0x00, 0x8B, 0x00, 0x03, 0xEA, 0x00, 0x38, 0x8E, 0x00, 0x28, 0x84, 0x00, 0x28, 0xEE, 0x00, 0x2B, 0x9B, 0x00, 0x38, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x94, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x1E, 0x22, 0x00, 0x00, 0x14, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B70, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0x14, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x35, 0x00, 0x1E, 0xC4, 0x80, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x1E, 0x45, 0x00, 0x12, 0x7D, 0x00, 0x13, 0xC6, 0x80, 0x1E, 0x46, 0x80, 0x12, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B71, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1C, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x7E, 0xBF, 0x80, 0x00, 0x80, 0x00, 0x1C, 0x8E, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x9F, 0x00, 0x22, 0x91, 0x00, 0x3E, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B72, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x42, 0x00, 0x01, 0x81, 0x80, 0x3C, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x24, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x24, 0x00, 0x24, 0x65, 0x00, 0x25, 0xC2, 0x00, 0x24, 0x73, 0x00, 0x3D, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B74, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3C, 0xBE, 0x00, 0x00, 0x2A, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x02, 0xFF, 0x80, 0x3D, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x3C, 0x3E, 0x00, 0x07, 0x20, 0x00, 0x01, 0x3E, 0x00, 0x3D, 0x22, 0x00, 0x25, 0x3E, 0x00, 0x25, 0xA0, 0x00, 0x3D, 0x7F, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B76, { 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B77, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3F, 0x24, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x48, 0x00, 0x1E, 0xFF, 0x00, 0x01, 0x48, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x48, 0x00, 0x00, 0x7F, 0x80, 0x1E, 0x40, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x1C, 0x00, 0x12, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B78, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7E, 0x80, 0x3C, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x01, 0x00, 0x24, 0xFF, 0x80, 0x24, 0xA9, 0x00, 0x3C, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B79, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3D, 0x00, 0x80, 0x01, 0x7E, 0x80, 0x00, 0x20, 0x00, 0x3C, 0xD1, 0x00, 0x24, 0x2A, 0x00, 0x24, 0xDC, 0x00, 0x24, 0x2A, 0x00, 0x3C, 0xD9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B7C, { 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x21, 0xBF, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B7D, { 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x18, 0xEF, 0x00, 0x10, 0x81, 0x00, 0x1E, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x1E, 0xAF, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x09, 0xF2, 0x00, 0x1F, 0xFF, 0x00, 0x2F, 0xFE, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B7E, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7E, 0xF1, 0x00, 0x00, 0xD5, 0x00, 0x3C, 0xB5, 0x00, 0x00, 0xD5, 0x00, 0x00, 0xB1, 0x00, 0x3C, 0x97, 0x00, 0x00, 0x00, 0x00, 0x01, 0xEF, 0x80, 0x3C, 0xA2, 0x80, 0x25, 0x6D, 0x80, 0x24, 0xA2, 0x80, 0x25, 0x2C, 0x80, 0x3C, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B80, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0xA2, 0x80, 0x00, 0xFF, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B81, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3A, 0x08, 0x00, 0x03, 0x7F, 0x80, 0x7D, 0x21, 0x00, 0x02, 0x12, 0x00, 0x3B, 0x7F, 0x80, 0x01, 0x48, 0x80, 0x00, 0x7F, 0x80, 0x3B, 0x48, 0x80, 0x01, 0x5E, 0x80, 0x01, 0x52, 0x80, 0x39, 0x5E, 0x80, 0x29, 0x40, 0x80, 0x2B, 0x41, 0x80, 0x2A, 0x80, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B83, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3C, 0xF7, 0x80, 0x00, 0x22, 0x00, 0x7E, 0xF7, 0x80, 0x00, 0x22, 0x00, 0x3C, 0x55, 0x00, 0x00, 0x80, 0x80, 0x00, 0x7F, 0x00, 0x3C, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3C, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x3C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x00, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x38, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x38, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x02, 0xAA, 0x80, 0x3A, 0xAA, 0x80, 0x2B, 0xEF, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x3B, 0xEF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B85, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x7D, 0x0E, 0x80, 0x00, 0xF8, 0x00, 0x3C, 0x92, 0x00, 0x00, 0x54, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x54, 0x00, 0x00, 0x92, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x91, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B8A, { 0x00, 0x00, 0x00, 0x10, 0xE4, 0x00, 0x14, 0x05, 0x00, 0x25, 0xF9, 0x00, 0x18, 0x0A, 0x00, 0x12, 0xE4, 0x80, 0x3E, 0xFF, 0x80, 0x08, 0xEA, 0x80, 0x28, 0xAA, 0x80, 0x29, 0xE0, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x0A, 0x08, 0x00, 0x31, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B8B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1E, 0x00, 0x11, 0x10, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B8C, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x01, 0xFF, 0x80, 0x7E, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x3C, 0x82, 0x00, 0x03, 0xBA, 0x80, 0x00, 0xAB, 0x00, 0x3C, 0xAA, 0x00, 0x00, 0xAA, 0x00, 0x03, 0xBA, 0x80, 0x3C, 0x81, 0x80, 0x24, 0x00, 0x00, 0x24, 0xA9, 0x00, 0x25, 0xAD, 0x80, 0x3D, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x7D, 0xD7, 0x00, 0x01, 0x55, 0x00, 0x39, 0xD7, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xD7, 0x00, 0x39, 0x55, 0x00, 0x29, 0xD7, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B8E, { 0x00, 0x00, 0x00, 0x12, 0x04, 0x80, 0x12, 0xE4, 0x80, 0x24, 0x09, 0x00, 0x3F, 0xFF, 0x80, 0x68, 0x0A, 0x00, 0x29, 0xEA, 0x00, 0x28, 0x0A, 0x00, 0x3C, 0x0F, 0x80, 0x29, 0xEA, 0x00, 0x28, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x3D, 0xEF, 0x80, 0x29, 0x2A, 0x00, 0x29, 0x2A, 0x00, 0x29, 0x2A, 0x00, 0x3D, 0xEF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B8F, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x13, 0xF7, 0x80, 0x21, 0x10, 0x00, 0x4B, 0xF8, 0x00, 0x10, 0x87, 0x80, 0x33, 0xF1, 0x00, 0x52, 0x91, 0x00, 0x12, 0xB3, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B90, { 0x00, 0x00, 0x00, 0x0A, 0x14, 0x00, 0x1F, 0xBF, 0x00, 0x32, 0x64, 0x00, 0x1F, 0xBF, 0x00, 0x12, 0x24, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B92, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x7C, 0x00, 0x00, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x8B, 0x80, 0x1E, 0xFC, 0x00, 0x00, 0x88, 0x80, 0x1E, 0xBF, 0x80, 0x01, 0xC8, 0x00, 0x00, 0xFF, 0x00, 0x1E, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x2C, 0x00, 0x1E, 0x4A, 0x80, 0x13, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B93, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0xE7, 0x00, 0x00, 0xA5, 0x00, 0x00, 0xE7, 0x00, 0x1C, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x1C, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x14, 0x69, 0x00, 0x15, 0xC6, 0x00, 0x1E, 0x7A, 0x00, 0x15, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B94, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3B, 0xBE, 0x00, 0x02, 0xA9, 0x00, 0x7E, 0xC4, 0x80, 0x03, 0xBF, 0x00, 0x3B, 0x08, 0x00, 0x03, 0x7F, 0x80, 0x02, 0x80, 0x00, 0x3A, 0xBF, 0x00, 0x02, 0x81, 0x00, 0x02, 0xFF, 0x80, 0x3B, 0x81, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x52, 0x80, 0x3A, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B95, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x3A, 0x28, 0x80, 0x03, 0xEF, 0x80, 0x7E, 0x28, 0x80, 0x03, 0xEF, 0x80, 0x3A, 0x10, 0x80, 0x02, 0xFE, 0x80, 0x02, 0x10, 0x80, 0x3A, 0xFE, 0x80, 0x02, 0xD6, 0x80, 0x02, 0xBA, 0x80, 0x3A, 0x92, 0x80, 0x2A, 0xFE, 0x80, 0x2A, 0x38, 0x80, 0x2A, 0x54, 0x80, 0x3A, 0x93, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B96, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1D, 0x2A, 0x00, 0x01, 0x29, 0x00, 0x3E, 0xA8, 0x00, 0x04, 0x58, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x48, 0x00, 0x1F, 0x69, 0x00, 0x01, 0x49, 0x00, 0x03, 0x6A, 0x00, 0x1D, 0x44, 0x00, 0x15, 0xF4, 0x00, 0x17, 0x0A, 0x80, 0x1C, 0x11, 0x80, 0x14, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B99, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x7E, 0xEF, 0x00, 0x00, 0xA9, 0x00, 0x3C, 0xEF, 0x00, 0x00, 0x42, 0x00, 0x00, 0x44, 0x00, 0x3C, 0xFF, 0x00, 0x01, 0x88, 0x00, 0x02, 0xFE, 0x00, 0x3C, 0x88, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B9A, { 0x00, 0x00, 0x00, 0x01, 0x54, 0x00, 0x1D, 0xFF, 0x00, 0x02, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xAA, 0x00, 0x00, 0xAA, 0x80, 0x1D, 0x33, 0x80, 0x02, 0x00, 0x00, 0x1C, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x1C, 0x82, 0x00, 0x15, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8B9C, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x38, 0x92, 0x00, 0x03, 0xFF, 0x80, 0x7E, 0x82, 0x80, 0x02, 0xFE, 0x80, 0x38, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x93, 0x00, 0x39, 0x55, 0x00, 0x01, 0x39, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x29, 0x49, 0x00, 0x3A, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B9E, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x38, 0xF2, 0x80, 0x00, 0x82, 0x80, 0x7F, 0xFA, 0x00, 0x02, 0x8A, 0x00, 0x3B, 0xF7, 0x80, 0x02, 0x8A, 0x00, 0x03, 0xFA, 0x00, 0x3A, 0x92, 0x00, 0x02, 0xF2, 0x00, 0x02, 0x07, 0x00, 0x3B, 0xFD, 0x00, 0x2E, 0xA9, 0x00, 0x2B, 0x19, 0x00, 0x2A, 0xE9, 0x80, 0x3A, 0x58, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8B9F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3B, 0xF7, 0x00, 0x00, 0x80, 0x00, 0x7D, 0xEF, 0x80, 0x00, 0x00, 0x00, 0x37, 0xFB, 0x00, 0x05, 0x48, 0x00, 0x07, 0xF8, 0x00, 0x32, 0x13, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x3B, 0xF7, 0x00, 0x2A, 0x15, 0x00, 0x2B, 0xF5, 0x00, 0x29, 0x25, 0x00, 0x3A, 0x17, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA1, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x22, 0x00, 0x7B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x23, 0x00, 0x08, 0x21, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0D, 0x04, 0x00, 0x09, 0x04, 0x00, 0x02, 0x03, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x89, 0x00, 0x09, 0x09, 0x00, 0x02, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA6, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x23, 0xFE, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA8, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x18, 0x04, 0x00, 0x08, 0x04, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x78, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BA9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x24, 0x00, 0x00, 0x3E, 0x00, 0x78, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BAA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x39, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0B, 0x11, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BAB, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x84, 0x00, 0x10, 0xFE, 0x00, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x75, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x10, 0x80, 0x00, 0x15, 0x01, 0x00, 0x19, 0x01, 0x00, 0x10, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BAD, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x10, 0x41, 0x00, 0x0C, 0x49, 0x00, 0x04, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3C, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x05, 0x89, 0x00, 0x06, 0x81, 0x00, 0x05, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x18, 0x22, 0x00, 0x09, 0x22, 0x00, 0x01, 0x02, 0x00, 0x01, 0x04, 0x00, 0x78, 0x84, 0x00, 0x08, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x04, 0x00, 0x02, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BAF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x23, 0xFC, 0x00, 0x18, 0x08, 0x00, 0x08, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x0B, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x85, 0x00, 0x0C, 0x85, 0x00, 0x08, 0x83, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x78, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x01, 0x00, 0x0B, 0x01, 0x00, 0x0D, 0x01, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB2, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x10, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB3, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x00, 0x24, 0x00, 0x03, 0xFE, 0x00, 0x70, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x12, 0x22, 0x00, 0x14, 0x2A, 0x00, 0x18, 0x24, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB4, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x23, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x12, 0x02, 0x00, 0x02, 0x82, 0x00, 0x02, 0x44, 0x00, 0x72, 0x28, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x12, 0x86, 0x00, 0x13, 0x02, 0x00, 0x16, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB5, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x00, 0x00, 0x09, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB6, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x23, 0xFE, 0x00, 0x10, 0x08, 0x00, 0x11, 0x08, 0x00, 0x01, 0x08, 0x00, 0x02, 0x0A, 0x00, 0x77, 0xFF, 0x00, 0x10, 0x08, 0x00, 0x10, 0x18, 0x00, 0x10, 0x28, 0x00, 0x12, 0x48, 0x00, 0x14, 0x88, 0x00, 0x19, 0x08, 0x00, 0x12, 0x08, 0x00, 0x04, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x22, 0x00, 0x72, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x8A, 0x00, 0x17, 0x06, 0x00, 0x1A, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB8, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x04, 0x00, 0x19, 0xFE, 0x00, 0x09, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BB9, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x20, 0x90, 0x00, 0x18, 0x90, 0x00, 0x08, 0x92, 0x00, 0x00, 0x96, 0x00, 0x01, 0x98, 0x00, 0x7A, 0x90, 0x00, 0x0C, 0xB0, 0x00, 0x08, 0xD0, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x08, 0x8F, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BBA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x50, 0x00, 0x08, 0x50, 0x00, 0x00, 0x88, 0x00, 0x01, 0x07, 0x00, 0x7A, 0x02, 0x00, 0x08, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x98, 0x00, 0x08, 0xE0, 0x00, 0x08, 0x80, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BBC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x10, 0x00, 0x18, 0x90, 0x00, 0x08, 0x90, 0x00, 0x00, 0x88, 0x00, 0x01, 0x04, 0x00, 0x79, 0x07, 0x00, 0x0A, 0x22, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x84, 0x00, 0x0D, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BBD, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x23, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x03, 0x0C, 0x00, 0x02, 0x8C, 0x00, 0x72, 0x54, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x54, 0x00, 0x12, 0x8C, 0x00, 0x17, 0x0C, 0x00, 0x1A, 0x04, 0x00, 0x12, 0x05, 0x00, 0x04, 0x05, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BBE, { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x10, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x00, 0x88, 0x00, 0x01, 0x07, 0x00, 0x7A, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x58, 0x00, 0x09, 0x87, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BBF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x02, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x78, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x09, 0x28, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC0, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x18, 0x40, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x78, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0A, 0xA0, 0x00, 0x0C, 0x90, 0x00, 0x09, 0x08, 0x00, 0x02, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC1, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x90, 0x00, 0x0C, 0x92, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x22, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x00, 0x24, 0x00, 0x01, 0xF4, 0x00, 0x79, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0xE4, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC4, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x23, 0xFE, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x02, 0x22, 0x00, 0x01, 0xA6, 0x00, 0x78, 0xA8, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC5, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x78, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x09, 0x84, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC6, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3C, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x04, 0x00, 0x00, 0x05, 0x48, 0x00, 0x06, 0x44, 0x00, 0x04, 0x82, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x18, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x7A, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x40, 0x00, 0x0C, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BC9, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x21, 0xF0, 0x00, 0x19, 0x00, 0x00, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x79, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x30, 0x00, 0x0B, 0x18, 0x00, 0x0D, 0x16, 0x00, 0x0A, 0x12, 0x00, 0x04, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BCA, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x17, 0x00, 0x74, 0x22, 0x00, 0x10, 0x48, 0x00, 0x11, 0x90, 0x00, 0x10, 0x20, 0x00, 0x10, 0x44, 0x00, 0x11, 0x88, 0x00, 0x14, 0x10, 0x00, 0x18, 0x60, 0x00, 0x11, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BCB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x3C, 0x00, 0x13, 0xE0, 0x00, 0x12, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x24, 0x00, 0x73, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x20, 0x00, 0x12, 0x10, 0x00, 0x12, 0x50, 0x00, 0x16, 0x89, 0x00, 0x1B, 0x49, 0x00, 0x12, 0x25, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BCC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x11, 0x08, 0x00, 0x02, 0x10, 0x00, 0x04, 0x22, 0x00, 0x73, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x14, 0x02, 0x00, 0x18, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BCD, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x00, 0x12, 0x00, 0x03, 0xFA, 0x00, 0x78, 0x02, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFA, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0xF2, 0x00, 0x0B, 0x12, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BCE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x92, 0x00, 0x38, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0B, 0x11, 0x00, 0x0D, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BCF, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x18, 0x42, 0x00, 0x08, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x82, 0x00, 0x78, 0x8A, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x10, 0xD8, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x71, 0x8F, 0x00, 0x16, 0x22, 0x00, 0x10, 0x28, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x12, 0x24, 0x00, 0x17, 0xFE, 0x00, 0x18, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x40, 0x00, 0x08, 0x84, 0x00, 0x01, 0x02, 0x00, 0x03, 0xFF, 0x00, 0x78, 0x01, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD3, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x00, 0x00, 0x09, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x79, 0x10, 0x00, 0x09, 0x7C, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x14, 0x00, 0x09, 0xFE, 0x00, 0x0B, 0x00, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x00, 0x28, 0x00, 0x01, 0xFC, 0x00, 0x78, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x60, 0x00, 0x08, 0x70, 0x00, 0x0A, 0xA8, 0x00, 0x0C, 0xA4, 0x00, 0x09, 0x27, 0x00, 0x02, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x14, 0x00, 0x10, 0x12, 0x00, 0x10, 0x10, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x70, 0x10, 0x00, 0x13, 0xF0, 0x00, 0x10, 0x90, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x14, 0xE9, 0x00, 0x1B, 0x89, 0x00, 0x11, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x28, 0x00, 0x19, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x7B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x00, 0x22, 0x00, 0x03, 0xFF, 0x00, 0x78, 0x08, 0x00, 0x08, 0x0A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x08, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x7B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BD9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x18, 0x42, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00, 0x78, 0x90, 0x00, 0x09, 0x52, 0x00, 0x09, 0x56, 0x00, 0x0A, 0x58, 0x00, 0x0C, 0x90, 0x00, 0x08, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x87, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BDA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x14, 0x00, 0x10, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x72, 0x12, 0x00, 0x13, 0xD2, 0x00, 0x12, 0x54, 0x00, 0x12, 0x54, 0x00, 0x12, 0x48, 0x00, 0x17, 0x48, 0x00, 0x1A, 0x98, 0x00, 0x12, 0x25, 0x00, 0x04, 0x45, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BDB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x20, 0x00, 0x11, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x02, 0x20, 0x00, 0x70, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x60, 0x00, 0x10, 0x70, 0x00, 0x10, 0xB0, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x27, 0x00, 0x12, 0x22, 0x00, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BDC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x20, 0x00, 0x19, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x00, 0x20, 0x00, 0x78, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0D, 0x09, 0x00, 0x09, 0x09, 0x00, 0x02, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BDD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x1C, 0x00, 0x19, 0xE0, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x22, 0x00, 0x7B, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BDE, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x0E, 0x00, 0x17, 0xB8, 0x00, 0x10, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x77, 0xAE, 0x00, 0x10, 0xA8, 0x00, 0x14, 0xA8, 0x00, 0x12, 0xA8, 0x00, 0x11, 0x28, 0x00, 0x15, 0x3E, 0x00, 0x19, 0x80, 0x00, 0x12, 0x40, 0x00, 0x04, 0x23, 0x00, 0x08, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BDF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x0E, 0x00, 0x19, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x00, 0x00, 0x09, 0x02, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x42, 0x00, 0x09, 0x42, 0x00, 0x0B, 0x42, 0x00, 0x0D, 0x42, 0x00, 0x09, 0x42, 0x00, 0x02, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x18, 0x50, 0x00, 0x08, 0x88, 0x00, 0x01, 0x07, 0x00, 0x06, 0x02, 0x00, 0x79, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x10, 0xF8, 0x00, 0x11, 0x10, 0x00, 0x02, 0x22, 0x00, 0x05, 0xFF, 0x00, 0x71, 0x00, 0x00, 0x11, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x54, 0x00, 0x13, 0x48, 0x00, 0x15, 0x41, 0x00, 0x19, 0x41, 0x00, 0x12, 0x3F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE2, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x02, 0x00, 0x19, 0xFF, 0x00, 0x0A, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0xFA, 0x00, 0x78, 0x8A, 0x00, 0x08, 0x8A, 0x00, 0x08, 0xFA, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x8A, 0x00, 0x09, 0xFA, 0x00, 0x0A, 0x8A, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE3, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x1C, 0x00, 0x19, 0xE0, 0x00, 0x09, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x78, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x18, 0xF8, 0x00, 0x09, 0x10, 0x00, 0x02, 0x24, 0x00, 0x05, 0xFE, 0x00, 0x78, 0x24, 0x00, 0x08, 0x24, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x0A, 0x24, 0x00, 0x0C, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x71, 0x08, 0x00, 0x13, 0xF0, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x48, 0x00, 0x12, 0x90, 0x00, 0x15, 0x28, 0x00, 0x18, 0x44, 0x00, 0x11, 0x82, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE6, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x20, 0x88, 0x00, 0x18, 0x50, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x28, 0x00, 0x79, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x38, 0x00, 0x7B, 0xC0, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x08, 0x7E, 0x00, 0x0B, 0xC0, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xFE, 0x00, 0x1A, 0x42, 0x00, 0x0C, 0x44, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x78, 0xA0, 0x00, 0x09, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x1B, 0xDF, 0x00, 0x08, 0x42, 0x00, 0x00, 0x42, 0x00, 0x02, 0x52, 0x00, 0x79, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x08, 0x42, 0x00, 0x08, 0xC6, 0x00, 0x0B, 0x5A, 0x00, 0x08, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x09, 0x4A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BEB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x14, 0x00, 0x10, 0x12, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x72, 0x90, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x17, 0xF4, 0x00, 0x12, 0x94, 0x00, 0x12, 0x98, 0x00, 0x16, 0x90, 0x00, 0x1A, 0xB0, 0x00, 0x12, 0x49, 0x00, 0x04, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BEC, { 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x01, 0x24, 0x00, 0x71, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x12, 0xAA, 0x00, 0x14, 0xB2, 0x00, 0x10, 0x20, 0x00, 0x14, 0x20, 0x00, 0x18, 0x20, 0x00, 0x10, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BED, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x27, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x88, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x08, 0x00, 0x71, 0x0A, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x16, 0x04, 0x00, 0x1A, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BEE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x92, 0x00, 0x0C, 0x56, 0x00, 0x04, 0x58, 0x00, 0x00, 0x12, 0x00, 0x00, 0xFF, 0x00, 0x3C, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x05, 0x82, 0x00, 0x06, 0x82, 0x00, 0x04, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BEF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x04, 0x00, 0x09, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x73, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x14, 0x50, 0x00, 0x18, 0x88, 0x00, 0x11, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x20, 0x00, 0x19, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x04, 0x22, 0x00, 0x7B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF1, { 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x23, 0xE0, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xB0, 0x00, 0x71, 0x28, 0x00, 0x12, 0x27, 0x00, 0x15, 0xFA, 0x00, 0x10, 0x88, 0x00, 0x10, 0x90, 0x00, 0x10, 0x9E, 0x00, 0x15, 0x02, 0x00, 0x19, 0x02, 0x00, 0x12, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x84, 0x00, 0x18, 0xFE, 0x00, 0x09, 0x00, 0x00, 0x02, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x78, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x0B, 0xFF, 0x00, 0x09, 0x04, 0x00, 0x09, 0x44, 0x00, 0x09, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF3, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x22, 0x82, 0x00, 0x19, 0x7F, 0x00, 0x0A, 0x88, 0x00, 0x04, 0x88, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x09, 0x88, 0x00, 0x0A, 0xBE, 0x00, 0x0C, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x8A, 0x00, 0x0A, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x08, 0x88, 0x00, 0x08, 0x50, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x79, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x54, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x10, 0x50, 0x00, 0x00, 0x22, 0x00, 0x03, 0xFF, 0x00, 0x72, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x02, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF6, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x18, 0x88, 0x00, 0x09, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x78, 0x88, 0x00, 0x08, 0xFC, 0x00, 0x09, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0x48, 0x00, 0x08, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF7, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x23, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x77, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x19, 0x04, 0x00, 0x11, 0x14, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x22, 0x00, 0x0D, 0xFC, 0x00, 0x04, 0x28, 0x00, 0x00, 0x32, 0x00, 0x03, 0xFF, 0x00, 0x78, 0x40, 0x00, 0x08, 0x84, 0x00, 0x09, 0xFE, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BF9, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2F, 0xFF, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x00, 0x03, 0xDF, 0x00, 0x02, 0x41, 0x00, 0x72, 0x51, 0x00, 0x13, 0xCA, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x44, 0x00, 0x17, 0xE4, 0x00, 0x14, 0x4A, 0x00, 0x18, 0x4A, 0x00, 0x10, 0x51, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BFA, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x88, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x22, 0x00, 0x77, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x84, 0x00, 0x11, 0xFE, 0x00, 0x16, 0x84, 0x00, 0x10, 0x84, 0x00, 0x14, 0x84, 0x00, 0x18, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BFB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x14, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x00, 0x78, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x88, 0x00, 0x08, 0x4A, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x46, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BFC, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x80, 0x00, 0x01, 0x82, 0x00, 0x02, 0x46, 0x00, 0x74, 0x68, 0x00, 0x12, 0xB0, 0x00, 0x11, 0x30, 0x00, 0x13, 0x28, 0x00, 0x14, 0xE8, 0x00, 0x10, 0xA4, 0x00, 0x15, 0x27, 0x00, 0x1A, 0x22, 0x00, 0x10, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BFD, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x48, 0x00, 0x78, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0xCE, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x0B, 0xCF, 0x00, 0x0A, 0x48, 0x00, 0x0C, 0x48, 0x00, 0x08, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BFE, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x24, 0x00, 0x71, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x70, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x24, 0x00, 0x12, 0x27, 0x00, 0x04, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8BFF, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0xE0, 0x00, 0x18, 0x20, 0x00, 0x08, 0x24, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xA8, 0x00, 0x79, 0x27, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0x30, 0x00, 0x08, 0xCC, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C00, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0xA2, 0x00, 0x1B, 0x2F, 0x00, 0x0A, 0x22, 0x00, 0x02, 0x22, 0x00, 0x03, 0xAE, 0x00, 0x7A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x84, 0x00, 0x09, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C01, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x50, 0x00, 0x08, 0x8A, 0x00, 0x08, 0xFF, 0x00, 0x01, 0x88, 0x00, 0x02, 0x88, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x8A, 0x00, 0x0C, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C02, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x01, 0x44, 0x00, 0x02, 0x23, 0x00, 0x74, 0x02, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x10, 0x80, 0x00, 0x16, 0xA4, 0x00, 0x1A, 0x92, 0x00, 0x12, 0x82, 0x00, 0x04, 0x88, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C03, { 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x02, 0x22, 0x00, 0x02, 0xFA, 0x00, 0x72, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x16, 0x8A, 0x00, 0x1A, 0xFA, 0x00, 0x12, 0x82, 0x00, 0x04, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C04, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x18, 0x7E, 0x00, 0x08, 0x84, 0x00, 0x01, 0x08, 0x00, 0x02, 0x10, 0x00, 0x78, 0x42, 0x00, 0x09, 0x9F, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xDE, 0x00, 0x09, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C05, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x71, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x12, 0x20, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x26, 0x00, 0x12, 0x23, 0x00, 0x04, 0xA1, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C06, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x18, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x79, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C07, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x79, 0x54, 0x00, 0x0A, 0x22, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C08, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x00, 0x19, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x78, 0x87, 0x00, 0x0B, 0x22, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C0A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x01, 0x00, 0x08, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x71, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x19, 0x04, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C0B, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x21, 0x04, 0x00, 0x1F, 0xFF, 0x00, 0x09, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x79, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x70, 0x00, 0x0A, 0xA8, 0x00, 0x0D, 0x27, 0x00, 0x0A, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C0C, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x88, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x88, 0x00, 0x78, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x09, 0x48, 0x00, 0x0B, 0x84, 0x00, 0x0D, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C0D, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x20, 0xA8, 0x00, 0x18, 0xAA, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0xA8, 0x00, 0x00, 0xA8, 0x00, 0x78, 0xB8, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x38, 0x00, 0x0A, 0x54, 0x00, 0x0C, 0x93, 0x00, 0x09, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C0E, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x8A, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x00, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x71, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x15, 0x24, 0x00, 0x19, 0x25, 0x00, 0x12, 0x25, 0x00, 0x04, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C0F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x72, 0xAA, 0x00, 0x12, 0x72, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0xB0, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x24, 0x00, 0x12, 0x27, 0x00, 0x04, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C10, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x12, 0x12, 0x00, 0x0B, 0xD4, 0x00, 0x0A, 0x18, 0x00, 0x02, 0x11, 0x00, 0x02, 0xD1, 0x00, 0x7B, 0x2F, 0x00, 0x08, 0x44, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C11, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x20, 0x3E, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x02, 0x3E, 0x00, 0x73, 0xE0, 0x00, 0x12, 0x22, 0x00, 0x12, 0x3E, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x16, 0x80, 0x00, 0x1B, 0xFF, 0x00, 0x14, 0x80, 0x00, 0x04, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C12, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x70, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x14, 0x22, 0x00, 0x11, 0x5A, 0x00, 0x11, 0x8A, 0x00, 0x15, 0x02, 0x00, 0x19, 0xFA, 0x00, 0x10, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C13, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x70, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x19, 0x04, 0x00, 0x11, 0x14, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C14, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xDF, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x71, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x14, 0x04, 0x00, 0x18, 0x44, 0x00, 0x10, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C15, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x10, 0x00, 0x02, 0x08, 0x00, 0x05, 0xF7, 0x00, 0x78, 0x02, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x54, 0x00, 0x13, 0xD4, 0x00, 0x12, 0x54, 0x00, 0x13, 0xD4, 0x00, 0x16, 0x54, 0x00, 0x1A, 0x44, 0x00, 0x12, 0x54, 0x00, 0x02, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C16, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0xE0, 0x00, 0x10, 0x44, 0x00, 0x11, 0x24, 0x00, 0x00, 0xA8, 0x00, 0x07, 0xFE, 0x00, 0x70, 0x40, 0x00, 0x10, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0xF8, 0x00, 0x15, 0x88, 0x00, 0x19, 0x50, 0x00, 0x12, 0x20, 0x00, 0x04, 0x58, 0x00, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C17, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x80, 0x00, 0x08, 0xF8, 0x00, 0x09, 0x10, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x24, 0x00, 0x79, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x51, 0x00, 0x08, 0x91, 0x00, 0x0B, 0x0F, 0x00, 0x08, 0x60, 0x00, 0x08, 0x18, 0x00, 0x0A, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C18, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x24, 0x40, 0x00, 0x12, 0x40, 0x00, 0x12, 0x7E, 0x00, 0x00, 0x82, 0x00, 0x03, 0x24, 0x00, 0x74, 0x20, 0x00, 0x18, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x07, 0x00, 0x13, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x15, 0x04, 0x00, 0x19, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C19, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x09, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x52, 0x00, 0x7B, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x0B, 0x04, 0x00, 0x0D, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C1A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x12, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x00, 0x28, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x08, 0x00, 0x09, 0x10, 0x00, 0x09, 0x24, 0x00, 0x09, 0x48, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x00, 0x0B, 0x44, 0x00, 0x0D, 0x08, 0x00, 0x0A, 0x30, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C1B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x00, 0x50, 0x00, 0x03, 0xFF, 0x00, 0x7A, 0x21, 0x00, 0x0C, 0x22, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x0B, 0x24, 0x00, 0x0D, 0x2C, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C1C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x14, 0x92, 0x00, 0x12, 0x54, 0x00, 0x02, 0x10, 0x00, 0x00, 0x12, 0x00, 0x71, 0xFF, 0x00, 0x16, 0x10, 0x00, 0x12, 0x38, 0x00, 0x12, 0x34, 0x00, 0x12, 0x52, 0x00, 0x16, 0x92, 0x00, 0x1A, 0x10, 0x00, 0x12, 0x10, 0x00, 0x05, 0x03, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C1D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x02, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x72, 0x00, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x52, 0x00, 0x16, 0x52, 0x00, 0x1B, 0xFE, 0x00, 0x12, 0x52, 0x00, 0x16, 0x52, 0x00, 0x1A, 0x5A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C1F, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x8A, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C20, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x24, 0x00, 0x10, 0xA8, 0x00, 0x17, 0xFF, 0x00, 0x04, 0x01, 0x00, 0x09, 0xFE, 0x00, 0x71, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x50, 0x00, 0x10, 0x90, 0x00, 0x14, 0x91, 0x00, 0x19, 0x11, 0x00, 0x12, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C21, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x71, 0x04, 0x00, 0x12, 0x82, 0x00, 0x14, 0xFD, 0x00, 0x11, 0x04, 0x00, 0x12, 0x88, 0x00, 0x10, 0x50, 0x00, 0x14, 0x20, 0x00, 0x18, 0x58, 0x00, 0x11, 0x87, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C22, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x22, 0x44, 0x00, 0x17, 0xE4, 0x00, 0x14, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x7F, 0x00, 0x77, 0xC4, 0x00, 0x14, 0x44, 0x00, 0x14, 0x64, 0x00, 0x1F, 0xD4, 0x00, 0x10, 0xD4, 0x00, 0x15, 0x44, 0x00, 0x1A, 0x44, 0x00, 0x14, 0x44, 0x00, 0x09, 0x54, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C23, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x1E, 0x00, 0x13, 0xE0, 0x00, 0x11, 0x24, 0x00, 0x00, 0xA4, 0x00, 0x00, 0xA8, 0x00, 0x71, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x15, 0x24, 0x00, 0x19, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C24, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x24, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x00, 0x50, 0x00, 0x07, 0xFF, 0x00, 0x74, 0x42, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x80, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x88, 0x00, 0x14, 0x88, 0x00, 0x18, 0x88, 0x00, 0x11, 0x28, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C25, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x21, 0x04, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x71, 0x06, 0x00, 0x12, 0x02, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x54, 0x00, 0x11, 0x54, 0x00, 0x11, 0x54, 0x00, 0x15, 0x54, 0x00, 0x19, 0x54, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C26, { 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x10, 0x90, 0x00, 0x17, 0xFE, 0x00, 0x00, 0x90, 0x00, 0x03, 0xFC, 0x00, 0x70, 0x94, 0x00, 0x10, 0x94, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x94, 0x00, 0x10, 0x94, 0x00, 0x13, 0xFC, 0x00, 0x14, 0x90, 0x00, 0x19, 0x98, 0x00, 0x12, 0x97, 0x00, 0x04, 0x92, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C27, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x64, 0x00, 0x18, 0x24, 0x00, 0x0A, 0x8A, 0x00, 0x02, 0x91, 0x00, 0x04, 0xA1, 0x00, 0x78, 0xC4, 0x00, 0x09, 0x7C, 0x00, 0x0A, 0x00, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x54, 0x00, 0x09, 0x54, 0x00, 0x0B, 0x54, 0x00, 0x0D, 0x54, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C28, { 0x00, 0x00, 0x00, 0x20, 0x88, 0x00, 0x10, 0x8A, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x00, 0xF8, 0x00, 0x70, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x15, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C29, { 0x00, 0x00, 0x00, 0x23, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x02, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x70, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x92, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x02, 0x00, 0x11, 0xF8, 0x00, 0x11, 0x08, 0x00, 0x14, 0x90, 0x00, 0x18, 0x60, 0x00, 0x11, 0x98, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C2A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x00, 0x52, 0x00, 0x03, 0xFF, 0x00, 0x72, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x16, 0x8A, 0x00, 0x1A, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C2B, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x20, 0x48, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x01, 0xEA, 0x00, 0x01, 0x2A, 0x00, 0x79, 0xEA, 0x00, 0x09, 0x2A, 0x00, 0x09, 0xE2, 0x00, 0x09, 0x26, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x8A, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C2C, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x12, 0x52, 0x00, 0x11, 0x4A, 0x00, 0x02, 0x52, 0x00, 0x70, 0x62, 0x00, 0x10, 0x90, 0x00, 0x11, 0x28, 0x00, 0x16, 0x47, 0x00, 0x10, 0x92, 0x00, 0x11, 0x20, 0x00, 0x10, 0x48, 0x00, 0x15, 0x90, 0x00, 0x18, 0x20, 0x00, 0x10, 0x40, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C2D, { 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x52, 0x00, 0x73, 0xFE, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x14, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C2E, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x27, 0xDF, 0x00, 0x11, 0x04, 0x00, 0x15, 0x14, 0x00, 0x07, 0xDF, 0x00, 0x01, 0x04, 0x00, 0x73, 0x4C, 0x00, 0x15, 0x95, 0x00, 0x19, 0x27, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x15, 0xFC, 0x00, 0x19, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C2F, { 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x20, 0x92, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x03, 0x14, 0x00, 0x05, 0xFE, 0x00, 0x71, 0x10, 0x00, 0x11, 0x14, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x11, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x15, 0x00, 0x00, 0x1A, 0x92, 0x00, 0x12, 0x49, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C30, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x20, 0xBF, 0x00, 0x12, 0x82, 0x00, 0x12, 0x2A, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x22, 0x00, 0x72, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x72, 0x00, 0x16, 0xAA, 0x00, 0x1B, 0x26, 0x00, 0x12, 0x22, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C31, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x20, 0x50, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x50, 0x00, 0x01, 0x54, 0x00, 0x00, 0xD8, 0x00, 0x77, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x19, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xFC, 0x00, 0x10, 0x48, 0x00, 0x10, 0x30, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xA2, 0x00, 0x71, 0x20, 0x00, 0x16, 0x62, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x52, 0x00, 0x13, 0x8E, 0x00, 0x12, 0xFA, 0x00, 0x16, 0x8A, 0x00, 0x1A, 0xFA, 0x00, 0x12, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C33, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x20, 0x84, 0x00, 0x10, 0xA6, 0x00, 0x17, 0xF4, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x84, 0x00, 0x77, 0xF4, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x1C, 0xBA, 0x00, 0x14, 0x12, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C34, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x14, 0x92, 0x00, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x77, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x80, 0x00, 0x16, 0xFE, 0x00, 0x1A, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x05, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C35, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0xFC, 0x00, 0x11, 0x08, 0x00, 0x13, 0xFF, 0x00, 0x06, 0x44, 0x00, 0x02, 0x92, 0x00, 0x73, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x16, 0x00, 0x00, 0x1A, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C36, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x22, 0x48, 0x00, 0x12, 0x4C, 0x00, 0x15, 0xAA, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFF, 0x00, 0x71, 0x48, 0x00, 0x17, 0x78, 0x00, 0x11, 0x4A, 0x00, 0x17, 0x7A, 0x00, 0x11, 0x4A, 0x00, 0x17, 0x74, 0x00, 0x15, 0x4D, 0x00, 0x19, 0x55, 0x00, 0x17, 0xF3, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x43, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C38, { 0x00, 0x00, 0x00, 0x03, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x78, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C39, { 0x00, 0x00, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x33, 0x08, 0x00, 0x61, 0xBF, 0x80, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x18, 0x00, 0x33, 0x12, 0x00, 0x61, 0x92, 0x00, 0x00, 0x36, 0x00, 0x3F, 0x24, 0x00, 0x21, 0x65, 0x00, 0x21, 0xCD, 0x00, 0x21, 0x09, 0x00, 0x21, 0x0F, 0x80, 0x3F, 0x38, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C3A, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0x1F, 0x00, 0x33, 0x12, 0x00, 0x61, 0x92, 0x00, 0x08, 0x12, 0x00, 0x1C, 0x12, 0x00, 0x16, 0x12, 0x00, 0x33, 0x7F, 0x80, 0x61, 0x8A, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x1A, 0x00, 0x21, 0x12, 0x00, 0x21, 0x32, 0x00, 0x21, 0x62, 0x00, 0x21, 0x02, 0x00, 0x3F, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C3D, { 0x00, 0x00, 0x00, 0x12, 0x08, 0x00, 0x12, 0x1C, 0x00, 0x33, 0x14, 0x00, 0x61, 0xB6, 0x00, 0x08, 0x63, 0x00, 0x1C, 0x5D, 0x80, 0x16, 0x00, 0x00, 0x33, 0x3F, 0x00, 0x61, 0x84, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C3E, { 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x36, 0xFF, 0x80, 0x63, 0x80, 0x80, 0x08, 0xA4, 0x80, 0x1C, 0x24, 0x00, 0x14, 0x67, 0x80, 0x36, 0xC0, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C3F, { 0x00, 0x00, 0x00, 0x07, 0x0A, 0x00, 0x38, 0x11, 0x00, 0x04, 0x20, 0x80, 0x08, 0x00, 0x00, 0x32, 0x04, 0x00, 0x14, 0x0A, 0x00, 0x09, 0x11, 0x00, 0x13, 0x20, 0x80, 0x3C, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x11, 0x1F, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C41, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0x92, 0x00, 0x24, 0xA1, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x08, 0x00, 0x04, 0x14, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0xC1, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C45, { 0x00, 0x00, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x35, 0xFF, 0x80, 0x66, 0x94, 0x00, 0x08, 0x97, 0x80, 0x1D, 0xF8, 0x80, 0x14, 0x07, 0x80, 0x36, 0xF4, 0x00, 0x62, 0x97, 0x80, 0x00, 0xF4, 0x00, 0x3E, 0x97, 0x80, 0x22, 0xF4, 0x00, 0x22, 0x97, 0x80, 0x22, 0x94, 0x00, 0x22, 0x94, 0x80, 0x3E, 0xB3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x36, 0x10, 0x00, 0x14, 0x10, 0x00, 0x1E, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C48, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C49, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x63, 0x00, 0x22, 0x36, 0x00, 0x22, 0x1C, 0x00, 0x36, 0x08, 0x00, 0x14, 0x1C, 0x00, 0x1E, 0x36, 0x00, 0x70, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C4A, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x08, 0x00, 0x00, 0x90, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C4B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xBF, 0x00, 0x18, 0xC1, 0x00, 0x35, 0xE3, 0x00, 0x63, 0x36, 0x00, 0x16, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x03, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C4C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x99, 0x00, 0x00, 0x99, 0x00, 0x01, 0x69, 0x00, 0x06, 0x2B, 0x00, 0x24, 0x48, 0x00, 0x14, 0x48, 0x00, 0x1E, 0x88, 0x80, 0x31, 0x0F, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C4E, { 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x1B, 0x00, 0x21, 0x0A, 0x00, 0x3F, 0x0E, 0x00, 0x24, 0x1B, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C4F, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x7E, 0x24, 0x00, 0x01, 0xFF, 0x80, 0x3C, 0x28, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x29, 0x00, 0x24, 0x29, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x29, 0x00, 0x24, 0x29, 0x00, 0x24, 0xFF, 0x00, 0x34, 0x2C, 0x00, 0x14, 0x6A, 0x00, 0x1E, 0xAB, 0x00, 0x71, 0x29, 0x80, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C50, { 0x00, 0x00, 0x00, 0x04, 0x90, 0x00, 0x2E, 0xBD, 0x00, 0x24, 0x91, 0x00, 0x2E, 0xBD, 0x00, 0x24, 0x91, 0x00, 0x2E, 0xBD, 0x00, 0x24, 0x91, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C51, { 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x7F, 0x14, 0x00, 0x55, 0x7F, 0x00, 0x7F, 0x09, 0x00, 0x55, 0x09, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x48, 0x00, 0x7F, 0x48, 0x00, 0x00, 0x7F, 0x80, 0x7F, 0x18, 0x80, 0x41, 0x18, 0x80, 0x7F, 0x29, 0x80, 0x22, 0x29, 0x00, 0x36, 0x6B, 0x00, 0x14, 0xC8, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C53, { 0x00, 0x00, 0x00, 0x55, 0x44, 0x00, 0x7F, 0xC4, 0x00, 0x55, 0x44, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x44, 0x00, 0x7F, 0xCA, 0x00, 0x55, 0x4A, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x24, 0x80, 0x7F, 0xC2, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xAA, 0x80, 0x3F, 0xAA, 0x80, 0x11, 0x2A, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C54, { 0x00, 0x00, 0x00, 0x55, 0x44, 0x00, 0x7F, 0xC4, 0x00, 0x55, 0x5F, 0x00, 0x7F, 0xC4, 0x00, 0x55, 0x44, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x48, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x3E, 0x80, 0x7F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xAA, 0x80, 0x3F, 0xAA, 0x80, 0x11, 0x2A, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x50, 0x00, 0x00, 0x90, 0x00, 0x01, 0x91, 0x00, 0x06, 0x52, 0x00, 0x38, 0xF4, 0x00, 0x01, 0x28, 0x00, 0x02, 0x28, 0x00, 0x0C, 0x68, 0x00, 0x30, 0xA4, 0x00, 0x01, 0x24, 0x80, 0x06, 0x22, 0x80, 0x18, 0x21, 0x80, 0x00, 0x40, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x14, 0x22, 0x00, 0x14, 0x66, 0x00, 0x14, 0x94, 0x00, 0x14, 0x28, 0x00, 0x14, 0x48, 0x00, 0x14, 0x9C, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x49, 0x00, 0x14, 0x98, 0x00, 0x34, 0x30, 0x80, 0x26, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C58, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x09, 0x80, 0x08, 0x0F, 0x00, 0x19, 0xF8, 0x00, 0x33, 0x08, 0x00, 0x6A, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x34, 0x49, 0x00, 0x66, 0x49, 0x00, 0x0D, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x34, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x80, 0x0C, 0x09, 0x80, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C59, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x07, 0x82, 0x00, 0x38, 0xC6, 0x00, 0x03, 0x4C, 0x00, 0x3C, 0x70, 0x00, 0x00, 0xD8, 0x00, 0x07, 0x4E, 0x00, 0x7C, 0x43, 0x80, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x40, 0x00, 0x12, 0x20, 0x00, 0x12, 0x51, 0x00, 0x1E, 0x92, 0x00, 0x13, 0x2C, 0x00, 0x12, 0x48, 0x00, 0x12, 0x88, 0x00, 0x1F, 0x1C, 0x00, 0x12, 0x2C, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x8A, 0x00, 0x13, 0x09, 0x00, 0x22, 0x11, 0x00, 0x26, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3C, 0x00, 0x08, 0x24, 0x00, 0x19, 0x24, 0x00, 0x33, 0x24, 0x00, 0x6A, 0x64, 0x00, 0x1C, 0xC7, 0x80, 0x34, 0x00, 0x00, 0x66, 0x7E, 0x00, 0x0D, 0x22, 0x00, 0x1C, 0x36, 0x00, 0x34, 0x1C, 0x00, 0x64, 0x08, 0x00, 0x04, 0x1C, 0x00, 0x0C, 0x36, 0x00, 0x38, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x19, 0x49, 0x00, 0x33, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x34, 0x7F, 0x00, 0x66, 0x40, 0x00, 0x0D, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x34, 0x40, 0x00, 0x64, 0x40, 0x00, 0x04, 0x40, 0x80, 0x0C, 0x61, 0x80, 0x38, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C61, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x32, 0x00, 0x0C, 0x54, 0x00, 0x31, 0x98, 0x00, 0x06, 0x38, 0x00, 0x38, 0xD4, 0x00, 0x03, 0x12, 0x00, 0x1C, 0x11, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C62, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x71, 0x03, 0x80, 0x06, 0x8C, 0x00, 0x19, 0xD8, 0x00, 0x06, 0x60, 0x00, 0x18, 0xD0, 0x00, 0x03, 0x4C, 0x00, 0x3C, 0x43, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF7, 0x80, 0x08, 0x42, 0x00, 0x10, 0x42, 0x00, 0x22, 0x42, 0x00, 0x54, 0x42, 0x00, 0x18, 0x72, 0x00, 0x28, 0xCF, 0x80, 0x4C, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x18, 0x42, 0x00, 0x28, 0x42, 0x00, 0x48, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x18, 0x82, 0x00, 0x31, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x19, 0x42, 0x00, 0x33, 0x7E, 0x00, 0x6A, 0x42, 0x00, 0x1C, 0x42, 0x00, 0x34, 0x7E, 0x00, 0x66, 0x48, 0x80, 0x0D, 0x49, 0x80, 0x1C, 0xCF, 0x00, 0x34, 0x44, 0x00, 0x64, 0x46, 0x00, 0x04, 0x42, 0x00, 0x0C, 0x7B, 0x00, 0x39, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C66, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x21, 0xFC, 0x00, 0x2F, 0x01, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x21, 0x80, 0x00, 0x2E, 0x63, 0x00, 0x61, 0xB6, 0x00, 0x4E, 0x68, 0x00, 0x41, 0xAC, 0x00, 0x0E, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C68, { 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x1C, 0x00, 0x19, 0x36, 0x00, 0x33, 0x63, 0x00, 0x6A, 0x10, 0x00, 0x1C, 0xFF, 0x80, 0x34, 0x20, 0x00, 0x66, 0x48, 0x00, 0x0D, 0x7F, 0x00, 0x1C, 0xC9, 0x00, 0x35, 0x49, 0x00, 0x64, 0x49, 0x00, 0x04, 0x49, 0x00, 0x0C, 0x4B, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x19, 0x19, 0x00, 0x33, 0x33, 0x00, 0x6A, 0x6A, 0x00, 0x1C, 0x1C, 0x00, 0x34, 0x34, 0x00, 0x66, 0x66, 0x00, 0x0D, 0x0D, 0x00, 0x1C, 0x1D, 0x80, 0x34, 0x34, 0x00, 0x64, 0x64, 0x00, 0x04, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C6A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x0F, 0xFF, 0x00, 0x01, 0x62, 0x00, 0x06, 0x94, 0x00, 0x39, 0x38, 0x00, 0x1E, 0x54, 0x00, 0x01, 0x92, 0x00, 0x1E, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C6B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x44, 0x00, 0x12, 0x88, 0x00, 0x0D, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xFF, 0x00, 0x05, 0x30, 0x00, 0x04, 0x49, 0x00, 0x04, 0x9A, 0x00, 0x07, 0x2C, 0x00, 0x04, 0x4C, 0x00, 0x05, 0x9A, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x49, 0x00, 0x0D, 0xB0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C6C, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x7F, 0x00, 0x19, 0x12, 0x00, 0x33, 0x16, 0x00, 0x6A, 0x14, 0x00, 0x1C, 0xFF, 0x80, 0x34, 0x0C, 0x00, 0x66, 0x12, 0x00, 0x0D, 0x3F, 0x00, 0x1C, 0x61, 0x00, 0x34, 0xA1, 0x00, 0x64, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x21, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF7, 0x80, 0x08, 0x90, 0x80, 0x10, 0x90, 0x80, 0x22, 0x90, 0x80, 0x54, 0xF7, 0x80, 0x18, 0x80, 0x00, 0x28, 0x8F, 0x80, 0x4C, 0xF4, 0x80, 0x0A, 0x85, 0x80, 0x18, 0x85, 0x00, 0x28, 0xF7, 0x00, 0x48, 0x82, 0x00, 0x08, 0x87, 0x00, 0x18, 0x8D, 0x80, 0x30, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C73, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x89, 0x00, 0x28, 0x91, 0x00, 0x35, 0xAB, 0x00, 0x26, 0x8D, 0x00, 0x2A, 0x95, 0x00, 0x33, 0xA7, 0x00, 0x26, 0x8D, 0x00, 0x2A, 0x95, 0x00, 0x32, 0xA5, 0x00, 0x2C, 0x99, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C75, { 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x7C, 0x91, 0x00, 0x09, 0x91, 0x00, 0x11, 0x2A, 0x80, 0x23, 0x2A, 0x80, 0x54, 0x80, 0x00, 0x18, 0x84, 0x00, 0x29, 0x84, 0x00, 0x4D, 0x24, 0x00, 0x0B, 0x27, 0x00, 0x19, 0x24, 0x00, 0x29, 0x24, 0x00, 0x49, 0x24, 0x00, 0x09, 0x34, 0x00, 0x19, 0x2C, 0x00, 0x31, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C76, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x19, 0x22, 0x00, 0x33, 0xFF, 0x80, 0x6A, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x34, 0x7F, 0x00, 0x66, 0x41, 0x00, 0x0D, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x34, 0x7F, 0x00, 0x64, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x0C, 0x22, 0x00, 0x38, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C78, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x70, 0x00, 0x0F, 0xC2, 0x00, 0x02, 0x6E, 0x00, 0x03, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00, 0xD0, 0x00, 0x03, 0xB8, 0x00, 0x1E, 0x68, 0x00, 0x00, 0xC8, 0x00, 0x03, 0x88, 0x00, 0x1E, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C79, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x90, 0x00, 0x15, 0x20, 0x00, 0x2A, 0x7F, 0x80, 0x04, 0x80, 0x80, 0x0B, 0x00, 0x80, 0x12, 0x00, 0x80, 0x23, 0x3E, 0x80, 0x05, 0x00, 0x80, 0x09, 0x00, 0x80, 0x33, 0x00, 0x80, 0x05, 0x00, 0x80, 0x09, 0x00, 0x80, 0x31, 0x00, 0x80, 0x02, 0x01, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C7A, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x84, 0x00, 0x0A, 0x84, 0x00, 0x11, 0x04, 0x00, 0x2A, 0xFF, 0x80, 0x06, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x36, 0x0C, 0x00, 0x06, 0x14, 0x00, 0x09, 0x14, 0x00, 0x33, 0x24, 0x00, 0x05, 0x44, 0x00, 0x09, 0x84, 0x00, 0x31, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C7B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x65, 0x08, 0x00, 0x12, 0x08, 0x00, 0x04, 0x08, 0x00, 0x18, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x12, 0x08, 0x00, 0x66, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x12, 0x08, 0x00, 0x62, 0x08, 0x00, 0x06, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C7C, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x18, 0x44, 0x00, 0x65, 0x44, 0x00, 0x12, 0x44, 0x00, 0x04, 0x45, 0x80, 0x18, 0x77, 0x00, 0x64, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x44, 0x00, 0x66, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x44, 0x00, 0x62, 0x44, 0x80, 0x06, 0x74, 0x80, 0x1D, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C7E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x65, 0x08, 0x00, 0x12, 0x08, 0x00, 0x04, 0x18, 0x00, 0x18, 0x10, 0x00, 0x64, 0x34, 0x00, 0x04, 0x36, 0x00, 0x0A, 0x53, 0x00, 0x12, 0xD1, 0x80, 0x66, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x12, 0x10, 0x00, 0x62, 0x00, 0x00, 0x06, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C82, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x2A, 0x11, 0x00, 0x04, 0x11, 0x00, 0x0C, 0x21, 0x00, 0x12, 0x41, 0x00, 0x25, 0x8E, 0x00, 0x09, 0x00, 0x00, 0x13, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x09, 0x41, 0x00, 0x11, 0x41, 0x00, 0x21, 0x41, 0x00, 0x02, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C85, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x18, 0x24, 0x00, 0x65, 0x64, 0x00, 0x12, 0x44, 0x00, 0x04, 0x7F, 0x80, 0x18, 0xC4, 0x00, 0x65, 0x44, 0x00, 0x04, 0x4E, 0x00, 0x0A, 0x4E, 0x00, 0x12, 0x55, 0x00, 0x66, 0x55, 0x00, 0x0A, 0x64, 0x80, 0x12, 0x44, 0x00, 0x62, 0x44, 0x00, 0x06, 0x44, 0x00, 0x1C, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C86, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0xFF, 0x00, 0x65, 0x00, 0x00, 0x12, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x18, 0x42, 0x00, 0x64, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x0A, 0x42, 0x00, 0x12, 0x42, 0x00, 0x66, 0x42, 0x00, 0x0A, 0x7E, 0x00, 0x12, 0x00, 0x00, 0x62, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C87, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x7E, 0x00, 0x65, 0x42, 0x00, 0x12, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x18, 0x42, 0x00, 0x64, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x0A, 0x48, 0x80, 0x12, 0x49, 0x80, 0x66, 0x4F, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x46, 0x00, 0x62, 0x42, 0x00, 0x06, 0x7B, 0x00, 0x1D, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C89, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x65, 0x3F, 0x00, 0x12, 0x61, 0x00, 0x04, 0xD3, 0x00, 0x18, 0x16, 0x00, 0x64, 0x0C, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x33, 0x00, 0x12, 0xE1, 0x80, 0x66, 0x00, 0x00, 0x0A, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x62, 0x21, 0x00, 0x06, 0x21, 0x00, 0x1C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C8A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x15, 0x08, 0x00, 0x32, 0x10, 0x00, 0x0C, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x11, 0x41, 0x00, 0x23, 0x41, 0x00, 0x03, 0x7F, 0x00, 0x05, 0x41, 0x00, 0x09, 0x41, 0x00, 0x31, 0x41, 0x00, 0x01, 0x41, 0x00, 0x02, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C8B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x65, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x18, 0x41, 0x00, 0x64, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x66, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x62, 0x08, 0x00, 0x06, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C8C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x15, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x14, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x12, 0x41, 0x00, 0x23, 0x7F, 0x00, 0x05, 0x14, 0x00, 0x05, 0x14, 0x00, 0x09, 0x24, 0x00, 0x11, 0x24, 0x00, 0x01, 0x44, 0x80, 0x02, 0x84, 0x80, 0x0D, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C8D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0x7F, 0x00, 0x65, 0x49, 0x00, 0x12, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x18, 0x49, 0x00, 0x64, 0x49, 0x00, 0x04, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x66, 0x08, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x62, 0x08, 0x00, 0x06, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C8E, { 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x08, 0x67, 0x00, 0x15, 0x41, 0x00, 0x62, 0x41, 0x00, 0x14, 0x77, 0x00, 0x08, 0x41, 0x00, 0x14, 0x41, 0x00, 0x64, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x14, 0x00, 0x66, 0x14, 0x00, 0x0A, 0x14, 0x00, 0x12, 0x34, 0x00, 0x62, 0x24, 0x80, 0x06, 0x64, 0x80, 0x1C, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C90, { 0x00, 0x00, 0x00, 0x04, 0xF0, 0x00, 0x18, 0x18, 0x00, 0x64, 0x6C, 0x00, 0x12, 0xC6, 0x00, 0x05, 0xBB, 0x80, 0x18, 0x00, 0x00, 0x64, 0xF4, 0x80, 0x04, 0x94, 0x80, 0x0A, 0x9D, 0x80, 0x12, 0xD9, 0x00, 0x66, 0xB9, 0x00, 0x0A, 0x99, 0x00, 0x12, 0xDD, 0x80, 0x62, 0xB4, 0x80, 0x06, 0x94, 0x80, 0x1C, 0xB4, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C92, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x18, 0x88, 0x80, 0x65, 0x88, 0x80, 0x12, 0x88, 0x80, 0x04, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x64, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x0A, 0x10, 0x00, 0x12, 0xFF, 0x80, 0x66, 0xA4, 0x80, 0x0A, 0xA4, 0x80, 0x12, 0xA4, 0x80, 0x62, 0xA4, 0x80, 0x06, 0xA4, 0x80, 0x1C, 0xA5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C93, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x18, 0x22, 0x00, 0x65, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x04, 0x22, 0x00, 0x18, 0x00, 0x00, 0x64, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x49, 0x00, 0x66, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x62, 0x49, 0x00, 0x06, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C94, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x18, 0x10, 0x00, 0x65, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x04, 0x55, 0x00, 0x18, 0x49, 0x00, 0x64, 0x55, 0x00, 0x04, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x66, 0x44, 0x00, 0x0A, 0x75, 0x80, 0x12, 0x47, 0x00, 0x62, 0x44, 0x00, 0x06, 0x74, 0x80, 0x1C, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C98, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x10, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x44, 0x44, 0x00, 0x28, 0x44, 0x00, 0x10, 0xFE, 0x00, 0x68, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x64, 0xFE, 0x00, 0x0C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x64, 0x28, 0x00, 0x04, 0x6C, 0x00, 0x0C, 0xC6, 0x00, 0x39, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C99, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x18, 0xFF, 0x80, 0x65, 0x80, 0x00, 0x12, 0x9E, 0x00, 0x04, 0x92, 0x00, 0x18, 0x92, 0x00, 0x64, 0x9E, 0x00, 0x04, 0x80, 0x00, 0x0A, 0x80, 0x00, 0x12, 0xBB, 0x80, 0x66, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x62, 0xBB, 0x80, 0x06, 0x80, 0x00, 0x1C, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C9B, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x18, 0xE3, 0x80, 0x65, 0x22, 0x00, 0x12, 0x77, 0x00, 0x04, 0x55, 0x00, 0x18, 0x77, 0x00, 0x64, 0x22, 0x00, 0x04, 0x24, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0xC4, 0x00, 0x67, 0x7E, 0x00, 0x0A, 0x44, 0x00, 0x12, 0x7E, 0x00, 0x62, 0x44, 0x00, 0x06, 0x44, 0x00, 0x1C, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C9C, { 0x00, 0x00, 0x00, 0x05, 0xEF, 0x00, 0x19, 0x29, 0x00, 0x65, 0xEF, 0x00, 0x13, 0x29, 0x00, 0x05, 0xEF, 0x00, 0x19, 0x29, 0x00, 0x71, 0xFF, 0x80, 0x0B, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x15, 0x10, 0x00, 0x65, 0xFF, 0x00, 0x0D, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x64, 0x84, 0x00, 0x0C, 0x78, 0x00, 0x1B, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8C9D, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8C9E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CA0, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x28, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CA1, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x06, 0x00, 0x22, 0x06, 0x00, 0x22, 0x0A, 0x00, 0x22, 0x0A, 0x00, 0x3E, 0x12, 0x00, 0x22, 0x12, 0x00, 0x22, 0x22, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x82, 0x00, 0x14, 0x02, 0x00, 0x22, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CA4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x48, 0x00, 0x22, 0x48, 0x00, 0x22, 0x4B, 0x00, 0x3E, 0x4D, 0x00, 0x22, 0x59, 0x00, 0x22, 0x69, 0x00, 0x23, 0xC9, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x22, 0x48, 0x00, 0x3E, 0x40, 0x00, 0x14, 0x40, 0x80, 0x36, 0x61, 0x80, 0x62, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CA7, { 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x31, 0x05, 0x80, 0x02, 0x04, 0x00, 0x0C, 0x08, 0x00, 0x30, 0x30, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CA8, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x47, 0x00, 0x08, 0x78, 0x00, 0x18, 0x40, 0x00, 0x28, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x61, 0x00, 0x3E, 0x51, 0x00, 0x22, 0x52, 0x00, 0x22, 0x4A, 0x00, 0x3E, 0x4C, 0x00, 0x22, 0x4C, 0x00, 0x00, 0x54, 0x00, 0x12, 0x92, 0x00, 0x12, 0xA1, 0x00, 0x23, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CAA, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x20, 0x00, 0x02, 0x18, 0x00, 0x0D, 0xF6, 0x00, 0x30, 0x01, 0x80, 0x07, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CAC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CAD, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x32, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x61, 0x04, 0x00, 0x03, 0x06, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CAE, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x4C, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC6, 0x00, 0x08, 0x82, 0x80, 0x18, 0xC3, 0x80, 0x30, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CAF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CB0, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CB2, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x14, 0x23, 0x00, 0x17, 0xBE, 0x00, 0x14, 0x20, 0x80, 0x14, 0x21, 0x80, 0x1F, 0x9F, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CB3, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x0F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x50, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x80, 0x08, 0x82, 0x80, 0x10, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CB4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CB6, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x1C, 0x00, 0x22, 0xE8, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x01, 0x00, 0x22, 0x02, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x08, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x20, 0x00, 0x01, 0x40, 0x00, 0x14, 0xC0, 0x00, 0x13, 0x3F, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x21, 0x10, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CB8, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x5F, 0x80, 0x1B, 0xE0, 0x00, 0x28, 0x20, 0x80, 0x08, 0x18, 0x80, 0x08, 0x07, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CB9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x48, 0x00, 0x22, 0x48, 0x00, 0x22, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0xC8, 0x00, 0x22, 0x88, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x14, 0x08, 0x00, 0x36, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x64, 0x00, 0x14, 0x44, 0x80, 0x36, 0xC4, 0x80, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CBB, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x10, 0x80, 0x0C, 0x11, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CBC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x0F, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CBD, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x47, 0x00, 0x11, 0xF8, 0x80, 0x1F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x12, 0x41, 0x00, 0x11, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CBF, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x7F, 0x00, 0x10, 0x11, 0x00, 0x11, 0x11, 0x00, 0x17, 0xA1, 0x00, 0x38, 0x4E, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x26, 0x21, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x48, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x42, 0x00, 0x1E, 0xA4, 0x00, 0x13, 0x18, 0x00, 0x12, 0x18, 0x00, 0x12, 0x26, 0x00, 0x1E, 0xC1, 0x80, 0x13, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x26, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC3, { 0x00, 0x00, 0x00, 0x04, 0x0F, 0x00, 0x04, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x19, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x1E, 0x40, 0x00, 0x12, 0xFF, 0x00, 0x13, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x12, 0x41, 0x00, 0x21, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x30, 0x00, 0x22, 0x62, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x0C, 0x00, 0x22, 0x19, 0x00, 0x22, 0x33, 0x00, 0x22, 0xE6, 0x00, 0x3E, 0x0C, 0x00, 0x14, 0x1A, 0x00, 0x36, 0x33, 0x00, 0x62, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CC6, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x66, 0x00, 0x22, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x64, 0x00, 0x14, 0x44, 0x00, 0x36, 0xC4, 0x00, 0x63, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC7, { 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x10, 0x40, 0x00, 0x04, 0xFF, 0x00, 0x05, 0x12, 0x00, 0x0A, 0x10, 0x00, 0x10, 0x28, 0x00, 0x10, 0xC6, 0x00, 0x23, 0x01, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CC9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x18, 0x00, 0x22, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x55, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x14, 0x55, 0x00, 0x36, 0xFF, 0x80, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CCA, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3C, 0x09, 0x00, 0x24, 0x08, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x3C, 0x48, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x27, 0xFA, 0x00, 0x3C, 0x4A, 0x00, 0x24, 0x8C, 0x00, 0x24, 0x88, 0x00, 0x3C, 0x8C, 0x00, 0x00, 0x14, 0x80, 0x24, 0x22, 0x80, 0x22, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CCB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x22, 0x63, 0x00, 0x22, 0xC1, 0x80, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x36, 0x00, 0x22, 0x1C, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x14, 0x36, 0x00, 0x36, 0x63, 0x00, 0x62, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CCD, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x5F, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x14, 0x84, 0x00, 0x36, 0x04, 0x00, 0x62, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CCE, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x12, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x19, 0x00, 0x22, 0x0B, 0x00, 0x22, 0x0E, 0x00, 0x3E, 0x04, 0x00, 0x14, 0x1E, 0x80, 0x36, 0xF3, 0x80, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x33, 0x33, 0x00, 0x61, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x80, 0x00, 0x22, 0x80, 0x00, 0x22, 0x80, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x80, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0xA8, 0x00, 0x22, 0xA9, 0x00, 0x22, 0xA6, 0x00, 0x22, 0xA4, 0x00, 0x3E, 0xA2, 0x00, 0x00, 0xBE, 0x00, 0x15, 0x61, 0x00, 0x23, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CD3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x02, 0x44, 0x00, 0x04, 0x58, 0x00, 0x18, 0xE0, 0x00, 0x0F, 0xFE, 0x00, 0x38, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CD5, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3E, 0x13, 0x00, 0x22, 0x11, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x91, 0x00, 0x22, 0xD3, 0x00, 0x22, 0x56, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x18, 0x00, 0x22, 0x5C, 0x00, 0x22, 0x56, 0x00, 0x3E, 0xD3, 0x00, 0x15, 0x91, 0x80, 0x36, 0x10, 0x00, 0x62, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CD6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x28, 0x00, 0x22, 0x6C, 0x00, 0x3E, 0x46, 0x00, 0x22, 0xC3, 0x00, 0x23, 0xBD, 0x80, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x14, 0xD6, 0x00, 0x36, 0x93, 0x00, 0x62, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x80, 0x22, 0x48, 0x80, 0x3E, 0x5E, 0x80, 0x22, 0x48, 0x80, 0x22, 0x5E, 0x80, 0x22, 0x48, 0x80, 0x3E, 0x40, 0x80, 0x22, 0x5E, 0x80, 0x22, 0x52, 0x80, 0x22, 0x52, 0x80, 0x3E, 0x5E, 0x80, 0x14, 0x40, 0x80, 0x36, 0xC0, 0x80, 0x62, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CDA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0xF1, 0x00, 0x03, 0x58, 0x00, 0x0C, 0x46, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CDB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x60, 0x01, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x12, 0x80, 0x24, 0x22, 0x80, 0x24, 0x44, 0x80, 0x25, 0x88, 0x80, 0x3C, 0x10, 0x80, 0x10, 0x21, 0x00, 0x24, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x3C, 0x68, 0x00, 0x24, 0xCF, 0x80, 0x25, 0x80, 0x00, 0x24, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x54, 0x00, 0x24, 0x54, 0x00, 0x3C, 0xD6, 0x00, 0x14, 0x93, 0x00, 0x37, 0x91, 0x80, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CDE, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CE0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x82, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x26, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CE1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xA2, 0x00, 0x17, 0xFE, 0x00, 0x12, 0x04, 0x00, 0x17, 0xFE, 0x00, 0x1A, 0x05, 0x80, 0x13, 0xFC, 0x00, 0x32, 0x04, 0x00, 0x23, 0xFC, 0x00, 0x61, 0x08, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CE2, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x21, 0x00, 0x3F, 0x12, 0x00, 0x21, 0x0C, 0x00, 0x3F, 0x0C, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xA1, 0x80, 0x20, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CE3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CE4, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3E, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x18, 0x80, 0x22, 0x6C, 0x80, 0x23, 0x83, 0x80, 0x22, 0x28, 0x00, 0x3E, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x11, 0x00, 0x22, 0x0A, 0x00, 0x3E, 0x0C, 0x80, 0x14, 0x36, 0x80, 0x22, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CE6, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1E, 0x05, 0x00, 0x12, 0x7C, 0x80, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x12, 0x14, 0x00, 0x1E, 0x54, 0x00, 0x12, 0x5C, 0x00, 0x12, 0x54, 0x00, 0x12, 0x54, 0x00, 0x1E, 0x5A, 0x80, 0x01, 0xE2, 0x80, 0x12, 0x01, 0x80, 0x21, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CE8, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x19, 0x86, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CEA, { 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x1C, 0x38, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x40, 0x00, 0x22, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x22, 0x4E, 0x00, 0x3E, 0x44, 0x00, 0x14, 0x46, 0x00, 0x36, 0x73, 0x00, 0x62, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CED, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x80, 0x22, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x12, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x0C, 0x00, 0x22, 0x12, 0x00, 0x3E, 0x20, 0x00, 0x22, 0xFE, 0x00, 0x23, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x12, 0x42, 0x00, 0x21, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CEF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0xFF, 0x80, 0x23, 0x80, 0x80, 0x3E, 0x7C, 0x80, 0x22, 0x44, 0x80, 0x22, 0x7C, 0x80, 0x22, 0x44, 0x80, 0x3E, 0x7D, 0x80, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x36, 0x08, 0x00, 0x62, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CF0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x28, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x22, 0xFF, 0x00, 0x23, 0x42, 0x80, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x14, 0x42, 0x00, 0x36, 0x42, 0x00, 0x62, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CF2, { 0x00, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x30, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x11, 0x11, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CF4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x04, 0x13, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xFF, 0x80, 0x24, 0xA0, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x20, 0x80, 0x0E, 0x3F, 0x80, 0x0D, 0x20, 0x80, 0x14, 0xBF, 0x80, 0x14, 0x00, 0x00, 0x24, 0x11, 0x00, 0x04, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0xBE, 0x80, 0x3E, 0x80, 0x80, 0x22, 0xBE, 0x80, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x36, 0x41, 0x00, 0x62, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CF7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x3E, 0xBE, 0x00, 0x22, 0xA2, 0x00, 0x3E, 0xBE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x48, 0x04, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CF8, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x48, 0x00, 0x34, 0x48, 0x00, 0x2F, 0xFF, 0x80, 0x24, 0x84, 0x00, 0x25, 0xFE, 0x00, 0x36, 0x85, 0x80, 0x2C, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x64, 0xFC, 0x00, 0x4D, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CFA, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3E, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x28, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x29, 0x00, 0x22, 0x29, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x29, 0x00, 0x22, 0x29, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x2C, 0x00, 0x3E, 0x6A, 0x00, 0x14, 0xAB, 0x00, 0x37, 0x29, 0x80, 0x62, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CFB, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x12, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x93, 0x00, 0x12, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x12, 0x24, 0x00, 0x21, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CFC, { 0x00, 0x00, 0x00, 0x1E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x26, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CFD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x05, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8CFE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x44, 0x08, 0x00, 0x44, 0x3F, 0x00, 0x44, 0x08, 0x00, 0x57, 0x7F, 0x80, 0x51, 0x00, 0x00, 0x51, 0x3F, 0x00, 0x51, 0x21, 0x00, 0x57, 0x3F, 0x00, 0x44, 0x21, 0x00, 0x44, 0x3F, 0x00, 0x44, 0x21, 0x00, 0x44, 0x3F, 0x00, 0x7F, 0x12, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8CFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xEF, 0x00, 0x22, 0x63, 0x00, 0x22, 0xA5, 0x00, 0x3E, 0x63, 0x00, 0x22, 0xA5, 0x00, 0x22, 0x11, 0x00, 0x22, 0x38, 0x00, 0x3E, 0xEE, 0x00, 0x23, 0x83, 0x80, 0x22, 0x10, 0x00, 0x22, 0x64, 0x00, 0x3E, 0x19, 0x00, 0x14, 0x62, 0x00, 0x36, 0x0C, 0x00, 0x62, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D01, { 0x00, 0x00, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x42, 0x00, 0x22, 0xC2, 0x00, 0x3E, 0x22, 0x00, 0x41, 0x36, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x1C, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x1C, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x41, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D03, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x05, 0x00, 0x3E, 0x52, 0x80, 0x14, 0x50, 0x00, 0x36, 0xD9, 0x00, 0x62, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D04, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x3E, 0x00, 0x3F, 0xCA, 0x00, 0x11, 0x1A, 0x00, 0x3F, 0x8E, 0x80, 0x04, 0x12, 0x80, 0x1F, 0x21, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D05, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xD4, 0x00, 0x04, 0x0C, 0x00, 0x0F, 0x92, 0x00, 0x11, 0x61, 0x80, 0x26, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D07, { 0x00, 0x00, 0x00, 0x08, 0xEA, 0x00, 0x08, 0x09, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x28, 0x00, 0x14, 0xBC, 0x00, 0x08, 0xA2, 0x80, 0x16, 0xBD, 0x80, 0x21, 0xE0, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D08, { 0x00, 0x00, 0x00, 0x1E, 0x0C, 0x00, 0x12, 0x22, 0x00, 0x12, 0x41, 0x00, 0x13, 0x80, 0x80, 0x12, 0xFF, 0x80, 0x1E, 0x88, 0x80, 0x12, 0xAA, 0x80, 0x13, 0x9C, 0x80, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x28, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0xA9, 0x00, 0x22, 0xB9, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x36, 0x10, 0x00, 0x62, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D0A, { 0x00, 0x00, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0x14, 0x00, 0x1F, 0xBF, 0x80, 0x22, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x4A, 0x80, 0x31, 0xF3, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D0B, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x44, 0x00, 0x24, 0xFF, 0x80, 0x2D, 0x88, 0x00, 0x36, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x62, 0x02, 0x00, 0x43, 0xFE, 0x00, 0x0E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D0D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1E, 0x7E, 0x00, 0x12, 0x84, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x94, 0x00, 0x1E, 0xF7, 0x80, 0x12, 0x80, 0x00, 0x12, 0xBE, 0x00, 0x12, 0x80, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0xBE, 0x00, 0x12, 0xBE, 0x00, 0x12, 0x80, 0x00, 0x12, 0xFF, 0x00, 0x22, 0xC1, 0x00, 0x27, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D0F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xED, 0x00, 0x25, 0x2B, 0x00, 0x3D, 0xE9, 0x00, 0x24, 0xC9, 0x00, 0x4D, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D10, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0x11, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x80, 0x3C, 0xA5, 0x00, 0x25, 0x24, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0xA9, 0x00, 0x14, 0xA9, 0x00, 0x32, 0xA9, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D12, { 0x00, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x7E, 0x92, 0x00, 0x42, 0xFE, 0x00, 0x7E, 0x15, 0x00, 0x48, 0xA2, 0x00, 0x7F, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D13, { 0x00, 0x00, 0x00, 0x38, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x28, 0x05, 0x00, 0x3A, 0xFF, 0x80, 0x2A, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2B, 0xD4, 0x80, 0x38, 0xF4, 0x80, 0x28, 0xD5, 0x00, 0x2B, 0xD5, 0x00, 0x2A, 0xF6, 0x00, 0x3A, 0xD2, 0x00, 0x02, 0xD6, 0x80, 0x29, 0x79, 0x80, 0x26, 0x50, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D14, { 0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x0C, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x61, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D16, { 0x00, 0x00, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0x29, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x3D, 0xFF, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x14, 0x82, 0x00, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D17, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x2C, 0x82, 0x00, 0x34, 0xFF, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x80, 0x65, 0x54, 0x80, 0x45, 0x2A, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D1B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x3F, 0x80, 0x22, 0x52, 0x00, 0x14, 0x0C, 0x00, 0x7F, 0x73, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D1D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x01, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D1E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x20, 0x00, 0x02, 0x18, 0x00, 0x0C, 0x04, 0x00, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D1F, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x08, 0x24, 0x00, 0x17, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x00, 0xB0, 0x00, 0x01, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D21, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D22, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2A, 0x0A, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x88, 0x00, 0x15, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0x08, 0x00, 0x40, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D23, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D24, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x88, 0x00, 0x24, 0x50, 0x00, 0x24, 0x20, 0x00, 0x24, 0x50, 0x00, 0x25, 0x8F, 0x00, 0x0F, 0xFA, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D25, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x22, 0x22, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x08, 0x10, 0x00, 0x14, 0x28, 0x00, 0x12, 0x47, 0x00, 0x22, 0x82, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D26, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x3F, 0x42, 0x00, 0x22, 0x42, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x42, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x08, 0x44, 0x00, 0x14, 0x47, 0x00, 0x22, 0x62, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D27, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x4C, 0x00, 0x18, 0x70, 0x00, 0x2B, 0xC1, 0x00, 0x48, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D28, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x04, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x14, 0x44, 0x00, 0x24, 0x84, 0x00, 0x21, 0x38, 0x00, 0x46, 0x06, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D29, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x0E, 0x00, 0x22, 0xF0, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA8, 0x00, 0x2A, 0x98, 0x00, 0x2A, 0x90, 0x00, 0x08, 0xA8, 0x00, 0x15, 0x24, 0x00, 0x22, 0x47, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D2A, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x03, 0x20, 0x00, 0x04, 0x98, 0x00, 0x1B, 0xE7, 0x00, 0x60, 0x22, 0x00, 0x00, 0x48, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x02, 0x60, 0x00, 0x04, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D2B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x20, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xE8, 0x00, 0x12, 0x27, 0x00, 0x62, 0x22, 0x00, 0x04, 0xA0, 0x00, 0x18, 0x48, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D2C, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x0E, 0x00, 0x22, 0xF0, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x20, 0x00, 0x14, 0x40, 0x00, 0x23, 0xA3, 0x00, 0x41, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D2D, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x3F, 0x40, 0x00, 0x22, 0x42, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0x02, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xFA, 0x00, 0x08, 0x0A, 0x00, 0x14, 0x02, 0x00, 0x22, 0x14, 0x00, 0x42, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D2E, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x10, 0x00, 0x22, 0x10, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x2B, 0x02, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x08, 0x02, 0x00, 0x15, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D2F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x30, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D30, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x49, 0x00, 0x05, 0x05, 0x00, 0x08, 0xC5, 0x00, 0x30, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D31, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x28, 0x00, 0x22, 0x24, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x3E, 0x00, 0x2A, 0xE0, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x3E, 0x00, 0x2B, 0xE0, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x30, 0x00, 0x14, 0x49, 0x00, 0x23, 0x85, 0x00, 0x42, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D32, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x02, 0x10, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D33, { 0x00, 0x00, 0x00, 0x09, 0x10, 0x00, 0x09, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x02, 0x10, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D34, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x22, 0x22, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x08, 0x82, 0x00, 0x14, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D35, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D36, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x08, 0x48, 0x00, 0x14, 0x49, 0x00, 0x12, 0x89, 0x00, 0x21, 0x09, 0x00, 0x42, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D37, { 0x00, 0x00, 0x00, 0x04, 0x50, 0x00, 0x04, 0x48, 0x00, 0x08, 0x5E, 0x00, 0x1B, 0xE0, 0x00, 0x28, 0x21, 0x00, 0x48, 0x19, 0x00, 0x08, 0x07, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D38, { 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x3C, 0x7F, 0x00, 0x20, 0x22, 0x00, 0x24, 0x22, 0x00, 0x27, 0x2A, 0x00, 0x39, 0x44, 0x00, 0x60, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x1C, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D39, { 0x00, 0x00, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x24, 0x00, 0x3F, 0xFC, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x04, 0x25, 0x00, 0x1F, 0xFA, 0x00, 0x68, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D3A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x12, 0xBE, 0x00, 0x21, 0x08, 0x00, 0x4F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D3B, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x22, 0x20, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x08, 0x82, 0x00, 0x14, 0x82, 0x00, 0x12, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D3C, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x14, 0x00, 0x22, 0x12, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x4A, 0x00, 0x2B, 0xFA, 0x00, 0x2A, 0x4C, 0x00, 0x2A, 0x4C, 0x00, 0x2A, 0x48, 0x00, 0x14, 0x94, 0x00, 0x12, 0x95, 0x00, 0x21, 0x25, 0x00, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D3D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x24, 0x00, 0x0E, 0xE4, 0x00, 0x78, 0x54, 0x00, 0x08, 0x85, 0x00, 0x31, 0x03, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D3E, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x30, 0x00, 0x06, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D3F, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x22, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0xFF, 0x00, 0x2B, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x22, 0x4A, 0x00, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D40, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x42, 0x00, 0x17, 0x4C, 0x00, 0x14, 0x70, 0x00, 0x14, 0x41, 0x00, 0x17, 0x41, 0x00, 0x78, 0x3F, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x02, 0x18, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D41, { 0x00, 0x00, 0x00, 0x04, 0x0C, 0x00, 0x0B, 0xF0, 0x00, 0x18, 0x22, 0x00, 0x2F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D42, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x22, 0x7E, 0x00, 0x2A, 0xC4, 0x00, 0x2B, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x47, 0x00, 0x2B, 0x82, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x14, 0x82, 0x00, 0x12, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D43, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x0A, 0x00, 0x22, 0xFF, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x14, 0x8A, 0x00, 0x22, 0xFF, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D44, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFE, 0x00, 0x05, 0x22, 0x00, 0x1A, 0x24, 0x00, 0x70, 0x50, 0x00, 0x10, 0x88, 0x00, 0x13, 0x07, 0x00, 0x0F, 0xFA, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D45, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x10, 0x00, 0x22, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xFA, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x44, 0x00, 0x08, 0x88, 0x00, 0x14, 0x14, 0x00, 0x12, 0x22, 0x00, 0x22, 0x41, 0x00, 0x40, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D46, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x3F, 0x7F, 0x00, 0x22, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x50, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xA7, 0x00, 0x2B, 0x12, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x00, 0x00, 0x14, 0x60, 0x00, 0x12, 0x18, 0x00, 0x22, 0x0C, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D47, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x14, 0x00, 0x22, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x58, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x34, 0x00, 0x2A, 0x54, 0x00, 0x09, 0x92, 0x00, 0x14, 0x11, 0x00, 0x12, 0x10, 0x00, 0x22, 0x50, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D48, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x15, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x24, 0x31, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D49, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA2, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0xA0, 0x00, 0x04, 0x90, 0x00, 0x1F, 0xFC, 0x00, 0x68, 0x0B, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x60, 0x00, 0x02, 0x10, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D4A, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x22, 0x28, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x83, 0x00, 0x2B, 0x7C, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x08, 0x54, 0x00, 0x14, 0xD3, 0x00, 0x13, 0x11, 0x00, 0x22, 0x50, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D4B, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x22, 0x16, 0x00, 0x2A, 0xFD, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xBC, 0x00, 0x2A, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x14, 0xBC, 0x00, 0x13, 0xE5, 0x00, 0x22, 0x85, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D4C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x22, 0x22, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x28, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0xC4, 0x00, 0x2B, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x14, 0x44, 0x00, 0x22, 0x7C, 0x00, 0x42, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D4D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x04, 0x90, 0x00, 0x0A, 0xA8, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x4F, 0xFA, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x02, 0x10, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D4E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x14, 0x00, 0x22, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x0A, 0x00, 0x2A, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x12, 0x28, 0x00, 0x22, 0x46, 0x00, 0x41, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D4F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x47, 0xF2, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x01, 0x60, 0x00, 0x06, 0x18, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D50, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0xFF, 0x00, 0x2B, 0x2A, 0x00, 0x2A, 0x4A, 0x00, 0x08, 0x92, 0x00, 0x15, 0x22, 0x00, 0x22, 0x42, 0x00, 0x40, 0x94, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D53, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFC, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x17, 0xFC, 0x00, 0x11, 0x10, 0x00, 0x13, 0xF8, 0x00, 0x16, 0x0F, 0x00, 0x1A, 0x4A, 0x00, 0x12, 0x48, 0x00, 0x20, 0xA0, 0x00, 0x21, 0x18, 0x00, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D54, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x08, 0x82, 0x00, 0x14, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x40, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D55, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x12, 0x00, 0x22, 0x56, 0x00, 0x2A, 0x58, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x26, 0x00, 0x2A, 0xD2, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x54, 0x00, 0x08, 0x98, 0x00, 0x14, 0x28, 0x00, 0x12, 0x24, 0x00, 0x22, 0x47, 0x00, 0x41, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D56, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x7F, 0x3E, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x8A, 0x00, 0x2B, 0x7F, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x1C, 0x52, 0x00, 0x1A, 0x52, 0x00, 0x2A, 0x10, 0x00, 0x48, 0x2C, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D58, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x3F, 0x00, 0x1F, 0x42, 0x00, 0x04, 0x62, 0x00, 0x7F, 0x94, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x14, 0x00, 0x11, 0x23, 0x00, 0x66, 0x48, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x03, 0x60, 0x00, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D59, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3E, 0x14, 0x00, 0x23, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x04, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x84, 0x00, 0x12, 0x44, 0x00, 0x22, 0x54, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D5A, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x28, 0x00, 0x23, 0xFF, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x14, 0xAB, 0x00, 0x23, 0x2A, 0x00, 0x40, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D5B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x4F, 0xFA, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x14, 0x17, 0x00, 0x64, 0x92, 0x00, 0x04, 0x90, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D5C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x2F, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2E, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x28, 0x00, 0x3F, 0x26, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D5D, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x28, 0x00, 0x12, 0x7E, 0x00, 0x16, 0xC8, 0x00, 0x1B, 0x7E, 0x00, 0x12, 0x48, 0x00, 0x12, 0x4F, 0x00, 0x12, 0x40, 0x00, 0x17, 0xFC, 0x00, 0x14, 0x04, 0x00, 0x14, 0x44, 0x00, 0x24, 0x44, 0x00, 0x20, 0xB0, 0x00, 0x43, 0x0C, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D5E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0x28, 0x00, 0x1F, 0x3E, 0x00, 0x24, 0x48, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x14, 0x00, 0x0B, 0x14, 0x00, 0x12, 0x25, 0x00, 0x20, 0x43, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x48, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D60, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x28, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xD6, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x44, 0x00, 0x10, 0x7C, 0x00, 0x14, 0x44, 0x00, 0x22, 0x7C, 0x00, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D61, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x84, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xC9, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0xBE, 0x00, 0x15, 0x22, 0x00, 0x22, 0x22, 0x00, 0x44, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D62, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xEE, 0x00, 0x2A, 0x2A, 0x00, 0x3A, 0xAA, 0x00, 0x2A, 0xAE, 0x00, 0x38, 0x8A, 0x00, 0x29, 0x4B, 0x00, 0x5A, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D63, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x3C, 0x00, 0x22, 0x68, 0x00, 0x14, 0x90, 0x00, 0x7F, 0x2C, 0x00, 0x00, 0xC3, 0x00, 0x3E, 0x7C, 0x00, 0x22, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x7F, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x2C, 0x00, 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D64, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, 0x04, 0x94, 0x00, 0x04, 0x92, 0x00, 0x09, 0x12, 0x00, 0x11, 0x11, 0x00, 0x22, 0x11, 0x00, 0x04, 0x10, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D65, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x08, 0xC9, 0x80, 0x7F, 0x89, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x1C, 0x00, 0x36, 0x14, 0x00, 0x55, 0x14, 0x00, 0x14, 0x36, 0x00, 0x34, 0x22, 0x00, 0x24, 0x63, 0x00, 0x6C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D66, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xD0, 0x00, 0x02, 0x1F, 0x80, 0x3F, 0xE2, 0x00, 0x09, 0x62, 0x00, 0x09, 0xA2, 0x00, 0x29, 0x54, 0x00, 0x29, 0x54, 0x00, 0x29, 0x4C, 0x00, 0x29, 0x48, 0x00, 0x29, 0x54, 0x00, 0x11, 0x12, 0x00, 0x11, 0x21, 0x00, 0x23, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D67, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xE0, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x3F, 0x00, 0x2A, 0x29, 0x00, 0x2B, 0x2B, 0x00, 0x6A, 0xAE, 0x00, 0x4A, 0x24, 0x00, 0x1A, 0x2E, 0x00, 0x12, 0x3B, 0x00, 0x36, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D69, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x3E, 0x62, 0x00, 0x08, 0x44, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x36, 0x40, 0x00, 0x55, 0x40, 0x00, 0x14, 0x40, 0x00, 0x34, 0x40, 0x80, 0x24, 0x61, 0x80, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D6B, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x3F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x0A, 0x00, 0x0A, 0x0A, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x0A, 0x4A, 0x00, 0x0A, 0x12, 0x00, 0x12, 0x12, 0x00, 0x26, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D6C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x0F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x14, 0x41, 0x00, 0x34, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x6C, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D6D, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x12, 0x00, 0x08, 0x16, 0x00, 0x08, 0x14, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x18, 0x00, 0x14, 0x24, 0x00, 0x14, 0x7F, 0x00, 0x36, 0xA1, 0x00, 0x55, 0x21, 0x00, 0x14, 0x3F, 0x00, 0x34, 0x21, 0x00, 0x24, 0x21, 0x00, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D6E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x3E, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0xF7, 0x80, 0x7F, 0x80, 0x00, 0x14, 0x8F, 0x80, 0x14, 0xF4, 0x80, 0x14, 0x85, 0x80, 0x36, 0x85, 0x00, 0x55, 0x87, 0x00, 0x14, 0xF2, 0x00, 0x34, 0x87, 0x00, 0x24, 0x8D, 0x80, 0x6C, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D70, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D71, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x02, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D73, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x1F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x14, 0x12, 0x00, 0x17, 0xD7, 0x80, 0x14, 0x3A, 0x00, 0x14, 0x02, 0x00, 0x14, 0x02, 0x00, 0x1E, 0x02, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D74, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF6, 0x00, 0x02, 0x05, 0x00, 0x12, 0x04, 0x80, 0x12, 0x04, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x04, 0x00, 0x1A, 0x04, 0x00, 0x16, 0x04, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D75, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x44, 0x00, 0x3F, 0x44, 0x00, 0x04, 0x28, 0x00, 0x05, 0x28, 0x00, 0x7F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x14, 0x28, 0x00, 0x17, 0x24, 0x00, 0x14, 0x46, 0x00, 0x1C, 0x82, 0x00, 0x24, 0x00, 0x00, 0x22, 0x03, 0x00, 0x41, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D76, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x04, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x24, 0x03, 0x00, 0x43, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D77, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x1F, 0xC1, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x1F, 0x00, 0x3F, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xD0, 0x80, 0x12, 0x10, 0x80, 0x12, 0x1F, 0x80, 0x1A, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D7F, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x06, 0x00, 0x3F, 0x3C, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x7F, 0xBF, 0x80, 0x04, 0x24, 0x00, 0x24, 0x24, 0x00, 0x27, 0x26, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x24, 0x3A, 0x80, 0x34, 0xE1, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D81, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x1C, 0x00, 0x3F, 0x14, 0x00, 0x04, 0x36, 0x00, 0x04, 0x63, 0x00, 0x04, 0x0D, 0x80, 0x7F, 0x98, 0x00, 0x04, 0x33, 0x00, 0x24, 0x06, 0x00, 0x27, 0x1C, 0x00, 0x24, 0x31, 0x80, 0x24, 0x03, 0x00, 0x24, 0x0E, 0x00, 0x34, 0x38, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D82, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x69, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x04, 0x2A, 0x00, 0x24, 0x2A, 0x00, 0x27, 0x2A, 0x00, 0x24, 0x6B, 0x00, 0x24, 0x49, 0x00, 0x24, 0x08, 0x00, 0x34, 0x18, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D84, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x24, 0x21, 0x00, 0x27, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x24, 0x21, 0x00, 0x24, 0x21, 0x00, 0x34, 0x7F, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D85, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x1F, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xA6, 0x00, 0x04, 0x40, 0x00, 0x04, 0x3F, 0x00, 0x17, 0xA1, 0x00, 0x14, 0x21, 0x00, 0x14, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x2C, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D88, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x04, 0x0F, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x27, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x34, 0x7F, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D8A, { 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x04, 0x04, 0x80, 0x04, 0x04, 0x00, 0x1F, 0xBF, 0x80, 0x04, 0x24, 0x00, 0x04, 0x24, 0x80, 0x3F, 0xE5, 0x00, 0x04, 0x25, 0x00, 0x04, 0x26, 0x00, 0x17, 0xA6, 0x00, 0x14, 0x24, 0x80, 0x14, 0x3A, 0x80, 0x14, 0xD1, 0x80, 0x1C, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D8B, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x3C, 0x00, 0x3F, 0x44, 0x00, 0x04, 0x88, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x14, 0x02, 0x00, 0x17, 0x7E, 0x00, 0x14, 0x02, 0x00, 0x14, 0x02, 0x00, 0x14, 0xFE, 0x00, 0x2C, 0x00, 0x00, 0x44, 0x03, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D8D, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x1E, 0x00, 0x3F, 0x32, 0x00, 0x04, 0x56, 0x00, 0x04, 0x0C, 0x00, 0x04, 0x18, 0x00, 0x7F, 0xF4, 0x00, 0x04, 0x07, 0x80, 0x24, 0x08, 0x80, 0x27, 0x11, 0x80, 0x24, 0x6B, 0x00, 0x24, 0x06, 0x00, 0x24, 0x1C, 0x00, 0x34, 0xF0, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D90, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x77, 0x80, 0x3F, 0x10, 0x80, 0x04, 0x11, 0x80, 0x04, 0x32, 0x80, 0x04, 0x54, 0x80, 0x7F, 0x90, 0x80, 0x04, 0x11, 0x80, 0x24, 0x32, 0x80, 0x27, 0x54, 0x80, 0x24, 0x10, 0x80, 0x24, 0x10, 0x80, 0x24, 0x10, 0x80, 0x34, 0x73, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D91, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3E, 0x0F, 0x80, 0x04, 0xD8, 0x80, 0x04, 0x11, 0x80, 0x04, 0x15, 0x00, 0x7F, 0x04, 0x00, 0x04, 0x44, 0x00, 0x24, 0x4E, 0x00, 0x26, 0x4A, 0x00, 0x24, 0xCA, 0x00, 0x24, 0x9B, 0x00, 0x24, 0x91, 0x00, 0x34, 0x31, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D94, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xF2, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x8A, 0x00, 0x08, 0xEA, 0x00, 0x7E, 0xAA, 0x00, 0x09, 0x2A, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0x6A, 0x00, 0x2E, 0x4A, 0x00, 0x28, 0x82, 0x00, 0x39, 0x0A, 0x00, 0x28, 0x04, 0x00, 0x24, 0x03, 0x00, 0x43, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D95, { 0x00, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0x80, 0x00, 0x04, 0x7F, 0x80, 0x24, 0x08, 0x00, 0x27, 0x08, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x34, 0x08, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D99, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x2A, 0x00, 0x1F, 0x49, 0x00, 0x04, 0x88, 0x80, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x17, 0xFF, 0x00, 0x14, 0x41, 0x00, 0x14, 0x43, 0x00, 0x2C, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8D9E, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x04, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x27, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x34, 0x7E, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8D9F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0x2A, 0x00, 0x04, 0x6B, 0x00, 0x04, 0x49, 0x00, 0x04, 0x7F, 0x80, 0x7F, 0xC0, 0x80, 0x04, 0x40, 0x80, 0x24, 0x5E, 0x80, 0x27, 0x52, 0x80, 0x24, 0x52, 0x80, 0x24, 0x5E, 0x80, 0x24, 0x40, 0x80, 0x34, 0x41, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DA0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x0F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x27, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x34, 0x08, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DA3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x04, 0x48, 0x00, 0x1F, 0x48, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x48, 0x80, 0x3F, 0xCD, 0x00, 0x04, 0x7B, 0x00, 0x04, 0x49, 0x00, 0x17, 0x5B, 0x00, 0x14, 0xEA, 0x80, 0x14, 0x0C, 0x80, 0x14, 0x08, 0x80, 0x1C, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DA6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3E, 0xCF, 0x80, 0x04, 0x10, 0x80, 0x04, 0x15, 0x00, 0x04, 0x04, 0x00, 0x7F, 0x4E, 0x00, 0x04, 0x4A, 0x00, 0x24, 0xD1, 0x00, 0x26, 0xBF, 0x80, 0x24, 0x91, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x34, 0x1F, 0x00, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DA8, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x3F, 0x80, 0x1F, 0x48, 0x80, 0x04, 0x2A, 0x80, 0x04, 0x3E, 0x80, 0x3F, 0xA2, 0x80, 0x04, 0x13, 0x00, 0x04, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x6A, 0x80, 0x14, 0xAA, 0x80, 0x14, 0x3E, 0x80, 0x2C, 0x21, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DAB, { 0x00, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x80, 0x04, 0x12, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x52, 0x80, 0x7F, 0x9E, 0x00, 0x04, 0x00, 0x00, 0x24, 0x7F, 0x80, 0x27, 0x40, 0x80, 0x24, 0x5E, 0x80, 0x24, 0x52, 0x80, 0x24, 0x5E, 0x80, 0x34, 0x41, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DAC, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x22, 0x00, 0x04, 0xF7, 0x80, 0x7F, 0x22, 0x00, 0x04, 0xF7, 0x80, 0x24, 0x00, 0x00, 0x26, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x24, 0x24, 0x80, 0x24, 0x64, 0x80, 0x34, 0xC3, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DAF, { 0x00, 0x00, 0x00, 0x04, 0xF7, 0x80, 0x04, 0x52, 0x80, 0x3F, 0xB5, 0x80, 0x04, 0x52, 0x80, 0x04, 0x94, 0x80, 0x04, 0x31, 0x80, 0x7F, 0x44, 0x00, 0x04, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x27, 0x7F, 0x80, 0x24, 0x44, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x44, 0x00, 0x34, 0x7F, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DB1, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x94, 0x00, 0x3F, 0xDE, 0x00, 0x0C, 0xA4, 0x00, 0x0B, 0xFF, 0x00, 0x7D, 0x8C, 0x00, 0x0A, 0xD5, 0x00, 0x2C, 0xA7, 0x00, 0x2B, 0xFC, 0x00, 0x2D, 0x04, 0x00, 0x29, 0x24, 0x00, 0x39, 0x24, 0x00, 0x29, 0x5C, 0x00, 0x24, 0x84, 0x00, 0x43, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DB2, { 0x00, 0x00, 0x00, 0x04, 0xA5, 0x00, 0x04, 0xF7, 0x80, 0x3E, 0x21, 0x00, 0x04, 0xF7, 0x80, 0x04, 0xA5, 0x00, 0x04, 0x31, 0x80, 0x7F, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x26, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x34, 0x80, 0x80, 0x6E, 0x00, 0x00, 0x43, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x02, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DB4, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0x48, 0x00, 0x22, 0x48, 0x00, 0x22, 0x48, 0x00, 0x22, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x2E, 0x48, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x2F, 0x04, 0x00, 0x71, 0x07, 0x00, 0x22, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DB5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x22, 0xC1, 0x00, 0x22, 0x81, 0x00, 0x3F, 0x81, 0x00, 0x08, 0x01, 0x00, 0x28, 0x79, 0x00, 0x2E, 0x01, 0x00, 0x28, 0x01, 0x00, 0x28, 0x01, 0x00, 0x28, 0x01, 0x00, 0x2E, 0x03, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DB7, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x22, 0xC0, 0x00, 0x23, 0x80, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x06, 0x00, 0x28, 0x0C, 0x00, 0x2E, 0x18, 0x00, 0x28, 0x30, 0x00, 0x28, 0x20, 0x00, 0x28, 0x60, 0x00, 0x2E, 0x40, 0x80, 0x38, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DB8, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x04, 0x48, 0x00, 0x18, 0x30, 0x00, 0x6F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x80, 0x00, 0x04, 0xFC, 0x00, 0x0C, 0x80, 0x00, 0x13, 0x83, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DB9, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x11, 0x00, 0x29, 0xFF, 0x80, 0x2E, 0x10, 0x00, 0x28, 0x50, 0x00, 0x28, 0x70, 0x00, 0x28, 0x28, 0x00, 0x2E, 0x6C, 0x00, 0x38, 0xC6, 0x00, 0x61, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DBA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x17, 0x08, 0x00, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x14, 0x22, 0x00, 0x17, 0x22, 0x00, 0x38, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DBB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x28, 0x00, 0x22, 0x6C, 0x00, 0x22, 0x46, 0x00, 0x22, 0xC3, 0x00, 0x3F, 0xBD, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2E, 0x7E, 0x00, 0x28, 0x02, 0x00, 0x28, 0x06, 0x00, 0x28, 0x0C, 0x00, 0x2E, 0x08, 0x00, 0x38, 0x18, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF7, 0x80, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x32, 0x00, 0x08, 0xE7, 0x80, 0x28, 0x22, 0x00, 0x2E, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x62, 0x00, 0x2E, 0x42, 0x00, 0x38, 0xC2, 0x00, 0x61, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DBE, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x15, 0x24, 0x00, 0x04, 0x27, 0x80, 0x04, 0x24, 0x00, 0x17, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x17, 0x24, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DBF, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x42, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x48, 0x00, 0x2A, 0x5E, 0x00, 0x08, 0x42, 0x00, 0x28, 0x62, 0x00, 0x2E, 0x54, 0x00, 0x28, 0x94, 0x00, 0x28, 0x88, 0x00, 0x2E, 0x94, 0x00, 0x79, 0x14, 0x00, 0x22, 0x23, 0x00, 0x04, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2E, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2E, 0xC1, 0x00, 0x38, 0x81, 0x00, 0x61, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC2, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x21, 0x00, 0x24, 0x23, 0x00, 0x27, 0x36, 0x00, 0x24, 0x1C, 0x00, 0x24, 0x08, 0x00, 0x24, 0x1C, 0x00, 0x27, 0x36, 0x00, 0x3C, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DC3, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x0E, 0x00, 0x23, 0xF0, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x2E, 0x20, 0x00, 0x28, 0x50, 0x00, 0x28, 0x50, 0x00, 0x28, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x79, 0x04, 0x00, 0x22, 0x07, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC4, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x22, 0x50, 0x00, 0x22, 0x50, 0x00, 0x22, 0x48, 0x00, 0x3E, 0x84, 0x00, 0x2B, 0x0B, 0x00, 0x08, 0xFC, 0x00, 0x28, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0xA8, 0x00, 0x2E, 0x90, 0x00, 0x78, 0x82, 0x00, 0x20, 0x82, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC5, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x22, 0x78, 0x00, 0x22, 0x40, 0x00, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x28, 0x5C, 0x00, 0x2E, 0x47, 0x00, 0x28, 0x45, 0x80, 0x28, 0x44, 0x00, 0x28, 0xC4, 0x00, 0x2E, 0x84, 0x00, 0x39, 0x84, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x20, 0x00, 0x22, 0x22, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x8F, 0x00, 0x29, 0xF0, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2F, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2F, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x28, 0x92, 0x00, 0x2E, 0x92, 0x00, 0x28, 0x9E, 0x00, 0x28, 0x80, 0x00, 0x28, 0x80, 0x00, 0x2E, 0x80, 0x00, 0x38, 0xFF, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DC8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x22, 0x14, 0x00, 0x22, 0x36, 0x00, 0x22, 0x63, 0x00, 0x22, 0xC9, 0x80, 0x3E, 0x18, 0x00, 0x08, 0x32, 0x00, 0x28, 0x66, 0x00, 0x2E, 0x0C, 0x00, 0x28, 0x18, 0x80, 0x28, 0x71, 0x80, 0x28, 0x03, 0x00, 0x2E, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DCA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x54, 0x00, 0x2E, 0x54, 0x00, 0x28, 0x54, 0x00, 0x28, 0xD6, 0x00, 0x28, 0x92, 0x00, 0x2E, 0x93, 0x00, 0x39, 0x91, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DCB, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x1F, 0x10, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x14, 0x1A, 0x00, 0x17, 0xAA, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x24, 0x00, 0x14, 0x44, 0x00, 0x17, 0x4A, 0x00, 0x38, 0x91, 0x00, 0x01, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DCC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x28, 0x00, 0x22, 0x28, 0x00, 0x22, 0x48, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x88, 0x00, 0x3F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x2E, 0x14, 0x00, 0x28, 0x14, 0x00, 0x28, 0x12, 0x00, 0x2F, 0x22, 0x00, 0x38, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DCE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0x80, 0x80, 0x3E, 0x20, 0x00, 0x08, 0x23, 0x00, 0x28, 0x2E, 0x00, 0x2E, 0x38, 0x00, 0x28, 0x20, 0x00, 0x28, 0x20, 0x00, 0x28, 0x20, 0x00, 0x2E, 0x20, 0x80, 0x38, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DCF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x40, 0x00, 0x11, 0xF7, 0x80, 0x11, 0x54, 0x80, 0x11, 0x54, 0x80, 0x1F, 0x54, 0x80, 0x04, 0x54, 0x80, 0x04, 0x54, 0x80, 0x14, 0x54, 0x80, 0x17, 0x54, 0x80, 0x14, 0x54, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x14, 0x94, 0x80, 0x3F, 0x37, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DD1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0xF9, 0x00, 0x3E, 0xC9, 0x00, 0x09, 0xC9, 0x00, 0x28, 0x49, 0x00, 0x2E, 0x79, 0x00, 0x28, 0x47, 0x00, 0x28, 0x40, 0x00, 0x28, 0x40, 0x00, 0x2E, 0x40, 0x80, 0x38, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DD4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x23, 0x80, 0x80, 0x3E, 0x7C, 0x80, 0x08, 0x44, 0x80, 0x28, 0x44, 0x80, 0x2E, 0x44, 0x80, 0x28, 0x44, 0x80, 0x28, 0x7C, 0x80, 0x28, 0x00, 0x80, 0x2E, 0x00, 0x80, 0x38, 0x01, 0x80, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DD5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x1F, 0x80, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2E, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0x81, 0x00, 0x28, 0x81, 0x00, 0x2E, 0x81, 0x00, 0x38, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x30, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x28, 0x61, 0x00, 0x2E, 0x61, 0x00, 0x28, 0xA1, 0x00, 0x28, 0x21, 0x00, 0x28, 0x21, 0x00, 0x2E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DD7, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0xC2, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x82, 0x00, 0x3D, 0x82, 0x00, 0x0A, 0x92, 0x00, 0x28, 0x9A, 0x00, 0x2C, 0x8A, 0x00, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x28, 0x82, 0x00, 0x2C, 0x82, 0x00, 0x38, 0x82, 0x00, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x28, 0x42, 0x00, 0x2E, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x2E, 0x42, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x22, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x55, 0x00, 0x2E, 0x55, 0x00, 0x28, 0x55, 0x00, 0x28, 0x55, 0x00, 0x28, 0x55, 0x00, 0x2E, 0x55, 0x00, 0x38, 0x55, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DDB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x49, 0x00, 0x3E, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x2F, 0x62, 0x00, 0x28, 0x52, 0x00, 0x28, 0x54, 0x00, 0x28, 0x88, 0x00, 0x2F, 0x8C, 0x00, 0x38, 0x92, 0x00, 0x01, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x1F, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x14, 0x21, 0x00, 0x17, 0xA1, 0x00, 0x14, 0x3F, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x17, 0xA0, 0x00, 0x38, 0x3F, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DDE, { 0x00, 0x00, 0x00, 0x02, 0x0E, 0x00, 0x3F, 0xF0, 0x00, 0x22, 0x80, 0x00, 0x22, 0x90, 0x00, 0x22, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x2A, 0x92, 0x00, 0x08, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x10, 0x00, 0x28, 0x54, 0x00, 0x28, 0x93, 0x00, 0x2F, 0x11, 0x00, 0x78, 0x10, 0x00, 0x20, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x48, 0x80, 0x2E, 0x49, 0x80, 0x28, 0x4B, 0x00, 0x28, 0x4C, 0x00, 0x28, 0x44, 0x00, 0x2E, 0x46, 0x00, 0x38, 0x7B, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DE1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x2E, 0x55, 0x00, 0x28, 0x94, 0x80, 0x28, 0xA4, 0x80, 0x28, 0x24, 0x00, 0x2E, 0x44, 0x00, 0x30, 0x84, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DE3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x28, 0x00, 0x11, 0x28, 0x00, 0x11, 0x48, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x88, 0x00, 0x05, 0x08, 0x00, 0x04, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x17, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x14, 0x44, 0x00, 0x1F, 0x44, 0x80, 0x30, 0x84, 0x80, 0x01, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DE4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x08, 0x22, 0x00, 0x28, 0x22, 0x00, 0x2E, 0x36, 0x00, 0x28, 0x1C, 0x00, 0x28, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x2E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x12, 0x00, 0x22, 0x13, 0x80, 0x22, 0x30, 0x80, 0x22, 0x20, 0x80, 0x3E, 0x61, 0x80, 0x08, 0xCB, 0x00, 0x28, 0x08, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x2E, 0xC9, 0x80, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DE7, { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x18, 0x00, 0x22, 0x2C, 0x00, 0x22, 0x66, 0x00, 0x22, 0xC3, 0x00, 0x23, 0x81, 0x80, 0x3E, 0x7E, 0x00, 0x08, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x10, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DE8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x80, 0x11, 0x12, 0x00, 0x1F, 0x21, 0x00, 0x04, 0x5E, 0x80, 0x04, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x17, 0x88, 0x00, 0x14, 0x10, 0x00, 0x14, 0x3F, 0x00, 0x14, 0x01, 0x00, 0x17, 0x81, 0x00, 0x38, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DEA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0xC4, 0x00, 0x22, 0x88, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xBE, 0x00, 0x28, 0xA2, 0x00, 0x2E, 0xA2, 0x00, 0x28, 0xA2, 0x00, 0x28, 0xA6, 0x00, 0x28, 0xA0, 0x00, 0x2E, 0xA0, 0x80, 0x39, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x08, 0x52, 0x00, 0x08, 0x5A, 0x00, 0x0E, 0x4A, 0x80, 0x78, 0x81, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x40, 0x00, 0x0C, 0x7E, 0x00, 0x1A, 0x40, 0x00, 0x71, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8DEC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x08, 0x00, 0x2E, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x2E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DEF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x62, 0x00, 0x22, 0x94, 0x00, 0x3F, 0x08, 0x00, 0x08, 0x16, 0x00, 0x08, 0x21, 0x80, 0x2F, 0x40, 0x00, 0x28, 0xFF, 0x00, 0x29, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2F, 0x41, 0x00, 0x38, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF0, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x63, 0x00, 0x22, 0x22, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x28, 0xFF, 0x80, 0x2E, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x62, 0x00, 0x2E, 0x42, 0x00, 0x38, 0xC2, 0x00, 0x61, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x28, 0x02, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x28, 0x42, 0x00, 0x28, 0x62, 0x00, 0x2E, 0x22, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x2C, 0x00, 0x22, 0x64, 0x00, 0x22, 0x46, 0x00, 0x22, 0xC3, 0x00, 0x3F, 0xBD, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2E, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x2E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF3, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x22, 0x28, 0x00, 0x23, 0x29, 0x00, 0x22, 0xAA, 0x00, 0x3E, 0x6C, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x28, 0x2C, 0x00, 0x2F, 0x6A, 0x00, 0x28, 0xA9, 0x00, 0x29, 0x28, 0x00, 0x28, 0x28, 0x80, 0x2E, 0x48, 0x80, 0x38, 0x8F, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x14, 0x00, 0x22, 0x14, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x28, 0x94, 0x80, 0x2E, 0xA4, 0x80, 0x28, 0xC3, 0x80, 0x28, 0x80, 0x80, 0x28, 0x80, 0x80, 0x2E, 0x80, 0x80, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF5, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x12, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x2E, 0x19, 0x00, 0x28, 0x0B, 0x00, 0x28, 0x0E, 0x00, 0x28, 0x04, 0x00, 0x2E, 0x0E, 0x80, 0x38, 0x3B, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF7, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x24, 0x00, 0x22, 0x3E, 0x00, 0x23, 0xE0, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x11, 0x00, 0x2A, 0x69, 0x00, 0x09, 0x87, 0x00, 0x28, 0x04, 0x00, 0x2E, 0xFE, 0x00, 0x28, 0x50, 0x00, 0x28, 0x50, 0x00, 0x2E, 0x50, 0x00, 0x78, 0x91, 0x00, 0x21, 0x11, 0x00, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x88, 0x00, 0x22, 0x89, 0x00, 0x22, 0xEA, 0x00, 0x22, 0x8C, 0x00, 0x3E, 0x89, 0x00, 0x2A, 0xA9, 0x00, 0x08, 0xC7, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x12, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x10, 0x00, 0x78, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DF9, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0x06, 0x00, 0x22, 0xB8, 0x00, 0x22, 0x88, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x0A, 0x00, 0x2B, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x28, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x79, 0x43, 0x00, 0x22, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DFA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3E, 0xFC, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3D, 0x06, 0x00, 0x08, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x2C, 0x60, 0x00, 0x28, 0x70, 0x00, 0x28, 0xA8, 0x00, 0x2E, 0xA7, 0x00, 0x71, 0x22, 0x00, 0x22, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DFB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x12, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x44, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x08, 0x47, 0x00, 0x29, 0x82, 0x00, 0x2E, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x44, 0x00, 0x2E, 0x44, 0x00, 0x78, 0x44, 0x00, 0x20, 0x84, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x2E, 0xBC, 0x80, 0x28, 0xA4, 0x80, 0x28, 0xA4, 0x80, 0x28, 0xA4, 0x80, 0x2E, 0xBD, 0x80, 0x39, 0x01, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x80, 0x00, 0x3E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x00, 0x00, 0x28, 0x10, 0x00, 0x28, 0x99, 0x00, 0x28, 0xA9, 0x80, 0x2E, 0xA2, 0x80, 0x39, 0xA2, 0x00, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8DFF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x28, 0x08, 0x00, 0x2E, 0x48, 0x00, 0x28, 0x4F, 0x00, 0x28, 0x48, 0x00, 0x28, 0x48, 0x00, 0x2E, 0xE8, 0x00, 0x38, 0xB8, 0x00, 0x61, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x49, 0x00, 0x28, 0x49, 0x00, 0x2E, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E04, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x50, 0x00, 0x22, 0x5F, 0x00, 0x22, 0x50, 0x00, 0x22, 0x50, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0x50, 0x00, 0x28, 0xD1, 0x00, 0x2E, 0x93, 0x00, 0x28, 0x12, 0x00, 0x28, 0x36, 0x00, 0x28, 0x0C, 0x00, 0x2E, 0x18, 0x00, 0x38, 0x70, 0x00, 0x61, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E05, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x0E, 0x44, 0x00, 0x78, 0xC4, 0x00, 0x09, 0x84, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x07, 0x7E, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E06, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x62, 0x00, 0x22, 0x42, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x25, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x47, 0x80, 0x08, 0xA0, 0x00, 0x28, 0x3E, 0x00, 0x2E, 0x62, 0x00, 0x28, 0xC6, 0x00, 0x28, 0x2C, 0x00, 0x28, 0x18, 0x00, 0x2E, 0x3C, 0x00, 0x38, 0x66, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E08, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x2E, 0x49, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E09, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x28, 0xFE, 0x80, 0x2E, 0x89, 0x80, 0x28, 0x8B, 0x00, 0x28, 0x8C, 0x00, 0x28, 0x84, 0x00, 0x2E, 0x86, 0x00, 0x38, 0xF3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x02, 0x00, 0x22, 0x14, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x28, 0x88, 0x80, 0x2E, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x2E, 0x88, 0x80, 0x30, 0x88, 0x80, 0x00, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E0B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x47, 0x80, 0x24, 0x44, 0x80, 0x25, 0xF4, 0x80, 0x24, 0x44, 0x80, 0x24, 0x44, 0x80, 0x3C, 0x44, 0x80, 0x0B, 0xFC, 0x80, 0x28, 0x84, 0x80, 0x2C, 0x84, 0x80, 0x29, 0x94, 0x80, 0x29, 0x14, 0x80, 0x29, 0x74, 0x80, 0x2F, 0xD5, 0x80, 0x38, 0x04, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E0C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x24, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x23, 0xFC, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x2F, 0xFF, 0x00, 0x28, 0x84, 0x00, 0x28, 0xA4, 0x00, 0x2D, 0x14, 0x00, 0x72, 0x04, 0x00, 0x24, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E0F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xE9, 0x00, 0x22, 0x2E, 0x00, 0x22, 0x4C, 0x00, 0x3E, 0x4A, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x09, 0x00, 0x08, 0x18, 0x80, 0x2F, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x2F, 0x41, 0x00, 0x38, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x34, 0x00, 0x22, 0x20, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3D, 0x00, 0x2A, 0x09, 0x00, 0x08, 0x67, 0x00, 0x0A, 0xB0, 0x00, 0x2C, 0x2D, 0x00, 0x29, 0xFA, 0x00, 0x28, 0x14, 0x00, 0x28, 0x09, 0x00, 0x2F, 0x39, 0x00, 0x30, 0xC7, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E11, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x28, 0x3E, 0x00, 0x2E, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x2E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E14, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x1F, 0x00, 0x22, 0x10, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x2E, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x2E, 0x10, 0x00, 0x38, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E16, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2E, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x2E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x2E, 0x49, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x7F, 0x80, 0x14, 0x44, 0x00, 0x17, 0xC4, 0x00, 0x14, 0x5F, 0x00, 0x14, 0x51, 0x00, 0x14, 0x51, 0x00, 0x17, 0x51, 0x00, 0x38, 0x9F, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E1F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3C, 0x80, 0x00, 0x24, 0x80, 0x00, 0x25, 0xF7, 0x80, 0x25, 0x44, 0x80, 0x24, 0x44, 0x80, 0x3C, 0x44, 0x80, 0x09, 0xF4, 0x80, 0x28, 0x44, 0x80, 0x2E, 0x44, 0x80, 0x28, 0x44, 0x80, 0x28, 0xE4, 0x80, 0x28, 0xA4, 0x80, 0x2E, 0xB7, 0x80, 0x39, 0x98, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E20, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x01, 0x00, 0x24, 0x80, 0x00, 0x3C, 0xEF, 0x00, 0x08, 0xA9, 0x00, 0x29, 0xA9, 0x00, 0x2D, 0x29, 0x00, 0x2A, 0xE9, 0x00, 0x28, 0x4B, 0x00, 0x28, 0xC8, 0x00, 0x2C, 0x88, 0x80, 0x39, 0x89, 0x80, 0x63, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E21, { 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x3E, 0xD3, 0x00, 0x22, 0x91, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x28, 0x00, 0x22, 0x28, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x28, 0x42, 0x00, 0x2E, 0xFF, 0x00, 0x29, 0xC5, 0x80, 0x28, 0x44, 0x00, 0x28, 0x4C, 0x00, 0x2E, 0x41, 0x00, 0x38, 0x43, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x2E, 0x7F, 0x80, 0x28, 0xCA, 0x80, 0x29, 0x92, 0x80, 0x28, 0x24, 0x80, 0x2E, 0xC9, 0x80, 0x38, 0x11, 0x00, 0x60, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E23, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x42, 0x00, 0x22, 0x66, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x42, 0x00, 0x28, 0x42, 0x00, 0x2E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E26, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x14, 0x00, 0x22, 0x36, 0x00, 0x22, 0x63, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x01, 0x00, 0x2E, 0x3D, 0x00, 0x28, 0x25, 0x00, 0x28, 0x25, 0x00, 0x28, 0x3D, 0x00, 0x2E, 0x01, 0x00, 0x38, 0x01, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E27, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3C, 0x9F, 0x00, 0x24, 0x89, 0x00, 0x24, 0xE9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8B, 0x00, 0x3C, 0x8A, 0x00, 0x0B, 0xEA, 0x00, 0x28, 0x8E, 0x00, 0x2C, 0x84, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xAE, 0x00, 0x2A, 0xAA, 0x00, 0x2E, 0xAB, 0x00, 0x38, 0x89, 0x00, 0x61, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E29, { 0x00, 0x00, 0x00, 0x02, 0x0E, 0x00, 0x3F, 0xF0, 0x00, 0x22, 0x22, 0x00, 0x22, 0x93, 0x00, 0x22, 0x54, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x2E, 0x10, 0x00, 0x28, 0x30, 0x00, 0x28, 0x38, 0x00, 0x28, 0x54, 0x00, 0x2E, 0x93, 0x00, 0x71, 0x12, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E2A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x4A, 0x00, 0x2E, 0x89, 0x00, 0x31, 0x08, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E2C, { 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x3F, 0xF8, 0x00, 0x22, 0x88, 0x00, 0x22, 0x8A, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x88, 0x00, 0x2A, 0xBE, 0x00, 0x08, 0xA2, 0x00, 0x28, 0xAA, 0x00, 0x2E, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x28, 0xAA, 0x00, 0x2F, 0x10, 0x00, 0x79, 0x14, 0x00, 0x22, 0x23, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E2E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x08, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x90, 0x00, 0x22, 0x92, 0x00, 0x3E, 0x9F, 0x00, 0x2A, 0x90, 0x00, 0x08, 0x90, 0x00, 0x28, 0x92, 0x00, 0x2E, 0xFF, 0x00, 0x29, 0x42, 0x00, 0x29, 0x42, 0x00, 0x2E, 0x42, 0x00, 0x7A, 0x42, 0x00, 0x24, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E2F, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3D, 0x2F, 0x00, 0x25, 0x49, 0x00, 0x24, 0x0A, 0x00, 0x27, 0xEA, 0x00, 0x3C, 0x8C, 0x00, 0x28, 0x8A, 0x00, 0x08, 0xAA, 0x00, 0x2F, 0xF9, 0x00, 0x2C, 0x89, 0x00, 0x28, 0x8D, 0x00, 0x28, 0x8A, 0x00, 0x2D, 0x48, 0x00, 0x79, 0x28, 0x00, 0x22, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x22, 0x14, 0x00, 0x22, 0x62, 0x00, 0x23, 0x81, 0x80, 0x3E, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF2, 0x80, 0x2E, 0x92, 0x80, 0x28, 0xF5, 0x00, 0x28, 0x9A, 0x00, 0x28, 0xF9, 0x00, 0x2E, 0x95, 0x00, 0x30, 0x94, 0x80, 0x00, 0xB2, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E31, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x00, 0x22, 0x92, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x92, 0x00, 0x08, 0x9E, 0x00, 0x28, 0x80, 0x00, 0x2E, 0xFF, 0x00, 0x28, 0xA1, 0x00, 0x28, 0xB3, 0x00, 0x28, 0x96, 0x00, 0x2E, 0x9C, 0x00, 0x39, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E33, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x28, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x28, 0x42, 0x00, 0x2E, 0xFF, 0x00, 0x29, 0x42, 0x80, 0x28, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x2E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x60, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x02, 0x00, 0x22, 0x14, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x49, 0x00, 0x28, 0x10, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x10, 0x80, 0x2E, 0x30, 0x80, 0x38, 0x61, 0x80, 0x61, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E35, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3E, 0x78, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x2E, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x2E, 0x08, 0x00, 0x28, 0x48, 0x00, 0x28, 0x4F, 0x00, 0x28, 0x48, 0x00, 0x2E, 0xE8, 0x00, 0x38, 0xB8, 0x00, 0x61, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E37, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x12, 0x00, 0x22, 0x16, 0x00, 0x22, 0x14, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x0C, 0x00, 0x28, 0x12, 0x00, 0x2E, 0x3F, 0x00, 0x28, 0x61, 0x00, 0x29, 0xA1, 0x00, 0x28, 0x3F, 0x00, 0x2E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E38, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x28, 0x22, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x52, 0x00, 0x28, 0x52, 0x00, 0x28, 0x63, 0x80, 0x2E, 0x40, 0x00, 0x38, 0x40, 0x00, 0x60, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E39, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x28, 0x20, 0x00, 0x2E, 0xFF, 0x00, 0x28, 0xA9, 0x00, 0x28, 0xA9, 0x00, 0x28, 0xA9, 0x00, 0x2E, 0xA9, 0x00, 0x38, 0xA9, 0x00, 0x60, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E3A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x27, 0xBE, 0x00, 0x24, 0x8A, 0x00, 0x24, 0xFF, 0x00, 0x3D, 0x0A, 0x00, 0x2B, 0xBE, 0x00, 0x08, 0x88, 0x00, 0x28, 0xBE, 0x00, 0x2E, 0x88, 0x00, 0x2A, 0xFF, 0x00, 0x29, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x79, 0x4B, 0x00, 0x22, 0x3E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E3D, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x1E, 0x00, 0x22, 0xF0, 0x00, 0x22, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2F, 0xFF, 0x80, 0x29, 0x10, 0x80, 0x29, 0x14, 0x80, 0x29, 0x1E, 0x80, 0x2F, 0x72, 0x80, 0x39, 0x00, 0x80, 0x61, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E40, { 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x22, 0x4E, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x2E, 0x49, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E41, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3E, 0xF8, 0x00, 0x22, 0x80, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x28, 0xFF, 0x80, 0x2E, 0xD4, 0x80, 0x28, 0xD4, 0x80, 0x29, 0x7F, 0x80, 0x29, 0x54, 0x80, 0x2E, 0x54, 0x80, 0x38, 0x54, 0x80, 0x60, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x12, 0x00, 0x22, 0x0C, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x19, 0x00, 0x2A, 0x6A, 0x00, 0x09, 0x88, 0x00, 0x08, 0x38, 0x00, 0x2E, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x1C, 0x00, 0x2E, 0x2A, 0x00, 0x30, 0x49, 0x00, 0x01, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E44, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x3E, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x2F, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x49, 0x00, 0x28, 0x49, 0x00, 0x2F, 0x49, 0x00, 0x30, 0x4B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E47, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0C, 0x06, 0x00, 0x37, 0xFD, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x14, 0x40, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x22, 0x71, 0x00, 0x22, 0x48, 0x80, 0x22, 0x84, 0x00, 0x3F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x33, 0x80, 0x28, 0xC0, 0x80, 0x2F, 0x80, 0x80, 0x28, 0x80, 0x80, 0x28, 0xF3, 0x80, 0x28, 0x80, 0x80, 0x2F, 0x80, 0x80, 0x38, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E49, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x14, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x2E, 0x20, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x48, 0x00, 0x28, 0x48, 0x00, 0x2F, 0x88, 0x00, 0x39, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x22, 0xF0, 0x00, 0x22, 0x24, 0x00, 0x22, 0xC4, 0x00, 0x3E, 0x48, 0x00, 0x2A, 0x32, 0x00, 0x08, 0x2F, 0x00, 0x2E, 0xF0, 0x80, 0x28, 0x08, 0x00, 0x28, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x2E, 0x22, 0x00, 0x30, 0x41, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x28, 0x31, 0x80, 0x2E, 0x52, 0x80, 0x28, 0x94, 0x80, 0x28, 0x31, 0x80, 0x28, 0x52, 0x80, 0x2E, 0x94, 0x80, 0x38, 0x10, 0x80, 0x60, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E4C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x6C, 0x00, 0x22, 0xC6, 0x00, 0x23, 0xBB, 0x80, 0x22, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x2E, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x28, 0x40, 0x00, 0x28, 0xFF, 0x00, 0x2E, 0xA1, 0x00, 0x39, 0xA1, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x94, 0x00, 0x3E, 0x94, 0x00, 0x08, 0xFF, 0x00, 0x28, 0x94, 0x00, 0x2E, 0x94, 0x00, 0x28, 0xFF, 0x80, 0x28, 0xA9, 0x00, 0x28, 0xAA, 0x00, 0x2E, 0xAC, 0x00, 0x39, 0x36, 0x00, 0x60, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E4E, { 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x3E, 0x7C, 0x00, 0x22, 0x41, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x00, 0x00, 0x22, 0xBF, 0x00, 0x3E, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x2E, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x28, 0xBF, 0x00, 0x28, 0x80, 0x00, 0x2E, 0xFF, 0x80, 0x38, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E4F, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3C, 0x3E, 0x00, 0x25, 0xE8, 0x00, 0x25, 0x0F, 0x00, 0x25, 0x08, 0x00, 0x25, 0x7F, 0x80, 0x3D, 0x48, 0x80, 0x09, 0x4E, 0x00, 0x29, 0x58, 0x80, 0x2D, 0x4F, 0x80, 0x29, 0x40, 0x00, 0x29, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x2D, 0x4A, 0x80, 0x3A, 0x9A, 0x80, 0x60, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E50, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xEB, 0x80, 0x22, 0x08, 0x00, 0x22, 0xDD, 0x80, 0x22, 0x14, 0x00, 0x3E, 0x36, 0x00, 0x08, 0x22, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0xA2, 0x80, 0x28, 0x3E, 0x00, 0x28, 0x22, 0x00, 0x28, 0x3E, 0x00, 0x2E, 0x22, 0x00, 0x38, 0x22, 0x00, 0x60, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E51, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x3C, 0xFC, 0x00, 0x28, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x28, 0x04, 0x00, 0x2F, 0xDF, 0x00, 0x2A, 0x51, 0x00, 0x29, 0x4A, 0x00, 0x2C, 0x84, 0x00, 0x79, 0x4A, 0x00, 0x22, 0x12, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E52, { 0x00, 0x00, 0x00, 0x04, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x48, 0x00, 0x24, 0x4A, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x48, 0x00, 0x09, 0xFE, 0x00, 0x29, 0x4A, 0x00, 0x2F, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x29, 0xB6, 0x00, 0x2F, 0x96, 0x00, 0x79, 0x22, 0x00, 0x21, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E54, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x7F, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x22, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x07, 0x7E, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x91, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x52, 0x00, 0x29, 0xFF, 0x80, 0x2E, 0x52, 0x00, 0x28, 0x52, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2E, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E59, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x21, 0x00, 0x13, 0xD1, 0x00, 0x12, 0x0A, 0x00, 0x1F, 0xE4, 0x80, 0x2A, 0x8A, 0x80, 0x32, 0x51, 0x80, 0x26, 0x60, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x80, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E5B, { 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x3C, 0xAA, 0x00, 0x25, 0xFF, 0x80, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x25, 0x3B, 0x80, 0x3C, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x29, 0x10, 0x80, 0x2D, 0x10, 0x80, 0x28, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x28, 0x91, 0x00, 0x2C, 0x91, 0x00, 0x38, 0x93, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E5C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x01, 0x00, 0x25, 0x41, 0x00, 0x24, 0x7F, 0x80, 0x3C, 0x44, 0x00, 0x08, 0xC8, 0x00, 0x28, 0x9F, 0x00, 0x2D, 0x91, 0x00, 0x28, 0x91, 0x00, 0x28, 0x9F, 0x00, 0x28, 0x91, 0x00, 0x2C, 0x91, 0x00, 0x38, 0x91, 0x00, 0x60, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E5D, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0xA7, 0x00, 0x25, 0x24, 0x00, 0x27, 0x24, 0x00, 0x24, 0xA4, 0x00, 0x3C, 0xFF, 0x80, 0x09, 0x84, 0x00, 0x29, 0x04, 0x00, 0x2F, 0x24, 0x00, 0x29, 0x27, 0x00, 0x29, 0x24, 0x00, 0x29, 0x24, 0x00, 0x2D, 0x34, 0x00, 0x39, 0x2C, 0x00, 0x61, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3F, 0x80, 0x24, 0x04, 0x00, 0x25, 0x08, 0x00, 0x25, 0x1F, 0x00, 0x25, 0x51, 0x00, 0x3D, 0x91, 0x00, 0x09, 0x1F, 0x00, 0x29, 0x11, 0x00, 0x2D, 0x11, 0x00, 0x29, 0x1F, 0x00, 0x29, 0x51, 0x00, 0x29, 0x91, 0x00, 0x2C, 0x1F, 0x00, 0x38, 0x0A, 0x00, 0x60, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E5F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2F, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x2F, 0x7F, 0x00, 0x30, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E60, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0xFF, 0x80, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x2E, 0x92, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x80, 0x00, 0x28, 0x80, 0x00, 0x2F, 0xAA, 0x80, 0x38, 0xAA, 0x80, 0x01, 0x2A, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E61, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x3D, 0x4F, 0x00, 0x25, 0x59, 0x00, 0x25, 0x75, 0x00, 0x25, 0x4B, 0x00, 0x25, 0xC6, 0x00, 0x3C, 0x4C, 0x00, 0x08, 0x59, 0x00, 0x28, 0x41, 0x00, 0x2D, 0xDF, 0x80, 0x29, 0x41, 0x00, 0x29, 0x49, 0x00, 0x29, 0x4D, 0x00, 0x2D, 0x45, 0x00, 0x3A, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E62, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x41, 0x00, 0x22, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x08, 0x88, 0x80, 0x28, 0xBE, 0x80, 0x2E, 0x88, 0x80, 0x28, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x28, 0xA2, 0x80, 0x2E, 0xBE, 0x80, 0x38, 0x80, 0x80, 0x60, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E63, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x3E, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x2E, 0xEE, 0x80, 0x28, 0xAA, 0x80, 0x28, 0xAA, 0x80, 0x28, 0xDD, 0x80, 0x2E, 0x88, 0x80, 0x38, 0x88, 0x80, 0x60, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E64, { 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x3C, 0x51, 0x00, 0x24, 0xD1, 0x00, 0x24, 0xBB, 0x80, 0x25, 0xAA, 0x80, 0x24, 0x44, 0x00, 0x3C, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x28, 0x94, 0x00, 0x2D, 0x97, 0x00, 0x28, 0x94, 0x00, 0x28, 0x94, 0x00, 0x28, 0x94, 0x00, 0x2C, 0x94, 0x00, 0x38, 0xAC, 0x00, 0x60, 0xA7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E66, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3D, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x3D, 0xDF, 0x00, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0xDE, 0x00, 0x2D, 0x52, 0x00, 0x29, 0x52, 0x00, 0x29, 0xDE, 0x00, 0x2D, 0x52, 0x00, 0x71, 0x52, 0x00, 0x22, 0x52, 0x00, 0x04, 0xE6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E69, { 0x00, 0x00, 0x00, 0x15, 0x10, 0x00, 0x35, 0x90, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0xA2, 0x00, 0x24, 0xF6, 0x00, 0x2E, 0x9C, 0x00, 0x35, 0x88, 0x00, 0x24, 0x9E, 0x00, 0x25, 0xB3, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x07, 0x7E, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E6C, { 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x3E, 0x8A, 0x80, 0x22, 0x5D, 0x00, 0x22, 0x36, 0x00, 0x22, 0x63, 0x00, 0x22, 0xC1, 0x80, 0x3E, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x22, 0x00, 0x2E, 0x36, 0x00, 0x38, 0x14, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E6D, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3E, 0x63, 0x00, 0x22, 0xC1, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x22, 0xC9, 0x80, 0x3E, 0xAA, 0x80, 0x08, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x2E, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E6F, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3E, 0x78, 0x00, 0x22, 0x91, 0x00, 0x22, 0x52, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x54, 0x00, 0x3E, 0x56, 0x00, 0x08, 0xD3, 0x00, 0x29, 0x91, 0x80, 0x2E, 0x00, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x2E, 0x91, 0x00, 0x38, 0x91, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x80, 0x4A, 0x00, 0x00, 0x4A, 0x01, 0x00, 0x4B, 0xF9, 0x00, 0x4A, 0x01, 0x00, 0x7A, 0xF7, 0x80, 0x12, 0x91, 0x00, 0x52, 0x95, 0x00, 0x5A, 0x95, 0x00, 0x52, 0xF5, 0x00, 0x52, 0x01, 0x00, 0x52, 0x91, 0x00, 0x5A, 0xD1, 0x00, 0x74, 0x79, 0x00, 0x41, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E71, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x2E, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x2E, 0x7F, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E72, { 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x3E, 0x41, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x14, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x55, 0x00, 0x3E, 0x67, 0x00, 0x08, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x02, 0x00, 0x28, 0xFF, 0x80, 0x2E, 0x22, 0x00, 0x38, 0x12, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E74, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x45, 0x00, 0x22, 0x44, 0x80, 0x23, 0xF4, 0x00, 0x22, 0x1F, 0x80, 0x3E, 0xE4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA6, 0x00, 0x2E, 0xA6, 0x00, 0x28, 0xE6, 0x00, 0x28, 0x4A, 0x00, 0x28, 0xEA, 0x00, 0x29, 0x5A, 0x80, 0x2E, 0x4A, 0x80, 0x30, 0x4B, 0x80, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x02, 0x00, 0x25, 0x8A, 0x00, 0x25, 0x54, 0x00, 0x3D, 0xFF, 0x80, 0x09, 0x0A, 0x80, 0x09, 0x53, 0x00, 0x29, 0x52, 0x00, 0x2F, 0x52, 0x00, 0x29, 0x52, 0x00, 0x29, 0xF2, 0x00, 0x29, 0x55, 0x00, 0x2F, 0x45, 0x00, 0x3A, 0x85, 0x00, 0x02, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E79, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x22, 0x00, 0x22, 0xDD, 0x80, 0x22, 0x00, 0x00, 0x22, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x28, 0x00, 0x00, 0x2E, 0xF7, 0x80, 0x28, 0x52, 0x80, 0x28, 0x94, 0x80, 0x28, 0x31, 0x80, 0x2E, 0x52, 0x80, 0x38, 0x94, 0x80, 0x60, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E7A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x82, 0x00, 0x3D, 0xEF, 0x80, 0x08, 0x82, 0x00, 0x28, 0xE2, 0x00, 0x2D, 0x8F, 0x80, 0x28, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x44, 0x00, 0x2C, 0x44, 0x80, 0x38, 0xC4, 0x80, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E7B, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3E, 0x7C, 0x00, 0x22, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x24, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0xA5, 0x80, 0x08, 0x3C, 0x00, 0x28, 0x00, 0x00, 0x2E, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x28, 0xBD, 0x00, 0x28, 0xA5, 0x00, 0x2E, 0xBD, 0x00, 0x38, 0x81, 0x00, 0x60, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E7C, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x94, 0x80, 0x22, 0x55, 0x00, 0x22, 0x14, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x41, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x2E, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x2E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E7F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x45, 0x00, 0x26, 0x92, 0x00, 0x3C, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x2E, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x2F, 0xFF, 0x00, 0x71, 0x11, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0x04, 0xF7, 0x80, 0x04, 0x94, 0x80, 0x04, 0xF7, 0x80, 0x17, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x1C, 0x00, 0x17, 0x2A, 0x00, 0x38, 0x49, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E82, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3D, 0x04, 0x00, 0x25, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x25, 0x3F, 0x80, 0x25, 0x91, 0x00, 0x3C, 0x8A, 0x00, 0x08, 0x3F, 0x80, 0x29, 0x84, 0x00, 0x2C, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x28, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x2C, 0x84, 0x00, 0x39, 0xC0, 0x00, 0x63, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E83, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3C, 0xE2, 0x00, 0x24, 0xAF, 0x80, 0x24, 0xA0, 0x00, 0x24, 0xA8, 0x80, 0x24, 0xAD, 0x80, 0x3C, 0xE5, 0x00, 0x08, 0x8F, 0x80, 0x28, 0x82, 0x00, 0x2C, 0xE2, 0x00, 0x29, 0xAF, 0x80, 0x29, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x2C, 0xA2, 0x00, 0x38, 0xE2, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E84, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xBF, 0x80, 0x10, 0x91, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x28, 0x9F, 0x00, 0x6F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x07, 0x7E, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0xA9, 0x00, 0x22, 0xA9, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0xD0, 0x80, 0x28, 0x7C, 0x80, 0x2E, 0x54, 0x80, 0x28, 0x54, 0x80, 0x28, 0x7C, 0x80, 0x28, 0x14, 0x80, 0x2E, 0x3D, 0x80, 0x38, 0xE5, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E87, { 0x00, 0x00, 0x00, 0x3E, 0x42, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x42, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x11, 0x00, 0x2A, 0xFE, 0x00, 0x08, 0x14, 0x00, 0x0B, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x2E, 0x22, 0x00, 0x28, 0xFF, 0x00, 0x2B, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E89, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x91, 0x00, 0x2F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x2F, 0xFD, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x07, 0x7E, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E8A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x3F, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x00, 0x80, 0x2A, 0x3E, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x72, 0x00, 0x2E, 0x52, 0x00, 0x30, 0x72, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E8B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x14, 0x00, 0x23, 0xE9, 0x80, 0x22, 0xAB, 0x00, 0x3E, 0xAA, 0x80, 0x09, 0x2A, 0x80, 0x28, 0x00, 0x00, 0x2E, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x38, 0xC1, 0x00, 0x61, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x35, 0x00, 0x08, 0x48, 0x00, 0x08, 0xFF, 0x00, 0x2F, 0x88, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x2E, 0x88, 0x00, 0x30, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E8F, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x00, 0x48, 0x88, 0x00, 0x4A, 0x02, 0x00, 0x49, 0x7F, 0x00, 0x7A, 0xA2, 0x00, 0x52, 0xFA, 0x00, 0x12, 0xA2, 0x00, 0x52, 0xFA, 0x00, 0x5E, 0xA2, 0x00, 0x52, 0xFA, 0x00, 0x52, 0xA2, 0x00, 0x5E, 0xFE, 0x00, 0x72, 0x82, 0x00, 0x42, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E90, { 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x49, 0x00, 0x22, 0xFE, 0x00, 0x22, 0xAA, 0x00, 0x22, 0x92, 0x00, 0x3E, 0xAA, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x2E, 0xDA, 0x00, 0x28, 0xB6, 0x00, 0x28, 0xDA, 0x00, 0x28, 0xB6, 0x00, 0x2E, 0x92, 0x00, 0x38, 0xDA, 0x80, 0x61, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E91, { 0x00, 0x00, 0x00, 0x01, 0x70, 0x00, 0x7A, 0x0B, 0x80, 0x4F, 0xFE, 0x80, 0x48, 0xA2, 0x80, 0x4B, 0xFA, 0x80, 0x4A, 0xAA, 0x80, 0x7B, 0x3B, 0x00, 0x12, 0x0B, 0x00, 0x53, 0xFA, 0x80, 0x5A, 0x0A, 0x80, 0x53, 0xFA, 0x80, 0x50, 0x42, 0x80, 0x57, 0xFE, 0x80, 0x58, 0xA3, 0x80, 0x71, 0xB2, 0x00, 0x43, 0x1A, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E92, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x7B, 0x23, 0x00, 0x4A, 0x3A, 0x00, 0x4A, 0xAA, 0x80, 0x49, 0x29, 0x00, 0x49, 0x39, 0x00, 0x7A, 0x2A, 0x00, 0x12, 0xAA, 0x80, 0x53, 0xBB, 0x80, 0x58, 0x10, 0x00, 0x53, 0xFF, 0x80, 0x50, 0x54, 0x00, 0x50, 0xD6, 0x00, 0x59, 0x93, 0x00, 0x73, 0x11, 0x80, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E93, { 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x3E, 0xE7, 0x00, 0x22, 0x84, 0x00, 0x22, 0xF7, 0x80, 0x22, 0xA5, 0x00, 0x23, 0x29, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x2E, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x2E, 0x7F, 0x00, 0x38, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E94, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0xFF, 0x80, 0x25, 0x00, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x25, 0x7F, 0x00, 0x3D, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x2D, 0xFF, 0x80, 0x29, 0x24, 0x00, 0x29, 0xC7, 0x80, 0x29, 0x08, 0x00, 0x2D, 0x7F, 0x00, 0x3A, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E95, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x4A, 0x41, 0x00, 0x4B, 0xF9, 0x00, 0x4A, 0x41, 0x00, 0x7A, 0xF7, 0x80, 0x12, 0x01, 0x00, 0x52, 0xF5, 0x00, 0x5A, 0x95, 0x00, 0x52, 0xF5, 0x00, 0x52, 0x01, 0x00, 0x52, 0x91, 0x00, 0x5A, 0xD1, 0x00, 0x74, 0x79, 0x00, 0x41, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xE7, 0x80, 0x25, 0x24, 0x80, 0x25, 0xE7, 0x80, 0x25, 0x24, 0x80, 0x25, 0xE7, 0x80, 0x3D, 0x00, 0x80, 0x09, 0x28, 0x80, 0x29, 0x3E, 0x80, 0x2D, 0x68, 0x80, 0x29, 0x3C, 0x80, 0x29, 0x28, 0x80, 0x29, 0x3C, 0x80, 0x2D, 0x28, 0x80, 0x39, 0x3E, 0x80, 0x61, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xFF, 0x80, 0x4B, 0x14, 0x00, 0x49, 0x7F, 0x00, 0x4A, 0x55, 0x00, 0x4B, 0x5D, 0x00, 0x79, 0x10, 0x00, 0x10, 0xFF, 0x80, 0x53, 0x22, 0x00, 0x59, 0x7F, 0x00, 0x51, 0xE5, 0x80, 0x51, 0x2C, 0x00, 0x51, 0x21, 0x00, 0x59, 0x3F, 0x00, 0x73, 0x80, 0x00, 0x42, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E9B, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x13, 0xF7, 0x80, 0x21, 0x10, 0x00, 0x4B, 0xF8, 0x00, 0x10, 0x87, 0x80, 0x33, 0xF1, 0x00, 0x52, 0x91, 0x00, 0x12, 0xB1, 0x00, 0x10, 0x83, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x07, 0x7E, 0x00, 0x1D, 0xC0, 0x00, 0x70, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8E9C, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x7A, 0x94, 0x00, 0x4B, 0xDE, 0x00, 0x4C, 0xA4, 0x00, 0x4B, 0xDF, 0x00, 0x79, 0x8C, 0x00, 0x52, 0xD5, 0x00, 0x14, 0xA7, 0x00, 0x51, 0xFC, 0x00, 0x5D, 0x06, 0x00, 0x51, 0x24, 0x00, 0x51, 0x24, 0x00, 0x5D, 0x24, 0x00, 0x70, 0x58, 0x00, 0x40, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E9D, { 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x3D, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x11, 0x00, 0x3D, 0x7D, 0x00, 0x09, 0x11, 0x00, 0x29, 0x7D, 0x00, 0x2D, 0x55, 0x00, 0x29, 0x7D, 0x00, 0x29, 0x55, 0x00, 0x29, 0x7D, 0x00, 0x2D, 0x39, 0x00, 0x39, 0x55, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8E9E, { 0x00, 0x00, 0x00, 0x01, 0x32, 0x00, 0x79, 0x02, 0x00, 0x4D, 0x7A, 0x80, 0x4D, 0x02, 0x80, 0x4B, 0xB7, 0x00, 0x49, 0x02, 0x00, 0x79, 0x32, 0x00, 0x13, 0x87, 0x00, 0x52, 0xFD, 0x00, 0x5A, 0x49, 0x00, 0x56, 0x79, 0x80, 0x50, 0x00, 0x00, 0x53, 0xFE, 0x00, 0x58, 0x84, 0x00, 0x70, 0x78, 0x00, 0x47, 0xCF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EA1, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x3C, 0x00, 0x22, 0x24, 0x00, 0x22, 0x3C, 0x00, 0x22, 0x27, 0x00, 0x3E, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x29, 0xFF, 0x80, 0x2E, 0xA5, 0x00, 0x28, 0xE7, 0x00, 0x28, 0xA5, 0x00, 0x28, 0xE7, 0x00, 0x2E, 0xA5, 0x00, 0x39, 0xEF, 0x00, 0x60, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EA2, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x7A, 0x28, 0x80, 0x4B, 0xEF, 0x80, 0x4A, 0x28, 0x80, 0x4B, 0xEF, 0x80, 0x4A, 0x00, 0x80, 0x7A, 0xFE, 0x80, 0x12, 0x82, 0x80, 0x52, 0xBA, 0x80, 0x5A, 0x82, 0x80, 0x52, 0xBA, 0x80, 0x52, 0x00, 0x80, 0x52, 0xEE, 0x80, 0x5A, 0xAA, 0x80, 0x72, 0x66, 0x80, 0x42, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EA7, { 0x00, 0x00, 0x00, 0x01, 0xEF, 0x80, 0x3C, 0x00, 0x00, 0x25, 0xEF, 0x80, 0x25, 0x28, 0x80, 0x25, 0x6A, 0x80, 0x24, 0x10, 0x00, 0x3D, 0xFF, 0x80, 0x09, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x2D, 0x24, 0x80, 0x29, 0xFF, 0x80, 0x29, 0x44, 0x00, 0x29, 0x77, 0x80, 0x2D, 0x44, 0x00, 0x3A, 0x74, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EA9, { 0x00, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x3D, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xFF, 0x80, 0x08, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x2C, 0x88, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x88, 0x00, 0x29, 0xFF, 0x80, 0x2C, 0x42, 0x00, 0x38, 0x3C, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EAA, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x25, 0xE7, 0x80, 0x25, 0x24, 0x80, 0x3D, 0xE7, 0x80, 0x09, 0x24, 0x80, 0x09, 0xE7, 0x80, 0x2F, 0x28, 0x80, 0x29, 0x7E, 0x80, 0x29, 0xD0, 0x80, 0x29, 0x7E, 0x80, 0x29, 0x50, 0x80, 0x2F, 0x7E, 0x80, 0x31, 0x7E, 0x80, 0x01, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EAB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x80, 0x08, 0x7D, 0x00, 0x0F, 0x86, 0x00, 0x38, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x64, 0x00, 0x01, 0x84, 0x00, 0x0E, 0x04, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EAC, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0x9F, 0x00, 0x08, 0x81, 0x00, 0x0F, 0x81, 0x00, 0x08, 0x9F, 0x00, 0x0F, 0x90, 0x00, 0x08, 0xD0, 0x00, 0x0F, 0xA0, 0x00, 0x38, 0xBF, 0x80, 0x01, 0xA0, 0x80, 0x02, 0x80, 0x80, 0x04, 0x80, 0x80, 0x08, 0x80, 0x80, 0x10, 0x81, 0x00, 0x23, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EAD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x1E, 0x91, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x1E, 0x38, 0x00, 0x12, 0x28, 0x00, 0x12, 0x28, 0x00, 0x7E, 0x28, 0x00, 0x0A, 0x68, 0x00, 0x12, 0x48, 0x80, 0x62, 0x49, 0x80, 0x06, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EAE, { 0x00, 0x00, 0x00, 0x04, 0x1C, 0x00, 0x08, 0x04, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x26, 0x00, 0x12, 0x62, 0x00, 0x1E, 0xC3, 0x00, 0x13, 0x81, 0x80, 0x12, 0x7E, 0x00, 0x1E, 0x12, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x7E, 0x32, 0x00, 0x0A, 0x22, 0x00, 0x12, 0x66, 0x00, 0x62, 0xC4, 0x00, 0x06, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EAF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x21, 0x40, 0x00, 0x21, 0x51, 0x00, 0x3F, 0x5B, 0x00, 0x21, 0x4A, 0x00, 0x21, 0x4E, 0x00, 0x3F, 0x44, 0x00, 0x21, 0x44, 0x00, 0x21, 0x4E, 0x00, 0x7F, 0x4A, 0x00, 0x05, 0x5B, 0x00, 0x09, 0x51, 0x00, 0x11, 0x40, 0x00, 0x67, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EB0, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x1E, 0x2A, 0x00, 0x12, 0x6B, 0x00, 0x12, 0x49, 0x00, 0x7E, 0xC9, 0x80, 0x0A, 0x3E, 0x00, 0x12, 0x08, 0x00, 0x62, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EB1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x1E, 0x24, 0x00, 0x12, 0x24, 0x00, 0x12, 0x27, 0x00, 0x1E, 0x61, 0x00, 0x12, 0x41, 0x00, 0x12, 0xCB, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x2A, 0x00, 0x7E, 0x2A, 0x00, 0x0A, 0x6B, 0x00, 0x12, 0x49, 0x00, 0x62, 0xC9, 0x80, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EB2, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1E, 0x93, 0x00, 0x12, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x30, 0x00, 0x0A, 0x38, 0x00, 0x12, 0x58, 0x00, 0x12, 0x54, 0x00, 0x22, 0x93, 0x00, 0x4B, 0x12, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EB3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1F, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x18, 0x00, 0x11, 0x10, 0x00, 0x11, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x09, 0x41, 0x00, 0x11, 0x41, 0x00, 0x61, 0x41, 0x00, 0x07, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EB5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x1E, 0x11, 0x00, 0x12, 0x51, 0x00, 0x12, 0xD1, 0x00, 0x1E, 0x33, 0x00, 0x12, 0x62, 0x00, 0x12, 0xC6, 0x00, 0x1E, 0x00, 0x00, 0x12, 0x10, 0x00, 0x12, 0x18, 0x00, 0x7E, 0x29, 0x00, 0x0A, 0xA1, 0x80, 0x12, 0xA2, 0x80, 0x62, 0xA2, 0x00, 0x06, 0x9E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EBA, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x88, 0x80, 0x1E, 0xC9, 0x80, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1E, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x1E, 0x80, 0x80, 0x12, 0xBE, 0x80, 0x12, 0xA2, 0x80, 0x7E, 0xA2, 0x80, 0x0A, 0xBE, 0x80, 0x12, 0x80, 0x80, 0x62, 0x80, 0x80, 0x06, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EBB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0xA4, 0x80, 0x12, 0xA4, 0x80, 0x1E, 0x64, 0x00, 0x12, 0xC7, 0x80, 0x12, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x12, 0x08, 0x00, 0x62, 0xFF, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EBE, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x08, 0x14, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x14, 0x00, 0x12, 0x36, 0x00, 0x62, 0x63, 0x00, 0x06, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EC0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x1E, 0x80, 0x00, 0x12, 0x80, 0x00, 0x12, 0xBF, 0x00, 0x1E, 0xA1, 0x00, 0x12, 0xBF, 0x00, 0x12, 0x80, 0x00, 0x1E, 0xBF, 0x00, 0x12, 0xAD, 0x00, 0x13, 0xAD, 0x00, 0x1E, 0xAD, 0x00, 0x32, 0xBF, 0x00, 0x02, 0x80, 0x00, 0x02, 0xFF, 0x80, 0x06, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EC1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x49, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x10, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x21, 0x00, 0x12, 0x72, 0x00, 0x62, 0x1E, 0x00, 0x06, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EC3, { 0x00, 0x00, 0x00, 0x04, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x1E, 0xF7, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x62, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EC4, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x10, 0x45, 0x00, 0x3D, 0xF5, 0x80, 0x24, 0x04, 0x80, 0x25, 0x14, 0x00, 0x3C, 0xA4, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x04, 0x00, 0x3D, 0xF5, 0x00, 0x25, 0x15, 0x00, 0x25, 0x17, 0x00, 0x7D, 0xF2, 0x00, 0x15, 0x12, 0x00, 0x25, 0x12, 0x80, 0x45, 0xF7, 0x80, 0x0C, 0x0D, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EC5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x3D, 0x20, 0x00, 0x25, 0x29, 0x00, 0x25, 0x4A, 0x00, 0x3D, 0x5F, 0x80, 0x25, 0xD2, 0x00, 0x25, 0x72, 0x00, 0x3D, 0x5F, 0x00, 0x25, 0x52, 0x00, 0x25, 0x52, 0x00, 0x7D, 0x5F, 0x00, 0x15, 0x52, 0x00, 0x26, 0x52, 0x00, 0x44, 0x52, 0x00, 0x0C, 0x5F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EC6, { 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x08, 0x14, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x55, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x12, 0x22, 0x00, 0x62, 0x14, 0x00, 0x06, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EC7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x12, 0x00, 0x80, 0x12, 0x3E, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x0A, 0x01, 0x00, 0x12, 0xFF, 0x80, 0x62, 0xA9, 0x00, 0x06, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EC8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x3D, 0x20, 0x00, 0x25, 0x6A, 0x00, 0x25, 0x5F, 0x80, 0x3D, 0xF2, 0x00, 0x25, 0x5F, 0x00, 0x25, 0x52, 0x00, 0x3D, 0x5F, 0x00, 0x25, 0x52, 0x00, 0x26, 0x5F, 0x80, 0x7C, 0x08, 0x00, 0x14, 0x2D, 0x00, 0x24, 0xA5, 0x80, 0x44, 0xA2, 0x80, 0x0D, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ECA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ECB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xD0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xD0, 0x80, 0x04, 0x10, 0x80, 0x04, 0x1F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ECC, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x80, 0x04, 0x22, 0x80, 0x3F, 0xA2, 0x80, 0x04, 0x43, 0x80, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ECD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ECE, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ECF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x24, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x64, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8ED1, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x8E, 0x00, 0x24, 0x8A, 0x00, 0x24, 0x8A, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x1B, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x31, 0x80, 0x04, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8ED2, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8ED4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x2A, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x3E, 0x51, 0x00, 0x2A, 0xD1, 0x00, 0x2A, 0x91, 0x00, 0x3E, 0x31, 0x00, 0x08, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x63, 0x00, 0x08, 0x42, 0x00, 0x08, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EDB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x3E, 0x5F, 0x00, 0x2A, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x3E, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x3E, 0x53, 0x00, 0x08, 0x50, 0x00, 0x7F, 0x50, 0x00, 0x08, 0x50, 0x80, 0x08, 0x99, 0x80, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EDC, { 0x00, 0x00, 0x00, 0x08, 0x70, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x3E, 0xB9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xAD, 0x00, 0x3E, 0xC5, 0x00, 0x08, 0x81, 0x00, 0x7F, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EDF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x29, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x94, 0x00, 0x04, 0x14, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EE2, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x19, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x17, 0x80, 0x04, 0x3C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EE3, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1C, 0x0E, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EE8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x2A, 0x3E, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x11, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x17, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EEB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x89, 0x80, 0x3F, 0x08, 0x00, 0x2A, 0x12, 0x00, 0x3E, 0x22, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x88, 0x80, 0x2A, 0x11, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC4, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EED, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x08, 0xBF, 0x80, 0x3E, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x3E, 0x9F, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xBF, 0x80, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EEE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x08, 0x14, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EF0, { 0x00, 0x00, 0x00, 0x02, 0x23, 0x00, 0x7E, 0x3E, 0x00, 0x02, 0x20, 0x80, 0x1E, 0x31, 0x80, 0x72, 0x1F, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EF1, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x7F, 0x7A, 0x00, 0x08, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x53, 0x00, 0x7F, 0x55, 0x00, 0x08, 0x5D, 0x00, 0x08, 0xB5, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EF7, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x13, 0x00, 0x7F, 0x11, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x11, 0x00, 0x3E, 0x39, 0x00, 0x2A, 0x2B, 0x00, 0x2A, 0x2A, 0x00, 0x3E, 0x6E, 0x00, 0x08, 0x44, 0x00, 0x7F, 0x4E, 0x00, 0x08, 0xCA, 0x00, 0x09, 0x9B, 0x00, 0x08, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EF8, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x3F, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x04, 0x3F, 0x80, 0x04, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EF9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xE1, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x3F, 0xA1, 0x00, 0x24, 0xBF, 0x00, 0x24, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x33, 0x00, 0x04, 0x21, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EFA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x11, 0x00, 0x08, 0x11, 0x00, 0x3E, 0x31, 0x00, 0x2A, 0x23, 0x00, 0x2A, 0x62, 0x00, 0x3E, 0xCE, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EFB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x3E, 0x02, 0x00, 0x2A, 0x7A, 0x00, 0x2A, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x4A, 0x00, 0x3E, 0x7A, 0x00, 0x2A, 0x02, 0x00, 0x08, 0x02, 0x00, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EFC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x7F, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0xC8, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8EFD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x33, 0x00, 0x3E, 0x16, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x36, 0x00, 0x3E, 0xE3, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8EFE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0A, 0x00, 0x3E, 0x09, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xF8, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x3C, 0x00, 0x3E, 0xC4, 0x00, 0x08, 0x02, 0x80, 0x08, 0x01, 0x80, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F00, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x18, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x54, 0x80, 0x3E, 0x54, 0x80, 0x2A, 0x54, 0x80, 0x2A, 0x54, 0x80, 0x3E, 0x54, 0x80, 0x08, 0x54, 0x80, 0x7F, 0x54, 0x80, 0x08, 0x54, 0x80, 0x08, 0x54, 0x80, 0x08, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F02, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x60, 0x81, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F03, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x22, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0xA2, 0x80, 0x2A, 0x22, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x14, 0x00, 0x08, 0x18, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x14, 0x00, 0x08, 0x62, 0x00, 0x09, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F05, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x3E, 0x62, 0x00, 0x2A, 0x94, 0x00, 0x2B, 0x08, 0x00, 0x3E, 0x16, 0x00, 0x2A, 0x21, 0x80, 0x2A, 0xC0, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F07, { 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x08, 0x0C, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x63, 0x00, 0x3E, 0xC1, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F08, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x52, 0x00, 0x2A, 0x5A, 0x00, 0x2A, 0x4A, 0x00, 0x3E, 0x42, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x42, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x52, 0x00, 0x7F, 0x52, 0x00, 0x08, 0xD2, 0x00, 0x08, 0x82, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F09, { 0x00, 0x00, 0x00, 0x02, 0x14, 0x00, 0x0F, 0x92, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x3F, 0xD0, 0x80, 0x02, 0x10, 0x80, 0x1F, 0xD1, 0x00, 0x12, 0x51, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x4A, 0x00, 0x1F, 0xCC, 0x00, 0x02, 0x0C, 0x80, 0x3F, 0xD2, 0x80, 0x02, 0x21, 0x80, 0x02, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F0A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x32, 0x00, 0x3E, 0x22, 0x00, 0x2A, 0x2F, 0x00, 0x2A, 0x79, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F0C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x7F, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F0F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x14, 0x00, 0x08, 0x14, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x57, 0x00, 0x3E, 0x61, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F10, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x3E, 0x40, 0x80, 0x2A, 0x3F, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x12, 0x00, 0x7F, 0x12, 0x00, 0x08, 0x32, 0x80, 0x08, 0x22, 0x80, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F12, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0x94, 0x00, 0x3E, 0xF4, 0x00, 0x2A, 0x94, 0x00, 0x3E, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x3E, 0xF4, 0x00, 0x2A, 0x94, 0x00, 0x08, 0x94, 0x00, 0x3E, 0xF4, 0x80, 0x09, 0x94, 0x80, 0x08, 0x17, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F13, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x1F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x44, 0x00, 0x7F, 0xFF, 0x00, 0x49, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x49, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x18, 0x00, 0x08, 0x18, 0x00, 0x7F, 0x28, 0x00, 0x08, 0x48, 0x80, 0x08, 0x8F, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F14, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x09, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F15, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x80, 0x00, 0x04, 0x15, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0xD2, 0x00, 0x24, 0xA9, 0x00, 0x3F, 0x94, 0x80, 0x24, 0x80, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F16, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x80, 0x80, 0x08, 0x88, 0x80, 0x3E, 0xBE, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xBE, 0x80, 0x3E, 0x88, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0xBE, 0x80, 0x3E, 0xA2, 0x80, 0x08, 0xA2, 0x80, 0x7F, 0xBE, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x09, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F17, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x08, 0x67, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x77, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x64, 0x80, 0x08, 0x44, 0x80, 0x08, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F18, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x7D, 0xFF, 0x80, 0x54, 0x24, 0x00, 0x54, 0x64, 0x00, 0x7D, 0xC7, 0x80, 0x54, 0x20, 0x00, 0x54, 0x3E, 0x00, 0x7C, 0x62, 0x00, 0x11, 0xC6, 0x00, 0x7C, 0x2C, 0x00, 0x10, 0x18, 0x00, 0x10, 0x76, 0x00, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F19, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x7C, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x7C, 0xFF, 0x00, 0x54, 0xA9, 0x00, 0x54, 0xA9, 0x00, 0x7C, 0xAB, 0x00, 0x54, 0xEA, 0x00, 0x54, 0xAE, 0x00, 0x7C, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x7C, 0xEE, 0x00, 0x13, 0xAB, 0x00, 0x10, 0x39, 0x80, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F1B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x3E, 0xDD, 0x80, 0x08, 0xDD, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F1C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x24, 0x80, 0x3E, 0x49, 0x00, 0x08, 0x92, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x24, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F1D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x1A, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x17, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F1E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x3E, 0xA2, 0x80, 0x08, 0x94, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0xA0, 0x80, 0x3E, 0xA0, 0x80, 0x08, 0xA0, 0x80, 0x08, 0xBE, 0x80, 0x3E, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x08, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F1F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x11, 0x00, 0x08, 0xA6, 0x00, 0x08, 0x62, 0x00, 0x3E, 0x55, 0x00, 0x2A, 0x88, 0x80, 0x3F, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x11, 0x00, 0x2A, 0x92, 0x00, 0x08, 0x6A, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x56, 0x00, 0x08, 0x89, 0x00, 0x09, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F20, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x7F, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F21, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x1F, 0x80, 0x08, 0x30, 0x80, 0x3E, 0x21, 0x80, 0x2A, 0x61, 0x00, 0x2A, 0xC7, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x18, 0x00, 0x2A, 0x73, 0x80, 0x3E, 0x40, 0x80, 0x08, 0x40, 0x80, 0x7F, 0x73, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F23, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xE7, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x55, 0xA6, 0x80, 0x55, 0x65, 0x80, 0x7D, 0x24, 0x80, 0x55, 0x24, 0x80, 0x55, 0xA6, 0x80, 0x7D, 0x65, 0x80, 0x11, 0x24, 0x80, 0x7D, 0x24, 0x80, 0x11, 0x24, 0x80, 0x11, 0x24, 0x80, 0x12, 0x69, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F25, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x54, 0x00, 0x00, 0x54, 0x88, 0x00, 0x7C, 0x8B, 0x00, 0x10, 0xEE, 0x00, 0x7C, 0x88, 0x00, 0x10, 0x88, 0x80, 0x10, 0xE9, 0x80, 0x13, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F26, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x16, 0x00, 0x31, 0x61, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F27, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x44, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x74, 0x00, 0x3F, 0xDF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F28, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x2A, 0x3E, 0x00, 0x2A, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x2A, 0x3E, 0x00, 0x2A, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F29, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x07, 0x9F, 0x80, 0x3C, 0x50, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F2A, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x81, 0x00, 0x3F, 0x00, 0x80, 0x2A, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F2C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F2D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x3E, 0xA4, 0x80, 0x2A, 0xA5, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x14, 0x00, 0x08, 0x36, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F2E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x54, 0x29, 0x00, 0x54, 0x6A, 0x00, 0x7C, 0xC8, 0x00, 0x55, 0x88, 0x00, 0x54, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x54, 0x00, 0x7C, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x11, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F2F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x00, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x5F, 0x80, 0x09, 0xE2, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F33, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x14, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x42, 0x00, 0x2A, 0x81, 0x00, 0x3F, 0x7F, 0x80, 0x2A, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x14, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F34, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x0E, 0x00, 0x7E, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x7F, 0xBF, 0x00, 0x09, 0x21, 0x00, 0x0B, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F35, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x3E, 0x20, 0x00, 0x2A, 0x3F, 0x80, 0x2A, 0x68, 0x80, 0x3E, 0xC8, 0x80, 0x08, 0x5C, 0x80, 0x7F, 0x76, 0x80, 0x08, 0x41, 0x80, 0x08, 0x7D, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F36, { 0x00, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x43, 0x00, 0x7F, 0xC1, 0x80, 0x08, 0xBE, 0x80, 0x3E, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x67, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F37, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0xC0, 0x80, 0x3E, 0x38, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0xFE, 0x80, 0x3E, 0x00, 0x80, 0x2A, 0x7C, 0x80, 0x2A, 0x00, 0x80, 0x3E, 0x7C, 0x80, 0x08, 0x00, 0x80, 0x7F, 0x7C, 0x80, 0x08, 0x45, 0x80, 0x08, 0x7D, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F38, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x3E, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x71, 0x00, 0x2A, 0x55, 0x00, 0x3E, 0x75, 0x00, 0x08, 0x55, 0x00, 0x08, 0x75, 0x00, 0x3E, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x95, 0x00, 0x08, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F39, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x42, 0x00, 0x3E, 0xA4, 0x00, 0x09, 0x18, 0x00, 0x08, 0x66, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F3A, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x92, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x92, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F3B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F3E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x94, 0x00, 0x08, 0x95, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x9E, 0x00, 0x09, 0x71, 0x00, 0x09, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F3F, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x0D, 0xF6, 0x00, 0x08, 0x42, 0x00, 0x09, 0xF2, 0x00, 0x0F, 0x5E, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x52, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F40, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x5D, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x55, 0x00, 0x08, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F41, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x08, 0x1E, 0x00, 0x7E, 0xF0, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x5B, 0x00, 0x2A, 0xC9, 0x80, 0x2A, 0x80, 0x80, 0x3E, 0x30, 0x00, 0x2A, 0xE7, 0x00, 0x2A, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x08, 0xE7, 0x00, 0x7F, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F42, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xCE, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x8A, 0x00, 0x00, 0x0A, 0x00, 0x7F, 0xD3, 0x80, 0x40, 0x40, 0x00, 0x1F, 0x1F, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xCB, 0x00, 0x15, 0x0A, 0x00, 0x1F, 0x0E, 0x00, 0x15, 0x04, 0x00, 0x7F, 0xCE, 0x00, 0x04, 0x1B, 0x00, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F43, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x28, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x44, 0x00, 0x7C, 0x9A, 0x00, 0x57, 0x71, 0x80, 0x54, 0x10, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x54, 0x00, 0x7C, 0xD6, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F44, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x0F, 0x00, 0x2A, 0x78, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F45, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x29, 0x00, 0x2A, 0x68, 0x80, 0x08, 0xA5, 0x00, 0x09, 0x26, 0x00, 0x3E, 0x3E, 0x00, 0x09, 0xE1, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F46, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0xA4, 0x80, 0x3E, 0xA4, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x3E, 0xA5, 0x80, 0x08, 0xBF, 0x00, 0x7E, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x09, 0x3C, 0x80, 0x08, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F47, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x7C, 0x63, 0x00, 0x10, 0xA5, 0x00, 0x7C, 0x63, 0x00, 0x54, 0xA5, 0x00, 0x54, 0x11, 0x00, 0x7C, 0x38, 0x00, 0x54, 0x6E, 0x00, 0x55, 0xC3, 0x80, 0x7C, 0x10, 0x00, 0x10, 0xE4, 0x00, 0x7C, 0x19, 0x00, 0x10, 0xE2, 0x00, 0x10, 0x0C, 0x00, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F49, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x0A, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x05, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x08, 0x24, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F4C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x2A, 0xEE, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0x66, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x3F, 0x00, 0x3E, 0x01, 0x00, 0x08, 0x01, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F4D, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x52, 0x00, 0x3E, 0xBA, 0x00, 0x09, 0xCF, 0x80, 0x08, 0x05, 0x00, 0x3E, 0xF9, 0x00, 0x2A, 0x9D, 0x00, 0x3E, 0x95, 0x00, 0x2A, 0xF5, 0x00, 0x3E, 0x95, 0x00, 0x2A, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x95, 0x00, 0x08, 0x95, 0x00, 0x08, 0xB8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F4E, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x08, 0x78, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x3E, 0x7D, 0x00, 0x2B, 0xA4, 0x80, 0x3E, 0x3C, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x3E, 0xA5, 0x00, 0x08, 0xBD, 0x00, 0x08, 0x81, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F4F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x00, 0x00, 0x55, 0x3E, 0x00, 0x55, 0x04, 0x00, 0x7D, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0x18, 0x00, 0x7D, 0xE7, 0x00, 0x11, 0x21, 0x00, 0x7D, 0x72, 0x00, 0x11, 0xCF, 0x80, 0x12, 0x42, 0x00, 0x10, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F51, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x44, 0x00, 0x7D, 0x45, 0x00, 0x54, 0x82, 0x00, 0x55, 0xFF, 0x00, 0x7E, 0x82, 0x80, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x92, 0x00, 0x11, 0x93, 0x00, 0x13, 0x11, 0x80, 0x10, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F52, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F53, { 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x10, 0x1C, 0x00, 0x7D, 0xF0, 0x00, 0x10, 0x92, 0x00, 0x7C, 0x54, 0x00, 0x57, 0xFF, 0x80, 0x54, 0x54, 0x00, 0x7C, 0xD6, 0x00, 0x55, 0x93, 0x00, 0x57, 0x01, 0x80, 0x7C, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F54, { 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x92, 0x00, 0x7C, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x54, 0x00, 0x54, 0xD6, 0x00, 0x55, 0x93, 0x00, 0x7F, 0x11, 0x80, 0x54, 0xE2, 0x00, 0x54, 0xAF, 0x00, 0x7D, 0x2A, 0x00, 0x12, 0xAA, 0x00, 0x7C, 0x5F, 0x80, 0x10, 0xC2, 0x00, 0x11, 0x82, 0x00, 0x13, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F55, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0xC8, 0x80, 0x09, 0x5C, 0x80, 0x7F, 0x76, 0x80, 0x08, 0x41, 0x80, 0x08, 0x7D, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F57, { 0x00, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x09, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x7D, 0x7D, 0x00, 0x55, 0x05, 0x00, 0x55, 0x77, 0x00, 0x7D, 0x52, 0x00, 0x55, 0x76, 0x80, 0x56, 0x0B, 0x80, 0x7C, 0x01, 0x00, 0x10, 0x10, 0x00, 0x7C, 0x59, 0x00, 0x11, 0x49, 0x80, 0x11, 0x42, 0x80, 0x12, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F58, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x49, 0x00, 0x11, 0x49, 0x00, 0x7D, 0xFF, 0x00, 0x54, 0x00, 0x00, 0x57, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x01, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x50, 0x80, 0x7C, 0x93, 0x00, 0x11, 0x8C, 0x00, 0x12, 0xB3, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F5C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x2A, 0xEE, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0x66, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xA5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F5D, { 0x00, 0x00, 0x00, 0x0B, 0x76, 0x00, 0x0C, 0x42, 0x00, 0x0E, 0x76, 0x00, 0x08, 0x52, 0x00, 0x0E, 0x56, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x44, 0x00, 0x0F, 0xFE, 0x00, 0x30, 0x41, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F5E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFA, 0x00, 0x7F, 0xA2, 0x00, 0x08, 0xA7, 0x80, 0x3E, 0xFC, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xF8, 0x00, 0x3E, 0xA7, 0x80, 0x2A, 0xA0, 0x00, 0x2A, 0xF8, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F5F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x1F, 0xBF, 0x00, 0x14, 0xA5, 0x00, 0x1F, 0xBF, 0x00, 0x14, 0xA5, 0x00, 0x1F, 0xBF, 0x80, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F61, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xE4, 0x00, 0x48, 0x89, 0x00, 0x33, 0xE6, 0x00, 0x2A, 0xA4, 0x80, 0x7B, 0xEF, 0x80, 0x12, 0xA2, 0x00, 0x5B, 0xE6, 0x80, 0x54, 0x8A, 0x80, 0x53, 0xE2, 0x80, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F62, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xBC, 0x00, 0x3F, 0x29, 0x00, 0x09, 0xEE, 0x00, 0x3F, 0x7A, 0x00, 0x2A, 0xAA, 0x00, 0x3F, 0x6D, 0x80, 0x2B, 0xBE, 0x80, 0x3E, 0x10, 0x00, 0x2A, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F63, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x33, 0x00, 0x11, 0x66, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x55, 0x77, 0x00, 0x7D, 0xAA, 0x80, 0x55, 0x22, 0x00, 0x55, 0x08, 0x00, 0x7D, 0x48, 0x00, 0x11, 0x4F, 0x00, 0x7D, 0x48, 0x00, 0x12, 0x48, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F64, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x2A, 0xBE, 0x00, 0x2A, 0x88, 0x80, 0x3E, 0xBF, 0x80, 0x2A, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x08, 0xBF, 0x00, 0x7E, 0x80, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F65, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x11, 0xE7, 0x80, 0x7D, 0x24, 0x80, 0x55, 0xE7, 0x80, 0x55, 0x24, 0x80, 0x7D, 0xE7, 0x80, 0x55, 0x28, 0x80, 0x55, 0x3E, 0x80, 0x7D, 0x68, 0x80, 0x11, 0x3C, 0x80, 0x7D, 0x28, 0x80, 0x11, 0x3C, 0x80, 0x11, 0x28, 0x80, 0x11, 0x3E, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8F66, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, 0x00, 0x08, 0x80, 0x00, 0x10, 0x90, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F67, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x7F, 0xA0, 0x00, 0x10, 0x20, 0x00, 0x14, 0x20, 0x00, 0x25, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x07, 0xA0, 0x00, 0x7C, 0x20, 0x00, 0x24, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F68, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x7F, 0x24, 0x00, 0x10, 0xFE, 0x00, 0x14, 0x24, 0x00, 0x24, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x7F, 0x44, 0x00, 0x04, 0x45, 0x00, 0x04, 0x45, 0x00, 0x04, 0x83, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F69, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x14, 0x10, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F6B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x7F, 0x12, 0x00, 0x10, 0x12, 0x00, 0x14, 0x52, 0x00, 0x24, 0x52, 0x00, 0x3F, 0x52, 0x00, 0x04, 0x92, 0x00, 0x04, 0x12, 0x00, 0x07, 0x12, 0x00, 0x7C, 0x22, 0x00, 0x24, 0x22, 0x00, 0x04, 0x42, 0x00, 0x04, 0x94, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F6C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x7E, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x14, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0xFE, 0x00, 0x0E, 0x04, 0x00, 0x74, 0x08, 0x00, 0x24, 0x48, 0x00, 0x04, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F6D, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x20, 0x82, 0x00, 0x28, 0xBF, 0x00, 0x48, 0xA2, 0x00, 0x7E, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xAA, 0x00, 0x0E, 0xA4, 0x00, 0x79, 0x20, 0x00, 0x29, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0C, 0x1F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F6E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x10, 0x50, 0x00, 0x7E, 0x50, 0x00, 0x10, 0x88, 0x00, 0x28, 0x84, 0x00, 0x29, 0x07, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x88, 0x00, 0x08, 0x98, 0x00, 0x0E, 0xE0, 0x00, 0x78, 0x80, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F6F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x7F, 0x3E, 0x00, 0x10, 0x42, 0x00, 0x14, 0x84, 0x00, 0x24, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0x28, 0x00, 0x7C, 0x28, 0x00, 0x24, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x83, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F70, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x7E, 0x00, 0x11, 0x44, 0x00, 0x0A, 0x28, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x47, 0x00, 0x60, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F71, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x24, 0x10, 0x00, 0x3F, 0x12, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x82, 0x00, 0x07, 0x82, 0x00, 0x7C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F72, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x7F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x14, 0xF4, 0x00, 0x24, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x04, 0x94, 0x00, 0x04, 0x94, 0x00, 0x07, 0xF4, 0x00, 0x7C, 0x94, 0x00, 0x24, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F73, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0A, 0x1F, 0x00, 0x7F, 0x10, 0x00, 0x10, 0x12, 0x00, 0x14, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x07, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x24, 0x80, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F74, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x92, 0x00, 0x07, 0x92, 0x00, 0x7C, 0x92, 0x00, 0x24, 0x92, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F75, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x7F, 0x00, 0x7F, 0x42, 0x00, 0x10, 0x42, 0x00, 0x14, 0x42, 0x00, 0x24, 0x42, 0x00, 0x3F, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x07, 0x00, 0x00, 0x7C, 0x24, 0x00, 0x24, 0x24, 0x00, 0x04, 0x42, 0x00, 0x04, 0x83, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F76, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x50, 0x00, 0x7F, 0x54, 0x00, 0x10, 0x7E, 0x00, 0x14, 0x90, 0x00, 0x24, 0x10, 0x00, 0x3F, 0x12, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x07, 0x10, 0x00, 0x7C, 0x28, 0x00, 0x24, 0x28, 0x00, 0x04, 0x44, 0x00, 0x04, 0x47, 0x00, 0x05, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F77, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x0A, 0xF0, 0x00, 0x7F, 0x10, 0x00, 0x10, 0x12, 0x00, 0x14, 0x92, 0x00, 0x24, 0x54, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x12, 0x00, 0x04, 0xFF, 0x00, 0x07, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x50, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F78, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x14, 0x50, 0x00, 0x7E, 0x50, 0x00, 0x20, 0x8C, 0x00, 0x29, 0x13, 0x00, 0x4A, 0x20, 0x00, 0x7E, 0x40, 0x00, 0x08, 0x88, 0x00, 0x08, 0x10, 0x00, 0x0C, 0x20, 0x00, 0x78, 0xC4, 0x00, 0x28, 0x08, 0x00, 0x08, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F79, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x0A, 0xF0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x90, 0x00, 0x14, 0x90, 0x00, 0x24, 0x90, 0x00, 0x3F, 0x92, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x07, 0x54, 0x00, 0x7C, 0x52, 0x00, 0x24, 0x93, 0x00, 0x05, 0x11, 0x00, 0x04, 0x50, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F7A, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x10, 0x22, 0x00, 0x14, 0x22, 0x00, 0x24, 0x4A, 0x00, 0x3F, 0x44, 0x00, 0x04, 0x82, 0x00, 0x04, 0x7F, 0x00, 0x07, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x24, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F7B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x04, 0x00, 0x7F, 0x08, 0x00, 0x10, 0x1C, 0x00, 0x14, 0x66, 0x00, 0x25, 0x81, 0x00, 0x3E, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0xFE, 0x00, 0x07, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x12, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F7C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x0A, 0x0A, 0x00, 0x7F, 0x0A, 0x00, 0x10, 0xFF, 0x00, 0x14, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3E, 0xF8, 0x00, 0x04, 0x48, 0x00, 0x04, 0x48, 0x00, 0x07, 0x48, 0x00, 0x7C, 0x78, 0x00, 0x25, 0xC4, 0x00, 0x04, 0x05, 0x00, 0x04, 0x03, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F7D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x05, 0x28, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x04, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x7F, 0xA0, 0x00, 0x10, 0x24, 0x00, 0x14, 0x24, 0x00, 0x3F, 0x18, 0x00, 0x04, 0x10, 0x00, 0x07, 0xB0, 0x00, 0x7C, 0x49, 0x00, 0x04, 0x85, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F7E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x10, 0x44, 0x00, 0x14, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x3F, 0x11, 0x00, 0x04, 0x10, 0x00, 0x04, 0x14, 0x00, 0x07, 0xFE, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x12, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F7F, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x09, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x10, 0x22, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x48, 0x00, 0x7E, 0x8C, 0x00, 0x09, 0x8F, 0x00, 0x0A, 0x8A, 0x00, 0x0E, 0x88, 0x00, 0x78, 0x88, 0x00, 0x28, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F81, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x7F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x14, 0x82, 0x00, 0x25, 0x7D, 0x00, 0x3F, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x07, 0x7C, 0x00, 0x7C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x04, 0x12, 0x00, 0x05, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F82, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x7E, 0x00, 0x7F, 0x82, 0x00, 0x10, 0xC4, 0x00, 0x15, 0x28, 0x00, 0x24, 0x10, 0x00, 0x3F, 0x28, 0x00, 0x04, 0x44, 0x00, 0x04, 0x83, 0x00, 0x07, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x24, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F83, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x10, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x28, 0x44, 0x00, 0x28, 0x83, 0x00, 0x7F, 0x01, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x0F, 0x10, 0x00, 0x78, 0x28, 0x00, 0x28, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x87, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F84, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x90, 0x00, 0x7F, 0x94, 0x00, 0x10, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x24, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x04, 0xF4, 0x00, 0x04, 0x94, 0x00, 0x07, 0x94, 0x00, 0x7C, 0x9D, 0x00, 0x25, 0xF5, 0x00, 0x04, 0x97, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F85, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x08, 0x12, 0x00, 0x0A, 0xFF, 0x00, 0x7F, 0x10, 0x00, 0x10, 0x12, 0x00, 0x14, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0xFE, 0x00, 0x04, 0x92, 0x00, 0x07, 0x92, 0x00, 0x7C, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x04, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F86, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x19, 0xFF, 0x00, 0x29, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x0F, 0xAA, 0x00, 0x79, 0x16, 0x00, 0x29, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F87, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x7E, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x7E, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x21, 0x03, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x80, 0x00, 0x04, 0x90, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F88, { 0x00, 0x00, 0x00, 0x02, 0x44, 0x00, 0x3E, 0x7E, 0x00, 0x02, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x02, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x03, 0x40, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F89, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x4A, 0x82, 0x00, 0x2B, 0x20, 0x00, 0x1C, 0x24, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x40, 0x00, 0x14, 0x90, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x14, 0x12, 0x00, 0x15, 0xFF, 0x00, 0x26, 0x10, 0x00, 0x24, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F8A, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x21, 0x04, 0x00, 0x49, 0x04, 0x00, 0x7F, 0xFC, 0x00, 0x09, 0x12, 0x00, 0x09, 0x16, 0x00, 0x0F, 0xD8, 0x00, 0x79, 0x10, 0x00, 0x29, 0x11, 0x00, 0x09, 0x51, 0x00, 0x09, 0x8F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F8B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x02, 0x00, 0x15, 0xFF, 0x00, 0x7F, 0x02, 0x00, 0x21, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x49, 0xFE, 0x00, 0x7F, 0x22, 0x00, 0x09, 0x12, 0x00, 0x09, 0xFE, 0x00, 0x0F, 0x42, 0x00, 0x79, 0x42, 0x00, 0x29, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F8D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x12, 0x52, 0x00, 0x7E, 0x94, 0x00, 0x21, 0x08, 0x00, 0x2A, 0x94, 0x00, 0x48, 0x62, 0x00, 0x7C, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x08, 0x42, 0x00, 0x0C, 0x62, 0x00, 0x7A, 0x94, 0x00, 0x29, 0x08, 0x00, 0x0A, 0x94, 0x00, 0x0C, 0x67, 0x00, 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F8E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x92, 0x00, 0x14, 0x92, 0x00, 0x7F, 0x24, 0x00, 0x21, 0x24, 0x00, 0x28, 0x92, 0x00, 0x48, 0x92, 0x00, 0x7E, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0xFE, 0x00, 0x28, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F8F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x3F, 0x28, 0x00, 0x04, 0x44, 0x00, 0x04, 0xFE, 0x00, 0x07, 0x11, 0x00, 0x7C, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x04, 0x2C, 0x00, 0x04, 0x43, 0x00, 0x05, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F90, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x7D, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x29, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x7C, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F91, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x7E, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x14, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x3E, 0x84, 0x00, 0x04, 0xFC, 0x00, 0x04, 0x84, 0x00, 0x07, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x24, 0x84, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F93, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x14, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x11, 0x07, 0x00, 0x22, 0xFA, 0x00, 0x28, 0x00, 0x00, 0x49, 0xE2, 0x00, 0x7D, 0x2A, 0x00, 0x09, 0xEA, 0x00, 0x1D, 0x2A, 0x00, 0x69, 0xEA, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x22, 0x00, 0x09, 0x22, 0x00, 0x09, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F94, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x13, 0xE8, 0x00, 0x11, 0x08, 0x00, 0x3E, 0x9E, 0x00, 0x0B, 0xE4, 0x00, 0x10, 0x88, 0x00, 0x3C, 0x9E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x9F, 0x00, 0x00, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F95, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x7E, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x20, 0x04, 0x00, 0x49, 0xFE, 0x00, 0x7F, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x0E, 0xA2, 0x00, 0x78, 0x94, 0x00, 0x29, 0x88, 0x00, 0x0A, 0xA7, 0x00, 0x08, 0xC2, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F96, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x7F, 0x11, 0x00, 0x12, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x28, 0xFC, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x0E, 0xFF, 0x00, 0x78, 0x82, 0x00, 0x28, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F97, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x15, 0x02, 0x00, 0x7F, 0xFE, 0x00, 0x21, 0x28, 0x00, 0x29, 0x28, 0x00, 0x49, 0xFE, 0x00, 0x7F, 0x28, 0x00, 0x09, 0x2A, 0x00, 0x09, 0xFF, 0x00, 0x0F, 0x52, 0x00, 0x79, 0x54, 0x00, 0x2A, 0x48, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x67, 0x00, 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F98, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x12, 0x00, 0x15, 0xFF, 0x00, 0x7F, 0x28, 0x00, 0x21, 0x2A, 0x00, 0x29, 0xFF, 0x00, 0x49, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x49, 0x00, 0x0F, 0x4A, 0x00, 0x79, 0x7C, 0x00, 0x29, 0x48, 0x00, 0x09, 0x59, 0x00, 0x0A, 0x69, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F99, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x10, 0x90, 0x00, 0x13, 0xF2, 0x00, 0x7D, 0x1F, 0x00, 0x12, 0x62, 0x00, 0x2B, 0xD2, 0x00, 0x28, 0x52, 0x00, 0x7F, 0xD2, 0x00, 0x0A, 0x52, 0x00, 0x0B, 0xD4, 0x00, 0x0E, 0x48, 0x00, 0x7B, 0xC8, 0x00, 0x2A, 0x54, 0x00, 0x0A, 0x54, 0x00, 0x0A, 0x63, 0x00, 0x0A, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F9A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x14, 0xA8, 0x00, 0x7F, 0xFF, 0x00, 0x20, 0xA8, 0x00, 0x29, 0x26, 0x00, 0x4A, 0x22, 0x00, 0x7D, 0x04, 0x00, 0x09, 0xDF, 0x00, 0x09, 0x44, 0x00, 0x0D, 0x54, 0x00, 0x7A, 0xD4, 0x00, 0x28, 0x9F, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F9B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F9C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F9D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0xFF, 0x80, 0x22, 0x41, 0x00, 0x22, 0x63, 0x00, 0x2F, 0x22, 0x00, 0x79, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F9E, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0xFF, 0x80, 0x08, 0x41, 0x00, 0x08, 0x63, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8F9F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x22, 0x00, 0x11, 0x36, 0x00, 0x1F, 0x14, 0x00, 0x10, 0x14, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x69, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x22, 0x21, 0x00, 0x36, 0x33, 0x00, 0x14, 0x12, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x78, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x18, 0x08, 0x00, 0x10, 0x08, 0x00, 0x30, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x08, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x89, 0x00, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FA4, { 0x00, 0x00, 0x00, 0x01, 0x84, 0x00, 0x07, 0x04, 0x00, 0x7C, 0x3F, 0x80, 0x24, 0x91, 0x00, 0x12, 0x9B, 0x00, 0x7F, 0xCA, 0x00, 0x40, 0x7F, 0x80, 0x40, 0x44, 0x00, 0x3F, 0x84, 0x00, 0x10, 0x84, 0x00, 0x19, 0xBF, 0x80, 0x0B, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x1B, 0x04, 0x00, 0x31, 0x04, 0x00, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA5, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x24, 0xA1, 0x00, 0x3F, 0xB3, 0x00, 0x10, 0x12, 0x00, 0x64, 0x12, 0x00, 0x08, 0x7F, 0x80, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA6, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x9F, 0x80, 0x01, 0xE0, 0x00, 0x22, 0xA8, 0x80, 0x14, 0xA5, 0x00, 0x3F, 0xAF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x0E, 0xA2, 0x00, 0x38, 0xAF, 0x80, 0x09, 0x22, 0x00, 0x11, 0x22, 0x00, 0x12, 0x22, 0x00, 0x24, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA7, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xE2, 0x00, 0x7D, 0x2F, 0x80, 0x29, 0x25, 0x00, 0x29, 0x25, 0x00, 0x29, 0x25, 0x00, 0x7D, 0x2F, 0x80, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x7D, 0x2F, 0x80, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x11, 0x22, 0x00, 0x33, 0x22, 0x00, 0x22, 0x22, 0x00, 0x66, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA8, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xA2, 0x00, 0x3E, 0xAF, 0x80, 0x00, 0xA0, 0x00, 0x14, 0xA5, 0x00, 0x14, 0xA5, 0x00, 0x3E, 0xBF, 0x80, 0x08, 0xA2, 0x00, 0x0F, 0xA2, 0x00, 0x38, 0xAF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0x22, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FA9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0x08, 0x00, 0x08, 0x88, 0x00, 0x3E, 0xBE, 0x00, 0x04, 0x04, 0x00, 0x17, 0x94, 0x00, 0x14, 0x94, 0x00, 0x7E, 0xBF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0xBE, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xC8, 0x00, 0x10, 0x88, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FAB, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x9F, 0x00, 0x04, 0x82, 0x00, 0x15, 0xEA, 0x00, 0x14, 0x2A, 0x00, 0x7E, 0x5F, 0x00, 0x08, 0x84, 0x00, 0x09, 0xE4, 0x00, 0x7E, 0x1F, 0x00, 0x08, 0x04, 0x00, 0x08, 0x64, 0x00, 0x09, 0x84, 0x00, 0x10, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FAD, { 0x00, 0x00, 0x00, 0x03, 0x84, 0x00, 0x1E, 0x84, 0x00, 0x14, 0x44, 0x00, 0x22, 0x3F, 0x80, 0x1F, 0x91, 0x00, 0x09, 0x09, 0x00, 0x06, 0x0A, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x29, 0x44, 0x00, 0x3F, 0xC4, 0x00, 0x20, 0x7F, 0x80, 0x3F, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x26, 0x44, 0x00, 0x29, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FAE, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC2, 0x00, 0x7C, 0x8F, 0x80, 0x2B, 0x25, 0x00, 0x29, 0x65, 0x00, 0x28, 0xC5, 0x00, 0x7C, 0x8F, 0x80, 0x11, 0x22, 0x00, 0x13, 0xF2, 0x00, 0x7C, 0x9F, 0x80, 0x10, 0x82, 0x00, 0x12, 0xA2, 0x00, 0x16, 0xB2, 0x00, 0x34, 0x92, 0x00, 0x20, 0x82, 0x00, 0x60, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FAF, { 0x00, 0x00, 0x00, 0x08, 0xE2, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x14, 0xE5, 0x00, 0x14, 0x05, 0x00, 0x3E, 0x0F, 0x80, 0x08, 0xE2, 0x00, 0x0E, 0x02, 0x00, 0x38, 0x0F, 0x80, 0x08, 0xE2, 0x00, 0x08, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x10, 0xE2, 0x00, 0x20, 0xA2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x24, 0x00, 0x12, 0x18, 0x00, 0x12, 0x10, 0x00, 0x12, 0x08, 0x00, 0x13, 0xE4, 0x00, 0x2E, 0x02, 0x00, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x11, 0x0A, 0x00, 0x21, 0xF6, 0x00, 0x2F, 0x05, 0x80, 0x00, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FB2, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x12, 0x14, 0x00, 0x23, 0xEC, 0x00, 0x2E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FB5, { 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC4, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0x71, 0x80, 0x03, 0xC7, 0x00, 0x3E, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x1C, 0x80, 0x00, 0x16, 0x80, 0x00, 0x33, 0x80, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FB6, { 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFC, 0x00, 0x18, 0x44, 0x00, 0x08, 0x44, 0x00, 0x30, 0x44, 0x00, 0x18, 0x47, 0x80, 0x08, 0x40, 0x80, 0x00, 0x40, 0x80, 0x78, 0x40, 0x80, 0x08, 0xC0, 0x80, 0x08, 0x81, 0x80, 0x09, 0x81, 0x00, 0x0B, 0x07, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FB9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x78, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x10, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x78, 0x21, 0x00, 0x08, 0x61, 0x00, 0x08, 0x41, 0x00, 0x08, 0xC3, 0x00, 0x09, 0x82, 0x00, 0x0B, 0x0E, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FBB, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xF0, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x78, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x09, 0x83, 0x00, 0x0B, 0x01, 0x80, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FBD, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x1B, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x38, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x08, 0x40, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FBE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x08, 0x38, 0x00, 0x00, 0x28, 0x00, 0x78, 0x2C, 0x00, 0x08, 0x64, 0x00, 0x08, 0x46, 0x00, 0x08, 0xC3, 0x00, 0x0B, 0x81, 0x80, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FBF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x79, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FC1, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x30, 0x1C, 0x00, 0x19, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FC2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FC4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x19, 0xFF, 0x80, 0x0B, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x18, 0x00, 0x78, 0x30, 0x00, 0x08, 0x60, 0x00, 0x08, 0xC0, 0x00, 0x09, 0x80, 0x00, 0x09, 0x01, 0x00, 0x09, 0x83, 0x00, 0x18, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FC5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x44, 0x00, 0x20, 0x44, 0x00, 0x10, 0x44, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x38, 0x44, 0x00, 0x08, 0x84, 0x80, 0x08, 0x82, 0x80, 0x09, 0x01, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FC6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x90, 0x00, 0x18, 0x90, 0x00, 0x08, 0x93, 0x00, 0x30, 0x9D, 0x00, 0x18, 0xB1, 0x00, 0x08, 0xD1, 0x00, 0x03, 0x91, 0x00, 0x78, 0x93, 0x00, 0x08, 0x90, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x18, 0x7F, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FC7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x08, 0x00, 0x10, 0x08, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x78, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x28, 0x00, 0x08, 0x10, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FC8, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x18, 0x80, 0x00, 0x08, 0x84, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x84, 0x00, 0x78, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x28, 0x00, 0x08, 0x10, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x79, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x17, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FCD, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x23, 0x00, 0x18, 0x3E, 0x00, 0x0B, 0xE0, 0x00, 0x30, 0x20, 0x00, 0x19, 0x22, 0x00, 0x09, 0x22, 0x00, 0x01, 0x22, 0x00, 0x79, 0x22, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x80, 0x08, 0x31, 0x80, 0x18, 0x1F, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FCE, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x09, 0x9F, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x21, 0x11, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x39, 0x11, 0x00, 0x09, 0x71, 0x00, 0x0B, 0x97, 0x00, 0x08, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x78, 0x44, 0x00, 0x08, 0xC6, 0x00, 0x08, 0x82, 0x00, 0x08, 0x8F, 0x00, 0x09, 0xF9, 0x80, 0x1B, 0x00, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FD1, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x20, 0x80, 0x00, 0x10, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x38, 0x84, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x17, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FD2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x78, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x80, 0x08, 0x84, 0x80, 0x19, 0x83, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0x00, 0x18, 0x84, 0x00, 0x08, 0x84, 0x00, 0x30, 0x84, 0x00, 0x18, 0x84, 0x00, 0x09, 0xFF, 0x80, 0x00, 0x14, 0x00, 0x78, 0x34, 0x00, 0x08, 0x64, 0x00, 0x08, 0xC4, 0x00, 0x09, 0x84, 0x00, 0x0B, 0x04, 0x00, 0x18, 0x1C, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FD4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x41, 0x00, 0x01, 0x22, 0x00, 0x39, 0x24, 0x00, 0x09, 0x18, 0x00, 0x09, 0x18, 0x00, 0x0A, 0x26, 0x00, 0x0A, 0x41, 0x80, 0x0C, 0x80, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FD5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x18, 0xFF, 0x00, 0x09, 0x90, 0x00, 0x33, 0x10, 0x00, 0x18, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x70, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xD0, 0x00, 0x11, 0x4C, 0x00, 0x12, 0x46, 0x00, 0x14, 0x42, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x28, 0x03, 0x00, 0x47, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FD9, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x00, 0x18, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x08, 0x00, 0x01, 0x08, 0x00, 0x78, 0x90, 0x00, 0x08, 0x50, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x88, 0x00, 0x09, 0x08, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FDA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0x11, 0x00, 0x01, 0x11, 0x00, 0x79, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FDB, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x21, 0x10, 0x00, 0x11, 0x14, 0x00, 0x17, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x71, 0x10, 0x00, 0x11, 0x14, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x12, 0x10, 0x00, 0x28, 0x13, 0x00, 0x47, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FDC, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x21, 0xFC, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x78, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x92, 0x00, 0x09, 0x12, 0x00, 0x09, 0x0E, 0x00, 0x0A, 0x00, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FDD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x00, 0x48, 0x00, 0x03, 0xFC, 0x00, 0x70, 0x40, 0x00, 0x10, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x54, 0x00, 0x10, 0x48, 0x00, 0x28, 0x43, 0x00, 0x47, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FDE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x28, 0x00, 0x73, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x28, 0x23, 0x00, 0x47, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FDF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x71, 0x04, 0x00, 0x11, 0x40, 0x00, 0x11, 0x40, 0x00, 0x11, 0x20, 0x00, 0x11, 0x10, 0x00, 0x12, 0x0E, 0x00, 0x14, 0x00, 0x00, 0x28, 0x03, 0x00, 0x47, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FE0, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x30, 0x20, 0x00, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x21, 0x00, 0x08, 0x21, 0x00, 0x30, 0x63, 0x00, 0x18, 0xC2, 0x00, 0x09, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FE3, { 0x00, 0x00, 0x00, 0x01, 0x24, 0x00, 0x31, 0x24, 0x00, 0x19, 0x24, 0x00, 0x09, 0x24, 0x00, 0x37, 0xFF, 0x80, 0x19, 0x24, 0x00, 0x09, 0x24, 0x00, 0x01, 0x24, 0x00, 0x79, 0x24, 0x00, 0x09, 0x3C, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FE4, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x19, 0xFF, 0x80, 0x0B, 0x00, 0x00, 0x36, 0x10, 0x00, 0x18, 0x93, 0x00, 0x08, 0x9D, 0x00, 0x00, 0xF1, 0x00, 0x7B, 0x91, 0x00, 0x08, 0x93, 0x00, 0x08, 0x90, 0x00, 0x08, 0x80, 0x80, 0x08, 0xC1, 0x80, 0x18, 0x7F, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x31, 0x7D, 0x00, 0x19, 0x45, 0x00, 0x09, 0x45, 0x00, 0x01, 0x45, 0x00, 0x79, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x07, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FE6, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x17, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x01, 0x29, 0x00, 0x21, 0x29, 0x00, 0x11, 0x29, 0x00, 0x01, 0x29, 0x00, 0x01, 0x29, 0x00, 0x39, 0x29, 0x00, 0x09, 0x29, 0x00, 0x0A, 0x2F, 0x00, 0x0A, 0xC9, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FE8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x40, 0x00, 0x18, 0xC2, 0x00, 0x09, 0x82, 0x00, 0x31, 0x1F, 0x00, 0x1B, 0xF1, 0x80, 0x08, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FE9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0x80, 0x00, 0x19, 0xFF, 0x80, 0x09, 0x10, 0x00, 0x03, 0x10, 0x00, 0x06, 0x10, 0x00, 0x00, 0x92, 0x00, 0x78, 0x92, 0x00, 0x08, 0x92, 0x00, 0x09, 0x93, 0x00, 0x09, 0x11, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x18, 0x70, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FEA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x11, 0x00, 0x11, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FEB, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x20, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x39, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FED, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x90, 0x00, 0x00, 0x90, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x10, 0x00, 0x12, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x38, 0x28, 0x00, 0x08, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x81, 0x80, 0x0D, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FEE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x40, 0x00, 0x18, 0x40, 0x00, 0x08, 0xFF, 0x80, 0x31, 0x90, 0x00, 0x1B, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x78, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FEF, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x31, 0x04, 0x00, 0x19, 0xE4, 0x00, 0x09, 0x24, 0x00, 0x33, 0x24, 0x00, 0x1A, 0xA4, 0x00, 0x0A, 0xA7, 0x00, 0x00, 0x65, 0x80, 0x78, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x09, 0x84, 0x00, 0x0B, 0x04, 0x00, 0x18, 0x04, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FF0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x39, 0x24, 0x00, 0x09, 0x24, 0x80, 0x09, 0x27, 0x80, 0x0A, 0x20, 0x00, 0x14, 0x20, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FF1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x80, 0x09, 0x00, 0x80, 0x31, 0x00, 0x80, 0x18, 0x40, 0x00, 0x08, 0x46, 0x00, 0x00, 0x5C, 0x00, 0x78, 0x70, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x80, 0x08, 0x61, 0x80, 0x18, 0x3F, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FF2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x38, 0x24, 0x00, 0x08, 0x42, 0x00, 0x08, 0x9F, 0x00, 0x0B, 0xE0, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFC, 0x00, 0x18, 0x08, 0x00, 0x08, 0x30, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x02, 0x00, 0x78, 0x08, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x14, 0x03, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0x02, 0x00, 0x31, 0x7A, 0x00, 0x19, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x01, 0x4A, 0x00, 0x79, 0x4A, 0x00, 0x09, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x31, 0x7D, 0x00, 0x19, 0x01, 0x00, 0x09, 0x7D, 0x00, 0x01, 0x45, 0x00, 0x79, 0x45, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0x07, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FF6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x08, 0x20, 0x00, 0x30, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x01, 0xFF, 0x00, 0x7B, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x18, 0x47, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FF7, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x01, 0x24, 0x00, 0x00, 0xA8, 0x00, 0x20, 0x20, 0x00, 0x17, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00, 0x70, 0x00, 0x38, 0xA8, 0x00, 0x09, 0x24, 0x00, 0x0A, 0x22, 0x00, 0x0C, 0x21, 0x80, 0x0C, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FF8, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x30, 0xC6, 0x00, 0x18, 0x44, 0x00, 0x09, 0xFF, 0x00, 0x30, 0x44, 0x00, 0x18, 0x44, 0x00, 0x08, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x19, 0x84, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FF9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x24, 0x00, 0x10, 0xA5, 0x00, 0x00, 0xA5, 0x00, 0x01, 0x24, 0x80, 0x01, 0x24, 0x80, 0x3A, 0x44, 0x80, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x0B, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x18, 0x48, 0x00, 0x08, 0x48, 0x00, 0x30, 0x48, 0x00, 0x1B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x02, 0x49, 0x00, 0x7A, 0xC9, 0x00, 0x0B, 0x8F, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FFB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x7C, 0x00, 0x18, 0xC4, 0x00, 0x0B, 0x8C, 0x00, 0x30, 0x58, 0x00, 0x18, 0x30, 0x00, 0x08, 0xE4, 0x00, 0x03, 0x8F, 0x80, 0x78, 0x18, 0x80, 0x08, 0x71, 0x80, 0x08, 0x0B, 0x00, 0x08, 0x06, 0x00, 0x08, 0x1C, 0x00, 0x18, 0xF0, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x8FFD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x21, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x39, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x8FFE, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x33, 0xE9, 0x00, 0x18, 0x89, 0x00, 0x08, 0x89, 0x00, 0x31, 0xE9, 0x00, 0x19, 0x29, 0x00, 0x09, 0x29, 0x00, 0x03, 0xA9, 0x00, 0x7A, 0xE9, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC1, 0x00, 0x08, 0x81, 0x00, 0x09, 0x81, 0x00, 0x1B, 0x07, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9000, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x91, 0x00, 0x38, 0x8A, 0x00, 0x08, 0x84, 0x00, 0x08, 0xBA, 0x00, 0x0B, 0xC1, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9001, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x38, 0x00, 0x00, 0x04, 0x00, 0x00, 0x82, 0x00, 0x21, 0x01, 0x80, 0x16, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x38, 0x28, 0x00, 0x08, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9002, { 0x00, 0x00, 0x00, 0x10, 0x1E, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x39, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9003, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x08, 0x49, 0x00, 0x00, 0x4A, 0x00, 0x02, 0x4C, 0x00, 0x21, 0x48, 0x00, 0x10, 0xC8, 0x00, 0x00, 0x4C, 0x00, 0x00, 0xCA, 0x00, 0x01, 0x49, 0x00, 0x3A, 0x48, 0x00, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0A, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9004, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x7E, 0x00, 0x08, 0xC2, 0x00, 0x31, 0xA4, 0x00, 0x18, 0x18, 0x00, 0x08, 0x6E, 0x00, 0x03, 0xC3, 0x80, 0x78, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x34, 0x08, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9005, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0x7E, 0x00, 0x01, 0x42, 0x00, 0x39, 0x42, 0x00, 0x09, 0x42, 0x00, 0x0A, 0x7E, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9006, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x08, 0x44, 0x00, 0x00, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x39, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x21, 0x00, 0x08, 0x40, 0x00, 0x0C, 0x80, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9008, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x03, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x12, 0x01, 0x00, 0x02, 0x79, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x79, 0x00, 0x3A, 0x49, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x03, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9009, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x21, 0x20, 0x00, 0x19, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x02, 0x22, 0x00, 0x7B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x16, 0x00, 0x00, 0x22, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x900A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x08, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x88, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x72, 0x2C, 0x00, 0x13, 0xAA, 0x00, 0x1E, 0x4A, 0x00, 0x12, 0x49, 0x00, 0x12, 0x89, 0x00, 0x12, 0x28, 0x00, 0x16, 0x10, 0x00, 0x2A, 0x00, 0x00, 0x44, 0x03, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x900B, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x08, 0x12, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x13, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x900C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x01, 0x00, 0x09, 0x01, 0x00, 0x01, 0xF9, 0x00, 0x79, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0xF9, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x900D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x03, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x900E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x28, 0x00, 0x08, 0x28, 0x00, 0x31, 0xFF, 0x00, 0x19, 0x29, 0x00, 0x09, 0x29, 0x00, 0x01, 0x6F, 0x00, 0x79, 0xC1, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x900F, { 0x00, 0x00, 0x00, 0x10, 0x1E, 0x00, 0x09, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x20, 0x38, 0x00, 0x10, 0x54, 0x00, 0x01, 0x92, 0x00, 0x06, 0x11, 0x80, 0x01, 0xFC, 0x00, 0x38, 0x48, 0x00, 0x08, 0x9F, 0x80, 0x08, 0x80, 0x80, 0x09, 0x01, 0x00, 0x0E, 0x06, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9010, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x21, 0x00, 0x20, 0x52, 0x00, 0x11, 0x9C, 0x00, 0x06, 0x2C, 0x00, 0x00, 0xCA, 0x00, 0x03, 0x1A, 0x00, 0x38, 0x29, 0x00, 0x08, 0xC9, 0x00, 0x0B, 0x08, 0x80, 0x08, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9011, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x08, 0x12, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x01, 0x11, 0x00, 0x00, 0x92, 0x00, 0x00, 0x54, 0x00, 0x00, 0x18, 0x00, 0x38, 0x34, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x0B, 0x11, 0x00, 0x0C, 0x30, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9012, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x21, 0x14, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x00, 0x44, 0x00, 0x07, 0xFC, 0x00, 0x74, 0x40, 0x00, 0x14, 0x44, 0x00, 0x17, 0xFE, 0x00, 0x10, 0xC4, 0x00, 0x11, 0x44, 0x00, 0x12, 0x54, 0x00, 0x14, 0x48, 0x00, 0x28, 0x40, 0x00, 0x44, 0x43, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9013, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x20, 0x1E, 0x00, 0x33, 0xF0, 0x00, 0x12, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x72, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x12, 0x91, 0x00, 0x14, 0x93, 0x00, 0x30, 0x10, 0x00, 0x28, 0x00, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9014, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x28, 0x00, 0x00, 0x44, 0x00, 0x00, 0x82, 0x00, 0x23, 0x01, 0x80, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3B, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0A, 0x30, 0x80, 0x14, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9015, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x20, 0x92, 0x00, 0x11, 0x24, 0x00, 0x00, 0x92, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9016, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x24, 0x88, 0x00, 0x35, 0x08, 0x80, 0x12, 0x29, 0x80, 0x22, 0x2B, 0x00, 0x35, 0x6A, 0x00, 0x11, 0x48, 0x00, 0x01, 0x1C, 0x00, 0x73, 0x14, 0x00, 0x15, 0x14, 0x00, 0x11, 0x36, 0x00, 0x11, 0x22, 0x00, 0x11, 0x63, 0x00, 0x36, 0xC1, 0x80, 0x28, 0x00, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9017, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x38, 0x84, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9018, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x30, 0x42, 0x00, 0x18, 0xC2, 0x00, 0x08, 0x9F, 0x00, 0x33, 0xF1, 0x80, 0x18, 0x80, 0x00, 0x09, 0xFF, 0x00, 0x03, 0x10, 0x00, 0x78, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x08, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x1B, 0x83, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9019, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x901A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x00, 0x48, 0x00, 0x20, 0x30, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x13, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x901B, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x31, 0x5F, 0x00, 0x18, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x31, 0xC4, 0x00, 0x19, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x00, 0x5F, 0x00, 0x78, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x19, 0xBF, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x901D, { 0x00, 0x00, 0x00, 0x11, 0x06, 0x00, 0x09, 0x18, 0x00, 0x01, 0x10, 0x00, 0x07, 0xD0, 0x00, 0x21, 0x1F, 0x80, 0x11, 0x12, 0x00, 0x01, 0x72, 0x00, 0x01, 0x92, 0x00, 0x07, 0x12, 0x00, 0x39, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x00, 0x0B, 0x22, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x901E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x38, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x901F, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x18, 0x00, 0x08, 0x34, 0x00, 0x08, 0x52, 0x00, 0x08, 0x91, 0x00, 0x0D, 0x10, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9020, { 0x00, 0x00, 0x00, 0x10, 0x50, 0x00, 0x08, 0x50, 0x00, 0x00, 0x90, 0x00, 0x01, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x10, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x39, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9021, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x42, 0x00, 0x00, 0x8F, 0x00, 0x23, 0xF8, 0x80, 0x10, 0x48, 0x80, 0x00, 0x8F, 0x80, 0x01, 0x20, 0x00, 0x06, 0x3F, 0x00, 0x00, 0x42, 0x00, 0x38, 0xA4, 0x00, 0x09, 0x18, 0x00, 0x0E, 0x14, 0x00, 0x08, 0x63, 0x80, 0x0D, 0x80, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9022, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x42, 0x00, 0x00, 0xA4, 0x00, 0x23, 0x18, 0x00, 0x10, 0x2C, 0x00, 0x00, 0xC3, 0x80, 0x03, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9023, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9026, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x0B, 0xDE, 0x00, 0x02, 0x52, 0x00, 0x02, 0x52, 0x00, 0x7B, 0x5A, 0x00, 0x0A, 0xD6, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0xD6, 0x00, 0x0A, 0x52, 0x00, 0x14, 0x01, 0x00, 0x23, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9027, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0xC6, 0x00, 0x19, 0x83, 0x00, 0x08, 0x10, 0x00, 0x30, 0x38, 0x00, 0x18, 0x6C, 0x00, 0x08, 0xC6, 0x00, 0x03, 0x83, 0x80, 0x78, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9028, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x30, 0x92, 0x00, 0x18, 0x92, 0x00, 0x09, 0xD7, 0x00, 0x01, 0x55, 0x00, 0x7B, 0x39, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x1B, 0x11, 0x80, 0x34, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9029, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x48, 0x00, 0x31, 0x86, 0x00, 0x1F, 0x23, 0x80, 0x08, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x78, 0xA4, 0x00, 0x08, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x19, 0x04, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x902A, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x30, 0x44, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x30, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x78, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x902C, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x30, 0xC3, 0x00, 0x18, 0x82, 0x00, 0x0B, 0xEF, 0x80, 0x30, 0x82, 0x00, 0x18, 0x82, 0x00, 0x08, 0xB2, 0x00, 0x00, 0xC2, 0x00, 0x7B, 0x8F, 0x80, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x09, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x902D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x0A, 0x00, 0x80, 0x32, 0x00, 0x80, 0x18, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x82, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x18, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x902E, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x12, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x12, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x01, 0x12, 0x00, 0x38, 0x94, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x09, 0x92, 0x00, 0x0C, 0x31, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x902F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x30, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x30, 0x04, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x01, 0x93, 0x00, 0x78, 0xD6, 0x00, 0x08, 0x38, 0x00, 0x08, 0xDC, 0x00, 0x09, 0x96, 0x00, 0x0F, 0x13, 0x00, 0x18, 0x70, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9031, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x22, 0xFD, 0x00, 0x12, 0x11, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x02, 0x7D, 0x00, 0x3A, 0x45, 0x00, 0x0A, 0x45, 0x00, 0x0A, 0x7D, 0x00, 0x0A, 0x03, 0x00, 0x0C, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9032, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x08, 0x44, 0x00, 0x00, 0x88, 0x00, 0x00, 0xFF, 0x00, 0x21, 0x88, 0x00, 0x11, 0x88, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x38, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x0C, 0x80, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9033, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x20, 0x00, 0x08, 0x42, 0x00, 0x30, 0xFF, 0x00, 0x1B, 0x81, 0x80, 0x08, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x79, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x19, 0x06, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9034, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x18, 0x1F, 0x80, 0x08, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x78, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9035, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x28, 0x00, 0x00, 0x48, 0x80, 0x00, 0x8F, 0x80, 0x03, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9036, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x30, 0x1C, 0x00, 0x19, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x54, 0x00, 0x08, 0xD6, 0x00, 0x03, 0x93, 0x80, 0x78, 0x20, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x09, 0xE4, 0x00, 0x08, 0x3E, 0x00, 0x19, 0xE3, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9037, { 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x31, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x01, 0xFF, 0x80, 0x79, 0x24, 0x80, 0x0B, 0x24, 0x80, 0x0E, 0x6C, 0x80, 0x08, 0xC8, 0x80, 0x09, 0x99, 0x80, 0x18, 0x37, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9038, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x00, 0xFC, 0x00, 0x01, 0x08, 0x00, 0x22, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x09, 0x0F, 0x80, 0x0E, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9039, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x00, 0x44, 0x00, 0x7B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x903B, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x42, 0x00, 0x70, 0x80, 0x00, 0x11, 0xFC, 0x00, 0x13, 0x04, 0x00, 0x14, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x60, 0x00, 0x13, 0x80, 0x00, 0x28, 0x03, 0x00, 0x47, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x903C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x903E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x48, 0x00, 0x01, 0x86, 0x00, 0x26, 0xFD, 0x80, 0x10, 0x00, 0x00, 0x03, 0xC9, 0x00, 0x02, 0x49, 0x00, 0x03, 0xD2, 0x00, 0x3A, 0x64, 0x00, 0x0B, 0xD2, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0xC9, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x903F, { 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x31, 0xFE, 0x00, 0x18, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x79, 0xFF, 0x80, 0x0B, 0x24, 0x80, 0x0E, 0x6C, 0x80, 0x08, 0xC8, 0x80, 0x09, 0x99, 0x80, 0x18, 0x37, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9041, { 0x00, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x09, 0xF0, 0x00, 0x01, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x11, 0x10, 0x00, 0x01, 0x7F, 0x00, 0x01, 0x41, 0x00, 0x39, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0E, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9042, { 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x08, 0x04, 0x00, 0x01, 0x02, 0x00, 0x06, 0xFD, 0x80, 0x20, 0x60, 0x00, 0x10, 0x92, 0x00, 0x01, 0x3C, 0x00, 0x06, 0x48, 0x00, 0x00, 0x9C, 0x00, 0x3B, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x09, 0x88, 0x80, 0x08, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9043, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x80, 0x18, 0x44, 0x00, 0x08, 0x38, 0x00, 0x30, 0x44, 0x00, 0x19, 0xFF, 0x80, 0x09, 0x02, 0x00, 0x01, 0x0E, 0x00, 0x79, 0x79, 0x00, 0x09, 0x03, 0x00, 0x09, 0x0E, 0x80, 0x09, 0x79, 0x80, 0x09, 0x07, 0x00, 0x1A, 0x7C, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9044, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0x11, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x30, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x00, 0x20, 0x00, 0x79, 0xFF, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x09, 0x49, 0x00, 0x19, 0x4B, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x00, 0x1A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x82, 0x00, 0x02, 0x44, 0x00, 0x7A, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9047, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x39, 0x15, 0x00, 0x09, 0x1D, 0x00, 0x09, 0xE3, 0x00, 0x09, 0x01, 0x00, 0x09, 0x03, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9049, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x20, 0x00, 0x18, 0x3F, 0x00, 0x08, 0x20, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x79, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x09, 0x86, 0x00, 0x1B, 0x03, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x904A, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x88, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x90, 0x00, 0x10, 0xA0, 0x00, 0x01, 0xEF, 0x00, 0x01, 0x22, 0x00, 0x01, 0x24, 0x00, 0x39, 0x3F, 0x80, 0x0A, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x904B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x10, 0x80, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x904C, { 0x00, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x31, 0x24, 0x80, 0x19, 0x24, 0x80, 0x09, 0xE7, 0x80, 0x30, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x78, 0x40, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x06, 0x00, 0x18, 0x1C, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x904D, { 0x00, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x09, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x24, 0x80, 0x39, 0xFF, 0x80, 0x0B, 0x24, 0x80, 0x0B, 0x24, 0x80, 0x0D, 0x25, 0x80, 0x14, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x904E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x20, 0x92, 0x00, 0x10, 0x92, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x02, 0x7C, 0x80, 0x3A, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x7C, 0x80, 0x0A, 0x00, 0x80, 0x0A, 0x03, 0x80, 0x14, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x904F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFE, 0x00, 0x19, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x00, 0xFF, 0x00, 0x79, 0x91, 0x00, 0x0B, 0x39, 0x00, 0x09, 0x6D, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFB, 0x00, 0x18, 0x06, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9050, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xEF, 0x00, 0x02, 0x21, 0x00, 0x02, 0x21, 0x00, 0x23, 0xEF, 0x00, 0x12, 0x00, 0x00, 0x02, 0x3F, 0x00, 0x03, 0xD1, 0x00, 0x02, 0x0A, 0x00, 0x3A, 0x04, 0x00, 0x0B, 0xCA, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x60, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9051, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9052, { 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x31, 0x83, 0x00, 0x1B, 0x01, 0x80, 0x0A, 0xFE, 0x80, 0x30, 0x28, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x29, 0x00, 0x01, 0x29, 0x00, 0x79, 0x6F, 0x00, 0x09, 0xC1, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9053, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x48, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x20, 0x40, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x39, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9054, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x00, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9055, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0xFE, 0x00, 0x38, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9056, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x19, 0xFF, 0x00, 0x09, 0x45, 0x00, 0x01, 0x29, 0x00, 0x79, 0x7D, 0x00, 0x09, 0x11, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x13, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9057, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x21, 0xFE, 0x00, 0x19, 0x24, 0x00, 0x09, 0xFC, 0x00, 0x00, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x78, 0x04, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x08, 0x50, 0x00, 0x08, 0x8C, 0x00, 0x15, 0x04, 0x00, 0x22, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9058, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x30, 0x44, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x78, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x82, 0x00, 0x18, 0x86, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9059, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x40, 0x00, 0x00, 0xFE, 0x00, 0x01, 0x24, 0x00, 0x26, 0x98, 0x00, 0x10, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x08, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x0C, 0x81, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x905B, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x33, 0xDF, 0x80, 0x1A, 0x04, 0x80, 0x0A, 0x44, 0x80, 0x32, 0x64, 0x80, 0x1B, 0xA9, 0x80, 0x0A, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x79, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x905C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xE7, 0x80, 0x00, 0x3C, 0x00, 0x00, 0x45, 0x00, 0x20, 0x9A, 0x00, 0x10, 0x8C, 0x00, 0x00, 0xC5, 0x00, 0x01, 0xBF, 0x80, 0x06, 0x84, 0x80, 0x38, 0x95, 0x00, 0x08, 0x94, 0x80, 0x08, 0xA4, 0x80, 0x09, 0x84, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x905D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x01, 0x22, 0x00, 0x02, 0x21, 0x00, 0x00, 0x20, 0x00, 0x38, 0xA4, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x21, 0x00, 0x08, 0x60, 0x00, 0x14, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x905E, { 0x00, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x0B, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x02, 0x3F, 0x00, 0x22, 0x20, 0x00, 0x12, 0xFF, 0x80, 0x02, 0xBD, 0x00, 0x02, 0xE1, 0x00, 0x02, 0xBF, 0x00, 0x3A, 0x80, 0x00, 0x0A, 0xBC, 0x00, 0x0C, 0xA4, 0x80, 0x09, 0x47, 0x80, 0x0C, 0x80, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9060, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x28, 0x80, 0x08, 0xC9, 0x00, 0x0F, 0x46, 0x00, 0x08, 0x7A, 0x00, 0x0D, 0xC1, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9061, { 0x00, 0x00, 0x00, 0x12, 0x20, 0x00, 0x09, 0x2F, 0x00, 0x01, 0x49, 0x00, 0x07, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x12, 0xAF, 0x00, 0x02, 0xA9, 0x00, 0x02, 0xA9, 0x00, 0x03, 0xEF, 0x00, 0x3A, 0xA9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x09, 0x13, 0x00, 0x0E, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9062, { 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x31, 0x02, 0x00, 0x19, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x31, 0x7A, 0x00, 0x18, 0x00, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0xC3, 0x00, 0x7B, 0x4D, 0x00, 0x0E, 0x59, 0x00, 0x08, 0xC3, 0x00, 0x0B, 0x4D, 0x00, 0x0E, 0x59, 0x00, 0x19, 0xC7, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9063, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x15, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9065, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x31, 0xFC, 0x00, 0x18, 0x00, 0x00, 0x09, 0x21, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0xFF, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9066, { 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x31, 0x11, 0x00, 0x1B, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x79, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x18, 0x82, 0x00, 0x35, 0x01, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9067, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x31, 0xFF, 0x00, 0x18, 0x82, 0x00, 0x08, 0x44, 0x00, 0x33, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x10, 0x00, 0x34, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9068, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x21, 0x08, 0x00, 0x37, 0xC8, 0x00, 0x11, 0x1F, 0x80, 0x27, 0xD1, 0x00, 0x31, 0x09, 0x00, 0x1F, 0xEB, 0x00, 0x02, 0x0A, 0x00, 0x73, 0xCE, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x4E, 0x00, 0x12, 0x4B, 0x00, 0x34, 0xD9, 0x80, 0x28, 0x00, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9069, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x44, 0x00, 0x20, 0x28, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0x7D, 0x00, 0x09, 0x45, 0x00, 0x09, 0x7D, 0x00, 0x09, 0x03, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x906C, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x30, 0x88, 0x00, 0x1B, 0xE8, 0x00, 0x08, 0x9F, 0x80, 0x33, 0xF4, 0x80, 0x1A, 0xA5, 0x00, 0x0A, 0xA4, 0x00, 0x03, 0xE4, 0x00, 0x78, 0x8E, 0x00, 0x09, 0xCA, 0x00, 0x09, 0xAA, 0x00, 0x0A, 0xAB, 0x00, 0x0C, 0x99, 0x00, 0x18, 0xB1, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x906D, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x48, 0x00, 0x03, 0xFF, 0x00, 0x22, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x19, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x14, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x906E, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x08, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x21, 0x22, 0x00, 0x11, 0xFF, 0x80, 0x01, 0x22, 0x00, 0x01, 0x22, 0x00, 0x01, 0x3E, 0x00, 0x39, 0x00, 0x00, 0x09, 0xA5, 0x00, 0x0A, 0x92, 0x80, 0x0A, 0x92, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x906F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xBF, 0x00, 0x02, 0x88, 0x00, 0x02, 0x90, 0x00, 0x23, 0xA9, 0x00, 0x12, 0xCE, 0x00, 0x02, 0x94, 0x00, 0x02, 0xA4, 0x00, 0x3B, 0xCE, 0x00, 0x0A, 0x96, 0x00, 0x0A, 0xA5, 0x00, 0x0C, 0xC5, 0x00, 0x09, 0x98, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9070, { 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0x30, 0xAA, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0xAA, 0x00, 0x31, 0xAA, 0x00, 0x1B, 0x3B, 0x80, 0x08, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x19, 0x13, 0x00, 0x34, 0x10, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9072, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x01, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x11, 0xEB, 0x80, 0x01, 0x08, 0x00, 0x01, 0xEB, 0x80, 0x01, 0x28, 0x00, 0x39, 0x7F, 0x00, 0x09, 0x88, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9074, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x30, 0x92, 0x00, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x30, 0x54, 0x00, 0x18, 0xD6, 0x00, 0x0B, 0x93, 0x80, 0x00, 0x90, 0x00, 0x79, 0xE2, 0x00, 0x09, 0x2F, 0x80, 0x0A, 0xAA, 0x00, 0x08, 0x6A, 0x00, 0x08, 0xDF, 0x80, 0x1B, 0x82, 0x00, 0x34, 0x02, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9075, { 0x00, 0x00, 0x00, 0x10, 0x38, 0x00, 0x08, 0x84, 0x00, 0x01, 0x02, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x03, 0x8F, 0x00, 0x03, 0xFF, 0x00, 0x3A, 0x01, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x14, 0x4C, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9076, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x30, 0x82, 0x00, 0x1B, 0xEF, 0x80, 0x08, 0x82, 0x00, 0x00, 0xE2, 0x00, 0x7B, 0x8F, 0x80, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0xC4, 0x80, 0x1B, 0x83, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9077, { 0x00, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x08, 0x48, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x23, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x07, 0xFF, 0x80, 0x00, 0xCC, 0x00, 0x07, 0x03, 0x80, 0x39, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x00, 0x80, 0x09, 0xFF, 0x80, 0x14, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9078, { 0x00, 0x00, 0x00, 0x21, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x01, 0xEF, 0x00, 0x01, 0x08, 0x00, 0x21, 0x28, 0x80, 0x11, 0xEF, 0x80, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x01, 0xFF, 0x00, 0x38, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x0C, 0x82, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9079, { 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x30, 0x44, 0x00, 0x18, 0x28, 0x00, 0x0B, 0xFF, 0x00, 0x30, 0x52, 0x00, 0x18, 0x94, 0x00, 0x09, 0x30, 0x00, 0x03, 0xFF, 0x00, 0x7A, 0x49, 0x00, 0x0A, 0x89, 0x00, 0x0B, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x79, 0x00, 0x1A, 0x03, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x907A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x39, 0xFF, 0x00, 0x09, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x09, 0xFF, 0x00, 0x0D, 0x01, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x907C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x29, 0x80, 0x11, 0xC6, 0x00, 0x06, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0E, 0x70, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x907D, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x10, 0x3E, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFF, 0x80, 0x22, 0x2E, 0x00, 0x13, 0xF0, 0x00, 0x02, 0x3F, 0x00, 0x02, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x3E, 0x72, 0x00, 0x0A, 0x9C, 0x00, 0x0B, 0x2C, 0x00, 0x0A, 0x4B, 0x80, 0x0E, 0xB0, 0x00, 0x11, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x907F, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x0B, 0xC4, 0x00, 0x02, 0x44, 0x00, 0x02, 0x7F, 0x80, 0x22, 0x51, 0x00, 0x13, 0xCA, 0x00, 0x02, 0x0A, 0x00, 0x02, 0x3F, 0x80, 0x3B, 0xC4, 0x00, 0x0A, 0x44, 0x00, 0x0A, 0x5F, 0x00, 0x0A, 0x44, 0x00, 0x0B, 0xC4, 0x00, 0x0E, 0x04, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9080, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x0B, 0xE4, 0x00, 0x02, 0x28, 0x00, 0x03, 0xEF, 0x80, 0x22, 0x31, 0x00, 0x13, 0xF1, 0x00, 0x00, 0x92, 0x00, 0x00, 0xAA, 0x00, 0x3B, 0xE4, 0x00, 0x08, 0xA4, 0x00, 0x09, 0x2A, 0x00, 0x0A, 0x29, 0x00, 0x0D, 0xD0, 0x80, 0x0C, 0x20, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9081, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x13, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x0A, 0x12, 0x80, 0x0A, 0x1F, 0x80, 0x0A, 0xE0, 0x80, 0x0E, 0x01, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9082, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x09, 0x0F, 0x00, 0x01, 0xE5, 0x00, 0x02, 0x49, 0x00, 0x24, 0x93, 0x00, 0x1B, 0xE4, 0x00, 0x02, 0xB4, 0x00, 0x03, 0xFF, 0x00, 0x02, 0xA4, 0x00, 0x3B, 0xE4, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x24, 0x00, 0x0A, 0x64, 0x00, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9083, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x48, 0x80, 0x00, 0x89, 0x00, 0x23, 0x4F, 0x00, 0x10, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x62, 0x00, 0x00, 0x94, 0x00, 0x3B, 0x28, 0x00, 0x08, 0x5C, 0x00, 0x09, 0xAA, 0x00, 0x08, 0x49, 0x80, 0x0D, 0xB0, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9084, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x03, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x3B, 0xFF, 0x00, 0x08, 0x71, 0x00, 0x08, 0xAA, 0x00, 0x09, 0x26, 0x00, 0x0E, 0x21, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9085, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x19, 0x01, 0x00, 0x09, 0x7D, 0x00, 0x31, 0x45, 0x00, 0x19, 0x7D, 0x00, 0x09, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x78, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x1B, 0xFF, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9087, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x23, 0xFF, 0x80, 0x13, 0x5A, 0x80, 0x02, 0x94, 0x80, 0x03, 0x5A, 0x80, 0x03, 0x50, 0x80, 0x3A, 0x9A, 0x80, 0x0B, 0x54, 0x80, 0x0A, 0x1A, 0x80, 0x0A, 0x11, 0x80, 0x0C, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9088, { 0x00, 0x00, 0x00, 0x21, 0x04, 0x00, 0x11, 0x44, 0x00, 0x03, 0x48, 0x00, 0x04, 0x9F, 0x00, 0x2D, 0x91, 0x00, 0x12, 0x5F, 0x00, 0x04, 0xD1, 0x00, 0x01, 0x5F, 0x00, 0x02, 0x4A, 0x00, 0x38, 0xCA, 0x00, 0x09, 0x4A, 0x00, 0x0A, 0x52, 0x80, 0x09, 0xA3, 0x80, 0x0C, 0x40, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9089, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x30, 0x82, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x03, 0xFF, 0x80, 0x7A, 0x00, 0x80, 0x0A, 0x1C, 0x80, 0x08, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x0B, 0x83, 0x80, 0x18, 0xFE, 0x00, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x908A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x52, 0x80, 0x39, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x42, 0x00, 0x15, 0x8C, 0x00, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x908B, { 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x32, 0x22, 0x00, 0x19, 0x11, 0x00, 0x09, 0xFE, 0x00, 0x31, 0x4A, 0x00, 0x19, 0x32, 0x00, 0x09, 0x4A, 0x00, 0x01, 0xFE, 0x00, 0x78, 0x00, 0x00, 0x09, 0xB2, 0x00, 0x09, 0x6A, 0x00, 0x09, 0xB2, 0x80, 0x09, 0x6A, 0x80, 0x19, 0xFA, 0x80, 0x35, 0x21, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x908C, { 0x00, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x27, 0x88, 0x00, 0x31, 0x1F, 0x80, 0x17, 0xF2, 0x80, 0x23, 0x06, 0x80, 0x35, 0xCD, 0x80, 0x19, 0x01, 0x00, 0x00, 0x77, 0x00, 0x71, 0xDC, 0x00, 0x1F, 0x07, 0x80, 0x10, 0x20, 0x00, 0x17, 0x27, 0x00, 0x10, 0xF8, 0x00, 0x33, 0xAF, 0x80, 0x2E, 0x20, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x908E, { 0x00, 0x00, 0x00, 0x01, 0xE1, 0x80, 0x23, 0x3F, 0x00, 0x36, 0xA4, 0x00, 0x11, 0x44, 0x00, 0x20, 0x89, 0x00, 0x33, 0x9A, 0x00, 0x10, 0x04, 0x00, 0x07, 0xC9, 0x00, 0x70, 0x1F, 0x80, 0x13, 0x82, 0x80, 0x10, 0x0A, 0x00, 0x17, 0xCA, 0x80, 0x14, 0x52, 0x80, 0x37, 0xC2, 0x00, 0x28, 0x00, 0x00, 0x67, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x908F, { 0x00, 0x00, 0x00, 0x20, 0x84, 0x00, 0x17, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x07, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x17, 0xFF, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x94, 0x00, 0x03, 0x3F, 0x00, 0x3F, 0xF4, 0x00, 0x11, 0x1F, 0x00, 0x15, 0x54, 0x00, 0x15, 0x5F, 0x80, 0x19, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9090, { 0x00, 0x00, 0x00, 0x03, 0xEF, 0x80, 0x30, 0x00, 0x00, 0x1B, 0xEF, 0x80, 0x0A, 0x28, 0x80, 0x32, 0xAA, 0x80, 0x18, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x49, 0x00, 0x7B, 0xFF, 0x00, 0x0A, 0x88, 0x00, 0x0A, 0xEF, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0xE8, 0x80, 0x19, 0x87, 0x80, 0x34, 0x00, 0x00, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9091, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9093, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0xA1, 0x00, 0x10, 0xA2, 0x00, 0x09, 0x22, 0x00, 0x09, 0x24, 0x00, 0x06, 0x28, 0x00, 0x02, 0x26, 0x00, 0x06, 0x21, 0x00, 0x05, 0x21, 0x00, 0x09, 0x21, 0x00, 0x08, 0xB1, 0x00, 0x10, 0xAA, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9095, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x84, 0x00, 0x21, 0x08, 0x00, 0x10, 0x84, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9097, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x04, 0x10, 0x80, 0x04, 0x11, 0x80, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x13, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9098, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x04, 0x10, 0x80, 0x04, 0x11, 0x80, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x13, 0x80, 0x04, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9099, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xF2, 0x00, 0x10, 0x12, 0x00, 0x10, 0x11, 0x00, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x1F, 0xD7, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x909B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x11, 0x80, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x04, 0x12, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x07, 0xD0, 0x80, 0x7C, 0x10, 0x80, 0x00, 0x13, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x909D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x3E, 0x00, 0x1F, 0xE2, 0x00, 0x10, 0x22, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x10, 0x28, 0x00, 0x10, 0x24, 0x00, 0x10, 0x22, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x31, 0x00, 0x20, 0x2A, 0x00, 0x20, 0x24, 0x00, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A0, { 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0x1F, 0x80, 0x11, 0x90, 0x80, 0x30, 0x91, 0x80, 0x60, 0xD1, 0x00, 0x00, 0x13, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x91, 0x00, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x18, 0x90, 0x80, 0x10, 0x93, 0x80, 0x31, 0x90, 0x00, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x10, 0x80, 0x7F, 0xD1, 0x80, 0x08, 0x11, 0x00, 0x08, 0x13, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x91, 0x00, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x18, 0x90, 0x80, 0x10, 0x93, 0x80, 0x31, 0x90, 0x00, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xEF, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x89, 0x00, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x3F, 0xF8, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x04, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x8B, 0x00, 0x10, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x9F, 0x00, 0x04, 0x91, 0x00, 0x04, 0x92, 0x00, 0x04, 0x92, 0x00, 0x1F, 0xD1, 0x00, 0x04, 0x90, 0x80, 0x04, 0x90, 0x80, 0x04, 0x90, 0x80, 0x1F, 0xD0, 0x80, 0x04, 0x90, 0x80, 0x04, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x97, 0x00, 0x13, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x10, 0x80, 0x04, 0x11, 0x80, 0x04, 0x11, 0x00, 0x7F, 0xF3, 0x00, 0x44, 0x52, 0x00, 0x46, 0x91, 0x00, 0x06, 0x10, 0x80, 0x06, 0x10, 0x80, 0x06, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x12, 0x53, 0x80, 0x22, 0x90, 0x00, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x24, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x07, 0xA1, 0x00, 0x3C, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x2E, 0x00, 0x08, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9F, 0x80, 0x3C, 0x10, 0x80, 0x04, 0x11, 0x00, 0x04, 0x12, 0x00, 0x24, 0x91, 0x00, 0x24, 0x90, 0x80, 0x24, 0x90, 0x80, 0x24, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x24, 0x90, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x53, 0x00, 0x07, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x91, 0x00, 0x08, 0x92, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xF0, 0x80, 0x01, 0x90, 0x80, 0x01, 0x90, 0x80, 0x02, 0x90, 0x80, 0x02, 0x90, 0x80, 0x04, 0x90, 0x80, 0x08, 0x90, 0x80, 0x10, 0x97, 0x00, 0x21, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90AC, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x09, 0x1E, 0x00, 0x1F, 0x92, 0x00, 0x11, 0x12, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x15, 0x18, 0x00, 0x12, 0x14, 0x00, 0x10, 0x52, 0x00, 0x1F, 0xF1, 0x00, 0x00, 0x51, 0x00, 0x02, 0x51, 0x00, 0x7F, 0x5A, 0x00, 0x00, 0x54, 0x00, 0x01, 0x50, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90AE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xBE, 0x00, 0x3F, 0xE2, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA8, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xB1, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0xA4, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90AF, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xF2, 0x00, 0x08, 0x92, 0x00, 0x08, 0x91, 0x00, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x0F, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x90, 0x80, 0x08, 0x93, 0x00, 0x0F, 0x90, 0x00, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x0F, 0x80, 0x04, 0x08, 0x80, 0x08, 0x88, 0x80, 0x08, 0x49, 0x00, 0x13, 0xE8, 0x80, 0x3C, 0x28, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x1F, 0xE8, 0x80, 0x10, 0x28, 0x80, 0x10, 0x28, 0x80, 0x10, 0x28, 0x80, 0x10, 0x2B, 0x80, 0x1F, 0xE8, 0x00, 0x10, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B1, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x1F, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x1F, 0xD0, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x13, 0xD7, 0x00, 0x3C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x02, 0x10, 0x80, 0x00, 0x11, 0x80, 0x08, 0x91, 0x00, 0x08, 0x93, 0x00, 0x09, 0x12, 0x00, 0x29, 0x11, 0x00, 0x2A, 0x90, 0x80, 0x4A, 0x50, 0x80, 0x4C, 0x50, 0x80, 0x08, 0x10, 0x80, 0x14, 0x10, 0x80, 0x24, 0x53, 0x80, 0x42, 0x50, 0x00, 0x01, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x80, 0x01, 0x10, 0x80, 0x03, 0x11, 0x80, 0x02, 0x11, 0x00, 0x06, 0x13, 0x00, 0x0C, 0x12, 0x00, 0x0D, 0x11, 0x00, 0x14, 0x90, 0x80, 0x24, 0x50, 0x80, 0x44, 0x50, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x13, 0x80, 0x7F, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x04, 0x10, 0x80, 0x04, 0x11, 0x80, 0x04, 0x11, 0x00, 0x7F, 0xD3, 0x00, 0x44, 0x52, 0x00, 0x44, 0x51, 0x00, 0x4A, 0x50, 0x80, 0x4A, 0x50, 0x80, 0x51, 0x50, 0x80, 0x51, 0x50, 0x80, 0x60, 0xD0, 0x80, 0x40, 0x53, 0x80, 0x40, 0x50, 0x00, 0x41, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x04, 0x51, 0x00, 0x04, 0x51, 0x00, 0x08, 0x52, 0x00, 0x08, 0x51, 0x00, 0x10, 0x90, 0x80, 0x23, 0x10, 0x80, 0x00, 0x10, 0x80, 0x1F, 0xD0, 0x80, 0x10, 0x50, 0x80, 0x10, 0x50, 0x80, 0x10, 0x50, 0x80, 0x10, 0x57, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B6, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x1F, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x11, 0x80, 0x7A, 0xD1, 0x00, 0x0B, 0x13, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x1A, 0x50, 0x80, 0x6A, 0x50, 0x80, 0x09, 0xD3, 0x80, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B8, { 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x0F, 0x80, 0x12, 0x08, 0x80, 0x12, 0x08, 0x80, 0x12, 0x09, 0x00, 0x1F, 0xE9, 0x00, 0x12, 0x08, 0x80, 0x12, 0x08, 0x80, 0x12, 0x08, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x17, 0xA8, 0x80, 0x38, 0xA8, 0x80, 0x00, 0x6B, 0x00, 0x1F, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90B9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x1F, 0xA2, 0x00, 0x21, 0x24, 0x00, 0x42, 0x24, 0x00, 0x3F, 0xA8, 0x00, 0x00, 0xA4, 0x00, 0x00, 0xA2, 0x00, 0x1F, 0xA1, 0x00, 0x00, 0xA1, 0x00, 0x00, 0xB1, 0x00, 0x3F, 0xAA, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90BA, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x4A, 0x64, 0x00, 0x2A, 0x64, 0x00, 0x2A, 0xA8, 0x00, 0x1A, 0xA4, 0x00, 0x1B, 0x22, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x0B, 0xF1, 0x00, 0x7C, 0x2A, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90BB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x22, 0x00, 0x10, 0xE4, 0x00, 0x28, 0x64, 0x00, 0x44, 0x28, 0x00, 0x00, 0x24, 0x00, 0x3F, 0xA2, 0x00, 0x00, 0xA1, 0x00, 0x01, 0x21, 0x00, 0x0A, 0x31, 0x00, 0x04, 0x2A, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90BD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x11, 0x80, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x07, 0xD3, 0x80, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90BE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x14, 0x1F, 0x80, 0x14, 0x10, 0x80, 0x1F, 0x91, 0x80, 0x24, 0x11, 0x00, 0x44, 0x13, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x0C, 0x10, 0x80, 0x0E, 0x10, 0x80, 0x15, 0x10, 0x80, 0x14, 0x90, 0x80, 0x24, 0x10, 0x80, 0x44, 0x13, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90C1, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x0F, 0x80, 0x3F, 0xE8, 0x80, 0x04, 0x08, 0x80, 0x08, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x28, 0x48, 0x80, 0x08, 0x48, 0x80, 0x0F, 0xC8, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x0F, 0xC8, 0x80, 0x08, 0x48, 0x80, 0x08, 0x4B, 0x00, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x0E, 0x10, 0x80, 0x1B, 0x11, 0x80, 0x31, 0x91, 0x00, 0x60, 0xD3, 0x00, 0x40, 0x52, 0x00, 0x1F, 0x11, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x93, 0x80, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90C4, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19, 0x1F, 0x80, 0x06, 0x10, 0x80, 0x0A, 0x11, 0x80, 0x11, 0x11, 0x00, 0x64, 0x93, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x08, 0x10, 0x80, 0x09, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x12, 0x10, 0x80, 0x24, 0x90, 0x80, 0x45, 0xD3, 0x80, 0x0E, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x80, 0x04, 0x10, 0x80, 0x09, 0x11, 0x80, 0x10, 0x91, 0x00, 0x23, 0xD3, 0x00, 0x3C, 0x52, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x12, 0x80, 0x07, 0xD1, 0x80, 0x7C, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90C7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x1F, 0x80, 0x10, 0x10, 0x80, 0x3F, 0xD1, 0x80, 0x20, 0x51, 0x00, 0x20, 0x53, 0x00, 0x5E, 0x52, 0x00, 0x12, 0x51, 0x00, 0x12, 0x50, 0x80, 0x1E, 0x50, 0x80, 0x12, 0x50, 0x80, 0x12, 0x50, 0x80, 0x1E, 0x52, 0x80, 0x00, 0x91, 0x80, 0x02, 0x90, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xDF, 0x80, 0x3E, 0x10, 0x80, 0x20, 0x11, 0x80, 0x20, 0x11, 0x00, 0x20, 0x13, 0x00, 0x3F, 0xD2, 0x00, 0x20, 0x11, 0x00, 0x20, 0x10, 0x80, 0x2F, 0xD0, 0x80, 0x28, 0x50, 0x80, 0x28, 0x50, 0x80, 0x28, 0x52, 0x80, 0x48, 0x51, 0x80, 0x0F, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90CA, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0F, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x00, 0x09, 0x00, 0x08, 0x8A, 0x00, 0x10, 0x49, 0x00, 0x28, 0xA8, 0x80, 0x08, 0x88, 0x80, 0x05, 0x08, 0x80, 0x05, 0x08, 0x80, 0x02, 0x08, 0x80, 0x05, 0x08, 0x80, 0x08, 0x8B, 0x00, 0x10, 0x48, 0x00, 0x20, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90CC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x78, 0x41, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90CE, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x91, 0x80, 0x20, 0x91, 0x00, 0x3F, 0x93, 0x00, 0x20, 0x92, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x90, 0x80, 0x20, 0x10, 0x80, 0x21, 0x10, 0x80, 0x21, 0x10, 0x80, 0x27, 0x90, 0x80, 0x3C, 0x93, 0x80, 0x60, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90CF, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x04, 0xA2, 0x00, 0x7F, 0xE2, 0x00, 0x04, 0x24, 0x00, 0x24, 0xA4, 0x00, 0x14, 0xA8, 0x00, 0x15, 0x24, 0x00, 0x7F, 0xE2, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x0A, 0x31, 0x00, 0x09, 0x2A, 0x00, 0x11, 0xA4, 0x00, 0x60, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x22, 0x00, 0x10, 0xA4, 0x00, 0x10, 0x24, 0x00, 0x3F, 0xE8, 0x00, 0x40, 0x24, 0x00, 0x00, 0xA2, 0x00, 0x7F, 0xE1, 0x00, 0x08, 0x21, 0x00, 0x0A, 0x31, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0xA4, 0x00, 0x10, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D1, { 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x11, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0xA8, 0x00, 0x7F, 0xE4, 0x00, 0x04, 0x22, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x0A, 0x31, 0x00, 0x09, 0x2A, 0x00, 0x11, 0x24, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x1F, 0x00, 0x3F, 0x11, 0x00, 0x21, 0x11, 0x00, 0x21, 0x1F, 0x00, 0x3F, 0x00, 0x00, 0x21, 0x3F, 0x80, 0x21, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x20, 0x24, 0x80, 0x21, 0x3F, 0x80, 0x2A, 0x20, 0x00, 0x24, 0x20, 0x00, 0x22, 0x20, 0x80, 0x39, 0x20, 0x80, 0x60, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x90D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x28, 0x62, 0x00, 0x48, 0xA2, 0x00, 0x1F, 0xA4, 0x00, 0x08, 0x24, 0x00, 0x0A, 0x28, 0x00, 0x12, 0xA4, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x21, 0x00, 0x02, 0x21, 0x00, 0x03, 0xF1, 0x00, 0x7E, 0x2A, 0x00, 0x22, 0x24, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D5, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x4F, 0x80, 0x01, 0x28, 0x80, 0x01, 0x09, 0x80, 0x3F, 0xE9, 0x00, 0x21, 0x0B, 0x00, 0x21, 0x0A, 0x00, 0x3D, 0x09, 0x00, 0x25, 0x28, 0x80, 0x25, 0x28, 0x80, 0x25, 0x48, 0x80, 0x24, 0x88, 0x80, 0x2C, 0xAA, 0x80, 0x41, 0xA9, 0x80, 0x42, 0x68, 0x00, 0x04, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19, 0x1F, 0x80, 0x06, 0x10, 0x80, 0x19, 0x11, 0x80, 0x64, 0x91, 0x00, 0x04, 0x13, 0x00, 0x7F, 0xF2, 0x00, 0x08, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x12, 0x10, 0x80, 0x1F, 0xD0, 0x80, 0x32, 0x50, 0x80, 0x52, 0x52, 0x80, 0x12, 0x51, 0x80, 0x12, 0xD0, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x20, 0x90, 0x80, 0x20, 0x91, 0x80, 0x20, 0x91, 0x00, 0x3F, 0x93, 0x00, 0x08, 0x12, 0x00, 0x10, 0x11, 0x00, 0x20, 0x10, 0x80, 0x7F, 0xD0, 0x80, 0x40, 0x50, 0x80, 0x40, 0x50, 0x80, 0x40, 0x52, 0x80, 0x40, 0x51, 0x80, 0x7F, 0xD0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90D9, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x09, 0x3F, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x23, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x26, 0x00, 0x49, 0x24, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x21, 0x00, 0x49, 0x21, 0x00, 0x49, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x49, 0x25, 0x00, 0x49, 0x23, 0x00, 0x49, 0x20, 0x00, 0x4B, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90DB, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x9F, 0x80, 0x7C, 0x90, 0x80, 0x14, 0xD1, 0x80, 0x22, 0x51, 0x00, 0x00, 0x13, 0x00, 0x3F, 0x92, 0x00, 0x01, 0x11, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x07, 0xD0, 0x80, 0x7C, 0x10, 0x80, 0x04, 0x10, 0x80, 0x04, 0x13, 0x80, 0x04, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90DC, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x14, 0x1F, 0x80, 0x14, 0x10, 0x80, 0x1F, 0x91, 0x80, 0x24, 0x11, 0x00, 0x44, 0x13, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x10, 0x80, 0x00, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x92, 0x80, 0x20, 0x91, 0x80, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90DD, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x91, 0x80, 0x04, 0x11, 0x00, 0x04, 0x13, 0x00, 0x7F, 0xD2, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x10, 0x80, 0x2A, 0x90, 0x80, 0x2A, 0x50, 0x80, 0x2A, 0x50, 0x80, 0x4A, 0x52, 0x80, 0x12, 0x11, 0x80, 0x26, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90DE, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x91, 0x00, 0x10, 0x90, 0x80, 0x1F, 0x90, 0x80, 0x10, 0x10, 0x80, 0x10, 0x50, 0x80, 0x12, 0x90, 0x80, 0x11, 0x10, 0x80, 0x17, 0x97, 0x00, 0x38, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90DF, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0F, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE9, 0x80, 0x02, 0x09, 0x00, 0x12, 0x4B, 0x00, 0x12, 0x4A, 0x00, 0x2A, 0xA9, 0x00, 0x26, 0x98, 0x80, 0x43, 0x08, 0x80, 0x02, 0x08, 0x80, 0x05, 0x08, 0x80, 0x05, 0x0A, 0x80, 0x08, 0x89, 0x80, 0x10, 0x48, 0x00, 0x20, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xCF, 0x80, 0x02, 0x48, 0x80, 0x02, 0x49, 0x00, 0x3F, 0xFA, 0x00, 0x04, 0x49, 0x00, 0x04, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x08, 0x08, 0x80, 0x10, 0x08, 0x80, 0x2F, 0xC8, 0x80, 0x08, 0x48, 0x80, 0x08, 0x48, 0x80, 0x08, 0x4B, 0x00, 0x0F, 0xC8, 0x00, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x20, 0x90, 0x80, 0x20, 0x91, 0x80, 0x3F, 0x91, 0x00, 0x00, 0x13, 0x00, 0x01, 0xD2, 0x00, 0x7F, 0x11, 0x00, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x04, 0x10, 0x80, 0x1F, 0xD3, 0x80, 0x70, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x1F, 0x80, 0x1B, 0x10, 0x80, 0x31, 0x91, 0x80, 0x64, 0xD1, 0x00, 0x0E, 0x13, 0x00, 0x1B, 0x12, 0x00, 0x31, 0x91, 0x00, 0x60, 0xD0, 0x80, 0x00, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x93, 0x80, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x20, 0x90, 0x80, 0x20, 0x91, 0x80, 0x20, 0x91, 0x00, 0x3F, 0x93, 0x00, 0x20, 0x92, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x92, 0x80, 0x11, 0x11, 0x80, 0x20, 0x90, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x09, 0x00, 0x00, 0x29, 0x00, 0x3D, 0xFA, 0x00, 0x25, 0x2A, 0x00, 0x25, 0x2C, 0x00, 0x25, 0x2A, 0x00, 0x35, 0xAA, 0x00, 0x2D, 0x69, 0x00, 0x25, 0x29, 0x00, 0x25, 0x2D, 0x00, 0x25, 0x2A, 0x00, 0x25, 0x28, 0x00, 0x2D, 0x68, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E7, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1F, 0xBE, 0x00, 0x11, 0x22, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x00, 0xA8, 0x00, 0x3F, 0xE4, 0x00, 0x20, 0xA2, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x24, 0xB1, 0x00, 0x24, 0xAA, 0x00, 0x0A, 0x24, 0x00, 0x09, 0x20, 0x00, 0x10, 0xA0, 0x00, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90E8, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x1F, 0xD1, 0x00, 0x08, 0x92, 0x00, 0x05, 0x11, 0x00, 0x05, 0x10, 0x80, 0x3F, 0xF0, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x1F, 0xD0, 0x80, 0x10, 0x50, 0x80, 0x10, 0x50, 0x80, 0x10, 0x57, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90EB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x80, 0x1F, 0xD0, 0x80, 0x12, 0x51, 0x80, 0x12, 0x51, 0x00, 0x1F, 0xD3, 0x00, 0x12, 0x52, 0x00, 0x12, 0x51, 0x00, 0x1F, 0xD0, 0x80, 0x04, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x12, 0x10, 0x80, 0x7F, 0xF2, 0x80, 0x02, 0x11, 0x80, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90ED, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0F, 0x80, 0x3F, 0xE8, 0x80, 0x00, 0x09, 0x00, 0x1F, 0xCA, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x01, 0x08, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x02, 0x0B, 0x00, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x49, 0x21, 0x00, 0x29, 0x23, 0x00, 0x2A, 0x22, 0x00, 0x08, 0x26, 0x00, 0x14, 0x24, 0x00, 0x63, 0x22, 0x00, 0x00, 0x21, 0x00, 0x08, 0x21, 0x00, 0x49, 0x21, 0x00, 0x29, 0x21, 0x00, 0x2A, 0x25, 0x00, 0x08, 0x23, 0x00, 0x14, 0x20, 0x00, 0x63, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90F0, { 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x24, 0x0F, 0x80, 0x24, 0x08, 0x80, 0x25, 0xF9, 0x80, 0x3C, 0x19, 0x00, 0x24, 0x1B, 0x00, 0x25, 0x2A, 0x00, 0x24, 0xA9, 0x00, 0x3C, 0x48, 0x80, 0x24, 0x68, 0x80, 0x24, 0xA8, 0x80, 0x24, 0x98, 0x80, 0x7D, 0x1A, 0x80, 0x06, 0x09, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90F4, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x08, 0x48, 0x80, 0x08, 0x49, 0x80, 0x7F, 0xF9, 0x00, 0x08, 0x4B, 0x00, 0x1C, 0xEA, 0x00, 0x1A, 0xD9, 0x00, 0x18, 0xC8, 0x80, 0x29, 0x48, 0x80, 0x29, 0x48, 0x80, 0x4A, 0x48, 0x80, 0x08, 0x4A, 0x80, 0x08, 0x49, 0x80, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90F5, { 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x0F, 0x80, 0x02, 0x08, 0x80, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x3F, 0xE8, 0x80, 0x12, 0x48, 0x80, 0x12, 0x48, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x03, 0xEB, 0x00, 0x3C, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90F6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x11, 0x1F, 0x00, 0x1B, 0x00, 0x00, 0x0A, 0x3F, 0x80, 0x7F, 0xE4, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0x80, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x20, 0x80, 0x1F, 0x20, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x90F7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x33, 0xEF, 0x80, 0x22, 0x28, 0x80, 0x62, 0x29, 0x80, 0x4B, 0xE9, 0x00, 0x2A, 0x2B, 0x00, 0x1A, 0x2A, 0x00, 0x13, 0xE9, 0x00, 0x32, 0x08, 0x80, 0x22, 0x08, 0x80, 0x7A, 0x48, 0x80, 0x0A, 0x48, 0x80, 0x1A, 0xE8, 0x80, 0x13, 0xAB, 0x80, 0x36, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90F8, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x08, 0x9F, 0x00, 0x05, 0x11, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x52, 0x00, 0x12, 0x54, 0x00, 0x1F, 0xD4, 0x00, 0x12, 0x52, 0x00, 0x12, 0x51, 0x00, 0x1F, 0xD1, 0x00, 0x02, 0x11, 0x00, 0x02, 0x19, 0x00, 0x3F, 0xF5, 0x00, 0x02, 0x12, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90FD, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x2F, 0x80, 0x1F, 0xE8, 0x80, 0x02, 0x48, 0x80, 0x02, 0x89, 0x00, 0x03, 0x09, 0x00, 0x3F, 0xF8, 0x80, 0x02, 0x88, 0x80, 0x04, 0x48, 0x80, 0x0F, 0xC8, 0x80, 0x18, 0x48, 0x80, 0x28, 0x48, 0x80, 0x0F, 0xC8, 0x80, 0x08, 0x4B, 0x80, 0x08, 0x48, 0x00, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90FE, { 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x20, 0x0F, 0x80, 0x2F, 0xC8, 0x80, 0x28, 0x49, 0x80, 0x2F, 0xC9, 0x00, 0x28, 0x4B, 0x00, 0x2F, 0xCA, 0x00, 0x21, 0x09, 0x00, 0x22, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x24, 0x88, 0x80, 0x29, 0x08, 0x80, 0x26, 0x0A, 0x80, 0x25, 0x09, 0x80, 0x28, 0x88, 0x00, 0x1F, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x90FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xEF, 0x80, 0x22, 0x28, 0x80, 0x22, 0x29, 0x80, 0x3F, 0xE9, 0x00, 0x20, 0x0B, 0x00, 0x2F, 0xCA, 0x00, 0x28, 0x49, 0x00, 0x28, 0x48, 0x80, 0x2F, 0xC8, 0x80, 0x28, 0x48, 0x80, 0x28, 0x48, 0x80, 0x2F, 0xCA, 0x80, 0x48, 0x49, 0x80, 0x08, 0x48, 0x00, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9100, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x1F, 0x80, 0x7F, 0xD0, 0x80, 0x11, 0x11, 0x80, 0x11, 0x11, 0x00, 0x08, 0x13, 0x00, 0x08, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x10, 0x10, 0x80, 0x10, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x50, 0x90, 0x80, 0x10, 0x92, 0x80, 0x10, 0x91, 0x80, 0x1F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9102, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x80, 0x25, 0x28, 0x80, 0x25, 0x28, 0x80, 0x3D, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x08, 0x08, 0x80, 0x0F, 0xE8, 0x80, 0x10, 0x28, 0x80, 0x00, 0x2B, 0x00, 0x00, 0x48, 0x00, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x13, 0x00, 0x7F, 0xD2, 0x00, 0x4A, 0x56, 0x00, 0x53, 0xD4, 0x00, 0x40, 0x52, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x15, 0x00, 0x04, 0x13, 0x00, 0x07, 0xD0, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCF, 0x80, 0x7C, 0x08, 0x80, 0x04, 0x09, 0x80, 0x3F, 0xC9, 0x00, 0x24, 0x4B, 0x00, 0x24, 0x4A, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x08, 0x80, 0x7F, 0xE8, 0x80, 0x44, 0x28, 0x80, 0x45, 0x28, 0x80, 0x5F, 0xAA, 0x80, 0x40, 0xA9, 0x80, 0x40, 0x28, 0x00, 0x40, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9106, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xEF, 0x80, 0x22, 0x28, 0x80, 0x02, 0x09, 0x80, 0x3F, 0xE9, 0x00, 0x02, 0x0B, 0x00, 0x1F, 0xCA, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC8, 0x80, 0x12, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x02, 0x08, 0x80, 0x7F, 0xFA, 0x80, 0x02, 0x09, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9108, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x0F, 0x80, 0x05, 0x48, 0x80, 0x28, 0x89, 0x80, 0x18, 0xA9, 0x00, 0x10, 0x4B, 0x00, 0x20, 0x2A, 0x00, 0x4F, 0x99, 0x00, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x02, 0x0A, 0x80, 0x05, 0x09, 0x80, 0x08, 0x88, 0x00, 0x30, 0x68, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x910D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x40, 0x51, 0x00, 0x5F, 0x53, 0x00, 0x51, 0x52, 0x00, 0x1F, 0x16, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x12, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x11, 0x00, 0x11, 0x15, 0x00, 0x20, 0x93, 0x00, 0x40, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9110, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x13, 0x00, 0x09, 0x12, 0x00, 0x12, 0x16, 0x00, 0x0D, 0x14, 0x00, 0x10, 0x92, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x51, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x95, 0x00, 0x24, 0x93, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9112, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x0F, 0x80, 0x0F, 0xE8, 0x80, 0x12, 0x29, 0x00, 0x2A, 0xAA, 0x00, 0x0A, 0xA9, 0x00, 0x0F, 0xA8, 0x80, 0x0C, 0xC8, 0x80, 0x04, 0x88, 0x80, 0x0F, 0xE8, 0x80, 0x1A, 0x28, 0x80, 0x2A, 0xA8, 0x80, 0x0F, 0xA8, 0x80, 0x0A, 0xAB, 0x00, 0x04, 0x48, 0x00, 0x09, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9114, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x0F, 0x80, 0x08, 0x08, 0x80, 0x1F, 0x89, 0x80, 0x10, 0x89, 0x00, 0x10, 0x8B, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xE8, 0x80, 0x10, 0x08, 0x80, 0x1F, 0xE8, 0x80, 0x00, 0x28, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xA9, 0x80, 0x29, 0x28, 0x00, 0x40, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9115, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x47, 0x80, 0x11, 0xF4, 0x80, 0x11, 0x14, 0x80, 0x25, 0xF5, 0x00, 0x15, 0x14, 0x80, 0x09, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x16, 0x04, 0x80, 0x3B, 0x04, 0x80, 0x03, 0x34, 0x80, 0x05, 0xC4, 0x80, 0x05, 0x07, 0x00, 0x09, 0x14, 0x00, 0x11, 0xF4, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x20, 0x90, 0x80, 0x20, 0x91, 0x80, 0x3F, 0x91, 0x00, 0x00, 0x13, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x92, 0x80, 0x11, 0x11, 0x80, 0x20, 0x90, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9117, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x13, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x16, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x40, 0x51, 0x00, 0x5F, 0x51, 0x00, 0x51, 0x51, 0x00, 0x51, 0x55, 0x00, 0x5F, 0x53, 0x00, 0x40, 0x50, 0x00, 0x41, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9118, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xEF, 0x80, 0x21, 0x08, 0x80, 0x2F, 0xE9, 0x80, 0x21, 0x29, 0x00, 0x3F, 0xFB, 0x00, 0x21, 0x2A, 0x00, 0x2F, 0xE9, 0x00, 0x21, 0x08, 0x80, 0x2F, 0xE8, 0x80, 0x29, 0x28, 0x80, 0x2F, 0xE8, 0x80, 0x29, 0x2A, 0x80, 0x4F, 0xE9, 0x80, 0x09, 0x28, 0x00, 0x09, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xDF, 0x00, 0x10, 0x51, 0x00, 0x10, 0x51, 0x00, 0x1F, 0xD2, 0x00, 0x02, 0x11, 0x00, 0x3F, 0xF0, 0x80, 0x00, 0x10, 0x80, 0x1F, 0xD0, 0x80, 0x15, 0x50, 0x80, 0x17, 0x50, 0x80, 0x15, 0x50, 0x80, 0x17, 0x50, 0x80, 0x15, 0x57, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x911A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x1F, 0x80, 0x7F, 0xD0, 0x80, 0x11, 0x11, 0x80, 0x00, 0x11, 0x00, 0x3F, 0x93, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x7F, 0xD0, 0x80, 0x04, 0x12, 0x80, 0x0A, 0x11, 0x80, 0x11, 0x10, 0x00, 0x60, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x911C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0F, 0x80, 0x3F, 0xE8, 0x80, 0x25, 0x09, 0x80, 0x25, 0x09, 0x00, 0x3F, 0xEB, 0x00, 0x25, 0x2A, 0x00, 0x25, 0x29, 0x00, 0x3F, 0xE8, 0x80, 0x28, 0x88, 0x80, 0x28, 0x88, 0x80, 0x2E, 0xE8, 0x80, 0x28, 0x8A, 0x80, 0x48, 0x89, 0x80, 0x1E, 0x88, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x911E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x1F, 0x80, 0x7F, 0xD0, 0x80, 0x11, 0x11, 0x80, 0x1F, 0x11, 0x00, 0x04, 0x13, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x92, 0x80, 0x04, 0x11, 0x80, 0x07, 0xD0, 0x00, 0x7C, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9120, { 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x02, 0x07, 0x80, 0x7F, 0xF4, 0x80, 0x42, 0x15, 0x80, 0x5A, 0xD5, 0x00, 0x42, 0x15, 0x00, 0x5A, 0xD4, 0x80, 0x00, 0x04, 0x80, 0x1F, 0xC4, 0x80, 0x00, 0x04, 0x80, 0x7F, 0xF4, 0x80, 0x08, 0x04, 0x80, 0x0F, 0xC4, 0x80, 0x00, 0x45, 0x80, 0x04, 0xC4, 0x00, 0x03, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xCF, 0x80, 0x02, 0x08, 0x80, 0x0B, 0x89, 0x80, 0x0A, 0x09, 0x00, 0x7F, 0xEB, 0x00, 0x10, 0x0A, 0x00, 0x1F, 0x89, 0x00, 0x10, 0x08, 0x80, 0x1F, 0xE8, 0x80, 0x00, 0x28, 0x80, 0x2A, 0xA8, 0x80, 0x2A, 0xAA, 0x80, 0x28, 0x29, 0x80, 0x42, 0x48, 0x00, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9123, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x80, 0x0A, 0x11, 0x80, 0x7F, 0xD1, 0x00, 0x00, 0x13, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x10, 0x80, 0x7F, 0xD2, 0x80, 0x04, 0x11, 0x80, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9125, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x0F, 0x80, 0x1F, 0x88, 0x80, 0x10, 0x89, 0x80, 0x1F, 0x89, 0x00, 0x10, 0x8B, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xE8, 0x80, 0x10, 0x08, 0x80, 0x1F, 0xE8, 0x80, 0x00, 0x28, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xA9, 0x80, 0x29, 0x28, 0x00, 0x40, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x2F, 0x80, 0x01, 0x48, 0x80, 0x12, 0x99, 0x00, 0x0C, 0x6A, 0x00, 0x30, 0x39, 0x00, 0x1F, 0xC8, 0x80, 0x00, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x10, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x08, 0x88, 0x80, 0x05, 0xFB, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9129, { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0x3F, 0x00, 0x7F, 0xA1, 0x00, 0x01, 0x23, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x26, 0x00, 0x77, 0xA4, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xA1, 0x00, 0x77, 0xA1, 0x00, 0x02, 0x21, 0x00, 0x7F, 0xA1, 0x00, 0x02, 0x25, 0x00, 0x22, 0x23, 0x00, 0x12, 0x20, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x912D, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x8F, 0x80, 0x10, 0x48, 0x80, 0x3F, 0xE8, 0x80, 0x05, 0x19, 0x00, 0x1F, 0xC8, 0x80, 0x15, 0x48, 0x80, 0x19, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x1F, 0xC8, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x05, 0x0B, 0x00, 0x08, 0x88, 0x00, 0x30, 0x68, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x912E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x63, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x4A, 0x53, 0x00, 0x4A, 0x52, 0x00, 0x7A, 0xD6, 0x00, 0x0A, 0x14, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x95, 0x00, 0x3F, 0x93, 0x00, 0x11, 0x10, 0x00, 0x20, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x912F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x8F, 0x80, 0x05, 0x08, 0x80, 0x3F, 0xE9, 0x80, 0x02, 0x09, 0x00, 0x1F, 0xCB, 0x00, 0x02, 0x0A, 0x00, 0x3F, 0xE9, 0x00, 0x12, 0x48, 0x80, 0x0A, 0x88, 0x80, 0x7F, 0xF8, 0x80, 0x00, 0x08, 0x80, 0x1F, 0xCA, 0x80, 0x10, 0x49, 0x80, 0x1F, 0xC8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9130, { 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x15, 0x1F, 0x80, 0x04, 0x10, 0x80, 0x7F, 0xD1, 0x80, 0x15, 0x11, 0x00, 0x35, 0x93, 0x00, 0x64, 0xD2, 0x00, 0x24, 0x11, 0x00, 0x38, 0x90, 0x80, 0x2F, 0xD0, 0x80, 0x2A, 0x90, 0x80, 0x7A, 0x90, 0x80, 0x5F, 0xD0, 0x80, 0x10, 0x93, 0x80, 0x30, 0x90, 0x00, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9F, 0x80, 0x7C, 0x10, 0x80, 0x24, 0x91, 0x80, 0x15, 0x11, 0x00, 0x7F, 0xD3, 0x00, 0x0E, 0x12, 0x00, 0x15, 0x11, 0x00, 0x64, 0xD0, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x24, 0x90, 0x80, 0x3F, 0x92, 0x80, 0x24, 0x91, 0x80, 0x3F, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x3B, 0x92, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x24, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x24, 0x90, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x97, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9134, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x4A, 0x5F, 0x00, 0x2A, 0x91, 0x00, 0x7F, 0xD3, 0x00, 0x11, 0x12, 0x00, 0x0A, 0x16, 0x00, 0x7F, 0xD4, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x0E, 0x11, 0x00, 0x15, 0x15, 0x00, 0x24, 0x93, 0x00, 0x44, 0x50, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x80, 0x08, 0x88, 0x80, 0x10, 0x49, 0x80, 0x2F, 0xA9, 0x00, 0x40, 0x1B, 0x00, 0x3F, 0xEA, 0x00, 0x2A, 0xA9, 0x00, 0x27, 0x28, 0x80, 0x3F, 0xE8, 0x80, 0x00, 0x08, 0x80, 0x1F, 0xC8, 0x80, 0x10, 0x4A, 0x80, 0x1F, 0xC9, 0x80, 0x10, 0x48, 0x00, 0x1F, 0xC8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9137, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x1F, 0x80, 0x7F, 0xD0, 0x80, 0x4A, 0x51, 0x80, 0x7F, 0xD1, 0x00, 0x4A, 0x53, 0x00, 0x7F, 0xD2, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xD0, 0x80, 0x00, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x92, 0x80, 0x11, 0x11, 0x80, 0x0A, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9139, { 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x25, 0xEF, 0x80, 0x3C, 0x28, 0x80, 0x25, 0x49, 0x80, 0x3C, 0xC9, 0x00, 0x24, 0xCB, 0x00, 0x7D, 0x2A, 0x00, 0x06, 0x29, 0x00, 0x04, 0x88, 0x80, 0x03, 0x08, 0x80, 0x1E, 0x28, 0x80, 0x23, 0x48, 0x80, 0x42, 0x8A, 0x80, 0x12, 0x49, 0x80, 0x22, 0x28, 0x00, 0x42, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x913A, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xF7, 0x80, 0x24, 0x44, 0x80, 0x3F, 0xF5, 0x80, 0x24, 0x45, 0x00, 0x27, 0xC5, 0x00, 0x20, 0x04, 0x80, 0x3F, 0xF4, 0x80, 0x21, 0x04, 0x80, 0x2F, 0xE4, 0x80, 0x29, 0x24, 0x80, 0x2F, 0xE4, 0x80, 0x29, 0x24, 0x80, 0x4F, 0xE5, 0x80, 0x04, 0x44, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x913C, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x3B, 0x9F, 0x80, 0x11, 0x10, 0x80, 0x7F, 0xD1, 0x80, 0x11, 0x11, 0x00, 0x6E, 0xD3, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x92, 0x80, 0x3F, 0x91, 0x80, 0x11, 0x10, 0x00, 0x60, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x913D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0xEF, 0x80, 0x20, 0x08, 0x80, 0x2F, 0xE9, 0x80, 0x29, 0x29, 0x00, 0x2F, 0xEB, 0x00, 0x29, 0x2A, 0x00, 0x2F, 0xE9, 0x00, 0x21, 0x08, 0x80, 0x2F, 0xE8, 0x80, 0x22, 0x88, 0x80, 0x2C, 0xE8, 0x80, 0x21, 0x0A, 0x80, 0x47, 0xC9, 0x80, 0x01, 0x08, 0x00, 0x0F, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9143, { 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x02, 0x07, 0x80, 0x7F, 0xF4, 0x80, 0x42, 0x15, 0x80, 0x5A, 0xD5, 0x00, 0x42, 0x15, 0x00, 0x5A, 0xD4, 0x80, 0x42, 0x14, 0x80, 0x00, 0x04, 0x80, 0x77, 0x74, 0x80, 0x55, 0x54, 0x80, 0x55, 0x54, 0x80, 0x55, 0x54, 0x80, 0x55, 0x55, 0x80, 0x77, 0x74, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9146, { 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x3F, 0x9E, 0x00, 0x55, 0x52, 0x00, 0x7F, 0xD2, 0x00, 0x55, 0x54, 0x00, 0x7F, 0xD4, 0x00, 0x55, 0x58, 0x00, 0x7F, 0xD4, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x91, 0x00, 0x3F, 0xD1, 0x00, 0x20, 0x9A, 0x00, 0x3F, 0x94, 0x00, 0x11, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9147, { 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x3B, 0xDF, 0x80, 0x55, 0x10, 0x80, 0x7F, 0xD1, 0x80, 0x2A, 0x91, 0x00, 0x4C, 0xD3, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x90, 0x80, 0x3F, 0x90, 0x80, 0x20, 0x92, 0x80, 0x3F, 0x91, 0x80, 0x11, 0x10, 0x00, 0x60, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9148, { 0x00, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x3D, 0xE8, 0x80, 0x2D, 0x69, 0x80, 0x2D, 0x69, 0x00, 0x02, 0x0B, 0x00, 0x3F, 0xEA, 0x00, 0x25, 0x09, 0x00, 0x3F, 0xC8, 0x80, 0x25, 0x48, 0x80, 0x3F, 0xC8, 0x80, 0x29, 0x08, 0x80, 0x2F, 0xCA, 0x80, 0x29, 0x09, 0x80, 0x49, 0x08, 0x00, 0x1E, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x12, 0x13, 0x00, 0x1C, 0x1F, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x914A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2B, 0x84, 0x00, 0x30, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x914B, { 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x0F, 0xFE, 0x00, 0x31, 0x11, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x16, 0x1F, 0x00, 0x18, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x914C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x3F, 0x80, 0x3F, 0xC0, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x90, 0x80, 0x2B, 0x88, 0x80, 0x30, 0x80, 0x80, 0x20, 0x80, 0x80, 0x3F, 0x80, 0x80, 0x20, 0x80, 0x80, 0x20, 0x80, 0x80, 0x3F, 0x81, 0x00, 0x20, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x914D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x01, 0x00, 0x3F, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x31, 0xA0, 0x00, 0x20, 0xA0, 0x00, 0x20, 0xA0, 0x00, 0x3F, 0xA0, 0x00, 0x20, 0xA0, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xBF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x914E, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x3F, 0x80, 0x1F, 0xC2, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x19, 0x5A, 0x00, 0x10, 0xCA, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x914F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x48, 0x00, 0x14, 0x48, 0x00, 0x14, 0x4B, 0x00, 0x7F, 0x4D, 0x00, 0x55, 0x59, 0x00, 0x55, 0x69, 0x00, 0x55, 0xC9, 0x00, 0x67, 0x49, 0x00, 0x41, 0x49, 0x00, 0x41, 0x4B, 0x00, 0x7F, 0x48, 0x00, 0x41, 0x40, 0x00, 0x41, 0x40, 0x80, 0x7F, 0x61, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9150, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xC4, 0x00, 0x0A, 0x3E, 0x00, 0x0A, 0x88, 0x00, 0x3F, 0xC8, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xFF, 0x00, 0x2B, 0x88, 0x00, 0x30, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9152, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x20, 0x28, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x29, 0x00, 0x01, 0x29, 0x00, 0x09, 0x4F, 0x00, 0x09, 0x81, 0x00, 0x09, 0x01, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9153, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x71, 0xE3, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9154, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x12, 0x00, 0x7F, 0x12, 0x00, 0x55, 0x32, 0x80, 0x55, 0x22, 0x80, 0x55, 0x61, 0x80, 0x55, 0x08, 0x00, 0x67, 0x08, 0x00, 0x41, 0x7F, 0x80, 0x41, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x41, 0x08, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9156, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x33, 0x84, 0x00, 0x20, 0x8E, 0x00, 0x20, 0x8A, 0x00, 0x3F, 0x8A, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x9A, 0x80, 0x3F, 0x92, 0x80, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x14, 0x42, 0x80, 0x14, 0x5A, 0x80, 0x7F, 0x4A, 0x80, 0x55, 0x4A, 0x80, 0x55, 0x4E, 0x80, 0x55, 0x44, 0x80, 0x67, 0x4E, 0x80, 0x41, 0x4A, 0x80, 0x41, 0x4A, 0x80, 0x7F, 0x5A, 0x80, 0x41, 0x50, 0x80, 0x41, 0x40, 0x80, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9158, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDE, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0xA3, 0x80, 0x2A, 0x80, 0x00, 0x2A, 0xBF, 0x00, 0x33, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0x9B, 0x00, 0x3F, 0x8E, 0x00, 0x20, 0x84, 0x00, 0x20, 0x8E, 0x00, 0x3F, 0x9B, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9159, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0x32, 0x00, 0x14, 0x1A, 0x00, 0x14, 0x0A, 0x00, 0x7F, 0x02, 0x00, 0x55, 0x62, 0x00, 0x55, 0x32, 0x00, 0x55, 0x12, 0x00, 0x67, 0x02, 0x00, 0x41, 0x03, 0x80, 0x41, 0x1E, 0x00, 0x7F, 0x72, 0x00, 0x41, 0x02, 0x00, 0x41, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x915A, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x7F, 0x02, 0x00, 0x14, 0x12, 0x00, 0x14, 0x33, 0x00, 0x7F, 0x21, 0x00, 0x55, 0x61, 0x80, 0x55, 0x40, 0x80, 0x55, 0x3F, 0x00, 0x67, 0x09, 0x00, 0x41, 0x09, 0x00, 0x41, 0x09, 0x00, 0x7F, 0x19, 0x00, 0x41, 0x11, 0x00, 0x41, 0x33, 0x00, 0x7F, 0x62, 0x00, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x915B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3F, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x12, 0x00, 0x67, 0x12, 0x00, 0x41, 0x12, 0x00, 0x41, 0x12, 0x00, 0x7F, 0x12, 0x00, 0x41, 0x12, 0x00, 0x41, 0x32, 0x80, 0x7F, 0x22, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x915D, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xC4, 0x00, 0x0A, 0x3E, 0x00, 0x0A, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x29, 0x88, 0x00, 0x30, 0x88, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x20, 0xA2, 0x00, 0x20, 0xFF, 0x00, 0x3F, 0x81, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x915E, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x7F, 0xC8, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x3F, 0x8A, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2B, 0x94, 0x00, 0x30, 0x94, 0x00, 0x20, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x20, 0xA2, 0x00, 0x20, 0xAA, 0x00, 0x3F, 0xC1, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9161, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0x7F, 0x80, 0x7F, 0x40, 0x80, 0x55, 0x40, 0x80, 0x55, 0x20, 0x00, 0x55, 0x23, 0x00, 0x67, 0x2E, 0x00, 0x41, 0x38, 0x00, 0x41, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x41, 0x20, 0x00, 0x41, 0x20, 0x80, 0x7F, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9162, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x3F, 0x80, 0x3F, 0xA8, 0x00, 0x2A, 0xC8, 0x00, 0x2B, 0x88, 0x00, 0x30, 0x8F, 0x80, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x8F, 0x80, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9163, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x7F, 0x80, 0x3F, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x33, 0x9E, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x92, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9164, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x67, 0x7F, 0x00, 0x41, 0x41, 0x00, 0x41, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x41, 0x00, 0x41, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9165, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x7F, 0xC7, 0x00, 0x0A, 0x3C, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x2A, 0xBF, 0x80, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x33, 0x8E, 0x00, 0x20, 0x8E, 0x00, 0x20, 0x95, 0x00, 0x3F, 0x95, 0x00, 0x20, 0xA4, 0x80, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9167, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x40, 0x80, 0x7F, 0x40, 0x80, 0x55, 0x02, 0x00, 0x55, 0x02, 0x00, 0x55, 0x7F, 0x80, 0x67, 0x02, 0x00, 0x41, 0x32, 0x00, 0x41, 0x1A, 0x00, 0x7F, 0x0A, 0x00, 0x41, 0x02, 0x00, 0x41, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9169, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x0A, 0x1F, 0x00, 0x0A, 0x31, 0x00, 0x0A, 0x4A, 0x00, 0x3F, 0x8C, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0xA0, 0x00, 0x33, 0xFF, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x916A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x0A, 0x1F, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x62, 0x00, 0x3F, 0x94, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x96, 0x00, 0x33, 0xA1, 0x80, 0x20, 0xC0, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x916C, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x0C, 0x24, 0x80, 0x0C, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x2D, 0x24, 0x80, 0x2D, 0xB6, 0x80, 0x2F, 0xB6, 0x80, 0x31, 0xB6, 0x80, 0x21, 0x24, 0x80, 0x21, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x21, 0x24, 0x80, 0x21, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x21, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x916D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x10, 0x00, 0x7F, 0x30, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x61, 0x00, 0x55, 0xE1, 0x00, 0x67, 0x3F, 0x00, 0x41, 0x21, 0x00, 0x41, 0x21, 0x00, 0x7F, 0x3F, 0x00, 0x41, 0x21, 0x00, 0x41, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x916E, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x57, 0x5D, 0x00, 0x61, 0x55, 0x00, 0x41, 0x55, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x5D, 0x00, 0x41, 0x41, 0x00, 0x41, 0x41, 0x00, 0x7F, 0x45, 0x00, 0x41, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x916F, { 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x7F, 0xE2, 0x00, 0x0A, 0x26, 0x00, 0x0A, 0x28, 0x00, 0x3F, 0xB1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0xBF, 0x00, 0x30, 0xA2, 0x00, 0x20, 0xA2, 0x00, 0x3F, 0xBE, 0x00, 0x20, 0xA2, 0x00, 0x20, 0xA2, 0x00, 0x3F, 0xBE, 0x00, 0x20, 0xA2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9170, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x7F, 0xC8, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x3E, 0x00, 0x3F, 0xA8, 0x00, 0x2A, 0xC8, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xFF, 0x00, 0x2B, 0x94, 0x00, 0x30, 0x94, 0x00, 0x20, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x20, 0x95, 0x00, 0x20, 0xA5, 0x00, 0x3F, 0xC3, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9171, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x22, 0x7C, 0x00, 0x12, 0x44, 0x00, 0x06, 0xC8, 0x00, 0x0B, 0x30, 0x00, 0x32, 0x20, 0x00, 0x02, 0x42, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x12, 0x24, 0x00, 0x1C, 0x1C, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x2A, 0x9F, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x83, 0x00, 0x33, 0x9E, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x9F, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9173, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xC8, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x0A, 0x00, 0x3F, 0x84, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0xBF, 0x80, 0x2A, 0x80, 0x80, 0x33, 0x9F, 0x00, 0x20, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9174, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x1C, 0x00, 0x14, 0x14, 0x00, 0x14, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x55, 0xC1, 0x80, 0x55, 0x3E, 0x00, 0x55, 0x08, 0x00, 0x67, 0x08, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x2A, 0x00, 0x41, 0x2A, 0x00, 0x41, 0x6B, 0x00, 0x7F, 0xC9, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9175, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x0C, 0x11, 0x00, 0x0C, 0xFE, 0x00, 0x0C, 0x12, 0x00, 0x3F, 0x14, 0x00, 0x2D, 0xFF, 0x80, 0x2D, 0x10, 0x00, 0x2F, 0x3E, 0x00, 0x31, 0xC4, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9176, { 0x00, 0x00, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xA2, 0x00, 0x14, 0x3F, 0x00, 0x15, 0x40, 0x00, 0x7F, 0x82, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x22, 0x00, 0x57, 0x32, 0x00, 0x61, 0x2A, 0x00, 0x41, 0xFF, 0x00, 0x41, 0x42, 0x00, 0x7F, 0x52, 0x00, 0x41, 0x4A, 0x00, 0x41, 0x7E, 0x00, 0x7F, 0x02, 0x00, 0x41, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9177, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x28, 0x00, 0x0C, 0x28, 0x00, 0x0C, 0x7F, 0x00, 0x0C, 0x48, 0x00, 0x3F, 0x88, 0x00, 0x2D, 0x08, 0x00, 0x2D, 0xFF, 0x80, 0x2F, 0x08, 0x00, 0x31, 0x00, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x21, 0x41, 0x00, 0x21, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9178, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x92, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x4F, 0x80, 0x3F, 0xF4, 0x80, 0x2A, 0x94, 0x00, 0x2A, 0xA4, 0x80, 0x2A, 0xC7, 0x80, 0x33, 0x90, 0x00, 0x20, 0x9F, 0x80, 0x20, 0xA1, 0x00, 0x3F, 0xD2, 0x00, 0x20, 0x8C, 0x00, 0x20, 0x8C, 0x00, 0x3F, 0xB2, 0x00, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9179, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x7F, 0x0F, 0x00, 0x14, 0x78, 0x00, 0x14, 0x09, 0x00, 0x7F, 0x2D, 0x80, 0x55, 0x64, 0x80, 0x55, 0x40, 0x00, 0x55, 0x01, 0x00, 0x67, 0x7F, 0x80, 0x41, 0x01, 0x00, 0x41, 0x31, 0x00, 0x7F, 0x19, 0x00, 0x41, 0x09, 0x00, 0x41, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x917A, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x7F, 0x09, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x67, 0x7F, 0x00, 0x41, 0x49, 0x00, 0x41, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x49, 0x00, 0x41, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x917B, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x7F, 0x07, 0x00, 0x14, 0xFD, 0x00, 0x14, 0x29, 0x80, 0x7F, 0x6C, 0x80, 0x55, 0x44, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x00, 0x80, 0x67, 0x03, 0x00, 0x41, 0x04, 0x00, 0x41, 0x7F, 0x80, 0x7F, 0x04, 0x00, 0x41, 0x04, 0x00, 0x41, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x917D, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x14, 0x14, 0x00, 0x14, 0x55, 0x00, 0x7F, 0x36, 0x00, 0x55, 0x14, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x40, 0x00, 0x57, 0x40, 0x00, 0x61, 0x40, 0x00, 0x41, 0x40, 0x00, 0x7F, 0x40, 0x00, 0x41, 0x40, 0x00, 0x41, 0x40, 0x00, 0x7F, 0x80, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x917E, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x14, 0x00, 0x00, 0x14, 0x02, 0x00, 0x3E, 0xEF, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x36, 0xAA, 0x00, 0x22, 0xEE, 0x00, 0x22, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x22, 0xAA, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x917F, { 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x7F, 0xCA, 0x00, 0x0A, 0x3F, 0x00, 0x0A, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0xA2, 0x00, 0x2B, 0xA2, 0x00, 0x30, 0xBE, 0x00, 0x20, 0xB0, 0x00, 0x20, 0xA9, 0x00, 0x3F, 0xAA, 0x00, 0x20, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x3F, 0xB2, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9181, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x3E, 0x00, 0x14, 0x62, 0x00, 0x14, 0x46, 0x00, 0x7F, 0x7C, 0x00, 0x55, 0x04, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x67, 0x49, 0x00, 0x41, 0x6B, 0x00, 0x41, 0x2E, 0x00, 0x7F, 0x1C, 0x00, 0x41, 0x2E, 0x00, 0x41, 0x6B, 0x00, 0x7F, 0xC9, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9182, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x14, 0x22, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x55, 0x22, 0x00, 0x55, 0x22, 0x00, 0x55, 0x77, 0x00, 0x67, 0x77, 0x00, 0x41, 0xAA, 0x80, 0x41, 0xAA, 0x80, 0x7F, 0x22, 0x00, 0x41, 0x22, 0x00, 0x41, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9183, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x7F, 0x2A, 0x00, 0x55, 0x49, 0x00, 0x55, 0xFF, 0x80, 0x55, 0xC9, 0x80, 0x67, 0x49, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x08, 0x80, 0x7F, 0x09, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9185, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x41, 0x00, 0x7F, 0x63, 0x00, 0x55, 0x22, 0x00, 0x55, 0x22, 0x00, 0x55, 0xFF, 0x80, 0x67, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x41, 0x00, 0x41, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9186, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7F, 0x22, 0x00, 0x14, 0x3F, 0x00, 0x14, 0xF0, 0x00, 0x7F, 0x1B, 0x00, 0x55, 0x0C, 0x00, 0x55, 0x36, 0x80, 0x55, 0xC3, 0x80, 0x67, 0x24, 0x00, 0x41, 0x22, 0x00, 0x41, 0x3F, 0x00, 0x7F, 0xF0, 0x00, 0x41, 0x1B, 0x00, 0x41, 0x0C, 0x00, 0x7F, 0x36, 0x80, 0x00, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9187, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x0C, 0x00, 0x00, 0x0C, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x2D, 0x7F, 0x00, 0x2D, 0x41, 0x00, 0x2F, 0x00, 0x00, 0x31, 0x7E, 0x00, 0x21, 0x04, 0x00, 0x3F, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9189, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x7F, 0x80, 0x0A, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x2A, 0xAA, 0x80, 0x2A, 0xA4, 0x80, 0x2B, 0x80, 0x00, 0x30, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x918A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x77, 0x00, 0x14, 0x11, 0x00, 0x14, 0x55, 0x00, 0x7F, 0x22, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x00, 0x00, 0x67, 0x77, 0x00, 0x41, 0x11, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x41, 0x22, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x918B, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x0A, 0x12, 0x00, 0x0A, 0x3F, 0x00, 0x0A, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFF, 0x80, 0x33, 0x80, 0x00, 0x20, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xBF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x918C, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x42, 0x00, 0x14, 0x42, 0x00, 0x7F, 0x7E, 0x00, 0x55, 0x42, 0x00, 0x55, 0x42, 0x00, 0x55, 0x7E, 0x00, 0x57, 0x08, 0x00, 0x61, 0x48, 0x00, 0x41, 0x49, 0x00, 0x7F, 0x7A, 0x00, 0x41, 0x4C, 0x00, 0x41, 0x59, 0x00, 0x7F, 0x69, 0x00, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x918D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x0C, 0x21, 0x00, 0x0C, 0x3F, 0x00, 0x0C, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x2D, 0x21, 0x00, 0x2D, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x4F, 0x80, 0x21, 0x48, 0x00, 0x21, 0x48, 0x00, 0x3F, 0xBF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x918E, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x7F, 0x82, 0x80, 0x14, 0x02, 0x00, 0x14, 0x7F, 0x80, 0x7F, 0x42, 0x00, 0x55, 0x7A, 0x00, 0x55, 0x42, 0x00, 0x55, 0x7A, 0x80, 0x67, 0x4A, 0x80, 0x41, 0x4B, 0x00, 0x41, 0x4B, 0x00, 0x7F, 0x7A, 0x00, 0x41, 0x46, 0x00, 0x41, 0x46, 0x80, 0x7F, 0x4B, 0x80, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9190, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x27, 0x80, 0x14, 0x24, 0x80, 0x14, 0x24, 0x80, 0x7F, 0xFC, 0x80, 0x55, 0x27, 0x80, 0x55, 0x24, 0x80, 0x55, 0x24, 0x80, 0x67, 0x74, 0x80, 0x41, 0x57, 0x80, 0x41, 0x54, 0x80, 0x7F, 0x54, 0x80, 0x41, 0x54, 0x80, 0x41, 0x54, 0x80, 0x7F, 0x74, 0x80, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x08, 0x80, 0x14, 0x4F, 0x00, 0x7F, 0x48, 0x00, 0x55, 0x68, 0x00, 0x55, 0xDF, 0x80, 0x55, 0x00, 0x00, 0x67, 0x7F, 0x00, 0x41, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x0C, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x2D, 0x28, 0x00, 0x33, 0x28, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x48, 0x00, 0x3F, 0x88, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9193, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x55, 0x08, 0x00, 0x55, 0x1C, 0x00, 0x55, 0x14, 0x80, 0x67, 0x35, 0x80, 0x41, 0x67, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x55, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9194, { 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x3C, 0x48, 0x80, 0x08, 0x49, 0x80, 0x7E, 0xDD, 0x00, 0x1C, 0x94, 0x00, 0x3A, 0x36, 0x00, 0x68, 0x63, 0x00, 0x09, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9195, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x00, 0x00, 0x7F, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x55, 0x21, 0x00, 0x55, 0x3F, 0x00, 0x67, 0x00, 0x00, 0x41, 0x7F, 0x80, 0x41, 0x40, 0x80, 0x7F, 0x40, 0x80, 0x41, 0x7F, 0x80, 0x41, 0x40, 0x80, 0x7F, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7D, 0x00, 0x14, 0x12, 0x00, 0x14, 0x52, 0x80, 0x7F, 0x33, 0x00, 0x55, 0x21, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x12, 0x00, 0x67, 0x12, 0x00, 0x41, 0x12, 0x00, 0x41, 0x7F, 0x80, 0x7F, 0x12, 0x00, 0x41, 0x12, 0x00, 0x41, 0x32, 0x80, 0x7F, 0x22, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9198, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x3E, 0x00, 0x14, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x55, 0x10, 0x00, 0x55, 0x32, 0x00, 0x55, 0x27, 0x00, 0x67, 0x7D, 0x00, 0x41, 0x00, 0x00, 0x41, 0x7F, 0x00, 0x7F, 0x55, 0x00, 0x41, 0x55, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x919A, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x14, 0x29, 0x00, 0x14, 0x9A, 0x00, 0x7F, 0x5C, 0x00, 0x55, 0x08, 0x00, 0x55, 0x3F, 0x00, 0x57, 0xC8, 0x00, 0x61, 0x58, 0x00, 0x41, 0x5C, 0x00, 0x41, 0x6B, 0x00, 0x7F, 0x49, 0x00, 0x41, 0x48, 0x00, 0x41, 0x48, 0x00, 0x7F, 0xA3, 0x00, 0x41, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x919B, { 0x00, 0x00, 0x00, 0x02, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x44, 0x00, 0x7F, 0x10, 0x00, 0x55, 0x28, 0x00, 0x55, 0x47, 0x00, 0x55, 0x82, 0x00, 0x63, 0x7C, 0x00, 0x41, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x41, 0x7C, 0x00, 0x41, 0x10, 0x00, 0x7F, 0x12, 0x00, 0x41, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x919C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x10, 0x00, 0x0C, 0x7E, 0x00, 0x0C, 0x52, 0x00, 0x0C, 0x52, 0x00, 0x3F, 0x7E, 0x00, 0x2D, 0x52, 0x00, 0x2D, 0x52, 0x00, 0x37, 0x7E, 0x00, 0x21, 0x2A, 0x00, 0x21, 0x2D, 0x00, 0x3F, 0x2F, 0x80, 0x21, 0x28, 0x00, 0x21, 0x48, 0x80, 0x3F, 0x4F, 0x80, 0x21, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x919E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x3E, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x55, 0x36, 0x00, 0x55, 0x22, 0x00, 0x55, 0x3E, 0x00, 0x67, 0x00, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x41, 0x55, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91A1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x92, 0x80, 0x7F, 0x32, 0x80, 0x55, 0x62, 0x00, 0x55, 0xC3, 0x80, 0x55, 0x20, 0x00, 0x67, 0x3F, 0x80, 0x41, 0x68, 0x00, 0x41, 0xCF, 0x00, 0x7F, 0x08, 0x00, 0x41, 0x0F, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91A2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x55, 0x7F, 0x00, 0x55, 0xA1, 0x00, 0x55, 0x21, 0x00, 0x67, 0x3F, 0x00, 0x41, 0x00, 0x00, 0x41, 0x7F, 0x00, 0x7F, 0x55, 0x00, 0x41, 0x55, 0x00, 0x41, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91A3, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0x0A, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x88, 0x00, 0x3E, 0xBE, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x8A, 0x00, 0x36, 0xBE, 0x00, 0x22, 0x88, 0x00, 0x22, 0xBE, 0x00, 0x3E, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x3F, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91A4, { 0x00, 0x00, 0x00, 0x24, 0x07, 0x00, 0x35, 0xFC, 0x00, 0x14, 0x91, 0x00, 0x04, 0x4A, 0x00, 0x1F, 0xFF, 0x80, 0x74, 0x82, 0x00, 0x04, 0x46, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x1E, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91A6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x24, 0x00, 0x14, 0x3C, 0x00, 0x14, 0x42, 0x00, 0x7F, 0x94, 0x80, 0x55, 0xF7, 0x80, 0x55, 0x08, 0x00, 0x55, 0x14, 0x00, 0x67, 0x22, 0x00, 0x41, 0xC9, 0x80, 0x41, 0x10, 0x00, 0x7F, 0x64, 0x00, 0x41, 0x19, 0x00, 0x41, 0x63, 0x00, 0x7F, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91A8, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x00, 0x00, 0x3F, 0xAA, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xBF, 0x80, 0x33, 0x84, 0x00, 0x20, 0xBF, 0x80, 0x20, 0xA8, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xBD, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xA0, 0x80, 0x00, 0x21, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x77, 0x00, 0x14, 0x33, 0x00, 0x14, 0x55, 0x00, 0x7F, 0x33, 0x00, 0x55, 0x55, 0x00, 0x55, 0x08, 0x00, 0x55, 0x1C, 0x00, 0x67, 0x36, 0x00, 0x41, 0xE3, 0x80, 0x41, 0x08, 0x00, 0x7F, 0x32, 0x00, 0x41, 0x0C, 0x80, 0x41, 0x31, 0x00, 0x7F, 0x06, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91AB, { 0x00, 0x00, 0x00, 0x3F, 0xDE, 0x00, 0x24, 0x12, 0x00, 0x2F, 0x92, 0x80, 0x32, 0x23, 0x80, 0x3F, 0xC0, 0x00, 0x25, 0x7F, 0x00, 0x28, 0xA2, 0x00, 0x3F, 0x9C, 0x00, 0x20, 0x77, 0x80, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91AC, { 0x00, 0x00, 0x00, 0x22, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x3F, 0xA6, 0x00, 0x22, 0x5A, 0x00, 0x02, 0xE2, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x22, 0x0E, 0x00, 0x22, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0x3F, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91AD, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x7F, 0x55, 0x00, 0x14, 0x55, 0x00, 0x14, 0x14, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x55, 0x14, 0x00, 0x55, 0xFF, 0x80, 0x67, 0x08, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x14, 0x00, 0x41, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91AE, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3F, 0xA4, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x64, 0x00, 0x0A, 0xA4, 0x00, 0x3F, 0xBF, 0x80, 0x2A, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x33, 0xBF, 0x80, 0x20, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x00, 0x20, 0x80, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xCA, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91AF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x0C, 0x12, 0x00, 0x0C, 0x27, 0x00, 0x3F, 0xF8, 0x80, 0x2D, 0x2A, 0x00, 0x2D, 0x2A, 0x00, 0x2F, 0x4A, 0x80, 0x31, 0x8B, 0x80, 0x21, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x55, 0x00, 0x21, 0x55, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x14, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x55, 0x00, 0x55, 0x5D, 0x00, 0x55, 0x00, 0x00, 0x55, 0x3E, 0x00, 0x67, 0x22, 0x00, 0x41, 0x3E, 0x00, 0x41, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x41, 0x08, 0x00, 0x41, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFA, 0x00, 0x08, 0x14, 0x80, 0x08, 0xA3, 0x00, 0x08, 0x41, 0x80, 0x3F, 0x80, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0x2A, 0x80, 0x36, 0xEB, 0x80, 0x22, 0x90, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0xA9, 0x00, 0x22, 0x26, 0x00, 0x22, 0x26, 0x00, 0x3E, 0x29, 0x00, 0x22, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91B2, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x55, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x55, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x00, 0x00, 0x55, 0x7F, 0x80, 0x67, 0x40, 0x00, 0x41, 0x5F, 0x00, 0x41, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x41, 0x55, 0x00, 0x41, 0x56, 0x00, 0x7F, 0x9B, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91B3, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x7F, 0x94, 0x80, 0x14, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x67, 0x36, 0x00, 0x41, 0x14, 0x00, 0x41, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91B4, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3F, 0x14, 0x00, 0x0C, 0x7F, 0x00, 0x0C, 0x55, 0x00, 0x0C, 0x7F, 0x00, 0x3F, 0x55, 0x00, 0x2D, 0x7F, 0x00, 0x2D, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x14, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91B5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x0C, 0x7F, 0x80, 0x0C, 0x50, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x50, 0x00, 0x2D, 0x5F, 0x80, 0x2D, 0x40, 0x00, 0x37, 0x7F, 0x80, 0x21, 0x49, 0x00, 0x21, 0x5E, 0x00, 0x3F, 0x57, 0x00, 0x21, 0x6B, 0x00, 0x21, 0x52, 0x80, 0x3F, 0x62, 0x80, 0x21, 0x8C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91B6, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x1C, 0x00, 0x14, 0x36, 0x00, 0x14, 0x63, 0x00, 0x7F, 0x41, 0x80, 0x55, 0x3E, 0x00, 0x55, 0x00, 0x00, 0x55, 0x77, 0x00, 0x67, 0x55, 0x00, 0x41, 0x55, 0x00, 0x41, 0x77, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x22, 0x00, 0x41, 0x22, 0x00, 0x7F, 0x77, 0x00, 0x00, 0xD5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91B8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x12, 0x00, 0x7F, 0x61, 0x80, 0x55, 0x12, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x12, 0x00, 0x67, 0x3F, 0x00, 0x41, 0x12, 0x00, 0x41, 0x7F, 0x80, 0x7F, 0x12, 0x00, 0x41, 0x32, 0x80, 0x41, 0x63, 0x00, 0x7F, 0x39, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91BA, { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x7F, 0x7C, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x6B, 0x00, 0x55, 0x5D, 0x00, 0x67, 0x49, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x41, 0xFF, 0x80, 0x7F, 0x55, 0x00, 0x00, 0x54, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91BB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x14, 0x3E, 0x00, 0x7F, 0x00, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x00, 0x80, 0x55, 0x3E, 0x80, 0x67, 0x08, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x7F, 0x80, 0x41, 0x01, 0x00, 0x41, 0x7F, 0x80, 0x7F, 0x55, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91BC, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x55, 0x41, 0x00, 0x55, 0x5D, 0x80, 0x55, 0xD5, 0x00, 0x67, 0x55, 0x00, 0x41, 0x55, 0x00, 0x41, 0x5D, 0x00, 0x7F, 0xC1, 0x80, 0x41, 0x00, 0x00, 0x41, 0x55, 0x00, 0x7F, 0xD5, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF, 0x80, 0x0A, 0x04, 0x00, 0x0A, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x2A, 0xB6, 0x80, 0x2A, 0xA4, 0x00, 0x2A, 0x92, 0x00, 0x33, 0x80, 0x00, 0x20, 0xBF, 0x80, 0x20, 0xAA, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xAA, 0x80, 0x20, 0xAA, 0x80, 0x3F, 0xAA, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91BF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x51, 0x00, 0x14, 0x7B, 0x80, 0x7F, 0x51, 0x00, 0x55, 0x7B, 0x80, 0x55, 0x55, 0x00, 0x55, 0x51, 0x00, 0x67, 0x48, 0x00, 0x41, 0x52, 0x00, 0x41, 0x54, 0x00, 0x7F, 0x49, 0x00, 0x41, 0x7E, 0x80, 0x41, 0x84, 0x00, 0x7F, 0x15, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91C0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0xE7, 0x00, 0x08, 0xA5, 0x00, 0x3E, 0xE7, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0xFF, 0x00, 0x36, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x69, 0x00, 0x23, 0xC6, 0x00, 0x3E, 0x7A, 0x00, 0x23, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91C1, { 0x00, 0x00, 0x00, 0x3B, 0xF7, 0x00, 0x22, 0x11, 0x00, 0x3B, 0xD7, 0x00, 0x22, 0x51, 0x00, 0x7F, 0xFF, 0x80, 0x41, 0x20, 0x80, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1C, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x71, 0x0B, 0x80, 0x07, 0x08, 0x00, 0x1C, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91C2, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x7E, 0xFF, 0x00, 0x14, 0x52, 0x00, 0x14, 0x89, 0x00, 0x7F, 0x7F, 0x00, 0x55, 0x55, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x00, 0x00, 0x67, 0x71, 0x00, 0x41, 0x57, 0x80, 0x41, 0x71, 0x00, 0x7F, 0x55, 0x00, 0x41, 0x75, 0x00, 0x41, 0x41, 0x00, 0x7F, 0x71, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x77, 0x80, 0x14, 0x00, 0x00, 0x14, 0x77, 0x80, 0x7F, 0x54, 0x80, 0x55, 0x08, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x54, 0x00, 0x67, 0x7F, 0x80, 0x41, 0x54, 0x80, 0x41, 0x7F, 0x80, 0x7F, 0x52, 0x00, 0x41, 0x5B, 0x80, 0x41, 0x92, 0x00, 0x7F, 0x1A, 0x80, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91C5, { 0x00, 0x00, 0x00, 0x00, 0xF7, 0x80, 0x7E, 0x94, 0x80, 0x14, 0xF7, 0x80, 0x14, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x55, 0x7A, 0x00, 0x55, 0x22, 0x00, 0x67, 0xFB, 0x80, 0x41, 0x4E, 0x80, 0x41, 0x7A, 0x80, 0x7F, 0x4B, 0x80, 0x41, 0x79, 0x00, 0x41, 0x4B, 0x80, 0x7F, 0x7A, 0x80, 0x02, 0xCA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91C6, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xC0, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x06, 0x98, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x30, 0x83, 0x00, 0x60, 0x81, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91C7, { 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x21, 0x00, 0x08, 0x10, 0x80, 0x10, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91C8, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x78, 0x41, 0x00, 0x08, 0x41, 0x00, 0x49, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x48, 0x00, 0x08, 0x48, 0x00, 0x18, 0x48, 0x00, 0x1C, 0x4C, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x46, 0x00, 0x48, 0xC2, 0x00, 0x08, 0x83, 0x00, 0x09, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91C9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x14, 0x88, 0x00, 0x15, 0x08, 0x00, 0x15, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x0D, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x14, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91CA, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x1C, 0x10, 0x00, 0x08, 0x28, 0x00, 0x7F, 0x47, 0x00, 0x09, 0x92, 0x00, 0x18, 0x10, 0x00, 0x1C, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x28, 0x12, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91CB, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x55, 0x00, 0x25, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x88, 0x00, 0x04, 0xFF, 0x80, 0x0E, 0x22, 0x00, 0x0D, 0x14, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91CD, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x81, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x8C, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x85, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x38, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91CF, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91D0, { 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x1C, 0x1F, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xD4, 0x00, 0x0E, 0x8C, 0x00, 0x15, 0x13, 0x80, 0x24, 0xA0, 0x00, 0x1F, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91D1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91D3, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x0B, 0x20, 0x00, 0x19, 0xA0, 0x00, 0x10, 0xA0, 0x00, 0x3F, 0x20, 0x00, 0x64, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0x20, 0x00, 0x25, 0x20, 0x00, 0x35, 0x20, 0x00, 0x14, 0x20, 0x00, 0x07, 0xA0, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91D4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x0B, 0x02, 0x00, 0x19, 0x86, 0x00, 0x10, 0x04, 0x00, 0x3F, 0x0C, 0x00, 0x64, 0x08, 0x00, 0x04, 0x18, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x10, 0x00, 0x25, 0x30, 0x00, 0x35, 0x20, 0x00, 0x14, 0x20, 0x00, 0x07, 0xA0, 0x80, 0x1C, 0x31, 0x80, 0x70, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91D6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x80, 0x0B, 0x08, 0x80, 0x19, 0x88, 0x80, 0x10, 0x08, 0x80, 0x3F, 0x08, 0x80, 0x64, 0x08, 0x80, 0x04, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x18, 0x80, 0x25, 0x10, 0x80, 0x35, 0x10, 0x80, 0x14, 0x31, 0x80, 0x07, 0xA1, 0x00, 0x1C, 0x61, 0x00, 0x70, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91D7, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0A, 0x11, 0x00, 0x11, 0x11, 0x00, 0x20, 0x11, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x91, 0x00, 0x25, 0x11, 0x00, 0x15, 0x11, 0x00, 0x14, 0x11, 0x00, 0x07, 0xC1, 0x00, 0x38, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91D8, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x20, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x24, 0x88, 0x00, 0x25, 0x08, 0x00, 0x15, 0x08, 0x00, 0x14, 0x08, 0x00, 0x07, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91D9, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x0B, 0x10, 0x00, 0x19, 0x90, 0x00, 0x10, 0x90, 0x00, 0x3F, 0x18, 0x00, 0x64, 0x1C, 0x00, 0x04, 0x16, 0x00, 0x3F, 0x93, 0x00, 0x04, 0x11, 0x80, 0x25, 0x10, 0x00, 0x35, 0x10, 0x00, 0x14, 0x10, 0x00, 0x07, 0x90, 0x00, 0x1C, 0x10, 0x00, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91DA, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x0B, 0x10, 0x00, 0x19, 0x90, 0x00, 0x10, 0x7E, 0x00, 0x3F, 0x12, 0x00, 0x64, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x25, 0x32, 0x00, 0x35, 0x22, 0x00, 0x14, 0x22, 0x00, 0x07, 0x62, 0x80, 0x1C, 0x42, 0x80, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91DB, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x7F, 0x80, 0x3F, 0x08, 0x80, 0x64, 0x08, 0x80, 0x04, 0x08, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x18, 0x80, 0x25, 0x10, 0x80, 0x35, 0x10, 0x80, 0x14, 0x31, 0x80, 0x07, 0xA1, 0x00, 0x1C, 0x61, 0x00, 0x70, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91DC, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x32, 0x05, 0x80, 0x05, 0x08, 0x00, 0x00, 0x90, 0x00, 0x00, 0x60, 0x00, 0x03, 0x98, 0x00, 0x3C, 0x07, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91DD, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x25, 0x04, 0x00, 0x15, 0x04, 0x00, 0x15, 0x04, 0x00, 0x07, 0x84, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91DE, { 0x00, 0x00, 0x00, 0x04, 0x38, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x14, 0x00, 0x25, 0x14, 0x00, 0x35, 0x14, 0x00, 0x14, 0x36, 0x00, 0x07, 0xA2, 0x00, 0x1C, 0x63, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91DF, { 0x00, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x1C, 0x04, 0x00, 0x16, 0x04, 0x00, 0x32, 0x24, 0x00, 0x20, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x66, 0x00, 0x4A, 0x42, 0x00, 0x6A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x0E, 0xC3, 0x00, 0x38, 0x81, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91E1, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x8C, 0x00, 0x39, 0xC7, 0x00, 0x03, 0x60, 0x00, 0x06, 0x38, 0x00, 0x1C, 0x0E, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x84, 0x00, 0x0C, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91E3, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x11, 0x10, 0x00, 0x20, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0x40, 0x80, 0x04, 0x40, 0x80, 0x04, 0x80, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x08, 0x80, 0x25, 0x04, 0x80, 0x15, 0x00, 0x80, 0x14, 0x00, 0x80, 0x07, 0x80, 0x80, 0x38, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91E4, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0E, 0x06, 0x00, 0x0B, 0x0C, 0x00, 0x19, 0x98, 0x00, 0x10, 0x31, 0x00, 0x3F, 0x03, 0x00, 0x64, 0x06, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0x98, 0x00, 0x04, 0x30, 0x80, 0x25, 0x01, 0x80, 0x35, 0x03, 0x00, 0x14, 0x06, 0x00, 0x07, 0x8C, 0x00, 0x1C, 0x18, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91E5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x7F, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x4A, 0xC9, 0x80, 0x6A, 0x88, 0x80, 0x28, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91E6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x3F, 0x80, 0x19, 0xA0, 0x80, 0x10, 0x20, 0x80, 0x3F, 0x20, 0x80, 0x64, 0x20, 0x80, 0x04, 0x20, 0x80, 0x7F, 0xA0, 0x80, 0x04, 0x20, 0x80, 0x25, 0x20, 0x80, 0x35, 0x20, 0x80, 0x14, 0x20, 0x80, 0x07, 0xA0, 0x80, 0x1C, 0x3F, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91E7, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x14, 0x49, 0x00, 0x22, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x28, 0x49, 0x00, 0x0F, 0x49, 0x00, 0x38, 0x49, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91E9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3E, 0x00, 0x0B, 0x22, 0x00, 0x19, 0xA2, 0x00, 0x10, 0x22, 0x00, 0x3F, 0x2A, 0x00, 0x64, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x22, 0x00, 0x25, 0x22, 0x00, 0x35, 0x22, 0x00, 0x14, 0x22, 0x00, 0x07, 0x62, 0x80, 0x1C, 0x42, 0x80, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91EA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x00, 0x22, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91EC, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x80, 0x0B, 0x04, 0x00, 0x19, 0x84, 0x00, 0x10, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x64, 0x04, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x25, 0x04, 0x00, 0x35, 0x04, 0x00, 0x14, 0x04, 0x00, 0x07, 0x84, 0x00, 0x1C, 0x04, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91ED, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x7F, 0x00, 0x19, 0x88, 0x00, 0x10, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x25, 0x08, 0x00, 0x35, 0x08, 0x00, 0x14, 0x08, 0x00, 0x07, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91EE, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x19, 0x82, 0x00, 0x10, 0x7F, 0x80, 0x3F, 0x0A, 0x00, 0x64, 0x0A, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x9A, 0x00, 0x04, 0x12, 0x00, 0x25, 0x12, 0x00, 0x35, 0x32, 0x00, 0x14, 0x62, 0x00, 0x07, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91EF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x20, 0x7F, 0x80, 0x7E, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x08, 0x40, 0x00, 0x4A, 0x40, 0x00, 0x6A, 0x40, 0x00, 0x28, 0x40, 0x00, 0x0E, 0x60, 0x00, 0x38, 0x3F, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91F0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x0B, 0x09, 0x00, 0x19, 0x89, 0x00, 0x10, 0x29, 0x00, 0x3F, 0x29, 0x00, 0x64, 0x29, 0x00, 0x04, 0x69, 0x00, 0x3F, 0x49, 0x00, 0x04, 0x09, 0x00, 0x25, 0x19, 0x00, 0x35, 0x11, 0x00, 0x14, 0x11, 0x00, 0x07, 0xB3, 0x00, 0x1C, 0x62, 0x00, 0x70, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91F1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x7F, 0x80, 0x3F, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x1C, 0x00, 0x25, 0x14, 0x00, 0x35, 0x14, 0x00, 0x14, 0x36, 0x00, 0x07, 0xA2, 0x00, 0x1C, 0x63, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91F5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x00, 0x02, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x18, 0x00, 0x28, 0x28, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x82, 0x00, 0x01, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91F6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x48, 0x00, 0x16, 0x48, 0x00, 0x33, 0x4B, 0x00, 0x20, 0x4D, 0x00, 0x7E, 0x59, 0x00, 0x08, 0x69, 0x00, 0x08, 0xC9, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x4B, 0x00, 0x6A, 0x48, 0x00, 0x28, 0x40, 0x00, 0x0E, 0x40, 0x80, 0x38, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91F7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x64, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x25, 0x08, 0x00, 0x35, 0x08, 0x00, 0x14, 0x08, 0x00, 0x07, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91F9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x7F, 0x80, 0x3F, 0x11, 0x00, 0x64, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xB3, 0x00, 0x04, 0x22, 0x00, 0x25, 0x22, 0x00, 0x35, 0x7E, 0x00, 0x14, 0x07, 0x00, 0x07, 0x8D, 0x80, 0x1C, 0x18, 0x80, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91FB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x0B, 0x10, 0x00, 0x19, 0x90, 0x00, 0x10, 0x7E, 0x00, 0x3F, 0x12, 0x00, 0x64, 0x12, 0x00, 0x04, 0x52, 0x00, 0x3F, 0xB2, 0x00, 0x04, 0x12, 0x00, 0x25, 0x1A, 0x00, 0x35, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x07, 0x62, 0x80, 0x1C, 0x42, 0x80, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91FC, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x0B, 0x09, 0x00, 0x19, 0x89, 0x00, 0x10, 0x09, 0x00, 0x3F, 0x09, 0x00, 0x64, 0x29, 0x00, 0x04, 0x19, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0D, 0x00, 0x25, 0x1B, 0x00, 0x35, 0x11, 0x80, 0x14, 0x11, 0x00, 0x07, 0xB3, 0x00, 0x1C, 0x62, 0x00, 0x70, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x91FD, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x1C, 0x1C, 0x00, 0x16, 0x74, 0x00, 0x32, 0x44, 0x00, 0x20, 0x54, 0x00, 0x7E, 0x54, 0x00, 0x08, 0x54, 0x00, 0x08, 0x54, 0x00, 0x7E, 0x54, 0x00, 0x08, 0x56, 0x00, 0x4A, 0x52, 0x00, 0x6A, 0x52, 0x00, 0x28, 0x52, 0x00, 0x0E, 0xD3, 0x00, 0x38, 0x91, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x91FF, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x0E, 0x0E, 0x00, 0x0B, 0x38, 0x00, 0x19, 0xA0, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x3F, 0x80, 0x64, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x25, 0x22, 0x00, 0x35, 0x22, 0x00, 0x14, 0x62, 0x00, 0x07, 0x42, 0x00, 0x1C, 0xC2, 0x00, 0x70, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9200, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x33, 0x49, 0x00, 0x20, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x4A, 0x40, 0x00, 0x6A, 0x40, 0x00, 0x28, 0x40, 0x80, 0x0F, 0x61, 0x80, 0x38, 0x3F, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9201, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x7F, 0x80, 0x10, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x64, 0x10, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x25, 0x11, 0x00, 0x35, 0x31, 0x00, 0x14, 0x23, 0x00, 0x07, 0xA2, 0x00, 0x1C, 0x62, 0x00, 0x70, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9204, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x0B, 0x32, 0x00, 0x19, 0x9A, 0x00, 0x10, 0x0A, 0x00, 0x3F, 0x02, 0x00, 0x64, 0x32, 0x00, 0x04, 0x1A, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x02, 0x00, 0x25, 0x03, 0x80, 0x35, 0x1E, 0x00, 0x14, 0x72, 0x00, 0x07, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x70, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9205, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x1F, 0x00, 0x0B, 0x11, 0x00, 0x19, 0x91, 0x00, 0x10, 0x11, 0x00, 0x3F, 0x1F, 0x00, 0x64, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x1F, 0x00, 0x25, 0x11, 0x00, 0x35, 0x11, 0x00, 0x14, 0x11, 0x00, 0x07, 0xB1, 0x00, 0x1C, 0x21, 0x00, 0x70, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9206, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x0E, 0x00, 0x0B, 0x02, 0x00, 0x19, 0x92, 0x00, 0x10, 0x13, 0x00, 0x3F, 0x31, 0x00, 0x64, 0x21, 0x00, 0x04, 0x61, 0x80, 0x3F, 0x00, 0x00, 0x04, 0x10, 0x00, 0x25, 0x12, 0x00, 0x35, 0x12, 0x00, 0x14, 0x33, 0x00, 0x07, 0xA1, 0x00, 0x1C, 0x27, 0x00, 0x70, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9207, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x4A, 0x1C, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x36, 0x00, 0x0F, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9209, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x5D, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x55, 0x00, 0x4A, 0x63, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x920A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x0C, 0x00, 0x16, 0x04, 0x00, 0x33, 0x04, 0x00, 0x20, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x11, 0x00, 0x7E, 0x51, 0x80, 0x08, 0x50, 0x80, 0x4A, 0x50, 0x80, 0x6A, 0xD0, 0x00, 0x28, 0x91, 0x00, 0x0E, 0x11, 0x00, 0x38, 0x19, 0x00, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x920C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x7F, 0x00, 0x10, 0x09, 0x00, 0x3F, 0x09, 0x00, 0x64, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x7F, 0x80, 0x04, 0x14, 0x00, 0x25, 0x14, 0x00, 0x35, 0x14, 0x00, 0x14, 0x36, 0x00, 0x07, 0x22, 0x00, 0x1C, 0x63, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x920D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x28, 0x10, 0x00, 0x0E, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x920E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x20, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x7E, 0xC1, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x7F, 0x69, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x7D, 0x00, 0x6A, 0xC5, 0x00, 0x28, 0x01, 0x00, 0x0E, 0x03, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9210, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x20, 0x41, 0x00, 0x00, 0x80, 0x80, 0x1F, 0x3E, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x7F, 0x00, 0x25, 0x01, 0x00, 0x15, 0x01, 0x00, 0x14, 0x02, 0x00, 0x07, 0x82, 0x00, 0x38, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9211, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x22, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xC2, 0x00, 0x3E, 0xA2, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0x94, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x94, 0x00, 0x0F, 0x22, 0x00, 0x31, 0x41, 0x00, 0x02, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9212, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x7E, 0x00, 0x11, 0x22, 0x00, 0x20, 0x22, 0x00, 0x1F, 0x24, 0x00, 0x04, 0x24, 0x00, 0x04, 0x2F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x51, 0x00, 0x05, 0x52, 0x00, 0x25, 0x4A, 0x00, 0x15, 0x44, 0x00, 0x14, 0x44, 0x00, 0x07, 0x8A, 0x00, 0x3C, 0x91, 0x00, 0x01, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9213, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x38, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9214, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0xAA, 0x00, 0x10, 0x2A, 0x00, 0x3F, 0x2B, 0x00, 0x64, 0x69, 0x80, 0x04, 0x48, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x25, 0x3B, 0x00, 0x35, 0x02, 0x00, 0x14, 0x06, 0x00, 0x07, 0x8C, 0x00, 0x1C, 0x18, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9215, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFE, 0x00, 0x16, 0x22, 0x00, 0x33, 0x22, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x28, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9216, { 0x00, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x1C, 0x04, 0x00, 0x16, 0x24, 0x00, 0x32, 0x66, 0x00, 0x20, 0x42, 0x00, 0x7E, 0xC3, 0x00, 0x09, 0x81, 0x80, 0x08, 0x7E, 0x00, 0x7E, 0x12, 0x00, 0x08, 0x12, 0x00, 0x4A, 0x12, 0x00, 0x6A, 0x32, 0x00, 0x28, 0x22, 0x00, 0x0E, 0x66, 0x00, 0x38, 0xC4, 0x00, 0x61, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9217, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x20, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x81, 0x00, 0x09, 0x1F, 0x00, 0x0B, 0xE4, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x08, 0x84, 0x80, 0x0E, 0x84, 0x80, 0x31, 0x07, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9218, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x63, 0x00, 0x08, 0x36, 0x00, 0x4A, 0x1C, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x0E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x921C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x10, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x34, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x2C, 0x00, 0x4A, 0x68, 0x00, 0x6A, 0x49, 0x00, 0x28, 0xD9, 0x00, 0x0E, 0x11, 0x00, 0x38, 0x3F, 0x80, 0x60, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x921D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x28, 0x00, 0x16, 0x28, 0x00, 0x33, 0x28, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x88, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x921E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x14, 0x20, 0x00, 0x22, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x09, 0x01, 0x00, 0x3E, 0x79, 0x00, 0x08, 0x01, 0x00, 0x2A, 0x01, 0x00, 0x2A, 0xFD, 0x00, 0x2A, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0x01, 0x00, 0x30, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9223, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x32, 0x08, 0x00, 0x20, 0x48, 0x00, 0x7E, 0x4F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x01, 0x00, 0x4A, 0x01, 0x00, 0x6A, 0x01, 0x00, 0x28, 0x01, 0x00, 0x0E, 0x03, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9224, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x0B, 0x21, 0x00, 0x19, 0xA1, 0x00, 0x10, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x64, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x25, 0x21, 0x00, 0x35, 0x21, 0x00, 0x14, 0x21, 0x00, 0x07, 0xA1, 0x00, 0x1C, 0x3F, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9225, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x80, 0x32, 0x48, 0x80, 0x20, 0x49, 0x80, 0x7E, 0x49, 0x00, 0x08, 0xC9, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x1C, 0x00, 0x08, 0x14, 0x00, 0x4A, 0x14, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x36, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9226, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x7F, 0x80, 0x3F, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x14, 0x00, 0x25, 0x14, 0x00, 0x35, 0x36, 0x00, 0x14, 0x22, 0x00, 0x07, 0xB2, 0x00, 0x1C, 0x6B, 0x00, 0x70, 0xC9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9228, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x0B, 0x00, 0x00, 0x19, 0x80, 0x00, 0x10, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x64, 0x7F, 0x80, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x25, 0x12, 0x00, 0x35, 0x12, 0x00, 0x14, 0x12, 0x00, 0x07, 0xB2, 0x80, 0x1C, 0x22, 0x80, 0x70, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9229, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x80, 0x0B, 0x00, 0x00, 0x19, 0x80, 0x00, 0x10, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x64, 0x21, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x20, 0x00, 0x25, 0x20, 0x00, 0x35, 0x20, 0x00, 0x14, 0x20, 0x00, 0x07, 0x60, 0x00, 0x1C, 0x40, 0x00, 0x70, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x922C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x4A, 0x44, 0x00, 0x6A, 0x46, 0x00, 0x28, 0x42, 0x00, 0x0E, 0xC2, 0x00, 0x38, 0x83, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x922E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x53, 0x00, 0x08, 0x56, 0x00, 0x4A, 0x5C, 0x00, 0x6A, 0x50, 0x00, 0x28, 0xD0, 0x00, 0x0E, 0x90, 0x80, 0x39, 0x99, 0x80, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x922F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x49, 0x00, 0x19, 0x49, 0x00, 0x10, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x64, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x04, 0x08, 0x00, 0x25, 0x49, 0x00, 0x35, 0x49, 0x00, 0x14, 0x49, 0x00, 0x07, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9230, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x4B, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9233, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x02, 0x00, 0x32, 0x02, 0x00, 0x20, 0x7A, 0x00, 0x7E, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x7E, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x4A, 0x7A, 0x00, 0x6A, 0x02, 0x00, 0x28, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9234, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x14, 0x00, 0x22, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x28, 0x21, 0x00, 0x0E, 0x26, 0x00, 0x30, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9235, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x5D, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x55, 0x00, 0x4A, 0x63, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9236, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x32, 0x00, 0x33, 0x23, 0x00, 0x20, 0x61, 0x00, 0x7E, 0x4F, 0x80, 0x08, 0xF8, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9237, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0x08, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9238, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x1C, 0x13, 0x00, 0x16, 0x11, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x11, 0x00, 0x08, 0x39, 0x00, 0x7E, 0x2B, 0x00, 0x08, 0x6A, 0x00, 0x4A, 0x4E, 0x00, 0x6A, 0xC4, 0x00, 0x29, 0x8E, 0x00, 0x0E, 0x1A, 0x00, 0x38, 0x33, 0x00, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9239, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x80, 0x7E, 0x89, 0x00, 0x08, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x7E, 0xA1, 0x00, 0x08, 0xA3, 0x00, 0x4A, 0xB2, 0x00, 0x6A, 0x96, 0x00, 0x28, 0x8C, 0x00, 0x0E, 0x9A, 0x00, 0x39, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x923A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x0A, 0x00, 0x2A, 0x09, 0x00, 0x28, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x923C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x0B, 0x10, 0x00, 0x19, 0xBF, 0x80, 0x10, 0x28, 0x00, 0x3F, 0x68, 0x00, 0x64, 0x48, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x25, 0x08, 0x00, 0x35, 0x0F, 0x00, 0x14, 0x08, 0x00, 0x07, 0x88, 0x00, 0x1C, 0x08, 0x00, 0x70, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x923E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x64, 0x49, 0x00, 0x04, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x04, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x35, 0x49, 0x00, 0x14, 0x49, 0x00, 0x07, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x70, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x923F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x3F, 0x80, 0x11, 0x24, 0x80, 0x20, 0x24, 0x80, 0x00, 0x24, 0x80, 0x1F, 0x24, 0x80, 0x04, 0x24, 0x80, 0x04, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x24, 0xA4, 0x80, 0x14, 0xA4, 0x80, 0x15, 0x24, 0x80, 0x07, 0xBF, 0x80, 0x38, 0x20, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9240, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x3F, 0x80, 0x09, 0x24, 0x80, 0x10, 0xA4, 0x80, 0x20, 0x24, 0x80, 0x1F, 0x24, 0x80, 0x04, 0x3F, 0x80, 0x04, 0x24, 0x80, 0x3F, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x24, 0xA4, 0x80, 0x25, 0x3F, 0x80, 0x14, 0x04, 0x00, 0x07, 0x84, 0x00, 0x38, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9242, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x48, 0x00, 0x4A, 0x68, 0x00, 0x6A, 0x38, 0x00, 0x28, 0x18, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x66, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9243, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x16, 0x7F, 0x00, 0x32, 0xC8, 0x00, 0x20, 0x88, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x1C, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x36, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9244, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x48, 0x00, 0x16, 0x48, 0x00, 0x32, 0x7F, 0x00, 0x20, 0xC8, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x1C, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x36, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9245, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x0A, 0x7F, 0x80, 0x11, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x25, 0x7E, 0x00, 0x15, 0x40, 0x00, 0x14, 0x40, 0x00, 0x07, 0xC0, 0x00, 0x38, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9246, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x08, 0x00, 0x19, 0x88, 0x00, 0x10, 0x0F, 0x80, 0x3F, 0x08, 0x00, 0x64, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3F, 0x00, 0x25, 0x21, 0x00, 0x35, 0x21, 0x00, 0x14, 0x21, 0x00, 0x07, 0xA1, 0x00, 0x1C, 0x21, 0x00, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9247, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x16, 0x40, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x7E, 0x88, 0x00, 0x09, 0x4B, 0x00, 0x08, 0x4D, 0x00, 0x7E, 0x59, 0x00, 0x08, 0x69, 0x00, 0x4A, 0xCB, 0x00, 0x6A, 0x48, 0x00, 0x28, 0x48, 0x00, 0x0E, 0x40, 0x80, 0x38, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9248, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x80, 0x80, 0x08, 0x20, 0x00, 0x08, 0x23, 0x00, 0x7E, 0x2E, 0x00, 0x08, 0x38, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0x20, 0x00, 0x28, 0x20, 0x00, 0x0E, 0x20, 0x80, 0x38, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9249, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3E, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x22, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x9F, 0x80, 0x31, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x924A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x11, 0x00, 0x33, 0x11, 0x00, 0x20, 0x31, 0x00, 0x7E, 0x23, 0x00, 0x08, 0x62, 0x00, 0x08, 0xCE, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x924B, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x21, 0x81, 0x00, 0x7E, 0x79, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x7B, 0x00, 0x4A, 0x42, 0x00, 0x6A, 0x4E, 0x00, 0x28, 0x40, 0x00, 0x0E, 0x40, 0x80, 0x38, 0x61, 0x80, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x924D, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x1C, 0x18, 0x00, 0x16, 0x08, 0x00, 0x32, 0x21, 0x00, 0x20, 0x21, 0x00, 0x7E, 0x23, 0x00, 0x08, 0x22, 0x00, 0x08, 0xA6, 0x00, 0x7E, 0xA5, 0x00, 0x08, 0xAD, 0x80, 0x4A, 0xA8, 0x80, 0x6A, 0xB0, 0x00, 0x28, 0x20, 0x00, 0x0E, 0x61, 0x00, 0x39, 0xB3, 0x00, 0x60, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x924E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x48, 0x00, 0x16, 0x48, 0x00, 0x32, 0x48, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0xC8, 0x00, 0x08, 0x88, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x924F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3E, 0x00, 0x0B, 0x22, 0x00, 0x19, 0xA2, 0x00, 0x10, 0x22, 0x00, 0x3F, 0x3E, 0x00, 0x64, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x22, 0x00, 0x25, 0x3E, 0x00, 0x35, 0x22, 0x00, 0x14, 0x22, 0x00, 0x07, 0xA2, 0x00, 0x1C, 0x22, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9250, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x20, 0x18, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x7E, 0x61, 0x00, 0x08, 0xA1, 0x00, 0x4A, 0x21, 0x00, 0x6A, 0x21, 0x00, 0x28, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x3F, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9251, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x0C, 0x00, 0x0B, 0x08, 0x00, 0x19, 0xBF, 0x00, 0x10, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x64, 0x21, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x21, 0x00, 0x25, 0x21, 0x00, 0x35, 0x21, 0x00, 0x14, 0x21, 0x00, 0x07, 0xA1, 0x00, 0x1C, 0x3F, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9257, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x0A, 0x22, 0x00, 0x11, 0x22, 0x00, 0x20, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x1F, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x3E, 0x00, 0x25, 0x22, 0x00, 0x15, 0x22, 0x00, 0x14, 0x22, 0x00, 0x07, 0xA2, 0x00, 0x38, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9258, { 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x0E, 0x14, 0x00, 0x0B, 0x7F, 0x00, 0x19, 0x15, 0x00, 0x10, 0x15, 0x00, 0x3F, 0x7F, 0x00, 0x64, 0x54, 0x00, 0x04, 0x54, 0x00, 0x3F, 0x7F, 0x80, 0x04, 0x14, 0x80, 0x25, 0x14, 0x80, 0x35, 0x14, 0x80, 0x14, 0x35, 0x80, 0x07, 0x24, 0x00, 0x1C, 0x64, 0x00, 0x70, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9259, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x00, 0x0B, 0x41, 0x00, 0x19, 0x41, 0x00, 0x10, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x64, 0x41, 0x00, 0x04, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x25, 0x00, 0x00, 0x35, 0x22, 0x00, 0x14, 0x22, 0x00, 0x07, 0x63, 0x00, 0x1C, 0x41, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x925A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x30, 0x00, 0x16, 0xE7, 0x80, 0x32, 0x94, 0x80, 0x20, 0x94, 0x80, 0x7E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x08, 0x94, 0x80, 0x7E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x4A, 0x94, 0x80, 0x6A, 0xF4, 0x80, 0x29, 0x97, 0x80, 0x08, 0x14, 0x00, 0x1E, 0x34, 0x00, 0x70, 0x64, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x925B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x80, 0x08, 0x43, 0x80, 0x3E, 0x80, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0F, 0x41, 0x00, 0x38, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x925C, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0x62, 0x00, 0x32, 0x42, 0x00, 0x20, 0x5F, 0x80, 0x7E, 0xC2, 0x00, 0x08, 0xD2, 0x00, 0x09, 0x5A, 0x00, 0x7E, 0x4A, 0x00, 0x08, 0x4A, 0x00, 0x4A, 0x42, 0x00, 0x6A, 0x42, 0x00, 0x28, 0x42, 0x00, 0x0E, 0x42, 0x00, 0x38, 0x42, 0x00, 0x60, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x925D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x7E, 0x66, 0x00, 0x08, 0x24, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x04, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x925E, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x14, 0x09, 0x00, 0x22, 0x08, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x80, 0x3E, 0x48, 0x80, 0x08, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x4E, 0x00, 0x28, 0x74, 0x00, 0x0E, 0xCC, 0x80, 0x38, 0x12, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9260, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x4A, 0x14, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x36, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9261, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x2A, 0x00, 0x16, 0x6B, 0x00, 0x33, 0x49, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9262, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x1C, 0x00, 0x3E, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0x88, 0x80, 0x2A, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9264, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x40, 0x80, 0x3E, 0x80, 0x80, 0x09, 0x00, 0x80, 0x08, 0x3C, 0x80, 0x3E, 0x24, 0x80, 0x08, 0x24, 0x80, 0x2A, 0x3C, 0x80, 0x2A, 0x00, 0x80, 0x28, 0x00, 0x80, 0x0F, 0x00, 0x80, 0x30, 0x01, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9265, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x14, 0x00, 0x22, 0x12, 0x00, 0x00, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x54, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x28, 0x94, 0x00, 0x0E, 0x94, 0x80, 0x39, 0x17, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9266, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x3F, 0x4F, 0x80, 0x08, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x28, 0x48, 0x00, 0x0F, 0x48, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9267, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x32, 0x59, 0x00, 0x20, 0x4D, 0x00, 0x7E, 0x45, 0x00, 0x08, 0x41, 0x00, 0x09, 0xFF, 0x80, 0x7E, 0x81, 0x00, 0x08, 0xB1, 0x00, 0x4A, 0x99, 0x00, 0x6A, 0x89, 0x00, 0x28, 0x81, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9268, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x20, 0x00, 0x33, 0x7F, 0x80, 0x20, 0x48, 0x80, 0x7E, 0xC8, 0x80, 0x08, 0x09, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0xC9, 0x80, 0x28, 0x88, 0x80, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9269, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x16, 0x14, 0x00, 0x33, 0x36, 0x00, 0x20, 0x63, 0x00, 0x7E, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0xC9, 0x80, 0x28, 0x88, 0x80, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x926E, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x0B, 0x04, 0x00, 0x19, 0xBF, 0x80, 0x10, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x64, 0x24, 0x80, 0x04, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x25, 0x24, 0x80, 0x35, 0x3F, 0x80, 0x14, 0x04, 0x00, 0x07, 0x84, 0x00, 0x1C, 0x04, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x926F, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x16, 0x82, 0x00, 0x32, 0x82, 0x00, 0x20, 0xB2, 0x00, 0x7E, 0x9A, 0x00, 0x08, 0x8A, 0x00, 0x08, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x86, 0x00, 0x4A, 0x84, 0x00, 0x6A, 0x84, 0x00, 0x28, 0x8E, 0x00, 0x0E, 0xEB, 0x00, 0x39, 0x99, 0x00, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9270, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x01, 0x00, 0x32, 0x01, 0x00, 0x20, 0x79, 0x00, 0x7E, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x79, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x79, 0x00, 0x28, 0x01, 0x00, 0x0E, 0x01, 0x00, 0x38, 0x01, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9271, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x98, 0x00, 0x4A, 0x90, 0x00, 0x6A, 0x92, 0x00, 0x28, 0xB3, 0x00, 0x0F, 0xA1, 0x00, 0x39, 0x2F, 0x80, 0x63, 0x78, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9274, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x12, 0x7E, 0x00, 0x12, 0xA0, 0x00, 0x13, 0x18, 0x00, 0x12, 0x88, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x37, 0xF7, 0x00, 0x40, 0x82, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA4, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9275, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x4A, 0x08, 0x00, 0x6A, 0x09, 0x00, 0x28, 0x09, 0x00, 0x0E, 0x0F, 0x00, 0x38, 0x39, 0x80, 0x60, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9276, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x39, 0xF4, 0x80, 0x2C, 0xA4, 0x80, 0x64, 0xA4, 0x80, 0x00, 0xA4, 0x80, 0x7C, 0xA4, 0x80, 0x11, 0xF4, 0x80, 0x10, 0xA4, 0x80, 0x7C, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x54, 0xA4, 0x80, 0x54, 0xA0, 0x80, 0x50, 0xA0, 0x80, 0x1D, 0xA0, 0x80, 0x31, 0x20, 0x80, 0x63, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9277, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0x22, 0x00, 0x32, 0x22, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x00, 0x00, 0x28, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9278, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x22, 0x00, 0x7E, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x36, 0x00, 0x4A, 0x1C, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x1C, 0x00, 0x0E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9279, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x1F, 0x00, 0x16, 0x31, 0x00, 0x32, 0x63, 0x00, 0x20, 0xD6, 0x00, 0x7E, 0x0C, 0x00, 0x08, 0x18, 0x00, 0x08, 0x74, 0x00, 0x7E, 0x07, 0x80, 0x08, 0x0C, 0x80, 0x4A, 0x19, 0x80, 0x6A, 0x75, 0x00, 0x28, 0x03, 0x00, 0x0E, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x927B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x3E, 0x00, 0x32, 0x62, 0x00, 0x20, 0xC6, 0x00, 0x7E, 0x34, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x7E, 0xE3, 0x80, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x927C, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x63, 0x00, 0x16, 0x22, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x28, 0x22, 0x00, 0x0E, 0x62, 0x00, 0x38, 0x42, 0x00, 0x60, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x927D, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x1C, 0x05, 0x80, 0x16, 0x04, 0x80, 0x32, 0x04, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFC, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x26, 0x00, 0x28, 0x3A, 0x00, 0x0E, 0xE2, 0x80, 0x38, 0x03, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x927E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x32, 0x00, 0x33, 0x22, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x01, 0x00, 0x08, 0x08, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x88, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x927F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x16, 0x14, 0x00, 0x33, 0x36, 0x00, 0x20, 0x63, 0x00, 0x7E, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9280, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x90, 0x80, 0x08, 0x91, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x8C, 0x00, 0x28, 0x88, 0x00, 0x0E, 0xF4, 0x00, 0x33, 0x82, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9283, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x4F, 0x00, 0x3F, 0xF4, 0x80, 0x08, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x44, 0x00, 0x28, 0x44, 0x00, 0x0E, 0x84, 0x80, 0x31, 0x07, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9285, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x08, 0x81, 0x00, 0x08, 0xBD, 0x00, 0x3F, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x2A, 0xBD, 0x00, 0x2A, 0xA5, 0x00, 0x28, 0x81, 0x00, 0x0E, 0x81, 0x00, 0x30, 0x81, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9288, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9289, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x09, 0x00, 0x32, 0x09, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x09, 0x00, 0x08, 0x09, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x928A, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x1C, 0x0B, 0x00, 0x16, 0x09, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x89, 0x00, 0x08, 0xE9, 0x00, 0x7E, 0x8B, 0x00, 0x08, 0x8A, 0x00, 0x4A, 0x8E, 0x00, 0x6A, 0x84, 0x00, 0x28, 0x8E, 0x80, 0x0E, 0x9A, 0x80, 0x38, 0xB3, 0x80, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x928D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x20, 0x00, 0x32, 0x22, 0x00, 0x20, 0x62, 0x00, 0x7E, 0x4F, 0x00, 0x08, 0xF9, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x928E, { 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x10, 0xE4, 0x00, 0x10, 0xB4, 0x00, 0x10, 0x94, 0x00, 0x1D, 0x84, 0x80, 0x73, 0x04, 0x80, 0x00, 0x83, 0x80, 0x03, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9291, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x28, 0x00, 0x22, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x48, 0x00, 0x08, 0x88, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x0F, 0x44, 0x00, 0x30, 0x84, 0x80, 0x03, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9292, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xF7, 0x80, 0x16, 0x22, 0x00, 0x33, 0x22, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x3A, 0x00, 0x08, 0xE7, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x28, 0x62, 0x00, 0x0E, 0x42, 0x00, 0x38, 0xC2, 0x00, 0x61, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9293, { 0x00, 0x00, 0x00, 0x08, 0x78, 0x00, 0x14, 0x14, 0x00, 0x22, 0x22, 0x00, 0x00, 0x41, 0x00, 0x01, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9295, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x09, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x4A, 0x08, 0x80, 0x6A, 0x1C, 0x80, 0x28, 0x15, 0x80, 0x0E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9296, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x28, 0x00, 0x22, 0x28, 0x00, 0x00, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x88, 0x00, 0x09, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x18, 0x00, 0x0A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x0F, 0x49, 0x00, 0x38, 0x89, 0x00, 0x01, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9297, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x40, 0x00, 0x20, 0x40, 0x00, 0x7E, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x5F, 0x00, 0x08, 0x51, 0x00, 0x4A, 0x51, 0x00, 0x6A, 0x51, 0x00, 0x28, 0xD1, 0x00, 0x0E, 0x91, 0x00, 0x39, 0x91, 0x00, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9298, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x1F, 0x00, 0x00, 0x31, 0x00, 0x00, 0x4A, 0x00, 0x3E, 0x8C, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x60, 0x00, 0x09, 0xBF, 0x00, 0x0A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x28, 0x21, 0x00, 0x0F, 0x21, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9299, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x14, 0x00, 0x20, 0x22, 0x00, 0x7E, 0xC1, 0x80, 0x08, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x01, 0x00, 0x0E, 0x01, 0x00, 0x38, 0x03, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x929A, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x24, 0x00, 0x16, 0x24, 0x80, 0x32, 0xA5, 0x80, 0x20, 0x67, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x27, 0x00, 0x08, 0x65, 0x80, 0x4A, 0xA4, 0x80, 0x6A, 0x24, 0x00, 0x28, 0x64, 0x00, 0x0E, 0x44, 0x80, 0x38, 0xC4, 0x80, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x929B, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x929C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x67, 0x00, 0x10, 0x90, 0x00, 0x25, 0x00, 0x00, 0x05, 0xF0, 0x00, 0x08, 0x40, 0x00, 0x18, 0x4F, 0x80, 0x19, 0xF2, 0x00, 0x28, 0x42, 0x00, 0x08, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0x52, 0x00, 0x09, 0x42, 0x00, 0x08, 0x72, 0x00, 0x09, 0x82, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x929F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x88, 0x80, 0x16, 0x88, 0x80, 0x32, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x4A, 0x88, 0x80, 0x6A, 0x88, 0x80, 0x28, 0x88, 0x80, 0x0E, 0x8B, 0x80, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92A0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x11, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x12, 0x00, 0x20, 0x16, 0x00, 0x7E, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x18, 0x00, 0x08, 0x30, 0x00, 0x4A, 0xE3, 0x00, 0x6A, 0x3E, 0x00, 0x28, 0x20, 0x00, 0x0E, 0x20, 0x80, 0x38, 0x31, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92A4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x49, 0x00, 0x33, 0x69, 0x00, 0x20, 0x2B, 0x00, 0x7E, 0x2A, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x4A, 0x1C, 0x00, 0x6A, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x88, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92A5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x39, 0x00, 0x08, 0x29, 0x00, 0x7E, 0x6B, 0x00, 0x08, 0xAA, 0x00, 0x4A, 0x2E, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x26, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x3B, 0x00, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92A7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x49, 0x00, 0x16, 0x6B, 0x00, 0x32, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x64, 0x80, 0x38, 0x44, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92A8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x41, 0x00, 0x20, 0x51, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x12, 0x00, 0x7E, 0x32, 0x00, 0x08, 0x26, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x74, 0x00, 0x28, 0x1C, 0x00, 0x0E, 0x16, 0x00, 0x38, 0x33, 0x00, 0x60, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92AB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0E, 0x1F, 0x00, 0x0B, 0x11, 0x00, 0x19, 0xB3, 0x00, 0x10, 0x62, 0x00, 0x3F, 0x3F, 0x80, 0x64, 0x24, 0x80, 0x04, 0x24, 0x80, 0x3F, 0xA4, 0x80, 0x04, 0x3F, 0x80, 0x25, 0x20, 0x00, 0x35, 0x20, 0x00, 0x14, 0x20, 0x00, 0x07, 0xA0, 0x80, 0x1C, 0x20, 0x80, 0x70, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92AD, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x1C, 0x12, 0x00, 0x16, 0x10, 0x00, 0x32, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x10, 0x00, 0x08, 0x19, 0x00, 0x4A, 0x0B, 0x00, 0x6A, 0x0E, 0x00, 0x28, 0x04, 0x00, 0x0E, 0x0E, 0x80, 0x38, 0x3B, 0x80, 0x60, 0xE1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92AE, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x12, 0xA6, 0x00, 0x21, 0x42, 0x00, 0x06, 0x18, 0x00, 0x1B, 0xF7, 0x00, 0x60, 0x82, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA4, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92AF, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x18, 0x00, 0x0B, 0x30, 0x00, 0x19, 0x61, 0x00, 0x10, 0x33, 0x00, 0x3F, 0x16, 0x00, 0x64, 0x0C, 0x00, 0x04, 0x19, 0x00, 0x3F, 0x7F, 0x80, 0x04, 0x08, 0x80, 0x25, 0x08, 0x00, 0x35, 0x29, 0x00, 0x14, 0x29, 0x00, 0x07, 0x69, 0x80, 0x1C, 0x48, 0x80, 0x70, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92B2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92B3, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x14, 0x24, 0x00, 0x22, 0x22, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x80, 0x80, 0x09, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0A, 0x7E, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x24, 0x80, 0x30, 0x47, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92B6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x0A, 0x00, 0x22, 0x09, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x88, 0x80, 0x3E, 0x49, 0x00, 0x08, 0x2A, 0x00, 0x0A, 0x1C, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x49, 0x00, 0x30, 0x89, 0x00, 0x01, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92B7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x2A, 0x00, 0x11, 0x49, 0x00, 0x20, 0x88, 0x80, 0x00, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x41, 0x00, 0x25, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x07, 0xC1, 0x00, 0x38, 0x41, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92B8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1D, 0xFF, 0x80, 0x16, 0x52, 0x00, 0x32, 0x52, 0x00, 0x20, 0x72, 0x00, 0x7E, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x7E, 0x72, 0x00, 0x08, 0x52, 0x00, 0x4A, 0x52, 0x00, 0x6A, 0x52, 0x00, 0x28, 0x72, 0x00, 0x0E, 0xD2, 0x80, 0x38, 0x12, 0x80, 0x60, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92B9, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x14, 0x78, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x3E, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x3F, 0x08, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x2A, 0x27, 0x80, 0x28, 0x40, 0x80, 0x0E, 0x40, 0x80, 0x38, 0x81, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92BA, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x62, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92BB, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x24, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x09, 0x00, 0x20, 0x09, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x7F, 0x80, 0x08, 0x18, 0x80, 0x4A, 0x18, 0x80, 0x6A, 0x28, 0x80, 0x28, 0x28, 0x80, 0x0E, 0x6B, 0x80, 0x38, 0xC8, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92BC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x2A, 0x00, 0x16, 0x2A, 0x00, 0x33, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x7E, 0x5D, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92BD, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x1C, 0x7C, 0x00, 0x16, 0x48, 0x00, 0x33, 0x48, 0x00, 0x20, 0x7F, 0x80, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x72, 0x80, 0x7E, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92BF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x02, 0x00, 0x32, 0x34, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x4A, 0x88, 0x80, 0x6A, 0xFF, 0x80, 0x28, 0x88, 0x80, 0x0E, 0x88, 0x80, 0x38, 0x88, 0x80, 0x60, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92C0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x00, 0x00, 0x32, 0x00, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x63, 0x00, 0x28, 0x22, 0x00, 0x0E, 0x02, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92C1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x18, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92C2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x7F, 0x80, 0x32, 0x40, 0x00, 0x20, 0xC0, 0x00, 0x7E, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x29, 0x00, 0x7E, 0x29, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x41, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x49, 0x00, 0x0E, 0x7F, 0x80, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92C3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFE, 0x00, 0x32, 0x82, 0x00, 0x20, 0x82, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xFE, 0x80, 0x08, 0x89, 0x80, 0x4A, 0x8B, 0x00, 0x6A, 0x8C, 0x00, 0x28, 0x84, 0x00, 0x0E, 0x86, 0x00, 0x38, 0xF3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92C5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x00, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x63, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92C6, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x00, 0x80, 0x13, 0x78, 0x80, 0x10, 0x00, 0x80, 0x10, 0xFD, 0x80, 0x1C, 0x01, 0x00, 0x70, 0x87, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92C7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92C8, { 0x00, 0x00, 0x00, 0x18, 0x0E, 0x00, 0x0D, 0xF8, 0x00, 0x60, 0x10, 0x00, 0x33, 0xFF, 0x80, 0x00, 0x28, 0x00, 0x0C, 0x6C, 0x00, 0x18, 0xC6, 0x00, 0x33, 0x83, 0x00, 0x60, 0x81, 0x00, 0x03, 0x60, 0x00, 0x1C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92CB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x1C, 0xE3, 0x80, 0x16, 0x2E, 0x00, 0x32, 0x22, 0x00, 0x20, 0x42, 0x00, 0x7E, 0x4A, 0x00, 0x08, 0xEB, 0x80, 0x08, 0x2A, 0x00, 0x7E, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x4A, 0xAA, 0x00, 0x6A, 0xEA, 0x00, 0x28, 0x4F, 0x80, 0x0E, 0x40, 0x00, 0x38, 0xF0, 0x00, 0x61, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92CC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xF1, 0x80, 0x22, 0x1E, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0xF2, 0x00, 0x3F, 0x1F, 0x80, 0x08, 0x12, 0x00, 0x0A, 0x92, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x28, 0x4F, 0x80, 0x0E, 0x60, 0x00, 0x38, 0x9F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92CD, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x7E, 0x7F, 0x00, 0x08, 0x02, 0x00, 0x4A, 0x04, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92CE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x64, 0x00, 0x0E, 0x44, 0x80, 0x38, 0xC4, 0x80, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92CF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0xAA, 0x80, 0x08, 0x2C, 0x80, 0x0A, 0x08, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x28, 0x22, 0x00, 0x0F, 0x22, 0x00, 0x30, 0x41, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92D0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x20, 0x91, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x24, 0x00, 0x4A, 0x64, 0x00, 0x6A, 0x4C, 0x00, 0x28, 0xC9, 0x00, 0x0E, 0x99, 0x00, 0x39, 0x93, 0x80, 0x60, 0x3E, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92D2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x3F, 0x00, 0x00, 0x62, 0x00, 0x01, 0x94, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x36, 0x00, 0x08, 0xC9, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0xFF, 0x80, 0x30, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92D3, { 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x38, 0x71, 0x00, 0x2D, 0xC5, 0x00, 0x64, 0x45, 0x00, 0x00, 0x45, 0x00, 0x7D, 0xF5, 0x00, 0x10, 0x45, 0x00, 0x10, 0x45, 0x00, 0x7C, 0xE5, 0x00, 0x10, 0xD5, 0x00, 0x55, 0x55, 0x00, 0x55, 0x45, 0x00, 0x50, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x30, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92D5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x15, 0x00, 0x28, 0x51, 0x80, 0x0E, 0x52, 0x80, 0x38, 0xD2, 0x00, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92D7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92D8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x5E, 0x00, 0x16, 0x52, 0x00, 0x33, 0x52, 0x00, 0x20, 0x52, 0x00, 0x7E, 0x5E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x09, 0x00, 0x4A, 0x09, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x0E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92D9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x10, 0x00, 0x32, 0x10, 0x00, 0x20, 0x7E, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92DC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x48, 0x00, 0x4A, 0x4F, 0x00, 0x6A, 0x48, 0x00, 0x28, 0xC8, 0x00, 0x0E, 0xA8, 0x00, 0x39, 0x9C, 0x00, 0x63, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92DD, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0xFA, 0x00, 0x32, 0x13, 0x00, 0x20, 0x59, 0x80, 0x7E, 0xC8, 0x80, 0x08, 0x80, 0x00, 0x08, 0x02, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0x32, 0x00, 0x28, 0x12, 0x00, 0x0E, 0x02, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92DF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x01, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x01, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x08, 0x7F, 0x00, 0x4A, 0x21, 0x00, 0x6A, 0x33, 0x00, 0x28, 0x16, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92E0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x80, 0x00, 0x32, 0x80, 0x00, 0x20, 0xBF, 0x00, 0x7E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0xA4, 0x00, 0x08, 0xA4, 0x80, 0x4A, 0xA5, 0x80, 0x6A, 0xA5, 0x00, 0x28, 0xA6, 0x00, 0x0E, 0xA2, 0x00, 0x38, 0xBB, 0x00, 0x61, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92E1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x16, 0x36, 0x00, 0x32, 0x63, 0x00, 0x20, 0xDD, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x02, 0x00, 0x7E, 0x04, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92E3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0xF7, 0x80, 0x2D, 0x24, 0x80, 0x65, 0x24, 0x80, 0x01, 0x24, 0x80, 0x7D, 0x25, 0x00, 0x11, 0x25, 0x00, 0x13, 0xF5, 0x00, 0x7C, 0xA4, 0x80, 0x10, 0xA4, 0x80, 0x54, 0xA4, 0x80, 0x54, 0xA4, 0x80, 0x50, 0xA4, 0x80, 0x1D, 0xA5, 0x80, 0x31, 0x24, 0x00, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92E4, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x14, 0xF2, 0x00, 0x22, 0x92, 0x00, 0x00, 0x9F, 0x80, 0x3E, 0x92, 0x80, 0x08, 0xF2, 0x80, 0x08, 0x92, 0x80, 0x3E, 0x92, 0x80, 0x08, 0x92, 0x80, 0x0A, 0xF2, 0x80, 0x2A, 0x92, 0x80, 0x2A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x0E, 0xBC, 0x80, 0x39, 0xCB, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92E5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x03, 0x00, 0x7E, 0x7E, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92E7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x34, 0x00, 0x0E, 0x24, 0x80, 0x38, 0x64, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92E8, { 0x00, 0x00, 0x00, 0x08, 0x15, 0x00, 0x1C, 0x24, 0x80, 0x16, 0xE4, 0x80, 0x32, 0x24, 0x00, 0x20, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x08, 0x24, 0x80, 0x7E, 0x24, 0x80, 0x08, 0x35, 0x00, 0x4A, 0xE5, 0x00, 0x6A, 0x26, 0x00, 0x28, 0x22, 0x80, 0x0E, 0x22, 0x80, 0x38, 0x25, 0x80, 0x60, 0xE8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92E9, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x33, 0x22, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0x20, 0x00, 0x28, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x38, 0x20, 0x00, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92EA, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x14, 0x09, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x4B, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92EC, { 0x00, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0xA3, 0x00, 0x08, 0xB6, 0x00, 0x0E, 0x9C, 0x00, 0x79, 0x88, 0x00, 0x09, 0x1C, 0x00, 0x0B, 0x36, 0x00, 0x38, 0xE3, 0x80, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x98, 0x00, 0x77, 0xF7, 0x80, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92ED, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x63, 0x00, 0x16, 0x22, 0x00, 0x33, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x24, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x64, 0x00, 0x0F, 0x44, 0x80, 0x78, 0xC4, 0x80, 0x01, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92EE, { 0x00, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x38, 0x0B, 0x00, 0x2C, 0x09, 0x00, 0x65, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x7D, 0x08, 0x00, 0x11, 0xF9, 0x00, 0x11, 0x29, 0x00, 0x7D, 0x2B, 0x00, 0x11, 0x2A, 0x00, 0x55, 0x2E, 0x00, 0x55, 0x24, 0x00, 0x51, 0x2E, 0x00, 0x1D, 0x6A, 0x80, 0x31, 0x1B, 0x80, 0x62, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92F0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x33, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92F2, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x38, 0x00, 0x33, 0x20, 0x00, 0x20, 0x20, 0x00, 0x7E, 0x3F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x00, 0x00, 0x28, 0x00, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92F3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x10, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x7E, 0x21, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x21, 0x00, 0x6A, 0x69, 0x00, 0x28, 0x4D, 0x00, 0x0E, 0xC5, 0x00, 0x39, 0x81, 0x00, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92F8, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x20, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0xC4, 0x00, 0x04, 0x44, 0x00, 0x25, 0x5F, 0x00, 0x15, 0x51, 0x00, 0x14, 0x51, 0x00, 0x07, 0x91, 0x00, 0x38, 0x9F, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x92F9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x3F, 0x00, 0x16, 0x20, 0x00, 0x33, 0x3E, 0x00, 0x20, 0x20, 0x00, 0x7E, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x28, 0x00, 0x4A, 0x28, 0x80, 0x6A, 0x2D, 0x80, 0x28, 0x25, 0x00, 0x0E, 0x26, 0x00, 0x38, 0x3B, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92FA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x40, 0x00, 0x08, 0x77, 0x80, 0x08, 0x54, 0x80, 0x7E, 0x54, 0x80, 0x08, 0x94, 0x80, 0x4A, 0x55, 0x80, 0x6A, 0x34, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x24, 0x80, 0x38, 0x64, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92FB, { 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x1B, 0x00, 0x21, 0x0A, 0x00, 0x3F, 0x0E, 0x00, 0x24, 0x1B, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92FC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x00, 0xA2, 0x80, 0x3E, 0x94, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3F, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x0A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x0F, 0x80, 0x80, 0x38, 0x80, 0x80, 0x00, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x92FF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x2A, 0x00, 0x16, 0x6B, 0x00, 0x32, 0xC9, 0x80, 0x20, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x80, 0x80, 0x7E, 0xBE, 0x80, 0x08, 0xA2, 0x80, 0x4A, 0xA2, 0x80, 0x6A, 0xA2, 0x80, 0x28, 0xBE, 0x80, 0x0E, 0x80, 0x80, 0x38, 0x80, 0x80, 0x60, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9300, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x38, 0x00, 0x16, 0x6C, 0x00, 0x32, 0xC6, 0x00, 0x21, 0x83, 0x80, 0x7E, 0x7C, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0xA9, 0x00, 0x4A, 0xA9, 0x00, 0x6A, 0xFF, 0x00, 0x28, 0xA9, 0x00, 0x0E, 0xA9, 0x00, 0x38, 0xA9, 0x00, 0x60, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9302, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x21, 0xFF, 0x80, 0x7E, 0x24, 0x00, 0x08, 0x64, 0x00, 0x08, 0xC7, 0x80, 0x7E, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x4A, 0x62, 0x00, 0x6A, 0xC6, 0x00, 0x28, 0x2C, 0x00, 0x0E, 0x18, 0x00, 0x38, 0x76, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9304, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x7E, 0x00, 0x22, 0x02, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x89, 0x00, 0x0A, 0x4A, 0x00, 0x2A, 0x2C, 0x00, 0x2A, 0x1C, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x4A, 0x00, 0x30, 0x89, 0x00, 0x03, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9306, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9308, { 0x00, 0x00, 0x00, 0x08, 0x2A, 0x00, 0x1C, 0x6B, 0x00, 0x16, 0x49, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x14, 0x00, 0x7E, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0xE5, 0x80, 0x6A, 0x24, 0x00, 0x28, 0x2C, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x23, 0x00, 0x60, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x930D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x49, 0x00, 0x20, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x12, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x38, 0x02, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x930F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x24, 0x00, 0x33, 0x24, 0x00, 0x20, 0x24, 0x00, 0x7E, 0xE7, 0x00, 0x08, 0x81, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xE7, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x24, 0x00, 0x39, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9310, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x14, 0x24, 0x00, 0x22, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0xC8, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x28, 0x15, 0x00, 0x0E, 0x4A, 0x80, 0x38, 0x4A, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9311, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, 0x1C, 0xFF, 0x00, 0x16, 0x80, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x8A, 0x00, 0x7E, 0x89, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x88, 0x00, 0x6A, 0x9C, 0x00, 0x28, 0x94, 0x00, 0x0E, 0xB6, 0x00, 0x39, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9314, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x09, 0x00, 0x16, 0xEB, 0x00, 0x32, 0x2C, 0x00, 0x20, 0x2E, 0x00, 0x7E, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x18, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9315, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x44, 0x00, 0x4A, 0x45, 0x80, 0x6A, 0x77, 0x00, 0x28, 0x44, 0x00, 0x0E, 0x44, 0x80, 0x38, 0x74, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9318, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x14, 0x78, 0x00, 0x22, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9319, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x16, 0x92, 0x00, 0x32, 0x92, 0x00, 0x20, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x931A, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x14, 0x39, 0x00, 0x22, 0x48, 0x80, 0x00, 0x84, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x09, 0x00, 0x09, 0xFF, 0x80, 0x0A, 0x09, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x931C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x16, 0x36, 0x00, 0x32, 0x63, 0x00, 0x20, 0xDD, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x02, 0x00, 0x7E, 0x04, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x51, 0x00, 0x0E, 0x51, 0x80, 0x38, 0x52, 0x80, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x931D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x4A, 0x2A, 0x00, 0x6A, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x0E, 0xC9, 0x80, 0x38, 0x08, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x931E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x0A, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x931F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x11, 0x00, 0x22, 0x92, 0x00, 0x00, 0x94, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x46, 0x00, 0x3F, 0x91, 0x80, 0x08, 0x12, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x98, 0x00, 0x2A, 0x28, 0x00, 0x08, 0x28, 0x00, 0x0E, 0x44, 0x00, 0x30, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9320, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x48, 0x00, 0x2A, 0x4F, 0x80, 0x2A, 0x48, 0x00, 0x28, 0x48, 0x00, 0x0F, 0xA8, 0x00, 0x38, 0x9F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9321, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x01, 0x00, 0x0A, 0x79, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x79, 0x00, 0x28, 0x01, 0x00, 0x0E, 0x01, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9322, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x14, 0x12, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x11, 0x00, 0x00, 0x12, 0x00, 0x3E, 0x0C, 0x00, 0x08, 0x34, 0x80, 0x08, 0xC3, 0x80, 0x3E, 0x14, 0x00, 0x08, 0x17, 0x80, 0x2A, 0xF8, 0x00, 0x2A, 0x11, 0x00, 0x28, 0x0A, 0x00, 0x0F, 0x0C, 0x80, 0x38, 0x32, 0x80, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9323, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0xEF, 0x00, 0x2C, 0x21, 0x00, 0x65, 0xAD, 0x00, 0x00, 0x42, 0x00, 0x7C, 0xA5, 0x00, 0x11, 0x08, 0x80, 0x10, 0x00, 0x00, 0x7D, 0xEF, 0x00, 0x10, 0x21, 0x00, 0x55, 0x21, 0x00, 0x54, 0xCA, 0x00, 0x50, 0x4A, 0x00, 0x1C, 0xA4, 0x00, 0x31, 0x2A, 0x00, 0x62, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9324, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x22, 0x22, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x0E, 0x22, 0x00, 0x30, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9325, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x20, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0xC1, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9326, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x1F, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x04, 0x11, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x05, 0x3F, 0x80, 0x25, 0x24, 0x80, 0x15, 0x24, 0x80, 0x14, 0x24, 0x80, 0x07, 0xA4, 0x80, 0x38, 0x24, 0x80, 0x00, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9327, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x20, 0x80, 0x80, 0x7E, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x3E, 0x00, 0x08, 0x20, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0x3F, 0x00, 0x28, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9328, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x28, 0x49, 0x00, 0x0F, 0x49, 0x00, 0x38, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9329, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x80, 0x80, 0x6A, 0x80, 0x80, 0x28, 0xFF, 0x80, 0x0E, 0x80, 0x80, 0x38, 0x80, 0x80, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x932A, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x1C, 0x14, 0x00, 0x16, 0x14, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x55, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x55, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x55, 0x00, 0x4A, 0x55, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x932B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x04, 0x51, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xA0, 0x00, 0x05, 0x7F, 0x80, 0x15, 0x92, 0x80, 0x15, 0x24, 0x80, 0x14, 0x48, 0x80, 0x07, 0x90, 0x80, 0x38, 0x21, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x932C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x2A, 0x00, 0x6A, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x0E, 0x49, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x932E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x22, 0x88, 0x80, 0x00, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x0A, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xBE, 0x80, 0x28, 0x80, 0x80, 0x0F, 0x80, 0x80, 0x38, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x932F, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x14, 0x24, 0x00, 0x22, 0x24, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x08, 0x42, 0x00, 0x0F, 0x42, 0x00, 0x38, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9332, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7E, 0x00, 0x16, 0x02, 0x00, 0x32, 0x7E, 0x00, 0x20, 0x02, 0x00, 0x7E, 0x02, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x6B, 0x00, 0x4A, 0x2A, 0x00, 0x2A, 0x1C, 0x00, 0x28, 0x2E, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9333, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x02, 0x00, 0x33, 0x04, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0x38, 0x00, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x55, 0x00, 0x28, 0x55, 0x00, 0x0E, 0x55, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9334, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7E, 0xC3, 0x80, 0x08, 0x08, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9335, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x33, 0x22, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x14, 0x00, 0x08, 0x34, 0x00, 0x08, 0x24, 0x80, 0x7E, 0x65, 0x80, 0x08, 0xA7, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x24, 0x80, 0x38, 0x24, 0x80, 0x60, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9336, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x14, 0x00, 0x08, 0x34, 0x80, 0x4A, 0x65, 0x80, 0x6A, 0xE5, 0x00, 0x28, 0x26, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x7B, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9337, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2D, 0xF4, 0x00, 0x64, 0x44, 0x00, 0x01, 0xF4, 0x00, 0x7D, 0x54, 0x00, 0x11, 0x54, 0x00, 0x11, 0xF4, 0x00, 0x7D, 0x54, 0x00, 0x11, 0x54, 0x00, 0x55, 0xF4, 0x00, 0x54, 0x44, 0x00, 0x51, 0xF4, 0x80, 0x1C, 0x44, 0x80, 0x30, 0x44, 0x80, 0x60, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x933A, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x20, 0x2A, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x4A, 0x11, 0x00, 0x6A, 0x11, 0x00, 0x28, 0x31, 0x00, 0x0E, 0x23, 0x00, 0x38, 0x62, 0x00, 0x60, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x933B, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x1C, 0x05, 0x80, 0x16, 0xF4, 0x80, 0x32, 0x04, 0x00, 0x21, 0xFF, 0x80, 0x7E, 0x04, 0x00, 0x08, 0x24, 0x00, 0x08, 0xA4, 0x00, 0x7E, 0xBC, 0x00, 0x08, 0xA4, 0x00, 0x4A, 0xA6, 0x00, 0x6A, 0xA2, 0x00, 0x28, 0xBA, 0x00, 0x0E, 0xE2, 0x80, 0x39, 0x83, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x933E, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x3F, 0x78, 0x00, 0x08, 0x40, 0x00, 0x14, 0x44, 0x00, 0x3F, 0x7E, 0x00, 0x04, 0x48, 0x00, 0x3E, 0x88, 0x00, 0x05, 0x48, 0x00, 0x06, 0x30, 0x00, 0x1B, 0xEF, 0x00, 0x60, 0x82, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA4, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9344, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x49, 0x00, 0x0E, 0xC9, 0x80, 0x38, 0x88, 0x80, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9347, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x1C, 0x8B, 0x00, 0x16, 0xEE, 0x00, 0x32, 0x88, 0x00, 0x20, 0x88, 0x80, 0x7E, 0x89, 0x80, 0x08, 0xE7, 0x00, 0x09, 0x88, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x0E, 0x81, 0x00, 0x38, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9348, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3E, 0x2A, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x14, 0x00, 0x28, 0x14, 0x00, 0x0E, 0x22, 0x00, 0x38, 0x41, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9349, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x4A, 0x48, 0x00, 0x6A, 0x4F, 0x00, 0x28, 0x48, 0x00, 0x0E, 0xE8, 0x00, 0x38, 0xB8, 0x00, 0x61, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x934A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x6B, 0x00, 0x3E, 0x5D, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x1C, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x4A, 0x00, 0x30, 0x89, 0x00, 0x01, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x934B, { 0x00, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x22, 0x2F, 0x00, 0x00, 0x29, 0x00, 0x3E, 0x29, 0x00, 0x08, 0x29, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x80, 0x80, 0x08, 0x80, 0x80, 0x0A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x28, 0xBE, 0x80, 0x0E, 0x80, 0x80, 0x30, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x934D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0xA2, 0x00, 0x00, 0xA2, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0xBE, 0x00, 0x3E, 0x80, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0x94, 0x00, 0x28, 0x88, 0x00, 0x0F, 0x94, 0x00, 0x31, 0x22, 0x00, 0x02, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9350, { 0x00, 0x00, 0x00, 0x08, 0xA2, 0x80, 0x1C, 0x94, 0x80, 0x16, 0x88, 0x80, 0x32, 0x94, 0x80, 0x20, 0xA2, 0x80, 0x7E, 0x80, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x7E, 0x62, 0x00, 0x08, 0xC3, 0x80, 0x4A, 0x20, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0xD2, 0x00, 0x0E, 0x0C, 0x00, 0x38, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9351, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x7F, 0x80, 0x32, 0xC0, 0x00, 0x20, 0x3E, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x3E, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x3E, 0x00, 0x6A, 0x62, 0x00, 0x28, 0xD6, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9352, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x22, 0x00, 0x32, 0x14, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x29, 0x00, 0x08, 0x6A, 0x00, 0x08, 0xC8, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9354, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xF7, 0x80, 0x22, 0x94, 0x80, 0x00, 0x94, 0x80, 0x3E, 0xF7, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x2A, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x28, 0x80, 0x80, 0x0E, 0x00, 0x80, 0x30, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9355, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x80, 0x80, 0x32, 0x88, 0x80, 0x20, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9356, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x33, 0x22, 0x00, 0x20, 0x3E, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x52, 0x00, 0x6A, 0x52, 0x00, 0x28, 0x63, 0x80, 0x0E, 0x40, 0x00, 0x38, 0x40, 0x00, 0x60, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9357, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x20, 0x36, 0x00, 0x7E, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x7E, 0x88, 0x80, 0x08, 0x7F, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x49, 0x00, 0x0E, 0x4B, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9358, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x1C, 0xF5, 0x00, 0x16, 0x95, 0x00, 0x32, 0x95, 0x00, 0x20, 0xF5, 0x00, 0x7E, 0x95, 0x00, 0x08, 0x95, 0x00, 0x08, 0x95, 0x00, 0x7E, 0xF5, 0x00, 0x08, 0x95, 0x00, 0x4A, 0x95, 0x00, 0x6A, 0x95, 0x00, 0x28, 0xF1, 0x00, 0x0E, 0x91, 0x00, 0x19, 0x99, 0x00, 0x71, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x935A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x4A, 0x7F, 0x80, 0x6A, 0xCA, 0x80, 0x28, 0x12, 0x80, 0x08, 0x64, 0x80, 0x1E, 0x08, 0x80, 0x70, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x935B, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x14, 0xCE, 0x00, 0x22, 0x8A, 0x00, 0x00, 0x8A, 0x80, 0x3E, 0x93, 0x80, 0x08, 0xE0, 0x00, 0x08, 0x80, 0x00, 0x3E, 0x9F, 0x00, 0x08, 0xE9, 0x00, 0x0A, 0x8A, 0x00, 0x2A, 0x86, 0x00, 0x2A, 0xE4, 0x00, 0x28, 0x84, 0x00, 0x0F, 0x8A, 0x00, 0x38, 0x91, 0x00, 0x00, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x935C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xF7, 0x80, 0x16, 0x90, 0x80, 0x32, 0x90, 0x80, 0x20, 0x90, 0x80, 0x7E, 0xF7, 0x80, 0x08, 0x80, 0x00, 0x08, 0x8F, 0x80, 0x7E, 0xF4, 0x80, 0x08, 0x85, 0x80, 0x4A, 0x85, 0x00, 0x6A, 0xF7, 0x00, 0x28, 0x82, 0x00, 0x0E, 0x87, 0x00, 0x38, 0x85, 0x00, 0x60, 0x8D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x935E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x0B, 0x0F, 0x80, 0x19, 0x08, 0x00, 0x10, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x64, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x04, 0x41, 0x00, 0x25, 0x7F, 0x00, 0x35, 0x41, 0x00, 0x14, 0x41, 0x00, 0x07, 0x7F, 0x00, 0x1C, 0x22, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9360, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9364, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x68, 0x00, 0x7E, 0xCB, 0x80, 0x08, 0x88, 0x80, 0x4A, 0x88, 0x80, 0x6A, 0xEB, 0x80, 0x28, 0x88, 0x80, 0x0E, 0x88, 0x80, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9365, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x38, 0x77, 0x80, 0x2D, 0xC2, 0x80, 0x64, 0x72, 0x80, 0x01, 0xC2, 0x80, 0x7C, 0x42, 0x80, 0x10, 0x76, 0x80, 0x11, 0xC4, 0x80, 0x7C, 0x4D, 0x80, 0x10, 0x00, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x50, 0x28, 0x00, 0x1C, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x61, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9367, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x16, 0x7F, 0x80, 0x32, 0xC0, 0x80, 0x21, 0xBC, 0x80, 0x7E, 0x00, 0x80, 0x08, 0x7E, 0x80, 0x08, 0x00, 0x80, 0x7E, 0x3C, 0x80, 0x08, 0x00, 0x80, 0x4A, 0x3C, 0x80, 0x6A, 0x00, 0x80, 0x28, 0x3C, 0x80, 0x0E, 0x24, 0x80, 0x38, 0x3C, 0x80, 0x60, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9369, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x20, 0x22, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x08, 0x20, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0xA1, 0x00, 0x28, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x936A, { 0x00, 0x00, 0x00, 0x3F, 0x20, 0x00, 0x02, 0x3F, 0x80, 0x14, 0x52, 0x00, 0x7F, 0x16, 0x00, 0x0D, 0x1C, 0x00, 0x14, 0x08, 0x00, 0x64, 0x1C, 0x00, 0x0C, 0x76, 0x00, 0x00, 0x83, 0x80, 0x03, 0x60, 0x00, 0x0E, 0x1C, 0x00, 0x73, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x936C, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x1C, 0x72, 0x00, 0x17, 0xC2, 0x00, 0x32, 0x4A, 0x80, 0x20, 0x4A, 0x80, 0x7F, 0xFA, 0x80, 0x08, 0x4A, 0x80, 0x08, 0xE2, 0x00, 0x7E, 0xD2, 0x00, 0x09, 0x52, 0x00, 0x4A, 0x47, 0x00, 0x6A, 0x45, 0x00, 0x28, 0x45, 0x00, 0x0E, 0x45, 0x00, 0x38, 0x4D, 0x80, 0x60, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x936D, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x5F, 0x00, 0x16, 0x41, 0x00, 0x32, 0xC1, 0x00, 0x20, 0xBF, 0x80, 0x7E, 0x90, 0x00, 0x09, 0x90, 0x00, 0x08, 0xBF, 0x00, 0x7E, 0xA4, 0x00, 0x08, 0x84, 0x00, 0x4A, 0xBF, 0x80, 0x6A, 0x8A, 0x00, 0x28, 0x8A, 0x00, 0x0E, 0x9B, 0x00, 0x38, 0x91, 0x00, 0x60, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x936E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x78, 0x00, 0x22, 0x14, 0x00, 0x00, 0x22, 0x00, 0x3E, 0xC1, 0x80, 0x08, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x08, 0xF2, 0x80, 0x2A, 0x92, 0x80, 0x2A, 0xF5, 0x00, 0x2A, 0x9A, 0x00, 0x08, 0xF9, 0x00, 0x0E, 0x95, 0x00, 0x30, 0x94, 0x80, 0x00, 0xB2, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x936F, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x16, 0x7F, 0x80, 0x32, 0xD4, 0x80, 0x21, 0x94, 0x80, 0x7E, 0x74, 0x80, 0x08, 0x38, 0x80, 0x08, 0x4D, 0x80, 0x7E, 0x91, 0x00, 0x08, 0x27, 0x00, 0x4A, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x28, 0xAD, 0x00, 0x0E, 0xA5, 0x80, 0x39, 0xB2, 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9370, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x1E, 0x00, 0x16, 0xF2, 0x00, 0x32, 0x53, 0x00, 0x20, 0x89, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0x76, 0x00, 0x28, 0x5C, 0x00, 0x0E, 0xC8, 0x00, 0x39, 0x9E, 0x00, 0x60, 0x73, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9371, { 0x00, 0x00, 0x00, 0x08, 0x4A, 0x00, 0x1C, 0x4A, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x4A, 0x00, 0x20, 0x4A, 0x00, 0x7E, 0x4E, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x2A, 0x00, 0x6A, 0x2A, 0x00, 0x28, 0x6B, 0x00, 0x0E, 0x49, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9373, { 0x00, 0x00, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x10, 0x00, 0x3F, 0x3F, 0x80, 0x21, 0x20, 0x00, 0x3F, 0x60, 0x00, 0x24, 0x00, 0x00, 0x3F, 0x1F, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x88, 0x00, 0x02, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9374, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x88, 0x80, 0x16, 0x88, 0x80, 0x32, 0x88, 0x80, 0x20, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0xA4, 0x80, 0x6A, 0xA4, 0x80, 0x28, 0xA4, 0x80, 0x0E, 0xA4, 0x80, 0x38, 0xA4, 0x80, 0x60, 0xA5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9375, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x15, 0xC4, 0x00, 0x22, 0x5F, 0x00, 0x00, 0x45, 0x00, 0x00, 0xFF, 0x80, 0x3D, 0x05, 0x00, 0x09, 0xDF, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x09, 0x5F, 0x00, 0x2B, 0x44, 0x00, 0x2A, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x0F, 0x44, 0x00, 0x39, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9376, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x33, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x4A, 0x0C, 0x00, 0x6A, 0x14, 0x00, 0x28, 0x51, 0x00, 0x0E, 0x51, 0x80, 0x38, 0x52, 0x80, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x937A, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x1C, 0x11, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x12, 0x00, 0x20, 0x16, 0x00, 0x7E, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x18, 0x00, 0x7E, 0x24, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0xA1, 0x00, 0x6A, 0x21, 0x00, 0x28, 0x3F, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x937C, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x14, 0x09, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xF8, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xF9, 0x00, 0x0A, 0xD9, 0x00, 0x2A, 0xD6, 0x00, 0x2A, 0xD4, 0x00, 0x28, 0xF6, 0x80, 0x0F, 0x0A, 0x80, 0x31, 0x11, 0x80, 0x02, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x937D, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x80, 0x1C, 0x7E, 0x00, 0x16, 0x40, 0x00, 0x33, 0x7F, 0x80, 0x20, 0x40, 0x80, 0x7E, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x7E, 0x7F, 0x80, 0x08, 0x54, 0x80, 0x4A, 0xD4, 0x80, 0x6A, 0xFF, 0x80, 0x29, 0x54, 0x80, 0x0E, 0x54, 0x80, 0x38, 0x54, 0x80, 0x60, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x937E, { 0x00, 0x00, 0x00, 0x08, 0x0F, 0x00, 0x14, 0x78, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x0F, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x937F, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x16, 0x92, 0x00, 0x33, 0xFF, 0x80, 0x20, 0x92, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9380, { 0x00, 0x00, 0x00, 0x10, 0x90, 0x00, 0x38, 0x90, 0x00, 0x2C, 0xBF, 0x80, 0x65, 0xE1, 0x00, 0x01, 0x1B, 0x00, 0x7D, 0x4E, 0x00, 0x13, 0x5B, 0x00, 0x11, 0x71, 0x80, 0x7D, 0x44, 0x00, 0x11, 0x4C, 0x00, 0x55, 0x5B, 0x00, 0x55, 0x46, 0x00, 0x51, 0x5C, 0x80, 0x1D, 0x41, 0x80, 0x31, 0x07, 0x00, 0x61, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9381, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3B, 0xF7, 0x80, 0x2D, 0x24, 0x80, 0x65, 0x24, 0x80, 0x01, 0xE4, 0x80, 0x7D, 0x25, 0x00, 0x11, 0x25, 0x00, 0x11, 0x25, 0x00, 0x7D, 0xE4, 0x80, 0x11, 0x24, 0x80, 0x55, 0x24, 0x80, 0x55, 0x24, 0x80, 0x51, 0xE4, 0x80, 0x13, 0x25, 0x80, 0x3C, 0x24, 0x00, 0x60, 0x24, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9382, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x14, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x0E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9388, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x24, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x20, 0x10, 0x00, 0x7E, 0x7E, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x4A, 0x20, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0xC8, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x938A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x20, 0x14, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x88, 0x80, 0x7E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x10, 0x00, 0x6A, 0x1F, 0x00, 0x28, 0x31, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x61, 0x00, 0x60, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x938B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x88, 0x80, 0x20, 0x8E, 0x80, 0x7E, 0x78, 0x00, 0x08, 0x0F, 0x00, 0x08, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x08, 0xF8, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x938C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x7C, 0x00, 0x22, 0x82, 0x00, 0x01, 0xFF, 0x00, 0x02, 0x48, 0x80, 0x3D, 0xFF, 0x00, 0x08, 0x49, 0x00, 0x0B, 0xFF, 0x80, 0x3E, 0x49, 0x00, 0x09, 0xFF, 0x00, 0x2A, 0xCC, 0x00, 0x2A, 0xCC, 0x00, 0x2A, 0xCA, 0x00, 0x0F, 0x4A, 0x00, 0x31, 0x49, 0x00, 0x02, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x938D, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x08, 0x88, 0x80, 0x7E, 0x12, 0x00, 0x08, 0x64, 0x00, 0x4A, 0x29, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x08, 0x80, 0x0E, 0x2A, 0x00, 0x38, 0x6B, 0x00, 0x60, 0xC9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x938F, { 0x00, 0x00, 0x00, 0x30, 0x10, 0x00, 0x1B, 0xFF, 0x80, 0x08, 0x40, 0x00, 0x60, 0x82, 0x00, 0x31, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x92, 0x00, 0x0C, 0x92, 0x00, 0x18, 0x92, 0x80, 0x31, 0x12, 0x80, 0x62, 0x01, 0x80, 0x03, 0xE0, 0x00, 0x0C, 0x98, 0x00, 0x77, 0xF7, 0x80, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9392, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0xFF, 0x80, 0x2D, 0x00, 0x00, 0x65, 0x3F, 0x00, 0x01, 0x00, 0x00, 0x7D, 0x7F, 0x80, 0x11, 0x29, 0x00, 0x11, 0x2A, 0x00, 0x7D, 0x24, 0x00, 0x11, 0x32, 0x00, 0x55, 0x61, 0x80, 0x55, 0x02, 0x00, 0x51, 0x7F, 0x80, 0x1D, 0x22, 0x00, 0x32, 0x32, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9394, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9395, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x38, 0x08, 0x00, 0x2D, 0xFF, 0x80, 0x65, 0x10, 0x00, 0x01, 0x7F, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x11, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x7F, 0x00, 0x55, 0x10, 0x00, 0x55, 0x7F, 0x00, 0x51, 0x41, 0x00, 0x1D, 0x41, 0x00, 0x32, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9396, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x14, 0x49, 0x00, 0x22, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x28, 0x41, 0x00, 0x0F, 0x7F, 0x00, 0x38, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9397, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x16, 0x36, 0x00, 0x33, 0x63, 0x00, 0x20, 0xDD, 0x80, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x40, 0x00, 0x28, 0xFF, 0x80, 0x0E, 0xA0, 0x80, 0x39, 0xA0, 0x80, 0x60, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9398, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x00, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7E, 0x94, 0x80, 0x08, 0xA4, 0x80, 0x4A, 0xC3, 0x80, 0x6A, 0x80, 0x80, 0x28, 0xBE, 0x80, 0x0E, 0x88, 0x80, 0x38, 0x88, 0x80, 0x60, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x939A, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x14, 0x48, 0x00, 0x22, 0x1F, 0x00, 0x00, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x08, 0x9F, 0x00, 0x08, 0x51, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xDF, 0x00, 0x2A, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x28, 0x5F, 0x00, 0x0E, 0x50, 0x00, 0x38, 0xBF, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x939B, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x1C, 0x09, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x4A, 0x02, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x0E, 0x12, 0x00, 0x38, 0x02, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x939E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x41, 0x00, 0x20, 0x55, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x55, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x4A, 0x44, 0x00, 0x6A, 0x75, 0x80, 0x28, 0x47, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x74, 0x80, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93A1, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x39, 0xFF, 0x80, 0x2C, 0x42, 0x00, 0x64, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x7D, 0x29, 0x00, 0x10, 0xA5, 0x00, 0x54, 0x42, 0x00, 0x54, 0x42, 0x00, 0x50, 0xA5, 0x00, 0x1C, 0xA5, 0x00, 0x31, 0xEF, 0x80, 0x61, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93A3, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x15, 0x14, 0x80, 0x16, 0x15, 0x00, 0x24, 0xA6, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x20, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0xE0, 0x80, 0x01, 0x50, 0x00, 0x07, 0xFC, 0x00, 0x38, 0x43, 0x80, 0x0F, 0xFE, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93A4, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x16, 0x7F, 0x00, 0x33, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x6B, 0x00, 0x7E, 0x2A, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x28, 0x24, 0x00, 0x0E, 0x64, 0x80, 0x38, 0x44, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93A6, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x1C, 0xE7, 0x80, 0x16, 0x94, 0x80, 0x32, 0x94, 0x80, 0x20, 0x94, 0x80, 0x7E, 0x94, 0x80, 0x08, 0xF5, 0x80, 0x08, 0xA4, 0x00, 0x7E, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93A7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0A, 0x49, 0x00, 0x11, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x25, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x04, 0x42, 0x00, 0x07, 0x22, 0x00, 0x38, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93A8, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x1C, 0x24, 0x00, 0x16, 0x7F, 0x00, 0x32, 0xC8, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93A9, { 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x39, 0x25, 0x00, 0x2C, 0xA5, 0x00, 0x64, 0x45, 0x00, 0x00, 0xA5, 0x00, 0x7D, 0x09, 0x80, 0x10, 0x20, 0x00, 0x10, 0x57, 0x80, 0x7C, 0x44, 0x80, 0x11, 0xF5, 0x80, 0x54, 0x45, 0x00, 0x54, 0xE7, 0x00, 0x50, 0xD2, 0x00, 0x1D, 0x57, 0x00, 0x32, 0x45, 0x00, 0x60, 0x4D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93AB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x80, 0x80, 0x32, 0xBE, 0x80, 0x20, 0x92, 0x80, 0x7E, 0x8C, 0x80, 0x08, 0xB2, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x22, 0x00, 0x08, 0xC3, 0x80, 0x4A, 0x20, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0xD2, 0x00, 0x0E, 0x0C, 0x00, 0x38, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93AC, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x0A, 0x80, 0x80, 0x2A, 0xBE, 0x80, 0x2A, 0xA2, 0x80, 0x28, 0xBE, 0x80, 0x0E, 0xA2, 0x80, 0x38, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93AD, { 0x00, 0x00, 0x00, 0x08, 0x8F, 0x00, 0x14, 0xF8, 0x00, 0x22, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3E, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x3E, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x80, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93AE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x0E, 0x22, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93B0, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x14, 0x04, 0x00, 0x22, 0x22, 0x00, 0x00, 0x41, 0x00, 0x00, 0xBE, 0x80, 0x3F, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x3F, 0x42, 0x00, 0x08, 0x81, 0x00, 0x2B, 0x00, 0x80, 0x2A, 0xFF, 0x00, 0x2A, 0xA5, 0x00, 0x0F, 0xA5, 0x00, 0x39, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93B4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x20, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x7E, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x4A, 0x10, 0x00, 0x6A, 0x18, 0x00, 0x28, 0x29, 0x00, 0x0E, 0xA1, 0x80, 0x38, 0xA2, 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93B5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0x10, 0x00, 0x2D, 0xFF, 0x00, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0x51, 0x00, 0x7D, 0x93, 0x00, 0x10, 0x2A, 0x00, 0x54, 0x48, 0x00, 0x55, 0x9C, 0x00, 0x50, 0x2A, 0x00, 0x1C, 0x4B, 0x00, 0x31, 0x89, 0x80, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93B6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1D, 0xFF, 0x80, 0x16, 0x02, 0x00, 0x32, 0xF2, 0x00, 0x20, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0xF2, 0x00, 0x08, 0x06, 0x00, 0x7E, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x4A, 0x02, 0x00, 0x6A, 0xF2, 0x00, 0x28, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x38, 0xF2, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93B9, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x1C, 0x93, 0x00, 0x16, 0xF1, 0x80, 0x32, 0x40, 0x00, 0x20, 0x9F, 0x00, 0x7E, 0xC4, 0x00, 0x08, 0x44, 0x00, 0x08, 0x1F, 0x80, 0x7E, 0xC4, 0x00, 0x08, 0x4E, 0x00, 0x4A, 0x4A, 0x00, 0x6A, 0x5B, 0x00, 0x28, 0x51, 0x00, 0x0E, 0xC0, 0x00, 0x38, 0xA0, 0x00, 0x61, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93BA, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0xCF, 0x00, 0x2C, 0x09, 0x00, 0x64, 0x09, 0x00, 0x00, 0x09, 0x00, 0x7F, 0xEF, 0x00, 0x10, 0x89, 0x00, 0x10, 0x89, 0x00, 0x7E, 0xA9, 0x00, 0x12, 0xA9, 0x00, 0x56, 0xAF, 0x00, 0x54, 0xA9, 0x00, 0x50, 0x89, 0x00, 0x1C, 0x89, 0x00, 0x30, 0x89, 0x00, 0x60, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93C1, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x92, 0x00, 0x16, 0x49, 0x00, 0x33, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93C3, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x14, 0x84, 0x00, 0x22, 0x88, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0x8A, 0x00, 0x08, 0x92, 0x00, 0x08, 0xF4, 0x00, 0x3F, 0x9F, 0x80, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x2A, 0x9F, 0x80, 0x2A, 0x92, 0x00, 0x29, 0x15, 0x00, 0x0F, 0x25, 0x00, 0x39, 0x29, 0x00, 0x02, 0xD0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93C4, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x0A, 0x00, 0x08, 0x3F, 0x00, 0x4A, 0xE1, 0x80, 0x6A, 0x02, 0x00, 0x28, 0xFF, 0x80, 0x0E, 0x22, 0x00, 0x38, 0x32, 0x00, 0x60, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93C5, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x38, 0x88, 0x00, 0x2C, 0x9F, 0x80, 0x65, 0xB1, 0x00, 0x01, 0x0B, 0x00, 0x7D, 0x4E, 0x00, 0x13, 0x5B, 0x00, 0x11, 0x71, 0x80, 0x7D, 0x5F, 0x00, 0x11, 0x51, 0x00, 0x55, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x51, 0x5F, 0x00, 0x1D, 0x51, 0x00, 0x31, 0x11, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93C6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x49, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93C7, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x38, 0x48, 0x00, 0x2C, 0x4F, 0x80, 0x65, 0xE8, 0x00, 0x00, 0x90, 0x00, 0x7C, 0x8F, 0x80, 0x10, 0xE2, 0x80, 0x10, 0xA2, 0x80, 0x7C, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x54, 0xAB, 0x80, 0x54, 0xAA, 0x00, 0x51, 0xAA, 0x00, 0x1D, 0x2A, 0x00, 0x31, 0x6E, 0x00, 0x63, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93C8, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x1C, 0x84, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x44, 0x00, 0x20, 0x9F, 0x00, 0x7E, 0xD5, 0x00, 0x08, 0x55, 0x00, 0x08, 0x1F, 0x00, 0x7E, 0xD5, 0x00, 0x08, 0x55, 0x00, 0x4A, 0x5F, 0x00, 0x6A, 0x44, 0x00, 0x28, 0x7F, 0x80, 0x0E, 0xC4, 0x00, 0x38, 0xA4, 0x00, 0x61, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93C9, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2D, 0xF4, 0x00, 0x64, 0x4F, 0x80, 0x01, 0xFA, 0x80, 0x7D, 0x52, 0x00, 0x11, 0x52, 0x00, 0x11, 0x52, 0x00, 0x7D, 0xF2, 0x00, 0x10, 0x42, 0x00, 0x54, 0x47, 0x00, 0x54, 0xE5, 0x00, 0x50, 0xD5, 0x00, 0x1D, 0x4D, 0x80, 0x32, 0x48, 0x80, 0x60, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93CA, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xE1, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xDB, 0x00, 0x08, 0x0E, 0x00, 0x1F, 0x8A, 0x00, 0x30, 0x9B, 0x00, 0x63, 0xB1, 0x80, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x98, 0x00, 0x77, 0xF7, 0x80, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93CB, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2D, 0xFF, 0x80, 0x64, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x10, 0x80, 0x11, 0xD6, 0x80, 0x55, 0x52, 0x80, 0x55, 0x52, 0x80, 0x51, 0xB5, 0x80, 0x1D, 0x10, 0x80, 0x31, 0x10, 0x80, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93CC, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2D, 0xFF, 0x80, 0x64, 0x44, 0x00, 0x00, 0x44, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x54, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x50, 0x28, 0x00, 0x1C, 0x6C, 0x00, 0x30, 0xC6, 0x00, 0x63, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93CD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x88, 0x80, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x68, 0x00, 0x08, 0x11, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x08, 0x80, 0x28, 0x2A, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93D0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x77, 0x00, 0x16, 0x33, 0x00, 0x32, 0x55, 0x00, 0x20, 0x33, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x7E, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x4A, 0x08, 0x00, 0x6A, 0x32, 0x00, 0x28, 0x0C, 0x80, 0x0E, 0x31, 0x00, 0x38, 0x06, 0x00, 0x60, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93D1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x41, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x08, 0x88, 0x80, 0x0A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x0E, 0xBE, 0x80, 0x30, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93D3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x91, 0x00, 0x20, 0xDD, 0x00, 0x7E, 0xA5, 0x00, 0x08, 0xD5, 0x00, 0x08, 0x89, 0x00, 0x7E, 0x95, 0x00, 0x08, 0x81, 0x00, 0x4A, 0xFF, 0x00, 0x6A, 0x08, 0x00, 0x28, 0xAD, 0x00, 0x0E, 0xA5, 0x80, 0x38, 0xA2, 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93D6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x6F, 0x3E, 0x00, 0x48, 0x21, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x98, 0x00, 0x77, 0xF7, 0x80, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93D7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0xA4, 0x80, 0x32, 0xA5, 0x80, 0x20, 0xF5, 0x00, 0x7E, 0x93, 0x00, 0x08, 0xF2, 0x00, 0x08, 0xA7, 0x00, 0x7E, 0xAD, 0x80, 0x08, 0xF0, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x38, 0xFF, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93D8, { 0x00, 0x00, 0x00, 0x10, 0x48, 0x00, 0x39, 0x4F, 0x00, 0x2D, 0x59, 0x00, 0x65, 0x75, 0x00, 0x01, 0x4B, 0x00, 0x7D, 0xC6, 0x00, 0x10, 0x4C, 0x00, 0x10, 0x59, 0x00, 0x7C, 0x41, 0x00, 0x13, 0xDF, 0x80, 0x55, 0x41, 0x00, 0x55, 0x49, 0x00, 0x51, 0x4D, 0x00, 0x1D, 0x45, 0x00, 0x32, 0x41, 0x00, 0x60, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93D9, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x91, 0x00, 0x16, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x20, 0x24, 0x00, 0x7E, 0x28, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x7E, 0xC8, 0x00, 0x09, 0x7F, 0x00, 0x4A, 0x48, 0x00, 0x6A, 0x48, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x48, 0x00, 0x60, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93DC, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x6B, 0x00, 0x16, 0x2A, 0x00, 0x32, 0x08, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93DD, { 0x00, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x1C, 0x22, 0x00, 0x16, 0x3E, 0x00, 0x33, 0x22, 0x00, 0x20, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0xA4, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x43, 0x00, 0x28, 0x26, 0x00, 0x0E, 0x1C, 0x00, 0x38, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93DE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x23, 0x08, 0x00, 0x01, 0x7F, 0x00, 0x3F, 0x09, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x09, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x2B, 0x49, 0x00, 0x2D, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x0F, 0x7F, 0x00, 0x31, 0x49, 0x00, 0x02, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93DF, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x64, 0x42, 0x00, 0x00, 0x3C, 0x00, 0x7C, 0x42, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x7D, 0x48, 0x00, 0x11, 0x7F, 0x00, 0x55, 0x88, 0x00, 0x55, 0x08, 0x00, 0x51, 0x7F, 0x00, 0x1D, 0x08, 0x00, 0x32, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93E1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x12, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x24, 0x00, 0x0F, 0x24, 0x00, 0x38, 0x44, 0x80, 0x01, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93E2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x14, 0x00, 0x33, 0x7F, 0x00, 0x20, 0x55, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x08, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93E4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0xFE, 0x00, 0x22, 0x92, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x0F, 0xE8, 0x00, 0x38, 0x3C, 0x00, 0x03, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93E5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x20, 0xA1, 0x00, 0x7E, 0x3F, 0x80, 0x08, 0x64, 0x00, 0x08, 0x48, 0x00, 0x7E, 0xDF, 0x00, 0x08, 0x51, 0x00, 0x4A, 0x51, 0x00, 0x6A, 0x5F, 0x00, 0x28, 0x51, 0x00, 0x0E, 0x51, 0x00, 0x38, 0x51, 0x00, 0x60, 0x5F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93E6, { 0x00, 0x00, 0x00, 0x10, 0x51, 0x00, 0x38, 0x51, 0x00, 0x2C, 0x91, 0x00, 0x64, 0xAA, 0x80, 0x01, 0x2A, 0x80, 0x7C, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x84, 0x00, 0x7D, 0x97, 0x00, 0x10, 0x94, 0x00, 0x54, 0x94, 0x00, 0x54, 0x94, 0x00, 0x50, 0x94, 0x00, 0x1C, 0x9C, 0x00, 0x30, 0xB6, 0x00, 0x60, 0xA3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93E7, { 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x7F, 0xD2, 0x00, 0x04, 0x23, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x8E, 0x00, 0x3F, 0xB1, 0x80, 0x20, 0x80, 0x00, 0x43, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93E8, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x7F, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x22, 0x00, 0x7F, 0xC2, 0x00, 0x04, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x98, 0x00, 0x77, 0xF7, 0x80, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93F6, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x14, 0x48, 0x00, 0x22, 0xFF, 0x00, 0x01, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x0A, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x88, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x88, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x28, 0x1C, 0x00, 0x0E, 0x2A, 0x00, 0x30, 0x49, 0x00, 0x01, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93F7, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x1C, 0x94, 0x80, 0x16, 0x55, 0x00, 0x32, 0x14, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x41, 0x00, 0x08, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x0E, 0x36, 0x00, 0x38, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93F8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0x10, 0x00, 0x2D, 0xFF, 0x80, 0x64, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x7C, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x12, 0x00, 0x54, 0x7F, 0x00, 0x55, 0xC1, 0x80, 0x50, 0x10, 0x00, 0x1C, 0xA9, 0x00, 0x30, 0xA2, 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93F9, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x3B, 0xD9, 0x00, 0x2C, 0x51, 0x00, 0x64, 0x7F, 0x80, 0x00, 0x44, 0x80, 0x7D, 0xC4, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x15, 0x00, 0x7D, 0x15, 0x00, 0x11, 0xD5, 0x00, 0x54, 0x5F, 0x00, 0x54, 0x44, 0x00, 0x50, 0x45, 0x00, 0x1C, 0xC5, 0x00, 0x30, 0x8F, 0x80, 0x63, 0xB8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93FA, { 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x39, 0xFA, 0x00, 0x2E, 0x28, 0x80, 0x65, 0x6D, 0x00, 0x00, 0xC6, 0x00, 0x7D, 0x83, 0x00, 0x13, 0x01, 0x80, 0x11, 0xCF, 0x00, 0x7C, 0x49, 0x00, 0x10, 0x59, 0x80, 0x55, 0xC0, 0x00, 0x55, 0x1F, 0x00, 0x51, 0xC9, 0x00, 0x1C, 0x46, 0x00, 0x30, 0x49, 0x00, 0x61, 0x90, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x93FB, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x2A, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x2A, 0x00, 0x7E, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x48, 0x00, 0x7E, 0x71, 0x00, 0x08, 0xD7, 0x80, 0x4A, 0x95, 0x00, 0x6A, 0x75, 0x00, 0x28, 0x3F, 0x80, 0x0E, 0x61, 0x00, 0x38, 0xC1, 0x00, 0x61, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x93FD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0xFE, 0x00, 0x2C, 0x12, 0x00, 0x65, 0xFF, 0x80, 0x00, 0x12, 0x00, 0x7C, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x11, 0x55, 0x00, 0x7D, 0xD7, 0x00, 0x11, 0x11, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x51, 0xD7, 0x00, 0x1D, 0x55, 0x00, 0x31, 0x55, 0x00, 0x62, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9401, { 0x00, 0x00, 0x00, 0x11, 0x20, 0x80, 0x39, 0x21, 0x80, 0x2F, 0xF7, 0x00, 0x65, 0x24, 0x00, 0x01, 0x24, 0x00, 0x7D, 0xE7, 0x80, 0x11, 0x25, 0x00, 0x11, 0x25, 0x00, 0x7D, 0xE5, 0x00, 0x11, 0x25, 0x00, 0x55, 0x25, 0x00, 0x57, 0xF5, 0x00, 0x51, 0x45, 0x00, 0x1D, 0x65, 0x00, 0x33, 0x29, 0x00, 0x62, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9402, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x2C, 0x28, 0x00, 0x65, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x7D, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7C, 0x28, 0x00, 0x11, 0xFF, 0x00, 0x55, 0x11, 0x00, 0x55, 0x11, 0x00, 0x51, 0xFF, 0x00, 0x1D, 0x11, 0x00, 0x31, 0x11, 0x00, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9403, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x3E, 0x00, 0x16, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x00, 0x00, 0x7E, 0x42, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x42, 0x00, 0x7E, 0x72, 0x00, 0x08, 0xC7, 0x80, 0x4A, 0x00, 0x00, 0x6A, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x0E, 0x24, 0x80, 0x38, 0x64, 0x80, 0x60, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9404, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x0A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x0E, 0x00, 0x00, 0x30, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9407, { 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x1C, 0x7C, 0x00, 0x16, 0x89, 0x00, 0x32, 0x4A, 0x00, 0x20, 0xFF, 0x80, 0x7E, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x7E, 0xC9, 0x80, 0x08, 0x00, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9408, { 0x00, 0x00, 0x00, 0x08, 0x0E, 0x00, 0x1C, 0x78, 0x00, 0x16, 0x10, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x24, 0x00, 0x7E, 0x7E, 0x00, 0x09, 0xA5, 0x80, 0x08, 0x3C, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x4A, 0x81, 0x00, 0x6A, 0xBD, 0x00, 0x28, 0xA5, 0x00, 0x0E, 0xBD, 0x00, 0x38, 0x81, 0x00, 0x60, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9409, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xF7, 0x80, 0x16, 0x94, 0x80, 0x32, 0xF7, 0x80, 0x20, 0x84, 0x00, 0x7E, 0x94, 0x80, 0x08, 0x73, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x24, 0x00, 0x08, 0xFF, 0x00, 0x4A, 0x24, 0x00, 0x6A, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x0E, 0x42, 0x00, 0x38, 0xC3, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x940D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0xFF, 0x00, 0x2C, 0x22, 0x00, 0x64, 0x14, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x29, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x98, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x24, 0x80, 0x55, 0x44, 0x80, 0x55, 0xBF, 0x80, 0x51, 0x24, 0x80, 0x1D, 0x24, 0x80, 0x31, 0x3C, 0x80, 0x61, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x940E, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x28, 0x00, 0x16, 0x7F, 0x80, 0x32, 0x48, 0x00, 0x20, 0xC8, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x4A, 0x48, 0x00, 0x6A, 0x7F, 0x80, 0x28, 0x00, 0x00, 0x0E, 0x55, 0x00, 0x38, 0xD5, 0x80, 0x60, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x940F, { 0x00, 0x00, 0x00, 0x08, 0x2E, 0x00, 0x1C, 0x41, 0x00, 0x16, 0xBE, 0x80, 0x32, 0x14, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x55, 0x00, 0x08, 0x67, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x02, 0x00, 0x28, 0xFF, 0x80, 0x0E, 0x22, 0x00, 0x38, 0x12, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9410, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x14, 0x00, 0x20, 0x55, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC1, 0x80, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x08, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9413, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2D, 0xF4, 0x00, 0x64, 0x07, 0x80, 0x01, 0xF5, 0x00, 0x7D, 0x19, 0x00, 0x11, 0xF5, 0x00, 0x10, 0x05, 0x00, 0x7D, 0xF5, 0x00, 0x10, 0x27, 0x00, 0x54, 0x42, 0x00, 0x54, 0x72, 0x00, 0x51, 0xC7, 0x00, 0x1C, 0x45, 0x00, 0x30, 0x4D, 0x80, 0x61, 0xC8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9414, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1D, 0xFF, 0x80, 0x16, 0x28, 0x00, 0x32, 0xFF, 0x00, 0x20, 0xA9, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x4A, 0x42, 0x00, 0x6A, 0x7E, 0x00, 0x28, 0x10, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x10, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9415, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0xF7, 0x80, 0x2C, 0xA5, 0x00, 0x64, 0xA5, 0x00, 0x01, 0xFF, 0x80, 0x7C, 0x63, 0x00, 0x10, 0xB5, 0x00, 0x11, 0x29, 0x80, 0x7C, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x50, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x30, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9416, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0xCB, 0x00, 0x16, 0x8A, 0x00, 0x32, 0xAA, 0x80, 0x20, 0x49, 0x00, 0x7E, 0x8A, 0x00, 0x08, 0xAA, 0x80, 0x08, 0xEB, 0x80, 0x7E, 0x09, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x88, 0x00, 0x6A, 0x89, 0x00, 0x28, 0xCA, 0x00, 0x0E, 0xA4, 0x80, 0x38, 0x8A, 0x80, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9417, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xF7, 0x80, 0x16, 0x94, 0x80, 0x32, 0xF7, 0x80, 0x20, 0x94, 0x80, 0x7E, 0xF7, 0x80, 0x08, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x7E, 0xA2, 0x80, 0x08, 0xBE, 0x80, 0x4A, 0xA2, 0x80, 0x6A, 0xBE, 0x80, 0x28, 0xA2, 0x80, 0x0E, 0xA6, 0x80, 0x38, 0x80, 0x80, 0x60, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9418, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x0F, 0x7F, 0x00, 0x38, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9419, { 0x00, 0x00, 0x00, 0x08, 0x79, 0x00, 0x1C, 0x8A, 0x80, 0x16, 0x5D, 0x00, 0x32, 0x36, 0x00, 0x20, 0x63, 0x00, 0x7E, 0xC1, 0x80, 0x08, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x22, 0x00, 0x0E, 0x36, 0x00, 0x38, 0x14, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x941A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x14, 0x00, 0x32, 0x77, 0x00, 0x20, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x77, 0x00, 0x08, 0x14, 0x00, 0x7E, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x4A, 0x08, 0x00, 0x6A, 0x0C, 0x00, 0x28, 0x55, 0x00, 0x0E, 0x51, 0x80, 0x38, 0xD2, 0x80, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x941F, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x38, 0x42, 0x00, 0x2D, 0xEF, 0x80, 0x64, 0x42, 0x00, 0x00, 0x42, 0x00, 0x7D, 0xEF, 0x80, 0x10, 0x42, 0x00, 0x10, 0xA5, 0x00, 0x7D, 0x00, 0x80, 0x10, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0x81, 0x00, 0x50, 0xFF, 0x00, 0x1C, 0x81, 0x00, 0x30, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9421, { 0x00, 0x00, 0x00, 0x10, 0x45, 0x00, 0x38, 0x45, 0x80, 0x2D, 0xF4, 0x80, 0x64, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x7C, 0x04, 0x00, 0x11, 0xF4, 0x00, 0x11, 0x14, 0x80, 0x7D, 0xF4, 0x80, 0x10, 0x05, 0x80, 0x55, 0x15, 0x00, 0x55, 0xB7, 0x00, 0x50, 0xA2, 0x00, 0x1C, 0x76, 0x80, 0x31, 0xCA, 0x80, 0x60, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9425, { 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x14, 0x12, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x49, 0x00, 0x3E, 0x2A, 0x00, 0x09, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x942B, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x14, 0x48, 0x00, 0x22, 0xFF, 0x00, 0x01, 0x48, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x2A, 0xF7, 0x80, 0x2A, 0x94, 0x80, 0x28, 0x9C, 0x80, 0x0E, 0x80, 0x80, 0x38, 0x80, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x942E, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x38, 0x08, 0x00, 0x2D, 0xFF, 0x80, 0x65, 0x12, 0x00, 0x01, 0xFF, 0x80, 0x7D, 0x14, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x15, 0x00, 0x7D, 0xFF, 0x80, 0x11, 0x15, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x14, 0x00, 0x51, 0x36, 0x00, 0x1D, 0x55, 0x00, 0x32, 0x94, 0x80, 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x942F, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x24, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x24, 0x00, 0x20, 0x11, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x12, 0x00, 0x08, 0x14, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x0A, 0x00, 0x4A, 0x3F, 0x00, 0x6A, 0xE1, 0x00, 0x28, 0x3F, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9431, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0x38, 0x00, 0x2C, 0x6C, 0x00, 0x64, 0xC6, 0x00, 0x01, 0x83, 0x80, 0x7C, 0x7C, 0x00, 0x10, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x7D, 0x29, 0x00, 0x11, 0x29, 0x00, 0x55, 0xEF, 0x00, 0x54, 0x00, 0x00, 0x50, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x31, 0xC7, 0x00, 0x63, 0x6D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9432, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0xFF, 0x80, 0x2C, 0xA4, 0x80, 0x64, 0xA4, 0x80, 0x00, 0xFF, 0x80, 0x7C, 0x40, 0x00, 0x10, 0xFF, 0x80, 0x11, 0x90, 0x80, 0x7C, 0xFE, 0x80, 0x10, 0x92, 0x80, 0x54, 0xFE, 0x80, 0x54, 0x10, 0x80, 0x50, 0x14, 0x80, 0x1C, 0x3D, 0x80, 0x30, 0xE5, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9433, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x80, 0x7E, 0xAA, 0x80, 0x08, 0x88, 0x80, 0x08, 0x2A, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9434, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x38, 0xE2, 0x00, 0x2C, 0xAF, 0x80, 0x64, 0xA0, 0x00, 0x00, 0xA8, 0x80, 0x7C, 0xAD, 0x80, 0x10, 0xE5, 0x00, 0x10, 0x8F, 0x80, 0x7C, 0x82, 0x00, 0x10, 0xE2, 0x00, 0x55, 0xAF, 0x80, 0x55, 0xA2, 0x00, 0x52, 0xA2, 0x00, 0x10, 0xA2, 0x00, 0x3C, 0xE2, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9435, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x14, 0x4A, 0x00, 0x23, 0xF9, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0xE8, 0x80, 0x3E, 0xA8, 0x80, 0x08, 0xE9, 0x00, 0x0A, 0x09, 0x00, 0x2B, 0xFA, 0x00, 0x2A, 0x46, 0x00, 0x29, 0xF4, 0x00, 0x0F, 0x46, 0x80, 0x39, 0xE9, 0x80, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9436, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x55, 0x00, 0x32, 0x55, 0x00, 0x20, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x14, 0x80, 0x28, 0x35, 0x00, 0x0E, 0xE6, 0x00, 0x38, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9438, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x22, 0x94, 0x80, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x22, 0x00, 0x0A, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x0F, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x943A, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x6B, 0x00, 0x16, 0x2A, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x7E, 0xBE, 0x80, 0x08, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x49, 0x00, 0x6A, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x49, 0x00, 0x38, 0x49, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x943B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0x1F, 0x00, 0x2C, 0x10, 0x00, 0x65, 0xFF, 0x80, 0x01, 0x10, 0x80, 0x7D, 0x7E, 0x00, 0x11, 0x10, 0x80, 0x11, 0x0F, 0x80, 0x7D, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x55, 0x10, 0x00, 0x55, 0x68, 0x80, 0x51, 0x15, 0x00, 0x1D, 0x6E, 0x00, 0x31, 0x15, 0x00, 0x62, 0x6C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x943D, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x39, 0x04, 0x00, 0x2D, 0xBF, 0x80, 0x64, 0x84, 0x00, 0x01, 0x3F, 0x80, 0x7D, 0x91, 0x00, 0x10, 0x8A, 0x00, 0x10, 0x3F, 0x80, 0x7D, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x54, 0x84, 0x00, 0x54, 0xBF, 0x80, 0x50, 0x84, 0x00, 0x1C, 0x84, 0x00, 0x31, 0xC0, 0x00, 0x63, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x943E, { 0x00, 0x00, 0x00, 0x1F, 0x88, 0x00, 0x10, 0xBE, 0x00, 0x1F, 0x94, 0x00, 0x10, 0x7F, 0x00, 0x1F, 0x88, 0x00, 0x28, 0xBE, 0x00, 0x4F, 0x88, 0x00, 0x01, 0x48, 0x00, 0x06, 0x30, 0x00, 0x1B, 0xEF, 0x00, 0x60, 0x82, 0x00, 0x0F, 0xF8, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA4, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x943F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x42, 0x00, 0x20, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x7E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x4A, 0x42, 0x00, 0x6A, 0x7E, 0x00, 0x28, 0x10, 0x00, 0x0E, 0xA9, 0x00, 0x38, 0xA2, 0x80, 0x61, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9441, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xA2, 0x80, 0x16, 0x94, 0x80, 0x32, 0xC9, 0x80, 0x20, 0x94, 0x80, 0x7E, 0xA2, 0x80, 0x08, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x7E, 0x22, 0x00, 0x08, 0xC3, 0x80, 0x4A, 0x20, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0xD2, 0x00, 0x0E, 0x0C, 0x00, 0x38, 0x36, 0x00, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9443, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0xF7, 0x80, 0x2C, 0x52, 0x80, 0x64, 0x94, 0x80, 0x00, 0x31, 0x80, 0x7C, 0xD6, 0x80, 0x10, 0x44, 0x00, 0x10, 0x88, 0x00, 0x7D, 0xFF, 0x80, 0x12, 0x88, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x50, 0xFF, 0x00, 0x1C, 0x88, 0x00, 0x30, 0x88, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9444, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x7C, 0x80, 0x3E, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x2A, 0x02, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0xEA, 0x00, 0x0E, 0xA6, 0x00, 0x30, 0xE2, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9445, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x3A, 0xAA, 0x80, 0x2C, 0xAA, 0x80, 0x65, 0x45, 0x00, 0x02, 0x28, 0x80, 0x7C, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x7C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x54, 0x54, 0x00, 0x54, 0x54, 0x00, 0x50, 0xD6, 0x00, 0x1D, 0x93, 0x00, 0x33, 0x11, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9448, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x3B, 0xFF, 0x80, 0x2C, 0x92, 0x00, 0x65, 0x11, 0x00, 0x03, 0xFF, 0x80, 0x7D, 0x11, 0x00, 0x11, 0xBB, 0x00, 0x11, 0x55, 0x00, 0x7D, 0xBB, 0x00, 0x11, 0x11, 0x00, 0x55, 0xBB, 0x00, 0x55, 0x55, 0x00, 0x51, 0xBB, 0x00, 0x1D, 0x11, 0x00, 0x31, 0x11, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x944A, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x39, 0xFF, 0x80, 0x2C, 0x22, 0x00, 0x64, 0x48, 0x00, 0x00, 0xFF, 0x80, 0x7D, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x7C, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x54, 0xFF, 0x80, 0x54, 0x00, 0x00, 0x51, 0xFF, 0x00, 0x1C, 0x42, 0x00, 0x30, 0x3C, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x944C, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x39, 0xFF, 0x80, 0x2D, 0x00, 0x80, 0x64, 0xFF, 0x00, 0x00, 0x52, 0x00, 0x7D, 0x94, 0x00, 0x10, 0x18, 0x00, 0x10, 0xFF, 0x00, 0x7D, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x50, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x30, 0x42, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9451, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x14, 0xFA, 0x00, 0x22, 0xA4, 0x00, 0x00, 0xAF, 0x80, 0x3E, 0xF0, 0x00, 0x08, 0x90, 0x00, 0x08, 0xF0, 0x00, 0x08, 0xA7, 0x80, 0x3E, 0xA0, 0x00, 0x08, 0xF8, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x55, 0x00, 0x0E, 0x55, 0x00, 0x30, 0x55, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9452, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0xC0, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0x80, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xFF, 0x80, 0x01, 0x30, 0x00, 0x07, 0xFC, 0x00, 0x38, 0x43, 0x80, 0x07, 0xFE, 0x00, 0x02, 0x48, 0x00, 0x01, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9453, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x39, 0x1F, 0x00, 0x29, 0x95, 0x00, 0x6C, 0x9F, 0x00, 0x00, 0x04, 0x00, 0x7C, 0x3F, 0x80, 0x10, 0x00, 0x00, 0x13, 0x9F, 0x00, 0x7C, 0x91, 0x00, 0x10, 0x9F, 0x00, 0x54, 0x90, 0x00, 0x54, 0x9F, 0x00, 0x50, 0x91, 0x00, 0x1D, 0x9F, 0x00, 0x31, 0x40, 0x00, 0x63, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9455, { 0x00, 0x00, 0x00, 0x10, 0x31, 0x80, 0x38, 0xE7, 0x00, 0x2C, 0x84, 0x00, 0x64, 0xF7, 0x80, 0x00, 0xA5, 0x00, 0x7D, 0x29, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x50, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x30, 0x42, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9459, { 0x00, 0x00, 0x00, 0x10, 0x65, 0x00, 0x3B, 0xC4, 0x80, 0x2C, 0x9F, 0x80, 0x64, 0x8A, 0x00, 0x03, 0xEA, 0x00, 0x7C, 0x93, 0x80, 0x10, 0xC8, 0x00, 0x11, 0xAF, 0x00, 0x7D, 0xA8, 0x00, 0x12, 0x8F, 0x80, 0x54, 0x00, 0x00, 0x54, 0xFF, 0x00, 0x50, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x30, 0x81, 0x00, 0x60, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x945A, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x39, 0xEF, 0x80, 0x2C, 0x42, 0x00, 0x65, 0xEF, 0x80, 0x00, 0x42, 0x00, 0x7C, 0xA5, 0x00, 0x11, 0x00, 0x80, 0x10, 0xFF, 0x00, 0x7C, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x54, 0x81, 0x00, 0x54, 0xFF, 0x00, 0x50, 0x81, 0x00, 0x1C, 0xFF, 0x00, 0x30, 0x42, 0x00, 0x61, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x945B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0xA2, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0xA2, 0x00, 0x08, 0xBE, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x88, 0x00, 0x2A, 0xBE, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0xBE, 0x00, 0x08, 0xAA, 0x00, 0x0F, 0x3E, 0x00, 0x31, 0x22, 0x00, 0x02, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x945C, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x2A, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x80, 0x80, 0x20, 0xBE, 0x80, 0x7E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x7F, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x945E, { 0x00, 0x00, 0x00, 0x10, 0x91, 0x00, 0x39, 0x22, 0x00, 0x2C, 0x91, 0x00, 0x64, 0xFE, 0x00, 0x00, 0xAA, 0x00, 0x7C, 0x92, 0x00, 0x10, 0xAA, 0x00, 0x10, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x10, 0xDA, 0x00, 0x54, 0xB6, 0x00, 0x54, 0xDA, 0x00, 0x50, 0xB6, 0x00, 0x1C, 0x92, 0x80, 0x30, 0xDA, 0x80, 0x61, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x945F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x20, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0xA4, 0x80, 0x08, 0xFF, 0x80, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x4A, 0x41, 0x00, 0x6A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0x22, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9460, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x80, 0x1C, 0xC9, 0x80, 0x16, 0x9D, 0x00, 0x32, 0xD5, 0x80, 0x20, 0x54, 0x80, 0x7E, 0xDD, 0x80, 0x08, 0x95, 0x00, 0x09, 0x56, 0x80, 0x7F, 0xDF, 0x80, 0x08, 0x08, 0x00, 0x4A, 0xFF, 0x80, 0x6A, 0x2A, 0x00, 0x28, 0x2A, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0xC9, 0x80, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9461, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x28, 0x00, 0x16, 0x2F, 0x00, 0x32, 0x28, 0x00, 0x20, 0x28, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x55, 0x00, 0x08, 0x55, 0x00, 0x7E, 0x6B, 0x00, 0x08, 0x41, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x55, 0x00, 0x28, 0x55, 0x00, 0x0E, 0x6B, 0x00, 0x38, 0x41, 0x00, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9462, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x0F, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x90, 0x80, 0x7E, 0xFE, 0x00, 0x08, 0x90, 0x80, 0x08, 0xBF, 0x80, 0x7E, 0xA9, 0x00, 0x08, 0xBF, 0x00, 0x4A, 0xA9, 0x00, 0x6A, 0xBF, 0x00, 0x28, 0x88, 0x00, 0x0F, 0x55, 0x00, 0x38, 0x52, 0x80, 0x60, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9463, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0xA4, 0x00, 0x32, 0xFF, 0x80, 0x20, 0xA4, 0x80, 0x7E, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x08, 0xA5, 0x80, 0x7E, 0xBF, 0x00, 0x08, 0xA4, 0x00, 0x4A, 0xA4, 0x00, 0x6A, 0xBC, 0x80, 0x28, 0xE3, 0x80, 0x0E, 0x80, 0x00, 0x39, 0x55, 0x00, 0x60, 0x4A, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9468, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x38, 0x44, 0x00, 0x2D, 0xF7, 0x80, 0x64, 0xA4, 0x00, 0x00, 0xA7, 0x00, 0x7D, 0xF1, 0x00, 0x10, 0x07, 0x00, 0x11, 0xF4, 0x00, 0x7D, 0x17, 0x00, 0x11, 0xF4, 0x00, 0x55, 0x17, 0x00, 0x55, 0xF4, 0x00, 0x51, 0x17, 0x00, 0x1D, 0x14, 0x80, 0x31, 0x16, 0x80, 0x61, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x946A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x0F, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x20, 0x88, 0x80, 0x7E, 0xBE, 0x00, 0x08, 0x88, 0x80, 0x08, 0xBF, 0x80, 0x7E, 0xA9, 0x00, 0x08, 0xBF, 0x00, 0x4A, 0xA9, 0x00, 0x6A, 0xBF, 0x00, 0x28, 0x80, 0x00, 0x0F, 0x7F, 0x00, 0x38, 0x55, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x946B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x1C, 0x00, 0x77, 0xF3, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x04, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x14, 0x14, 0x00, 0x22, 0x22, 0x00, 0x5D, 0x5D, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x2A, 0x2A, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x946D, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x39, 0x29, 0x00, 0x2D, 0xEF, 0x00, 0x65, 0x29, 0x00, 0x01, 0xEF, 0x00, 0x7D, 0x11, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x11, 0x00, 0x7D, 0x7D, 0x00, 0x11, 0x55, 0x00, 0x55, 0x7D, 0x00, 0x55, 0x55, 0x00, 0x51, 0x7D, 0x00, 0x1D, 0x39, 0x00, 0x31, 0x55, 0x00, 0x61, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x946E, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x3B, 0xFF, 0x80, 0x2C, 0x82, 0x00, 0x64, 0x05, 0x00, 0x01, 0x3F, 0x80, 0x7C, 0x84, 0x00, 0x10, 0xBF, 0x80, 0x12, 0x24, 0x80, 0x7D, 0x3F, 0x80, 0x11, 0x24, 0x80, 0x54, 0x3F, 0x80, 0x54, 0xA4, 0x80, 0x50, 0x81, 0x00, 0x1D, 0x3F, 0x80, 0x31, 0x11, 0x00, 0x63, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x946F, { 0x00, 0x00, 0x00, 0x10, 0x94, 0x00, 0x38, 0x95, 0x00, 0x2D, 0x6D, 0x80, 0x65, 0x6C, 0x80, 0x00, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0xA4, 0x00, 0x11, 0xB5, 0x00, 0x7C, 0xA5, 0x00, 0x11, 0xB5, 0x00, 0x54, 0xA7, 0x00, 0x55, 0xB2, 0x00, 0x50, 0xA6, 0x00, 0x1C, 0xF6, 0x80, 0x33, 0x8B, 0x80, 0x60, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9470, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x38, 0x38, 0x00, 0x2C, 0xEE, 0x00, 0x67, 0x83, 0x80, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00, 0x13, 0xBB, 0x80, 0x12, 0xAA, 0x80, 0x7F, 0xBB, 0x80, 0x10, 0x00, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x49, 0x00, 0x51, 0xFF, 0x00, 0x1D, 0x49, 0x00, 0x31, 0x49, 0x00, 0x61, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9471, { 0x00, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x1C, 0x48, 0x00, 0x17, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x77, 0x00, 0x08, 0x44, 0x80, 0x7E, 0xF3, 0x80, 0x08, 0x00, 0x00, 0x4A, 0xFF, 0x00, 0x6A, 0x91, 0x00, 0x28, 0xFF, 0x00, 0x0E, 0x2A, 0x00, 0x30, 0x68, 0x80, 0x60, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9472, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x64, 0xEE, 0x00, 0x00, 0xAA, 0x00, 0x7C, 0xEE, 0x00, 0x10, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x7C, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x54, 0x44, 0x00, 0x55, 0xFF, 0x80, 0x50, 0x24, 0x00, 0x1D, 0xC5, 0x00, 0x30, 0x72, 0x00, 0x61, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9475, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x22, 0x00, 0x32, 0x77, 0x00, 0x20, 0x55, 0x00, 0x7E, 0x77, 0x00, 0x08, 0x22, 0x00, 0x08, 0x24, 0x00, 0x7E, 0x7F, 0x00, 0x08, 0xC8, 0x00, 0x4A, 0x7F, 0x00, 0x6A, 0x48, 0x00, 0x28, 0x7F, 0x00, 0x0E, 0x48, 0x00, 0x38, 0x48, 0x00, 0x60, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9477, { 0x00, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x38, 0x24, 0x00, 0x2C, 0x3C, 0x00, 0x64, 0x24, 0x00, 0x00, 0x3C, 0x00, 0x7C, 0x27, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0xA5, 0x00, 0x54, 0xE7, 0x00, 0x54, 0xA5, 0x00, 0x50, 0xE7, 0x00, 0x1C, 0xA5, 0x00, 0x31, 0xEF, 0x00, 0x60, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x947C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x39, 0xFF, 0x00, 0x2D, 0x49, 0x00, 0x65, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x85, 0x00, 0x13, 0x0F, 0x80, 0x11, 0x5A, 0x00, 0x7C, 0x8A, 0x00, 0x11, 0x2F, 0x00, 0x55, 0xEA, 0x00, 0x54, 0xAA, 0x00, 0x50, 0x8F, 0x00, 0x1D, 0xAA, 0x00, 0x32, 0xAA, 0x00, 0x60, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x947D, { 0x00, 0x00, 0x00, 0x09, 0x54, 0x00, 0x15, 0xFF, 0x00, 0x22, 0x44, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0xAA, 0x00, 0x08, 0xAA, 0x80, 0x09, 0x33, 0x80, 0x3E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x0E, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x947E, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x23, 0xF4, 0x00, 0x40, 0x08, 0x00, 0x29, 0xE5, 0x00, 0x10, 0x02, 0x00, 0x25, 0xE4, 0x80, 0x7C, 0x0F, 0x80, 0x11, 0xE2, 0x00, 0x55, 0x2A, 0x80, 0x55, 0xEA, 0x80, 0x10, 0x02, 0x00, 0x03, 0xE0, 0x00, 0x0C, 0x98, 0x00, 0x77, 0xF7, 0x80, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x947F, { 0x00, 0x00, 0x00, 0x2A, 0x80, 0x00, 0x1B, 0x1E, 0x00, 0x3F, 0xD2, 0x00, 0x11, 0x12, 0x80, 0x3F, 0xA3, 0x80, 0x15, 0x40, 0x00, 0x24, 0xBF, 0x00, 0x35, 0x92, 0x00, 0x24, 0x8C, 0x00, 0x3F, 0xF3, 0x80, 0x21, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x3B, 0xFB, 0x80, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9481, { 0x00, 0x00, 0x00, 0x11, 0xEF, 0x00, 0x39, 0x29, 0x00, 0x2D, 0xEF, 0x00, 0x65, 0x29, 0x00, 0x01, 0xEF, 0x00, 0x7D, 0x29, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x51, 0xFF, 0x80, 0x1C, 0x42, 0x00, 0x30, 0x3C, 0x00, 0x61, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9483, { 0x00, 0x00, 0x00, 0x11, 0xFF, 0x80, 0x39, 0x00, 0x80, 0x2D, 0xFF, 0x80, 0x65, 0x08, 0x00, 0x01, 0x6B, 0x00, 0x7D, 0x08, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x55, 0x00, 0x7D, 0x7F, 0x80, 0x11, 0x28, 0x80, 0x55, 0xFE, 0x80, 0x55, 0x52, 0x80, 0x51, 0x7E, 0x80, 0x1D, 0x14, 0x80, 0x32, 0x3E, 0x80, 0x60, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9484, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x3B, 0xFF, 0x80, 0x2C, 0x44, 0x00, 0x65, 0xEF, 0x00, 0x01, 0x29, 0x00, 0x7D, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x11, 0xEF, 0x00, 0x7D, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x55, 0x55, 0x00, 0x55, 0x7D, 0x00, 0x51, 0x55, 0x00, 0x1D, 0x7D, 0x00, 0x31, 0x39, 0x00, 0x61, 0xD7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9485, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x07, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x24, 0x00, 0x00, 0x05, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x05, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9486, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x0F, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x48, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x09, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9487, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0F, 0x7E, 0x00, 0x10, 0x04, 0x00, 0x10, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x48, 0x10, 0x00, 0x0A, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x80, 0x00, 0x0A, 0x81, 0x00, 0x0C, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9488, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x12, 0x00, 0x3E, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9489, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x948A, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x81, 0x00, 0x07, 0xC1, 0x00, 0x08, 0x11, 0x00, 0x09, 0x11, 0x00, 0x1F, 0x91, 0x00, 0x24, 0x11, 0x00, 0x04, 0x91, 0x00, 0x3F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x04, 0x91, 0x00, 0x05, 0x01, 0x00, 0x06, 0x01, 0x00, 0x04, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x948B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x10, 0x00, 0x07, 0x90, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1F, 0x18, 0x00, 0x24, 0x14, 0x00, 0x05, 0x12, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x00, 0x04, 0x90, 0x00, 0x05, 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x948C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x07, 0xBF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x02, 0x00, 0x1F, 0x0C, 0x00, 0x24, 0x08, 0x00, 0x05, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x88, 0x00, 0x05, 0x08, 0x00, 0x06, 0x08, 0x00, 0x04, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x948D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x14, 0x00, 0x48, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x948E, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x08, 0xF0, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x10, 0x00, 0x20, 0x10, 0x00, 0x5E, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x948F, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x05, 0x41, 0x00, 0x07, 0xC9, 0x00, 0x08, 0x49, 0x00, 0x08, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x24, 0x49, 0x00, 0x05, 0x49, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0xC9, 0x00, 0x05, 0x49, 0x00, 0x06, 0x49, 0x00, 0x04, 0x81, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9490, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0x06, 0x00, 0x0F, 0x88, 0x00, 0x10, 0x10, 0x00, 0x12, 0x20, 0x00, 0x3F, 0x42, 0x00, 0x48, 0x06, 0x00, 0x09, 0x08, 0x00, 0x7F, 0x90, 0x00, 0x08, 0x21, 0x00, 0x08, 0x03, 0x00, 0x09, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x30, 0x00, 0x08, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9492, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFC, 0x00, 0x1E, 0x88, 0x00, 0x10, 0x88, 0x00, 0x20, 0x88, 0x00, 0x7E, 0xC8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0D, 0x09, 0x00, 0x09, 0x09, 0x00, 0x02, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9493, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0E, 0x3F, 0x00, 0x10, 0x42, 0x00, 0x10, 0x82, 0x00, 0x3E, 0x02, 0x00, 0x48, 0x42, 0x00, 0x08, 0x32, 0x00, 0x7E, 0x12, 0x00, 0x08, 0x02, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9494, { 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x08, 0xBF, 0x00, 0x0E, 0x42, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x02, 0x00, 0x49, 0x02, 0x00, 0x09, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9495, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x08, 0xC6, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9497, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0F, 0x7F, 0x00, 0x10, 0x02, 0x00, 0x10, 0xA2, 0x00, 0x3E, 0x54, 0x00, 0x48, 0x54, 0x00, 0x0A, 0x24, 0x00, 0x7F, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x83, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9499, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x14, 0x00, 0x10, 0x9E, 0x00, 0x10, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x949A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x48, 0x10, 0x00, 0x0A, 0x30, 0x00, 0x7F, 0x54, 0x00, 0x08, 0x93, 0x00, 0x09, 0x11, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x949B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x7F, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0xC4, 0x00, 0x09, 0x24, 0x00, 0x02, 0x23, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x949C, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0A, 0xFE, 0x00, 0x0F, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x84, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x84, 0x00, 0x0A, 0x84, 0x00, 0x7F, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0A, 0x80, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x949D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x11, 0x00, 0x0C, 0x11, 0x00, 0x08, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x949E, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0E, 0x20, 0x00, 0x10, 0xA8, 0x00, 0x10, 0xA4, 0x00, 0x3E, 0xA3, 0x00, 0x49, 0x21, 0x00, 0x09, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x28, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x60, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x949F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1C, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x21, 0x22, 0x00, 0x3D, 0x22, 0x00, 0x51, 0x22, 0x00, 0x11, 0x22, 0x00, 0x7D, 0x52, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x8A, 0x00, 0x11, 0x02, 0x00, 0x15, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A1, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x82, 0x00, 0x10, 0x92, 0x00, 0x20, 0x92, 0x00, 0x5E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x83, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A2, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x0F, 0x02, 0x00, 0x11, 0x86, 0x00, 0x11, 0x46, 0x00, 0x3F, 0x2A, 0x00, 0x49, 0x12, 0x00, 0x09, 0x12, 0x00, 0x3F, 0x2A, 0x00, 0x09, 0x46, 0x00, 0x09, 0x86, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A3, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x0E, 0x00, 0x0F, 0xF0, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x0A, 0xA2, 0x00, 0x7F, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x98, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x94, 0x00, 0x0D, 0x24, 0x00, 0x09, 0x43, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A4, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x3F, 0x47, 0x00, 0x4A, 0x22, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x08, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x09, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A5, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x42, 0x00, 0x07, 0x42, 0x00, 0x08, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x1F, 0x42, 0x00, 0x24, 0x42, 0x00, 0x04, 0x42, 0x00, 0x3F, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x05, 0x42, 0x00, 0x06, 0x42, 0x00, 0x04, 0x8A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A6, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0E, 0x3E, 0x00, 0x10, 0x42, 0x00, 0x10, 0x84, 0x00, 0x3F, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x28, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x47, 0x00, 0x08, 0x82, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A7, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x42, 0x00, 0x0F, 0x7F, 0x00, 0x10, 0x82, 0x00, 0x20, 0x82, 0x00, 0x5F, 0x42, 0x00, 0x08, 0x22, 0x00, 0x08, 0x0A, 0x00, 0x3E, 0x12, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC2, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x44, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x3E, 0x94, 0x00, 0x48, 0x88, 0x00, 0x08, 0x82, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x08, 0x12, 0x00, 0x0B, 0xFA, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94A9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x42, 0x00, 0x0E, 0x7F, 0x00, 0x10, 0x82, 0x00, 0x11, 0x02, 0x00, 0x3E, 0x22, 0x00, 0x48, 0x22, 0x00, 0x08, 0x42, 0x00, 0x3E, 0x52, 0x00, 0x08, 0xFA, 0x00, 0x08, 0x0A, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94AA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x3E, 0x08, 0x00, 0x48, 0x7C, 0x00, 0x0A, 0x48, 0x00, 0x7F, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0x48, 0x00, 0x0A, 0x89, 0x00, 0x0C, 0x89, 0x00, 0x09, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94AB, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x3E, 0x22, 0x00, 0x48, 0x3F, 0x00, 0x0A, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x09, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94AC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x52, 0x00, 0x3E, 0x56, 0x00, 0x48, 0x58, 0x00, 0x08, 0x90, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x83, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94AD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x44, 0x00, 0x0F, 0x24, 0x00, 0x10, 0x24, 0x00, 0x12, 0x04, 0x00, 0x3F, 0x44, 0x00, 0x48, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x7F, 0x07, 0x00, 0x08, 0x3C, 0x00, 0x09, 0xC4, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94AE, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x1C, 0x84, 0x00, 0x20, 0x84, 0x00, 0x40, 0x84, 0x00, 0x3C, 0x84, 0x00, 0x10, 0x84, 0x00, 0x13, 0xFC, 0x00, 0x7C, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x14, 0x84, 0x00, 0x18, 0x84, 0x00, 0x10, 0x84, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94AF, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x82, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x09, 0x80, 0x00, 0x0A, 0x81, 0x00, 0x0C, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B0, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x48, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x14, 0x00, 0x09, 0x14, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x08, 0x24, 0x00, 0x1E, 0x3E, 0x00, 0x21, 0xE0, 0x00, 0x40, 0x20, 0x00, 0x1E, 0x22, 0x00, 0x08, 0x3F, 0x00, 0x09, 0xE0, 0x00, 0x7E, 0x22, 0x00, 0x08, 0x26, 0x00, 0x08, 0x18, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x29, 0x00, 0x08, 0xC5, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B2, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x48, 0x92, 0x00, 0x08, 0x9F, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x90, 0x00, 0x0C, 0x92, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B3, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x20, 0x44, 0x00, 0x5E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7E, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x7C, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x12, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B5, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1C, 0x24, 0x00, 0x23, 0xFE, 0x00, 0x40, 0x20, 0x00, 0x3C, 0x70, 0x00, 0x10, 0x68, 0x00, 0x10, 0xA4, 0x00, 0x7D, 0x27, 0x00, 0x12, 0x22, 0x00, 0x10, 0xF8, 0x00, 0x14, 0x20, 0x00, 0x18, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x3E, 0xF4, 0x00, 0x48, 0x94, 0x00, 0x08, 0x94, 0x00, 0x7F, 0x94, 0x00, 0x08, 0x94, 0x00, 0x08, 0xF4, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B7, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0xBE, 0x00, 0x3E, 0xA4, 0x00, 0x48, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x7F, 0xA4, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xBC, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0x80, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x3E, 0x50, 0x00, 0x48, 0x92, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x9A, 0x00, 0x0C, 0x94, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94B9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x0F, 0x24, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x20, 0x00, 0x48, 0x20, 0x00, 0x0A, 0x7E, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x52, 0x00, 0x08, 0x54, 0x00, 0x09, 0x94, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x94, 0x00, 0x09, 0x23, 0x00, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94BA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x14, 0x00, 0x0F, 0x12, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0x90, 0x00, 0x48, 0x90, 0x00, 0x0A, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x8C, 0x00, 0x09, 0xA8, 0x00, 0x0A, 0xC9, 0x00, 0x0C, 0x95, 0x00, 0x08, 0x25, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94BB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0F, 0x1F, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x7F, 0x82, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94BC, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0x82, 0x00, 0x7F, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94BD, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7F, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94BE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94BF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x0C, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0E, 0xFF, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0xA0, 0x00, 0x08, 0xA8, 0x00, 0x0E, 0xFC, 0x00, 0x10, 0xA0, 0x00, 0x11, 0x20, 0x00, 0x3E, 0x24, 0x00, 0x49, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x07, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x42, 0x00, 0x0E, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x0E, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x44, 0x00, 0x3E, 0x27, 0x00, 0x48, 0x22, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x0A, 0x50, 0x00, 0x0C, 0x20, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C4, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0E, 0x00, 0x0E, 0xF0, 0x00, 0x10, 0x80, 0x00, 0x10, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x48, 0x92, 0x00, 0x0A, 0xFF, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x54, 0x00, 0x08, 0x52, 0x00, 0x0A, 0x93, 0x00, 0x0D, 0x11, 0x00, 0x08, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C5, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x10, 0x44, 0x00, 0x20, 0x44, 0x00, 0x5E, 0x83, 0x00, 0x09, 0x00, 0x00, 0x08, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C6, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x13, 0x1F, 0x00, 0x1E, 0x52, 0x00, 0x22, 0x52, 0x00, 0x42, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x7E, 0xD2, 0x00, 0x13, 0x5A, 0x00, 0x12, 0x54, 0x00, 0x10, 0x50, 0x00, 0x14, 0x90, 0x00, 0x18, 0x90, 0x00, 0x11, 0x10, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x48, 0xFF, 0x00, 0x0A, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x0C, 0x96, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94C9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x48, 0x44, 0x00, 0x08, 0x84, 0x00, 0x7E, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x82, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94CA, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x3E, 0x42, 0x00, 0x48, 0x40, 0x00, 0x0A, 0x48, 0x00, 0x7E, 0x58, 0x00, 0x08, 0x60, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x41, 0x00, 0x0C, 0x41, 0x00, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94CB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0x12, 0x00, 0x10, 0x14, 0x00, 0x10, 0x44, 0x00, 0x3E, 0x48, 0x00, 0x48, 0x48, 0x00, 0x09, 0x52, 0x00, 0x7F, 0x51, 0x00, 0x09, 0x61, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x40, 0x00, 0x0A, 0xC2, 0x00, 0x0D, 0x42, 0x00, 0x0A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94CC, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x80, 0x00, 0x48, 0xA0, 0x00, 0x0A, 0xA2, 0x00, 0x7F, 0xA6, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xB0, 0x00, 0x08, 0xA0, 0x00, 0x0A, 0xA1, 0x00, 0x0C, 0xA1, 0x00, 0x09, 0x1F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94CD, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x91, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x90, 0x00, 0x0A, 0xFE, 0x00, 0x7F, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x0A, 0xA8, 0x00, 0x0D, 0x24, 0x00, 0x09, 0x47, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94CE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x0F, 0x44, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x28, 0x00, 0x48, 0x47, 0x00, 0x09, 0x92, 0x00, 0x7F, 0x7C, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0xFC, 0x00, 0x10, 0x28, 0x00, 0x12, 0x32, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x08, 0x44, 0x00, 0x7E, 0xFE, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x3E, 0x00, 0x09, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x22, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0E, 0xFE, 0x00, 0x10, 0x24, 0x00, 0x10, 0x28, 0x00, 0x3E, 0x32, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xC4, 0x00, 0x09, 0x4C, 0x00, 0x0A, 0x50, 0x00, 0x08, 0x60, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D2, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x0E, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x3E, 0xFC, 0x00, 0x48, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7E, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x9F, 0x00, 0x0B, 0xE4, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D5, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x84, 0x00, 0x3E, 0xFE, 0x00, 0x49, 0x84, 0x00, 0x0A, 0x84, 0x00, 0x7E, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x08, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x0C, 0x00, 0x0E, 0x0A, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x49, 0x08, 0x00, 0x09, 0xEA, 0x00, 0x7F, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x09, 0x2A, 0x00, 0x0B, 0xAC, 0x00, 0x0D, 0x44, 0x00, 0x09, 0x05, 0x00, 0x02, 0x05, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D7, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x3F, 0x24, 0x00, 0x48, 0xA8, 0x00, 0x08, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D8, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x1C, 0x52, 0x00, 0x11, 0x52, 0x00, 0x21, 0x52, 0x00, 0x3E, 0x54, 0x00, 0x52, 0x52, 0x00, 0x13, 0xF2, 0x00, 0x7C, 0xD1, 0x00, 0x10, 0xD1, 0x00, 0x11, 0x51, 0x00, 0x15, 0x5A, 0x00, 0x1A, 0x54, 0x00, 0x12, 0x50, 0x00, 0x05, 0x50, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94D9, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x2E, 0x00, 0x11, 0xF0, 0x00, 0x10, 0x14, 0x00, 0x3E, 0x19, 0x00, 0x48, 0xE7, 0x00, 0x0A, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x89, 0x00, 0x0C, 0x89, 0x00, 0x09, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94DB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x92, 0x00, 0x0F, 0x52, 0x00, 0x10, 0x54, 0x00, 0x10, 0x58, 0x00, 0x3E, 0x12, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94DC, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1F, 0x02, 0x00, 0x21, 0x02, 0x00, 0x41, 0x7A, 0x00, 0x3D, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x7A, 0x00, 0x7D, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x13, 0x7A, 0x00, 0x15, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94DD, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x48, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x0B, 0x02, 0x00, 0x0D, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94DE, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x1D, 0x04, 0x00, 0x11, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x3C, 0x20, 0x00, 0x50, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x16, 0x2A, 0x00, 0x1A, 0x24, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94DF, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x02, 0x00, 0x12, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x2A, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x52, 0x00, 0x12, 0x4A, 0x00, 0x12, 0x8A, 0x00, 0x16, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x92, 0x00, 0x0F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x00, 0x00, 0x48, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x7F, 0x02, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x80, 0x00, 0x0A, 0x81, 0x00, 0x0C, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E1, { 0x00, 0x00, 0x00, 0x08, 0x11, 0x00, 0x09, 0xF9, 0x00, 0x0F, 0x11, 0x00, 0x11, 0x55, 0x00, 0x21, 0x55, 0x00, 0x1F, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x09, 0x55, 0x00, 0x09, 0x55, 0x00, 0x08, 0x45, 0x00, 0x0A, 0xA1, 0x00, 0x0C, 0x91, 0x00, 0x09, 0x15, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x0E, 0x94, 0x00, 0x10, 0xFE, 0x00, 0x11, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x48, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x30, 0x00, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x54, 0x00, 0x0C, 0x92, 0x00, 0x09, 0x13, 0x00, 0x02, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E3, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x94, 0x00, 0x0E, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x11, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x08, 0x28, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x49, 0x00, 0x0C, 0x89, 0x00, 0x09, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x06, 0x00, 0x0E, 0x38, 0x00, 0x13, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x3E, 0x8A, 0x00, 0x49, 0x3F, 0x00, 0x09, 0xC8, 0x00, 0x7E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x4A, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x80, 0x00, 0x0C, 0xC0, 0x00, 0x09, 0x23, 0x00, 0x02, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E5, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1E, 0x00, 0x0E, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7E, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x09, 0x20, 0x00, 0x0A, 0x48, 0x00, 0x0C, 0x84, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E7, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x0E, 0x4A, 0x00, 0x10, 0x4C, 0x00, 0x10, 0xC8, 0x00, 0x3F, 0x58, 0x00, 0x4A, 0x69, 0x00, 0x08, 0x47, 0x00, 0x7E, 0x50, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0E, 0x50, 0x00, 0x10, 0x88, 0x00, 0x11, 0x04, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x22, 0x00, 0x08, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x24, 0x00, 0x0B, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94E9, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x46, 0x00, 0x0F, 0x28, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x3E, 0x46, 0x00, 0x48, 0x92, 0x00, 0x08, 0x10, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x54, 0x00, 0x09, 0x52, 0x00, 0x0A, 0x91, 0x00, 0x0D, 0x11, 0x00, 0x08, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94EA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x10, 0x82, 0x00, 0x3F, 0x01, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94EB, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x50, 0x00, 0x0F, 0x50, 0x00, 0x10, 0x50, 0x00, 0x12, 0x52, 0x00, 0x3F, 0x56, 0x00, 0x48, 0xD8, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x50, 0x00, 0x08, 0xD8, 0x00, 0x0B, 0x54, 0x00, 0x08, 0x54, 0x00, 0x0A, 0x91, 0x00, 0x0C, 0x91, 0x00, 0x09, 0x0F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94EC, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0E, 0x7E, 0x00, 0x08, 0x82, 0x00, 0x10, 0xC4, 0x00, 0x1F, 0x28, 0x00, 0x28, 0x10, 0x00, 0x48, 0x28, 0x00, 0x3E, 0x47, 0x00, 0x09, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94ED, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x10, 0xC4, 0x00, 0x3F, 0x28, 0x00, 0x48, 0x10, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94EE, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x0F, 0x7C, 0x00, 0x10, 0x88, 0x00, 0x10, 0x12, 0x00, 0x3E, 0xFF, 0x00, 0x48, 0x12, 0x00, 0x08, 0x12, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x12, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94EF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x10, 0x88, 0x00, 0x11, 0x12, 0x00, 0x3E, 0xFF, 0x00, 0x48, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x09, 0x80, 0x00, 0x0A, 0x81, 0x00, 0x0C, 0x81, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F0, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x44, 0x00, 0x3E, 0x83, 0x00, 0x49, 0x01, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x28, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x87, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F1, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x3E, 0x50, 0x00, 0x48, 0x52, 0x00, 0x08, 0xD4, 0x00, 0x3F, 0x48, 0x00, 0x0A, 0x48, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x47, 0x00, 0x0C, 0x52, 0x00, 0x08, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x02, 0x00, 0x0E, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x42, 0x00, 0x3E, 0x24, 0x00, 0x48, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x7E, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0A, 0x80, 0x00, 0x0C, 0x80, 0x00, 0x09, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F3, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x3E, 0x44, 0x00, 0x48, 0x42, 0x00, 0x0A, 0xFE, 0x00, 0x7F, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x09, 0x48, 0x00, 0x0A, 0x49, 0x00, 0x0C, 0x89, 0x00, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x7E, 0x00, 0x1D, 0x84, 0x00, 0x20, 0x88, 0x00, 0x20, 0x10, 0x00, 0x3A, 0x22, 0x00, 0x51, 0x7F, 0x00, 0x11, 0x2A, 0x00, 0x7C, 0x2A, 0x00, 0x10, 0xAA, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x4A, 0x00, 0x16, 0x52, 0x00, 0x1A, 0x92, 0x00, 0x11, 0x2A, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F5, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x3E, 0x22, 0x00, 0x48, 0x20, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x30, 0x00, 0x0C, 0x48, 0x00, 0x08, 0x86, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F6, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x1E, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x48, 0xFC, 0x00, 0x08, 0x82, 0x00, 0x7E, 0xC6, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x90, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0xA7, 0x00, 0x08, 0xC2, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F7, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x0E, 0x82, 0x00, 0x13, 0xEF, 0x00, 0x10, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x48, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x7E, 0xAA, 0x00, 0x09, 0x2A, 0x00, 0x08, 0xAA, 0x00, 0x0A, 0x4A, 0x00, 0x0C, 0xAA, 0x00, 0x09, 0x2E, 0x00, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x24, 0x00, 0x09, 0xFE, 0x00, 0x0E, 0x20, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x3E, 0x40, 0x00, 0x48, 0x42, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x84, 0x00, 0x09, 0x04, 0x00, 0x0A, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x24, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94F9, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x3D, 0xFF, 0x00, 0x49, 0x21, 0x00, 0x09, 0x22, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x42, 0x00, 0x0C, 0x42, 0x00, 0x08, 0x94, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94FA, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x14, 0x00, 0x0E, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x0C, 0x92, 0x00, 0x08, 0x9A, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94FC, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1D, 0xFE, 0x00, 0x20, 0x20, 0x00, 0x21, 0x24, 0x00, 0x3C, 0xA8, 0x00, 0x50, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x7C, 0x20, 0x00, 0x10, 0x70, 0x00, 0x10, 0xA8, 0x00, 0x10, 0xA8, 0x00, 0x15, 0x24, 0x00, 0x1A, 0x23, 0x00, 0x14, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94FD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x14, 0x00, 0x1C, 0x12, 0x00, 0x23, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x3D, 0x10, 0x00, 0x50, 0xD0, 0x00, 0x10, 0x50, 0x00, 0x7D, 0x08, 0x00, 0x11, 0x48, 0x00, 0x13, 0x28, 0x00, 0x15, 0x28, 0x00, 0x15, 0x48, 0x00, 0x19, 0x45, 0x00, 0x10, 0xC3, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94FE, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x12, 0x0A, 0x00, 0x1D, 0x7F, 0x00, 0x21, 0x10, 0x00, 0x20, 0x28, 0x00, 0x7C, 0x4A, 0x00, 0x13, 0x7F, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x08, 0x00, 0x11, 0x0A, 0x00, 0x11, 0xFF, 0x00, 0x15, 0x08, 0x00, 0x19, 0x08, 0x00, 0x12, 0x8B, 0x00, 0x04, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x94FF, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x11, 0x7E, 0x00, 0x1D, 0x52, 0x00, 0x21, 0x54, 0x00, 0x21, 0x48, 0x00, 0x3D, 0x54, 0x00, 0x51, 0x53, 0x00, 0x11, 0x62, 0x00, 0x7C, 0x40, 0x00, 0x10, 0x50, 0x00, 0x10, 0x14, 0x00, 0x12, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x18, 0x12, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9500, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x54, 0x00, 0x1E, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x5E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9501, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x08, 0x52, 0x00, 0x0E, 0x54, 0x00, 0x10, 0x12, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0x82, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x2C, 0x00, 0x08, 0xC2, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9502, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9503, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9504, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x11, 0xE8, 0x00, 0x3D, 0x2A, 0x00, 0x41, 0x3F, 0x00, 0x01, 0x2A, 0x00, 0x7D, 0xEA, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x7D, 0xEA, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x17, 0xFA, 0x00, 0x18, 0x12, 0x00, 0x10, 0x2A, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9505, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x3E, 0xA0, 0x00, 0x48, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x22, 0x00, 0x09, 0x32, 0x00, 0x09, 0x4E, 0x00, 0x0B, 0x86, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9506, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x50, 0x00, 0x0E, 0x52, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x3F, 0x10, 0x00, 0x48, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9507, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2C, 0x00, 0x0E, 0x4A, 0x00, 0x11, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x48, 0x00, 0x08, 0x4A, 0x00, 0x7E, 0x6A, 0x00, 0x08, 0xCC, 0x00, 0x09, 0x48, 0x00, 0x08, 0x58, 0x00, 0x0A, 0x69, 0x00, 0x0C, 0x49, 0x00, 0x09, 0x45, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9508, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x00, 0x09, 0xF0, 0x00, 0x0E, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x3E, 0x70, 0x00, 0x48, 0xA8, 0x00, 0x09, 0x27, 0x00, 0x3E, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0x4E, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x09, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9509, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0F, 0x10, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x94, 0x00, 0x48, 0xD6, 0x00, 0x09, 0x39, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x950A, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x0E, 0x00, 0x0F, 0xF0, 0x00, 0x10, 0x22, 0x00, 0x10, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x48, 0x48, 0x00, 0x08, 0x04, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x950B, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x0E, 0xC4, 0x00, 0x11, 0x28, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x6F, 0x00, 0x49, 0x92, 0x00, 0x08, 0x7C, 0x00, 0x7E, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x950C, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0E, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x44, 0x00, 0x3E, 0x28, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x950D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x10, 0x48, 0x00, 0x3E, 0x84, 0x00, 0x49, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x7E, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x0A, 0xA9, 0x00, 0x0C, 0xA9, 0x00, 0x09, 0x27, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x950E, { 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x08, 0xBF, 0x00, 0x0E, 0x42, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0xFE, 0x00, 0x49, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x0B, 0x4A, 0x00, 0x0D, 0x8A, 0x00, 0x09, 0x02, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x950F, { 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0x08, 0xBF, 0x00, 0x0E, 0x42, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x7A, 0x00, 0x49, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x7F, 0x7A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x4A, 0x00, 0x09, 0x7A, 0x00, 0x0B, 0x4A, 0x00, 0x0D, 0x02, 0x00, 0x09, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9510, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x08, 0x28, 0x00, 0x0E, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x89, 0x00, 0x0C, 0x89, 0x00, 0x09, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9511, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x1C, 0x50, 0x00, 0x21, 0xFC, 0x00, 0x40, 0x24, 0x00, 0x3C, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x20, 0x00, 0x7D, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x62, 0x00, 0x14, 0xA2, 0x00, 0x19, 0x2A, 0x00, 0x12, 0x24, 0x00, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9512, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x14, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x3E, 0xFC, 0x00, 0x48, 0x84, 0x00, 0x08, 0x84, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0xA4, 0x00, 0x08, 0xA8, 0x00, 0x09, 0x90, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0xA4, 0x00, 0x08, 0xC3, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9513, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0F, 0x02, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x02, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x01, 0x00, 0x0A, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x47, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9514, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0F, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x3F, 0x00, 0x00, 0x49, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x7F, 0x02, 0x00, 0x09, 0x7A, 0x00, 0x09, 0x4A, 0x00, 0x0B, 0x4A, 0x00, 0x0D, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x02, 0x0A, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9515, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0x82, 0x00, 0x1E, 0xFF, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x3F, 0x3A, 0x00, 0x52, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x7E, 0xAA, 0x00, 0x12, 0xAA, 0x00, 0x13, 0xAA, 0x00, 0x12, 0xBA, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x02, 0x00, 0x12, 0x0A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9516, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x49, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x0C, 0x82, 0x00, 0x08, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9517, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x09, 0xFC, 0x00, 0x0E, 0x28, 0x00, 0x10, 0x32, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x48, 0x84, 0x00, 0x09, 0xFE, 0x00, 0x7E, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9518, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0x20, 0x00, 0x3E, 0x22, 0x00, 0x4B, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x7E, 0x42, 0x00, 0x08, 0xFF, 0x00, 0x09, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9519, { 0x00, 0x00, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x951A, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1C, 0x8A, 0x00, 0x13, 0xFF, 0x00, 0x20, 0x88, 0x00, 0x3C, 0x8A, 0x00, 0x53, 0xFF, 0x00, 0x12, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x951B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x50, 0x00, 0x10, 0x88, 0x00, 0x3F, 0x27, 0x00, 0x4A, 0xFA, 0x00, 0x08, 0x20, 0x00, 0x7E, 0xA8, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x951D, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x7F, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x24, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x951E, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x38, 0x00, 0x0A, 0x54, 0x00, 0x0C, 0x93, 0x00, 0x09, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x951F, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x82, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x8A, 0x00, 0x08, 0xEC, 0x00, 0x09, 0x88, 0x00, 0x0A, 0x89, 0x00, 0x0C, 0xA9, 0x00, 0x08, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9521, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0E, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x3E, 0xFC, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0xAA, 0x00, 0x09, 0x2A, 0x00, 0x08, 0x52, 0x00, 0x0A, 0x92, 0x00, 0x0D, 0x22, 0x00, 0x08, 0x54, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9522, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7F, 0xBA, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x09, 0xBA, 0x00, 0x0A, 0xAA, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9523, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x11, 0x4A, 0x00, 0x1F, 0x4A, 0x00, 0x21, 0x4A, 0x00, 0x41, 0xFE, 0x00, 0x3F, 0x22, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x82, 0x00, 0x09, 0x84, 0x00, 0x08, 0x48, 0x00, 0x0A, 0x30, 0x00, 0x0C, 0x20, 0x00, 0x08, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9524, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xE0, 0x00, 0x0E, 0x20, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x3E, 0xA8, 0x00, 0x48, 0xAA, 0x00, 0x0B, 0xFF, 0x00, 0x3C, 0xA8, 0x00, 0x08, 0xA8, 0x00, 0x09, 0xFE, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x28, 0x00, 0x09, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9525, { 0x00, 0x00, 0x00, 0x08, 0x50, 0x00, 0x08, 0x50, 0x00, 0x08, 0x42, 0x00, 0x0E, 0xFF, 0x00, 0x10, 0x90, 0x00, 0x11, 0x94, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x90, 0x00, 0x08, 0x94, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x92, 0x00, 0x0C, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9526, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x22, 0x00, 0x0E, 0xFF, 0x00, 0x10, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x1E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x0B, 0x15, 0x00, 0x0C, 0x12, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9528, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x48, 0x00, 0x13, 0x88, 0x00, 0x1E, 0x10, 0x00, 0x22, 0x1F, 0x00, 0x42, 0x21, 0x00, 0x3F, 0xCA, 0x00, 0x12, 0x88, 0x00, 0x12, 0x88, 0x00, 0x7E, 0x88, 0x00, 0x12, 0x94, 0x00, 0x12, 0x94, 0x00, 0x16, 0x94, 0x00, 0x1A, 0xA2, 0x00, 0x14, 0xA2, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9529, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x24, 0x00, 0x0E, 0xA8, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFE, 0x00, 0x3E, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x08, 0x50, 0x00, 0x7E, 0x88, 0x00, 0x09, 0xFC, 0x00, 0x0A, 0x8B, 0x00, 0x08, 0x88, 0x00, 0x0A, 0xA8, 0x00, 0x0C, 0x92, 0x00, 0x08, 0x82, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x952A, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x0E, 0xFF, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x3E, 0x52, 0x00, 0x48, 0x92, 0x00, 0x08, 0xAA, 0x00, 0x7F, 0x04, 0x00, 0x08, 0x20, 0x00, 0x09, 0x94, 0x00, 0x09, 0x93, 0x00, 0x0A, 0x85, 0x00, 0x0C, 0x84, 0x00, 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x952B, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x14, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x84, 0x00, 0x3E, 0x48, 0x00, 0x48, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x952C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x12, 0x00, 0x0F, 0x56, 0x00, 0x10, 0x58, 0x00, 0x10, 0x90, 0x00, 0x3E, 0x2C, 0x00, 0x48, 0x43, 0x00, 0x09, 0x91, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x52, 0x00, 0x08, 0x56, 0x00, 0x08, 0x98, 0x00, 0x0A, 0x28, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x47, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x952D, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0E, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x11, 0x02, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x10, 0x00, 0x08, 0x14, 0x00, 0x3E, 0x9E, 0x00, 0x08, 0x90, 0x00, 0x08, 0x90, 0x00, 0x0A, 0x90, 0x00, 0x0D, 0x50, 0x00, 0x0A, 0x33, 0x00, 0x04, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x952E, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0x88, 0x00, 0x1C, 0xBE, 0x00, 0x20, 0x8A, 0x00, 0x41, 0x7F, 0x00, 0x3D, 0x0A, 0x00, 0x12, 0x3E, 0x00, 0x13, 0x88, 0x00, 0x7C, 0xBE, 0x00, 0x10, 0x88, 0x00, 0x12, 0x8A, 0x00, 0x11, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x1A, 0x88, 0x00, 0x14, 0x4B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x952F, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0x82, 0x00, 0x20, 0x82, 0x00, 0x40, 0xFE, 0x00, 0x3E, 0x90, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFF, 0x00, 0x7E, 0x90, 0x00, 0x10, 0x92, 0x00, 0x12, 0xFF, 0x00, 0x15, 0x42, 0x00, 0x19, 0x42, 0x00, 0x12, 0x42, 0x00, 0x04, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9530, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x1C, 0x08, 0x00, 0x20, 0x30, 0x00, 0x40, 0x24, 0x00, 0x3D, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0xA0, 0x00, 0x7C, 0x44, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x54, 0x00, 0x11, 0x54, 0x00, 0x15, 0x54, 0x00, 0x19, 0x54, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9531, { 0x00, 0x00, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x1D, 0x24, 0x00, 0x22, 0x48, 0x00, 0x21, 0x24, 0x00, 0x3C, 0x92, 0x00, 0x50, 0x92, 0x00, 0x13, 0xFF, 0x00, 0x7E, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9532, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x8A, 0x00, 0x23, 0xEA, 0x00, 0x3C, 0x8A, 0x00, 0x53, 0xEA, 0x00, 0x10, 0x92, 0x00, 0x7C, 0xA6, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x14, 0x50, 0x00, 0x18, 0x48, 0x00, 0x10, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9534, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xD4, 0x00, 0x11, 0x18, 0x00, 0x11, 0x11, 0x00, 0x3F, 0x51, 0x00, 0x49, 0xAF, 0x00, 0x08, 0x44, 0x00, 0x7E, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x0A, 0x84, 0x00, 0x0C, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9535, { 0x00, 0x00, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x00, 0x1C, 0x9E, 0x00, 0x22, 0xA2, 0x00, 0x21, 0xD4, 0x00, 0x3C, 0x88, 0x00, 0x50, 0x94, 0x00, 0x10, 0xA4, 0x00, 0x7D, 0xFF, 0x00, 0x12, 0x84, 0x00, 0x14, 0xA4, 0x00, 0x10, 0x94, 0x00, 0x14, 0x94, 0x00, 0x18, 0x84, 0x00, 0x10, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9536, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0E, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0x20, 0x00, 0x09, 0x54, 0x00, 0x09, 0x52, 0x00, 0x0A, 0x45, 0x00, 0x0C, 0x45, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9537, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xEE, 0x00, 0x0F, 0xAA, 0x00, 0x10, 0xAA, 0x00, 0x10, 0xEE, 0x00, 0x3E, 0x04, 0x00, 0x48, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x08, 0x28, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9538, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x3E, 0x00, 0x1D, 0xE0, 0x00, 0x20, 0x20, 0x00, 0x24, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x50, 0x20, 0x00, 0x10, 0xA2, 0x00, 0x7F, 0x2F, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xAE, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9539, { 0x00, 0x00, 0x00, 0x10, 0x68, 0x00, 0x13, 0x88, 0x00, 0x1C, 0x88, 0x00, 0x20, 0xA9, 0x00, 0x20, 0x9A, 0x00, 0x7F, 0xEC, 0x00, 0x10, 0x88, 0x00, 0x11, 0x88, 0x00, 0x7D, 0xC8, 0x00, 0x12, 0xA8, 0x00, 0x14, 0x94, 0x00, 0x10, 0x94, 0x00, 0x14, 0xA2, 0x00, 0x18, 0xA2, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x953A, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0E, 0x00, 0x1D, 0xF0, 0x00, 0x20, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x20, 0x00, 0x51, 0xFC, 0x00, 0x15, 0x24, 0x00, 0x7F, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x15, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x953B, { 0x00, 0x00, 0x00, 0x10, 0xC4, 0x00, 0x13, 0x3E, 0x00, 0x1E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x43, 0xA4, 0x00, 0x3E, 0x24, 0x00, 0x12, 0x43, 0x00, 0x13, 0x80, 0x00, 0x7E, 0xFE, 0x00, 0x12, 0x44, 0x00, 0x12, 0x28, 0x00, 0x13, 0x90, 0x00, 0x16, 0x28, 0x00, 0x1A, 0x44, 0x00, 0x12, 0x87, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x953C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x56, 0x00, 0x0E, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xD6, 0x00, 0x3E, 0x92, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x10, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x44, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x08, 0xC7, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x953E, { 0x00, 0x00, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xE0, 0x00, 0x0E, 0x12, 0x00, 0x10, 0x92, 0x00, 0x10, 0x54, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0xC4, 0x00, 0x08, 0xA8, 0x00, 0x0B, 0x10, 0x00, 0x0D, 0x28, 0x00, 0x0A, 0x47, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x953F, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x0A, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x22, 0x00, 0x08, 0x54, 0x00, 0x08, 0x48, 0x00, 0x0A, 0xC8, 0x00, 0x0D, 0x54, 0x00, 0x0A, 0x63, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9540, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x12, 0x00, 0x1D, 0xFF, 0x00, 0x21, 0x28, 0x00, 0x41, 0x28, 0x00, 0x3D, 0xFE, 0x00, 0x11, 0x28, 0x00, 0x11, 0x38, 0x00, 0x7D, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x44, 0x00, 0x15, 0x28, 0x00, 0x1A, 0x10, 0x00, 0x12, 0x28, 0x00, 0x04, 0x47, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9541, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x21, 0xFC, 0x00, 0x3C, 0x20, 0x00, 0x50, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x7C, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x14, 0x50, 0x00, 0x18, 0x88, 0x00, 0x11, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9542, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x54, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x38, 0x00, 0x48, 0x54, 0x00, 0x08, 0x93, 0x00, 0x7E, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x0A, 0x68, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x66, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9544, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8A, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x8A, 0x00, 0x23, 0xFE, 0x00, 0x3E, 0x88, 0x00, 0x53, 0xFF, 0x00, 0x10, 0x89, 0x00, 0x7D, 0xFF, 0x00, 0x11, 0x04, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x15, 0x24, 0x00, 0x18, 0x58, 0x00, 0x10, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9545, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x3E, 0x80, 0x00, 0x48, 0xFE, 0x00, 0x08, 0xC2, 0x00, 0x7F, 0x42, 0x00, 0x09, 0x7E, 0x00, 0x09, 0x42, 0x00, 0x0B, 0x7E, 0x00, 0x0D, 0x42, 0x00, 0x09, 0x42, 0x00, 0x02, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9546, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x11, 0xFC, 0x00, 0x3F, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x09, 0x04, 0x00, 0x7F, 0xFC, 0x00, 0x08, 0x20, 0x00, 0x08, 0x22, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x20, 0x00, 0x0C, 0x50, 0x00, 0x08, 0x8E, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9547, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x0B, 0xFF, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x83, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9549, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x21, 0xFC, 0x00, 0x21, 0x04, 0x00, 0x3D, 0x04, 0x00, 0x51, 0xFC, 0x00, 0x10, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x8A, 0x00, 0x12, 0x52, 0x00, 0x13, 0xFE, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x954A, { 0x00, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1C, 0xFC, 0x00, 0x20, 0x84, 0x00, 0x40, 0xFC, 0x00, 0x3C, 0x84, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x31, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x14, 0x84, 0x00, 0x19, 0x4C, 0x00, 0x11, 0x52, 0x00, 0x06, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x954C, { 0x00, 0x00, 0x00, 0x08, 0x50, 0x00, 0x08, 0x54, 0x00, 0x0E, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x11, 0xFC, 0x00, 0x3E, 0x90, 0x00, 0x48, 0xFC, 0x00, 0x08, 0x90, 0x00, 0x7E, 0xFF, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFC, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x4E, 0x00, 0x0C, 0x82, 0x00, 0x09, 0x14, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x954D, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x84, 0x00, 0x1D, 0xFE, 0x00, 0x21, 0x04, 0x00, 0x41, 0xFC, 0x00, 0x3D, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x7D, 0xFC, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x70, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x27, 0x00, 0x12, 0x22, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x954E, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x1C, 0x88, 0x00, 0x21, 0xFC, 0x00, 0x22, 0x03, 0x00, 0x3D, 0xFC, 0x00, 0x51, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x7C, 0x0E, 0x00, 0x13, 0xF0, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x14, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x954F, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x13, 0xBF, 0x00, 0x1E, 0x12, 0x00, 0x22, 0x12, 0x00, 0x22, 0x92, 0x00, 0x3E, 0xD2, 0x00, 0x53, 0x2A, 0x00, 0x10, 0x44, 0x00, 0x7F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9550, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x12, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFC, 0x00, 0x3E, 0x84, 0x00, 0x48, 0x84, 0x00, 0x08, 0xFC, 0x00, 0x3E, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x02, 0x00, 0x09, 0x7A, 0x00, 0x0B, 0x4A, 0x00, 0x0D, 0x7A, 0x00, 0x09, 0x02, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9551, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x14, 0x00, 0x08, 0xFE, 0x00, 0x0E, 0x44, 0x00, 0x10, 0x28, 0x00, 0x11, 0xFF, 0x00, 0x3F, 0x22, 0x00, 0x48, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x94, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9552, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x44, 0x00, 0x0F, 0x28, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x28, 0x00, 0x48, 0x46, 0x00, 0x0A, 0x82, 0x00, 0x7F, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x0C, 0xAA, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9553, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x12, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x08, 0x62, 0x00, 0x7F, 0xB4, 0x00, 0x08, 0x58, 0x00, 0x09, 0x98, 0x00, 0x08, 0x34, 0x00, 0x0A, 0x54, 0x00, 0x0D, 0x93, 0x00, 0x08, 0x52, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9554, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x09, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x12, 0x1A, 0x00, 0x3E, 0xE0, 0x00, 0x48, 0x84, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0x88, 0x00, 0x09, 0x06, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9556, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x28, 0x00, 0x10, 0x2A, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0xAA, 0x00, 0x48, 0xAA, 0x00, 0x0A, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x54, 0x00, 0x0C, 0x93, 0x00, 0x09, 0x11, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9557, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x11, 0x24, 0x00, 0x1C, 0xA8, 0x00, 0x20, 0x20, 0x00, 0x23, 0xFF, 0x00, 0x3E, 0x01, 0x00, 0x54, 0xFA, 0x00, 0x10, 0x88, 0x00, 0x7C, 0x88, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x14, 0x20, 0x00, 0x18, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9558, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x1D, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x21, 0x04, 0x00, 0x3D, 0xFC, 0x00, 0x50, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x7E, 0x52, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x14, 0x88, 0x00, 0x18, 0x70, 0x00, 0x11, 0x88, 0x00, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9559, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x22, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x50, 0x40, 0x00, 0x10, 0x84, 0x00, 0x7D, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x26, 0x00, 0x12, 0x22, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x955B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x10, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x52, 0x12, 0x00, 0x12, 0xFE, 0x00, 0x7E, 0x10, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x16, 0x92, 0x00, 0x1A, 0xFE, 0x00, 0x14, 0x92, 0x00, 0x08, 0x96, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x955C, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x3C, 0x88, 0x00, 0x20, 0x52, 0x00, 0x43, 0xFF, 0x00, 0x3C, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x7D, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x14, 0x90, 0x00, 0x18, 0x91, 0x00, 0x11, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x955D, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x14, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x88, 0x00, 0x20, 0x52, 0x00, 0x3F, 0xFF, 0x00, 0x52, 0x22, 0x00, 0x12, 0x2A, 0x00, 0x7F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x8A, 0x00, 0x16, 0x8A, 0x00, 0x1A, 0xFA, 0x00, 0x12, 0x02, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x955E, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x10, 0x90, 0x00, 0x1C, 0x92, 0x00, 0x23, 0xFF, 0x00, 0x21, 0x20, 0x00, 0x3D, 0x10, 0x00, 0x51, 0xDE, 0x00, 0x11, 0x68, 0x00, 0x7D, 0x4A, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x48, 0x00, 0x11, 0x48, 0x00, 0x16, 0x54, 0x00, 0x1A, 0x53, 0x00, 0x14, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x955F, { 0x00, 0x00, 0x00, 0x12, 0x20, 0x00, 0x11, 0x20, 0x00, 0x1C, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x53, 0xBF, 0x00, 0x12, 0x8A, 0x00, 0x7E, 0x88, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xAF, 0x00, 0x16, 0xA8, 0x00, 0x1A, 0xA8, 0x00, 0x12, 0xB8, 0x00, 0x05, 0xCF, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9561, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x28, 0x00, 0x10, 0xFE, 0x00, 0x10, 0xAA, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x0A, 0xFE, 0x00, 0x7F, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x10, 0x00, 0x0D, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9562, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x1C, 0x04, 0x00, 0x25, 0x14, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xF7, 0x00, 0x54, 0x49, 0x00, 0x15, 0x52, 0x00, 0x7D, 0x54, 0x00, 0x15, 0x54, 0x00, 0x15, 0xF4, 0x00, 0x14, 0x54, 0x00, 0x1C, 0x4A, 0x00, 0x14, 0x8A, 0x00, 0x09, 0x12, 0x00, 0x12, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9563, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x41, 0x54, 0x00, 0x3C, 0x88, 0x00, 0x11, 0xFC, 0x00, 0x13, 0x07, 0x00, 0x7D, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x26, 0x00, 0x12, 0xA2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9564, { 0x00, 0x00, 0x00, 0x10, 0x50, 0x00, 0x12, 0x52, 0x00, 0x1D, 0x54, 0x00, 0x20, 0x50, 0x00, 0x27, 0xFF, 0x00, 0x3C, 0x88, 0x00, 0x50, 0x50, 0x00, 0x13, 0xFE, 0x00, 0x7C, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x14, 0x20, 0x00, 0x18, 0x50, 0x00, 0x10, 0x8E, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9565, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7C, 0x00, 0x0E, 0x88, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x48, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9566, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x10, 0x88, 0x00, 0x1F, 0xFA, 0x00, 0x20, 0x0F, 0x00, 0x23, 0xF2, 0x00, 0x3E, 0x2A, 0x00, 0x52, 0x2A, 0x00, 0x13, 0xEA, 0x00, 0x7C, 0x0A, 0x00, 0x13, 0xE4, 0x00, 0x10, 0x44, 0x00, 0x10, 0xEA, 0x00, 0x17, 0x8A, 0x00, 0x18, 0x92, 0x00, 0x12, 0x91, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9567, { 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x11, 0x7F, 0x00, 0x1C, 0xA2, 0x00, 0x22, 0x2A, 0x00, 0x23, 0xFE, 0x00, 0x3E, 0x22, 0x00, 0x52, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x7E, 0xFA, 0x00, 0x12, 0xAA, 0x00, 0x12, 0xFA, 0x00, 0x12, 0x72, 0x00, 0x16, 0xAA, 0x00, 0x1B, 0x26, 0x00, 0x12, 0x22, 0x00, 0x02, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9568, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x11, 0x4A, 0x00, 0x3E, 0xCC, 0x00, 0x48, 0x48, 0x00, 0x0B, 0xFF, 0x00, 0x7E, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xFC, 0x00, 0x0C, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9569, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x22, 0x89, 0x00, 0x25, 0x26, 0x00, 0x3C, 0x20, 0x00, 0x51, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x7D, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x15, 0xFC, 0x00, 0x19, 0x24, 0x00, 0x10, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x956A, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xBF, 0x00, 0x1C, 0xA2, 0x00, 0x20, 0xA2, 0x00, 0x20, 0xBE, 0x00, 0x3F, 0x88, 0x00, 0x52, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x7E, 0x49, 0x00, 0x13, 0xC9, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x88, 0x00, 0x14, 0x88, 0x00, 0x18, 0x8A, 0x00, 0x15, 0x7F, 0x00, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x956B, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x11, 0xD8, 0x00, 0x1C, 0x52, 0x00, 0x21, 0x4C, 0x00, 0x20, 0x88, 0x00, 0x3D, 0xFC, 0x00, 0x52, 0x02, 0x00, 0x11, 0xFD, 0x00, 0x7D, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x14, 0x88, 0x00, 0x18, 0x52, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x956C, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x13, 0xFF, 0x00, 0x1C, 0x94, 0x00, 0x20, 0xFF, 0x00, 0x21, 0x10, 0x00, 0x3F, 0xFE, 0x00, 0x51, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x7D, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x14, 0x88, 0x00, 0x18, 0x70, 0x00, 0x11, 0x8C, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x956D, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x1C, 0x20, 0x00, 0x23, 0xFF, 0x00, 0x42, 0x21, 0x00, 0x3D, 0xAC, 0x00, 0x10, 0x20, 0x00, 0x11, 0xAC, 0x00, 0x7C, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x17, 0xFE, 0x00, 0x1A, 0x22, 0x00, 0x12, 0x22, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x956F, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xFF, 0x00, 0x1E, 0x52, 0x00, 0x22, 0x52, 0x00, 0x23, 0xFE, 0x00, 0x3C, 0x80, 0x00, 0x51, 0xFE, 0x00, 0x12, 0x42, 0x00, 0x7C, 0x42, 0x00, 0x13, 0xFA, 0x00, 0x12, 0x4A, 0x00, 0x13, 0xFA, 0x00, 0x14, 0x42, 0x00, 0x18, 0x52, 0x00, 0x13, 0xFA, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9570, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x84, 0x00, 0x1F, 0xFF, 0x00, 0x22, 0x48, 0x00, 0x42, 0xFE, 0x00, 0x3E, 0x4A, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x4A, 0x00, 0x7E, 0xFE, 0x00, 0x12, 0x4A, 0x00, 0x12, 0xCC, 0x00, 0x16, 0xCC, 0x00, 0x1B, 0x4B, 0x00, 0x14, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9571, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x14, 0x24, 0x00, 0x1F, 0xFE, 0x00, 0x20, 0x88, 0x00, 0x24, 0x52, 0x00, 0x3F, 0xFF, 0x00, 0x50, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x7F, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x15, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x12, 0x92, 0x00, 0x04, 0x85, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9572, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x20, 0xDE, 0x00, 0x3D, 0x52, 0x00, 0x53, 0xD4, 0x00, 0x16, 0x88, 0x00, 0x79, 0xFC, 0x00, 0x12, 0x03, 0x00, 0x15, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x26, 0x00, 0x12, 0x22, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9573, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x22, 0x48, 0x00, 0x23, 0xFE, 0x00, 0x3E, 0x4A, 0x00, 0x53, 0xFE, 0x00, 0x12, 0x88, 0x00, 0x7E, 0xEA, 0x00, 0x12, 0x8C, 0x00, 0x12, 0xA9, 0x00, 0x16, 0xC7, 0x00, 0x1A, 0x00, 0x00, 0x12, 0xAA, 0x00, 0x04, 0xA9, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9576, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x1C, 0x00, 0x00, 0x21, 0xDC, 0x00, 0x41, 0x54, 0x00, 0x3D, 0xDC, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x7C, 0x88, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x88, 0x00, 0x17, 0xFF, 0x00, 0x14, 0xA4, 0x00, 0x19, 0x98, 0x00, 0x16, 0xC7, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x20, 0x00, 0x04, 0x22, 0x00, 0x04, 0x14, 0x00, 0x04, 0x18, 0x00, 0x04, 0x08, 0x00, 0x07, 0xE6, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x06, 0x04, 0x00, 0x04, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x08, 0x3F, 0x00, 0x0F, 0xE1, 0x80, 0x38, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9579, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0x20, 0x00, 0x10, 0x3E, 0x00, 0x1E, 0x22, 0x00, 0x10, 0x62, 0x00, 0x10, 0x46, 0x00, 0x1E, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0C, 0x00, 0x7F, 0x08, 0x00, 0x10, 0x1C, 0x00, 0x12, 0x14, 0x00, 0x32, 0x36, 0x00, 0x27, 0x22, 0x00, 0x7D, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x957E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x10, 0x49, 0x00, 0x1E, 0x88, 0x80, 0x10, 0xFF, 0x80, 0x10, 0x88, 0x80, 0x1E, 0xDD, 0x80, 0x10, 0xAA, 0x80, 0x10, 0xDD, 0x80, 0x7E, 0x88, 0x80, 0x10, 0xDD, 0x80, 0x12, 0xAA, 0x80, 0x32, 0xDD, 0x80, 0x27, 0x88, 0x80, 0x7D, 0x88, 0x80, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x957F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x18, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x04, 0x40, 0x00, 0x04, 0x20, 0x00, 0x04, 0x10, 0x00, 0x04, 0x8E, 0x00, 0x07, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9580, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x21, 0x11, 0x00, 0x22, 0x09, 0x00, 0x2C, 0x05, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9584, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC4, 0x00, 0x4A, 0x44, 0x00, 0x4A, 0x44, 0x00, 0x7B, 0xC4, 0x00, 0x4A, 0x44, 0x00, 0x4A, 0x4E, 0x00, 0x7B, 0xCA, 0x00, 0x40, 0x4A, 0x00, 0x40, 0x4A, 0x00, 0x40, 0x4A, 0x00, 0x40, 0x5B, 0x00, 0x40, 0x51, 0x00, 0x40, 0x51, 0x00, 0x40, 0x71, 0x80, 0x41, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9587, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0xE1, 0x00, 0x20, 0xB1, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9588, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9589, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x41, 0x00, 0x22, 0x41, 0x00, 0x24, 0x41, 0x00, 0x38, 0xC1, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x958A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x958B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x21, 0x00, 0x24, 0x21, 0x00, 0x28, 0x21, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x958C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x23, 0xE1, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x29, 0x00, 0x2C, 0x19, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x958D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xF9, 0x00, 0x21, 0x01, 0x00, 0x21, 0xF1, 0x00, 0x21, 0x11, 0x00, 0x21, 0x11, 0x00, 0x22, 0x11, 0x00, 0x24, 0x61, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x958E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xF9, 0x00, 0x22, 0x01, 0x00, 0x22, 0x81, 0x00, 0x24, 0x91, 0x00, 0x25, 0x11, 0x00, 0x29, 0x39, 0x00, 0x23, 0xC9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x958F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x20, 0x00, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x00, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9591, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x27, 0xFC, 0x80, 0x20, 0x40, 0x80, 0x20, 0xE0, 0x80, 0x21, 0x50, 0x80, 0x22, 0x48, 0x80, 0x2C, 0x46, 0x80, 0x20, 0x40, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9592, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x24, 0x31, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9593, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9594, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x27, 0xFD, 0x00, 0x21, 0x11, 0x00, 0x20, 0xA1, 0x00, 0x20, 0xC1, 0x00, 0x23, 0x31, 0x00, 0x2C, 0x0D, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9596, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x20, 0x81, 0x00, 0x20, 0x89, 0x00, 0x2E, 0x99, 0x00, 0x22, 0xD1, 0x00, 0x22, 0xA1, 0x00, 0x24, 0x91, 0x00, 0x28, 0x8D, 0x00, 0x21, 0x81, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9598, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x20, 0x00, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x48, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x48, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9599, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x99, 0x00, 0x20, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x959D, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x21, 0xC1, 0x00, 0x27, 0x71, 0x00, 0x2C, 0x19, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x20, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0xB1, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x959E, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x01, 0x00, 0x23, 0x11, 0x00, 0x22, 0x79, 0x00, 0x27, 0xC9, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x23, 0x21, 0x00, 0x26, 0x21, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x959F, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x20, 0xD1, 0x00, 0x21, 0x51, 0x00, 0x25, 0x31, 0x00, 0x25, 0x29, 0x00, 0x2D, 0x6D, 0x00, 0x29, 0xC5, 0x00, 0x21, 0x09, 0x00, 0x23, 0x99, 0x00, 0x2E, 0xF1, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x20, 0xA1, 0x00, 0x20, 0x91, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A1, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x81, 0x00, 0x25, 0x21, 0x00, 0x26, 0x69, 0x00, 0x22, 0xD9, 0x00, 0x21, 0xB1, 0x00, 0x27, 0x61, 0x00, 0x20, 0xD1, 0x00, 0x23, 0x99, 0x00, 0x2E, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x23, 0x31, 0x00, 0x26, 0x19, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x01, 0x00, 0x21, 0xF9, 0x00, 0x22, 0x11, 0x00, 0x2D, 0x21, 0x00, 0x20, 0xC1, 0x00, 0x27, 0x39, 0x00, 0x3B, 0xF7, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x5F, 0x80, 0x20, 0x40, 0x80, 0x20, 0xA0, 0x80, 0x23, 0x18, 0x80, 0x2C, 0x06, 0x80, 0x21, 0xF0, 0x80, 0x20, 0x00, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x08, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x09, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x95A5, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x22, 0x49, 0x00, 0x24, 0x45, 0x00, 0x2F, 0xFF, 0x00, 0x34, 0x41, 0x00, 0x24, 0x49, 0x00, 0x24, 0x51, 0x00, 0x24, 0x65, 0x00, 0x25, 0x9D, 0x00, 0x24, 0x01, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A6, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0xC1, 0x00, 0x21, 0xE1, 0x00, 0x27, 0x39, 0x00, 0x2C, 0x0D, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x27, 0x39, 0x00, 0x2D, 0xED, 0x00, 0x28, 0xC5, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x23, 0x31, 0x00, 0x26, 0x19, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x40, 0x80, 0x27, 0xFC, 0x80, 0x20, 0x40, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x40, 0x80, 0x27, 0xFC, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x95A9, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x91, 0x00, 0x21, 0xF9, 0x00, 0x2F, 0x09, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95AB, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x28, 0x85, 0x00, 0x28, 0x85, 0x00, 0x2F, 0xF5, 0x00, 0x29, 0xC5, 0x00, 0x2A, 0xA5, 0x00, 0x2C, 0x95, 0x00, 0x28, 0x85, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95AC, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x59, 0x00, 0x25, 0xE1, 0x00, 0x27, 0x31, 0x00, 0x2C, 0x19, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x22, 0x25, 0x00, 0x2C, 0x3D, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x22, 0x11, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x23, 0x25, 0x00, 0x2E, 0x1D, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95B4, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x22, 0x11, 0x00, 0x26, 0x19, 0x00, 0x2C, 0x0D, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95B6, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95B9, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x01, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x91, 0x00, 0x27, 0xF9, 0x00, 0x2A, 0x95, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x91, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95BA, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xF9, 0x00, 0x22, 0x21, 0x00, 0x21, 0x41, 0x00, 0x20, 0x81, 0x00, 0x21, 0x41, 0x00, 0x26, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x24, 0x21, 0x00, 0x39, 0x41, 0x00, 0x26, 0x39, 0x00, 0x24, 0x09, 0x00, 0x27, 0x39, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x0B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x24, 0x11, 0x00, 0x3F, 0xE9, 0x00, 0x24, 0x45, 0x00, 0x27, 0x93, 0x00, 0x28, 0x89, 0x00, 0x28, 0x87, 0x00, 0x31, 0x19, 0x00, 0x26, 0x61, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95BD, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x7F, 0x00, 0x27, 0xC1, 0x00, 0x24, 0x41, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x41, 0x00, 0x24, 0x29, 0x00, 0x2F, 0xF9, 0x00, 0x24, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x27, 0xF1, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95BE, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x11, 0x00, 0x20, 0x49, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x41, 0x00, 0x27, 0x65, 0x00, 0x25, 0x29, 0x00, 0x27, 0x31, 0x00, 0x20, 0x11, 0x00, 0x23, 0x35, 0x00, 0x2C, 0x5D, 0x00, 0x21, 0x8B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95BF, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0xE1, 0x00, 0x2F, 0x11, 0x00, 0x24, 0xA1, 0x00, 0x2F, 0xF9, 0x00, 0x28, 0x09, 0x00, 0x2B, 0xE9, 0x00, 0x20, 0x21, 0x00, 0x21, 0x41, 0x00, 0x20, 0x81, 0x00, 0x23, 0x61, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95C3, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x89, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x26, 0x19, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95C6, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xE1, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x01, 0x00, 0x2F, 0x79, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x2F, 0x79, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x41, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95C8, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF1, 0x00, 0x20, 0x91, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x21, 0x00, 0x23, 0xF9, 0x00, 0x22, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95C9, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x25, 0x29, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x22, 0x39, 0x00, 0x28, 0xE1, 0x00, 0x24, 0x21, 0x00, 0x21, 0xFD, 0x00, 0x24, 0x21, 0x00, 0x24, 0xF9, 0x00, 0x28, 0x89, 0x00, 0x28, 0xF9, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95CB, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x28, 0xD1, 0x00, 0x25, 0xA5, 0x00, 0x23, 0x39, 0x00, 0x2C, 0x0D, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xF9, 0x00, 0x21, 0x41, 0x00, 0x27, 0x71, 0x00, 0x2C, 0x19, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95CC, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x26, 0x99, 0x00, 0x25, 0xA9, 0x00, 0x27, 0xF9, 0x00, 0x22, 0xA1, 0x00, 0x26, 0xB1, 0x00, 0x2C, 0x99, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95CD, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x91, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x51, 0x00, 0x21, 0xF9, 0x00, 0x23, 0x09, 0x00, 0x2D, 0xF9, 0x00, 0x21, 0x09, 0x00, 0x21, 0xF9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D0, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x61, 0x00, 0x27, 0xC1, 0x00, 0x24, 0x19, 0x00, 0x23, 0xF1, 0x00, 0x2A, 0x11, 0x00, 0x2B, 0xD1, 0x00, 0x2A, 0x71, 0x00, 0x2A, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x26, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D1, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x27, 0x91, 0x00, 0x24, 0xF1, 0x00, 0x24, 0x11, 0x00, 0x2F, 0xF9, 0x00, 0x21, 0xC1, 0x00, 0x22, 0xA1, 0x00, 0x2C, 0x99, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D2, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x22, 0xD1, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xF9, 0x00, 0x25, 0x29, 0x00, 0x29, 0x49, 0x00, 0x23, 0x19, 0x00, 0x2D, 0x69, 0x00, 0x21, 0x09, 0x00, 0x23, 0x19, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D3, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D4, { 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x21, 0x10, 0x80, 0x3F, 0x1F, 0x80, 0x20, 0x40, 0x80, 0x23, 0xF8, 0x80, 0x20, 0x40, 0x80, 0x2F, 0xFE, 0x80, 0x21, 0x08, 0x80, 0x27, 0xFE, 0x80, 0x20, 0x00, 0x80, 0x27, 0xFC, 0x80, 0x25, 0x24, 0x80, 0x2F, 0xFE, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x95D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x11, 0x00, 0x28, 0x91, 0x00, 0x25, 0x3F, 0x00, 0x3F, 0xED, 0x00, 0x22, 0x49, 0x00, 0x2A, 0x95, 0x00, 0x2F, 0x95, 0x00, 0x24, 0x23, 0x00, 0x28, 0x41, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D6, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x81, 0x00, 0x27, 0xFD, 0x00, 0x24, 0x15, 0x00, 0x29, 0x4D, 0x00, 0x28, 0xA5, 0x00, 0x28, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x2F, 0x89, 0x00, 0x20, 0x7D, 0x00, 0x2F, 0x89, 0x00, 0x28, 0xA9, 0x00, 0x2F, 0xA9, 0x00, 0x25, 0x09, 0x00, 0x23, 0x89, 0x00, 0x2E, 0x19, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95D9, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x22, 0x01, 0x00, 0x24, 0x41, 0x00, 0x2F, 0xFD, 0x00, 0x28, 0xA9, 0x00, 0x2F, 0xA9, 0x00, 0x28, 0x39, 0x00, 0x2F, 0x91, 0x00, 0x28, 0xB9, 0x00, 0x2F, 0xA9, 0x00, 0x30, 0x6D, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95DA, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x22, 0x7D, 0x00, 0x2F, 0x45, 0x00, 0x22, 0x7D, 0x00, 0x22, 0x45, 0x00, 0x2F, 0x7D, 0x00, 0x22, 0x45, 0x00, 0x27, 0x7D, 0x00, 0x25, 0x29, 0x00, 0x2D, 0xAD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x25, 0x11, 0x00, 0x29, 0xA5, 0x00, 0x3A, 0x49, 0x00, 0x25, 0x25, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x25, 0x00, 0x3F, 0x3D, 0x00, 0x22, 0x21, 0x00, 0x24, 0x21, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95DD, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x2F, 0xA1, 0x00, 0x28, 0xBD, 0x00, 0x2F, 0xE9, 0x00, 0x28, 0xA9, 0x00, 0x2F, 0xB9, 0x00, 0x28, 0x91, 0x00, 0x2F, 0xB9, 0x00, 0x25, 0x29, 0x00, 0x28, 0xAD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95DE, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x2F, 0x41, 0x00, 0x22, 0x7D, 0x00, 0x3F, 0xA9, 0x00, 0x28, 0xA9, 0x00, 0x2E, 0xB9, 0x00, 0x2B, 0x91, 0x00, 0x28, 0xB9, 0x00, 0x2F, 0xA9, 0x00, 0x38, 0xAD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95DF, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x23, 0x61, 0x00, 0x2E, 0x39, 0x00, 0x23, 0xE1, 0x00, 0x22, 0x21, 0x00, 0x2F, 0xF9, 0x00, 0x25, 0x29, 0x00, 0x29, 0x49, 0x00, 0x23, 0x19, 0x00, 0x2D, 0x69, 0x00, 0x23, 0x19, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E0, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x81, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x91, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x23, 0x91, 0x00, 0x22, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x21, 0x21, 0x00, 0x22, 0x17, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E1, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x2F, 0x3D, 0x00, 0x2F, 0x3D, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x27, 0xF9, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E2, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x11, 0x00, 0x2F, 0x11, 0x00, 0x29, 0x7D, 0x00, 0x29, 0x29, 0x00, 0x2F, 0x29, 0x00, 0x28, 0x7D, 0x00, 0x2F, 0x11, 0x00, 0x2D, 0xFF, 0x00, 0x35, 0x11, 0x00, 0x37, 0x11, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E4, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF1, 0x00, 0x25, 0x51, 0x00, 0x2F, 0xF9, 0x00, 0x22, 0x21, 0x00, 0x2B, 0xE9, 0x00, 0x2C, 0x99, 0x00, 0x26, 0xE1, 0x00, 0x23, 0xB1, 0x00, 0x2E, 0x99, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E5, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x21, 0x00, 0x28, 0xF9, 0x00, 0x24, 0x21, 0x00, 0x29, 0xFD, 0x00, 0x24, 0x51, 0x00, 0x21, 0xFD, 0x00, 0x2C, 0x21, 0x00, 0x25, 0xFD, 0x00, 0x24, 0x21, 0x00, 0x2B, 0xFD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E6, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x25, 0x29, 0x00, 0x27, 0xF9, 0x00, 0x25, 0x29, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E8, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95E9, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x12, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95EA, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x42, 0x00, 0x21, 0x22, 0x00, 0x22, 0x12, 0x00, 0x24, 0x12, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95EB, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x20, 0x12, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x22, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x12, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95ED, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x20, 0x42, 0x00, 0x20, 0x52, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x42, 0x00, 0x20, 0xC2, 0x00, 0x21, 0x42, 0x00, 0x22, 0x42, 0x00, 0x24, 0x42, 0x00, 0x28, 0x42, 0x00, 0x20, 0x42, 0x00, 0x21, 0x42, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95EE, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x12, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95EF, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x28, 0x02, 0x00, 0x20, 0x22, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x23, 0xFA, 0x00, 0x20, 0x0A, 0x00, 0x2F, 0xEA, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x2A, 0x00, 0x20, 0x12, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F0, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x20, 0x12, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0xA2, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F1, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x20, 0xA2, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x2F, 0xFE, 0x00, 0x20, 0x8A, 0x00, 0x20, 0xAA, 0x00, 0x20, 0x92, 0x00, 0x20, 0x86, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F2, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x21, 0xC2, 0x00, 0x22, 0xA2, 0x00, 0x24, 0x9A, 0x00, 0x28, 0x8A, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F3, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x21, 0x02, 0x00, 0x21, 0x02, 0x00, 0x21, 0x12, 0x00, 0x2F, 0xFA, 0x00, 0x21, 0x02, 0x00, 0x22, 0x42, 0x00, 0x22, 0x82, 0x00, 0x24, 0x82, 0x00, 0x25, 0x22, 0x00, 0x29, 0x12, 0x00, 0x33, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F4, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x04, 0x02, 0x00, 0x20, 0x12, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F5, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x21, 0x02, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x22, 0x00, 0x22, 0x22, 0x00, 0x21, 0x42, 0x00, 0x20, 0x82, 0x00, 0x21, 0x42, 0x00, 0x22, 0x32, 0x00, 0x24, 0x12, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F6, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x21, 0x02, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x23, 0xE2, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x2A, 0x00, 0x24, 0x3A, 0x00, 0x28, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F7, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x21, 0x02, 0x00, 0x20, 0x82, 0x00, 0x22, 0x42, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x06, 0x00, 0x32, 0x06, 0x00, 0x22, 0x12, 0x00, 0x22, 0x12, 0x00, 0x21, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F8, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x20, 0x12, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95F9, { 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x1B, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x21, 0x02, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xB2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95FA, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x20, 0xA2, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x20, 0xA2, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95FB, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x20, 0x12, 0x00, 0x2F, 0xFA, 0x00, 0x22, 0x22, 0x00, 0x23, 0xE2, 0x00, 0x22, 0x22, 0x00, 0x23, 0xE2, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x22, 0x00, 0x20, 0x22, 0x00, 0x20, 0x2A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95FC, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x28, 0x42, 0x00, 0x24, 0x52, 0x00, 0x23, 0xFA, 0x00, 0x20, 0x42, 0x00, 0x2C, 0x42, 0x00, 0x24, 0xA2, 0x00, 0x24, 0x9A, 0x00, 0x25, 0x0A, 0x00, 0x26, 0x02, 0x00, 0x29, 0xFE, 0x00, 0x30, 0x02, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95FD, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x92, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x82, 0x00, 0x20, 0x92, 0x00, 0x20, 0xFA, 0x00, 0x2F, 0x8A, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x95FE, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x20, 0x22, 0x00, 0x23, 0xF2, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x23, 0xE2, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9600, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x08, 0x02, 0x00, 0x22, 0xA2, 0x00, 0x22, 0x92, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFA, 0x00, 0x2F, 0x82, 0x00, 0x34, 0x92, 0x00, 0x24, 0x62, 0x00, 0x24, 0x42, 0x00, 0x24, 0xA2, 0x00, 0x25, 0x2A, 0x00, 0x24, 0x1A, 0x00, 0x24, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9601, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x25, 0x02, 0x00, 0x21, 0x02, 0x00, 0x23, 0xF2, 0x00, 0x26, 0x22, 0x00, 0x29, 0x42, 0x00, 0x20, 0x82, 0x00, 0x23, 0x62, 0x00, 0x2C, 0x1E, 0x00, 0x30, 0x0A, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xFA, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9602, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x21, 0x02, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x21, 0x22, 0x00, 0x22, 0x42, 0x00, 0x27, 0x92, 0x00, 0x21, 0x22, 0x00, 0x22, 0x42, 0x00, 0x24, 0xC2, 0x00, 0x29, 0x32, 0x00, 0x22, 0x12, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9603, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x2F, 0xFA, 0x00, 0x28, 0x8A, 0x00, 0x28, 0xAA, 0x00, 0x2F, 0xFA, 0x00, 0x28, 0x8A, 0x00, 0x29, 0xCA, 0x00, 0x2A, 0xAA, 0x00, 0x2C, 0x9A, 0x00, 0x28, 0x8A, 0x00, 0x2F, 0xFA, 0x00, 0x28, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9604, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x21, 0x02, 0x00, 0x23, 0xE2, 0x00, 0x24, 0x42, 0x00, 0x28, 0x92, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x7A, 0x00, 0x20, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9605, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x28, 0x02, 0x00, 0x22, 0x22, 0x00, 0x21, 0x42, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x25, 0x52, 0x00, 0x21, 0x42, 0x00, 0x21, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x24, 0x3A, 0x00, 0x28, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9606, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x21, 0x02, 0x00, 0x20, 0x92, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x25, 0x0A, 0x00, 0x24, 0x92, 0x00, 0x24, 0x62, 0x00, 0x25, 0x22, 0x00, 0x26, 0x1A, 0x00, 0x24, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9608, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x52, 0x00, 0x20, 0x4A, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x42, 0x00, 0x2F, 0x42, 0x00, 0x29, 0x4A, 0x00, 0x29, 0x2A, 0x00, 0x29, 0x32, 0x00, 0x2F, 0x22, 0x00, 0x20, 0x2A, 0x00, 0x3F, 0x5A, 0x00, 0x20, 0x8A, 0x00, 0x21, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9609, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x20, 0x92, 0x00, 0x2F, 0xFA, 0x00, 0x21, 0x42, 0x00, 0x22, 0x22, 0x00, 0x24, 0x92, 0x00, 0x2F, 0xFE, 0x00, 0x34, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x8A, 0x00, 0x20, 0x7A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x960A, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x2F, 0xFA, 0x00, 0x28, 0x0A, 0x00, 0x2F, 0xFA, 0x00, 0x28, 0x0A, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x960B, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x21, 0x12, 0x00, 0x26, 0x7A, 0x00, 0x24, 0x12, 0x00, 0x27, 0x72, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x22, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x24, 0x3A, 0x00, 0x28, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x960C, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x12, 0x00, 0x20, 0x7A, 0x00, 0x2F, 0x82, 0x00, 0x24, 0x92, 0x00, 0x22, 0xA2, 0x00, 0x2F, 0xFE, 0x00, 0x28, 0x06, 0x00, 0x33, 0xEA, 0x00, 0x22, 0x22, 0x00, 0x21, 0x42, 0x00, 0x20, 0x82, 0x00, 0x23, 0x62, 0x00, 0x2C, 0x1A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x960D, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x82, 0x00, 0x27, 0xFA, 0x00, 0x24, 0x42, 0x00, 0x25, 0x2A, 0x00, 0x26, 0x1A, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xFA, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x960E, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x25, 0x02, 0x00, 0x21, 0x02, 0x00, 0x23, 0xE2, 0x00, 0x24, 0x42, 0x00, 0x28, 0x92, 0x00, 0x27, 0x7A, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0x72, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x960F, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0xD2, 0x00, 0x24, 0x52, 0x00, 0x24, 0x8A, 0x00, 0x27, 0x46, 0x00, 0x25, 0x32, 0x00, 0x25, 0x12, 0x00, 0x29, 0x02, 0x00, 0x29, 0x42, 0x00, 0x33, 0x32, 0x00, 0x20, 0x12, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9610, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x28, 0x02, 0x00, 0x22, 0x22, 0x00, 0x21, 0x42, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9611, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0D, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x20, 0x8A, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x2F, 0xFA, 0x00, 0x2C, 0x9A, 0x00, 0x2A, 0xAA, 0x00, 0x28, 0x8A, 0x00, 0x2F, 0xFA, 0x00, 0x21, 0xC2, 0x00, 0x22, 0xA2, 0x00, 0x24, 0x9A, 0x00, 0x28, 0x8A, 0x00, 0x20, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9612, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x20, 0xA2, 0x00, 0x3F, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x23, 0x62, 0x00, 0x2C, 0x1A, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9614, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x06, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x28, 0x32, 0x00, 0x25, 0xC2, 0x00, 0x20, 0x42, 0x00, 0x30, 0x52, 0x00, 0x2B, 0xFA, 0x00, 0x20, 0x42, 0x00, 0x24, 0x52, 0x00, 0x29, 0xFA, 0x00, 0x39, 0x12, 0x00, 0x29, 0x12, 0x00, 0x29, 0xF2, 0x00, 0x29, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9615, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x42, 0x00, 0x2F, 0x52, 0x00, 0x29, 0x66, 0x00, 0x25, 0x4A, 0x00, 0x22, 0x32, 0x00, 0x27, 0xF2, 0x00, 0x38, 0x8E, 0x00, 0x20, 0x82, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x21, 0x62, 0x00, 0x22, 0x1A, 0x00, 0x2C, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9616, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x82, 0x00, 0x2F, 0xFA, 0x00, 0x21, 0x02, 0x00, 0x22, 0x22, 0x00, 0x27, 0xF2, 0x00, 0x20, 0x02, 0x00, 0x27, 0xF2, 0x00, 0x25, 0x52, 0x00, 0x25, 0x52, 0x00, 0x25, 0x52, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9617, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x2F, 0xFA, 0x00, 0x20, 0x82, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x27, 0xF2, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x22, 0x00, 0x24, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9619, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x28, 0xA2, 0x00, 0x25, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x22, 0x4A, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA2, 0x00, 0x2F, 0xA2, 0x00, 0x2A, 0x22, 0x00, 0x22, 0x52, 0x00, 0x24, 0x52, 0x00, 0x28, 0x8A, 0x00, 0x20, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x961A, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x0B, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x2E, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3F, 0x7E, 0x00, 0x29, 0x8A, 0x00, 0x2F, 0x4A, 0x00, 0x29, 0x52, 0x00, 0x2F, 0x52, 0x00, 0x29, 0x22, 0x00, 0x3F, 0x52, 0x00, 0x21, 0x8E, 0x00, 0x21, 0x02, 0x00, 0x21, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x961C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x961D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x02, 0x10, 0x00, 0x02, 0x30, 0x00, 0x02, 0x20, 0x00, 0x02, 0x60, 0x00, 0x02, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x70, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x961E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x26, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x2C, 0x11, 0x00, 0x28, 0x11, 0x00, 0x24, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x2E, 0x23, 0x00, 0x20, 0x22, 0x00, 0x20, 0x62, 0x00, 0x20, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x961F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x28, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x22, 0x50, 0x00, 0x22, 0x50, 0x00, 0x22, 0x50, 0x00, 0x34, 0x88, 0x00, 0x28, 0x88, 0x00, 0x21, 0x04, 0x00, 0x22, 0x03, 0x00, 0x24, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9621, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x22, 0xF0, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9622, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x44, 0x00, 0x00, 0x4C, 0x48, 0x00, 0x48, 0x48, 0x00, 0x58, 0x48, 0x00, 0x50, 0x48, 0x00, 0x48, 0x48, 0x00, 0x44, 0x48, 0x00, 0x44, 0x48, 0x00, 0x44, 0x48, 0x00, 0x44, 0x48, 0x00, 0x5C, 0xC8, 0x00, 0x40, 0x89, 0x00, 0x41, 0x89, 0x00, 0x43, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9624, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x79, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x26, 0x00, 0x59, 0x3A, 0x00, 0x51, 0x62, 0x00, 0x51, 0xA2, 0x00, 0x4F, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x26, 0x00, 0x59, 0x20, 0x00, 0x41, 0x00, 0x00, 0x41, 0x01, 0x00, 0x41, 0x83, 0x00, 0x40, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9625, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x48, 0x21, 0x00, 0x57, 0xA3, 0x00, 0x50, 0xB6, 0x00, 0x50, 0xB4, 0x00, 0x48, 0xA8, 0x00, 0x49, 0xA8, 0x00, 0x49, 0x2C, 0x00, 0x49, 0x24, 0x00, 0x5B, 0x26, 0x00, 0x42, 0x22, 0x00, 0x46, 0x23, 0x00, 0x40, 0x20, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9626, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x22, 0x00, 0x49, 0x22, 0x00, 0x59, 0x26, 0x00, 0x51, 0x24, 0x00, 0x53, 0x2C, 0x00, 0x4A, 0x20, 0x00, 0x48, 0x70, 0x00, 0x48, 0x50, 0x00, 0x48, 0x50, 0x00, 0x58, 0xD8, 0x00, 0x40, 0x88, 0x00, 0x41, 0x8C, 0x00, 0x43, 0x06, 0x00, 0x46, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9628, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x45, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x59, 0x22, 0x00, 0x51, 0x22, 0x00, 0x49, 0x22, 0x00, 0x45, 0x22, 0x00, 0x45, 0x22, 0x00, 0x45, 0x26, 0x00, 0x45, 0x20, 0x00, 0x5D, 0x20, 0x00, 0x41, 0x21, 0x00, 0x42, 0x33, 0x00, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x962A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x80, 0x00, 0x22, 0x80, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFF, 0x00, 0x22, 0xC2, 0x00, 0x22, 0xA2, 0x00, 0x22, 0xA4, 0x00, 0x22, 0x94, 0x00, 0x22, 0x88, 0x00, 0x22, 0x88, 0x00, 0x22, 0x94, 0x00, 0x2D, 0x22, 0x00, 0x21, 0x41, 0x00, 0x22, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x962C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x58, 0x00, 0x00, 0x50, 0x00, 0x00, 0x50, 0xF8, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x48, 0x88, 0x00, 0x58, 0x88, 0x00, 0x41, 0x88, 0x00, 0x41, 0x09, 0x00, 0x43, 0x09, 0x00, 0x46, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x962E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x38, 0x84, 0x00, 0x20, 0x84, 0x80, 0x21, 0x07, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x962F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x48, 0x90, 0x00, 0x58, 0x90, 0x00, 0x50, 0x9E, 0x00, 0x48, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x5C, 0x90, 0x00, 0x40, 0x90, 0x00, 0x43, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9631, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x7C, 0x44, 0x00, 0x44, 0x44, 0x00, 0x4C, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x58, 0x44, 0x00, 0x50, 0x44, 0x00, 0x48, 0x44, 0x00, 0x44, 0x44, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x5C, 0xC4, 0x00, 0x40, 0x84, 0x00, 0x41, 0x84, 0x00, 0x43, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9632, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x28, 0x20, 0x00, 0x24, 0x20, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3C, 0x42, 0x00, 0x20, 0x82, 0x00, 0x21, 0x04, 0x00, 0x26, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9633, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x26, 0x41, 0x00, 0x2C, 0x41, 0x00, 0x28, 0x41, 0x00, 0x24, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x2E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9634, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x42, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x28, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x24, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x34, 0x42, 0x00, 0x28, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x0A, 0x00, 0x22, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9635, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x42, 0x00, 0x27, 0xFF, 0x00, 0x28, 0x40, 0x00, 0x28, 0x50, 0x00, 0x30, 0x90, 0x00, 0x28, 0x94, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x34, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9636, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x50, 0x00, 0x28, 0x50, 0x00, 0x28, 0x88, 0x00, 0x31, 0x07, 0x00, 0x2A, 0x8A, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x34, 0x88, 0x00, 0x28, 0x88, 0x00, 0x20, 0x88, 0x00, 0x20, 0x88, 0x00, 0x21, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9637, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFE, 0x00, 0x44, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x48, 0x10, 0x00, 0x58, 0x90, 0x00, 0x50, 0x90, 0x00, 0x48, 0x9E, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x44, 0x90, 0x00, 0x5C, 0x90, 0x00, 0x40, 0x90, 0x00, 0x43, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9638, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x1C, 0x00, 0x49, 0xF0, 0x00, 0x49, 0x00, 0x00, 0x59, 0xFF, 0x00, 0x51, 0x01, 0x00, 0x51, 0xFF, 0x00, 0x49, 0x00, 0x00, 0x49, 0x7E, 0x00, 0x49, 0x06, 0x00, 0x49, 0x0C, 0x00, 0x5B, 0x18, 0x00, 0x42, 0x30, 0x00, 0x42, 0x61, 0x00, 0x46, 0x41, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9639, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x58, 0x20, 0x00, 0x50, 0x20, 0x00, 0x50, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x48, 0x40, 0x00, 0x58, 0xC4, 0x00, 0x40, 0x84, 0x00, 0x40, 0xBE, 0x00, 0x41, 0xE2, 0x00, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x963A, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x1C, 0x00, 0x49, 0xF0, 0x00, 0x49, 0x10, 0x00, 0x59, 0x10, 0x00, 0x51, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x49, 0x10, 0x00, 0x49, 0x10, 0x00, 0x49, 0x18, 0x00, 0x49, 0x08, 0x00, 0x59, 0xC8, 0x00, 0x47, 0x0C, 0x00, 0x40, 0x05, 0x00, 0x47, 0xF7, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x963B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x2C, 0x82, 0x00, 0x20, 0x82, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x963C, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x44, 0x80, 0x00, 0x4D, 0xFF, 0x00, 0x59, 0x20, 0x00, 0x53, 0x20, 0x00, 0x48, 0x20, 0x00, 0x44, 0x3E, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x20, 0x00, 0x44, 0x3E, 0x00, 0x5C, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x963D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0x10, 0x00, 0x4C, 0x10, 0x00, 0x58, 0x1F, 0x00, 0x50, 0x10, 0x00, 0x48, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0x82, 0x00, 0x5C, 0x82, 0x00, 0x40, 0x82, 0x00, 0x40, 0x82, 0x00, 0x40, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x963F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x02, 0x00, 0x24, 0x02, 0x00, 0x28, 0x02, 0x00, 0x24, 0xF2, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0xF2, 0x00, 0x22, 0x92, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x2C, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9640, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x28, 0x80, 0x80, 0x24, 0x00, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x23, 0x80, 0x22, 0x3C, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x80, 0x2C, 0x20, 0x80, 0x20, 0x3F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9641, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7C, 0x80, 0x00, 0x44, 0x80, 0x00, 0x4D, 0xFF, 0x00, 0x59, 0x00, 0x00, 0x53, 0x10, 0x00, 0x48, 0x96, 0x00, 0x44, 0x9A, 0x00, 0x44, 0xB2, 0x00, 0x44, 0xD2, 0x00, 0x45, 0x96, 0x00, 0x44, 0x90, 0x00, 0x5C, 0x90, 0x00, 0x40, 0x81, 0x00, 0x40, 0xC3, 0x00, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9642, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x89, 0x00, 0x22, 0x88, 0x00, 0x22, 0xFF, 0x00, 0x22, 0xA1, 0x00, 0x22, 0xA2, 0x00, 0x22, 0x92, 0x00, 0x22, 0x94, 0x00, 0x22, 0x88, 0x00, 0x2C, 0x8C, 0x00, 0x21, 0x14, 0x00, 0x21, 0x22, 0x00, 0x22, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9644, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x24, 0xC2, 0x00, 0x25, 0x7F, 0x80, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x52, 0x00, 0x22, 0x4A, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x2C, 0x42, 0x00, 0x20, 0x42, 0x00, 0x20, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9645, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x28, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x22, 0x10, 0x00, 0x22, 0x54, 0x00, 0x22, 0x52, 0x00, 0x34, 0x91, 0x00, 0x29, 0x11, 0x00, 0x20, 0x10, 0x00, 0x20, 0x50, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9646, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x14, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x28, 0x10, 0x00, 0x24, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x34, 0x92, 0x00, 0x28, 0x92, 0x00, 0x20, 0x92, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9647, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x50, 0x00, 0x22, 0x48, 0x00, 0x24, 0x48, 0x00, 0x24, 0x42, 0x00, 0x2B, 0xFF, 0x00, 0x24, 0x50, 0x00, 0x24, 0x50, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x32, 0x94, 0x00, 0x2D, 0x19, 0x00, 0x21, 0x11, 0x00, 0x22, 0x31, 0x00, 0x22, 0x4F, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9648, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x22, 0x00, 0x2B, 0xFF, 0x00, 0x28, 0x40, 0x00, 0x30, 0x50, 0x00, 0x28, 0x90, 0x00, 0x25, 0x14, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x34, 0x94, 0x00, 0x28, 0x92, 0x00, 0x21, 0x13, 0x00, 0x22, 0x11, 0x00, 0x20, 0x50, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9649, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFC, 0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x28, 0x20, 0x00, 0x28, 0x58, 0x00, 0x30, 0x86, 0x00, 0x2B, 0x02, 0x00, 0x28, 0x08, 0x00, 0x25, 0xFC, 0x00, 0x24, 0x20, 0x00, 0x34, 0x20, 0x00, 0x28, 0x20, 0x00, 0x20, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x964B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x25, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x55, 0x00, 0x25, 0x63, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x25, 0x43, 0x00, 0x39, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x964C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x24, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x21, 0x41, 0x00, 0x21, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x21, 0x41, 0x00, 0x21, 0x41, 0x00, 0x2E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x964D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x24, 0xC2, 0x00, 0x29, 0x24, 0x00, 0x26, 0x18, 0x00, 0x22, 0x76, 0x00, 0x23, 0x89, 0x80, 0x22, 0x08, 0x00, 0x23, 0xFF, 0x00, 0x22, 0x88, 0x00, 0x22, 0x88, 0x00, 0x2D, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x964F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x45, 0xFF, 0x00, 0x4C, 0x20, 0x00, 0x48, 0x20, 0x00, 0x58, 0x7E, 0x00, 0x50, 0x42, 0x00, 0x48, 0xC2, 0x00, 0x45, 0x7E, 0x00, 0x44, 0x42, 0x00, 0x44, 0x42, 0x00, 0x44, 0x7E, 0x00, 0x5C, 0x42, 0x00, 0x40, 0x42, 0x00, 0x40, 0x42, 0x00, 0x40, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9650, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x22, 0x82, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x91, 0x00, 0x22, 0x92, 0x00, 0x22, 0x8C, 0x00, 0x22, 0x88, 0x00, 0x3C, 0x84, 0x00, 0x20, 0xFA, 0x00, 0x23, 0x81, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9652, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x78, 0x7C, 0x00, 0x48, 0x88, 0x00, 0x49, 0x10, 0x00, 0x5B, 0xFF, 0x00, 0x51, 0x00, 0x00, 0x51, 0x00, 0x00, 0x51, 0x7C, 0x00, 0x49, 0x44, 0x00, 0x49, 0x44, 0x00, 0x49, 0x44, 0x00, 0x49, 0x4C, 0x00, 0x59, 0x40, 0x00, 0x41, 0x41, 0x00, 0x42, 0x63, 0x00, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9654, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x58, 0x40, 0x00, 0x50, 0xC0, 0x00, 0x51, 0x88, 0x00, 0x48, 0xD8, 0x00, 0x48, 0x30, 0x00, 0x48, 0x64, 0x00, 0x48, 0xCC, 0x00, 0x5B, 0x98, 0x00, 0x40, 0x30, 0x00, 0x40, 0x6C, 0x00, 0x40, 0xC6, 0x00, 0x43, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9655, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x24, 0x00, 0x2B, 0xFE, 0x00, 0x28, 0x20, 0x00, 0x31, 0x24, 0x00, 0x28, 0xA8, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x34, 0x50, 0x00, 0x28, 0x50, 0x00, 0x20, 0x88, 0x00, 0x21, 0x04, 0x00, 0x22, 0x07, 0x00, 0x24, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9656, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x79, 0x84, 0x00, 0x49, 0x04, 0x00, 0x4B, 0xFE, 0x00, 0x58, 0x92, 0x00, 0x50, 0x90, 0x00, 0x51, 0x9F, 0x00, 0x4B, 0x40, 0x00, 0x48, 0x7C, 0x00, 0x48, 0xC4, 0x00, 0x49, 0x8C, 0x00, 0x5B, 0x58, 0x00, 0x40, 0x30, 0x00, 0x40, 0x78, 0x00, 0x40, 0xCC, 0x00, 0x43, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9657, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x52, 0x00, 0x22, 0xD3, 0x00, 0x26, 0x91, 0x00, 0x24, 0x10, 0x00, 0x2C, 0xFF, 0x00, 0x28, 0x81, 0x00, 0x24, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x2E, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9658, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x49, 0x24, 0x00, 0x59, 0x24, 0x00, 0x52, 0x48, 0x00, 0x52, 0x48, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x48, 0x00, 0x00, 0x4B, 0xFE, 0x00, 0x58, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x47, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x965B, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x3C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x28, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0xF8, 0x80, 0x27, 0x8F, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x965C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x25, 0x55, 0x00, 0x26, 0x38, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x28, 0x00, 0x38, 0x28, 0x00, 0x20, 0x44, 0x00, 0x20, 0x82, 0x00, 0x23, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x965D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x25, 0x55, 0x00, 0x26, 0x38, 0x80, 0x24, 0x10, 0x00, 0x24, 0x28, 0x00, 0x24, 0x28, 0x00, 0x24, 0x44, 0x00, 0x38, 0x82, 0x00, 0x21, 0x01, 0x00, 0x22, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x965E, { 0x00, 0x00, 0x00, 0x3C, 0x34, 0x00, 0x25, 0xC4, 0x00, 0x24, 0x44, 0x00, 0x28, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x84, 0x00, 0x25, 0x14, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x20, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x965F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x90, 0x00, 0x24, 0x9F, 0x00, 0x28, 0x90, 0x00, 0x24, 0x90, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x90, 0x00, 0x24, 0x91, 0x00, 0x25, 0x11, 0x00, 0x26, 0x12, 0x00, 0x2C, 0x34, 0x00, 0x20, 0x08, 0x00, 0x20, 0x30, 0x00, 0x20, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9661, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x44, 0xFE, 0x00, 0x4C, 0x10, 0x00, 0x48, 0x10, 0x00, 0x58, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x44, 0x10, 0x00, 0x44, 0x90, 0x00, 0x44, 0x9E, 0x00, 0x44, 0x90, 0x00, 0x5D, 0xD0, 0x00, 0x41, 0x50, 0x00, 0x43, 0x30, 0x00, 0x46, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9662, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x25, 0x00, 0x80, 0x28, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x2C, 0x84, 0x00, 0x20, 0x84, 0x80, 0x21, 0x07, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9663, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x28, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x24, 0x10, 0x00, 0x3B, 0xFF, 0x80, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9664, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x28, 0x00, 0x22, 0x44, 0x00, 0x24, 0x82, 0x00, 0x25, 0x01, 0x80, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x2C, 0x92, 0x00, 0x21, 0x11, 0x00, 0x22, 0x10, 0x80, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9665, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x7E, 0x00, 0x26, 0x42, 0x00, 0x24, 0xC6, 0x00, 0x2D, 0x8C, 0x00, 0x28, 0x08, 0x00, 0x24, 0x9F, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x91, 0x00, 0x22, 0x9F, 0x00, 0x2E, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9666, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x20, 0x00, 0x47, 0xFF, 0x00, 0x4C, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x58, 0x20, 0x00, 0x53, 0xFF, 0x00, 0x50, 0x40, 0x00, 0x48, 0x44, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0x84, 0x00, 0x49, 0xA4, 0x00, 0x59, 0x34, 0x00, 0x43, 0x14, 0x00, 0x46, 0x04, 0x00, 0x40, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9667, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3D, 0xFE, 0x00, 0x25, 0x04, 0x00, 0x25, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x29, 0x04, 0x00, 0x31, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x29, 0x24, 0x00, 0x24, 0x20, 0x00, 0x25, 0xFC, 0x00, 0x34, 0x20, 0x00, 0x28, 0x20, 0x00, 0x20, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9668, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x7C, 0x00, 0x28, 0x02, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x34, 0x92, 0x00, 0x28, 0x28, 0x00, 0x20, 0x24, 0x00, 0x20, 0x42, 0x00, 0x21, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9669, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x50, 0x00, 0x28, 0x88, 0x00, 0x29, 0x17, 0x00, 0x32, 0xFA, 0x00, 0x28, 0x00, 0x00, 0x25, 0x24, 0x00, 0x25, 0x24, 0x00, 0x24, 0xA4, 0x00, 0x34, 0xA4, 0x00, 0x28, 0xA8, 0x00, 0x20, 0xA8, 0x00, 0x20, 0x12, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x966A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x28, 0x82, 0x00, 0x24, 0x44, 0x00, 0x22, 0x44, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFE, 0x00, 0x22, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x966C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x4A, 0x40, 0x00, 0x4A, 0x40, 0x00, 0x5A, 0x7E, 0x00, 0x53, 0xD2, 0x00, 0x52, 0x52, 0x00, 0x4A, 0x56, 0x00, 0x4A, 0x54, 0x00, 0x4B, 0xDC, 0x00, 0x4A, 0x48, 0x00, 0x5A, 0x48, 0x00, 0x42, 0x5C, 0x00, 0x43, 0xD4, 0x00, 0x46, 0x66, 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x966E, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7C, 0x66, 0x00, 0x44, 0x44, 0x00, 0x4C, 0xFF, 0x00, 0x49, 0x88, 0x00, 0x5A, 0x88, 0x00, 0x50, 0x88, 0x00, 0x48, 0xFE, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0x88, 0x00, 0x44, 0xFE, 0x00, 0x5C, 0x88, 0x00, 0x40, 0x88, 0x00, 0x40, 0x88, 0x00, 0x40, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9670, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x44, 0x00, 0x28, 0x82, 0x00, 0x27, 0x7D, 0x80, 0x24, 0x00, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x24, 0x08, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x38, 0x42, 0x00, 0x20, 0x8F, 0x00, 0x23, 0xF0, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9672, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x7C, 0x38, 0x00, 0x45, 0xE0, 0x00, 0x4C, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x59, 0x24, 0x00, 0x51, 0x24, 0x00, 0x51, 0x24, 0x00, 0x4F, 0xFF, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x5B, 0xFE, 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x47, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9673, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x28, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x25, 0x11, 0x00, 0x24, 0x38, 0x00, 0x38, 0x54, 0x00, 0x20, 0x92, 0x00, 0x21, 0x11, 0x00, 0x22, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9674, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x40, 0x00, 0x45, 0xFE, 0x00, 0x4D, 0x22, 0x00, 0x49, 0x22, 0x00, 0x59, 0xFE, 0x00, 0x51, 0x22, 0x00, 0x49, 0x22, 0x00, 0x45, 0xFE, 0x00, 0x44, 0x48, 0x00, 0x44, 0x88, 0x00, 0x47, 0xFF, 0x00, 0x5C, 0x08, 0x00, 0x40, 0x08, 0x00, 0x40, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9675, { 0x00, 0x00, 0x00, 0x3C, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x00, 0x28, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x24, 0x44, 0x80, 0x24, 0xA7, 0x80, 0x27, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x24, 0xC2, 0x00, 0x25, 0x24, 0x00, 0x3A, 0x18, 0x00, 0x20, 0x18, 0x00, 0x20, 0x66, 0x00, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9676, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x80, 0x00, 0x29, 0xFF, 0x80, 0x2A, 0x80, 0x80, 0x24, 0xFC, 0x80, 0x25, 0x20, 0x80, 0x26, 0x20, 0x80, 0x27, 0xFF, 0x80, 0x25, 0x24, 0x80, 0x25, 0x24, 0x80, 0x25, 0xFC, 0x80, 0x3D, 0x04, 0x80, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9677, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x3F, 0x00, 0x24, 0x41, 0x00, 0x28, 0x81, 0x00, 0x27, 0x02, 0x00, 0x24, 0x1C, 0x00, 0x24, 0x00, 0x00, 0x24, 0x60, 0x00, 0x25, 0x87, 0x00, 0x25, 0x01, 0x00, 0x25, 0xC7, 0x00, 0x39, 0x01, 0x00, 0x21, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9678, { 0x00, 0x00, 0x00, 0x3C, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x24, 0x48, 0x00, 0x24, 0x48, 0x80, 0x24, 0x8F, 0x80, 0x27, 0x00, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x967A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x70, 0x00, 0x44, 0xD8, 0x00, 0x49, 0x8C, 0x00, 0x4F, 0x07, 0x00, 0x51, 0xFC, 0x00, 0x50, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xFE, 0x00, 0x58, 0x50, 0x00, 0x40, 0xD8, 0x00, 0x41, 0x8C, 0x00, 0x47, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x967B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x50, 0x00, 0x48, 0x50, 0x00, 0x59, 0xFE, 0x00, 0x51, 0x52, 0x00, 0x51, 0x52, 0x00, 0x49, 0x52, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x59, 0xFE, 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x43, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x967C, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7C, 0x22, 0x00, 0x45, 0xFE, 0x00, 0x4C, 0x24, 0x00, 0x48, 0x2C, 0x00, 0x58, 0x28, 0x00, 0x53, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x44, 0x28, 0x00, 0x44, 0xFC, 0x00, 0x47, 0x84, 0x00, 0x44, 0x84, 0x00, 0x5C, 0xFC, 0x00, 0x40, 0x84, 0x00, 0x40, 0x84, 0x00, 0x40, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x967D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x40, 0x00, 0x24, 0xFF, 0x80, 0x25, 0x11, 0x80, 0x26, 0x22, 0x80, 0x24, 0xC4, 0x80, 0x39, 0x08, 0x80, 0x22, 0x31, 0x00, 0x20, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x967E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x4B, 0xFF, 0x00, 0x5A, 0x49, 0x00, 0x52, 0x49, 0x00, 0x52, 0x49, 0x00, 0x4A, 0x4B, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x58, 0x48, 0x00, 0x40, 0x48, 0x00, 0x40, 0xCC, 0x00, 0x41, 0x86, 0x00, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x967F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x00, 0x00, 0x4A, 0x10, 0x00, 0x5B, 0xFF, 0x00, 0x52, 0x92, 0x00, 0x52, 0x92, 0x00, 0x52, 0x92, 0x00, 0x4B, 0x55, 0x00, 0x4A, 0x38, 0x00, 0x4A, 0x28, 0x00, 0x4A, 0x6C, 0x00, 0x5A, 0xC6, 0x00, 0x43, 0x83, 0x00, 0x42, 0x00, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9681, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0x00, 0x4A, 0x00, 0x00, 0x4A, 0x7E, 0x00, 0x4A, 0x42, 0x00, 0x5A, 0x7E, 0x00, 0x52, 0x42, 0x00, 0x4A, 0x7E, 0x00, 0x4A, 0x10, 0x00, 0x4A, 0xFF, 0x00, 0x4A, 0x24, 0x00, 0x4A, 0x6C, 0x00, 0x5A, 0x18, 0x00, 0x42, 0xE7, 0x00, 0x42, 0x00, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9682, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x38, 0x00, 0x44, 0x6C, 0x00, 0x4C, 0xC6, 0x00, 0x59, 0x83, 0x00, 0x50, 0x7C, 0x00, 0x48, 0x40, 0x00, 0x44, 0x7C, 0x00, 0x44, 0x40, 0x00, 0x44, 0x7C, 0x00, 0x44, 0x40, 0x00, 0x45, 0xFF, 0x00, 0x5C, 0x40, 0x00, 0x40, 0xC4, 0x00, 0x40, 0x9E, 0x00, 0x41, 0xF2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9683, { 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x30, 0x00, 0x48, 0xD8, 0x00, 0x49, 0x8C, 0x00, 0x5F, 0x07, 0x00, 0x50, 0xF8, 0x00, 0x50, 0x00, 0x00, 0x53, 0xC9, 0x00, 0x4A, 0x49, 0x00, 0x4B, 0x5B, 0x00, 0x4A, 0xD2, 0x00, 0x4A, 0x52, 0x00, 0x5B, 0x5B, 0x00, 0x42, 0xC9, 0x00, 0x42, 0x49, 0x00, 0x42, 0xC9, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9684, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x59, 0x04, 0x00, 0x51, 0x04, 0x00, 0x51, 0xFC, 0x00, 0x50, 0x00, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x49, 0x20, 0x00, 0x49, 0x3E, 0x00, 0x59, 0x20, 0x00, 0x43, 0xA0, 0x00, 0x46, 0xE0, 0x00, 0x4C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9685, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x8A, 0x80, 0x22, 0x8F, 0x80, 0x2C, 0xF1, 0x80, 0x20, 0x80, 0x80, 0x20, 0x80, 0x80, 0x20, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9686, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x24, 0xC2, 0x00, 0x2B, 0x24, 0x00, 0x28, 0x18, 0x00, 0x24, 0x66, 0x00, 0x27, 0xA9, 0x80, 0x24, 0x48, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x88, 0x00, 0x25, 0x7F, 0x00, 0x38, 0x08, 0x00, 0x20, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9688, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFC, 0x00, 0x49, 0x24, 0x00, 0x49, 0x24, 0x00, 0x59, 0xFC, 0x00, 0x51, 0x24, 0x00, 0x51, 0x24, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x4F, 0xFF, 0x00, 0x49, 0x20, 0x00, 0x49, 0x32, 0x00, 0x59, 0x14, 0x00, 0x41, 0x18, 0x00, 0x41, 0xCC, 0x00, 0x47, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9689, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x7B, 0x9E, 0x00, 0x4A, 0x02, 0x00, 0x4A, 0x02, 0x00, 0x5B, 0xDE, 0x00, 0x52, 0x02, 0x00, 0x52, 0x02, 0x00, 0x53, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x58, 0x20, 0x00, 0x40, 0x20, 0x00, 0x47, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x968A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7C, 0x00, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x29, 0x01, 0x00, 0x2A, 0xFC, 0x80, 0x24, 0x20, 0x00, 0x24, 0x51, 0x00, 0x24, 0x9A, 0x00, 0x25, 0x2C, 0x00, 0x26, 0x48, 0x00, 0x24, 0x98, 0x00, 0x2F, 0x2C, 0x00, 0x20, 0xCA, 0x00, 0x23, 0x09, 0x00, 0x20, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x968B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x40, 0x00, 0x28, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x25, 0xFF, 0x80, 0x25, 0x00, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x38, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x968D, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x20, 0x00, 0x24, 0xFE, 0x00, 0x28, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x2C, 0x10, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x968E, { 0x00, 0x00, 0x00, 0x3E, 0x84, 0x00, 0x22, 0x84, 0x00, 0x24, 0xF7, 0x80, 0x28, 0x84, 0x00, 0x24, 0x84, 0x80, 0x22, 0xBC, 0x80, 0x23, 0xC7, 0x80, 0x22, 0x10, 0x00, 0x22, 0x20, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x968F, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7A, 0x10, 0x00, 0x4B, 0x7F, 0x00, 0x49, 0x10, 0x00, 0x48, 0x3E, 0x00, 0x50, 0x22, 0x00, 0x50, 0x62, 0x00, 0x4B, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x59, 0x22, 0x00, 0x43, 0x26, 0x00, 0x46, 0x80, 0x00, 0x4C, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9690, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0x78, 0x00, 0x28, 0x88, 0x00, 0x29, 0x12, 0x00, 0x33, 0xFF, 0x00, 0x28, 0x02, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x25, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x29, 0x40, 0x00, 0x21, 0x30, 0x00, 0x23, 0x16, 0x00, 0x25, 0x05, 0x00, 0x20, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9691, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7A, 0x22, 0x00, 0x4A, 0x22, 0x00, 0x4B, 0xFE, 0x00, 0x58, 0x00, 0x00, 0x53, 0xFE, 0x00, 0x50, 0x00, 0x00, 0x51, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x49, 0x04, 0x00, 0x49, 0xFC, 0x00, 0x48, 0x88, 0x00, 0x58, 0xD8, 0x00, 0x40, 0x50, 0x00, 0x47, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9694, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x94, 0x80, 0x22, 0xF7, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x2C, 0x88, 0x80, 0x20, 0x88, 0x80, 0x20, 0x88, 0x80, 0x20, 0x8B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9695, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x20, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9696, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x40, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x59, 0x04, 0x00, 0x51, 0x04, 0x00, 0x51, 0xFC, 0x00, 0x51, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x02, 0x00, 0x5A, 0xAA, 0x00, 0x46, 0xAA, 0x00, 0x44, 0x06, 0x00, 0x40, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9697, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x40, 0x00, 0x45, 0xFE, 0x00, 0x4D, 0x22, 0x00, 0x49, 0x22, 0x00, 0x59, 0xFE, 0x00, 0x51, 0x22, 0x00, 0x49, 0x22, 0x00, 0x45, 0xFE, 0x00, 0x44, 0x50, 0x00, 0x44, 0x54, 0x00, 0x44, 0x55, 0x00, 0x5C, 0xDF, 0x00, 0x40, 0x90, 0x00, 0x41, 0x91, 0x00, 0x43, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9698, { 0x00, 0x00, 0x00, 0x3C, 0x44, 0x00, 0x24, 0x82, 0x00, 0x25, 0x01, 0x00, 0x2A, 0xFC, 0x80, 0x28, 0x00, 0x00, 0x24, 0x7C, 0x00, 0x24, 0x04, 0x00, 0x24, 0x82, 0x00, 0x25, 0x01, 0x80, 0x26, 0xFF, 0x00, 0x24, 0xA5, 0x00, 0x24, 0xA5, 0x00, 0x38, 0xA5, 0x00, 0x20, 0xA5, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9699, { 0x00, 0x00, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x49, 0x00, 0x24, 0x88, 0x80, 0x28, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2C, 0x4A, 0x00, 0x20, 0x89, 0x00, 0x21, 0x08, 0x80, 0x20, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x969A, { 0x00, 0x00, 0x00, 0x02, 0x22, 0x00, 0x7B, 0x26, 0x00, 0x49, 0x24, 0x00, 0x4B, 0xFE, 0x00, 0x5A, 0x02, 0x00, 0x52, 0xFA, 0x00, 0x50, 0x88, 0x00, 0x50, 0x88, 0x00, 0x48, 0xF8, 0x00, 0x48, 0x20, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFC, 0x00, 0x58, 0x20, 0x00, 0x40, 0x20, 0x00, 0x47, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x969B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x40, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x51, 0x00, 0x2B, 0x2A, 0x00, 0x24, 0xC6, 0x00, 0x24, 0x81, 0x80, 0x27, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x38, 0x92, 0x00, 0x21, 0x11, 0x00, 0x22, 0x10, 0x80, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x969C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x22, 0x00, 0x24, 0x14, 0x00, 0x28, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x2D, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x969D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x40, 0x00, 0x49, 0xFC, 0x00, 0x49, 0x04, 0x00, 0x59, 0xFC, 0x00, 0x51, 0x04, 0x00, 0x51, 0xFC, 0x00, 0x51, 0x00, 0x00, 0x49, 0xFF, 0x00, 0x49, 0x00, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x02, 0x00, 0x5A, 0xAA, 0x00, 0x46, 0xAA, 0x00, 0x44, 0x06, 0x00, 0x40, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x969F, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x79, 0x24, 0x00, 0x49, 0xB6, 0x00, 0x48, 0x92, 0x00, 0x59, 0xFE, 0x00, 0x51, 0x22, 0x00, 0x51, 0xFE, 0x00, 0x51, 0x22, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFF, 0x00, 0x48, 0xA8, 0x00, 0x58, 0xAC, 0x00, 0x41, 0xA6, 0x00, 0x43, 0x23, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A0, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x3C, 0x00, 0x4B, 0xE2, 0x00, 0x49, 0x26, 0x00, 0x48, 0x94, 0x00, 0x51, 0xFE, 0x00, 0x50, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x48, 0x10, 0x00, 0x59, 0x52, 0x00, 0x41, 0x43, 0x00, 0x43, 0x45, 0x00, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x54, 0x00, 0x27, 0xFF, 0x80, 0x28, 0x38, 0x00, 0x24, 0x54, 0x00, 0x24, 0x92, 0x00, 0x27, 0x11, 0x80, 0x24, 0x84, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x34, 0x00, 0x3B, 0x54, 0x00, 0x24, 0xFF, 0x80, 0x20, 0x84, 0x00, 0x21, 0x04, 0x00, 0x22, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0xFE, 0x00, 0x44, 0x92, 0x00, 0x4C, 0xFE, 0x00, 0x58, 0x10, 0x00, 0x51, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x44, 0x82, 0x00, 0x44, 0xFE, 0x00, 0x5C, 0x82, 0x00, 0x40, 0xFE, 0x00, 0x40, 0x44, 0x00, 0x41, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A5, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0xE8, 0x00, 0x4A, 0x31, 0x00, 0x49, 0x4A, 0x00, 0x58, 0x84, 0x00, 0x53, 0x7B, 0x00, 0x50, 0x00, 0x00, 0x50, 0xFC, 0x00, 0x48, 0x84, 0x00, 0x48, 0x84, 0x00, 0x48, 0xFC, 0x00, 0x48, 0x00, 0x00, 0x58, 0x84, 0x00, 0x40, 0xCC, 0x00, 0x40, 0x48, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A6, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7B, 0x88, 0x00, 0x4A, 0xBE, 0x00, 0x4A, 0x80, 0x00, 0x5A, 0xA2, 0x00, 0x52, 0xB6, 0x00, 0x53, 0x94, 0x00, 0x4A, 0x7F, 0x00, 0x4A, 0x08, 0x00, 0x4B, 0x88, 0x00, 0x5A, 0xBE, 0x00, 0x46, 0x88, 0x00, 0x46, 0x88, 0x00, 0x4A, 0x88, 0x00, 0x42, 0x88, 0x00, 0x43, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A7, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3C, 0x8E, 0x00, 0x24, 0x22, 0x00, 0x24, 0x41, 0x00, 0x2A, 0xBE, 0x80, 0x25, 0x19, 0x00, 0x24, 0x2E, 0x00, 0x24, 0xD4, 0x00, 0x24, 0x26, 0x00, 0x27, 0x4D, 0x00, 0x25, 0x15, 0x00, 0x25, 0x64, 0x80, 0x39, 0x18, 0x80, 0x21, 0x80, 0x00, 0x22, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A8, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3D, 0x10, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x2A, 0x5F, 0x00, 0x25, 0x84, 0x00, 0x25, 0x7F, 0x80, 0x24, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x27, 0x3F, 0x00, 0x25, 0x21, 0x00, 0x25, 0x3F, 0x00, 0x39, 0x21, 0x00, 0x21, 0xA3, 0x00, 0x22, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96A9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x40, 0x00, 0x4B, 0xFE, 0x00, 0x4A, 0x12, 0x00, 0x5A, 0xE2, 0x00, 0x52, 0xAA, 0x00, 0x52, 0x22, 0x00, 0x52, 0xFA, 0x00, 0x4A, 0x72, 0x00, 0x4A, 0xAA, 0x00, 0x4A, 0x22, 0x00, 0x4F, 0xFF, 0x00, 0x58, 0x50, 0x00, 0x40, 0xD8, 0x00, 0x41, 0x8C, 0x00, 0x47, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96AA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x28, 0x00, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x2B, 0x01, 0x80, 0x24, 0xFC, 0x00, 0x24, 0x00, 0x00, 0x24, 0xEE, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xEE, 0x00, 0x24, 0x00, 0x00, 0x2C, 0x82, 0x00, 0x20, 0x82, 0x00, 0x21, 0x45, 0x00, 0x22, 0x28, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96AE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x20, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x50, 0x00, 0x5F, 0xAF, 0x00, 0x52, 0xAA, 0x00, 0x52, 0xAA, 0x00, 0x55, 0xAD, 0x00, 0x48, 0x00, 0x00, 0x49, 0x02, 0x00, 0x49, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x59, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x41, 0x02, 0x00, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96AF, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7B, 0xFF, 0x00, 0x48, 0x20, 0x00, 0x49, 0xFE, 0x00, 0x58, 0x00, 0x00, 0x57, 0xFF, 0x00, 0x50, 0x01, 0x00, 0x51, 0xFD, 0x00, 0x48, 0x20, 0x00, 0x4B, 0xFE, 0x00, 0x48, 0x00, 0x00, 0x4F, 0xFF, 0x00, 0x58, 0x02, 0x00, 0x47, 0xBF, 0x00, 0x44, 0xA2, 0x00, 0x47, 0x96, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFE, 0x00, 0x45, 0x02, 0x00, 0x4D, 0xFE, 0x00, 0x49, 0x02, 0x00, 0x59, 0xFE, 0x00, 0x50, 0x84, 0x00, 0x51, 0x08, 0x00, 0x49, 0x4A, 0x00, 0x48, 0x84, 0x00, 0x49, 0x29, 0x00, 0x4B, 0xEF, 0x00, 0x58, 0x00, 0x00, 0x41, 0x52, 0x00, 0x43, 0x5B, 0x00, 0x42, 0x49, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B1, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x3C, 0xE9, 0x00, 0x25, 0x04, 0x80, 0x26, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x24, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x27, 0xFF, 0x80, 0x24, 0x02, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x3A, 0x91, 0x00, 0x22, 0x82, 0x80, 0x24, 0xFE, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0xA4, 0x00, 0x45, 0xA6, 0x00, 0x4F, 0x23, 0x00, 0x48, 0x68, 0x00, 0x58, 0x30, 0x00, 0x50, 0xFF, 0x00, 0x53, 0x90, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x90, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x90, 0x00, 0x58, 0xFF, 0x00, 0x42, 0x01, 0x00, 0x42, 0xA9, 0x00, 0x44, 0xAB, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x28, 0x88, 0x00, 0x24, 0x7F, 0x80, 0x22, 0x22, 0x00, 0x22, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x2E, 0x3E, 0x00, 0x20, 0xA2, 0x00, 0x23, 0xE6, 0x00, 0x0E, 0x38, 0x00, 0x78, 0x8F, 0x80, 0x08, 0xA2, 0x00, 0x33, 0x91, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B4, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x78, 0x88, 0x00, 0x4F, 0xFF, 0x00, 0x4A, 0x28, 0x00, 0x59, 0x4F, 0x00, 0x57, 0xF1, 0x00, 0x50, 0x0F, 0x00, 0x4B, 0xE8, 0x00, 0x4A, 0x2F, 0x00, 0x4B, 0xE8, 0x00, 0x4A, 0x2F, 0x00, 0x5B, 0xE8, 0x00, 0x42, 0x2F, 0x00, 0x42, 0x28, 0x00, 0x42, 0x29, 0x00, 0x42, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x30, 0x83, 0x00, 0x18, 0x86, 0x00, 0x00, 0xCC, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x0E, 0x09, 0x00, 0x15, 0xFF, 0x80, 0x24, 0x89, 0x00, 0x04, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x49, 0x00, 0x00, 0x2A, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x0C, 0x00, 0x15, 0x1A, 0x00, 0x15, 0x29, 0x00, 0x24, 0x48, 0x80, 0x0C, 0x98, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x09, 0x00, 0x1C, 0xFF, 0x80, 0x2A, 0x09, 0x00, 0x49, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x6B, 0x00, 0x7F, 0x2A, 0x00, 0x08, 0x0C, 0x00, 0x2A, 0x1A, 0x00, 0x2A, 0x2B, 0x00, 0x4A, 0xC9, 0x80, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96B9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x06, 0x30, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x38, 0x40, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96BA, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x23, 0x01, 0x00, 0x22, 0x21, 0x00, 0x06, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96BB, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x03, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96BC, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0C, 0x60, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x30, 0x40, 0x00, 0x5F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96BD, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x14, 0x20, 0x00, 0x27, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0x0A, 0x00, 0x01, 0x1F, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0A, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96BE, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x28, 0x00, 0x7F, 0x22, 0x00, 0x02, 0x7F, 0x00, 0x22, 0x48, 0x00, 0x22, 0xC8, 0x00, 0x15, 0x7E, 0x00, 0x14, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7E, 0x00, 0x14, 0x48, 0x00, 0x12, 0x48, 0x00, 0x22, 0x4A, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96C0, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x48, 0x80, 0x20, 0x50, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xD0, 0x00, 0x03, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x34, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x40, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x40, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x22, 0x00, 0x12, 0x24, 0x00, 0x12, 0x7F, 0x80, 0x16, 0xC4, 0x00, 0x1B, 0x44, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96C4, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x24, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0x64, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0x3F, 0x00, 0x0A, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x12, 0x24, 0x00, 0x14, 0x3F, 0x00, 0x14, 0xA4, 0x00, 0x15, 0xE4, 0x00, 0x1E, 0x64, 0x00, 0x20, 0x3F, 0x80, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96C5, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x1F, 0x92, 0x00, 0x09, 0x24, 0x00, 0x09, 0x3F, 0x80, 0x09, 0x64, 0x00, 0x09, 0xA4, 0x00, 0x09, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x24, 0x00, 0x03, 0x24, 0x00, 0x05, 0x3F, 0x80, 0x05, 0x24, 0x00, 0x09, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0x3F, 0x80, 0x23, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96C6, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96C7, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1F, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x12, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x1A, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x20, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96C9, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x24, 0x00, 0x1F, 0x3F, 0x00, 0x14, 0x64, 0x00, 0x24, 0x64, 0x00, 0x04, 0xA4, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA4, 0x00, 0x04, 0x24, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x24, 0x00, 0x0A, 0x24, 0x00, 0x09, 0x24, 0x00, 0x11, 0x3F, 0x80, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96CA, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x16, 0x00, 0x10, 0x14, 0x00, 0x3F, 0x3F, 0x80, 0x21, 0x24, 0x00, 0x61, 0x64, 0x00, 0x1D, 0x24, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x1D, 0x3F, 0x00, 0x01, 0x24, 0x00, 0x01, 0x24, 0x00, 0x03, 0x24, 0x00, 0x0E, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96CB, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96CC, { 0x00, 0x00, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x92, 0x00, 0x04, 0x9F, 0x80, 0x14, 0xB2, 0x00, 0x14, 0xD2, 0x00, 0x14, 0xFF, 0x80, 0x17, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x14, 0x9F, 0x80, 0x14, 0x92, 0x00, 0x14, 0x92, 0x00, 0x17, 0x92, 0x00, 0x3D, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96CD, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x12, 0x00, 0x04, 0x14, 0x00, 0x0A, 0x3F, 0x80, 0x32, 0x64, 0x00, 0x14, 0xA4, 0x00, 0x08, 0xBF, 0x00, 0x17, 0x24, 0x00, 0x39, 0x24, 0x00, 0x02, 0x3F, 0x00, 0x04, 0x24, 0x00, 0x08, 0x24, 0x00, 0x10, 0x3F, 0x80, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96CE, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x1E, 0x48, 0x00, 0x12, 0xC8, 0x00, 0x13, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x1E, 0x48, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x17, 0xC8, 0x00, 0x38, 0x48, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96CF, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x28, 0x00, 0x10, 0x4A, 0x00, 0x1E, 0x7F, 0x00, 0x22, 0xC8, 0x00, 0x45, 0x48, 0x00, 0x0A, 0x7E, 0x00, 0x7F, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x7E, 0x00, 0x3E, 0x48, 0x00, 0x02, 0x48, 0x00, 0x02, 0x4A, 0x00, 0x7E, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96D1, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x10, 0x16, 0x00, 0x7E, 0x14, 0x00, 0x12, 0x3F, 0x80, 0x12, 0xA4, 0x00, 0x33, 0xA4, 0x00, 0x60, 0x64, 0x00, 0x08, 0xBF, 0x00, 0x08, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x08, 0x24, 0x00, 0x1C, 0x3F, 0x00, 0x1A, 0x24, 0x00, 0x29, 0x24, 0x00, 0x48, 0x24, 0x00, 0x08, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96D2, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x10, 0x26, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x7F, 0x80, 0x76, 0x44, 0x00, 0x1C, 0xC4, 0x00, 0x09, 0x44, 0x00, 0x1C, 0x7F, 0x00, 0x36, 0x44, 0x00, 0x63, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96D5, { 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x92, 0x00, 0x24, 0x9F, 0x80, 0x3F, 0xB2, 0x00, 0x24, 0xD2, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x9F, 0x80, 0x24, 0x92, 0x00, 0x2E, 0x92, 0x00, 0x2A, 0x9F, 0x80, 0x2A, 0x92, 0x00, 0x2E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x20, 0x9F, 0x80, 0x21, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96D6, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x24, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x64, 0x00, 0x04, 0xA4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x24, 0x00, 0x04, 0xA4, 0x00, 0x07, 0xA4, 0x00, 0x3C, 0x7F, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96D8, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x12, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0xC4, 0x00, 0x2A, 0x7F, 0x00, 0x2F, 0x44, 0x00, 0x7A, 0x7F, 0x00, 0x22, 0x44, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x22, 0x00, 0x62, 0x1C, 0x00, 0x46, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96D9, { 0x00, 0x00, 0x00, 0x05, 0x09, 0x00, 0x0A, 0x12, 0x00, 0x1F, 0xBF, 0x80, 0x32, 0x52, 0x00, 0x1F, 0x9F, 0x80, 0x12, 0x12, 0x00, 0x1F, 0x9F, 0x80, 0x12, 0x12, 0x00, 0x1F, 0xDF, 0x80, 0x10, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x02, 0x06, 0x00, 0x01, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96DA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7E, 0x1F, 0x80, 0x02, 0x10, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x02, 0x10, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x78, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96DB, { 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x08, 0x09, 0x00, 0x1F, 0xD2, 0x00, 0x34, 0x7F, 0x80, 0x15, 0x52, 0x00, 0x15, 0x5F, 0x80, 0x1F, 0x52, 0x00, 0x15, 0x5F, 0x80, 0x09, 0x92, 0x00, 0x1F, 0xD2, 0x00, 0x34, 0x5F, 0x80, 0x15, 0x50, 0x00, 0x1F, 0x4A, 0x80, 0x15, 0x4A, 0x80, 0x08, 0x6A, 0x80, 0x11, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96DC, { 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x92, 0x00, 0x11, 0x12, 0x00, 0x11, 0x3F, 0x80, 0x2A, 0xD2, 0x00, 0x24, 0x52, 0x00, 0x04, 0x1F, 0x80, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x0E, 0x1F, 0x80, 0x0D, 0x12, 0x00, 0x14, 0x92, 0x00, 0x24, 0x1F, 0x80, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96DD, { 0x00, 0x00, 0x00, 0x12, 0x49, 0x00, 0x24, 0x8B, 0x00, 0x49, 0x0A, 0x00, 0x24, 0x9F, 0x80, 0x12, 0x52, 0x00, 0x00, 0x32, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x9F, 0x80, 0x3F, 0x92, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x44, 0x5F, 0x80, 0x7F, 0xD2, 0x00, 0x40, 0x12, 0x00, 0x40, 0x52, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96DE, { 0x00, 0x00, 0x00, 0x03, 0x22, 0x00, 0x7E, 0x26, 0x00, 0x12, 0x24, 0x00, 0x4B, 0x7F, 0x80, 0x41, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x32, 0x44, 0x00, 0x14, 0x7F, 0x00, 0x09, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x09, 0x44, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x44, 0x00, 0x14, 0x44, 0x00, 0x36, 0x44, 0x00, 0x63, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96DF, { 0x00, 0x00, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x79, 0x10, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x38, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x44, 0x10, 0x80, 0x7B, 0xFF, 0x80, 0x42, 0x10, 0x80, 0x43, 0xF3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96E0, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x19, 0x0C, 0x00, 0x10, 0x88, 0x00, 0x1E, 0x9F, 0x00, 0x28, 0x34, 0x00, 0x6B, 0x94, 0x00, 0x3C, 0x9F, 0x00, 0x28, 0x94, 0x00, 0x28, 0x94, 0x00, 0x3E, 0x9F, 0x00, 0x28, 0x94, 0x00, 0x28, 0xB4, 0x00, 0x28, 0xD4, 0x00, 0x3E, 0x9F, 0x00, 0x20, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96E2, { 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xF2, 0x00, 0x10, 0x52, 0x00, 0x15, 0x7F, 0x80, 0x12, 0x52, 0x00, 0x15, 0x52, 0x00, 0x1F, 0xDF, 0x80, 0x02, 0x12, 0x00, 0x1F, 0xF2, 0x00, 0x14, 0x5F, 0x80, 0x15, 0x52, 0x00, 0x1B, 0xD2, 0x00, 0x1C, 0xD2, 0x00, 0x10, 0x5F, 0x80, 0x10, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96E3, { 0x00, 0x00, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x12, 0x00, 0x1F, 0x1F, 0x80, 0x04, 0x32, 0x00, 0x3F, 0xB2, 0x00, 0x24, 0xDF, 0x80, 0x3F, 0x92, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xD2, 0x00, 0x0A, 0x12, 0x00, 0x09, 0x12, 0x00, 0x10, 0x9F, 0x80, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x12, 0x49, 0x00, 0x11, 0x45, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x12, 0x49, 0x00, 0x11, 0x45, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x2F, 0x5E, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x40, 0x80, 0x80, 0x1E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xB8, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96F0, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x08, 0x00, 0x38, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96F1, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x04, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x7E, 0x00, 0x1F, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96F3, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x89, 0x00, 0x46, 0xB2, 0x00, 0x08, 0x88, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x84, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x21, 0x04, 0x00, 0x26, 0x28, 0x00, 0x48, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96F6, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x39, 0xF3, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x2F, 0xF1, 0x00, 0x08, 0x11, 0x00, 0x0F, 0xF2, 0x00, 0x08, 0x0C, 0x80, 0x08, 0x00, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96FA, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x18, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x41, 0x00, 0x0E, 0x42, 0x00, 0x78, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x96FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x80, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x96FE, { 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x89, 0x00, 0x44, 0x92, 0x00, 0x0A, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x20, 0x00, 0x09, 0xC0, 0x00, 0x06, 0x30, 0x00, 0x79, 0x0F, 0x00, 0x07, 0xF2, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x50, 0x00, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9701, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x89, 0x00, 0x46, 0xB2, 0x00, 0x09, 0x08, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x38, 0x00, 0x74, 0x17, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9702, { 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x5D, 0x7A, 0x00, 0x41, 0x02, 0x00, 0x1D, 0x78, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x60, 0xA8, 0x00, 0x30, 0xA8, 0x00, 0x09, 0xAC, 0x00, 0x1B, 0x26, 0x00, 0x36, 0x23, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9703, { 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x5D, 0x7A, 0x00, 0x41, 0x02, 0x00, 0x1D, 0x78, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFE, 0x00, 0x62, 0x22, 0x00, 0x32, 0x22, 0x00, 0x08, 0x70, 0x00, 0x18, 0xD1, 0x00, 0x31, 0x91, 0x00, 0x67, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9704, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x40, 0x80, 0x80, 0x1E, 0x3E, 0x00, 0x08, 0x84, 0x00, 0x10, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9705, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9706, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x07, 0x00, 0x02, 0x78, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x12, 0x08, 0x00, 0x0C, 0xFF, 0x80, 0x0A, 0x00, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9707, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x12, 0x00, 0x21, 0x0C, 0x00, 0x21, 0xF6, 0x00, 0x2F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9708, { 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x5D, 0x7A, 0x00, 0x41, 0x02, 0x00, 0x1D, 0x78, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x60, 0x20, 0x00, 0x31, 0xFE, 0x00, 0x09, 0x22, 0x00, 0x19, 0x22, 0x00, 0x31, 0x26, 0x00, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9709, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x970A, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x20, 0x00, 0x09, 0x24, 0x00, 0x05, 0x28, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x970D, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x18, 0x40, 0x00, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x970E, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0x3C, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x970F, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x02, 0x20, 0x00, 0x7E, 0x3F, 0x80, 0x04, 0x20, 0x00, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9711, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x48, 0x00, 0x10, 0x08, 0x00, 0x08, 0x0F, 0x80, 0x22, 0x08, 0x00, 0x12, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9713, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x03, 0x40, 0x00, 0x0C, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x02, 0x10, 0x80, 0x0C, 0x10, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9716, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x04, 0x44, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x0E, 0x0E, 0x00, 0x15, 0x15, 0x00, 0x14, 0xA4, 0x80, 0x24, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9719, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x80, 0x00, 0x40, 0x00, 0x0F, 0x1E, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0xB0, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x971A, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x00, 0x0A, 0x3F, 0x80, 0x04, 0x62, 0x00, 0x7F, 0x96, 0x00, 0x0D, 0x1C, 0x00, 0x14, 0x18, 0x00, 0x64, 0x36, 0x00, 0x0C, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x971B, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x04, 0x21, 0x00, 0x3D, 0xEF, 0x00, 0x21, 0x08, 0x00, 0x3D, 0xEF, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x63, 0x00, 0x39, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x971C, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x02, 0x00, 0x00, 0x02, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x06, 0x1F, 0x00, 0x0B, 0x11, 0x00, 0x0A, 0x9F, 0x00, 0x12, 0x51, 0x00, 0x22, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x971D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x40, 0x80, 0x80, 0x1E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x971E, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x81, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0x12, 0x00, 0x1F, 0x8C, 0x00, 0x10, 0x16, 0x00, 0x10, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9721, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x40, 0x80, 0x80, 0x1E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0xE9, 0x80, 0x22, 0x2E, 0x00, 0x62, 0x4B, 0x00, 0x46, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9722, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x40, 0x80, 0x80, 0x1E, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x18, 0x00, 0x24, 0xE3, 0x00, 0x3C, 0x8C, 0x00, 0x24, 0xB1, 0x80, 0x3C, 0xA6, 0x00, 0x24, 0xB8, 0x00, 0x64, 0xA6, 0x00, 0x4D, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9723, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9724, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7E, 0x00, 0x10, 0x12, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9727, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x9F, 0x00, 0x01, 0x31, 0x00, 0x3F, 0xCE, 0x00, 0x06, 0x85, 0x80, 0x06, 0x58, 0x00, 0x0A, 0x28, 0x00, 0x12, 0x7F, 0x00, 0x22, 0x11, 0x00, 0x06, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9728, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x02, 0x00, 0x2F, 0x92, 0x00, 0x20, 0x0A, 0x00, 0x2F, 0x8A, 0x00, 0x22, 0x02, 0x00, 0x4A, 0x82, 0x00, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x972A, { 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x5D, 0x7A, 0x00, 0x41, 0x02, 0x00, 0x1D, 0x78, 0x00, 0x00, 0x06, 0x00, 0x33, 0xFC, 0x00, 0x18, 0xA4, 0x00, 0x61, 0x12, 0x00, 0x31, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x1B, 0xFF, 0x00, 0x30, 0x20, 0x00, 0x61, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x972D, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x89, 0x00, 0x46, 0xB2, 0x00, 0x08, 0x88, 0x00, 0x11, 0xFC, 0x00, 0x09, 0x44, 0x00, 0x01, 0x24, 0x00, 0x79, 0xFC, 0x00, 0x08, 0x80, 0x00, 0x09, 0xFE, 0x00, 0x0E, 0x22, 0x00, 0x09, 0x52, 0x00, 0x0D, 0xFA, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9730, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x1F, 0x5E, 0x00, 0x0A, 0x1E, 0x00, 0x3F, 0x90, 0x00, 0x0A, 0x3F, 0x80, 0x3F, 0xA2, 0x00, 0x00, 0x62, 0x00, 0x1F, 0x94, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x0C, 0x00, 0x11, 0x12, 0x00, 0x1F, 0x21, 0x00, 0x13, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9731, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x41, 0x00, 0x04, 0x42, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x09, 0x00, 0x3B, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9732, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xD4, 0x00, 0x04, 0x0E, 0x00, 0x17, 0x31, 0x80, 0x14, 0x5F, 0x00, 0x17, 0x91, 0x00, 0x3C, 0x1F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9733, { 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x5C, 0x7A, 0x00, 0x00, 0x80, 0x00, 0x79, 0xFC, 0x00, 0x4B, 0x18, 0x00, 0x48, 0xF0, 0x00, 0x57, 0x6F, 0x00, 0x50, 0xA0, 0x00, 0x49, 0xFC, 0x00, 0x4A, 0x20, 0x00, 0x59, 0xFC, 0x00, 0x40, 0x20, 0x00, 0x43, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9738, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x00, 0x80, 0x00, 0x1E, 0xBE, 0x00, 0x11, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9739, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x2F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xBF, 0x80, 0x10, 0x8A, 0x00, 0x1F, 0x8A, 0x00, 0x10, 0x3F, 0x00, 0x1F, 0x84, 0x00, 0x18, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x2F, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x973D, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x2F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x01, 0x17, 0x00, 0x1F, 0xBC, 0x00, 0x09, 0x54, 0x00, 0x09, 0x5E, 0x00, 0x16, 0x71, 0x80, 0x28, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x973E, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x10, 0x00, 0x00, 0x34, 0xFE, 0x00, 0x68, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x68, 0x92, 0x00, 0x14, 0x92, 0x00, 0x6D, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x69, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9741, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xBE, 0x80, 0x40, 0x80, 0x80, 0x5C, 0x1E, 0x80, 0x07, 0xF0, 0x00, 0x04, 0x90, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x90, 0x00, 0x7F, 0xFF, 0x80, 0x49, 0x24, 0x80, 0x7F, 0x3F, 0x80, 0x49, 0x24, 0x80, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9742, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x27, 0x4E, 0x80, 0x07, 0x4E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x17, 0x9E, 0x80, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x10, 0x24, 0x00, 0x11, 0x3E, 0x00, 0x21, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9743, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x0E, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x12, 0x12, 0x00, 0x3F, 0xBF, 0x80, 0x64, 0x64, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x24, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x24, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9744, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x1F, 0x3F, 0x80, 0x00, 0x52, 0x80, 0x1F, 0xD2, 0x80, 0x11, 0x7E, 0x80, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9746, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x08, 0x9F, 0x00, 0x7F, 0x45, 0x00, 0x49, 0x9F, 0x80, 0x6D, 0x45, 0x00, 0x49, 0x1F, 0x00, 0x24, 0xC4, 0x00, 0x00, 0x54, 0x80, 0x3E, 0x4D, 0x00, 0x00, 0x46, 0x00, 0x7F, 0x55, 0x00, 0x10, 0x64, 0x80, 0x34, 0x4C, 0x00, 0x26, 0xA0, 0x00, 0x7A, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9748, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x2F, 0x5E, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xEF, 0x00, 0x12, 0xA9, 0x00, 0x1E, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9749, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7F, 0x3E, 0x00, 0x08, 0x48, 0x80, 0x7F, 0x25, 0x00, 0x49, 0x7F, 0x80, 0x6D, 0x48, 0x80, 0x49, 0x15, 0x00, 0x24, 0x52, 0x80, 0x00, 0x8E, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x1F, 0x00, 0x7F, 0x31, 0x00, 0x10, 0x5B, 0x00, 0x34, 0x0E, 0x00, 0x26, 0x1B, 0x00, 0x7A, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x974A, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x2E, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x24, 0x91, 0x00, 0x2E, 0xBD, 0x00, 0x24, 0x91, 0x00, 0x2E, 0xBD, 0x00, 0x24, 0x91, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x974E, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x1E, 0xBE, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x7F, 0x00, 0x36, 0x41, 0x00, 0x23, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x40, 0x00, 0x48, 0x7F, 0x80, 0x2A, 0x00, 0x80, 0x1E, 0xAA, 0x80, 0x70, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x974F, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x1E, 0x3E, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x51, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x64, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x00, 0x80, 0x24, 0xAA, 0x80, 0x3F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9751, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9752, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9753, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x7F, 0x7E, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x54, 0x00, 0x08, 0x54, 0x00, 0x7F, 0x54, 0x00, 0x00, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x22, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x29, 0x00, 0x22, 0x49, 0x00, 0x2A, 0x87, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9755, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x2E, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x49, 0x00, 0x28, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x7E, 0x41, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9756, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x25, 0xFF, 0x80, 0x24, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x10, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x30, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9757, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x6B, 0x00, 0x08, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x64, 0x80, 0x22, 0x44, 0x80, 0x26, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9758, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x66, 0x00, 0x3E, 0xC4, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x80, 0x22, 0x61, 0x80, 0x26, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9759, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1E, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x3F, 0x00, 0x08, 0x09, 0x00, 0x7F, 0x09, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x09, 0x00, 0x22, 0x09, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x26, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x975A, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x22, 0x34, 0x80, 0x22, 0x64, 0x80, 0x26, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x975B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x80, 0x3E, 0x40, 0x80, 0x08, 0x3F, 0x00, 0x7F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x27, 0x80, 0x2A, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x74, 0x00, 0x22, 0x5C, 0x00, 0x26, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x975C, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x04, 0x39, 0x00, 0x3F, 0xA4, 0x80, 0x04, 0x42, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x7F, 0x80, 0x15, 0x09, 0x00, 0x15, 0x09, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x13, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x975E, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x07, 0xDF, 0x80, 0x39, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9760, { 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x02, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x02, 0x20, 0x00, 0x7E, 0x3F, 0x80, 0x04, 0x20, 0x00, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9761, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x24, 0x00, 0x11, 0x04, 0x00, 0x10, 0x50, 0x00, 0x1F, 0xDF, 0x80, 0x10, 0x50, 0x00, 0x17, 0xDF, 0x00, 0x10, 0x50, 0x00, 0x2F, 0xDF, 0x80, 0x20, 0x90, 0x00, 0x27, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9762, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0xF1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9763, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9764, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x08, 0x3F, 0x00, 0x10, 0x61, 0x00, 0x7F, 0x41, 0x00, 0x55, 0x79, 0x00, 0x55, 0xE9, 0x00, 0x5D, 0x29, 0x00, 0x55, 0x29, 0x00, 0x55, 0x3B, 0x00, 0x5D, 0x22, 0x00, 0x55, 0x26, 0x00, 0x55, 0x20, 0x00, 0x55, 0x20, 0x80, 0x7F, 0x31, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9765, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x50, 0x00, 0x17, 0xFE, 0x00, 0x10, 0xA0, 0x00, 0x13, 0x18, 0x00, 0x1C, 0x07, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x14, 0x92, 0x00, 0x14, 0xF2, 0x00, 0x24, 0x92, 0x00, 0x24, 0xF2, 0x00, 0x44, 0x92, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9766, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xDF, 0x00, 0x04, 0x11, 0x00, 0x08, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2E, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2E, 0x9F, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x9A, 0x80, 0x3F, 0x92, 0x80, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9767, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x10, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x5D, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x5D, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x7F, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9768, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x8A, 0x00, 0x2F, 0x89, 0x00, 0x28, 0xBF, 0x80, 0x2F, 0x94, 0x00, 0x28, 0xB6, 0x00, 0x6F, 0xE3, 0x00, 0x48, 0x81, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x12, 0x00, 0x13, 0xF2, 0x00, 0x12, 0x12, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9769, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x976A, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3F, 0x80, 0x7F, 0xC4, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x976B, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3F, 0x80, 0x7F, 0xD0, 0x80, 0x11, 0x18, 0x80, 0x11, 0x15, 0x80, 0x1F, 0x11, 0x00, 0x04, 0x19, 0x00, 0x3F, 0x8B, 0x00, 0x24, 0x8A, 0x00, 0x24, 0x8E, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x0E, 0x00, 0x7F, 0xCA, 0x00, 0x04, 0x1B, 0x00, 0x04, 0x11, 0x00, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x976D, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x11, 0x04, 0x80, 0x1F, 0x04, 0x80, 0x15, 0x14, 0x80, 0x04, 0x14, 0x80, 0x3F, 0xA4, 0x80, 0x24, 0x84, 0x80, 0x24, 0x84, 0x80, 0x3F, 0x88, 0x80, 0x04, 0x08, 0x80, 0x04, 0x10, 0x80, 0x3F, 0x90, 0x80, 0x04, 0x21, 0x00, 0x04, 0xC6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x976E, { 0x00, 0x00, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x61, 0x00, 0x3E, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x7F, 0x01, 0x00, 0x49, 0x3D, 0x00, 0x49, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x08, 0x01, 0x00, 0x7F, 0x01, 0x00, 0x08, 0x03, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9771, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x3E, 0x09, 0x00, 0x08, 0x29, 0x00, 0x7F, 0x19, 0x00, 0x49, 0x09, 0x00, 0x49, 0x0D, 0x00, 0x7F, 0x1B, 0x00, 0x08, 0x11, 0x80, 0x7F, 0x11, 0x00, 0x08, 0x33, 0x00, 0x08, 0x62, 0x00, 0x08, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9773, { 0x00, 0x00, 0x00, 0x22, 0x03, 0x00, 0x22, 0x0E, 0x00, 0x7F, 0x78, 0x00, 0x22, 0x40, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x44, 0x00, 0x49, 0x44, 0x00, 0x49, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9774, { 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x14, 0x14, 0x00, 0x14, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x14, 0x64, 0x00, 0x1C, 0x65, 0x80, 0x08, 0xA6, 0x00, 0x3F, 0x24, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x24, 0x00, 0x08, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x08, 0x24, 0x80, 0x08, 0x27, 0x80, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9776, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x40, 0x00, 0x49, 0x40, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x40, 0x80, 0x08, 0x61, 0x80, 0x08, 0x3F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9777, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x80, 0x11, 0x7C, 0x80, 0x3F, 0x84, 0x80, 0x11, 0x04, 0x80, 0x1F, 0x04, 0x80, 0x15, 0x3C, 0x80, 0x04, 0x20, 0x80, 0x3F, 0xC0, 0x80, 0x24, 0xFC, 0x80, 0x24, 0x84, 0x80, 0x3F, 0x84, 0x80, 0x04, 0x04, 0x80, 0x04, 0x04, 0x80, 0x3F, 0x84, 0x80, 0x04, 0x04, 0x80, 0x04, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9778, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFE, 0x00, 0x7F, 0x22, 0x00, 0x22, 0x26, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x7F, 0x71, 0x00, 0x49, 0x53, 0x00, 0x49, 0x5A, 0x00, 0x7F, 0x4E, 0x00, 0x08, 0x44, 0x00, 0x7F, 0xCE, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x9B, 0x00, 0x08, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9779, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x5D, 0x00, 0x49, 0x55, 0x00, 0x49, 0x55, 0x00, 0x7F, 0x63, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x977A, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x11, 0x7F, 0x80, 0x1F, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x24, 0x8E, 0x00, 0x3F, 0x96, 0x00, 0x04, 0x15, 0x00, 0x3F, 0xA5, 0x00, 0x04, 0x44, 0x80, 0x04, 0x84, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x977B, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x977C, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x49, 0x22, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x977D, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x2A, 0x00, 0x7F, 0x6B, 0x00, 0x22, 0x49, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x977F, { 0x00, 0x00, 0x00, 0x28, 0x84, 0x00, 0x28, 0x84, 0x00, 0x7D, 0x84, 0x00, 0x29, 0x04, 0x00, 0x2B, 0x1F, 0x80, 0x3A, 0x44, 0x80, 0x13, 0x44, 0x80, 0x7D, 0xC4, 0x80, 0x54, 0x84, 0x80, 0x54, 0x84, 0x80, 0x7D, 0x8C, 0x80, 0x11, 0x28, 0x80, 0x7D, 0x29, 0x80, 0x13, 0xF9, 0x00, 0x16, 0x11, 0x00, 0x10, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9780, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x7F, 0x11, 0x00, 0x22, 0x11, 0x00, 0x22, 0x31, 0x00, 0x3E, 0x23, 0x00, 0x08, 0x62, 0x00, 0x7F, 0xCE, 0x00, 0x49, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9781, { 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x80, 0x3C, 0x89, 0x00, 0x10, 0x88, 0x00, 0x7E, 0xFF, 0x00, 0x52, 0xA1, 0x00, 0x52, 0xA3, 0x00, 0x7E, 0xB2, 0x00, 0x10, 0x96, 0x00, 0x7E, 0x8C, 0x00, 0x10, 0x9A, 0x00, 0x11, 0x33, 0x00, 0x10, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9784, { 0x00, 0x00, 0x00, 0x22, 0x20, 0x00, 0x22, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0xF9, 0x00, 0x08, 0x09, 0x00, 0x7F, 0x09, 0x00, 0x49, 0x79, 0x00, 0x49, 0x43, 0x00, 0x7F, 0x42, 0x00, 0x08, 0x4E, 0x00, 0x7F, 0x40, 0x00, 0x08, 0x40, 0x80, 0x08, 0x61, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9785, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x49, 0xFF, 0x80, 0x49, 0x14, 0x00, 0x7F, 0x14, 0x00, 0x08, 0x14, 0x00, 0x7F, 0x36, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9786, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x49, 0x5D, 0x00, 0x49, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x08, 0x63, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9789, { 0x00, 0x00, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x14, 0x24, 0x80, 0x15, 0xA5, 0x80, 0x1C, 0xE7, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x27, 0x00, 0x2A, 0xE5, 0x80, 0x3F, 0xA4, 0x80, 0x08, 0x24, 0x00, 0x7F, 0x64, 0x00, 0x08, 0x44, 0x80, 0x08, 0xC4, 0x80, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x978B, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x15, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x978D, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x40, 0x80, 0x1F, 0x08, 0x00, 0x15, 0x08, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x91, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xB2, 0x00, 0x04, 0x4C, 0x00, 0x04, 0x0C, 0x00, 0x3F, 0x92, 0x00, 0x04, 0x21, 0x00, 0x04, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x978F, { 0x00, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x08, 0x44, 0x00, 0x08, 0x64, 0x80, 0x0F, 0x57, 0x80, 0x38, 0x80, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9790, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x22, 0x0F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x7F, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x0E, 0x00, 0x7F, 0x0B, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9791, { 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x14, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x14, 0x88, 0x00, 0x1C, 0xBE, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x94, 0x00, 0x3E, 0x94, 0x00, 0x08, 0x92, 0x00, 0x7E, 0xA2, 0x00, 0x08, 0x80, 0x00, 0x09, 0x43, 0x00, 0x0A, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9792, { 0x00, 0x00, 0x00, 0x14, 0x0E, 0x00, 0x14, 0xF0, 0x00, 0x7F, 0x10, 0x00, 0x14, 0x12, 0x00, 0x1D, 0xFF, 0x00, 0x08, 0x28, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x83, 0x00, 0x2B, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9794, { 0x00, 0x00, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x00, 0x7F, 0x3C, 0x00, 0x14, 0x48, 0x00, 0x1C, 0x92, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x08, 0x28, 0x00, 0x7F, 0x28, 0x00, 0x08, 0x48, 0x00, 0x08, 0x49, 0x00, 0x08, 0x89, 0x00, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9795, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x49, 0x49, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x28, 0x00, 0x7F, 0x18, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9796, { 0x00, 0x00, 0x00, 0x22, 0x03, 0x00, 0x22, 0x0E, 0x00, 0x7F, 0x78, 0x00, 0x22, 0x09, 0x00, 0x22, 0x2D, 0x80, 0x3E, 0x64, 0x80, 0x08, 0x48, 0x80, 0x7F, 0x08, 0x00, 0x49, 0x7F, 0x80, 0x49, 0x12, 0x00, 0x7F, 0x32, 0x00, 0x08, 0x26, 0x00, 0x7F, 0x74, 0x00, 0x08, 0x1E, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9797, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0xFF, 0x80, 0x0D, 0xA2, 0x00, 0x08, 0x3C, 0x00, 0x1B, 0xC3, 0x80, 0x14, 0x44, 0x00, 0x35, 0xFF, 0x00, 0x54, 0x44, 0x00, 0x14, 0x7C, 0x00, 0x14, 0x10, 0x00, 0x15, 0xFF, 0x00, 0x15, 0x11, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9798, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x49, 0x00, 0x7F, 0x6B, 0x00, 0x22, 0x2A, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9799, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x979A, { 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x3C, 0x64, 0x00, 0x10, 0xC7, 0x80, 0x7E, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52, 0x7F, 0x00, 0x7E, 0x08, 0x00, 0x10, 0x08, 0x00, 0x7E, 0x08, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x979C, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x09, 0x00, 0x7F, 0x6B, 0x00, 0x22, 0x2C, 0x00, 0x22, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x7F, 0x18, 0x00, 0x49, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x979E, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x14, 0x00, 0x7F, 0x24, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x979F, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x22, 0x00, 0x00, 0x22, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x3E, 0x00, 0x7F, 0x00, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x06, 0x00, 0x7F, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97A0, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x3F, 0xA0, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x48, 0x80, 0x04, 0xA9, 0x80, 0x3F, 0x9A, 0x80, 0x24, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x3F, 0x9C, 0x80, 0x04, 0x1C, 0x80, 0x04, 0x2A, 0x80, 0x3F, 0xAA, 0x80, 0x04, 0x49, 0x80, 0x04, 0x89, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97A2, { 0x00, 0x00, 0x00, 0x14, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x2A, 0x00, 0x14, 0x2A, 0x00, 0x1C, 0x2E, 0x00, 0x08, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x7F, 0x6B, 0x00, 0x08, 0x49, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97A3, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x22, 0x00, 0x14, 0x14, 0x00, 0x14, 0xFF, 0x80, 0x1C, 0x29, 0x00, 0x08, 0x6A, 0x00, 0x3E, 0xC8, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x08, 0x6B, 0x00, 0x08, 0xC9, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97A6, { 0x00, 0x00, 0x00, 0x14, 0x32, 0x00, 0x14, 0xE2, 0x00, 0x7F, 0x42, 0x00, 0x14, 0x4A, 0x80, 0x14, 0x4A, 0x80, 0x1D, 0xFA, 0x80, 0x08, 0x4A, 0x80, 0x3E, 0x42, 0x00, 0x2A, 0xE2, 0x00, 0x2B, 0x52, 0x00, 0x3E, 0x47, 0x00, 0x08, 0x45, 0x00, 0x7F, 0x45, 0x00, 0x08, 0x45, 0x00, 0x08, 0x4D, 0x80, 0x08, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97A8, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x90, 0x00, 0x24, 0xBF, 0x80, 0x24, 0xE4, 0x80, 0x3F, 0xAA, 0x80, 0x04, 0x31, 0x80, 0x04, 0x20, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x20, 0x80, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97AB, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x3F, 0xA0, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x40, 0x80, 0x04, 0xBE, 0x80, 0x3F, 0x80, 0x80, 0x24, 0xBE, 0x80, 0x24, 0x80, 0x80, 0x3F, 0xFF, 0x80, 0x04, 0x00, 0x80, 0x04, 0x3E, 0x80, 0x3F, 0xA2, 0x80, 0x04, 0x3E, 0x80, 0x04, 0x01, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97AC, { 0x00, 0x00, 0x00, 0x28, 0x04, 0x00, 0x29, 0xDF, 0x00, 0x7C, 0x45, 0x00, 0x28, 0x85, 0x00, 0x29, 0x3F, 0x80, 0x39, 0xC5, 0x00, 0x10, 0x45, 0x00, 0x7C, 0x5F, 0x00, 0x55, 0x44, 0x00, 0x55, 0x5F, 0x00, 0x7D, 0xC4, 0x00, 0x10, 0xBF, 0x80, 0x7C, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x40, 0x00, 0x11, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97AD, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x3F, 0xBF, 0x80, 0x11, 0x22, 0x00, 0x1F, 0x6F, 0x80, 0x15, 0xAA, 0x80, 0x04, 0x2F, 0x80, 0x3F, 0xAA, 0x80, 0x24, 0xAF, 0x80, 0x3F, 0xA2, 0x00, 0x04, 0x2A, 0x00, 0x04, 0x26, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x25, 0x00, 0x04, 0x28, 0x80, 0x04, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97AE, { 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x7E, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x3C, 0x41, 0x00, 0x10, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x08, 0x00, 0x7E, 0x48, 0x00, 0x10, 0x4F, 0x00, 0x7E, 0x48, 0x00, 0x10, 0xE8, 0x00, 0x11, 0xB8, 0x00, 0x13, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97AF, { 0x00, 0x00, 0x00, 0x14, 0x48, 0x00, 0x14, 0x48, 0x00, 0x7F, 0xFE, 0x00, 0x14, 0x48, 0x00, 0x1C, 0x22, 0x00, 0x09, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x84, 0x00, 0x3F, 0x88, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0xA8, 0x00, 0x08, 0x90, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97B1, { 0x00, 0x00, 0x00, 0x22, 0x01, 0x80, 0x22, 0x0F, 0x00, 0x7F, 0x78, 0x00, 0x22, 0x09, 0x00, 0x22, 0x2D, 0x80, 0x3E, 0x64, 0x80, 0x08, 0x40, 0x00, 0x7F, 0x18, 0x00, 0x49, 0x73, 0x80, 0x49, 0x40, 0x80, 0x7F, 0x40, 0x80, 0x08, 0x73, 0x80, 0x7F, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x40, 0x80, 0x08, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97B2, { 0x00, 0x00, 0x00, 0x28, 0x24, 0x00, 0x28, 0x24, 0x00, 0x7D, 0xFF, 0x80, 0x28, 0x24, 0x00, 0x28, 0xFF, 0x00, 0x38, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x7C, 0x10, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x91, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x91, 0x00, 0x7D, 0xFF, 0x80, 0x10, 0x81, 0x00, 0x10, 0x81, 0x00, 0x10, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97B3, { 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x14, 0x08, 0x00, 0x1C, 0x1C, 0x00, 0x08, 0x36, 0x00, 0x3E, 0xE3, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97B4, { 0x00, 0x00, 0x00, 0x14, 0x24, 0x00, 0x14, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x14, 0x24, 0x00, 0x14, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x3E, 0xBF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x08, 0xA9, 0x00, 0x7F, 0xBF, 0x00, 0x08, 0xA9, 0x00, 0x09, 0x29, 0x00, 0x08, 0x2B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97B5, { 0x00, 0x00, 0x00, 0x24, 0x03, 0x00, 0x24, 0x0E, 0x00, 0x7E, 0x79, 0x00, 0x24, 0x4D, 0x80, 0x24, 0xC4, 0x80, 0x3C, 0x90, 0x00, 0x10, 0x24, 0x00, 0x7E, 0x48, 0x00, 0x52, 0x32, 0x00, 0x52, 0x1F, 0x00, 0x7E, 0xF1, 0x80, 0x10, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x10, 0x14, 0x00, 0x10, 0x22, 0x00, 0x10, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97B6, { 0x00, 0x00, 0x00, 0x04, 0x3E, 0x00, 0x1F, 0x23, 0x80, 0x15, 0x40, 0x00, 0x7F, 0xBF, 0x00, 0x11, 0x11, 0x00, 0x35, 0x0E, 0x00, 0x61, 0x31, 0x80, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97B8, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x2A, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97B9, { 0x00, 0x00, 0x00, 0x28, 0x40, 0x00, 0x28, 0x47, 0x80, 0x7F, 0xFC, 0x80, 0x28, 0x04, 0x80, 0x29, 0xF5, 0x80, 0x39, 0x15, 0x00, 0x11, 0xF5, 0x00, 0x7C, 0x05, 0x00, 0x55, 0xF4, 0x80, 0x54, 0x24, 0x80, 0x7C, 0x44, 0x80, 0x10, 0x74, 0x80, 0x7D, 0xC4, 0x80, 0x10, 0x45, 0x80, 0x10, 0x44, 0x00, 0x11, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97BA, { 0x00, 0x00, 0x00, 0x14, 0x49, 0x00, 0x14, 0x6B, 0x00, 0x7F, 0x2A, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x1C, 0x80, 0x80, 0x08, 0xBE, 0x80, 0x3E, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x3E, 0x00, 0x3E, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97BC, { 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97BE, { 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x24, 0x14, 0x00, 0x7E, 0xFF, 0x80, 0x24, 0x14, 0x00, 0x24, 0x00, 0x00, 0x3C, 0x7F, 0x00, 0x10, 0x2A, 0x00, 0x7E, 0x2A, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x2A, 0x00, 0x7E, 0x2A, 0x00, 0x10, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x10, 0x08, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97BF, { 0x00, 0x00, 0x00, 0x24, 0x49, 0x00, 0x24, 0xCB, 0x00, 0x7E, 0x8A, 0x00, 0x24, 0xAA, 0x80, 0x24, 0x49, 0x00, 0x3C, 0x8A, 0x00, 0x10, 0xAA, 0x80, 0x7E, 0xEB, 0x80, 0x52, 0x09, 0x00, 0x52, 0xFF, 0x80, 0x7E, 0x88, 0x00, 0x10, 0x89, 0x00, 0x7E, 0xCA, 0x00, 0x10, 0xA4, 0x80, 0x10, 0x8A, 0x80, 0x11, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97C1, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97C3, { 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x3B, 0x41, 0x00, 0x11, 0x22, 0x00, 0x7C, 0x7F, 0x00, 0x57, 0x08, 0x00, 0x55, 0x7F, 0x00, 0x7D, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x7D, 0x08, 0x00, 0x11, 0x08, 0x00, 0x13, 0x80, 0x00, 0x12, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97C4, { 0x00, 0x00, 0x00, 0x28, 0x24, 0x00, 0x29, 0xFF, 0x80, 0x7C, 0x24, 0x00, 0x28, 0x48, 0x00, 0x28, 0xFF, 0x80, 0x39, 0x88, 0x00, 0x10, 0xFF, 0x00, 0x7C, 0x88, 0x00, 0x54, 0xFF, 0x00, 0x54, 0x88, 0x00, 0x7C, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x7D, 0xFF, 0x00, 0x10, 0x42, 0x00, 0x10, 0x3C, 0x00, 0x11, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97C5, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xCC, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x22, 0x00, 0x3E, 0x54, 0x80, 0x08, 0xF7, 0x80, 0x7F, 0x00, 0x00, 0x08, 0x55, 0x00, 0x08, 0xD5, 0x80, 0x08, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97C6, { 0x00, 0x00, 0x00, 0x15, 0x7F, 0x80, 0x14, 0x94, 0x00, 0x3E, 0x7F, 0x80, 0x14, 0x54, 0x80, 0x1C, 0x7F, 0x80, 0x09, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x14, 0x00, 0x2A, 0xE3, 0x80, 0x3E, 0x1E, 0x00, 0x09, 0xD2, 0x00, 0x08, 0x5E, 0x80, 0x3E, 0x5F, 0x80, 0x08, 0x40, 0x00, 0x08, 0xBF, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97C7, { 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x08, 0xA4, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97C8, { 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x7E, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x14, 0x7F, 0x00, 0x1C, 0x55, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x02, 0x00, 0x2A, 0x05, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0x44, 0x00, 0x08, 0x65, 0x00, 0x7F, 0x57, 0x00, 0x08, 0x42, 0x80, 0x08, 0xCF, 0x80, 0x08, 0x99, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97C9, { 0x00, 0x00, 0x00, 0x28, 0x42, 0x00, 0x29, 0xFF, 0x80, 0x7C, 0x42, 0x00, 0x28, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x39, 0x24, 0x00, 0x11, 0xFF, 0x00, 0x7D, 0x25, 0x00, 0x55, 0xFF, 0x00, 0x55, 0x40, 0x00, 0x7D, 0x7F, 0x80, 0x11, 0x40, 0x00, 0x7D, 0x7F, 0x80, 0x11, 0x00, 0x80, 0x12, 0x54, 0x80, 0x10, 0x95, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97CA, { 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x14, 0xFF, 0x80, 0x7F, 0x22, 0x00, 0x14, 0xF7, 0x80, 0x14, 0x94, 0x80, 0x1C, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x3E, 0xF7, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x3E, 0xAA, 0x80, 0x08, 0xBE, 0x80, 0x7F, 0xAA, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x9C, 0x80, 0x08, 0xAB, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97CB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97CC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x3F, 0x80, 0x11, 0x04, 0x80, 0x11, 0x04, 0x80, 0x7F, 0x84, 0x80, 0x00, 0x14, 0x80, 0x3F, 0x14, 0x80, 0x21, 0x14, 0x80, 0x3F, 0x34, 0x80, 0x02, 0x24, 0x80, 0x3F, 0x84, 0x80, 0x22, 0x0C, 0x80, 0x22, 0x09, 0x80, 0x7F, 0x89, 0x00, 0x02, 0x19, 0x00, 0x02, 0x37, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97CD, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x13, 0x00, 0x12, 0x11, 0x00, 0x12, 0xFF, 0x80, 0x7F, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x39, 0x00, 0x3E, 0x2B, 0x00, 0x04, 0x6A, 0x00, 0x3F, 0x4E, 0x00, 0x24, 0xC4, 0x00, 0x24, 0x0E, 0x00, 0x7F, 0x1A, 0x00, 0x04, 0x33, 0x00, 0x04, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97CE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x12, 0x08, 0x00, 0x12, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0x2A, 0x00, 0x24, 0x6B, 0x00, 0x24, 0x49, 0x00, 0x7F, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97D0, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x12, 0x14, 0x00, 0x12, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x3E, 0x00, 0x24, 0x22, 0x00, 0x24, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97D1, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7E, 0x00, 0x4A, 0x22, 0x00, 0x6A, 0x22, 0x00, 0x2A, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x08, 0x00, 0x14, 0x7E, 0x00, 0x14, 0x48, 0x00, 0x15, 0xFF, 0x00, 0x34, 0x08, 0x80, 0x26, 0x08, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97D3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x12, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x04, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x24, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97D4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x3F, 0x00, 0x12, 0x20, 0x00, 0x12, 0x3E, 0x00, 0x7F, 0x20, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x3E, 0xFF, 0x80, 0x04, 0x29, 0x00, 0x3F, 0x2B, 0x00, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x00, 0x7F, 0x26, 0x00, 0x04, 0x3B, 0x00, 0x04, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97D7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x12, 0x80, 0x80, 0x12, 0x88, 0x80, 0x7F, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97D8, { 0x00, 0x00, 0x00, 0x08, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x4A, 0x00, 0x7F, 0x4A, 0x00, 0x00, 0x4E, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x3F, 0x2A, 0x00, 0x24, 0x2A, 0x00, 0x24, 0x6B, 0x00, 0x7F, 0x49, 0x00, 0x04, 0xC9, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97D9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x21, 0x7F, 0x80, 0x21, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x7F, 0xBF, 0x00, 0x04, 0x04, 0x00, 0x24, 0x3F, 0x00, 0x27, 0xA4, 0x00, 0x24, 0x7F, 0x80, 0x34, 0x04, 0x00, 0x6C, 0x04, 0x00, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97DB, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x80, 0x00, 0x22, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x04, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x24, 0xA9, 0x00, 0x24, 0xBF, 0x00, 0x7F, 0xA9, 0x00, 0x04, 0xA9, 0x00, 0x05, 0x2B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97DC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x07, 0x00, 0x1E, 0x39, 0x00, 0x0A, 0x24, 0x80, 0x0A, 0x42, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x18, 0x00, 0x12, 0x63, 0x80, 0x1E, 0x40, 0x80, 0x00, 0x40, 0x80, 0x3F, 0x73, 0x80, 0x12, 0x40, 0x80, 0x3F, 0xC0, 0x80, 0x02, 0x7F, 0x80, 0x02, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97DD, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x12, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x3E, 0xFF, 0x80, 0x24, 0x49, 0x00, 0x24, 0xFF, 0x80, 0x7F, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97DE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x00, 0x36, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x55, 0x00, 0x24, 0x55, 0x00, 0x24, 0x55, 0x00, 0x7F, 0x55, 0x00, 0x04, 0x55, 0x00, 0x04, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97E0, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x12, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x2A, 0x00, 0x3E, 0xFF, 0x80, 0x04, 0x2A, 0x00, 0x3F, 0x2A, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97E1, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x3E, 0x14, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x3E, 0xFF, 0x80, 0x04, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7E, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97E4, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x02, 0x00, 0x3E, 0x05, 0x00, 0x04, 0x7F, 0x80, 0x3E, 0x44, 0x00, 0x24, 0x65, 0x00, 0x24, 0x57, 0x00, 0x7F, 0x42, 0x80, 0x04, 0xCF, 0x80, 0x04, 0x99, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97E6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x94, 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97E7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x7F, 0x12, 0x00, 0x08, 0x12, 0x00, 0x08, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x92, 0x00, 0x7F, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x22, 0x00, 0x0D, 0x22, 0x00, 0x0A, 0x42, 0x00, 0x08, 0x4A, 0x00, 0x09, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97E9, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x10, 0x00, 0x7F, 0x92, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x94, 0x00, 0x20, 0xFE, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x11, 0x00, 0x04, 0x91, 0x00, 0x7F, 0xD5, 0x00, 0x04, 0x12, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97EA, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x7E, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x10, 0x00, 0x7F, 0x92, 0x00, 0x04, 0xFF, 0x00, 0x14, 0x12, 0x00, 0x17, 0x92, 0x00, 0x14, 0x1A, 0x00, 0x1C, 0x14, 0x00, 0x24, 0x10, 0x00, 0x42, 0x13, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97EB, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x7D, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x7D, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x7D, 0xFC, 0x00, 0x15, 0x54, 0x00, 0x15, 0x54, 0x00, 0x1D, 0x54, 0x00, 0x11, 0x54, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97EC, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x1E, 0x00, 0x13, 0xE0, 0x00, 0x7D, 0x24, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA8, 0x00, 0x7C, 0x42, 0x00, 0x11, 0x9F, 0x00, 0x11, 0x02, 0x00, 0x7D, 0x02, 0x00, 0x15, 0xDE, 0x00, 0x15, 0x02, 0x00, 0x1D, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97ED, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x1E, 0x1E, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x1E, 0x1E, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97EE, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3E, 0x1F, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97EF, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x93, 0x00, 0x04, 0x11, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x39, 0xC9, 0x00, 0x09, 0x0B, 0x00, 0x39, 0xCA, 0x00, 0x09, 0x0E, 0x00, 0x39, 0xC4, 0x00, 0x09, 0x0E, 0x80, 0x0F, 0xDA, 0x80, 0x78, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97F1, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x31, 0x8A, 0x00, 0x29, 0x6B, 0x00, 0x6B, 0x29, 0x00, 0x00, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x39, 0xC9, 0x00, 0x09, 0x0B, 0x00, 0x39, 0xCA, 0x00, 0x09, 0x0E, 0x00, 0x39, 0xC4, 0x00, 0x09, 0x0E, 0x80, 0x0F, 0xDA, 0x80, 0x78, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97F2, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3D, 0x5F, 0x00, 0x14, 0x92, 0x00, 0x34, 0x93, 0x00, 0x6C, 0x19, 0x80, 0x01, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x20, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97F3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97F4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x22, 0x08, 0x00, 0x36, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97F5, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x21, 0x3F, 0x80, 0x33, 0x20, 0x80, 0x12, 0x60, 0x80, 0x7F, 0x9C, 0x80, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x80, 0x21, 0x0C, 0x80, 0x21, 0x18, 0x80, 0x3F, 0x30, 0x80, 0x21, 0x01, 0x80, 0x21, 0x01, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97F6, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x88, 0x80, 0x11, 0x08, 0x80, 0x09, 0x10, 0x80, 0x0A, 0x10, 0x80, 0x3F, 0xA1, 0x00, 0x00, 0x46, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x80, 0x11, 0x20, 0x80, 0x1F, 0x20, 0x80, 0x11, 0x20, 0x80, 0x11, 0x3F, 0x80, 0x1F, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97F7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x49, 0x00, 0x22, 0x49, 0x00, 0x36, 0x49, 0x00, 0x14, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97F8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x7F, 0x31, 0x00, 0x22, 0x63, 0x00, 0x36, 0xD6, 0x00, 0x14, 0x1C, 0x00, 0x7F, 0x36, 0x00, 0x00, 0xE3, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x97FA, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x7F, 0x80, 0x22, 0x22, 0x00, 0x36, 0x22, 0x00, 0x14, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x14, 0x00, 0x22, 0x14, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97FB, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x0A, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x80, 0x1F, 0x7F, 0x80, 0x11, 0x40, 0x80, 0x11, 0x7F, 0x80, 0x1F, 0x40, 0x80, 0x11, 0x7F, 0x80, 0x11, 0x00, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x97FF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xF7, 0x80, 0x33, 0x14, 0x80, 0x0D, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x33, 0xF4, 0x80, 0x0D, 0x04, 0x80, 0x09, 0xF5, 0x80, 0x31, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9800, { 0x00, 0x00, 0x00, 0x04, 0x22, 0x00, 0x04, 0xFF, 0x80, 0x3F, 0xA2, 0x00, 0x11, 0x24, 0x00, 0x0A, 0x7F, 0x80, 0x0A, 0x48, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x48, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x48, 0x00, 0x11, 0x7F, 0x80, 0x1F, 0x40, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x1C, 0x00, 0x11, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9801, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9802, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x04, 0x41, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0C, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9803, { 0x00, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x10, 0x00, 0x20, 0x7F, 0x00, 0x27, 0x41, 0x00, 0x38, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x20, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9805, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0E, 0x7F, 0x00, 0x38, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9806, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x10, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x25, 0x22, 0x00, 0x21, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9807, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x22, 0x00, 0x08, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9808, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x20, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x04, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x20, 0x81, 0x00, 0x02, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x08, 0x81, 0x00, 0x10, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x980A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x30, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x980C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x7F, 0x80, 0x01, 0x04, 0x00, 0x09, 0x08, 0x00, 0x08, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x10, 0x61, 0x00, 0x24, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x10, 0xA1, 0x00, 0x11, 0xE1, 0x00, 0x2E, 0x7F, 0x00, 0x30, 0x21, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x980D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x01, 0x7F, 0x00, 0x03, 0x41, 0x00, 0x32, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x0B, 0x7F, 0x00, 0x19, 0x22, 0x00, 0x30, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x980E, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0E, 0xFF, 0x80, 0x38, 0x08, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x64, 0x22, 0x00, 0x44, 0x63, 0x00, 0x04, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x980F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x7F, 0xBF, 0x00, 0x00, 0x21, 0x00, 0x1E, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0xA1, 0x00, 0x32, 0xBF, 0x00, 0x21, 0x92, 0x00, 0x60, 0x33, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9810, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x01, 0x04, 0x00, 0x12, 0x08, 0x00, 0x0C, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x05, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x0C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9811, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x11, 0xE1, 0x00, 0x17, 0x3F, 0x00, 0x10, 0x21, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9812, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7F, 0x80, 0x01, 0x08, 0x00, 0x08, 0x90, 0x00, 0x10, 0x7F, 0x00, 0x20, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x10, 0xBF, 0x00, 0x11, 0x21, 0x00, 0x26, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9813, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x04, 0x00, 0x07, 0xC8, 0x00, 0x3C, 0x1F, 0x00, 0x04, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x04, 0x11, 0x00, 0x04, 0x51, 0x00, 0x04, 0x5F, 0x00, 0x07, 0xD1, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9814, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9816, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x7F, 0x80, 0x6B, 0x08, 0x00, 0x49, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x7F, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x12, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9817, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x3F, 0x80, 0x1F, 0xC4, 0x00, 0x12, 0x48, 0x00, 0x12, 0x9F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x1F, 0xDF, 0x00, 0x18, 0x91, 0x00, 0x14, 0x91, 0x00, 0x13, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x12, 0x91, 0x00, 0x12, 0x9F, 0x00, 0x24, 0x11, 0x00, 0x28, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9818, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x20, 0x10, 0x00, 0x1F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x41, 0x00, 0x16, 0x7F, 0x00, 0x10, 0x22, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9819, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x28, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2E, 0x7F, 0x00, 0x38, 0x22, 0x00, 0x60, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x981A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x36, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x36, 0x41, 0x00, 0x63, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0F, 0x22, 0x00, 0x78, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x981C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x36, 0x7F, 0x00, 0x63, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x981E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x41, 0x7F, 0x00, 0x51, 0x41, 0x00, 0x10, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x32, 0x41, 0x00, 0x26, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x74, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x22, 0x00, 0x32, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9820, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x32, 0x08, 0x00, 0x24, 0x3F, 0x00, 0x7F, 0xA1, 0x00, 0x20, 0x21, 0x00, 0x20, 0x3F, 0x00, 0x2F, 0x21, 0x00, 0x29, 0x21, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x2B, 0x21, 0x00, 0x28, 0x3F, 0x00, 0x28, 0x92, 0x00, 0x4C, 0xB3, 0x00, 0x07, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9821, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x22, 0x12, 0x00, 0x3E, 0x33, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9823, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x48, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x7E, 0x42, 0x00, 0x42, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x48, 0x42, 0x00, 0x48, 0x42, 0x00, 0x48, 0x7E, 0x00, 0x48, 0x24, 0x00, 0x7E, 0x66, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9824, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x44, 0x08, 0x00, 0x44, 0x3E, 0x00, 0x54, 0x22, 0x00, 0x57, 0x22, 0x00, 0x51, 0x3E, 0x00, 0x51, 0x22, 0x00, 0x51, 0x22, 0x00, 0x57, 0x3E, 0x00, 0x54, 0x22, 0x00, 0x44, 0x22, 0x00, 0x44, 0x3E, 0x00, 0x7F, 0x14, 0x00, 0x00, 0x36, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9825, { 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x5F, 0x7F, 0x00, 0x54, 0x08, 0x00, 0x54, 0x3E, 0x00, 0x54, 0x22, 0x00, 0x5F, 0x22, 0x00, 0x51, 0x3E, 0x00, 0x51, 0x22, 0x00, 0x51, 0x22, 0x00, 0x5F, 0x3E, 0x00, 0x54, 0x22, 0x00, 0x54, 0x22, 0x00, 0x54, 0x3E, 0x00, 0x54, 0x14, 0x00, 0x5F, 0x36, 0x00, 0x40, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9826, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x7F, 0xBF, 0x00, 0x08, 0x21, 0x00, 0x18, 0x21, 0x00, 0x32, 0x3F, 0x00, 0x16, 0x21, 0x00, 0x0C, 0x21, 0x00, 0x19, 0x3F, 0x00, 0x33, 0x21, 0x00, 0x66, 0x21, 0x00, 0x0C, 0x3F, 0x00, 0x1A, 0x12, 0x00, 0x33, 0x33, 0x00, 0x61, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x982B, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x04, 0x00, 0x6A, 0xDF, 0x00, 0x3B, 0x91, 0x00, 0x0A, 0x11, 0x00, 0x0A, 0x1F, 0x00, 0x0A, 0x11, 0x00, 0x0B, 0x91, 0x00, 0x3A, 0xDF, 0x00, 0x6A, 0x51, 0x00, 0x0A, 0x11, 0x00, 0x1A, 0x5F, 0x00, 0x12, 0x4A, 0x00, 0x31, 0xDB, 0x00, 0x60, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x982C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x36, 0x22, 0x00, 0x23, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x982D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x17, 0xA1, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x982E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xBF, 0x80, 0x75, 0x84, 0x00, 0x15, 0x1F, 0x00, 0x16, 0x11, 0x00, 0x35, 0x11, 0x00, 0x64, 0xDF, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x11, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x0A, 0x00, 0x31, 0x1B, 0x00, 0x61, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x982F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x18, 0x88, 0x00, 0x35, 0xBF, 0x00, 0x6B, 0x21, 0x00, 0x06, 0x21, 0x00, 0x1C, 0x3F, 0x00, 0x70, 0x21, 0x00, 0x00, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x7F, 0xA1, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x32, 0x33, 0x00, 0x62, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9830, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3F, 0x00, 0x15, 0x21, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x2E, 0xA1, 0x00, 0x24, 0x61, 0x00, 0x04, 0x3F, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x10, 0x92, 0x00, 0x20, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9832, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x71, 0xBF, 0x80, 0x17, 0x04, 0x00, 0x21, 0x1F, 0x00, 0x41, 0x11, 0x00, 0x71, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x51, 0x1F, 0x00, 0x51, 0x11, 0x00, 0x71, 0x11, 0x00, 0x27, 0xDF, 0x00, 0x70, 0x0A, 0x00, 0x5C, 0x1B, 0x00, 0x47, 0xD1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9833, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x08, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x7F, 0xBF, 0x00, 0x0A, 0x21, 0x00, 0x2B, 0x21, 0x00, 0x2A, 0xBF, 0x00, 0x6A, 0x21, 0x00, 0x4A, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x1A, 0x12, 0x00, 0x12, 0x33, 0x00, 0x36, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9834, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x23, 0x7F, 0x80, 0x3E, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x20, 0xA1, 0x00, 0x1F, 0xA1, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0x21, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x21, 0x00, 0x15, 0x21, 0x00, 0x35, 0xBF, 0x00, 0x24, 0x92, 0x00, 0x64, 0x33, 0x00, 0x0C, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9835, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x09, 0x08, 0x00, 0x09, 0x3F, 0x00, 0x7F, 0xA1, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x51, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x12, 0x00, 0x11, 0x33, 0x00, 0x1F, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9837, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x7F, 0x80, 0x1B, 0x08, 0x00, 0x31, 0xBF, 0x00, 0x6E, 0x21, 0x00, 0x00, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x21, 0x00, 0x02, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x3F, 0x00, 0x21, 0x12, 0x00, 0x3F, 0x33, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9838, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x0A, 0x88, 0x00, 0x15, 0x3F, 0x00, 0x2A, 0x21, 0x00, 0x15, 0x21, 0x00, 0x0A, 0xBF, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xD1, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9839, { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x3F, 0x80, 0x04, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x0E, 0x1F, 0x00, 0x15, 0x11, 0x00, 0x14, 0xD1, 0x00, 0x24, 0x1F, 0x00, 0x00, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0x1F, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xDF, 0x00, 0x16, 0x11, 0x00, 0x10, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x983B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x04, 0x04, 0x00, 0x14, 0x08, 0x00, 0x17, 0xBF, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x21, 0x00, 0x14, 0x21, 0x00, 0x14, 0xBF, 0x00, 0x2D, 0x21, 0x00, 0x22, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x30, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x983C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x1A, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x28, 0x22, 0x00, 0x48, 0x63, 0x00, 0x08, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x983D, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x7F, 0x80, 0x3C, 0x08, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0xE1, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x35, 0xA1, 0x00, 0x64, 0xE1, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0xBF, 0x00, 0x33, 0x12, 0x00, 0x22, 0x33, 0x00, 0x60, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x983E, { 0x00, 0x00, 0x00, 0x02, 0xFF, 0x80, 0x06, 0x08, 0x00, 0x0C, 0x7F, 0x00, 0x39, 0x41, 0x00, 0x03, 0x7F, 0x00, 0x0E, 0x41, 0x00, 0x79, 0x7F, 0x00, 0x03, 0x41, 0x00, 0x0E, 0x7F, 0x00, 0x78, 0x22, 0x00, 0x00, 0xC1, 0x80, 0x08, 0x20, 0x00, 0x0F, 0xBE, 0x00, 0x28, 0x20, 0x80, 0x2F, 0xA1, 0x80, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9844, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x01, 0x04, 0x00, 0x02, 0x1F, 0x00, 0x44, 0x51, 0x00, 0x44, 0x51, 0x00, 0x64, 0xDF, 0x00, 0x55, 0x51, 0x00, 0x44, 0x51, 0x00, 0x56, 0x5F, 0x00, 0x57, 0x51, 0x00, 0x65, 0xD1, 0x00, 0x44, 0x5F, 0x00, 0x4C, 0x4A, 0x00, 0x40, 0x5B, 0x00, 0x7F, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9846, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x24, 0x88, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA0, 0x80, 0x24, 0xA0, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x20, 0x80, 0x04, 0x20, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x20, 0x80, 0x0E, 0x20, 0x80, 0x15, 0x3F, 0x80, 0x14, 0x91, 0x00, 0x24, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9847, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x08, 0x00, 0x00, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x00, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x12, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x984A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x3F, 0x08, 0x00, 0x21, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x20, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x08, 0x21, 0x00, 0x7F, 0xBF, 0x00, 0x08, 0x12, 0x00, 0x08, 0x33, 0x00, 0x08, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x984B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x1F, 0x00, 0x06, 0x11, 0x00, 0x0A, 0x91, 0x00, 0x28, 0xDF, 0x00, 0x29, 0x4A, 0x00, 0x69, 0x1B, 0x00, 0x47, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x984C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x11, 0x08, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xE1, 0x00, 0x04, 0x3F, 0x00, 0x14, 0x21, 0x00, 0x17, 0xA1, 0x00, 0x14, 0x3F, 0x00, 0x1C, 0x61, 0x80, 0x27, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x984D, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x82, 0x00, 0x24, 0x84, 0x00, 0x04, 0x1F, 0x00, 0x0F, 0x91, 0x00, 0x11, 0x11, 0x00, 0x2A, 0x1F, 0x00, 0x06, 0x11, 0x00, 0x09, 0x11, 0x00, 0x30, 0xDF, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x984E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xBF, 0x80, 0x2A, 0x84, 0x00, 0x2A, 0x88, 0x00, 0x3B, 0x9F, 0x00, 0x00, 0x11, 0x00, 0x1F, 0x91, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x08, 0x1F, 0x00, 0x1F, 0xD1, 0x00, 0x10, 0x51, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x91, 0x00, 0x03, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x984F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x06, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x22, 0x3F, 0x00, 0x26, 0x21, 0x00, 0x2D, 0x21, 0x00, 0x23, 0x3F, 0x00, 0x26, 0x21, 0x00, 0x6C, 0xA1, 0x00, 0x41, 0xBF, 0x00, 0x43, 0x12, 0x00, 0x0E, 0x33, 0x00, 0x38, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9851, { 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x02, 0xBF, 0x80, 0x02, 0x04, 0x00, 0x3F, 0xDF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3A, 0x1F, 0x00, 0x22, 0x51, 0x00, 0x3A, 0xD1, 0x00, 0x2A, 0x9F, 0x00, 0x2B, 0x91, 0x00, 0x39, 0x11, 0x00, 0x21, 0x1F, 0x00, 0x23, 0x4A, 0x00, 0x45, 0xDB, 0x00, 0x18, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9852, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x29, 0x04, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x29, 0x21, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x08, 0x21, 0x00, 0x7F, 0xBF, 0x00, 0x48, 0xA1, 0x00, 0x4A, 0xA1, 0x00, 0x4F, 0xBF, 0x00, 0x79, 0x92, 0x00, 0x40, 0xB3, 0x00, 0x43, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9853, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x48, 0xBF, 0x80, 0x48, 0x84, 0x00, 0x48, 0x9F, 0x00, 0x7F, 0x91, 0x00, 0x00, 0x11, 0x00, 0x7F, 0x9F, 0x00, 0x08, 0x11, 0x00, 0x10, 0x11, 0x00, 0x7F, 0x9F, 0x00, 0x54, 0x91, 0x00, 0x54, 0x91, 0x00, 0x54, 0x9F, 0x00, 0x54, 0x8A, 0x00, 0x54, 0x9B, 0x00, 0x55, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9854, { 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x3F, 0x80, 0x5F, 0xC4, 0x00, 0x08, 0x88, 0x00, 0x65, 0x1F, 0x00, 0x7F, 0xF1, 0x00, 0x10, 0x91, 0x00, 0x11, 0x1F, 0x00, 0x12, 0x51, 0x00, 0x1C, 0x91, 0x00, 0x11, 0x1F, 0x00, 0x16, 0x51, 0x00, 0x10, 0x91, 0x00, 0x23, 0x1F, 0x00, 0x2C, 0x11, 0x00, 0x20, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9855, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x56, 0x41, 0x00, 0x34, 0x7F, 0x00, 0x17, 0x22, 0x00, 0x1C, 0x63, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9856, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x3F, 0x80, 0x7F, 0x84, 0x00, 0x40, 0x9F, 0x00, 0x42, 0x91, 0x00, 0x5A, 0x91, 0x00, 0x44, 0x9F, 0x00, 0x4A, 0x91, 0x00, 0x50, 0x91, 0x00, 0x40, 0x9F, 0x00, 0x7F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x2A, 0x9F, 0x00, 0x28, 0x4A, 0x00, 0x69, 0x1B, 0x00, 0x47, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9857, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x3F, 0x9F, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x11, 0x11, 0x00, 0x1B, 0x1F, 0x00, 0x0A, 0x0A, 0x00, 0x0F, 0xDB, 0x00, 0x78, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9858, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x12, 0x08, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xD1, 0x00, 0x14, 0x5F, 0x00, 0x17, 0xD1, 0x00, 0x11, 0x11, 0x00, 0x11, 0x1F, 0x00, 0x15, 0x51, 0x00, 0x15, 0x51, 0x00, 0x29, 0x3F, 0x00, 0x21, 0x11, 0x00, 0x23, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9859, { 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x11, 0x3F, 0x80, 0x0E, 0x04, 0x00, 0x31, 0x9F, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x2A, 0x9F, 0x00, 0x11, 0x11, 0x00, 0x6A, 0xD1, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x15, 0x11, 0x00, 0x15, 0x1F, 0x00, 0x35, 0x8A, 0x00, 0x64, 0xDB, 0x00, 0x04, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x985A, { 0x00, 0x00, 0x00, 0x23, 0x80, 0x00, 0x3C, 0x7F, 0x80, 0x20, 0x84, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xA1, 0x00, 0x28, 0xA1, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x2F, 0xA1, 0x00, 0x28, 0xBF, 0x00, 0x2F, 0xA1, 0x00, 0x20, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x11, 0x21, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x985B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x3E, 0x21, 0x00, 0x00, 0x21, 0x00, 0x7F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x33, 0x33, 0x00, 0x61, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x985E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x25, 0x7F, 0x80, 0x15, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3F, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x04, 0x21, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x11, 0x12, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9862, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x11, 0x3F, 0x80, 0x7F, 0xC4, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x44, 0x51, 0x00, 0x77, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x00, 0x6E, 0xDF, 0x00, 0x44, 0x4A, 0x00, 0x44, 0x5B, 0x00, 0x44, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9863, { 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x01, 0x3F, 0x80, 0x01, 0x04, 0x00, 0x3F, 0xDF, 0x00, 0x21, 0x11, 0x00, 0x29, 0x11, 0x00, 0x2D, 0x1F, 0x00, 0x29, 0x51, 0x00, 0x3F, 0x51, 0x00, 0x29, 0x5F, 0x00, 0x29, 0xD1, 0x00, 0x3C, 0x91, 0x00, 0x2A, 0x9F, 0x00, 0x29, 0xCA, 0x00, 0x3A, 0x5B, 0x00, 0x44, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9865, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x84, 0x00, 0x3F, 0x88, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x3F, 0x00, 0x15, 0x00, 0x00, 0x24, 0xA1, 0x00, 0x0C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9866, { 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x14, 0x7F, 0x80, 0x3F, 0x88, 0x00, 0x64, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x24, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x24, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0x21, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x92, 0x00, 0x60, 0x33, 0x00, 0x40, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9867, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x1F, 0x80, 0x10, 0x02, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x5F, 0x80, 0x1F, 0xD0, 0x80, 0x12, 0x90, 0x80, 0x15, 0x1F, 0x80, 0x1F, 0xD0, 0x80, 0x15, 0x10, 0x80, 0x17, 0xDF, 0x80, 0x15, 0x10, 0x80, 0x17, 0xD0, 0x80, 0x25, 0x1F, 0x80, 0x27, 0xE9, 0x00, 0x24, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x986A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x13, 0xEF, 0x80, 0x12, 0x02, 0x00, 0x3F, 0xF7, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x95, 0x00, 0x3F, 0xF7, 0x00, 0x20, 0x45, 0x00, 0x3F, 0xC5, 0x00, 0x24, 0x57, 0x00, 0x2D, 0x55, 0x00, 0x35, 0x65, 0x00, 0x26, 0x47, 0x00, 0x38, 0xD5, 0x00, 0x21, 0x35, 0x80, 0x46, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x986B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x20, 0xBF, 0x00, 0x2E, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x21, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x13, 0xA1, 0x00, 0x3C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x986C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x7F, 0xDF, 0x00, 0x44, 0x51, 0x00, 0x75, 0xD1, 0x00, 0x44, 0x5F, 0x00, 0x35, 0x91, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x2A, 0x5F, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x5B, 0x00, 0x2A, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x986F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x10, 0x42, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x5F, 0x80, 0x1F, 0xD0, 0x80, 0x08, 0x90, 0x80, 0x35, 0x5F, 0x80, 0x16, 0x50, 0x80, 0x09, 0x90, 0x80, 0x15, 0x3F, 0x80, 0x3F, 0xF0, 0x80, 0x00, 0x90, 0x80, 0x2A, 0x9F, 0x80, 0x2A, 0x89, 0x00, 0x2A, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9870, { 0x00, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x17, 0x84, 0x00, 0x14, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x24, 0x1F, 0x00, 0x44, 0x91, 0x00, 0x1D, 0x1F, 0x00, 0x02, 0x11, 0x00, 0x0F, 0xFF, 0x00, 0x78, 0x85, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9871, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xBF, 0x80, 0x04, 0x04, 0x00, 0x3F, 0xDF, 0x00, 0x24, 0x51, 0x00, 0x3F, 0x11, 0x00, 0x24, 0x5F, 0x00, 0x2F, 0xD1, 0x00, 0x2A, 0x91, 0x00, 0x2F, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x7F, 0xD1, 0x00, 0x55, 0x5F, 0x00, 0x15, 0x4A, 0x00, 0x3F, 0xFB, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9873, { 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x04, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x91, 0x00, 0x3F, 0x1F, 0x00, 0x01, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x2A, 0x9F, 0x00, 0x3B, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x3B, 0x9F, 0x00, 0x2A, 0x8A, 0x00, 0x7F, 0x9B, 0x00, 0x08, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9874, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x7F, 0xBF, 0x80, 0x11, 0x04, 0x00, 0x3B, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x3B, 0x91, 0x00, 0x00, 0x1F, 0x00, 0x12, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x64, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xDB, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9875, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x09, 0x48, 0x00, 0x02, 0x30, 0x00, 0x04, 0x0C, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9876, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x20, 0x00, 0x28, 0x2C, 0x00, 0x10, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9877, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x27, 0xFF, 0x00, 0x20, 0x20, 0x00, 0x20, 0x44, 0x00, 0x29, 0xFE, 0x00, 0x3D, 0x04, 0x00, 0x21, 0x24, 0x00, 0x21, 0x24, 0x00, 0x21, 0x24, 0x00, 0x25, 0x24, 0x00, 0x29, 0x24, 0x00, 0x31, 0x44, 0x00, 0x20, 0x50, 0x00, 0x00, 0x8C, 0x00, 0x01, 0x06, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9878, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x0A, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x43, 0x00, 0x09, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9879, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x08, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0x92, 0x00, 0x20, 0x92, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x987A, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x23, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x10, 0x00, 0x22, 0x2C, 0x00, 0x42, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x987B, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x10, 0x22, 0x00, 0x20, 0xFF, 0x00, 0x02, 0x82, 0x00, 0x04, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x20, 0x92, 0x00, 0x02, 0x92, 0x00, 0x04, 0x92, 0x00, 0x08, 0xA2, 0x00, 0x10, 0x2C, 0x00, 0x20, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x987C, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x38, 0x28, 0x00, 0x10, 0x24, 0x00, 0x00, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x987D, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x00, 0x12, 0x00, 0x02, 0x7F, 0x00, 0x7F, 0x42, 0x00, 0x14, 0x4A, 0x00, 0x14, 0x4A, 0x00, 0x14, 0x4A, 0x00, 0x14, 0x52, 0x00, 0x14, 0x52, 0x00, 0x15, 0x52, 0x00, 0x16, 0x2C, 0x00, 0x24, 0x22, 0x00, 0x40, 0x41, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x987E, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x10, 0x00, 0x20, 0x22, 0x00, 0x2F, 0x7F, 0x00, 0x29, 0x42, 0x00, 0x29, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x2D, 0x4A, 0x00, 0x2A, 0x52, 0x00, 0x28, 0x52, 0x00, 0x29, 0x52, 0x00, 0x2A, 0x18, 0x00, 0x2C, 0x26, 0x00, 0x40, 0x43, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x987F, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x7F, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x10, 0x00, 0x0C, 0x28, 0x00, 0x08, 0x46, 0x00, 0x01, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9880, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x20, 0x22, 0x00, 0x20, 0xFF, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xA2, 0x00, 0x44, 0x2C, 0x00, 0x04, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9881, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x12, 0x22, 0x00, 0x22, 0xFF, 0x00, 0x21, 0x82, 0x00, 0x42, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x92, 0x00, 0x12, 0x28, 0x00, 0x12, 0x24, 0x00, 0x26, 0x43, 0x00, 0x41, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9882, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x14, 0x22, 0x00, 0x22, 0xFF, 0x00, 0x29, 0x82, 0x00, 0x48, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x14, 0x92, 0x00, 0x22, 0x92, 0x00, 0x3E, 0x10, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9883, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x22, 0x00, 0x00, 0xFF, 0x00, 0x04, 0x82, 0x00, 0x3E, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x26, 0xA2, 0x00, 0x24, 0x2C, 0x00, 0x40, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9884, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x04, 0x22, 0x00, 0x14, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x7F, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x2C, 0x00, 0x28, 0x42, 0x00, 0x11, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9885, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x0F, 0x10, 0x00, 0x08, 0x22, 0x00, 0x09, 0x7F, 0x00, 0x3F, 0xC2, 0x00, 0x21, 0x4A, 0x00, 0x21, 0x4A, 0x00, 0x21, 0x4A, 0x00, 0x3F, 0x52, 0x00, 0x21, 0x52, 0x00, 0x20, 0x52, 0x00, 0x20, 0x28, 0x00, 0x20, 0x24, 0x00, 0x40, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9886, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x12, 0x22, 0x00, 0x21, 0xFF, 0x00, 0x50, 0x82, 0x00, 0x08, 0x92, 0x00, 0x00, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x01, 0x92, 0x00, 0x02, 0x92, 0x00, 0x14, 0x92, 0x00, 0x08, 0x28, 0x00, 0x04, 0x24, 0x00, 0x04, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9887, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x42, 0x00, 0x24, 0x4A, 0x00, 0x3F, 0x4A, 0x00, 0x21, 0x4A, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0x52, 0x00, 0x24, 0x52, 0x00, 0x2A, 0x10, 0x00, 0x29, 0x28, 0x00, 0x51, 0x46, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9888, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x04, 0x12, 0x00, 0x0C, 0x7F, 0x00, 0x13, 0x42, 0x00, 0x61, 0x4A, 0x00, 0x00, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x08, 0x52, 0x00, 0x0F, 0x10, 0x00, 0x70, 0x2C, 0x00, 0x20, 0x42, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9889, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x3E, 0x92, 0x00, 0x00, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x24, 0x00, 0x20, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x988A, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x1C, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x14, 0xA2, 0x00, 0x12, 0xAA, 0x00, 0x22, 0x46, 0x00, 0x40, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x988C, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x14, 0x22, 0x00, 0x22, 0xFF, 0x00, 0x40, 0x82, 0x00, 0x3E, 0x92, 0x00, 0x00, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x24, 0x00, 0x20, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x988D, { 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x22, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x38, 0x22, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x82, 0x00, 0x00, 0x92, 0x00, 0x09, 0x92, 0x00, 0x7A, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x28, 0x00, 0x48, 0x24, 0x00, 0x18, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x988F, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x22, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x12, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x04, 0x92, 0x00, 0x08, 0x92, 0x00, 0x12, 0x92, 0x00, 0x64, 0x92, 0x00, 0x0C, 0x28, 0x00, 0x12, 0x24, 0x00, 0x61, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9890, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x22, 0x00, 0x24, 0x7F, 0x00, 0x2F, 0x42, 0x00, 0x29, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x2F, 0x4A, 0x00, 0x24, 0x52, 0x00, 0x24, 0x52, 0x00, 0x24, 0x52, 0x00, 0x24, 0x2C, 0x00, 0x3F, 0x43, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9891, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x2F, 0x22, 0x00, 0x28, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x4A, 0x92, 0x00, 0x04, 0x10, 0x00, 0x08, 0x28, 0x00, 0x10, 0x46, 0x00, 0x21, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9893, { 0x00, 0x00, 0x00, 0x06, 0x02, 0x00, 0x78, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x22, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x42, 0x00, 0x1C, 0x4A, 0x00, 0x2B, 0x4A, 0x00, 0x49, 0x4A, 0x00, 0x1C, 0x52, 0x00, 0x14, 0x52, 0x00, 0x14, 0x10, 0x00, 0x15, 0x2C, 0x00, 0x26, 0x22, 0x00, 0x24, 0x41, 0x00, 0x40, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9894, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x13, 0x22, 0x00, 0x29, 0xFF, 0x00, 0x40, 0x82, 0x00, 0x3E, 0x92, 0x00, 0x02, 0x92, 0x00, 0x04, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x92, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x43, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9896, { 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x38, 0x10, 0x00, 0x20, 0x22, 0x00, 0x22, 0xFF, 0x00, 0x1E, 0x82, 0x00, 0x00, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0x92, 0x00, 0x0A, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x08, 0x92, 0x00, 0x1C, 0x10, 0x00, 0x2A, 0x2C, 0x00, 0x48, 0xC2, 0x00, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9897, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x42, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x08, 0x92, 0x00, 0x7F, 0x92, 0x00, 0x18, 0x92, 0x00, 0x1C, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x28, 0x00, 0x48, 0x46, 0x00, 0x09, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9898, { 0x00, 0x00, 0x00, 0x1F, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x42, 0x00, 0x1F, 0x4A, 0x00, 0x00, 0x4A, 0x00, 0x7F, 0xCA, 0x00, 0x04, 0x52, 0x00, 0x15, 0x52, 0x00, 0x17, 0x90, 0x00, 0x14, 0x2C, 0x00, 0x2C, 0x42, 0x00, 0x24, 0x83, 0x00, 0x43, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x989A, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x3B, 0xFF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x92, 0x00, 0x3B, 0xBF, 0x00, 0x00, 0x22, 0x00, 0x1F, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x7F, 0xAA, 0x00, 0x10, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x01, 0x2A, 0x00, 0x01, 0x32, 0x00, 0x01, 0x14, 0x00, 0x0A, 0x23, 0x00, 0x04, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x989B, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0x92, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xAA, 0x00, 0x04, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xB2, 0x00, 0x2A, 0x94, 0x00, 0x21, 0xA3, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x989C, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x3F, 0x90, 0x00, 0x11, 0x22, 0x00, 0x0A, 0x7F, 0x00, 0x3F, 0xC2, 0x00, 0x22, 0x4A, 0x00, 0x24, 0x4A, 0x00, 0x29, 0x4A, 0x00, 0x22, 0x52, 0x00, 0x24, 0x52, 0x00, 0x29, 0x52, 0x00, 0x22, 0x52, 0x00, 0x24, 0x24, 0x00, 0x48, 0x43, 0x00, 0x10, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x989D, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x92, 0x00, 0x49, 0x3F, 0x00, 0x0F, 0x22, 0x00, 0x11, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x04, 0x2A, 0x00, 0x0A, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x51, 0x08, 0x00, 0x11, 0x14, 0x00, 0x1F, 0x23, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x989E, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x22, 0x00, 0x11, 0x2A, 0x00, 0x7F, 0xEA, 0x00, 0x01, 0x2A, 0x00, 0x3B, 0xAA, 0x00, 0x08, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x11, 0x32, 0x00, 0x11, 0x14, 0x00, 0x2A, 0xA3, 0x00, 0x44, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x989F, { 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x12, 0x7F, 0x00, 0x7F, 0x88, 0x00, 0x12, 0x12, 0x00, 0x01, 0x3F, 0x00, 0x7F, 0xA2, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x2A, 0x00, 0x7F, 0xAA, 0x00, 0x52, 0xAA, 0x00, 0x52, 0xAA, 0x00, 0x6D, 0xAA, 0x00, 0x40, 0x90, 0x00, 0x42, 0x94, 0x00, 0x41, 0x23, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A0, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x0A, 0xFF, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x22, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x4A, 0x00, 0x22, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x22, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x22, 0x52, 0x00, 0x7F, 0x20, 0x00, 0x00, 0x24, 0x00, 0x14, 0x43, 0x00, 0x22, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A1, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x7F, 0x00, 0x0A, 0x08, 0x00, 0x04, 0x12, 0x00, 0x0A, 0x3F, 0x00, 0x3B, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x11, 0x2A, 0x00, 0x2A, 0xAA, 0x00, 0x04, 0x2A, 0x00, 0x7F, 0xEA, 0x00, 0x0C, 0x2A, 0x00, 0x16, 0x10, 0x00, 0x25, 0x94, 0x00, 0x44, 0xA3, 0x00, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A2, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x12, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x22, 0x00, 0x04, 0x2A, 0x00, 0x7F, 0xEA, 0x00, 0x00, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x11, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x04, 0x10, 0x00, 0x15, 0x14, 0x00, 0x24, 0xA3, 0x00, 0x0C, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A4, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0xBF, 0x00, 0x2E, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x3F, 0xAA, 0x00, 0x00, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x19, 0x2A, 0x00, 0x15, 0x2A, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x14, 0x00, 0x7F, 0xA3, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A5, { 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xD2, 0x00, 0x44, 0x7F, 0x00, 0x35, 0xA2, 0x00, 0x04, 0x2A, 0x00, 0x35, 0xAA, 0x00, 0x04, 0x2A, 0x00, 0x7F, 0xEA, 0x00, 0x08, 0x2A, 0x00, 0x3F, 0xAA, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0xA3, 0x00, 0x21, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A6, { 0x00, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x17, 0x10, 0x00, 0x14, 0x7E, 0x00, 0x7F, 0xCA, 0x00, 0x25, 0x4A, 0x00, 0x06, 0x14, 0x00, 0x19, 0x62, 0x00, 0x6F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x09, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A7, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x11, 0x7F, 0x00, 0x7F, 0xC8, 0x00, 0x11, 0x12, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0xA2, 0x00, 0x3B, 0xAA, 0x00, 0x12, 0x2A, 0x00, 0x1F, 0xAA, 0x00, 0x32, 0x2A, 0x00, 0x5F, 0xAA, 0x00, 0x12, 0x2A, 0x00, 0x1F, 0x88, 0x00, 0x12, 0x14, 0x00, 0x1F, 0xA3, 0x00, 0x10, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0xF4, 0x00, 0x17, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x14, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x84, 0x00, 0x10, 0x94, 0x00, 0x10, 0xFC, 0x80, 0x17, 0x8A, 0x80, 0x20, 0x01, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98AA, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x74, 0x00, 0x17, 0xC4, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x86, 0x00, 0x30, 0x92, 0x80, 0x21, 0xFB, 0x80, 0x6F, 0x09, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98AB, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x26, 0x9F, 0x00, 0x3C, 0x84, 0x00, 0x28, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x2A, 0xBF, 0x80, 0x2A, 0x8A, 0x00, 0x3E, 0x8A, 0x00, 0x28, 0x9B, 0x00, 0x28, 0x91, 0x00, 0x2A, 0xB1, 0x80, 0x2E, 0x80, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98AD, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x20, 0x23, 0x80, 0x21, 0xA2, 0x00, 0x2F, 0x22, 0x00, 0x22, 0x22, 0x00, 0x2F, 0xAF, 0x80, 0x2A, 0xA8, 0x80, 0x2A, 0xA8, 0x80, 0x2F, 0xA8, 0x80, 0x22, 0x28, 0x80, 0x22, 0x2F, 0x80, 0x22, 0xA0, 0x00, 0x23, 0xA0, 0x80, 0x6E, 0xB1, 0x80, 0x40, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98AE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0xBF, 0x80, 0x26, 0xA0, 0x80, 0x3C, 0xFC, 0x80, 0x28, 0xA4, 0x80, 0x3E, 0xA4, 0x80, 0x2A, 0xBD, 0x80, 0x2A, 0xA1, 0x00, 0x3E, 0xA3, 0x00, 0x28, 0xA0, 0x00, 0x28, 0xB0, 0x80, 0x2A, 0x9F, 0x80, 0x2E, 0x80, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98AF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x9E, 0x00, 0x08, 0xF2, 0x00, 0x3E, 0x92, 0x00, 0x00, 0xFE, 0x00, 0x22, 0xD6, 0x00, 0x22, 0xD6, 0x00, 0x12, 0xD6, 0x00, 0x12, 0xFE, 0x00, 0x14, 0x96, 0x00, 0x14, 0x92, 0x00, 0x0F, 0x96, 0x00, 0x30, 0x9E, 0x00, 0x01, 0x62, 0x80, 0x02, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98B0, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x8B, 0x00, 0x20, 0x89, 0x00, 0x26, 0xFF, 0x80, 0x3C, 0x88, 0x00, 0x28, 0x99, 0x00, 0x3E, 0x91, 0x00, 0x2A, 0x93, 0x00, 0x2A, 0xBA, 0x00, 0x3E, 0xEE, 0x00, 0x28, 0x84, 0x00, 0x28, 0x8E, 0x00, 0x2A, 0x9B, 0x00, 0x2E, 0x80, 0x80, 0x7A, 0xC1, 0x80, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF4, 0x00, 0x23, 0xA4, 0x00, 0x2E, 0x29, 0x00, 0x22, 0x2B, 0x80, 0x3F, 0xFC, 0x80, 0x22, 0x20, 0x00, 0x2F, 0xAF, 0x00, 0x2A, 0xA9, 0x00, 0x2F, 0xA9, 0x00, 0x2A, 0x29, 0x00, 0x22, 0xAF, 0x00, 0x23, 0xA9, 0x00, 0x3C, 0x50, 0x00, 0x20, 0x4C, 0x00, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98B4, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0xBF, 0x80, 0x26, 0xA0, 0x00, 0x3C, 0xC0, 0x00, 0x28, 0xBF, 0x80, 0x3E, 0x84, 0x80, 0x2A, 0x95, 0x00, 0x2A, 0x94, 0x00, 0x3E, 0x97, 0x00, 0x28, 0x94, 0x00, 0x28, 0x9E, 0x00, 0x2A, 0xB3, 0x80, 0x2E, 0xA0, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xEF, 0x00, 0x20, 0x29, 0x00, 0x21, 0xAF, 0x00, 0x2F, 0x29, 0x00, 0x22, 0x2F, 0x00, 0x2F, 0xA9, 0x00, 0x2A, 0xAF, 0x00, 0x2A, 0xA9, 0x00, 0x2F, 0xBF, 0x80, 0x22, 0x20, 0x00, 0x22, 0x29, 0x00, 0x22, 0xB0, 0x80, 0x23, 0xA0, 0x00, 0x6E, 0xB0, 0x80, 0x40, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98B7, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x95, 0x80, 0x20, 0xB5, 0x00, 0x26, 0xAE, 0x00, 0x3C, 0x9A, 0x00, 0x28, 0xB3, 0x00, 0x3E, 0xE1, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x95, 0x80, 0x3E, 0xB5, 0x00, 0x28, 0xAE, 0x00, 0x28, 0x9B, 0x00, 0x2A, 0xF1, 0x00, 0x2E, 0x80, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA9, 0x00, 0x26, 0xA9, 0x00, 0x3C, 0xBF, 0x00, 0x28, 0xA9, 0x00, 0x3E, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x80, 0x00, 0x3E, 0xAA, 0x80, 0x28, 0xAA, 0x00, 0x28, 0xC8, 0x80, 0x2A, 0x87, 0x80, 0x2E, 0x80, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98BA, { 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xBF, 0x00, 0x26, 0xA1, 0x00, 0x3C, 0xBF, 0x00, 0x28, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x90, 0x00, 0x2A, 0xBF, 0x80, 0x3E, 0xCA, 0x80, 0x28, 0x92, 0x80, 0x28, 0xA4, 0x80, 0x2A, 0x89, 0x80, 0x2E, 0x83, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98BB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x71, 0x41, 0x00, 0x0B, 0x4D, 0x00, 0x26, 0x79, 0x00, 0x1C, 0x51, 0x00, 0x70, 0x7D, 0x00, 0x1E, 0x55, 0x00, 0x28, 0x55, 0x00, 0x08, 0x7D, 0x00, 0x7F, 0x51, 0x00, 0x08, 0x51, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x5D, 0x00, 0x3E, 0x75, 0x00, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x4D, 0x00, 0x3F, 0x79, 0x00, 0x24, 0x51, 0x00, 0x24, 0x7D, 0x00, 0x3F, 0x55, 0x00, 0x24, 0x55, 0x00, 0x24, 0x7D, 0x00, 0x3F, 0x51, 0x00, 0x01, 0x51, 0x00, 0x55, 0x55, 0x00, 0x55, 0x5D, 0x00, 0x43, 0x75, 0x00, 0x06, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98C2, { 0x00, 0x00, 0x00, 0x00, 0x7B, 0x80, 0x3F, 0x99, 0x80, 0x20, 0xAA, 0x80, 0x26, 0x99, 0x80, 0x3C, 0xAA, 0x80, 0x28, 0x84, 0x00, 0x3E, 0x8E, 0x00, 0x2A, 0xFB, 0x80, 0x2A, 0x84, 0x00, 0x3E, 0xB9, 0x00, 0x28, 0x82, 0x00, 0x28, 0xBC, 0x80, 0x2A, 0x81, 0x00, 0x2E, 0x9E, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x8A, 0x00, 0x26, 0xBF, 0x80, 0x3C, 0xAA, 0x80, 0x28, 0xBF, 0x80, 0x3E, 0x80, 0x00, 0x2A, 0x9F, 0x00, 0x2A, 0x80, 0x00, 0x3E, 0xBF, 0x80, 0x28, 0x84, 0x00, 0x28, 0x95, 0x00, 0x2A, 0xA4, 0x80, 0x2E, 0x8C, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x0A, 0x41, 0x00, 0x3F, 0xCF, 0x00, 0x2A, 0xF9, 0x00, 0x2A, 0xC9, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x6B, 0x00, 0x1F, 0x6B, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x4D, 0x00, 0x15, 0x4B, 0x00, 0x15, 0x4F, 0x80, 0x24, 0xF9, 0x80, 0x0C, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x8A, 0x00, 0x26, 0xBB, 0x80, 0x3C, 0xAA, 0x80, 0x28, 0xAA, 0x80, 0x3E, 0xBB, 0x80, 0x2A, 0x8A, 0x00, 0x2A, 0xBF, 0x80, 0x3E, 0xA4, 0x80, 0x28, 0xBF, 0x80, 0x28, 0xA4, 0x80, 0x2A, 0xBF, 0x80, 0x2E, 0x80, 0x00, 0x7A, 0xC0, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98C6, { 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x09, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x4D, 0x00, 0x14, 0x79, 0x00, 0x36, 0x51, 0x00, 0x63, 0x7D, 0x00, 0x00, 0x55, 0x00, 0x2A, 0xD5, 0x00, 0x22, 0x7D, 0x00, 0x7F, 0xD1, 0x00, 0x22, 0x51, 0x00, 0x22, 0x55, 0x00, 0x55, 0x5D, 0x00, 0x55, 0x75, 0x00, 0x48, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98C7, { 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x3F, 0xC4, 0x00, 0x27, 0x7F, 0x80, 0x3C, 0x44, 0x00, 0x24, 0x4A, 0x00, 0x24, 0x51, 0x00, 0x3F, 0x64, 0x80, 0x35, 0x45, 0x00, 0x35, 0x44, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x4A, 0x00, 0x25, 0x51, 0x00, 0x27, 0x60, 0x80, 0x3C, 0xC0, 0x00, 0x20, 0x3F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98C8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x29, 0x80, 0x22, 0x6B, 0x00, 0x26, 0x5C, 0x00, 0x3E, 0x36, 0x00, 0x2A, 0x63, 0x00, 0x3F, 0xC1, 0x00, 0x2A, 0x42, 0x00, 0x2B, 0x5A, 0x80, 0x3E, 0xD7, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0xA5, 0x00, 0x2B, 0x18, 0x80, 0x2E, 0x00, 0x00, 0x7B, 0x00, 0x80, 0x41, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98CC, { 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x77, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x00, 0x4D, 0x00, 0x77, 0x79, 0x00, 0x55, 0x51, 0x00, 0x77, 0x7D, 0x00, 0x12, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x64, 0x7D, 0x00, 0x3F, 0x51, 0x00, 0x24, 0x51, 0x00, 0x3F, 0x55, 0x00, 0x24, 0x5D, 0x00, 0x3F, 0x75, 0x00, 0x00, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98CE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x08, 0x00, 0x14, 0x28, 0x00, 0x12, 0x28, 0x00, 0x11, 0x48, 0x00, 0x11, 0x48, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x11, 0x48, 0x00, 0x11, 0x48, 0x00, 0x12, 0x28, 0x00, 0x14, 0x28, 0x00, 0x18, 0x09, 0x00, 0x20, 0x05, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98D1, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x3F, 0x44, 0x00, 0x22, 0x7E, 0x00, 0x22, 0x84, 0x00, 0x23, 0x04, 0x00, 0x36, 0xF4, 0x00, 0x36, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0xF4, 0x00, 0x2A, 0x94, 0x00, 0x36, 0x88, 0x00, 0x36, 0x82, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98D2, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x7F, 0x8C, 0x00, 0x01, 0x4C, 0x00, 0x25, 0x54, 0x00, 0x25, 0x54, 0x00, 0x25, 0x24, 0x00, 0x29, 0x24, 0x00, 0x29, 0x54, 0x00, 0x0F, 0x4C, 0x00, 0x79, 0x8D, 0x00, 0x22, 0x05, 0x00, 0x02, 0x05, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98D3, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x7E, 0x00, 0x22, 0x44, 0x00, 0x22, 0x7C, 0x00, 0x22, 0x44, 0x00, 0x36, 0x7C, 0x00, 0x36, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x37, 0xFF, 0x00, 0x36, 0x28, 0x00, 0x22, 0x45, 0x00, 0x22, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98D5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0xD6, 0x00, 0x22, 0x92, 0x00, 0x22, 0xD6, 0x00, 0x22, 0x92, 0x00, 0x36, 0x92, 0x00, 0x36, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x44, 0x00, 0x36, 0x28, 0x00, 0x36, 0x10, 0x00, 0x22, 0x29, 0x00, 0x22, 0x45, 0x00, 0x21, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98D8, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x7F, 0x7E, 0x00, 0x14, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x55, 0x44, 0x00, 0x55, 0x6C, 0x00, 0x7F, 0x6C, 0x00, 0x00, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x00, 0x6C, 0x00, 0x7F, 0x6C, 0x00, 0x08, 0x44, 0x00, 0x2C, 0x45, 0x00, 0x2A, 0x85, 0x00, 0x49, 0x03, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98D9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0C, 0x7E, 0x00, 0x0A, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x08, 0x44, 0x00, 0x14, 0x6C, 0x00, 0x22, 0x6C, 0x00, 0x41, 0x54, 0x00, 0x12, 0x54, 0x00, 0x1B, 0x54, 0x00, 0x7F, 0xEC, 0x00, 0x12, 0x6C, 0x00, 0x12, 0x45, 0x00, 0x2D, 0x45, 0x00, 0x24, 0x85, 0x00, 0x49, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98DA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x22, 0x52, 0x00, 0x22, 0x54, 0x00, 0x22, 0xA8, 0x00, 0x36, 0x44, 0x00, 0x36, 0x83, 0x00, 0x2A, 0x44, 0x00, 0x2B, 0x55, 0x00, 0x2A, 0xEE, 0x00, 0x36, 0x44, 0x00, 0x36, 0xAA, 0x00, 0x23, 0x11, 0x00, 0x22, 0x01, 0x00, 0x21, 0xFF, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98DB, { 0x00, 0x00, 0x00, 0x3F, 0xF9, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x6C, 0x00, 0x0D, 0x8A, 0x00, 0x38, 0x89, 0x00, 0x08, 0x88, 0x00, 0x08, 0x84, 0x80, 0x3F, 0xF3, 0x80, 0x08, 0x90, 0x00, 0x08, 0x92, 0x00, 0x08, 0x94, 0x00, 0x08, 0x9C, 0x00, 0x08, 0x93, 0x00, 0x10, 0x88, 0x80, 0x10, 0x84, 0x80, 0x20, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98DC, { 0x00, 0x00, 0x00, 0x07, 0x3E, 0x00, 0x1C, 0x02, 0x80, 0x15, 0x07, 0x00, 0x0E, 0x3A, 0x80, 0x3F, 0xEA, 0x00, 0x0E, 0x2A, 0x00, 0x15, 0x29, 0x00, 0x24, 0xBE, 0x80, 0x1F, 0x2A, 0x00, 0x15, 0x2A, 0x80, 0x15, 0x2B, 0x00, 0x1F, 0x2B, 0x00, 0x15, 0x2A, 0x80, 0x15, 0x2A, 0x00, 0x1F, 0x2A, 0x00, 0x11, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98DE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x00, 0x00, 0x16, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x16, 0x00, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98DF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x81, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x42, 0x00, 0x04, 0x24, 0x00, 0x04, 0x18, 0x00, 0x07, 0xE6, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98E1, { 0x00, 0x00, 0x00, 0x20, 0x30, 0x00, 0x10, 0x48, 0x00, 0x00, 0x84, 0x00, 0x01, 0x02, 0x00, 0x06, 0x11, 0x80, 0x00, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x11, 0x00, 0x11, 0x12, 0x00, 0x11, 0x0C, 0x00, 0x21, 0xF6, 0x00, 0x27, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98E2, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x7C, 0x00, 0x22, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x20, 0x44, 0x00, 0x3E, 0x44, 0x80, 0x20, 0x84, 0x80, 0x3E, 0x87, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98E3, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0B, 0x7F, 0x80, 0x19, 0x84, 0x00, 0x36, 0x84, 0x00, 0x60, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98E5, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x1E, 0x00, 0x16, 0xF0, 0x00, 0x33, 0x10, 0x00, 0x2C, 0x10, 0x00, 0x60, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x20, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x20, 0x10, 0x80, 0x3E, 0x19, 0x80, 0x20, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98E6, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x08, 0x00, 0x33, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98E7, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x38, 0x00, 0x10, 0x6C, 0x00, 0x1E, 0xC6, 0x00, 0x13, 0x93, 0x80, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x3A, 0xFE, 0x00, 0x2E, 0x82, 0x00, 0x64, 0xFE, 0x80, 0x04, 0x91, 0x80, 0x0C, 0x9B, 0x00, 0x08, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x30, 0xF3, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98E8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0xC8, 0x00, 0x79, 0x24, 0x00, 0x13, 0xFF, 0x80, 0x25, 0x04, 0x00, 0x7D, 0xFC, 0x00, 0x05, 0x04, 0x00, 0x09, 0xFC, 0x00, 0x09, 0x44, 0x00, 0x11, 0x28, 0x00, 0x21, 0x10, 0x00, 0x41, 0x8F, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98E9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x0B, 0x00, 0x0B, 0x0E, 0x00, 0x19, 0x78, 0x00, 0x16, 0x08, 0x00, 0x30, 0x08, 0x00, 0x5F, 0x49, 0x00, 0x11, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x11, 0x49, 0x00, 0x1F, 0x7F, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x08, 0x80, 0x1F, 0x09, 0x80, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98EA, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98EB, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x1C, 0x00, 0x3E, 0x14, 0x00, 0x20, 0x14, 0x00, 0x3E, 0x36, 0x00, 0x20, 0x22, 0x00, 0x3E, 0x63, 0x00, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98ED, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x14, 0x20, 0x00, 0x22, 0x7F, 0x80, 0x00, 0x50, 0x00, 0x3E, 0x90, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3E, 0x11, 0x00, 0x20, 0x11, 0x00, 0x3E, 0x21, 0x00, 0x20, 0x21, 0x00, 0x3E, 0x42, 0x00, 0x21, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98EE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x10, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x3F, 0x80, 0x00, 0x29, 0x00, 0x3E, 0x4A, 0x00, 0x22, 0x88, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x20, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x20, 0x22, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98EF, { 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x12, 0x7F, 0x80, 0x21, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x41, 0x00, 0x22, 0x51, 0x00, 0x3E, 0x52, 0x00, 0x22, 0x4A, 0x00, 0x3E, 0x4C, 0x00, 0x20, 0x44, 0x00, 0x3E, 0x4A, 0x00, 0x20, 0x8A, 0x00, 0x3E, 0x91, 0x00, 0x20, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98F2, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x20, 0x00, 0x33, 0x3F, 0x80, 0x28, 0x20, 0x80, 0x7E, 0x69, 0x80, 0x22, 0x49, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x20, 0x14, 0x00, 0x22, 0x14, 0x00, 0x22, 0x36, 0x00, 0x2F, 0x22, 0x00, 0x39, 0x63, 0x00, 0x60, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98F3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x60, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98F4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x20, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x42, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0xF0, 0x80, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3E, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98F6, { 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x16, 0x04, 0x00, 0x33, 0x12, 0x00, 0x2C, 0x12, 0x00, 0x60, 0x12, 0x00, 0x3E, 0x56, 0x00, 0x22, 0x55, 0x00, 0x3E, 0x55, 0x80, 0x22, 0xDC, 0x80, 0x3E, 0x98, 0x00, 0x20, 0x10, 0x00, 0x3E, 0x30, 0x00, 0x20, 0xD0, 0x80, 0x3E, 0x19, 0x80, 0x20, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98FC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xFF, 0x80, 0x22, 0x00, 0x80, 0x00, 0x00, 0x80, 0x3E, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x3E, 0x00, 0x80, 0x22, 0x7C, 0x80, 0x3E, 0x44, 0x80, 0x22, 0x44, 0x80, 0x3E, 0x44, 0x80, 0x20, 0x7C, 0x80, 0x3E, 0x44, 0x80, 0x20, 0x40, 0x80, 0x3E, 0x00, 0x80, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x98FD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x14, 0x20, 0x00, 0x22, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x81, 0x00, 0x01, 0x01, 0x00, 0x3E, 0x79, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x79, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x47, 0x00, 0x3E, 0x40, 0x00, 0x20, 0x40, 0x80, 0x3E, 0x7F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x98FE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x3E, 0x48, 0x00, 0x00, 0x88, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x4B, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9902, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9903, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x82, 0x80, 0x22, 0x22, 0x00, 0x3E, 0x14, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x0C, 0x00, 0x20, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x20, 0xC2, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9905, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x63, 0x00, 0x16, 0x22, 0x00, 0x32, 0x00, 0x00, 0x28, 0xFF, 0x80, 0x7E, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x20, 0x22, 0x00, 0x22, 0x22, 0x00, 0x22, 0x22, 0x00, 0x2F, 0x62, 0x00, 0x39, 0x42, 0x00, 0x60, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9907, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x81, 0x00, 0x32, 0x81, 0x00, 0x2C, 0xBD, 0x00, 0x60, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x22, 0xBD, 0x00, 0x3E, 0xA5, 0x00, 0x22, 0xA5, 0x00, 0x3E, 0xA5, 0x00, 0x20, 0xBD, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9908, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3C, 0x7F, 0x00, 0x00, 0xD1, 0x00, 0x01, 0x92, 0x00, 0x0C, 0x38, 0x00, 0x38, 0x6C, 0x00, 0x60, 0xC6, 0x00, 0x03, 0x33, 0x80, 0x0C, 0x8C, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFA, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9909, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x10, 0x00, 0x00, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x00, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x22, 0xBD, 0x00, 0x3E, 0xA5, 0x00, 0x22, 0xA5, 0x00, 0x3E, 0xBD, 0x00, 0x20, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x990A, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x44, 0x00, 0x07, 0xFE, 0x00, 0x0C, 0x05, 0x80, 0x37, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFD, 0x00, 0x04, 0x12, 0x00, 0x07, 0xEC, 0x00, 0x3E, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x990C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x22, 0x42, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x4F, 0x80, 0x21, 0xF2, 0x00, 0x3E, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3E, 0x02, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x990D, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x48, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0xA0, 0x00, 0x13, 0x18, 0x00, 0x1C, 0x47, 0x00, 0x10, 0xA2, 0x00, 0x13, 0x58, 0x00, 0x17, 0xFC, 0x00, 0x1A, 0x0B, 0x00, 0x13, 0xF8, 0x00, 0x12, 0x08, 0x00, 0x23, 0xFA, 0x00, 0x22, 0x24, 0x00, 0x42, 0x98, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9910, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x0A, 0x3F, 0x80, 0x0F, 0x91, 0x00, 0x11, 0x0A, 0x00, 0x2A, 0x4C, 0x00, 0x04, 0xB2, 0x00, 0x09, 0x11, 0x80, 0x36, 0x0C, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x22, 0x00, 0x07, 0xDC, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9911, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x3E, 0x80, 0x80, 0x22, 0x80, 0x80, 0x3E, 0x7F, 0x00, 0x22, 0x02, 0x00, 0x3E, 0x04, 0x00, 0x20, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9912, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0xF8, 0x00, 0x32, 0x12, 0x00, 0x2C, 0x5B, 0x00, 0x60, 0xC9, 0x80, 0x3E, 0x80, 0x80, 0x22, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x12, 0x00, 0x3E, 0x32, 0x00, 0x20, 0x26, 0x00, 0x3E, 0x74, 0x00, 0x20, 0x1E, 0x00, 0x3E, 0x33, 0x00, 0x20, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9913, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x3A, 0x00, 0x22, 0xE9, 0x00, 0x00, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x03, 0xFF, 0x80, 0x3E, 0x28, 0x00, 0x22, 0x28, 0x80, 0x3E, 0x28, 0x80, 0x22, 0x39, 0x00, 0x3E, 0x65, 0x00, 0x21, 0xA6, 0x00, 0x3E, 0x22, 0x00, 0x20, 0x26, 0x80, 0x3F, 0x25, 0x80, 0x20, 0x68, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9914, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x1C, 0x09, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9915, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x61, 0x00, 0x16, 0x41, 0x00, 0x32, 0xFF, 0x80, 0x2C, 0x24, 0x80, 0x60, 0x24, 0x00, 0x3E, 0x67, 0x80, 0x22, 0xD0, 0x00, 0x3E, 0x1F, 0x00, 0x22, 0x31, 0x00, 0x3E, 0x63, 0x00, 0x20, 0xD6, 0x00, 0x3E, 0x0C, 0x00, 0x20, 0x1E, 0x00, 0x3E, 0x33, 0x00, 0x20, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9916, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x00, 0x00, 0x33, 0x00, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x22, 0x00, 0x20, 0x32, 0x00, 0x3E, 0x16, 0x00, 0x20, 0x04, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9917, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x20, 0x49, 0x00, 0x3E, 0xC9, 0x80, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9918, { 0x00, 0x00, 0x00, 0x0C, 0x08, 0x00, 0x12, 0x14, 0x00, 0x21, 0x22, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x80, 0x80, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x20, 0x2A, 0x00, 0x3E, 0x29, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x88, 0x80, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x991A, { 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x1C, 0xC6, 0x00, 0x16, 0x38, 0x00, 0x32, 0xC7, 0x00, 0x2C, 0x10, 0x00, 0x61, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0xC1, 0x00, 0x23, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x991B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x33, 0x41, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x45, 0x80, 0x20, 0x77, 0x00, 0x3E, 0x44, 0x00, 0x20, 0x44, 0x80, 0x3E, 0x74, 0x80, 0x21, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x991C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x33, 0x49, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x20, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x20, 0x49, 0x00, 0x3E, 0xC9, 0x80, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x991D, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x2C, 0x2A, 0x00, 0x60, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x1F, 0x00, 0x3E, 0x11, 0x00, 0x20, 0x31, 0x00, 0x3E, 0x21, 0x00, 0x20, 0x23, 0x00, 0x3E, 0x62, 0x00, 0x20, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x991E, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x14, 0x12, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x11, 0x00, 0x3E, 0x12, 0x00, 0x00, 0x0C, 0x00, 0x3E, 0x34, 0x80, 0x22, 0xC3, 0x80, 0x3E, 0x14, 0x00, 0x22, 0x17, 0x80, 0x3E, 0xF8, 0x00, 0x20, 0x11, 0x00, 0x3E, 0x0A, 0x00, 0x20, 0x0C, 0x80, 0x3E, 0x32, 0x80, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x991F, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xF7, 0x80, 0x16, 0x10, 0x80, 0x32, 0xD6, 0x80, 0x2C, 0x21, 0x00, 0x60, 0x52, 0x80, 0x3E, 0x84, 0x00, 0x22, 0x00, 0x00, 0x3E, 0xF7, 0x80, 0x22, 0x10, 0x80, 0x3E, 0x90, 0x80, 0x20, 0x65, 0x00, 0x3E, 0x25, 0x00, 0x20, 0x52, 0x00, 0x3E, 0x95, 0x00, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9920, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x22, 0x44, 0x00, 0x01, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x74, 0x00, 0x23, 0xDF, 0x80, 0x3E, 0x44, 0x00, 0x20, 0x44, 0x00, 0x3E, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9921, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x3F, 0x00, 0x33, 0x21, 0x00, 0x2C, 0x63, 0x00, 0x60, 0x42, 0x00, 0x3E, 0xCE, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x77, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x77, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9922, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x42, 0x00, 0x2C, 0x66, 0x00, 0x60, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x20, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x20, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x20, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9924, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x48, 0x80, 0x16, 0x49, 0x80, 0x32, 0xDD, 0x00, 0x2C, 0x94, 0x00, 0x60, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x22, 0xC9, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x48, 0x80, 0x3E, 0x49, 0x80, 0x20, 0xDD, 0x00, 0x3E, 0x94, 0x00, 0x20, 0x36, 0x00, 0x3E, 0x63, 0x00, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9926, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x40, 0x00, 0x32, 0x7E, 0x00, 0x2C, 0x40, 0x00, 0x60, 0x7E, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x48, 0x00, 0x3E, 0x48, 0x80, 0x20, 0x4D, 0x80, 0x3E, 0x45, 0x00, 0x20, 0x46, 0x00, 0x3E, 0x73, 0x00, 0x21, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9927, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x0E, 0x00, 0x16, 0x78, 0x00, 0x33, 0x08, 0x00, 0x2C, 0xFF, 0x80, 0x60, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x22, 0xC9, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x10, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x22, 0x00, 0x3E, 0x44, 0x00, 0x20, 0x78, 0x00, 0x3E, 0x1E, 0x00, 0x20, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9928, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x00, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x992B, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x80, 0x80, 0x32, 0x88, 0x80, 0x2C, 0x7F, 0x00, 0x60, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x20, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x992C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x4F, 0x00, 0x16, 0x49, 0x00, 0x32, 0x49, 0x00, 0x2D, 0xF9, 0x00, 0x60, 0x4F, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x49, 0x00, 0x3E, 0xE9, 0x00, 0x22, 0xAF, 0x00, 0x3E, 0xA9, 0x00, 0x20, 0xA9, 0x00, 0x3E, 0xA9, 0x00, 0x20, 0xE9, 0x00, 0x3E, 0x09, 0x00, 0x20, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x992E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x9E, 0x00, 0x08, 0x73, 0x80, 0x1F, 0x08, 0x00, 0x69, 0x32, 0x00, 0x06, 0x0C, 0x80, 0x78, 0xC3, 0x00, 0x03, 0x30, 0x00, 0x0C, 0x8C, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFA, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9931, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x5E, 0x00, 0x16, 0x42, 0x00, 0x32, 0xC2, 0x00, 0x2C, 0xBF, 0x80, 0x61, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x22, 0xBF, 0x00, 0x3E, 0xA4, 0x00, 0x22, 0x84, 0x00, 0x3E, 0xBF, 0x80, 0x20, 0x8A, 0x00, 0x3E, 0x8A, 0x00, 0x20, 0x9B, 0x00, 0x3E, 0x91, 0x00, 0x20, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9932, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x1C, 0x42, 0x00, 0x16, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x2C, 0x42, 0x00, 0x60, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x20, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0xC8, 0x80, 0x3F, 0x88, 0x80, 0x20, 0x9C, 0x80, 0x3E, 0xB6, 0x80, 0x20, 0x81, 0x80, 0x3E, 0xF9, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9933, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7E, 0x00, 0x16, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x2C, 0x42, 0x00, 0x60, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x40, 0x00, 0x3E, 0xFF, 0x80, 0x21, 0x92, 0x80, 0x3E, 0x24, 0x80, 0x20, 0xC9, 0x80, 0x3E, 0x11, 0x00, 0x20, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9934, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x22, 0x00, 0x2C, 0x63, 0x00, 0x60, 0xC9, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x2A, 0x00, 0x3E, 0x22, 0x00, 0x20, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x20, 0x62, 0x00, 0x3E, 0x42, 0x00, 0x20, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9935, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x32, 0x49, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x48, 0x00, 0x20, 0x4C, 0x80, 0x3E, 0x45, 0x00, 0x20, 0x46, 0x00, 0x3E, 0x73, 0x00, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9939, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x88, 0x00, 0x2C, 0xBF, 0x00, 0x60, 0x89, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x89, 0x00, 0x3E, 0x89, 0x00, 0x22, 0xBF, 0x00, 0x3E, 0x88, 0x00, 0x20, 0xBF, 0x00, 0x3E, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3D, 0x21, 0x00, 0x20, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x993A, { 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x1C, 0x09, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x02, 0x00, 0x20, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x20, 0x12, 0x00, 0x3E, 0x02, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x993B, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x63, 0x00, 0x16, 0x22, 0x00, 0x32, 0xFF, 0x80, 0x2C, 0x08, 0x00, 0x60, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x20, 0x55, 0x00, 0x3E, 0xD5, 0x80, 0x20, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x993C, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x40, 0x00, 0x16, 0x7F, 0x00, 0x32, 0xC0, 0x00, 0x2C, 0xBC, 0x00, 0x61, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x3E, 0xA6, 0x00, 0x22, 0xAA, 0x00, 0x3E, 0x22, 0x00, 0x21, 0xFE, 0x00, 0x3E, 0x72, 0x00, 0x20, 0xAA, 0x80, 0x3D, 0x23, 0x80, 0x20, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x993D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x20, 0x00, 0x16, 0xFF, 0x00, 0x32, 0x91, 0x00, 0x2C, 0x91, 0x00, 0x60, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x22, 0x91, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x28, 0x00, 0x3E, 0x2A, 0x00, 0x20, 0x2A, 0x80, 0x3E, 0x6F, 0x80, 0x20, 0x48, 0x00, 0x3E, 0xC8, 0x80, 0x21, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x993E, { 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x1C, 0xEF, 0x80, 0x16, 0x82, 0x80, 0x32, 0x82, 0x80, 0x2C, 0xA6, 0x80, 0x60, 0xA4, 0x80, 0x3E, 0xFD, 0x80, 0x23, 0x90, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9940, { 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x1C, 0x1E, 0x00, 0x16, 0xF0, 0x00, 0x32, 0x12, 0x00, 0x2C, 0x5B, 0x00, 0x60, 0xC9, 0x80, 0x3E, 0x80, 0x80, 0x22, 0x30, 0x00, 0x3E, 0xE7, 0x00, 0x22, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x20, 0xE7, 0x00, 0x3E, 0x81, 0x00, 0x20, 0x81, 0x00, 0x3E, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9941, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0x7F, 0x00, 0x32, 0x08, 0x00, 0x2C, 0x08, 0x00, 0x60, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x4F, 0x00, 0x22, 0xF9, 0x80, 0x3E, 0x00, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x55, 0x00, 0x20, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x20, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9942, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x16, 0x49, 0x00, 0x32, 0x49, 0x00, 0x2C, 0x5D, 0x00, 0x60, 0x55, 0x00, 0x3E, 0x63, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x55, 0x00, 0x20, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x20, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x20, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9945, { 0x00, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x94, 0x80, 0x3E, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x20, 0x22, 0x00, 0x3E, 0x14, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x36, 0x00, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9946, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x91, 0x00, 0x32, 0xFF, 0x00, 0x2C, 0x91, 0x00, 0x60, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x52, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x20, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x20, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9947, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x80, 0x00, 0x32, 0x9E, 0x00, 0x2C, 0x92, 0x00, 0x60, 0x92, 0x00, 0x3E, 0x9E, 0x00, 0x22, 0x80, 0x00, 0x3E, 0xBB, 0x80, 0x22, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x20, 0xAA, 0x80, 0x3E, 0xBB, 0x80, 0x20, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9948, { 0x00, 0x00, 0x00, 0x08, 0x41, 0x00, 0x1C, 0x22, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x20, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x69, 0x00, 0x3E, 0x49, 0x00, 0x20, 0xFF, 0x80, 0x3D, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3E, 0x09, 0x00, 0x20, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9949, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x14, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x994B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x22, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x994C, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0xE7, 0x00, 0x22, 0xA5, 0x00, 0x00, 0xE7, 0x00, 0x3E, 0x94, 0x80, 0x00, 0xF7, 0x80, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x24, 0x00, 0x20, 0x24, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x3E, 0x42, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x994D, { 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x14, 0x12, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x49, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x994E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x33, 0x08, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x14, 0x00, 0x20, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x20, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9950, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x16, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x2C, 0x7F, 0x00, 0x60, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x3E, 0x3E, 0x00, 0x22, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x20, 0x22, 0x00, 0x3E, 0x14, 0x00, 0x20, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9951, { 0x00, 0x00, 0x00, 0x08, 0xA4, 0x00, 0x14, 0xA4, 0x00, 0x23, 0x29, 0x00, 0x01, 0x71, 0x00, 0x3C, 0xAE, 0x00, 0x00, 0xA4, 0x00, 0x3F, 0x3F, 0x80, 0x23, 0xF4, 0x00, 0x3E, 0x22, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x91, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x4C, 0x00, 0x20, 0x0C, 0x80, 0x3E, 0x32, 0x80, 0x20, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9952, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x3E, 0x3A, 0x00, 0x23, 0xCF, 0x80, 0x3E, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x3E, 0x24, 0x00, 0x20, 0x24, 0x00, 0x3E, 0x44, 0x80, 0x21, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9954, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x24, 0x14, 0x80, 0x15, 0x3F, 0x80, 0x0A, 0x65, 0x00, 0x0C, 0xBF, 0x00, 0x3F, 0x24, 0x00, 0x06, 0x7F, 0x80, 0x19, 0xB8, 0x00, 0x07, 0xFF, 0x80, 0x3C, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFD, 0x00, 0x04, 0x32, 0x00, 0x07, 0xEC, 0x00, 0x3C, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9955, { 0x00, 0x00, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x0F, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7F, 0x80, 0x7F, 0x48, 0x80, 0x10, 0x7E, 0x00, 0x1C, 0x48, 0x80, 0x04, 0x4F, 0x80, 0x3C, 0xD2, 0x00, 0x03, 0x33, 0x80, 0x0C, 0x8C, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xFA, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9957, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x09, 0xF7, 0x80, 0x33, 0x14, 0x80, 0x0D, 0xF4, 0x80, 0x09, 0x14, 0x80, 0x33, 0xF4, 0x80, 0x0D, 0x04, 0x80, 0x09, 0xF5, 0x80, 0x31, 0x24, 0x00, 0x07, 0xF8, 0x00, 0x3C, 0x0F, 0x80, 0x07, 0xF8, 0x00, 0x07, 0xFA, 0x00, 0x04, 0x24, 0x00, 0x05, 0xF8, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9958, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1D, 0xFF, 0x80, 0x16, 0x00, 0x00, 0x32, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x60, 0xBD, 0x00, 0x3E, 0xA5, 0x00, 0x22, 0xBD, 0x00, 0x3E, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x42, 0x00, 0x20, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x20, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9959, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1C, 0xFF, 0x00, 0x16, 0x10, 0x00, 0x32, 0x42, 0x00, 0x2D, 0xFF, 0x80, 0x60, 0x42, 0x00, 0x3E, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x22, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x3E, 0x81, 0x00, 0x20, 0xFF, 0x00, 0x3E, 0x42, 0x00, 0x21, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x995B, { 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x1D, 0xFF, 0x80, 0x16, 0x24, 0x00, 0x32, 0xFF, 0x00, 0x2C, 0x81, 0x00, 0x60, 0xBD, 0x00, 0x3E, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x3E, 0x20, 0x00, 0x22, 0x51, 0x80, 0x3E, 0xAB, 0x00, 0x20, 0x48, 0x00, 0x3E, 0x9C, 0x00, 0x20, 0x2A, 0x00, 0x3E, 0xC9, 0x80, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x995C, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x8A, 0x00, 0x2F, 0x89, 0x00, 0x28, 0xFF, 0x80, 0x2F, 0x94, 0x00, 0x28, 0xB6, 0x00, 0x2F, 0xE3, 0x00, 0x28, 0x81, 0x80, 0x40, 0xC0, 0x00, 0x03, 0x30, 0x00, 0x0C, 0x8C, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xFA, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x995E, { 0x00, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x1C, 0x48, 0x00, 0x17, 0xFF, 0x00, 0x32, 0x81, 0x00, 0x2C, 0xFF, 0x00, 0x60, 0x44, 0x00, 0x3E, 0x77, 0x00, 0x22, 0x44, 0x80, 0x3E, 0xF3, 0x80, 0x22, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x20, 0x91, 0x00, 0x3E, 0xFF, 0x00, 0x20, 0x2A, 0x00, 0x3E, 0x68, 0x80, 0x20, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x995F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0x00, 0x00, 0x33, 0x77, 0x00, 0x2C, 0x55, 0x00, 0x60, 0x77, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x22, 0x00, 0x20, 0xFF, 0x80, 0x3E, 0x14, 0x00, 0x20, 0xE5, 0x00, 0x3E, 0x3A, 0x00, 0x20, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9960, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0xFF, 0x80, 0x16, 0xA4, 0x80, 0x32, 0xFF, 0x80, 0x2C, 0x00, 0x00, 0x60, 0x42, 0x80, 0x3E, 0x87, 0x80, 0x22, 0xAD, 0x00, 0x3E, 0x45, 0x00, 0x22, 0x97, 0x80, 0x3E, 0xF5, 0x00, 0x20, 0x55, 0x00, 0x3E, 0x47, 0x80, 0x20, 0xD5, 0x00, 0x3D, 0x55, 0x00, 0x20, 0x47, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9963, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x10, 0x00, 0x00, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x80, 0x00, 0x05, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9965, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0xFC, 0x00, 0x1E, 0x88, 0x00, 0x12, 0x88, 0x00, 0x24, 0x88, 0x00, 0x20, 0x88, 0x00, 0x50, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x12, 0x88, 0x00, 0x14, 0x89, 0x00, 0x19, 0x09, 0x00, 0x12, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9967, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x20, 0x00, 0x22, 0x40, 0x00, 0x44, 0x82, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x4A, 0x00, 0x10, 0x92, 0x00, 0x12, 0x92, 0x00, 0x15, 0x22, 0x00, 0x19, 0x22, 0x00, 0x12, 0x54, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9968, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x1F, 0xFF, 0x00, 0x22, 0x20, 0x00, 0x45, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x24, 0x00, 0x14, 0x20, 0x00, 0x18, 0x21, 0x00, 0x10, 0x21, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9969, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x82, 0x00, 0x1E, 0xFF, 0x00, 0x23, 0x00, 0x00, 0x44, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x12, 0x04, 0x00, 0x14, 0x04, 0x00, 0x18, 0x05, 0x00, 0x10, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x996A, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xE0, 0x00, 0x1E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x44, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x12, 0x20, 0x00, 0x14, 0x20, 0x00, 0x18, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x996B, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x1E, 0x00, 0x11, 0xE0, 0x00, 0x1E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x44, 0x20, 0x00, 0x10, 0x22, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x12, 0x50, 0x00, 0x14, 0x88, 0x00, 0x18, 0x84, 0x00, 0x11, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x996C, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0xA0, 0x00, 0x23, 0x20, 0x00, 0x44, 0x22, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x10, 0x22, 0x00, 0x12, 0x22, 0x00, 0x14, 0x42, 0x00, 0x18, 0x42, 0x00, 0x10, 0x94, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x996D, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0E, 0x00, 0x10, 0xF0, 0x00, 0x1E, 0x80, 0x00, 0x12, 0x80, 0x00, 0x24, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x50, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA8, 0x00, 0x10, 0x98, 0x00, 0x12, 0x90, 0x00, 0x14, 0xA8, 0x00, 0x19, 0x24, 0x00, 0x12, 0x47, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x996E, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x3F, 0x00, 0x11, 0x41, 0x00, 0x12, 0x92, 0x00, 0x28, 0x10, 0x00, 0x48, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x09, 0x28, 0x00, 0x0A, 0x48, 0x00, 0x0C, 0x44, 0x00, 0x08, 0x87, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x996F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x28, 0x00, 0x10, 0x24, 0x00, 0x1E, 0x20, 0x00, 0x12, 0x3E, 0x00, 0x25, 0xE0, 0x00, 0x20, 0x24, 0x00, 0x50, 0x3E, 0x00, 0x11, 0xE0, 0x00, 0x10, 0x24, 0x00, 0x10, 0x28, 0x00, 0x12, 0x10, 0x00, 0x14, 0x30, 0x00, 0x18, 0x49, 0x00, 0x11, 0x85, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9970, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x90, 0x00, 0x25, 0x12, 0x00, 0x20, 0xFF, 0x00, 0x50, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x12, 0x92, 0x00, 0x14, 0x9A, 0x00, 0x18, 0x94, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9971, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x82, 0x00, 0x25, 0x0A, 0x00, 0x22, 0xFE, 0x00, 0x50, 0x8A, 0x00, 0x10, 0x8A, 0x00, 0x10, 0xFA, 0x00, 0x10, 0x8A, 0x00, 0x12, 0x84, 0x00, 0x14, 0x81, 0x00, 0x18, 0x81, 0x00, 0x10, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9972, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x10, 0x02, 0x00, 0x1E, 0x12, 0x00, 0x13, 0xFA, 0x00, 0x24, 0x02, 0x00, 0x20, 0x02, 0x00, 0x51, 0xFA, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x11, 0x12, 0x00, 0x13, 0x12, 0x00, 0x15, 0xF2, 0x00, 0x19, 0x02, 0x00, 0x10, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9974, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x20, 0x00, 0x0F, 0x20, 0x00, 0x11, 0x44, 0x00, 0x22, 0x82, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x82, 0x00, 0x09, 0x82, 0x00, 0x0A, 0x82, 0x00, 0x0C, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9975, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1E, 0x84, 0x00, 0x12, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x20, 0x84, 0x00, 0x50, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x14, 0x04, 0x00, 0x18, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9976, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x44, 0x00, 0x1C, 0x7E, 0x00, 0x27, 0xC0, 0x00, 0x28, 0x28, 0x00, 0x40, 0x11, 0x00, 0x10, 0x69, 0x00, 0x13, 0x87, 0x00, 0x10, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x90, 0x00, 0x14, 0x90, 0x00, 0x18, 0x91, 0x00, 0x11, 0x11, 0x00, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9977, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x23, 0x02, 0x00, 0x45, 0x02, 0x00, 0x11, 0x7A, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x11, 0x4A, 0x00, 0x13, 0x7A, 0x00, 0x15, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0x0A, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x997A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x10, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x24, 0x44, 0x00, 0x20, 0x83, 0x00, 0x51, 0x01, 0x00, 0x10, 0x44, 0x00, 0x10, 0x28, 0x00, 0x10, 0x10, 0x00, 0x12, 0x28, 0x00, 0x14, 0x28, 0x00, 0x18, 0x44, 0x00, 0x10, 0x83, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x997C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x48, 0x00, 0x1E, 0x00, 0x00, 0x23, 0xFE, 0x00, 0x24, 0x48, 0x00, 0x50, 0x48, 0x00, 0x10, 0x4A, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x48, 0x00, 0x10, 0x48, 0x00, 0x12, 0x48, 0x00, 0x14, 0x48, 0x00, 0x18, 0x88, 0x00, 0x11, 0x08, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x997D, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x1E, 0x20, 0x00, 0x22, 0x20, 0x00, 0x45, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x12, 0x04, 0x00, 0x10, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x10, 0x22, 0x00, 0x13, 0xFF, 0x00, 0x14, 0x20, 0x00, 0x18, 0x20, 0x00, 0x10, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x997F, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x68, 0x00, 0x11, 0xCA, 0x00, 0x1E, 0x49, 0x00, 0x12, 0x48, 0x00, 0x25, 0xFF, 0x00, 0x20, 0x48, 0x00, 0x50, 0x48, 0x00, 0x10, 0x6A, 0x00, 0x10, 0xCC, 0x00, 0x11, 0x48, 0x00, 0x10, 0x54, 0x00, 0x14, 0x64, 0x00, 0x18, 0x45, 0x00, 0x11, 0x43, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9980, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x50, 0x00, 0x1E, 0x50, 0x00, 0x22, 0x88, 0x00, 0x45, 0x04, 0x00, 0x12, 0xFB, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x10, 0xA8, 0x00, 0x15, 0x26, 0x00, 0x1A, 0x22, 0x00, 0x10, 0xA0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9981, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x13, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x1D, 0x22, 0x00, 0x24, 0x92, 0x00, 0x28, 0x94, 0x00, 0x40, 0x40, 0x00, 0x10, 0x42, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x14, 0x50, 0x00, 0x18, 0x70, 0x00, 0x10, 0x8C, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9984, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x23, 0xFC, 0x00, 0x45, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x10, 0x00, 0x11, 0x12, 0x00, 0x11, 0xD4, 0x00, 0x13, 0x18, 0x00, 0x15, 0x11, 0x00, 0x19, 0x51, 0x00, 0x11, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9985, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7C, 0x00, 0x1E, 0x84, 0x00, 0x13, 0x08, 0x00, 0x24, 0x12, 0x00, 0x20, 0xCF, 0x00, 0x51, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0xCE, 0x00, 0x13, 0x02, 0x00, 0x15, 0x02, 0x00, 0x19, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9986, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x20, 0x00, 0x11, 0xFF, 0x00, 0x1D, 0x01, 0x00, 0x26, 0x02, 0x00, 0x28, 0xFC, 0x00, 0x40, 0x84, 0x00, 0x10, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x12, 0x84, 0x00, 0x14, 0x84, 0x00, 0x18, 0x84, 0x00, 0x10, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9987, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x13, 0xFE, 0x00, 0x1E, 0x70, 0x00, 0x22, 0xA8, 0x00, 0x45, 0x24, 0x00, 0x12, 0x23, 0x00, 0x15, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x15, 0x04, 0x00, 0x18, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9988, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFE, 0x00, 0x1D, 0x24, 0x00, 0x25, 0xFC, 0x00, 0x28, 0x20, 0x00, 0x47, 0xFF, 0x00, 0x10, 0x04, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x15, 0x24, 0x00, 0x18, 0x58, 0x00, 0x10, 0x86, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x998A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x52, 0x00, 0x10, 0x97, 0x00, 0x1E, 0x92, 0x00, 0x22, 0x92, 0x00, 0x44, 0xD6, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0xFE, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x44, 0x00, 0x14, 0x28, 0x00, 0x18, 0x10, 0x00, 0x10, 0x6C, 0x00, 0x03, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x998B, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x78, 0x00, 0x1C, 0x90, 0x00, 0x25, 0xFC, 0x00, 0x2B, 0x24, 0x00, 0x41, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x51, 0x00, 0x10, 0x91, 0x00, 0x13, 0x0F, 0x00, 0x10, 0x60, 0x00, 0x14, 0x18, 0x00, 0x18, 0xC0, 0x00, 0x10, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x998D, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8A, 0x00, 0x13, 0xFF, 0x00, 0x1C, 0x88, 0x00, 0x24, 0x88, 0x00, 0x49, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x14, 0x50, 0x00, 0x18, 0x88, 0x00, 0x11, 0x07, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x998F, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x13, 0xBF, 0x00, 0x12, 0x12, 0x00, 0x1E, 0x92, 0x00, 0x26, 0x52, 0x00, 0x2A, 0x92, 0x00, 0x43, 0x2A, 0x00, 0x10, 0x44, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x16, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9990, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x13, 0xFE, 0x00, 0x1C, 0x20, 0x00, 0x25, 0xFE, 0x00, 0x48, 0x20, 0x00, 0x07, 0xFF, 0x00, 0x10, 0x44, 0x00, 0x10, 0xFE, 0x00, 0x10, 0xA4, 0x00, 0x11, 0x24, 0x00, 0x15, 0xFC, 0x00, 0x1A, 0x44, 0x00, 0x14, 0x44, 0x00, 0x0B, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9991, { 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8A, 0x00, 0x13, 0xFF, 0x00, 0x1C, 0x88, 0x00, 0x24, 0xF8, 0x00, 0x48, 0x20, 0x00, 0x01, 0xFC, 0x00, 0x11, 0x24, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x15, 0xFC, 0x00, 0x18, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9992, { 0x00, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x1D, 0x02, 0x00, 0x15, 0xFE, 0x00, 0x24, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x42, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x11, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x14, 0x48, 0x00, 0x18, 0x30, 0x00, 0x10, 0xCF, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9993, { 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x11, 0x44, 0x00, 0x1F, 0xE8, 0x00, 0x25, 0x4F, 0x00, 0x49, 0x52, 0x00, 0x07, 0xFA, 0x00, 0x10, 0x0A, 0x00, 0x13, 0xEA, 0x00, 0x12, 0x2A, 0x00, 0x13, 0xE4, 0x00, 0x12, 0x24, 0x00, 0x17, 0xEA, 0x00, 0x1A, 0x2A, 0x00, 0x12, 0xB2, 0x00, 0x02, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9994, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x13, 0xDF, 0x00, 0x12, 0x52, 0x00, 0x1E, 0x52, 0x00, 0x27, 0xDE, 0x00, 0x4A, 0x10, 0x00, 0x02, 0x52, 0x00, 0x13, 0xDE, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x88, 0x00, 0x10, 0x8A, 0x00, 0x17, 0xFF, 0x00, 0x18, 0x88, 0x00, 0x11, 0x06, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9995, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x1D, 0xFC, 0x00, 0x25, 0x24, 0x00, 0x4B, 0xFF, 0x00, 0x02, 0x89, 0x00, 0x15, 0xFE, 0x00, 0x10, 0x88, 0x00, 0x11, 0xFC, 0x00, 0x10, 0x88, 0x00, 0x13, 0xFF, 0x00, 0x14, 0xA4, 0x00, 0x19, 0x98, 0x00, 0x16, 0xC7, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9996, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9997, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x10, 0x24, 0x00, 0x11, 0xFF, 0x80, 0x10, 0x10, 0x00, 0x7E, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x32, 0x7E, 0x80, 0x23, 0x01, 0x80, 0x61, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9998, { 0x00, 0x00, 0x00, 0x21, 0x05, 0x00, 0x33, 0x04, 0x80, 0x12, 0x04, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x21, 0x74, 0x80, 0x21, 0x54, 0x80, 0x3F, 0x56, 0x80, 0x21, 0x53, 0x00, 0x21, 0x72, 0x00, 0x3F, 0x02, 0x00, 0x21, 0x72, 0x00, 0x21, 0x06, 0x80, 0x3F, 0x1B, 0x80, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9999, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x999B, { 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x0E, 0x13, 0x00, 0x38, 0x11, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x1C, 0x11, 0x00, 0x2A, 0x39, 0x00, 0x49, 0x2B, 0x00, 0x3E, 0x6A, 0x00, 0x22, 0x4E, 0x00, 0x22, 0xC4, 0x00, 0x3E, 0x0E, 0x00, 0x22, 0x1A, 0x00, 0x22, 0x33, 0x00, 0x3E, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x999D, { 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x1C, 0x09, 0x00, 0x04, 0x05, 0x00, 0x3F, 0x81, 0x00, 0x0E, 0x12, 0x00, 0x15, 0x12, 0x00, 0x14, 0x92, 0x00, 0x24, 0x12, 0x00, 0x1F, 0x14, 0x00, 0x11, 0x55, 0x00, 0x11, 0x58, 0x80, 0x1F, 0x58, 0x80, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x999F, { 0x00, 0x00, 0x00, 0x02, 0x03, 0x80, 0x0E, 0xFE, 0x00, 0x38, 0x29, 0x00, 0x08, 0x6D, 0x80, 0x7F, 0x44, 0x80, 0x08, 0x00, 0x00, 0x1C, 0x7F, 0x00, 0x2A, 0x02, 0x00, 0x49, 0x04, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99A5, { 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xC0, 0x00, 0x0E, 0xBF, 0x00, 0x15, 0x21, 0x00, 0x14, 0xBF, 0x00, 0x24, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x08, 0x00, 0x11, 0x1F, 0x80, 0x1F, 0x21, 0x00, 0x11, 0x52, 0x00, 0x11, 0x8C, 0x00, 0x1F, 0x16, 0x00, 0x11, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99A6, { 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x0E, 0x12, 0x00, 0x38, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x15, 0x00, 0x1C, 0x15, 0x00, 0x2A, 0xFF, 0x80, 0x49, 0x15, 0x00, 0x3E, 0x15, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x14, 0x00, 0x3E, 0x36, 0x00, 0x22, 0x55, 0x00, 0x22, 0x94, 0x80, 0x3E, 0x14, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99A8, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xDE, 0x00, 0x02, 0x12, 0x80, 0x3F, 0xD3, 0x80, 0x00, 0x20, 0x00, 0x1F, 0xDF, 0x80, 0x12, 0x49, 0x00, 0x1F, 0xC6, 0x00, 0x20, 0xFA, 0x00, 0x0F, 0x51, 0x80, 0x3F, 0xFF, 0x80, 0x03, 0x4C, 0x00, 0x0F, 0xFF, 0x80, 0x37, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99AC, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x04, 0x80, 0x00, 0x22, 0x80, 0x02, 0x11, 0x80, 0x11, 0x08, 0x80, 0x10, 0x81, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xBF, 0x80, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x1F, 0x91, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x0A, 0x00, 0x1F, 0x8A, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x11, 0x4A, 0x00, 0x02, 0xCA, 0x00, 0x09, 0x51, 0x00, 0x24, 0x91, 0x00, 0x23, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99AE, { 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x04, 0x80, 0x10, 0x12, 0x80, 0x10, 0x48, 0x80, 0x21, 0x21, 0x00, 0x22, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99B0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x24, 0x10, 0x00, 0x24, 0x1F, 0x80, 0x3F, 0xB0, 0x80, 0x24, 0x20, 0x80, 0x24, 0x60, 0x80, 0x3F, 0x80, 0x80, 0x24, 0x1E, 0x80, 0x24, 0x00, 0x80, 0x3F, 0xC0, 0x80, 0x00, 0x40, 0x80, 0x55, 0x40, 0x80, 0x55, 0x41, 0x80, 0x40, 0xC1, 0x00, 0x01, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99B1, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x22, 0x94, 0x00, 0x05, 0x94, 0x00, 0x12, 0x92, 0x00, 0x28, 0xA2, 0x00, 0x21, 0x21, 0x00, 0x26, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99B2, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3F, 0x8E, 0x00, 0x24, 0x78, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x00, 0x48, 0x00, 0x55, 0x48, 0x80, 0x55, 0x48, 0x80, 0x40, 0xCC, 0x80, 0x01, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99B3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x28, 0x08, 0x00, 0x28, 0x48, 0x00, 0x3E, 0x4B, 0x00, 0x28, 0x5D, 0x00, 0x28, 0xE9, 0x00, 0x3E, 0x49, 0x00, 0x28, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x25, 0x4B, 0x00, 0x0B, 0x48, 0x00, 0x15, 0x48, 0x00, 0x09, 0x40, 0x80, 0x21, 0x7F, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99B4, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1F, 0xD5, 0x00, 0x12, 0x15, 0x00, 0x1F, 0xD5, 0x00, 0x12, 0x15, 0x00, 0x12, 0x15, 0x00, 0x1F, 0xD5, 0x00, 0x12, 0x15, 0x00, 0x12, 0x15, 0x00, 0x1F, 0xD5, 0x00, 0x11, 0x55, 0x00, 0x00, 0xD5, 0x00, 0x02, 0x55, 0x00, 0x0A, 0x55, 0x00, 0x28, 0x95, 0x00, 0x23, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99B5, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x24, 0x91, 0x00, 0x66, 0xD9, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x06, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x9F, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x1F, 0x91, 0x00, 0x12, 0x11, 0x00, 0x1F, 0x91, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x11, 0x00, 0x1F, 0xD1, 0x00, 0x11, 0x51, 0x00, 0x04, 0xD1, 0x00, 0x12, 0x51, 0x00, 0x08, 0x5F, 0x00, 0x20, 0x91, 0x00, 0x23, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x11, 0x00, 0x24, 0x13, 0x00, 0x3F, 0x12, 0x00, 0x24, 0x1F, 0x80, 0x24, 0x10, 0x80, 0x3F, 0x38, 0x80, 0x24, 0x29, 0x80, 0x24, 0x2D, 0x00, 0x3F, 0xA5, 0x00, 0x00, 0xA7, 0x00, 0x2A, 0xC2, 0x00, 0x6A, 0x87, 0x00, 0x41, 0x8D, 0x00, 0x03, 0x39, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99BC, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x24, 0x04, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0x91, 0x00, 0x24, 0x11, 0x00, 0x24, 0x1B, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x0A, 0x00, 0x24, 0x0E, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x4A, 0x00, 0x40, 0xDB, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99BD, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x24, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0xC3, 0x80, 0x22, 0x1E, 0x00, 0x22, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x22, 0x10, 0x80, 0x22, 0x10, 0x80, 0x3F, 0x9F, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3F, 0xD0, 0x00, 0x00, 0x50, 0x00, 0x55, 0x50, 0x00, 0x55, 0x50, 0x00, 0x40, 0xD0, 0x00, 0x01, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA2, 0x00, 0x14, 0x14, 0x00, 0x14, 0x0C, 0x00, 0x1F, 0x92, 0x00, 0x14, 0x61, 0x00, 0x14, 0x00, 0x00, 0x1F, 0xA2, 0x00, 0x14, 0x22, 0x00, 0x14, 0x14, 0x00, 0x1F, 0xD4, 0x00, 0x12, 0x48, 0x00, 0x05, 0x54, 0x00, 0x12, 0x52, 0x00, 0x28, 0xA1, 0x00, 0x23, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99C3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x08, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5B, 0x00, 0x40, 0xD1, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99C4, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3F, 0x8E, 0x00, 0x22, 0x0A, 0x00, 0x22, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x5B, 0x00, 0x55, 0x51, 0x00, 0x55, 0x55, 0x00, 0x40, 0xD5, 0x80, 0x01, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x14, 0x00, 0x24, 0x14, 0x00, 0x3F, 0xD6, 0x00, 0x00, 0x52, 0x00, 0x55, 0x52, 0x00, 0x55, 0x53, 0x00, 0x40, 0xD1, 0x00, 0x01, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x80, 0x22, 0x10, 0x00, 0x22, 0x10, 0x00, 0x3F, 0x95, 0x00, 0x22, 0x15, 0x00, 0x22, 0x15, 0x00, 0x3F, 0x92, 0x00, 0x22, 0x12, 0x00, 0x22, 0x12, 0x00, 0x3F, 0xD5, 0x00, 0x00, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x50, 0x00, 0x40, 0xD0, 0x00, 0x03, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99C8, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x3F, 0xC6, 0x00, 0x22, 0x1C, 0x00, 0x22, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x22, 0x1F, 0x80, 0x22, 0x12, 0x00, 0x3F, 0x92, 0x00, 0x22, 0x12, 0x00, 0x22, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x55, 0x52, 0x00, 0x55, 0x52, 0x00, 0x40, 0xD2, 0x00, 0x03, 0xBF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x24, 0x55, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x5D, 0x00, 0x01, 0x41, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x43, 0x41, 0x00, 0x06, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x88, 0x00, 0x12, 0x04, 0x00, 0x12, 0x7F, 0x80, 0x1F, 0x84, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x12, 0x3F, 0x80, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x11, 0x44, 0x00, 0x04, 0xC4, 0x00, 0x0A, 0x44, 0x00, 0x28, 0xBF, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D1, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xA2, 0x00, 0x09, 0x14, 0x00, 0x1A, 0x08, 0x00, 0x26, 0x14, 0x00, 0x09, 0x23, 0x80, 0x3F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x02, 0x80, 0x11, 0x10, 0x80, 0x20, 0x8B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x24, 0x20, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0x40, 0x80, 0x24, 0x80, 0x80, 0x24, 0x00, 0x80, 0x3F, 0x3C, 0x80, 0x24, 0x24, 0x80, 0x24, 0x24, 0x80, 0x3F, 0xBC, 0x80, 0x22, 0xA4, 0x80, 0x05, 0x80, 0x80, 0x12, 0x81, 0x00, 0x29, 0x01, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x0C, 0x00, 0x24, 0x08, 0x00, 0x24, 0x1A, 0x00, 0x3F, 0x3A, 0x00, 0x24, 0x6B, 0x00, 0x24, 0xC9, 0x80, 0x3F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x00, 0x00, 0x43, 0x7F, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x22, 0x1F, 0x00, 0x22, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x22, 0x11, 0x00, 0x22, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x00, 0x51, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x00, 0x40, 0xFF, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D5, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x10, 0xA1, 0x00, 0x13, 0xBF, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x14, 0x90, 0x80, 0x22, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99D8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xC8, 0x00, 0x24, 0x18, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x17, 0x80, 0x24, 0x3C, 0x80, 0x3F, 0x80, 0x00, 0x24, 0x00, 0x00, 0x24, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x00, 0x51, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x00, 0x40, 0xD1, 0x00, 0x01, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99D9, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x3F, 0x7F, 0x80, 0x28, 0xA2, 0x00, 0x28, 0x22, 0x00, 0x3F, 0x2A, 0x00, 0x28, 0x26, 0x00, 0x28, 0x22, 0x00, 0x3F, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x05, 0xA2, 0x00, 0x0A, 0xA2, 0x00, 0x28, 0xA2, 0x00, 0x23, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99DA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x14, 0x00, 0x3F, 0x14, 0x00, 0x01, 0x14, 0x00, 0x55, 0x36, 0x00, 0x55, 0x22, 0x00, 0x43, 0x63, 0x00, 0x06, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99DB, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x24, 0x04, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x24, 0x24, 0x80, 0x24, 0x24, 0x80, 0x3F, 0xBF, 0x80, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0xD4, 0x00, 0x00, 0x4C, 0x00, 0x55, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x40, 0xDB, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99DC, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3F, 0x0C, 0x00, 0x24, 0x04, 0x00, 0x24, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x56, 0x00, 0x3F, 0x55, 0x00, 0x24, 0xD5, 0x80, 0x24, 0x9C, 0x80, 0x3F, 0x18, 0x00, 0x01, 0x10, 0x00, 0x55, 0x30, 0x00, 0x55, 0xD0, 0x80, 0x43, 0x19, 0x80, 0x06, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99DD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x80, 0x80, 0x24, 0x00, 0x00, 0x3F, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x13, 0x80, 0x3F, 0x9C, 0x00, 0x22, 0x90, 0x00, 0x05, 0x90, 0x00, 0x12, 0x90, 0x80, 0x28, 0x90, 0x80, 0x20, 0x9F, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99DE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x24, 0x20, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x24, 0xC4, 0x00, 0x24, 0x25, 0x80, 0x3F, 0x26, 0x80, 0x24, 0x2C, 0x80, 0x24, 0x34, 0x80, 0x3F, 0x65, 0x80, 0x01, 0x24, 0x00, 0x55, 0x24, 0x00, 0x55, 0x20, 0x80, 0x43, 0x31, 0x80, 0x06, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x80, 0x28, 0x2A, 0x80, 0x28, 0x2A, 0x80, 0x3F, 0x2A, 0x80, 0x28, 0x2A, 0x80, 0x28, 0x2A, 0x80, 0x3F, 0x2B, 0x80, 0x28, 0x30, 0x80, 0x28, 0x20, 0x80, 0x3F, 0xA0, 0x80, 0x22, 0xA0, 0x80, 0x05, 0xA0, 0x80, 0x12, 0xA0, 0x80, 0x29, 0x3F, 0x80, 0x22, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99E2, { 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xB3, 0x00, 0x24, 0x12, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x55, 0x52, 0x00, 0x55, 0x52, 0x00, 0x40, 0xD2, 0x00, 0x01, 0xA2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x3F, 0x5D, 0x00, 0x24, 0x41, 0x00, 0x24, 0x41, 0x00, 0x3F, 0x5D, 0x00, 0x24, 0x55, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x01, 0x5D, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x43, 0x41, 0x00, 0x06, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99EA, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xD4, 0x00, 0x24, 0x14, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0xA4, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x0A, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x5A, 0x00, 0x55, 0x52, 0x80, 0x40, 0xD2, 0x80, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99EB, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xA4, 0x80, 0x24, 0x35, 0x80, 0x24, 0x15, 0x00, 0x3F, 0x95, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x0A, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5A, 0x80, 0x40, 0xD2, 0x80, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x1F, 0x00, 0x24, 0x11, 0x00, 0x3F, 0xD1, 0x00, 0x00, 0x51, 0x80, 0x55, 0x5F, 0x00, 0x55, 0x71, 0x00, 0x40, 0xC1, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99ED, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x28, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x28, 0x10, 0x00, 0x28, 0xA2, 0x00, 0x3E, 0x42, 0x00, 0x28, 0x24, 0x80, 0x28, 0x18, 0x80, 0x3F, 0x11, 0x00, 0x25, 0x22, 0x00, 0x0B, 0xC4, 0x00, 0x05, 0x0A, 0x00, 0x29, 0x31, 0x00, 0x26, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99EE, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x0A, 0x00, 0x3F, 0x9B, 0x00, 0x24, 0x31, 0x80, 0x24, 0x00, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x1B, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xCE, 0x00, 0x00, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x4A, 0x00, 0x40, 0xDB, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x24, 0x5D, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x01, 0x63, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x43, 0x7F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99F1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x28, 0x3F, 0x00, 0x28, 0x21, 0x00, 0x3F, 0x52, 0x00, 0x28, 0x8C, 0x00, 0x3F, 0x0C, 0x00, 0x28, 0x12, 0x00, 0x28, 0x21, 0x80, 0x3F, 0xC0, 0x00, 0x25, 0x3F, 0x00, 0x0B, 0x21, 0x00, 0x25, 0x21, 0x00, 0x11, 0x21, 0x00, 0x42, 0x3F, 0x00, 0x4C, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x24, 0x80, 0x24, 0x24, 0x80, 0x24, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x24, 0x24, 0x80, 0x24, 0x6D, 0x80, 0x3F, 0x6D, 0x80, 0x24, 0x24, 0x80, 0x24, 0x24, 0x80, 0x3F, 0x24, 0x80, 0x01, 0x24, 0x80, 0x55, 0x24, 0x80, 0x55, 0x64, 0x80, 0x43, 0x40, 0x80, 0x06, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99F4, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3F, 0x05, 0x00, 0x24, 0x04, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x24, 0x54, 0x00, 0x24, 0x54, 0x00, 0x3F, 0x55, 0x00, 0x24, 0xFD, 0x00, 0x24, 0x56, 0x00, 0x3F, 0x56, 0x00, 0x01, 0x54, 0x00, 0x55, 0x8E, 0x80, 0x55, 0x1A, 0x80, 0x43, 0x33, 0x80, 0x06, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x0A, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xBB, 0x80, 0x24, 0x2A, 0x80, 0x24, 0x2A, 0x80, 0x3F, 0xAA, 0x80, 0x24, 0x2A, 0x80, 0x24, 0x3B, 0x80, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5A, 0x00, 0x40, 0xD2, 0x00, 0x01, 0xB2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x24, 0x01, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0x81, 0x00, 0x24, 0x1F, 0x00, 0x24, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x20, 0x80, 0x24, 0x1F, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x4B, 0x00, 0x55, 0x46, 0x00, 0x55, 0x4C, 0x00, 0x40, 0xDB, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99F9, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x3F, 0x2C, 0x00, 0x24, 0x24, 0x00, 0x24, 0xFF, 0x80, 0x3E, 0x21, 0x00, 0x24, 0x23, 0x00, 0x24, 0x26, 0x00, 0x3F, 0x2C, 0x80, 0x24, 0x21, 0x80, 0x24, 0x73, 0x00, 0x3F, 0x56, 0x00, 0x01, 0x50, 0x80, 0x55, 0x51, 0x80, 0x55, 0x57, 0x00, 0x43, 0x58, 0x80, 0x06, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xDF, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x00, 0x00, 0x24, 0x1F, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x44, 0x00, 0x40, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x00, 0x00, 0x24, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x11, 0x00, 0x24, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x00, 0x51, 0x00, 0x55, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x40, 0xD1, 0x00, 0x01, 0x93, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x99FE, { 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0x93, 0x00, 0x24, 0x31, 0x80, 0x24, 0x20, 0x80, 0x3F, 0x9F, 0x00, 0x24, 0x11, 0x00, 0x24, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x1F, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5A, 0x80, 0x40, 0xD2, 0x80, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x99FF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x24, 0x22, 0x00, 0x24, 0x4F, 0x00, 0x3F, 0xF4, 0x80, 0x24, 0x24, 0x00, 0x24, 0x24, 0x80, 0x3F, 0x47, 0x80, 0x24, 0x90, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0x42, 0x00, 0x25, 0xA4, 0x00, 0x0B, 0x18, 0x00, 0x15, 0x18, 0x00, 0x29, 0x26, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A01, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x24, 0x80, 0x3F, 0xBF, 0x80, 0x24, 0x24, 0x80, 0x24, 0x3F, 0x80, 0x3F, 0xA0, 0x80, 0x24, 0x00, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x90, 0x00, 0x0A, 0x9F, 0x80, 0x15, 0xA0, 0x80, 0x08, 0x80, 0x80, 0x21, 0x01, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A02, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x00, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x1B, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x7F, 0x80, 0x55, 0x44, 0x00, 0x55, 0x44, 0x00, 0x40, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A03, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xCA, 0x00, 0x24, 0x1A, 0x00, 0x24, 0x17, 0x00, 0x3F, 0xBD, 0x80, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x34, 0x00, 0x24, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5B, 0x00, 0x40, 0xD1, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A04, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x1F, 0x00, 0x24, 0x31, 0x00, 0x24, 0x23, 0x00, 0x3F, 0x7E, 0x00, 0x24, 0x02, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x24, 0x48, 0x80, 0x24, 0x69, 0x80, 0x3F, 0x2D, 0x00, 0x01, 0x1E, 0x00, 0x55, 0x2B, 0x00, 0x55, 0x69, 0x80, 0x43, 0xC8, 0x00, 0x06, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A05, { 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xCB, 0x00, 0x24, 0x0A, 0x00, 0x24, 0x1F, 0x80, 0x3F, 0x92, 0x00, 0x24, 0x32, 0x00, 0x24, 0x12, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x00, 0x5F, 0x00, 0x55, 0x52, 0x00, 0x55, 0x52, 0x00, 0x40, 0xD2, 0x00, 0x01, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A08, { 0x00, 0x00, 0x00, 0x3F, 0x11, 0x00, 0x28, 0x11, 0x00, 0x28, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x28, 0x22, 0x00, 0x28, 0x3A, 0x00, 0x3F, 0xEF, 0x80, 0x25, 0x22, 0x00, 0x03, 0x22, 0x00, 0x09, 0x22, 0x00, 0x25, 0x42, 0x00, 0x51, 0x42, 0x00, 0x46, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A0B, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x3F, 0x49, 0x00, 0x24, 0x49, 0x00, 0x24, 0x49, 0x00, 0x3F, 0xEB, 0x80, 0x24, 0xAA, 0x80, 0x24, 0x1C, 0x00, 0x3F, 0x1C, 0x00, 0x01, 0x2A, 0x00, 0x55, 0x2A, 0x00, 0x55, 0x6B, 0x00, 0x43, 0xC9, 0x80, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A0C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x20, 0x80, 0x3F, 0xA0, 0x80, 0x24, 0x1F, 0x00, 0x24, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x24, 0x3F, 0x80, 0x24, 0x04, 0x00, 0x3F, 0xD5, 0x00, 0x00, 0x55, 0x00, 0x55, 0x55, 0x80, 0x55, 0x64, 0x80, 0x40, 0xC4, 0x00, 0x01, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A0E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x3F, 0x14, 0x00, 0x28, 0x22, 0x00, 0x28, 0xC1, 0x80, 0x3F, 0x00, 0x00, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x80, 0x3F, 0x81, 0x00, 0x02, 0xBD, 0x00, 0x0A, 0xA5, 0x00, 0x28, 0xBD, 0x00, 0x28, 0x81, 0x00, 0x21, 0x01, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A0F, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x28, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x28, 0x22, 0x00, 0x28, 0x22, 0x00, 0x3F, 0xBE, 0x00, 0x02, 0xA2, 0x00, 0x0A, 0xA2, 0x00, 0x28, 0xFF, 0x80, 0x29, 0x00, 0x00, 0x22, 0x22, 0x00, 0x0C, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A10, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x1C, 0x00, 0x24, 0x36, 0x00, 0x24, 0x63, 0x00, 0x3F, 0xDD, 0x80, 0x24, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x02, 0x00, 0x24, 0x04, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x0C, 0x00, 0x01, 0x14, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x80, 0x43, 0x52, 0x80, 0x06, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A11, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x73, 0x80, 0x3F, 0x12, 0x00, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x3F, 0x73, 0x80, 0x24, 0x12, 0x00, 0x24, 0x12, 0x00, 0x3F, 0x32, 0x00, 0x01, 0x53, 0x80, 0x55, 0x12, 0x00, 0x55, 0x32, 0x00, 0x43, 0x22, 0x00, 0x06, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x22, 0x11, 0x00, 0x22, 0x0A, 0x00, 0x3F, 0x84, 0x00, 0x22, 0x0A, 0x00, 0x22, 0x35, 0x80, 0x3F, 0x84, 0x00, 0x22, 0x1F, 0x00, 0x22, 0x15, 0x00, 0x3F, 0xD5, 0x00, 0x00, 0x5F, 0x00, 0x55, 0x44, 0x00, 0x55, 0x45, 0x00, 0x40, 0xCF, 0x80, 0x01, 0xB8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A13, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xCE, 0x00, 0x22, 0x1B, 0x00, 0x22, 0x31, 0x80, 0x3F, 0x9F, 0x00, 0x22, 0x04, 0x00, 0x22, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x22, 0x24, 0x80, 0x22, 0x24, 0x80, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x4A, 0x00, 0x40, 0xDB, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A16, { 0x00, 0x00, 0x00, 0x7F, 0x10, 0x00, 0x12, 0x3F, 0x80, 0x0C, 0x62, 0x00, 0x7F, 0x96, 0x00, 0x19, 0x0C, 0x00, 0x2A, 0x7A, 0x00, 0x48, 0x01, 0x80, 0x1F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A19, { 0x00, 0x00, 0x00, 0x3F, 0x03, 0x80, 0x24, 0x3C, 0x00, 0x24, 0x20, 0x00, 0x3F, 0x3F, 0x80, 0x24, 0x20, 0x80, 0x24, 0x20, 0x80, 0x3F, 0x3F, 0x80, 0x24, 0x20, 0x00, 0x24, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x22, 0xAA, 0x80, 0x09, 0xBF, 0x80, 0x14, 0xAA, 0x80, 0x08, 0xEA, 0x80, 0x21, 0x6A, 0x80, 0x26, 0xAB, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A1E, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0x0C, 0x00, 0x24, 0x79, 0x00, 0x24, 0x0E, 0x00, 0x3F, 0x78, 0x80, 0x24, 0x0F, 0x00, 0x24, 0x78, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x00, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x08, 0x00, 0x01, 0x10, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x51, 0x00, 0x43, 0x11, 0x00, 0x06, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x3F, 0x28, 0x00, 0x01, 0x2F, 0x00, 0x55, 0x28, 0x00, 0x55, 0x68, 0x00, 0x43, 0x58, 0x00, 0x06, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x77, 0x00, 0x24, 0x51, 0x00, 0x24, 0x51, 0x00, 0x3F, 0x51, 0x00, 0x24, 0x77, 0x00, 0x24, 0x40, 0x00, 0x3F, 0x4F, 0x00, 0x24, 0x75, 0x00, 0x24, 0x45, 0x00, 0x3F, 0x45, 0x00, 0x01, 0x77, 0x00, 0x55, 0x42, 0x00, 0x55, 0x47, 0x00, 0x43, 0x45, 0x00, 0x06, 0x4D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A23, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3F, 0x55, 0x00, 0x24, 0x49, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x3F, 0x62, 0x00, 0x24, 0xC3, 0x80, 0x24, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x63, 0x00, 0x55, 0xD6, 0x00, 0x55, 0x1C, 0x00, 0x43, 0x36, 0x00, 0x06, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7D, 0x00, 0x24, 0x16, 0x00, 0x24, 0x54, 0x00, 0x3F, 0x36, 0x80, 0x24, 0x63, 0x00, 0x24, 0xC1, 0x80, 0x3F, 0x3E, 0x00, 0x24, 0x08, 0x00, 0x24, 0x08, 0x00, 0x3F, 0x7F, 0x80, 0x01, 0x14, 0x00, 0x55, 0x12, 0x00, 0x55, 0x33, 0x00, 0x43, 0x61, 0x00, 0x06, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x24, 0x2F, 0x00, 0x3F, 0x29, 0x00, 0x24, 0x29, 0x00, 0x24, 0x29, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x40, 0x80, 0x24, 0x5E, 0x80, 0x3F, 0x52, 0x80, 0x01, 0x52, 0x80, 0x55, 0x52, 0x80, 0x55, 0x5E, 0x80, 0x43, 0x40, 0x80, 0x06, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A28, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x80, 0x3F, 0xED, 0x80, 0x22, 0x25, 0x00, 0x22, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x22, 0x24, 0x80, 0x22, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x22, 0x24, 0x80, 0x22, 0x3F, 0x80, 0x3F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x44, 0x00, 0x40, 0xC4, 0x00, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A2B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x22, 0x08, 0x80, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0C, 0x06, 0x00, 0x3F, 0xFD, 0x80, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A2D, { 0x00, 0x00, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x4F, 0x00, 0x24, 0x48, 0x00, 0x25, 0xFF, 0x80, 0x22, 0x28, 0x00, 0x22, 0xD9, 0x00, 0x22, 0x0E, 0x00, 0x2E, 0xF8, 0x00, 0x20, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A2E, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3F, 0x77, 0x80, 0x24, 0x42, 0x80, 0x24, 0x42, 0x80, 0x3E, 0x52, 0x80, 0x24, 0x52, 0x80, 0x24, 0x7A, 0x80, 0x3E, 0xCD, 0x80, 0x24, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x01, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x43, 0x49, 0x00, 0x06, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A30, { 0x00, 0x00, 0x00, 0x1C, 0x54, 0x00, 0x14, 0x92, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x28, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x82, 0x00, 0x17, 0xFF, 0x80, 0x14, 0x90, 0x00, 0x1C, 0xFF, 0x00, 0x14, 0x90, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x90, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x0A, 0x80, 0x24, 0xAA, 0x80, 0x2D, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3E, 0x7F, 0x00, 0x24, 0x48, 0x00, 0x24, 0x48, 0x00, 0x3F, 0x7F, 0x80, 0x01, 0x00, 0x80, 0x55, 0x2A, 0x80, 0x55, 0x6A, 0x80, 0x43, 0x41, 0x80, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x44, 0x00, 0x24, 0x48, 0x00, 0x3E, 0x5F, 0x00, 0x24, 0x51, 0x00, 0x24, 0x51, 0x00, 0x3E, 0x5F, 0x00, 0x24, 0x51, 0x00, 0x24, 0x51, 0x00, 0x3F, 0x5F, 0x00, 0x01, 0x44, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x80, 0x43, 0x64, 0x80, 0x06, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A36, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x14, 0x3F, 0x80, 0x14, 0x48, 0x80, 0x1F, 0xAA, 0x80, 0x15, 0x2A, 0x80, 0x14, 0x3E, 0x80, 0x1F, 0x22, 0x80, 0x14, 0x23, 0x00, 0x14, 0x3F, 0x80, 0x1F, 0xC8, 0x80, 0x12, 0xAA, 0x80, 0x05, 0xBE, 0x80, 0x12, 0xA2, 0x80, 0x28, 0x80, 0x80, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x24, 0x14, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x36, 0x00, 0x24, 0xC1, 0x80, 0x3F, 0x08, 0x00, 0x24, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x25, 0x7F, 0x00, 0x03, 0x49, 0x00, 0x09, 0x09, 0x00, 0x29, 0x0F, 0x80, 0x26, 0x70, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A38, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x3F, 0x7F, 0x00, 0x24, 0x40, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x3F, 0x40, 0x00, 0x24, 0x7B, 0x80, 0x24, 0x48, 0x80, 0x3F, 0x59, 0x80, 0x01, 0x6A, 0x80, 0x55, 0x48, 0x80, 0x55, 0x59, 0x80, 0x43, 0x6A, 0x80, 0x06, 0x99, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x24, 0x80, 0x24, 0x3F, 0x80, 0x3F, 0xA4, 0x80, 0x24, 0x3F, 0x80, 0x24, 0x08, 0x00, 0x3F, 0xB2, 0x00, 0x24, 0x14, 0x00, 0x24, 0x09, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x44, 0x80, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x40, 0xD4, 0x80, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A40, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0x3F, 0xFF, 0x80, 0x06, 0x44, 0x00, 0x0F, 0xFE, 0x00, 0x37, 0xFD, 0x80, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x12, 0x24, 0x80, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A41, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x04, 0x3F, 0x80, 0x7F, 0xE1, 0x00, 0x04, 0x13, 0x00, 0x7F, 0xDA, 0x00, 0x08, 0x0E, 0x00, 0x1F, 0xBB, 0x00, 0x30, 0x81, 0x80, 0x6F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A42, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xCA, 0x00, 0x24, 0x0E, 0x00, 0x24, 0x11, 0x00, 0x3F, 0xAA, 0x80, 0x24, 0x3B, 0x80, 0x24, 0x0E, 0x00, 0x3F, 0x9B, 0x00, 0x24, 0x31, 0x80, 0x24, 0x04, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x52, 0x00, 0x55, 0x44, 0x80, 0x55, 0x49, 0x00, 0x40, 0xC2, 0x00, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x14, 0x00, 0x3E, 0x7F, 0x00, 0x28, 0x55, 0x00, 0x28, 0x55, 0x00, 0x3E, 0x7F, 0x00, 0x28, 0x00, 0x00, 0x28, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x0B, 0x08, 0x00, 0x15, 0x49, 0x00, 0x09, 0x49, 0x00, 0x22, 0x88, 0x80, 0x2C, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A44, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x08, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x48, 0x80, 0x3F, 0x6E, 0x80, 0x24, 0x52, 0x80, 0x24, 0x6A, 0x80, 0x3F, 0x44, 0x80, 0x24, 0x4A, 0x80, 0x24, 0x40, 0x80, 0x3F, 0x7F, 0x80, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x80, 0x43, 0x52, 0x80, 0x06, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x40, 0x00, 0x24, 0x40, 0x00, 0x3F, 0x5F, 0x00, 0x24, 0x51, 0x00, 0x3F, 0x5F, 0x00, 0x24, 0x40, 0x00, 0x24, 0x5F, 0x00, 0x3F, 0x55, 0x00, 0x25, 0x55, 0x00, 0x0B, 0x55, 0x00, 0x15, 0x5F, 0x00, 0x09, 0x40, 0x00, 0x21, 0x7F, 0x80, 0x26, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A47, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3E, 0x00, 0x7F, 0xCA, 0x00, 0x24, 0xBA, 0x00, 0x5F, 0xD2, 0x00, 0x04, 0x1A, 0x80, 0x7F, 0xA9, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x40, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A4A, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x3F, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x01, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x43, 0x08, 0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A4B, { 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x3F, 0x0A, 0x00, 0x24, 0xDC, 0x80, 0x24, 0x37, 0x00, 0x3E, 0xE1, 0x80, 0x24, 0x00, 0x00, 0x24, 0xE7, 0x00, 0x3E, 0x25, 0x00, 0x24, 0xE5, 0x00, 0x24, 0x89, 0x80, 0x3F, 0xE0, 0x00, 0x01, 0x2F, 0x80, 0x55, 0x28, 0x80, 0x55, 0x25, 0x00, 0x43, 0x62, 0x00, 0x06, 0xCD, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A4C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x28, 0x09, 0x00, 0x28, 0xFF, 0x80, 0x3E, 0x09, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x3E, 0xAA, 0x80, 0x28, 0xEB, 0x80, 0x28, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x02, 0x88, 0x80, 0x2A, 0xEB, 0x80, 0x6A, 0xAA, 0x80, 0x46, 0xAA, 0x80, 0x0D, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A4D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x29, 0xFF, 0x80, 0x28, 0x5A, 0x00, 0x3F, 0xEF, 0x80, 0x25, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x05, 0x24, 0x00, 0x11, 0x24, 0x00, 0x29, 0x44, 0x80, 0x26, 0x87, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A4E, { 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x3F, 0x2A, 0x00, 0x24, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x2A, 0x00, 0x24, 0x6B, 0x00, 0x24, 0xC9, 0x80, 0x3F, 0x48, 0x00, 0x24, 0x71, 0x00, 0x24, 0xD7, 0x80, 0x3F, 0x95, 0x00, 0x01, 0x55, 0x00, 0x55, 0x35, 0x00, 0x55, 0x2F, 0x80, 0x43, 0x61, 0x00, 0x06, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x0A, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0x3B, 0x80, 0x24, 0x2A, 0x80, 0x24, 0x2A, 0x80, 0x3F, 0x3B, 0x80, 0x24, 0x0A, 0x00, 0x24, 0x0A, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0xA4, 0x80, 0x2A, 0xBF, 0x80, 0x6A, 0xA4, 0x80, 0x41, 0xA4, 0x80, 0x03, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x14, 0x00, 0x24, 0x7F, 0x80, 0x3F, 0x54, 0x80, 0x24, 0x5C, 0x80, 0x24, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0xBF, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0xFF, 0x80, 0x41, 0x88, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A55, { 0x00, 0x00, 0x00, 0x3E, 0x0E, 0x00, 0x28, 0x78, 0x00, 0x28, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x7F, 0x00, 0x3E, 0xA2, 0x80, 0x28, 0x3E, 0x00, 0x28, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x0B, 0x5D, 0x00, 0x15, 0x55, 0x00, 0x09, 0x5D, 0x00, 0x22, 0x41, 0x00, 0x2C, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A56, { 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x3E, 0xF4, 0x80, 0x28, 0x44, 0x00, 0x29, 0xFF, 0x80, 0x3E, 0x04, 0x00, 0x28, 0xF4, 0x00, 0x28, 0x94, 0x00, 0x3E, 0xF4, 0x80, 0x28, 0x04, 0x80, 0x28, 0xF5, 0x80, 0x3F, 0x45, 0x00, 0x01, 0xF7, 0x00, 0x55, 0x42, 0x00, 0x55, 0x76, 0x80, 0x43, 0xCA, 0x80, 0x06, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A57, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x28, 0x22, 0x00, 0x28, 0x41, 0x00, 0x3E, 0x80, 0x80, 0x28, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x28, 0x77, 0x00, 0x28, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x25, 0x77, 0x00, 0x0B, 0x00, 0x00, 0x15, 0x22, 0x00, 0x09, 0x22, 0x00, 0x21, 0x55, 0x00, 0x26, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A5A, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x3F, 0xC8, 0x00, 0x09, 0x1F, 0x80, 0x1F, 0xA1, 0x00, 0x20, 0xD2, 0x00, 0x1E, 0x8C, 0x00, 0x12, 0x96, 0x00, 0x1E, 0xE1, 0x80, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x80, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x94, 0x80, 0x28, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x14, 0x00, 0x3F, 0x7F, 0x00, 0x25, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x29, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A5D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x7F, 0x80, 0x24, 0x08, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0x00, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x3F, 0x7F, 0x00, 0x24, 0x10, 0x00, 0x24, 0x3F, 0x00, 0x3F, 0x61, 0x00, 0x01, 0x3F, 0x00, 0x55, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x43, 0x2A, 0x00, 0x06, 0xC9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x29, 0x2F, 0x80, 0x3D, 0xE1, 0x00, 0x29, 0x2A, 0x00, 0x29, 0xE6, 0x00, 0x3D, 0x25, 0x00, 0x29, 0x68, 0x80, 0x29, 0x8E, 0x00, 0x3E, 0x31, 0x00, 0x2A, 0x5A, 0x00, 0x06, 0x94, 0x00, 0x13, 0x34, 0x00, 0x0A, 0x52, 0x00, 0x22, 0x91, 0x00, 0x2C, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A62, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x90, 0x00, 0x28, 0x9F, 0x00, 0x3E, 0xF0, 0x00, 0x28, 0x9F, 0x80, 0x28, 0xBE, 0x00, 0x3E, 0xAA, 0x00, 0x28, 0xBE, 0x00, 0x28, 0xAA, 0x00, 0x3F, 0xBE, 0x00, 0x25, 0x80, 0x00, 0x0B, 0xFF, 0x00, 0x09, 0xD5, 0x00, 0x23, 0x55, 0x00, 0x2D, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A64, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x00, 0x00, 0x24, 0x3B, 0x80, 0x3F, 0xAA, 0x80, 0x24, 0x3F, 0x80, 0x24, 0x0A, 0x00, 0x3F, 0x9F, 0x00, 0x24, 0x0A, 0x00, 0x24, 0x3F, 0x80, 0x3F, 0xCA, 0x00, 0x00, 0x5A, 0x80, 0x55, 0x72, 0x80, 0x55, 0x53, 0x00, 0x40, 0xDD, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A65, { 0x00, 0x00, 0x00, 0x3E, 0x14, 0x00, 0x28, 0xF7, 0x80, 0x28, 0x14, 0x00, 0x3F, 0xF4, 0x80, 0x28, 0x17, 0x80, 0x28, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x3F, 0x7F, 0x00, 0x03, 0x22, 0x00, 0x0B, 0x7F, 0x00, 0x29, 0x22, 0x00, 0x29, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x0C, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A69, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x77, 0x00, 0x3E, 0x55, 0x00, 0x28, 0x77, 0x00, 0x28, 0x24, 0x00, 0x3E, 0x28, 0x00, 0x28, 0x7F, 0x00, 0x3F, 0xC8, 0x00, 0x25, 0x7F, 0x00, 0x03, 0x48, 0x00, 0x09, 0x7F, 0x00, 0x15, 0x48, 0x00, 0x29, 0x7F, 0x80, 0x26, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x28, 0xF7, 0x80, 0x3E, 0xB6, 0x80, 0x28, 0xB6, 0x80, 0x28, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x28, 0x94, 0x00, 0x28, 0xFF, 0x80, 0x3F, 0x94, 0x80, 0x25, 0xFF, 0x80, 0x0B, 0xA4, 0x00, 0x15, 0xBF, 0x00, 0x29, 0xB4, 0x80, 0x26, 0x63, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A6B, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x40, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x40, 0x00, 0x07, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x12, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x24, 0x00, 0x3F, 0x3F, 0x00, 0x24, 0x24, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x80, 0x80, 0x2A, 0xAA, 0x80, 0x41, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9A6C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A6D, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x12, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x28, 0x00, 0x01, 0x10, 0x00, 0x0F, 0x28, 0x00, 0x71, 0x28, 0x00, 0x21, 0x44, 0x00, 0x0A, 0x47, 0x00, 0x05, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A6E, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x02, 0x10, 0x00, 0x12, 0x10, 0x00, 0x12, 0x12, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x01, 0x28, 0x00, 0x01, 0x28, 0x00, 0x0D, 0x28, 0x00, 0x71, 0x48, 0x00, 0x21, 0x44, 0x00, 0x0A, 0x87, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A6F, { 0x00, 0x00, 0x00, 0x02, 0x41, 0x00, 0x3F, 0x49, 0x00, 0x02, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1F, 0x49, 0x00, 0x01, 0x49, 0x00, 0x07, 0x49, 0x00, 0x39, 0x49, 0x00, 0x11, 0x49, 0x00, 0x05, 0x49, 0x00, 0x02, 0x81, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A70, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x04, 0x90, 0x00, 0x24, 0x90, 0x00, 0x24, 0x92, 0x00, 0x24, 0x9F, 0x00, 0x24, 0xF2, 0x00, 0x25, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x02, 0x92, 0x00, 0x02, 0x9A, 0x00, 0x0E, 0x94, 0x00, 0x72, 0x91, 0x00, 0x02, 0x81, 0x00, 0x14, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A71, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x04, 0x80, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x24, 0x94, 0x00, 0x24, 0x94, 0x00, 0x24, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x02, 0x94, 0x00, 0x02, 0x94, 0x00, 0x0E, 0xA2, 0x00, 0x72, 0xC2, 0x00, 0x22, 0x80, 0x00, 0x0A, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A73, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3F, 0x84, 0x00, 0x02, 0x44, 0x00, 0x12, 0x28, 0x00, 0x12, 0x10, 0x00, 0x12, 0x28, 0x00, 0x12, 0x44, 0x00, 0x12, 0x84, 0x00, 0x1F, 0x02, 0x00, 0x01, 0x46, 0x00, 0x01, 0x28, 0x00, 0x0F, 0x10, 0x00, 0x71, 0x28, 0x00, 0x21, 0x47, 0x00, 0x05, 0x82, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A74, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x12, 0x00, 0x04, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x02, 0x80, 0x00, 0x02, 0x80, 0x00, 0x0E, 0x80, 0x00, 0x72, 0x80, 0x00, 0x02, 0x80, 0x00, 0x15, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A75, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7E, 0xFE, 0x00, 0x04, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0xFC, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x02, 0xFC, 0x00, 0x02, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x72, 0x84, 0x00, 0x02, 0x84, 0x00, 0x0B, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A76, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x04, 0x12, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x50, 0x00, 0x0E, 0x20, 0x00, 0x72, 0x30, 0x00, 0x22, 0x48, 0x00, 0x0A, 0x87, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A77, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x02, 0x00, 0x04, 0xFF, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x02, 0xAA, 0x00, 0x02, 0xCE, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x02, 0xFE, 0x00, 0x0A, 0x82, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A78, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x04, 0x44, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x25, 0xFF, 0x00, 0x26, 0x84, 0x00, 0x24, 0xA4, 0x00, 0x3E, 0x94, 0x00, 0x02, 0x94, 0x00, 0x02, 0x84, 0x00, 0x0E, 0x84, 0x00, 0x72, 0x84, 0x00, 0x02, 0x84, 0x00, 0x0A, 0x94, 0x00, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A79, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x04, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x02, 0x00, 0x26, 0x12, 0x00, 0x24, 0xFA, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x02, 0x92, 0x00, 0x0E, 0xF2, 0x00, 0x72, 0x92, 0x00, 0x02, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A7A, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x04, 0x7C, 0x00, 0x24, 0x84, 0x00, 0x25, 0x08, 0x00, 0x24, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x3E, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFE, 0x00, 0x0E, 0x02, 0x00, 0x72, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A7B, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x10, 0x00, 0x04, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x14, 0x00, 0x3E, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x10, 0x00, 0x22, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A7C, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x10, 0x00, 0x02, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x13, 0x02, 0x00, 0x12, 0x40, 0x00, 0x12, 0x44, 0x00, 0x1F, 0x48, 0x00, 0x01, 0x70, 0x00, 0x01, 0x40, 0x00, 0x0D, 0x40, 0x00, 0x71, 0x41, 0x00, 0x21, 0x41, 0x00, 0x0A, 0x3F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A7D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x7E, 0x00, 0x09, 0x04, 0x00, 0x1A, 0x28, 0x00, 0x06, 0x10, 0x00, 0x19, 0x6C, 0x00, 0x60, 0x83, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A7E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x3F, 0xBF, 0x00, 0x08, 0xA2, 0x00, 0x08, 0xA2, 0x00, 0x12, 0xBE, 0x00, 0x21, 0x22, 0x00, 0x4F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A7F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x04, 0x44, 0x00, 0x24, 0x28, 0x00, 0x24, 0x10, 0x00, 0x24, 0x28, 0x00, 0x24, 0x47, 0x00, 0x25, 0x92, 0x00, 0x3E, 0x10, 0x00, 0x02, 0xFE, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x73, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A80, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x04, 0x20, 0x00, 0x24, 0x44, 0x00, 0x24, 0x82, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x24, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x02, 0x82, 0x00, 0x02, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x02, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A81, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x04, 0x5E, 0x00, 0x25, 0xE0, 0x00, 0x24, 0x28, 0x00, 0x24, 0x12, 0x00, 0x24, 0x6A, 0x00, 0x25, 0x86, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x48, 0x00, 0x0E, 0x48, 0x00, 0x72, 0x48, 0x00, 0x02, 0x89, 0x00, 0x0A, 0x89, 0x00, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A82, { 0x00, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x21, 0x42, 0x00, 0x21, 0x42, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFA, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A84, { 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x7E, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x24, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x28, 0x00, 0x24, 0x44, 0x00, 0x24, 0x83, 0x00, 0x3F, 0x46, 0x00, 0x02, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x72, 0x44, 0x00, 0x22, 0x44, 0x00, 0x0A, 0x44, 0x00, 0x04, 0x84, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A85, { 0x00, 0x00, 0x00, 0x04, 0x50, 0x00, 0x7E, 0x50, 0x00, 0x04, 0x92, 0x00, 0x24, 0x94, 0x00, 0x25, 0x98, 0x00, 0x26, 0xB0, 0x00, 0x24, 0xD1, 0x00, 0x24, 0x8F, 0x00, 0x3E, 0x90, 0x00, 0x02, 0x12, 0x00, 0x03, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x10, 0x00, 0x02, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A86, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x7E, 0x40, 0x00, 0x04, 0x7E, 0x00, 0x24, 0x82, 0x00, 0x25, 0x44, 0x00, 0x24, 0x28, 0x00, 0x24, 0x10, 0x00, 0x24, 0x28, 0x00, 0x3E, 0xC7, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x72, 0x82, 0x00, 0x22, 0x82, 0x00, 0x0A, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A87, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x7E, 0x20, 0x00, 0x04, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x20, 0x00, 0x24, 0x40, 0x00, 0x24, 0x84, 0x00, 0x25, 0xFC, 0x00, 0x3E, 0x88, 0x00, 0x02, 0x12, 0x00, 0x02, 0x26, 0x00, 0x0E, 0xC8, 0x00, 0x73, 0x10, 0x00, 0x22, 0x2C, 0x00, 0x0A, 0xC6, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A88, { 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x7E, 0x44, 0x00, 0x04, 0x28, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x44, 0x00, 0x02, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x72, 0x44, 0x00, 0x02, 0x44, 0x00, 0x0A, 0x84, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A8A, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7D, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0xEE, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x3E, 0xEE, 0x00, 0x02, 0xAA, 0x00, 0x02, 0xAA, 0x00, 0x0E, 0xAA, 0x00, 0x72, 0xAA, 0x00, 0x02, 0xAA, 0x00, 0x0A, 0xAA, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A8B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x12, 0x00, 0x04, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x40, 0x00, 0x02, 0xFE, 0x00, 0x0E, 0x02, 0x00, 0x72, 0x02, 0x00, 0x22, 0x02, 0x00, 0x0A, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A8C, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x20, 0x00, 0x04, 0x50, 0x00, 0x24, 0x50, 0x00, 0x24, 0x88, 0x00, 0x25, 0x07, 0x00, 0x26, 0xFA, 0x00, 0x24, 0x00, 0x00, 0x3E, 0x24, 0x00, 0x03, 0x24, 0x00, 0x02, 0xA4, 0x00, 0x0E, 0xA8, 0x00, 0x72, 0x88, 0x00, 0x22, 0x12, 0x00, 0x0B, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A8F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x10, 0x00, 0x04, 0x24, 0x00, 0x24, 0x42, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x24, 0x83, 0x00, 0x25, 0x41, 0x00, 0x24, 0x7C, 0x00, 0x3E, 0x84, 0x00, 0x03, 0x44, 0x00, 0x02, 0x28, 0x00, 0x1A, 0x10, 0x00, 0x62, 0x28, 0x00, 0x0A, 0x47, 0x00, 0x05, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A90, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x7E, 0x44, 0x00, 0x05, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x24, 0x7C, 0x00, 0x24, 0x44, 0x00, 0x24, 0x44, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x44, 0x00, 0x02, 0x44, 0x00, 0x0F, 0xFF, 0x00, 0x72, 0x00, 0x00, 0x02, 0x44, 0x00, 0x0A, 0x83, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A91, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x24, 0x00, 0x05, 0xFE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x58, 0x00, 0x24, 0x8A, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x04, 0x00, 0x3E, 0xF4, 0x00, 0x02, 0x94, 0x00, 0x02, 0x94, 0x00, 0x0E, 0x94, 0x00, 0x72, 0xF4, 0x00, 0x22, 0x84, 0x00, 0x0A, 0x14, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A92, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x04, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x03, 0xFF, 0x00, 0x02, 0x38, 0x00, 0x0E, 0x54, 0x00, 0x72, 0x97, 0x00, 0x03, 0x12, 0x00, 0x0A, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A93, { 0x00, 0x00, 0x00, 0x04, 0x50, 0x00, 0x7E, 0x48, 0x00, 0x04, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x25, 0x88, 0x00, 0x26, 0x88, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x88, 0x00, 0x3E, 0x88, 0x00, 0x02, 0xFE, 0x00, 0x02, 0x88, 0x00, 0x0E, 0x88, 0x00, 0x72, 0x8A, 0x00, 0x02, 0xFF, 0x00, 0x0A, 0x80, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A96, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7E, 0x40, 0x00, 0x04, 0x84, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x22, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x48, 0x00, 0x24, 0x94, 0x00, 0x3F, 0x23, 0x00, 0x02, 0xC8, 0x00, 0x02, 0x10, 0x00, 0x0E, 0x22, 0x00, 0x72, 0xC4, 0x00, 0x02, 0x18, 0x00, 0x0A, 0x60, 0x00, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A97, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7C, 0x14, 0x00, 0x09, 0xFE, 0x00, 0x29, 0x04, 0x00, 0x29, 0x04, 0x00, 0x29, 0xFC, 0x00, 0x29, 0x00, 0x00, 0x29, 0x02, 0x00, 0x3D, 0xFF, 0x00, 0x05, 0x4A, 0x00, 0x05, 0x4A, 0x00, 0x1D, 0xFE, 0x00, 0x67, 0x4A, 0x00, 0x05, 0x4A, 0x00, 0x15, 0x4A, 0x00, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A98, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xBE, 0x00, 0x24, 0xA0, 0x00, 0x2B, 0xFF, 0x00, 0x24, 0x24, 0x00, 0x34, 0xA8, 0x00, 0x2B, 0x30, 0x00, 0x20, 0xC0, 0x00, 0x2F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A9A, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x04, 0x92, 0x00, 0x24, 0x44, 0x00, 0x24, 0x38, 0x00, 0x24, 0x44, 0x00, 0x25, 0x93, 0x00, 0x24, 0x12, 0x00, 0x3E, 0xFF, 0x00, 0x02, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x72, 0xFE, 0x00, 0x22, 0x90, 0x00, 0x02, 0x14, 0x00, 0x0A, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A9B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x44, 0x00, 0x0A, 0x7E, 0x00, 0x04, 0x44, 0x00, 0x7F, 0x28, 0x00, 0x0D, 0x10, 0x00, 0x14, 0x68, 0x00, 0x24, 0x87, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x04, 0x12, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A9C, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3F, 0x22, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0x44, 0x00, 0x04, 0x28, 0x00, 0x7F, 0x90, 0x00, 0x08, 0x2C, 0x00, 0x1F, 0x43, 0x00, 0x21, 0x00, 0x00, 0x4F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x04, 0x0A, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A9D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x7F, 0xDF, 0x00, 0x05, 0x09, 0x00, 0x25, 0x09, 0x00, 0x25, 0x49, 0x00, 0x25, 0x95, 0x00, 0x25, 0x22, 0x00, 0x24, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x02, 0x92, 0x00, 0x02, 0x92, 0x00, 0x0E, 0xFE, 0x00, 0x72, 0x92, 0x00, 0x02, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A9E, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x4F, 0xFA, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xE8, 0x00, 0x72, 0x27, 0x00, 0x02, 0x20, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xF4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9A9F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x08, 0x00, 0x04, 0xFF, 0x00, 0x24, 0x81, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x80, 0x00, 0x24, 0xF7, 0x00, 0x24, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x02, 0xD5, 0x00, 0x02, 0xB3, 0x00, 0x0E, 0xB3, 0x00, 0x72, 0xD5, 0x00, 0x02, 0x91, 0x00, 0x0B, 0x55, 0x00, 0x04, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA0, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x04, 0x28, 0x00, 0x24, 0x2A, 0x00, 0x24, 0xFF, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xFE, 0x00, 0x3E, 0x00, 0x00, 0x02, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x72, 0x54, 0x00, 0x02, 0x93, 0x00, 0x0B, 0x11, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA1, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x7E, 0xFF, 0x00, 0x04, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0x24, 0x00, 0x3E, 0xF8, 0x00, 0x02, 0x12, 0x00, 0x02, 0xFE, 0x00, 0x0E, 0x10, 0x00, 0x72, 0x54, 0x00, 0x22, 0x93, 0x00, 0x0B, 0x51, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA2, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x7E, 0x22, 0x00, 0x04, 0xFF, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xBA, 0x00, 0x24, 0xAA, 0x00, 0x24, 0xDA, 0x00, 0x24, 0x92, 0x00, 0x3E, 0xA2, 0x00, 0x02, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x50, 0x00, 0x72, 0xD2, 0x00, 0x03, 0x45, 0x00, 0x0A, 0x44, 0x00, 0x04, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA3, { 0x00, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x7D, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7C, 0x00, 0x29, 0x08, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x10, 0x00, 0x3D, 0x30, 0x00, 0x05, 0xEE, 0x00, 0x05, 0x22, 0x00, 0x1D, 0x44, 0x00, 0x65, 0xFF, 0x00, 0x05, 0x44, 0x00, 0x16, 0x44, 0x00, 0x08, 0xCC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA4, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x09, 0x22, 0x00, 0x29, 0xEA, 0x00, 0x29, 0x24, 0x00, 0x29, 0xEA, 0x00, 0x29, 0x31, 0x00, 0x2B, 0xEC, 0x00, 0x3C, 0x30, 0x00, 0x05, 0xD2, 0x00, 0x04, 0x34, 0x00, 0x1D, 0xD8, 0x00, 0x64, 0x34, 0x00, 0x04, 0xD3, 0x00, 0x17, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA5, { 0x00, 0x00, 0x00, 0x04, 0x28, 0x00, 0x7E, 0xEE, 0x00, 0x04, 0x28, 0x00, 0x25, 0xEF, 0x00, 0x24, 0x00, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x92, 0x00, 0x24, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x02, 0xFE, 0x00, 0x02, 0x44, 0x00, 0x0E, 0xFE, 0x00, 0x72, 0x44, 0x00, 0x03, 0xFF, 0x00, 0x0A, 0x44, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA7, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x2B, 0xDE, 0x00, 0x2A, 0x52, 0x00, 0x2B, 0xDE, 0x00, 0x28, 0x88, 0x00, 0x29, 0xFC, 0x00, 0x3C, 0x88, 0x00, 0x05, 0xFC, 0x00, 0x04, 0x88, 0x00, 0x1F, 0xFF, 0x00, 0x64, 0xA4, 0x00, 0x05, 0x98, 0x00, 0x16, 0xC7, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AA8, { 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x7E, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x42, 0x00, 0x2E, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x52, 0x00, 0x7F, 0x5A, 0x00, 0x41, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x22, 0xC2, 0x80, 0x22, 0x82, 0x80, 0x27, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x08, 0x00, 0x2F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x40, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x23, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x00, 0x21, 0x04, 0x00, 0x2F, 0x04, 0x00, 0x29, 0x04, 0x00, 0x29, 0x04, 0x00, 0x7F, 0x84, 0x00, 0x40, 0xBF, 0x80, 0x3F, 0x04, 0x00, 0x21, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x21, 0x04, 0x00, 0x3F, 0x04, 0x00, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x23, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AAE, { 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x3F, 0x13, 0x00, 0x21, 0x11, 0x00, 0x2F, 0x10, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x10, 0x00, 0x7F, 0x90, 0x00, 0x40, 0x90, 0x00, 0x3F, 0x18, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x0C, 0x00, 0x3F, 0x04, 0x00, 0x21, 0x06, 0x80, 0x21, 0x03, 0x80, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AAF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x08, 0x00, 0x2F, 0x7F, 0x80, 0x29, 0x00, 0x00, 0x29, 0x00, 0x00, 0x7F, 0x9E, 0x00, 0x40, 0x92, 0x00, 0x3F, 0x12, 0x00, 0x21, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x21, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x21, 0x32, 0x80, 0x21, 0x22, 0x80, 0x23, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x1E, 0x00, 0x21, 0x12, 0x00, 0x2F, 0x12, 0x00, 0x29, 0x12, 0x00, 0x29, 0x13, 0x80, 0x7F, 0xA0, 0x00, 0x40, 0x80, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x11, 0x00, 0x3F, 0x1B, 0x00, 0x21, 0x0E, 0x00, 0x3F, 0x04, 0x00, 0x21, 0x0E, 0x00, 0x21, 0x1B, 0x00, 0x23, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AB1, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x11, 0x28, 0x00, 0x1D, 0x28, 0x00, 0x15, 0x44, 0x00, 0x3F, 0x83, 0x00, 0x20, 0xA4, 0x00, 0x5F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x00, 0x11, 0x24, 0x00, 0x15, 0x44, 0x00, 0x12, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AB2, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0xF9, 0x00, 0x7F, 0xC9, 0x00, 0x41, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x79, 0x00, 0x3E, 0x47, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x40, 0x80, 0x22, 0x61, 0x80, 0x26, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AB4, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x00, 0x2E, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA5, 0x80, 0x7F, 0xBF, 0x00, 0x40, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x22, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x22, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x22, 0xBC, 0x80, 0x22, 0xE4, 0x80, 0x27, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AB5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2E, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x41, 0x2A, 0x00, 0x3E, 0x2A, 0x00, 0x22, 0x6B, 0x00, 0x3E, 0x49, 0x00, 0x22, 0xC9, 0x80, 0x3E, 0x3E, 0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AB6, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x07, 0x00, 0x22, 0x7C, 0x00, 0x2E, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x41, 0x7F, 0x80, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x46, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x80, 0x22, 0x73, 0x80, 0x26, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AB7, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x11, 0x10, 0x00, 0x1D, 0x12, 0x00, 0x15, 0x7F, 0x00, 0x3F, 0x90, 0x00, 0x20, 0x90, 0x00, 0x5F, 0x12, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x42, 0x00, 0x11, 0x42, 0x00, 0x1F, 0x42, 0x00, 0x11, 0x42, 0x00, 0x11, 0x42, 0x00, 0x15, 0x7E, 0x00, 0x12, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AB8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x17, 0xFF, 0x80, 0x15, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x20, 0xA2, 0x00, 0x1F, 0x42, 0x00, 0x11, 0x24, 0x80, 0x1F, 0x18, 0x80, 0x11, 0x11, 0x00, 0x1F, 0x22, 0x00, 0x11, 0xC4, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x13, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AB9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x2E, 0xFF, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0x63, 0x00, 0x7F, 0xC1, 0x80, 0x41, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x1C, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x1C, 0x00, 0x22, 0x36, 0x00, 0x22, 0x63, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ABA, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x3F, 0x0E, 0x00, 0x22, 0xF0, 0x00, 0x3A, 0x80, 0x00, 0x2A, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x41, 0x80, 0x00, 0x3E, 0x82, 0x00, 0x22, 0xBF, 0x00, 0x3E, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x3E, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x22, 0xA2, 0x00, 0x2B, 0x3E, 0x00, 0x24, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ABB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x2E, 0x14, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xC1, 0x80, 0x7F, 0x3E, 0x00, 0x41, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x10, 0x00, 0x3E, 0x20, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x01, 0x00, 0x22, 0x01, 0x00, 0x22, 0x03, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ABC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x21, 0x3F, 0x00, 0x2F, 0x21, 0x00, 0x29, 0x63, 0x00, 0x29, 0x16, 0x00, 0x7F, 0x8C, 0x00, 0x40, 0x9E, 0x00, 0x3F, 0x33, 0x00, 0x21, 0x61, 0x80, 0x3F, 0x00, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x23, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ABE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x08, 0x00, 0x2E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x68, 0x00, 0x3E, 0x38, 0x00, 0x22, 0x1C, 0x00, 0x22, 0x36, 0x00, 0x26, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ABF, { 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x3E, 0x33, 0x00, 0x22, 0x22, 0x00, 0x2E, 0xF7, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x41, 0x32, 0x00, 0x3E, 0xE7, 0x80, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x62, 0x00, 0x22, 0x42, 0x00, 0x26, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AC0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x2E, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x41, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x14, 0x00, 0x3E, 0x24, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x26, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x2E, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x41, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x22, 0x2A, 0x00, 0x3E, 0x6B, 0x00, 0x22, 0x49, 0x00, 0x22, 0xC9, 0x80, 0x26, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AC2, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x3A, 0xA1, 0x00, 0x2A, 0x3E, 0x00, 0x7F, 0x44, 0x00, 0x41, 0xA8, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x28, 0x00, 0x3E, 0xC7, 0x00, 0x22, 0x7C, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x24, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x2E, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x41, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x22, 0x8A, 0x80, 0x3E, 0x8E, 0x80, 0x22, 0xBA, 0x80, 0x22, 0x80, 0x80, 0x26, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AC4, { 0x00, 0x00, 0x00, 0x3E, 0x08, 0x00, 0x22, 0x88, 0x00, 0x2E, 0xFF, 0x80, 0x2A, 0x48, 0x00, 0x2A, 0x1F, 0x00, 0x7F, 0x11, 0x00, 0x41, 0x31, 0x00, 0x3E, 0xDF, 0x00, 0x22, 0x51, 0x00, 0x3E, 0x51, 0x00, 0x22, 0x5F, 0x00, 0x3E, 0x51, 0x00, 0x22, 0x51, 0x00, 0x22, 0x53, 0x00, 0x22, 0xE0, 0x00, 0x26, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AC5, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x54, 0x00, 0x3A, 0x10, 0x00, 0x2A, 0xFF, 0x00, 0x7F, 0x10, 0x00, 0x41, 0x54, 0x00, 0x3E, 0x92, 0x00, 0x22, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x24, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x38, 0x00, 0x22, 0x28, 0x00, 0x2A, 0x46, 0x00, 0x24, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AC6, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3E, 0x09, 0x00, 0x22, 0xFF, 0x80, 0x2E, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x49, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x3E, 0x02, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x22, 0x12, 0x00, 0x22, 0x02, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AC8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x2E, 0x22, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x7F, 0x80, 0x80, 0x41, 0x08, 0x80, 0x3E, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x1F, 0x00, 0x3E, 0x11, 0x00, 0x22, 0x31, 0x00, 0x22, 0x61, 0x00, 0x26, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ACB, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x08, 0x00, 0x22, 0xFF, 0x00, 0x3A, 0x81, 0x00, 0x2A, 0x24, 0x00, 0x7F, 0xFF, 0x00, 0x41, 0x24, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x4A, 0x00, 0x3E, 0x4A, 0x00, 0x22, 0x52, 0x00, 0x3E, 0x52, 0x00, 0x22, 0x28, 0x00, 0x22, 0x29, 0x00, 0x2A, 0x49, 0x00, 0x24, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ACC, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x3F, 0x10, 0x00, 0x22, 0xFF, 0x00, 0x3A, 0x81, 0x00, 0x2A, 0x0E, 0x00, 0x7F, 0x70, 0x00, 0x41, 0x42, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x22, 0x44, 0x00, 0x2A, 0x83, 0x00, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ACE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF7, 0x80, 0x22, 0x31, 0x80, 0x2E, 0x52, 0x80, 0x2A, 0x31, 0x80, 0x2A, 0x52, 0x80, 0x7F, 0x08, 0x80, 0x41, 0x1C, 0x00, 0x3E, 0x36, 0x00, 0x22, 0xE3, 0x80, 0x3E, 0x10, 0x00, 0x22, 0x64, 0x00, 0x3E, 0x19, 0x00, 0x22, 0x62, 0x00, 0x22, 0x0C, 0x00, 0x26, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ACF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x49, 0x00, 0x2E, 0xFF, 0x80, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x41, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x22, 0x74, 0x00, 0x22, 0x1E, 0x00, 0x26, 0x73, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AD0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x08, 0x00, 0x2E, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x42, 0x00, 0x7F, 0xF7, 0x80, 0x41, 0x42, 0x00, 0x3E, 0x72, 0x00, 0x22, 0xC7, 0x80, 0x3E, 0x00, 0x00, 0x22, 0xFF, 0x80, 0x3E, 0x24, 0x00, 0x22, 0x24, 0x80, 0x22, 0x64, 0x80, 0x26, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0xA9, 0x00, 0x2E, 0xA9, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x41, 0x50, 0x80, 0x3E, 0xFC, 0x80, 0x22, 0x54, 0x80, 0x3E, 0x54, 0x80, 0x22, 0x7C, 0x80, 0x3E, 0x14, 0x80, 0x22, 0x3D, 0x80, 0x22, 0x65, 0x00, 0x26, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AD2, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x22, 0xFF, 0x80, 0x2E, 0x22, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x44, 0x00, 0x7F, 0x75, 0x00, 0x41, 0x96, 0x00, 0x3E, 0x54, 0x80, 0x22, 0x24, 0x80, 0x3E, 0xC3, 0x80, 0x22, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x22, 0x00, 0x22, 0x62, 0x00, 0x26, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AD3, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x1E, 0x88, 0x00, 0x12, 0x7F, 0x80, 0x16, 0x10, 0x00, 0x16, 0x2F, 0x00, 0x3F, 0x44, 0x00, 0x21, 0xFF, 0x80, 0x1E, 0x9F, 0x00, 0x12, 0x11, 0x00, 0x1F, 0x9F, 0x00, 0x12, 0x91, 0x00, 0x1E, 0x9F, 0x00, 0x12, 0x91, 0x00, 0x12, 0x93, 0x00, 0x12, 0xC0, 0x00, 0x17, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AD4, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x3F, 0x80, 0x17, 0x2A, 0x80, 0x15, 0x3F, 0x80, 0x3F, 0xAA, 0x80, 0x20, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x11, 0x00, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x80, 0x1F, 0x3F, 0x80, 0x11, 0x11, 0x00, 0x21, 0x0A, 0x00, 0x23, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AD5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x22, 0x80, 0x80, 0x2E, 0x7F, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0xCA, 0x00, 0x7F, 0x0C, 0x00, 0x41, 0x7F, 0x00, 0x3E, 0xC1, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x22, 0x00, 0x26, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AD6, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x22, 0xFF, 0x80, 0x2E, 0xA4, 0x80, 0x2A, 0xFE, 0x80, 0x2A, 0x24, 0x00, 0x7F, 0x7E, 0x00, 0x41, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x22, 0x25, 0x00, 0x22, 0x64, 0x80, 0x26, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AD7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x0F, 0x00, 0x22, 0x08, 0x00, 0x2E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xBE, 0x00, 0x7F, 0x88, 0x80, 0x41, 0xBF, 0x80, 0x3E, 0xA9, 0x00, 0x22, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x22, 0xBF, 0x00, 0x3F, 0x00, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x55, 0x00, 0x26, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AD8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x10, 0x01, 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AD9, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ADB, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x48, 0x00, 0x00, 0x48, 0x00, 0x7F, 0x7E, 0x00, 0x41, 0x4A, 0x00, 0x5D, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5A, 0x00, 0x5D, 0x52, 0x80, 0x41, 0xB2, 0x80, 0x43, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ADC, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x7F, 0x72, 0x00, 0x41, 0x12, 0x00, 0x5D, 0xFF, 0x80, 0x55, 0x12, 0x00, 0x55, 0x12, 0x00, 0x5D, 0x32, 0x00, 0x41, 0x62, 0x00, 0x43, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ADE, { 0x00, 0x00, 0x00, 0x08, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x22, 0x77, 0x00, 0x3E, 0x55, 0x00, 0x00, 0x55, 0x00, 0x7F, 0x77, 0x00, 0x41, 0x08, 0x00, 0x5D, 0xFF, 0x80, 0x55, 0x2A, 0x00, 0x55, 0x2A, 0x00, 0x5D, 0x6B, 0x00, 0x41, 0xC9, 0x80, 0x43, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ADF, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x86, 0x00, 0x10, 0x04, 0x00, 0x1F, 0x0C, 0x00, 0x10, 0x19, 0x00, 0x10, 0x33, 0x00, 0x1F, 0x02, 0x00, 0x10, 0x06, 0x00, 0x10, 0x0C, 0x00, 0x7F, 0xD8, 0x80, 0x10, 0x31, 0x80, 0x11, 0x01, 0x00, 0x31, 0x03, 0x00, 0x27, 0x86, 0x00, 0x7C, 0x8C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE0, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x71, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x38, 0x80, 0x10, 0x03, 0x00, 0x7F, 0xCC, 0x00, 0x11, 0x30, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE1, { 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x24, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x12, 0x00, 0x7F, 0xC4, 0x00, 0x09, 0x08, 0x00, 0x1F, 0xB0, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x02, 0x21, 0x00, 0x0C, 0x21, 0x00, 0x30, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE2, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x18, 0x80, 0x10, 0x01, 0x00, 0x7F, 0xC6, 0x00, 0x11, 0x18, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x20, 0x00, 0x04, 0x3E, 0x00, 0x07, 0xE2, 0x00, 0x7C, 0x26, 0x00, 0x04, 0x00, 0x80, 0x06, 0x01, 0x80, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE3, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x18, 0x80, 0x10, 0x01, 0x00, 0x7F, 0xC6, 0x00, 0x11, 0x18, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x03, 0x02, 0x00, 0x0E, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE4, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x71, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x38, 0x80, 0x10, 0x03, 0x00, 0x7F, 0xCC, 0x00, 0x11, 0x30, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0xA0, 0x00, 0x06, 0xB0, 0x00, 0x1C, 0x9C, 0x00, 0x70, 0x87, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE5, { 0x00, 0x00, 0x00, 0x0F, 0xC1, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xC4, 0x80, 0x0F, 0xD9, 0x00, 0x08, 0x06, 0x00, 0x3F, 0xF8, 0x80, 0x08, 0x41, 0x00, 0x13, 0xE6, 0x00, 0x3C, 0x20, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE6, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x80, 0x00, 0x81, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE7, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x81, 0x00, 0x21, 0xC1, 0x00, 0x03, 0x40, 0x00, 0x06, 0x40, 0x80, 0x1C, 0x61, 0x80, 0x70, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AE9, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x10, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x1F, 0xFD, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AEA, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x30, 0x00, 0x10, 0x01, 0x00, 0x1F, 0x06, 0x00, 0x10, 0x18, 0x00, 0x7F, 0xC0, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x1D, 0x04, 0x00, 0x70, 0xF8, 0x00, 0x07, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AEB, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x07, 0x07, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AEC, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xB0, 0x00, 0x0E, 0x9C, 0x00, 0x38, 0x87, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AED, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x18, 0x80, 0x10, 0x01, 0x00, 0x7F, 0xC6, 0x00, 0x11, 0x18, 0x00, 0x3E, 0x80, 0x00, 0x04, 0x20, 0x00, 0x24, 0x23, 0x00, 0x27, 0xBE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x80, 0x3F, 0xB1, 0x80, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AEE, { 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x89, 0x00, 0x08, 0x12, 0x00, 0x0F, 0x84, 0x80, 0x3F, 0xE9, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xE4, 0x00, 0x3C, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x84, 0x00, 0x04, 0x48, 0x00, 0x08, 0x38, 0x00, 0x31, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AEF, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF1, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x02, 0x00, 0x7F, 0xE2, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xEE, 0x00, 0x08, 0x00, 0x80, 0x0C, 0x01, 0x80, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF2, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x17, 0xFA, 0x00, 0x13, 0x18, 0x00, 0x11, 0xB0, 0x00, 0x30, 0xE0, 0x00, 0x63, 0xB8, 0x00, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF3, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x18, 0x00, 0x00, 0xA0, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x21, 0x00, 0x06, 0x26, 0x00, 0x38, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF4, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x01, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x21, 0x00, 0x06, 0x27, 0x00, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF5, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x22, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF7, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x18, 0x80, 0x10, 0x01, 0x00, 0x7F, 0xC6, 0x00, 0x11, 0x18, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AF9, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0D, 0xFF, 0x80, 0x18, 0x54, 0x00, 0x38, 0x54, 0x00, 0x68, 0xD6, 0x00, 0x09, 0x93, 0x00, 0x0B, 0x11, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AFA, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AFB, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9AFD, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x1C, 0x8E, 0x00, 0x36, 0x9B, 0x00, 0x60, 0x81, 0x80, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9AFF, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x00, 0x18, 0x92, 0x00, 0x61, 0x93, 0x00, 0x31, 0x11, 0x80, 0x04, 0x36, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x38, 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B00, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x81, 0x00, 0x0C, 0x83, 0x00, 0x70, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B01, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x00, 0x3E, 0x11, 0x00, 0x04, 0x11, 0x00, 0x7F, 0x91, 0x00, 0x14, 0x11, 0x00, 0x36, 0x01, 0x00, 0x65, 0x81, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B02, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x60, 0x00, 0x07, 0x80, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B03, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0C, 0x8C, 0x00, 0x39, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B04, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x72, 0x21, 0x00, 0x06, 0x63, 0x00, 0x0C, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B05, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1D, 0x1D, 0x00, 0x13, 0x13, 0x00, 0x19, 0x19, 0x00, 0x17, 0x17, 0x00, 0x31, 0x31, 0x00, 0x67, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B06, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x1F, 0x18, 0x80, 0x10, 0x01, 0x00, 0x7F, 0xC6, 0x00, 0x11, 0x18, 0x00, 0x3E, 0x80, 0x00, 0x04, 0x22, 0x00, 0x7F, 0x63, 0x00, 0x14, 0xC1, 0x80, 0x16, 0x10, 0x00, 0x35, 0x32, 0x00, 0x64, 0x27, 0x00, 0x04, 0x7D, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B08, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x04, 0x88, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x14, 0x12, 0x00, 0x64, 0x71, 0x80, 0x04, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B09, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x13, 0x32, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x32, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x08, 0x00, 0x73, 0xEF, 0x80, 0x0E, 0x20, 0x00, 0x71, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B0B, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x00, 0x19, 0x22, 0x00, 0x17, 0x22, 0x00, 0x19, 0x22, 0x00, 0x17, 0x02, 0x00, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B0C, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x68, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B0D, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x7F, 0x21, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x22, 0x61, 0x00, 0x3E, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B0E, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x15, 0x01, 0x00, 0x64, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B0F, { 0x00, 0x00, 0x00, 0x09, 0x0C, 0x00, 0x0A, 0x70, 0x00, 0x0C, 0x0C, 0x00, 0x7F, 0x72, 0x00, 0x12, 0x04, 0x00, 0x3F, 0x78, 0x00, 0x00, 0x10, 0x00, 0x03, 0x12, 0x00, 0x3C, 0x56, 0x00, 0x04, 0x58, 0x00, 0x7F, 0x90, 0x00, 0x0C, 0x28, 0x00, 0x16, 0x28, 0x00, 0x65, 0x44, 0x00, 0x04, 0x43, 0x00, 0x04, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B10, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x01, 0x00, 0x12, 0x96, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xA0, 0x00, 0x7F, 0xFE, 0x80, 0x01, 0x01, 0x80, 0x0F, 0xFF, 0x00, 0x18, 0x04, 0x00, 0x6F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B12, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3F, 0xF4, 0x00, 0x08, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B13, { 0x00, 0x00, 0x00, 0x09, 0x0C, 0x00, 0x0A, 0x70, 0x00, 0x0C, 0x0C, 0x00, 0x7F, 0x72, 0x00, 0x12, 0x04, 0x00, 0x3F, 0x78, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x31, 0x00, 0x47, 0xC2, 0x00, 0x04, 0x10, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x22, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B16, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x21, 0x24, 0x00, 0x4B, 0xD9, 0x00, 0x74, 0x8E, 0x80, 0x03, 0x60, 0x00, 0x0C, 0x9C, 0x00, 0x73, 0x23, 0x80, 0x0C, 0xC8, 0x00, 0x03, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B18, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x08, 0x00, 0x03, 0xF0, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B19, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x74, 0x8B, 0x80, 0x12, 0x92, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B1A, { 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x08, 0x09, 0x00, 0x0F, 0x92, 0x00, 0x08, 0x64, 0x80, 0x0F, 0x99, 0x00, 0x0A, 0x66, 0x00, 0x3F, 0xD8, 0x00, 0x09, 0x7F, 0x80, 0x3F, 0x88, 0x00, 0x04, 0x7F, 0x00, 0x09, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x0C, 0xFF, 0x00, 0x31, 0x41, 0x00, 0x06, 0x7F, 0x00, 0x18, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B1B, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3E, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0xC2, 0x00, 0x13, 0x32, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1E, 0xF4, 0x80, 0x10, 0x82, 0x80, 0x3D, 0xF1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B1C, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3F, 0xBF, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x17, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B1F, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x11, 0x03, 0x00, 0x3F, 0xFC, 0x00, 0x09, 0x24, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x48, 0x00, 0x3C, 0x30, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B20, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0x98, 0x80, 0x14, 0xC7, 0x00, 0x3B, 0x30, 0x00, 0x0D, 0xEC, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFE, 0x00, 0x12, 0x92, 0x00, 0x1F, 0xFE, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B22, { 0x00, 0x00, 0x00, 0x1F, 0x82, 0x00, 0x10, 0x0C, 0x00, 0x1F, 0x31, 0x00, 0x10, 0x06, 0x00, 0x7F, 0xD8, 0x80, 0x10, 0x83, 0x00, 0x3F, 0x4C, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x28, 0x91, 0x00, 0x17, 0xF8, 0x00, 0x0C, 0x08, 0x00, 0x77, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B23, { 0x00, 0x00, 0x00, 0x1F, 0x06, 0x00, 0x10, 0x78, 0x00, 0x1E, 0x03, 0x00, 0x10, 0x3C, 0x00, 0x7F, 0x81, 0x80, 0x12, 0x1E, 0x00, 0x3F, 0x04, 0x00, 0x04, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x84, 0x00, 0x1E, 0xF4, 0x00, 0x10, 0x86, 0x80, 0x1E, 0xF2, 0x80, 0x71, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B25, { 0x00, 0x00, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B26, { 0x00, 0x00, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x20, 0x01, 0x00, 0x20, 0x11, 0x00, 0x23, 0x11, 0x00, 0x21, 0x91, 0x00, 0x20, 0x11, 0x00, 0x26, 0x11, 0x00, 0x23, 0x11, 0x00, 0x20, 0x1D, 0x00, 0x21, 0xF1, 0x00, 0x2F, 0x11, 0x00, 0x20, 0x17, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x04, 0x80, 0x3F, 0x1F, 0x80, 0x24, 0x04, 0x80, 0x3F, 0xBF, 0x80, 0x20, 0x40, 0x80, 0x20, 0x40, 0x80, 0x2F, 0xFE, 0x80, 0x20, 0x40, 0x80, 0x23, 0xF8, 0x80, 0x22, 0x48, 0x80, 0x22, 0x48, 0x80, 0x22, 0x58, 0x80, 0x20, 0x40, 0x80, 0x20, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B28, { 0x00, 0x00, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x20, 0x01, 0x00, 0x21, 0x21, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x21, 0x21, 0x00, 0x2F, 0xFD, 0x00, 0x21, 0x21, 0x00, 0x23, 0x31, 0x00, 0x26, 0x19, 0x00, 0x20, 0x01, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B29, { 0x00, 0x00, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x22, 0x11, 0x00, 0x2F, 0x3D, 0x00, 0x20, 0x01, 0x00, 0x21, 0x81, 0x00, 0x27, 0x39, 0x00, 0x24, 0x09, 0x00, 0x27, 0x39, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x21, 0x00, 0x23, 0x25, 0x00, 0x2E, 0x1D, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x22, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x20, 0x7F, 0x00, 0x2F, 0x89, 0x00, 0x28, 0xA9, 0x00, 0x2F, 0x99, 0x00, 0x28, 0x89, 0x00, 0x25, 0x09, 0x00, 0x3F, 0xD9, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B2B, { 0x00, 0x00, 0x00, 0x5F, 0x3E, 0x80, 0x44, 0x08, 0x80, 0x5F, 0x3E, 0x80, 0x44, 0x08, 0x80, 0x5F, 0x3E, 0x80, 0x40, 0x00, 0x80, 0x4F, 0x90, 0x80, 0x42, 0x1E, 0x80, 0x5F, 0xF4, 0x80, 0x48, 0xA4, 0x80, 0x4F, 0x94, 0x80, 0x48, 0x9C, 0x80, 0x4F, 0x88, 0x80, 0x48, 0x9C, 0x80, 0x4F, 0x96, 0x80, 0x58, 0xB3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B2D, { 0x00, 0x00, 0x00, 0x5F, 0x3E, 0x80, 0x44, 0x08, 0x80, 0x5F, 0x3E, 0x80, 0x44, 0x08, 0x80, 0x5F, 0x3E, 0x80, 0x40, 0x00, 0x80, 0x5F, 0xC6, 0x80, 0x55, 0x5C, 0x80, 0x5D, 0xD0, 0x80, 0x45, 0x1E, 0x80, 0x5D, 0xD4, 0x80, 0x55, 0x54, 0x80, 0x5D, 0xD4, 0x80, 0x45, 0x14, 0x80, 0x47, 0xB4, 0x80, 0x5C, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B2E, { 0x00, 0x00, 0x00, 0x5F, 0x3E, 0x80, 0x44, 0x08, 0x80, 0x5F, 0x3E, 0x80, 0x44, 0x08, 0x80, 0x5F, 0x3E, 0x80, 0x43, 0xE0, 0x80, 0x44, 0x40, 0x80, 0x5F, 0xF8, 0x80, 0x45, 0x48, 0x80, 0x5F, 0xFC, 0x80, 0x45, 0x54, 0x80, 0x5F, 0x6C, 0x80, 0x45, 0x54, 0x80, 0x5F, 0xFC, 0x80, 0x45, 0x02, 0x80, 0x5D, 0xFE, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B2F, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x84, 0x00, 0x24, 0x24, 0x00, 0x32, 0x44, 0x00, 0x29, 0x94, 0x00, 0x22, 0x4C, 0x00, 0x2C, 0x24, 0x00, 0x21, 0x04, 0x00, 0x20, 0x84, 0x00, 0x3F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x38, 0x00, 0x1F, 0xE0, 0x00, 0x10, 0x02, 0x00, 0x18, 0x06, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B31, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x09, 0xF2, 0x00, 0x3E, 0x4F, 0x80, 0x0D, 0xF7, 0x00, 0x1B, 0x5A, 0x80, 0x29, 0xF2, 0x00, 0x3F, 0xFF, 0x80, 0x34, 0xA2, 0x80, 0x1B, 0x64, 0x00, 0x12, 0xA9, 0x00, 0x15, 0x62, 0x00, 0x1F, 0xE4, 0x80, 0x11, 0xC9, 0x00, 0x1E, 0x22, 0x00, 0x10, 0x24, 0x00, 0x1F, 0xE8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x21, 0x00, 0x24, 0x3D, 0x00, 0x28, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x20, 0x81, 0x00, 0x20, 0x81, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B33, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x80, 0x17, 0xFC, 0x00, 0x10, 0x80, 0x80, 0x17, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x89, 0x00, 0x25, 0x0F, 0x00, 0x66, 0xF1, 0x00, 0x04, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B34, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x7F, 0x09, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x08, 0x00, 0x22, 0x08, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x7F, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x67, 0x49, 0x00, 0x41, 0x7F, 0x00, 0x5D, 0x49, 0x00, 0x49, 0x49, 0x00, 0x49, 0x49, 0x00, 0x4B, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B35, { 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x24, 0x24, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x14, 0x00, 0x67, 0x67, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x09, 0x00, 0x3B, 0xEF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B37, { 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x55, 0x00, 0x00, 0x49, 0x00, 0x3E, 0x55, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x24, 0x00, 0x7F, 0x64, 0x00, 0x55, 0xD3, 0x80, 0x55, 0x3E, 0x00, 0x67, 0x62, 0x00, 0x41, 0xD6, 0x00, 0x5D, 0x14, 0x00, 0x49, 0x0C, 0x00, 0x49, 0x3B, 0x00, 0x4B, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B39, { 0x00, 0x00, 0x00, 0x08, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x08, 0x7E, 0x00, 0x7F, 0x42, 0x00, 0x14, 0x7E, 0x00, 0x22, 0x24, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0x09, 0x00, 0x3B, 0xEF, 0x00, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B3A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x22, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x55, 0x00, 0x00, 0x55, 0xFF, 0x80, 0x67, 0x20, 0x00, 0x41, 0x7F, 0x00, 0x5D, 0xD5, 0x00, 0x49, 0x29, 0x00, 0x49, 0x53, 0x00, 0x4B, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B3B, { 0x00, 0x00, 0x00, 0x7A, 0xAF, 0x00, 0x08, 0x81, 0x00, 0x3B, 0xF7, 0x00, 0x20, 0x84, 0x00, 0x39, 0xC7, 0x00, 0x0A, 0xA1, 0x00, 0x18, 0x83, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2C, 0x1D, 0x00, 0x23, 0xE1, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B3C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x48, 0x00, 0x02, 0x52, 0x00, 0x04, 0x6E, 0x00, 0x04, 0x71, 0x00, 0x08, 0x40, 0x80, 0x10, 0x40, 0x80, 0x20, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B3D, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x08, 0x06, 0x00, 0x3F, 0x8C, 0x00, 0x24, 0x98, 0x00, 0x24, 0xB1, 0x00, 0x3F, 0x83, 0x00, 0x24, 0x86, 0x00, 0x24, 0x8C, 0x00, 0x3F, 0xB8, 0x80, 0x14, 0x01, 0x80, 0x15, 0x03, 0x00, 0x15, 0x06, 0x00, 0x15, 0x5C, 0x00, 0x37, 0xC0, 0x80, 0x24, 0x01, 0x80, 0x63, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B41, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x24, 0x00, 0x3F, 0x94, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0xA4, 0x00, 0x24, 0x94, 0x80, 0x24, 0x85, 0x00, 0x3F, 0x86, 0x00, 0x0A, 0x8C, 0x00, 0x0B, 0x54, 0x00, 0x0B, 0xC4, 0x00, 0x0A, 0x24, 0x80, 0x12, 0x04, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B42, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xC9, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x19, 0x00, 0x17, 0x1A, 0x80, 0x39, 0x2F, 0x80, 0x00, 0x48, 0x00, 0x00, 0x88, 0x80, 0x01, 0x0F, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B43, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x88, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x96, 0x00, 0x0A, 0x52, 0x00, 0x0A, 0xA5, 0x00, 0x0B, 0x68, 0x80, 0x0B, 0x90, 0x00, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x23, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B44, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x10, 0x20, 0x00, 0x3D, 0xFE, 0x00, 0x25, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFE, 0x00, 0x3D, 0x22, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFE, 0x00, 0x24, 0x52, 0x00, 0x24, 0x55, 0x00, 0x3C, 0x9F, 0x80, 0x24, 0x90, 0x00, 0x21, 0x10, 0x80, 0x02, 0x1F, 0x80, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B45, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0xBF, 0x80, 0x24, 0x86, 0x00, 0x3F, 0x8E, 0x00, 0x0A, 0x0D, 0x00, 0x0A, 0x55, 0x00, 0x0A, 0xA4, 0x80, 0x0B, 0xF4, 0x00, 0x12, 0x00, 0x80, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B47, { 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x50, 0x00, 0x10, 0x4A, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0xA0, 0x00, 0x13, 0x18, 0x00, 0x1C, 0x87, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x44, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x44, 0x00, 0x13, 0xFC, 0x00, 0x20, 0xA0, 0x00, 0x21, 0x29, 0x00, 0x42, 0x21, 0x00, 0x0C, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B48, { 0x00, 0x00, 0x00, 0x08, 0x2A, 0x00, 0x10, 0x6B, 0x00, 0x7F, 0x49, 0x00, 0x49, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x28, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0xC1, 0x00, 0x2F, 0xC1, 0x00, 0x28, 0x47, 0x00, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B49, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x12, 0xFE, 0x00, 0x3F, 0x28, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x08, 0xD6, 0x00, 0x0C, 0x82, 0x00, 0x16, 0x82, 0x00, 0x14, 0x86, 0x00, 0x24, 0x01, 0x00, 0x43, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B4B, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x36, 0x00, 0x7F, 0x24, 0x00, 0x49, 0x3F, 0x80, 0x49, 0x64, 0x00, 0x7F, 0xA4, 0x00, 0x49, 0x3F, 0x00, 0x49, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x28, 0x3F, 0x00, 0x2A, 0x24, 0x00, 0x2A, 0xA4, 0x00, 0x2F, 0xA4, 0x00, 0x28, 0x3F, 0x80, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B4C, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x22, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x22, 0x00, 0x49, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x49, 0x3E, 0x00, 0x49, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x28, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x94, 0x00, 0x2F, 0xB6, 0x00, 0x28, 0x63, 0x00, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B4D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x55, 0x00, 0x49, 0x55, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x49, 0x00, 0x49, 0x49, 0x00, 0x7F, 0x5F, 0x00, 0x28, 0x51, 0x00, 0x2A, 0x51, 0x00, 0x2A, 0xCD, 0x00, 0x2F, 0xC1, 0x00, 0x28, 0x43, 0x00, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B4E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x08, 0x00, 0x52, 0x08, 0x00, 0x52, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x52, 0xEE, 0x80, 0x52, 0xAA, 0x80, 0x7E, 0xAA, 0x80, 0x28, 0xDD, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x88, 0x80, 0x2E, 0x89, 0x80, 0x28, 0x00, 0x00, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B4F, { 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x1C, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xC9, 0x00, 0x06, 0x49, 0x00, 0x0D, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x24, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0x94, 0x00, 0x09, 0x15, 0x00, 0x11, 0x16, 0x80, 0x1A, 0x17, 0x00, 0x26, 0x24, 0x80, 0x09, 0x27, 0x80, 0x11, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B51, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x10, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x52, 0x55, 0x00, 0x52, 0x49, 0x00, 0x7E, 0x55, 0x00, 0x52, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x7E, 0x10, 0x00, 0x28, 0xFF, 0x80, 0x2A, 0x90, 0x80, 0x2A, 0xA4, 0x80, 0x2E, 0xBA, 0x80, 0x28, 0x81, 0x80, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B54, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x14, 0x80, 0x10, 0x20, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x20, 0x97, 0x00, 0x23, 0x18, 0x80, 0x2C, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B55, { 0x00, 0x00, 0x00, 0x08, 0x49, 0x00, 0x10, 0xAA, 0x80, 0x7E, 0xEB, 0x80, 0x52, 0x49, 0x00, 0x52, 0x8A, 0x00, 0x7E, 0xAA, 0x80, 0x52, 0xEB, 0x80, 0x52, 0x09, 0x00, 0x7E, 0xFF, 0x80, 0x28, 0x84, 0x00, 0x2A, 0xC4, 0x80, 0x2A, 0xA3, 0x00, 0x2E, 0x86, 0x80, 0x29, 0x39, 0x80, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B56, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x10, 0x1F, 0x00, 0x7E, 0x10, 0x00, 0x52, 0xFF, 0x80, 0x52, 0x90, 0x80, 0x7E, 0x9D, 0x00, 0x52, 0xF0, 0x00, 0x52, 0x8F, 0x00, 0x7E, 0x80, 0x00, 0x28, 0x94, 0x00, 0x2A, 0xD5, 0x00, 0x2A, 0xF7, 0x00, 0x2E, 0x94, 0x00, 0x29, 0x7F, 0x00, 0x6C, 0x00, 0x80, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B57, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x20, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x91, 0x00, 0x00, 0x91, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x91, 0x00, 0x3E, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x28, 0x00, 0x00, 0x2A, 0x00, 0x7F, 0xAA, 0x80, 0x01, 0x2F, 0x80, 0x7F, 0x68, 0x00, 0x55, 0x48, 0x80, 0x73, 0xC7, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B58, { 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0x8A, 0x00, 0x2F, 0x89, 0x00, 0x28, 0xFF, 0x80, 0x2F, 0x94, 0x00, 0x28, 0xB6, 0x00, 0x2F, 0xE3, 0x00, 0x28, 0x81, 0x80, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFC, 0x00, 0x24, 0x44, 0x00, 0x67, 0xFD, 0x00, 0x41, 0x27, 0x00, 0x43, 0x20, 0x80, 0x1E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B5A, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x28, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B5B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0x7F, 0x80, 0x31, 0x08, 0x80, 0x22, 0x08, 0x80, 0x7F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x3F, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x98, 0x80, 0x3F, 0x90, 0x80, 0x00, 0x10, 0x80, 0x2A, 0xB1, 0x80, 0x2A, 0xA1, 0x00, 0x6A, 0x61, 0x00, 0x40, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B5E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x31, 0x08, 0x00, 0x22, 0x08, 0x00, 0x7F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x9C, 0x00, 0x24, 0x94, 0x00, 0x3F, 0x94, 0x00, 0x00, 0x14, 0x00, 0x2A, 0xB6, 0x00, 0x2A, 0xA2, 0x00, 0x6A, 0x63, 0x00, 0x40, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B61, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x10, 0x00, 0x24, 0x3F, 0x80, 0x7F, 0x20, 0x80, 0x29, 0x60, 0x80, 0x29, 0xC0, 0x80, 0x3F, 0x00, 0x80, 0x29, 0x3C, 0x80, 0x29, 0x00, 0x80, 0x3F, 0x00, 0x80, 0x00, 0x00, 0x80, 0x55, 0x00, 0x80, 0x55, 0x01, 0x80, 0x54, 0x01, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B63, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x01, 0x00, 0x24, 0x22, 0x00, 0x7F, 0x14, 0x00, 0x29, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x08, 0x80, 0x29, 0x09, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x54, 0x08, 0x00, 0x40, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B65, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFE, 0x00, 0x32, 0x22, 0x00, 0x24, 0x26, 0x00, 0x7F, 0x24, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x3F, 0x71, 0x00, 0x29, 0x53, 0x00, 0x29, 0x5A, 0x00, 0x3F, 0x4E, 0x00, 0x00, 0xC4, 0x00, 0x54, 0x8E, 0x00, 0x55, 0x9A, 0x00, 0x55, 0x33, 0x00, 0x40, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B66, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x2A, 0x00, 0x7F, 0x2A, 0x00, 0x29, 0x6B, 0x00, 0x29, 0xC9, 0x80, 0x3F, 0x08, 0x00, 0x29, 0x09, 0x00, 0x29, 0x09, 0x00, 0x3F, 0x3B, 0x00, 0x00, 0x02, 0x00, 0x55, 0x06, 0x00, 0x55, 0x0C, 0x00, 0x54, 0x18, 0x00, 0x40, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B68, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x09, 0x80, 0x32, 0x0F, 0x00, 0x24, 0xF8, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x80, 0x54, 0x09, 0x80, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B6A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x1C, 0x00, 0x32, 0x14, 0x00, 0x24, 0x36, 0x00, 0x7F, 0x63, 0x00, 0x29, 0xE3, 0x80, 0x29, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x55, 0x62, 0x00, 0x55, 0x42, 0x00, 0x54, 0xC2, 0x00, 0x41, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B6B, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x10, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x38, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x00, 0x28, 0x00, 0x55, 0x68, 0x00, 0x55, 0x48, 0x80, 0x54, 0xC9, 0x80, 0x41, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B6C, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x32, 0x40, 0x00, 0x24, 0x40, 0x00, 0x7F, 0x40, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x51, 0x00, 0x3F, 0x51, 0x00, 0x29, 0x5B, 0x00, 0x29, 0x4A, 0x00, 0x3F, 0x4E, 0x00, 0x00, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x4A, 0x00, 0x54, 0xDB, 0x00, 0x41, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B6D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x00, 0x00, 0x24, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x24, 0x00, 0x29, 0x24, 0x00, 0x29, 0x24, 0x00, 0x3F, 0x24, 0x00, 0x00, 0x24, 0x00, 0x55, 0x64, 0x00, 0x55, 0x44, 0x80, 0x54, 0xC4, 0x80, 0x41, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B6E, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x32, 0x44, 0x00, 0x24, 0x44, 0x00, 0x7F, 0x44, 0x80, 0x29, 0x45, 0x80, 0x29, 0x77, 0x00, 0x3F, 0x44, 0x00, 0x29, 0x44, 0x00, 0x29, 0x44, 0x00, 0x3F, 0x44, 0x00, 0x00, 0x44, 0x00, 0x55, 0x44, 0x00, 0x55, 0x44, 0x80, 0x54, 0x75, 0x80, 0x41, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B6F, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x42, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x42, 0x00, 0x07, 0xFE, 0x00, 0x01, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B73, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x55, 0x49, 0x00, 0x55, 0x4B, 0x00, 0x54, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B74, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x31, 0x08, 0x00, 0x22, 0x7F, 0x80, 0x7F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x99, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x11, 0x00, 0x2A, 0xB3, 0x00, 0x2A, 0xA2, 0x00, 0x6A, 0x62, 0x00, 0x40, 0xCE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B75, { 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x1E, 0x04, 0x00, 0x32, 0x24, 0x00, 0x24, 0x66, 0x00, 0x7E, 0x42, 0x00, 0x2A, 0xC3, 0x00, 0x2B, 0x81, 0x80, 0x3E, 0x7E, 0x00, 0x2A, 0x12, 0x00, 0x2A, 0x12, 0x00, 0x3E, 0x12, 0x00, 0x00, 0x32, 0x00, 0x55, 0x22, 0x00, 0x55, 0x66, 0x00, 0x54, 0xC4, 0x00, 0x41, 0x9C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B77, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x1E, 0x13, 0x00, 0x32, 0x11, 0x00, 0x24, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x29, 0x10, 0x00, 0x29, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x29, 0x38, 0x00, 0x29, 0x28, 0x00, 0x3F, 0x28, 0x00, 0x00, 0x28, 0x00, 0x55, 0x68, 0x00, 0x55, 0x48, 0x80, 0x54, 0xC9, 0x80, 0x41, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B78, { 0x00, 0x00, 0x00, 0x10, 0x44, 0x00, 0x1E, 0x44, 0x00, 0x32, 0x44, 0x00, 0x24, 0x44, 0x00, 0x7F, 0x44, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x40, 0x00, 0x3F, 0x40, 0x00, 0x29, 0x7E, 0x00, 0x29, 0x42, 0x00, 0x3F, 0x42, 0x00, 0x00, 0x42, 0x00, 0x55, 0x42, 0x00, 0x55, 0x42, 0x00, 0x54, 0xC2, 0x00, 0x41, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B79, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x0E, 0x00, 0x32, 0x78, 0x00, 0x24, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x29, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x10, 0x00, 0x00, 0x10, 0x00, 0x55, 0x10, 0x00, 0x55, 0x10, 0x80, 0x54, 0x19, 0x80, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B7F, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x1C, 0x00, 0x32, 0x36, 0x00, 0x24, 0x63, 0x00, 0x7F, 0xC1, 0x80, 0x29, 0x3E, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x11, 0x00, 0x3F, 0x11, 0x00, 0x00, 0x11, 0x00, 0x55, 0x11, 0x00, 0x55, 0x17, 0x00, 0x54, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B80, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x40, 0x80, 0x29, 0x40, 0x80, 0x29, 0x20, 0x00, 0x3F, 0x23, 0x00, 0x29, 0x2E, 0x00, 0x29, 0x38, 0x00, 0x3F, 0x20, 0x00, 0x00, 0x20, 0x00, 0x55, 0x20, 0x00, 0x55, 0x20, 0x80, 0x54, 0x31, 0x80, 0x40, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B83, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x08, 0x00, 0x24, 0x2A, 0x00, 0x7F, 0x6B, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x54, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B84, { 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x1E, 0x28, 0x00, 0x32, 0xFF, 0x00, 0x24, 0x29, 0x00, 0x7E, 0x29, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xA8, 0x00, 0x3E, 0xA8, 0x00, 0x2A, 0xA8, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x28, 0x80, 0x00, 0x28, 0x80, 0x55, 0x69, 0x80, 0x55, 0x49, 0x00, 0x54, 0xCB, 0x00, 0x41, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B85, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x1E, 0x18, 0x00, 0x32, 0x08, 0x00, 0x24, 0x22, 0x00, 0x7E, 0x22, 0x00, 0x2A, 0x26, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0xAC, 0x00, 0x2A, 0xAB, 0x00, 0x2A, 0xB9, 0x80, 0x3F, 0xB0, 0x80, 0x01, 0x20, 0x00, 0x54, 0x60, 0x00, 0x55, 0xA1, 0x00, 0x55, 0x33, 0x00, 0x40, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B86, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x14, 0x26, 0x00, 0x17, 0xBC, 0x00, 0x14, 0x20, 0x00, 0x14, 0x20, 0x80, 0x1F, 0xB1, 0x80, 0x72, 0x1F, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B87, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x29, 0x2A, 0x00, 0x29, 0x2A, 0x00, 0x3F, 0x2A, 0x00, 0x00, 0x6B, 0x00, 0x55, 0x49, 0x00, 0x55, 0xC9, 0x80, 0x54, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B89, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x00, 0x32, 0x11, 0x00, 0x24, 0x11, 0x00, 0x7F, 0x31, 0x00, 0x29, 0x23, 0x00, 0x29, 0x62, 0x00, 0x3F, 0xC6, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B8A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x18, 0x00, 0x32, 0x10, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x29, 0x41, 0x00, 0x29, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x54, 0x7F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B8B, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B8D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x48, 0x80, 0x29, 0x49, 0x00, 0x29, 0x48, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x51, 0x00, 0x29, 0x51, 0x00, 0x3F, 0x5B, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x54, 0x9B, 0x00, 0x40, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B8E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x12, 0x08, 0x00, 0x24, 0x0F, 0x80, 0x1F, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x01, 0x41, 0x00, 0x02, 0xC1, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B8F, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x48, 0x00, 0x32, 0x48, 0x00, 0x24, 0x48, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x48, 0x00, 0x29, 0x88, 0x00, 0x3F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x08, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B90, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x30, 0x00, 0x24, 0x21, 0x00, 0x7F, 0x61, 0x00, 0x29, 0x4F, 0x80, 0x29, 0xF8, 0x80, 0x3F, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B91, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x1E, 0x40, 0x00, 0x12, 0x7F, 0x00, 0x24, 0x81, 0x00, 0x3F, 0x01, 0x00, 0x2A, 0x7D, 0x00, 0x2A, 0x45, 0x00, 0x3E, 0x45, 0x00, 0x2A, 0x7D, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x47, 0x00, 0x00, 0x40, 0x00, 0x05, 0x40, 0x80, 0x2A, 0xFF, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B92, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x32, 0x62, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x5F, 0x80, 0x2A, 0xC2, 0x00, 0x2A, 0xD2, 0x00, 0x3F, 0x5A, 0x00, 0x2A, 0x4A, 0x00, 0x2A, 0x4A, 0x00, 0x3E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x55, 0x42, 0x00, 0x55, 0x42, 0x00, 0x54, 0x42, 0x00, 0x40, 0x4E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B93, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x31, 0x10, 0x00, 0x22, 0x3F, 0x80, 0x7F, 0xA8, 0x00, 0x24, 0xE8, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x88, 0x00, 0x24, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x0F, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B94, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x32, 0x20, 0x00, 0x24, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x29, 0x21, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x20, 0x00, 0x00, 0x20, 0x00, 0x55, 0x20, 0x00, 0x55, 0x20, 0x00, 0x54, 0x7F, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B96, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x10, 0x00, 0x24, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x29, 0x30, 0x00, 0x29, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x61, 0x00, 0x29, 0x61, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0x21, 0x00, 0x55, 0x21, 0x00, 0x55, 0x21, 0x00, 0x54, 0x21, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B97, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x3F, 0x00, 0x24, 0x21, 0x00, 0x7F, 0x63, 0x00, 0x29, 0x16, 0x00, 0x29, 0x0C, 0x00, 0x3F, 0x1E, 0x00, 0x29, 0x33, 0x00, 0x29, 0x61, 0x80, 0x3F, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x55, 0x00, 0x00, 0x55, 0x18, 0x00, 0x54, 0x0E, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B9A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x00, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B9D, { 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1B, 0xE6, 0x00, 0x64, 0x41, 0x80, 0x0F, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9B9E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x24, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x55, 0x00, 0x29, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x29, 0x55, 0x00, 0x29, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x00, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x54, 0x55, 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9B9F, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x1F, 0x7F, 0x80, 0x12, 0x40, 0x80, 0x24, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x15, 0x10, 0x00, 0x15, 0xFF, 0x80, 0x1F, 0x11, 0x00, 0x15, 0x22, 0x00, 0x15, 0x32, 0x00, 0x1F, 0x4C, 0x00, 0x00, 0x8C, 0x00, 0x02, 0x92, 0x00, 0x2A, 0x21, 0x00, 0x28, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BA0, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x3F, 0x00, 0x32, 0x62, 0x00, 0x24, 0xC4, 0x00, 0x7F, 0x7F, 0x80, 0x29, 0x40, 0x00, 0x29, 0x40, 0x00, 0x3F, 0x5F, 0x00, 0x29, 0x51, 0x00, 0x29, 0x51, 0x00, 0x3F, 0x51, 0x00, 0x00, 0x53, 0x00, 0x55, 0x50, 0x00, 0x55, 0x50, 0x80, 0x54, 0x99, 0x80, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BA6, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x32, 0x40, 0x80, 0x24, 0x40, 0x80, 0x7F, 0x5E, 0x80, 0x29, 0x40, 0x80, 0x29, 0x40, 0x80, 0x3F, 0x5E, 0x80, 0x29, 0x52, 0x80, 0x29, 0x52, 0x80, 0x3F, 0x52, 0x80, 0x00, 0x5E, 0x80, 0x55, 0x40, 0x80, 0x55, 0x40, 0x80, 0x54, 0x40, 0x80, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BA7, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x09, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x48, 0x00, 0x29, 0x48, 0x00, 0x29, 0x7F, 0x80, 0x3F, 0x14, 0x80, 0x00, 0x14, 0x80, 0x55, 0x35, 0x80, 0x55, 0x26, 0x00, 0x54, 0x63, 0x00, 0x40, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BA8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x23, 0x00, 0x32, 0x3E, 0x00, 0x24, 0x20, 0x00, 0x7F, 0x20, 0x80, 0x29, 0x31, 0x80, 0x29, 0x1F, 0x00, 0x3F, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x54, 0x21, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BA9, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x1E, 0x63, 0x00, 0x32, 0x22, 0x00, 0x24, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x55, 0x62, 0x00, 0x55, 0x42, 0x00, 0x54, 0xC2, 0x00, 0x41, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BAA, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x61, 0x00, 0x3F, 0xA1, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x55, 0x21, 0x00, 0x54, 0x21, 0x00, 0x40, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BAB, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x12, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x1F, 0x12, 0x00, 0x15, 0x21, 0x00, 0x15, 0x42, 0x80, 0x1F, 0x12, 0x00, 0x15, 0x0C, 0x00, 0x15, 0x04, 0x00, 0x1F, 0x0A, 0x00, 0x00, 0x92, 0x00, 0x0A, 0xA1, 0x00, 0x2A, 0x41, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BAC, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x14, 0x00, 0x7F, 0x22, 0x00, 0x29, 0xC1, 0x80, 0x29, 0x3E, 0x00, 0x3F, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x10, 0x00, 0x3F, 0x20, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x01, 0x00, 0x55, 0x01, 0x00, 0x54, 0x03, 0x00, 0x40, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BAD, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x29, 0x08, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x6A, 0x08, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BAE, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x22, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x14, 0x00, 0x24, 0xFF, 0x80, 0x1F, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x02, 0x88, 0x00, 0x2A, 0x88, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BB0, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x32, 0x40, 0x80, 0x24, 0x40, 0x80, 0x7F, 0x5E, 0x80, 0x29, 0x52, 0x80, 0x29, 0x52, 0x80, 0x3F, 0x52, 0x80, 0x29, 0x52, 0x80, 0x29, 0x52, 0x80, 0x3F, 0x5E, 0x80, 0x00, 0x40, 0x80, 0x55, 0x40, 0x80, 0x55, 0x40, 0x80, 0x54, 0x7F, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BB1, { 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x1E, 0x11, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x11, 0x00, 0x7F, 0x13, 0x00, 0x29, 0x12, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x29, 0x18, 0x00, 0x29, 0x33, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0xD0, 0x00, 0x55, 0x10, 0x00, 0x55, 0x10, 0x80, 0x54, 0x19, 0x80, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BB2, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x1E, 0x25, 0x00, 0x32, 0x25, 0x80, 0x24, 0x64, 0x80, 0x7E, 0x44, 0x00, 0x2A, 0xFF, 0x80, 0x2B, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x4E, 0x00, 0x3E, 0x4A, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5B, 0x00, 0x54, 0x51, 0x00, 0x40, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BB4, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x32, 0x64, 0x00, 0x24, 0x44, 0x00, 0x7E, 0xFF, 0x80, 0x2B, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x4E, 0x00, 0x2A, 0x4E, 0x00, 0x2A, 0x55, 0x00, 0x3E, 0x55, 0x00, 0x00, 0x64, 0x80, 0x55, 0x44, 0x00, 0x55, 0x44, 0x00, 0x54, 0x44, 0x00, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BB7, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x24, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x09, 0x00, 0x7F, 0x09, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x48, 0x00, 0x3F, 0x48, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x18, 0x80, 0x3F, 0x18, 0x80, 0x00, 0x29, 0x80, 0x55, 0x69, 0x00, 0x55, 0x4B, 0x00, 0x54, 0x88, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BB8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x3E, 0x00, 0x32, 0x22, 0x00, 0x24, 0x66, 0x00, 0x7F, 0x44, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x59, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x34, 0x00, 0x00, 0x24, 0x00, 0x55, 0x64, 0x00, 0x55, 0x44, 0x80, 0x54, 0xC4, 0x80, 0x41, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BB9, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x49, 0x00, 0x32, 0xC9, 0x80, 0x24, 0x88, 0x80, 0x7F, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BBB, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x62, 0x00, 0x32, 0x42, 0x00, 0x24, 0xFF, 0x00, 0x7F, 0x25, 0x00, 0x29, 0x24, 0x00, 0x29, 0x47, 0x80, 0x3F, 0xA0, 0x00, 0x29, 0x3E, 0x00, 0x29, 0x62, 0x00, 0x3F, 0xC6, 0x00, 0x00, 0x2C, 0x00, 0x55, 0x18, 0x00, 0x55, 0x3C, 0x00, 0x54, 0x66, 0x00, 0x41, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BBC, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x3F, 0x00, 0x32, 0x01, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x01, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x29, 0x40, 0x80, 0x29, 0x3F, 0x00, 0x3F, 0x11, 0x00, 0x00, 0x1B, 0x00, 0x55, 0x0E, 0x00, 0x55, 0x0C, 0x00, 0x54, 0x1B, 0x00, 0x40, 0x71, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BBE, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x0E, 0x00, 0x32, 0x78, 0x00, 0x24, 0x12, 0x00, 0x7F, 0x5B, 0x00, 0x29, 0x49, 0x80, 0x29, 0x40, 0x80, 0x3F, 0x10, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x12, 0x00, 0x3F, 0x32, 0x00, 0x00, 0x26, 0x00, 0x55, 0x74, 0x00, 0x55, 0x1E, 0x00, 0x54, 0x33, 0x00, 0x40, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BBF, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x32, 0x54, 0x00, 0x24, 0x54, 0x00, 0x7E, 0x74, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x74, 0x00, 0x2A, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x00, 0x54, 0x00, 0x55, 0x74, 0x00, 0x55, 0xD4, 0x80, 0x54, 0x14, 0x80, 0x40, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BC0, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x7E, 0x00, 0x32, 0x10, 0x00, 0x24, 0x32, 0x00, 0x7F, 0x66, 0x00, 0x29, 0x3C, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x11, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x08, 0x80, 0x3F, 0x08, 0x00, 0x00, 0x2A, 0x00, 0x55, 0x2A, 0x00, 0x55, 0x6B, 0x00, 0x54, 0xC9, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BC1, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x49, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x28, 0x00, 0x55, 0x18, 0x00, 0x55, 0x1C, 0x00, 0x54, 0x36, 0x00, 0x40, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BC6, { 0x00, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x1E, 0x09, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BC7, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x7E, 0x80, 0x80, 0x2A, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x00, 0x24, 0x00, 0x55, 0x64, 0x00, 0x55, 0x44, 0x80, 0x54, 0xC4, 0x80, 0x41, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BC8, { 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0C, 0xFF, 0x80, 0x08, 0x86, 0x00, 0x19, 0x6C, 0x00, 0x14, 0x38, 0x00, 0x34, 0x6E, 0x00, 0x55, 0xC3, 0x80, 0x14, 0x3C, 0x00, 0x14, 0x48, 0x00, 0x15, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x91, 0x00, 0x10, 0xFF, 0x00, 0x11, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BC9, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x0F, 0x49, 0x00, 0x12, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x1F, 0x49, 0x00, 0x15, 0x49, 0x00, 0x15, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x15, 0x08, 0x00, 0x15, 0x08, 0x00, 0x1F, 0x7F, 0x00, 0x01, 0x08, 0x00, 0x0A, 0x88, 0x00, 0x2A, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BCA, { 0x00, 0x00, 0x00, 0x18, 0x10, 0x00, 0x0C, 0x54, 0x00, 0x60, 0xD7, 0x00, 0x31, 0xB1, 0x80, 0x0C, 0x0E, 0x00, 0x39, 0xF8, 0x00, 0x60, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BCE, { 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x1E, 0x04, 0x80, 0x32, 0x04, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x44, 0x00, 0x29, 0x44, 0x00, 0x29, 0x44, 0x00, 0x3F, 0x7D, 0x00, 0x29, 0x55, 0x00, 0x29, 0x55, 0x00, 0x3F, 0x56, 0x00, 0x00, 0x52, 0x00, 0x55, 0x72, 0x00, 0x55, 0x46, 0x80, 0x54, 0x4B, 0x80, 0x40, 0x91, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BCF, { 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x1E, 0x39, 0x00, 0x32, 0xE5, 0x00, 0x24, 0x25, 0x00, 0x7E, 0x25, 0x00, 0x2A, 0xFD, 0x00, 0x2A, 0x25, 0x00, 0x3E, 0x25, 0x00, 0x2A, 0x75, 0x00, 0x2A, 0x6D, 0x00, 0x3E, 0xA5, 0x00, 0x00, 0x25, 0x00, 0x55, 0x21, 0x00, 0x55, 0x21, 0x00, 0x54, 0x21, 0x00, 0x40, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BD0, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x29, 0x08, 0x00, 0x29, 0x48, 0x00, 0x3F, 0x4F, 0x00, 0x00, 0x48, 0x00, 0x55, 0x48, 0x00, 0x55, 0x68, 0x00, 0x54, 0xB8, 0x00, 0x41, 0x8F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BD1, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1E, 0x64, 0x00, 0x32, 0x18, 0x00, 0x24, 0x66, 0x00, 0x7F, 0x10, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x3F, 0x28, 0x00, 0x29, 0x7F, 0x00, 0x29, 0xC9, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x49, 0x00, 0x55, 0x49, 0x00, 0x55, 0x4B, 0x00, 0x54, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BD2, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x02, 0x00, 0x24, 0x34, 0x00, 0x7F, 0x08, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BD4, { 0x00, 0x00, 0x00, 0x10, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x32, 0x92, 0x00, 0x24, 0x92, 0x00, 0x7E, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BD6, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x24, 0x7F, 0x00, 0x1F, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x1F, 0x7F, 0x00, 0x01, 0x41, 0x00, 0x0A, 0xC1, 0x00, 0x2A, 0x41, 0x00, 0x20, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BD7, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1B, 0xE6, 0x00, 0x64, 0x41, 0x80, 0x0F, 0xFC, 0x00, 0x18, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BD8, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x7E, 0x00, 0x32, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x7F, 0x2A, 0x00, 0x29, 0x2A, 0x00, 0x29, 0x6B, 0x00, 0x3F, 0xC9, 0x80, 0x29, 0x08, 0x00, 0x29, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x55, 0x46, 0x00, 0x55, 0x7C, 0x00, 0x54, 0x16, 0x00, 0x40, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BDB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x3F, 0x80, 0x32, 0x20, 0x80, 0x24, 0x24, 0x80, 0x7F, 0x2E, 0x80, 0x29, 0x24, 0x80, 0x29, 0x24, 0x80, 0x3F, 0x2E, 0x80, 0x29, 0x20, 0x80, 0x29, 0x2E, 0x80, 0x3F, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x2A, 0xAE, 0x80, 0x2A, 0xA0, 0x80, 0x6A, 0x20, 0x80, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BDD, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x32, 0x40, 0x80, 0x24, 0x48, 0x80, 0x7F, 0x48, 0x80, 0x29, 0x7F, 0x80, 0x29, 0x48, 0x80, 0x3F, 0x48, 0x80, 0x29, 0x5E, 0x80, 0x29, 0x52, 0x80, 0x3F, 0x52, 0x80, 0x00, 0x52, 0x80, 0x55, 0x5E, 0x80, 0x55, 0x40, 0x80, 0x54, 0x7F, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BDF, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x55, 0x6B, 0x00, 0x55, 0x49, 0x00, 0x54, 0xC9, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BE1, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x1E, 0x12, 0x00, 0x32, 0x12, 0x00, 0x24, 0x73, 0x80, 0x7F, 0x12, 0x00, 0x29, 0x12, 0x00, 0x29, 0x12, 0x00, 0x3F, 0x73, 0x80, 0x29, 0x12, 0x00, 0x29, 0x12, 0x00, 0x3F, 0x32, 0x00, 0x00, 0x53, 0x80, 0x55, 0x12, 0x00, 0x55, 0x32, 0x00, 0x54, 0x22, 0x00, 0x40, 0x62, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BE2, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x1E, 0x67, 0x00, 0x32, 0x41, 0x00, 0x24, 0x41, 0x00, 0x7E, 0x77, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x24, 0x00, 0x3E, 0x24, 0x00, 0x00, 0x24, 0x00, 0x55, 0x24, 0x00, 0x55, 0x64, 0x80, 0x54, 0x44, 0x80, 0x40, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BE3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7E, 0x00, 0x32, 0x42, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0xCA, 0x80, 0x00, 0x12, 0x80, 0x55, 0x24, 0x80, 0x55, 0x49, 0x80, 0x54, 0x11, 0x00, 0x40, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BE4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x15, 0x44, 0x00, 0x1F, 0x44, 0x80, 0x15, 0x7D, 0x00, 0x15, 0x46, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0xC4, 0x80, 0x0A, 0x5C, 0x80, 0x2A, 0xE7, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BE5, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x22, 0x00, 0x3F, 0x22, 0x00, 0x29, 0xC3, 0x80, 0x29, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BE7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x3F, 0x00, 0x32, 0x21, 0x00, 0x24, 0x21, 0x00, 0x7F, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x29, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x80, 0x3F, 0x40, 0x80, 0x00, 0x40, 0x80, 0x55, 0x7F, 0x80, 0x55, 0x40, 0x80, 0x54, 0x40, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BE8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0F, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x22, 0x00, 0x00, 0x1F, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x15, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x08, 0x00, 0x1F, 0x2A, 0x00, 0x00, 0xA9, 0x00, 0x0A, 0xA9, 0x00, 0x2A, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BEA, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x3F, 0x43, 0x80, 0x29, 0x90, 0x00, 0x29, 0x1F, 0x00, 0x3F, 0x31, 0x00, 0x00, 0x63, 0x00, 0x55, 0xD6, 0x00, 0x55, 0x1C, 0x00, 0x54, 0x36, 0x00, 0x40, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BEB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x32, 0xAF, 0x00, 0x24, 0xA1, 0x00, 0x7E, 0xE9, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xAB, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xEA, 0x00, 0x2A, 0xAE, 0x00, 0x3E, 0xA4, 0x00, 0x00, 0xA4, 0x00, 0x2A, 0xEE, 0x00, 0x2B, 0xAA, 0x00, 0x6A, 0x2B, 0x00, 0x40, 0x29, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BEF, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x80, 0x1E, 0xA2, 0x80, 0x32, 0xA2, 0x80, 0x24, 0xFA, 0x80, 0x7F, 0x22, 0x80, 0x2A, 0x22, 0x80, 0x2B, 0xFE, 0x80, 0x3E, 0x22, 0x80, 0x2A, 0x22, 0x80, 0x2A, 0xFA, 0x80, 0x3E, 0xAA, 0x80, 0x00, 0xAA, 0x80, 0x2A, 0xA8, 0x80, 0x2A, 0xA8, 0x80, 0x6A, 0xB8, 0x80, 0x40, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BF0, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x1C, 0x00, 0x32, 0x36, 0x00, 0x24, 0x63, 0x00, 0x7E, 0xDD, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x02, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x80, 0x54, 0x52, 0x80, 0x40, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BF1, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x0F, 0x00, 0x32, 0x08, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x48, 0x80, 0x29, 0x4E, 0x00, 0x29, 0x78, 0x00, 0x3F, 0x48, 0x80, 0x29, 0x47, 0x80, 0x29, 0x40, 0x00, 0x3F, 0x4A, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5A, 0x80, 0x54, 0x92, 0x80, 0x40, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BF2, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x42, 0x00, 0x32, 0x47, 0x00, 0x25, 0xF5, 0x00, 0x7E, 0x45, 0x00, 0x2A, 0x4D, 0x80, 0x2A, 0x48, 0x80, 0x3E, 0x70, 0x00, 0x2A, 0x56, 0x00, 0x2A, 0x53, 0x00, 0x3E, 0x51, 0x00, 0x00, 0x50, 0x00, 0x2A, 0xD0, 0x00, 0x2A, 0x96, 0x00, 0x6A, 0x93, 0x00, 0x41, 0xB1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BF3, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x80, 0x24, 0x40, 0x00, 0x7F, 0x43, 0x00, 0x29, 0x5E, 0x00, 0x29, 0x54, 0x00, 0x3F, 0x54, 0x00, 0x29, 0x5F, 0x80, 0x29, 0x52, 0x00, 0x3F, 0x52, 0x00, 0x00, 0x5A, 0x00, 0x55, 0x73, 0x00, 0x55, 0x41, 0x00, 0x54, 0xDD, 0x80, 0x41, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BF5, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x32, 0x00, 0x32, 0x23, 0x00, 0x24, 0x7D, 0x00, 0x7F, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x14, 0x00, 0x3F, 0x22, 0x00, 0x29, 0xC9, 0x80, 0x29, 0x10, 0x00, 0x3F, 0x62, 0x00, 0x00, 0x0C, 0x00, 0x2A, 0xB0, 0x80, 0x2A, 0x83, 0x00, 0x6A, 0x0C, 0x00, 0x40, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BF7, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x32, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x08, 0x00, 0x3F, 0x48, 0x00, 0x00, 0x4F, 0x00, 0x55, 0x48, 0x00, 0x55, 0x68, 0x00, 0x54, 0xB8, 0x00, 0x41, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BF8, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x1E, 0x5F, 0x00, 0x32, 0x41, 0x00, 0x24, 0xC1, 0x00, 0x7E, 0xBF, 0x80, 0x2A, 0x90, 0x00, 0x2B, 0x90, 0x00, 0x3E, 0x9F, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0x84, 0x00, 0x3E, 0xFF, 0x80, 0x00, 0x84, 0x00, 0x2A, 0x8E, 0x00, 0x2A, 0x8A, 0x00, 0x6A, 0x9B, 0x00, 0x40, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BF9, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x29, 0x28, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x48, 0x00, 0x00, 0x08, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x54, 0x08, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9BFA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x11, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x12, 0x00, 0x7F, 0x12, 0x00, 0x29, 0x14, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x08, 0x00, 0x29, 0x14, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0xE1, 0x00, 0x00, 0x21, 0x00, 0x55, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x54, 0x21, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BFD, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x1E, 0xF7, 0x80, 0x32, 0x94, 0x80, 0x24, 0x94, 0x80, 0x7E, 0xF4, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x2A, 0xF4, 0x80, 0x2A, 0x04, 0x80, 0x3E, 0x94, 0x80, 0x00, 0xE4, 0x80, 0x2A, 0x85, 0x80, 0x2A, 0x84, 0x00, 0x6A, 0x94, 0x00, 0x40, 0xF4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9BFF, { 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x1E, 0x7C, 0x00, 0x32, 0x40, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x40, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x55, 0x00, 0x3F, 0x55, 0x00, 0x00, 0x7F, 0x00, 0x55, 0xD5, 0x00, 0x55, 0x55, 0x00, 0x54, 0x55, 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C00, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x0E, 0x00, 0x32, 0xFA, 0x00, 0x24, 0x51, 0x00, 0x7F, 0x89, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x76, 0x00, 0x55, 0xD4, 0x00, 0x55, 0x1C, 0x00, 0x54, 0x36, 0x00, 0x40, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C02, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x1E, 0xF4, 0x80, 0x32, 0x94, 0x80, 0x24, 0x94, 0x80, 0x7E, 0xF4, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x2A, 0xF4, 0x80, 0x2A, 0x94, 0x80, 0x3E, 0x94, 0x80, 0x00, 0x94, 0x80, 0x2A, 0xF0, 0x80, 0x2A, 0x50, 0x80, 0x6A, 0xD8, 0x80, 0x41, 0x8B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C04, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x80, 0x1E, 0x02, 0x80, 0x32, 0x02, 0x00, 0x24, 0xFF, 0x80, 0x7E, 0x82, 0x00, 0x2A, 0xBA, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0x92, 0x80, 0x2A, 0xFE, 0x80, 0x2A, 0xAB, 0x00, 0x3E, 0xAB, 0x00, 0x00, 0xBA, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xAA, 0x80, 0x6A, 0x87, 0x80, 0x41, 0x09, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C06, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0xBE, 0x80, 0x3E, 0x22, 0x00, 0x00, 0x22, 0x00, 0x55, 0x3E, 0x00, 0x55, 0x22, 0x00, 0x54, 0x22, 0x00, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C08, { 0x00, 0x00, 0x00, 0x10, 0x4A, 0x00, 0x1E, 0x4A, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x4A, 0x00, 0x7E, 0x4A, 0x00, 0x2A, 0x4E, 0x00, 0x2A, 0x40, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x55, 0x6B, 0x00, 0x55, 0x49, 0x00, 0x54, 0xC9, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C09, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x29, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C0A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x6B, 0x00, 0x3E, 0x5D, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x55, 0x6B, 0x00, 0x55, 0x49, 0x00, 0x54, 0xC9, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C0B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x80, 0x00, 0x24, 0xBF, 0x00, 0x7E, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x3E, 0xBF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0x92, 0x00, 0x00, 0xB6, 0x00, 0x55, 0x8C, 0x00, 0x55, 0xB7, 0x00, 0x54, 0x80, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C0C, { 0x00, 0x00, 0x00, 0x10, 0x2E, 0x00, 0x1E, 0x63, 0x00, 0x32, 0xC1, 0x80, 0x24, 0xBE, 0x80, 0x7E, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x55, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x57, 0x00, 0x3E, 0x61, 0x00, 0x00, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C0D, { 0x00, 0x00, 0x00, 0x08, 0x1A, 0x00, 0x0E, 0xE2, 0x00, 0x12, 0x22, 0x00, 0x24, 0x22, 0x00, 0x3F, 0xFE, 0x80, 0x2A, 0x2B, 0x00, 0x2A, 0x2A, 0x00, 0x3E, 0x72, 0x00, 0x2A, 0x6A, 0x00, 0x2A, 0xA2, 0x00, 0x3E, 0x22, 0x00, 0x00, 0x25, 0x00, 0x01, 0x25, 0x00, 0x22, 0xA5, 0x00, 0x2A, 0x28, 0x80, 0x28, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C0F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x80, 0x32, 0x00, 0x00, 0x24, 0x3F, 0x00, 0x7F, 0x21, 0x00, 0x29, 0x21, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x80, 0x3F, 0x48, 0x80, 0x00, 0x48, 0x80, 0x55, 0x7F, 0x80, 0x55, 0x48, 0x80, 0x54, 0x48, 0x80, 0x40, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C10, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x73, 0x80, 0x1E, 0x52, 0x80, 0x12, 0x52, 0x80, 0x24, 0x73, 0x80, 0x1F, 0x00, 0x00, 0x15, 0x3F, 0x00, 0x15, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x10, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x20, 0x80, 0x02, 0x80, 0x80, 0x2A, 0x81, 0x00, 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C11, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x32, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x7F, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x00, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0xD4, 0x80, 0x55, 0x24, 0x80, 0x55, 0x49, 0x80, 0x54, 0x11, 0x00, 0x40, 0x67, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C12, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0F, 0x3F, 0x80, 0x09, 0x40, 0x00, 0x12, 0xBF, 0x00, 0x24, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x15, 0x21, 0x00, 0x15, 0x3F, 0x00, 0x1F, 0x08, 0x00, 0x15, 0x1F, 0x80, 0x15, 0x21, 0x00, 0x1F, 0xD2, 0x00, 0x00, 0x8C, 0x00, 0x2A, 0x96, 0x00, 0x2A, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C13, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x49, 0x00, 0x24, 0x49, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x80, 0x54, 0x52, 0x80, 0x40, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C14, { 0x00, 0x00, 0x00, 0x20, 0x05, 0x00, 0x3C, 0x04, 0x80, 0x64, 0x04, 0x00, 0x09, 0xFF, 0x80, 0x7D, 0x04, 0x00, 0x55, 0x04, 0x00, 0x55, 0x74, 0x80, 0x7D, 0x04, 0x80, 0x55, 0x75, 0x80, 0x55, 0x55, 0x00, 0x7D, 0x57, 0x00, 0x01, 0x72, 0x00, 0x55, 0x02, 0x00, 0x55, 0x06, 0x80, 0x51, 0x0B, 0x80, 0x42, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C15, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x00, 0x1E, 0x91, 0x00, 0x12, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3E, 0xF7, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x80, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x8A, 0x00, 0x3E, 0x84, 0x00, 0x02, 0xF4, 0x00, 0x15, 0x8A, 0x00, 0x2A, 0x91, 0x00, 0x20, 0xA0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C16, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x20, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x20, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0xC4, 0x00, 0x29, 0x3F, 0x80, 0x3F, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C18, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x7F, 0x80, 0x80, 0x29, 0x7F, 0x00, 0x29, 0x10, 0x00, 0x3F, 0x22, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x09, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C19, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x1E, 0x22, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x29, 0x10, 0x00, 0x29, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x29, 0x20, 0x00, 0x29, 0x20, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0xE0, 0x80, 0x55, 0xA0, 0x80, 0x55, 0x20, 0x80, 0x54, 0x20, 0x80, 0x40, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C1A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x7F, 0xBE, 0x80, 0x29, 0x00, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x22, 0x00, 0x29, 0x22, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x22, 0x00, 0x55, 0x3E, 0x00, 0x55, 0x00, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C1B, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x32, 0x22, 0x00, 0x24, 0x22, 0x00, 0x7F, 0x3E, 0x00, 0x29, 0x22, 0x00, 0x29, 0x22, 0x00, 0x3F, 0x3E, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x55, 0x00, 0x00, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C1C, { 0x00, 0x00, 0x00, 0x10, 0x12, 0x00, 0x1E, 0x24, 0x00, 0x33, 0xFF, 0x80, 0x24, 0x28, 0x00, 0x7E, 0xFF, 0x00, 0x2A, 0x29, 0x00, 0x2A, 0x29, 0x00, 0x3F, 0xFF, 0x80, 0x2A, 0x29, 0x00, 0x2A, 0x29, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x2C, 0x00, 0x55, 0x6A, 0x00, 0x55, 0xAB, 0x00, 0x55, 0x29, 0x80, 0x40, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C1E, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x7F, 0x41, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x40, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x55, 0x2A, 0x80, 0x55, 0x6A, 0x80, 0x54, 0x41, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C21, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x1E, 0xE7, 0x80, 0x32, 0x82, 0x80, 0x24, 0x82, 0x80, 0x7E, 0xA2, 0x80, 0x2A, 0xA2, 0x80, 0x2A, 0xF4, 0x80, 0x3F, 0x91, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C22, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x48, 0x00, 0x24, 0x48, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x48, 0x00, 0x29, 0x48, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x48, 0x00, 0x29, 0x48, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x55, 0x2A, 0x80, 0x55, 0x6A, 0x80, 0x54, 0x41, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C23, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1E, 0xE4, 0x00, 0x32, 0xBF, 0x80, 0x24, 0xA4, 0x00, 0x7E, 0xA4, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x80, 0x3E, 0xA1, 0x00, 0x00, 0xA9, 0x00, 0x55, 0xED, 0x00, 0x55, 0x05, 0x00, 0x54, 0x01, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C24, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x4F, 0x80, 0x32, 0xE2, 0x00, 0x24, 0xA2, 0x00, 0x7E, 0xAF, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xEA, 0x80, 0x3E, 0x8A, 0x80, 0x2A, 0x8A, 0x80, 0x2A, 0xEA, 0x80, 0x3E, 0xAA, 0x80, 0x00, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAB, 0x80, 0x6A, 0xE2, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C25, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0F, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x12, 0x55, 0x00, 0x24, 0x55, 0x00, 0x1F, 0xFF, 0x80, 0x15, 0x08, 0x00, 0x15, 0x28, 0x80, 0x1F, 0x29, 0x00, 0x15, 0x4C, 0x00, 0x15, 0x8C, 0x00, 0x1F, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x0A, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C26, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xFF, 0x80, 0x32, 0x42, 0x00, 0x24, 0x00, 0x00, 0x7E, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x84, 0x00, 0x3E, 0x84, 0x00, 0x2B, 0x29, 0x00, 0x2A, 0xA5, 0x00, 0x3E, 0x42, 0x00, 0x00, 0x42, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x6A, 0xF7, 0x80, 0x40, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C27, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0xA4, 0x00, 0x25, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x48, 0x00, 0x37, 0xFF, 0x80, 0x2C, 0x44, 0x00, 0x24, 0xC4, 0x00, 0x24, 0xBE, 0x00, 0x35, 0x4B, 0x00, 0x2F, 0xFD, 0x80, 0x24, 0xA4, 0x00, 0x24, 0xFC, 0x00, 0x24, 0xA4, 0x00, 0x64, 0xFC, 0x00, 0x4D, 0x2A, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C28, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x24, 0x5D, 0x00, 0x7E, 0x41, 0x00, 0x2A, 0x5D, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xF7, 0x80, 0x2A, 0x31, 0x80, 0x2A, 0x52, 0x80, 0x3E, 0x94, 0x80, 0x00, 0x31, 0x80, 0x55, 0x52, 0x80, 0x55, 0x94, 0x80, 0x54, 0x10, 0x80, 0x40, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C29, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x1F, 0x00, 0x32, 0x31, 0x00, 0x24, 0xEB, 0x00, 0x7F, 0x16, 0x00, 0x29, 0x0C, 0x00, 0x29, 0x38, 0x00, 0x3F, 0xE0, 0x00, 0x29, 0x3F, 0x00, 0x29, 0x48, 0x00, 0x3F, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C2A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x3E, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x10, 0x00, 0x29, 0x32, 0x00, 0x3F, 0x27, 0x00, 0x29, 0x7D, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x54, 0x55, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C2D, { 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x1E, 0x13, 0x00, 0x32, 0x7E, 0x00, 0x24, 0x14, 0x00, 0x7E, 0xFF, 0x80, 0x2A, 0x10, 0x00, 0x2A, 0x23, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x20, 0x80, 0x2A, 0x1F, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x55, 0x21, 0x00, 0x55, 0x3F, 0x00, 0x54, 0x21, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C2E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x49, 0x00, 0x24, 0x49, 0x00, 0x7F, 0x5D, 0x00, 0x29, 0x55, 0x00, 0x29, 0x63, 0x00, 0x3F, 0x7F, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x55, 0x00, 0x00, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x54, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C2F, { 0x00, 0x00, 0x00, 0x10, 0xF7, 0x80, 0x1E, 0x10, 0x80, 0x32, 0x10, 0x80, 0x24, 0xF7, 0x80, 0x7E, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0xF7, 0x80, 0x3E, 0x10, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0x52, 0x80, 0x3E, 0x10, 0x80, 0x00, 0xB1, 0x80, 0x2A, 0xD2, 0x80, 0x2A, 0x94, 0x80, 0x6A, 0x31, 0x80, 0x40, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C30, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1E, 0xE2, 0x00, 0x32, 0x02, 0x00, 0x24, 0x0F, 0x80, 0x7E, 0x0A, 0x80, 0x2B, 0xFA, 0x80, 0x2A, 0x4A, 0x80, 0x3E, 0x4F, 0x80, 0x2A, 0xEA, 0x80, 0x2A, 0xEA, 0x80, 0x3F, 0x5A, 0x80, 0x00, 0x4F, 0x80, 0x55, 0x42, 0x00, 0x55, 0x42, 0x00, 0x54, 0x42, 0x00, 0x40, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C31, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1C, 0x04, 0x00, 0x34, 0xBF, 0x80, 0x28, 0xC4, 0x00, 0x7E, 0x5F, 0x00, 0x2A, 0x95, 0x00, 0x2A, 0xD5, 0x00, 0x3E, 0x5F, 0x00, 0x2A, 0x15, 0x00, 0x2B, 0xD5, 0x00, 0x3E, 0x5F, 0x00, 0x00, 0x44, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0xC4, 0x00, 0x6A, 0xA4, 0x00, 0x41, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C32, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x08, 0x62, 0x00, 0x3F, 0x54, 0x00, 0x09, 0x8C, 0x00, 0x11, 0x13, 0x80, 0x27, 0xF0, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x1F, 0xFE, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C35, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x55, 0x3F, 0x80, 0x7F, 0xE2, 0x00, 0x29, 0x14, 0x00, 0x3F, 0x88, 0x00, 0x02, 0x16, 0x00, 0x07, 0xE1, 0x80, 0x08, 0x40, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C36, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x1E, 0xEF, 0x00, 0x32, 0x91, 0x00, 0x25, 0x53, 0x00, 0x7E, 0xAA, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x82, 0x00, 0x3F, 0x7D, 0x80, 0x2A, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x2A, 0x52, 0x00, 0x2A, 0xD3, 0x00, 0x6B, 0x91, 0x80, 0x40, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C37, { 0x00, 0x00, 0x00, 0x10, 0x90, 0x00, 0x1C, 0x90, 0x00, 0x34, 0x9F, 0x80, 0x29, 0xB1, 0x00, 0x7D, 0x2B, 0x00, 0x55, 0x4E, 0x00, 0x57, 0x44, 0x00, 0x7D, 0x5E, 0x00, 0x55, 0x73, 0x80, 0x55, 0x44, 0x00, 0x7D, 0x7F, 0x80, 0x01, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x55, 0x00, 0x51, 0x24, 0x80, 0x41, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C39, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xF0, 0x00, 0x32, 0xAF, 0x00, 0x24, 0xA5, 0x00, 0x7E, 0xF5, 0x00, 0x2A, 0x97, 0x00, 0x2A, 0xF2, 0x00, 0x3E, 0xA7, 0x00, 0x2A, 0xAD, 0x00, 0x2A, 0xF1, 0x80, 0x3E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x08, 0x00, 0x55, 0x08, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C3A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x24, 0x00, 0x32, 0x3C, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x94, 0x80, 0x2A, 0xF7, 0x80, 0x2A, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0xC9, 0x80, 0x3E, 0x10, 0x00, 0x00, 0x64, 0x00, 0x55, 0x19, 0x00, 0x55, 0x63, 0x00, 0x54, 0x0E, 0x00, 0x40, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C3B, { 0x00, 0x00, 0x00, 0x08, 0x3F, 0x00, 0x0F, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x24, 0x3F, 0x00, 0x1F, 0x00, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x52, 0x80, 0x1F, 0x7F, 0x80, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x80, 0x1F, 0x11, 0x00, 0x00, 0x8A, 0x00, 0x0A, 0x84, 0x00, 0x2A, 0x1A, 0x00, 0x20, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C3D, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x24, 0x00, 0x7E, 0xFF, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xFF, 0x80, 0x3E, 0xA4, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C3E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x14, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x55, 0x00, 0x29, 0x55, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x29, 0x3E, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x08, 0x00, 0x55, 0x2A, 0x00, 0x55, 0x6B, 0x00, 0x54, 0xC9, 0x80, 0x40, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C41, { 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x1D, 0xBF, 0x80, 0x34, 0x88, 0x00, 0x29, 0x08, 0x00, 0x7F, 0x8C, 0x80, 0x2A, 0x95, 0x80, 0x2A, 0x27, 0x00, 0x3E, 0x0C, 0x00, 0x2B, 0x94, 0x00, 0x2A, 0xA6, 0x00, 0x3E, 0x8D, 0x00, 0x00, 0x94, 0x80, 0x54, 0xA4, 0x00, 0x55, 0x8C, 0x00, 0x55, 0x40, 0x00, 0x43, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C43, { 0x00, 0x00, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x24, 0x00, 0x32, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x7E, 0x7E, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x40, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x52, 0x00, 0x3E, 0xD2, 0x00, 0x00, 0xBF, 0x80, 0x55, 0x92, 0x00, 0x55, 0x12, 0x00, 0x54, 0x12, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C44, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x0A, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0xE1, 0x80, 0x55, 0x02, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x42, 0x00, 0x40, 0x2E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C45, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x88, 0x00, 0x24, 0xBF, 0x00, 0x7E, 0x89, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x89, 0x00, 0x3E, 0xBF, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x00, 0xBF, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x6B, 0x29, 0x00, 0x40, 0x2B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C46, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x22, 0x00, 0x7F, 0x14, 0x00, 0x29, 0xFF, 0x80, 0x29, 0x00, 0x00, 0x3F, 0x3E, 0x00, 0x29, 0x22, 0x00, 0x29, 0x3E, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x08, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C47, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0F, 0x7F, 0x80, 0x09, 0x44, 0x00, 0x12, 0x44, 0x00, 0x24, 0x5F, 0x00, 0x1F, 0x45, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x45, 0x00, 0x1F, 0x5F, 0x00, 0x15, 0x64, 0x80, 0x15, 0x55, 0x00, 0x1F, 0x4E, 0x00, 0x02, 0x8D, 0x00, 0x29, 0x94, 0x80, 0x24, 0xA4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C48, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x2A, 0xEE, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0x6E, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x01, 0x00, 0x00, 0x01, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x01, 0x00, 0x54, 0x01, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C49, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x24, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xA1, 0x00, 0x2E, 0xD2, 0x00, 0x35, 0x8C, 0x00, 0x24, 0x8A, 0x00, 0x25, 0xB1, 0x80, 0x07, 0xFC, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFE, 0x00, 0x28, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFF, 0x00, 0x30, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C4A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x12, 0x00, 0x24, 0x0C, 0x00, 0x7F, 0x7F, 0x80, 0x29, 0x14, 0x80, 0x29, 0x25, 0x00, 0x3F, 0x4C, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x80, 0x3F, 0x52, 0x80, 0x00, 0x63, 0x80, 0x55, 0x5E, 0x80, 0x55, 0x52, 0x80, 0x54, 0x5E, 0x80, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C4E, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x0E, 0x00, 0x32, 0x78, 0x00, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x29, 0x12, 0x00, 0x29, 0x3F, 0x00, 0x3F, 0x52, 0x80, 0x29, 0x1E, 0x00, 0x29, 0x00, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x40, 0x80, 0x55, 0x5E, 0x80, 0x55, 0x52, 0x80, 0x54, 0x5E, 0x80, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C4F, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x28, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0xA9, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x55, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x54, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C50, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x09, 0x00, 0x24, 0xFF, 0x80, 0x7E, 0x09, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xAA, 0x80, 0x2A, 0xEB, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x2A, 0xEB, 0x80, 0x2A, 0xAA, 0x80, 0x6A, 0xAA, 0x80, 0x41, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C52, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x1E, 0x22, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x14, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x67, 0x00, 0x3E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x01, 0x02, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x22, 0x00, 0x54, 0x12, 0x00, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C53, { 0x00, 0x00, 0x00, 0x10, 0xEF, 0x00, 0x1E, 0xA9, 0x00, 0x32, 0xEF, 0x00, 0x24, 0x00, 0x00, 0x7E, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x55, 0xFF, 0x80, 0x55, 0x10, 0x00, 0x54, 0x10, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C54, { 0x00, 0x00, 0x00, 0x10, 0x41, 0x00, 0x1E, 0x22, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x08, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x49, 0x00, 0x29, 0x2A, 0x00, 0x29, 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C56, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1D, 0xFF, 0x80, 0x35, 0x12, 0x00, 0x29, 0xA2, 0x00, 0x7D, 0xFF, 0x80, 0x55, 0x44, 0x80, 0x55, 0x4A, 0x80, 0x7D, 0x52, 0x00, 0x55, 0x52, 0x00, 0x55, 0x52, 0x00, 0x7D, 0xF2, 0x00, 0x01, 0x47, 0x00, 0x55, 0x45, 0x00, 0x55, 0x45, 0x00, 0x52, 0xCD, 0x80, 0x41, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C57, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x0F, 0x49, 0x00, 0x11, 0x2A, 0x00, 0x12, 0xFF, 0x80, 0x24, 0x1C, 0x00, 0x1F, 0x2A, 0x00, 0x15, 0x49, 0x00, 0x15, 0x88, 0x80, 0x1F, 0x42, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x9A, 0x00, 0x1F, 0xAA, 0x00, 0x00, 0xFF, 0x80, 0x09, 0x42, 0x00, 0x24, 0x82, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C58, { 0x00, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x1E, 0x02, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x02, 0x00, 0x7E, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xEF, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x69, 0x00, 0x2A, 0xCF, 0x00, 0x3E, 0x02, 0x00, 0x00, 0xFF, 0x80, 0x55, 0x42, 0x00, 0x55, 0x62, 0x00, 0x54, 0x22, 0x00, 0x40, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C5A, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x22, 0x00, 0x3F, 0x14, 0x00, 0x00, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x55, 0x7F, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C5B, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x1E, 0x63, 0x00, 0x32, 0xC1, 0x80, 0x24, 0x80, 0x80, 0x7E, 0xFF, 0x80, 0x2A, 0xC9, 0x80, 0x2A, 0xAA, 0x80, 0x3E, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C5C, { 0x00, 0x00, 0x00, 0x10, 0x90, 0x00, 0x1C, 0xBB, 0x80, 0x34, 0xAA, 0x80, 0x29, 0xAA, 0x80, 0x7D, 0x3B, 0x00, 0x57, 0x6B, 0x00, 0x55, 0xAA, 0x00, 0x7C, 0xBB, 0x00, 0x54, 0x82, 0x80, 0x55, 0x22, 0x80, 0x7F, 0xBA, 0x80, 0x00, 0xA2, 0x80, 0x54, 0xA2, 0x80, 0x55, 0xAB, 0x80, 0x51, 0x3A, 0x00, 0x43, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C5D, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x1E, 0xFF, 0x00, 0x32, 0x10, 0x00, 0x24, 0x42, 0x00, 0x7F, 0xFF, 0x80, 0x2A, 0x42, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x54, 0x22, 0x00, 0x40, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C5E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x55, 0x00, 0x24, 0x55, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x14, 0x80, 0x55, 0x35, 0x00, 0x55, 0xE6, 0x00, 0x54, 0x33, 0x00, 0x40, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C5F, { 0x00, 0x00, 0x00, 0x05, 0x20, 0x00, 0x1C, 0xCE, 0x00, 0x11, 0x22, 0x00, 0x1C, 0xCE, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x27, 0xE1, 0x00, 0x08, 0x40, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C60, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x14, 0x00, 0x32, 0x22, 0x00, 0x24, 0xDD, 0x80, 0x7F, 0x00, 0x00, 0x29, 0x7F, 0x00, 0x29, 0x49, 0x00, 0x3F, 0x6B, 0x00, 0x29, 0x49, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x22, 0x00, 0x55, 0x3E, 0x00, 0x54, 0x22, 0x00, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C63, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x00, 0x00, 0x24, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x29, 0x5D, 0x00, 0x29, 0x55, 0x00, 0x3F, 0x5D, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x22, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x22, 0x00, 0x55, 0x3E, 0x00, 0x54, 0x00, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C67, { 0x00, 0x00, 0x00, 0x10, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x55, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x55, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x22, 0x00, 0x54, 0x14, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C68, { 0x00, 0x00, 0x00, 0x10, 0x49, 0x00, 0x1E, 0x2A, 0x00, 0x32, 0xFF, 0x80, 0x24, 0x80, 0x80, 0x7E, 0xBE, 0x80, 0x2A, 0x22, 0x00, 0x2A, 0x3E, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x40, 0x80, 0x3E, 0x7F, 0x80, 0x00, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C69, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x32, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x49, 0x00, 0x00, 0x49, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x49, 0x00, 0x54, 0x49, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C6A, { 0x00, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x1E, 0x42, 0x00, 0x32, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x7E, 0x7E, 0x80, 0x2A, 0x11, 0x80, 0x2A, 0xFF, 0x00, 0x3E, 0x12, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x0A, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0xC1, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C6B, { 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x1E, 0x7E, 0x00, 0x32, 0x90, 0x80, 0x24, 0x49, 0x00, 0x7E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0x25, 0x00, 0x3E, 0xA2, 0x80, 0x2B, 0x1E, 0x00, 0x2A, 0x20, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x62, 0x00, 0x2A, 0xB6, 0x00, 0x2A, 0x1C, 0x00, 0x6A, 0x36, 0x00, 0x40, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C6E, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x1E, 0xD7, 0x00, 0x32, 0x99, 0x00, 0x24, 0x91, 0x00, 0x7E, 0xD3, 0x00, 0x2A, 0x99, 0x00, 0x2A, 0x89, 0x00, 0x3E, 0xEB, 0x00, 0x2A, 0xA9, 0x00, 0x2A, 0xA9, 0x00, 0x3E, 0xA9, 0x00, 0x01, 0xFF, 0x80, 0x55, 0x00, 0x00, 0x55, 0x42, 0x00, 0x54, 0xC3, 0x00, 0x41, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C70, { 0x00, 0x00, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0xA9, 0x00, 0x32, 0xA9, 0x00, 0x24, 0xFF, 0x00, 0x7E, 0x10, 0x80, 0x2A, 0x7F, 0x00, 0x2A, 0x12, 0x00, 0x3E, 0x14, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x0A, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0xC1, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x54, 0x41, 0x00, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C72, { 0x00, 0x00, 0x00, 0x10, 0x49, 0x00, 0x1E, 0x92, 0x00, 0x32, 0x49, 0x00, 0x24, 0xFE, 0x00, 0x7E, 0xAA, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xDA, 0x00, 0x3E, 0xB6, 0x00, 0x00, 0xDA, 0x00, 0x2A, 0xB6, 0x00, 0x2A, 0x92, 0x00, 0x68, 0xDA, 0x80, 0x41, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C75, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x1E, 0x84, 0x00, 0x32, 0xF7, 0x80, 0x24, 0xA9, 0x00, 0x7F, 0x14, 0x80, 0x2A, 0x05, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x82, 0x00, 0x2A, 0xBA, 0x00, 0x2A, 0x82, 0x80, 0x3E, 0xBA, 0x80, 0x00, 0xAB, 0x80, 0x2A, 0xAB, 0x00, 0x2A, 0xBA, 0x00, 0x69, 0x87, 0x00, 0x43, 0x1C, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C76, { 0x00, 0x00, 0x00, 0x10, 0x22, 0x00, 0x1E, 0x14, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x08, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x2A, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0xA2, 0x80, 0x3E, 0x3E, 0x00, 0x00, 0x22, 0x00, 0x55, 0x3E, 0x80, 0x55, 0x25, 0x00, 0x54, 0x3A, 0x00, 0x40, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C77, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1E, 0xFF, 0x80, 0x32, 0x08, 0x00, 0x24, 0xEB, 0x80, 0x7E, 0xAA, 0x80, 0x2A, 0xEB, 0x80, 0x2A, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xEB, 0x80, 0x00, 0xAA, 0x80, 0x2A, 0xEB, 0x80, 0x2A, 0x08, 0x00, 0x6A, 0xFF, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C78, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x0F, 0x00, 0x32, 0x08, 0x00, 0x24, 0xFF, 0x80, 0x7E, 0x88, 0x80, 0x2A, 0xBE, 0x00, 0x2A, 0x88, 0x80, 0x3E, 0xBF, 0x80, 0x2A, 0xA9, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA9, 0x00, 0x00, 0xBF, 0x00, 0x55, 0x00, 0x00, 0x55, 0x7F, 0x00, 0x54, 0x55, 0x00, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C7B, { 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x12, 0x22, 0x00, 0x6F, 0x1F, 0x80, 0x12, 0x12, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x29, 0x29, 0x00, 0x3F, 0x3F, 0x00, 0x2A, 0xAA, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9C7C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x10, 0x44, 0x00, 0x3F, 0xFE, 0x00, 0x50, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C7F, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x30, 0x00, 0x1E, 0x28, 0x00, 0x24, 0x28, 0x00, 0x48, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x48, 0x00, 0x00, 0x48, 0x00, 0x0E, 0x89, 0x00, 0x71, 0x09, 0x00, 0x22, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C81, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x44, 0x00, 0x1F, 0xFE, 0x00, 0x70, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C82, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x24, 0x02, 0x00, 0x49, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x7E, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x0E, 0x84, 0x00, 0x70, 0x94, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C85, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x30, 0x00, 0x1E, 0x28, 0x00, 0x24, 0x22, 0x00, 0x49, 0xFF, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7E, 0x00, 0x3E, 0x42, 0x00, 0x2A, 0x62, 0x00, 0x2A, 0xA4, 0x00, 0x3E, 0x94, 0x00, 0x00, 0x88, 0x00, 0x0F, 0x14, 0x00, 0x71, 0x23, 0x00, 0x22, 0xC2, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C86, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1E, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x48, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C87, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x12, 0x00, 0x12, 0x1F, 0x00, 0x24, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x15, 0x10, 0x00, 0x15, 0x12, 0x00, 0x1F, 0x7F, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x1F, 0x42, 0x00, 0x00, 0x42, 0x00, 0x07, 0x42, 0x00, 0x38, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C88, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x22, 0x00, 0x1E, 0x3F, 0x00, 0x24, 0x20, 0x00, 0x48, 0x22, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x80, 0x00, 0x0E, 0x80, 0x00, 0x71, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C8B, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x24, 0x00, 0x1E, 0x24, 0x00, 0x24, 0x44, 0x00, 0x48, 0x44, 0x00, 0x3E, 0xFF, 0x00, 0x2B, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x64, 0x00, 0x2A, 0x54, 0x00, 0x2A, 0x54, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x70, 0x54, 0x00, 0x20, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C8D, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x0F, 0x22, 0x00, 0x0A, 0x3F, 0x00, 0x14, 0x42, 0x00, 0x3F, 0x8A, 0x00, 0x55, 0x7A, 0x00, 0x15, 0x4A, 0x00, 0x1F, 0x4A, 0x00, 0x15, 0x7A, 0x00, 0x15, 0x4A, 0x00, 0x1F, 0x44, 0x00, 0x00, 0x41, 0x00, 0x07, 0x41, 0x00, 0x38, 0x3F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C8E, { 0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x04, 0x90, 0x00, 0x24, 0xA0, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x42, 0x02, 0x00, 0x07, 0xE0, 0x00, 0x08, 0x48, 0x00, 0x1F, 0xFC, 0x00, 0x28, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C90, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x20, 0x00, 0x24, 0x44, 0x00, 0x48, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C91, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x14, 0x00, 0x1E, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x48, 0x10, 0x00, 0x3E, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x71, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C92, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x12, 0x00, 0x25, 0xFF, 0x00, 0x48, 0x10, 0x00, 0x3E, 0x14, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0x82, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C94, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x22, 0x00, 0x25, 0xFF, 0x00, 0x48, 0x40, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0xFE, 0x00, 0x2B, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x7C, 0x00, 0x0E, 0x44, 0x00, 0x70, 0x54, 0x00, 0x20, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C95, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1E, 0x10, 0x00, 0x24, 0x10, 0x00, 0x48, 0x22, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x00, 0xAA, 0x00, 0x0E, 0x82, 0x00, 0x70, 0x8A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C9A, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x48, 0x44, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x47, 0x00, 0x2B, 0x82, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x44, 0x00, 0x0E, 0x44, 0x00, 0x70, 0x84, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C9B, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x02, 0x00, 0x25, 0xFF, 0x00, 0x48, 0x00, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x83, 0x00, 0x2B, 0x45, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x28, 0x00, 0x0E, 0x44, 0x00, 0x70, 0x83, 0x00, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C9C, { 0x00, 0x00, 0x00, 0x08, 0x82, 0x00, 0x08, 0x44, 0x00, 0x0F, 0x2A, 0x00, 0x12, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x55, 0x14, 0x00, 0x15, 0xFE, 0x00, 0x1F, 0x10, 0x00, 0x15, 0x10, 0x00, 0x15, 0x12, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x07, 0x10, 0x00, 0x78, 0x10, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C9E, { 0x00, 0x00, 0x00, 0x04, 0x90, 0x00, 0x02, 0xA0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x05, 0x18, 0x00, 0x1B, 0xE7, 0x00, 0x64, 0x42, 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9C9F, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0x02, 0x00, 0x24, 0x02, 0x00, 0x48, 0xFE, 0x00, 0x3E, 0x02, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x24, 0x00, 0x0E, 0x04, 0x00, 0x70, 0x14, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA0, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1E, 0x10, 0x00, 0x24, 0x12, 0x00, 0x48, 0xFF, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x50, 0x00, 0x00, 0x50, 0x00, 0x0E, 0x20, 0x00, 0x70, 0x58, 0x00, 0x21, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA1, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1E, 0x00, 0x00, 0x24, 0x02, 0x00, 0x48, 0xEF, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xEE, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x00, 0xAA, 0x00, 0x0E, 0xAA, 0x00, 0x70, 0xAA, 0x00, 0x20, 0xAA, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA2, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x12, 0x00, 0x25, 0x7F, 0x00, 0x48, 0x90, 0x00, 0x3E, 0x90, 0x00, 0x2A, 0x28, 0x00, 0x2B, 0xA8, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x8A, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x0E, 0x88, 0x00, 0x71, 0x4B, 0x00, 0x22, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA3, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1E, 0xBF, 0x00, 0x24, 0xB1, 0x00, 0x48, 0xAA, 0x00, 0x3E, 0xA4, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xB1, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x71, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA4, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1E, 0xFF, 0x00, 0x24, 0x92, 0x00, 0x4A, 0x92, 0x00, 0x3F, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x14, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x71, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA5, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0x22, 0x00, 0x1E, 0xF2, 0x00, 0x24, 0xA2, 0x00, 0x48, 0xA2, 0x00, 0x3E, 0xBF, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xE2, 0x00, 0x3E, 0xB2, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xA2, 0x00, 0x00, 0xE2, 0x00, 0x0E, 0xA2, 0x00, 0x70, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA6, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x20, 0x00, 0x1E, 0x3E, 0x00, 0x24, 0x44, 0x00, 0x48, 0xA8, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x47, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x54, 0x00, 0x0E, 0x93, 0x00, 0x71, 0x51, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA7, { 0x00, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x10, 0xF0, 0x00, 0x1E, 0x20, 0x00, 0x24, 0x20, 0x00, 0x48, 0x44, 0x00, 0x3E, 0xF8, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x54, 0x00, 0x00, 0x93, 0x00, 0x0F, 0x11, 0x00, 0x70, 0x50, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA8, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x54, 0x00, 0x20, 0x53, 0x00, 0x12, 0x9D, 0x00, 0x04, 0x30, 0x00, 0x3B, 0xC0, 0x00, 0x11, 0x00, 0x00, 0x13, 0xE0, 0x00, 0x04, 0x48, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x88, 0x00, 0x2F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CA9, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x49, 0x01, 0x00, 0x3E, 0x0A, 0x00, 0x2A, 0x7C, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x48, 0x00, 0x3E, 0x48, 0x00, 0x00, 0x48, 0x00, 0x0E, 0x49, 0x00, 0x70, 0x89, 0x00, 0x23, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CAB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1E, 0xEF, 0x00, 0x24, 0xAA, 0x00, 0x48, 0xAA, 0x00, 0x3E, 0xEA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xEA, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0xCA, 0x00, 0x3E, 0xAA, 0x00, 0x00, 0xAE, 0x00, 0x0E, 0xC8, 0x00, 0x70, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CAD, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x14, 0x00, 0x1E, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x48, 0x7C, 0x00, 0x3E, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x0E, 0x82, 0x00, 0x70, 0x8A, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CAE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x14, 0x00, 0x1E, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x48, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xA3, 0x00, 0x3F, 0x3D, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xA4, 0x00, 0x3F, 0x28, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x28, 0x00, 0x70, 0x47, 0x00, 0x21, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB0, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xF8, 0x00, 0x1E, 0xA2, 0x00, 0x24, 0xBF, 0x00, 0x48, 0xA2, 0x00, 0x3E, 0xEA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xEA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xB4, 0x00, 0x00, 0xE4, 0x00, 0x0F, 0xAA, 0x00, 0x70, 0x29, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB1, { 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x10, 0x28, 0x00, 0x1E, 0x2A, 0x00, 0x25, 0xEF, 0x00, 0x48, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0xEE, 0x00, 0x3E, 0x28, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x2A, 0x00, 0x3F, 0xEF, 0x00, 0x00, 0x28, 0x00, 0x0E, 0x28, 0x00, 0x70, 0x28, 0x00, 0x20, 0x28, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB2, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0x82, 0x00, 0x24, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x08, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0xEB, 0x00, 0x3E, 0x8C, 0x00, 0x00, 0x88, 0x00, 0x0E, 0xA9, 0x00, 0x70, 0xC9, 0x00, 0x20, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB3, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x7E, 0x00, 0x1E, 0x44, 0x00, 0x24, 0x7C, 0x00, 0x48, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x7C, 0x00, 0x2A, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB4, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0x82, 0x00, 0x24, 0x92, 0x00, 0x48, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xBA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xBA, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB5, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x22, 0x00, 0x1E, 0xC7, 0x00, 0x24, 0x82, 0x00, 0x48, 0x82, 0x00, 0x3E, 0xEE, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0x28, 0x00, 0x3E, 0x28, 0x00, 0x00, 0x48, 0x00, 0x0E, 0x49, 0x00, 0x70, 0x89, 0x00, 0x23, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB6, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x1E, 0x28, 0x00, 0x24, 0x44, 0x00, 0x48, 0xA3, 0x00, 0x3F, 0x12, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xFC, 0x00, 0x3E, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x20, 0x00, 0x3E, 0x50, 0x00, 0x00, 0xD2, 0x00, 0x0F, 0x45, 0x00, 0x71, 0x45, 0x00, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB7, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0x92, 0x00, 0x24, 0x92, 0x00, 0x48, 0xBA, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0xBA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x00, 0xBA, 0x00, 0x0E, 0x82, 0x00, 0x71, 0x0A, 0x00, 0x22, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CB8, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x12, 0x00, 0x12, 0xFF, 0x00, 0x24, 0x04, 0x00, 0x5F, 0x7E, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x15, 0x7C, 0x00, 0x15, 0x10, 0x00, 0x1F, 0x38, 0x00, 0x00, 0x56, 0x00, 0x07, 0x92, 0x00, 0x38, 0x50, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CBA, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1E, 0x02, 0x00, 0x24, 0x3A, 0x00, 0x48, 0xE2, 0x00, 0x3E, 0x22, 0x00, 0x2A, 0xFA, 0x00, 0x2A, 0xAA, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xFA, 0x00, 0x3E, 0x22, 0x00, 0x00, 0x2A, 0x00, 0x0E, 0x3B, 0x00, 0x70, 0xE5, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CBB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x49, 0x00, 0x1E, 0x49, 0x00, 0x24, 0x92, 0x00, 0x49, 0x24, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CBC, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0xFE, 0x00, 0x1E, 0x10, 0x00, 0x24, 0x44, 0x00, 0x49, 0xFF, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x92, 0x00, 0x00, 0x92, 0x00, 0x0E, 0x2C, 0x00, 0x70, 0x43, 0x00, 0x21, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CBD, { 0x00, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0xA4, 0x00, 0x1E, 0xA4, 0x00, 0x25, 0xFF, 0x00, 0x48, 0xA4, 0x00, 0x3E, 0xA4, 0x00, 0x2A, 0xBC, 0x00, 0x2A, 0x80, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x54, 0x00, 0x0E, 0x93, 0x00, 0x71, 0x12, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CC3, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x3E, 0x92, 0x00, 0x44, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x3E, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x20, 0x00, 0x3F, 0x52, 0x00, 0x01, 0x51, 0x00, 0x0E, 0x45, 0x00, 0x70, 0x44, 0x00, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CC4, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xEF, 0x00, 0x1E, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x48, 0xAA, 0x00, 0x3E, 0xEE, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x40, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x70, 0x14, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CC5, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x34, 0x00, 0x1D, 0xC4, 0x00, 0x24, 0x44, 0x00, 0x48, 0x45, 0x00, 0x3F, 0xF5, 0x00, 0x2A, 0x4E, 0x00, 0x2A, 0xC4, 0x00, 0x3E, 0xE4, 0x00, 0x2A, 0xD4, 0x00, 0x2B, 0x44, 0x00, 0x3E, 0x44, 0x00, 0x00, 0x4A, 0x00, 0x0E, 0x4A, 0x00, 0x70, 0x51, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CC6, { 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x7F, 0x00, 0x24, 0x80, 0x00, 0x49, 0xFC, 0x00, 0x3E, 0x84, 0x00, 0x2A, 0xFC, 0x00, 0x2A, 0x84, 0x00, 0x3E, 0xFC, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7C, 0x00, 0x3E, 0xC4, 0x00, 0x01, 0x28, 0x00, 0x0E, 0x10, 0x00, 0x70, 0x68, 0x00, 0x21, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CC7, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x22, 0x00, 0x1E, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x3E, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x14, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x71, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CCA, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x12, 0x00, 0x1E, 0xFF, 0x00, 0x24, 0x82, 0x00, 0x48, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x80, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0xAA, 0x00, 0x2B, 0xAA, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0xAA, 0x00, 0x0E, 0xAA, 0x00, 0x70, 0xAA, 0x00, 0x20, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CCB, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x1E, 0x92, 0x00, 0x24, 0x44, 0x00, 0x48, 0x38, 0x00, 0x3E, 0x44, 0x00, 0x2A, 0x93, 0x00, 0x2B, 0x12, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x12, 0x00, 0x71, 0xFE, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CCC, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x3F, 0x00, 0x7F, 0x64, 0x00, 0x08, 0xA4, 0x00, 0x0F, 0x18, 0x00, 0x11, 0x24, 0x00, 0x27, 0xE3, 0x00, 0x44, 0x48, 0x00, 0x0F, 0xFC, 0x00, 0x18, 0x88, 0x00, 0x2F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CCD, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x24, 0x00, 0x1E, 0xFC, 0x00, 0x24, 0x28, 0x00, 0x49, 0xFF, 0x00, 0x3E, 0x20, 0x00, 0x2A, 0x78, 0x00, 0x2A, 0xC2, 0x00, 0x3F, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0xFC, 0x00, 0x3E, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x84, 0x00, 0x70, 0xFC, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CCE, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x48, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x2B, 0xEF, 0x00, 0x3E, 0x21, 0x00, 0x2B, 0x29, 0x00, 0x2A, 0xE7, 0x00, 0x3E, 0xA5, 0x00, 0x01, 0x29, 0x00, 0x0E, 0x21, 0x00, 0x70, 0xA5, 0x00, 0x20, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CCF, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x10, 0xFF, 0x00, 0x1E, 0xAA, 0x00, 0x24, 0xAA, 0x00, 0x48, 0xAA, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x54, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x54, 0x00, 0x00, 0x52, 0x00, 0x0E, 0x91, 0x00, 0x71, 0x11, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD0, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x0E, 0x00, 0x1E, 0xF0, 0x00, 0x24, 0x02, 0x00, 0x48, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7E, 0x00, 0x3E, 0x90, 0x00, 0x2A, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x10, 0x00, 0x00, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD3, { 0x00, 0x00, 0x00, 0x10, 0xA4, 0x00, 0x10, 0xA4, 0x00, 0x3F, 0xFC, 0x00, 0x48, 0xA4, 0x00, 0x10, 0xE4, 0x00, 0x7C, 0x4F, 0x00, 0x55, 0xF5, 0x00, 0x55, 0x55, 0x00, 0x7D, 0x55, 0x00, 0x55, 0x55, 0x00, 0x55, 0xF5, 0x00, 0x7C, 0x45, 0x00, 0x03, 0xF5, 0x00, 0x0C, 0x45, 0x00, 0x70, 0x49, 0x00, 0x20, 0x53, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD4, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x1E, 0x28, 0x00, 0x24, 0x2A, 0x00, 0x48, 0xFF, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x54, 0x00, 0x0E, 0x93, 0x00, 0x71, 0x11, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD5, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0xFE, 0x00, 0x1E, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x49, 0x11, 0x00, 0x3E, 0xD6, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0xD6, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0xFF, 0x00, 0x3E, 0x02, 0x00, 0x00, 0x7E, 0x00, 0x0E, 0x02, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD6, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x15, 0x12, 0x00, 0x0E, 0x1F, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xD4, 0x00, 0x2E, 0x88, 0x00, 0x35, 0x97, 0x00, 0x23, 0xE2, 0x00, 0x04, 0x48, 0x00, 0x1F, 0xFC, 0x00, 0x28, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD7, { 0x00, 0x00, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x42, 0x00, 0x1E, 0x7E, 0x00, 0x24, 0x42, 0x00, 0x48, 0x7E, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0xA5, 0x00, 0x3E, 0xA5, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0x7E, 0x00, 0x00, 0x24, 0x00, 0x0E, 0x18, 0x00, 0x70, 0x64, 0x00, 0x21, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD8, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xA2, 0x00, 0x20, 0x7F, 0x00, 0x5F, 0x82, 0x00, 0x14, 0xA2, 0x00, 0x7F, 0xD4, 0x00, 0x12, 0x88, 0x00, 0x1F, 0xF4, 0x00, 0x04, 0x43, 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x88, 0x00, 0x2F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CD9, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x3D, 0x10, 0x00, 0x49, 0xFE, 0x00, 0x11, 0x12, 0x00, 0x7D, 0xFF, 0x00, 0x55, 0x12, 0x00, 0x55, 0xFE, 0x00, 0x7D, 0x10, 0x00, 0x55, 0xFE, 0x00, 0x55, 0x92, 0x00, 0x7D, 0xFE, 0x00, 0x02, 0x92, 0x00, 0x0E, 0xFE, 0x00, 0x72, 0x92, 0x00, 0x24, 0x96, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CDC, { 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x11, 0xFF, 0x00, 0x3D, 0x04, 0x00, 0x49, 0x54, 0x00, 0x11, 0x57, 0x00, 0x7D, 0x09, 0x00, 0x55, 0xFA, 0x00, 0x55, 0x22, 0x00, 0x7D, 0xAA, 0x00, 0x55, 0xAA, 0x00, 0x55, 0xAA, 0x00, 0x7D, 0xFA, 0x00, 0x01, 0x2A, 0x00, 0x0E, 0x25, 0x00, 0x72, 0x45, 0x00, 0x24, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CDD, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x48, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x3E, 0xFF, 0x00, 0x00, 0x82, 0x00, 0x0E, 0x82, 0x00, 0x70, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CDE, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x92, 0x00, 0x1E, 0x54, 0x00, 0x25, 0xFF, 0x00, 0x48, 0x38, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x93, 0x00, 0x2B, 0x52, 0x00, 0x3E, 0x42, 0x00, 0x2A, 0xEF, 0x00, 0x2B, 0x2A, 0x00, 0x3E, 0xAA, 0x00, 0x00, 0x5F, 0x00, 0x0E, 0x82, 0x00, 0x71, 0x02, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CDF, { 0x00, 0x00, 0x00, 0x10, 0x82, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xFF, 0x00, 0x24, 0x28, 0x00, 0x48, 0xFE, 0x00, 0x3E, 0xAA, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xC6, 0x00, 0x3E, 0xBA, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x04, 0x00, 0x01, 0xFF, 0x00, 0x0E, 0x44, 0x00, 0x70, 0x24, 0x00, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CE2, { 0x00, 0x00, 0x00, 0x10, 0x28, 0x00, 0x10, 0xFE, 0x00, 0x1E, 0xAA, 0x00, 0x24, 0xFE, 0x00, 0x48, 0xAA, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x00, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x82, 0x00, 0x3E, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x0E, 0x28, 0x00, 0x71, 0xFF, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CE5, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x04, 0x80, 0x00, 0x42, 0x80, 0x12, 0x20, 0x80, 0x11, 0x01, 0x00, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CE6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x18, 0x00, 0x21, 0x10, 0x00, 0x3F, 0x3F, 0x80, 0x21, 0x02, 0x00, 0x3F, 0x06, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x8C, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x50, 0x00, 0x55, 0x50, 0x00, 0x55, 0x50, 0x80, 0x40, 0xD9, 0x80, 0x01, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CE7, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x08, 0x80, 0x04, 0x85, 0x00, 0x12, 0x46, 0x00, 0x23, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x80, 0x04, 0x08, 0x80, 0x38, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9CE9, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x3E, 0x3F, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x20, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x42, 0x80, 0x13, 0xCA, 0x80, 0x10, 0x28, 0x80, 0x20, 0xA0, 0x80, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x40, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x04, 0x00, 0x13, 0xFC, 0x00, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x13, 0xFF, 0x00, 0x30, 0x01, 0x00, 0x24, 0xA9, 0x00, 0x64, 0xAB, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CEC, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x0F, 0xF1, 0x00, 0x08, 0x13, 0x00, 0x08, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CF0, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x78, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x1C, 0x80, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x80, 0x00, 0x36, 0xFF, 0x00, 0x22, 0x01, 0x00, 0x61, 0x55, 0x00, 0x01, 0x55, 0x00, 0x02, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CF2, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x41, 0x00, 0x1F, 0x7F, 0x00, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x80, 0x10, 0x40, 0x00, 0x10, 0x7F, 0x80, 0x10, 0x00, 0x80, 0x10, 0xAA, 0x80, 0x30, 0xAA, 0x80, 0x20, 0x81, 0x80, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x11, 0x04, 0x00, 0x17, 0xF4, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x14, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x04, 0x00, 0x17, 0xFC, 0x00, 0x14, 0x04, 0x00, 0x17, 0xFC, 0x00, 0x24, 0x96, 0x80, 0x2A, 0x46, 0x80, 0x29, 0x19, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9CF4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x3D, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x04, 0x00, 0x25, 0xFC, 0x00, 0x25, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x3D, 0x00, 0x00, 0x25, 0xFF, 0x80, 0x01, 0x08, 0x80, 0x00, 0x24, 0x80, 0x02, 0x91, 0x00, 0x02, 0x41, 0x00, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CF6, { 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x0F, 0xF8, 0x80, 0x08, 0x16, 0x80, 0x0F, 0xF1, 0x80, 0x08, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x21, 0x25, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CF7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x36, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x1C, 0xAA, 0x80, 0x14, 0xAA, 0x80, 0x36, 0x81, 0x80, 0x63, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9CF9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x14, 0x7F, 0x00, 0x36, 0x41, 0x00, 0x23, 0x7F, 0x00, 0x61, 0xC1, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x01, 0x7F, 0x80, 0x03, 0x00, 0x80, 0x02, 0xAA, 0x80, 0x06, 0xAA, 0x80, 0x04, 0x81, 0x80, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D02, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x41, 0x00, 0x0A, 0x7F, 0x00, 0x0A, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x40, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x00, 0x80, 0x16, 0xAA, 0x80, 0x32, 0xAA, 0x80, 0x23, 0x81, 0x80, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D03, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x09, 0x00, 0x21, 0x09, 0x00, 0x3F, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x4A, 0x00, 0x55, 0x5B, 0x00, 0x40, 0xD1, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9D06, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x14, 0x40, 0x00, 0x15, 0x7F, 0x80, 0x36, 0x00, 0x80, 0x24, 0xAA, 0x80, 0x60, 0xAA, 0x80, 0x01, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D07, { 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x26, 0x10, 0x00, 0x3C, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x08, 0xAA, 0x80, 0x09, 0xAA, 0x80, 0x09, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0xFE, 0x00, 0x16, 0x82, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x82, 0x00, 0x1C, 0xFE, 0x00, 0x14, 0x80, 0x00, 0x14, 0xFF, 0x80, 0x14, 0x80, 0x00, 0x14, 0xFF, 0x80, 0x34, 0x00, 0x80, 0x25, 0x54, 0x80, 0x65, 0x55, 0x80, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D09, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x88, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x09, 0x3F, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0x3F, 0x80, 0x03, 0x20, 0x00, 0x05, 0x3F, 0x80, 0x05, 0x22, 0x80, 0x09, 0x09, 0x80, 0x09, 0x24, 0x80, 0x11, 0x50, 0x80, 0x23, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D0B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x0F, 0x40, 0x00, 0x09, 0x7F, 0x80, 0x09, 0x40, 0x00, 0x09, 0x7F, 0x80, 0x19, 0x00, 0x80, 0x13, 0x2A, 0x80, 0x12, 0xAA, 0x80, 0x32, 0x81, 0x80, 0x6E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D0E, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7E, 0x20, 0x00, 0x40, 0xFE, 0x00, 0x40, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x48, 0xFE, 0x00, 0x48, 0x80, 0x00, 0x48, 0xFF, 0x80, 0x54, 0x80, 0x00, 0x54, 0xFF, 0x00, 0x40, 0x01, 0x00, 0x41, 0x55, 0x00, 0x7D, 0x55, 0x00, 0x02, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D11, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0xA2, 0x00, 0x11, 0x14, 0x00, 0x3E, 0x08, 0x00, 0x05, 0x16, 0x00, 0x18, 0xA1, 0x80, 0x67, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D12, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x36, 0x7F, 0x00, 0x63, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x11, 0x40, 0x00, 0x11, 0x7F, 0x80, 0x11, 0x00, 0x80, 0x13, 0x2A, 0x80, 0x10, 0xAA, 0x80, 0x11, 0x01, 0x80, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D15, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x1F, 0xDF, 0x80, 0x10, 0x50, 0x80, 0x1F, 0xD0, 0x80, 0x10, 0x40, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xEB, 0x00, 0x10, 0x0E, 0x00, 0x1F, 0xE8, 0x00, 0x00, 0x28, 0x00, 0x2A, 0xA8, 0x00, 0x2A, 0xA8, 0x80, 0x40, 0x69, 0x80, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D17, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x32, 0x40, 0x00, 0x16, 0x7F, 0x80, 0x14, 0x40, 0x00, 0x14, 0x7F, 0x80, 0x07, 0x00, 0x80, 0x1C, 0xAA, 0x80, 0x70, 0xAA, 0x80, 0x00, 0x81, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D18, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x12, 0x10, 0x00, 0x32, 0x7F, 0x00, 0x27, 0x41, 0x00, 0x3D, 0x7F, 0x00, 0x60, 0xC1, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x00, 0x80, 0x12, 0xAA, 0x80, 0x32, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x62, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D1B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x0C, 0x51, 0x00, 0x12, 0x97, 0x00, 0x01, 0x10, 0x80, 0x06, 0x5F, 0x80, 0x3F, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x12, 0x24, 0x80, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D1C, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x24, 0x23, 0x00, 0x27, 0xBE, 0x00, 0x24, 0x20, 0x00, 0x24, 0x20, 0x80, 0x27, 0xB1, 0x80, 0x3C, 0x9F, 0x00, 0x67, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D1D, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x10, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x61, 0x41, 0x00, 0x3D, 0x7F, 0x00, 0x25, 0x40, 0x00, 0x25, 0x7F, 0x80, 0x25, 0x40, 0x00, 0x25, 0x7F, 0x80, 0x3D, 0x00, 0x80, 0x01, 0xAA, 0x80, 0x03, 0xAA, 0x80, 0x02, 0x81, 0x80, 0x0E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D1E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x10, 0x7F, 0x80, 0x20, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x02, 0x00, 0x80, 0x02, 0xAA, 0x80, 0x06, 0xAA, 0x80, 0x04, 0x81, 0x80, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D1F, { 0x00, 0x00, 0x00, 0x01, 0x88, 0x00, 0x07, 0x10, 0x00, 0x3C, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x40, 0x00, 0x26, 0x7F, 0x80, 0x3A, 0x00, 0x80, 0x62, 0xAA, 0x80, 0x03, 0xAA, 0x80, 0x79, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D23, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x3E, 0xAA, 0x80, 0x00, 0xAA, 0x80, 0x01, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D26, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0x48, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x05, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x16, 0x48, 0x80, 0x21, 0x25, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D28, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x2A, 0x42, 0x80, 0x08, 0x09, 0x80, 0x08, 0x24, 0x80, 0x08, 0x91, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D2A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x14, 0x7F, 0x80, 0x16, 0x40, 0x00, 0x32, 0x7F, 0x80, 0x23, 0x00, 0x80, 0x20, 0xAA, 0x80, 0x60, 0xAA, 0x80, 0x01, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D2B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x7C, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x54, 0xFE, 0x00, 0x54, 0x82, 0x00, 0x7C, 0xFE, 0x00, 0x54, 0x80, 0x00, 0x54, 0xFF, 0x80, 0x54, 0x80, 0x00, 0x54, 0xFF, 0x00, 0x7C, 0x01, 0x00, 0x01, 0x55, 0x00, 0x03, 0x55, 0x00, 0x02, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D2C, { 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x08, 0x84, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x80, 0x80, 0x4F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x24, 0x91, 0x00, 0x62, 0x49, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D2F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x40, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x40, 0x00, 0x55, 0x7F, 0x80, 0x55, 0x00, 0x80, 0x55, 0xAA, 0x80, 0x55, 0xAA, 0x80, 0x55, 0x01, 0x80, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D30, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x38, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0xC1, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x3E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D32, { 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x46, 0x10, 0x00, 0x7C, 0x7F, 0x00, 0x40, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x63, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x3E, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x3E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D33, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x41, 0x00, 0x51, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x7F, 0xFF, 0x00, 0x12, 0x40, 0x00, 0x32, 0x7F, 0x80, 0x26, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x74, 0x00, 0x80, 0x1C, 0xAA, 0x80, 0x16, 0xAA, 0x80, 0x33, 0x81, 0x80, 0x61, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D34, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1B, 0x90, 0x00, 0x10, 0x3F, 0x00, 0x30, 0x21, 0x00, 0x60, 0x3F, 0x00, 0x0F, 0xE1, 0x00, 0x19, 0x3F, 0x00, 0x11, 0x20, 0x00, 0x31, 0x3F, 0x80, 0x71, 0x20, 0x00, 0x11, 0x3F, 0x80, 0x11, 0x00, 0x80, 0x11, 0x2A, 0x80, 0x11, 0x6A, 0x80, 0x11, 0x41, 0x80, 0x17, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D3A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x28, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x09, 0x40, 0x00, 0x09, 0x7F, 0x80, 0x1B, 0x00, 0x80, 0x14, 0xAA, 0x80, 0x36, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x63, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D3B, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x00, 0x3E, 0x00, 0x07, 0xE2, 0x00, 0x21, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x01, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x09, 0xFF, 0x80, 0x0F, 0x20, 0x00, 0x08, 0x3F, 0x80, 0x10, 0x22, 0x80, 0x10, 0x09, 0x80, 0x10, 0x14, 0x80, 0x20, 0x50, 0x80, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D3C, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x63, 0x00, 0x21, 0x16, 0x00, 0x3F, 0x0C, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0xB3, 0x00, 0x20, 0x61, 0x80, 0x3F, 0xC0, 0x00, 0x00, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x55, 0x51, 0x00, 0x40, 0xD1, 0x00, 0x01, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D3D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x23, 0x21, 0x00, 0x3E, 0x21, 0x00, 0x05, 0x7F, 0x00, 0x18, 0x80, 0x00, 0x67, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D3E, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x32, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x09, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x7E, 0x40, 0x00, 0x48, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x09, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D3F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x36, 0x7F, 0x00, 0x63, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x01, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D41, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x63, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x24, 0x40, 0x00, 0x34, 0x7F, 0x80, 0x1C, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x1C, 0x00, 0x80, 0x16, 0xAA, 0x80, 0x32, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D42, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x10, 0x00, 0x09, 0x3F, 0x00, 0x19, 0x21, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x21, 0x00, 0x31, 0x3F, 0x00, 0x53, 0xA0, 0x00, 0x13, 0x7F, 0x80, 0x15, 0x20, 0x00, 0x15, 0x3F, 0x80, 0x19, 0x00, 0x80, 0x11, 0x2A, 0x80, 0x11, 0x6A, 0x80, 0x11, 0x41, 0x80, 0x11, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D43, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x00, 0x80, 0x2A, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x62, 0x81, 0x80, 0x46, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D44, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x10, 0x7F, 0x00, 0x32, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x01, 0x7F, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x0E, 0xAA, 0x80, 0x38, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D45, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x63, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x0C, 0x7F, 0x00, 0x1E, 0x40, 0x00, 0x33, 0x7F, 0x80, 0x61, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x3E, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D46, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x18, 0x87, 0x80, 0x33, 0xF0, 0x00, 0x62, 0x10, 0x00, 0x0B, 0xF0, 0x00, 0x1A, 0x17, 0x80, 0x33, 0xF1, 0x00, 0x72, 0x01, 0x00, 0x13, 0xFD, 0x00, 0x12, 0x01, 0x00, 0x13, 0xFD, 0x00, 0x10, 0x05, 0x00, 0x15, 0x55, 0x00, 0x15, 0x55, 0x00, 0x18, 0x0D, 0x00, 0x10, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D47, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x10, 0x10, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x64, 0x7F, 0x00, 0x44, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x00, 0x80, 0x04, 0xAA, 0x80, 0x04, 0xAA, 0x80, 0x04, 0x81, 0x80, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D48, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x90, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x40, 0x00, 0x1E, 0x7F, 0x80, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x80, 0x12, 0x00, 0x80, 0x1E, 0xAA, 0x80, 0x72, 0xAA, 0x80, 0x03, 0x01, 0x80, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D4A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x5D, 0x40, 0x00, 0x5D, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x14, 0x00, 0x80, 0x14, 0xAA, 0x80, 0x36, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x63, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D50, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x5D, 0x7F, 0x80, 0x49, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x0E, 0xAA, 0x80, 0x38, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D51, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x20, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x1E, 0x82, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x1E, 0x80, 0x00, 0x12, 0xFF, 0x80, 0x12, 0x82, 0x80, 0x12, 0x0A, 0x80, 0x12, 0xA8, 0x80, 0x23, 0x21, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D53, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x5D, 0x40, 0x00, 0x04, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x0F, 0x7F, 0x80, 0x78, 0x00, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x08, 0x81, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D54, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x31, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x7F, 0x80, 0x3F, 0x12, 0x80, 0x21, 0x12, 0x00, 0x3F, 0x23, 0x80, 0x20, 0x50, 0x00, 0x3F, 0x9F, 0x00, 0x20, 0x31, 0x00, 0x3F, 0xEB, 0x00, 0x00, 0x4E, 0x00, 0x55, 0x44, 0x00, 0x55, 0x4E, 0x00, 0x40, 0xDB, 0x00, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9D59, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x3E, 0xAA, 0x80, 0x14, 0xAA, 0x80, 0x36, 0x81, 0x80, 0x62, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D5C, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x36, 0x10, 0x00, 0x14, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x09, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x28, 0x7F, 0x00, 0x28, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x09, 0x40, 0x00, 0x09, 0x7F, 0x80, 0x1B, 0x00, 0x80, 0x28, 0xAA, 0x80, 0x48, 0xAA, 0x80, 0x09, 0x01, 0x80, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D5D, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x0F, 0x08, 0x00, 0x3A, 0xBF, 0x00, 0x0A, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x7F, 0xE1, 0x00, 0x0A, 0x3F, 0x00, 0x0A, 0x20, 0x00, 0x0A, 0xBF, 0x80, 0x0E, 0xA0, 0x00, 0x1A, 0xBF, 0x80, 0x6B, 0x22, 0x80, 0x09, 0x09, 0x80, 0x0B, 0x64, 0x80, 0x0A, 0xD0, 0x80, 0x1C, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D5E, { 0x00, 0x00, 0x00, 0x3E, 0x2C, 0x00, 0x08, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x11, 0x00, 0x3F, 0x1A, 0x00, 0x08, 0x4C, 0x80, 0x38, 0x97, 0x80, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D5F, { 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x11, 0xFC, 0x00, 0x68, 0x20, 0x00, 0x18, 0xF8, 0x00, 0x68, 0x20, 0x00, 0x0B, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x6F, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x2F, 0xFE, 0x00, 0x69, 0x22, 0x00, 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D60, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0A, 0x10, 0x00, 0x0A, 0x3F, 0x00, 0x1F, 0xA1, 0x00, 0x12, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x02, 0x3F, 0x00, 0x3F, 0xE0, 0x00, 0x02, 0x3F, 0x80, 0x02, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0xA2, 0x80, 0x10, 0x8A, 0x80, 0x10, 0xA8, 0x80, 0x1F, 0xA0, 0x80, 0x10, 0xA3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D61, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x03, 0x08, 0x00, 0x1A, 0xBE, 0x00, 0x02, 0x22, 0x00, 0x02, 0x3E, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x3E, 0x00, 0x0A, 0x20, 0x00, 0x2A, 0x3F, 0x00, 0x2E, 0x20, 0x00, 0x2A, 0x3F, 0x80, 0x2A, 0x22, 0x80, 0x29, 0x09, 0x80, 0x2F, 0x24, 0x80, 0x30, 0xB1, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D62, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x40, 0x00, 0x1E, 0x7F, 0x80, 0x12, 0x40, 0x00, 0x12, 0x7F, 0x80, 0x7E, 0x00, 0x80, 0x0A, 0xAA, 0x80, 0x12, 0xAA, 0x80, 0x62, 0x81, 0x80, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D63, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x1A, 0x00, 0x80, 0x28, 0xAA, 0x80, 0x28, 0xAA, 0x80, 0x49, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D64, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x7E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x62, 0xAA, 0x80, 0x42, 0x81, 0x80, 0x46, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D65, { 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x24, 0x91, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x04, 0x41, 0x00, 0x08, 0x87, 0x00, 0x37, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D69, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x77, 0xC8, 0x00, 0x54, 0x5F, 0x00, 0x54, 0x51, 0x00, 0x54, 0xDF, 0x00, 0x74, 0x11, 0x00, 0x54, 0x1F, 0x00, 0x57, 0xD0, 0x00, 0x54, 0x5F, 0x80, 0x74, 0x50, 0x00, 0x56, 0xDF, 0x80, 0x55, 0x80, 0x80, 0x55, 0x2A, 0x80, 0x55, 0xAA, 0x80, 0x56, 0xA1, 0x80, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D6A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xBF, 0x00, 0x12, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x29, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x69, 0x60, 0x00, 0x29, 0x3F, 0x80, 0x3F, 0x20, 0x00, 0x29, 0x3F, 0x80, 0x29, 0x00, 0x80, 0x3F, 0x2A, 0x80, 0x08, 0x2A, 0x80, 0x0C, 0x41, 0x80, 0x07, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D6B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x0F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x40, 0x00, 0x21, 0x7F, 0x80, 0x21, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x7F, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x08, 0x81, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D6C, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC8, 0x00, 0x15, 0x5F, 0x00, 0x15, 0x51, 0x00, 0x15, 0x5F, 0x00, 0x1D, 0xD1, 0x00, 0x15, 0x5F, 0x00, 0x15, 0x50, 0x00, 0x15, 0x5F, 0x80, 0x1D, 0xD0, 0x00, 0x15, 0x5F, 0x80, 0x15, 0x52, 0x80, 0x15, 0x45, 0x80, 0x15, 0x52, 0x80, 0x25, 0x69, 0x00, 0x2E, 0xD6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D6F, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x14, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x00, 0x80, 0x04, 0xAA, 0x80, 0x04, 0xAA, 0x80, 0x05, 0x01, 0x80, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D70, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x90, 0x00, 0x20, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x2E, 0xBF, 0x00, 0x24, 0xA1, 0x00, 0x2E, 0xBF, 0x00, 0x24, 0xA0, 0x00, 0x20, 0xBF, 0x80, 0x2E, 0xA0, 0x00, 0x2A, 0xBF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0xAA, 0x80, 0x2E, 0xAA, 0x80, 0x60, 0xC1, 0x80, 0x41, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D72, { 0x00, 0x00, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x3E, 0x00, 0x3F, 0xA2, 0x00, 0x0A, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x0A, 0x3E, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x3F, 0x80, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x80, 0x11, 0x02, 0x80, 0x1F, 0x09, 0x80, 0x11, 0x24, 0x80, 0x11, 0x50, 0x80, 0x1F, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D76, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x14, 0x7F, 0x00, 0x77, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x41, 0x40, 0x00, 0x41, 0x7F, 0x80, 0x77, 0x40, 0x00, 0x14, 0x7F, 0x80, 0x14, 0x00, 0x80, 0x14, 0xAA, 0x80, 0x17, 0xAA, 0x80, 0x7C, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D77, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xDF, 0x00, 0x40, 0x51, 0x00, 0x40, 0x5F, 0x00, 0x20, 0x11, 0x00, 0x3B, 0xDF, 0x00, 0x2A, 0x50, 0x00, 0x6A, 0x5F, 0x80, 0x4A, 0x50, 0x00, 0x2A, 0xDF, 0x80, 0x1A, 0x00, 0x80, 0x12, 0x2A, 0x80, 0x12, 0x2A, 0x80, 0x32, 0x61, 0x80, 0x61, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D7A, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, 0x7F, 0xBF, 0x00, 0x12, 0x21, 0x00, 0x12, 0x3F, 0x00, 0x37, 0xA1, 0x00, 0x24, 0xBF, 0x00, 0x2E, 0xA0, 0x00, 0x65, 0xBF, 0x80, 0x25, 0x20, 0x00, 0x27, 0x3F, 0x80, 0x22, 0x00, 0x80, 0x27, 0x2A, 0x80, 0x2D, 0xAA, 0x80, 0x20, 0xC1, 0x80, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D7B, { 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x08, 0x0B, 0x00, 0x3F, 0x0A, 0x00, 0x21, 0x1F, 0x80, 0x3F, 0x12, 0x00, 0x21, 0x32, 0x00, 0x3F, 0x12, 0x00, 0x20, 0x1F, 0x00, 0x3F, 0x92, 0x00, 0x20, 0x12, 0x00, 0x3F, 0xD2, 0x00, 0x00, 0x5F, 0x00, 0x55, 0x52, 0x00, 0x55, 0x52, 0x00, 0x40, 0xD2, 0x00, 0x01, 0x9F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9D7C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x34, 0x41, 0x00, 0x67, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x0E, 0xAA, 0x80, 0x38, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D7E, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x20, 0x00, 0x00, 0x3F, 0x80, 0x44, 0x20, 0x00, 0x45, 0xBF, 0x80, 0x77, 0x00, 0x80, 0x44, 0x2A, 0x80, 0x44, 0x2A, 0x80, 0x74, 0x81, 0x80, 0x43, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D83, { 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x08, 0x31, 0x80, 0x3F, 0xA0, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xBB, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xA0, 0x80, 0x20, 0x20, 0x80, 0x3F, 0xBF, 0x80, 0x20, 0x0A, 0x00, 0x3F, 0xCA, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x5A, 0x00, 0x55, 0x52, 0x00, 0x40, 0xD2, 0x80, 0x01, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9D84, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x22, 0x01, 0x80, 0x26, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D86, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x5D, 0x40, 0x00, 0x49, 0x7F, 0x80, 0x1C, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x2A, 0x00, 0x80, 0x6A, 0xAA, 0x80, 0x48, 0xAA, 0x80, 0x48, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D87, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x1A, 0x00, 0x80, 0x28, 0xAA, 0x80, 0x28, 0xAA, 0x80, 0x49, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D89, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x04, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x0F, 0x00, 0x80, 0x78, 0x2A, 0x80, 0x08, 0xAA, 0x80, 0x09, 0x01, 0x80, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D8A, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x48, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x41, 0x00, 0x49, 0x7F, 0x00, 0x7F, 0xC0, 0x00, 0x49, 0x7F, 0x80, 0x49, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x48, 0x00, 0x80, 0x5C, 0xAA, 0x80, 0x56, 0xAA, 0x80, 0x32, 0x01, 0x80, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D8D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x10, 0x7F, 0x80, 0x3F, 0x40, 0x00, 0x55, 0x7F, 0x80, 0x15, 0x00, 0x80, 0x25, 0x54, 0x80, 0x09, 0x54, 0x80, 0x13, 0x41, 0x80, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D8E, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x41, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x5D, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x00, 0x80, 0x6A, 0xAA, 0x80, 0x49, 0xAA, 0x80, 0x49, 0x01, 0x80, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D8F, { 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x7C, 0x10, 0x00, 0x01, 0x7F, 0x00, 0x4B, 0x41, 0x00, 0x6A, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x1C, 0xAA, 0x80, 0x16, 0xAA, 0x80, 0x32, 0x81, 0x80, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D92, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x11, 0x08, 0x00, 0x7D, 0x1F, 0x00, 0x13, 0xD1, 0x00, 0x7D, 0x5F, 0x00, 0x55, 0x51, 0x00, 0x55, 0x5F, 0x00, 0x7D, 0x50, 0x00, 0x11, 0x5F, 0x80, 0x39, 0x50, 0x00, 0x39, 0x5F, 0x80, 0x35, 0x40, 0x80, 0x55, 0x6A, 0x80, 0x52, 0x6A, 0x80, 0x52, 0x41, 0x80, 0x12, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D93, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x49, 0x7F, 0x80, 0x49, 0x40, 0x00, 0x49, 0x7F, 0x80, 0x7F, 0x00, 0x80, 0x49, 0x54, 0x80, 0x49, 0x54, 0x80, 0x49, 0x41, 0x80, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D95, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x3E, 0x81, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D96, { 0x00, 0x00, 0x00, 0x7E, 0x08, 0x00, 0x08, 0x49, 0x80, 0x7E, 0xC9, 0x00, 0x08, 0x9C, 0x00, 0x1C, 0x36, 0x00, 0x2A, 0x63, 0x80, 0x48, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D97, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x08, 0x00, 0x21, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x21, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xBF, 0x80, 0x04, 0x20, 0x00, 0x24, 0x3F, 0x80, 0x27, 0x80, 0x80, 0x24, 0x2A, 0x80, 0x34, 0x2A, 0x80, 0x6C, 0x01, 0x00, 0x47, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9D98, { 0x00, 0x00, 0x00, 0x13, 0xC4, 0x00, 0x12, 0x48, 0x00, 0x12, 0x5F, 0x00, 0x12, 0x51, 0x00, 0x7E, 0x5F, 0x00, 0x13, 0xD1, 0x00, 0x12, 0x5F, 0x00, 0x12, 0x50, 0x00, 0x12, 0x5F, 0x80, 0x7B, 0xD0, 0x00, 0x4A, 0x5F, 0x80, 0x4A, 0x40, 0x80, 0x4A, 0x6A, 0x80, 0x4A, 0x6A, 0x80, 0x7A, 0x41, 0x80, 0x04, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9D9A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x77, 0x10, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x77, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x10, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x02, 0xAA, 0x80, 0x02, 0xAA, 0x80, 0x06, 0x81, 0x80, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DA1, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x10, 0x3F, 0x00, 0x1F, 0xA0, 0x00, 0x34, 0xBF, 0x80, 0x64, 0xA0, 0x00, 0x2E, 0xBF, 0x80, 0x3B, 0x80, 0x80, 0x20, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x00, 0x81, 0x80, 0x01, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DA4, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x41, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x7F, 0x2A, 0x80, 0x08, 0xAA, 0x80, 0x09, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DA9, { 0x00, 0x00, 0x00, 0x1F, 0x90, 0x00, 0x01, 0x1F, 0x00, 0x3F, 0xF2, 0x00, 0x06, 0x4C, 0x00, 0x0A, 0x1A, 0x00, 0x36, 0x61, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x21, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DAA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x0A, 0x7F, 0x80, 0x09, 0x40, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x00, 0x80, 0x1C, 0xAA, 0x80, 0x36, 0xAA, 0x80, 0x63, 0x01, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DAB, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x6B, 0x41, 0x00, 0x5D, 0x7F, 0x00, 0x49, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x1C, 0x7F, 0x80, 0x1A, 0x00, 0x80, 0x28, 0xAA, 0x80, 0x28, 0xAA, 0x80, 0x49, 0x01, 0x80, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DAC, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x08, 0x00, 0x1B, 0x3F, 0x00, 0x31, 0xA1, 0x00, 0x6E, 0xFF, 0x00, 0x00, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA0, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0xA0, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x00, 0x80, 0x7F, 0xAA, 0x80, 0x50, 0xAA, 0x80, 0x50, 0x81, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DAE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x41, 0x40, 0x00, 0x5D, 0x7F, 0x80, 0x55, 0x00, 0x80, 0x55, 0xAA, 0x80, 0x5D, 0xAA, 0x80, 0x41, 0x81, 0x80, 0x43, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DAF, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x14, 0xA4, 0x80, 0x25, 0x25, 0x00, 0x0A, 0x8A, 0x00, 0x11, 0x11, 0x00, 0x2F, 0xFC, 0x80, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x21, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DB1, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x1F, 0xF6, 0x00, 0x64, 0x11, 0x80, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x62, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DB2, { 0x00, 0x00, 0x00, 0x06, 0x08, 0x00, 0x12, 0x10, 0x00, 0x33, 0x3F, 0x00, 0x69, 0xA1, 0x00, 0x1A, 0x3F, 0x00, 0x13, 0x21, 0x00, 0x3D, 0x3F, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xBF, 0x80, 0x19, 0xA0, 0x00, 0x2A, 0xBF, 0x80, 0x4C, 0x80, 0x80, 0x19, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x4C, 0x81, 0x80, 0x19, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DB4, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x04, 0x3E, 0x00, 0x3F, 0xA2, 0x00, 0x20, 0xBE, 0x00, 0x09, 0x22, 0x00, 0x0A, 0x3E, 0x00, 0x1F, 0xA0, 0x00, 0x32, 0x3F, 0x00, 0x1F, 0xA0, 0x00, 0x12, 0x3F, 0x80, 0x1F, 0xA2, 0x80, 0x12, 0x09, 0x80, 0x1F, 0xD4, 0x80, 0x10, 0x29, 0x00, 0x10, 0x46, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DB5, { 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x48, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x3E, 0xA1, 0x00, 0x11, 0xBF, 0x00, 0x23, 0x20, 0x00, 0x10, 0x3F, 0x80, 0x3F, 0xA0, 0x00, 0x48, 0xBF, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0xAA, 0x80, 0x3E, 0xAA, 0x80, 0x11, 0x81, 0x80, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DB8, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0x88, 0x00, 0x08, 0xBF, 0x00, 0x08, 0xA1, 0x00, 0x3B, 0xBF, 0x00, 0x22, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x3B, 0xA0, 0x00, 0x08, 0xBF, 0x80, 0x3B, 0xA0, 0x00, 0x4C, 0xBF, 0x80, 0x19, 0x80, 0x80, 0x6E, 0xAA, 0x80, 0x08, 0xAA, 0x80, 0x19, 0x81, 0x80, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DB9, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x27, 0x10, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x55, 0x41, 0x00, 0x77, 0x7F, 0x00, 0x14, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x7F, 0x40, 0x00, 0x49, 0x7F, 0x80, 0x49, 0x00, 0x80, 0x7F, 0x54, 0x80, 0x49, 0x54, 0x80, 0x49, 0x01, 0x80, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DBA, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x6B, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x6B, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x36, 0x7F, 0x00, 0x63, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x00, 0x80, 0x3E, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x26, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DBB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x22, 0x7F, 0x00, 0x2E, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x22, 0xAA, 0x80, 0x22, 0x81, 0x80, 0x26, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DBC, { 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x12, 0x08, 0x00, 0x7F, 0xDF, 0x00, 0x0A, 0x11, 0x00, 0x3F, 0xDF, 0x00, 0x0A, 0x51, 0x00, 0x0A, 0x5F, 0x00, 0x7F, 0xF0, 0x00, 0x0A, 0x5F, 0x80, 0x0A, 0x50, 0x00, 0x3F, 0xDF, 0x80, 0x0A, 0x00, 0x80, 0x1B, 0x2A, 0x80, 0x2A, 0xAA, 0x80, 0x4A, 0x41, 0x80, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DBF, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x08, 0x08, 0x00, 0x12, 0x12, 0x00, 0x34, 0x34, 0x00, 0x09, 0x09, 0x00, 0x3E, 0xBE, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DC1, { 0x00, 0x00, 0x00, 0x06, 0x04, 0x00, 0x13, 0x08, 0x00, 0x31, 0xBF, 0x00, 0x6E, 0xE1, 0x00, 0x00, 0x3F, 0x00, 0x17, 0x21, 0x00, 0x31, 0xBF, 0x00, 0x60, 0xE0, 0x00, 0x3F, 0xBF, 0x80, 0x2A, 0xA0, 0x00, 0x2A, 0xBF, 0x80, 0x2B, 0xC0, 0x80, 0x3E, 0x2A, 0x80, 0x60, 0xAA, 0x80, 0x00, 0x81, 0x80, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DC2, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x1F, 0x10, 0x00, 0x71, 0x7F, 0x00, 0x0B, 0x41, 0x00, 0x26, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x70, 0x7F, 0x00, 0x1E, 0x40, 0x00, 0x28, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x3E, 0x81, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DC3, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x1F, 0x00, 0x7F, 0xD0, 0x00, 0x40, 0x5F, 0x80, 0x08, 0x10, 0x00, 0x7F, 0xDF, 0x80, 0x0A, 0x00, 0x80, 0x12, 0x2A, 0x80, 0x34, 0x2A, 0x80, 0x0E, 0x01, 0x80, 0x71, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DC4, { 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x38, 0x3E, 0x00, 0x08, 0x22, 0x00, 0x0A, 0x3E, 0x00, 0x12, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x18, 0xA0, 0x00, 0x13, 0xBF, 0x80, 0x3C, 0x60, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x02, 0x80, 0x3F, 0x8A, 0x80, 0x04, 0x18, 0x80, 0x0A, 0x50, 0x80, 0x11, 0x41, 0x00, 0x20, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DC6, { 0x00, 0x00, 0x00, 0x26, 0x08, 0x00, 0x3C, 0x10, 0x00, 0x21, 0x7F, 0x00, 0x1F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x5E, 0x41, 0x00, 0x52, 0x7F, 0x00, 0x5E, 0x40, 0x00, 0x52, 0x7F, 0x80, 0x5E, 0x40, 0x00, 0x52, 0x7F, 0x80, 0x5E, 0x00, 0x80, 0x40, 0xAA, 0x80, 0x7F, 0xAA, 0x80, 0x14, 0x81, 0x80, 0x62, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DC7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0x9E, 0x00, 0x08, 0x12, 0x00, 0x3F, 0x12, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xA3, 0x80, 0x40, 0x80, 0x00, 0x3F, 0x3F, 0x00, 0x08, 0x11, 0x00, 0x3F, 0x13, 0x00, 0x21, 0x12, 0x00, 0x3F, 0x96, 0x00, 0x20, 0x0C, 0x00, 0x3F, 0x9E, 0x00, 0x54, 0xB3, 0x00, 0x4A, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9DC9, { 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x0F, 0x88, 0x00, 0x7A, 0x1F, 0x00, 0x43, 0xD1, 0x00, 0x42, 0x1F, 0x00, 0x5F, 0xD1, 0x00, 0x54, 0x5F, 0x00, 0x57, 0x10, 0x00, 0x5C, 0x9F, 0x80, 0x57, 0x90, 0x00, 0x50, 0x1F, 0x80, 0x55, 0x00, 0x80, 0x55, 0x2A, 0x80, 0x15, 0x2A, 0x80, 0x2D, 0x41, 0x80, 0x19, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DCA, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x40, 0x00, 0x41, 0x7F, 0x80, 0x55, 0x40, 0x00, 0x49, 0x7F, 0x80, 0x55, 0x00, 0x80, 0x41, 0xAA, 0x80, 0x5D, 0xAA, 0x80, 0x49, 0x81, 0x80, 0x4B, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DCF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x7E, 0xAA, 0x80, 0x14, 0xAA, 0x80, 0x36, 0x81, 0x80, 0x62, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DD3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3F, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x3F, 0x7F, 0x00, 0x2A, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x40, 0x00, 0x6E, 0x7F, 0x80, 0x40, 0x00, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DD4, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x7F, 0xF1, 0x00, 0x08, 0x1B, 0x00, 0x0F, 0x8E, 0x00, 0x18, 0x9A, 0x00, 0x33, 0xB3, 0x00, 0x60, 0x81, 0x80, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DD5, { 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x3C, 0xFF, 0x80, 0x25, 0x88, 0x00, 0x26, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x88, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DD6, { 0x00, 0x00, 0x00, 0x3F, 0xDE, 0x00, 0x24, 0x12, 0x00, 0x27, 0x93, 0x80, 0x2A, 0x20, 0x00, 0x3F, 0xDF, 0x00, 0x25, 0x0A, 0x00, 0x28, 0x84, 0x00, 0x3F, 0xDB, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DD7, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x3F, 0x00, 0x27, 0x21, 0x00, 0x25, 0x3F, 0x00, 0x27, 0x21, 0x00, 0x20, 0x3F, 0x00, 0x20, 0x20, 0x00, 0x2F, 0xBF, 0x80, 0x2A, 0xA0, 0x00, 0x2A, 0xBF, 0x80, 0x2F, 0xA2, 0x80, 0x20, 0x05, 0x80, 0x20, 0x12, 0x80, 0x3F, 0xA8, 0x80, 0x20, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DD9, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x3E, 0x00, 0x7F, 0xCA, 0x00, 0x11, 0x2A, 0x00, 0x3F, 0x9A, 0x80, 0x04, 0x15, 0x80, 0x3F, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x08, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x34, 0x91, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DDA, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC8, 0x00, 0x29, 0x5F, 0x00, 0x4A, 0x51, 0x00, 0x29, 0x5F, 0x00, 0x4A, 0x51, 0x00, 0x04, 0x1F, 0x00, 0x0A, 0x10, 0x00, 0x11, 0x1F, 0x80, 0x64, 0xD0, 0x00, 0x08, 0x1F, 0x80, 0x32, 0x00, 0x80, 0x0C, 0xAA, 0x80, 0x31, 0x2A, 0x80, 0x06, 0x01, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DDE, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xDF, 0x00, 0x04, 0x11, 0x00, 0x55, 0x5F, 0x00, 0x24, 0x91, 0x00, 0x55, 0x5F, 0x00, 0x04, 0x10, 0x00, 0x55, 0x5F, 0x80, 0x24, 0x90, 0x00, 0x55, 0x5F, 0x80, 0x0E, 0x00, 0x80, 0x0A, 0x2A, 0x80, 0x1B, 0x2A, 0x80, 0x31, 0x81, 0x80, 0x60, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DDF, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x7E, 0xFF, 0x80, 0x11, 0xA0, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0xFF, 0x80, 0x32, 0x14, 0x00, 0x66, 0xE3, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DE0, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x1E, 0x10, 0x00, 0x32, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x29, 0x41, 0x00, 0x29, 0x7F, 0x00, 0x3F, 0x40, 0x00, 0x29, 0x7F, 0x80, 0x29, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x54, 0xAA, 0x80, 0x55, 0xAA, 0x80, 0x55, 0x01, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DE5, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x12, 0x12, 0x00, 0x34, 0x34, 0x00, 0x09, 0x09, 0x00, 0x3E, 0xBE, 0x80, 0x04, 0x04, 0x00, 0x15, 0x15, 0x00, 0x24, 0xA4, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DE6, { 0x00, 0x00, 0x00, 0x12, 0x08, 0x00, 0x14, 0x10, 0x00, 0x3F, 0x7F, 0x00, 0x64, 0x41, 0x00, 0x3E, 0x7F, 0x00, 0x24, 0x41, 0x00, 0x24, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x40, 0x00, 0x3F, 0x7F, 0x80, 0x00, 0x00, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x61, 0x01, 0x80, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DE7, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x10, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x3E, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x22, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x22, 0xAA, 0x80, 0x14, 0xAA, 0x80, 0x1F, 0x01, 0x80, 0x70, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DE9, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x24, 0x8F, 0x80, 0x7F, 0xD9, 0x00, 0x44, 0x4B, 0x00, 0x55, 0x4E, 0x00, 0x55, 0x5B, 0x00, 0x44, 0xC1, 0x80, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DEB, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x9F, 0x00, 0x7F, 0xF1, 0x00, 0x04, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x1F, 0x00, 0x55, 0x50, 0x00, 0x75, 0xDF, 0x80, 0x44, 0x50, 0x00, 0x7F, 0xDF, 0x80, 0x44, 0x40, 0x80, 0x75, 0xEA, 0x80, 0x55, 0x6A, 0x80, 0x55, 0x41, 0x80, 0x44, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DED, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x3E, 0x10, 0x00, 0x49, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x1C, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x49, 0x40, 0x00, 0x00, 0x7F, 0x80, 0x3E, 0x40, 0x00, 0x2A, 0x7F, 0x80, 0x3E, 0x00, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x3E, 0x81, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DEE, { 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x78, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x7F, 0xBF, 0x00, 0x12, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x52, 0xA0, 0x00, 0x1E, 0x3F, 0x80, 0x00, 0x20, 0x00, 0x7F, 0xBF, 0x80, 0x40, 0x80, 0x80, 0x5E, 0xAA, 0x80, 0x52, 0xAA, 0x80, 0x5E, 0x81, 0x80, 0x41, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DEF, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x41, 0x00, 0x55, 0x7F, 0x00, 0x22, 0x41, 0x00, 0x7F, 0x7F, 0x00, 0x22, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x22, 0x40, 0x00, 0x3E, 0x7F, 0x80, 0x08, 0x00, 0x80, 0x2C, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x49, 0x01, 0x80, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DF0, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x10, 0x00, 0x03, 0xF0, 0x00, 0x08, 0x04, 0x80, 0x79, 0xE7, 0x00, 0x09, 0x24, 0x00, 0x19, 0xE4, 0x80, 0x68, 0x87, 0x80, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DF2, { 0x00, 0x00, 0x00, 0x04, 0x0A, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x7F, 0x80, 0x3F, 0x8C, 0x00, 0x20, 0x8C, 0x80, 0x3F, 0x97, 0x80, 0x14, 0xA0, 0x00, 0x2F, 0xFC, 0x00, 0x0C, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x1A, 0x24, 0x80, 0x22, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DF3, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC8, 0x00, 0x4A, 0x5F, 0x00, 0x7B, 0xD1, 0x00, 0x4A, 0x5F, 0x00, 0x7B, 0xD1, 0x00, 0x40, 0x5F, 0x00, 0x5F, 0x50, 0x00, 0x51, 0x5F, 0x80, 0x5F, 0x50, 0x00, 0x51, 0x5F, 0x80, 0x5F, 0x40, 0x80, 0x51, 0x6A, 0x80, 0x71, 0x6A, 0x80, 0x63, 0x41, 0x80, 0x40, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DF4, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC8, 0x00, 0x4A, 0x5F, 0x00, 0x7B, 0xD1, 0x00, 0x4A, 0x5F, 0x00, 0x7B, 0xD1, 0x00, 0x40, 0x5F, 0x00, 0x44, 0x50, 0x00, 0x5F, 0x5F, 0x80, 0x44, 0x50, 0x00, 0x4E, 0x5F, 0x80, 0x4E, 0x40, 0x80, 0x55, 0x6A, 0x80, 0x55, 0x6A, 0x80, 0x44, 0x41, 0x80, 0x40, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DF8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x10, 0x00, 0x02, 0x3E, 0x00, 0x3F, 0xE2, 0x00, 0x0C, 0xBE, 0x00, 0x14, 0x22, 0x00, 0x24, 0x3E, 0x00, 0x0C, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x2A, 0xA0, 0x00, 0x33, 0xBF, 0x80, 0x2E, 0xA2, 0x80, 0x2A, 0x85, 0x80, 0x2E, 0x8A, 0x80, 0x2A, 0xA4, 0x80, 0x21, 0xA3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DF9, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x24, 0x00, 0x11, 0x28, 0x00, 0x12, 0x7F, 0x00, 0x16, 0xC8, 0x00, 0x1B, 0x7F, 0x00, 0x12, 0x48, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x7F, 0x80, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x23, 0xFF, 0x80, 0x22, 0xA4, 0x80, 0x24, 0x53, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DFA, { 0x00, 0x00, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0x32, 0x00, 0x04, 0x4C, 0x00, 0x17, 0x33, 0x80, 0x14, 0xDF, 0x00, 0x3F, 0x11, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x44, 0x80, 0x21, 0x25, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DFD, { 0x00, 0x00, 0x00, 0x0A, 0x40, 0x00, 0x39, 0x9C, 0x00, 0x22, 0x44, 0x00, 0x39, 0x9C, 0x00, 0x22, 0x44, 0x00, 0x7F, 0xFE, 0x00, 0x41, 0x02, 0x00, 0x4F, 0xF2, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x10, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x2F, 0xFE, 0x00, 0x69, 0x22, 0x00, 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9DFE, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xBF, 0x00, 0x11, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x7F, 0xE1, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x00, 0x80, 0x04, 0x2A, 0x80, 0x2A, 0xAA, 0x80, 0x29, 0x41, 0x80, 0x47, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E02, { 0x00, 0x00, 0x00, 0x01, 0x84, 0x00, 0x4F, 0x08, 0x00, 0x6A, 0x9F, 0x00, 0x29, 0x51, 0x00, 0x02, 0x1F, 0x00, 0x46, 0x11, 0x00, 0x6C, 0x9F, 0x00, 0x25, 0x10, 0x00, 0x02, 0x5F, 0x80, 0x27, 0xD0, 0x00, 0x2C, 0x5F, 0x80, 0x22, 0x00, 0x80, 0x6F, 0xAA, 0x80, 0x42, 0x2A, 0x80, 0x45, 0x01, 0x80, 0x48, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E07, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC8, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x20, 0x9F, 0x00, 0x2E, 0x91, 0x00, 0x2A, 0x9F, 0x00, 0x2E, 0x90, 0x00, 0x20, 0x9F, 0x80, 0x3F, 0x90, 0x00, 0x11, 0x1F, 0x80, 0x1F, 0x00, 0x80, 0x11, 0x2A, 0x80, 0x1F, 0x2A, 0x80, 0x00, 0x01, 0x80, 0x7F, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E0A, { 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3C, 0x88, 0x00, 0x27, 0xFF, 0x00, 0x24, 0x11, 0x00, 0x26, 0x3F, 0x00, 0x27, 0x71, 0x00, 0x3D, 0x5F, 0x00, 0x23, 0xF0, 0x00, 0x20, 0x9F, 0x80, 0x3C, 0x90, 0x00, 0x67, 0xFF, 0x80, 0x64, 0x80, 0x80, 0x64, 0xAA, 0x80, 0x24, 0xAA, 0x80, 0x3C, 0x81, 0x80, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E0E, { 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x12, 0x12, 0x00, 0x21, 0x21, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E10, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xC8, 0x00, 0x29, 0x5F, 0x00, 0x4A, 0x51, 0x00, 0x29, 0x5F, 0x00, 0x4A, 0x51, 0x00, 0x12, 0x1F, 0x00, 0x24, 0x10, 0x00, 0x7F, 0xDF, 0x80, 0x24, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x24, 0x00, 0x80, 0x3F, 0xAA, 0x80, 0x24, 0x2A, 0x80, 0x24, 0x01, 0x80, 0x3F, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E11, { 0x00, 0x00, 0x00, 0x14, 0x82, 0x80, 0x0B, 0xF2, 0x00, 0x74, 0x0F, 0x80, 0x05, 0xE2, 0x00, 0x1C, 0x07, 0x00, 0x65, 0xE5, 0x00, 0x0D, 0x2D, 0x80, 0x79, 0xE8, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E12, { 0x00, 0x00, 0x00, 0x1C, 0x8E, 0x00, 0x10, 0xE2, 0x00, 0x1C, 0x8E, 0x00, 0x10, 0xE2, 0x00, 0x1D, 0x2E, 0x00, 0x11, 0x22, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0x0C, 0x00, 0x18, 0x86, 0x00, 0x6F, 0xF9, 0x80, 0x08, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x2F, 0xFF, 0x00, 0x64, 0x91, 0x00, 0x42, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E15, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x07, 0x88, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0xD1, 0x00, 0x24, 0x5F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x5F, 0x00, 0x2F, 0xD0, 0x00, 0x2A, 0x9F, 0x80, 0x2F, 0x90, 0x00, 0x2A, 0x9F, 0x80, 0x2F, 0x80, 0x80, 0x20, 0x2A, 0x80, 0x5F, 0xEA, 0x80, 0x55, 0x41, 0x80, 0x3F, 0xE3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E16, { 0x00, 0x00, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xDF, 0x00, 0x44, 0x51, 0x00, 0x77, 0x5F, 0x00, 0x44, 0x51, 0x00, 0x33, 0x1F, 0x00, 0x00, 0x10, 0x00, 0x12, 0x1F, 0x80, 0x3F, 0xD0, 0x00, 0x64, 0x1F, 0x80, 0x3F, 0x80, 0x80, 0x24, 0x2A, 0x80, 0x3F, 0xAA, 0x80, 0x24, 0x01, 0x80, 0x3F, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E19, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0E, 0x08, 0x00, 0x1B, 0x1F, 0x00, 0x31, 0x91, 0x00, 0x6E, 0xDF, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xDF, 0x00, 0x4A, 0x50, 0x00, 0x7F, 0xDF, 0x80, 0x00, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x2A, 0x80, 0x80, 0x3F, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0x81, 0x80, 0x2A, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E1A, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x88, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0xA0, 0x00, 0x24, 0x7F, 0x80, 0x08, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x11, 0x22, 0x80, 0x32, 0x05, 0x80, 0x0C, 0x0A, 0x80, 0x0A, 0x28, 0x80, 0x31, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E1B, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x7F, 0xC8, 0x00, 0x11, 0x3F, 0x00, 0x3B, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x3B, 0xA1, 0x00, 0x00, 0x3F, 0x00, 0x12, 0x20, 0x00, 0x3F, 0xBF, 0x80, 0x64, 0x20, 0x00, 0x3F, 0x3F, 0x80, 0x24, 0x00, 0x80, 0x3F, 0x2A, 0x80, 0x24, 0x6A, 0x80, 0x3F, 0xC1, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E1C, { 0x00, 0x00, 0x00, 0x7B, 0xC4, 0x00, 0x4A, 0x48, 0x00, 0x7B, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x7B, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x7B, 0xDF, 0x00, 0x08, 0x10, 0x00, 0x12, 0x1F, 0x80, 0x3F, 0xD0, 0x00, 0x64, 0x1F, 0x80, 0x3F, 0x80, 0x80, 0x24, 0x2A, 0x80, 0x3F, 0xAA, 0x80, 0x24, 0x01, 0x80, 0x3F, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E1D, { 0x00, 0x00, 0x00, 0x7B, 0xC4, 0x00, 0x00, 0x08, 0x00, 0x7B, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x6B, 0x5F, 0x00, 0x04, 0x11, 0x00, 0x7F, 0xDF, 0x00, 0x4A, 0x10, 0x00, 0x7F, 0xDF, 0x80, 0x4A, 0x50, 0x00, 0x7F, 0xDF, 0x80, 0x52, 0x00, 0x80, 0x5F, 0xAA, 0x80, 0x52, 0x2A, 0x80, 0x56, 0x41, 0x80, 0x39, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E1E, { 0x00, 0x00, 0x00, 0x08, 0xF2, 0x00, 0x10, 0x0C, 0x80, 0x28, 0xF5, 0x00, 0x14, 0x02, 0x80, 0x3F, 0xFF, 0x80, 0x0A, 0x02, 0x00, 0x2A, 0xF6, 0x80, 0x2A, 0x9A, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E1F, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x09, 0x10, 0x00, 0x09, 0x10, 0x00, 0x08, 0x50, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E20, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x24, 0x00, 0x10, 0xFE, 0x00, 0x14, 0x84, 0x00, 0x7E, 0xA4, 0x00, 0x14, 0x84, 0x00, 0x14, 0x94, 0x00, 0x14, 0x88, 0x00, 0x14, 0x82, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x02, 0x00, 0x15, 0x12, 0x00, 0x26, 0xFA, 0x00, 0x24, 0x02, 0x00, 0x40, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E21, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0xFE, 0x00, 0x7E, 0x84, 0x00, 0x02, 0xA4, 0x00, 0x24, 0x84, 0x00, 0x14, 0x94, 0x00, 0x08, 0x88, 0x00, 0x08, 0x82, 0x00, 0x14, 0xFF, 0x00, 0x12, 0x02, 0x00, 0x20, 0x12, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E22, { 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x22, 0x00, 0x01, 0x3F, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x41, 0x00, 0x02, 0x31, 0x00, 0x0F, 0xFF, 0x00, 0x0A, 0x10, 0x00, 0x09, 0x10, 0x00, 0x08, 0x50, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xF2, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E23, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x44, 0x00, 0x3E, 0xFE, 0x00, 0x24, 0x84, 0x00, 0x24, 0xA4, 0x00, 0x24, 0x84, 0x00, 0x24, 0x94, 0x00, 0x24, 0x88, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x3C, 0x02, 0x00, 0x24, 0x12, 0x00, 0x03, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E25, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0x12, 0x00, 0x20, 0x7F, 0x00, 0x21, 0x42, 0x00, 0x31, 0x52, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x4A, 0x00, 0x24, 0x44, 0x00, 0x2A, 0x40, 0x00, 0x29, 0x7F, 0x00, 0x31, 0x01, 0x00, 0x20, 0x09, 0x00, 0x22, 0xFD, 0x00, 0x3F, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E26, { 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x7F, 0x44, 0x00, 0x04, 0xFE, 0x00, 0x14, 0x84, 0x00, 0x14, 0xA4, 0x00, 0x24, 0x84, 0x00, 0x7F, 0x94, 0x00, 0x04, 0x88, 0x00, 0x0C, 0x82, 0x00, 0x14, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x44, 0x12, 0x00, 0x05, 0xFA, 0x00, 0x04, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E28, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x24, 0x00, 0x24, 0xFE, 0x00, 0x2C, 0x84, 0x00, 0x30, 0xA4, 0x00, 0x22, 0x84, 0x00, 0x22, 0x94, 0x00, 0x1E, 0x88, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFF, 0x00, 0x7F, 0x02, 0x00, 0x08, 0x12, 0x00, 0x09, 0xFA, 0x00, 0x08, 0x02, 0x00, 0x08, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E29, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x3F, 0xA4, 0x00, 0x29, 0x84, 0x00, 0x4A, 0x94, 0x00, 0x08, 0x88, 0x00, 0x08, 0x82, 0x00, 0x14, 0xFF, 0x00, 0x14, 0x02, 0x00, 0x15, 0x12, 0x00, 0x26, 0xFA, 0x00, 0x24, 0x02, 0x00, 0x40, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E2A, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x84, 0x00, 0x7F, 0xA4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x94, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x82, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x22, 0x12, 0x00, 0x23, 0xFA, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E2B, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x0A, 0xFE, 0x00, 0x7F, 0x84, 0x00, 0x10, 0xA4, 0x00, 0x28, 0x84, 0x00, 0x4A, 0x94, 0x00, 0x7F, 0x88, 0x00, 0x08, 0x82, 0x00, 0x1C, 0xFF, 0x00, 0x1A, 0x02, 0x00, 0x2A, 0x12, 0x00, 0x49, 0xFA, 0x00, 0x08, 0x02, 0x00, 0x28, 0x0A, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E2C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x0A, 0x24, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xA4, 0x00, 0x3F, 0x84, 0x00, 0x22, 0x94, 0x00, 0x22, 0x88, 0x00, 0x3E, 0x82, 0x00, 0x22, 0xFF, 0x00, 0x20, 0x02, 0x00, 0x20, 0x12, 0x00, 0x21, 0xFA, 0x00, 0x20, 0x02, 0x00, 0x40, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E2D, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x7F, 0xA2, 0x00, 0x49, 0x7F, 0x00, 0x49, 0x42, 0x00, 0x49, 0x52, 0x00, 0x7F, 0x42, 0x00, 0x49, 0x4A, 0x00, 0x49, 0x44, 0x00, 0x49, 0x40, 0x00, 0x7F, 0x7F, 0x00, 0x49, 0x01, 0x00, 0x08, 0x09, 0x00, 0x08, 0xFD, 0x00, 0x08, 0x01, 0x00, 0x08, 0x05, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E2F, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x08, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x05, 0x18, 0x00, 0x1F, 0xF7, 0x00, 0x65, 0x12, 0x00, 0x04, 0x50, 0x00, 0x04, 0x22, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E31, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x24, 0x00, 0x3C, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x28, 0xA4, 0x00, 0x2A, 0x84, 0x00, 0x3F, 0x94, 0x00, 0x24, 0x88, 0x00, 0x24, 0x82, 0x00, 0x24, 0xFF, 0x00, 0x24, 0x02, 0x00, 0x22, 0x12, 0x00, 0x22, 0xFA, 0x00, 0x2A, 0x02, 0x00, 0x35, 0x4A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E32, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x24, 0x00, 0x12, 0xFE, 0x00, 0x3F, 0x84, 0x00, 0x42, 0xA4, 0x00, 0x02, 0x84, 0x00, 0x3A, 0x94, 0x00, 0x2A, 0x88, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0xFF, 0x00, 0x3A, 0x02, 0x00, 0x2A, 0x12, 0x00, 0x02, 0xFA, 0x00, 0x04, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E33, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0F, 0x7E, 0x00, 0x11, 0x44, 0x00, 0x29, 0x54, 0x00, 0x0A, 0x4C, 0x00, 0x04, 0x41, 0x00, 0x09, 0x3F, 0x00, 0x77, 0xF0, 0x00, 0x05, 0x10, 0x00, 0x04, 0x50, 0x00, 0x04, 0x24, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E35, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x10, 0x10, 0x00, 0x3E, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x23, 0x02, 0x00, 0x2A, 0x40, 0x00, 0x24, 0x44, 0x00, 0x20, 0x48, 0x00, 0x3F, 0x70, 0x00, 0x01, 0x40, 0x00, 0x09, 0x40, 0x00, 0x7D, 0x41, 0x00, 0x01, 0x41, 0x00, 0x0A, 0x3F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E36, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x19, 0x64, 0x00, 0x06, 0x18, 0x00, 0x08, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x09, 0x08, 0x00, 0x08, 0x92, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xF2, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E37, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x24, 0x00, 0x7F, 0x7E, 0x00, 0x04, 0x24, 0x00, 0x07, 0x64, 0x00, 0x3C, 0x55, 0x00, 0x04, 0x85, 0x00, 0x0D, 0x03, 0x00, 0x0F, 0xF0, 0x00, 0x09, 0x10, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E38, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x22, 0x00, 0x08, 0x2A, 0x00, 0x3F, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA0, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x21, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E39, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x24, 0x00, 0x38, 0xFE, 0x00, 0x08, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x0A, 0x84, 0x00, 0x7F, 0x94, 0x00, 0x08, 0x88, 0x00, 0x0A, 0x82, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x22, 0x12, 0x00, 0x23, 0xFA, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E3A, { 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x09, 0x12, 0x00, 0x09, 0x3F, 0x00, 0x11, 0x22, 0x00, 0x1F, 0xEA, 0x00, 0x31, 0x22, 0x00, 0x53, 0x2A, 0x00, 0x13, 0xA4, 0x00, 0x15, 0x60, 0x00, 0x15, 0x3F, 0x00, 0x19, 0x01, 0x00, 0x11, 0x09, 0x00, 0x11, 0x7D, 0x00, 0x11, 0x01, 0x00, 0x11, 0x05, 0x00, 0x11, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E3D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x24, 0x00, 0x14, 0xFE, 0x00, 0x14, 0x84, 0x00, 0x12, 0xA4, 0x00, 0x21, 0x94, 0x00, 0x44, 0x94, 0x00, 0x3E, 0x88, 0x00, 0x00, 0x82, 0x00, 0x3E, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x22, 0x12, 0x00, 0x23, 0xFA, 0x00, 0x22, 0x02, 0x00, 0x3E, 0x0A, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E3E, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x28, 0x00, 0x12, 0xA6, 0x00, 0x23, 0x22, 0x00, 0x0F, 0xF0, 0x00, 0x09, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E3F, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x18, 0x24, 0x00, 0x08, 0x7E, 0x00, 0x01, 0x44, 0x00, 0x4F, 0xD4, 0x00, 0x32, 0x44, 0x00, 0x12, 0x54, 0x00, 0x02, 0x48, 0x00, 0x0A, 0x42, 0x00, 0x0A, 0x7F, 0x00, 0x73, 0x82, 0x00, 0x1E, 0x12, 0x00, 0x14, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E41, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x05, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x44, 0x00, 0x24, 0x54, 0x00, 0x3F, 0xC4, 0x00, 0x20, 0xD4, 0x00, 0x41, 0x48, 0x00, 0x1F, 0x42, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x02, 0x00, 0x7F, 0x12, 0x00, 0x05, 0xFA, 0x00, 0x04, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E42, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x22, 0x00, 0x00, 0x2A, 0x00, 0x3B, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA0, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0xFD, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E43, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xA2, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x42, 0x00, 0x3F, 0x52, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x4A, 0x00, 0x21, 0x44, 0x00, 0x21, 0x40, 0x00, 0x3F, 0x7F, 0x00, 0x21, 0x01, 0x00, 0x21, 0x09, 0x00, 0x3F, 0xFD, 0x00, 0x21, 0x01, 0x00, 0x25, 0x0A, 0x00, 0x22, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E44, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x24, 0x00, 0x15, 0x7E, 0x00, 0x1F, 0xC4, 0x00, 0x24, 0x54, 0x00, 0x44, 0x44, 0x00, 0x05, 0x54, 0x00, 0x7F, 0xC8, 0x00, 0x00, 0x42, 0x00, 0x1F, 0x7F, 0x00, 0x11, 0x02, 0x00, 0x11, 0x12, 0x00, 0x11, 0xFA, 0x00, 0x11, 0x02, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E45, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1C, 0x24, 0x00, 0x76, 0x7E, 0x00, 0x15, 0x44, 0x00, 0x14, 0x54, 0x00, 0x7F, 0x44, 0x00, 0x14, 0x54, 0x00, 0x14, 0x48, 0x00, 0x1C, 0x40, 0x00, 0x75, 0x7F, 0x00, 0x16, 0x01, 0x00, 0x14, 0x09, 0x00, 0x1A, 0xFD, 0x00, 0x12, 0x01, 0x00, 0x52, 0x8A, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E46, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x14, 0x24, 0x00, 0x22, 0xFE, 0x00, 0x49, 0x84, 0x00, 0x08, 0xA4, 0x00, 0x14, 0x84, 0x00, 0x22, 0x94, 0x00, 0x41, 0x88, 0x00, 0x3E, 0x82, 0x00, 0x22, 0xFF, 0x00, 0x22, 0x02, 0x00, 0x22, 0x12, 0x00, 0x23, 0xFA, 0x00, 0x3E, 0x02, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E47, { 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x17, 0x92, 0x00, 0x08, 0xBF, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xAA, 0x00, 0x2C, 0xA4, 0x00, 0x2E, 0xA0, 0x00, 0x2D, 0xBF, 0x00, 0x34, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0xFD, 0x00, 0x20, 0x81, 0x00, 0x22, 0x85, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E48, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x0A, 0x12, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0xA2, 0x00, 0x04, 0xAA, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0x2A, 0x00, 0x24, 0x24, 0x00, 0x3F, 0xA0, 0x00, 0x04, 0xBF, 0x00, 0x0C, 0x81, 0x00, 0x0E, 0x89, 0x00, 0x15, 0x7D, 0x00, 0x64, 0x01, 0x00, 0x04, 0x05, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E49, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x03, 0x12, 0x00, 0x3E, 0xBF, 0x00, 0x02, 0x22, 0x00, 0x02, 0x2A, 0x00, 0x7F, 0xA2, 0x00, 0x0A, 0x2A, 0x00, 0x2A, 0x24, 0x00, 0x2E, 0x20, 0x00, 0x2A, 0x3F, 0x00, 0x29, 0x01, 0x00, 0x29, 0x09, 0x00, 0x2F, 0x7D, 0x00, 0x78, 0xC1, 0x00, 0x20, 0x45, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E4A, { 0x00, 0x00, 0x00, 0x12, 0x10, 0x00, 0x12, 0x24, 0x00, 0x12, 0x7E, 0x00, 0x3F, 0x44, 0x00, 0x12, 0x54, 0x00, 0x12, 0x44, 0x00, 0x7F, 0xD4, 0x00, 0x00, 0x48, 0x00, 0x3F, 0x42, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x02, 0x00, 0x3F, 0x0A, 0x00, 0x21, 0xFE, 0x00, 0x21, 0x02, 0x00, 0x3F, 0x0A, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E4B, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x11, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x11, 0x22, 0x00, 0x11, 0x2A, 0x00, 0x00, 0x22, 0x00, 0x3F, 0xAA, 0x00, 0x24, 0xA4, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xBF, 0x00, 0x3F, 0x81, 0x00, 0x24, 0x89, 0x00, 0x24, 0xFD, 0x00, 0x24, 0x81, 0x00, 0x3F, 0x85, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E4C, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x0A, 0x22, 0x00, 0x09, 0x2A, 0x00, 0x14, 0xA2, 0x00, 0x3F, 0xEA, 0x00, 0x64, 0xA4, 0x00, 0x3F, 0xA0, 0x00, 0x24, 0xBF, 0x00, 0x24, 0x81, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x7D, 0x00, 0x05, 0x01, 0x00, 0x06, 0x05, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E4E, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x08, 0x92, 0x00, 0x3F, 0xFF, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xAA, 0x00, 0x3F, 0xA2, 0x00, 0x24, 0xAA, 0x00, 0x28, 0xA4, 0x00, 0x3F, 0xA0, 0x00, 0x08, 0x3F, 0x00, 0x14, 0x81, 0x00, 0x7F, 0xC9, 0x00, 0x04, 0x7D, 0x00, 0x04, 0x01, 0x00, 0x04, 0x05, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E4F, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3B, 0x92, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x3B, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xA0, 0x00, 0x3B, 0xBF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x85, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x81, 0x00, 0x45, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E51, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x05, 0x24, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x44, 0x00, 0x1F, 0x54, 0x00, 0x11, 0x44, 0x00, 0x11, 0x54, 0x00, 0x1F, 0x48, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x7F, 0x00, 0x02, 0x02, 0x00, 0x7F, 0x92, 0x00, 0x04, 0xFA, 0x00, 0x04, 0x02, 0x00, 0x14, 0x0A, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E55, { 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x13, 0x92, 0x00, 0x12, 0xBF, 0x00, 0x7E, 0xA2, 0x00, 0x12, 0xAA, 0x00, 0x13, 0xA2, 0x00, 0x12, 0xAA, 0x00, 0x3A, 0xA4, 0x00, 0x2A, 0xA0, 0x00, 0x2B, 0xBF, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x89, 0x00, 0x3A, 0xFD, 0x00, 0x24, 0x81, 0x00, 0x09, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E57, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3B, 0x92, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA2, 0x00, 0x3B, 0xAA, 0x00, 0x00, 0x22, 0x00, 0x3F, 0xAA, 0x00, 0x00, 0x24, 0x00, 0x7F, 0xE0, 0x00, 0x10, 0x3F, 0x00, 0x1F, 0x01, 0x00, 0x01, 0x09, 0x00, 0x01, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E58, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x24, 0x00, 0x22, 0x7E, 0x00, 0x3A, 0x44, 0x00, 0x2A, 0x54, 0x00, 0x7F, 0x44, 0x00, 0x41, 0x54, 0x00, 0x3E, 0x48, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7F, 0x00, 0x22, 0x02, 0x00, 0x3E, 0x12, 0x00, 0x22, 0xFA, 0x00, 0x22, 0x02, 0x00, 0x2A, 0x14, 0x00, 0x24, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E5A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x92, 0x00, 0x11, 0x3F, 0x00, 0x00, 0x22, 0x00, 0x7F, 0xEA, 0x00, 0x00, 0x22, 0x00, 0x11, 0x2A, 0x00, 0x11, 0x24, 0x00, 0x2A, 0xA0, 0x00, 0x7F, 0xBF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xFD, 0x00, 0x7F, 0x81, 0x00, 0x08, 0x85, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E5B, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x3F, 0xD2, 0x00, 0x24, 0xBF, 0x00, 0x24, 0xA2, 0x00, 0x3F, 0xAA, 0x00, 0x20, 0x22, 0x00, 0x2F, 0xAA, 0x00, 0x28, 0xA4, 0x00, 0x28, 0xA0, 0x00, 0x2F, 0xBF, 0x00, 0x28, 0x81, 0x00, 0x2F, 0x89, 0x00, 0x28, 0xFD, 0x00, 0x28, 0x81, 0x00, 0x4F, 0x85, 0x00, 0x08, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E5C, { 0x00, 0x00, 0x00, 0x3E, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x7F, 0xC4, 0x00, 0x19, 0x28, 0x00, 0x2A, 0x10, 0x00, 0x48, 0xA8, 0x00, 0x19, 0x47, 0x00, 0x0F, 0xF0, 0x00, 0x09, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E5E, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x03, 0x92, 0x00, 0x7C, 0x3F, 0x00, 0x20, 0xA2, 0x00, 0x15, 0x2A, 0x00, 0x15, 0x22, 0x00, 0x20, 0x2A, 0x00, 0x3F, 0x24, 0x00, 0x44, 0x20, 0x00, 0x04, 0xBF, 0x00, 0x7F, 0xC1, 0x00, 0x04, 0x09, 0x00, 0x24, 0xFD, 0x00, 0x24, 0x81, 0x00, 0x3F, 0x85, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E63, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x0A, 0x12, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x22, 0x00, 0x3F, 0xAA, 0x00, 0x0A, 0xA2, 0x00, 0x7F, 0xEA, 0x00, 0x0A, 0xA4, 0x00, 0x3F, 0xA0, 0x00, 0x0A, 0x3F, 0x00, 0x1B, 0x01, 0x00, 0x2A, 0x89, 0x00, 0x4A, 0x7D, 0x00, 0x0A, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E64, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x24, 0x00, 0x3F, 0xFE, 0x00, 0x29, 0x44, 0x00, 0x48, 0x54, 0x00, 0x14, 0x44, 0x00, 0x3F, 0x54, 0x00, 0x54, 0x48, 0x00, 0x1F, 0x42, 0x00, 0x14, 0x7F, 0x00, 0x1F, 0x02, 0x00, 0x14, 0x12, 0x00, 0x14, 0xFA, 0x00, 0x1F, 0x02, 0x00, 0x10, 0x0A, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E66, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3B, 0x92, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x2A, 0xA2, 0x00, 0x11, 0x2A, 0x00, 0x2A, 0xA4, 0x00, 0x08, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x11, 0x01, 0x00, 0x11, 0x09, 0x00, 0x0A, 0x7D, 0x00, 0x04, 0x01, 0x00, 0x0B, 0x05, 0x00, 0x30, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E67, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x02, 0x92, 0x00, 0x3F, 0xFF, 0x00, 0x29, 0x22, 0x00, 0x29, 0x2A, 0x00, 0x29, 0x22, 0x00, 0x3F, 0xEA, 0x00, 0x29, 0x24, 0x00, 0x29, 0x20, 0x00, 0x2F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x29, 0x09, 0x00, 0x29, 0x7D, 0x00, 0x36, 0x81, 0x00, 0x40, 0x05, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E68, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x77, 0x24, 0x00, 0x11, 0x7E, 0x00, 0x55, 0x44, 0x00, 0x33, 0x54, 0x00, 0x55, 0x44, 0x00, 0x19, 0x54, 0x00, 0x08, 0x48, 0x00, 0x14, 0x42, 0x00, 0x23, 0x7F, 0x00, 0x4D, 0x02, 0x00, 0x30, 0x12, 0x00, 0x0C, 0xFA, 0x00, 0x32, 0x02, 0x00, 0x04, 0x0A, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E69, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x92, 0x00, 0x7F, 0xFF, 0x00, 0x2A, 0xA2, 0x00, 0x11, 0x2A, 0x00, 0x20, 0xA2, 0x00, 0x5F, 0x6A, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x01, 0x00, 0x04, 0x09, 0x00, 0x15, 0x7D, 0x00, 0x24, 0x81, 0x00, 0x44, 0x45, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E6A, { 0x00, 0x00, 0x00, 0x0A, 0x08, 0x00, 0x0A, 0x12, 0x00, 0x1F, 0xBF, 0x00, 0x12, 0x22, 0x00, 0x32, 0x2A, 0x00, 0x5F, 0xA2, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x24, 0x00, 0x1F, 0xA0, 0x00, 0x12, 0x3F, 0x00, 0x12, 0x01, 0x00, 0x1F, 0x89, 0x00, 0x10, 0x7D, 0x00, 0x2A, 0x81, 0x00, 0x2A, 0x45, 0x00, 0x40, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E6B, { 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x7F, 0xD2, 0x00, 0x11, 0x7F, 0x00, 0x1F, 0x10, 0x00, 0x15, 0x29, 0x00, 0x24, 0xC9, 0x00, 0x4D, 0x07, 0x00, 0x0F, 0xF0, 0x00, 0x09, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x22, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xF2, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E6C, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0x92, 0x00, 0x0A, 0x3F, 0x00, 0x04, 0x22, 0x00, 0x7F, 0xAA, 0x00, 0x0D, 0x22, 0x00, 0x14, 0x2A, 0x00, 0x24, 0xA4, 0x00, 0x3F, 0xE0, 0x00, 0x2A, 0xBF, 0x00, 0x31, 0x81, 0x00, 0x2E, 0x89, 0x00, 0x2A, 0xFD, 0x00, 0x2E, 0x81, 0x00, 0x20, 0x85, 0x00, 0x21, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E6D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3E, 0x7C, 0x00, 0x22, 0xA8, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x28, 0x00, 0x2E, 0xFF, 0x00, 0x28, 0x44, 0x00, 0x7F, 0x7C, 0x00, 0x02, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x09, 0x10, 0x00, 0x08, 0xA2, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xF2, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E70, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x28, 0x00, 0x12, 0x3E, 0x00, 0x16, 0x68, 0x00, 0x1A, 0xBE, 0x00, 0x12, 0x28, 0x00, 0x12, 0x2E, 0x00, 0x10, 0x80, 0x00, 0x13, 0xF8, 0x00, 0x12, 0x48, 0x00, 0x12, 0x10, 0x00, 0x23, 0xFE, 0x00, 0x20, 0x02, 0x00, 0x4F, 0xF2, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E71, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x11, 0xFF, 0x00, 0x3E, 0x54, 0x00, 0x22, 0xFE, 0x00, 0x2B, 0x90, 0x00, 0x22, 0xFE, 0x00, 0x2A, 0x90, 0x00, 0x24, 0xFE, 0x00, 0x20, 0x90, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x09, 0x7C, 0x00, 0x7D, 0x24, 0x00, 0x01, 0x18, 0x00, 0x05, 0x24, 0x00, 0x02, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E73, { 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x7F, 0xD2, 0x00, 0x11, 0x3F, 0x00, 0x3B, 0xA2, 0x00, 0x2A, 0xAA, 0x00, 0x3B, 0xA2, 0x00, 0x12, 0x2A, 0x00, 0x1F, 0xA4, 0x00, 0x32, 0x20, 0x00, 0x5F, 0xBF, 0x00, 0x12, 0x01, 0x00, 0x1F, 0x89, 0x00, 0x12, 0x7D, 0x00, 0x12, 0x01, 0x00, 0x1F, 0xC5, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E75, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x45, 0x00, 0x16, 0x29, 0x00, 0x11, 0x95, 0x00, 0x14, 0x63, 0x00, 0x12, 0x31, 0x00, 0x10, 0xC9, 0x00, 0x11, 0x25, 0x00, 0x16, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E78, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x0F, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x08, 0x3E, 0x00, 0x7F, 0x08, 0x00, 0x49, 0x7F, 0x00, 0x41, 0x49, 0x00, 0x55, 0x49, 0x00, 0x49, 0x49, 0x00, 0x6B, 0x7F, 0x00, 0x49, 0x08, 0x00, 0x55, 0x1C, 0x00, 0x41, 0x16, 0x00, 0x49, 0x33, 0x00, 0x7F, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E79, { 0x00, 0x00, 0x00, 0x08, 0x05, 0x00, 0x08, 0x04, 0x80, 0x0F, 0x04, 0x00, 0x08, 0xFF, 0x80, 0x3F, 0x84, 0x00, 0x22, 0xFC, 0x80, 0x36, 0x84, 0x80, 0x2A, 0x84, 0x80, 0x2A, 0xBD, 0x00, 0x3E, 0xAD, 0x00, 0x2A, 0xAE, 0x00, 0x36, 0xBA, 0x00, 0x36, 0x86, 0x00, 0x22, 0x8A, 0x80, 0x3F, 0x11, 0x80, 0x22, 0x60, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E7A, { 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x08, 0x12, 0x00, 0x0F, 0x7F, 0x80, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x3F, 0x00, 0x49, 0x08, 0x00, 0x41, 0x08, 0x00, 0x55, 0x7F, 0x80, 0x49, 0x08, 0x00, 0x6B, 0x10, 0x00, 0x49, 0x3F, 0x00, 0x55, 0x64, 0x00, 0x41, 0x04, 0x00, 0x49, 0x04, 0x00, 0x7F, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E7B, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x24, 0x00, 0x0F, 0x7F, 0x00, 0x08, 0x14, 0x00, 0x08, 0x7F, 0x00, 0x7F, 0x15, 0x00, 0x49, 0x15, 0x00, 0x41, 0x7F, 0x80, 0x55, 0x15, 0x00, 0x49, 0x15, 0x00, 0x6B, 0x7F, 0x00, 0x49, 0x14, 0x00, 0x55, 0x36, 0x00, 0x41, 0x55, 0x00, 0x49, 0x55, 0x80, 0x7F, 0x14, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E7C, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x0F, 0x36, 0x00, 0x08, 0xE3, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x3E, 0x00, 0x49, 0x00, 0x00, 0x41, 0x77, 0x00, 0x55, 0x55, 0x00, 0x49, 0x55, 0x00, 0x6B, 0x77, 0x00, 0x49, 0x00, 0x00, 0x55, 0x22, 0x00, 0x41, 0x22, 0x00, 0x49, 0x77, 0x00, 0x7F, 0x55, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E7D, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x48, 0x00, 0x3F, 0x8F, 0x00, 0x21, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x24, 0x6B, 0x00, 0x24, 0x55, 0x00, 0x3F, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E7E, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x48, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x3E, 0xFE, 0x00, 0x22, 0x20, 0x00, 0x23, 0xFF, 0x00, 0x36, 0x40, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x90, 0x00, 0x36, 0x90, 0x00, 0x23, 0x10, 0x00, 0x22, 0x12, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E7F, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x12, 0x10, 0x00, 0x13, 0xD3, 0x00, 0x12, 0x1C, 0x00, 0x12, 0x10, 0x00, 0x13, 0xF0, 0x80, 0x2E, 0x1F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E80, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0x9F, 0x80, 0x12, 0x00, 0x00, 0x12, 0x1E, 0x00, 0x37, 0xF0, 0x00, 0x22, 0x00, 0x00, 0x63, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E81, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0C, 0x10, 0x00, 0x1B, 0x20, 0x00, 0x70, 0xC0, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x00, 0x00, 0x12, 0x13, 0x00, 0x33, 0xDE, 0x00, 0x22, 0x10, 0x80, 0x63, 0xD1, 0x80, 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E82, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x27, 0x9E, 0x00, 0x64, 0x10, 0x80, 0x0F, 0xDF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x10, 0x80, 0x18, 0x19, 0x80, 0x70, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E83, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xD2, 0x00, 0x12, 0x1C, 0x80, 0x13, 0xD1, 0x80, 0x1E, 0x0F, 0x00, 0x30, 0x00, 0x00, 0x22, 0x92, 0x00, 0x66, 0xDB, 0x00, 0x0C, 0x49, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E84, { 0x00, 0x00, 0x00, 0x02, 0xF0, 0x00, 0x04, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x71, 0x0B, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x38, 0x00, 0x38, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x27, 0x9E, 0x00, 0x64, 0x10, 0x80, 0x0F, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E85, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x37, 0x9E, 0x00, 0x24, 0x10, 0x80, 0x6F, 0xFF, 0x80, 0x04, 0x02, 0x00, 0x0F, 0xE2, 0x00, 0x34, 0x22, 0x00, 0x07, 0xEE, 0x00, 0x04, 0x01, 0x80, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E87, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0x9F, 0x80, 0x11, 0xF8, 0x00, 0x10, 0x20, 0x00, 0x37, 0xFF, 0x00, 0x20, 0xA8, 0x00, 0x61, 0xAC, 0x00, 0x07, 0x27, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E88, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0x9F, 0x80, 0x10, 0x40, 0x00, 0x17, 0xFE, 0x00, 0x30, 0x40, 0x00, 0x23, 0xFC, 0x00, 0x60, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E8B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x37, 0x9E, 0x00, 0x24, 0x10, 0x80, 0x6F, 0x1F, 0x80, 0x10, 0x84, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x90, 0x00, 0x0C, 0x8C, 0x00, 0x70, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E8C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x37, 0x9E, 0x00, 0x24, 0x10, 0x80, 0x67, 0xFF, 0x80, 0x12, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x42, 0x00, 0x7F, 0xFF, 0x80, 0x03, 0x30, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E8E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0xFF, 0x80, 0x34, 0x00, 0x00, 0x25, 0xFF, 0x00, 0x64, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x0D, 0x12, 0x00, 0x19, 0xEF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E8F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x17, 0xFF, 0x80, 0x30, 0x82, 0x00, 0x27, 0xFF, 0x00, 0x61, 0x41, 0x00, 0x06, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E91, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x37, 0x9E, 0x00, 0x24, 0x10, 0x80, 0x6F, 0xBF, 0x80, 0x08, 0x04, 0x00, 0x0F, 0x3C, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x20, 0x80, 0x7C, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E92, { 0x00, 0x00, 0x00, 0x08, 0x12, 0x00, 0x08, 0x12, 0x00, 0x1F, 0x12, 0x00, 0x14, 0x7F, 0x80, 0x24, 0x12, 0x00, 0x04, 0x12, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x15, 0x1E, 0x00, 0x15, 0x12, 0x00, 0x15, 0x12, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x00, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E93, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0E, 0x1C, 0x00, 0x15, 0x2A, 0x00, 0x24, 0x49, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xDF, 0x00, 0x12, 0x10, 0x00, 0x23, 0xD0, 0x80, 0x2C, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E95, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x37, 0x9E, 0x00, 0x24, 0x10, 0x80, 0x7F, 0xFF, 0x80, 0x13, 0xE2, 0x00, 0x10, 0x82, 0x00, 0x17, 0xFA, 0x00, 0x12, 0xA2, 0x00, 0x14, 0x9A, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E96, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0x9F, 0x80, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x31, 0x04, 0x00, 0x21, 0xFC, 0x00, 0x62, 0x22, 0x00, 0x06, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x15, 0x15, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xD3, 0x00, 0x12, 0x1C, 0x00, 0x23, 0xD0, 0x80, 0x2E, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9E98, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0xFF, 0x80, 0x10, 0x20, 0x00, 0x17, 0xFF, 0x00, 0x31, 0x24, 0x00, 0x23, 0xFE, 0x00, 0x6D, 0x05, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E9B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9E, 0x00, 0x14, 0x10, 0x80, 0x1F, 0xFF, 0x80, 0x10, 0x91, 0x00, 0x17, 0x9F, 0x00, 0x34, 0x11, 0x00, 0x27, 0x9F, 0x00, 0x60, 0xB1, 0x00, 0x03, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E9D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x88, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x89, 0x00, 0x1F, 0xFF, 0x00, 0x13, 0xCF, 0x00, 0x1F, 0xEF, 0x80, 0x11, 0x39, 0x00, 0x17, 0xC1, 0x00, 0x17, 0xC1, 0x00, 0x14, 0x7F, 0x80, 0x27, 0xC9, 0x00, 0x3C, 0xC5, 0x00, 0x23, 0x41, 0x00, 0x0C, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E9E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x27, 0x9E, 0x00, 0x64, 0x50, 0x80, 0x0F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9E9F, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x3F, 0x2A, 0x00, 0x2A, 0xFF, 0x80, 0x3F, 0x1C, 0x00, 0x2B, 0x2A, 0x00, 0x3F, 0x49, 0x00, 0x2A, 0x88, 0x80, 0x2A, 0x42, 0x00, 0x2F, 0x7F, 0x80, 0x2A, 0x9A, 0x00, 0x2A, 0xAA, 0x00, 0x2B, 0x7F, 0x80, 0x2E, 0x42, 0x00, 0x3A, 0x82, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EA4, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x34, 0x10, 0x00, 0x27, 0x9E, 0x00, 0x64, 0x10, 0x80, 0x3F, 0xFF, 0x80, 0x2A, 0x2A, 0x00, 0x3F, 0xBF, 0x80, 0x2A, 0xAA, 0x80, 0x3F, 0xBF, 0x80, 0x52, 0x52, 0x00, 0x5B, 0x5B, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EA5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0xA1, 0x00, 0x01, 0x10, 0x00, 0x06, 0x4C, 0x00, 0x38, 0xFB, 0x80, 0x03, 0x08, 0x00, 0x0C, 0x90, 0x00, 0x00, 0x60, 0x00, 0x03, 0x98, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EA6, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x3B, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x70, 0x00, 0x0E, 0x1C, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EA8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x2B, 0x00, 0x5D, 0x69, 0x80, 0x08, 0xC8, 0x00, 0x1C, 0x09, 0x00, 0x2A, 0x09, 0x00, 0x51, 0x3B, 0x00, 0x1E, 0x02, 0x00, 0x22, 0x06, 0x00, 0x56, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x70, 0x00, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EA9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x5D, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x51, 0x08, 0x00, 0x1E, 0x1C, 0x00, 0x22, 0x14, 0x00, 0x56, 0x36, 0x00, 0x0C, 0x63, 0x00, 0x18, 0xC1, 0x80, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EAA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x5D, 0x4F, 0x00, 0x08, 0x49, 0x00, 0x1C, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x51, 0x49, 0x00, 0x1E, 0x7F, 0x00, 0x22, 0x01, 0x00, 0x56, 0x03, 0x00, 0x0C, 0x02, 0x00, 0x18, 0x0E, 0x00, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EAC, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x7F, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x2A, 0x7F, 0x80, 0x5D, 0x44, 0x80, 0x08, 0x45, 0x00, 0x1C, 0x44, 0x00, 0x2A, 0x7F, 0x00, 0x51, 0x51, 0x00, 0x1E, 0x5B, 0x00, 0x22, 0x4A, 0x00, 0x56, 0x4E, 0x00, 0x0C, 0x44, 0x00, 0x18, 0x4E, 0x00, 0x36, 0x9B, 0x00, 0x62, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EAD, { 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x7F, 0x20, 0x00, 0x2A, 0x3F, 0x00, 0x2A, 0x61, 0x00, 0x5D, 0x41, 0x00, 0x08, 0xF9, 0x00, 0x1C, 0x49, 0x00, 0x2A, 0x49, 0x00, 0x51, 0x7B, 0x00, 0x1E, 0x42, 0x00, 0x22, 0x46, 0x00, 0x56, 0x40, 0x80, 0x0C, 0x61, 0x80, 0x18, 0x3F, 0x00, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EAE, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x5D, 0x08, 0x00, 0x08, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x51, 0xFF, 0x80, 0x1E, 0x10, 0x00, 0x22, 0x10, 0x00, 0x56, 0x32, 0x00, 0x0C, 0x22, 0x00, 0x18, 0x2F, 0x00, 0x36, 0x79, 0x00, 0x62, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EAF, { 0x00, 0x00, 0x00, 0x08, 0x14, 0x00, 0x7F, 0x14, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x7F, 0x00, 0x5D, 0x55, 0x00, 0x08, 0x55, 0x00, 0x1C, 0x55, 0x00, 0x2A, 0x7F, 0x00, 0x51, 0x55, 0x00, 0x1E, 0x55, 0x00, 0x22, 0x55, 0x00, 0x56, 0x55, 0x00, 0x0C, 0x7F, 0x00, 0x18, 0x00, 0x00, 0x36, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EB0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x7F, 0x10, 0x00, 0x2A, 0x32, 0x00, 0x2A, 0x22, 0x00, 0x5D, 0x7F, 0x00, 0x08, 0x01, 0x00, 0x1C, 0x08, 0x00, 0x2A, 0x48, 0x00, 0x51, 0x7F, 0x00, 0x1E, 0x88, 0x00, 0x22, 0x08, 0x00, 0x56, 0xFF, 0x80, 0x0C, 0x08, 0x00, 0x18, 0x08, 0x00, 0x36, 0x08, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EB3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x08, 0x00, 0x5D, 0x2A, 0x00, 0x08, 0x2A, 0x00, 0x1C, 0x2A, 0x00, 0x2A, 0x7F, 0x00, 0x51, 0x5D, 0x00, 0x1E, 0xC9, 0x80, 0x22, 0x1C, 0x00, 0x56, 0x3E, 0x00, 0x0C, 0x6B, 0x00, 0x18, 0xC9, 0x80, 0x36, 0x88, 0x80, 0x62, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EB4, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x11, 0x00, 0x15, 0x55, 0x00, 0x15, 0x39, 0x00, 0x15, 0xFF, 0x00, 0x2E, 0xB9, 0x00, 0x04, 0x35, 0x00, 0x07, 0x53, 0x00, 0x09, 0x91, 0x00, 0x1A, 0x12, 0x00, 0x24, 0x0C, 0x00, 0x0A, 0x00, 0x00, 0x31, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EB5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x3F, 0x84, 0x00, 0x04, 0x08, 0x00, 0x15, 0x3F, 0x80, 0x15, 0x2A, 0x80, 0x15, 0x2A, 0x80, 0x2A, 0xAE, 0x80, 0x11, 0x2A, 0x80, 0x25, 0x2E, 0x80, 0x0F, 0xAA, 0x80, 0x10, 0xAA, 0x80, 0x29, 0x3F, 0x80, 0x07, 0x20, 0x00, 0x0D, 0xFF, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EB8, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x80, 0x10, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x32, 0x1C, 0x00, 0x66, 0x14, 0x00, 0x14, 0x36, 0x00, 0x08, 0x63, 0x00, 0x1C, 0xC1, 0x80, 0x37, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EB9, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x81, 0x00, 0x7F, 0x55, 0x00, 0x08, 0x55, 0x00, 0x7F, 0x11, 0x00, 0x10, 0x7D, 0x00, 0x1E, 0x11, 0x00, 0x32, 0x39, 0x00, 0x66, 0x55, 0x00, 0x14, 0x93, 0x00, 0x08, 0x02, 0x00, 0x16, 0x0E, 0x00, 0x33, 0x80, 0x00, 0x60, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EBA, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x7F, 0x08, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x55, 0x00, 0x7F, 0x5D, 0x00, 0x10, 0x55, 0x00, 0x1E, 0x55, 0x00, 0x22, 0x5D, 0x00, 0x36, 0x55, 0x00, 0x5C, 0x55, 0x00, 0x08, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x37, 0x00, 0x00, 0x61, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EBB, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x15, 0x55, 0x00, 0x15, 0x55, 0x00, 0x15, 0x55, 0x00, 0x15, 0x55, 0x00, 0x15, 0x55, 0x00, 0x15, 0x24, 0x80, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EBC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x21, 0x04, 0x00, 0x25, 0x55, 0x00, 0x29, 0x55, 0x80, 0x21, 0x04, 0x00, 0x20, 0x40, 0x00, 0x20, 0x88, 0x00, 0x23, 0x10, 0x00, 0x61, 0xA2, 0x00, 0x40, 0x42, 0x00, 0x41, 0xFF, 0x00, 0x0F, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EBD, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x08, 0x00, 0x13, 0x9C, 0x00, 0x15, 0x6B, 0x00, 0x19, 0x08, 0x00, 0x10, 0x80, 0x00, 0x11, 0x20, 0x00, 0x12, 0x40, 0x00, 0x24, 0x88, 0x00, 0x21, 0x04, 0x00, 0x43, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EBE, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x0A, 0x00, 0x15, 0x5A, 0x80, 0x15, 0x6B, 0x80, 0x19, 0x08, 0x00, 0x10, 0x3E, 0x00, 0x13, 0xC0, 0x00, 0x10, 0x7E, 0x00, 0x17, 0xC0, 0x00, 0x10, 0x7F, 0x00, 0x2F, 0xC0, 0x00, 0x20, 0x40, 0x80, 0x20, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EBF, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x04, 0x00, 0x2F, 0xDF, 0x80, 0x23, 0x06, 0x00, 0x25, 0x8D, 0x00, 0x29, 0x54, 0x80, 0x20, 0x00, 0x00, 0x27, 0xFE, 0x00, 0x24, 0x02, 0x00, 0x27, 0xFE, 0x00, 0x60, 0x40, 0x00, 0x4F, 0xFF, 0x00, 0x48, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EC3, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EC4, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EC6, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x00, 0x24, 0x80, 0x7F, 0xE4, 0x80, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x8E, 0x00, 0x24, 0x8A, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x8A, 0x00, 0x24, 0x9A, 0x00, 0x3F, 0x92, 0x80, 0x11, 0x32, 0x80, 0x60, 0xE1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EC8, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x00, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x3F, 0x80, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EC9, { 0x00, 0x00, 0x00, 0x11, 0x04, 0x00, 0x08, 0x88, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x21, 0x00, 0x4F, 0xFA, 0x00, 0x02, 0x20, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x88, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ECB, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x7F, 0x00, 0x49, 0x22, 0x00, 0x6B, 0x3E, 0x00, 0x2A, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x22, 0x00, 0x34, 0xC1, 0x80, 0x24, 0x00, 0x80, 0x63, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ECC, { 0x00, 0x00, 0x00, 0x05, 0x20, 0x00, 0x1C, 0xCE, 0x00, 0x11, 0x22, 0x00, 0x1C, 0xCE, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x2F, 0xFD, 0x00, 0x02, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x04, 0x08, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ECD, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x58, 0x00, 0x06, 0x47, 0x80, 0x38, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x06, 0x4C, 0x00, 0x01, 0xF0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ECE, { 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x1E, 0x10, 0x00, 0x02, 0x3F, 0x80, 0x3F, 0xE2, 0x80, 0x07, 0x44, 0x80, 0x0A, 0x88, 0x80, 0x12, 0x11, 0x00, 0x22, 0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x90, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x06, 0xEC, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ECF, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x07, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x04, 0x08, 0x00, 0x7F, 0xCF, 0x80, 0x0E, 0x08, 0x00, 0x15, 0x08, 0x00, 0x64, 0x88, 0x00, 0x0A, 0x08, 0x00, 0x11, 0x3F, 0x00, 0x64, 0xA1, 0x00, 0x15, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x21, 0x00, 0x64, 0xA1, 0x00, 0x0C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ED0, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x78, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x7F, 0x55, 0x00, 0x1C, 0x49, 0x00, 0x2A, 0x55, 0x00, 0x49, 0x41, 0x00, 0x1C, 0x7F, 0x00, 0x36, 0x10, 0x00, 0x6B, 0xFF, 0x80, 0x2A, 0x90, 0x80, 0x1C, 0x94, 0x80, 0x2A, 0xBA, 0x80, 0x49, 0x80, 0x80, 0x18, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ED1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x14, 0x45, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ED2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ED4, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xCA, 0x00, 0x12, 0x51, 0x00, 0x1A, 0xE0, 0x80, 0x17, 0x40, 0x00, 0x12, 0x5F, 0x00, 0x1F, 0xC0, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x02, 0x3F, 0x80, 0x02, 0x00, 0x80, 0x3F, 0xE1, 0x00, 0x00, 0x41, 0x00, 0x09, 0x21, 0x00, 0x24, 0x82, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9ED5, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x35, 0xBF, 0x80, 0x2D, 0xA4, 0x80, 0x2E, 0xA4, 0x80, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x0E, 0x00, 0x3F, 0x8A, 0x00, 0x04, 0x0A, 0x00, 0x07, 0xCA, 0x00, 0x7C, 0x1A, 0x00, 0x02, 0x92, 0x80, 0x2A, 0xB2, 0x80, 0x48, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ED8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x89, 0x00, 0x35, 0x88, 0x00, 0x2E, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x07, 0x94, 0x00, 0x38, 0x14, 0x00, 0x00, 0x92, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9ED9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x88, 0x00, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x00, 0x3F, 0x9C, 0x00, 0x04, 0x14, 0x00, 0x3F, 0x96, 0x00, 0x04, 0x32, 0x00, 0x07, 0xA3, 0x00, 0x7C, 0x61, 0x80, 0x00, 0x00, 0x00, 0x12, 0x22, 0x00, 0x33, 0x33, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EDB, { 0x00, 0x00, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x4F, 0x80, 0x1B, 0xF0, 0x00, 0x28, 0x18, 0x80, 0x08, 0x07, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x4A, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x12, 0x11, 0x00, 0x22, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EDC, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x95, 0x00, 0x24, 0x95, 0x00, 0x35, 0x95, 0x00, 0x2E, 0x95, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x95, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xA4, 0x80, 0x04, 0x24, 0x80, 0x3F, 0xA4, 0x80, 0x00, 0x24, 0x80, 0x02, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xBF, 0x80, 0x28, 0x20, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EDD, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x49, 0x62, 0x00, 0x6B, 0x42, 0x00, 0x5D, 0xD7, 0x80, 0x49, 0x52, 0x80, 0x49, 0x72, 0x80, 0x7F, 0x22, 0x80, 0x08, 0x22, 0x80, 0x3E, 0x62, 0x80, 0x08, 0x46, 0x80, 0x0E, 0x54, 0x80, 0x78, 0xF4, 0x80, 0x05, 0x15, 0x80, 0x55, 0x0D, 0x00, 0x50, 0x1B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EDE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x88, 0x00, 0x35, 0x88, 0x00, 0x2E, 0x8F, 0x80, 0x3F, 0x88, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x41, 0x00, 0x3F, 0xC1, 0x00, 0x00, 0x41, 0x00, 0x02, 0xC1, 0x00, 0x2A, 0xC1, 0x00, 0x2A, 0xFF, 0x00, 0x28, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EDF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x99, 0x00, 0x35, 0xB1, 0x00, 0x2D, 0xEB, 0x00, 0x2E, 0x86, 0x00, 0x24, 0x8C, 0x00, 0x3F, 0xB8, 0x00, 0x04, 0x04, 0x00, 0x3F, 0x87, 0x80, 0x04, 0x0C, 0x80, 0x07, 0xD8, 0x80, 0x7C, 0x35, 0x80, 0x02, 0x83, 0x00, 0x2A, 0x86, 0x00, 0x48, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EE0, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x35, 0xBF, 0x80, 0x2E, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x1F, 0x00, 0x07, 0xD1, 0x00, 0x7C, 0x11, 0x00, 0x02, 0x91, 0x00, 0x2A, 0x51, 0x00, 0x48, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EE2, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0x44, 0x00, 0x3E, 0xFE, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0x83, 0x00, 0x3F, 0x41, 0x00, 0x08, 0x7C, 0x00, 0x3E, 0x44, 0x00, 0x08, 0xC4, 0x00, 0x7F, 0x28, 0x00, 0x00, 0x10, 0x00, 0x55, 0x28, 0x00, 0x55, 0x47, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EE4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x20, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x44, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xFE, 0x00, 0x3F, 0x93, 0x00, 0x08, 0x92, 0x80, 0x3E, 0xFE, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x78, 0xFE, 0x00, 0x05, 0x10, 0x00, 0x55, 0x11, 0x00, 0x50, 0x0F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EE5, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x35, 0xBF, 0x80, 0x2E, 0x80, 0x00, 0x24, 0x9F, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x04, 0x00, 0x07, 0xD5, 0x00, 0x7C, 0x15, 0x00, 0x02, 0xB5, 0x80, 0x2A, 0xA4, 0x80, 0x48, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EE7, { 0x00, 0x00, 0x00, 0x07, 0x10, 0x00, 0x3C, 0x3F, 0x00, 0x04, 0x69, 0x00, 0x7F, 0x99, 0x00, 0x14, 0x33, 0x00, 0x37, 0x02, 0x00, 0x64, 0x0E, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0A, 0xB4, 0x00, 0x09, 0xC4, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x61, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EE8, { 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x23, 0xF8, 0x80, 0x23, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0A, 0x4A, 0x00, 0x09, 0x52, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x10, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EE9, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x14, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x49, 0x00, 0x3E, 0x2A, 0x00, 0x08, 0x88, 0x00, 0x3E, 0x4A, 0x00, 0x09, 0xFF, 0x00, 0x7E, 0x10, 0x00, 0x00, 0x10, 0x00, 0x55, 0x2C, 0x00, 0x55, 0x43, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EEA, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x3F, 0x20, 0x00, 0x2A, 0x44, 0x00, 0x2A, 0xFE, 0x00, 0x3E, 0x10, 0x00, 0x2A, 0x12, 0x00, 0x2B, 0xFF, 0x00, 0x3E, 0x28, 0x00, 0x08, 0x4C, 0x00, 0x3E, 0x93, 0x00, 0x08, 0x64, 0x00, 0x7F, 0x18, 0x00, 0x00, 0x62, 0x00, 0x55, 0x0C, 0x00, 0x55, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EEC, { 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x3E, 0x04, 0x80, 0x2A, 0x04, 0x00, 0x3E, 0x7F, 0x80, 0x3E, 0x44, 0x00, 0x2A, 0x74, 0x00, 0x2A, 0x44, 0x80, 0x3E, 0x74, 0x80, 0x08, 0x55, 0x80, 0x3E, 0x55, 0x00, 0x08, 0x57, 0x00, 0x0F, 0x72, 0x00, 0x78, 0x42, 0x80, 0x05, 0x46, 0x80, 0x55, 0x4B, 0x80, 0x50, 0x91, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EED, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x8E, 0x00, 0x24, 0x9B, 0x00, 0x35, 0xB1, 0x80, 0x2D, 0x9F, 0x00, 0x2E, 0x80, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0x80, 0x00, 0x04, 0x0A, 0x00, 0x07, 0xCA, 0x00, 0x7C, 0x3F, 0x80, 0x02, 0x8A, 0x00, 0x2A, 0x5A, 0x00, 0x48, 0x32, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EEE, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x22, 0x00, 0x2A, 0xFF, 0x80, 0x3E, 0x22, 0x00, 0x3E, 0x3E, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x3E, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x54, 0x00, 0x0E, 0x54, 0x00, 0x78, 0x57, 0x00, 0x05, 0x60, 0x00, 0x55, 0x40, 0x00, 0x50, 0x7F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EEF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0xBF, 0x80, 0x35, 0x91, 0x00, 0x2E, 0x9B, 0x00, 0x24, 0x8A, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0x80, 0x00, 0x04, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x07, 0xDF, 0x00, 0x7C, 0x11, 0x00, 0x02, 0x91, 0x00, 0x2A, 0x51, 0x00, 0x48, 0x1F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EF0, { 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x3E, 0x3E, 0x00, 0x2A, 0x20, 0x80, 0x3E, 0x1F, 0x80, 0x3E, 0x00, 0x00, 0x2A, 0x5F, 0x00, 0x2A, 0x51, 0x00, 0x3E, 0x5F, 0x00, 0x08, 0x51, 0x00, 0x3E, 0x5F, 0x00, 0x08, 0x51, 0x00, 0x0E, 0x5F, 0x00, 0x78, 0x40, 0x00, 0x05, 0x7F, 0x80, 0x55, 0x12, 0x00, 0x50, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EF1, { 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x3D, 0x11, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x44, 0x00, 0x27, 0xFF, 0x80, 0x34, 0x82, 0x00, 0x2D, 0xFF, 0x00, 0x26, 0x92, 0x80, 0x24, 0xD6, 0x00, 0x34, 0x92, 0x00, 0x2C, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x10, 0x00, 0x65, 0xFF, 0x00, 0x4D, 0x29, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EF2, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x24, 0x00, 0x2A, 0x3C, 0x00, 0x3E, 0x42, 0x00, 0x3E, 0x94, 0x80, 0x2A, 0xF7, 0x80, 0x2A, 0x08, 0x00, 0x3E, 0x14, 0x00, 0x08, 0x22, 0x00, 0x3E, 0xC9, 0x80, 0x08, 0x10, 0x00, 0x0E, 0x64, 0x00, 0x78, 0x19, 0x00, 0x05, 0x63, 0x00, 0x55, 0x0E, 0x00, 0x50, 0x78, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EF4, { 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x09, 0x52, 0x00, 0x11, 0x54, 0x00, 0x21, 0x57, 0x80, 0x05, 0xF9, 0x00, 0x08, 0x09, 0x00, 0x1B, 0xF9, 0x00, 0x2B, 0x5D, 0x00, 0x0A, 0xED, 0x00, 0x0B, 0xFD, 0x00, 0x08, 0x42, 0x00, 0x0B, 0xFA, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFD, 0x00, 0x0A, 0xAD, 0x00, 0x0A, 0xA8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EF5, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x44, 0x00, 0x2B, 0xFF, 0x80, 0x3E, 0x92, 0x00, 0x3E, 0xE3, 0x80, 0x2A, 0x9E, 0x00, 0x2A, 0x80, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x80, 0x00, 0x3E, 0x9E, 0x00, 0x08, 0x80, 0x00, 0x0E, 0x9E, 0x00, 0x78, 0x80, 0x00, 0x05, 0xBF, 0x00, 0x55, 0x21, 0x00, 0x50, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EF6, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x14, 0x44, 0x00, 0x17, 0xC5, 0x00, 0x14, 0x5F, 0x80, 0x17, 0xC4, 0x00, 0x34, 0x4E, 0x00, 0x27, 0xDB, 0x00, 0x64, 0x41, 0x80, 0x0F, 0xFC, 0x00, 0x0C, 0x8C, 0x00, 0x0A, 0x94, 0x00, 0x09, 0xA4, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EF7, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x35, 0x9F, 0x00, 0x2E, 0x80, 0x00, 0x24, 0xBF, 0x80, 0x24, 0xAA, 0x80, 0x3F, 0xBF, 0x80, 0x04, 0x11, 0x00, 0x3F, 0x9F, 0x00, 0x04, 0x11, 0x00, 0x07, 0xDF, 0x00, 0x7C, 0x11, 0x00, 0x02, 0x9F, 0x00, 0x2A, 0x8A, 0x00, 0x48, 0x31, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EF8, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x0F, 0x00, 0x2A, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x3E, 0x88, 0x80, 0x2A, 0xBE, 0x00, 0x2A, 0x88, 0x80, 0x3E, 0xBF, 0x80, 0x08, 0xA9, 0x00, 0x3E, 0xBF, 0x00, 0x08, 0xA9, 0x00, 0x0E, 0xBF, 0x00, 0x79, 0x00, 0x00, 0x05, 0x7F, 0x00, 0x55, 0x55, 0x00, 0x50, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EF9, { 0x00, 0x00, 0x00, 0x11, 0x22, 0x00, 0x19, 0x26, 0x00, 0x09, 0x24, 0x00, 0x7F, 0xFF, 0x80, 0x04, 0x88, 0x00, 0x0C, 0x8C, 0x00, 0x18, 0x86, 0x00, 0x7F, 0xFF, 0x80, 0x10, 0x82, 0x00, 0x12, 0xA2, 0x00, 0x12, 0xA2, 0x00, 0x12, 0xA2, 0x00, 0x12, 0xA2, 0x00, 0x12, 0xA2, 0x00, 0x14, 0xA2, 0x00, 0x10, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EFB, { 0x00, 0x00, 0x00, 0x4A, 0x4A, 0x00, 0x6A, 0xC9, 0x00, 0x2A, 0x88, 0x00, 0x7F, 0xDF, 0x80, 0x15, 0x08, 0x00, 0x64, 0xC8, 0x00, 0x04, 0x09, 0x00, 0x7F, 0xC9, 0x00, 0x44, 0x49, 0x00, 0x55, 0x5D, 0x00, 0x55, 0x57, 0x00, 0x55, 0x52, 0x00, 0x55, 0x77, 0x00, 0x65, 0x45, 0x00, 0x44, 0x4D, 0x80, 0x44, 0xD8, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EFC, { 0x00, 0x00, 0x00, 0x4A, 0x45, 0x00, 0x6A, 0xC4, 0x80, 0x2A, 0x9F, 0x80, 0x7F, 0xC4, 0x00, 0x15, 0x04, 0x00, 0x64, 0xDF, 0x80, 0x04, 0x14, 0x80, 0x7F, 0xD4, 0x80, 0x44, 0x5F, 0x80, 0x55, 0x54, 0x80, 0x55, 0x54, 0x80, 0x55, 0x5F, 0x80, 0x55, 0x54, 0x80, 0x65, 0x54, 0x80, 0x44, 0x54, 0x80, 0x44, 0xD5, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9EFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x40, 0x00, 0x7E, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x02, 0x01, 0x00, 0x03, 0x03, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EFE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x10, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFC, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x21, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x21, 0x08, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9EFF, { 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x04, 0x20, 0x00, 0x1C, 0x33, 0x00, 0x70, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x22, 0x44, 0x00, 0x7E, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x02, 0x41, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x1F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x22, 0x44, 0x00, 0x7E, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x42, 0x42, 0x00, 0x7E, 0x7E, 0x00, 0x02, 0x41, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F03, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x20, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F07, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x08, 0x3F, 0x00, 0x3F, 0xA2, 0x00, 0x08, 0x62, 0x00, 0x3F, 0x54, 0x00, 0x09, 0x8C, 0x00, 0x11, 0x13, 0x80, 0x27, 0x60, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA1, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA0, 0x00, 0x1F, 0xBF, 0x00, 0x1F, 0xA0, 0x80, 0x10, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F08, { 0x00, 0x00, 0x00, 0x15, 0x08, 0x00, 0x24, 0x88, 0x00, 0x04, 0x1F, 0x80, 0x3F, 0xA1, 0x00, 0x2E, 0xD2, 0x00, 0x35, 0x8C, 0x00, 0x24, 0x8A, 0x00, 0x25, 0xB1, 0x80, 0x3F, 0xFF, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x20, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x20, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F09, { 0x00, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x12, 0x24, 0x00, 0x12, 0x24, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x80, 0x11, 0x22, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x01, 0x20, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F0B, { 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x20, 0x00, 0x3C, 0x1E, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x84, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFD, 0x00, 0x00, 0x81, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F0D, { 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x8A, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x88, 0x00, 0x0F, 0xFA, 0x00, 0x00, 0x82, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F0E, { 0x00, 0x00, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x01, 0x10, 0x00, 0x3F, 0x1F, 0x80, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F0F, { 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x40, 0x00, 0x80, 0x47, 0xF8, 0x80, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x7F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x31, 0x21, 0x00, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F10, { 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x06, 0x0F, 0x80, 0x1C, 0x00, 0x80, 0x77, 0xF9, 0x80, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x7F, 0x3F, 0x80, 0x19, 0x22, 0x00, 0x31, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F11, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x10, 0x02, 0x00, 0x1F, 0x3E, 0x00, 0x01, 0x20, 0x00, 0x7F, 0x3F, 0x00, 0x19, 0x21, 0x00, 0x31, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F12, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x20, 0x00, 0x1C, 0x60, 0x00, 0x07, 0xF8, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x17, 0xFA, 0x00, 0x14, 0x0A, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0x20, 0x00, 0x7F, 0x3F, 0x80, 0x19, 0x22, 0x00, 0x31, 0x22, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F13, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x22, 0x00, 0x11, 0x12, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x88, 0x00, 0x11, 0x14, 0x00, 0x0B, 0xA2, 0x00, 0x3C, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F14, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x0F, 0x80, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x21, 0x00, 0x22, 0x23, 0x00, 0x22, 0x32, 0x00, 0x3E, 0x16, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x08, 0x00, 0x32, 0x1C, 0x00, 0x17, 0x36, 0x00, 0x1C, 0x63, 0x00, 0x70, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F15, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x11, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0xB1, 0x80, 0x01, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x3C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x7D, 0x1F, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F16, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x08, 0x88, 0x00, 0x7F, 0xFF, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x1C, 0x00, 0x14, 0x08, 0x00, 0x17, 0x1C, 0x00, 0x7C, 0x77, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F17, { 0x00, 0x00, 0x00, 0x32, 0x26, 0x00, 0x0E, 0x38, 0x00, 0x32, 0x26, 0x00, 0x06, 0x31, 0x80, 0x7C, 0x1F, 0x00, 0x08, 0x08, 0x00, 0x7F, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x7E, 0x00, 0x3E, 0x22, 0x00, 0x22, 0x36, 0x00, 0x3E, 0x1C, 0x00, 0x14, 0x08, 0x00, 0x17, 0x1C, 0x00, 0x7C, 0x77, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F19, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x11, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0xB1, 0x80, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x84, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x40, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F1A, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x11, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0xB1, 0x80, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x09, 0x1C, 0x00, 0x08, 0xE0, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F1B, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x11, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0xB1, 0x80, 0x19, 0x10, 0x00, 0x73, 0x1E, 0x00, 0x0E, 0x10, 0x00, 0x1B, 0x10, 0x00, 0x77, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F1F, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0x84, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x11, 0x00, 0x0A, 0x0E, 0x00, 0x7F, 0xB1, 0x80, 0x09, 0xE8, 0x00, 0x07, 0x3A, 0x00, 0x1D, 0xEE, 0x00, 0x77, 0xFB, 0x80, 0x04, 0x08, 0x00, 0x07, 0xF8, 0x00, 0x01, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F20, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x3E, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x10, 0x84, 0x00, 0x14, 0xA4, 0x00, 0x12, 0x94, 0x00, 0x10, 0x84, 0x80, 0x1E, 0xF2, 0x80, 0x31, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F21, { 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x31, 0x86, 0x00, 0x18, 0x8C, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x86, 0x00, 0x30, 0x82, 0x80, 0x20, 0x83, 0x80, 0x60, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F22, { 0x00, 0x00, 0x00, 0x30, 0x1C, 0x00, 0x67, 0x04, 0x00, 0x41, 0x14, 0x00, 0x77, 0x16, 0x00, 0x41, 0x32, 0x00, 0x7F, 0x63, 0x00, 0x00, 0xC1, 0x80, 0x49, 0x3E, 0x00, 0x6D, 0x12, 0x00, 0x5B, 0x12, 0x00, 0x49, 0x12, 0x00, 0x6D, 0x32, 0x00, 0x5B, 0x22, 0x00, 0x49, 0x26, 0x00, 0x5B, 0x64, 0x00, 0x6D, 0xCC, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F26, { 0x00, 0x00, 0x00, 0x18, 0x3F, 0x00, 0x33, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3B, 0x99, 0x00, 0x20, 0x91, 0x00, 0x3F, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x24, 0x9F, 0x00, 0x36, 0x91, 0x00, 0x2D, 0x91, 0x00, 0x24, 0x91, 0x00, 0x36, 0x91, 0x00, 0x2D, 0x9F, 0x00, 0x24, 0xC0, 0x80, 0x37, 0x61, 0x80, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F2A, { 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x33, 0xA4, 0x00, 0x20, 0xA4, 0x00, 0x3B, 0xBF, 0x80, 0x20, 0xE4, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x24, 0x9F, 0x00, 0x36, 0x84, 0x00, 0x2D, 0x84, 0x00, 0x24, 0x84, 0x00, 0x36, 0xBF, 0x80, 0x2D, 0x80, 0x00, 0x24, 0xC0, 0x80, 0x37, 0x61, 0x80, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F2B, { 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x33, 0xBF, 0x80, 0x20, 0x88, 0x00, 0x3B, 0x88, 0x00, 0x20, 0x98, 0x00, 0x3F, 0x90, 0x00, 0x00, 0x1F, 0x00, 0x24, 0xB1, 0x00, 0x36, 0xF1, 0x00, 0x2D, 0xD1, 0x00, 0x24, 0x91, 0x00, 0x36, 0x91, 0x00, 0x2D, 0x9F, 0x00, 0x24, 0xC0, 0x80, 0x37, 0x61, 0x80, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F2C, { 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x33, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3B, 0xBF, 0x80, 0x20, 0xA4, 0x80, 0x3F, 0xA4, 0x80, 0x00, 0x24, 0x80, 0x24, 0xBF, 0x80, 0x36, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x24, 0xA4, 0x80, 0x36, 0xBF, 0x80, 0x24, 0x80, 0x00, 0x24, 0xC0, 0x80, 0x36, 0x61, 0x80, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F2F, { 0x00, 0x00, 0x00, 0x18, 0x3F, 0x00, 0x33, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3B, 0xBF, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x7F, 0x80, 0x24, 0x80, 0x00, 0x36, 0xBF, 0x00, 0x2D, 0xA1, 0x00, 0x24, 0xA1, 0x00, 0x36, 0xA1, 0x00, 0x2D, 0xBF, 0x00, 0x24, 0xC0, 0x80, 0x37, 0x61, 0x80, 0x6C, 0x3F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F31, { 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x67, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x77, 0x3E, 0x00, 0x41, 0x08, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x6D, 0x2A, 0x00, 0x5B, 0x2A, 0x00, 0x49, 0x2A, 0x00, 0x6D, 0x3E, 0x00, 0x5B, 0x22, 0x00, 0x49, 0x22, 0x00, 0x5B, 0x22, 0x00, 0x6D, 0xA6, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F32, { 0x00, 0x00, 0x00, 0x30, 0xFF, 0x80, 0x67, 0x80, 0x80, 0x41, 0x88, 0x80, 0x77, 0x7F, 0x00, 0x41, 0x08, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x49, 0x00, 0x49, 0x49, 0x00, 0x6D, 0x7F, 0x00, 0x5B, 0x49, 0x00, 0x49, 0x49, 0x00, 0x6D, 0x7F, 0x00, 0x5B, 0x08, 0x00, 0x49, 0xFF, 0x80, 0x5B, 0x08, 0x00, 0x6D, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F34, { 0x00, 0x00, 0x00, 0x30, 0x7F, 0x80, 0x67, 0x40, 0x00, 0x41, 0x5F, 0x00, 0x77, 0x51, 0x00, 0x41, 0x5F, 0x00, 0x7F, 0x51, 0x00, 0x00, 0x5F, 0x00, 0x49, 0x48, 0x00, 0x6D, 0x7F, 0x80, 0x5B, 0x51, 0x00, 0x49, 0x4E, 0x00, 0x6D, 0x51, 0x00, 0x5B, 0x7F, 0x80, 0x49, 0x80, 0x80, 0x6E, 0xC1, 0x80, 0x58, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F37, { 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, 0x67, 0x7C, 0x00, 0x41, 0x29, 0x00, 0x77, 0x45, 0x80, 0x41, 0x08, 0x00, 0x7F, 0x32, 0x00, 0x00, 0x14, 0x80, 0x49, 0x7F, 0x80, 0x6D, 0x08, 0x00, 0x5B, 0x7F, 0x80, 0x49, 0x14, 0x00, 0x6D, 0x36, 0x00, 0x5B, 0x63, 0x00, 0x49, 0x80, 0x80, 0x6E, 0xC1, 0x80, 0x58, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F39, { 0x00, 0x00, 0x00, 0x30, 0x7F, 0x00, 0x67, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x77, 0x41, 0x00, 0x41, 0x7F, 0x00, 0x7F, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x49, 0x90, 0x80, 0x6D, 0x7F, 0x00, 0x5B, 0x12, 0x00, 0x49, 0x26, 0x00, 0x6D, 0x1C, 0x00, 0x5B, 0x63, 0x00, 0x49, 0x80, 0x80, 0x6E, 0xC1, 0x80, 0x58, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F3A, { 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x33, 0x9F, 0x00, 0x20, 0x95, 0x00, 0x3B, 0x95, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x95, 0x00, 0x00, 0x15, 0x00, 0x24, 0x9F, 0x00, 0x36, 0x80, 0x00, 0x2D, 0xBB, 0x80, 0x24, 0xAA, 0x80, 0x36, 0xAA, 0x80, 0x2D, 0xBB, 0x80, 0x24, 0xAA, 0x80, 0x2D, 0xAA, 0x80, 0x76, 0xFB, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F3B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F3C, { 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x1F, 0x01, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x97, 0x00, 0x24, 0x9D, 0x00, 0x3F, 0xB1, 0x00, 0x00, 0x01, 0x00, 0x7F, 0xC1, 0x00, 0x11, 0x01, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F3D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x3E, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x0A, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x8A, 0x00, 0x3F, 0x9A, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x11, 0x32, 0x80, 0x21, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F3E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x7F, 0xC4, 0x00, 0x11, 0x04, 0x00, 0x21, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F3F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x0A, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x0A, 0x00, 0x1F, 0x0A, 0x00, 0x11, 0x0A, 0x00, 0x3F, 0x8A, 0x00, 0x24, 0x9A, 0x00, 0x3F, 0x92, 0x00, 0x24, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x00, 0x12, 0x00, 0x7F, 0xD2, 0x00, 0x11, 0x32, 0x80, 0x21, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F41, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x1F, 0x80, 0x1F, 0x30, 0x80, 0x11, 0x20, 0x80, 0x1F, 0x7E, 0x80, 0x11, 0x12, 0x80, 0x3F, 0x92, 0x80, 0x24, 0x92, 0x80, 0x3F, 0x92, 0x80, 0x24, 0x9E, 0x80, 0x3F, 0x80, 0x80, 0x00, 0x00, 0x80, 0x7F, 0xC1, 0x80, 0x11, 0x01, 0x00, 0x21, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F43, { 0x00, 0x00, 0x00, 0x04, 0x3F, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x1F, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x3F, 0x90, 0x00, 0x24, 0xBF, 0x80, 0x3F, 0xE4, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xAA, 0x80, 0x00, 0x31, 0x80, 0x7F, 0xBE, 0x80, 0x11, 0x01, 0x80, 0x21, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F44, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x11, 0x3F, 0x80, 0x1F, 0x04, 0x00, 0x11, 0x0E, 0x00, 0x1F, 0x15, 0x00, 0x11, 0x15, 0x00, 0x3F, 0xA4, 0x80, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x00, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x11, 0x11, 0x00, 0x21, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F45, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x3E, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xBE, 0x00, 0x24, 0x8A, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xFF, 0x80, 0x3F, 0x88, 0x00, 0x00, 0x1C, 0x00, 0x7F, 0xD6, 0x00, 0x11, 0x33, 0x00, 0x21, 0x61, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F46, { 0x00, 0x00, 0x00, 0x04, 0x24, 0x80, 0x1F, 0x49, 0x00, 0x11, 0x92, 0x00, 0x1F, 0x49, 0x00, 0x11, 0x24, 0x80, 0x1F, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x3F, 0xBF, 0x00, 0x24, 0x80, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xA4, 0x80, 0x00, 0x3F, 0x80, 0x7F, 0xE0, 0x00, 0x11, 0x20, 0x80, 0x21, 0x1F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F47, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x1F, 0x07, 0x80, 0x11, 0x04, 0x00, 0x1F, 0x3F, 0x80, 0x11, 0x24, 0x80, 0x1F, 0x2F, 0x00, 0x11, 0x24, 0x80, 0x3F, 0xA7, 0x80, 0x24, 0xA0, 0x00, 0x3F, 0xAF, 0x00, 0x24, 0xA9, 0x00, 0x3F, 0xAF, 0x00, 0x00, 0x29, 0x00, 0x7F, 0xEF, 0x00, 0x11, 0x29, 0x00, 0x21, 0x5F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F4A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x13, 0x00, 0x1F, 0xAE, 0x00, 0x05, 0x4A, 0x80, 0x09, 0x49, 0x00, 0x37, 0x4F, 0x00, 0x00, 0x58, 0x80, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x10, 0x02, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F4B, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x13, 0x00, 0x1F, 0xAC, 0x00, 0x05, 0x4A, 0x00, 0x05, 0x49, 0x00, 0x09, 0x4E, 0x80, 0x36, 0x58, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x41, 0x00, 0x12, 0x49, 0x00, 0x24, 0x45, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F4E, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x13, 0x00, 0x1F, 0xAC, 0x00, 0x05, 0x4A, 0x00, 0x09, 0x4F, 0x00, 0x36, 0x58, 0x80, 0x0B, 0xF9, 0x00, 0x0A, 0x09, 0x00, 0x0B, 0xF9, 0x00, 0x08, 0x01, 0x00, 0x0B, 0xF9, 0x00, 0x0A, 0x09, 0x00, 0x13, 0xF9, 0x00, 0x13, 0xF9, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F4F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x80, 0x02, 0x20, 0x00, 0x3D, 0x5F, 0x00, 0x14, 0x92, 0x00, 0x6C, 0x99, 0x80, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xFE, 0x00, 0x11, 0x22, 0x00, 0x17, 0x3A, 0x00, 0x11, 0x22, 0x00, 0x37, 0x3A, 0x00, 0x21, 0x22, 0x00, 0x67, 0xFA, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F50, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x3F, 0xFE, 0x00, 0x04, 0x10, 0x00, 0x02, 0x20, 0x00, 0x01, 0x40, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x17, 0x00, 0x64, 0x12, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F51, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x0C, 0x18, 0x00, 0x03, 0x60, 0x00, 0x00, 0x80, 0x00, 0x07, 0x70, 0x00, 0x79, 0x4F, 0x00, 0x17, 0x74, 0x00, 0x11, 0x44, 0x00, 0x17, 0x74, 0x00, 0x11, 0x44, 0x00, 0x17, 0x74, 0x00, 0x11, 0x44, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F52, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x12, 0x95, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x12, 0x95, 0x00, 0x14, 0x25, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F53, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x17, 0x90, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x7F, 0xD0, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x35, 0x90, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x35, 0x90, 0x80, 0x20, 0x99, 0x80, 0x3F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F54, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0x90, 0x00, 0x14, 0x10, 0x00, 0x14, 0x11, 0x00, 0x7F, 0xD3, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x90, 0x00, 0x35, 0x90, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x2A, 0x90, 0x00, 0x35, 0x90, 0x80, 0x20, 0x99, 0x80, 0x3F, 0x8F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F55, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x17, 0x90, 0x00, 0x14, 0x3F, 0x80, 0x14, 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x2A, 0x9F, 0x80, 0x2A, 0x83, 0x00, 0x35, 0x86, 0x00, 0x20, 0x8C, 0x00, 0x3F, 0x98, 0x00, 0x2A, 0xB0, 0x00, 0x2A, 0xA0, 0x00, 0x35, 0xA0, 0x80, 0x20, 0xB1, 0x80, 0x3F, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F56, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x80, 0x17, 0x91, 0x00, 0x14, 0x11, 0x00, 0x14, 0x11, 0x00, 0x7F, 0xD1, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xFF, 0x80, 0x35, 0x85, 0x00, 0x20, 0x85, 0x00, 0x3F, 0x8D, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x99, 0x00, 0x35, 0x91, 0x00, 0x20, 0xB1, 0x00, 0x3F, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F57, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x04, 0x06, 0x00, 0x17, 0x9C, 0x00, 0x14, 0x10, 0x00, 0x14, 0x10, 0x00, 0x7F, 0xDF, 0x80, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x35, 0x92, 0x00, 0x20, 0x92, 0x00, 0x3F, 0x92, 0x00, 0x2A, 0xB2, 0x00, 0x2A, 0xA2, 0x00, 0x35, 0xE2, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F58, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x2F, 0x14, 0x00, 0x28, 0x36, 0x00, 0x28, 0x63, 0x00, 0x7F, 0xE3, 0x80, 0x55, 0x22, 0x00, 0x55, 0x22, 0x00, 0x6B, 0x22, 0x00, 0x41, 0x22, 0x00, 0x7F, 0x22, 0x00, 0x55, 0x62, 0x00, 0x55, 0x42, 0x00, 0x6B, 0x42, 0x00, 0x41, 0xC2, 0x00, 0x7F, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F5A, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x17, 0x88, 0x00, 0x14, 0x1F, 0x80, 0x14, 0x34, 0x00, 0x7F, 0xE4, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x87, 0x80, 0x35, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x2A, 0x87, 0x80, 0x2A, 0x84, 0x00, 0x35, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F5D, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x17, 0x98, 0x00, 0x14, 0x10, 0x00, 0x14, 0x11, 0x00, 0x7F, 0xB1, 0x00, 0x2A, 0xA7, 0x80, 0x2A, 0xFC, 0x80, 0x35, 0x80, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x35, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F5E, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x17, 0xA0, 0x80, 0x14, 0x20, 0x80, 0x14, 0x20, 0x80, 0x7F, 0xE0, 0x80, 0x2A, 0xA0, 0x80, 0x2A, 0xA0, 0x80, 0x35, 0xBF, 0x80, 0x20, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x35, 0x9B, 0x00, 0x20, 0x91, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F5F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x14, 0x11, 0x00, 0x17, 0x91, 0x00, 0x14, 0x11, 0x00, 0x3F, 0xDF, 0x00, 0x00, 0x11, 0x00, 0x20, 0x91, 0x00, 0x35, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x35, 0x9F, 0x00, 0x2A, 0x91, 0x00, 0x35, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F60, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x14, 0x3F, 0x80, 0x17, 0x88, 0x80, 0x14, 0x08, 0x80, 0x14, 0x08, 0x80, 0x7F, 0xD9, 0x80, 0x2A, 0x91, 0x00, 0x2A, 0xB7, 0x00, 0x35, 0x80, 0x00, 0x20, 0x9F, 0x00, 0x3F, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x35, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F61, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x0A, 0x00, 0x0B, 0xD1, 0x00, 0x0A, 0x20, 0x80, 0x0A, 0x00, 0x00, 0x0A, 0x1F, 0x00, 0x3F, 0xE0, 0x00, 0x10, 0x40, 0x00, 0x15, 0x5F, 0x80, 0x15, 0x48, 0x80, 0x15, 0x48, 0x80, 0x1A, 0xC8, 0x80, 0x10, 0x48, 0x80, 0x10, 0x4B, 0x00, 0x1F, 0xC8, 0x00, 0x10, 0x48, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F62, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x14, 0x1C, 0x00, 0x17, 0x94, 0x00, 0x14, 0x36, 0x00, 0x14, 0x63, 0x00, 0x7F, 0xDD, 0x80, 0x20, 0x80, 0x00, 0x35, 0x80, 0x00, 0x2E, 0xBF, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x89, 0x00, 0x2E, 0x8B, 0x00, 0x35, 0x88, 0x00, 0x20, 0x88, 0x00, 0x3F, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F63, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x10, 0x00, 0x17, 0x9F, 0x80, 0x14, 0x30, 0x80, 0x14, 0x20, 0x80, 0x7F, 0xFE, 0x80, 0x2A, 0x92, 0x80, 0x2A, 0x92, 0x80, 0x35, 0x92, 0x80, 0x20, 0x92, 0x80, 0x3F, 0x9E, 0x80, 0x2A, 0x80, 0x80, 0x2A, 0x80, 0x80, 0x35, 0x81, 0x80, 0x20, 0x81, 0x00, 0x3F, 0x87, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F66, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x14, 0x1F, 0x00, 0x17, 0x91, 0x00, 0x14, 0x11, 0x00, 0x14, 0x1F, 0x00, 0x7F, 0xD1, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0x9F, 0x00, 0x35, 0x94, 0x00, 0x20, 0x94, 0x80, 0x3F, 0x95, 0x80, 0x2A, 0x97, 0x00, 0x2A, 0x92, 0x00, 0x35, 0x93, 0x00, 0x20, 0x9D, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F67, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x09, 0x00, 0x1F, 0x11, 0x00, 0x04, 0x26, 0x00, 0x3F, 0xC0, 0x00, 0x04, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x12, 0x00, 0x0A, 0xAA, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0A, 0xAA, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F68, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x08, 0x00, 0x17, 0x98, 0x00, 0x14, 0x33, 0x80, 0x14, 0x20, 0x80, 0x7F, 0xE0, 0x80, 0x2A, 0xA0, 0x80, 0x2A, 0xA0, 0x80, 0x35, 0xBB, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xA0, 0x80, 0x2A, 0xA0, 0x80, 0x2A, 0xA0, 0x80, 0x35, 0xA0, 0x80, 0x20, 0xBF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F69, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x17, 0x84, 0x00, 0x14, 0x3F, 0x80, 0x14, 0x0A, 0x00, 0x7F, 0xDB, 0x00, 0x2A, 0xB1, 0x80, 0x2A, 0x80, 0x00, 0x35, 0x91, 0x00, 0x20, 0x91, 0x00, 0x3F, 0x9B, 0x00, 0x2A, 0x8E, 0x00, 0x2A, 0x84, 0x00, 0x35, 0x8E, 0x00, 0x20, 0x9B, 0x00, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F6A, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x12, 0x1F, 0x00, 0x13, 0x91, 0x00, 0x12, 0x11, 0x00, 0x12, 0x11, 0x00, 0x3F, 0xDF, 0x00, 0x00, 0x04, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x35, 0x97, 0x80, 0x3F, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x2A, 0x94, 0x00, 0x35, 0xB4, 0x00, 0x3F, 0xCF, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F6C, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x7F, 0x80, 0x17, 0x88, 0x00, 0x14, 0x08, 0x00, 0x14, 0x3F, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x11, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xFF, 0x80, 0x35, 0x80, 0x00, 0x3F, 0xBF, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x35, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F6D, { 0x00, 0x00, 0x00, 0x08, 0x33, 0x00, 0x08, 0x66, 0x00, 0x2F, 0x44, 0x00, 0x28, 0x44, 0x00, 0x28, 0x74, 0x00, 0x7F, 0xD7, 0x80, 0x55, 0x55, 0x00, 0x55, 0x55, 0x00, 0x6B, 0x75, 0x00, 0x41, 0x45, 0x00, 0x7F, 0x45, 0x00, 0x55, 0x4D, 0x00, 0x55, 0xC9, 0x00, 0x6B, 0x89, 0x00, 0x41, 0x89, 0x00, 0x7F, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F6E, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x17, 0xBF, 0x80, 0x14, 0x0A, 0x00, 0x14, 0x1B, 0x00, 0x7F, 0xF1, 0x80, 0x2A, 0x80, 0x00, 0x2A, 0xBF, 0x80, 0x35, 0x81, 0x00, 0x20, 0x9D, 0x00, 0x3F, 0x95, 0x00, 0x2A, 0x95, 0x00, 0x2A, 0x95, 0x00, 0x35, 0x9D, 0x00, 0x20, 0x81, 0x00, 0x3F, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F6F, { 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x04, 0x31, 0x80, 0x17, 0xA0, 0x80, 0x14, 0x20, 0x80, 0x14, 0x3B, 0x80, 0x7F, 0xE0, 0x80, 0x2A, 0xA0, 0x80, 0x2A, 0xA0, 0x80, 0x35, 0xBF, 0x80, 0x20, 0x8A, 0x00, 0x3F, 0x8A, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x9A, 0x00, 0x35, 0x92, 0x00, 0x20, 0x92, 0x80, 0x3F, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F70, { 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x04, 0x12, 0x00, 0x17, 0x7F, 0x80, 0x14, 0x12, 0x00, 0x14, 0x12, 0x00, 0x7F, 0x92, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x80, 0x00, 0x35, 0x80, 0x00, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x2A, 0xA1, 0x00, 0x2A, 0xBF, 0x00, 0x35, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F71, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x2F, 0x50, 0x00, 0x28, 0x50, 0x00, 0x28, 0x5F, 0x80, 0x7F, 0x74, 0x80, 0x55, 0x54, 0x80, 0x55, 0x55, 0x80, 0x6B, 0x55, 0x00, 0x41, 0x77, 0x00, 0x7F, 0x52, 0x00, 0x55, 0x52, 0x00, 0x55, 0x57, 0x00, 0x6B, 0x75, 0x00, 0x41, 0xD9, 0x80, 0x7F, 0x10, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F72, { 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x14, 0x3E, 0x00, 0x17, 0x88, 0x00, 0x14, 0x3F, 0x00, 0x14, 0x29, 0x00, 0x7F, 0xE9, 0x00, 0x2A, 0xBF, 0x00, 0x2A, 0x88, 0x00, 0x35, 0xBF, 0x80, 0x20, 0xA8, 0x80, 0x3F, 0xAA, 0x80, 0x2A, 0xAE, 0x80, 0x2A, 0xBA, 0x80, 0x35, 0xA0, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F73, { 0x00, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x20, 0x80, 0x17, 0xA4, 0x80, 0x14, 0x1F, 0x00, 0x14, 0x04, 0x00, 0x7F, 0xFF, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x35, 0xBF, 0x80, 0x20, 0xA4, 0x80, 0x3F, 0xA4, 0x80, 0x2A, 0xBF, 0x80, 0x2A, 0x84, 0x00, 0x35, 0xBF, 0x80, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F75, { 0x00, 0x00, 0x00, 0x04, 0x3F, 0x80, 0x04, 0x24, 0x80, 0x17, 0xA4, 0x80, 0x14, 0x3F, 0x80, 0x14, 0x24, 0x80, 0x7F, 0xE4, 0x80, 0x2A, 0xBF, 0x80, 0x2A, 0x84, 0x00, 0x35, 0x84, 0x00, 0x20, 0xBF, 0x80, 0x3F, 0xA4, 0x80, 0x2A, 0xA5, 0x80, 0x2A, 0xA7, 0x80, 0x35, 0xBD, 0x80, 0x20, 0xA0, 0x80, 0x3F, 0xA1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F76, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x14, 0x3B, 0x80, 0x17, 0xAA, 0x80, 0x14, 0x2A, 0x80, 0x14, 0x3B, 0x80, 0x7F, 0xC0, 0x00, 0x2A, 0x9F, 0x00, 0x2A, 0x80, 0x00, 0x35, 0xBF, 0x80, 0x20, 0x84, 0x00, 0x3F, 0x88, 0x00, 0x2A, 0x9F, 0x00, 0x2A, 0x81, 0x00, 0x35, 0x81, 0x00, 0x20, 0x83, 0x00, 0x3F, 0x8E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F77, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x3F, 0x80, 0x0A, 0x20, 0x80, 0x0B, 0xBF, 0x80, 0x0A, 0x20, 0x00, 0x3F, 0xFF, 0x80, 0x10, 0xA4, 0x00, 0x1B, 0xA9, 0x00, 0x14, 0xB3, 0x80, 0x1B, 0xBC, 0x80, 0x10, 0xA4, 0x00, 0x19, 0xA4, 0x00, 0x16, 0xBF, 0x00, 0x19, 0xA4, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F7A, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x3F, 0x80, 0x17, 0x48, 0x80, 0x14, 0x2A, 0x80, 0x14, 0x2A, 0x80, 0x7F, 0xBE, 0x80, 0x2A, 0x91, 0x80, 0x2A, 0xA3, 0x00, 0x35, 0x90, 0x00, 0x20, 0xBF, 0x80, 0x3F, 0xC8, 0x80, 0x2A, 0xAA, 0x80, 0x2A, 0xAA, 0x80, 0x35, 0xBE, 0x80, 0x20, 0x91, 0x80, 0x3F, 0xA3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F7D, { 0x00, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x2E, 0xFF, 0x80, 0x28, 0x22, 0x00, 0x28, 0x77, 0x00, 0x7F, 0xAA, 0x80, 0x55, 0x22, 0x00, 0x55, 0x00, 0x00, 0x6B, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x55, 0x08, 0x00, 0x55, 0x2A, 0x00, 0x6B, 0x6B, 0x00, 0x41, 0xC9, 0x80, 0x7F, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F7F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x90, 0x00, 0x08, 0xF8, 0x00, 0x08, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x82, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x11, 0x44, 0x00, 0x12, 0x34, 0x00, 0x14, 0x14, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F80, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x15, 0x20, 0x00, 0x17, 0xA0, 0x00, 0x14, 0x20, 0x00, 0x14, 0xA2, 0x00, 0x7F, 0xE6, 0x00, 0x00, 0x28, 0x00, 0x24, 0xB0, 0x00, 0x24, 0xA0, 0x00, 0x24, 0xA0, 0x00, 0x2A, 0xA0, 0x00, 0x31, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0x9F, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F83, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x02, 0x00, 0x15, 0x3F, 0x00, 0x17, 0xA2, 0x00, 0x14, 0x22, 0x00, 0x14, 0xA2, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x22, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xA2, 0x00, 0x24, 0xBE, 0x00, 0x2A, 0xA2, 0x00, 0x31, 0xA2, 0x00, 0x20, 0xA2, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F84, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x14, 0x10, 0x00, 0x14, 0x28, 0x00, 0x17, 0xA8, 0x00, 0x14, 0x44, 0x00, 0x14, 0xA7, 0x00, 0x7F, 0x92, 0x00, 0x00, 0x10, 0x00, 0x24, 0x80, 0x00, 0x24, 0xFE, 0x00, 0x24, 0x82, 0x00, 0x2A, 0x84, 0x00, 0x31, 0xA8, 0x00, 0x20, 0x90, 0x00, 0x3F, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F85, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x28, 0x42, 0x00, 0x2E, 0xFF, 0x00, 0x29, 0x02, 0x00, 0x28, 0x12, 0x00, 0x7F, 0xFA, 0x00, 0x00, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0xF2, 0x00, 0x2A, 0x8A, 0x00, 0x36, 0x84, 0x00, 0x22, 0x81, 0x00, 0x22, 0x81, 0x00, 0x3E, 0x7F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F86, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x28, 0x22, 0x00, 0x2E, 0x22, 0x00, 0x28, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x7F, 0x4A, 0x00, 0x00, 0x84, 0x00, 0x2A, 0x00, 0x00, 0x2A, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x36, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F87, { 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x08, 0x28, 0x00, 0x28, 0x28, 0x00, 0x2E, 0xA8, 0x00, 0x28, 0xA9, 0x00, 0x2A, 0xBA, 0x00, 0x7F, 0xAC, 0x00, 0x00, 0xA8, 0x00, 0x2A, 0xA8, 0x00, 0x2A, 0xA8, 0x00, 0x2A, 0xA8, 0x00, 0x36, 0xA8, 0x00, 0x22, 0xA8, 0x00, 0x22, 0xB9, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F88, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x84, 0x00, 0x2E, 0x84, 0x00, 0x28, 0xFC, 0x00, 0x2A, 0x84, 0x00, 0x7F, 0x84, 0x00, 0x00, 0xFC, 0x00, 0x2A, 0xA2, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0x98, 0x00, 0x36, 0x90, 0x00, 0x22, 0x88, 0x00, 0x22, 0xA7, 0x00, 0x3E, 0xC2, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F89, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0xFE, 0x00, 0x28, 0x10, 0x00, 0x2E, 0x14, 0x00, 0x28, 0xFE, 0x00, 0x2A, 0x24, 0x00, 0x7F, 0x24, 0x00, 0x00, 0x24, 0x00, 0x2B, 0xFF, 0x00, 0x2A, 0x02, 0x00, 0x2A, 0x7F, 0x00, 0x36, 0x42, 0x00, 0x22, 0x42, 0x00, 0x22, 0x42, 0x00, 0x3E, 0x7E, 0x00, 0x02, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F8A, { 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x7E, 0x00, 0x28, 0x44, 0x00, 0x2E, 0x44, 0x00, 0x28, 0x44, 0x00, 0x2A, 0x44, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x50, 0x00, 0x2A, 0x14, 0x00, 0x2A, 0x5E, 0x00, 0x2A, 0x50, 0x00, 0x36, 0x50, 0x00, 0x22, 0x50, 0x00, 0x22, 0xB3, 0x00, 0x3F, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F8B, { 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x09, 0xF8, 0x00, 0x08, 0x12, 0x00, 0x2E, 0xFF, 0x00, 0x28, 0x92, 0x00, 0x28, 0x92, 0x00, 0x7E, 0xFE, 0x00, 0x00, 0x10, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x92, 0x00, 0x2A, 0x92, 0x00, 0x36, 0xAA, 0x00, 0x22, 0xBA, 0x00, 0x3E, 0x82, 0x00, 0x22, 0x8A, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F8C, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0xFF, 0x00, 0x28, 0x82, 0x00, 0x2E, 0x82, 0x00, 0x28, 0xFE, 0x00, 0x2A, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x90, 0x00, 0x2A, 0xA4, 0x00, 0x2A, 0xFE, 0x00, 0x2A, 0x88, 0x00, 0x36, 0xBE, 0x00, 0x22, 0x88, 0x00, 0x22, 0x8A, 0x00, 0x3F, 0x7F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F8D, { 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x1F, 0xDF, 0x80, 0x08, 0x90, 0x00, 0x08, 0x9F, 0x80, 0x3F, 0xE0, 0x80, 0x00, 0x00, 0x80, 0x1F, 0xDF, 0x80, 0x10, 0x50, 0x00, 0x1F, 0xD0, 0x00, 0x10, 0x5F, 0x80, 0x1F, 0xD0, 0x00, 0x10, 0x5F, 0x80, 0x10, 0x50, 0x00, 0x10, 0x50, 0x80, 0x11, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F8F, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1E, 0x00, 0x11, 0x10, 0x80, 0x13, 0x0F, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x06, 0x08, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F90, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x90, 0x00, 0x12, 0x9F, 0x00, 0x1F, 0xE1, 0x00, 0x10, 0x1F, 0x00, 0x17, 0xD0, 0x00, 0x14, 0x5F, 0x00, 0x17, 0xD0, 0x00, 0x14, 0x5F, 0x00, 0x17, 0xD0, 0x00, 0x24, 0x5F, 0x00, 0x24, 0x50, 0x80, 0x24, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F91, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1E, 0x00, 0x11, 0x10, 0x80, 0x13, 0x0F, 0x80, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x07, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F92, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1E, 0x00, 0x11, 0x10, 0x80, 0x13, 0x0F, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x06, 0x4C, 0x00, 0x1C, 0xC7, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F94, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xDF, 0x00, 0x11, 0x01, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1E, 0x00, 0x11, 0x10, 0x80, 0x13, 0x0F, 0x80, 0x02, 0x10, 0x00, 0x0F, 0xFC, 0x00, 0x02, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x06, 0x18, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F95, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x30, 0x00, 0x07, 0xFC, 0x00, 0x38, 0x03, 0x80, 0x03, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xBF, 0x00, 0x09, 0x24, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x81, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA0, 0x00, 0x1F, 0xBF, 0x00, 0x10, 0xA0, 0x80, 0x11, 0xBF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F96, { 0x00, 0x00, 0x00, 0x12, 0x12, 0x00, 0x12, 0x12, 0x00, 0x7F, 0xFF, 0x80, 0x2A, 0x2A, 0x00, 0x2B, 0xAB, 0x80, 0x7C, 0xFC, 0x80, 0x03, 0x83, 0x80, 0x3A, 0x3A, 0x00, 0x2B, 0xAB, 0x80, 0x2A, 0x2A, 0x00, 0x3B, 0xBB, 0x80, 0x2A, 0x2A, 0x00, 0x2B, 0xAB, 0x80, 0x3A, 0x3A, 0x00, 0x2A, 0xAA, 0x80, 0x29, 0xA9, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F97, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x2F, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x1C, 0xE7, 0x00, 0x04, 0x10, 0x00, 0x3F, 0x9F, 0x80, 0x11, 0x10, 0x00, 0x7F, 0xCF, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x1F, 0x00, 0x1F, 0x10, 0x80, 0x11, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F99, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x20, 0x00, 0x01, 0x10, 0x00, 0x01, 0x02, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x01, 0x44, 0x00, 0x02, 0x44, 0x00, 0x02, 0x48, 0x00, 0x02, 0x50, 0x00, 0x04, 0x60, 0x00, 0x04, 0x41, 0x00, 0x08, 0xC1, 0x00, 0x0B, 0x41, 0x00, 0x10, 0x3F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F9A, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x0A, 0x00, 0x7F, 0xFF, 0x00, 0x02, 0x80, 0x00, 0x02, 0xB2, 0x00, 0x04, 0xC2, 0x00, 0x19, 0x7E, 0x00, 0x64, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x04, 0x10, 0x00, 0x0C, 0x0C, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F9B, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x1F, 0xFC, 0x00, 0x60, 0x03, 0x00, 0x0F, 0xF8, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x12, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0x40, 0x00, 0x02, 0x50, 0x00, 0x02, 0x60, 0x00, 0x04, 0xC2, 0x00, 0x09, 0x42, 0x00, 0x30, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9F9C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x31, 0x42, 0x00, 0x1F, 0x7E, 0x00, 0x3D, 0x40, 0x00, 0x05, 0x7F, 0x00, 0x3F, 0xE3, 0x00, 0x05, 0x55, 0x00, 0x3D, 0x5D, 0x00, 0x05, 0x63, 0x00, 0x3F, 0x7F, 0x00, 0x05, 0x40, 0x00, 0x3D, 0x40, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F9D, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x1C, 0xF8, 0x00, 0x71, 0x10, 0x00, 0x17, 0xFE, 0x00, 0x12, 0x52, 0x00, 0x7F, 0xDE, 0x00, 0x11, 0x50, 0x00, 0x17, 0xFF, 0x00, 0x39, 0x51, 0x00, 0x37, 0x5B, 0x00, 0x50, 0x55, 0x00, 0x57, 0x5B, 0x00, 0x11, 0x51, 0x00, 0x17, 0xFF, 0x00, 0x11, 0x40, 0x80, 0x17, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F9E, { 0x00, 0x00, 0x00, 0x24, 0x88, 0x00, 0x7F, 0xCF, 0x80, 0x44, 0x59, 0x00, 0x55, 0x45, 0x00, 0x55, 0x46, 0x00, 0x07, 0xF9, 0x80, 0x0C, 0x10, 0x00, 0x7F, 0xFE, 0x00, 0x11, 0x42, 0x00, 0x3F, 0x7E, 0x00, 0x09, 0x40, 0x00, 0x7F, 0xFF, 0x00, 0x09, 0x4D, 0x00, 0x7F, 0xFF, 0x00, 0x09, 0x40, 0x80, 0x39, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9F9F, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x10, 0x44, 0x00, 0x3F, 0xFE, 0x00, 0x50, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x85, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9FA0, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x0E, 0x3C, 0x00, 0x7B, 0xE7, 0x80, 0x00, 0x00, 0x00, 0x3D, 0xEF, 0x00, 0x25, 0x29, 0x00, 0x3D, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x12, 0x22, 0x00, 0x12, 0x26, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9FA1, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x08, 0x00, 0x1B, 0x08, 0x00, 0x31, 0x8F, 0x80, 0x6E, 0xD8, 0x80, 0x00, 0x15, 0x80, 0x7F, 0xF5, 0x00, 0x4A, 0x44, 0x00, 0x7F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x8E, 0x00, 0x2A, 0x8A, 0x00, 0x3F, 0x8A, 0x00, 0x2A, 0x9B, 0x00, 0x2A, 0x91, 0x00, 0x2A, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x9FA2, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x0E, 0x07, 0x80, 0x1B, 0x3C, 0x00, 0x31, 0x84, 0x00, 0x6E, 0xC4, 0x00, 0x00, 0x3F, 0x80, 0x7F, 0xC4, 0x00, 0x4A, 0x4E, 0x00, 0x7F, 0xCE, 0x00, 0x00, 0x15, 0x00, 0x3F, 0x95, 0x00, 0x2A, 0x95, 0x80, 0x3F, 0xB4, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0xA4, 0x80, 0x2A, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9FA3, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0E, 0x0F, 0x80, 0x1B, 0x18, 0x80, 0x31, 0x91, 0x80, 0x6E, 0xDF, 0x00, 0x00, 0x02, 0x00, 0x7F, 0xFF, 0x80, 0x4A, 0x44, 0x00, 0x7F, 0xE4, 0x80, 0x00, 0x35, 0x80, 0x3F, 0x95, 0x00, 0x2A, 0x8E, 0x00, 0x3F, 0x97, 0x00, 0x2A, 0xB5, 0x80, 0x2A, 0xE4, 0x80, 0x2A, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x9FA5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x3F, 0x80, 0x1B, 0x04, 0x00, 0x31, 0x9F, 0x00, 0x6E, 0xD1, 0x00, 0x00, 0x11, 0x00, 0x7F, 0xDF, 0x00, 0x4A, 0x51, 0x00, 0x7F, 0xD1, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x91, 0x00, 0x2A, 0x91, 0x00, 0x3F, 0x9F, 0x00, 0x2A, 0x8A, 0x00, 0x2A, 0x9B, 0x00, 0x2A, 0xB1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xAC00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x0C, 0x04, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x09, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAC9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x09, 0x00, 0x01, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x01, 0x39, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x09, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xACFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAD9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xADFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x02, 0x44, 0x00, 0x02, 0x44, 0x00, 0x02, 0x47, 0x00, 0x04, 0x84, 0x00, 0x04, 0x84, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x12, 0x04, 0x00, 0x24, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x4F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x12, 0x09, 0x00, 0x24, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x02, 0x44, 0x00, 0x02, 0x47, 0x00, 0x02, 0x44, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x12, 0x04, 0x00, 0x24, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAE9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x87, 0x00, 0x04, 0x84, 0x00, 0x04, 0x87, 0x00, 0x08, 0x84, 0x00, 0x11, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x49, 0x00, 0x02, 0x4F, 0x00, 0x02, 0x49, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x12, 0x09, 0x00, 0x24, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x04, 0x89, 0x00, 0x04, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x02, 0x42, 0x00, 0x02, 0x42, 0x00, 0x02, 0x5E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x12, 0x02, 0x00, 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAECA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAECB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAECC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAECD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAECE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAECF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x49, 0x00, 0x02, 0x49, 0x00, 0x02, 0x79, 0x00, 0x04, 0x89, 0x00, 0x04, 0x89, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x12, 0x09, 0x00, 0x24, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAED9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x04, 0x89, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x02, 0x42, 0x00, 0x02, 0x5E, 0x00, 0x02, 0x42, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x12, 0x02, 0x00, 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAEFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x04, 0x82, 0x00, 0x04, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x02, 0x49, 0x00, 0x02, 0x79, 0x00, 0x02, 0x49, 0x00, 0x04, 0x89, 0x00, 0x04, 0xF9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x12, 0x09, 0x00, 0x24, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x04, 0x89, 0x00, 0x04, 0xB9, 0x00, 0x08, 0x89, 0x00, 0x11, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x10, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAF9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x04, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xAFFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB001, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB002, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB003, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB004, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB005, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB006, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB007, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB008, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB009, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB00A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB00B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x10, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB00C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB00D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB00E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB00F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB010, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB011, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB012, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB013, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB014, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB015, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB016, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB017, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB018, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB019, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB01A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB01B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB01C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB01D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB01E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB01F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB023, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB024, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB027, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB028, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB029, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB02A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB02B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB02C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB02D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB02E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB02F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB031, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB037, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB038, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB03A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB03B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB03C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB03D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB03E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB03F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB040, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB042, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB046, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB048, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB04A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB04B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB04C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB04D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB04E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB04F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB051, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB052, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB053, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB054, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB055, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB056, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB057, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB058, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB059, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB05A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB05B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB05C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB05D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB05E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB05F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB060, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x04, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB061, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB062, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB064, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB066, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB068, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB069, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB06A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB06B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB06C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB06D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB06E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB06F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB070, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB071, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB072, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB073, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB07A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB07B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x10, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB07C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x02, 0x42, 0x00, 0x02, 0x42, 0x00, 0x02, 0x42, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x12, 0x02, 0x00, 0x24, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB07D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB07E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB07F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB080, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB082, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB083, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB084, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB085, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB086, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB087, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB088, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB089, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB08A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB08B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB08C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB08D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB08E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB08F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB090, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB091, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB092, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB093, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB094, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB095, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB096, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB097, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x08, 0x82, 0x00, 0x11, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB098, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB099, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB09A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB09B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB09C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB09D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB09E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB09F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB0FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB100, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB101, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB102, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB106, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB108, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB10A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB10B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB10C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB10D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB10E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB10F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB112, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB114, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB11A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB11B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB11C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB11D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB11E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB11F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB120, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB124, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB125, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB128, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB12A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB12B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB12C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB12D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB12E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB12F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB130, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB134, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB139, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB13A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB13B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB13C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB13D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB13E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB13F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB143, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB147, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB14A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB14B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB14C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB14D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB14E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB14F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB150, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB151, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB152, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB154, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB156, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB158, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB159, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB15A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB15B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB15C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB15D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB15E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB15F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB160, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB164, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB168, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB16A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB16B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB16C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB16D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB16E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB16F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB174, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB176, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB179, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB17A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB17B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB17C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB17D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB17E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB17F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB180, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB181, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB184, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB185, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB186, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB187, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB189, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB18A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB18B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB18C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB18D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB18E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB18F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB193, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB194, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB19A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB19B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB19C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB19D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB19E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB19F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB1FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB204, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB20A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB20B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB20C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB20D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB20E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB20F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB210, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB214, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB216, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB21A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB21B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB21C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB21D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB21E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB21F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB221, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB226, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB22A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB22B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB22C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB22D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB22E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB22F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB230, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB231, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB232, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB233, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB234, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB235, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB236, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB238, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB239, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB23A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB23B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB23C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB23D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB23E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB23F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB240, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB241, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB242, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB243, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB244, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB245, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB246, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB247, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB248, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB249, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB24A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB24B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB24C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB24D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB24E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB24F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB250, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB251, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB253, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB255, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB256, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB257, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB258, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB259, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB25A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB25B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB25C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB25D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB25E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB25F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB26A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB26B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB26C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB26D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB26E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB26F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB27A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB27B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB27C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB27D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB27E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB27F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB281, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB284, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB287, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB288, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB289, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB28A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB28B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB28C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB28D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB28E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB28F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB290, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB291, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB292, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB293, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB294, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB295, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB296, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB297, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB298, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB29A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB29B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB29C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB29D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB29E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB29F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB2FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB300, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB301, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB302, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB303, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB304, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB305, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB306, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB307, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB308, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB309, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB30A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB30B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB30C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB30D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB30E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB30F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB310, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB311, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB312, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB313, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB314, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB315, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB316, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB317, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB318, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB319, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB31A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB31B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB31C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB31D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB31E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB31F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB321, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB322, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB324, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB326, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB329, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB32A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB32B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB32C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB32D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB32E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB32F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB330, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB334, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB335, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB336, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB337, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB33A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB33B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB33C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB33D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB33E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB33F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB340, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB341, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB342, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB343, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB344, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB345, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB346, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB347, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB348, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB349, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB34A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB34B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB34C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB34D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB34E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB34F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB350, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB351, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB352, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB353, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB354, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB355, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB356, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB357, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB358, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB359, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB35A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB35B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB35C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB35D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB35E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB35F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB360, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB361, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB362, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB363, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB364, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB365, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB366, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB367, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB368, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB369, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB36A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB36B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB36C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB36D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB36E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB36F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB370, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB371, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB372, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB373, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB374, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB375, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB376, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB377, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB378, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB379, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB37A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB37B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB37C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB37D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB37E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB37F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB380, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB381, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB382, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB383, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB385, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB386, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB387, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB388, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB389, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB38A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB38B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB38C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB38D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB38E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB38F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB39A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB39B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB39C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB39D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB39E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB39F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB3FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB400, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB402, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB403, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB407, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB40A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB40B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB40C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB40D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB40E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB40F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB410, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB411, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB414, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB415, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB419, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB41A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB41B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB41C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB41D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB41E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB41F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB420, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB421, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB423, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB424, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB425, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB427, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB428, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB42A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB42B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB42C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB42D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB42E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB42F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB430, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB432, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB435, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB437, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB439, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB43A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB43B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB43C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB43D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB43E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB43F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB447, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB44A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB44B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB44C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB44D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB44E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB44F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB450, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB451, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB452, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB453, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB454, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB456, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB457, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB458, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB45A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB45B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB45C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB45D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB45E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB45F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB460, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB463, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB464, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB466, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB467, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB46A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB46B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB46C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB46D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB46E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB46F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB470, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB471, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB472, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB473, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB476, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB478, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB479, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB47A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB47B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB47C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB47D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB47E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB47F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB481, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB483, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB484, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB485, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB487, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB48A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB48B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB48C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB48D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB48E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB48F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB490, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB496, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB497, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB49A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB49B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB49C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB49D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB49E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB49F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB4FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB502, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB503, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB506, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB507, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB509, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB50A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB50B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB50C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB50D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB50E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB50F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB510, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB511, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB512, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB513, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB514, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB515, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB516, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB517, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB518, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB519, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB51A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB51B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB51C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB51D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB51E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB51F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB520, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB521, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB522, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB523, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB524, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB525, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB526, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB527, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB528, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB529, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB52A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB52B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB52C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB52D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB52E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB52F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x07, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB534, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB535, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB536, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB537, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB538, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB539, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB53A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB53B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB53C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB53D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB53E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB53F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB540, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB541, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB542, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB543, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB545, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB546, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB547, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB548, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB549, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB54A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB54B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB54C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x0F, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB54D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB54E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB54F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB551, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB552, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB553, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB554, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB555, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB556, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB557, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB558, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB559, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB55A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB55B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB55C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB55D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB55E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB55F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB560, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB561, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB562, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB563, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB564, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB565, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB566, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB567, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB568, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x22, 0x04, 0x00, 0x22, 0x07, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x22, 0x07, 0x00, 0x22, 0x04, 0x00, 0x22, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB569, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB56A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB56B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB56C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB56D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB56E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB56F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB570, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB571, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB572, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB573, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB574, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB575, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB576, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB579, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB57A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB57B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB57C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB57D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB57E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB57F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB580, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x24, 0x07, 0x00, 0x24, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB584, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x22, 0x09, 0x00, 0x22, 0x0F, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x0F, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB586, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB587, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB588, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB589, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB58A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB58B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB58C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB58D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB58E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB58F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB590, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB591, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB592, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB593, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB594, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB595, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB596, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB597, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB598, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB599, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB59A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB59B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB59C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB59D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB59E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB59F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x24, 0x0F, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x1E, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x79, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x09, 0x00, 0x24, 0x79, 0x00, 0x24, 0x09, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x22, 0x02, 0x00, 0x22, 0x1E, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x1E, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x24, 0x1E, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x22, 0x09, 0x00, 0x22, 0x79, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x22, 0x79, 0x00, 0x22, 0x09, 0x00, 0x22, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB5FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB600, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB601, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB602, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB603, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB604, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB605, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB606, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB607, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB608, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB609, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB60A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB60B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB60C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB60D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB60E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB60F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x24, 0x39, 0x00, 0x24, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB610, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB611, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB612, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB613, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB614, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB615, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB616, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB617, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB618, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB619, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB61A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB61B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB61C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB61D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB61E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB61F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB620, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB621, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB622, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB623, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB624, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB625, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB626, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB627, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB628, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB629, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB62A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB62B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB62C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB62D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB62E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB62F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB630, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB631, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB632, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB633, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB634, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB635, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB636, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB637, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB638, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB639, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB63A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB63B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB63C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB63D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB63E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB63F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB640, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB641, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB642, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB643, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB644, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB645, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB646, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB647, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x04, 0x00, 0x12, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB648, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB649, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB64A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB64B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB64C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB64D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB64E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB64F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB650, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB651, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB652, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB653, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB654, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB655, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB656, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB657, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB658, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB659, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB65A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB65B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB65C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB65D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB65E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB65F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB660, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB661, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB662, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB663, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB664, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB665, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB666, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB667, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB668, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB669, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB66A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB66B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB66C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB66D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB66E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB66F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB670, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB671, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB672, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB673, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB674, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB675, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB676, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB677, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB678, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB679, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB67A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB67B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB67C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB67D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB67E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB67F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB680, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB681, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB682, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB683, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB684, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB685, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB686, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB687, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB688, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB689, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB68A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB68B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB68C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB68D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB68E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB68F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB690, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB691, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB692, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB693, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB694, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB695, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB696, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB697, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB698, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB699, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB69A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB69B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB69C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB69D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB69E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB69F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x09, 0x00, 0x12, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB6FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB701, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB702, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB703, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB704, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB705, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB706, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB707, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB708, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB709, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB70A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB70B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB70C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB70D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB70E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB70F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB710, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB711, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB712, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB713, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB714, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB715, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB716, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB717, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB718, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB719, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB71A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB71B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB71C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB71D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB71E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB71F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB720, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB721, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB722, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB723, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB724, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB725, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB726, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB727, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB728, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x10, 0x80, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB729, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB72A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB72B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB72C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB72D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB72E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB72F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB730, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB731, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB732, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB733, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB734, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB735, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB736, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB737, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB738, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB739, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB73A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB73B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB73C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB73D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB73E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB73F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB740, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB741, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB742, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB743, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB744, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB745, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB746, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB747, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB748, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB749, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB74A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB74B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB74C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB74D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB74E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB74F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB750, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB751, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB752, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB753, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB754, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB755, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB756, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB757, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB758, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB759, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB75A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB75B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB75C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB75D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB75E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB75F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x02, 0x00, 0x12, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB760, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x22, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB761, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB762, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB763, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB764, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB765, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB766, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB767, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB768, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB769, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB76A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB76B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB76C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB76D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB76E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB76F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB770, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB771, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB772, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB773, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB774, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB775, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB776, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB777, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB778, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB779, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB77A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB77B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x24, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB77C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB77D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB77E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB77F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB780, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB781, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB782, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB783, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB784, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB785, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB786, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB787, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB788, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB789, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB78A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB78B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB78C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB78D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB78E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB78F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB790, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB791, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB792, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB793, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB794, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB795, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB796, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB797, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB798, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB799, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB79A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB79B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB79C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB79D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB79E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB79F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB7FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB800, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB801, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB802, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB803, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB804, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB805, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB806, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB807, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB808, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB809, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB80A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB80B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB80C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB80D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB80E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB80F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB810, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB811, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB812, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB813, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB814, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB815, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB816, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB817, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB818, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB819, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB81A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB81B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB81C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB81D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB81E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB81F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB820, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB821, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB822, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB823, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB824, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB825, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB826, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB827, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB828, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB829, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB82A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB82B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB82C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB82D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB82E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB82F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB830, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB831, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB832, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB833, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB834, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB835, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB836, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB837, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB838, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB839, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB83A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB83B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB83C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB83D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB83E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB83F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB840, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB841, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB842, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB843, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB844, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB845, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB846, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB847, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB848, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB849, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB84A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB84B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB84C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB84D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB84E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB84F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB850, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB851, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB852, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB853, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB854, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB855, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB856, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB857, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB858, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB859, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB85A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB85B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB85C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB85D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB85E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB85F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB860, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB861, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB862, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB863, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB864, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB865, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB866, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB867, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB868, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB869, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB86A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB86B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB86C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB86D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB86E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB86F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB870, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB871, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB872, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB873, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB874, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB875, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB876, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB877, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB878, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB879, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB87A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB87B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB87C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB87D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB87E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB87F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB880, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB881, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB882, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB883, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB884, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB885, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB886, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB887, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB888, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB889, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB88A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB88B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB88C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB88D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB88E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB88F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB890, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB891, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB892, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB893, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB894, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB895, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB896, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB897, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB898, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB899, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB89A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB89B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB89C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB89D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB89E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB89F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB8FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB900, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB901, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB902, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB903, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB904, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB905, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB906, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB907, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB908, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB909, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB90A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB90B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB90C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB90D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB90E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB90F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB910, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB911, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB912, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB913, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB914, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB915, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB916, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB917, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB918, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB919, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB91A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB91B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB91C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB91D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB91E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB91F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB920, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB921, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB922, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB923, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB924, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB925, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB926, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB927, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB928, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB929, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB92A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB92B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB92C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB92D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB92E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB92F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB930, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB931, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB932, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB933, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB934, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB935, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB936, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB937, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB938, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB939, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB93A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB93B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB93C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB93D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB93E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB93F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB940, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB941, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB942, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB943, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB944, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB945, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB946, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB947, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB948, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB949, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB94A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB94B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB94C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB94D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB94E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB94F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB950, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB951, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB952, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB953, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB954, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB955, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB956, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB957, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB958, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB959, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB95A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB95B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB95C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB95D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB95E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB95F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB960, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB961, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB962, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB963, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB964, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB965, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB966, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB967, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB968, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB969, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB96A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB96B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB96C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB96D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB96E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB96F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB970, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB971, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB972, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB973, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB974, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB975, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB976, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB977, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB978, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB979, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB97A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB97B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB97C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB97D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB97E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB97F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB980, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB981, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB982, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB983, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB984, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB985, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB986, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB987, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB988, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB989, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB98A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB98B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB98C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB98D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB98E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB98F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB990, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB991, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB992, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB993, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB994, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB995, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB996, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB997, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB998, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB999, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB99A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB99B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB99C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB99D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB99E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB99F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xB9FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBA9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBABA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBABB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBABC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBABD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBABE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBABF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBACA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBACB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBACC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBACD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBACE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBACF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBADA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBADB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBADC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBADD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBADE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBADF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBAFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBB9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBBFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBC9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBCFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBD9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBDFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBE9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x24, 0x84, 0x00, 0x24, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x24, 0x87, 0x00, 0x24, 0x84, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBECA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBECB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBECC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBECD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBECE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBECF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x8F, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBED9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBEFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x9E, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x24, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xF9, 0x00, 0x24, 0x89, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x24, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x3F, 0x89, 0x00, 0x24, 0xB9, 0x00, 0x24, 0x89, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBF9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xBFFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC001, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC002, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC003, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC004, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC005, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC006, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC007, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC008, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC009, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC00A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC00B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC00C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC00D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC00E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC00F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC010, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC011, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC012, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC013, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC014, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC015, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC016, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC017, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC018, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC019, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC01A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC01B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC01C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC01D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC01E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC01F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x12, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC023, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC024, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC027, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC028, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC029, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC02A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC02B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC02C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC02D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC02E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC02F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC031, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC037, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC038, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC03A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC03B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC03C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC03D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC03E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC03F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC040, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC042, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC046, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC048, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC04A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC04B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC04C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC04D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC04E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC04F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC051, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC052, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC053, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC054, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC055, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC056, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC057, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC058, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC059, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC05A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC05B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC05C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC05D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC05E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC05F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC060, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC061, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC062, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC064, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC066, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC068, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC069, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC06A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC06B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC06C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC06D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC06E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC06F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC070, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC071, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC072, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC073, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x11, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC07A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC07B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC07C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC07D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC07E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC07F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC080, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC082, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC083, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC084, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC085, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC086, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC087, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC088, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC089, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC08A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC08B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC08C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC08D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC08E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC08F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x12, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC090, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC091, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC092, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC093, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC094, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC095, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC096, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC097, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC098, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC099, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC09A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC09B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC09C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC09D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC09E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC09F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x24, 0x82, 0x00, 0x24, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC0FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC100, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC101, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC102, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC106, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC108, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC10A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC10B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC10C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC10D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC10E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC10F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC112, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC114, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC11A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC11B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC11C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC11D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC11E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC11F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC120, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC124, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC125, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC128, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC12A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC12B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC12C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC12D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC12E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC12F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC130, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC134, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC139, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC13A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC13B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC13C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC13D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC13E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC13F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC143, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC147, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC14A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC14B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC14C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC14D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC14E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC14F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC150, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC151, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC152, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC154, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC156, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC158, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC159, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC15A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC15B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC15C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC15D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC15E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC15F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC160, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC164, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC168, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC16A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC16B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC16C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC16D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC16E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC16F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC174, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC176, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC179, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC17A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC17B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC17C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC17D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC17E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC17F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC180, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC181, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC184, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC185, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC186, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC187, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC189, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC18A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC18B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC18C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC18D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC18E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC18F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC193, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC194, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC19A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC19B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC19C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC19D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC19E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC19F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC1FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC204, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC20A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC20B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC20C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC20D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC20E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC20F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC210, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC214, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC216, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC21A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC21B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC21C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC21D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC21E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC21F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC221, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC226, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC22A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC22B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC22C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC22D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC22E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC22F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC230, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC231, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC232, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC233, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC234, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC235, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC236, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC238, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC239, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC23A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC23B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC23C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC23D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC23E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC23F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC240, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC241, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC242, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC243, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC244, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC245, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC246, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC247, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC248, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC249, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC24A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC24B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC24C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC24D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC24E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC24F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC250, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC251, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC253, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC255, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC256, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC257, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC258, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC259, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC25A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC25B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC25C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC25D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC25E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC25F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC26A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC26B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC26C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC26D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC26E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC26F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC27A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC27B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC27C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC27D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC27E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC27F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC281, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC284, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC287, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC288, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC289, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC28A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC28B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC28C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC28D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC28E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC28F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC290, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC291, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC292, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC293, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC294, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC295, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC296, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC297, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC298, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC29A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC29B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC29C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC29D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC29E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC29F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x87, 0x00, 0x08, 0x84, 0x00, 0x1D, 0xC4, 0x00, 0x15, 0x44, 0x00, 0x15, 0x64, 0x00, 0x22, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC2FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC300, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC301, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC302, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC303, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC304, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC305, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC306, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC307, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC308, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC309, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC30A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC30B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC30C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC30D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC30E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC30F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC310, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC311, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC312, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC313, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC314, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xC9, 0x00, 0x15, 0x49, 0x00, 0x15, 0x69, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC315, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC316, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC317, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC318, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC319, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC31A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC31B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC31C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC31D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC31E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC31F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC321, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC322, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC324, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC326, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC329, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC32A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC32B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC32C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC32D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC32E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC32F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC330, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x87, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1D, 0xC7, 0x00, 0x15, 0x44, 0x00, 0x15, 0x64, 0x00, 0x22, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC334, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC335, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC336, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC337, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC33A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC33B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC33C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC33D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC33E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC33F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC340, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC341, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC342, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC343, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC344, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC345, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC346, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC347, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC348, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC349, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC34A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC34B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC34C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xCF, 0x00, 0x15, 0x49, 0x00, 0x15, 0x69, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC34D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC34E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC34F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC350, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC351, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC352, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC353, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC354, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC355, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC356, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC357, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC358, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC359, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC35A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC35B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC35C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC35D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC35E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC35F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC360, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC361, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC362, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC363, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC364, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC365, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC366, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC367, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC368, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x1D, 0xC2, 0x00, 0x15, 0x42, 0x00, 0x15, 0x62, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC369, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC36A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC36B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC36C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC36D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC36E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC36F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC370, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC371, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC372, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC373, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC374, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC375, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC376, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC377, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC378, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC379, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC37A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC37B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC37C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC37D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC37E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC37F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC380, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC381, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC382, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC383, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xC9, 0x00, 0x15, 0x49, 0x00, 0x15, 0x69, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC385, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC386, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC387, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC388, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC389, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC38A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC38B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC38C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC38D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC38E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC38F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC39A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC39B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC39C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC39D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC39E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC39F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1D, 0xDE, 0x00, 0x15, 0x42, 0x00, 0x15, 0x62, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xF9, 0x00, 0x15, 0x49, 0x00, 0x15, 0x69, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x05, 0x04, 0x00, 0x05, 0x04, 0x00, 0x05, 0x04, 0x00, 0x0A, 0x84, 0x00, 0x12, 0x44, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC3FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC400, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC402, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC403, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC407, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC40A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC40B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC40C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC40D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC40E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC40F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC410, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x05, 0x09, 0x00, 0x05, 0x09, 0x00, 0x05, 0x09, 0x00, 0x0A, 0x89, 0x00, 0x12, 0x49, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC411, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC414, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC415, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC419, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC41A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC41B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC41C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC41D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC41E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC41F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC420, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC421, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC423, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC424, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC425, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC427, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC428, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC42A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC42B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC42C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x0A, 0x82, 0x00, 0x12, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC42D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC42E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC42F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC430, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC432, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC435, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC437, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC439, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC43A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC43B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC43C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC43D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC43E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC43F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC447, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC44A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC44B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC44C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC44D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC44E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC44F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC450, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC451, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC452, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC453, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC454, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC456, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC457, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC458, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC45A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC45B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC45C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC45D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC45E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC45F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC460, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC463, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC464, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC466, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC467, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC46A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC46B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC46C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC46D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC46E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC46F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC470, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC471, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC472, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC473, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC476, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC478, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC479, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC47A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC47B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC47C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC47D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC47E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC47F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x0A, 0x82, 0x00, 0x12, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC481, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC483, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC484, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC485, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC487, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC48A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC48B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC48C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC48D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC48E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC48F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC490, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC496, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC497, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC49A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC49B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC49C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x05, 0x09, 0x00, 0x05, 0x09, 0x00, 0x05, 0x09, 0x00, 0x0A, 0x89, 0x00, 0x12, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC49D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC49E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC49F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x0A, 0x82, 0x00, 0x12, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC4FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC502, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC503, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC506, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC507, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC509, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC50A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC50B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC50C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x0A, 0x82, 0x00, 0x12, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC50D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC50E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC50F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC510, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC511, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC512, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC513, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC514, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC515, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC516, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC517, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC518, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC519, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC51A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC51B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC51C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC51D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC51E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC51F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC520, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC521, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC522, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC523, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC524, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC525, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC526, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC527, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC528, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1D, 0xC2, 0x00, 0x15, 0x42, 0x00, 0x15, 0x62, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC529, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC52A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC52B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC52C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC52D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC52E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC52F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC534, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC535, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC536, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC537, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC538, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC539, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC53A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC53B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC53C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC53D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC53E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC53F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC540, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC541, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC542, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC543, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x11, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC545, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC546, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC547, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC548, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC549, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC54A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC54B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC54C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC54D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC54E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC54F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC551, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC552, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC553, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC554, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC555, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC556, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC557, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC558, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC559, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC55A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC55B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC55C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC55D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC55E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC55F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC560, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC561, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC562, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC563, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC564, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC565, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC566, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC567, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC568, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC569, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC56A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC56B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC56C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC56D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC56E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC56F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC570, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC571, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC572, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC573, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC574, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC575, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC576, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC579, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC57A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC57B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC57C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x11, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC57D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC57E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC57F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC580, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC584, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC586, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC587, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC588, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC589, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC58A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC58B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC58C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC58D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC58E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC58F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC590, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC591, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC592, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC593, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC594, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC595, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC596, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC597, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC598, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC599, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC59A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC59B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC59C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC59D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC59E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC59F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x11, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x11, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC5FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC600, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC601, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC602, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC603, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC604, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC605, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC606, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC607, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC608, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC609, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC60A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC60B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC60C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC60D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC60E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC60F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC610, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC611, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC612, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC613, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC614, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC615, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC616, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC617, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC618, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC619, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC61A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC61B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC61C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC61D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC61E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC61F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC620, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC621, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC622, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC623, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC624, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC625, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC626, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC627, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC628, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC629, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC62A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC62B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC62C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC62D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC62E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC62F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC630, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC631, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC632, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC633, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC634, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC635, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC636, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC637, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC638, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC639, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC63A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC63B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC63C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC63D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC63E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC63F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC640, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC641, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC642, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC643, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC644, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC645, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC646, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC647, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC648, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC649, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC64A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC64B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC64C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC64D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC64E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC64F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC650, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC651, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC652, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC653, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC654, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC655, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC656, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC657, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC658, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC659, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC65A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC65B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC65C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC65D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC65E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC65F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC660, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC661, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC662, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC663, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC664, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC665, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC666, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC667, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC668, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC669, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC66A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC66B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC66C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC66D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC66E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC66F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC670, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC671, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC672, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC673, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC674, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC675, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC676, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC677, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC678, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC679, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC67A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC67B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC67C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC67D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC67E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC67F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC680, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC681, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC682, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC683, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC684, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC685, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC686, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC687, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC688, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC689, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC68A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC68B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC68C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC68D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC68E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC68F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC690, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC691, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC692, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC693, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC694, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC695, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC696, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC697, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC698, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC699, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC69A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC69B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC69C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC69D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC69E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC69F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC6FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC701, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC702, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC703, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC704, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC705, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC706, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC707, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC708, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC709, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC70A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC70B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC70C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC70D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC70E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC70F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC710, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC711, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC712, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC713, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC714, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC715, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC716, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC717, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC718, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC719, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC71A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC71B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC71C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC71D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC71E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC71F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC720, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC721, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC722, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC723, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC724, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC725, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC726, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC727, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC728, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC729, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC72A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC72B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC72C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC72D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC72E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC72F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC730, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC731, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC732, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC733, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC734, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC735, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC736, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC737, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC738, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC739, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC73A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC73B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC73C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC73D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC73E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC73F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC740, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC741, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC742, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC743, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC744, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC745, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC746, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC747, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC748, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC749, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC74A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC74B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC74C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC74D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC74E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC74F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC750, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC751, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC752, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC753, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC754, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC755, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC756, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC757, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC758, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC759, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC75A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC75B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC75C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC75D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC75E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC75F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC760, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC761, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC762, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC763, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC764, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC765, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC766, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC767, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC768, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC769, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC76A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC76B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC76C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC76D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC76E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC76F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC770, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC771, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC772, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC773, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC774, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x11, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC775, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC776, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC777, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC778, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC779, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC77A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC77B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC77C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC77D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC77E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC77F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC780, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC781, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC782, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC783, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC784, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC785, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC786, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC787, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC788, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC789, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC78A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC78B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC78C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC78D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC78E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC78F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC790, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC791, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC792, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC793, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC794, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC795, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC796, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC797, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC798, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC799, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC79A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC79B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC79C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC79D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC79E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC79F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC7FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC800, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC801, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC802, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC803, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC804, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC805, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC806, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC807, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC808, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC809, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC80A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC80B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC80C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC80D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC80E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC80F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC810, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC811, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC812, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC813, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC814, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC815, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC816, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC817, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC818, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC819, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC81A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC81B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC81C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC81D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC81E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC81F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC820, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC821, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC822, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC823, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC824, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC825, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC826, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC827, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC828, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC829, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC82A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC82B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC82C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC82D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC82E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC82F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC830, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC831, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC832, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC833, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC834, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC835, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC836, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC837, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC838, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC839, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC83A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC83B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC83C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC83D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC83E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC83F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC840, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC841, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC842, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC843, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC844, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC845, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC846, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC847, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC848, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC849, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC84A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC84B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC84C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC84D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC84E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC84F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC850, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC851, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC852, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC853, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC854, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC855, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC856, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC857, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC858, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC859, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC85A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC85B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC85C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC85D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC85E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC85F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC860, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC861, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC862, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC863, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC864, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC865, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC866, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC867, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC868, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC869, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC86A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC86B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC86C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC86D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC86E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC86F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x39, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x39, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC870, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC871, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC872, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC873, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC874, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC875, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC876, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC877, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC878, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC879, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC87A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC87B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC87C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC87D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC87E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC87F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC880, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC881, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC882, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC883, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC884, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC885, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC886, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC887, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC888, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC889, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC88A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC88B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC88C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC88D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC88E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC88F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC890, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC891, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC892, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC893, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC894, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC895, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC896, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC897, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC898, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC899, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC89A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC89B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC89C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC89D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC89E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC89F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x12, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC8FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC900, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC901, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC902, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC903, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC904, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC905, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC906, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC907, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC908, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC909, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC90A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC90B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC90C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC90D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC90E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC90F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC910, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC911, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC912, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC913, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC914, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC915, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC916, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC917, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC918, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC919, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC91A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC91B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC91C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC91D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC91E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC91F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC920, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC921, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC922, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC923, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC924, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC925, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC926, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC927, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC928, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC929, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC92A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC92B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC92C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC92D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC92E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC92F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC930, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC931, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC932, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC933, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC934, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC935, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC936, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC937, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC938, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC939, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC93A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC93B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC93C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC93D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC93E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC93F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC940, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC941, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC942, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC943, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC944, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC945, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC946, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC947, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC948, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC949, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC94A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC94B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC94C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC94D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC94E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC94F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC950, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC951, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC952, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC953, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC954, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC955, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC956, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC957, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC958, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC959, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC95A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC95B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC95C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC95D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC95E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC95F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC960, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC961, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC962, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC963, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC964, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC965, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC966, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC967, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC968, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC969, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC96A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC96B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC96C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC96D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC96E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC96F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC970, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC971, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC972, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC973, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC974, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC975, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC976, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC977, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC978, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC979, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC97A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC97B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC97C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC97D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC97E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC97F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC980, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC981, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC982, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC983, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC984, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC985, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC986, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC987, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC988, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC989, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC98A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC98B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC98C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC98D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC98E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC98F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC990, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC991, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC992, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC993, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC994, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC995, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC996, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC997, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC998, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC999, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC99A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC99B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC99C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC99D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC99E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC99F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x87, 0x00, 0x08, 0x84, 0x00, 0x1D, 0xC4, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x2A, 0x84, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xC9, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xC9FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x87, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1D, 0xC7, 0x00, 0x15, 0x44, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3B, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x2A, 0x87, 0x00, 0x2A, 0x84, 0x00, 0x44, 0x44, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x8F, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xCF, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x2A, 0x8F, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x1D, 0xC2, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xC9, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x2A, 0x89, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x9E, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1D, 0xDE, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCA9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x9E, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x08, 0x89, 0x00, 0x08, 0xF9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1D, 0xF9, 0x00, 0x15, 0x49, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCABA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCABB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3B, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x2A, 0xB9, 0x00, 0x2A, 0x89, 0x00, 0x44, 0x49, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCABC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCABD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCABE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCABF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCACA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCACB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCACC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCACD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCACE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCACF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0D, 0x84, 0x00, 0x12, 0x44, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCADA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCADB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCADC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCADD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCADE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCADF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1D, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x15, 0x44, 0x00, 0x22, 0x24, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0D, 0x89, 0x00, 0x12, 0x49, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCAFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0D, 0x82, 0x00, 0x12, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0D, 0x82, 0x00, 0x12, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0D, 0x89, 0x00, 0x12, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1D, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x15, 0x49, 0x00, 0x22, 0x29, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0D, 0x82, 0x00, 0x12, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCB9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x0D, 0x82, 0x00, 0x12, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCBFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1D, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1D, 0xC2, 0x00, 0x15, 0x42, 0x00, 0x15, 0x42, 0x00, 0x22, 0x22, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3B, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x2A, 0x82, 0x00, 0x2A, 0x82, 0x00, 0x44, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x04, 0x07, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x0A, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x04, 0x04, 0x00, 0x04, 0x07, 0x00, 0x0A, 0x04, 0x00, 0x31, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCC9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x1E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x04, 0x02, 0x00, 0x04, 0x1E, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x04, 0x79, 0x00, 0x04, 0x09, 0x00, 0x04, 0x09, 0x00, 0x0A, 0x79, 0x00, 0x0A, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCCFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0xB9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x39, 0x00, 0x0A, 0x09, 0x00, 0x31, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x98, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x05, 0x04, 0x00, 0x18, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x07, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0E, 0x38, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCD9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x07, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x09, 0x00, 0x05, 0x09, 0x00, 0x18, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCDFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x05, 0x02, 0x00, 0x18, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x0A, 0x02, 0x00, 0x31, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCE9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x87, 0x00, 0x3F, 0x84, 0x00, 0x01, 0x04, 0x00, 0x01, 0x07, 0x00, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x30, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x87, 0x00, 0x00, 0x84, 0x00, 0x3F, 0x87, 0x00, 0x01, 0x04, 0x00, 0x06, 0x04, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x01, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCECA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCECB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCECC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCECD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCECE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCECF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCED9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x89, 0x00, 0x3F, 0x8F, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCEFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xF9, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x01, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x9E, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0xF9, 0x00, 0x3F, 0x89, 0x00, 0x01, 0x09, 0x00, 0x01, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x09, 0x00, 0x08, 0x09, 0x00, 0x30, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x89, 0x00, 0x3F, 0xB9, 0x00, 0x01, 0x09, 0x00, 0x06, 0x09, 0x00, 0x18, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF66, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x84, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x1F, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x1F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF97, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCF9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFCF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFDC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFDF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x02, 0x24, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xCFFF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD001, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD002, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD003, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD004, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD005, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD006, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD007, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD008, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD009, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD00A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD00B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD00C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD00D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD00E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD00F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD010, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD011, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD012, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD013, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD014, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD015, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD016, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD017, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD018, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x49, 0x00, 0x00, 0x49, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD019, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD01A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD01B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD01C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD01D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD01E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD01F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD023, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD024, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD027, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD028, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD029, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD02A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD02B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD02C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD02D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD02E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD02F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD031, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x1F, 0x89, 0x00, 0x00, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD037, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD038, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD03A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD03B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD03C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD03D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD03E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD03F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD040, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD042, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD046, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD048, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD04A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD04B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD04C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD04D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD04E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD04F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD051, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD052, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD053, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD054, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD055, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD056, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD057, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD058, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD059, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD05A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD05B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD05C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD05D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD05E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD05F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD060, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD061, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD062, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD064, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD066, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD068, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD069, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD06A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD06B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD06C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD06D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD06E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD06F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD070, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD071, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD072, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD073, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD07A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD07B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD07C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD07D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD07E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD07F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD080, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD082, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD083, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD084, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD085, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD086, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD087, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD088, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD089, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD08A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD08B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD08C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD08D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD08E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD08F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD090, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD091, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD092, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD093, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD094, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD095, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD096, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD097, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD098, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD099, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD09A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD09B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD09C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD09D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD09E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD09F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x1F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x08, 0x02, 0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x82, 0x00, 0x00, 0x82, 0x00, 0x3F, 0x82, 0x00, 0x01, 0x02, 0x00, 0x06, 0x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x87, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x8F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x04, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD0FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD100, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD101, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD102, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD106, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD108, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD10A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD10B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD10C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD10D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD10E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD10F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD112, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x3F, 0x84, 0x00, 0x20, 0x07, 0x00, 0x20, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD114, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD11A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD11B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD11C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD11D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD11E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD11F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD120, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD124, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD125, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD128, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD12A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD12B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD12C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD12D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD12E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD12F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x0F, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD130, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD134, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD139, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD13A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD13B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD13C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD13D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD13E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD13F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD143, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD147, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD14A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD14B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x9E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD14C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD14D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD14E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD14F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD150, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD151, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD152, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD154, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD156, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD158, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD159, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD15A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD15B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD15C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD15D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD15E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD15F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD160, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD164, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x3F, 0xF9, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD168, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD16A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD16B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD16C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD16D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD16E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD16F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD174, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD176, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD179, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD17A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD17B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD17C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD17D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD17E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD17F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD180, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD181, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x1E, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD184, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x09, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x79, 0x00, 0x20, 0x09, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD185, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD186, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD187, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD189, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD18A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD18B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD18C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD18D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD18E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD18F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD193, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD194, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD19A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD19B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD19C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD19D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD19E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD19F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x3F, 0x89, 0x00, 0x20, 0x39, 0x00, 0x20, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD1FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD204, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD20A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD20B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD20C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD20D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD20E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD20F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD210, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD214, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD216, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD21A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD21B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD21C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD21D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD21E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD21F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD221, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD226, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD22A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD22B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD22C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD22D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD22E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD22F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD230, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD231, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD232, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD233, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD234, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD235, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD236, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD238, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD239, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD23A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD23B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD23C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD23D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD23E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD23F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD240, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD241, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD242, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD243, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD244, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD245, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD246, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD247, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD248, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD249, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD24A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD24B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD24C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD24D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD24E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD24F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD250, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD251, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD253, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD255, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD256, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD257, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD258, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD259, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD25A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD25B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD25C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD25D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD25E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD25F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD26A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD26B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD26C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD26D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD26E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD26F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD27A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD27B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD27C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD27D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD27E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD27F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD281, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD284, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD287, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD288, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD289, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD28A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD28B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD28C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD28D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD28E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD28F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD290, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD291, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD292, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD293, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD294, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD295, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD296, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD297, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD298, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD29A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD29B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD29C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD29D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD29E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD29F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x10, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD2FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD300, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD301, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD302, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD303, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD304, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD305, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD306, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD307, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD308, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD309, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD30A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD30B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD30C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x07, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD30D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD30E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD30F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD310, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD311, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD312, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD313, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD314, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD315, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD316, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD317, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD318, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD319, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD31A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD31B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD31C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD31D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD31E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD31F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD321, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD322, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD324, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD326, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x0F, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD329, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD32A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD32B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD32C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD32D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD32E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD32F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD330, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD334, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD335, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD336, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD337, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD33A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD33B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD33C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD33D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD33E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD33F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD340, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD341, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD342, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD343, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD344, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x09, 0x04, 0x00, 0x09, 0x07, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x09, 0x07, 0x00, 0x09, 0x04, 0x00, 0x09, 0x04, 0x00, 0x3F, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD345, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD346, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD347, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD348, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD349, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD34A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD34B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD34C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD34D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD34E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD34F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD350, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD351, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD352, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD353, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD354, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD355, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD356, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD357, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD358, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD359, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD35A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD35B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD35C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD35D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD35E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD35F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x11, 0x07, 0x00, 0x11, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD360, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x0F, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x0F, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD361, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD362, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD363, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD364, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD365, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD366, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD367, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD368, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD369, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD36A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD36B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD36C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD36D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD36E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD36F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD370, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD371, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD372, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD373, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD374, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD375, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD376, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD377, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD378, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD379, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD37A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD37B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x11, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD37C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x1E, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD37D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD37E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD37F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD380, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD381, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD382, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD383, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD385, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD386, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD387, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD388, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD389, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD38A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD38B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD38C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD38D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD38E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD38F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x79, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD39A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD39B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD39C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD39D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD39E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD39F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x09, 0x00, 0x11, 0x79, 0x00, 0x11, 0x09, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x09, 0x02, 0x00, 0x09, 0x1E, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x1E, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x11, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x09, 0x09, 0x00, 0x09, 0x79, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x09, 0x79, 0x00, 0x09, 0x09, 0x00, 0x09, 0x09, 0x00, 0x3F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x11, 0x39, 0x00, 0x11, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD3FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD400, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD402, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD403, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD407, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD40A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD40B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD40C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD40D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD40E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD40F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD410, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD411, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD414, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD415, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD419, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD41A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD41B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD41C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD41D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD41E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD41F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD420, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD421, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD423, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x1F, 0xC4, 0x00, 0x02, 0x04, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD424, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD425, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD427, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD428, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD42A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD42B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD42C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD42D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD42E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD42F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD430, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD432, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD435, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD437, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD439, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD43A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD43B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD43C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD43D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD43E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD43F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x04, 0x09, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD447, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD44A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD44B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD44C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD44D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD44E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD44F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD450, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD451, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD452, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD453, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD454, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD456, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD457, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD458, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD45A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD45B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD45C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD45D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD45E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD45F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD460, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD463, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD464, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD466, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD467, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD46A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD46B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD46C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD46D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD46E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD46F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD470, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD471, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD472, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD473, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD476, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD478, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD479, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD47A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD47B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD47C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD47D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD47E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD47F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD481, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD483, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD484, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD485, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD487, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD48A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD48B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD48C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD48D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD48E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD48F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD490, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD496, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD497, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD49A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD49B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD49C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD49D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD49E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD49F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x08, 0x89, 0x00, 0x1F, 0xC9, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD4FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD502, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD503, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD506, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD507, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD509, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD50A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD50B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD50C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD50D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD50E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD50F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD510, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD511, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD512, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD513, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD514, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD515, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD516, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD517, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD518, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD519, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD51A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD51B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD51C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD51D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD51E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD51F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD520, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD521, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD522, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD523, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD524, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD525, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD526, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD527, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD528, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD529, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD52A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD52B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD52C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD52D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD52E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD52F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD534, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD535, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD536, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD537, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD538, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD539, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD53A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD53B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x1F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD53C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0x02, 0x00, 0x3F, 0xC2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD53D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD53E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD53F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD540, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD541, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD542, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD543, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD545, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD546, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD547, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD548, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD549, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD54A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD54B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD54C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD54D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD54E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD54F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD551, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD552, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD553, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD554, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD555, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD556, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD557, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD558, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x0E, 0x07, 0x00, 0x11, 0x04, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x11, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD559, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD55A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD55B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD55C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD55D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD55E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD55F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD560, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD561, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD562, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD563, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD564, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD565, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD566, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD567, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD568, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD569, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD56A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD56B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD56C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD56D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD56E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD56F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD570, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD571, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD572, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD573, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x07, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD574, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x0F, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD575, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD576, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD579, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD57A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD57B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD57C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD57D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD57E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD57F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD580, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD584, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD586, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD587, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD588, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD589, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD58A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD58B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD58C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD58D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD58E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD58F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x0F, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD590, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x0E, 0x04, 0x00, 0x11, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x11, 0x04, 0x00, 0x0E, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD591, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD592, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD593, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD594, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD595, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD596, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD597, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD598, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD599, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD59A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD59B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD59C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD59D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD59E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD59F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x3F, 0x84, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x04, 0x00, 0x20, 0x87, 0x00, 0x20, 0x84, 0x00, 0x1F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x0E, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x0F, 0x00, 0x1F, 0x09, 0x00, 0x20, 0x8F, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x1E, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x11, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x1E, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x0E, 0x79, 0x00, 0x11, 0x09, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD5FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x79, 0x00, 0x20, 0x89, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD600, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x0E, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x11, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD601, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD602, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD603, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD604, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD605, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD606, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD607, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD608, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD609, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD60A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD60B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD60C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD60D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD60E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD60F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD610, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD611, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD612, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD613, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD614, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD615, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD616, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD617, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD618, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD619, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD61A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD61B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x1E, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x9E, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD61C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x79, 0x00, 0x0E, 0x09, 0x00, 0x11, 0x09, 0x00, 0x20, 0xF9, 0x00, 0x20, 0x89, 0x00, 0x11, 0x09, 0x00, 0x0E, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD61D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD61E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD61F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD620, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD621, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD622, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD623, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD624, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD625, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD626, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD627, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD628, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD629, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD62A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD62B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD62C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD62D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD62E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD62F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD630, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD631, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD632, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD633, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD634, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD635, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD636, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD637, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x09, 0x00, 0x3F, 0x89, 0x00, 0x00, 0x39, 0x00, 0x1F, 0x09, 0x00, 0x20, 0xB9, 0x00, 0x20, 0x89, 0x00, 0x1F, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD638, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD639, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD63A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD63B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD63C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD63D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD63E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD63F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD640, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD641, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD642, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD643, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD644, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD645, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD646, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD647, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD648, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD649, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD64A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD64B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD64C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD64D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD64E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD64F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD650, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD651, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD652, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD653, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD654, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x0F, 0x84, 0x00, 0x10, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x02, 0x04, 0x00, 0x02, 0x04, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD655, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD656, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD657, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD658, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD659, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD65A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD65B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD65C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD65D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD65E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD65F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD660, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD661, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD662, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD663, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD664, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD665, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD666, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD667, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD668, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD669, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD66A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD66B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD66C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD66D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD66E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD66F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x08, 0x84, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x84, 0x00, 0x02, 0x07, 0x00, 0x3F, 0xF4, 0x00, 0x00, 0x04, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD670, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x07, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x02, 0x0F, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD671, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD672, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD673, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD674, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD675, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD676, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD677, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD678, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD679, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD67A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD67B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD67C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD67D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD67E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD67F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD680, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD681, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD682, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD683, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD684, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD685, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD686, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD687, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD688, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD689, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD68A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD68B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x04, 0x0F, 0x00, 0x3F, 0xE9, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD68C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD68D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD68E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD68F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD690, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD691, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD692, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD693, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD694, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD695, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD696, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD697, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD698, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD699, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD69A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD69B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD69C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD69D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD69E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD69F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x02, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xFC, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0xBC, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xC4, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0x88, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xB8, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x84, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x04, 0x90, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xE2, 0x00, 0x02, 0x1E, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x07, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x0F, 0x89, 0x00, 0x10, 0x49, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD6FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD700, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD701, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD702, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD703, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD704, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD705, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD706, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD707, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD708, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD709, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD70A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD70B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD70C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD70D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD70E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD70F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD710, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD711, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD712, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD713, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD714, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD715, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD716, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD717, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x89, 0x00, 0x00, 0x09, 0x00, 0x1F, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x10, 0x49, 0x00, 0x0F, 0x89, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x79, 0x00, 0x02, 0x09, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD718, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD719, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD71A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD71B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD71C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD71D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD71E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD71F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD720, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD721, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD722, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD723, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD724, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD725, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD726, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD727, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD728, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD729, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD72A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD72B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD72C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD72D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD72E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD72F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD730, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD731, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD732, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD733, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x3F, 0xFA, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD734, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD735, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD736, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD737, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD738, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x0A, 0x20, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD739, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD73A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD73B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD73C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD73D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD73E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD73F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x64, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD740, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x28, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD741, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD742, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD743, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD744, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD745, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0x24, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD746, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x12, 0xA8, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD747, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x02, 0xA0, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD748, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x06, 0x30, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD749, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD74A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD74B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD74C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD74D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD74E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD74F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x02, 0x20, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD750, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD751, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD752, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD753, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x14, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD754, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD755, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD756, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x10, 0x7E, 0x00, 0x10, 0x24, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD757, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD758, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD759, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x04, 0x00, 0x1F, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD75A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x44, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD75B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x44, 0x00, 0x01, 0x44, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD75C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x01, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x10, 0x14, 0x00, 0x0F, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD75D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x40, 0x00, 0x1F, 0x7C, 0x00, 0x10, 0x40, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD75E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x01, 0x28, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x28, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD75F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x38, 0x00, 0x01, 0x7C, 0x00, 0x1F, 0x28, 0x00, 0x10, 0x44, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD760, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD761, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD762, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x10, 0x88, 0x00, 0x10, 0x88, 0x00, 0x1F, 0x88, 0x00, 0x10, 0x94, 0x00, 0x0F, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD763, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x03, 0x60, 0x00, 0x04, 0x10, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD764, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0A, 0x28, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD765, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD766, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD767, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0x40, 0x00, 0x06, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD768, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD769, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD76A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD76B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD76C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x0F, 0x82, 0x00, 0x10, 0x42, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD76D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD76E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD76F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD770, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD771, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD772, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD773, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD774, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD775, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD776, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD777, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD778, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD779, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD77A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD77B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD77C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD77D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD77E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD77F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD780, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD781, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD782, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD783, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD784, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD785, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD786, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD787, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0xC2, 0x00, 0x08, 0x82, 0x00, 0x10, 0x42, 0x00, 0x0F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xFA, 0x00, 0x00, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD788, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x11, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x11, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD789, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD78A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD78B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD78C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD78D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD78E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x00, 0x04, 0x1F, 0x00, 0x04, 0x0A, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD78F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD790, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD791, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x42, 0x00, 0x07, 0xC2, 0x00, 0x04, 0x02, 0x00, 0x03, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD792, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x52, 0x00, 0x07, 0xD2, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD793, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD2, 0x00, 0x00, 0x52, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x12, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD794, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC4, 0x00, 0x00, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x0A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD795, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDE, 0x00, 0x00, 0x50, 0x00, 0x07, 0xDE, 0x00, 0x04, 0x10, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD796, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x94, 0x00, 0x07, 0x94, 0x00, 0x04, 0x14, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD797, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCE, 0x00, 0x00, 0x5F, 0x00, 0x07, 0xCA, 0x00, 0x04, 0x11, 0x00, 0x03, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD798, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD799, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD79A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x07, 0xC4, 0x00, 0x04, 0x4A, 0x00, 0x03, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD79B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD79C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x02, 0x8A, 0x00, 0x04, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD79D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x02, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD79E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD79F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x50, 0x00, 0x00, 0x88, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD7A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD7A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD7A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xD7A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x3F, 0x82, 0x00, 0x00, 0x02, 0x00, 0x1F, 0x02, 0x00, 0x20, 0x82, 0x00, 0x20, 0x82, 0x00, 0x1F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x01, 0x04, 0x00, 0x02, 0x02, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF900, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF901, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x04, 0x80, 0x00, 0x03, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x0C, 0x3F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF902, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF903, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF904, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x01, 0x3E, 0x00, 0x21, 0x22, 0x00, 0x17, 0xFF, 0x80, 0x04, 0x00, 0x80, 0x01, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x11, 0x02, 0x00, 0x11, 0x02, 0x00, 0x21, 0x02, 0x00, 0x21, 0x0E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF905, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF906, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x20, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x07, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF907, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x31, 0x42, 0x00, 0x1F, 0x7E, 0x00, 0x3D, 0x40, 0x00, 0x05, 0x7F, 0x00, 0x3F, 0xE3, 0x00, 0x05, 0x55, 0x00, 0x3D, 0x5D, 0x00, 0x05, 0x63, 0x00, 0x3F, 0x7F, 0x00, 0x05, 0x40, 0x00, 0x3D, 0x40, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF908, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x08, 0x20, 0x00, 0x1F, 0xFE, 0x00, 0x31, 0x42, 0x00, 0x1F, 0x7E, 0x00, 0x3D, 0x40, 0x00, 0x05, 0x7F, 0x00, 0x3F, 0xE3, 0x00, 0x05, 0x55, 0x00, 0x3D, 0x5D, 0x00, 0x05, 0x63, 0x00, 0x3F, 0x7F, 0x00, 0x05, 0x40, 0x00, 0x3D, 0x40, 0x80, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF909, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x09, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x0F, 0xA1, 0x00, 0x34, 0x46, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF90A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x04, 0x44, 0x00, 0x02, 0x48, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF90B, { 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x38, 0x85, 0x00, 0x2F, 0xF5, 0x00, 0x28, 0x85, 0x00, 0x2B, 0xE5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2A, 0xA5, 0x00, 0x2B, 0xE5, 0x00, 0x38, 0x85, 0x00, 0x29, 0xC5, 0x00, 0x02, 0xA5, 0x00, 0x04, 0x91, 0x00, 0x08, 0x81, 0x00, 0x10, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF90C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x37, 0xFD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF90D, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x4F, 0x80, 0x0A, 0x42, 0x80, 0x0B, 0xF4, 0x80, 0x2A, 0x45, 0x80, 0x29, 0xF8, 0x00, 0x29, 0x57, 0x80, 0x09, 0x54, 0x80, 0x09, 0x57, 0x80, 0x09, 0xF4, 0x80, 0x08, 0xC7, 0x80, 0x08, 0xE4, 0x80, 0x09, 0x57, 0x80, 0x09, 0x40, 0x00, 0x0A, 0x45, 0x00, 0x08, 0x48, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF90E, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x9F, 0x00, 0x2B, 0xE5, 0x00, 0x18, 0x89, 0x00, 0x0B, 0xF6, 0x00, 0x0A, 0xAF, 0x00, 0x1A, 0xA9, 0x00, 0x2B, 0xEF, 0x00, 0x08, 0x89, 0x00, 0x09, 0xCF, 0x00, 0x11, 0xA9, 0x00, 0x12, 0x8F, 0x00, 0x14, 0x85, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF90F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12, 0x00, 0x05, 0x24, 0x00, 0x19, 0x7F, 0x80, 0x0E, 0xA4, 0x00, 0x04, 0x3F, 0x80, 0x3F, 0xA4, 0x00, 0x04, 0xBF, 0x80, 0x15, 0x24, 0x00, 0x15, 0x24, 0x00, 0x15, 0x3F, 0x80, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF910, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x0A, 0x48, 0x00, 0x32, 0xFF, 0x00, 0x1D, 0x48, 0x00, 0x09, 0x7F, 0x00, 0x3F, 0xC8, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF911, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x2A, 0xFF, 0x80, 0x2A, 0x12, 0x00, 0x2A, 0x92, 0x00, 0x3E, 0x64, 0x00, 0x08, 0x29, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x08, 0x80, 0x0A, 0x2A, 0x00, 0x0F, 0x49, 0x00, 0x31, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF912, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x05, 0x49, 0x00, 0x0A, 0x7F, 0x00, 0x1C, 0x08, 0x00, 0x2C, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x08, 0x1C, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x4A, 0x00, 0x08, 0x89, 0x00, 0x09, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF913, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x03, 0xFF, 0x00, 0x21, 0x0A, 0x00, 0x11, 0x54, 0x00, 0x06, 0xBF, 0x00, 0x03, 0x54, 0x00, 0x31, 0x3F, 0x00, 0x1F, 0xF4, 0x00, 0x11, 0x1F, 0x00, 0x15, 0x54, 0x00, 0x15, 0x5F, 0x00, 0x19, 0x10, 0x00, 0x27, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF914, { 0x00, 0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x11, 0xE9, 0x00, 0x35, 0x39, 0x00, 0x0D, 0xE6, 0x00, 0x09, 0x24, 0x80, 0x17, 0xEB, 0x80, 0x3A, 0x1C, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF915, { 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x10, 0x20, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x41, 0x00, 0x20, 0xA2, 0x00, 0x11, 0x14, 0x00, 0x02, 0x08, 0x00, 0x08, 0x16, 0x00, 0x08, 0x21, 0x80, 0x08, 0xC0, 0x00, 0x17, 0x7F, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x20, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF916, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x3F, 0x80, 0x09, 0x21, 0x00, 0x2A, 0x52, 0x00, 0x2C, 0x8C, 0x00, 0x29, 0x0C, 0x00, 0x08, 0x12, 0x00, 0x08, 0x21, 0x80, 0x08, 0xC0, 0x00, 0x0B, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x14, 0x41, 0x00, 0x14, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x20, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF917, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x7F, 0x00, 0x08, 0x42, 0x00, 0x08, 0xA4, 0x00, 0x08, 0x94, 0x00, 0x09, 0x08, 0x00, 0x3E, 0x16, 0x00, 0x08, 0x21, 0x80, 0x08, 0xC0, 0x00, 0x0B, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF918, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x3F, 0x00, 0x20, 0x42, 0x00, 0x10, 0xA4, 0x00, 0x05, 0x18, 0x00, 0x06, 0x34, 0x00, 0x08, 0xC3, 0x80, 0x0B, 0xFE, 0x00, 0x10, 0x82, 0x00, 0x10, 0x82, 0x00, 0x20, 0xFE, 0x00, 0x20, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF919, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x0A, 0x3F, 0x80, 0x0A, 0x21, 0x00, 0x0A, 0x52, 0x00, 0x3F, 0x8C, 0x00, 0x2A, 0x8C, 0x00, 0x2A, 0x92, 0x00, 0x33, 0xA1, 0x00, 0x20, 0xC0, 0x80, 0x20, 0xBF, 0x00, 0x3F, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x20, 0xA1, 0x00, 0x3F, 0xBF, 0x00, 0x20, 0xA1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF91A, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x28, 0x3F, 0x80, 0x28, 0x21, 0x00, 0x3E, 0x52, 0x00, 0x28, 0x8C, 0x00, 0x28, 0x0C, 0x00, 0x3E, 0x12, 0x00, 0x28, 0x21, 0x80, 0x28, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x25, 0x21, 0x00, 0x0B, 0x21, 0x00, 0x15, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x2C, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF91B, { 0x00, 0x00, 0x00, 0x03, 0x90, 0x00, 0x3C, 0x10, 0x00, 0x04, 0x90, 0x00, 0x12, 0x50, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xD0, 0x00, 0x08, 0x90, 0x00, 0x05, 0x10, 0x00, 0x3F, 0xD0, 0x00, 0x22, 0x50, 0x00, 0x24, 0x50, 0x00, 0x29, 0x50, 0x00, 0x3F, 0x50, 0x80, 0x20, 0xD0, 0x80, 0x20, 0x50, 0x80, 0x20, 0xDF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF91C, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x1F, 0x80, 0x10, 0x10, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x14, 0x94, 0x80, 0x12, 0x92, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x10, 0x90, 0x80, 0x17, 0x90, 0x80, 0x39, 0x10, 0x80, 0x01, 0x13, 0x00, 0x02, 0x10, 0x00, 0x04, 0x10, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF91D, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x0A, 0xF7, 0x80, 0x2A, 0x94, 0x80, 0x2A, 0xF7, 0x80, 0x28, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xBE, 0x80, 0x08, 0x9C, 0x80, 0x08, 0xAA, 0x80, 0x08, 0xC9, 0x80, 0x08, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF91E, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xF7, 0x80, 0x08, 0x94, 0x80, 0x0A, 0xF7, 0x80, 0x0A, 0x94, 0x80, 0x2A, 0xF7, 0x80, 0x28, 0x88, 0x80, 0x28, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0xBE, 0x80, 0x08, 0xAA, 0x80, 0x14, 0xBE, 0x80, 0x14, 0x9C, 0x80, 0x12, 0xAA, 0x80, 0x22, 0xC9, 0x80, 0x20, 0x89, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF91F, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x5F, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x49, 0x00, 0x13, 0xF9, 0x00, 0x10, 0xE1, 0x00, 0x11, 0x5D, 0x00, 0x16, 0x47, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF920, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x0A, 0x04, 0x00, 0x32, 0xF9, 0x00, 0x14, 0x09, 0x00, 0x09, 0xF6, 0x00, 0x3F, 0x1F, 0x80, 0x2A, 0xEA, 0x80, 0x2A, 0xEA, 0x80, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x24, 0x80, 0x22, 0x25, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF921, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x10, 0x04, 0x00, 0x10, 0xF4, 0x00, 0x17, 0x84, 0x00, 0x10, 0x84, 0x00, 0x17, 0xF4, 0x00, 0x14, 0x94, 0x00, 0x17, 0xF4, 0x00, 0x10, 0x94, 0x00, 0x10, 0xFA, 0x80, 0x2F, 0x05, 0x80, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF922, { 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x13, 0xF4, 0x00, 0x02, 0x2F, 0x80, 0x03, 0xF0, 0x00, 0x22, 0x10, 0x00, 0x13, 0xF0, 0x00, 0x02, 0x20, 0x00, 0x0B, 0xF7, 0x80, 0x0A, 0x00, 0x00, 0x08, 0x00, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x11, 0x29, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF923, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x08, 0x00, 0x3F, 0x88, 0x00, 0x24, 0x10, 0x00, 0x3F, 0x1F, 0x00, 0x21, 0x20, 0x00, 0x3F, 0x40, 0x00, 0x24, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x20, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF924, { 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x09, 0xF2, 0x00, 0x09, 0x24, 0x00, 0x3F, 0xF7, 0x80, 0x03, 0x18, 0x00, 0x05, 0xF0, 0x00, 0x09, 0x20, 0x00, 0x0B, 0xF7, 0x80, 0x1C, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF925, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x08, 0x02, 0x00, 0x08, 0x82, 0x00, 0x08, 0x84, 0x00, 0x0E, 0x44, 0x00, 0x38, 0x44, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x08, 0x00, 0x0B, 0xFF, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF926, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x49, 0x00, 0x14, 0x92, 0x00, 0x14, 0x49, 0x00, 0x14, 0x10, 0x00, 0x1D, 0xFF, 0x00, 0x15, 0x2B, 0x00, 0x15, 0x55, 0x00, 0x15, 0xFF, 0x00, 0x1D, 0x12, 0x00, 0x15, 0xDE, 0x00, 0x15, 0x12, 0x00, 0x15, 0xDE, 0x00, 0x15, 0x12, 0x80, 0x25, 0xDF, 0x80, 0x2F, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF927, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x49, 0x00, 0x08, 0x92, 0x00, 0x3E, 0x49, 0x00, 0x2A, 0x10, 0x00, 0x2A, 0x20, 0x00, 0x2A, 0xFF, 0x00, 0x2A, 0x95, 0x00, 0x2A, 0xA9, 0x00, 0x3E, 0xFF, 0x00, 0x08, 0x92, 0x00, 0x08, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x31, 0xDE, 0x80, 0x03, 0x33, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF928, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x80, 0x00, 0x11, 0x00, 0x00, 0x17, 0xDF, 0x00, 0x14, 0x51, 0x00, 0x17, 0xD2, 0x00, 0x14, 0x52, 0x00, 0x17, 0xD1, 0x00, 0x15, 0x11, 0x00, 0x14, 0x91, 0x00, 0x14, 0x91, 0x00, 0x25, 0xD6, 0x00, 0x2E, 0x30, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF929, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x0F, 0x80, 0x1F, 0x88, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x1F, 0x8F, 0x80, 0x10, 0x88, 0x80, 0x10, 0x88, 0x80, 0x1F, 0x88, 0x80, 0x12, 0x0F, 0x80, 0x12, 0x48, 0x80, 0x11, 0x88, 0x80, 0x11, 0x08, 0x80, 0x17, 0x90, 0x80, 0x38, 0x50, 0x80, 0x00, 0x23, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF92A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x20, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x21, 0x02, 0x00, 0x11, 0xFE, 0x00, 0x01, 0x02, 0x00, 0x09, 0x02, 0x00, 0x09, 0xFE, 0x00, 0x09, 0x11, 0x00, 0x11, 0x12, 0x00, 0x11, 0x0C, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7C, 0x00, 0x27, 0x82, 0x00, 0x20, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF92B, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x24, 0x20, 0x00, 0x18, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x1C, 0x82, 0x00, 0x24, 0xFE, 0x00, 0x04, 0x82, 0x00, 0x04, 0x82, 0x00, 0x0C, 0xFE, 0x00, 0x0C, 0x91, 0x00, 0x14, 0x92, 0x00, 0x24, 0x8C, 0x00, 0x04, 0x88, 0x00, 0x04, 0xFC, 0x00, 0x0B, 0x82, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF92C, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1F, 0x9F, 0x00, 0x10, 0x91, 0x00, 0x10, 0x91, 0x00, 0x1F, 0x92, 0x00, 0x10, 0x91, 0x00, 0x10, 0x90, 0x80, 0x1F, 0x90, 0x80, 0x12, 0x50, 0x80, 0x12, 0x90, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x1E, 0x97, 0x00, 0x30, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF92D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x04, 0x44, 0x00, 0x0A, 0x4A, 0x00, 0x11, 0x51, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF92E, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x28, 0x00, 0x08, 0x44, 0x00, 0x00, 0x82, 0x00, 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x21, 0x00, 0x10, 0x26, 0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF92F, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x12, 0x54, 0x80, 0x12, 0x95, 0x00, 0x22, 0x24, 0x00, 0x05, 0x0A, 0x00, 0x18, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x06, 0x02, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF930, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x2F, 0x00, 0x09, 0xF0, 0x00, 0x09, 0x3F, 0x80, 0x0B, 0x7F, 0x00, 0x0D, 0x49, 0x00, 0x39, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x09, 0x7F, 0x00, 0x0A, 0x11, 0x00, 0x1A, 0x66, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF931, { 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x7E, 0x00, 0x08, 0x84, 0x00, 0x09, 0xFF, 0x00, 0x3F, 0x91, 0x00, 0x08, 0xFF, 0x00, 0x1C, 0x91, 0x00, 0x1A, 0xFF, 0x00, 0x28, 0xA9, 0x00, 0x29, 0x14, 0x80, 0x28, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF932, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x1F, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x0B, 0x17, 0x00, 0x2D, 0xF8, 0x00, 0x29, 0x1F, 0x80, 0x29, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x11, 0x55, 0x00, 0x22, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF933, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBC, 0x80, 0x1F, 0xC1, 0x00, 0x10, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF934, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x41, 0x00, 0x00, 0x42, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x48, 0x00, 0x00, 0x50, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x1E, 0x00, 0x33, 0xE0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF935, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x50, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xBC, 0x80, 0x1F, 0xC1, 0x00, 0x10, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF936, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x9C, 0x80, 0x1F, 0xE1, 0x00, 0x10, 0x7F, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x20, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0xC1, 0x00, 0x27, 0x06, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF937, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x10, 0x00, 0x11, 0x1F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x54, 0x00, 0x04, 0x8C, 0x00, 0x04, 0x12, 0x00, 0x04, 0x21, 0x80, 0x17, 0x60, 0x00, 0x14, 0xBF, 0x00, 0x14, 0x21, 0x00, 0x14, 0x21, 0x00, 0x17, 0xA1, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF938, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x2F, 0x5E, 0x80, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x22, 0x00, 0x1F, 0x54, 0x00, 0x04, 0x0C, 0x00, 0x17, 0x13, 0x80, 0x14, 0x3E, 0x00, 0x17, 0x52, 0x00, 0x38, 0x92, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF939, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x18, 0x42, 0x00, 0x2F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x11, 0x00, 0x10, 0x88, 0x80, 0x20, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF93A, { 0x00, 0x00, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x62, 0x00, 0x04, 0x9C, 0x00, 0x17, 0xA6, 0x00, 0x14, 0x3D, 0x80, 0x3F, 0x3C, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x48, 0x80, 0x21, 0x25, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF93B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0x90, 0x00, 0x04, 0x3F, 0x00, 0x04, 0x21, 0x00, 0x08, 0x42, 0x00, 0x08, 0x74, 0x00, 0x08, 0x8C, 0x00, 0x1F, 0x7F, 0x80, 0x19, 0x08, 0x00, 0x29, 0x49, 0x00, 0x29, 0x2A, 0x00, 0x09, 0x1C, 0x00, 0x09, 0x1C, 0x00, 0x09, 0x2A, 0x00, 0x0F, 0x49, 0x00, 0x09, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF93C, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x3F, 0x42, 0x00, 0x08, 0x74, 0x00, 0x08, 0x8C, 0x00, 0x2B, 0x7F, 0x80, 0x2A, 0x08, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF93D, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0x3F, 0x00, 0x22, 0x21, 0x00, 0x14, 0x42, 0x00, 0x08, 0x74, 0x00, 0x12, 0x8C, 0x00, 0x3F, 0x7F, 0x80, 0x09, 0x08, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x98, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF93E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x04, 0x00, 0x03, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x04, 0xE8, 0x00, 0x03, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF93F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x14, 0x10, 0x00, 0x22, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x00, 0x42, 0x00, 0x3E, 0x74, 0x00, 0x08, 0x8C, 0x00, 0x08, 0x7F, 0x80, 0x3F, 0x08, 0x00, 0x08, 0x49, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x1C, 0x00, 0x28, 0x1C, 0x00, 0x0E, 0x2A, 0x00, 0x30, 0xC9, 0x00, 0x03, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF940, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x08, 0x00, 0x12, 0x69, 0x80, 0x13, 0x8E, 0x00, 0x12, 0x08, 0x00, 0x12, 0x08, 0x80, 0x13, 0xE8, 0x80, 0x2E, 0x0F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF941, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x14, 0x00, 0x00, 0x22, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x80, 0x80, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x00, 0x55, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x55, 0x00, 0x12, 0x55, 0x00, 0x1E, 0x55, 0x00, 0x12, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF942, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x0A, 0x3F, 0x00, 0x3F, 0x81, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x3E, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x24, 0x80, 0x11, 0x3F, 0x80, 0x13, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF943, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF944, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x24, 0x00, 0x21, 0x42, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x24, 0x00, 0x1F, 0x3F, 0x00, 0x11, 0x24, 0x80, 0x13, 0x3F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF945, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x0A, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x1F, 0x01, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x24, 0x80, 0x13, 0x3F, 0x80, 0x1F, 0xFF, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x05, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF946, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x40, 0x80, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x10, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF947, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x12, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x08, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xBF, 0x00, 0x28, 0xD1, 0x00, 0x08, 0x91, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF948, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x10, 0x00, 0x12, 0x1F, 0x00, 0x12, 0x21, 0x00, 0x12, 0x22, 0x00, 0x1E, 0x54, 0x00, 0x12, 0x88, 0x00, 0x13, 0x16, 0x00, 0x12, 0x21, 0x80, 0x1E, 0x7F, 0x00, 0x12, 0xA1, 0x00, 0x13, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x22, 0x3F, 0x00, 0x26, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF949, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x2F, 0x5E, 0x80, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF94A, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x24, 0xA4, 0x80, 0x3F, 0xBF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF94B, { 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x01, 0x00, 0x0F, 0xFF, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0F, 0xFF, 0x80, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x0A, 0x22, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x11, 0x04, 0x00, 0x13, 0xE8, 0x00, 0x14, 0x3C, 0x00, 0x2B, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF94C, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x11, 0x00, 0x1D, 0xFF, 0x00, 0x1A, 0x10, 0x00, 0x39, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x28, 0x40, 0x00, 0x0F, 0xFF, 0x80, 0x09, 0x04, 0x00, 0x0B, 0xD8, 0x00, 0x08, 0x7C, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF94D, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x21, 0x00, 0x80, 0x11, 0x00, 0x80, 0x01, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x12, 0x22, 0x00, 0x22, 0x41, 0x00, 0x24, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF94E, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x03, 0xFF, 0x80, 0x0A, 0x10, 0x00, 0x0A, 0x10, 0x00, 0x0B, 0xFF, 0x00, 0x13, 0x15, 0x00, 0x13, 0x53, 0x00, 0x13, 0x31, 0x00, 0x15, 0x95, 0x00, 0x25, 0x53, 0x00, 0x29, 0x13, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF94F, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x80, 0x00, 0x09, 0x10, 0x00, 0x06, 0x20, 0x00, 0x02, 0x42, 0x00, 0x01, 0xBE, 0x00, 0x3F, 0xC1, 0x00, 0x00, 0x40, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF950, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x27, 0xFF, 0x80, 0x14, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x2A, 0x42, 0x00, 0x2A, 0xE4, 0x00, 0x08, 0x1C, 0x00, 0x08, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF951, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0x80, 0x24, 0x08, 0x00, 0x28, 0x08, 0x00, 0x29, 0x08, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x49, 0x00, 0x25, 0x49, 0x00, 0x25, 0x55, 0x00, 0x25, 0x63, 0x00, 0x25, 0x41, 0x00, 0x25, 0x41, 0x00, 0x25, 0x43, 0x00, 0x39, 0x00, 0x00, 0x21, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF952, { 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x11, 0x10, 0x00, 0x3F, 0x90, 0x00, 0x11, 0x10, 0x00, 0x1F, 0x7F, 0x00, 0x04, 0x11, 0x00, 0x3F, 0x91, 0x00, 0x24, 0x91, 0x00, 0x24, 0x91, 0x00, 0x3F, 0x91, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x3F, 0xA1, 0x00, 0x04, 0x21, 0x00, 0x04, 0x42, 0x00, 0x05, 0x8C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF953, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x11, 0x7F, 0x80, 0x1F, 0x08, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x11, 0x08, 0x80, 0x1F, 0x08, 0x80, 0x11, 0x10, 0x80, 0x11, 0x10, 0x80, 0x11, 0x20, 0x80, 0x11, 0x20, 0x80, 0x21, 0x41, 0x00, 0x27, 0x86, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF954, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x45, 0x00, 0x01, 0x7D, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x1E, 0x00, 0x09, 0xF0, 0x00, 0x10, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x10, 0x30, 0x00, 0x10, 0x58, 0x00, 0x21, 0x96, 0x00, 0x26, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF955, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x44, 0x00, 0x00, 0x44, 0x80, 0x08, 0x87, 0x80, 0x0B, 0x40, 0x00, 0x08, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x16, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x30, 0x00, 0x20, 0xCC, 0x00, 0x27, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF956, { 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x38, 0x10, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x44, 0x00, 0x1C, 0x84, 0x80, 0x1B, 0x07, 0x80, 0x2C, 0x40, 0x00, 0x28, 0xFE, 0x00, 0x29, 0x04, 0x00, 0x0A, 0x88, 0x00, 0x0C, 0x50, 0x00, 0x08, 0x30, 0x00, 0x08, 0xCC, 0x00, 0x09, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF957, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x22, 0x10, 0x00, 0x17, 0xFF, 0x80, 0x08, 0x24, 0x00, 0x12, 0x44, 0x80, 0x3E, 0x87, 0x80, 0x09, 0x20, 0x00, 0x2A, 0x7F, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0x84, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x6C, 0x00, 0x09, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF958, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x80, 0x06, 0x1F, 0x80, 0x38, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x02, 0x04, 0x00, 0x0D, 0x18, 0x00, 0x30, 0xE0, 0x00, 0x03, 0xB0, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF959, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7C, 0x10, 0x00, 0x45, 0xFF, 0x00, 0x44, 0x10, 0x00, 0x4B, 0xFF, 0x80, 0x48, 0x48, 0x00, 0x44, 0x48, 0x80, 0x44, 0x8F, 0x80, 0x47, 0x00, 0x00, 0x44, 0xFF, 0x00, 0x44, 0x42, 0x00, 0x44, 0x24, 0x00, 0x58, 0x18, 0x00, 0x40, 0x38, 0x00, 0x40, 0xC6, 0x00, 0x43, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF95A, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1E, 0xA2, 0x80, 0x00, 0xFF, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0x41, 0x00, 0x12, 0x7F, 0x00, 0x1E, 0x7F, 0x00, 0x12, 0xC1, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF95B, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x3F, 0xA2, 0x00, 0x11, 0x14, 0x00, 0x2A, 0x0C, 0x00, 0x06, 0x13, 0x80, 0x09, 0x60, 0x00, 0x30, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF95C, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x31, 0xF4, 0x00, 0x15, 0x19, 0x00, 0x0D, 0xF5, 0x00, 0x09, 0x12, 0x00, 0x17, 0xF5, 0x80, 0x3A, 0x1E, 0x80, 0x00, 0x44, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF95D, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x22, 0x00, 0x3F, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x1E, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x1E, 0x20, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xA1, 0x00, 0x1F, 0x21, 0x00, 0x12, 0x21, 0x00, 0x12, 0x21, 0x00, 0x1E, 0x3F, 0x00, 0x12, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF95E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x04, 0x84, 0x00, 0x04, 0x44, 0x00, 0x04, 0x24, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x04, 0x00, 0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF95F, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x0A, 0x42, 0x00, 0x0A, 0x05, 0x00, 0x13, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF960, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x3F, 0xA1, 0x00, 0x08, 0x92, 0x00, 0x11, 0x0C, 0x00, 0x2A, 0x0C, 0x00, 0x06, 0x12, 0x00, 0x09, 0x61, 0x00, 0x10, 0x80, 0x80, 0x22, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x82, 0x00, 0x14, 0x01, 0x00, 0x24, 0x04, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF961, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x09, 0x22, 0x00, 0x06, 0x24, 0x00, 0x01, 0x44, 0x00, 0x04, 0x92, 0x00, 0x09, 0x39, 0x00, 0x17, 0xC4, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF962, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x04, 0x02, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF963, { 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x11, 0x80, 0x3F, 0x16, 0x00, 0x01, 0x18, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x03, 0x10, 0x00, 0x0D, 0x10, 0x80, 0x31, 0x10, 0x80, 0x01, 0x1F, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF964, { 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3F, 0xF8, 0x00, 0x08, 0x91, 0x00, 0x08, 0x52, 0x00, 0x0B, 0xFF, 0x80, 0x10, 0x38, 0x00, 0x10, 0x54, 0x00, 0x3E, 0x92, 0x00, 0x33, 0x11, 0x80, 0x32, 0x10, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x12, 0xFF, 0x00, 0x12, 0x91, 0x00, 0x1E, 0xFF, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF965, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x19, 0x11, 0x00, 0x19, 0x11, 0x00, 0x29, 0xFF, 0x00, 0x29, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x90, 0x00, 0x08, 0x60, 0x00, 0x08, 0x30, 0x00, 0x08, 0xCC, 0x00, 0x0B, 0x03, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF966, { 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x04, 0x80, 0x00, 0x09, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x24, 0xFF, 0x00, 0x04, 0x81, 0x00, 0x08, 0xFF, 0x00, 0x18, 0x81, 0x00, 0x28, 0xFF, 0x00, 0x08, 0x20, 0x00, 0x08, 0x7F, 0x00, 0x08, 0xC2, 0x00, 0x0B, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x6C, 0x00, 0x0B, 0x83, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF967, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x48, 0x00, 0x02, 0x44, 0x00, 0x04, 0x42, 0x00, 0x08, 0x41, 0x00, 0x10, 0x40, 0x80, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF968, { 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x08, 0x42, 0x00, 0x00, 0x22, 0x00, 0x00, 0x02, 0x00, 0x20, 0x44, 0x00, 0x10, 0x44, 0x00, 0x01, 0x44, 0x00, 0x01, 0x48, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x50, 0x80, 0x08, 0x50, 0x80, 0x10, 0x60, 0x00, 0x10, 0x41, 0x00, 0x10, 0xC1, 0x00, 0x23, 0x7F, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF969, { 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1F, 0xC4, 0x00, 0x12, 0x48, 0x00, 0x3F, 0xEF, 0x80, 0x12, 0x51, 0x00, 0x1F, 0xE1, 0x00, 0x02, 0x51, 0x00, 0x1F, 0xD2, 0x00, 0x12, 0x4A, 0x00, 0x1F, 0xCA, 0x00, 0x0A, 0x04, 0x00, 0x3F, 0xE4, 0x00, 0x10, 0x8A, 0x00, 0x29, 0x0A, 0x00, 0x07, 0x11, 0x00, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF96A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x48, 0x80, 0x24, 0x88, 0x80, 0x03, 0x10, 0x00, 0x01, 0x21, 0x00, 0x00, 0xDF, 0x80, 0x3F, 0xE0, 0x80, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF96B, { 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x01, 0x04, 0x00, 0x02, 0x3E, 0x00, 0x1F, 0xC1, 0x00, 0x04, 0x08, 0x00, 0x09, 0x12, 0x00, 0x13, 0xA7, 0x00, 0x3C, 0xF8, 0x80, 0x01, 0x10, 0x00, 0x06, 0x4C, 0x00, 0x39, 0x93, 0x80, 0x06, 0x60, 0x00, 0x01, 0x86, 0x00, 0x0E, 0x18, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF96C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF96D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x42, 0x00, 0x04, 0x41, 0x00, 0x08, 0x44, 0x80, 0x10, 0x48, 0x80, 0x21, 0xD0, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x34, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF96E, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x09, 0x08, 0x00, 0x09, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x08, 0x00, 0x09, 0xF8, 0x00, 0x08, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF96F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1C, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x41, 0x00, 0x00, 0x80, 0x80, 0x01, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x14, 0x00, 0x1E, 0x14, 0x00, 0x12, 0x24, 0x00, 0x12, 0x44, 0x80, 0x1E, 0x87, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF970, { 0x00, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x0A, 0x22, 0x00, 0x04, 0x22, 0x00, 0x0A, 0x22, 0x80, 0x11, 0x23, 0x80, 0x20, 0x40, 0x00, 0x04, 0x80, 0x00, 0x04, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x21, 0x00, 0x0E, 0x12, 0x00, 0x0D, 0x14, 0x00, 0x14, 0x08, 0x00, 0x24, 0x14, 0x00, 0x04, 0x62, 0x00, 0x05, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF971, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x10, 0x00, 0x12, 0x11, 0x00, 0x12, 0x0A, 0x00, 0x12, 0x0C, 0x00, 0x12, 0x04, 0x00, 0x12, 0xFA, 0x00, 0x2F, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF972, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x12, 0x10, 0x80, 0x02, 0x30, 0x80, 0x08, 0x30, 0x00, 0x08, 0x30, 0x00, 0x08, 0x30, 0x00, 0x08, 0x50, 0x00, 0x10, 0x50, 0x00, 0x10, 0x90, 0x00, 0x10, 0x90, 0x80, 0x21, 0x1F, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF973, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x08, 0x44, 0x00, 0x3E, 0x82, 0x00, 0x09, 0x01, 0x00, 0x0A, 0xFE, 0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x38, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x18, 0x82, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF974, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x02, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x32, 0x02, 0x00, 0x02, 0x02, 0x00, 0x03, 0xFE, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF975, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x0E, 0x41, 0x00, 0x38, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF976, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x82, 0x00, 0x2B, 0x44, 0x00, 0x2A, 0x28, 0x00, 0x2A, 0x18, 0x00, 0x3E, 0x26, 0x00, 0x2A, 0xC1, 0x80, 0x2B, 0x7E, 0x00, 0x2A, 0x42, 0x00, 0x2A, 0x42, 0x00, 0x3E, 0x42, 0x00, 0x22, 0x42, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF977, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x21, 0x10, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x1F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF978, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x16, 0x59, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x15, 0x55, 0x00, 0x18, 0xE3, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x43, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF979, { 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x10, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x10, 0x92, 0x00, 0x11, 0x11, 0x00, 0x12, 0x10, 0x80, 0x20, 0x10, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF97A, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x00, 0x12, 0x00, 0x20, 0x13, 0x00, 0x10, 0xAA, 0x80, 0x05, 0x26, 0x80, 0x08, 0x42, 0x80, 0x08, 0x9C, 0x00, 0x13, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF97B, { 0x00, 0x00, 0x00, 0x04, 0x7F, 0x00, 0x25, 0x41, 0x00, 0x15, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x3F, 0xFF, 0x00, 0x04, 0x00, 0x00, 0x0C, 0xFF, 0x80, 0x0E, 0x7F, 0x00, 0x15, 0x49, 0x00, 0x14, 0x7F, 0x00, 0x14, 0x49, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x04, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF97C, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x80, 0x00, 0x08, 0x42, 0x00, 0x08, 0x24, 0x00, 0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x0F, 0xC6, 0x00, 0x38, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF97D, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x08, 0x00, 0x00, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1E, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1E, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x1E, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x12, 0x88, 0x80, 0x1E, 0x08, 0x00, 0x12, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF97E, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF97F, { 0x00, 0x00, 0x00, 0x1F, 0xF4, 0x00, 0x14, 0x44, 0x00, 0x1F, 0xF4, 0x00, 0x14, 0x44, 0x00, 0x17, 0xDF, 0x80, 0x15, 0x44, 0x80, 0x17, 0xC4, 0x80, 0x15, 0x44, 0x80, 0x17, 0xC4, 0x80, 0x11, 0x04, 0x80, 0x1F, 0xE4, 0x80, 0x19, 0x24, 0x80, 0x19, 0xE8, 0x80, 0x2E, 0x28, 0x80, 0x28, 0x30, 0x80, 0x28, 0x63, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF980, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF981, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0E, 0x10, 0x00, 0x11, 0xA0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x98, 0x00, 0x01, 0x04, 0x00, 0x06, 0x02, 0x00, 0x38, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF982, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x9C, 0x80, 0x17, 0xE1, 0x00, 0x10, 0xFF, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x22, 0x00, 0x13, 0xFE, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFF, 0x00, 0x24, 0x89, 0x00, 0x2F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF983, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x04, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x40, 0x00, 0x04, 0x03, 0x00, 0x07, 0x9C, 0x00, 0x04, 0x94, 0x80, 0x04, 0x95, 0x00, 0x04, 0x96, 0x00, 0x08, 0x94, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x9F, 0x00, 0x11, 0x71, 0x00, 0x26, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF984, { 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x08, 0x3E, 0x00, 0x00, 0x20, 0x00, 0x03, 0xFF, 0x80, 0x02, 0x2F, 0x00, 0x23, 0xF8, 0x80, 0x12, 0x3F, 0x80, 0x02, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x0A, 0xFE, 0x00, 0x0A, 0x92, 0x00, 0x12, 0xFE, 0x00, 0x12, 0x11, 0x00, 0x12, 0xA8, 0x80, 0x24, 0xA2, 0x80, 0x25, 0x3E, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF985, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x09, 0xFF, 0x80, 0x09, 0x22, 0x00, 0x11, 0x7F, 0x00, 0x11, 0x49, 0x00, 0x1D, 0x7F, 0x00, 0x35, 0x49, 0x00, 0x35, 0x7F, 0x00, 0x35, 0x08, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x8A, 0x80, 0x15, 0x9F, 0x80, 0x1D, 0xF0, 0x80, 0x16, 0x81, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF986, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x21, 0x21, 0x00, 0x3F, 0x3F, 0x00, 0x20, 0x01, 0x00, 0x23, 0xF1, 0x00, 0x22, 0x11, 0x00, 0x23, 0xF1, 0x00, 0x20, 0x81, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x27, 0xF9, 0x00, 0x24, 0x09, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF987, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x28, 0xF7, 0x80, 0x28, 0xB5, 0x80, 0x3E, 0xB5, 0x80, 0x28, 0x08, 0x00, 0x28, 0xFF, 0x80, 0x3E, 0x94, 0x00, 0x28, 0xFF, 0x00, 0x28, 0x95, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0xA4, 0x00, 0x16, 0xBF, 0x00, 0x0A, 0xA4, 0x00, 0x22, 0xBC, 0x80, 0x2D, 0x67, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF988, { 0x00, 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x15, 0x55, 0x00, 0x11, 0x51, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xDF, 0x00, 0x12, 0x10, 0x00, 0x13, 0xF0, 0x80, 0x2E, 0x1F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF989, { 0x00, 0x00, 0x00, 0x03, 0x10, 0x00, 0x1C, 0x10, 0x00, 0x04, 0x3F, 0x00, 0x3F, 0xA5, 0x00, 0x06, 0x49, 0x00, 0x0D, 0x91, 0x00, 0x14, 0x62, 0x00, 0x24, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x01, 0xD0, 0x00, 0x06, 0x4C, 0x00, 0x3A, 0x47, 0x80, 0x01, 0xE8, 0x00, 0x03, 0x58, 0x00, 0x0C, 0x46, 0x00, 0x30, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF98A, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x41, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x04, 0x01, 0x00, 0x08, 0x02, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF98B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0xC7, 0x00, 0x17, 0x3C, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x24, 0x80, 0x11, 0x04, 0x00, 0x13, 0xFE, 0x00, 0x12, 0x02, 0x00, 0x13, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x23, 0xFE, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF98C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0xC7, 0x00, 0x17, 0x3C, 0x00, 0x11, 0x04, 0x00, 0x1F, 0xFF, 0x80, 0x13, 0x8E, 0x00, 0x15, 0x55, 0x00, 0x19, 0x24, 0x80, 0x11, 0x04, 0x00, 0x10, 0x20, 0x00, 0x11, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x21, 0x20, 0x00, 0x2F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF98D, { 0x00, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x3E, 0xBD, 0x00, 0x09, 0x6D, 0x00, 0x3F, 0xEA, 0x00, 0x2A, 0xBA, 0x00, 0x2B, 0x6D, 0x80, 0x3F, 0xAE, 0x80, 0x2A, 0x38, 0x00, 0x2A, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x3E, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x0B, 0x11, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF98E, { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x20, 0x40, 0x00, 0x08, 0x40, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF98F, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x09, 0x11, 0x00, 0x08, 0x92, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x38, 0x00, 0x2A, 0x54, 0x00, 0x28, 0x92, 0x00, 0x2B, 0x11, 0x80, 0x09, 0x02, 0x00, 0x09, 0xFF, 0x00, 0x0A, 0x2A, 0x00, 0x0D, 0x4A, 0x00, 0x08, 0x8A, 0x00, 0x09, 0x3F, 0x80, 0x0A, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF990, { 0x00, 0x00, 0x00, 0x08, 0xE4, 0x00, 0x08, 0x04, 0x00, 0x15, 0xFA, 0x00, 0x24, 0x0A, 0x00, 0x18, 0xE4, 0x00, 0x12, 0xE9, 0x00, 0x3F, 0x1F, 0x00, 0x09, 0xE4, 0x80, 0x2A, 0xAD, 0x00, 0x2A, 0xF5, 0x00, 0x2A, 0x04, 0x00, 0x09, 0x44, 0x00, 0x02, 0x21, 0x00, 0x12, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF991, { 0x00, 0x00, 0x00, 0x08, 0x84, 0x00, 0x08, 0x85, 0x00, 0x08, 0xF4, 0x80, 0x3F, 0x24, 0x00, 0x09, 0xBF, 0x80, 0x0A, 0x44, 0x00, 0x0C, 0x4A, 0x00, 0x0A, 0x8A, 0x00, 0x0D, 0x11, 0x00, 0x3A, 0x21, 0x00, 0x08, 0x40, 0x80, 0x08, 0x00, 0x00, 0x09, 0x01, 0x00, 0x09, 0x25, 0x00, 0x0A, 0x24, 0x80, 0x1A, 0x24, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF992, { 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x12, 0xFF, 0x80, 0x00, 0x88, 0x80, 0x00, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x22, 0x7F, 0x00, 0x10, 0x49, 0x00, 0x07, 0x7F, 0x00, 0x09, 0x49, 0x00, 0x09, 0x7F, 0x00, 0x09, 0x08, 0x00, 0x11, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x88, 0x00, 0x22, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF993, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x0A, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x49, 0x00, 0x28, 0x6B, 0x00, 0x08, 0x5D, 0x00, 0x08, 0x49, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x0C, 0x00, 0x0C, 0x1C, 0x00, 0x12, 0x2A, 0x00, 0x12, 0x49, 0x00, 0x20, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF994, { 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x84, 0x00, 0x3E, 0x3F, 0x80, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x09, 0x3F, 0x80, 0x08, 0xA4, 0x80, 0x3E, 0x3F, 0x80, 0x08, 0x24, 0x80, 0x0B, 0xBF, 0x80, 0x08, 0x84, 0x00, 0x08, 0x84, 0x00, 0x0E, 0xBF, 0x80, 0x30, 0xC4, 0x00, 0x01, 0x3F, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF995, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x06, 0x4C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF996, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x12, 0x08, 0x00, 0x22, 0xFF, 0x80, 0x14, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x12, 0x49, 0x00, 0x3F, 0x6B, 0x00, 0x09, 0x5D, 0x00, 0x08, 0x7F, 0x00, 0x2A, 0x49, 0x00, 0x2A, 0x1C, 0x00, 0x2A, 0x2A, 0x00, 0x2A, 0x2A, 0x00, 0x08, 0x49, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF997, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x3F, 0x42, 0x00, 0x12, 0x94, 0x00, 0x13, 0x99, 0x00, 0x1E, 0xAA, 0x00, 0x12, 0x44, 0x00, 0x12, 0x99, 0x00, 0x1F, 0xFF, 0x80, 0x12, 0x00, 0x00, 0x12, 0x94, 0x80, 0x1E, 0x94, 0x80, 0x32, 0x94, 0x80, 0x02, 0xF7, 0x80, 0x02, 0x94, 0x80, 0x02, 0x24, 0x00, 0x02, 0xC4, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF998, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xBF, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x0A, 0x14, 0x00, 0x11, 0x22, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF999, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x00, 0x10, 0x00, 0x21, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF99A, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, 0x11, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x11, 0x00, 0x39, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x0C, 0x10, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF99B, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x08, 0x00, 0x22, 0x08, 0x00, 0x00, 0xFF, 0x80, 0x3E, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x6B, 0x00, 0x08, 0x5D, 0x00, 0x0A, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x1C, 0x00, 0x28, 0x2A, 0x00, 0x0F, 0x2A, 0x00, 0x38, 0x49, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF99C, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x11, 0x00, 0x3F, 0xF1, 0x00, 0x04, 0x11, 0x00, 0x04, 0x11, 0x00, 0x07, 0xD1, 0x00, 0x08, 0x51, 0x00, 0x08, 0x51, 0x00, 0x14, 0x91, 0x00, 0x22, 0x91, 0x00, 0x01, 0x11, 0x00, 0x01, 0x11, 0x00, 0x02, 0x11, 0x00, 0x04, 0x11, 0x00, 0x08, 0x01, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF99D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x42, 0x00, 0x04, 0x41, 0x00, 0x08, 0x40, 0x80, 0x10, 0x44, 0x00, 0x01, 0xC8, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x41, 0x00, 0x00, 0x81, 0x00, 0x01, 0x01, 0x00, 0x06, 0x02, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF99E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x3C, 0x80, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0xFF, 0x80, 0x24, 0x88, 0x80, 0x24, 0x88, 0x80, 0x24, 0x94, 0x80, 0x24, 0x94, 0x80, 0x24, 0xA2, 0x80, 0x3C, 0xC1, 0x80, 0x24, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF99F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xE8, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x07, 0xE8, 0x80, 0x04, 0x48, 0x80, 0x08, 0x48, 0x80, 0x14, 0x88, 0x80, 0x23, 0x08, 0x80, 0x02, 0x08, 0x80, 0x04, 0x08, 0x80, 0x08, 0x01, 0x80, 0x30, 0x00, 0x00, 0x04, 0x89, 0x00, 0x08, 0x44, 0x80, 0x10, 0x44, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9A0, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0xE9, 0x00, 0x04, 0x09, 0x00, 0x07, 0xC9, 0x00, 0x08, 0x89, 0x00, 0x35, 0x09, 0x00, 0x02, 0x09, 0x00, 0x0C, 0x43, 0x00, 0x30, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x20, 0x00, 0x03, 0x12, 0x00, 0x0D, 0x0C, 0x00, 0x31, 0x04, 0x00, 0x01, 0xF2, 0x00, 0x1E, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x3F, 0xA1, 0x00, 0x00, 0x41, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0x41, 0x00, 0x00, 0x41, 0x00, 0x1F, 0x41, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x24, 0x00, 0x1F, 0x24, 0x00, 0x11, 0x24, 0x80, 0x11, 0x44, 0x80, 0x1F, 0x47, 0x80, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9A2, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xE7, 0x00, 0x17, 0xB8, 0x00, 0x10, 0x90, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x90, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x92, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x92, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x98, 0x00, 0x21, 0x94, 0x00, 0x22, 0x92, 0x00, 0x2C, 0x91, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9A3, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x90, 0x00, 0x01, 0x08, 0x00, 0x02, 0x06, 0x00, 0x0D, 0xF9, 0x80, 0x30, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x90, 0x00, 0x02, 0x41, 0x00, 0x02, 0x25, 0x00, 0x12, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9A4, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x28, 0x00, 0x3E, 0x44, 0x00, 0x08, 0x82, 0x00, 0x0B, 0x01, 0x80, 0x08, 0xFC, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0xFC, 0x00, 0x38, 0x04, 0x00, 0x08, 0x48, 0x00, 0x08, 0x22, 0x00, 0x08, 0x91, 0x00, 0x0A, 0x84, 0x80, 0x0A, 0xFC, 0x80, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9A5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x94, 0x00, 0x08, 0x22, 0x00, 0x08, 0x41, 0x00, 0x08, 0xBE, 0x80, 0x1F, 0x00, 0x00, 0x12, 0x77, 0x00, 0x2A, 0x55, 0x00, 0x26, 0x55, 0x00, 0x04, 0x77, 0x00, 0x04, 0x00, 0x00, 0x08, 0x22, 0x00, 0x08, 0x22, 0x00, 0x10, 0x56, 0x00, 0x10, 0x99, 0x00, 0x21, 0x08, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9A6, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x14, 0x00, 0x21, 0x22, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x50, 0x00, 0x17, 0xFE, 0x00, 0x10, 0x52, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0xDA, 0x00, 0x17, 0xFE, 0x00, 0x20, 0xD8, 0x00, 0x23, 0x56, 0x00, 0x2C, 0x51, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9A7, { 0x00, 0x00, 0x00, 0x04, 0x49, 0x00, 0x24, 0x92, 0x00, 0x19, 0x24, 0x00, 0x08, 0x92, 0x00, 0x14, 0x49, 0x00, 0x25, 0xFF, 0x00, 0x05, 0x6D, 0x00, 0x05, 0xFF, 0x00, 0x0D, 0x12, 0x00, 0x0D, 0xDE, 0x00, 0x15, 0x12, 0x00, 0x25, 0x12, 0x00, 0x05, 0xDE, 0x80, 0x05, 0x12, 0x80, 0x05, 0xDD, 0x80, 0x1B, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9A8, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x18, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x20, 0xC1, 0x00, 0x21, 0x21, 0x00, 0x22, 0x19, 0x00, 0x24, 0x07, 0x00, 0x3B, 0xF1, 0x00, 0x20, 0x01, 0x00, 0x27, 0xF9, 0x00, 0x21, 0x09, 0x00, 0x21, 0x09, 0x00, 0x21, 0x19, 0x00, 0x21, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9AA, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x80, 0x80, 0x0A, 0x41, 0x00, 0x0A, 0x04, 0x80, 0x13, 0xFC, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x08, 0x91, 0x00, 0x08, 0x91, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9AB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0xFF, 0x80, 0x0A, 0x08, 0x00, 0x11, 0x3F, 0x00, 0x20, 0xA1, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x21, 0x00, 0x1F, 0x3F, 0x00, 0x09, 0x21, 0x00, 0x0B, 0x3F, 0x00, 0x08, 0x21, 0x00, 0x08, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9AC, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x18, 0x00, 0x08, 0x24, 0x00, 0x0A, 0x42, 0x00, 0x0A, 0x81, 0x00, 0x2B, 0x00, 0x80, 0x28, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x26, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9AD, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x22, 0x00, 0x08, 0x41, 0x00, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x21, 0x00, 0x0E, 0x21, 0x00, 0x38, 0x21, 0x00, 0x00, 0x26, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9AE, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x14, 0x94, 0x80, 0x15, 0x15, 0x00, 0x24, 0x24, 0x00, 0x0A, 0x0A, 0x00, 0x11, 0x11, 0x00, 0x20, 0xA0, 0x80, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x48, 0x00, 0x00, 0x44, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9AF, { 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x22, 0x14, 0x00, 0x14, 0x22, 0x00, 0x3F, 0x41, 0x00, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x0F, 0x21, 0x00, 0x38, 0x21, 0x00, 0x08, 0x21, 0x00, 0x08, 0x26, 0x00, 0x10, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9B0, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3F, 0x94, 0x00, 0x12, 0x22, 0x00, 0x12, 0x41, 0x00, 0x1E, 0x80, 0x80, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x00, 0x00, 0x12, 0x00, 0x00, 0x12, 0xFF, 0x00, 0x1E, 0x21, 0x00, 0x32, 0x21, 0x00, 0x02, 0x21, 0x00, 0x02, 0x26, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9B1, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x14, 0x14, 0x00, 0x22, 0x22, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x80, 0x80, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0A, 0xFF, 0x00, 0x2A, 0x21, 0x00, 0x2A, 0x21, 0x00, 0x28, 0x21, 0x00, 0x0F, 0x26, 0x00, 0x38, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x18, 0x00, 0x07, 0xF6, 0x00, 0x38, 0x01, 0x80, 0x07, 0xFC, 0x00, 0x01, 0x04, 0x00, 0x01, 0x18, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9B3, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x0F, 0x5E, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xEF, 0x00, 0x12, 0xA9, 0x00, 0x1E, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x06, 0x4C, 0x00, 0x09, 0x52, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9B4, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x20, 0x10, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x21, 0x00, 0x11, 0x21, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x11, 0x21, 0x00, 0x16, 0x3F, 0x00, 0x10, 0x21, 0x00, 0x10, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9B5, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x04, 0x04, 0x80, 0x0B, 0xFC, 0x80, 0x08, 0x44, 0x80, 0x18, 0x84, 0x80, 0x18, 0xFC, 0x80, 0x29, 0x0C, 0x80, 0x29, 0x94, 0x80, 0x0A, 0x54, 0x80, 0x0C, 0x24, 0x80, 0x08, 0x24, 0x80, 0x08, 0x44, 0x80, 0x08, 0x84, 0x80, 0x09, 0x00, 0x80, 0x0A, 0x00, 0x80, 0x08, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9B6, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x55, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0xD5, 0x00, 0x04, 0x7F, 0x00, 0x04, 0x00, 0x00, 0x15, 0xFF, 0x80, 0x15, 0x00, 0x00, 0x15, 0x7F, 0x00, 0x15, 0x41, 0x00, 0x25, 0x7F, 0x00, 0x25, 0x22, 0x00, 0x04, 0x14, 0x00, 0x04, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9B7, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3F, 0x14, 0x00, 0x0C, 0x7F, 0x00, 0x0C, 0x55, 0x00, 0x0C, 0x7F, 0x00, 0x3F, 0x55, 0x00, 0x2D, 0x7F, 0x00, 0x2D, 0x00, 0x00, 0x37, 0xFF, 0x80, 0x21, 0x00, 0x00, 0x21, 0x7F, 0x00, 0x3F, 0x41, 0x00, 0x21, 0x7F, 0x00, 0x21, 0x22, 0x00, 0x3F, 0x14, 0x00, 0x21, 0xFF, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9B8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x3F, 0x7F, 0x00, 0x0C, 0x09, 0x00, 0x16, 0xFF, 0x80, 0x15, 0x09, 0x00, 0x24, 0x7F, 0x00, 0x04, 0x08, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x49, 0x00, 0x3F, 0xAA, 0x00, 0x04, 0x1C, 0x00, 0x15, 0x2C, 0x00, 0x15, 0x4A, 0x00, 0x24, 0x89, 0x00, 0x0C, 0x18, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x0F, 0x1E, 0x00, 0x08, 0x02, 0x00, 0x0F, 0x1E, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x02, 0x41, 0x00, 0x0A, 0x20, 0x80, 0x0A, 0x02, 0x80, 0x13, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9BB, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x19, 0x29, 0x00, 0x18, 0xC6, 0x00, 0x29, 0x82, 0x00, 0x2E, 0x01, 0x80, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x94, 0x00, 0x09, 0x12, 0x00, 0x0A, 0x31, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9BC, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x1F, 0xFF, 0x00, 0x08, 0xA2, 0x00, 0x07, 0x1C, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0xC1, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x10, 0x01, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x20, 0x00, 0x10, 0x21, 0x00, 0x17, 0xF2, 0x00, 0x10, 0xB4, 0x00, 0x10, 0xA8, 0x00, 0x11, 0x28, 0x00, 0x11, 0x24, 0x00, 0x12, 0x24, 0x00, 0x24, 0x22, 0x00, 0x28, 0x21, 0x00, 0x20, 0xE0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9BE, { 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x14, 0x92, 0x00, 0x14, 0x8A, 0x00, 0x15, 0x02, 0x00, 0x04, 0x02, 0x00, 0x3F, 0xA2, 0x00, 0x04, 0x12, 0x00, 0x0E, 0x03, 0x80, 0x0D, 0x0E, 0x00, 0x14, 0x72, 0x00, 0x14, 0x02, 0x00, 0x24, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9BF, { 0x00, 0x00, 0x00, 0x08, 0x42, 0x00, 0x08, 0x82, 0x00, 0x11, 0xF4, 0x00, 0x25, 0x19, 0x00, 0x15, 0xF5, 0x00, 0x09, 0x16, 0x00, 0x15, 0x19, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x80, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9C0, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x91, 0x00, 0x0A, 0x6A, 0x00, 0x2C, 0xC6, 0x00, 0x2B, 0x01, 0x80, 0x28, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x14, 0x10, 0x00, 0x14, 0x92, 0x00, 0x15, 0x11, 0x00, 0x22, 0x30, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9C1, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x2A, 0x52, 0x00, 0x19, 0x8C, 0x00, 0x0E, 0x03, 0x80, 0x0B, 0xFE, 0x00, 0x1A, 0x02, 0x00, 0x2B, 0xFE, 0x00, 0x0A, 0x02, 0x00, 0x0B, 0xFE, 0x00, 0x08, 0x20, 0x00, 0x11, 0x24, 0x00, 0x12, 0x22, 0x00, 0x24, 0x61, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C2, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x02, 0x49, 0x00, 0x04, 0xD3, 0x00, 0x09, 0x65, 0x00, 0x12, 0x49, 0x00, 0x05, 0xB1, 0x00, 0x06, 0x2C, 0x00, 0x38, 0xC3, 0x80, 0x03, 0x10, 0x00, 0x1C, 0x60, 0x00, 0x03, 0x86, 0x00, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C3, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x01, 0x29, 0x00, 0x00, 0xC6, 0x00, 0x21, 0x83, 0x80, 0x16, 0xFE, 0x00, 0x00, 0x82, 0x00, 0x00, 0xFE, 0x00, 0x38, 0x82, 0x00, 0x08, 0xFE, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x09, 0x11, 0x00, 0x0C, 0x30, 0x00, 0x13, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C4, { 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0x3F, 0xBF, 0x00, 0x11, 0x20, 0x00, 0x0A, 0x3F, 0x00, 0x3F, 0x81, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x1F, 0x20, 0x00, 0x11, 0x3F, 0x00, 0x11, 0x20, 0x80, 0x11, 0x3F, 0x80, 0x13, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C5, { 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x40, 0x80, 0x1F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x22, 0xFF, 0x00, 0x24, 0x00, 0x00, 0x28, 0x00, 0x00, 0x24, 0x00, 0x00, 0x23, 0xFF, 0x80, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x22, 0x44, 0x00, 0x2C, 0x84, 0x00, 0x20, 0x84, 0x80, 0x21, 0x07, 0x80, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x16, 0xF4, 0x80, 0x18, 0x54, 0x80, 0x10, 0x54, 0x80, 0x1E, 0x94, 0x80, 0x31, 0x64, 0x80, 0x03, 0x04, 0x80, 0x0C, 0xC4, 0x80, 0x30, 0x34, 0x80, 0x0F, 0xC4, 0x80, 0x02, 0x04, 0x80, 0x3F, 0xE4, 0x80, 0x02, 0x84, 0x80, 0x12, 0x84, 0x80, 0x0B, 0xE0, 0x80, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9C8, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0xFE, 0x00, 0x1F, 0x22, 0x00, 0x04, 0x22, 0x00, 0x0E, 0x22, 0x00, 0x0D, 0x22, 0x00, 0x0D, 0xFF, 0x80, 0x14, 0x22, 0x00, 0x14, 0x22, 0x00, 0x24, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x04, 0x22, 0x00, 0x05, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9C9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xB7, 0x80, 0x08, 0xC4, 0x80, 0x3E, 0x94, 0x80, 0x08, 0x94, 0x80, 0x18, 0x94, 0x80, 0x1C, 0x94, 0x80, 0x3A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0xF4, 0x80, 0x29, 0xA4, 0x80, 0x28, 0x24, 0x80, 0x08, 0x45, 0x80, 0x08, 0x44, 0x00, 0x08, 0x84, 0x00, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9CA, { 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x20, 0x40, 0x00, 0x10, 0x82, 0x00, 0x01, 0x1F, 0x00, 0x03, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x10, 0x92, 0x00, 0x21, 0x12, 0x80, 0x26, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9CB, { 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x09, 0x9F, 0x80, 0x01, 0x04, 0x80, 0x01, 0x04, 0x80, 0x21, 0x24, 0x80, 0x11, 0xF8, 0x80, 0x03, 0x17, 0x00, 0x00, 0x20, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x11, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x21, 0xFF, 0x00, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9CC, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x3E, 0x10, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x08, 0x42, 0x00, 0x08, 0x9F, 0x00, 0x3F, 0xE0, 0x80, 0x08, 0x00, 0x00, 0x08, 0x92, 0x00, 0x08, 0x92, 0x00, 0x0E, 0x92, 0x00, 0x30, 0x92, 0x00, 0x00, 0x92, 0x00, 0x01, 0x12, 0x80, 0x06, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9CD, { 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x7F, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x17, 0xA1, 0x00, 0x38, 0x4E, 0x00, 0x00, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9CE, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3F, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x20, 0x00, 0x10, 0x42, 0x00, 0x10, 0x9F, 0x00, 0x3F, 0xE0, 0x80, 0x32, 0x00, 0x00, 0x32, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x00, 0x12, 0x52, 0x80, 0x1E, 0x92, 0x80, 0x13, 0x13, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9CF, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0xFE, 0x00, 0x10, 0x22, 0x00, 0x24, 0x22, 0x00, 0x14, 0x22, 0x00, 0x08, 0x22, 0x00, 0x12, 0x22, 0x00, 0x27, 0xFF, 0x80, 0x39, 0x22, 0x00, 0x08, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x2A, 0x22, 0x00, 0x29, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D0, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x15, 0x7F, 0x80, 0x15, 0x04, 0x00, 0x04, 0x08, 0x00, 0x3F, 0xBF, 0x00, 0x0E, 0x21, 0x00, 0x15, 0x21, 0x00, 0x24, 0xBF, 0x00, 0x00, 0x21, 0x00, 0x05, 0x21, 0x00, 0x04, 0xBF, 0x00, 0x3F, 0xE1, 0x00, 0x04, 0x21, 0x00, 0x0A, 0x3F, 0x00, 0x11, 0x21, 0x00, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9D1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x08, 0x02, 0x00, 0x08, 0x01, 0x00, 0x10, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D2, { 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3F, 0xC9, 0x00, 0x15, 0x48, 0x00, 0x26, 0x4B, 0x80, 0x0C, 0xFC, 0x00, 0x15, 0x48, 0x00, 0x2E, 0xC8, 0x80, 0x03, 0x08, 0x80, 0x0C, 0xC9, 0x00, 0x32, 0x39, 0x00, 0x0C, 0x8A, 0x00, 0x33, 0x24, 0x00, 0x0C, 0x44, 0x80, 0x31, 0x8A, 0x80, 0x06, 0x31, 0x80, 0x38, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9D3, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x48, 0x00, 0x24, 0x48, 0x80, 0x24, 0x8F, 0x80, 0x27, 0x10, 0x00, 0x24, 0x10, 0x00, 0x24, 0x10, 0x00, 0x25, 0xFF, 0x00, 0x2C, 0x10, 0x00, 0x20, 0x10, 0x00, 0x23, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D4, { 0x00, 0x00, 0x00, 0x04, 0x30, 0x00, 0x04, 0x48, 0x00, 0x08, 0x84, 0x00, 0x09, 0x02, 0x00, 0x1E, 0x01, 0x80, 0x19, 0xFE, 0x00, 0x28, 0x00, 0x00, 0x28, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D5, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x3B, 0xFB, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x0F, 0xFE, 0x00, 0x09, 0x12, 0x00, 0x09, 0x12, 0x00, 0x09, 0x16, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D6, { 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0x08, 0x48, 0x00, 0x00, 0x84, 0x00, 0x01, 0x02, 0x00, 0x26, 0x01, 0x80, 0x11, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x0A, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x13, 0xFF, 0x00, 0x12, 0x49, 0x00, 0x12, 0x49, 0x00, 0x22, 0x49, 0x00, 0x22, 0x4B, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D7, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x18, 0x00, 0x3E, 0x24, 0x00, 0x08, 0x42, 0x00, 0x09, 0x81, 0x80, 0x3E, 0x7E, 0x00, 0x2A, 0x00, 0x00, 0x3E, 0xFF, 0x00, 0x2A, 0xA5, 0x00, 0x3E, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xFF, 0x00, 0x3E, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0xA5, 0x00, 0x08, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D8, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x11, 0xFE, 0x00, 0x20, 0x12, 0x00, 0x07, 0xFF, 0x80, 0x04, 0x12, 0x00, 0x09, 0xFE, 0x00, 0x18, 0x10, 0x00, 0x28, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9D9, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x14, 0x00, 0x0A, 0x14, 0x00, 0x0A, 0xFF, 0x80, 0x2A, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x09, 0xFF, 0x80, 0x08, 0x18, 0x00, 0x08, 0x2C, 0x00, 0x08, 0x4A, 0x00, 0x09, 0x89, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x11, 0x00, 0x11, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9DB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x41, 0x00, 0x12, 0x82, 0x00, 0x09, 0x14, 0x00, 0x00, 0xA2, 0x00, 0x08, 0x49, 0x00, 0x10, 0x98, 0x80, 0x23, 0xE4, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9DC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x7F, 0x00, 0x28, 0x62, 0x00, 0x24, 0x94, 0x00, 0x27, 0x18, 0x00, 0x24, 0x26, 0x00, 0x24, 0xC1, 0x80, 0x27, 0x28, 0x00, 0x24, 0x48, 0x00, 0x24, 0xFF, 0x80, 0x25, 0x08, 0x00, 0x38, 0x7F, 0x00, 0x20, 0x08, 0x00, 0x21, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9DD, { 0x00, 0x00, 0x00, 0x01, 0xC0, 0x80, 0x1E, 0x08, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x02, 0x08, 0x80, 0x3F, 0xE8, 0x80, 0x06, 0x08, 0x80, 0x07, 0x08, 0x80, 0x0A, 0x88, 0x80, 0x0A, 0x48, 0x80, 0x12, 0x08, 0x80, 0x12, 0x08, 0x80, 0x22, 0x08, 0x80, 0x02, 0x08, 0x80, 0x02, 0x00, 0x80, 0x02, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9DE, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x10, 0x41, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x00, 0x06, 0x70, 0x00, 0x38, 0x0F, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9DF, { 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x10, 0x00, 0x80, 0x1F, 0xFF, 0x80, 0x12, 0x20, 0x00, 0x14, 0x7F, 0x80, 0x18, 0x80, 0x00, 0x13, 0x7F, 0x00, 0x16, 0x41, 0x00, 0x1A, 0x7F, 0x00, 0x12, 0x7F, 0x00, 0x12, 0x10, 0x00, 0x12, 0x3F, 0x80, 0x12, 0x62, 0x00, 0x13, 0x94, 0x00, 0x22, 0x1C, 0x00, 0x22, 0xE3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x07, 0xFC, 0x00, 0x04, 0x04, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x08, 0x89, 0x00, 0x31, 0x11, 0x00, 0x02, 0x21, 0x00, 0x0C, 0x41, 0x00, 0x31, 0x82, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E1, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E2, { 0x00, 0x00, 0x00, 0x03, 0xC1, 0x00, 0x1E, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x07, 0x09, 0x00, 0x06, 0x89, 0x00, 0x0A, 0x49, 0x00, 0x12, 0x09, 0x00, 0x22, 0x43, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0xE0, 0x00, 0x01, 0x50, 0x00, 0x02, 0x48, 0x00, 0x0C, 0x46, 0x00, 0x30, 0x41, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9E3, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x23, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x02, 0x40, 0x00, 0x0A, 0x41, 0x80, 0x0A, 0x4E, 0x00, 0x0A, 0x70, 0x00, 0x12, 0x40, 0x00, 0x12, 0x40, 0x80, 0x12, 0x40, 0x80, 0x24, 0x7F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x00, 0x3F, 0x11, 0x00, 0x09, 0x11, 0x00, 0x09, 0xFF, 0x00, 0x09, 0x11, 0x00, 0x09, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x09, 0xFF, 0x00, 0x0E, 0x10, 0x00, 0x30, 0x10, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E5, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0F, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x28, 0x61, 0x00, 0x1B, 0x89, 0x00, 0x08, 0x89, 0x00, 0x0F, 0xF9, 0x00, 0x09, 0x89, 0x00, 0x19, 0xC9, 0x00, 0x2A, 0xA9, 0x00, 0x0A, 0x89, 0x00, 0x0C, 0x89, 0x00, 0x10, 0x89, 0x00, 0x10, 0x81, 0x00, 0x20, 0x83, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x11, 0x00, 0x3F, 0xFF, 0x00, 0x08, 0x24, 0x00, 0x08, 0x48, 0x00, 0x08, 0xFF, 0x00, 0x0B, 0x48, 0x00, 0x2A, 0x48, 0x00, 0x2A, 0x7F, 0x00, 0x28, 0x48, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x48, 0x00, 0x08, 0x48, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x07, 0x12, 0x00, 0x3A, 0x0C, 0x00, 0x03, 0xF6, 0x00, 0x3C, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9E8, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x49, 0x00, 0x3E, 0x49, 0x00, 0x02, 0x7F, 0x00, 0x04, 0x49, 0x00, 0x0A, 0x49, 0x00, 0x1C, 0x7F, 0x00, 0x2A, 0x08, 0x00, 0x0A, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x7F, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x08, 0x42, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x42, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9EA, { 0x00, 0x00, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xEA, 0x00, 0x15, 0x52, 0x00, 0x12, 0x7F, 0x80, 0x15, 0x52, 0x00, 0x1F, 0xD2, 0x00, 0x00, 0x1F, 0x80, 0x3F, 0xD2, 0x00, 0x24, 0x52, 0x00, 0x29, 0x52, 0x00, 0x33, 0xDF, 0x80, 0x3C, 0xD2, 0x00, 0x20, 0x52, 0x00, 0x20, 0x5F, 0x80, 0x20, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x08, 0x00, 0x3F, 0xFF, 0x00, 0x22, 0x48, 0x00, 0x20, 0x80, 0x00, 0x3F, 0xFF, 0x00, 0x21, 0x00, 0x00, 0x22, 0x00, 0x00, 0x27, 0xFC, 0x00, 0x3A, 0x04, 0x00, 0x23, 0xFC, 0x00, 0x22, 0x04, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9EC, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xEF, 0x80, 0x00, 0x20, 0x80, 0x00, 0x20, 0x80, 0x23, 0xEF, 0x80, 0x12, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0B, 0xEF, 0x80, 0x08, 0xA2, 0x80, 0x09, 0x24, 0x80, 0x12, 0x39, 0x80, 0x1C, 0x62, 0x80, 0x10, 0xA4, 0x80, 0x11, 0x38, 0x80, 0x26, 0x20, 0x80, 0x20, 0xC3, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9ED, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x01, 0x10, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x18, 0x00, 0x3C, 0x07, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9EE, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x0A, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x0A, 0x38, 0x00, 0x2A, 0x54, 0x00, 0x28, 0x92, 0x00, 0x2B, 0x11, 0x80, 0x28, 0x52, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x9A, 0x00, 0x09, 0xAA, 0x00, 0x0A, 0x7F, 0x80, 0x14, 0x42, 0x00, 0x14, 0x82, 0x00, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9EF, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x92, 0x00, 0x3E, 0x54, 0x00, 0x0B, 0xFF, 0x80, 0x08, 0x38, 0x00, 0x08, 0x54, 0x00, 0x08, 0x92, 0x00, 0x3F, 0x11, 0x80, 0x08, 0x52, 0x00, 0x08, 0x7F, 0x80, 0x08, 0x9A, 0x00, 0x09, 0xAA, 0x00, 0x0E, 0x7F, 0x80, 0x30, 0x42, 0x00, 0x00, 0x82, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F0, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x11, 0x00, 0x1F, 0x1F, 0x00, 0x11, 0x21, 0x00, 0x12, 0x41, 0x00, 0x17, 0xF9, 0x00, 0x1A, 0x41, 0x00, 0x13, 0xF9, 0x00, 0x12, 0x41, 0x00, 0x13, 0xFD, 0x00, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x92, 0x00, 0x24, 0x54, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x38, 0x00, 0x24, 0x54, 0x00, 0x24, 0x92, 0x00, 0x27, 0x11, 0x80, 0x24, 0x52, 0x00, 0x24, 0x7F, 0x80, 0x24, 0x9A, 0x00, 0x25, 0x9A, 0x00, 0x3A, 0x6A, 0x00, 0x24, 0x7F, 0x80, 0x20, 0x82, 0x00, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F2, { 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x08, 0x92, 0x00, 0x1E, 0x54, 0x00, 0x23, 0xFF, 0x80, 0x04, 0x38, 0x00, 0x3E, 0x54, 0x00, 0x2A, 0x92, 0x00, 0x2B, 0x11, 0x80, 0x3E, 0x52, 0x00, 0x2A, 0x7F, 0x80, 0x2A, 0x9A, 0x00, 0x3F, 0xAA, 0x00, 0x01, 0x6A, 0x00, 0x0A, 0x7F, 0x80, 0x28, 0x82, 0x00, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F3, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x49, 0x00, 0x3F, 0x2A, 0x00, 0x2D, 0xFF, 0x80, 0x3F, 0x1C, 0x00, 0x2D, 0x2A, 0x00, 0x2D, 0x49, 0x00, 0x3F, 0x88, 0x80, 0x2A, 0x42, 0x00, 0x2A, 0x7F, 0x80, 0x2F, 0x9A, 0x00, 0x2A, 0xDA, 0x00, 0x2B, 0x2A, 0x00, 0x2F, 0x7F, 0x80, 0x38, 0x82, 0x00, 0x23, 0x02, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F4, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x3F, 0xFF, 0x80, 0x04, 0x0E, 0x00, 0x0E, 0x0E, 0x00, 0x0D, 0x15, 0x00, 0x14, 0x95, 0x00, 0x14, 0x25, 0x00, 0x14, 0x24, 0x80, 0x24, 0x44, 0x80, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F5, { 0x00, 0x00, 0x00, 0x10, 0x84, 0x00, 0x08, 0x84, 0x00, 0x00, 0x84, 0x00, 0x00, 0x84, 0x00, 0x27, 0xFF, 0x80, 0x10, 0x84, 0x00, 0x01, 0xCE, 0x00, 0x01, 0xAE, 0x00, 0x0B, 0x95, 0x00, 0x0A, 0x95, 0x00, 0x0A, 0xA5, 0x00, 0x14, 0xA4, 0x80, 0x10, 0x84, 0x00, 0x10, 0x84, 0x00, 0x20, 0x84, 0x00, 0x20, 0x84, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F6, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x28, 0x7F, 0x80, 0x28, 0x80, 0x00, 0x29, 0x7F, 0x00, 0x3E, 0x41, 0x00, 0x22, 0x41, 0x00, 0x22, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x3E, 0xF7, 0x80, 0x28, 0x94, 0x80, 0x28, 0x94, 0x80, 0x28, 0x94, 0x80, 0x3E, 0xF7, 0x80, 0x20, 0x94, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9F7, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x02, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F8, { 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x0F, 0xFF, 0x80, 0x12, 0x12, 0x00, 0x21, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x02, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9F9, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x09, 0x08, 0x00, 0x29, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x3E, 0x41, 0x00, 0x08, 0x21, 0x00, 0x1C, 0x22, 0x00, 0x1A, 0x22, 0x00, 0x39, 0x14, 0x00, 0x28, 0x14, 0x00, 0x28, 0x14, 0x00, 0x28, 0x14, 0x00, 0x08, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9FA, { 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x11, 0x0A, 0x00, 0x11, 0x09, 0x00, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x3F, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x14, 0x00, 0x11, 0x12, 0x00, 0x11, 0x22, 0x00, 0x21, 0x21, 0x00, 0x21, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9FB, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, 0x00, 0x01, 0xFE, 0x00, 0x06, 0x84, 0x00, 0x1A, 0x58, 0x00, 0x01, 0x20, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x40, 0x00, 0x3C, 0x42, 0x00, 0x04, 0x44, 0x00, 0x04, 0x48, 0x00, 0x08, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x02, 0x08, 0x00, 0x0C, 0x06, 0x00, 0x30, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9FC, { 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x1C, 0x4A, 0x00, 0x00, 0x49, 0x00, 0x01, 0xF8, 0x00, 0x3E, 0xA8, 0x00, 0x00, 0xA8, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x1C, 0xE9, 0x00, 0x00, 0xA9, 0x00, 0x00, 0xEA, 0x00, 0x1C, 0xA4, 0x00, 0x14, 0xE4, 0x80, 0x14, 0xAA, 0x80, 0x1C, 0x31, 0x80, 0x14, 0xC0, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9FD, { 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x18, 0x10, 0x00, 0x18, 0x10, 0x00, 0x2B, 0xFF, 0x80, 0x28, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xF9FE, { 0x00, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0xA0, 0x00, 0x01, 0x10, 0x00, 0x06, 0x0C, 0x00, 0x38, 0x43, 0x80, 0x00, 0x40, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x04, 0x44, 0x00, 0x08, 0x42, 0x00, 0x10, 0x41, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xF9FF, { 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x3F, 0xE9, 0x00, 0x02, 0x09, 0x00, 0x02, 0x09, 0x00, 0x3F, 0xE9, 0x00, 0x22, 0x29, 0x00, 0x22, 0x29, 0x00, 0x22, 0x29, 0x00, 0x22, 0x29, 0x00, 0x27, 0x69, 0x00, 0x07, 0x09, 0x00, 0x0A, 0x89, 0x00, 0x0A, 0x89, 0x00, 0x12, 0x41, 0x00, 0x22, 0x23, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA00, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x09, 0x91, 0x00, 0x0E, 0x11, 0x00, 0x38, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x11, 0x00, 0x08, 0x91, 0x00, 0x08, 0xA1, 0x00, 0x0F, 0xA1, 0x00, 0x00, 0x42, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA01, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x08, 0x00, 0x11, 0x08, 0x00, 0x1F, 0xFF, 0x00, 0x11, 0x08, 0x00, 0x11, 0xF8, 0x00, 0x10, 0x00, 0x00, 0x17, 0xFE, 0x00, 0x11, 0x04, 0x00, 0x10, 0x88, 0x00, 0x10, 0x50, 0x00, 0x10, 0x60, 0x00, 0x21, 0x98, 0x00, 0x2E, 0x07, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xFA02, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0xFF, 0x80, 0x3E, 0x10, 0x00, 0x08, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08, 0x40, 0x00, 0x0A, 0x40, 0x00, 0x0C, 0xFF, 0x00, 0x39, 0x41, 0x00, 0x0A, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x41, 0x00, 0x08, 0x7F, 0x00, 0x18, 0x41, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA03, { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x2A, 0x08, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x00, 0x08, 0xBF, 0x00, 0x3F, 0x89, 0x00, 0x08, 0xFF, 0x80, 0x18, 0x89, 0x00, 0x1C, 0xBF, 0x00, 0x3A, 0x88, 0x00, 0x28, 0x88, 0x00, 0x28, 0xBF, 0x00, 0x28, 0xA1, 0x00, 0x08, 0xA1, 0x00, 0x09, 0x3F, 0x00, 0x0A, 0x21, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA04, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x3F, 0xFF, 0x80, 0x20, 0x00, 0x80, 0x20, 0x00, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x83, 0x80, 0x00, 0xBC, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA05, { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0B, 0xFF, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0xFE, 0x80, 0x22, 0x00, 0x80, 0x12, 0x00, 0x80, 0x02, 0x7C, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x44, 0x80, 0x0A, 0x7C, 0x80, 0x12, 0x44, 0x80, 0x12, 0x00, 0x80, 0x12, 0x00, 0x80, 0x22, 0x00, 0x80, 0x22, 0x01, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xFA06, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x02, 0x48, 0x00, 0x0E, 0x4E, 0x00, 0x31, 0x71, 0x80, 0x01, 0xD0, 0x00, 0x06, 0x4C, 0x00, 0x38, 0xC3, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xFA07, { 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x3E, 0xFF, 0x80, 0x08, 0x00, 0x00, 0x3E, 0x7F, 0x00, 0x2A, 0x41, 0x00, 0x2A, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x2A, 0xFF, 0x80, 0x2A, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x88, 0x80, 0x3E, 0x88, 0x80, 0x08, 0xFF, 0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, }}, +{ 0xFA08, { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x08, 0xFF, 0x00, 0x12, 0x00, 0x00, 0x22, 0x00, 0x00, 0x04, 0x00, 0x00, 0x09, 0xFF, 0x80, 0x18, 0x08, 0x00, 0x28, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA09, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x20, 0x00, 0x24, 0x7E, 0x00, 0x24, 0xA4, 0x00, 0x29, 0x18, 0x00, 0x26, 0x14, 0x00, 0x24, 0x63, 0x80, 0x25, 0x88, 0x00, 0x24, 0x08, 0x00, 0x25, 0xFF, 0x00, 0x24, 0x88, 0x00, 0x38, 0x88, 0x00, 0x27, 0xFF, 0x80, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA0A, { 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x08, 0x02, 0x00, 0x08, 0x02, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x02, 0x10, 0x80, 0x04, 0x10, 0x80, 0x08, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFA0B, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xFF, 0x80, 0x11, 0x00, 0x00, 0x11, 0x0F, 0x00, 0x1F, 0xE9, 0x00, 0x10, 0x09, 0x00, 0x17, 0xCA, 0x00, 0x14, 0x49, 0x00, 0x17, 0xC9, 0x00, 0x10, 0x09, 0x00, 0x17, 0xC9, 0x00, 0x10, 0x89, 0x00, 0x11, 0xE9, 0x00, 0x1F, 0x0E, 0x00, 0x21, 0x08, 0x00, 0x23, 0x08, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x01, 0x18, 0x00, 0x02, 0x18, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x1F, 0xC8, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x08, 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x0E, 0x70, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x1F, 0xFC, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x1F, 0xFC, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF04, { 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x06, 0xD8, 0x00, 0x0C, 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xD8, 0x00, 0x00, 0xCC, 0x00, 0x0C, 0xCC, 0x00, 0x06, 0xD8, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0C, 0x00, 0x1B, 0x18, 0x00, 0x1B, 0x30, 0x00, 0x0E, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x38, 0x00, 0x06, 0x6C, 0x00, 0x0C, 0x6C, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x06, 0xCC, 0x00, 0x0C, 0xD8, 0x00, 0x0C, 0x70, 0x00, 0x0C, 0x76, 0x00, 0x07, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x0C, 0x1C, 0x00, 0x08, 0x34, 0x00, 0x18, 0x66, 0x00, 0x18, 0x66, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x19, 0x86, 0x00, 0x19, 0x86, 0x00, 0x0B, 0x04, 0x00, 0x0E, 0x0C, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x38, 0x00, 0x04, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x04, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x04, 0x00, 0x07, 0x1C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xB0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x30, 0x00, 0x18, 0x30, 0x00, 0x30, 0x30, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x04, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0x1C, 0x00, 0x04, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x07, 0x1C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0D, 0xF8, 0x00, 0x0E, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x06, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x0C, 0x06, 0x00, 0x08, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x06, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x18, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x33, 0xCC, 0x00, 0x36, 0x6C, 0x00, 0x36, 0x6C, 0x00, 0x36, 0x6C, 0x00, 0x36, 0x7C, 0x00, 0x33, 0xD8, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0xF8, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x0C, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF2, 0x00, 0x07, 0x1A, 0x00, 0x0C, 0x0E, 0x00, 0x0C, 0x06, 0x00, 0x18, 0x02, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x0C, 0x06, 0x00, 0x07, 0x1C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x0C, 0x38, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x38, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x06, 0x06, 0x00, 0x06, 0x02, 0x00, 0x06, 0x00, 0x00, 0x06, 0x10, 0x00, 0x06, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x06, 0x10, 0x00, 0x06, 0x10, 0x00, 0x06, 0x00, 0x00, 0x06, 0x02, 0x00, 0x06, 0x06, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x06, 0x06, 0x00, 0x06, 0x02, 0x00, 0x06, 0x00, 0x00, 0x06, 0x10, 0x00, 0x06, 0x10, 0x00, 0x07, 0xF0, 0x00, 0x06, 0x10, 0x00, 0x06, 0x10, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF2, 0x00, 0x07, 0x1E, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x02, 0x00, 0x18, 0x02, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0E, 0x00, 0x07, 0x1E, 0x00, 0x01, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0E, 0xC0, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x02, 0x00, 0x06, 0x06, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x38, 0x0E, 0x00, 0x3C, 0x1E, 0x00, 0x3C, 0x1E, 0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00, 0x33, 0x66, 0x00, 0x33, 0x66, 0x00, 0x31, 0xC6, 0x00, 0x31, 0xC6, 0x00, 0x30, 0x86, 0x00, 0x30, 0x06, 0x00, 0x78, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0F, 0x00, 0x18, 0x06, 0x00, 0x1C, 0x06, 0x00, 0x1E, 0x06, 0x00, 0x1B, 0x06, 0x00, 0x19, 0x86, 0x00, 0x18, 0xC6, 0x00, 0x18, 0x66, 0x00, 0x18, 0x36, 0x00, 0x18, 0x1E, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x06, 0x00, 0x3C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x1C, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0E, 0x1C, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x06, 0x1C, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x1C, 0x00, 0x07, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x0E, 0x1C, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x19, 0xE6, 0x00, 0x0C, 0x3C, 0x00, 0x07, 0x18, 0x00, 0x01, 0xFD, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x38, 0x00, 0x0F, 0xE0, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x19, 0x00, 0x1E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE4, 0x00, 0x06, 0x1C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x04, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x06, 0x00, 0x0C, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0B, 0x0C, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x18, 0xC6, 0x00, 0x10, 0xC2, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x04, 0x08, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x06, 0x00, 0x18, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xCF, 0x00, 0x30, 0x86, 0x00, 0x30, 0x86, 0x00, 0x31, 0xC6, 0x00, 0x19, 0x4C, 0x00, 0x19, 0x4C, 0x00, 0x1B, 0x6C, 0x00, 0x1B, 0x6C, 0x00, 0x0A, 0x28, 0x00, 0x0E, 0x38, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x18, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x06, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0F, 0x00, 0x18, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x18, 0x06, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x02, 0x00, 0x18, 0x06, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x00, 0x18, 0x00, 0x01, 0xF8, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x38, 0x00, 0x07, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0xF8, 0x00, 0x07, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x0E, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x03, 0xEC, 0x00, 0x06, 0x1C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x1C, 0x00, 0x03, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x8C, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x0F, 0xF8, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF6, 0x00, 0x06, 0x1C, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x01, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x0E, 0x0C, 0x00, 0x0C, 0x04, 0x00, 0x0E, 0x0C, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0xF0, 0x00, 0x07, 0x98, 0x00, 0x07, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x7C, 0x00, 0x06, 0x30, 0x00, 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0x30, 0x00, 0x06, 0x18, 0x00, 0x0F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xBC, 0x00, 0x1C, 0xE6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x18, 0xC6, 0x00, 0x3C, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x0F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x07, 0x18, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x07, 0x18, 0x00, 0x07, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xD8, 0x00, 0x06, 0x78, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x06, 0x38, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xF8, 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x88, 0x00, 0x01, 0x98, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x38, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x18, 0x00, 0x06, 0x38, 0x00, 0x03, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1E, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x18, 0x00, 0x03, 0x18, 0x00, 0x01, 0xB0, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xEF, 0x00, 0x31, 0xC6, 0x00, 0x31, 0xC6, 0x00, 0x1B, 0x6C, 0x00, 0x1B, 0x6C, 0x00, 0x1B, 0x6C, 0x00, 0x0E, 0x38, 0x00, 0x0E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x30, 0x00, 0x06, 0x18, 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x18, 0x00, 0x01, 0xB0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x0C, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x0C, 0x18, 0x00, 0x08, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x84, 0x00, 0x03, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF5C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1B, 0x0C, 0x00, 0x31, 0x98, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x01, 0xF8, 0x00, 0x06, 0x3C, 0x00, 0x0C, 0x6C, 0x00, 0x0C, 0xC0, 0x00, 0x0D, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x0D, 0xF0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x37, 0x01, 0x00, 0x36, 0xE3, 0x00, 0x1C, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x19, 0x86, 0x00, 0x30, 0xCC, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x06, 0x18, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xE3, 0x80, 0x30, 0xC1, 0x00, 0x30, 0xC2, 0x00, 0x18, 0xC2, 0x00, 0x7F, 0xFF, 0x80, 0x18, 0x64, 0x00, 0x7F, 0xFF, 0x80, 0x0C, 0xE4, 0x00, 0x0D, 0x68, 0x00, 0x0D, 0x68, 0x00, 0x07, 0x38, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x06, 0x18, 0x00, 0x0C, 0xCC, 0x00, 0x1F, 0xCE, 0x00, 0x3F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, diff --git a/libmednahawk/src/video/font4x5.h b/libmednahawk/src/video/font4x5.h new file mode 100644 index 0000000000..90bb1fbee3 --- /dev/null +++ b/libmednahawk/src/video/font4x5.h @@ -0,0 +1,195 @@ +{ 0x0020, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0021, { 0x40, 0x40, 0x40, 0x00, 0x40, }}, +{ 0x0022, { 0xA0, 0xA0, 0x00, 0x00, 0x00, }}, +{ 0x0023, { 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, }}, +{ 0x0024, { 0x40, 0xC0, 0xA0, 0x60, 0x40, }}, +{ 0x0025, { 0xA0, 0x20, 0x40, 0x80, 0xA0, }}, +{ 0x0026, { 0x40, 0xA0, 0x40, 0xA0, 0x60, }}, +{ 0x0027, { 0x40, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x0028, { 0x20, 0x40, 0x40, 0x40, 0x20, }}, +{ 0x0029, { 0x80, 0x40, 0x40, 0x40, 0x80, }}, +{ 0x002A, { 0x00, 0xA0, 0x40, 0xA0, 0x00, }}, +{ 0x002B, { 0x00, 0x40, 0xE0, 0x40, 0x00, }}, +{ 0x002C, { 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x002D, { 0x00, 0x00, 0xE0, 0x00, 0x00, }}, +{ 0x002E, { 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x002F, { 0x20, 0x40, 0x40, 0x40, 0x80, }}, +{ 0x0030, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x0031, { 0x40, 0xC0, 0x40, 0x40, 0xE0, }}, +{ 0x0032, { 0xE0, 0x20, 0x40, 0x80, 0xE0, }}, +{ 0x0033, { 0xE0, 0x20, 0x60, 0x20, 0xE0, }}, +{ 0x0034, { 0xA0, 0xA0, 0xE0, 0x20, 0x20, }}, +{ 0x0035, { 0xE0, 0x80, 0xE0, 0x20, 0xE0, }}, +{ 0x0036, { 0xE0, 0x80, 0xE0, 0xA0, 0xE0, }}, +{ 0x0037, { 0xE0, 0x20, 0x40, 0x40, 0x40, }}, +{ 0x0038, { 0x40, 0xA0, 0x40, 0xA0, 0x40, }}, +{ 0x0039, { 0x40, 0xA0, 0x60, 0x20, 0xC0, }}, +{ 0x003A, { 0x00, 0x40, 0x00, 0x40, 0x00, }}, +{ 0x003B, { 0x00, 0x40, 0x00, 0x00, 0x40, }}, +{ 0x003C, { 0x20, 0x40, 0x80, 0x40, 0x20, }}, +{ 0x003D, { 0x00, 0xE0, 0x00, 0xE0, 0x00, }}, +{ 0x003E, { 0x80, 0x40, 0x20, 0x40, 0x80, }}, +{ 0x003F, { 0xE0, 0x20, 0x40, 0x00, 0x40, }}, +{ 0x0040, { 0xE0, 0xA0, 0xA0, 0x80, 0xE0, }}, +{ 0x0041, { 0x40, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x0042, { 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, }}, +{ 0x0043, { 0x60, 0x80, 0x80, 0x80, 0x60, }}, +{ 0x0044, { 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, }}, +{ 0x0045, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x0046, { 0xE0, 0x80, 0xC0, 0x80, 0x80, }}, +{ 0x0047, { 0xE0, 0x80, 0xA0, 0xA0, 0xE0, }}, +{ 0x0048, { 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x0049, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x004A, { 0x20, 0x20, 0x20, 0xA0, 0x40, }}, +{ 0x004B, { 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, }}, +{ 0x004C, { 0x80, 0x80, 0x80, 0x80, 0xE0, }}, +{ 0x004D, { 0xA0, 0xE0, 0xA0, 0xA0, 0xA0, }}, +{ 0x004E, { 0x20, 0xA0, 0xE0, 0xA0, 0x80, }}, +{ 0x004F, { 0x40, 0xA0, 0xA0, 0xA0, 0x40, }}, +{ 0x0050, { 0xE0, 0xA0, 0xE0, 0x80, 0x80, }}, +{ 0x0051, { 0xE0, 0xA0, 0xE0, 0xE0, 0x20, }}, +{ 0x0052, { 0xC0, 0xA0, 0xC0, 0xA0, 0xA0, }}, +{ 0x0053, { 0x60, 0x80, 0x40, 0x20, 0xC0, }}, +{ 0x0054, { 0xE0, 0x40, 0x40, 0x40, 0x40, }}, +{ 0x0055, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x0056, { 0xA0, 0xA0, 0xA0, 0x40, 0x40, }}, +{ 0x0057, { 0xA0, 0xA0, 0xA0, 0xE0, 0xA0, }}, +{ 0x0058, { 0xA0, 0xA0, 0x40, 0xA0, 0xA0, }}, +{ 0x0059, { 0xA0, 0xA0, 0x40, 0x40, 0x40, }}, +{ 0x005A, { 0xE0, 0x20, 0x40, 0x80, 0xE0, }}, +{ 0x005B, { 0x60, 0x40, 0x40, 0x40, 0x60, }}, +{ 0x005C, { 0x80, 0x40, 0x40, 0x40, 0x20, }}, +{ 0x005D, { 0xC0, 0x40, 0x40, 0x40, 0xC0, }}, +{ 0x005E, { 0x40, 0xA0, 0x00, 0x00, 0x00, }}, +{ 0x005F, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0060, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0061, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x0062, { 0xE0, 0xA0, 0xC0, 0xA0, 0xE0, }}, +{ 0x0063, { 0xE0, 0x80, 0x80, 0x80, 0xE0, }}, +{ 0x0064, { 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, }}, +{ 0x0065, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x0066, { 0xE0, 0x80, 0xC0, 0x80, 0x80, }}, +{ 0x0067, { 0xE0, 0x80, 0xA0, 0xA0, 0xE0, }}, +{ 0x0068, { 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x0069, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x006A, { 0x20, 0x20, 0x20, 0xA0, 0xE0, }}, +{ 0x006B, { 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, }}, +{ 0x006C, { 0x80, 0x80, 0x80, 0x80, 0xE0, }}, +{ 0x006D, { 0xA0, 0xE0, 0xA0, 0xA0, 0xA0, }}, +{ 0x006E, { 0x20, 0xA0, 0xE0, 0xA0, 0x80, }}, +{ 0x006F, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x0070, { 0xE0, 0xA0, 0xE0, 0x80, 0x80, }}, +{ 0x0071, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x0072, { 0xC0, 0xA0, 0xC0, 0xA0, 0xA0, }}, +{ 0x0073, { 0xE0, 0x80, 0xE0, 0x20, 0xE0, }}, +{ 0x0074, { 0xE0, 0x40, 0x40, 0x40, 0x40, }}, +{ 0x0075, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x0076, { 0xA0, 0xA0, 0xA0, 0xA0, 0x40, }}, +{ 0x0077, { 0xA0, 0xA0, 0xA0, 0xE0, 0xA0, }}, +{ 0x0078, { 0xA0, 0xA0, 0x40, 0xA0, 0xA0, }}, +{ 0x0079, { 0xA0, 0xA0, 0x40, 0x40, 0x40, }}, +{ 0x007A, { 0xE0, 0x20, 0x40, 0x80, 0xE0, }}, +{ 0x007B, { 0x60, 0x40, 0xC0, 0x40, 0x60, }}, +{ 0x007C, { 0x40, 0x40, 0x40, 0x40, 0x40, }}, +{ 0x007D, { 0xC0, 0x40, 0x60, 0x40, 0xC0, }}, +{ 0x007E, { 0xC0, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x00A0, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A1, { 0x40, 0x00, 0x40, 0x40, 0x40, }}, +{ 0x00A2, { 0x40, 0xE0, 0x80, 0xE0, 0x40, }}, +{ 0x00A3, { 0x20, 0x40, 0xE0, 0x40, 0xE0, }}, +{ 0x00A4, { 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, }}, +{ 0x00A5, { 0xA0, 0xA0, 0x40, 0xE0, 0x40, }}, +{ 0x00A6, { 0x40, 0x40, 0x00, 0x40, 0x40, }}, +{ 0x00A7, { 0xE0, 0xC0, 0xE0, 0x60, 0xE0, }}, +{ 0x00A8, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A9, { 0x00, 0xE0, 0x80, 0xE0, 0x00, }}, +{ 0x00AA, { 0x00, 0xC0, 0xE0, 0x00, 0x00, }}, +{ 0x00AB, { 0x00, 0x20, 0x40, 0x20, 0x00, }}, +{ 0x00AD, { 0x00, 0x00, 0xE0, 0x00, 0x00, }}, +{ 0x00AE, { 0x00, 0xE0, 0xC0, 0xA0, 0x00, }}, +{ 0x00AF, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B0, { 0x00, 0xC0, 0xC0, 0x00, 0x00, }}, +{ 0x00B1, { 0x40, 0xE0, 0x40, 0x00, 0xE0, }}, +{ 0x00B2, { 0xC0, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x00B3, { 0xC0, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x00B4, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B5, { 0x00, 0x00, 0xA0, 0xA0, 0xE0, }}, +{ 0x00B6, { 0xE0, 0xA0, 0xE0, 0x20, 0x20, }}, +{ 0x00B7, { 0x00, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x00B8, { 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x00B9, { 0x40, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x00BA, { 0x00, 0xC0, 0xC0, 0x00, 0x00, }}, +{ 0x00BB, { 0x00, 0x80, 0x40, 0x80, 0x00, }}, +{ 0x00BF, { 0x40, 0x00, 0x40, 0x80, 0xE0, }}, +{ 0x00C0, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00C1, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00C2, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00C3, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00C4, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00C5, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00C7, { 0xE0, 0x80, 0x80, 0x80, 0xE0, }}, +{ 0x00C8, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00C9, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00CA, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00CB, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00CC, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00CD, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00CE, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00CF, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00D1, { 0x20, 0xA0, 0xE0, 0xA0, 0x80, }}, +{ 0x00D2, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00D3, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00D4, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00D5, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00D6, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00D7, { 0x00, 0xA0, 0x40, 0xA0, 0x00, }}, +{ 0x00D9, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00DA, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00DB, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00DC, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00DD, { 0xA0, 0xA0, 0x40, 0x40, 0x40, }}, +{ 0x00DF, { 0xE0, 0xA0, 0xC0, 0xA0, 0xE0, }}, +{ 0x00E0, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00E1, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00E2, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00E3, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00E4, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00E5, { 0xE0, 0xA0, 0xE0, 0xA0, 0xA0, }}, +{ 0x00E7, { 0xE0, 0x80, 0x80, 0x80, 0xE0, }}, +{ 0x00E8, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00E9, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00EA, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00EB, { 0xE0, 0x80, 0xC0, 0x80, 0xE0, }}, +{ 0x00EC, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00ED, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00EE, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00EF, { 0xE0, 0x40, 0x40, 0x40, 0xE0, }}, +{ 0x00F1, { 0x20, 0xA0, 0xE0, 0xA0, 0x80, }}, +{ 0x00F2, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00F3, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00F4, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00F5, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00F6, { 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00F7, { 0x40, 0x00, 0xE0, 0x00, 0x40, }}, +{ 0x00F9, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00FA, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00FB, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00FC, { 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, }}, +{ 0x00FD, { 0xA0, 0xA0, 0x40, 0x40, 0x40, }}, +{ 0x00FF, { 0xA0, 0xA0, 0x40, 0x40, 0x40, }}, +{ 0x0178, { 0xA0, 0xA0, 0x40, 0x40, 0x40, }}, +{ 0x0192, { 0x60, 0x40, 0xE0, 0x40, 0xC0, }}, +{ 0x02C6, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C9, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DA, { 0xC0, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x02DC, { 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x037E, { 0x00, 0x40, 0x00, 0x00, 0x40, }}, +{ 0x03BC, { 0x00, 0x00, 0xA0, 0xA0, 0xE0, }}, +{ 0x2013, { 0x00, 0x00, 0xE0, 0x00, 0x00, }}, +{ 0x2014, { 0x00, 0x00, 0xE0, 0x00, 0x00, }}, +{ 0x201A, { 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x201E, { 0x00, 0x00, 0x00, 0xA0, 0xA0, }}, +{ 0x2022, { 0x00, 0x60, 0x60, 0x00, 0x00, }}, +{ 0x2026, { 0x00, 0x00, 0x00, 0x00, 0xA0, }}, +{ 0x2122, { 0xC0, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x22C5, { 0x00, 0x00, 0x40, 0x00, 0x00, }}, diff --git a/libmednahawk/src/video/font5x7.h b/libmednahawk/src/video/font5x7.h new file mode 100644 index 0000000000..9aa24c4d0d --- /dev/null +++ b/libmednahawk/src/video/font5x7.h @@ -0,0 +1,1848 @@ +{ 0x0000, {0x00, 0xA8, 0x00, 0x88, 0x00, 0xA8, 0x00, }}, +{ 0x0020, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0021, {0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x00, }}, +{ 0x0022, {0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0023, {0x00, 0x50, 0xF8, 0x50, 0xF8, 0x50, 0x00, }}, +{ 0x0024, {0x00, 0x70, 0xA0, 0x70, 0x28, 0x70, 0x00, }}, +{ 0x0025, {0x80, 0x90, 0x20, 0x40, 0x90, 0x10, 0x00, }}, +{ 0x0026, {0x00, 0x40, 0xA0, 0x40, 0xA0, 0x50, 0x00, }}, +{ 0x0027, {0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0028, {0x20, 0x40, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x0029, {0x40, 0x20, 0x20, 0x20, 0x20, 0x40, 0x00, }}, +{ 0x002A, {0x00, 0x50, 0x20, 0x70, 0x20, 0x50, 0x00, }}, +{ 0x002B, {0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, }}, +{ 0x002C, {0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x40, }}, +{ 0x002D, {0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, }}, +{ 0x002E, {0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, }}, +{ 0x002F, {0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, }}, +{ 0x0030, {0x20, 0x50, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x0031, {0x20, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0032, {0x60, 0x90, 0x10, 0x20, 0x40, 0xF0, 0x00, }}, +{ 0x0033, {0xF0, 0x10, 0x60, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x0034, {0x20, 0x60, 0xA0, 0xF0, 0x20, 0x20, 0x00, }}, +{ 0x0035, {0xF0, 0x80, 0xE0, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x0036, {0x60, 0x80, 0xE0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0037, {0xF0, 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, }}, +{ 0x0038, {0x60, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0039, {0x60, 0x90, 0x90, 0x70, 0x10, 0x60, 0x00, }}, +{ 0x003A, {0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, }}, +{ 0x003B, {0x00, 0x60, 0x60, 0x00, 0x60, 0x40, 0x80, }}, +{ 0x003C, {0x00, 0x10, 0x20, 0x40, 0x20, 0x10, 0x00, }}, +{ 0x003D, {0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, }}, +{ 0x003E, {0x00, 0x40, 0x20, 0x10, 0x20, 0x40, 0x00, }}, +{ 0x003F, {0x20, 0x50, 0x10, 0x20, 0x00, 0x20, 0x00, }}, +{ 0x0040, {0x60, 0x90, 0xB0, 0xB0, 0x80, 0x60, 0x00, }}, +{ 0x0041, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0042, {0xE0, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0043, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0044, {0xE0, 0x90, 0x90, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0045, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0046, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0047, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x0048, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0049, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x004A, {0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x004B, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x004C, {0x80, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x004D, {0x90, 0xF0, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x004E, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x00, }}, +{ 0x004F, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0050, {0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, 0x00, }}, +{ 0x0051, {0x60, 0x90, 0x90, 0x90, 0xD0, 0x60, 0x10, }}, +{ 0x0052, {0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x0053, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00, }}, +{ 0x0054, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x0055, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0056, {0x90, 0x90, 0x90, 0x90, 0x60, 0x60, 0x00, }}, +{ 0x0057, {0x90, 0x90, 0x90, 0xF0, 0xF0, 0x90, 0x00, }}, +{ 0x0058, {0x90, 0x90, 0x60, 0x60, 0x90, 0x90, 0x00, }}, +{ 0x0059, {0x50, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x005A, {0xF0, 0x10, 0x20, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x005B, {0x70, 0x40, 0x40, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x005C, {0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, }}, +{ 0x005D, {0x70, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, }}, +{ 0x005E, {0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005F, {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, }}, +{ 0x0060, {0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0061, {0x00, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x0062, {0x80, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0063, {0x00, 0x00, 0x60, 0x80, 0x80, 0x60, 0x00, }}, +{ 0x0064, {0x10, 0x10, 0x70, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0065, {0x00, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0066, {0x20, 0x50, 0x40, 0xE0, 0x40, 0x40, 0x00, }}, +{ 0x0067, {0x00, 0x00, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x0068, {0x80, 0x80, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0069, {0x20, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x006A, {0x10, 0x00, 0x10, 0x10, 0x10, 0x50, 0x20, }}, +{ 0x006B, {0x80, 0x80, 0xA0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x006C, {0x60, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x006D, {0x00, 0x00, 0xA0, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x006E, {0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x006F, {0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0070, {0x00, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x0071, {0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, }}, +{ 0x0072, {0x00, 0x00, 0xE0, 0x90, 0x80, 0x80, 0x00, }}, +{ 0x0073, {0x00, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0x00, }}, +{ 0x0074, {0x40, 0x40, 0xE0, 0x40, 0x40, 0x30, 0x00, }}, +{ 0x0075, {0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0076, {0x00, 0x00, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x0077, {0x00, 0x00, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x0078, {0x00, 0x00, 0x90, 0x60, 0x60, 0x90, 0x00, }}, +{ 0x0079, {0x00, 0x00, 0x90, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x007A, {0x00, 0x00, 0xF0, 0x20, 0x40, 0xF0, 0x00, }}, +{ 0x007B, {0x10, 0x20, 0x60, 0x20, 0x20, 0x10, 0x00, }}, +{ 0x007C, {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x007D, {0x40, 0x20, 0x30, 0x20, 0x20, 0x40, 0x00, }}, +{ 0x007E, {0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A0, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A1, {0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x00A2, {0x00, 0x20, 0x70, 0xA0, 0xA0, 0x70, 0x20, }}, +{ 0x00A3, {0x00, 0x30, 0x40, 0xE0, 0x40, 0xB0, 0x00, }}, +{ 0x00A4, {0x00, 0x88, 0x70, 0x50, 0x70, 0x88, 0x00, }}, +{ 0x00A5, {0x50, 0x50, 0x20, 0x70, 0x20, 0x20, 0x00, }}, +{ 0x00A6, {0x00, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, }}, +{ 0x00A7, {0x30, 0x40, 0x60, 0x50, 0x30, 0x10, 0x60, }}, +{ 0x00A8, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A9, {0x70, 0x88, 0xA8, 0xC8, 0xA8, 0x88, 0x70, }}, +{ 0x00AA, {0x60, 0xA0, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AB, {0x00, 0x00, 0x48, 0x90, 0x48, 0x00, 0x00, }}, +{ 0x00AC, {0x00, 0x00, 0x00, 0xF0, 0x10, 0x00, 0x00, }}, +{ 0x00AD, {0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, }}, +{ 0x00AE, {0x70, 0x88, 0xE8, 0xC8, 0xC8, 0x88, 0x70, }}, +{ 0x00AF, {0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B0, {0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B1, {0x20, 0x20, 0xF8, 0x20, 0x20, 0xF8, 0x00, }}, +{ 0x00B2, {0x60, 0x20, 0x40, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x00B3, {0x60, 0x60, 0x20, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x00B4, {0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B5, {0x00, 0x00, 0x90, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x00B6, {0x70, 0xD0, 0xD0, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x00B7, {0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x00B8, {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, }}, +{ 0x00B9, {0x20, 0x60, 0x20, 0x70, 0x00, 0x00, 0x00, }}, +{ 0x00BA, {0x40, 0xA0, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BB, {0x00, 0x00, 0x90, 0x48, 0x90, 0x00, 0x00, }}, +{ 0x00BC, {0x80, 0x80, 0x80, 0x90, 0x30, 0x70, 0x10, }}, +{ 0x00BD, {0x80, 0x80, 0x80, 0xB0, 0x10, 0x20, 0x30, }}, +{ 0x00BE, {0xC0, 0xC0, 0x40, 0xD0, 0x30, 0x70, 0x10, }}, +{ 0x00BF, {0x20, 0x00, 0x20, 0x40, 0x50, 0x20, 0x00, }}, +{ 0x00C0, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x00C1, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x00C2, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x00C3, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x00C4, {0x90, 0x60, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x00C5, {0x60, 0x60, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x00C6, {0x70, 0xA0, 0xB0, 0xE0, 0xA0, 0xB0, 0x00, }}, +{ 0x00C7, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x40, }}, +{ 0x00C8, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x00C9, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x00CA, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x00CB, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x00CC, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00CD, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00CE, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00CF, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00D0, {0xE0, 0x50, 0xD0, 0x50, 0x50, 0xE0, 0x00, }}, +{ 0x00D1, {0xB0, 0x90, 0xD0, 0xB0, 0xB0, 0x90, 0x00, }}, +{ 0x00D2, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00D3, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00D4, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00D5, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00D6, {0x90, 0x60, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00D7, {0x00, 0x00, 0x90, 0x60, 0x60, 0x90, 0x00, }}, +{ 0x00D8, {0x70, 0xB0, 0xB0, 0xD0, 0xD0, 0xE0, 0x00, }}, +{ 0x00D9, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00DA, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00DB, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00DC, {0x90, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00DD, {0x50, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x00DE, {0x80, 0xE0, 0x90, 0xE0, 0x80, 0x80, 0x00, }}, +{ 0x00DF, {0x60, 0x90, 0xA0, 0x90, 0x90, 0xA0, 0x00, }}, +{ 0x00E0, {0x40, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x00E1, {0x20, 0x40, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x00E2, {0x20, 0x50, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x00E3, {0x50, 0xA0, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x00E4, {0x50, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x00E5, {0x60, 0x60, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x00E6, {0x00, 0x00, 0x70, 0xB0, 0xA0, 0x70, 0x00, }}, +{ 0x00E7, {0x00, 0x00, 0x30, 0x40, 0x40, 0x30, 0x20, }}, +{ 0x00E8, {0x40, 0x20, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x00E9, {0x20, 0x40, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x00EA, {0x40, 0xA0, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x00EB, {0xA0, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x00EC, {0x40, 0x20, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00ED, {0x20, 0x40, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00EE, {0x20, 0x50, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00EF, {0x50, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x00F0, {0x40, 0x30, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00F1, {0x50, 0xA0, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x00F2, {0x40, 0x20, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00F3, {0x20, 0x40, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00F4, {0x60, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00F5, {0x50, 0xA0, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00F6, {0x50, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x00F7, {0x00, 0x60, 0x00, 0xF0, 0x00, 0x60, 0x00, }}, +{ 0x00F8, {0x00, 0x00, 0x70, 0xB0, 0xD0, 0xE0, 0x00, }}, +{ 0x00F9, {0x40, 0x20, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x00FA, {0x20, 0x40, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x00FB, {0x60, 0x00, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x00FC, {0x50, 0x00, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x00FD, {0x20, 0x40, 0x90, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x00FE, {0x00, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x00FF, {0x50, 0x00, 0x90, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x0100, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0101, {0x70, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x0102, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0103, {0x90, 0x60, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x0104, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x10, }}, +{ 0x0105, {0x00, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x08, }}, +{ 0x0106, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0107, {0x10, 0x20, 0x30, 0x40, 0x40, 0x30, 0x00, }}, +{ 0x0108, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0109, {0x60, 0x00, 0x60, 0x80, 0x80, 0x60, 0x00, }}, +{ 0x010A, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x010B, {0x40, 0x00, 0x60, 0x80, 0x80, 0x60, 0x00, }}, +{ 0x010C, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x010D, {0xA0, 0x40, 0x60, 0x80, 0x80, 0x60, 0x00, }}, +{ 0x010E, {0xE0, 0x90, 0x90, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x010F, {0xA0, 0x50, 0x10, 0x70, 0x90, 0x70, 0x00, }}, +{ 0x0110, {0xE0, 0x90, 0xD0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0111, {0x10, 0x38, 0x10, 0x70, 0x90, 0x70, 0x00, }}, +{ 0x0112, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0113, {0xE0, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0114, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0115, {0x90, 0x60, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0116, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0117, {0x40, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0118, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x40, }}, +{ 0x0119, {0x00, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x40, }}, +{ 0x011A, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x011B, {0xA0, 0x40, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x011C, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x011D, {0x60, 0x00, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x011E, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x011F, {0x50, 0x20, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x0120, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x0121, {0x20, 0x00, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x0122, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x40, }}, +{ 0x0123, {0x60, 0x20, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x0124, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0125, {0x40, 0xA0, 0x80, 0xE0, 0x90, 0x90, 0x00, }}, +{ 0x0126, {0x90, 0xF8, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0127, {0x80, 0xC0, 0x80, 0xE0, 0x90, 0x90, 0x00, }}, +{ 0x0128, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0129, {0x50, 0xA0, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x012A, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x012B, {0x70, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x012C, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x012D, {0x90, 0x60, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x012E, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x40, }}, +{ 0x012F, {0x20, 0x00, 0x60, 0x20, 0x20, 0x70, 0x40, }}, +{ 0x0130, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0131, {0x00, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0132, {0x90, 0x90, 0x90, 0x90, 0xD0, 0xA0, 0x00, }}, +{ 0x0133, {0x90, 0x00, 0x90, 0x90, 0x90, 0xD0, 0x20, }}, +{ 0x0134, {0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x0135, {0x20, 0x50, 0x00, 0x20, 0x20, 0xA0, 0x40, }}, +{ 0x0136, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x80, }}, +{ 0x0137, {0x80, 0x80, 0xA0, 0xC0, 0xA0, 0x90, 0x80, }}, +{ 0x0138, {0x00, 0x00, 0x90, 0xE0, 0x90, 0x90, 0x00, }}, +{ 0x0139, {0x90, 0xA0, 0x80, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x013A, {0xC8, 0x50, 0x40, 0x40, 0x40, 0xE0, 0x00, }}, +{ 0x013B, {0x80, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x80, }}, +{ 0x013C, {0x60, 0x20, 0x20, 0x20, 0x20, 0x70, 0x40, }}, +{ 0x013D, {0xA8, 0x90, 0x80, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x013E, {0xA8, 0x90, 0x80, 0x80, 0x80, 0x40, 0x00, }}, +{ 0x013F, {0x80, 0x80, 0xA0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0140, {0xC0, 0x40, 0x50, 0x40, 0x40, 0xE0, 0x00, }}, +{ 0x0141, {0x80, 0x80, 0xC0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0142, {0x60, 0x20, 0x30, 0x60, 0x20, 0x70, 0x00, }}, +{ 0x0143, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x00, }}, +{ 0x0144, {0x20, 0x40, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0145, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x80, }}, +{ 0x0146, {0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x80, }}, +{ 0x0147, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x00, }}, +{ 0x0148, {0xA0, 0x40, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0149, {0x80, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x014A, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x20, }}, +{ 0x014B, {0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x20, }}, +{ 0x014C, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x014D, {0xF0, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x014E, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x014F, {0x90, 0x60, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0150, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0151, {0x48, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0152, {0x70, 0xA0, 0xB0, 0xA0, 0xA0, 0x70, 0x00, }}, +{ 0x0153, {0x00, 0x00, 0x70, 0xB0, 0xA0, 0x70, 0x00, }}, +{ 0x0154, {0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x0155, {0x20, 0x40, 0xE0, 0x90, 0x80, 0x80, 0x00, }}, +{ 0x0156, {0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x80, }}, +{ 0x0157, {0x00, 0x00, 0xE0, 0x90, 0x80, 0x80, 0x40, }}, +{ 0x0158, {0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x0159, {0xA0, 0x40, 0xE0, 0x90, 0x80, 0x80, 0x00, }}, +{ 0x015A, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00, }}, +{ 0x015B, {0x20, 0x40, 0x70, 0xC0, 0x30, 0xE0, 0x00, }}, +{ 0x015C, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00, }}, +{ 0x015D, {0x60, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0x00, }}, +{ 0x015E, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x40, }}, +{ 0x015F, {0x00, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0x40, }}, +{ 0x0160, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00, }}, +{ 0x0161, {0x50, 0x20, 0x70, 0xC0, 0x30, 0xE0, 0x00, }}, +{ 0x0162, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, }}, +{ 0x0163, {0x40, 0x40, 0xE0, 0x40, 0x40, 0x30, 0x40, }}, +{ 0x0164, {0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x0165, {0x50, 0x20, 0x40, 0xE0, 0x40, 0x30, 0x00, }}, +{ 0x0166, {0xE0, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x0167, {0x40, 0xE0, 0x40, 0xE0, 0x40, 0x30, 0x00, }}, +{ 0x0168, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0169, {0x50, 0xA0, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x016A, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x016B, {0xF0, 0x00, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x016C, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x016D, {0x90, 0x60, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x016E, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x016F, {0x60, 0x60, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0170, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0171, {0x48, 0x90, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0172, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x40, }}, +{ 0x0173, {0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x20, }}, +{ 0x0174, {0x90, 0x90, 0x90, 0xF0, 0xF0, 0x90, 0x00, }}, +{ 0x0175, {0x20, 0x50, 0x00, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x0176, {0xA0, 0xA0, 0xA0, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x0177, {0x20, 0x50, 0x00, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x0178, {0xA0, 0xA0, 0xA0, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x0179, {0xF0, 0x10, 0x20, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x017A, {0x20, 0x40, 0xF0, 0x20, 0x40, 0xF0, 0x00, }}, +{ 0x017B, {0xF0, 0x10, 0x20, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x017C, {0x20, 0x00, 0xF0, 0x20, 0x40, 0xF0, 0x00, }}, +{ 0x017D, {0xF0, 0x10, 0x20, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x017E, {0x50, 0x20, 0xF0, 0x20, 0x40, 0xF0, 0x00, }}, +{ 0x017F, {0x10, 0x20, 0x60, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x0180, {0x40, 0xE0, 0x40, 0x60, 0x50, 0x60, 0x00, }}, +{ 0x0181, {0xE0, 0x50, 0x60, 0x50, 0x50, 0x60, 0x00, }}, +{ 0x0182, {0xE0, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0183, {0x60, 0x40, 0x60, 0x50, 0x50, 0x60, 0x00, }}, +{ 0x0184, {0x40, 0xC0, 0xF0, 0x48, 0x48, 0x70, 0x00, }}, +{ 0x0185, {0x40, 0xC0, 0x60, 0x50, 0x50, 0x60, 0x00, }}, +{ 0x0186, {0x60, 0x90, 0x10, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x0187, {0x68, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0188, {0x00, 0x10, 0x60, 0x80, 0x80, 0x60, 0x00, }}, +{ 0x0189, {0xE0, 0x50, 0xD0, 0x50, 0x50, 0xE0, 0x00, }}, +{ 0x018A, {0xE0, 0x50, 0x50, 0x50, 0x50, 0x60, 0x00, }}, +{ 0x018B, {0x70, 0x10, 0x70, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x018C, {0x30, 0x10, 0x30, 0x50, 0x50, 0x30, 0x00, }}, +{ 0x018D, {0x00, 0x00, 0x60, 0x90, 0x60, 0x10, 0x60, }}, +{ 0x018E, {0xF0, 0x10, 0x70, 0x10, 0x10, 0xF0, 0x00, }}, +{ 0x018F, {0x60, 0x90, 0x10, 0xF0, 0x90, 0x60, 0x00, }}, +{ 0x0190, {0x60, 0x90, 0x40, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0191, {0x70, 0x40, 0x60, 0x40, 0x40, 0x40, 0x80, }}, +{ 0x0192, {0x20, 0x50, 0x40, 0xE0, 0x40, 0x40, 0x80, }}, +{ 0x0193, {0x70, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x0194, {0x00, 0x90, 0x90, 0x60, 0x90, 0x60, 0x00, }}, +{ 0x0195, {0x80, 0x80, 0xC8, 0xA8, 0xA8, 0x90, 0x00, }}, +{ 0x0196, {0x60, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, }}, +{ 0x0197, {0x70, 0x20, 0x70, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0198, {0xA0, 0xD0, 0x80, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x0199, {0x60, 0x80, 0xA0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x019A, {0x60, 0x20, 0x70, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x019B, {0x40, 0x30, 0x60, 0x20, 0x50, 0x50, 0x00, }}, +{ 0x019C, {0x90, 0x90, 0x90, 0x90, 0xF0, 0x50, 0x00, }}, +{ 0x019D, {0x48, 0x68, 0x68, 0x58, 0x58, 0x48, 0x80, }}, +{ 0x019E, {0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x019F, {0x60, 0x90, 0xF0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01A0, {0x68, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01A1, {0x00, 0x08, 0x70, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01A2, {0x70, 0xA8, 0xA8, 0xA8, 0xA8, 0x40, 0x00, }}, +{ 0x01A3, {0x00, 0x00, 0x70, 0xA8, 0xA8, 0x48, 0x00, }}, +{ 0x01A4, {0xE0, 0x50, 0x50, 0x60, 0x40, 0x40, 0x00, }}, +{ 0x01A5, {0x60, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x01A6, {0x80, 0xE0, 0x90, 0xE0, 0xC0, 0xA0, 0x10, }}, +{ 0x01A7, {0x60, 0x90, 0x20, 0x40, 0x90, 0x60, 0x00, }}, +{ 0x01A8, {0x00, 0x00, 0xE0, 0x30, 0xC0, 0x70, 0x00, }}, +{ 0x01A9, {0xF0, 0x80, 0x40, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x01AA, {0x40, 0xA0, 0x70, 0x20, 0x20, 0x20, 0x10, }}, +{ 0x01AB, {0x40, 0x40, 0xE0, 0x40, 0x70, 0x10, 0x20, }}, +{ 0x01AC, {0x70, 0xA0, 0xA0, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x01AD, {0x30, 0x40, 0xE0, 0x40, 0x40, 0x30, 0x00, }}, +{ 0x01AE, {0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x30, }}, +{ 0x01AF, {0x98, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01B0, {0x00, 0x08, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x01B1, {0x50, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, }}, +{ 0x01B2, {0xA0, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01B3, {0x90, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x01B4, {0x00, 0x00, 0x90, 0xA0, 0xA0, 0x40, 0x80, }}, +{ 0x01B5, {0xF0, 0x10, 0xF0, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x01B6, {0x00, 0x00, 0xF0, 0x70, 0x40, 0xF0, 0x00, }}, +{ 0x01B7, {0xF0, 0x20, 0x60, 0x10, 0x10, 0xE0, 0x00, }}, +{ 0x01B8, {0xF0, 0x40, 0x60, 0x80, 0x80, 0x70, 0x00, }}, +{ 0x01B9, {0x00, 0x00, 0xF0, 0x40, 0x60, 0x80, 0x70, }}, +{ 0x01BA, {0x00, 0x00, 0xF0, 0x20, 0x60, 0x30, 0xF8, }}, +{ 0x01BB, {0x60, 0x90, 0x10, 0xF0, 0x40, 0xF0, 0x00, }}, +{ 0x01BC, {0xF0, 0x80, 0xE0, 0x90, 0x10, 0xE0, 0x00, }}, +{ 0x01BD, {0x00, 0x00, 0x70, 0x60, 0x10, 0x60, 0x00, }}, +{ 0x01BE, {0x00, 0x20, 0x70, 0x20, 0x10, 0x60, 0x00, }}, +{ 0x01BF, {0x00, 0x00, 0xE0, 0x90, 0xA0, 0xC0, 0x80, }}, +{ 0x01C0, {0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x01C1, {0x00, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x01C2, {0x00, 0x20, 0x70, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x01C3, {0x00, 0x20, 0x20, 0x20, 0x00, 0x20, 0x00, }}, +{ 0x01C4, {0x18, 0xD8, 0xA8, 0xA8, 0xB0, 0xD8, 0x00, }}, +{ 0x01C5, {0xD8, 0xA0, 0xB8, 0xA8, 0xB0, 0xD8, 0x00, }}, +{ 0x01C6, {0x38, 0x20, 0x78, 0xA8, 0xB0, 0x78, 0x00, }}, +{ 0x01C7, {0x88, 0x88, 0x88, 0x88, 0xA8, 0xD0, 0x00, }}, +{ 0x01C8, {0x88, 0x80, 0x88, 0x88, 0x88, 0xE8, 0x10, }}, +{ 0x01C9, {0xC8, 0x40, 0x48, 0x48, 0x48, 0xE8, 0x10, }}, +{ 0x01CA, {0xC8, 0xA8, 0xA8, 0xA8, 0xA8, 0xB0, 0x00, }}, +{ 0x01CB, {0xC8, 0xA0, 0xA8, 0xA8, 0xA8, 0xA8, 0x10, }}, +{ 0x01CC, {0x08, 0x00, 0xC8, 0xA8, 0xA8, 0xA8, 0x10, }}, +{ 0x01CD, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x01CE, {0x50, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x01CF, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x01D0, {0x50, 0x20, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x01D1, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01D2, {0xA0, 0x40, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01D3, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01D4, {0x50, 0x20, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x01D5, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01D6, {0x70, 0x50, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x01D7, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01D8, {0x10, 0x70, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x01D9, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01DA, {0x50, 0x70, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x01DB, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x01DC, {0x40, 0x70, 0x00, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x01DD, {0x00, 0x00, 0x60, 0x30, 0xD0, 0x60, 0x00, }}, +{ 0x01DE, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x01DF, {0x70, 0x50, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x01E0, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x01E1, {0x70, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x01E2, {0xF0, 0x70, 0xA0, 0xF0, 0xA0, 0xB0, 0x00, }}, +{ 0x01E3, {0xF0, 0x00, 0x70, 0xB0, 0xA0, 0x70, 0x00, }}, +{ 0x01E4, {0x60, 0x90, 0x80, 0xB0, 0xB8, 0x70, 0x00, }}, +{ 0x01E5, {0x00, 0x00, 0x70, 0x90, 0x60, 0xB8, 0x70, }}, +{ 0x01E6, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x01E7, {0x50, 0x20, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x01E8, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x01E9, {0xD0, 0xA0, 0x80, 0xA0, 0xC0, 0xA0, 0x00, }}, +{ 0x01EA, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x40, }}, +{ 0x01EB, {0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x40, }}, +{ 0x01EC, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x40, }}, +{ 0x01ED, {0xF0, 0x00, 0x60, 0x90, 0x90, 0x60, 0x40, }}, +{ 0x01EE, {0xF0, 0x20, 0x60, 0x10, 0x10, 0xE0, 0x00, }}, +{ 0x01EF, {0x50, 0x20, 0xF0, 0x20, 0x60, 0x10, 0xE0, }}, +{ 0x01F0, {0x50, 0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, }}, +{ 0x01F1, {0xD8, 0xA8, 0xA8, 0xB0, 0xB0, 0xD8, 0x00, }}, +{ 0x01F2, {0xC0, 0xA0, 0xB8, 0xA8, 0xB0, 0xD8, 0x00, }}, +{ 0x01F3, {0x20, 0x20, 0x78, 0xA8, 0xB0, 0x78, 0x00, }}, +{ 0x01F4, {0x60, 0x90, 0x80, 0xB0, 0x90, 0x70, 0x00, }}, +{ 0x01F5, {0x10, 0x20, 0x70, 0x90, 0x60, 0x80, 0x70, }}, +{ 0x01F6, {0xA0, 0xA0, 0xE8, 0xA8, 0xA8, 0x90, 0x00, }}, +{ 0x01F7, {0xE0, 0x90, 0xA0, 0xC0, 0x80, 0x80, 0x00, }}, +{ 0x01F8, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x00, }}, +{ 0x01F9, {0x40, 0x20, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x01FA, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x01FB, {0x20, 0x40, 0x60, 0x60, 0x90, 0x70, 0x00, }}, +{ 0x01FC, {0x70, 0xA0, 0xB0, 0xE0, 0xA0, 0xB0, 0x00, }}, +{ 0x01FD, {0x10, 0x20, 0x70, 0xB0, 0xA0, 0x70, 0x00, }}, +{ 0x01FE, {0x70, 0xB0, 0xB0, 0xD0, 0xD0, 0xE0, 0x00, }}, +{ 0x01FF, {0x10, 0x20, 0x70, 0xB0, 0xD0, 0xE0, 0x00, }}, +{ 0x0200, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0201, {0xA0, 0x50, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x0202, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0203, {0x60, 0x90, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x0204, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0205, {0xA0, 0x50, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0206, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0207, {0x60, 0x90, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0208, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0209, {0xA0, 0x50, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x020A, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x020B, {0x60, 0x90, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x020C, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x020D, {0xA0, 0x50, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x020E, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x020F, {0x60, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0210, {0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x0211, {0xA0, 0x50, 0xE0, 0x90, 0x80, 0x80, 0x00, }}, +{ 0x0212, {0xE0, 0x90, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x0213, {0x60, 0x90, 0xE0, 0x90, 0x80, 0x80, 0x00, }}, +{ 0x0214, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0215, {0xA0, 0x50, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0216, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0217, {0x60, 0x90, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0218, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0xC0, }}, +{ 0x0219, {0x00, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0xC0, }}, +{ 0x021A, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, }}, +{ 0x021B, {0x40, 0x40, 0xE0, 0x40, 0x40, 0x30, 0x40, }}, +{ 0x021C, {0x60, 0x90, 0x10, 0x20, 0x10, 0xE0, 0x00, }}, +{ 0x021D, {0x00, 0x00, 0x60, 0xB0, 0x50, 0x20, 0xC0, }}, +{ 0x021E, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x021F, {0x50, 0xA0, 0x80, 0xE0, 0x90, 0x90, 0x00, }}, +{ 0x0250, {0x00, 0x00, 0xA0, 0xD0, 0x90, 0xE0, 0x00, }}, +{ 0x0251, {0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0252, {0x00, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0253, {0x60, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0254, {0x00, 0x00, 0x60, 0x10, 0x10, 0x60, 0x00, }}, +{ 0x0255, {0x00, 0x00, 0x60, 0x80, 0xB0, 0x60, 0x80, }}, +{ 0x0256, {0x10, 0x10, 0x70, 0x90, 0x90, 0x70, 0x18, }}, +{ 0x0257, {0x18, 0x10, 0x70, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x0258, {0x00, 0x00, 0x60, 0xD0, 0x30, 0x60, 0x00, }}, +{ 0x0259, {0x00, 0x00, 0x60, 0x30, 0xD0, 0x60, 0x00, }}, +{ 0x025A, {0x00, 0x00, 0x60, 0x38, 0xD0, 0x60, 0x00, }}, +{ 0x025B, {0x00, 0x00, 0x30, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x025C, {0x00, 0x00, 0x60, 0x20, 0x10, 0x60, 0x00, }}, +{ 0x025D, {0x00, 0x00, 0xF0, 0x40, 0x20, 0xC0, 0x00, }}, +{ 0x025E, {0x00, 0x00, 0x60, 0xA0, 0x90, 0x60, 0x00, }}, +{ 0x025F, {0x00, 0x20, 0x20, 0x70, 0x20, 0xA0, 0x40, }}, +{ 0x0260, {0x00, 0x08, 0x70, 0x90, 0x70, 0x10, 0x60, }}, +{ 0x0261, {0x00, 0x00, 0x70, 0x90, 0x70, 0x10, 0x60, }}, +{ 0x0262, {0x00, 0x00, 0x70, 0x80, 0x90, 0x70, 0x00, }}, +{ 0x0263, {0x00, 0x00, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x0264, {0x00, 0x00, 0x50, 0x20, 0x50, 0x20, 0x00, }}, +{ 0x0265, {0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x10, }}, +{ 0x0266, {0x60, 0x80, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0267, {0x60, 0x80, 0xE0, 0x90, 0x90, 0x90, 0x20, }}, +{ 0x0268, {0x20, 0x00, 0x20, 0x70, 0x20, 0x70, 0x00, }}, +{ 0x0269, {0x00, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x026A, {0x00, 0x00, 0xE0, 0x40, 0x40, 0xE0, 0x00, }}, +{ 0x026B, {0x60, 0x20, 0x68, 0xB0, 0x20, 0x70, 0x00, }}, +{ 0x026C, {0x60, 0x20, 0x60, 0x70, 0x20, 0x70, 0x00, }}, +{ 0x026D, {0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, }}, +{ 0x026E, {0x80, 0x80, 0xE0, 0x90, 0x90, 0xA0, 0x60, }}, +{ 0x026F, {0x00, 0x00, 0x90, 0x90, 0xF0, 0x50, 0x00, }}, +{ 0x0270, {0x00, 0x00, 0x90, 0x90, 0xF0, 0x50, 0x10, }}, +{ 0x0271, {0x00, 0x00, 0xA0, 0xF0, 0x90, 0x90, 0x20, }}, +{ 0x0272, {0x00, 0x00, 0x60, 0x50, 0x50, 0x50, 0x80, }}, +{ 0x0273, {0x00, 0x00, 0xC0, 0xA0, 0xA0, 0xA0, 0x10, }}, +{ 0x0274, {0x00, 0x00, 0x90, 0xD0, 0xB0, 0x90, 0x00, }}, +{ 0x0275, {0x00, 0x60, 0x90, 0xF0, 0x90, 0x60, 0x00, }}, +{ 0x0276, {0x00, 0x00, 0x70, 0xB0, 0xA0, 0x70, 0x00, }}, +{ 0x0277, {0x00, 0x00, 0x60, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x0278, {0x00, 0x20, 0x70, 0xA8, 0x70, 0x20, 0x00, }}, +{ 0x0279, {0x00, 0x00, 0x10, 0x10, 0x90, 0x70, 0x00, }}, +{ 0x027A, {0x00, 0x10, 0x10, 0x10, 0x90, 0x70, 0x00, }}, +{ 0x027B, {0x00, 0x00, 0x20, 0xA0, 0x60, 0x30, 0x00, }}, +{ 0x027C, {0x00, 0xE0, 0x90, 0x80, 0x80, 0x80, 0x80, }}, +{ 0x027D, {0x00, 0xE0, 0x90, 0x80, 0x80, 0x80, 0x40, }}, +{ 0x027E, {0x00, 0x00, 0x60, 0x90, 0x80, 0x80, 0x00, }}, +{ 0x027F, {0x00, 0x00, 0x60, 0x90, 0x10, 0x10, 0x00, }}, +{ 0x0280, {0x00, 0x00, 0xE0, 0x90, 0xE0, 0x90, 0x00, }}, +{ 0x0281, {0x00, 0x00, 0x90, 0xE0, 0x90, 0xE0, 0x00, }}, +{ 0x0282, {0x00, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0x80, }}, +{ 0x0283, {0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, }}, +{ 0x0284, {0x10, 0x20, 0x20, 0x20, 0x70, 0x20, 0x40, }}, +{ 0x0285, {0x00, 0x00, 0x40, 0x20, 0x20, 0x10, 0x00, }}, +{ 0x0286, {0x10, 0x20, 0x20, 0x20, 0x70, 0xA0, 0x40, }}, +{ 0x0287, {0x00, 0xC0, 0x20, 0x20, 0x70, 0x20, 0x20, }}, +{ 0x0288, {0x40, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x30, }}, +{ 0x0289, {0x00, 0x00, 0x90, 0xF0, 0x90, 0x70, 0x00, }}, +{ 0x028A, {0x00, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x028B, {0x00, 0x00, 0xA0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x028C, {0x00, 0x00, 0x20, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x028D, {0x00, 0x00, 0xF0, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x028E, {0x00, 0x20, 0x40, 0xA0, 0x90, 0x90, 0x00, }}, +{ 0x028F, {0x00, 0x00, 0xA0, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x0290, {0x00, 0x00, 0xF0, 0x20, 0x40, 0xF0, 0x10, }}, +{ 0x0291, {0x00, 0x00, 0xF0, 0x20, 0x50, 0xF0, 0x40, }}, +{ 0x0292, {0x00, 0x00, 0xF0, 0x20, 0x60, 0x10, 0xE0, }}, +{ 0x0293, {0x00, 0x00, 0xF0, 0x20, 0x60, 0x50, 0x78, }}, +{ 0x0294, {0x00, 0x60, 0x10, 0x30, 0x20, 0x20, 0x00, }}, +{ 0x0295, {0x00, 0x30, 0x40, 0x60, 0x20, 0x20, 0x00, }}, +{ 0x0296, {0x00, 0x20, 0x20, 0x30, 0x10, 0x60, 0x00, }}, +{ 0x0297, {0x00, 0x20, 0x50, 0x40, 0x40, 0x50, 0x20, }}, +{ 0x0298, {0x00, 0x70, 0x88, 0xA8, 0x88, 0x70, 0x00, }}, +{ 0x0299, {0x00, 0x00, 0xE0, 0xE0, 0x90, 0xE0, 0x00, }}, +{ 0x029A, {0x00, 0x00, 0x60, 0x50, 0x90, 0x60, 0x00, }}, +{ 0x029B, {0x00, 0x18, 0x70, 0x80, 0x90, 0x70, 0x00, }}, +{ 0x029C, {0x00, 0x00, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x029D, {0x20, 0x00, 0x20, 0x20, 0x70, 0xA0, 0x40, }}, +{ 0x029E, {0x00, 0x00, 0x90, 0x50, 0x30, 0x50, 0x10, }}, +{ 0x029F, {0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x02A0, {0x00, 0x18, 0x70, 0x90, 0x90, 0x70, 0x10, }}, +{ 0x02A1, {0x00, 0x60, 0x10, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x02A2, {0x00, 0x30, 0x40, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x02A3, {0x20, 0x20, 0x78, 0xA8, 0xB0, 0x78, 0x00, }}, +{ 0x02A4, {0x20, 0x20, 0x78, 0xA8, 0xB0, 0x68, 0x10, }}, +{ 0x02A5, {0x20, 0x20, 0x78, 0xA8, 0xB8, 0x78, 0x00, }}, +{ 0x02A6, {0x40, 0x40, 0xE8, 0x50, 0x48, 0x30, 0x00, }}, +{ 0x02A7, {0x48, 0x50, 0xF0, 0x50, 0x50, 0x30, 0x20, }}, +{ 0x02A8, {0x40, 0x40, 0xE8, 0x50, 0x50, 0x38, 0x10, }}, +{ 0x02B6, {0xA0, 0xC0, 0xA0, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x02B8, {0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B9, {0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BC, {0x30, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BD, {0x60, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C6, {0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C7, {0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C8, {0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C9, {0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02CC, {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, }}, +{ 0x02D0, {0x00, 0x70, 0x20, 0x00, 0x20, 0x70, 0x00, }}, +{ 0x02D6, {0x00, 0x00, 0x20, 0x70, 0x20, 0x00, 0x00, }}, +{ 0x02D8, {0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D9, {0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DA, {0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DB, {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, }}, +{ 0x02DC, {0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DD, {0x48, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0300, {0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0301, {0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0302, {0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0303, {0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0304, {0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0305, {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0306, {0x90, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0307, {0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0308, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0309, {0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030A, {0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030B, {0x48, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030C, {0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030D, {0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030E, {0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030F, {0x90, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0310, {0xA8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0311, {0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0323, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, }}, +{ 0x0324, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x0338, {0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, }}, +{ 0x0340, {0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0341, {0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0374, {0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0375, {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, }}, +{ 0x037A, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x037E, {0x00, 0x60, 0x60, 0x00, 0x60, 0x40, 0x80, }}, +{ 0x0384, {0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0385, {0xB0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0386, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x0387, {0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x0388, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x0389, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x038A, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x038C, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x038E, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x038F, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x0390, {0xB0, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x0391, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0392, {0xE0, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0393, {0xF0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0394, {0x60, 0x60, 0x90, 0x90, 0x90, 0xF0, 0x00, }}, +{ 0x0395, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0396, {0xF0, 0x10, 0x20, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x0397, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0398, {0x60, 0x90, 0xF0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x0399, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x039A, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x039B, {0x60, 0x60, 0x60, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x039C, {0x90, 0xF0, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x039D, {0x90, 0xD0, 0xD0, 0xB0, 0xB0, 0x90, 0x00, }}, +{ 0x039E, {0xF0, 0x00, 0x60, 0x00, 0x00, 0xF0, 0x00, }}, +{ 0x039F, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03A0, {0xF0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x03A1, {0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, 0x00, }}, +{ 0x03A3, {0xF0, 0x80, 0x40, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x03A4, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x03A5, {0x50, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x03A6, {0x20, 0x70, 0x50, 0x50, 0x70, 0x20, 0x00, }}, +{ 0x03A7, {0x90, 0x90, 0x60, 0x60, 0x90, 0x90, 0x00, }}, +{ 0x03A8, {0x50, 0x70, 0x70, 0x70, 0x20, 0x20, 0x00, }}, +{ 0x03A9, {0x20, 0x50, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x03AA, {0x50, 0x00, 0x70, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x03AB, {0xA0, 0x00, 0xA0, 0xA0, 0x40, 0x40, 0x00, }}, +{ 0x03AC, {0x10, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x03AD, {0x10, 0x20, 0x70, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x03AE, {0x20, 0x40, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x03AF, {0x20, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x03B0, {0xB0, 0x40, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03B1, {0x00, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x03B2, {0x60, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x03B3, {0x00, 0x00, 0x50, 0x50, 0x20, 0x20, 0x20, }}, +{ 0x03B4, {0x70, 0x80, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03B5, {0x00, 0x00, 0x70, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x03B6, {0xF0, 0x40, 0x80, 0x80, 0x80, 0x70, 0x10, }}, +{ 0x03B7, {0x00, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x03B8, {0x20, 0x50, 0x70, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x03B9, {0x00, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x03BA, {0x00, 0x00, 0x90, 0xA0, 0xE0, 0x90, 0x00, }}, +{ 0x03BB, {0xE0, 0x10, 0x50, 0xB0, 0x90, 0x90, 0x00, }}, +{ 0x03BC, {0x00, 0x00, 0x90, 0x90, 0x90, 0xF0, 0x80, }}, +{ 0x03BD, {0x00, 0x00, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x03BE, {0xF0, 0x40, 0x80, 0x60, 0x80, 0x70, 0x10, }}, +{ 0x03BF, {0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03C0, {0x00, 0x00, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x03C1, {0x00, 0x00, 0x60, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x03C2, {0x00, 0x00, 0x70, 0xC0, 0x30, 0x60, 0x00, }}, +{ 0x03C3, {0x00, 0x00, 0x70, 0xA0, 0x90, 0x60, 0x00, }}, +{ 0x03C4, {0x00, 0x00, 0xF0, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x03C5, {0x00, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03C6, {0x00, 0x00, 0x20, 0x70, 0x50, 0x70, 0x20, }}, +{ 0x03C7, {0x00, 0x00, 0x90, 0x60, 0x60, 0x90, 0x90, }}, +{ 0x03C8, {0x00, 0x00, 0x50, 0x70, 0x70, 0x20, 0x20, }}, +{ 0x03C9, {0x00, 0x00, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x03CA, {0xA0, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x03CB, {0x90, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03CC, {0x20, 0x40, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03CD, {0x20, 0x40, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03CE, {0x20, 0x40, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x03D0, {0x60, 0x90, 0xA0, 0xD0, 0x90, 0x60, 0x00, }}, +{ 0x03D1, {0x60, 0x90, 0x70, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x03D2, {0x50, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x03D3, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x03D4, {0x50, 0x00, 0x50, 0x50, 0x20, 0x20, 0x00, }}, +{ 0x03D5, {0x00, 0x00, 0x20, 0x70, 0x50, 0x70, 0x20, }}, +{ 0x03D6, {0x00, 0x00, 0xF0, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x03D7, {0x40, 0x20, 0x90, 0x60, 0x60, 0x90, 0x30, }}, +{ 0x03DA, {0x20, 0x50, 0x80, 0x80, 0x60, 0x10, 0x20, }}, +{ 0x03DB, {0x00, 0x00, 0x70, 0xC0, 0x30, 0x60, 0x00, }}, +{ 0x03DC, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x03DD, {0x00, 0x00, 0x70, 0x40, 0x60, 0x40, 0x40, }}, +{ 0x03DE, {0x80, 0x90, 0xB0, 0xD0, 0x90, 0x10, 0x00, }}, +{ 0x03DF, {0x40, 0x40, 0x80, 0xF0, 0x10, 0x20, 0x20, }}, +{ 0x03E0, {0x60, 0x60, 0x60, 0x90, 0xB0, 0xB0, 0x00, }}, +{ 0x03E1, {0xC0, 0x20, 0x50, 0xB0, 0x50, 0x10, 0x10, }}, +{ 0x03F0, {0x00, 0x00, 0x90, 0x60, 0x60, 0xB0, 0x00, }}, +{ 0x03F1, {0x00, 0x00, 0x60, 0x90, 0xE0, 0x80, 0x60, }}, +{ 0x03F2, {0x00, 0x00, 0x30, 0x40, 0x40, 0x30, 0x00, }}, +{ 0x03F3, {0x10, 0x00, 0x10, 0x10, 0x10, 0x50, 0x20, }}, +{ 0x03F4, {0x60, 0x90, 0xF0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x03F5, {0x00, 0x00, 0x30, 0x60, 0x40, 0x30, 0x00, }}, +{ 0x0401, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0402, {0xE0, 0x40, 0x60, 0x50, 0x50, 0x10, 0x20, }}, +{ 0x0403, {0xF0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0404, {0x60, 0x90, 0xC0, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0405, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00, }}, +{ 0x0406, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0407, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0408, {0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x0409, {0x60, 0xA0, 0xB0, 0xA8, 0xA8, 0xB0, 0x00, }}, +{ 0x040A, {0xA0, 0xA0, 0xF0, 0xA8, 0xA8, 0xB0, 0x00, }}, +{ 0x040B, {0xE0, 0x40, 0x60, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x040C, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x040E, {0x50, 0x50, 0x50, 0x20, 0x20, 0x40, 0x00, }}, +{ 0x040F, {0x50, 0x50, 0x50, 0x50, 0x50, 0x70, 0x20, }}, +{ 0x0410, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x0411, {0xE0, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0412, {0xE0, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x0413, {0xF0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0414, {0x30, 0x50, 0x50, 0x50, 0x50, 0xF0, 0x90, }}, +{ 0x0415, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x0416, {0xA8, 0xA8, 0x70, 0x70, 0xA8, 0xA8, 0x00, }}, +{ 0x0417, {0xE0, 0x10, 0x60, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x0418, {0x90, 0xB0, 0xB0, 0xD0, 0xD0, 0x90, 0x00, }}, +{ 0x0419, {0xD0, 0xB0, 0xB0, 0xD0, 0xD0, 0x90, 0x00, }}, +{ 0x041A, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x00, }}, +{ 0x041B, {0x30, 0x50, 0x50, 0x50, 0x50, 0x90, 0x00, }}, +{ 0x041C, {0x90, 0xF0, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x041D, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x041E, {0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x041F, {0xF0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0420, {0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, 0x00, }}, +{ 0x0421, {0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00, }}, +{ 0x0422, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x0423, {0x50, 0x50, 0x50, 0x20, 0x20, 0x40, 0x00, }}, +{ 0x0424, {0x20, 0x70, 0x50, 0x50, 0x70, 0x20, 0x00, }}, +{ 0x0425, {0x90, 0x90, 0x60, 0x60, 0x90, 0x90, 0x00, }}, +{ 0x0426, {0x90, 0x90, 0x90, 0x90, 0x90, 0xF0, 0x10, }}, +{ 0x0427, {0x90, 0x90, 0x90, 0x70, 0x10, 0x10, 0x00, }}, +{ 0x0428, {0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xF8, 0x00, }}, +{ 0x0429, {0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xF8, 0x08, }}, +{ 0x042A, {0xC0, 0x40, 0x60, 0x50, 0x50, 0x60, 0x00, }}, +{ 0x042B, {0x90, 0x90, 0xD0, 0xB0, 0xB0, 0xD0, 0x00, }}, +{ 0x042C, {0x80, 0x80, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x042D, {0x60, 0x90, 0x30, 0x10, 0x90, 0x60, 0x00, }}, +{ 0x042E, {0xA0, 0xD0, 0xD0, 0xD0, 0xD0, 0xA0, 0x00, }}, +{ 0x042F, {0x70, 0x90, 0x90, 0x70, 0x50, 0x90, 0x00, }}, +{ 0x0430, {0x00, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x0431, {0x00, 0x60, 0x80, 0xE0, 0x90, 0x60, 0x00, }}, +{ 0x0432, {0x00, 0x00, 0xE0, 0xE0, 0x90, 0xE0, 0x00, }}, +{ 0x0433, {0x00, 0x00, 0xF0, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0434, {0x00, 0x00, 0x30, 0x50, 0x50, 0xF0, 0x90, }}, +{ 0x0435, {0x00, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0436, {0x00, 0x00, 0xA8, 0x70, 0x70, 0xA8, 0x00, }}, +{ 0x0437, {0x00, 0x00, 0xE0, 0x60, 0x20, 0xC0, 0x00, }}, +{ 0x0438, {0x00, 0x00, 0x90, 0xB0, 0xD0, 0x90, 0x00, }}, +{ 0x0439, {0x90, 0x60, 0x90, 0xB0, 0xD0, 0x90, 0x00, }}, +{ 0x043A, {0x00, 0x00, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x043B, {0x00, 0x00, 0x30, 0x50, 0x50, 0x90, 0x00, }}, +{ 0x043C, {0x00, 0x00, 0x88, 0xD8, 0xA8, 0xA8, 0x00, }}, +{ 0x043D, {0x00, 0x00, 0x90, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x043E, {0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x043F, {0x00, 0x00, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x0440, {0x00, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x0441, {0x00, 0x00, 0x60, 0x80, 0x80, 0x60, 0x00, }}, +{ 0x0442, {0x00, 0x00, 0xE0, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x0443, {0x00, 0x00, 0x90, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x0444, {0x60, 0x20, 0x20, 0x70, 0x50, 0x70, 0x20, }}, +{ 0x0445, {0x00, 0x00, 0x90, 0x60, 0x60, 0x90, 0x00, }}, +{ 0x0446, {0x00, 0x00, 0x90, 0x90, 0x90, 0xF0, 0x10, }}, +{ 0x0447, {0x00, 0x00, 0x90, 0x90, 0x70, 0x10, 0x00, }}, +{ 0x0448, {0x00, 0x00, 0xA8, 0xA8, 0xA8, 0xF8, 0x00, }}, +{ 0x0449, {0x00, 0x00, 0xA8, 0xA8, 0xA8, 0xF8, 0x08, }}, +{ 0x044A, {0x00, 0x00, 0xC0, 0x60, 0x50, 0x60, 0x00, }}, +{ 0x044B, {0x00, 0x00, 0x90, 0xD0, 0xB0, 0xD0, 0x00, }}, +{ 0x044C, {0x00, 0x00, 0x80, 0xE0, 0x90, 0xE0, 0x00, }}, +{ 0x044D, {0x00, 0x00, 0x60, 0x30, 0x10, 0x60, 0x00, }}, +{ 0x044E, {0x00, 0x00, 0xA0, 0xD0, 0xD0, 0xA0, 0x00, }}, +{ 0x044F, {0x00, 0x00, 0x60, 0xA0, 0x60, 0xA0, 0x00, }}, +{ 0x0451, {0xA0, 0x00, 0x60, 0xB0, 0xC0, 0x60, 0x00, }}, +{ 0x0452, {0x40, 0xE0, 0x40, 0x60, 0x50, 0x10, 0x20, }}, +{ 0x0453, {0x20, 0x40, 0xF0, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0454, {0x00, 0x00, 0x30, 0x60, 0x40, 0x30, 0x00, }}, +{ 0x0455, {0x00, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0x00, }}, +{ 0x0456, {0x20, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0457, {0x50, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x0458, {0x10, 0x00, 0x10, 0x10, 0x10, 0x50, 0x20, }}, +{ 0x0459, {0x00, 0x00, 0x60, 0xB8, 0xA8, 0xB0, 0x00, }}, +{ 0x045A, {0x00, 0x00, 0xA0, 0xF0, 0xA8, 0xB0, 0x00, }}, +{ 0x045B, {0x40, 0xE0, 0x40, 0x70, 0x48, 0x48, 0x00, }}, +{ 0x045C, {0x20, 0x40, 0x90, 0xE0, 0xA0, 0x90, 0x00, }}, +{ 0x045E, {0x90, 0x60, 0x00, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x045F, {0x00, 0x00, 0x50, 0x50, 0x50, 0x70, 0x20, }}, +{ 0x0490, {0x10, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0491, {0x00, 0x10, 0xF0, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x0492, {0x00, 0x70, 0x40, 0xE0, 0x40, 0x40, 0x00, }}, +{ 0x0493, {0x00, 0x00, 0x70, 0x40, 0xE0, 0x40, 0x00, }}, +{ 0x0496, {0xA8, 0xA8, 0x70, 0x70, 0xA8, 0xA8, 0x08, }}, +{ 0x0497, {0x00, 0x00, 0xA8, 0x70, 0x70, 0xA8, 0x08, }}, +{ 0x049A, {0x90, 0xA0, 0xC0, 0xC0, 0xA0, 0x90, 0x08, }}, +{ 0x049B, {0x00, 0x00, 0x90, 0xE0, 0xA0, 0x90, 0x08, }}, +{ 0x04AE, {0x50, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x04AF, {0x00, 0x00, 0x50, 0x50, 0x20, 0x20, 0x20, }}, +{ 0x04B0, {0x50, 0x50, 0x20, 0x70, 0x20, 0x20, 0x00, }}, +{ 0x04B1, {0x00, 0x00, 0x50, 0x20, 0x70, 0x20, 0x20, }}, +{ 0x04B2, {0x90, 0x90, 0x60, 0x60, 0x90, 0x90, 0x08, }}, +{ 0x04B3, {0x00, 0x00, 0x90, 0x60, 0x60, 0x90, 0x08, }}, +{ 0x04BA, {0x80, 0x80, 0xE0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x04BB, {0x40, 0x40, 0x60, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x04D8, {0x60, 0x90, 0x10, 0xF0, 0x90, 0x60, 0x00, }}, +{ 0x04D9, {0x00, 0x00, 0x60, 0x30, 0xD0, 0x60, 0x00, }}, +{ 0x04E2, {0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x04E3, {0x70, 0x00, 0x60, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x04E8, {0x60, 0x90, 0xF0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x04E9, {0x00, 0x00, 0x60, 0xF0, 0x90, 0x60, 0x00, }}, +{ 0x04EE, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x04EF, {0xF0, 0x00, 0x90, 0x90, 0x90, 0x70, 0x00, }}, +{ 0x05D0, {0x00, 0x00, 0x90, 0x50, 0xA0, 0x90, 0x00, }}, +{ 0x05D1, {0x00, 0x00, 0xE0, 0x20, 0x20, 0xF0, 0x00, }}, +{ 0x05D2, {0x00, 0x40, 0x20, 0x20, 0x20, 0xD0, 0x00, }}, +{ 0x05D3, {0x00, 0x00, 0xF0, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x05D4, {0x00, 0x00, 0xF0, 0x10, 0x90, 0x90, 0x00, }}, +{ 0x05D5, {0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x05D6, {0x00, 0x00, 0x70, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x05D7, {0x00, 0x00, 0xF0, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x05D8, {0x00, 0x00, 0x90, 0x90, 0x90, 0xF0, 0x00, }}, +{ 0x05D9, {0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05DA, {0x00, 0x00, 0xF0, 0x10, 0x20, 0x20, 0x00, }}, +{ 0x05DB, {0x00, 0x80, 0x70, 0x10, 0x10, 0xE0, 0x00, }}, +{ 0x05DC, {0x00, 0x80, 0x70, 0x10, 0x20, 0x40, 0x00, }}, +{ 0x05DD, {0x00, 0x80, 0x70, 0x90, 0x90, 0xF0, 0x00, }}, +{ 0x05DE, {0x00, 0x80, 0x70, 0x90, 0x90, 0xB0, 0x00, }}, +{ 0x05DF, {0x00, 0x40, 0x20, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x05E0, {0x00, 0x40, 0x20, 0x20, 0x20, 0x60, 0x00, }}, +{ 0x05E1, {0x00, 0x80, 0x78, 0x48, 0x48, 0x30, 0x00, }}, +{ 0x05E2, {0x00, 0x00, 0x90, 0x50, 0x50, 0xF0, 0x00, }}, +{ 0x05E3, {0x00, 0x00, 0x70, 0x90, 0x10, 0x10, 0x00, }}, +{ 0x05E4, {0x00, 0x00, 0xF0, 0x90, 0x10, 0xF0, 0x00, }}, +{ 0x05E5, {0x00, 0x00, 0x50, 0x60, 0x40, 0x40, 0x00, }}, +{ 0x05E6, {0x00, 0x00, 0x90, 0x60, 0x20, 0xF0, 0x00, }}, +{ 0x05E7, {0x00, 0x00, 0xE0, 0x10, 0xA0, 0x80, 0x00, }}, +{ 0x05E8, {0x00, 0x00, 0xF0, 0x10, 0x10, 0x10, 0x00, }}, +{ 0x05E9, {0x00, 0x00, 0xA8, 0xC8, 0x88, 0xF0, 0x00, }}, +{ 0x05EA, {0x00, 0x00, 0xF0, 0x50, 0x50, 0xD0, 0x00, }}, +{ 0x16A0, {0x50, 0x60, 0x50, 0x60, 0x40, 0x40, 0x00, }}, +{ 0x16A2, {0x60, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x16A3, {0x20, 0x50, 0x50, 0x70, 0x70, 0x70, 0x00, }}, +{ 0x16A6, {0x40, 0x60, 0x50, 0x50, 0x60, 0x40, 0x00, }}, +{ 0x16A9, {0xD0, 0xA0, 0x80, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x16AA, {0xD0, 0xA0, 0x80, 0xC0, 0xA0, 0x80, 0x00, }}, +{ 0x16AB, {0x60, 0x50, 0x60, 0x50, 0x40, 0x40, 0x00, }}, +{ 0x16B1, {0xE0, 0x90, 0xA0, 0xC0, 0xA0, 0x80, 0x00, }}, +{ 0x16B3, {0x40, 0x40, 0x60, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x16B7, {0x50, 0x50, 0x20, 0x20, 0x50, 0x50, 0x00, }}, +{ 0x16B8, {0x50, 0x70, 0xA8, 0xA8, 0x70, 0x50, 0x00, }}, +{ 0x16B9, {0x60, 0x50, 0x50, 0x60, 0x40, 0x40, 0x00, }}, +{ 0x16BB, {0x90, 0x90, 0xD0, 0xB0, 0xD0, 0xB0, 0x00, }}, +{ 0x16BE, {0x20, 0x20, 0x60, 0x30, 0x20, 0x20, 0x00, }}, +{ 0x16C0, {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x16C4, {0x20, 0x70, 0xA8, 0xA8, 0x70, 0x20, 0x00, }}, +{ 0x16C7, {0x20, 0x30, 0x28, 0xA0, 0x60, 0x20, 0x00, }}, +{ 0x16C8, {0xD0, 0xA0, 0x80, 0x80, 0xA0, 0xD0, 0x00, }}, +{ 0x16C9, {0xA8, 0xA8, 0xA8, 0x70, 0x20, 0x20, 0x00, }}, +{ 0x16CB, {0x80, 0x90, 0xB0, 0xD0, 0x90, 0x10, 0x00, }}, +{ 0x16CF, {0x20, 0x70, 0xA8, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x16D2, {0xE0, 0x90, 0xE0, 0xE0, 0x90, 0xE0, 0x00, }}, +{ 0x16D6, {0x88, 0xD8, 0xA8, 0x88, 0x88, 0x88, 0x00, }}, +{ 0x16D7, {0x88, 0xD8, 0xA8, 0xD8, 0x88, 0x88, 0x00, }}, +{ 0x16DA, {0x40, 0x60, 0x50, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x16DD, {0x50, 0x20, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x16DE, {0x88, 0x88, 0xD8, 0xA8, 0xD8, 0x88, 0x00, }}, +{ 0x16DF, {0x20, 0x50, 0x50, 0x20, 0x50, 0x50, 0x00, }}, +{ 0x16E0, {0xA8, 0x70, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x16E1, {0xA8, 0x70, 0x70, 0xA8, 0x20, 0x20, 0x00, }}, +{ 0x16E2, {0x28, 0x30, 0x20, 0x20, 0x60, 0xA0, 0x00, }}, +{ 0x16E3, {0x20, 0x20, 0x20, 0x70, 0xA8, 0xA8, 0x00, }}, +{ 0x16E4, {0x90, 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x00, }}, +{ 0x16EB, {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x16EC, {0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, }}, +{ 0x16ED, {0x00, 0x00, 0x50, 0x20, 0x50, 0x00, 0x00, }}, +{ 0x1E02, {0xE0, 0x90, 0xE0, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x1E03, {0x20, 0x80, 0x80, 0xE0, 0x90, 0xE0, 0x00, }}, +{ 0x1E0A, {0xE0, 0x90, 0x90, 0x90, 0x90, 0xE0, 0x00, }}, +{ 0x1E0B, {0x40, 0x10, 0x10, 0x70, 0x90, 0x70, 0x00, }}, +{ 0x1E1E, {0xF0, 0x80, 0xE0, 0x80, 0x80, 0x80, 0x00, }}, +{ 0x1E1F, {0x80, 0x20, 0x40, 0xE0, 0x40, 0x40, 0x00, }}, +{ 0x1E40, {0x90, 0xF0, 0xF0, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x1E41, {0x20, 0x00, 0xA0, 0xF0, 0x90, 0x90, 0x00, }}, +{ 0x1E56, {0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, 0x00, }}, +{ 0x1E57, {0x20, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x1E60, {0x60, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00, }}, +{ 0x1E61, {0x20, 0x00, 0x70, 0xC0, 0x30, 0xE0, 0x00, }}, +{ 0x1E6A, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1E6B, {0x80, 0x20, 0x70, 0x20, 0x20, 0x10, 0x00, }}, +{ 0x1E80, {0x90, 0x90, 0x90, 0xF0, 0xF0, 0x90, 0x00, }}, +{ 0x1E81, {0x40, 0x20, 0x00, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1E82, {0x90, 0x90, 0x90, 0xF0, 0xF0, 0x90, 0x00, }}, +{ 0x1E83, {0x20, 0x40, 0x00, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1E84, {0x90, 0x90, 0x90, 0xF0, 0xF0, 0x90, 0x00, }}, +{ 0x1E85, {0x00, 0xA0, 0x00, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1EF2, {0x50, 0x50, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1EF3, {0x40, 0x20, 0x00, 0x90, 0x50, 0x20, 0x40, }}, +{ 0x1F00, {0x60, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F01, {0x60, 0x40, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F02, {0xE0, 0x50, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F03, {0xE0, 0x90, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F04, {0xD0, 0x60, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F05, {0xD0, 0xA0, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F06, {0x70, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F07, {0x70, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F08, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F09, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F0A, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F0B, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F0C, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F0D, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F0E, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F0F, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1F10, {0x30, 0x10, 0x70, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x1F11, {0x30, 0x20, 0x70, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x1F12, {0xE0, 0x50, 0xE0, 0x40, 0x80, 0x60, 0x00, }}, +{ 0x1F13, {0xE0, 0x90, 0xE0, 0x40, 0x80, 0x60, 0x00, }}, +{ 0x1F14, {0xD0, 0x60, 0xE0, 0x40, 0x80, 0x60, 0x00, }}, +{ 0x1F15, {0xD0, 0xA0, 0xE0, 0x40, 0x80, 0x60, 0x00, }}, +{ 0x1F18, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1F19, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1F1A, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1F1B, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1F1C, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1F1D, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1F20, {0x60, 0x20, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F21, {0x60, 0x40, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F22, {0xE0, 0x50, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F23, {0xE0, 0x90, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F24, {0xD0, 0x60, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F25, {0xD0, 0xA0, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F26, {0x70, 0x20, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F27, {0x70, 0x20, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F28, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F29, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F2A, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F2B, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F2C, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F2D, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F2E, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F2F, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1F30, {0x60, 0x20, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F31, {0x60, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F32, {0xE0, 0x50, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F33, {0xE0, 0x90, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F34, {0xD0, 0x60, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F35, {0xD0, 0xA0, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F36, {0xE0, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F37, {0xE0, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F38, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F39, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F3A, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F3B, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F3C, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F3D, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F3E, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F3F, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1F40, {0x60, 0x20, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F41, {0x60, 0x40, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F42, {0xE0, 0x50, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F43, {0xE0, 0x90, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F44, {0xD0, 0x60, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F45, {0xD0, 0xA0, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F48, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1F49, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1F4A, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1F4B, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1F4C, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1F4D, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1F50, {0x60, 0x20, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F51, {0x60, 0x40, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F52, {0xE0, 0x50, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F53, {0xE0, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F54, {0xD0, 0x60, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F55, {0xD0, 0xA0, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F56, {0x70, 0x20, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F57, {0x70, 0x20, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F59, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1F5B, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1F5D, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1F5F, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1F60, {0x60, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F61, {0x60, 0x40, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F62, {0xE0, 0x50, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F63, {0xE0, 0x90, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F64, {0xD0, 0x60, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F65, {0xD0, 0xA0, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F66, {0x70, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F67, {0x70, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F68, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F69, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F6A, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F6B, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F6C, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F6D, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F6E, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F6F, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1F70, {0x40, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F71, {0x10, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1F72, {0x40, 0x20, 0x70, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x1F73, {0x10, 0x20, 0x70, 0x20, 0x40, 0x30, 0x00, }}, +{ 0x1F74, {0x80, 0x40, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F75, {0x20, 0x40, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1F76, {0x80, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F77, {0x20, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1F78, {0x80, 0x40, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F79, {0x20, 0x40, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F7A, {0x40, 0x20, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F7B, {0x20, 0x40, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1F7C, {0x40, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F7D, {0x20, 0x40, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1F80, {0x60, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F81, {0x60, 0x40, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F82, {0xE0, 0x50, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F83, {0xE0, 0x90, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F84, {0xD0, 0x60, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F85, {0xD0, 0xA0, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F86, {0x70, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F87, {0x70, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1F88, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F89, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F8A, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F8B, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F8C, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F8D, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F8E, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F8F, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x20, }}, +{ 0x1F90, {0x60, 0x20, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F91, {0x60, 0x40, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F92, {0xE0, 0x50, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F93, {0xE0, 0x90, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F94, {0xD0, 0x60, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F95, {0xD0, 0xA0, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F96, {0x70, 0x20, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F97, {0x70, 0x20, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1F98, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F99, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F9A, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F9B, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F9C, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F9D, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F9E, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1F9F, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x20, }}, +{ 0x1FA0, {0x60, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA1, {0x60, 0x40, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA2, {0xE0, 0x50, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA3, {0xE0, 0x90, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA4, {0xD0, 0x60, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA5, {0xD0, 0xA0, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA6, {0x70, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA7, {0x70, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FA8, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FA9, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FAA, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FAB, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FAC, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FAD, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FAE, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FAF, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FB0, {0x90, 0x60, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1FB1, {0xF0, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1FB2, {0x40, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1FB3, {0x00, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1FB4, {0x10, 0x20, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1FB6, {0x70, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x00, }}, +{ 0x1FB7, {0x70, 0x00, 0x70, 0x90, 0xB0, 0x50, 0x40, }}, +{ 0x1FB8, {0x90, 0x60, 0x60, 0x90, 0xF0, 0x90, 0x00, }}, +{ 0x1FB9, {0xF0, 0x00, 0x60, 0x90, 0xF0, 0x90, 0x00, }}, +{ 0x1FBA, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1FBB, {0xA0, 0xD0, 0x50, 0x70, 0x50, 0x50, 0x00, }}, +{ 0x1FBC, {0x60, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x40, }}, +{ 0x1FBD, {0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FBE, {0x00, 0x00, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1FBF, {0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC0, {0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC1, {0xE0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC2, {0x80, 0x40, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1FC3, {0x00, 0x00, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1FC4, {0x20, 0x40, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1FC6, {0x70, 0x00, 0xE0, 0x90, 0x90, 0x90, 0x10, }}, +{ 0x1FC7, {0x70, 0x00, 0xE0, 0x90, 0x90, 0x10, 0x90, }}, +{ 0x1FC8, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1FC9, {0xF0, 0xC0, 0x60, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x1FCA, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1FCB, {0xD0, 0xD0, 0x70, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x1FCC, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x90, 0x40, }}, +{ 0x1FCD, {0xE0, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCE, {0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCF, {0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD0, {0x90, 0x60, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1FD1, {0xF0, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1FD2, {0xD0, 0x20, 0x00, 0x20, 0x20, 0x10, 0x00, }}, +{ 0x1FD3, {0xB0, 0x40, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1FD6, {0xE0, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1FD7, {0xE0, 0xA0, 0x00, 0x40, 0x40, 0x20, 0x00, }}, +{ 0x1FD8, {0x90, 0x60, 0x70, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1FD9, {0x70, 0x00, 0x70, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1FDA, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1FDB, {0xF0, 0xA0, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x1FDD, {0xE0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDE, {0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDF, {0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE0, {0x90, 0x60, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1FE1, {0xF0, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1FE2, {0xD0, 0x20, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1FE3, {0xB0, 0x40, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1FE4, {0x60, 0x20, 0x60, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x1FE5, {0x60, 0x40, 0x60, 0x90, 0x90, 0xE0, 0x80, }}, +{ 0x1FE6, {0x70, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1FE7, {0xF0, 0x90, 0x00, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x1FE8, {0x90, 0x60, 0xA0, 0xA0, 0x40, 0x40, 0x00, }}, +{ 0x1FE9, {0xF0, 0x00, 0xA0, 0xA0, 0x40, 0x40, 0x00, }}, +{ 0x1FEA, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1FEB, {0xD0, 0xD0, 0x50, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x1FEC, {0xE0, 0xD0, 0x50, 0x60, 0x40, 0x40, 0x00, }}, +{ 0x1FED, {0xD0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEE, {0xB0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEF, {0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FF2, {0x40, 0x20, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FF3, {0x00, 0x00, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FF4, {0x20, 0x40, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FF6, {0x70, 0x00, 0x90, 0x90, 0xF0, 0xF0, 0x00, }}, +{ 0x1FF7, {0x70, 0x00, 0x90, 0x90, 0xF0, 0xF0, 0x40, }}, +{ 0x1FF8, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1FF9, {0xA0, 0xD0, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x1FFA, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1FFB, {0xA0, 0xD0, 0x50, 0x50, 0x20, 0x50, 0x00, }}, +{ 0x1FFC, {0x20, 0x50, 0x50, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x1FFD, {0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FFE, {0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2010, {0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, }}, +{ 0x2011, {0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, }}, +{ 0x2012, {0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, }}, +{ 0x2013, {0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, }}, +{ 0x2014, {0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2015, {0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2016, {0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x2017, {0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xF0, }}, +{ 0x2018, {0x20, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2019, {0x60, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201A, {0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x40, }}, +{ 0x201B, {0x60, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201C, {0x50, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201D, {0x50, 0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201E, {0x00, 0x00, 0x00, 0x00, 0x50, 0x50, 0xA0, }}, +{ 0x201F, {0xA0, 0xA0, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2020, {0x00, 0x20, 0x70, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x2021, {0x00, 0x20, 0x70, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x2022, {0x00, 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x00, }}, +{ 0x2023, {0x00, 0x40, 0x60, 0x70, 0x60, 0x40, 0x00, }}, +{ 0x2024, {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, }}, +{ 0x2025, {0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, }}, +{ 0x2026, {0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, }}, +{ 0x2027, {0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x2030, {0x80, 0x90, 0x20, 0x40, 0xA8, 0x28, 0x00, }}, +{ 0x2032, {0x20, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2033, {0x50, 0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2034, {0x70, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2035, {0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2036, {0xA0, 0xA0, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2037, {0xE0, 0xE0, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2039, {0x00, 0x00, 0x20, 0x40, 0x20, 0x00, 0x00, }}, +{ 0x203A, {0x00, 0x00, 0x40, 0x20, 0x40, 0x00, 0x00, }}, +{ 0x203C, {0x50, 0x50, 0x50, 0x50, 0x00, 0x50, 0x00, }}, +{ 0x203E, {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2044, {0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, }}, +{ 0x2070, {0x20, 0x50, 0x50, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x2071, {0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x2074, {0x20, 0x60, 0x70, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x2075, {0x70, 0x60, 0x10, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x2076, {0x30, 0x60, 0x50, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x2077, {0x70, 0x10, 0x20, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x2078, {0x20, 0x50, 0x20, 0x50, 0x20, 0x00, 0x00, }}, +{ 0x2079, {0x20, 0x50, 0x30, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x207A, {0x00, 0x20, 0x70, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x207B, {0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207C, {0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, }}, +{ 0x207D, {0x20, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x207E, {0x20, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x207F, {0x00, 0x60, 0x50, 0x50, 0x00, 0x00, 0x00, }}, +{ 0x2080, {0x00, 0x00, 0x00, 0x20, 0x50, 0x50, 0x20, }}, +{ 0x2081, {0x00, 0x00, 0x00, 0x20, 0x60, 0x20, 0x70, }}, +{ 0x2082, {0x00, 0x00, 0x00, 0x60, 0x20, 0x40, 0x60, }}, +{ 0x2083, {0x00, 0x00, 0x00, 0x60, 0x60, 0x20, 0x60, }}, +{ 0x2084, {0x00, 0x00, 0x00, 0x20, 0x60, 0x70, 0x20, }}, +{ 0x2085, {0x00, 0x00, 0x00, 0x70, 0x60, 0x10, 0x60, }}, +{ 0x2086, {0x00, 0x00, 0x00, 0x30, 0x60, 0x50, 0x20, }}, +{ 0x2087, {0x00, 0x00, 0x00, 0x70, 0x10, 0x20, 0x20, }}, +{ 0x2088, {0x00, 0x00, 0x20, 0x50, 0x20, 0x50, 0x20, }}, +{ 0x2089, {0x00, 0x00, 0x00, 0x20, 0x50, 0x30, 0x60, }}, +{ 0x208A, {0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0x20, }}, +{ 0x208B, {0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, }}, +{ 0x208C, {0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, }}, +{ 0x208D, {0x00, 0x00, 0x00, 0x20, 0x40, 0x40, 0x20, }}, +{ 0x208E, {0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x20, }}, +{ 0x20A3, {0xF0, 0x80, 0xD8, 0xA0, 0xA0, 0xA0, 0x00, }}, +{ 0x20A4, {0x30, 0x40, 0xE0, 0xE0, 0x40, 0xB0, 0x00, }}, +{ 0x20A7, {0x60, 0x50, 0xF8, 0x70, 0x40, 0x40, 0x00, }}, +{ 0x20AB, {0x10, 0x38, 0x70, 0x90, 0x90, 0x70, 0xF0, }}, +{ 0x20AC, {0x30, 0x40, 0xE0, 0xE0, 0x40, 0x30, 0x00, }}, +{ 0x20AF, {0x40, 0x60, 0xD0, 0x50, 0xD0, 0xE0, 0x00, }}, +{ 0x20D0, {0x40, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D1, {0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D2, {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, }}, +{ 0x20D3, {0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, }}, +{ 0x20D4, {0xA0, 0xD0, 0xD0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D5, {0x50, 0xB0, 0xB0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D6, {0x40, 0xF8, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D7, {0x10, 0xF8, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2102, {0x60, 0xD0, 0xC0, 0xC0, 0xD0, 0x60, 0x00, }}, +{ 0x2105, {0x60, 0x80, 0x70, 0x60, 0xA0, 0x50, 0x20, }}, +{ 0x2113, {0x30, 0x30, 0x30, 0x20, 0x20, 0x50, 0x00, }}, +{ 0x2115, {0xC8, 0xC8, 0xE8, 0xD8, 0xC8, 0xC8, 0x00, }}, +{ 0x2116, {0xC0, 0xA0, 0xA0, 0xB0, 0xA8, 0xB0, 0x00, }}, +{ 0x211A, {0x60, 0xD0, 0xD0, 0xD0, 0xF0, 0x70, 0x10, }}, +{ 0x211D, {0xE0, 0xD0, 0xD0, 0xF0, 0xE0, 0xD0, 0x00, }}, +{ 0x2122, {0x70, 0x20, 0x20, 0x00, 0xF8, 0xA8, 0xA8, }}, +{ 0x2124, {0xF0, 0x30, 0x60, 0x60, 0xC0, 0xF0, 0x00, }}, +{ 0x2126, {0x20, 0x50, 0x50, 0x50, 0x20, 0x70, 0x00, }}, +{ 0x2127, {0x70, 0x20, 0x50, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x212E, {0x00, 0x00, 0x70, 0xD8, 0xE0, 0x70, 0x00, }}, +{ 0x215B, {0x80, 0x80, 0x80, 0xB0, 0x30, 0x30, 0x30, }}, +{ 0x215C, {0xC0, 0xC0, 0x40, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x215D, {0xC0, 0x80, 0x40, 0xB0, 0x30, 0x30, 0x30, }}, +{ 0x215E, {0xC0, 0x40, 0x80, 0xB0, 0x30, 0x30, 0x30, }}, +{ 0x2190, {0x00, 0x00, 0x40, 0xF0, 0x40, 0x00, 0x00, }}, +{ 0x2191, {0x20, 0x70, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x2192, {0x00, 0x00, 0x20, 0xF0, 0x20, 0x00, 0x00, }}, +{ 0x2193, {0x20, 0x20, 0x20, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x2194, {0x00, 0x00, 0x50, 0xF8, 0x50, 0x00, 0x00, }}, +{ 0x2195, {0x20, 0x70, 0x20, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x21A4, {0x00, 0x00, 0x50, 0xF0, 0x50, 0x00, 0x00, }}, +{ 0x21A5, {0x20, 0x70, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x21A6, {0x00, 0x00, 0xA0, 0xF0, 0xA0, 0x00, 0x00, }}, +{ 0x21A7, {0x70, 0x20, 0x20, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x21A8, {0x20, 0x70, 0x20, 0x20, 0x70, 0x20, 0x70, }}, +{ 0x21C4, {0x10, 0xF8, 0x10, 0x40, 0xF8, 0x40, 0x00, }}, +{ 0x21C6, {0x40, 0xF8, 0x40, 0x10, 0xF8, 0x10, 0x00, }}, +{ 0x21CB, {0x00, 0x40, 0xF0, 0x00, 0xF0, 0x20, 0x00, }}, +{ 0x21CC, {0x00, 0x20, 0xF0, 0x00, 0xF0, 0x40, 0x00, }}, +{ 0x21D0, {0x10, 0x20, 0x78, 0x80, 0x78, 0x20, 0x10, }}, +{ 0x21D1, {0x20, 0x50, 0xD8, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x21D2, {0x40, 0x20, 0xF0, 0x08, 0xF0, 0x20, 0x40, }}, +{ 0x21D3, {0x50, 0x50, 0x50, 0xD8, 0x50, 0x20, 0x00, }}, +{ 0x21D4, {0x00, 0x20, 0x70, 0x88, 0x70, 0x20, 0x00, }}, +{ 0x21D5, {0x20, 0x50, 0xD8, 0x50, 0xD8, 0x50, 0x20, }}, +{ 0x2200, {0x90, 0x90, 0xF0, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x2201, {0x20, 0x50, 0x40, 0x40, 0x50, 0x20, 0x00, }}, +{ 0x2202, {0x20, 0x10, 0x30, 0x50, 0x50, 0x20, 0x00, }}, +{ 0x2203, {0xF0, 0x10, 0x70, 0x10, 0x10, 0xF0, 0x00, }}, +{ 0x2204, {0x20, 0xF0, 0x50, 0x70, 0x50, 0xF0, 0x40, }}, +{ 0x2205, {0x10, 0x70, 0xB0, 0xD0, 0xD0, 0xE0, 0x80, }}, +{ 0x2206, {0x20, 0x20, 0x50, 0x50, 0x88, 0xF8, 0x00, }}, +{ 0x2207, {0xF8, 0x88, 0x50, 0x50, 0x20, 0x20, 0x00, }}, +{ 0x2208, {0x00, 0x70, 0x80, 0xF0, 0x80, 0x70, 0x00, }}, +{ 0x2209, {0x10, 0x70, 0xA0, 0xF0, 0xA0, 0x70, 0x40, }}, +{ 0x220A, {0x00, 0x30, 0x40, 0x70, 0x40, 0x30, 0x00, }}, +{ 0x220B, {0x00, 0xE0, 0x10, 0xF0, 0x10, 0xE0, 0x00, }}, +{ 0x220C, {0x20, 0xE0, 0x50, 0xF0, 0x50, 0xE0, 0x80, }}, +{ 0x220D, {0x00, 0x60, 0x10, 0x70, 0x10, 0x60, 0x00, }}, +{ 0x220E, {0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, }}, +{ 0x220F, {0xF8, 0x50, 0x50, 0x50, 0x50, 0xD8, 0x00, }}, +{ 0x2210, {0xD8, 0x50, 0x50, 0x50, 0x50, 0xF8, 0x00, }}, +{ 0x2211, {0xF0, 0x40, 0x20, 0x40, 0x80, 0xF0, 0x00, }}, +{ 0x2212, {0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2213, {0xF8, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, }}, +{ 0x2214, {0x20, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, }}, +{ 0x2215, {0x10, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, }}, +{ 0x2216, {0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, }}, +{ 0x2217, {0x00, 0x20, 0xA8, 0x70, 0xA8, 0x20, 0x00, }}, +{ 0x2218, {0x00, 0x00, 0x20, 0x50, 0x20, 0x00, 0x00, }}, +{ 0x2219, {0x00, 0x00, 0x20, 0x70, 0x20, 0x00, 0x00, }}, +{ 0x221A, {0x08, 0x10, 0x10, 0x20, 0xA0, 0x40, 0x00, }}, +{ 0x221B, {0x88, 0xD0, 0x90, 0x20, 0xA0, 0x40, 0x00, }}, +{ 0x221C, {0x88, 0xD0, 0x50, 0x20, 0xA0, 0x40, 0x00, }}, +{ 0x221D, {0x00, 0x00, 0x50, 0xA0, 0xA0, 0x50, 0x00, }}, +{ 0x221E, {0x00, 0x00, 0x50, 0xA8, 0xA8, 0x50, 0x00, }}, +{ 0x221F, {0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0x00, }}, +{ 0x2220, {0x00, 0x00, 0x10, 0x20, 0x40, 0xF0, 0x00, }}, +{ 0x2221, {0x00, 0x00, 0x10, 0xA0, 0x40, 0xF0, 0x20, }}, +{ 0x2222, {0x00, 0x50, 0x60, 0xA0, 0x60, 0x50, 0x00, }}, +{ 0x2223, {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x2224, {0x20, 0x20, 0x30, 0x60, 0x20, 0x20, 0x00, }}, +{ 0x2225, {0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x00, }}, +{ 0x2226, {0x50, 0x58, 0x70, 0x70, 0xD0, 0x50, 0x00, }}, +{ 0x2227, {0x00, 0x00, 0x20, 0x20, 0x50, 0x50, 0x00, }}, +{ 0x2228, {0x00, 0x00, 0x50, 0x50, 0x20, 0x20, 0x00, }}, +{ 0x2229, {0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x222A, {0x00, 0x00, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x222B, {0x10, 0x28, 0x20, 0x20, 0x20, 0xA0, 0x40, }}, +{ 0x222C, {0x28, 0x50, 0x50, 0x50, 0x50, 0x50, 0xA0, }}, +{ 0x222D, {0x38, 0x70, 0x70, 0x70, 0x70, 0x70, 0xE0, }}, +{ 0x222E, {0x10, 0x28, 0x70, 0xA8, 0x70, 0xA0, 0x40, }}, +{ 0x222F, {0x28, 0x50, 0x70, 0xD8, 0x70, 0x50, 0xA0, }}, +{ 0x2230, {0x38, 0x70, 0x70, 0xF8, 0x70, 0x70, 0xE0, }}, +{ 0x2234, {0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2235, {0x00, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, }}, +{ 0x2236, {0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, }}, +{ 0x2237, {0x00, 0x00, 0x90, 0x00, 0x00, 0x90, 0x00, }}, +{ 0x2238, {0x00, 0x00, 0x20, 0x00, 0xF8, 0x00, 0x00, }}, +{ 0x2239, {0x00, 0x00, 0x10, 0xC0, 0x10, 0x00, 0x00, }}, +{ 0x223A, {0x00, 0x90, 0x00, 0xF0, 0x00, 0x90, 0x00, }}, +{ 0x223C, {0x00, 0x00, 0x00, 0x50, 0xA0, 0x00, 0x00, }}, +{ 0x2243, {0x00, 0x50, 0xA0, 0x00, 0xF0, 0x00, 0x00, }}, +{ 0x2245, {0x50, 0xA0, 0x00, 0xF0, 0x00, 0xF0, 0x00, }}, +{ 0x2248, {0x00, 0x50, 0xA0, 0x00, 0x50, 0xA0, 0x00, }}, +{ 0x2249, {0x10, 0x50, 0xA0, 0x20, 0x50, 0xA0, 0x80, }}, +{ 0x2259, {0x20, 0x50, 0x00, 0xF0, 0x00, 0xF0, 0x00, }}, +{ 0x225A, {0x50, 0x20, 0x00, 0xF0, 0x00, 0xF0, 0x00, }}, +{ 0x225F, {0x60, 0x20, 0x00, 0x20, 0xF0, 0x00, 0xF0, }}, +{ 0x2260, {0x00, 0x10, 0xF0, 0x20, 0xF0, 0x40, 0x00, }}, +{ 0x2261, {0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, }}, +{ 0x2262, {0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, }}, +{ 0x2263, {0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, }}, +{ 0x2264, {0x10, 0x20, 0x40, 0x20, 0x10, 0x70, 0x00, }}, +{ 0x2265, {0x40, 0x20, 0x10, 0x20, 0x40, 0x70, 0x00, }}, +{ 0x226A, {0x00, 0x28, 0x50, 0xA0, 0x50, 0x28, 0x00, }}, +{ 0x226B, {0x00, 0xA0, 0x50, 0x28, 0x50, 0xA0, 0x00, }}, +{ 0x2282, {0x00, 0x00, 0x70, 0x80, 0x80, 0x70, 0x00, }}, +{ 0x2283, {0x00, 0x00, 0xE0, 0x10, 0x10, 0xE0, 0x00, }}, +{ 0x2284, {0x00, 0x20, 0x70, 0xA0, 0xA0, 0x70, 0x20, }}, +{ 0x2285, {0x00, 0x40, 0xE0, 0x50, 0x50, 0xE0, 0x40, }}, +{ 0x2286, {0x00, 0x70, 0x80, 0x70, 0x00, 0xF0, 0x00, }}, +{ 0x2287, {0x00, 0xE0, 0x10, 0xE0, 0x00, 0xF0, 0x00, }}, +{ 0x2288, {0x20, 0x70, 0xA0, 0x70, 0x20, 0xF0, 0x20, }}, +{ 0x2289, {0x40, 0xE0, 0x50, 0xE0, 0x40, 0xF0, 0x40, }}, +{ 0x228A, {0x00, 0x70, 0x80, 0x70, 0x20, 0xF0, 0x20, }}, +{ 0x228B, {0x00, 0xE0, 0x10, 0xE0, 0x40, 0xF0, 0x40, }}, +{ 0x2295, {0x00, 0x70, 0xA8, 0xF8, 0xA8, 0x70, 0x00, }}, +{ 0x2296, {0x00, 0x70, 0x88, 0xF8, 0x88, 0x70, 0x00, }}, +{ 0x2297, {0x00, 0x70, 0xD8, 0xA8, 0xD8, 0x70, 0x00, }}, +{ 0x2298, {0x00, 0x70, 0x98, 0xA8, 0xC8, 0x70, 0x00, }}, +{ 0x2299, {0x00, 0x70, 0x88, 0xA8, 0x88, 0x70, 0x00, }}, +{ 0x22A2, {0x00, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x00, }}, +{ 0x22A3, {0x00, 0x10, 0x10, 0xF0, 0x10, 0x10, 0x00, }}, +{ 0x22A4, {0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, }}, +{ 0x22A5, {0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, }}, +{ 0x22A6, {0x00, 0x40, 0x40, 0x70, 0x40, 0x40, 0x00, }}, +{ 0x22A7, {0x00, 0x40, 0x70, 0x40, 0x70, 0x40, 0x00, }}, +{ 0x22A8, {0x00, 0x80, 0xF0, 0x80, 0xF0, 0x80, 0x00, }}, +{ 0x22C2, {0x60, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, }}, +{ 0x22C3, {0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x22C5, {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x22EE, {0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, }}, +{ 0x22EF, {0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, }}, +{ 0x22F0, {0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, }}, +{ 0x22F1, {0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, }}, +{ 0x2300, {0x00, 0x78, 0x98, 0xA8, 0xC8, 0xF0, 0x00, }}, +{ 0x2302, {0x00, 0x20, 0x50, 0x88, 0x88, 0xF8, 0x00, }}, +{ 0x2308, {0x70, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, }}, +{ 0x2309, {0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, }}, +{ 0x230A, {0x40, 0x40, 0x40, 0x40, 0x40, 0x70, 0x00, }}, +{ 0x230B, {0x10, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, }}, +{ 0x2310, {0x00, 0x00, 0x00, 0xF0, 0x80, 0x00, 0x00, }}, +{ 0x2320, {0x10, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, }}, +{ 0x2321, {0x20, 0x20, 0x20, 0x20, 0x20, 0xA0, 0x40, }}, +{ 0x23BA, {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23BB, {0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23BC, {0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, }}, +{ 0x23BD, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, }}, +{ 0x2409, {0xA0, 0xE0, 0xA0, 0x70, 0x20, 0x20, 0x00, }}, +{ 0x240A, {0x80, 0x80, 0xF0, 0x20, 0x30, 0x20, 0x00, }}, +{ 0x240B, {0xA0, 0xA0, 0x78, 0x50, 0x10, 0x10, 0x00, }}, +{ 0x240C, {0xE0, 0x80, 0xF8, 0xA0, 0x30, 0x20, 0x00, }}, +{ 0x240D, {0x60, 0x80, 0xE0, 0x50, 0x60, 0x50, 0x00, }}, +{ 0x2423, {0x00, 0x00, 0x00, 0x00, 0x90, 0xF0, 0x00, }}, +{ 0x2424, {0xC0, 0xA0, 0xA0, 0xA0, 0x20, 0x38, 0x00, }}, +{ 0x2500, {0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2501, {0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2502, {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, }}, +{ 0x2503, {0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, }}, +{ 0x2504, {0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, }}, +{ 0x2505, {0x00, 0x00, 0xA8, 0xA8, 0x00, 0x00, 0x00, }}, +{ 0x2506, {0x20, 0x00, 0x20, 0x20, 0x00, 0x20, 0x00, }}, +{ 0x2507, {0x30, 0x00, 0x30, 0x30, 0x00, 0x30, 0x00, }}, +{ 0x2508, {0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, }}, +{ 0x2509, {0x00, 0x00, 0xA8, 0xA8, 0x00, 0x00, 0x00, }}, +{ 0x250A, {0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, }}, +{ 0x250B, {0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, }}, +{ 0x250C, {0x00, 0x00, 0x00, 0x38, 0x20, 0x20, 0x20, }}, +{ 0x250D, {0x00, 0x00, 0x38, 0x38, 0x20, 0x20, 0x20, }}, +{ 0x250E, {0x00, 0x00, 0x00, 0x38, 0x30, 0x30, 0x30, }}, +{ 0x250F, {0x00, 0x00, 0x38, 0x38, 0x30, 0x30, 0x30, }}, +{ 0x2510, {0x00, 0x00, 0x00, 0xE0, 0x20, 0x20, 0x20, }}, +{ 0x2511, {0x00, 0x00, 0xE0, 0xE0, 0x20, 0x20, 0x20, }}, +{ 0x2512, {0x00, 0x00, 0x00, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x2513, {0x00, 0x00, 0xF0, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x2514, {0x20, 0x20, 0x20, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x2515, {0x20, 0x20, 0x38, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x2516, {0x30, 0x30, 0x30, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x2517, {0x30, 0x30, 0x38, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x2518, {0x20, 0x20, 0x20, 0xE0, 0x00, 0x00, 0x00, }}, +{ 0x2519, {0x20, 0x20, 0xE0, 0xE0, 0x00, 0x00, 0x00, }}, +{ 0x251A, {0x30, 0x30, 0x30, 0xF0, 0x00, 0x00, 0x00, }}, +{ 0x251B, {0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0x00, }}, +{ 0x251C, {0x20, 0x20, 0x20, 0x38, 0x20, 0x20, 0x20, }}, +{ 0x251D, {0x20, 0x20, 0x38, 0x38, 0x20, 0x20, 0x20, }}, +{ 0x251E, {0x30, 0x30, 0x30, 0x38, 0x20, 0x20, 0x20, }}, +{ 0x251F, {0x20, 0x20, 0x20, 0x38, 0x30, 0x30, 0x30, }}, +{ 0x2520, {0x30, 0x30, 0x30, 0x38, 0x30, 0x30, 0x30, }}, +{ 0x2521, {0x30, 0x30, 0x38, 0x38, 0x20, 0x20, 0x20, }}, +{ 0x2522, {0x20, 0x20, 0x38, 0x38, 0x30, 0x30, 0x30, }}, +{ 0x2523, {0x30, 0x30, 0x38, 0x38, 0x30, 0x30, 0x30, }}, +{ 0x2524, {0x20, 0x20, 0x20, 0xE0, 0x20, 0x20, 0x20, }}, +{ 0x2525, {0x20, 0x20, 0xE0, 0xE0, 0x20, 0x20, 0x20, }}, +{ 0x2526, {0x30, 0x30, 0x30, 0xF0, 0x20, 0x20, 0x20, }}, +{ 0x2527, {0x20, 0x20, 0x20, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x2528, {0x30, 0x30, 0x30, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x2529, {0x30, 0x30, 0xF0, 0xF0, 0x20, 0x20, 0x20, }}, +{ 0x252A, {0x20, 0x20, 0xF0, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x252B, {0x30, 0x30, 0xF0, 0xF0, 0x30, 0x30, 0x30, }}, +{ 0x252C, {0x00, 0x00, 0x00, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x252D, {0x00, 0x00, 0xE0, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x252E, {0x00, 0x00, 0x38, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x252F, {0x00, 0x00, 0xF8, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x2530, {0x00, 0x00, 0x00, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2531, {0x00, 0x00, 0xE0, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2532, {0x00, 0x00, 0x18, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2533, {0x00, 0x00, 0xF8, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2534, {0x20, 0x20, 0x20, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2535, {0x20, 0x20, 0xE0, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2536, {0x20, 0x20, 0x38, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2537, {0x20, 0x20, 0xF8, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2538, {0x30, 0x30, 0x30, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2539, {0x30, 0x30, 0xF0, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x253A, {0x30, 0x30, 0x38, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x253B, {0x30, 0x30, 0xF8, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x253C, {0x20, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x253D, {0x20, 0x20, 0xE0, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x253E, {0x20, 0x20, 0x38, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x253F, {0x20, 0x20, 0xF8, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x2540, {0x30, 0x30, 0x30, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x2541, {0x20, 0x20, 0x20, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2542, {0x30, 0x30, 0x30, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2543, {0x30, 0x30, 0xF0, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x2544, {0x30, 0x30, 0x38, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x2545, {0x20, 0x20, 0xE0, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2546, {0x20, 0x20, 0x38, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2547, {0x30, 0x30, 0xF8, 0xF8, 0x20, 0x20, 0x20, }}, +{ 0x2548, {0x20, 0x20, 0xF8, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x2549, {0x30, 0x30, 0xF0, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x254A, {0x30, 0x30, 0x38, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x254B, {0x30, 0x30, 0xF8, 0xF8, 0x30, 0x30, 0x30, }}, +{ 0x254C, {0x00, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, }}, +{ 0x254D, {0x00, 0x00, 0xD0, 0xD0, 0x00, 0x00, 0x00, }}, +{ 0x254E, {0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, }}, +{ 0x254F, {0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, }}, +{ 0x2550, {0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, }}, +{ 0x2551, {0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, }}, +{ 0x2552, {0x00, 0x00, 0x38, 0x20, 0x38, 0x20, 0x20, }}, +{ 0x2553, {0x00, 0x00, 0x00, 0x78, 0x50, 0x50, 0x50, }}, +{ 0x2554, {0x00, 0x00, 0x78, 0x40, 0x58, 0x50, 0x50, }}, +{ 0x2555, {0x00, 0x00, 0xE0, 0x20, 0xE0, 0x20, 0x20, }}, +{ 0x2556, {0x00, 0x00, 0x00, 0xF0, 0x50, 0x50, 0x50, }}, +{ 0x2557, {0x00, 0x00, 0xF0, 0x10, 0xD0, 0x50, 0x50, }}, +{ 0x2558, {0x20, 0x20, 0x38, 0x20, 0x38, 0x00, 0x00, }}, +{ 0x2559, {0x50, 0x50, 0x50, 0x78, 0x00, 0x00, 0x00, }}, +{ 0x255A, {0x50, 0x50, 0x58, 0x40, 0x78, 0x00, 0x00, }}, +{ 0x255B, {0x20, 0x20, 0xE0, 0x20, 0xE0, 0x00, 0x00, }}, +{ 0x255C, {0x50, 0x50, 0x50, 0xF0, 0x00, 0x00, 0x00, }}, +{ 0x255D, {0x50, 0x50, 0xD0, 0x10, 0xF0, 0x00, 0x00, }}, +{ 0x255E, {0x20, 0x20, 0x38, 0x20, 0x38, 0x20, 0x20, }}, +{ 0x255F, {0x50, 0x50, 0x50, 0x58, 0x50, 0x50, 0x50, }}, +{ 0x2560, {0x50, 0x50, 0x58, 0x40, 0x58, 0x50, 0x50, }}, +{ 0x2561, {0x20, 0x20, 0xE0, 0x20, 0xE0, 0x20, 0x20, }}, +{ 0x2562, {0x50, 0x50, 0x50, 0xD0, 0x50, 0x50, 0x50, }}, +{ 0x2563, {0x50, 0x50, 0xD0, 0x10, 0xD0, 0x50, 0x50, }}, +{ 0x2564, {0x00, 0x00, 0xF8, 0x00, 0xF8, 0x20, 0x20, }}, +{ 0x2565, {0x00, 0x00, 0x00, 0xF8, 0x50, 0x50, 0x50, }}, +{ 0x2566, {0x00, 0x00, 0xF8, 0x00, 0xD8, 0x50, 0x50, }}, +{ 0x2567, {0x20, 0x20, 0xF8, 0x00, 0xF8, 0x00, 0x00, }}, +{ 0x2568, {0x50, 0x50, 0x50, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x2569, {0x50, 0x50, 0xD8, 0x00, 0xF8, 0x00, 0x00, }}, +{ 0x256A, {0x20, 0x20, 0xF8, 0x20, 0xF8, 0x20, 0x20, }}, +{ 0x256B, {0x50, 0x50, 0x50, 0xF8, 0x50, 0x50, 0x50, }}, +{ 0x256C, {0x50, 0x50, 0xD8, 0x00, 0xD8, 0x50, 0x50, }}, +{ 0x256D, {0x00, 0x00, 0x00, 0x18, 0x20, 0x20, 0x20, }}, +{ 0x256E, {0x00, 0x00, 0x00, 0xC0, 0x20, 0x20, 0x20, }}, +{ 0x256F, {0x20, 0x20, 0x20, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x2570, {0x20, 0x20, 0x20, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x2571, {0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, }}, +{ 0x2572, {0x80, 0x40, 0x40, 0x20, 0x10, 0x10, 0x08, }}, +{ 0x2573, {0x88, 0x50, 0x50, 0x20, 0x50, 0x50, 0x88, }}, +{ 0x2574, {0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, }}, +{ 0x2575, {0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x2576, {0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x2577, {0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, }}, +{ 0x2578, {0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, }}, +{ 0x2579, {0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x257A, {0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x257B, {0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, }}, +{ 0x257C, {0x00, 0x00, 0x38, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x257D, {0x20, 0x20, 0x20, 0x30, 0x30, 0x30, 0x30, }}, +{ 0x257E, {0x00, 0x00, 0xE0, 0xF8, 0x00, 0x00, 0x00, }}, +{ 0x257F, {0x30, 0x30, 0x30, 0x30, 0x20, 0x20, 0x20, }}, +{ 0x2580, {0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2581, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, }}, +{ 0x2582, {0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, }}, +{ 0x2583, {0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, }}, +{ 0x2584, {0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x2585, {0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x2586, {0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x2587, {0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x2588, {0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x2589, {0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, }}, +{ 0x258A, {0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, }}, +{ 0x258B, {0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, }}, +{ 0x258C, {0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, }}, +{ 0x258D, {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, }}, +{ 0x258E, {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, }}, +{ 0x258F, {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, }}, +{ 0x2590, {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, }}, +{ 0x2591, {0x40, 0x10, 0x40, 0x10, 0x40, 0x10, 0x00, }}, +{ 0x2592, {0xA8, 0x50, 0xA8, 0x50, 0xA8, 0x50, 0xA8, }}, +{ 0x2593, {0xB8, 0xE8, 0xB8, 0xE8, 0xB8, 0xE8, 0xF8, }}, +{ 0x2594, {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2595, {0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, }}, +{ 0x2596, {0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, }}, +{ 0x2597, {0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, }}, +{ 0x2598, {0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2599, {0xE0, 0xE0, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x259A, {0xE0, 0xE0, 0xE0, 0x18, 0x18, 0x18, 0x18, }}, +{ 0x259B, {0xF8, 0xF8, 0xF8, 0xE0, 0xE0, 0xE0, 0xE0, }}, +{ 0x259C, {0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, }}, +{ 0x259D, {0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x259E, {0x18, 0x18, 0x18, 0xE0, 0xE0, 0xE0, 0xE0, }}, +{ 0x259F, {0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF8, 0xF8, }}, +{ 0x25A0, {0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, }}, +{ 0x25A1, {0x00, 0x00, 0xF0, 0x90, 0x90, 0xF0, 0x00, }}, +{ 0x25AA, {0x00, 0x00, 0x70, 0x70, 0x70, 0x00, 0x00, }}, +{ 0x25AB, {0x00, 0x00, 0x70, 0x50, 0x70, 0x00, 0x00, }}, +{ 0x25AC, {0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, }}, +{ 0x25AD, {0x00, 0x00, 0xF8, 0x88, 0xF8, 0x00, 0x00, }}, +{ 0x25AE, {0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, }}, +{ 0x25B2, {0x20, 0x20, 0x70, 0x70, 0xF8, 0xF8, 0x00, }}, +{ 0x25B3, {0x20, 0x20, 0x50, 0x50, 0x88, 0xF8, 0x00, }}, +{ 0x25B6, {0x80, 0xC0, 0xE0, 0xF0, 0xE0, 0xC0, 0x80, }}, +{ 0x25B7, {0x80, 0xC0, 0xA0, 0x90, 0xA0, 0xC0, 0x80, }}, +{ 0x25B8, {0x00, 0x40, 0x60, 0x70, 0x60, 0x40, 0x00, }}, +{ 0x25B9, {0x00, 0x40, 0x60, 0x50, 0x60, 0x40, 0x00, }}, +{ 0x25BA, {0x00, 0x80, 0xE0, 0xF8, 0xE0, 0x80, 0x00, }}, +{ 0x25BB, {0x00, 0x80, 0xE0, 0x98, 0xE0, 0x80, 0x00, }}, +{ 0x25BC, {0xF8, 0xF8, 0x70, 0x70, 0x20, 0x20, 0x00, }}, +{ 0x25BD, {0xF8, 0x88, 0x50, 0x50, 0x20, 0x20, 0x00, }}, +{ 0x25C0, {0x10, 0x30, 0x70, 0xF0, 0x70, 0x30, 0x10, }}, +{ 0x25C1, {0x10, 0x30, 0x50, 0x90, 0x50, 0x30, 0x10, }}, +{ 0x25C2, {0x00, 0x10, 0x30, 0x70, 0x30, 0x10, 0x00, }}, +{ 0x25C3, {0x00, 0x10, 0x30, 0x50, 0x30, 0x10, 0x00, }}, +{ 0x25C4, {0x00, 0x08, 0x38, 0xF8, 0x38, 0x08, 0x00, }}, +{ 0x25C5, {0x00, 0x08, 0x38, 0xC8, 0x38, 0x08, 0x00, }}, +{ 0x25C6, {0x00, 0x20, 0x70, 0xF8, 0x70, 0x20, 0x00, }}, +{ 0x25CA, {0x00, 0x20, 0x50, 0x88, 0x50, 0x20, 0x00, }}, +{ 0x25CB, {0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, }}, +{ 0x25CF, {0x00, 0x70, 0xF8, 0xF8, 0xF8, 0x70, 0x00, }}, +{ 0x25D8, {0xF8, 0xF8, 0xD8, 0x88, 0xD8, 0xF8, 0xF8, }}, +{ 0x25D9, {0xF8, 0xF8, 0xD8, 0xA8, 0xD8, 0xF8, 0xF8, }}, +{ 0x25E6, {0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, }}, +{ 0x2639, {0x00, 0x50, 0x00, 0x20, 0x50, 0x00, 0x00, }}, +{ 0x263A, {0x00, 0x50, 0x00, 0x50, 0x20, 0x00, 0x00, }}, +{ 0x263B, {0x70, 0xA8, 0xF8, 0xA8, 0xD8, 0x70, 0x00, }}, +{ 0x263C, {0x20, 0xA8, 0x70, 0xD8, 0x70, 0xA8, 0x20, }}, +{ 0x2640, {0x00, 0x20, 0x50, 0x20, 0x70, 0x20, 0x00, }}, +{ 0x2641, {0x00, 0x20, 0x70, 0x20, 0x50, 0x20, 0x00, }}, +{ 0x2642, {0x38, 0x18, 0x68, 0xA0, 0x40, 0x00, 0x00, }}, +{ 0x2660, {0x20, 0x70, 0xF8, 0xF8, 0x20, 0x70, 0x00, }}, +{ 0x2663, {0x70, 0x70, 0xA8, 0xF8, 0xA8, 0x20, 0x70, }}, +{ 0x2665, {0x50, 0xF8, 0xF8, 0x70, 0x70, 0x20, 0x00, }}, +{ 0x2666, {0x20, 0x70, 0xF8, 0xF8, 0x70, 0x20, 0x00, }}, +{ 0x2669, {0x10, 0x10, 0x10, 0x30, 0x70, 0x20, 0x00, }}, +{ 0x266A, {0x20, 0x30, 0x28, 0x60, 0xE0, 0x40, 0x00, }}, +{ 0x266B, {0x60, 0x58, 0x48, 0xC8, 0xD8, 0x18, 0x00, }}, +{ 0x266C, {0x70, 0x68, 0x58, 0xC8, 0xD8, 0x18, 0x00, }}, +{ 0x266D, {0x40, 0x40, 0x70, 0x50, 0x50, 0x60, 0x00, }}, +{ 0x266E, {0x40, 0x70, 0x50, 0x50, 0x70, 0x10, 0x00, }}, +{ 0x266F, {0x10, 0x58, 0x70, 0xD8, 0x70, 0xD0, 0x40, }}, +{ 0x27E8, {0x20, 0x20, 0x40, 0x40, 0x20, 0x20, 0x00, }}, +{ 0x27E9, {0x40, 0x40, 0x20, 0x20, 0x40, 0x40, 0x00, }}, +{ 0x2800, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2801, {0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2802, {0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2803, {0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2804, {0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2805, {0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2806, {0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2807, {0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2808, {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2809, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280A, {0x10, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280B, {0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280C, {0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x280D, {0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x280E, {0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x280F, {0x50, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2810, {0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2811, {0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2812, {0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2813, {0x40, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2814, {0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2815, {0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2816, {0x00, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2817, {0x40, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2818, {0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2819, {0x50, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281A, {0x10, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281B, {0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281C, {0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x281D, {0x50, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x281E, {0x10, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x281F, {0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, }}, +{ 0x2820, {0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2821, {0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2822, {0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2823, {0x40, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2824, {0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2825, {0x40, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2826, {0x00, 0x00, 0x40, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2827, {0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2828, {0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2829, {0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x282A, {0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x282B, {0x50, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x282C, {0x10, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x282D, {0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x282E, {0x10, 0x00, 0x40, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x282F, {0x50, 0x00, 0x40, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2830, {0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2831, {0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2832, {0x00, 0x00, 0x50, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2833, {0x40, 0x00, 0x50, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2834, {0x00, 0x00, 0x10, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2835, {0x40, 0x00, 0x10, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2836, {0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2837, {0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2838, {0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x2839, {0x50, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x283A, {0x10, 0x00, 0x50, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x283B, {0x50, 0x00, 0x50, 0x00, 0x10, 0x00, 0x00, }}, +{ 0x283C, {0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x283D, {0x50, 0x00, 0x10, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x283E, {0x10, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x283F, {0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, }}, +{ 0x2840, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2841, {0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2842, {0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2843, {0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2844, {0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2845, {0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2846, {0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2847, {0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2848, {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2849, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x284A, {0x10, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x284B, {0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x284C, {0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x284D, {0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x284E, {0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x284F, {0x50, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2850, {0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2851, {0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2852, {0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2853, {0x40, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2854, {0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2855, {0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2856, {0x00, 0x00, 0x50, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2857, {0x40, 0x00, 0x50, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2858, {0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x2859, {0x50, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x285A, {0x10, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x285B, {0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, }}, +{ 0x285C, {0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x285D, {0x50, 0x00, 0x10, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x285E, {0x10, 0x00, 0x50, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x285F, {0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x40, }}, +{ 0x2860, {0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2861, {0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2862, {0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2863, {0x40, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2864, {0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2865, {0x40, 0x00, 0x00, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2866, {0x00, 0x00, 0x40, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2867, {0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2868, {0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2869, {0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x286A, {0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x286B, {0x50, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x286C, {0x10, 0x00, 0x00, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x286D, {0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x286E, {0x10, 0x00, 0x40, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x286F, {0x50, 0x00, 0x40, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2870, {0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2871, {0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2872, {0x00, 0x00, 0x50, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2873, {0x40, 0x00, 0x50, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2874, {0x00, 0x00, 0x10, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2875, {0x40, 0x00, 0x10, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2876, {0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2877, {0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2878, {0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x2879, {0x50, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x287A, {0x10, 0x00, 0x50, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x287B, {0x50, 0x00, 0x50, 0x00, 0x10, 0x00, 0x40, }}, +{ 0x287C, {0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x287D, {0x50, 0x00, 0x10, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x287E, {0x10, 0x00, 0x50, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x287F, {0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x40, }}, +{ 0x2880, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2881, {0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2882, {0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2883, {0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2884, {0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2885, {0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2886, {0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2887, {0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2888, {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2889, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x288A, {0x10, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x288B, {0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x288C, {0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x288D, {0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x288E, {0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x288F, {0x50, 0x00, 0x40, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2890, {0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2891, {0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2892, {0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2893, {0x40, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2894, {0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2895, {0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2896, {0x00, 0x00, 0x50, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2897, {0x40, 0x00, 0x50, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x2898, {0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x2899, {0x50, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x289A, {0x10, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x289B, {0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x10, }}, +{ 0x289C, {0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x289D, {0x50, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x289E, {0x10, 0x00, 0x50, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x289F, {0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x10, }}, +{ 0x28A0, {0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28A1, {0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28A2, {0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28A3, {0x40, 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28A4, {0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28A5, {0x40, 0x00, 0x00, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28A6, {0x00, 0x00, 0x40, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28A7, {0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28A8, {0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28A9, {0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28AA, {0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28AB, {0x50, 0x00, 0x40, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28AC, {0x10, 0x00, 0x00, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28AD, {0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28AE, {0x10, 0x00, 0x40, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28AF, {0x50, 0x00, 0x40, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28B0, {0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28B1, {0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28B2, {0x00, 0x00, 0x50, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28B3, {0x40, 0x00, 0x50, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28B4, {0x00, 0x00, 0x10, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28B5, {0x40, 0x00, 0x10, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28B6, {0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28B7, {0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28B8, {0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28B9, {0x50, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28BA, {0x10, 0x00, 0x50, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28BB, {0x50, 0x00, 0x50, 0x00, 0x10, 0x00, 0x10, }}, +{ 0x28BC, {0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28BD, {0x50, 0x00, 0x10, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28BE, {0x10, 0x00, 0x50, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28BF, {0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x10, }}, +{ 0x28C0, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28C1, {0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28C2, {0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28C3, {0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28C4, {0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28C5, {0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28C6, {0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28C7, {0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28C8, {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28C9, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28CA, {0x10, 0x00, 0x40, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28CB, {0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28CC, {0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28CD, {0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28CE, {0x10, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28CF, {0x50, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28D0, {0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28D1, {0x40, 0x00, 0x10, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28D2, {0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28D3, {0x40, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28D4, {0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28D5, {0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28D6, {0x00, 0x00, 0x50, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28D7, {0x40, 0x00, 0x50, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28D8, {0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28D9, {0x50, 0x00, 0x10, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28DA, {0x10, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28DB, {0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, }}, +{ 0x28DC, {0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28DD, {0x50, 0x00, 0x10, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28DE, {0x10, 0x00, 0x50, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28DF, {0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x50, }}, +{ 0x28E0, {0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28E1, {0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28E2, {0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28E3, {0x40, 0x00, 0x40, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28E4, {0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28E5, {0x40, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28E6, {0x00, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28E7, {0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28E8, {0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28E9, {0x50, 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28EA, {0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28EB, {0x50, 0x00, 0x40, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28EC, {0x10, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28ED, {0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28EE, {0x10, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28EF, {0x50, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28F0, {0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28F1, {0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28F2, {0x00, 0x00, 0x50, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28F3, {0x40, 0x00, 0x50, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28F4, {0x00, 0x00, 0x10, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28F5, {0x40, 0x00, 0x10, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28F6, {0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28F7, {0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28F8, {0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28F9, {0x50, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28FA, {0x10, 0x00, 0x50, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28FB, {0x50, 0x00, 0x50, 0x00, 0x10, 0x00, 0x50, }}, +{ 0x28FC, {0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28FD, {0x50, 0x00, 0x10, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28FE, {0x10, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, }}, +{ 0x28FF, {0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, }}, +{ 0xFB01, {0x20, 0x50, 0x40, 0xF0, 0x50, 0x50, 0x00, }}, +{ 0xFB02, {0x30, 0x50, 0x50, 0xF0, 0x50, 0x50, 0x00, }}, +{ 0xFFFD, {0x50, 0xA8, 0xE8, 0xD8, 0xF8, 0xD8, 0x70, }}, diff --git a/libmednahawk/src/video/font6x13.h b/libmednahawk/src/video/font6x13.h new file mode 100644 index 0000000000..3a16258d71 --- /dev/null +++ b/libmednahawk/src/video/font6x13.h @@ -0,0 +1,4430 @@ +{ 0x0000, {0x00,0x00,0xA8,0x00,0x88,0x00,0x88,0x00,0x88,0x00,0xA8,0x00,0x00}}, +{ 0x0020, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0021, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0x0022, {0x00,0x00,0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0023, {0x00,0x00,0x00,0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x00,0x00,0x00}}, +{ 0x0024, {0x00,0x00,0x20,0x78,0xA0,0xA0,0x70,0x28,0x28,0xF0,0x20,0x00,0x00}}, +{ 0x0025, {0x00,0x00,0x48,0xA8,0x50,0x10,0x20,0x40,0x50,0xA8,0x90,0x00,0x00}}, +{ 0x0026, {0x00,0x00,0x00,0x40,0xA0,0xA0,0x40,0xA0,0x98,0x90,0x68,0x00,0x00}}, +{ 0x0027, {0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0028, {0x00,0x10,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x10,0x00}}, +{ 0x0029, {0x00,0x40,0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0x002A, {0x00,0x00,0x20,0xA8,0x70,0xA8,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x002B, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x002C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x20,0x40,0x00}}, +{ 0x002D, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x002E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00}}, +{ 0x002F, {0x00,0x00,0x08,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0x80,0x00,0x00}}, +{ 0x0030, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0x88,0x88,0x50,0x20,0x00,0x00}}, +{ 0x0031, {0x00,0x00,0x20,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x0032, {0x00,0x00,0x70,0x88,0x88,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x0033, {0x00,0x00,0xF8,0x08,0x10,0x20,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0034, {0x00,0x00,0x10,0x10,0x30,0x50,0x50,0x90,0xF8,0x10,0x10,0x00,0x00}}, +{ 0x0035, {0x00,0x00,0xF8,0x80,0x80,0xB0,0xC8,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0036, {0x00,0x00,0x70,0x88,0x80,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0037, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x00,0x00}}, +{ 0x0038, {0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0039, {0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x003A, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x20,0x70,0x20,0x00}}, +{ 0x003B, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x30,0x20,0x40,0x00}}, +{ 0x003C, {0x00,0x00,0x08,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x08,0x00,0x00}}, +{ 0x003D, {0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x003E, {0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x80,0x00,0x00}}, +{ 0x003F, {0x00,0x00,0x70,0x88,0x88,0x08,0x10,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0x0040, {0x00,0x00,0x70,0x88,0x88,0x98,0xA8,0xA8,0xB0,0x80,0x78,0x00,0x00}}, +{ 0x0041, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0042, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x0043, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0044, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x0045, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0046, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0047, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0048, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0049, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x004A, {0x00,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x60,0x00,0x00}}, +{ 0x004B, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x004C, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x004D, {0x00,0x00,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x004E, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x00,0x00}}, +{ 0x004F, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0050, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0051, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0xA8,0x70,0x08,0x00}}, +{ 0x0052, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x0053, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0054, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0055, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0056, {0x00,0x00,0x88,0x88,0x88,0x88,0x50,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x0057, {0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0058, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x0059, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x005A, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x005B, {0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00}}, +{ 0x005C, {0x00,0x00,0x80,0x80,0x40,0x40,0x20,0x10,0x10,0x08,0x08,0x00,0x00}}, +{ 0x005D, {0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00}}, +{ 0x005E, {0x00,0x00,0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x005F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00}}, +{ 0x0060, {0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0061, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0062, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0063, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0064, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x0065, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0066, {0x00,0x00,0x30,0x48,0x40,0x40,0xF0,0x40,0x40,0x40,0x40,0x00,0x00}}, +{ 0x0067, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x0068, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0069, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x006A, {0x00,0x00,0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x90,0x60}}, +{ 0x006B, {0x00,0x00,0x80,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x006C, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x006D, {0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0x006E, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x006F, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0070, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80}}, +{ 0x0071, {0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x08}}, +{ 0x0072, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0073, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x0074, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x0075, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0076, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x0077, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0078, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x20,0x50,0x88,0x00,0x00}}, +{ 0x0079, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x007A, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x007B, {0x00,0x18,0x20,0x20,0x20,0x20,0xC0,0x20,0x20,0x20,0x20,0x18,0x00}}, +{ 0x007C, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x007D, {0x00,0xC0,0x20,0x20,0x20,0x20,0x18,0x20,0x20,0x20,0x20,0xC0,0x00}}, +{ 0x007E, {0x00,0x00,0x48,0xA8,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00A0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00A1, {0x00,0x00,0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x00A2, {0x00,0x00,0x20,0x70,0xA8,0xA0,0xA0,0xA8,0x70,0x20,0x00,0x00,0x00}}, +{ 0x00A3, {0x00,0x00,0x30,0x48,0x40,0x40,0xE0,0x40,0x40,0x48,0xB0,0x00,0x00}}, +{ 0x00A4, {0x00,0x00,0x00,0x00,0x88,0x70,0x50,0x50,0x70,0x88,0x00,0x00,0x00}}, +{ 0x00A5, {0x00,0x00,0x88,0x88,0x50,0x50,0xF8,0x20,0xF8,0x20,0x20,0x00,0x00}}, +{ 0x00A6, {0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x00A7, {0x00,0x30,0x48,0x40,0x30,0x48,0x48,0x30,0x08,0x48,0x30,0x00,0x00}}, +{ 0x00A8, {0x00,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00A9, {0x00,0x70,0x88,0xA8,0xD8,0xC8,0xD8,0xA8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x00AA, {0x00,0x00,0x70,0x08,0x78,0x88,0x78,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x00AB, {0x00,0x00,0x00,0x00,0x28,0x50,0xA0,0xA0,0x50,0x28,0x00,0x00,0x00}}, +{ 0x00AC, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x00,0x00,0x00,0x00}}, +{ 0x00AD, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00AE, {0x00,0x70,0x88,0xE8,0xD8,0xD8,0xE8,0xD8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x00AF, {0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00B0, {0x00,0x00,0x30,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00B1, {0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x00B2, {0x00,0x40,0xA0,0x20,0x40,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00B3, {0x00,0x40,0xA0,0x40,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00B4, {0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00B5, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0xE8,0x80,0x80}}, +{ 0x00B6, {0x00,0x00,0x78,0xE8,0xE8,0xE8,0xE8,0x68,0x28,0x28,0x28,0x00,0x00}}, +{ 0x00B7, {0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00B8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20}}, +{ 0x00B9, {0x00,0x40,0xC0,0x40,0x40,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x00BA, {0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x00BB, {0x00,0x00,0x00,0x00,0xA0,0x50,0x28,0x28,0x50,0xA0,0x00,0x00,0x00}}, +{ 0x00BC, {0x00,0x40,0xC0,0x40,0x40,0xE0,0x08,0x18,0x28,0x38,0x08,0x00,0x00}}, +{ 0x00BD, {0x00,0x40,0xC0,0x40,0x40,0xE0,0x10,0x28,0x08,0x10,0x38,0x00,0x00}}, +{ 0x00BE, {0x00,0x40,0xA0,0x40,0x20,0xA0,0x48,0x18,0x28,0x38,0x08,0x00,0x00}}, +{ 0x00BF, {0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x80,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00C0, {0x00,0x40,0x20,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x00C1, {0x00,0x10,0x20,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x00C2, {0x00,0x30,0x48,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x00C3, {0x00,0x28,0x50,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x00C4, {0x00,0x50,0x50,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x00C5, {0x00,0x20,0x50,0x20,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x00C6, {0x00,0x00,0x58,0xA0,0xA0,0xA0,0xB0,0xE0,0xA0,0xA0,0xB8,0x00,0x00}}, +{ 0x00C7, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x20,0x40}}, +{ 0x00C8, {0x00,0x40,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x00C9, {0x00,0x10,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x00CA, {0x00,0x30,0x48,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x00CB, {0x00,0x50,0x50,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x00CC, {0x00,0x40,0x20,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00CD, {0x00,0x10,0x20,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00CE, {0x00,0x30,0x48,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00CF, {0x00,0x50,0x50,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00D0, {0x00,0x00,0xF0,0x48,0x48,0x48,0xE8,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x00D1, {0x00,0x28,0x50,0x00,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x00,0x00}}, +{ 0x00D2, {0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00D3, {0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00D4, {0x00,0x30,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00D5, {0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00D6, {0x00,0x50,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00D7, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00,0x00,0x00}}, +{ 0x00D8, {0x00,0x08,0x70,0x98,0x98,0xA8,0xA8,0xA8,0xC8,0xC8,0x70,0x80,0x00}}, +{ 0x00D9, {0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00DA, {0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00DB, {0x00,0x30,0x48,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00DC, {0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00DD, {0x00,0x10,0x20,0x00,0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x00DE, {0x00,0x00,0x80,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x00DF, {0x00,0x00,0x60,0x90,0x90,0xA0,0xA0,0x90,0x88,0x88,0xB0,0x00,0x00}}, +{ 0x00E0, {0x00,0x00,0x40,0x20,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00E1, {0x00,0x00,0x10,0x20,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00E2, {0x00,0x00,0x30,0x48,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00E3, {0x00,0x00,0x28,0x50,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00E4, {0x00,0x00,0x50,0x50,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00E5, {0x00,0x30,0x48,0x30,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00E6, {0x00,0x00,0x00,0x00,0x00,0x70,0x28,0x70,0xA0,0xA8,0x50,0x00,0x00}}, +{ 0x00E7, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x20,0x40}}, +{ 0x00E8, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x00E9, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x00EA, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x00EB, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x00EC, {0x00,0x00,0x40,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00ED, {0x00,0x00,0x10,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00EE, {0x00,0x00,0x30,0x48,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00EF, {0x00,0x00,0x50,0x50,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x00F0, {0x00,0x50,0x20,0x60,0x10,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00F1, {0x00,0x00,0x28,0x50,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x00F2, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00F3, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00F4, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00F5, {0x00,0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00F6, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x00F7, {0x00,0x00,0x00,0x20,0x20,0x00,0xF8,0x00,0x20,0x20,0x00,0x00,0x00}}, +{ 0x00F8, {0x00,0x00,0x00,0x00,0x08,0x70,0x98,0xA8,0xA8,0xC8,0x70,0x80,0x00}}, +{ 0x00F9, {0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00FA, {0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00FB, {0x00,0x00,0x30,0x48,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00FC, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x00FD, {0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x00FE, {0x00,0x00,0x00,0x80,0x80,0xB0,0xC8,0x88,0x88,0xC8,0xB0,0x80,0x80}}, +{ 0x00FF, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x0100, {0x00,0xF8,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0101, {0x00,0x00,0x00,0xF8,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0102, {0x00,0x88,0x70,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x0103, {0x00,0x00,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0104, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x08,0x04}}, +{ 0x0105, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x08,0x04}}, +{ 0x0106, {0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0107, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0108, {0x00,0x30,0x48,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0109, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x010A, {0x00,0x20,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x010B, {0x00,0x00,0x20,0x20,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x010C, {0x00,0x48,0x30,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x010D, {0x00,0x00,0x48,0x30,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x010E, {0x00,0x48,0x30,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x010F, {0x48,0x30,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x0110, {0x00,0x00,0xF0,0x48,0x48,0x48,0xE8,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x0111, {0x00,0x00,0x08,0x1C,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x0112, {0x00,0xF8,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0113, {0x00,0x00,0x00,0xF8,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0114, {0x00,0x88,0x70,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0115, {0x00,0x00,0x88,0x70,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0116, {0x00,0x20,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0117, {0x00,0x00,0x20,0x20,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0118, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x20,0x10}}, +{ 0x0119, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x20,0x10}}, +{ 0x011A, {0x00,0x48,0x30,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x011B, {0x00,0x00,0x48,0x30,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x011C, {0x00,0x30,0x48,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0x011D, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x011E, {0x00,0x88,0x70,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0x011F, {0x00,0x00,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x0120, {0x00,0x20,0x20,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0x0121, {0x00,0x00,0x20,0x20,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x0122, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x98,0x88,0x88,0x70,0x20,0x40}}, +{ 0x0123, {0x00,0x10,0x20,0x60,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x0124, {0x00,0x30,0x48,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0125, {0x00,0x30,0x48,0x00,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0126, {0x00,0x00,0x88,0x88,0xF8,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0127, {0x00,0x00,0x80,0xF0,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0128, {0x00,0x28,0x50,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0129, {0x00,0x00,0x50,0xA0,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x012A, {0x00,0xF8,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x012B, {0x00,0x00,0x00,0xF8,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x012C, {0x00,0x88,0x70,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x012D, {0x00,0x00,0x88,0x70,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x012E, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x20,0x10}}, +{ 0x012F, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x20,0x10}}, +{ 0x0130, {0x00,0x20,0x20,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0131, {0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0132, {0x00,0x00,0xDC,0x88,0x88,0x88,0x88,0x88,0x88,0xA8,0xD0,0x00,0x00}}, +{ 0x0133, {0x00,0x00,0x00,0x48,0x00,0xD8,0x48,0x48,0x48,0x48,0xE8,0x48,0x30}}, +{ 0x0134, {0x00,0x30,0x48,0x00,0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x00,0x00}}, +{ 0x0135, {0x00,0x00,0x30,0x48,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x90,0x60}}, +{ 0x0136, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x40,0x80}}, +{ 0x0137, {0x00,0x00,0x80,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x40,0x80}}, +{ 0x0138, {0x00,0x00,0x00,0x00,0x00,0x88,0x90,0xA0,0xE0,0x90,0x88,0x00,0x00}}, +{ 0x0139, {0x00,0x40,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x013A, {0x10,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x013B, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x20,0x40}}, +{ 0x013C, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x20,0x40}}, +{ 0x013D, {0x00,0x90,0x60,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00}}, +{ 0x013E, {0x90,0x60,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x013F, {0x00,0x00,0x80,0x80,0x80,0x90,0x90,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0140, {0x00,0x00,0x60,0x20,0x20,0x28,0x28,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0141, {0x00,0x00,0x40,0x40,0x60,0x40,0xC0,0x40,0x40,0x40,0x78,0x00,0x00}}, +{ 0x0142, {0x00,0x00,0x60,0x20,0x30,0x20,0x60,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0143, {0x00,0x10,0x20,0x00,0x88,0xC8,0xC8,0xA8,0x98,0x98,0x88,0x00,0x00}}, +{ 0x0144, {0x00,0x00,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0145, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x40,0x80}}, +{ 0x0146, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x40,0x80}}, +{ 0x0147, {0x00,0x48,0x30,0x00,0x88,0xC8,0xC8,0xA8,0x98,0x98,0x88,0x00,0x00}}, +{ 0x0148, {0x00,0x00,0x48,0x30,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0149, {0x00,0xC0,0x40,0x80,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x014A, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x28,0x10}}, +{ 0x014B, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x28,0x10}}, +{ 0x014C, {0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x014D, {0x00,0x00,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x014E, {0x00,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x014F, {0x00,0x00,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0150, {0x00,0x48,0x90,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0151, {0x00,0x00,0x48,0x90,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0152, {0x00,0x00,0x78,0xA0,0xA0,0xA0,0xB0,0xA0,0xA0,0xA0,0x78,0x00,0x00}}, +{ 0x0153, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xB8,0xA0,0xA8,0x50,0x00,0x00}}, +{ 0x0154, {0x00,0x10,0x20,0x00,0xF0,0x88,0x88,0xF0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x0155, {0x00,0x00,0x10,0x20,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0156, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x88,0x88,0x40,0x80}}, +{ 0x0157, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x40,0x80}}, +{ 0x0158, {0x00,0x90,0x60,0x00,0xF0,0x88,0x88,0xF0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x0159, {0x00,0x00,0x90,0x60,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x015A, {0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x015B, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x015C, {0x00,0x30,0x48,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x015D, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x015E, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x20,0x40}}, +{ 0x015F, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x20,0x40}}, +{ 0x0160, {0x00,0x48,0x30,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0161, {0x00,0x00,0x90,0x60,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x0162, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x20}}, +{ 0x0163, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x20,0x40}}, +{ 0x0164, {0x00,0x48,0x30,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0165, {0x00,0x90,0x60,0x00,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x0166, {0x00,0x00,0xF8,0x20,0x20,0x70,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0167, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0xE0,0x40,0x48,0x30,0x00,0x00}}, +{ 0x0168, {0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0169, {0x00,0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x016A, {0x00,0xF8,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x016B, {0x00,0x00,0x00,0xF8,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x016C, {0x00,0x88,0x70,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x016D, {0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x016E, {0x20,0x50,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x016F, {0x00,0x20,0x50,0x20,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0170, {0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0171, {0x00,0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0172, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x20,0x10}}, +{ 0x0173, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x20,0x10}}, +{ 0x0174, {0x00,0x30,0x48,0x00,0x88,0x88,0x88,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x0175, {0x00,0x00,0x30,0x48,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0176, {0x00,0x30,0x48,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0177, {0x00,0x00,0x30,0x48,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x0178, {0x00,0x50,0x50,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0179, {0x00,0x10,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x017A, {0x00,0x00,0x10,0x20,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x017B, {0x00,0x20,0x20,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x017C, {0x00,0x00,0x20,0x20,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x017D, {0x00,0x48,0x30,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x017E, {0x00,0x00,0x48,0x30,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x017F, {0x00,0x00,0x30,0x48,0x40,0x40,0xC0,0x40,0x40,0x40,0x40,0x00,0x00}}, +{ 0x0180, {0x00,0x00,0x40,0xE0,0x40,0x70,0x48,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x0181, {0x00,0x00,0x70,0xA8,0x28,0x28,0x30,0x28,0x28,0x28,0x70,0x00,0x00}}, +{ 0x0182, {0x00,0x00,0xF8,0x88,0x80,0x80,0xF0,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0183, {0x00,0x00,0x78,0x48,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x0184, {0x00,0x00,0x40,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x0185, {0x00,0x00,0x40,0xC0,0x40,0x40,0x60,0x50,0x50,0x50,0x60,0x00,0x00}}, +{ 0x0186, {0x00,0x00,0x70,0x88,0x08,0x08,0x08,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0187, {0x00,0x04,0x78,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0188, {0x00,0x00,0x00,0x00,0x04,0x78,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0189, {0x00,0x00,0xF0,0x48,0x48,0x48,0xE8,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x018A, {0x00,0x00,0x70,0xA8,0x28,0x28,0x28,0x28,0x28,0x28,0x70,0x00,0x00}}, +{ 0x018B, {0x00,0x00,0xF8,0x88,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x018C, {0x00,0x00,0x78,0x48,0x08,0x08,0x38,0x48,0x48,0x48,0x38,0x00,0x00}}, +{ 0x018D, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x08,0x88,0x70}}, +{ 0x018E, {0x00,0x00,0xF8,0x08,0x08,0x08,0x78,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x018F, {0x00,0x00,0x70,0x88,0x08,0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0190, {0x00,0x00,0x70,0x88,0x80,0x80,0x60,0x80,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0191, {0x00,0x00,0x38,0x20,0x20,0x20,0x38,0x20,0x20,0x20,0x20,0xA0,0x40}}, +{ 0x0192, {0x00,0x00,0x10,0x28,0x20,0x20,0x70,0x20,0x20,0x20,0x20,0xA0,0x40}}, +{ 0x0193, {0x00,0x04,0x78,0x88,0x80,0x80,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0194, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x50,0x20,0x20,0x50,0x50,0x20}}, +{ 0x0195, {0x00,0x00,0x80,0x80,0x80,0xC8,0xA8,0xA8,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x0196, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x0197, {0x00,0x00,0x70,0x20,0x20,0x20,0x70,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0198, {0x00,0x00,0x88,0x94,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x0199, {0x00,0x00,0x40,0xA0,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x019A, {0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x019B, {0x00,0x00,0x90,0x60,0x40,0xA0,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x019C, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0x019D, {0x00,0x00,0x48,0x48,0x68,0x68,0x78,0x58,0x58,0x48,0x48,0xC0,0x40}}, +{ 0x019E, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x019F, {0x00,0x00,0x70,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01A0, {0x00,0x00,0x64,0x94,0x98,0x90,0x90,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x01A1, {0x00,0x00,0x00,0x00,0x00,0x64,0x94,0x98,0x90,0x90,0x60,0x00,0x00}}, +{ 0x01A2, {0x00,0x00,0x50,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x48,0x00,0x00}}, +{ 0x01A3, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0xA8,0xA8,0x48,0x08,0x08}}, +{ 0x01A4, {0x00,0x00,0x70,0xA8,0xA8,0x28,0x30,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x01A5, {0x00,0x00,0x40,0xA0,0x80,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80}}, +{ 0x01A6, {0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x08,0x08}}, +{ 0x01A7, {0x00,0x00,0x70,0x88,0x08,0x08,0x70,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x01A8, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x30,0x40,0x88,0x70,0x00,0x00}}, +{ 0x01A9, {0x00,0x00,0xF8,0x80,0x40,0x20,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x01AA, {0x00,0x00,0x40,0xA0,0x60,0x20,0x20,0x20,0x20,0x20,0x28,0x10,0x00}}, +{ 0x01AB, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x10,0x20}}, +{ 0x01AC, {0x00,0x00,0x78,0xA0,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x01AD, {0x00,0x00,0x20,0x50,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x01AE, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x10}}, +{ 0x01AF, {0x00,0x00,0x94,0x94,0x98,0x90,0x90,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x01B0, {0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x98,0x90,0xB0,0x50,0x00,0x00}}, +{ 0x01B1, {0x00,0x00,0xD8,0x50,0x50,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01B2, {0x00,0x00,0x90,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01B3, {0x00,0x00,0x68,0xA8,0xA8,0x28,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x01B4, {0x00,0x00,0x00,0x00,0x08,0x94,0x90,0x90,0x90,0x70,0x10,0x90,0x60}}, +{ 0x01B5, {0x00,0x00,0xF8,0x08,0x10,0x10,0xF8,0x40,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x01B6, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0xF8,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x01B7, {0x00,0x00,0xF8,0x08,0x10,0x20,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x01B8, {0x00,0x00,0xF8,0x80,0x40,0x20,0x70,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x01B9, {0x00,0x00,0x00,0x00,0x00,0xF8,0x40,0x20,0x70,0x80,0x80,0x88,0x70}}, +{ 0x01BA, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x70,0x10,0x60,0x88,0x70}}, +{ 0x01BB, {0x00,0x00,0x70,0x88,0x88,0x08,0x10,0xF8,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x01BC, {0x00,0x00,0xF8,0x88,0x80,0xB0,0xC8,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x01BD, {0x00,0x00,0x78,0x48,0x40,0x50,0x68,0x08,0x08,0x48,0x30,0x00,0x00}}, +{ 0x01BE, {0x00,0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x10,0x50,0x20,0x00,0x00}}, +{ 0x01BF, {0x00,0x00,0x00,0x00,0x00,0x50,0x68,0x48,0x48,0x50,0x60,0x40,0xC0}}, +{ 0x01C0, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x01C1, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x01C2, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0xF8,0x20,0x20,0x00,0x00}}, +{ 0x01C3, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0x01C4, {0x00,0x28,0x10,0x00,0xD8,0xA8,0xA8,0xB0,0xB0,0xB0,0xD8,0x00,0x00}}, +{ 0x01C5, {0x00,0x00,0x28,0x10,0xC0,0xA0,0xB8,0xA8,0xA8,0xB0,0xD8,0x00,0x00}}, +{ 0x01C6, {0x00,0x28,0x10,0x00,0x20,0x20,0x78,0xA8,0xA8,0xB0,0x78,0x00,0x00}}, +{ 0x01C7, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xA8,0xF0,0x00,0x00}}, +{ 0x01C8, {0x00,0x00,0x80,0x88,0x80,0x98,0x88,0x88,0x88,0x88,0xF8,0x28,0x10}}, +{ 0x01C9, {0x00,0x00,0xC0,0x48,0x40,0x58,0x48,0x48,0x48,0x48,0xE8,0x28,0x10}}, +{ 0x01CA, {0x00,0x00,0xB8,0xA8,0xE8,0xE8,0xE8,0xE8,0xE8,0xB8,0xB8,0x00,0x00}}, +{ 0x01CB, {0x00,0x00,0xA0,0xA8,0xE0,0xF8,0xE8,0xE8,0xE8,0xA8,0xA8,0x28,0x10}}, +{ 0x01CC, {0x00,0x00,0x00,0x08,0x00,0xC8,0xA8,0xA8,0xA8,0xA8,0xA8,0x28,0x10}}, +{ 0x01CD, {0x00,0x48,0x30,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x01CE, {0x00,0x00,0x48,0x30,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01CF, {0x00,0x48,0x30,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x01D0, {0x00,0x00,0x90,0x60,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x01D1, {0x00,0x48,0x30,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01D2, {0x00,0x00,0x48,0x30,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01D3, {0x00,0x48,0x30,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01D4, {0x00,0x00,0x48,0x30,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01D5, {0x00,0xF8,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01D6, {0x00,0xF8,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01D7, {0x10,0x20,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01D8, {0x10,0x20,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01D9, {0x48,0x30,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01DA, {0x48,0x30,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01DB, {0x40,0x20,0x00,0x50,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01DC, {0x40,0x20,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01DD, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x01DE, {0xF8,0x00,0x50,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x01DF, {0xF8,0x00,0x50,0x50,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01E0, {0xF8,0x00,0x20,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x01E1, {0xF8,0x00,0x20,0x20,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01E2, {0x00,0x00,0xF8,0x00,0x58,0xA0,0xA0,0xF0,0xA0,0xA0,0xB8,0x00,0x00}}, +{ 0x01E3, {0x00,0x00,0x00,0xF8,0x00,0x70,0x28,0x70,0xA0,0xA8,0x50,0x00,0x00}}, +{ 0x01E4, {0x00,0x00,0x60,0x90,0x80,0x80,0x80,0xB0,0xB8,0x90,0x60,0x00,0x00}}, +{ 0x01E5, {0x00,0x00,0x00,0x00,0x00,0x60,0x90,0x90,0x90,0x70,0x10,0xF8,0x60}}, +{ 0x01E6, {0x00,0x48,0x30,0x00,0x70,0x88,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01E7, {0x00,0x48,0x30,0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x01E8, {0x00,0x48,0x30,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x01E9, {0x00,0x48,0x30,0x00,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x00,0x00}}, +{ 0x01EA, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x20,0x10}}, +{ 0x01EB, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x20,0x10}}, +{ 0x01EC, {0x00,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x20,0x10}}, +{ 0x01ED, {0x00,0x00,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x20,0x10}}, +{ 0x01EE, {0x00,0x48,0x30,0x00,0xF8,0x10,0x20,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x01EF, {0x00,0x00,0x48,0x30,0x00,0xF8,0x10,0x20,0x70,0x08,0x08,0x88,0x70}}, +{ 0x01F0, {0x00,0x00,0x48,0x30,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x90,0x60}}, +{ 0x01F1, {0x00,0x00,0xD8,0xA8,0xA8,0xA8,0xA8,0xB0,0xB0,0xB0,0xD8,0x00,0x00}}, +{ 0x01F2, {0x00,0x00,0xC0,0xA0,0xA0,0xB8,0xA8,0xA8,0xB0,0xB0,0xD8,0x00,0x00}}, +{ 0x01F3, {0x00,0x00,0x20,0x20,0x20,0x78,0xA8,0xA8,0xB0,0xB0,0x78,0x00,0x00}}, +{ 0x01F4, {0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0x01F5, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x01F6, {0x00,0x00,0xA0,0xA0,0xA0,0xA8,0xE8,0xA8,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x01F7, {0x00,0x00,0xB0,0xC8,0x88,0x88,0x90,0xA0,0xC0,0x80,0x80,0x80,0x00}}, +{ 0x01F8, {0x00,0x40,0x20,0x00,0x88,0xC8,0xC8,0xA8,0x98,0x98,0x88,0x00,0x00}}, +{ 0x01F9, {0x00,0x00,0x40,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x01FA, {0x10,0x20,0x00,0x20,0x50,0x20,0x20,0x50,0x88,0xF8,0x88,0x00,0x00}}, +{ 0x01FB, {0x10,0x20,0x30,0x48,0x30,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x01FC, {0x00,0x10,0x20,0x00,0x58,0xA0,0xA0,0xF0,0xA0,0xA0,0xB8,0x00,0x00}}, +{ 0x01FD, {0x00,0x00,0x10,0x20,0x00,0x70,0x28,0x70,0xA0,0xA8,0x50,0x00,0x00}}, +{ 0x01FE, {0x00,0x10,0x20,0x08,0x70,0x98,0x98,0xA8,0xC8,0xC8,0x70,0x80,0x00}}, +{ 0x01FF, {0x00,0x00,0x10,0x20,0x08,0x70,0x98,0xA8,0xA8,0xC8,0x70,0x80,0x00}}, +{ 0x0200, {0x00,0x90,0x48,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x0201, {0x00,0x00,0x90,0x48,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0202, {0x00,0x70,0x88,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x0203, {0x00,0x00,0x70,0x88,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0204, {0x00,0x90,0x48,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0205, {0x00,0x00,0x90,0x48,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0206, {0x00,0x70,0x88,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0207, {0x00,0x00,0x70,0x88,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0208, {0x00,0x90,0x48,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0209, {0x00,0x00,0x90,0x48,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x020A, {0x00,0x70,0x88,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x020B, {0x00,0x00,0x70,0x88,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x020C, {0x00,0x90,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x020D, {0x00,0x00,0x90,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x020E, {0x00,0x70,0x88,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x020F, {0x00,0x00,0x70,0x88,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0210, {0x00,0x90,0x48,0x00,0xF0,0x88,0x88,0xF0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x0211, {0x00,0x00,0x90,0x48,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0212, {0x00,0x70,0x88,0x00,0xF0,0x88,0x88,0xF0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x0213, {0x00,0x00,0x70,0x88,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0214, {0x00,0x90,0x48,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0215, {0x00,0x00,0x90,0x48,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0216, {0x00,0x70,0x88,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0217, {0x00,0x00,0x70,0x88,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0218, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x20,0x40}}, +{ 0x0219, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x20,0x40}}, +{ 0x021A, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x20}}, +{ 0x021B, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x10,0x20}}, +{ 0x021C, {0x00,0x00,0xF0,0x88,0x08,0x10,0x30,0x48,0x08,0x10,0xE0,0x00,0x00}}, +{ 0x021D, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0x10,0x30,0x48,0x08,0x10,0xE0}}, +{ 0x021E, {0x00,0x48,0x30,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x021F, {0x00,0x48,0x30,0x00,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0220, {0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x0222, {0x00,0x00,0x10,0x48,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0223, {0x00,0x00,0x00,0x00,0x50,0x88,0x88,0x70,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0224, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0xF8,0x08,0x10}}, +{ 0x0225, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x08,0x10}}, +{ 0x0226, {0x00,0x00,0x20,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x0227, {0x00,0x00,0x00,0x20,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0228, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x10,0x60}}, +{ 0x0229, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x10,0x60}}, +{ 0x022A, {0x70,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x022B, {0x00,0x70,0x00,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x022C, {0x78,0x00,0x28,0x50,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x022D, {0x78,0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x022E, {0x00,0x00,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x022F, {0x00,0x00,0x00,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0230, {0x70,0x00,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0231, {0x00,0x70,0x00,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0232, {0x00,0x70,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0233, {0x00,0x00,0x00,0x70,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x0250, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0xF0,0x80,0x70,0x00,0x00}}, +{ 0x0251, {0x00,0x00,0x00,0x00,0x00,0x68,0x98,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0252, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0xC8,0xB0,0x00,0x00}}, +{ 0x0253, {0x00,0x00,0x60,0x90,0x80,0xF0,0x88,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0254, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0255, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0xB0,0xC8,0x70,0x80,0x00}}, +{ 0x0256, {0x00,0x00,0x10,0x10,0x10,0x70,0x90,0x90,0x90,0x90,0x70,0x14,0x08}}, +{ 0x0257, {0x00,0x08,0x14,0x10,0x10,0x70,0x90,0x90,0x90,0x90,0x70,0x00,0x00}}, +{ 0x0258, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0259, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x025A, {0x00,0x00,0x00,0x00,0x00,0x60,0x98,0x34,0x50,0x90,0x60,0x00,0x00}}, +{ 0x025B, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x025C, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x30,0x08,0x88,0x70,0x00,0x00}}, +{ 0x025D, {0x00,0x00,0x00,0x00,0x00,0x60,0x98,0x24,0x10,0x90,0x60,0x00,0x00}}, +{ 0x025E, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xB0,0x88,0x88,0x70,0x00,0x00}}, +{ 0x025F, {0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x78,0x10,0x10,0x90,0x60}}, +{ 0x0260, {0x00,0x00,0x08,0x14,0x10,0x70,0x90,0x90,0x90,0x70,0x10,0x90,0x60}}, +{ 0x0261, {0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x0262, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0x0263, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x20}}, +{ 0x0264, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0x20,0x50,0x50,0x20,0x00,0x00}}, +{ 0x0265, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x08,0x08}}, +{ 0x0266, {0x00,0x00,0x60,0x90,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0267, {0x00,0x00,0x60,0x90,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x28,0x10}}, +{ 0x0268, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x70,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0269, {0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x026A, {0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x026B, {0x00,0x00,0x60,0x20,0x20,0x68,0xB0,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x026C, {0x00,0x00,0x60,0x20,0x20,0x60,0xA0,0x78,0x20,0x20,0x70,0x00,0x00}}, +{ 0x026D, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x10}}, +{ 0x026E, {0x00,0x00,0xC0,0x40,0x40,0x78,0x48,0x50,0x70,0x48,0xE8,0x08,0x30}}, +{ 0x026F, {0x00,0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0x0270, {0x00,0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x58,0x08,0x08}}, +{ 0x0271, {0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x28,0x10}}, +{ 0x0272, {0x00,0x00,0x00,0x00,0x00,0x50,0x68,0x48,0x48,0x48,0x48,0x40,0x80}}, +{ 0x0273, {0x00,0x00,0x00,0x00,0x00,0xA0,0xD0,0x90,0x90,0x90,0x90,0x14,0x08}}, +{ 0x0274, {0x00,0x00,0x00,0x00,0x00,0x88,0xC8,0xA8,0xA8,0x98,0x88,0x00,0x00}}, +{ 0x0275, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0276, {0x00,0x00,0x00,0x00,0x00,0x78,0xA0,0xB0,0xA0,0xA0,0x78,0x00,0x00}}, +{ 0x0277, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0278, {0x00,0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x0279, {0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x98,0x68,0x00,0x00}}, +{ 0x027A, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x98,0x68,0x00,0x00}}, +{ 0x027B, {0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xB0,0x50,0x14,0x08}}, +{ 0x027C, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x80,0x80}}, +{ 0x027D, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0xA0,0x40}}, +{ 0x027E, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x027F, {0x00,0x00,0x00,0x00,0x00,0x60,0x90,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x0280, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0xF0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x0281, {0x00,0x00,0x00,0x00,0x00,0x88,0x90,0xA0,0xF0,0x88,0xF0,0x00,0x00}}, +{ 0x0282, {0x00,0x00,0x00,0x00,0x00,0x78,0x80,0x70,0x08,0x08,0xF0,0x80,0x40}}, +{ 0x0283, {0x00,0x00,0x10,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x40}}, +{ 0x0284, {0x00,0x00,0x10,0x28,0x20,0x20,0x20,0x20,0x70,0x20,0x20,0xA0,0x40}}, +{ 0x0285, {0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0x20,0x20,0x20,0x20,0x28,0x10}}, +{ 0x0286, {0x00,0x00,0x10,0x28,0x20,0x20,0x20,0x20,0x20,0x60,0xB0,0xA8,0x40}}, +{ 0x0287, {0x00,0x00,0x00,0x00,0x00,0x60,0x90,0x10,0x10,0x10,0x78,0x10,0x10}}, +{ 0x0288, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x40,0x40,0x48,0x30}}, +{ 0x0289, {0x00,0x00,0x00,0x00,0x00,0x48,0x48,0xFC,0x48,0x58,0x28,0x00,0x00}}, +{ 0x028A, {0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x028B, {0x00,0x00,0x00,0x00,0x00,0x90,0x88,0x88,0x88,0x90,0x60,0x00,0x00}}, +{ 0x028C, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x50,0x88,0x88,0x88,0x00,0x00}}, +{ 0x028D, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0xA8,0x88,0x88,0x00,0x00}}, +{ 0x028E, {0x00,0x00,0x08,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x028F, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0290, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x10,0x08}}, +{ 0x0291, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x50,0xA8,0xF0,0x40,0x00}}, +{ 0x0292, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x70,0x08,0x08,0x88,0x70}}, +{ 0x0293, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x70,0x08,0x68,0x98,0x78}}, +{ 0x0294, {0x00,0x00,0x30,0x48,0x08,0x08,0x30,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0295, {0x00,0x00,0x30,0x48,0x40,0x40,0x30,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x0296, {0x00,0x00,0x70,0x20,0x20,0x20,0x30,0x08,0x08,0x48,0x30,0x00,0x00}}, +{ 0x0297, {0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x70}}, +{ 0x0298, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x0299, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0xF0,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x029A, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x68,0x88,0x88,0x70,0x00,0x00}}, +{ 0x029B, {0x00,0x00,0x00,0x00,0x04,0x78,0x88,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0x029C, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x029D, {0x00,0x00,0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x70,0x98,0x68}}, +{ 0x029E, {0x00,0x00,0x00,0x00,0x00,0x88,0x48,0x28,0x18,0x28,0x48,0x08,0x08}}, +{ 0x029F, {0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00}}, +{ 0x02A0, {0x00,0x00,0x00,0x08,0x14,0x70,0x90,0x90,0x90,0x70,0x10,0x10,0x10}}, +{ 0x02A1, {0x00,0x00,0x30,0x48,0x08,0x08,0x30,0x20,0x70,0x20,0x70,0x00,0x00}}, +{ 0x02A2, {0x00,0x00,0x30,0x48,0x40,0x40,0x30,0x10,0x38,0x10,0x38,0x00,0x00}}, +{ 0x02A3, {0x00,0x00,0x20,0x20,0x20,0x78,0xA8,0xA8,0xB0,0xB0,0x78,0x00,0x00}}, +{ 0x02A4, {0x00,0x00,0x20,0x20,0x20,0x78,0xA8,0xA8,0xB0,0xB0,0x68,0x08,0x30}}, +{ 0x02A5, {0x00,0x00,0x20,0x20,0x20,0x78,0xA8,0xA8,0xBC,0xB4,0x78,0x10,0x20}}, +{ 0x02A6, {0x00,0x00,0x00,0x40,0x40,0xE0,0x58,0x60,0x50,0x48,0x30,0x00,0x00}}, +{ 0x02A7, {0x00,0x00,0x08,0x50,0x50,0xF8,0x50,0x50,0x50,0x50,0x30,0x50,0x20}}, +{ 0x02A8, {0x00,0x00,0x00,0x40,0x40,0xE0,0x58,0x60,0x68,0x74,0x38,0x20,0x40}}, +{ 0x02A9, {0x00,0x00,0x60,0x90,0x80,0x80,0xF0,0xA8,0xA8,0xA8,0xA8,0x08,0x30}}, +{ 0x02AA, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0xA0,0x90,0xC8,0xB0,0x00,0x00}}, +{ 0x02AB, {0x00,0x00,0x80,0x80,0x80,0xF8,0x88,0x90,0xA0,0xC0,0xF8,0x00,0x00}}, +{ 0x02AC, {0x00,0x00,0xA8,0xA8,0x50,0x50,0x00,0xA8,0xA8,0x50,0x50,0x00,0x00}}, +{ 0x02AD, {0x00,0x00,0x00,0x00,0x78,0x48,0x00,0x78,0x48,0x00,0x00,0x00,0x00}}, +{ 0x02B0, {0x00,0x00,0x40,0x50,0x68,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B1, {0x00,0x20,0x40,0x50,0x68,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B2, {0x00,0x10,0x00,0x10,0x10,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B3, {0x00,0x00,0x50,0x60,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B4, {0x00,0x00,0x10,0x10,0x10,0x30,0x50,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B5, {0x00,0x00,0x10,0x10,0x10,0x30,0x50,0x08,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B6, {0x00,0x00,0x50,0x50,0x60,0x50,0x60,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B7, {0x00,0x00,0x88,0xA8,0xA8,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B8, {0x00,0x00,0x50,0x50,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02B9, {0x00,0x00,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02BA, {0x00,0x00,0x28,0x28,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02BB, {0x00,0x00,0x10,0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02BC, {0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02BD, {0x00,0x00,0x30,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02BE, {0x00,0x20,0x10,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02BF, {0x00,0x10,0x20,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C0, {0x00,0x20,0x50,0x10,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C1, {0x00,0x20,0x50,0x40,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C2, {0x00,0x10,0x20,0x40,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C3, {0x00,0x40,0x20,0x10,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C4, {0x00,0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C5, {0x00,0x88,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C6, {0x00,0x30,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C7, {0x00,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C8, {0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02C9, {0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02CA, {0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02CB, {0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02CC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00}}, +{ 0x02CD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70}}, +{ 0x02CE, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10}}, +{ 0x02CF, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40}}, +{ 0x02D0, {0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x00,0x00,0x20,0x70,0x00,0x00}}, +{ 0x02D1, {0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02D2, {0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x10,0x20,0x00,0x00,0x00,0x00}}, +{ 0x02D3, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x40,0x20,0x00,0x00,0x00,0x00}}, +{ 0x02D4, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02D5, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x02D6, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x02D7, {0x00,0x00,0x00,0x00,0x00,0x88,0xF8,0x88,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02D8, {0x00,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02D9, {0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02DA, {0x00,0x20,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02DB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10}}, +{ 0x02DC, {0x00,0x28,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02DD, {0x00,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02DE, {0x00,0x00,0x00,0x00,0x00,0x40,0xC8,0x30,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02DF, {0x50,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02E0, {0x00,0x00,0x48,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02E1, {0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02E2, {0x00,0x00,0x30,0x40,0x20,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02E3, {0x00,0x00,0x48,0x30,0x30,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02E4, {0x00,0x00,0x30,0x48,0x40,0x40,0x30,0x10,0x38,0x00,0x00,0x00,0x00}}, +{ 0x02E5, {0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x02E6, {0x00,0x00,0x10,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x02E7, {0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x70,0x10,0x10,0x10,0x10,0x10}}, +{ 0x02E8, {0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x10,0x10}}, +{ 0x02E9, {0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70}}, +{ 0x02EA, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x70,0x00,0x00}}, +{ 0x02EB, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x70,0x40,0x40,0x00,0x00}}, +{ 0x02EC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20}}, +{ 0x02ED, {0x00,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x02EE, {0x00,0x00,0xD8,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0300, {0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0301, {0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0302, {0x00,0x30,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0303, {0x00,0x28,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0304, {0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0305, {0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0306, {0x00,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0307, {0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0308, {0x00,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0309, {0x20,0x50,0x10,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x030A, {0x20,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x030B, {0x00,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x030C, {0x00,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x030D, {0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x030E, {0x00,0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x030F, {0x00,0x90,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0310, {0x20,0x20,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0311, {0x00,0x70,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0312, {0x00,0x10,0x20,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0313, {0x00,0x30,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0314, {0x00,0x60,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0315, {0x00,0x0C,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0316, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10}}, +{ 0x0317, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20}}, +{ 0x0318, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x10}}, +{ 0x0319, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x20}}, +{ 0x031A, {0x00,0x1C,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x031B, {0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x031C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x10}}, +{ 0x031D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x70}}, +{ 0x031E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x20}}, +{ 0x031F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20}}, +{ 0x0320, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70}}, +{ 0x0321, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x10}}, +{ 0x0322, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x04}}, +{ 0x0323, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20}}, +{ 0x0324, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50}}, +{ 0x0325, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20}}, +{ 0x0326, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20}}, +{ 0x0327, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20}}, +{ 0x0328, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10}}, +{ 0x0329, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20}}, +{ 0x032A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x48}}, +{ 0x032B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x50}}, +{ 0x032C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x30}}, +{ 0x032D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48}}, +{ 0x032E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x70}}, +{ 0x032F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88}}, +{ 0x0330, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x50}}, +{ 0x0331, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8}}, +{ 0x0332, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC}}, +{ 0x0333, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xFC}}, +{ 0x0334, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x50,0x00,0x00,0x00,0x00}}, +{ 0x0335, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0336, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0337, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x40,0x00,0x00,0x00,0x00}}, +{ 0x0338, {0x00,0x00,0x08,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0x80,0x00,0x00}}, +{ 0x0339, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20}}, +{ 0x033A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x78}}, +{ 0x033B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x50,0x70}}, +{ 0x033C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xA8}}, +{ 0x033D, {0x50,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x033E, {0x10,0x20,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x033F, {0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0340, {0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0341, {0x00,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0342, {0x68,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0343, {0x00,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0344, {0x00,0x10,0x20,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0345, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20}}, +{ 0x0346, {0x00,0x70,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0347, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70}}, +{ 0x0348, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x50}}, +{ 0x0349, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x10}}, +{ 0x034A, {0x10,0x68,0xB0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x034B, {0x10,0x00,0x68,0xB0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x034C, {0x28,0x50,0x28,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x034D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xF8,0x50}}, +{ 0x034E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x70}}, +{ 0x034F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0360, {0x00,0x30,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0361, {0x00,0x38,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0362, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xFC,0x08}}, +{ 0x0363, {0x20,0x10,0x30,0x50,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0364, {0x20,0x50,0x70,0x40,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0365, {0x20,0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0366, {0x30,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0367, {0x50,0x50,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0368, {0x30,0x40,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0369, {0x10,0x30,0x50,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x036A, {0x40,0x60,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x036B, {0xD0,0xA8,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x036C, {0x50,0x60,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x036D, {0x20,0x70,0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x036E, {0x50,0x50,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x036F, {0x50,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0374, {0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0375, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20}}, +{ 0x037A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30}}, +{ 0x037E, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x30,0x20,0x40,0x00}}, +{ 0x0384, {0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0385, {0x00,0x10,0x20,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0386, {0x00,0x00,0x50,0xA8,0x28,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x0387, {0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0388, {0x00,0x00,0x78,0xA0,0x20,0x20,0x30,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x0389, {0x00,0x00,0x68,0xA8,0x28,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x038A, {0x00,0x00,0x78,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x038C, {0x00,0x00,0x50,0xA8,0x28,0x28,0x28,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x038E, {0x00,0x00,0x68,0xA8,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x038F, {0x00,0x00,0x50,0xA8,0x28,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x0390, {0x00,0x10,0x20,0xD8,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x0391, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0392, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0393, {0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0394, {0x00,0x00,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x0395, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0396, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x0397, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0398, {0x00,0x00,0x70,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0399, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x039A, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x039B, {0x00,0x00,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x039C, {0x00,0x00,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x039D, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x00,0x00}}, +{ 0x039E, {0x00,0x00,0xF8,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xF8,0x00,0x00}}, +{ 0x039F, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03A0, {0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x03A1, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x03A3, {0x00,0x00,0xF8,0x80,0x40,0x20,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x03A4, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x03A5, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x03A6, {0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x03A7, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x03A8, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x03A9, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x50,0x50,0xD8,0x00,0x00}}, +{ 0x03AA, {0x00,0xD8,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x03AB, {0x00,0xD8,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x03AC, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x03AD, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x03AE, {0x00,0x00,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x03AF, {0x00,0x00,0x20,0x40,0x00,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x03B0, {0x00,0x10,0x20,0xD8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03B1, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x03B2, {0x00,0x00,0x60,0x90,0x90,0xF0,0x88,0x88,0x88,0xC8,0xB0,0x80,0x80}}, +{ 0x03B3, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x20,0x20}}, +{ 0x03B4, {0x00,0x00,0x70,0x88,0x40,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03B5, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x03B6, {0x00,0x00,0xF8,0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x70,0x08,0x10}}, +{ 0x03B7, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x03B8, {0x00,0x00,0x60,0x90,0x90,0x90,0xF0,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x03B9, {0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x03BA, {0x00,0x00,0x00,0x00,0x00,0x88,0x90,0xA0,0xE0,0x90,0x88,0x00,0x00}}, +{ 0x03BB, {0x00,0x00,0x70,0x88,0x08,0x68,0x98,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x03BC, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0xE8,0x80,0x80}}, +{ 0x03BD, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x03BE, {0x00,0x00,0xF8,0x20,0x40,0x40,0x30,0x40,0x80,0x80,0x70,0x08,0x10}}, +{ 0x03BF, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03C0, {0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x03C1, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xF0,0x80,0x80}}, +{ 0x03C2, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x70,0x08,0x30}}, +{ 0x03C3, {0x00,0x00,0x00,0x00,0x00,0x78,0x90,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03C4, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x10,0x00,0x00}}, +{ 0x03C5, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03C6, {0x00,0x00,0x00,0x00,0x00,0xB0,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x03C7, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88}}, +{ 0x03C8, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x03C9, {0x00,0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x03CA, {0x00,0x00,0x00,0xD8,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x03CB, {0x00,0x00,0x00,0xD8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03CC, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03CD, {0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03CE, {0x00,0x00,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x03D0, {0x00,0x00,0x60,0x90,0x90,0xB0,0xC8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03D1, {0x00,0x00,0x30,0x48,0x48,0x3C,0x08,0xC8,0x48,0x48,0x30,0x00,0x00}}, +{ 0x03D2, {0x00,0x00,0x88,0x54,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x03D3, {0x00,0x00,0x68,0x14,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x03D4, {0x00,0xD8,0x00,0x88,0x54,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x03D5, {0x00,0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x03D6, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x03D7, {0x00,0x00,0x40,0x20,0x00,0x88,0x48,0x50,0x70,0x50,0x88,0x08,0x30}}, +{ 0x03D8, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x20,0x20}}, +{ 0x03D9, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x20,0x20}}, +{ 0x03DA, {0x00,0x00,0x30,0x48,0x80,0x80,0x80,0x80,0x80,0x70,0x08,0x10,0x00}}, +{ 0x03DB, {0x00,0x00,0x00,0x00,0x08,0x70,0x80,0x80,0x80,0x80,0x70,0x08,0x30}}, +{ 0x03DC, {0x00,0x00,0xF8,0x80,0x80,0x80,0xE0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x03DD, {0x00,0x00,0x00,0x00,0x00,0xF0,0x80,0x80,0xE0,0x80,0x80,0x80,0x80}}, +{ 0x03DE, {0x00,0x00,0x80,0x80,0x88,0x98,0xA8,0xC8,0x88,0x08,0x08,0x00,0x00}}, +{ 0x03DF, {0x00,0x00,0x20,0x20,0x40,0x40,0x80,0xF8,0x08,0x10,0x10,0x20,0x20}}, +{ 0x03E0, {0x00,0x00,0x20,0x20,0x50,0x50,0x50,0x98,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x03E1, {0x00,0x00,0xC0,0x20,0x10,0x30,0x48,0x98,0x28,0x48,0x08,0x08,0x08}}, +{ 0x03E2, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x78,0x08,0xF0,0x00}}, +{ 0x03E3, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0x78,0x08,0xF0,0x00}}, +{ 0x03E4, {0x00,0x00,0x48,0xA8,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x00,0x00}}, +{ 0x03E5, {0x00,0x00,0x00,0x00,0x00,0x48,0xA8,0x88,0x78,0x08,0x08,0x00,0x00}}, +{ 0x03E6, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x08,0xF0,0x00}}, +{ 0x03E7, {0x00,0x00,0x20,0x20,0x20,0x70,0xA8,0xA8,0x48,0x08,0xF0,0x00,0x00}}, +{ 0x03E8, {0x00,0x00,0x70,0x88,0x48,0x10,0x20,0x40,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03E9, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x80,0x78,0x00,0x00}}, +{ 0x03EA, {0x00,0x00,0x50,0xA8,0x20,0x50,0x50,0x50,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x03EB, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0x20,0x50,0x88,0xF8,0x00,0x00}}, +{ 0x03EC, {0x00,0x00,0x08,0x70,0x80,0xB0,0xC8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03ED, {0x00,0x00,0x00,0x00,0x08,0x70,0x80,0xB0,0xC8,0x88,0x70,0x00,0x00}}, +{ 0x03EE, {0x00,0x00,0x70,0x20,0xF8,0xA8,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x03EF, {0x00,0x00,0x20,0x30,0x20,0xF8,0xA0,0x20,0x20,0x20,0x20,0x60,0x20}}, +{ 0x03F0, {0x00,0x00,0x00,0x00,0x00,0x88,0x48,0x50,0x70,0x50,0x88,0x00,0x00}}, +{ 0x03F1, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xF0,0x80,0x78}}, +{ 0x03F2, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x03F3, {0x00,0x00,0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x90,0x60}}, +{ 0x03F4, {0x00,0x00,0x70,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x03F5, {0x00,0x00,0x00,0x00,0x00,0x38,0x40,0x70,0x40,0x40,0x38,0x00,0x00}}, +{ 0x03F6, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x38,0x08,0x08,0x70,0x00,0x00}}, +{ 0x0400, {0x00,0x40,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0401, {0x00,0x50,0x50,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0402, {0x00,0x00,0xF8,0x20,0x20,0x30,0x28,0x28,0x28,0x28,0x28,0x08,0x10}}, +{ 0x0403, {0x00,0x20,0x40,0x00,0xF8,0x88,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0404, {0x00,0x00,0x38,0x40,0x80,0x80,0xF0,0x80,0x80,0x40,0x38,0x00,0x00}}, +{ 0x0405, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0406, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0407, {0x00,0x50,0x50,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x0408, {0x00,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x60,0x00,0x00}}, +{ 0x0409, {0x00,0x00,0x60,0xA0,0xA0,0xA0,0xB0,0xA8,0xA8,0xA8,0xB0,0x00,0x00}}, +{ 0x040A, {0x00,0x00,0xA0,0xA0,0xA0,0xA0,0xF0,0xA8,0xA8,0xA8,0xB0,0x00,0x00}}, +{ 0x040B, {0x00,0x00,0xF8,0x20,0x20,0x30,0x28,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x040C, {0x10,0x20,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x040D, {0x00,0x40,0x20,0x00,0x88,0x98,0x98,0xA8,0xC8,0xC8,0x88,0x00,0x00}}, +{ 0x040E, {0x00,0x88,0x70,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x70,0x00,0x00}}, +{ 0x040F, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x20,0x20}}, +{ 0x0410, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0411, {0x00,0x00,0xF0,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0412, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0413, {0x00,0x00,0xF8,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0414, {0x00,0x00,0x30,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0xF8,0x88,0x00}}, +{ 0x0415, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x0416, {0x00,0x00,0xA8,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x0417, {0x00,0x00,0x70,0x88,0x08,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0418, {0x00,0x00,0x88,0x88,0x98,0x98,0xA8,0xA8,0xC8,0xC8,0x88,0x00,0x00}}, +{ 0x0419, {0x00,0x88,0x70,0x00,0x88,0x98,0x98,0xA8,0xC8,0xC8,0x88,0x00,0x00}}, +{ 0x041A, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x041B, {0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x88,0x00,0x00}}, +{ 0x041C, {0x00,0x00,0x88,0xD8,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x041D, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x041E, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x041F, {0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0420, {0x00,0x00,0xF0,0x88,0x88,0x88,0x88,0xF0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0421, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0422, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0423, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x78,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0424, {0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x0425, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x0426, {0x00,0x00,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xF8,0x08,0x08}}, +{ 0x0427, {0x00,0x00,0x88,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x0428, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x00,0x00}}, +{ 0x0429, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08}}, +{ 0x042A, {0x00,0x00,0xC0,0x40,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x042B, {0x00,0x00,0x88,0x88,0x88,0xE8,0x98,0x98,0x98,0x98,0xE8,0x00,0x00}}, +{ 0x042C, {0x00,0x00,0x80,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x042D, {0x00,0x00,0xE0,0x10,0x08,0x08,0x78,0x08,0x08,0x10,0xE0,0x00,0x00}}, +{ 0x042E, {0x00,0x00,0x90,0xA8,0xA8,0xA8,0xE8,0xA8,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x042F, {0x00,0x00,0x78,0x88,0x88,0x88,0x78,0x28,0x48,0x88,0x88,0x00,0x00}}, +{ 0x0430, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0431, {0x00,0x00,0x08,0x70,0x80,0xF0,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0432, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0xF0,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x0433, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0434, {0x00,0x00,0x00,0x00,0x00,0x30,0x50,0x50,0x50,0x50,0xF8,0x88,0x00}}, +{ 0x0435, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0436, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x0437, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x30,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0438, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x00,0x00}}, +{ 0x0439, {0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x00,0x00}}, +{ 0x043A, {0x00,0x00,0x00,0x00,0x00,0x88,0x90,0xE0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x043B, {0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x88,0x00,0x00}}, +{ 0x043C, {0x00,0x00,0x00,0x00,0x00,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x00,0x00}}, +{ 0x043D, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x043E, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x043F, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0440, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80}}, +{ 0x0441, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0442, {0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0443, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x0444, {0x00,0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x0445, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x88,0x00,0x00}}, +{ 0x0446, {0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x90,0xF8,0x08,0x08}}, +{ 0x0447, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x00,0x00}}, +{ 0x0448, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x00,0x00}}, +{ 0x0449, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x08,0x08}}, +{ 0x044A, {0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x70,0x48,0x48,0x70,0x00,0x00}}, +{ 0x044B, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xE8,0x98,0x98,0xE8,0x00,0x00}}, +{ 0x044C, {0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x044D, {0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0x38,0x08,0x08,0xF0,0x00,0x00}}, +{ 0x044E, {0x00,0x00,0x00,0x00,0x00,0x90,0xA8,0xA8,0xE8,0xA8,0x90,0x00,0x00}}, +{ 0x044F, {0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x78,0x48,0x88,0x00,0x00}}, +{ 0x0450, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0451, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x0452, {0x00,0x00,0x40,0xE0,0x40,0x50,0x68,0x48,0x48,0x48,0x48,0x08,0x10}}, +{ 0x0453, {0x00,0x00,0x20,0x40,0x00,0xF8,0x88,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0454, {0x00,0x00,0x00,0x00,0x00,0x78,0x80,0xE0,0x80,0x80,0x78,0x00,0x00}}, +{ 0x0455, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x0456, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x0457, {0x00,0x00,0x50,0x50,0x00,0x60,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x0458, {0x00,0x00,0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x90,0x60}}, +{ 0x0459, {0x00,0x00,0x00,0x00,0x00,0x60,0xA0,0xB0,0xA8,0xA8,0xB0,0x00,0x00}}, +{ 0x045A, {0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0xF0,0xA8,0xA8,0xB0,0x00,0x00}}, +{ 0x045B, {0x00,0x00,0x40,0xE0,0x40,0x50,0x68,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0x045C, {0x00,0x00,0x20,0x40,0x00,0x88,0x90,0xE0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x045D, {0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x00,0x00}}, +{ 0x045E, {0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x045F, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0xF8,0x20,0x20}}, +{ 0x0460, {0x00,0x00,0x50,0x88,0x88,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0461, {0x00,0x00,0x00,0x00,0x00,0x50,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0462, {0x00,0x00,0x40,0xF0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x0463, {0x00,0x00,0x00,0x40,0x40,0xE0,0x40,0x70,0x48,0x48,0x70,0x00,0x00}}, +{ 0x0464, {0x00,0x00,0x98,0xA0,0xA0,0xA0,0xF8,0xA0,0xA0,0xA0,0x98,0x00,0x00}}, +{ 0x0465, {0x00,0x00,0x00,0x00,0x00,0x98,0xA0,0xF8,0xA0,0xA0,0x98,0x00,0x00}}, +{ 0x0466, {0x00,0x00,0x20,0x20,0x50,0x50,0x50,0x88,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x0467, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x50,0x88,0xA8,0xA8,0x00,0x00}}, +{ 0x0468, {0x00,0x00,0x90,0x90,0x90,0xB8,0xF8,0xB8,0xB8,0xB8,0xB8,0x00,0x00}}, +{ 0x0469, {0x00,0x00,0x00,0x00,0x00,0x90,0x90,0xF8,0xB8,0xB8,0xB8,0x00,0x00}}, +{ 0x046A, {0x00,0x00,0xF8,0x88,0x50,0x50,0x70,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x046B, {0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x046C, {0x00,0x00,0xB8,0xA8,0xA8,0xA8,0xF0,0xB8,0xD4,0xD4,0xD4,0x00,0x00}}, +{ 0x046D, {0x00,0x00,0x00,0x00,0x00,0xB8,0xA8,0x90,0xF8,0xB8,0xB8,0x00,0x00}}, +{ 0x046E, {0x00,0x48,0x30,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x70,0x80,0x70}}, +{ 0x046F, {0x00,0x00,0x48,0x30,0x00,0x70,0x88,0x30,0x08,0x08,0x70,0x80,0x70}}, +{ 0x0470, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0471, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x0472, {0x00,0x00,0x70,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0473, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0474, {0x00,0x00,0x98,0x90,0x90,0x90,0x50,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x0475, {0x00,0x00,0x00,0x00,0x00,0x98,0x90,0x90,0x50,0x50,0x20,0x00,0x00}}, +{ 0x0476, {0x00,0x90,0x48,0x00,0x9C,0x90,0x90,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x0477, {0x00,0x00,0x90,0x48,0x00,0x98,0x90,0x90,0x50,0x50,0x20,0x00,0x00}}, +{ 0x0478, {0x00,0x00,0x40,0xA0,0xA0,0xB8,0xB8,0xB8,0xB8,0xB8,0x58,0x08,0x10}}, +{ 0x0479, {0x00,0x00,0x00,0x00,0x00,0x58,0xB8,0xB8,0xB8,0xB8,0x58,0x08,0x10}}, +{ 0x047A, {0x00,0x20,0x70,0xA8,0x88,0x88,0x88,0x88,0x88,0xA8,0x70,0x20,0x00}}, +{ 0x047B, {0x00,0x00,0x00,0x00,0x20,0x70,0xA8,0x88,0x88,0xA8,0x70,0x20,0x00}}, +{ 0x047C, {0x60,0x98,0x60,0x00,0x50,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x047D, {0x00,0x60,0x98,0x60,0x00,0x50,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x047E, {0x00,0xF8,0xA8,0x00,0x50,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x047F, {0x00,0x00,0xF8,0xA8,0x00,0x50,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0480, {0x00,0x00,0x70,0x88,0x88,0x80,0x80,0x80,0x80,0x80,0x70,0x10,0x10}}, +{ 0x0481, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x10,0x10,0x00}}, +{ 0x0482, {0x00,0x00,0x00,0x28,0x10,0xB0,0x48,0x40,0xA0,0x00,0x00,0x00,0x00}}, +{ 0x0483, {0x04,0xFC,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0484, {0x00,0x70,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0485, {0x00,0x70,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0486, {0x00,0x70,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0488, {0x40,0xA0,0x08,0x14,0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0x08,0x14}}, +{ 0x0489, {0x40,0x84,0xC8,0x0C,0x00,0x00,0x00,0x00,0x00,0x40,0x84,0xC8,0x0C}}, +{ 0x048A, {0x00,0x88,0x70,0x00,0x88,0x98,0x98,0xA8,0xC8,0xC8,0x88,0x10,0x10}}, +{ 0x048B, {0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x10,0x10}}, +{ 0x048C, {0x00,0x00,0x40,0x40,0xE0,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x048D, {0x00,0x00,0x00,0x00,0x40,0xE0,0x40,0x70,0x48,0x48,0x70,0x00,0x00}}, +{ 0x048E, {0x00,0x00,0xF0,0x88,0x88,0x88,0xA8,0xF0,0x88,0x80,0x80,0x00,0x00}}, +{ 0x048F, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0x88,0xA8,0xF0,0x88,0x80,0x80}}, +{ 0x0490, {0x00,0x08,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0491, {0x00,0x00,0x00,0x00,0x08,0xF8,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0492, {0x00,0x00,0x78,0x48,0x40,0x40,0xE0,0x40,0x40,0x40,0x40,0x00,0x00}}, +{ 0x0493, {0x00,0x00,0x00,0x00,0x00,0x78,0x48,0xE0,0x40,0x40,0x40,0x00,0x00}}, +{ 0x0494, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x10,0x00}}, +{ 0x0495, {0x00,0x00,0x00,0x00,0x00,0xF8,0x80,0xF0,0x88,0x88,0x88,0x10,0x00}}, +{ 0x0496, {0x00,0x00,0xA8,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0xAC,0x04,0x04}}, +{ 0x0497, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x70,0xA8,0xAC,0x04,0x04}}, +{ 0x0498, {0x00,0x00,0x70,0x88,0x08,0x08,0x30,0x08,0x08,0x88,0x70,0x20,0x40}}, +{ 0x0499, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x30,0x08,0x88,0x70,0x20,0x40}}, +{ 0x049A, {0x00,0x00,0x90,0x90,0xA0,0xA0,0xC0,0xA0,0x90,0x90,0x98,0x08,0x08}}, +{ 0x049B, {0x00,0x00,0x00,0x00,0x00,0x90,0xA0,0xC0,0xA0,0x90,0x98,0x08,0x08}}, +{ 0x049C, {0x00,0x00,0x88,0xA8,0xB0,0xA0,0xE0,0xA0,0xB0,0xA8,0x88,0x00,0x00}}, +{ 0x049D, {0x00,0x00,0x00,0x00,0x00,0xA8,0xB0,0xE0,0xB0,0xA8,0x88,0x00,0x00}}, +{ 0x049E, {0x00,0x00,0x48,0xE8,0x50,0x60,0x60,0x60,0x50,0x48,0x48,0x00,0x00}}, +{ 0x049F, {0x00,0x00,0x40,0x40,0xE0,0x48,0x50,0x60,0x50,0x48,0x48,0x00,0x00}}, +{ 0x04A0, {0x00,0x00,0xC8,0x48,0x50,0x60,0x60,0x60,0x50,0x48,0x48,0x00,0x00}}, +{ 0x04A1, {0x00,0x00,0x00,0x00,0x00,0xC8,0x50,0x60,0x50,0x48,0x48,0x00,0x00}}, +{ 0x04A2, {0x00,0x00,0x90,0x90,0x90,0x90,0xF0,0x90,0x90,0x90,0x98,0x08,0x08}}, +{ 0x04A3, {0x00,0x00,0x00,0x00,0x00,0x90,0x90,0xF0,0x90,0x90,0x98,0x08,0x08}}, +{ 0x04A4, {0x00,0x00,0xB8,0xA0,0xA0,0xA0,0xE0,0xA0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x04A5, {0x00,0x00,0x00,0x00,0x00,0xB8,0xA0,0xE0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x04A6, {0x00,0x00,0xE0,0xA0,0xA0,0xA0,0xB0,0xA8,0xA8,0xA8,0xA8,0x08,0x10}}, +{ 0x04A7, {0x00,0x00,0x00,0x00,0x00,0xE0,0xA0,0xB0,0xA8,0xA8,0xA8,0x08,0x10}}, +{ 0x04A8, {0x00,0x00,0x70,0x88,0x80,0x90,0xA8,0xA8,0xA8,0x70,0x20,0x18,0x00}}, +{ 0x04A9, {0x00,0x00,0x00,0x00,0x00,0x70,0x80,0x90,0xA8,0x70,0x20,0x18,0x00}}, +{ 0x04AA, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x20,0x10}}, +{ 0x04AB, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x20,0x10}}, +{ 0x04AC, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x10,0x10}}, +{ 0x04AD, {0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x30,0x10,0x10}}, +{ 0x04AE, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x04AF, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20}}, +{ 0x04B0, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0xF8,0x20,0x20,0x20,0x00,0x00}}, +{ 0x04B1, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0xF8,0x20,0x20}}, +{ 0x04B2, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x8C,0x04,0x04}}, +{ 0x04B3, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x8C,0x04,0x04}}, +{ 0x04B4, {0x00,0x00,0xE8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x08,0x08}}, +{ 0x04B5, {0x00,0x00,0x00,0x00,0x00,0xE8,0x48,0x48,0x48,0x48,0x78,0x08,0x08}}, +{ 0x04B6, {0x00,0x00,0x90,0x90,0x90,0x90,0x90,0x70,0x10,0x10,0x18,0x08,0x08}}, +{ 0x04B7, {0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x90,0x70,0x10,0x18,0x08,0x08}}, +{ 0x04B8, {0x00,0x00,0x88,0x88,0x88,0xA8,0xA8,0x78,0x28,0x28,0x08,0x00,0x00}}, +{ 0x04B9, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xA8,0x78,0x28,0x08,0x00,0x00}}, +{ 0x04BA, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x04BB, {0x00,0x00,0x80,0x80,0x80,0x80,0xE0,0x90,0x90,0x90,0x90,0x00,0x00}}, +{ 0x04BC, {0x00,0x00,0x30,0x48,0x48,0x48,0xF8,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x04BD, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0xF8,0x40,0x48,0x30,0x00,0x00}}, +{ 0x04BE, {0x00,0x00,0x30,0x48,0x48,0x48,0xF8,0x40,0x40,0x48,0x30,0x20,0x10}}, +{ 0x04BF, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0xF8,0x40,0x48,0x30,0x20,0x10}}, +{ 0x04C0, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x04C1, {0x88,0x70,0x00,0xA8,0xA8,0xA8,0x70,0x70,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x04C2, {0x00,0x00,0x88,0x70,0x00,0xA8,0xA8,0x70,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x04C3, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x08,0x30}}, +{ 0x04C4, {0x00,0x00,0x00,0x00,0x00,0x88,0x90,0xE0,0x90,0x88,0x88,0x08,0x30}}, +{ 0x04C5, {0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x88,0x10,0x10}}, +{ 0x04C6, {0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x48,0x88,0x10,0x10}}, +{ 0x04C7, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x08,0x30}}, +{ 0x04C8, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x88,0x08,0x30}}, +{ 0x04C9, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x10,0x10}}, +{ 0x04CA, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xF8,0x88,0x88,0x88,0x10,0x10}}, +{ 0x04CB, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x78,0x08,0x08,0x18,0x10,0x10}}, +{ 0x04CC, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x18,0x10,0x10}}, +{ 0x04CD, {0x00,0x00,0x88,0xD8,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x10,0x10}}, +{ 0x04CE, {0x00,0x00,0x00,0x00,0x00,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x10,0x10}}, +{ 0x04D0, {0x00,0x88,0x70,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x04D1, {0x00,0x00,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x04D2, {0x00,0x50,0x50,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x04D3, {0x00,0x00,0x50,0x50,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x04D4, {0x00,0x00,0x58,0xA0,0xA0,0xA0,0xB0,0xE0,0xA0,0xA0,0xB8,0x00,0x00}}, +{ 0x04D5, {0x00,0x00,0x00,0x00,0x00,0x70,0x28,0x70,0xA0,0xA8,0x50,0x00,0x00}}, +{ 0x04D6, {0x00,0x88,0x70,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x04D7, {0x00,0x00,0x88,0x70,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x04D8, {0x00,0x00,0x70,0x88,0x08,0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x04D9, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x04DA, {0x00,0x50,0x50,0x00,0x70,0x88,0x08,0xF8,0x88,0x88,0x70,0x00,0x00}}, +{ 0x04DB, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0x08,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x04DC, {0x00,0x50,0x50,0x00,0xA8,0xA8,0x70,0x20,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x04DD, {0x00,0x00,0x50,0x50,0x00,0xA8,0xA8,0x70,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x04DE, {0x00,0x50,0x50,0x00,0x70,0x88,0x08,0x30,0x08,0x88,0x70,0x00,0x00}}, +{ 0x04DF, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0x30,0x08,0x88,0x70,0x00,0x00}}, +{ 0x04E0, {0x00,0x00,0xF8,0x08,0x10,0x20,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x04E1, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x70,0x08,0x08,0x88,0x70}}, +{ 0x04E2, {0x00,0x00,0xF8,0x00,0x88,0x98,0x98,0xA8,0xC8,0xC8,0x88,0x00,0x00}}, +{ 0x04E3, {0x00,0x00,0x00,0xF8,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x00,0x00}}, +{ 0x04E4, {0x00,0x50,0x50,0x00,0x88,0x98,0x98,0xA8,0xC8,0xC8,0x88,0x00,0x00}}, +{ 0x04E5, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0x98,0xA8,0xC8,0x88,0x00,0x00}}, +{ 0x04E6, {0x00,0x50,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x04E7, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x04E8, {0x00,0x00,0x70,0x88,0x88,0xE8,0xB8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x04E9, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xE8,0xB8,0x88,0x70,0x00,0x00}}, +{ 0x04EA, {0x00,0x50,0x50,0x00,0x70,0x88,0xE8,0xB8,0x88,0x88,0x70,0x00,0x00}}, +{ 0x04EB, {0x00,0x00,0x50,0x50,0x00,0x70,0x88,0xE8,0xB8,0x88,0x70,0x00,0x00}}, +{ 0x04EC, {0x00,0x50,0x50,0x00,0xE0,0x10,0x08,0x78,0x08,0x10,0xE0,0x00,0x00}}, +{ 0x04ED, {0x00,0x00,0x50,0x50,0x00,0xF0,0x08,0x38,0x08,0x08,0xF0,0x00,0x00}}, +{ 0x04EE, {0x00,0x00,0xF8,0x00,0x88,0x88,0x98,0x68,0x08,0x88,0x70,0x00,0x00}}, +{ 0x04EF, {0x00,0x00,0x00,0xF8,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x04F0, {0x00,0x50,0x50,0x00,0x88,0x88,0x98,0x68,0x08,0x88,0x70,0x00,0x00}}, +{ 0x04F1, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x04F2, {0x00,0x48,0x90,0x00,0x88,0x88,0x98,0x68,0x08,0x88,0x70,0x00,0x00}}, +{ 0x04F3, {0x00,0x00,0x48,0x90,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x04F4, {0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x08,0x00,0x00}}, +{ 0x04F5, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0x88,0x78,0x08,0x08,0x00,0x00}}, +{ 0x04F8, {0x00,0x50,0x50,0x00,0x88,0x88,0xE8,0x98,0x98,0x98,0xE8,0x00,0x00}}, +{ 0x04F9, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0xE8,0x98,0x98,0xE8,0x00,0x00}}, +{ 0x0500, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x0501, {0x00,0x00,0x08,0x08,0x08,0x38,0x48,0x48,0x48,0x48,0x38,0x00,0x00}}, +{ 0x0502, {0x00,0x00,0x20,0x20,0x20,0x60,0xA0,0xA8,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x0503, {0x00,0x00,0x20,0x20,0x20,0x20,0x60,0xA0,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x0504, {0x00,0x00,0x40,0xA0,0x20,0x20,0x20,0x48,0x28,0x28,0x10,0x00,0x00}}, +{ 0x0505, {0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x20,0x48,0x28,0x10,0x00,0x00}}, +{ 0x0506, {0x00,0x00,0x60,0x90,0x10,0x10,0x10,0x60,0x10,0x10,0x10,0x08,0x08}}, +{ 0x0507, {0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x10,0x60,0x10,0x10,0x08,0x08}}, +{ 0x0508, {0x00,0x00,0x60,0xA0,0xA0,0xA0,0xA0,0xA8,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x0509, {0x00,0x00,0x00,0x00,0x00,0x60,0xA0,0xA0,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x050A, {0x00,0x00,0xA0,0xA0,0xA0,0xA0,0xE0,0xA8,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x050B, {0x00,0x00,0x00,0x00,0x00,0xA0,0xA0,0xE0,0xA8,0xA8,0x90,0x00,0x00}}, +{ 0x050C, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0x050D, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0x050E, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x050F, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x28,0x28,0x10,0x00,0x00}}, +{ 0x0531, {0x00,0x00,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xB0,0x48,0x00,0x00}}, +{ 0x0532, {0x00,0x00,0x70,0x88,0x88,0x80,0xF0,0x88,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0533, {0x00,0x00,0x40,0xA0,0xA0,0xA0,0x70,0x28,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0534, {0x00,0x00,0x40,0xA0,0xA0,0x20,0x30,0x28,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0535, {0x00,0x00,0x80,0x80,0xF0,0x88,0x80,0x80,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0536, {0x00,0x00,0x60,0x90,0x90,0x90,0x70,0x10,0xA0,0xF0,0x88,0x00,0x00}}, +{ 0x0537, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x80,0x80,0x80,0x70,0x08,0x10}}, +{ 0x0538, {0x00,0x00,0x60,0x90,0x90,0x80,0x80,0x80,0x80,0x80,0xF0,0x08,0x00}}, +{ 0x0539, {0x00,0x00,0x60,0x90,0x90,0xB8,0xD0,0xD0,0xA0,0x80,0x80,0x00,0x00}}, +{ 0x053A, {0x00,0x00,0x10,0x10,0x10,0x10,0x78,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x053B, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x88,0x80,0x80,0x80,0x00,0x00}}, +{ 0x053C, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x70,0x08,0x10}}, +{ 0x053D, {0x00,0x00,0x80,0x80,0xE8,0xA8,0xA8,0x90,0x80,0x80,0x80,0x00,0x00}}, +{ 0x053E, {0x00,0x00,0xF8,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x053F, {0x00,0x00,0x80,0x80,0x88,0x88,0x88,0x88,0x78,0x08,0x08,0x00,0x00}}, +{ 0x0540, {0x00,0x00,0x10,0x20,0x10,0x20,0x40,0x80,0xC0,0x30,0x08,0x00,0x00}}, +{ 0x0541, {0x00,0x00,0x30,0x48,0x48,0x48,0x38,0x08,0x70,0x90,0x68,0x00,0x00}}, +{ 0x0542, {0x00,0x00,0x40,0xA0,0xA0,0x20,0x20,0x20,0x20,0x20,0x30,0x08,0x00}}, +{ 0x0543, {0x00,0x00,0x20,0x10,0x10,0xE0,0x50,0x50,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x0544, {0x00,0x00,0xB8,0xA8,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0x40,0x00,0x00}}, +{ 0x0545, {0x00,0x00,0x70,0x88,0x88,0x28,0x30,0x28,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0546, {0x00,0x00,0x40,0x80,0xC0,0x40,0x40,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x0547, {0x00,0x00,0x08,0xF0,0x40,0x80,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0548, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0549, {0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x10,0x10,0x20,0xF8,0x00,0x00}}, +{ 0x054A, {0x00,0x00,0x70,0xA8,0xA8,0xA8,0x28,0x28,0x08,0x08,0x08,0x00,0x00}}, +{ 0x054B, {0x00,0x00,0x60,0x90,0x90,0x90,0x50,0x30,0xA0,0xF0,0x88,0x00,0x00}}, +{ 0x054C, {0x00,0x00,0x40,0xA0,0xA0,0xB0,0xA8,0xA8,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x054D, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x054E, {0x00,0x00,0x20,0x20,0xA0,0xA0,0xA0,0xA0,0x60,0x20,0x30,0x08,0x00}}, +{ 0x054F, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0550, {0x00,0x00,0x70,0x88,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x0551, {0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x0552, {0x00,0x00,0x80,0x80,0x80,0xE0,0x90,0x90,0x88,0x80,0x80,0x00,0x00}}, +{ 0x0553, {0x00,0x00,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x00,0x00,0x00}}, +{ 0x0554, {0x00,0x00,0x10,0x28,0x28,0x30,0xA0,0x70,0x28,0x20,0x20,0x00,0x00}}, +{ 0x0555, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0556, {0x00,0x00,0x40,0xA0,0xA0,0x70,0x28,0x28,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x0559, {0x00,0x20,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x055A, {0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x055B, {0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x055C, {0x00,0x08,0x70,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x055D, {0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x055E, {0x00,0x00,0x70,0x88,0xA8,0xA8,0x90,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x055F, {0x00,0x00,0xC0,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0561, {0x00,0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0x0562, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0x88,0x88,0x80,0xF8,0x80,0x80}}, +{ 0x0563, {0x00,0x00,0x00,0x00,0x00,0x70,0x90,0x90,0x90,0x90,0x78,0x10,0x10}}, +{ 0x0564, {0x00,0x00,0x00,0x00,0x00,0xA0,0xD0,0x90,0x90,0x90,0x98,0x10,0x10}}, +{ 0x0565, {0x00,0x00,0x80,0x80,0x80,0xF8,0x80,0x88,0x88,0xC8,0xB0,0x00,0x00}}, +{ 0x0566, {0x00,0x00,0x00,0x00,0x00,0x70,0x90,0x90,0x90,0x90,0x70,0x10,0x18}}, +{ 0x0567, {0x00,0x00,0x80,0x80,0xF8,0x80,0x80,0x80,0x80,0x80,0x70,0x08,0x00}}, +{ 0x0568, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x80,0xF8}}, +{ 0x0569, {0x00,0x00,0x00,0x00,0x00,0xA0,0xD0,0x90,0xB8,0xD0,0xA0,0x80,0x80}}, +{ 0x056A, {0x00,0x00,0x10,0x10,0x10,0x78,0x90,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x056B, {0x00,0x00,0x80,0x80,0x80,0xA0,0xD0,0x90,0x90,0x90,0x90,0x80,0x80}}, +{ 0x056C, {0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x30}}, +{ 0x056D, {0x00,0x00,0x80,0x80,0x80,0xE8,0xA8,0xA8,0xA8,0xA8,0x90,0x80,0x80}}, +{ 0x056E, {0x00,0x00,0x00,0x80,0x40,0x20,0x78,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x056F, {0x00,0x00,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x78,0x08,0x08}}, +{ 0x0570, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0571, {0x00,0x00,0x20,0x40,0x20,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x0572, {0x00,0x00,0x00,0x00,0x00,0xA0,0xD0,0x90,0x90,0x90,0x90,0x10,0x18}}, +{ 0x0573, {0x00,0x00,0x30,0x48,0x40,0xF8,0x48,0x48,0x48,0x58,0x28,0x00,0x00}}, +{ 0x0574, {0x00,0x00,0x08,0x10,0x10,0x90,0x90,0x90,0x90,0xB0,0x50,0x00,0x00}}, +{ 0x0575, {0x00,0x00,0x00,0x00,0x00,0x18,0x08,0x08,0x08,0x08,0x88,0x88,0x70}}, +{ 0x0576, {0x00,0x00,0x70,0x88,0x80,0x98,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x0577, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x08,0x10,0x20,0x40,0x38}}, +{ 0x0578, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x0579, {0x00,0x00,0x20,0x40,0x20,0x20,0x40,0x40,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x057A, {0x00,0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x58,0x08,0x08}}, +{ 0x057B, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x50,0x20,0x40,0x38}}, +{ 0x057C, {0x00,0x00,0x00,0x00,0x00,0xA0,0xD0,0x90,0x90,0x90,0x98,0x00,0x00}}, +{ 0x057D, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x057E, {0x00,0x00,0x10,0x10,0x10,0x90,0x90,0x90,0x90,0x90,0x70,0x10,0x18}}, +{ 0x057F, {0x00,0x00,0x00,0x00,0x00,0xB0,0xA8,0xA8,0xA8,0xA8,0x68,0x00,0x00}}, +{ 0x0580, {0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x88,0x80,0x80}}, +{ 0x0581, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x0582, {0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x18,0x00,0x00}}, +{ 0x0583, {0x00,0x00,0x20,0x20,0x20,0xB0,0xA8,0xA8,0xA8,0xA8,0x68,0x20,0x20}}, +{ 0x0584, {0x00,0x00,0x18,0x20,0x20,0xF8,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x0585, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0586, {0x00,0x00,0x60,0xA0,0xA0,0x70,0x28,0xA8,0xA8,0xA8,0x70,0x20,0x20}}, +{ 0x0587, {0x00,0x00,0x80,0x80,0x80,0x90,0x90,0x90,0x90,0x90,0x68,0x00,0x00}}, +{ 0x0589, {0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x00,0x00,0x00,0x00}}, +{ 0x058A, {0x00,0x00,0x00,0x00,0x00,0x40,0x38,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0591, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x50}}, +{ 0x0592, {0x00,0x00,0x20,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0593, {0x10,0x20,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0594, {0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0595, {0x00,0x50,0x40,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0596, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10}}, +{ 0x0597, {0x00,0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0598, {0x00,0x48,0xA8,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0599, {0x00,0x80,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x059A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08,0x04}}, +{ 0x059C, {0x00,0x18,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x059D, {0x00,0x04,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x059E, {0x10,0x24,0x28,0x28,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x059F, {0x00,0x50,0xA8,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05A0, {0x00,0x10,0x28,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05A1, {0x00,0x50,0xD0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05A3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x70}}, +{ 0x05A4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x20}}, +{ 0x05A5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20}}, +{ 0x05A6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x90}}, +{ 0x05A8, {0x00,0x40,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05A9, {0x00,0x40,0xA0,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05AA, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x20}}, +{ 0x05AB, {0x00,0x20,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05AC, {0x00,0x10,0x10,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05AD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04}}, +{ 0x05AF, {0x00,0x20,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05B0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20}}, +{ 0x05B1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x00,0x48}}, +{ 0x05B2, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xE0,0x08}}, +{ 0x05B3, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xE0,0x48}}, +{ 0x05B4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20}}, +{ 0x05B5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50}}, +{ 0x05B6, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x20}}, +{ 0x05B7, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70}}, +{ 0x05B8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x20}}, +{ 0x05B9, {0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05BB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x08}}, +{ 0x05BC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05BD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20}}, +{ 0x05BE, {0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05BF, {0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05C0, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x05C1, {0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05C2, {0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05C3, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x00,0x00,0x20,0x20,0x00,0x00}}, +{ 0x05C4, {0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05D0, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x00}}, +{ 0x05D1, {0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xF8,0x00,0x00}}, +{ 0x05D2, {0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x10,0x28,0x48,0x00,0x00}}, +{ 0x05D3, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x05D4, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x88,0x88,0x88,0x00,0x00}}, +{ 0x05D5, {0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x05D6, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x10,0x10,0x10,0x00,0x00}}, +{ 0x05D7, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0x05D8, {0x00,0x00,0x00,0x00,0x00,0x98,0xA8,0xA8,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x05D9, {0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05DA, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x08}}, +{ 0x05DB, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x00}}, +{ 0x05DC, {0x00,0x00,0x80,0x80,0x80,0xF8,0x08,0x08,0x08,0x10,0x60,0x00,0x00}}, +{ 0x05DD, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0x78,0x00,0x00}}, +{ 0x05DE, {0x00,0x00,0x00,0x00,0x00,0x90,0xA8,0x48,0x88,0x88,0xB8,0x00,0x00}}, +{ 0x05DF, {0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x05E0, {0x00,0x00,0x00,0x00,0x00,0x18,0x08,0x08,0x08,0x08,0x78,0x00,0x00}}, +{ 0x05E1, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x50,0x60,0x00,0x00}}, +{ 0x05E2, {0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x05E3, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x08,0x08,0x08,0x08}}, +{ 0x05E4, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x08,0x08,0xF0,0x00,0x00}}, +{ 0x05E5, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x48,0x50,0x60,0x40,0x40,0x40}}, +{ 0x05E6, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x28,0x10,0x08,0xF8,0x00,0x00}}, +{ 0x05E7, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x88,0x88,0x88,0xB0,0x80,0x80}}, +{ 0x05E8, {0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x05E9, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0x05EA, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xC8,0x00,0x00}}, +{ 0x05F0, {0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0x05F1, {0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x08,0x08,0x08,0x00,0x00}}, +{ 0x05F2, {0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05F3, {0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x05F4, {0x00,0x00,0x00,0x00,0x00,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E01, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xC8,0x48,0x48,0x48,0x00,0x00}}, +{ 0x0E02, {0x00,0x00,0x00,0x00,0x00,0x68,0x68,0x28,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0E03, {0x00,0x00,0x00,0x00,0x00,0xA8,0xE8,0x28,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0E04, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xE8,0xE8,0xC8,0x48,0x00,0x00}}, +{ 0x0E05, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xE8,0xE8,0xC8,0x48,0x00,0x00}}, +{ 0x0E06, {0x00,0x00,0x00,0x00,0x00,0xA8,0xE8,0x28,0x48,0xE8,0xD0,0x00,0x00}}, +{ 0x0E07, {0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x90,0x50,0x30,0x00,0x00}}, +{ 0x0E08, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x68,0x68,0x28,0x30,0x00,0x00}}, +{ 0x0E09, {0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0xD0,0xD0,0x78,0x58,0x00,0x00}}, +{ 0x0E0A, {0x00,0x00,0x00,0x00,0x10,0xD0,0xE0,0x50,0x90,0x90,0x60,0x00,0x00}}, +{ 0x0E0B, {0x00,0x00,0x00,0x00,0x08,0xA8,0xF0,0x28,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0E0C, {0x00,0x00,0x00,0x00,0x00,0x68,0xA8,0x68,0xA8,0xF8,0xE8,0x00,0x00}}, +{ 0x0E0D, {0x00,0x00,0x00,0x00,0x00,0x68,0xA8,0x68,0xB8,0xE0,0xF8,0x00,0x00}}, +{ 0x0E0E, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x48,0x48,0xC8,0xD8,0x38,0x48}}, +{ 0x0E0F, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x48,0x48,0xC8,0xD8,0xA8,0x50}}, +{ 0x0E10, {0x00,0x00,0x00,0x00,0x00,0x78,0x80,0x70,0x68,0x68,0x18,0xA8,0x58}}, +{ 0x0E11, {0x00,0x00,0x00,0x00,0x00,0xA8,0xF8,0x28,0x48,0x48,0x48,0x00,0x00}}, +{ 0x0E12, {0x00,0x00,0x00,0x00,0x00,0xA8,0xE8,0xA8,0xA8,0xF8,0xE8,0x00,0x00}}, +{ 0x0E13, {0x00,0x00,0x00,0x00,0x00,0x68,0xA8,0x68,0xB0,0xB8,0xF8,0x00,0x00}}, +{ 0x0E14, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xE8,0xE8,0xA8,0x48,0x00,0x00}}, +{ 0x0E15, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xE8,0xE8,0xA8,0x48,0x00,0x00}}, +{ 0x0E16, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xC8,0x48,0x68,0x68,0x00,0x00}}, +{ 0x0E17, {0x00,0x00,0x00,0x00,0x00,0xD0,0xE8,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0x0E18, {0x00,0x00,0x00,0x00,0x00,0x78,0x80,0xF0,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0E19, {0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x50,0x90,0xB8,0x58,0x00,0x00}}, +{ 0x0E1A, {0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x48,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0E1B, {0x00,0x00,0x00,0x08,0x08,0xC8,0xC8,0x48,0x48,0x48,0x30,0x00,0x00}}, +{ 0x0E1C, {0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x88,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0E1D, {0x00,0x00,0x00,0x08,0x08,0xC8,0xC8,0x88,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0E1E, {0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x48,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0E1F, {0x00,0x00,0x00,0x08,0x08,0xC8,0xC8,0x48,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0E20, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xC8,0x48,0xC8,0xC8,0x00,0x00}}, +{ 0x0E21, {0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x48,0x48,0xE8,0xD0,0x00,0x00}}, +{ 0x0E22, {0x00,0x00,0x00,0x00,0x00,0xC8,0xC8,0x88,0x68,0x88,0x70,0x00,0x00}}, +{ 0x0E23, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xE0,0x10,0x30,0x30,0x00,0x00}}, +{ 0x0E24, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xC8,0x48,0x68,0x68,0x08,0x08}}, +{ 0x0E25, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x68,0x98,0xC8,0xC8,0x00,0x00}}, +{ 0x0E26, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xC8,0x48,0xC8,0xC8,0x08,0x08}}, +{ 0x0E27, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0x08,0x18,0x18,0x00,0x00}}, +{ 0x0E28, {0x00,0x00,0x00,0x08,0x08,0x70,0x88,0xE8,0xE8,0xC8,0x48,0x00,0x00}}, +{ 0x0E29, {0x00,0x00,0x00,0x00,0x00,0xD0,0xD0,0x70,0xB8,0x90,0x70,0x00,0x00}}, +{ 0x0E2A, {0x00,0x00,0x00,0x08,0x08,0x70,0x88,0x68,0x98,0xC8,0xC8,0x00,0x00}}, +{ 0x0E2B, {0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x50,0x68,0x48,0x48,0x00,0x00}}, +{ 0x0E2C, {0x00,0x00,0x00,0x08,0x08,0xD0,0xC8,0x48,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x0E2D, {0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0xC8,0xC8,0x88,0x70,0x00,0x00}}, +{ 0x0E2E, {0x00,0x00,0x00,0x08,0x08,0xF0,0x08,0xC8,0xC8,0x88,0x70,0x00,0x00}}, +{ 0x0E2F, {0x00,0x00,0x00,0x00,0x00,0xD8,0xE8,0x08,0x08,0x08,0x10,0x00,0x00}}, +{ 0x0E30, {0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x70,0x00,0x68,0x70,0x00,0x00}}, +{ 0x0E31, {0x00,0x00,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E32, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x0E33, {0x00,0x00,0x00,0xC0,0xC0,0x30,0x48,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x0E34, {0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E35, {0x00,0x00,0x08,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E36, {0x00,0x00,0x18,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E37, {0x00,0x00,0x28,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E38, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x08}}, +{ 0x0E39, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x18}}, +{ 0x0E3A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18}}, +{ 0x0E3F, {0x00,0x00,0x00,0x20,0xF0,0xA8,0xA8,0xF0,0xA8,0xA8,0xF0,0x20,0x00}}, +{ 0x0E40, {0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x60,0x60,0x00,0x00}}, +{ 0x0E41, {0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0xD8,0xD8,0x00,0x00}}, +{ 0x0E42, {0x00,0x00,0x00,0x78,0x80,0xF0,0x10,0x10,0x10,0x18,0x18,0x00,0x00}}, +{ 0x0E43, {0x00,0x00,0x00,0x70,0x90,0xB0,0x70,0x10,0x10,0x18,0x18,0x00,0x00}}, +{ 0x0E44, {0x00,0x00,0x00,0xB0,0x50,0x10,0x10,0x10,0x10,0x18,0x18,0x00,0x00}}, +{ 0x0E45, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x08,0x08,0x08,0x08,0x08,0x08}}, +{ 0x0E46, {0x00,0x00,0x00,0x00,0x00,0xE8,0xD8,0x08,0x08,0x08,0x08,0x10,0x20}}, +{ 0x0E47, {0x00,0x78,0x60,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E48, {0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E49, {0x68,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E4A, {0x54,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E4B, {0x10,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E4C, {0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E4D, {0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E4E, {0x00,0x18,0x38,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x0E4F, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x0E50, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x0E51, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xA8,0xE8,0x08,0x70,0x00,0x00}}, +{ 0x0E52, {0x00,0x00,0x00,0x00,0x80,0x80,0xA8,0xB8,0xB8,0x88,0x70,0x00,0x00}}, +{ 0x0E53, {0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0x88,0xC8,0xC8,0x00,0x00}}, +{ 0x0E54, {0x00,0x00,0x00,0x00,0x08,0x08,0x70,0x80,0xB0,0xB0,0x78,0x00,0x00}}, +{ 0x0E55, {0x00,0x00,0x00,0x00,0x08,0x68,0x70,0x80,0xB0,0xB0,0x78,0x00,0x00}}, +{ 0x0E56, {0x00,0x00,0x00,0x00,0x00,0x80,0x50,0x28,0x08,0x68,0x70,0x00,0x00}}, +{ 0x0E57, {0x00,0x00,0x00,0x00,0x08,0x08,0xA8,0xE8,0xA8,0xA8,0xD0,0x00,0x00}}, +{ 0x0E58, {0x00,0x00,0x00,0x00,0x00,0x08,0x70,0x80,0x98,0xA8,0xD8,0x00,0x00}}, +{ 0x0E59, {0x00,0x00,0x00,0x00,0x08,0x08,0x30,0x60,0xA0,0xD0,0xC8,0x00,0x00}}, +{ 0x0E5A, {0x00,0x00,0x00,0x00,0x00,0x54,0x74,0x14,0x14,0x14,0x28,0x00,0x00}}, +{ 0x0E5B, {0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xA8,0xB0,0xA0,0x40,0x00,0x00}}, +{ 0x10D0, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x08,0x88,0x70,0x00,0x00}}, +{ 0x10D1, {0x00,0x00,0x40,0x60,0x20,0x20,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10D2, {0x00,0x00,0x00,0x00,0x40,0xA0,0xA0,0x20,0x70,0x88,0x88,0x88,0x70}}, +{ 0x10D3, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xA8,0xA8,0x90,0x80,0x60,0x10}}, +{ 0x10D4, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x08,0x08,0x08,0x88,0x88,0x70}}, +{ 0x10D5, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x30,0x08,0x08,0x88,0x88,0x70}}, +{ 0x10D6, {0x00,0x00,0x40,0xA0,0xA8,0x70,0x30,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x10D7, {0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0xA8,0x48,0x00,0x00}}, +{ 0x10D8, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x50,0x00,0x00}}, +{ 0x10D9, {0x00,0x00,0x00,0x00,0x10,0x08,0x08,0x30,0x08,0x08,0x88,0x88,0x70}}, +{ 0x10DA, {0x00,0x00,0x00,0x00,0x00,0x00,0x58,0xB8,0xB8,0xA8,0x80,0x70,0x08}}, +{ 0x10DB, {0x00,0x00,0x70,0x88,0x88,0x08,0x78,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10DC, {0x00,0x00,0x78,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10DD, {0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0x10DE, {0x00,0x00,0x20,0x10,0x08,0x08,0x30,0x08,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10DF, {0x00,0x00,0x00,0x00,0x00,0x08,0x18,0xA8,0xA8,0x48,0x08,0x48,0x30}}, +{ 0x10E0, {0x00,0x00,0x00,0x08,0x70,0x80,0xD0,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0x10E1, {0x00,0x00,0x80,0x80,0x80,0x90,0xA0,0x90,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10E2, {0x00,0x00,0x20,0x50,0x50,0x70,0xD8,0xD8,0xA8,0x88,0x88,0x88,0x70}}, +{ 0x10E3, {0x00,0x00,0x00,0x00,0xB0,0x48,0x48,0x08,0x08,0x08,0x48,0x48,0x30}}, +{ 0x10E4, {0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0x50,0x08,0x48,0x30}}, +{ 0x10E5, {0x00,0x00,0x08,0x18,0x08,0x08,0x38,0x48,0x08,0x08,0x08,0x88,0x70}}, +{ 0x10E6, {0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0x88,0x80,0x70,0x08}}, +{ 0x10E7, {0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x10E8, {0x00,0x00,0x50,0xA8,0xA8,0xA8,0x88,0x38,0x48,0x48,0x30,0x00,0x00}}, +{ 0x10E9, {0x00,0x00,0x60,0x90,0x90,0xE0,0x80,0xF0,0x88,0x88,0x88,0x00,0x00}}, +{ 0x10EA, {0x00,0x00,0x00,0x00,0x90,0x88,0x88,0xB0,0x88,0x88,0x88,0x88,0x70}}, +{ 0x10EB, {0x00,0x00,0x10,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10EC, {0x00,0x00,0x50,0xA8,0xA8,0x80,0x80,0xF8,0x88,0x50,0x50,0x20,0x20}}, +{ 0x10ED, {0x00,0x00,0x20,0x60,0xA0,0x20,0x68,0xB0,0x68,0x20,0x20,0xA0,0xC0}}, +{ 0x10EE, {0x00,0x00,0x80,0x80,0x90,0xA0,0xF0,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10EF, {0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x40,0x80}}, +{ 0x10F0, {0x00,0x40,0x30,0x08,0x30,0x08,0x08,0x30,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10F1, {0x00,0xA0,0x90,0x88,0xB0,0x88,0x88,0xB0,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10F2, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x50,0xF8,0x00,0x00}}, +{ 0x10F3, {0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x30,0x08,0x08,0x88,0x70}}, +{ 0x10F4, {0x00,0x00,0x20,0x40,0x30,0x08,0x08,0x30,0x08,0x08,0x88,0x88,0x70}}, +{ 0x10F5, {0x00,0x00,0x60,0x90,0x90,0x78,0x10,0x78,0x90,0x90,0x60,0x00,0x00}}, +{ 0x10F6, {0x00,0x00,0x00,0x40,0x20,0x20,0x70,0xA8,0xA8,0x70,0x20,0x20,0x10}}, +{ 0x10F7, {0x00,0x00,0x30,0x48,0x08,0x10,0x20,0x40,0x48,0x48,0x30,0x00,0x00}}, +{ 0x10F8, {0x00,0x00,0x88,0x88,0x88,0xF0,0x80,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x10FB, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x18,0x18,0xC0,0xC0,0x00,0x00,0x00}}, +{ 0x11A8, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x10,0x00,0x00,0x00}}, +{ 0x11A9, {0x00,0x00,0x00,0xF8,0x28,0x28,0x28,0x28,0x28,0x50,0x00,0x00,0x00}}, +{ 0x11AA, {0x00,0x00,0x00,0xC8,0x48,0x50,0x50,0x58,0x68,0xA8,0x00,0x00,0x00}}, +{ 0x11AB, {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x11AC, {0x00,0x00,0x00,0xB8,0x90,0x90,0x90,0xA8,0xA8,0xE8,0x00,0x00,0x00}}, +{ 0x11AD, {0x00,0x00,0x00,0xB8,0x80,0xB8,0x80,0xB8,0xA8,0xD8,0x00,0x00,0x00}}, +{ 0x11AE, {0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x11AF, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x11B0, {0x00,0x00,0x00,0xF8,0x28,0x28,0xE8,0x88,0xA8,0xC8,0x00,0x00,0x00}}, +{ 0x11B1, {0x00,0x00,0x00,0xDC,0x54,0x54,0xD4,0x94,0xB4,0xDC,0x00,0x00,0x00}}, +{ 0x11B2, {0x00,0x00,0x00,0xD4,0x54,0x54,0xDC,0x94,0xB4,0xDC,0x00,0x00,0x00}}, +{ 0x11B3, {0x00,0x00,0x00,0xE4,0x24,0x28,0xE8,0x94,0xB4,0xD4,0x00,0x00,0x00}}, +{ 0x11B4, {0x00,0x00,0x00,0xD8,0x50,0x50,0xD8,0x90,0xB0,0xD8,0x00,0x00,0x00}}, +{ 0x11B5, {0x00,0x00,0x00,0xDC,0x40,0x54,0xD4,0x94,0xA8,0xDC,0x00,0x00,0x00}}, +{ 0x11B6, {0x00,0x00,0x00,0xEC,0x20,0x3C,0xE8,0x9C,0xB4,0xD8,0x00,0x00,0x00}}, +{ 0x11B7, {0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x11B8, {0x00,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x11B9, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0xE8,0xB4,0xB4,0xD4,0x00,0x00,0x00}}, +{ 0x11BA, {0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x00,0x00,0x00}}, +{ 0x11BB, {0x00,0x00,0x00,0x28,0x28,0x50,0x50,0x58,0xA8,0xA4,0x00,0x00,0x00}}, +{ 0x11BC, {0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x11BD, {0x00,0x00,0x00,0xF8,0x08,0x10,0x30,0x48,0x48,0x84,0x00,0x00,0x00}}, +{ 0x11BE, {0x00,0x00,0x00,0x70,0x00,0xF8,0x20,0x20,0x50,0x88,0x00,0x00,0x00}}, +{ 0x11BF, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0x10,0x00,0x00,0x00}}, +{ 0x11C0, {0x00,0x00,0x00,0xF8,0x80,0x80,0xF8,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x11C1, {0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x50,0x50,0xF8,0x00,0x00,0x00}}, +{ 0x11C2, {0x00,0x00,0x70,0x00,0xF8,0x00,0x70,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x11EB, {0x00,0x00,0x00,0x20,0x20,0x50,0x50,0x50,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x11F9, {0x00,0x00,0x00,0x00,0xF8,0x00,0x70,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x1680, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1681, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x1682, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1683, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x38,0x38,0x38,0x38,0x00,0x00}}, +{ 0x1684, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x78,0x78,0x78,0x78,0x00,0x00}}, +{ 0x1685, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xF8,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x1686, {0x00,0x00,0x08,0x08,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1687, {0x00,0x00,0x28,0x28,0x28,0x28,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1688, {0x00,0x00,0x38,0x38,0x38,0x38,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1689, {0x00,0x00,0x78,0x78,0x78,0x78,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x168A, {0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x168B, {0x00,0x00,0x10,0x10,0x10,0x10,0xFC,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x168C, {0x00,0x00,0x28,0x28,0x28,0x28,0xFC,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x168D, {0x00,0x00,0x38,0x38,0x38,0x38,0xFC,0x70,0x70,0x70,0x70,0x00,0x00}}, +{ 0x168E, {0x00,0x00,0x3C,0x3C,0x3C,0x3C,0xFC,0x78,0x78,0x78,0x78,0x00,0x00}}, +{ 0x168F, {0x00,0x00,0x7C,0x7C,0x7C,0x7C,0xFC,0xF8,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x1690, {0x00,0x00,0x00,0x00,0x00,0x10,0xFC,0x10,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1691, {0x00,0x00,0x00,0x00,0x00,0x28,0xFC,0x28,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1692, {0x00,0x00,0x00,0x00,0x00,0x38,0xFC,0x38,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1693, {0x00,0x00,0x00,0x00,0x00,0x78,0xFC,0x78,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1694, {0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xF8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1695, {0x00,0x00,0x28,0x28,0x10,0x10,0xFC,0x10,0x10,0x28,0x28,0x00,0x00}}, +{ 0x1696, {0x00,0x00,0x30,0x48,0x48,0x84,0xFC,0x84,0x48,0x48,0x30,0x00,0x00}}, +{ 0x1697, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x40,0x58,0x48,0x78,0x00,0x00}}, +{ 0x1698, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xD8,0x70,0x70,0xD8,0x00,0x00}}, +{ 0x1699, {0x00,0x50,0xF8,0x50,0xF8,0x50,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x169A, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x78,0x00,0x00,0x00,0x00}}, +{ 0x169B, {0x00,0x00,0x00,0x80,0x40,0x20,0x1C,0x20,0x40,0x80,0x00,0x00,0x00}}, +{ 0x169C, {0x00,0x00,0x00,0x04,0x08,0x10,0xE0,0x10,0x08,0x04,0x00,0x00,0x00}}, +{ 0x16A0, {0x00,0x00,0x48,0x50,0x60,0x48,0x50,0x60,0x40,0x40,0x40,0x00,0x00}}, +{ 0x16A1, {0x10,0x00,0x48,0x50,0x60,0x48,0x50,0x60,0x40,0x40,0x40,0x00,0x00}}, +{ 0x16A2, {0x00,0x00,0x80,0xC0,0xA0,0x90,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x16A3, {0x00,0x00,0x80,0xC0,0xA0,0x90,0xA8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x16A4, {0x00,0x00,0x80,0xC0,0xA0,0x90,0x88,0xA8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x16A5, {0x00,0x00,0x80,0xC0,0xA0,0x90,0xC8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x16A6, {0x00,0x00,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x40,0x40,0x00,0x00}}, +{ 0x16A7, {0x00,0x00,0x80,0x80,0xF0,0x88,0xA8,0x88,0xF0,0x80,0x80,0x00,0x00}}, +{ 0x16A8, {0x00,0x00,0xC0,0xA0,0x90,0xC0,0xA0,0x90,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16A9, {0x00,0x00,0xC8,0xB0,0x80,0xC8,0xB0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16AA, {0x00,0x00,0x88,0xD0,0xA0,0x80,0xC0,0xB0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16AB, {0x00,0x00,0x60,0x50,0x48,0x60,0x50,0x48,0x40,0x40,0x40,0x00,0x00}}, +{ 0x16AC, {0x00,0x00,0x20,0xA0,0x60,0x30,0xA8,0x60,0x30,0x28,0x20,0x00,0x00}}, +{ 0x16AD, {0x00,0x00,0x20,0x20,0x20,0x30,0x28,0x20,0x30,0x28,0x20,0x00,0x00}}, +{ 0x16AE, {0x00,0x00,0x20,0x20,0x20,0x60,0xA0,0x20,0x60,0xA0,0x20,0x00,0x00}}, +{ 0x16AF, {0x00,0x00,0x20,0x28,0x30,0x60,0xA8,0x30,0x60,0xA0,0x20,0x00,0x00}}, +{ 0x16B0, {0x00,0x00,0x20,0x28,0x30,0x60,0xA0,0x20,0x60,0xA0,0x20,0x00,0x00}}, +{ 0x16B1, {0x00,0x00,0xC0,0xB0,0x88,0xB0,0xC0,0xA0,0x90,0x88,0x80,0x00,0x00}}, +{ 0x16B2, {0x00,0x00,0x00,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00,0x00,0x00}}, +{ 0x16B3, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x16B4, {0x00,0x00,0x88,0x90,0xA0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16B5, {0x00,0x20,0x88,0x90,0xA0,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16B6, {0x00,0x00,0x88,0x90,0xE0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16B7, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x16B8, {0x00,0x00,0x88,0x88,0x50,0x50,0xA8,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x16B9, {0x00,0x00,0xC0,0xB0,0x88,0xB0,0xC0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x16BA, {0x00,0x00,0x88,0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x88,0x00,0x00}}, +{ 0x16BB, {0x00,0x00,0x88,0x88,0xC8,0xA8,0xD8,0xA8,0x98,0x88,0x88,0x00,0x00}}, +{ 0x16BC, {0x00,0x00,0x20,0x20,0xA8,0x70,0x20,0x70,0xA8,0x20,0x20,0x00,0x00}}, +{ 0x16BD, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16BE, {0x00,0x00,0x20,0x20,0xA0,0x60,0x20,0x30,0x28,0x20,0x20,0x00,0x00}}, +{ 0x16BF, {0x00,0x00,0x20,0x20,0x20,0x20,0x30,0x28,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16C0, {0x00,0x00,0x20,0x20,0xA0,0x70,0x70,0x70,0x28,0x20,0x20,0x00,0x00}}, +{ 0x16C1, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16C2, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16C3, {0x00,0x00,0x00,0x00,0x20,0x40,0x90,0x48,0x10,0x20,0x00,0x00,0x00}}, +{ 0x16C4, {0x00,0x00,0x20,0x20,0x20,0x70,0xA8,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16C5, {0x00,0x00,0x20,0x20,0x28,0x30,0x20,0x60,0xA0,0x20,0x20,0x00,0x00}}, +{ 0x16C6, {0x00,0x00,0x20,0x20,0x20,0x20,0x60,0xA0,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16C7, {0x00,0x00,0x20,0x30,0x28,0x20,0x20,0x20,0xA0,0x60,0x20,0x00,0x00}}, +{ 0x16C8, {0x00,0x00,0xC8,0xB0,0x80,0x80,0x80,0x80,0x80,0xB0,0xC8,0x00,0x00}}, +{ 0x16C9, {0x00,0x00,0xA8,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16CA, {0x00,0x00,0x10,0x20,0x40,0x20,0x10,0x20,0x40,0x20,0x10,0x00,0x00}}, +{ 0x16CB, {0x00,0x00,0x80,0x80,0x88,0x98,0xA8,0xC8,0x88,0x08,0x08,0x00,0x00}}, +{ 0x16CC, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x16CD, {0x00,0x00,0x20,0x20,0x20,0x20,0x70,0x70,0x00,0x00,0x00,0x00,0x00}}, +{ 0x16CE, {0x00,0x00,0x20,0x20,0x20,0xA8,0x70,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x16CF, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16D0, {0x00,0x00,0x20,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16D1, {0x00,0x00,0x20,0x60,0xA0,0x20,0x70,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16D2, {0x00,0x00,0xC0,0xB0,0x88,0xB0,0xC0,0xB0,0x88,0xB0,0xC0,0x00,0x00}}, +{ 0x16D3, {0x00,0x00,0x20,0x20,0x28,0x30,0x20,0x28,0x30,0x20,0x20,0x00,0x00}}, +{ 0x16D4, {0x00,0x00,0xF0,0x88,0xA8,0x88,0xF0,0x88,0xA8,0x88,0xF0,0x00,0x00}}, +{ 0x16D5, {0x00,0x00,0x88,0x90,0xA0,0xC0,0x80,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x16D6, {0x00,0x00,0x88,0xD8,0xA8,0x88,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x16D7, {0x00,0x00,0x88,0xD8,0xA8,0xD8,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x16D8, {0x00,0x00,0xA8,0xA8,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16D9, {0x00,0x00,0x70,0x70,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16DA, {0x00,0x00,0x20,0x30,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16DB, {0x00,0x00,0x20,0x30,0x28,0x20,0x70,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16DC, {0x00,0x00,0x00,0x00,0x20,0x50,0x88,0x50,0x20,0x00,0x00,0x00,0x00}}, +{ 0x16DD, {0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x50,0x20,0x50,0x88,0x00,0x00}}, +{ 0x16DE, {0x00,0x00,0x88,0xD8,0xD8,0xA8,0xA8,0xA8,0xD8,0xD8,0x88,0x00,0x00}}, +{ 0x16DF, {0x00,0x00,0x20,0x50,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00,0x00}}, +{ 0x16E0, {0x00,0x00,0xF8,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16E1, {0x00,0x00,0x20,0x20,0xA8,0x70,0x20,0x70,0xA8,0x20,0x20,0x00,0x00}}, +{ 0x16E2, {0x00,0x00,0x28,0x30,0x20,0x20,0x20,0x20,0x20,0x60,0xA0,0x00,0x00}}, +{ 0x16E3, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0xA8,0x00,0x00}}, +{ 0x16E4, {0x00,0x00,0xA8,0xA8,0x70,0xA8,0xA8,0xA8,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x16E5, {0x00,0x00,0x88,0xD8,0xA8,0xD8,0x88,0xD8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x16E6, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x16E7, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16E8, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x16E9, {0x00,0x00,0x18,0x68,0x88,0x68,0x18,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x16EA, {0x00,0x00,0x40,0xE0,0x40,0x50,0x70,0x50,0x10,0x38,0x10,0x00,0x00}}, +{ 0x16EB, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x16EC, {0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00}}, +{ 0x16ED, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x16EE, {0x00,0x00,0x20,0x30,0x28,0x20,0x60,0xA0,0x20,0x20,0x20,0x00,0x00}}, +{ 0x16EF, {0x00,0x00,0xA8,0xA8,0x70,0x20,0x20,0x20,0x70,0xA8,0xA8,0x00,0x00}}, +{ 0x16F0, {0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x1E00, {0x00,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x88,0x20,0x50,0x20}}, +{ 0x1E01, {0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x20,0x50,0x20}}, +{ 0x1E02, {0x00,0x20,0x20,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x1E03, {0x00,0x20,0xA0,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0x1E04, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x20}}, +{ 0x1E05, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0xF0,0x00,0x20}}, +{ 0x1E06, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0xF8}}, +{ 0x1E07, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0xF0,0x00,0xF8}}, +{ 0x1E08, {0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x20,0x40}}, +{ 0x1E09, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x20,0x40}}, +{ 0x1E0A, {0x00,0x20,0x20,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x1E0B, {0x00,0x20,0x28,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x1E0C, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x20}}, +{ 0x1E0D, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x20}}, +{ 0x1E0E, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0xF8}}, +{ 0x1E0F, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0xF8}}, +{ 0x1E10, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x20,0x40}}, +{ 0x1E11, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x20,0x40}}, +{ 0x1E12, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x20,0x50}}, +{ 0x1E13, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x00,0x20,0x50}}, +{ 0x1E14, {0x40,0x20,0xF8,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1E15, {0x00,0x40,0x20,0xF8,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1E16, {0x10,0x20,0xF8,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1E17, {0x00,0x10,0x20,0xF8,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1E18, {0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x20,0x50}}, +{ 0x1E19, {0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x20,0x50}}, +{ 0x1E1A, {0x00,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x28,0x50}}, +{ 0x1E1B, {0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x28,0x50}}, +{ 0x1E1C, {0x00,0x88,0x70,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x20,0x40}}, +{ 0x1E1D, {0x00,0x00,0x88,0x70,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x20,0x40}}, +{ 0x1E1E, {0x00,0x20,0x20,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x1E1F, {0x00,0x20,0x20,0x00,0x30,0x48,0x40,0xF0,0x40,0x40,0x40,0x00,0x00}}, +{ 0x1E20, {0x00,0xF8,0x00,0x70,0x88,0x80,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E21, {0x00,0x00,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0x1E22, {0x00,0x20,0x20,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E23, {0x00,0x20,0xA0,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E24, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1E25, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1E26, {0x00,0x50,0x50,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E27, {0x00,0x50,0x50,0x00,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E28, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x10,0x20}}, +{ 0x1E29, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x10,0x20}}, +{ 0x1E2A, {0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x88,0x70}}, +{ 0x1E2B, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00,0x88,0x70}}, +{ 0x1E2C, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x28,0x50}}, +{ 0x1E2D, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x28,0x50}}, +{ 0x1E2E, {0x10,0x20,0x00,0x50,0x00,0x70,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x1E2F, {0x10,0x20,0x00,0x50,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x1E30, {0x00,0x10,0x20,0x00,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x1E31, {0x00,0x10,0xA0,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x1E32, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x20}}, +{ 0x1E33, {0x00,0x00,0x80,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x20}}, +{ 0x1E34, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0xF8}}, +{ 0x1E35, {0x00,0x00,0x80,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0xF8}}, +{ 0x1E36, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x20}}, +{ 0x1E37, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x20}}, +{ 0x1E38, {0x00,0xF8,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x20}}, +{ 0x1E39, {0x00,0xF8,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x20}}, +{ 0x1E3A, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0xF8}}, +{ 0x1E3B, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x70}}, +{ 0x1E3C, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x20,0x50}}, +{ 0x1E3D, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x20,0x50}}, +{ 0x1E3E, {0x00,0x10,0x20,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E3F, {0x00,0x00,0x10,0x20,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0x1E40, {0x00,0x20,0x20,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E41, {0x00,0x00,0x20,0x20,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0x1E42, {0x00,0x00,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1E43, {0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x00,0x20}}, +{ 0x1E44, {0x00,0x20,0x20,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x00,0x00}}, +{ 0x1E45, {0x00,0x00,0x20,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1E46, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x00,0x20}}, +{ 0x1E47, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1E48, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x00,0xF8}}, +{ 0x1E49, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0xF8}}, +{ 0x1E4A, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x20,0x50}}, +{ 0x1E4B, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x20,0x50}}, +{ 0x1E4C, {0x10,0x20,0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E4D, {0x00,0x10,0x20,0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E4E, {0x50,0x50,0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E4F, {0x00,0x50,0x50,0x00,0x28,0x50,0x00,0x70,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E50, {0x40,0x20,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E51, {0x00,0x40,0x20,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E52, {0x10,0x20,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E53, {0x00,0x10,0x20,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E54, {0x00,0x10,0x20,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x1E55, {0x00,0x00,0x10,0x20,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80}}, +{ 0x1E56, {0x00,0x20,0x20,0x00,0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x1E57, {0x00,0x00,0x20,0x20,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80}}, +{ 0x1E58, {0x00,0x20,0x20,0x00,0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0x1E59, {0x00,0x00,0x20,0x20,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x1E5A, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x88,0x88,0x00,0x20}}, +{ 0x1E5B, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x20}}, +{ 0x1E5C, {0x00,0xF8,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x88,0x00,0x20}}, +{ 0x1E5D, {0x00,0x00,0x00,0xF8,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x20}}, +{ 0x1E5E, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x88,0x88,0x00,0xF8}}, +{ 0x1E5F, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0xF8}}, +{ 0x1E60, {0x00,0x20,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x1E61, {0x00,0x00,0x20,0x20,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x1E62, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x00,0x20}}, +{ 0x1E63, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x20}}, +{ 0x1E64, {0x40,0x10,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x1E65, {0x40,0x10,0x20,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x1E66, {0x20,0x00,0x50,0x20,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x00}}, +{ 0x1E67, {0x20,0x00,0x50,0x20,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0x1E68, {0x00,0x20,0x20,0x00,0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00,0x20}}, +{ 0x1E69, {0x00,0x00,0x20,0x20,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x20}}, +{ 0x1E6A, {0x00,0x20,0x20,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1E6B, {0x00,0x20,0x20,0x00,0x40,0x40,0xF0,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x1E6C, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20}}, +{ 0x1E6D, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x00,0x20}}, +{ 0x1E6E, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0xF8}}, +{ 0x1E6F, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x00,0xF8}}, +{ 0x1E70, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x50}}, +{ 0x1E71, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x48,0x30,0x00,0x20,0x50}}, +{ 0x1E72, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x50}}, +{ 0x1E73, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x50}}, +{ 0x1E74, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x28,0x50}}, +{ 0x1E75, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x28,0x50}}, +{ 0x1E76, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x50}}, +{ 0x1E77, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x20,0x50}}, +{ 0x1E78, {0x10,0x20,0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E79, {0x10,0x20,0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1E7A, {0x50,0x50,0x00,0xF8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1E7B, {0x50,0x50,0x00,0xF8,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1E7C, {0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x1E7D, {0x00,0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x1E7E, {0x00,0x00,0x88,0x88,0x88,0x88,0x50,0x50,0x50,0x20,0x20,0x00,0x20}}, +{ 0x1E7F, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x00,0x20}}, +{ 0x1E80, {0x00,0x40,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x1E81, {0x00,0x00,0x40,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1E82, {0x00,0x10,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x1E83, {0x00,0x00,0x10,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1E84, {0x00,0x50,0x50,0x00,0x88,0x88,0xA8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x1E85, {0x00,0x00,0x50,0x50,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1E86, {0x00,0x20,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x1E87, {0x00,0x00,0x20,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1E88, {0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0xA8,0xD8,0x88,0x00,0x20}}, +{ 0x1E89, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1E8A, {0x00,0x20,0x20,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00,0x00}}, +{ 0x1E8B, {0x00,0x00,0x20,0x20,0x00,0x88,0x50,0x20,0x20,0x50,0x88,0x00,0x00}}, +{ 0x1E8C, {0x00,0x50,0x50,0x00,0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00,0x00}}, +{ 0x1E8D, {0x00,0x00,0x50,0x50,0x00,0x88,0x50,0x20,0x20,0x50,0x88,0x00,0x00}}, +{ 0x1E8E, {0x00,0x20,0x20,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1E8F, {0x00,0x00,0x20,0x20,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x1E90, {0x00,0x30,0x48,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x1E91, {0x00,0x00,0x30,0x48,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0x1E92, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0xF8,0x00,0x20}}, +{ 0x1E93, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x20}}, +{ 0x1E94, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0xF8,0x00,0xF8}}, +{ 0x1E95, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0xF8}}, +{ 0x1E96, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0xF8}}, +{ 0x1E97, {0x00,0x50,0x50,0x00,0x40,0x40,0xF0,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0x1E98, {0x00,0x20,0x50,0x20,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1E99, {0x00,0x20,0x50,0x20,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x1E9A, {0x08,0x04,0x04,0x08,0x00,0x70,0x08,0x78,0x88,0x88,0x78,0x00,0x00}}, +{ 0x1E9B, {0x00,0x20,0x20,0x00,0x30,0x48,0x40,0xC0,0x40,0x40,0x40,0x00,0x00}}, +{ 0x1EA0, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1EA1, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1EA2, {0x20,0x50,0x10,0x20,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EA3, {0x20,0x50,0x10,0x20,0x20,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EA4, {0x00,0x44,0xA8,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EA5, {0x00,0x00,0x44,0xA8,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EA6, {0x00,0x88,0x54,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EA7, {0x00,0x00,0x88,0x54,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EA8, {0x08,0x54,0xA4,0x08,0x28,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EA9, {0x00,0x08,0x54,0xA4,0x08,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EAA, {0x28,0x50,0x00,0x30,0x48,0x20,0x50,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EAB, {0x28,0x50,0x30,0x48,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EAC, {0x00,0x30,0x48,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x20}}, +{ 0x1EAD, {0x00,0x00,0x30,0x48,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1EAE, {0x10,0x20,0x88,0x70,0x00,0x20,0x50,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EAF, {0x10,0x20,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EB0, {0x40,0x20,0x88,0x70,0x00,0x20,0x50,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EB1, {0x40,0x20,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EB2, {0x20,0x50,0x10,0xA8,0x70,0x20,0x50,0x88,0x88,0xF8,0x88,0x00,0x00}}, +{ 0x1EB3, {0x20,0x50,0x10,0xA8,0x70,0x00,0x70,0x08,0x78,0x88,0x78,0x00,0x00}}, +{ 0x1EB4, {0x50,0xA0,0x88,0x70,0x00,0x20,0x50,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1EB5, {0x50,0xA0,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EB6, {0x00,0x88,0x70,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x20}}, +{ 0x1EB7, {0x00,0x00,0x88,0x70,0x00,0x70,0x08,0x78,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1EB8, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x20}}, +{ 0x1EB9, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x20}}, +{ 0x1EBA, {0x20,0x50,0x10,0x20,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1EBB, {0x20,0x50,0x10,0x20,0x20,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1EBC, {0x00,0x28,0x50,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1EBD, {0x00,0x00,0x28,0x50,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1EBE, {0x00,0x44,0xA8,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1EBF, {0x00,0x00,0x44,0xA8,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1EC0, {0x00,0x88,0x54,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1EC1, {0x00,0x00,0x88,0x54,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1EC2, {0x08,0x54,0xA8,0x08,0x00,0xF8,0x80,0xE0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1EC3, {0x00,0x08,0x54,0xA8,0x08,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1EC4, {0x28,0x50,0x30,0x48,0x00,0xF8,0x80,0xF0,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x1EC5, {0x28,0x50,0x30,0x48,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1EC6, {0x00,0x30,0x48,0x00,0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00,0x20}}, +{ 0x1EC7, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x20}}, +{ 0x1EC8, {0x20,0x50,0x10,0x20,0xF8,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x1EC9, {0x20,0x50,0x20,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x1ECA, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x20}}, +{ 0x1ECB, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0xF8,0x00,0x20}}, +{ 0x1ECC, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x20}}, +{ 0x1ECD, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x20}}, +{ 0x1ECE, {0x20,0x50,0x10,0x20,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ECF, {0x20,0x50,0x10,0x20,0x20,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED0, {0x00,0x44,0xA8,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED1, {0x00,0x00,0x44,0xA8,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED2, {0x00,0x88,0x54,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED3, {0x00,0x00,0x88,0x54,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED4, {0x08,0x54,0xA4,0x08,0x78,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED5, {0x00,0x08,0x54,0xA4,0x08,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED6, {0x28,0x50,0x38,0x48,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED7, {0x28,0x50,0x30,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1ED8, {0x00,0x30,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x20}}, +{ 0x1ED9, {0x00,0x00,0x30,0x48,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x20}}, +{ 0x1EDA, {0x00,0x20,0x40,0x00,0x64,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EDB, {0x00,0x00,0x20,0x40,0x00,0x64,0x94,0x98,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EDC, {0x00,0x40,0x20,0x00,0x64,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EDD, {0x00,0x00,0x40,0x20,0x00,0x64,0x94,0x98,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EDE, {0x20,0x50,0x10,0x20,0x64,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EDF, {0x00,0x20,0x50,0x10,0x20,0x64,0x94,0x98,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EE0, {0x00,0x50,0xA0,0x00,0x64,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EE1, {0x00,0x00,0x50,0xA0,0x00,0x64,0x94,0x98,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EE2, {0x00,0x00,0x64,0x94,0x98,0x90,0x90,0x90,0x90,0x90,0x60,0x00,0x20}}, +{ 0x1EE3, {0x00,0x00,0x00,0x00,0x00,0x64,0x94,0x98,0x90,0x90,0x60,0x00,0x20}}, +{ 0x1EE4, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x20}}, +{ 0x1EE5, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1EE6, {0x20,0x50,0x10,0x20,0xA8,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1EE7, {0x20,0x50,0x10,0x20,0x20,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1EE8, {0x00,0x20,0x40,0x00,0x94,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EE9, {0x00,0x00,0x20,0x40,0x00,0x94,0x94,0x98,0x90,0xB0,0x50,0x00,0x00}}, +{ 0x1EEA, {0x00,0x40,0x20,0x00,0x94,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EEB, {0x00,0x00,0x40,0x20,0x00,0x94,0x94,0x98,0x90,0xB0,0x50,0x00,0x00}}, +{ 0x1EEC, {0x20,0x50,0x10,0x20,0xB4,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EED, {0x20,0x50,0x10,0x20,0x20,0x94,0x94,0x98,0x90,0xB0,0x50,0x00,0x00}}, +{ 0x1EEE, {0x00,0x50,0xA0,0x00,0x94,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x00}}, +{ 0x1EEF, {0x00,0x00,0x50,0xA0,0x00,0x94,0x94,0x98,0x90,0xB0,0x50,0x00,0x00}}, +{ 0x1EF0, {0x00,0x00,0x00,0x00,0x94,0x94,0x98,0x90,0x90,0x90,0x60,0x00,0x20}}, +{ 0x1EF1, {0x00,0x00,0x00,0x00,0x00,0x94,0x94,0x98,0x90,0xB0,0x50,0x00,0x20}}, +{ 0x1EF2, {0x00,0x40,0x20,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1EF3, {0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x1EF4, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x20,0x00,0x20}}, +{ 0x1EF5, {0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70,0x00,0x20}}, +{ 0x1EF6, {0x20,0x50,0x10,0x20,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1EF7, {0x20,0x50,0x10,0x20,0x20,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x1EF8, {0x00,0x28,0x50,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1EF9, {0x00,0x00,0x28,0x50,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0x1F00, {0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F01, {0x00,0x30,0x20,0x10,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F02, {0x00,0xD0,0x48,0x80,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F03, {0x00,0xD0,0x88,0x40,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F04, {0x00,0xC8,0x50,0x80,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F05, {0x00,0xC8,0x90,0x40,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F06, {0x68,0xB0,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F07, {0x68,0xB0,0x20,0x10,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F08, {0x00,0x00,0xD0,0x68,0xA8,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F09, {0x00,0x00,0xD0,0xA8,0x68,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F0A, {0x00,0x00,0xD0,0x68,0xA8,0xA8,0x68,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F0B, {0x00,0x00,0xD0,0xA8,0x68,0xA8,0x68,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F0C, {0x00,0x00,0xD0,0x68,0xA8,0x68,0xA8,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F0D, {0x00,0x00,0xD0,0xA8,0x68,0x68,0xA8,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F0E, {0x00,0x00,0xD0,0x28,0xE8,0x68,0xA8,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F0F, {0x00,0x00,0xD0,0x28,0xE8,0xA8,0x68,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F10, {0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F11, {0x00,0x30,0x20,0x10,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F12, {0x00,0xD0,0x48,0x80,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F13, {0x00,0xD0,0x88,0x40,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F14, {0x00,0xC8,0x50,0x80,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F15, {0x00,0xC8,0x90,0x40,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F18, {0x00,0x00,0xF8,0x60,0xA0,0x20,0x30,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1F19, {0x00,0x00,0xF8,0xA0,0x60,0x20,0x30,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1F1A, {0x00,0x00,0xF8,0x60,0xA0,0xA0,0x70,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1F1B, {0x00,0x00,0xF8,0xA0,0x60,0xA0,0x70,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1F1C, {0x00,0x00,0xF8,0x60,0xA0,0x60,0xB0,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1F1D, {0x00,0x00,0xF8,0xA0,0x60,0x60,0xB0,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1F20, {0x00,0x30,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F21, {0x00,0x30,0x20,0x10,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F22, {0x00,0xD0,0x48,0x80,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F23, {0x00,0xD0,0x88,0x40,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F24, {0x00,0xC8,0x50,0x80,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F25, {0x00,0xC8,0x90,0x40,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F26, {0x68,0xB0,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F27, {0x68,0xB0,0x20,0x10,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F28, {0x00,0x00,0xE8,0x68,0xA8,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F29, {0x00,0x00,0xE8,0xA8,0x68,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F2A, {0x00,0x00,0xE8,0x68,0xA8,0xA8,0x78,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F2B, {0x00,0x00,0xE8,0xA8,0x68,0xA8,0x78,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F2C, {0x00,0x00,0xE8,0x68,0xA8,0x68,0xB8,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F2D, {0x00,0x00,0xE8,0xA8,0x68,0x68,0xB8,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F2E, {0x00,0x00,0xE8,0x28,0xE8,0x68,0xB8,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F2F, {0x00,0x00,0xE8,0x28,0xE8,0xA8,0x78,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1F30, {0x00,0x60,0x20,0x40,0x00,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x1F31, {0x00,0x60,0x40,0x20,0x00,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x1F32, {0x00,0xD0,0x48,0x80,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1F33, {0x00,0xD0,0x88,0x40,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1F34, {0x00,0xC8,0x50,0x80,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1F35, {0x00,0xC8,0x90,0x40,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1F36, {0x68,0xB0,0x10,0x20,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1F37, {0x68,0xB0,0x20,0x10,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1F38, {0x00,0x00,0xF8,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F39, {0x00,0x00,0xF8,0x90,0x50,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F3A, {0x00,0x00,0xF8,0x50,0x90,0x90,0x50,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F3B, {0x00,0x00,0xF8,0x90,0x50,0x90,0x50,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F3C, {0x00,0x00,0xF8,0x50,0x90,0x50,0x90,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F3D, {0x00,0x00,0xF8,0x90,0x50,0x30,0x50,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F3E, {0x00,0x00,0xF8,0x10,0xD0,0x50,0x90,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F3F, {0x00,0x00,0xF8,0x10,0xD0,0x90,0x50,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1F40, {0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F41, {0x00,0x30,0x20,0x10,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F42, {0x00,0xD0,0x48,0x80,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F43, {0x00,0xD0,0x88,0x40,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F44, {0x00,0xC8,0x50,0x80,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F45, {0x00,0xC8,0x90,0x40,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F48, {0x00,0x00,0xD0,0x68,0xA8,0x28,0x28,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1F49, {0x00,0x00,0xD0,0xA8,0x68,0x28,0x28,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1F4A, {0x00,0x00,0xD0,0x68,0xA8,0xA8,0x68,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1F4B, {0x00,0x00,0xD0,0xA8,0x68,0xA8,0x68,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1F4C, {0x00,0x00,0xD0,0x68,0xA8,0x68,0xA8,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1F4D, {0x00,0x00,0xD0,0xA8,0x68,0x68,0xA8,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1F50, {0x00,0x30,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F51, {0x00,0x30,0x20,0x10,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F52, {0x00,0xD0,0x48,0x80,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F53, {0x00,0xD0,0x88,0x40,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F54, {0x00,0xC8,0x50,0x80,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F55, {0x00,0xC8,0x90,0x40,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F56, {0x68,0xB0,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F57, {0x68,0xB0,0x20,0x10,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F59, {0x00,0x00,0xE8,0xA8,0x68,0x28,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x1F5B, {0x00,0x00,0xE8,0xA8,0x68,0xA8,0x50,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x1F5D, {0x00,0x00,0xE8,0xA8,0x68,0x68,0x90,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x1F5F, {0x00,0x00,0xE8,0x28,0xE8,0xA8,0x50,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x1F60, {0x00,0x30,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F61, {0x00,0x30,0x20,0x10,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F62, {0x00,0xD0,0x48,0x80,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F63, {0x00,0xD0,0x88,0x40,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F64, {0x00,0xC8,0x50,0x80,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F65, {0x00,0xC8,0x90,0x40,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F66, {0x68,0xB0,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F67, {0x68,0xB0,0x20,0x10,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F68, {0x00,0x00,0xD0,0x68,0xA8,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F69, {0x00,0x00,0xD0,0xA8,0x68,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F6A, {0x00,0x00,0xD0,0x68,0xA8,0xA8,0x68,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F6B, {0x00,0x00,0xD0,0xA8,0x68,0xA8,0x68,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F6C, {0x00,0x00,0xD0,0x68,0xA8,0x68,0xA8,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F6D, {0x00,0x00,0xD0,0xA8,0x68,0x68,0xA8,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F6E, {0x00,0x00,0xD0,0x28,0xE8,0x68,0xA8,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F6F, {0x00,0x00,0xD0,0x28,0xE8,0xA8,0x68,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1F70, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F71, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1F72, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F73, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x1F74, {0x00,0x00,0x40,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F75, {0x00,0x00,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1F76, {0x00,0x00,0x80,0x40,0x00,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x1F77, {0x00,0x00,0x20,0x40,0x00,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x1F78, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F79, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F7A, {0x00,0x00,0x40,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F7B, {0x00,0x00,0x10,0x20,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1F7C, {0x00,0x00,0x40,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F7D, {0x00,0x00,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1F80, {0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F81, {0x00,0x30,0x20,0x10,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F82, {0x00,0xD0,0x48,0x80,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F83, {0x00,0xD0,0x88,0x40,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F84, {0x00,0xC8,0x50,0x80,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F85, {0x00,0xC8,0x90,0x40,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F86, {0x68,0xB0,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F87, {0x68,0xB0,0x20,0x10,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1F88, {0x00,0x00,0xD0,0x68,0xA8,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F89, {0x00,0x00,0xD0,0xA8,0x68,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F8A, {0x00,0x00,0xD0,0x68,0xA8,0xA8,0x68,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F8B, {0x00,0x00,0xD0,0xA8,0x68,0xA8,0x68,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F8C, {0x00,0x00,0xD0,0x68,0xA8,0x68,0xA8,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F8D, {0x00,0x00,0xD0,0xA8,0x68,0x68,0xA8,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F8E, {0x00,0x00,0xD0,0x28,0xE8,0x68,0xA8,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F8F, {0x00,0x00,0xD0,0x28,0xE8,0xA8,0x68,0x38,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F90, {0x00,0x30,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F91, {0x00,0x30,0x20,0x10,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F92, {0x00,0xD0,0x48,0x80,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F93, {0x00,0xD0,0x88,0x40,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F94, {0x00,0xC8,0x50,0x80,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F95, {0x00,0xC8,0x90,0x40,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F96, {0x68,0xB0,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F97, {0x68,0xB0,0x20,0x10,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1F98, {0x00,0x00,0xE8,0x68,0xA8,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F99, {0x00,0x00,0xE8,0xA8,0x68,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F9A, {0x00,0x00,0xE8,0x68,0xA8,0xA8,0x78,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F9B, {0x00,0x00,0xE8,0xA8,0x68,0xA8,0x78,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F9C, {0x00,0x00,0xE8,0x68,0xA8,0x68,0xB8,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F9D, {0x00,0x00,0xE8,0xA8,0x68,0x68,0xB8,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F9E, {0x00,0x00,0xE8,0x28,0xE8,0x68,0xB8,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1F9F, {0x00,0x00,0xE8,0x28,0xE8,0xA8,0x78,0x28,0x28,0x28,0x28,0x00,0x10}}, +{ 0x1FA0, {0x00,0x30,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA1, {0x00,0x30,0x20,0x10,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA2, {0x00,0xD0,0x48,0x80,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA3, {0x00,0xD0,0x88,0x40,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA4, {0x00,0xC8,0x50,0x80,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA5, {0x00,0xC8,0x90,0x40,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA6, {0x68,0xB0,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA7, {0x68,0xB0,0x20,0x10,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FA8, {0x00,0x00,0xD0,0x68,0xA8,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FA9, {0x00,0x00,0xD0,0xA8,0x68,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FAA, {0x00,0x00,0xD0,0x68,0xA8,0xA8,0x68,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FAB, {0x00,0x00,0xD0,0xA8,0x68,0xA8,0x68,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FAC, {0x00,0x00,0xD0,0x68,0xA8,0x68,0xA8,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FAD, {0x00,0x00,0xD0,0xA8,0x68,0x68,0xA8,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FAE, {0x00,0x00,0xD0,0x28,0xE8,0x68,0xA8,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FAF, {0x00,0x00,0xD0,0x28,0xE8,0xA8,0x68,0x28,0x10,0x10,0x28,0x00,0x10}}, +{ 0x1FB0, {0x00,0x00,0x88,0x70,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1FB1, {0x00,0x00,0x00,0xF8,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1FB2, {0x00,0x00,0x40,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1FB3, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1FB4, {0x00,0x00,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1FB6, {0x00,0x00,0x68,0xB0,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0x1FB7, {0x00,0x00,0x68,0xB0,0x00,0x70,0x88,0x88,0x88,0x98,0x68,0x00,0x20}}, +{ 0x1FB8, {0x00,0x88,0x70,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x1FB9, {0x00,0xF8,0x00,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0x1FBA, {0x00,0x00,0x90,0x68,0x28,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1FBB, {0x00,0x00,0x50,0xA8,0x28,0x28,0x28,0x38,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1FBC, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1FBD, {0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FBE, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x10,0x00,0x00}}, +{ 0x1FBF, {0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FC0, {0x00,0x00,0x68,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FC1, {0x00,0x68,0xB0,0x00,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FC2, {0x00,0x00,0x40,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1FC3, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1FC4, {0x00,0x00,0x10,0x20,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1FC6, {0x00,0x00,0x68,0xB0,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x08}}, +{ 0x1FC7, {0x00,0x00,0x68,0xB0,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x08,0x88}}, +{ 0x1FC8, {0x00,0x00,0xB8,0x60,0x20,0x20,0x30,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1FC9, {0x00,0x00,0x78,0xA0,0x20,0x20,0x30,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x1FCA, {0x00,0x00,0xA8,0x68,0x28,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1FCB, {0x00,0x00,0x68,0xA8,0x28,0x28,0x38,0x28,0x28,0x28,0x28,0x00,0x00}}, +{ 0x1FCC, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x20}}, +{ 0x1FCD, {0x00,0x00,0xD0,0x48,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FCE, {0x00,0x00,0xC8,0x50,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FCF, {0x00,0x00,0x68,0xB0,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FD0, {0x00,0x00,0x88,0x70,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1FD1, {0x00,0x00,0x00,0xF8,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1FD2, {0x00,0x40,0x20,0xD8,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1FD3, {0x00,0x10,0x20,0xD8,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1FD6, {0x00,0x00,0x68,0xB0,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1FD7, {0x68,0xB0,0x00,0xD8,0x00,0x20,0x20,0x20,0x20,0x28,0x10,0x00,0x00}}, +{ 0x1FD8, {0x00,0x88,0x70,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x1FD9, {0x00,0x00,0xF8,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x1FDA, {0x00,0x00,0xB8,0x50,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1FDB, {0x00,0x00,0x78,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x1FDD, {0x00,0x00,0xD0,0x88,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FDE, {0x00,0x00,0xC8,0x90,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FDF, {0x00,0x00,0x68,0xB0,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FE0, {0x00,0x00,0x88,0x70,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1FE1, {0x00,0x00,0x00,0xF8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1FE2, {0x00,0x40,0x20,0xD8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1FE3, {0x00,0x10,0x20,0xD8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1FE4, {0x00,0x30,0x10,0x20,0x00,0x70,0x88,0x88,0x88,0x88,0xF0,0x80,0x80}}, +{ 0x1FE5, {0x00,0x30,0x20,0x10,0x00,0x70,0x88,0x88,0x88,0x88,0xF0,0x80,0x80}}, +{ 0x1FE6, {0x00,0x00,0x68,0xB0,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1FE7, {0x68,0xB0,0x00,0xD8,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x1FE8, {0x00,0x88,0x70,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1FE9, {0x00,0xF8,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1FEA, {0x00,0x00,0xA8,0x68,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x1FEB, {0x00,0x00,0x68,0xA8,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x1FEC, {0x00,0x00,0xF0,0xA8,0x68,0x28,0x30,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x1FED, {0x00,0x40,0x20,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FEE, {0x00,0x10,0x20,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FEF, {0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FF2, {0x00,0x00,0x40,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FF3, {0x00,0x00,0x00,0x00,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FF4, {0x00,0x00,0x10,0x20,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FF6, {0x00,0x00,0x68,0xB0,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x1FF7, {0x00,0x00,0x68,0xB0,0x00,0x88,0xA8,0xA8,0xA8,0xA8,0x50,0x00,0x20}}, +{ 0x1FF8, {0x00,0x00,0x90,0x68,0x28,0x28,0x28,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1FF9, {0x00,0x00,0x50,0xA8,0x28,0x28,0x28,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x1FFA, {0x00,0x00,0x90,0x68,0x28,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1FFB, {0x00,0x00,0x50,0xA8,0x28,0x28,0x28,0x28,0x10,0x10,0x28,0x00,0x00}}, +{ 0x1FFC, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x50,0x50,0xD8,0x00,0x20}}, +{ 0x1FFD, {0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x1FFE, {0x00,0x00,0x30,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2001, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2002, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2003, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2004, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2005, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2006, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2007, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2008, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2009, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x200A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x200B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x200C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x200D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x200E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x200F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2010, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2011, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2012, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2013, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2014, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2015, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2016, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x2017, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0xF8}}, +{ 0x2018, {0x00,0x00,0x10,0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2019, {0x00,0x00,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x201A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x20,0x00}}, +{ 0x201B, {0x00,0x00,0x30,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x201C, {0x00,0x00,0x48,0x90,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x201D, {0x00,0x00,0xD8,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x201E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x90,0x00}}, +{ 0x201F, {0x00,0x00,0xD8,0x90,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2020, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2021, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2022, {0x00,0x00,0x00,0x00,0x70,0xF8,0xF8,0xF8,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2023, {0x00,0x00,0x00,0x40,0x60,0x70,0x78,0x70,0x60,0x40,0x00,0x00,0x00}}, +{ 0x2024, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00}}, +{ 0x2025, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00}}, +{ 0x2026, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x00,0x00}}, +{ 0x2027, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00}}, +{ 0x202F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2030, {0x00,0x00,0x48,0xA8,0x50,0x10,0x20,0x40,0x68,0xD4,0xA8,0x00,0x00}}, +{ 0x2031, {0x00,0x00,0x48,0xA8,0x50,0x10,0x28,0x54,0x68,0xD4,0xA8,0x00,0x00}}, +{ 0x2032, {0x00,0x00,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2033, {0x00,0x00,0x50,0x50,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2034, {0x00,0x00,0x54,0x54,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2035, {0x00,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2036, {0x00,0x00,0xA0,0xA0,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2037, {0x00,0x00,0xA8,0xA8,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2038, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x50,0x50}}, +{ 0x2039, {0x00,0x00,0x00,0x00,0x10,0x20,0x40,0x40,0x20,0x10,0x00,0x00,0x00}}, +{ 0x203A, {0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x10,0x20,0x40,0x00,0x00,0x00}}, +{ 0x203B, {0x00,0x00,0xA8,0x88,0x50,0x20,0xA8,0x20,0x50,0x88,0xA8,0x00,0x00}}, +{ 0x203C, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x50,0x00,0x00}}, +{ 0x203D, {0x00,0x00,0x70,0xA8,0x28,0x28,0x30,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0x203E, {0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x203F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x70}}, +{ 0x2040, {0x00,0x70,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2041, {0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x10,0x10,0x20,0x20,0x50,0x50}}, +{ 0x2042, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x50,0xF8,0x50,0x00,0x00,0x00}}, +{ 0x2043, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2044, {0x00,0x00,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x00,0x00}}, +{ 0x2045, {0x00,0x00,0x70,0x40,0x40,0x40,0x70,0x40,0x40,0x40,0x70,0x00,0x00}}, +{ 0x2046, {0x00,0x00,0x70,0x10,0x10,0x10,0x70,0x10,0x10,0x10,0x70,0x00,0x00}}, +{ 0x2047, {0x00,0x00,0x48,0xB4,0xB4,0x24,0x48,0x48,0x48,0x00,0x48,0x00,0x00}}, +{ 0x2048, {0x00,0x00,0x48,0xA8,0xA8,0x28,0x48,0x48,0x48,0x00,0x48,0x00,0x00}}, +{ 0x2049, {0x00,0x00,0x90,0xA8,0xA8,0x88,0x90,0x90,0x90,0x00,0x90,0x00,0x00}}, +{ 0x204A, {0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x204B, {0x00,0x00,0xF0,0xB8,0xB8,0xB8,0xB8,0xB0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x204C, {0x00,0x00,0x00,0x00,0x78,0xE8,0xE8,0xE8,0x78,0x00,0x00,0x00,0x00}}, +{ 0x204D, {0x00,0x00,0x00,0x00,0xF0,0xB8,0xB8,0xB8,0xF0,0x00,0x00,0x00,0x00}}, +{ 0x204E, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xA8,0x70,0xA8,0x20,0x00,0x00}}, +{ 0x204F, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x60,0x20,0x10,0x00}}, +{ 0x2050, {0x00,0x00,0x00,0x70,0x88,0x00,0x00,0x00,0x88,0x70,0x00,0x00,0x00}}, +{ 0x2051, {0x00,0x00,0x20,0xA8,0x70,0xA8,0x20,0xA8,0x70,0xA8,0x20,0x00,0x00}}, +{ 0x2052, {0x00,0x00,0xC8,0xC8,0x10,0x10,0x20,0x40,0x40,0x98,0x98,0x00,0x00}}, +{ 0x2057, {0x00,0x00,0x7C,0x7C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x205F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2060, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2061, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2062, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2063, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2070, {0x40,0xA0,0xA0,0xA0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2071, {0x40,0x00,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2074, {0x80,0x80,0xC0,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2075, {0xE0,0x80,0xC0,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2076, {0x60,0x80,0xC0,0xA0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2077, {0xE0,0x20,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2078, {0x40,0xA0,0x40,0xA0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2079, {0x40,0xA0,0x60,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x207A, {0x00,0x40,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x207B, {0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x207C, {0x00,0xE0,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x207D, {0x40,0x80,0x80,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x207E, {0x40,0x20,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x207F, {0x00,0xC0,0xA0,0xA0,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2080, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0xA0,0xA0,0x40}}, +{ 0x2081, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,0x40,0x40,0xE0}}, +{ 0x2082, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0x20,0x40,0xE0}}, +{ 0x2083, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0x40,0x20,0xC0}}, +{ 0x2084, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xE0,0x40}}, +{ 0x2085, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x80,0xC0,0x20,0xC0}}, +{ 0x2086, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x80,0xC0,0xA0,0x40}}, +{ 0x2087, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x40,0x40,0x40}}, +{ 0x2088, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0x40,0xA0,0x40}}, +{ 0x2089, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA0,0x60,0x20,0xC0}}, +{ 0x208A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xE0,0x40,0x00}}, +{ 0x208B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00}}, +{ 0x208C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xE0,0x00}}, +{ 0x208D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x80,0x80,0x40}}, +{ 0x208E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x20,0x20,0x40}}, +{ 0x20A0, {0x00,0x00,0x00,0x60,0x80,0x80,0xB8,0xA0,0x70,0x20,0x38,0x00,0x00}}, +{ 0x20A1, {0x00,0x08,0x78,0x98,0x90,0xA0,0xA0,0xA0,0xC0,0xC8,0xF0,0x80,0x00}}, +{ 0x20A2, {0x00,0x00,0x70,0x88,0x80,0x80,0xA8,0xB0,0xA0,0xA8,0x70,0x00,0x00}}, +{ 0x20A3, {0x00,0x00,0xF8,0x80,0x80,0x80,0xE8,0xB0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x20A4, {0x00,0x00,0x30,0x48,0x40,0xE0,0x40,0xE0,0x40,0x48,0xB0,0x00,0x00}}, +{ 0x20A5, {0x00,0x00,0x00,0x10,0x10,0xD0,0xA8,0xA8,0xA8,0xA8,0xC8,0xC0,0x40}}, +{ 0x20A6, {0x00,0x00,0x48,0x48,0x68,0xFC,0x68,0xFC,0x58,0x58,0x48,0x00,0x00}}, +{ 0x20A7, {0x00,0x00,0x70,0x48,0xFC,0x48,0x70,0x40,0x40,0x40,0x40,0x00,0x00}}, +{ 0x20A8, {0x00,0x00,0xC0,0xA0,0xA0,0xA0,0xD8,0xA0,0xB0,0xA8,0xB0,0x00,0x00}}, +{ 0x20A9, {0x00,0x00,0x88,0x88,0xF8,0x88,0xF8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0x20AA, {0x00,0x00,0x64,0x94,0xB4,0xB4,0xB4,0xB4,0xB4,0xA4,0x98,0x00,0x00}}, +{ 0x20AB, {0x00,0x00,0x10,0x70,0x10,0x70,0x90,0x90,0x90,0x90,0x70,0x00,0xF0}}, +{ 0x20AC, {0x00,0x00,0x38,0x40,0x40,0xF0,0x40,0xF0,0x40,0x40,0x38,0x00,0x00}}, +{ 0x20AD, {0x00,0x00,0x44,0x44,0x48,0x50,0xFC,0x50,0x48,0x44,0x44,0x00,0x00}}, +{ 0x20AE, {0x00,0x00,0xF8,0x20,0x20,0x30,0x60,0x30,0x60,0x20,0x20,0x00,0x00}}, +{ 0x20AF, {0x00,0x00,0x40,0x70,0xC8,0x48,0x48,0x48,0x48,0xE8,0xD0,0x00,0x00}}, +{ 0x20B0, {0x00,0x00,0x10,0x28,0x28,0x28,0x10,0x10,0x50,0x68,0xA8,0x08,0x10}}, +{ 0x20B1, {0x00,0x00,0x60,0x50,0xF8,0xF8,0x50,0x60,0x40,0x40,0x40,0x00,0x00}}, +{ 0x20D0, {0x20,0x40,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20D1, {0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20D2, {0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00}}, +{ 0x20D3, {0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00}}, +{ 0x20D4, {0x00,0x30,0xC8,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20D5, {0x00,0x60,0x98,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20D6, {0x00,0x40,0xF8,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20D7, {0x00,0x10,0xF8,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20D8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20,0x00,0x00,0x00}}, +{ 0x20D9, {0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0xE8,0x48,0x30,0x00,0x00}}, +{ 0x20DA, {0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x90,0xB8,0x90,0x60,0x00,0x00}}, +{ 0x20DB, {0x00,0xA8,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20DC, {0x00,0xB4,0xB4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20DD, {0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x78}}, +{ 0x20DE, {0xFC,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xFC}}, +{ 0x20DF, {0x30,0x48,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x48,0x30}}, +{ 0x20E0, {0x78,0xC4,0xA4,0xA4,0xA4,0xA4,0xA4,0x94,0x94,0x94,0x94,0x8C,0x78}}, +{ 0x20E1, {0x00,0x50,0xF8,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20E2, {0x00,0x78,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x78,0x00}}, +{ 0x20E3, {0xFC,0xFC,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xFC,0xFC}}, +{ 0x20E4, {0x30,0x48,0x48,0x48,0x48,0x48,0x84,0x84,0x84,0x84,0x84,0x84,0x78}}, +{ 0x20E5, {0x00,0x00,0x80,0x80,0x40,0x40,0x20,0x10,0x10,0x08,0x08,0x00,0x00}}, +{ 0x20E6, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x20E7, {0x00,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00}}, +{ 0x20E8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8}}, +{ 0x20E9, {0x00,0xF8,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x20EA, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0xF8,0x40,0x20,0x00,0x00,0x00}}, +{ 0x2100, {0x00,0x00,0x68,0xA8,0xA8,0x70,0x60,0x58,0xA0,0xA0,0x98,0x00,0x00}}, +{ 0x2101, {0x00,0x00,0x68,0xA8,0xA8,0x70,0x38,0x60,0x90,0x88,0xB0,0x00,0x00}}, +{ 0x2102, {0x00,0x00,0x70,0xA8,0xA0,0xA0,0xA0,0xA0,0xA0,0xA8,0x70,0x00,0x00}}, +{ 0x2103, {0x40,0xA0,0x40,0x38,0x40,0x40,0x40,0x40,0x40,0x40,0x38,0x00,0x00}}, +{ 0x2104, {0x00,0x00,0x20,0x20,0x70,0xA0,0xA0,0xA0,0x70,0x20,0x38,0x00,0x00}}, +{ 0x2105, {0x00,0x00,0x48,0x88,0x90,0x50,0x20,0x50,0x68,0xA8,0x90,0x00,0x00}}, +{ 0x2106, {0x00,0x00,0x48,0x88,0x90,0x50,0x20,0x68,0x68,0xA8,0x90,0x00,0x00}}, +{ 0x2107, {0x00,0x00,0x78,0x88,0x80,0x80,0x60,0x80,0x88,0x88,0x70,0x00,0x00}}, +{ 0x2108, {0x00,0x00,0x60,0x90,0x08,0x48,0x78,0x48,0x08,0x90,0x60,0x00,0x00}}, +{ 0x2109, {0x40,0xA0,0x40,0x78,0x40,0x40,0x70,0x40,0x40,0x40,0x40,0x00,0x00}}, +{ 0x210A, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x88,0x88,0x70,0x10,0x90,0x60}}, +{ 0x210B, {0x00,0x00,0xC8,0x48,0x48,0x48,0x78,0x90,0x90,0x90,0x98,0x00,0x00}}, +{ 0x210C, {0x00,0x00,0x68,0x90,0x80,0xB0,0xC8,0x48,0x28,0xA8,0x48,0x10,0x20}}, +{ 0x210D, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xB8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x210E, {0x00,0x00,0x20,0x20,0x20,0x40,0x70,0x48,0x48,0x90,0x90,0x00,0x00}}, +{ 0x210F, {0x00,0x00,0x20,0x30,0x60,0xC0,0x70,0x48,0x48,0x90,0x90,0x00,0x00}}, +{ 0x2110, {0x00,0x00,0x38,0x08,0x08,0x10,0x10,0x10,0x20,0xA0,0x40,0x00,0x00}}, +{ 0x2111, {0x00,0x00,0xF8,0x88,0x48,0x08,0x10,0x10,0x08,0xC8,0x30,0x00,0x00}}, +{ 0x2112, {0x00,0x00,0x18,0x54,0x38,0x10,0x10,0x20,0x60,0xA8,0x50,0x00,0x00}}, +{ 0x2113, {0x00,0x00,0x10,0x28,0x28,0x28,0x28,0x28,0x10,0x30,0x48,0x00,0x00}}, +{ 0x2114, {0x00,0x00,0xA0,0xF8,0xA0,0xB0,0xA8,0xA8,0xA8,0xA8,0xB0,0x00,0x00}}, +{ 0x2115, {0x00,0x00,0xC4,0xC4,0xA4,0xA4,0xB4,0xB4,0xAC,0xAC,0xA4,0x00,0x00}}, +{ 0x2116, {0x00,0x00,0x90,0x90,0xD0,0xD0,0xDC,0xB4,0xB4,0x94,0x9C,0x00,0x00}}, +{ 0x2117, {0x00,0x00,0x70,0x88,0xE8,0xD8,0xE8,0xC8,0xC8,0x88,0x70,0x00,0x00}}, +{ 0x2118, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x2119, {0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0xB0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x211A, {0x00,0x00,0x70,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x08,0x00}}, +{ 0x211B, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0xA0,0x90,0x90,0x90,0x00,0x00}}, +{ 0x211C, {0x00,0x00,0xF0,0xA8,0x68,0x28,0x30,0x30,0xB0,0xA8,0x48,0x00,0x00}}, +{ 0x211D, {0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xB0,0xB0,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x211E, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA8,0x90,0xA8,0x88,0x00,0x00}}, +{ 0x211F, {0x60,0x20,0xF0,0xA8,0xA8,0xA8,0xF0,0xA0,0xB0,0xA8,0xA8,0x20,0x00}}, +{ 0x2120, {0x68,0xB8,0x68,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2121, {0x00,0xE0,0x40,0x70,0x60,0x30,0x20,0x30,0x00,0x10,0x10,0x10,0x18}}, +{ 0x2122, {0x00,0x00,0xF4,0x5C,0x54,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2123, {0x60,0x20,0xA8,0xA8,0xA8,0xA8,0x70,0x70,0x70,0x20,0x20,0x20,0x00}}, +{ 0x2124, {0x00,0x00,0xF8,0x28,0x28,0x50,0x50,0x50,0xA0,0xA0,0xF8,0x00,0x00}}, +{ 0x2125, {0x00,0x00,0x78,0x10,0x20,0x78,0x10,0x20,0x70,0x08,0x08,0x88,0x70}}, +{ 0x2126, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x50,0x50,0xD8,0x00,0x00}}, +{ 0x2127, {0x00,0x00,0xD8,0x50,0x50,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x2128, {0x00,0x00,0x70,0x88,0x08,0x48,0x30,0x48,0x08,0x88,0x70,0x00,0x00}}, +{ 0x2129, {0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x212A, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0x212B, {0x00,0x20,0x50,0x20,0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00,0x00}}, +{ 0x212C, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x90,0x90,0x90,0xE0,0x00,0x00}}, +{ 0x212D, {0x00,0x00,0x38,0x50,0x90,0x88,0xA8,0x90,0x80,0x88,0x70,0x00,0x00}}, +{ 0x212E, {0x00,0x00,0x00,0x00,0x70,0xD8,0xD8,0xF8,0xC0,0xC8,0x70,0x00,0x00}}, +{ 0x212F, {0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x78,0x80,0x90,0x60,0x00,0x00}}, +{ 0x2130, {0x00,0x00,0x70,0x88,0x88,0x80,0x60,0x80,0x88,0x88,0x70,0x00,0x00}}, +{ 0x2131, {0x00,0x00,0x7C,0x90,0x10,0x10,0x78,0x20,0x20,0xA0,0x40,0x00,0x00}}, +{ 0x2132, {0x00,0x00,0x08,0x08,0x08,0x08,0x78,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x2133, {0x00,0x00,0x44,0x6C,0x54,0x54,0x44,0x88,0x88,0x88,0x84,0x00,0x00}}, +{ 0x2134, {0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x90,0x90,0xE0,0x00,0x00}}, +{ 0x2135, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x00}}, +{ 0x2136, {0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xF8,0x00,0x00}}, +{ 0x2137, {0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x10,0x28,0x48,0x00,0x00}}, +{ 0x2138, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0x2139, {0x00,0x00,0x30,0x30,0x00,0x70,0x30,0x30,0x30,0x30,0x78,0x00,0x00}}, +{ 0x213A, {0x00,0x00,0x00,0x00,0x00,0x04,0x7C,0x8C,0x84,0x84,0x78,0x00,0x00}}, +{ 0x213D, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0x50,0x50,0xA0,0xA0,0xC0}}, +{ 0x213E, {0x00,0x00,0xF8,0xA8,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x213F, {0x00,0x00,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x2140, {0x00,0x00,0xF8,0xA0,0x50,0x50,0x28,0x50,0x50,0xA0,0xF8,0x00,0x00}}, +{ 0x2141, {0x00,0x00,0x70,0x88,0x88,0xC8,0x08,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x2142, {0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x2143, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x2144, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x2145, {0x00,0x00,0x78,0x54,0x54,0x54,0xA8,0xA8,0xA8,0xA8,0xF0,0x00,0x00}}, +{ 0x2146, {0x00,0x00,0x14,0x14,0x14,0x74,0xA8,0xA8,0xA8,0xA8,0x68,0x00,0x00}}, +{ 0x2147, {0x00,0x00,0x00,0x00,0x00,0x38,0x54,0x54,0xB8,0xA0,0x78,0x00,0x00}}, +{ 0x2148, {0x00,0x00,0x10,0x10,0x00,0x78,0x28,0x28,0x50,0x50,0x50,0x00,0x00}}, +{ 0x2149, {0x00,0x00,0x10,0x10,0x00,0x78,0x28,0x28,0x50,0x50,0x50,0x50,0xE0}}, +{ 0x214A, {0x00,0x00,0x20,0x20,0xF0,0xA8,0xA8,0xA8,0xB0,0x20,0x38,0x00,0x00}}, +{ 0x214B, {0x00,0x00,0x00,0xB0,0x48,0xC8,0x28,0x10,0x28,0x28,0x10,0x00,0x00}}, +{ 0x2153, {0x00,0x00,0x80,0x80,0x80,0x80,0x90,0x28,0x10,0x08,0x30,0x00,0x00}}, +{ 0x2154, {0x00,0x00,0x40,0xA0,0x40,0x80,0xF0,0x28,0x10,0x08,0x30,0x00,0x00}}, +{ 0x2155, {0x00,0x00,0x80,0x80,0x80,0x80,0xB8,0x20,0x30,0x08,0x30,0x00,0x00}}, +{ 0x2156, {0x00,0x40,0xA0,0x40,0x80,0xE0,0x38,0x20,0x30,0x08,0x30,0x00,0x00}}, +{ 0x2157, {0x00,0x40,0xA0,0x40,0x20,0xC0,0x38,0x20,0x30,0x08,0x30,0x00,0x00}}, +{ 0x2158, {0x00,0x00,0x80,0xC0,0xE0,0x40,0x38,0x20,0x30,0x08,0x30,0x00,0x00}}, +{ 0x2159, {0x00,0x00,0x80,0x80,0x80,0x80,0x98,0x20,0x30,0x28,0x10,0x00,0x00}}, +{ 0x215A, {0x00,0x00,0xE0,0x80,0xC0,0x20,0xD8,0x20,0x30,0x28,0x10,0x00,0x00}}, +{ 0x215B, {0x00,0x00,0x80,0x80,0x80,0x80,0x90,0x28,0x10,0x28,0x10,0x00,0x00}}, +{ 0x215C, {0x00,0x00,0x40,0xA0,0x40,0x20,0xD0,0x28,0x10,0x28,0x10,0x00,0x00}}, +{ 0x215D, {0x00,0x00,0xE0,0x80,0xE0,0x20,0xD0,0x28,0x10,0x28,0x10,0x00,0x00}}, +{ 0x215E, {0x00,0x00,0xE0,0x20,0x40,0x40,0x50,0x28,0x10,0x28,0x10,0x00,0x00}}, +{ 0x215F, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2160, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2161, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x2162, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x2163, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x90,0x90,0x00,0x00}}, +{ 0x2164, {0x00,0x00,0x88,0x88,0x88,0x88,0x50,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x2165, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x48,0x48,0x00,0x00}}, +{ 0x2166, {0x00,0x00,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0xD4,0x54,0x54,0x00,0x00}}, +{ 0x2167, {0x00,0x00,0xDC,0xDC,0xDC,0xDC,0xDC,0xDC,0xDC,0x5C,0x5C,0x00,0x00}}, +{ 0x2168, {0x00,0x00,0xA8,0xA8,0xA8,0x90,0x90,0x90,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x2169, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x216A, {0x00,0x00,0xA8,0xA8,0xA8,0x48,0x48,0x48,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x216B, {0x00,0x00,0xAC,0xAC,0xAC,0x4C,0x4C,0x4C,0xAC,0xAC,0xAC,0x00,0x00}}, +{ 0x216C, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x216D, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x216E, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0x216F, {0x00,0x00,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x2170, {0x00,0x00,0x00,0x20,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2171, {0x00,0x00,0x00,0x50,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x2172, {0x00,0x00,0x00,0xA8,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x2173, {0x00,0x00,0x00,0x80,0x00,0xA8,0xA8,0xA8,0xA8,0x90,0x90,0x00,0x00}}, +{ 0x2174, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x2175, {0x00,0x00,0x00,0x08,0x00,0xA8,0xA8,0xA8,0xA8,0x48,0x48,0x00,0x00}}, +{ 0x2176, {0x00,0x00,0x00,0x14,0x00,0xD4,0xD4,0xD4,0xD4,0x54,0x54,0x00,0x00}}, +{ 0x2177, {0x00,0x00,0x00,0x1C,0x00,0xDC,0xDC,0xDC,0xDC,0x5C,0x5C,0x00,0x00}}, +{ 0x2178, {0x00,0x00,0x00,0x80,0x00,0xA8,0xA8,0x90,0x90,0xA8,0xA8,0x00,0x00}}, +{ 0x2179, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x20,0x50,0x88,0x00,0x00}}, +{ 0x217A, {0x00,0x00,0x00,0x08,0x00,0xA8,0xA8,0x48,0x48,0xA8,0xA8,0x00,0x00}}, +{ 0x217B, {0x00,0x00,0x00,0x0C,0x00,0xAC,0xAC,0x4C,0x4C,0xAC,0xAC,0x00,0x00}}, +{ 0x217C, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0x217D, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0x217E, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0x217F, {0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0x2180, {0x00,0x00,0x70,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x2181, {0x00,0x00,0xF0,0x88,0xE8,0xA8,0xA8,0xA8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0x2182, {0x00,0x00,0x70,0xA8,0xA8,0xF8,0xA8,0xF8,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x2183, {0x00,0x00,0x70,0x88,0x08,0x08,0x08,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0x2190, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0xF8,0x40,0x20,0x00,0x00,0x00}}, +{ 0x2191, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2192, {0x00,0x00,0x00,0x00,0x00,0x20,0x10,0xF8,0x10,0x20,0x00,0x00,0x00}}, +{ 0x2193, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x2194, {0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xFC,0x48,0x00,0x00,0x00,0x00}}, +{ 0x2195, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x2196, {0x00,0x00,0xC0,0xF0,0xE0,0xA0,0x20,0x10,0x10,0x08,0x08,0x00,0x00}}, +{ 0x2197, {0x00,0x00,0x18,0x78,0x38,0x28,0x20,0x40,0x40,0x80,0x80,0x00,0x00}}, +{ 0x2198, {0x00,0x00,0x80,0x80,0x40,0x40,0x20,0x28,0x38,0x78,0x18,0x00,0x00}}, +{ 0x2199, {0x00,0x00,0x08,0x08,0x10,0x10,0x20,0xA0,0xE0,0xF0,0xC0,0x00,0x00}}, +{ 0x219A, {0x00,0x00,0x00,0x00,0x00,0x28,0x48,0xFC,0x50,0x30,0x00,0x00,0x00}}, +{ 0x219B, {0x00,0x00,0x00,0x00,0x00,0x30,0x28,0xFC,0x48,0x50,0x00,0x00,0x00}}, +{ 0x219C, {0x00,0x00,0x00,0x00,0x00,0xC0,0xD8,0x64,0x00,0x00,0x00,0x00,0x00}}, +{ 0x219D, {0x00,0x00,0x00,0x00,0x00,0x0C,0x6C,0x98,0x00,0x00,0x00,0x00,0x00}}, +{ 0x219E, {0x00,0x00,0x00,0x00,0x00,0x28,0x50,0xFC,0x50,0x28,0x00,0x00,0x00}}, +{ 0x219F, {0x00,0x00,0x20,0x70,0xA8,0x70,0xA8,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x21A0, {0x00,0x00,0x00,0x00,0x00,0x50,0x28,0xFC,0x28,0x50,0x00,0x00,0x00}}, +{ 0x21A1, {0x00,0x00,0x20,0x20,0x20,0x20,0xA8,0x70,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x21A2, {0x00,0x00,0x00,0x00,0x00,0x24,0x48,0xF0,0x48,0x24,0x00,0x00,0x00}}, +{ 0x21A3, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x3C,0x48,0x90,0x00,0x00,0x00}}, +{ 0x21A4, {0x00,0x00,0x00,0x00,0x00,0x20,0x48,0xF8,0x48,0x20,0x00,0x00,0x00}}, +{ 0x21A5, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x21A6, {0x00,0x00,0x00,0x00,0x00,0x20,0x90,0xF8,0x90,0x20,0x00,0x00,0x00}}, +{ 0x21A7, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x21A8, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0xA8,0x70,0x20,0xF8,0x00,0x00}}, +{ 0x21A9, {0x00,0x00,0x00,0x00,0x00,0x28,0x44,0xF8,0x40,0x20,0x00,0x00,0x00}}, +{ 0x21AA, {0x00,0x00,0x00,0x00,0x00,0x50,0x88,0x7C,0x08,0x10,0x00,0x00,0x00}}, +{ 0x21AB, {0x00,0x00,0x00,0x00,0x00,0x20,0x4C,0xFC,0x48,0x28,0x00,0x00,0x00}}, +{ 0x21AC, {0x00,0x00,0x00,0x00,0x00,0x10,0xC8,0xFC,0x48,0x50,0x00,0x00,0x00}}, +{ 0x21AD, {0x00,0x00,0x00,0x00,0x00,0x48,0xDC,0xEC,0x48,0x00,0x00,0x00,0x00}}, +{ 0x21AE, {0x00,0x00,0x00,0x00,0x00,0x08,0x58,0xFC,0x68,0x40,0x00,0x00,0x00}}, +{ 0x21AF, {0x00,0x00,0x80,0x80,0x90,0xB0,0xD0,0x90,0x10,0x38,0x10,0x00,0x00}}, +{ 0x21B0, {0x00,0x00,0x20,0x40,0xF8,0x48,0x28,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x21B1, {0x00,0x00,0x20,0x10,0xF8,0x90,0xA0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x21B2, {0x00,0x00,0x08,0x08,0x08,0x08,0x28,0x48,0xF8,0x40,0x20,0x00,0x00}}, +{ 0x21B3, {0x00,0x00,0x80,0x80,0x80,0x80,0xA0,0x90,0xF8,0x10,0x20,0x00,0x00}}, +{ 0x21B4, {0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x10,0x38,0x10,0x00,0x00,0x00}}, +{ 0x21B5, {0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x48,0xF8,0x40,0x00,0x00,0x00}}, +{ 0x21B6, {0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0xE8,0x48,0x00,0x00,0x00}}, +{ 0x21B7, {0x00,0x00,0x00,0x00,0x00,0x60,0x90,0x90,0xB8,0x90,0x00,0x00,0x00}}, +{ 0x21B8, {0x00,0x00,0xF8,0x80,0xE0,0xC0,0xA0,0x20,0x10,0x10,0x08,0x00,0x00}}, +{ 0x21B9, {0x00,0x00,0xA0,0xC0,0xF8,0xC0,0xA8,0x18,0xF8,0x18,0x28,0x00,0x00}}, +{ 0x21BA, {0x00,0x00,0x00,0x00,0x38,0x30,0xA8,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x21BB, {0x00,0x00,0x00,0x00,0xE0,0x60,0xA8,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x21BC, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0xF8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x21BD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x40,0x20,0x00,0x00,0x00}}, +{ 0x21BE, {0x00,0x00,0x20,0x30,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x21BF, {0x00,0x00,0x20,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x21C0, {0x00,0x00,0x00,0x00,0x00,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x21C1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x00,0x00,0x00}}, +{ 0x21C2, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x30,0x20,0x00,0x00}}, +{ 0x21C3, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x60,0x20,0x00,0x00}}, +{ 0x21C4, {0x00,0x00,0x20,0x10,0xF8,0x10,0x20,0x40,0xF8,0x40,0x20,0x00,0x00}}, +{ 0x21C5, {0x00,0x00,0x50,0xF0,0x50,0x50,0x50,0x50,0x50,0x78,0x50,0x00,0x00}}, +{ 0x21C6, {0x00,0x00,0x20,0x40,0xF8,0x40,0x20,0x10,0xF8,0x10,0x20,0x00,0x00}}, +{ 0x21C7, {0x00,0x00,0x20,0x40,0xF8,0x40,0x20,0x40,0xF8,0x40,0x20,0x00,0x00}}, +{ 0x21C8, {0x00,0x00,0x50,0xF8,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x21C9, {0x00,0x00,0x20,0x10,0xF8,0x10,0x20,0x10,0xF8,0x10,0x20,0x00,0x00}}, +{ 0x21CA, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0xF8,0x50,0x00,0x00}}, +{ 0x21CB, {0x00,0x00,0x00,0x00,0x20,0x40,0xF8,0x00,0xF8,0x10,0x20,0x00,0x00}}, +{ 0x21CC, {0x00,0x00,0x00,0x00,0x20,0x10,0xF8,0x00,0xF8,0x40,0x20,0x00,0x00}}, +{ 0x21CD, {0x00,0x00,0x00,0x00,0x14,0x28,0x7C,0x90,0x7C,0x20,0x50,0x00,0x00}}, +{ 0x21CE, {0x00,0x00,0x00,0x00,0x08,0x58,0xFC,0xA4,0xFC,0x68,0x40,0x00,0x00}}, +{ 0x21CF, {0x00,0x00,0x00,0x00,0xA0,0x50,0xF8,0x24,0xF8,0x10,0x28,0x00,0x00}}, +{ 0x21D0, {0x00,0x00,0x00,0x00,0x10,0x20,0x7C,0x80,0x7C,0x20,0x10,0x00,0x00}}, +{ 0x21D1, {0x00,0x00,0x20,0x50,0xD8,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x21D2, {0x00,0x00,0x00,0x00,0x20,0x10,0xF8,0x04,0xF8,0x10,0x20,0x00,0x00}}, +{ 0x21D3, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0xD8,0x50,0x20,0x00,0x00}}, +{ 0x21D4, {0x00,0x00,0x00,0x00,0x00,0x48,0xFC,0x84,0xFC,0x48,0x00,0x00,0x00}}, +{ 0x21D5, {0x00,0x00,0x20,0x50,0xD8,0x50,0x50,0x50,0xD8,0x50,0x20,0x00,0x00}}, +{ 0x21D6, {0x00,0x00,0x00,0x00,0xF8,0xA0,0xD0,0xA8,0x94,0x08,0x00,0x00,0x00}}, +{ 0x21D7, {0x00,0x00,0x00,0x00,0x7C,0x14,0x2C,0x54,0xA4,0x40,0x00,0x00,0x00}}, +{ 0x21D8, {0x00,0x00,0x00,0x00,0x40,0xA4,0x54,0x2C,0x14,0x7C,0x00,0x00,0x00}}, +{ 0x21D9, {0x00,0x00,0x00,0x00,0x08,0x94,0xA8,0xD0,0xA0,0xF8,0x00,0x00,0x00}}, +{ 0x21DA, {0x00,0x00,0x00,0x00,0x10,0x3C,0x40,0xFC,0x40,0x3C,0x10,0x00,0x00}}, +{ 0x21DB, {0x00,0x00,0x00,0x00,0x20,0xF0,0x08,0xFC,0x08,0xF0,0x20,0x00,0x00}}, +{ 0x21DC, {0x00,0x00,0x00,0x00,0x00,0x40,0xE8,0xD4,0x40,0x00,0x00,0x00,0x00}}, +{ 0x21DD, {0x00,0x00,0x00,0x00,0x00,0x08,0x5C,0xAC,0x08,0x00,0x00,0x00,0x00}}, +{ 0x21DE, {0x00,0x00,0x20,0x70,0xA8,0x20,0x70,0x20,0x70,0x20,0x20,0x00,0x00}}, +{ 0x21DF, {0x00,0x00,0x20,0x20,0x70,0x20,0x70,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x21E0, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0xA8,0x40,0x20,0x00,0x00,0x00}}, +{ 0x21E1, {0x00,0x00,0x20,0x70,0xA8,0x00,0x20,0x20,0x00,0x20,0x20,0x00,0x00}}, +{ 0x21E2, {0x00,0x00,0x00,0x00,0x00,0x20,0x10,0xA8,0x10,0x20,0x00,0x00,0x00}}, +{ 0x21E3, {0x00,0x00,0x20,0x20,0x00,0x20,0x20,0x00,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x21E4, {0x00,0x00,0x00,0x00,0x00,0xA0,0xC0,0xF8,0xC0,0xA0,0x00,0x00,0x00}}, +{ 0x21E5, {0x00,0x00,0x00,0x00,0x00,0x28,0x18,0xF8,0x18,0x28,0x00,0x00,0x00}}, +{ 0x21E6, {0x00,0x00,0x00,0x00,0x00,0x20,0x78,0x88,0x78,0x20,0x00,0x00,0x00}}, +{ 0x21E7, {0x00,0x00,0x20,0x50,0xD8,0x50,0x50,0x50,0x50,0x50,0x70,0x00,0x00}}, +{ 0x21E8, {0x00,0x00,0x00,0x00,0x00,0x20,0xF0,0x88,0xF0,0x20,0x00,0x00,0x00}}, +{ 0x21E9, {0x00,0x00,0x70,0x50,0x50,0x50,0x50,0x50,0xD8,0x50,0x20,0x00,0x00}}, +{ 0x21EA, {0x00,0x20,0x50,0xD8,0x50,0x50,0x70,0x00,0x70,0x50,0x70,0x00,0x00}}, +{ 0x21EB, {0x00,0x00,0x20,0x50,0xD8,0x50,0x50,0x50,0xD8,0x88,0xF8,0x00,0x00}}, +{ 0x21EC, {0x00,0x00,0x20,0x50,0xF8,0x88,0x50,0x50,0xD8,0x88,0xF8,0x00,0x00}}, +{ 0x21ED, {0x00,0x00,0x20,0x70,0xF8,0x70,0x70,0x70,0xF8,0xA8,0xF8,0x00,0x00}}, +{ 0x21EE, {0x00,0x00,0x20,0x50,0xD8,0x50,0xD8,0x50,0x50,0x50,0x70,0x00,0x00}}, +{ 0x21EF, {0x00,0x00,0x20,0x50,0xD8,0x50,0xD8,0x50,0xD8,0x88,0xF8,0x00,0x00}}, +{ 0x21F0, {0x00,0x00,0x00,0x00,0x00,0xA0,0xF0,0x88,0xF0,0xA0,0x00,0x00,0x00}}, +{ 0x21F1, {0x00,0x00,0xF8,0x80,0xB0,0xE0,0x90,0x10,0x08,0x08,0x00,0x00,0x00}}, +{ 0x21F2, {0x00,0x00,0x00,0x80,0x80,0x40,0x48,0x38,0x68,0x08,0xF8,0x00,0x00}}, +{ 0x21F3, {0x00,0x00,0x20,0x50,0xD8,0x50,0x50,0x50,0xD8,0x50,0x20,0x00,0x00}}, +{ 0x21F4, {0x00,0x00,0x00,0x00,0x00,0x10,0x68,0xFC,0x68,0x10,0x00,0x00,0x00}}, +{ 0x21F5, {0x00,0x00,0x50,0x78,0x50,0x50,0x50,0x50,0x50,0xF0,0x50,0x00,0x00}}, +{ 0x21F6, {0x00,0x00,0x10,0xF8,0x10,0x10,0xF8,0x10,0x10,0xF8,0x10,0x00,0x00}}, +{ 0x21F7, {0x00,0x00,0x00,0x00,0x00,0x28,0x48,0xFC,0x48,0x28,0x00,0x00,0x00}}, +{ 0x21F8, {0x00,0x00,0x00,0x00,0x00,0x50,0x48,0xFC,0x48,0x50,0x00,0x00,0x00}}, +{ 0x21F9, {0x00,0x00,0x00,0x00,0x30,0x78,0xFC,0x78,0x30,0x00,0x00,0x00,0x00}}, +{ 0x21FA, {0x00,0x00,0x00,0x00,0x00,0x38,0x58,0xFC,0x58,0x38,0x00,0x00,0x00}}, +{ 0x21FB, {0x00,0x00,0x00,0x00,0x00,0x70,0x68,0xFC,0x68,0x70,0x00,0x00,0x00}}, +{ 0x21FC, {0x00,0x00,0x00,0x00,0x30,0x78,0xFC,0x78,0x30,0x00,0x00,0x00,0x00}}, +{ 0x21FD, {0x00,0x00,0x00,0x00,0x00,0x20,0x60,0xB8,0x60,0x20,0x00,0x00,0x00}}, +{ 0x21FE, {0x00,0x00,0x00,0x00,0x00,0x20,0x30,0xE8,0x30,0x20,0x00,0x00,0x00}}, +{ 0x21FF, {0x00,0x00,0x00,0x00,0x30,0x78,0xB4,0x78,0x30,0x00,0x00,0x00,0x00}}, +{ 0x2200, {0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x2201, {0x00,0x00,0x20,0x50,0x40,0x40,0x40,0x40,0x40,0x50,0x20,0x00,0x00}}, +{ 0x2202, {0x00,0x00,0x00,0x30,0x48,0x08,0x38,0x48,0x48,0x48,0x30,0x00,0x00}}, +{ 0x2203, {0x00,0x00,0xF8,0x08,0x08,0x08,0x78,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x2204, {0x10,0x10,0xF8,0x18,0x28,0x28,0x78,0x28,0x28,0x48,0xF8,0x40,0x40}}, +{ 0x2205, {0x00,0x10,0x10,0x70,0x98,0xA8,0xA8,0xA8,0xC8,0x70,0x40,0x40,0x00}}, +{ 0x2206, {0x00,0x00,0x20,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x2207, {0x00,0x00,0xF8,0x88,0x88,0x50,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2208, {0x00,0x00,0x00,0x00,0x38,0x40,0x80,0xF0,0x80,0x40,0x38,0x00,0x00}}, +{ 0x2209, {0x00,0x00,0x20,0x20,0x38,0x60,0xA0,0xF0,0xA0,0x60,0x38,0x20,0x20}}, +{ 0x220A, {0x00,0x00,0x00,0x00,0x00,0x38,0x40,0x70,0x40,0x38,0x00,0x00,0x00}}, +{ 0x220B, {0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x78,0x08,0x10,0xE0,0x00,0x00}}, +{ 0x220C, {0x00,0x00,0x20,0x20,0xE0,0x30,0x28,0x78,0x28,0x30,0xE0,0x20,0x20}}, +{ 0x220D, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x38,0x08,0x70,0x00,0x00,0x00}}, +{ 0x220E, {0x00,0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,0x00}}, +{ 0x220F, {0x00,0xFC,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xEC,0x00}}, +{ 0x2210, {0x00,0xEC,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xFC,0x00}}, +{ 0x2211, {0x00,0xFC,0x80,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x80,0xFC,0x00}}, +{ 0x2212, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2213, {0x00,0x00,0x00,0xF8,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00}}, +{ 0x2214, {0x00,0x00,0x00,0x20,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00}}, +{ 0x2215, {0x00,0x00,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x00,0x00}}, +{ 0x2216, {0x00,0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x08,0x00,0x00}}, +{ 0x2217, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2218, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2219, {0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x221A, {0x00,0x04,0x04,0x04,0x08,0x08,0x08,0x10,0x90,0x90,0x60,0x60,0x20}}, +{ 0x221B, {0x00,0x04,0x44,0xA4,0x48,0x28,0xC8,0x10,0x90,0x90,0x60,0x60,0x20}}, +{ 0x221C, {0x00,0x04,0x84,0x84,0xC8,0xE8,0x48,0x10,0x90,0x90,0x60,0x60,0x20}}, +{ 0x221D, {0x00,0x00,0x00,0x00,0x00,0x50,0xA0,0xA0,0x50,0x00,0x00,0x00,0x00}}, +{ 0x221E, {0x00,0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0x50,0x00,0x00,0x00,0x00}}, +{ 0x221F, {0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x2220, {0x00,0x00,0x00,0x00,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x2221, {0x00,0x00,0x00,0x00,0x08,0x90,0x60,0x60,0xA0,0xF8,0x20,0x00,0x00}}, +{ 0x2222, {0x00,0x00,0x08,0x10,0x30,0x48,0x88,0x48,0x30,0x10,0x08,0x00,0x00}}, +{ 0x2223, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2224, {0x00,0x00,0x20,0x20,0x20,0x30,0x20,0x60,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2225, {0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0x2226, {0x00,0x00,0x50,0x50,0x58,0x50,0x70,0x50,0xD0,0x50,0x50,0x00,0x00}}, +{ 0x2227, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x00,0x00}}, +{ 0x2228, {0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x2229, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x222A, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x222B, {0x10,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x40}}, +{ 0x222C, {0x00,0x24,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x90}}, +{ 0x222D, {0x00,0x54,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xD0}}, +{ 0x222E, {0x10,0x28,0x20,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x20,0xA0,0x40}}, +{ 0x222F, {0x00,0x24,0x48,0x48,0x78,0xCC,0xCC,0xCC,0x78,0x48,0x48,0x48,0x90}}, +{ 0x2230, {0x00,0x54,0xA8,0xA8,0xF8,0xAC,0xAC,0xAC,0xF8,0xA8,0xA8,0xA8,0xD0}}, +{ 0x2231, {0x10,0x28,0x20,0x20,0x20,0x74,0xAC,0x3C,0x20,0x20,0x20,0xA0,0x40}}, +{ 0x2232, {0x10,0x28,0x20,0x20,0x74,0xAC,0xBC,0xA8,0x70,0x20,0x20,0xA0,0x40}}, +{ 0x2233, {0x10,0x28,0x20,0x20,0x70,0xA8,0xBC,0xAC,0x74,0x20,0x20,0xA0,0x40}}, +{ 0x2234, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x88,0x00,0x00,0x00}}, +{ 0x2235, {0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x20,0x00,0x00,0x00}}, +{ 0x2236, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00}}, +{ 0x2237, {0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x48,0x00,0x00,0x00}}, +{ 0x2238, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2239, {0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xE0,0x00,0x08,0x00,0x00,0x00}}, +{ 0x223A, {0x00,0x00,0x00,0x00,0x00,0x88,0x00,0xF8,0x00,0x88,0x00,0x00,0x00}}, +{ 0x223B, {0x00,0x00,0x00,0x00,0x00,0x10,0x40,0xA8,0xA8,0x10,0x40,0x00,0x00}}, +{ 0x223C, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA8,0xA8,0x10,0x00,0x00,0x00}}, +{ 0x223D, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xA8,0xA8,0x40,0x00,0x00,0x00}}, +{ 0x223E, {0x00,0x00,0x00,0x00,0x00,0x48,0xA4,0x94,0x48,0x00,0x00,0x00,0x00}}, +{ 0x223F, {0x00,0x00,0x00,0x40,0xA0,0xA0,0xA0,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x2240, {0x00,0x00,0x20,0x10,0x10,0x10,0x20,0x40,0x40,0x40,0x20,0x00,0x00}}, +{ 0x2241, {0x00,0x00,0x00,0x00,0x20,0x20,0x60,0xA8,0xA8,0x30,0x20,0x00,0x00}}, +{ 0x2242, {0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x48,0xA8,0x90,0x00,0x00,0x00}}, +{ 0x2243, {0x00,0x00,0x00,0x00,0x00,0x48,0xA8,0x90,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2244, {0x00,0x00,0x00,0x20,0x20,0x68,0xA8,0xB0,0x20,0xF8,0x20,0x00,0x00}}, +{ 0x2245, {0x00,0x00,0x00,0x48,0xA8,0x90,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2246, {0x00,0x00,0x00,0x48,0xA8,0x90,0x20,0xF8,0x20,0xF8,0x20,0x00,0x00}}, +{ 0x2247, {0x00,0x00,0x20,0x68,0xA8,0xB0,0x20,0xF8,0x20,0xF8,0x20,0x00,0x00}}, +{ 0x2248, {0x00,0x00,0x00,0x00,0x48,0xA8,0x90,0x48,0xA8,0x90,0x00,0x00,0x00}}, +{ 0x2249, {0x00,0x00,0x20,0x20,0x68,0xA8,0xB0,0x68,0xA8,0xB0,0x20,0x20,0x00}}, +{ 0x224A, {0x00,0x00,0x00,0x48,0xA8,0x90,0x48,0xA8,0x90,0x00,0xF8,0x00,0x00}}, +{ 0x224B, {0x00,0x00,0x48,0xA8,0x90,0x48,0xA8,0x90,0x48,0xA8,0x90,0x00,0x00}}, +{ 0x224C, {0x00,0x00,0x00,0x90,0xA8,0x48,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x224D, {0x00,0x00,0x00,0x00,0x00,0x88,0x70,0x00,0x70,0x88,0x00,0x00,0x00}}, +{ 0x224E, {0x00,0x00,0x00,0x00,0x00,0x20,0xD8,0x00,0xD8,0x20,0x00,0x00,0x00}}, +{ 0x224F, {0x00,0x00,0x00,0x00,0x00,0x20,0xD8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2250, {0x00,0x00,0x00,0x00,0x20,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2251, {0x00,0x00,0x00,0x00,0x20,0x00,0xF8,0x00,0xF8,0x00,0x20,0x00,0x00}}, +{ 0x2252, {0x00,0x00,0x00,0x00,0x80,0x00,0xF8,0x00,0xF8,0x00,0x08,0x00,0x00}}, +{ 0x2253, {0x00,0x00,0x00,0x00,0x08,0x00,0xF8,0x00,0xF8,0x00,0x80,0x00,0x00}}, +{ 0x2254, {0x00,0x00,0x00,0x00,0x00,0x00,0xB8,0x00,0xB8,0x00,0x00,0x00,0x00}}, +{ 0x2255, {0x00,0x00,0x00,0x00,0x00,0x00,0xE8,0x00,0xE8,0x00,0x00,0x00,0x00}}, +{ 0x2256, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2257, {0x00,0x00,0x20,0x50,0x20,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2258, {0x00,0x00,0x00,0x70,0x88,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2259, {0x00,0x00,0x00,0x20,0x50,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x225A, {0x00,0x00,0x88,0x50,0x20,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x225B, {0x00,0x00,0xA8,0x70,0xF8,0x70,0xA8,0x00,0xF8,0x00,0xF8,0x00,0x00}}, +{ 0x225C, {0x00,0x00,0x20,0x50,0x50,0x88,0xF8,0x00,0xF8,0x00,0xF8,0x00,0x00}}, +{ 0x225D, {0x00,0x00,0x4C,0xF8,0xF8,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x225E, {0x00,0x00,0xD0,0xA8,0xA8,0xA8,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x225F, {0x20,0x50,0x10,0x20,0x00,0x20,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2260, {0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0x20,0xF8,0x80,0x00,0x00,0x00}}, +{ 0x2261, {0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2262, {0x00,0x00,0x00,0x10,0x10,0xF8,0x20,0xF8,0x20,0xF8,0x40,0x40,0x00}}, +{ 0x2263, {0x00,0x00,0x00,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0xF8,0x00,0x00}}, +{ 0x2264, {0x00,0x00,0x00,0x18,0x60,0x80,0x60,0x18,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2265, {0x00,0x00,0x00,0xC0,0x30,0x08,0x30,0xC0,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2266, {0x00,0x00,0x18,0x60,0x80,0x60,0x18,0x00,0xF8,0x00,0xF8,0x00,0x00}}, +{ 0x2267, {0x00,0x00,0xC0,0x30,0x08,0x30,0xC0,0x00,0xF8,0x00,0xF8,0x00,0x00}}, +{ 0x2268, {0x00,0x00,0x18,0x60,0x80,0x60,0x18,0x20,0xF8,0x20,0xF8,0x20,0x00}}, +{ 0x2269, {0x00,0x00,0xC0,0x30,0x08,0x30,0xC0,0x20,0xF8,0x20,0xF8,0x20,0x00}}, +{ 0x226A, {0x00,0x00,0x00,0x14,0x28,0x50,0xA0,0x50,0x28,0x14,0x00,0x00,0x00}}, +{ 0x226B, {0x00,0x00,0x00,0xA0,0x50,0x28,0x14,0x28,0x50,0xA0,0x00,0x00,0x00}}, +{ 0x226C, {0x00,0x00,0x50,0x20,0x50,0x50,0x50,0x50,0x50,0x20,0x50,0x00,0x00}}, +{ 0x226D, {0x00,0x00,0x00,0x00,0x20,0xA8,0x70,0x20,0x70,0xA8,0x20,0x00,0x00}}, +{ 0x226E, {0x00,0x20,0x28,0x30,0x20,0x60,0xA0,0x60,0x20,0x30,0x28,0x20,0x00}}, +{ 0x226F, {0x00,0x20,0xA0,0x60,0x20,0x30,0x28,0x30,0x20,0x60,0xA0,0x20,0x00}}, +{ 0x2270, {0x00,0x20,0x20,0x38,0x60,0xA0,0x60,0x38,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x2271, {0x00,0x20,0x20,0xE0,0x30,0x28,0x30,0xE0,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x2272, {0x00,0x00,0x18,0x60,0x80,0x60,0x18,0x00,0x48,0xA8,0x90,0x00,0x00}}, +{ 0x2273, {0x00,0x00,0xC0,0x30,0x08,0x30,0xC0,0x00,0x48,0xA8,0x90,0x00,0x00}}, +{ 0x2274, {0x20,0x20,0x38,0x60,0xA0,0x60,0x38,0x20,0x68,0xA8,0xB0,0x20,0x00}}, +{ 0x2275, {0x20,0x20,0xE0,0x30,0x28,0x30,0xE0,0x20,0x68,0xA8,0xB0,0x20,0x00}}, +{ 0x2276, {0x00,0x18,0x60,0x80,0x60,0x18,0xC0,0x30,0x08,0x30,0xC0,0x00,0x00}}, +{ 0x2277, {0x00,0xC0,0x30,0x08,0x30,0xC0,0x18,0x60,0x80,0x60,0x18,0x00,0x00}}, +{ 0x2278, {0x10,0x18,0x70,0x90,0x60,0x38,0xE0,0x30,0x48,0x70,0xC0,0x40,0x00}}, +{ 0x2279, {0x10,0xD0,0x30,0x18,0x30,0xE0,0x38,0x60,0xC0,0x60,0x58,0x40,0x00}}, +{ 0x227A, {0x00,0x00,0x00,0x00,0x08,0x10,0xE0,0x10,0x08,0x00,0x00,0x00,0x00}}, +{ 0x227B, {0x00,0x00,0x00,0x00,0x80,0x40,0x38,0x40,0x80,0x00,0x00,0x00,0x00}}, +{ 0x227C, {0x00,0x00,0x00,0x00,0x08,0x10,0xE0,0x10,0xE8,0x10,0x08,0x00,0x00}}, +{ 0x227D, {0x00,0x00,0x00,0x00,0x80,0x40,0x38,0x40,0xB8,0x40,0x80,0x00,0x00}}, +{ 0x227E, {0x00,0x00,0x08,0x10,0xE0,0x10,0x08,0x00,0x48,0xA8,0x90,0x00,0x00}}, +{ 0x227F, {0x00,0x00,0x80,0x40,0x38,0x40,0x80,0x00,0x48,0xA8,0x90,0x00,0x00}}, +{ 0x2280, {0x00,0x00,0x20,0x20,0x28,0x30,0xE0,0x30,0x28,0x20,0x20,0x00,0x00}}, +{ 0x2281, {0x00,0x00,0x20,0x20,0xA0,0x60,0x38,0x60,0xA0,0x20,0x20,0x00,0x00}}, +{ 0x2282, {0x00,0x00,0x00,0x00,0x00,0x78,0x80,0x80,0x80,0x78,0x00,0x00,0x00}}, +{ 0x2283, {0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0x08,0x08,0xF0,0x00,0x00,0x00}}, +{ 0x2284, {0x00,0x00,0x00,0x20,0x20,0x78,0xA0,0xA0,0xA0,0x78,0x20,0x20,0x00}}, +{ 0x2285, {0x00,0x00,0x00,0x20,0x20,0xF0,0x28,0x28,0x28,0xF0,0x20,0x20,0x00}}, +{ 0x2286, {0x00,0x00,0x00,0x78,0x80,0x80,0x80,0x78,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2287, {0x00,0x00,0x00,0xF0,0x08,0x08,0x08,0xF0,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2288, {0x00,0x20,0x20,0x78,0xA0,0xA0,0xA0,0x78,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x2289, {0x00,0x20,0x20,0xF0,0x28,0x28,0x28,0xF0,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x228A, {0x00,0x00,0x00,0x78,0x80,0x80,0x80,0x78,0x10,0xF8,0x40,0x00,0x00}}, +{ 0x228B, {0x00,0x00,0x00,0xF0,0x08,0x08,0x08,0xF0,0x10,0xF8,0x40,0x00,0x00}}, +{ 0x228C, {0x00,0x00,0x00,0x88,0xA8,0xE8,0xF8,0xE8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x228D, {0x00,0x00,0x00,0x88,0x88,0x88,0xA8,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x228E, {0x00,0x00,0x00,0x88,0xA8,0xA8,0xF8,0xA8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x228F, {0x00,0x00,0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x2290, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,0x00}}, +{ 0x2291, {0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0xF8,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2292, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x2293, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x2294, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x2295, {0x00,0x00,0x00,0x00,0x70,0xA8,0xF8,0xA8,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2296, {0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x88,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2297, {0x00,0x00,0x00,0x00,0x70,0xD8,0xA8,0xD8,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2298, {0x00,0x00,0x00,0x00,0x70,0x98,0xA8,0xC8,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2299, {0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0x88,0x70,0x00,0x00,0x00,0x00}}, +{ 0x229A, {0x00,0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x229B, {0x00,0x00,0x00,0x70,0x88,0xD8,0xA8,0xD8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x229C, {0x00,0x00,0x00,0x70,0x88,0xF8,0x88,0xF8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x229D, {0x00,0x00,0x00,0x70,0x88,0x88,0xF8,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x229E, {0x00,0x00,0x00,0x00,0xF8,0xA8,0xF8,0xA8,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x229F, {0x00,0x00,0x00,0x00,0xF8,0x88,0xF8,0x88,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x22A0, {0x00,0x00,0x00,0x00,0xF8,0xD8,0xA8,0xD8,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x22A1, {0x00,0x00,0x00,0x00,0xF8,0x88,0xA8,0x88,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x22A2, {0x00,0x00,0x80,0x80,0x80,0x80,0xF8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x22A3, {0x00,0x00,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x22A4, {0x00,0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x22A5, {0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x22A6, {0x00,0x00,0x80,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x22A7, {0x00,0x00,0x80,0x80,0x80,0xF0,0x80,0xF0,0x80,0x80,0x80,0x00,0x00}}, +{ 0x22A8, {0x00,0x00,0x80,0x80,0x80,0xF8,0x80,0xF8,0x80,0x80,0x80,0x00,0x00}}, +{ 0x22A9, {0x00,0x00,0xA0,0xA0,0xA0,0xA0,0xB8,0xA0,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x22AA, {0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xAC,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x22AB, {0x00,0x00,0xA0,0xA0,0xA0,0xB8,0xA0,0xB8,0xA0,0xA0,0xA0,0x00,0x00}}, +{ 0x22AC, {0x00,0x00,0x80,0x80,0x90,0x90,0xF8,0xA0,0xA0,0x80,0x80,0x00,0x00}}, +{ 0x22AD, {0x00,0x00,0x80,0x88,0x88,0xF8,0x90,0xF8,0xA0,0xA0,0x80,0x00,0x00}}, +{ 0x22AE, {0x00,0x00,0xA0,0xA0,0xA8,0xA8,0xBC,0xB0,0xB0,0xA0,0xA0,0x00,0x00}}, +{ 0x22AF, {0x00,0x00,0xA0,0xA4,0xA4,0xBC,0xA8,0xBC,0xB0,0xB0,0xA0,0x00,0x00}}, +{ 0x22B0, {0x00,0x00,0x00,0x10,0x08,0x10,0xE0,0x10,0x08,0x10,0x00,0x00,0x00}}, +{ 0x22B1, {0x00,0x00,0x00,0x40,0x80,0x40,0x38,0x40,0x80,0x40,0x00,0x00,0x00}}, +{ 0x22B2, {0x00,0x00,0x00,0x00,0x18,0x68,0x88,0x68,0x18,0x00,0x00,0x00,0x00}}, +{ 0x22B3, {0x00,0x00,0x00,0x00,0xC0,0xB0,0x88,0xB0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x22B4, {0x00,0x00,0x00,0x18,0x68,0x88,0x68,0x18,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x22B5, {0x00,0x00,0x00,0xC0,0xB0,0x88,0xB0,0xC0,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x22B6, {0x00,0x00,0x00,0x00,0x00,0x50,0xB8,0x50,0x00,0x00,0x00,0x00,0x00}}, +{ 0x22B7, {0x00,0x00,0x00,0x00,0x00,0x50,0xE8,0x50,0x00,0x00,0x00,0x00,0x00}}, +{ 0x22B8, {0x00,0x00,0x00,0x00,0x00,0x10,0xE8,0x10,0x00,0x00,0x00,0x00,0x00}}, +{ 0x22B9, {0x00,0x00,0x00,0x00,0x20,0x20,0xD8,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x22BA, {0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x22BB, {0x00,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x00,0xF8,0x00,0x00}}, +{ 0x22BC, {0x00,0x00,0x00,0xF8,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x22BD, {0x00,0x00,0x00,0xF8,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x22BE, {0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0xA0,0xF8,0x00,0x00}}, +{ 0x22BF, {0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x28,0x28,0x48,0xF8,0x00,0x00}}, +{ 0x22C0, {0x00,0x30,0x30,0x30,0x30,0x48,0x48,0x48,0x84,0x84,0x84,0x84,0x00}}, +{ 0x22C1, {0x00,0x84,0x84,0x84,0x84,0x48,0x48,0x48,0x30,0x30,0x30,0x30,0x00}}, +{ 0x22C2, {0x00,0x30,0x48,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x00}}, +{ 0x22C3, {0x00,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x48,0x30,0x00}}, +{ 0x22C4, {0x00,0x00,0x00,0x20,0x20,0x50,0x88,0x50,0x20,0x20,0x00,0x00,0x00}}, +{ 0x22C5, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x22C6, {0x00,0x00,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x22C7, {0x00,0x00,0x00,0x20,0x88,0x50,0xF8,0x50,0x88,0x20,0x00,0x00,0x00}}, +{ 0x22C8, {0x00,0x00,0x00,0x00,0x88,0xD8,0xA8,0xD8,0x88,0x00,0x00,0x00,0x00}}, +{ 0x22C9, {0x00,0x00,0x00,0x00,0x88,0xD0,0xA0,0xD0,0x88,0x00,0x00,0x00,0x00}}, +{ 0x22CA, {0x00,0x00,0x00,0x00,0x88,0x58,0x28,0x58,0x88,0x00,0x00,0x00,0x00}}, +{ 0x22CB, {0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x50,0x88,0x00,0x00,0x00,0x00}}, +{ 0x22CC, {0x00,0x00,0x00,0x00,0x08,0x10,0x20,0x50,0x88,0x00,0x00,0x00,0x00}}, +{ 0x22CD, {0x00,0x00,0x00,0x00,0x00,0x90,0xA8,0x48,0x00,0xF8,0x00,0x00,0x00}}, +{ 0x22CE, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x22CF, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x50,0x50,0x88,0x00,0x00}}, +{ 0x22D0, {0x00,0x00,0x00,0x00,0x38,0x40,0x98,0xA0,0x98,0x40,0x38,0x00,0x00}}, +{ 0x22D1, {0x00,0x00,0x00,0x00,0xE0,0x10,0xC8,0x28,0xC8,0x10,0xE0,0x00,0x00}}, +{ 0x22D2, {0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x22D3, {0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x22D4, {0x00,0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0x22D5, {0x00,0x00,0x50,0x50,0x50,0xF8,0x50,0x50,0xF8,0x50,0x50,0x00,0x00}}, +{ 0x22D6, {0x00,0x00,0x08,0x10,0x20,0x40,0x88,0x40,0x20,0x10,0x08,0x00,0x00}}, +{ 0x22D7, {0x00,0x00,0x80,0x40,0x20,0x10,0x88,0x10,0x20,0x40,0x80,0x00,0x00}}, +{ 0x22D8, {0x00,0x00,0x00,0x00,0x14,0x28,0x54,0xA8,0x54,0x28,0x14,0x00,0x00}}, +{ 0x22D9, {0x00,0x00,0x00,0x00,0xA0,0x50,0xA8,0x54,0xA8,0x50,0xA0,0x00,0x00}}, +{ 0x22DA, {0x18,0x60,0x80,0x60,0x18,0x00,0xF8,0x00,0xC0,0x30,0x08,0x30,0xC0}}, +{ 0x22DB, {0xC0,0x30,0x08,0x30,0xC0,0x00,0xF8,0x00,0x18,0x60,0x80,0x60,0x18}}, +{ 0x22DC, {0x00,0x00,0x00,0xF8,0x00,0x18,0x60,0x80,0x60,0x18,0x00,0x00,0x00}}, +{ 0x22DD, {0x00,0x00,0x00,0xF8,0x00,0xC0,0x30,0x08,0x30,0xC0,0x00,0x00,0x00}}, +{ 0x22DE, {0x00,0x00,0x00,0x08,0x10,0xE8,0x10,0xE0,0x10,0x08,0x00,0x00,0x00}}, +{ 0x22DF, {0x00,0x00,0x00,0x80,0x40,0xB8,0x40,0x38,0x40,0x80,0x00,0x00,0x00}}, +{ 0x22E0, {0x00,0x00,0x00,0x20,0x28,0x30,0xE0,0x30,0xE8,0x30,0x28,0x20,0x00}}, +{ 0x22E1, {0x00,0x00,0x00,0x20,0xA0,0x60,0x38,0x60,0xB8,0x60,0xA0,0x20,0x00}}, +{ 0x22E2, {0x00,0x20,0x20,0xF8,0xA0,0xA0,0xA0,0xF8,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x22E3, {0x00,0x20,0x20,0xF8,0x28,0x28,0x28,0xF8,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x22E4, {0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0xF8,0x10,0xF8,0x40,0x00,0x00}}, +{ 0x22E5, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x10,0xF8,0x40,0x00,0x00}}, +{ 0x22E6, {0x00,0x00,0x18,0x60,0x80,0x60,0x38,0x20,0x68,0xA8,0xB0,0x20,0x20}}, +{ 0x22E7, {0x00,0x00,0xC0,0x30,0x08,0x30,0xE0,0x20,0x68,0xA8,0xB0,0x20,0x20}}, +{ 0x22E8, {0x00,0x00,0x08,0x10,0xE0,0x10,0x28,0x20,0x68,0xA8,0xB0,0x20,0x20}}, +{ 0x22E9, {0x00,0x00,0x80,0x40,0x38,0x40,0xA0,0x20,0x68,0xA8,0xB0,0x20,0x20}}, +{ 0x22EA, {0x00,0x00,0x20,0x20,0x38,0x68,0xA8,0x68,0x38,0x20,0x20,0x00,0x00}}, +{ 0x22EB, {0x00,0x00,0x20,0x20,0xE0,0xB0,0xA8,0xB0,0xE0,0x20,0x20,0x00,0x00}}, +{ 0x22EC, {0x00,0x20,0x20,0x38,0x68,0xA8,0x68,0x38,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x22ED, {0x00,0x20,0x20,0xE0,0xB0,0xA8,0xB0,0xE0,0x20,0xF8,0x20,0x20,0x00}}, +{ 0x22EE, {0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00}}, +{ 0x22EF, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x22F0, {0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00}}, +{ 0x22F1, {0x00,0x00,0x00,0x00,0x80,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00}}, +{ 0x22F2, {0x00,0x00,0x00,0x00,0x38,0x40,0x40,0xF0,0x40,0x40,0x38,0x00,0x00}}, +{ 0x22F3, {0x00,0x00,0x00,0x00,0x38,0x40,0x88,0xF8,0x88,0x40,0x38,0x00,0x00}}, +{ 0x22F4, {0x00,0x00,0x00,0x00,0x38,0x40,0x48,0x78,0x48,0x40,0x38,0x00,0x00}}, +{ 0x22F5, {0x00,0x00,0x30,0x00,0x38,0x40,0x80,0xF0,0x80,0x40,0x38,0x00,0x00}}, +{ 0x22F6, {0x00,0x00,0xF8,0x00,0x38,0x40,0x80,0xF0,0x80,0x40,0x38,0x00,0x00}}, +{ 0x22F7, {0x00,0x00,0x00,0x78,0x00,0x38,0x40,0x70,0x40,0x38,0x00,0x00,0x00}}, +{ 0x22F8, {0x00,0x00,0x00,0x00,0x38,0x40,0x80,0xF0,0x80,0x40,0x38,0x00,0xF8}}, +{ 0x22F9, {0x00,0x00,0x00,0x00,0x38,0x40,0xF0,0x80,0xF0,0x40,0x38,0x00,0x00}}, +{ 0x22FA, {0x00,0x00,0x00,0x00,0xE0,0x10,0x10,0x78,0x10,0x10,0xE0,0x00,0x00}}, +{ 0x22FB, {0x00,0x00,0x00,0x00,0xE0,0x10,0x88,0xF8,0x88,0x10,0xE0,0x00,0x00}}, +{ 0x22FC, {0x00,0x00,0x00,0x00,0x70,0x08,0x48,0x78,0x48,0x08,0x70,0x00,0x00}}, +{ 0x22FD, {0x00,0x00,0xF8,0x00,0xE0,0x10,0x08,0x78,0x08,0x10,0xE0,0x00,0x00}}, +{ 0x22FE, {0x00,0x00,0x00,0x78,0x00,0x70,0x08,0x38,0x08,0x70,0x00,0x00,0x00}}, +{ 0x22FF, {0x00,0x00,0x00,0x00,0xF8,0x80,0x80,0xF8,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x2300, {0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x90,0xA8,0x48,0xB0,0x00,0x00}}, +{ 0x2301, {0x00,0x00,0x00,0x00,0x20,0x30,0xA8,0x60,0x20,0x00,0x00,0x00,0x00}}, +{ 0x2302, {0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x2303, {0x00,0x00,0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2304, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x00,0x00}}, +{ 0x2305, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x20,0x50,0x88,0x00,0x00}}, +{ 0x2306, {0x00,0x00,0x00,0x00,0xF8,0x00,0xF8,0x00,0x20,0x50,0x88,0x00,0x00}}, +{ 0x2307, {0x00,0x00,0x10,0x10,0x20,0x20,0x10,0x10,0x20,0x20,0x10,0x00,0x00}}, +{ 0x2308, {0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00}}, +{ 0x2309, {0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00}}, +{ 0x230A, {0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00}}, +{ 0x230B, {0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00}}, +{ 0x230C, {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x230D, {0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x230E, {0x00,0x00,0x00,0x00,0x20,0x20,0x18,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x230F, {0x00,0x00,0x00,0x00,0x20,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2310, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x80,0x80,0x00,0x00,0x00,0x00}}, +{ 0x2311, {0x00,0x00,0x00,0x00,0x88,0x70,0x50,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x2312, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2313, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2314, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x50,0x20,0x00,0x00,0x00,0x00}}, +{ 0x2315, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x88,0xA8,0x50,0xA0,0x00,0x00}}, +{ 0x2316, {0x00,0x00,0x20,0x20,0x70,0xA8,0xF8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x2317, {0x00,0x00,0x00,0x50,0x50,0xF8,0x50,0x50,0xF8,0x50,0x50,0x00,0x00}}, +{ 0x2318, {0x00,0x00,0x00,0x00,0x50,0xA8,0x70,0x20,0x70,0xA8,0x50,0x00,0x00}}, +{ 0x2319, {0x00,0x00,0x00,0x00,0x80,0x80,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x231A, {0x00,0x00,0x70,0x50,0x70,0xA8,0xB8,0x88,0x70,0x50,0x70,0x00,0x00}}, +{ 0x231B, {0x00,0x00,0x00,0xF8,0x88,0x70,0x20,0x20,0x50,0xA8,0xF8,0x00,0x00}}, +{ 0x231C, {0x00,0x00,0x00,0x00,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x231D, {0x00,0x00,0x00,0x00,0x38,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x231E, {0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xE0,0x00,0x00,0x00,0x00}}, +{ 0x231F, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x38,0x00,0x00,0x00,0x00}}, +{ 0x2320, {0x10,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2321, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x40}}, +{ 0x2322, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2323, {0x00,0x00,0x00,0x00,0x00,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2324, {0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x20,0x50,0x88,0x00,0x00,0x00}}, +{ 0x2325, {0x00,0x00,0x00,0x00,0x00,0x18,0xC0,0x20,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2326, {0x00,0x00,0x00,0x00,0xF0,0xD8,0xA4,0xD8,0xF0,0x00,0x00,0x00,0x00}}, +{ 0x2327, {0x00,0x00,0x00,0x00,0xF8,0xD8,0xA8,0xD8,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x2328, {0x00,0xFC,0x84,0xAC,0x84,0xAC,0x84,0xAC,0x84,0xAC,0x84,0xFC,0x00}}, +{ 0x2329, {0x00,0x08,0x10,0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x10,0x08,0x00}}, +{ 0x232A, {0x00,0x40,0x20,0x20,0x10,0x10,0x08,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0x232B, {0x00,0x00,0x00,0x00,0x3C,0x6C,0x94,0x6C,0x3C,0x00,0x00,0x00,0x00}}, +{ 0x232C, {0x00,0x00,0x00,0x20,0x50,0x88,0x88,0x88,0x50,0x20,0x00,0x00,0x00}}, +{ 0x232D, {0x00,0x00,0x00,0x10,0x20,0x60,0xD8,0x30,0x20,0x40,0x00,0x00,0x00}}, +{ 0x232E, {0x00,0x00,0x70,0x88,0xBC,0xA8,0x70,0x40,0xC0,0xE0,0xC0,0x00,0x00}}, +{ 0x232F, {0x00,0x00,0x00,0x00,0x70,0x00,0xF8,0x00,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2330, {0x00,0x00,0x48,0xFC,0x48,0x48,0x48,0x90,0x90,0x90,0xF0,0x00,0x00}}, +{ 0x2331, {0x00,0x00,0x00,0x40,0x40,0xA8,0xFC,0xA8,0x40,0x40,0x00,0x00,0x00}}, +{ 0x2332, {0x00,0x00,0x00,0x40,0x60,0x50,0xFC,0x50,0x60,0x40,0x00,0x00,0x00}}, +{ 0x2333, {0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xA0,0x90,0xF8,0x00,0x00}}, +{ 0x2334, {0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0xFC,0x00,0x00}}, +{ 0x2335, {0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x2336, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x2337, {0x00,0x78,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x00}}, +{ 0x2338, {0x00,0xF8,0x88,0x88,0x88,0xF8,0x88,0xF8,0x88,0x88,0x88,0xF8,0x00}}, +{ 0x2339, {0x00,0xF8,0x88,0x88,0xA8,0x88,0xF8,0x88,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x233A, {0x00,0xF8,0x88,0x88,0xA8,0xD8,0x88,0xD8,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x233B, {0x00,0xF8,0x88,0x88,0x88,0xA8,0xD8,0xA8,0x88,0x88,0x88,0xF8,0x00}}, +{ 0x233C, {0x00,0xF8,0x88,0xA8,0xD8,0x88,0x88,0x88,0xD8,0xA8,0x88,0xF8,0x00}}, +{ 0x233D, {0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x233E, {0x00,0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x233F, {0x00,0x00,0x00,0x08,0x10,0x10,0xF8,0x40,0x40,0x80,0x00,0x00,0x00}}, +{ 0x2340, {0x00,0x00,0x00,0x80,0x40,0x40,0xF8,0x10,0x10,0x08,0x00,0x00,0x00}}, +{ 0x2341, {0x00,0xF8,0x98,0x98,0x98,0xA8,0xA8,0xA8,0xC8,0xC8,0xC8,0xF8,0x00}}, +{ 0x2342, {0x00,0xF8,0xC8,0xC8,0xC8,0xA8,0xA8,0xA8,0x98,0x98,0x98,0xF8,0x00}}, +{ 0x2343, {0x00,0xF8,0x88,0x88,0x98,0xA8,0xC8,0xA8,0x98,0x88,0x88,0xF8,0x00}}, +{ 0x2344, {0x00,0xF8,0x88,0x88,0xC8,0xA8,0x98,0xA8,0xC8,0x88,0x88,0xF8,0x00}}, +{ 0x2345, {0x00,0x00,0x10,0x10,0x30,0x50,0xF8,0x50,0x30,0x10,0x10,0x00,0x00}}, +{ 0x2346, {0x00,0x00,0x40,0x40,0x60,0x50,0xF8,0x50,0x60,0x40,0x40,0x00,0x00}}, +{ 0x2347, {0x00,0xF8,0x88,0x88,0xA8,0xC8,0xF8,0xC8,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x2348, {0x00,0xF8,0x88,0x88,0xA8,0x98,0xF8,0x98,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x2349, {0x00,0x00,0x80,0x80,0x70,0xC8,0xA8,0x98,0x70,0x08,0x08,0x00,0x00}}, +{ 0x234A, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0xF8,0x00}}, +{ 0x234B, {0x00,0x00,0x20,0x20,0x20,0x20,0x70,0x70,0xA8,0xF8,0x20,0x20,0x00}}, +{ 0x234C, {0x00,0xF8,0x88,0x88,0x88,0xD8,0xD8,0xA8,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x234D, {0x00,0xF8,0x88,0x88,0xA8,0xA8,0xD8,0xD8,0xF8,0x88,0x88,0xF8,0x00}}, +{ 0x234E, {0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0x70,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x234F, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2350, {0x00,0xF8,0xA8,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x00}}, +{ 0x2351, {0x00,0x00,0xF8,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2352, {0x00,0x00,0x20,0x20,0xF8,0xA8,0x70,0x70,0x20,0x20,0x20,0x20,0x00}}, +{ 0x2353, {0x00,0xF8,0x88,0x88,0xA8,0xA8,0xD8,0xD8,0x88,0x88,0x88,0xF8,0x00}}, +{ 0x2354, {0x00,0xF8,0x88,0x88,0xF8,0xD8,0xD8,0xA8,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x2355, {0x00,0x00,0xF8,0x20,0x20,0x70,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x2356, {0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0x2357, {0x00,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0xA8,0xF8,0x00}}, +{ 0x2358, {0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00}}, +{ 0x2359, {0x00,0x00,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0xF8,0x00,0xF8,0x00}}, +{ 0x235A, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x88,0x50,0x20,0x00,0xF8,0x00}}, +{ 0x235B, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20,0x00,0x00,0x00,0xF8,0x00}}, +{ 0x235C, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00,0xF8,0x00}}, +{ 0x235D, {0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0x88,0x88,0x00,0x00}}, +{ 0x235E, {0x00,0xF8,0xA8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x00}}, +{ 0x235F, {0x00,0x00,0x00,0x70,0x88,0xA8,0xF8,0xA8,0xD8,0x88,0x70,0x00,0x00}}, +{ 0x2360, {0x00,0xF8,0x88,0x88,0x88,0xA8,0x88,0x88,0xA8,0x88,0x88,0xF8,0x00}}, +{ 0x2361, {0x00,0x50,0x50,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2362, {0x00,0x50,0x50,0x00,0xF8,0x88,0x88,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x2363, {0x00,0x50,0x50,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00}}, +{ 0x2364, {0x00,0x50,0x50,0x00,0x00,0x20,0x50,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2365, {0x00,0x50,0x50,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x00}}, +{ 0x2366, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x2367, {0x00,0x00,0x10,0x10,0x78,0x90,0x90,0x90,0x90,0x78,0x10,0x10,0x00}}, +{ 0x2368, {0x00,0x50,0x50,0x00,0x00,0x00,0x40,0xA8,0xA8,0x10,0x00,0x00,0x00}}, +{ 0x2369, {0x00,0x50,0x50,0x00,0x00,0xC0,0x30,0x08,0x30,0xC0,0x00,0x00,0x00}}, +{ 0x236A, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x30,0x20,0x40,0x00}}, +{ 0x236B, {0x00,0x00,0xF8,0x88,0x88,0x50,0x58,0xA8,0xB0,0x20,0x20,0x00,0x00}}, +{ 0x236C, {0x00,0x00,0x20,0x50,0x88,0xE8,0xB8,0x88,0x88,0x50,0x20,0x00,0x00}}, +{ 0x236D, {0x00,0x00,0x20,0x20,0x20,0x68,0xA8,0xB0,0x20,0x20,0x20,0x00,0x00}}, +{ 0x236E, {0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x30,0x20,0x40,0xF8,0x00}}, +{ 0x236F, {0x00,0xF8,0x88,0x98,0x98,0xF8,0xA8,0xF8,0xC8,0xC8,0x88,0xF8,0x00}}, +{ 0x2370, {0x00,0xF8,0x88,0xA8,0xD8,0x98,0xA8,0xA8,0x88,0xA8,0x88,0xF8,0x00}}, +{ 0x2371, {0x00,0x00,0x88,0xE8,0xB8,0x88,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2372, {0x00,0x00,0x20,0x20,0x20,0x50,0x50,0x88,0xE8,0xB8,0x88,0x00,0x00}}, +{ 0x2373, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x10,0x00,0x00}}, +{ 0x2374, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xF0,0x80,0x80}}, +{ 0x2375, {0x00,0x00,0x00,0x00,0x00,0x50,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0x2376, {0x00,0x00,0x00,0x00,0x68,0x90,0x90,0x90,0x90,0x68,0x00,0xF8,0x00}}, +{ 0x2377, {0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x80,0x88,0x70,0x00,0xF8,0x00}}, +{ 0x2378, {0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x10,0x00,0xF8,0x00}}, +{ 0x2379, {0x00,0x00,0x00,0x00,0x50,0x88,0xA8,0xA8,0xA8,0x50,0x00,0xF8,0x00}}, +{ 0x237A, {0x00,0x00,0x00,0x00,0x00,0x68,0x90,0x90,0x90,0x90,0x68,0x00,0x00}}, +{ 0x237B, {0x00,0x00,0x08,0x08,0x08,0x38,0x1C,0x90,0x50,0x20,0x00,0x00,0x00}}, +{ 0x237C, {0x00,0x00,0x60,0x60,0x40,0xC0,0xC0,0x40,0x60,0xFC,0xC0,0xE0,0x00}}, +{ 0x237D, {0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x70,0x00,0x00,0x00,0x00,0x00}}, +{ 0x237E, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0xF8,0x50,0xD8,0x00,0x00,0x00}}, +{ 0x237F, {0x00,0x00,0x20,0x20,0x70,0xF8,0xF8,0xF8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x2380, {0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x88,0x78,0x00,0x88,0x50,0x20}}, +{ 0x2381, {0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x70,0x90,0x90,0x74,0x00,0xFC}}, +{ 0x2382, {0x00,0x00,0x00,0x00,0x00,0x48,0x24,0x6C,0xB4,0xB4,0x6C,0x00,0x6C}}, +{ 0x2383, {0x00,0x00,0x00,0x00,0x00,0x20,0x94,0x30,0xD4,0x50,0xB4,0x00,0x00}}, +{ 0x2384, {0x00,0x00,0x00,0x00,0x00,0xF8,0xD4,0xD4,0xD4,0xF8,0x00,0x00,0x00}}, +{ 0x2385, {0x00,0x00,0x20,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xF8,0x20,0x00,0x00}}, +{ 0x2386, {0x00,0x00,0x00,0x20,0x50,0x88,0x24,0xF4,0x24,0x88,0x50,0x20,0x00}}, +{ 0x2387, {0x00,0x00,0x00,0x00,0x08,0x1C,0x28,0x40,0x9C,0x00,0x00,0x00,0x00}}, +{ 0x2388, {0x00,0x00,0x00,0x00,0x20,0xA8,0x70,0xA8,0x70,0xA8,0x20,0x00,0x00}}, +{ 0x2389, {0x00,0x00,0x00,0x00,0x00,0x78,0x84,0x84,0xCC,0xB4,0x78,0x00,0x00}}, +{ 0x238A, {0x00,0x00,0x00,0x00,0x78,0x84,0xFC,0xCC,0xB4,0x84,0x78,0x00,0x00}}, +{ 0x238B, {0x00,0x00,0x00,0x00,0xE8,0xC4,0xA4,0x14,0x84,0x78,0x00,0x00,0x00}}, +{ 0x238C, {0x00,0x00,0x00,0x00,0xF0,0xC8,0x00,0x50,0xA8,0x50,0x00,0x00,0x00}}, +{ 0x238D, {0x00,0x00,0x00,0x00,0x70,0x50,0x50,0x50,0x50,0xD8,0x00,0x00,0x00}}, +{ 0x238E, {0x00,0x00,0x00,0x00,0x78,0x50,0x50,0x50,0x50,0xF0,0x00,0x00,0x00}}, +{ 0x238F, {0x00,0x00,0x00,0x00,0xF8,0x20,0x50,0x88,0x50,0x20,0x00,0x00,0x00}}, +{ 0x2390, {0x00,0x00,0x00,0x00,0x20,0x50,0x88,0x50,0x20,0xF8,0x00,0x00,0x00}}, +{ 0x2391, {0x00,0x00,0x00,0x00,0xF8,0x20,0x50,0xF8,0x50,0x20,0x00,0x00,0x00}}, +{ 0x2392, {0x00,0x00,0x00,0x00,0x20,0x50,0xF8,0x50,0x20,0xF8,0x00,0x00,0x00}}, +{ 0x2393, {0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0xA8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2394, {0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x2395, {0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x00}}, +{ 0x2396, {0x00,0x00,0x00,0x00,0x78,0x70,0x70,0x60,0x60,0x40,0x00,0x00,0x00}}, +{ 0x2397, {0x00,0x00,0x78,0x48,0x28,0x48,0xF8,0x48,0x28,0x48,0x78,0x00,0x00}}, +{ 0x2398, {0x00,0x00,0xF0,0x90,0xA0,0x90,0xF8,0x90,0xA0,0x90,0xF0,0x00,0x00}}, +{ 0x2399, {0x00,0x00,0x00,0x38,0x68,0x48,0xCC,0xCC,0xCC,0xFC,0xFC,0x00,0x00}}, +{ 0x239A, {0x00,0x00,0x00,0x00,0x78,0x84,0x94,0xA4,0x84,0x78,0x00,0x00,0x00}}, +{ 0x239B, {0x00,0x10,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40}}, +{ 0x239C, {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40}}, +{ 0x239D, {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x10,0x00}}, +{ 0x239E, {0x00,0x40,0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x239F, {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x23A0, {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0x23A1, {0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40}}, +{ 0x23A2, {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40}}, +{ 0x23A3, {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00}}, +{ 0x23A4, {0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x23A5, {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10}}, +{ 0x23A6, {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00}}, +{ 0x23A7, {0x00,0x18,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x23A8, {0x20,0x20,0x20,0x20,0x20,0x20,0xC0,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x23A9, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x18,0x00}}, +{ 0x23AA, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x23AB, {0x00,0xC0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x23AC, {0x20,0x20,0x20,0x20,0x20,0x20,0x18,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x23AD, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xC0,0x00}}, +{ 0x23AE, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x23AF, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x23B0, {0x18,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xC0}}, +{ 0x23B1, {0xC0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x18}}, +{ 0x23B2, {0x00,0xFC,0x80,0x40,0x40,0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x10}}, +{ 0x23B3, {0x10,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0xFC,0x00}}, +{ 0x23B4, {0x00,0x00,0xF8,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x23B5, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xF8,0x00,0x00}}, +{ 0x23B6, {0x00,0x00,0x00,0x88,0xF8,0x00,0x00,0x00,0xF8,0x88,0x00,0x00,0x00}}, +{ 0x23B7, {0x20,0x20,0x20,0x20,0x20,0xA0,0xA0,0x60,0x60,0x20,0x20,0x00,0x00}}, +{ 0x23B8, {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}}, +{ 0x23B9, {0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04}}, +{ 0x23BA, {0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x23BB, {0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x23BC, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00}}, +{ 0x23BD, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC}}, +{ 0x23BE, {0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0x23BF, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x23C0, {0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x23C1, {0x00,0x00,0xF8,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x23C2, {0x00,0x00,0x20,0x20,0x70,0xA8,0xA8,0xA8,0x70,0x20,0xF8,0x00,0x00}}, +{ 0x23C3, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0xA8,0xF8,0x20,0x20,0x00,0x00}}, +{ 0x23C4, {0x00,0x00,0xF8,0x20,0x20,0x70,0x70,0xA8,0xF8,0x20,0x20,0x00,0x00}}, +{ 0x23C5, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0xA8,0xF8,0x20,0xF8,0x00,0x00}}, +{ 0x23C6, {0x00,0x00,0x20,0x20,0x20,0x20,0x68,0xB0,0x20,0x20,0x20,0x00,0x00}}, +{ 0x23C7, {0x00,0x00,0xF8,0x20,0x20,0x20,0x68,0xB0,0x20,0x20,0x20,0x00,0x00}}, +{ 0x23C8, {0x00,0x00,0x20,0x20,0x20,0x20,0x68,0xB0,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x23C9, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x23CA, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x23CB, {0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0x23CC, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x23CD, {0x00,0x00,0x20,0xA8,0xA8,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x23CE, {0x00,0x00,0x18,0x18,0x18,0x18,0x58,0xF8,0xF0,0x40,0x00,0x00,0x00}}, +{ 0x2400, {0x00,0x90,0xD0,0xB0,0x90,0x50,0x50,0x70,0x20,0x20,0x20,0x38,0x00}}, +{ 0x2401, {0x00,0x60,0x80,0x40,0x20,0xE0,0x50,0x50,0x20,0x28,0x38,0x28,0x00}}, +{ 0x2402, {0x00,0x60,0x80,0x40,0x20,0xC0,0x70,0x20,0x20,0x28,0x10,0x28,0x00}}, +{ 0x2403, {0x00,0xE0,0x80,0xC0,0x80,0xE0,0x70,0x20,0x20,0x28,0x10,0x28,0x00}}, +{ 0x2404, {0x00,0xE0,0x80,0xC0,0x80,0xE0,0x50,0x50,0x20,0x38,0x10,0x10,0x00}}, +{ 0x2405, {0xE0,0x80,0xC0,0x80,0xE0,0x68,0x58,0x48,0x10,0x28,0x28,0x38,0x18}}, +{ 0x2406, {0x00,0x40,0xA0,0xE0,0xA0,0x30,0x40,0x30,0x00,0x28,0x30,0x28,0x00}}, +{ 0x2407, {0xC0,0xA0,0xC0,0xA0,0xF0,0x40,0x60,0x40,0x70,0x20,0x20,0x20,0x38}}, +{ 0x2408, {0x00,0x00,0xC0,0xA0,0xC0,0xA0,0xD8,0x20,0x10,0x08,0x30,0x00,0x00}}, +{ 0x2409, {0x00,0x00,0xA0,0xA0,0xE0,0xA0,0xA0,0x38,0x10,0x10,0x10,0x00,0x00}}, +{ 0x240A, {0x00,0x00,0x80,0x80,0x80,0xE0,0x38,0x20,0x30,0x20,0x20,0x00,0x00}}, +{ 0x240B, {0x00,0x00,0xA0,0xA0,0xA0,0x40,0x40,0x38,0x10,0x10,0x10,0x00,0x00}}, +{ 0x240C, {0x00,0x00,0xE0,0x80,0xC0,0x80,0xB8,0x20,0x30,0x20,0x20,0x00,0x00}}, +{ 0x240D, {0x00,0x00,0x60,0x80,0x80,0x60,0x30,0x28,0x30,0x28,0x28,0x00,0x00}}, +{ 0x240E, {0x00,0x00,0x60,0x80,0x40,0x20,0xD0,0x28,0x28,0x28,0x10,0x00,0x00}}, +{ 0x240F, {0x00,0x00,0x60,0x80,0x40,0x20,0xF8,0x10,0x10,0x10,0x38,0x00,0x00}}, +{ 0x2410, {0xC0,0xA0,0xA0,0xC0,0x40,0x40,0x40,0x70,0x38,0x20,0x30,0x20,0x38}}, +{ 0x2411, {0xC0,0xA0,0xA0,0xC0,0x30,0x40,0x40,0x30,0x00,0x10,0x30,0x10,0x38}}, +{ 0x2412, {0xC0,0xA0,0xA0,0xC0,0x30,0x40,0x40,0x30,0x00,0x30,0x08,0x10,0x38}}, +{ 0x2413, {0xC0,0xA0,0xA0,0xC0,0x30,0x40,0x40,0x30,0x10,0x28,0x10,0x08,0x30}}, +{ 0x2414, {0xC0,0xA0,0xA0,0xC0,0x30,0x40,0x40,0x30,0x00,0x20,0x30,0x38,0x10}}, +{ 0x2415, {0x90,0xD0,0xB0,0x00,0x20,0x50,0x70,0x50,0x00,0x28,0x30,0x30,0x28}}, +{ 0x2416, {0x60,0x80,0x40,0x20,0xC0,0x50,0x50,0x20,0x20,0x48,0x68,0x58,0x48}}, +{ 0x2417, {0xE0,0x80,0xC0,0x80,0xE0,0x70,0x20,0x20,0x30,0x28,0x30,0x28,0x30}}, +{ 0x2418, {0x70,0x80,0x80,0x70,0x20,0x50,0x70,0x50,0x00,0x68,0x58,0x48,0x00}}, +{ 0x2419, {0x00,0xE0,0x80,0xC0,0x80,0xE0,0x00,0x50,0x70,0x50,0x50,0x00,0x00}}, +{ 0x241A, {0x60,0x80,0x40,0x20,0xC0,0x50,0x50,0x20,0x30,0x28,0x30,0x28,0x30}}, +{ 0x241B, {0xE0,0x80,0xC0,0x80,0xF0,0x40,0x20,0x10,0x78,0x20,0x20,0x18,0x00}}, +{ 0x241C, {0x00,0x00,0xE0,0x80,0xC0,0x80,0x98,0x20,0x10,0x08,0x30,0x00,0x00}}, +{ 0x241D, {0x00,0x70,0x80,0xB0,0x90,0x60,0x18,0x20,0x10,0x08,0x30,0x00,0x00}}, +{ 0x241E, {0x00,0xC0,0xA0,0xC0,0xA0,0xA0,0x18,0x20,0x10,0x08,0x30,0x00,0x00}}, +{ 0x241F, {0x00,0x90,0x90,0x90,0x90,0x60,0x18,0x20,0x10,0x08,0x30,0x00,0x00}}, +{ 0x2420, {0x00,0x60,0x80,0x40,0x20,0xC0,0x30,0x28,0x30,0x20,0x20,0x00,0x00}}, +{ 0x2421, {0x00,0xC0,0xA0,0xA0,0xF0,0x40,0x60,0x40,0x70,0x20,0x20,0x38,0x00}}, +{ 0x2422, {0x00,0x00,0x40,0x50,0x60,0x40,0xF0,0x48,0x48,0x48,0x70,0x00,0x00}}, +{ 0x2423, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xF8,0x00,0x00}}, +{ 0x2424, {0x00,0x00,0x90,0xD0,0xB0,0x90,0x20,0x20,0x20,0x20,0x38,0x00,0x00}}, +{ 0x2425, {0x00,0x00,0x48,0x48,0x90,0x90,0x20,0x48,0x48,0x90,0x90,0x00,0x00}}, +{ 0x2426, {0x00,0x00,0x70,0x88,0x88,0x80,0x40,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0x2440, {0x00,0x00,0x38,0x28,0x28,0x28,0x20,0xA0,0xA0,0xA0,0xE0,0x00,0x00}}, +{ 0x2441, {0x00,0x00,0x08,0x08,0x08,0x08,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x2442, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2443, {0x00,0x00,0x20,0x20,0x20,0x20,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x2444, {0x00,0x00,0xF8,0xA8,0xA8,0x20,0x20,0x20,0xA8,0xA8,0xF8,0x00,0x00}}, +{ 0x2445, {0x00,0x00,0x88,0xD8,0xA8,0xD8,0x88,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2446, {0x00,0x00,0x00,0x18,0x18,0xD8,0xC0,0xC0,0xD8,0x18,0x18,0x00,0x00}}, +{ 0x2447, {0x00,0x00,0x18,0x18,0x18,0x20,0x20,0x20,0xC0,0xC0,0xC0,0x00,0x00}}, +{ 0x2448, {0x00,0x00,0x00,0x0C,0xAC,0xAC,0xAC,0xA0,0xA0,0x00,0x00,0x00,0x00}}, +{ 0x2449, {0x00,0x00,0x00,0x00,0xA8,0xA8,0xA8,0xA8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x244A, {0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0x2460, {0x00,0x00,0x70,0x88,0xA8,0xE8,0xA8,0xA8,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x2461, {0x00,0x00,0x70,0x88,0xA8,0xD8,0x98,0xA8,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x2462, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0x98,0xE8,0x88,0x70,0x00,0x00}}, +{ 0x2463, {0x00,0x00,0x70,0x88,0xC8,0xC8,0xE8,0xF8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2464, {0x00,0x00,0x70,0x88,0xF8,0xC8,0xE8,0x98,0xE8,0x88,0x70,0x00,0x00}}, +{ 0x2465, {0x00,0x00,0x70,0x88,0xB8,0xC8,0xE8,0xD8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2466, {0x00,0x00,0x70,0x88,0xF8,0x98,0xA8,0xA8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2467, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0xD8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2468, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xB8,0x98,0xE8,0x88,0x70,0x00,0x00}}, +{ 0x2469, {0x00,0x00,0x78,0x84,0xD4,0xEC,0xEC,0xEC,0xD4,0x84,0x78,0x00,0x00}}, +{ 0x246A, {0x00,0x00,0x78,0x84,0xD4,0xD4,0xD4,0xD4,0xD4,0x84,0x78,0x00,0x00}}, +{ 0x246B, {0x00,0x00,0x78,0x84,0xD4,0xCC,0xCC,0xD4,0xDC,0x84,0x78,0x00,0x00}}, +{ 0x246C, {0x00,0x00,0x78,0x84,0xD4,0xCC,0xD4,0xCC,0xD4,0x84,0x78,0x00,0x00}}, +{ 0x246D, {0x00,0x00,0x78,0x84,0xD4,0xD4,0xDC,0xDC,0xCC,0x84,0x78,0x00,0x00}}, +{ 0x246E, {0x00,0x00,0x78,0x84,0xDC,0xD4,0xDC,0xCC,0xDC,0x84,0x78,0x00,0x00}}, +{ 0x246F, {0x00,0x00,0x78,0x84,0xD4,0xD4,0xDC,0xD4,0xCC,0x84,0x78,0x00,0x00}}, +{ 0x2470, {0x00,0x00,0x78,0x84,0xDC,0xCC,0xD4,0xD4,0xD4,0x84,0x78,0x00,0x00}}, +{ 0x2471, {0x00,0x00,0x78,0x84,0xCC,0xD4,0xCC,0xD4,0xCC,0x84,0x78,0x00,0x00}}, +{ 0x2472, {0x00,0x00,0x78,0x84,0xCC,0xD4,0xCC,0xC4,0xDC,0x84,0x78,0x00,0x00}}, +{ 0x2473, {0x00,0x00,0x78,0x84,0xFC,0xB4,0xB4,0xD4,0xFC,0x84,0x78,0x00,0x00}}, +{ 0x2474, {0x00,0x00,0x50,0x88,0xA8,0xE8,0xA8,0xA8,0xF8,0x88,0x50,0x00,0x00}}, +{ 0x2475, {0x00,0x00,0x50,0x88,0xA8,0xD8,0x98,0xA8,0xF8,0x88,0x50,0x00,0x00}}, +{ 0x2476, {0x00,0x00,0x50,0x88,0xA8,0xD8,0xA8,0x98,0xE8,0x88,0x50,0x00,0x00}}, +{ 0x2477, {0x00,0x00,0x50,0x88,0xC8,0xC8,0xE8,0xF8,0xA8,0x88,0x50,0x00,0x00}}, +{ 0x2478, {0x00,0x00,0x50,0x88,0xF8,0xC8,0xE8,0x98,0xE8,0x88,0x50,0x00,0x00}}, +{ 0x2479, {0x00,0x00,0x50,0x88,0xB8,0xC8,0xE8,0xD8,0xA8,0x88,0x50,0x00,0x00}}, +{ 0x247A, {0x00,0x00,0x50,0x88,0xF8,0x98,0xA8,0xA8,0xA8,0x88,0x50,0x00,0x00}}, +{ 0x247B, {0x00,0x00,0x50,0x88,0xA8,0xD8,0xA8,0xD8,0xA8,0x88,0x50,0x00,0x00}}, +{ 0x247C, {0x00,0x00,0x50,0x88,0xA8,0xD8,0xB8,0x98,0xE8,0x88,0x50,0x00,0x00}}, +{ 0x247D, {0x00,0x00,0x48,0x84,0xD4,0xEC,0xEC,0xEC,0xD4,0x84,0x48,0x00,0x00}}, +{ 0x247E, {0x00,0x00,0x48,0x84,0xD4,0xD4,0xD4,0xD4,0xD4,0x84,0x48,0x00,0x00}}, +{ 0x247F, {0x00,0x00,0x48,0x84,0xD4,0xCC,0xCC,0xD4,0xDC,0x84,0x48,0x00,0x00}}, +{ 0x2480, {0x00,0x00,0x48,0x84,0xD4,0xCC,0xD4,0xCC,0xD4,0x84,0x48,0x00,0x00}}, +{ 0x2481, {0x00,0x00,0x48,0x84,0xD4,0xD4,0xDC,0xDC,0xCC,0x84,0x48,0x00,0x00}}, +{ 0x2482, {0x00,0x00,0x48,0x84,0xDC,0xD4,0xDC,0xCC,0xDC,0x84,0x48,0x00,0x00}}, +{ 0x2483, {0x00,0x00,0x48,0x84,0xD4,0xD4,0xDC,0xD4,0xCC,0x84,0x48,0x00,0x00}}, +{ 0x2484, {0x00,0x00,0x48,0x84,0xDC,0xCC,0xD4,0xD4,0xD4,0x84,0x48,0x00,0x00}}, +{ 0x2485, {0x00,0x00,0x48,0x84,0xCC,0xD4,0xCC,0xD4,0xCC,0x84,0x48,0x00,0x00}}, +{ 0x2486, {0x00,0x00,0x48,0x84,0xCC,0xD4,0xCC,0xC4,0xDC,0x84,0x48,0x00,0x00}}, +{ 0x24EA, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xD8,0xD8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2500, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2501, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2502, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2503, {0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2504, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2505, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2506, {0x00,0x20,0x20,0x00,0x00,0x20,0x20,0x00,0x00,0x20,0x20,0x00,0x00}}, +{ 0x2507, {0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00}}, +{ 0x2508, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2509, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x250A, {0x20,0x20,0x00,0x20,0x20,0x00,0x20,0x20,0x00,0x20,0x20,0x00,0x00}}, +{ 0x250B, {0x30,0x30,0x00,0x30,0x30,0x00,0x30,0x30,0x00,0x30,0x30,0x00,0x00}}, +{ 0x250C, {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x250D, {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x250E, {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x250F, {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2510, {0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2511, {0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2512, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2513, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2514, {0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2515, {0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2516, {0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2517, {0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2518, {0x20,0x20,0x20,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2519, {0x20,0x20,0x20,0x20,0x20,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x251A, {0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x251B, {0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x251C, {0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x251D, {0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x251E, {0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x251F, {0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2520, {0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2521, {0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2522, {0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x3C,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2523, {0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x3C,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2524, {0x20,0x20,0x20,0x20,0x20,0x20,0xE0,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2525, {0x20,0x20,0x20,0x20,0x20,0x20,0xE0,0xE0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2526, {0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2527, {0x20,0x20,0x20,0x20,0x20,0x20,0xF0,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2528, {0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2529, {0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0xF0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x252A, {0x20,0x20,0x20,0x20,0x20,0x20,0xF0,0xF0,0x30,0x30,0x30,0x30,0x30}}, +{ 0x252B, {0x30,0x30,0x30,0x30,0x30,0x30,0xF0,0xF0,0x30,0x30,0x30,0x30,0x30}}, +{ 0x252C, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x252D, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xE0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x252E, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x252F, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2530, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2531, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xF0,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2532, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3C,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2533, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2534, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2535, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0xE0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2536, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0x3C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2537, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2538, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2539, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0xF0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x253A, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x3C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x253B, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x253C, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x253D, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0xE0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x253E, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x253F, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0xFC,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2540, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2541, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2542, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2543, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0xF0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2544, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2545, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0xF0,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2546, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0x3C,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2547, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0xFC,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2548, {0x20,0x20,0x20,0x20,0x20,0x20,0xFC,0xFC,0x30,0x30,0x30,0x30,0x30}}, +{ 0x2549, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0xF0,0x30,0x30,0x30,0x30,0x30}}, +{ 0x254A, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0x3C,0x30,0x30,0x30,0x30,0x30}}, +{ 0x254B, {0x30,0x30,0x30,0x30,0x30,0x30,0xFC,0xFC,0x30,0x30,0x30,0x30,0x30}}, +{ 0x254C, {0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x254D, {0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x254E, {0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x254F, {0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x00,0x00}}, +{ 0x2550, {0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2551, {0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2552, {0x00,0x00,0x00,0x00,0x00,0x3C,0x20,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2553, {0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2554, {0x00,0x00,0x00,0x00,0x00,0x7C,0x40,0x5C,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2555, {0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0xE0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2556, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2557, {0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0xD0,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2558, {0x20,0x20,0x20,0x20,0x20,0x3C,0x20,0x3C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2559, {0x50,0x50,0x50,0x50,0x50,0x50,0x7C,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x255A, {0x50,0x50,0x50,0x50,0x50,0x5C,0x40,0x7C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x255B, {0x20,0x20,0x20,0x20,0x20,0xE0,0x20,0xE0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x255C, {0x50,0x50,0x50,0x50,0x50,0x50,0xF0,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x255D, {0x50,0x50,0x50,0x50,0x50,0xD0,0x10,0xF0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x255E, {0x20,0x20,0x20,0x20,0x20,0x3C,0x20,0x3C,0x20,0x20,0x20,0x20,0x20}}, +{ 0x255F, {0x50,0x50,0x50,0x50,0x50,0x50,0x5C,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2560, {0x50,0x50,0x50,0x50,0x50,0x5C,0x40,0x5C,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2561, {0x20,0x20,0x20,0x20,0x20,0xE0,0x20,0xE0,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2562, {0x50,0x50,0x50,0x50,0x50,0x50,0xD0,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2563, {0x50,0x50,0x50,0x50,0x50,0xD0,0x10,0xD0,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2564, {0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xFC,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2565, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2566, {0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0xDC,0x50,0x50,0x50,0x50,0x50}}, +{ 0x2567, {0x20,0x20,0x20,0x20,0x20,0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2568, {0x50,0x50,0x50,0x50,0x50,0x50,0xFC,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2569, {0x50,0x50,0x50,0x50,0x50,0xDC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x256A, {0x20,0x20,0x20,0x20,0x20,0xFC,0x20,0xFC,0x20,0x20,0x20,0x20,0x20}}, +{ 0x256B, {0x50,0x50,0x50,0x50,0x50,0x50,0xFC,0x50,0x50,0x50,0x50,0x50,0x50}}, +{ 0x256C, {0x50,0x50,0x50,0x50,0x50,0xDC,0x00,0xDC,0x50,0x50,0x50,0x50,0x50}}, +{ 0x256D, {0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x10,0x20,0x20,0x20,0x20,0x20}}, +{ 0x256E, {0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x20,0x20,0x20,0x20}}, +{ 0x256F, {0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2570, {0x20,0x20,0x20,0x20,0x20,0x10,0x0C,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2571, {0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x80,0x80}}, +{ 0x2572, {0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x08,0x04,0x04}}, +{ 0x2573, {0x84,0x84,0x48,0x48,0x30,0x30,0x30,0x30,0x30,0x48,0x48,0x84,0x84}}, +{ 0x2574, {0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2575, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2576, {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2577, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2578, {0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2579, {0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x257A, {0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x257B, {0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x257C, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1C,0x00,0x00,0x00,0x00,0x00}}, +{ 0x257D, {0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x30,0x30,0x30,0x30,0x30,0x30}}, +{ 0x257E, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xE0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x257F, {0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0x2580, {0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2581, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC}}, +{ 0x2582, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC}}, +{ 0x2583, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x2584, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x2585, {0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x2586, {0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x2587, {0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x2588, {0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x2589, {0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8}}, +{ 0x258A, {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0}}, +{ 0x258B, {0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0}}, +{ 0x258C, {0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0}}, +{ 0x258D, {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0}}, +{ 0x258E, {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0}}, +{ 0x258F, {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}}, +{ 0x2590, {0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C}}, +{ 0x2591, {0xA8,0x00,0x54,0x00,0xA8,0x00,0x54,0x00,0xA8,0x00,0x54,0x00,0xA8}}, +{ 0x2592, {0xA8,0x54,0xA8,0x54,0xA8,0x54,0xA8,0x54,0xA8,0x54,0xA8,0x54,0xA8}}, +{ 0x2593, {0x54,0xFC,0xA8,0xFC,0x54,0xFC,0xA8,0xFC,0x54,0xFC,0xA8,0xFC,0x54}}, +{ 0x2594, {0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2595, {0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04}}, +{ 0x2596, {0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0}}, +{ 0x2597, {0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C}}, +{ 0x2598, {0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2599, {0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x259A, {0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C}}, +{ 0x259B, {0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0}}, +{ 0x259C, {0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C}}, +{ 0x259D, {0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x259E, {0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0}}, +{ 0x259F, {0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x25A0, {0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,0x00}}, +{ 0x25A1, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x25A2, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x25A3, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0xA8,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x25A4, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0xF8,0x88,0xF8,0x00,0x00}}, +{ 0x25A5, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xA8,0xA8,0xF8,0x00,0x00}}, +{ 0x25A6, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xF8,0xA8,0xF8,0x00,0x00}}, +{ 0x25A7, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xC8,0xA8,0x98,0xF8,0x00,0x00}}, +{ 0x25A8, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x98,0xA8,0xC8,0xF8,0x00,0x00}}, +{ 0x25A9, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xD8,0xA8,0xD8,0xF8,0x00,0x00}}, +{ 0x25AA, {0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25AB, {0x00,0x00,0x00,0x00,0x00,0x70,0x50,0x70,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25AC, {0x00,0x00,0x00,0x00,0xFC,0xFC,0xFC,0xFC,0xFC,0x00,0x00,0x00,0x00}}, +{ 0x25AD, {0x00,0x00,0x00,0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x00,0x00,0x00}}, +{ 0x25AE, {0x00,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x00}}, +{ 0x25AF, {0x00,0x78,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x00}}, +{ 0x25B0, {0x00,0x00,0x00,0x00,0x00,0x3C,0x78,0xF0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25B1, {0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0xF0,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25B2, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0x70,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x25B3, {0x00,0x00,0x20,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x25B4, {0x00,0x00,0x00,0x00,0x20,0x20,0x70,0x70,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x25B5, {0x00,0x00,0x00,0x00,0x20,0x20,0x50,0x50,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x25B6, {0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00}}, +{ 0x25B7, {0x00,0x00,0x80,0xC0,0xA0,0x90,0x88,0x90,0xA0,0xC0,0x80,0x00,0x00}}, +{ 0x25B8, {0x00,0x00,0x00,0x00,0x40,0x60,0x70,0x60,0x40,0x00,0x00,0x00,0x00}}, +{ 0x25B9, {0x00,0x00,0x00,0x00,0x40,0x60,0x50,0x60,0x40,0x00,0x00,0x00,0x00}}, +{ 0x25BA, {0x00,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xF0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x25BB, {0x00,0x00,0x00,0x00,0xC0,0xB0,0x8C,0xB0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x25BC, {0x00,0x00,0xF8,0xF8,0xF8,0x70,0x70,0x70,0x20,0x20,0x20,0x00,0x00}}, +{ 0x25BD, {0x00,0x00,0xF8,0x88,0x88,0x50,0x50,0x50,0x20,0x20,0x20,0x00,0x00}}, +{ 0x25BE, {0x00,0x00,0x00,0x00,0x00,0xF8,0x70,0x70,0x20,0x20,0x00,0x00,0x00}}, +{ 0x25BF, {0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x20,0x20,0x00,0x00,0x00}}, +{ 0x25C0, {0x00,0x00,0x08,0x18,0x38,0x78,0xF8,0x78,0x38,0x18,0x08,0x00,0x00}}, +{ 0x25C1, {0x00,0x00,0x08,0x18,0x28,0x48,0x88,0x48,0x28,0x18,0x08,0x00,0x00}}, +{ 0x25C2, {0x00,0x00,0x00,0x00,0x10,0x30,0x70,0x30,0x10,0x00,0x00,0x00,0x00}}, +{ 0x25C3, {0x00,0x00,0x00,0x00,0x10,0x30,0x50,0x30,0x10,0x00,0x00,0x00,0x00}}, +{ 0x25C4, {0x00,0x00,0x00,0x00,0x0C,0x3C,0xFC,0x3C,0x0C,0x00,0x00,0x00,0x00}}, +{ 0x25C5, {0x00,0x00,0x00,0x00,0x0C,0x34,0xC4,0x34,0x0C,0x00,0x00,0x00,0x00}}, +{ 0x25C6, {0x00,0x00,0x00,0x00,0x20,0x70,0xF8,0x70,0x20,0x00,0x00,0x00,0x00}}, +{ 0x25C7, {0x00,0x00,0x00,0x00,0x20,0x50,0x88,0x50,0x20,0x00,0x00,0x00,0x00}}, +{ 0x25C8, {0x00,0x00,0x00,0x00,0x20,0x50,0xA8,0x50,0x20,0x00,0x00,0x00,0x00}}, +{ 0x25C9, {0x00,0x00,0x00,0x00,0x30,0x48,0xB4,0xB4,0x48,0x30,0x00,0x00,0x00}}, +{ 0x25CA, {0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0x25CB, {0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x25CC, {0x00,0x00,0x00,0x00,0x20,0x08,0x80,0x04,0x40,0x10,0x00,0x00,0x00}}, +{ 0x25CD, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xA8,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x25CE, {0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x25CF, {0x00,0x00,0x00,0x00,0x30,0x78,0xFC,0xFC,0x78,0x30,0x00,0x00,0x00}}, +{ 0x25D0, {0x00,0x00,0x00,0x00,0x30,0x68,0xE4,0xE4,0x68,0x30,0x00,0x00,0x00}}, +{ 0x25D1, {0x00,0x00,0x00,0x00,0x30,0x58,0x9C,0x9C,0x58,0x30,0x00,0x00,0x00}}, +{ 0x25D2, {0x00,0x00,0x00,0x00,0x30,0x48,0x84,0xFC,0x78,0x30,0x00,0x00,0x00}}, +{ 0x25D3, {0x00,0x00,0x00,0x00,0x30,0x78,0xFC,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x25D4, {0x00,0x00,0x00,0x00,0x30,0x58,0x9C,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x25D5, {0x00,0x00,0x00,0x00,0x30,0x58,0x9C,0xFC,0x78,0x30,0x00,0x00,0x00}}, +{ 0x25D6, {0x00,0x04,0x1C,0x3C,0x3C,0x7C,0x7C,0x3C,0x3C,0x1C,0x04,0x00,0x00}}, +{ 0x25D7, {0x00,0x80,0xE0,0xF0,0xF0,0xF8,0xF8,0xF0,0xF0,0xE0,0x80,0x00,0x00}}, +{ 0x25D8, {0xFC,0xFC,0xFC,0xFC,0xFC,0xCC,0x84,0x84,0xCC,0xFC,0xFC,0xFC,0xFC}}, +{ 0x25D9, {0xFC,0xFC,0xFC,0xFC,0xCC,0xB4,0x78,0x78,0xB4,0xCC,0xFC,0xFC,0xFC}}, +{ 0x25DA, {0xFC,0xFC,0xFC,0xFC,0xCC,0xB4,0x78,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25DB, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xB4,0xCC,0xFC,0xFC,0xFC}}, +{ 0x25DC, {0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25DD, {0x00,0x00,0x00,0x00,0x10,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25DE, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08,0x10,0x00,0x00,0x00}}, +{ 0x25DF, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x00,0x00,0x00}}, +{ 0x25E0, {0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x25E1, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x25E2, {0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x38,0x78,0xF8,0x00,0x00,0x00}}, +{ 0x25E3, {0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0x00,0x00,0x00}}, +{ 0x25E4, {0x00,0x00,0x00,0x00,0x00,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00}}, +{ 0x25E5, {0x00,0x00,0x00,0x00,0x00,0xF8,0x78,0x38,0x18,0x08,0x00,0x00,0x00}}, +{ 0x25E6, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00,0x00,0x00}}, +{ 0x25E7, {0x00,0x00,0x00,0x00,0x00,0xF8,0xE8,0xE8,0xE8,0xF8,0x00,0x00,0x00}}, +{ 0x25E8, {0x00,0x00,0x00,0x00,0x00,0xF8,0xB8,0xB8,0xB8,0xF8,0x00,0x00,0x00}}, +{ 0x25E9, {0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xE8,0xC8,0xF8,0x00,0x00,0x00}}, +{ 0x25EA, {0x00,0x00,0x00,0x00,0x00,0xF8,0x98,0xB8,0xF8,0xF8,0x00,0x00,0x00}}, +{ 0x25EB, {0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xA8,0xA8,0xF8,0x00,0x00,0x00}}, +{ 0x25EC, {0x00,0x00,0x20,0x20,0x20,0x50,0x50,0x70,0xA8,0x88,0xF8,0x00,0x00}}, +{ 0x25ED, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0x70,0xE8,0xE8,0xF8,0x00,0x00}}, +{ 0x25EE, {0x00,0x00,0x20,0x20,0x20,0x70,0x70,0x70,0xB8,0xB8,0xF8,0x00,0x00}}, +{ 0x25EF, {0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x00}}, +{ 0x25F0, {0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xE8,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x25F1, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0xE8,0xA8,0xF8,0x00,0x00,0x00}}, +{ 0x25F2, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0xB8,0xA8,0xF8,0x00,0x00,0x00}}, +{ 0x25F3, {0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xB8,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x25F4, {0x00,0x00,0x00,0x00,0x00,0x70,0xA8,0xE8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x25F5, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xE8,0xA8,0x70,0x00,0x00,0x00}}, +{ 0x25F6, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xB8,0xA8,0x70,0x00,0x00,0x00}}, +{ 0x25F7, {0x00,0x00,0x00,0x00,0x00,0x70,0xA8,0xB8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x25F8, {0x00,0x00,0x00,0x00,0x00,0xF8,0x90,0xA0,0xC0,0x80,0x00,0x00,0x00}}, +{ 0x25F9, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x28,0x18,0x08,0x00,0x00,0x00}}, +{ 0x25FA, {0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xA0,0x90,0xF8,0x00,0x00,0x00}}, +{ 0x25FB, {0x00,0x00,0x00,0x00,0x00,0x78,0x48,0x48,0x78,0x00,0x00,0x00,0x00}}, +{ 0x25FC, {0x00,0x00,0x00,0x00,0x00,0x78,0x78,0x78,0x78,0x00,0x00,0x00,0x00}}, +{ 0x25FD, {0x00,0x00,0x00,0x00,0x00,0x78,0x48,0x48,0x78,0x00,0x00,0x00,0x00}}, +{ 0x25FE, {0x00,0x00,0x00,0x00,0x00,0x78,0x78,0x78,0x78,0x00,0x00,0x00,0x00}}, +{ 0x25FF, {0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x28,0x48,0xF8,0x00,0x00,0x00}}, +{ 0x2600, {0x00,0x00,0x20,0x20,0x88,0x20,0x70,0x20,0x88,0x20,0x20,0x00,0x00}}, +{ 0x2601, {0x00,0x00,0x00,0x00,0x00,0x60,0xF8,0xFC,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2602, {0x00,0x00,0x20,0x70,0xF8,0xF8,0x20,0x20,0x20,0x20,0x40,0x00,0x00}}, +{ 0x2603, {0xA0,0x20,0x74,0x50,0xA8,0x50,0x54,0x70,0x88,0x88,0x70,0x00,0x00}}, +{ 0x2604, {0x00,0x08,0x48,0x50,0x54,0x44,0x08,0x60,0x90,0x90,0x60,0x00,0x00}}, +{ 0x2605, {0x00,0x00,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x2606, {0x00,0x00,0x00,0x20,0x20,0xF8,0x50,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x2607, {0x00,0x00,0x08,0x10,0x20,0x40,0x80,0x40,0x28,0x18,0x38,0x00,0x00}}, +{ 0x2608, {0x00,0x00,0xF8,0x88,0x90,0x90,0xA0,0xA0,0x98,0x98,0xB8,0x00,0x00}}, +{ 0x2609, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xA8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x260A, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x50,0x50,0xA8,0x50,0x00,0x00}}, +{ 0x260B, {0x00,0x00,0x00,0x00,0x50,0xA8,0x50,0x50,0x88,0x88,0x70,0x00,0x00}}, +{ 0x260C, {0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x70,0x90,0x90,0x60,0x00,0x00}}, +{ 0x260D, {0x00,0x00,0x30,0x48,0x48,0x30,0x20,0x60,0x90,0x90,0x60,0x00,0x00}}, +{ 0x260E, {0x00,0x00,0x00,0x00,0x70,0xF8,0xA8,0x70,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x260F, {0x00,0x00,0x00,0x00,0x70,0xA8,0xA8,0x70,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x2610, {0x00,0x00,0xFC,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xFC,0x00,0x00}}, +{ 0x2611, {0x00,0x00,0xFC,0x84,0x8C,0x8C,0x94,0x94,0xD4,0xA4,0xFC,0x00,0x00}}, +{ 0x2612, {0x00,0x00,0xFC,0xCC,0xCC,0xB4,0xB4,0xB4,0xCC,0xCC,0xFC,0x00,0x00}}, +{ 0x2613, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0x2616, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x2617, {0x00,0x00,0x20,0x70,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x2619, {0x00,0x00,0x00,0x08,0x24,0x74,0xF8,0xE8,0xF4,0x74,0x28,0x00,0x00}}, +{ 0x261A, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7C,0x7C,0x3C,0x00,0x00,0x00}}, +{ 0x261B, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xF8,0xF8,0xF0,0x00,0x00,0x00}}, +{ 0x261C, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x4C,0x4C,0x3C,0x00,0x00,0x00}}, +{ 0x261D, {0x00,0x00,0x08,0x08,0x18,0x78,0x68,0x48,0x48,0x78,0x78,0x00,0x00}}, +{ 0x261E, {0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xC8,0xC8,0xF0,0x00,0x00,0x00}}, +{ 0x261F, {0x00,0x00,0x78,0x78,0x48,0x48,0x68,0x78,0x18,0x08,0x08,0x00,0x00}}, +{ 0x2620, {0x00,0x00,0x70,0xA8,0xF8,0x50,0x70,0x20,0x88,0x70,0x88,0x00,0x00}}, +{ 0x2621, {0x00,0x00,0xF0,0x08,0x08,0x10,0x20,0x40,0x80,0x80,0x78,0x00,0x00}}, +{ 0x2622, {0x00,0x00,0x00,0x00,0x70,0xD8,0xD8,0xA8,0xA8,0x70,0x00,0x00,0x00}}, +{ 0x2623, {0x00,0x00,0x00,0x00,0x50,0xA8,0x50,0x50,0x20,0x70,0x00,0x00,0x00}}, +{ 0x2624, {0x00,0x00,0x20,0x50,0xF8,0x50,0x70,0x50,0x70,0x50,0x20,0x00,0x00}}, +{ 0x2625, {0x00,0x00,0x20,0x50,0x50,0x20,0xF8,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2626, {0x00,0x00,0x20,0x70,0x20,0xF8,0x20,0x60,0x30,0x20,0x20,0x00,0x00}}, +{ 0x2627, {0x00,0x00,0x30,0x28,0x28,0x30,0xA8,0x70,0x20,0x70,0xA8,0x00,0x00}}, +{ 0x2628, {0x00,0x00,0x20,0x70,0x20,0xF8,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2629, {0x00,0x00,0x00,0x70,0x20,0xA8,0xF8,0xA8,0x20,0x70,0x00,0x00,0x00}}, +{ 0x262A, {0x00,0x00,0x78,0xE4,0xC8,0xDC,0xC8,0xD4,0xC0,0xE4,0x78,0x00,0x00}}, +{ 0x262B, {0xA8,0x50,0x00,0x20,0xA8,0xA8,0xA8,0xA8,0xA8,0x70,0x70,0x00,0x00}}, +{ 0x262C, {0x00,0x00,0x20,0x70,0xA8,0xF8,0xA8,0xF8,0xA8,0x70,0xA8,0x00,0x00}}, +{ 0x262D, {0x00,0x00,0x70,0x88,0x28,0x68,0xC8,0xA8,0x18,0x48,0xB4,0x00,0x00}}, +{ 0x262E, {0x00,0x00,0x70,0xA8,0xA8,0xA8,0xA8,0xF8,0xA8,0xA8,0x70,0x00,0x00}}, +{ 0x262F, {0x00,0x00,0x00,0x00,0x00,0x78,0x84,0xEC,0xA4,0xFC,0x78,0x00,0x00}}, +{ 0x2630, {0x00,0x00,0x00,0xF8,0xF8,0x00,0xF8,0xF8,0x00,0xF8,0xF8,0x00,0x00}}, +{ 0x2631, {0x00,0x00,0x00,0xD8,0xD8,0x00,0xF8,0xF8,0x00,0xF8,0xF8,0x00,0x00}}, +{ 0x2632, {0x00,0x00,0x00,0xF8,0xF8,0x00,0xD8,0xD8,0x00,0xF8,0xF8,0x00,0x00}}, +{ 0x2633, {0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xF8,0xF8,0x00,0x00}}, +{ 0x2634, {0x00,0x00,0x00,0xF8,0xF8,0x00,0xF8,0xF8,0x00,0xD8,0xD8,0x00,0x00}}, +{ 0x2635, {0x00,0x00,0x00,0xD8,0xD8,0x00,0xF8,0xF8,0x00,0xD8,0xD8,0x00,0x00}}, +{ 0x2636, {0x00,0x00,0x00,0xF8,0xF8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00}}, +{ 0x2637, {0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00}}, +{ 0x2638, {0x00,0x00,0x00,0x00,0x20,0xA8,0x70,0xD8,0x70,0xA8,0x20,0x00,0x00}}, +{ 0x2639, {0x00,0x00,0x78,0x84,0xCC,0x84,0xB4,0x84,0xB4,0xCC,0x84,0x78,0x00}}, +{ 0x263A, {0x00,0x00,0x78,0x84,0xCC,0x84,0xB4,0x84,0xCC,0xB4,0x84,0x78,0x00}}, +{ 0x263B, {0x00,0x00,0x78,0xFC,0xB4,0xFC,0xCC,0xFC,0xB4,0xCC,0x78,0x00,0x00}}, +{ 0x263C, {0x00,0x00,0x20,0x20,0x88,0x20,0x50,0x20,0x88,0x20,0x20,0x00,0x00}}, +{ 0x263D, {0x00,0x00,0x70,0xC8,0x28,0x28,0x28,0x28,0x28,0xC8,0x70,0x00,0x00}}, +{ 0x263E, {0x00,0x00,0x70,0x98,0xA0,0xA0,0xA0,0xA0,0xA0,0x98,0x70,0x00,0x00}}, +{ 0x263F, {0x00,0x00,0x88,0x70,0x88,0x88,0x88,0x70,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2640, {0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2641, {0x00,0x00,0x00,0x20,0x70,0x20,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x2642, {0x00,0x00,0x00,0x00,0x1C,0x0C,0x74,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0x2643, {0x00,0x00,0x08,0x48,0xA8,0x28,0x28,0x48,0xF8,0x08,0x08,0x00,0x00}}, +{ 0x2644, {0x00,0x00,0x40,0xE0,0x40,0x50,0x68,0x48,0x48,0x50,0x50,0x00,0x00}}, +{ 0x2645, {0x00,0x00,0x88,0xA8,0xA8,0xF8,0xA8,0xA8,0xA8,0x20,0x50,0x20,0x00}}, +{ 0x2646, {0x00,0x00,0xA8,0xFC,0xA8,0xA8,0xA8,0x70,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2647, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x2648, {0x00,0x00,0x50,0xA8,0xA8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2649, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x50,0x20,0x50,0x20,0x00,0x00}}, +{ 0x264A, {0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x50,0xF8,0x00,0x00}}, +{ 0x264B, {0x00,0x00,0x00,0x30,0x48,0xA0,0x40,0x10,0x28,0x90,0x60,0x00,0x00}}, +{ 0x264C, {0x00,0x00,0x00,0x70,0x88,0x88,0x48,0x28,0x68,0xA8,0x48,0x04,0x00}}, +{ 0x264D, {0x00,0x00,0xAC,0xFC,0xAC,0xAC,0xAC,0xAC,0xA8,0xA8,0xA8,0x18,0x28}}, +{ 0x264E, {0x00,0x00,0x00,0x00,0x70,0x88,0x50,0x50,0xD8,0x00,0xF8,0x00,0x00}}, +{ 0x264F, {0x00,0x00,0xA8,0xF8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0xA8,0x0C,0x00}}, +{ 0x2650, {0x00,0x00,0x00,0x00,0x00,0x38,0x18,0xA8,0x40,0xA0,0x00,0x00,0x00}}, +{ 0x2651, {0x00,0x00,0x00,0x80,0x90,0xA8,0xB0,0xC8,0x88,0x08,0x30,0x00,0x00}}, +{ 0x2652, {0x00,0x00,0x00,0x00,0x00,0x54,0xA8,0x00,0x00,0x54,0xA8,0x00,0x00}}, +{ 0x2653, {0x00,0x00,0x88,0x50,0x50,0x50,0xF8,0x50,0x50,0x50,0x88,0x00,0x00}}, +{ 0x2654, {0x20,0x70,0x70,0xA8,0xF8,0x88,0x50,0x50,0xF8,0x88,0xF8,0x00,0x00}}, +{ 0x2655, {0x00,0xA8,0xF8,0x88,0xF8,0x50,0x50,0x88,0xF8,0x88,0xF8,0x00,0x00}}, +{ 0x2656, {0x00,0x00,0x00,0xA8,0xF8,0x88,0x50,0x50,0x50,0x88,0xF8,0x00,0x00}}, +{ 0x2657, {0x00,0x20,0x50,0x70,0xD8,0x88,0x50,0x50,0x70,0x88,0xF8,0x00,0x00}}, +{ 0x2658, {0x00,0x00,0x10,0x38,0x68,0x88,0xE8,0x28,0x38,0x48,0x78,0x00,0x00}}, +{ 0x2659, {0x00,0x00,0x00,0x20,0x50,0x20,0x50,0x50,0x70,0x88,0xF8,0x00,0x00}}, +{ 0x265A, {0x20,0x70,0x70,0xA8,0xF8,0xF8,0x70,0x70,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x265B, {0x00,0xA8,0xF8,0xF8,0xF8,0x70,0x70,0xF8,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x265C, {0x00,0x00,0x00,0xA8,0xF8,0xF8,0x70,0x70,0x70,0xF8,0xF8,0x00,0x00}}, +{ 0x265D, {0x00,0x20,0x70,0x70,0xD8,0x88,0x50,0x50,0x70,0xF8,0xF8,0x00,0x00}}, +{ 0x265E, {0x00,0x00,0x10,0x38,0x58,0xF8,0xF8,0x38,0x38,0x78,0x78,0x00,0x00}}, +{ 0x265F, {0x00,0x00,0x00,0x20,0x70,0x20,0x70,0x70,0x70,0xF8,0xF8,0x00,0x00}}, +{ 0x2660, {0x00,0x00,0x00,0x20,0x20,0x70,0x70,0xF8,0xF8,0x20,0x70,0x00,0x00}}, +{ 0x2661, {0x00,0x00,0x00,0x00,0x50,0xA8,0xA8,0x88,0x50,0x20,0x20,0x00,0x00}}, +{ 0x2662, {0x00,0x00,0x00,0x00,0x20,0x50,0x50,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0x2663, {0x00,0x00,0x20,0x70,0x20,0xA8,0xF8,0xF8,0xA8,0x20,0x70,0x00,0x00}}, +{ 0x2664, {0x00,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0xF8,0x20,0x70,0x00,0x00}}, +{ 0x2665, {0x00,0x00,0x00,0x00,0x50,0xF8,0xF8,0xF8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x2666, {0x00,0x00,0x00,0x00,0x20,0x70,0x70,0xF8,0x70,0x70,0x20,0x00,0x00}}, +{ 0x2667, {0x00,0x00,0x00,0x20,0x50,0x20,0x70,0xA8,0x70,0x20,0x70,0x00,0x00}}, +{ 0x2668, {0x00,0x00,0x00,0x90,0x48,0x90,0x48,0x00,0x50,0x88,0x70,0x00,0x00}}, +{ 0x2669, {0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0xF0,0x60,0x00,0x00}}, +{ 0x266A, {0x00,0x00,0x10,0x18,0x14,0x10,0x10,0x10,0x70,0xF0,0x60,0x00,0x00}}, +{ 0x266B, {0x00,0x00,0x40,0x60,0x50,0x48,0x48,0xC8,0xC8,0x18,0x18,0x00,0x00}}, +{ 0x266C, {0x00,0x00,0x40,0x60,0x50,0x68,0x58,0xC8,0xC8,0x18,0x18,0x00,0x00}}, +{ 0x266D, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x90,0xE0,0x00,0x00}}, +{ 0x266E, {0x00,0x00,0x80,0x88,0x98,0xA8,0xC8,0x98,0xA8,0xC8,0x88,0x08,0x00}}, +{ 0x266F, {0x00,0x00,0x10,0x58,0x70,0xD0,0x50,0x58,0x70,0xD0,0x40,0x00,0x00}}, +{ 0x2670, {0x00,0x00,0x50,0x20,0xA8,0x70,0xA8,0x20,0x20,0x20,0x50,0x00,0x00}}, +{ 0x2671, {0x00,0x20,0x50,0x20,0xA8,0xD8,0xA8,0x20,0x20,0x20,0x50,0x20,0x00}}, +{ 0x2672, {0x00,0x00,0x00,0x30,0x08,0xC4,0x4C,0x80,0x94,0xA8,0x10,0x00,0x00}}, +{ 0x2673, {0x00,0x10,0x08,0xC4,0xCC,0xAC,0xA0,0xA4,0xA4,0x94,0x38,0x10,0x00}}, +{ 0x2674, {0x00,0x10,0x08,0xC4,0xEC,0xDC,0xB0,0xC4,0xF4,0x94,0x38,0x10,0x00}}, +{ 0x2675, {0x00,0x10,0x08,0xC4,0xEC,0xDC,0x90,0xB4,0xD4,0xB4,0x38,0x10,0x00}}, +{ 0x2676, {0x00,0x10,0x08,0xC4,0xCC,0xCC,0xD0,0xFC,0x94,0x94,0x38,0x10,0x00}}, +{ 0x2677, {0x00,0x10,0x08,0xC4,0xCC,0xFC,0xC0,0xE4,0x94,0xF4,0x38,0x10,0x00}}, +{ 0x2678, {0x00,0x10,0x08,0xC4,0xDC,0xAC,0xE0,0xD4,0xD4,0xB4,0x38,0x10,0x00}}, +{ 0x2679, {0x00,0x10,0x08,0xC4,0xCC,0xFC,0x90,0xA4,0xA4,0xB4,0x38,0x10,0x00}}, +{ 0x267A, {0x00,0x10,0x08,0xC4,0xCC,0x8C,0x80,0x84,0x84,0x94,0x38,0x10,0x00}}, +{ 0x267B, {0x00,0x00,0x00,0x30,0x28,0xCC,0xCC,0x80,0x94,0xB8,0x10,0x00,0x00}}, +{ 0x267C, {0x00,0x78,0xFC,0xCC,0xD4,0x30,0x30,0x7C,0x68,0x44,0xEC,0xFC,0x78}}, +{ 0x267D, {0x00,0x78,0x84,0x30,0x28,0xCC,0xCC,0x80,0x94,0xB8,0x10,0x84,0x78}}, +{ 0x2680, {0x00,0x00,0xF8,0x88,0x88,0x88,0xA8,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x2681, {0x00,0x00,0xF8,0x88,0xC8,0x88,0x88,0x88,0x98,0x88,0xF8,0x00,0x00}}, +{ 0x2682, {0x00,0x00,0xF8,0x88,0xC8,0x88,0xA8,0x88,0x98,0x88,0xF8,0x00,0x00}}, +{ 0x2683, {0x00,0x00,0xF8,0x88,0xD8,0x88,0x88,0x88,0xD8,0x88,0xF8,0x00,0x00}}, +{ 0x2684, {0x00,0x00,0xF8,0x88,0xD8,0x88,0xA8,0x88,0xD8,0x88,0xF8,0x00,0x00}}, +{ 0x2685, {0x00,0x00,0xF8,0x88,0xD8,0x88,0xD8,0x88,0xD8,0x88,0xF8,0x00,0x00}}, +{ 0x2686, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x98,0x88,0x70,0x00,0x00,0x00}}, +{ 0x2687, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xD8,0x88,0x70,0x00,0x00,0x00}}, +{ 0x2688, {0x00,0x00,0x00,0x00,0x00,0x70,0xF8,0xE8,0xF8,0x70,0x00,0x00,0x00}}, +{ 0x2689, {0x00,0x00,0x00,0x00,0x00,0x70,0xF8,0xA8,0xF8,0x70,0x00,0x00,0x00}}, +{ 0x2701, {0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20,0x50,0xBC,0x48,0x00,0x00}}, +{ 0x2702, {0x00,0x00,0x00,0x00,0x40,0xA4,0x68,0x10,0x68,0xA4,0x40,0x00,0x00}}, +{ 0x2703, {0x00,0x00,0x48,0xBC,0x50,0x20,0x50,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2704, {0x00,0x00,0x00,0x00,0x40,0xAC,0x78,0x10,0x78,0xAC,0x40,0x00,0x00}}, +{ 0x2706, {0x00,0x78,0x84,0xB4,0xB4,0xA4,0xA4,0xA4,0xB4,0xB4,0x44,0x78,0x00}}, +{ 0x2708, {0x00,0x00,0x20,0x20,0x10,0x90,0xFC,0x90,0x10,0x20,0x20,0x00,0x00}}, +{ 0x2713, {0x00,0x00,0x04,0x04,0x08,0x08,0x08,0x90,0x50,0x20,0x20,0x00,0x00}}, +{ 0x2714, {0x00,0x00,0x0C,0x0C,0x0C,0x18,0x18,0x98,0xD8,0x70,0x30,0x00,0x00}}, +{ 0x2715, {0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00,0x00}}, +{ 0x2716, {0x00,0x00,0x00,0x00,0x00,0x88,0xD8,0x70,0x70,0xD8,0x88,0x00,0x00}}, +{ 0x2717, {0x00,0x00,0x00,0x00,0x08,0x90,0x50,0x20,0x50,0x48,0x80,0x00,0x00}}, +{ 0x2718, {0x00,0x00,0x00,0x08,0x98,0xD0,0x70,0x70,0x58,0xC8,0x80,0x00,0x00}}, +{ 0x2719, {0x00,0x00,0x00,0x30,0x30,0x30,0xFC,0xFC,0x30,0x30,0x30,0x00,0x00}}, +{ 0x271A, {0x00,0x00,0x00,0x30,0x30,0x30,0xFC,0xFC,0x30,0x30,0x30,0x00,0x00}}, +{ 0x271B, {0x00,0x00,0x00,0x20,0x20,0x20,0xD8,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0x271C, {0x00,0x00,0x00,0x30,0x30,0x30,0xCC,0xCC,0x30,0x30,0x30,0x00,0x00}}, +{ 0x271D, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x271E, {0x00,0x00,0x70,0x58,0xDC,0x8C,0xDC,0x5C,0x58,0x58,0x78,0x38,0x00}}, +{ 0x271F, {0x00,0x00,0x30,0x30,0xFC,0xFC,0x30,0x30,0x30,0x30,0x30,0x00,0x00}}, +{ 0x2720, {0x00,0x00,0x00,0x00,0x70,0x20,0xA8,0xF8,0xA8,0x20,0x70,0x00,0x00}}, +{ 0x2722, {0x00,0x00,0x00,0x30,0x30,0x30,0xFC,0xFC,0x30,0x30,0x30,0x00,0x00}}, +{ 0x2723, {0x00,0x00,0x20,0x70,0x20,0xA8,0xF8,0xA8,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2724, {0x00,0x00,0x20,0x70,0x20,0xA8,0xF8,0xA8,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2725, {0x00,0x00,0x20,0x70,0x20,0xA8,0xF8,0xA8,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2726, {0x00,0x00,0x00,0x00,0x20,0x70,0xF8,0x70,0x20,0x00,0x00,0x00,0x00}}, +{ 0x2727, {0x00,0x00,0x00,0x00,0x20,0x50,0x88,0x50,0x20,0x00,0x00,0x00,0x00}}, +{ 0x2729, {0x00,0x00,0x00,0x20,0x20,0xF8,0x50,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x272A, {0x00,0x00,0x70,0xD8,0xD8,0x00,0x88,0x88,0x70,0xF8,0x70,0x00,0x00}}, +{ 0x272B, {0x00,0x00,0x00,0x20,0x20,0xF8,0x50,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x272C, {0x00,0x00,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x272D, {0x00,0x00,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x272E, {0x00,0x00,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x272F, {0x00,0x00,0x00,0x20,0x20,0xF8,0x70,0x70,0x88,0x00,0x00,0x00,0x00}}, +{ 0x2730, {0x00,0x00,0x00,0x30,0x30,0xFC,0x58,0x78,0xCC,0x00,0x00,0x00,0x00}}, +{ 0x2731, {0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2732, {0x00,0x00,0x00,0x20,0xA8,0x70,0x50,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2733, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2734, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2735, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2736, {0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2737, {0x00,0x00,0x00,0x50,0x50,0xF8,0x20,0xF8,0x50,0x50,0x00,0x00,0x00}}, +{ 0x2738, {0x00,0x00,0x00,0x50,0x70,0xF8,0x70,0xF8,0x70,0x50,0x00,0x00,0x00}}, +{ 0x273B, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x273C, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x50,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x273D, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x273E, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x50,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x273F, {0x00,0x00,0x00,0x00,0x20,0xF8,0x50,0x70,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2743, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2744, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2745, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2746, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2747, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2748, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x2749, {0x00,0x00,0x00,0x20,0xA8,0xA8,0x70,0xA8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x274A, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x274B, {0x00,0x00,0x00,0x20,0xA8,0x70,0xF8,0x70,0xA8,0x20,0x00,0x00,0x00}}, +{ 0x274D, {0x00,0x00,0x00,0x00,0x00,0x78,0x8C,0x8C,0x8C,0x8C,0x78,0x00,0x00}}, +{ 0x274F, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x8C,0x8C,0xFC,0x3C,0x00,0x00}}, +{ 0x2750, {0x00,0x00,0x00,0x00,0x00,0x3C,0xFC,0x8C,0x8C,0x88,0xF8,0x00,0x00}}, +{ 0x2751, {0x00,0x00,0x00,0x00,0x00,0xF8,0x8C,0x8C,0x8C,0xFC,0x7C,0x00,0x00}}, +{ 0x2752, {0x00,0x00,0x00,0x00,0x00,0x7C,0xFC,0x8C,0x8C,0x8C,0xF8,0x00,0x00}}, +{ 0x2756, {0x00,0x00,0x20,0x70,0x20,0x50,0xF8,0x50,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2758, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x2759, {0x00,0x00,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x00,0x00}}, +{ 0x275A, {0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00}}, +{ 0x275B, {0x00,0x30,0x40,0x70,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x275C, {0x00,0x20,0x70,0x70,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x275D, {0x00,0x6C,0x90,0xFC,0xFC,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x275E, {0x00,0x48,0xFC,0xFC,0x24,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2761, {0x00,0x08,0x7C,0xE8,0xE8,0x78,0x08,0x68,0x68,0x48,0x30,0x00,0x00}}, +{ 0x2762, {0x00,0x00,0x20,0x70,0x70,0x20,0x20,0x00,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2763, {0x00,0x00,0x50,0xF8,0xF8,0x70,0x20,0x00,0x20,0x70,0x20,0x00,0x00}}, +{ 0x2764, {0x00,0x00,0x00,0x00,0x50,0xF8,0xF8,0xF8,0x70,0x20,0x20,0x00,0x00}}, +{ 0x2765, {0x00,0x00,0x00,0x00,0x60,0xF0,0xF8,0x7C,0xF8,0xF0,0x60,0x00,0x00}}, +{ 0x2766, {0x00,0x00,0x68,0xB0,0x10,0xD8,0xF8,0xF0,0x60,0x68,0x30,0x00,0x00}}, +{ 0x2767, {0x00,0x00,0x00,0x40,0x90,0xB8,0x7C,0x5C,0xBC,0xB8,0x50,0x00,0x00}}, +{ 0x2776, {0x00,0x00,0x70,0xF8,0xD8,0x98,0xD8,0xD8,0x88,0xF8,0x70,0x00,0x00}}, +{ 0x2777, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xE8,0xD8,0x88,0xF8,0x70,0x00,0x00}}, +{ 0x2778, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xD8,0xE8,0x98,0xF8,0x70,0x00,0x00}}, +{ 0x2779, {0x00,0x00,0x70,0xF8,0xB8,0xB8,0x98,0x88,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x277A, {0x00,0x00,0x70,0xF8,0x88,0xB8,0x98,0xE8,0x98,0xF8,0x70,0x00,0x00}}, +{ 0x277B, {0x00,0x00,0x70,0xF8,0xC8,0xB8,0x98,0xA8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x277C, {0x00,0x00,0x70,0xF8,0x88,0xE8,0xD8,0xD8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x277D, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xD8,0xA8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x277E, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xC8,0xE8,0x98,0xF8,0x70,0x00,0x00}}, +{ 0x277F, {0x00,0x00,0x78,0xFC,0xAC,0x94,0x94,0x94,0xAC,0xFC,0x78,0x00,0x00}}, +{ 0x2780, {0x00,0x00,0x70,0x88,0xA8,0xE8,0xA8,0xA8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2781, {0x00,0x00,0x70,0x88,0xA8,0xD8,0x98,0xA8,0xF8,0x88,0x70,0x00,0x00}}, +{ 0x2782, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0x98,0xE8,0x88,0x70,0x00,0x00}}, +{ 0x2783, {0x00,0x00,0x70,0x88,0xC8,0xC8,0xE8,0xF8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2784, {0x00,0x00,0x70,0x88,0xF8,0xC8,0xE8,0x98,0xE8,0x88,0x70,0x00,0x00}}, +{ 0x2785, {0x00,0x00,0x70,0x88,0xB8,0xC8,0xE8,0xD8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2786, {0x00,0x00,0x70,0x88,0xF8,0x98,0xA8,0xA8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2787, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xA8,0xD8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x2788, {0x00,0x00,0x70,0x88,0xA8,0xD8,0xB8,0x98,0xE8,0x88,0x70,0x00,0x00}}, +{ 0x2789, {0x00,0x00,0x78,0x84,0xD4,0xEC,0xEC,0xEC,0xD4,0x84,0x78,0x00,0x00}}, +{ 0x278A, {0x00,0x00,0x70,0xF8,0xD8,0x98,0xD8,0xD8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x278B, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xE8,0xD8,0x88,0xF8,0x70,0x00,0x00}}, +{ 0x278C, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xD8,0xE8,0x98,0xF8,0x70,0x00,0x00}}, +{ 0x278D, {0x00,0x00,0x70,0xF8,0xB8,0xB8,0x98,0x88,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x278E, {0x00,0x00,0x70,0xF8,0x88,0xB8,0x98,0xE8,0x98,0xF8,0x70,0x00,0x00}}, +{ 0x278F, {0x00,0x00,0x70,0xF8,0xC8,0xB8,0x98,0xA8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x2790, {0x00,0x00,0x70,0xF8,0x88,0xE8,0xD8,0xD8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x2791, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xD8,0xA8,0xD8,0xF8,0x70,0x00,0x00}}, +{ 0x2792, {0x00,0x00,0x70,0xF8,0xD8,0xA8,0xC8,0xE8,0x98,0xF8,0x70,0x00,0x00}}, +{ 0x2793, {0x00,0x00,0x78,0xFC,0xAC,0x94,0x94,0x94,0xAC,0xFC,0x78,0x00,0x00}}, +{ 0x2794, {0x00,0x00,0x00,0x30,0x18,0xFC,0xFC,0x18,0x30,0x00,0x00,0x00,0x00}}, +{ 0x2798, {0x00,0x00,0x00,0x00,0x80,0x40,0x28,0x18,0x38,0x00,0x00,0x00,0x00}}, +{ 0x2799, {0x00,0x00,0x00,0x00,0x20,0x30,0xF8,0x30,0x20,0x00,0x00,0x00,0x00}}, +{ 0x279A, {0x00,0x00,0x00,0x00,0x38,0x18,0x28,0x40,0x80,0x00,0x00,0x00,0x00}}, +{ 0x279B, {0x00,0x00,0x00,0x40,0x20,0x30,0xFC,0x30,0x20,0x40,0x00,0x00,0x00}}, +{ 0x279C, {0x00,0x00,0x20,0x30,0x18,0xFC,0xFC,0x18,0x30,0x20,0x00,0x00,0x00}}, +{ 0x279D, {0x00,0x00,0x00,0x00,0x10,0x18,0xFC,0x18,0x10,0x00,0x00,0x00,0x00}}, +{ 0x279E, {0x00,0x00,0x00,0x10,0x18,0xFC,0xFC,0x18,0x10,0x00,0x00,0x00,0x00}}, +{ 0x279F, {0x00,0x00,0x00,0x10,0x18,0xBC,0xBC,0x18,0x10,0x00,0x00,0x00,0x00}}, +{ 0x27A0, {0x00,0x00,0x00,0x20,0x30,0xB8,0xBC,0xB8,0x30,0x20,0x00,0x00,0x00}}, +{ 0x27A1, {0x00,0x00,0x00,0x20,0x30,0xF8,0xFC,0xF8,0x30,0x20,0x00,0x00,0x00}}, +{ 0x27A4, {0x00,0x00,0x00,0x00,0xC0,0x70,0x3C,0x70,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x27A5, {0x00,0x00,0x00,0x20,0xB0,0xF8,0xFC,0x78,0x30,0x20,0x00,0x00,0x00}}, +{ 0x27A6, {0x00,0x00,0x00,0x20,0x30,0x78,0xFC,0xF8,0xB0,0x20,0x00,0x00,0x00}}, +{ 0x27A7, {0x20,0x20,0x30,0xF0,0xF8,0xF8,0xFC,0xF8,0xF8,0xF0,0x30,0x20,0x20}}, +{ 0x27B2, {0x00,0x78,0xFC,0xDC,0xCC,0x04,0x00,0x04,0xCC,0xDC,0xF8,0x78,0x00}}, +{ 0x27B4, {0x00,0x00,0x00,0x20,0x20,0xE0,0x14,0x0C,0x1C,0x00,0x00,0x00,0x00}}, +{ 0x27B5, {0x00,0x00,0x00,0x00,0x90,0xC8,0x7C,0xC8,0x90,0x00,0x00,0x00,0x00}}, +{ 0x27B6, {0x00,0x00,0x00,0x1C,0x0C,0x14,0xE0,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x27B7, {0x00,0x00,0x00,0x20,0x20,0xE0,0x14,0x0C,0x1C,0x00,0x00,0x00,0x00}}, +{ 0x27B8, {0x00,0x00,0x00,0x00,0x90,0xC8,0x7C,0xC8,0x90,0x00,0x00,0x00,0x00}}, +{ 0x27B9, {0x00,0x00,0x00,0x1C,0x0C,0x14,0xE0,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0x27BA, {0x00,0x00,0x00,0x00,0x10,0x08,0xFC,0x08,0x10,0x00,0x00,0x00,0x00}}, +{ 0x27BB, {0x00,0x00,0x00,0x00,0x10,0xC8,0xFC,0xC8,0x10,0x00,0x00,0x00,0x00}}, +{ 0x27BC, {0x00,0x00,0x00,0x00,0x00,0xE8,0x7C,0xE8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x27BD, {0x00,0x00,0x00,0x00,0xD0,0xD8,0x7C,0xD8,0xD0,0x00,0x00,0x00,0x00}}, +{ 0x27BE, {0x00,0x00,0xA0,0x50,0x28,0xF4,0x04,0xF4,0x28,0x50,0xA0,0x00,0x00}}, +{ 0x27E6, {0x00,0xF8,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xF8,0x00}}, +{ 0x27E7, {0x00,0xF8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xF8,0x00}}, +{ 0x27E8, {0x00,0x08,0x10,0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x10,0x08,0x00}}, +{ 0x27E9, {0x00,0x40,0x20,0x20,0x10,0x10,0x08,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0x27EA, {0x00,0x14,0x28,0x28,0x50,0x50,0xA0,0x50,0x50,0x28,0x28,0x14,0x00}}, +{ 0x27EB, {0x00,0xA0,0x50,0x50,0x28,0x28,0x14,0x28,0x28,0x50,0x50,0xA0,0x00}}, +{ 0x27F5, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0xFC,0x40,0x20,0x00,0x00,0x00}}, +{ 0x27F6, {0x00,0x00,0x00,0x00,0x00,0x10,0x08,0xFC,0x08,0x10,0x00,0x00,0x00}}, +{ 0x27F7, {0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xFC,0x48,0x00,0x00,0x00,0x00}}, +{ 0x27F8, {0x00,0x00,0x00,0x00,0x10,0x20,0x7C,0x80,0x7C,0x20,0x10,0x00,0x00}}, +{ 0x27F9, {0x00,0x00,0x00,0x00,0x20,0x10,0xF8,0x04,0xF8,0x10,0x20,0x00,0x00}}, +{ 0x27FA, {0x00,0x00,0x00,0x00,0x00,0x48,0xFC,0x84,0xFC,0x48,0x00,0x00,0x00}}, +{ 0x27FB, {0x00,0x00,0x00,0x00,0x00,0x24,0x44,0xFC,0x44,0x24,0x00,0x00,0x00}}, +{ 0x27FC, {0x00,0x00,0x00,0x00,0x00,0x90,0x88,0xFC,0x88,0x90,0x00,0x00,0x00}}, +{ 0x27FD, {0x00,0x00,0x00,0x00,0x14,0x24,0x7C,0x84,0x7C,0x24,0x14,0x00,0x00}}, +{ 0x27FE, {0x00,0x00,0x00,0x00,0xA0,0x90,0xF8,0x84,0xF8,0x90,0xA0,0x00,0x00}}, +{ 0x27FF, {0x00,0x00,0x00,0x00,0x00,0x08,0x5C,0xAC,0x08,0x00,0x00,0x00,0x00}}, +{ 0x2800, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2801, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2802, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2803, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2804, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2805, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2806, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2807, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2808, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2809, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x280A, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x280B, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x280C, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x280D, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x280E, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x280F, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2810, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2811, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2812, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2813, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2814, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2815, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2816, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2817, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2818, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x2819, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x281A, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x281B, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x281C, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x281D, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x281E, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x281F, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00}}, +{ 0x2820, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2821, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2822, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2823, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2824, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2825, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2826, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2827, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2828, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2829, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x282A, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x282B, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x282C, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x282D, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x282E, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x282F, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2830, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2831, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2832, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2833, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2834, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2835, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2836, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2837, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2838, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x2839, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x283A, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x283B, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00}}, +{ 0x283C, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x283D, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x283E, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x283F, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00}}, +{ 0x2840, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2841, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2842, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2843, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2844, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2845, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2846, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2847, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2848, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2849, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x284A, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x284B, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x284C, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x284D, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x284E, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x284F, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2850, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2851, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2852, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2853, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2854, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2855, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2856, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2857, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2858, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x2859, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x285A, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x285B, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00}}, +{ 0x285C, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x285D, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x285E, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x285F, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00}}, +{ 0x2860, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2861, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2862, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2863, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2864, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2865, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2866, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2867, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2868, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2869, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x286A, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x286B, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x286C, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x286D, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x286E, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x286F, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2870, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2871, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2872, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2873, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2874, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2875, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2876, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2877, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2878, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x2879, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x287A, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x287B, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00}}, +{ 0x287C, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x287D, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x287E, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x287F, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00}}, +{ 0x2880, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2881, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2882, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2883, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2884, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2885, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2886, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2887, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2888, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2889, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x288A, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x288B, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x288C, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x288D, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x288E, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x288F, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2890, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2891, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2892, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2893, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2894, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2895, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2896, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2897, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x2898, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x2899, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x289A, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x289B, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00}}, +{ 0x289C, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x289D, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x289E, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x289F, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00}}, +{ 0x28A0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28A1, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28A2, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28A3, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28A4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28A5, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28A6, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28A7, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28A8, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28A9, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28AA, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28AB, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28AC, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28AD, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28AE, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28AF, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28B0, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28B1, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28B2, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28B3, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28B4, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28B5, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28B6, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28B7, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28B8, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28B9, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28BA, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28BB, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00}}, +{ 0x28BC, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28BD, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28BE, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28BF, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00}}, +{ 0x28C0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28C1, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28C2, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28C3, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28C4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28C5, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28C6, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28C7, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28C8, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28C9, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28CA, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28CB, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28CC, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28CD, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28CE, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28CF, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28D0, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28D1, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28D2, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28D3, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28D4, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28D5, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28D6, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28D7, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28D8, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28D9, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28DA, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28DB, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00}}, +{ 0x28DC, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28DD, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28DE, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28DF, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00}}, +{ 0x28E0, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28E1, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28E2, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28E3, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28E4, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28E5, {0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28E6, {0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28E7, {0x00,0xC0,0xC0,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28E8, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28E9, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28EA, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28EB, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28EC, {0x00,0x18,0x18,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28ED, {0x00,0xD8,0xD8,0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28EE, {0x00,0x18,0x18,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28EF, {0x00,0xD8,0xD8,0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28F0, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28F1, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28F2, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28F3, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28F4, {0x00,0x00,0x00,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28F5, {0x00,0xC0,0xC0,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28F6, {0x00,0x00,0x00,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28F7, {0x00,0xC0,0xC0,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28F8, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28F9, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28FA, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28FB, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00}}, +{ 0x28FC, {0x00,0x18,0x18,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28FD, {0x00,0xD8,0xD8,0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28FE, {0x00,0x18,0x18,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x28FF, {0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00,0xD8,0xD8,0x00}}, +{ 0x2906, {0x00,0x00,0x00,0x00,0x14,0x24,0x7C,0x84,0x7C,0x24,0x14,0x00,0x00}}, +{ 0x2907, {0x00,0x00,0x00,0x00,0xA0,0x90,0xF8,0x84,0xF8,0x90,0xA0,0x00,0x00}}, +{ 0x2983, {0x00,0x38,0x50,0x50,0x50,0x50,0x90,0x50,0x50,0x50,0x50,0x38,0x00}}, +{ 0x2984, {0x00,0xE0,0x50,0x50,0x50,0x50,0x48,0x50,0x50,0x50,0x50,0xE0,0x00}}, +{ 0x2985, {0x00,0x08,0x10,0x30,0x30,0x50,0x50,0x50,0x30,0x30,0x10,0x08,0x00}}, +{ 0x2986, {0x00,0x40,0x20,0x30,0x30,0x28,0x28,0x28,0x30,0x30,0x20,0x40,0x00}}, +{ 0x2987, {0x00,0x10,0x30,0x30,0x50,0x50,0x50,0x50,0x50,0x30,0x30,0x10,0x00}}, +{ 0x2988, {0x00,0x40,0x60,0x60,0x50,0x50,0x50,0x50,0x50,0x60,0x60,0x40,0x00}}, +{ 0x2989, {0x00,0x08,0x18,0x18,0x28,0x28,0x48,0x28,0x28,0x18,0x18,0x08,0x00}}, +{ 0x298A, {0x00,0x40,0x60,0x60,0x50,0x50,0x48,0x50,0x50,0x60,0x60,0x40,0x00}}, +{ 0x298B, {0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00,0x70}}, +{ 0x298C, {0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00,0x70}}, +{ 0x298D, {0x00,0x70,0x60,0x50,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00}}, +{ 0x298E, {0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x30,0x70,0x00}}, +{ 0x298F, {0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x50,0x60,0x70,0x00}}, +{ 0x2990, {0x00,0x70,0x30,0x50,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00}}, +{ 0x2991, {0x00,0x08,0x10,0x10,0x20,0x20,0x48,0x20,0x20,0x10,0x10,0x08,0x00}}, +{ 0x2992, {0x00,0x40,0x20,0x20,0x10,0x10,0x48,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0x2993, {0x00,0x00,0x10,0x20,0x38,0x60,0xA0,0x60,0x38,0x20,0x10,0x00,0x00}}, +{ 0x2994, {0x00,0x00,0x40,0x20,0xE0,0x30,0x28,0x30,0xE0,0x20,0x40,0x00,0x00}}, +{ 0x2995, {0x00,0x00,0x28,0x50,0xD0,0x70,0x58,0x70,0xD0,0x50,0x28,0x00,0x00}}, +{ 0x2996, {0x00,0x00,0xA0,0x50,0x58,0x70,0xD0,0x70,0x58,0x50,0xA0,0x00,0x00}}, +{ 0x2997, {0x00,0x10,0x20,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x20,0x10,0x00}}, +{ 0x2998, {0x00,0x40,0x20,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x20,0x40,0x00}}, +{ 0x29FC, {0x00,0x08,0x08,0x10,0x10,0x20,0x40,0x20,0x10,0x10,0x08,0x08,0x00}}, +{ 0x29FD, {0x00,0x40,0x40,0x20,0x20,0x10,0x08,0x10,0x20,0x20,0x40,0x40,0x00}}, +{ 0x2A00, {0x00,0x70,0x88,0x88,0x88,0xA8,0xA8,0x88,0x88,0x88,0x88,0x70,0x00}}, +{ 0x2A01, {0x00,0x70,0xA8,0xA8,0xA8,0xA8,0xF8,0xA8,0xA8,0xA8,0xA8,0x70,0x00}}, +{ 0x2A02, {0x00,0x70,0x88,0xD8,0xD8,0xA8,0xA8,0xA8,0xD8,0xD8,0x88,0x70,0x00}}, +{ 0x2A03, {0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xA8,0xA8,0x88,0x70,0x00}}, +{ 0x2A04, {0x00,0x88,0x88,0x88,0x88,0x88,0xA8,0xA8,0xF8,0xA8,0xA8,0x70,0x00}}, +{ 0x2A05, {0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x00}}, +{ 0x2A06, {0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x00}}, +{ 0x2A09, {0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x00}}, +{ 0x2A1D, {0x00,0x00,0x00,0x84,0xCC,0xB4,0xB4,0xB4,0xCC,0x84,0x00,0x00,0x00}}, +{ 0x2A3F, {0x00,0x00,0xEC,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xFC,0x00,0x00}}, +{ 0x3000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x3001, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x00,0x00}}, +{ 0x3002, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20,0x00,0x00}}, +{ 0x3003, {0x00,0x00,0x00,0x00,0x00,0x28,0x28,0x50,0x00,0x00,0x00,0x00,0x00}}, +{ 0x3005, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x78,0x48,0xB0,0x90,0x00,0x00}}, +{ 0x3006, {0x00,0x00,0x00,0x00,0x00,0x08,0x50,0xA0,0xB0,0xC0,0x80,0x00,0x00}}, +{ 0x3008, {0x00,0x08,0x10,0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x10,0x08,0x00}}, +{ 0x3009, {0x00,0x40,0x20,0x20,0x10,0x10,0x08,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0x300A, {0x00,0x14,0x28,0x28,0x50,0x50,0xA0,0x50,0x50,0x28,0x28,0x14,0x00}}, +{ 0x300B, {0x00,0xA0,0x50,0x50,0x28,0x28,0x14,0x28,0x28,0x50,0x50,0xA0,0x00}}, +{ 0x300C, {0x00,0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00}}, +{ 0x300D, {0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00,0x00}}, +{ 0x300E, {0x00,0xF8,0x88,0xB8,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xE0,0x00,0x00}}, +{ 0x300F, {0x00,0x00,0x38,0x28,0x28,0x28,0x28,0x28,0x28,0xE8,0x88,0xF8,0x00}}, +{ 0x3010, {0x00,0x78,0x70,0x70,0x60,0x60,0x60,0x60,0x60,0x70,0x70,0x78,0x00}}, +{ 0x3011, {0x00,0x78,0x38,0x38,0x18,0x18,0x18,0x18,0x18,0x38,0x38,0x78,0x00}}, +{ 0x3012, {0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0xF8,0x20,0x20,0x20,0x00,0x00}}, +{ 0x3013, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x00,0xF8,0xF8,0x00,0x00}}, +{ 0x3014, {0x00,0x10,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00}}, +{ 0x3015, {0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00}}, +{ 0x3016, {0x00,0xF8,0x90,0x90,0xA0,0xA0,0xA0,0xA0,0xA0,0x90,0x90,0xF8,0x00}}, +{ 0x3017, {0x00,0xF8,0x48,0x48,0x28,0x28,0x28,0x28,0x28,0x48,0x48,0xF8,0x00}}, +{ 0x3018, {0x00,0x08,0x10,0x30,0x50,0x50,0x50,0x50,0x50,0x30,0x10,0x08,0x00}}, +{ 0x3019, {0x00,0x40,0x20,0x30,0x28,0x28,0x28,0x28,0x28,0x30,0x20,0x40,0x00}}, +{ 0x301A, {0x00,0xF8,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xA0,0xF8,0x00}}, +{ 0x301B, {0x00,0xF8,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xF8,0x00}}, +{ 0x301C, {0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x64,0x00,0x00,0x00,0x00,0x00}}, +{ 0x301D, {0x00,0x00,0x50,0x50,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x301E, {0x00,0x00,0x28,0x28,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x301F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x28,0x50,0x00}}, +{ 0x3036, {0x00,0x00,0x70,0x88,0xF8,0x88,0xF8,0xA8,0xA8,0x88,0x70,0x00,0x00}}, +{ 0x303F, {0x00,0x00,0xF8,0xD8,0xD8,0xA8,0xA8,0xA8,0xD8,0xD8,0xF8,0x00,0x00}}, +{ 0x3099, {0x08,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x309A, {0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x309B, {0x40,0x20,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x309C, {0x40,0xA0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x30A1, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x50,0x60,0x40,0x80,0x00,0x00}}, +{ 0x30A2, {0x00,0x00,0xF8,0x08,0x28,0x28,0x30,0x20,0x20,0x40,0x80,0x00,0x00}}, +{ 0x30A3, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x60,0xA0,0x20,0x00,0x00}}, +{ 0x30A4, {0x00,0x00,0x08,0x10,0x20,0x60,0xA0,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x30A5, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xE0,0xA0,0x20,0x40,0x00,0x00}}, +{ 0x30A6, {0x00,0x20,0x20,0xF8,0x88,0x88,0x08,0x08,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30A7, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x30A8, {0x00,0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x30A9, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF0,0x20,0x60,0xA0,0x00,0x00}}, +{ 0x30AA, {0x00,0x00,0x10,0x10,0xF8,0x10,0x30,0x50,0x90,0x10,0x30,0x00,0x00}}, +{ 0x30AB, {0x00,0x00,0x20,0x20,0xF8,0x28,0x28,0x28,0x48,0x48,0x98,0x00,0x00}}, +{ 0x30AC, {0x08,0x04,0x28,0x24,0xF8,0x28,0x28,0x28,0x48,0x48,0x98,0x00,0x00}}, +{ 0x30AD, {0x00,0x00,0x40,0x40,0x58,0xE0,0x20,0x38,0xD0,0x10,0x10,0x00,0x00}}, +{ 0x30AE, {0x08,0x04,0x48,0x44,0x58,0xE0,0x20,0x38,0xD0,0x10,0x10,0x00,0x00}}, +{ 0x30AF, {0x00,0x00,0x78,0x48,0x48,0x88,0x08,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30B0, {0x08,0x04,0x78,0x4C,0x48,0x88,0x08,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30B1, {0x00,0x00,0x40,0x40,0x78,0x90,0x10,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0x30B2, {0x08,0x04,0x48,0x44,0x78,0x90,0x10,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0x30B3, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x30B4, {0x08,0x04,0x08,0xFC,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x30B5, {0x00,0x00,0x50,0x50,0xF8,0x50,0x50,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0x30B6, {0x08,0x04,0x58,0x54,0xF8,0x50,0x50,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0x30B7, {0x00,0x00,0x00,0xC0,0x08,0xC8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30B8, {0x08,0x04,0x08,0xC4,0x08,0xC8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30B9, {0x00,0x00,0xF8,0x08,0x08,0x10,0x10,0x30,0x30,0x48,0x88,0x00,0x00}}, +{ 0x30BA, {0x08,0x04,0xF8,0x0C,0x08,0x10,0x10,0x30,0x30,0x48,0x88,0x00,0x00}}, +{ 0x30BB, {0x00,0x00,0x40,0x40,0x78,0xC8,0x50,0x40,0x40,0x40,0x38,0x00,0x00}}, +{ 0x30BC, {0x08,0x04,0x48,0x44,0x78,0xC8,0x50,0x40,0x40,0x40,0x38,0x00,0x00}}, +{ 0x30BD, {0x00,0x00,0x08,0x88,0x48,0x48,0x10,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0x30BE, {0x08,0x04,0x08,0x8C,0x48,0x48,0x10,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0x30BF, {0x00,0x00,0x78,0x48,0x48,0x68,0x98,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30C0, {0x08,0x04,0x78,0x4C,0x48,0x68,0x98,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30C1, {0x00,0x00,0x10,0x20,0x60,0x20,0xF8,0x20,0x20,0x40,0x80,0x00,0x00}}, +{ 0x30C2, {0x08,0x04,0x18,0x24,0x60,0x20,0xF8,0x20,0x20,0x40,0x80,0x00,0x00}}, +{ 0x30C3, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x08,0x10,0xE0,0x00,0x00}}, +{ 0x30C4, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30C5, {0x08,0x04,0x08,0xAC,0xA8,0xA8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30C6, {0x00,0x00,0x70,0x00,0x00,0xF8,0x20,0x20,0x20,0x40,0x40,0x00,0x00}}, +{ 0x30C7, {0x08,0x04,0x78,0x04,0x00,0xF8,0x20,0x20,0x20,0x40,0x40,0x00,0x00}}, +{ 0x30C8, {0x00,0x00,0x80,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x80,0x00,0x00}}, +{ 0x30C9, {0x00,0x10,0x88,0x90,0x88,0xC0,0xA0,0x90,0x80,0x80,0x80,0x00,0x00}}, +{ 0x30CA, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,0x40,0x40,0x80,0x00,0x00}}, +{ 0x30CB, {0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00}}, +{ 0x30CC, {0x00,0x00,0x00,0xF8,0x08,0x48,0x30,0x10,0x28,0x40,0x80,0x00,0x00}}, +{ 0x30CD, {0x00,0x00,0x20,0x20,0xF8,0x10,0x20,0x70,0xA8,0x20,0x20,0x00,0x00}}, +{ 0x30CE, {0x00,0x00,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x80,0x00,0x00}}, +{ 0x30CF, {0x00,0x00,0x00,0x50,0x50,0x50,0x48,0x48,0x88,0x88,0x88,0x00,0x00}}, +{ 0x30D0, {0x08,0x04,0x08,0x54,0x50,0x50,0x48,0x48,0x88,0x88,0x88,0x00,0x00}}, +{ 0x30D1, {0x00,0x0C,0x0C,0x50,0x50,0x50,0x48,0x48,0x88,0x88,0x88,0x00,0x00}}, +{ 0x30D2, {0x00,0x00,0x80,0x80,0xF8,0x80,0x80,0x80,0x80,0x80,0x78,0x00,0x00}}, +{ 0x30D3, {0x08,0x04,0x88,0x84,0xF8,0x80,0x80,0x80,0x80,0x80,0x78,0x00,0x00}}, +{ 0x30D4, {0x00,0x0C,0x8C,0x80,0xF8,0x80,0x80,0x80,0x80,0x80,0x78,0x00,0x00}}, +{ 0x30D5, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30D6, {0x08,0x04,0x08,0xFC,0x08,0x08,0x08,0x10,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30D7, {0x0C,0x0C,0x00,0xF8,0x08,0x08,0x08,0x10,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30D8, {0x00,0x00,0x00,0x20,0x20,0x50,0x50,0x90,0x08,0x08,0x08,0x00,0x00}}, +{ 0x30D9, {0x00,0x00,0x08,0x24,0x28,0x54,0x50,0x90,0x08,0x08,0x08,0x00,0x00}}, +{ 0x30DA, {0x00,0x00,0x0C,0x2C,0x20,0x50,0x50,0x90,0x08,0x08,0x08,0x00,0x00}}, +{ 0x30DB, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0xA8,0xA8,0x20,0x20,0x00,0x00}}, +{ 0x30DC, {0x08,0x04,0x28,0x24,0xF8,0x20,0x20,0xA8,0xA8,0x20,0x20,0x00,0x00}}, +{ 0x30DD, {0x00,0x0C,0x2C,0x20,0xF8,0x20,0x20,0xA8,0xA8,0x20,0x20,0x00,0x00}}, +{ 0x30DE, {0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x50,0x60,0x20,0x10,0x00,0x00}}, +{ 0x30DF, {0x00,0x00,0xC0,0x30,0x00,0xC0,0x30,0x00,0x80,0x60,0x18,0x00,0x00}}, +{ 0x30E0, {0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x50,0x48,0x98,0xE4,0x00,0x00}}, +{ 0x30E1, {0x00,0x00,0x08,0x08,0x08,0x28,0x10,0x10,0x28,0x40,0x80,0x00,0x00}}, +{ 0x30E2, {0x00,0x00,0xF0,0x40,0x40,0xF8,0x40,0x40,0x40,0x40,0x38,0x00,0x00}}, +{ 0x30E3, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x78,0xC8,0x20,0x20,0x00,0x00}}, +{ 0x30E4, {0x00,0x00,0x40,0x40,0x78,0xC8,0x30,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x30E5, {0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0xF0,0x00,0x00}}, +{ 0x30E6, {0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0xF8,0x00,0x00}}, +{ 0x30E7, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0xF0,0x10,0xF0,0x00,0x00}}, +{ 0x30E8, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0x30E9, {0x00,0x00,0xF8,0x00,0xF8,0x08,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30EA, {0x00,0x00,0x88,0x88,0x88,0x88,0x08,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30EB, {0x00,0x00,0x10,0x50,0x50,0x50,0x50,0x50,0x50,0x98,0x90,0x00,0x00}}, +{ 0x30EC, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x90,0xE0,0x00,0x00}}, +{ 0x30ED, {0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x30EE, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x08,0x08,0x10,0x20,0x00,0x00}}, +{ 0x30EF, {0x00,0x00,0x00,0xF8,0x88,0x88,0x08,0x08,0x08,0x10,0x20,0x00,0x00}}, +{ 0x30F0, {0x00,0x00,0x10,0x10,0xF8,0x50,0x50,0xF8,0x10,0x10,0x10,0x00,0x00}}, +{ 0x30F1, {0x00,0x00,0x00,0x78,0x08,0x30,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x30F2, {0x00,0x00,0x00,0xF8,0x08,0xF8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30F3, {0x00,0x00,0x00,0x80,0x40,0x08,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30F4, {0x08,0x24,0x28,0xFC,0x88,0x88,0x08,0x08,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30F5, {0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0x28,0x48,0x48,0x90,0x00,0x00}}, +{ 0x30F6, {0x00,0x00,0x00,0x00,0x00,0x40,0x78,0x90,0x10,0x20,0x40,0x00,0x00}}, +{ 0x30F7, {0x08,0x04,0x08,0xFC,0x88,0x88,0x08,0x08,0x08,0x10,0x60,0x00,0x00}}, +{ 0x30F8, {0x08,0x04,0x18,0x14,0xF8,0x50,0x50,0xF8,0x10,0x10,0x10,0x00,0x00}}, +{ 0x30F9, {0x08,0x04,0x08,0x04,0x78,0x08,0x30,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0x30FA, {0x08,0x04,0x08,0xFC,0x08,0xF8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0x30FB, {0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0x30FC, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x30FD, {0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x10,0x00,0x00,0x00,0x00}}, +{ 0x30FE, {0x00,0x00,0x10,0x08,0x10,0x48,0x20,0x10,0x10,0x00,0x00,0x00,0x00}}, +{ 0x3105, {0x00,0x00,0x00,0x40,0x40,0xF8,0x08,0x08,0x08,0x28,0x10,0x00,0x00}}, +{ 0x3106, {0x00,0x00,0x00,0x40,0x40,0xF8,0x08,0x50,0x50,0x20,0xD8,0x00,0x00}}, +{ 0x3107, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0x3108, {0x00,0x00,0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0x3109, {0x00,0x00,0x00,0x40,0x80,0xF8,0x28,0x28,0x28,0x48,0x90,0x00,0x00}}, +{ 0x310A, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x48,0xF8,0x08,0x00}}, +{ 0x310B, {0x00,0x00,0x00,0x00,0x70,0x10,0x38,0x08,0x08,0x28,0x10,0x00,0x00}}, +{ 0x310C, {0x00,0x00,0x00,0x00,0x20,0xA0,0xF8,0x28,0x48,0x48,0x90,0x00,0x00}}, +{ 0x310D, {0x00,0x00,0x00,0x00,0x00,0x48,0x48,0x90,0x90,0x48,0x48,0x00,0x00}}, +{ 0x310E, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x78,0x08,0x08,0x30,0x00,0x00}}, +{ 0x310F, {0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x40,0x40,0x40,0x80,0x00,0x00}}, +{ 0x3110, {0x00,0x00,0x00,0x00,0x00,0x48,0x48,0x58,0x68,0x08,0x10,0x00,0x00}}, +{ 0x3111, {0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x10,0x10,0x00,0x00}}, +{ 0x3112, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x10,0x10,0x10,0x20,0x00,0x00}}, +{ 0x3113, {0x00,0x00,0x00,0x00,0x20,0xA8,0xA8,0xA8,0xF8,0x20,0xF8,0x00,0x00}}, +{ 0x3114, {0x00,0x00,0x00,0x00,0x10,0x60,0x08,0x70,0xA0,0x20,0x20,0x00,0x00}}, +{ 0x3115, {0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x78,0x40,0x40,0x40,0x80,0x00}}, +{ 0x3116, {0x00,0x00,0x00,0x00,0xF8,0x88,0xC8,0xA8,0xA8,0x88,0xF8,0x00,0x00}}, +{ 0x3117, {0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0x48,0x58,0x40,0x00}}, +{ 0x3118, {0x00,0x00,0x00,0x20,0x20,0xF8,0x40,0x78,0x08,0x10,0x20,0x00,0x00}}, +{ 0x3119, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x40,0x48,0xF8,0x08,0x00}}, +{ 0x311A, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0x311B, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x311C, {0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x60,0x80,0x88,0x70,0x00,0x00}}, +{ 0x311D, {0x00,0x00,0x00,0x00,0x50,0xF8,0x50,0x50,0x50,0x40,0x78,0x00,0x00}}, +{ 0x311E, {0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x78,0x28,0xC8,0x00,0x00}}, +{ 0x311F, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xD0,0x10,0x08,0x00,0x00,0x00}}, +{ 0x3120, {0x00,0x00,0x00,0x00,0x20,0x48,0xF0,0x20,0x40,0x50,0xF8,0x08,0x00}}, +{ 0x3121, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x50,0x50,0x20,0xD8,0x00,0x00}}, +{ 0x3122, {0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0xF8,0x08,0x08,0x00,0x00}}, +{ 0x3123, {0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xF8,0x08,0x08,0x08,0x00,0x00}}, +{ 0x3124, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x50,0x50,0x98,0x00,0x00}}, +{ 0x3125, {0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x20,0x40,0x40,0xF8,0x00,0x00}}, +{ 0x3126, {0x00,0x00,0x00,0x00,0x00,0x50,0x50,0x50,0x50,0x50,0x58,0x80,0x00}}, +{ 0x3127, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00}}, +{ 0x3128, {0x00,0x00,0x00,0x00,0x00,0xC8,0x28,0x10,0x30,0x48,0x88,0x00,0x00}}, +{ 0x3129, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0x312A, {0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x38,0x48,0x48,0x90,0x00,0x00}}, +{ 0x312B, {0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x50,0x50,0x98,0x00,0x00}}, +{ 0x312C, {0x00,0x00,0x00,0x00,0x10,0x78,0x40,0x40,0x40,0x40,0x80,0x00,0x00}}, +{ 0x3131, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x10,0x00,0x00,0x00}}, +{ 0x3132, {0x00,0x00,0x00,0xF8,0x28,0x28,0x28,0x28,0x28,0x50,0x00,0x00,0x00}}, +{ 0x3133, {0x00,0x00,0x00,0xC8,0x48,0x50,0x50,0x58,0x68,0xA8,0x00,0x00,0x00}}, +{ 0x3134, {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x3135, {0x00,0x00,0x00,0xB8,0x90,0x90,0x90,0xA8,0xA8,0xE8,0x00,0x00,0x00}}, +{ 0x3136, {0x00,0x00,0x00,0xB8,0x80,0xB8,0x80,0xB8,0xA8,0xD8,0x00,0x00,0x00}}, +{ 0x3137, {0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x3138, {0x00,0x00,0x00,0xF8,0xA0,0xA0,0xA0,0xA0,0xA0,0xF8,0x00,0x00,0x00}}, +{ 0x3139, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x313A, {0x00,0x00,0x00,0xF8,0x28,0x28,0xE8,0x88,0xA8,0xC8,0x00,0x00,0x00}}, +{ 0x313B, {0x00,0x00,0x00,0xDC,0x54,0x54,0xD4,0x94,0xB4,0xDC,0x00,0x00,0x00}}, +{ 0x313C, {0x00,0x00,0x00,0xD4,0x54,0x54,0xDC,0x94,0xB4,0xDC,0x00,0x00,0x00}}, +{ 0x313D, {0x00,0x00,0x00,0xE4,0x24,0x28,0xE8,0x94,0xB4,0xD4,0x00,0x00,0x00}}, +{ 0x313E, {0x00,0x00,0x00,0xD8,0x50,0x50,0xD8,0x90,0xB0,0xD8,0x00,0x00,0x00}}, +{ 0x313F, {0x00,0x00,0x00,0xDC,0x40,0x54,0xD4,0x94,0xA8,0xDC,0x00,0x00,0x00}}, +{ 0x3140, {0x00,0x00,0x00,0xEC,0x20,0x3C,0xE8,0x9C,0xB4,0xD8,0x00,0x00,0x00}}, +{ 0x3141, {0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x3142, {0x00,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0x3143, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0xF8,0xA8,0xA8,0xF8,0x00,0x00,0x00}}, +{ 0x3144, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0xE8,0xB4,0xB4,0xD4,0x00,0x00,0x00}}, +{ 0x3145, {0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x00,0x00,0x00}}, +{ 0x3146, {0x00,0x00,0x00,0x28,0x28,0x50,0x50,0x58,0xA8,0xA4,0x00,0x00,0x00}}, +{ 0x3147, {0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0x3148, {0x00,0x00,0x00,0xF8,0x08,0x10,0x30,0x48,0x48,0x84,0x00,0x00,0x00}}, +{ 0x3149, {0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0xA8,0xA8,0xA8,0x00,0x00,0x00}}, +{ 0x314A, {0x00,0x00,0x00,0x70,0x00,0xF8,0x20,0x20,0x50,0x88,0x00,0x00,0x00}}, +{ 0x314B, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0x10,0x00,0x00,0x00}}, +{ 0x314C, {0x00,0x00,0x00,0xF8,0x80,0x80,0xF8,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0x314D, {0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x50,0x50,0xF8,0x00,0x00,0x00}}, +{ 0x314E, {0x00,0x00,0x70,0x00,0xF8,0x00,0x70,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0x314F, {0x00,0x00,0x20,0x20,0x20,0x38,0x20,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0x3150, {0x00,0x00,0x08,0x48,0x48,0x78,0x48,0x48,0x48,0x08,0x00,0x00,0x00}}, +{ 0x3151, {0x00,0x00,0x20,0x20,0x38,0x20,0x38,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0x3152, {0x00,0x00,0x08,0x48,0x78,0x48,0x78,0x48,0x48,0x08,0x00,0x00,0x00}}, +{ 0x3153, {0x00,0x00,0x08,0x08,0x08,0x38,0x08,0x08,0x08,0x08,0x00,0x00,0x00}}, +{ 0x3154, {0x00,0x00,0x08,0x28,0x28,0xE8,0x28,0x28,0x28,0x08,0x00,0x00,0x00}}, +{ 0x3155, {0x00,0x00,0x08,0x08,0x38,0x08,0x38,0x08,0x08,0x08,0x00,0x00,0x00}}, +{ 0x3156, {0x00,0x00,0x08,0x28,0xE8,0x28,0xE8,0x28,0x28,0x08,0x00,0x00,0x00}}, +{ 0x3157, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x3158, {0x00,0x00,0x08,0x08,0x08,0x48,0x4C,0x58,0xE8,0x08,0x00,0x00,0x00}}, +{ 0x3159, {0x00,0x00,0x04,0x14,0x14,0x5C,0x54,0x74,0xD4,0x04,0x00,0x00,0x00}}, +{ 0x315A, {0x00,0x00,0x08,0x08,0x48,0x48,0x58,0xE8,0x08,0x08,0x00,0x00,0x00}}, +{ 0x315B, {0x00,0x00,0x00,0x00,0x00,0x50,0x50,0x50,0xF8,0x00,0x00,0x00,0x00}}, +{ 0x315C, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0x315D, {0x00,0x00,0x08,0x08,0x08,0x18,0xE8,0x48,0x78,0x48,0x00,0x00,0x00}}, +{ 0x315E, {0x00,0x00,0x04,0x14,0x14,0x14,0xF4,0x54,0x74,0x54,0x00,0x00,0x00}}, +{ 0x315F, {0x00,0x00,0x08,0x08,0x08,0x18,0xE8,0x48,0x48,0x48,0x00,0x00,0x00}}, +{ 0x3160, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x00,0x00,0x00}}, +{ 0x3161, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0x3162, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x18,0xE8,0x08,0x00,0x00,0x00}}, +{ 0x3163, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00}}, +{ 0xE000, {0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0xA8,0xB0,0x80,0x80}}, +{ 0xE001, {0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x90,0xF8,0x80,0x80}}, +{ 0xE002, {0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x98,0x88,0x98,0x68,0x08,0x08}}, +{ 0xE003, {0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x88,0x78,0x08,0x08}}, +{ 0xE004, {0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xD0,0x80,0x80}}, +{ 0xE005, {0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xF8,0x80,0x80}}, +{ 0xE006, {0x00,0x00,0x00,0x00,0x00,0x00,0x58,0xA8,0xA8,0xA8,0x58,0x08,0x08}}, +{ 0xE007, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xA8,0xA8,0xF8,0x08,0x08}}, +{ 0xE008, {0x00,0x00,0x00,0x00,0x80,0x80,0xB0,0xC8,0x88,0xA8,0xB0,0x00,0x00}}, +{ 0xE009, {0x00,0x00,0x00,0x00,0x80,0x80,0xB0,0xC8,0x88,0x90,0xF8,0x00,0x00}}, +{ 0xE00A, {0x00,0x00,0x00,0x00,0x08,0x08,0x38,0x48,0x88,0x98,0x68,0x00,0x00}}, +{ 0xE00B, {0x00,0x00,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0xE00C, {0x00,0x00,0x00,0x00,0x80,0x80,0xD0,0xA8,0xA8,0xA8,0xD0,0x00,0x00}}, +{ 0xE00D, {0x00,0x00,0x00,0x00,0x80,0x80,0xD0,0xA8,0xA8,0xA8,0xF8,0x00,0x00}}, +{ 0xE00E, {0x00,0x00,0x00,0x00,0x08,0x08,0x58,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0xE00F, {0x00,0x00,0x00,0x00,0x08,0x08,0xF8,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0xE010, {0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xD0,0x00,0x00}}, +{ 0xE011, {0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xF8,0x00,0x00}}, +{ 0xE012, {0x00,0x00,0x00,0x00,0x00,0x00,0x58,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0xE013, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xA8,0xA8,0xA8,0x58,0x00,0x00}}, +{ 0xE014, {0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0xA8,0xB0,0x00,0x00}}, +{ 0xE015, {0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x90,0xF8,0x00,0x00}}, +{ 0xE016, {0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0xE017, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0x88,0x98,0x68,0x08,0x00}}, +{ 0xE018, {0x00,0x00,0x00,0x00,0x00,0xE0,0x50,0x50,0x20,0x20,0x40,0x98,0x60}}, +{ 0xE019, {0x00,0x00,0x00,0x00,0x00,0xE0,0x50,0x50,0xA0,0x20,0x40,0x98,0x60}}, +{ 0xE01A, {0x00,0x00,0x00,0x00,0x00,0xF8,0x40,0x80,0x80,0x80,0x48,0x30,0x00}}, +{ 0xE01B, {0x00,0x00,0x00,0x00,0x00,0xF8,0x40,0x80,0x60,0x10,0x08,0x88,0x70}}, +{ 0xE01C, {0x00,0x00,0x00,0x10,0x20,0x40,0x80,0x80,0x98,0x88,0x70,0x00,0x00}}, +{ 0xE01D, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xC8,0x08,0x08,0x10,0x20,0x40}}, +{ 0xE01E, {0x00,0x00,0x00,0x00,0x30,0x40,0x80,0x90,0x90,0x60,0x88,0x88,0x70}}, +{ 0xE01F, {0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x30,0x48,0x48,0x08,0x10,0x60}}, +{ 0xE020, {0x00,0x00,0x00,0x00,0x40,0x40,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0xE021, {0x00,0x00,0x00,0x00,0x10,0x10,0x70,0xB0,0x90,0x90,0x78,0x00,0x00}}, +{ 0xE022, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x50,0x88,0x00,0x00}}, +{ 0xE023, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0xE024, {0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xE025, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xE026, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0xE027, {0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x90,0x90,0xB0,0x48,0x00,0x00}}, +{ 0xE028, {0x00,0x00,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0xA8,0xB0,0x80,0x80}}, +{ 0xE029, {0x00,0x00,0x00,0x00,0x80,0x80,0xF0,0x88,0x88,0x90,0xF8,0x80,0x80}}, +{ 0xE02A, {0x00,0x00,0x00,0x00,0x08,0x08,0x78,0x88,0x88,0x98,0x68,0x08,0x08}}, +{ 0xE02B, {0x00,0x00,0x00,0x00,0x08,0x08,0xF8,0x88,0x88,0x88,0x78,0x08,0x08}}, +{ 0xE030, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x08,0x48,0x30,0x00,0x00}}, +{ 0xE031, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x08,0x10,0x70,0x00,0x00}}, +{ 0xE032, {0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0xE033, {0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x20,0x40,0x48,0x30,0x00,0x00}}, +{ 0xE034, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE035, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE036, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE037, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE038, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE039, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE03A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE03B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE03C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE03D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE03E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE03F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE040, {0x00,0x00,0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE041, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x20}}, +{ 0xE042, {0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE043, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00}}, +{ 0xE044, {0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE045, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00}}, +{ 0xE046, {0x00,0x10,0x10,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE047, {0x00,0x00,0x00,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE048, {0x00,0x20,0x50,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE049, {0x00,0x70,0xA8,0xB0,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE04A, {0x00,0x20,0x50,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE04B, {0x00,0x70,0xA8,0x68,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE04C, {0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE04D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78}}, +{ 0xE04E, {0x00,0x40,0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE04F, {0x00,0x00,0x00,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE050, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00}}, +{ 0xE051, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00}}, +{ 0xE052, {0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x20,0x10,0x10,0x20,0x00,0x00}}, +{ 0xE053, {0x00,0x00,0xA0,0xD0,0x88,0xA8,0xD0,0x88,0x88,0xA8,0xB0,0x80,0x80}}, +{ 0xE054, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xA8,0x10,0x00,0x00,0x00}}, +{ 0xE055, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF8,0x10,0x00,0x00,0x00}}, +{ 0xE056, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20}}, +{ 0xE057, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x90}}, +{ 0xE058, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x50,0x60}}, +{ 0xE059, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE05A, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x50,0x30}}, +{ 0xE05B, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE05C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x18}}, +{ 0xE05D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x60}}, +{ 0xE05E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE05F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE060, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE061, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE062, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x28,0x00,0x00}}, +{ 0xE063, {0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xA8,0xA8,0xA8,0x54,0x00,0x00}}, +{ 0xE064, {0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x48,0x30}}, +{ 0xE065, {0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xF0,0xA0,0xA0,0xB8,0x90,0x60}}, +{ 0xE066, {0x00,0x00,0x00,0x00,0x80,0x80,0xFC,0xA8,0xA8,0xA8,0x9C,0x90,0x70}}, +{ 0xE067, {0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20}}, +{ 0xE068, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x30,0x28,0x38,0xA0,0x40}}, +{ 0xE069, {0x00,0x00,0x00,0x00,0x40,0x40,0x68,0x54,0x54,0x54,0x7C,0x80,0x00}}, +{ 0xE06A, {0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x08,0x48,0x88,0x70,0x00,0x00}}, +{ 0xE06B, {0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x08,0x48,0x88,0x70,0x08,0x70}}, +{ 0xE06C, {0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xE06D, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20}}, +{ 0xE06E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20}}, +{ 0xFB00, {0x00,0x00,0x28,0x54,0x50,0x50,0xF8,0x50,0x50,0x50,0x50,0x00,0x00}}, +{ 0xFB01, {0x00,0x00,0x30,0x48,0x48,0x40,0xF8,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0xFB02, {0x00,0x00,0x38,0x48,0x48,0x48,0xF8,0x48,0x48,0x48,0x48,0x00,0x00}}, +{ 0xFB03, {0x00,0x00,0x50,0xA8,0xA0,0xA8,0xF8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0xFB04, {0x00,0x00,0x58,0xA8,0xA8,0xA8,0xF8,0xA8,0xA8,0xA8,0xA8,0x00,0x00}}, +{ 0xFB05, {0x00,0x00,0x30,0x50,0x50,0x50,0x58,0x50,0x50,0x50,0x48,0x00,0x00}}, +{ 0xFB06, {0x00,0x00,0x30,0x50,0x50,0xB8,0x90,0x50,0x30,0x30,0xC8,0x00,0x00}}, +{ 0xFB13, {0x00,0x00,0x58,0x60,0x20,0xB4,0xB4,0xB4,0xB4,0xB4,0x6C,0x00,0x00}}, +{ 0xFB14, {0x00,0x00,0x10,0x38,0x30,0xB4,0xB4,0xB4,0xB4,0xBC,0x74,0x00,0x00}}, +{ 0xFB15, {0x00,0x00,0x10,0x30,0x30,0xB8,0xB4,0xB4,0xB4,0xB4,0x74,0x10,0x10}}, +{ 0xFB16, {0x00,0x00,0x60,0x60,0x70,0xB4,0xB4,0xB4,0xB4,0xB4,0x6C,0x20,0x30}}, +{ 0xFB17, {0x00,0x00,0x20,0x60,0x60,0xF4,0xF4,0xF4,0xF4,0xF4,0x6C,0x20,0x20}}, +{ 0xFB1D, {0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x00,0x10,0x00,0x00,0x00}}, +{ 0xFB1E, {0x00,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFB1F, {0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x00,0xF8,0x00,0x00,0x00}}, +{ 0xFB20, {0x00,0x00,0x00,0x00,0x00,0x98,0x48,0x48,0x28,0x28,0xF0,0x00,0x00}}, +{ 0xFB21, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x00}}, +{ 0xFB22, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0xFB23, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFB24, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x00}}, +{ 0xFB25, {0x00,0x00,0x80,0x80,0x80,0xF8,0x08,0x08,0x08,0x10,0x60,0x00,0x00}}, +{ 0xFB26, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0x78,0x00,0x00}}, +{ 0xFB27, {0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0x08,0x08,0x08,0x08,0x00,0x00}}, +{ 0xFB28, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xC8,0x00,0x00}}, +{ 0xFB29, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x00,0x00}}, +{ 0xFB2A, {0x00,0x00,0x00,0x10,0x00,0xA8,0xA8,0xA8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0xFB2B, {0x00,0x00,0x00,0x80,0x00,0xA8,0xA8,0xA8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0xFB2C, {0x00,0x00,0x00,0x10,0x00,0xA8,0xA8,0xB8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0xFB2D, {0x00,0x00,0x00,0x80,0x00,0xA8,0xA8,0xB8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0xFB2E, {0x00,0x00,0x00,0x00,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x70,0x00}}, +{ 0xFB2F, {0x00,0x00,0x00,0x00,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x70,0x20}}, +{ 0xFB30, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x20}}, +{ 0xFB31, {0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x50,0x10,0x10,0xF8,0x00,0x00}}, +{ 0xFB32, {0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x90,0x28,0x48,0x00,0x00}}, +{ 0xFB33, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x10,0x50,0x10,0x10,0x00,0x00}}, +{ 0xFB34, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0xA8,0x88,0x88,0x00,0x00}}, +{ 0xFB35, {0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x10,0x50,0x10,0x10,0x00,0x00}}, +{ 0xFB36, {0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x10,0x50,0x10,0x00,0x00}}, +{ 0xFB38, {0x00,0x00,0x00,0x00,0x00,0x98,0x88,0xA8,0x88,0x88,0xF8,0x00,0x00}}, +{ 0xFB39, {0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x50,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFB3A, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x28,0x08,0x08,0x08,0x08}}, +{ 0xFB3B, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x48,0x08,0x08,0xF0,0x00,0x00}}, +{ 0xFB3C, {0x00,0x00,0x80,0x80,0x80,0xF8,0x08,0x48,0x08,0x10,0x60,0x00,0x00}}, +{ 0xFB3E, {0x00,0x00,0x00,0x00,0x00,0xB0,0x48,0x88,0xA8,0x88,0xB8,0x00,0x00}}, +{ 0xFB40, {0x00,0x00,0x00,0x00,0x00,0x18,0x08,0x28,0x08,0x08,0x78,0x00,0x00}}, +{ 0xFB41, {0x00,0x00,0x00,0x00,0x00,0xF8,0x88,0xA8,0x88,0x90,0xE0,0x00,0x00}}, +{ 0xFB43, {0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x28,0x08,0x08,0x08,0x08}}, +{ 0xFB44, {0x00,0x00,0x00,0x00,0x00,0x78,0x88,0xA8,0x08,0x08,0xF0,0x00,0x00}}, +{ 0xFB46, {0x00,0x00,0x00,0x00,0x00,0x90,0x48,0x28,0x90,0x08,0xF8,0x00,0x00}}, +{ 0xFB47, {0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0xA8,0x88,0x88,0xB0,0x80,0x80}}, +{ 0xFB48, {0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0x28,0x08,0x08,0x08,0x00,0x00}}, +{ 0xFB49, {0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0xB8,0xE8,0x88,0xF0,0x00,0x00}}, +{ 0xFB4A, {0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x58,0x48,0x48,0xC8,0x00,0x00}}, +{ 0xFB4B, {0x00,0x00,0x00,0x20,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0x00,0x00}}, +{ 0xFB4C, {0x00,0x00,0x00,0x70,0x00,0xF0,0x10,0x10,0x10,0x10,0xF8,0x00,0x00}}, +{ 0xFB4D, {0x00,0x00,0x00,0x70,0x00,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x00}}, +{ 0xFB4E, {0x00,0x00,0x00,0x70,0x00,0x78,0x88,0x88,0x08,0x08,0xF0,0x00,0x00}}, +{ 0xFB4F, {0x00,0x00,0x80,0x80,0x80,0x90,0x48,0x68,0x90,0x88,0xC8,0x00,0x00}}, +{ 0xFE20, {0x00,0x3C,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFE21, {0x00,0xE0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFE22, {0x00,0x3C,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFE23, {0x00,0x08,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF01, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0xFF02, {0x00,0x00,0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF03, {0x00,0x00,0x00,0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x00,0x00,0x00}}, +{ 0xFF04, {0x00,0x00,0x20,0x78,0xA0,0xA0,0x70,0x28,0x28,0xF0,0x20,0x00,0x00}}, +{ 0xFF05, {0x00,0x00,0x48,0xA8,0x50,0x10,0x20,0x40,0x50,0xA8,0x90,0x00,0x00}}, +{ 0xFF06, {0x00,0x00,0x40,0xA0,0xA0,0x40,0xA0,0x98,0x90,0x68,0x00,0x00,0x00}}, +{ 0xFF07, {0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF08, {0x00,0x10,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x10,0x00}}, +{ 0xFF09, {0x00,0x40,0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x00}}, +{ 0xFF0A, {0x00,0x00,0x00,0x20,0xA8,0xF8,0x70,0xF8,0xA8,0x20,0x00,0x00,0x00}}, +{ 0xFF0B, {0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00,0x00}}, +{ 0xFF0C, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x20,0x40,0x00}}, +{ 0xFF0D, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF0E, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00}}, +{ 0xFF0F, {0x00,0x00,0x08,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0x80,0x00,0x00}}, +{ 0xFF10, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0x88,0x88,0x50,0x20,0x00,0x00}}, +{ 0xFF11, {0x00,0x00,0x20,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0xFF12, {0x00,0x00,0x70,0x88,0x88,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0xFF13, {0x00,0x00,0xF8,0x08,0x10,0x20,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0xFF14, {0x00,0x00,0x10,0x10,0x30,0x50,0x50,0x90,0xF8,0x10,0x10,0x00,0x00}}, +{ 0xFF15, {0x00,0x00,0xF8,0x80,0x80,0xB0,0xC8,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0xFF16, {0x00,0x00,0x70,0x88,0x80,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0xFF17, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x00,0x00}}, +{ 0xFF18, {0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0xFF19, {0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0xFF1A, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x20,0x70,0x20,0x00}}, +{ 0xFF1B, {0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x30,0x20,0x40,0x00}}, +{ 0xFF1C, {0x00,0x00,0x08,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x08,0x00,0x00}}, +{ 0xFF1D, {0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00}}, +{ 0xFF1E, {0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x80,0x00,0x00}}, +{ 0xFF1F, {0x00,0x00,0x70,0x88,0x88,0x08,0x10,0x20,0x20,0x00,0x20,0x00,0x00}}, +{ 0xFF20, {0x00,0x00,0x70,0x88,0x88,0x98,0xA8,0xA8,0xB0,0x80,0x78,0x00,0x00}}, +{ 0xFF21, {0x00,0x00,0x20,0x50,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFF22, {0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0xFF23, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0xFF24, {0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00}}, +{ 0xFF25, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0xFF26, {0x00,0x00,0xF8,0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0xFF27, {0x00,0x00,0x70,0x88,0x80,0x80,0x80,0x98,0x88,0x88,0x70,0x00,0x00}}, +{ 0xFF28, {0x00,0x00,0x88,0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFF29, {0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0xFF2A, {0x00,0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x60,0x00,0x00}}, +{ 0xFF2B, {0x00,0x00,0x88,0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0xFF2C, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00}}, +{ 0xFF2D, {0x00,0x00,0x88,0x88,0xD8,0xA8,0xA8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFF2E, {0x00,0x00,0x88,0xC8,0xC8,0xA8,0xA8,0x98,0x98,0x88,0x88,0x00,0x00}}, +{ 0xFF2F, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0xFF30, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0xFF31, {0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0xA8,0x70,0x08,0x00}}, +{ 0xFF32, {0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0xA0,0x90,0x88,0x88,0x00,0x00}}, +{ 0xFF33, {0x00,0x00,0x70,0x88,0x80,0x80,0x70,0x08,0x08,0x88,0x70,0x00,0x00}}, +{ 0xFF34, {0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xFF35, {0x00,0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0xFF36, {0x00,0x00,0x88,0x88,0x88,0x88,0x50,0x50,0x50,0x20,0x20,0x00,0x00}}, +{ 0xFF37, {0x00,0x00,0x88,0x88,0x88,0x88,0xA8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0xFF38, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x88,0x00,0x00}}, +{ 0xFF39, {0x00,0x00,0x88,0x88,0x50,0x50,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xFF3A, {0x00,0x00,0xF8,0x08,0x10,0x10,0x20,0x40,0x40,0x80,0xF8,0x00,0x00}}, +{ 0xFF3B, {0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00}}, +{ 0xFF3C, {0x00,0x00,0x80,0x80,0x40,0x40,0x20,0x10,0x10,0x08,0x08,0x00,0x00}}, +{ 0xFF3D, {0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00}}, +{ 0xFF3E, {0x00,0x00,0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF3F, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00}}, +{ 0xFF40, {0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF41, {0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x78,0x88,0x88,0x78,0x00,0x00}}, +{ 0xFF42, {0x00,0x00,0x80,0x80,0x80,0xF0,0x88,0x88,0x88,0x88,0xF0,0x00,0x00}}, +{ 0xFF43, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x80,0x80,0x88,0x70,0x00,0x00}}, +{ 0xFF44, {0x00,0x00,0x08,0x08,0x08,0x78,0x88,0x88,0x88,0x88,0x78,0x00,0x00}}, +{ 0xFF45, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0xF8,0x80,0x88,0x70,0x00,0x00}}, +{ 0xFF46, {0x00,0x00,0x30,0x48,0x40,0x40,0xF0,0x40,0x40,0x40,0x40,0x00,0x00}}, +{ 0xFF47, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x88,0x70}}, +{ 0xFF48, {0x00,0x00,0x80,0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFF49, {0x00,0x00,0x00,0x20,0x00,0x60,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0xFF4A, {0x00,0x00,0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x10,0x90,0x90,0x60}}, +{ 0xFF4B, {0x00,0x00,0x80,0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00,0x00}}, +{ 0xFF4C, {0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00}}, +{ 0xFF4D, {0x00,0x00,0x00,0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x88,0x00,0x00}}, +{ 0xFF4E, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFF4F, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00}}, +{ 0xFF50, {0x00,0x00,0x00,0x00,0x00,0xF0,0x88,0x88,0x88,0xF0,0x80,0x80,0x80}}, +{ 0xFF51, {0x00,0x00,0x00,0x00,0x00,0x78,0x88,0x88,0x88,0x78,0x08,0x08,0x08}}, +{ 0xFF52, {0x00,0x00,0x00,0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x80,0x00,0x00}}, +{ 0xFF53, {0x00,0x00,0x00,0x00,0x00,0x70,0x88,0x60,0x10,0x88,0x70,0x00,0x00}}, +{ 0xFF54, {0x00,0x00,0x00,0x40,0x40,0xF0,0x40,0x40,0x40,0x48,0x30,0x00,0x00}}, +{ 0xFF55, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x88,0x98,0x68,0x00,0x00}}, +{ 0xFF56, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x20,0x00,0x00}}, +{ 0xFF57, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00,0x00}}, +{ 0xFF58, {0x00,0x00,0x00,0x00,0x00,0x88,0x50,0x20,0x20,0x50,0x88,0x00,0x00}}, +{ 0xFF59, {0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x08,0x88,0x70}}, +{ 0xFF5A, {0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x20,0x40,0x80,0xF8,0x00,0x00}}, +{ 0xFF5B, {0x00,0x18,0x20,0x20,0x20,0x20,0xC0,0x20,0x20,0x20,0x20,0x18,0x00}}, +{ 0xFF5C, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xFF5D, {0x00,0xC0,0x20,0x20,0x20,0x20,0x18,0x20,0x20,0x20,0x20,0xC0,0x00}}, +{ 0xFF5E, {0x00,0x00,0x48,0xA8,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF61, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x50,0x20,0x00,0x00}}, +{ 0xFF62, {0x00,0x00,0x70,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF63, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x70,0x00,0x00}}, +{ 0xFF64, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x00,0x00}}, +{ 0xFF65, {0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF66, {0x00,0x00,0x00,0xF8,0x08,0xF8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0xFF67, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x50,0x40,0x80,0x00,0x00}}, +{ 0xFF68, {0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x60,0xA0,0x20,0x00,0x00}}, +{ 0xFF69, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xE0,0xA0,0x20,0x40,0x00,0x00}}, +{ 0xFF6A, {0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0xFF6B, {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF0,0x20,0x60,0xA0,0x00,0x00}}, +{ 0xFF6C, {0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x78,0xC8,0x20,0x20,0x00,0x00}}, +{ 0xFF6D, {0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0xFF6E, {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x70,0x10,0xF0,0x00,0x00}}, +{ 0xFF6F, {0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x08,0x10,0xE0,0x00,0x00}}, +{ 0xFF70, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF71, {0x00,0x00,0xF8,0x08,0x08,0x28,0x30,0x20,0x20,0x40,0x80,0x00,0x00}}, +{ 0xFF72, {0x00,0x00,0x08,0x10,0x20,0x60,0xA0,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xFF73, {0x00,0x20,0x20,0xF8,0x88,0x88,0x08,0x08,0x10,0x20,0x40,0x00,0x00}}, +{ 0xFF74, {0x00,0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00}}, +{ 0xFF75, {0x00,0x10,0x10,0xF8,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x00,0x00}}, +{ 0xFF76, {0x00,0x00,0x20,0x20,0xFC,0x24,0x24,0x24,0x44,0x44,0x98,0x00,0x00}}, +{ 0xFF77, {0x00,0x00,0x40,0x40,0x58,0xE0,0x20,0x38,0xD0,0x10,0x10,0x00,0x00}}, +{ 0xFF78, {0x00,0x00,0x40,0x78,0x48,0x88,0x08,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0xFF79, {0x00,0x00,0x40,0x40,0x7C,0x88,0x08,0x08,0x10,0x10,0x20,0x00,0x00}}, +{ 0xFF7A, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0xFF7B, {0x00,0x00,0x48,0x48,0xFC,0x48,0x48,0x08,0x10,0x10,0x20,0x00,0x00}}, +{ 0xFF7C, {0x00,0x00,0x00,0x80,0x40,0x00,0x88,0x48,0x10,0x20,0xC0,0x00,0x00}}, +{ 0xFF7D, {0x00,0x00,0xF8,0x08,0x08,0x08,0x10,0x10,0x30,0x48,0x84,0x00,0x00}}, +{ 0xFF7E, {0x00,0x00,0x40,0x40,0x7C,0xC4,0x48,0x40,0x40,0x40,0x3C,0x00,0x00}}, +{ 0xFF7F, {0x00,0x00,0x00,0x88,0x48,0x48,0x10,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0xFF80, {0x00,0x00,0x40,0x78,0x48,0x88,0x28,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0xFF81, {0x00,0x00,0x10,0x20,0x60,0x20,0xF8,0x20,0x20,0x40,0x80,0x00,0x00}}, +{ 0xFF82, {0x00,0x00,0x00,0xA0,0xA8,0xA8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0xFF83, {0x00,0x00,0x78,0x00,0x00,0xFC,0x10,0x10,0x20,0x20,0xC0,0x00,0x00}}, +{ 0xFF84, {0x00,0x00,0x80,0x80,0x80,0xC0,0xA0,0x90,0x80,0x80,0x80,0x00,0x00}}, +{ 0xFF85, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x20,0x40,0x40,0x80,0x00,0x00}}, +{ 0xFF86, {0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00}}, +{ 0xFF87, {0x00,0x00,0x00,0xF8,0x08,0x48,0x30,0x10,0x28,0x40,0x80,0x00,0x00}}, +{ 0xFF88, {0x00,0x00,0x20,0x20,0xF8,0x08,0x10,0x30,0x68,0xA4,0x20,0x00,0x00}}, +{ 0xFF89, {0x00,0x00,0x00,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x80,0x00,0x00}}, +{ 0xFF8A, {0x00,0x00,0x00,0x50,0x50,0x50,0x48,0x48,0x88,0x88,0x88,0x00,0x00}}, +{ 0xFF8B, {0x00,0x00,0x80,0x80,0xF8,0x80,0x80,0x80,0x80,0x80,0x78,0x00,0x00}}, +{ 0xFF8C, {0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0xC0,0x00,0x00}}, +{ 0xFF8D, {0x00,0x00,0x00,0x20,0x20,0x50,0x50,0x88,0x88,0x04,0x04,0x00,0x00}}, +{ 0xFF8E, {0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0xA8,0xA8,0x20,0x20,0x00,0x00}}, +{ 0xFF8F, {0x00,0x00,0xF8,0x08,0x08,0x10,0x50,0x60,0x20,0x10,0x10,0x00,0x00}}, +{ 0xFF90, {0x00,0x00,0xC0,0x30,0x00,0xC0,0x30,0x00,0x80,0x60,0x18,0x00,0x00}}, +{ 0xFF91, {0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x50,0x48,0xB8,0xC4,0x00,0x00}}, +{ 0xFF92, {0x00,0x00,0x08,0x08,0x48,0x28,0x10,0x10,0x28,0x40,0x80,0x00,0x00}}, +{ 0xFF93, {0x00,0x00,0xF0,0x40,0x40,0xF8,0x40,0x40,0x40,0x40,0x38,0x00,0x00}}, +{ 0xFF94, {0x00,0x00,0x40,0x40,0x5C,0xE4,0x24,0x28,0x10,0x10,0x10,0x00,0x00}}, +{ 0xFF95, {0x00,0x00,0x00,0x78,0x08,0x08,0x08,0x10,0x10,0x10,0xFC,0x00,0x00}}, +{ 0xFF96, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00}}, +{ 0xFF97, {0x00,0x00,0xF8,0x00,0x00,0xF8,0x08,0x08,0x10,0x20,0xC0,0x00,0x00}}, +{ 0xFF98, {0x00,0x00,0x88,0x88,0x88,0x88,0x08,0x10,0x10,0x20,0x40,0x00,0x00}}, +{ 0xFF99, {0x00,0x00,0x00,0x50,0x50,0x50,0x50,0x90,0x90,0x94,0x98,0x00,0x00}}, +{ 0xFF9A, {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x90,0xE0,0x00,0x00}}, +{ 0xFF9B, {0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00}}, +{ 0xFF9C, {0x00,0x00,0xF8,0x88,0x88,0x88,0x10,0x10,0x20,0x20,0x40,0x00,0x00}}, +{ 0xFF9D, {0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x04,0x08,0x30,0xC0,0x00,0x00}}, +{ 0xFF9E, {0x40,0x20,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFF9F, {0x40,0xA0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFFA1, {0x00,0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0x10,0x00,0x00,0x00}}, +{ 0xFFA2, {0x00,0x00,0x00,0xF8,0x28,0x28,0x28,0x28,0x28,0x50,0x00,0x00,0x00}}, +{ 0xFFA3, {0x00,0x00,0x00,0xC8,0x48,0x50,0x50,0x58,0x68,0xA8,0x00,0x00,0x00}}, +{ 0xFFA4, {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0xFFA5, {0x00,0x00,0x00,0xB8,0x90,0x90,0x90,0xA8,0xA8,0xE8,0x00,0x00,0x00}}, +{ 0xFFA6, {0x00,0x00,0x00,0xB8,0x80,0xB8,0x80,0xB8,0xA8,0xD8,0x00,0x00,0x00}}, +{ 0xFFA7, {0x00,0x00,0x00,0xF8,0x80,0x80,0x80,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0xFFA8, {0x00,0x00,0x00,0xF8,0xA0,0xA0,0xA0,0xA0,0xA0,0xF8,0x00,0x00,0x00}}, +{ 0xFFA9, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0xFFAA, {0x00,0x00,0x00,0xF8,0x28,0x28,0xE8,0x88,0xA8,0xC8,0x00,0x00,0x00}}, +{ 0xFFAB, {0x00,0x00,0x00,0xDC,0x54,0x54,0xD4,0x94,0xB4,0xDC,0x00,0x00,0x00}}, +{ 0xFFAC, {0x00,0x00,0x00,0xD4,0x54,0x54,0xDC,0x94,0xB4,0xDC,0x00,0x00,0x00}}, +{ 0xFFAD, {0x00,0x00,0x00,0xE4,0x24,0x28,0xE8,0x94,0xB4,0xD4,0x00,0x00,0x00}}, +{ 0xFFAE, {0x00,0x00,0x00,0xD8,0x50,0x50,0xD8,0x90,0xB0,0xD8,0x00,0x00,0x00}}, +{ 0xFFAF, {0x00,0x00,0x00,0xDC,0x40,0x54,0xD4,0x94,0xA8,0xDC,0x00,0x00,0x00}}, +{ 0xFFB0, {0x00,0x00,0x00,0xEC,0x20,0x3C,0xE8,0x9C,0xB4,0xD8,0x00,0x00,0x00}}, +{ 0xFFB1, {0x00,0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0xFFB2, {0x00,0x00,0x00,0x88,0x88,0x88,0xF8,0x88,0x88,0xF8,0x00,0x00,0x00}}, +{ 0xFFB3, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0xF8,0xA8,0xA8,0xF8,0x00,0x00,0x00}}, +{ 0xFFB4, {0x00,0x00,0x00,0xA8,0xA8,0xA8,0xE8,0xB4,0xB4,0xD4,0x00,0x00,0x00}}, +{ 0xFFB5, {0x00,0x00,0x00,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x00,0x00,0x00}}, +{ 0xFFB6, {0x00,0x00,0x00,0x28,0x28,0x50,0x50,0x58,0xA8,0xA4,0x00,0x00,0x00}}, +{ 0xFFB7, {0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0xFFB8, {0x00,0x00,0x00,0xF8,0x08,0x10,0x30,0x48,0x48,0x84,0x00,0x00,0x00}}, +{ 0xFFB9, {0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0xA8,0xA8,0xA8,0x00,0x00,0x00}}, +{ 0xFFBA, {0x00,0x00,0x00,0x70,0x00,0xF8,0x20,0x20,0x50,0x88,0x00,0x00,0x00}}, +{ 0xFFBB, {0x00,0x00,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0x10,0x00,0x00,0x00}}, +{ 0xFFBC, {0x00,0x00,0x00,0xF8,0x80,0x80,0xF8,0x80,0x80,0xF8,0x00,0x00,0x00}}, +{ 0xFFBD, {0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x50,0x50,0xF8,0x00,0x00,0x00}}, +{ 0xFFBE, {0x00,0x00,0x70,0x00,0xF8,0x00,0x70,0x88,0x88,0x70,0x00,0x00,0x00}}, +{ 0xFFC2, {0x00,0x00,0x20,0x20,0x20,0x38,0x20,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0xFFC3, {0x00,0x00,0x08,0x48,0x48,0x78,0x48,0x48,0x48,0x08,0x00,0x00,0x00}}, +{ 0xFFC4, {0x00,0x00,0x20,0x20,0x38,0x20,0x38,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0xFFC5, {0x00,0x00,0x08,0x48,0x78,0x48,0x78,0x48,0x48,0x08,0x00,0x00,0x00}}, +{ 0xFFC6, {0x00,0x00,0x08,0x08,0x08,0x38,0x08,0x08,0x08,0x08,0x00,0x00,0x00}}, +{ 0xFFC7, {0x00,0x00,0x08,0x28,0x28,0xE8,0x28,0x28,0x28,0x08,0x00,0x00,0x00}}, +{ 0xFFCA, {0x00,0x00,0x08,0x08,0x38,0x08,0x38,0x08,0x08,0x08,0x00,0x00,0x00}}, +{ 0xFFCB, {0x00,0x00,0x08,0x28,0xE8,0x28,0xE8,0x28,0x28,0x08,0x00,0x00,0x00}}, +{ 0xFFCC, {0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0xF8,0x00,0x00,0x00,0x00}}, +{ 0xFFCD, {0x00,0x00,0x08,0x08,0x08,0x48,0x4C,0x58,0xE8,0x08,0x00,0x00,0x00}}, +{ 0xFFCE, {0x00,0x00,0x04,0x14,0x14,0x5C,0x54,0x74,0xD4,0x04,0x00,0x00,0x00}}, +{ 0xFFCF, {0x00,0x00,0x08,0x08,0x48,0x48,0x58,0xE8,0x08,0x08,0x00,0x00,0x00}}, +{ 0xFFD2, {0x00,0x00,0x00,0x00,0x00,0x50,0x50,0x50,0xF8,0x00,0x00,0x00,0x00}}, +{ 0xFFD3, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x20,0x20,0x20,0x00,0x00,0x00}}, +{ 0xFFD4, {0x00,0x00,0x08,0x08,0x08,0x18,0xE8,0x48,0x78,0x48,0x00,0x00,0x00}}, +{ 0xFFD5, {0x00,0x00,0x04,0x14,0x14,0x14,0xF4,0x54,0x74,0x54,0x00,0x00,0x00}}, +{ 0xFFD6, {0x00,0x00,0x08,0x08,0x08,0x18,0xE8,0x48,0x48,0x48,0x00,0x00,0x00}}, +{ 0xFFD7, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x50,0x50,0x50,0x00,0x00,0x00}}, +{ 0xFFDA, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFFDB, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x18,0xE8,0x08,0x00,0x00,0x00}}, +{ 0xFFDC, {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00}}, +{ 0xFFE0, {0x00,0x00,0x20,0x70,0xA8,0xA0,0xA0,0xA8,0x70,0x20,0x00,0x00,0x00}}, +{ 0xFFE1, {0x00,0x00,0x30,0x48,0x40,0x40,0xE0,0x40,0x40,0x48,0xB0,0x00,0x00}}, +{ 0xFFE2, {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x08,0x00,0x00,0x00,0x00}}, +{ 0xFFE3, {0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, +{ 0xFFE4, {0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xFFE5, {0x00,0x00,0x88,0x88,0x50,0x50,0xF8,0x20,0xF8,0x20,0x20,0x00,0x00}}, +{ 0xFFE6, {0x00,0x00,0x88,0x88,0xF8,0x88,0xF8,0xA8,0xA8,0xD8,0x88,0x00,0x00}}, +{ 0xFFE8, {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}}, +{ 0xFFE9, {0x00,0x00,0x00,0x00,0x00,0x20,0x40,0xF8,0x40,0x20,0x00,0x00,0x00}}, +{ 0xFFEA, {0x00,0x00,0x20,0x70,0xA8,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00}}, +{ 0xFFEB, {0x00,0x00,0x00,0x00,0x00,0x20,0x10,0xF8,0x10,0x20,0x00,0x00,0x00}}, +{ 0xFFEC, {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0xA8,0x70,0x20,0x00,0x00}}, +{ 0xFFED, {0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF8,0xF8,0xF8,0x00,0x00,0x00}}, +{ 0xFFEE, {0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x48,0x30,0x00,0x00,0x00}}, +{ 0xFFFC, {0x54,0xA0,0xA4,0xA0,0x74,0x28,0xB4,0x28,0xBC,0x04,0x84,0x14,0xA8}}, +{ 0xFFFD, {0x00,0x00,0x70,0xD8,0xA8,0xE8,0xD8,0xD8,0xF8,0xD8,0x70,0x00,0x00}}, diff --git a/libmednahawk/src/video/font9x18.h b/libmednahawk/src/video/font9x18.h new file mode 100644 index 0000000000..5b83a0842b --- /dev/null +++ b/libmednahawk/src/video/font9x18.h @@ -0,0 +1,4752 @@ +{ 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x01, 0x00, 0x40, 0x00, 0x41, 0x00, 0x01, 0x00, 0x40, 0x00, 0x41, 0x00, 0x01, 0x00, 0x40, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0023, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0xFF, 0x00, 0x24, 0x00, 0x24, 0x00, 0xFF, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0024, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x48, 0x00, 0x28, 0x00, 0x1C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x52, 0x00, 0x52, 0x00, 0x24, 0x00, 0x08, 0x00, 0x08, 0x00, 0x12, 0x00, 0x25, 0x00, 0x25, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x31, 0x00, 0x4A, 0x00, 0x44, 0x00, 0x4A, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0027, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0028, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0029, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x002F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0031, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x22, 0x00, 0x42, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0037, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0038, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x23, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x003F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0040, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x4D, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x4E, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0042, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0046, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0048, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x004F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0051, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x45, 0x00, 0x22, 0x00, 0x1D, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0052, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0053, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0054, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0055, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0056, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0057, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0058, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0059, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x005F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0060, { 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0061, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0062, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0064, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0065, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0066, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0067, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x0068, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0069, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x006B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x006F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0070, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x0071, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x23, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x23, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x0072, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0073, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x007A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x30, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x007E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x49, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x4A, 0x00, 0x48, 0x00, 0x50, 0x00, 0x52, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0x51, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x20, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x04, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A8, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x99, 0x00, 0xA5, 0x00, 0xA1, 0x00, 0xA5, 0x00, 0x99, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x38, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x48, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0xB9, 0x00, 0xA5, 0x00, 0xBD, 0x00, 0xA9, 0x00, 0xA5, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x10, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B4, { 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x5D, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3D, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x00B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x73, 0x00, 0x05, 0x00, 0x09, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x26, 0x00, 0x79, 0x00, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x10, 0x00, 0x08, 0x00, 0x49, 0x00, 0x33, 0x00, 0x05, 0x00, 0x09, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C0, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C1, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C2, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C3, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C4, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C5, { 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x27, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x44, 0x00, 0x44, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x00C8, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00C9, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CA, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CB, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CC, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CD, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CE, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00CF, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x79, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D1, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D2, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D3, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D4, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D5, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D6, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x49, 0x00, 0x51, 0x00, 0x51, 0x00, 0x61, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00D9, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DA, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DB, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DC, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DD, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x68, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E5, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x09, 0x00, 0x09, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x00E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EC, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00ED, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EE, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x18, 0x00, 0x28, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x51, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x00FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x00FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x0100, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0101, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0102, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, }}, +{ 0x0105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0106, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0108, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010A, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010C, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010E, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x010F, { 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0xF1, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x80, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0112, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0114, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0116, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x011A, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011C, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x011E, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x011F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x0120, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x0122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0123, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x0124, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0125, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0xFF, 0x80, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xF8, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0128, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012A, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012C, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x012E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x012F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x0130, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x29, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x77, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x7D, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0134, { 0x04, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0135, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x0136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x0137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x0138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x70, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0139, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013A, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x013C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x013D, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013E, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x013F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x28, 0x00, 0x30, 0x00, 0x60, 0x00, 0xA0, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0143, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0147, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x014B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x014C, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014E, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x014F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0150, { 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0151, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0152, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0154, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0156, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0158, { 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0159, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015A, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015C, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x015E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x015F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0160, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x0163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x0164, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0165, { 0x00, 0x00, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0168, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016A, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016C, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016E, { 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x016F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0170, { 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x10, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x0174, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0176, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x0178, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0179, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017B, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017D, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x017F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0180, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xF8, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0181, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xA2, 0x00, 0xA1, 0x00, 0x22, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0184, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0185, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x6E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x31, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0186, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0187, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x1E, 0x00, 0x22, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0188, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x3E, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0189, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0xF1, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x018A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xA2, 0x00, 0xA1, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x018B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x21, 0x00, 0x41, 0x00, 0x41, 0x00, 0x21, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x018C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3A, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x018D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x018E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x018F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0193, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x1E, 0x00, 0x22, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0194, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x51, 0x00, 0x69, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x44, 0x80, 0x48, 0x00, 0x50, 0x00, 0x60, 0x00, 0x50, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x019A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x019B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x18, 0x00, 0x10, 0x00, 0x28, 0x00, 0x48, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x019C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x019D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x31, 0x00, 0x29, 0x00, 0x25, 0x00, 0x23, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0xA0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x019E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x019F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x31, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xA2, 0x00, 0xA1, 0x00, 0x21, 0x00, 0x22, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x01A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x01AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01AF, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x26, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x11, 0x00, 0x12, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x80, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x01B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x3E, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x3E, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x01BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x09, 0x00, 0x31, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x01BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x60, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x01C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C4, { 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x77, 0x00, 0x51, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x4C, 0x00, 0x54, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x72, 0x00, 0x50, 0x00, 0x48, 0x00, 0x4F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x54, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x4C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x45, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7A, 0x00, 0x02, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x01C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x72, 0x00, 0x02, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x01CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x80, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x69, 0x00, 0x59, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4D, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x6A, 0x00, 0x5A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x02, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x01CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x6A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x02, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x01CD, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01CF, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D1, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D3, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D5, { 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D6, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D7, { 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D8, { 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01D9, { 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DA, { 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DB, { 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DC, { 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DE, { 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E0, { 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E2, { 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x27, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x24, 0x00, 0x44, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x09, 0x00, 0x09, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x47, 0x80, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xFF, 0x80, 0x41, 0x00, 0x3E, 0x00, }}, +{ 0x01E6, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x01E8, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01E9, { 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x01EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x01EC, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x01ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x01EE, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x01F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x01F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x51, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x4C, 0x00, 0x54, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x50, 0x00, 0x48, 0x00, 0x4F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x54, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x4C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F4, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x01F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x79, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x60, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F8, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01FA, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01FB, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01FC, { 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x27, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x44, 0x00, 0x44, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x36, 0x00, 0x09, 0x00, 0x09, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01FE, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x49, 0x00, 0x51, 0x00, 0x51, 0x00, 0x61, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x01FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x51, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0200, { 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0202, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0204, { 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0206, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0208, { 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x020A, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x020B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x020C, { 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x020D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x020E, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x020F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0210, { 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0212, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0214, { 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0216, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x021A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x021B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x021C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x021D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, }}, +{ 0x021E, { 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x021F, { 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x0222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x0225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x0226, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x0229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x022A, { 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x022B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x022C, { 0x3E, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x022D, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x022E, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x022F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0230, { 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0231, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0232, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0233, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x0250, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0251, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0253, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0255, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x46, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0256, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3A, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0257, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0x02, 0x00, 0x3A, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0258, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0259, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x025A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x43, 0x00, 0x02, 0x80, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x025B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x025C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x025D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x43, 0x00, 0x02, 0x80, 0x1C, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x025E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x5E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x025F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x0260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x0261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x0262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x23, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x0266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x026A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x026B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x026C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x026D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x026E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2F, 0x00, 0x21, 0x00, 0x22, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x71, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x026F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x00, }}, +{ 0x0273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, }}, +{ 0x0274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x46, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x027A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x46, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x027B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x027C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x027D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x027E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x027F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x21, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0281, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0284, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x38, 0x00, 0x4C, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0287, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0288, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0289, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x028A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x028B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x028C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x028D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x028E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x18, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x028F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0290, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0291, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x12, 0x00, 0x25, 0x00, 0x7E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0292, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x0293, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x02, 0x00, 0x11, 0x00, 0x2D, 0x00, 0x22, 0x00, 0x1D, 0x00, 0x00, 0x00, }}, +{ 0x0294, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0295, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0296, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0297, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0298, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x029A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x39, 0x00, 0x41, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x029B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x029C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x029D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x46, 0x00, 0x45, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x029E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x31, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x0D, 0x00, 0x31, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x029F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x02, 0x00, 0x02, 0x00, 0x3A, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, }}, +{ 0x02A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x2F, 0x80, 0x58, 0x80, 0x49, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x5C, 0x00, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x5F, 0x00, 0xB1, 0x00, 0x92, 0x00, 0x96, 0x00, 0x91, 0x00, 0xB1, 0x00, 0x51, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x5F, 0x00, 0xB1, 0x00, 0x92, 0x00, 0x94, 0x00, 0x94, 0x00, 0xBB, 0x00, 0x5E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x77, 0x00, 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x25, 0x00, 0x24, 0x00, 0x74, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x14, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x77, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2A, 0x00, 0x2D, 0x00, 0x16, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x20, 0x00, 0x2A, 0x00, 0x2D, 0x00, 0x79, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x21, 0x00, 0x31, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x22, 0x00, 0x24, 0x00, 0x28, 0x00, 0x30, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x68, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x58, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x58, 0x00, 0x28, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x50, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x02CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, }}, +{ 0x02D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x02DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x32, 0x00, 0x52, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x30, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x40, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x02EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, }}, +{ 0x02EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, }}, +{ 0x02ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x02EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0300, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0301, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0302, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0303, { 0x00, 0x00, 0x39, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0304, { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0305, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0306, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0307, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0308, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0309, { 0x18, 0x00, 0x24, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030A, { 0x0C, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030B, { 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030C, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030D, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030E, { 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x030F, { 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0310, { 0x08, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0311, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0312, { 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0313, { 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0314, { 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0315, { 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0316, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, }}, +{ 0x0317, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, }}, +{ 0x0318, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x04, 0x00, }}, +{ 0x0319, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x10, 0x00, }}, +{ 0x031A, { 0x00, 0x00, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x031B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x031C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, }}, +{ 0x031D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, }}, +{ 0x031E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x031F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, }}, +{ 0x0320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0321, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x06, 0x00, }}, +{ 0x0322, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x80, 0x02, 0x80, 0x01, 0x00, }}, +{ 0x0323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0324, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, }}, +{ 0x0325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x0C, 0x00, }}, +{ 0x0326, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, }}, +{ 0x0327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x0329, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x032A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x00, 0x00, }}, +{ 0x032B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x14, 0x00, }}, +{ 0x032C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, }}, +{ 0x032D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x032E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x032F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, }}, +{ 0x0330, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x4E, 0x00, 0x00, 0x00, }}, +{ 0x0331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, }}, +{ 0x0334, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0335, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0336, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0337, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, }}, +{ 0x033A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x033B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x1C, 0x00, }}, +{ 0x033C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x00, 0x00, }}, +{ 0x033D, { 0x36, 0x00, 0x08, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x033E, { 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x033F, { 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0340, { 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0341, { 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0342, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0343, { 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0344, { 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0345, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x0346, { 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0347, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, }}, +{ 0x0348, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x0349, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, }}, +{ 0x034A, { 0x04, 0x00, 0x39, 0x00, 0x4E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x034B, { 0x02, 0x00, 0x78, 0x80, 0x8F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x034C, { 0x39, 0x00, 0x4E, 0x00, 0x39, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x034D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x00, }}, +{ 0x034E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x034F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0360, { 0x00, 0x00, 0x1C, 0x80, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0361, { 0x00, 0x00, 0x1F, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0362, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x3F, 0x80, 0x03, 0x00, 0x02, 0x00, }}, +{ 0x0363, { 0x18, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x24, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0364, { 0x18, 0x00, 0x24, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0365, { 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0366, { 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0367, { 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0368, { 0x1C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0369, { 0x04, 0x00, 0x1C, 0x00, 0x24, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x036A, { 0x20, 0x00, 0x38, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x036B, { 0x34, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x036C, { 0x14, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x036D, { 0x10, 0x00, 0x38, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x036E, { 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x036F, { 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0374, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0375, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, }}, +{ 0x037A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x037E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0385, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0386, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0387, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0388, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0389, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038A, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038C, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038E, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x038F, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x039F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AA, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AB, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x03AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x03B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x03B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x03B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x02, 0x00, 0x3A, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x5D, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x03BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x03BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x03C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x03C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, }}, +{ 0x03C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1F, 0x00, 0x02, 0x00, 0x62, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x55, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D4, { 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x61, 0x00, 0x12, 0x00, 0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x25, 0x00, 0x43, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x03D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x03DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x03DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x42, 0x00, 0x46, 0x00, 0x4A, 0x00, 0x52, 0x00, 0x62, 0x00, 0x42, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x03E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x25, 0x00, 0x09, 0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x03E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x71, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x3E, 0x00, 0x51, 0x00, 0x21, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x21, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0x7F, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x12, 0x00, 0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x24, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, }}, +{ 0x03F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x03F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x03F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0400, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0401, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0402, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0403, { 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x78, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0407, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x7E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040C, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040D, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040E, { 0x00, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x040F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0410, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0411, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0414, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0415, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0419, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x041F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0420, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0421, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0423, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0424, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0425, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0427, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0428, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0429, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x71, 0x00, 0x49, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x71, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x042F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x21, 0x00, 0x41, 0x00, 0x41, 0x00, 0x21, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x11, 0x00, 0x21, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0430, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0432, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0434, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0435, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0437, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0439, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x78, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x043F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x0441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x0444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0447, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x79, 0x00, 0x45, 0x00, 0x45, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x71, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x044F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x11, 0x00, 0x21, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0450, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0451, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0452, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0453, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0454, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x78, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0456, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0457, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0458, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x0459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2E, 0x00, 0x29, 0x00, 0x29, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x7E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x78, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x045E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x045F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0460, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x55, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0463, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xF8, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0464, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x51, 0x00, 0x50, 0x00, 0x50, 0x00, 0x7F, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x51, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x51, 0x00, 0x50, 0x00, 0x7E, 0x00, 0x50, 0x00, 0x51, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0466, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0467, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x4A, 0x00, 0x7A, 0x00, 0x4A, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x4A, 0x00, 0x7A, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x046A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x046B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x046C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4A, 0x00, 0x7C, 0x00, 0x4E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x046D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x51, 0x00, 0x4A, 0x00, 0x7C, 0x00, 0x4E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x046E, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x046F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x0470, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0471, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0472, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0473, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x22, 0x00, 0x24, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0476, { 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x22, 0x00, 0x24, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0478, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x50, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x23, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x0479, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x23, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x047A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x047B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x047C, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x55, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x047D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x047E, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x55, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x047F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0481, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x0482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x09, 0x00, 0x48, 0x00, 0x30, 0x00, 0x18, 0x00, 0x24, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0483, { 0x02, 0x00, 0x3E, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0484, { 0x00, 0x00, 0x38, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0485, { 0x3C, 0x00, 0x62, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0486, { 0x1E, 0x00, 0x23, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x00, 0x64, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x42, 0x00, 0x64, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x048A, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x048B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x048C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xF8, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x048D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x048E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x45, 0x00, 0x42, 0x00, 0x7D, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x048F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x45, 0x00, 0x62, 0x00, 0x5D, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x0490, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x78, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x78, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x78, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0496, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0497, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x0499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x049A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x049B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x78, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x049C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x54, 0x00, 0x58, 0x00, 0x50, 0x00, 0x78, 0x00, 0x54, 0x00, 0x52, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x049D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x52, 0x00, 0x54, 0x00, 0x78, 0x00, 0x54, 0x00, 0x52, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x049E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xF2, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x049F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF0, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x00, 0x22, 0x00, 0x24, 0x00, 0x28, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x12, 0x00, 0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x12, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x78, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x78, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x20, 0x00, 0x40, 0x00, 0x46, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x4C, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x3C, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x04AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x04AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x04B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x04B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x04B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x3F, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x61, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x9E, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x61, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x04BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x9E, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x04C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04C1, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x04C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x78, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x01, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x04C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x61, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x04C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x04C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D0, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D2, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x27, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x44, 0x00, 0x44, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x09, 0x00, 0x09, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D6, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04DA, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04DC, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04DE, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x04E2, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E4, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E6, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04EA, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04EC, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04EE, { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x04F0, { 0x00, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x04F2, { 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x04F4, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04F8, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x71, 0x00, 0x49, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x04F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x79, 0x00, 0x45, 0x00, 0x45, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0502, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x84, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x85, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0503, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x34, 0x00, 0x4C, 0x00, 0x44, 0x00, 0x45, 0x00, 0x45, 0x00, 0x4D, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x18, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x04, 0x00, 0x18, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0506, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0507, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x04, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0509, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x050A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x7C, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x050B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x7C, 0x00, 0x45, 0x00, 0x45, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x050C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x050D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x050E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x050F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x8E, 0x00, 0x85, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x7E, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0534, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0535, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0536, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x04, 0x00, 0x48, 0x00, 0x7C, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0537, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0538, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0539, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x9E, 0x00, 0xA5, 0x00, 0xA4, 0x00, 0xA4, 0x00, 0xA4, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x053A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7E, 0x00, 0x85, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x053B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x053C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x053D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF1, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x053E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC6, 0x00, 0x39, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x053F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0540, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0541, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x42, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0542, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0543, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xC9, 0x00, 0x30, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x85, 0x00, 0x85, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0545, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0546, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0547, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x26, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0548, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0549, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x64, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x054A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x054B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x21, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x48, 0x00, 0x7C, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x054C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x86, 0x00, 0x85, 0x00, 0x85, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x054D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x054E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x054F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0551, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x62, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0552, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0553, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0554, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0xA0, 0x00, 0x7C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0555, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0556, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3E, 0x00, 0x09, 0x00, 0x09, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0559, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x055A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x055B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x055C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x055D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x055E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x2A, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x055F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0561, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0562, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x0563, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x4C, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x0564, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x64, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x0565, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0566, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x4C, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x4C, 0x00, 0x34, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, }}, +{ 0x0567, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0568, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, }}, +{ 0x0569, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x4F, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x056A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x056B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x056C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, }}, +{ 0x056D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xE2, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x8D, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, }}, +{ 0x056E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x24, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x056F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, }}, +{ 0x0570, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0571, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0572, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x0573, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0574, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0575, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, }}, +{ 0x0576, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x40, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x0578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0579, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, }}, +{ 0x057A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x37, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x057B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, }}, +{ 0x057C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x057D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x057E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x057F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x4D, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x59, 0x00, 0x29, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0580, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x0581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x0582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x4A, 0x00, 0x4D, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x59, 0x00, 0x29, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0584, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0586, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3E, 0x00, 0x09, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x0587, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0589, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x058A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, }}, +{ 0x05B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x63, 0x00, }}, +{ 0x05B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x03, 0x00, }}, +{ 0x05B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x20, 0x00, 0x23, 0x00, }}, +{ 0x05B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x18, 0x00, }}, +{ 0x05B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, }}, +{ 0x05B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, }}, +{ 0x05BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, }}, +{ 0x05BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE3, 0x00, 0x77, 0x00, 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x05DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xDE, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x81, 0x00, 0x81, 0x00, 0x9F, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x05E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xE7, 0x00, 0x73, 0x00, 0x41, 0x00, 0x21, 0x00, 0x11, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x82, 0x00, 0xC4, 0x00, 0xC4, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x05E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x61, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xE7, 0x00, 0x63, 0x00, 0x24, 0x00, 0x28, 0x00, 0x30, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x05E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xE7, 0x00, 0x63, 0x00, 0x24, 0x00, 0x18, 0x00, 0x06, 0x00, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x21, 0x00, 0x21, 0x00, 0x26, 0x00, 0x28, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x05E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0xDB, 0x00, 0x49, 0x00, 0x89, 0x00, 0x91, 0x00, 0xA2, 0x00, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x21, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x66, 0x00, 0x33, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x66, 0x00, 0x33, 0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x66, 0x00, 0x33, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x05F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x69, 0x00, 0x59, 0x00, 0x29, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x69, 0x00, 0x49, 0x00, 0x29, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x49, 0x00, 0x55, 0x00, 0x29, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x29, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x71, 0x00, 0x51, 0x00, 0x11, 0x00, 0x39, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x21, 0x00, 0x11, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x09, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x22, 0x00, 0x52, 0x00, 0x33, 0x00, 0x16, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x31, 0x00, 0x6A, 0x00, 0x59, 0x00, 0x29, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x51, 0x00, 0x6A, 0x00, 0x49, 0x00, 0x29, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x45, 0x00, 0x25, 0x00, 0x45, 0x00, 0x6D, 0x00, 0x57, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x49, 0x00, 0x29, 0x00, 0x49, 0x00, 0x69, 0x00, 0x59, 0x00, 0x26, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x61, 0x00, 0xA1, 0x00, 0x49, 0x00, 0x3D, 0x00, 0x4B, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x0E0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x61, 0x00, 0xA1, 0x00, 0x51, 0x00, 0x35, 0x00, 0x5B, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0x0E10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x09, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x02, 0x00, 0x33, 0x00, 0x55, 0x00, 0x2B, 0x00, 0x00, 0x00, }}, +{ 0x0E11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0xE9, 0x00, 0xA9, 0x00, 0x31, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x55, 0x00, 0x45, 0x00, 0x75, 0x00, 0x55, 0x00, 0x6F, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x6B, 0x00, 0x5E, 0x80, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x49, 0x00, 0x55, 0x00, 0x49, 0x00, 0x51, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x49, 0x00, 0x51, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x31, 0x00, 0x29, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0xA9, 0x00, 0x69, 0x00, 0x31, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0xA2, 0x00, 0x62, 0x00, 0x22, 0x00, 0x27, 0x00, 0x2A, 0x80, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0xA1, 0x00, 0x61, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x21, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E1E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA1, 0x00, 0x6D, 0x00, 0x2D, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0xA1, 0x00, 0x6D, 0x00, 0x2D, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x61, 0x00, 0xA1, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x51, 0x00, 0x31, 0x00, 0x11, 0x00, 0x39, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x51, 0x00, 0x61, 0x00, 0x31, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x31, 0x00, 0x29, 0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x39, 0x00, 0x45, 0x00, 0x63, 0x00, 0x51, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x61, 0x00, 0x21, 0x00, 0x61, 0x00, 0xA1, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x49, 0x00, 0x55, 0x00, 0x29, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA5, 0x00, 0x6B, 0x80, 0x27, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x39, 0x00, 0x45, 0x00, 0x63, 0x00, 0x51, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0xA5, 0x00, 0x62, 0x00, 0x25, 0x00, 0x29, 0x00, 0x31, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x46, 0x00, 0xA1, 0x00, 0x6D, 0x00, 0x2D, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x21, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x21, 0x00, 0x51, 0x00, 0x61, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x55, 0x00, 0x39, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x52, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x21, 0x00, 0x52, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x29, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xA0, 0x00, 0x4E, 0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x4D, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, }}, +{ 0x0E39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, }}, +{ 0x0E3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x0E3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x66, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x64, 0x00, 0x54, 0x00, 0x24, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x54, 0x00, 0x24, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x61, 0x00, 0x51, 0x00, 0x21, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, }}, +{ 0x0E47, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E48, { 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E49, { 0x31, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E4A, { 0x6D, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E4B, { 0x02, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E4C, { 0x39, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E4E, { 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E4F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x51, 0x00, 0x69, 0x00, 0x31, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x4A, 0x00, 0x55, 0x00, 0x59, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x61, 0x00, 0x51, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x20, 0x00, 0x44, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x26, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x80, 0x1F, 0x00, 0x20, 0x00, 0x44, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x26, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E56, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x5C, 0x00, 0x22, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x69, 0x00, 0x95, 0x00, 0x95, 0x00, 0x95, 0x00, 0xC5, 0x00, 0xA5, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E58, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x20, 0x00, 0x42, 0x00, 0x45, 0x00, 0x43, 0x00, 0x39, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x80, 0x35, 0x00, 0x4C, 0x00, 0x44, 0x00, 0x54, 0x00, 0x2A, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x75, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x0E5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x55, 0x80, 0x56, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x11, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x98, 0x00, 0x68, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x88, 0x00, 0x88, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x09, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x88, 0x00, 0x88, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x87, 0x00, 0x85, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x10, 0x00, 0x16, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x89, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8D, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x23, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x89, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x8A, 0x00, 0x8D, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x7F, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x89, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x78, 0x00, 0x44, 0x00, 0x48, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x90, 0x00, 0x90, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x70, 0x00, 0x48, 0x00, 0x46, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x3A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x7E, 0x00, 0x89, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x08, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x4E, 0x00, 0x20, 0x00, 0x70, 0x00, 0x8C, 0x00, 0x02, 0x00, 0x00, 0x00, }}, +{ 0x10D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x00, 0x72, 0x00, 0x14, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x89, 0x00, 0x89, 0x00, 0x89, 0x00, 0x89, 0x00, 0x89, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x95, 0x00, 0x95, 0x00, 0x81, 0x00, 0x81, 0x00, 0x42, 0x00, 0x20, 0x00, 0x78, 0x00, 0x84, 0x00, 0x02, 0x00, 0x00, 0x00, }}, +{ 0x10DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x26, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x24, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2C, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1D, 0x00, 0x11, 0x00, 0x49, 0x00, 0x31, 0x00, 0x01, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x38, 0x00, 0x40, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x44, 0x00, 0x48, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E2, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x66, 0x00, 0x99, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x32, 0x00, 0x01, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E5, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x22, 0x00, 0x12, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x10, 0x00, 0x78, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x10E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x26, 0x00, 0x1A, 0x00, 0x02, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x01, 0x00, 0x0D, 0x00, 0x13, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x38, 0x00, 0x20, 0x00, 0x2C, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x4C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x26, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x42, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x10ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x04, 0x00, 0x35, 0x00, 0x4E, 0x00, 0x4E, 0x00, 0x35, 0x00, 0x04, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x10EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x24, 0x00, 0x28, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x92, 0x00, 0x94, 0x00, 0x08, 0x00, 0x15, 0x00, 0x65, 0x00, 0x12, 0x00, 0x90, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x4C, 0x00, 0x42, 0x00, 0x4C, 0x00, 0x42, 0x00, 0x4C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F4, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x22, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3E, 0x00, 0x04, 0x00, 0x3E, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x10F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x32, 0x00, 0x2C, 0x00, 0x20, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x10FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x70, 0x00, 0x22, 0x00, 0x07, 0x00, 0x22, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x67, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xCE, 0x00, 0xCC, 0x00, 0xFC, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC6, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x33, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC6, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1204, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC6, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x33, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x120A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x120B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x120C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x120D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x73, 0x00, 0x4B, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x120E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x120F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1210, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x80, 0x7E, 0x80, 0xDB, 0x80, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDA, 0x00, 0xDA, 0x80, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1214, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDA, 0x80, 0xDA, 0x80, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1216, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x0F, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xAA, 0x00, 0xAB, 0x80, 0xAA, 0x80, 0xAA, 0x00, 0xAA, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x121A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0x46, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x13, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x121B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x23, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x121C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0x46, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x121D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x32, 0x00, 0x10, 0x00, 0x30, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x121E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x32, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x121F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x23, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDE, 0x00, 0xD8, 0x00, 0xD8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1221, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x80, 0xDE, 0x80, 0xD8, 0x80, 0xD8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0D, 0x80, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x80, 0x6D, 0x80, 0x6D, 0x80, 0x6D, 0x80, 0x6D, 0x80, 0x6D, 0x80, 0x7F, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1226, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x0F, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE3, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x122A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC6, 0x00, 0xC3, 0x00, 0xE3, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x122B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC3, 0x00, 0xE7, 0x00, 0x7C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x122C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE7, 0x00, 0x7C, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x122D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xC6, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC3, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x122E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x79, 0x00, 0xC6, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC3, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x122F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC3, 0x00, 0xE7, 0x00, 0x7C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1230, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1231, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1232, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1233, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1234, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1235, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1236, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1238, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1239, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x123A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x123B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x123C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x123D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x123E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x123F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1240, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1241, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1242, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1243, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1244, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1245, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1246, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1248, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x1F, 0x00, 0x1C, 0x80, 0x1B, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x124A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x80, 0x18, 0x80, 0x7E, 0x80, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x124B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x124C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x124D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1250, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1251, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1253, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1255, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1256, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x24, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1258, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x1F, 0x00, 0x1C, 0x80, 0x1B, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x125A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x80, 0x18, 0x80, 0x7E, 0x80, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x125B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x125C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x125D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7E, 0x80, 0x18, 0x80, 0x18, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x13, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0xF3, 0x00, 0xB3, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x126A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x126B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x126C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x126D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x13, 0x00, 0x33, 0x00, 0xF3, 0x00, 0xB3, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x126E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x126F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x127A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x127B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x127C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x127D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xB2, 0x00, 0x10, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x127E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xA5, 0x00, 0x3C, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x127F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0xFF, 0x00, 0x99, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x7C, 0x00, 0x67, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1281, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x07, 0x80, 0x06, 0x80, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x7C, 0x00, 0x67, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1284, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0x67, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0C, 0x80, 0x1B, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1288, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x80, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x128A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0xF0, 0x00, 0xDD, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0D, 0x00, 0x0C, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x128B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x128C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xCE, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x80, 0x1F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x128D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x31, 0x00, 0xF1, 0x00, 0xDF, 0x00, 0x0C, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1290, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1291, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF8, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1292, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF8, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1293, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1294, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF8, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1295, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xD8, 0x00, 0xD8, 0x00, 0x1F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1296, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x69, 0x00, 0x66, 0x00, 0x60, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1297, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1298, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0F, 0x00, 0x0D, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x129A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x129B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x129C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x129D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x78, 0x00, 0xD8, 0x00, 0xDF, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x129E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x69, 0x00, 0x66, 0x00, 0x60, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x129F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x38, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x38, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x38, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x38, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x67, 0x80, 0x66, 0x80, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x80, 0x67, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x67, 0x00, 0x64, 0x80, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x3B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x67, 0x00, 0x64, 0x80, 0x67, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xB8, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x6F, 0x00, 0x6C, 0x80, 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x80, 0x1F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x81, 0x00, 0xBD, 0x00, 0x66, 0x80, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x70, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x67, 0x80, 0x66, 0x80, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x80, 0x67, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x70, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x67, 0x00, 0x64, 0x80, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x70, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x3B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x70, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x67, 0x00, 0x64, 0x80, 0x67, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xB8, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x6F, 0x00, 0x6C, 0x80, 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xBC, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x80, 0x1F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xE1, 0x00, 0x81, 0x00, 0xBD, 0x00, 0x66, 0x80, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x54, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x54, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x33, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x54, 0x00, 0x92, 0x00, 0x93, 0x80, 0x92, 0x80, 0x92, 0x00, 0x54, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x36, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xDE, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x36, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0xDE, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x3E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xFC, 0x00, 0xCC, 0x00, 0xCF, 0x00, 0xCD, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xFC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCD, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xFC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCE, 0x00, 0xC9, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x23, 0x00, 0x33, 0x00, 0x33, 0x00, 0x3F, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xFC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x3F, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x67, 0x80, 0x66, 0x80, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x80, 0x67, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x67, 0x00, 0x64, 0x80, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x23, 0x80, 0x73, 0x00, 0x33, 0x00, 0x3F, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x63, 0x00, 0x63, 0x00, 0x33, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x6C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x6C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x19, 0x00, 0x1F, 0x00, 0x19, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x63, 0x00, 0x63, 0x00, 0x33, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x6C, 0x00, 0xC6, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x6C, 0x00, 0xC6, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x19, 0x00, 0x1B, 0x00, 0x7E, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x6C, 0x00, 0xC6, 0x00, 0xC7, 0x80, 0x66, 0x80, 0x3C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x80, 0x7E, 0x80, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7C, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x43, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7F, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x80, 0x66, 0x80, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC2, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xCC, 0x00, 0x70, 0x00, 0x60, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x86, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x80, 0x7E, 0x80, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7C, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x43, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7F, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x80, 0x38, 0x80, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x66, 0x00, 0x38, 0x00, 0x30, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC2, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x12FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xFE, 0x00, 0xCC, 0x00, 0x70, 0x00, 0x60, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x86, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1300, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1301, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x80, 0x7E, 0x80, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1302, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7C, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1303, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x43, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1304, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7F, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1305, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x80, 0x66, 0x80, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1306, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xC2, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1307, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x66, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x0F, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1308, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1309, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x00, 0x0D, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x130A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x130B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x130C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x130D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xCB, 0x00, 0x73, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x130E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1310, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1312, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x0C, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1313, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xCC, 0x00, 0x0C, 0x00, 0x3E, 0x00, 0x33, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1314, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x3E, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1315, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xF9, 0x00, 0x0F, 0x00, 0x0C, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1318, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x7C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1319, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x00, 0x0D, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x131A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x131B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x7C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x131C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xF8, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x131D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x0C, 0x00, 0x7E, 0x00, 0xCB, 0x00, 0x73, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x131E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x24, 0x00, 0x7C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1320, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1321, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xAF, 0x00, 0xAB, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1322, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xAB, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1324, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xAE, 0x00, 0xA9, 0x00, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1326, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0F, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0xDB, 0x00, 0xB6, 0x80, 0xB6, 0x80, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1329, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0x93, 0x80, 0x92, 0x80, 0x92, 0x00, 0xDB, 0x00, 0xB6, 0x80, 0xB6, 0x80, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x132A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0xDA, 0x00, 0xB6, 0x80, 0xB6, 0x80, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x132B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0xDA, 0x00, 0xB6, 0x00, 0xB6, 0x00, 0xDB, 0x00, 0x02, 0x80, 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x132C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x93, 0x80, 0x92, 0x80, 0x93, 0x80, 0x92, 0x00, 0xDB, 0x00, 0xB6, 0x80, 0xB6, 0x80, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x132D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0xD3, 0x00, 0xB2, 0x80, 0xB2, 0x80, 0xDB, 0x00, 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x132E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0x9B, 0x00, 0x96, 0x80, 0x96, 0x80, 0xDB, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x132F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xD6, 0x00, 0x92, 0x00, 0xDA, 0x00, 0xB6, 0x00, 0xB6, 0x00, 0xDA, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0F, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1330, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x80, 0x66, 0x80, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC2, 0x80, 0xC3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x43, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1334, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x67, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1335, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x67, 0x80, 0x66, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1336, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC2, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1337, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x43, 0x00, 0x0F, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x80, 0x66, 0x80, 0xC3, 0x80, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x133A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC6, 0x00, 0xC6, 0x80, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x133B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC3, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x133C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC7, 0x00, 0xC4, 0x80, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x133D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x67, 0x80, 0x66, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x133E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x66, 0x00, 0xC3, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x133F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0x78, 0x00, 0x78, 0x00, 0xCC, 0x00, 0x86, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1340, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x36, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xFE, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xDE, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1341, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x36, 0x00, 0xC6, 0x00, 0xC6, 0x00, 0xFF, 0x80, 0xC6, 0x80, 0xC6, 0x00, 0xC6, 0x00, 0xDE, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1342, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xFE, 0x00, 0xC6, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1343, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xFE, 0x00, 0xC6, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1344, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xC6, 0x00, 0xFE, 0x00, 0xC6, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1345, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x63, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1346, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x63, 0x00, 0x3E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1348, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0xD8, 0x00, 0xC8, 0x00, 0xEB, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1349, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x78, 0x00, 0xCC, 0x00, 0xEC, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x134A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xD6, 0x00, 0xD3, 0x00, 0xF3, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x134B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xD0, 0x00, 0xCB, 0x00, 0xEF, 0x00, 0x7C, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x134C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0xD0, 0x00, 0xC8, 0x00, 0xEF, 0x00, 0x7C, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x134D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xC6, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF0, 0x00, 0xC8, 0x00, 0xCB, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x134E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x79, 0x00, 0xC6, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF0, 0x00, 0xC8, 0x00, 0xCB, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x134F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0xD0, 0x00, 0xCB, 0x00, 0xEF, 0x00, 0x7C, 0x00, 0x38, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1350, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1351, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1352, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1353, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1354, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1355, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1356, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1357, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1358, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x23, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1359, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC6, 0x00, 0xC3, 0x00, 0xE3, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x135A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xD6, 0x00, 0xD3, 0x00, 0xF3, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1361, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1362, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1363, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFF, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1364, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFF, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0xFF, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1365, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0xFF, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1366, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1367, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1368, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x18, 0x00, 0x18, 0x00, 0xC3, 0x00, 0xC3, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1369, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x136A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x7C, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x136B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x136C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x136D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3F, 0x00, 0x73, 0x00, 0x60, 0x00, 0x63, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x136E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x1B, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x136F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1370, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x5A, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1371, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x64, 0x00, 0x38, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1372, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1373, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x5A, 0x00, 0x18, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x42, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1374, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xCE, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x73, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1375, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x7F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1376, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3E, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1377, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x5A, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1378, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x66, 0x00, 0x60, 0x00, 0x60, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1379, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x137A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x137B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7C, 0x00, 0x60, 0x00, 0x60, 0x00, 0x30, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x137C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x76, 0x00, 0x99, 0x00, 0x99, 0x00, 0xEE, 0x00, 0x88, 0x00, 0x88, 0x00, 0x44, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x43, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x6B, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x31, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x26, 0x00, 0x45, 0x00, 0x45, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x20, 0x00, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x01, 0x00, 0x01, 0x00, 0x21, 0x00, 0x51, 0x00, 0x51, 0x00, 0x61, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x29, 0x00, 0x29, 0x00, 0x36, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x21, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x32, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x58, 0x00, 0x4F, 0x00, 0x5A, 0x00, 0x2A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x46, 0x00, 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x65, 0x00, 0x59, 0x00, 0x29, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x3A, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x23, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x44, 0x00, 0x47, 0x00, 0x45, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x62, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x62, 0x00, 0x5E, 0x00, 0x42, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x16, 0x00, 0x19, 0x00, 0x10, 0x00, 0x30, 0x00, 0x68, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x78, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x22, 0x00, 0x22, 0x00, 0x32, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x43, 0x00, 0x25, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x51, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x24, 0x00, 0x74, 0x00, 0x04, 0x00, 0x74, 0x00, 0x24, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x45, 0x80, 0x47, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x01, 0x00, 0x21, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x09, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x57, 0x00, 0x74, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x01, 0x00, 0x1D, 0x00, 0x29, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x25, 0x00, 0x3F, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x7C, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x2A, 0x00, 0x1D, 0x00, 0x11, 0x00, 0x22, 0x00, 0x50, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x48, 0x00, 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x3F, 0x00, 0x10, 0x00, 0x08, 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x68, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x12, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x15, 0x00, 0x21, 0x00, 0x51, 0x00, 0x52, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x23, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x23, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x22, 0x00, 0x52, 0x00, 0x52, 0x00, 0x3F, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0xF5, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x47, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x27, 0x00, 0x2D, 0x00, 0x34, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x43, 0x00, 0x40, 0x00, 0x43, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x42, 0x00, 0x22, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2B, 0x00, 0x29, 0x00, 0x51, 0x00, 0x51, 0x00, 0x52, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x79, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2C, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x29, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x61, 0x00, 0x21, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x53, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x27, 0x00, 0x47, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4E, 0x00, 0x42, 0x00, 0x46, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x13F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1402, { 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1403, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1404, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x98, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, 0x86, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1406, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x98, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, 0x86, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1407, { 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x98, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, 0x86, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x98, 0x00, 0xA6, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0xA6, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x98, 0x00, 0x86, 0x00, 0xB1, 0x00, 0xB1, 0x00, 0x86, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x140A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x19, 0x00, 0x61, 0x00, 0x81, 0x00, 0x81, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x140B, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x01, 0x00, 0x07, 0x00, 0x19, 0x00, 0x61, 0x00, 0x81, 0x00, 0x81, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x140C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0xD4, 0x00, 0xD4, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x140D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, 0x44, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x28, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x140E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xD4, 0x00, 0xD4, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x140F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x28, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x44, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1410, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xD4, 0x00, 0xD4, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1411, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x28, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x44, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x14, 0x00, 0x12, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0x12, 0x00, 0x14, 0x00, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0x90, 0x00, 0x8B, 0x00, 0x8B, 0x00, 0x90, 0x00, 0xA0, 0x00, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1414, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x14, 0x00, 0x12, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0x12, 0x00, 0x14, 0x00, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1415, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0x90, 0x00, 0x8B, 0x00, 0x8B, 0x00, 0x90, 0x00, 0xA0, 0x00, 0xC0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1416, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x83, 0x00, 0xE3, 0x00, 0x98, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, 0x86, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x09, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0x09, 0x00, 0x05, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x8B, 0x00, 0x8B, 0x00, 0x48, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1419, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x09, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0x09, 0x00, 0x05, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x141A, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x8B, 0x00, 0x8B, 0x00, 0x48, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x141B, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC1, 0x00, 0xC7, 0x00, 0x19, 0x00, 0x61, 0x00, 0x81, 0x00, 0x81, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x141C, { 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x141D, { 0x07, 0x00, 0x25, 0x00, 0x77, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x141E, { 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x141F, { 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1420, { 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1421, { 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1422, { 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1423, { 0x1C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1424, { 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1425, { 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1426, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1427, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1428, { 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1429, { 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x142A, { 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x142B, { 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFE, 0x00, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, 0x44, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x142C, { 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x09, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x142D, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x81, 0x00, 0xE1, 0x00, 0x98, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, 0x86, 0x00, 0x98, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x142E, { 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x80, 0x01, 0x80, 0x07, 0x00, 0x19, 0x00, 0x61, 0x00, 0x81, 0x00, 0x81, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x142F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1430, { 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1431, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1432, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1433, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1434, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1435, { 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1436, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x26, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1437, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x31, 0x00, 0x31, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1438, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1439, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x143A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0xE2, 0x00, 0xD4, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x143B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, 0x47, 0x00, 0x2B, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x143C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0xD4, 0x00, 0xE2, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x143D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2B, 0x00, 0x47, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x143E, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0xD4, 0x00, 0xE2, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x143F, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2B, 0x00, 0x47, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x61, 0x00, 0x61, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1442, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x61, 0x00, 0x61, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1443, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x43, 0x00, 0x43, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1446, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1447, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x43, 0x00, 0x43, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1448, { 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1449, { 0x06, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x144A, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x144B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x144C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x144D, { 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x144E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x144F, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1450, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1451, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1452, { 0x00, 0x00, 0x66, 0x00, 0x66, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1453, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1454, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x19, 0x00, 0x19, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1455, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1456, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1457, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0xE1, 0x00, 0xE1, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1458, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x87, 0x00, 0x87, 0x00, 0x84, 0x00, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1459, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x21, 0x00, 0xE1, 0x00, 0xE1, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x145A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x84, 0x00, 0x84, 0x00, 0x87, 0x00, 0x87, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x145B, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x21, 0x00, 0xE1, 0x00, 0xE1, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x145C, { 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x48, 0x00, 0x84, 0x00, 0x84, 0x00, 0x87, 0x00, 0x87, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x145D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xC1, 0x00, 0xC1, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x145E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x145F, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xC1, 0x00, 0xC1, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1460, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x83, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1463, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1464, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x83, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1466, { 0x1C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1467, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x85, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1468, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x32, 0x00, 0x48, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1469, { 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x146A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x41, 0x00, 0x81, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x146B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x81, 0x00, 0x81, 0x00, 0x41, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x146C, { 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x81, 0x00, 0x81, 0x00, 0x82, 0x00, 0xFC, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x146D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x81, 0x00, 0x81, 0x00, 0x82, 0x00, 0xFC, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x146E, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x81, 0x00, 0x81, 0x00, 0x82, 0x00, 0xFC, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x146F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x81, 0x00, 0x81, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1470, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x81, 0x00, 0x81, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1471, { 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x42, 0x00, 0x82, 0x00, 0x82, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1472, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x82, 0x00, 0x81, 0x00, 0x81, 0x00, 0x82, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1473, { 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x82, 0x00, 0x81, 0x00, 0x81, 0x00, 0x82, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x81, 0x00, 0x81, 0x00, 0x41, 0x00, 0x3F, 0x00, 0xC1, 0x00, 0xC1, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x84, 0x00, 0x87, 0x00, 0x47, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1476, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x21, 0x00, 0xE1, 0x00, 0xE2, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x84, 0x00, 0x84, 0x00, 0x88, 0x00, 0xF3, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1478, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x21, 0x00, 0xE1, 0x00, 0xE2, 0x00, 0x3C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1479, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x84, 0x00, 0x84, 0x00, 0x88, 0x00, 0xF3, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x147A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x0F, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x147B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x147C, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x0F, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x147D, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0x00, 0x07, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x147E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x147F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x86, 0x00, 0x86, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x84, 0x00, 0x84, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1480, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1481, { 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x86, 0x00, 0x86, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x84, 0x00, 0x84, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x3C, 0x00, 0xE2, 0x00, 0xE1, 0x00, 0x21, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1483, { 0x20, 0x00, 0x38, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1484, { 0x04, 0x00, 0x1C, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1485, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x39, 0x00, 0x45, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x71, 0x00, 0x89, 0x00, 0x84, 0x00, 0x84, 0x00, 0x88, 0x00, 0xF0, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1487, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x82, 0x00, 0x82, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x84, 0x00, 0x84, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x148A, { 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x78, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x148B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x148C, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x148D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x148E, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x148F, { 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1490, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1491, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x02, 0x00, 0x62, 0x00, 0x62, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x46, 0x00, 0x46, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1496, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1497, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xC2, 0x00, 0xC2, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x149A, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xC2, 0x00, 0xC2, 0x00, 0x02, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x149B, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x149C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x149D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, 0x40, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x149E, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x149F, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, 0x40, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A1, { 0x20, 0x00, 0x20, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A2, { 0x04, 0x00, 0x04, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A4, { 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A6, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A8, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14A9, { 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14AB, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x83, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B0, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B1, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xC1, 0x00, 0xC1, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B4, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B5, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x46, 0x00, 0x46, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B8, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14B9, { 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x46, 0x00, 0x46, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14BB, { 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14BC, { 0x1C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14BD, { 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x44, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xFC, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x24, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x23, 0x00, 0x50, 0x00, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0x48, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xD0, 0x00, 0x28, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x24, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x03, 0x00, 0x13, 0x00, 0x28, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x24, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x24, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D0, { 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D1, { 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D2, { 0x04, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xC2, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xF3, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xCF, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x43, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xC0, 0x00, 0xCF, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x43, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xC2, 0x00, 0xC1, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x33, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xC2, 0x00, 0xC1, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x03, 0x00, 0x33, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xCC, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x36, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xC0, 0x00, 0xCC, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x46, 0x00, 0x86, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14EA, { 0x10, 0x00, 0x20, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14EB, { 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x18, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14EE, { 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F0, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F2, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F3, { 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F5, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x38, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x6E, 0x00, 0x62, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x73, 0x00, 0x43, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14FA, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14FB, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x73, 0x00, 0x43, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x62, 0x00, 0x62, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x1B, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14FE, { 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x62, 0x00, 0x62, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x14FF, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x1B, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x68, 0x00, 0x6C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x73, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1502, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x68, 0x00, 0x6C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1503, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x73, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x68, 0x00, 0x68, 0x00, 0x0C, 0x00, 0x62, 0x00, 0x61, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1505, { 0x10, 0x00, 0x18, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1506, { 0x0C, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1507, { 0x04, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1508, { 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1509, { 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x150A, { 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x18, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x150B, { 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x150C, { 0xC0, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x28, 0x00, 0x30, 0x00, 0x70, 0x00, 0x68, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x150D, { 0xC0, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x48, 0x00, 0x50, 0x00, 0x30, 0x00, 0x30, 0x00, 0x70, 0x00, 0x70, 0x00, 0x10, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x150E, { 0xC0, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x71, 0x00, 0x71, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x150F, { 0xC0, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x30, 0x00, 0x30, 0x00, 0x70, 0x00, 0x70, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1510, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1511, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1512, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1513, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1514, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1515, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1516, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1517, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x09, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1518, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x27, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1519, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x72, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x151A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x48, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x151B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, 0x00, 0x72, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x151C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x48, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x151D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x151E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3B, 0x00, 0x43, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x151F, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x01, 0x00, 0x61, 0x00, 0x61, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1520, { 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3B, 0x00, 0x43, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1521, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1522, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1523, { 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1524, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x3B, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1525, { 0x0C, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1526, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1527, { 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1528, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1529, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x152A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x152B, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x152C, { 0x00, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x152D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x152E, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x152F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x68, 0x00, 0x68, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x23, 0x00, 0x23, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x62, 0x00, 0x62, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1533, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x62, 0x00, 0x62, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1534, { 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1535, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x68, 0x00, 0x68, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1536, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x23, 0x00, 0x23, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1537, { 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x68, 0x00, 0x68, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1538, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x23, 0x00, 0x23, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1539, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x62, 0x00, 0x62, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x153A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x153B, { 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x62, 0x00, 0x62, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x153C, { 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x153D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, 0x00, 0x64, 0x00, 0x64, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x153E, { 0x10, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x153F, { 0x14, 0x00, 0x14, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1540, { 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1541, { 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1542, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1543, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1544, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1545, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1546, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x24, 0x00, 0x2A, 0x00, 0x34, 0x00, 0x28, 0x00, 0x30, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x22, 0x00, 0x24, 0x00, 0x2A, 0x00, 0x34, 0x00, 0x28, 0x00, 0x30, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x32, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x38, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x38, 0x00, 0x24, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x24, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x14, 0x00, 0x18, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x34, 0x00, 0x2A, 0x00, 0x34, 0x00, 0x28, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x34, 0x00, 0x28, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x34, 0x00, 0x2A, 0x00, 0x24, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x28, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x2A, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x2A, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x24, 0x00, 0x22, 0x00, 0x24, 0x00, 0x28, 0x00, 0x28, 0x00, 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x24, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x78, 0x00, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x24, 0x00, 0x28, 0x00, 0x30, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x31, 0x00, 0x29, 0x00, 0x25, 0x00, 0x23, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x31, 0x00, 0x29, 0x00, 0x35, 0x00, 0x2B, 0x00, 0x25, 0x00, 0x23, 0x00, 0x21, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x48, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, 0x00, 0x09, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x62, 0x00, 0x54, 0x00, 0x48, 0x00, 0x40, 0x00, 0x40, 0x00, 0x48, 0x00, 0x54, 0x00, 0x62, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x23, 0x00, 0x25, 0x00, 0x29, 0x00, 0x31, 0x00, 0x21, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x24, 0x00, 0x22, 0x00, 0x24, 0x00, 0x38, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x24, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x24, 0x00, 0x2A, 0x00, 0x24, 0x00, 0x38, 0x00, 0x28, 0x00, 0x24, 0x00, 0x2A, 0x00, 0x24, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x28, 0x00, 0x30, 0x00, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x63, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x0D, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x58, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x77, 0x00, 0x49, 0x00, 0x77, 0x00, 0x41, 0x00, 0x41, 0x00, 0x77, 0x00, 0x49, 0x00, 0x77, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x22, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x78, 0x00, 0x21, 0x00, 0x23, 0x00, 0x25, 0x00, 0x29, 0x00, 0x31, 0x00, 0x21, 0x00, 0x07, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x16F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, }}, +{ 0x1E01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, }}, +{ 0x1E02, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E03, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E08, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1E09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x1E0A, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E0B, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x1E11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x08, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, }}, +{ 0x1E12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E14, { 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E15, { 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E16, { 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E17, { 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0x00, 0x00, 0x00, }}, +{ 0x1E1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0x00, 0x00, 0x00, }}, +{ 0x1E1C, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1E1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x04, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1E1E, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E1F, { 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E20, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, }}, +{ 0x1E22, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E23, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E26, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E27, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x20, 0x00, 0x90, 0x00, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x1E29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x20, 0x00, 0x90, 0x00, 0x60, 0x00, 0x00, 0x00, }}, +{ 0x1E2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x1E2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x1E2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0x00, 0x00, 0x00, }}, +{ 0x1E2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x28, 0x00, 0x00, 0x00, }}, +{ 0x1E2E, { 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E2F, { 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E30, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E31, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x58, 0x00, 0x64, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E37, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E38, { 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E39, { 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E3E, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E40, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E44, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E4C, { 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E4D, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E4E, { 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E4F, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E50, { 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E51, { 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E52, { 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E53, { 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E54, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x1E56, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E57, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x62, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x1E58, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E5A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E5C, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E5E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E60, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E64, { 0x22, 0x00, 0x24, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E65, { 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E66, { 0x08, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E67, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E68, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E6A, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E6B, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x11, 0x00, }}, +{ 0x1E72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, }}, +{ 0x1E73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, }}, +{ 0x1E74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, }}, +{ 0x1E75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, }}, +{ 0x1E76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, }}, +{ 0x1E78, { 0x04, 0x00, 0x08, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E79, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E7A, { 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E7B, { 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E7C, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E7E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E7F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E80, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E82, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E84, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E86, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E87, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E8A, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E8C, { 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E8E, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x1E90, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1E94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E96, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E97, { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x49, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x1E9A, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1E9B, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EA2, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA3, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA4, { 0x00, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA6, { 0x00, 0x00, 0x44, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA8, { 0x02, 0x00, 0x11, 0x00, 0x29, 0x00, 0x02, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EA9, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EAA, { 0x00, 0x00, 0x22, 0x80, 0x55, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x80, 0x55, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EAC, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EAE, { 0x04, 0x00, 0x08, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EAF, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB0, { 0x10, 0x00, 0x08, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB1, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB2, { 0x08, 0x00, 0x04, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB3, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB4, { 0x1A, 0x00, 0x2C, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB5, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EB6, { 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EBA, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EBB, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EBC, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EBE, { 0x00, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC0, { 0x00, 0x00, 0x44, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC2, { 0x02, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC3, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC4, { 0x1A, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC5, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC6, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EC8, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EC9, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ECA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1ECB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1ECC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1ECD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1ECE, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ECF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED0, { 0x00, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED2, { 0x00, 0x00, 0x22, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x15, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED4, { 0x02, 0x00, 0x11, 0x00, 0x29, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED5, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x21, 0x00, 0x52, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED6, { 0x1A, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED7, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1ED8, { 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1ED9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EDA, { 0x04, 0x00, 0x08, 0x00, 0x11, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x11, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EDC, { 0x20, 0x00, 0x10, 0x00, 0x09, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x09, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EDE, { 0x10, 0x00, 0x28, 0x00, 0x09, 0x00, 0x11, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EDF, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x09, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE0, { 0x00, 0x00, 0x14, 0x00, 0x29, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x29, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE2, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EE6, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE7, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE8, { 0x04, 0x00, 0x08, 0x00, 0x10, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EEA, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EEC, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x80, 0x08, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EED, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EEE, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EF0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EF1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EF2, { 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x1EF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x1EF5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x4A, 0x00, 0x32, 0x00, 0x00, 0x00, }}, +{ 0x1EF6, { 0x08, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EF7, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x1EF8, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1EF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x1F00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F06, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F07, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x4A, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x8A, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F0A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x55, 0x00, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F0B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x95, 0x00, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F0C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x65, 0x00, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F0D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x00, 0xA5, 0x00, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F0E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x0A, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F0F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x0A, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F10, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F11, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F12, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F18, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x50, 0x00, 0x90, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F19, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x90, 0x00, 0x50, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F1A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x80, 0x58, 0x00, 0x88, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F1B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x80, 0x98, 0x00, 0x48, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F1C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x80, 0x68, 0x00, 0x88, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x80, 0xA8, 0x00, 0x48, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F26, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F27, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x58, 0x80, 0x88, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x98, 0x80, 0x48, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x80, 0x68, 0x80, 0x88, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x80, 0xA8, 0x80, 0x48, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x9F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x5F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F36, { 0x34, 0x00, 0x58, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F37, { 0x34, 0x00, 0x58, 0x00, 0x00, 0x00, 0x18, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x44, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x84, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x80, 0x52, 0x00, 0x82, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x80, 0x92, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x80, 0x62, 0x00, 0x82, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F3D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x80, 0xA2, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x04, 0x00, 0xC4, 0x00, 0x44, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x00, 0x04, 0x00, 0xC4, 0x00, 0x84, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F42, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F45, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x58, 0x80, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x98, 0x80, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0x68, 0x80, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0xA8, 0x80, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F50, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F51, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F52, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F53, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F54, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F55, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F56, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F57, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F59, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x4A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F5B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x98, 0x80, 0x45, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F5D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x80, 0xA8, 0x80, 0x45, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F5F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x11, 0x00, 0xCA, 0x00, 0x8A, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F60, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F62, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F66, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F67, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x58, 0x80, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x98, 0x80, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0x68, 0x80, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0xA8, 0x80, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F71, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F72, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F73, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F75, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1F76, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F77, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F78, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F79, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F7B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F7C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F7D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1F80, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F81, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F82, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F83, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F84, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F85, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F86, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F87, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1F88, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x4A, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F89, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x8A, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x55, 0x00, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F8B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0x95, 0x00, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F8C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x65, 0x00, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x00, 0xA5, 0x00, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F8E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x0A, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x0A, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F90, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F91, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F92, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F93, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F94, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F96, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F97, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1F98, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F99, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F9A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x58, 0x80, 0x88, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x98, 0x80, 0x48, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F9C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x80, 0x68, 0x80, 0x88, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F9D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x80, 0xA8, 0x80, 0x48, 0x80, 0x08, 0x80, 0x0F, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1F9E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x9F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1F9F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x5F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1FA0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA6, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA7, { 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FA8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1FA9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1FAA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x58, 0x80, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1FAB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x98, 0x80, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1FAC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0x68, 0x80, 0x88, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1FAD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7, 0x00, 0xA8, 0x80, 0x48, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, }}, +{ 0x1FAE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1FAF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x00, 0x11, 0x00, 0xD1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, }}, +{ 0x1FB0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FB1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FB2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FB3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FB4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FB6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FB7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FB8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FB9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FBA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x4A, 0x00, 0x31, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FBB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x4A, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FBC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FBD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FBE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FBF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1FC3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1FC4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1FC6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, }}, +{ 0x1FC7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, 0x00, 0x61, 0x00, 0x00, 0x00, }}, +{ 0x1FC8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x50, 0x00, 0x30, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FC9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x50, 0x00, 0x90, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x51, 0x00, 0x31, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FCD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x12, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x14, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FCF, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x92, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD7, { 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FD9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x44, 0x00, 0x24, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x84, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FDF, { 0x00, 0x00, 0x1A, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x49, 0x00, 0x45, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x1FE5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x1FE6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE7, { 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FE9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x51, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x51, 0x00, 0x8A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x00, 0x91, 0x00, 0x51, 0x00, 0x11, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x49, 0x00, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x49, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FEF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FF2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FF3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FF4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FF6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FF7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FF8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x51, 0x00, 0x31, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FF9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FFA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x51, 0x00, 0x31, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FFB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x51, 0x00, 0x91, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x36, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x1FFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x1FFE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2001, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2002, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2003, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2004, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2005, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2006, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2007, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2008, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2009, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x200A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2010, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2011, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2012, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2013, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2014, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2015, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2016, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2017, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, }}, +{ 0x2018, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2019, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x24, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x201F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2020, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2021, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2022, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2023, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2024, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2025, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2026, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2027, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x202F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2030, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x52, 0x00, 0x52, 0x00, 0x24, 0x00, 0x08, 0x00, 0x08, 0x00, 0x15, 0x00, 0x2A, 0x80, 0x2A, 0x80, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2031, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x50, 0x00, 0x20, 0x00, 0x20, 0x00, 0x55, 0x00, 0xAA, 0x80, 0xAA, 0x80, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2032, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2033, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2034, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2035, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2036, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2037, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x92, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2038, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2039, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x22, 0x00, 0x14, 0x00, 0x49, 0x00, 0x14, 0x00, 0x22, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x203F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2040, { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2041, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2042, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x22, 0x00, 0xAA, 0x80, 0x77, 0x00, 0xAA, 0x80, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2043, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2044, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2045, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2046, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2047, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x99, 0x00, 0x99, 0x00, 0x11, 0x00, 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2048, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x45, 0x00, 0x45, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2049, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x204A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x204B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x5E, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x204C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x204D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x5E, 0x00, 0x5E, 0x00, 0x5E, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x204E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x204F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0x2050, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2051, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2052, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x23, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2057, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x205F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2060, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2061, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2062, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2063, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2070, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2071, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2074, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x50, 0x00, 0x78, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2075, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x40, 0x00, 0x70, 0x00, 0x08, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2076, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2077, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2078, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2079, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x08, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x207F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2080, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2081, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2082, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2083, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x10, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2084, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x50, 0x00, 0x78, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2085, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x40, 0x00, 0x70, 0x00, 0x08, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2086, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2087, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2088, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2089, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x38, 0x00, 0x08, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x208A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x208B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x208C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x208D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x208E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x80, 0x00, 0x80, 0x00, 0x8F, 0x00, 0x88, 0x00, 0x88, 0x00, 0x7E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x45, 0x00, 0x44, 0x00, 0x48, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, 0x60, 0x00, 0x61, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x7B, 0x00, 0x2C, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x30, 0x00, 0x51, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x77, 0x00, 0x4B, 0x00, 0x4D, 0x00, 0x49, 0x00, 0x59, 0x00, 0x69, 0x00, 0x41, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0xFF, 0x80, 0x49, 0x00, 0xFF, 0x80, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x41, 0x00, 0xFF, 0x80, 0x41, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x44, 0x00, 0xFE, 0x00, 0x44, 0x00, 0x7B, 0x80, 0x64, 0x00, 0x53, 0x00, 0x48, 0x80, 0x44, 0x80, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0xFF, 0x80, 0x49, 0x00, 0xFF, 0x80, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x45, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0xFE, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x3C, 0x00, 0x52, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x31, 0x00, 0x59, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x24, 0x00, 0x54, 0x00, 0x5A, 0x00, 0x91, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0xFF, 0x00, 0x42, 0x00, 0xFF, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D0, { 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D1, { 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D4, { 0x5E, 0x00, 0x61, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D5, { 0x3D, 0x00, 0x43, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D6, { 0x20, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D7, { 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x25, 0x00, 0x2D, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x29, 0x00, 0x2D, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20DB, { 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20DC, { 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20DD, { 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, }}, +{ 0x20DE, { 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x80, }}, +{ 0x20DF, { 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, }}, +{ 0x20E0, { 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0xA0, 0x80, 0xA0, 0x80, 0x90, 0x80, 0x90, 0x80, 0x88, 0x80, 0x88, 0x80, 0x84, 0x80, 0x84, 0x80, 0x82, 0x80, 0x82, 0x80, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, }}, +{ 0x20E1, { 0x22, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20E2, { 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, }}, +{ 0x20E3, { 0x7F, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, }}, +{ 0x20E4, { 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, }}, +{ 0x20E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20E7, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, }}, +{ 0x20E9, { 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x20EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x00, 0xFF, 0x80, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2100, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x48, 0x00, 0x48, 0x00, 0x49, 0x00, 0x3A, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x14, 0x00, 0x24, 0x00, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2101, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x48, 0x00, 0x48, 0x00, 0x49, 0x00, 0x3A, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2102, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x51, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x51, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2103, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xAE, 0x00, 0x51, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2104, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x54, 0x00, 0x50, 0x00, 0x50, 0x00, 0x54, 0x00, 0x38, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2105, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x38, 0x00, 0x0A, 0x00, 0x15, 0x00, 0x25, 0x00, 0x25, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2106, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x38, 0x00, 0x0D, 0x00, 0x15, 0x00, 0x25, 0x00, 0x25, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2107, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x20, 0x00, 0x40, 0x00, 0x41, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2108, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x61, 0x00, 0x41, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x01, 0x00, 0x41, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2109, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xA0, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x210A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x22, 0x00, 0x22, 0x00, 0x13, 0x80, 0x3C, 0x00, 0x24, 0x00, 0x48, 0x00, 0x70, 0x00, 0x00, 0x00, }}, +{ 0x210B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x35, 0x00, 0x15, 0x00, 0x16, 0x00, 0x2C, 0x00, 0x38, 0x00, 0x68, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x210C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x00, 0xE6, 0x00, 0x66, 0x00, 0x66, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x210D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x5E, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x210E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x210F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x21, 0x00, 0x21, 0x00, 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2110, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x24, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2111, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x66, 0x00, 0x36, 0x00, 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x33, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2112, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x3C, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x54, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2113, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2114, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x7F, 0x80, 0x28, 0x00, 0x2A, 0x00, 0x2D, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2D, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2115, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x51, 0x00, 0x59, 0x00, 0x59, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x53, 0x00, 0x53, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2116, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x68, 0x00, 0x68, 0x00, 0x69, 0x00, 0x5A, 0x80, 0x5A, 0x80, 0x59, 0x00, 0x48, 0x00, 0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2117, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0xB9, 0x00, 0xA5, 0x00, 0xB9, 0x00, 0xA1, 0x00, 0xA1, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2118, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x8C, 0x00, 0x92, 0x00, 0xA1, 0x00, 0xC1, 0x00, 0x41, 0x00, 0xAA, 0x00, 0xA4, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x2119, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x5E, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x211A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x55, 0x00, 0x53, 0x00, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x211B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x5E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x12, 0x00, 0x52, 0x80, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x211C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0xDB, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1A, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x211D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x5E, 0x00, 0x58, 0x00, 0x54, 0x00, 0x52, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x211E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x48, 0x80, 0x45, 0x00, 0x42, 0x00, 0x45, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x211F, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x7E, 0x00, 0x48, 0x00, 0x4C, 0x00, 0x4A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2120, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x80, 0x8D, 0x80, 0x4A, 0x80, 0x28, 0x80, 0xC8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2121, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x51, 0x00, 0x5D, 0x00, 0x51, 0x00, 0x5D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2122, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0x80, 0x4D, 0x80, 0x4A, 0x80, 0x48, 0x80, 0x48, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2123, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x32, 0x00, 0x22, 0x00, 0x22, 0x00, 0x54, 0x00, 0x54, 0x00, 0x94, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2124, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x28, 0x00, 0x50, 0x00, 0x50, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2125, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x1E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0x2126, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2127, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2128, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x46, 0x00, 0x03, 0x00, 0x33, 0x00, 0x1E, 0x00, 0x23, 0x00, 0x03, 0x00, 0x03, 0x00, 0x76, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2129, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x68, 0x00, 0x44, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x51, 0x00, 0x11, 0x00, 0x12, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0xA2, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xC8, 0x00, 0xD8, 0x00, 0xCC, 0x00, 0xC6, 0x00, 0xD2, 0x00, 0xCC, 0x00, 0xC0, 0x00, 0x71, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x60, 0x00, 0x63, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x212F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x22, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2130, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x22, 0x00, 0x20, 0x00, 0x18, 0x00, 0x20, 0x00, 0x46, 0x00, 0x41, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2131, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x8E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x90, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2132, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2133, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x21, 0x00, 0x21, 0x00, 0xA1, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2134, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x25, 0x00, 0x23, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2135, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2136, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2137, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2138, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2139, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x213A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1D, 0x00, 0x22, 0x00, 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x213D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x51, 0x00, 0x52, 0x00, 0x52, 0x00, 0x2C, 0x00, 0x28, 0x00, 0x28, 0x00, 0x50, 0x00, 0xA0, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x213E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x213F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2140, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x50, 0x00, 0x28, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x28, 0x00, 0x50, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2141, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x71, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2142, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2143, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2144, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2145, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x52, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0xA2, 0x00, 0xA2, 0x00, 0xA2, 0x00, 0xA4, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2146, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80, 0x3A, 0x80, 0x55, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xAD, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2147, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x52, 0x80, 0x52, 0x80, 0xFF, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2148, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2149, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x3C, 0x00, 0x00, 0x00, }}, +{ 0x214A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x48, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x214B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x29, 0x00, 0x11, 0x00, 0x29, 0x00, 0x46, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2153, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x26, 0x00, 0x71, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2154, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x10, 0x00, 0x10, 0x00, 0x26, 0x00, 0x71, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2155, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x27, 0x00, 0x74, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2156, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x10, 0x00, 0x10, 0x00, 0x27, 0x00, 0x74, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2157, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x10, 0x00, 0x60, 0x00, 0x10, 0x00, 0x17, 0x00, 0x64, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2158, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x50, 0x00, 0x70, 0x00, 0x17, 0x00, 0x14, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2159, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x23, 0x00, 0x74, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x40, 0x00, 0x70, 0x00, 0x10, 0x00, 0x13, 0x00, 0x64, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x22, 0x00, 0x75, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x10, 0x00, 0x60, 0x00, 0x10, 0x00, 0x12, 0x00, 0x65, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x40, 0x00, 0x70, 0x00, 0x10, 0x00, 0x12, 0x00, 0x65, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x22, 0x00, 0x25, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x215F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2160, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2161, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2162, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2163, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x44, 0x00, 0x44, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2164, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2165, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x8A, 0x00, 0x8A, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x22, 0x00, 0x22, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2166, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x80, 0x8D, 0x00, 0x8D, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x25, 0x00, 0x25, 0x00, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2167, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x4A, 0x80, 0x4A, 0x80, 0x4A, 0x80, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2168, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x29, 0x00, 0x29, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x29, 0x00, 0x29, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2169, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x216F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2170, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2171, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2172, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2173, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x69, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x26, 0x00, 0x26, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2174, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2175, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2176, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBE, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0xAA, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2177, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x00, 0x00, 0xBF, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x4A, 0x80, 0x4A, 0x80, 0x5F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2178, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x69, 0x00, 0x29, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x29, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2179, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x217A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x4A, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x4A, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x217B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x95, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x95, 0x00, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x217C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x217D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x217E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x217F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2180, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2181, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x22, 0x00, 0x39, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x39, 0x00, 0x22, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2182, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x9C, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x9C, 0x80, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2183, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2190, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2191, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2192, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2193, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2194, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2195, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2196, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x60, 0x00, 0x50, 0x00, 0x48, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2197, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x05, 0x00, 0x09, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2198, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x09, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2199, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x48, 0x00, 0x50, 0x00, 0x60, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x00, 0x42, 0x00, 0xFF, 0x00, 0x44, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x24, 0x00, 0x22, 0x00, 0xFF, 0x00, 0x42, 0x00, 0x44, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x42, 0x00, 0xF5, 0x00, 0x48, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x42, 0x00, 0xAF, 0x00, 0x12, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x24, 0x00, 0x48, 0x00, 0xFF, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x219F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0xFF, 0x00, 0x12, 0x00, 0x24, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x11, 0x00, 0x22, 0x00, 0x7C, 0x00, 0x22, 0x00, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x00, 0x22, 0x00, 0x1F, 0x00, 0x22, 0x00, 0x44, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x11, 0x00, 0x21, 0x00, 0x7F, 0x00, 0x21, 0x00, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x00, 0x42, 0x00, 0x7F, 0x00, 0x42, 0x00, 0x44, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x00, 0x41, 0x00, 0xFE, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x00, 0x82, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x22, 0x00, 0x45, 0x00, 0xFE, 0x00, 0x44, 0x00, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x44, 0x00, 0xA2, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x24, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x49, 0x00, 0xF7, 0x80, 0x41, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x49, 0x00, 0xFF, 0x80, 0x49, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x12, 0x00, 0x2E, 0x00, 0x32, 0x00, 0x04, 0x00, 0x04, 0x00, 0x28, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7E, 0x00, 0x22, 0x00, 0x12, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x42, 0x00, 0x44, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x22, 0x00, 0x7E, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x44, 0x00, 0x42, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x15, 0x00, 0x0E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x21, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x20, 0x80, 0x20, 0x80, 0xA8, 0x80, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x82, 0x00, 0x82, 0x00, 0x8A, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x38, 0x00, 0x30, 0x00, 0x28, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x50, 0x00, 0x7F, 0x00, 0x50, 0x00, 0x49, 0x00, 0x05, 0x00, 0x7F, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x47, 0x00, 0x8A, 0x80, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x71, 0x00, 0xA8, 0x80, 0x20, 0x80, 0x20, 0x80, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x14, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x72, 0x00, 0xAA, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2A, 0x80, 0x27, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x14, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x77, 0x00, 0xAA, 0x80, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0xAA, 0x80, 0x77, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x21, 0x00, 0x7F, 0x80, 0x82, 0x00, 0x7F, 0x80, 0x24, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x88, 0x80, 0x7F, 0x00, 0x22, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0xFF, 0x00, 0x20, 0x80, 0xFF, 0x00, 0x42, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x80, 0x80, 0x00, 0x7F, 0x80, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x36, 0x00, 0x55, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x55, 0x00, 0x36, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x7F, 0x00, 0x22, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x36, 0x00, 0x55, 0x00, 0x14, 0x00, 0x14, 0x00, 0x55, 0x00, 0x36, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x48, 0x00, 0x44, 0x00, 0x62, 0x00, 0x51, 0x00, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x09, 0x00, 0x11, 0x00, 0x23, 0x00, 0x45, 0x00, 0x09, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x09, 0x00, 0x45, 0x00, 0x23, 0x00, 0x11, 0x00, 0x09, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00, 0x51, 0x00, 0x62, 0x00, 0x44, 0x00, 0x48, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x3F, 0x80, 0x40, 0x00, 0xFF, 0x80, 0x40, 0x00, 0x3F, 0x80, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0xFE, 0x00, 0x01, 0x00, 0xFF, 0x80, 0x01, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x48, 0x00, 0xF5, 0x00, 0x42, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x12, 0x00, 0xAF, 0x00, 0x42, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x5B, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x6D, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x50, 0x00, 0x7F, 0x00, 0x50, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x05, 0x00, 0x7F, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x5F, 0x80, 0x80, 0x80, 0x5F, 0x80, 0x30, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0xFD, 0x00, 0x80, 0x80, 0xFD, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x77, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x36, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x36, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x77, 0x00, 0x22, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x77, 0x00, 0x22, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x36, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x86, 0x00, 0xFD, 0x00, 0x80, 0x80, 0xFD, 0x00, 0x86, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x40, 0x00, 0x5C, 0x00, 0x58, 0x00, 0x54, 0x00, 0x42, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x21, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x77, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x77, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x32, 0x00, 0x49, 0x00, 0xFF, 0x80, 0x49, 0x00, 0x32, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x27, 0x00, 0x2A, 0x80, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0xAA, 0x00, 0x72, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x44, 0x00, 0xFF, 0x00, 0x44, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x22, 0x00, 0xFF, 0x00, 0x22, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x49, 0x00, 0xFF, 0x80, 0x49, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0xFF, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x52, 0x00, 0xFF, 0x00, 0x52, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x94, 0x80, 0xFF, 0x80, 0x94, 0x80, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x4F, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x79, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x21FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x66, 0x00, 0xBD, 0x00, 0x66, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2200, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2201, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2202, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x26, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2203, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2204, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2205, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0x00, 0x22, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x49, 0x00, 0x51, 0x00, 0x51, 0x00, 0x22, 0x00, 0x5C, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2206, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2207, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2208, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2209, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x1F, 0x00, 0x24, 0x00, 0x44, 0x00, 0x7F, 0x00, 0x48, 0x00, 0x28, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x7F, 0x00, 0x11, 0x00, 0x12, 0x00, 0x7C, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x220F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2210, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2211, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2212, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2213, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2214, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2215, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2216, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2217, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x7F, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2218, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2219, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x48, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x09, 0x00, 0x31, 0x00, 0x0A, 0x00, 0x32, 0x00, 0x04, 0x00, 0x04, 0x00, 0x48, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x19, 0x00, 0x29, 0x00, 0x3A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x48, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x94, 0x80, 0x88, 0x80, 0x94, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x221F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2220, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2221, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x24, 0x00, 0x18, 0x00, 0x18, 0x00, 0x24, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2222, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x14, 0x00, 0x08, 0x00, 0x18, 0x00, 0x24, 0x00, 0x44, 0x00, 0x24, 0x00, 0x18, 0x00, 0x08, 0x00, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2223, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2224, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2225, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2226, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x74, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2227, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2228, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2229, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x80, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x222F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x7E, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0x7E, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2230, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0xAA, 0x80, 0xAA, 0x80, 0x7F, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2231, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7D, 0x00, 0x93, 0x00, 0x17, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2232, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, 0x00, 0x1F, 0x00, 0x24, 0x80, 0x74, 0x80, 0xAC, 0x80, 0x24, 0x80, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2233, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x92, 0x00, 0x97, 0x00, 0x9A, 0x80, 0x92, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2234, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2235, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2236, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2237, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2238, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2239, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x49, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x49, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x223F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x50, 0x00, 0x88, 0x00, 0x88, 0x00, 0x08, 0x80, 0x08, 0x80, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2240, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2241, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x34, 0x00, 0x49, 0x00, 0x16, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2242, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2243, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2244, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x34, 0x00, 0x4D, 0x00, 0x06, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2245, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2246, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2247, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x06, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2248, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2249, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x34, 0x00, 0x49, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x49, 0x00, 0x16, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x49, 0x00, 0x31, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x77, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x224F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2250, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2251, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2252, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2253, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2254, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2255, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2256, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2257, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2258, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2259, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x225A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x225B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x225C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x225D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x12, 0x00, 0x3F, 0x00, 0x5A, 0x00, 0x36, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x225E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x225F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2260, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2261, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2262, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2263, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2264, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2265, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2266, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2267, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2268, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2269, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x24, 0x00, 0x12, 0x00, 0x09, 0x00, 0x12, 0x00, 0x24, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x6B, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x6B, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x13, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x226F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x64, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2270, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2271, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2272, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2273, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2274, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x38, 0x00, 0x49, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2275, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x38, 0x00, 0x49, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2276, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x63, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2277, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x63, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2278, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x6B, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2279, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x6B, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x227A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x227B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x00, 0x38, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x227C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x71, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x227D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x00, 0x38, 0x00, 0x47, 0x00, 0x38, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x227E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x227F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x00, 0x38, 0x00, 0x40, 0x00, 0x06, 0x00, 0x49, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2280, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x74, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2281, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x17, 0x00, 0x3C, 0x00, 0x50, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2282, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2283, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2284, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x44, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2285, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2286, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2287, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2288, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x3F, 0x00, 0x10, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2289, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7E, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x228A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x228B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x228C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x51, 0x00, 0x7F, 0x00, 0x51, 0x00, 0x49, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x228D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x228E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x228F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2290, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2291, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2292, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2293, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2294, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2295, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2296, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2297, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2298, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2299, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x229A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x229B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x6B, 0x00, 0x5D, 0x00, 0x6B, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x229C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x5D, 0x00, 0x41, 0x00, 0x5D, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x229D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x5D, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x229E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x229F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x5F, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x57, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x5F, 0x00, 0x50, 0x00, 0x5F, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x44, 0x00, 0x44, 0x00, 0x48, 0x00, 0x7F, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x44, 0x00, 0x44, 0x00, 0x7F, 0x00, 0x48, 0x00, 0x7F, 0x00, 0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x54, 0x00, 0x54, 0x00, 0x5F, 0x00, 0x58, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x5F, 0x00, 0x54, 0x00, 0x5F, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x78, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x30, 0x00, 0x0F, 0x00, 0x30, 0x00, 0x40, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x19, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x70, 0x00, 0x4C, 0x00, 0x43, 0x00, 0x4C, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x19, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x70, 0x00, 0x4C, 0x00, 0x43, 0x00, 0x4C, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x5F, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x7D, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x09, 0x00, 0x11, 0x00, 0x21, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x22, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x14, 0x00, 0x22, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x63, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x62, 0x00, 0x54, 0x00, 0x48, 0x00, 0x54, 0x00, 0x62, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x23, 0x00, 0x15, 0x00, 0x09, 0x00, 0x15, 0x00, 0x23, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x49, 0x00, 0x30, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x4F, 0x00, 0x50, 0x00, 0x4F, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x01, 0x00, 0x79, 0x00, 0x05, 0x00, 0x79, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x22, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x22, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x80, 0x49, 0x00, 0x92, 0x00, 0x49, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x49, 0x00, 0x24, 0x80, 0x49, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x63, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x63, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x71, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x47, 0x00, 0x38, 0x00, 0x07, 0x00, 0x38, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x11, 0x00, 0x1E, 0x00, 0x70, 0x00, 0x1E, 0x00, 0x71, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x44, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x3C, 0x00, 0x47, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x38, 0x00, 0x49, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x68, 0x00, 0x38, 0x00, 0x49, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x34, 0x00, 0x49, 0x00, 0x16, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x07, 0x00, 0x38, 0x00, 0x50, 0x00, 0x16, 0x00, 0x49, 0x00, 0x34, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x19, 0x00, 0x69, 0x00, 0x19, 0x00, 0x17, 0x00, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x44, 0x00, 0x74, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x70, 0x00, 0x50, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x19, 0x00, 0x69, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x48, 0x00, 0x78, 0x00, 0x4C, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x78, 0x00, 0x48, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x20, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x02, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x22FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2300, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x22, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x22, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2301, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x4C, 0x00, 0x2A, 0x00, 0x19, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2302, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2303, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2304, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x36, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2305, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2306, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2307, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2308, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2309, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x230F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2310, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2311, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2312, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2313, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2314, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2315, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x51, 0x00, 0x22, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2316, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0xFF, 0x80, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2317, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0xFF, 0x80, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0xFF, 0x80, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2318, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x94, 0x80, 0x94, 0x80, 0x7F, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x94, 0x80, 0x94, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2319, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x231A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x88, 0x80, 0x88, 0x80, 0xB8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x231B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x14, 0x00, 0x2A, 0x00, 0x55, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x231C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x231D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x231E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x231F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2320, { 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2321, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, }}, +{ 0x2322, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2323, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2324, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x80, 0x1C, 0x00, 0x36, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2325, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x10, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2326, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xC6, 0x00, 0xA9, 0x00, 0x90, 0x80, 0xA9, 0x00, 0xC6, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2327, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x88, 0x80, 0x94, 0x80, 0xA2, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2328, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x80, 0x80, 0xAA, 0x80, 0x80, 0x80, 0xAA, 0x80, 0x80, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x232B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x31, 0x80, 0x4A, 0x80, 0x84, 0x80, 0x4A, 0x80, 0x31, 0x80, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x232C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x26, 0x00, 0x63, 0x00, 0x61, 0x00, 0x61, 0x00, 0x23, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x232D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x24, 0x80, 0x43, 0x00, 0xC2, 0x00, 0x24, 0x00, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x232E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x21, 0x00, 0x3F, 0x80, 0x52, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x232F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2330, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x19, 0x80, 0x11, 0x00, 0x11, 0x00, 0x22, 0x00, 0x22, 0x00, 0x44, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2331, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x54, 0x00, 0x93, 0x00, 0x9F, 0x80, 0x93, 0x00, 0x54, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2332, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xB0, 0x00, 0x8C, 0x00, 0xFF, 0x00, 0x8C, 0x00, 0xB0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2333, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xB0, 0x00, 0x8E, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2334, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2335, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2336, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2337, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2338, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2339, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x49, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x233A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x233B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x233C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x5D, 0x00, 0x63, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x5D, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x233D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x233E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x233F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2340, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2341, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x43, 0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x49, 0x00, 0x51, 0x00, 0x51, 0x00, 0x61, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2342, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x61, 0x00, 0x61, 0x00, 0x51, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x45, 0x00, 0x43, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2343, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x47, 0x00, 0x59, 0x00, 0x61, 0x00, 0x59, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2344, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x71, 0x00, 0x4D, 0x00, 0x43, 0x00, 0x4D, 0x00, 0x71, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2345, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x7F, 0x00, 0x28, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2346, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x7F, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2347, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x51, 0x00, 0x7F, 0x00, 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2348, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x45, 0x00, 0x7F, 0x00, 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2349, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x22, 0x00, 0x51, 0x00, 0x49, 0x00, 0x45, 0x00, 0x22, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x234A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x234B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x234C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x234D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x234E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x234F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2350, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x6B, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2351, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2352, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2353, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2354, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2355, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2356, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2357, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x6B, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2358, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2359, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x235A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x235B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x235C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x235D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x5D, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x5D, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x235E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x235F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0xBE, 0x80, 0x9C, 0x80, 0x9C, 0x80, 0x63, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2360, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2361, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2362, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2363, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2364, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2365, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2366, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2367, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1F, 0x00, 0x28, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x28, 0x00, 0x1F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2368, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x30, 0x00, 0x49, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2369, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x236A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x236B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x39, 0x00, 0x6E, 0x00, 0x12, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x236C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x79, 0x00, 0x4F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x236D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x39, 0x00, 0x4E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x236E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x236F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x45, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2370, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x49, 0x00, 0x55, 0x00, 0x45, 0x00, 0x49, 0x00, 0x41, 0x00, 0x49, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2371, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x3B, 0x00, 0x5E, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2372, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x6E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2373, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2374, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0x5E, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, }}, +{ 0x2375, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2376, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2377, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x20, 0x00, 0x40, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2378, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2379, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x36, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x237A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x43, 0x00, 0x41, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x237B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x237C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x00, 0x20, 0x00, 0x60, 0x00, 0xA0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0xBF, 0x00, 0xA0, 0x00, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x237D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x237E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x237F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2380, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x1E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1E, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2381, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x08, 0x00, 0x08, 0x00, 0x78, 0x00, 0x88, 0x00, 0x88, 0x00, 0x7A, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2382, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x10, 0x80, 0x10, 0x80, 0x73, 0x80, 0x94, 0x80, 0x94, 0x80, 0x73, 0x80, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2383, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x80, 0x45, 0x00, 0x0C, 0x00, 0xD5, 0x80, 0x14, 0x00, 0x55, 0x00, 0x8C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2384, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x4E, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x4E, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2385, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2386, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x12, 0x00, 0x79, 0x00, 0x44, 0x80, 0x79, 0x00, 0x12, 0x00, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2387, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x0D, 0x00, 0x16, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2388, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x5D, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2389, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xE3, 0x80, 0x94, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x238A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xFF, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x94, 0x80, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x238B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0x00, 0xC1, 0x00, 0xA0, 0x80, 0x10, 0x80, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x238C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x71, 0x00, 0x01, 0x00, 0x63, 0x00, 0x94, 0x80, 0x94, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x238D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x238E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x238F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2390, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2391, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2392, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2393, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2394, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x81, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2395, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2396, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2397, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x5F, 0x80, 0x10, 0x80, 0x54, 0x80, 0x08, 0x80, 0x5E, 0x80, 0x08, 0x80, 0x54, 0x80, 0x10, 0x80, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2398, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x44, 0x00, 0x55, 0x00, 0x40, 0x00, 0x49, 0x00, 0x44, 0x00, 0x5E, 0x00, 0x44, 0x00, 0x69, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2399, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x1A, 0x00, 0x3A, 0x00, 0x22, 0x00, 0x63, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0xBE, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x239A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x81, 0x00, 0xA5, 0x00, 0x89, 0x00, 0x91, 0x00, 0xA5, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x239B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, }}, +{ 0x239C, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, }}, +{ 0x239D, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x239E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, }}, +{ 0x239F, { 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, }}, +{ 0x23A0, { 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, }}, +{ 0x23A2, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, }}, +{ 0x23A3, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, }}, +{ 0x23A5, { 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, }}, +{ 0x23A6, { 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x23A8, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x30, 0x00, 0x30, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x23A9, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23AA, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x23AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x23AC, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x23AD, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23AE, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x23AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23B0, { 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x30, 0x00, }}, +{ 0x23B1, { 0x30, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, }}, +{ 0x23B2, { 0x00, 0x00, 0xFF, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, }}, +{ 0x23B3, { 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, }}, +{ 0x23B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23B7, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xC8, 0x00, 0x28, 0x00, 0x28, 0x00, 0x18, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23B8, { 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, }}, +{ 0x23B9, { 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, }}, +{ 0x23BA, { 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, }}, +{ 0x23BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x59, 0x00, 0x4D, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x59, 0x00, 0x4D, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x59, 0x00, 0x4D, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x6B, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x23CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x35, 0x00, 0x5D, 0x00, 0x81, 0x00, 0x5E, 0x00, 0x30, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2400, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xB4, 0x00, 0xB4, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2401, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x40, 0x00, 0x28, 0x00, 0xD4, 0x00, 0x14, 0x00, 0x16, 0x80, 0x0A, 0x80, 0x03, 0x80, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2402, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x40, 0x00, 0x3C, 0x00, 0xC8, 0x00, 0x08, 0x00, 0x0A, 0x80, 0x0A, 0x80, 0x01, 0x00, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2403, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x9C, 0x00, 0xE8, 0x00, 0x08, 0x00, 0x0A, 0x80, 0x0A, 0x80, 0x01, 0x00, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2404, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x88, 0x00, 0xF4, 0x00, 0x14, 0x00, 0x17, 0x80, 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2405, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x98, 0x00, 0xF4, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x80, 0x02, 0x80, 0x02, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2406, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xA0, 0x00, 0xE0, 0x00, 0xAC, 0x00, 0xB0, 0x00, 0x10, 0x00, 0x12, 0x80, 0x0E, 0x80, 0x03, 0x00, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2407, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xC0, 0x00, 0xBC, 0x00, 0xD0, 0x00, 0x18, 0x00, 0x12, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2408, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x48, 0x00, 0x70, 0x00, 0x48, 0x00, 0x70, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2409, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x78, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x40, 0x00, 0x70, 0x00, 0x40, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x38, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, 0x70, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x240F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, 0x70, 0x00, 0x07, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2410, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xB0, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x13, 0x80, 0x1E, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2411, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xAC, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x10, 0x80, 0x0D, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2412, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xAC, 0x00, 0xD0, 0x00, 0x11, 0x00, 0x12, 0x80, 0x0C, 0x80, 0x01, 0x00, 0x02, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2413, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xAC, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x13, 0x00, 0x0C, 0x80, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2414, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xAC, 0x00, 0xD0, 0x00, 0x10, 0x00, 0x12, 0x80, 0x0E, 0x80, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2415, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xA8, 0x00, 0xB4, 0x00, 0x1C, 0x00, 0x16, 0x80, 0x16, 0x80, 0x03, 0x00, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2416, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x40, 0x00, 0x34, 0x00, 0xD4, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0A, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2417, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x9C, 0x00, 0xE8, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0A, 0x80, 0x03, 0x00, 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2418, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x88, 0x00, 0x74, 0x00, 0x1C, 0x00, 0x17, 0x00, 0x16, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2419, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x40, 0x00, 0x70, 0x00, 0x40, 0x00, 0x78, 0x00, 0x00, 0x00, 0x11, 0x00, 0x1B, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x241A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x40, 0x00, 0x34, 0x00, 0xD4, 0x00, 0x14, 0x00, 0x17, 0x00, 0x0A, 0x80, 0x03, 0x00, 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x241B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0x00, 0x8C, 0x00, 0xF0, 0x00, 0x08, 0x00, 0x05, 0x80, 0x1A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x241C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x40, 0x00, 0x70, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x08, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x241D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x40, 0x00, 0x58, 0x00, 0x48, 0x00, 0x30, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x241E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x70, 0x00, 0x48, 0x00, 0x48, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x241F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2420, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2421, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xBC, 0x00, 0xD0, 0x00, 0x18, 0x00, 0x12, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2422, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x00, 0x20, 0x00, 0x6E, 0x00, 0xB1, 0x00, 0x21, 0x00, 0x21, 0x00, 0x31, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2423, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2424, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x64, 0x00, 0x54, 0x00, 0x4C, 0x00, 0x44, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2425, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x08, 0x00, 0x08, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2426, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2440, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x49, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2441, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2442, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2443, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2444, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2445, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x63, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2446, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x67, 0x00, 0x67, 0x00, 0x60, 0x00, 0x60, 0x00, 0x67, 0x00, 0x67, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2447, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x6B, 0x00, 0x68, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2448, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0x80, 0x57, 0x80, 0x57, 0x80, 0x57, 0x80, 0x57, 0x80, 0x50, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2449, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x244A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x48, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2460, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x88, 0x80, 0x98, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2461, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0x82, 0x80, 0x84, 0x80, 0x88, 0x80, 0x90, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2462, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0x82, 0x80, 0x8C, 0x80, 0x82, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2463, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x88, 0x80, 0x98, 0x80, 0xA8, 0x80, 0xBC, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2464, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBE, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0x82, 0x80, 0x82, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2465, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2466, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBE, 0x80, 0x82, 0x80, 0x84, 0x80, 0x84, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2467, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2468, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x82, 0x80, 0x82, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2469, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xAC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA4, 0x80, 0xA8, 0x80, 0xA8, 0x80, 0xAE, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xAC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA4, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA8, 0x80, 0xA8, 0x80, 0xAA, 0x80, 0xAE, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xAE, 0x80, 0xA8, 0x80, 0xA8, 0x80, 0xAC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x246F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA6, 0x80, 0xA8, 0x80, 0xA8, 0x80, 0xAC, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2470, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xAE, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2471, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2472, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA6, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2473, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA4, 0x80, 0x9A, 0x80, 0x9A, 0x80, 0x9A, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xB4, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2474, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x88, 0x80, 0x98, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2475, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0x82, 0x80, 0x84, 0x80, 0x88, 0x80, 0x90, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2476, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0x82, 0x80, 0x8C, 0x80, 0x82, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2477, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x88, 0x80, 0x98, 0x80, 0xA8, 0x80, 0xBC, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2478, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xBE, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0x82, 0x80, 0x82, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2479, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xBE, 0x80, 0x82, 0x80, 0x84, 0x80, 0x84, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x82, 0x80, 0x82, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x247F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xAC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA4, 0x80, 0xA8, 0x80, 0xA8, 0x80, 0xAE, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2480, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xAC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA4, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAC, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2481, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA8, 0x80, 0xA8, 0x80, 0xAA, 0x80, 0xAE, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2482, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xAE, 0x80, 0xA8, 0x80, 0xA8, 0x80, 0xAC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAC, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2483, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA6, 0x80, 0xA8, 0x80, 0xA8, 0x80, 0xAC, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2484, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xAE, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2485, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2486, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA6, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAC, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2487, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA4, 0x80, 0x9A, 0x80, 0x9A, 0x80, 0x9A, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xB4, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2488, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x13, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2489, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x43, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x08, 0x00, 0x30, 0x00, 0x08, 0x00, 0x8B, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0x3C, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF0, 0x00, 0x08, 0x00, 0x0B, 0x00, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x8B, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x248F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, 0x88, 0x00, 0x8B, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2490, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x78, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2491, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0xAB, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2492, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2493, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x88, 0x00, 0x88, 0x00, 0x90, 0x00, 0xA0, 0x00, 0xA3, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2494, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x88, 0x00, 0x88, 0x00, 0x90, 0x00, 0x88, 0x00, 0x8B, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2495, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xA8, 0x00, 0xB8, 0x00, 0x88, 0x00, 0x8B, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2496, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xB0, 0x00, 0x88, 0x00, 0x8B, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2497, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xB0, 0x00, 0xA8, 0x00, 0xAB, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2498, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x48, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2499, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x90, 0x00, 0xA8, 0x00, 0xAB, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xA8, 0x00, 0xA8, 0x00, 0x98, 0x00, 0x88, 0x00, 0x8B, 0x00, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0xA8, 0x00, 0xAB, 0x00, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x9C, 0x80, 0x82, 0x80, 0x9E, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9E, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x249F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x82, 0x80, 0x82, 0x80, 0x9E, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0xBE, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x84, 0x80, 0x88, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x98, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0x9C, 0x80, 0x45, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x88, 0x80, 0x80, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x88, 0x80, 0x80, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0xA8, 0x80, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x90, 0x80, 0x90, 0x80, 0x92, 0x80, 0x94, 0x80, 0x98, 0x80, 0x94, 0x80, 0x92, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x98, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x88, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x98, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x98, 0x80, 0x51, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x8C, 0x80, 0x45, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x96, 0x80, 0x98, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9E, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x82, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x90, 0x80, 0x90, 0x80, 0xB8, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x8C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAA, 0x80, 0x94, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x88, 0x80, 0x94, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x43, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xBE, 0x80, 0x84, 0x80, 0x88, 0x80, 0x90, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x88, 0x80, 0x88, 0x80, 0x94, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBC, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBE, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBE, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA0, 0x80, 0xA6, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0xBE, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9E, 0x80, 0x82, 0x80, 0x82, 0x80, 0x82, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA4, 0x80, 0xA8, 0x80, 0xB0, 0x80, 0xA8, 0x80, 0xA4, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0xB6, 0x80, 0xAA, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0xB2, 0x80, 0xAA, 0x80, 0xA6, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAA, 0x80, 0xA6, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBC, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9E, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x82, 0x80, 0x82, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBE, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x94, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0x94, 0x80, 0x88, 0x80, 0x88, 0x80, 0x94, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA2, 0x80, 0x94, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xBE, 0x80, 0x84, 0x80, 0x88, 0x80, 0x90, 0x80, 0xA0, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x9C, 0x80, 0x82, 0x80, 0x9E, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9E, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x82, 0x80, 0x82, 0x80, 0x9E, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0xBE, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x84, 0x80, 0x88, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x98, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xBC, 0x80, 0x84, 0x80, 0x59, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0xA0, 0x80, 0xA0, 0x80, 0xBC, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x88, 0x80, 0x80, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x88, 0x80, 0x80, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0xA8, 0x80, 0x51, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x90, 0x80, 0x90, 0x80, 0x92, 0x80, 0x94, 0x80, 0x98, 0x80, 0x94, 0x80, 0x92, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xB4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x98, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x88, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x98, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x98, 0x80, 0x51, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x80, 0x94, 0x80, 0x94, 0x80, 0x94, 0x80, 0x8C, 0x80, 0x45, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x96, 0x80, 0x98, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x9E, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x82, 0x80, 0xBC, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x90, 0x80, 0x90, 0x80, 0xB8, 0x80, 0x90, 0x80, 0x90, 0x80, 0x90, 0x80, 0x8C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0xA4, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x94, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x94, 0x80, 0x88, 0x80, 0x94, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9E, 0x80, 0x43, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0xBE, 0x80, 0x84, 0x80, 0x88, 0x80, 0x90, 0x80, 0xBE, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x24EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2500, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2501, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2502, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2503, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2504, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2505, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x00, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2506, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x2507, { 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x2508, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2509, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x250A, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x250B, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, }}, +{ 0x250C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x250D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x250E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x250F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2510, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2511, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2512, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2513, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2514, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2515, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2516, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2517, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2518, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2519, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251A, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251B, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x251C, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x251D, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x251E, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x251F, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2520, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2521, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2522, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2523, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2524, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2525, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2526, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2527, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2528, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2529, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, }}, +{ 0x252A, { 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x252B, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x252C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x252D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x252E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x252F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2530, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2531, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2532, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2533, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2534, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2535, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2536, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2537, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2538, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2539, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253A, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253B, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x253C, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x253D, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x253E, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x253F, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2540, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2541, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2542, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2543, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2544, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2545, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2546, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2547, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2548, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x2549, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x254A, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x254B, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x254C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254E, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x254F, { 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2550, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2551, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2552, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2553, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2554, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x10, 0x00, 0x17, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2555, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2556, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2557, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x04, 0x00, 0xF4, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2558, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2559, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255A, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x80, 0x10, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255B, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255C, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255D, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xF4, 0x00, 0x04, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x255E, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x0F, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x255F, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2560, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x80, 0x10, 0x00, 0x17, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2561, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2562, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xF4, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2563, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xF4, 0x00, 0x04, 0x00, 0xF4, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2564, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2565, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2566, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xF7, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x2567, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2568, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2569, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x256A, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x80, 0x08, 0x00, 0xFF, 0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x256B, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xFF, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x256C, { 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0xF7, 0x80, 0x00, 0x00, 0xF7, 0x80, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, }}, +{ 0x256D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x256E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x256F, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2570, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2571, { 0x00, 0x80, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, }}, +{ 0x2572, { 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, }}, +{ 0x2573, { 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, }}, +{ 0x2574, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2575, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2576, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2577, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2578, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2579, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x257C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257D, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, }}, +{ 0x257E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x257F, { 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0x2580, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2581, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2582, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2583, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2584, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2585, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2586, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2587, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2588, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x2589, { 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, }}, +{ 0x258A, { 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, }}, +{ 0x258B, { 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, }}, +{ 0x258C, { 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, }}, +{ 0x258D, { 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, }}, +{ 0x258E, { 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, }}, +{ 0x258F, { 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, }}, +{ 0x2590, { 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, }}, +{ 0x2591, { 0x55, 0x00, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xAA, 0x80, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, }}, +{ 0x2592, { 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, 0xAA, 0x80, 0x55, 0x00, }}, +{ 0x2593, { 0xFF, 0x80, 0xAA, 0x80, 0xFF, 0x80, 0x55, 0x00, 0xFF, 0x80, 0xAA, 0x80, 0xFF, 0x80, 0x55, 0x00, 0xFF, 0x80, 0xAA, 0x80, 0xFF, 0x80, 0x55, 0x00, 0xFF, 0x80, 0xAA, 0x80, 0xFF, 0x80, 0x55, 0x00, 0xFF, 0x80, 0xAA, 0x80, }}, +{ 0x2594, { 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2595, { 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, }}, +{ 0x2596, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, }}, +{ 0x2597, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, }}, +{ 0x2598, { 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2599, { 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x259A, { 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, }}, +{ 0x259B, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, }}, +{ 0x259C, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, }}, +{ 0x259D, { 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x259E, { 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, }}, +{ 0x259F, { 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x25A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x5D, 0x00, 0x5D, 0x00, 0x5D, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x55, 0x00, 0x7F, 0x00, 0x55, 0x00, 0x7F, 0x00, 0x55, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x45, 0x00, 0x63, 0x00, 0x51, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x51, 0x00, 0x63, 0x00, 0x45, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x6B, 0x00, 0x45, 0x00, 0x6B, 0x00, 0x51, 0x00, 0x6B, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x80, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x40, 0x80, 0x80, 0x80, 0x81, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x80, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xB0, 0x00, 0x8C, 0x00, 0x83, 0x00, 0x80, 0x80, 0x83, 0x00, 0x8C, 0x00, 0xB0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x7F, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x70, 0x00, 0x4C, 0x00, 0x43, 0x00, 0x4C, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0xFC, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x9C, 0x00, 0x83, 0x80, 0x9C, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x80, 0x80, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x07, 0x80, 0x1F, 0x80, 0x7F, 0x80, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x06, 0x80, 0x18, 0x80, 0x60, 0x80, 0x80, 0x80, 0x60, 0x80, 0x18, 0x80, 0x06, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x07, 0x00, 0x19, 0x00, 0x61, 0x00, 0x19, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0x80, 0xFF, 0x80, 0x1F, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x80, 0xE0, 0x80, 0x1C, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x80, 0x80, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x49, 0x00, 0x9C, 0x80, 0x49, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x22, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x36, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x36, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3A, 0x00, 0x79, 0x00, 0x79, 0x00, 0x79, 0x00, 0x3A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2E, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x2E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2E, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2E, 0x00, 0x4F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x38, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x38, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25D8, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xE3, 0x80, 0xC1, 0x80, 0xC1, 0x80, 0xC1, 0x80, 0xE3, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x25D9, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xE3, 0x80, 0xDD, 0x80, 0xBE, 0x80, 0xBE, 0x80, 0xBE, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x25DA, { 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xE3, 0x80, 0xDD, 0x80, 0xBE, 0x80, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x80, 0xBE, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, }}, +{ 0x25DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x70, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x79, 0x00, 0x79, 0x00, 0x79, 0x00, 0x79, 0x00, 0x79, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7D, 0x00, 0x79, 0x00, 0x71, 0x00, 0x61, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x43, 0x00, 0x47, 0x00, 0x4F, 0x00, 0x5F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x80, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x79, 0x00, 0x79, 0x00, 0xF8, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x8F, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x79, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x79, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x4F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x79, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x79, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x41, 0x00, 0x4F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x22, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x50, 0x00, 0x48, 0x00, 0x44, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x25FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x12, 0x00, 0x22, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2600, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x41, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0xBE, 0x80, 0x3E, 0x00, 0x1C, 0x00, 0x41, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2601, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2602, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2603, { 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x9C, 0x00, 0x36, 0x80, 0x22, 0x00, 0xAA, 0x00, 0x15, 0x00, 0x22, 0x00, 0x49, 0x00, 0x41, 0x80, 0xC9, 0x00, 0x41, 0x00, 0x3E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2604, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x09, 0x00, 0x12, 0x00, 0x12, 0x00, 0x34, 0x80, 0x49, 0x00, 0x86, 0x00, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2605, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0xFF, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x36, 0x00, 0x63, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2606, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xF7, 0x80, 0x41, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2607, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x05, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2608, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x42, 0x00, 0x44, 0x00, 0x48, 0x00, 0x50, 0x00, 0x48, 0x00, 0x45, 0x00, 0x43, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2609, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x49, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x55, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x38, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x38, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0xC1, 0x80, 0xDD, 0x80, 0x36, 0x00, 0x63, 0x00, 0x63, 0x00, 0xF7, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x260F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0xAA, 0x80, 0x55, 0x00, 0x49, 0x00, 0x80, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2610, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2611, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x69, 0x00, 0x69, 0x00, 0x51, 0x00, 0x51, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2612, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2613, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2616, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2617, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2619, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x3A, 0x00, 0x7C, 0x00, 0x74, 0x00, 0x7A, 0x00, 0x3A, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x3D, 0x00, 0x1D, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xBC, 0x00, 0xB8, 0x00, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x21, 0x00, 0x11, 0x00, 0x13, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x1A, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x84, 0x00, 0x88, 0x00, 0xC8, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x261F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2620, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x55, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x49, 0x00, 0x63, 0x00, 0x55, 0x00, 0x08, 0x00, 0x55, 0x00, 0x63, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2621, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2622, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0xF7, 0x80, 0xF7, 0x80, 0xFF, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x5D, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2623, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x41, 0x00, 0xAA, 0x80, 0x14, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2624, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x88, 0x80, 0x7F, 0x00, 0x88, 0x80, 0x7F, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2625, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2626, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2627, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1E, 0x00, 0x10, 0x00, 0xD6, 0x00, 0x38, 0x00, 0xD6, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2628, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2629, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x88, 0x80, 0xFF, 0x80, 0x88, 0x80, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x262A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x71, 0x00, 0x64, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x6A, 0x00, 0x60, 0x00, 0x71, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x262B, { 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x14, 0x00, 0x80, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x9C, 0x80, 0x88, 0x80, 0x5D, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x262C, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x5D, 0x00, 0x88, 0x80, 0x9C, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x9C, 0x80, 0xC9, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xEB, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x262D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x09, 0x00, 0x19, 0x00, 0x31, 0x00, 0x29, 0x00, 0x05, 0x00, 0x22, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x262E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x88, 0x80, 0x88, 0x80, 0x9C, 0x80, 0xAA, 0x80, 0xC9, 0x80, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x262F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x80, 0x80, 0xF2, 0x80, 0xF8, 0x80, 0xDD, 0x80, 0xFF, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2630, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2631, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2632, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2633, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2634, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2635, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2636, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2637, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2638, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x5D, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0xFF, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2639, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x94, 0x80, 0x80, 0x80, 0x80, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x94, 0x80, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0xEB, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x36, 0x00, 0x22, 0x00, 0xC1, 0x80, 0x22, 0x00, 0x36, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x04, 0x80, 0x04, 0x80, 0x04, 0x80, 0x09, 0x00, 0x0A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x14, 0x00, 0x24, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x24, 0x00, 0x14, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x263F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x2640, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0x2641, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2642, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x01, 0x80, 0x02, 0x80, 0x1C, 0x80, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2643, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x92, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x12, 0x00, 0xFF, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2644, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x22, 0x00, 0x24, 0x00, 0x24, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2645, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2646, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x49, 0x00, 0xEB, 0x80, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2647, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2648, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x55, 0x00, 0x55, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2649, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x264A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x3E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x264B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x48, 0x00, 0x30, 0x00, 0x06, 0x00, 0x09, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x264C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x31, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x32, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x264D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x54, 0x00, 0x54, 0x00, 0x56, 0x00, 0x55, 0x00, 0x55, 0x00, 0x56, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x264E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x77, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x264F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2650, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x00, 0x05, 0x00, 0x29, 0x00, 0x11, 0x00, 0x28, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2651, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x88, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x80, 0x24, 0x80, 0x26, 0x80, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2652, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2653, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2654, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x49, 0x00, 0x77, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2655, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x63, 0x00, 0x55, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2656, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x77, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2657, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2658, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3D, 0x00, 0x41, 0x00, 0x41, 0x00, 0x31, 0x00, 0x09, 0x00, 0x11, 0x00, 0x21, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2659, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x265A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x265B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x7F, 0x00, 0x55, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x265C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x265D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x265E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x00, 0x7B, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x265F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2660, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2661, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x49, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2662, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2663, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x5D, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x6B, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2664, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x36, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2665, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2666, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2667, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x77, 0x00, 0x94, 0x80, 0x80, 0x80, 0x9C, 0x80, 0x6B, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2668, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x29, 0x00, 0x25, 0x00, 0x15, 0x00, 0x25, 0x00, 0x29, 0x00, 0xAA, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2669, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x38, 0x00, 0x78, 0x00, 0x78, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x39, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x27, 0x00, 0xE7, 0x00, 0xE2, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x39, 0x00, 0x27, 0x00, 0x39, 0x00, 0x21, 0x00, 0x21, 0x00, 0x27, 0x00, 0xE7, 0x00, 0xE2, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x21, 0x00, 0x22, 0x00, 0x2C, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x23, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x23, 0x00, 0x2D, 0x00, 0x31, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x266F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x14, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x74, 0x00, 0x14, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x74, 0x00, 0x14, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2670, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2671, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x49, 0x00, 0x77, 0x00, 0x49, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2672, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x80, 0x03, 0x80, 0xF2, 0x80, 0x57, 0x80, 0x70, 0x00, 0x90, 0x80, 0x82, 0x80, 0x86, 0x80, 0x6B, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2673, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x88, 0x00, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2674, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x98, 0x00, 0x84, 0x80, 0x88, 0x80, 0x90, 0x80, 0x9C, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2675, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x98, 0x00, 0x84, 0x80, 0x88, 0x80, 0x84, 0x80, 0x98, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2676, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x88, 0x00, 0x90, 0x80, 0x94, 0x80, 0x9E, 0x80, 0x84, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2677, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x9C, 0x00, 0x90, 0x80, 0x98, 0x80, 0x84, 0x80, 0x98, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2678, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x8C, 0x00, 0x90, 0x80, 0x9C, 0x80, 0x92, 0x80, 0x8C, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2679, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x9C, 0x00, 0x84, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x267A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xE2, 0x80, 0x61, 0x80, 0xA3, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, 0x80, 0x6F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x267B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x80, 0x03, 0x80, 0xF3, 0x80, 0x77, 0x80, 0x70, 0x00, 0x90, 0x80, 0x82, 0x80, 0x86, 0x80, 0x6F, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x267C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x73, 0x00, 0xFD, 0x80, 0xCC, 0x80, 0xCC, 0x80, 0xBF, 0x80, 0xBE, 0x80, 0xBA, 0x80, 0xD1, 0x80, 0x7B, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x267D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x4D, 0x00, 0x82, 0x80, 0xB3, 0x80, 0xB3, 0x80, 0xC0, 0x80, 0xC1, 0x80, 0xC5, 0x80, 0xAE, 0x80, 0x45, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2680, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2681, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0xA0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2682, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0xA0, 0x80, 0x80, 0x80, 0x88, 0x80, 0x80, 0x80, 0x82, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2683, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2684, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0x88, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2685, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0xA2, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2686, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x45, 0x00, 0x45, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2687, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x55, 0x00, 0x55, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2688, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x79, 0x00, 0x79, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2689, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2701, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x19, 0x80, 0x66, 0x00, 0x9C, 0x00, 0x92, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2702, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x80, 0x6B, 0x00, 0x04, 0x00, 0x6B, 0x00, 0x90, 0x80, 0x90, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2703, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x92, 0x00, 0x9C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2704, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x92, 0x80, 0x95, 0x00, 0x6A, 0x00, 0x14, 0x00, 0x6A, 0x00, 0x95, 0x00, 0x92, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2706, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x42, 0x00, 0x9D, 0x00, 0x9D, 0x00, 0xB1, 0x00, 0xB1, 0x00, 0xB9, 0x00, 0xB9, 0x00, 0xA2, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2707, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, 0x88, 0x80, 0x80, 0x80, 0xA2, 0x80, 0xB6, 0x80, 0x41, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2708, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x4C, 0x00, 0x7F, 0x00, 0x4C, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2709, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xC1, 0x80, 0xA2, 0x80, 0x9C, 0x80, 0xA2, 0x80, 0xC1, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2711, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x69, 0x00, 0x98, 0x80, 0x83, 0x80, 0x98, 0x80, 0x69, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2712, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x6F, 0x00, 0xFF, 0x80, 0xFC, 0x00, 0xFF, 0x80, 0x6F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2713, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x34, 0x00, 0x34, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2714, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0xEC, 0x00, 0xEC, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2715, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0xE3, 0x80, 0x77, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x77, 0x00, 0xE3, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2716, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0x80, 0xE3, 0x80, 0xF7, 0x80, 0x7F, 0x00, 0x1C, 0x00, 0x7F, 0x00, 0xF7, 0x80, 0xF7, 0x80, 0xE3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2717, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x11, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2718, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2719, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0xEB, 0x80, 0x88, 0x80, 0xBE, 0x80, 0x88, 0x80, 0xEB, 0x80, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x271A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x271B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x73, 0x80, 0x73, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x271C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xE3, 0x80, 0xE3, 0x80, 0xE3, 0x80, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x271D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x271E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x16, 0x00, 0x77, 0x00, 0x41, 0x00, 0x77, 0x00, 0x37, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x271F, { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x22, 0x00, 0xEB, 0x80, 0x88, 0x80, 0xBE, 0x80, 0x88, 0x80, 0xEB, 0x80, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2720, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x88, 0x80, 0xC9, 0x80, 0xF7, 0x80, 0xC9, 0x80, 0x88, 0x80, 0x1C, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2721, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0xFF, 0x80, 0xA2, 0x80, 0x41, 0x00, 0xA2, 0x80, 0xFF, 0x80, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2722, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x49, 0x00, 0xFF, 0x80, 0x49, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2723, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x6B, 0x00, 0xFF, 0x80, 0x6B, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2724, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x6B, 0x00, 0xFF, 0x80, 0x6B, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2725, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x6B, 0x00, 0xFF, 0x80, 0x6B, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2726, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2727, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x14, 0x00, 0x63, 0x00, 0x80, 0x80, 0x63, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2729, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xF7, 0x80, 0x41, 0x00, 0x22, 0x00, 0x49, 0x00, 0x55, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x272A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xF7, 0x80, 0xF7, 0x80, 0xE3, 0x80, 0x00, 0x00, 0x80, 0x80, 0xC1, 0x80, 0xC9, 0x80, 0x9C, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x272B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x1C, 0x00, 0xE3, 0x80, 0x63, 0x00, 0x22, 0x00, 0x3E, 0x00, 0x77, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x272C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xEB, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x272D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xEB, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x272E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xEB, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x272F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0xF7, 0x80, 0x49, 0x00, 0x36, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2730, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x2C, 0x00, 0xC7, 0x00, 0x2E, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2731, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xDB, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x7E, 0x00, 0xFF, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2732, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xDB, 0x00, 0xFF, 0x00, 0x66, 0x00, 0x24, 0x00, 0x66, 0x00, 0xFF, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2733, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2734, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2735, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x36, 0x00, 0x3E, 0x00, 0xD5, 0x80, 0x3E, 0x00, 0x36, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2736, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x80, 0x6B, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x6B, 0x00, 0x88, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2737, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x14, 0x00, 0x94, 0x80, 0x7F, 0x00, 0x1C, 0x00, 0x7F, 0x00, 0x94, 0x80, 0x14, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2738, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x36, 0x00, 0xFF, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0x36, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2739, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0xDD, 0x80, 0x3E, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0xDD, 0x80, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x273A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0xDD, 0x80, 0x2A, 0x00, 0xFF, 0x80, 0x2A, 0x00, 0xDD, 0x80, 0x2A, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x273B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x22, 0x00, 0x08, 0x00, 0x22, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x273C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x3E, 0x00, 0x14, 0x00, 0x3E, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x273D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x3E, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x273E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x14, 0x00, 0xC9, 0x80, 0xC9, 0x80, 0x3E, 0x00, 0x14, 0x00, 0x7F, 0x00, 0xAA, 0x80, 0xC9, 0x80, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x273F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0xDB, 0x00, 0xFF, 0x00, 0x24, 0x00, 0x24, 0x00, 0x7E, 0x00, 0xE7, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2743, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xCB, 0x00, 0xBD, 0x00, 0x6E, 0x00, 0x18, 0x00, 0x76, 0x00, 0xBD, 0x00, 0xD3, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2744, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0xAA, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0xDD, 0x80, 0x6B, 0x00, 0xAA, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2745, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0xAA, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0xDD, 0x80, 0x6B, 0x00, 0xAA, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2746, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x5D, 0x00, 0xAA, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0xDD, 0x80, 0x6B, 0x00, 0xAA, 0x80, 0x5D, 0x00, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2747, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x14, 0x00, 0xEB, 0x80, 0x14, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2748, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x14, 0x00, 0xEB, 0x80, 0x14, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2749, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xDB, 0x00, 0xCB, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x3C, 0x00, 0xD3, 0x00, 0xDB, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x274A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x00, 0x00, 0xEB, 0x80, 0x00, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x274B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x274D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x43, 0x00, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x81, 0x80, 0x43, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x274F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x82, 0x00, 0x83, 0x80, 0x83, 0x80, 0x83, 0x80, 0x83, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2750, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0xFF, 0x80, 0x83, 0x80, 0x83, 0x80, 0x83, 0x80, 0x83, 0x80, 0x82, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2751, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2752, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2756, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x41, 0x00, 0xE3, 0x80, 0x41, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2758, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2759, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x275A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x275B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x275C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x275D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x84, 0x00, 0xE7, 0x00, 0xF7, 0x80, 0xF7, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x275E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0xF7, 0x80, 0xF7, 0x80, 0x73, 0x80, 0x10, 0x80, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2761, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3F, 0x00, 0x72, 0x00, 0x72, 0x00, 0x72, 0x00, 0x3E, 0x00, 0x02, 0x00, 0x32, 0x00, 0x34, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2762, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2763, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2764, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0xF7, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2765, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2766, { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x74, 0x80, 0x95, 0x00, 0x0E, 0x00, 0x04, 0x00, 0x6B, 0x00, 0xF7, 0x80, 0xFF, 0x80, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2767, { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x29, 0x00, 0x52, 0x00, 0x9C, 0x00, 0x20, 0x00, 0x58, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0xFE, 0x00, 0xFE, 0x80, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2776, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xF7, 0x80, 0xE7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2777, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE3, 0x80, 0xDD, 0x80, 0xFD, 0x80, 0xFB, 0x80, 0xF7, 0x80, 0xED, 0x80, 0xC1, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2778, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE3, 0x80, 0xDD, 0x80, 0xFD, 0x80, 0xF3, 0x80, 0xFD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2779, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xF3, 0x80, 0xEB, 0x80, 0xDB, 0x80, 0xC1, 0x80, 0xFB, 0x80, 0xFB, 0x80, 0xFB, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x277A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xC1, 0x80, 0xDF, 0x80, 0xDF, 0x80, 0xC3, 0x80, 0xFD, 0x80, 0xFD, 0x80, 0xC3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x277B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE1, 0x80, 0xDF, 0x80, 0xDF, 0x80, 0xC3, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x277C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xC1, 0x80, 0xFD, 0x80, 0xFB, 0x80, 0xFB, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x277D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE3, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x277E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE1, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE1, 0x80, 0xFD, 0x80, 0xFD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x277F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xDB, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xDB, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2780, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x88, 0x80, 0x98, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2781, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x98, 0x80, 0x84, 0x80, 0x84, 0x80, 0x88, 0x80, 0x9C, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2782, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x98, 0x80, 0x84, 0x80, 0x88, 0x80, 0x84, 0x80, 0x98, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2783, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x88, 0x80, 0x98, 0x80, 0xA8, 0x80, 0xBC, 0x80, 0x88, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2784, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x9C, 0x80, 0x90, 0x80, 0x98, 0x80, 0x84, 0x80, 0x98, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2785, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x8C, 0x80, 0x90, 0x80, 0x98, 0x80, 0x94, 0x80, 0x88, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2786, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x9C, 0x80, 0x84, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2787, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x88, 0x80, 0x94, 0x80, 0x88, 0x80, 0x94, 0x80, 0x88, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2788, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x88, 0x80, 0x94, 0x80, 0x8C, 0x80, 0x84, 0x80, 0x88, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2789, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x80, 0xA4, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xA4, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x278A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xF7, 0x80, 0xE7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x278B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE3, 0x80, 0xDD, 0x80, 0xFD, 0x80, 0xFB, 0x80, 0xF7, 0x80, 0xEF, 0x80, 0xC1, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x278C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE3, 0x80, 0xDD, 0x80, 0xFD, 0x80, 0xF3, 0x80, 0xFD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x278D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xF3, 0x80, 0xEB, 0x80, 0xDB, 0x80, 0xC1, 0x80, 0xFB, 0x80, 0xFB, 0x80, 0xFB, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x278E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xC1, 0x80, 0xDF, 0x80, 0xDF, 0x80, 0xC3, 0x80, 0xFD, 0x80, 0xFD, 0x80, 0xC3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x278F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE1, 0x80, 0xDF, 0x80, 0xDF, 0x80, 0xC3, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2790, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xC1, 0x80, 0xFD, 0x80, 0xFB, 0x80, 0xFB, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0xF7, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2791, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE3, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2792, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xE1, 0x80, 0xDD, 0x80, 0xDD, 0x80, 0xE1, 0x80, 0xFD, 0x80, 0xFD, 0x80, 0xE3, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2793, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xDB, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xD5, 0x80, 0xDB, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2794, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2798, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7D, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2799, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x73, 0x00, 0x7F, 0x80, 0x73, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x279A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7D, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x279B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x1F, 0x00, 0xFF, 0x80, 0x1F, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x279C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x279D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0x80, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x279E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x279F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xB7, 0x00, 0xB7, 0x80, 0xB7, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xAB, 0x00, 0xAB, 0x80, 0xAB, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x70, 0x00, 0x4E, 0x00, 0x21, 0x80, 0x1F, 0x80, 0x3E, 0x00, 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x21, 0x80, 0x4E, 0x00, 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x1F, 0x80, 0x3E, 0x00, 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x86, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x00, 0x86, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x16, 0x00, 0xF3, 0x00, 0x81, 0x80, 0xF3, 0x00, 0x16, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x1A, 0x00, 0xF9, 0x00, 0xC0, 0x80, 0xF9, 0x00, 0x1A, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x3E, 0x80, 0x40, 0x80, 0x81, 0x80, 0xF3, 0x00, 0xEE, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3C, 0x00, 0xEE, 0x00, 0xF3, 0x00, 0x81, 0x80, 0x40, 0x80, 0x3E, 0x80, 0x01, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x14, 0x00, 0xF2, 0x00, 0x81, 0x00, 0xF3, 0x00, 0x76, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x76, 0x00, 0xF3, 0x00, 0x81, 0x00, 0xF2, 0x00, 0x14, 0x00, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xFA, 0x00, 0x81, 0x00, 0x40, 0x80, 0x81, 0x80, 0xFB, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xFB, 0x00, 0x81, 0x80, 0x40, 0x80, 0x81, 0x00, 0xFA, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x7F, 0x00, 0xFB, 0x80, 0x01, 0x80, 0x00, 0x80, 0x01, 0x80, 0xFB, 0x80, 0x7F, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x2B, 0x00, 0x7F, 0x80, 0x2B, 0x00, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x38, 0x00, 0x5C, 0x00, 0xEC, 0x00, 0x74, 0x00, 0x3C, 0x00, 0x02, 0x80, 0x01, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x7B, 0x00, 0x07, 0x80, 0x7B, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0x80, 0x02, 0x80, 0x3C, 0x00, 0x74, 0x00, 0xEC, 0x00, 0x5C, 0x00, 0x38, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x02, 0x80, 0x01, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x7B, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0x80, 0x02, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x71, 0x00, 0xFF, 0x80, 0x71, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x73, 0x00, 0x79, 0x00, 0xFF, 0x80, 0x79, 0x00, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x7B, 0x00, 0x3F, 0x80, 0x7B, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0x00, 0xF2, 0x00, 0x7B, 0x00, 0x3F, 0x80, 0x7B, 0x00, 0xF2, 0x00, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x0A, 0x00, 0xFD, 0x00, 0x00, 0x80, 0xFD, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x80, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x80, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x48, 0x00, 0x48, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x14, 0x00, 0x36, 0x00, 0x55, 0x00, 0xD5, 0x80, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0xD5, 0x80, 0x55, 0x00, 0x36, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0xA9, 0x00, 0x71, 0x00, 0x21, 0x00, 0x01, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x44, 0x00, 0x95, 0x00, 0x8E, 0x00, 0x84, 0x00, 0x80, 0x00, 0x44, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x00, 0xA9, 0x00, 0xFF, 0x80, 0xA9, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x00, 0xFF, 0x80, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x41, 0x00, 0xFF, 0x80, 0x41, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x7F, 0x80, 0x80, 0x00, 0x7F, 0x80, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x80, 0x80, 0x7F, 0x00, 0x22, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x40, 0x80, 0xFF, 0x80, 0x40, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x81, 0x00, 0xFF, 0x80, 0x81, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x20, 0x80, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x80, 0x20, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x82, 0x00, 0xFF, 0x00, 0x80, 0x80, 0xFF, 0x00, 0x82, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x27FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x55, 0x80, 0xAA, 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2800, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2801, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2802, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2803, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2804, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2805, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2806, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2807, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2808, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2809, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x280F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2810, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2811, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2812, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2813, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2814, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2815, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2816, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2817, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2818, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2819, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x281F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2820, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2821, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2822, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2823, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2824, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2825, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2826, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2827, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2828, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2829, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x282A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x282B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x282C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x282D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x282E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x282F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2830, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2831, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2832, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2833, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2834, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2835, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2836, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2837, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2838, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2839, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x283A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x283B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x283C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x283D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x283E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x283F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2840, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2841, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2842, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2843, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2844, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2845, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2846, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2847, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2848, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2849, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x284A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x284B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x284C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x284D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x284E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x284F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2850, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2851, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2852, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2853, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2854, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2855, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2856, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2857, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2858, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2859, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x285A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x285B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x285C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x285D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x285E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x285F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2860, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2861, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2862, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2863, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2864, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2865, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2866, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2867, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2868, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2869, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x286A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x286B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x286C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x286D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x286E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x286F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2870, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2871, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2872, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2873, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2874, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2875, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2876, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2877, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2878, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2879, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x287A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x287B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x287C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x287D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x287E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x287F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2880, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2881, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2882, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2883, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2884, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2885, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2886, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2887, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2888, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2889, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x288A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x288B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x288C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x288D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x288E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x288F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2890, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2891, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2892, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2893, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2894, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2895, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2896, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2897, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2898, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2899, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x289A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x289B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x289C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x289D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x289E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x289F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28A9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28AA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28AB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28AC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28AD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28AE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28AF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28B9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28BA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28BB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28BC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28BD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28BE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28BF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28C9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28CA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28CB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28CC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28CD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28CE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28CF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28D9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28DA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28DB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28DC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28DD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28DE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28DF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28E9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28EA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28EB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28EC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28ED, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28EE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28EF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F0, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F1, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F2, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F3, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F4, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F5, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F6, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F7, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F8, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28F9, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28FA, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28FB, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28FC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28FD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28FE, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x28FF, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x88, 0x80, 0x9C, 0x80, 0x88, 0x80, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x2A, 0x00, 0x49, 0x00, 0x49, 0x00, 0x88, 0x80, 0xFF, 0x80, 0x88, 0x80, 0x49, 0x00, 0x49, 0x00, 0x2A, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x22, 0x00, 0x63, 0x00, 0x55, 0x00, 0x94, 0x80, 0x88, 0x80, 0x94, 0x80, 0x55, 0x00, 0x63, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x5D, 0x00, 0x49, 0x00, 0x41, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x49, 0x00, 0x7F, 0x00, 0x49, 0x00, 0x49, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A07, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A08, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x80, 0xA2, 0x80, 0xA2, 0x80, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A09, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x08, 0x00, 0x08, 0x00, 0x14, 0x00, 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x63, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x63, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x2A3F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0x303F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x63, 0x00, 0x55, 0x00, 0x55, 0x00, 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x63, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB00, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x7E, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB01, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB02, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x7E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB03, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x49, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0xFF, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB04, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0xFF, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB05, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x6F, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x80, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB06, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x28, 0x00, 0x6E, 0x00, 0x88, 0x00, 0x88, 0x00, 0x68, 0x00, 0x18, 0x00, 0x19, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB13, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x50, 0x00, 0x30, 0x00, 0x5D, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB14, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x17, 0x00, 0x14, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB15, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x56, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x35, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0xFB16, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x3C, 0x00, 0x14, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x33, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x00, 0x00, }}, +{ 0xFB17, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x28, 0x00, 0x28, 0x00, 0xAC, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0xAA, 0x80, 0x69, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, }}, +{ 0xFB1D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB1E, { 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB1F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x66, 0x00, 0x33, 0x00, 0x11, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB20, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xE7, 0x00, 0x73, 0x00, 0x41, 0x00, 0x21, 0x00, 0x11, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB21, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB22, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB23, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB24, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB25, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB26, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB27, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB28, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x21, 0x00, 0x41, 0x00, 0x41, 0x00, 0x61, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB29, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB2A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0xDB, 0x00, 0x49, 0x00, 0x89, 0x00, 0x91, 0x00, 0xA2, 0x00, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB2B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x92, 0x00, 0xDB, 0x00, 0x49, 0x00, 0x89, 0x00, 0x91, 0x00, 0xA2, 0x00, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB2C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0xDB, 0x00, 0x49, 0x00, 0x89, 0x00, 0x95, 0x00, 0xA2, 0x00, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB2D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x92, 0x00, 0xDB, 0x00, 0x49, 0x00, 0x89, 0x00, 0x95, 0x00, 0xA2, 0x00, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB2E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB2F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x08, 0x00, 0x08, 0x00, }}, +{ 0xFB30, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB31, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x02, 0x00, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB32, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x34, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB33, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x1A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB34, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x5A, 0x00, 0x42, 0x00, 0x42, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB35, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x34, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB36, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x08, 0x00, 0x68, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB38, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE3, 0x00, 0x77, 0x00, 0x45, 0x00, 0x59, 0x00, 0x41, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB39, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB3A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x02, 0x00, 0x34, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0xFB3B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB3C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x01, 0x00, 0x19, 0x00, 0x02, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB3E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xDE, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x99, 0x00, 0x81, 0x00, 0x9F, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB40, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x34, 0x00, 0x04, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB41, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x59, 0x00, 0x41, 0x00, 0x7E, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB43, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x82, 0x00, 0xD4, 0x00, 0xD4, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, }}, +{ 0xFB44, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x6D, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB46, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0xE7, 0x00, 0x63, 0x00, 0x24, 0x00, 0x98, 0x00, 0x06, 0x00, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB47, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x26, 0x00, 0x28, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, }}, +{ 0xFB48, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x19, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB49, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0xDB, 0x00, 0x49, 0x00, 0x89, 0x00, 0x95, 0x00, 0xA2, 0x00, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB4A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x21, 0x00, 0x4D, 0x00, 0x41, 0x00, 0x61, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB4B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB4C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB4D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB4E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x41, 0x00, 0x61, 0x00, 0x01, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFB4F, { 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x80, 0x00, 0x84, 0x00, 0xC7, 0x00, 0x63, 0x00, 0x32, 0x00, 0xDA, 0x00, 0x8E, 0x00, 0x46, 0x00, 0x63, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFE20, { 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFE21, { 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFE22, { 0x0F, 0x00, 0x30, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFE23, { 0x01, 0x00, 0x86, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, + +#ifdef WANT_INTERNAL_CJK +{ 0xFF61, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x50, 0x00, 0x50, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF62, { 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF63, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF64, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF65, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF66, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF67, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x16, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF68, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x18, 0x00, 0x68, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF69, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF6A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF6B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x18, 0x00, 0x28, 0x00, 0x28, 0x00, 0x48, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF6C, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x00, 0x16, 0x00, 0x1A, 0x00, 0x32, 0x00, 0x48, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF6D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF6E, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF6F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x52, 0x00, 0x4A, 0x00, 0x22, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF70, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF71, { 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF72, { 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x18, 0x00, 0x28, 0x00, 0xC8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF73, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF74, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF75, { 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x00, 0x08, 0x00, 0x18, 0x00, 0x18, 0x00, 0x28, 0x00, 0x28, 0x00, 0x48, 0x00, 0x48, 0x00, 0x88, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF76, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x42, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF77, { 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x16, 0x00, 0x18, 0x00, 0x30, 0x00, 0xD0, 0x00, 0x13, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x68, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF78, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x22, 0x00, 0x22, 0x00, 0x44, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF79, { 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3F, 0x00, 0x44, 0x00, 0x44, 0x00, 0x84, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF7A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF7B, { 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0xFF, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF7C, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x61, 0x00, 0x22, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF7D, { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18, 0x00, 0x14, 0x00, 0x24, 0x00, 0x22, 0x00, 0x42, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF7E, { 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x2E, 0x00, 0x32, 0x00, 0xE2, 0x00, 0x24, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF7F, { 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF80, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x22, 0x00, 0x32, 0x00, 0x4A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF81, { 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF82, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xA1, 0x00, 0x91, 0x00, 0x51, 0x00, 0x52, 0x00, 0x42, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF83, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF84, { 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0x00, 0x14, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF85, { 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xFF, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF86, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF87, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x24, 0x00, 0x28, 0x00, 0x18, 0x00, 0x08, 0x00, 0x14, 0x00, 0x12, 0x00, 0x22, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF88, { 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x18, 0x00, 0x34, 0x00, 0x52, 0x00, 0x91, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF89, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF8A, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF8B, { 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x46, 0x00, 0x48, 0x00, 0x70, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF8C, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF8D, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x00, 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x44, 0x00, 0x84, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF8E, { 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0x00, 0x10, 0x00, 0x10, 0x00, 0x54, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x91, 0x00, 0x91, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF8F, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x28, 0x00, 0x10, 0x00, 0x18, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF90, { 0x00, 0x00, 0x20, 0x00, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF91, { 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x4E, 0x00, 0x72, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF92, { 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x24, 0x00, 0x24, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x22, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF93, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFE, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF94, { 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x23, 0x00, 0x2D, 0x00, 0x31, 0x00, 0xD2, 0x00, 0x12, 0x00, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF95, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF96, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF97, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF98, { 0x00, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF99, { 0x00, 0x00, 0x08, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x4A, 0x00, 0x4C, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF9A, { 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x28, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF9B, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF9C, { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF9D, { 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF9E, { 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFF9F, { 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +#endif + +{ 0xFFFC, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x51, 0x00, 0x50, 0x00, 0x39, 0x00, 0x15, 0x00, 0x58, 0x00, 0x57, 0x00, 0x19, 0x00, 0x41, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, +{ 0xFFFD, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x63, 0x00, 0x5D, 0x00, 0x7D, 0x00, 0x7B, 0x00, 0x77, 0x00, 0x77, 0x00, 0x7F, 0x00, 0x77, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }}, diff --git a/libmednahawk/src/video/png.cpp b/libmednahawk/src/video/png.cpp new file mode 100644 index 0000000000..16fdcda0c9 --- /dev/null +++ b/libmednahawk/src/video/png.cpp @@ -0,0 +1,189 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "video-common.h" + +#include +#include "png.h" +#include "../endian.h" + +void PNGWrite::WriteChunk(FileWrapper &pngfile, uint32 size, const char *type, const uint8 *data) +{ + uint32 crc; + uint8 tempo[4]; + + MDFN_en32msb(tempo, size); + + pngfile.write(tempo, 4); + pngfile.write(type, 4); + + if(size) + pngfile.write(data, size); + + crc = crc32(0, (uint8 *)type, 4); + if(size) + crc = crc32(crc,data,size); + + MDFN_en32msb(tempo, crc); + + pngfile.write(tempo, 4); +} + +// int MDFN_SavePNGSnapshot(const char *fname, const MDFN_Surface *src, const MDFN_Rect *rect, const MDFN_Rect *LineWidths) + +PNGWrite::~PNGWrite() +{ + +} + +PNGWrite::PNGWrite(const char *path, const MDFN_Surface *src, const MDFN_Rect &rect, const MDFN_Rect *LineWidths) : ownfile(path, FileWrapper::MODE_WRITE_SAFE) +{ + WriteIt(ownfile, src, rect, LineWidths); +} + +#if 0 +PNGWrite::PNGWrite(FileWrapper &pngfile, const MDFN_Surface *src, const MDFN_Rect &rect, const MDFN_Rect *LineWidths) +{ + WriteIt(pngfile, src, rect, LineWidths); +} +#endif + +void PNGWrite::WriteIt(FileWrapper &pngfile, const MDFN_Surface *src, const MDFN_Rect &rect, const MDFN_Rect *LineWidths) + +{ + uLongf compmemsize; + int png_width; + + if(LineWidths[0].w != ~0) + { + png_width = 0; + + for(int y = 0; y < rect.h; y++) + { + if(LineWidths[rect.y + y].w > png_width) + png_width = LineWidths[rect.y + y].w; + } + } + else + png_width = rect.w; + + if(!rect.h) + throw(MDFN_Error(0, "Refusing to save a zero-height PNG.")); + + if(!png_width) + throw(MDFN_Error(0, "Refusing to save a zero-width PNG.")); + + compmemsize = (uLongf)( (rect.h * (png_width + 1) * 3 * 1.001 + 1) + 12 ); + + compmem.resize(compmemsize); + + { + static uint8 header[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; + pngfile.write(header, 8); + } + + { + uint8 chunko[13]; + + MDFN_en32msb(&chunko[0], png_width); // Width + + MDFN_en32msb(&chunko[4], rect.h); // Height + + chunko[8]=8; // 8 bits per sample(24 bits per pixel) + chunko[9]=2; // Color type; RGB triplet + chunko[10]=0; // compression: deflate + chunko[11]=0; // Basic adapative filter set(though none are used). + chunko[12]=0; // No interlace. + + WriteChunk(pngfile, 13, "IHDR", chunko); + } + + // pHYs chunk + #if 0 + { + uint8 chunko[9]; + uint32 ppx, ppy; + + //ppx = png_width / MDFNGameInfo->nominal_width; + //ppy = 1; //rect->h / rect->h + + ppx = png_width; + ppy = MDFNGameInfo->nominal_width; + + MDFN_en32msb(&chunko[0], ppx); + MDFN_en32msb(&chunko[4], ppy); + + //printf("%08x %08x, %04x %04x\n", ppx, ppy, *(uint32 *)&chunko[0], *(uint32 *)&chunko[4]); + + chunko[8] = 0; + + WriteChunk(pngfile, 9, "pHYs", chunko); + } + #endif + + { + uint8 *tmp_inc; + + tmp_buffer.resize((png_width * 3 + 1) * rect.h); + + tmp_inc = &tmp_buffer[0]; + + for(int y = 0; y < rect.h; y++) + { + *tmp_inc = 0; + tmp_inc++; + int line_width = rect.w; + int x_base = rect.x; + + if(LineWidths[0].w != ~0) + { + line_width = LineWidths[y + rect.y].w; + x_base = LineWidths[y + rect.y].x; + } + + for(int x = 0; x < line_width; x++) + { + int r, g, b; + + if(src->format.bpp == 16) + src->DecodeColor(src->pixels16[(y + rect.y) * src->pitchinpix + (x + x_base)], r, g, b); + else + src->DecodeColor(src->pixels[(y + rect.y) * src->pitchinpix + (x + x_base)], r, g, b); + + tmp_inc[0] = r; + tmp_inc[1] = g; + tmp_inc[2] = b; + tmp_inc += 3; + } + + for(int x = line_width; x < png_width; x++) + { + tmp_inc[0] = tmp_inc[1] = tmp_inc[2] = 0; + tmp_inc += 3; + } + } + + if(compress(&compmem[0], &compmemsize, &tmp_buffer[0], rect.h * (png_width * 3 + 1)) != Z_OK) + { + throw(MDFN_Error(0, "zlib error")); // TODO: verbosify + } + + WriteChunk(pngfile, compmemsize, "IDAT", &compmem[0]); + } + + WriteChunk(pngfile, 0, "IEND", 0); +} diff --git a/libmednahawk/src/video/png.h b/libmednahawk/src/video/png.h new file mode 100644 index 0000000000..1879ce21e4 --- /dev/null +++ b/libmednahawk/src/video/png.h @@ -0,0 +1,31 @@ +#ifndef __MDFN_PNG_H +#define __MDFN_PNG_H + +#include "../video.h" +#include "../FileWrapper.h" + +class PNGWrite +{ + public: + + PNGWrite(const char *path, const MDFN_Surface *src, const MDFN_Rect &rect, const MDFN_Rect *LineWidths); + #if 0 + PNGWrite(FileWrapper &pngfile, const MDFN_Surface *src, const MDFN_Rect &rect, const MDFN_Rect *LineWidths); + #endif + + ~PNGWrite(); + + + static void WriteChunk(FileWrapper &pngfile, uint32 size, const char *type, const uint8 *data); + + private: + + void WriteIt(FileWrapper &pngfile, const MDFN_Surface *src, const MDFN_Rect &rect, const MDFN_Rect *LineWidths); + + FileWrapper ownfile; + std::vector compmem; + std::vector tmp_buffer; +}; + +#endif + diff --git a/libmednahawk/src/video/primitives.cpp b/libmednahawk/src/video/primitives.cpp new file mode 100644 index 0000000000..082d37da62 --- /dev/null +++ b/libmednahawk/src/video/primitives.cpp @@ -0,0 +1,79 @@ +#include "video-common.h" + +void MDFN_DrawRectangle(uint32 *XBuf, int pitch, int xpos, int ypos, uint32 color, uint32 width, uint32 height) +{ + uint32 x; + uint32 y; + + XBuf += pitch * ypos + xpos; + /* Draw top and bottom horiz */ + for(x=0;x + +#define INT(x) ((int)(x)) +#define FRACT(x) ((x) - floorf(x)) //zero 07-feb-2012 - changed to floorf + +#define READ_PIXEL(src_x, src_y, components) \ +{ \ + double source_components[2][2][4]; \ + \ + for(unsigned int xc = 0; xc < 2; xc++) \ + { \ + for(unsigned int yc = 0; yc < 2; yc++) \ + { \ + uint32 tmp; \ + uint32 eff_x = (int)(src_x) + xc, eff_y = (int)(src_y) + yc; \ + if(eff_x >= x_ip_limit) eff_x = x_ip_limit - 1; \ + if(eff_y >= y_ip_limit) eff_y = y_ip_limit - 1; \ + tmp = pixels[eff_x + eff_y * src->pitch32]; \ + source_components[xc][yc][0] = (tmp >> 0) & 0xFF; \ + source_components[xc][yc][1] = (tmp >> 8) & 0xFF; \ + source_components[xc][yc][2] = (tmp >> 16) & 0xFF; \ + source_components[xc][yc][3] = (tmp >> 24) & 0xFF; \ + } \ + } \ + \ + for(unsigned int i = 0; i < 4; i++) \ + { \ + components[i] += (1.0 - FRACT(src_y)) * (source_components[0][0][i] * (1.0 - FRACT(src_x)) + (source_components[1][0][i] * FRACT(src_x))); \ + components[i] += FRACT(src_y) * (source_components[0][1][i] * (1.0 - FRACT(src_x)) + (source_components[1][1][i] * FRACT(src_x))); \ + } \ +} + +bool MDFN_ResizeSurface(const MDFN_Surface *src, const MDFN_Rect *src_rect, const MDFN_Rect *LineWidths, MDFN_Surface *dest, const MDFN_Rect *dest_rect) +{ + double src_x_inc, src_y_inc; + double src_x, src_y; + uint32 *pixels = src->pixels; + uint32 x_ip_limit, y_ip_limit; + + //printf("%ld, %d %d, %d %d\n", (long)pixels, src_rect->w, dest_rect->w, src_rect->h, dest_rect->h); + + src_x_inc = (double)src_rect->w / dest_rect->w; + src_y_inc = (double)src_rect->h / dest_rect->h; + + x_ip_limit = src_rect->x + src_rect->w; + y_ip_limit = src_rect->y + src_rect->h; + + src_y = src_rect->y; + + for(int32 y = 0; y < dest_rect->h; y++) + { + uint32 *dest_pix = dest->pixels + dest_rect->x + (dest_rect->y + y) * dest->pitch32; + bool ZeroDimensionSource = false; + + if(src_rect->h == 0) + { + ZeroDimensionSource = true; + } + else + { + if(LineWidths) + { + src_x = LineWidths[INT(src_y)].x; + src_x_inc = (double)LineWidths[INT(src_y)].w / dest_rect->w; + x_ip_limit = LineWidths[INT(src_y)].x + LineWidths[INT(src_y)].w; + + if(LineWidths[INT(src_y)].w == 0) + ZeroDimensionSource = true; + } + else + { + src_x = src_rect->x; + + if(src_rect->w == 0) + ZeroDimensionSource = true; + } + } + + if(ZeroDimensionSource) + { + puts("All Hail Lelouch!"); + + for(int32 x = 0; x < dest_rect->w; x++) + dest_pix[x] = 0; + } + else for(int32 x = 0; x < dest_rect->w; x++) + { + double components[4] = {0, 0, 0, 0}; + double div_fib = 1; + + //printf("%d %d, %d %d\n", (int)src_x, (int)src_y, x_ip_limit, y_ip_limit); + + READ_PIXEL(src_x, src_y, components); + + if(INT(src_x_inc) > 1) + { + for(double subx = 1; subx < (INT(src_x_inc) - 1); subx++) + { + READ_PIXEL(INT(src_x) + subx, INT(src_y), components); + div_fib++; + } + + READ_PIXEL(src_x + src_x_inc - 1, src_y, components); + div_fib++; + } + + if(INT(src_y_inc) > 1) + { + for(double suby = 1; suby < (INT(src_y_inc) - 1); suby++) + { + READ_PIXEL(INT(src_x), INT(src_y) + suby, components); + div_fib++; + } + + READ_PIXEL(src_x, src_y + src_y_inc - 1, components); + div_fib++; + } + + for(unsigned int i = 0; i < 4; i++) + { + components[i] /= div_fib; + if(components[i] < 0) components[i] = 0; + if(components[i] > 255) components[i] = 255; + } + + dest_pix[x] = ((int)components[0] << 0) | ((int)components[1] << 8) | ((int)components[2] << 16) | ((int)components[3] << 24); + src_x += src_x_inc; + } + src_y += src_y_inc; + } + + + return(TRUE); +} diff --git a/libmednahawk/src/video/resize.h b/libmednahawk/src/video/resize.h new file mode 100644 index 0000000000..0a2a1b8a00 --- /dev/null +++ b/libmednahawk/src/video/resize.h @@ -0,0 +1,2 @@ +bool MDFN_ResizeSurface(const MDFN_Surface *src, const MDFN_Rect *src_rect, const MDFN_Rect *LineWidths, MDFN_Surface *dest, const MDFN_Rect *dest_rect); + diff --git a/libmednahawk/src/video/selblur.cpp b/libmednahawk/src/video/selblur.cpp new file mode 100644 index 0000000000..42493d0947 --- /dev/null +++ b/libmednahawk/src/video/selblur.cpp @@ -0,0 +1,121 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "selblur.h" +#include + +#if 0 +static INLINE void GetSourcePixel(const SelBlurImage *spec, int32 x, int32 y, unsigned int &r, unsigned int &g, unsigned int &b) +{ + uint32 pixel = spec->source[x + y * spec->source_pitch32]; + r = (pixel >> spec->red_shift) & 0xFF; + g = (pixel >> spec->green_shift) & 0xFF; + b = (pixel >> spec->blue_shift) & 0xFF; +} + +static INLINE void SetDestPixel(const SelBlurImage *spec, int32 x, int32 y, const unsigned int r, const unsigned int g, const unsigned int b) +{ + spec->dest[x + y * spec->dest_pitch32] = (r << spec->red_shift) | (g << spec->green_shift) | (b << spec->blue_shift); +} +#endif + +#define GetSourcePixel(_x, _y, _r, _g, _b) { uint32 mypixel = source[_x + _y * source_pitch32]; _r = (mypixel >> red_shift) & 0xFF; \ + _g = (mypixel >> green_shift) & 0xFF; _b = (mypixel >> blue_shift) & 0xFF; } + +#define SetDestPixel(_x, _y, _r, _g, _b) dest[_x + _y * dest_pitch32] = (_r << red_shift) | (_g << green_shift) | (_b << blue_shift); + + +void MDFN_SelBlur(SelBlurImage *spec) +{ + unsigned int red_shift = spec->red_shift; + unsigned int green_shift = spec->green_shift; + unsigned int blue_shift = spec->blue_shift; + uint32 *dest = spec->dest; + uint32 *source = spec->source; + uint32 source_pitch32 = spec->source_pitch32; + uint32 dest_pitch32 = spec->dest_pitch32; + uint8 r_thresh[512]; + uint8 g_thresh[512]; + uint8 b_thresh[512]; + + for(int i = 0; i < 512; i++) + { + if((unsigned int)abs(i - 256) <= spec->red_threshold) + r_thresh[i] = 0; + else r_thresh[i] = 8; + + if((unsigned int)abs(i - 256) <= spec->green_threshold) + g_thresh[i] = 0; + else g_thresh[i] = 8; + + if((unsigned int)abs(i - 256) <= spec->blue_threshold) + b_thresh[i] = 0; + else b_thresh[i] = 8; + } + + for(int32 y = 0; y < spec->height; y++) + { + int32 y_min, y_max; + + y_min = y - spec->radius; + if(y_min < 0) y_min = 0; + y_max = y + spec->radius; + if(y_max >= spec->height) y_max = spec->height - 1; + + for(int32 x = 0; x < spec->width; x++) + { + unsigned int red, green, blue; + unsigned int red_blur, green_blur, blue_blur; + unsigned int blurdiv = 0; + + GetSourcePixel(x, y, red, green, blue); + + red_blur = green_blur = blue_blur = 0; + + for(int32 y_sub = y_min; y_sub <= y_max; y_sub++) + { + int32 x_magic, x_min, x_max; + + x_magic = spec->radius - abs(y - y_sub); + + x_min = x - x_magic; + x_max = x + x_magic; + + if(x_max >= spec->width) x_max = spec->width - 1; + if(x_min < 0) x_min = 0; + + for(int32 x_sub = x_min; x_sub <= x_max; x_sub++) + { + unsigned int red_other, green_other, blue_other; + unsigned int smashing; + + GetSourcePixel(x_sub, y_sub, red_other, green_other, blue_other); + + smashing = r_thresh[256 + red_other - red] | g_thresh[256 + green_other - green] | b_thresh[256 + blue_other - blue]; + + red_blur += red_other >> smashing; + green_blur += green_other >> smashing; + blue_blur += blue_other >> smashing; + blurdiv += 1 >> smashing; + } + } + SetDestPixel(x, y, red_blur / blurdiv , green_blur / blurdiv, blue_blur / blurdiv); + } + } + +} diff --git a/libmednahawk/src/video/selblur.h b/libmednahawk/src/video/selblur.h new file mode 100644 index 0000000000..f59254753f --- /dev/null +++ b/libmednahawk/src/video/selblur.h @@ -0,0 +1,29 @@ +#ifndef __MDFN_SELBLUR_H +#define __MDFN_SELBLUR_H + +#include "../video.h" + +typedef struct +{ + unsigned int red_threshold; // 0 - 255 + unsigned int green_threshold; + unsigned int blue_threshold; + int32 radius; + + uint32 *source; + uint32 source_pitch32; + uint32 *dest; + uint32 dest_pitch32; + + int32 width; + int32 height; + + uint32 red_shift; + uint32 green_shift; + uint32 blue_shift; + +} SelBlurImage; + +void MDFN_SelBlur(SelBlurImage *spec); + +#endif diff --git a/libmednahawk/src/video/surface.cpp b/libmednahawk/src/video/surface.cpp new file mode 100644 index 0000000000..f65a93e6a8 --- /dev/null +++ b/libmednahawk/src/video/surface.cpp @@ -0,0 +1,285 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include "surface.h" + +MDFN_PixelFormat::MDFN_PixelFormat() +{ + bpp = 0; + colorspace = 0; + + Rshift = 0; + Gshift = 0; + Bshift = 0; + Ashift = 0; + + Rprec = 0; + Gprec = 0; + Bprec = 0; + Aprec = 0; +} + +MDFN_PixelFormat::MDFN_PixelFormat(const unsigned int p_colorspace, const uint8 p_rs, const uint8 p_gs, const uint8 p_bs, const uint8 p_as) +{ + bpp = 32; + colorspace = p_colorspace; + + Rshift = p_rs; + Gshift = p_gs; + Bshift = p_bs; + Ashift = p_as; + + Rprec = 8; + Gprec = 8; + Bprec = 8; + Aprec = 8; +} + +MDFN_Surface::MDFN_Surface() +{ + memset(&format, 0, sizeof(format)); + + pixels = NULL; + pixels16 = NULL; + pixels_is_external = false; + pitchinpix = 0; + w = 0; + h = 0; +} + +MDFN_Surface::MDFN_Surface(void *const p_pixels, const uint32 p_width, const uint32 p_height, const uint32 p_pitchinpix, const MDFN_PixelFormat &nf) +{ + Init(p_pixels, p_width, p_height, p_pitchinpix, nf); +} + +void MDFN_Surface::Init(void *const p_pixels, const uint32 p_width, const uint32 p_height, const uint32 p_pitchinpix, const MDFN_PixelFormat &nf) +{ + void *rpix = NULL; + assert(nf.bpp == 16 || nf.bpp == 32); + + format = nf; + + if(nf.bpp == 16) + { + assert(nf.Rprec && nf.Gprec && nf.Bprec && nf.Aprec); + } + else + { + assert((nf.Rshift + nf.Gshift + nf.Bshift + nf.Ashift) == 48); + assert(!((nf.Rshift | nf.Gshift | nf.Bshift | nf.Ashift) & 0x7)); + + format.Rprec = 8; + format.Gprec = 8; + format.Bprec = 8; + format.Aprec = 8; + } + + pixels16 = NULL; + pixels = NULL; + + pixels_is_external = false; + + if(p_pixels) + { + rpix = p_pixels; + pixels_is_external = true; + } + else + { + if(!(rpix = calloc(1, p_pitchinpix * p_height * (nf.bpp / 8)))) + throw(1); + } + + if(nf.bpp == 16) + pixels16 = (uint16 *)rpix; + else + pixels = (uint32 *)rpix; + + w = p_width; + h = p_height; + + pitchinpix = p_pitchinpix; +} + +// When we're converting, only convert the w*h area(AKA leave the last part of the line, pitch32 - w, alone), +// for places where we store auxillary information there(graphics viewer in the debugger), and it'll be faster +// to boot. +void MDFN_Surface::SetFormat(const MDFN_PixelFormat &nf, bool convert) +{ + assert(format.bpp == 16 || format.bpp == 32); + assert(nf.bpp == 16 || nf.bpp == 32); + + if(nf.bpp == 16) + { + + } + else + { + assert((nf.Rshift + nf.Gshift + nf.Bshift + nf.Ashift) == 48); + assert(!((nf.Rshift | nf.Gshift | nf.Bshift | nf.Ashift) & 0x7)); + } + + if(nf.bpp != format.bpp) + { + void *rpix = calloc(1, pitchinpix * h * (nf.bpp / 8)); + void *oldpix; + + if(nf.bpp == 16) // 32bpp to 16bpp + { + pixels16 = (uint16 *)rpix; + + if(convert) + { + puts("32bpp to 16bpp convert"); + for(int y = 0; y < h; y++) + { + uint32 *srow = &pixels[y * pitchinpix]; + uint16 *drow = &pixels16[y * pitchinpix]; + + for(int x = 0; x < w; x++) + { + uint32 c = srow[x]; + int r, g, b, a; + + DecodeColor(c, r, g, b, a); + drow[x] = nf.MakeColor(r, g, b, a); + } + } + } + + oldpix = pixels; + pixels = NULL; + } + else // 16bpp to 32bpp + { + pixels = (uint32 *)rpix; + + if(convert) + { + puts("16bpp to 32bpp convert"); + for(int y = 0; y < h; y++) + { + uint16 *srow = &pixels16[y * pitchinpix]; + uint32 *drow = &pixels[y * pitchinpix]; + + for(int x = 0; x < w; x++) + { + uint32 c = srow[x]; + int r, g, b, a; + + DecodeColor(c, r, g, b, a); + drow[x] = nf.MakeColor(r, g, b, a); + } + } + } + + oldpix = pixels16; + pixels16 = NULL; + } + if(oldpix && !pixels_is_external) + free(oldpix); + + pixels_is_external = false; + + // We already handled surface conversion above. + convert = false; + } + + if(convert) + { + if(format.bpp == 16) + { + // We should assert that surface->pixels is non-NULL even if we don't need to convert the surface, to catch more insidious bugs. + assert(pixels16); + + if(memcmp(&format, &nf, sizeof(MDFN_PixelFormat))) + { + //puts("Converting"); + for(int y = 0; y < h; y++) + { + uint16 *row = &pixels16[y * pitchinpix]; + + for(int x = 0; x < w; x++) + { + uint32 c = row[x]; + int r, g, b, a; + + DecodeColor(c, r, g, b, a); + row[x] = nf.MakeColor(r, g, b, a); + } + } + } + } + else + { + // We should assert that surface->pixels is non-NULL even if we don't need to convert the surface, to catch more insidious bugs. + assert(pixels); + + if(memcmp(&format, &nf, sizeof(MDFN_PixelFormat))) + { + //puts("Converting"); + for(int y = 0; y < h; y++) + { + uint32 *row = &pixels[y * pitchinpix]; + + for(int x = 0; x < w; x++) + { + uint32 c = row[x]; + int r, g, b, a; + + DecodeColor(c, r, g, b, a); + row[x] = nf.MakeColor(r, g, b, a); + } + } + } + } + } + format = nf; +} + +void MDFN_Surface::Fill(uint8 r, uint8 g, uint8 b, uint8 a) +{ + uint32 color = MakeColor(r, g, b, a); + + if(format.bpp == 16) + { + assert(pixels16); + + for(int32 i = 0; i < pitchinpix * h; i++) + pixels16[i] = color; + } + else + { + assert(pixels); + + for(int32 i = 0; i < pitchinpix * h; i++) + pixels[i] = color; + } +} + +MDFN_Surface::~MDFN_Surface() +{ + if(!pixels_is_external) + { + if(pixels) + free(pixels); + if(pixels16) + free(pixels16); + } +} + diff --git a/libmednahawk/src/video/surface.h b/libmednahawk/src/video/surface.h new file mode 100644 index 0000000000..6c94294f3b --- /dev/null +++ b/libmednahawk/src/video/surface.h @@ -0,0 +1,207 @@ +#ifndef __MDFN_SURFACE_H +#define __MDFN_SURFACE_H + +typedef struct +{ + int32 x, y, w, h; +} MDFN_Rect; + +enum +{ + MDFN_COLORSPACE_RGB = 0, + MDFN_COLORSPACE_YCbCr = 1, + //MDFN_COLORSPACE_YUV = 2, // TODO, maybe. +}; + +class MDFN_PixelFormat +{ + public: + + MDFN_PixelFormat(); + MDFN_PixelFormat(const unsigned int p_colorspace, const uint8 p_rs, const uint8 p_gs, const uint8 p_bs, const uint8 p_as); + + unsigned int bpp; // 32 only for now(16 wip) + unsigned int colorspace; + + union + { + uint8 Rshift; // Bit position of the lowest bit of the red component + uint8 Yshift; + }; + + union + { + uint8 Gshift; // [...] green component + uint8 Ushift; + uint8 Cbshift; + }; + + union + { + uint8 Bshift; // [...] blue component + uint8 Vshift; + uint8 Crshift; + }; + + uint8 Ashift; // [...] alpha component. + + // For 16bpp, WIP + uint8 Rprec; + uint8 Gprec; + uint8 Bprec; + uint8 Aprec; + + // Creates a color value for the surface corresponding to the 8-bit R/G/B/A color passed. + INLINE uint32 MakeColor(uint8 r, uint8 g, uint8 b, uint8 a = 0) const + { + if(colorspace == MDFN_COLORSPACE_YCbCr) + { + uint32 y, u, v; + + y = 16 + ((r * 16842 + g * 33030 + b * 6422) >> 16); + u = 128 + ((r * -9699 + g * -19071 + b * 28770) >> 16); + v = 128 + ((r * 28770 + g * -24117 + b * -4653) >> 16); + + return((y << Yshift) | (u << Ushift) | (v << Vshift) | (a << Ashift)); + } + else + { + if(bpp == 16) + { + uint32 ret = 0; +/* + ret |= std::min(((r * ((1 << Rprec) - 1) + 127) / 255), 255) << Rshift; + ret |= std::min(((g * ((1 << Gprec) - 1) + 127) / 255), 255) << Gshift; + ret |= std::min(((b * ((1 << Bprec) - 1) + 127) / 255), 255) << Bshift; + ret |= std::min(((a * ((1 << Aprec) - 1) + 127) / 255), 255) << Ashift; +*/ + ret |= ((r * ((1 << Rprec) - 1) + 127) / 255) << Rshift; + ret |= ((g * ((1 << Gprec) - 1) + 127) / 255) << Gshift; + ret |= ((b * ((1 << Bprec) - 1) + 127) / 255) << Bshift; + ret |= ((a * ((1 << Aprec) - 1) + 127) / 255) << Ashift; + return(ret); + } + else + return((r << Rshift) | (g << Gshift) | (b << Bshift) | (a << Ashift)); + } + } + + // Gets the R/G/B/A values for the passed 32-bit surface pixel value + INLINE void DecodeColor(uint32 value, int &r, int &g, int &b, int &a) const + { + if(colorspace == MDFN_COLORSPACE_YCbCr) + { + int32 y = (value >> Yshift) & 0xFF; + int32 cb = (value >> Cbshift) & 0xFF; + int32 cr = (value >> Crshift) & 0xFF; + + int32 r_tmp, g_tmp, b_tmp; + + r_tmp = g_tmp = b_tmp = 76284 * (y - 16); + + r_tmp = r_tmp + 104595 * (cr - 128); + g_tmp = g_tmp - 53281 * (cr - 128) - 25690 * (cb - 128); + b_tmp = b_tmp + 132186 * (cb - 128); + + r_tmp >>= 16; + g_tmp >>= 16; + b_tmp >>= 16; + + if(r_tmp < 0) r_tmp = 0; + if(r_tmp > 255) r_tmp = 255; + + if(g_tmp < 0) g_tmp = 0; + if(g_tmp > 255) g_tmp = 255; + + if(b_tmp < 0) b_tmp = 0; + if(b_tmp > 255) b_tmp = 255; + + r = r_tmp; + g = g_tmp; + b = b_tmp; + + a = (value >> Ashift) & 0xFF; + } + else + { + if(bpp == 16) + { + r = ((value >> Rshift) & ((1 << Rprec) - 1)) * 255 / ((1 << Rprec) - 1); + g = ((value >> Gshift) & ((1 << Gprec) - 1)) * 255 / ((1 << Gprec) - 1); + b = ((value >> Bshift) & ((1 << Bprec) - 1)) * 255 / ((1 << Bprec) - 1); + a = ((value >> Ashift) & ((1 << Aprec) - 1)) * 255 / ((1 << Aprec) - 1); + } + else + { + r = (value >> Rshift) & 0xFF; + g = (value >> Gshift) & 0xFF; + b = (value >> Bshift) & 0xFF; + a = (value >> Ashift) & 0xFF; + } + } + } + +}; // MDFN_PixelFormat; + +struct MDFN_PaletteEntry +{ + uint8 r, g, b; +}; + +#include +typedef std::vector MDFN_Palette; + +// Supports 32-bit RGBA +// 16-bit is WIP +class MDFN_Surface //typedef struct +{ + public: + + MDFN_Surface(); + MDFN_Surface(void *const p_pixels, const uint32 p_width, const uint32 p_height, const uint32 p_pitchinpix, const MDFN_PixelFormat &nf); + + ~MDFN_Surface(); + + uint16 *pixels16; + uint32 *pixels; + + bool pixels_is_external; + + // w, h, and pitch32 should always be > 0 + int32 w; + int32 h; + + union + { + int32 pitch32; // In pixels, not in bytes. + int32 pitchinpix; // New name, new code should use this. + }; + + MDFN_PixelFormat format; + + void Fill(uint8 r, uint8 g, uint8 b, uint8 a); + void SetFormat(const MDFN_PixelFormat &new_format, bool convert); + + // Creates a 32-bit value for the surface corresponding to the R/G/B/A color passed. + INLINE uint32 MakeColor(uint8 r, uint8 g, uint8 b, uint8 a = 0) const + { + return(format.MakeColor(r, g, b, a)); + } + + // Gets the R/G/B/A values for the passed 32-bit surface pixel value + INLINE void DecodeColor(uint32 value, int &r, int &g, int &b, int &a) const + { + format.DecodeColor(value, r, g, b, a); + } + + INLINE void DecodeColor(uint32 value, int &r, int &g, int &b) const + { + int dummy_a; + + DecodeColor(value, r, g, b, dummy_a); + } + private: + void Init(void *const p_pixels, const uint32 p_width, const uint32 p_height, const uint32 p_pitchinpix, const MDFN_PixelFormat &nf); +}; + +#endif diff --git a/libmednahawk/src/video/tblur.cpp b/libmednahawk/src/video/tblur.cpp new file mode 100644 index 0000000000..7d0a1e109d --- /dev/null +++ b/libmednahawk/src/video/tblur.cpp @@ -0,0 +1,167 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../mednafen.h" +#include "tblur.h" + +typedef struct +{ + uint16 a, b, c, d; +} HQPixelEntry; + +static uint32 *BlurBuf = NULL; +static uint32 AccumBlurAmount; // max of 16384, infinite blur! +static HQPixelEntry *AccumBlurBuf = NULL; + +void TBlur_Init(void) +{ + std::string sn = MDFNGameInfo->shortname; + + if(MDFN_GetSettingB(std::string(sn + "." + std::string("tblur")).c_str())) + { + AccumBlurAmount = (uint32)(16384 * MDFN_GetSettingF(std::string(sn + "." + std::string("tblur.accum.amount")).c_str()) / 100); + if(MDFN_GetSettingB(std::string(sn + "." + std::string("tblur.accum")).c_str())) + { + AccumBlurBuf = (HQPixelEntry *)calloc(sizeof(HQPixelEntry), MDFNGameInfo->fb_width * MDFNGameInfo->fb_height); + MDFN_printf(_("Video temporal frame blur enabled with accumulation: %f.\n"), (double)AccumBlurAmount * 100 / 16384); + } + else + { + BlurBuf = (uint32 *)calloc(4, MDFNGameInfo->fb_width * MDFNGameInfo->fb_height); + MDFN_printf(_("Video temporal frame blur enabled.\n")); + } + } +} + +void TBlur_Run(EmulateSpecStruct *espec) +{ + MDFN_Surface *surface = espec->surface; + uint32 *pXBuf = surface->pixels; + const uint32 bb_pitch = MDFNGameInfo->fb_width; + + //printf("%d %d %d %d\n", espec->surface->format.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift, espec->surface->format.Ashift); + if(AccumBlurBuf) + { + for(int y = 0; y < espec->DisplayRect.h; y++) + { + int xw = espec->DisplayRect.w; + int xs = espec->DisplayRect.x; + + if(espec->LineWidths[0].w != ~0) + { + xw = espec->LineWidths[espec->DisplayRect.y + y].w; + xs = espec->LineWidths[espec->DisplayRect.y + y].x; + } + + if(AccumBlurAmount == 8192) + { + for(int x = 0; x < xw; x++) + { + uint32 color; + HQPixelEntry mixcolor; + + color = pXBuf[(y + espec->DisplayRect.y) * surface->pitch32 + xs + x]; + mixcolor = AccumBlurBuf[y * bb_pitch + x]; + mixcolor.a = ((uint32)mixcolor.a + ((color & 0xFF) << 8)) >> 1; + mixcolor.b = ((uint32)mixcolor.b + ((color & 0xFF00))) >> 1; + mixcolor.c = ((uint32)mixcolor.c + ((color & 0xFF0000) >> 8)) >> 1; + mixcolor.d = ((uint32)mixcolor.d + ((color & 0xFF000000) >> 16)) >> 1; + + AccumBlurBuf[y * bb_pitch + x] = mixcolor; + + pXBuf[(y + espec->DisplayRect.y) * surface->pitch32 + xs + x] = ((mixcolor.a >> 8) << 0) | ((mixcolor.b >> 8) << 8) | + ((mixcolor.c >> 8) << 16) | ((mixcolor.d >> 8) << 24); + } + } + else + { + uint32 InvAccumBlurAmount = 16384 - AccumBlurAmount; + + for(int x = 0; x < xw; x++) + { + uint32 color; + HQPixelEntry mixcolor; + color = pXBuf[(y + espec->DisplayRect.y) * surface->pitch32 + xs + x]; + + mixcolor = AccumBlurBuf[y * bb_pitch + x]; + mixcolor.a = ((uint32)mixcolor.a * AccumBlurAmount + InvAccumBlurAmount * ((color & 0xFF) << 8)) >> 14; + mixcolor.b = ((uint32)mixcolor.b * AccumBlurAmount + InvAccumBlurAmount * ((color & 0xFF00))) >> 14; + mixcolor.c = ((uint32)mixcolor.c * AccumBlurAmount + InvAccumBlurAmount * ((color & 0xFF0000) >> 8)) >> 14; + mixcolor.d = ((uint32)mixcolor.d * AccumBlurAmount + InvAccumBlurAmount * ((color & 0xFF000000) >> 16)) >> 14; + AccumBlurBuf[y * bb_pitch + x] = mixcolor; + + pXBuf[(y + espec->DisplayRect.y) * surface->pitch32 + xs + x] = ((mixcolor.a >> 8) << 0) | ((mixcolor.b >> 8) << 8) | + ((mixcolor.c >> 8) << 16) | ((mixcolor.d >> 8) << 24); + } + } + + } + } + else if(BlurBuf) + { + for(int y = 0; y < espec->DisplayRect.h; y++) + { + int xw = espec->DisplayRect.w; + int xs = espec->DisplayRect.x; + + if(espec->LineWidths[0].w != ~0) + { + xw = espec->LineWidths[espec->DisplayRect.y + y].w; + xs = espec->LineWidths[espec->DisplayRect.y + y].x; + } + + for(int x = 0; x < xw; x++) + { + uint32 color, mixcolor; + color = pXBuf[(y + espec->DisplayRect.y) * surface->pitch32 + xs + x]; + + mixcolor = BlurBuf[y * bb_pitch + x]; + BlurBuf[y * bb_pitch + x] = color; + + // Needs 64-bit + #ifdef HAVE_NATIVE64BIT + color = ((((uint64)color + mixcolor) - ((color ^ mixcolor) & 0x01010101))) >> 1; + #else + color = ((((color & 0x00FF00FF) + (mixcolor & 0x00FF00FF)) >> 1) & 0x00FF00FF) | (((((color & 0xFF00FF00) >> 1) + ((mixcolor & 0xFF00FF00) >> 1))) & 0xFF00FF00); + #endif + + // color = (((color & 0xFF) + (mixcolor & 0xFF)) >> 1) | ((((color & 0xFF00) + (mixcolor & 0xFF00)) >> 1) & 0xFF00) | + // ((((color & 0xFF0000) + (mixcolor & 0xFF0000)) >> 1) & 0xFF0000) | ((((color >> 24) + (mixcolor >> 24)) >> 1) << 24); + pXBuf[(y + espec->DisplayRect.y) * surface->pitch32 + xs + x] = color; + } + } + } +} + +void TBlur_Kill(void) +{ + if(BlurBuf) + { + free(BlurBuf); + BlurBuf = NULL; + } + if(AccumBlurBuf) + { + free(AccumBlurBuf); + AccumBlurBuf = NULL; + } +} + +bool TBlur_IsOn(void) +{ + return(BlurBuf || AccumBlurBuf); +} diff --git a/libmednahawk/src/video/tblur.h b/libmednahawk/src/video/tblur.h new file mode 100644 index 0000000000..9af7542720 --- /dev/null +++ b/libmednahawk/src/video/tblur.h @@ -0,0 +1,11 @@ +#ifndef __MDFN_TBLUR_H +#define __MDFN_TBLUR_H + +#include "../video.h" + +void TBlur_Init(void); +void TBlur_Kill(void); +void TBlur_Run(EmulateSpecStruct *espec); +bool TBlur_IsOn(void); + +#endif diff --git a/libmednahawk/src/video/text.cpp b/libmednahawk/src/video/text.cpp new file mode 100644 index 0000000000..418efd930b --- /dev/null +++ b/libmednahawk/src/video/text.cpp @@ -0,0 +1,354 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "video-common.h" +#include "../string/ConvertUTF.h" +#include "font-data.h" + +typedef struct +{ + uint8 glyph_width; + uint8 glyph_height; + int8 extension; + uint8 entry_bsize; + const uint8 *base_ptr; +} FontDescriptor_t; + +static FontDescriptor_t FontDescriptors[_MDFN_FONT_COUNT] = +{ + #ifdef WANT_INTERNAL_CJK + { 9, 18, MDFN_FONT_18x18, sizeof(FontData9x18[0]), &FontData9x18[0].data[0] }, + { 5, 7, -1, sizeof(FontData5x7[0]), &FontData5x7[0].data[0] }, + { 4, 5, -1, sizeof(FontData4x5[0]), &FontData4x5[0].data[0] }, + { 6, 13, MDFN_FONT_12x13, sizeof(FontData6x13[0]), &FontData6x13[0].data[0] }, + { 12, 13, -1, sizeof(FontData12x13[0]), &FontData12x13[0].data[0] }, + { 18, 18, -1, sizeof(FontData18x18[0]), &FontData18x18[0].data[0] }, + #else + { 9, 18, -1, sizeof(FontData9x18[0]), &FontData9x18[0].data[0] }, + { 5, 7, -1, sizeof(FontData5x7[0]), &FontData5x7[0].data[0] }, //zero 29-oct-2012 - what are these parents doing here FOR RYPHECHA + { 4, 5, -1, sizeof(FontData4x5[0]), &FontData4x5[0].data[0] }, //zero 29-oct-2012 - what are these parents doing here FOR RYPHECHA + { 6, 13, -1, sizeof(FontData6x13[0]), &FontData6x13[0].data[0] }, + #endif +}; + +static uint16 FontDataIndexCache[_MDFN_FONT_COUNT][65536]; + +void MDFN_InitFontData(void) +{ + unsigned int x; + unsigned int inx; + + memset(FontDataIndexCache, 0xFF, sizeof(FontDataIndexCache)); + + for(inx=x=0;x<65536;x++) + { + if(inx < (FontData4x5_Size / sizeof(font4x5)) && FontData4x5[inx].glyph_num == x) + { + FontDataIndexCache[MDFN_FONT_4x5][x] = inx; + inx++; + } + } + + for(inx=x=0;x<65536;x++) + { + if(inx < (FontData5x7_Size / sizeof(font5x7)) && FontData5x7[inx].glyph_num == x) + { + FontDataIndexCache[MDFN_FONT_5x7][x] = inx; + inx++; + } + } + + for(inx=x=0;x<65536;x++) + { + if(inx < (FontData6x13_Size / sizeof(font6x13)) && FontData6x13[inx].glyph_num == x) + { + FontDataIndexCache[MDFN_FONT_6x13_12x13][x] = inx; + inx++; + } + } + + for(inx=x=0;x<65536;x++) + { + if(inx < (FontData9x18_Size / sizeof(font9x18)) && FontData9x18[inx].glyph_num == x) + { + FontDataIndexCache[MDFN_FONT_9x18_18x18][x] = inx; + inx++; + } + } + + #ifdef WANT_INTERNAL_CJK + for(inx=x=0;x<65536;x++) + { + if(inx < (FontData12x13_Size / sizeof(font12x13)) && FontData12x13[inx].glyph_num == x) + { + FontDataIndexCache[MDFN_FONT_12x13][x] = inx; + inx++; + } + } + + for(inx=x=0;x<65536;x++) + { + if(inx < (FontData18x18_Size / sizeof(font18x18)) && FontData18x18[inx].glyph_num == x) + { + FontDataIndexCache[MDFN_FONT_18x18][x] = inx; + inx++; + } + } + #endif +} + +size_t utf32_strlen(UTF32 *s) +{ + size_t ret = 0; + + while(*s++) ret++; + + return(ret); +} + +static void DrawTextSub(const UTF32 *utf32_buf, uint32 &slen, const uint8 **glyph_ptrs, uint8 *glyph_width, uint8 *glyph_ov_width, uint32 &pixwidth, uint32 which_font) +{ + pixwidth = 0; + + for(uint32 x = 0; x < slen; x++) + { + uint32 thisglyph = utf32_buf[x] & 0xFFFF; + bool GlyphFound = FALSE; + uint32 recurse_which_font = which_font; + + while(!GlyphFound) + { + if(FontDataIndexCache[recurse_which_font][thisglyph] != 0xFFFF) + { + glyph_ptrs[x] = FontDescriptors[recurse_which_font].base_ptr + (FontDescriptors[recurse_which_font].entry_bsize * FontDataIndexCache[recurse_which_font][thisglyph]); + glyph_width[x] = FontDescriptors[recurse_which_font].glyph_width; + GlyphFound = TRUE; + } + else if(FontDescriptors[recurse_which_font].extension != -1) + recurse_which_font = FontDescriptors[recurse_which_font].extension; + else + break; + } + + if(!GlyphFound) + { + glyph_ptrs[x] = FontDescriptors[which_font].base_ptr + (FontDescriptors[which_font].entry_bsize * FontDataIndexCache[which_font][(unsigned char)'?']); + glyph_width[x] = FontDescriptors[which_font].glyph_width; + } + + if((thisglyph >= 0x0300 && thisglyph <= 0x036F) || (thisglyph >= 0xFE20 && thisglyph <= 0xFE2F)) + glyph_ov_width[x] = 0; + else + glyph_ov_width[x] = glyph_width[x]; + + pixwidth += (((x + 1) == slen) ? glyph_width[x] : glyph_ov_width[x]); + } +} + +uint32 GetTextPixLength(const UTF8 *msg, uint32 which_font) +{ + //zero 07-feb-2012 - remove dynamic stack buffers... + + uint32 slen; + uint32 pixwidth; + uint32 max_glyph_len = strlen((char *)msg); + const uint8 **glyph_ptrs = new const uint8*[max_glyph_len]; + uint8 *glyph_width = new uint8[max_glyph_len]; + uint8 *glyph_ov_width= new uint8[max_glyph_len]; + + const UTF8 *src_begin = (UTF8 *)msg; + UTF32* utf32_buf = new UTF32[max_glyph_len]; + UTF32 *tstart = utf32_buf; + + ConvertUTF8toUTF32(&src_begin, (UTF8*)msg + max_glyph_len, &tstart, &tstart[max_glyph_len], lenientConversion); + slen = (tstart - utf32_buf); + DrawTextSub(utf32_buf, slen, glyph_ptrs, glyph_width, glyph_ov_width, pixwidth, which_font); + + delete[] glyph_ptrs; + delete[] glyph_width; + delete[] glyph_ov_width; + delete[] utf32_buf; + return(pixwidth); +} + +uint32 GetTextPixLength(const UTF32 *msg, uint32 which_font) +{ + //zero 07-feb-2012 - remove dynamic stack buffers... + + uint32 slen; + uint32 pixwidth; + uint32 max_glyph_len = utf32_strlen((UTF32 *)msg); + const uint8 **glyph_ptrs = new const uint8*[max_glyph_len]; + uint8 *glyph_width = new uint8[max_glyph_len]; + uint8 *glyph_ov_width = new uint8[max_glyph_len]; + + slen = utf32_strlen((UTF32 *)msg); + DrawTextSub((UTF32*)msg, slen, glyph_ptrs, glyph_width, glyph_ov_width, pixwidth, which_font); + + delete[] glyph_ptrs; + delete[] glyph_width; + delete[] glyph_ov_width; + return(pixwidth); +} + +static uint32 DoRealDraw(uint32 *dest, uint32 pitch, uint32 width_limit, uint32 fgcolor, int centered, uint32 slen, uint32 pixwidth, + uint32 glyph_height, const uint8 *glyph_ptrs[], const uint8 glyph_width[], const uint8 glyph_ov_width[], const uint32 ex_offset = 0) +{ + pitch /= sizeof(uint32); + if(centered) + { + int32 poot = width_limit - pixwidth; + + if(poot < 0) + poot = 0; + + dest += poot / 2; + } + +#if 0 + // TODO to prevent writing past width + // Shadow support kludge + // + if(width_limit < ex_offset) + return(0); + dest += ex_offset + pitch; + width_limit -= ex_offset; + // + // +#endif + + pixwidth = 0; + + for(uint32 n = 0; n < slen; n++) + { + const uint8 *src_glyph = glyph_ptrs[n]; + uint32 gy_mul = (glyph_width[n] >> 3) + 1; + uint32 gw = glyph_width[n]; + + if((pixwidth + gw) > width_limit) + { + if(pixwidth > width_limit) // Prooooobably shouldn't happen, but just in case. + gw = 0; + else + gw = width_limit - pixwidth; + } + + if((pixwidth + glyph_ov_width[n]) > width_limit) + slen = n + 1; // Break out + + + for(uint32 gy = 0; gy < glyph_height; gy++) + { + for(uint32 gx = 0; gx < gw; gx++) + { + if((src_glyph[gy * gy_mul + (gx >> 3)] << (gx & 0x7)) & 0x80) + dest[gy * pitch + gx] = fgcolor; + } + } + dest += glyph_ov_width[n]; + pixwidth += ((n + 1) == slen) ? gw : glyph_ov_width[n]; + } + + if(pixwidth > width_limit) + pixwidth = width_limit; + + return(pixwidth); +} + +// FIXME/TODO: maximum text pixel width should be signed, not unsigned. +uint32 DrawTextTrans(uint32 *dest, int pitch, uint32 width, const UTF8 *msg, uint32 fgcolor, int centered, uint32 which_font) +{ + //zero 07-feb-2012 - remove dynamic stack buffers... + + uint32 slen; + uint32 pixwidth; + uint32 max_glyph_len = strlen((char *)msg); + const uint8 **glyph_ptrs = new const uint8*[max_glyph_len]; + uint8 *glyph_width = new uint8[max_glyph_len]; + uint8 *glyph_ov_width = new uint8[max_glyph_len]; + + const UTF8 *src_begin = (UTF8 *)msg; + UTF32 *utf32_buf = new UTF32[max_glyph_len]; + UTF32 *tstart = utf32_buf; + + ConvertUTF8toUTF32(&src_begin, (UTF8*)msg + max_glyph_len, &tstart, &tstart[max_glyph_len], lenientConversion); + slen = (tstart - utf32_buf); + DrawTextSub(utf32_buf, slen, glyph_ptrs, glyph_width, glyph_ov_width, pixwidth, which_font); + + uint32 ret = (DoRealDraw(dest, pitch, width, fgcolor, centered, slen, pixwidth, FontDescriptors[which_font].glyph_height, glyph_ptrs, glyph_width, glyph_ov_width)); + + delete[] glyph_ptrs; + delete[] glyph_width; + delete[] glyph_ov_width; + delete[] utf32_buf; + return ret; +} + +uint32 DrawTextTrans(uint32 *dest, int pitch, uint32 width, const UTF32 *msg, uint32 fgcolor, int centered, uint32 which_font) +{ + //zero 07-feb-2012 - remove dynamic stack buffers... + + uint32 slen; + uint32 pixwidth; + uint32 max_glyph_len = utf32_strlen((UTF32 *)msg); + const uint8 **glyph_ptrs = new const uint8*[max_glyph_len]; + uint8* glyph_width = new uint8[max_glyph_len]; + uint8 *glyph_ov_width = new uint8[max_glyph_len]; + + slen = utf32_strlen((UTF32 *)msg); + DrawTextSub((UTF32*)msg, slen, glyph_ptrs, glyph_width, glyph_ov_width, pixwidth, which_font); + + uint32 ret = (DoRealDraw(dest, pitch, width, fgcolor, centered, slen, pixwidth, FontDescriptors[which_font].glyph_height, glyph_ptrs, glyph_width, glyph_ov_width)); + + delete[] glyph_ptrs; + delete[] glyph_width; + delete[] glyph_ov_width; + + return ret; +} + +uint32 DrawTextTransShadow(uint32 *dest, int pitch, uint32 width, const UTF8 *textmsg, uint32 fgcolor, uint32 shadcolor, int centered, uint32 which_font) +{ + DrawTextTrans(dest + 1 + (pitch >> 2), pitch, width, textmsg, shadcolor, centered, which_font); + return(DrawTextTrans(dest, pitch, width, textmsg, fgcolor, centered, which_font)); +} + +uint32 DrawTextTransShadow(uint32 *dest, int pitch, uint32 width, const std::string &textmsg, uint32 fgcolor, uint32 shadcolor, int centered, uint32 which_font) +{ + const char *tmp = textmsg.c_str(); + + DrawTextTrans(dest + 1 + (pitch >> 2), pitch, width, (const UTF8 *)tmp, shadcolor, centered, which_font); + return(DrawTextTrans(dest, pitch, width, (const UTF8 *)tmp, fgcolor, centered, which_font)); +} + +#if 0 +uint32 DrawText(MDFN_Surface *surface, const MDFN_Rect &rect, const char *textmsg, uint32 color, + bool centered, uint32 which_font) +{ + MDFN_Rect tr = rect; + + if(tr.w < 0 || tr.h < 0) + return; + + if((tr.x + tr.w) > surface->w) + tr.w = surface->w - tr.x; + + if((tr.y + tr.h) > surface->h) + tr.h = surface->h - tr.y; + +} +#endif diff --git a/libmednahawk/src/video/text.h b/libmednahawk/src/video/text.h new file mode 100644 index 0000000000..97ac38fd8b --- /dev/null +++ b/libmednahawk/src/video/text.h @@ -0,0 +1,31 @@ +#ifndef __MDFN_VIDEO_TEXT_H +#define __MDFN_VIDEO_TEXT_H + +enum +{ + // If the order of these constants is changed, you must also update the array of FontDescriptor + // in text.cpp. + MDFN_FONT_9x18_18x18 = 0, + MDFN_FONT_5x7, + MDFN_FONT_4x5, + MDFN_FONT_6x13_12x13, + + #ifdef WANT_INTERNAL_CJK + MDFN_FONT_12x13, + MDFN_FONT_18x18, + #endif + + _MDFN_FONT_COUNT +}; + +uint32 GetTextPixLength(const UTF8 *msg, uint32 which_font = MDFN_FONT_9x18_18x18); +uint32 GetTextPixLength(const UTF32 *msg, uint32 which_font = MDFN_FONT_9x18_18x18); + +uint32 DrawTextTrans(uint32 *dest, int pitch, uint32 width, const UTF8 *textmsg, uint32 fgcolor, int centered, uint32 which_font = MDFN_FONT_9x18_18x18); +uint32 DrawTextTrans(uint32 *dest, int pitch, uint32 width, const UTF32 *textmsg, uint32 fgcolor, int centered, uint32 which_font = MDFN_FONT_9x18_18x18); + + +uint32 DrawTextTransShadow(uint32 *dest, int pitch, uint32 width, const UTF8 *textmsg, uint32 fgcolor, uint32 shadcolor,int centered, uint32 which_font = MDFN_FONT_9x18_18x18); +uint32 DrawTextTransShadow(uint32 *dest, int pitch, uint32 width, const std::string &textmsg, uint32 fgcolor, uint32 shadcolor,int centered, uint32 which_font = MDFN_FONT_9x18_18x18); + +#endif diff --git a/libmednahawk/src/video/video-common.h b/libmednahawk/src/video/video-common.h new file mode 100644 index 0000000000..b9e6ed22c3 --- /dev/null +++ b/libmednahawk/src/video/video-common.h @@ -0,0 +1,7 @@ +#include "../mednafen.h" +#include "../video.h" +#include "../general.h" +#include "../state.h" +#include "../movie.h" +#include "../driver.h" + diff --git a/libmednahawk/src/video/video.cpp b/libmednahawk/src/video/video.cpp new file mode 100644 index 0000000000..a05ebc44e7 --- /dev/null +++ b/libmednahawk/src/video/video.cpp @@ -0,0 +1,101 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "video-common.h" + +#include +#include +//#include //zero 07-feb-2012 +#include +#include + +#include + +#include "png.h" + +void MDFNI_SaveSnapshot(const MDFN_Surface *src, const MDFN_Rect *rect, const MDFN_Rect *LineWidths) +{ + FileWrapper *pp = NULL; + + try + { + std::string fn; + int u = 0; + + try + { + pp = new FileWrapper(MDFN_MakeFName(MDFNMKF_SNAP_DAT, 0, NULL).c_str(), FileWrapper::MODE_READ); + } + catch(std::exception &e) + { + + } + + if(pp) + { + if(pp->scanf("%d", &u) != 1) + u = 0; + + delete pp; + pp = NULL; + } + + pp = new FileWrapper(MDFN_MakeFName(MDFNMKF_SNAP_DAT, 0, NULL).c_str(), FileWrapper::MODE_WRITE); + + pp->seek(0, SEEK_SET); + pp->printf("%d\n", u + 1); + + delete pp; + pp = NULL; + + fn = MDFN_MakeFName(MDFNMKF_SNAP, u, "png"); + + PNGWrite(fn.c_str(), src, *rect, LineWidths); + + MDFN_DispMessage(_("Screen snapshot %d saved."), u); + } + catch(std::exception &e) + { + if(pp) + { + delete pp; + pp = NULL; + } + + MDFN_PrintError(_("Error saving screen snapshot: %s"), e.what()); + MDFN_DispMessage(_("Error saving screen snapshot: %s"), e.what()); + } +} + +void MDFN_DispMessage(const char *format, ...) throw() +{ + va_list ap; + va_start(ap,format); + char *msg = NULL; + + trio_vasprintf(&msg, format,ap); + va_end(ap); + + MDFND_DispMessage((UTF8*)msg); +} + +void MDFN_ResetMessages(void) +{ + MDFND_DispMessage(NULL); +} + + diff --git a/libmednahawk/src/wswan/Makefile.am b/libmednahawk/src/wswan/Makefile.am new file mode 100644 index 0000000000..2fb62708f2 --- /dev/null +++ b/libmednahawk/src/wswan/Makefile.am @@ -0,0 +1,13 @@ +AUTOMAKE_OPTIONS = subdir-objects +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl + +noinst_LIBRARIES = libwswan.a + +wswan_SOURCES = gfx.cpp main.cpp memory.cpp v30mz.cpp sound.cpp tcache.cpp interrupt.cpp eeprom.cpp rtc.cpp + +if WANT_DEBUGGER +wswan_SOURCES += dis/dis_decode.cpp dis/dis_groups.cpp dis/resolve.cpp dis/syntax.cpp debug.cpp +endif + +libwswan_a_SOURCES = $(wswan_SOURCES) diff --git a/libmednahawk/src/wswan/Makefile.in b/libmednahawk/src/wswan/Makefile.in new file mode 100644 index 0000000000..919b24351b --- /dev/null +++ b/libmednahawk/src/wswan/Makefile.in @@ -0,0 +1,645 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@WANT_DEBUGGER_TRUE@am__append_1 = dis/dis_decode.cpp dis/dis_groups.cpp dis/resolve.cpp dis/syntax.cpp debug.cpp +subdir = src/wswan +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \ + $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \ + $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \ + $(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \ + $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) +am__v_AR_0 = @echo " AR " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +libwswan_a_AR = $(AR) $(ARFLAGS) +libwswan_a_LIBADD = +am__libwswan_a_SOURCES_DIST = gfx.cpp main.cpp memory.cpp v30mz.cpp \ + sound.cpp tcache.cpp interrupt.cpp eeprom.cpp rtc.cpp \ + dis/dis_decode.cpp dis/dis_groups.cpp dis/resolve.cpp \ + dis/syntax.cpp debug.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@WANT_DEBUGGER_TRUE@am__objects_1 = dis/dis_decode.$(OBJEXT) \ +@WANT_DEBUGGER_TRUE@ dis/dis_groups.$(OBJEXT) \ +@WANT_DEBUGGER_TRUE@ dis/resolve.$(OBJEXT) dis/syntax.$(OBJEXT) \ +@WANT_DEBUGGER_TRUE@ debug.$(OBJEXT) +am__objects_2 = gfx.$(OBJEXT) main.$(OBJEXT) memory.$(OBJEXT) \ + v30mz.$(OBJEXT) sound.$(OBJEXT) tcache.$(OBJEXT) \ + interrupt.$(OBJEXT) eeprom.$(OBJEXT) rtc.$(OBJEXT) \ + $(am__objects_1) +am_libwswan_a_OBJECTS = $(am__objects_2) +libwswan_a_OBJECTS = $(am_libwswan_a_OBJECTS) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libwswan_a_SOURCES) +DIST_SOURCES = $(am__libwswan_a_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_CFLAGS = @AM_CFLAGS@ +AM_CXXFLAGS = @AM_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MATH_OPTIMIZER_FLAGS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@ +GENCAT = @GENCAT@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_NEWLOCALE = @HAVE_NEWLOCALE@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_VISIBILITY = @HAVE_VISIBILITY@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +JACK_CFLAGS = @JACK_CFLAGS@ +JACK_LIBS = @JACK_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBC = @LTLIBC@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MATH_OPTIMIZER_FLAGS = @MATH_OPTIMIZER_FLAGS@ +MKDIR_P = @MKDIR_P@ +MMX_CFLAGS = @MMX_CFLAGS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SNDFILE_CFLAGS = @SNDFILE_CFLAGS@ +SNDFILE_LIBS = @SNDFILE_LIBS@ +SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@ +SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@ +SSE2_CFLAGS = @SSE2_CFLAGS@ +SSE3_CFLAGS = @SSE3_CFLAGS@ +SSE_CFLAGS = @SSE_CFLAGS@ +STRIP = @STRIP@ +TRIO_CFLAGS = @TRIO_CFLAGS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARNING_FLAGS = @WARNING_FLAGS@ +WINDRES = @WINDRES@ +WOE32 = @WOE32@ +WOE32DLL = @WOE32DLL@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMKMF = @XMKMF@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = subdir-objects +DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl +noinst_LIBRARIES = libwswan.a +wswan_SOURCES = gfx.cpp main.cpp memory.cpp v30mz.cpp sound.cpp \ + tcache.cpp interrupt.cpp eeprom.cpp rtc.cpp $(am__append_1) +libwswan_a_SOURCES = $(wswan_SOURCES) +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/wswan/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/wswan/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +dis/$(am__dirstamp): + @$(MKDIR_P) dis + @: > dis/$(am__dirstamp) +dis/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) dis/$(DEPDIR) + @: > dis/$(DEPDIR)/$(am__dirstamp) +dis/dis_decode.$(OBJEXT): dis/$(am__dirstamp) \ + dis/$(DEPDIR)/$(am__dirstamp) +dis/dis_groups.$(OBJEXT): dis/$(am__dirstamp) \ + dis/$(DEPDIR)/$(am__dirstamp) +dis/resolve.$(OBJEXT): dis/$(am__dirstamp) \ + dis/$(DEPDIR)/$(am__dirstamp) +dis/syntax.$(OBJEXT): dis/$(am__dirstamp) \ + dis/$(DEPDIR)/$(am__dirstamp) +libwswan.a: $(libwswan_a_OBJECTS) $(libwswan_a_DEPENDENCIES) + $(AM_V_at)-rm -f libwswan.a + $(AM_V_AR)$(libwswan_a_AR) libwswan.a $(libwswan_a_OBJECTS) $(libwswan_a_LIBADD) + $(AM_V_at)$(RANLIB) libwswan.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f dis/dis_decode.$(OBJEXT) + -rm -f dis/dis_groups.$(OBJEXT) + -rm -f dis/resolve.$(OBJEXT) + -rm -f dis/syntax.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eeprom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interrupt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tcache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/v30mz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@dis/$(DEPDIR)/dis_decode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@dis/$(DEPDIR)/dis_groups.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@dis/$(DEPDIR)/resolve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@dis/$(DEPDIR)/syntax.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f dis/$(DEPDIR)/$(am__dirstamp) + -rm -f dis/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) dis/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) dis/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/src/wswan/debug.cpp b/libmednahawk/src/wswan/debug.cpp new file mode 100644 index 0000000000..459021b3d3 --- /dev/null +++ b/libmednahawk/src/wswan/debug.cpp @@ -0,0 +1,453 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include "v30mz.h" +#include "debug.h" +#include "dis/disasm.h" +#include "memory.h" +#include "gfx.h" +#include +#include + +namespace MDFN_IEN_WSWAN +{ + +#define NUMBT 32 + +static int BTIndex = 0; + +struct BTEntry +{ + uint16 from_CS; + uint16 from_IP; + uint16 to_CS; + uint16 to_IP; + + bool interrupt; + uint32 branch_count; +}; + +static BTEntry BTEntries[NUMBT]; + +struct WSWAN_BPOINT +{ + unsigned int A[2]; + int type; + bool logical; +}; + +static std::vector BreakPointsPC, BreakPointsRead, BreakPointsWrite, BreakPointsIORead, BreakPointsIOWrite, BreakPointsAux0Read, BreakPointsAux0Write; + +static void (*CPUHook)(uint32 PC) = NULL; +static bool FoundBPoint = 0; +static void (*BPCallB)(uint32 PC) = NULL; + +void WSwanDBG_IRQ(int level) +{ + if(level >= 0 && level < 8) + { + //WSwan_Interrupt(level); + WSwan_InterruptDebugForce(level); + } +} + +static uint8 ReadHandler(uint32 A) +{ + std::vector::iterator bpit; + + for(bpit = BreakPointsRead.begin(); bpit != BreakPointsRead.end(); bpit++) + { + unsigned int testA = A; + + if(testA >= bpit->A[0] && testA <= bpit->A[1]) + { + FoundBPoint = 1; + break; + } + } + + return(WSwan_readmem20(A)); +} + +static void WriteHandler(uint32 A, uint8 V) +{ + std::vector::iterator bpit; + + for(bpit = BreakPointsWrite.begin(); bpit != BreakPointsWrite.end(); bpit++) + { + unsigned int testA = A; + + if(testA >= bpit->A[0] && testA <= bpit->A[1]) + { + FoundBPoint = 1; + break; + } + } +} + +static uint8 PortReadHandler(uint32 A) +{ + std::vector::iterator bpit; + + for(bpit = BreakPointsIORead.begin(); bpit != BreakPointsIORead.end(); bpit++) + { + unsigned int testA = A & 0xFF; + + if(testA >= (bpit->A[0] & 0xFF) && testA <= (bpit->A[1] & 0xFF)) + { + FoundBPoint = 1; + break; + } + } + + return(WSwan_readport(A)); +} + +static void PortWriteHandler(uint32 A, uint8 V) +{ + std::vector::iterator bpit; + + for(bpit = BreakPointsIOWrite.begin(); bpit != BreakPointsIOWrite.end(); bpit++) + { + unsigned int testA = A & 0xFF; + + if(testA >= (bpit->A[0] & 0xFF) && testA <= (bpit->A[1] & 0xFF)) + { + FoundBPoint = 1; + break; + } + } +} + +static void CPUHandler(uint32 PC) +{ + std::vector::iterator bpit; + + if(!FoundBPoint) + for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++) + { + if(PC >= bpit->A[0] && PC <= bpit->A[1]) + { + BPCallB(PC); + break; + } + } + + if(FoundBPoint) + { + BPCallB(PC); + FoundBPoint = 0; + } + + if(CPUHook) + CPUHook(PC); +} + +static void RedoDH(void) +{ + bool needch = BreakPointsPC.size() || BreakPointsRead.size() || BreakPointsAux0Read.size() || + BreakPointsWrite.size() || BreakPointsAux0Write.size() || + BreakPointsIORead.size() || BreakPointsIOWrite.size(); + + v30mz_debug(needch ? CPUHandler : CPUHook, + (BreakPointsRead.size() || BreakPointsAux0Read.size()) ? ReadHandler : NULL, + (BreakPointsWrite.size() || BreakPointsAux0Write.size()) ? WriteHandler : 0, + (BreakPointsIORead.size()) ? PortReadHandler : NULL, + (BreakPointsIOWrite.size()) ? PortWriteHandler : NULL, + (CPUHook) ? WSwanDBG_AddBranchTrace : NULL); +} + +void WSwanDBG_SetCPUCallback(void (*callb)(uint32 PC)) +{ + CPUHook = callb; + RedoDH(); +} + +void WSwanDBG_SetBPCallback(void (*callb)(uint32 PC)) +{ + BPCallB = callb; +} + +void WSwanDBG_FlushBreakPoints(int type) +{ + if(type == BPOINT_READ) + BreakPointsRead.clear(); + else if(type == BPOINT_WRITE) + BreakPointsWrite.clear(); + else if(type == BPOINT_IO_READ) + BreakPointsIORead.clear(); + else if(type == BPOINT_IO_WRITE) + BreakPointsIOWrite.clear(); + else if(type == BPOINT_PC) + BreakPointsPC.clear(); + else if(type == BPOINT_AUX_READ) + BreakPointsAux0Read.clear(); + else if(type == BPOINT_AUX_WRITE) + BreakPointsAux0Write.clear(); + + RedoDH(); +} + +void WSwanDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical) +{ + WSWAN_BPOINT tmp; + + tmp.A[0] = A1; + tmp.A[1] = A2; + tmp.type =type; + tmp.logical = logical; + + if(type == BPOINT_READ) + BreakPointsRead.push_back(tmp); + else if(type == BPOINT_WRITE) + BreakPointsWrite.push_back(tmp); + else if(type == BPOINT_IO_READ) + BreakPointsIORead.push_back(tmp); + else if(type == BPOINT_IO_WRITE) + BreakPointsIOWrite.push_back(tmp); + else if(type == BPOINT_PC) + BreakPointsPC.push_back(tmp); + else if(type == BPOINT_AUX_READ) + BreakPointsAux0Read.push_back(tmp); + else if(type == BPOINT_AUX_WRITE) + BreakPointsAux0Write.push_back(tmp); + + RedoDH(); +} + +uint32 WSwanDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical) +{ + uint32 ss = v30mz_get_reg(NEC_SS); + uint32 ret = 0; + + for(unsigned int i = 0; i < bsize; i++) + { + uint8 zebyte; + + if(logical) + zebyte = WSwan_readmem20(((ss << 4) + A + i) & 0xFFFFF); + else + zebyte = WSwan_readmem20((A + i) & 0xFFFFF); + ret |= zebyte << (i * 8); + } + + return(ret); +} + +void WSwanDBG_AddBranchTrace(uint16 from_CS, uint16 from_IP, uint16 to_CS, uint16 to_IP, bool interrupt) +{ + BTEntry *prevbt = &BTEntries[(BTIndex + NUMBT - 1) % NUMBT]; + + if(prevbt->from_CS == from_CS && prevbt->to_CS == to_CS && + prevbt->from_IP == from_IP && prevbt->to_IP == to_IP && + prevbt->interrupt == interrupt && prevbt->branch_count < 0xFFFFFFFF) + prevbt->branch_count++; + else + { + BTEntries[BTIndex].from_CS = from_CS; + BTEntries[BTIndex].to_CS = to_CS; + BTEntries[BTIndex].from_IP = from_IP; + BTEntries[BTIndex].to_IP = to_IP; + + BTEntries[BTIndex].interrupt = interrupt; + BTEntries[BTIndex].branch_count = 1; + + BTIndex = (BTIndex + 1) % NUMBT; + } +} + +std::vector WSwanDBG_GetBranchTrace(void) +{ + BranchTraceResult tmp; + std::vector ret; + + for(int x = 0; x < NUMBT; x++) + { + const BTEntry *bt = &BTEntries[(x + BTIndex) % NUMBT]; + + tmp.count = bt->branch_count; + trio_snprintf(tmp.from, sizeof(tmp.from), "%04X:%04X", bt->from_CS, bt->from_IP); + trio_snprintf(tmp.to, sizeof(tmp.to), "%04X:%04X", bt->to_CS, bt->to_IP); + trio_snprintf(tmp.code, sizeof(tmp.code), bt->interrupt ? "INT" : ""); + + ret.push_back(tmp); + } + return(ret); +} + + +void WSwanDBG_CheckBP(int type, uint32 address, unsigned int len) +{ + + +} + +void WSwanDBG_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + + +} + +void WSwanDBG_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, const uint8 *Buffer) +{ + + +} + +static disassembler zedis; + +void WSwanDBG_Disassemble(uint32 &a, uint32 SpecialA, char *text_buffer) +{ + uint32 mis = MDFNGameInfo->Debugger->MaxInstructionSize; + mis = 256; + uint8 instr_buffer[mis]; + uint32 ps = v30mz_get_reg(NEC_PS); + int consumed; + + for(unsigned int i = 0; i < mis; i++) + { + instr_buffer[i] = WSwan_readmem20(((ps << 4) + a + i) & 0xFFFFF); + } + + consumed = zedis.disasm(0x0000, a, instr_buffer, text_buffer); + + int x; + for(x = strlen(text_buffer); x < 40; x++) + text_buffer[x] = ' '; + text_buffer[x] = 0; + + for(int i = 0; i < consumed; i++) + { + char tmp[16]; + trio_snprintf(tmp, 16, " %02x", instr_buffer[i]); + strcat(text_buffer, tmp); + } + + for(int i = 1; i < consumed; i++) + if(((a + i) & 0xFFFF) == SpecialA) + { + a = SpecialA; + strcpy(text_buffer, "BORKBORK"); + return; + } + + a = (a + consumed) & 0xFFFF; +} + +void WSwanDBG_ToggleSyntax(void) +{ + zedis.toggle_syntax_mode(); +} + + + +// +// +// + +static RegType V30MZ_Regs[] = +{ + { NEC_PC, "IP", "Instruction Pointer", 2 }, + { NEC_FLAGS, "PSW", "Program Status Word", 2 }, + { NEC_AW, "AX", "Accumulator", 2 }, + { NEC_BW, "BX", "Base", 2 }, + { NEC_CW, "CX", "Counter", 2 }, + { NEC_DW, "DX", "Data", 2 }, + { NEC_SP, "SP", "Stack Pointer", 2 }, + { NEC_BP, "BP", "Base Pointer", 2 }, + { NEC_IX, "SI", "Source Index", 2 }, + { NEC_IY, "DI", "Dest Index", 2 }, + { NEC_PS, "CS", "Program Segment", 2 }, + { NEC_SS, "SS", "Stack Segment", 2 }, + { NEC_DS0, "DS", "Data Segment", 2 }, + { NEC_DS1, "ES", "Extra Segment(Destination)", 2 }, + { 0, "", "", 0 }, +}; + + +static uint32 V30MZ_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + return(v30mz_get_reg(id)); +} + +static void V30MZ_SetRegister(const unsigned int id, uint32 value) +{ + v30mz_set_reg(id, value); +} + + +static RegGroupType V30MZRegsGroup = +{ + "V30MZ", + V30MZ_Regs, + V30MZ_GetRegister, + V30MZ_SetRegister, +}; + +// +// + +static RegType MiscRegs[] = +{ + { MEMORY_GSREG_ROMBBSLCT, "ROMBBSLCT", "ROM Bank Base Selector for 64KiB banks 0x4-0xF", 1 }, + { MEMORY_GSREG_BNK1SLCT, "BNK1SLCT", "???", 1 }, + { MEMORY_GSREG_BNK2SLCT, "BNK2SLCT", "ROM Bank Selector for 64KiB bank 0x2", 1 }, + { MEMORY_GSREG_BNK3SLCT, "BNK3SLCT", "ROM Bank Selector for 64KiB bank 0x3", 1 }, + + { 0x8000 | INT_GSREG_ISTATUS, "IStatus", "Interrupt Status", 1 }, + { 0x8000 | INT_GSREG_IENABLE, "IEnable", "Interrupt Enable", 1 }, + { 0x8000 | INT_GSREG_IVECTORBASE, "IVectorBase", "Interrupt Vector Base", 1 }, + { 0, "", "", 0 }, +}; + +static uint32 Misc_GetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + if(id & 0x8000) + return(WSwan_InterruptGetRegister(id & ~0x8000, special, special_len)); + else + return(WSwan_MemoryGetRegister(id, special, special_len)); +} + +static void Misc_SetRegister(const unsigned int id, uint32 value) +{ + if(id & 0x8000) + WSwan_InterruptSetRegister(id & ~0x8000, value); + else + WSwan_MemorySetRegister(id, value); +} + + +static RegGroupType MiscRegsGroup = +{ + "Misc", + MiscRegs, + Misc_GetRegister, + Misc_SetRegister, +}; + +void WSwanDBG_Init(void) +{ + MDFNDBG_AddRegGroup(&V30MZRegsGroup); + MDFNDBG_AddRegGroup(&MiscRegsGroup); +} + + +} diff --git a/libmednahawk/src/wswan/debug.h b/libmednahawk/src/wswan/debug.h new file mode 100644 index 0000000000..d826b2aed4 --- /dev/null +++ b/libmednahawk/src/wswan/debug.h @@ -0,0 +1,40 @@ +#ifndef __WSWAN_DEBUG_H +#define __WSWAN_DEBUG_H + +namespace MDFN_IEN_WSWAN +{ + + + +#ifdef WANT_DEBUGGER + +void WSwanDBG_SetCPUCallback(void (*callb)(uint32 PC)); +void WSwanDBG_SetBPCallback(void (*callb)(uint32 PC)); + +void WSwanDBG_FlushBreakPoints(int type); +void WSwanDBG_AddBreakPoint(int type, unsigned int A1, unsigned int A2, bool logical); + +uint32 WSwanDBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical); +void WSwanDBG_Disassemble(uint32 &a, uint32 SpecialA, char *); +uint32 WSwanDBG_GetRegister(const std::string &name, std::string *special); +void WSwanDBG_SetRegister(const std::string &name, uint32 value); + +void WSwanDBG_AddBranchTrace(uint16 old_CS, uint16 old_IP, uint16 CS, uint16 IP, bool interrupt); +std::vector WSwanDBG_GetBranchTrace(void); + +void WSwanDBG_CheckBP(int type, uint32 address, unsigned int len); + +void WSwanDBG_GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer); +void WSwanDBG_PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, const uint8 *Buffer); + + +void WSwanDBG_ToggleSyntax(void); +void WSwanDBG_IRQ(int level); + +void WSwanDBG_Init(void); + +#endif + +} + +#endif diff --git a/libmednahawk/src/wswan/dis/dis_decode.cpp b/libmednahawk/src/wswan/dis/dis_decode.cpp new file mode 100644 index 0000000000..82fee38757 --- /dev/null +++ b/libmednahawk/src/wswan/dis/dis_decode.cpp @@ -0,0 +1,256 @@ +///////////////////////////////////////////////////////////////////////// +// $Id: dis_decode.cc,v 1.32 2006/05/12 17:04:19 sshwarts Exp $ +///////////////////////////////////////////////////////////////////////// + +#include "disasm.h" +#include "dis_tables.h" + +#include +#include +#include + +x86_insn::x86_insn() +{ + extend8b = 0; + seg_override = NO_SEG_OVERRIDE; + prefixes = 0; + ilen = 0; + b1 = 0; + + modrm = mod = nnn = rm = 0; + sib = scale = index = base = 0; + displacement.displ32 = 0; +} + +#define OPCODE(entry) ((BxDisasmOpcodeInfo_t*) entry->OpcodeInfo) +#define OPCODE_TABLE(entry) ((BxDisasmOpcodeTable_t*) entry->OpcodeInfo) + +static const unsigned char instruction_has_modrm[512] = { + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, + /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, + /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, + /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, + /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0, + /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* A0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* B0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* C0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0, + /* D0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, + /* E0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + /* F0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1, + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ + /* ------------------------------- */ + 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0F 00 */ + 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1, /* 0F 10 */ + 1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 0F 20 */ + 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 0F 30 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 40 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 50 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 60 */ + 1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1, /* 0F 70 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0F 80 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 90 */ + 0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1, /* 0F A0 */ + 1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1, /* 0F B0 */ + 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 0F C0 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F D0 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F E0 */ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* 0F F0 */ + /* ------------------------------- */ + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ +}; + +unsigned disassembler::disasm(bx_address base, bx_address ip, const uint8 *instr, char *disbuf) +{ + x86_insn insn = decode(base, ip, instr, disbuf); + return insn.ilen; +} + +x86_insn disassembler::decode(bx_address base, bx_address ip, const uint8 *instr, char *disbuf) +{ + x86_insn insn; + const uint8 *instruction_begin = instruction = instr; + resolve_modrm = NULL; + unsigned b3 = 0; + + db_eip = ip; + db_base = base; // cs linear base (base for PM & cs<<4 for RM & VM) + + disbufptr = disbuf; // start sprintf()'ing into beginning of buffer + + for(;;) + { + if(insn.prefixes == 7) // V30MZ only supports 7 prefixes reliably + break; + insn.b1 = fetch_byte(); + insn.prefixes++; + + switch(insn.b1) { + case 0x26: // ES: + insn.seg_override = ES_REG; + continue; + + case 0x2e: // CS: + insn.seg_override = CS_REG; + continue; + + case 0x36: // SS: + insn.seg_override = SS_REG; + continue; + + case 0x3e: // DS: + insn.seg_override = DS_REG; + continue; + + case 0x64: // FS: + insn.seg_override = FS_REG; + continue; + + case 0x65: // GS: + insn.seg_override = GS_REG; + continue; + + case 0xf0: // lock + continue; + + case 0xf2: // repne + continue; + + case 0xf3: // rep + continue; + + // no more prefixes + default: + break; + } + + insn.prefixes--; + break; + } + + if (insn.b1 == 0x0f) + { + insn.b1 = 0x100 | fetch_byte(); + } + + const BxDisasmOpcodeTable_t *opcode_table, *entry; + + opcode_table = BxDisasmOpcodes16; + + entry = opcode_table + insn.b1; + + // will require 3rd byte for 3-byte opcode + if (entry->Attr & _GRP3BTAB) b3 = fetch_byte(); + + if (instruction_has_modrm[insn.b1]) + { + decode_modrm(&insn); + } + + int attr = entry->Attr; + while(attr) + { + switch(attr) { + case _GROUPN: + entry = &(OPCODE_TABLE(entry)[insn.nnn]); + break; + + case _SPLIT11B: + entry = &(OPCODE_TABLE(entry)[insn.mod != 3]); /* REG/MEM */ + break; + + case _GRPRM: + entry = &(OPCODE_TABLE(entry)[insn.rm]); + break; + + case _GRP3BTAB: + entry = &(OPCODE_TABLE(entry)[b3 >> 4]); + break; + + case _GRP3BOP: + entry = &(OPCODE_TABLE(entry)[b3 & 15]); + break; + + default: + printf("Internal disassembler error - unknown attribute !\n"); + return x86_insn(); + } + + /* get additional attributes from group table */ + attr = entry->Attr; + } + +#define BRANCH_NOT_TAKEN 0x2E +#define BRANCH_TAKEN 0x3E + + unsigned branch_hint = 0; + + // print prefixes + for(unsigned i=0;iIntelOpcode); + } + + // branch hint for jcc instructions + if ((insn.b1 >= 0x070 && insn.b1 <= 0x07F) || + (insn.b1 >= 0x180 && insn.b1 <= 0x18F)) + { + if (prefix_byte == BRANCH_NOT_TAKEN || prefix_byte == BRANCH_TAKEN) + branch_hint = prefix_byte; + } + } + + const BxDisasmOpcodeInfo_t *opcode = OPCODE(entry); + + // fix nop opcode + if (insn.b1 == 0x90) { + opcode = &Ia_nop; + } + + // print instruction disassembly + if (intel_mode) + print_disassembly_intel(&insn, opcode); + else + print_disassembly_att (&insn, opcode); + + if (branch_hint == BRANCH_NOT_TAKEN) + { + dis_sprintf(", not taken"); + } + else if (branch_hint == BRANCH_TAKEN) + { + dis_sprintf(", taken"); + } + + insn.ilen = (unsigned)(instruction - instruction_begin); + + return insn; +} + +void disassembler::dis_sprintf(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vsprintf(disbufptr, fmt, ap); + va_end(ap); + + disbufptr += strlen(disbufptr); +} + +void disassembler::dis_putc(char symbol) +{ + *disbufptr++ = symbol; + *disbufptr = 0; +} diff --git a/libmednahawk/src/wswan/dis/dis_groups.cpp b/libmednahawk/src/wswan/dis/dis_groups.cpp new file mode 100644 index 0000000000..891d38251a --- /dev/null +++ b/libmednahawk/src/wswan/dis/dis_groups.cpp @@ -0,0 +1,304 @@ +///////////////////////////////////////////////////////////////////////// +// $Id: dis_groups.cc,v 1.33 2006/08/13 09:40:07 sshwarts Exp $ +///////////////////////////////////////////////////////////////////////// + +#include "disasm.h" +#include +#include + +/* +#if BX_DEBUGGER +#include "../bx_debug/debug.h" +#endif +*/ + +void disassembler::Apw(const x86_insn *insn) +{ + uint16 imm16 = fetch_word(); + uint16 cs_selector = fetch_word(); + dis_sprintf("%04x:%04x", (unsigned) cs_selector, (unsigned) imm16); +} + +void disassembler::Apd(const x86_insn *insn) +{ + uint32 imm32 = fetch_dword(); + uint16 cs_selector = fetch_word(); + dis_sprintf("%04x:%08x", (unsigned) cs_selector, (unsigned) imm32); +} + +// 8-bit general purpose registers +void disassembler::AL(const x86_insn *insn) { dis_sprintf("%s", general_8bit_regname[rAX_REG]); } +void disassembler::CL(const x86_insn *insn) { dis_sprintf("%s", general_8bit_regname[rCX_REG]); } + +// 16-bit general purpose registers +void disassembler::AX(const x86_insn *insn) { + dis_sprintf("%s", general_16bit_regname[rAX_REG]); +} + +void disassembler::DX(const x86_insn *insn) { + dis_sprintf("%s", general_16bit_regname[rDX_REG]); +} + +// segment registers +void disassembler::CS(const x86_insn *insn) { dis_sprintf("%s", segment_name[CS_REG]); } +void disassembler::DS(const x86_insn *insn) { dis_sprintf("%s", segment_name[DS_REG]); } +void disassembler::ES(const x86_insn *insn) { dis_sprintf("%s", segment_name[ES_REG]); } +void disassembler::SS(const x86_insn *insn) { dis_sprintf("%s", segment_name[SS_REG]); } + +void disassembler::Sw(const x86_insn *insn) { dis_sprintf("%s", segment_name[insn->nnn]); } + +// test registers +void disassembler::Td(const x86_insn *insn) +{ + if (intel_mode) + dis_sprintf ("tr%d", insn->nnn); + else + dis_sprintf("%%tr%d", insn->nnn); +} + +// control register +void disassembler::Cd(const x86_insn *insn) +{ + if (intel_mode) + dis_sprintf ("cr%d", insn->nnn); + else + dis_sprintf("%%cr%d", insn->nnn); +} + +void disassembler::Cq(const x86_insn *insn) { Cd(insn); } + +// debug register +void disassembler::Dd(const x86_insn *insn) +{ + if (intel_mode) + dis_sprintf ("db%d", insn->nnn); + else + dis_sprintf("%%db%d", insn->nnn); +} + +void disassembler::Dq(const x86_insn *insn) { Dd(insn); } + +// 8-bit general purpose register +void disassembler::R8(const x86_insn *insn) +{ + unsigned reg = (insn->b1 & 7); + + dis_sprintf("%s", general_8bit_regname[reg]); +} + +// 16-bit general purpose register +void disassembler::RX(const x86_insn *insn) +{ + dis_sprintf("%s", general_16bit_regname[(insn->b1 & 7)]); +} + +// general purpose register or memory operand +void disassembler::Eb(const x86_insn *insn) +{ + if (insn->mod == 3) { + dis_sprintf("%s", general_8bit_regname[insn->rm]); + } + else + (this->*resolve_modrm)(insn, B_SIZE); +} + +void disassembler::Ew(const x86_insn *insn) +{ + if (insn->mod == 3) + dis_sprintf("%s", general_16bit_regname[insn->rm]); + else + (this->*resolve_modrm)(insn, W_SIZE); +} + +// general purpose register +void disassembler::Gb(const x86_insn *insn) +{ + dis_sprintf("%s", general_8bit_regname[insn->nnn]); +} + +void disassembler::Gw(const x86_insn *insn) +{ + dis_sprintf("%s", general_16bit_regname[insn->nnn]); +} + +// immediate +void disassembler::I1(const x86_insn *insn) +{ + if (! intel_mode) dis_putc('$'); + dis_putc ('1'); +} + +void disassembler::Ib(const x86_insn *insn) +{ + if (! intel_mode) dis_putc('$'); + dis_sprintf("0x%02x", (unsigned) fetch_byte()); +} + +void disassembler::Iw(const x86_insn *insn) +{ + if (! intel_mode) dis_putc('$'); + dis_sprintf("0x%04x", (unsigned) fetch_word()); +} + +void disassembler::IwIb(const x86_insn *insn) +{ + uint16 iw = fetch_word(); + uint8 ib = fetch_byte(); + + if (intel_mode) { + dis_sprintf("0x%04x, 0x%02x", iw, ib); + } + else { + dis_sprintf("$0x%02x, $0x%04x", ib, iw); + } +} + +// sign extended immediate +void disassembler::sIbw(const x86_insn *insn) +{ + if (! intel_mode) dis_putc('$'); + uint16 imm16 = (int8) fetch_byte(); + dis_sprintf("0x%04x", (unsigned) imm16); +} + +// sign extended immediate +void disassembler::sIbd(const x86_insn *insn) +{ + if (! intel_mode) dis_putc('$'); + uint32 imm32 = (int8) fetch_byte(); + dis_sprintf ("0x%08x", (unsigned) imm32); +} + +// 16-bit general purpose register +void disassembler::Rw(const x86_insn *insn) +{ + dis_sprintf("%s", general_16bit_regname[insn->rm]); +} + +// direct memory access +void disassembler::OP_O(const x86_insn *insn, unsigned size) +{ + const char *seg; + + if (insn->is_seg_override()) + seg = segment_name[insn->seg_override]; + else + seg = segment_name[DS_REG]; + + print_datasize(size); + + uint16 imm16 = fetch_word(); + dis_sprintf("%s:0x%x", seg, (unsigned) imm16); +} + +void disassembler::Ob(const x86_insn *insn) { OP_O(insn, B_SIZE); } +void disassembler::Ow(const x86_insn *insn) { OP_O(insn, W_SIZE); } +void disassembler::Od(const x86_insn *insn) { OP_O(insn, D_SIZE); } +void disassembler::Oq(const x86_insn *insn) { OP_O(insn, Q_SIZE); } + +// memory operand +void disassembler::OP_M(const x86_insn *insn, unsigned size) +{ + if(insn->mod == 3) + dis_sprintf("(bad)"); + else + (this->*resolve_modrm)(insn, size); +} + +void disassembler::Ma(const x86_insn *insn) { OP_M(insn, X_SIZE); } +void disassembler::Mp(const x86_insn *insn) { OP_M(insn, X_SIZE); } +void disassembler::Ms(const x86_insn *insn) { OP_M(insn, X_SIZE); } +void disassembler::Mx(const x86_insn *insn) { OP_M(insn, X_SIZE); } + +void disassembler::Mb(const x86_insn *insn) { OP_M(insn, B_SIZE); } +void disassembler::Mw(const x86_insn *insn) { OP_M(insn, W_SIZE); } +void disassembler::Md(const x86_insn *insn) { OP_M(insn, D_SIZE); } +void disassembler::Mq(const x86_insn *insn) { OP_M(insn, Q_SIZE); } +void disassembler::Mt(const x86_insn *insn) { OP_M(insn, T_SIZE); } + +void disassembler::Mdq(const x86_insn *insn) { OP_M(insn, O_SIZE); } +void disassembler::Mps(const x86_insn *insn) { OP_M(insn, O_SIZE); } +void disassembler::Mpd(const x86_insn *insn) { OP_M(insn, O_SIZE); } + +// string instructions +void disassembler::OP_X(const x86_insn *insn, unsigned size) +{ + const char *rsi, *seg; + + rsi = general_16bit_regname[rSI_REG]; + + if (insn->is_seg_override()) + seg = segment_name[insn->seg_override]; + else + seg = segment_name[DS_REG]; + + print_datasize(size); + + if (intel_mode) + dis_sprintf("%s:[%s]", seg, rsi); + else + dis_sprintf("%s:(%s)", seg, rsi); +} + +void disassembler::Xb(const x86_insn *insn) { OP_X(insn, B_SIZE); } +void disassembler::Xw(const x86_insn *insn) { OP_X(insn, W_SIZE); } +void disassembler::Xd(const x86_insn *insn) { OP_X(insn, D_SIZE); } +void disassembler::Xq(const x86_insn *insn) { OP_X(insn, Q_SIZE); } + +void disassembler::OP_Y(const x86_insn *insn, unsigned size) +{ + const char *rdi; + + rdi = general_16bit_regname[rDI_REG]; + + print_datasize(size); + + if (intel_mode) + dis_sprintf("%s:[%s]", segment_name[ES_REG], rdi); + else + dis_sprintf("%s:(%s)", segment_name[ES_REG], rdi); +} + +void disassembler::Yb(const x86_insn *insn) { OP_Y(insn, B_SIZE); } +void disassembler::Yw(const x86_insn *insn) { OP_Y(insn, W_SIZE); } +void disassembler::Yd(const x86_insn *insn) { OP_Y(insn, D_SIZE); } +void disassembler::Yq(const x86_insn *insn) { OP_Y(insn, Q_SIZE); } + +#define BX_JUMP_TARGET_NOT_REQ ((bx_address)(-1)) + +// jump offset +void disassembler::Jb(const x86_insn *insn) +{ + int8 imm8 = (int8) fetch_byte(); + + uint16 imm16 = (int16) imm8; + dis_sprintf(".+0x%04x", (unsigned) imm16); + + if (db_base != BX_JUMP_TARGET_NOT_REQ) { + uint16 target = (db_eip + (int16) imm16) & 0xffff; + dis_sprintf(" (0x%08x)", target + db_base); + } +} + +void disassembler::Jw(const x86_insn *insn) +{ + uint16 imm16 = (int16) fetch_word(); + dis_sprintf(".+0x%04x", (unsigned) imm16); + + if (db_base != BX_JUMP_TARGET_NOT_REQ) { + uint16 target = (db_eip + (int16) imm16) & 0xffff; + dis_sprintf(" (0x%08x)", target + db_base); + } +} + +void disassembler::Jd(const x86_insn *insn) +{ + int32 imm32 = (int32) fetch_dword(); + + dis_sprintf(".+0x%08x", (unsigned) imm32); + + if (db_base != BX_JUMP_TARGET_NOT_REQ) { + uint32 target = db_eip + (int32) imm32; target += db_base; + dis_sprintf(" (0x%08x)", target); + } +} diff --git a/libmednahawk/src/wswan/dis/dis_tables.h b/libmednahawk/src/wswan/dis/dis_tables.h new file mode 100644 index 0000000000..ba3ccf52b9 --- /dev/null +++ b/libmednahawk/src/wswan/dis/dis_tables.h @@ -0,0 +1,148 @@ +///////////////////////////////////////////////////////////////////////// +// $Id: dis_tables.h,v 1.29 2006/04/27 15:11:45 sshwarts Exp $ +///////////////////////////////////////////////////////////////////////// + +#ifndef _BX_DISASM_TABLES_ +#define _BX_DISASM_TABLES_ + +// opcode table attributes +#define _GROUPN 1 +#define _SPLIT11B 2 +#define _GRPFP 3 +#define _GRPSSE 5 +#define _GRPRM 6 +#define _GRP3BOP 7 +#define _GRP3BTAB 8 + +/* ************************************************************************ */ +#define GRPSSE(n) _GRPSSE, BxDisasmGroupSSE_##n +#define GRPN(n) _GROUPN, BxDisasmGroup##n +#define GRPRM(n) _GRPRM, BxDisasmGroupRm##n +#define GRPMOD(n) _SPLIT11B, BxDisasmGroupMod##n +#define GRPFP(n) _GRPFP, BxDisasmFPGroup##n +#define GR3BOP(n) _GRP3BOP, BxDisasm3ByteOp##n +#define GR3BTAB(n) _GRP3BTAB, BxDisasm3ByteTable##n +/* ************************************************************************ */ + +#define Apw &disassembler::Apw +#define Apd &disassembler::Apd + +#define AL &disassembler::AL +#define CL &disassembler::CL +#define AX &disassembler::AX +#define DX &disassembler::DX + +#define EAX &disassembler::EAX +#define RAX &disassembler::RAX + +#define CS &disassembler::CS +#define DS &disassembler::DS +#define ES &disassembler::ES +#define SS &disassembler::SS +#define FS &disassembler::FS +#define GS &disassembler::GS + +#define Sw &disassembler::Sw + +#define Td &disassembler::Td + +#define Cd &disassembler::Cd +#define Cq &disassembler::Cq + +#define Dd &disassembler::Dd +#define Dq &disassembler::Dq + +#define R8 &disassembler::R8 +#define RX &disassembler::RX + +#define Eb &disassembler::Eb +#define Ew &disassembler::Ew +#define Ed &disassembler::Ed +#define Eq &disassembler::Eq + +#define Gb &disassembler::Gb +#define Gw &disassembler::Gw +#define Gd &disassembler::Gd +#define Gq &disassembler::Gq + +#define I1 &disassembler::I1 +#define Ib &disassembler::Ib +#define Iw &disassembler::Iw +#define Id &disassembler::Id +#define Iq &disassembler::Iq + +#define IwIb &disassembler::IwIb + +#define sIbw &disassembler::sIbw +#define sIbd &disassembler::sIbd +#define sIbq &disassembler::sIbq +#define sIdq &disassembler::sIdq + +#define ST0 &disassembler::ST0 +#define STi &disassembler::STi + +#define Rw &disassembler::Rw +#define Rd &disassembler::Rd +#define Rq &disassembler::Rq + +#define Pq &disassembler::Pq +#define Qd &disassembler::Qd +#define Qq &disassembler::Qq +#define Nq &disassembler::Nq + +#define Vq &disassembler::Vq +#define Vdq &disassembler::Vdq +#define Vss &disassembler::Vss +#define Vsd &disassembler::Vsd +#define Vps &disassembler::Vps +#define Vpd &disassembler::Vpd +#define Udq &disassembler::Udq + +#define Wq &disassembler::Wq +#define Wdq &disassembler::Wdq +#define Wss &disassembler::Wss +#define Wsd &disassembler::Wsd +#define Wps &disassembler::Wps +#define Wpd &disassembler::Wpd + +#define Ob &disassembler::Ob +#define Ow &disassembler::Ow +#define Od &disassembler::Od +#define Oq &disassembler::Oq + +#define Ma &disassembler::Ma +#define Mp &disassembler::Mp +#define Ms &disassembler::Ms +#define Mx &disassembler::Mx +#define Mb &disassembler::Mb +#define Mw &disassembler::Mw +#define Md &disassembler::Md +#define Mq &disassembler::Mq +#define Mt &disassembler::Mt +#define Mdq &disassembler::Mdq +#define Mps &disassembler::Mps +#define Mpd &disassembler::Mpd + +#define Xb &disassembler::Xb +#define Xw &disassembler::Xw +#define Xd &disassembler::Xd +#define Xq &disassembler::Xq + +#define Yb &disassembler::Yb +#define Yw &disassembler::Yw +#define Yd &disassembler::Yd +#define Yq &disassembler::Yq + +#define Jb &disassembler::Jb +#define Jw &disassembler::Jw +#define Jd &disassembler::Jd + +#define XX 0 + +const struct BxDisasmOpcodeInfo_t +#include "opcodes.inc" +#include "dis_tables.inc" + +#undef XX + +#endif diff --git a/libmednahawk/src/wswan/dis/dis_tables.inc b/libmednahawk/src/wswan/dis/dis_tables.inc new file mode 100644 index 0000000000..24e87941f8 --- /dev/null +++ b/libmednahawk/src/wswan/dis/dis_tables.inc @@ -0,0 +1,667 @@ +/* ************************************************************************ */ +/* Opcode GroupN */ + +static BxDisasmOpcodeTable_t BxDisasmGroupG1EbIb[8] = { + /* 0 */ { 0, &Ia_addb_Eb_Ib }, + /* 1 */ { 0, &Ia_orb_Eb_Ib }, + /* 2 */ { 0, &Ia_adcb_Eb_Ib }, + /* 3 */ { 0, &Ia_sbbb_Eb_Ib }, + /* 4 */ { 0, &Ia_andb_Eb_Ib }, + /* 5 */ { 0, &Ia_subb_Eb_Ib }, + /* 6 */ { 0, &Ia_xorb_Eb_Ib }, + /* 7 */ { 0, &Ia_cmpb_Eb_Ib } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG1EwIw[8] = { + /* 0 */ { 0, &Ia_addw_Ew_Iw }, + /* 1 */ { 0, &Ia_orw_Ew_Iw }, + /* 2 */ { 0, &Ia_adcw_Ew_Iw }, + /* 3 */ { 0, &Ia_sbbw_Ew_Iw }, + /* 4 */ { 0, &Ia_andw_Ew_Iw }, + /* 5 */ { 0, &Ia_subw_Ew_Iw }, + /* 6 */ { 0, &Ia_xorw_Ew_Iw }, + /* 7 */ { 0, &Ia_cmpw_Ew_Iw } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG1EwIb[8] = { + /* 0 */ { 0, &Ia_addw_Ew_sIb }, // sign-extend byte + /* 1 */ { 0, &Ia_orw_Ew_sIb }, + /* 2 */ { 0, &Ia_adcw_Ew_sIb }, + /* 3 */ { 0, &Ia_sbbw_Ew_sIb }, + /* 4 */ { 0, &Ia_andw_Ew_sIb }, + /* 5 */ { 0, &Ia_subw_Ew_sIb }, + /* 6 */ { 0, &Ia_xorw_Ew_sIb }, + /* 7 */ { 0, &Ia_cmpw_Ew_sIb } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG2Eb[8] = { + /* 0 */ { 0, &Ia_rolb_Eb_Ib }, + /* 1 */ { 0, &Ia_rorb_Eb_Ib }, + /* 2 */ { 0, &Ia_rclb_Eb_Ib }, + /* 3 */ { 0, &Ia_rcrb_Eb_Ib }, + /* 4 */ { 0, &Ia_shlb_Eb_Ib }, + /* 5 */ { 0, &Ia_shrb_Eb_Ib }, + /* 6 */ { 0, &Ia_shlb_Eb_Ib }, + /* 7 */ { 0, &Ia_sarb_Eb_Ib } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG2EbI1[8] = { + /* 0 */ { 0, &Ia_rolb_Eb_I1 }, + /* 1 */ { 0, &Ia_rorb_Eb_I1 }, + /* 2 */ { 0, &Ia_rclb_Eb_I1 }, + /* 3 */ { 0, &Ia_rcrb_Eb_I1 }, + /* 4 */ { 0, &Ia_shlb_Eb_I1 }, + /* 5 */ { 0, &Ia_shrb_Eb_I1 }, + /* 6 */ { 0, &Ia_shlb_Eb_I1 }, + /* 7 */ { 0, &Ia_sarb_Eb_I1 } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG2EbCL[8] = { + /* 0 */ { 0, &Ia_rolb_Eb_CL }, + /* 1 */ { 0, &Ia_rorb_Eb_CL }, + /* 2 */ { 0, &Ia_rclb_Eb_CL }, + /* 3 */ { 0, &Ia_rcrb_Eb_CL }, + /* 4 */ { 0, &Ia_shlb_Eb_CL }, + /* 5 */ { 0, &Ia_shrb_Eb_CL }, + /* 6 */ { 0, &Ia_shlb_Eb_CL }, + /* 7 */ { 0, &Ia_sarb_Eb_CL } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG2Ew[8] = { + /* 0 */ { 0, &Ia_rolw_Ew_Ib }, + /* 1 */ { 0, &Ia_rorw_Ew_Ib }, + /* 2 */ { 0, &Ia_rclw_Ew_Ib }, + /* 3 */ { 0, &Ia_rcrw_Ew_Ib }, + /* 4 */ { 0, &Ia_shlw_Ew_Ib }, + /* 5 */ { 0, &Ia_shrw_Ew_Ib }, + /* 6 */ { 0, &Ia_shlw_Ew_Ib }, + /* 7 */ { 0, &Ia_sarw_Ew_Ib } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG2EwI1[8] = { + /* 0 */ { 0, &Ia_rolw_Ew_I1 }, + /* 1 */ { 0, &Ia_rorw_Ew_I1 }, + /* 2 */ { 0, &Ia_rclw_Ew_I1 }, + /* 3 */ { 0, &Ia_rcrw_Ew_I1 }, + /* 4 */ { 0, &Ia_shlw_Ew_I1 }, + /* 5 */ { 0, &Ia_shrw_Ew_I1 }, + /* 6 */ { 0, &Ia_shlw_Ew_I1 }, + /* 7 */ { 0, &Ia_sarw_Ew_I1 } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG2EwCL[8] = { + /* 0 */ { 0, &Ia_rolw_Ew_CL }, + /* 1 */ { 0, &Ia_rorw_Ew_CL }, + /* 2 */ { 0, &Ia_rclw_Ew_CL }, + /* 3 */ { 0, &Ia_rcrw_Ew_CL }, + /* 4 */ { 0, &Ia_shlw_Ew_CL }, + /* 5 */ { 0, &Ia_shrw_Ew_CL }, + /* 6 */ { 0, &Ia_shlw_Ew_CL }, + /* 7 */ { 0, &Ia_sarw_Ew_CL } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG3Eb[8] = { + /* 0 */ { 0, &Ia_testb_Eb_Ib }, + /* 1 */ { 0, &Ia_testb_Eb_Ib }, + /* 2 */ { 0, &Ia_notb_Eb }, + /* 3 */ { 0, &Ia_negb_Eb }, + /* 4 */ { 0, &Ia_mulb_AL_Eb }, + /* 5 */ { 0, &Ia_imulb_AL_Eb }, + /* 6 */ { 0, &Ia_divb_AL_Eb }, + /* 7 */ { 0, &Ia_idivb_AL_Eb } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG3Ew[8] = { + /* 0 */ { 0, &Ia_testw_Ew_Iw }, + /* 1 */ { 0, &Ia_testw_Ew_Iw }, + /* 2 */ { 0, &Ia_notw_Ew }, + /* 3 */ { 0, &Ia_negw_Ew }, + /* 4 */ { 0, &Ia_mulw_AX_Ew }, + /* 5 */ { 0, &Ia_imulw_AX_Ew }, + /* 6 */ { 0, &Ia_divw_AX_Ew }, + /* 7 */ { 0, &Ia_idivw_AX_Ew } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG4[8] = { + /* 0 */ { 0, &Ia_incb_Eb }, + /* 1 */ { 0, &Ia_decb_Eb }, + /* 2 */ { 0, &Ia_Invalid }, + /* 3 */ { 0, &Ia_Invalid }, + /* 4 */ { 0, &Ia_Invalid }, + /* 5 */ { 0, &Ia_Invalid }, + /* 6 */ { 0, &Ia_Invalid }, + /* 7 */ { 0, &Ia_Invalid } +}; + +static BxDisasmOpcodeTable_t BxDisasmGroupG5w[8] = { + /* 0 */ { 0, &Ia_incw_Ew }, + /* 1 */ { 0, &Ia_decw_Ew }, + /* 2 */ { 0, &Ia_call_Ew }, + /* 3 */ { 0, &Ia_lcall_Mp }, + /* 4 */ { 0, &Ia_jmp_Ew }, + /* 5 */ { 0, &Ia_ljmp_Mp }, + /* 6 */ { 0, &Ia_pushw_Ew }, + /* 7 */ { 0, &Ia_Invalid } +}; + +/* ************************************************************************ */ +/* 16-bit operand size */ + +static BxDisasmOpcodeTable_t BxDisasmOpcodes16[256*2] = { + // 256 entries for single byte opcodes + /* 00 */ { 0, &Ia_addb_Eb_Gb }, + /* 01 */ { 0, &Ia_addw_Ew_Gw }, + /* 02 */ { 0, &Ia_addb_Gb_Eb }, + /* 03 */ { 0, &Ia_addw_Gw_Ew }, + /* 04 */ { 0, &Ia_addb_AL_Ib }, + /* 05 */ { 0, &Ia_addw_AX_Iw }, + /* 06 */ { 0, &Ia_pushw_ES }, + /* 07 */ { 0, &Ia_popw_ES }, + /* 08 */ { 0, &Ia_orb_Eb_Gb }, + /* 09 */ { 0, &Ia_orw_Ew_Gw }, + /* 0A */ { 0, &Ia_orb_Gb_Eb }, + /* 0B */ { 0, &Ia_orw_Gw_Ew }, + /* 0C */ { 0, &Ia_orb_AL_Ib }, + /* 0D */ { 0, &Ia_orw_AX_Iw }, + /* 0E */ { 0, &Ia_pushw_CS }, + /* 0F */ { 0, &Ia_error }, // 2 byte escape + /* 10 */ { 0, &Ia_adcb_Eb_Gb }, + /* 11 */ { 0, &Ia_adcw_Ew_Gw }, + /* 12 */ { 0, &Ia_adcb_Gb_Eb }, + /* 13 */ { 0, &Ia_adcw_Gw_Ew }, + /* 14 */ { 0, &Ia_adcb_AL_Ib }, + /* 15 */ { 0, &Ia_adcw_AX_Iw }, + /* 16 */ { 0, &Ia_pushw_SS }, + /* 17 */ { 0, &Ia_popw_SS }, + /* 18 */ { 0, &Ia_sbbb_Eb_Gb }, + /* 19 */ { 0, &Ia_sbbw_Ew_Gw }, + /* 1A */ { 0, &Ia_sbbb_Gb_Eb }, + /* 1B */ { 0, &Ia_sbbw_Gw_Ew }, + /* 1C */ { 0, &Ia_sbbb_AL_Ib }, + /* 1D */ { 0, &Ia_sbbw_AX_Iw }, + /* 1E */ { 0, &Ia_pushw_DS }, + /* 1F */ { 0, &Ia_popw_DS }, + /* 20 */ { 0, &Ia_andb_Eb_Gb }, + /* 21 */ { 0, &Ia_andw_Ew_Gw }, + /* 22 */ { 0, &Ia_andb_Gb_Eb }, + /* 23 */ { 0, &Ia_andw_Gw_Ew }, + /* 24 */ { 0, &Ia_andb_AL_Ib }, + /* 25 */ { 0, &Ia_andw_AX_Iw }, + /* 26 */ { 0, &Ia_prefix_es }, // ES: + /* 27 */ { 0, &Ia_daa }, + /* 28 */ { 0, &Ia_subb_Eb_Gb }, + /* 29 */ { 0, &Ia_subw_Ew_Gw }, + /* 2A */ { 0, &Ia_subb_Gb_Eb }, + /* 2B */ { 0, &Ia_subw_Gw_Ew }, + /* 2C */ { 0, &Ia_subb_AL_Ib }, + /* 2D */ { 0, &Ia_subw_AX_Iw }, + /* 2E */ { 0, &Ia_prefix_cs }, // CS: + /* 2F */ { 0, &Ia_das }, + /* 30 */ { 0, &Ia_xorb_Eb_Gb }, + /* 31 */ { 0, &Ia_xorw_Ew_Gw }, + /* 32 */ { 0, &Ia_xorb_Gb_Eb }, + /* 33 */ { 0, &Ia_xorw_Gw_Ew }, + /* 34 */ { 0, &Ia_xorb_AL_Ib }, + /* 35 */ { 0, &Ia_xorw_AX_Iw }, + /* 36 */ { 0, &Ia_prefix_ss }, // SS: + /* 37 */ { 0, &Ia_aaa }, + /* 38 */ { 0, &Ia_cmpb_Eb_Gb }, + /* 39 */ { 0, &Ia_cmpw_Ew_Gw }, + /* 3A */ { 0, &Ia_cmpb_Gb_Eb }, + /* 3B */ { 0, &Ia_cmpw_Gw_Ew }, + /* 3C */ { 0, &Ia_cmpb_AL_Ib }, + /* 3D */ { 0, &Ia_cmpw_AX_Iw }, + /* 3E */ { 0, &Ia_prefix_ds }, // DS: + /* 3F */ { 0, &Ia_aas }, + /* 40 */ { 0, &Ia_incw_RX }, + /* 41 */ { 0, &Ia_incw_RX }, + /* 42 */ { 0, &Ia_incw_RX }, + /* 43 */ { 0, &Ia_incw_RX }, + /* 44 */ { 0, &Ia_incw_RX }, + /* 45 */ { 0, &Ia_incw_RX }, + /* 46 */ { 0, &Ia_incw_RX }, + /* 47 */ { 0, &Ia_incw_RX }, + /* 48 */ { 0, &Ia_decw_RX }, + /* 49 */ { 0, &Ia_decw_RX }, + /* 4A */ { 0, &Ia_decw_RX }, + /* 4B */ { 0, &Ia_decw_RX }, + /* 4C */ { 0, &Ia_decw_RX }, + /* 4D */ { 0, &Ia_decw_RX }, + /* 4E */ { 0, &Ia_decw_RX }, + /* 4F */ { 0, &Ia_decw_RX }, + /* 50 */ { 0, &Ia_pushw_RX }, + /* 51 */ { 0, &Ia_pushw_RX }, + /* 52 */ { 0, &Ia_pushw_RX }, + /* 53 */ { 0, &Ia_pushw_RX }, + /* 54 */ { 0, &Ia_pushw_RX }, + /* 55 */ { 0, &Ia_pushw_RX }, + /* 56 */ { 0, &Ia_pushw_RX }, + /* 57 */ { 0, &Ia_pushw_RX }, + /* 58 */ { 0, &Ia_popw_RX }, + /* 59 */ { 0, &Ia_popw_RX }, + /* 5A */ { 0, &Ia_popw_RX }, + /* 5B */ { 0, &Ia_popw_RX }, + /* 5C */ { 0, &Ia_popw_RX }, + /* 5D */ { 0, &Ia_popw_RX }, + /* 5E */ { 0, &Ia_popw_RX }, + /* 5F */ { 0, &Ia_popw_RX }, + /* 60 */ { 0, &Ia_pushaw }, + /* 61 */ { 0, &Ia_popaw }, + /* 62 */ { 0, &Ia_boundw_Gw_Ma }, + /* 63 */ { 0, &Ia_Invalid }, + /* 64 */ { 0, &Ia_Invalid }, // FS: + /* 65 */ { 0, &Ia_Invalid }, + /* 66 */ { 0, &Ia_Invalid }, + /* 67 */ { 0, &Ia_Invalid }, + /* 68 */ { 0, &Ia_pushw_Iw }, + /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw }, + /* 6A */ { 0, &Ia_pushw_sIb }, + /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb }, + /* 6C */ { 0, &Ia_insb_Yb_DX }, + /* 6D */ { 0, &Ia_insw_Yw_DX }, + /* 6E */ { 0, &Ia_outsb_DX_Xb }, + /* 6F */ { 0, &Ia_outsw_DX_Xw }, + /* 70 */ { 0, &Ia_jo_Jb }, + /* 71 */ { 0, &Ia_jno_Jb }, + /* 72 */ { 0, &Ia_jb_Jb }, + /* 73 */ { 0, &Ia_jnb_Jb }, + /* 74 */ { 0, &Ia_jz_Jb }, + /* 75 */ { 0, &Ia_jnz_Jb }, + /* 76 */ { 0, &Ia_jbe_Jb }, + /* 77 */ { 0, &Ia_jnbe_Jb }, + /* 78 */ { 0, &Ia_js_Jb }, + /* 79 */ { 0, &Ia_jns_Jb }, + /* 7A */ { 0, &Ia_jp_Jb }, + /* 7B */ { 0, &Ia_jnp_Jb }, + /* 7C */ { 0, &Ia_jl_Jb }, + /* 7D */ { 0, &Ia_jnl_Jb }, + /* 7E */ { 0, &Ia_jle_Jb }, + /* 7F */ { 0, &Ia_jnle_Jb }, + /* 80 */ { GRPN(G1EbIb) }, + /* 81 */ { GRPN(G1EwIw) }, + /* 82 */ { GRPN(G1EbIb) }, + /* 83 */ { GRPN(G1EwIb) }, + /* 84 */ { 0, &Ia_testb_Eb_Gb }, + /* 85 */ { 0, &Ia_testw_Ew_Gw }, + /* 86 */ { 0, &Ia_xchgb_Eb_Gb }, + /* 87 */ { 0, &Ia_xchgw_Ew_Gw }, + /* 88 */ { 0, &Ia_movb_Eb_Gb }, + /* 89 */ { 0, &Ia_movw_Ew_Gw }, + /* 8A */ { 0, &Ia_movb_Gb_Eb }, + /* 8B */ { 0, &Ia_movw_Gw_Ew }, + /* 8C */ { 0, &Ia_movw_Ew_Sw }, + /* 8D */ { 0, &Ia_leaw_Gw_Mw }, + /* 8E */ { 0, &Ia_movw_Sw_Ew }, + /* 8F */ { 0, &Ia_popw_Ew }, + /* 90 */ { 0, &Ia_nop }, + /* 91 */ { 0, &Ia_xchgw_RX_AX }, + /* 92 */ { 0, &Ia_xchgw_RX_AX }, + /* 93 */ { 0, &Ia_xchgw_RX_AX }, + /* 94 */ { 0, &Ia_xchgw_RX_AX }, + /* 95 */ { 0, &Ia_xchgw_RX_AX }, + /* 96 */ { 0, &Ia_xchgw_RX_AX }, + /* 97 */ { 0, &Ia_xchgw_RX_AX }, + /* 98 */ { 0, &Ia_cbw }, + /* 99 */ { 0, &Ia_cwd }, + /* 9A */ { 0, &Ia_lcall_Apw }, + /* 9B */ { 0, &Ia_poll }, + /* 9C */ { 0, &Ia_pushfw }, + /* 9D */ { 0, &Ia_popfw }, + /* 9E */ { 0, &Ia_sahf }, + /* 9F */ { 0, &Ia_lahf }, + /* A0 */ { 0, &Ia_movb_AL_Ob }, + /* A1 */ { 0, &Ia_movw_AX_Ow }, + /* A2 */ { 0, &Ia_movb_Ob_AL }, + /* A3 */ { 0, &Ia_movw_Ow_AX }, + /* A4 */ { 0, &Ia_movsb_Yb_Xb }, + /* A5 */ { 0, &Ia_movsw_Yw_Xw }, + /* A6 */ { 0, &Ia_cmpsb_Yb_Xb }, + /* A7 */ { 0, &Ia_cmpsw_Yw_Xw }, + /* A8 */ { 0, &Ia_testb_AL_Ib }, + /* A9 */ { 0, &Ia_testw_AX_Iw }, + /* AA */ { 0, &Ia_stosb_Yb_AL }, + /* AB */ { 0, &Ia_stosw_Yw_AX }, + /* AC */ { 0, &Ia_lodsb_AL_Xb }, + /* AD */ { 0, &Ia_lodsw_AX_Xw }, + /* AE */ { 0, &Ia_scasb_Yb_AL }, + /* AF */ { 0, &Ia_scasw_Yw_AX }, + /* B0 */ { 0, &Ia_movb_R8_Ib }, + /* B1 */ { 0, &Ia_movb_R8_Ib }, + /* B2 */ { 0, &Ia_movb_R8_Ib }, + /* B3 */ { 0, &Ia_movb_R8_Ib }, + /* B4 */ { 0, &Ia_movb_R8_Ib }, + /* B5 */ { 0, &Ia_movb_R8_Ib }, + /* B6 */ { 0, &Ia_movb_R8_Ib }, + /* B7 */ { 0, &Ia_movb_R8_Ib }, + /* B8 */ { 0, &Ia_movw_RX_Iw }, + /* B9 */ { 0, &Ia_movw_RX_Iw }, + /* BA */ { 0, &Ia_movw_RX_Iw }, + /* BB */ { 0, &Ia_movw_RX_Iw }, + /* BC */ { 0, &Ia_movw_RX_Iw }, + /* BD */ { 0, &Ia_movw_RX_Iw }, + /* BE */ { 0, &Ia_movw_RX_Iw }, + /* BF */ { 0, &Ia_movw_RX_Iw }, + /* C0 */ { GRPN(G2Eb) }, + /* C1 */ { GRPN(G2Ew) }, + /* C2 */ { 0, &Ia_ret_Iw }, + /* C3 */ { 0, &Ia_ret }, + /* C4 */ { 0, &Ia_lesw_Gw_Mp }, + /* C5 */ { 0, &Ia_ldsw_Gw_Mp }, + /* C6 */ { 0, &Ia_movb_Eb_Ib }, + /* C7 */ { 0, &Ia_movw_Ew_Iw }, + /* C8 */ { 0, &Ia_enter }, + /* C9 */ { 0, &Ia_leave }, + /* CA */ { 0, &Ia_lret_Iw }, + /* CB */ { 0, &Ia_lret }, + /* CC */ { 0, &Ia_int3 }, + /* CD */ { 0, &Ia_int_Ib }, + /* CE */ { 0, &Ia_into }, + /* CF */ { 0, &Ia_iretw }, + /* D0 */ { GRPN(G2EbI1) }, + /* D1 */ { GRPN(G2EwI1) }, + /* D2 */ { GRPN(G2EbCL) }, + /* D3 */ { GRPN(G2EwCL) }, + /* D4 */ { 0, &Ia_aam }, + /* D5 */ { 0, &Ia_aad }, + /* D6 */ { 0, &Ia_salc }, + /* D7 */ { 0, &Ia_xlat }, + /* D8 */ { 0, &Ia_fpo1 }, + /* D9 */ { 0, &Ia_fpo1 }, + /* DA */ { 0, &Ia_fpo1 }, + /* DB */ { 0, &Ia_fpo1 }, + /* DC */ { 0, &Ia_fpo1 }, + /* DD */ { 0, &Ia_fpo1 }, + /* DE */ { 0, &Ia_fpo1 }, + /* DF */ { 0, &Ia_fpo1 }, + /* E0 */ { 0, &Ia_loopne_Jb }, + /* E1 */ { 0, &Ia_loope_Jb }, + /* E2 */ { 0, &Ia_loop_Jb }, + /* E3 */ { 0, &Ia_jcxz_Jb }, + /* E4 */ { 0, &Ia_inb_AL_Ib }, + /* E5 */ { 0, &Ia_inw_AX_Ib }, + /* E6 */ { 0, &Ia_outb_Ib_AL }, + /* E7 */ { 0, &Ia_outw_Ib_AX }, + /* E8 */ { 0, &Ia_call_Jw }, + /* E9 */ { 0, &Ia_jmp_Jw }, + /* EA */ { 0, &Ia_ljmp_Apw }, + /* EB */ { 0, &Ia_jmp_Jb }, + /* EC */ { 0, &Ia_inb_AL_DX }, + /* ED */ { 0, &Ia_inw_AX_DX }, + /* EE */ { 0, &Ia_outb_DX_AL }, + /* EF */ { 0, &Ia_outw_DX_AX }, + /* F0 */ { 0, &Ia_prefix_lock }, // LOCK: + /* F1 */ { 0, &Ia_Invalid }, + /* F2 */ { 0, &Ia_prefix_repne }, // REPNE: + /* F3 */ { 0, &Ia_prefix_rep }, // REP: + /* F4 */ { 0, &Ia_hlt }, + /* F5 */ { 0, &Ia_cmc }, + /* F6 */ { GRPN(G3Eb) }, + /* F7 */ { GRPN(G3Ew) }, + /* F8 */ { 0, &Ia_clc }, + /* F9 */ { 0, &Ia_stc }, + /* FA */ { 0, &Ia_cli }, + /* FB */ { 0, &Ia_sti }, + /* FC */ { 0, &Ia_cld }, + /* FD */ { 0, &Ia_std }, + /* FE */ { GRPN(G4) }, + /* FF */ { GRPN(G5w) }, + + // 256 entries for two byte opcodes + /* 0F 00 */ { 0, &Ia_Invalid }, + /* 0F 01 */ { 0, &Ia_Invalid }, + /* 0F 02 */ { 0, &Ia_Invalid }, + /* 0F 03 */ { 0, &Ia_Invalid }, + /* 0F 04 */ { 0, &Ia_Invalid }, + /* 0F 05 */ { 0, &Ia_Invalid }, + /* 0F 06 */ { 0, &Ia_Invalid }, + /* 0F 07 */ { 0, &Ia_Invalid }, + /* 0F 08 */ { 0, &Ia_Invalid }, + /* 0F 09 */ { 0, &Ia_Invalid }, + /* 0F 0A */ { 0, &Ia_Invalid }, + /* 0F 0B */ { 0, &Ia_Invalid }, + /* 0F 0C */ { 0, &Ia_Invalid }, + /* 0F 0D */ { 0, &Ia_Invalid }, + /* 0F 0E */ { 0, &Ia_Invalid }, + /* 0F 0F */ { 0, &Ia_Invalid }, + /* 0F 10 */ { 0, &Ia_Invalid }, + /* 0F 11 */ { 0, &Ia_Invalid }, + /* 0F 12 */ { 0, &Ia_Invalid }, + /* 0F 13 */ { 0, &Ia_Invalid }, + /* 0F 14 */ { 0, &Ia_Invalid }, + /* 0F 15 */ { 0, &Ia_Invalid }, + /* 0F 16 */ { 0, &Ia_Invalid }, + /* 0F 17 */ { 0, &Ia_Invalid }, + /* 0F 18 */ { 0, &Ia_Invalid }, + /* 0F 19 */ { 0, &Ia_Invalid }, + /* 0F 1A */ { 0, &Ia_Invalid }, + /* 0F 1B */ { 0, &Ia_Invalid }, + /* 0F 1C */ { 0, &Ia_Invalid }, + /* 0F 1D */ { 0, &Ia_Invalid }, + /* 0F 1E */ { 0, &Ia_Invalid }, + /* 0F 1F */ { 0, &Ia_Invalid }, + /* 0F 20 */ { 0, &Ia_Invalid }, + /* 0F 21 */ { 0, &Ia_Invalid }, + /* 0F 22 */ { 0, &Ia_Invalid }, + /* 0F 23 */ { 0, &Ia_Invalid }, + /* 0F 24 */ { 0, &Ia_Invalid }, + /* 0F 25 */ { 0, &Ia_Invalid }, + /* 0F 26 */ { 0, &Ia_Invalid }, + /* 0F 27 */ { 0, &Ia_Invalid }, + /* 0F 28 */ { 0, &Ia_Invalid }, + /* 0F 29 */ { 0, &Ia_Invalid }, + /* 0F 2A */ { 0, &Ia_Invalid }, + /* 0F 2B */ { 0, &Ia_Invalid }, + /* 0F 2C */ { 0, &Ia_Invalid }, + /* 0F 2D */ { 0, &Ia_Invalid }, + /* 0F 2E */ { 0, &Ia_Invalid }, + /* 0F 2F */ { 0, &Ia_Invalid }, + /* 0F 30 */ { 0, &Ia_Invalid }, + /* 0F 31 */ { 0, &Ia_Invalid }, + /* 0F 32 */ { 0, &Ia_Invalid }, + /* 0F 33 */ { 0, &Ia_Invalid }, + /* 0F 34 */ { 0, &Ia_Invalid }, + /* 0F 35 */ { 0, &Ia_Invalid }, + /* 0F 36 */ { 0, &Ia_Invalid }, + /* 0F 37 */ { 0, &Ia_Invalid }, + /* 0F 38 */ { 0, &Ia_Invalid }, + /* 0F 39 */ { 0, &Ia_Invalid }, + /* 0F 3A */ { 0, &Ia_Invalid }, + /* 0F 3B */ { 0, &Ia_Invalid }, + /* 0F 3C */ { 0, &Ia_Invalid }, + /* 0F 3D */ { 0, &Ia_Invalid }, + /* 0F 3E */ { 0, &Ia_Invalid }, + /* 0F 3F */ { 0, &Ia_Invalid }, + /* 0F 40 */ { 0, &Ia_Invalid }, + /* 0F 41 */ { 0, &Ia_Invalid }, + /* 0F 42 */ { 0, &Ia_Invalid }, + /* 0F 43 */ { 0, &Ia_Invalid }, + /* 0F 44 */ { 0, &Ia_Invalid }, + /* 0F 45 */ { 0, &Ia_Invalid }, + /* 0F 46 */ { 0, &Ia_Invalid }, + /* 0F 47 */ { 0, &Ia_Invalid }, + /* 0F 48 */ { 0, &Ia_Invalid }, + /* 0F 49 */ { 0, &Ia_Invalid }, + /* 0F 4A */ { 0, &Ia_Invalid }, + /* 0F 4B */ { 0, &Ia_Invalid }, + /* 0F 4C */ { 0, &Ia_Invalid }, + /* 0F 4D */ { 0, &Ia_Invalid }, + /* 0F 4E */ { 0, &Ia_Invalid }, + /* 0F 4F */ { 0, &Ia_Invalid }, + /* 0F 50 */ { 0, &Ia_Invalid }, + /* 0F 51 */ { 0, &Ia_Invalid }, + /* 0F 52 */ { 0, &Ia_Invalid }, + /* 0F 53 */ { 0, &Ia_Invalid }, + /* 0F 54 */ { 0, &Ia_Invalid }, + /* 0F 55 */ { 0, &Ia_Invalid }, + /* 0F 56 */ { 0, &Ia_Invalid }, + /* 0F 57 */ { 0, &Ia_Invalid }, + /* 0F 58 */ { 0, &Ia_Invalid }, + /* 0F 59 */ { 0, &Ia_Invalid }, + /* 0F 5A */ { 0, &Ia_Invalid }, + /* 0F 5B */ { 0, &Ia_Invalid }, + /* 0F 5C */ { 0, &Ia_Invalid }, + /* 0F 5D */ { 0, &Ia_Invalid }, + /* 0F 5E */ { 0, &Ia_Invalid }, + /* 0F 5F */ { 0, &Ia_Invalid }, + /* 0F 60 */ { 0, &Ia_Invalid }, + /* 0F 61 */ { 0, &Ia_Invalid }, + /* 0F 62 */ { 0, &Ia_Invalid }, + /* 0F 63 */ { 0, &Ia_Invalid }, + /* 0F 64 */ { 0, &Ia_Invalid }, + /* 0F 65 */ { 0, &Ia_Invalid }, + /* 0F 66 */ { 0, &Ia_Invalid }, + /* 0F 67 */ { 0, &Ia_Invalid }, + /* 0F 68 */ { 0, &Ia_Invalid }, + /* 0F 69 */ { 0, &Ia_Invalid }, + /* 0F 6A */ { 0, &Ia_Invalid }, + /* 0F 6B */ { 0, &Ia_Invalid }, + /* 0F 6C */ { 0, &Ia_Invalid }, + /* 0F 6D */ { 0, &Ia_Invalid }, + /* 0F 6E */ { 0, &Ia_Invalid }, + /* 0F 6F */ { 0, &Ia_Invalid }, + /* 0F 70 */ { 0, &Ia_Invalid }, + /* 0F 71 */ { 0, &Ia_Invalid }, + /* 0F 72 */ { 0, &Ia_Invalid }, + /* 0F 73 */ { 0, &Ia_Invalid }, + /* 0F 74 */ { 0, &Ia_Invalid }, + /* 0F 75 */ { 0, &Ia_Invalid }, + /* 0F 76 */ { 0, &Ia_Invalid }, + /* 0F 77 */ { 0, &Ia_Invalid }, + /* 0F 78 */ { 0, &Ia_Invalid }, + /* 0F 79 */ { 0, &Ia_Invalid }, + /* 0F 7A */ { 0, &Ia_Invalid }, + /* 0F 7B */ { 0, &Ia_Invalid }, + /* 0F 7C */ { 0, &Ia_Invalid }, + /* 0F 7D */ { 0, &Ia_Invalid }, + /* 0F 7E */ { 0, &Ia_Invalid }, + /* 0F 7F */ { 0, &Ia_Invalid }, + /* 0F 80 */ { 0, &Ia_Invalid }, + /* 0F 81 */ { 0, &Ia_Invalid }, + /* 0F 82 */ { 0, &Ia_Invalid }, + /* 0F 83 */ { 0, &Ia_Invalid }, + /* 0F 84 */ { 0, &Ia_Invalid }, + /* 0F 85 */ { 0, &Ia_Invalid }, + /* 0F 86 */ { 0, &Ia_Invalid }, + /* 0F 87 */ { 0, &Ia_Invalid }, + /* 0F 88 */ { 0, &Ia_Invalid }, + /* 0F 89 */ { 0, &Ia_Invalid }, + /* 0F 8A */ { 0, &Ia_Invalid }, + /* 0F 8B */ { 0, &Ia_Invalid }, + /* 0F 8C */ { 0, &Ia_Invalid }, + /* 0F 8D */ { 0, &Ia_Invalid }, + /* 0F 8E */ { 0, &Ia_Invalid }, + /* 0F 8F */ { 0, &Ia_Invalid }, + /* 0F 90 */ { 0, &Ia_Invalid }, + /* 0F 91 */ { 0, &Ia_Invalid }, + /* 0F 92 */ { 0, &Ia_Invalid }, + /* 0F 93 */ { 0, &Ia_Invalid }, + /* 0F 94 */ { 0, &Ia_Invalid }, + /* 0F 95 */ { 0, &Ia_Invalid }, + /* 0F 96 */ { 0, &Ia_Invalid }, + /* 0F 97 */ { 0, &Ia_Invalid }, + /* 0F 98 */ { 0, &Ia_Invalid }, + /* 0F 99 */ { 0, &Ia_Invalid }, + /* 0F 9A */ { 0, &Ia_Invalid }, + /* 0F 9B */ { 0, &Ia_Invalid }, + /* 0F 9C */ { 0, &Ia_Invalid }, + /* 0F 9D */ { 0, &Ia_Invalid }, + /* 0F 9E */ { 0, &Ia_Invalid }, + /* 0F 9F */ { 0, &Ia_Invalid }, + /* 0F A0 */ { 0, &Ia_Invalid }, + /* 0F A1 */ { 0, &Ia_Invalid }, + /* 0F A2 */ { 0, &Ia_Invalid }, + /* 0F A3 */ { 0, &Ia_Invalid }, + /* 0F A4 */ { 0, &Ia_Invalid }, + /* 0F A5 */ { 0, &Ia_Invalid }, + /* 0F A6 */ { 0, &Ia_Invalid }, + /* 0F A7 */ { 0, &Ia_Invalid }, + /* 0F A8 */ { 0, &Ia_Invalid }, + /* 0F A9 */ { 0, &Ia_Invalid }, + /* 0F AA */ { 0, &Ia_Invalid }, + /* 0F AB */ { 0, &Ia_Invalid }, + /* 0F AC */ { 0, &Ia_Invalid }, + /* 0F AD */ { 0, &Ia_Invalid }, + /* 0F AE */ { 0, &Ia_Invalid }, + /* 0F AF */ { 0, &Ia_Invalid }, + /* 0F B0 */ { 0, &Ia_Invalid }, + /* 0F B1 */ { 0, &Ia_Invalid }, + /* 0F B2 */ { 0, &Ia_Invalid }, + /* 0F B3 */ { 0, &Ia_Invalid }, + /* 0F B4 */ { 0, &Ia_Invalid }, + /* 0F B5 */ { 0, &Ia_Invalid }, + /* 0F B6 */ { 0, &Ia_Invalid }, + /* 0F B7 */ { 0, &Ia_Invalid }, + /* 0F B8 */ { 0, &Ia_Invalid }, + /* 0F B9 */ { 0, &Ia_Invalid }, + /* 0F BA */ { 0, &Ia_Invalid }, + /* 0F BB */ { 0, &Ia_Invalid }, + /* 0F BC */ { 0, &Ia_Invalid }, + /* 0F BD */ { 0, &Ia_Invalid }, + /* 0F BE */ { 0, &Ia_Invalid }, + /* 0F BF */ { 0, &Ia_Invalid }, + /* 0F C0 */ { 0, &Ia_Invalid }, + /* 0F C0 */ { 0, &Ia_Invalid }, + /* 0F C2 */ { 0, &Ia_Invalid }, + /* 0F C3 */ { 0, &Ia_Invalid }, + /* 0F C4 */ { 0, &Ia_Invalid }, + /* 0F C5 */ { 0, &Ia_Invalid }, + /* 0F C6 */ { 0, &Ia_Invalid }, + /* 0F C7 */ { 0, &Ia_Invalid }, + /* 0F C8 */ { 0, &Ia_Invalid }, + /* 0F C9 */ { 0, &Ia_Invalid }, + /* 0F CA */ { 0, &Ia_Invalid }, + /* 0F CB */ { 0, &Ia_Invalid }, + /* 0F CC */ { 0, &Ia_Invalid }, + /* 0F CD */ { 0, &Ia_Invalid }, + /* 0F CE */ { 0, &Ia_Invalid }, + /* 0F CF */ { 0, &Ia_Invalid }, + /* 0F D0 */ { 0, &Ia_Invalid }, + /* 0F D1 */ { 0, &Ia_Invalid }, + /* 0F D2 */ { 0, &Ia_Invalid }, + /* 0F D3 */ { 0, &Ia_Invalid }, + /* 0F D4 */ { 0, &Ia_Invalid }, + /* 0F D5 */ { 0, &Ia_Invalid }, + /* 0F D6 */ { 0, &Ia_Invalid }, + /* 0F D7 */ { 0, &Ia_Invalid }, + /* 0F D8 */ { 0, &Ia_Invalid }, + /* 0F D9 */ { 0, &Ia_Invalid }, + /* 0F DA */ { 0, &Ia_Invalid }, + /* 0F DB */ { 0, &Ia_Invalid }, + /* 0F DC */ { 0, &Ia_Invalid }, + /* 0F DD */ { 0, &Ia_Invalid }, + /* 0F DE */ { 0, &Ia_Invalid }, + /* 0F DF */ { 0, &Ia_Invalid }, + /* 0F E0 */ { 0, &Ia_Invalid }, + /* 0F E1 */ { 0, &Ia_Invalid }, + /* 0F E2 */ { 0, &Ia_Invalid }, + /* 0F E3 */ { 0, &Ia_Invalid }, + /* 0F E4 */ { 0, &Ia_Invalid }, + /* 0F E5 */ { 0, &Ia_Invalid }, + /* 0F E6 */ { 0, &Ia_Invalid }, + /* 0F E7 */ { 0, &Ia_Invalid }, + /* 0F E8 */ { 0, &Ia_Invalid }, + /* 0F E9 */ { 0, &Ia_Invalid }, + /* 0F EA */ { 0, &Ia_Invalid }, + /* 0F EB */ { 0, &Ia_Invalid }, + /* 0F EC */ { 0, &Ia_Invalid }, + /* 0F ED */ { 0, &Ia_Invalid }, + /* 0F EE */ { 0, &Ia_Invalid }, + /* 0F EF */ { 0, &Ia_Invalid }, + /* 0F F0 */ { 0, &Ia_Invalid }, + /* 0F F1 */ { 0, &Ia_Invalid }, + /* 0F F2 */ { 0, &Ia_Invalid }, + /* 0F F3 */ { 0, &Ia_Invalid }, + /* 0F F4 */ { 0, &Ia_Invalid }, + /* 0F F5 */ { 0, &Ia_Invalid }, + /* 0F F6 */ { 0, &Ia_Invalid }, + /* 0F F7 */ { 0, &Ia_Invalid }, + /* 0F F8 */ { 0, &Ia_Invalid }, + /* 0F F9 */ { 0, &Ia_Invalid }, + /* 0F FA */ { 0, &Ia_Invalid }, + /* 0F FB */ { 0, &Ia_Invalid }, + /* 0F FC */ { 0, &Ia_Invalid }, + /* 0F FD */ { 0, &Ia_Invalid }, + /* 0F FE */ { 0, &Ia_Invalid }, + /* 0F FF */ { 0, &Ia_Invalid } +}; + diff --git a/libmednahawk/src/wswan/dis/disasm.h b/libmednahawk/src/wswan/dis/disasm.h new file mode 100644 index 0000000000..b7da6960ba --- /dev/null +++ b/libmednahawk/src/wswan/dis/disasm.h @@ -0,0 +1,380 @@ +#ifndef _BX_DISASM_H_ +#define _BX_DISASM_H_ + +#include "../../types.h" + +typedef uint16 bx_address; + +#define BX_DECODE_MODRM(modrm_byte, mod, opcode, rm) { \ + mod = (modrm_byte >> 6) & 0x03; \ + opcode = (modrm_byte >> 3) & 0x07; \ + rm = modrm_byte & 0x07; \ +} + +#define BX_DECODE_SIB(sib_byte, scale, index, base) { \ + scale = sib_byte >> 6; \ + index = (sib_byte >> 3) & 0x07; \ + base = sib_byte & 0x07; \ +} + +/* general purpose bit register */ +enum { + rAX_REG, + rCX_REG, + rDX_REG, + rBX_REG, + rSP_REG, + rBP_REG, + rSI_REG, + rDI_REG +}; + +/* segment register */ +enum { + ES_REG, + CS_REG, + SS_REG, + DS_REG, + FS_REG, + GS_REG, + INVALID_SEG1, + INVALID_SEG2 +}; + +class disassembler; +struct x86_insn; + +typedef void (disassembler::*BxDisasmPtr_t)(const x86_insn *insn); +typedef void (disassembler::*BxDisasmResolveModrmPtr_t)(const x86_insn *insn, unsigned attr); + +struct BxDisasmOpcodeInfo_t +{ + const char *IntelOpcode; + const char *AttOpcode; + BxDisasmPtr_t Operand1; + BxDisasmPtr_t Operand2; + BxDisasmPtr_t Operand3; +}; + +struct BxDisasmOpcodeTable_t +{ + uint32 Attr; + const void *OpcodeInfo; +}; + +// segment override not used +#define NO_SEG_OVERRIDE 0xFF + +// datasize attributes +#define X_SIZE 0x0000 +#define B_SIZE 0x0100 +#define W_SIZE 0x0200 +#define D_SIZE 0x0300 +#define Q_SIZE 0x0400 +#define Z_SIZE 0x0500 +#define V_SIZE 0x0600 +#define O_SIZE 0x0700 +#define T_SIZE 0x0800 +#define P_SIZE 0x0900 + +// branch hint attribute +#define BRANCH_HINT 0x1000 + +struct x86_insn +{ +public: + x86_insn(); + + bool is_seg_override() const { + return (seg_override != NO_SEG_OVERRIDE); + } + +public: + uint8 extend8b; + uint8 seg_override; + unsigned b1, prefixes; + unsigned ilen; + + uint8 modrm, mod, nnn, rm; + uint8 sib, scale, index, base; + union { + uint16 displ16; + uint32 displ32; + } displacement; +}; + +class disassembler { +public: + disassembler() { set_syntax_intel(); } + + unsigned disasm(bx_address base, bx_address ip, const uint8 *instr, char *disbuf); + + unsigned disasm16(bx_address base, bx_address ip, const uint8 *instr, char *disbuf) + { return disasm(base, ip, instr, disbuf); } + + x86_insn decode(bx_address base, bx_address ip, const uint8 *instr, char *disbuf); + + x86_insn decode16(bx_address base, bx_address ip, const uint8 *instr, char *disbuf) + { return decode(base, ip, instr, disbuf); } + + void set_syntax_intel(); + void set_syntax_att (); + + void toggle_syntax_mode(); + +private: + bool intel_mode; + + const char **general_16bit_regname; + const char **general_8bit_regname; + + const char **segment_name; + const char **index16; + + const char *sreg_mod01or10_rm32[8]; + const char *sreg_mod00_base32[8]; + const char *sreg_mod01or10_base32[8]; + const char *sreg_mod00_rm16[8]; + const char *sreg_mod01or10_rm16[8]; + +private: + + bx_address db_eip, db_base; + + const uint8 *instruction; // for fetching of next byte of instruction + + char *disbufptr; + + BxDisasmResolveModrmPtr_t resolve_modrm; + + uint8 fetch_byte() { + db_eip++; + return(*instruction++); + }; + + uint8 peek_byte() { + return(*instruction); + }; + + uint16 fetch_word() { + uint8 b0 = * (uint8 *) instruction++; + uint8 b1 = * (uint8 *) instruction++; + uint16 ret16 = (b1<<8) | b0; + db_eip += 2; + return(ret16); + }; + + uint32 fetch_dword() { + uint8 b0 = * (uint8 *) instruction++; + uint8 b1 = * (uint8 *) instruction++; + uint8 b2 = * (uint8 *) instruction++; + uint8 b3 = * (uint8 *) instruction++; + uint32 ret32 = (b3<<24) | (b2<<16) | (b1<<8) | b0; + db_eip += 4; + return(ret32); + }; + + void dis_putc(char symbol); + void dis_sprintf(const char *fmt, ...); + void decode_modrm(x86_insn *insn); + + void resolve16_mod0 (const x86_insn *insn, unsigned mode); + void resolve16_mod1or2(const x86_insn *insn, unsigned mode); + + void initialize_modrm_segregs(); + + void print_datasize (unsigned mode); + + void print_memory_access16(int datasize, + const char *seg, const char *index, uint16 disp); + void print_memory_access (int datasize, + const char *seg, const char *base, const char *index, int scale, uint32 disp); + + void print_disassembly_intel(const x86_insn *insn, const BxDisasmOpcodeInfo_t *entry); + void print_disassembly_att (const x86_insn *insn, const BxDisasmOpcodeInfo_t *entry); + +public: + +/* + * Codes for Addressing Method: + * --------------------------- + * A - Direct address. The instruction has no ModR/M byte; the address + * of the operand is encoded in the instruction; and no base register, + * index register, or scaling factor can be applied. + * C - The reg field of the ModR/M byte selects a control register. + * D - The reg field of the ModR/M byte selects a debug register. + * E - A ModR/M byte follows the opcode and specifies the operand. The + * operand is either a general-purpose register or a memory address. + * If it is a memory address, the address is computed from a segment + * register and any of the following values: a base register, an + * index register, a scaling factor, a displacement. + * F - Flags Register. + * G - The reg field of the ModR/M byte selects a general register. + * I - Immediate data. The operand value is encoded in subsequent bytes of + * the instruction. + * J - The instruction contains a relative offset to be added to the + * instruction pointer register. + * M - The ModR/M byte may refer only to memory. + * N - The R/M field of the ModR/M byte selects a packed-quadword MMX + technology register. + * O - The instruction has no ModR/M byte; the offset of the operand is + * coded as a word or double word (depending on address size attribute) + * in the instruction. No base register, index register, or scaling + * factor can be applied. + * P - The reg field of the ModR/M byte selects a packed quadword MMX + * technology register. + * Q - A ModR/M byte follows the opcode and specifies the operand. The + * operand is either an MMX technology register or a memory address. + * If it is a memory address, the address is computed from a segment + * register and any of the following values: a base register, an + * index register, a scaling factor, and a displacement. + * R - The mod field of the ModR/M byte may refer only to a general register. + * S - The reg field of the ModR/M byte selects a segment register. + * U - The R/M field of the ModR/M byte selects a 128-bit XMM register. + * T - The reg field of the ModR/M byte selects a test register. + * V - The reg field of the ModR/M byte selects a 128-bit XMM register. + * W - A ModR/M byte follows the opcode and specifies the operand. The + * operand is either a 128-bit XMM register or a memory address. If + * it is a memory address, the address is computed from a segment + * register and any of the following values: a base register, an + * index register, a scaling factor, and a displacement. + * X - Memory addressed by the DS:rSI register pair. + * Y - Memory addressed by the ES:rDI register pair. + */ + +/* + * Codes for Operand Type: + * ---------------------- + * a - Two one-word operands in memory or two double-word operands in + * memory, depending on operand-size attribute (used only by the BOUND + * instruction). + * b - Byte, regardless of operand-size attribute. + * d - Doubleword, regardless of operand-size attribute. + * dq - Double-quadword, regardless of operand-size attribute. + * p - 32-bit or 48-bit pointer, depending on operand-size attribute. + * pd - 128-bit packed double-precision floating-point data. + * pi - Quadword MMX technology register (packed integer) + * ps - 128-bit packed single-precision floating-point data. + * q - Quadword, regardless of operand-size attribute. + * s - 6-byte or 10-byte pseudo-descriptor. + * si - Doubleword integer register (scalar integer) + * ss - Scalar element of a 128-bit packed single-precision floating data. + * sd - Scalar element of a 128-bit packed double-precision floating data. + * v - Word, doubleword or quadword, depending on operand-size attribute. + * w - Word, regardless of operand-size attr. + */ + + // far call/jmp + void Apw(const x86_insn *insn); + void Apd(const x86_insn *insn); + + // 8-bit general purpose registers + void AL(const x86_insn *insn); + void CL(const x86_insn *insn); + + // 16-bit general purpose registers + void AX(const x86_insn *insn); + void DX(const x86_insn *insn); + + // segment registers + void CS(const x86_insn *insn); + void DS(const x86_insn *insn); + void ES(const x86_insn *insn); + void SS(const x86_insn *insn); + + // segment registers + void Sw(const x86_insn *insn); + + // test registers + void Td(const x86_insn *insn); + + // control register + void Cd(const x86_insn *insn); + void Cq(const x86_insn *insn); + + // debug register + void Dd(const x86_insn *insn); + void Dq(const x86_insn *insn); + + // 8-bit general purpose register + void R8(const x86_insn *insn); + + // 16-bit general purpose register + void RX(const x86_insn *insn); + + // general purpose register or memory operand + void Eb(const x86_insn *insn); + void Ew(const x86_insn *insn); + void Ed(const x86_insn *insn); + void Eq(const x86_insn *insn); + + // general purpose register + void Gb(const x86_insn *insn); + void Gw(const x86_insn *insn); + void Gd(const x86_insn *insn); + void Gq(const x86_insn *insn); + + // immediate + void I1(const x86_insn *insn); + void Ib(const x86_insn *insn); + void Iw(const x86_insn *insn); + void Id(const x86_insn *insn); + void Iq(const x86_insn *insn); + + // two immediates Iw/Ib + void IwIb(const x86_insn *insn); + + // sign extended immediate + void sIbw(const x86_insn *insn); + void sIbd(const x86_insn *insn); + void sIbq(const x86_insn *insn); + void sIdq(const x86_insn *insn); + + // general purpose register + void Rw(const x86_insn *insn); + void Rd(const x86_insn *insn); + void Rq(const x86_insn *insn); + + // direct memory access + void OP_O(const x86_insn *insn, unsigned size); + void Ob(const x86_insn *insn); + void Ow(const x86_insn *insn); + void Od(const x86_insn *insn); + void Oq(const x86_insn *insn); + + // memory operand + void OP_M(const x86_insn *insn, unsigned size); + void Ma(const x86_insn *insn); + void Mp(const x86_insn *insn); + void Ms(const x86_insn *insn); + void Mx(const x86_insn *insn); + void Mb(const x86_insn *insn); + void Mw(const x86_insn *insn); + void Md(const x86_insn *insn); + void Mq(const x86_insn *insn); + void Mt(const x86_insn *insn); + void Mdq(const x86_insn *insn); + void Mps(const x86_insn *insn); + void Mpd(const x86_insn *insn); + + // string instructions + void OP_X(const x86_insn *insn, unsigned size); + void Xb(const x86_insn *insn); + void Xw(const x86_insn *insn); + void Xd(const x86_insn *insn); + void Xq(const x86_insn *insn); + + // string instructions + void OP_Y(const x86_insn *insn, unsigned size); + void Yb(const x86_insn *insn); + void Yw(const x86_insn *insn); + void Yd(const x86_insn *insn); + void Yq(const x86_insn *insn); + + // jump offset + void Jb(const x86_insn *insn); + void Jw(const x86_insn *insn); + void Jd(const x86_insn *insn); +}; + +#endif diff --git a/libmednahawk/src/wswan/dis/opcodes.inc b/libmednahawk/src/wswan/dis/opcodes.inc new file mode 100644 index 0000000000..f55e672695 --- /dev/null +++ b/libmednahawk/src/wswan/dis/opcodes.inc @@ -0,0 +1,389 @@ +Ia_hlt = { "hlt", "hlt", XX, XX, XX }, +Ia_poll = { "poll", "poll", XX, XX, XX }, +Ia_fpo1 = { "fop1", "fop1", Eb, XX, XX }, + +Ia_aaa = { "aaa", "aaa", XX, XX, XX }, +Ia_aad = { "aad", "aad", Ib, XX, XX }, +Ia_aam = { "aam", "aam", Ib, XX, XX }, +Ia_aas = { "aas", "aas", XX, XX, XX }, +Ia_adcb_AL_Ib = { "adc", "adcb", AL, Ib, XX }, +Ia_adcb_Eb_Gb = { "adc", "adcb", Eb, Gb, XX }, +Ia_adcb_Eb_Ib = { "adc", "adcb", Eb, Ib, XX }, +Ia_adcb_Gb_Eb = { "adc", "adcb", Gb, Eb, XX }, +Ia_adcw_AX_Iw = { "adc", "adcw", AX, Iw, XX }, +Ia_adcw_Ew_Gw = { "adc", "adcw", Ew, Gw, XX }, +Ia_adcw_Ew_Iw = { "adc", "adcw", Ew, Iw, XX }, +Ia_adcw_Ew_sIb = { "adc", "adcw", Ew, sIbw, XX }, +Ia_adcw_Gw_Ew = { "adc", "adcw", Gw, Ew, XX }, +Ia_addb_AL_Ib = { "add", "addb", AL, Ib, XX }, +Ia_addb_Eb_Gb = { "add", "addb", Eb, Gb, XX }, +Ia_addb_Eb_Ib = { "add", "addb", Eb, Ib, XX }, +Ia_addb_Gb_Eb = { "add", "addb", Gb, Eb, XX }, + +Ia_addw_AX_Iw = { "add", "addw", AX, Iw, XX }, +Ia_addw_Ew_Gw = { "add", "addw", Ew, Gw, XX }, +Ia_addw_Ew_Iw = { "add", "addw", Ew, Iw, XX }, +Ia_addw_Ew_sIb = { "add", "addw", Ew, sIbw, XX }, +Ia_addw_Gw_Ew = { "add", "addw", Gw, Ew, XX }, +Ia_andb_AL_Ib = { "and", "andb", AL, Ib, XX }, +Ia_andb_Eb_Gb = { "and", "andb", Eb, Gb, XX }, +Ia_andb_Eb_Ib = { "and", "andb", Eb, Ib, XX }, +Ia_andb_Gb_Eb = { "and", "andb", Gb, Eb, XX }, +Ia_andw_AX_Iw = { "and", "andw", AX, Iw, XX }, +Ia_andw_Ew_Gw = { "and", "andw", Ew, Gw, XX }, +Ia_andw_Ew_Iw = { "and", "andw", Ew, Iw, XX }, +Ia_andw_Ew_sIb = { "and", "andw", Ew, sIbw, XX }, +Ia_andw_Gw_Ew = { "and", "andw", Gw, Ew, XX }, + +Ia_boundw_Gw_Ma = { "bound", "boundw", Gw, Ma, XX }, + +Ia_call_Ew = { "call", "call", Ew, XX, XX }, +Ia_call_Jd = { "call", "call", Jd, XX, XX }, +Ia_call_Jw = { "call", "call", Jw, XX, XX }, +Ia_cbw = { "cbw", "cbtw", XX, XX, XX }, +Ia_clc = { "clc", "clc", XX, XX, XX }, +Ia_cld = { "cld", "cld", XX, XX, XX }, +Ia_cli = { "cli", "cli", XX, XX, XX }, +Ia_cmc = { "cmc", "cmc", XX, XX, XX }, + +Ia_cmpb_AL_Ib = { "cmp", "cmpb", AL, Ib, XX }, +Ia_cmpb_Eb_Gb = { "cmp", "cmpb", Eb, Gb, XX }, +Ia_cmpb_Eb_Ib = { "cmp", "cmpb", Eb, Ib, XX }, +Ia_cmpb_Gb_Eb = { "cmp", "cmpb", Gb, Eb, XX }, +Ia_cmpsb_Yb_Xb = { "cmpsb", "cmpsb", Yb, Xb, XX }, +Ia_cmpsl_Yd_Xd = { "cmpsd", "cmpsl", Yd, Xd, XX }, +Ia_cmpsw_Yw_Xw = { "cmpsw", "cmpsw", Yw, Xw, XX }, +Ia_cmpw_AX_Iw = { "cmp", "cmpw", AX, Iw, XX }, +Ia_cmpw_Ew_Gw = { "cmp", "cmpw", Ew, Gw, XX }, +Ia_cmpw_Ew_Iw = { "cmp", "cmpw", Ew, Iw, XX }, +Ia_cmpw_Ew_sIb = { "cmp", "cmpw", Ew, sIbw, XX }, +Ia_cmpw_Gw_Ew = { "cmp", "cmpw", Gw, Ew, XX }, + +Ia_cwd = { "cwd", "cwtd", XX, XX, XX }, +Ia_daa = { "daa", "daa", XX, XX, XX }, +Ia_das = { "das", "das", XX, XX, XX }, +Ia_decb_Eb = { "dec", "decb", Eb, XX, XX }, +Ia_decw_Ew = { "dec", "decw", Ew, XX, XX }, +Ia_decw_RX = { "dec", "decw", RX, XX, XX }, +Ia_divb_AL_Eb = { "div", "divb", AL, Eb, XX }, +Ia_divw_AX_Ew = { "div", "divw", AX, Ew, XX }, +Ia_enter = { "enter", "enter", IwIb, XX, XX }, +Ia_error = { "(error)", "(error)", XX, XX, XX }, + +Ia_idivb_AL_Eb = { "idiv", "idivb", AL, Eb, XX }, +Ia_idivw_AX_Ew = { "idiv", "idivw", AX, Ew, XX }, +Ia_imulb_AL_Eb = { "imul", "imulb", AL, Eb, XX }, +Ia_imulw_AX_Ew = { "imul", "imulw", AX, Ew, XX }, +Ia_imulw_Gw_Ew = { "imul", "imulw", Gw, Ew, XX }, +Ia_imulw_Gw_Ew_Iw = { "imul", "imulw", Gw, Ew, Iw }, +Ia_imulw_Gw_Ew_sIb = { "imul", "imulw", Gw, Ew, sIbw }, +Ia_inb_AL_DX = { "in", "inb", AL, DX, XX }, +Ia_inb_AL_Ib = { "in", "inb", AL, Ib, XX }, +Ia_incb_Eb = { "inc", "incb", Eb, XX, XX }, +Ia_incw_Ew = { "inc", "incw", Ew, XX, XX }, +Ia_incw_RX = { "inc", "incw", RX, XX, XX }, +Ia_insb_Yb_DX = { "insb", "insb", Yb, DX, XX }, +Ia_insw_Yw_DX = { "insw", "insw", Yw, DX, XX }, +Ia_int_Ib = { "int", "int", Ib, XX, XX }, +Ia_int1 = { "int1", "int1", XX, XX, XX }, +Ia_int3 = { "int3", "int3", XX, XX, XX }, +Ia_into = { "into", "into", XX, XX, XX }, +Ia_Invalid = { "(invalid)", "(invalid)", XX, XX, XX }, +Ia_invd = { "invd", "invd", XX, XX, XX }, +Ia_invlpg = { "invlpg", "invlpg", Mx, XX, XX }, +Ia_inw_AX_DX = { "in", "inw", AX, DX, XX }, +Ia_inw_AX_Ib = { "in", "inw", AX, Ib, XX }, +Ia_iretl = { "iretd", "iretd", XX, XX, XX }, +Ia_iretq = { "iretq", "iretq", XX, XX, XX }, +Ia_iretw = { "iret", "iretw", XX, XX, XX }, +Ia_jb_Jb = { "jb", "jb", Jb, XX, XX }, +Ia_jb_Jd = { "jb", "jb", Jd, XX, XX }, +Ia_jb_Jw = { "jb", "jb", Jw, XX, XX }, +Ia_jbe_Jb = { "jbe", "jbe", Jb, XX, XX }, +Ia_jbe_Jd = { "jbe", "jbe", Jd, XX, XX }, +Ia_jbe_Jw = { "jbe", "jbe", Jw, XX, XX }, +Ia_jcxz_Jb = { "jcxz", "jcxz", Jb, XX, XX }, +Ia_jecxz_Jb = { "jecxz", "jecxz", Jb, XX, XX }, +Ia_jl_Jb = { "jl", "jl", Jb, XX, XX }, +Ia_jl_Jd = { "jl", "jl", Jd, XX, XX }, +Ia_jl_Jw = { "jl", "jl", Jw, XX, XX }, +Ia_jle_Jb = { "jle", "jle", Jb, XX, XX }, +Ia_jle_Jd = { "jle", "jle", Jd, XX, XX }, +Ia_jle_Jw = { "jle", "jle", Jw, XX, XX }, +Ia_jmp_Ew = { "jmp", "jmp", Ew, XX, XX }, +Ia_jmp_Jb = { "jmp", "jmp", Jb, XX, XX }, +Ia_jmp_Jd = { "jmp", "jmp", Jd, XX, XX }, +Ia_jmp_Jw = { "jmp", "jmp", Jw, XX, XX }, +Ia_jnb_Jb = { "jnb", "jnb", Jb, XX, XX }, +Ia_jnb_Jd = { "jnb", "jnb", Jd, XX, XX }, +Ia_jnb_Jw = { "jnb", "jnb", Jw, XX, XX }, +Ia_jnbe_Jb = { "jnbe", "jnbe", Jb, XX, XX }, +Ia_jnbe_Jd = { "jnbe", "jnbe", Jd, XX, XX }, +Ia_jnbe_Jw = { "jnbe", "jnbe", Jw, XX, XX }, +Ia_jnl_Jb = { "jnl", "jnl", Jb, XX, XX }, +Ia_jnl_Jd = { "jnl", "jnl", Jd, XX, XX }, +Ia_jnl_Jw = { "jnl", "jnl", Jw, XX, XX }, +Ia_jnle_Jb = { "jnle", "jnle", Jb, XX, XX }, +Ia_jnle_Jd = { "jnle", "jnle", Jd, XX, XX }, +Ia_jnle_Jw = { "jnle", "jnle", Jw, XX, XX }, +Ia_jno_Jb = { "jno", "jno", Jb, XX, XX }, +Ia_jno_Jd = { "jno", "jno", Jd, XX, XX }, +Ia_jno_Jw = { "jno", "jno", Jw, XX, XX }, +Ia_jnp_Jb = { "jnp", "jnp", Jb, XX, XX }, +Ia_jnp_Jd = { "jnp", "jnp", Jd, XX, XX }, +Ia_jnp_Jw = { "jnp", "jnp", Jw, XX, XX }, +Ia_jns_Jb = { "jns", "jns", Jb, XX, XX }, +Ia_jns_Jd = { "jns", "jns", Jd, XX, XX }, +Ia_jns_Jw = { "jns", "jns", Jw, XX, XX }, +Ia_jnz_Jb = { "jnz", "jnz", Jb, XX, XX }, +Ia_jnz_Jd = { "jnz", "jnz", Jd, XX, XX }, +Ia_jnz_Jw = { "jnz", "jnz", Jw, XX, XX }, +Ia_jo_Jb = { "jo", "jo", Jb, XX, XX }, +Ia_jo_Jd = { "jo", "jo", Jd, XX, XX }, +Ia_jo_Jw = { "jo", "jo", Jw, XX, XX }, +Ia_jp_Jb = { "jp", "jp", Jb, XX, XX }, +Ia_jp_Jd = { "jp", "jp", Jd, XX, XX }, +Ia_jp_Jw = { "jp", "jp", Jw, XX, XX }, +Ia_jrcxz_Jb = { "jrcxz", "jrcxz", Jb, XX, XX }, +Ia_js_Jb = { "js", "js", Jb, XX, XX }, +Ia_js_Jd = { "js", "js", Jd, XX, XX }, +Ia_js_Jw = { "js", "js", Jw, XX, XX }, +Ia_jz_Jb = { "jz", "jz", Jb, XX, XX }, +Ia_jz_Jd = { "jz", "jz", Jd, XX, XX }, +Ia_jz_Jw = { "jz", "jz", Jw, XX, XX }, +Ia_lahf = { "lahf", "lahf", XX, XX, XX }, +Ia_larw_Gw_Ew = { "lar", "larw", Gw, Ew, XX }, +Ia_lcall_Apd = { "call far", "lcall", Apd, XX, XX }, +Ia_lcall_Apw = { "call far", "lcall", Apw, XX, XX }, +Ia_lcall_Mp = { "call far", "lcall", Mp, XX, XX }, +Ia_ldsw_Gw_Mp = { "lds", "ldsw", Gw, Mp, XX }, +Ia_leave = { "leave", "leave", XX, XX, XX }, +Ia_leaw_Gw_Mw = { "lea", "leaw", Gw, Mw, XX }, +Ia_lesw_Gw_Mp = { "les", "lesw", Gw, Mp, XX }, +Ia_lfence = { "lfence", "lfence", XX, XX, XX }, +Ia_lfsw_Gw_Mp = { "lfs", "lfsw", Gw, Mp, XX }, +Ia_lgdt = { "lgdt", "lgdt", Ms, XX, XX }, +Ia_lgsw_Gw_Mp = { "lgs", "lgsw", Gw, Mp, XX }, +Ia_lidt = { "lidt", "lidt", Ms, XX, XX }, +Ia_ljmp_Apd = { "jmp far", "ljmp", Apd, XX, XX }, +Ia_ljmp_Apw = { "jmp far", "ljmp", Apw, XX, XX }, +Ia_ljmp_Mp = { "jmp far", "ljmp", Mp, XX, XX }, +Ia_lldt = { "lldt", "lldt", Ew, XX, XX }, +Ia_lmsw_Ew = { "lmsw", "lmsw", Ew, XX, XX }, +Ia_lodsb_AL_Xb = { "lodsb", "lodsb", AL, Xb, XX }, +Ia_lodsw_AX_Xw = { "lodsw", "lodsw", AX, Xw, XX }, +Ia_loop_Jb = { "loop", "loop", Jb, XX, XX }, +Ia_loope_Jb = { "loope", "loope", Jb, XX, XX }, +Ia_loopne_Jb = { "loopne", "loopne", Jb, XX, XX }, +Ia_lret = { "retf", "lret", XX, XX, XX }, +Ia_lret_Iw = { "retf", "lret", Iw, XX, XX }, +Ia_lslw_Gw_Ew = { "lsl", "lslw", Gw, Ew, XX }, +Ia_lssw_Gw_Mp = { "lss", "lssw", Gw, Mp, XX }, +Ia_ltr = { "ltr", "ltr", Ew, XX, XX }, + +Ia_movb_AL_Ob = { "mov", "movb", AL, Ob, XX }, +Ia_movb_Eb_Gb = { "mov", "movb", Eb, Gb, XX }, +Ia_movb_Eb_Ib = { "mov", "movb", Eb, Ib, XX }, +Ia_movb_Gb_Eb = { "mov", "movb", Gb, Eb, XX }, +Ia_movb_Ob_AL = { "mov", "movb", Ob, AL, XX }, +Ia_movb_R8_Ib = { "mov", "movb", R8, Ib, XX }, + +Ia_movsb_Yb_Xb = { "movsb", "movsb", Yb, Xb, XX }, +Ia_movsbw_Gw_Eb = { "movsx", "movsbw", Gw, Eb, XX }, +Ia_movsl_Yd_Xd = { "movsd", "movsl", Yd, Xd, XX }, +Ia_movsq_Yq_Xq = { "movsq", "movsq", Yq, Xq, XX }, +Ia_movsw_Yw_Xw = { "movsw", "movsw", Yw, Xw, XX }, +Ia_movw_AX_Ow = { "mov", "movw", AX, Ow, XX }, +Ia_movw_Ew_Gw = { "mov", "movw", Ew, Gw, XX }, +Ia_movw_Ew_Iw = { "mov", "movw", Ew, Iw, XX }, +Ia_movw_Ew_Sw = { "mov", "movw", Ew, Sw, XX }, +Ia_movw_Gw_Ew = { "mov", "movw", Gw, Ew, XX }, +Ia_movw_Ow_AX = { "mov", "movw", Ow, AX, XX }, +Ia_movw_RX_Iw = { "mov", "movw", RX, Iw, XX }, +Ia_movw_Sw_Ew = { "mov", "movw", Sw, Ew, XX }, +Ia_movzbw_Gw_Eb = { "movzx", "movzbw", Gw, Eb, XX }, +Ia_mulb_AL_Eb = { "mul", "mulb", AL, Eb, XX }, +Ia_multibyte_nop = { "multibyte nop", "multibyte nop", XX, XX, XX }, +Ia_mulw_AX_Ew = { "mul", "mulw", AX, Ew, XX }, +Ia_mwait = { "mwait", "mwait", XX, XX, XX }, +Ia_negb_Eb = { "neg", "negb", Eb, XX, XX }, +Ia_negw_Ew = { "neg", "negw", Ew, XX, XX }, +Ia_nop = { "nop", "nop", XX, XX, XX }, +Ia_notb_Eb = { "not", "notb", Eb, XX, XX }, +Ia_notw_Ew = { "not", "notw", Ew, XX, XX }, +Ia_orb_AL_Ib = { "or", "orb", AL, Ib, XX }, +Ia_orb_Eb_Gb = { "or", "orb", Eb, Gb, XX }, +Ia_orb_Eb_Ib = { "or", "orb", Eb, Ib, XX }, +Ia_orb_Gb_Eb = { "or", "orb", Gb, Eb, XX }, +Ia_orw_AX_Iw = { "or", "orw", AX, Iw, XX }, +Ia_orw_Ew_Gw = { "or", "orw", Ew, Gw, XX }, +Ia_orw_Ew_Iw = { "or", "orw", Ew, Iw, XX }, +Ia_orw_Ew_sIb = { "or", "orw", Ew, sIbw, XX }, +Ia_orw_Gw_Ew = { "or", "orw", Gw, Ew, XX }, +Ia_outb_DX_AL = { "out", "outb", DX, AL, XX }, +Ia_outb_Ib_AL = { "out", "outb", Ib, AL, XX }, +Ia_outsb_DX_Xb = { "outsb", "outsb", DX, Xb, XX }, +Ia_outsl_DX_Xd = { "outsd", "outsl", DX, Xd, XX }, +Ia_outsw_DX_Xw = { "outsw", "outsw", DX, Xw, XX }, +Ia_outw_DX_AX = { "out", "outw", DX, AX, XX }, +Ia_outw_Ib_AX = { "out", "outw", Ib, AX, XX }, + +Ia_popaw = { "popa", "popa", XX, XX, XX }, +Ia_popfw = { "popf", "popf", XX, XX, XX }, + +Ia_popw_DS = { "pop", "popw", DS, XX, XX }, +Ia_popw_ES = { "pop", "popw", ES, XX, XX }, +Ia_popw_Ew = { "pop", "popw", Ew, XX, XX }, +Ia_popw_RX = { "pop", "popw", RX, XX, XX }, +Ia_popw_SS = { "pop", "popw", SS, XX, XX }, + +Ia_prefix_cs = { "cs", "cs", XX, XX, XX }, +Ia_prefix_ds = { "ds", "ds", XX, XX, XX }, +Ia_prefix_es = { "es", "es", XX, XX, XX }, + +Ia_prefix_lock = { "lock", "lock", XX, XX, XX }, +Ia_prefix_rep = { "rep", "rep", XX, XX, XX }, +Ia_prefix_repne = { "repne", "repne", XX, XX, XX }, +Ia_prefix_ss = { "ss", "ss", XX, XX, XX }, + +Ia_pushal = { "pushad", "pushal", XX, XX, XX }, +Ia_pushaw = { "pusha", "pusha", XX, XX, XX }, +Ia_pushfl = { "pushfd", "pushfl", XX, XX, XX }, +Ia_pushfq = { "pushfq", "pushfq", XX, XX, XX }, +Ia_pushfw = { "pushf", "pushf", XX, XX, XX }, +Ia_pushl_CS = { "push", "pushl", CS, XX, XX }, +Ia_pushl_DS = { "push", "pushl", DS, XX, XX }, +Ia_pushl_ES = { "push", "pushl", ES, XX, XX }, +Ia_pushl_sIb = { "push", "pushl", sIbd, XX, XX }, +Ia_pushl_SS = { "push", "pushl", SS, XX, XX }, +Ia_pushw_CS = { "push", "pushw", CS, XX, XX }, +Ia_pushw_DS = { "push", "pushw", DS, XX, XX }, +Ia_pushw_ES = { "push", "pushw", ES, XX, XX }, +Ia_pushw_Ew = { "push", "pushw", Ew, XX, XX }, +Ia_pushw_Iw = { "push", "pushw", Iw, XX, XX }, +Ia_pushw_RX = { "push", "pushw", RX, XX, XX }, +Ia_pushw_sIb = { "push", "pushw", sIbw, XX, XX }, +Ia_pushw_SS = { "push", "pushw", SS, XX, XX }, +Ia_rclb_Eb_CL = { "rcl", "rclb", Eb, CL, XX }, +Ia_rclb_Eb_I1 = { "rcl", "rclb", Eb, I1, XX }, +Ia_rclb_Eb_Ib = { "rcl", "rclb", Eb, Ib, XX }, +Ia_rclw_Ew_CL = { "rcl", "rclw", Ew, CL, XX }, +Ia_rclw_Ew_I1 = { "rcl", "rclw", Ew, I1, XX }, +Ia_rclw_Ew_Ib = { "rcl", "rclw", Ew, Ib, XX }, +Ia_rcrb_Eb_CL = { "rcr", "rcrb", Eb, CL, XX }, +Ia_rcrb_Eb_I1 = { "rcr", "rcrb", Eb, I1, XX }, +Ia_rcrb_Eb_Ib = { "rcr", "rcrb", Eb, Ib, XX }, +Ia_rcrw_Ew_CL = { "rcr", "rcrw", Ew, CL, XX }, +Ia_rcrw_Ew_I1 = { "rcr", "rcrw", Ew, I1, XX }, +Ia_rcrw_Ew_Ib = { "rcr", "rcrw", Ew, Ib, XX }, +Ia_rdmsr = { "rdmsr", "rdmsr", XX, XX, XX }, +Ia_rdpmc = { "rdpmc", "rdpmc", XX, XX, XX }, +Ia_rdtsc = { "rdtsc", "rdtsc", XX, XX, XX }, +Ia_rdtscp = { "rdtscp", "rdtscp", XX, XX, XX }, +Ia_ret = { "ret", "ret", XX, XX, XX }, +Ia_ret_Iw = { "ret", "ret", Iw, XX, XX }, +Ia_rolb_Eb_CL = { "rol", "rolb", Eb, CL, XX }, +Ia_rolb_Eb_I1 = { "rol", "rolb", Eb, I1, XX }, +Ia_rolb_Eb_Ib = { "rol", "rolb", Eb, Ib, XX }, +Ia_rolw_Ew_CL = { "rol", "rolw", Ew, CL, XX }, +Ia_rolw_Ew_I1 = { "rol", "rolw", Ew, I1, XX }, +Ia_rolw_Ew_Ib = { "rol", "rolw", Ew, Ib, XX }, +Ia_rorb_Eb_CL = { "ror", "rorb", Eb, CL, XX }, +Ia_rorb_Eb_I1 = { "ror", "rorb", Eb, I1, XX }, +Ia_rorb_Eb_Ib = { "ror", "rorb", Eb, Ib, XX }, +Ia_rorw_Ew_CL = { "ror", "rorw", Ew, CL, XX }, +Ia_rorw_Ew_I1 = { "ror", "rorw", Ew, I1, XX }, +Ia_rorw_Ew_Ib = { "ror", "rorw", Ew, Ib, XX }, +Ia_rsm = { "rsm", "rsm", XX, XX, XX }, +Ia_sahf = { "sahf", "sahf", XX, XX, XX }, +Ia_salc = { "salc", "salc", XX, XX, XX }, +Ia_sarb_Eb_CL = { "sar", "sarb", Eb, CL, XX }, +Ia_sarb_Eb_I1 = { "sar", "sarb", Eb, I1, XX }, +Ia_sarb_Eb_Ib = { "sar", "sarb", Eb, Ib, XX }, +Ia_sarw_Ew_CL = { "sar", "sarw", Ew, CL, XX }, +Ia_sarw_Ew_I1 = { "sar", "sarw", Ew, I1, XX }, +Ia_sarw_Ew_Ib = { "sar", "sarw", Ew, Ib, XX }, +Ia_sbbb_AL_Ib = { "sbb", "sbbb", AL, Ib, XX }, +Ia_sbbb_Eb_Gb = { "sbb", "sbbb", Eb, Gb, XX }, +Ia_sbbb_Eb_Ib = { "sbb", "sbbb", Eb, Ib, XX }, +Ia_sbbb_Gb_Eb = { "sbb", "sbbb", Gb, Eb, XX }, +Ia_sbbw_AX_Iw = { "sbb", "sbbw", AX, Iw, XX }, +Ia_sbbw_Ew_Gw = { "sbb", "sbbw", Ew, Gw, XX }, +Ia_sbbw_Ew_Iw = { "sbb", "sbbw", Ew, Iw, XX }, +Ia_sbbw_Ew_sIb = { "sbb", "sbbw", Ew, sIbw, XX }, +Ia_sbbw_Gw_Ew = { "sbb", "sbbw", Gw, Ew, XX }, +Ia_scasb_Yb_AL = { "scasb", "scasb", Yb, AL, XX }, +Ia_scasw_Yw_AX = { "scasw", "scasw", Yw, AX, XX }, +Ia_setb_Eb = { "setb", "setb", Eb, XX, XX }, +Ia_setbe_Eb = { "setbe", "setbe", Eb, XX, XX }, +Ia_setl_Eb = { "setl", "setl", Eb, XX, XX }, +Ia_setle_Eb = { "setle", "setle", Eb, XX, XX }, +Ia_setnb_Eb = { "setnb", "setnb", Eb, XX, XX }, +Ia_setnbe_Eb = { "setnbe", "setnbe", Eb, XX, XX }, +Ia_setnl_Eb = { "setnl", "setnl", Eb, XX, XX }, +Ia_setnle_Eb = { "setnle", "setnle", Eb, XX, XX }, +Ia_setno_Eb = { "setno", "setno", Eb, XX, XX }, +Ia_setnp_Eb = { "setnp", "setnp", Eb, XX, XX }, +Ia_setns_Eb = { "setns", "setns", Eb, XX, XX }, +Ia_setnz_Eb = { "setnz", "setnz", Eb, XX, XX }, +Ia_seto_Eb = { "seto", "seto", Eb, XX, XX }, +Ia_setp_Eb = { "setp", "setp", Eb, XX, XX }, +Ia_sets_Eb = { "sets", "sets", Eb, XX, XX }, +Ia_setz_Eb = { "setz", "setz", Eb, XX, XX }, +Ia_shlb_Eb_CL = { "shl", "shlb", Eb, CL, XX }, +Ia_shlb_Eb_I1 = { "shl", "shlb", Eb, I1, XX }, +Ia_shlb_Eb_Ib = { "shl", "shlb", Eb, Ib, XX }, +Ia_shlw_Ew_CL = { "shl", "shlw", Ew, CL, XX }, +Ia_shlw_Ew_I1 = { "shl", "shlw", Ew, I1, XX }, +Ia_shlw_Ew_Ib = { "shl", "shlw", Ew, Ib, XX }, +Ia_shrb_Eb_CL = { "shr", "shrb", Eb, CL, XX }, +Ia_shrb_Eb_I1 = { "shr", "shrb", Eb, I1, XX }, +Ia_shrb_Eb_Ib = { "shr", "shrb", Eb, Ib, XX }, +Ia_shrw_Ew_CL = { "shr", "shrw", Ew, CL, XX }, +Ia_shrw_Ew_I1 = { "shr", "shrw", Ew, I1, XX }, +Ia_shrw_Ew_Ib = { "shr", "shrw", Ew, Ib, XX }, +Ia_sidt = { "sidt", "sidt", Ms, XX, XX }, +Ia_sldt = { "sldt", "sldt", Ew, XX, XX }, +Ia_stc = { "stc", "stc", XX, XX, XX }, +Ia_std = { "std", "std", XX, XX, XX }, +Ia_sti = { "sti", "sti", XX, XX, XX }, +Ia_stosb_Yb_AL = { "stosb", "stosb", Yb, AL, XX }, +Ia_stosw_Yw_AX = { "stosw", "stosw", Yw, AX, XX }, +Ia_str = { "str", "str", Ew, XX, XX }, +Ia_subb_AL_Ib = { "sub", "subb", AL, Ib, XX }, +Ia_subb_Eb_Gb = { "sub", "subb", Eb, Gb, XX }, +Ia_subb_Eb_Ib = { "sub", "subb", Eb, Ib, XX }, +Ia_subb_Gb_Eb = { "sub", "subb", Gb, Eb, XX }, +Ia_subw_AX_Iw = { "sub", "subw", AX, Iw, XX }, +Ia_subw_Ew_Gw = { "sub", "subw", Ew, Gw, XX }, +Ia_subw_Ew_Iw = { "sub", "subw", Ew, Iw, XX }, +Ia_subw_Ew_sIb = { "sub", "subw", Ew, sIbw, XX }, +Ia_subw_Gw_Ew = { "sub", "subw", Gw, Ew, XX }, +Ia_swapgs = { "swapgs", "swapgs", XX, XX, XX }, +Ia_syscall = { "syscall", "syscall", XX, XX, XX }, +Ia_sysenter = { "sysenter", "sysenter", XX, XX, XX }, +Ia_sysexit = { "sysexit", "sysexit", XX, XX, XX }, +Ia_sysret = { "sysret", "sysret", XX, XX, XX }, + +Ia_testb_AL_Ib = { "test", "testb", AL, Ib, XX }, +Ia_testb_Eb_Gb = { "test", "testb", Eb, Gb, XX }, +Ia_testb_Eb_Ib = { "test", "testb", Eb, Ib, XX }, +Ia_testw_AX_Iw = { "test", "testw", AX, Iw, XX }, +Ia_testw_Ew_Gw = { "test", "testw", Ew, Gw, XX }, +Ia_testw_Ew_Iw = { "test", "testw", Ew, Iw, XX }, + +Ia_xaddb_Eb_Gb = { "xadd", "xaddb", Eb, Gb, XX }, +Ia_xaddw_Ew_Gw = { "xadd", "xaddw", Ew, Gw, XX }, +Ia_xchgb_Eb_Gb = { "xchg", "xchgb", Eb, Gb, XX }, +Ia_xchgw_Ew_Gw = { "xchg", "xchgw", Ew, Gw, XX }, +Ia_xchgw_RX_AX = { "xchg", "xchgw", RX, AX, XX }, +Ia_xlat = { "xlat", "xlat", XX, XX, XX }, +Ia_xorb_AL_Ib = { "xor", "xorb", AL, Ib, XX }, +Ia_xorb_Eb_Gb = { "xor", "xorb", Eb, Gb, XX }, +Ia_xorb_Eb_Ib = { "xor", "xorb", Eb, Ib, XX }, +Ia_xorb_Gb_Eb = { "xor", "xorb", Gb, Eb, XX }, +Ia_xorw_AX_Iw = { "xor", "xorw", AX, Iw, XX }, +Ia_xorw_Ew_Gw = { "xor", "xorw", Ew, Gw, XX }, +Ia_xorw_Ew_Iw = { "xor", "xorw", Ew, Iw, XX }, +Ia_xorw_Ew_sIb = { "xor", "xorw", Ew, sIbw, XX }, +Ia_xorw_Gw_Ew = { "xor", "xorw", Gw, Ew, XX }; diff --git a/libmednahawk/src/wswan/dis/resolve.cpp b/libmednahawk/src/wswan/dis/resolve.cpp new file mode 100644 index 0000000000..ccd5e37a71 --- /dev/null +++ b/libmednahawk/src/wswan/dis/resolve.cpp @@ -0,0 +1,227 @@ +///////////////////////////////////////////////////////////////////////// +// $Id: resolve.cc,v 1.13 2006/08/11 17:22:43 sshwarts Exp $ +///////////////////////////////////////////////////////////////////////// + +#include "disasm.h" + +#include +#include + +void disassembler::decode_modrm(x86_insn *insn) +{ + insn->modrm = fetch_byte(); + BX_DECODE_MODRM(insn->modrm, insn->mod, insn->nnn, insn->rm); + // MOVs with CRx and DRx always use register ops and ignore the mod field. + if ((insn->b1 & ~3) == 0x120) insn->mod = 3; + + if (insn->mod == 3) { + /* mod, reg, reg */ + return; + } + /* 16 bit addressing modes. */ + switch (insn->mod) { + case 0: + resolve_modrm = &disassembler::resolve16_mod0; + if(insn->rm == 6) + insn->displacement.displ16 = fetch_word(); + break; + case 1: + /* reg, 8-bit displacement, sign extend */ + resolve_modrm = &disassembler::resolve16_mod1or2; + insn->displacement.displ16 = (int8) fetch_byte(); + break; + case 2: + resolve_modrm = &disassembler::resolve16_mod1or2; + insn->displacement.displ16 = fetch_word(); + break; + } /* switch (mod) ... */ + +} + +void disassembler::resolve16_mod0(const x86_insn *insn, unsigned mode) +{ + const char *seg; + + if (insn->is_seg_override()) + seg = segment_name[insn->seg_override]; + else + seg = sreg_mod00_rm16[insn->rm]; + + if(insn->rm == 6) + print_memory_access16(mode, seg, NULL, insn->displacement.displ16); + else + print_memory_access16(mode, seg, index16[insn->rm], 0); +} + +void disassembler::resolve16_mod1or2(const x86_insn *insn, unsigned mode) +{ + const char *seg; + + if (insn->is_seg_override()) + seg = segment_name[insn->seg_override]; + else + seg = sreg_mod01or10_rm16[insn->rm]; + + print_memory_access16(mode, seg, index16[insn->rm], insn->displacement.displ16); +} + +void disassembler::print_datasize(unsigned size) +{ + if (!intel_mode) return; + + switch(size) + { + case B_SIZE: + dis_sprintf("byte ptr "); + break; + case W_SIZE: + dis_sprintf("word ptr "); + break; + case D_SIZE: + dis_sprintf("dword ptr "); + break; + case Q_SIZE: + dis_sprintf("qword ptr "); + break; + case O_SIZE: + dis_sprintf("dqword ptr "); + break; + case T_SIZE: + dis_sprintf("tbyte ptr "); + break; + case P_SIZE: + break; + case X_SIZE: + break; + }; +} + +void disassembler::print_memory_access16(int datasize, + const char *seg, const char *index, uint16 disp) +{ + print_datasize(datasize); + + if (intel_mode) + { + if (index == NULL) + { + dis_sprintf("%s:0x%x", seg, (unsigned) disp); + } + else + { + if (disp != 0) + dis_sprintf("%s:[%s+0x%x]", seg, index, (unsigned) disp); + else + dis_sprintf("%s:[%s]", seg, index); + } + } + else + { + if (index == NULL) + { + dis_sprintf("%s:0x%x", seg, (unsigned) disp); + } + else + { + if (disp != 0) + dis_sprintf("%s:0x%x(%s,1)", seg, (unsigned) disp, index); + else + dis_sprintf("%s:(%s,1)", seg, index); + } + } +} + +void disassembler::print_memory_access(int datasize, + const char *seg, const char *base, const char *index, int scale, uint32 disp) +{ + print_datasize(datasize); + + if (intel_mode) + { + if (base == NULL) + { + if (index == NULL) + { + dis_sprintf("%s:0x%x", seg, (unsigned) disp); + } + else + { + if (scale != 0) + { + if (disp != 0) + dis_sprintf("%s:[%s*%d+0x%x]", seg, index, 1< + +////////////////// +// Intel STYLE +////////////////// + +static const char *intel_general_16bit_regname[8] = { + "ax", "cx", "dx", "bx", "sp", "bp", "si", "di" +}; + +static const char *intel_general_8bit_regname[8] = { + "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh" +}; + +static const char *intel_segment_name[8] = { + "es", "cs", "ss", "ds", "fs", "gs", "??", "??" +}; + +static const char *intel_index16[8] = { + "bx+si", + "bx+di", + "bp+si", + "bp+di", + "si", + "di", + "bp", + "bx" +}; + + +////////////////// +// AT&T STYLE +////////////////// + +static const char *att_general_16bit_regname[8] = { + "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di" +}; + +static const char *att_general_8bit_regname[8] = { + "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh" +}; + +static const char *att_segment_name[8] = { + "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%??", "%??" +}; + +static const char *att_index16[8] = { + "%bx, %si", + "%bx, %di", + "%bp, %si", + "%bp, %di", + "%si", + "%di", + "%bp", + "%bx" +}; + +#define NULL_SEGMENT_REGISTER 7 + +void disassembler::initialize_modrm_segregs() +{ + sreg_mod00_rm16[0] = segment_name[DS_REG]; + sreg_mod00_rm16[1] = segment_name[DS_REG]; + sreg_mod00_rm16[2] = segment_name[SS_REG]; + sreg_mod00_rm16[3] = segment_name[SS_REG]; + sreg_mod00_rm16[4] = segment_name[DS_REG]; + sreg_mod00_rm16[5] = segment_name[DS_REG]; + sreg_mod00_rm16[6] = segment_name[DS_REG]; + sreg_mod00_rm16[7] = segment_name[DS_REG]; + + sreg_mod01or10_rm16[0] = segment_name[DS_REG]; + sreg_mod01or10_rm16[1] = segment_name[DS_REG]; + sreg_mod01or10_rm16[2] = segment_name[SS_REG]; + sreg_mod01or10_rm16[3] = segment_name[SS_REG]; + sreg_mod01or10_rm16[4] = segment_name[DS_REG]; + sreg_mod01or10_rm16[5] = segment_name[DS_REG]; + sreg_mod01or10_rm16[6] = segment_name[SS_REG]; + sreg_mod01or10_rm16[7] = segment_name[DS_REG]; + + sreg_mod01or10_rm32[0] = segment_name[DS_REG]; + sreg_mod01or10_rm32[1] = segment_name[DS_REG]; + sreg_mod01or10_rm32[2] = segment_name[DS_REG]; + sreg_mod01or10_rm32[3] = segment_name[DS_REG]; + sreg_mod01or10_rm32[4] = segment_name[NULL_SEGMENT_REGISTER]; + sreg_mod01or10_rm32[5] = segment_name[SS_REG]; + sreg_mod01or10_rm32[6] = segment_name[DS_REG]; + sreg_mod01or10_rm32[7] = segment_name[DS_REG]; + + sreg_mod00_base32[0] = segment_name[DS_REG]; + sreg_mod00_base32[1] = segment_name[DS_REG]; + sreg_mod00_base32[2] = segment_name[DS_REG]; + sreg_mod00_base32[3] = segment_name[DS_REG]; + sreg_mod00_base32[4] = segment_name[SS_REG]; + sreg_mod00_base32[5] = segment_name[DS_REG]; + sreg_mod00_base32[6] = segment_name[DS_REG]; + sreg_mod00_base32[7] = segment_name[DS_REG]; + + sreg_mod01or10_base32[0] = segment_name[DS_REG]; + sreg_mod01or10_base32[1] = segment_name[DS_REG]; + sreg_mod01or10_base32[2] = segment_name[DS_REG]; + sreg_mod01or10_base32[3] = segment_name[DS_REG]; + sreg_mod01or10_base32[4] = segment_name[SS_REG]; + sreg_mod01or10_base32[5] = segment_name[SS_REG]; + sreg_mod01or10_base32[6] = segment_name[DS_REG]; + sreg_mod01or10_base32[7] = segment_name[DS_REG]; +} + +////////////////// +// Intel STYLE +////////////////// + +void disassembler::set_syntax_intel() +{ + intel_mode = 1; + + general_16bit_regname = intel_general_16bit_regname; + general_8bit_regname = intel_general_8bit_regname; + + segment_name = intel_segment_name; + index16 = intel_index16; + + initialize_modrm_segregs(); +} + +void disassembler::print_disassembly_intel(const x86_insn *insn, const BxDisasmOpcodeInfo_t *entry) +{ + // print opcode + dis_sprintf("%s ", entry->IntelOpcode); + + if (entry->Operand1) { + (this->*entry->Operand1)(insn); + } + if (entry->Operand2) { + dis_sprintf(", "); + (this->*entry->Operand2)(insn); + } + if (entry->Operand3) { + dis_sprintf(", "); + (this->*entry->Operand3)(insn); + } +} + +////////////////// +// AT&T STYLE +////////////////// + +void disassembler::set_syntax_att() +{ + intel_mode = 0; + + general_16bit_regname = att_general_16bit_regname; + general_8bit_regname = att_general_8bit_regname; + + segment_name = att_segment_name; + index16 = att_index16; + + initialize_modrm_segregs(); +} + +void disassembler::toggle_syntax_mode() +{ + if (intel_mode) set_syntax_att(); + else set_syntax_intel(); +} + +void disassembler::print_disassembly_att(const x86_insn *insn, const BxDisasmOpcodeInfo_t *entry) +{ + // print opcode + dis_sprintf("%s ", entry->AttOpcode); + + if (entry->Operand3) { + (this->*entry->Operand3)(insn); + dis_sprintf(", "); + } + if (entry->Operand2) { + (this->*entry->Operand2)(insn); + dis_sprintf(", "); + } + if (entry->Operand1) { + (this->*entry->Operand1)(insn); + } +} diff --git a/libmednahawk/src/wswan/eeprom.cpp b/libmednahawk/src/wswan/eeprom.cpp new file mode 100644 index 0000000000..9501b6afa0 --- /dev/null +++ b/libmednahawk/src/wswan/eeprom.cpp @@ -0,0 +1,231 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include "eeprom.h" +#include "memory.h" +#include + +namespace MDFN_IEN_WSWAN +{ + + + +uint8 wsEEPROM[2048]; +static uint8 iEEPROM[0x400]; +static const uint8 iEEPROM_Init[0x400] = +{ + 255,255,255,255,255,255,192,255,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,127,0,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,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,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 0,252,255,1,255,253,255,253,255,253,255,253, + 255,253,255,253,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,3,3,0,0,0,64,128,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, + 135,5,140,9,5,12,139,12,144,0,0,2, + 0,76,165,0,128,0,0,0,255,127,255,127, + 255,127,255,127,255,127,255,127,255,127,255,127, + 255,127,255,127,255,127,255,127,255,127,255,127, + 255,127,255,127,255,127,255,127,255,127,255,127, + 255,127,255,127,255,127,255,127,255,127,255,127, + 255,127,255,127,255,127,255,127,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,6,6,6,6,6,0,0,0,0,0, + 1,128,15,0,1,1,1,15,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,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, + 'C'-54,'Y'-54,'G'-54,'N'-54,'E'-54,0,0,0,0,0,0,0,0,0,0, + 0,32,1,1,33,1,4,0,1, + 0,152,60,127,74,1,53,1,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255 +}; + +static uint8 iEEPROM_Command, EEPROM_Command; +static uint16 iEEPROM_Address, EEPROM_Address; + +uint8 WSwan_EEPROMRead(uint32 A) +{ + switch(A) + { + default: printf("Read: %04x\n", A); break; + + case 0xBA: return(iEEPROM[(iEEPROM_Address << 1) & 0x3FF]); + case 0xBB: return(iEEPROM[((iEEPROM_Address << 1) | 1) & 0x3FF]); + case 0xBC: return(iEEPROM_Address >> 0); + case 0xBD: return(iEEPROM_Address >> 8); + case 0xBE: + if(iEEPROM_Command & 0x20) return iEEPROM_Command|2; + if(iEEPROM_Command & 0x10) return iEEPROM_Command|1; + return iEEPROM_Command | 3; + + + case 0xC4: return(wsEEPROM[(EEPROM_Address << 1) & (eeprom_size - 1)]); + case 0xC5: return(wsEEPROM[((EEPROM_Address << 1) | 1) & (eeprom_size - 1)]); + case 0xC6: return(EEPROM_Address >> 0); + case 0xC7: return(EEPROM_Address >> 8); + case 0xC8: if(EEPROM_Command & 0x20) return EEPROM_Command|2; + if(EEPROM_Command & 0x10) return EEPROM_Command|1; + return EEPROM_Command | 3; + } + return(0); +} + + +void WSwan_EEPROMWrite(uint32 A, uint8 V) +{ + switch(A) + { + case 0xBA: iEEPROM[(iEEPROM_Address << 1) & 0x3FF] = V; break; + case 0xBB: iEEPROM[((iEEPROM_Address << 1) | 1) & 0x3FF] = V; break; + case 0xBC: iEEPROM_Address &= 0xFF00; iEEPROM_Address |= (V << 0); break; + case 0xBD: iEEPROM_Address &= 0x00FF; iEEPROM_Address |= (V << 8); break; + case 0xBE: iEEPROM_Command = V; break; + + case 0xC4: wsEEPROM[(EEPROM_Address << 1) & (eeprom_size - 1)] = V; break; + case 0xC5: wsEEPROM[((EEPROM_Address << 1) | 1) & (eeprom_size - 1)] = V; break; + + case 0xC6: EEPROM_Address &= 0xFF00; EEPROM_Address |= (V << 0); break; + case 0xC7: EEPROM_Address &= 0x00FF; EEPROM_Address |= (V << 8); break; + case 0xC8: EEPROM_Command = V; break; + } +} + +void WSwan_EEPROMReset(void) +{ + iEEPROM_Command = EEPROM_Command = 0; + iEEPROM_Address = EEPROM_Address = 0; +} + +void WSwan_EEPROMInit(const char *Name, const uint16 BYear, const uint8 BMonth, const uint8 BDay, const uint8 Sex, const uint8 Blood) +{ + memset(wsEEPROM, 0, 2048); + memcpy(iEEPROM, iEEPROM_Init, 0x400); + + for(unsigned int x = 0; x < 16; x++) + { + uint8 zechar = 0; + + if(x < strlen(Name)) + { + char tc = toupper(Name[x]); + if(tc == ' ') zechar = 0; + else if(tc >= '0' && tc <= '9') zechar = tc - '0' + 0x1; + else if(tc >= 'A' && tc <= 'Z') zechar = tc - 'A' + 0xB; + else if(tc >= 'a' && tc <= 'z') zechar = tc - 'a' + 0xB + 26; + } + iEEPROM[0x360 + x] = zechar; + } + + #define mBCD16(value) ( (((((value)%100) / 10) <<4)|((value)%10)) | ((((((value / 100)%100) / 10) <<4)|((value / 100)%10))<<8) ) + #define INT16_TO_BCD(A) ((((((A) % 100) / 10) * 16 + ((A) % 10))) | (((((((A) / 100) % 100) / 10) * 16 + (((A) / 100) % 10))) << 8)) // convert INT16 --> BCD + + uint16 bcd_BYear = INT16_TO_BCD(BYear); + + iEEPROM[0x370] = (bcd_BYear >> 8) & 0xFF; + iEEPROM[0x371] = (bcd_BYear >> 0) & 0xFF; + iEEPROM[0x372] = mBCD(BMonth); + iEEPROM[0x373] = mBCD(BDay); + iEEPROM[0x374] = Sex; + iEEPROM[0x375] = Blood; +} + +int WSwan_EEPROMStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(iEEPROM_Command), + SFVAR(iEEPROM_Address), + SFVAR(EEPROM_Command), + SFVAR(EEPROM_Address), + SFARRAY(iEEPROM, sizeof(iEEPROM)), + SFARRAYN(eeprom_size ? wsEEPROM : NULL, eeprom_size, "EEPROM"), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "EEPR")) + return(0); + + return(1); +} + +} diff --git a/libmednahawk/src/wswan/eeprom.h b/libmednahawk/src/wswan/eeprom.h new file mode 100644 index 0000000000..bdc305bdde --- /dev/null +++ b/libmednahawk/src/wswan/eeprom.h @@ -0,0 +1,15 @@ +#ifndef __WSWAN_EEPROM_H +#define __WSWAN_EEPROM_H + +namespace MDFN_IEN_WSWAN +{ + +uint8 WSwan_EEPROMRead(uint32 A); +void WSwan_EEPROMWrite(uint32 A, uint8 V); +int WSwan_EEPROMStateAction(StateMem *sm, int load, int data_only); +void WSwan_EEPROMReset(void); +void WSwan_EEPROMInit(const char *Name, const uint16 BYear, const uint8 BMonth, const uint8 BDay, const uint8 Sex, const uint8 Blood); + +} + +#endif diff --git a/libmednahawk/src/wswan/gfx.cpp b/libmednahawk/src/wswan/gfx.cpp new file mode 100644 index 0000000000..a5f9466da4 --- /dev/null +++ b/libmednahawk/src/wswan/gfx.cpp @@ -0,0 +1,991 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include "gfx.h" +#include "memory.h" +#include "v30mz.h" +#include "rtc.h" +#include "../video.h" +#include + +namespace MDFN_IEN_WSWAN +{ + +static uint32 wsMonoPal[16][4]; +static uint32 wsColors[8]; +static uint32 wsCols[16][16]; + +static uint32 ColorMapG[16]; +static uint32 ColorMap[16*16*16]; +static uint32 LayerEnabled; + +static uint8 wsLine; /*current scanline*/ + +static uint8 SpriteTable[0x80][4]; +static uint32 SpriteCountCache; +static uint8 DispControl; +static uint8 BGColor; +static uint8 LineCompare; +static uint8 SPRBase; +static uint8 SpriteStart, SpriteCount; +static uint8 FGBGLoc; +static uint8 FGx0, FGy0, FGx1, FGy1; +static uint8 SPRx0, SPRy0, SPRx1, SPRy1; + +static uint8 BGXScroll, BGYScroll; +static uint8 FGXScroll, FGYScroll; +static uint8 LCDControl, LCDIcons; + +static uint8 BTimerControl; +static uint16 HBTimerPeriod; +static uint16 VBTimerPeriod; + +static uint16 HBCounter, VBCounter; +static uint8 VideoMode; + +#ifdef WANT_DEBUGGER + +RegType WSwanGfxRegs[] = +{ + { 0, "DispControl", "Display Control", 1 }, + { 0, "VideoMode", "Video Mode", 1 }, + { 0, "LCDControl", "LCD Control", 1 }, + { 0, "LCDIcons", "LCD Icons", 1 }, + { 0, "BTimerControl", "VB/HB Timer Control", 1 }, + { 0, "HBTimerPeriod", "Horizontal blank timer counter period", 2 }, + { 0, "VBTimerPeriod", "Vertical blank timer counter period", 2 }, + { 0, "HBCounter", "Horizontal blank counter", 1 }, + { 0, "VBCounter", "Vertical blank counter", 1 }, + { 0, "BGColor", "Background Color", 1 }, + { 0, "LineCompare", "Line Compare", 1 }, + { 0, "SPRBase", "Sprite Table Base", 1 }, + { 0, "SpriteStart", "SpriteStart", 1 }, + { 0, "SpriteCount", "SpriteCount", 1 }, + + { 0, "FGBGLoc", "FG/BG Map Location", 1 }, + + { 0, "FGx0", "Foreground Window X0", 1 }, + { 0, "FGy0", "Foreground Window Y0", 1 }, + { 0, "FGx1", "Foreground Window X1", 1 }, + { 0, "FGy1", "Foreground Window Y1", 1 }, + { 0, "SPRx0", "Sprite Window X0", 1 }, + { 0, "SPRy0", "Sprite Window Y0", 1 }, + { 0, "SPRx1", "Sprite Window X1", 1 }, + { 0, "SPRy1", "Sprite Window Y1", 1 }, + + { 0, "BGXScroll", "Background X Scroll", 1 }, + { 0, "BGYScroll", "Background Y Scroll", 1 }, + { 0, "FGXScroll", "Foreground X Scroll", 1 }, + { 0, "FGYScroll", "Foreground Y Scroll", 1 }, + { 0, "", "", 0 }, +}; + +uint32 WSwan_GfxGetRegister(const std::string &oname, std::string *special) +{ + if(oname == "DispControl") + return(DispControl); + if(oname == "BGColor") + return(BGColor); + if(oname == "LineCompare") + return(LineCompare); + if(oname == "SPRBase") + { + if(special) + { + char tmpstr[256]; + trio_snprintf(tmpstr, 256, "0x%02x * 0x200 = 0x%04x", SPRBase, SPRBase * 0x200); + *special = std::string(tmpstr); + } + return(SPRBase); + } + if(oname == "SpriteStart") + return(SpriteStart); + if(oname == "SpriteCount") + return(SpriteCount); + if(oname == "FGBGLoc") + return(FGBGLoc); + if(oname == "FGx0") + return(FGx0); + if(oname == "FGy0") + return(FGy0); + if(oname == "FGx1") + return(FGx1); + if(oname == "FGy1") + return(FGy1); + if(oname == "SPRx0") + return(SPRx0); + if(oname == "SPRy0") + return(SPRy0); + if(oname == "SPRx1") + return(SPRx1); + if(oname == "SPRy1") + return(SPRy1); + if(oname == "BGXScroll") + return(BGXScroll); + if(oname == "BGYScroll") + return(BGYScroll); + if(oname == "FGXScroll") + return(FGXScroll); + if(oname == "FGYScroll") + return(FGYScroll); + if(oname == "LCDIcons") + return(LCDIcons); + if(oname == "LCDControl") + return(LCDControl); + if(oname == "BTimerControl") + return(BTimerControl); + if(oname == "HBTimerPeriod") + return(HBTimerPeriod); + if(oname == "VBTimerPeriod") + return(VBTimerPeriod); + if(oname == "HBCounter") + return(HBCounter); + if(oname == "VBCounter") + return(VBCounter); + if(oname == "VideoMode") + return(VideoMode); + + return(0); +} + +void WSwan_GfxSetRegister(const std::string &oname, uint32 value) +{ + if(oname == "DispControl") + DispControl = value; + if(oname == "BGColor") + BGColor = value; + if(oname == "LineCompare") + LineCompare = value; + if(oname == "SPRBase") + SPRBase = value; + if(oname == "SpriteStart") + SpriteStart = value; + if(oname == "SpriteCount") + SpriteCount = value; + if(oname == "FGBGLoc") + FGBGLoc = value; + if(oname == "FGx0") + FGx0 = value; + if(oname == "FGy0") + FGy0 = value; + if(oname == "FGx1") + FGx1 = value; + if(oname == "FGy1") + FGy1 = value; + if(oname == "SPRx0") + SPRx0 = value; + if(oname == "SPRy0") + SPRy0 = value; + if(oname == "SPRx1") + SPRx1 = value; + if(oname == "SPRy1") + SPRy1 = value; + if(oname == "BGXScroll") + BGXScroll = value; + if(oname == "BGYScroll") + BGYScroll = value; + if(oname == "FGXScroll") + FGXScroll = value; + if(oname == "FGYScroll") + FGYScroll = value; + if(oname == "LCDIcons") + LCDIcons = value; + if(oname == "LCDControl") + LCDControl = value; + if(oname == "BTimerControl") + BTimerControl = value; + if(oname == "HBTimerPeriod") + HBTimerPeriod = value; + if(oname == "VBTimerPeriod") + VBTimerPeriod = value; + if(oname == "HBCounter") + HBCounter = value; + if(oname == "VBCounter") + VBCounter = value; + if(oname == "VideoMode") + { + VideoMode = value; + wsSetVideo(VideoMode >> 5, false); + } +} + +static RegGroupType WSwanGfxRegsGroup = +{ + "Gfx", + WSwanGfxRegs, + NULL, + NULL, + WSwan_GfxGetRegister, + WSwan_GfxSetRegister, +}; + + +static void DoGfxDecode(void); +static MDFN_Surface *GfxDecode_Buf = NULL; +static int GfxDecode_Line = -1; +static int GfxDecode_Layer = 0; +static int GfxDecode_Scroll = 0; +static int GfxDecode_Pbn = 0; +#endif + +void WSwan_GfxInit(void) +{ + LayerEnabled = 7; // BG, FG, sprites + #ifdef WANT_DEBUGGER + MDFNDBG_AddRegGroup(&WSwanGfxRegsGroup); + #endif +} + +void WSwan_GfxWSCPaletteRAMWrite(uint32 ws_offset, uint8 data) +{ + ws_offset=(ws_offset&0xfffe)-0xfe00; + wsCols[(ws_offset>>1)>>4][(ws_offset>>1)&15] = wsRAM[ws_offset+0xfe00] | ((wsRAM[ws_offset+0xfe01]&0x0f) << 8); +} + +void WSwan_GfxWrite(uint32 A, uint8 V) +{ + if(A >= 0x1C && A <= 0x1F) + { + wsColors[(A - 0x1C) * 2 + 0] = 0xF - (V & 0xf); + wsColors[(A - 0x1C) * 2 + 1] = 0xF - (V >> 4); + } + else if(A >= 0x20 && A <= 0x3F) + { + wsMonoPal[(A - 0x20) >> 1][((A & 0x1) << 1) + 0] = V&7; + wsMonoPal[(A - 0x20) >> 1][((A & 0x1) << 1) | 1] = (V>>4)&7; + } + else switch(A) + { + case 0x00: DispControl = V; break; + case 0x01: BGColor = V; break; + case 0x03: LineCompare = V; break; + case 0x04: SPRBase = V & 0x3F; break; + case 0x05: SpriteStart = V; break; + case 0x06: SpriteCount = V; break; + case 0x07: FGBGLoc = V; break; + case 0x08: FGx0 = V; break; + case 0x09: FGy0 = V; break; + case 0x0A: FGx1 = V; break; + case 0x0B: FGy1 = V; break; + case 0x0C: SPRx0 = V; break; + case 0x0D: SPRy0 = V; break; + case 0x0E: SPRx1 = V; break; + case 0x0F: SPRy1 = V; break; + case 0x10: BGXScroll = V; break; + case 0x11: BGYScroll = V; break; + case 0x12: FGXScroll = V; break; + case 0x13: FGYScroll = V; break; + + case 0x14: LCDControl = V; break; // if((!(wsIO[0x14]&1))&&(data&1)) { wsLine=0; }break; /* LCD off ??*/ + case 0x15: LCDIcons = V; break; + + case 0x60: VideoMode = V; + wsSetVideo(V>>5, false); + //printf("VideoMode: %02x, %02x\n", V, V >> 5); + break; + + case 0xa2: if((V & 0x01) && !(BTimerControl & 0x01)) + HBCounter = HBTimerPeriod; + if((V & 0x04) && !(BTimerControl & 0x04)) + VBCounter = VBTimerPeriod; + BTimerControl = V; + //printf("%04x:%02x\n", A, V); + break; + case 0xa4: HBTimerPeriod &= 0xFF00; HBTimerPeriod |= (V << 0); /*printf("%04x:%02x, %d\n", A, V, wsLine);*/ break; + case 0xa5: HBTimerPeriod &= 0x00FF; HBTimerPeriod |= (V << 8); HBCounter = HBTimerPeriod; /*printf("%04x:%02x, %d\n", A, V, wsLine);*/ break; + case 0xa6: VBTimerPeriod &= 0xFF00; VBTimerPeriod |= (V << 0); /*printf("%04x:%02x, %d\n", A, V, wsLine);*/ break; + case 0xa7: VBTimerPeriod &= 0x00FF; VBTimerPeriod |= (V << 8); VBCounter = VBTimerPeriod; /*printf("%04x:%02x, %d\n", A, V, wsLine);*/ break; + //default: printf("%04x:%02x\n", A, V); break; + } +} + +uint8 WSwan_GfxRead(uint32 A) +{ + if(A >= 0x1C && A <= 0x1F) + { + uint8 ret = 0; + + ret |= 0xF - wsColors[(A - 0x1C) * 2 + 0]; + ret |= (0xF - wsColors[(A - 0x1C) * 2 + 1]) << 4; + + return(ret); + } + else if(A >= 0x20 && A <= 0x3F) + { + uint8 ret = wsMonoPal[(A - 0x20) >> 1][((A & 0x1) << 1) + 0] | (wsMonoPal[(A - 0x20) >> 1][((A & 0x1) << 1) | 1] << 4); + + return(ret); + } + else switch(A) + { + case 0x00: return(DispControl); + case 0x01: return(BGColor); + case 0x02: return(wsLine); + case 0x03: return(LineCompare); + case 0x04: return(SPRBase); + case 0x05: return(SpriteStart); + case 0x06: return(SpriteCount); + case 0x07: return(FGBGLoc); + case 0x08: return(FGx0); break; + case 0x09: return(FGy0); break; + case 0x0A: return(FGx1); break; + case 0x0B: return(FGy1); break; + case 0x0C: return(SPRx0); break; + case 0x0D: return(SPRy0); break; + case 0x0E: return(SPRx1); break; + case 0x0F: return(SPRy1); break; + case 0x10: return(BGXScroll); + case 0x11: return(BGYScroll); + case 0x12: return(FGXScroll); + case 0x13: return(FGYScroll); + case 0x14: return(LCDControl); + case 0x15: return(LCDIcons); + case 0x60: return(VideoMode); + case 0xa0: return(wsc ? 0x87 : 0x86); + case 0xa2: return(BTimerControl); + case 0xa4: return((HBTimerPeriod >> 0) & 0xFF); + case 0xa5: return((HBTimerPeriod >> 8) & 0xFF); + case 0xa6: return((VBTimerPeriod >> 0) & 0xFF); + case 0xa7: return((VBTimerPeriod >> 8) & 0xFF); + case 0xa8: /*printf("%04x\n", A);*/ return((HBCounter >> 0) & 0xFF); + case 0xa9: /*printf("%04x\n", A);*/ return((HBCounter >> 8) & 0xFF); + case 0xaa: /*printf("%04x\n", A);*/ return((VBCounter >> 0) & 0xFF); + case 0xab: /*printf("%04x\n", A);*/ return((VBCounter >> 8) & 0xFF); + default: return(0); + //default: printf("GfxRead: %04x\n", A); return(0); + } +} + +bool wsExecuteLine(MDFN_Surface *surface, bool skip) +{ + bool ret = FALSE; + + #ifdef WANT_DEBUGGER + if(GfxDecode_Buf && GfxDecode_Line >=0 && wsLine == GfxDecode_Line) + DoGfxDecode(); + #endif + + if(wsLine < 144) + { + if(!skip) + wsScanline(surface->pixels + wsLine * surface->pitch32); + } + + WSwan_CheckSoundDMA(); + + // Update sprite data table + if(wsLine == 142) + { + SpriteCountCache = SpriteCount; + + if(SpriteCountCache > 0x80) + SpriteCountCache = 0x80; + + memcpy(SpriteTable, &wsRAM[(SPRBase << 9) + (SpriteStart << 2)], SpriteCountCache << 2); + } + + if(wsLine == 144) + { + ret = TRUE; + WSwan_Interrupt(WSINT_VBLANK); + //printf("VBlank: %d\n", wsLine); + } + + + if(HBCounter && (BTimerControl & 0x01)) + { + HBCounter--; + if(!HBCounter) + { + // Loop mode? + if(BTimerControl & 0x02) + HBCounter = HBTimerPeriod; + WSwan_Interrupt(WSINT_HBLANK_TIMER); + } + } + + v30mz_execute(224); + wsLine = (wsLine + 1) % 159; + if(wsLine == LineCompare) + { + WSwan_Interrupt(WSINT_LINE_HIT); + //printf("Line hit: %d\n", wsLine); + } + v30mz_execute(32); + WSwan_RTCClock(256); + + if(!wsLine) + { + if(VBCounter && (BTimerControl & 0x04)) + { + VBCounter--; + if(!VBCounter) + { + if(BTimerControl & 0x08) // Loop mode? + VBCounter = VBTimerPeriod; + + WSwan_Interrupt(WSINT_VBLANK_TIMER); + } + } + wsLine = 0; + } + //if(ret) puts("Frame"); + return(ret); +} + +void WSwan_SetLayerEnableMask(uint64 mask) +{ + LayerEnabled = mask; +} + +void WSwan_SetPixelFormat(const MDFN_PixelFormat &format) +{ + for(int r = 0; r < 16; r++) + for(int g = 0; g < 16; g++) + for(int b = 0; b < 16; b++) + { + uint32 neo_r, neo_g, neo_b; + + neo_r = r * 17; + neo_g = g * 17; + neo_b = b * 17; + + ColorMap[(r << 8) | (g << 4) | (b << 0)] = format.MakeColor(neo_r, neo_g, neo_b); //(neo_r << rs) | (neo_g << gs) | (neo_b << bs); + } + + for(int i = 0; i < 16; i++) + { + uint32 neo_r, neo_g, neo_b; + + neo_r = (i) * 17; + neo_g = (i) * 17; + neo_b = (i) * 17; + + ColorMapG[i] = format.MakeColor(neo_r, neo_g, neo_b); //(neo_r << rs) | (neo_g << gs) | (neo_b << bs); + } +} + +void wsScanline(uint32 *target) +{ + uint32 start_tile_n,map_a,startindex,adrbuf,b1,b2,j,t,l; + char ys2; + uint8 b_bg[256]; + uint8 b_bg_pal[256]; + + if(!wsVMode) + memset(b_bg, wsColors[BGColor&0xF]&0xF, 256); + else + { + memset(&b_bg[0], BGColor & 0xF, 256); + memset(&b_bg_pal[0], (BGColor>>4) & 0xF, 256); + } + start_tile_n=(wsLine+BGYScroll)&0xff;/*First line*/ + map_a=(((uint32)(FGBGLoc&0xF))<<11)+((start_tile_n&0xfff8)<<3); + startindex = BGXScroll >> 3; /*First tile in row*/ + adrbuf = 7-(BGXScroll&7); /*Pixel in tile*/ + + if((DispControl & 0x01) && (LayerEnabled & 0x01)) /*BG layer*/ + { + for(t=0;t<29;t++) + { + b1=wsRAM[map_a+(startindex<<1)]; + b2=wsRAM[map_a+(startindex<<1)+1]; + uint32 palette=(b2>>1)&15; + b2=(b2<<8)|b1; + wsGetTile(b2&0x1ff,start_tile_n&7,b2&0x8000,b2&0x4000,b2&0x2000); + + if(wsVMode) + { + if(wsVMode & 0x2) + { + for(int x = 0; x < 8; x++) + if(wsTileRow[x]) + { + b_bg[adrbuf + x] = wsTileRow[x]; + b_bg_pal[adrbuf + x] = palette; + } + } + else + { + for(int x = 0; x < 8; x++) + if(wsTileRow[x] || !(palette & 0x4)) + { + b_bg[adrbuf + x] = wsTileRow[x]; + b_bg_pal[adrbuf + x] = palette; + } + } + } + else + { + for(int x = 0; x < 8; x++) + if(wsTileRow[x] || !(palette & 4)) + { + b_bg[adrbuf + x] = wsColors[wsMonoPal[palette][wsTileRow[x]]]; + } + } + adrbuf += 8; + startindex=(startindex + 1)&31; + } // end for(t = 0 ... + } // End BG layer drawing + + if((DispControl & 0x02) && (LayerEnabled & 0x02))/*FG layer*/ + { + uint8 windowtype = DispControl&0x30; + bool in_window[256 + 8*2]; + + if(windowtype) + { + memset(in_window, 0, sizeof(in_window)); + + if(windowtype == 0x20) // Display FG only inside window + { + if((wsLine >= FGy0) && (wsLine < FGy1)) + for(j = FGx0; j <= FGx1 && j < 224; j++) + in_window[7 + j] = 1; + } + else if(windowtype == 0x30) // Display FG only outside window + { + for(j = 0; j < 224; j++) + { + if(!(j >= FGx0 && j < FGx1) || !((wsLine >= FGy0) && (wsLine < FGy1))) + in_window[7 + j] = 1; + } + } + else + { + puts("Who knows!"); + } + } + else + memset(in_window, 1, sizeof(in_window)); + + start_tile_n=(wsLine+FGYScroll)&0xff; + map_a=(((uint32)((FGBGLoc>>4)&0xF))<<11)+((start_tile_n>>3)<<6); + startindex = FGXScroll >> 3; + adrbuf = 7-(FGXScroll&7); + + for(t=0; t<29; t++) + { + b1=wsRAM[map_a+(startindex<<1)]; + b2=wsRAM[map_a+(startindex<<1)+1]; + uint32 palette=(b2>>1)&15; + b2=(b2<<8)|b1; + wsGetTile(b2&0x1ff,start_tile_n&7,b2&0x8000,b2&0x4000,b2&0x2000); + + if(wsVMode) + { + if(wsVMode & 0x2) + for(int x = 0; x < 8; x++) + { + if(wsTileRow[x] && in_window[adrbuf + x]) + { + b_bg[adrbuf + x] = wsTileRow[x] | 0x10; + b_bg_pal[adrbuf + x] = palette; + } + } + else + for(int x = 0; x < 8; x++) + { + if((wsTileRow[x] || !(palette & 0x4)) && in_window[adrbuf + x]) + { + b_bg[adrbuf + x] = wsTileRow[x] | 0x10; + b_bg_pal[adrbuf + x] = palette; + } + } + } + else + { + for(int x = 0; x < 8; x++) + if((wsTileRow[x] || !(palette & 4)) && in_window[adrbuf + x]) + { + b_bg[adrbuf + x] = wsColors[wsMonoPal[palette][wsTileRow[x]]] | 0x10; + } + } + adrbuf += 8; + startindex=(startindex + 1)&31; + } // end for(t = 0 ... + + } // end FG drawing + + if((DispControl & 0x04) && SpriteCountCache && (LayerEnabled & 0x04))/*Sprites*/ + { + int xs,ts,as,ys,ysx,h; + bool in_window[256 + 8*2]; + + if(DispControl & 0x08) + { + memset(in_window, 0, sizeof(in_window)); + if((wsLine >= SPRy0) && (wsLine < SPRy1)) + for(j = SPRx0; j < SPRx1 && j < 256; j++) + in_window[7 + j] = 1; + } + else + memset(in_window, 1, sizeof(in_window)); + + for(h = SpriteCountCache - 1; h >= 0; h--) + { + ts = SpriteTable[h][0]; + as = SpriteTable[h][1]; + ysx = SpriteTable[h][2]; + ys2 = (int8)SpriteTable[h][2]; + xs = SpriteTable[h][3]; + + if(xs >= 249) xs -= 256; + + if(ysx > 150) + ys = ys2; + else + ys = ysx; + + ys = wsLine - ys; + + if(ys >= 0 && ys < 8 && xs < 224) + { + uint32 palette = ((as >> 1) & 0x7); + + ts |= (as&1) << 8; + wsGetTile(ts, ys, as & 0x80, as & 0x40, 0); + + if(wsVMode) + { + if(wsVMode & 0x2) + { + for(int x = 0; x < 8; x++) + if(wsTileRow[x]) + { + if((as & 0x20) || !(b_bg[xs + x + 7] & 0x10)) + { + bool drawthis = 0; + + if(!(DispControl & 0x08)) + drawthis = TRUE; + else if((as & 0x10) && !in_window[7 + xs + x]) + drawthis = TRUE; + else if(!(as & 0x10) && in_window[7 + xs + x]) + drawthis = TRUE; + + if(drawthis) + { + b_bg[xs + x + 7] = wsTileRow[x] | (b_bg[xs + x + 7] & 0x10); + b_bg_pal[xs + x + 7] = 8 + palette; + } + } + } + } + else + { + for(int x = 0; x < 8; x++) + if(wsTileRow[x] || !(palette & 0x4)) + { + if((as & 0x20) || !(b_bg[xs + x + 7] & 0x10)) + { + bool drawthis = 0; + + if(!(DispControl & 0x08)) + drawthis = TRUE; + else if((as & 0x10) && !in_window[7 + xs + x]) + drawthis = TRUE; + else if(!(as & 0x10) && in_window[7 + xs + x]) + drawthis = TRUE; + + if(drawthis) + { + b_bg[xs + x + 7] = wsTileRow[x] | (b_bg[xs + x + 7] & 0x10); + b_bg_pal[xs + x + 7] = 8 + palette; + } + } + } + + } + + } + else + { + for(int x = 0; x < 8; x++) + if(wsTileRow[x] || !(palette & 4)) + { + if((as & 0x20) || !(b_bg[xs + x + 7] & 0x10)) + { + bool drawthis = 0; + + if(!(DispControl & 0x08)) + drawthis = TRUE; + else if((as & 0x10) && !in_window[7 + xs + x]) + drawthis = TRUE; + else if(!(as & 0x10) && in_window[7 + xs + x]) + drawthis = TRUE; + + if(drawthis) + //if((as & 0x10) || in_window[7 + xs + x]) + { + b_bg[xs + x + 7] = wsColors[wsMonoPal[8 + palette][wsTileRow[x]]] | (b_bg[xs + x + 7] & 0x10); + } + } + } + + } + } + } + + } // End sprite drawing + + if(wsVMode) + { + for(l=0;l<224;l++) + target[l] = ColorMap[wsCols[b_bg_pal[l+7]][b_bg[(l+7)]&0xf]]; + } + else + { + for(l=0;l<224;l++) + target[l] = ColorMapG[(b_bg[l+7])&15]; + } +} + + +void WSwan_GfxReset(void) +{ + wsLine=0; + wsSetVideo(0,TRUE); + + memset(SpriteTable, 0, sizeof(SpriteTable)); + SpriteCountCache = 0; + DispControl = 0; + BGColor = 0; + LineCompare = 0xBB; + SPRBase = 0; + + SpriteStart = 0; + SpriteCount = 0; + FGBGLoc = 0; + + FGx0 = 0; + FGy0 = 0; + FGx1 = 0; + FGy1 = 0; + SPRx0 = 0; + SPRy0 = 0; + SPRx1 = 0; + SPRy1 = 0; + + BGXScroll = BGYScroll = 0; + FGXScroll = FGYScroll = 0; + LCDControl = 0; + LCDIcons = 0; + + BTimerControl = 0; + HBTimerPeriod = 0; + VBTimerPeriod = 0; + + HBCounter = 0; + VBCounter = 0; + + + for(int u0=0;u0<16;u0++) + for(int u1=0;u1<16;u1++) + wsCols[u0][u1]=0; + +} + +int WSwan_GfxStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY32N(&wsMonoPal[0][0], 16 * 4, "wsMonoPal"), + SFARRAY32(wsColors, 8), + + SFVAR(wsLine), + + SFARRAYN(&SpriteTable[0][0], 0x80 * 4, "SpriteTable"), + SFVAR(SpriteCountCache), + SFVAR(DispControl), + SFVAR(BGColor), + SFVAR(LineCompare), + SFVAR(SPRBase), + SFVAR(SpriteStart), + SFVAR(SpriteCount), + SFVAR(FGBGLoc), + SFVAR(FGx0), + SFVAR(FGy0), + SFVAR(FGx1), + SFVAR(FGy1), + + SFVAR(SPRx0), + SFVAR(SPRy0), + + SFVAR(SPRx1), + SFVAR(SPRy1), + + SFVAR(BGXScroll), + SFVAR(BGYScroll), + SFVAR(FGXScroll), + SFVAR(FGYScroll), + SFVAR(LCDControl), + SFVAR(LCDIcons), + + SFVAR(BTimerControl), + SFVAR(HBTimerPeriod), + SFVAR(VBTimerPeriod), + + SFVAR(HBCounter), + SFVAR(VBCounter), + + SFVAR(VideoMode), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "GFX")) + return(0); + + if(load) + { + wsSetVideo(VideoMode >> 5, TRUE); + } + + return(1); +} + +#ifdef WANT_DEBUGGER +static void DoGfxDecode(void) +{ + // FIXME + uint32 *palette_ptr; + uint32 *target = GfxDecode_Buf->pixels; + int w = GfxDecode_Buf->w; + int h = GfxDecode_Buf->h; + int scroll = GfxDecode_Scroll; + uint32 neo_palette[16]; + uint32 tile_limit; + uint32 zero_color = GfxDecode_Buf->MakeColor(0, 0, 0, 0); + + if(wsVMode && GfxDecode_Layer != 2) // Sprites can't use the extra tile bank in WSC mode + tile_limit = 0x400; + else + tile_limit = 0x200; + + if(GfxDecode_Pbn == -1) + { + if(wsVMode) + { + for(int x = 0; x < 16; x++) + neo_palette[x] = GfxDecode_Buf->MakeColor(x * 17, x * 17, x * 17, 0xFF); + } + else + for(int x = 0; x < 16; x++) + neo_palette[x] = GfxDecode_Buf->MakeColor(x * 85, x * 85, x * 85, 0xFF); + } + else + { + if(wsVMode) + for(int x = 0; x < 16; x++) + { + uint32 raw = wsCols[GfxDecode_Pbn & 0xF][x]; + uint32 r, g, b; + + r = (raw >> 8) & 0x0F; + g = (raw >> 4) & 0x0F; + b = (raw >> 0) & 0x0F; + + neo_palette[x] = GfxDecode_Buf->MakeColor(r * 17, g * 17, b * 17, 0xFF); + } + else + for(int x = 0; x < 4; x++) + { + uint32 raw = wsMonoPal[GfxDecode_Pbn & 0xF][x]; + + neo_palette[x] = GfxDecode_Buf->MakeColor(raw * 17 , raw * 17, raw * 17, 0xFF); + } + } + palette_ptr = neo_palette; + + for(int y = 0; y < h; y++) + { + for(int x = 0; x < w; x += 8) + { + unsigned int which_tile = (x / 8) + (scroll + (y / 8)) * (w / 8); + + if(which_tile >= tile_limit) + { + for(int sx = 0; sx < 8; sx++) + { + target[x + sx] = zero_color; + target[x + w * 1 + sx] = 0; + target[x + w * 2 + sx] = 0; + } + continue; + } + + wsGetTile(which_tile & 0x1FF, y&7, 0, 0, which_tile & 0x200); + if(wsVMode) + { + for(int sx = 0; sx < 8; sx++) + target[x + sx] = neo_palette[wsTileRow[sx]]; + } + else + { + for(int sx = 0; sx < 8; sx++) + target[x + sx] = neo_palette[wsTileRow[sx]]; + } + + uint32 address_base; + uint32 tile_bsize; + + if(wsVMode & 0x4) + { + tile_bsize = 4 * 8 * 8 / 8; + if(which_tile & 0x200) + address_base = 0x8000; + else + address_base = 0x4000; + } + else + { + tile_bsize = 2 * 8 * 8 / 8; + if(which_tile & 0x200) + address_base = 0x4000; + else + address_base = 0x2000; + } + + for(int sx = 0; sx < 8; sx++) + { + target[x + w * 1 + sx] = which_tile; + target[x + w * 2 + sx] = address_base + (which_tile & 0x1FF) * tile_bsize; + } + } + target += w * 3; + } +} + +void WSwan_GfxSetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn) +{ + GfxDecode_Buf = surface; + GfxDecode_Line = line; + GfxDecode_Layer = which; + GfxDecode_Scroll = yscroll; + GfxDecode_Pbn = pbn; + + if(GfxDecode_Line == -1) + DoGfxDecode(); +} + +#endif + +} diff --git a/libmednahawk/src/wswan/gfx.h b/libmednahawk/src/wswan/gfx.h new file mode 100644 index 0000000000..23e809b599 --- /dev/null +++ b/libmednahawk/src/wswan/gfx.h @@ -0,0 +1,49 @@ +#ifndef __WSWAN_GFX_H +#define __WSWAN_GFX_H + +namespace MDFN_IEN_WSWAN +{ + + +void WSWan_TCacheInvalidByAddr(uint32); + +extern uint8 wsTCache[512*64]; //tiles cache +extern uint8 wsTCacheFlipped[512*64]; //tiles cache (H flip) +extern uint8 wsTileRow[8]; //extracted 8 pixels (tile row) +extern uint8 wsTCacheUpdate[512]; //tiles cache flags +extern uint8 wsTCache2[512*64]; //tiles cache +extern uint8 wsTCacheFlipped2[512*64]; //tiles cache (H flip) +extern uint8 wsTCacheUpdate2[512]; //tiles cache flags +extern int wsVMode; //Video Mode + +void wsMakeTiles(void); +void wsGetTile(uint32,uint32,int,int,int); +void wsSetVideo(int, bool); + +void wsScanline(uint32 *target); + +extern uint32 dx_r,dx_g,dx_b,dx_sr,dx_sg,dx_sb; +extern uint32 dx_bits,dx_pitch,cmov,dx_linewidth_blit,dx_buffer_line; + + +void WSwan_SetPixelFormat(const MDFN_PixelFormat &format); + +void WSwan_GfxInit(void); +void WSwan_GfxReset(void); +void WSwan_GfxWrite(uint32 A, uint8 V); +uint8 WSwan_GfxRead(uint32 A); +void WSwan_GfxWSCPaletteRAMWrite(uint32 ws_offset, uint8 data); + +bool wsExecuteLine(MDFN_Surface *surface, bool skip); + +void WSwan_SetLayerEnableMask(uint64 mask); +int WSwan_GfxStateAction(StateMem *sm, int load, int data_only); + +#ifdef WANT_DEBUGGER +void WSwan_GfxSetGraphicsDecode(MDFN_Surface *surface, int line, int which, int xscroll, int yscroll, int pbn); +uint32 WSwan_GfxGetRegister(const std::string &oname, std::string *special); +#endif + +} + +#endif diff --git a/libmednahawk/src/wswan/interrupt.cpp b/libmednahawk/src/wswan/interrupt.cpp new file mode 100644 index 0000000000..608ee0edf7 --- /dev/null +++ b/libmednahawk/src/wswan/interrupt.cpp @@ -0,0 +1,168 @@ +#include "wswan.h" +#include "interrupt.h" +#include "v30mz.h" +#include + +namespace MDFN_IEN_WSWAN +{ + + +static uint8 IStatus; +static uint8 IEnable; +static uint8 IVectorBase; + +static bool IOn_Cache; +static uint32 IOn_Which; +static uint32 IVector_Cache; + +static void RecalcInterrupt(void) +{ + IOn_Cache = FALSE; + IOn_Which = 0; + IVector_Cache = 0; + + for(int i = 0; i < 8; i++) + { + if(IStatus & IEnable & (1 << i)) + { + IOn_Cache = TRUE; + IOn_Which = i; + IVector_Cache = (IVectorBase + i) * 4; + break; + } + } +} + +void WSwan_InterruptDebugForce(unsigned int level) +{ + v30mz_int((IVectorBase + level) * 4, TRUE); +} + +void WSwan_Interrupt(int which) +{ + if(IEnable & (1 << which)) + IStatus |= 1 << which; + + //printf("Interrupt: %d\n", which); + RecalcInterrupt(); +} + +void WSwan_InterruptWrite(uint32 A, uint8 V) +{ + //printf("Write: %04x %02x\n", A, V); + switch(A) + { + case 0xB0: IVectorBase = V; RecalcInterrupt(); break; + case 0xB2: IEnable = V; IStatus &= IEnable; RecalcInterrupt(); break; + case 0xB6: /*printf("IStatus: %02x\n", V);*/ IStatus &= ~V; RecalcInterrupt(); break; + } +} + +uint8 WSwan_InterruptRead(uint32 A) +{ + //printf("Read: %04x\n", A); + switch(A) + { + case 0xB0: return(IVectorBase); + case 0xB2: return(IEnable); + case 0xB6: return(1 << IOn_Which); //return(IStatus); + } + return(0); +} + +void WSwan_InterruptCheck(void) +{ + if(IOn_Cache) + { + v30mz_int(IVector_Cache, FALSE); + } +} + +void WSwan_InterruptReset(void) +{ + IEnable = 0x00; + IStatus = 0x00; + IVectorBase = 0x00; + RecalcInterrupt(); +} + +#ifdef WANT_DEBUGGER +static const char *PrettyINames[8] = { "Serial Send", "Key Press", "RTC Alarm", "Serial Recv", "Line Hit", "VBlank Timer", "VBlank", "HBlank Timer" }; + +uint32 WSwan_InterruptGetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 ret = 0; + + switch(id) + { + case INT_GSREG_ISTATUS: + ret = IStatus; + break; + + case INT_GSREG_IENABLE: + ret = IEnable; + break; + + case INT_GSREG_IVECTORBASE: + ret = IVectorBase; + break; + } + + if(special && (id == INT_GSREG_ISTATUS || id == INT_GSREG_IENABLE)) + { + trio_snprintf(special, special_len, "%s: %d, %s: %d, %s: %d, %s: %d, %s: %d, %s: %d, %s: %d, %s: %d", + PrettyINames[0], (ret >> 0) & 1, + PrettyINames[1], (ret >> 1) & 1, + PrettyINames[2], (ret >> 2) & 1, + PrettyINames[3], (ret >> 3) & 1, + PrettyINames[4], (ret >> 4) & 1, + PrettyINames[5], (ret >> 5) & 1, + PrettyINames[6], (ret >> 6) & 1, + PrettyINames[7], (ret >> 7) & 1); + } + + return(ret); +} + +void WSwan_InterruptSetRegister(const unsigned int id, uint32 value) +{ + switch(id) + { + case INT_GSREG_ISTATUS: + IStatus = value; + break; + + case INT_GSREG_IENABLE: + IEnable = value; + break; + + case INT_GSREG_IVECTORBASE: + IVectorBase = value; + break; + } + + RecalcInterrupt(); +} + +#endif + +int WSwan_InterruptStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(IStatus), + SFVAR(IEnable), + SFVAR(IVectorBase), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "INTR")) + return(0); + + if(load) + RecalcInterrupt(); + + return(1); +} + +} diff --git a/libmednahawk/src/wswan/interrupt.h b/libmednahawk/src/wswan/interrupt.h new file mode 100644 index 0000000000..54a7eb7ccb --- /dev/null +++ b/libmednahawk/src/wswan/interrupt.h @@ -0,0 +1,43 @@ +#ifndef __WSWAN_INTERRUPT_H +#define __WSWAN_INTERRUPT_H + +namespace MDFN_IEN_WSWAN +{ + + + +enum +{ + WSINT_SERIAL_SEND = 0, + WSINT_KEY_PRESS, + WSINT_RTC_ALARM, + WSINT_SERIAL_RECV, + WSINT_LINE_HIT, + WSINT_VBLANK_TIMER, + WSINT_VBLANK, + WSINT_HBLANK_TIMER +}; + +void WSwan_Interrupt(int); +void WSwan_InterruptWrite(uint32 A, uint8 V); +uint8 WSwan_InterruptRead(uint32 A); +void WSwan_InterruptCheck(void); +int WSwan_InterruptStateAction(StateMem *sm, int load, int data_only); +void WSwan_InterruptReset(void); +void WSwan_InterruptDebugForce(unsigned int level); + +#ifdef WANT_DEBUGGER +enum +{ + INT_GSREG_ISTATUS = 0, + INT_GSREG_IENABLE, + INT_GSREG_IVECTORBASE +}; +uint32 WSwan_InterruptGetRegister(const unsigned int id, char *special, const uint32 special_len); +void WSwan_InterruptSetRegister(const unsigned int id, uint32 value); + +#endif + +} + +#endif diff --git a/libmednahawk/src/wswan/main.cpp b/libmednahawk/src/wswan/main.cpp new file mode 100644 index 0000000000..d7a84031fa --- /dev/null +++ b/libmednahawk/src/wswan/main.cpp @@ -0,0 +1,568 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include "../md5.h" +#include "../mempatcher.h" +#include "../player.h" + +#include +#include +#include +#include +#include + +#include "gfx.h" +#include "memory.h" +#include "start.inc" +#include "sound.h" +#include "v30mz.h" +#include "rtc.h" +#include "eeprom.h" +#include "debug.h" + +namespace MDFN_IEN_WSWAN +{ + + +int wsc = 1; /*color/mono*/ +uint32 rom_size; + +uint16 WSButtonStatus; + + +static bool IsWSR; +static uint8 WSRCurrentSong; + +static void Reset(void) +{ + int u0; + + v30mz_reset(); /* Reset CPU */ + WSwan_MemoryReset(); + WSwan_GfxReset(); + WSwan_SoundReset(); + WSwan_InterruptReset(); + WSwan_RTCReset(); + WSwan_EEPROMReset(); + + for(u0=0;u0<0xc9;u0++) + { + if(u0 != 0xC4 && u0 != 0xC5 && u0 != 0xBA && u0 != 0xBB) + WSwan_writeport(u0,startio[u0]); + } + + v30mz_set_reg(NEC_SS,0); + v30mz_set_reg(NEC_SP,0x2000); + + if(IsWSR) + { + v30mz_set_reg(NEC_AW, WSRCurrentSong); + } +} + +static uint8 *chee; +static void Emulate(EmulateSpecStruct *espec) +{ + espec->DisplayRect.x = 0; + espec->DisplayRect.y = 0; + espec->DisplayRect.w = 224; + espec->DisplayRect.h = 144; + + if(espec->VideoFormatChanged) + WSwan_SetPixelFormat(espec->surface->format); + + if(espec->SoundFormatChanged) + WSwan_SetSoundRate(espec->SoundRate); + + uint16 butt_data = chee[0] | (chee[1] << 8); + + WSButtonStatus = butt_data; + + + MDFNMP_ApplyPeriodicCheats(); + + while(!wsExecuteLine(espec->surface, espec->skip)) + { + + } + + + espec->SoundBufSize = WSwan_SoundFlush(espec->SoundBuf, espec->SoundBufMaxSize); + + espec->MasterCycles = v30mz_timestamp; + v30mz_timestamp = 0; + + if(IsWSR) + { + bool needreload = FALSE; + static uint16 last; + + Player_Draw(espec->surface, &espec->DisplayRect, WSRCurrentSong, espec->SoundBuf, espec->SoundBufSize); + + if((WSButtonStatus & 0x02) && !(last & 0x02)) + { + WSRCurrentSong++; + needreload = 1; + } + + if((WSButtonStatus & 0x08) && !(last & 0x08)) + { + WSRCurrentSong--; + needreload = 1; + } + + if((WSButtonStatus & 0x100) && !(last & 0x100)) + needreload = 1; + + if((WSButtonStatus & 0x01) && !(last & 0x01)) + { + WSRCurrentSong += 10; + needreload = 1; + } + + if((WSButtonStatus & 0x04) && !(last & 0x04)) + { + WSRCurrentSong -= 10; + needreload = 1; + } + + + last = WSButtonStatus; + + if(needreload) + Reset(); + } +} + +typedef struct +{ + const uint8 id; + const char *name; +} DLEntry; + +static const DLEntry Developers[] = +{ + { 0x01, "Bandai" }, + { 0x02, "Taito" }, + { 0x03, "Tomy" }, + { 0x04, "Koei" }, + { 0x05, "Data East" }, + { 0x06, "Asmik" }, // Asmik Ace? + { 0x07, "Media Entertainment" }, + { 0x08, "Nichibutsu" }, + { 0x0A, "Coconuts Japan" }, + { 0x0B, "Sammy" }, + { 0x0C, "Sunsoft" }, + { 0x0D, "Mebius" }, + { 0x0E, "Banpresto" }, + { 0x10, "Jaleco" }, + { 0x11, "Imagineer" }, + { 0x12, "Konami" }, + { 0x16, "Kobunsha" }, + { 0x17, "Bottom Up" }, + { 0x18, "Naxat" }, // Mechanic Arms? Media Entertainment? Argh! + { 0x19, "Sunrise" }, + { 0x1A, "Cyberfront" }, + { 0x1B, "Megahouse" }, + { 0x1D, "Interbec" }, + { 0x1E, "NAC" }, + { 0x1F, "Emotion" }, // Bandai Visual?? + { 0x20, "Athena" }, + { 0x21, "KID" }, + { 0x24, "Omega Micott" }, + { 0x25, "Upstar" }, + { 0x26, "Kadokawa/Megas" }, + { 0x27, "Cocktail Soft" }, + { 0x28, "Squaresoft" }, + { 0x2B, "TomCreate" }, + { 0x2D, "Namco" }, + { 0x2F, "Gust" }, + { 0x36, "Capcom" }, +}; + +static bool TestMagic(const char *name, MDFNFILE *fp) +{ + if(strcasecmp(fp->ext, "ws") && strcasecmp(fp->ext, "wsc") && strcasecmp(fp->ext, "wsr")) + return(FALSE); + + if(fp->size < 65536) + return(FALSE); + + return(TRUE); +} + +static int Load(const char *name, MDFNFILE *fp) +{ + uint32 real_rom_size; + + if(fp->size < 65536) + { + MDFN_PrintError(_("%s ROM image is too small."), MDFNGameInfo->fullname); + return(0); + } + + if(!memcmp(fp->data + fp->size - 0x20, "WSRF", 4)) + { + const uint8 *wsr_footer = fp->data + fp->size - 0x20; + + IsWSR = TRUE; + WSRCurrentSong = wsr_footer[0x5]; + + Player_Init(256, "", "", ""); + } + else + IsWSR = false; + + real_rom_size = (fp->size + 0xFFFF) & ~0xFFFF; + rom_size = round_up_pow2(real_rom_size); //fp->size); + + wsCartROM = (uint8 *)calloc(1, rom_size); + + + // This real_rom_size vs rom_size funny business is intended primarily for handling + // WSR files. + if(real_rom_size < rom_size) + memset(wsCartROM, 0xFF, rom_size - real_rom_size); + + memcpy(wsCartROM + (rom_size - real_rom_size), fp->data, fp->size); + + MDFN_printf(_("ROM: %dKiB\n"), real_rom_size / 1024); + md5_context md5; + md5.starts(); + md5.update(wsCartROM, rom_size); + md5.finish(MDFNGameInfo->MD5); + MDFN_printf(_("ROM MD5: 0x%s\n"), md5_context::asciistr(MDFNGameInfo->MD5, 0).c_str()); + + uint8 header[10]; + memcpy(header, wsCartROM + rom_size - 10, 10); + + { + const char *developer_name = "???"; + for(unsigned int x = 0; x < sizeof(Developers) / sizeof(DLEntry); x++) + { + if(Developers[x].id == header[0]) + { + developer_name = Developers[x].name; + break; + } + } + MDFN_printf(_("Developer: %s (0x%02x)\n"), developer_name, header[0]); + } + + uint32 SRAMSize = 0; + eeprom_size = 0; + + switch(header[5]) + { + case 0x01: SRAMSize = 8*1024; break; + case 0x02: SRAMSize = 32*1024; break; + case 0x03: SRAMSize = 16 * 65536; break; + case 0x04: SRAMSize = 32 * 65536; break; // Dicing Knight! + + case 0x10: eeprom_size = 128; break; + case 0x20: eeprom_size = 2*1024; break; + case 0x50: eeprom_size = 1024; break; + } + + //printf("%02x\n", header[5]); + + if(eeprom_size) + MDFN_printf(_("EEPROM: %d bytes\n"), eeprom_size); + + if(SRAMSize) + MDFN_printf(_("Battery-backed RAM: %d bytes\n"), SRAMSize); + + MDFN_printf(_("Recorded Checksum: 0x%04x\n"), header[8] | (header[9] << 8)); + { + uint16 real_crc = 0; + for(unsigned int i = 0; i < rom_size - 2; i++) + real_crc += wsCartROM[i]; + MDFN_printf(_("Real Checksum: 0x%04x\n"), real_crc); + } + + if((header[8] | (header[9] << 8)) == 0x8de1 && (header[0]==0x01)&&(header[2]==0x27)) /* Detective Conan */ + { + //puts("HAX"); + /* WS cpu is using cache/pipeline or there's protected ROM bank where pointing CS */ + wsCartROM[0xfffe8]=0xea; + wsCartROM[0xfffe9]=0x00; + wsCartROM[0xfffea]=0x00; + wsCartROM[0xfffeb]=0x00; + wsCartROM[0xfffec]=0x20; + } + + if(!IsWSR) + { + if(header[6] & 0x1) + MDFNGameInfo->rotated = MDFN_ROTATE90; + } + + MDFNMP_Init(16384, (1 << 20) / 1024); + + #ifdef WANT_DEBUGGER + WSwanDBG_Init(); + #endif + + v30mz_init(WSwan_readmem20, WSwan_writemem20, WSwan_readport, WSwan_writeport); + WSwan_MemoryInit(MDFN_GetSettingB("wswan.language"), wsc, SRAMSize, IsWSR); // EEPROM and SRAM are loaded in this func. + WSwan_GfxInit(); + MDFNGameInfo->fps = (uint32)((uint64)3072000 * 65536 * 256 / (159*256)); + MDFNGameInfo->GameSetMD5Valid = FALSE; + + WSwan_SoundInit(); + + wsMakeTiles(); + + Reset(); + + return(1); +} + +static void CloseGame(void) +{ + WSwan_MemoryKill(); // saves sram/eeprom + + if(wsCartROM) + { + free(wsCartROM); + wsCartROM = NULL; + } +} + +static void SetInput(int port, const char *type, void *ptr) +{ + if(!port) chee = (uint8 *)ptr; +} + +static int StateAction(StateMem *sm, int load, int data_only) +{ + if(!v30mz_StateAction(sm, load, data_only)) + return(0); + + // Call MemoryStateAction before others StateActions... + if(!WSwan_MemoryStateAction(sm, load, data_only)) + return(0); + + if(!WSwan_GfxStateAction(sm, load, data_only)) + return(0); + + if(!WSwan_RTCStateAction(sm, load, data_only)) + return(0); + + if(!WSwan_InterruptStateAction(sm, load, data_only)) + return(0); + + if(!WSwan_SoundStateAction(sm, load, data_only)) + return(0); + + if(!WSwan_EEPROMStateAction(sm, load, data_only)) + { + puts("Oops"); + return(0); + } + + return(1); +} + +static void DoSimpleCommand(int cmd) +{ + switch(cmd) + { + case MDFN_MSC_POWER: + case MDFN_MSC_RESET: Reset(); + break; + } +} + +static const MDFNSetting_EnumList SexList[] = +{ + { "m", WSWAN_SEX_MALE }, + { "male", WSWAN_SEX_MALE, gettext_noop("Male") }, + + { "f", WSWAN_SEX_FEMALE }, + { "female", WSWAN_SEX_FEMALE, gettext_noop("Female") }, + + { "3", 3 }, + + { NULL, 0 }, +}; + +static const MDFNSetting_EnumList BloodList[] = +{ + { "a", WSWAN_BLOOD_A, "A" }, + { "b", WSWAN_BLOOD_B, "B" }, + { "o", WSWAN_BLOOD_O, "O" }, + { "ab", WSWAN_BLOOD_AB, "AB" }, + + { "5", 5 }, + + { NULL, 0 }, +}; + +static const MDFNSetting_EnumList LanguageList[] = +{ + { "japanese", 0, gettext_noop("Japanese") }, + { "0", 0 }, + + { "english", 1, gettext_noop("English") }, + { "1", 1 }, + + { NULL, 0 }, +}; + +static const MDFNSetting WSwanSettings[] = +{ + { "wswan.rotateinput", MDFNSF_NOFLAGS, gettext_noop("Virtually rotate D-pads along with screen."), NULL, MDFNST_BOOL, "0" }, + { "wswan.language", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Language games should display text in."), gettext_noop("The only game this setting is known to affect is \"Digimon Tamers - Battle Spirit\"."), MDFNST_ENUM, "english", NULL, NULL, NULL, NULL, LanguageList }, + { "wswan.name", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Name"), NULL, MDFNST_STRING, "Mednafen" }, + { "wswan.byear", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Birth Year"), NULL, MDFNST_UINT, "1989", "0", "9999" }, + { "wswan.bmonth", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Birth Month"), NULL, MDFNST_UINT, "6", "1", "12" }, + { "wswan.bday", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Birth Day"), NULL, MDFNST_UINT, "23", "1", "31" }, + { "wswan.sex", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Sex"), NULL, MDFNST_ENUM, "F", NULL, NULL, NULL, NULL, SexList }, + { "wswan.blood", MDFNSF_EMU_STATE | MDFNSF_UNTRUSTED_SAFE, gettext_noop("Blood Type"), NULL, MDFNST_ENUM, "O", NULL, NULL, NULL, NULL, BloodList }, + { NULL } +}; + +static const InputDeviceInputInfoStruct IDII[] = +{ + { "up-x", "UP ↑, X Cursors", 0, IDIT_BUTTON, "down-x", { "right-x", "down-x", "left-x" } }, + { "right-x", "RIGHT →, X Cursors", 3, IDIT_BUTTON, "left-x", { "down-x", "left-x", "up-x" } }, + { "down-x", "DOWN ↓, X Cursors", 1, IDIT_BUTTON, "up-x", { "left-x", "up-x", "right-x" } }, + { "left-x", "LEFT â†, X Cursors", 2, IDIT_BUTTON, "right-x", { "up-x", "right-x", "down-x" } }, + + { "up-y", "UP ↑, Y Cur: MUST NOT = X CURSORS", 4, IDIT_BUTTON, "down-y", { "right-y", "down-y", "left-y" } }, + { "right-y", "RIGHT →, Y Cur: MUST NOT = X CURSORS", 7, IDIT_BUTTON, "left-y", { "down-y", "left-y", "up-y" } }, + { "down-y", "DOWN ↓, Y Cur: MUST NOT = X CURSORS", 5, IDIT_BUTTON, "up-y", { "left-y", "up-y", "right-y" } }, + { "left-y", "LEFT â†, Y Cur: MUST NOT = X CURSORS", 6, IDIT_BUTTON, "right-y", { "up-y", "right-y", "down-y" } }, + + { "start", "Start", 8, IDIT_BUTTON, NULL }, + { "a", "A", 10, IDIT_BUTTON_CAN_RAPID, NULL }, + { "b", "B", 9, IDIT_BUTTON_CAN_RAPID, NULL }, +}; + +static InputDeviceInfoStruct InputDeviceInfo[] = +{ + { + "gamepad", + "Gamepad", + NULL, + NULL, + sizeof(IDII) / sizeof(InputDeviceInputInfoStruct), + IDII, + } +}; + +static const InputPortInfoStruct PortInfo[] = +{ + { "builtin", "Built-In", sizeof(InputDeviceInfo) / sizeof(InputDeviceInfoStruct), InputDeviceInfo, "gamepad" } +}; + +static InputInfoStruct InputInfo = +{ + sizeof(PortInfo) / sizeof(InputPortInfoStruct), + PortInfo +}; + + +#ifdef WANT_DEBUGGER +static DebuggerInfoStruct DBGInfo = +{ + "shift_jis", + 7 + 1 + 8, // Fixme, probably not right... maximum number of prefixes + 1 for opcode + 4 for operand(go with 8 to be safe) + 1, // Instruction alignment(bytes) + 16, + 20, + 0x0000, + ~0U, + + WSwanDBG_MemPeek, + WSwanDBG_Disassemble, + WSwanDBG_ToggleSyntax, + WSwanDBG_IRQ, + NULL, //NESDBG_GetVector, + WSwanDBG_FlushBreakPoints, + WSwanDBG_AddBreakPoint, + WSwanDBG_SetCPUCallback, + WSwanDBG_SetBPCallback, + WSwanDBG_GetBranchTrace, + WSwan_GfxSetGraphicsDecode, +}; +#endif + +static const FileExtensionSpecStruct KnownExtensions[] = +{ + { ".ws", gettext_noop("WonderSwan ROM Image") }, + { ".wsc", gettext_noop("WonderSwan Color ROM Image") }, + { ".wsr", gettext_noop("WonderSwan Music Rip") }, + { NULL, NULL } +}; + +} + +using namespace MDFN_IEN_WSWAN; + +MDFNGI EmulatedWSwan = +{ + "wswan", + "WonderSwan", + KnownExtensions, + MODPRIO_INTERNAL_HIGH, + #ifdef WANT_DEBUGGER + &DBGInfo, + #else + NULL, + #endif + &InputInfo, + Load, + TestMagic, + NULL, + NULL, + CloseGame, + WSwan_SetLayerEnableMask, + "Background\0Foreground\0Sprites\0", + NULL, + NULL, + NULL, + NULL, + NULL, + false, + StateAction, + Emulate, + SetInput, + DoSimpleCommand, + WSwanSettings, + MDFN_MASTERCLOCK_FIXED(3072000), + 0, + FALSE, // Multires possible? + + 224, // lcm_width + 144, // lcm_height + NULL, // Dummy + + 224, // Nominal width + 144, // Nominal height + + 224, // Framebuffer width + 144, // Framebuffer height + + 2, // Number of output sound channels +}; + diff --git a/libmednahawk/src/wswan/memory.cpp b/libmednahawk/src/wswan/memory.cpp new file mode 100644 index 0000000000..b30f0d9cdc --- /dev/null +++ b/libmednahawk/src/wswan/memory.cpp @@ -0,0 +1,626 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include "gfx.h" +#include "memory.h" +#include "sound.h" +#include "eeprom.h" +#include "rtc.h" +#include "v30mz.h" +#include "../mempatcher.h" +#include +#include +#include + +namespace MDFN_IEN_WSWAN +{ + + +static bool SkipSL; // Skip save and load + +uint32 wsRAMSize; +uint8 wsRAM[65536]; +static uint8 *wsSRAM = NULL; + +uint8 *wsCartROM; +static uint32 sram_size; +uint32 eeprom_size; + +static uint8 ButtonWhich, ButtonReadLatch; + +static uint32 DMASource, DMADest; +static uint16 DMALength; +static uint8 DMAControl; + +static uint32 SoundDMASource; +static uint16 SoundDMALength; +static uint8 SoundDMAControl; + +static uint8 BankSelector[4]; + +static uint8 CommControl, CommData; + +static bool language; + +extern uint16 WSButtonStatus; + +void WSwan_writemem20(uint32 A, uint8 V) +{ + uint32 offset, bank; + + offset = A & 0xffff; + bank = (A>>16) & 0xF; + + if(!bank) /*RAM*/ + { + WSwan_SoundCheckRAMWrite(offset); + wsRAM[offset] = V; + + WSWan_TCacheInvalidByAddr(offset); + + if(offset>=0xfe00) /*WSC palettes*/ + WSwan_GfxWSCPaletteRAMWrite(offset, V); + } + else if(bank == 1) /* SRAM */ + { + if(sram_size) + { + wsSRAM[(offset | (BankSelector[1] << 16)) & (sram_size - 1)] = V; + } + } +} + + + +uint8 WSwan_readmem20(uint32 A) +{ + uint32 offset, bank; + + offset = A & 0xFFFF; + bank = (A >> 16) & 0xF; + + switch(bank) + { + case 0: return wsRAM[offset]; + case 1: if(sram_size) + { + return wsSRAM[(offset | (BankSelector[1] << 16)) & (sram_size - 1)]; + } + else + return(0); + + case 2: + case 3: return wsCartROM[offset+((BankSelector[bank]&((rom_size>>16)-1))<<16)]; + + default: + { + uint8 bank_num = ((BankSelector[0] & 0xF) << 4) | (bank & 0xf); + bank_num &= (rom_size >> 16) - 1; + return(wsCartROM[(bank_num << 16) | offset]); + } + } +} + +static void ws_CheckDMA(void) +{ + if(DMAControl & 0x80) + { + while(DMALength) + { + WSwan_writemem20(DMADest, WSwan_readmem20(DMASource)); + + DMASource++; // = ((DMASource + 1) & 0xFFFF) | (DMASource & 0xFF0000); + //if(!(DMASource & 0xFFFF)) puts("Warning: DMA source bank crossed."); + DMADest = ((DMADest + 1) & 0xFFFF) | (DMADest & 0xFF0000); + DMALength--; + } + } + DMAControl &= ~0x80; +} + +void WSwan_CheckSoundDMA(void) +{ + if(SoundDMAControl & 0x80) + { + if(SoundDMALength) + { + uint8 zebyte = WSwan_readmem20(SoundDMASource); + + if(SoundDMAControl & 0x08) + zebyte ^= 0x80; + + if(SoundDMAControl & 0x10) + WSwan_SoundWrite(0x95, zebyte); // Pick a port, any port?! + else + WSwan_SoundWrite(0x89, zebyte); + + SoundDMASource++; // = ((SoundDMASource + 1) & 0xFFFF) | (SoundDMASource & 0xFF0000); + //if(!(SoundDMASource & 0xFFFF)) puts("Warning: Sound DMA source bank crossed."); + SoundDMALength--; + } + if(!SoundDMALength) + SoundDMAControl &= ~0x80; + } +} + +uint8 WSwan_readport(uint32 number) +{ + number &= 0xFF; + + if(number >= 0x80 && number <= 0x9F) + return(WSwan_SoundRead(number)); + else if(number <= 0x3F || (number >= 0xA0 && number <= 0xAF) || (number == 0x60)) + return(WSwan_GfxRead(number)); + else if((number >= 0xBA && number <= 0xBE) || (number >= 0xC4 && number <= 0xC8)) + return(WSwan_EEPROMRead(number)); + else if(number >= 0xCA && number <= 0xCB) + return(WSwan_RTCRead(number)); + else switch(number) + { + //default: printf("Read: %04x\n", number); break; + case 0x40: return(DMASource >> 0); + case 0x41: return(DMASource >> 8); + case 0x42: return(DMASource >> 16); + + case 0x43: return(DMADest >> 16); + case 0x44: return(DMADest >> 0); + case 0x45: return(DMADest >> 8); + + case 0x46: return(DMALength >> 0); + case 0x47: return(DMALength >> 8); + + case 0x48: return(DMAControl); + + case 0xB0: + case 0xB2: + case 0xB6: return(WSwan_InterruptRead(number)); + + case 0xC0: return(BankSelector[0] | 0x20); + case 0xC1: return(BankSelector[1]); + case 0xC2: return(BankSelector[2]); + case 0xC3: return(BankSelector[3]); + + case 0x4a: return(SoundDMASource >> 0); + case 0x4b: return(SoundDMASource >> 8); + case 0x4c: return(SoundDMASource >> 16); + case 0x4e: return(SoundDMALength >> 0); + case 0x4f: return(SoundDMALength >> 8); + case 0x52: return(SoundDMAControl); + + case 0xB1: return(CommData); + + case 0xb3: + { + uint8 ret = CommControl & 0xf0; + + if(CommControl & 0x80) + ret |= 0x4; // Send complete + + return(ret); + } + case 0xb5: + { + uint8 ret = (ButtonWhich << 4) | ButtonReadLatch; + return(ret); + } + } + + if(number >= 0xC8) + return(0xD0 | language); + + return(0); +} + +void WSwan_writeport(uint32 IOPort, uint8 V) +{ + IOPort &= 0xFF; + + if(IOPort >= 0x80 && IOPort <= 0x9F) + { + WSwan_SoundWrite(IOPort, V); + } + else if((IOPort >= 0x00 && IOPort <= 0x3F) || (IOPort >= 0xA0 && IOPort <= 0xAF) || (IOPort == 0x60)) + { + WSwan_GfxWrite(IOPort, V); + } + else if((IOPort >= 0xBA && IOPort <= 0xBE) || (IOPort >= 0xC4 && IOPort <= 0xC8)) + WSwan_EEPROMWrite(IOPort, V); + else if(IOPort >= 0xCA && IOPort <= 0xCB) + WSwan_RTCWrite(IOPort, V); + else switch(IOPort) + { + //default: printf("%04x %02x\n", IOPort, V); break; + + case 0x40: DMASource &= 0xFFFF00; DMASource |= (V << 0); break; + case 0x41: DMASource &= 0xFF00FF; DMASource |= (V << 8); break; + case 0x42: DMASource &= 0x00FFFF; DMASource |= ((V & 0x0F) << 16); break; + + case 0x43: DMADest &= 0x00FFFF; DMADest |= ((V & 0x0F) << 16); break; + case 0x44: DMADest &= 0xFFFF00; DMADest |= (V << 0); break; + case 0x45: DMADest &= 0xFF00FF; DMADest |= (V << 8); break; + + case 0x46: DMALength &= 0xFF00; DMALength |= (V << 0); break; + case 0x47: DMALength &= 0x00FF; DMALength |= (V << 8); break; + + case 0x48: DMAControl = V; + //if(V&0x80) + // printf("DMA%02x: %08x %08x %08x\n", V, DMASource, DMADest, DMALength); + ws_CheckDMA(); + break; + + case 0x4a: SoundDMASource &= 0xFFFF00; SoundDMASource |= (V << 0); break; + case 0x4b: SoundDMASource &= 0xFF00FF; SoundDMASource |= (V << 8); break; + case 0x4c: SoundDMASource &= 0x00FFFF; SoundDMASource |= (V << 16); break; + //case 0x4d: break; // Unused? + case 0x4e: SoundDMALength &= 0xFF00; SoundDMALength |= (V << 0); break; + case 0x4f: SoundDMALength &= 0x00FF; SoundDMALength |= (V << 8); break; + //case 0x50: break; // Unused? + //case 0x51: break; // Unused? + case 0x52: SoundDMAControl = V; + //if(V & 0x80) printf("Sound DMA: %02x, %08x %08x\n", V, SoundDMASource, SoundDMALength); + break; + + case 0xB0: + case 0xB2: + case 0xB6: WSwan_InterruptWrite(IOPort, V); break; + + case 0xB1: CommData = V; break; + case 0xB3: CommControl = V & 0xF0; break; + + case 0xb5: ButtonWhich = V >> 4; + ButtonReadLatch = 0; + + if(ButtonWhich & 0x4) /*buttons*/ + ButtonReadLatch |= ((WSButtonStatus >> 8) << 1) & 0xF; + + if(ButtonWhich & 0x2) /* H/X cursors */ + ButtonReadLatch |= WSButtonStatus & 0xF; + + if(ButtonWhich & 0x1) /* V/Y cursors */ + ButtonReadLatch |= (WSButtonStatus >> 4) & 0xF; + break; + + case 0xC0: BankSelector[0] = V & 0xF; break; + case 0xC1: BankSelector[1] = V; break; + case 0xC2: BankSelector[2] = V; break; + case 0xC3: BankSelector[3] = V; break; + } +} + +#ifdef WANT_DEBUGGER +static void GetAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint8 *Buffer) +{ + if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= wsRAMSize - 1; + *Buffer = wsRAM[Address]; + Address++; + Buffer++; + } + } + else if(!strcmp(name, "physical")) + { + while(Length--) + { + Address &= 0xFFFFF; + *Buffer = WSwan_readmem20(Address); + Address++; + Buffer++; + } + } + else if(!strcmp(name, "cs") || !strcmp(name, "ds") || !strcmp(name, "ss") || !strcmp(name, "es")) + { + uint32 segment; + uint32 phys_address; + + if(!strcmp(name, "cs")) + segment = v30mz_get_reg(NEC_PS); + else if(!strcmp(name, "ss")) + segment = v30mz_get_reg(NEC_SS); + else if(!strcmp(name, "ds")) + segment = v30mz_get_reg(NEC_DS0); + else if(!strcmp(name, "es")) + segment = v30mz_get_reg(NEC_DS1); + + phys_address = (Address + (segment << 4)) & 0xFFFFF; + + GetAddressSpaceBytes("physical", phys_address, Length, Buffer); + } +} + +static void PutAddressSpaceBytes(const char *name, uint32 Address, uint32 Length, uint32 Granularity, bool hl, const uint8 *Buffer) +{ + if(!strcmp(name, "ram")) + { + while(Length--) + { + Address &= wsRAMSize - 1; + wsRAM[Address] = *Buffer; + WSWan_TCacheInvalidByAddr(Address); + if(Address >= 0xfe00) + WSwan_GfxWSCPaletteRAMWrite(Address, *Buffer); + + Address++; + Buffer++; + } + } + else if(!strcmp(name, "physical")) + { + while(Length--) + { + uint32 offset, bank; + + Address &= 0xFFFFF; + + offset = Address & 0xFFFF; + bank = (Address >> 16) & 0xF; + + switch(bank) + { + case 0: wsRAM[offset & (wsRAMSize - 1)] = *Buffer; + WSWan_TCacheInvalidByAddr(offset & (wsRAMSize - 1)); + if(Address >= 0xfe00) + WSwan_GfxWSCPaletteRAMWrite(offset & (wsRAMSize - 1), *Buffer); + break; + case 1: if(sram_size) + wsSRAM[(offset | (BankSelector[1] << 16)) & (sram_size - 1)] = *Buffer; + break; + case 2: + case 3: wsCartROM[offset+((BankSelector[bank]&((rom_size>>16)-1))<<16)] = *Buffer; + break; + + default: + { + uint8 bank_num = ((BankSelector[0] & 0xF) << 4) | (bank & 0xf); + bank_num &= (rom_size >> 16) - 1; + wsCartROM[(bank_num << 16) | offset] = *Buffer; + } + break; + } + + Address++; + Buffer++; + } + } + else if(!strcmp(name, "cs") || !strcmp(name, "ds") || !strcmp(name, "ss") || !strcmp(name, "es")) + { + uint32 segment; + uint32 phys_address; + + if(!strcmp(name, "cs")) + segment = v30mz_get_reg(NEC_PS); + else if(!strcmp(name, "ss")) + segment = v30mz_get_reg(NEC_SS); + else if(!strcmp(name, "ds")) + segment = v30mz_get_reg(NEC_DS0); + else if(!strcmp(name, "es")) + segment = v30mz_get_reg(NEC_DS1); + + phys_address = (Address + (segment << 4)) & 0xFFFFF; + + PutAddressSpaceBytes("physical", phys_address, Length, Granularity, hl, Buffer); + } +} + +uint32 WSwan_MemoryGetRegister(const unsigned int id, char *special, const uint32 special_len) +{ + uint32 ret = 0; + + switch(id) + { + case MEMORY_GSREG_ROMBBSLCT: + ret = BankSelector[0]; + + if(special) + { + trio_snprintf(special, special_len, "((0x%02x * 0x100000) %% 0x%08x) + 20 bit address = 0x%08x + 20 bit address", BankSelector[0], rom_size, (BankSelector[0] * 0x100000) & (rom_size - 1)); + } + break; + + case MEMORY_GSREG_BNK1SLCT: + ret = BankSelector[1]; + break; + + case MEMORY_GSREG_BNK2SLCT: + ret = BankSelector[2]; + break; + + case MEMORY_GSREG_BNK3SLCT: + ret = BankSelector[3]; + break; + } + + return(ret); +} + +void WSwan_MemorySetRegister(const unsigned int id, uint32 value) +{ + switch(id) + { + case MEMORY_GSREG_ROMBBSLCT: + BankSelector[0] = value; + break; + + case MEMORY_GSREG_BNK1SLCT: + BankSelector[1] = value; + break; + + case MEMORY_GSREG_BNK2SLCT: + BankSelector[2] = value; + break; + + case MEMORY_GSREG_BNK3SLCT: + BankSelector[3] = value; + break; + } +} + +#endif + +void WSwan_MemoryKill(void) +{ + if((sram_size || eeprom_size) && !SkipSL) + { + std::vector EvilRams; + + if(eeprom_size) + EvilRams.push_back(PtrLengthPair(wsEEPROM, eeprom_size)); + + if(sram_size) + EvilRams.push_back(PtrLengthPair(wsSRAM, sram_size)); + + MDFN_DumpToFile(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), 6, EvilRams); + } + + if(wsSRAM) + { + free(wsSRAM); + wsSRAM = NULL; + } +} + +void WSwan_MemoryInit(bool lang, bool IsWSC, uint32 ssize, bool SkipSaveLoad) +{ + const uint16 byear = MDFN_GetSettingUI("wswan.byear"); + const uint8 bmonth = MDFN_GetSettingUI("wswan.bmonth"); + const uint8 bday = MDFN_GetSettingUI("wswan.bday"); + const uint8 sex = MDFN_GetSettingI("wswan.sex"); + const uint8 blood = MDFN_GetSettingI("wswan.blood"); + + language = lang; + SkipSL = SkipSaveLoad; + + wsRAMSize = 65536; + sram_size = ssize; + + #ifdef WANT_DEBUGGER + { + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "physical", "CPU Physical", 20); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "ram", "RAM", (int)(log(wsRAMSize) / log(2))); + + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "cs", "Code Segment", 16); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "ss", "Stack Segment", 16); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "ds", "Data Segment", 16); + ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "es", "Extra Segment", 16); + } + #endif + + // WSwan_EEPROMInit() will also clear wsEEPROM + WSwan_EEPROMInit(MDFN_GetSettingS("wswan.name").c_str(), byear, bmonth, bday, sex, blood); + + if(sram_size) + { + wsSRAM = (uint8*)malloc(sram_size); + memset(wsSRAM, 0, sram_size); + } + + if((sram_size || eeprom_size) && !SkipSL) + { + gzFile savegame_fp; + + savegame_fp = gzopen(MDFN_MakeFName(MDFNMKF_SAV, 0, "sav").c_str(), "rb"); + if(savegame_fp) + { + if(eeprom_size) + gzread(savegame_fp, wsEEPROM, eeprom_size); + if(sram_size) + gzread(savegame_fp, wsSRAM, sram_size); + gzclose(savegame_fp); + } + } + + MDFNMP_AddRAM(wsRAMSize, 0x00000, wsRAM); + + if(sram_size) + MDFNMP_AddRAM(sram_size, 0x10000, wsSRAM); +} + +void WSwan_MemoryReset(void) +{ + memset(wsRAM, 0, 65536); + + wsRAM[0x75AC] = 0x41; + wsRAM[0x75AD] = 0x5F; + wsRAM[0x75AE] = 0x43; + wsRAM[0x75AF] = 0x31; + wsRAM[0x75B0] = 0x6E; + wsRAM[0x75B1] = 0x5F; + wsRAM[0x75B2] = 0x63; + wsRAM[0x75B3] = 0x31; + + memset(BankSelector, 0, sizeof(BankSelector)); + ButtonWhich = 0; + ButtonReadLatch = 0; + DMASource = 0; + DMADest = 0; + DMALength = 0; + DMAControl = 0; + + SoundDMASource = 0; + SoundDMALength = 0; + SoundDMAControl = 0; + + CommControl = 0; + CommData = 0; +} + +int WSwan_MemoryStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAYN(wsRAM, 65536, "RAM"), + SFARRAYN(sram_size ? wsSRAM : NULL, sram_size, "SRAM"), + SFVAR(ButtonWhich), + SFVAR(ButtonReadLatch), + SFVAR(WSButtonStatus), + SFVAR(DMASource), + SFVAR(DMADest), + SFVAR(DMALength), + SFVAR(DMAControl), + + SFVAR(SoundDMASource), + SFVAR(SoundDMALength), + SFVAR(SoundDMAControl), + + SFVAR(CommControl), + SFVAR(CommData), + + SFARRAY(BankSelector, 4), + + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "MEMR")) + return(0); + + if(load) + { + for(uint32 A = 0xfe00; A <= 0xFFFF; A++) + { + WSwan_GfxWSCPaletteRAMWrite(A, wsRAM[A]); + } + } + return(1); +} + +} diff --git a/libmednahawk/src/wswan/memory.h b/libmednahawk/src/wswan/memory.h new file mode 100644 index 0000000000..0554b5624c --- /dev/null +++ b/libmednahawk/src/wswan/memory.h @@ -0,0 +1,38 @@ +#ifndef __WSWAN_MEMORY_H +#define __WSWAN_MEMORY_H + +namespace MDFN_IEN_WSWAN +{ + +extern uint8 wsRAM[65536]; +extern uint8 *wsCartROM; +extern uint32 eeprom_size; +extern uint8 wsEEPROM[2048]; + +uint8 WSwan_readmem20(uint32); +void WSwan_writemem20(uint32 address,uint8 data); + +void WSwan_MemoryInit(bool lang, bool IsWSC, uint32 ssize, bool SkipSaveLoad); +void WSwan_MemoryKill(void); + +void WSwan_CheckSoundDMA(void); +int WSwan_MemoryStateAction(StateMem *sm, int load, int data_only); +void WSwan_MemoryReset(void); +void WSwan_writeport(uint32 IOPort, uint8 V); +uint8 WSwan_readport(uint32 number); + +enum +{ + MEMORY_GSREG_ROMBBSLCT = 0, + MEMORY_GSREG_BNK1SLCT, + MEMORY_GSREG_BNK2SLCT, + MEMORY_GSREG_BNK3SLCT, +}; + + +uint32 WSwan_MemoryGetRegister(const unsigned int id, char *special, const uint32 special_len); +void WSwan_MemorySetRegister(const unsigned int id, uint32 value); + +} + +#endif diff --git a/libmednahawk/src/wswan/rtc.cpp b/libmednahawk/src/wswan/rtc.cpp new file mode 100644 index 0000000000..15e093f930 --- /dev/null +++ b/libmednahawk/src/wswan/rtc.cpp @@ -0,0 +1,115 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include + +namespace MDFN_IEN_WSWAN +{ + + +static uint64 CurrentTime; +static uint32 ClockCycleCounter; +static uint8 wsCA15; +static uint8 Command, Data; + +void WSwan_RTCWrite(uint32 A, uint8 V) +{ + switch(A) + { + case 0xca: + if(V==0x15) + wsCA15=0; + Command = V; + break; + case 0xcb: Data = V; break; + } + +} + + +uint8 WSwan_RTCRead(uint32 A) +{ + switch(A) + { + case 0xca : return (Command|0x80); + case 0xcb : + if(Command == 0x15) + { + time_t long_time = CurrentTime; + struct tm *newtime = gmtime( &long_time ); + + switch(wsCA15) + { + case 0: wsCA15++;return mBCD(newtime->tm_year-100); + case 1: wsCA15++;return mBCD(newtime->tm_mon); + case 2: wsCA15++;return mBCD(newtime->tm_mday); + case 3: wsCA15++;return mBCD(newtime->tm_wday); + case 4: wsCA15++;return mBCD(newtime->tm_hour); + case 5: wsCA15++;return mBCD(newtime->tm_min); + case 6: wsCA15=0;return mBCD(newtime->tm_sec); + } + return 0; + } + else + return Data | 0x80; + + } + return(0); +} + +void WSwan_RTCReset(void) +{ + time_t happy_time = time(NULL); + + CurrentTime = mktime(localtime(&happy_time)); + ClockCycleCounter = 0; + wsCA15 = 0; +} + +void WSwan_RTCClock(uint32 cycles) +{ + ClockCycleCounter += cycles; + while(ClockCycleCounter >= 3072000) + { + ClockCycleCounter -= 3072000; + CurrentTime++; + } +} + +int WSwan_RTCStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFVAR(CurrentTime), + SFVAR(ClockCycleCounter), + SFVAR(wsCA15), + SFVAR(Command), + SFVAR(Data), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "RTC")) + return(0); + + return(1); +} + +} diff --git a/libmednahawk/src/wswan/rtc.h b/libmednahawk/src/wswan/rtc.h new file mode 100644 index 0000000000..f6c472cd37 --- /dev/null +++ b/libmednahawk/src/wswan/rtc.h @@ -0,0 +1,15 @@ +#ifndef __WSWAN_RTC_H +#define __WSWAN_RTC_H + +namespace MDFN_IEN_WSWAN +{ + +void WSwan_RTCWrite(uint32 A, uint8 V); +uint8 WSwan_RTCRead(uint32 A); +void WSwan_RTCReset(void); +void WSwan_RTCClock(uint32 cycles); +int WSwan_RTCStateAction(StateMem *sm, int load, int data_only); + +} + +#endif diff --git a/libmednahawk/src/wswan/sound.cpp b/libmednahawk/src/wswan/sound.cpp new file mode 100644 index 0000000000..a549388ed9 --- /dev/null +++ b/libmednahawk/src/wswan/sound.cpp @@ -0,0 +1,444 @@ +/* Mednafen - Multi-system Emulator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + Noise emulation is almost certainly wrong wrong wrong. Testing on a real system is needed to determine LFSR(assuming it uses an LFSR) taps. +*/ + +#include "wswan.h" +#include "sound.h" +#include "v30mz.h" +#include "memory.h" + +#include + +namespace MDFN_IEN_WSWAN +{ + + +static Blip_Synth WaveSynth; +static Blip_Synth NoiseSynth; +static Blip_Synth VoiceSynth; + +static Blip_Buffer *sbuf[2] = { NULL }; +static int32 OutputChannels; // 1 or 2, used to be: bool forcemono; + +static uint16 period[4]; +static uint8 volume[4]; // left volume in upper 4 bits, right in lower 4 bits +static uint8 voice_volume; + +static uint8 sweep_step, sweep_value; +static uint8 noise_control; +static uint8 control; +static uint8 output_control; + +static int32 sweep_8192_divider; +static uint8 sweep_counter; +static uint8 SampleRAMPos; + +static int32 sample_cache[4][2]; + +static int32 last_v_val; + +static uint8 HyperVoice; +static int32 last_hv_val; + +static int32 period_counter[4]; +static int32 last_val[4][2]; // Last outputted value, l&r +static uint8 sample_pos[4]; +static uint16 nreg; +static uint32 last_ts; + + +#define MK_SAMPLE_CACHE \ + { \ + int sample; \ + sample = (((wsRAM[((SampleRAMPos << 6) + (sample_pos[ch] >> 1) + (ch << 4)) ] >> ((sample_pos[ch] & 1) ? 4 : 0)) & 0x0F)) - 0x8; \ + sample_cache[ch][0] = sample * ((volume[ch] >> 4) & 0x0F); \ + sample_cache[ch][1] = sample * ((volume[ch] >> 0) & 0x0F); \ + } + +#define MK_SAMPLE_CACHE_NOISE \ + { \ + int sample; \ + sample = ((nreg & 1) ? 0xF : 0x0) - 0x8; \ + sample_cache[ch][0] = sample * ((volume[ch] >> 4) & 0x0F); \ + sample_cache[ch][1] = sample * ((volume[ch] >> 0) & 0x0F); \ + } + + +#define SYNCSAMPLE(wt) \ + { \ + int32 left = sample_cache[ch][0], right = sample_cache[ch][1]; \ + WaveSynth.offset_inline(wt, left - last_val[ch][0], sbuf[0]); \ + WaveSynth.offset_inline(wt, right - last_val[ch][1], sbuf[1]); \ + last_val[ch][0] = left; \ + last_val[ch][1] = right; \ + } + +#define SYNCSAMPLE_NOISE(wt) \ + { \ + int32 left = sample_cache[ch][0], right = sample_cache[ch][1]; \ + NoiseSynth.offset_inline(wt, left - last_val[ch][0], sbuf[0]); \ + NoiseSynth.offset_inline(wt, right - last_val[ch][1], sbuf[1]); \ + last_val[ch][0] = left; \ + last_val[ch][1] = right; \ + } + +void WSwan_SoundUpdate(void) +{ + int32 run_time; + + //printf("%d\n", v30mz_timestamp); + //printf("%02x %02x\n", control, noise_control); + run_time = v30mz_timestamp - last_ts; + + for(unsigned int ch = 0; ch < 4; ch++) + { + // Channel is disabled? + if(!(control & (1 << ch))) + continue; + + if(ch == 1 && (control & 0x20)) // Direct D/A mode? + { + int32 neoval = (volume[ch] - 0x80) * voice_volume; + + VoiceSynth.offset(v30mz_timestamp, neoval - last_v_val, sbuf[0]); + VoiceSynth.offset(v30mz_timestamp, neoval - last_v_val, sbuf[1]); + + last_v_val = neoval; + } + else if(ch == 2 && (control & 0x40) && sweep_value) // Sweep + { + uint32 tmp_pt = 2048 - period[ch]; + uint32 meow_timestamp = v30mz_timestamp - run_time; + uint32 tmp_run_time = run_time; + + while(tmp_run_time) + { + int32 sub_run_time = tmp_run_time; + + if(sub_run_time > sweep_8192_divider) + sub_run_time = sweep_8192_divider; + + sweep_8192_divider -= sub_run_time; + if(sweep_8192_divider <= 0) + { + sweep_8192_divider += 8192; + sweep_counter--; + if(sweep_counter <= 0) + { + sweep_counter = sweep_step + 1; + period[ch] = (period[ch] + (int8)sweep_value) & 0x7FF; + } + } + + meow_timestamp += sub_run_time; + if(tmp_pt > 4) + { + period_counter[ch] -= sub_run_time; + while(period_counter[ch] <= 0) + { + sample_pos[ch] = (sample_pos[ch] + 1) & 0x1F; + + MK_SAMPLE_CACHE; + SYNCSAMPLE(meow_timestamp + period_counter[ch]); + period_counter[ch] += tmp_pt; + } + } + tmp_run_time -= sub_run_time; + } + } + else if(ch == 3 && (noise_control & 0x10)) //(control & 0x80)) // Noise + { + uint32 tmp_pt = 2048 - period[ch]; + + period_counter[ch] -= run_time; + while(period_counter[ch] <= 0) + { + // Yay, random numbers, so let's use totally wrong numbers to make them! + const int bstab1[8] = { 14, 13, 12, 14, 12, 13, 14, 14 }; + const int bstab2[8] = { 13, 12, 9, 12, 1, 1, 5, 11 }; + //const int bstab1[8] = { 14, 13, 12, 14, 10, 9, 8, 13 }; + //const int bstab2[8] = { 13, 12, 9, 12, 1, 6, 4, 11 }; + nreg = (~((nreg << 1) | ( ((nreg >> bstab1[noise_control & 0x7]) & 1) ^ ((nreg >> bstab2[noise_control & 0x7]) & 1)))) & 0x7FFF; + if(control & 0x80) + { + MK_SAMPLE_CACHE_NOISE; + SYNCSAMPLE_NOISE(v30mz_timestamp + period_counter[ch]); + } + else if(tmp_pt > 4) + { + sample_pos[ch] = (sample_pos[ch] + 1) & 0x1F; + MK_SAMPLE_CACHE; + SYNCSAMPLE(v30mz_timestamp + period_counter[ch]); + } + period_counter[ch] += tmp_pt; + } + } + else + { + uint32 tmp_pt = 2048 - period[ch]; + + if(tmp_pt > 4) + { + period_counter[ch] -= run_time; + while(period_counter[ch] <= 0) + { + sample_pos[ch] = (sample_pos[ch] + 1) & 0x1F; + + MK_SAMPLE_CACHE; + SYNCSAMPLE(v30mz_timestamp + period_counter[ch]); // - period_counter[ch]); + period_counter[ch] += tmp_pt; + } + } + } + } + + { + int32 tmphv = HyperVoice; + + if(tmphv - last_hv_val) + { + WaveSynth.offset_inline(v30mz_timestamp, tmphv - last_hv_val, sbuf[0]); + WaveSynth.offset_inline(v30mz_timestamp, tmphv - last_hv_val, sbuf[1]); + last_hv_val = tmphv; + } + } + last_ts = v30mz_timestamp; +} + +void WSwan_SoundWrite(uint32 A, uint8 V) +{ + WSwan_SoundUpdate(); + + if(A >= 0x80 && A <= 0x87) + { + int ch = (A - 0x80) >> 1; + + if(A & 1) + period[ch] = (period[ch] & 0x00FF) | ((V & 0x07) << 8); + else + period[ch] = (period[ch] & 0x0700) | ((V & 0xFF) << 0); + } + else if(A >= 0x88 && A <= 0x8B) + { + volume[A - 0x88] = V; + } + else if(A == 0x8C) + sweep_value = V; + else if(A == 0x8D) + { + sweep_step = V; + sweep_counter = sweep_step + 1; + sweep_8192_divider = 8192; + } + else if(A == 0x8E) + { + noise_control = V; + if(V & 0x8) nreg = 1; + //printf("NOISECONTROL: %02x\n", V); + } + else if(A == 0x90) + { + for(int n = 0; n < 4; n++) + if(!(control & (1 << n)) && (V & (1 << n))) + { + period_counter[n] = 0; + sample_pos[n] = 0x1F; + } + control = V; + //printf("Sound Control: %02x\n", V); + } + else if(A == 0x91) + { + output_control = V & 0xF; + //printf("%02x, %02x\n", V, (V >> 1) & 3); + } + else if(A == 0x92) + nreg = (nreg & 0xFF00) | (V << 0); + else if(A == 0x93) + nreg = (nreg & 0x00FF) | ((V & 0x7F) << 8); + else if(A == 0x94) + { + voice_volume = V & 0xF; + //printf("%02x\n", V); + } + else switch(A) + { + case 0x8F: SampleRAMPos = V; break; + case 0x95: HyperVoice = V; break; // Pick a port, any port?! + //default: printf("%04x:%02x\n", A, V); break; + } + WSwan_SoundUpdate(); +} + +uint8 WSwan_SoundRead(uint32 A) +{ + WSwan_SoundUpdate(); + + if(A >= 0x80 && A <= 0x87) + { + int ch = (A - 0x80) >> 1; + + if(A & 1) + return(period[ch] >> 8); + else + return(period[ch]); + } + else if(A >= 0x88 && A <= 0x8B) + return(volume[A - 0x88]); + else switch(A) + { + default: printf("SoundRead: %04x\n", A); return(0); + case 0x8C: return(sweep_value); + case 0x8D: return(sweep_step); + case 0x8E: return(noise_control); + case 0x8F: return(SampleRAMPos); + case 0x90: return(control); + case 0x91: return(output_control | 0x80); + case 0x92: return((nreg >> 0) & 0xFF); + case 0x93: return((nreg >> 8) & 0xFF); + case 0x94: return(voice_volume); + } +} + + +int32 WSwan_SoundFlush(int16 *SoundBuf, const int32 MaxSoundFrames) +{ + int32 FrameCount = 0; + + WSwan_SoundUpdate(); + + if(SoundBuf) + { + for(int y = 0; y < OutputChannels; y++) + { + sbuf[y]->end_frame(v30mz_timestamp); + FrameCount = sbuf[y]->read_samples(SoundBuf + y, MaxSoundFrames, (OutputChannels == 2)); + } + } + + last_ts = 0; + + return(FrameCount); +} + +// Call before wsRAM is updated +void WSwan_SoundCheckRAMWrite(uint32 A) +{ + if((A >> 6) == SampleRAMPos) + WSwan_SoundUpdate(); +} + +static void RedoVolume(void) +{ + double eff_volume = 1.0 / 4; + + if(OutputChannels == 1) + eff_volume /= 2; + + WaveSynth.volume(eff_volume); + NoiseSynth.volume(eff_volume); + VoiceSynth.volume(eff_volume); +} + +void WSwan_SoundInit(void) +{ + OutputChannels = 2; + + for(int i = 0; i < OutputChannels; i++) + { + sbuf[i] = new Blip_Buffer(); + + sbuf[i]->set_sample_rate(0 ? 0 : 44100, 60); + sbuf[i]->clock_rate((long)(3072000)); + sbuf[i]->bass_freq(20); + } + + if(OutputChannels == 1) + sbuf[1] = sbuf[0]; + + RedoVolume(); +} + +bool WSwan_SetSoundRate(uint32 rate) +{ + for(int i = 0; i < OutputChannels; i++) + sbuf[i]->set_sample_rate(rate?rate:44100, 60); + + return(TRUE); +} + +int WSwan_SoundStateAction(StateMem *sm, int load, int data_only) +{ + SFORMAT StateRegs[] = + { + SFARRAY16(period, 4), + SFARRAY(volume, 4), + SFVAR(voice_volume), + SFVAR(sweep_step), + SFVAR(sweep_value), + SFVAR(noise_control), + SFVAR(control), + SFVAR(output_control), + + SFVAR(sweep_8192_divider), + SFVAR(sweep_counter), + SFVAR(SampleRAMPos), + SFARRAY32(period_counter, 4), + SFARRAY(sample_pos, 4), + SFVAR(nreg), + SFEND + }; + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "PSG")) + return(0); + + return(1); +} + +void WSwan_SoundReset(void) +{ + memset(period, 0, sizeof(period)); + memset(volume, 0, sizeof(volume)); + voice_volume = 0; + sweep_step = 0; + sweep_value = 0; + noise_control = 0; + control = 0; + output_control = 0; + + sweep_8192_divider = 8192; + sweep_counter = 0; + SampleRAMPos = 0; + memset(period_counter, 0, sizeof(period_counter)); + memset(sample_pos, 0, sizeof(sample_pos)); + nreg = 1; + + memset(sample_cache, 0, sizeof(sample_cache)); + memset(last_val, 0, sizeof(last_val)); + last_v_val = 0; + + HyperVoice = 0; + last_hv_val = 0; + + for(int y = 0; y < OutputChannels; y++) + sbuf[y]->clear(); +} + +} diff --git a/libmednahawk/src/wswan/sound.h b/libmednahawk/src/wswan/sound.h new file mode 100644 index 0000000000..483397d096 --- /dev/null +++ b/libmednahawk/src/wswan/sound.h @@ -0,0 +1,22 @@ +#ifndef __WSWAN_SOUND_H +#define __WSWAN_SOUND_H + +namespace MDFN_IEN_WSWAN +{ + +int32 WSwan_SoundFlush(int16 *SoundBuf, const int32 MaxSoundFrames); + +void WSwan_SoundInit(void); +void WSwan_SetSoundMultiplier(double multiplier); +bool WSwan_SetSoundRate(uint32 rate); +int WSwan_SoundStateAction(StateMem *sm, int load, int data_only); + +void WSwan_SoundWrite(uint32, uint8); +uint8 WSwan_SoundRead(uint32); +void WSwan_SoundInit(void); +void WSwan_SoundReset(void); +void WSwan_SoundCheckRAMWrite(uint32 A); + +} + +#endif diff --git a/libmednahawk/src/wswan/start.inc b/libmednahawk/src/wswan/start.inc new file mode 100644 index 0000000000..54a871f986 --- /dev/null +++ b/libmednahawk/src/wswan/start.inc @@ -0,0 +1,269 @@ +/* + =================================================================================== + Cygne WIN v 2.1a (c) Dox 2002 dox@space.pl + =================================================================================== + + NEC cpu core by Bryan McPhail,Oliver Bergmann, Fabrice Frances and David Hedley + Zlib by Jean-loup Gailly and Mark Adler + + =================================================================================== +*/ + +const uint8 startio[256]={ +0x00,//0 +0x00,//1 +0x9d,//2 +0xbb,//3 +0x00,//4 +0x00,//5 +0x00,//6 +0x26,//7 +0xfe,//8 +0xde,//9 +0xf9,//a +0xfb,//b +0xdb,//c +0xd7,//d +0x7f,//e +0xf5,//f +0x00,//10 +0x00,//11 +0x00,//12 +0x00,//13 +0x01,//14 +0x00,//15 +0x9e,//16 +0x9b,//17 +0x00,//18 +0x00,//19 +0x00,//1a +0x00,//1b +0x99,//1c +0xfd,//1d +0xb7,//1e +0xdf,//1f +0x30,//20 +0x57,//21 +0x75,//22 +0x76,//23 +0x15,//24 +0x73,//25 +0x77,//26 +0x77,//27 +0x20,//28 +0x75,//29 +0x50,//2a +0x36,//2b +0x70,//2c +0x67,//2d +0x50,//2e +0x77,//2f +0x57,//30 +0x54,//31 +0x75,//32 +0x77,//33 +0x75,//34 +0x17,//35 +0x37,//36 +0x73,//37 +0x50,//38 +0x57,//39 +0x60,//3a +0x77,//3b +0x70,//3c +0x77,//3d +0x10,//3e +0x73,//3f +0x00,//40 +0x00,//41 +0x00,//42 +0x00,//43 +0x00,//44 +0x00,//45 +0x00,//46 +0x00,//47 +0x00,//48 +0x00,//49 +0x00,//4a +0x00,//4b +0x00,//4c +0x00,//4d +0x00,//4e +0x00,//4f +0x00,//50 +0x00,//51 +0x00,//52 +0x00,//53 +0x00,//54 +0x00,//55 +0x00,//56 +0x00,//57 +0x00,//58 +0x00,//59 +0x00,//5a +0x00,//5b +0x00,//5c +0x00,//5d +0x00,//5e +0x00,//5f +0x0a,//60 +0x00,//61 +0x00,//62 +0x00,//63 +0x00,//64 +0x00,//65 +0x00,//66 +0x00,//67 +0x00,//68 +0x00,//69 +0x00,//6a +0x0f,//6b +0x00,//6c +0x00,//6d +0x00,//6e +0x00,//6f +0x00,//70 +0x00,//71 +0x00,//72 +0x00,//73 +0x00,//74 +0x00,//75 +0x00,//76 +0x00,//77 +0x00,//78 +0x00,//79 +0x00,//7a +0x00,//7b +0x00,//7c +0x00,//7d +0x00,//7e +0x00,//7f +0x00,//80 +0x00,//81 +0x00,//82 +0x00,//83 +0x00,//84 +0x00,//85 +0x00,//86 +0x00,//87 +0x00,//88 +0x00,//89 +0x00,//8a +0x00,//8b +0x00,//8c +0x1f,//8d 1d ? +0x00,//8e +0x00,//8f +0x00,//90 +0x00,//91 +0x00,//92 +0x00,//93 +0x00,//94 +0x00,//95 +0x00,//96 +0x00,//97 +0x00,//98 +0x00,//99 +0x00,//9a +0x00,//9b +0x00,//9c +0x00,//9d +0x03,//9e +0x00,//9f +0x87-2,//a0 +0x00,//a1 +0x00,//a2 +0x00,//a3 +0x0,//a4 2b +0x0,//a5 7f +0x4f,//a6 +0xff,//a7 cf ? +0x00,//a8 +0x00,//a9 +0x00,//aa +0x00,//ab +0x00,//ac +0x00,//ad +0x00,//ae +0x00,//af +0x00,//b0 +0xdb,//b1 +0x00,//b2 +0x00,//b3 +0x00,//b4 +0x40,//b5 +0x00,//b6 +0x00,//b7 +0x00,//b8 +0x00,//b9 +0x01,//ba +0x00,//bb +0x42,//bc +0x00,//bd +0x83,//be +0x00,//bf +0x2f,//c0 +0x3f,//c1 +0xff,//c2 +0xff,//c3 +0x00,//c4 +0x00,//c5 +0x00,//c6 +0x00,//c7 + +0xd1,//c8? +0xd1,//c9 +0xd1,//ca +0xd1,//cb +0xd1,//cc +0xd1,//cd +0xd1,//ce +0xd1,//cf +0xd1,//d0 +0xd1,//d1 +0xd1,//d2 +0xd1,//d3 +0xd1,//d4 +0xd1,//d5 +0xd1,//d6 +0xd1,//d7 +0xd1,//d8 +0xd1,//d9 +0xd1,//da +0xd1,//db +0xd1,//dc +0xd1,//dd +0xd1,//de +0xd1,//df +0xd1,//e0 +0xd1,//e1 +0xd1,//e2 +0xd1,//e3 +0xd1,//e4 +0xd1,//e5 +0xd1,//e6 +0xd1,//e7 +0xd1,//e8 +0xd1,//e9 +0xd1,//ea +0xd1,//eb +0xd1,//ec +0xd1,//ed +0xd1,//ee +0xd1,//ef +0xd1,//f0 +0xd1,//f1 +0xd1,//f2 +0xd1,//f3 +0xd1,//f4 +0xd1,//f5 +0xd1,//f6 +0xd1,//f7 +0xd1,//f8 +0xd1,//f9 +0xd1,//fa +0xd1,//fb +0xd1,//fc +0xd1,//fd +0xd1,//fe +0xd1};//ff diff --git a/libmednahawk/src/wswan/tcache.cpp b/libmednahawk/src/wswan/tcache.cpp new file mode 100644 index 0000000000..321c8c519c --- /dev/null +++ b/libmednahawk/src/wswan/tcache.cpp @@ -0,0 +1,308 @@ +/* Cygne + * + * Copyright notice for this file: + * Copyright (C) 2002 Dox dox@space.pl + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "wswan.h" +#include "gfx.h" +#include "memory.h" + +namespace MDFN_IEN_WSWAN +{ + + +uint8 tiles[256][256][2][8]; +uint8 wsTCache[512*64]; +uint8 wsTCache2[512*64]; +uint8 wsTCacheFlipped[512*64]; +uint8 wsTCacheFlipped2[512*64]; +uint8 wsTCacheUpdate[512]; +uint8 wsTCacheUpdate2[512]; +uint8 wsTileRow[8]; +int wsVMode; + +void WSWan_TCacheInvalidByAddr(uint32 ws_offset) +{ + if(wsVMode && (ws_offset>=0x4000)&&(ws_offset<0x8000)) + { + wsTCacheUpdate[(ws_offset-0x4000)>>5]=FALSE; /*invalidate tile*/ + return; + } + else if((ws_offset>=0x2000)&&(ws_offset<0x4000)) + { + wsTCacheUpdate[(ws_offset-0x2000)>>4]=FALSE; /*invalidate tile*/ + return; + } + + if(wsVMode && (ws_offset>=0x8000)&&(ws_offset<0xc000)) + { + wsTCacheUpdate2[(ws_offset-0x8000)>>5]=FALSE; /*invalidate tile*/ + return; + } + else if((ws_offset>=0x4000)&&(ws_offset<0x6000)) + { + wsTCacheUpdate2[(ws_offset-0x4000)>>4]=FALSE; /*invalidate tile*/ + return; + } +} + +void wsSetVideo(int number,bool force) +{ + if((number!=wsVMode)||(force)) + { + wsVMode=number; + memset(wsTCacheUpdate,0,512); + memset(wsTCacheUpdate2,0,512); + } +} + +void wsMakeTiles(void) +{ + int x,y,b0,b1,b2,b3,b4,b5,b6,b7; + for(x=0;x<256;x++) + for(y=0;y<256;y++) + { + b0=(x&128)>>7;b1=(x&64)>>6;b2=(x&32)>>5;b3=(x&16)>>4;b4=(x&8)>>3;b5=(x&4)>>2;b6=(x&2)>>1;b7=(x&1); + b0|=(y&128)>>6;b1|=(y&64)>>5;b2|=(y&32)>>4;b3|=(y&16)>>3;b4|=(y&8)>>2;b5|=(y&4)>>1;b6|=(y&2);b7|=(y&1)<<1; + tiles[x][y][0][0]=b0; + tiles[x][y][0][1]=b1; + tiles[x][y][0][2]=b2; + tiles[x][y][0][3]=b3; + tiles[x][y][0][4]=b4; + tiles[x][y][0][5]=b5; + tiles[x][y][0][6]=b6; + tiles[x][y][0][7]=b7; + tiles[x][y][1][0]=b7; + tiles[x][y][1][1]=b6; + tiles[x][y][1][2]=b5; + tiles[x][y][1][3]=b4; + tiles[x][y][1][4]=b3; + tiles[x][y][1][5]=b2; + tiles[x][y][1][6]=b1; + tiles[x][y][1][7]=b0; + } +} + +void wsGetTile(uint32 number,uint32 line,int flipv,int fliph,int bank) +{ + uint32 t_adr,t_index,i; + uint8 byte0,byte1,byte2,byte3; + + if((!bank)||(!(wsVMode &0x07))) + { + +#ifdef TCACHE_OFF + wsTCacheUpdate[number]=false; +#endif + + if(!wsTCacheUpdate[number]) + { + wsTCacheUpdate[number]=true; + switch(wsVMode) + { + case 7: + t_adr=0x4000+(number<<5); + t_index=number<<6; + for(i=0;i<8;i++) + { + byte0=wsRAM[t_adr++]; + byte1=wsRAM[t_adr++]; + byte2=wsRAM[t_adr++]; + byte3=wsRAM[t_adr++]; + wsTCache[t_index]=byte0>>4; + wsTCacheFlipped[t_index++]=byte3&15; + wsTCache[t_index]=byte0&15; + wsTCacheFlipped[t_index++]=byte3>>4; + wsTCache[t_index]=byte1>>4; + wsTCacheFlipped[t_index++]=byte2&15; + wsTCache[t_index]=byte1&15; + wsTCacheFlipped[t_index++]=byte2>>4; + wsTCache[t_index]=byte2>>4; + wsTCacheFlipped[t_index++]=byte1&15; + wsTCache[t_index]=byte2&15; + wsTCacheFlipped[t_index++]=byte1>>4; + wsTCache[t_index]=byte3>>4; + wsTCacheFlipped[t_index++]=byte0&15; + wsTCache[t_index]=byte3&15; + wsTCacheFlipped[t_index++]=byte0>>4; + } + break; + + case 6: + t_adr=0x4000+(number<<5); + t_index=number<<6; + for(i=0;i<8;i++) + { + byte0=wsRAM[t_adr++]; + byte1=wsRAM[t_adr++]; + byte2=wsRAM[t_adr++]; + byte3=wsRAM[t_adr++]; + wsTCache[t_index]=((byte0>>7)&1)|(((byte1>>7)&1)<<1)|(((byte2>>7)&1)<<2)|(((byte3>>7)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0)&1)|(((byte1)&1)<<1)|(((byte2)&1)<<2)|(((byte3)&1)<<3); + wsTCache[t_index]=((byte0>>6)&1)|(((byte1>>6)&1)<<1)|(((byte2>>6)&1)<<2)|(((byte3>>6)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>1)&1)|(((byte1>>1)&1)<<1)|(((byte2>>1)&1)<<2)|(((byte3>>1)&1)<<3); + wsTCache[t_index]=((byte0>>5)&1)|(((byte1>>5)&1)<<1)|(((byte2>>5)&1)<<2)|(((byte3>>5)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>2)&1)|(((byte1>>2)&1)<<1)|(((byte2>>2)&1)<<2)|(((byte3>>2)&1)<<3); + wsTCache[t_index]=((byte0>>4)&1)|(((byte1>>4)&1)<<1)|(((byte2>>4)&1)<<2)|(((byte3>>4)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>3)&1)|(((byte1>>3)&1)<<1)|(((byte2>>3)&1)<<2)|(((byte3>>3)&1)<<3); + wsTCache[t_index]=((byte0>>3)&1)|(((byte1>>3)&1)<<1)|(((byte2>>3)&1)<<2)|(((byte3>>3)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>4)&1)|(((byte1>>4)&1)<<1)|(((byte2>>4)&1)<<2)|(((byte3>>4)&1)<<3); + wsTCache[t_index]=((byte0>>2)&1)|(((byte1>>2)&1)<<1)|(((byte2>>2)&1)<<2)|(((byte3>>2)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>5)&1)|(((byte1>>5)&1)<<1)|(((byte2>>5)&1)<<2)|(((byte3>>5)&1)<<3); + wsTCache[t_index]=((byte0>>1)&1)|(((byte1>>1)&1)<<1)|(((byte2>>1)&1)<<2)|(((byte3>>1)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>6)&1)|(((byte1>>6)&1)<<1)|(((byte2>>6)&1)<<2)|(((byte3>>6)&1)<<3); + wsTCache[t_index]=((byte0)&1)|(((byte1)&1)<<1)|(((byte2)&1)<<2)|(((byte3)&1)<<3); + wsTCacheFlipped[t_index++]=((byte0>>7)&1)|(((byte1>>7)&1)<<1)|(((byte2>>7)&1)<<2)|(((byte3>>7)&1)<<3); + } + break; + + default: + t_adr=0x2000+(number<<4); + t_index=number<<6; + for(i=0;i<8;i++) + { + byte0=wsRAM[t_adr++]; + byte1=wsRAM[t_adr++]; + wsTCache[t_index]=tiles[byte0][byte1][0][0]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][0]; + wsTCache[t_index]=tiles[byte0][byte1][0][1]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][1]; + wsTCache[t_index]=tiles[byte0][byte1][0][2]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][2]; + wsTCache[t_index]=tiles[byte0][byte1][0][3]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][3]; + wsTCache[t_index]=tiles[byte0][byte1][0][4]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][4]; + wsTCache[t_index]=tiles[byte0][byte1][0][5]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][5]; + wsTCache[t_index]=tiles[byte0][byte1][0][6]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][6]; + wsTCache[t_index]=tiles[byte0][byte1][0][7]; + wsTCacheFlipped[t_index++]=tiles[byte0][byte1][1][7]; + } + } + } + if(flipv) + line=7-line; + if(fliph) + memcpy(&wsTileRow[0],&wsTCacheFlipped[(number<<6)|(line<<3)],8); + else + memcpy(&wsTileRow[0],&wsTCache[(number<<6)|(line<<3)],8); + } + else + { + +#ifdef TCACHE_OFF + wsTCacheUpdate2[number]=FALSE; +#endif + + if(!wsTCacheUpdate2[number]) + { + wsTCacheUpdate2[number]=TRUE; + switch(wsVMode) + { + case 7: + t_adr=0x8000+(number<<5); + t_index=number<<6; + for(i=0;i<8;i++) + { + byte0=wsRAM[t_adr++]; + byte1=wsRAM[t_adr++]; + byte2=wsRAM[t_adr++]; + byte3=wsRAM[t_adr++]; + wsTCache2[t_index]=byte0>>4; + wsTCacheFlipped2[t_index++]=byte3&15; + wsTCache2[t_index]=byte0&15; + wsTCacheFlipped2[t_index++]=byte3>>4; + wsTCache2[t_index]=byte1>>4; + wsTCacheFlipped2[t_index++]=byte2&15; + wsTCache2[t_index]=byte1&15; + wsTCacheFlipped2[t_index++]=byte2>>4; + wsTCache2[t_index]=byte2>>4; + wsTCacheFlipped2[t_index++]=byte1&15; + wsTCache2[t_index]=byte2&15; + wsTCacheFlipped2[t_index++]=byte1>>4; + wsTCache2[t_index]=byte3>>4; + wsTCacheFlipped2[t_index++]=byte0&15; + wsTCache2[t_index]=byte3&15; + wsTCacheFlipped2[t_index++]=byte0>>4; + } + break; + case 6: + t_adr=0x8000+(number<<5); + t_index=number<<6; + for(i=0;i<8;i++) + { + byte0=wsRAM[t_adr++]; + byte1=wsRAM[t_adr++]; + byte2=wsRAM[t_adr++]; + byte3=wsRAM[t_adr++]; + wsTCache2[t_index]=((byte0>>7)&1)|(((byte1>>7)&1)<<1)|(((byte2>>7)&1)<<2)|(((byte3>>7)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0)&1)|(((byte1)&1)<<1)|(((byte2)&1)<<2)|(((byte3)&1)<<3); + wsTCache2[t_index]=((byte0>>6)&1)|(((byte1>>6)&1)<<1)|(((byte2>>6)&1)<<2)|(((byte3>>6)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>1)&1)|(((byte1>>1)&1)<<1)|(((byte2>>1)&1)<<2)|(((byte3>>1)&1)<<3); + wsTCache2[t_index]=((byte0>>5)&1)|(((byte1>>5)&1)<<1)|(((byte2>>5)&1)<<2)|(((byte3>>5)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>2)&1)|(((byte1>>2)&1)<<1)|(((byte2>>2)&1)<<2)|(((byte3>>2)&1)<<3); + wsTCache2[t_index]=((byte0>>4)&1)|(((byte1>>4)&1)<<1)|(((byte2>>4)&1)<<2)|(((byte3>>4)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>3)&1)|(((byte1>>3)&1)<<1)|(((byte2>>3)&1)<<2)|(((byte3>>3)&1)<<3); + wsTCache2[t_index]=((byte0>>3)&1)|(((byte1>>3)&1)<<1)|(((byte2>>3)&1)<<2)|(((byte3>>3)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>4)&1)|(((byte1>>4)&1)<<1)|(((byte2>>4)&1)<<2)|(((byte3>>4)&1)<<3); + wsTCache2[t_index]=((byte0>>2)&1)|(((byte1>>2)&1)<<1)|(((byte2>>2)&1)<<2)|(((byte3>>2)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>5)&1)|(((byte1>>5)&1)<<1)|(((byte2>>5)&1)<<2)|(((byte3>>5)&1)<<3); + wsTCache2[t_index]=((byte0>>1)&1)|(((byte1>>1)&1)<<1)|(((byte2>>1)&1)<<2)|(((byte3>>1)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>6)&1)|(((byte1>>6)&1)<<1)|(((byte2>>6)&1)<<2)|(((byte3>>6)&1)<<3); + wsTCache2[t_index]=((byte0)&1)|(((byte1)&1)<<1)|(((byte2)&1)<<2)|(((byte3)&1)<<3); + wsTCacheFlipped2[t_index++]=((byte0>>7)&1)|(((byte1>>7)&1)<<1)|(((byte2>>7)&1)<<2)|(((byte3>>7)&1)<<3); + } + break; + default: + t_adr=0x4000+(number<<4); + t_index=number<<6; + for(i=0;i<8;i++) + { + byte0=wsRAM[t_adr++]; + byte1=wsRAM[t_adr++]; + wsTCache2[t_index]=tiles[byte0][byte1][0][0]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][0]; + wsTCache2[t_index]=tiles[byte0][byte1][0][1]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][1]; + wsTCache2[t_index]=tiles[byte0][byte1][0][2]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][2]; + wsTCache2[t_index]=tiles[byte0][byte1][0][3]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][3]; + wsTCache2[t_index]=tiles[byte0][byte1][0][4]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][4]; + wsTCache2[t_index]=tiles[byte0][byte1][0][5]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][5]; + wsTCache2[t_index]=tiles[byte0][byte1][0][6]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][6]; + wsTCache2[t_index]=tiles[byte0][byte1][0][7]; + wsTCacheFlipped2[t_index++]=tiles[byte0][byte1][1][7]; + } + } + } + if(flipv) + line=7-line; + if(fliph) + memcpy(&wsTileRow[0],&wsTCacheFlipped2[(number<<6)|(line<<3)],8); + else + memcpy(&wsTileRow[0],&wsTCache2[(number<<6)|(line<<3)],8); + } +} + +} diff --git a/libmednahawk/src/wswan/v30mz-ea.inc b/libmednahawk/src/wswan/v30mz-ea.inc new file mode 100644 index 0000000000..0b4d030f05 --- /dev/null +++ b/libmednahawk/src/wswan/v30mz-ea.inc @@ -0,0 +1,60 @@ + +static uint32 EA; +static uint16 EO; +static uint16 E16; + +static unsigned EA_000(void) { EO=I.regs.w[BW]+I.regs.w[IX]; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_001(void) { EO=I.regs.w[BW]+I.regs.w[IY]; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_002(void) { EO=I.regs.w[BP]+I.regs.w[IX]; EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_003(void) { EO=I.regs.w[BP]+I.regs.w[IY]; EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_004(void) { EO=I.regs.w[IX]; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_005(void) { EO=I.regs.w[IY]; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_006(void) { EO=FETCH; EO+=FETCH<<8; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_007(void) { EO=I.regs.w[BW]; EA=DefaultBase(DS0)+EO; return EA; } + +static unsigned EA_100(void) { EO=(I.regs.w[BW]+I.regs.w[IX]+(int8)FETCH); EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_101(void) { EO=(I.regs.w[BW]+I.regs.w[IY]+(int8)FETCH); EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_102(void) { EO=(I.regs.w[BP]+I.regs.w[IX]+(int8)FETCH); EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_103(void) { EO=(I.regs.w[BP]+I.regs.w[IY]+(int8)FETCH); EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_104(void) { EO=(I.regs.w[IX]+(int8)FETCH); EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_105(void) { EO=(I.regs.w[IY]+(int8)FETCH); EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_106(void) { EO=(I.regs.w[BP]+(int8)FETCH); EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_107(void) { EO=(I.regs.w[BW]+(int8)FETCH); EA=DefaultBase(DS0)+EO; return EA; } + +static unsigned EA_200(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[BW]+I.regs.w[IX]+(int16)E16; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_201(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[BW]+I.regs.w[IY]+(int16)E16; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_202(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[BP]+I.regs.w[IX]+(int16)E16; EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_203(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[BP]+I.regs.w[IY]+(int16)E16; EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_204(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[IX]+(int16)E16; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_205(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[IY]+(int16)E16; EA=DefaultBase(DS0)+EO; return EA; } +static unsigned EA_206(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[BP]+(int16)E16; EA=DefaultBase(SS)+EO; return EA; } +static unsigned EA_207(void) { E16=FETCH; E16+=FETCH<<8; EO=I.regs.w[BW]+(int16)E16; EA=DefaultBase(DS0)+EO; return EA; } + +static unsigned (*GetEA[192])(void)={ + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, + + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, + + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, + EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207 +}; diff --git a/libmednahawk/src/wswan/v30mz-modrm.inc b/libmednahawk/src/wswan/v30mz-modrm.inc new file mode 100644 index 0000000000..361a9ba5cc --- /dev/null +++ b/libmednahawk/src/wswan/v30mz-modrm.inc @@ -0,0 +1,104 @@ +static struct { + struct { + WREGS w[256]; + BREGS b[256]; + } reg; + struct { + WREGS w[256]; + BREGS b[256]; + } RM; +} Mod_RM; + +#define RegWord(ModRM) I.regs.w[Mod_RM.reg.w[ModRM]] +#define RegByte(ModRM) I.regs.b[Mod_RM.reg.b[ModRM]] + +#define GetRMWord(ModRM) \ + ((ModRM) >= 0xc0 ? I.regs.w[Mod_RM.RM.w[ModRM]] : ( (*GetEA[ModRM])(), ReadWord( EA ) )) + +#define PutbackRMWord(ModRM,val) \ +{ \ + if (ModRM >= 0xc0) I.regs.w[Mod_RM.RM.w[ModRM]]=val; \ + else WriteWord(EA,val); \ +} + +#define GetnextRMWord ReadWord((EA&0xf0000)|((EA+2)&0xffff)) + +#define PutRMWord(ModRM,val) \ +{ \ + if (ModRM >= 0xc0) \ + I.regs.w[Mod_RM.RM.w[ModRM]]=val; \ + else { \ + (*GetEA[ModRM])(); \ + WriteWord( EA ,val); \ + } \ +} + +#define PutImmRMWord(ModRM) \ +{ \ + uint16 val; \ + if (ModRM >= 0xc0) \ + FETCHuint16(I.regs.w[Mod_RM.RM.w[ModRM]]) \ + else { \ + (*GetEA[ModRM])(); \ + FETCHuint16(val) \ + WriteWord( EA , val); \ + } \ +} + +#define GetRMByte(ModRM) \ + ((ModRM) >= 0xc0 ? I.regs.b[Mod_RM.RM.b[ModRM]] : ReadByte( (*GetEA[ModRM])() )) + +#define PutRMByte(ModRM,val) \ +{ \ + if (ModRM >= 0xc0) \ + I.regs.b[Mod_RM.RM.b[ModRM]]=val; \ + else \ + WriteByte( (*GetEA[ModRM])() ,val); \ +} + +#define PutImmRMByte(ModRM) \ +{ \ + if (ModRM >= 0xc0) \ + I.regs.b[Mod_RM.RM.b[ModRM]]=FETCH; \ + else { \ + (*GetEA[ModRM])(); \ + WriteByte( EA , FETCH ); \ + } \ +} + +#define PutbackRMByte(ModRM,val) \ +{ \ + if (ModRM >= 0xc0) \ + I.regs.b[Mod_RM.RM.b[ModRM]]=val; \ + else \ + WriteByte(EA,val); \ +} + +#define DEF_br8 \ + uint32 ModRM = FETCH,src,dst; \ + src = RegByte(ModRM); \ + dst = GetRMByte(ModRM) + +#define DEF_wr16 \ + uint32 ModRM = FETCH,src,dst; \ + src = RegWord(ModRM); \ + dst = GetRMWord(ModRM) + +#define DEF_r8b \ + uint32 ModRM = FETCH,src,dst; \ + dst = RegByte(ModRM); \ + src = GetRMByte(ModRM) + +#define DEF_r16w \ + uint32 ModRM = FETCH,src,dst; \ + dst = RegWord(ModRM); \ + src = GetRMWord(ModRM) + +#define DEF_ald8 \ + uint32 src = FETCH; \ + uint32 dst = I.regs.b[AL] + +#define DEF_axd16 \ + uint32 src = FETCH; \ + uint32 dst = I.regs.w[AW]; \ + src += (FETCH << 8) diff --git a/libmednahawk/src/wswan/v30mz-private.h b/libmednahawk/src/wswan/v30mz-private.h new file mode 100644 index 0000000000..7a1e47acfd --- /dev/null +++ b/libmednahawk/src/wswan/v30mz-private.h @@ -0,0 +1,255 @@ +#define cpu_readop cpu_readmem20 +#define cpu_readop_arg cpu_readmem20 + +typedef enum { DS1, PS, SS, DS0 } SREGS; +typedef enum { AW, CW, DW, BW, SP, BP, IX, IY } WREGS; + +#define NEC_NMI_INT_VECTOR 2 + +#ifdef LSB_FIRST +typedef enum { AL,AH,CL,CH,DL,DH,BL,BH,SPL,SPH,BPL,BPH,IXL,IXH,IYL,IYH } BREGS; +#else +typedef enum { AH,AL,CH,CL,DH,DL,BH,BL,SPH,SPL,BPH,BPL,IXH,IXL,IYH,IYL } BREGS; +#endif + +/* parameter x = result, y = source 1, z = source 2 */ + +#define SetTF(x) (I.TF = (x)) +#define SetIF(x) (I.IF = (x)) +#define SetDF(x) (I.DF = (x)) + +#define SetCFB(x) (I.CarryVal = (x) & 0x100) +#define SetCFW(x) (I.CarryVal = (x) & 0x10000) + +#define SetAF(x,y,z) (I.AuxVal = ((x) ^ ((y) ^ (z))) & 0x10) + + + + +#define SetSF(x) (I.SignVal = (x)) +#define SetZF(x) (I.ZeroVal = (x)) +#define SetPF(x) (I.ParityVal = (x)) + +#define SetSZPF_Byte(x) (I.SignVal=I.ZeroVal=I.ParityVal=(int8)(x)) +#define SetSZPF_Word(x) (I.SignVal=I.ZeroVal=I.ParityVal=(int16)(x)) + +#define SetOFW_Add(x,y,z) (I.OverVal = ((x) ^ (y)) & ((x) ^ (z)) & 0x8000) +#define SetOFB_Add(x,y,z) (I.OverVal = ((x) ^ (y)) & ((x) ^ (z)) & 0x80) +#define SetOFW_Sub(x,y,z) (I.OverVal = ((z) ^ (y)) & ((z) ^ (x)) & 0x8000) +#define SetOFB_Sub(x,y,z) (I.OverVal = ((z) ^ (y)) & ((z) ^ (x)) & 0x80) + +#define ADDB { uint32 res=dst+src; SetCFB(res); SetOFB_Add(res,src,dst); SetAF(res,src,dst); SetSZPF_Byte(res); dst=(uint8)res; } +#define ADDW { uint32 res=dst+src; SetCFW(res); SetOFW_Add(res,src,dst); SetAF(res,src,dst); SetSZPF_Word(res); dst=(uint16)res; } + +#define SUBB { uint32 res=dst-src; SetCFB(res); SetOFB_Sub(res,src,dst); SetAF(res,src,dst); SetSZPF_Byte(res); dst=(uint8)res; } +#define SUBW { uint32 res=dst-src; SetCFW(res); SetOFW_Sub(res,src,dst); SetAF(res,src,dst); SetSZPF_Word(res); dst=(uint16)res; } + +#define ORB dst|=src; I.CarryVal=I.OverVal=I.AuxVal=0; SetSZPF_Byte(dst) +#define ORW dst|=src; I.CarryVal=I.OverVal=I.AuxVal=0; SetSZPF_Word(dst) + +#define ANDB dst&=src; I.CarryVal=I.OverVal=I.AuxVal=0; SetSZPF_Byte(dst) +#define ANDW dst&=src; I.CarryVal=I.OverVal=I.AuxVal=0; SetSZPF_Word(dst) + +#define XORB dst^=src; I.CarryVal=I.OverVal=I.AuxVal=0; SetSZPF_Byte(dst) +#define XORW dst^=src; I.CarryVal=I.OverVal=I.AuxVal=0; SetSZPF_Word(dst) + +#define CF (I.CarryVal!=0) +#define SF (I.SignVal<0) +#define ZF (I.ZeroVal==0) +#define PF parity_table[(uint8)I.ParityVal] +#define AF (I.AuxVal!=0) +#define FLAG_O (I.OverVal!=0) + +/************************************************************************/ + +#define SegBase(Seg) (I.sregs[Seg] << 4) + +#define DefaultBase(Seg) ((seg_prefix && (Seg==DS0 || Seg==SS)) ? prefix_base : I.sregs[Seg] << 4) + +#define GetMemB(Seg,Off) ((uint8)cpu_readmem20((DefaultBase(Seg)+(Off)))) +#define GetMemW(Seg,Off) ((uint16) cpu_readmem20((DefaultBase(Seg)+(Off))) + (cpu_readmem20((DefaultBase(Seg)+((Off)+1)))<<8) ) + +#define PutMemB(Seg,Off,x) { cpu_writemem20((DefaultBase(Seg)+(Off)),(x)); } +#define PutMemW(Seg,Off,x) { PutMemB(Seg,Off,(x)&0xff); PutMemB(Seg,(Off)+1,(uint8)((x)>>8)); } + +/* Todo: Remove these later - plus readword could overflow */ +#define ReadByte(ea) ((uint8)cpu_readmem20((ea))) +#define ReadWord(ea) (cpu_readmem20((ea))+(cpu_readmem20(((ea)+1))<<8)) +#define WriteByte(ea,val) { cpu_writemem20((ea),val); } +#define WriteWord(ea,val) { cpu_writemem20((ea),(uint8)(val)); cpu_writemem20(((ea)+1),(val)>>8); } + +#define read_port(port) cpu_readport(port) +#define write_port(port,val) cpu_writeport(port,val) + +#define FETCH (cpu_readop_arg((I.sregs[PS]<<4)+I.pc++)) +#define FETCHOP (cpu_readop((I.sregs[PS]<<4)+I.pc++)) +#define FETCHuint16(var) { var=cpu_readop_arg((((I.sregs[PS]<<4)+I.pc)))+(cpu_readop_arg((((I.sregs[PS]<<4)+I.pc+1)))<<8); I.pc+=2; } +#define PUSH(val) { I.regs.w[SP]-=2; WriteWord((((I.sregs[SS]<<4)+I.regs.w[SP])),val); } +#define POP(var) { var = ReadWord((((I.sregs[SS]<<4)+I.regs.w[SP]))); I.regs.w[SP]+=2; } +#define PEEK(addr) ((uint8)cpu_readop_arg(addr)) +#define PEEKOP(addr) ((uint8)cpu_readop(addr)) + +#define GetModRM uint32 ModRM=cpu_readop_arg((I.sregs[PS]<<4)+I.pc++) + +/* Cycle count macros: + CLK - cycle count is the same on all processors + CLKM - cycle count for reg/mem instructions + + + Prefetch & buswait time is not emulated. + Extra cycles for PUSH'ing or POP'ing registers to odd addresses is not emulated. +*/ + +#define _REAL_CLK(cycles) { v30mz_ICount -= cycles; v30mz_timestamp += cycles; } +#define CLK _REAL_CLK +//#define CLK(cycles) { _REAL_CLK(cycles); if(ws_CheckDMA(cycles)) _REAL_CLK(1); } + +#define CLKM(mcount, ccount) { if(ModRM >=0xc0 ) { CLK(ccount);} else {CLK(mcount);} } + + +#define CompressFlags() (uint16)(CF | (PF << 2) | (AF << 4) | (ZF << 6) \ + | (SF << 7) | (I.TF << 8) | (I.IF << 9) \ + | (I.DF << 10) | (FLAG_O << 11) | (0xF002)) + + +#define ExpandFlags(f) \ +{ \ + I.CarryVal = (f) & 1; \ + I.ParityVal = !((f) & 4); \ + I.AuxVal = (f) & 16; \ + I.ZeroVal = !((f) & 64); \ + I.SignVal = (f) & 128 ? -1 : 0; \ + I.TF = ((f) & 256) == 256; \ + I.IF = ((f) & 512) == 512; \ + I.DF = ((f) & 1024) == 1024; \ + I.OverVal = (f) & 2048; \ +} + + + +#define IncWordReg(Reg) \ + unsigned tmp = (unsigned)I.regs.w[Reg]; \ + unsigned tmp1 = tmp+1; \ + I.OverVal = (tmp == 0x7fff); \ + SetAF(tmp1,tmp,1); \ + SetSZPF_Word(tmp1); \ + I.regs.w[Reg]=tmp1 + + + +#define DecWordReg(Reg) \ + unsigned tmp = (unsigned)I.regs.w[Reg]; \ + unsigned tmp1 = tmp-1; \ + I.OverVal = (tmp == 0x8000); \ + SetAF(tmp1,tmp,1); \ + SetSZPF_Word(tmp1); \ + I.regs.w[Reg]=tmp1 + +#define JMP(flag) \ + int tmp = (int)((int8)FETCH); \ + if (flag) \ + { \ + I.pc = (uint16)(I.pc+tmp); \ + CLK(3); \ + ADDBRANCHTRACE(I.sregs[PS], I.pc); \ + return; \ + } + +#define ADJ4(param1,param2) \ + if (AF || ((I.regs.b[AL] & 0xf) > 9)) \ + { \ + uint16 tmp; \ + tmp = I.regs.b[AL] + param1; \ + I.regs.b[AL] = tmp; \ + I.AuxVal = 1; \ + I.CarryVal |= tmp & 0x100; /*if(tmp&0x100){puts("Meow"); }*//* Correct? */ \ + } \ + if (CF || (I.regs.b[AL] > 0x9f)) \ + { \ + I.regs.b[AL] += param2; \ + I.CarryVal = 1; \ + } \ + SetSZPF_Byte(I.regs.b[AL]) + +#define ADJB(param1,param2) \ + if (AF || ((I.regs.b[AL] & 0xf) > 9)) \ + { \ + I.regs.b[AL] += param1; \ + I.regs.b[AH] += param2; \ + I.AuxVal = 1; \ + I.CarryVal = 1; \ + } \ + else \ + { \ + I.AuxVal = 0; \ + I.CarryVal = 0; \ + } \ + I.regs.b[AL] &= 0x0F + +#define BIT_NOT \ + if (tmp & (1<> 1)+(CF<<7) +#define ROR_uint16 I.CarryVal = dst & 0x1; dst = (dst >> 1)+(CF<<15) +#define ROLC_uint8 dst = (dst << 1) + CF; SetCFB(dst) +#define ROLC_uint16 dst = (dst << 1) + CF; SetCFW(dst) +#define RORC_uint8 dst = (CF<<8)+dst; I.CarryVal = dst & 0x01; dst >>= 1 +#define RORC_uint16 dst = (CF<<16)+dst; I.CarryVal = dst & 0x01; dst >>= 1 +#define SHL_uint8(c) dst <<= c; SetCFB(dst); SetSZPF_Byte(dst); PutbackRMByte(ModRM,(uint8)dst) +#define SHL_uint16(c) dst <<= c; SetCFW(dst); SetSZPF_Word(dst); PutbackRMWord(ModRM,(uint16)dst) +#define SHR_uint8(c) dst >>= c-1; I.CarryVal = dst & 0x1; dst >>= 1; SetSZPF_Byte(dst); PutbackRMByte(ModRM,(uint8)dst) +#define SHR_uint16(c) dst >>= c-1; I.CarryVal = dst & 0x1; dst >>= 1; SetSZPF_Word(dst); PutbackRMWord(ModRM,(uint16)dst) +#define SHRA_uint8(c) dst = ((int8)dst) >> (c-1); I.CarryVal = dst & 0x1; dst = ((int8)((uint8)dst)) >> 1; SetSZPF_Byte(dst); PutbackRMByte(ModRM,(uint8)dst) +#define SHRA_uint16(c) dst = ((int16)dst) >> (c-1); I.CarryVal = dst & 0x1; dst = ((int16)((uint16)dst)) >> 1; SetSZPF_Word(dst); PutbackRMWord(ModRM,(uint16)dst) + +#define DIVUB \ + uresult = I.regs.w[AW]; \ + uresult2 = uresult % tmp; \ + if ((uresult /= tmp) > 0xff) { \ + nec_interrupt(0); break; \ + } else { \ + I.regs.b[AL] = uresult; \ + I.regs.b[AH] = uresult2; \ + } + +#define DIVB \ + result = (int16)I.regs.w[AW]; \ + result2 = result % (int16)((int8)tmp); \ + if ((result /= (int16)((int8)tmp)) > 0xff) { \ + nec_interrupt(0); break; \ + } else { \ + I.regs.b[AL] = result; \ + I.regs.b[AH] = result2; \ + } + +#define DIVUW \ + uresult = (((uint32)I.regs.w[DW]) << 16) | I.regs.w[AW];\ + uresult2 = uresult % tmp; \ + if ((uresult /= tmp) > 0xffff) { \ + nec_interrupt(0); break; \ + } else { \ + I.regs.w[AW]=uresult; \ + I.regs.w[DW]=uresult2; \ + } + +#define DIVW \ + result = ((uint32)I.regs.w[DW] << 16) + I.regs.w[AW]; \ + result2 = result % (int32)((int16)tmp); \ + if ((result /= (int32)((int16)tmp)) > 0xffff) { \ + nec_interrupt(0); break; \ + } else { \ + I.regs.w[AW]=result; \ + I.regs.w[DW]=result2; \ + } + diff --git a/libmednahawk/src/wswan/v30mz.cpp b/libmednahawk/src/wswan/v30mz.cpp new file mode 100644 index 0000000000..f76661642d --- /dev/null +++ b/libmednahawk/src/wswan/v30mz.cpp @@ -0,0 +1,1153 @@ +/**************************************************************************** + + NEC V30MZ emulator + + Stripped out non-V30MZ clock counts and code. + + Small changes made by dox@space.pl (Corrected bug in NEG instruction , different AUX flag handling in some opcodes) + + (Re)Written June-September 2000 by Bryan McPhail (mish@tendril.co.uk) based + on code by Oliver Bergmann (Raul_Bloodworth@hotmail.com) who based code + on the i286 emulator by Fabrice Frances which had initial work based on + David Hedley's pcemu(!). + +****************************************************************************/ + +/* This NEC V30MZ emulator may be used for purposes both commercial and noncommercial if you give the author, Bryan McPhail, + a small credit somewhere(such as in the documentation for an executable package). +*/ + +/* + TODO: + Implement bus lock fully(prevent interrupts from occuring during a REP sequence, I think...), taking into account + HLT emulation to prevent deadlocks! + + Implement better prefix emulation. It's extremely kludgey right now. + + Implement prefetch/pipeline emulation. +*/ + +#include "wswan.h" +#include "memory.h" + +#include + +#include "v30mz.h" +#include "v30mz-private.h" +#include "debug.h" + +namespace MDFN_IEN_WSWAN +{ + +static uint16 old_CS, old_IP; + +#ifdef WANT_DEBUGGER + #define ADDBRANCHTRACE(x,y) { if(branch_trace_hook) branch_trace_hook(old_CS, old_IP, x, y, false); } + #define ADDBRANCHTRACE_INT(x,y) { if(branch_trace_hook) branch_trace_hook(old_CS, old_IP, x,y, true); } + #define SETOLDCSIP() { old_CS = I.sregs[PS]; old_IP = I.pc; } +#else + #define ADDBRANCHTRACE(x,y) { } + #define ADDBRANCHTRACE_INT(x,y) { } + #define SETOLDCSIP() { } +#endif + +typedef union +{ /* eight general registers */ + uint16 w[8]; /* viewed as 16 bits registers */ + uint8 b[16]; /* or as 8 bit registers */ +} v30mz_basicregs_t; + +typedef struct +{ + v30mz_basicregs_t regs; + uint16 sregs[4]; + + uint16 pc; + + int32 SignVal; + uint32 AuxVal, OverVal, ZeroVal, CarryVal, ParityVal; /* 0 or non-0 valued flags */ + uint8 TF, IF, DF; +} v30mz_regs_t; + +static void (*cpu_writemem20)(uint32,uint8) = NULL; +static uint8 (*cpu_readport)(uint32) = NULL; +static void (*cpu_writeport)(uint32, uint8) = NULL; +static uint8 (*cpu_readmem20)(uint32) = NULL; + +/***************************************************************************/ +/* cpu state */ +/***************************************************************************/ + +uint32 v30mz_timestamp; +int32 v30mz_ICount; + +static v30mz_regs_t I; +static bool InHLT; + +static uint32 prefix_base; /* base address of the latest prefix segment */ +static char seg_prefix; /* prefix segment indicator */ + +#ifdef WANT_DEBUGGER +static void (*cpu_hook)(uint32) = NULL; +static uint8 (*read_hook)(uint32) = NULL; +static void (*write_hook)(uint32, uint8) = NULL; +static uint8 (*port_read_hook)(uint32) = NULL; +static void (*port_write_hook)(uint32, uint8) = NULL; +static bool hookie_hickey = 0; +static void (*branch_trace_hook)(uint16 from_CS, uint16 from_IP, uint16 to_CS, uint16 to_IP, bool interrupt) = NULL; +#endif + +#include "v30mz-ea.inc" +#include "v30mz-modrm.inc" + +static uint8 parity_table[256]; + +static INLINE void i_real_pushf(void) +{ + PUSH( CompressFlags() ); + CLK(2); +} + +static INLINE void i_real_popf(void) +{ + uint32 tmp; + POP(tmp); + ExpandFlags(tmp); + CLK(3); +} + +/***************************************************************************/ + +void v30mz_init(uint8 (*readmem20)(uint32), void (*writemem20)(uint32,uint8), uint8 (*readport)(uint32), void (*writeport)(uint32, uint8)) +{ + cpu_readmem20 = readmem20; + cpu_writemem20 = writemem20; + + cpu_readport = readport; + cpu_writeport = writeport; +} + +void v30mz_reset(void) +{ + const BREGS reg_name[8] = { AL, CL, DL, BL, AH, CH, DH, BH }; + + v30mz_ICount = 0; + v30mz_timestamp = 0; + + memset(&I, 0, sizeof(I)); + + I.sregs[PS] = 0xffff; + + + for(unsigned int i = 0; i < 256; i++) + { + unsigned int c = 0; + + for (unsigned int j = i; j > 0; j >>= 1) + if (j & 1) c++; + + parity_table[i] = !(c & 1); + } + + I.ZeroVal = I.ParityVal = 1; + + for(unsigned int i = 0; i < 256; i++) + { + Mod_RM.reg.b[i] = reg_name[(i & 0x38) >> 3]; + Mod_RM.reg.w[i] = (WREGS) ( (i & 0x38) >> 3) ; + } + + for(unsigned int i = 0xc0; i < 0x100; i++) + { + Mod_RM.RM.w[i] = (WREGS)( i & 7 ); + Mod_RM.RM.b[i] = (BREGS)reg_name[i & 7]; + } + + prefix_base = 0; + seg_prefix = 0; + InHLT = 0; +} + +void v30mz_int(uint32 vector, bool IgnoreIF) +{ + InHLT = FALSE; // This is correct! Standby mode is always exited when there is an INT signal, regardless of whether interrupt are disabled. + if(I.IF || IgnoreIF) + { + uint32 dest_seg, dest_off; + + PUSH( CompressFlags() ); + I.TF = I.IF = 0; + dest_off = ReadWord(vector); + dest_seg = ReadWord(vector+2); + PUSH(I.sregs[PS]); + PUSH(I.pc); + I.pc = (uint16)dest_off; + I.sregs[PS] = (uint16)dest_seg; + ADDBRANCHTRACE_INT(I.sregs[PS], I.pc); + CLK(32); + } +} + +static void nec_interrupt(unsigned int_num) +{ + uint32 dest_seg, dest_off; + + if (int_num == -1) + return; + + i_real_pushf(); + I.TF = I.IF = 0; + + + dest_off = ReadWord((int_num)*4); + dest_seg = ReadWord((int_num)*4+2); + + PUSH(I.sregs[PS]); + PUSH(I.pc); + I.pc = (uint16)dest_off; + I.sregs[PS] = (uint16)dest_seg; + ADDBRANCHTRACE(I.sregs[PS], I.pc); +} + +static bool CheckInHLT(void) +{ + if(InHLT) + { + WSwan_InterruptCheck(); + if(InHLT) + { + int32 tmp = v30mz_ICount; + + if(tmp > 0) + CLK(tmp); + return(1); + } + } + return(0); +} + + +/****************************************************************************/ +/* OPCODES */ +/****************************************************************************/ + +static INLINE void i_real_insb(void) +{ + PutMemB(DS1,I.regs.w[IY], read_port(I.regs.w[DW])); + I.regs.w[IY]+= -2 * I.DF + 1; + CLK(6); +} + +static INLINE void i_real_insw(void) +{ + PutMemB(DS1,I.regs.w[IY],read_port(I.regs.w[DW])); + PutMemB(DS1,(I.regs.w[IY]+1)&0xffff,read_port((I.regs.w[DW]+1)&0xffff)); + I.regs.w[IY]+= -4 * I.DF + 2; + CLK(6); +} + +static INLINE void i_real_outsb(void) +{ + write_port(I.regs.w[DW],GetMemB(DS0,I.regs.w[IX])); + I.regs.w[IX]+= -2 * I.DF + 1; + CLK(7); +} + +static INLINE void i_real_outsw(void) +{ + write_port(I.regs.w[DW],GetMemB(DS0,I.regs.w[IX])); + write_port((I.regs.w[DW]+1)&0xffff,GetMemB(DS0,(I.regs.w[IX]+1)&0xffff)); + I.regs.w[IX]+= -4 * I.DF + 2; + CLK(7); +} + +static INLINE void i_real_movsb(void) +{ + uint32 tmp = GetMemB(DS0,I.regs.w[IX]); + PutMemB(DS1,I.regs.w[IY], tmp); + I.regs.w[IY] += -2 * I.DF + 1; + I.regs.w[IX] += -2 * I.DF + 1; + CLK(5); +} + +static INLINE void i_real_movsw(void) +{ + uint32 tmp = GetMemW(DS0,I.regs.w[IX]); PutMemW(DS1,I.regs.w[IY], tmp); I.regs.w[IY] += -4 * I.DF + 2; +I.regs.w[IX] += -4 * I.DF + 2; CLK(5); +} + +static INLINE void i_real_cmpsb(void) +{ + uint32 src = GetMemB(DS1, I.regs.w[IY]); uint32 dst = GetMemB(DS0, I.regs.w[IX]); SUBB; I.regs.w[IY] += -2 * I.DF + 1; +I.regs.w[IX] += -2 * I.DF + 1; CLK(6); +} + +static INLINE void i_real_cmpsw(void) +{ + uint32 src = GetMemW(DS1, I.regs.w[IY]); uint32 dst = GetMemW(DS0, I.regs.w[IX]); SUBW; I.regs.w[IY] += -4 * I.DF + 2; +I.regs.w[IX] += -4 * I.DF + 2; CLK(6); +} + +static INLINE void i_real_stosb(void) +{ + PutMemB(DS1,I.regs.w[IY],I.regs.b[AL]); I.regs.w[IY] += -2 * I.DF + 1; CLK(3); +} + +static INLINE void i_real_stosw(void) +{ + PutMemW(DS1,I.regs.w[IY],I.regs.w[AW]); I.regs.w[IY] += -4 * I.DF + 2; CLK(3); +} + +static INLINE void i_real_lodsb(void) +{ + I.regs.b[AL] = GetMemB(DS0,I.regs.w[IX]); I.regs.w[IX] += -2 * I.DF + 1; CLK(3); +} + +static INLINE void i_real_lodsw(void) +{ + I.regs.w[AW] = GetMemW(DS0,I.regs.w[IX]); I.regs.w[IX] += -4 * I.DF + 2; CLK(3); +} + +static INLINE void i_real_scasb(void) +{ + uint32 src = GetMemB(DS1, I.regs.w[IY]); uint32 dst = I.regs.b[AL]; SUBB; + I.regs.w[IY] += -2 * I.DF + 1; CLK(4); +} + +static INLINE void i_real_scasw(void) +{ + uint32 src = GetMemW(DS1, I.regs.w[IY]); uint32 dst = I.regs.w[AW]; SUBW; + I.regs.w[IY] += -4 * I.DF + 2; CLK(4); +} + +static void DoOP(uint8 opcode) +{ + //#define OP(num,func_name) static void func_name(void) + #define OP(num, func_name) case num: + #define OP_RANGE(num1, num2, func_name) case num1 ... num2: + #define OP_EPILOGUE break + +switch(opcode) +{ +default: + printf("Invalid op: %02x\n", opcode); + CLK(10); + break; + +OP( 0x00, i_add_br8 ) { DEF_br8; ADDB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x01, i_add_wr16 ) { DEF_wr16; ADDW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x02, i_add_r8b ) { DEF_r8b; ADDB; RegByte(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x03, i_add_r16w ) { DEF_r16w; ADDW; RegWord(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x04, i_add_ald8 ) { DEF_ald8; ADDB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x05, i_add_axd16) { DEF_axd16; ADDW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x06, i_push_ds1 ) { PUSH(I.sregs[DS1]); CLK(2); } OP_EPILOGUE; +OP( 0x07, i_pop_ds1 ) { POP(I.sregs[DS1]); CLK(3); } OP_EPILOGUE; + +OP( 0x08, i_or_br8 ) { DEF_br8; ORB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x09, i_or_wr16 ) { DEF_wr16; ORW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x0a, i_or_r8b ) { DEF_r8b; ORB; RegByte(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x0b, i_or_r16w ) { DEF_r16w; ORW; RegWord(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x0c, i_or_ald8 ) { DEF_ald8; ORB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x0d, i_or_axd16 ) { DEF_axd16; ORW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x0e, i_push_cs ) { PUSH(I.sregs[PS]); CLK(2); } OP_EPILOGUE; + +OP( 0x10, i_adc_br8 ) { DEF_br8; src+=CF; ADDB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x11, i_adc_wr16 ) { DEF_wr16; src+=CF; ADDW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x12, i_adc_r8b ) { DEF_r8b; src+=CF; ADDB; RegByte(ModRM)=dst; CLKM(2, 1); } OP_EPILOGUE; +OP( 0x13, i_adc_r16w ) { DEF_r16w; src+=CF; ADDW; RegWord(ModRM)=dst; CLKM(2, 1); } OP_EPILOGUE; +OP( 0x14, i_adc_ald8 ) { DEF_ald8; src+=CF; ADDB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x15, i_adc_axd16) { DEF_axd16; src+=CF; ADDW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x16, i_push_ss ) { PUSH(I.sregs[SS]); CLK(2); } OP_EPILOGUE; +OP( 0x17, i_pop_ss ) { POP(I.sregs[SS]); CLK(3); } OP_EPILOGUE; + +OP( 0x18, i_sbb_br8 ) { DEF_br8; src+=CF; SUBB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x19, i_sbb_wr16 ) { DEF_wr16; src+=CF; SUBW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x1a, i_sbb_r8b ) { DEF_r8b; src+=CF; SUBB; RegByte(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x1b, i_sbb_r16w ) { DEF_r16w; src+=CF; SUBW; RegWord(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x1c, i_sbb_ald8 ) { DEF_ald8; src+=CF; SUBB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x1d, i_sbb_axd16) { DEF_axd16; src+=CF; SUBW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x1e, i_push_ds ) { PUSH(I.sregs[DS0]); CLK(2); } OP_EPILOGUE; +OP( 0x1f, i_pop_ds ) { POP(I.sregs[DS0]); CLK(3); } OP_EPILOGUE; + +OP( 0x20, i_and_br8 ) { DEF_br8; ANDB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x21, i_and_wr16 ) { DEF_wr16; ANDW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x22, i_and_r8b ) { DEF_r8b; ANDB; RegByte(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x23, i_and_r16w ) { DEF_r16w; ANDW; RegWord(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x24, i_and_ald8 ) { DEF_ald8; ANDB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x25, i_and_axd16) { DEF_axd16; ANDW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x26, i_ds1 ) { seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; CLK(1); DoOP(FETCHOP); seg_prefix=FALSE; } OP_EPILOGUE; +OP( 0x27, i_daa ) { ADJ4(6,0x60); CLK(10); } OP_EPILOGUE; + +OP( 0x28, i_sub_br8 ) { DEF_br8; SUBB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x29, i_sub_wr16 ) { DEF_wr16; SUBW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x2a, i_sub_r8b ) { DEF_r8b; SUBB; RegByte(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x2b, i_sub_r16w ) { DEF_r16w; SUBW; RegWord(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x2c, i_sub_ald8 ) { DEF_ald8; SUBB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x2d, i_sub_axd16) { DEF_axd16; SUBW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x2e, i_ps ) { seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; CLK(1); DoOP(FETCHOP); seg_prefix=FALSE; } OP_EPILOGUE; +OP( 0x2f, i_das ) { ADJ4(-6,-0x60); CLK(10); } OP_EPILOGUE; + +OP( 0x30, i_xor_br8 ) { DEF_br8; XORB; PutbackRMByte(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x31, i_xor_wr16 ) { DEF_wr16; XORW; PutbackRMWord(ModRM,dst); CLKM(3,1); } OP_EPILOGUE; +OP( 0x32, i_xor_r8b ) { DEF_r8b; XORB; RegByte(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x33, i_xor_r16w ) { DEF_r16w; XORW; RegWord(ModRM)=dst; CLKM(2,1); } OP_EPILOGUE; +OP( 0x34, i_xor_ald8 ) { DEF_ald8; XORB; I.regs.b[AL]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x35, i_xor_axd16) { DEF_axd16; XORW; I.regs.w[AW]=dst; CLK(1); } OP_EPILOGUE; +OP( 0x36, i_ss ) { seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; CLK(1); DoOP(FETCHOP); seg_prefix=FALSE; } OP_EPILOGUE; +OP( 0x37, i_aaa ) { ADJB(6,1); CLK(9); } OP_EPILOGUE; + +OP( 0x38, i_cmp_br8 ) { DEF_br8; SUBB; CLKM(2,1); } OP_EPILOGUE; +OP( 0x39, i_cmp_wr16 ) { DEF_wr16; SUBW; CLKM(2,1); } OP_EPILOGUE; +OP( 0x3a, i_cmp_r8b ) { DEF_r8b; SUBB; CLKM(2,1); } OP_EPILOGUE; +OP( 0x3b, i_cmp_r16w ) { DEF_r16w; SUBW; CLKM(2,1); } OP_EPILOGUE; +OP( 0x3c, i_cmp_ald8 ) { DEF_ald8; SUBB; CLK(1); } OP_EPILOGUE; +OP( 0x3d, i_cmp_axd16) { DEF_axd16; SUBW; CLK(1); } OP_EPILOGUE; +OP( 0x3e, i_ds0 ) { seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; CLK(1); DoOP(FETCHOP); seg_prefix=FALSE; } OP_EPILOGUE; +OP( 0x3f, i_aas ) { ADJB(-6,-1); CLK(9); } OP_EPILOGUE; + +OP( 0x40, i_inc_ax ) { IncWordReg(AW); CLK(1); } OP_EPILOGUE; +OP( 0x41, i_inc_cx ) { IncWordReg(CW); CLK(1); } OP_EPILOGUE; +OP( 0x42, i_inc_dx ) { IncWordReg(DW); CLK(1); } OP_EPILOGUE; +OP( 0x43, i_inc_bx ) { IncWordReg(BW); CLK(1); } OP_EPILOGUE; +OP( 0x44, i_inc_sp ) { IncWordReg(SP); CLK(1); } OP_EPILOGUE; +OP( 0x45, i_inc_bp ) { IncWordReg(BP); CLK(1); } OP_EPILOGUE; +OP( 0x46, i_inc_si ) { IncWordReg(IX); CLK(1); } OP_EPILOGUE; +OP( 0x47, i_inc_di ) { IncWordReg(IY); CLK(1); } OP_EPILOGUE; + +OP( 0x48, i_dec_ax ) { DecWordReg(AW); CLK(1); } OP_EPILOGUE; +OP( 0x49, i_dec_cx ) { DecWordReg(CW); CLK(1); } OP_EPILOGUE; +OP( 0x4a, i_dec_dx ) { DecWordReg(DW); CLK(1); } OP_EPILOGUE; +OP( 0x4b, i_dec_bx ) { DecWordReg(BW); CLK(1); } OP_EPILOGUE; +OP( 0x4c, i_dec_sp ) { DecWordReg(SP); CLK(1); } OP_EPILOGUE; +OP( 0x4d, i_dec_bp ) { DecWordReg(BP); CLK(1); } OP_EPILOGUE; +OP( 0x4e, i_dec_si ) { DecWordReg(IX); CLK(1); } OP_EPILOGUE; +OP( 0x4f, i_dec_di ) { DecWordReg(IY); CLK(1); } OP_EPILOGUE; + +OP( 0x50, i_push_ax ) { PUSH(I.regs.w[AW]); CLK(1); } OP_EPILOGUE; +OP( 0x51, i_push_cx ) { PUSH(I.regs.w[CW]); CLK(1); } OP_EPILOGUE; +OP( 0x52, i_push_dx ) { PUSH(I.regs.w[DW]); CLK(1); } OP_EPILOGUE; +OP( 0x53, i_push_bx ) { PUSH(I.regs.w[BW]); CLK(1); } OP_EPILOGUE; +OP( 0x54, i_push_sp ) { PUSH(I.regs.w[SP]); CLK(1); } OP_EPILOGUE; +OP( 0x55, i_push_bp ) { PUSH(I.regs.w[BP]); CLK(1); } OP_EPILOGUE; +OP( 0x56, i_push_si ) { PUSH(I.regs.w[IX]); CLK(1); } OP_EPILOGUE; +OP( 0x57, i_push_di ) { PUSH(I.regs.w[IY]); CLK(1); } OP_EPILOGUE; + +OP( 0x58, i_pop_ax ) { POP(I.regs.w[AW]); CLK(1); } OP_EPILOGUE; +OP( 0x59, i_pop_cx ) { POP(I.regs.w[CW]); CLK(1); } OP_EPILOGUE; +OP( 0x5a, i_pop_dx ) { POP(I.regs.w[DW]); CLK(1); } OP_EPILOGUE; +OP( 0x5b, i_pop_bx ) { POP(I.regs.w[BW]); CLK(1); } OP_EPILOGUE; +OP( 0x5c, i_pop_sp ) { POP(I.regs.w[SP]); CLK(1); } OP_EPILOGUE; +OP( 0x5d, i_pop_bp ) { POP(I.regs.w[BP]); CLK(1); } OP_EPILOGUE; +OP( 0x5e, i_pop_si ) { POP(I.regs.w[IX]); CLK(1); } OP_EPILOGUE; +OP( 0x5f, i_pop_di ) { POP(I.regs.w[IY]); CLK(1); } OP_EPILOGUE; + +OP( 0x60, i_pusha ) { + unsigned tmp=I.regs.w[SP]; + PUSH(I.regs.w[AW]); + PUSH(I.regs.w[CW]); + PUSH(I.regs.w[DW]); + PUSH(I.regs.w[BW]); + PUSH(tmp); + PUSH(I.regs.w[BP]); + PUSH(I.regs.w[IX]); + PUSH(I.regs.w[IY]); + CLK(9); +} OP_EPILOGUE; + +OP( 0x61, i_popa ) { + unsigned tmp; + POP(I.regs.w[IY]); + POP(I.regs.w[IX]); + POP(I.regs.w[BP]); + POP(tmp); + POP(I.regs.w[BW]); + POP(I.regs.w[DW]); + POP(I.regs.w[CW]); + POP(I.regs.w[AW]); + CLK(8); +} OP_EPILOGUE; + +OP( 0x62, i_chkind ) +{ + uint32 low,high,tmp; + + GetModRM; + + low = GetRMWord(ModRM); + high = GetnextRMWord; + tmp = RegWord(ModRM); + + CLK(13); + if (tmphigh) + { + nec_interrupt(5); + } +} OP_EPILOGUE; + +OP( 0x68, i_push_d16 ) { uint32 tmp; FETCHuint16(tmp); PUSH(tmp); CLK(1); } OP_EPILOGUE; +OP( 0x69, i_imul_d16 ) { uint32 tmp; DEF_r16w; FETCHuint16(tmp); dst = (int32)((int16)src)*(int32)((int16)tmp); I.CarryVal = I.OverVal = (((int32)dst) >> 15 != 0) && (((int32)dst) >> 15 != -1); RegWord(ModRM)=(uint16)dst; CLKM(4,3);} OP_EPILOGUE; +OP( 0x6a, i_push_d8 ) { uint32 tmp = (uint16)((int16)((int8)FETCH)); PUSH(tmp); CLK(1); } OP_EPILOGUE; +OP( 0x6b, i_imul_d8 ) { uint32 src2; DEF_r16w; src2= (uint16)((int16)((int8)FETCH)); dst = (int32)((int16)src)*(int32)((int16)src2); I.CarryVal = I.OverVal = (((int32)dst) >> 15 != 0) && (((int32)dst) >> 15 != -1); RegWord(ModRM)=(uint16)dst; CLKM(4,3); } OP_EPILOGUE; +OP( 0x6c, i_insb ) { i_real_insb(); } OP_EPILOGUE; +OP( 0x6d, i_insw ) { i_real_insw(); } OP_EPILOGUE; +OP( 0x6e, i_outsb ) { i_real_outsb(); } OP_EPILOGUE; +OP( 0x6f, i_outsw ) { i_real_outsw(); } OP_EPILOGUE; + +OP( 0x70, i_jo ) { JMP( FLAG_O); CLK(1); } OP_EPILOGUE; +OP( 0x71, i_jno ) { JMP(!FLAG_O); CLK(1); } OP_EPILOGUE; +OP( 0x72, i_jc ) { JMP( CF); CLK(1); } OP_EPILOGUE; +OP( 0x73, i_jnc ) { JMP(!CF); CLK(1); } OP_EPILOGUE; +OP( 0x74, i_jz ) { JMP( ZF); CLK(1); } OP_EPILOGUE; +OP( 0x75, i_jnz ) { JMP(!ZF); CLK(1); } OP_EPILOGUE; +OP( 0x76, i_jce ) { JMP(CF || ZF); CLK(1); } OP_EPILOGUE; +OP( 0x77, i_jnce ) { JMP(!(CF || ZF)); CLK(1); } OP_EPILOGUE; +OP( 0x78, i_js ) { JMP( SF); CLK(1); } OP_EPILOGUE; +OP( 0x79, i_jns ) { JMP(!SF); CLK(1); } OP_EPILOGUE; +OP( 0x7a, i_jp ) { JMP( PF); CLK(1); } OP_EPILOGUE; +OP( 0x7b, i_jnp ) { JMP(!PF); CLK(1); } OP_EPILOGUE; +OP( 0x7c, i_jl ) { JMP((SF!=FLAG_O)&&(!ZF)); CLK(1); } OP_EPILOGUE; +OP( 0x7d, i_jnl ) { JMP((ZF)||(SF==FLAG_O)); CLK(1); } OP_EPILOGUE; +OP( 0x7e, i_jle ) { JMP((ZF)||(SF!=FLAG_O)); CLK(1); } OP_EPILOGUE; +OP( 0x7f, i_jnle ) { JMP((SF==FLAG_O)&&(!ZF)); CLK(1); } OP_EPILOGUE; + +OP( 0x80, i_80pre ) { uint32 dst, src; GetModRM; dst = GetRMByte(ModRM); src = FETCH; + CLKM(3, 1); + switch (ModRM & 0x38) { + case 0x00: ADDB; PutbackRMByte(ModRM,dst); break; + case 0x08: ORB; PutbackRMByte(ModRM,dst); break; + case 0x10: src+=CF; ADDB; PutbackRMByte(ModRM,dst); break; + case 0x18: src+=CF; SUBB; PutbackRMByte(ModRM,dst); break; + case 0x20: ANDB; PutbackRMByte(ModRM,dst); break; + case 0x28: SUBB; PutbackRMByte(ModRM,dst); break; + case 0x30: XORB; PutbackRMByte(ModRM,dst); break; + case 0x38: SUBB; break; /* CMP */ + } +} OP_EPILOGUE; + +OP( 0x81, i_81pre ) { uint32 dst, src; GetModRM; dst = GetRMWord(ModRM); src = FETCH; src+= (FETCH << 8); + CLKM(3, 1); + switch (ModRM & 0x38) { + case 0x00: ADDW; PutbackRMWord(ModRM,dst); break; + case 0x08: ORW; PutbackRMWord(ModRM,dst); break; + case 0x10: src+=CF; ADDW; PutbackRMWord(ModRM,dst); break; + case 0x18: src+=CF; SUBW; PutbackRMWord(ModRM,dst); break; + case 0x20: ANDW; PutbackRMWord(ModRM,dst); break; + case 0x28: SUBW; PutbackRMWord(ModRM,dst); break; + case 0x30: XORW; PutbackRMWord(ModRM,dst); break; + case 0x38: SUBW; break; /* CMP */ + } +} OP_EPILOGUE; + +OP( 0x82, i_82pre ) { uint32 dst, src; GetModRM; dst = GetRMByte(ModRM); src = (uint8)((int8)FETCH); + CLKM(3,1); + switch (ModRM & 0x38) { + case 0x00: ADDB; PutbackRMByte(ModRM,dst); break; + case 0x08: ORB; PutbackRMByte(ModRM,dst); break; + case 0x10: src+=CF; ADDB; PutbackRMByte(ModRM,dst); break; + case 0x18: src+=CF; SUBB; PutbackRMByte(ModRM,dst); break; + case 0x20: ANDB; PutbackRMByte(ModRM,dst); break; + case 0x28: SUBB; PutbackRMByte(ModRM,dst); break; + case 0x30: XORB; PutbackRMByte(ModRM,dst); break; + case 0x38: SUBB; break; /* CMP */ + } +} OP_EPILOGUE; + +OP( 0x83, i_83pre ) { uint32 dst, src; GetModRM; dst = GetRMWord(ModRM); src = (uint16)((int16)((int8)FETCH)); + CLKM(3,1); + switch (ModRM & 0x38) { + case 0x00: ADDW; PutbackRMWord(ModRM,dst); break; + case 0x08: ORW; PutbackRMWord(ModRM,dst); break; + case 0x10: src+=CF; ADDW; PutbackRMWord(ModRM,dst); break; + case 0x18: src+=CF; SUBW; PutbackRMWord(ModRM,dst); break; + case 0x20: ANDW; PutbackRMWord(ModRM,dst); break; + case 0x28: SUBW; PutbackRMWord(ModRM,dst); break; + case 0x30: XORW; PutbackRMWord(ModRM,dst); break; + case 0x38: SUBW; break; /* CMP */ + } +} OP_EPILOGUE; + +OP( 0x84, i_test_br8 ) { DEF_br8; ANDB; CLKM(2,1); } OP_EPILOGUE; +OP( 0x85, i_test_wr16 ) { DEF_wr16; ANDW; CLKM(2,1); } OP_EPILOGUE; +OP( 0x86, i_xchg_br8 ) { DEF_br8; RegByte(ModRM)=dst; PutbackRMByte(ModRM,src); CLKM(5,3); } OP_EPILOGUE; +OP( 0x87, i_xchg_wr16 ) { DEF_wr16; RegWord(ModRM)=dst; PutbackRMWord(ModRM,src); CLKM(5,3); } OP_EPILOGUE; + +OP( 0x88, i_mov_br8 ) { uint8 src; GetModRM; src = RegByte(ModRM); PutRMByte(ModRM,src); CLK(1); } OP_EPILOGUE; +OP( 0x89, i_mov_wr16 ) { uint16 src; GetModRM; src = RegWord(ModRM); PutRMWord(ModRM,src); CLK(1); } OP_EPILOGUE; +OP( 0x8a, i_mov_r8b ) { uint8 src; GetModRM; src = GetRMByte(ModRM); RegByte(ModRM)=src; CLK(1); } OP_EPILOGUE; +OP( 0x8b, i_mov_r16w ) { uint16 src; GetModRM; src = GetRMWord(ModRM); RegWord(ModRM)=src; CLK(1); } OP_EPILOGUE; +OP( 0x8c, i_mov_wsreg ) { GetModRM; PutRMWord(ModRM,I.sregs[(ModRM & 0x38) >> 3]); CLK(1); } OP_EPILOGUE; +OP( 0x8d, i_lea ) { uint16 ModRM = FETCH; if(ModRM >= 192) { printf("LEA Error: %02x\n", ModRM);} else { (void)(*GetEA[ModRM])(); } RegWord(ModRM)=EO; CLK(1); } OP_EPILOGUE; +OP( 0x8e, i_mov_sregw ) { uint16 src; GetModRM; src = GetRMWord(ModRM); CLKM(3,2); + switch (ModRM & 0x38) { + case 0x00: I.sregs[DS1] = src; break; /* mov ds1,ew */ + case 0x08: I.sregs[PS] = src; break; /* mov cs,ew */ + case 0x10: I.sregs[SS] = src; break; /* mov ss,ew */ + case 0x18: I.sregs[DS0] = src; break; /* mov ds0,ew */ + } +} OP_EPILOGUE; + +OP( 0x8f, i_popw ) { uint16 tmp; GetModRM; POP(tmp); PutRMWord(ModRM,tmp); CLKM(3,1); } OP_EPILOGUE; +OP( 0x90, i_nop ) { CLK(3); } OP_EPILOGUE; + +OP( 0x91, i_xchg_axcx ) { XchgAWReg(CW); CLK(3); } OP_EPILOGUE; +OP( 0x92, i_xchg_axdx ) { XchgAWReg(DW); CLK(3); } OP_EPILOGUE; +OP( 0x93, i_xchg_axbx ) { XchgAWReg(BW); CLK(3); } OP_EPILOGUE; +OP( 0x94, i_xchg_axsp ) { XchgAWReg(SP); CLK(3); } OP_EPILOGUE; +OP( 0x95, i_xchg_axbp ) { XchgAWReg(BP); CLK(3); } OP_EPILOGUE; +OP( 0x96, i_xchg_axsi ) { XchgAWReg(IX); CLK(3); } OP_EPILOGUE; +OP( 0x97, i_xchg_axdi ) { XchgAWReg(IY); CLK(3); } OP_EPILOGUE; + +// AKA CVTBW +OP( 0x98, i_cbw ) { I.regs.b[AH] = (I.regs.b[AL] & 0x80) ? 0xff : 0; CLK(1); } OP_EPILOGUE; + +// AKA CVTWL +OP( 0x99, i_cwd ) { I.regs.w[DW] = (I.regs.b[AH] & 0x80) ? 0xffff : 0; CLK(1); } OP_EPILOGUE; + +OP( 0x9a, i_call_far ) { uint32 tmp, tmp2; FETCHuint16(tmp); FETCHuint16(tmp2); PUSH(I.sregs[PS]); PUSH(I.pc); I.pc = (uint16)tmp; I.sregs[PS] = (uint16)tmp2; ADDBRANCHTRACE(I.sregs[PS], I.pc); CLK(10); } OP_EPILOGUE; +OP( 0x9b, i_poll ) { puts("POLL"); } OP_EPILOGUE; +OP( 0x9c, i_pushf ) { i_real_pushf(); } OP_EPILOGUE; +OP( 0x9d, i_popf ) { i_real_popf(); } OP_EPILOGUE; +OP( 0x9e, i_sahf ) { uint32 tmp = (CompressFlags() & 0xff00) | (I.regs.b[AH] & 0xd5); ExpandFlags(tmp); CLK(4); } OP_EPILOGUE; +OP( 0x9f, i_lahf ) { I.regs.b[AH] = CompressFlags() & 0xff; CLK(2); } OP_EPILOGUE; + +OP( 0xa0, i_mov_aldisp ) { uint32 addr; FETCHuint16(addr); I.regs.b[AL] = GetMemB(DS0, addr); CLK(1); } OP_EPILOGUE; +OP( 0xa1, i_mov_axdisp ) { uint32 addr; FETCHuint16(addr); I.regs.b[AL] = GetMemB(DS0, addr); I.regs.b[AH] = GetMemB(DS0, (addr+1)&0xffff); CLK(1); } OP_EPILOGUE; +OP( 0xa2, i_mov_dispal ) { uint32 addr; FETCHuint16(addr); PutMemB(DS0, addr, I.regs.b[AL]); CLK(1); } OP_EPILOGUE; +OP( 0xa3, i_mov_dispax ) { uint32 addr; FETCHuint16(addr); PutMemB(DS0, addr, I.regs.b[AL]); PutMemB(DS0, (addr+1)&0xffff, I.regs.b[AH]); CLK(1); } OP_EPILOGUE; + +OP( 0xa4, i_movsb ) { i_real_movsb(); } OP_EPILOGUE; +OP( 0xa5, i_movsw ) { i_real_movsw(); } OP_EPILOGUE; +OP( 0xa6, i_cmpsb ) { i_real_cmpsb(); } OP_EPILOGUE; +OP( 0xa7, i_cmpsw ) { i_real_cmpsw(); } OP_EPILOGUE; + +OP( 0xa8, i_test_ald8 ) { DEF_ald8; ANDB; CLK(1); } OP_EPILOGUE; +OP( 0xa9, i_test_axd16 ) { DEF_axd16; ANDW; CLK(1); } OP_EPILOGUE; + +OP( 0xaa, i_stosb ) { i_real_stosb(); } OP_EPILOGUE; +OP( 0xab, i_stosw ) { i_real_stosw(); } OP_EPILOGUE; +OP( 0xac, i_lodsb ) { i_real_lodsb(); } OP_EPILOGUE; +OP( 0xad, i_lodsw ) { i_real_lodsw(); } OP_EPILOGUE; +OP( 0xae, i_scasb ) { i_real_scasb(); } OP_EPILOGUE; +OP( 0xaf, i_scasw ) { i_real_scasw(); } OP_EPILOGUE; + +OP( 0xb0, i_mov_ald8 ) { I.regs.b[AL] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb1, i_mov_cld8 ) { I.regs.b[CL] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb2, i_mov_dld8 ) { I.regs.b[DL] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb3, i_mov_bld8 ) { I.regs.b[BL] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb4, i_mov_ahd8 ) { I.regs.b[AH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb5, i_mov_chd8 ) { I.regs.b[CH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb6, i_mov_dhd8 ) { I.regs.b[DH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb7, i_mov_bhd8 ) { I.regs.b[BH] = FETCH; CLK(1); } OP_EPILOGUE; + +OP( 0xb8, i_mov_axd16 ) { I.regs.b[AL] = FETCH; I.regs.b[AH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xb9, i_mov_cxd16 ) { I.regs.b[CL] = FETCH; I.regs.b[CH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xba, i_mov_dxd16 ) { I.regs.b[DL] = FETCH; I.regs.b[DH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xbb, i_mov_bxd16 ) { I.regs.b[BL] = FETCH; I.regs.b[BH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xbc, i_mov_spd16 ) { I.regs.b[SPL] = FETCH; I.regs.b[SPH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xbd, i_mov_bpd16 ) { I.regs.b[BPL] = FETCH; I.regs.b[BPH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xbe, i_mov_sid16 ) { I.regs.b[IXL] = FETCH; I.regs.b[IXH] = FETCH; CLK(1); } OP_EPILOGUE; +OP( 0xbf, i_mov_did16 ) { I.regs.b[IYL] = FETCH; I.regs.b[IYH] = FETCH; CLK(1); } OP_EPILOGUE; + +OP( 0xc0, i_rotshft_bd8 ) { + uint32 src, dst; uint8 c; + GetModRM; src = (unsigned)GetRMByte(ModRM); dst=src; + c=FETCH; + c&=0x1f; + CLKM(5,3); + if (c) switch (ModRM & 0x38) { + case 0x00: do { ROL_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x08: do { ROR_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x10: do { ROLC_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x18: do { RORC_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x20: SHL_uint8(c); I.AuxVal = 1; break;// + case 0x28: SHR_uint8(c); I.AuxVal = 1; break;// + case 0x30: break; + case 0x38: SHRA_uint8(c); break; + } +} OP_EPILOGUE; + +OP( 0xc1, i_rotshft_wd8 ) { + uint32 src, dst; uint8 c; + GetModRM; src = (unsigned)GetRMWord(ModRM); dst=src; + c=FETCH; + c&=0x1f; + CLKM(5,3); + if (c) switch (ModRM & 0x38) { + case 0x00: do { ROL_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x08: do { ROR_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x10: do { ROLC_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x18: do { RORC_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x20: SHL_uint16(c); I.AuxVal = 1; break; + case 0x28: SHR_uint16(c); I.AuxVal = 1; break; + case 0x30: break; + case 0x38: SHRA_uint16(c); break; + } +} OP_EPILOGUE; + +OP( 0xc2, i_ret_d16 ) { uint32 count = FETCH; count += FETCH << 8; POP(I.pc); I.regs.w[SP]+=count; CLK(6); ADDBRANCHTRACE(I.sregs[PS], I.pc); } OP_EPILOGUE; +OP( 0xc3, i_ret ) { POP(I.pc); CLK(6); ADDBRANCHTRACE(I.sregs[PS], I.pc); } OP_EPILOGUE; +OP( 0xc4, i_les_dw ) { GetModRM; uint16 tmp = GetRMWord(ModRM); RegWord(ModRM)=tmp; I.sregs[DS1] = GetnextRMWord; CLK(6); } OP_EPILOGUE; +OP( 0xc5, i_lds_dw ) { GetModRM; uint16 tmp = GetRMWord(ModRM); RegWord(ModRM)=tmp; I.sregs[DS0] = GetnextRMWord; CLK(6); } OP_EPILOGUE; +OP( 0xc6, i_mov_bd8 ) { GetModRM; PutImmRMByte(ModRM); CLK(1); } OP_EPILOGUE; +OP( 0xc7, i_mov_wd16 ) { GetModRM; PutImmRMWord(ModRM); CLK(1); } OP_EPILOGUE; + +// NEC calls it "PREPARE" +OP( 0xc8, i_enter ) { + uint32 nb = FETCH; + uint32 i,level; + + CLK(19); + nb += FETCH << 8; + + level = FETCH; + level &= 0x1F; // Only lower 5 bits are valid on V30MZ + + PUSH(I.regs.w[BP]); + I.regs.w[BP]=I.regs.w[SP]; + I.regs.w[SP] -= nb; + for (i=1;i0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x08: do { ROR_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x10: do { ROLC_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x18: do { RORC_uint8; c--; } while (c>0); PutbackRMByte(ModRM,(uint8)dst); break; + case 0x20: SHL_uint8(c); I.AuxVal = 1; break; + case 0x28: SHR_uint8(c); I.AuxVal = 1;break; + case 0x30: break; + case 0x38: SHRA_uint8(c); break; + } +} OP_EPILOGUE; + +OP( 0xd3, i_rotshft_wcl ) { + uint32 src, dst; uint8 c; GetModRM; src = (uint32)GetRMWord(ModRM); dst=src; + c=I.regs.b[CL]; + c&=0x1f; + CLKM(5,3); + if (c) switch (ModRM & 0x38) { + case 0x00: do { ROL_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x08: do { ROR_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x10: do { ROLC_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x18: do { RORC_uint16; c--; } while (c>0); PutbackRMWord(ModRM,(uint16)dst); break; + case 0x20: SHL_uint16(c); I.AuxVal = 1; break; + case 0x28: SHR_uint16(c); I.AuxVal = 1; break; + case 0x30: break; + case 0x38: SHRA_uint16(c); break; + } +} OP_EPILOGUE; + +OP( 0xd4, i_aam ) { uint32 mult=FETCH; mult=0; I.regs.b[AH] = I.regs.b[AL] / 10; I.regs.b[AL] %= 10; SetSZPF_Word(I.regs.w[AW]); CLK(17); } OP_EPILOGUE; +OP( 0xd5, i_aad ) { uint32 mult=FETCH; mult=0; I.regs.b[AL] = I.regs.b[AH] * 10 + I.regs.b[AL]; I.regs.b[AH] = 0; SetSZPF_Byte(I.regs.b[AL]); CLK(6); } OP_EPILOGUE; +OP( 0xd6, i_setalc ) { I.regs.b[AL] = (CF)?0xff:0x00; CLK(3); } OP_EPILOGUE; +OP( 0xd7, i_trans ) { uint32 dest = (I.regs.w[BW]+I.regs.b[AL])&0xffff; I.regs.b[AL] = GetMemB(DS0, dest); CLK(5); } OP_EPILOGUE; + +OP_RANGE(0xd8, 0xdf, i_fpo) { /*printf("FPO1, Op:%02x\n", opcode);*/ GetModRM; CLK(1); } OP_EPILOGUE; + +OP( 0xe0, i_loopne ) { int8 disp = (int8)FETCH; I.regs.w[CW]--; if (!ZF && I.regs.w[CW]) { I.pc = (uint16)(I.pc+disp); CLK(6); ADDBRANCHTRACE(I.sregs[PS], I.pc); } else CLK(3); } OP_EPILOGUE; +OP( 0xe1, i_loope ) { int8 disp = (int8)FETCH; I.regs.w[CW]--; if ( ZF && I.regs.w[CW]) { I.pc = (uint16)(I.pc+disp); CLK(6); ADDBRANCHTRACE(I.sregs[PS], I.pc); } else CLK(3); } OP_EPILOGUE; +OP( 0xe2, i_loop ) { int8 disp = (int8)FETCH; I.regs.w[CW]--; if (I.regs.w[CW]) { I.pc = (uint16)(I.pc+disp); CLK(5); ADDBRANCHTRACE(I.sregs[PS], I.pc); } else CLK(2); } OP_EPILOGUE; +OP( 0xe3, i_jcxz ) { int8 disp = (int8)FETCH; if (I.regs.w[CW] == 0) { I.pc = (uint16)(I.pc+disp); CLK(4); ADDBRANCHTRACE(I.sregs[PS], I.pc); } else CLK(1); } OP_EPILOGUE; +OP( 0xe4, i_inal ) { uint8 port = FETCH; I.regs.b[AL] = read_port(port); CLK(6); } OP_EPILOGUE; +OP( 0xe5, i_inax ) { uint8 port = FETCH; I.regs.b[AL] = read_port(port); I.regs.b[AH] = read_port(port+1); CLK(6); } OP_EPILOGUE; +OP( 0xe6, i_outal ) { uint8 port = FETCH; write_port(port, I.regs.b[AL]); CLK(6); } OP_EPILOGUE; +OP( 0xe7, i_outax ) { uint8 port = FETCH; write_port(port, I.regs.b[AL]); write_port(port+1, I.regs.b[AH]); CLK(6); } OP_EPILOGUE; + +OP( 0xe8, i_call_d16 ) { uint32 tmp; FETCHuint16(tmp); PUSH(I.pc); I.pc = (uint16)(I.pc+(int16)tmp); ADDBRANCHTRACE(I.sregs[PS], I.pc); CLK(5); } OP_EPILOGUE; +OP( 0xe9, i_jmp_d16 ) { uint32 tmp; FETCHuint16(tmp); I.pc = (uint16)(I.pc+(int16)tmp); ADDBRANCHTRACE(I.sregs[PS], I.pc); CLK(4); } OP_EPILOGUE; +OP( 0xea, i_jmp_far ) { uint32 tmp,tmp1; FETCHuint16(tmp); FETCHuint16(tmp1); I.sregs[PS] = (uint16)tmp1; I.pc = (uint16)tmp; ; ADDBRANCHTRACE(I.sregs[PS], I.pc); CLK(7); } OP_EPILOGUE; +OP( 0xeb, i_jmp_d8 ) { int tmp = (int)((int8)FETCH); CLK(4);I.pc = (uint16)(I.pc+tmp); ADDBRANCHTRACE(I.sregs[PS], I.pc); } OP_EPILOGUE; + +OP( 0xec, i_inaldx ) { I.regs.b[AL] = read_port(I.regs.w[DW]); CLK(6);} OP_EPILOGUE; +OP( 0xed, i_inaxdx ) { uint32 port = I.regs.w[DW]; I.regs.b[AL] = read_port(port); I.regs.b[AH] = read_port(port+1); CLK(6); } OP_EPILOGUE; + +OP( 0xee, i_outdxal ) { write_port(I.regs.w[DW], I.regs.b[AL]); CLK(6); } OP_EPILOGUE; +OP( 0xef, i_outdxax ) { uint32 port = I.regs.w[DW]; write_port(port, I.regs.b[AL]); write_port(port+1, I.regs.b[AH]); CLK(6); } OP_EPILOGUE; + +// NEC calls it "BUSLOCK" +OP( 0xf0, i_lock ) { CLK(1); DoOP(FETCHOP); } OP_EPILOGUE; + +// We put CHK_ICOUNT *after* the first iteration has completed, to match real behavior. +#define CHK_ICOUNT(cond) if(v30mz_ICount < 0 && (cond)) { I.pc -= seg_prefix ? 3 : 2; break; } + +OP( 0xf2, i_repne ) +{ + uint32 next = FETCHOP; + + switch(next) { /* Segments */ + case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = FETCHOP; CLK(2); break; + case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = FETCHOP; CLK(2); break; + case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = FETCHOP; CLK(2); break; + case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = FETCHOP; CLK(2); break; + } + + switch(next) { + case 0x6c: CLK(5); if (I.regs.w[CW]) do { i_real_insb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0x6d: CLK(5); if (I.regs.w[CW]) do { i_real_insw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0x6e: CLK(5); if (I.regs.w[CW]) do { i_real_outsb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0x6f: CLK(5); if (I.regs.w[CW]) do { i_real_outsw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xa4: CLK(5); if (I.regs.w[CW]) do { i_real_movsb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xa5: CLK(5); if (I.regs.w[CW]) do { i_real_movsw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xa6: CLK(5); if (I.regs.w[CW]) do { i_real_cmpsb(); I.regs.w[CW]--; CLK(3); CHK_ICOUNT(I.regs.w[CW] && ZF == 0); /* 6 + 3 = 9 */ } while (I.regs.w[CW]>0 && ZF==0); break; + case 0xa7: CLK(5); if (I.regs.w[CW]) do { i_real_cmpsw(); I.regs.w[CW]--; CLK(3); CHK_ICOUNT(I.regs.w[CW] && ZF == 0); /* 6 + 3 = 9 */ } while (I.regs.w[CW]>0 && ZF==0); break; + case 0xaa: CLK(5); if (I.regs.w[CW]) do { i_real_stosb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xab: CLK(5); if (I.regs.w[CW]) do { i_real_stosw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xac: CLK(5); if (I.regs.w[CW]) do { i_real_lodsb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xad: CLK(5); if (I.regs.w[CW]) do { i_real_lodsw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xae: CLK(5); if (I.regs.w[CW]) do { i_real_scasb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW] && ZF == 0); } while (I.regs.w[CW]>0 && ZF==0); break; + case 0xaf: CLK(5); if (I.regs.w[CW]) do { i_real_scasw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW] && ZF == 0); } while (I.regs.w[CW]>0 && ZF==0); break; + default: DoOP(next); break; + } + seg_prefix=FALSE; +} OP_EPILOGUE; + +OP( 0xf3, i_repe) +{ + uint32 next = FETCHOP; + + switch(next) { /* Segments */ + case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = FETCHOP; CLK(2); break; + case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = FETCHOP; CLK(2); break; + case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = FETCHOP; CLK(2); break; + case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = FETCHOP; CLK(2); break; + } + switch(next) { + case 0x6c: CLK(5); if (I.regs.w[CW]) do { i_real_insb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0x6d: CLK(5); if (I.regs.w[CW]) do { i_real_insw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0x6e: CLK(5); if (I.regs.w[CW]) do { i_real_outsb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0x6f: CLK(5); if (I.regs.w[CW]) do { i_real_outsw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xa4: CLK(5); if (I.regs.w[CW]) do { i_real_movsb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xa5: CLK(5); if (I.regs.w[CW]) do { i_real_movsw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xa6: CLK(5); if (I.regs.w[CW]) do { i_real_cmpsb(); I.regs.w[CW]--; CLK(3); CHK_ICOUNT(I.regs.w[CW] && ZF == 1); /* 6 + 3 = 9 */ } while (I.regs.w[CW]>0 && ZF==1); break; + case 0xa7: CLK(5); if (I.regs.w[CW]) do { i_real_cmpsw(); I.regs.w[CW]--; CLK(3); CHK_ICOUNT(I.regs.w[CW] && ZF == 1);/* 6 + 3 = 9 */ } while (I.regs.w[CW]>0 && ZF==1); break; + case 0xaa: CLK(5); if (I.regs.w[CW]) do { i_real_stosb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xab: CLK(5); if (I.regs.w[CW]) do { i_real_stosw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xac: CLK(5); if (I.regs.w[CW]) do { i_real_lodsb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xad: CLK(5); if (I.regs.w[CW]) do { i_real_lodsw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW]); } while (I.regs.w[CW]>0); break; + case 0xae: CLK(5); if (I.regs.w[CW]) do { i_real_scasb(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW] && ZF == 1); } while (I.regs.w[CW]>0 && ZF==1); break; + case 0xaf: CLK(5); if (I.regs.w[CW]) do { i_real_scasw(); I.regs.w[CW]--; CHK_ICOUNT(I.regs.w[CW] && ZF == 1); } while (I.regs.w[CW]>0 && ZF==1); break; + default: DoOP(next); break; + } + seg_prefix=FALSE; +} OP_EPILOGUE; + +OP( 0xf4, i_hlt ) { InHLT = TRUE; CheckInHLT(); } OP_EPILOGUE; + +OP( 0xf5, i_cmc ) { I.CarryVal = !CF; CLK(4); } OP_EPILOGUE; +OP( 0xf6, i_f6pre ) { uint32 tmp; uint32 uresult,uresult2; int32 result,result2; + GetModRM; tmp = GetRMByte(ModRM); + switch (ModRM & 0x38) { + case 0x00: tmp &= FETCH; I.CarryVal = I.OverVal = I.AuxVal=0; SetSZPF_Byte(tmp); CLKM(2,1); break; /* TEST */ + case 0x08: break; + case 0x10: PutbackRMByte(ModRM,~tmp); CLKM(3,1); break; /* NOT */ + + case 0x18: I.CarryVal=(tmp!=0);tmp=(~tmp)+1; SetSZPF_Byte(tmp); PutbackRMByte(ModRM,tmp&0xff); CLKM(3,1); break; /* NEG */ + case 0x20: uresult = I.regs.b[AL]*tmp; I.regs.w[AW]=(uint16)uresult; I.CarryVal=I.OverVal=(I.regs.b[AH]!=0); CLKM(4,3); break; /* MULU */ + case 0x28: result = (int16)((int8)I.regs.b[AL])*(int16)((int8)tmp); I.regs.w[AW]=(uint16)result; I.CarryVal=I.OverVal=(I.regs.b[AH]!=0); CLKM(4,3); break; /* MUL */ + case 0x30: if (tmp) { DIVUB; } else nec_interrupt(0); CLKM(16,15); break; + case 0x38: if (tmp) { DIVB; } else nec_interrupt(0); CLKM(18,17); break; + } +} OP_EPILOGUE; + +OP( 0xf7, i_f7pre ) { uint32 tmp,tmp2; uint32 uresult,uresult2; int32 result,result2; + GetModRM; tmp = GetRMWord(ModRM); + switch (ModRM & 0x38) { + case 0x00: FETCHuint16(tmp2); tmp &= tmp2; I.CarryVal = I.OverVal = I.AuxVal=0; SetSZPF_Word(tmp); CLKM(2,1); break; /* TEST */ + case 0x08: break; + case 0x10: PutbackRMWord(ModRM,~tmp); CLKM(3,1); break; /* NOT */ + case 0x18: I.CarryVal=(tmp!=0); tmp=(~tmp)+1; SetSZPF_Word(tmp); PutbackRMWord(ModRM,tmp&0xffff); CLKM(3,1); break; /* NEG */ + case 0x20: uresult = I.regs.w[AW]*tmp; I.regs.w[AW]=uresult&0xffff; I.regs.w[DW]=((uint32)uresult)>>16; I.CarryVal=I.OverVal=(I.regs.w[DW]!=0); CLKM(4,3); break; /* MULU */ + case 0x28: result = (int32)((int16)I.regs.w[AW])*(int32)((int16)tmp); I.regs.w[AW]=result&0xffff; I.regs.w[DW]=result>>16; I.CarryVal=I.OverVal=(I.regs.w[DW]!=0); CLKM(4,3); break; /* MUL */ + case 0x30: if (tmp) { DIVUW; } else nec_interrupt(0); CLKM(24,23); break; + case 0x38: if (tmp) { DIVW; } else nec_interrupt(0); CLKM(25,24); break; + } +} OP_EPILOGUE; + +OP( 0xf8, i_clc ) { I.CarryVal = 0; CLK(4); } OP_EPILOGUE; +OP( 0xf9, i_stc ) { I.CarryVal = 1; CLK(4); } OP_EPILOGUE; +OP( 0xfa, i_di ) { SetIF(0); CLK(4); } OP_EPILOGUE; +OP( 0xfb, i_ei ) { SetIF(1); CLK(4); } OP_EPILOGUE; +OP( 0xfc, i_cld ) { SetDF(0); CLK(4); } OP_EPILOGUE; +OP( 0xfd, i_std ) { SetDF(1); CLK(4); } OP_EPILOGUE; +OP( 0xfe, i_fepre ) { uint32 tmp, tmp1; GetModRM; tmp=GetRMByte(ModRM); + switch(ModRM & 0x38) { + case 0x00: tmp1 = tmp+1; I.OverVal = (tmp==0x7f); SetAF(tmp1,tmp,1); SetSZPF_Byte(tmp1); PutbackRMByte(ModRM,(uint8)tmp1); CLKM(3,1); break; /* INC */ + case 0x08: tmp1 = tmp-1; I.OverVal = (tmp==0x80); SetAF(tmp1,tmp,1); SetSZPF_Byte(tmp1); PutbackRMByte(ModRM,(uint8)tmp1); CLKM(3,1); break; /* DEC */ + } +} OP_EPILOGUE; + +OP( 0xff, i_ffpre ) { uint32 tmp, tmp1; GetModRM; tmp=GetRMWord(ModRM); + switch(ModRM & 0x38) { + case 0x00: tmp1 = tmp+1; I.OverVal = (tmp==0x7fff); SetAF(tmp1,tmp,1); SetSZPF_Word(tmp1); PutbackRMWord(ModRM,(uint16)tmp1); CLKM(3,1); break; /* INC */ + case 0x08: tmp1 = tmp-1; I.OverVal = (tmp==0x8000); SetAF(tmp1,tmp,1); SetSZPF_Word(tmp1); PutbackRMWord(ModRM,(uint16)tmp1); CLKM(3,1); break; /* DEC */ + case 0x10: PUSH(I.pc); I.pc = (uint16)tmp; ADDBRANCHTRACE(I.sregs[PS], I.pc); CLKM(6,5); break; /* CALL */ + case 0x18: tmp1 = I.sregs[PS]; I.sregs[PS] = GetnextRMWord; PUSH(tmp1); PUSH(I.pc); I.pc = tmp; ADDBRANCHTRACE(I.sregs[PS], I.pc); CLKM(12,1); break; /* CALL FAR */ + case 0x20: I.pc = tmp; ADDBRANCHTRACE(I.sregs[PS], I.pc); CLKM(5,4); break; /* JMP */ + case 0x28: I.pc = tmp; I.sregs[PS] = GetnextRMWord; ADDBRANCHTRACE(I.sregs[PS], I.pc); CLKM(10,1); break; /* JMP FAR */ + case 0x30: PUSH(tmp); CLKM(2,1); break; + } +} OP_EPILOGUE; +} // End switch statement + + +} // End func + + +/*****************************************************************************/ + + +unsigned v30mz_get_reg(int regnum) +{ + switch( regnum ) + { + case NEC_PC: return I.pc; + case NEC_SP: return I.regs.w[SP]; + case NEC_FLAGS: return CompressFlags(); + case NEC_AW: return I.regs.w[AW]; + case NEC_CW: return I.regs.w[CW]; + case NEC_DW: return I.regs.w[DW]; + case NEC_BW: return I.regs.w[BW]; + case NEC_BP: return I.regs.w[BP]; + case NEC_IX: return I.regs.w[IX]; + case NEC_IY: return I.regs.w[IY]; + case NEC_DS1: return I.sregs[DS1]; + case NEC_PS: return I.sregs[PS]; + case NEC_SS: return I.sregs[SS]; + case NEC_DS0: return I.sregs[DS0]; + } + return 0; +} + +void nec_set_irq_line(int irqline, int state); + +void v30mz_set_reg(int regnum, unsigned val) +{ + switch( regnum ) + { + case NEC_PC: I.pc = val; break; + case NEC_SP: I.regs.w[SP] = val; break; + case NEC_FLAGS: ExpandFlags(val); break; + case NEC_AW: I.regs.w[AW] = val; break; + case NEC_CW: I.regs.w[CW] = val; break; + case NEC_DW: I.regs.w[DW] = val; break; + case NEC_BW: I.regs.w[BW] = val; break; + case NEC_BP: I.regs.w[BP] = val; break; + case NEC_IX: I.regs.w[IX] = val; break; + case NEC_IY: I.regs.w[IY] = val; break; + case NEC_DS1: I.sregs[DS1] = val; break; + case NEC_PS: I.sregs[PS] = val; break; + case NEC_SS: I.sregs[SS] = val; break; + case NEC_DS0: I.sregs[DS0] = val; break; + } +} + +#ifdef WANT_DEBUGGER +static void (*save_cpu_writemem20)(uint32,uint8); +static uint8 (*save_cpu_readport)(uint32); +static void (*save_cpu_writeport)(uint32, uint8); +static uint8 (*save_cpu_readmem20)(uint32); + +static void test_cpu_writemem20(uint32 A, uint8 V) +{ + if(write_hook) + write_hook(A, V); +} + +static uint8 test_cpu_readmem20(uint32 A) +{ + if(read_hook) + return(read_hook(A)); + else + return(save_cpu_readmem20(A)); +} + +static void test_cpu_writeport(uint32 A, uint8 V) +{ + if(port_write_hook) + port_write_hook(A, V); +} + +static uint8 test_cpu_readport(uint32 A) +{ + if(port_read_hook) + return(port_read_hook(A)); + else + return(save_cpu_readport(A)); +} +#endif + +void v30mz_execute(int cycles) +{ + v30mz_ICount += cycles; + + if(InHLT) + { + SETOLDCSIP(); + WSwan_InterruptCheck(); + if(InHLT) + { + int32 tmp = v30mz_ICount; + + if(tmp > 0) + CLK(tmp); + + #ifdef WANT_DEBUGGER + if(cpu_hook) + cpu_hook(I.pc); + #endif + return; + } + } + + while(v30mz_ICount > 0) + { + SETOLDCSIP(); + + WSwan_InterruptCheck(); + + #ifdef WANT_DEBUGGER + if(hookie_hickey) + { + uint32 save_timestamp = v30mz_timestamp; + int32 save_ICount = v30mz_ICount; + v30mz_regs_t save_I = I; + uint32 save_prefix_base = prefix_base; + char save_seg_prefix = seg_prefix; + void (*save_branch_trace_hook)(uint16 from_CS, uint16 from_IP, uint16 to_CS, uint16 to_IP, bool interrupt) = branch_trace_hook; + + branch_trace_hook = NULL; + + save_cpu_writemem20 = cpu_writemem20; + save_cpu_readport = cpu_readport; + save_cpu_writeport = cpu_writeport; + save_cpu_readmem20 = cpu_readmem20; + + cpu_writemem20 = test_cpu_writemem20; + cpu_readmem20 = test_cpu_readmem20; + cpu_writeport = test_cpu_writeport; + cpu_readport = test_cpu_readport; + + DoOP(FETCHOP); + + branch_trace_hook = save_branch_trace_hook; + v30mz_timestamp = save_timestamp; + v30mz_ICount = save_ICount; + I = save_I; + prefix_base = save_prefix_base; + seg_prefix = save_seg_prefix; + cpu_readmem20 = save_cpu_readmem20; + cpu_writemem20 = save_cpu_writemem20; + cpu_readport = save_cpu_readport; + cpu_writeport = save_cpu_writeport; + InHLT = FALSE; + } + + if(cpu_hook) + cpu_hook(I.pc); + #endif + + DoOP(FETCHOP); + } + +} + +#ifdef WANT_DEBUGGER +void v30mz_debug(void (*CPUHook)(uint32), uint8 (*ReadHook)(uint32), void (*WriteHook)(uint32, uint8), uint8 (*PortReadHook)(uint32), + void (*PortWriteHook)(uint32, uint8), void (*BranchTraceHook)(uint16 from_CS, uint16 from_IP, uint16 to_CS, uint16 to_IP, bool interrupt)) +{ + cpu_hook = CPUHook; + read_hook = ReadHook; + write_hook = WriteHook; + port_read_hook = PortReadHook; + port_write_hook = PortWriteHook; + + hookie_hickey = read_hook || write_hook || port_read_hook || port_write_hook; + + branch_trace_hook = BranchTraceHook; +} +#endif + +int v30mz_StateAction(StateMem *sm, int load, int data_only) +{ + uint16 PSW; + + SFORMAT StateRegs[] = + { + SFVARN(I.pc, "IP"), + SFARRAY16N(I.regs.w, 8, "regs"), + SFARRAY16N(I.sregs, 4, "sregs"), + + SFVARN(v30mz_ICount, "ICount"), + SFVARN(InHLT, "InHLT"), + SFVARN(prefix_base, "prefix_base"), + SFVARN(seg_prefix, "seg_prefix"), + SFVAR(PSW), + SFEND + }; + + PSW = CompressFlags(); + + if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "V30")) + return(0); + + if(load) + { + ExpandFlags(PSW); + } + + return(1); +} + +} diff --git a/libmednahawk/src/wswan/v30mz.h b/libmednahawk/src/wswan/v30mz.h new file mode 100644 index 0000000000..5a784588ed --- /dev/null +++ b/libmednahawk/src/wswan/v30mz.h @@ -0,0 +1,35 @@ +#ifndef __V30MZ_H_ +#define __V30MZ_H_ + +namespace MDFN_IEN_WSWAN +{ + +enum { + NEC_PC=1, NEC_AW, NEC_CW, NEC_DW, NEC_BW, NEC_SP, NEC_BP, NEC_IX, NEC_IY, + NEC_FLAGS, NEC_DS1, NEC_PS, NEC_SS, NEC_DS0 +}; + +/* Public variables */ +extern int v30mz_ICount; +extern uint32 v30mz_timestamp; + + +/* Public functions */ +void v30mz_execute(int cycles); +void v30mz_set_reg(int, unsigned); +unsigned v30mz_get_reg(int regnum); +void v30mz_reset(void); +void v30mz_init(uint8 (*readmem20)(uint32), void (*writemem20)(uint32,uint8), uint8 (*readport)(uint32), void (*writeport)(uint32, uint8)); + +void v30mz_int(uint32 vector, bool IgnoreIF = FALSE); + +int v30mz_StateAction(StateMem *sm, int load, int data_only); + + +#ifdef WANT_DEBUGGER +void v30mz_debug(void (*CPUHook)(uint32), uint8 (*ReadHook)(uint32), void (*WriteHook)(uint32, uint8), uint8 (*PortReadHook)(uint32), void (*PortWriteHook)(uint32, uint8), + void (*BranchTraceHook)(uint16 from_CS, uint16 from_IP, uint16 to_CS, uint16 to_IP, bool interrupt) ); +#endif +#endif + +} diff --git a/libmednahawk/src/wswan/wstech24.txt b/libmednahawk/src/wswan/wstech24.txt new file mode 100644 index 0000000000..3cfec8db90 --- /dev/null +++ b/libmednahawk/src/wswan/wstech24.txt @@ -0,0 +1,757 @@ + ___ ___ _ + / | \ ___ __/ \__ ___ ___ /\__ + \ / \ // __>\_ _// __|/ __\/ \ + \_____/_\__ \ \_/ \___|\___/\_/\_/ + \____/ 2.4 - 26.12.2003 + +1. ABOUT + WStech doc v2.4 made by Judge and Dox + Special thanks to -anonymous- contributor for some usefull info. + + For more info please visit http://www.pocketdomain.net + + Comments/updates/infos please send to dox@space.pl + + What's new in version 2.4: + + - corect info about Sprite Table, BG Map and FG Map locations + (ports $04 and $07 - section 10) + Special thanks to mika-n + +2. CPU + + Bandai SPGY-1001 ASWAN 9850KK003 + NEC V30 MZ - fast version of V30 with internal pipeline (16 bytes prefatch buffer) running at 3.072 MHz. + V30 MZ is aprox 4 times faster than V30. + The V30MZ performs pipeline processing internally, performing instruction fetch (prefetch), instruction decode, and + instruction execution in parallel. For this reason, it is difficult to determine what part of the program is currently being + executed by monitoring the output of the address bus for the instruction code fetch. + If there are conditional branch instructions, even in case branching does not occur, the address of the branch + destination is prefetched (only one time), so that further monitoring of the program is difficult. + The V30MZ has 8 prefetch queues (16 bytes). + + There are a few other differences between V30MZ and V30 cpu (unsupported opcodes , different flag handling after mul/div). + + Timing: + + Hblank : 256 CPU cycles + Vblank : 159 Hblank = 159*256/3072000 = 75.47Hz + + +3. MEMORY + + 20 bit addressing space = 1 Megabyte. Memory is splitted into 64KB blocks (segments/banks). + + Segments: + + 0 - RAM - 16 KB (WS) / 64 KB (WSC) internal RAM (see below) + + 1 - SRAM (cart) SRAM is BSI device BS62LV256TC - 256K(32Kx8) Static RAM - TSOP 0 - 70 c, 70 ns (http://www.bsi.com.tw/product/bs62lv256.pdf) + + 2 - ROM Bank (initial bank = last) + 3 - ROM Bank (lnitial bank = last) + + 4 - ROM Bank (initial bank = last - 11) + 5 - ROM Bank (initial bank = last - 10) + 6 - ROM Bank (initial bank = last - 9) + 7 - ROM Bank (initial bank = last - 8) + 8 - ROM Bank (initial bank = last - 7) + 9 - ROM Bank (initial bank = last - 6) + A - ROM Bank (initial bank = last - 5) + B - ROM Bank (initial bank = last - 4) + C - ROM Bank (initial bank = last - 3) + D - ROM Bank (initial bank = last - 2) + E - ROM Bank (initial bank = last - 1) + F - ROM Bank (initial bank = last) + + Segments 2-$F are switchable using ports : + + $C2 - Segment 2 (value written to port is ROM Bank number ($FF means last ROM bank (last 64 kbytes of ROM file) , $FE = last - 1 .. etc) + $C3 - Segment 3 (same as above) + $C0 - Segments 4-$F - bits 0,1,2 and 3 of port $C0 are bits 4,5,6 and 7 of ROM bank number in segments 4-$F . Bits 0-3 + are taken form segment number ( for example , IO[$C0]=$4E -> segment 9 contains ROM bank $E9). + + RAM Map : + + $0000 - $1FFF WS/WSC + $2000 - $3FFF 4 Col Tiles WS/WSC + ------------- + $4000 - $7FFF 16 Col Tiles Bank 0 WSC only + $8000 - $BFFF 16 Col Tiles Bank 1 WSC only + $C000 - $FDFF WSC only + $FE00 - $FFFF Palettes (WSC) WSC only + + Some games required initialized (?) part of RAM, for example: + + $75AC = $41 = "A" + $75AD = $5F = "_" + $75AE = $43 = "C" + $75AF = $31 = "1" + $75B0 = $6E = "n" + $75B1 = $5F = "_" + $75B2 = $63 = "c" + $75B3 = $31 = "1" + +4. VIDEO + + Screen size - 224 x 144 pixels (28 x 18 tiles) + Tile size - 8 x 8 dots , 16 bytes/tile (4 col modes) or 32 bytes/tile (16 col modes) + Map size - 256 x 256 pixels (32 x 32 tiles) + Layers - Two layers - Background and Foreground (top layer) + Maps locations - Selectable using port $07 + Tiles locations - Fixed, two banks - one at $4000 , second at $8000 + Map format - Each position in the map is defined by one word: + bits 0 - 8 - Tile number (0-511) + bits 9 - 12 - Palette number (0-15) + bit 13 - WS = unused / WSC = tile bank + bit 14 - Horizontal flip + bit 15 - Vertical flip + Tile formats - Depends on video mode (port $60) + Sprites - Max 128 sprites , limited to max 32 on scanline + sprite format: + byte 0,1 - bits + 0 - 8 - Tile number (0-511) + 9 - 11 - Palette number (0-7) + 8 -> (8-15) + 12 - Sprite window clipping on/off + 13 - Priority with respect to the layers + 0 - appear between the 2 background and foreground layers + 1 - appear on top of both layers + 14 - Horizontal flip + 15 - Vertical flip + byte 2 - Y position on the screen + byte 3 - X position on the screen + + Sprite table is buffered durning frame display. + Probably up to scanline 140 (1238-144?) + + Colors - Wonderswan (Mono) is capable of showing 16 shades of gray(only 8 can be selected at any one time) + These 8 shades form a pool from which the palette definition can select shades. There are 16 palettes. + All 16 palettes are used by BG and FG layers , the last 8 are used also by sprites. + Which 8 colors are used for palette generation is defined by ports 1C and 1E- port 1C + defines palette colors 0 - 3, port 1E defines 4 - 7. Each palette selection is 4 bits in + size: + 1C : 11110000 + 1D : 33332222 + 1E : 55554444 + 1F : 77776666 + + (where color 15 is the darkest one) + + Ports 20 - 3E are used to define the palettes themselves. + 20 : x111x000 - palette #0 + 21 : x333x222 + + In color video modes each color is defined using one word, + where bits: + 0 - 3 Blue + 4 - 7 Green + 8 - 11 Red + 12 - 14 unused + Color palettes are stored in the RAM (segment 0) , at address $FE00 + + Scrolling - Each of layers can be scrolled horizontal or vertical using ports $10 - $13 + + Transparency - Wonderswan - if bit 3 on palette number is set - color 0 of that palette is transparent + Wonderswan color - color 0 of each palette is transparent + Windows - There are two windows - rectangular areas for disabling /enabling FG layer (FG window) or sprites(Sprite window) + +5. SOUND + + 4 Audio channels. + Each channel can play short samples ( 4 bit , 16 bytes ( 32 sampels = 2 samples in byte (bits 0-3 and 4-7)) + with selectable frequency = 3,072 *10e6 / ((2048 - N) x 32 ) Hz , where N = 11 bit value. + Location of that samples is unknown. + + Volume of each audio channle is controlled by writing two 4 bit values ( for left/right output + channel) into ports $88 - $8B. Master volume is controlled by port $91 + (2 bit value = first 'used' bit in master volume output (11 bit wide) , D/A converter can + read only 8 bits , starting from bit set in port $91 , for example if first 'used' bit + is set to 2 , D/A using bits 2,3,4,5,6,7,8,9 for audio output) + + Additional (selectable) functions : + - channel 2 - voice - can play 8 bit samples writing frequently data to ch2 volume I/O port + - channel 3 - sweep - two parameters: + - step = 2.667 x (N + 1) ms , where N = 5 bit value + - value - signed byte (-128 - 127) + - channel 4 - noise - 7 selectable noise generators (probably I/O port $8E) + + For detailed info please check ports $80 - $91 in section I/O Ports. + + There's also Audio DMA (please chec ports $4a - $52). + Transfer rate is 12KHz (HBlank). + I/O ports $4A-$4B and $4E-$4F are autupdated durning data transfer . + +6. ROM HEADER + + Header taking last 10 bytes of each ROM file. + Bytes : + 0 - Developer ID + 1 - Minimum support system + 00 - WS Mono + 01 - WS Color + 2 - Cart ID number for developer defined at byte 0 + 3 - ?? + 4 - ROM Size + 01 - ? + 02 - 4Mbit + 03 - 8Mbit + 04 - 16Mbit + 05 - ? + 06 - 32Mbit + 07 - ? + 08 - 64Mbit + 09 - 128Mbit + 5 - SRAM/EEPROM Size + 00 - 0k + 01 - 64k SRAM + 02 - 256k SRAM + 03 - 1M SRAM (Taikyoku Igo Heisei Kiin) + 04 - 2M SRAM (WonderWitch) + 10 - 1k EEPROM + 20 - 16k EEPROM + 50 - 8k EEPROM + 6 - Additional capabilities(?) + - bit 0 - 1 - vertical position , 1 - horizontal position + - bit 2 - always 1 + + 7 - 1 - RTC (Real Time Clock) + 8,9 - Checksum = sum of all ROM bytes except two last ones ( where checksum is stored) + +7. INTERRUPTS + The Wonderswan CPU recognizes 7 interrupts from the hardware, these are: + 7 - HBlank Timer + 6 - VBlank + 5 - VBlank Timer + 4 - Drawing line detection + 3 - Serial Recieve + 2 - RTC Alarm (cartridge) + 1 - Key press + 0 - Serial Send + + Whether the CPU should indeed take action when one of these interrupts come in + is determined by port B2. The above mentioned interrupts correspond with the bit + numbers of port B2. When an interrupt occurs the corresponding bit of port B6 gets + set to 1 and, if enabled, an interrupt to the CPU is generated. This bit of port B6 + will have to be cleared through code when the interrupt has been handled. + + Example: + The Wonderswan is set to react to VBlank begin interrupts. Then bit 7 of B6 is set high + and keeps the interrupt line high until the CPU is able to take action upon this interrupt. + A typical VBlank interrupt routine is as follows: + + + out B6,40 + + iret + + The mentioned interrupts do not correspond with the same interrupt numbers for the vectors + in the vector table. The base for the actual interrupt numbers is set through port B0. If B0 + is set to 20h then a VBlank begin interrupt routine must be set at vector 26h. (Base is 20h + and VBlank begin interrupt is 6) + +8. CONTROLS - It's easy to check buttons status reading/writing port $B5(see below). + There's required some delay between writing and reading port $B5 ( few NOP-s) + +9. Internal EEPROM Communication(?) and 'owner' info structure + I/O Ports in range 0xBA -0xBE seems to be used for serial reading of internal + WS EEPROM (for example - 'owner' info). + + 0xBA (Word) - Data + 0xBC (Word) - Address (calculated probably Modulo EEPROM size (unknown)) + 0xBE (Byte) - Communication (?) + bit 4 set before reading data + bit 1 set by hardware , when data is ready to read + + Example : + + mov ax, $1B9 + out $BC, ax + mov al, $10 + out $BE, al + xor dx, dx + miniloop: + inc dx + cmp dl, 32 + jnc bad_data + in al, $BE + and al, 1 + jz miniloop + in ax, $BA ; Month and Day of birth + + + 'Owner' info structure : + + - Name - 16 bytes ( 0 = Space, 1 = '0' ... 0xA = '9', 0xB = 'A'... ) + - Year of birth - 2 bytes (BCD) + - Month of birth - 1 byte (BCD) + - Day of birth - 1 byte (BCD) + - Sex - 1 byte (1 - male , 2 - female) + - Blood - 1 byte (1 - A, 2 - B, 3 - 0, 4 - AB) + + + Struct size - 22 bytes = 11 reads, + Address range = 0x1B0 - 0x1BA + +10. I/O PORTS (port number /initial value / description) + +- $00 - $00 - Display control + bit 0 - background layer on/off + bit 1 - foreground layer on/off + bit 2 - sprites on/off + bit 3 - sprite window on/off (window coords defined in ports $0C - $0F) + bit 4,5 - fg win inside on/off (window coords defined in ports $08 - $0B) + Meaning of bits 4 and 5 : + 5 4 + --- + 0 0 FG layer is displayed inside and outside FG window area + 0 1 ?? + 1 0 FG layer is displayed only inside window + 1 1 FG layer is displayed outside window + - $01 - $00 - Determines the background color + bit 0-3 - background color + bit 4-7 - background palette (WSC only) + - $02 - ??? - Current Line (0 - 158) (159 ???) + - $03 - $BB - Line compare (for drawning line detection interrupt) + - $04 - $00 - Determines the base address for the sprite table. + To get the address of the table, shift this value left 9 times + and clear MSB. (bits 0..5 are effective to determines the base, + bits 6,7 are unknown) + 0 0xxxxxx0 00000000 + (Sprite Attribute Table Base can move from $00000-$07E00 with 512 bytes step) + - $05 - $00 - Determines the number of the sprite to start drawing with + - $06 - $00 - Determines the number of the sprite to stop drawing. + - $07 - $26 - Determines the location of the foreground and background screens in RAM. + Format: + bits 7-0 : ?fff?bbb + bit 7 - Unknown + bits 6-4 - Determines foreground location (address is 00fff000 00000000) + bit 3-? - Unknown + bits 2-0 - Determines background location (address is 00bbb000 00000000) + Back Ground Tile Map Base can move from $00000-$03800 (2048 bytes step) + - $08 - $FE - x0 of FG window (x0,y0) = top left corner, (x1,y1) = bottom right corner + - $09 - $DE - y0 of FG window + - $0A - $F9 - x1 of FG window + - $0B - $FB - y1 of FG window + - $0C - $DB - x0 of SPR window + - $0D - $D7 - y0 of SPR window + - $0E - $7F - x1 of SPR window + - $0F - $F5 - y1 of SPR window + - $10 - $00 - Background layer X scroll register + - $11 - $00 - Background layer Y scroll register + - $12 - $00 - Foreground layer X scroll register + - $13 - $00 - Foreground layer Y scroll register + - $14 - $01 - LCD Control (???) + bit 0 - 1 - LCD on + 0 - LCD off + - $15 - $00 - LCD Icons + bit 0 - LCD Sleep + bit 1 - Vertical Position + bit 2 - Horizontal Position + bit 3 - Dot 1 + bit 4 - Dot 2 + bit 5 - Dot 3 + bit 6 - Not Used ? + bit 7 - Not Used ? + - $16 - $9E - ??? + - $17 - $9B - ??? + - $18 - $00 - ??? + - $19 - $00 - ??? + - $1A - $00 - ??? + - $1B - $00 - ??? + - $1C - $99 - PALCOL10 + - $1D - $FD - PALCOL32 + - $1E - $B7 - PALCOL54 + - $1F - $DF - PALCOL76 + - $20 - $30 - PAL00 + - $21 - $57 - PAL01 + - $22 - $75 - PAL10 + - $23 - $76 - PAL11 + - $24 - $15 - PAL20 + - $25 - $73 - PAL21 + - $26 - $77 - PAL30 + - $27 - $77 - PAL31 + - $28 - $20 - PAL40 + - $29 - $75 - PAL41 + - $2A - $50 - PAL50 + - $2B - $36 - PAL51 + - $2C - $70 - PAL60 + - $2D - $67 - PAL61 + - $2E - $50 - PAL70 + - $2F - $77 - PAL70 + - $30 - $57 - PAL00 + - $31 - $54 - PAL01 + - $32 - $75 - PAL10 + - $33 - $77 - PAL11 + - $34 - $75 - PAL20 + - $35 - $17 - PAL21 + - $36 - $37 - PAL30 + - $37 - $73 - PAL31 + - $38 - $50 - PAL40 + - $39 - $57 - PAL41 + - $3A - $60 - PAL50 + - $3B - $77 - PAL51 + - $3C - $70 - PAL60 + - $3D - $77 - PAL61 + - $3E - $10 - PAL70 + - $3F - $73 - PAL70 + - $40 - $00 - DMA (?) copy source address + - $41 - $00 - ^^^ + - $42 - $00 - copy source bank + - $43 - $00 - copy destination bank + - $44 - $00 - copy destination address + - $45 - $00 - ^^^ + - $46 - $00 - size of copied data (in bytes) + - $47 - $00 - ^^^ + - $48 - $00 - bit 7 = 1 -> copy start + (bit 7=0 when data transfer is finished) + DMA(?) isn't immediate and not stopping + the main cpu operations (like gbc GDMA) + ports $40-$48 are updated durning copy process + - $49 - $00 - ??? + + - $4A - $00 - sound DMA source address + - $4B - $00 - ^^^ + - $4C - $00 - DMA source memory segment bank + - $4D - $00 - ??? + - $4E - $00 - DMA transfer size (in bytes) + - $4F - $00 - ^^^ + - $50 - $00 - ??? + - $51 - $00 - ??? + - $52 - $00 - bit 7 = 1 -> DMA start + - $53 - $00 - ??? + - $54 - $00 - ??? + - $55 - $00 - ??? + - $56 - $00 - ??? + - $57 - $00 - ??? + - $58 - $00 - ??? + - $59 - $00 - ??? + - $5A - $00 - ??? + - $5B - $00 - ??? + - $5C - $00 - ??? + - $5D - $00 - ??? + - $5E - $00 - ??? + - $5F - $00 - ??? + - $60 - $0A - video mode + Meaning of bits 5-7: + 765 + --- + 111 16 col/tile 'packed' mode - tiles like in Genesis, 16 col/tile + 110 16 col/tile 'layered' mode - tiles like in GameGear, 16 col/tile + 010 4 col/tile - the same as mono (below) but using color palettes, 4 cols/tile, one tile = 16 bytes, WSC only + 000 4 col/tile mono - tiles like in GameBoy, + [bit 7 = 16/4 color/tile , bit 6 - color/mono mode, bit 5 - 'packed' mode on/off] + - $61 - $00 - ??? + - $62 - $00 - ??? + - $63 - $00 - ??? + - $64 - $00 - ??? + - $65 - $00 - ??? + - $66 - $00 - ??? + - $67 - $00 - ??? + - $68 - $00 - ??? + - $69 - $00 - ??? + - $6A - $00 - ??? + - $6B - $0F - ??? + - $6C - $00 - ??? + - $6D - $00 - ??? + - $6E - $00 - ??? + - $6F - $00 - ??? + - $70 - $00 - ??? + - $71 - $00 - ??? + - $72 - $00 - ??? + - $73 - $00 - ??? + - $74 - $00 - ??? + - $75 - $00 - ??? + - $76 - $00 - ??? + - $77 - $00 - ??? + - $78 - $00 - ??? + - $79 - $00 - ??? + - $7A - $00 - ??? + - $7B - $00 - ??? + - $7C - $00 - ??? + - $7D - $00 - ??? + - $7E - $00 - ??? + - $7F - $00 - ??? + - $80 - $00 - Audio 1 Freq + - $81 - $00 - ^^^ + - $82 - $00 - Audio 2 Freq + - $83 - $00 - ^^^ + - $84 - $00 - Audio 3 Freq + - $85 - $00 - ^^^ + - $86 - $00 - Audio 4 Freq + - $87 - $00 - ^^^ + - $88 - $00 - Audio 1 volume + - $89 - $00 - Audio 2 volume + - $8A - $00 - Audio 3 volume + - $8B - $00 - Audio 4 volume + - $8C - $00 - ?? Sweep value + - $8D - $1F - ?? Sweep step + - $8E - $00 - Noise control + Bits : + 0 - Noise generator type + 1 - ^^^ + 2 - ^^^ + 3 - Reset + 4 - Enable + 5 - ??? + 6 - ??? + 7 - ??? + - $8F - $00 - Sample location + To get the address of samples, shift this value left 6 times. + 0 00xxxxxx xx000000 + - $90 - $00 - Audio control + Bits: + 0 - Audio 1 on/off + 1 - Audio 2 on/off + 2 - Audio 3 on/off + 3 - Audio 4 on/off + 4 - ??? + 5 - Audio 2 Voice + 6 - Audio 3 Sweep + 7 - Audio 4 Noise + - $91 - $00 - Audio Output + Bits : + 0 - Mono + 1 - Output Volume + 2 - ^^^ + 3 - External Stereo + 4 - ??? + 5 - ??? + 6 - ??? + 7 - External Speaker (set by hardware) + - $92 - $00 - Noise Counter Shift Register (15 bits) + - $93 - $00 - ^^^ + - $94 - $00 - Volume (4 bit) + - $95 - $00 - ??? + - $96 - $00 - ??? + - $97 - $00 - ??? + - $98 - $00 - ??? + - $99 - $00 - ??? + - $9A - $00 - ??? + - $9B - $00 - ??? + - $9C - $00 - ??? + - $9D - $00 - ??? + - $9E - $03 - ??? + - $9F - $00 - ??? + - $A0 - $87 - Hardware type + bit 1 - 1 - color + 0 - mono + - $A1 - $00 - ??? + - $A2 - $0C - Timer Control + bit 0 - Hblank Timer on/off + bit 1 - Hblank Timer Mode + 0 - One Shot + 1 - Auto Preset + bit 2 - Vblank Timer(1/75s) on/off + bit 3 - Vblank Timer Mode + 0 - One Shot + 1 - Auto Preset + - $A3 - $00 - ??? + - $A4 - $00 - Hblank Timer 'frequency' + 0 = no HBLANK Interrupt + n = HBLANK Interrupt every n lines (???) + - $A5 - $00 - ^^^ + - $A6 - $4F - Vblank Timer 'frequency' + - $A7 - $FF - ^^^ + - $A8 - $00 - Hblank Counter - 1/12000s + - $A9 - $00 - Hblank Counter - 1/(12000>>8)s + - $AA - $00 - Vblank Counter - 1/75s + - $AB - $00 - Vblank Counter - 1/(75>>8)s + - $AC - $00 - ??? + - $AD - $00 - ??? + - $AE - $00 - ??? + - $AF - $00 - ??? + - $B0 - $00 - Interrupt Base + - $B1 - $DB - Communication byte + - $B2 - $00 - Interrupt enable + bit 7 - HBlank Timer + bit 6 - VBlank begin + bit 5 - VBlank Timer + bit 4 - Drawing line detection + bit 3 - Serial receive + bit 2 - RTC Alarm + bit 1 - Key press + bit 0 - Serial transmit + - $B3 - $00 - Communication direction + bit 7 - Recieve data interrupt generation + bit 6 - Connection Speed + 0 - 9600 bps + 1 - 38400 bps + bit 5 - Send data interrupt generation + bit 4 - ??? + bit 3 - ??? + bit 2 - Send Complete + bit 1 - Error + bit 0 - Recieve Complete + + write $00-$7f = read $00 + write $80-$bf = read $84 + write $c0-$cf = read $c4 + - $B4 - $00 - ??? + - $B5 - $40 - Controls + bits 4-7 : read/write - Select line of inputs to read + 0001 - read vertical cursors + 0010 - read hozizontal cursors + 0100 - read buttons + bits 0-3 : read only - Read the current state of the input lines (positive logic) after having written 10h,20h, or 40h. + Meaning of the bits when reading cursors: + bit 0 - cursor up + bit 1 - cursor right + bit 2 - cursor down + bit 3 - cursor left + Meaning of the bits when reading buttons: + bit 0 - ??? + bit 1 - START + bit 2 - A + bit 3 - B + - $B6 - $00 - Interrupt Acknowledge + bit 7 - HBlank Timer + bit 6 - VBlank begin + bit 5 - VBlank Timer + bit 4 - Drawing line detection + bit 3 - Serial receive + bit 2 - RTC Alarm + bit 1 - Key press + bit 0 - Serial transmit + - $B7 - $00 - ??? + - $B8 - $00 - ??? + - $B9 - $00 - ??? + - $BA - $01 - Internal EEPROM (?) Data + - $BB - $00 - ^^^ + - $BC - $42 - Internal EEPROM (?) Address (calculated probably Modulo EEPROM (1kbit?) size (mirroring for read/write)) + - $BD - $00 - ^^^ + - $BE - $83 - Internal EEPROM (?) Command + bit 7 - Initialize ? + bit 6 - Protect ? + bit 5 - Write + bit 4 - Read + bit 3 - ??? + bit 2 - ??? + bit 1 - Write Complete (Read only) + bit 0 - Read Complete (Read only) + - $BF - $00 - ??? + - $C0 - $2F - ROM Bank Base Selector for segments 4-$F + - $C1 - $3F - SRAM Bank selector (???) + - $C2 - $FF - BNK2SLCT - ROM Bank selector for segment 2 + - $C3 - $FF - BNK3SLCT - ROM Bank selector for segment 3 + - $C4 - $00 - EEPROM Data + - $C5 - $00 - ^^^ + - $C6 - $00 - 1kbit EEPROM (16bit*64) : + - bits 0-5 - address + - bits 6-7 - command : + 0 - Extended Comand Address bits 4-5 + 0 - Write Disable + 1 - Write All + 2 - Erase All + 3 - Write Enable + 1 - Write + 2 - Read + 3 - Erase + - 16 kbit EEPROM (16bit*1024) - bits 0-7 - address (low) + - $C7 - $00 - 1kbit EEPROM (16bit*64) : + bit 0 - Start + - 16 kbit EEPROM (16bit*1024) : + - bits 0-1 - address (high) + - bits 2-3 - command : + 0 - Extended Comand Address bits 0-1 + 0 - Write Disable + 1 - Write All + 2 - Erase All + 3 - Write Enable + 1 - Write + 2 - Read + 3 - Erase + - bit 4 - Start + - $C8 - $D1 - EEPROM Command : + bit 7 - Initialize ??? + bit 6 - Protect ??? + bit 5 - Write + bit 4 - Read + bit 3 - ??? + bit 2 - ??? + bit 1 - Write Complete (Read only) + bit 0 - Read Complete (Read only) + - $C9 - $D1 - ??? + - $CA - $D1 - RTC Command + Write : + - $10 - Reset + - $12 - ??? Alarm ??? + - $13 - ??? + - $14 - Set Time + - $15 - Get Time + Read: + - bit 7 - Ack [HACK = 1] + - $CB - $D1 - RTC Data + Write : + Sometimes $40 , and wait for bit 7 = 1 + After Command ($CA): + - $14 - 7 writes (all BCD): + - Year ( + 2000) + - Month + - Day + - Day Of Week + - Hour + - Min + - Sec + Read + After Command ($CA) : + - $13 - bit 7 - Ack [HACK = 1] + - $15 - 7 reads (all BCD) + - Year ( + 2000) + - Month + - Day + - Day Of Week + - Hour + - Min + - Sec + - $CC - $D1 - ??? + - $CD - $D1 - ??? + - $CE - $D1 - ??? + - $CF - $D1 - ??? + - $D0 - $D1 - ??? + - $D1 - $D1 - ??? + - $D2 - $D1 - ??? + - $D3 - $D1 - ??? + - $D4 - $D1 - ??? + - $D5 - $D1 - ??? + - $D6 - $D1 - ??? + - $D7 - $D1 - ??? + - $D8 - $D1 - ??? + - $D9 - $D1 - ??? + - $DA - $D1 - ??? + - $DB - $D1 - ??? + - $DC - $D1 - ??? + - $DD - $D1 - ??? + - $DE - $D1 - ??? + - $DF - $D1 - ??? + - $E0 - $D1 - ??? + - $E1 - $D1 - ??? + - $E2 - $D1 - ??? + - $E3 - $D1 - ??? + - $E4 - $D1 - ??? + - $E5 - $D1 - ??? + - $E6 - $D1 - ??? + - $E7 - $D1 - ??? + - $E8 - $D1 - ??? + - $E9 - $D1 - ??? + - $EA - $D1 - ??? + - $EB - $D1 - ??? + - $EC - $D1 - ??? + - $ED - $D1 - ??? + - $EE - $D1 - ??? + - $EF - $D1 - ??? + - $F0 - $D1 - ??? + - $F1 - $D1 - ??? + - $F2 - $D1 - ??? + - $F3 - $D1 - ??? + - $F4 - $D1 - ??? + - $F5 - $D1 - ??? + - $F6 - $D1 - ??? + - $F7 - $D1 - ??? + - $F8 - $D1 - ??? + - $F9 - $D1 - ??? + - $FA - $D1 - ??? + - $FB - $D1 - ??? + - $FC - $D1 - ??? + - $FD - $D1 - ??? + - $FE - $D1 - ??? + - $FF - $D1 - ??? diff --git a/libmednahawk/src/wswan/wswan.h b/libmednahawk/src/wswan/wswan.h new file mode 100644 index 0000000000..79f727ce51 --- /dev/null +++ b/libmednahawk/src/wswan/wswan.h @@ -0,0 +1,34 @@ +#ifndef __WSWAN_H +#define __WSWAN_H + +#include "../mednafen.h" +#include "../state.h" +#include "../general.h" + +#include "interrupt.h" + +namespace MDFN_IEN_WSWAN +{ + +#define mBCD(value) (((value)/10)<<4)|((value)%10) + +extern uint32 rom_size; +extern int wsc; + +enum +{ + WSWAN_SEX_MALE = 1, + WSWAN_SEX_FEMALE = 2 +}; + +enum +{ + WSWAN_BLOOD_A = 1, + WSWAN_BLOOD_B = 2, + WSWAN_BLOOD_O = 3, + WSWAN_BLOOD_AB = 4 +}; + +} + +#endif diff --git a/libmednahawk/zlib123/README b/libmednahawk/zlib123/README new file mode 100644 index 0000000000..80f71ae856 --- /dev/null +++ b/libmednahawk/zlib123/README @@ -0,0 +1,125 @@ +ZLIB DATA COMPRESSION LIBRARY + +zlib 1.2.3 is a general purpose data compression library. All the code is +thread safe. The data format used by the zlib library is described by RFCs +(Request for Comments) 1950 to 1952 in the files +http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) +and rfc1952.txt (gzip format). These documents are also available in other +formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html + +All functions of the compression library are documented in the file zlib.h +(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example +of the library is given in the file example.c which also tests that the library +is working correctly. Another example is given in the file minigzip.c. The +compression library itself is composed of all source files except example.c and +minigzip.c. + +To compile all files and run the test program, follow the instructions given at +the top of Makefile. In short "make test; make install" should work for most +machines. For Unix: "./configure; make test; make install". For MSDOS, use one +of the special makefiles such as Makefile.msc. For VMS, use make_vms.com. + +Questions about zlib should be sent to , or to Gilles Vollant + for the Windows DLL version. The zlib home page is +http://www.zlib.org or http://www.gzip.org/zlib/ Before reporting a problem, +please check this site to verify that you have the latest version of zlib; +otherwise get the latest version and check whether the problem still exists or +not. + +PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html before asking +for help. + +Mark Nelson wrote an article about zlib for the Jan. 1997 +issue of Dr. Dobb's Journal; a copy of the article is available in +http://dogma.net/markn/articles/zlibtool/zlibtool.htm + +The changes made in version 1.2.3 are documented in the file ChangeLog. + +Unsupported third party contributions are provided in directory "contrib". + +A Java implementation of zlib is available in the Java Development Kit +http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/package-summary.html +See the zlib home page http://www.zlib.org for details. + +A Perl interface to zlib written by Paul Marquess is in the +CPAN (Comprehensive Perl Archive Network) sites +http://www.cpan.org/modules/by-module/Compress/ + +A Python interface to zlib written by A.M. Kuchling is +available in Python 1.5 and later versions, see +http://www.python.org/doc/lib/module-zlib.html + +A zlib binding for TCL written by Andreas Kupries is +availlable at http://www.oche.de/~akupries/soft/trf/trf_zip.html + +An experimental package to read and write files in .zip format, written on top +of zlib by Gilles Vollant , is available in the +contrib/minizip directory of zlib. + + +Notes for some targets: + +- For Windows DLL versions, please see win32/DLL_FAQ.txt + +- For 64-bit Irix, deflate.c must be compiled without any optimization. With + -O, one libpng test fails. The test works in 32 bit mode (with the -n32 + compiler flag). The compiler bug has been reported to SGI. + +- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works + when compiled with cc. + +- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is + necessary to get gzprintf working correctly. This is done by configure. + +- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with + other compilers. Use "make test" to check your compiler. + +- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers. + +- For PalmOs, see http://palmzlib.sourceforge.net/ + +- When building a shared, i.e. dynamic library on Mac OS X, the library must be + installed before testing (do "make install" before "make test"), since the + library location is specified in the library. + + +Acknowledgments: + + The deflate format used by zlib was defined by Phil Katz. The deflate + and zlib specifications were written by L. Peter Deutsch. Thanks to all the + people who reported problems and suggested various improvements in zlib; + they are too numerous to cite here. + +Copyright notice: + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +If you use the zlib library in a product, we would appreciate *not* +receiving lengthy legal documents to sign. The sources are provided +for free but without warranty of any kind. The library has been +entirely written by Jean-loup Gailly and Mark Adler; it does not +include third-party code. + +If you redistribute modified sources, we would appreciate that you include +in the file ChangeLog history information documenting your changes. Please +read the FAQ for more information on the distribution of modified source +versions. diff --git a/libmednahawk/zlib123/zconf.h b/libmednahawk/zlib123/zconf.h new file mode 100644 index 0000000000..ff5e7481b3 --- /dev/null +++ b/libmednahawk/zlib123/zconf.h @@ -0,0 +1,332 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id: zconf.h,v 1.1 2008-08-03 18:36:12 mtabachenko Exp $ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + */ +#ifdef Z_PREFIX +# define deflateInit_ z_deflateInit_ +# define deflate z_deflate +# define deflateEnd z_deflateEnd +# define inflateInit_ z_inflateInit_ +# define inflate z_inflate +# define inflateEnd z_inflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateSetDictionary z_deflateSetDictionary +# define deflateCopy z_deflateCopy +# define deflateReset z_deflateReset +# define deflateParams z_deflateParams +# define deflateBound z_deflateBound +# define deflatePrime z_deflatePrime +# define inflateInit2_ z_inflateInit2_ +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateCopy z_inflateCopy +# define inflateReset z_inflateReset +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# define uncompress z_uncompress +# define adler32 z_adler32 +# define crc32 z_crc32 +# define get_crc_table z_get_crc_table +# define zError z_zError + +# define alloc_func z_alloc_func +# define free_func z_free_func +# define in_func z_in_func +# define out_func z_out_func +# define Byte z_Byte +# define uInt z_uInt +# define uLong z_uLong +# define Bytef z_Bytef +# define charf z_charf +# define intf z_intf +# define uIntf z_uIntf +# define uLongf z_uLongf +# define voidpf z_voidpf +# define voidp z_voidp +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT __cdecl +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ +# include /* for off_t */ +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# define z_off_t off_t +#endif +#ifndef SEEK_SET +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif +#ifndef z_off_t +# define z_off_t long +#endif + +#if defined(__OS400__) +# define NO_vsnprintf +#endif + +#if defined(__MVS__) +# define NO_vsnprintf +# ifdef FAR +# undef FAR +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) +# pragma map(deflateInit_,"DEIN") +# pragma map(deflateInit2_,"DEIN2") +# pragma map(deflateEnd,"DEEND") +# pragma map(deflateBound,"DEBND") +# pragma map(inflateInit_,"ININ") +# pragma map(inflateInit2_,"ININ2") +# pragma map(inflateEnd,"INEND") +# pragma map(inflateSync,"INSY") +# pragma map(inflateSetDictionary,"INSEDI") +# pragma map(compressBound,"CMBND") +# pragma map(inflate_table,"INTABL") +# pragma map(inflate_fast,"INFA") +# pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/libmednahawk/zlib123/zlib-1.2.3_from_tastools b/libmednahawk/zlib123/zlib-1.2.3_from_tastools new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libmednahawk/zlib123/zlib-vc8-Win32.lib b/libmednahawk/zlib123/zlib-vc8-Win32.lib new file mode 100644 index 0000000000000000000000000000000000000000..4d86741d0f609b56b179d1cb5f5f0fdbd8646989 GIT binary patch literal 103944 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 to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect + the compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any + pending output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, + msg may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the exact + value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller. msg is set to null if there is no error + message. inflateInit does not perform any decompression apart from reading + the zlib header if present: this will be done by inflate(). (So next_in and + avail_in may be modified, but next_out and avail_out are unchanged.) +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing + will resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there + is no more input data or no more space in the output buffer (see below + about the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming + more output, and updating the next_* and avail_* values accordingly. + The application can consume the uncompressed output when it wants, for + example when the output buffer is full (avail_out == 0), or after each + call of inflate(). If inflate returns Z_OK and with zero avail_out, it + must be called again after making room in the output buffer because there + might be more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, + Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() stop + if and when it gets to the next deflate block boundary. When decoding the + zlib or gzip format, this will cause inflate() to return immediately after + the header and before the first block. When doing a raw inflate, inflate() + will go ahead and process the first block, and will return when it gets to + the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 + if inflate() is currently decoding the last block in the deflate stream, + plus 128 if inflate() returned immediately after decoding an end-of-block + code or decoding the complete header up to just before the first byte of the + deflate stream. The end-of-block will not be indicated until all of the + uncompressed data from that block has been written to strm->next_out. The + number of unused bits may in general be greater than seven, except when + bit 7 of data_type is set, in which case the number of unused bits will be + less than eight. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step + (a single call of inflate), the parameter flush should be set to + Z_FINISH. In this case all pending input is processed and all pending + output is flushed; avail_out must be large enough to hold all the + uncompressed data. (The size of the uncompressed data may have been saved + by the compressor for this purpose.) The next operation on this stream must + be inflateEnd to deallocate the decompression state. The use of Z_FINISH + is never required, but can be used to inform inflate that a faster approach + may be used for the single inflate() call. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the only effect of the flush parameter in this implementation + is on the return value of inflate(), as noted below, or when it returns early + because Z_BLOCK is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the adler32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the adler32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() will decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically. Any information + contained in the gzip header is not retained, so applications that need that + information should instead use raw inflate, see inflateInit2() below, or + inflateBack() and perform their own processing of the gzip header and + trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may then + call inflateSync() to look for a good compression block if a partial recovery + of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any + pending output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by + the caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), + no header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but + is slow and reduces compression ratio; memLevel=9 uses maximum memory + for optimal speed. The default value is 8. See zconf.h for total memory + usage as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as + Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy + parameter only affects the compression ratio but not the correctness of the + compressed output even if it is not set appropriately. Z_FIXED prevents the + use of dynamic Huffman codes, allowing for a simpler decoder for special + applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid + method). msg is set to null if there is no error message. deflateInit2 does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. This function must be called + immediately after deflateInit, deflateInit2 or deflateReset, before any + call of deflate. The compressor and decompressor must use exactly the same + dictionary (see inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size in + deflate or deflate2. Thus the strings most likely to be useful should be + put at the end of the dictionary, not at the front. In addition, the + current implementation of deflate will use at most the window size minus + 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (such as NULL dictionary) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if the compression method is bsort). deflateSetDictionary does not + perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and + can consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. + The stream will keep the same compression level and any other attributes + that may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different + strategy. If the compression level is changed, the input available so far + is compressed with the old level (and may be flushed); the new level will + take effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to + be compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR + if strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() + or deflateInit2(). This would be used to allocate an output buffer + for deflation in a single pass, and so would be called before deflate(). +*/ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the + bits leftover from a previous deflate stream when appending to it. As such, + this function can only be used for raw deflate, and must be used before the + first deflate() call after a deflateInit2() or deflateReset(). bits must be + less than or equal to 16, and that many of the least significant bits of + value will be inserted in the output. + + deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is + a crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg + is set to null if there is no error message. inflateInit2 does not perform + any decompression apart from reading the zlib header if present: this will + be done by inflate(). (So next_in and avail_in may be modified, but next_out + and avail_out are unchanged.) +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called + immediately after inflateInit2() or inflateReset() and before any call of + inflate() to set the dictionary. The application must insure that the + dictionary that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (such as NULL dictionary) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a full flush point (see above the + description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR + if no more input was provided, Z_DATA_ERROR if no flush point has been found, + or Z_STREAM_ERROR if the stream structure was inconsistent. In the success + case, the application may save the current current value of total_in which + indicates where valid compressed data was found. In the error case, the + application may repeatedly call inflateSync, providing more input each time, + until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. + The stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being NULL). +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK can be used to + force inflate() to return immediately after header processing is complete + and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When + any of extra, name, or comment are not Z_NULL and the respective field is + not present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the paramaters are invalid, Z_MEM_ERROR if the internal state could not + be allocated, or Z_VERSION_ERROR if the version of the library does not + match the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is more efficient than inflate() for + file i/o applications in that it avoids copying between the output and the + sliding window by simply making the window itself the output buffer. This + function trusts the application to not change the output buffer passed by + the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free + the allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects + only the raw deflate stream to decompress. This is different from the + normal behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format + error in the deflate stream (in which case strm->msg is set to indicate the + nature of the error), or Z_STREAM_ERROR if the stream was not properly + initialized. In the case of Z_BUF_ERROR, an input or output error can be + distinguished using strm->next_in which will be Z_NULL only if in() returned + an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to + out() returning non-zero. (in() will always be called before out(), so + strm->next_in is assured to be defined if out() returns non-zero.) Note + that inflateBack() cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + + + /* utility functions */ + +/* + The following utility functions are implemented on top of the + basic stream-oriented functions. To simplify the interface, some + default options are assumed (compression level and memory usage, + standard memory allocation functions). The source code of these + utility functions can easily be modified if you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be at least the value returned + by compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + This function can be used to compress a whole file at once if the + input file is mmap'ed. + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before + a compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be large enough to hold the + entire uncompressed data. (The size of the uncompressed data must have + been saved previously by the compressor and transmitted to the decompressor + by some mechanism outside the scope of this compression library.) + Upon exit, destLen is the actual size of the compressed buffer. + This function can be used to decompress a whole file at once if the + input file is mmap'ed. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. +*/ + + +typedef voidp gzFile; + +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); +/* + Opens a gzip (.gz) file for reading or writing. The mode parameter + is as in fopen ("rb" or "wb") but can also include a compression level + ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for + Huffman only compression as in "wb1h", or 'R' for run-length encoding + as in "wb1R". (See the description of deflateInit2 for more information + about the strategy parameter.) + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. + + gzopen returns NULL if the file could not be opened or if there was + insufficient memory to allocate the (de)compression state; errno + can be checked to distinguish the two cases (if errno is zero, the + zlib error is Z_MEM_ERROR). */ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen() associates a gzFile with the file descriptor fd. File + descriptors are obtained from calls like open, dup, creat, pipe or + fileno (in the file has been previously opened with fopen). + The mode parameter is as in gzopen. + The next call of gzclose on the returned gzFile will also close the + file descriptor fd, just like fclose(fdopen(fd), mode) closes the file + descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). + gzdopen returns NULL if there was insufficient memory to allocate + the (de)compression state. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. + If the input file was not in gzip format, gzread copies the given number + of bytes into the buffer. + gzread returns the number of uncompressed bytes actually read (0 for + end of file, -1 for error). */ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes actually written + (0 in case of error). +*/ + +ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the args to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written (0 in case of error). The number of + uncompressed bytes written is limited to 4095. The caller should assure that + this limit is not exceeded. If it is exceeded, then gzprintf() will return + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf() + because the secure snprintf() or vsnprintf() functions were not available. +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or + a newline character is read and transferred to buf, or an end-of-file + condition is encountered. The string is then terminated with a null + character. + gzgets returns buf, or Z_NULL in case of error. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. + gzputc returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte + or -1 in case of end of file or error. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read again later. + Only one character of push-back is allowed. gzungetc() returns the + character pushed, or -1 on failure. gzungetc() will fail if a + character has been pushed but not read yet, or if c is -1. The pushed + character will be discarded if the stream is repositioned with gzseek() + or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter + flush is as in the deflate() function. The return value is the zlib + error number (see function gzerror below). gzflush returns Z_OK if + the flush parameter is Z_FINISH and all output could be flushed. + gzflush should be called only when strictly necessary because it can + degrade compression. +*/ + +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); +/* + Sets the starting position for the next gzread or gzwrite on the + given compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); +/* + Returns the starting position for the next gzread or gzwrite on the + given compressed file. This position represents a number of bytes in the + uncompressed data stream. + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns 1 when EOF has previously been detected reading the given + input stream, otherwise zero. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns 1 if file is being read directly without decompression, otherwise + zero. +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file + and deallocates all the (de)compression state. The return value is the zlib + error number (see function gzerror below). +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the + given compressed file. errnum is set to zlib error number. If an + error occurred in the file system and not in the compression library, + errnum is set to Z_ERRNO and the application may consult errno + to get the exact error code. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the + compression library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is NULL, this function returns + the required initial value for the checksum. + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); +/* + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is NULL, this function returns the required initial + value for the for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + +/* + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, sizeof(z_stream)) + + +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; /* hack for buggy compilers */ +#endif + +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z)); +ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/libmednahawk/zlib123/zutil.h b/libmednahawk/zlib123/zutil.h new file mode 100644 index 0000000000..c0fb9c1f52 --- /dev/null +++ b/libmednahawk/zlib123/zutil.h @@ -0,0 +1,269 @@ +/* zutil.h -- internal interface and configuration of the compression library + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id: zutil.h,v 1.1 2008-08-03 18:36:13 mtabachenko Exp $ */ + +#ifndef ZUTIL_H +#define ZUTIL_H + +#define ZLIB_INTERNAL +#include "zlib.h" + +#ifdef STDC +# ifndef _WIN32_WCE +# include +# endif +# include +# include +#endif +#ifdef NO_ERRNO_H +# ifdef _WIN32_WCE + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. We rename it to + * avoid conflict with other libraries that use the same workaround. + */ +# define errno z_errno +# endif + extern int errno; +#else +# ifndef _WIN32_WCE +# include +# endif +#endif + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + +typedef unsigned char uch; +typedef uch FAR uchf; +typedef unsigned short ush; +typedef ush FAR ushf; +typedef unsigned long ulg; + +extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ +/* (size given to avoid silly warnings with Visual C++) */ + +#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] + +#define ERR_RETURN(strm,err) \ + return (strm->msg = (char*)ERR_MSG(err), (err)) +/* To be used only when the state is known to be valid */ + + /* common constants */ + +#ifndef DEF_WBITS +# define DEF_WBITS MAX_WBITS +#endif +/* default windowBits for decompression. MAX_WBITS is for compression only */ + +#if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +#else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +#endif +/* default memLevel */ + +#define STORED_BLOCK 0 +#define STATIC_TREES 1 +#define DYN_TREES 2 +/* The three kinds of block type */ + +#define MIN_MATCH 3 +#define MAX_MATCH 258 +/* The minimum and maximum match lengths */ + +#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ + + /* target dependencies */ + +#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) +# define OS_CODE 0x00 +# if defined(__TURBOC__) || defined(__BORLANDC__) +# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) + /* Allow compilation with ANSI keywords only enabled */ + void _Cdecl farfree( void *block ); + void *_Cdecl farmalloc( unsigned long nbytes ); +# else +# include +# endif +# else /* MSC or DJGPP */ +# include +# endif +#endif + +#ifdef AMIGA +# define OS_CODE 0x01 +#endif + +#if defined(VAXC) || defined(VMS) +# define OS_CODE 0x02 +# define F_OPEN(name, mode) \ + fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") +#endif + +#if defined(ATARI) || defined(atarist) +# define OS_CODE 0x05 +#endif + +#ifdef OS2 +# define OS_CODE 0x06 +# ifdef M_I86 + #include +# endif +#endif + +#if defined(MACOS) || defined(TARGET_OS_MAC) +# define OS_CODE 0x07 +# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os +# include /* for fdopen */ +# else +# ifndef fdopen +# define fdopen(fd,mode) NULL /* No fdopen() */ +# endif +# endif +#endif + +#ifdef TOPS20 +# define OS_CODE 0x0a +#endif + +#ifdef WIN32 +# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ +# define OS_CODE 0x0b +# endif +#endif + +#ifdef __50SERIES /* Prime/PRIMOS */ +# define OS_CODE 0x0f +#endif + +#if defined(_BEOS_) || defined(RISCOS) +# define fdopen(fd,mode) NULL /* No fdopen() */ +#endif + +#if (defined(_MSC_VER) && (_MSC_VER > 600)) +# if defined(_WIN32_WCE) +# define fdopen(fd,mode) NULL /* No fdopen() */ +# ifndef _PTRDIFF_T_DEFINED + typedef int ptrdiff_t; +# define _PTRDIFF_T_DEFINED +# endif +# else +# define fdopen(fd,type) _fdopen(fd,type) +# endif +#endif + + /* common defaults */ + +#ifndef OS_CODE +# define OS_CODE 0x03 /* assume Unix */ +#endif + +#ifndef F_OPEN +# define F_OPEN(name, mode) fopen((name), (mode)) +#endif + + /* functions */ + +#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif +#if defined(__CYGWIN__) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif +#ifndef HAVE_VSNPRINTF +# ifdef MSDOS + /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), + but for now we just assume it doesn't. */ +# define NO_vsnprintf +# endif +# ifdef __TURBOC__ +# define NO_vsnprintf +# endif +# ifdef WIN32 + /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ +# if !defined(vsnprintf) && !defined(NO_vsnprintf) +# define vsnprintf _vsnprintf +# endif +# endif +# ifdef __SASC +# define NO_vsnprintf +# endif +#endif +#ifdef VMS +# define NO_vsnprintf +#endif + +#if defined(pyr) +# define NO_MEMCPY +#endif +#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) + /* Use our own functions for small and medium model with MSC <= 5.0. + * You may have to use the same strategy for Borland C (untested). + * The __SC__ check is for Symantec. + */ +# define NO_MEMCPY +#endif +#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) +# define HAVE_MEMCPY +#endif +#ifdef HAVE_MEMCPY +# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ +# define zmemcpy _fmemcpy +# define zmemcmp _fmemcmp +# define zmemzero(dest, len) _fmemset(dest, 0, len) +# else +# define zmemcpy memcpy +# define zmemcmp memcmp +# define zmemzero(dest, len) memset(dest, 0, len) +# endif +#else + extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); + extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); + extern void zmemzero OF((Bytef* dest, uInt len)); +#endif + +/* Diagnostic functions */ +#ifdef DEBUG +# include + extern int z_verbose; + extern void z_error OF((char *m)); +# define Assert(cond,msg) {if(!(cond)) z_error(msg);} +# define Trace(x) {if (z_verbose>=0) fprintf x ;} +# define Tracev(x) {if (z_verbose>0) fprintf x ;} +# define Tracevv(x) {if (z_verbose>1) fprintf x ;} +# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} +# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} +#else +# define Assert(cond,msg) +# define Trace(x) +# define Tracev(x) +# define Tracevv(x) +# define Tracec(c,x) +# define Tracecv(c,x) +#endif + + +voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); +void zcfree OF((voidpf opaque, voidpf ptr)); + +#define ZALLOC(strm, items, size) \ + (*((strm)->zalloc))((strm)->opaque, (items), (size)) +#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) +#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} + +#endif /* ZUTIL_H */

    mq7W_vUXx_vwuNxz5bokQ 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�Bu@2q|5j*h!t9O}maCYJ3m?V!FaXw4E4T0~L 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 literal 0 HcmV?d00001 diff --git a/libmednahawk/dx/dsound.h b/libmednahawk/dx/dsound.h new file mode 100644 index 0000000000..c088b63a35 --- /dev/null +++ b/libmednahawk/dx/dsound.h @@ -0,0 +1,2358 @@ +/*==========================================================================; + * + * Copyright (c) Microsoft Corporation. All rights reserved. + * + * File: dsound.h + * Content: DirectSound include file + * + **************************************************************************/ + +#define COM_NO_WINDOWS_H +#include +#include + +#ifndef DIRECTSOUND_VERSION +#define DIRECTSOUND_VERSION 0x0900 /* Version 9.0 */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +#ifndef __DSOUND_INCLUDED__ +#define __DSOUND_INCLUDED__ + +/* Type definitions shared with Direct3D */ + +#ifndef DX_SHARED_DEFINES + +typedef float D3DVALUE, *LPD3DVALUE; + +#ifndef D3DCOLOR_DEFINED +typedef DWORD D3DCOLOR; +#define D3DCOLOR_DEFINED +#endif + +#ifndef LPD3DCOLOR_DEFINED +typedef DWORD *LPD3DCOLOR; +#define LPD3DCOLOR_DEFINED +#endif + +#ifndef D3DVECTOR_DEFINED +typedef struct _D3DVECTOR { + float x; + float y; + float z; +} D3DVECTOR; +#define D3DVECTOR_DEFINED +#endif + +#ifndef LPD3DVECTOR_DEFINED +typedef D3DVECTOR *LPD3DVECTOR; +#define LPD3DVECTOR_DEFINED +#endif + +#define DX_SHARED_DEFINES +#endif // DX_SHARED_DEFINES + +#define _FACDS 0x878 /* DirectSound's facility code */ +#define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) + +// DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000} +DEFINE_GUID(CLSID_DirectSound, 0x47d4d946, 0x62e8, 0x11cf, 0x93, 0xbc, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0); + +// DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B} +DEFINE_GUID(CLSID_DirectSound8, 0x3901cc3f, 0x84b5, 0x4fa4, 0xba, 0x35, 0xaa, 0x81, 0x72, 0xb8, 0xa0, 0x9b); + +// DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16} +DEFINE_GUID(CLSID_DirectSoundCapture, 0xb0210780, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +// DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} +DEFINE_GUID(CLSID_DirectSoundCapture8, 0xe4bcac13, 0x7f99, 0x4908, 0x9a, 0x8e, 0x74, 0xe3, 0xbf, 0x24, 0xb6, 0xe1); + +// DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D} +DEFINE_GUID(CLSID_DirectSoundFullDuplex, 0xfea4300c, 0x7959, 0x4147, 0xb2, 0x6a, 0x23, 0x77, 0xb9, 0xe7, 0xa9, 0x1d); + + +// DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultPlayback, 0xdef00000, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + +// DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultCapture, 0xdef00001, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + +// DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultVoicePlayback, 0xdef00002, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + +// DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03} +DEFINE_GUID(DSDEVID_DefaultVoiceCapture, 0xdef00003, 0x9c6d, 0x47ed, 0xaa, 0xf1, 0x4d, 0xda, 0x8f, 0x2b, 0x5c, 0x03); + + +// +// Forward declarations for interfaces. +// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined +// + +#ifdef __cplusplus +struct IDirectSound; +struct IDirectSoundBuffer; +struct IDirectSound3DListener; +struct IDirectSound3DBuffer; +struct IDirectSoundCapture; +struct IDirectSoundCaptureBuffer; +struct IDirectSoundNotify; +#endif // __cplusplus + + +// +// DirectSound 8.0 interfaces. +// + +#if DIRECTSOUND_VERSION >= 0x0800 + +#ifdef __cplusplus +struct IDirectSound8; +struct IDirectSoundBuffer8; +struct IDirectSoundCaptureBuffer8; +struct IDirectSoundFXGargle; +struct IDirectSoundFXChorus; +struct IDirectSoundFXFlanger; +struct IDirectSoundFXEcho; +struct IDirectSoundFXDistortion; +struct IDirectSoundFXCompressor; +struct IDirectSoundFXParamEq; +struct IDirectSoundFXWavesReverb; +struct IDirectSoundFXI3DL2Reverb; +struct IDirectSoundCaptureFXAec; +struct IDirectSoundCaptureFXNoiseSuppress; +struct IDirectSoundFullDuplex; +#endif // __cplusplus + +// IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the +// only DirectSound 7.0 interfaces with changed functionality in version 8.0. +// The other level 8 interfaces as equivalent to their level 7 counterparts: + +#define IDirectSoundCapture8 IDirectSoundCapture +#define IDirectSound3DListener8 IDirectSound3DListener +#define IDirectSound3DBuffer8 IDirectSound3DBuffer +#define IDirectSoundNotify8 IDirectSoundNotify +#define IDirectSoundFXGargle8 IDirectSoundFXGargle +#define IDirectSoundFXChorus8 IDirectSoundFXChorus +#define IDirectSoundFXFlanger8 IDirectSoundFXFlanger +#define IDirectSoundFXEcho8 IDirectSoundFXEcho +#define IDirectSoundFXDistortion8 IDirectSoundFXDistortion +#define IDirectSoundFXCompressor8 IDirectSoundFXCompressor +#define IDirectSoundFXParamEq8 IDirectSoundFXParamEq +#define IDirectSoundFXWavesReverb8 IDirectSoundFXWavesReverb +#define IDirectSoundFXI3DL2Reverb8 IDirectSoundFXI3DL2Reverb +#define IDirectSoundCaptureFXAec8 IDirectSoundCaptureFXAec +#define IDirectSoundCaptureFXNoiseSuppress8 IDirectSoundCaptureFXNoiseSuppress +#define IDirectSoundFullDuplex8 IDirectSoundFullDuplex + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +typedef struct IDirectSound *LPDIRECTSOUND; +typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER; +typedef struct IDirectSound3DListener *LPDIRECTSOUND3DLISTENER; +typedef struct IDirectSound3DBuffer *LPDIRECTSOUND3DBUFFER; +typedef struct IDirectSoundCapture *LPDIRECTSOUNDCAPTURE; +typedef struct IDirectSoundCaptureBuffer *LPDIRECTSOUNDCAPTUREBUFFER; +typedef struct IDirectSoundNotify *LPDIRECTSOUNDNOTIFY; + + +#if DIRECTSOUND_VERSION >= 0x0800 + +typedef struct IDirectSoundFXGargle *LPDIRECTSOUNDFXGARGLE; +typedef struct IDirectSoundFXChorus *LPDIRECTSOUNDFXCHORUS; +typedef struct IDirectSoundFXFlanger *LPDIRECTSOUNDFXFLANGER; +typedef struct IDirectSoundFXEcho *LPDIRECTSOUNDFXECHO; +typedef struct IDirectSoundFXDistortion *LPDIRECTSOUNDFXDISTORTION; +typedef struct IDirectSoundFXCompressor *LPDIRECTSOUNDFXCOMPRESSOR; +typedef struct IDirectSoundFXParamEq *LPDIRECTSOUNDFXPARAMEQ; +typedef struct IDirectSoundFXWavesReverb *LPDIRECTSOUNDFXWAVESREVERB; +typedef struct IDirectSoundFXI3DL2Reverb *LPDIRECTSOUNDFXI3DL2REVERB; +typedef struct IDirectSoundCaptureFXAec *LPDIRECTSOUNDCAPTUREFXAEC; +typedef struct IDirectSoundCaptureFXNoiseSuppress *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS; +typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; + +typedef struct IDirectSound8 *LPDIRECTSOUND8; +typedef struct IDirectSoundBuffer8 *LPDIRECTSOUNDBUFFER8; +typedef struct IDirectSound3DListener8 *LPDIRECTSOUND3DLISTENER8; +typedef struct IDirectSound3DBuffer8 *LPDIRECTSOUND3DBUFFER8; +typedef struct IDirectSoundCapture8 *LPDIRECTSOUNDCAPTURE8; +typedef struct IDirectSoundCaptureBuffer8 *LPDIRECTSOUNDCAPTUREBUFFER8; +typedef struct IDirectSoundNotify8 *LPDIRECTSOUNDNOTIFY8; +typedef struct IDirectSoundFXGargle8 *LPDIRECTSOUNDFXGARGLE8; +typedef struct IDirectSoundFXChorus8 *LPDIRECTSOUNDFXCHORUS8; +typedef struct IDirectSoundFXFlanger8 *LPDIRECTSOUNDFXFLANGER8; +typedef struct IDirectSoundFXEcho8 *LPDIRECTSOUNDFXECHO8; +typedef struct IDirectSoundFXDistortion8 *LPDIRECTSOUNDFXDISTORTION8; +typedef struct IDirectSoundFXCompressor8 *LPDIRECTSOUNDFXCOMPRESSOR8; +typedef struct IDirectSoundFXParamEq8 *LPDIRECTSOUNDFXPARAMEQ8; +typedef struct IDirectSoundFXWavesReverb8 *LPDIRECTSOUNDFXWAVESREVERB8; +typedef struct IDirectSoundFXI3DL2Reverb8 *LPDIRECTSOUNDFXI3DL2REVERB8; +typedef struct IDirectSoundCaptureFXAec8 *LPDIRECTSOUNDCAPTUREFXAEC8; +typedef struct IDirectSoundCaptureFXNoiseSuppress8 *LPDIRECTSOUNDCAPTUREFXNOISESUPPRESS8; +typedef struct IDirectSoundFullDuplex8 *LPDIRECTSOUNDFULLDUPLEX8; + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IID definitions for the unchanged DirectSound 8.0 interfaces +// + +#if DIRECTSOUND_VERSION >= 0x0800 + +#define IID_IDirectSoundCapture8 IID_IDirectSoundCapture +#define IID_IDirectSound3DListener8 IID_IDirectSound3DListener +#define IID_IDirectSound3DBuffer8 IID_IDirectSound3DBuffer +#define IID_IDirectSoundNotify8 IID_IDirectSoundNotify +#define IID_IDirectSoundFXGargle8 IID_IDirectSoundFXGargle +#define IID_IDirectSoundFXChorus8 IID_IDirectSoundFXChorus +#define IID_IDirectSoundFXFlanger8 IID_IDirectSoundFXFlanger +#define IID_IDirectSoundFXEcho8 IID_IDirectSoundFXEcho +#define IID_IDirectSoundFXDistortion8 IID_IDirectSoundFXDistortion +#define IID_IDirectSoundFXCompressor8 IID_IDirectSoundFXCompressor +#define IID_IDirectSoundFXParamEq8 IID_IDirectSoundFXParamEq +#define IID_IDirectSoundFXWavesReverb8 IID_IDirectSoundFXWavesReverb +#define IID_IDirectSoundFXI3DL2Reverb8 IID_IDirectSoundFXI3DL2Reverb +#define IID_IDirectSoundCaptureFXAec8 IID_IDirectSoundCaptureFXAec +#define IID_IDirectSoundCaptureFXNoiseSuppress8 IID_IDirectSoundCaptureFXNoiseSuppress +#define IID_IDirectSoundFullDuplex8 IID_IDirectSoundFullDuplex + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// Compatibility typedefs +// + +#ifndef _LPCWAVEFORMATEX_DEFINED +#define _LPCWAVEFORMATEX_DEFINED +typedef const WAVEFORMATEX *LPCWAVEFORMATEX; +#endif // _LPCWAVEFORMATEX_DEFINED + +#ifndef __LPCGUID_DEFINED__ +#define __LPCGUID_DEFINED__ +typedef const GUID *LPCGUID; +#endif // __LPCGUID_DEFINED__ + +typedef LPDIRECTSOUND *LPLPDIRECTSOUND; +typedef LPDIRECTSOUNDBUFFER *LPLPDIRECTSOUNDBUFFER; +typedef LPDIRECTSOUND3DLISTENER *LPLPDIRECTSOUND3DLISTENER; +typedef LPDIRECTSOUND3DBUFFER *LPLPDIRECTSOUND3DBUFFER; +typedef LPDIRECTSOUNDCAPTURE *LPLPDIRECTSOUNDCAPTURE; +typedef LPDIRECTSOUNDCAPTUREBUFFER *LPLPDIRECTSOUNDCAPTUREBUFFER; +typedef LPDIRECTSOUNDNOTIFY *LPLPDIRECTSOUNDNOTIFY; + +#if DIRECTSOUND_VERSION >= 0x0800 +typedef LPDIRECTSOUND8 *LPLPDIRECTSOUND8; +typedef LPDIRECTSOUNDBUFFER8 *LPLPDIRECTSOUNDBUFFER8; +typedef LPDIRECTSOUNDCAPTURE8 *LPLPDIRECTSOUNDCAPTURE8; +typedef LPDIRECTSOUNDCAPTUREBUFFER8 *LPLPDIRECTSOUNDCAPTUREBUFFER8; +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// Structures +// + +typedef struct _DSCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwMinSecondarySampleRate; + DWORD dwMaxSecondarySampleRate; + DWORD dwPrimaryBuffers; + DWORD dwMaxHwMixingAllBuffers; + DWORD dwMaxHwMixingStaticBuffers; + DWORD dwMaxHwMixingStreamingBuffers; + DWORD dwFreeHwMixingAllBuffers; + DWORD dwFreeHwMixingStaticBuffers; + DWORD dwFreeHwMixingStreamingBuffers; + DWORD dwMaxHw3DAllBuffers; + DWORD dwMaxHw3DStaticBuffers; + DWORD dwMaxHw3DStreamingBuffers; + DWORD dwFreeHw3DAllBuffers; + DWORD dwFreeHw3DStaticBuffers; + DWORD dwFreeHw3DStreamingBuffers; + DWORD dwTotalHwMemBytes; + DWORD dwFreeHwMemBytes; + DWORD dwMaxContigFreeHwMemBytes; + DWORD dwUnlockTransferRateHwBuffers; + DWORD dwPlayCpuOverheadSwBuffers; + DWORD dwReserved1; + DWORD dwReserved2; +} DSCAPS, *LPDSCAPS; + +typedef const DSCAPS *LPCDSCAPS; + +typedef struct _DSBCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwUnlockTransferRate; + DWORD dwPlayCpuOverhead; +} DSBCAPS, *LPDSBCAPS; + +typedef const DSBCAPS *LPCDSBCAPS; + +#if DIRECTSOUND_VERSION >= 0x0800 + + typedef struct _DSEFFECTDESC + { + DWORD dwSize; + DWORD dwFlags; + GUID guidDSFXClass; + DWORD_PTR dwReserved1; + DWORD_PTR dwReserved2; + } DSEFFECTDESC, *LPDSEFFECTDESC; + typedef const DSEFFECTDESC *LPCDSEFFECTDESC; + + #define DSFX_LOCHARDWARE 0x00000001 + #define DSFX_LOCSOFTWARE 0x00000002 + + enum + { + DSFXR_PRESENT, // 0 + DSFXR_LOCHARDWARE, // 1 + DSFXR_LOCSOFTWARE, // 2 + DSFXR_UNALLOCATED, // 3 + DSFXR_FAILED, // 4 + DSFXR_UNKNOWN, // 5 + DSFXR_SENDLOOP // 6 + }; + + typedef struct _DSCEFFECTDESC + { + DWORD dwSize; + DWORD dwFlags; + GUID guidDSCFXClass; + GUID guidDSCFXInstance; + DWORD dwReserved1; + DWORD dwReserved2; + } DSCEFFECTDESC, *LPDSCEFFECTDESC; + typedef const DSCEFFECTDESC *LPCDSCEFFECTDESC; + + #define DSCFX_LOCHARDWARE 0x00000001 + #define DSCFX_LOCSOFTWARE 0x00000002 + + #define DSCFXR_LOCHARDWARE 0x00000010 + #define DSCFXR_LOCSOFTWARE 0x00000020 + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +typedef struct _DSBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +#if DIRECTSOUND_VERSION >= 0x0700 + GUID guid3DAlgorithm; +#endif +} DSBUFFERDESC, *LPDSBUFFERDESC; + +typedef const DSBUFFERDESC *LPCDSBUFFERDESC; + +// Older version of this structure: + +typedef struct _DSBUFFERDESC1 +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +} DSBUFFERDESC1, *LPDSBUFFERDESC1; + +typedef const DSBUFFERDESC1 *LPCDSBUFFERDESC1; + +typedef struct _DS3DBUFFER +{ + DWORD dwSize; + D3DVECTOR vPosition; + D3DVECTOR vVelocity; + DWORD dwInsideConeAngle; + DWORD dwOutsideConeAngle; + D3DVECTOR vConeOrientation; + LONG lConeOutsideVolume; + D3DVALUE flMinDistance; + D3DVALUE flMaxDistance; + DWORD dwMode; +} DS3DBUFFER, *LPDS3DBUFFER; + +typedef const DS3DBUFFER *LPCDS3DBUFFER; + +typedef struct _DS3DLISTENER +{ + DWORD dwSize; + D3DVECTOR vPosition; + D3DVECTOR vVelocity; + D3DVECTOR vOrientFront; + D3DVECTOR vOrientTop; + D3DVALUE flDistanceFactor; + D3DVALUE flRolloffFactor; + D3DVALUE flDopplerFactor; +} DS3DLISTENER, *LPDS3DLISTENER; + +typedef const DS3DLISTENER *LPCDS3DLISTENER; + +typedef struct _DSCCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwFormats; + DWORD dwChannels; +} DSCCAPS, *LPDSCCAPS; + +typedef const DSCCAPS *LPCDSCCAPS; + +typedef struct _DSCBUFFERDESC1 +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +} DSCBUFFERDESC1, *LPDSCBUFFERDESC1; + +typedef struct _DSCBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; +#if DIRECTSOUND_VERSION >= 0x0800 + DWORD dwFXCount; + LPDSCEFFECTDESC lpDSCFXDesc; +#endif +} DSCBUFFERDESC, *LPDSCBUFFERDESC; + +typedef const DSCBUFFERDESC *LPCDSCBUFFERDESC; + +typedef struct _DSCBCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; +} DSCBCAPS, *LPDSCBCAPS; + +typedef const DSCBCAPS *LPCDSCBCAPS; + +typedef struct _DSBPOSITIONNOTIFY +{ + DWORD dwOffset; + HANDLE hEventNotify; +} DSBPOSITIONNOTIFY, *LPDSBPOSITIONNOTIFY; + +typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY; + +// +// DirectSound API +// + +typedef BOOL (CALLBACK *LPDSENUMCALLBACKA)(LPGUID, LPCSTR, LPCSTR, LPVOID); +typedef BOOL (CALLBACK *LPDSENUMCALLBACKW)(LPGUID, LPCWSTR, LPCWSTR, LPVOID); + +extern HRESULT WINAPI DirectSoundCreate(LPCGUID pcGuidDevice, LPDIRECTSOUND *ppDS, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); +extern HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); + +extern HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE *ppDSC, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA pDSEnumCallback, LPVOID pContext); +extern HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW pDSEnumCallback, LPVOID pContext); + +#if DIRECTSOUND_VERSION >= 0x0800 +extern HRESULT WINAPI DirectSoundCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUND8 *ppDS8, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundCaptureCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUNDCAPTURE8 *ppDSC8, LPUNKNOWN pUnkOuter); +extern HRESULT WINAPI DirectSoundFullDuplexCreate(LPCGUID pcGuidCaptureDevice, LPCGUID pcGuidRenderDevice, + LPCDSCBUFFERDESC pcDSCBufferDesc, LPCDSBUFFERDESC pcDSBufferDesc, HWND hWnd, + DWORD dwLevel, LPDIRECTSOUNDFULLDUPLEX* ppDSFD, LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8, + LPDIRECTSOUNDBUFFER8 *ppDSBuffer8, LPUNKNOWN pUnkOuter); +#define DirectSoundFullDuplexCreate8 DirectSoundFullDuplexCreate + +extern HRESULT WINAPI GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest); +#endif // DIRECTSOUND_VERSION >= 0x0800 + +#ifdef UNICODE +#define LPDSENUMCALLBACK LPDSENUMCALLBACKW +#define DirectSoundEnumerate DirectSoundEnumerateW +#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateW +#else // UNICODE +#define LPDSENUMCALLBACK LPDSENUMCALLBACKA +#define DirectSoundEnumerate DirectSoundEnumerateA +#define DirectSoundCaptureEnumerate DirectSoundCaptureEnumerateA +#endif // UNICODE + +// +// IUnknown +// + +#if !defined(__cplusplus) || defined(CINTERFACE) +#ifndef IUnknown_QueryInterface +#define IUnknown_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) +#endif // IUnknown_QueryInterface +#ifndef IUnknown_AddRef +#define IUnknown_AddRef(p) (p)->lpVtbl->AddRef(p) +#endif // IUnknown_AddRef +#ifndef IUnknown_Release +#define IUnknown_Release(p) (p)->lpVtbl->Release(p) +#endif // IUnknown_Release +#else // !defined(__cplusplus) || defined(CINTERFACE) +#ifndef IUnknown_QueryInterface +#define IUnknown_QueryInterface(p,a,b) (p)->QueryInterface(a,b) +#endif // IUnknown_QueryInterface +#ifndef IUnknown_AddRef +#define IUnknown_AddRef(p) (p)->AddRef() +#endif // IUnknown_AddRef +#ifndef IUnknown_Release +#define IUnknown_Release(p) (p)->Release() +#endif // IUnknown_Release +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#ifndef __IReferenceClock_INTERFACE_DEFINED__ +#define __IReferenceClock_INTERFACE_DEFINED__ + +typedef LONGLONG REFERENCE_TIME; +typedef REFERENCE_TIME *LPREFERENCE_TIME; + +DEFINE_GUID(IID_IReferenceClock, 0x56a86897, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); + +#undef INTERFACE +#define INTERFACE IReferenceClock + +DECLARE_INTERFACE_(IReferenceClock, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IReferenceClock methods + STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE; + STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME rtBaseTime, REFERENCE_TIME rtStreamTime, + HANDLE hEvent, LPDWORD pdwAdviseCookie) PURE; + STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME rtStartTime, REFERENCE_TIME rtPeriodTime, + HANDLE hSemaphore, LPDWORD pdwAdviseCookie) PURE; + STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE; +}; + +#endif // __IReferenceClock_INTERFACE_DEFINED__ + +#ifndef IReferenceClock_QueryInterface + +#define IReferenceClock_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IReferenceClock_AddRef(p) IUnknown_AddRef(p) +#define IReferenceClock_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a) +#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d) +#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d) +#define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IReferenceClock_GetTime(p,a) (p)->GetTime(a) +#define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->AdviseTime(a,b,c,d) +#define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->AdvisePeriodic(a,b,c,d) +#define IReferenceClock_Unadvise(p,a) (p)->Unadvise(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // IReferenceClock_QueryInterface + +// +// IDirectSound +// + +DEFINE_GUID(IID_IDirectSound, 0x279AFA83, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSound + +DECLARE_INTERFACE_(IDirectSound, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound methods + STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; + STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; + STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; + STDMETHOD(Compact) (THIS) PURE; + STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; + STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; + STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; +}; + +#define IDirectSound_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSound_AddRef(p) IUnknown_AddRef(p) +#define IDirectSound_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->lpVtbl->CreateSoundBuffer(p,a,b,c) +#define IDirectSound_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->lpVtbl->DuplicateSoundBuffer(p,a,b) +#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) +#define IDirectSound_Compact(p) (p)->lpVtbl->Compact(p) +#define IDirectSound_GetSpeakerConfig(p,a) (p)->lpVtbl->GetSpeakerConfig(p,a) +#define IDirectSound_SetSpeakerConfig(p,b) (p)->lpVtbl->SetSpeakerConfig(p,b) +#define IDirectSound_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound_CreateSoundBuffer(p,a,b,c) (p)->CreateSoundBuffer(a,b,c) +#define IDirectSound_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSound_DuplicateSoundBuffer(p,a,b) (p)->DuplicateSoundBuffer(a,b) +#define IDirectSound_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) +#define IDirectSound_Compact(p) (p)->Compact() +#define IDirectSound_GetSpeakerConfig(p,a) (p)->GetSpeakerConfig(a) +#define IDirectSound_SetSpeakerConfig(p,b) (p)->SetSpeakerConfig(b) +#define IDirectSound_Initialize(p,a) (p)->Initialize(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSound8 +// + +DEFINE_GUID(IID_IDirectSound8, 0xC50A7E93, 0xF395, 0x4834, 0x9E, 0xF6, 0x7F, 0xA9, 0x9D, 0xE5, 0x09, 0x66); + +#undef INTERFACE +#define INTERFACE IDirectSound8 + +DECLARE_INTERFACE_(IDirectSound8, IDirectSound) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound methods + STDMETHOD(CreateSoundBuffer) (THIS_ LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(GetCaps) (THIS_ LPDSCAPS pDSCaps) PURE; + STDMETHOD(DuplicateSoundBuffer) (THIS_ LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate) PURE; + STDMETHOD(SetCooperativeLevel) (THIS_ HWND hwnd, DWORD dwLevel) PURE; + STDMETHOD(Compact) (THIS) PURE; + STDMETHOD(GetSpeakerConfig) (THIS_ LPDWORD pdwSpeakerConfig) PURE; + STDMETHOD(SetSpeakerConfig) (THIS_ DWORD dwSpeakerConfig) PURE; + STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; + + // IDirectSound8 methods + STDMETHOD(VerifyCertification) (THIS_ LPDWORD pdwCertified) PURE; +}; + +#define IDirectSound8_QueryInterface(p,a,b) IDirectSound_QueryInterface(p,a,b) +#define IDirectSound8_AddRef(p) IDirectSound_AddRef(p) +#define IDirectSound8_Release(p) IDirectSound_Release(p) +#define IDirectSound8_CreateSoundBuffer(p,a,b,c) IDirectSound_CreateSoundBuffer(p,a,b,c) +#define IDirectSound8_GetCaps(p,a) IDirectSound_GetCaps(p,a) +#define IDirectSound8_DuplicateSoundBuffer(p,a,b) IDirectSound_DuplicateSoundBuffer(p,a,b) +#define IDirectSound8_SetCooperativeLevel(p,a,b) IDirectSound_SetCooperativeLevel(p,a,b) +#define IDirectSound8_Compact(p) IDirectSound_Compact(p) +#define IDirectSound8_GetSpeakerConfig(p,a) IDirectSound_GetSpeakerConfig(p,a) +#define IDirectSound8_SetSpeakerConfig(p,a) IDirectSound_SetSpeakerConfig(p,a) +#define IDirectSound8_Initialize(p,a) IDirectSound_Initialize(p,a) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound8_VerifyCertification(p,a) (p)->lpVtbl->VerifyCertification(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound8_VerifyCertification(p,a) (p)->VerifyCertification(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundBuffer +// + +DEFINE_GUID(IID_IDirectSoundBuffer, 0x279AFA85, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSoundBuffer + +DECLARE_INTERFACE_(IDirectSoundBuffer, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; + STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; + STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; + STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; + STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; + STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; + STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; + STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; + STDMETHOD(Restore) (THIS) PURE; +}; + +#define IDirectSoundBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundBuffer_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundBuffer_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) +#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) +#define IDirectSoundBuffer_GetVolume(p,a) (p)->lpVtbl->GetVolume(p,a) +#define IDirectSoundBuffer_GetPan(p,a) (p)->lpVtbl->GetPan(p,a) +#define IDirectSoundBuffer_GetFrequency(p,a) (p)->lpVtbl->GetFrequency(p,a) +#define IDirectSoundBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) +#define IDirectSoundBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundBuffer_Play(p,a,b,c) (p)->lpVtbl->Play(p,a,b,c) +#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->lpVtbl->SetCurrentPosition(p,a) +#define IDirectSoundBuffer_SetFormat(p,a) (p)->lpVtbl->SetFormat(p,a) +#define IDirectSoundBuffer_SetVolume(p,a) (p)->lpVtbl->SetVolume(p,a) +#define IDirectSoundBuffer_SetPan(p,a) (p)->lpVtbl->SetPan(p,a) +#define IDirectSoundBuffer_SetFrequency(p,a) (p)->lpVtbl->SetFrequency(p,a) +#define IDirectSoundBuffer_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) +#define IDirectSoundBuffer_Restore(p) (p)->lpVtbl->Restore(p) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSoundBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) +#define IDirectSoundBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) +#define IDirectSoundBuffer_GetVolume(p,a) (p)->GetVolume(a) +#define IDirectSoundBuffer_GetPan(p,a) (p)->GetPan(a) +#define IDirectSoundBuffer_GetFrequency(p,a) (p)->GetFrequency(a) +#define IDirectSoundBuffer_GetStatus(p,a) (p)->GetStatus(a) +#define IDirectSoundBuffer_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) +#define IDirectSoundBuffer_Play(p,a,b,c) (p)->Play(a,b,c) +#define IDirectSoundBuffer_SetCurrentPosition(p,a) (p)->SetCurrentPosition(a) +#define IDirectSoundBuffer_SetFormat(p,a) (p)->SetFormat(a) +#define IDirectSoundBuffer_SetVolume(p,a) (p)->SetVolume(a) +#define IDirectSoundBuffer_SetPan(p,a) (p)->SetPan(a) +#define IDirectSoundBuffer_SetFrequency(p,a) (p)->SetFrequency(a) +#define IDirectSoundBuffer_Stop(p) (p)->Stop() +#define IDirectSoundBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) +#define IDirectSoundBuffer_Restore(p) (p)->Restore() +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundBuffer8 +// + +DEFINE_GUID(IID_IDirectSoundBuffer8, 0x6825a449, 0x7524, 0x4d82, 0x92, 0x0f, 0x50, 0xe3, 0x6a, 0xb3, 0xab, 0x1e); + +#undef INTERFACE +#define INTERFACE IDirectSoundBuffer8 + +DECLARE_INTERFACE_(IDirectSoundBuffer8, IDirectSoundBuffer) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSBCAPS pDSBufferCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetVolume) (THIS_ LPLONG plVolume) PURE; + STDMETHOD(GetPan) (THIS_ LPLONG plPan) PURE; + STDMETHOD(GetFrequency) (THIS_ LPDWORD pdwFrequency) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Play) (THIS_ DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags) PURE; + STDMETHOD(SetCurrentPosition) (THIS_ DWORD dwNewPosition) PURE; + STDMETHOD(SetFormat) (THIS_ LPCWAVEFORMATEX pcfxFormat) PURE; + STDMETHOD(SetVolume) (THIS_ LONG lVolume) PURE; + STDMETHOD(SetPan) (THIS_ LONG lPan) PURE; + STDMETHOD(SetFrequency) (THIS_ DWORD dwFrequency) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; + STDMETHOD(Restore) (THIS) PURE; + + // IDirectSoundBuffer8 methods + STDMETHOD(SetFX) (THIS_ DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes) PURE; + STDMETHOD(AcquireResources) (THIS_ DWORD dwFlags, DWORD dwEffectsCount, LPDWORD pdwResultCodes) PURE; + STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; +}; + +// Special GUID meaning "select all objects" for use in GetObjectInPath() +DEFINE_GUID(GUID_All_Objects, 0xaa114de5, 0xc262, 0x4169, 0xa1, 0xc8, 0x23, 0xd6, 0x98, 0xcc, 0x73, 0xb5); + +#define IDirectSoundBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundBuffer8_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundBuffer8_Release(p) IUnknown_Release(p) + +#define IDirectSoundBuffer8_GetCaps(p,a) IDirectSoundBuffer_GetCaps(p,a) +#define IDirectSoundBuffer8_GetCurrentPosition(p,a,b) IDirectSoundBuffer_GetCurrentPosition(p,a,b) +#define IDirectSoundBuffer8_GetFormat(p,a,b,c) IDirectSoundBuffer_GetFormat(p,a,b,c) +#define IDirectSoundBuffer8_GetVolume(p,a) IDirectSoundBuffer_GetVolume(p,a) +#define IDirectSoundBuffer8_GetPan(p,a) IDirectSoundBuffer_GetPan(p,a) +#define IDirectSoundBuffer8_GetFrequency(p,a) IDirectSoundBuffer_GetFrequency(p,a) +#define IDirectSoundBuffer8_GetStatus(p,a) IDirectSoundBuffer_GetStatus(p,a) +#define IDirectSoundBuffer8_Initialize(p,a,b) IDirectSoundBuffer_Initialize(p,a,b) +#define IDirectSoundBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundBuffer_Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundBuffer8_Play(p,a,b,c) IDirectSoundBuffer_Play(p,a,b,c) +#define IDirectSoundBuffer8_SetCurrentPosition(p,a) IDirectSoundBuffer_SetCurrentPosition(p,a) +#define IDirectSoundBuffer8_SetFormat(p,a) IDirectSoundBuffer_SetFormat(p,a) +#define IDirectSoundBuffer8_SetVolume(p,a) IDirectSoundBuffer_SetVolume(p,a) +#define IDirectSoundBuffer8_SetPan(p,a) IDirectSoundBuffer_SetPan(p,a) +#define IDirectSoundBuffer8_SetFrequency(p,a) IDirectSoundBuffer_SetFrequency(p,a) +#define IDirectSoundBuffer8_Stop(p) IDirectSoundBuffer_Stop(p) +#define IDirectSoundBuffer8_Unlock(p,a,b,c,d) IDirectSoundBuffer_Unlock(p,a,b,c,d) +#define IDirectSoundBuffer8_Restore(p) IDirectSoundBuffer_Restore(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->lpVtbl->SetFX(p,a,b,c) +#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->lpVtbl->AcquireResources(p,a,b,c) +#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundBuffer8_SetFX(p,a,b,c) (p)->SetFX(a,b,c) +#define IDirectSoundBuffer8_AcquireResources(p,a,b,c) (p)->AcquireResources(a,b,c) +#define IDirectSoundBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSound3DListener +// + +DEFINE_GUID(IID_IDirectSound3DListener, 0x279AFA84, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSound3DListener + +DECLARE_INTERFACE_(IDirectSound3DListener, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound3DListener methods + STDMETHOD(GetAllParameters) (THIS_ LPDS3DLISTENER pListener) PURE; + STDMETHOD(GetDistanceFactor) (THIS_ D3DVALUE* pflDistanceFactor) PURE; + STDMETHOD(GetDopplerFactor) (THIS_ D3DVALUE* pflDopplerFactor) PURE; + STDMETHOD(GetOrientation) (THIS_ D3DVECTOR* pvOrientFront, D3DVECTOR* pvOrientTop) PURE; + STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; + STDMETHOD(GetRolloffFactor) (THIS_ D3DVALUE* pflRolloffFactor) PURE; + STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; + STDMETHOD(SetAllParameters) (THIS_ LPCDS3DLISTENER pcListener, DWORD dwApply) PURE; + STDMETHOD(SetDistanceFactor) (THIS_ D3DVALUE flDistanceFactor, DWORD dwApply) PURE; + STDMETHOD(SetDopplerFactor) (THIS_ D3DVALUE flDopplerFactor, DWORD dwApply) PURE; + STDMETHOD(SetOrientation) (THIS_ D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, + D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply) PURE; + STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(SetRolloffFactor) (THIS_ D3DVALUE flRolloffFactor, DWORD dwApply) PURE; + STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(CommitDeferredSettings) (THIS) PURE; +}; + +#define IDirectSound3DListener_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSound3DListener_AddRef(p) IUnknown_AddRef(p) +#define IDirectSound3DListener_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DListener_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->lpVtbl->GetDistanceFactor(p,a) +#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->lpVtbl->GetDopplerFactor(p,a) +#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->lpVtbl->GetOrientation(p,a,b) +#define IDirectSound3DListener_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) +#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->lpVtbl->GetRolloffFactor(p,a) +#define IDirectSound3DListener_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) +#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) +#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->lpVtbl->SetDistanceFactor(p,a,b) +#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->lpVtbl->SetDopplerFactor(p,a,b) +#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g) +#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) +#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->lpVtbl->SetRolloffFactor(p,a,b) +#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) +#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->lpVtbl->CommitDeferredSettings(p) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DListener_GetAllParameters(p,a) (p)->GetAllParameters(a) +#define IDirectSound3DListener_GetDistanceFactor(p,a) (p)->GetDistanceFactor(a) +#define IDirectSound3DListener_GetDopplerFactor(p,a) (p)->GetDopplerFactor(a) +#define IDirectSound3DListener_GetOrientation(p,a,b) (p)->GetOrientation(a,b) +#define IDirectSound3DListener_GetPosition(p,a) (p)->GetPosition(a) +#define IDirectSound3DListener_GetRolloffFactor(p,a) (p)->GetRolloffFactor(a) +#define IDirectSound3DListener_GetVelocity(p,a) (p)->GetVelocity(a) +#define IDirectSound3DListener_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) +#define IDirectSound3DListener_SetDistanceFactor(p,a,b) (p)->SetDistanceFactor(a,b) +#define IDirectSound3DListener_SetDopplerFactor(p,a,b) (p)->SetDopplerFactor(a,b) +#define IDirectSound3DListener_SetOrientation(p,a,b,c,d,e,f,g) (p)->SetOrientation(a,b,c,d,e,f,g) +#define IDirectSound3DListener_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) +#define IDirectSound3DListener_SetRolloffFactor(p,a,b) (p)->SetRolloffFactor(a,b) +#define IDirectSound3DListener_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) +#define IDirectSound3DListener_CommitDeferredSettings(p) (p)->CommitDeferredSettings() +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSound3DBuffer +// + +DEFINE_GUID(IID_IDirectSound3DBuffer, 0x279AFA86, 0x4981, 0x11CE, 0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60); + +#undef INTERFACE +#define INTERFACE IDirectSound3DBuffer + +DECLARE_INTERFACE_(IDirectSound3DBuffer, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSound3DBuffer methods + STDMETHOD(GetAllParameters) (THIS_ LPDS3DBUFFER pDs3dBuffer) PURE; + STDMETHOD(GetConeAngles) (THIS_ LPDWORD pdwInsideConeAngle, LPDWORD pdwOutsideConeAngle) PURE; + STDMETHOD(GetConeOrientation) (THIS_ D3DVECTOR* pvOrientation) PURE; + STDMETHOD(GetConeOutsideVolume) (THIS_ LPLONG plConeOutsideVolume) PURE; + STDMETHOD(GetMaxDistance) (THIS_ D3DVALUE* pflMaxDistance) PURE; + STDMETHOD(GetMinDistance) (THIS_ D3DVALUE* pflMinDistance) PURE; + STDMETHOD(GetMode) (THIS_ LPDWORD pdwMode) PURE; + STDMETHOD(GetPosition) (THIS_ D3DVECTOR* pvPosition) PURE; + STDMETHOD(GetVelocity) (THIS_ D3DVECTOR* pvVelocity) PURE; + STDMETHOD(SetAllParameters) (THIS_ LPCDS3DBUFFER pcDs3dBuffer, DWORD dwApply) PURE; + STDMETHOD(SetConeAngles) (THIS_ DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply) PURE; + STDMETHOD(SetConeOrientation) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(SetConeOutsideVolume) (THIS_ LONG lConeOutsideVolume, DWORD dwApply) PURE; + STDMETHOD(SetMaxDistance) (THIS_ D3DVALUE flMaxDistance, DWORD dwApply) PURE; + STDMETHOD(SetMinDistance) (THIS_ D3DVALUE flMinDistance, DWORD dwApply) PURE; + STDMETHOD(SetMode) (THIS_ DWORD dwMode, DWORD dwApply) PURE; + STDMETHOD(SetPosition) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; + STDMETHOD(SetVelocity) (THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply) PURE; +}; + +#define IDirectSound3DBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSound3DBuffer_AddRef(p) IUnknown_AddRef(p) +#define IDirectSound3DBuffer_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->lpVtbl->GetConeAngles(p,a,b) +#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->lpVtbl->GetConeOrientation(p,a) +#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->lpVtbl->GetConeOutsideVolume(p,a) +#define IDirectSound3DBuffer_GetPosition(p,a) (p)->lpVtbl->GetPosition(p,a) +#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->lpVtbl->GetMinDistance(p,a) +#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->lpVtbl->GetMaxDistance(p,a) +#define IDirectSound3DBuffer_GetMode(p,a) (p)->lpVtbl->GetMode(p,a) +#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->lpVtbl->GetVelocity(p,a) +#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->lpVtbl->SetAllParameters(p,a,b) +#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->lpVtbl->SetConeAngles(p,a,b,c) +#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->lpVtbl->SetConeOrientation(p,a,b,c,d) +#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->lpVtbl->SetConeOutsideVolume(p,a,b) +#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->lpVtbl->SetPosition(p,a,b,c,d) +#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->lpVtbl->SetMinDistance(p,a,b) +#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->lpVtbl->SetMaxDistance(p,a,b) +#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->lpVtbl->SetMode(p,a,b) +#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->lpVtbl->SetVelocity(p,a,b,c,d) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSound3DBuffer_GetAllParameters(p,a) (p)->GetAllParameters(a) +#define IDirectSound3DBuffer_GetConeAngles(p,a,b) (p)->GetConeAngles(a,b) +#define IDirectSound3DBuffer_GetConeOrientation(p,a) (p)->GetConeOrientation(a) +#define IDirectSound3DBuffer_GetConeOutsideVolume(p,a) (p)->GetConeOutsideVolume(a) +#define IDirectSound3DBuffer_GetPosition(p,a) (p)->GetPosition(a) +#define IDirectSound3DBuffer_GetMinDistance(p,a) (p)->GetMinDistance(a) +#define IDirectSound3DBuffer_GetMaxDistance(p,a) (p)->GetMaxDistance(a) +#define IDirectSound3DBuffer_GetMode(p,a) (p)->GetMode(a) +#define IDirectSound3DBuffer_GetVelocity(p,a) (p)->GetVelocity(a) +#define IDirectSound3DBuffer_SetAllParameters(p,a,b) (p)->SetAllParameters(a,b) +#define IDirectSound3DBuffer_SetConeAngles(p,a,b,c) (p)->SetConeAngles(a,b,c) +#define IDirectSound3DBuffer_SetConeOrientation(p,a,b,c,d) (p)->SetConeOrientation(a,b,c,d) +#define IDirectSound3DBuffer_SetConeOutsideVolume(p,a,b) (p)->SetConeOutsideVolume(a,b) +#define IDirectSound3DBuffer_SetPosition(p,a,b,c,d) (p)->SetPosition(a,b,c,d) +#define IDirectSound3DBuffer_SetMinDistance(p,a,b) (p)->SetMinDistance(a,b) +#define IDirectSound3DBuffer_SetMaxDistance(p,a,b) (p)->SetMaxDistance(a,b) +#define IDirectSound3DBuffer_SetMode(p,a,b) (p)->SetMode(a,b) +#define IDirectSound3DBuffer_SetVelocity(p,a,b,c,d) (p)->SetVelocity(a,b,c,d) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundCapture +// + +DEFINE_GUID(IID_IDirectSoundCapture, 0xb0210781, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +#undef INTERFACE +#define INTERFACE IDirectSoundCapture + +DECLARE_INTERFACE_(IDirectSoundCapture, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCapture methods + STDMETHOD(CreateCaptureBuffer) (THIS_ LPCDSCBUFFERDESC pcDSCBufferDesc, LPDIRECTSOUNDCAPTUREBUFFER *ppDSCBuffer, LPUNKNOWN pUnkOuter) PURE; + STDMETHOD(GetCaps) (THIS_ LPDSCCAPS pDSCCaps) PURE; + STDMETHOD(Initialize) (THIS_ LPCGUID pcGuidDevice) PURE; +}; + +#define IDirectSoundCapture_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCapture_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCapture_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->lpVtbl->CreateCaptureBuffer(p,a,b,c) +#define IDirectSoundCapture_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSoundCapture_Initialize(p,a) (p)->lpVtbl->Initialize(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCapture_CreateCaptureBuffer(p,a,b,c) (p)->CreateCaptureBuffer(a,b,c) +#define IDirectSoundCapture_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSoundCapture_Initialize(p,a) (p)->Initialize(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundCaptureBuffer +// + +DEFINE_GUID(IID_IDirectSoundCaptureBuffer, 0xb0210782, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureBuffer + +DECLARE_INTERFACE_(IDirectSoundCaptureBuffer, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; +}; + +#define IDirectSoundCaptureBuffer_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureBuffer_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureBuffer_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a) +#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->lpVtbl->GetCurrentPosition(p,a,b) +#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->lpVtbl->GetFormat(p,a,b,c) +#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->lpVtbl->GetStatus(p,a) +#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) +#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->lpVtbl->Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundCaptureBuffer_Start(p,a) (p)->lpVtbl->Start(p,a) +#define IDirectSoundCaptureBuffer_Stop(p) (p)->lpVtbl->Stop(p) +#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->lpVtbl->Unlock(p,a,b,c,d) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer_GetCaps(p,a) (p)->GetCaps(a) +#define IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) (p)->GetCurrentPosition(a,b) +#define IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) (p)->GetFormat(a,b,c) +#define IDirectSoundCaptureBuffer_GetStatus(p,a) (p)->GetStatus(a) +#define IDirectSoundCaptureBuffer_Initialize(p,a,b) (p)->Initialize(a,b) +#define IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) (p)->Lock(a,b,c,d,e,f,g) +#define IDirectSoundCaptureBuffer_Start(p,a) (p)->Start(a) +#define IDirectSoundCaptureBuffer_Stop(p) (p)->Stop() +#define IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) (p)->Unlock(a,b,c,d) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundCaptureBuffer8 +// + +DEFINE_GUID(IID_IDirectSoundCaptureBuffer8, 0x990df4, 0xdbb, 0x4872, 0x83, 0x3e, 0x6d, 0x30, 0x3e, 0x80, 0xae, 0xb6); + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureBuffer8 + +DECLARE_INTERFACE_(IDirectSoundCaptureBuffer8, IDirectSoundCaptureBuffer) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureBuffer methods + STDMETHOD(GetCaps) (THIS_ LPDSCBCAPS pDSCBCaps) PURE; + STDMETHOD(GetCurrentPosition) (THIS_ LPDWORD pdwCapturePosition, LPDWORD pdwReadPosition) PURE; + STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten) PURE; + STDMETHOD(GetStatus) (THIS_ LPDWORD pdwStatus) PURE; + STDMETHOD(Initialize) (THIS_ LPDIRECTSOUNDCAPTURE pDirectSoundCapture, LPCDSCBUFFERDESC pcDSCBufferDesc) PURE; + STDMETHOD(Lock) (THIS_ DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags) PURE; + STDMETHOD(Start) (THIS_ DWORD dwFlags) PURE; + STDMETHOD(Stop) (THIS) PURE; + STDMETHOD(Unlock) (THIS_ LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2) PURE; + + // IDirectSoundCaptureBuffer8 methods + STDMETHOD(GetObjectInPath) (THIS_ REFGUID rguidObject, DWORD dwIndex, REFGUID rguidInterface, LPVOID *ppObject) PURE; + STDMETHOD(GetFXStatus) (DWORD dwFXCount, LPDWORD pdwFXStatus) PURE; +}; + +#define IDirectSoundCaptureBuffer8_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureBuffer8_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureBuffer8_Release(p) IUnknown_Release(p) + +#define IDirectSoundCaptureBuffer8_GetCaps(p,a) IDirectSoundCaptureBuffer_GetCaps(p,a) +#define IDirectSoundCaptureBuffer8_GetCurrentPosition(p,a,b) IDirectSoundCaptureBuffer_GetCurrentPosition(p,a,b) +#define IDirectSoundCaptureBuffer8_GetFormat(p,a,b,c) IDirectSoundCaptureBuffer_GetFormat(p,a,b,c) +#define IDirectSoundCaptureBuffer8_GetStatus(p,a) IDirectSoundCaptureBuffer_GetStatus(p,a) +#define IDirectSoundCaptureBuffer8_Initialize(p,a,b) IDirectSoundCaptureBuffer_Initialize(p,a,b) +#define IDirectSoundCaptureBuffer8_Lock(p,a,b,c,d,e,f,g) IDirectSoundCaptureBuffer_Lock(p,a,b,c,d,e,f,g) +#define IDirectSoundCaptureBuffer8_Start(p,a) IDirectSoundCaptureBuffer_Start(p,a) +#define IDirectSoundCaptureBuffer8_Stop(p) IDirectSoundCaptureBuffer_Stop(p)) +#define IDirectSoundCaptureBuffer8_Unlock(p,a,b,c,d) IDirectSoundCaptureBuffer_Unlock(p,a,b,c,d) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->lpVtbl->GetObjectInPath(p,a,b,c,d) +#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->lpVtbl->GetFXStatus(p,a,b) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureBuffer8_GetObjectInPath(p,a,b,c,d) (p)->GetObjectInPath(a,b,c,d) +#define IDirectSoundCaptureBuffer8_GetFXStatus(p,a,b) (p)->GetFXStatus(a,b) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundNotify +// + +DEFINE_GUID(IID_IDirectSoundNotify, 0xb0210783, 0x89cd, 0x11d0, 0xaf, 0x8, 0x0, 0xa0, 0xc9, 0x25, 0xcd, 0x16); + +#undef INTERFACE +#define INTERFACE IDirectSoundNotify + +DECLARE_INTERFACE_(IDirectSoundNotify, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundNotify methods + STDMETHOD(SetNotificationPositions) (THIS_ DWORD dwPositionNotifies, LPCDSBPOSITIONNOTIFY pcPositionNotifies) PURE; +}; + +#define IDirectSoundNotify_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundNotify_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundNotify_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->lpVtbl->SetNotificationPositions(p,a,b) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundNotify_SetNotificationPositions(p,a,b) (p)->SetNotificationPositions(a,b) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IKsPropertySet +// + +#ifndef _IKsPropertySet_ +#define _IKsPropertySet_ + +#ifdef __cplusplus +// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined +struct IKsPropertySet; +#endif // __cplusplus + +typedef struct IKsPropertySet *LPKSPROPERTYSET; + +#define KSPROPERTY_SUPPORT_GET 0x00000001 +#define KSPROPERTY_SUPPORT_SET 0x00000002 + +DEFINE_GUID(IID_IKsPropertySet, 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93); + +#undef INTERFACE +#define INTERFACE IKsPropertySet + +DECLARE_INTERFACE_(IKsPropertySet, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IKsPropertySet methods + STDMETHOD(Get) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, + LPVOID pPropertyData, ULONG ulDataLength, PULONG pulBytesReturned) PURE; + STDMETHOD(Set) (THIS_ REFGUID rguidPropSet, ULONG ulId, LPVOID pInstanceData, ULONG ulInstanceLength, + LPVOID pPropertyData, ULONG ulDataLength) PURE; + STDMETHOD(QuerySupport) (THIS_ REFGUID rguidPropSet, ULONG ulId, PULONG pulTypeSupport) PURE; +}; + +#define IKsPropertySet_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IKsPropertySet_AddRef(p) IUnknown_AddRef(p) +#define IKsPropertySet_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->lpVtbl->Get(p,a,b,c,d,e,f,g) +#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->lpVtbl->Set(p,a,b,c,d,e,f) +#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->lpVtbl->QuerySupport(p,a,b,c) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IKsPropertySet_Get(p,a,b,c,d,e,f,g) (p)->Get(a,b,c,d,e,f,g) +#define IKsPropertySet_Set(p,a,b,c,d,e,f) (p)->Set(a,b,c,d,e,f) +#define IKsPropertySet_QuerySupport(p,a,b,c) (p)->QuerySupport(a,b,c) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // _IKsPropertySet_ + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// IDirectSoundFXGargle +// + +DEFINE_GUID(IID_IDirectSoundFXGargle, 0xd616f352, 0xd622, 0x11ce, 0xaa, 0xc5, 0x00, 0x20, 0xaf, 0x0b, 0x99, 0xa3); + +typedef struct _DSFXGargle +{ + DWORD dwRateHz; // Rate of modulation in hz + DWORD dwWaveShape; // DSFXGARGLE_WAVE_xxx +} DSFXGargle, *LPDSFXGargle; + +#define DSFXGARGLE_WAVE_TRIANGLE 0 +#define DSFXGARGLE_WAVE_SQUARE 1 + +typedef const DSFXGargle *LPCDSFXGargle; + +#define DSFXGARGLE_RATEHZ_MIN 1 +#define DSFXGARGLE_RATEHZ_MAX 1000 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXGargle + +DECLARE_INTERFACE_(IDirectSoundFXGargle, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXGargle methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXGargle pcDsFxGargle) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXGargle pDsFxGargle) PURE; +}; + +#define IDirectSoundFXGargle_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXGargle_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXGargle_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXGargle_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXGargle_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXChorus +// + +DEFINE_GUID(IID_IDirectSoundFXChorus, 0x880842e3, 0x145f, 0x43e6, 0xa9, 0x34, 0xa7, 0x18, 0x06, 0xe5, 0x05, 0x47); + +typedef struct _DSFXChorus +{ + FLOAT fWetDryMix; + FLOAT fDepth; + FLOAT fFeedback; + FLOAT fFrequency; + LONG lWaveform; // LFO shape; DSFXCHORUS_WAVE_xxx + FLOAT fDelay; + LONG lPhase; +} DSFXChorus, *LPDSFXChorus; + +typedef const DSFXChorus *LPCDSFXChorus; + +#define DSFXCHORUS_WAVE_TRIANGLE 0 +#define DSFXCHORUS_WAVE_SIN 1 + +#define DSFXCHORUS_WETDRYMIX_MIN 0.0f +#define DSFXCHORUS_WETDRYMIX_MAX 100.0f +#define DSFXCHORUS_DEPTH_MIN 0.0f +#define DSFXCHORUS_DEPTH_MAX 100.0f +#define DSFXCHORUS_FEEDBACK_MIN -99.0f +#define DSFXCHORUS_FEEDBACK_MAX 99.0f +#define DSFXCHORUS_FREQUENCY_MIN 0.0f +#define DSFXCHORUS_FREQUENCY_MAX 10.0f +#define DSFXCHORUS_DELAY_MIN 0.0f +#define DSFXCHORUS_DELAY_MAX 20.0f +#define DSFXCHORUS_PHASE_MIN 0 +#define DSFXCHORUS_PHASE_MAX 4 + +#define DSFXCHORUS_PHASE_NEG_180 0 +#define DSFXCHORUS_PHASE_NEG_90 1 +#define DSFXCHORUS_PHASE_ZERO 2 +#define DSFXCHORUS_PHASE_90 3 +#define DSFXCHORUS_PHASE_180 4 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXChorus + +DECLARE_INTERFACE_(IDirectSoundFXChorus, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXChorus methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXChorus pcDsFxChorus) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXChorus pDsFxChorus) PURE; +}; + +#define IDirectSoundFXChorus_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXChorus_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXChorus_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXChorus_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXChorus_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXFlanger +// + +DEFINE_GUID(IID_IDirectSoundFXFlanger, 0x903e9878, 0x2c92, 0x4072, 0x9b, 0x2c, 0xea, 0x68, 0xf5, 0x39, 0x67, 0x83); + +typedef struct _DSFXFlanger +{ + FLOAT fWetDryMix; + FLOAT fDepth; + FLOAT fFeedback; + FLOAT fFrequency; + LONG lWaveform; + FLOAT fDelay; + LONG lPhase; +} DSFXFlanger, *LPDSFXFlanger; + +typedef const DSFXFlanger *LPCDSFXFlanger; + +#define DSFXFLANGER_WAVE_TRIANGLE 0 +#define DSFXFLANGER_WAVE_SIN 1 + +#define DSFXFLANGER_WETDRYMIX_MIN 0.0f +#define DSFXFLANGER_WETDRYMIX_MAX 100.0f +#define DSFXFLANGER_FREQUENCY_MIN 0.0f +#define DSFXFLANGER_FREQUENCY_MAX 10.0f +#define DSFXFLANGER_DEPTH_MIN 0.0f +#define DSFXFLANGER_DEPTH_MAX 100.0f +#define DSFXFLANGER_PHASE_MIN 0 +#define DSFXFLANGER_PHASE_MAX 4 +#define DSFXFLANGER_FEEDBACK_MIN -99.0f +#define DSFXFLANGER_FEEDBACK_MAX 99.0f +#define DSFXFLANGER_DELAY_MIN 0.0f +#define DSFXFLANGER_DELAY_MAX 4.0f + +#define DSFXFLANGER_PHASE_NEG_180 0 +#define DSFXFLANGER_PHASE_NEG_90 1 +#define DSFXFLANGER_PHASE_ZERO 2 +#define DSFXFLANGER_PHASE_90 3 +#define DSFXFLANGER_PHASE_180 4 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXFlanger + +DECLARE_INTERFACE_(IDirectSoundFXFlanger, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXFlanger methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXFlanger pcDsFxFlanger) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXFlanger pDsFxFlanger) PURE; +}; + +#define IDirectSoundFXFlanger_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXFlanger_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXFlanger_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXFlanger_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXFlanger_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXEcho +// + +DEFINE_GUID(IID_IDirectSoundFXEcho, 0x8bd28edf, 0x50db, 0x4e92, 0xa2, 0xbd, 0x44, 0x54, 0x88, 0xd1, 0xed, 0x42); + +typedef struct _DSFXEcho +{ + FLOAT fWetDryMix; + FLOAT fFeedback; + FLOAT fLeftDelay; + FLOAT fRightDelay; + LONG lPanDelay; +} DSFXEcho, *LPDSFXEcho; + +typedef const DSFXEcho *LPCDSFXEcho; + +#define DSFXECHO_WETDRYMIX_MIN 0.0f +#define DSFXECHO_WETDRYMIX_MAX 100.0f +#define DSFXECHO_FEEDBACK_MIN 0.0f +#define DSFXECHO_FEEDBACK_MAX 100.0f +#define DSFXECHO_LEFTDELAY_MIN 1.0f +#define DSFXECHO_LEFTDELAY_MAX 2000.0f +#define DSFXECHO_RIGHTDELAY_MIN 1.0f +#define DSFXECHO_RIGHTDELAY_MAX 2000.0f +#define DSFXECHO_PANDELAY_MIN 0 +#define DSFXECHO_PANDELAY_MAX 1 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXEcho + +DECLARE_INTERFACE_(IDirectSoundFXEcho, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXEcho methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXEcho pcDsFxEcho) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXEcho pDsFxEcho) PURE; +}; + +#define IDirectSoundFXEcho_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXEcho_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXEcho_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXEcho_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXEcho_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXDistortion +// + +DEFINE_GUID(IID_IDirectSoundFXDistortion, 0x8ecf4326, 0x455f, 0x4d8b, 0xbd, 0xa9, 0x8d, 0x5d, 0x3e, 0x9e, 0x3e, 0x0b); + +typedef struct _DSFXDistortion +{ + FLOAT fGain; + FLOAT fEdge; + FLOAT fPostEQCenterFrequency; + FLOAT fPostEQBandwidth; + FLOAT fPreLowpassCutoff; +} DSFXDistortion, *LPDSFXDistortion; + +typedef const DSFXDistortion *LPCDSFXDistortion; + +#define DSFXDISTORTION_GAIN_MIN -60.0f +#define DSFXDISTORTION_GAIN_MAX 0.0f +#define DSFXDISTORTION_EDGE_MIN 0.0f +#define DSFXDISTORTION_EDGE_MAX 100.0f +#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN 100.0f +#define DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX 8000.0f +#define DSFXDISTORTION_POSTEQBANDWIDTH_MIN 100.0f +#define DSFXDISTORTION_POSTEQBANDWIDTH_MAX 8000.0f +#define DSFXDISTORTION_PRELOWPASSCUTOFF_MIN 100.0f +#define DSFXDISTORTION_PRELOWPASSCUTOFF_MAX 8000.0f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXDistortion + +DECLARE_INTERFACE_(IDirectSoundFXDistortion, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXDistortion methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXDistortion pcDsFxDistortion) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXDistortion pDsFxDistortion) PURE; +}; + +#define IDirectSoundFXDistortion_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXDistortion_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXDistortion_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXDistortion_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXDistortion_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXCompressor +// + +DEFINE_GUID(IID_IDirectSoundFXCompressor, 0x4bbd1154, 0x62f6, 0x4e2c, 0xa1, 0x5c, 0xd3, 0xb6, 0xc4, 0x17, 0xf7, 0xa0); + +typedef struct _DSFXCompressor +{ + FLOAT fGain; + FLOAT fAttack; + FLOAT fRelease; + FLOAT fThreshold; + FLOAT fRatio; + FLOAT fPredelay; +} DSFXCompressor, *LPDSFXCompressor; + +typedef const DSFXCompressor *LPCDSFXCompressor; + +#define DSFXCOMPRESSOR_GAIN_MIN -60.0f +#define DSFXCOMPRESSOR_GAIN_MAX 60.0f +#define DSFXCOMPRESSOR_ATTACK_MIN 0.01f +#define DSFXCOMPRESSOR_ATTACK_MAX 500.0f +#define DSFXCOMPRESSOR_RELEASE_MIN 50.0f +#define DSFXCOMPRESSOR_RELEASE_MAX 3000.0f +#define DSFXCOMPRESSOR_THRESHOLD_MIN -60.0f +#define DSFXCOMPRESSOR_THRESHOLD_MAX 0.0f +#define DSFXCOMPRESSOR_RATIO_MIN 1.0f +#define DSFXCOMPRESSOR_RATIO_MAX 100.0f +#define DSFXCOMPRESSOR_PREDELAY_MIN 0.0f +#define DSFXCOMPRESSOR_PREDELAY_MAX 4.0f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXCompressor + +DECLARE_INTERFACE_(IDirectSoundFXCompressor, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXCompressor methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXCompressor pcDsFxCompressor) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXCompressor pDsFxCompressor) PURE; +}; + +#define IDirectSoundFXCompressor_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXCompressor_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXCompressor_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXCompressor_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXCompressor_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXParamEq +// + +DEFINE_GUID(IID_IDirectSoundFXParamEq, 0xc03ca9fe, 0xfe90, 0x4204, 0x80, 0x78, 0x82, 0x33, 0x4c, 0xd1, 0x77, 0xda); + +typedef struct _DSFXParamEq +{ + FLOAT fCenter; + FLOAT fBandwidth; + FLOAT fGain; +} DSFXParamEq, *LPDSFXParamEq; + +typedef const DSFXParamEq *LPCDSFXParamEq; + +#define DSFXPARAMEQ_CENTER_MIN 80.0f +#define DSFXPARAMEQ_CENTER_MAX 16000.0f +#define DSFXPARAMEQ_BANDWIDTH_MIN 1.0f +#define DSFXPARAMEQ_BANDWIDTH_MAX 36.0f +#define DSFXPARAMEQ_GAIN_MIN -15.0f +#define DSFXPARAMEQ_GAIN_MAX 15.0f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXParamEq + +DECLARE_INTERFACE_(IDirectSoundFXParamEq, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXParamEq methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXParamEq pcDsFxParamEq) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXParamEq pDsFxParamEq) PURE; +}; + +#define IDirectSoundFXParamEq_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXParamEq_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXParamEq_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXParamEq_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXParamEq_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXI3DL2Reverb +// + +DEFINE_GUID(IID_IDirectSoundFXI3DL2Reverb, 0x4b166a6a, 0x0d66, 0x43f3, 0x80, 0xe3, 0xee, 0x62, 0x80, 0xde, 0xe1, 0xa4); + +typedef struct _DSFXI3DL2Reverb +{ + LONG lRoom; // [-10000, 0] default: -1000 mB + LONG lRoomHF; // [-10000, 0] default: 0 mB + FLOAT flRoomRolloffFactor; // [0.0, 10.0] default: 0.0 + FLOAT flDecayTime; // [0.1, 20.0] default: 1.49s + FLOAT flDecayHFRatio; // [0.1, 2.0] default: 0.83 + LONG lReflections; // [-10000, 1000] default: -2602 mB + FLOAT flReflectionsDelay; // [0.0, 0.3] default: 0.007 s + LONG lReverb; // [-10000, 2000] default: 200 mB + FLOAT flReverbDelay; // [0.0, 0.1] default: 0.011 s + FLOAT flDiffusion; // [0.0, 100.0] default: 100.0 % + FLOAT flDensity; // [0.0, 100.0] default: 100.0 % + FLOAT flHFReference; // [20.0, 20000.0] default: 5000.0 Hz +} DSFXI3DL2Reverb, *LPDSFXI3DL2Reverb; + +typedef const DSFXI3DL2Reverb *LPCDSFXI3DL2Reverb; + +#define DSFX_I3DL2REVERB_ROOM_MIN (-10000) +#define DSFX_I3DL2REVERB_ROOM_MAX 0 +#define DSFX_I3DL2REVERB_ROOM_DEFAULT (-1000) + +#define DSFX_I3DL2REVERB_ROOMHF_MIN (-10000) +#define DSFX_I3DL2REVERB_ROOMHF_MAX 0 +#define DSFX_I3DL2REVERB_ROOMHF_DEFAULT (-100) + +#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN 0.0f +#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX 10.0f +#define DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT 0.0f + +#define DSFX_I3DL2REVERB_DECAYTIME_MIN 0.1f +#define DSFX_I3DL2REVERB_DECAYTIME_MAX 20.0f +#define DSFX_I3DL2REVERB_DECAYTIME_DEFAULT 1.49f + +#define DSFX_I3DL2REVERB_DECAYHFRATIO_MIN 0.1f +#define DSFX_I3DL2REVERB_DECAYHFRATIO_MAX 2.0f +#define DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT 0.83f + +#define DSFX_I3DL2REVERB_REFLECTIONS_MIN (-10000) +#define DSFX_I3DL2REVERB_REFLECTIONS_MAX 1000 +#define DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT (-2602) + +#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN 0.0f +#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX 0.3f +#define DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT 0.007f + +#define DSFX_I3DL2REVERB_REVERB_MIN (-10000) +#define DSFX_I3DL2REVERB_REVERB_MAX 2000 +#define DSFX_I3DL2REVERB_REVERB_DEFAULT (200) + +#define DSFX_I3DL2REVERB_REVERBDELAY_MIN 0.0f +#define DSFX_I3DL2REVERB_REVERBDELAY_MAX 0.1f +#define DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT 0.011f + +#define DSFX_I3DL2REVERB_DIFFUSION_MIN 0.0f +#define DSFX_I3DL2REVERB_DIFFUSION_MAX 100.0f +#define DSFX_I3DL2REVERB_DIFFUSION_DEFAULT 100.0f + +#define DSFX_I3DL2REVERB_DENSITY_MIN 0.0f +#define DSFX_I3DL2REVERB_DENSITY_MAX 100.0f +#define DSFX_I3DL2REVERB_DENSITY_DEFAULT 100.0f + +#define DSFX_I3DL2REVERB_HFREFERENCE_MIN 20.0f +#define DSFX_I3DL2REVERB_HFREFERENCE_MAX 20000.0f +#define DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT 5000.0f + +#define DSFX_I3DL2REVERB_QUALITY_MIN 0 +#define DSFX_I3DL2REVERB_QUALITY_MAX 3 +#define DSFX_I3DL2REVERB_QUALITY_DEFAULT 2 + +#undef INTERFACE +#define INTERFACE IDirectSoundFXI3DL2Reverb + +DECLARE_INTERFACE_(IDirectSoundFXI3DL2Reverb, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXI3DL2Reverb methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXI3DL2Reverb pcDsFxI3DL2Reverb) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXI3DL2Reverb pDsFxI3DL2Reverb) PURE; + STDMETHOD(SetPreset) (THIS_ DWORD dwPreset) PURE; + STDMETHOD(GetPreset) (THIS_ LPDWORD pdwPreset) PURE; + STDMETHOD(SetQuality) (THIS_ LONG lQuality) PURE; + STDMETHOD(GetQuality) (THIS_ LONG *plQuality) PURE; +}; + +#define IDirectSoundFXI3DL2Reverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXI3DL2Reverb_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXI3DL2Reverb_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->lpVtbl->SetPreset(p,a) +#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->lpVtbl->GetPreset(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXI3DL2Reverb_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXI3DL2Reverb_GetAllParameters(p,a) (p)->GetAllParameters(a) +#define IDirectSoundFXI3DL2Reverb_SetPreset(p,a) (p)->SetPreset(a) +#define IDirectSoundFXI3DL2Reverb_GetPreset(p,a) (p)->GetPreset(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundFXWavesReverb +// + +DEFINE_GUID(IID_IDirectSoundFXWavesReverb,0x46858c3a,0x0dc6,0x45e3,0xb7,0x60,0xd4,0xee,0xf1,0x6c,0xb3,0x25); + +typedef struct _DSFXWavesReverb +{ + FLOAT fInGain; // [-96.0,0.0] default: 0.0 dB + FLOAT fReverbMix; // [-96.0,0.0] default: 0.0 db + FLOAT fReverbTime; // [0.001,3000.0] default: 1000.0 ms + FLOAT fHighFreqRTRatio; // [0.001,0.999] default: 0.001 +} DSFXWavesReverb, *LPDSFXWavesReverb; + +typedef const DSFXWavesReverb *LPCDSFXWavesReverb; + +#define DSFX_WAVESREVERB_INGAIN_MIN -96.0f +#define DSFX_WAVESREVERB_INGAIN_MAX 0.0f +#define DSFX_WAVESREVERB_INGAIN_DEFAULT 0.0f +#define DSFX_WAVESREVERB_REVERBMIX_MIN -96.0f +#define DSFX_WAVESREVERB_REVERBMIX_MAX 0.0f +#define DSFX_WAVESREVERB_REVERBMIX_DEFAULT 0.0f +#define DSFX_WAVESREVERB_REVERBTIME_MIN 0.001f +#define DSFX_WAVESREVERB_REVERBTIME_MAX 3000.0f +#define DSFX_WAVESREVERB_REVERBTIME_DEFAULT 1000.0f +#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN 0.001f +#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX 0.999f +#define DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT 0.001f + +#undef INTERFACE +#define INTERFACE IDirectSoundFXWavesReverb + +DECLARE_INTERFACE_(IDirectSoundFXWavesReverb, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFXWavesReverb methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSFXWavesReverb pcDsFxWavesReverb) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSFXWavesReverb pDsFxWavesReverb) PURE; +}; + +#define IDirectSoundFXWavesReverb_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFXWavesReverb_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFXWavesReverb_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFXWavesReverb_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundFXWavesReverb_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +// +// IDirectSoundCaptureFXAec +// + +DEFINE_GUID(IID_IDirectSoundCaptureFXAec, 0xad74143d, 0x903d, 0x4ab7, 0x80, 0x66, 0x28, 0xd3, 0x63, 0x03, 0x6d, 0x65); + +typedef struct _DSCFXAec +{ + BOOL fEnable; + BOOL fNoiseFill; + DWORD dwMode; +} DSCFXAec, *LPDSCFXAec; + +typedef const DSCFXAec *LPCDSCFXAec; + +// These match the AEC_MODE_* constants in the DDK's ksmedia.h file +#define DSCFX_AEC_MODE_PASS_THROUGH 0x0 +#define DSCFX_AEC_MODE_HALF_DUPLEX 0x1 +#define DSCFX_AEC_MODE_FULL_DUPLEX 0x2 + +// These match the AEC_STATUS_* constants in ksmedia.h +#define DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED 0x0 +#define DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED 0x1 +#define DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED 0x2 +#define DSCFX_AEC_STATUS_CURRENTLY_CONVERGED 0x8 + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureFXAec + +DECLARE_INTERFACE_(IDirectSoundCaptureFXAec, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureFXAec methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXAec pDscFxAec) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSCFXAec pDscFxAec) PURE; + STDMETHOD(GetStatus) (THIS_ PDWORD pdwStatus) PURE; + STDMETHOD(Reset) (THIS) PURE; +}; + +#define IDirectSoundCaptureFXAec_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureFXAec_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureFXAec_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXAec_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundCaptureFXAec_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + + +// +// IDirectSoundCaptureFXNoiseSuppress +// + +DEFINE_GUID(IID_IDirectSoundCaptureFXNoiseSuppress, 0xed311e41, 0xfbae, 0x4175, 0x96, 0x25, 0xcd, 0x8, 0x54, 0xf6, 0x93, 0xca); + +typedef struct _DSCFXNoiseSuppress +{ + BOOL fEnable; +} DSCFXNoiseSuppress, *LPDSCFXNoiseSuppress; + +typedef const DSCFXNoiseSuppress *LPCDSCFXNoiseSuppress; + +#undef INTERFACE +#define INTERFACE IDirectSoundCaptureFXNoiseSuppress + +DECLARE_INTERFACE_(IDirectSoundCaptureFXNoiseSuppress, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundCaptureFXNoiseSuppress methods + STDMETHOD(SetAllParameters) (THIS_ LPCDSCFXNoiseSuppress pcDscFxNoiseSuppress) PURE; + STDMETHOD(GetAllParameters) (THIS_ LPDSCFXNoiseSuppress pDscFxNoiseSuppress) PURE; + STDMETHOD(Reset) (THIS) PURE; +}; + +#define IDirectSoundCaptureFXNoiseSuppress_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundCaptureFXNoiseSuppress_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundCaptureFXNoiseSuppress_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->lpVtbl->SetAllParameters(p,a) +#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->lpVtbl->GetAllParameters(p,a) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundCaptureFXNoiseSuppress_SetAllParameters(p,a) (p)->SetAllParameters(a) +#define IDirectSoundCaptureFXNoiseSuppress_GetAllParameters(p,a) (p)->GetAllParameters(a) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + + +// +// IDirectSoundFullDuplex +// + +#ifndef _IDirectSoundFullDuplex_ +#define _IDirectSoundFullDuplex_ + +#ifdef __cplusplus +// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined +struct IDirectSoundFullDuplex; +#endif // __cplusplus + +typedef struct IDirectSoundFullDuplex *LPDIRECTSOUNDFULLDUPLEX; + +DEFINE_GUID(IID_IDirectSoundFullDuplex, 0xedcb4c7a, 0xdaab, 0x4216, 0xa4, 0x2e, 0x6c, 0x50, 0x59, 0x6d, 0xdc, 0x1d); + +#undef INTERFACE +#define INTERFACE IDirectSoundFullDuplex + +DECLARE_INTERFACE_(IDirectSoundFullDuplex, IUnknown) +{ + // IUnknown methods + STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + // IDirectSoundFullDuplex methods + STDMETHOD(Initialize) (THIS_ LPCGUID pCaptureGuid, LPCGUID pRenderGuid, LPCDSCBUFFERDESC lpDscBufferDesc, LPCDSBUFFERDESC lpDsBufferDesc, HWND hWnd, DWORD dwLevel, LPLPDIRECTSOUNDCAPTUREBUFFER8 lplpDirectSoundCaptureBuffer8, LPLPDIRECTSOUNDBUFFER8 lplpDirectSoundBuffer8) PURE; +}; + +#define IDirectSoundFullDuplex_QueryInterface(p,a,b) IUnknown_QueryInterface(p,a,b) +#define IDirectSoundFullDuplex_AddRef(p) IUnknown_AddRef(p) +#define IDirectSoundFullDuplex_Release(p) IUnknown_Release(p) + +#if !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Initialize(p,a,b,c,d,e,f,g,h) +#else // !defined(__cplusplus) || defined(CINTERFACE) +#define IDirectSoundFullDuplex_Initialize(p,a,b,c,d,e,f,g,h) (p)->Initialize(a,b,c,d,e,f,g,h) +#endif // !defined(__cplusplus) || defined(CINTERFACE) + +#endif // _IDirectSoundFullDuplex_ + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +// +// Return Codes +// + +// The function completed successfully +#define DS_OK S_OK + +// The call succeeded, but we had to substitute the 3D algorithm +#define DS_NO_VIRTUALIZATION MAKE_HRESULT(0, _FACDS, 10) + +// The call failed because resources (such as a priority level) +// were already being used by another caller +#define DSERR_ALLOCATED MAKE_DSHRESULT(10) + +// The control (vol, pan, etc.) requested by the caller is not available +#define DSERR_CONTROLUNAVAIL MAKE_DSHRESULT(30) + +// An invalid parameter was passed to the returning function +#define DSERR_INVALIDPARAM E_INVALIDARG + +// This call is not valid for the current state of this object +#define DSERR_INVALIDCALL MAKE_DSHRESULT(50) + +// An undetermined error occurred inside the DirectSound subsystem +#define DSERR_GENERIC E_FAIL + +// The caller does not have the priority level required for the function to +// succeed +#define DSERR_PRIOLEVELNEEDED MAKE_DSHRESULT(70) + +// Not enough free memory is available to complete the operation +#define DSERR_OUTOFMEMORY E_OUTOFMEMORY + +// The specified WAVE format is not supported +#define DSERR_BADFORMAT MAKE_DSHRESULT(100) + +// The function called is not supported at this time +#define DSERR_UNSUPPORTED E_NOTIMPL + +// No sound driver is available for use +#define DSERR_NODRIVER MAKE_DSHRESULT(120) + +// This object is already initialized +#define DSERR_ALREADYINITIALIZED MAKE_DSHRESULT(130) + +// This object does not support aggregation +#define DSERR_NOAGGREGATION CLASS_E_NOAGGREGATION + +// The buffer memory has been lost, and must be restored +#define DSERR_BUFFERLOST MAKE_DSHRESULT(150) + +// Another app has a higher priority level, preventing this call from +// succeeding +#define DSERR_OTHERAPPHASPRIO MAKE_DSHRESULT(160) + +// This object has not been initialized +#define DSERR_UNINITIALIZED MAKE_DSHRESULT(170) + +// The requested COM interface is not available +#define DSERR_NOINTERFACE E_NOINTERFACE + +// Access is denied +#define DSERR_ACCESSDENIED E_ACCESSDENIED + +// Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds +#define DSERR_BUFFERTOOSMALL MAKE_DSHRESULT(180) + +// Attempt to use DirectSound 8 functionality on an older DirectSound object +#define DSERR_DS8_REQUIRED MAKE_DSHRESULT(190) + +// A circular loop of send effects was detected +#define DSERR_SENDLOOP MAKE_DSHRESULT(200) + +// The GUID specified in an audiopath file does not match a valid MIXIN buffer +#define DSERR_BADSENDBUFFERGUID MAKE_DSHRESULT(210) + +// The object requested was not found (numerically equal to DMUS_E_NOT_FOUND) +#define DSERR_OBJECTNOTFOUND MAKE_DSHRESULT(4449) + +// The effects requested could not be found on the system, or they were found +// but in the wrong order, or in the wrong hardware/software locations. +#define DSERR_FXUNAVAILABLE MAKE_DSHRESULT(220) + +// +// Flags +// + +#define DSCAPS_PRIMARYMONO 0x00000001 +#define DSCAPS_PRIMARYSTEREO 0x00000002 +#define DSCAPS_PRIMARY8BIT 0x00000004 +#define DSCAPS_PRIMARY16BIT 0x00000008 +#define DSCAPS_CONTINUOUSRATE 0x00000010 +#define DSCAPS_EMULDRIVER 0x00000020 +#define DSCAPS_CERTIFIED 0x00000040 +#define DSCAPS_SECONDARYMONO 0x00000100 +#define DSCAPS_SECONDARYSTEREO 0x00000200 +#define DSCAPS_SECONDARY8BIT 0x00000400 +#define DSCAPS_SECONDARY16BIT 0x00000800 + +#define DSSCL_NORMAL 0x00000001 +#define DSSCL_PRIORITY 0x00000002 +#define DSSCL_EXCLUSIVE 0x00000003 +#define DSSCL_WRITEPRIMARY 0x00000004 + +#define DSSPEAKER_DIRECTOUT 0x00000000 +#define DSSPEAKER_HEADPHONE 0x00000001 +#define DSSPEAKER_MONO 0x00000002 +#define DSSPEAKER_QUAD 0x00000003 +#define DSSPEAKER_STEREO 0x00000004 +#define DSSPEAKER_SURROUND 0x00000005 +#define DSSPEAKER_5POINT1 0x00000006 +#define DSSPEAKER_7POINT1 0x00000007 + +#define DSSPEAKER_GEOMETRY_MIN 0x00000005 // 5 degrees +#define DSSPEAKER_GEOMETRY_NARROW 0x0000000A // 10 degrees +#define DSSPEAKER_GEOMETRY_WIDE 0x00000014 // 20 degrees +#define DSSPEAKER_GEOMETRY_MAX 0x000000B4 // 180 degrees + +#define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) +#define DSSPEAKER_CONFIG(a) ((BYTE)(a)) +#define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) + +#define DSBCAPS_PRIMARYBUFFER 0x00000001 +#define DSBCAPS_STATIC 0x00000002 +#define DSBCAPS_LOCHARDWARE 0x00000004 +#define DSBCAPS_LOCSOFTWARE 0x00000008 +#define DSBCAPS_CTRL3D 0x00000010 +#define DSBCAPS_CTRLFREQUENCY 0x00000020 +#define DSBCAPS_CTRLPAN 0x00000040 +#define DSBCAPS_CTRLVOLUME 0x00000080 +#define DSBCAPS_CTRLPOSITIONNOTIFY 0x00000100 +#define DSBCAPS_CTRLFX 0x00000200 +#define DSBCAPS_STICKYFOCUS 0x00004000 +#define DSBCAPS_GLOBALFOCUS 0x00008000 +#define DSBCAPS_GETCURRENTPOSITION2 0x00010000 +#define DSBCAPS_MUTE3DATMAXDISTANCE 0x00020000 +#define DSBCAPS_LOCDEFER 0x00040000 + +#define DSBPLAY_LOOPING 0x00000001 +#define DSBPLAY_LOCHARDWARE 0x00000002 +#define DSBPLAY_LOCSOFTWARE 0x00000004 +#define DSBPLAY_TERMINATEBY_TIME 0x00000008 +#define DSBPLAY_TERMINATEBY_DISTANCE 0x000000010 +#define DSBPLAY_TERMINATEBY_PRIORITY 0x000000020 + +#define DSBSTATUS_PLAYING 0x00000001 +#define DSBSTATUS_BUFFERLOST 0x00000002 +#define DSBSTATUS_LOOPING 0x00000004 +#define DSBSTATUS_LOCHARDWARE 0x00000008 +#define DSBSTATUS_LOCSOFTWARE 0x00000010 +#define DSBSTATUS_TERMINATED 0x00000020 + +#define DSBLOCK_FROMWRITECURSOR 0x00000001 +#define DSBLOCK_ENTIREBUFFER 0x00000002 + +#define DSBFREQUENCY_ORIGINAL 0 +#define DSBFREQUENCY_MIN 100 +#if DIRECTSOUND_VERSION >= 0x0900 +#define DSBFREQUENCY_MAX 200000 +#else +#define DSBFREQUENCY_MAX 100000 +#endif + +#define DSBPAN_LEFT -10000 +#define DSBPAN_CENTER 0 +#define DSBPAN_RIGHT 10000 + +#define DSBVOLUME_MIN -10000 +#define DSBVOLUME_MAX 0 + +#define DSBSIZE_MIN 4 +#define DSBSIZE_MAX 0x0FFFFFFF +#define DSBSIZE_FX_MIN 150 // NOTE: Milliseconds, not bytes + +#define DS3DMODE_NORMAL 0x00000000 +#define DS3DMODE_HEADRELATIVE 0x00000001 +#define DS3DMODE_DISABLE 0x00000002 + +#define DS3D_IMMEDIATE 0x00000000 +#define DS3D_DEFERRED 0x00000001 + +#define DS3D_MINDISTANCEFACTOR FLT_MIN +#define DS3D_MAXDISTANCEFACTOR FLT_MAX +#define DS3D_DEFAULTDISTANCEFACTOR 1.0f + +#define DS3D_MINROLLOFFFACTOR 0.0f +#define DS3D_MAXROLLOFFFACTOR 10.0f +#define DS3D_DEFAULTROLLOFFFACTOR 1.0f + +#define DS3D_MINDOPPLERFACTOR 0.0f +#define DS3D_MAXDOPPLERFACTOR 10.0f +#define DS3D_DEFAULTDOPPLERFACTOR 1.0f + +#define DS3D_DEFAULTMINDISTANCE 1.0f +#define DS3D_DEFAULTMAXDISTANCE 1000000000.0f + +#define DS3D_MINCONEANGLE 0 +#define DS3D_MAXCONEANGLE 360 +#define DS3D_DEFAULTCONEANGLE 360 + +#define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX + +// IDirectSoundCapture attributes + +#define DSCCAPS_EMULDRIVER DSCAPS_EMULDRIVER +#define DSCCAPS_CERTIFIED DSCAPS_CERTIFIED +#define DSCCAPS_MULTIPLECAPTURE 0x00000001 + +// IDirectSoundCaptureBuffer attributes + +#define DSCBCAPS_WAVEMAPPED 0x80000000 + +#if DIRECTSOUND_VERSION >= 0x0800 +#define DSCBCAPS_CTRLFX 0x00000200 +#endif + + +#define DSCBLOCK_ENTIREBUFFER 0x00000001 + +#define DSCBSTATUS_CAPTURING 0x00000001 +#define DSCBSTATUS_LOOPING 0x00000002 + +#define DSCBSTART_LOOPING 0x00000001 + +#define DSBPN_OFFSETSTOP 0xFFFFFFFF + +#define DS_CERTIFIED 0x00000000 +#define DS_UNCERTIFIED 0x00000001 + + +// +// Flags for the I3DL2 effects +// + +// +// I3DL2 Material Presets +// + +enum +{ + DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW, + DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW, + DSFX_I3DL2_MATERIAL_PRESET_THINDOOR, + DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR, + DSFX_I3DL2_MATERIAL_PRESET_WOODWALL, + DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL, + DSFX_I3DL2_MATERIAL_PRESET_STONEWALL, + DSFX_I3DL2_MATERIAL_PRESET_CURTAIN +}; + +#define I3DL2_MATERIAL_PRESET_SINGLEWINDOW -2800,0.71f +#define I3DL2_MATERIAL_PRESET_DOUBLEWINDOW -5000,0.40f +#define I3DL2_MATERIAL_PRESET_THINDOOR -1800,0.66f +#define I3DL2_MATERIAL_PRESET_THICKDOOR -4400,0.64f +#define I3DL2_MATERIAL_PRESET_WOODWALL -4000,0.50f +#define I3DL2_MATERIAL_PRESET_BRICKWALL -5000,0.60f +#define I3DL2_MATERIAL_PRESET_STONEWALL -6000,0.68f +#define I3DL2_MATERIAL_PRESET_CURTAIN -1200,0.15f + +enum +{ + DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT, + DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC, + DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL, + DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM, + DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL, + DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE, + DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA, + DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR, + DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY, + DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY, + DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR, + DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY, + DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST, + DSFX_I3DL2_ENVIRONMENT_PRESET_CITY, + DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS, + DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY, + DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN, + DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT, + DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE, + DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER, + DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM, + DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL, + DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL, + DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE +}; + +// +// I3DL2 Reverberation Presets Values +// + +#define I3DL2_ENVIRONMENT_PRESET_DEFAULT -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_GENERIC -1000, -100, 0.0f, 1.49f, 0.83f, -2602, 0.007f, 200, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PADDEDCELL -1000,-6000, 0.0f, 0.17f, 0.10f, -1204, 0.001f, 207, 0.002f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_ROOM -1000, -454, 0.0f, 0.40f, 0.83f, -1646, 0.002f, 53, 0.003f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_BATHROOM -1000,-1200, 0.0f, 1.49f, 0.54f, -370, 0.007f, 1030, 0.011f, 100.0f, 60.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_LIVINGROOM -1000,-6000, 0.0f, 0.50f, 0.10f, -1376, 0.003f, -1104, 0.004f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_STONEROOM -1000, -300, 0.0f, 2.31f, 0.64f, -711, 0.012f, 83, 0.017f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_AUDITORIUM -1000, -476, 0.0f, 4.32f, 0.59f, -789, 0.020f, -289, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CONCERTHALL -1000, -500, 0.0f, 3.92f, 0.70f, -1230, 0.020f, -2, 0.029f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CAVE -1000, 0, 0.0f, 2.91f, 1.30f, -602, 0.015f, -302, 0.022f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_ARENA -1000, -698, 0.0f, 7.24f, 0.33f, -1166, 0.020f, 16, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_HANGAR -1000,-1000, 0.0f,10.05f, 0.23f, -602, 0.020f, 198, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY -1000,-4000, 0.0f, 0.30f, 0.10f, -1831, 0.002f, -1630, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_HALLWAY -1000, -300, 0.0f, 1.49f, 0.59f, -1219, 0.007f, 441, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR -1000, -237, 0.0f, 2.70f, 0.79f, -1214, 0.013f, 395, 0.020f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_ALLEY -1000, -270, 0.0f, 1.49f, 0.86f, -1204, 0.007f, -4, 0.011f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_FOREST -1000,-3300, 0.0f, 1.49f, 0.54f, -2560, 0.162f, -613, 0.088f, 79.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_CITY -1000, -800, 0.0f, 1.49f, 0.67f, -2273, 0.007f, -2217, 0.011f, 50.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_MOUNTAINS -1000,-2500, 0.0f, 1.49f, 0.21f, -2780, 0.300f, -2014, 0.100f, 27.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_QUARRY -1000,-1000, 0.0f, 1.49f, 0.83f,-10000, 0.061f, 500, 0.025f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PLAIN -1000,-2000, 0.0f, 1.49f, 0.50f, -2466, 0.179f, -2514, 0.100f, 21.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PARKINGLOT -1000, 0, 0.0f, 1.65f, 1.50f, -1363, 0.008f, -1153, 0.012f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_SEWERPIPE -1000,-1000, 0.0f, 2.81f, 0.14f, 429, 0.014f, 648, 0.021f, 80.0f, 60.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_UNDERWATER -1000,-4000, 0.0f, 1.49f, 0.10f, -449, 0.007f, 1700, 0.011f, 100.0f, 100.0f, 5000.0f + +// +// Examples simulating 'musical' reverb presets +// +// Name Decay time Description +// Small Room 1.1s A small size room with a length of 5m or so. +// Medium Room 1.3s A medium size room with a length of 10m or so. +// Large Room 1.5s A large size room suitable for live performances. +// Medium Hall 1.8s A medium size concert hall. +// Large Hall 1.8s A large size concert hall suitable for a full orchestra. +// Plate 1.3s A plate reverb simulation. +// + +#define I3DL2_ENVIRONMENT_PRESET_SMALLROOM -1000, -600, 0.0f, 1.10f, 0.83f, -400, 0.005f, 500, 0.010f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM -1000, -600, 0.0f, 1.30f, 0.83f, -1000, 0.010f, -200, 0.020f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_LARGEROOM -1000, -600, 0.0f, 1.50f, 0.83f, -1600, 0.020f, -1000, 0.040f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL -1000, -600, 0.0f, 1.80f, 0.70f, -1300, 0.015f, -800, 0.030f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_LARGEHALL -1000, -600, 0.0f, 1.80f, 0.70f, -2000, 0.030f, -1400, 0.060f, 100.0f, 100.0f, 5000.0f +#define I3DL2_ENVIRONMENT_PRESET_PLATE -1000, -200, 0.0f, 1.30f, 0.90f, 0, 0.002f, 0, 0.010f, 100.0f, 75.0f, 5000.0f + +// +// DirectSound3D Algorithms +// + +// Default DirectSound3D algorithm {00000000-0000-0000-0000-000000000000} +#define DS3DALG_DEFAULT GUID_NULL + +// No virtualization (Pan3D) {C241333F-1C1B-11d2-94F5-00C04FC28ACA} +DEFINE_GUID(DS3DALG_NO_VIRTUALIZATION, 0xc241333f, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +// High-quality HRTF algorithm {C2413340-1C1B-11d2-94F5-00C04FC28ACA} +DEFINE_GUID(DS3DALG_HRTF_FULL, 0xc2413340, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + +// Lower-quality HRTF algorithm {C2413342-1C1B-11d2-94F5-00C04FC28ACA} +DEFINE_GUID(DS3DALG_HRTF_LIGHT, 0xc2413342, 0x1c1b, 0x11d2, 0x94, 0xf5, 0x0, 0xc0, 0x4f, 0xc2, 0x8a, 0xca); + + +#if DIRECTSOUND_VERSION >= 0x0800 + +// +// DirectSound Internal Effect Algorithms +// + + +// Gargle {DAFD8210-5711-4B91-9FE3-F75B7AE279BF} +DEFINE_GUID(GUID_DSFX_STANDARD_GARGLE, 0xdafd8210, 0x5711, 0x4b91, 0x9f, 0xe3, 0xf7, 0x5b, 0x7a, 0xe2, 0x79, 0xbf); + +// Chorus {EFE6629C-81F7-4281-BD91-C9D604A95AF6} +DEFINE_GUID(GUID_DSFX_STANDARD_CHORUS, 0xefe6629c, 0x81f7, 0x4281, 0xbd, 0x91, 0xc9, 0xd6, 0x04, 0xa9, 0x5a, 0xf6); + +// Flanger {EFCA3D92-DFD8-4672-A603-7420894BAD98} +DEFINE_GUID(GUID_DSFX_STANDARD_FLANGER, 0xefca3d92, 0xdfd8, 0x4672, 0xa6, 0x03, 0x74, 0x20, 0x89, 0x4b, 0xad, 0x98); + +// Echo/Delay {EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D} +DEFINE_GUID(GUID_DSFX_STANDARD_ECHO, 0xef3e932c, 0xd40b, 0x4f51, 0x8c, 0xcf, 0x3f, 0x98, 0xf1, 0xb2, 0x9d, 0x5d); + +// Distortion {EF114C90-CD1D-484E-96E5-09CFAF912A21} +DEFINE_GUID(GUID_DSFX_STANDARD_DISTORTION, 0xef114c90, 0xcd1d, 0x484e, 0x96, 0xe5, 0x09, 0xcf, 0xaf, 0x91, 0x2a, 0x21); + +// Compressor/Limiter {EF011F79-4000-406D-87AF-BFFB3FC39D57} +DEFINE_GUID(GUID_DSFX_STANDARD_COMPRESSOR, 0xef011f79, 0x4000, 0x406d, 0x87, 0xaf, 0xbf, 0xfb, 0x3f, 0xc3, 0x9d, 0x57); + +// Parametric Equalization {120CED89-3BF4-4173-A132-3CB406CF3231} +DEFINE_GUID(GUID_DSFX_STANDARD_PARAMEQ, 0x120ced89, 0x3bf4, 0x4173, 0xa1, 0x32, 0x3c, 0xb4, 0x06, 0xcf, 0x32, 0x31); + +// I3DL2 Environmental Reverberation: Reverb (Listener) Effect {EF985E71-D5C7-42D4-BA4D-2D073E2E96F4} +DEFINE_GUID(GUID_DSFX_STANDARD_I3DL2REVERB, 0xef985e71, 0xd5c7, 0x42d4, 0xba, 0x4d, 0x2d, 0x07, 0x3e, 0x2e, 0x96, 0xf4); + +// Waves Reverberation {87FC0268-9A55-4360-95AA-004A1D9DE26C} +DEFINE_GUID(GUID_DSFX_WAVES_REVERB, 0x87fc0268, 0x9a55, 0x4360, 0x95, 0xaa, 0x00, 0x4a, 0x1d, 0x9d, 0xe2, 0x6c); + +// +// DirectSound Capture Effect Algorithms +// + + +// Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} +// Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h +DEFINE_GUID(GUID_DSCFX_CLASS_AEC, 0xBF963D80L, 0xC559, 0x11D0, 0x8A, 0x2B, 0x00, 0xA0, 0xC9, 0x25, 0x5A, 0xC1); + +// Microsoft AEC {CDEBB919-379A-488a-8765-F53CFD36DE40} +DEFINE_GUID(GUID_DSCFX_MS_AEC, 0xcdebb919, 0x379a, 0x488a, 0x87, 0x65, 0xf5, 0x3c, 0xfd, 0x36, 0xde, 0x40); + +// System AEC {1C22C56D-9879-4f5b-A389-27996DDC2810} +DEFINE_GUID(GUID_DSCFX_SYSTEM_AEC, 0x1c22c56d, 0x9879, 0x4f5b, 0xa3, 0x89, 0x27, 0x99, 0x6d, 0xdc, 0x28, 0x10); + +// Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} +// Matches KSNODETYPE_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h +DEFINE_GUID(GUID_DSCFX_CLASS_NS, 0xe07f903f, 0x62fd, 0x4e60, 0x8c, 0xdd, 0xde, 0xa7, 0x23, 0x66, 0x65, 0xb5); + +// Microsoft Noise Suppresion {11C5C73B-66E9-4ba1-A0BA-E814C6EED92D} +DEFINE_GUID(GUID_DSCFX_MS_NS, 0x11c5c73b, 0x66e9, 0x4ba1, 0xa0, 0xba, 0xe8, 0x14, 0xc6, 0xee, 0xd9, 0x2d); + +// System Noise Suppresion {5AB0882E-7274-4516-877D-4EEE99BA4FD0} +DEFINE_GUID(GUID_DSCFX_SYSTEM_NS, 0x5ab0882e, 0x7274, 0x4516, 0x87, 0x7d, 0x4e, 0xee, 0x99, 0xba, 0x4f, 0xd0); + +#endif // DIRECTSOUND_VERSION >= 0x0800 + +#endif // __DSOUND_INCLUDED__ + + + +#ifdef __cplusplus +}; +#endif // __cplusplus + + diff --git a/libmednahawk/include/Fir_Resampler.h b/libmednahawk/include/Fir_Resampler.h new file mode 100644 index 0000000000..fe1bdf2264 --- /dev/null +++ b/libmednahawk/include/Fir_Resampler.h @@ -0,0 +1,243 @@ +// Finite impulse response (FIR) resampler with adjustable FIR size + +// Game_Music_Emu 0.5.2 +#ifndef FIR_RESAMPLER_H +#define FIR_RESAMPLER_H + +#include "blargg_common.h" +#include + +class Fir_Resampler_ { +public: + + // Use Fir_Resampler (below) + + // Set input/output resampling ratio and optionally low-pass rolloff and gain. + // Returns actual ratio used (rounded to internal precision). + double time_ratio( double factor, double rolloff = 0.999, double gain = 1.0 ); + + // Current input/output ratio + double ratio() const { return ratio_; } + +// Input + + typedef short sample_t; + + // Resize and clear input buffer + blargg_err_t buffer_size( int ); + + // Clear input buffer. At least two output samples will be available after + // two input samples are written. + void clear(); + + // Number of input samples that can be written + int max_write() const { return buf.end() - write_pos; } + + // Pointer to place to write input samples + sample_t* buffer() { return write_pos; } + + // Notify resampler that 'count' input samples have been written + void write( long count ); + + // Number of input samples in buffer + int written() const { return write_pos - &buf [write_offset]; } + + // Skip 'count' input samples. Returns number of samples actually skipped. + int skip_input( long count ); + +// Output + + // Number of extra input samples needed until 'count' output samples are available + int input_needed( blargg_long count ) const; + + // Number of output samples available + int avail() const { return avail_( write_pos - &buf [width_ * stereo] ); } + +public: + ~Fir_Resampler_(); +protected: + enum { stereo = 2 }; + enum { max_res = 32 }; + blargg_vector buf; + sample_t* write_pos; + int res; + int imp_phase; + int const width_; + int const write_offset; + blargg_ulong skip_bits; + int step; + int input_per_cycle; + double ratio_; + sample_t* impulses; + + Fir_Resampler_( int width, sample_t* ); + int avail_( blargg_long input_count ) const; +}; + +// Width is number of points in FIR. Must be even and 4 or more. More points give +// better quality and rolloff effectiveness, and take longer to calculate. +template +class Fir_Resampler : public Fir_Resampler_ { + BOOST_STATIC_ASSERT( width >= 4 && width % 2 == 0 ); + short impulses [max_res] [width]; +public: + Fir_Resampler() : Fir_Resampler_( width, impulses [0] ) { } + + // Read at most 'count' samples. Returns number of samples actually read. + typedef short sample_t; + int read( sample_t* out, blargg_long count ); + + int read_mono_hack( sample_t* out, blargg_long count ); +}; + +// End of public interface + +inline void Fir_Resampler_::write( long count ) +{ + write_pos += count; + assert( write_pos <= buf.end() ); +} + +template +int Fir_Resampler::read( sample_t* out_begin, blargg_long count ) +{ + sample_t* out = out_begin; + const sample_t* in = buf.begin(); + sample_t* end_pos = write_pos; + blargg_ulong skip = skip_bits >> imp_phase; + sample_t const* imp = impulses [imp_phase]; + int remain = res - imp_phase; + int const local_step = this->step; + + count >>= 1; + + if ( end_pos - in >= width * stereo ) + { + end_pos -= width * stereo; + do + { + count--; + + // accumulate in extended precision + blargg_long l = 0; + blargg_long r = 0; + + const sample_t* i = in; + if ( count < 0 ) + break; + + for ( int n = width / 2; n; --n ) + { + int pt0 = imp [0]; + l += pt0 * i [0]; + r += pt0 * i [1]; + int pt1 = imp [1]; + imp += 2; + l += pt1 * i [2]; + r += pt1 * i [3]; + i += 4; + } + + remain--; + + l >>= 15; + r >>= 15; + + in += (skip * stereo) & stereo; + skip >>= 1; + in += local_step; + + if ( !remain ) + { + imp = impulses [0]; + skip = skip_bits; + remain = res; + } + + out [0] = (sample_t) l; + out [1] = (sample_t) r; + out += 2; + } + while ( in <= end_pos ); + } + + imp_phase = res - remain; + + int left = write_pos - in; + write_pos = &buf [left]; + memmove( buf.begin(), in, left * sizeof *in ); + + return out - out_begin; +} +#include +template +int Fir_Resampler::read_mono_hack( sample_t* out_begin, blargg_long count ) +{ + sample_t* out = out_begin; + const sample_t* in = buf.begin(); + sample_t* end_pos = write_pos; + blargg_ulong skip = skip_bits >> imp_phase; + sample_t const* imp = impulses [imp_phase]; + int remain = res - imp_phase; + int const local_step = this->step; + + count >>= 1; + + if ( end_pos - in >= width * stereo ) + { + end_pos -= width * stereo; + do + { + count--; + + // accumulate in extended precision + blargg_long l = 0; + + const sample_t* i = in; + if ( count < 0 ) + break; + + for ( int n = width / 2; n; --n ) + { + int pt0 = imp [0]; + l += pt0 * i [0]; + + int pt1 = imp [1]; + imp += 2; + l += pt1 * i [2]; + + i += 4; + } + + remain--; + + l >>= 15; + + in += (skip * stereo) & stereo; + skip >>= 1; + in += local_step; + + if ( !remain ) + { + imp = impulses [0]; + skip = skip_bits; + remain = res; + } + + *out = (sample_t) l; + out ++; + } + while ( in <= end_pos ); + } + + imp_phase = res - remain; + + int left = write_pos - in; + write_pos = &buf [left]; + memmove( buf.begin(), in, left * sizeof *in ); + + return out - out_begin; +} + + +#endif diff --git a/libmednahawk/include/blargg_common.h b/libmednahawk/include/blargg_common.h new file mode 100644 index 0000000000..ab580a567c --- /dev/null +++ b/libmednahawk/include/blargg_common.h @@ -0,0 +1,175 @@ +// Sets up common environment for Shay Green's libraries. +// To change configuration options, modify blargg_config.h, not this file. + +#ifndef BLARGG_COMMON_H +#define BLARGG_COMMON_H + +#include +#include +#include +#include + +#undef BLARGG_COMMON_H +// allow blargg_config.h to #include blargg_common.h +#include "blargg_config.h" +#ifndef BLARGG_COMMON_H +#define BLARGG_COMMON_H + +// STATIC_CAST(T,expr): Used in place of static_cast (expr) +#ifndef STATIC_CAST + #define STATIC_CAST(T,expr) ((T) (expr)) +#endif + +// blargg_err_t (0 on success, otherwise error string) +#ifndef blargg_err_t + typedef const char* blargg_err_t; +#endif + +// blargg_vector - very lightweight vector of POD types (no constructor/destructor) +template +class blargg_vector { + T* begin_; + size_t size_; +public: + blargg_vector() : begin_( 0 ), size_( 0 ) { } + ~blargg_vector() { free( begin_ ); } + size_t size() const { return size_; } + T* begin() const { return begin_; } + T* end() const { return begin_ + size_; } + blargg_err_t resize( size_t n ) + { + void* p = realloc( begin_, n * sizeof (T) ); + if ( !p && n ) + return "Out of memory"; + begin_ = (T*) p; + size_ = n; + return 0; + } + void clear() { void* p = begin_; begin_ = 0; size_ = 0; free( p ); } + T& operator [] ( size_t n ) const + { + assert( n <= size_ ); // <= to allow past-the-end value + return begin_ [n]; + } +}; + +#ifndef BLARGG_DISABLE_NOTHROW + #if __cplusplus < 199711 + #define BLARGG_THROWS( spec ) + #else + #define BLARGG_THROWS( spec ) throw spec + #endif + #define BLARGG_DISABLE_NOTHROW \ + void* operator new ( size_t s ) BLARGG_THROWS(()) { return malloc( s ); }\ + void operator delete ( void* p ) { free( p ); } + #define BLARGG_NEW new +#else + #include + #define BLARGG_NEW new (std::nothrow) +#endif + +#define BLARGG_4CHAR( a, b, c, d ) \ + ((a&0xFF)*0x1000000L + (b&0xFF)*0x10000L + (c&0xFF)*0x100L + (d&0xFF)) + +// BOOST_STATIC_ASSERT( expr ): Generates compile error if expr is 0. +#ifndef BOOST_STATIC_ASSERT + #ifdef _MSC_VER + // MSVC6 (_MSC_VER < 1300) fails for use of __LINE__ when /Zl is specified + #define BOOST_STATIC_ASSERT( expr ) \ + void blargg_failed_( int (*arg) [2 / (int) !!(expr) - 1] ) + #else + // Some other compilers fail when declaring same function multiple times in class, + // so differentiate them by line + #define BOOST_STATIC_ASSERT( expr ) \ + void blargg_failed_( int (*arg) [2 / !!(expr) - 1] [__LINE__] ) + #endif +#endif + +// BLARGG_COMPILER_HAS_BOOL: If 0, provides bool support for old compiler. If 1, +// compiler is assumed to support bool. If undefined, availability is determined. +#ifndef BLARGG_COMPILER_HAS_BOOL + #if defined (__MWERKS__) + #if !__option(bool) + #define BLARGG_COMPILER_HAS_BOOL 0 + #endif + #elif defined (_MSC_VER) + #if _MSC_VER < 1100 + #define BLARGG_COMPILER_HAS_BOOL 0 + #endif + #elif defined (__GNUC__) + // supports bool + #elif __cplusplus < 199711 + #define BLARGG_COMPILER_HAS_BOOL 0 + #endif +#endif +#if defined (BLARGG_COMPILER_HAS_BOOL) && !BLARGG_COMPILER_HAS_BOOL + // If you get errors here, modify your blargg_config.h file + typedef int bool; + const bool true = 1; + const bool false = 0; +#endif + +// blargg_long/blargg_ulong = at least 32 bits, int if it's big enough +#include + +#if INT_MAX >= 0x7FFFFFFF + typedef int blargg_long; +#else + typedef long blargg_long; +#endif + +#if UINT_MAX >= 0xFFFFFFFF + typedef unsigned blargg_ulong; +#else + typedef unsigned long blargg_ulong; +#endif + +// BOOST::int8_t etc. + +// HAVE_STDINT_H: If defined, use for int8_t etc. +#if defined (HAVE_STDINT_H) + #include + #define BOOST + +// HAVE_INTTYPES_H: If defined, use for int8_t etc. +#elif defined (HAVE_INTTYPES_H) + #include + #define BOOST + +#else + struct BOOST + { + #if UCHAR_MAX == 0xFF && SCHAR_MAX == 0x7F + typedef signed char int8_t; + typedef unsigned char uint8_t; + #else + // No suitable 8-bit type available + typedef struct see_blargg_common_h int8_t; + typedef struct see_blargg_common_h uint8_t; + #endif + + #if USHRT_MAX == 0xFFFF + typedef short int16_t; + typedef unsigned short uint16_t; + #else + // No suitable 16-bit type available + typedef struct see_blargg_common_h int16_t; + typedef struct see_blargg_common_h uint16_t; + #endif + + #if ULONG_MAX == 0xFFFFFFFF + typedef long int32_t; + typedef unsigned long uint32_t; + #elif UINT_MAX == 0xFFFFFFFF + typedef int int32_t; + typedef unsigned int uint32_t; + #else + // No suitable 32-bit type available + typedef struct see_blargg_common_h int32_t; + typedef struct see_blargg_common_h uint32_t; + #endif + }; +#endif + +#endif +#endif diff --git a/libmednahawk/include/blargg_config.h b/libmednahawk/include/blargg_config.h new file mode 100644 index 0000000000..cb8558b617 --- /dev/null +++ b/libmednahawk/include/blargg_config.h @@ -0,0 +1,30 @@ +// Library configuration. Modify this file as necessary. + +#ifndef BLARGG_CONFIG_H +#define BLARGG_CONFIG_H + +// Uncomment to use zlib for transparent decompression of gzipped files +//#define HAVE_ZLIB_H + +// Uncomment to support only the listed game music types. See gme_type_list.cpp +// for a list of all types. +//#define GME_TYPE_LIST gme_nsf_type, gme_gbs_type + +// Uncomment to enable platform-specific optimizations +//#define BLARGG_NONPORTABLE 1 + +// Uncomment to use faster, lower quality sound synthesis +//#define BLIP_BUFFER_FAST 1 + +// Uncomment if automatic byte-order determination doesn't work +//#define BLARGG_BIG_ENDIAN 1 + +// Uncomment if you get errors in the bool section of blargg_common.h +//#define BLARGG_COMPILER_HAS_BOOL 1 + +// Use standard config.h if present +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#endif diff --git a/libmednahawk/include/blargg_endian.h b/libmednahawk/include/blargg_endian.h new file mode 100644 index 0000000000..0f9f4db727 --- /dev/null +++ b/libmednahawk/include/blargg_endian.h @@ -0,0 +1,158 @@ +// CPU Byte Order Utilities + +// Game_Music_Emu 0.5.2 +#ifndef BLARGG_ENDIAN +#define BLARGG_ENDIAN + +#include "blargg_common.h" + +// BLARGG_CPU_CISC: Defined if CPU has very few general-purpose registers (< 16) +#if defined (_M_IX86) || defined (_M_IA64) || defined (__i486__) || \ + defined (__x86_64__) || defined (__ia64__) || defined (__i386__) + #define BLARGG_CPU_X86 1 + #define BLARGG_CPU_CISC 1 +#endif + +#if defined (__powerpc__) || defined (__ppc__) || defined (__POWERPC__) || defined (__powerc) + #define BLARGG_CPU_POWERPC 1 +#endif + +// BLARGG_BIG_ENDIAN, BLARGG_LITTLE_ENDIAN: Determined automatically, otherwise only +// one may be #defined to 1. Only needed if something actually depends on byte order. +#if !defined (BLARGG_BIG_ENDIAN) && !defined (BLARGG_LITTLE_ENDIAN) +#ifdef __GLIBC__ + // GCC handles this for us + #include + #if __BYTE_ORDER == __LITTLE_ENDIAN + #define BLARGG_LITTLE_ENDIAN 1 + #elif __BYTE_ORDER == __BIG_ENDIAN + #define BLARGG_BIG_ENDIAN 1 + #endif +#else + +#if defined (LSB_FIRST) || defined (__LITTLE_ENDIAN__) || BLARGG_CPU_X86 || \ + (defined (LITTLE_ENDIAN) && LITTLE_ENDIAN+0 != 1234) + #define BLARGG_LITTLE_ENDIAN 1 +#endif + +#if defined (MSB_FIRST) || defined (__BIG_ENDIAN__) || defined (WORDS_BIGENDIAN) || \ + defined (__mips__) || defined (__sparc__) || BLARGG_CPU_POWERPC || \ + (defined (BIG_ENDIAN) && BIG_ENDIAN+0 != 4321) + #define BLARGG_BIG_ENDIAN 1 +#else + // No endian specified; assume little-endian, since it's most common + #define BLARGG_LITTLE_ENDIAN 1 +#endif +#endif +#endif + +#if BLARGG_LITTLE_ENDIAN && BLARGG_BIG_ENDIAN + #undef BLARGG_LITTLE_ENDIAN + #undef BLARGG_BIG_ENDIAN +#endif + +inline void blargg_verify_byte_order() +{ + #ifndef NDEBUG + #if BLARGG_BIG_ENDIAN + volatile int i = 1; + assert( *(volatile char*) &i == 0 ); + #elif BLARGG_LITTLE_ENDIAN + volatile int i = 1; + assert( *(volatile char*) &i != 0 ); + #endif + #endif +} + +inline unsigned get_le16( void const* p ) { + return ((unsigned char const*) p) [1] * 0x100u + + ((unsigned char const*) p) [0]; +} +inline unsigned get_be16( void const* p ) { + return ((unsigned char const*) p) [0] * 0x100u + + ((unsigned char const*) p) [1]; +} +inline blargg_ulong get_le32( void const* p ) { + return ((unsigned char const*) p) [3] * 0x01000000u + + ((unsigned char const*) p) [2] * 0x00010000u + + ((unsigned char const*) p) [1] * 0x00000100u + + ((unsigned char const*) p) [0]; +} +inline blargg_ulong get_be32( void const* p ) { + return ((unsigned char const*) p) [0] * 0x01000000u + + ((unsigned char const*) p) [1] * 0x00010000u + + ((unsigned char const*) p) [2] * 0x00000100u + + ((unsigned char const*) p) [3]; +} +inline void set_le16( void* p, unsigned n ) { + ((unsigned char*) p) [1] = (unsigned char) (n >> 8); + ((unsigned char*) p) [0] = (unsigned char) n; +} +inline void set_be16( void* p, unsigned n ) { + ((unsigned char*) p) [0] = (unsigned char) (n >> 8); + ((unsigned char*) p) [1] = (unsigned char) n; +} +inline void set_le32( void* p, blargg_ulong n ) { + ((unsigned char*) p) [3] = (unsigned char) (n >> 24); + ((unsigned char*) p) [2] = (unsigned char) (n >> 16); + ((unsigned char*) p) [1] = (unsigned char) (n >> 8); + ((unsigned char*) p) [0] = (unsigned char) n; +} +inline void set_be32( void* p, blargg_ulong n ) { + ((unsigned char*) p) [0] = (unsigned char) (n >> 24); + ((unsigned char*) p) [1] = (unsigned char) (n >> 16); + ((unsigned char*) p) [2] = (unsigned char) (n >> 8); + ((unsigned char*) p) [3] = (unsigned char) n; +} + +#if BLARGG_NONPORTABLE + // Optimized implementation if byte order is known + #if BLARGG_LITTLE_ENDIAN + #define GET_LE16( addr ) (*(BOOST::uint16_t*) (addr)) + #define GET_LE32( addr ) (*(BOOST::uint32_t*) (addr)) + #define SET_LE16( addr, data ) (void) (*(BOOST::uint16_t*) (addr) = (data)) + #define SET_LE32( addr, data ) (void) (*(BOOST::uint32_t*) (addr) = (data)) + #elif BLARGG_BIG_ENDIAN + #define GET_BE16( addr ) (*(BOOST::uint16_t*) (addr)) + #define GET_BE32( addr ) (*(BOOST::uint32_t*) (addr)) + #define SET_BE16( addr, data ) (void) (*(BOOST::uint16_t*) (addr) = (data)) + #define SET_BE32( addr, data ) (void) (*(BOOST::uint32_t*) (addr) = (data)) + #endif + + #if BLARGG_CPU_POWERPC && defined (__MWERKS__) + // PowerPC has special byte-reversed instructions + // to do: assumes that PowerPC is running in big-endian mode + // to do: implement for other compilers which don't support these macros + #define GET_LE16( addr ) (__lhbrx( (addr), 0 )) + #define GET_LE32( addr ) (__lwbrx( (addr), 0 )) + #define SET_LE16( addr, data ) (__sthbrx( (data), (addr), 0 )) + #define SET_LE32( addr, data ) (__stwbrx( (data), (addr), 0 )) + #endif +#endif + +#ifndef GET_LE16 + #define GET_LE16( addr ) get_le16( addr ) + #define GET_LE32( addr ) get_le32( addr ) + #define SET_LE16( addr, data ) set_le16( addr, data ) + #define SET_LE32( addr, data ) set_le32( addr, data ) +#endif + +#ifndef GET_BE16 + #define GET_BE16( addr ) get_be16( addr ) + #define GET_BE32( addr ) get_be32( addr ) + #define SET_BE16( addr, data ) set_be16( addr, data ) + #define SET_BE32( addr, data ) set_be32( addr, data ) +#endif + +// auto-selecting versions + +inline void set_le( BOOST::uint16_t* p, unsigned n ) { SET_LE16( p, n ); } +inline void set_le( BOOST::uint32_t* p, blargg_ulong n ) { SET_LE32( p, n ); } +inline void set_be( BOOST::uint16_t* p, unsigned n ) { SET_BE16( p, n ); } +inline void set_be( BOOST::uint32_t* p, blargg_ulong n ) { SET_BE32( p, n ); } +inline unsigned get_le( BOOST::uint16_t* p ) { return GET_LE16( p ); } +inline blargg_ulong get_le( BOOST::uint32_t* p ) { return GET_LE32( p ); } +inline unsigned get_be( BOOST::uint16_t* p ) { return GET_BE16( p ); } +inline blargg_ulong get_be( BOOST::uint32_t* p ) { return GET_BE32( p ); } + +#endif diff --git a/libmednahawk/include/blargg_source.h b/libmednahawk/include/blargg_source.h new file mode 100644 index 0000000000..bb0c0ce948 --- /dev/null +++ b/libmednahawk/include/blargg_source.h @@ -0,0 +1,78 @@ +// Included at the beginning of library source files, after all other #include lines +#ifndef BLARGG_SOURCE_H +#define BLARGG_SOURCE_H + +// If debugging is enabled, abort program if expr is false. Meant for checking +// internal state and consistency. A failed assertion indicates a bug in the module. +// void assert( bool expr ); +#include + +// If debugging is enabled and expr is false, abort program. Meant for checking +// caller-supplied parameters and operations that are outside the control of the +// module. A failed requirement indicates a bug outside the module. +// void require( bool expr ); +#undef require +#define require( expr ) assert( expr ) + +// Like printf() except output goes to debug log file. Might be defined to do +// nothing (not even evaluate its arguments). +// void dprintf( const char* format, ... ); +inline void blargg_dprintf_( const char*, ... ) { } +#undef dprintf +#define dprintf (1) ? (void) 0 : blargg_dprintf_ + +// If enabled, evaluate expr and if false, make debug log entry with source file +// and line. Meant for finding situations that should be examined further, but that +// don't indicate a problem. In all cases, execution continues normally. +#undef check +#define check( expr ) ((void) 0) + +// If expr yields error string, return it from current function, otherwise continue. +#undef RETURN_ERR +#define RETURN_ERR( expr ) do { \ + blargg_err_t blargg_return_err_ = (expr); \ + if ( blargg_return_err_ ) return blargg_return_err_; \ + } while ( 0 ) + +// If ptr is 0, return out of memory error string. +#undef CHECK_ALLOC +#define CHECK_ALLOC( ptr ) do { if ( (ptr) == 0 ) return "Out of memory"; } while ( 0 ) + +// Avoid any macros which evaluate their arguments multiple times +#undef min +#undef max + +// using const references generates crappy code, and I am currenly only using these +// for built-in types, so they take arguments by value + +template +inline T min( T x, T y ) +{ + if ( x < y ) + return x; + return y; +} + +template +inline T max( T x, T y ) +{ + if ( x < y ) + return y; + return x; +} + +// TODO: good idea? bad idea? +#undef byte +#define byte byte_ +typedef unsigned char byte; + +// deprecated +#define BLARGG_CHECK_ALLOC CHECK_ALLOC +#define BLARGG_RETURN_ERR RETURN_ERR + +// BLARGG_SOURCE_BEGIN: If defined, #included, allowing redefition of dprintf and check +#ifdef BLARGG_SOURCE_BEGIN + #include BLARGG_SOURCE_BEGIN +#endif + +#endif diff --git a/libmednahawk/include/blip/Blip_Buffer.h b/libmednahawk/include/blip/Blip_Buffer.h new file mode 100644 index 0000000000..75c7f0c517 --- /dev/null +++ b/libmednahawk/include/blip/Blip_Buffer.h @@ -0,0 +1,498 @@ +// Band-limited sound synthesis buffer +// Various changes and hacks for use in Mednafen. + +#ifdef __GNUC__ + #define blip_inline inline __attribute__((always_inline)) +#else + #define blip_inline inline +#endif + +#include +#include + +// Blip_Buffer 0.4.1 +#ifndef BLIP_BUFFER_H +#define BLIP_BUFFER_H + +// Internal +typedef int32_t blip_long; +typedef uint32_t blip_ulong; +typedef int64_t blip_s64; +typedef uint64_t blip_u64; + +// Time unit at source clock rate +typedef blip_long blip_time_t; + +// Output samples are 16-bit signed, with a range of -32768 to 32767 +typedef short blip_sample_t; +enum { blip_sample_max = 32767 }; + +class Blip_Buffer { +public: + typedef const char* blargg_err_t; + + // Set output sample rate and buffer length in milliseconds (1/1000 sec, defaults + // to 1/4 second), then clear buffer. Returns NULL on success, otherwise if there + // isn't enough memory, returns error without affecting current buffer setup. + blargg_err_t set_sample_rate( long samples_per_sec, int msec_length = 1000 / 4 ); + + // Set number of source time units per second + void clock_rate( long ); + + // End current time frame of specified duration and make its samples available + // (along with any still-unread samples) for reading with read_samples(). Begins + // a new time frame at the end of the current frame. + void end_frame( blip_time_t time ); + + // Read at most 'max_samples' out of buffer into 'dest', removing them from from + // the buffer. Returns number of samples actually read and removed. If stereo is + // true, increments 'dest' one extra time after writing each sample, to allow + // easy interleving of two channels into a stereo output buffer. + long read_samples( blip_sample_t* dest, long max_samples, int stereo = 0 ); + +// Additional optional features + + // Current output sample rate + long sample_rate() const; + + // Length of buffer, in milliseconds + int length() const; + + // Number of source time units per second + long clock_rate() const; + + // Set frequency high-pass filter frequency, where higher values reduce bass more + void bass_freq( int frequency ); + + // Number of samples delay from synthesis to samples read out + int output_latency() const; + + // Remove all available samples and clear buffer to silence. If 'entire_buffer' is + // false, just clears out any samples waiting rather than the entire buffer. + void clear( int entire_buffer = 1 ); + + // Number of samples available for reading with read_samples() + long samples_avail() const; + + // Remove 'count' samples from those waiting to be read + void remove_samples( long count ); + +// Experimental features + + // Count number of clocks needed until 'count' samples will be available. + // If buffer can't even hold 'count' samples, returns number of clocks until + // buffer becomes full. + blip_time_t count_clocks( long count ) const; + + // Number of raw samples that can be mixed within frame of specified duration. + long count_samples( blip_time_t duration ) const; + + // Mix 'count' samples from 'buf' into buffer. + void mix_samples( blip_sample_t const* buf, long count ); + + // not documented yet + void set_modified() { modified_ = 1; } + int clear_modified() { int b = modified_; modified_ = 0; return b; } + typedef blip_u64 blip_resampled_time_t; + void remove_silence( long count ); + blip_resampled_time_t resampled_duration( int t ) const { return t * factor_; } + blip_resampled_time_t resampled_time( blip_time_t t ) const { return t * factor_ + offset_; } + blip_resampled_time_t clock_rate_factor( long clock_rate ) const; +public: + Blip_Buffer(); + ~Blip_Buffer(); + + // Deprecated + typedef blip_resampled_time_t resampled_time_t; + blargg_err_t sample_rate( long r ) { return set_sample_rate( r ); } + blargg_err_t sample_rate( long r, int msec ) { return set_sample_rate( r, msec ); } +private: + // noncopyable + Blip_Buffer( const Blip_Buffer& ); + Blip_Buffer& operator = ( const Blip_Buffer& ); +public: + typedef blip_time_t buf_t_; + blip_u64 factor_; + blip_resampled_time_t offset_; + buf_t_* buffer_; + blip_long buffer_size_; + blip_long reader_accum_; + int bass_shift_; +private: + long sample_rate_; + long clock_rate_; + int bass_freq_; + int length_; + int modified_; + friend class Blip_Reader; +}; + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#define BLIP_BUFFER_ACCURACY 32 +#define BLIP_PHASE_BITS 8 + +// Number of bits in resample ratio fraction. Higher values give a more accurate ratio +// but reduce maximum buffer size. +//#ifndef BLIP_BUFFER_ACCURACY +// #define BLIP_BUFFER_ACCURACY 16 +//#endif + +// Number bits in phase offset. Fewer than 6 bits (64 phase offsets) results in +// noticeable broadband noise when synthesizing high frequency square waves. +// Affects size of Blip_Synth objects since they store the waveform directly. +//#ifndef BLIP_PHASE_BITS +// #if BLIP_BUFFER_FAST +// #define BLIP_PHASE_BITS 8 +// #else +// #define BLIP_PHASE_BITS 6 +// #endif +//#endif + + // Internal + typedef blip_u64 blip_resampled_time_t; + int const blip_widest_impulse_ = 16; + int const blip_buffer_extra_ = blip_widest_impulse_ + 2; + int const blip_res = 1 << BLIP_PHASE_BITS; + class blip_eq_t; + + class Blip_Synth_Fast_ { + public: + Blip_Buffer* buf; + int last_amp; + int delta_factor; + + void volume_unit( double ); + Blip_Synth_Fast_(); + void treble_eq( blip_eq_t const& ) { } + }; + + class Blip_Synth_ { + public: + Blip_Buffer* buf; + int last_amp; + int delta_factor; + + void volume_unit( double ); + Blip_Synth_( short* impulses, int width ); + void treble_eq( blip_eq_t const& ); + private: + double volume_unit_; + short* const impulses; + int const width; + blip_long kernel_unit; + int impulses_size() const { return blip_res / 2 * width + 1; } + void adjust_impulse(); + }; + +// Quality level. Start with blip_good_quality. +const int blip_med_quality = 8; +const int blip_good_quality = 12; +const int blip_high_quality = 16; + +// Range specifies the greatest expected change in amplitude. Calculate it +// by finding the difference between the maximum and minimum expected +// amplitudes (max - min). +template +class Blip_Synth { +public: + // Set overall volume of waveform + void volume( double v ) { impl.volume_unit( v * (1.0 / (range < 0 ? -range : range)) ); } + + // Configure low-pass filter (see blip_buffer.txt) + void treble_eq( blip_eq_t const& eq ) { impl.treble_eq( eq ); } + + // Get/set Blip_Buffer used for output + Blip_Buffer* output() const { return impl.buf; } + void output( Blip_Buffer* b ) { impl.buf = b; impl.last_amp = 0; } + + // Update amplitude of waveform at given time. Using this requires a separate + // Blip_Synth for each waveform. + void update( blip_time_t time, int amplitude ); + +// Low-level interface + + // Add an amplitude transition of specified delta, optionally into specified buffer + // rather than the one set with output(). Delta can be positive or negative. + // The actual change in amplitude is delta * (volume / range) + void offset( blip_time_t, int delta, Blip_Buffer* ) const; + void offset( blip_time_t t, int delta ) const { offset( t, delta, impl.buf ); } + + // Works directly in terms of fractional output samples. Contact author for more info. + void offset_resampled( blip_resampled_time_t, int delta, Blip_Buffer* ) const; + + // Same as offset(), except code is inlined for higher performance + void offset_inline( blip_time_t t, int delta, Blip_Buffer* buf ) const { + offset_resampled( t * buf->factor_ + buf->offset_, delta, buf ); + } + void offset_inline( blip_time_t t, int delta ) const { + offset_resampled( t * impl.buf->factor_ + impl.buf->offset_, delta, impl.buf ); + } + +private: +#if BLIP_BUFFER_FAST + Blip_Synth_Fast_ impl; +#else + Blip_Synth_ impl; + typedef short imp_t; + imp_t impulses [blip_res * (quality / 2) + 1]; +public: + Blip_Synth() : impl( impulses, quality ) { } +#endif +}; + +// Low-pass equalization parameters +class blip_eq_t { +public: + // Logarithmic rolloff to treble dB at half sampling rate. Negative values reduce + // treble, small positive values (0 to 5.0) increase treble. + blip_eq_t( double treble_db = 0 ); + + // See blip_buffer.txt + blip_eq_t( double treble, long rolloff_freq, long sample_rate, long cutoff_freq = 0 ); + +private: + double treble; + long rolloff_freq; + long sample_rate; + long cutoff_freq; + void generate( float* out, int count ) const; + friend class Blip_Synth_; +}; + +int const blip_sample_bits = 30; + +// Dummy Blip_Buffer to direct sound output to, for easy muting without +// having to stop sound code. +class Silent_Blip_Buffer : public Blip_Buffer { + buf_t_ buf [blip_buffer_extra_ + 1]; +public: + // The following cannot be used (an assertion will fail if attempted): + blargg_err_t set_sample_rate( long samples_per_sec, int msec_length ); + blip_time_t count_clocks( long count ) const; + void mix_samples( blip_sample_t const* buf, long count ); + + Silent_Blip_Buffer(); +}; + + #if defined (__GNUC__) || _MSC_VER >= 1100 + #define BLIP_RESTRICT __restrict + #else + #define BLIP_RESTRICT + #endif + +// Optimized reading from Blip_Buffer, for use in custom sample output + +// Begin reading from buffer. Name should be unique to the current block. +#define BLIP_READER_BEGIN( name, blip_buffer ) \ + const Blip_Buffer::buf_t_* BLIP_RESTRICT name##_reader_buf = (blip_buffer).buffer_;\ + blip_long name##_reader_accum = (blip_buffer).reader_accum_ + +// Get value to pass to BLIP_READER_NEXT() +#define BLIP_READER_BASS( blip_buffer ) ((blip_buffer).bass_shift_) + +// Constant value to use instead of BLIP_READER_BASS(), for slightly more optimal +// code at the cost of having no bass control +int const blip_reader_default_bass = 9; + +// Current sample +#define BLIP_READER_READ( name ) (name##_reader_accum >> (blip_sample_bits - 16)) + +// Current raw sample in full internal resolution +#define BLIP_READER_READ_RAW( name ) (name##_reader_accum) + +// Advance to next sample +#define BLIP_READER_NEXT( name, bass ) \ + (void) (name##_reader_accum += *name##_reader_buf++ - (name##_reader_accum >> (bass))) + +// End reading samples from buffer. The number of samples read must now be removed +// using Blip_Buffer::remove_samples(). +#define BLIP_READER_END( name, blip_buffer ) \ + (void) ((blip_buffer).reader_accum_ = name##_reader_accum) + + +// Compatibility with older version +const long blip_unscaled = 65535; +const int blip_low_quality = blip_med_quality; +const int blip_best_quality = blip_high_quality; + +// Deprecated; use BLIP_READER macros as follows: +// Blip_Reader r; r.begin( buf ); -> BLIP_READER_BEGIN( r, buf ); +// int bass = r.begin( buf ) -> BLIP_READER_BEGIN( r, buf ); int bass = BLIP_READER_BASS( buf ); +// r.read() -> BLIP_READER_READ( r ) +// r.read_raw() -> BLIP_READER_READ_RAW( r ) +// r.next( bass ) -> BLIP_READER_NEXT( r, bass ) +// r.next() -> BLIP_READER_NEXT( r, blip_reader_default_bass ) +// r.end( buf ) -> BLIP_READER_END( r, buf ) +class Blip_Reader { +public: + int begin( Blip_Buffer& ); + blip_long read() const { return accum >> (blip_sample_bits - 16); } + blip_long read_raw() const { return accum; } + void next( int bass_shift = 9 ) { accum += *buf++ - (accum >> bass_shift); } + void end( Blip_Buffer& b ) { b.reader_accum_ = accum; } + +private: + const Blip_Buffer::buf_t_* buf; + blip_long accum; +}; + +// End of public interface + +#include + +template +blip_inline void Blip_Synth::offset_resampled( blip_resampled_time_t time, + int delta, Blip_Buffer* blip_buf ) const +{ + // Fails if time is beyond end of Blip_Buffer, due to a bug in caller code or the + // need for a longer buffer as set by set_sample_rate(). + assert( (blip_long) (time >> BLIP_BUFFER_ACCURACY) < blip_buf->buffer_size_ ); + delta *= impl.delta_factor; + blip_long* BLIP_RESTRICT buf = blip_buf->buffer_ + (time >> BLIP_BUFFER_ACCURACY); + int phase = (int) (time >> (BLIP_BUFFER_ACCURACY - BLIP_PHASE_BITS) & (blip_res - 1)); + +#if BLIP_BUFFER_FAST + blip_long left = buf [0] + delta; + + // Kind of crappy, but doing shift after multiply results in overflow. + // Alternate way of delaying multiply by delta_factor results in worse + // sub-sample resolution. + blip_long right = (delta >> BLIP_PHASE_BITS) * phase; + left -= right; + right += buf [1]; + + buf [0] = left; + buf [1] = right; +#else + + int const fwd = (blip_widest_impulse_ - quality) / 2; + int const rev = fwd + quality - 2; + int const mid = quality / 2 - 1; + + imp_t const* BLIP_RESTRICT imp = impulses + blip_res - phase; + + #if defined (_M_IX86) || defined (_M_IA64) || defined (__i486__) || \ + defined (__x86_64__) || defined (__ia64__) || defined (__i386__) + + // straight forward implementation resulted in better code on GCC for x86 + + #define ADD_IMP( out, in ) \ + buf [out] += (blip_long) imp [blip_res * (in)] * delta + + #define BLIP_FWD( i ) {\ + ADD_IMP( fwd + i, i );\ + ADD_IMP( fwd + 1 + i, i + 1 );\ + } + #define BLIP_REV( r ) {\ + ADD_IMP( rev - r, r + 1 );\ + ADD_IMP( rev + 1 - r, r );\ + } + + BLIP_FWD( 0 ) + if ( quality > 8 ) BLIP_FWD( 2 ) + if ( quality > 12 ) BLIP_FWD( 4 ) + { + ADD_IMP( fwd + mid - 1, mid - 1 ); + ADD_IMP( fwd + mid , mid ); + imp = impulses + phase; + } + if ( quality > 12 ) BLIP_REV( 6 ) + if ( quality > 8 ) BLIP_REV( 4 ) + BLIP_REV( 2 ) + + ADD_IMP( rev , 1 ); + ADD_IMP( rev + 1, 0 ); + + #else + + // for RISC processors, help compiler by reading ahead of writes + + #define BLIP_FWD( i ) {\ + blip_long t0 = i0 * delta + buf [fwd + i];\ + blip_long t1 = imp [blip_res * (i + 1)] * delta + buf [fwd + 1 + i];\ + i0 = imp [blip_res * (i + 2)];\ + buf [fwd + i] = t0;\ + buf [fwd + 1 + i] = t1;\ + } + #define BLIP_REV( r ) {\ + blip_long t0 = i0 * delta + buf [rev - r];\ + blip_long t1 = imp [blip_res * r] * delta + buf [rev + 1 - r];\ + i0 = imp [blip_res * (r - 1)];\ + buf [rev - r] = t0;\ + buf [rev + 1 - r] = t1;\ + } + + blip_long i0 = *imp; + BLIP_FWD( 0 ) + if ( quality > 8 ) BLIP_FWD( 2 ) + if ( quality > 12 ) BLIP_FWD( 4 ) + { + blip_long t0 = i0 * delta + buf [fwd + mid - 1]; + blip_long t1 = imp [blip_res * mid] * delta + buf [fwd + mid ]; + imp = impulses + phase; + i0 = imp [blip_res * mid]; + buf [fwd + mid - 1] = t0; + buf [fwd + mid ] = t1; + } + if ( quality > 12 ) BLIP_REV( 6 ) + if ( quality > 8 ) BLIP_REV( 4 ) + BLIP_REV( 2 ) + + blip_long t0 = i0 * delta + buf [rev ]; + blip_long t1 = *imp * delta + buf [rev + 1]; + buf [rev ] = t0; + buf [rev + 1] = t1; + #endif + +#endif +} + +#undef BLIP_FWD +#undef BLIP_REV + +template +#if BLIP_BUFFER_FAST + blip_inline +#endif +void Blip_Synth::offset( blip_time_t t, int delta, Blip_Buffer* buf ) const +{ + offset_resampled( t * buf->factor_ + buf->offset_, delta, buf ); +} + +template +#if BLIP_BUFFER_FAST + blip_inline +#endif +void Blip_Synth::update( blip_time_t t, int amp ) +{ + int delta = amp - impl.last_amp; + impl.last_amp = amp; + offset_resampled( t * impl.buf->factor_ + impl.buf->offset_, delta, impl.buf ); +} + +blip_inline blip_eq_t::blip_eq_t( double t ) : + treble( t ), rolloff_freq( 0 ), sample_rate( 44100 ), cutoff_freq( 0 ) { } +blip_inline blip_eq_t::blip_eq_t( double t, long rf, long sr, long cf ) : + treble( t ), rolloff_freq( rf ), sample_rate( sr ), cutoff_freq( cf ) { } + +blip_inline int Blip_Buffer::length() const { return length_; } +blip_inline long Blip_Buffer::samples_avail() const { return (long) (offset_ >> BLIP_BUFFER_ACCURACY); } +blip_inline long Blip_Buffer::sample_rate() const { return sample_rate_; } +blip_inline int Blip_Buffer::output_latency() const { return blip_widest_impulse_ / 2; } +blip_inline long Blip_Buffer::clock_rate() const { return clock_rate_; } +blip_inline void Blip_Buffer::clock_rate( long cps ) { factor_ = clock_rate_factor( clock_rate_ = cps ); } + +blip_inline int Blip_Reader::begin( Blip_Buffer& blip_buf ) +{ + buf = blip_buf.buffer_; + accum = blip_buf.reader_accum_; + return blip_buf.bass_shift_; +} + +int const blip_max_length = 0; +int const blip_default_length = 250; + +#endif diff --git a/libmednahawk/include/blip/Stereo_Buffer.h b/libmednahawk/include/blip/Stereo_Buffer.h new file mode 100644 index 0000000000..99fdd85cc0 --- /dev/null +++ b/libmednahawk/include/blip/Stereo_Buffer.h @@ -0,0 +1,71 @@ + +// Simple stereo Blip_Buffer for sound emulators whose oscillators output +// either on the left only, center, or right only. + +// Blip_Buffer 0.3.0. Copyright (C) 2003-2004 Shay Green. GNU GPL license. + +#ifndef STEREO_BUFFER_H +#define STEREO_BUFFER_H + +#include "Blip_Buffer.h" + +class Stereo_Buffer { +public: + Stereo_Buffer(); + ~Stereo_Buffer(); + + // Same as in Blip_Buffer (see Blip_Buffer.h) + bool set_sample_rate( long, int msec = 0 ); + void clock_rate( long ); + void bass_freq( int ); + void clear(); + + // Buffers to output synthesis to + Blip_Buffer* left(); + Blip_Buffer* center(); + Blip_Buffer* right(); + + // Same as in Blip_Buffer. For more efficient operation, pass false + // for was_stereo if the left and right buffers had nothing added + // to them for this frame. + void end_frame( blip_time_t, bool was_stereo = true ); + + // Output is stereo with channels interleved, left before right. Counts + // are in samples, *not* pairs. + long samples_avail() const; + long read_samples( blip_sample_t*, long ); + +private: + // noncopyable + Stereo_Buffer( const Stereo_Buffer& ); + Stereo_Buffer& operator = ( const Stereo_Buffer& ); + + enum { buf_count = 3 }; + Blip_Buffer bufs [buf_count]; + bool stereo_added; + bool was_stereo; + + void mix_stereo( blip_sample_t*, long ); + void mix_mono( blip_sample_t*, long ); + void mix_stereo( float*, long ); + void mix_mono( float*, long ); +}; + + inline Blip_Buffer* Stereo_Buffer::left() { + return &bufs [1]; + } + + inline Blip_Buffer* Stereo_Buffer::center() { + return &bufs [0]; + } + + inline Blip_Buffer* Stereo_Buffer::right() { + return &bufs [2]; + } + + inline long Stereo_Buffer::samples_avail() const { + return bufs [0].samples_avail(); + } + +#endif + diff --git a/libmednahawk/include/config.h.in b/libmednahawk/include/config.h.in new file mode 100644 index 0000000000..9373f8e60e --- /dev/null +++ b/libmednahawk/include/config.h.in @@ -0,0 +1,730 @@ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define if we are compiling for PPC architectures. */ +#undef ARCH_POWERPC + +/* Define if we are compiling with AltiVec usage. */ +#undef ARCH_POWERPC_ALTIVEC + +/* Define if we are compiling for 32-bit or 64-bit x86 architectures. */ +#undef ARCH_X86 + +/* Define if we are compiling for 32-bit x86 architectures. */ +#undef ARCH_X86_32 + +/* Define if we are compiling for 64-bit x86 architectures. */ +#undef ARCH_X86_64 + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have the `accept' function. */ +#undef HAVE_ACCEPT + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define if we are compiling with ALSA support. */ +#undef HAVE_ALSA + +/* Define if altivec.h is present and usable. */ +#undef HAVE_ALTIVEC_H + +/* Define if we should include from OpenGL instead of GL */ +#undef HAVE_APPLE_OPENGL_FRAMEWORK + +/* Define to 1 if you have the `argz_count' function. */ +#undef HAVE_ARGZ_COUNT + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the `argz_next' function. */ +#undef HAVE_ARGZ_NEXT + +/* Define to 1 if you have the `argz_stringify' function. */ +#undef HAVE_ARGZ_STRINGIFY + +/* Define to 1 if you have the `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if you have the `bind' function. */ +#undef HAVE_BIND + +/* Define to 1 if the compiler understands __builtin_expect. */ +#undef HAVE_BUILTIN_EXPECT + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define to 1 if you have the `close' function. */ +#undef HAVE_CLOSE + +/* Define to 1 if you have the `connect' function. */ +#undef HAVE_CONNECT + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_FEOF_UNLOCKED + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FGETS_UNLOCKED + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_GETC_UNLOCKED + +/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNPRINTF + +/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNWPRINTF + +/* Define if we are compiling with DirectSound support. */ +#undef HAVE_DIRECTSOUND + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `fcntl' function. */ +#undef HAVE_FCNTL + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `fopen64' function. */ +#undef HAVE_FOPEN64 + +/* Define to 1 if you have the `freeaddrinfo' function. */ +#undef HAVE_FREEADDRINFO + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#undef HAVE_FSEEKO + +/* Define to 1 if you have the `fseeko64' function. */ +#undef HAVE_FSEEKO64 + +/* Define to 1 if you have the `fstat64' function. */ +#undef HAVE_FSTAT64 + +/* Define to 1 if you have the `ftello' function. */ +#undef HAVE_FTELLO + +/* Define to 1 if you have the `ftello64' function. */ +#undef HAVE_FTELLO64 + +/* Define to 1 if you have the `fwprintf' function. */ +#undef HAVE_FWPRINTF + +/* Define to 1 if you have the `gai_strerror' function. */ +#undef HAVE_GAI_STRERROR + +/* Define to 1 if you have the `getaddrinfo' function. */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `getenv' function. */ +#undef HAVE_GETENV + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#undef HAVE_GETHOSTBYADDR + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getpwuid' function. */ +#undef HAVE_GETPWUID + +/* Define to 1 if you have the `getsockopt' function. */ +#undef HAVE_GETSOCKOPT + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define if you have the 'intmax_t' type in or . */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX + +/* Define if we are compiling with JACK support. */ +#undef HAVE_JACK + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `asound' library (-lasound). */ +#undef HAVE_LIBASOUND + +/* Define if we are compiling with libcdio support. */ +#undef HAVE_LIBCDIO + +/* Define if we are compiling with libsndfile support. */ +#undef HAVE_LIBSNDFILE + +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if we are compiling with Linux joystick support. */ +#undef HAVE_LINUX_JOYSTICK + +/* Define to 1 if you have the `listen' function. */ +#undef HAVE_LISTEN + +/* Define to 1 if the system has the type `long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the `madvise' function. */ +#undef HAVE_MADVISE + +/* Define to 1 if you have the `mbrtowc' function. */ +#undef HAVE_MBRTOWC + +/* Define to 1 if you have the `memcmp' function. */ +#undef HAVE_MEMCMP + +/* Define to 1 if you have the `memcpy' function. */ +#undef HAVE_MEMCPY + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the `mkdir' function. */ +#undef HAVE_MKDIR + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the `nanosleep' function. */ +#undef HAVE_NANOSLEEP + +/* Define to 1 if you have the `newlocale' function. */ +#undef HAVE_NEWLOCALE + +/* Define if we are compiling with OSS support. */ +#undef HAVE_OSSDSP + +/* Define if your printf() function supports format strings with positions. */ +#undef HAVE_POSIX_PRINTF + +/* Define if we are compiling with POSIX sockets support. */ +#undef HAVE_POSIX_SOCKETS + +/* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ +#undef HAVE_PTHREAD_MUTEX_RECURSIVE + +/* Define if the POSIX multithreading library has read/write locks. */ +#undef HAVE_PTHREAD_RWLOCK + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the `recv' function. */ +#undef HAVE_RECV + +/* Define if we are compiling with SDL sound support. */ +#undef HAVE_SDL + +/* Define to 1 if you have the `select' function. */ +#undef HAVE_SELECT + +/* Define to 1 if you have the `send' function. */ +#undef HAVE_SEND + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the `setsockopt' function. */ +#undef HAVE_SETSOCKOPT + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the `signal' function. */ +#undef HAVE_SIGNAL + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `strerror_r' function. */ +#undef HAVE_STRERROR_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strnlen' function. */ +#undef HAVE_STRNLEN + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define if you have the 'uintmax_t' type in or . */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type `unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 if you have the `uselocale' function. */ +#undef HAVE_USELOCALE + +/* Define to 1 if you have the `usleep' function. */ +#undef HAVE_USLEEP + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#undef HAVE_VISIBILITY + +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define to 1 if you have the `wcrtomb' function. */ +#undef HAVE_WCRTOMB + +/* Define to 1 if you have the `wcslen' function. */ +#undef HAVE_WCSLEN + +/* Define to 1 if you have the `wcsnlen' function. */ +#undef HAVE_WCSNLEN + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* Define to 1 if O_NOATIME works. */ +#undef HAVE_WORKING_O_NOATIME + +/* Define to 1 if O_NOFOLLOW works. */ +#undef HAVE_WORKING_O_NOFOLLOW + +/* Define to 1 if you have the `_mkdir' function. */ +#undef HAVE__MKDIR + +/* Define to 1 if you have the `__fsetlocking' function. */ +#undef HAVE___FSETLOCKING + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE + +/* Define on little-endian platforms. */ +#undef LSB_FIRST + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Mednafen version definition. */ +#undef MEDNAFEN_VERSION + +/* Mednafen version numeric. */ +#undef MEDNAFEN_VERSION_NUMERIC + +/* Define if config.h is present */ +#undef MINILZO_HAVE_CONFIG_H + +/* Define if mkdir takes only one argument. */ +#undef MKDIR_TAKES_ONE_ARG + +/* Define to use fixed-point MPC decoder. */ +#undef MPC_FIXED_POINT + +/* Define on big-endian platforms. */ +#undef MSB_FIRST + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define if exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + +/* Defines the filesystem path-separator type. */ +#undef PSS_STYLE + +/* Define if the pthread_in_use() detection is hard. */ +#undef PTHREAD_IN_USE_DETECTION_HARD + +/* The size of `double', as computed by sizeof. */ +#undef SIZEOF_DOUBLE + +/* The size of `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* The size of `off_t', as computed by sizeof. */ +#undef SIZEOF_OFF_T + +/* The size of `ptrdiff_t', as computed by sizeof. */ +#undef SIZEOF_PTRDIFF_T + +/* The size of `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of `size_t', as computed by sizeof. */ +#undef SIZEOF_SIZE_T + +/* The size of `void *', as computed by sizeof. */ +#undef SIZEOF_VOID_P + +/* The size of `__int64', as computed by sizeof. */ +#undef SIZEOF___INT64 + +/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define if the POSIX multithreading library can be used. */ +#undef USE_POSIX_THREADS + +/* Define if references to the POSIX multithreading library should be made + weak. */ +#undef USE_POSIX_THREADS_WEAK + +/* Define if the GNU Pth multithreading library can be used. */ +#undef USE_PTH_THREADS + +/* Define if references to the GNU Pth multithreading library should be made + weak. */ +#undef USE_PTH_THREADS_WEAK + +/* Define if the old Solaris multithreading library can be used. */ +#undef USE_SOLARIS_THREADS + +/* Define if references to the old Solaris multithreading library should be + made weak. */ +#undef USE_SOLARIS_THREADS_WEAK + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Define if the Win32 multithreading API can be used. */ +#undef USE_WIN32_THREADS + +/* Version number of package */ +#undef VERSION + +/* Define if we are compiling with debugger. */ +#undef WANT_DEBUGGER + +/* Define if we are compiling with GBA emulation. */ +#undef WANT_GBA_EMU + +/* Define if we are compiling with GB emulation. */ +#undef WANT_GB_EMU + +/* Define if we are compiling with internal CJK fonts. */ +#undef WANT_INTERNAL_CJK + +/* Define if we are compiling with Lynx emulation. */ +#undef WANT_LYNX_EMU + +/* Define if we are compiling with Sega Genesis/MegaDrive emulation. */ +#undef WANT_MD_EMU + +/* Define if we are compiling with NES emulation. */ +#undef WANT_NES_EMU + +/* Define if we are compiling with NGP emulation. */ +#undef WANT_NGP_EMU + +/* Define if we are compiling with PCE emulation. */ +#undef WANT_PCE_EMU + +/* Define if we are compiling with separate fast PCE emulation. */ +#undef WANT_PCE_FAST_EMU + +/* Define if we are compiling with PC-FX emulation. */ +#undef WANT_PCFX_EMU + +/* Define if we are compiling with PlayStation emulation. */ +#undef WANT_PSX_EMU + +/* Define if we are compiling with SMS+GG emulation. */ +#undef WANT_SMS_EMU + +/* Define if we are compiling with SNES emulation. */ +#undef WANT_SNES_EMU + +/* Define if we are compiling with Virtual Boy emulation. */ +#undef WANT_VB_EMU + +/* Define if we are compiling with WonderSwan emulation. */ +#undef WANT_WSWAN_EMU + +/* Define if we are compiling for Win32. */ +#undef WIN32 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define as the type of the result of subtracting two pointers, if the system + doesn't define it. */ +#undef ptrdiff_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to unsigned long or unsigned long long if and + don't define. */ +#undef uintmax_t + + +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded + diff --git a/libmednahawk/include/mpcdec/config_types.h b/libmednahawk/include/mpcdec/config_types.h new file mode 100644 index 0000000000..5005829d7d --- /dev/null +++ b/libmednahawk/include/mpcdec/config_types.h @@ -0,0 +1,50 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef __MUSEPACK_CONFIG_TYPES_H__ +#define __MUSEPACK_CONFIG_TYPES_H__ + +#include + +typedef unsigned char mpc_bool_t; +#define TRUE 1 +#define FALSE 0 + +typedef int16_t mpc_int16_t; +typedef uint16_t mpc_uint16_t; +typedef int32_t mpc_int32_t; +typedef uint32_t mpc_uint32_t; +typedef int64_t mpc_int64_t; + +#endif // __MUSEPACK_CONFIG_TYPES_H__ diff --git a/libmednahawk/include/mpcdec/decoder.h b/libmednahawk/include/mpcdec/decoder.h new file mode 100644 index 0000000000..0720f47f8f --- /dev/null +++ b/libmednahawk/include/mpcdec/decoder.h @@ -0,0 +1,124 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file decoder.h + +#ifndef _mpcdec_decoder_h_ +#define _mpcdec_decoder_h_ + +#include "huffman.h" +#include "math.h" +#include "mpcdec.h" +#include "reader.h" +#include "streaminfo.h" + +#define MPC_SUPPORT_SV456 + +#define SEEKING_TABLE_SIZE 256u +// set it to SLOW_SEEKING_WINDOW to not use fast seeking +#define FAST_SEEKING_WINDOW 32 +// set it to FAST_SEEKING_WINDOW to only use fast seeking +#define SLOW_SEEKING_WINDOW 0x80000000 + +enum { + MPC_V_MEM = 2304, + MPC_DECODER_MEMSIZE = 16384, // overall buffer size +}; + +typedef struct { + mpc_int32_t L [36]; + mpc_int32_t R [36]; +} QuantTyp; + +typedef struct mpc_decoder_t { + mpc_reader *r; + + /// @name internal state variables + //@{ + + mpc_uint32_t dword; /// currently decoded 32bit-word + mpc_uint32_t pos; /// bit-position within dword + mpc_uint32_t Speicher[MPC_DECODER_MEMSIZE]; /// read-buffer + mpc_uint32_t Zaehler; /// actual index within read-buffer + + mpc_uint32_t samples_to_skip; + + mpc_uint32_t DecodedFrames; + mpc_uint32_t OverallFrames; + mpc_int32_t SampleRate; // Sample frequency + + mpc_uint32_t StreamVersion; // version of bitstream + mpc_int32_t Max_Band; + mpc_uint32_t MPCHeaderPos; // AB: needed to support ID3v2 + + mpc_uint32_t FrameWasValid; + mpc_uint32_t MS_used; // MS-coding used ? + mpc_uint32_t TrueGaplessPresent; + + mpc_uint32_t WordsRead; // counts amount of decoded dwords + + // randomizer state variables + mpc_uint32_t __r1; + mpc_uint32_t __r2; + + // seeking + mpc_uint32_t seeking_table[SEEKING_TABLE_SIZE]; + mpc_uint32_t seeking_pwr; // distance between 2 frames in seeking_table = 2^seeking_pwr + mpc_uint32_t seeking_table_frames; // last frame in seaking table + mpc_uint32_t seeking_window; // number of frames to look for scalefactors + + mpc_int32_t SCF_Index_L [32] [3]; + mpc_int32_t SCF_Index_R [32] [3]; // holds scalefactor-indices + QuantTyp Q [32]; // holds quantized samples + mpc_int32_t Res_L [32]; + mpc_int32_t Res_R [32]; // holds the chosen quantizer for each subband + mpc_bool_t DSCF_Flag_L [32]; + mpc_bool_t DSCF_Flag_R [32]; // differential SCF used? + mpc_int32_t SCFI_L [32]; + mpc_int32_t SCFI_R [32]; // describes order of transmitted SCF + mpc_bool_t MS_Flag[32]; // MS used? +#ifdef MPC_FIXED_POINT + unsigned char SCF_shift[256]; +#endif + + MPC_SAMPLE_FORMAT V_L[MPC_V_MEM + 960]; + MPC_SAMPLE_FORMAT V_R[MPC_V_MEM + 960]; + MPC_SAMPLE_FORMAT Y_L[36][32]; + MPC_SAMPLE_FORMAT Y_R[36][32]; + MPC_SAMPLE_FORMAT SCF[256]; ///< holds adapted scalefactors (for clipping prevention) + //@} + +} mpc_decoder; + +#endif // _mpc_decoder_h diff --git a/libmednahawk/include/mpcdec/huffman.h b/libmednahawk/include/mpcdec/huffman.h new file mode 100644 index 0000000000..3b6bf36f98 --- /dev/null +++ b/libmednahawk/include/mpcdec/huffman.h @@ -0,0 +1,54 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file huffman.h +/// Data structures and functions for huffman coding. + +#ifndef _mpcdec_huffman_h_ +#define _mpcdec_huffman_h_ + +#include "mpcdec/config_types.h" + +#include "decoder.h" + +struct mpc_decoder_t; // forward declare to break circular dependencies + +/// Huffman table entry. +typedef struct huffman_type_t { + mpc_uint32_t Code; + mpc_uint16_t Length; + mpc_int16_t Value; +} HuffmanTyp; + +#endif // _mpcdec_huffman_h_ diff --git a/libmednahawk/include/mpcdec/internal.h b/libmednahawk/include/mpcdec/internal.h new file mode 100644 index 0000000000..a429627d19 --- /dev/null +++ b/libmednahawk/include/mpcdec/internal.h @@ -0,0 +1,65 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file internal.h +/// Definitions and structures used only internally by the libmpcdec. + +#ifndef _mpcdec_internal_h +#define _mpcdec_internal_h + + +enum { + MPC_DECODER_SYNTH_DELAY = 481 +}; + +/// Big/little endian 32 bit byte swapping routine. +static __inline +mpc_uint32_t mpc_swap32(mpc_uint32_t val) { + return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | + ((val & 0x0000ff00) << 8) | ((val & 0x000000ff) << 24)); +} + +/// Searches for a ID3v2-tag and reads the length (in bytes) of it. +/// \param reader supplying raw stream data +/// \return size of tag, in bytes +/// \return -1 on errors of any kind +mpc_int32_t JumpID3v2(mpc_reader* fp); + +/// helper functions used by multiple files +mpc_uint32_t mpc_random_int(mpc_decoder *d); // in synth_filter.c +void mpc_decoder_initialisiere_quantisierungstabellen(mpc_decoder *d, double scale_factor); +void mpc_decoder_synthese_filter_float(mpc_decoder *d, MPC_SAMPLE_FORMAT* OutData); + +#endif // _mpcdec_internal_h + diff --git a/libmednahawk/include/mpcdec/math.h b/libmednahawk/include/mpcdec/math.h new file mode 100644 index 0000000000..7df5027faa --- /dev/null +++ b/libmednahawk/include/mpcdec/math.h @@ -0,0 +1,143 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file math.h +/// Libmpcdec internal math routines. + +#ifndef _mpcdec_math_h_ +#define _mpcdec_math_h_ + +//#define MPC_FIXED_POINT + +#define MPC_FIXED_POINT_SHIFT 16 + +#ifdef MPC_FIXED_POINT + + +#ifdef _WIN32_WCE + +#include + +#define MPC_HAVE_MULHIGH + +#endif + + +#define MPC_FIXED_POINT_SCALE_SHIFT (MPC_FIXED_POINT_SHIFT + MPC_FIXED_POINT_FRACTPART) +#define MPC_FIXED_POINT_SCALE (1 << (MPC_FIXED_POINT_SCALE_SHIFT - 1)) + +//in fixedpoint mode, results in decode output buffer are in -MPC_FIXED_POINT_SCALE ... MPC_FIXED_POINT_SCALE range + +#define MPC_FIXED_POINT_FRACTPART 14 +typedef mpc_int32_t MPC_SAMPLE_FORMAT; + +typedef mpc_int64_t MPC_SAMPLE_FORMAT_MULTIPLY; + +#define MAKE_MPC_SAMPLE(X) (MPC_SAMPLE_FORMAT)((double)(X) * (double)(((mpc_int64_t)1)<> MPC_FIXED_POINT_FRACTPART) + +#define MPC_MULTIPLY_EX_NOTRUNCATE(X,Y,Z) \ + (((MPC_SAMPLE_FORMAT_MULTIPLY)(X) * (MPC_SAMPLE_FORMAT_MULTIPLY)(Y)) >> (Z)) + +#ifdef _DEBUG +static inline MPC_SAMPLE_FORMAT MPC_MULTIPLY(MPC_SAMPLE_FORMAT item1,MPC_SAMPLE_FORMAT item2) +{ + MPC_SAMPLE_FORMAT_MULTIPLY temp = MPC_MULTIPLY_NOTRUNCATE(item1,item2); + assert(temp == (MPC_SAMPLE_FORMAT_MULTIPLY)(MPC_SAMPLE_FORMAT)temp); + return (MPC_SAMPLE_FORMAT)temp; +} + +static inline MPC_SAMPLE_FORMAT MPC_MULTIPLY_EX(MPC_SAMPLE_FORMAT item1,MPC_SAMPLE_FORMAT item2,unsigned shift) +{ + MPC_SAMPLE_FORMAT_MULTIPLY temp = MPC_MULTIPLY_EX_NOTRUNCATE(item1,item2,shift); + assert(temp == (MPC_SAMPLE_FORMAT_MULTIPLY)(MPC_SAMPLE_FORMAT)temp); + return (MPC_SAMPLE_FORMAT)temp; +} + +#else + +#define MPC_MULTIPLY(X,Y) ((MPC_SAMPLE_FORMAT)MPC_MULTIPLY_NOTRUNCATE(X,Y)) +#define MPC_MULTIPLY_EX(X,Y,Z) ((MPC_SAMPLE_FORMAT)MPC_MULTIPLY_EX_NOTRUNCATE(X,Y,Z)) + +#endif + +#ifdef MPC_HAVE_MULHIGH +#define MPC_MULTIPLY_FRACT(X,Y) _MulHigh(X,Y) +#else +#define MPC_MULTIPLY_FRACT(X,Y) MPC_MULTIPLY_EX(X,Y,32) +#endif + +#define MPC_MAKE_FRACT_CONST(X) (MPC_SAMPLE_FORMAT)((X) * (double)(((mpc_int64_t)1)<<32) ) +#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y)) +#define MPC_MULTIPLY_FRACT_CONST_FIX(X,Y,Z) ( MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y / (1<<(Z)) )) << (Z) ) +#define MPC_MULTIPLY_FRACT_CONST_SHR(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y / (1<<(Z)) )) + +#define MPC_MULTIPLY_FLOAT_INT(X,Y) ((X)*(Y)) +#define MPC_SCALE_CONST(X,Y,Z) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)) +#define MPC_SCALE_CONST_SHL(X,Y,Z,S) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)-(S)) +#define MPC_SCALE_CONST_SHR(X,Y,Z,S) MPC_MULTIPLY_EX(X,MAKE_MPC_SAMPLE_EX(Y,Z),(Z)+(S)) +#define MPC_SHR(X,Y) ((X)>>(Y)) +#define MPC_SHL(X,Y) ((X)<<(Y)) + +#else + +//in floating-point mode, decoded samples are in -1...1 range + +typedef float MPC_SAMPLE_FORMAT; + +#define MAKE_MPC_SAMPLE(X) ((MPC_SAMPLE_FORMAT)(X)) +#define MAKE_MPC_SAMPLE_EX(X,Y) ((MPC_SAMPLE_FORMAT)(X)) + +#define MPC_MULTIPLY_FRACT(X,Y) ((X)*(Y)) +#define MPC_MAKE_FRACT_CONST(X) (X) +#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y)) +#define MPC_MULTIPLY_FRACT_CONST_SHR(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y )) +#define MPC_MULTIPLY_FRACT_CONST_FIX(X,Y,Z) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST( Y )) + +#define MPC_MULTIPLY_FLOAT_INT(X,Y) ((X)*(Y)) +#define MPC_MULTIPLY(X,Y) ((X)*(Y)) +#define MPC_MULTIPLY_EX(X,Y,Z) ((X)*(Y)) +#define MPC_SCALE_CONST(X,Y,Z) ((X)*(Y)) +#define MPC_SCALE_CONST_SHL(X,Y,Z,S) ((X)*(Y)) +#define MPC_SCALE_CONST_SHR(X,Y,Z,S) ((X)*(Y)) +#define MPC_SHR(X,Y) (X) +#define MPC_SHL(X,Y) (X) + +#endif + +#endif // _mpcdec_math_h_ + diff --git a/libmednahawk/include/mpcdec/mpcdec.h b/libmednahawk/include/mpcdec/mpcdec.h new file mode 100644 index 0000000000..cc4c8a6245 --- /dev/null +++ b/libmednahawk/include/mpcdec/mpcdec.h @@ -0,0 +1,141 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file mpcdec.h +/// Top level include file for libmpcdec. + +#ifndef _mpcdec_h_ +#define _mpcdec_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#include "mpcdec/config_types.h" + +#include "decoder.h" +#include "math.h" +#include "reader.h" +#include "streaminfo.h" + +enum { + MPC_FRAME_LENGTH = (36 * 32), /// samples per mpc frame + MPC_DECODER_BUFFER_LENGTH = 4 * MPC_FRAME_LENGTH /// required buffer size for decoder +}; + +// error codes +#define ERROR_CODE_OK 0 +#define ERROR_CODE_FILE -1 +#define ERROR_CODE_SV7BETA 1 +#define ERROR_CODE_CBR 2 +#define ERROR_CODE_IS 3 +#define ERROR_CODE_BLOCKSIZE 4 +#define ERROR_CODE_INVALIDSV 5 + +/// Initializes a streaminfo structure. +/// \param si streaminfo structure to initialize +void mpc_streaminfo_init(mpc_streaminfo *si); + +/// Reads streaminfo header from the mpc stream supplied by r. +/// \param si streaminfo pointer to which info will be written +/// \param r stream reader to supply raw data +/// \return error code +mpc_int32_t mpc_streaminfo_read(mpc_streaminfo *si, mpc_reader *r); + +/// Gets length of stream si, in seconds. +/// \return length of stream in seconds +double mpc_streaminfo_get_length(mpc_streaminfo *si); + +/// Returns length of stream si, in samples. +/// \return length of stream in samples +mpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si); + +/// Sets up decoder library. +/// Call this first when preparing to decode an mpc stream. +/// \param r reader that will supply raw data to the decoder +void mpc_decoder_setup(mpc_decoder *d, mpc_reader *r); + +/// Initializes mpc decoder with the supplied stream info parameters. +/// Call this next after calling mpc_decoder_setup. +/// \param si streaminfo structure indicating format of source stream +/// \return TRUE if decoder was initalized successfully, FALSE otherwise +mpc_bool_t mpc_decoder_initialize(mpc_decoder *d, mpc_streaminfo *si); + +/// Call this next after calling mpc_decoder_setup. +/// \param si streaminfo structure indicating format of source stream +/// \param fast_seeking boolean 0 = use fast seeking if safe, 1 = force fast seeking +void mpc_decoder_set_seeking(mpc_decoder *d, mpc_streaminfo *si, mpc_bool_t fast_seeking); + +void mpc_decoder_set_streaminfo(mpc_decoder *d, mpc_streaminfo *si); + +/// Sets decoder sample scaling factor. All decoded samples will be multiplied +/// by this factor. +/// \param scale_factor multiplicative scaling factor +void mpc_decoder_scale_output(mpc_decoder *d, double scale_factor); + +/// Actually reads data from previously initialized stream. Call +/// this iteratively to decode the mpc stream. +/// \param buffer destination buffer for decoded samples +/// \param vbr_update_acc \todo document me +/// \param vbr_update_bits \todo document me +/// \return -1 if an error is encountered +/// \return 0 if the stream has been completely decoded successfully and there are no more samples +/// \return > 0 to indicate the number of bytes that were actually read from the stream. +mpc_uint32_t mpc_decoder_decode( + mpc_decoder *d, + MPC_SAMPLE_FORMAT *buffer, + mpc_uint32_t *vbr_update_acc, + mpc_uint32_t *vbr_update_bits); + +mpc_uint32_t mpc_decoder_decode_frame( + mpc_decoder *d, + mpc_uint32_t *in_buffer, + mpc_uint32_t in_len, + MPC_SAMPLE_FORMAT *out_buffer); + +/// Seeks to the specified sample in the source stream. +mpc_bool_t mpc_decoder_seek_sample(mpc_decoder *d, mpc_int64_t destsample); + +/// Seeks to specified position in seconds in the source stream. +mpc_bool_t mpc_decoder_seek_seconds(mpc_decoder *d, double seconds); + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // _mpcdec_h_ diff --git a/libmednahawk/include/mpcdec/reader.h b/libmednahawk/include/mpcdec/reader.h new file mode 100644 index 0000000000..59cf32fd3b --- /dev/null +++ b/libmednahawk/include/mpcdec/reader.h @@ -0,0 +1,82 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file reader.h + +#ifndef _mpcdec_reader_h_ +#define _mpcdec_reader_h_ + +/// \brief Stream reader interface structure. +/// +/// This is the structure you must supply to the musepack decoding library +/// to feed it with raw data. Implement the five member functions to provide +/// a functional reader. +typedef struct mpc_reader_t { + /// Reads size bytes of data into buffer at ptr. + mpc_int32_t (*read)(void *t, void *ptr, mpc_int32_t size); + + /// Seeks to byte position offset. + mpc_bool_t (*seek)(void *t, mpc_int32_t offset); + + /// Returns the current byte offset in the stream. + mpc_int32_t (*tell)(void *t); + + /// Returns the total length of the source stream, in bytes. + mpc_int32_t (*get_size)(void *t); + + /// True if the stream is a seekable stream. + mpc_bool_t (*canseek)(void *t); + + /// Field that can be used to identify a particular instance of + /// reader or carry along data associated with that reader. + void *data; + +} mpc_reader; + +typedef struct mpc_reader_file_t { + mpc_reader reader; + + FILE *file; + long file_size; + mpc_bool_t is_seekable; +} mpc_reader_file; + +/// Initializes reader with default stdio file reader implementation. Use +/// this if you're just reading from a plain file. +/// +/// \param r reader struct to initalize +/// \param input input stream to attach to the reader +void mpc_reader_setup_file_reader(mpc_reader_file *r, FILE *input); + +#endif // _mpcdec_reader_h_ diff --git a/libmednahawk/include/mpcdec/requant.h b/libmednahawk/include/mpcdec/requant.h new file mode 100644 index 0000000000..b90fc1765d --- /dev/null +++ b/libmednahawk/include/mpcdec/requant.h @@ -0,0 +1,51 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file requant.h +/// Requantization function definitions. + +#ifndef _mpcdec_requant_h +#define _mpcdec_requant_h_ + +#include "mpcdec.h" + +/* C O N S T A N T S */ +extern const mpc_uint32_t Res_bit [18]; // bits per sample for chosen quantizer +extern const MPC_SAMPLE_FORMAT __Cc [1 + 18]; // coefficients for requantization +extern const mpc_int32_t __Dc [1 + 18]; // offset for requantization + +#define Cc (__Cc + 1) +#define Dc (__Dc + 1) + +#endif // _mpcdec_requant_h_ diff --git a/libmednahawk/include/mpcdec/streaminfo.h b/libmednahawk/include/mpcdec/streaminfo.h new file mode 100644 index 0000000000..3162af09f6 --- /dev/null +++ b/libmednahawk/include/mpcdec/streaminfo.h @@ -0,0 +1,91 @@ +/* + Copyright (c) 2005, The Musepack Development Team + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the The Musepack Development Team nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/// \file streaminfo.h + +#ifndef _mpcdec_streaminfo_h_ +#define _mpcdec_streaminfo_h_ + +typedef mpc_int32_t mpc_streaminfo_off_t; + +/// \brief mpc stream properties structure +/// +/// Structure containing all the properties of an mpc stream. Populated +/// by the streaminfo_read function. +typedef struct mpc_streaminfo { + /// @name core mpc stream properties + //@{ + mpc_uint32_t sample_freq; ///< sample frequency of stream + mpc_uint32_t channels; ///< number of channels in stream + mpc_streaminfo_off_t header_position; ///< byte offset of position of header in stream + mpc_uint32_t stream_version; ///< streamversion of stream + mpc_uint32_t bitrate; ///< bitrate of stream file (in bps) + double average_bitrate; ///< average bitrate of stream (in bits/sec) + mpc_uint32_t frames; ///< number of frames in stream + mpc_int64_t pcm_samples; + mpc_uint32_t max_band; ///< maximum band-index used in stream (0...31) + mpc_uint32_t is; ///< intensity stereo (0: off, 1: on) + mpc_uint32_t ms; ///< mid/side stereo (0: off, 1: on) + mpc_uint32_t block_size; ///< only needed for SV4...SV6 -> not supported + mpc_uint32_t profile; ///< quality profile of stream + const char* profile_name; ///< name of profile used by stream + //@} + + /// @name replaygain related fields + //@{ + mpc_int16_t gain_title; ///< replaygain title value + mpc_int16_t gain_album; ///< replaygain album value + mpc_uint16_t peak_album; ///< peak album loudness level + mpc_uint16_t peak_title; ///< peak title loudness level + //@} + + /// @name true gapless support data + //@{ + mpc_uint32_t is_true_gapless; ///< true gapless? (0: no, 1: yes) + mpc_uint32_t last_frame_samples; ///< number of valid samples within last frame + + mpc_uint32_t encoder_version; ///< version of encoder used + char encoder[256]; ///< encoder name + + mpc_streaminfo_off_t tag_offset; ///< offset to file tags + mpc_streaminfo_off_t total_file_length; ///< total length of underlying file + //@} + + /// @name fast seeking support + //@{ + mpc_uint32_t fast_seek; ///< support fast seeking ? (0: no, 1: yes) + //@} +} mpc_streaminfo; + +#endif // _mpcdec_streaminfo_h_ diff --git a/libmednahawk/include/trio/CHANGES b/libmednahawk/include/trio/CHANGES new file mode 100644 index 0000000000..715289a52c --- /dev/null +++ b/libmednahawk/include/trio/CHANGES @@ -0,0 +1,785 @@ +CHANGES -- trio + + +The changes listed without a name attributed to them were most likely done by +Bjorn Reese and/or Daniel Stenberg. + +Version 1.14 - 2010/01/26 +------------------------- +* David Byron + Added trio_xstring_append_max. + +* Fixed compilation problem on Cygwin due to lack of long double math + (reported by Matthias Andree). + +* David Boyce + Added #undef of standard stdio function names before assigning trio functions + to them. + +* Matthias Andree + Upgraded configure.in to use new macros instead of obsoleted macros. + +* Matthias Andree + Added VPATH to Makefile.in + +* Tom Honermann + Fixed problem with subnormal numbers which caused an infinite loop outputting + leading spaces. + +* Adam McLaurin + Improved parsing performance by avoiding memset() and memcpy() on character + arrays. + +* Gideon Smeding + Fixed %u scanning of signed numbers. + +* Gideon Smeding + Fixed group scanning for non-matching input. + +* Fixed missing undo of look-ahead reading for scanf functions. This does only + work for the scanf* and fscanf* functions, not dscanf* and cscanf* functions + (reported by Gideon Smeding). + +* If the format string is empty, scanf does not attempt to read any input. + +* Ralf Junker + Fixed Borland compilation for user-defined specifiers. + + +Version 1.13 - 2008/11/09 +------------------------- +* Ives Aerts + Added the $ format for user-defined specifiers, which is + compatible with compiler warnings about mismatches between specifiers and + arguments. + +* Added TRIO_DEPRECATED flag (reported by David Boyce) + +* Fixed rounding adjustment for long double (reported as bug item #2136686). + +* Added Makefile dependency for test target (reported as bug item #2136636). + +* David Boyce + Fixed long long support for MSVC. + +* Fixed potential problem with read after buffer end for non-zero terminated + strings (reported as bug item #1828465). + +* Andreas Stricker + Added WinCE support. + +* Fixed number of significant digits for %g. + + +Version 1.12 - 2006/10/22 +------------------------- +* Fixed scanning of floats (reported by Bernd Ahlers). + +* Fixed configure.in for GCC on Tru64 and MIPSpro on IRIX (reported by Andreas + Maus). + +* Olli Savia + Added support for LynxOS. + + +Version 1.11 - 2006/04/08 +------------------------- +* Mark Pickelmann + Fixed trio_unregister. If the first element was removed, the remaining + list would be removed as well. + +* Fixed unintended formatting of %e that would result in non-zero numbers + starting with zero (reported by Mark Pickelmann and Gisli Ottarsson). + +* Fixed compilation with Sun Workshop 6 (reported by Matthias Andree). + +* Fixed accuracy for denormalized numbers (bug item #758327). + +* Glen Davidson + Fixed scanning of floating-point numbers without a decimal-point (bug item + #1370427). + +* David Byron + Fixed more compiler warnings. + +* Fixed compilation of trio_to_long_double and TRIO_FEATURE_FLOAT (reported by + David Byron). + +* Fixed precision of large floating-point numbers (bug item #1314524). + +* Karl Bochert + Fixed trio_fpclassify_and_signbit to only restore the floating-point + precision. + +* Fixed detection of need for ieee option on FreeBSD/Alpha. + +* Added TRIO_SNPRINTF_ONLY compilation. + +* Fixed trio_to_double by not using strtod() on Tru64/DECC because it does not + support hex-floats. + +* Fixed crash on 64 bits machines related to a previous workaround in version + 1.9 for uninitialized va_list (reported by Nicolai Tufar, suggestion by + Douglas Gwyn). + +* Patrick Jessee + Fixed width calculation for %g. + +* Added macros for internal features. + +* Jon Foster + Added macros for conditional compilation of many features. Documented all + the features. + +* Karl Bochert + Fixed problem with Borland C++, which changes the floating-point precision + for certain math functions (log10() and _fpclass()). + +* Karl Bochert + Fixed compilation warnings on Borland C++. + +* Removed any occurrence of #elif because Borland C++ reports wrong line + numbers when they are present (reported by Karl Bochert). + +* David Byron + Added trio_asprintfv. + +* Brian Chapman + Fixed Mac OS X compilation. + +* David Byron + Fixed several compiler warnings. + +* Fixed printing of out-of-range arguments for %hhd and %hd. These arguments + can be out of range because of default integer promotion. + +* Bob Friesenhahn + Fixed installation of header files. + +* Joe Orton + Added SHELL to Makefile.in to avoid problems with CShells. + +* Shaun Tancheff + Fixed regresion tests for MSVC. + +* Craig Berry + Fixed the VMS C99 workaround. + + +Version 1.10 - 2003/03/06 +------------------------- +* Rearranged some include files to accommodate large file support (reported by + Albert Chin-A-Young). + +* Added support for SunOS 4.1.x lack of strerror, tolower, and toupper + (reported by Peter McCluskey). + +* Fixed pedantic compilation with TRIO_MINIMAL. + +* Jose Kahan + Moved to avoid redefinition problems. + +* Fixed hex-float exponents (reported by Matthias Clasen). + +* Fixed handling of negative width and precision via paramters (reported by + Jacob Navia). + +* Nigel Hall + Fixed TRIO_VA_START for VMS. + +* Rune Enggaard Lausen + Fixed compilation for Borland C++ Builder. + +* Fixed precision of hex-float numbers (reported by James Antill). + +* Fixed plus sign only to be added for signed numbers. + +* Fixed printing of integers with value and precision of zero (reported by + James Antill). + +* Fixed %#.o to only print one zero if the value is zero (reported by James + Antill). + +* Rewrote check for IEEE compilation option to remove dependency on additional + scripts. + +* Mehdi Lavasani + Makefile install target fixed to work with older install programs. + +* Collapsed the DECC, MSVC, HP-UX, and AIX code for trio_fpclassify_and_sign() + with further preprocessing. + + +Version 1.9 - 2002/10/13 +------------------------ +* Fixed trio_fpclassify_and_signbit on AIX 3.2 + +* Added configure check for -ieee/-mieee compilation option for Alpha machines. + +* Craig Berry + Fixed compilation on VMS. + +* Albert Chin-A-Young + Fixed incorrect conditional expression in trio_isinf. + +* Fixed the warnings about uninitialized va_list in the printfv and scanfv + family without the use of compiler specific pragmas (suggested by Ian + Pilcher). + +* Fixed space flag for floating-point numbers (reported by Ian Main). + + +Version 1.8 - 2002/07/10 +------------------------ +* Fixed infinite loop in multibyte handling (reported by Gisli Ottarsson). + +* Added the customizable cprintf/cscanf family which enables to user to specify + input and output stream functions (suggested by Florian Schulze). + +* Fixed trio_isinf by removing the HP-UX workaround, and instead making sure + that the C99 macro will adhere to the trio return values (reported by Luke + Dunstan). + +* Alexander Lukyanov + Fixed boundary case for scanning and EOF. + +* Jacob Navia + Enabled the L modifier for formatting. + +* Added TRIO_MINIMAL to build trio without the string functions. + +* Added the R modifier to print rounded floating-point numbers. + +* Added trio_to_long_double and long double scanning (the L modifier). + +* Added trio_locale_decimal_point, trio_locale_thousand_separator, + trio_locale_grouping to overwrite locale settings. + +* Rewrote TrioWriteDouble to avoid temporary buffers and thus the danger of + buffer overflows (for instance %.5000f). + +* Improved floating-point formatting accuracy. + +* Fixed formatting of non-decimal exponents. + +* Fixed thousand separator checking. + +* Fixed %f scanning to get a float and %lf to get a double. + +* Fixed WIN32 compilation (reported by Emmanuel Mogenet) + +* Fixed regression test cases to exclude disabled features. + + +Version 1.7 - 2002/05/07 +------------------------ +* Fixed trio_to_double to handle hex-floats properly. + +* Fixed printing of %a-format to be like %e, not like %g. + +* Fixed floating-point printing of values beyond the machine accuracy. + +* Fixed %f for printing with large precision. + +* Fixed the usage of C99 nan(), which caused a crash on OSF/1 (reported by + Georg Bolz) + +* Joe Orton + Fixed %p on 64-bit platforms. + +* Made trio compile with K&R compilers. + +* Emmanuel Mogenet + Fixed bug in trio_asprintf. + +* Emmanuel Mogenet + Various WIN32 fixes. + +* Joe Orton + Fixed trio_isinf() on HP-UX, and added test cases. + +* Joe Orton + Fixed non-portable use of $^ in Makefile. + +* Joe Orton + Added autoconf. + +* Alexander Lukyanov + Fixed a number of bugs in the scanning of EOF and the count specifier. + +* Richard Jinks + Added trio_nzero + +* Fixed incorrect handling of return code from TrioReadChar (reported by + Henrik Löf) + +* Fixed parsing of character class expressions. + +* Fixed trio_to_double which did not work with long fractions. + +* Fixed %f for printing of large numbers. + +* Fixed %#s to handle whitespaces as non-printable characters. + +* Added trio_isfinite, trio_signbit, and trio_fpclassify. + +* Added new test cases. + + +Version 1.6 - 2002/01/13 +------------------------ +* Added dynamic string functions. + +* Rewrote and extended documentation in JavaDoc (using Doxygen). + +* Moved and renamed strio functions to triostr. + +* Robert Collins + Added definition for Cygwin. + +* Markus Henke + Added long double workaround for the HP C/iX compiler. + +* Marc Verwerft + Improved error handling for dynamically allocated strings. + +* John Fotheringham + Made trionan compile on OpenVMS. + +* Added 'd' and 'D' as exponent letters when using TRIO_MICROSOFT. + +* Fixed uninitial memory read for the parameter modifiers. + + +Version 1.5 - 2001/09/08 +------------------------ +* Merged with libxml changes. + +* Moved NaN and Inf handling to separate file to enable reuse in other + projects. + +* Igor Zlatkovic + Fixed TrioGenerateNan for MSVC. + +* Fixed lots of preprocessor macros and internal data structure names. + + +Version 1.4 - 2001/06/03 +------------------------ +* Added hex-float (%a and %A) for scanning. + +* Added wide character arguments (%ls, %ws, %S, %lc, %wc, and %C) for both + printf and scanf. + +* Added mutex callbacks for user-specified specifiers to enable applications to + add thread-safety. These are registered with trio_register, where the + namespace is set to either ":enter" to lock a mutex, or ":leave" to unlock a + mutex. + +* Added equivalence class expressions for scanning. For example, %[[=a=]] scans + for all letters in the same equivalence class as the letter 'a' as defined + by the locale. + +* Changed character class expressions for scanning. The expressions must now + be embedded withing an extra set of brackets, e.g. %[[:alpha:]]. This was + done to adhere to the syntax of UNIX98 regular expressions. + +* Added the possibility to specify standard support (TRIO_C99 etc.) as compiler + options. + +* Fixed conversion of hex-float in StrToDouble. + +* Fixed formatting of hex-float numbers. + +* Stan Boehm + Fixed crash on QNX, which happend because some buffers on the stack were too + big. + +* Fixed default precision for %f and %g (reported by Jose Ortiz) + +* Howard Kapustein + Added the I8, I16, I32, and I64 modifiers. + +* Jose Ortiz + Fixed rounding problem for %e. + +* Jose Ortiz + Fixed various problems with the xlC and Sun C++ compilers. + + +Version 1.3 - 2001/05/16 +------------------------ +* trio's treatment of the field width when the %e code was used was not + correct (reported by Gisli Ottarsson). It turns out the fraction part should + be zero-padded by default and the exponent part should be zero-prefixed if + it is only one digit. At least that's how the GNU and Sun libc's work. The + trio floating point output looks identical to them now. + +* Fixed group scanning with modifiers. + +* Fixed compilation for 64-bit Digital Unix. + +* Igor Zlatkovic + Fixed compilation of dprintf, which uses read/write, for MSVC. + +* Fixed various compilation problems on Digital Unix (mainly associated with + va_list). + + +Version 1.2 - 2001/04/11 +------------------------ +* Added autoconf integration. If compiled with HAVE_CONFIG_H the following + happens. Firstly, is included. Secondly, trio will only be + compiled if WITH_TRIO is defined herein. Thirdly, if TRIO_REPLACE_STDIO is + defined, only stdio functions that have not been detected by autoconf, i.e. + those not defined by HAVE_PRINTF or similar, will be replaced by trio + functions (suggested by Daniel Veillard). + +* Fixed '%m.nf' output. Previously trio did not treat the width properly + in all cases (reported by Gisli Ottarsson). + +* Added explicit promotion for the scanfv family. + +* Fixed more C++ compilation warnings. + + +Version 1.1 - 2001/02/25 +------------------------ +* Added explicit promotion for the printfv familiy. A float must be specified + by %hf. + +* Fixed positionals for printfv (reported by Gisli Ottarsson). + +* Fixed an integer to pointer conversion problem on the SGI MIPS C compiler + (reported by Gisli Ottarsson). + +* Fixed ANSI C++ warnings (type casting, and namespace is a reserved keyword). + +* Added \n to all examples in the documentation to prevent confusion. + +* Fixed StrSubstringMax + + +Version 1.0 - 2000/12/10 +------------------------ +* Bumped Version number. + + +Version 0.25 - 2000/12/09 +------------------------- +* Wrote more documentation. + +* Improved NaN support and added NaN to regression test. + +* Fixed C99 support. + +* Added missing getter/setter functions. + + +Version 0.24 - 2000/12/02 +------------------------- +* Added callback functionality for the user-defined specifier (<>). All + the necessary functions are defined in triop.h header file. See the + documentation for trio_register for further detail. + +* Wrote initial documentation on the callback functionality. + +* Added the printfv and scanfv family of functions, which takes a pointer + array rather than variadic arguments. Each pointer in the array must point + to the associated data (requested by Bruce Korb). + +* As indicated in version 0.21 the extension modifiers (<>) have now been + completely removed. + +* Added skipping of thousand-separators in floating-point number scanning. + + +Version 0.23 - 2000/10/21 +------------------------- +* Added width to scanning of floating-point numbers. + +* Wrote more documentation on trio_printf. + +* Fixed problem with trailing zeroes after decimal-point. + + +Version 0.22 - 2000/08/06 +------------------------- +* Added LC_CTYPE locale dependent character class expressions to scan lists. + Included are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], + [:lower:], [:print:], [:punct:], [:space:], [:upper:], [:xdigit:] + +* Added C escapes to alternative string formatting and scanning. + +* Added StrSubstringMax. + +* Wrote a little more documentation. + +* Fixed scanf return values. + +* Fixed a sign error for non-ascii characters. + + +Version 0.21 - 2000/07/19 +------------------------- +* Converted the documentation to TeX. With latex2man the documentation can + automatically be converted into man pages. + +* Added trio_scanf, trio_vscanf, trio_fscanf, and trio_vfscanf. + +* Added trio_dprintf, trio_vdprintf, trio_dscanf, and trio_vdscanf. These + functions can be used to write and read directly to pipes and sockets (the + assume blocking sockets). Stdio buffering is surpassed, so the functions are + async-safe. However, reading from stdin (STDIN_FILENO) or writing to stdout + (STDOUT_FILENO) reintroduces the buffering. + +* Paul Janzen + Added trio_asprintf and trio_vasprintf, which are compatible with the GNU + and BSD interfaces. + +* Added scanlist ranges for group scanning (%[]). + +* Added width for scanning (missing for floating-point numbers though). + +* Added variable size modifier (&) to handle system defined types of unknown + size. This modifier makes certain assumptions about the integer sizes, which + may not be valid on any machine. Consequently, the modifier will remain + undocumented, as it may be removed later. + +* Added \777 and \xFF to alternative string scanning (%#s) + +* Added the TRIO_REPLACE_STDIO check in the header. + +* Improved performance of the multibyte character parsing. + +* Fixed positionals (%n$) which had stopped working. + +* Fixed hh and ll modifiers to allow exactly two letters and no more. + +* Fixed ANSI C++ warnings. Also fixed the compiler warning about casting + between integer and pointer (this has been annoying me for ages). + +* Fixed snprintf and vsnprintf with zero buffer size. + +* Fixed NAN problems (reported by Keith Briggs). + +* Fixed parsing of multibyte characters. The format string was not correctly + advanced in case of a multibyte character. + +* Renamed many of the internal functions to have more consistant names. + +* Removed the and modifiers. They are not really worth + including. The other <> modifiers may disappear as well. + + +Version 0.20 - 2000/06/05 +------------------------- +* Added intmax_t and ptrdiff_t support. + +* Added support for LC_NUMERIC grouping. + +* Added double-dot notation for the conversion base. The style is now + %width.precision.base, where any argument can be a number, an asterix + indicating a parameter, or be omitted entirely. For example, %*..2i is + to specify binary numbers without precision, and with width as a parameter + on the va_list. + +* Added sticky modifier (!), which makes subsequent specifiers of the same + type reuse the current modifiers. Inspired by a suggestion from Gary Porter. + +* Added group scanning (%[]). Scanlist ranges and multibyte sequences are not + supported yet. + +* Added count scanning (%n). + +* Changed the number scanning to accept thousand separators and any base. + +* Fixed positional for parameters. It is possible to write something like + %3$*1$.*2$d (which happens to be the same as %*.*d). + +* Fixed precision of integers. + +* Fixed parameter flags. Before trio could only handle one parameter flag per + specifier, although two (three with double-dot base) were possible. + +* Fixed isinf() for those platforms where it is unimplemented. + + +Version 0.18 - 2000/05/27 +------------------------- +* Rewrote the entire floating-point formatting function (Danny Dulai had + reported several errors and even supplied some patches, which unfortunately + were lost due to the refactoring). + +* Removed the use of strlen() in the declaration of a stack array. This + caused problems on some compilers (besides it isn't really ANSI C compliant + anyways). Using some arbitrarily chosen maximum value; should examine if + some standard defines an upper limit on the length of decimal-point and + thousands-separator (sizeof(wchar_t) perhaps?) + +* Changed the parsing of the format string to be multibyte aware. + + +Version 0.17 - 2000/05/19 +------------------------- +* Added INF, -INF, and NAN for floating-point numbers. + +* Fixed %#.9g -- alternative with precision. + +* Ken Gibson + Fixed printing of negative hex numbers + +* Joerg (last name unknown) + Fixed convertion of non-ASCII characters + + +Version 0.16 - 1999/08/06 +------------------------- +* Changed the constness of the second argument of StrFloat and StrDouble. The + lack of parameter overloading in C is the reason for the strange use of + constness in strtof and strtod. + +* Cleaned up constness. + + +Version 0.15 - 1999/07/23 +------------------------- +* Fixed the internal representation of numbers from signed to unsigned. Signed + numbers posed a problem for large unsigned numbers (reported by Tero) + +* Fixed a tiny bug in trio_vsprintfcat + +* Changed the meaning of the max argument of StrAppendMax to be consistant + with StrFormatAppendMax. Now it is the maximal size of the entire target + buffer, not just the appended size. This makes it easier to avoid buffer + overflows (requested by Tero) + + +Version 0.14 - 1999/05/16 +------------------------- +* Added size_t support (just waiting for a C99 compliant compiler to add + ptrdiff_t and intmax_t) + +* Rewrote TrioOutStreamDouble so it does not use the libc sprintf to emulate + floating-point anylonger. + +* Fixed width, precision, and adjustment for numbers and doubles. + + +Version 0.13 - 1999/05/06 +------------------------- +* Fixed zero padding for %d. Now %d will only zero pad if explicitly requested + to do so with the 0 flag (reported by Tero). + +* Fixed an incorrect while() condition in TrioGetString (reported by Tero). + + +Version 0.12 - 1999/04/19 +------------------------- +* Fixed incorrect zero padding of pointers + +* Added StrHash with STRIO_HASH_PLAIN + +* Added StrFormatDateMax + + +Version 0.11 - 1999/03/25 +------------------------- +* Made it compile under cygwin + +* Fixed a bug were TrioPreprocess would return an error if no formatting chars + were found (reported by Tero). + + +Version - 1999/03/19 +-------------------- +* Added trio_strerror and TRIO_ERROR_NAME. + +* Changed the error codes to be positive (as errno) + +* Fixed two reads of uninitialized memory reported by Purify + +* Added binary specifiers 'b' and 'B' (like SCO.) ThousandSeparator can be + used to separate nibbles (4 bit) + +* Renamed all Internal* functions to Trio*, which seems like a better + namespace (even though it is of no practical interest because these + functions are not visible beyond the scope of this file.) + + +Version - 1999/03/12 +-------------------- +* Added hex-float format for StrToDouble + +* Double references and gaps in the arguments are not allowed (for the %n$ + format) and in both cases an error code is returned. + +* Added StrToDouble (and StrToFloat) + + +Version - 1999/03/08 +-------------------- +* Added InStream and OutStream to the trio_T structure. + +* Started work on TrioScan. + +* Return values for errors changed. Two macros to unpack the error code has + been added to the header. + +* Shortshort (hh) flag added. + +* %#s also quotes the quote-char now. + +* Removed the 'errorInFormat' boolean, which isn't used anymore after the + functions bail out with an error instead. + + +Version - 1999/03/04 +-------------------- +* More than MAX_PARAMETERS parametes will now cause the TrioPreprocess() + function to return error. + +* Unknown flags and/or specifiers cause errors too. + +* Added trio_snprintfcat and trio_vsnprintfcat and the defined name + StrFormatAppendMax. They append a formatted string to the end of a string. + +* Define MAX_PARAMETERS to 128 at all times instead of using NL_ARGMAX when + that exists. + +* Added platform fixes for Amiga as suggested by Tero Jänkä + + +Version - 1999/01/31 +-------------------- +* vaprintf did add a zero byte even when it had failed. + +* Cleaned up the code for locale handling and thousand separator + +* Added trio_aprintf() and trio_vaprintf(). They return an allocated string. + +* Added thousands separator for numbers + +* Added floating point support for *printf + + +Version - 1998/10/20 +-------------------- +* StrMatchCase() called StrMatch() instead of itself recursively + +* Rewrote the implementation of *printf and *scanf and put all the code in + this file. Extended qualifiers and qualifiers from other standards were + added. + +* Added StrSpanFunction, StrToLong, and StrToUnsignedLong + + +Version - 1998/05/23 +-------------------- +* Made the StrEqual* functions resistant to NULL pointers + +* Turns out strdup() is no standard at all, and some platforms (I seem to + recall HP-UX) has problems with it. Made our own StrDuplicate() instead. + +* Added StrFormat() and StrFormatMax() to serve as sprintf() and snprintf() + respectively. diff --git a/libmednahawk/include/trio/trio.h b/libmednahawk/include/trio/trio.h new file mode 100644 index 0000000000..975fb00621 --- /dev/null +++ b/libmednahawk/include/trio/trio.h @@ -0,0 +1,235 @@ +/************************************************************************* + * + * $Id: trio.h,v 1.19 2009/09/13 10:12:22 breese Exp $ + * + * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************* + * + * http://ctrio.sourceforge.net/ + * + ************************************************************************/ + +#ifndef TRIO_TRIO_H +#define TRIO_TRIO_H + +#if !defined(WITHOUT_TRIO) + +/* + * Use autoconf defines if present. Packages using trio must define + * HAVE_CONFIG_H as a compiler option themselves. + */ +#if defined(HAVE_CONFIG_H) +# include +#endif + +#include "triop.h" + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Error codes. + * + * Remember to add a textual description to trio_strerror. + */ +enum { + TRIO_EOF = 1, + TRIO_EINVAL = 2, + TRIO_ETOOMANY = 3, + TRIO_EDBLREF = 4, + TRIO_EGAP = 5, + TRIO_ENOMEM = 6, + TRIO_ERANGE = 7, + TRIO_ERRNO = 8, + TRIO_ECUSTOM = 9 +}; + +/* Error macros */ +#define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF) +#define TRIO_ERROR_POSITION(x) ((-(x)) >> 8) +#define TRIO_ERROR_NAME(x) trio_strerror(x) + +typedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int)); +typedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t)); + +TRIO_CONST char *trio_strerror TRIO_PROTO((int)); + +/************************************************************************* + * Print Functions + */ + +int trio_printf TRIO_PROTO((TRIO_CONST char *format, ...)); +int trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args)); +int trio_printfv TRIO_PROTO((TRIO_CONST char *format, void **args)); + +int trio_fprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...)); +int trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args)); +int trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args)); + +int trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char *format, ...)); +int trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args)); +int trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args)); + +int trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure, + TRIO_CONST char *format, ...)); +int trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure, + TRIO_CONST char *format, va_list args)); +int trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure, + TRIO_CONST char *format, void **args)); + +int trio_sprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, ...)); +int trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args)); +int trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, void **args)); + +int trio_snprintf TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...)); +int trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format, + va_list args)); +int trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format, + void **args)); + +int trio_snprintfcat TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...)); +int trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format, + va_list args)); + +#if defined(TRIO_DEPRECATED) +char *trio_aprintf TRIO_PROTO((TRIO_CONST char *format, ...)); +char *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args)); +#endif + +int trio_asprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, ...)); +int trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args)); +int trio_asprintfv TRIO_PROTO((char **result, TRIO_CONST char *format, trio_pointer_t * args)); + +/************************************************************************* + * Scan Functions + */ +int trio_scanf TRIO_PROTO((TRIO_CONST char *format, ...)); +int trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args)); +int trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args)); + +int trio_fscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...)); +int trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args)); +int trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args)); + +int trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char *format, ...)); +int trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args)); +int trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args)); + +int trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure, + TRIO_CONST char *format, ...)); +int trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure, + TRIO_CONST char *format, va_list args)); +int trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure, + TRIO_CONST char *format, void **args)); + +int trio_sscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, ...)); +int trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args)); +int trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args)); + +/************************************************************************* + * Locale Functions + */ +void trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint)); +void trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator)); +void trio_locale_set_grouping TRIO_PROTO((char *grouping)); + +/************************************************************************* + * Renaming + */ +#ifdef TRIO_REPLACE_STDIO +/* Replace the functions */ +#ifndef HAVE_PRINTF +# undef printf +# define printf trio_printf +#endif +#ifndef HAVE_VPRINTF +# undef vprintf +# define vprintf trio_vprintf +#endif +#ifndef HAVE_FPRINTF +# undef fprintf +# define fprintf trio_fprintf +#endif +#ifndef HAVE_VFPRINTF +# undef vfprintf +# define vfprintf trio_vfprintf +#endif +#ifndef HAVE_SPRINTF +# undef sprintf +# define sprintf trio_sprintf +#endif +#ifndef HAVE_VSPRINTF +# undef vsprintf +# define vsprintf trio_vsprintf +#endif +#ifndef HAVE_SNPRINTF +# undef snprintf +# define snprintf trio_snprintf +#endif +#ifndef HAVE_VSNPRINTF +# undef vsnprintf +# define vsnprintf trio_vsnprintf +#endif +#ifndef HAVE_SCANF +# undef scanf +# define scanf trio_scanf +#endif +#ifndef HAVE_VSCANF +# undef vscanf +# define vscanf trio_vscanf +#endif +#ifndef HAVE_FSCANF +# undef fscanf +# define fscanf trio_fscanf +#endif +#ifndef HAVE_VFSCANF +# undef vfscanf +# define vfscanf trio_vfscanf +#endif +#ifndef HAVE_SSCANF +# undef sscanf +# define sscanf trio_sscanf +#endif +#ifndef HAVE_VSSCANF +# undef vsscanf +# define vsscanf trio_vsscanf +#endif +/* These aren't stdio functions, but we make them look similar */ +#undef dprintf +#define dprintf trio_dprintf +#undef vdprintf +#define vdprintf trio_vdprintf +#undef aprintf +#define aprintf trio_aprintf +#undef vaprintf +#define vaprintf trio_vaprintf +#undef asprintf +#define asprintf trio_asprintf +#undef vasprintf +#define vasprintf trio_vasprintf +#undef dscanf +#define dscanf trio_dscanf +#undef vdscanf +#define vdscanf trio_vdscanf +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* WITHOUT_TRIO */ + +#endif /* TRIO_TRIO_H */ diff --git a/libmednahawk/include/trio/triodef.h b/libmednahawk/include/trio/triodef.h new file mode 100644 index 0000000000..2ed3a597ac --- /dev/null +++ b/libmednahawk/include/trio/triodef.h @@ -0,0 +1,335 @@ +/************************************************************************* + * + * $Id: triodef.h,v 1.35 2009/09/20 11:37:14 breese Exp $ + * + * Copyright (C) 2001 Bjorn Reese + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************/ + +#ifndef TRIO_TRIODEF_H +#define TRIO_TRIODEF_H + +/************************************************************************* + * Compiler support detection + */ + +#if defined(__GNUC__) +# define TRIO_COMPILER_GCC +#endif + +#if defined(__SUNPRO_CC) +# define TRIO_COMPILER_SUNPRO __SUNPRO_CC +#else +# if defined(__SUNPRO_C) +# define TRIO_COMPILER_SUNPRO __SUNPRO_C +# endif +#endif + +#if defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__) +# define TRIO_COMPILER_XLC +#else +# if defined(_AIX) && !defined(__GNUC__) +# define TRIO_COMPILER_XLC /* Workaround for old xlc */ +# endif +#endif + +#if defined(__DECC) || defined(__DECCXX) +# define TRIO_COMPILER_DECC +#else +# if defined(__osf__) && defined(__LANGUAGE_C__) && !defined(__GNUC__) +# define TRIO_COMPILER_DECC /* Workaround for old DEC C compilers */ +# endif +#endif + +#if defined(__HP_aCC) || defined(__HP_cc) +# define TRIO_COMPILER_HP +#endif + +#if defined(sgi) || defined(__sgi) +# define TRIO_COMPILER_MIPSPRO +#endif + +#if defined(_MSC_VER) +# define TRIO_COMPILER_MSVC +#endif + +#if defined(__BORLANDC__) +# define TRIO_COMPILER_BCB +#endif + +/************************************************************************* + * Platform support detection + */ + +#if defined(VMS) || defined(__VMS) +# define TRIO_PLATFORM_VMS +#endif + +#if defined(unix) || defined(__unix) || defined(__unix__) +# define TRIO_PLATFORM_UNIX +#endif + +#if defined(TRIO_COMPILER_XLC) || defined(_AIX) +# define TRIO_PLATFORM_UNIX +#endif + +#if defined(TRIO_COMPILER_DECC) || defined(__osf___) +# if !defined(TRIO_PLATFORM_VMS) +# define TRIO_PLATFORM_UNIX +# endif +#endif + +#if defined(__NetBSD__) +# define TRIO_PLATFORM_UNIX +#endif + +#if defined(__Lynx__) +# define TRIO_PLATFORM_UNIX +# define TRIO_PLATFORM_LYNX +#endif + +#if defined(__APPLE__) && defined(__MACH__) +# define TRIO_PLATFORM_UNIX +#endif + +#if defined(__QNX__) +# define TRIO_PLATFORM_UNIX +# define TRIO_PLATFORM_QNX +#endif + +#if defined(__CYGWIN__) +# define TRIO_PLATFORM_UNIX +#endif + +#if defined(AMIGA) && defined(TRIO_COMPILER_GCC) +# define TRIO_PLATFORM_UNIX +#endif + +#if defined(TRIO_COMPILER_MSVC) || defined(WIN32) || defined(_WIN32) +# define TRIO_PLATFORM_WIN32 +#endif + +#if defined(_WIN32_WCE) +# define TRIO_PLATFORM_WINCE +#endif + +#if defined(mpeix) || defined(__mpexl) +# define TRIO_PLATFORM_MPEIX +#endif + +#if defined(_AIX) +# define TRIO_PLATFORM_AIX +#endif + +#if defined(__hpux) +# define TRIO_PLATFORM_HPUX +#endif + +#if defined(sun) || defined(__sun__) +# if defined(__SVR4) || defined(__svr4__) +# define TRIO_PLATFORM_SOLARIS +# else +# define TRIO_PLATFORM_SUNOS +# endif +#endif + +/************************************************************************* + * Standards support detection + */ + +#if defined(__STDC__) \ + || defined(_MSC_EXTENSIONS) \ + || defined(TRIO_COMPILER_BCB) +# define PREDEF_STANDARD_C89 +#endif +#if defined(__STDC_VERSION__) +# define PREDEF_STANDARD_C90 +#endif +#if (__STDC_VERSION__ - 0 >= 199409L) +# define PREDEF_STANDARD_C94 +#endif +#if (__STDC_VERSION__ - 0 >= 199901L) +# define PREDEF_STANDARD_C99 +#endif +#if defined(TRIO_COMPILER_SUNPRO) && (TRIO_COMPILER_SUNPRO >= 0x420) +# if !defined(PREDEF_STANDARD_C94) +# define PREDEF_STANDARD_C94 +# endif +#endif + +#if defined(__cplusplus) +# define PREDEF_STANDARD_CXX +#endif +#if __cplusplus - 0 >= 199711L +# define PREDEF_STANDARD_CXX89 +#endif + +#if defined(TRIO_PLATFORM_UNIX) +# include +#endif + +#if defined(_POSIX_VERSION) +# define PREDEF_STANDARD_POSIX _POSIX_VERSION +# if (_POSIX_VERSION >= 199506L) +# define PREDEF_STANDARD_POSIX_1996 +# endif +#endif + +#if (_XOPEN_VERSION - 0 >= 3) || defined(_XOPEN_XPG3) +# define PREDEF_STANDARD_XPG3 +#endif +#if (_XOPEN_VERSION - 0 >= 4) || defined(_XOPEN_XPG4) +# define PREDEF_STANDARD_XPG4 +#endif +#if (_XOPEN_VERSION - 0 > 4) \ + || (defined(_XOPEN_UNIX) && (_XOPEN_VERSION - 0 == 4)) +# define PREDEF_STANDARD_UNIX95 +#endif +#if (_XOPEN_VERSION - 0 >= 500) +# define PREDEF_STANDARD_UNIX98 +#endif +#if (_XOPEN_VERSION - 0 >= 600) +# define PREDEF_STANDARD_UNIX03 +#endif + +/************************************************************************* + * Generic defines + */ + +#if !defined(TRIO_PUBLIC) +# define TRIO_PUBLIC +#endif +#if !defined(TRIO_PRIVATE) +# define TRIO_PRIVATE static +#endif + +#if !(defined(PREDEF_STANDARD_C89) || defined(PREDEF_STANDARD_CXX)) +# define TRIO_COMPILER_ANCIENT +#endif + +#if defined(TRIO_COMPILER_ANCIENT) +# define TRIO_CONST +# define TRIO_VOLATILE +# define TRIO_SIGNED +typedef double trio_long_double_t; +typedef char * trio_pointer_t; +# define TRIO_SUFFIX_LONG(x) x +# define TRIO_PROTO(x) () +# define TRIO_NOARGS +# define TRIO_ARGS1(list,a1) list a1; +# define TRIO_ARGS2(list,a1,a2) list a1; a2; +# define TRIO_ARGS3(list,a1,a2,a3) list a1; a2; a3; +# define TRIO_ARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4; +# define TRIO_ARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5; +# define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) list a1; a2; a3; a4; a5; a6; +# define TRIO_ARGS7(list,a1,a2,a3,a4,a5,a6,a7) list a1; a2; a3; a4; a5; a6; a7; +# define TRIO_VARGS2(list,a1,a2) list a1; a2 +# define TRIO_VARGS3(list,a1,a2,a3) list a1; a2; a3 +# define TRIO_VARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4 +# define TRIO_VARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5 +# define TRIO_VA_DECL va_dcl +# define TRIO_VA_START(x,y) va_start(x) +# define TRIO_VA_END(x) va_end(x) +#else /* ANSI C */ +# define TRIO_CONST const +# define TRIO_VOLATILE volatile +# define TRIO_SIGNED signed +typedef long double trio_long_double_t; +typedef void * trio_pointer_t; +# define TRIO_SUFFIX_LONG(x) x ## L +# define TRIO_PROTO(x) x +# define TRIO_NOARGS void +# define TRIO_ARGS1(list,a1) (a1) +# define TRIO_ARGS2(list,a1,a2) (a1,a2) +# define TRIO_ARGS3(list,a1,a2,a3) (a1,a2,a3) +# define TRIO_ARGS4(list,a1,a2,a3,a4) (a1,a2,a3,a4) +# define TRIO_ARGS5(list,a1,a2,a3,a4,a5) (a1,a2,a3,a4,a5) +# define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) (a1,a2,a3,a4,a5,a6) +# define TRIO_ARGS7(list,a1,a2,a3,a4,a5,a6,a7) (a1,a2,a3,a4,a5,a6,a7) +# define TRIO_VARGS2 TRIO_ARGS2 +# define TRIO_VARGS3 TRIO_ARGS3 +# define TRIO_VARGS4 TRIO_ARGS4 +# define TRIO_VARGS5 TRIO_ARGS5 +# define TRIO_VA_DECL ... +# define TRIO_VA_START(x,y) va_start(x,y) +# define TRIO_VA_END(x) va_end(x) +#endif + +#if defined(PREDEF_STANDARD_C99) || defined(PREDEF_STANDARD_CXX) +# define TRIO_INLINE inline +#else +# if defined(TRIO_COMPILER_GCC) +# define TRIO_INLINE __inline__ +# endif +# if defined(TRIO_COMPILER_MSVC) +# define TRIO_INLINE _inline +# endif +# if defined(TRIO_COMPILER_BCB) +# define TRIO_INLINE __inline +# endif +#endif +#if !defined(TRIO_INLINE) +# define TRIO_INLINE +#endif + +/************************************************************************* + * Workarounds + */ + +#if defined(TRIO_PLATFORM_VMS) +/* + * Computations done with constants at compile time can trigger these + * even when compiling with IEEE enabled. + */ +# pragma message disable (UNDERFLOW, FLOATOVERFL) + +# if (__CRTL_VER < 80210001) +/* + * Although the compiler supports C99 language constructs, the C + * run-time library does not contain all C99 functions. + */ +# if defined(PREDEF_STANDARD_C99) +# undef PREDEF_STANDARD_C99 +# endif +# endif +#endif + +/* + * Not all preprocessors supports the LL token. + */ +#if defined(TRIO_COMPILER_MSVC) || defined(TRIO_COMPILER_BCB) +#else +# define TRIO_COMPILER_SUPPORTS_LL +#endif + +#if defined(__CYGWIN__) +/* + * Cygwin defines the macros for hosted C99, but does not support certain + * long double math functions. + */ +# include +# define TRIO_CYGWIN_VERSION_API CYGWIN_VERSION_API_MAJOR * 1000 + \ + CYGWIN_VERSION_API_MINOR +/* + * Please change the version number below when the Cygwin API supports + * long double math functions (powl, fmodl, etc.) + */ +# if TRIO_CYGWIN_VERSION_API < 99999999 +# define TRIO_NO_FLOORL 1 +# define TRIO_NO_CEILL 1 +# define TRIO_NO_POWL 1 +# define TRIO_NO_FMODL 1 +# define TRIO_NO_LOG10L 1 +# endif +#endif + +#endif /* TRIO_TRIODEF_H */ diff --git a/libmednahawk/include/trio/trionan.h b/libmednahawk/include/trio/trionan.h new file mode 100644 index 0000000000..f6bb98fc8d --- /dev/null +++ b/libmednahawk/include/trio/trionan.h @@ -0,0 +1,183 @@ +/************************************************************************* + * + * $Id: trionan.h,v 1.9 2005/03/27 18:52:45 breese Exp $ + * + * Copyright (C) 2001 Bjorn Reese + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************/ + +#ifndef TRIO_TRIONAN_H +#define TRIO_TRIONAN_H + +#include "triodef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(TRIO_PUBLIC_NAN) +# if !defined(TRIO_PUBLIC) +# define TRIO_PUBLIC +# endif +# define TRIO_PUBLIC_NAN TRIO_PUBLIC +#endif + +enum { + TRIO_FP_INFINITE, + TRIO_FP_NAN, + TRIO_FP_NORMAL, + TRIO_FP_SUBNORMAL, + TRIO_FP_ZERO +}; + +/************************************************************************* + * Dependencies + */ + +#if defined(TRIO_EMBED_NAN) + +/* + * The application that trionan is embedded in must define which functions + * it uses. + * + * The following resolves internal dependencies. + */ + +# if defined(TRIO_FUNC_ISNAN) \ + || defined(TRIO_FUNC_ISINF) +# if !defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT) +# define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT +# endif +# endif + +# if defined(TRIO_FUNC_NAN) +# if !defined(TRIO_FUNC_PINF) +# define TRIO_FUNC_PINF +# endif +# endif + +# if defined(TRIO_FUNC_NINF) +# if !defined(TRIO_FUNC_PINF) +# define TRIO_FUNC_PINF +# endif +# endif + +#else + +/* + * When trionan is not embedded all all functions are defined. + */ + +# define TRIO_FUNC_NAN +# define TRIO_FUNC_PINF +# define TRIO_FUNC_NINF +# define TRIO_FUNC_NZERO +# define TRIO_FUNC_ISNAN +# define TRIO_FUNC_ISINF +# define TRIO_FUNC_ISFINITE +# define TRIO_FUNC_SIGNBIT +# define TRIO_FUNC_FPCLASSIFY +# define TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT + +#endif + +/************************************************************************* + * Functions + */ + +/* + * Return NaN (Not-a-Number). + */ +#if defined(TRIO_FUNC_NAN) +TRIO_PUBLIC_NAN double +trio_nan +TRIO_PROTO((void)); +#endif + +/* + * Return positive infinity. + */ +#if defined(TRIO_FUNC_PINF) +TRIO_PUBLIC_NAN double +trio_pinf +TRIO_PROTO((void)); +#endif + +/* + * Return negative infinity. + */ +#if defined(TRIO_FUNC_NINF) +TRIO_PUBLIC_NAN double +trio_ninf +TRIO_PROTO((void)); +#endif + +/* + * Return negative zero. + */ +#if defined(TRIO_FUNC_NZERO) +TRIO_PUBLIC_NAN double +trio_nzero +TRIO_PROTO((TRIO_NOARGS)); +#endif + +/* + * If number is a NaN return non-zero, otherwise return zero. + */ +#if defined(TRIO_FUNC_ISNAN) +TRIO_PUBLIC_NAN int +trio_isnan +TRIO_PROTO((double number)); +#endif + +/* + * If number is positive infinity return 1, if number is negative + * infinity return -1, otherwise return 0. + */ +#if defined(TRIO_FUNC_ISINF) +TRIO_PUBLIC_NAN int +trio_isinf +TRIO_PROTO((double number)); +#endif + +/* + * If number is finite return non-zero, otherwise return zero. + */ +#if defined(TRIO_FUNC_ISFINITE) +TRIO_PUBLIC_NAN int +trio_isfinite +TRIO_PROTO((double number)); +#endif + +#if defined(TRIO_FUNC_SIGNBIT) +TRIO_PUBLIC_NAN int +trio_signbit +TRIO_PROTO((double number)); +#endif + +#if defined(TRIO_FUNC_FPCLASSIFY) +TRIO_PUBLIC_NAN int +trio_fpclassify +TRIO_PROTO((double number)); +#endif + +#if defined(TRIO_FUNC_FPCLASSIFY_AND_SIGNBIT) +TRIO_PUBLIC_NAN int +trio_fpclassify_and_signbit +TRIO_PROTO((double number, int *is_negative)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* TRIO_TRIONAN_H */ diff --git a/libmednahawk/include/trio/triop.h b/libmednahawk/include/trio/triop.h new file mode 100644 index 0000000000..8dff895df1 --- /dev/null +++ b/libmednahawk/include/trio/triop.h @@ -0,0 +1,473 @@ +/************************************************************************* + * + * $Id: triop.h,v 1.18 2009/07/05 10:14:07 breese Exp $ + * + * Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************ + * + * Private functions, types, etc. used for callback functions. + * + * The ref pointer is an opaque type and should remain as such. + * Private data must only be accessible through the getter and + * setter functions. + * + ************************************************************************/ + +#ifndef TRIO_TRIOP_H +#define TRIO_TRIOP_H + +#include "triodef.h" + +#include +#if defined(TRIO_COMPILER_ANCIENT) +# include +#else +# include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************* + * Supported standards + */ + +/* + * TRIO_C99 (=0 or =1) + * + * Define this to 0 to disable C99 format specifier extensions, or + * define to 1 to enable them. The format specifiers that are + * disabled by this switch are labelled with [C99] in the format + * specifier documentation. + */ +#if !defined(TRIO_C99) +# define TRIO_C99 1 +#endif + +/* + * TRIO_BSD (=0 or =1) + * + * Define this to 0 to disable BSD format specifier extensions, or + * define to 1 to enable them. The format specifiers that are + * disabled by this switch are labelled with [BSD] in the format + * specifier documentation. + */ +#if !defined(TRIO_BSD) +# define TRIO_BSD 1 +#endif + +/* + * TRIO_GNU (=0 or =1) + * + * Define this to 0 to disable GNU format specifier extensions, or + * define to 1 to enable them. The format specifiers that are + * disabled by this switch are labelled with [GNU] in the format + * specifier documentation. + */ +#if !defined(TRIO_GNU) +# define TRIO_GNU 1 +#endif + +/* + * TRIO_MISC (=0 or =1) + * + * Define this to 0 to disable miscellaneous format specifier + * extensions, or define to 1 to enable them. The format specifiers + * that are disabled by this switch are labelled with [MISC] in the + * format specifier documentation. + */ +#if !defined(TRIO_MISC) +# define TRIO_MISC 1 +#endif + +/* + * TRIO_UNIX98 (=0 or =1) + * + * Define this to 0 to disable UNIX98 format specifier extensions, + * or define to 1 to enable them. The format specifiers that are + * disabled by this switch are labelled with [UNIX98] in the format + * specifier documentation. + */ +#if !defined(TRIO_UNIX98) +# define TRIO_UNIX98 1 +#endif + +/* + * TRIO_MICROSOFT (=0 or =1) + * + * Define this to 0 to disable Microsoft Visual C format specifier + * extensions, or define to 1 to enable them. The format specifiers + * that are disabled by this switch are labelled with [MSVC] in the + * format specifier documentation. + */ +#if !defined(TRIO_MICROSOFT) +# define TRIO_MICROSOFT 1 +#endif + +/* + * TRIO_EXTENSION (=0 or =1) + * + * Define this to 0 to disable Trio-specific extensions, or define + * to 1 to enable them. This has two effects: it controls whether + * or not the Trio user-defined formating mechanism + * (trio_register() etc) is supported, and it enables or disables + * Trio's own format specifier extensions. The format specifiers + * that are disabled by this switch are labelled with [TRIO] in + * the format specifier documentation. + */ +#if !defined(TRIO_EXTENSION) +# define TRIO_EXTENSION 1 +#endif + +/* + * TRIO_DEPRECATED (=0 or =1) + * + * Define this to 0 to disable deprecated functionality, or define + * to 1 to enable them. + */ +#if !defined(TRIO_DEPRECATED) +# define TRIO_DEPRECATED 1 +#endif + +/************************************************************************* + * Features + */ + +#if defined(TRIO_SNPRINTF_ONLY) +# define TRIO_FEATURE_SCANF 0 +# define TRIO_FEATURE_FILE 0 +# define TRIO_FEATURE_STDIO 0 +# define TRIO_FEATURE_FD 0 +# define TRIO_FEATURE_DYNAMICSTRING 0 +# define TRIO_FEATURE_CLOSURE 0 +# define TRIO_FEATURE_STRERR 0 +# define TRIO_FEATURE_LOCALE 0 +# define TRIO_EMBED_NAN 1 +# define TRIO_EMBED_STRING 1 +#endif + +/* + * TRIO_FEATURE_SCANF (=0 or =1) + * + * Define this to 0 to disable all the scanf() variants, or define to 1 + * to enable them. + */ +#if !defined(TRIO_FEATURE_SCANF) +# define TRIO_FEATURE_SCANF 1 +#endif + +/* + * TRIO_FEATURE_FILE (=0 or =1) + * + * Define this to 0 to disable compilation of the trio_fprintf() and + * trio_fscanf() family of functions, or define to 1 to enable them. + * + * This may be useful on an embedded platform with no filesystem. + * Note that trio_printf() uses fwrite to write to stdout, so if you + * do not have an implementation of fwrite() at all then you must also + * define TRIO_FEATURE_STDIO to 0. + */ +#if !defined(TRIO_FEATURE_FILE) +# define TRIO_FEATURE_FILE 1 +#endif + +/* + * TRIO_FEATURE_STDIO (=0 or =1) + * + * Define this to 0 to disable compilation of the trio_printf() and + * trio_scanf() family of functions, or define to 1 to enable them. + * + * This may be useful on an embedded platform with no standard I/O. + */ +#if !defined(TRIO_FEATURE_STDIO) +# define TRIO_FEATURE_STDIO 1 +#endif + +/* + * TRIO_FEATURE_FD (=0 or =1) + * + * Define this to 0 to disable compilation of the trio_dprintf() and + * trio_dscanf() family of functions, or define to 1 to enable them. + * + * This may be useful on an embedded platform with no filesystem, or on + * a platform that supports file I/O using FILE* but not using raw file + * descriptors. + */ +#if !defined(TRIO_FEATURE_FD) +# define TRIO_FEATURE_FD 1 +#endif + +/* + * TRIO_FEATURE_DYNAMICSTRING (=0 or =1) + * + * Define this to 0 to disable compilation of the trio_aprintf() + * family of functions, or define to 1 to enable them. + * + * If you define both this and TRIO_MINIMAL to 0, then Trio will never + * call malloc or free. + */ +#if !defined(TRIO_FEATURE_DYNAMICSTRING) +# define TRIO_FEATURE_DYNAMICSTRING 1 +#endif + +/* + * TRIO_FEATURE_CLOSURE (=0 or =1) + * + * Define this to 0 to disable compilation of the trio_cprintf() and + * trio_cscanf() family of functions, or define to 1 to enable them. + * + * These functions are rarely needed. This saves a (small) amount of code. + */ +#if !defined(TRIO_FEATURE_CLOSURE) +# define TRIO_FEATURE_CLOSURE 1 +#endif + +/* + * TRIO_FEATURE_ERRORCODE (=0 or =1) + * + * Define this to 0 to return -1 from the print and scan function on + * error, or define to 1 to return a negative number with debugging + * information as part of the return code. + * + * If enabled, the return code will be a negative number, which encodes + * an error code and an error location. These can be decoded with the + * TRIO_ERROR_CODE and TRIO_ERROR_POSITION macros. + */ +#if defined(TRIO_ERRORS) +# define TRIO_FEATURE_ERRORCODE TRIO_ERRORS +#endif +#if !defined(TRIO_FEATURE_ERRORCODE) +# define TRIO_FEATURE_ERRORCODE 1 +#endif + +/* + * TRIO_FEATURE_STRERR (=0 or =1) + * + * Define this to 0 if you do not use trio_strerror(), or define to 1 if + * you do use it. + * + * This saves a (small) amount of code. + */ +#if !defined(TRIO_FEATURE_STRERR) +# define TRIO_FEATURE_STRERR 1 +#endif + +/* + * TRIO_FEATURE_FLOAT (=0 or =1) + * + * Define this to 0 to disable all floating-point support, or define + * to 1 to enable it. + * + * This is useful in restricted embedded platforms that do not support + * floating-point. Obviously you cannot use floating-point format + * specifiers if you define this. + * + * Do not compile trionan.c if you disable this. + */ +#if !defined(TRIO_FEATURE_FLOAT) +# define TRIO_FEATURE_FLOAT 1 +#endif + +/* + * TRIO_FEATURE_LOCALE (=0 or =1) + * + * Define this to 0 to disable customized locale support, or define + * to 1 to enable it. + * + * This saves a (small) amount of code. + */ +#if !defined(TRIO_FEATURE_LOCALE) +# define TRIO_FEATURE_LOCALE 1 +#endif + +/* + * TRIO_MINIMAL + * + * Define this to disable building the public trionan.h and triostr.h. + * If you define this, then you must not compile trionan.c and triostr.c + * separately. + */ +#if defined(TRIO_MINIMAL) +# if !defined(TRIO_EMBED_NAN) +# define TRIO_EMBED_NAN +# endif +# if !defined(TRIO_EMBED_STRING) +# define TRIO_EMBED_STRING +# endif +#endif + +/* Does not work yet. Do not enable */ +#ifndef TRIO_FEATURE_WIDECHAR +# define TRIO_FEATURE_WIDECHAR 0 +#endif + +/************************************************************************* + * Mapping standards to internal features + */ + +#if !defined(TRIO_FEATURE_HEXFLOAT) +# define TRIO_FEATURE_HEXFLOAT (TRIO_C99 && TRIO_FEATURE_FLOAT) +#endif + +#if !defined(TRIO_FEATURE_LONGDOUBLE) +# define TRIO_FEATURE_LONGDOUBLE TRIO_FEATURE_FLOAT +#endif + +#if !defined(TRIO_FEATURE_ERRNO) +# define TRIO_FEATURE_ERRNO TRIO_GNU +#endif + +#if !defined(TRIO_FEATURE_QUAD) +# define TRIO_FEATURE_QUAD (TRIO_BSD || TRIO_GNU) +#endif + +#if !defined(TRIO_FEATURE_SIZE_T) +# define TRIO_FEATURE_SIZE_T TRIO_C99 +#endif + +#if !defined(TRIO_FEATURE_SIZE_T_UPPER) +# define TRIO_FEATURE_SIZE_T_UPPER TRIO_GNU +#endif + +#if !defined(TRIO_FEATURE_PTRDIFF_T) +# define TRIO_FEATURE_PTRDIFF_T TRIO_C99 +#endif + +#if !defined(TRIO_FEATURE_INTMAX_T) +# define TRIO_FEATURE_INTMAX_T TRIO_C99 +#endif + +#if !defined(TRIO_FEATURE_FIXED_SIZE) +# define TRIO_FEATURE_FIXED_SIZE TRIO_MICROSOFT +#endif + +#if !defined(TRIO_FEATURE_POSITIONAL) +# define TRIO_FEATURE_POSITIONAL TRIO_UNIX98 +#endif + +#if !defined(TRIO_FEATURE_USER_DEFINED) +# define TRIO_FEATURE_USER_DEFINED TRIO_EXTENSION +#endif + +#if !defined(TRIO_FEATURE_BINARY) +# define TRIO_FEATURE_BINARY TRIO_EXTENSION +#endif + +#if !defined(TRIO_FEATURE_QUOTE) +# define TRIO_FEATURE_QUOTE TRIO_EXTENSION +#endif + +#if !defined(TRIO_FEATURE_STICKY) +# define TRIO_FEATURE_STICKY TRIO_EXTENSION +#endif + +#if !defined(TRIO_FEATURE_VARSIZE) +# define TRIO_FEATURE_VARSIZE TRIO_EXTENSION +#endif + +#if !defined(TRIO_FEATURE_ROUNDING) +# define TRIO_FEATURE_ROUNDING TRIO_EXTENSION +#endif + +/************************************************************************* + * Memory handling + */ +#ifndef TRIO_MALLOC +# define TRIO_MALLOC(n) malloc(n) +#endif +#ifndef TRIO_REALLOC +# define TRIO_REALLOC(x,n) realloc((x),(n)) +#endif +#ifndef TRIO_FREE +# define TRIO_FREE(x) free(x) +#endif + + +/************************************************************************* + * User-defined specifiers + */ + +typedef int (*trio_callback_t) TRIO_PROTO((trio_pointer_t)); + +trio_pointer_t trio_register TRIO_PROTO((trio_callback_t callback, const char *name)); +void trio_unregister TRIO_PROTO((trio_pointer_t handle)); + +TRIO_CONST char *trio_get_format TRIO_PROTO((trio_pointer_t ref)); +/* Mednafen modification to fix a gcc warning */ +/*TRIO_CONST*/ trio_pointer_t trio_get_argument TRIO_PROTO((trio_pointer_t ref)); + +/* Modifiers */ +int trio_get_width TRIO_PROTO((trio_pointer_t ref)); +void trio_set_width TRIO_PROTO((trio_pointer_t ref, int width)); +int trio_get_precision TRIO_PROTO((trio_pointer_t ref)); +void trio_set_precision TRIO_PROTO((trio_pointer_t ref, int precision)); +int trio_get_base TRIO_PROTO((trio_pointer_t ref)); +void trio_set_base TRIO_PROTO((trio_pointer_t ref, int base)); +int trio_get_padding TRIO_PROTO((trio_pointer_t ref)); +void trio_set_padding TRIO_PROTO((trio_pointer_t ref, int is_padding)); +int trio_get_short TRIO_PROTO((trio_pointer_t ref)); /* h */ +void trio_set_shortshort TRIO_PROTO((trio_pointer_t ref, int is_shortshort)); +int trio_get_shortshort TRIO_PROTO((trio_pointer_t ref)); /* hh */ +void trio_set_short TRIO_PROTO((trio_pointer_t ref, int is_short)); +int trio_get_long TRIO_PROTO((trio_pointer_t ref)); /* l */ +void trio_set_long TRIO_PROTO((trio_pointer_t ref, int is_long)); +int trio_get_longlong TRIO_PROTO((trio_pointer_t ref)); /* ll */ +void trio_set_longlong TRIO_PROTO((trio_pointer_t ref, int is_longlong)); +int trio_get_longdouble TRIO_PROTO((trio_pointer_t ref)); /* L */ +void trio_set_longdouble TRIO_PROTO((trio_pointer_t ref, int is_longdouble)); +int trio_get_alternative TRIO_PROTO((trio_pointer_t ref)); /* # */ +void trio_set_alternative TRIO_PROTO((trio_pointer_t ref, int is_alternative)); +int trio_get_alignment TRIO_PROTO((trio_pointer_t ref)); /* - */ +void trio_set_alignment TRIO_PROTO((trio_pointer_t ref, int is_leftaligned)); +int trio_get_spacing TRIO_PROTO((trio_pointer_t ref)); /* (space) */ +void trio_set_spacing TRIO_PROTO((trio_pointer_t ref, int is_space)); +int trio_get_sign TRIO_PROTO((trio_pointer_t ref)); /* + */ +void trio_set_sign TRIO_PROTO((trio_pointer_t ref, int is_showsign)); +#if TRIO_FEATURE_QUOTE +int trio_get_quote TRIO_PROTO((trio_pointer_t ref)); /* ' */ +void trio_set_quote TRIO_PROTO((trio_pointer_t ref, int is_quote)); +#endif +int trio_get_upper TRIO_PROTO((trio_pointer_t ref)); +void trio_set_upper TRIO_PROTO((trio_pointer_t ref, int is_upper)); +#if TRIO_FEATURE_INTMAX_T +int trio_get_largest TRIO_PROTO((trio_pointer_t ref)); /* j */ +void trio_set_largest TRIO_PROTO((trio_pointer_t ref, int is_largest)); +#endif +#if TRIO_FEATURE_PTRDIFF_T +int trio_get_ptrdiff TRIO_PROTO((trio_pointer_t ref)); /* t */ +void trio_set_ptrdiff TRIO_PROTO((trio_pointer_t ref, int is_ptrdiff)); +#endif +#if TRIO_FEATURE_SIZE_T +int trio_get_size TRIO_PROTO((trio_pointer_t ref)); /* z / Z */ +void trio_set_size TRIO_PROTO((trio_pointer_t ref, int is_size)); +#endif + +/* Printing */ +int trio_print_ref TRIO_PROTO((trio_pointer_t ref, const char *format, ...)); +int trio_vprint_ref TRIO_PROTO((trio_pointer_t ref, const char *format, va_list args)); +int trio_printv_ref TRIO_PROTO((trio_pointer_t ref, const char *format, trio_pointer_t *args)); + +void trio_print_int TRIO_PROTO((trio_pointer_t ref, int number)); +void trio_print_uint TRIO_PROTO((trio_pointer_t ref, unsigned int number)); +/* void trio_print_long TRIO_PROTO((trio_pointer_t ref, long number)); */ +/* void trio_print_ulong TRIO_PROTO((trio_pointer_t ref, unsigned long number)); */ +void trio_print_double TRIO_PROTO((trio_pointer_t ref, double number)); +void trio_print_string TRIO_PROTO((trio_pointer_t ref, TRIO_CONST char *string)); +void trio_print_pointer TRIO_PROTO((trio_pointer_t ref, trio_pointer_t pointer)); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* TRIO_TRIOP_H */ diff --git a/libmednahawk/include/trio/triostr.h b/libmednahawk/include/trio/triostr.h new file mode 100644 index 0000000000..528174551c --- /dev/null +++ b/libmednahawk/include/trio/triostr.h @@ -0,0 +1,681 @@ +/************************************************************************* + * + * $Id: triostr.h,v 1.18 2010/01/26 13:02:02 breese Exp $ + * + * Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + ************************************************************************/ + +#ifndef TRIO_TRIOSTR_H +#define TRIO_TRIOSTR_H + +/* + * Documentation is located in triostr.c + */ + +#include +#include +#include +#include +#include "triodef.h" +#include "triop.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + TRIO_HASH_NONE = 0, + TRIO_HASH_PLAIN, + TRIO_HASH_TWOSIGNED +}; + +#if !defined(TRIO_PUBLIC_STRING) +# if !defined(TRIO_PUBLIC) +# define TRIO_PUBLIC +# endif +# define TRIO_PUBLIC_STRING TRIO_PUBLIC +#endif + +/************************************************************************* + * Dependencies + */ + +#if defined(TRIO_EMBED_STRING) + +/* + * The application that triostr is embedded in must define which functions + * it uses. + * + * The following resolves internal dependencies. + */ + +# if defined(TRIO_FUNC_XSTRING_SET) +# if !defined(TRIO_FUNC_DUPLICATE) +# define TRIO_FUNC_DUPLICATE +# endif +# endif + +# if defined(TRIO_FUNC_DUPLICATE) \ + || defined(TRIO_FUNC_DUPLICATE_MAX) \ + || defined(TRIO_FUNC_STRING_DUPLICATE) \ + || defined(TRIO_FUNC_XSTRING_DUPLICATE) +# if !defined(TRIO_FUNC_CREATE) +# define TRIO_FUNC_CREATE +# endif +# if !defined(TRIO_FUNC_COPY_MAX) +# define TRIO_FUNC_COPY_MAX +# endif +# endif + +# if defined(TRIO_FUNC_STRING_CREATE) +# if !defined(TRIO_FUNC_STRING_DESTROY) +# define TRIO_FUNC_STRING_DESTROY +# endif +# endif + +# if defined(TRIO_FUNC_STRING_DESTROY) \ + || defined(TRIO_FUNC_XSTRING_SET) +# if !defined(TRIO_FUNC_DESTROY) +# define TRIO_FUNC_DESTROY +# endif +# endif + +# if defined(TRIO_FUNC_EQUAL_LOCALE) \ + || defined(TRIO_FUNC_STRING_EQUAL) \ + || defined(TRIO_FUNC_XSTRING_EQUAL) +# if !defined(TRIO_FUNC_EQUAL) +# define TRIO_FUNC_EQUAL +# endif +# endif + +# if defined(TRIO_FUNC_EQUAL_CASE) \ + || defined(TRIO_FUNC_STRING_EQUAL_CASE) \ + || defined(TRIO_FUNC_XSTRING_EQUAL_CASE) +# if !defined(TRIO_FUNC_EQUAL_CASE) +# define TRIO_FUNC_EQUAL_CASE +# endif +# endif + +# if defined(TRIO_FUNC_SUBSTRING_MAX) \ + || defined(TRIO_FUNC_STRING_EQUAL_MAX) \ + || defined(TRIO_FUNC_XSTRING_EQUAL_MAX) +# if !defined(TRIO_FUNC_EQUAL_MAX) +# define TRIO_FUNC_EQUAL_MAX +# endif +# endif + +# if defined(TRIO_FUNC_TO_DOUBLE) \ + || defined(TRIO_FUNC_TO_FLOAT) +# if !defined(TRIO_FUNC_TO_LONG_DOUBLE) +# define TRIO_FUNC_TO_LONG_DOUBLE +# endif +# endif + +# if defined(TRIO_FUNC_STRING_TERMINATE) +# if !defined(TRIO_FUNC_XSTRING_APPEND_CHAR) +# define TRIO_FUNC_XSTRING_APPEND_CHAR +# endif +# endif + +# if defined(TRIO_FUNC_XSTRING_APPEND_CHAR) +# if !defined(TRIO_FUNC_STRING_SIZE) +# define TRIO_FUNC_STRING_SIZE +# endif +# endif + +#else + +/* + * When triostr is not embedded all functions are defined. + */ + +# define TRIO_FUNC_APPEND +# define TRIO_FUNC_APPEND_MAX +# define TRIO_FUNC_CONTAINS +# define TRIO_FUNC_COPY +# define TRIO_FUNC_COPY_MAX +# define TRIO_FUNC_CREATE +# define TRIO_FUNC_DESTROY +# define TRIO_FUNC_DUPLICATE +# define TRIO_FUNC_DUPLICATE_MAX +# define TRIO_FUNC_EQUAL +# define TRIO_FUNC_EQUAL_CASE +# define TRIO_FUNC_EQUAL_CASE_MAX +# define TRIO_FUNC_EQUAL_LOCALE +# define TRIO_FUNC_EQUAL_MAX +# define TRIO_FUNC_ERROR +# if !defined(TRIO_PLATFORM_WINCE) +# define TRIO_FUNC_FORMAT_DATE_MAX +# endif +# define TRIO_FUNC_HASH +# define TRIO_FUNC_INDEX +# define TRIO_FUNC_INDEX_LAST +# define TRIO_FUNC_LENGTH +# define TRIO_FUNC_LENGTH_MAX +# define TRIO_FUNC_LOWER +# define TRIO_FUNC_MATCH +# define TRIO_FUNC_MATCH_CASE +# define TRIO_FUNC_SPAN_FUNCTION +# define TRIO_FUNC_SUBSTRING +# define TRIO_FUNC_SUBSTRING_MAX +# define TRIO_FUNC_TO_DOUBLE +# define TRIO_FUNC_TO_FLOAT +# define TRIO_FUNC_TO_LONG +# define TRIO_FUNC_TO_LONG_DOUBLE +# define TRIO_FUNC_TO_LOWER +# define TRIO_FUNC_TO_UNSIGNED_LONG +# define TRIO_FUNC_TO_UPPER +# define TRIO_FUNC_TOKENIZE +# define TRIO_FUNC_UPPER + +# define TRIO_FUNC_STRING_APPEND +# define TRIO_FUNC_STRING_CONTAINS +# define TRIO_FUNC_STRING_COPY +# define TRIO_FUNC_STRING_CREATE +# define TRIO_FUNC_STRING_DESTROY +# define TRIO_FUNC_STRING_DUPLICATE +# define TRIO_FUNC_STRING_EQUAL +# define TRIO_FUNC_STRING_EQUAL_CASE +# define TRIO_FUNC_STRING_EQUAL_CASE_MAX +# define TRIO_FUNC_STRING_EQUAL_MAX +# define TRIO_FUNC_STRING_EXTRACT +# if !defined(TRIO_PLATFORM_WINCE) +# define TRIO_FUNC_STRING_FORMAT_DATE_MAX +# endif +# define TRIO_FUNC_STRING_GET +# define TRIO_FUNC_STRING_INDEX +# define TRIO_FUNC_STRING_INDEX_LAST +# define TRIO_FUNC_STRING_LENGTH +# define TRIO_FUNC_STRING_LOWER +# define TRIO_FUNC_STRING_MATCH +# define TRIO_FUNC_STRING_MATCH_CASE +# define TRIO_FUNC_STRING_SIZE +# define TRIO_FUNC_STRING_SUBSTRING +# define TRIO_FUNC_STRING_TERMINATE +# define TRIO_FUNC_STRING_UPPER + +# define TRIO_FUNC_XSTRING_APPEND +# define TRIO_FUNC_XSTRING_APPEND_CHAR +# define TRIO_FUNC_XSTRING_APPEND_MAX +# define TRIO_FUNC_XSTRING_CONTAINS +# define TRIO_FUNC_XSTRING_COPY +# define TRIO_FUNC_XSTRING_DUPLICATE +# define TRIO_FUNC_XSTRING_EQUAL +# define TRIO_FUNC_XSTRING_EQUAL_CASE +# define TRIO_FUNC_XSTRING_EQUAL_CASE_MAX +# define TRIO_FUNC_XSTRING_EQUAL_MAX +# define TRIO_FUNC_XSTRING_MATCH +# define TRIO_FUNC_XSTRING_MATCH_CASE +# define TRIO_FUNC_XSTRING_SET +# define TRIO_FUNC_XSTRING_SUBSTRING + +#endif + + +/************************************************************************* + * String functions + */ + +#if defined(TRIO_FUNC_APPEND) +TRIO_PUBLIC_STRING int +trio_append +TRIO_PROTO((char *target, TRIO_CONST char *source)); +#endif + +#if defined(TRIO_FUNC_APPEND_MAX) +TRIO_PUBLIC_STRING int +trio_append_max +TRIO_PROTO((char *target, size_t max, TRIO_CONST char *source)); +#endif + +#if defined(TRIO_FUNC_CONTAINS) +TRIO_PUBLIC_STRING int +trio_contains +TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *substring)); +#endif + +#if defined(TRIO_FUNC_COPY) +TRIO_PUBLIC_STRING int +trio_copy +TRIO_PROTO((char *target, TRIO_CONST char *source)); +#endif + +#if defined(TRIO_FUNC_COPY_MAX) +TRIO_PUBLIC_STRING int +trio_copy_max +TRIO_PROTO((char *target, size_t max, TRIO_CONST char *source)); +#endif + +#if defined(TRIO_FUNC_CREATE) +TRIO_PUBLIC_STRING char * +trio_create +TRIO_PROTO((size_t size)); +#endif + +#if defined(TRIO_FUNC_DESTROY) +TRIO_PUBLIC_STRING void +trio_destroy +TRIO_PROTO((char *string)); +#endif + +#if defined(TRIO_FUNC_DUPLICATE) +TRIO_PUBLIC_STRING char * +trio_duplicate +TRIO_PROTO((TRIO_CONST char *source)); +#endif + +#if defined(TRIO_FUNC_DUPLICATE_MAX) +TRIO_PUBLIC_STRING char * +trio_duplicate_max +TRIO_PROTO((TRIO_CONST char *source, size_t max)); +#endif + +#if defined(TRIO_FUNC_EQUAL) +TRIO_PUBLIC_STRING int +trio_equal +TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second)); +#endif + +#if defined(TRIO_FUNC_EQUAL_CASE) +TRIO_PUBLIC_STRING int +trio_equal_case +TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second)); +#endif + +#if defined(TRIO_FUNC_EQUAL_CASE_MAX) +TRIO_PUBLIC_STRING int +trio_equal_case_max +TRIO_PROTO((TRIO_CONST char *first, size_t max, TRIO_CONST char *second)); +#endif + +#if defined(TRIO_FUNC_EQUAL_LOCALE) +TRIO_PUBLIC_STRING int +trio_equal_locale +TRIO_PROTO((TRIO_CONST char *first, TRIO_CONST char *second)); +#endif + +#if defined(TRIO_FUNC_EQUAL_MAX) +TRIO_PUBLIC_STRING int +trio_equal_max +TRIO_PROTO((TRIO_CONST char *first, size_t max, TRIO_CONST char *second)); +#endif + +#if defined(TRIO_FUNC_ERROR) +TRIO_PUBLIC_STRING TRIO_CONST char * +trio_error +TRIO_PROTO((int)); +#endif + +#if defined(TRIO_FUNC_FORMAT_DATE_MAX) +TRIO_PUBLIC_STRING size_t +trio_format_date_max +TRIO_PROTO((char *target, size_t max, TRIO_CONST char *format, TRIO_CONST struct tm *datetime)); +#endif + +#if defined(TRIO_FUNC_HASH) +TRIO_PUBLIC_STRING unsigned long +trio_hash +TRIO_PROTO((TRIO_CONST char *string, int type)); +#endif + +#if defined(TRIO_FUNC_INDEX) +TRIO_PUBLIC_STRING char * +trio_index +TRIO_PROTO((TRIO_CONST char *string, int character)); +#endif + +#if defined(TRIO_FUNC_INDEX_LAST) +TRIO_PUBLIC_STRING char * +trio_index_last +TRIO_PROTO((TRIO_CONST char *string, int character)); +#endif + +#if defined(TRIO_FUNC_LENGTH) +TRIO_PUBLIC_STRING size_t +trio_length +TRIO_PROTO((TRIO_CONST char *string)); +#endif + +#if defined(TRIO_FUNC_LENGTH_MAX) +TRIO_PUBLIC_STRING size_t +trio_length_max +TRIO_PROTO((TRIO_CONST char *string, size_t max)); +#endif + +#if defined(TRIO_FUNC_LOWER) +TRIO_PUBLIC_STRING int +trio_lower +TRIO_PROTO((char *target)); +#endif + +#if defined(TRIO_FUNC_MATCH) +TRIO_PUBLIC_STRING int +trio_match +TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *pattern)); +#endif + +#if defined(TRIO_FUNC_MATCH_CASE) +TRIO_PUBLIC_STRING int +trio_match_case +TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *pattern)); +#endif + +#if defined(TRIO_FUNC_SPAN_FUNCTION) +TRIO_PUBLIC_STRING size_t +trio_span_function +TRIO_PROTO((char *target, TRIO_CONST char *source, int (*Function) TRIO_PROTO((int)))); +#endif + +#if defined(TRIO_FUNC_SUBSTRING) +TRIO_PUBLIC_STRING char * +trio_substring +TRIO_PROTO((TRIO_CONST char *string, TRIO_CONST char *substring)); +#endif + +#if defined(TRIO_FUNC_SUBSTRING_MAX) +TRIO_PUBLIC_STRING char * +trio_substring_max +TRIO_PROTO((TRIO_CONST char *string, size_t max, TRIO_CONST char *substring)); +#endif + +#if defined(TRIO_FUNC_TO_DOUBLE) +TRIO_PUBLIC_STRING double +trio_to_double +TRIO_PROTO((TRIO_CONST char *source, char **endp)); +#endif + +#if defined(TRIO_FUNC_TO_FLOAT) +TRIO_PUBLIC_STRING float +trio_to_float +TRIO_PROTO((TRIO_CONST char *source, char **endp)); +#endif + +#if defined(TRIO_FUNC_TO_LONG) +TRIO_PUBLIC_STRING long +trio_to_long +TRIO_PROTO((TRIO_CONST char *source, char **endp, int base)); +#endif + +#if defined(TRIO_FUNC_TO_LOWER) +TRIO_PUBLIC_STRING int +trio_to_lower +TRIO_PROTO((int source)); +#endif + +#if defined(TRIO_FUNC_TO_LONG_DOUBLE) +TRIO_PUBLIC_STRING trio_long_double_t +trio_to_long_double +TRIO_PROTO((TRIO_CONST char *source, char **endp)); +#endif + +#if defined(TRIO_FUNC_TO_UNSIGNED_LONG) +TRIO_PUBLIC_STRING unsigned long +trio_to_unsigned_long +TRIO_PROTO((TRIO_CONST char *source, char **endp, int base)); +#endif + +#if defined(TRIO_FUNC_TO_UPPER) +TRIO_PUBLIC_STRING int +trio_to_upper +TRIO_PROTO((int source)); +#endif + +#if defined(TRIO_FUNC_TOKENIZE) +TRIO_PUBLIC_STRING char * +trio_tokenize +TRIO_PROTO((char *string, TRIO_CONST char *delimiters)); +#endif + +#if defined(TRIO_FUNC_UPPER) +TRIO_PUBLIC_STRING int +trio_upper +TRIO_PROTO((char *target)); +#endif + +/************************************************************************* + * Dynamic string functions + */ + +/* + * Opaque type for dynamic strings + */ + +typedef struct _trio_string_t trio_string_t; + +#if defined(TRIO_FUNC_STRING_APPEND) +TRIO_PUBLIC_STRING int +trio_string_append +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_CONTAINS) +TRIO_PUBLIC_STRING int +trio_string_contains +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_COPY) +TRIO_PUBLIC_STRING int +trio_string_copy +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_CREATE) +TRIO_PUBLIC_STRING trio_string_t * +trio_string_create +TRIO_PROTO((int initial_size)); +#endif + +#if defined(TRIO_FUNC_STRING_DESTROY) +TRIO_PUBLIC_STRING void +trio_string_destroy +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_STRING_DUPLICATE) +TRIO_PUBLIC_STRING trio_string_t * +trio_string_duplicate +TRIO_PROTO((trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_EQUAL) +TRIO_PUBLIC_STRING int +trio_string_equal +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_EQUAL_MAX) +TRIO_PUBLIC_STRING int +trio_string_equal_max +TRIO_PROTO((trio_string_t *self, size_t max, trio_string_t *second)); +#endif + +#if defined(TRIO_FUNC_STRING_EQUAL_CASE) +TRIO_PUBLIC_STRING int +trio_string_equal_case +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_EQUAL_CASE_MAX) +TRIO_PUBLIC_STRING int +trio_string_equal_case_max +TRIO_PROTO((trio_string_t *self, size_t max, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_EXTRACT) +TRIO_PUBLIC_STRING char * +trio_string_extract +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_STRING_FORMAT_DATE_MAX) +TRIO_PUBLIC_STRING size_t +trio_string_format_date_max +TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *format, TRIO_CONST struct tm *datetime)); +#endif + +#if defined(TRIO_FUNC_STRING_GET) +TRIO_PUBLIC_STRING char * +trio_string_get +TRIO_PROTO((trio_string_t *self, int offset)); +#endif + +#if defined(TRIO_FUNC_STRING_INDEX) +TRIO_PUBLIC_STRING char * +trio_string_index +TRIO_PROTO((trio_string_t *self, int character)); +#endif + +#if defined(TRIO_FUNC_STRING_INDEX_LAST) +TRIO_PUBLIC_STRING char * +trio_string_index_last +TRIO_PROTO((trio_string_t *self, int character)); +#endif + +#if defined(TRIO_FUNC_STRING_LENGTH) +TRIO_PUBLIC_STRING int +trio_string_length +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_STRING_LOWER) +TRIO_PUBLIC_STRING int +trio_string_lower +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_STRING_MATCH) +TRIO_PUBLIC_STRING int +trio_string_match +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_MATCH_CASE) +TRIO_PUBLIC_STRING int +trio_string_match_case +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_SIZE) +TRIO_PUBLIC_STRING int +trio_string_size +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_STRING_SUBSTRING) +TRIO_PUBLIC_STRING char * +trio_string_substring +TRIO_PROTO((trio_string_t *self, trio_string_t *other)); +#endif + +#if defined(TRIO_FUNC_STRING_TERMINATE) +TRIO_PUBLIC_STRING void +trio_string_terminate +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_STRING_UPPER) +TRIO_PUBLIC_STRING int +trio_string_upper +TRIO_PROTO((trio_string_t *self)); +#endif + +#if defined(TRIO_FUNC_XSTRING_APPEND) +TRIO_PUBLIC_STRING int +trio_xstring_append +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_APPEND_CHAR) +TRIO_PUBLIC_STRING int +trio_xstring_append_char +TRIO_PROTO((trio_string_t *self, char character)); +#endif + +#if defined(TRIO_FUNC_XSTRING_APPEND_MAX) +TRIO_PUBLIC_STRING int +trio_xstring_append_max +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other, size_t max)); +#endif + +#if defined(TRIO_FUNC_XSTRING_CONTAINS) +TRIO_PUBLIC_STRING int +trio_xstring_contains +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_COPY) +TRIO_PUBLIC_STRING int +trio_xstring_copy +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_DUPLICATE) +TRIO_PUBLIC_STRING trio_string_t * +trio_xstring_duplicate +TRIO_PROTO((TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_EQUAL) +TRIO_PUBLIC_STRING int +trio_xstring_equal +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_EQUAL_MAX) +TRIO_PUBLIC_STRING int +trio_xstring_equal_max +TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_EQUAL_CASE) +TRIO_PUBLIC_STRING int +trio_xstring_equal_case +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_EQUAL_CASE_MAX) +TRIO_PUBLIC_STRING int +trio_xstring_equal_case_max +TRIO_PROTO((trio_string_t *self, size_t max, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_MATCH) +TRIO_PUBLIC_STRING int +trio_xstring_match +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_MATCH_CASE) +TRIO_PUBLIC_STRING int +trio_xstring_match_case +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#if defined(TRIO_FUNC_XSTRING_SET) +TRIO_PUBLIC_STRING void +trio_xstring_set +TRIO_PROTO((trio_string_t *self, char *buffer)); +#endif + +#if defined(TRIO_FUNC_XSTRING_SUBSTRING) +TRIO_PUBLIC_STRING char * +trio_xstring_substring +TRIO_PROTO((trio_string_t *self, TRIO_CONST char *other)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* TRIO_TRIOSTR_H */ diff --git a/libmednahawk/intl/ChangeLog b/libmednahawk/intl/ChangeLog new file mode 100644 index 0000000000..64d10d8eb6 --- /dev/null +++ b/libmednahawk/intl/ChangeLog @@ -0,0 +1,4 @@ +2010-06-04 GNU + + * Version 0.18.1 released. + diff --git a/libmednahawk/intl/Makefile.in b/libmednahawk/intl/Makefile.in new file mode 100644 index 0000000000..8a2f556ea8 --- /dev/null +++ b/libmednahawk/intl/Makefile.in @@ -0,0 +1,659 @@ +# Makefile for directory with message catalog handling library of GNU gettext +# Copyright (C) 1995-1998, 2000-2007, 2009-2010 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. + +# The VPATH variables allows builds with $builddir != $srcdir, assuming a +# 'make' program that supports VPATH (such as GNU make). This line is removed +# by autoconf automatically when "$(srcdir)" = ".". +# In this directory, the VPATH handling is particular: +# 1. If INTL_LIBTOOL_SUFFIX_PREFIX is 'l' (indicating a build with libtool), +# the .c -> .lo rules carefully use $(srcdir), so that VPATH can be omitted. +# 2. If PACKAGE = gettext-tools, VPATH _must_ be omitted, because otherwise +# 'make' does the wrong thing if GNU gettext was configured with +# "./configure --srcdir=`pwd`", namely it gets confused by the .lo and .la +# files it finds in srcdir = ../../gettext-runtime/intl. +VPATH = $(srcdir) + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext +# Windows resource compiler (windres). Used when libtool is not used. +WINDRES = @WINDRES@ +# Windows resource compiler (windres). Used via libtool. +RC = @RC@ + +# Support for silent-rules. +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_@INTL_DEFAULT_VERBOSITY@) +am__v_at_0 = @ +AM_V_AR = $(am__v_AR_$(V)) +am__v_AR_ = $(am__v_AR_@INTL_DEFAULT_VERBOSITY@) +am__v_AR_0 = @echo " AR " $@; +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_@INTL_DEFAULT_VERBOSITY@) +am__v_CC_0 = @echo " CC " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_@INTL_DEFAULT_VERBOSITY@) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_YACC = $(am__v_YACC_$(V)) +am__v_YACC_ = $(am__v_YACC_@INTL_DEFAULT_VERBOSITY@) +am__v_YACC_0 = @echo " YACC " $@; +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_@INTL_DEFAULT_VERBOSITY@) +am__v_lt_0 = --silent + +# -DBUILDING_LIBINTL: Change expansion of LIBINTL_DLL_EXPORTED macro. +# -DBUILDING_DLL: Change expansion of RELOCATABLE_DLL_EXPORTED macro. +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" -DBUILDING_LIBINTL -DBUILDING_DLL -DIN_LIBINTL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libintl_set_relocation_prefix \ +-Drelocate=libintl_relocate \ +-DDEPENDS_ON_LIBICONV=1 @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ @CFLAG_VISIBILITY@ +LDFLAGS = @LDFLAGS@ $(LDFLAGS_@WOE32DLL@) +LDFLAGS_yes = -Wl,--export-all-symbols +LDFLAGS_no = +LIBS = @LIBS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = \ + gmo.h \ + gettextP.h \ + hash-string.h \ + loadinfo.h \ + plural-exp.h \ + eval-plural.h \ + localcharset.h \ + lock.h \ + relocatable.h \ + tsearch.h tsearch.c \ + xsize.h \ + printf-args.h printf-args.c \ + printf-parse.h wprintf-parse.h printf-parse.c \ + vasnprintf.h vasnwprintf.h vasnprintf.c \ + os2compat.h \ + libgnuintl.h.in +SOURCES = \ + bindtextdom.c \ + dcgettext.c \ + dgettext.c \ + gettext.c \ + finddomain.c \ + hash-string.c \ + loadmsgcat.c \ + localealias.c \ + textdomain.c \ + l10nflist.c \ + explodename.c \ + dcigettext.c \ + dcngettext.c \ + dngettext.c \ + ngettext.c \ + plural.y \ + plural-exp.c \ + localcharset.c \ + threadlib.c \ + lock.c \ + relocatable.c \ + langprefs.c \ + localename.c \ + log.c \ + printf.c \ + setlocale.c \ + version.c \ + osdep.c \ + os2compat.c \ + intl-exports.c \ + intl-compat.c +OBJECTS = \ + bindtextdom.$lo \ + dcgettext.$lo \ + dgettext.$lo \ + gettext.$lo \ + finddomain.$lo \ + hash-string.$lo \ + loadmsgcat.$lo \ + localealias.$lo \ + textdomain.$lo \ + l10nflist.$lo \ + explodename.$lo \ + dcigettext.$lo \ + dcngettext.$lo \ + dngettext.$lo \ + ngettext.$lo \ + plural.$lo \ + plural-exp.$lo \ + localcharset.$lo \ + threadlib.$lo \ + lock.$lo \ + relocatable.$lo \ + langprefs.$lo \ + localename.$lo \ + log.$lo \ + printf.$lo \ + setlocale.$lo \ + version.$lo \ + osdep.$lo \ + intl-compat.$lo +OBJECTS_RES_yes = libintl.res.$lo +OBJECTS_RES_no = +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin export.h libintl.rc \ +$(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc README.woe32 +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h \ +libgnuintl.h_vms Makefile.vms libgnuintl.h.msvc-static \ +libgnuintl.h.msvc-shared Makefile.msvc + +all: all-@USE_INCLUDED_LIBINTL@ +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + $(AM_V_at)rm -f $@ + $(AM_V_AR)$(AR) cru $@ $(OBJECTS) + $(AM_V_at)$(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) $(OBJECTS_RES_@WOE32@) + $(AM_V_GEN)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) @LTLIBTHREAD@ @LTLIBC@ \ + $(OBJECTS_RES_@WOE32@) \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=9 +LTV_REVISION=1 +LTV_AGE=1 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed + +.c.o: + $(AM_V_CC)$(COMPILE) $< + +.y.c: + $(AM_V_YACC)$(YACC) $(YFLAGS) --output $@ $< + $(AM_V_at)rm -f $*.h + +bindtextdom.lo: $(srcdir)/bindtextdom.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c +dcgettext.lo: $(srcdir)/dcgettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/dcgettext.c +dgettext.lo: $(srcdir)/dgettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/dgettext.c +gettext.lo: $(srcdir)/gettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/gettext.c +finddomain.lo: $(srcdir)/finddomain.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/finddomain.c +hash-string.lo: $(srcdir)/hash-string.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/hash-string.c +loadmsgcat.lo: $(srcdir)/loadmsgcat.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c +localealias.lo: $(srcdir)/localealias.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/localealias.c +textdomain.lo: $(srcdir)/textdomain.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/textdomain.c +l10nflist.lo: $(srcdir)/l10nflist.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/l10nflist.c +explodename.lo: $(srcdir)/explodename.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/explodename.c +dcigettext.lo: $(srcdir)/dcigettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/dcigettext.c +dcngettext.lo: $(srcdir)/dcngettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/dcngettext.c +dngettext.lo: $(srcdir)/dngettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/dngettext.c +ngettext.lo: $(srcdir)/ngettext.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/ngettext.c +plural.lo: $(srcdir)/plural.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/plural.c +plural-exp.lo: $(srcdir)/plural-exp.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/plural-exp.c +localcharset.lo: $(srcdir)/localcharset.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/localcharset.c +threadlib.lo: $(srcdir)/threadlib.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/threadlib.c +lock.lo: $(srcdir)/lock.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/lock.c +relocatable.lo: $(srcdir)/relocatable.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/relocatable.c +langprefs.lo: $(srcdir)/langprefs.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/langprefs.c +localename.lo: $(srcdir)/localename.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/localename.c +log.lo: $(srcdir)/log.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/log.c +printf.lo: $(srcdir)/printf.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/printf.c +setlocale.lo: $(srcdir)/setlocale.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/setlocale.c +version.lo: $(srcdir)/version.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/version.c +osdep.lo: $(srcdir)/osdep.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/osdep.c +intl-compat.lo: $(srcdir)/intl-compat.c + $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC --mode=compile $(COMPILE) $(srcdir)/intl-compat.c + +# This rule is executed only on Woe32 systems. +# The following sed expressions come from the windres-options script. They are +# inlined here, so that they can be written in a Makefile without requiring a +# temporary file. They must contain literal newlines rather than semicolons, +# so that they work with the sed-3.02 that is shipped with MSYS. +libintl.res.o: $(srcdir)/libintl.rc + nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \ + sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + $(WINDRES) \ + "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ + "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \ + "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \ + "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \ + -i $(srcdir)/libintl.rc -o libintl.res.o --output-format=coff +libintl.res.lo: $(srcdir)/libintl.rc + nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \ + sed_extract_major='/^[0-9]/{'$${nl}'s/^\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{'$${nl}'s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p'$${nl}q$${nl}'}'$${nl}'c\'$${nl}0$${nl}q; \ + $(LIBTOOL) --mode=compile --tag=RC $(RC) \ + "-DPACKAGE_VERSION_STRING=\\\"$(VERSION)\\\"" \ + "-DPACKAGE_VERSION_MAJOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_major"` \ + "-DPACKAGE_VERSION_MINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_minor"` \ + "-DPACKAGE_VERSION_SUBMINOR="`echo '$(VERSION)' | sed -n -e "$$sed_extract_subminor"` \ + -i $(srcdir)/libintl.rc -o libintl.res.lo --output-format=coff + +ref-add.sed: $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed + mv t-ref-add.sed ref-add.sed +ref-del.sed: $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed + mv t-ref-del.sed ref-del.sed + +INCLUDES = -I. -I$(srcdir) -I../include + +libgnuintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in \ + | if test '@WOE32DLL@' = yes; then \ + sed -e 's/extern \([^()]*\);/extern __declspec (dllimport) \1;/'; \ + else \ + cat; \ + fi \ + | sed -e 's/extern \([^"]\)/extern LIBINTL_DLL_EXPORTED \1/' \ + -e "/#define _LIBINTL_H/r $(srcdir)/export.h" \ + | sed -e 's,@''HAVE_VISIBILITY''@,@HAVE_VISIBILITY@,g' \ + > libgnuintl.h + +libintl.h: $(srcdir)/libgnuintl.h.in + sed -e '/IN_LIBGLOCALE/d' \ + -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_NEWLOCALE''@,@HAVE_NEWLOCALE@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in > libintl.h + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + if test "@RELOCATABLE@" = yes; then \ + dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ + if test -n "$$dependencies"; then \ + rm -f $(DESTDIR)$(libdir)/libintl.la; \ + fi; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test @GLIBC21@ = no; then \ + case '@host_os@' in \ + darwin[56]*) \ + need_charset_alias=true ;; \ + darwin* | cygwin* | mingw* | pw32* | cegcc*) \ + need_charset_alias=false ;; \ + *) \ + need_charset_alias=true ;; \ + esac; \ + else \ + need_charset_alias=false; \ + fi; \ + if $$need_charset_alias; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + fi; \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if $$need_charset_alias; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +install-strip: install + +install-dvi install-html install-info install-ps install-pdf: + +installdirs: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkdir_p) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test @GLIBC21@ = no; then \ + case '@host_os@' in \ + darwin[56]*) \ + need_charset_alias=true ;; \ + darwin* | cygwin* | mingw* | pw32* | cegcc*) \ + need_charset_alias=false ;; \ + *) \ + need_charset_alias=true ;; \ + esac; \ + else \ + need_charset_alias=false; \ + fi; \ + if $$need_charset_alias; then \ + $(mkdir_p) $(DESTDIR)$(libdir); \ + fi; \ + $(mkdir_p) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi ps pdf html: + +$(OBJECTS): ../include/config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo setlocale.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h +localename.$lo: $(srcdir)/gettextP.h +hash-string.$lo dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h +explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h +dcigettext.$lo: $(srcdir)/eval-plural.h +localcharset.$lo: $(srcdir)/localcharset.h +bindtextdom.$lo dcigettext.$lo finddomain.$lo loadmsgcat.$lo localealias.$lo lock.$lo log.$lo: $(srcdir)/lock.h +localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h +printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c + +# A bison-2.1 generated plural.c includes if ENABLE_NLS. +PLURAL_DEPS_yes = libintl.h +PLURAL_DEPS_no = +plural.$lo: $(PLURAL_DEPS_@USE_INCLUDED_LIBINTL@) + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +ctags: CTAGS + +CTAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.obj *.lo core core.* + rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = "gettext-tools"; then \ + : ; \ + else \ + if test "$(PACKAGE)" = "gettext-runtime"; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \ + done; \ + fi + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status +# This would be more efficient, but doesn't work any more with autoconf-2.57, +# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. +# cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/intl/VERSION b/libmednahawk/intl/VERSION new file mode 100644 index 0000000000..c1ff66ac12 --- /dev/null +++ b/libmednahawk/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.18.1 diff --git a/libmednahawk/intl/bindtextdom.c b/libmednahawk/intl/bindtextdom.c new file mode 100644 index 0000000000..7e66038dba --- /dev/null +++ b/libmednahawk/intl/bindtextdom.c @@ -0,0 +1,340 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000-2003, 2005-2006, 2008 Free Software + Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define (extern, _nl_state_lock attribute_hidden) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN libintl_bindtextdomain +# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset +#endif + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (const char *domainname, + const char **dirnamep, const char **codesetp) +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + gl_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, _nl_default_dirname) == 0) + result = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + free (binding->codeset); + + binding->codeset = result; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = _nl_default_dirname; + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = _nl_default_dirname; + else + { + if (strcmp (dirname, _nl_default_dirname) == 0) + dirname = _nl_default_dirname; + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) _nl_default_dirname; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != _nl_default_dirname) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + gl_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (const char *domainname, const char *dirname) +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset) +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/libmednahawk/intl/config.charset b/libmednahawk/intl/config.charset new file mode 100644 index 0000000000..0ddb32d1a9 --- /dev/null +++ b/libmednahawk/intl/config.charset @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2004, 2006-2010 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name MIME? used by which systems +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin cygwin +# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin +# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin +# ISO-8859-3 Y glibc solaris cygwin +# ISO-8859-4 Y osf solaris freebsd netbsd openbsd darwin +# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd openbsd darwin cygwin +# ISO-8859-6 Y glibc aix hpux solaris cygwin +# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd openbsd darwin cygwin +# ISO-8859-8 Y glibc aix hpux osf solaris cygwin +# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin cygwin +# ISO-8859-13 glibc netbsd openbsd darwin cygwin +# ISO-8859-14 glibc cygwin +# ISO-8859-15 glibc aix osf solaris freebsd netbsd openbsd darwin cygwin +# KOI8-R Y glibc solaris freebsd netbsd openbsd darwin +# KOI8-U Y glibc freebsd netbsd openbsd darwin cygwin +# KOI8-T glibc +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd netbsd openbsd darwin dos +# CP869 dos +# CP874 woe32 dos +# CP922 aix +# CP932 aix cygwin woe32 dos +# CP943 aix +# CP949 osf darwin woe32 dos +# CP950 woe32 dos +# CP1046 aix +# CP1124 aix +# CP1125 dos +# CP1129 aix +# CP1131 darwin +# CP1250 woe32 +# CP1251 glibc solaris netbsd openbsd darwin cygwin woe32 +# CP1252 aix woe32 +# CP1253 woe32 +# CP1254 woe32 +# CP1255 glibc woe32 +# CP1256 woe32 +# CP1257 woe32 +# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin +# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin +# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin cygwin +# EUC-TW glibc aix hpux irix osf solaris netbsd +# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin cygwin +# BIG5-HKSCS glibc solaris darwin +# GBK glibc aix osf solaris darwin cygwin woe32 dos +# GB18030 glibc solaris netbsd darwin +# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin +# JOHAB glibc solaris woe32 +# TIS-620 glibc aix hpux osf solaris cygwin +# VISCII Y glibc +# TCVN5712-1 glibc +# ARMSCII-8 glibc darwin +# GEORGIAN-PS glibc cygwin +# PT154 glibc +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 Y glibc aix hpux osf solaris netbsd darwin cygwin +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux-gnulibc1*) + # Linux libc5 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + echo "POSIX ASCII" + for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \ + en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \ + en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \ + es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \ + et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \ + fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \ + it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \ + sv_FI sv_SE; do + echo "$l ISO-8859-1" + echo "$l.iso-8859-1 ISO-8859-1" + echo "$l.iso-8859-15 ISO-8859-15" + echo "$l.iso-8859-15@euro ISO-8859-15" + echo "$l@euro ISO-8859-15" + echo "$l.cp-437 CP437" + echo "$l.cp-850 CP850" + echo "$l.cp-1252 CP1252" + echo "$l.cp-1252@euro CP1252" + #echo "$l.atari-st ATARI-ST" # not a commonly used encoding + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \ + sl_SI sr sr_CS sr_YU; do + echo "$l ISO-8859-2" + echo "$l.iso-8859-2 ISO-8859-2" + echo "$l.cp-852 CP852" + echo "$l.cp-1250 CP1250" + echo "$l.utf-8 UTF-8" + done + for l in mk mk_MK ru ru_RU; do + echo "$l ISO-8859-5" + echo "$l.iso-8859-5 ISO-8859-5" + echo "$l.koi8-r KOI8-R" + echo "$l.cp-866 CP866" + echo "$l.cp-1251 CP1251" + echo "$l.utf-8 UTF-8" + done + for l in ar ar_SA; do + echo "$l ISO-8859-6" + echo "$l.iso-8859-6 ISO-8859-6" + echo "$l.cp-864 CP864" + #echo "$l.cp-868 CP868" # not a commonly used encoding + echo "$l.cp-1256 CP1256" + echo "$l.utf-8 UTF-8" + done + for l in el el_GR gr gr_GR; do + echo "$l ISO-8859-7" + echo "$l.iso-8859-7 ISO-8859-7" + echo "$l.cp-869 CP869" + echo "$l.cp-1253 CP1253" + echo "$l.cp-1253@euro CP1253" + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in he he_IL iw iw_IL; do + echo "$l ISO-8859-8" + echo "$l.iso-8859-8 ISO-8859-8" + echo "$l.cp-862 CP862" + echo "$l.cp-1255 CP1255" + echo "$l.utf-8 UTF-8" + done + for l in tr tr_TR; do + echo "$l ISO-8859-9" + echo "$l.iso-8859-9 ISO-8859-9" + echo "$l.cp-857 CP857" + echo "$l.cp-1254 CP1254" + echo "$l.utf-8 UTF-8" + done + for l in lt lt_LT lv lv_LV; do + #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name + echo "$l ISO-8859-13" + done + for l in ru_UA uk uk_UA; do + echo "$l KOI8-U" + done + for l in zh zh_CN; do + #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name + echo "$l GB2312" + done + for l in ja ja_JP ja_JP.EUC; do + echo "$l EUC-JP" + done + for l in ko ko_KR; do + echo "$l EUC-KR" + done + for l in th th_TH; do + echo "$l TIS-620" + done + for l in fa fa_IR; do + #echo "$l ISIRI-3342" # a broken encoding + echo "$l.utf-8 UTF-8" + done + ;; + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SHIFT_JIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SHIFT_JIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-3 ISO-8859-3" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "ansi-1251 CP1251" + echo "BIG5 BIG5" + echo "Big5-HKSCS BIG5-HKSCS" + echo "gb2312 GB2312" + echo "GBK GBK" + echo "GB18030 GB18030" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "ko_KR.johap92 JOHAB" + echo "eucJP EUC-JP" + echo "PCK SHIFT_JIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd* | os2*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just + # reuse FreeBSD's locale data for OS/2. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + netbsd*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-13 ISO-8859-13" + echo "ISO8859-15 ISO-8859-15" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "BIG5 BIG5" + echo "SJIS SHIFT_JIS" + ;; + openbsd*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-13 ISO-8859-13" + echo "ISO8859-15 ISO-8859-15" + ;; + darwin[56]*) + # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + for l in en_AU en_CA en_GB en_US la_LN; do + echo "$l.US-ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \ + nl_NL no_NO pt_PT sv_SE; do + echo "$l ISO-8859-1" + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in la_LN; do + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do + echo "$l.ISO8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO8859-4 ISO-8859-4" + done + for l in ru_RU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + for l in bg_BG; do + echo "$l.CP1251 CP1251" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + darwin*) + # Darwin 7.5 has nl_langinfo(CODESET), but sometimes its value is + # useless: + # - It returns the empty string when LANG is set to a locale of the + # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8 + # LC_CTYPE file. + # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by + # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case. + # - The documentation says: + # "... all code that calls BSD system routines should ensure + # that the const *char parameters of these routines are in UTF-8 + # encoding. All BSD system functions expect their string + # parameters to be in UTF-8 encoding and nothing else." + # It also says + # "An additional caveat is that string parameters for files, + # paths, and other file-system entities must be in canonical + # UTF-8. In a canonical UTF-8 Unicode string, all decomposable + # characters are decomposed ..." + # but this is not true: You can pass non-decomposed UTF-8 strings + # to file system functions, and it is the OS which will convert + # them to decomposed UTF-8 before accessing the file system. + # - The Apple Terminal application displays UTF-8 by default. + # - However, other applications are free to use different encodings: + # - xterm uses ISO-8859-1 by default. + # - TextEdit uses MacRoman by default. + # We prefer UTF-8 over decomposed UTF-8-MAC because one should + # minimize the use of decomposed Unicode. Unfortunately, through the + # Darwin file system, decomposed UTF-8 strings are leaked into user + # space nevertheless. + # Then there are also the locales with encodings other than US-ASCII + # and UTF-8. These locales can be occasionally useful to users (e.g. + # when grepping through ISO-8859-1 encoded text files), when all their + # file names are in US-ASCII. + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-13 ISO-8859-13" + echo "ISO8859-15 ISO-8859-15" + echo "KOI8-R KOI8-R" + echo "KOI8-U KOI8-U" + echo "CP866 CP866" + echo "CP949 CP949" + echo "CP1131 CP1131" + echo "CP1251 CP1251" + echo "eucCN GB2312" + echo "GB2312 GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "Big5 BIG5" + echo "Big5HKSCS BIG5-HKSCS" + echo "GBK GBK" + echo "GB18030 GB18030" + echo "SJIS SHIFT_JIS" + echo "ARMSCII-8 ARMSCII-8" + echo "PT154 PT154" + #echo "ISCII-DEV ?" + echo "* UTF-8" + ;; + beos* | haiku*) + # BeOS and Haiku have a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_CS CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru CP866" + echo "ru_RU CP866" + echo "uk CP1125" + echo "uk_UA CP1125" + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/libmednahawk/intl/dcgettext.c b/libmednahawk/intl/dcgettext.c new file mode 100644 index 0000000000..1ebe1807d6 --- /dev/null +++ b/libmednahawk/intl/dcgettext.c @@ -0,0 +1,56 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT libintl_dcgettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (const char *domainname, const char *msgid, int category) +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +INTDEF(__dcgettext) +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/libmednahawk/intl/dcigettext.c b/libmednahawk/intl/dcigettext.c new file mode 100644 index 0000000000..5e32217d41 --- /dev/null +++ b/libmednahawk/intl/dcigettext.c @@ -0,0 +1,1705 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000-2009 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#ifdef _LIBC + /* Guess whether integer division by zero raises signal SIGFPE. + Set to 1 only if you know for sure. In case of doubt, set to 0. */ +# if defined __alpha__ || defined __arm__ || defined __i386__ \ + || defined __m68k__ || defined __s390__ +# define INTDIV0_RAISES_SIGFPE 1 +# else +# define INTDIV0_RAISES_SIGFPE 0 +# endif +#endif +#if !INTDIV0_RAISES_SIGFPE +# include +#endif + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#if !defined _LIBC +# include "localcharset.h" +#endif + +#include "gettextP.h" +#include "plural-exp.h" +#ifdef _LIBC +# include +#else +# ifdef IN_LIBGLOCALE +# include +# endif +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define_initialized __libc_rwlock_define_initialized +# define gl_rwlock_rdlock __libc_rwlock_rdlock +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +# if VMS +# define getcwd(buf, max) (getcwd) (buf, max, 0) +# else +char *getcwd (); +# endif +# endif +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy (void *dest, const void *src, size_t n); +# endif +#endif + +/* Use a replacement if the system does not provide the `tsearch' function + family. */ +#if HAVE_TSEARCH || defined _LIBC +# include +#else +# define tsearch libintl_tsearch +# define tfind libintl_tfind +# define tdelete libintl_tdelete +# define twalk libintl_twalk +# include "tsearch.h" +#endif + +#ifdef _LIBC +# define tsearch __tsearch +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* Whether to support different locales in different threads. */ +#if defined _LIBC || HAVE_USELOCALE || defined IN_LIBGLOCALE +# define HAVE_PER_THREAD_LOCALE +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + const char *domainname; + + /* The category. */ + int category; + +#ifdef HAVE_PER_THREAD_LOCALE + /* Name of the relevant locale category, or "" for the global locale. */ + const char *localename; +#endif + +#ifdef IN_LIBGLOCALE + /* The character encoding. */ + const char *encoding; +#endif + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + union + { + char appended[ZERO]; /* used if domain != NULL */ + const char *ptr; /* used if domain == NULL */ + } + msgid; +}; + +gl_rwlock_define_initialized (static, tree_lock) + +/* Root of the search tree with known translations. */ +static void *root; + +/* Function to compare two entries in the table of known translations. */ +static int +transcmp (const void *p1, const void *p2) +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->domain != NULL ? s1->msgid.appended : s1->msgid.ptr, + s2->domain != NULL ? s2->msgid.appended : s2->msgid.ptr); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + { +#ifdef HAVE_PER_THREAD_LOCALE + result = strcmp (s1->localename, s2->localename); + if (result == 0) +#endif + { +#ifdef IN_LIBGLOCALE + result = strcmp (s1->encoding, s2->encoding); + if (result == 0) +#endif + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + } + } + + return result; +} + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] attribute_hidden = "messages"; + +#ifndef IN_LIBGLOCALE +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain attribute_hidden + = _nl_default_default_domain; +#endif + +/* Contains the default location of the message catalogs. */ +#if defined __EMX__ +extern const char _nl_default_dirname[]; +#else +# ifdef _LIBC +extern const char _nl_default_dirname[]; +libc_hidden_proto (_nl_default_dirname) +# endif +const char _nl_default_dirname[] = LOCALEDIR; +# ifdef _LIBC +libc_hidden_data_def (_nl_default_dirname) +# endif +#endif + +#ifndef IN_LIBGLOCALE +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; +#endif + +/* Prototypes for local functions. */ +static char *plural_lookup (struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, size_t translation_len) + internal_function; + +#ifdef IN_LIBGLOCALE +static const char *guess_category_value (int category, + const char *categoryname, + const char *localename) + internal_function; +#else +static const char *guess_category_value (int category, + const char *categoryname) + internal_function; +#endif + +#ifdef _LIBC +# include "../locale/localeinfo.h" +# define category_to_name(category) \ + _nl_category_names.str + _nl_category_name_idxs[category] +#else +static const char *category_to_name (int category) internal_function; +#endif +#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE +static const char *get_output_charset (struct binding *domainbinding) + internal_function; +#endif + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define freea(p) /* nothing */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old->address); \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +# define freea(p) free (p) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define_initialized (, _nl_state_lock attribute_hidden) + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +/* Get the function to evaluate the plural expression. */ +#include "eval-plural.h" + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +#ifdef IN_LIBGLOCALE +char * +gl_dcigettext (const char *domainname, + const char *msgid1, const char *msgid2, + int plural, unsigned long int n, + int category, + const char *localename, const char *encoding) +#else +char * +DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2, + int plural, unsigned long int n, int category) +#endif +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + const char *dirname; + char *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; + struct known_translation_t search; + struct known_translation_t **foundp = NULL; +#if defined HAVE_PER_THREAD_LOCALE && !defined IN_LIBGLOCALE + const char *localename; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + +#ifdef _LIBC + if (category < 0 || category >= __LC_LAST || category == LC_ALL) + /* Bogus. */ + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + +#ifdef _LIBC + __libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden) + __libc_rwlock_rdlock (__libc_setlocale_lock); +#endif + + gl_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* OS/2 specific: backward compatibility with older libintl versions */ +#ifdef LC_MESSAGES_COMPAT + if (category == LC_MESSAGES_COMPAT) + category = LC_MESSAGES; +#endif + + /* Try to find the translation among those which we found at + some time. */ + search.domain = NULL; + search.msgid.ptr = msgid1; + search.domainname = domainname; + search.category = category; +#ifdef HAVE_PER_THREAD_LOCALE +# ifndef IN_LIBGLOCALE +# ifdef _LIBC + localename = _strdupa (_current_locale_name (category)); +# else + categoryname = category_to_name (category); +# define CATEGORYNAME_INITIALIZED + localename = _nl_locale_name_thread_unsafe (category, categoryname); + if (localename == NULL) + localename = ""; +# endif +# endif + search.localename = localename; +# ifdef IN_LIBGLOCALE + search.encoding = encoding; +# endif + + /* Since tfind/tsearch manage a balanced tree, concurrent tfind and + tsearch calls can be fatal. */ + gl_rwlock_rdlock (tree_lock); + + foundp = (struct known_translation_t **) tfind (&search, &root, transcmp); + + gl_rwlock_unlock (tree_lock); + + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + gl_rwlock_unlock (_nl_state_lock); +# ifdef _LIBC + __libc_rwlock_unlock (__libc_setlocale_lock); +# endif + __set_errno (saved_errno); + return retval; + } +#endif + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ +#ifdef IN_LIBGLOCALE + /* We can use a trivial binding, since _nl_find_msg will ignore it anyway, + and _nl_load_domain and _nl_find_domain just pass it through. */ + binding = NULL; + dirname = bindtextdomain (domainname, NULL); +#else + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = _nl_default_dirname; + else + { + dirname = binding->dirname; +#endif + if (!IS_ABSOLUTE_PATH (dirname)) + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (dirname) + 1; + size_t path_max; + char *resolved_dirname; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + resolved_dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, tmp_dirname); + + __set_errno (0); + ret = getcwd (resolved_dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + goto return_untranslated; + + stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname); + dirname = resolved_dirname; + } +#ifndef IN_LIBGLOCALE + } +#endif + + /* Now determine the symbolic name of CATEGORY and its value. */ +#ifndef CATEGORYNAME_INITIALIZED + categoryname = category_to_name (category); +#endif +#ifdef IN_LIBGLOCALE + categoryvalue = guess_category_value (category, categoryname, localename); +#else + categoryvalue = guess_category_value (category, categoryname); +#endif + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy ((char *) mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + break; + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { +#if defined IN_LIBGLOCALE + retval = _nl_find_msg (domain, binding, encoding, msgid1, &retlen); +#else + retval = _nl_find_msg (domain, binding, msgid1, 1, &retlen); +#endif + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { +#if defined IN_LIBGLOCALE + retval = _nl_find_msg (domain->successor[cnt], binding, + encoding, msgid1, &retlen); +#else + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, 1, &retlen); +#endif + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + /* Returning -1 means that some resource problem exists + (likely memory) and that the strings could not be + converted. Return the original strings. */ + if (__builtin_expect (retval == (char *) -1, 0)) + break; + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + size_t msgid_len; + size_t size; + struct known_translation_t *newp; + + msgid_len = strlen (msgid1) + 1; + size = offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1; +#ifdef HAVE_PER_THREAD_LOCALE + size += strlen (localename) + 1; +#endif + newp = (struct known_translation_t *) malloc (size); + if (newp != NULL) + { + char *new_domainname; +#ifdef HAVE_PER_THREAD_LOCALE + char *new_localename; +#endif + + new_domainname = + (char *) mempcpy (newp->msgid.appended, msgid1, + msgid_len); + memcpy (new_domainname, domainname, domainname_len + 1); +#ifdef HAVE_PER_THREAD_LOCALE + new_localename = new_domainname + domainname_len + 1; + strcpy (new_localename, localename); +#endif + newp->domainname = new_domainname; + newp->category = category; +#ifdef HAVE_PER_THREAD_LOCALE + newp->localename = new_localename; +#endif +#ifdef IN_LIBGLOCALE + newp->encoding = encoding; +#endif + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + gl_rwlock_wrlock (tree_lock); + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + + gl_rwlock_unlock (tree_lock); + + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } + + __set_errno (saved_errno); + + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + gl_rwlock_unlock (_nl_state_lock); +#ifdef _LIBC + __libc_rwlock_unlock (__libc_setlocale_lock); +#endif + return retval; + } + } + } + + return_untranslated: + /* Return the untranslated MSGID. */ + FREE_BLOCKS (block_list); + gl_rwlock_unlock (_nl_state_lock); +#ifdef _LIBC + __libc_rwlock_unlock (__libc_setlocale_lock); +#endif +#ifndef _LIBC + if (!ENABLE_SECURE) + { + extern void _nl_log_untranslated (const char *logfilename, + const char *domainname, + const char *msgid1, const char *msgid2, + int plural); + const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); + + if (logfilename != NULL && logfilename[0] != '\0') + _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); + } +#endif + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +} + + +/* Look up the translation of msgid within DOMAIN_FILE and DOMAINBINDING. + Return it if found. Return NULL if not found or in case of a conversion + failure (problem in the particular message catalog). Return (char *) -1 + in case of a memory allocation failure during conversion (only if + ENCODING != NULL resp. CONVERT == true). */ +char * +internal_function +#ifdef IN_LIBGLOCALE +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *encoding, + const char *msgid, + size_t *lengthp) +#else +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, int convert, + size_t *lengthp) +#endif +{ + struct loaded_domain *domain; + nls_uint32 nstrings; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided <= 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + nstrings = domain->nstrings; + + /* Locate the MSGID and its translation. */ + if (domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = __hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = + W (domain->must_swap_hash_tab, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + nstr--; + + /* Compare msgid with the original string at index nstr. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (nstr < nstrings + ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr].offset)) + == 0) + : domain->orig_sysdep_tab[nstr - nstrings].length > len + && (strcmp (msgid, + domain->orig_sysdep_tab[nstr - nstrings].pointer) + == 0)) + { + act = nstr; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + if (act < nstrings) + { + result = (char *) + (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + } + else + { + result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; + resultlen = domain->trans_sysdep_tab[act - nstrings].length; + } + +#if defined _LIBC || HAVE_ICONV +# ifdef IN_LIBGLOCALE + if (encoding != NULL) +# else + if (convert) +# endif + { + /* We are supposed to do a conversion. */ +# ifndef IN_LIBGLOCALE + const char *encoding = get_output_charset (domainbinding); +# endif + size_t nconversions; + struct converted_domain *convd; + size_t i; + + /* Protect against reallocation of the table. */ + gl_rwlock_rdlock (domain->conversions_lock); + + /* Search whether a table with converted translations for this + encoding has already been allocated. */ + nconversions = domain->nconversions; + convd = NULL; + + for (i = nconversions; i > 0; ) + { + i--; + if (strcmp (domain->conversions[i].encoding, encoding) == 0) + { + convd = &domain->conversions[i]; + break; + } + } + + gl_rwlock_unlock (domain->conversions_lock); + + if (convd == NULL) + { + /* We have to allocate a new conversions table. */ + gl_rwlock_wrlock (domain->conversions_lock); + nconversions = domain->nconversions; + + /* Maybe in the meantime somebody added the translation. + Recheck. */ + for (i = nconversions; i > 0; ) + { + i--; + if (strcmp (domain->conversions[i].encoding, encoding) == 0) + { + convd = &domain->conversions[i]; + goto found_convd; + } + } + + { + /* Allocate a table for the converted translations for this + encoding. */ + struct converted_domain *new_conversions = + (struct converted_domain *) + (domain->conversions != NULL + ? realloc (domain->conversions, + (nconversions + 1) * sizeof (struct converted_domain)) + : malloc ((nconversions + 1) * sizeof (struct converted_domain))); + + if (__builtin_expect (new_conversions == NULL, 0)) + { + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + unlock_fail: + gl_rwlock_unlock (domain->conversions_lock); + return (char *) -1; + } + + domain->conversions = new_conversions; + + /* Copy the 'encoding' string to permanent storage. */ + encoding = strdup (encoding); + if (__builtin_expect (encoding == NULL, 0)) + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + goto unlock_fail; + + convd = &new_conversions[nconversions]; + convd->encoding = encoding; + + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the 'charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ +# ifdef _LIBC + convd->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + convd->conv = (iconv_t) -1; +# endif +# endif + { + char *nullentry; + size_t nullentrylen; + + /* Get the header entry. This is a recursion, but it doesn't + reallocate domain->conversions because we pass + encoding = NULL or convert = 0, respectively. */ + nullentry = +# ifdef IN_LIBGLOCALE + _nl_find_msg (domain_file, domainbinding, NULL, "", + &nullentrylen); +# else + _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); +# endif + + if (nullentry != NULL) + { + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + outcharset = encoding; + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, ""); + int r = __gconv_open (outcharset, charset, &convd->conv, + GCONV_AVOID_NOCONV); + if (__builtin_expect (r != __GCONV_OK, 0)) + { + /* If the output encoding is the same there is + nothing to do. Otherwise do not use the + translation at all. */ + if (__builtin_expect (r != __GCONV_NULCONV, 1)) + { + gl_rwlock_unlock (domain->conversions_lock); + free ((char *) encoding); + return NULL; + } + + convd->conv = (__gconv_t) -1; + } +# else +# if HAVE_ICONV + /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, + we want to use transliteration. */ +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + if (strchr (outcharset, '/') == NULL) + { + char *tmp; + + len = strlen (outcharset); + tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + + convd->conv = iconv_open (outcharset, charset); + + freea (outcharset); + } + else +# endif + convd->conv = iconv_open (outcharset, charset); +# endif +# endif + + freea (charset); + } + } + } + convd->conv_tab = NULL; + /* Here domain->conversions is still == new_conversions. */ + domain->nconversions++; + } + + found_convd: + gl_rwlock_unlock (domain->conversions_lock); + } + + if ( +# ifdef _LIBC + convd->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + convd->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + /* This lock primarily protects the memory management variables + freemem, freemem_size. It also protects write accesses to + convd->conv_tab. It's not worth using a separate lock (such + as domain->conversions_lock) for this purpose, because when + modifying convd->conv_tab, we also need to lock freemem, + freemem_size for most of the time. */ + __libc_lock_define_initialized (static, lock) + + if (__builtin_expect (convd->conv_tab == NULL, 0)) + { + __libc_lock_lock (lock); + if (convd->conv_tab == NULL) + { + convd->conv_tab = + (char **) calloc (nstrings + domain->n_sysdep_strings, + sizeof (char *)); + if (convd->conv_tab != NULL) + goto not_translated_yet; + /* Mark that we didn't succeed allocating a table. */ + convd->conv_tab = (char **) -1; + } + __libc_lock_unlock (lock); + } + + if (__builtin_expect (convd->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. We cannot use the + translation because it might be encoded incorrectly. */ + return (char *) -1; + + if (convd->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list; +# endif + + __libc_lock_lock (lock); + not_translated_yet: + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); +# ifndef _LIBC + transmem_list = NULL; +# endif + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (convd->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + /* We should not use the translation at all, it + is incorrectly encoded. */ + __libc_lock_unlock (lock); + return NULL; + } + + inbuf = (const unsigned char *) result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (convd->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + return NULL; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + return (char *) -1; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = (unsigned char *) newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + convd->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now convd->conv_tab[act] contains the translation of all + the plural variants. */ + result = convd->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) convd->conv_tab[act]; + } + } + + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (struct loaded_l10nfile *domain, unsigned long int n, + const char *translation, size_t translation_len) +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + +#ifndef _LIBC +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (int category) +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} +#endif + +/* Guess value of current locale from value of the environment variables + or system-dependent defaults. */ +static const char * +internal_function +#ifdef IN_LIBGLOCALE +guess_category_value (int category, const char *categoryname, + const char *locale) + +#else +guess_category_value (int category, const char *categoryname) +#endif +{ + const char *language; +#ifndef IN_LIBGLOCALE + const char *locale; +# ifndef _LIBC + const char *language_default; + int locale_defaulted; +# endif +#endif + + /* We use the settings in the following order: + 1. The value of the environment variable 'LANGUAGE'. This is a GNU + extension. Its value can be a colon-separated list of locale names. + 2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'. + More precisely, the first among these that is set to a non-empty value. + This is how POSIX specifies it. The value is a single locale name. + 3. A system-dependent preference list of languages. Its value can be a + colon-separated list of locale names. + 4. A system-dependent default locale name. + This way: + - System-dependent settings can be overridden by environment variables. + - If the system provides both a list of languages and a default locale, + the former is used. */ + +#ifndef IN_LIBGLOCALE + /* Fetch the locale name, through the POSIX method of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +# ifdef _LIBC + locale = __current_locale_name (category); +# else + locale_defaulted = 0; +# if HAVE_USELOCALE + locale = _nl_locale_name_thread_unsafe (category, categoryname); + if (locale == NULL) +# endif + { + locale = _nl_locale_name_posix (category, categoryname); + if (locale == NULL) + { + locale = _nl_locale_name_default (); + locale_defaulted = 1; + } + } +# endif +#endif + + /* Ignore LANGUAGE and its system-dependent analogon if the locale is set + to "C" because + 1. "C" locale usually uses the ASCII encoding, and most international + messages use non-ASCII characters. These characters get displayed + as question marks (if using glibc's iconv()) or as invalid 8-bit + characters (because other iconv()s refuse to convert most non-ASCII + characters to ASCII). In any case, the output is ugly. + 2. The precise output of some programs in the "C" locale is specified + by POSIX and should not depend on environment variables like + "LANGUAGE" or system-dependent information. We allow such programs + to use gettext(). */ + if (strcmp (locale, "C") == 0) + return locale; + + /* The highest priority value is the value of the 'LANGUAGE' environment + variable. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] != '\0') + return language; +#if !defined IN_LIBGLOCALE && !defined _LIBC + /* The next priority value is the locale name, if not defaulted. */ + if (locale_defaulted) + { + /* The next priority value is the default language preferences list. */ + language_default = _nl_language_preferences_default (); + if (language_default != NULL) + return language_default; + } + /* The least priority value is the locale name, if defaulted. */ +#endif + return locale; +} + +#if (defined _LIBC || HAVE_ICONV) && !defined IN_LIBGLOCALE +/* Returns the output charset. */ +static const char * +internal_function +get_output_charset (struct binding *domainbinding) +{ + /* The output charset should normally be determined by the locale. But + sometimes the locale is not used or not correctly set up, so we provide + a possibility for the user to override this: the OUTPUT_CHARSET + environment variable. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + return domainbinding->codeset; + else + { + /* For speed reasons, we look at the value of OUTPUT_CHARSET only + once. This is a user variable that is not supposed to change + during a program run. */ + static char *output_charset_cache; + static int output_charset_cached; + + if (!output_charset_cached) + { + const char *value = getenv ("OUTPUT_CHARSET"); + + if (value != NULL && value[0] != '\0') + { + size_t len = strlen (value) + 1; + char *value_copy = (char *) malloc (len); + + if (value_copy != NULL) + memcpy (value_copy, value, len); + output_charset_cache = value_copy; + } + output_charset_cached = 1; + } + + if (output_charset_cache != NULL) + return output_charset_cache; + else + { +# ifdef _LIBC + return _NL_CURRENT (LC_CTYPE, CODESET); +# else +# if HAVE_ICONV + return locale_charset (); +# endif +# endif + } + } +} +#endif + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (void *dest, const void *src, size_t n) +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + +#if !_LIBC && !HAVE_TSEARCH +# include "tsearch.c" +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +libc_freeres_fn (free_mem) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} +#endif diff --git a/libmednahawk/intl/dcngettext.c b/libmednahawk/intl/dcngettext.c new file mode 100644 index 0000000000..eb9509a81c --- /dev/null +++ b/libmednahawk/intl/dcngettext.c @@ -0,0 +1,57 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT libintl_dcngettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/libmednahawk/intl/dgettext.c b/libmednahawk/intl/dgettext.c new file mode 100644 index 0000000000..f29ed57345 --- /dev/null +++ b/libmednahawk/intl/dgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define DGETTEXT libintl_dgettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (const char *domainname, const char *msgid) +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/libmednahawk/intl/dngettext.c b/libmednahawk/intl/dngettext.c new file mode 100644 index 0000000000..fc1c34188b --- /dev/null +++ b/libmednahawk/intl/dngettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT libintl_dngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/libmednahawk/intl/eval-plural.h b/libmednahawk/intl/eval-plural.h new file mode 100644 index 0000000000..825a754e8f --- /dev/null +++ b/libmednahawk/intl/eval-plural.h @@ -0,0 +1,108 @@ +/* Plural expression evaluation. + Copyright (C) 2000-2003, 2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef STATIC +#define STATIC static +#endif + +/* Evaluate the plural expression and return an index value. */ +STATIC +unsigned long int +internal_function +plural_eval (const struct expression *pexp, unsigned long int n) +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg / rightarg; + case module: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} diff --git a/libmednahawk/intl/explodename.c b/libmednahawk/intl/explodename.c new file mode 100644 index 0000000000..fab8e22033 --- /dev/null +++ b/libmednahawk/intl/explodename.c @@ -0,0 +1,135 @@ +/* Copyright (C) 1995-1998, 2000-2001, 2003, 2005, 2007 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +/* Split a locale name NAME into a leading language part and all the + rest. Return a pointer to the first character after the language, + i.e. to the first byte of the rest. */ +static char *_nl_find_language (const char *name); + +static char * +_nl_find_language (const char *name) +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' && name[0] != '.') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (char *name, + const char **language, const char **modifier, + const char **territory, const char **codeset, + const char **normalized_codeset) +{ + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_', '.', and `@'. */ + mask = 0; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else + { + if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@') + ++cp; + + mask |= XPG_TERRITORY; + } + + if (cp[0] == '.') + { + /* Next is the codeset. */ + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (*normalized_codeset == NULL) + return -1; + else if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@') + { + /* Next is the modifier. */ + cp[0] = '\0'; + *modifier = ++cp; + + if (cp[0] != '\0') + mask |= XPG_MODIFIER; + } + + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~XPG_TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + return mask; +} diff --git a/libmednahawk/intl/export.h b/libmednahawk/intl/export.h new file mode 100644 index 0000000000..9b7b1049fc --- /dev/null +++ b/libmednahawk/intl/export.h @@ -0,0 +1,6 @@ + +#if @HAVE_VISIBILITY@ && BUILDING_LIBINTL +#define LIBINTL_DLL_EXPORTED __attribute__((__visibility__("default"))) +#else +#define LIBINTL_DLL_EXPORTED +#endif diff --git a/libmednahawk/intl/finddomain.c b/libmednahawk/intl/finddomain.c new file mode 100644 index 0000000000..0c57737b34 --- /dev/null +++ b/libmednahawk/intl/finddomain.c @@ -0,0 +1,212 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000-2001, 2003-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define_initialized __libc_rwlock_define_initialized +# define gl_rwlock_rdlock __libc_rwlock_rdlock +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (const char *dirname, char *locale, + const char *domainname, struct binding *domainbinding) +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory][.codeset][@modifier] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) codeset + (2) normalized codeset + (3) territory + (4) modifier + */ + + /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ + gl_rwlock_define_initialized (static, lock); + gl_rwlock_rdlock (lock); + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, domainname, 0); + + gl_rwlock_unlock (lock); + + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided <= 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided <= 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + + return retval; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_', '.', and `@'. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset); + if (mask == -1) + /* This means we are out of core. */ + return NULL; + + /* We need to protect modifying the _NL_LOADED_DOMAINS data. */ + gl_rwlock_wrlock (lock); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, + domainname, 1); + + gl_rwlock_unlock (lock); + + if (retval == NULL) + /* This means we are out of core. */ + goto out; + + if (retval->decided <= 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided <= 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + +out: + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +/* This is called from iconv/gconv_db.c's free_mem, as locales must + be freed before freeing gconv steps arrays. */ +void __libc_freeres_fn_section +_nl_finddomain_subfreeres () +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} +#endif diff --git a/libmednahawk/intl/gettext.c b/libmednahawk/intl/gettext.c new file mode 100644 index 0000000000..53f65d02ab --- /dev/null +++ b/libmednahawk/intl/gettext.c @@ -0,0 +1,63 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define GETTEXT libintl_gettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (const char *msgid) +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/libmednahawk/intl/gettextP.h b/libmednahawk/intl/gettextP.h new file mode 100644 index 0000000000..88db84ea0b --- /dev/null +++ b/libmednahawk/intl/gettextP.h @@ -0,0 +1,311 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000-2007, 2009-2010 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +#else +# include "lock.h" +#endif + +#ifdef _LIBC +extern char *__gettext (const char *__msgid); +extern char *__dgettext (const char *__domainname, const char *__msgid); +extern char *__dcgettext (const char *__domainname, const char *__msgid, + int __category); +extern char *__ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n); +extern char *__dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n); +extern char *__dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category); +extern char *__dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +extern char *__textdomain (const char *__domainname); +extern char *__bindtextdomain (const char *__domainname, + const char *__dirname); +extern char *__bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +extern void _nl_finddomain_subfreeres (void) attribute_hidden; +extern void _nl_unload_domain (struct loaded_domain *__domain) + internal_function attribute_hidden; +#else +/* Declare the exported libintl_* functions, in a way that allows us to + call them under their real name. */ +# undef _INTL_REDIRECT_INLINE +# undef _INTL_REDIRECT_MACROS +# define _INTL_REDIRECT_MACROS +# include "libgnuintl.h" +# ifdef IN_LIBGLOCALE +extern char *gl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category, + const char *__localename, const char *__encoding); +# else +extern char *libintl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +# endif +#endif + +#include "loadinfo.h" + +#include "gmo.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +# ifdef __cplusplus +SWAP (nls_uint32 i) +# else +SWAP (i) + nls_uint32 i; +# endif +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* In-memory representation of system dependent string. */ +struct sysdep_string_desc +{ + /* Length of addressed string, including the trailing NUL. */ + size_t length; + /* Pointer to addressed string. */ + const char *pointer; +}; + +/* Cache of translated strings after charset conversion. + Note: The strings are converted to the target encoding only on an as-needed + basis. */ +struct converted_domain +{ + /* The target encoding name. */ + const char *encoding; + /* The descriptor for conversion from the message catalog's encoding to + this target encoding. */ +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + /* The table of translated strings after charset conversion. */ + char **conv_tab; +}; + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + /* Pointer to memory containing the .mo file. */ + const char *data; + /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ + int use_mmap; + /* Size of mmap()ed memory. */ + size_t mmap_size; + /* 1 if the .mo file uses a different endianness than this machine. */ + int must_swap; + /* Pointer to additional malloc()ed memory. */ + void *malloced; + + /* Number of static strings pairs. */ + nls_uint32 nstrings; + /* Pointer to descriptors of original strings in the file. */ + const struct string_desc *orig_tab; + /* Pointer to descriptors of translated strings in the file. */ + const struct string_desc *trans_tab; + + /* Number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Pointer to descriptors of original sysdep strings. */ + const struct sysdep_string_desc *orig_sysdep_tab; + /* Pointer to descriptors of translated sysdep strings. */ + const struct sysdep_string_desc *trans_sysdep_tab; + + /* Size of hash table. */ + nls_uint32 hash_size; + /* Pointer to hash table. */ + const nls_uint32 *hash_tab; + /* 1 if the hash table uses a different endianness than this machine. */ + int must_swap_hash_tab; + + /* Cache of charset conversions of the translated strings. */ + struct converted_domain *conversions; + size_t nconversions; + gl_rwlock_define (, conversions_lock) + + const struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +#ifdef IN_LIBGLOCALE +# include +extern LIBGLOCALE_DLL_EXPORTED int _nl_msg_cat_cntr; +#else +extern LIBINTL_DLL_EXPORTED int _nl_msg_cat_cntr; +#endif + +#ifndef _LIBC +extern const char *_nl_language_preferences_default (void); +# define gl_locale_name_canonicalize _nl_locale_name_canonicalize +extern void _nl_locale_name_canonicalize (char *name); +# define gl_locale_name_from_win32_LANGID _nl_locale_name_from_win32_LANGID +/* extern const char *_nl_locale_name_from_win32_LANGID (LANGID langid); */ +# define gl_locale_name_from_win32_LCID _nl_locale_name_from_win32_LCID +/* extern const char *_nl_locale_name_from_win32_LCID (LCID lcid); */ +# define gl_locale_name_thread_unsafe _nl_locale_name_thread_unsafe +extern const char *_nl_locale_name_thread_unsafe (int category, + const char *categoryname); +# define gl_locale_name_thread _nl_locale_name_thread +/* extern const char *_nl_locale_name_thread (int category, + const char *categoryname); */ +# define gl_locale_name_posix _nl_locale_name_posix +extern const char *_nl_locale_name_posix (int category, + const char *categoryname); +# define gl_locale_name_environ _nl_locale_name_environ +extern const char *_nl_locale_name_environ (int category, + const char *categoryname); +# define gl_locale_name_default _nl_locale_name_default +extern const char *_nl_locale_name_default (void); +# define gl_locale_name _nl_locale_name +/* extern const char *_nl_locale_name (int category, + const char *categoryname); */ +#endif + +struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale, + const char *__domainname, + struct binding *__domainbinding) + internal_function; +void _nl_load_domain (struct loaded_l10nfile *__domain, + struct binding *__domainbinding) + internal_function; + +#ifdef IN_LIBGLOCALE +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *encoding, + const char *msgid, + size_t *lengthp) + internal_function; +#else +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *msgid, + int convert, size_t *lengthp) + internal_function; +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname libintl_nl_default_dirname +# define _nl_domain_bindings libintl_nl_domain_bindings +#endif + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; +#ifdef _LIBC +libc_hidden_proto (_nl_default_dirname) +#endif + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +#endif + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[] attribute_hidden; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain attribute_hidden; + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/libmednahawk/intl/gmo.h b/libmednahawk/intl/gmo.h new file mode 100644 index 0000000000..73043136bf --- /dev/null +++ b/libmednahawk/intl/gmo.h @@ -0,0 +1,152 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000-2002, 2004, 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 +#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + + /* The following are only used in .mo files with major revision 0 or 1. */ + + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translated strings. */ + nls_uint32 trans_tab_offset; + /* Size of hash table. */ + nls_uint32 hash_tab_size; + /* Offset of first hash table entry. */ + nls_uint32 hash_tab_offset; + + /* The following are only used in .mo files with minor revision >= 1. */ + + /* The number of system dependent segments. */ + nls_uint32 n_sysdep_segments; + /* Offset of table describing system dependent segments. */ + nls_uint32 sysdep_segments_offset; + /* The number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Offset of table with start offsets of original sysdep strings. */ + nls_uint32 orig_sysdep_tab_offset; + /* Offset of table with start offsets of translated sysdep strings. */ + nls_uint32 trans_sysdep_tab_offset; +}; + +/* Descriptor for static string contained in the binary .mo file. */ +struct string_desc +{ + /* Length of addressed string, not including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* The following are only used in .mo files with minor revision >= 1. */ + +/* Descriptor for system dependent string segment. */ +struct sysdep_segment +{ + /* Length of addressed string, including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* Pair of a static and a system dependent segment, in struct sysdep_string. */ +struct segment_pair +{ + /* Size of static segment. */ + nls_uint32 segsize; + /* Reference to system dependent string segment, or ~0 at the end. */ + nls_uint32 sysdepref; +}; + +/* Descriptor for system dependent string. */ +struct sysdep_string +{ + /* Offset of static string segments in file. */ + nls_uint32 offset; + /* Alternating sequence of static and system dependent segments. + The last segment is a static segment, including the trailing NUL. */ + struct segment_pair segments[1]; +}; + +/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, + regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ +#define SEGMENTS_END ((nls_uint32) ~0) + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/libmednahawk/intl/hash-string.c b/libmednahawk/intl/hash-string.c new file mode 100644 index 0000000000..9b1e76bdd0 --- /dev/null +++ b/libmednahawk/intl/hash-string.c @@ -0,0 +1,51 @@ +/* Implements a string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "hash-string.h" + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +unsigned long int +__hash_string (const char *str_param) +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned char) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/libmednahawk/intl/hash-string.h b/libmednahawk/intl/hash-string.h new file mode 100644 index 0000000000..8c8b798476 --- /dev/null +++ b/libmednahawk/intl/hash-string.h @@ -0,0 +1,36 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997-1998, 2000-2003, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* @@ end of prolog @@ */ + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +#ifndef _LIBC +# ifdef IN_LIBINTL +# define __hash_string libintl_hash_string +# else +# define __hash_string hash_string +# endif +#endif + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +extern unsigned long int __hash_string (const char *str_param); diff --git a/libmednahawk/intl/intl-compat.c b/libmednahawk/intl/intl-compat.c new file mode 100644 index 0000000000..bc92206b3d --- /dev/null +++ b/libmednahawk/intl/intl-compat.c @@ -0,0 +1,133 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000-2003, 2005 Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix) to those + defined in the included GNU libintl library (with "libintl_" prefix). + It is compiled into libintl in order to make the AM_GNU_GETTEXT test + of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which + has the redirections primarily in the include file. + It is also compiled into libgnuintl so that libgnuintl.so can be used + as LD_PRELOADable library on glibc systems, to provide the extra + features that the functions in the libc don't have (namely, logging). */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + + +DLL_EXPORTED +char * +gettext (const char *msgid) +{ + return libintl_gettext (msgid); +} + + +DLL_EXPORTED +char * +dgettext (const char *domainname, const char *msgid) +{ + return libintl_dgettext (domainname, msgid); +} + + +DLL_EXPORTED +char * +dcgettext (const char *domainname, const char *msgid, int category) +{ + return libintl_dcgettext (domainname, msgid, category); +} + + +DLL_EXPORTED +char * +ngettext (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_ngettext (msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_dngettext (domainname, msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dcngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return libintl_dcngettext (domainname, msgid1, msgid2, n, category); +} + + +DLL_EXPORTED +char * +textdomain (const char *domainname) +{ + return libintl_textdomain (domainname); +} + + +DLL_EXPORTED +char * +bindtextdomain (const char *domainname, const char *dirname) +{ + return libintl_bindtextdomain (domainname, dirname); +} + + +DLL_EXPORTED +char * +bind_textdomain_codeset (const char *domainname, const char *codeset) +{ + return libintl_bind_textdomain_codeset (domainname, codeset); +} diff --git a/libmednahawk/intl/intl-exports.c b/libmednahawk/intl/intl-exports.c new file mode 100644 index 0000000000..42a248a193 --- /dev/null +++ b/libmednahawk/intl/intl-exports.c @@ -0,0 +1,36 @@ +/* List of exported symbols of libintl on Cygwin. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Bruno Haible , 2006. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + /* IMP(x) is a symbol that contains the address of x. */ +#define IMP(x) _imp__##x + + /* Ensure that the variable x is exported from the library, and that a + pseudo-variable IMP(x) is available. */ +#define VARIABLE(x) \ + /* Export x without redefining x. This code was found by compiling a \ + snippet: \ + extern __declspec(dllexport) int x; int x = 42; */ \ + asm (".section .drectve\n"); \ + asm (".ascii \" -export:" #x ",data\"\n"); \ + asm (".data\n"); \ + /* Allocate a pseudo-variable IMP(x). */ \ + extern int x; \ + void * IMP(x) = &x; + +VARIABLE(libintl_version) diff --git a/libmednahawk/intl/l10nflist.c b/libmednahawk/intl/l10nflist.c new file mode 100644 index 0000000000..26eb80d1aa --- /dev/null +++ b/libmednahawk/intl/l10nflist.c @@ -0,0 +1,400 @@ +/* Copyright (C) 1995-1999, 2000-2007 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +#endif + +/* Define function which are usually not available. */ + +#ifdef _LIBC +# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) +#elif defined HAVE_ARGZ_COUNT +# undef __argz_count +# define __argz_count argz_count +#else +/* Returns the number of strings in ARGZ. */ +static size_t +argz_count__ (const char *argz, size_t len) +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE_ARGZ_COUNT */ + +#ifdef _LIBC +# define __argz_stringify(argz, len, sep) \ + INTUSE(__argz_stringify) (argz, len, sep) +#elif defined HAVE_ARGZ_STRINGIFY +# undef __argz_stringify +# define __argz_stringify argz_stringify +#else +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void +argz_stringify__ (char *argz, size_t len, int sep) +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE_ARGZ_STRINGIFY */ + +#ifdef _LIBC +#elif defined HAVE_ARGZ_NEXT +# undef __argz_next +# define __argz_next argz_next +#else +static char * +argz_next__ (char *argz, size_t argz_len, const char *entry) +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE_ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static inline int +pop (int x) +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, + int mask, const char *language, const char *territory, + const char *codeset, const char *normalized_codeset, + const char *modifier, + const char *filename, int do_allocate) +{ + char *abs_filename; + struct loaded_l10nfile **lastp; + struct loaded_l10nfile *retval; + char *cp; + size_t dirlist_count; + size_t entries; + int cnt; + + /* If LANGUAGE contains an absolute directory specification, we ignore + DIRLIST. */ + if (IS_ABSOLUTE_PATH (language)) + dirlist_len = 0; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & XPG_TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + ((mask & XPG_MODIFIER) != 0 + ? strlen (modifier) + 1 : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + /* Construct file name. */ + cp = abs_filename; + if (dirlist_len > 0) + { + memcpy (cp, dirlist, dirlist_len); + __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); + cp += dirlist_len; + cp[-1] = '/'; + } + + cp = stpcpy (cp, language); + + if ((mask & XPG_TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & XPG_MODIFIER) != 0) + { + *cp++ = '@'; + cp = stpcpy (cp, modifier); + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + lastp = l10nfile_list; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + lastp = &retval->next; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); + + /* Allocate a new loaded_l10nfile. */ + retval = + (struct loaded_l10nfile *) + malloc (sizeof (*retval) + + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + { + free (abs_filename); + return NULL; + } + + retval->filename = abs_filename; + + /* We set retval->data to NULL here; it is filled in later. + Setting retval->decided to 1 here means that retval does not + correspond to a real file (dirlist_count > 1) or is not worth + looking up (if an unnormalized codeset was specified). */ + retval->decided = (dirlist_count > 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + retval->next = *lastp; + *lastp = retval; + + entries = 0; + /* Recurse to fill the inheritance list of RETVAL. + If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL + entry does not correspond to a real file; retval->filename contains + colons. In this case we loop across all elements of DIRLIST and + across all bit patterns dominated by MASK. + If the DIRLIST is a single directory or entirely redundant (i.e. + DIRLIST_COUNT == 1), we loop across all bit patterns dominated by + MASK, excluding MASK itself. + In either case, we loop down from MASK to 0. This has the effect + that the extra bits in the locale name are dropped in this order: + first the modifier, then the territory, then the codeset, then the + normalized_codeset. */ + for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && !((cnt & XPG_CODESET) != 0 && (cnt & XPG_NORM_CODESET) != 0)) + { + if (dirlist_count > 1) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, + cnt, language, territory, codeset, + normalized_codeset, modifier, filename, + 1); + } + else + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, + cnt, language, territory, codeset, + normalized_codeset, modifier, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (const char *codeset, size_t name_len) +{ + size_t len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum ((unsigned char) codeset[cnt])) + { + ++len; + + if (isalpha ((unsigned char) codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha ((unsigned char) codeset[cnt])) + *wp++ = tolower ((unsigned char) codeset[cnt]); + else if (isdigit ((unsigned char) codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/libmednahawk/intl/langprefs.c b/libmednahawk/intl/langprefs.c new file mode 100644 index 0000000000..59173ff7cd --- /dev/null +++ b/libmednahawk/intl/langprefs.c @@ -0,0 +1,355 @@ +/* Determine the user's language preferences. + Copyright (C) 2004-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . + Win32 code originally by Michele Cicciotti . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# include +# include +# include +extern void _nl_locale_name_canonicalize (char *name); +#endif + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#ifdef WIN32_NATIVE +# define WIN32_LEAN_AND_MEAN +# include + +# ifndef MUI_LANGUAGE_NAME +# define MUI_LANGUAGE_NAME 8 +# endif +# ifndef STATUS_BUFFER_OVERFLOW +# define STATUS_BUFFER_OVERFLOW 0x80000005 +# endif + +extern void _nl_locale_name_canonicalize (char *name); +extern const char *_nl_locale_name_from_win32_LANGID (LANGID langid); +extern const char *_nl_locale_name_from_win32_LCID (LCID lcid); + +/* Get the preferences list through the MUI APIs. This works on Windows Vista + and newer. */ +static const char * +_nl_language_preferences_win32_mui (HMODULE kernel32) +{ + /* DWORD GetUserPreferredUILanguages (ULONG dwFlags, + PULONG pulNumLanguages, + PWSTR pwszLanguagesBuffer, + PULONG pcchLanguagesBuffer); */ + typedef DWORD (WINAPI *GetUserPreferredUILanguages_func) (ULONG, PULONG, PWSTR, PULONG); + GetUserPreferredUILanguages_func p_GetUserPreferredUILanguages; + + p_GetUserPreferredUILanguages = + (GetUserPreferredUILanguages_func) + GetProcAddress (kernel32, "GetUserPreferredUILanguages"); + if (p_GetUserPreferredUILanguages != NULL) + { + ULONG num_languages; + ULONG bufsize; + DWORD ret; + + bufsize = 0; + ret = p_GetUserPreferredUILanguages (MUI_LANGUAGE_NAME, + &num_languages, + NULL, &bufsize); + if (ret == 0 + && GetLastError () == STATUS_BUFFER_OVERFLOW + && bufsize > 0) + { + WCHAR *buffer = (WCHAR *) malloc (bufsize * sizeof (WCHAR)); + if (buffer != NULL) + { + ret = p_GetUserPreferredUILanguages (MUI_LANGUAGE_NAME, + &num_languages, + buffer, &bufsize); + if (ret) + { + /* Convert the list from NUL-delimited WCHAR[] Win32 locale + names to colon-delimited char[] Unix locale names. + We assume that all these locale names are in ASCII, + nonempty and contain no colons. */ + char *languages = + (char *) malloc (bufsize + num_languages * 10 + 1); + if (languages != NULL) + { + const WCHAR *p = buffer; + char *q = languages; + ULONG i; + for (i = 0; i < num_languages; i++) + { + char *q1; + char *q2; + + q1 = q; + if (i > 0) + *q++ = ':'; + q2 = q; + for (; *p != (WCHAR)'\0'; p++) + { + if ((unsigned char) *p != *p || *p == ':') + { + /* A non-ASCII character or a colon inside + the Win32 locale name! Punt. */ + q = q1; + break; + } + *q++ = (unsigned char) *p; + } + if (q == q1) + /* An unexpected Win32 locale name occurred. */ + break; + *q = '\0'; + _nl_locale_name_canonicalize (q2); + q = q2 + strlen (q2); + p++; + } + *q = '\0'; + if (q > languages) + { + free (buffer); + return languages; + } + free (languages); + } + } + free (buffer); + } + } + } + return NULL; +} + +/* Get a preference. This works on Windows ME and newer. */ +static const char * +_nl_language_preferences_win32_ME (HMODULE kernel32) +{ + /* LANGID GetUserDefaultUILanguage (void); */ + typedef LANGID (WINAPI *GetUserDefaultUILanguage_func) (void); + GetUserDefaultUILanguage_func p_GetUserDefaultUILanguage; + + p_GetUserDefaultUILanguage = + (GetUserDefaultUILanguage_func) + GetProcAddress (kernel32, "GetUserDefaultUILanguage"); + if (p_GetUserDefaultUILanguage != NULL) + return _nl_locale_name_from_win32_LANGID (p_GetUserDefaultUILanguage ()); + return NULL; +} + +/* Get a preference. This works on Windows 95 and newer. */ +static const char * +_nl_language_preferences_win32_95 () +{ + HKEY desktop_resource_locale_key; + + if (RegOpenKeyExA (HKEY_CURRENT_USER, + "Control Panel\\Desktop\\ResourceLocale", + 0, KEY_QUERY_VALUE, &desktop_resource_locale_key) + == NO_ERROR) + { + DWORD type; + char data[8 + 1]; + DWORD data_size = sizeof (data); + DWORD ret; + + ret = RegQueryValueExA (desktop_resource_locale_key, NULL, NULL, + &type, data, &data_size); + RegCloseKey (desktop_resource_locale_key); + + if (ret == NO_ERROR) + { + /* We expect a string, at most 8 bytes long, that parses as a + hexadecimal number. */ + if (type == REG_SZ + && data_size <= sizeof (data) + && (data_size < sizeof (data) + || data[sizeof (data) - 1] == '\0')) + { + LCID lcid; + char *endp; + /* Ensure it's NUL terminated. */ + if (data_size < sizeof (data)) + data[data_size] = '\0'; + /* Parse it as a hexadecimal number. */ + lcid = strtoul (data, &endp, 16); + if (endp > data && *endp == '\0') + return _nl_locale_name_from_win32_LCID (lcid); + } + } + } + return NULL; +} + +/* Get the system's preference. This can be used as a fallback. */ +static BOOL CALLBACK +ret_first_language (HMODULE h, LPCSTR type, LPCSTR name, WORD lang, LONG_PTR param) +{ + *(const char **)param = _nl_locale_name_from_win32_LANGID (lang); + return FALSE; +} +static const char * +_nl_language_preferences_win32_system (HMODULE kernel32) +{ + const char *languages = NULL; + /* Ignore the warning on mingw here. mingw has a wrong definition of the last + parameter type of ENUMRESLANGPROC. */ + EnumResourceLanguages (kernel32, RT_VERSION, MAKEINTRESOURCE (1), + ret_first_language, (LONG_PTR)&languages); + return languages; +} + +#endif + +/* Determine the user's language preferences, as a colon separated list of + locale names in XPG syntax + language[_territory][.codeset][@modifier] + The result must not be freed; it is statically allocated. + The LANGUAGE environment variable does not need to be considered; it is + already taken into account by the caller. */ + +const char * +_nl_language_preferences_default (void) +{ +#if HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + { + /* Cache the preferences list, since CoreFoundation calls are expensive. */ + static const char *cached_languages; + static int cache_initialized; + + if (!cache_initialized) + { + CFTypeRef preferences = + CFPreferencesCopyAppValue (CFSTR ("AppleLanguages"), + kCFPreferencesCurrentApplication); + if (preferences != NULL + && CFGetTypeID (preferences) == CFArrayGetTypeID ()) + { + CFArrayRef prefArray = (CFArrayRef)preferences; + int n = CFArrayGetCount (prefArray); + char buf[256]; + size_t size = 0; + int i; + + for (i = 0; i < n; i++) + { + CFTypeRef element = CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + size += strlen (buf) + 1; + /* Most GNU programs use msgids in English and don't ship + an en.mo message catalog. Therefore when we see "en" + in the preferences list, arrange for gettext() to + return the msgid, and ignore all further elements of + the preferences list. */ + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + if (size > 0) + { + char *languages = (char *) malloc (size); + + if (languages != NULL) + { + char *p = languages; + + for (i = 0; i < n; i++) + { + CFTypeRef element = + CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + strcpy (p, buf); + p += strlen (buf); + *p++ = ':'; + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + *--p = '\0'; + + cached_languages = languages; + } + } + } + cache_initialized = 1; + } + if (cached_languages != NULL) + return cached_languages; + } +#endif + +#ifdef WIN32_NATIVE + { + /* Cache the preferences list, since computing it is expensive. */ + static const char *cached_languages; + static int cache_initialized; + + /* Activate the new code only when the GETTEXT_MUI environment variable is + set, for the time being, since the new code is not well tested. */ + if (!cache_initialized && getenv ("GETTEXT_MUI") != NULL) + { + const char *languages = NULL; + HMODULE kernel32 = GetModuleHandle ("kernel32"); + + if (kernel32 != NULL) + languages = _nl_language_preferences_win32_mui (kernel32); + + if (languages == NULL && kernel32 != NULL) + languages = _nl_language_preferences_win32_ME (kernel32); + + if (languages == NULL) + languages = _nl_language_preferences_win32_95 (); + + if (languages == NULL && kernel32 != NULL) + languages = _nl_language_preferences_win32_system (kernel32); + + cached_languages = languages; + cache_initialized = 1; + } + if (cached_languages != NULL) + return cached_languages; + } +#endif + + return NULL; +} diff --git a/libmednahawk/intl/libgnuintl.h.in b/libmednahawk/intl/libgnuintl.h.in new file mode 100644 index 0000000000..d46eccac36 --- /dev/null +++ b/libmednahawk/intl/libgnuintl.h.in @@ -0,0 +1,466 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000-2010 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include +#if (defined __APPLE__ && defined __MACH__) && @HAVE_NEWLOCALE@ +# include +#endif + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) + then includes (i.e. this file!) and then only defines + LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES + in this case. */ +#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Provide information about the supported file formats. Returns the + maximum minor revision number supported for a given major revision. */ +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ + ((major) == 0 || (major) == 1 ? 1 : -1) + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Version number: (major<<16) + (minor<<8) + subminor */ +#define LIBINTL_VERSION 0x001201 +extern int libintl_version; + + +/* We redirect the functions to those prefixed with "libintl_". This is + necessary, because some systems define gettext/textdomain/... in the C + library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). + If we used the unprefixed names, there would be cases where the + definition in the C library would override the one in the libintl.so + shared library. Recall that on ELF systems, the symbols are looked + up in the following order: + 1. in the executable, + 2. in the shared libraries specified on the link command line, in order, + 3. in the dependencies of the shared libraries specified on the link + command line, + 4. in the dlopen()ed shared libraries, in the order in which they were + dlopen()ed. + The definition in the C library would override the one in libintl.so if + either + * -lc is given on the link command line and -lintl isn't, or + * -lc is given on the link command line before -lintl, or + * libintl.so is a dependency of a dlopen()ed shared library but not + linked to the executable at link time. + Since Solaris gettext() behaves differently than GNU gettext(), this + would be unacceptable. + + The redirection happens by default through macros in C, so that &gettext + is independent of the compilation unit, but through inline functions in + C++, in order not to interfere with the name mangling of class fields or + class methods called 'gettext'. */ + +/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. + If he doesn't, we choose the method. A third possible method is + _INTL_REDIRECT_ASM, supported only by GCC. */ +#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) +# if defined __GNUC__ && __GNUC__ >= 2 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) +# define _INTL_REDIRECT_ASM +# else +# ifdef __cplusplus +# define _INTL_REDIRECT_INLINE +# else +# define _INTL_REDIRECT_MACROS +# endif +# endif +#endif +/* Auxiliary macros. */ +#ifdef _INTL_REDIRECT_ASM +# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) +# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring +# define _INTL_STRINGIFY(prefix) #prefix +#else +# define _INTL_ASM(cname) +#endif + +/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return + its n-th argument literally. This enables GCC to warn for example about + printf (gettext ("foo %y")). */ +#if defined __GNUC__ && __GNUC__ >= 3 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && defined __cplusplus) +# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n))) +#else +# define _INTL_MAY_RETURN_STRING_ARG(n) +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_gettext (const char *__msgid) + _INTL_MAY_RETURN_STRING_ARG (1); +static inline char *gettext (const char *__msgid) +{ + return libintl_gettext (__msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define gettext libintl_gettext +#endif +extern char *gettext (const char *__msgid) + _INTL_ASM (libintl_gettext) + _INTL_MAY_RETURN_STRING_ARG (1); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dgettext (const char *__domainname, const char *__msgid) + _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *dgettext (const char *__domainname, const char *__msgid) +{ + return libintl_dgettext (__domainname, __msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dgettext libintl_dgettext +#endif +extern char *dgettext (const char *__domainname, const char *__msgid) + _INTL_ASM (libintl_dgettext) + _INTL_MAY_RETURN_STRING_ARG (2); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *dcgettext (const char *__domainname, const char *__msgid, + int __category) +{ + return libintl_dcgettext (__domainname, __msgid, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcgettext libintl_dcgettext +#endif +extern char *dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_ASM (libintl_dcgettext) + _INTL_MAY_RETURN_STRING_ARG (2); +#endif + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); +static inline char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) +{ + return libintl_ngettext (__msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define ngettext libintl_ngettext +#endif +extern char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_ngettext) + _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); +#endif + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +static inline char *dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) +{ + return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dngettext libintl_dngettext +#endif +extern char *dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_dngettext) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +#endif + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +static inline char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) +{ + return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcngettext libintl_dcngettext +#endif +extern char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_ASM (libintl_dcngettext) + _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); +#endif + + +#ifndef IN_LIBGLOCALE + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_textdomain (const char *__domainname); +static inline char *textdomain (const char *__domainname) +{ + return libintl_textdomain (__domainname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define textdomain libintl_textdomain +#endif +extern char *textdomain (const char *__domainname) + _INTL_ASM (libintl_textdomain); +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bindtextdomain (const char *__domainname, + const char *__dirname); +static inline char *bindtextdomain (const char *__domainname, + const char *__dirname) +{ + return libintl_bindtextdomain (__domainname, __dirname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bindtextdomain libintl_bindtextdomain +#endif +extern char *bindtextdomain (const char *__domainname, const char *__dirname) + _INTL_ASM (libintl_bindtextdomain); +#endif + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +static inline char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) +{ + return libintl_bind_textdomain_codeset (__domainname, __codeset); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bind_textdomain_codeset libintl_bind_textdomain_codeset +#endif +extern char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) + _INTL_ASM (libintl_bind_textdomain_codeset); +#endif + +#endif /* IN_LIBGLOCALE */ + + +/* Support for format strings with positions in *printf(), following the + POSIX/XSI specification. + Note: These replacements for the *printf() functions are visible only + in source files that #include or #include "gettext.h". + Packages that use *printf() in source files that don't refer to _() + or gettext() but for which the format string could be the return value + of _() or gettext() need to add this #include. Oh well. */ + +#if !@HAVE_POSIX_PRINTF@ + +#include +#include + +/* Get va_list. */ +#if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER +# include +#else +# include +#endif + +#if !(defined fprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef fprintf +#define fprintf libintl_fprintf +extern int fprintf (FILE *, const char *, ...); +#endif +#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef vfprintf +#define vfprintf libintl_vfprintf +extern int vfprintf (FILE *, const char *, va_list); +#endif + +#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef printf +#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ +/* Don't break __attribute__((format(printf,M,N))). + This redefinition is only possible because the libc in NetBSD, Cygwin, + mingw does not have a function __printf__. + Alternatively, we could have done this redirection only when compiling with + __GNUC__, together with a symbol redirection: + extern int printf (const char *, ...) + __asm__ (#__USER_LABEL_PREFIX__ "libintl_printf"); + But doing it now would introduce a binary incompatibility with already + distributed versions of libintl on these systems. */ +# define libintl_printf __printf__ +#endif +#define printf libintl_printf +extern int printf (const char *, ...); +#endif +#if !(defined vprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef vprintf +#define vprintf libintl_vprintf +extern int vprintf (const char *, va_list); +#endif + +#if !(defined sprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef sprintf +#define sprintf libintl_sprintf +extern int sprintf (char *, const char *, ...); +#endif +#if !(defined vsprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef vsprintf +#define vsprintf libintl_vsprintf +extern int vsprintf (char *, const char *, va_list); +#endif + +#if @HAVE_SNPRINTF@ + +#if !(defined snprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef snprintf +#define snprintf libintl_snprintf +extern int snprintf (char *, size_t, const char *, ...); +#endif +#if !(defined vsnprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef vsnprintf +#define vsnprintf libintl_vsnprintf +extern int vsnprintf (char *, size_t, const char *, va_list); +#endif + +#endif + +#if @HAVE_ASPRINTF@ + +#if !(defined asprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef asprintf +#define asprintf libintl_asprintf +extern int asprintf (char **, const char *, ...); +#endif +#if !(defined vasprintf && defined _GL_STDIO_H) /* don't override gnulib */ +#undef vasprintf +#define vasprintf libintl_vasprintf +extern int vasprintf (char **, const char *, va_list); +#endif + +#endif + +#if @HAVE_WPRINTF@ + +#undef fwprintf +#define fwprintf libintl_fwprintf +extern int fwprintf (FILE *, const wchar_t *, ...); +#undef vfwprintf +#define vfwprintf libintl_vfwprintf +extern int vfwprintf (FILE *, const wchar_t *, va_list); + +#undef wprintf +#define wprintf libintl_wprintf +extern int wprintf (const wchar_t *, ...); +#undef vwprintf +#define vwprintf libintl_vwprintf +extern int vwprintf (const wchar_t *, va_list); + +#undef swprintf +#define swprintf libintl_swprintf +extern int swprintf (wchar_t *, size_t, const wchar_t *, ...); +#undef vswprintf +#define vswprintf libintl_vswprintf +extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); + +#endif + +#endif + + +/* Support for the locale chosen by the user. */ +#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ + +#undef setlocale +#define setlocale libintl_setlocale +extern char *setlocale (int, const char *); + +#if @HAVE_NEWLOCALE@ + +#undef newlocale +#define newlocale libintl_newlocale +extern locale_t newlocale (int, const char *, locale_t); + +#endif + +#endif + + +/* Support for relocatable packages. */ + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +#define libintl_set_relocation_prefix libintl_set_relocation_prefix +extern void + libintl_set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/libmednahawk/intl/libintl.rc b/libmednahawk/intl/libintl.rc new file mode 100644 index 0000000000..2de1c8c56d --- /dev/null +++ b/libmednahawk/intl/libintl.rc @@ -0,0 +1,38 @@ +/* Resources for intl.dll */ + +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0 + PRODUCTVERSION PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_SUBMINOR,0 + FILEFLAGSMASK 0x3fL /* VS_FFI_FILEFLAGSMASK */ +#ifdef _DEBUG + FILEFLAGS 0x1L /* VS_FF_DEBUG */ +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x10004L /* VOS_DOS_WINDOWS32 */ + FILETYPE 0x2L /* VFT_DLL */ + FILESUBTYPE 0x0L /* VFT2_UNKNOWN */ +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "04090000" /* Lang = US English, Charset = ASCII */ + BEGIN + VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\0" + VALUE "CompanyName", "Free Software Foundation\0" + VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista/7 and Windows 95/98/ME\0" + VALUE "FileVersion", PACKAGE_VERSION_STRING "\0" + VALUE "InternalName", "intl.dll\0" + VALUE "LegalCopyright", "Copyright (C) 1995-2010\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "intl.dll\0" + VALUE "ProductName", "libintl: accessing NLS message catalogs\0" + VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0 /* US English, ASCII */ + END +END diff --git a/libmednahawk/intl/loadinfo.h b/libmednahawk/intl/loadinfo.h new file mode 100644 index 0000000000..a60a5b866c --- /dev/null +++ b/libmednahawk/intl/loadinfo.h @@ -0,0 +1,132 @@ +/* Copyright (C) 1996-1999, 2000-2003, 2005-2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +/* Declarations of locale dependent catalog lookup functions. + Implemented in + + localealias.c Possibly replace a locale name by another. + explodename.c Split a locale name into its various fields. + l10nflist.c Generate a list of filenames of possible message catalogs. + finddomain.c Find and open the relevant message catalogs. + + The main function _nl_find_domain() in finddomain.c is declared + in gettextP.h. + */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef LIBINTL_DLL_EXPORTED +# define LIBINTL_DLL_EXPORTED +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define XPG_NORM_CODESET 1 +#define XPG_CODESET 2 +#define XPG_TERRITORY 4 +#define XPG_MODIFIER 8 + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset (const char *codeset, + size_t name_len); + +/* Lookup a locale dependent file. + *L10NFILE_LIST denotes a pool of lookup results of locale dependent + files of the same kind, sorted in decreasing order of ->filename. + DIRLIST and DIRLIST_LEN are an argz list of directories in which to + look, containing at least one directory (i.e. DIRLIST_LEN > 0). + MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER + are the pieces of the locale name, as produced by _nl_explode_name(). + FILENAME is the filename suffix. + The return value is the lookup result, either found in *L10NFILE_LIST, + or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. + If the return value is non-NULL, it is added to *L10NFILE_LIST, and + its ->next field denotes the chaining inside *L10NFILE_LIST, and + furthermore its ->successor[] field contains a list of other lookup + results from which this lookup result inherits. */ +extern struct loaded_l10nfile * +_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, const char *normalized_codeset, + const char *modifier, + const char *filename, int do_allocate); + +/* Lookup the real locale name for a locale alias NAME, or NULL if + NAME is not a locale alias (but possibly a real locale name). + The return value is statically allocated and must not be freed. */ +/* Part of the libintl ABI only for the sake of the gettext.m4 macro. */ +extern LIBINTL_DLL_EXPORTED const char *_nl_expand_alias (const char *name); + +/* Split a locale name NAME into its pieces: language, modifier, + territory, codeset. + NAME gets destructively modified: NUL bytes are inserted here and + there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, + *CODESET gets assigned either a pointer into the old NAME string, or + NULL. *NORMALIZED_CODESET gets assigned the expanded *CODESET, if it + is different from *CODESET; this one is dynamically allocated and has + to be freed by the caller. + The return value is a bitmask, where each bit corresponds to one + filled-in value: + XPG_MODIFIER for *MODIFIER, + XPG_TERRITORY for *TERRITORY, + XPG_CODESET for *CODESET, + XPG_NORM_CODESET for *NORMALIZED_CODESET. + */ +extern int _nl_explode_name (char *name, const char **language, + const char **modifier, const char **territory, + const char **codeset, + const char **normalized_codeset); + +#endif /* loadinfo.h */ diff --git a/libmednahawk/intl/loadmsgcat.c b/libmednahawk/intl/loadmsgcat.c new file mode 100644 index 0000000000..d078fe5034 --- /dev/null +++ b/libmednahawk/intl/loadmsgcat.c @@ -0,0 +1,1333 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000-2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC +# include +#endif +#if defined HAVE_INTTYPES_H || defined _LIBC +# include +#endif + +#include "gmo.h" +#include "gettextP.h" +#include "hash-string.h" +#include "plural-exp.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +# include +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +/* Provide fallback values for macros that ought to be defined in . + Note that our fallback values need not be literal strings, because we don't + use them with preprocessor string concatenation. */ +#if !defined PRId8 || PRI_MACROS_BROKEN +# undef PRId8 +# define PRId8 "d" +#endif +#if !defined PRIi8 || PRI_MACROS_BROKEN +# undef PRIi8 +# define PRIi8 "i" +#endif +#if !defined PRIo8 || PRI_MACROS_BROKEN +# undef PRIo8 +# define PRIo8 "o" +#endif +#if !defined PRIu8 || PRI_MACROS_BROKEN +# undef PRIu8 +# define PRIu8 "u" +#endif +#if !defined PRIx8 || PRI_MACROS_BROKEN +# undef PRIx8 +# define PRIx8 "x" +#endif +#if !defined PRIX8 || PRI_MACROS_BROKEN +# undef PRIX8 +# define PRIX8 "X" +#endif +#if !defined PRId16 || PRI_MACROS_BROKEN +# undef PRId16 +# define PRId16 "d" +#endif +#if !defined PRIi16 || PRI_MACROS_BROKEN +# undef PRIi16 +# define PRIi16 "i" +#endif +#if !defined PRIo16 || PRI_MACROS_BROKEN +# undef PRIo16 +# define PRIo16 "o" +#endif +#if !defined PRIu16 || PRI_MACROS_BROKEN +# undef PRIu16 +# define PRIu16 "u" +#endif +#if !defined PRIx16 || PRI_MACROS_BROKEN +# undef PRIx16 +# define PRIx16 "x" +#endif +#if !defined PRIX16 || PRI_MACROS_BROKEN +# undef PRIX16 +# define PRIX16 "X" +#endif +#if !defined PRId32 || PRI_MACROS_BROKEN +# undef PRId32 +# define PRId32 "d" +#endif +#if !defined PRIi32 || PRI_MACROS_BROKEN +# undef PRIi32 +# define PRIi32 "i" +#endif +#if !defined PRIo32 || PRI_MACROS_BROKEN +# undef PRIo32 +# define PRIo32 "o" +#endif +#if !defined PRIu32 || PRI_MACROS_BROKEN +# undef PRIu32 +# define PRIu32 "u" +#endif +#if !defined PRIx32 || PRI_MACROS_BROKEN +# undef PRIx32 +# define PRIx32 "x" +#endif +#if !defined PRIX32 || PRI_MACROS_BROKEN +# undef PRIX32 +# define PRIX32 "X" +#endif +#if !defined PRId64 || PRI_MACROS_BROKEN +# undef PRId64 +# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") +#endif +#if !defined PRIi64 || PRI_MACROS_BROKEN +# undef PRIi64 +# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") +#endif +#if !defined PRIo64 || PRI_MACROS_BROKEN +# undef PRIo64 +# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") +#endif +#if !defined PRIu64 || PRI_MACROS_BROKEN +# undef PRIu64 +# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") +#endif +#if !defined PRIx64 || PRI_MACROS_BROKEN +# undef PRIx64 +# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") +#endif +#if !defined PRIX64 || PRI_MACROS_BROKEN +# undef PRIX64 +# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") +#endif +#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN +# undef PRIdLEAST8 +# define PRIdLEAST8 "d" +#endif +#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN +# undef PRIiLEAST8 +# define PRIiLEAST8 "i" +#endif +#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN +# undef PRIoLEAST8 +# define PRIoLEAST8 "o" +#endif +#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN +# undef PRIuLEAST8 +# define PRIuLEAST8 "u" +#endif +#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN +# undef PRIxLEAST8 +# define PRIxLEAST8 "x" +#endif +#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN +# undef PRIXLEAST8 +# define PRIXLEAST8 "X" +#endif +#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN +# undef PRIdLEAST16 +# define PRIdLEAST16 "d" +#endif +#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN +# undef PRIiLEAST16 +# define PRIiLEAST16 "i" +#endif +#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN +# undef PRIoLEAST16 +# define PRIoLEAST16 "o" +#endif +#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN +# undef PRIuLEAST16 +# define PRIuLEAST16 "u" +#endif +#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN +# undef PRIxLEAST16 +# define PRIxLEAST16 "x" +#endif +#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN +# undef PRIXLEAST16 +# define PRIXLEAST16 "X" +#endif +#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN +# undef PRIdLEAST32 +# define PRIdLEAST32 "d" +#endif +#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN +# undef PRIiLEAST32 +# define PRIiLEAST32 "i" +#endif +#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN +# undef PRIoLEAST32 +# define PRIoLEAST32 "o" +#endif +#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN +# undef PRIuLEAST32 +# define PRIuLEAST32 "u" +#endif +#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN +# undef PRIxLEAST32 +# define PRIxLEAST32 "x" +#endif +#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN +# undef PRIXLEAST32 +# define PRIXLEAST32 "X" +#endif +#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN +# undef PRIdLEAST64 +# define PRIdLEAST64 PRId64 +#endif +#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN +# undef PRIiLEAST64 +# define PRIiLEAST64 PRIi64 +#endif +#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN +# undef PRIoLEAST64 +# define PRIoLEAST64 PRIo64 +#endif +#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN +# undef PRIuLEAST64 +# define PRIuLEAST64 PRIu64 +#endif +#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN +# undef PRIxLEAST64 +# define PRIxLEAST64 PRIx64 +#endif +#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN +# undef PRIXLEAST64 +# define PRIXLEAST64 PRIX64 +#endif +#if !defined PRIdFAST8 || PRI_MACROS_BROKEN +# undef PRIdFAST8 +# define PRIdFAST8 "d" +#endif +#if !defined PRIiFAST8 || PRI_MACROS_BROKEN +# undef PRIiFAST8 +# define PRIiFAST8 "i" +#endif +#if !defined PRIoFAST8 || PRI_MACROS_BROKEN +# undef PRIoFAST8 +# define PRIoFAST8 "o" +#endif +#if !defined PRIuFAST8 || PRI_MACROS_BROKEN +# undef PRIuFAST8 +# define PRIuFAST8 "u" +#endif +#if !defined PRIxFAST8 || PRI_MACROS_BROKEN +# undef PRIxFAST8 +# define PRIxFAST8 "x" +#endif +#if !defined PRIXFAST8 || PRI_MACROS_BROKEN +# undef PRIXFAST8 +# define PRIXFAST8 "X" +#endif +#if !defined PRIdFAST16 || PRI_MACROS_BROKEN +# undef PRIdFAST16 +# define PRIdFAST16 "d" +#endif +#if !defined PRIiFAST16 || PRI_MACROS_BROKEN +# undef PRIiFAST16 +# define PRIiFAST16 "i" +#endif +#if !defined PRIoFAST16 || PRI_MACROS_BROKEN +# undef PRIoFAST16 +# define PRIoFAST16 "o" +#endif +#if !defined PRIuFAST16 || PRI_MACROS_BROKEN +# undef PRIuFAST16 +# define PRIuFAST16 "u" +#endif +#if !defined PRIxFAST16 || PRI_MACROS_BROKEN +# undef PRIxFAST16 +# define PRIxFAST16 "x" +#endif +#if !defined PRIXFAST16 || PRI_MACROS_BROKEN +# undef PRIXFAST16 +# define PRIXFAST16 "X" +#endif +#if !defined PRIdFAST32 || PRI_MACROS_BROKEN +# undef PRIdFAST32 +# define PRIdFAST32 "d" +#endif +#if !defined PRIiFAST32 || PRI_MACROS_BROKEN +# undef PRIiFAST32 +# define PRIiFAST32 "i" +#endif +#if !defined PRIoFAST32 || PRI_MACROS_BROKEN +# undef PRIoFAST32 +# define PRIoFAST32 "o" +#endif +#if !defined PRIuFAST32 || PRI_MACROS_BROKEN +# undef PRIuFAST32 +# define PRIuFAST32 "u" +#endif +#if !defined PRIxFAST32 || PRI_MACROS_BROKEN +# undef PRIxFAST32 +# define PRIxFAST32 "x" +#endif +#if !defined PRIXFAST32 || PRI_MACROS_BROKEN +# undef PRIXFAST32 +# define PRIXFAST32 "X" +#endif +#if !defined PRIdFAST64 || PRI_MACROS_BROKEN +# undef PRIdFAST64 +# define PRIdFAST64 PRId64 +#endif +#if !defined PRIiFAST64 || PRI_MACROS_BROKEN +# undef PRIiFAST64 +# define PRIiFAST64 PRIi64 +#endif +#if !defined PRIoFAST64 || PRI_MACROS_BROKEN +# undef PRIoFAST64 +# define PRIoFAST64 PRIo64 +#endif +#if !defined PRIuFAST64 || PRI_MACROS_BROKEN +# undef PRIuFAST64 +# define PRIuFAST64 PRIu64 +#endif +#if !defined PRIxFAST64 || PRI_MACROS_BROKEN +# undef PRIxFAST64 +# define PRIxFAST64 PRIx64 +#endif +#if !defined PRIXFAST64 || PRI_MACROS_BROKEN +# undef PRIXFAST64 +# define PRIXFAST64 PRIX64 +#endif +#if !defined PRIdMAX || PRI_MACROS_BROKEN +# undef PRIdMAX +# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") +#endif +#if !defined PRIiMAX || PRI_MACROS_BROKEN +# undef PRIiMAX +# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") +#endif +#if !defined PRIoMAX || PRI_MACROS_BROKEN +# undef PRIoMAX +# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") +#endif +#if !defined PRIuMAX || PRI_MACROS_BROKEN +# undef PRIuMAX +# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") +#endif +#if !defined PRIxMAX || PRI_MACROS_BROKEN +# undef PRIxMAX +# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") +#endif +#if !defined PRIXMAX || PRI_MACROS_BROKEN +# undef PRIXMAX +# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") +#endif +#if !defined PRIdPTR || PRI_MACROS_BROKEN +# undef PRIdPTR +# define PRIdPTR \ + (sizeof (void *) == sizeof (long) ? "ld" : \ + sizeof (void *) == sizeof (int) ? "d" : \ + "lld") +#endif +#if !defined PRIiPTR || PRI_MACROS_BROKEN +# undef PRIiPTR +# define PRIiPTR \ + (sizeof (void *) == sizeof (long) ? "li" : \ + sizeof (void *) == sizeof (int) ? "i" : \ + "lli") +#endif +#if !defined PRIoPTR || PRI_MACROS_BROKEN +# undef PRIoPTR +# define PRIoPTR \ + (sizeof (void *) == sizeof (long) ? "lo" : \ + sizeof (void *) == sizeof (int) ? "o" : \ + "llo") +#endif +#if !defined PRIuPTR || PRI_MACROS_BROKEN +# undef PRIuPTR +# define PRIuPTR \ + (sizeof (void *) == sizeof (long) ? "lu" : \ + sizeof (void *) == sizeof (int) ? "u" : \ + "llu") +#endif +#if !defined PRIxPTR || PRI_MACROS_BROKEN +# undef PRIxPTR +# define PRIxPTR \ + (sizeof (void *) == sizeof (long) ? "lx" : \ + sizeof (void *) == sizeof (int) ? "x" : \ + "llx") +#endif +#if !defined PRIXPTR || PRI_MACROS_BROKEN +# undef PRIXPTR +# define PRIXPTR \ + (sizeof (void *) == sizeof (long) ? "lX" : \ + sizeof (void *) == sizeof (int) ? "X" : \ + "llX") +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open(name, flags) open_not_cancel_2 (name, flags) +# define close(fd) close_not_cancel_no_status (fd) +# define read(fd, buf, n) read_not_cancel (fd, buf, n) +# define mmap(addr, len, prot, flags, fd, offset) \ + __mmap (addr, len, prot, flags, fd, offset) +# define munmap(addr, len) __munmap (addr, len) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + + +/* Expand a system dependent string segment. Return NULL if unsupported. */ +static const char * +get_sysdep_segment_value (const char *name) +{ + /* Test for an ISO C 99 section 7.8.1 format string directive. + Syntax: + P R I { d | i | o | u | x | X } + { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ + /* We don't use a table of 14 times 6 'const char *' strings here, because + data relocations cost startup time. */ + if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') + { + if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' + || name[3] == 'x' || name[3] == 'X') + { + if (name[4] == '8' && name[5] == '\0') + { + if (name[3] == 'd') + return PRId8; + if (name[3] == 'i') + return PRIi8; + if (name[3] == 'o') + return PRIo8; + if (name[3] == 'u') + return PRIu8; + if (name[3] == 'x') + return PRIx8; + if (name[3] == 'X') + return PRIX8; + abort (); + } + if (name[4] == '1' && name[5] == '6' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId16; + if (name[3] == 'i') + return PRIi16; + if (name[3] == 'o') + return PRIo16; + if (name[3] == 'u') + return PRIu16; + if (name[3] == 'x') + return PRIx16; + if (name[3] == 'X') + return PRIX16; + abort (); + } + if (name[4] == '3' && name[5] == '2' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId32; + if (name[3] == 'i') + return PRIi32; + if (name[3] == 'o') + return PRIo32; + if (name[3] == 'u') + return PRIu32; + if (name[3] == 'x') + return PRIx32; + if (name[3] == 'X') + return PRIX32; + abort (); + } + if (name[4] == '6' && name[5] == '4' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId64; + if (name[3] == 'i') + return PRIi64; + if (name[3] == 'o') + return PRIo64; + if (name[3] == 'u') + return PRIu64; + if (name[3] == 'x') + return PRIx64; + if (name[3] == 'X') + return PRIX64; + abort (); + } + if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' + && name[7] == 'S' && name[8] == 'T') + { + if (name[9] == '8' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST8; + if (name[3] == 'i') + return PRIiLEAST8; + if (name[3] == 'o') + return PRIoLEAST8; + if (name[3] == 'u') + return PRIuLEAST8; + if (name[3] == 'x') + return PRIxLEAST8; + if (name[3] == 'X') + return PRIXLEAST8; + abort (); + } + if (name[9] == '1' && name[10] == '6' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST16; + if (name[3] == 'i') + return PRIiLEAST16; + if (name[3] == 'o') + return PRIoLEAST16; + if (name[3] == 'u') + return PRIuLEAST16; + if (name[3] == 'x') + return PRIxLEAST16; + if (name[3] == 'X') + return PRIXLEAST16; + abort (); + } + if (name[9] == '3' && name[10] == '2' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST32; + if (name[3] == 'i') + return PRIiLEAST32; + if (name[3] == 'o') + return PRIoLEAST32; + if (name[3] == 'u') + return PRIuLEAST32; + if (name[3] == 'x') + return PRIxLEAST32; + if (name[3] == 'X') + return PRIXLEAST32; + abort (); + } + if (name[9] == '6' && name[10] == '4' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST64; + if (name[3] == 'i') + return PRIiLEAST64; + if (name[3] == 'o') + return PRIoLEAST64; + if (name[3] == 'u') + return PRIuLEAST64; + if (name[3] == 'x') + return PRIxLEAST64; + if (name[3] == 'X') + return PRIXLEAST64; + abort (); + } + } + if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' + && name[7] == 'T') + { + if (name[8] == '8' && name[9] == '\0') + { + if (name[3] == 'd') + return PRIdFAST8; + if (name[3] == 'i') + return PRIiFAST8; + if (name[3] == 'o') + return PRIoFAST8; + if (name[3] == 'u') + return PRIuFAST8; + if (name[3] == 'x') + return PRIxFAST8; + if (name[3] == 'X') + return PRIXFAST8; + abort (); + } + if (name[8] == '1' && name[9] == '6' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST16; + if (name[3] == 'i') + return PRIiFAST16; + if (name[3] == 'o') + return PRIoFAST16; + if (name[3] == 'u') + return PRIuFAST16; + if (name[3] == 'x') + return PRIxFAST16; + if (name[3] == 'X') + return PRIXFAST16; + abort (); + } + if (name[8] == '3' && name[9] == '2' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST32; + if (name[3] == 'i') + return PRIiFAST32; + if (name[3] == 'o') + return PRIoFAST32; + if (name[3] == 'u') + return PRIuFAST32; + if (name[3] == 'x') + return PRIxFAST32; + if (name[3] == 'X') + return PRIXFAST32; + abort (); + } + if (name[8] == '6' && name[9] == '4' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST64; + if (name[3] == 'i') + return PRIiFAST64; + if (name[3] == 'o') + return PRIoFAST64; + if (name[3] == 'u') + return PRIuFAST64; + if (name[3] == 'x') + return PRIxFAST64; + if (name[3] == 'X') + return PRIXFAST64; + abort (); + } + } + if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdMAX; + if (name[3] == 'i') + return PRIiMAX; + if (name[3] == 'o') + return PRIoMAX; + if (name[3] == 'u') + return PRIuMAX; + if (name[3] == 'x') + return PRIxMAX; + if (name[3] == 'X') + return PRIXMAX; + abort (); + } + if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdPTR; + if (name[3] == 'i') + return PRIiPTR; + if (name[3] == 'o') + return PRIoPTR; + if (name[3] == 'u') + return PRIuPTR; + if (name[3] == 'x') + return PRIxPTR; + if (name[3] == 'X') + return PRIXPTR; + abort (); + } + } + } + /* Test for a glibc specific printf() format directive flag. */ + if (name[0] == 'I' && name[1] == '\0') + { +#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) + /* The 'I' flag, in numeric format directives, replaces ASCII digits + with the 'outdigits' defined in the LC_CTYPE locale facet. This is + used for Farsi (Persian) and maybe Arabic. */ + return "I"; +#else + return ""; +#endif + } + /* Other system dependent strings are not valid. */ + return NULL; +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (struct loaded_l10nfile *domain_file, + struct binding *domainbinding) +{ + __libc_lock_define_initialized_recursive (static, lock) + int fd = -1; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + int revision; + const char *nullentry; + size_t nullentrylen; + + __libc_lock_lock_recursive (lock); + if (domain_file->decided != 0) + { + /* There are two possibilities: + + + this is the same thread calling again during this initialization + via _nl_find_msg. We have initialized everything this call needs. + + + this is another thread which tried to initialize this object. + Not necessary anymore since if the lock is available this + is finished. + */ + goto done; + } + + domain_file->decided = -1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + goto out; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + goto out; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + /* Something went wrong. */ + goto out; + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + fd = -1; + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + goto out; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + goto out; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + fd = -1; + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + goto out; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + goto out; + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + domain->malloced = NULL; + + /* Fill in the information about the available tables. */ + revision = W (domain->must_swap, data->revision); + /* We support only the major revisions 0 and 1. */ + switch (revision >> 16) + { + case 0: + case 1: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = + (domain->hash_size > 2 + ? (const nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)) + : NULL); + domain->must_swap_hash_tab = domain->must_swap; + + /* Now dispatch on the minor revision. */ + switch (revision & 0xffff) + { + case 0: + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + break; + case 1: + default: + { + nls_uint32 n_sysdep_strings; + + if (domain->hash_tab == NULL) + /* This is invalid. These minor revisions need a hash table. */ + goto invalid; + + n_sysdep_strings = + W (domain->must_swap, data->n_sysdep_strings); + if (n_sysdep_strings > 0) + { + nls_uint32 n_sysdep_segments; + const struct sysdep_segment *sysdep_segments; + const char **sysdep_segment_values; + const nls_uint32 *orig_sysdep_tab; + const nls_uint32 *trans_sysdep_tab; + nls_uint32 n_inmem_sysdep_strings; + size_t memneed; + char *mem; + struct sysdep_string_desc *inmem_orig_sysdep_tab; + struct sysdep_string_desc *inmem_trans_sysdep_tab; + nls_uint32 *inmem_hash_tab; + unsigned int i, j; + + /* Get the values of the system dependent segments. */ + n_sysdep_segments = + W (domain->must_swap, data->n_sysdep_segments); + sysdep_segments = (const struct sysdep_segment *) + ((char *) data + + W (domain->must_swap, data->sysdep_segments_offset)); + sysdep_segment_values = + (const char **) + alloca (n_sysdep_segments * sizeof (const char *)); + for (i = 0; i < n_sysdep_segments; i++) + { + const char *name = + (char *) data + + W (domain->must_swap, sysdep_segments[i].offset); + nls_uint32 namelen = + W (domain->must_swap, sysdep_segments[i].length); + + if (!(namelen > 0 && name[namelen - 1] == '\0')) + { + freea (sysdep_segment_values); + goto invalid; + } + + sysdep_segment_values[i] = get_sysdep_segment_value (name); + } + + orig_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->orig_sysdep_tab_offset)); + trans_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->trans_sysdep_tab_offset)); + + /* Compute the amount of additional memory needed for the + system dependent strings and the augmented hash table. + At the same time, also drop string pairs which refer to + an undefined system dependent segment. */ + n_inmem_sysdep_strings = 0; + memneed = domain->hash_size * sizeof (nls_uint32); + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + size_t needs[2]; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + size_t need = 0; + const struct segment_pair *p = sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + need += W (domain->must_swap, p->segsize); + + sysdepref = W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdepref >= n_sysdep_segments) + { + /* Invalid. */ + freea (sysdep_segment_values); + goto invalid; + } + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is invalid. */ + valid = 0; + break; + } + + need += strlen (sysdep_segment_values[sysdepref]); + } + + needs[j] = need; + if (!valid) + break; + } + + if (valid) + { + n_inmem_sysdep_strings++; + memneed += needs[0] + needs[1]; + } + } + memneed += 2 * n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + + if (n_inmem_sysdep_strings > 0) + { + unsigned int k; + + /* Allocate additional memory. */ + mem = (char *) malloc (memneed); + if (mem == NULL) + goto invalid; + + domain->malloced = mem; + inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_hash_tab = (nls_uint32 *) mem; + mem += domain->hash_size * sizeof (nls_uint32); + + /* Compute the system dependent strings. */ + k = 0; + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const struct segment_pair *p = + sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) + != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + sysdepref = + W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is + invalid. */ + valid = 0; + break; + } + } + + if (!valid) + break; + } + + if (valid) + { + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const char *static_segments = + (char *) data + + W (domain->must_swap, sysdep_string->offset); + const struct segment_pair *p = + sysdep_string->segments; + + /* Concatenate the segments, and fill + inmem_orig_sysdep_tab[k] (for j == 0) and + inmem_trans_sysdep_tab[k] (for j == 1). */ + + struct sysdep_string_desc *inmem_tab_entry = + (j == 0 + ? inmem_orig_sysdep_tab + : inmem_trans_sysdep_tab) + + k; + + if (W (domain->must_swap, p->sysdepref) + == SEGMENTS_END) + { + /* Only one static segment. */ + inmem_tab_entry->length = + W (domain->must_swap, p->segsize); + inmem_tab_entry->pointer = static_segments; + } + else + { + inmem_tab_entry->pointer = mem; + + for (p = sysdep_string->segments;; p++) + { + nls_uint32 segsize = + W (domain->must_swap, p->segsize); + nls_uint32 sysdepref = + W (domain->must_swap, p->sysdepref); + size_t n; + + if (segsize > 0) + { + memcpy (mem, static_segments, segsize); + mem += segsize; + static_segments += segsize; + } + + if (sysdepref == SEGMENTS_END) + break; + + n = strlen (sysdep_segment_values[sysdepref]); + memcpy (mem, sysdep_segment_values[sysdepref], n); + mem += n; + } + + inmem_tab_entry->length = + mem - inmem_tab_entry->pointer; + } + } + + k++; + } + } + if (k != n_inmem_sysdep_strings) + abort (); + + /* Compute the augmented hash table. */ + for (i = 0; i < domain->hash_size; i++) + inmem_hash_tab[i] = + W (domain->must_swap_hash_tab, domain->hash_tab[i]); + for (i = 0; i < n_inmem_sysdep_strings; i++) + { + const char *msgid = inmem_orig_sysdep_tab[i].pointer; + nls_uint32 hash_val = __hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = + 1 + (hash_val % (domain->hash_size - 2)); + + for (;;) + { + if (inmem_hash_tab[idx] == 0) + { + /* Hash table entry is empty. Use it. */ + inmem_hash_tab[idx] = 1 + domain->nstrings + i; + break; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + } + + domain->n_sysdep_strings = n_inmem_sysdep_strings; + domain->orig_sysdep_tab = inmem_orig_sysdep_tab; + domain->trans_sysdep_tab = inmem_trans_sysdep_tab; + + domain->hash_tab = inmem_hash_tab; + domain->must_swap_hash_tab = 0; + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + + freea (sysdep_segment_values); + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + } + break; + } + break; + default: + /* This is an invalid revision. */ + invalid: + /* This is an invalid .mo file. */ + free (domain->malloced); +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + goto out; + } + + /* No caches of converted translations so far. */ + domain->conversions = NULL; + domain->nconversions = 0; + gl_rwlock_init (domain->conversions_lock); + + /* Get the header entry and look for a plural specification. */ +#ifdef IN_LIBGLOCALE + nullentry = + _nl_find_msg (domain_file, domainbinding, NULL, "", &nullentrylen); +#else + nullentry = _nl_find_msg (domain_file, domainbinding, "", 0, &nullentrylen); +#endif + EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); + + out: + if (fd != -1) + close (fd); + + domain_file->decided = 1; + + done: + __libc_lock_unlock_recursive (lock); +} + + +#ifdef _LIBC +void +internal_function __libc_freeres_fn_section +_nl_unload_domain (struct loaded_domain *domain) +{ + size_t i; + + if (domain->plural != &__gettext_germanic_plural) + __gettext_free_exp ((struct expression *) domain->plural); + + for (i = 0; i < domain->nconversions; i++) + { + struct converted_domain *convd = &domain->conversions[i]; + + free (convd->encoding); + if (convd->conv_tab != NULL && convd->conv_tab != (char **) -1) + free (convd->conv_tab); + if (convd->conv != (__gconv_t) -1) + __gconv_close (convd->conv); + } + free (domain->conversions); + __libc_rwlock_fini (domain->conversions_lock); + + free (domain->malloced); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/libmednahawk/intl/localcharset.c b/libmednahawk/intl/localcharset.c new file mode 100644 index 0000000000..c864b7a883 --- /dev/null +++ b/libmednahawk/intl/localcharset.c @@ -0,0 +1,549 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2006, 2008-2010 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#include + +/* Specification. */ +#include "localcharset.h" + +#include +#include +#include +#include +#include + +#if defined __APPLE__ && defined __MACH__ && HAVE_LANGINFO_CODESET +# define DARWIN7 /* Darwin 7 or newer, i.e. MacOS X 10.3 or newer */ +#endif + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#if defined __EMX__ +/* Assume EMX program runs on OS/2, even if compiled under DOS. */ +# ifndef OS2 +# define OS2 +# endif +#endif + +#if !defined WIN32_NATIVE +# include +# if HAVE_LANGINFO_CODESET +# include +# else +# if 0 /* see comment below */ +# include +# endif +# endif +# ifdef __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include +# endif +#elif defined WIN32_NATIVE +# define WIN32_LEAN_AND_MEAN +# include +#endif +#if defined OS2 +# define INCL_DOS +# include +#endif + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* Get LIBDIR. */ +#ifndef LIBDIR +# include "configmake.h" +#endif + +/* Define O_NOFOLLOW to 0 on platforms where it does not exist. */ +#ifndef O_NOFOLLOW +# define O_NOFOLLOW 0 +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +#if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc getc_unlocked +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static const char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases (void) +{ + const char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#if !(defined DARWIN7 || defined VMS || defined WIN32_NATIVE || defined __CYGWIN__) + const char *dir; + const char *base = "charset.alias"; + char *file_name; + + /* Make it possible to override the charset.alias location. This is + necessary for running the testsuite before "make install". */ + dir = getenv ("CHARSETALIASDIR"); + if (dir == NULL || dir[0] == '\0') + dir = relocate (LIBDIR); + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL) + /* Out of memory. Treat the file as empty. */ + cp = ""; + else + { + int fd; + + /* Open the file. Reject symbolic links on platforms that support + O_NOFOLLOW. This is a security feature. Without it, an attacker + could retrieve parts of the contents (namely, the tail of the + first line that starts with "* ") of an arbitrary file by placing + a symbolic link to that file under the name "charset.alias" in + some writable directory and defining the environment variable + CHARSETALIASDIR to point to that directory. */ + fd = open (file_name, + O_RDONLY | (HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0)); + if (fd < 0) + /* File not found. Treat it as empty. */ + cp = ""; + else + { + FILE *fp; + + fp = fdopen (fd, "r"); + if (fp == NULL) + { + /* Out of memory. Treat the file as empty. */ + close (fd); + cp = ""; + } + else + { + /* Parse the file's contents. */ + char *res_ptr = NULL; + size_t res_size = 0; + + for (;;) + { + int c; + char buf1[50+1]; + char buf2[50+1]; + size_t l1, l2; + char *old_res_ptr; + + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + old_res_ptr = res_ptr; + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = (char *) malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = (char *) realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + if (old_res_ptr != NULL) + free (old_res_ptr); + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + } + + free (file_name); + } + +#else + +# if defined DARWIN7 + /* To avoid the trouble of installing a file that is shared by many + GNU packages -- many packaging systems have problems with this --, + simply inline the aliases here. */ + cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" + "ISO8859-2" "\0" "ISO-8859-2" "\0" + "ISO8859-4" "\0" "ISO-8859-4" "\0" + "ISO8859-5" "\0" "ISO-8859-5" "\0" + "ISO8859-7" "\0" "ISO-8859-7" "\0" + "ISO8859-9" "\0" "ISO-8859-9" "\0" + "ISO8859-13" "\0" "ISO-8859-13" "\0" + "ISO8859-15" "\0" "ISO-8859-15" "\0" + "KOI8-R" "\0" "KOI8-R" "\0" + "KOI8-U" "\0" "KOI8-U" "\0" + "CP866" "\0" "CP866" "\0" + "CP949" "\0" "CP949" "\0" + "CP1131" "\0" "CP1131" "\0" + "CP1251" "\0" "CP1251" "\0" + "eucCN" "\0" "GB2312" "\0" + "GB2312" "\0" "GB2312" "\0" + "eucJP" "\0" "EUC-JP" "\0" + "eucKR" "\0" "EUC-KR" "\0" + "Big5" "\0" "BIG5" "\0" + "Big5HKSCS" "\0" "BIG5-HKSCS" "\0" + "GBK" "\0" "GBK" "\0" + "GB18030" "\0" "GB18030" "\0" + "SJIS" "\0" "SHIFT_JIS" "\0" + "ARMSCII-8" "\0" "ARMSCII-8" "\0" + "PT154" "\0" "PT154" "\0" + /*"ISCII-DEV" "\0" "?" "\0"*/ + "*" "\0" "UTF-8" "\0"; +# endif + +# if defined VMS + /* To avoid the troubles of an extra file charset.alias_vms in the + sources of many GNU packages, simply inline the aliases here. */ + /* The list of encodings is taken from the OpenVMS 7.3-1 documentation + "Compaq C Run-Time Library Reference Manual for OpenVMS systems" + section 10.7 "Handling Different Character Sets". */ + cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" + "ISO8859-2" "\0" "ISO-8859-2" "\0" + "ISO8859-5" "\0" "ISO-8859-5" "\0" + "ISO8859-7" "\0" "ISO-8859-7" "\0" + "ISO8859-8" "\0" "ISO-8859-8" "\0" + "ISO8859-9" "\0" "ISO-8859-9" "\0" + /* Japanese */ + "eucJP" "\0" "EUC-JP" "\0" + "SJIS" "\0" "SHIFT_JIS" "\0" + "DECKANJI" "\0" "DEC-KANJI" "\0" + "SDECKANJI" "\0" "EUC-JP" "\0" + /* Chinese */ + "eucTW" "\0" "EUC-TW" "\0" + "DECHANYU" "\0" "DEC-HANYU" "\0" + "DECHANZI" "\0" "GB2312" "\0" + /* Korean */ + "DECKOREAN" "\0" "EUC-KR" "\0"; +# endif + +# if defined WIN32_NATIVE || defined __CYGWIN__ + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0" + "CP20127" "\0" "ASCII" "\0" + "CP20866" "\0" "KOI8-R" "\0" + "CP20936" "\0" "GB2312" "\0" + "CP21866" "\0" "KOI8-RU" "\0" + "CP28591" "\0" "ISO-8859-1" "\0" + "CP28592" "\0" "ISO-8859-2" "\0" + "CP28593" "\0" "ISO-8859-3" "\0" + "CP28594" "\0" "ISO-8859-4" "\0" + "CP28595" "\0" "ISO-8859-5" "\0" + "CP28596" "\0" "ISO-8859-6" "\0" + "CP28597" "\0" "ISO-8859-7" "\0" + "CP28598" "\0" "ISO-8859-8" "\0" + "CP28599" "\0" "ISO-8859-9" "\0" + "CP28605" "\0" "ISO-8859-15" "\0" + "CP38598" "\0" "ISO-8859-8" "\0" + "CP51932" "\0" "EUC-JP" "\0" + "CP51936" "\0" "GB2312" "\0" + "CP51949" "\0" "EUC-KR" "\0" + "CP51950" "\0" "EUC-TW" "\0" + "CP54936" "\0" "GB18030" "\0" + "CP65001" "\0" "UTF-8" "\0"; +# endif +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset (void) +{ + const char *codeset; + const char *aliases; + +#if !(defined WIN32_NATIVE || defined OS2) + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# ifdef __CYGWIN__ + /* Cygwin < 1.7 does not have locales. nl_langinfo (CODESET) always + returns "US-ASCII". Return the suffix of the locale name from the + environment variables (if present) or the codepage as a number. */ + if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0) + { + const char *locale; + static char buf[2 + 10 + 1]; + + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return + it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + } + + /* Woe32 has a function returning the locale's codepage as a number: + GetACP(). This encoding is used by Cygwin, unless the user has set + the environment variable CYGWIN=codepage:oem (which very few people + do). + Output directed to console windows needs to be converted (to + GetOEMCP() if the console is using a raster font, or to + GetConsoleOutputCP() if it is using a TrueType font). Cygwin does + this conversion transparently (see winsup/cygwin/fhandler_console.cc), + converting to GetConsoleOutputCP(). This leads to correct results, + except when SetConsoleOutputCP has been called and a raster font is + in use. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + } +# endif + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#elif defined WIN32_NATIVE + + static char buf[2 + 10 + 1]; + + /* Woe32 has a function returning the locale's codepage as a number: + GetACP(). + When the output goes to a console window, it needs to be provided in + GetOEMCP() encoding if the console is using a raster font, or in + GetConsoleOutputCP() encoding if it is using a TrueType font. + But in GUI programs and for output sent to files and pipes, GetACP() + encoding is the best bet. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#elif defined OS2 + + const char *locale; + static char buf[2 + 10 + 1]; + ULONG cp[3]; + ULONG cplen; + + /* Allow user to override the codeset, as set in the operating system, + with standard language environment variables. */ + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + + /* Resolve through the charset.alias file. */ + codeset = locale; + } + else + { + /* OS/2 has a function returning the locale's codepage as a number. */ + if (DosQueryCp (sizeof (cp), cp, &cplen)) + codeset = ""; + else + { + sprintf (buf, "CP%u", cp[0]); + codeset = buf; + } + } + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + /* Don't return an empty string. GNU libc and GNU libiconv interpret + the empty string as denoting "the locale's character encoding", + thus GNU libiconv would call this function a second time. */ + if (codeset[0] == '\0') + codeset = "ASCII"; + + return codeset; +} diff --git a/libmednahawk/intl/localcharset.h b/libmednahawk/intl/localcharset.h new file mode 100644 index 0000000000..b4f29c70e7 --- /dev/null +++ b/libmednahawk/intl/localcharset.h @@ -0,0 +1,42 @@ +/* Determine a canonical name for the current locale's character encoding. + Copyright (C) 2000-2003 Free Software Foundation, Inc. + This file is part of the GNU CHARSET Library. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOCALCHARSET_H +#define _LOCALCHARSET_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ +extern const char * locale_charset (void); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _LOCALCHARSET_H */ diff --git a/libmednahawk/intl/locale.alias b/libmednahawk/intl/locale.alias new file mode 100644 index 0000000000..ac121516e0 --- /dev/null +++ b/libmednahawk/intl/locale.alias @@ -0,0 +1,77 @@ +# Locale name alias data base. +# Copyright (C) 1996-2001,2003,2007 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is obsolete and is kept around for the time being for +# backward compatibility. Nobody should rely on the names defined here. +# Locales should always be specified by their full name. + +# Packages using this file: + +bokmal nb_NO.ISO-8859-1 +bokmål nb_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +français fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew he_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +no_NO nb_NO.ISO-8859-1 +no_NO.ISO-8859-1 nb_NO.ISO-8859-1 +norwegian nb_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/libmednahawk/intl/localealias.c b/libmednahawk/intl/localealias.c new file mode 100644 index 0000000000..bcd93a7783 --- /dev/null +++ b/libmednahawk/intl/localealias.c @@ -0,0 +1,439 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#if defined _LIBC || defined HAVE___FSETLOCKING +# include +#endif +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#include "gettextP.h" + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 +# define HAVE___FSETLOCKING 1 +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Some optimizations for glibc. */ +#ifdef _LIBC +# define FEOF(fp) feof_unlocked (fp) +# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) +#else +# define FEOF(fp) feof (fp) +# define FGETS(buf, n, fp) fgets (buf, n, fp) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +__libc_lock_define_initialized (static, lock) + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +#ifndef _LIBC +# define libc_freeres_ptr(decl) decl +#endif + +libc_freeres_ptr (static char *string_space); +static size_t string_space_act; +static size_t string_space_max; +libc_freeres_ptr (static struct alias_map *map); +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file (const char *fname, int fname_len) + internal_function; +static int extend_alias_table (void); +static int alias_compare (const struct alias_map *map1, + const struct alias_map *map2); + + +const char * +_nl_expand_alias (const char *name) +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = NULL; + size_t added; + + __libc_lock_lock (lock); + + if (locale_alias_path == NULL) + locale_alias_path = LOCALE_ALIAS_PATH; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) (const void *, + const void *) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + + __libc_lock_unlock (lock); + + return result; +} + + +static size_t +internal_function +read_alias_file (const char *fname, int fname_len) +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + +#ifdef _LIBC + /* Note the file is opened with cancellation in the I/O functions + disabled. */ + fp = fopen (relocate (full_fname), "rc"); +#else + fp = fopen (relocate (full_fname), "r"); +#endif + freea (full_fname); + if (fp == NULL) + return 0; + +#ifdef HAVE___FSETLOCKING + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +#endif + + added = 0; + while (!FEOF (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + We avoid a multi-kilobyte buffer here since this would use up + stack space which we might not have if the program ran out of + memory. */ + char buf[400]; + char *alias; + char *value; + char *cp; + int complete_line; + + if (FGETS (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Determine whether the line is complete. */ + complete_line = strchr (buf, '\n') != NULL; + + cp = buf; + /* Ignore leading white space. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + if (cp[0] != '\0') + { + value = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + +#ifdef IN_LIBGLOCALE + /* glibc's locale.alias contains entries for ja_JP and ko_KR + that make it impossible to use a Japanese or Korean UTF-8 + locale under the name "ja_JP" or "ko_KR". Ignore these + entries. */ + if (strchr (alias, '_') == NULL) +#endif + { + size_t alias_len; + size_t value_len; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + goto out; + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + goto out; + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = + (const char *) memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = + (const char *) memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (! complete_line) + do + if (FGETS (buf, sizeof buf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (buf, '\n') == NULL); + } + + out: + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) (const void *, const void *)) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +static int +alias_compare (const struct alias_map *map1, const struct alias_map *map2) +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/libmednahawk/intl/localename.c b/libmednahawk/intl/localename.c new file mode 100644 index 0000000000..46f24b3e5a --- /dev/null +++ b/libmednahawk/intl/localename.c @@ -0,0 +1,2959 @@ +/* Determine name of the currently selected locale. + Copyright (C) 1995-1999, 2000-2010 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Ulrich Drepper , 1995. */ +/* Win32 code written by Tor Lillqvist . */ +/* MacOS X code written by Bruno Haible . */ + +#include + +/* Specification. */ +#ifdef IN_LIBINTL +# include "gettextP.h" +#else +# include "localename.h" +#endif + +#include +#include +#include +#include +#include + +#if HAVE_USELOCALE +/* MacOS X 10.5 defines the locale_t type in . */ +# if defined __APPLE__ && defined __MACH__ +# include +# endif +# include +# if !defined IN_LIBINTL +# include "glthread/lock.h" +# endif +#endif + +#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# if HAVE_CFLOCALECOPYCURRENT +# include +# elif HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# endif +#endif + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_NATIVE +#endif + +#if defined WIN32_NATIVE || defined __CYGWIN__ /* WIN32 or Cygwin */ +# define WIN32_LEAN_AND_MEAN +# include +/* List of language codes, sorted by value: + 0x01 LANG_ARABIC + 0x02 LANG_BULGARIAN + 0x03 LANG_CATALAN + 0x04 LANG_CHINESE + 0x05 LANG_CZECH + 0x06 LANG_DANISH + 0x07 LANG_GERMAN + 0x08 LANG_GREEK + 0x09 LANG_ENGLISH + 0x0a LANG_SPANISH + 0x0b LANG_FINNISH + 0x0c LANG_FRENCH + 0x0d LANG_HEBREW + 0x0e LANG_HUNGARIAN + 0x0f LANG_ICELANDIC + 0x10 LANG_ITALIAN + 0x11 LANG_JAPANESE + 0x12 LANG_KOREAN + 0x13 LANG_DUTCH + 0x14 LANG_NORWEGIAN + 0x15 LANG_POLISH + 0x16 LANG_PORTUGUESE + 0x17 LANG_ROMANSH + 0x18 LANG_ROMANIAN + 0x19 LANG_RUSSIAN + 0x1a LANG_CROATIAN == LANG_SERBIAN + 0x1b LANG_SLOVAK + 0x1c LANG_ALBANIAN + 0x1d LANG_SWEDISH + 0x1e LANG_THAI + 0x1f LANG_TURKISH + 0x20 LANG_URDU + 0x21 LANG_INDONESIAN + 0x22 LANG_UKRAINIAN + 0x23 LANG_BELARUSIAN + 0x24 LANG_SLOVENIAN + 0x25 LANG_ESTONIAN + 0x26 LANG_LATVIAN + 0x27 LANG_LITHUANIAN + 0x28 LANG_TAJIK + 0x29 LANG_FARSI + 0x2a LANG_VIETNAMESE + 0x2b LANG_ARMENIAN + 0x2c LANG_AZERI + 0x2d LANG_BASQUE + 0x2e LANG_SORBIAN + 0x2f LANG_MACEDONIAN + 0x30 LANG_SUTU + 0x31 LANG_TSONGA + 0x32 LANG_TSWANA + 0x33 LANG_VENDA + 0x34 LANG_XHOSA + 0x35 LANG_ZULU + 0x36 LANG_AFRIKAANS + 0x37 LANG_GEORGIAN + 0x38 LANG_FAEROESE + 0x39 LANG_HINDI + 0x3a LANG_MALTESE + 0x3b LANG_SAMI + 0x3c LANG_GAELIC + 0x3d LANG_YIDDISH + 0x3e LANG_MALAY + 0x3f LANG_KAZAK + 0x40 LANG_KYRGYZ + 0x41 LANG_SWAHILI + 0x42 LANG_TURKMEN + 0x43 LANG_UZBEK + 0x44 LANG_TATAR + 0x45 LANG_BENGALI + 0x46 LANG_PUNJABI + 0x47 LANG_GUJARATI + 0x48 LANG_ORIYA + 0x49 LANG_TAMIL + 0x4a LANG_TELUGU + 0x4b LANG_KANNADA + 0x4c LANG_MALAYALAM + 0x4d LANG_ASSAMESE + 0x4e LANG_MARATHI + 0x4f LANG_SANSKRIT + 0x50 LANG_MONGOLIAN + 0x51 LANG_TIBETAN + 0x52 LANG_WELSH + 0x53 LANG_CAMBODIAN + 0x54 LANG_LAO + 0x55 LANG_BURMESE + 0x56 LANG_GALICIAN + 0x57 LANG_KONKANI + 0x58 LANG_MANIPURI + 0x59 LANG_SINDHI + 0x5a LANG_SYRIAC + 0x5b LANG_SINHALESE + 0x5c LANG_CHEROKEE + 0x5d LANG_INUKTITUT + 0x5e LANG_AMHARIC + 0x5f LANG_TAMAZIGHT + 0x60 LANG_KASHMIRI + 0x61 LANG_NEPALI + 0x62 LANG_FRISIAN + 0x63 LANG_PASHTO + 0x64 LANG_TAGALOG + 0x65 LANG_DIVEHI + 0x66 LANG_EDO + 0x67 LANG_FULFULDE + 0x68 LANG_HAUSA + 0x69 LANG_IBIBIO + 0x6a LANG_YORUBA + 0x6d LANG_BASHKIR + 0x6e LANG_LUXEMBOURGISH + 0x6f LANG_GREENLANDIC + 0x70 LANG_IGBO + 0x71 LANG_KANURI + 0x72 LANG_OROMO + 0x73 LANG_TIGRINYA + 0x74 LANG_GUARANI + 0x75 LANG_HAWAIIAN + 0x76 LANG_LATIN + 0x77 LANG_SOMALI + 0x78 LANG_YI + 0x79 LANG_PAPIAMENTU + 0x7a LANG_MAPUDUNGUN + 0x7c LANG_MOHAWK + 0x7e LANG_BRETON + 0x82 LANG_OCCITAN + 0x83 LANG_CORSICAN + 0x84 LANG_ALSATIAN + 0x85 LANG_YAKUT + 0x86 LANG_KICHE + 0x87 LANG_KINYARWANDA + 0x88 LANG_WOLOF + 0x8c LANG_DARI + 0x91 LANG_SCOTTISH_GAELIC +*/ +/* Mingw headers don't have latest language and sublanguage codes. */ +# ifndef LANG_AFRIKAANS +# define LANG_AFRIKAANS 0x36 +# endif +# ifndef LANG_ALBANIAN +# define LANG_ALBANIAN 0x1c +# endif +# ifndef LANG_ALSATIAN +# define LANG_ALSATIAN 0x84 +# endif +# ifndef LANG_AMHARIC +# define LANG_AMHARIC 0x5e +# endif +# ifndef LANG_ARABIC +# define LANG_ARABIC 0x01 +# endif +# ifndef LANG_ARMENIAN +# define LANG_ARMENIAN 0x2b +# endif +# ifndef LANG_ASSAMESE +# define LANG_ASSAMESE 0x4d +# endif +# ifndef LANG_AZERI +# define LANG_AZERI 0x2c +# endif +# ifndef LANG_BASHKIR +# define LANG_BASHKIR 0x6d +# endif +# ifndef LANG_BASQUE +# define LANG_BASQUE 0x2d +# endif +# ifndef LANG_BELARUSIAN +# define LANG_BELARUSIAN 0x23 +# endif +# ifndef LANG_BENGALI +# define LANG_BENGALI 0x45 +# endif +# ifndef LANG_BRETON +# define LANG_BRETON 0x7e +# endif +# ifndef LANG_BURMESE +# define LANG_BURMESE 0x55 +# endif +# ifndef LANG_CAMBODIAN +# define LANG_CAMBODIAN 0x53 +# endif +# ifndef LANG_CATALAN +# define LANG_CATALAN 0x03 +# endif +# ifndef LANG_CHEROKEE +# define LANG_CHEROKEE 0x5c +# endif +# ifndef LANG_CORSICAN +# define LANG_CORSICAN 0x83 +# endif +# ifndef LANG_DARI +# define LANG_DARI 0x8c +# endif +# ifndef LANG_DIVEHI +# define LANG_DIVEHI 0x65 +# endif +# ifndef LANG_EDO +# define LANG_EDO 0x66 +# endif +# ifndef LANG_ESTONIAN +# define LANG_ESTONIAN 0x25 +# endif +# ifndef LANG_FAEROESE +# define LANG_FAEROESE 0x38 +# endif +# ifndef LANG_FARSI +# define LANG_FARSI 0x29 +# endif +# ifndef LANG_FRISIAN +# define LANG_FRISIAN 0x62 +# endif +# ifndef LANG_FULFULDE +# define LANG_FULFULDE 0x67 +# endif +# ifndef LANG_GAELIC +# define LANG_GAELIC 0x3c +# endif +# ifndef LANG_GALICIAN +# define LANG_GALICIAN 0x56 +# endif +# ifndef LANG_GEORGIAN +# define LANG_GEORGIAN 0x37 +# endif +# ifndef LANG_GREENLANDIC +# define LANG_GREENLANDIC 0x6f +# endif +# ifndef LANG_GUARANI +# define LANG_GUARANI 0x74 +# endif +# ifndef LANG_GUJARATI +# define LANG_GUJARATI 0x47 +# endif +# ifndef LANG_HAUSA +# define LANG_HAUSA 0x68 +# endif +# ifndef LANG_HAWAIIAN +# define LANG_HAWAIIAN 0x75 +# endif +# ifndef LANG_HEBREW +# define LANG_HEBREW 0x0d +# endif +# ifndef LANG_HINDI +# define LANG_HINDI 0x39 +# endif +# ifndef LANG_IBIBIO +# define LANG_IBIBIO 0x69 +# endif +# ifndef LANG_IGBO +# define LANG_IGBO 0x70 +# endif +# ifndef LANG_INDONESIAN +# define LANG_INDONESIAN 0x21 +# endif +# ifndef LANG_INUKTITUT +# define LANG_INUKTITUT 0x5d +# endif +# ifndef LANG_KANNADA +# define LANG_KANNADA 0x4b +# endif +# ifndef LANG_KANURI +# define LANG_KANURI 0x71 +# endif +# ifndef LANG_KASHMIRI +# define LANG_KASHMIRI 0x60 +# endif +# ifndef LANG_KAZAK +# define LANG_KAZAK 0x3f +# endif +# ifndef LANG_KICHE +# define LANG_KICHE 0x86 +# endif +# ifndef LANG_KINYARWANDA +# define LANG_KINYARWANDA 0x87 +# endif +# ifndef LANG_KONKANI +# define LANG_KONKANI 0x57 +# endif +# ifndef LANG_KYRGYZ +# define LANG_KYRGYZ 0x40 +# endif +# ifndef LANG_LAO +# define LANG_LAO 0x54 +# endif +# ifndef LANG_LATIN +# define LANG_LATIN 0x76 +# endif +# ifndef LANG_LATVIAN +# define LANG_LATVIAN 0x26 +# endif +# ifndef LANG_LITHUANIAN +# define LANG_LITHUANIAN 0x27 +# endif +# ifndef LANG_LUXEMBOURGISH +# define LANG_LUXEMBOURGISH 0x6e +# endif +# ifndef LANG_MACEDONIAN +# define LANG_MACEDONIAN 0x2f +# endif +# ifndef LANG_MALAY +# define LANG_MALAY 0x3e +# endif +# ifndef LANG_MALAYALAM +# define LANG_MALAYALAM 0x4c +# endif +# ifndef LANG_MALTESE +# define LANG_MALTESE 0x3a +# endif +# ifndef LANG_MANIPURI +# define LANG_MANIPURI 0x58 +# endif +# ifndef LANG_MAORI +# define LANG_MAORI 0x81 +# endif +# ifndef LANG_MAPUDUNGUN +# define LANG_MAPUDUNGUN 0x7a +# endif +# ifndef LANG_MARATHI +# define LANG_MARATHI 0x4e +# endif +# ifndef LANG_MOHAWK +# define LANG_MOHAWK 0x7c +# endif +# ifndef LANG_MONGOLIAN +# define LANG_MONGOLIAN 0x50 +# endif +# ifndef LANG_NEPALI +# define LANG_NEPALI 0x61 +# endif +# ifndef LANG_OCCITAN +# define LANG_OCCITAN 0x82 +# endif +# ifndef LANG_ORIYA +# define LANG_ORIYA 0x48 +# endif +# ifndef LANG_OROMO +# define LANG_OROMO 0x72 +# endif +# ifndef LANG_PAPIAMENTU +# define LANG_PAPIAMENTU 0x79 +# endif +# ifndef LANG_PASHTO +# define LANG_PASHTO 0x63 +# endif +# ifndef LANG_PUNJABI +# define LANG_PUNJABI 0x46 +# endif +# ifndef LANG_QUECHUA +# define LANG_QUECHUA 0x6b +# endif +# ifndef LANG_ROMANSH +# define LANG_ROMANSH 0x17 +# endif +# ifndef LANG_SAMI +# define LANG_SAMI 0x3b +# endif +# ifndef LANG_SANSKRIT +# define LANG_SANSKRIT 0x4f +# endif +# ifndef LANG_SCOTTISH_GAELIC +# define LANG_SCOTTISH_GAELIC 0x91 +# endif +# ifndef LANG_SERBIAN +# define LANG_SERBIAN 0x1a +# endif +# ifndef LANG_SINDHI +# define LANG_SINDHI 0x59 +# endif +# ifndef LANG_SINHALESE +# define LANG_SINHALESE 0x5b +# endif +# ifndef LANG_SLOVAK +# define LANG_SLOVAK 0x1b +# endif +# ifndef LANG_SOMALI +# define LANG_SOMALI 0x77 +# endif +# ifndef LANG_SORBIAN +# define LANG_SORBIAN 0x2e +# endif +# ifndef LANG_SOTHO +# define LANG_SOTHO 0x6c +# endif +# ifndef LANG_SUTU +# define LANG_SUTU 0x30 +# endif +# ifndef LANG_SWAHILI +# define LANG_SWAHILI 0x41 +# endif +# ifndef LANG_SYRIAC +# define LANG_SYRIAC 0x5a +# endif +# ifndef LANG_TAGALOG +# define LANG_TAGALOG 0x64 +# endif +# ifndef LANG_TAJIK +# define LANG_TAJIK 0x28 +# endif +# ifndef LANG_TAMAZIGHT +# define LANG_TAMAZIGHT 0x5f +# endif +# ifndef LANG_TAMIL +# define LANG_TAMIL 0x49 +# endif +# ifndef LANG_TATAR +# define LANG_TATAR 0x44 +# endif +# ifndef LANG_TELUGU +# define LANG_TELUGU 0x4a +# endif +# ifndef LANG_THAI +# define LANG_THAI 0x1e +# endif +# ifndef LANG_TIBETAN +# define LANG_TIBETAN 0x51 +# endif +# ifndef LANG_TIGRINYA +# define LANG_TIGRINYA 0x73 +# endif +# ifndef LANG_TSONGA +# define LANG_TSONGA 0x31 +# endif +# ifndef LANG_TSWANA +# define LANG_TSWANA 0x32 +# endif +# ifndef LANG_TURKMEN +# define LANG_TURKMEN 0x42 +# endif +# ifndef LANG_UIGHUR +# define LANG_UIGHUR 0x80 +# endif +# ifndef LANG_UKRAINIAN +# define LANG_UKRAINIAN 0x22 +# endif +# ifndef LANG_URDU +# define LANG_URDU 0x20 +# endif +# ifndef LANG_UZBEK +# define LANG_UZBEK 0x43 +# endif +# ifndef LANG_VENDA +# define LANG_VENDA 0x33 +# endif +# ifndef LANG_VIETNAMESE +# define LANG_VIETNAMESE 0x2a +# endif +# ifndef LANG_WELSH +# define LANG_WELSH 0x52 +# endif +# ifndef LANG_WOLOF +# define LANG_WOLOF 0x88 +# endif +# ifndef LANG_XHOSA +# define LANG_XHOSA 0x34 +# endif +# ifndef LANG_YAKUT +# define LANG_YAKUT 0x85 +# endif +# ifndef LANG_YI +# define LANG_YI 0x78 +# endif +# ifndef LANG_YIDDISH +# define LANG_YIDDISH 0x3d +# endif +# ifndef LANG_YORUBA +# define LANG_YORUBA 0x6a +# endif +# ifndef LANG_ZULU +# define LANG_ZULU 0x35 +# endif +# ifndef SUBLANG_AFRIKAANS_SOUTH_AFRICA +# define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01 +# endif +# ifndef SUBLANG_ALBANIAN_ALBANIA +# define SUBLANG_ALBANIAN_ALBANIA 0x01 +# endif +# ifndef SUBLANG_ALSATIAN_FRANCE +# define SUBLANG_ALSATIAN_FRANCE 0x01 +# endif +# ifndef SUBLANG_AMHARIC_ETHIOPIA +# define SUBLANG_AMHARIC_ETHIOPIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_SAUDI_ARABIA +# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_IRAQ +# define SUBLANG_ARABIC_IRAQ 0x02 +# endif +# ifndef SUBLANG_ARABIC_EGYPT +# define SUBLANG_ARABIC_EGYPT 0x03 +# endif +# ifndef SUBLANG_ARABIC_LIBYA +# define SUBLANG_ARABIC_LIBYA 0x04 +# endif +# ifndef SUBLANG_ARABIC_ALGERIA +# define SUBLANG_ARABIC_ALGERIA 0x05 +# endif +# ifndef SUBLANG_ARABIC_MOROCCO +# define SUBLANG_ARABIC_MOROCCO 0x06 +# endif +# ifndef SUBLANG_ARABIC_TUNISIA +# define SUBLANG_ARABIC_TUNISIA 0x07 +# endif +# ifndef SUBLANG_ARABIC_OMAN +# define SUBLANG_ARABIC_OMAN 0x08 +# endif +# ifndef SUBLANG_ARABIC_YEMEN +# define SUBLANG_ARABIC_YEMEN 0x09 +# endif +# ifndef SUBLANG_ARABIC_SYRIA +# define SUBLANG_ARABIC_SYRIA 0x0a +# endif +# ifndef SUBLANG_ARABIC_JORDAN +# define SUBLANG_ARABIC_JORDAN 0x0b +# endif +# ifndef SUBLANG_ARABIC_LEBANON +# define SUBLANG_ARABIC_LEBANON 0x0c +# endif +# ifndef SUBLANG_ARABIC_KUWAIT +# define SUBLANG_ARABIC_KUWAIT 0x0d +# endif +# ifndef SUBLANG_ARABIC_UAE +# define SUBLANG_ARABIC_UAE 0x0e +# endif +# ifndef SUBLANG_ARABIC_BAHRAIN +# define SUBLANG_ARABIC_BAHRAIN 0x0f +# endif +# ifndef SUBLANG_ARABIC_QATAR +# define SUBLANG_ARABIC_QATAR 0x10 +# endif +# ifndef SUBLANG_ARMENIAN_ARMENIA +# define SUBLANG_ARMENIAN_ARMENIA 0x01 +# endif +# ifndef SUBLANG_ASSAMESE_INDIA +# define SUBLANG_ASSAMESE_INDIA 0x01 +# endif +# ifndef SUBLANG_AZERI_LATIN +# define SUBLANG_AZERI_LATIN 0x01 +# endif +# ifndef SUBLANG_AZERI_CYRILLIC +# define SUBLANG_AZERI_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_BASHKIR_RUSSIA +# define SUBLANG_BASHKIR_RUSSIA 0x01 +# endif +# ifndef SUBLANG_BASQUE_BASQUE +# define SUBLANG_BASQUE_BASQUE 0x01 +# endif +# ifndef SUBLANG_BELARUSIAN_BELARUS +# define SUBLANG_BELARUSIAN_BELARUS 0x01 +# endif +# ifndef SUBLANG_BENGALI_INDIA +# define SUBLANG_BENGALI_INDIA 0x01 +# endif +# ifndef SUBLANG_BENGALI_BANGLADESH +# define SUBLANG_BENGALI_BANGLADESH 0x02 +# endif +# ifndef SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN +# define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05 +# endif +# ifndef SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC +# define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08 +# endif +# ifndef SUBLANG_BRETON_FRANCE +# define SUBLANG_BRETON_FRANCE 0x01 +# endif +# ifndef SUBLANG_BULGARIAN_BULGARIA +# define SUBLANG_BULGARIAN_BULGARIA 0x01 +# endif +# ifndef SUBLANG_CAMBODIAN_CAMBODIA +# define SUBLANG_CAMBODIAN_CAMBODIA 0x01 +# endif +# ifndef SUBLANG_CATALAN_SPAIN +# define SUBLANG_CATALAN_SPAIN 0x01 +# endif +# ifndef SUBLANG_CORSICAN_FRANCE +# define SUBLANG_CORSICAN_FRANCE 0x01 +# endif +# ifndef SUBLANG_CROATIAN_CROATIA +# define SUBLANG_CROATIAN_CROATIA 0x01 +# endif +# ifndef SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN +# define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04 +# endif +# ifndef SUBLANG_CHINESE_MACAU +# define SUBLANG_CHINESE_MACAU 0x05 +# endif +# ifndef SUBLANG_CZECH_CZECH_REPUBLIC +# define SUBLANG_CZECH_CZECH_REPUBLIC 0x01 +# endif +# ifndef SUBLANG_DANISH_DENMARK +# define SUBLANG_DANISH_DENMARK 0x01 +# endif +# ifndef SUBLANG_DARI_AFGHANISTAN +# define SUBLANG_DARI_AFGHANISTAN 0x01 +# endif +# ifndef SUBLANG_DIVEHI_MALDIVES +# define SUBLANG_DIVEHI_MALDIVES 0x01 +# endif +# ifndef SUBLANG_DUTCH_SURINAM +# define SUBLANG_DUTCH_SURINAM 0x03 +# endif +# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA +# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +# endif +# ifndef SUBLANG_ENGLISH_JAMAICA +# define SUBLANG_ENGLISH_JAMAICA 0x08 +# endif +# ifndef SUBLANG_ENGLISH_CARIBBEAN +# define SUBLANG_ENGLISH_CARIBBEAN 0x09 +# endif +# ifndef SUBLANG_ENGLISH_BELIZE +# define SUBLANG_ENGLISH_BELIZE 0x0a +# endif +# ifndef SUBLANG_ENGLISH_TRINIDAD +# define SUBLANG_ENGLISH_TRINIDAD 0x0b +# endif +# ifndef SUBLANG_ENGLISH_ZIMBABWE +# define SUBLANG_ENGLISH_ZIMBABWE 0x0c +# endif +# ifndef SUBLANG_ENGLISH_PHILIPPINES +# define SUBLANG_ENGLISH_PHILIPPINES 0x0d +# endif +# ifndef SUBLANG_ENGLISH_INDONESIA +# define SUBLANG_ENGLISH_INDONESIA 0x0e +# endif +# ifndef SUBLANG_ENGLISH_HONGKONG +# define SUBLANG_ENGLISH_HONGKONG 0x0f +# endif +# ifndef SUBLANG_ENGLISH_INDIA +# define SUBLANG_ENGLISH_INDIA 0x10 +# endif +# ifndef SUBLANG_ENGLISH_MALAYSIA +# define SUBLANG_ENGLISH_MALAYSIA 0x11 +# endif +# ifndef SUBLANG_ENGLISH_SINGAPORE +# define SUBLANG_ENGLISH_SINGAPORE 0x12 +# endif +# ifndef SUBLANG_ESTONIAN_ESTONIA +# define SUBLANG_ESTONIAN_ESTONIA 0x01 +# endif +# ifndef SUBLANG_FAEROESE_FAROE_ISLANDS +# define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01 +# endif +# ifndef SUBLANG_FARSI_IRAN +# define SUBLANG_FARSI_IRAN 0x01 +# endif +# ifndef SUBLANG_FINNISH_FINLAND +# define SUBLANG_FINNISH_FINLAND 0x01 +# endif +# ifndef SUBLANG_FRENCH_LUXEMBOURG +# define SUBLANG_FRENCH_LUXEMBOURG 0x05 +# endif +# ifndef SUBLANG_FRENCH_MONACO +# define SUBLANG_FRENCH_MONACO 0x06 +# endif +# ifndef SUBLANG_FRENCH_WESTINDIES +# define SUBLANG_FRENCH_WESTINDIES 0x07 +# endif +# ifndef SUBLANG_FRENCH_REUNION +# define SUBLANG_FRENCH_REUNION 0x08 +# endif +# ifndef SUBLANG_FRENCH_CONGO +# define SUBLANG_FRENCH_CONGO 0x09 +# endif +# ifndef SUBLANG_FRENCH_SENEGAL +# define SUBLANG_FRENCH_SENEGAL 0x0a +# endif +# ifndef SUBLANG_FRENCH_CAMEROON +# define SUBLANG_FRENCH_CAMEROON 0x0b +# endif +# ifndef SUBLANG_FRENCH_COTEDIVOIRE +# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c +# endif +# ifndef SUBLANG_FRENCH_MALI +# define SUBLANG_FRENCH_MALI 0x0d +# endif +# ifndef SUBLANG_FRENCH_MOROCCO +# define SUBLANG_FRENCH_MOROCCO 0x0e +# endif +# ifndef SUBLANG_FRENCH_HAITI +# define SUBLANG_FRENCH_HAITI 0x0f +# endif +# ifndef SUBLANG_FRISIAN_NETHERLANDS +# define SUBLANG_FRISIAN_NETHERLANDS 0x01 +# endif +# ifndef SUBLANG_GALICIAN_SPAIN +# define SUBLANG_GALICIAN_SPAIN 0x01 +# endif +# ifndef SUBLANG_GEORGIAN_GEORGIA +# define SUBLANG_GEORGIAN_GEORGIA 0x01 +# endif +# ifndef SUBLANG_GERMAN_LUXEMBOURG +# define SUBLANG_GERMAN_LUXEMBOURG 0x04 +# endif +# ifndef SUBLANG_GERMAN_LIECHTENSTEIN +# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +# endif +# ifndef SUBLANG_GREEK_GREECE +# define SUBLANG_GREEK_GREECE 0x01 +# endif +# ifndef SUBLANG_GREENLANDIC_GREENLAND +# define SUBLANG_GREENLANDIC_GREENLAND 0x01 +# endif +# ifndef SUBLANG_GUJARATI_INDIA +# define SUBLANG_GUJARATI_INDIA 0x01 +# endif +# ifndef SUBLANG_HAUSA_NIGERIA_LATIN +# define SUBLANG_HAUSA_NIGERIA_LATIN 0x01 +# endif +# ifndef SUBLANG_HEBREW_ISRAEL +# define SUBLANG_HEBREW_ISRAEL 0x01 +# endif +# ifndef SUBLANG_HINDI_INDIA +# define SUBLANG_HINDI_INDIA 0x01 +# endif +# ifndef SUBLANG_HUNGARIAN_HUNGARY +# define SUBLANG_HUNGARIAN_HUNGARY 0x01 +# endif +# ifndef SUBLANG_ICELANDIC_ICELAND +# define SUBLANG_ICELANDIC_ICELAND 0x01 +# endif +# ifndef SUBLANG_IGBO_NIGERIA +# define SUBLANG_IGBO_NIGERIA 0x01 +# endif +# ifndef SUBLANG_INDONESIAN_INDONESIA +# define SUBLANG_INDONESIAN_INDONESIA 0x01 +# endif +# ifndef SUBLANG_INUKTITUT_CANADA +# define SUBLANG_INUKTITUT_CANADA 0x01 +# endif +# undef SUBLANG_INUKTITUT_CANADA_LATIN +# define SUBLANG_INUKTITUT_CANADA_LATIN 0x02 +# undef SUBLANG_IRISH_IRELAND +# define SUBLANG_IRISH_IRELAND 0x02 +# ifndef SUBLANG_JAPANESE_JAPAN +# define SUBLANG_JAPANESE_JAPAN 0x01 +# endif +# ifndef SUBLANG_KANNADA_INDIA +# define SUBLANG_KANNADA_INDIA 0x01 +# endif +# ifndef SUBLANG_KASHMIRI_INDIA +# define SUBLANG_KASHMIRI_INDIA 0x02 +# endif +# ifndef SUBLANG_KAZAK_KAZAKHSTAN +# define SUBLANG_KAZAK_KAZAKHSTAN 0x01 +# endif +# ifndef SUBLANG_KICHE_GUATEMALA +# define SUBLANG_KICHE_GUATEMALA 0x01 +# endif +# ifndef SUBLANG_KINYARWANDA_RWANDA +# define SUBLANG_KINYARWANDA_RWANDA 0x01 +# endif +# ifndef SUBLANG_KONKANI_INDIA +# define SUBLANG_KONKANI_INDIA 0x01 +# endif +# ifndef SUBLANG_KYRGYZ_KYRGYZSTAN +# define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01 +# endif +# ifndef SUBLANG_LAO_LAOS +# define SUBLANG_LAO_LAOS 0x01 +# endif +# ifndef SUBLANG_LATVIAN_LATVIA +# define SUBLANG_LATVIAN_LATVIA 0x01 +# endif +# ifndef SUBLANG_LITHUANIAN_LITHUANIA +# define SUBLANG_LITHUANIAN_LITHUANIA 0x01 +# endif +# undef SUBLANG_LOWER_SORBIAN_GERMANY +# define SUBLANG_LOWER_SORBIAN_GERMANY 0x02 +# ifndef SUBLANG_LUXEMBOURGISH_LUXEMBOURG +# define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01 +# endif +# ifndef SUBLANG_MACEDONIAN_MACEDONIA +# define SUBLANG_MACEDONIAN_MACEDONIA 0x01 +# endif +# ifndef SUBLANG_MALAY_MALAYSIA +# define SUBLANG_MALAY_MALAYSIA 0x01 +# endif +# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM +# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +# endif +# ifndef SUBLANG_MALAYALAM_INDIA +# define SUBLANG_MALAYALAM_INDIA 0x01 +# endif +# ifndef SUBLANG_MALTESE_MALTA +# define SUBLANG_MALTESE_MALTA 0x01 +# endif +# ifndef SUBLANG_MAORI_NEW_ZEALAND +# define SUBLANG_MAORI_NEW_ZEALAND 0x01 +# endif +# ifndef SUBLANG_MAPUDUNGUN_CHILE +# define SUBLANG_MAPUDUNGUN_CHILE 0x01 +# endif +# ifndef SUBLANG_MARATHI_INDIA +# define SUBLANG_MARATHI_INDIA 0x01 +# endif +# ifndef SUBLANG_MOHAWK_CANADA +# define SUBLANG_MOHAWK_CANADA 0x01 +# endif +# ifndef SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA +# define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01 +# endif +# ifndef SUBLANG_MONGOLIAN_PRC +# define SUBLANG_MONGOLIAN_PRC 0x02 +# endif +# ifndef SUBLANG_NEPALI_NEPAL +# define SUBLANG_NEPALI_NEPAL 0x01 +# endif +# ifndef SUBLANG_NEPALI_INDIA +# define SUBLANG_NEPALI_INDIA 0x02 +# endif +# ifndef SUBLANG_OCCITAN_FRANCE +# define SUBLANG_OCCITAN_FRANCE 0x01 +# endif +# ifndef SUBLANG_ORIYA_INDIA +# define SUBLANG_ORIYA_INDIA 0x01 +# endif +# ifndef SUBLANG_PASHTO_AFGHANISTAN +# define SUBLANG_PASHTO_AFGHANISTAN 0x01 +# endif +# ifndef SUBLANG_POLISH_POLAND +# define SUBLANG_POLISH_POLAND 0x01 +# endif +# ifndef SUBLANG_PUNJABI_INDIA +# define SUBLANG_PUNJABI_INDIA 0x01 +# endif +# ifndef SUBLANG_PUNJABI_PAKISTAN +# define SUBLANG_PUNJABI_PAKISTAN 0x02 +# endif +# ifndef SUBLANG_QUECHUA_BOLIVIA +# define SUBLANG_QUECHUA_BOLIVIA 0x01 +# endif +# ifndef SUBLANG_QUECHUA_ECUADOR +# define SUBLANG_QUECHUA_ECUADOR 0x02 +# endif +# ifndef SUBLANG_QUECHUA_PERU +# define SUBLANG_QUECHUA_PERU 0x03 +# endif +# ifndef SUBLANG_ROMANIAN_ROMANIA +# define SUBLANG_ROMANIAN_ROMANIA 0x01 +# endif +# ifndef SUBLANG_ROMANIAN_MOLDOVA +# define SUBLANG_ROMANIAN_MOLDOVA 0x02 +# endif +# ifndef SUBLANG_ROMANSH_SWITZERLAND +# define SUBLANG_ROMANSH_SWITZERLAND 0x01 +# endif +# ifndef SUBLANG_RUSSIAN_RUSSIA +# define SUBLANG_RUSSIAN_RUSSIA 0x01 +# endif +# ifndef SUBLANG_RUSSIAN_MOLDAVIA +# define SUBLANG_RUSSIAN_MOLDAVIA 0x02 +# endif +# ifndef SUBLANG_SAMI_NORTHERN_NORWAY +# define SUBLANG_SAMI_NORTHERN_NORWAY 0x01 +# endif +# ifndef SUBLANG_SAMI_NORTHERN_SWEDEN +# define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02 +# endif +# ifndef SUBLANG_SAMI_NORTHERN_FINLAND +# define SUBLANG_SAMI_NORTHERN_FINLAND 0x03 +# endif +# ifndef SUBLANG_SAMI_LULE_NORWAY +# define SUBLANG_SAMI_LULE_NORWAY 0x04 +# endif +# ifndef SUBLANG_SAMI_LULE_SWEDEN +# define SUBLANG_SAMI_LULE_SWEDEN 0x05 +# endif +# ifndef SUBLANG_SAMI_SOUTHERN_NORWAY +# define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06 +# endif +# ifndef SUBLANG_SAMI_SOUTHERN_SWEDEN +# define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07 +# endif +# undef SUBLANG_SAMI_SKOLT_FINLAND +# define SUBLANG_SAMI_SKOLT_FINLAND 0x08 +# undef SUBLANG_SAMI_INARI_FINLAND +# define SUBLANG_SAMI_INARI_FINLAND 0x09 +# ifndef SUBLANG_SANSKRIT_INDIA +# define SUBLANG_SANSKRIT_INDIA 0x01 +# endif +# ifndef SUBLANG_SERBIAN_LATIN +# define SUBLANG_SERBIAN_LATIN 0x02 +# endif +# ifndef SUBLANG_SERBIAN_CYRILLIC +# define SUBLANG_SERBIAN_CYRILLIC 0x03 +# endif +# ifndef SUBLANG_SINDHI_INDIA +# define SUBLANG_SINDHI_INDIA 0x01 +# endif +# undef SUBLANG_SINDHI_PAKISTAN +# define SUBLANG_SINDHI_PAKISTAN 0x02 +# ifndef SUBLANG_SINDHI_AFGHANISTAN +# define SUBLANG_SINDHI_AFGHANISTAN 0x02 +# endif +# ifndef SUBLANG_SINHALESE_SRI_LANKA +# define SUBLANG_SINHALESE_SRI_LANKA 0x01 +# endif +# ifndef SUBLANG_SLOVAK_SLOVAKIA +# define SUBLANG_SLOVAK_SLOVAKIA 0x01 +# endif +# ifndef SUBLANG_SLOVENIAN_SLOVENIA +# define SUBLANG_SLOVENIAN_SLOVENIA 0x01 +# endif +# ifndef SUBLANG_SOTHO_SOUTH_AFRICA +# define SUBLANG_SOTHO_SOUTH_AFRICA 0x01 +# endif +# ifndef SUBLANG_SPANISH_GUATEMALA +# define SUBLANG_SPANISH_GUATEMALA 0x04 +# endif +# ifndef SUBLANG_SPANISH_COSTA_RICA +# define SUBLANG_SPANISH_COSTA_RICA 0x05 +# endif +# ifndef SUBLANG_SPANISH_PANAMA +# define SUBLANG_SPANISH_PANAMA 0x06 +# endif +# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC +# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +# endif +# ifndef SUBLANG_SPANISH_VENEZUELA +# define SUBLANG_SPANISH_VENEZUELA 0x08 +# endif +# ifndef SUBLANG_SPANISH_COLOMBIA +# define SUBLANG_SPANISH_COLOMBIA 0x09 +# endif +# ifndef SUBLANG_SPANISH_PERU +# define SUBLANG_SPANISH_PERU 0x0a +# endif +# ifndef SUBLANG_SPANISH_ARGENTINA +# define SUBLANG_SPANISH_ARGENTINA 0x0b +# endif +# ifndef SUBLANG_SPANISH_ECUADOR +# define SUBLANG_SPANISH_ECUADOR 0x0c +# endif +# ifndef SUBLANG_SPANISH_CHILE +# define SUBLANG_SPANISH_CHILE 0x0d +# endif +# ifndef SUBLANG_SPANISH_URUGUAY +# define SUBLANG_SPANISH_URUGUAY 0x0e +# endif +# ifndef SUBLANG_SPANISH_PARAGUAY +# define SUBLANG_SPANISH_PARAGUAY 0x0f +# endif +# ifndef SUBLANG_SPANISH_BOLIVIA +# define SUBLANG_SPANISH_BOLIVIA 0x10 +# endif +# ifndef SUBLANG_SPANISH_EL_SALVADOR +# define SUBLANG_SPANISH_EL_SALVADOR 0x11 +# endif +# ifndef SUBLANG_SPANISH_HONDURAS +# define SUBLANG_SPANISH_HONDURAS 0x12 +# endif +# ifndef SUBLANG_SPANISH_NICARAGUA +# define SUBLANG_SPANISH_NICARAGUA 0x13 +# endif +# ifndef SUBLANG_SPANISH_PUERTO_RICO +# define SUBLANG_SPANISH_PUERTO_RICO 0x14 +# endif +# ifndef SUBLANG_SPANISH_US +# define SUBLANG_SPANISH_US 0x15 +# endif +# ifndef SUBLANG_SWAHILI_KENYA +# define SUBLANG_SWAHILI_KENYA 0x01 +# endif +# ifndef SUBLANG_SWEDISH_SWEDEN +# define SUBLANG_SWEDISH_SWEDEN 0x01 +# endif +# ifndef SUBLANG_SWEDISH_FINLAND +# define SUBLANG_SWEDISH_FINLAND 0x02 +# endif +# ifndef SUBLANG_SYRIAC_SYRIA +# define SUBLANG_SYRIAC_SYRIA 0x01 +# endif +# ifndef SUBLANG_TAGALOG_PHILIPPINES +# define SUBLANG_TAGALOG_PHILIPPINES 0x01 +# endif +# ifndef SUBLANG_TAJIK_TAJIKISTAN +# define SUBLANG_TAJIK_TAJIKISTAN 0x01 +# endif +# ifndef SUBLANG_TAMAZIGHT_ARABIC +# define SUBLANG_TAMAZIGHT_ARABIC 0x01 +# endif +# ifndef SUBLANG_TAMAZIGHT_ALGERIA_LATIN +# define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 +# endif +# ifndef SUBLANG_TAMIL_INDIA +# define SUBLANG_TAMIL_INDIA 0x01 +# endif +# ifndef SUBLANG_TATAR_RUSSIA +# define SUBLANG_TATAR_RUSSIA 0x01 +# endif +# ifndef SUBLANG_TELUGU_INDIA +# define SUBLANG_TELUGU_INDIA 0x01 +# endif +# ifndef SUBLANG_THAI_THAILAND +# define SUBLANG_THAI_THAILAND 0x01 +# endif +# ifndef SUBLANG_TIBETAN_PRC +# define SUBLANG_TIBETAN_PRC 0x01 +# endif +# undef SUBLANG_TIBETAN_BHUTAN +# define SUBLANG_TIBETAN_BHUTAN 0x02 +# ifndef SUBLANG_TIGRINYA_ETHIOPIA +# define SUBLANG_TIGRINYA_ETHIOPIA 0x01 +# endif +# ifndef SUBLANG_TIGRINYA_ERITREA +# define SUBLANG_TIGRINYA_ERITREA 0x02 +# endif +# ifndef SUBLANG_TSWANA_SOUTH_AFRICA +# define SUBLANG_TSWANA_SOUTH_AFRICA 0x01 +# endif +# ifndef SUBLANG_TURKISH_TURKEY +# define SUBLANG_TURKISH_TURKEY 0x01 +# endif +# ifndef SUBLANG_TURKMEN_TURKMENISTAN +# define SUBLANG_TURKMEN_TURKMENISTAN 0x01 +# endif +# ifndef SUBLANG_UIGHUR_PRC +# define SUBLANG_UIGHUR_PRC 0x01 +# endif +# ifndef SUBLANG_UKRAINIAN_UKRAINE +# define SUBLANG_UKRAINIAN_UKRAINE 0x01 +# endif +# ifndef SUBLANG_UPPER_SORBIAN_GERMANY +# define SUBLANG_UPPER_SORBIAN_GERMANY 0x01 +# endif +# ifndef SUBLANG_URDU_PAKISTAN +# define SUBLANG_URDU_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_URDU_INDIA +# define SUBLANG_URDU_INDIA 0x02 +# endif +# ifndef SUBLANG_UZBEK_LATIN +# define SUBLANG_UZBEK_LATIN 0x01 +# endif +# ifndef SUBLANG_UZBEK_CYRILLIC +# define SUBLANG_UZBEK_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_VIETNAMESE_VIETNAM +# define SUBLANG_VIETNAMESE_VIETNAM 0x01 +# endif +# ifndef SUBLANG_WELSH_UNITED_KINGDOM +# define SUBLANG_WELSH_UNITED_KINGDOM 0x01 +# endif +# ifndef SUBLANG_WOLOF_SENEGAL +# define SUBLANG_WOLOF_SENEGAL 0x01 +# endif +# ifndef SUBLANG_XHOSA_SOUTH_AFRICA +# define SUBLANG_XHOSA_SOUTH_AFRICA 0x01 +# endif +# ifndef SUBLANG_YAKUT_RUSSIA +# define SUBLANG_YAKUT_RUSSIA 0x01 +# endif +# ifndef SUBLANG_YI_PRC +# define SUBLANG_YI_PRC 0x01 +# endif +# ifndef SUBLANG_YORUBA_NIGERIA +# define SUBLANG_YORUBA_NIGERIA 0x01 +# endif +# ifndef SUBLANG_ZULU_SOUTH_AFRICA +# define SUBLANG_ZULU_SOUTH_AFRICA 0x01 +# endif +/* GetLocaleInfoA operations. */ +# ifndef LOCALE_SNAME +# define LOCALE_SNAME 0x5c +# endif +#endif + + +#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +/* MacOS X 10.2 or newer */ + +/* Canonicalize a MacOS X locale name to a Unix locale name. + NAME is a sufficiently large buffer. + On input, it contains the MacOS X locale name. + On output, it contains the Unix locale name. */ +# if !defined IN_LIBINTL +static +# endif +void +gl_locale_name_canonicalize (char *name) +{ + /* This conversion is based on a posting by + Deborah GoldSmith on 2005-03-08, + http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */ + + /* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and + ISO 3166) names. Prior to MacOS X 10.3, there is no API for doing this. + Therefore we do it ourselves, using a table based on the results of the + MacOS X 10.3.8 function + CFLocaleCreateCanonicalLocaleIdentifierFromString(). */ + typedef struct { const char legacy[21+1]; const char unixy[5+1]; } + legacy_entry; + static const legacy_entry legacy_table[] = { + { "Afrikaans", "af" }, + { "Albanian", "sq" }, + { "Amharic", "am" }, + { "Arabic", "ar" }, + { "Armenian", "hy" }, + { "Assamese", "as" }, + { "Aymara", "ay" }, + { "Azerbaijani", "az" }, + { "Basque", "eu" }, + { "Belarusian", "be" }, + { "Belorussian", "be" }, + { "Bengali", "bn" }, + { "Brazilian Portugese", "pt_BR" }, + { "Brazilian Portuguese", "pt_BR" }, + { "Breton", "br" }, + { "Bulgarian", "bg" }, + { "Burmese", "my" }, + { "Byelorussian", "be" }, + { "Catalan", "ca" }, + { "Chewa", "ny" }, + { "Chichewa", "ny" }, + { "Chinese", "zh" }, + { "Chinese, Simplified", "zh_CN" }, + { "Chinese, Traditional", "zh_TW" }, + { "Chinese, Tradtional", "zh_TW" }, + { "Croatian", "hr" }, + { "Czech", "cs" }, + { "Danish", "da" }, + { "Dutch", "nl" }, + { "Dzongkha", "dz" }, + { "English", "en" }, + { "Esperanto", "eo" }, + { "Estonian", "et" }, + { "Faroese", "fo" }, + { "Farsi", "fa" }, + { "Finnish", "fi" }, + { "Flemish", "nl_BE" }, + { "French", "fr" }, + { "Galician", "gl" }, + { "Gallegan", "gl" }, + { "Georgian", "ka" }, + { "German", "de" }, + { "Greek", "el" }, + { "Greenlandic", "kl" }, + { "Guarani", "gn" }, + { "Gujarati", "gu" }, + { "Hawaiian", "haw" }, /* Yes, "haw", not "cpe". */ + { "Hebrew", "he" }, + { "Hindi", "hi" }, + { "Hungarian", "hu" }, + { "Icelandic", "is" }, + { "Indonesian", "id" }, + { "Inuktitut", "iu" }, + { "Irish", "ga" }, + { "Italian", "it" }, + { "Japanese", "ja" }, + { "Javanese", "jv" }, + { "Kalaallisut", "kl" }, + { "Kannada", "kn" }, + { "Kashmiri", "ks" }, + { "Kazakh", "kk" }, + { "Khmer", "km" }, + { "Kinyarwanda", "rw" }, + { "Kirghiz", "ky" }, + { "Korean", "ko" }, + { "Kurdish", "ku" }, + { "Latin", "la" }, + { "Latvian", "lv" }, + { "Lithuanian", "lt" }, + { "Macedonian", "mk" }, + { "Malagasy", "mg" }, + { "Malay", "ms" }, + { "Malayalam", "ml" }, + { "Maltese", "mt" }, + { "Manx", "gv" }, + { "Marathi", "mr" }, + { "Moldavian", "mo" }, + { "Mongolian", "mn" }, + { "Nepali", "ne" }, + { "Norwegian", "nb" }, /* Yes, "nb", not the obsolete "no". */ + { "Nyanja", "ny" }, + { "Nynorsk", "nn" }, + { "Oriya", "or" }, + { "Oromo", "om" }, + { "Panjabi", "pa" }, + { "Pashto", "ps" }, + { "Persian", "fa" }, + { "Polish", "pl" }, + { "Portuguese", "pt" }, + { "Portuguese, Brazilian", "pt_BR" }, + { "Punjabi", "pa" }, + { "Pushto", "ps" }, + { "Quechua", "qu" }, + { "Romanian", "ro" }, + { "Ruanda", "rw" }, + { "Rundi", "rn" }, + { "Russian", "ru" }, + { "Sami", "se_NO" }, /* Not just "se". */ + { "Sanskrit", "sa" }, + { "Scottish", "gd" }, + { "Serbian", "sr" }, + { "Simplified Chinese", "zh_CN" }, + { "Sindhi", "sd" }, + { "Sinhalese", "si" }, + { "Slovak", "sk" }, + { "Slovenian", "sl" }, + { "Somali", "so" }, + { "Spanish", "es" }, + { "Sundanese", "su" }, + { "Swahili", "sw" }, + { "Swedish", "sv" }, + { "Tagalog", "tl" }, + { "Tajik", "tg" }, + { "Tajiki", "tg" }, + { "Tamil", "ta" }, + { "Tatar", "tt" }, + { "Telugu", "te" }, + { "Thai", "th" }, + { "Tibetan", "bo" }, + { "Tigrinya", "ti" }, + { "Tongan", "to" }, + { "Traditional Chinese", "zh_TW" }, + { "Turkish", "tr" }, + { "Turkmen", "tk" }, + { "Uighur", "ug" }, + { "Ukrainian", "uk" }, + { "Urdu", "ur" }, + { "Uzbek", "uz" }, + { "Vietnamese", "vi" }, + { "Welsh", "cy" }, + { "Yiddish", "yi" } + }; + + /* Convert new-style locale names with language tags (ISO 639 and ISO 15924) + to Unix (ISO 639 and ISO 3166) names. */ + typedef struct { const char langtag[7+1]; const char unixy[12+1]; } + langtag_entry; + static const langtag_entry langtag_table[] = { + /* MacOS X has "az-Arab", "az-Cyrl", "az-Latn". + The default script for az on Unix is Latin. */ + { "az-Latn", "az" }, + /* MacOS X has "ga-dots". Does not yet exist on Unix. */ + { "ga-dots", "ga" }, + /* MacOS X has "kk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "mn-Cyrl", "mn-Mong". + The default script for mn on Unix is Cyrillic. */ + { "mn-Cyrl", "mn" }, + /* MacOS X has "ms-Arab", "ms-Latn". + The default script for ms on Unix is Latin. */ + { "ms-Latn", "ms" }, + /* MacOS X has "tg-Cyrl". + The default script for tg on Unix is Cyrillic. */ + { "tg-Cyrl", "tg" }, + /* MacOS X has "tk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "tt-Cyrl". + The default script for tt on Unix is Cyrillic. */ + { "tt-Cyrl", "tt" }, + /* MacOS X has "zh-Hans", "zh-Hant". + Country codes are used to distinguish these on Unix. */ + { "zh-Hans", "zh_CN" }, + { "zh-Hant", "zh_TW" } + }; + + /* Convert script names (ISO 15924) to Unix conventions. + See http://www.unicode.org/iso15924/iso15924-codes.html */ + typedef struct { const char script[4+1]; const char unixy[9+1]; } + script_entry; + static const script_entry script_table[] = { + { "Arab", "arabic" }, + { "Cyrl", "cyrillic" }, + { "Mong", "mongolian" } + }; + + /* Step 1: Convert using legacy_table. */ + if (name[0] >= 'A' && name[0] <= 'Z') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (legacy_table) / sizeof (legacy_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in legacy_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const legacy_entry *p = &legacy_table[i]; + if (strcmp (name, p->legacy) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, legacy_table[i1].legacy) == 0) + { + strcpy (name, legacy_table[i1].unixy); + return; + } + } + + /* Step 2: Convert using langtag_table and script_table. */ + if (strlen (name) == 7 && name[2] == '-') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (langtag_table) / sizeof (langtag_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in langtag_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const langtag_entry *p = &langtag_table[i]; + if (strcmp (name, p->langtag) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, langtag_table[i1].langtag) == 0) + { + strcpy (name, langtag_table[i1].unixy); + return; + } + + i1 = 0; + i2 = sizeof (script_table) / sizeof (script_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if (name + 3) occurs in script_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const script_entry *p = &script_table[i]; + if (strcmp (name + 3, p->script) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name + 3, script_table[i1].script) == 0) + { + name[2] = '@'; + strcpy (name + 3, script_table[i1].unixy); + return; + } + } + + /* Step 3: Convert new-style dash to Unix underscore. */ + { + char *p; + for (p = name; *p != '\0'; p++) + if (*p == '-') + *p = '_'; + } +} + +#endif + + +#if defined WIN32_NATIVE || defined __CYGWIN__ /* WIN32 or Cygwin */ + +/* Canonicalize a Win32 native locale name to a Unix locale name. + NAME is a sufficiently large buffer. + On input, it contains the Win32 locale name. + On output, it contains the Unix locale name. */ +# if !defined IN_LIBINTL +static +# endif +void +gl_locale_name_canonicalize (char *name) +{ + /* FIXME: This is probably incomplete: it does not handle "zh-Hans" and + "zh-Hant". */ + char *p; + + for (p = name; *p != '\0'; p++) + if (*p == '-') + { + *p = '_'; + p++; + for (; *p != '\0'; p++) + { + if (*p >= 'a' && *p <= 'z') + *p += 'A' - 'a'; + if (*p == '-') + { + *p = '\0'; + return; + } + } + return; + } +} + +# if !defined IN_LIBINTL +static +# endif +const char * +gl_locale_name_from_win32_LANGID (LANGID langid) +{ + /* Activate the new code only when the GETTEXT_MUI environment variable is + set, for the time being, since the new code is not well tested. */ + if (getenv ("GETTEXT_MUI") != NULL) + { + static char namebuf[256]; + + /* Query the system's notion of locale name. + On Windows95/98/ME, GetLocaleInfoA returns some incorrect results. + But we don't need to support systems that are so old. */ + if (GetLocaleInfoA (MAKELCID (langid, SORT_DEFAULT), LOCALE_SNAME, + namebuf, sizeof (namebuf) - 1)) + { + /* Convert it to a Unix locale name. */ + gl_locale_name_canonicalize (namebuf); + return namebuf; + } + } + /* Internet Explorer has an LCID to RFC3066 name mapping stored in + HKEY_CLASSES_ROOT\Mime\Database\Rfc1766. But we better don't use that + since IE's i18n subsystem is known to be inconsistent with the Win32 base + (e.g. they have different character conversion facilities that produce + different results). */ + /* Use our own table. */ + { + int primary, sub; + + /* Split into language and territory part. */ + primary = PRIMARYLANGID (langid); + sub = SUBLANGID (langid); + + /* Dispatch on language. + See also http://www.unicode.org/unicode/onlinedat/languages.html . + For details about languages, see http://www.ethnologue.com/ . */ + switch (primary) + { + case LANG_AFRIKAANS: + switch (sub) + { + case SUBLANG_AFRIKAANS_SOUTH_AFRICA: return "af_ZA"; + } + return "af"; + case LANG_ALBANIAN: + switch (sub) + { + case SUBLANG_ALBANIAN_ALBANIA: return "sq_AL"; + } + return "sq"; + case LANG_ALSATIAN: + switch (sub) + { + case SUBLANG_ALSATIAN_FRANCE: return "gsw_FR"; + } + return "gsw"; + case LANG_AMHARIC: + switch (sub) + { + case SUBLANG_AMHARIC_ETHIOPIA: return "am_ET"; + } + return "am"; + case LANG_ARABIC: + switch (sub) + { + case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; + case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; + case SUBLANG_ARABIC_EGYPT: return "ar_EG"; + case SUBLANG_ARABIC_LIBYA: return "ar_LY"; + case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; + case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; + case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; + case SUBLANG_ARABIC_OMAN: return "ar_OM"; + case SUBLANG_ARABIC_YEMEN: return "ar_YE"; + case SUBLANG_ARABIC_SYRIA: return "ar_SY"; + case SUBLANG_ARABIC_JORDAN: return "ar_JO"; + case SUBLANG_ARABIC_LEBANON: return "ar_LB"; + case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; + case SUBLANG_ARABIC_UAE: return "ar_AE"; + case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; + case SUBLANG_ARABIC_QATAR: return "ar_QA"; + } + return "ar"; + case LANG_ARMENIAN: + switch (sub) + { + case SUBLANG_ARMENIAN_ARMENIA: return "hy_AM"; + } + return "hy"; + case LANG_ASSAMESE: + switch (sub) + { + case SUBLANG_ASSAMESE_INDIA: return "as_IN"; + } + return "as"; + case LANG_AZERI: + switch (sub) + { + /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ + case 0x1e: return "az@latin"; + case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; + case 0x1d: return "az@cyrillic"; + case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; + } + return "az"; + case LANG_BASHKIR: + switch (sub) + { + case SUBLANG_BASHKIR_RUSSIA: return "ba_RU"; + } + return "ba"; + case LANG_BASQUE: + switch (sub) + { + case SUBLANG_BASQUE_BASQUE: return "eu_ES"; + } + return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ + case LANG_BELARUSIAN: + switch (sub) + { + case SUBLANG_BELARUSIAN_BELARUS: return "be_BY"; + } + return "be"; + case LANG_BENGALI: + switch (sub) + { + case SUBLANG_BENGALI_INDIA: return "bn_IN"; + case SUBLANG_BENGALI_BANGLADESH: return "bn_BD"; + } + return "bn"; + case LANG_BRETON: + switch (sub) + { + case SUBLANG_BRETON_FRANCE: return "br_FR"; + } + return "br"; + case LANG_BULGARIAN: + switch (sub) + { + case SUBLANG_BULGARIAN_BULGARIA: return "bg_BG"; + } + return "bg"; + case LANG_BURMESE: + switch (sub) + { + case SUBLANG_DEFAULT: return "my_MM"; + } + return "my"; + case LANG_CAMBODIAN: + switch (sub) + { + case SUBLANG_CAMBODIAN_CAMBODIA: return "km_KH"; + } + return "km"; + case LANG_CATALAN: + switch (sub) + { + case SUBLANG_CATALAN_SPAIN: return "ca_ES"; + } + return "ca"; + case LANG_CHEROKEE: + switch (sub) + { + case SUBLANG_DEFAULT: return "chr_US"; + } + return "chr"; + case LANG_CHINESE: + switch (sub) + { + case SUBLANG_CHINESE_TRADITIONAL: case 0x1f: return "zh_TW"; + case SUBLANG_CHINESE_SIMPLIFIED: case 0x00: return "zh_CN"; + case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; /* traditional */ + case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; /* simplified */ + case SUBLANG_CHINESE_MACAU: return "zh_MO"; /* traditional */ + } + return "zh"; + case LANG_CORSICAN: + switch (sub) + { + case SUBLANG_CORSICAN_FRANCE: return "co_FR"; + } + return "co"; + case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN == LANG_BOSNIAN + * What used to be called Serbo-Croatian + * should really now be two separate + * languages because of political reasons. + * (Says tml, who knows nothing about Serbian + * or Croatian.) + * (I can feel those flames coming already.) + */ + switch (sub) + { + /* Croatian */ + case 0x00: return "hr"; + case SUBLANG_CROATIAN_CROATIA: return "hr_HR"; + case SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN: return "hr_BA"; + /* Serbian */ + case 0x1f: return "sr"; + case 0x1c: return "sr"; /* latin */ + case SUBLANG_SERBIAN_LATIN: return "sr_CS"; /* latin */ + case 0x09: return "sr_RS"; /* latin */ + case 0x0b: return "sr_ME"; /* latin */ + case 0x06: return "sr_BA"; /* latin */ + case 0x1b: return "sr@cyrillic"; + case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic"; + case 0x0a: return "sr_RS@cyrillic"; + case 0x0c: return "sr_ME@cyrillic"; + case 0x07: return "sr_BA@cyrillic"; + /* Bosnian */ + case 0x1e: return "bs"; + case 0x1a: return "bs"; /* latin */ + case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN: return "bs_BA"; /* latin */ + case 0x19: return "bs@cyrillic"; + case SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC: return "bs_BA@cyrillic"; + } + return "hr"; + case LANG_CZECH: + switch (sub) + { + case SUBLANG_CZECH_CZECH_REPUBLIC: return "cs_CZ"; + } + return "cs"; + case LANG_DANISH: + switch (sub) + { + case SUBLANG_DANISH_DENMARK: return "da_DK"; + } + return "da"; + case LANG_DARI: + /* FIXME: Adjust this when such locales appear on Unix. */ + switch (sub) + { + case SUBLANG_DARI_AFGHANISTAN: return "prs_AF"; + } + return "prs"; + case LANG_DIVEHI: + switch (sub) + { + case SUBLANG_DIVEHI_MALDIVES: return "dv_MV"; + } + return "dv"; + case LANG_DUTCH: + switch (sub) + { + case SUBLANG_DUTCH: return "nl_NL"; + case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; + case SUBLANG_DUTCH_SURINAM: return "nl_SR"; + } + return "nl"; + case LANG_EDO: + switch (sub) + { + case SUBLANG_DEFAULT: return "bin_NG"; + } + return "bin"; + case LANG_ENGLISH: + switch (sub) + { + /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought + * English was the language spoken in England. + * Oh well. + */ + case SUBLANG_ENGLISH_US: return "en_US"; + case SUBLANG_ENGLISH_UK: return "en_GB"; + case SUBLANG_ENGLISH_AUS: return "en_AU"; + case SUBLANG_ENGLISH_CAN: return "en_CA"; + case SUBLANG_ENGLISH_NZ: return "en_NZ"; + case SUBLANG_ENGLISH_EIRE: return "en_IE"; + case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; + case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; + case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ + case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; + case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; + case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; + case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; + case SUBLANG_ENGLISH_INDONESIA: return "en_ID"; + case SUBLANG_ENGLISH_HONGKONG: return "en_HK"; + case SUBLANG_ENGLISH_INDIA: return "en_IN"; + case SUBLANG_ENGLISH_MALAYSIA: return "en_MY"; + case SUBLANG_ENGLISH_SINGAPORE: return "en_SG"; + } + return "en"; + case LANG_ESTONIAN: + switch (sub) + { + case SUBLANG_ESTONIAN_ESTONIA: return "et_EE"; + } + return "et"; + case LANG_FAEROESE: + switch (sub) + { + case SUBLANG_FAEROESE_FAROE_ISLANDS: return "fo_FO"; + } + return "fo"; + case LANG_FARSI: + switch (sub) + { + case SUBLANG_FARSI_IRAN: return "fa_IR"; + } + return "fa"; + case LANG_FINNISH: + switch (sub) + { + case SUBLANG_FINNISH_FINLAND: return "fi_FI"; + } + return "fi"; + case LANG_FRENCH: + switch (sub) + { + case SUBLANG_FRENCH: return "fr_FR"; + case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; + case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; + case SUBLANG_FRENCH_SWISS: return "fr_CH"; + case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; + case SUBLANG_FRENCH_MONACO: return "fr_MC"; + case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */ + case SUBLANG_FRENCH_REUNION: return "fr_RE"; + case SUBLANG_FRENCH_CONGO: return "fr_CG"; + case SUBLANG_FRENCH_SENEGAL: return "fr_SN"; + case SUBLANG_FRENCH_CAMEROON: return "fr_CM"; + case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI"; + case SUBLANG_FRENCH_MALI: return "fr_ML"; + case SUBLANG_FRENCH_MOROCCO: return "fr_MA"; + case SUBLANG_FRENCH_HAITI: return "fr_HT"; + } + return "fr"; + case LANG_FRISIAN: + switch (sub) + { + case SUBLANG_FRISIAN_NETHERLANDS: return "fy_NL"; + } + return "fy"; + case LANG_FULFULDE: + /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */ + switch (sub) + { + case SUBLANG_DEFAULT: return "ff_NG"; + } + return "ff"; + case LANG_GAELIC: + switch (sub) + { + case 0x01: /* SCOTTISH */ + /* old, superseded by LANG_SCOTTISH_GAELIC */ + return "gd_GB"; + case SUBLANG_IRISH_IRELAND: return "ga_IE"; + } + return "ga"; + case LANG_GALICIAN: + switch (sub) + { + case SUBLANG_GALICIAN_SPAIN: return "gl_ES"; + } + return "gl"; + case LANG_GEORGIAN: + switch (sub) + { + case SUBLANG_GEORGIAN_GEORGIA: return "ka_GE"; + } + return "ka"; + case LANG_GERMAN: + switch (sub) + { + case SUBLANG_GERMAN: return "de_DE"; + case SUBLANG_GERMAN_SWISS: return "de_CH"; + case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; + case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; + case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; + } + return "de"; + case LANG_GREEK: + switch (sub) + { + case SUBLANG_GREEK_GREECE: return "el_GR"; + } + return "el"; + case LANG_GREENLANDIC: + switch (sub) + { + case SUBLANG_GREENLANDIC_GREENLAND: return "kl_GL"; + } + return "kl"; + case LANG_GUARANI: + switch (sub) + { + case SUBLANG_DEFAULT: return "gn_PY"; + } + return "gn"; + case LANG_GUJARATI: + switch (sub) + { + case SUBLANG_GUJARATI_INDIA: return "gu_IN"; + } + return "gu"; + case LANG_HAUSA: + switch (sub) + { + case 0x1f: return "ha"; + case SUBLANG_HAUSA_NIGERIA_LATIN: return "ha_NG"; + } + return "ha"; + case LANG_HAWAIIAN: + /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) + or Hawaii Creole English ("cpe_US", 600000 speakers)? */ + switch (sub) + { + case SUBLANG_DEFAULT: return "cpe_US"; + } + return "cpe"; + case LANG_HEBREW: + switch (sub) + { + case SUBLANG_HEBREW_ISRAEL: return "he_IL"; + } + return "he"; + case LANG_HINDI: + switch (sub) + { + case SUBLANG_HINDI_INDIA: return "hi_IN"; + } + return "hi"; + case LANG_HUNGARIAN: + switch (sub) + { + case SUBLANG_HUNGARIAN_HUNGARY: return "hu_HU"; + } + return "hu"; + case LANG_IBIBIO: + switch (sub) + { + case SUBLANG_DEFAULT: return "nic_NG"; + } + return "nic"; + case LANG_ICELANDIC: + switch (sub) + { + case SUBLANG_ICELANDIC_ICELAND: return "is_IS"; + } + return "is"; + case LANG_IGBO: + switch (sub) + { + case SUBLANG_IGBO_NIGERIA: return "ig_NG"; + } + return "ig"; + case LANG_INDONESIAN: + switch (sub) + { + case SUBLANG_INDONESIAN_INDONESIA: return "id_ID"; + } + return "id"; + case LANG_INUKTITUT: + switch (sub) + { + case 0x1e: return "iu"; /* syllabic */ + case SUBLANG_INUKTITUT_CANADA: return "iu_CA"; /* syllabic */ + case 0x1f: return "iu@latin"; + case SUBLANG_INUKTITUT_CANADA_LATIN: return "iu_CA@latin"; + } + return "iu"; + case LANG_ITALIAN: + switch (sub) + { + case SUBLANG_ITALIAN: return "it_IT"; + case SUBLANG_ITALIAN_SWISS: return "it_CH"; + } + return "it"; + case LANG_JAPANESE: + switch (sub) + { + case SUBLANG_JAPANESE_JAPAN: return "ja_JP"; + } + return "ja"; + case LANG_KANNADA: + switch (sub) + { + case SUBLANG_KANNADA_INDIA: return "kn_IN"; + } + return "kn"; + case LANG_KANURI: + switch (sub) + { + case SUBLANG_DEFAULT: return "kr_NG"; + } + return "kr"; + case LANG_KASHMIRI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ks_PK"; + case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; + } + return "ks"; + case LANG_KAZAK: + switch (sub) + { + case SUBLANG_KAZAK_KAZAKHSTAN: return "kk_KZ"; + } + return "kk"; + case LANG_KICHE: + /* FIXME: Adjust this when such locales appear on Unix. */ + switch (sub) + { + case SUBLANG_KICHE_GUATEMALA: return "qut_GT"; + } + return "qut"; + case LANG_KINYARWANDA: + switch (sub) + { + case SUBLANG_KINYARWANDA_RWANDA: return "rw_RW"; + } + return "rw"; + case LANG_KONKANI: + /* FIXME: Adjust this when such locales appear on Unix. */ + switch (sub) + { + case SUBLANG_KONKANI_INDIA: return "kok_IN"; + } + return "kok"; + case LANG_KOREAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "ko_KR"; + } + return "ko"; + case LANG_KYRGYZ: + switch (sub) + { + case SUBLANG_KYRGYZ_KYRGYZSTAN: return "ky_KG"; + } + return "ky"; + case LANG_LAO: + switch (sub) + { + case SUBLANG_LAO_LAOS: return "lo_LA"; + } + return "lo"; + case LANG_LATIN: + switch (sub) + { + case SUBLANG_DEFAULT: return "la_VA"; + } + return "la"; + case LANG_LATVIAN: + switch (sub) + { + case SUBLANG_LATVIAN_LATVIA: return "lv_LV"; + } + return "lv"; + case LANG_LITHUANIAN: + switch (sub) + { + case SUBLANG_LITHUANIAN_LITHUANIA: return "lt_LT"; + } + return "lt"; + case LANG_LUXEMBOURGISH: + switch (sub) + { + case SUBLANG_LUXEMBOURGISH_LUXEMBOURG: return "lb_LU"; + } + return "lb"; + case LANG_MACEDONIAN: + switch (sub) + { + case SUBLANG_MACEDONIAN_MACEDONIA: return "mk_MK"; + } + return "mk"; + case LANG_MALAY: + switch (sub) + { + case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; + case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; + } + return "ms"; + case LANG_MALAYALAM: + switch (sub) + { + case SUBLANG_MALAYALAM_INDIA: return "ml_IN"; + } + return "ml"; + case LANG_MALTESE: + switch (sub) + { + case SUBLANG_MALTESE_MALTA: return "mt_MT"; + } + return "mt"; + case LANG_MANIPURI: + /* FIXME: Adjust this when such locales appear on Unix. */ + switch (sub) + { + case SUBLANG_DEFAULT: return "mni_IN"; + } + return "mni"; + case LANG_MAORI: + switch (sub) + { + case SUBLANG_MAORI_NEW_ZEALAND: return "mi_NZ"; + } + return "mi"; + case LANG_MAPUDUNGUN: + switch (sub) + { + case SUBLANG_MAPUDUNGUN_CHILE: return "arn_CL"; + } + return "arn"; + case LANG_MARATHI: + switch (sub) + { + case SUBLANG_MARATHI_INDIA: return "mr_IN"; + } + return "mr"; + case LANG_MOHAWK: + switch (sub) + { + case SUBLANG_MOHAWK_CANADA: return "moh_CA"; + } + return "moh"; + case LANG_MONGOLIAN: + switch (sub) + { + case SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA: case 0x1e: return "mn_MN"; + case SUBLANG_MONGOLIAN_PRC: case 0x1f: return "mn_CN"; + } + return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ + case LANG_NEPALI: + switch (sub) + { + case SUBLANG_NEPALI_NEPAL: return "ne_NP"; + case SUBLANG_NEPALI_INDIA: return "ne_IN"; + } + return "ne"; + case LANG_NORWEGIAN: + switch (sub) + { + case 0x1f: return "nb"; + case SUBLANG_NORWEGIAN_BOKMAL: return "nb_NO"; + case 0x1e: return "nn"; + case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; + } + return "no"; + case LANG_OCCITAN: + switch (sub) + { + case SUBLANG_OCCITAN_FRANCE: return "oc_FR"; + } + return "oc"; + case LANG_ORIYA: + switch (sub) + { + case SUBLANG_ORIYA_INDIA: return "or_IN"; + } + return "or"; + case LANG_OROMO: + switch (sub) + { + case SUBLANG_DEFAULT: return "om_ET"; + } + return "om"; + case LANG_PAPIAMENTU: + switch (sub) + { + case SUBLANG_DEFAULT: return "pap_AN"; + } + return "pap"; + case LANG_PASHTO: + switch (sub) + { + case SUBLANG_PASHTO_AFGHANISTAN: return "ps_AF"; + } + return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ + case LANG_POLISH: + switch (sub) + { + case SUBLANG_POLISH_POLAND: return "pl_PL"; + } + return "pl"; + case LANG_PORTUGUESE: + switch (sub) + { + /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. + Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ + case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; + case SUBLANG_PORTUGUESE: return "pt_PT"; + } + return "pt"; + case LANG_PUNJABI: + switch (sub) + { + case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */ + case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */ + } + return "pa"; + case LANG_QUECHUA: + /* Note: Microsoft uses the non-ISO language code "quz". */ + switch (sub) + { + case SUBLANG_QUECHUA_BOLIVIA: return "qu_BO"; + case SUBLANG_QUECHUA_ECUADOR: return "qu_EC"; + case SUBLANG_QUECHUA_PERU: return "qu_PE"; + } + return "qu"; + case LANG_ROMANIAN: + switch (sub) + { + case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO"; + case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD"; + } + return "ro"; + case LANG_ROMANSH: + switch (sub) + { + case SUBLANG_ROMANSH_SWITZERLAND: return "rm_CH"; + } + return "rm"; + case LANG_RUSSIAN: + switch (sub) + { + case SUBLANG_RUSSIAN_RUSSIA: return "ru_RU"; + case SUBLANG_RUSSIAN_MOLDAVIA: return "ru_MD"; + } + return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */ + case LANG_SAMI: + switch (sub) + { + /* Northern Sami */ + case 0x00: return "se"; + case SUBLANG_SAMI_NORTHERN_NORWAY: return "se_NO"; + case SUBLANG_SAMI_NORTHERN_SWEDEN: return "se_SE"; + case SUBLANG_SAMI_NORTHERN_FINLAND: return "se_FI"; + /* Lule Sami */ + case 0x1f: return "smj"; + case SUBLANG_SAMI_LULE_NORWAY: return "smj_NO"; + case SUBLANG_SAMI_LULE_SWEDEN: return "smj_SE"; + /* Southern Sami */ + case 0x1e: return "sma"; + case SUBLANG_SAMI_SOUTHERN_NORWAY: return "sma_NO"; + case SUBLANG_SAMI_SOUTHERN_SWEDEN: return "sma_SE"; + /* Skolt Sami */ + case 0x1d: return "sms"; + case SUBLANG_SAMI_SKOLT_FINLAND: return "sms_FI"; + /* Inari Sami */ + case 0x1c: return "smn"; + case SUBLANG_SAMI_INARI_FINLAND: return "smn_FI"; + } + return "se"; /* or "smi"? */ + case LANG_SANSKRIT: + switch (sub) + { + case SUBLANG_SANSKRIT_INDIA: return "sa_IN"; + } + return "sa"; + case LANG_SCOTTISH_GAELIC: + switch (sub) + { + case SUBLANG_DEFAULT: return "gd_GB"; + } + return "gd"; + case LANG_SINDHI: + switch (sub) + { + case SUBLANG_SINDHI_INDIA: return "sd_IN"; + case SUBLANG_SINDHI_PAKISTAN: return "sd_PK"; + /*case SUBLANG_SINDHI_AFGHANISTAN: return "sd_AF";*/ + } + return "sd"; + case LANG_SINHALESE: + switch (sub) + { + case SUBLANG_SINHALESE_SRI_LANKA: return "si_LK"; + } + return "si"; + case LANG_SLOVAK: + switch (sub) + { + case SUBLANG_SLOVAK_SLOVAKIA: return "sk_SK"; + } + return "sk"; + case LANG_SLOVENIAN: + switch (sub) + { + case SUBLANG_SLOVENIAN_SLOVENIA: return "sl_SI"; + } + return "sl"; + case LANG_SOMALI: + switch (sub) + { + case SUBLANG_DEFAULT: return "so_SO"; + } + return "so"; + case LANG_SORBIAN: + /* FIXME: Adjust this when such locales appear on Unix. */ + switch (sub) + { + /* Upper Sorbian */ + case 0x00: return "hsb"; + case SUBLANG_UPPER_SORBIAN_GERMANY: return "hsb_DE"; + /* Lower Sorbian */ + case 0x1f: return "dsb"; + case SUBLANG_LOWER_SORBIAN_GERMANY: return "dsb_DE"; + } + return "wen"; + case LANG_SOTHO: + /* calls + it "Sepedi"; according to + + + it's the same as Northern Sotho. */ + switch (sub) + { + case SUBLANG_SOTHO_SOUTH_AFRICA: return "nso_ZA"; + } + return "nso"; + case LANG_SPANISH: + switch (sub) + { + case SUBLANG_SPANISH: return "es_ES"; + case SUBLANG_SPANISH_MEXICAN: return "es_MX"; + case SUBLANG_SPANISH_MODERN: + return "es_ES@modern"; /* not seen on Unix */ + case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; + case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; + case SUBLANG_SPANISH_PANAMA: return "es_PA"; + case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; + case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; + case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; + case SUBLANG_SPANISH_PERU: return "es_PE"; + case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; + case SUBLANG_SPANISH_ECUADOR: return "es_EC"; + case SUBLANG_SPANISH_CHILE: return "es_CL"; + case SUBLANG_SPANISH_URUGUAY: return "es_UY"; + case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; + case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; + case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; + case SUBLANG_SPANISH_HONDURAS: return "es_HN"; + case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; + case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; + case SUBLANG_SPANISH_US: return "es_US"; + } + return "es"; + case LANG_SUTU: + switch (sub) + { + case SUBLANG_DEFAULT: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */ + } + return "bnt"; + case LANG_SWAHILI: + switch (sub) + { + case SUBLANG_SWAHILI_KENYA: return "sw_KE"; + } + return "sw"; + case LANG_SWEDISH: + switch (sub) + { + case SUBLANG_SWEDISH_SWEDEN: return "sv_SE"; + case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; + } + return "sv"; + case LANG_SYRIAC: + switch (sub) + { + case SUBLANG_SYRIAC_SYRIA: return "syr_SY"; /* An extinct language. */ + } + return "syr"; + case LANG_TAGALOG: + switch (sub) + { + case SUBLANG_TAGALOG_PHILIPPINES: return "tl_PH"; /* or "fil_PH"? */ + } + return "tl"; /* or "fil"? */ + case LANG_TAJIK: + switch (sub) + { + case 0x1f: return "tg"; + case SUBLANG_TAJIK_TAJIKISTAN: return "tg_TJ"; + } + return "tg"; + case LANG_TAMAZIGHT: + /* Note: Microsoft uses the non-ISO language code "tmz". */ + switch (sub) + { + /* FIXME: Adjust this when Tamazight locales appear on Unix. */ + case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic"; + case 0x1f: return "ber@latin"; + case SUBLANG_TAMAZIGHT_ALGERIA_LATIN: return "ber_DZ@latin"; + } + return "ber"; + case LANG_TAMIL: + switch (sub) + { + case SUBLANG_TAMIL_INDIA: return "ta_IN"; + } + return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ + case LANG_TATAR: + switch (sub) + { + case SUBLANG_TATAR_RUSSIA: return "tt_RU"; + } + return "tt"; + case LANG_TELUGU: + switch (sub) + { + case SUBLANG_TELUGU_INDIA: return "te_IN"; + } + return "te"; + case LANG_THAI: + switch (sub) + { + case SUBLANG_THAI_THAILAND: return "th_TH"; + } + return "th"; + case LANG_TIBETAN: + switch (sub) + { + case SUBLANG_TIBETAN_PRC: + /* Most Tibetans would not like "bo_CN". But Tibet does not yet + have a country code of its own. */ + return "bo"; + case SUBLANG_TIBETAN_BHUTAN: return "bo_BT"; + } + return "bo"; + case LANG_TIGRINYA: + switch (sub) + { + case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET"; + case SUBLANG_TIGRINYA_ERITREA: return "ti_ER"; + } + return "ti"; + case LANG_TSONGA: + switch (sub) + { + case SUBLANG_DEFAULT: return "ts_ZA"; + } + return "ts"; + case LANG_TSWANA: + /* Spoken in South Africa, Botswana. */ + switch (sub) + { + case SUBLANG_TSWANA_SOUTH_AFRICA: return "tn_ZA"; + } + return "tn"; + case LANG_TURKISH: + switch (sub) + { + case SUBLANG_TURKISH_TURKEY: return "tr_TR"; + } + return "tr"; + case LANG_TURKMEN: + switch (sub) + { + case SUBLANG_TURKMEN_TURKMENISTAN: return "tk_TM"; + } + return "tk"; + case LANG_UIGHUR: + switch (sub) + { + case SUBLANG_UIGHUR_PRC: return "ug_CN"; + } + return "ug"; + case LANG_UKRAINIAN: + switch (sub) + { + case SUBLANG_UKRAINIAN_UKRAINE: return "uk_UA"; + } + return "uk"; + case LANG_URDU: + switch (sub) + { + case SUBLANG_URDU_PAKISTAN: return "ur_PK"; + case SUBLANG_URDU_INDIA: return "ur_IN"; + } + return "ur"; + case LANG_UZBEK: + switch (sub) + { + case 0x1f: return "uz"; + case SUBLANG_UZBEK_LATIN: return "uz_UZ"; + case 0x1e: return "uz@cyrillic"; + case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; + } + return "uz"; + case LANG_VENDA: + switch (sub) + { + case SUBLANG_DEFAULT: return "ve_ZA"; + } + return "ve"; + case LANG_VIETNAMESE: + switch (sub) + { + case SUBLANG_VIETNAMESE_VIETNAM: return "vi_VN"; + } + return "vi"; + case LANG_WELSH: + switch (sub) + { + case SUBLANG_WELSH_UNITED_KINGDOM: return "cy_GB"; + } + return "cy"; + case LANG_WOLOF: + switch (sub) + { + case SUBLANG_WOLOF_SENEGAL: return "wo_SN"; + } + return "wo"; + case LANG_XHOSA: + switch (sub) + { + case SUBLANG_XHOSA_SOUTH_AFRICA: return "xh_ZA"; + } + return "xh"; + case LANG_YAKUT: + switch (sub) + { + case SUBLANG_YAKUT_RUSSIA: return "sah_RU"; + } + return "sah"; + case LANG_YI: + switch (sub) + { + case SUBLANG_YI_PRC: return "ii_CN"; + } + return "ii"; + case LANG_YIDDISH: + switch (sub) + { + case SUBLANG_DEFAULT: return "yi_IL"; + } + return "yi"; + case LANG_YORUBA: + switch (sub) + { + case SUBLANG_YORUBA_NIGERIA: return "yo_NG"; + } + return "yo"; + case LANG_ZULU: + switch (sub) + { + case SUBLANG_ZULU_SOUTH_AFRICA: return "zu_ZA"; + } + return "zu"; + default: return "C"; + } + } +} + +# if !defined IN_LIBINTL +static +# endif +const char * +gl_locale_name_from_win32_LCID (LCID lcid) +{ + LANGID langid; + + /* Strip off the sorting rules, keep only the language part. */ + langid = LANGIDFROMLCID (lcid); + + return gl_locale_name_from_win32_LANGID (langid); +} + +#endif + + +#if HAVE_USELOCALE /* glibc or MacOS X */ + +/* Simple hash set of strings. We don't want to drag in lots of hash table + code here. */ + +# define SIZE_BITS (sizeof (size_t) * CHAR_BIT) + +/* A hash function for NUL-terminated char* strings using + the method described by Bruno Haible. + See http://www.haible.de/bruno/hashfunc.html. */ +static size_t +string_hash (const void *x) +{ + const char *s = (const char *) x; + size_t h = 0; + + for (; *s; s++) + h = *s + ((h << 9) | (h >> (SIZE_BITS - 9))); + + return h; +} + +/* A hash table of fixed size. Multiple threads can access it read-only + simultaneously, but only one thread can insert into it at the same time. */ + +/* A node in a hash bucket collision list. */ +struct hash_node + { + struct hash_node * volatile next; + char contents[100]; /* has variable size */ + }; + +# define HASH_TABLE_SIZE 257 +static struct hash_node * volatile struniq_hash_table[HASH_TABLE_SIZE] + /* = { NULL, ..., NULL } */; + +/* This lock protects the struniq_hash_table against multiple simultaneous + insertions. */ +gl_lock_define_initialized(static, struniq_lock) + +/* Store a copy of the given string in a string pool with indefinite extent. + Return a pointer to this copy. */ +static const char * +struniq (const char *string) +{ + size_t hashcode = string_hash (string); + size_t slot = hashcode % HASH_TABLE_SIZE; + size_t size; + struct hash_node *new_node; + struct hash_node *p; + for (p = struniq_hash_table[slot]; p != NULL; p = p->next) + if (strcmp (p->contents, string) == 0) + return p->contents; + size = strlen (string) + 1; + new_node = + (struct hash_node *) + malloc (offsetof (struct hash_node, contents[0]) + size); + if (new_node == NULL) + /* Out of memory. Return a statically allocated string. */ + return "C"; + memcpy (new_node->contents, string, size); + /* Lock while inserting new_node. */ + gl_lock_lock (struniq_lock); + /* Check whether another thread already added the string while we were + waiting on the lock. */ + for (p = struniq_hash_table[slot]; p != NULL; p = p->next) + if (strcmp (p->contents, string) == 0) + { + free (new_node); + new_node = p; + goto done; + } + /* Really insert new_node into the hash table. Fill new_node entirely first, + because other threads may be iterating over the linked list. */ + new_node->next = struniq_hash_table[slot]; + struniq_hash_table[slot] = new_node; + done: + /* Unlock after new_node is inserted. */ + gl_lock_unlock (struniq_lock); + return new_node->contents; +} + +#endif + + +#if defined IN_LIBINTL || HAVE_USELOCALE + +/* Like gl_locale_name_thread, except that the result is not in storage of + indefinite extent. */ +# if !defined IN_LIBINTL +static +# endif +const char * +gl_locale_name_thread_unsafe (int category, const char *categoryname) +{ +# if HAVE_USELOCALE + { + locale_t thread_locale = uselocale (NULL); + if (thread_locale != LC_GLOBAL_LOCALE) + { +# if __GLIBC__ >= 2 + /* Work around an incorrect definition of the _NL_LOCALE_NAME macro in + glibc < 2.12. + See . */ + const char *name = + nl_langinfo (_NL_ITEM ((category), _NL_ITEM_INDEX (-1))); + if (name[0] == '\0') + /* Fallback code for glibc < 2.4, which did not implement + nl_langinfo (_NL_LOCALE_NAME (category)). */ + name = thread_locale->__names[category]; + return name; +# endif +# if defined __APPLE__ && defined __MACH__ /* MacOS X */ + /* The locale name is found deep in an undocumented data structure. + Since it's stored in a buffer of size 32 and newlocale() rejects + locale names of length > 31, we can assume that it is NUL terminated + in this buffer. But we need to make a copy of the locale name, of + indefinite extent. */ + struct _xlocale_part1_v0 /* used in MacOS X 10.5 */ + { + int32_t __refcount; + void (*__free_extra)(void *); + __darwin_mbstate_t __mbs[10]; + int64_t __magic; + }; + struct _xlocale_part1_v1 /* used in MacOS X >= 10.6.0 */ + { + int32_t __refcount; + void (*__free_extra)(void *); + __darwin_mbstate_t __mbs[10]; + /*pthread_lock_t*/ int __lock; + int64_t __magic; + }; + struct _xlocale_part2 + { + int64_t __magic; + unsigned char __collate_load_error; + unsigned char __collate_substitute_nontrivial; + unsigned char _messages_using_locale; + unsigned char _monetary_using_locale; + unsigned char _numeric_using_locale; + unsigned char _time_using_locale; + unsigned char __mlocale_changed; + unsigned char __nlocale_changed; + unsigned char __numeric_fp_cvt; + struct __xlocale_st_collate *__lc_collate; + struct __xlocale_st_runelocale *__lc_ctype; + struct __xlocale_st_messages *__lc_messages; + struct __xlocale_st_monetary *__lc_monetary; + struct __xlocale_st_numeric *__lc_numeric; + struct _xlocale *__lc_numeric_loc; + struct __xlocale_st_time *__lc_time; + /* more */ + }; + struct __xlocale_st_collate + { + int32_t __refcount; + void (*__free_extra)(void *); + char __encoding[32]; + /* more */ + }; + struct __xlocale_st_runelocale + { + int32_t __refcount; + void (*__free_extra)(void *); + char __ctype_encoding[32]; + /* more */ + }; + struct __xlocale_st_messages + { + int32_t __refcount; + void (*__free_extra)(void *); + char *_messages_locale_buf; + /* more */ + }; + struct __xlocale_st_monetary + { + int32_t __refcount; + void (*__free_extra)(void *); + char *_monetary_locale_buf; + /* more */ + }; + struct __xlocale_st_numeric { + int32_t __refcount; + void (*__free_extra)(void *); + char *_numeric_locale_buf; + /* more */ + }; + struct __xlocale_st_time { + int32_t __refcount; + void (*__free_extra)(void *); + char *_time_locale_buf; + /* more */ + }; + struct _xlocale_part2 *tlp; + if (((struct _xlocale_part1_v0 *) thread_locale)->__magic + == 0x786C6F63616C6530LL) + /* MacOS X 10.5 */ + tlp = + (struct _xlocale_part2 *) + &((struct _xlocale_part1_v0 *) thread_locale)->__magic; + else if (((struct _xlocale_part1_v1 *) thread_locale)->__magic + == 0x786C6F63616C6530LL) + /* MacOS X >= 10.6.0 */ + tlp = + (struct _xlocale_part2 *) + &((struct _xlocale_part1_v1 *) thread_locale)->__magic; + else + /* Unsupported version of MacOS X: The internals of 'struct _xlocale' + have changed again. */ + return ""; + switch (category) + { + case LC_CTYPE: + return tlp->__lc_ctype->__ctype_encoding; + case LC_NUMERIC: + return tlp->_numeric_using_locale + ? tlp->__lc_numeric->_numeric_locale_buf + : "C"; + case LC_TIME: + return tlp->_time_using_locale + ? tlp->__lc_time->_time_locale_buf + : "C"; + case LC_COLLATE: + return !tlp->__collate_load_error + ? tlp->__lc_collate->__encoding + : "C"; + case LC_MONETARY: + return tlp->_monetary_using_locale + ? tlp->__lc_monetary->_monetary_locale_buf + : "C"; + case LC_MESSAGES: + return tlp->_messages_using_locale + ? tlp->__lc_messages->_messages_locale_buf + : "C"; + default: /* We shouldn't get here. */ + return ""; + } +# endif + } + } +# endif + return NULL; +} + +#endif + +const char * +gl_locale_name_thread (int category, const char *categoryname) +{ +#if HAVE_USELOCALE + const char *name = gl_locale_name_thread_unsafe (category, categoryname); + if (name != NULL) + return struniq (name); +#endif + return NULL; +} + +/* XPG3 defines the result of 'setlocale (category, NULL)' as: + "Directs 'setlocale()' to query 'category' and return the current + setting of 'local'." + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GLIBC__ && __GLIBC__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +const char * +gl_locale_name_posix (int category, const char *categoryname) +{ + /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. + On some systems this can be done by the 'setlocale' function itself. */ +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + /* On other systems we ignore what setlocale reports and instead look at the + environment variables directly. This is necessary + 1. on systems which have a facility for customizing the default locale + (MacOS X, native Windows, Cygwin) and where the system's setlocale() + function ignores this default locale (MacOS X, Cygwin), in two cases: + a. when the user missed to use the setlocale() override from libintl + (for example by not including ), + b. when setlocale supports only the "C" locale, such as on Cygwin + 1.5.x. In this case even the override from libintl cannot help. + 2. on all systems where setlocale supports only the "C" locale. */ + /* Strictly speaking, it is a POSIX violation to look at the environment + variables regardless whether setlocale has been called or not. POSIX + says: + "For C-language programs, the POSIX locale shall be the + default locale when the setlocale() function is not called." + But we assume that all programs that use internationalized APIs call + setlocale (LC_ALL, ""). */ + return gl_locale_name_environ (category, categoryname); +#endif +} + +const char * +gl_locale_name_environ (int category, const char *categoryname) +{ + const char *retval; + + /* Setting of LC_ALL overrides all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + { +#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE + /* MacOS X 10.2 or newer. + Ignore invalid LANG value set by the Terminal application. */ + if (strcmp (retval, "UTF-8") != 0) +#endif +#if defined __CYGWIN__ + /* Cygwin. + Ignore dummy LANG value set by ~/.profile. */ + if (strcmp (retval, "C.UTF-8") != 0) +#endif + return retval; + } + + return NULL; +} + +const char * +gl_locale_name_default (void) +{ + /* POSIX:2001 says: + "All implementations shall define a locale as the default locale, to be + invoked when no environment variables are set, or set to the empty + string. This default locale can be the POSIX locale or any other + implementation-defined locale. Some implementations may provide + facilities for local installation administrators to set the default + locale, customizing it for each location. POSIX:2001 does not require + such a facility. + + The systems with such a facility are MacOS X and Windows: They provide a + GUI that allows the user to choose a locale. + - On MacOS X, by default, none of LC_* or LANG are set. Starting with + MacOS X 10.4 or 10.5, LANG is set for processes launched by the + 'Terminal' application (but sometimes to an incorrect value "UTF-8"). + When no environment variable is set, setlocale (LC_ALL, "") uses the + "C" locale. + - On native Windows, by default, none of LC_* or LANG are set. + When no environment variable is set, setlocale (LC_ALL, "") uses the + locale chosen by the user. + - On Cygwin 1.5.x, by default, none of LC_* or LANG are set. + When no environment variable is set, setlocale (LC_ALL, "") uses the + "C" locale. + - On Cygwin 1.7, by default, LANG is set to "C.UTF-8" when the default + ~/.profile is executed. + When no environment variable is set, setlocale (LC_ALL, "") uses the + "C.UTF-8" locale, which operates in the same way as the "C" locale. + */ + +#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined WIN32_NATIVE || defined __CYGWIN__) + + /* The system does not have a way of setting the locale, other than the + POSIX specified environment variables. We use C as default locale. */ + return "C"; + +#else + + /* Return an XPG style locale name language[_territory][@modifier]. + Don't even bother determining the codeset; it's not useful in this + context, because message catalogs are not specific to a single + codeset. */ + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE + /* MacOS X 10.2 or newer */ + { + /* Cache the locale name, since CoreFoundation calls are expensive. */ + static const char *cached_localename; + + if (cached_localename == NULL) + { + char namebuf[256]; +# if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */ + CFLocaleRef locale = CFLocaleCopyCurrent (); + CFStringRef name = CFLocaleGetIdentifier (locale); + + if (CFStringGetCString (name, namebuf, sizeof (namebuf), + kCFStringEncodingASCII)) + { + gl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } + CFRelease (locale); +# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + CFTypeRef value = + CFPreferencesCopyAppValue (CFSTR ("AppleLocale"), + kCFPreferencesCurrentApplication); + if (value != NULL + && CFGetTypeID (value) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)value, + namebuf, sizeof (namebuf), + kCFStringEncodingASCII)) + { + gl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } +# endif + if (cached_localename == NULL) + cached_localename = "C"; + } + return cached_localename; + } + +# endif + +# if defined WIN32_NATIVE || defined __CYGWIN__ /* WIN32 or Cygwin */ + { + LCID lcid; + + /* Use native Win32 API locale ID. */ + lcid = GetThreadLocale (); + + return gl_locale_name_from_win32_LCID (lcid); + } +# endif +#endif +} + +/* Determine the current locale's name, and canonicalize it into XPG syntax + language[_territory][.codeset][@modifier] + The codeset part in the result is not reliable; the locale_charset() + should be used for codeset information instead. + The result must not be freed; it is statically allocated. */ + +const char * +gl_locale_name (int category, const char *categoryname) +{ + const char *retval; + + retval = gl_locale_name_thread (category, categoryname); + if (retval != NULL) + return retval; + + retval = gl_locale_name_posix (category, categoryname); + if (retval != NULL) + return retval; + + return gl_locale_name_default (); +} diff --git a/libmednahawk/intl/lock.c b/libmednahawk/intl/lock.c new file mode 100644 index 0000000000..19e3c39387 --- /dev/null +++ b/libmednahawk/intl/lock.c @@ -0,0 +1,1059 @@ +/* Locking in multithreaded situations. + Copyright (C) 2005-2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +#include + +#include "lock.h" + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +# if HAVE_PTHREAD_RWLOCK + +# if !defined PTHREAD_RWLOCK_INITIALIZER + +int +glthread_rwlock_init_multithreaded (gl_rwlock_t *lock) +{ + int err; + + err = pthread_rwlock_init (&lock->rwlock, NULL); + if (err != 0) + return err; + lock->initialized = 1; + return 0; +} + +int +glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock) +{ + if (!lock->initialized) + { + int err; + + err = pthread_mutex_lock (&lock->guard); + if (err != 0) + return err; + if (!lock->initialized) + { + err = glthread_rwlock_init_multithreaded (lock); + if (err != 0) + { + pthread_mutex_unlock (&lock->guard); + return err; + } + } + err = pthread_mutex_unlock (&lock->guard); + if (err != 0) + return err; + } + return pthread_rwlock_rdlock (&lock->rwlock); +} + +int +glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock) +{ + if (!lock->initialized) + { + int err; + + err = pthread_mutex_lock (&lock->guard); + if (err != 0) + return err; + if (!lock->initialized) + { + err = glthread_rwlock_init_multithreaded (lock); + if (err != 0) + { + pthread_mutex_unlock (&lock->guard); + return err; + } + } + err = pthread_mutex_unlock (&lock->guard); + if (err != 0) + return err; + } + return pthread_rwlock_wrlock (&lock->rwlock); +} + +int +glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock) +{ + if (!lock->initialized) + return EINVAL; + return pthread_rwlock_unlock (&lock->rwlock); +} + +int +glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock) +{ + int err; + + if (!lock->initialized) + return EINVAL; + err = pthread_rwlock_destroy (&lock->rwlock); + if (err != 0) + return err; + lock->initialized = 0; + return 0; +} + +# endif + +# else + +int +glthread_rwlock_init_multithreaded (gl_rwlock_t *lock) +{ + int err; + + err = pthread_mutex_init (&lock->lock, NULL); + if (err != 0) + return err; + err = pthread_cond_init (&lock->waiting_readers, NULL); + if (err != 0) + return err; + err = pthread_cond_init (&lock->waiting_writers, NULL); + if (err != 0) + return err; + lock->waiting_writers_count = 0; + lock->runcount = 0; + return 0; +} + +int +glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock) +{ + int err; + + err = pthread_mutex_lock (&lock->lock); + if (err != 0) + return err; + /* Test whether only readers are currently running, and whether the runcount + field will not overflow. */ + /* POSIX says: "It is implementation-defined whether the calling thread + acquires the lock when a writer does not hold the lock and there are + writers blocked on the lock." Let's say, no: give the writers a higher + priority. */ + while (!(lock->runcount + 1 > 0 && lock->waiting_writers_count == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_readers. */ + err = pthread_cond_wait (&lock->waiting_readers, &lock->lock); + if (err != 0) + { + pthread_mutex_unlock (&lock->lock); + return err; + } + } + lock->runcount++; + return pthread_mutex_unlock (&lock->lock); +} + +int +glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock) +{ + int err; + + err = pthread_mutex_lock (&lock->lock); + if (err != 0) + return err; + /* Test whether no readers or writers are currently running. */ + while (!(lock->runcount == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_writers. */ + lock->waiting_writers_count++; + err = pthread_cond_wait (&lock->waiting_writers, &lock->lock); + if (err != 0) + { + lock->waiting_writers_count--; + pthread_mutex_unlock (&lock->lock); + return err; + } + lock->waiting_writers_count--; + } + lock->runcount--; /* runcount becomes -1 */ + return pthread_mutex_unlock (&lock->lock); +} + +int +glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock) +{ + int err; + + err = pthread_mutex_lock (&lock->lock); + if (err != 0) + return err; + if (lock->runcount < 0) + { + /* Drop a writer lock. */ + if (!(lock->runcount == -1)) + { + pthread_mutex_unlock (&lock->lock); + return EINVAL; + } + lock->runcount = 0; + } + else + { + /* Drop a reader lock. */ + if (!(lock->runcount > 0)) + { + pthread_mutex_unlock (&lock->lock); + return EINVAL; + } + lock->runcount--; + } + if (lock->runcount == 0) + { + /* POSIX recommends that "write locks shall take precedence over read + locks", to avoid "writer starvation". */ + if (lock->waiting_writers_count > 0) + { + /* Wake up one of the waiting writers. */ + err = pthread_cond_signal (&lock->waiting_writers); + if (err != 0) + { + pthread_mutex_unlock (&lock->lock); + return err; + } + } + else + { + /* Wake up all waiting readers. */ + err = pthread_cond_broadcast (&lock->waiting_readers); + if (err != 0) + { + pthread_mutex_unlock (&lock->lock); + return err; + } + } + } + return pthread_mutex_unlock (&lock->lock); +} + +int +glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock) +{ + int err; + + err = pthread_mutex_destroy (&lock->lock); + if (err != 0) + return err; + err = pthread_cond_destroy (&lock->waiting_readers); + if (err != 0) + return err; + err = pthread_cond_destroy (&lock->waiting_writers); + if (err != 0) + return err; + return 0; +} + +# endif + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +# if HAVE_PTHREAD_MUTEX_RECURSIVE + +# if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + +int +glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock) +{ + pthread_mutexattr_t attributes; + int err; + + err = pthread_mutexattr_init (&attributes); + if (err != 0) + return err; + err = pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE); + if (err != 0) + { + pthread_mutexattr_destroy (&attributes); + return err; + } + err = pthread_mutex_init (lock, &attributes); + if (err != 0) + { + pthread_mutexattr_destroy (&attributes); + return err; + } + err = pthread_mutexattr_destroy (&attributes); + if (err != 0) + return err; + return 0; +} + +# else + +int +glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock) +{ + pthread_mutexattr_t attributes; + int err; + + err = pthread_mutexattr_init (&attributes); + if (err != 0) + return err; + err = pthread_mutexattr_settype (&attributes, PTHREAD_MUTEX_RECURSIVE); + if (err != 0) + { + pthread_mutexattr_destroy (&attributes); + return err; + } + err = pthread_mutex_init (&lock->recmutex, &attributes); + if (err != 0) + { + pthread_mutexattr_destroy (&attributes); + return err; + } + err = pthread_mutexattr_destroy (&attributes); + if (err != 0) + return err; + lock->initialized = 1; + return 0; +} + +int +glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + { + int err; + + err = pthread_mutex_lock (&lock->guard); + if (err != 0) + return err; + if (!lock->initialized) + { + err = glthread_recursive_lock_init_multithreaded (lock); + if (err != 0) + { + pthread_mutex_unlock (&lock->guard); + return err; + } + } + err = pthread_mutex_unlock (&lock->guard); + if (err != 0) + return err; + } + return pthread_mutex_lock (&lock->recmutex); +} + +int +glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock) +{ + if (!lock->initialized) + return EINVAL; + return pthread_mutex_unlock (&lock->recmutex); +} + +int +glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock) +{ + int err; + + if (!lock->initialized) + return EINVAL; + err = pthread_mutex_destroy (&lock->recmutex); + if (err != 0) + return err; + lock->initialized = 0; + return 0; +} + +# endif + +# else + +int +glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock) +{ + int err; + + err = pthread_mutex_init (&lock->mutex, NULL); + if (err != 0) + return err; + lock->owner = (pthread_t) 0; + lock->depth = 0; + return 0; +} + +int +glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock) +{ + pthread_t self = pthread_self (); + if (lock->owner != self) + { + int err; + + err = pthread_mutex_lock (&lock->mutex); + if (err != 0) + return err; + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + { + lock->depth--; + return EAGAIN; + } + return 0; +} + +int +glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock) +{ + if (lock->owner != pthread_self ()) + return EPERM; + if (lock->depth == 0) + return EINVAL; + if (--(lock->depth) == 0) + { + lock->owner = (pthread_t) 0; + return pthread_mutex_unlock (&lock->mutex); + } + else + return 0; +} + +int +glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock) +{ + if (lock->owner != (pthread_t) 0) + return EBUSY; + return pthread_mutex_destroy (&lock->mutex); +} + +# endif + +/* -------------------------- gl_once_t datatype -------------------------- */ + +static const pthread_once_t fresh_once = PTHREAD_ONCE_INIT; + +int +glthread_once_singlethreaded (pthread_once_t *once_control) +{ + /* We don't know whether pthread_once_t is an integer type, a floating-point + type, a pointer type, or a structure type. */ + char *firstbyte = (char *)once_control; + if (*firstbyte == *(const char *)&fresh_once) + { + /* First time use of once_control. Invert the first byte. */ + *firstbyte = ~ *(const char *)&fresh_once; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* -------------------------- gl_once_t datatype -------------------------- */ + +static void +glthread_once_call (void *arg) +{ + void (**gl_once_temp_addr) (void) = (void (**) (void)) arg; + void (*initfunction) (void) = *gl_once_temp_addr; + initfunction (); +} + +int +glthread_once_multithreaded (pth_once_t *once_control, void (*initfunction) (void)) +{ + void (*temp) (void) = initfunction; + return (!pth_once (once_control, glthread_once_call, &temp) ? errno : 0); +} + +int +glthread_once_singlethreaded (pth_once_t *once_control) +{ + /* We know that pth_once_t is an integer type. */ + if (*once_control == PTH_ONCE_INIT) + { + /* First time use of once_control. Invert the marker. */ + *once_control = ~ PTH_ONCE_INIT; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +int +glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock) +{ + int err; + + err = mutex_init (&lock->mutex, USYNC_THREAD, NULL); + if (err != 0) + return err; + lock->owner = (thread_t) 0; + lock->depth = 0; + return 0; +} + +int +glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock) +{ + thread_t self = thr_self (); + if (lock->owner != self) + { + int err; + + err = mutex_lock (&lock->mutex); + if (err != 0) + return err; + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + { + lock->depth--; + return EAGAIN; + } + return 0; +} + +int +glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock) +{ + if (lock->owner != thr_self ()) + return EPERM; + if (lock->depth == 0) + return EINVAL; + if (--(lock->depth) == 0) + { + lock->owner = (thread_t) 0; + return mutex_unlock (&lock->mutex); + } + else + return 0; +} + +int +glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock) +{ + if (lock->owner != (thread_t) 0) + return EBUSY; + return mutex_destroy (&lock->mutex); +} + +/* -------------------------- gl_once_t datatype -------------------------- */ + +int +glthread_once_multithreaded (gl_once_t *once_control, void (*initfunction) (void)) +{ + if (!once_control->inited) + { + int err; + + /* Use the mutex to guarantee that if another thread is already calling + the initfunction, this thread waits until it's finished. */ + err = mutex_lock (&once_control->mutex); + if (err != 0) + return err; + if (!once_control->inited) + { + once_control->inited = 1; + initfunction (); + } + return mutex_unlock (&once_control->mutex); + } + else + return 0; +} + +int +glthread_once_singlethreaded (gl_once_t *once_control) +{ + /* We know that gl_once_t contains an integer type. */ + if (!once_control->inited) + { + /* First time use of once_control. Invert the marker. */ + once_control->inited = ~ 0; + return 1; + } + else + return 0; +} + +#endif + +/* ========================================================================= */ + +#if USE_WIN32_THREADS + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +void +glthread_lock_init_func (gl_lock_t *lock) +{ + InitializeCriticalSection (&lock->lock); + lock->guard.done = 1; +} + +int +glthread_lock_lock_func (gl_lock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_lock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + return 0; +} + +int +glthread_lock_unlock_func (gl_lock_t *lock) +{ + if (!lock->guard.done) + return EINVAL; + LeaveCriticalSection (&lock->lock); + return 0; +} + +int +glthread_lock_destroy_func (gl_lock_t *lock) +{ + if (!lock->guard.done) + return EINVAL; + DeleteCriticalSection (&lock->lock); + lock->guard.done = 0; + return 0; +} + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* In this file, the waitqueues are implemented as circular arrays. */ +#define gl_waitqueue_t gl_carray_waitqueue_t + +static inline void +gl_waitqueue_init (gl_waitqueue_t *wq) +{ + wq->array = NULL; + wq->count = 0; + wq->alloc = 0; + wq->offset = 0; +} + +/* Enqueues the current thread, represented by an event, in a wait queue. + Returns INVALID_HANDLE_VALUE if an allocation failure occurs. */ +static HANDLE +gl_waitqueue_add (gl_waitqueue_t *wq) +{ + HANDLE event; + unsigned int index; + + if (wq->count == wq->alloc) + { + unsigned int new_alloc = 2 * wq->alloc + 1; + HANDLE *new_array = + (HANDLE *) realloc (wq->array, new_alloc * sizeof (HANDLE)); + if (new_array == NULL) + /* No more memory. */ + return INVALID_HANDLE_VALUE; + /* Now is a good opportunity to rotate the array so that its contents + starts at offset 0. */ + if (wq->offset > 0) + { + unsigned int old_count = wq->count; + unsigned int old_alloc = wq->alloc; + unsigned int old_offset = wq->offset; + unsigned int i; + if (old_offset + old_count > old_alloc) + { + unsigned int limit = old_offset + old_count - old_alloc; + for (i = 0; i < limit; i++) + new_array[old_alloc + i] = new_array[i]; + } + for (i = 0; i < old_count; i++) + new_array[i] = new_array[old_offset + i]; + wq->offset = 0; + } + wq->array = new_array; + wq->alloc = new_alloc; + } + /* Whether the created event is a manual-reset one or an auto-reset one, + does not matter, since we will wait on it only once. */ + event = CreateEvent (NULL, TRUE, FALSE, NULL); + if (event == INVALID_HANDLE_VALUE) + /* No way to allocate an event. */ + return INVALID_HANDLE_VALUE; + index = wq->offset + wq->count; + if (index >= wq->alloc) + index -= wq->alloc; + wq->array[index] = event; + wq->count++; + return event; +} + +/* Notifies the first thread from a wait queue and dequeues it. */ +static inline void +gl_waitqueue_notify_first (gl_waitqueue_t *wq) +{ + SetEvent (wq->array[wq->offset + 0]); + wq->offset++; + wq->count--; + if (wq->count == 0 || wq->offset == wq->alloc) + wq->offset = 0; +} + +/* Notifies all threads from a wait queue and dequeues them all. */ +static inline void +gl_waitqueue_notify_all (gl_waitqueue_t *wq) +{ + unsigned int i; + + for (i = 0; i < wq->count; i++) + { + unsigned int index = wq->offset + i; + if (index >= wq->alloc) + index -= wq->alloc; + SetEvent (wq->array[index]); + } + wq->count = 0; + wq->offset = 0; +} + +void +glthread_rwlock_init_func (gl_rwlock_t *lock) +{ + InitializeCriticalSection (&lock->lock); + gl_waitqueue_init (&lock->waiting_readers); + gl_waitqueue_init (&lock->waiting_writers); + lock->runcount = 0; + lock->guard.done = 1; +} + +int +glthread_rwlock_rdlock_func (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_rwlock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + /* Test whether only readers are currently running, and whether the runcount + field will not overflow. */ + if (!(lock->runcount + 1 > 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_readers. */ + HANDLE event = gl_waitqueue_add (&lock->waiting_readers); + if (event != INVALID_HANDLE_VALUE) + { + DWORD result; + LeaveCriticalSection (&lock->lock); + /* Wait until another thread signals this event. */ + result = WaitForSingleObject (event, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + abort (); + CloseHandle (event); + /* The thread which signalled the event already did the bookkeeping: + removed us from the waiting_readers, incremented lock->runcount. */ + if (!(lock->runcount > 0)) + abort (); + return 0; + } + else + { + /* Allocation failure. Weird. */ + do + { + LeaveCriticalSection (&lock->lock); + Sleep (1); + EnterCriticalSection (&lock->lock); + } + while (!(lock->runcount + 1 > 0)); + } + } + lock->runcount++; + LeaveCriticalSection (&lock->lock); + return 0; +} + +int +glthread_rwlock_wrlock_func (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_rwlock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + EnterCriticalSection (&lock->lock); + /* Test whether no readers or writers are currently running. */ + if (!(lock->runcount == 0)) + { + /* This thread has to wait for a while. Enqueue it among the + waiting_writers. */ + HANDLE event = gl_waitqueue_add (&lock->waiting_writers); + if (event != INVALID_HANDLE_VALUE) + { + DWORD result; + LeaveCriticalSection (&lock->lock); + /* Wait until another thread signals this event. */ + result = WaitForSingleObject (event, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + abort (); + CloseHandle (event); + /* The thread which signalled the event already did the bookkeeping: + removed us from the waiting_writers, set lock->runcount = -1. */ + if (!(lock->runcount == -1)) + abort (); + return 0; + } + else + { + /* Allocation failure. Weird. */ + do + { + LeaveCriticalSection (&lock->lock); + Sleep (1); + EnterCriticalSection (&lock->lock); + } + while (!(lock->runcount == 0)); + } + } + lock->runcount--; /* runcount becomes -1 */ + LeaveCriticalSection (&lock->lock); + return 0; +} + +int +glthread_rwlock_unlock_func (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + return EINVAL; + EnterCriticalSection (&lock->lock); + if (lock->runcount < 0) + { + /* Drop a writer lock. */ + if (!(lock->runcount == -1)) + abort (); + lock->runcount = 0; + } + else + { + /* Drop a reader lock. */ + if (!(lock->runcount > 0)) + { + LeaveCriticalSection (&lock->lock); + return EPERM; + } + lock->runcount--; + } + if (lock->runcount == 0) + { + /* POSIX recommends that "write locks shall take precedence over read + locks", to avoid "writer starvation". */ + if (lock->waiting_writers.count > 0) + { + /* Wake up one of the waiting writers. */ + lock->runcount--; + gl_waitqueue_notify_first (&lock->waiting_writers); + } + else + { + /* Wake up all waiting readers. */ + lock->runcount += lock->waiting_readers.count; + gl_waitqueue_notify_all (&lock->waiting_readers); + } + } + LeaveCriticalSection (&lock->lock); + return 0; +} + +int +glthread_rwlock_destroy_func (gl_rwlock_t *lock) +{ + if (!lock->guard.done) + return EINVAL; + if (lock->runcount != 0) + return EBUSY; + DeleteCriticalSection (&lock->lock); + if (lock->waiting_readers.array != NULL) + free (lock->waiting_readers.array); + if (lock->waiting_writers.array != NULL) + free (lock->waiting_writers.array); + lock->guard.done = 0; + return 0; +} + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +void +glthread_recursive_lock_init_func (gl_recursive_lock_t *lock) +{ + lock->owner = 0; + lock->depth = 0; + InitializeCriticalSection (&lock->lock); + lock->guard.done = 1; +} + +int +glthread_recursive_lock_lock_func (gl_recursive_lock_t *lock) +{ + if (!lock->guard.done) + { + if (InterlockedIncrement (&lock->guard.started) == 0) + /* This thread is the first one to need this lock. Initialize it. */ + glthread_recursive_lock_init (lock); + else + /* Yield the CPU while waiting for another thread to finish + initializing this lock. */ + while (!lock->guard.done) + Sleep (0); + } + { + DWORD self = GetCurrentThreadId (); + if (lock->owner != self) + { + EnterCriticalSection (&lock->lock); + lock->owner = self; + } + if (++(lock->depth) == 0) /* wraparound? */ + { + lock->depth--; + return EAGAIN; + } + } + return 0; +} + +int +glthread_recursive_lock_unlock_func (gl_recursive_lock_t *lock) +{ + if (lock->owner != GetCurrentThreadId ()) + return EPERM; + if (lock->depth == 0) + return EINVAL; + if (--(lock->depth) == 0) + { + lock->owner = 0; + LeaveCriticalSection (&lock->lock); + } + return 0; +} + +int +glthread_recursive_lock_destroy_func (gl_recursive_lock_t *lock) +{ + if (lock->owner != 0) + return EBUSY; + DeleteCriticalSection (&lock->lock); + lock->guard.done = 0; + return 0; +} + +/* -------------------------- gl_once_t datatype -------------------------- */ + +void +glthread_once_func (gl_once_t *once_control, void (*initfunction) (void)) +{ + if (once_control->inited <= 0) + { + if (InterlockedIncrement (&once_control->started) == 0) + { + /* This thread is the first one to come to this once_control. */ + InitializeCriticalSection (&once_control->lock); + EnterCriticalSection (&once_control->lock); + once_control->inited = 0; + initfunction (); + once_control->inited = 1; + LeaveCriticalSection (&once_control->lock); + } + else + { + /* Undo last operation. */ + InterlockedDecrement (&once_control->started); + /* Some other thread has already started the initialization. + Yield the CPU while waiting for the other thread to finish + initializing and taking the lock. */ + while (once_control->inited < 0) + Sleep (0); + if (once_control->inited <= 0) + { + /* Take the lock. This blocks until the other thread has + finished calling the initfunction. */ + EnterCriticalSection (&once_control->lock); + LeaveCriticalSection (&once_control->lock); + if (!(once_control->inited > 0)) + abort (); + } + } + } +} + +#endif + +/* ========================================================================= */ diff --git a/libmednahawk/intl/lock.h b/libmednahawk/intl/lock.h new file mode 100644 index 0000000000..a49f1c4c7a --- /dev/null +++ b/libmednahawk/intl/lock.h @@ -0,0 +1,928 @@ +/* Locking in multithreaded situations. + Copyright (C) 2005-2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. + Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-solaris.h, + gthr-win32.h. */ + +/* This file contains locking primitives for use with a given thread library. + It does not contain primitives for creating threads or for other + synchronization primitives. + + Normal (non-recursive) locks: + Type: gl_lock_t + Declaration: gl_lock_define(extern, name) + Initializer: gl_lock_define_initialized(, name) + Initialization: gl_lock_init (name); + Taking the lock: gl_lock_lock (name); + Releasing the lock: gl_lock_unlock (name); + De-initialization: gl_lock_destroy (name); + Equivalent functions with control of error handling: + Initialization: err = glthread_lock_init (&name); + Taking the lock: err = glthread_lock_lock (&name); + Releasing the lock: err = glthread_lock_unlock (&name); + De-initialization: err = glthread_lock_destroy (&name); + + Read-Write (non-recursive) locks: + Type: gl_rwlock_t + Declaration: gl_rwlock_define(extern, name) + Initializer: gl_rwlock_define_initialized(, name) + Initialization: gl_rwlock_init (name); + Taking the lock: gl_rwlock_rdlock (name); + gl_rwlock_wrlock (name); + Releasing the lock: gl_rwlock_unlock (name); + De-initialization: gl_rwlock_destroy (name); + Equivalent functions with control of error handling: + Initialization: err = glthread_rwlock_init (&name); + Taking the lock: err = glthread_rwlock_rdlock (&name); + err = glthread_rwlock_wrlock (&name); + Releasing the lock: err = glthread_rwlock_unlock (&name); + De-initialization: err = glthread_rwlock_destroy (&name); + + Recursive locks: + Type: gl_recursive_lock_t + Declaration: gl_recursive_lock_define(extern, name) + Initializer: gl_recursive_lock_define_initialized(, name) + Initialization: gl_recursive_lock_init (name); + Taking the lock: gl_recursive_lock_lock (name); + Releasing the lock: gl_recursive_lock_unlock (name); + De-initialization: gl_recursive_lock_destroy (name); + Equivalent functions with control of error handling: + Initialization: err = glthread_recursive_lock_init (&name); + Taking the lock: err = glthread_recursive_lock_lock (&name); + Releasing the lock: err = glthread_recursive_lock_unlock (&name); + De-initialization: err = glthread_recursive_lock_destroy (&name); + + Once-only execution: + Type: gl_once_t + Initializer: gl_once_define(extern, name) + Execution: gl_once (name, initfunction); + Equivalent functions with control of error handling: + Execution: err = glthread_once (&name, initfunction); +*/ + + +#ifndef _LOCK_H +#define _LOCK_H + +#include +#include + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The pthread_in_use() detection needs to be done at runtime. */ +# define pthread_in_use() \ + glthread_in_use () +extern int glthread_in_use (void); + +# endif + +# if USE_POSIX_THREADS_WEAK + +/* Use weak references to the POSIX threads library. */ + +/* Weak references avoid dragging in external libraries if the other parts + of the program don't use them. Here we use them, because we don't want + every program that uses libintl to depend on libpthread. This assumes + that libpthread would not be loaded after libintl; i.e. if libintl is + loaded first, by an executable that does not depend on libpthread, and + then a module is dynamically loaded that depends on libpthread, libintl + will not be multithread-safe. */ + +/* The way to test at runtime whether libpthread is present is to test + whether a function pointer's value, such as &pthread_mutex_init, is + non-NULL. However, some versions of GCC have a bug through which, in + PIC mode, &foo != NULL always evaluates to true if there is a direct + call to foo(...) in the same function. To avoid this, we test the + address of a function in libpthread that we don't use. */ + +# pragma weak pthread_mutex_init +# pragma weak pthread_mutex_lock +# pragma weak pthread_mutex_unlock +# pragma weak pthread_mutex_destroy +# pragma weak pthread_rwlock_init +# pragma weak pthread_rwlock_rdlock +# pragma weak pthread_rwlock_wrlock +# pragma weak pthread_rwlock_unlock +# pragma weak pthread_rwlock_destroy +# pragma weak pthread_once +# pragma weak pthread_cond_init +# pragma weak pthread_cond_wait +# pragma weak pthread_cond_signal +# pragma weak pthread_cond_broadcast +# pragma weak pthread_cond_destroy +# pragma weak pthread_mutexattr_init +# pragma weak pthread_mutexattr_settype +# pragma weak pthread_mutexattr_destroy +# ifndef pthread_self +# pragma weak pthread_self +# endif + +# if !PTHREAD_IN_USE_DETECTION_HARD +# pragma weak pthread_cancel +# define pthread_in_use() (pthread_cancel != NULL) +# endif + +# else + +# if !PTHREAD_IN_USE_DETECTION_HARD +# define pthread_in_use() 1 +# endif + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef pthread_mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + PTHREAD_MUTEX_INITIALIZER +# define glthread_lock_init(LOCK) \ + (pthread_in_use () ? pthread_mutex_init (LOCK, NULL) : 0) +# define glthread_lock_lock(LOCK) \ + (pthread_in_use () ? pthread_mutex_lock (LOCK) : 0) +# define glthread_lock_unlock(LOCK) \ + (pthread_in_use () ? pthread_mutex_unlock (LOCK) : 0) +# define glthread_lock_destroy(LOCK) \ + (pthread_in_use () ? pthread_mutex_destroy (LOCK) : 0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +# if HAVE_PTHREAD_RWLOCK + +# ifdef PTHREAD_RWLOCK_INITIALIZER + +typedef pthread_rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + PTHREAD_RWLOCK_INITIALIZER +# define glthread_rwlock_init(LOCK) \ + (pthread_in_use () ? pthread_rwlock_init (LOCK, NULL) : 0) +# define glthread_rwlock_rdlock(LOCK) \ + (pthread_in_use () ? pthread_rwlock_rdlock (LOCK) : 0) +# define glthread_rwlock_wrlock(LOCK) \ + (pthread_in_use () ? pthread_rwlock_wrlock (LOCK) : 0) +# define glthread_rwlock_unlock(LOCK) \ + (pthread_in_use () ? pthread_rwlock_unlock (LOCK) : 0) +# define glthread_rwlock_destroy(LOCK) \ + (pthread_in_use () ? pthread_rwlock_destroy (LOCK) : 0) + +# else + +typedef struct + { + int initialized; + pthread_mutex_t guard; /* protects the initialization */ + pthread_rwlock_t rwlock; /* read-write lock */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { 0, PTHREAD_MUTEX_INITIALIZER } +# define glthread_rwlock_init(LOCK) \ + (pthread_in_use () ? glthread_rwlock_init_multithreaded (LOCK) : 0) +# define glthread_rwlock_rdlock(LOCK) \ + (pthread_in_use () ? glthread_rwlock_rdlock_multithreaded (LOCK) : 0) +# define glthread_rwlock_wrlock(LOCK) \ + (pthread_in_use () ? glthread_rwlock_wrlock_multithreaded (LOCK) : 0) +# define glthread_rwlock_unlock(LOCK) \ + (pthread_in_use () ? glthread_rwlock_unlock_multithreaded (LOCK) : 0) +# define glthread_rwlock_destroy(LOCK) \ + (pthread_in_use () ? glthread_rwlock_destroy_multithreaded (LOCK) : 0) +extern int glthread_rwlock_init_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock); + +# endif + +# else + +typedef struct + { + pthread_mutex_t lock; /* protects the remaining fields */ + pthread_cond_t waiting_readers; /* waiting readers */ + pthread_cond_t waiting_writers; /* waiting writers */ + unsigned int waiting_writers_count; /* number of waiting writers */ + int runcount; /* number of readers running, or -1 when a writer runs */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, 0 } +# define glthread_rwlock_init(LOCK) \ + (pthread_in_use () ? glthread_rwlock_init_multithreaded (LOCK) : 0) +# define glthread_rwlock_rdlock(LOCK) \ + (pthread_in_use () ? glthread_rwlock_rdlock_multithreaded (LOCK) : 0) +# define glthread_rwlock_wrlock(LOCK) \ + (pthread_in_use () ? glthread_rwlock_wrlock_multithreaded (LOCK) : 0) +# define glthread_rwlock_unlock(LOCK) \ + (pthread_in_use () ? glthread_rwlock_unlock_multithreaded (LOCK) : 0) +# define glthread_rwlock_destroy(LOCK) \ + (pthread_in_use () ? glthread_rwlock_destroy_multithreaded (LOCK) : 0) +extern int glthread_rwlock_init_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_rdlock_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_wrlock_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_unlock_multithreaded (gl_rwlock_t *lock); +extern int glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock); + +# endif + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +# if HAVE_PTHREAD_MUTEX_RECURSIVE + +# if defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER || defined PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + +typedef pthread_mutex_t gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pthread_mutex_t NAME = gl_recursive_lock_initializer; +# ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER +# define gl_recursive_lock_initializer \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER +# else +# define gl_recursive_lock_initializer \ + PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +# endif +# define glthread_recursive_lock_init(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_lock(LOCK) \ + (pthread_in_use () ? pthread_mutex_lock (LOCK) : 0) +# define glthread_recursive_lock_unlock(LOCK) \ + (pthread_in_use () ? pthread_mutex_unlock (LOCK) : 0) +# define glthread_recursive_lock_destroy(LOCK) \ + (pthread_in_use () ? pthread_mutex_destroy (LOCK) : 0) +extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock); + +# else + +typedef struct + { + pthread_mutex_t recmutex; /* recursive mutex */ + pthread_mutex_t guard; /* protects the initialization */ + int initialized; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, 0 } +# define glthread_recursive_lock_init(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_lock(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_unlock(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_destroy(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0) +extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock); + +# endif + +# else + +/* Old versions of POSIX threads on Solaris did not have recursive locks. + We have to implement them ourselves. */ + +typedef struct + { + pthread_mutex_t mutex; + pthread_t owner; + unsigned long depth; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { PTHREAD_MUTEX_INITIALIZER, (pthread_t) 0, 0 } +# define glthread_recursive_lock_init(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_lock(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_unlock(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_destroy(LOCK) \ + (pthread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0) +extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock); + +# endif + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef pthread_once_t gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS pthread_once_t NAME = PTHREAD_ONCE_INIT; +# define glthread_once(ONCE_CONTROL, INITFUNCTION) \ + (pthread_in_use () \ + ? pthread_once (ONCE_CONTROL, INITFUNCTION) \ + : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0)) +extern int glthread_once_singlethreaded (pthread_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_PTH_THREADS + +/* Use the GNU Pth threads library. */ + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_PTH_THREADS_WEAK + +/* Use weak references to the GNU Pth threads library. */ + +# pragma weak pth_mutex_init +# pragma weak pth_mutex_acquire +# pragma weak pth_mutex_release +# pragma weak pth_rwlock_init +# pragma weak pth_rwlock_acquire +# pragma weak pth_rwlock_release +# pragma weak pth_once + +# pragma weak pth_cancel +# define pth_in_use() (pth_cancel != NULL) + +# else + +# define pth_in_use() 1 + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef pth_mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + PTH_MUTEX_INIT +# define glthread_lock_init(LOCK) \ + (pth_in_use () && !pth_mutex_init (LOCK) ? errno : 0) +# define glthread_lock_lock(LOCK) \ + (pth_in_use () && !pth_mutex_acquire (LOCK, 0, NULL) ? errno : 0) +# define glthread_lock_unlock(LOCK) \ + (pth_in_use () && !pth_mutex_release (LOCK) ? errno : 0) +# define glthread_lock_destroy(LOCK) \ + ((void)(LOCK), 0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef pth_rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + PTH_RWLOCK_INIT +# define glthread_rwlock_init(LOCK) \ + (pth_in_use () && !pth_rwlock_init (LOCK) ? errno : 0) +# define glthread_rwlock_rdlock(LOCK) \ + (pth_in_use () && !pth_rwlock_acquire (LOCK, PTH_RWLOCK_RD, 0, NULL) ? errno : 0) +# define glthread_rwlock_wrlock(LOCK) \ + (pth_in_use () && !pth_rwlock_acquire (LOCK, PTH_RWLOCK_RW, 0, NULL) ? errno : 0) +# define glthread_rwlock_unlock(LOCK) \ + (pth_in_use () && !pth_rwlock_release (LOCK) ? errno : 0) +# define glthread_rwlock_destroy(LOCK) \ + ((void)(LOCK), 0) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* In Pth, mutexes are recursive by default. */ +typedef pth_mutex_t gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS pth_mutex_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + PTH_MUTEX_INIT +# define glthread_recursive_lock_init(LOCK) \ + (pth_in_use () && !pth_mutex_init (LOCK) ? errno : 0) +# define glthread_recursive_lock_lock(LOCK) \ + (pth_in_use () && !pth_mutex_acquire (LOCK, 0, NULL) ? errno : 0) +# define glthread_recursive_lock_unlock(LOCK) \ + (pth_in_use () && !pth_mutex_release (LOCK) ? errno : 0) +# define glthread_recursive_lock_destroy(LOCK) \ + ((void)(LOCK), 0) + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef pth_once_t gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS pth_once_t NAME = PTH_ONCE_INIT; +# define glthread_once(ONCE_CONTROL, INITFUNCTION) \ + (pth_in_use () \ + ? glthread_once_multithreaded (ONCE_CONTROL, INITFUNCTION) \ + : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0)) +extern int glthread_once_multithreaded (pth_once_t *once_control, void (*initfunction) (void)); +extern int glthread_once_singlethreaded (pth_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_SOLARIS_THREADS + +/* Use the old Solaris threads library. */ + +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# if USE_SOLARIS_THREADS_WEAK + +/* Use weak references to the old Solaris threads library. */ + +# pragma weak mutex_init +# pragma weak mutex_lock +# pragma weak mutex_unlock +# pragma weak mutex_destroy +# pragma weak rwlock_init +# pragma weak rw_rdlock +# pragma weak rw_wrlock +# pragma weak rw_unlock +# pragma weak rwlock_destroy +# pragma weak thr_self + +# pragma weak thr_suspend +# define thread_in_use() (thr_suspend != NULL) + +# else + +# define thread_in_use() 1 + +# endif + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef mutex_t gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS mutex_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS mutex_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + DEFAULTMUTEX +# define glthread_lock_init(LOCK) \ + (thread_in_use () ? mutex_init (LOCK, USYNC_THREAD, NULL) : 0) +# define glthread_lock_lock(LOCK) \ + (thread_in_use () ? mutex_lock (LOCK) : 0) +# define glthread_lock_unlock(LOCK) \ + (thread_in_use () ? mutex_unlock (LOCK) : 0) +# define glthread_lock_destroy(LOCK) \ + (thread_in_use () ? mutex_destroy (LOCK) : 0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef rwlock_t gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + DEFAULTRWLOCK +# define glthread_rwlock_init(LOCK) \ + (thread_in_use () ? rwlock_init (LOCK, USYNC_THREAD, NULL) : 0) +# define glthread_rwlock_rdlock(LOCK) \ + (thread_in_use () ? rw_rdlock (LOCK) : 0) +# define glthread_rwlock_wrlock(LOCK) \ + (thread_in_use () ? rw_wrlock (LOCK) : 0) +# define glthread_rwlock_unlock(LOCK) \ + (thread_in_use () ? rw_unlock (LOCK) : 0) +# define glthread_rwlock_destroy(LOCK) \ + (thread_in_use () ? rwlock_destroy (LOCK) : 0) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* Old Solaris threads did not have recursive locks. + We have to implement them ourselves. */ + +typedef struct + { + mutex_t mutex; + thread_t owner; + unsigned long depth; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { DEFAULTMUTEX, (thread_t) 0, 0 } +# define glthread_recursive_lock_init(LOCK) \ + (thread_in_use () ? glthread_recursive_lock_init_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_lock(LOCK) \ + (thread_in_use () ? glthread_recursive_lock_lock_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_unlock(LOCK) \ + (thread_in_use () ? glthread_recursive_lock_unlock_multithreaded (LOCK) : 0) +# define glthread_recursive_lock_destroy(LOCK) \ + (thread_in_use () ? glthread_recursive_lock_destroy_multithreaded (LOCK) : 0) +extern int glthread_recursive_lock_init_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_lock_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_unlock_multithreaded (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_destroy_multithreaded (gl_recursive_lock_t *lock); + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef struct + { + volatile int inited; + mutex_t mutex; + } + gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = { 0, DEFAULTMUTEX }; +# define glthread_once(ONCE_CONTROL, INITFUNCTION) \ + (thread_in_use () \ + ? glthread_once_multithreaded (ONCE_CONTROL, INITFUNCTION) \ + : (glthread_once_singlethreaded (ONCE_CONTROL) ? (INITFUNCTION (), 0) : 0)) +extern int glthread_once_multithreaded (gl_once_t *once_control, void (*initfunction) (void)); +extern int glthread_once_singlethreaded (gl_once_t *once_control); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if USE_WIN32_THREADS + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +/* We can use CRITICAL_SECTION directly, rather than the Win32 Event, Mutex, + Semaphore types, because + - we need only to synchronize inside a single process (address space), + not inter-process locking, + - we don't need to support trylock operations. (TryEnterCriticalSection + does not work on Windows 95/98/ME. Packages that need trylock usually + define their own mutex type.) */ + +/* There is no way to statically initialize a CRITICAL_SECTION. It needs + to be done lazily, once only. For this we need spinlocks. */ + +typedef struct { volatile int done; volatile long started; } gl_spinlock_t; + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + CRITICAL_SECTION lock; + } + gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_lock_t NAME; +# define gl_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_lock_t NAME = gl_lock_initializer; +# define gl_lock_initializer \ + { { 0, -1 } } +# define glthread_lock_init(LOCK) \ + (glthread_lock_init_func (LOCK), 0) +# define glthread_lock_lock(LOCK) \ + glthread_lock_lock_func (LOCK) +# define glthread_lock_unlock(LOCK) \ + glthread_lock_unlock_func (LOCK) +# define glthread_lock_destroy(LOCK) \ + glthread_lock_destroy_func (LOCK) +extern void glthread_lock_init_func (gl_lock_t *lock); +extern int glthread_lock_lock_func (gl_lock_t *lock); +extern int glthread_lock_unlock_func (gl_lock_t *lock); +extern int glthread_lock_destroy_func (gl_lock_t *lock); + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +/* It is impossible to implement read-write locks using plain locks, without + introducing an extra thread dedicated to managing read-write locks. + Therefore here we need to use the low-level Event type. */ + +typedef struct + { + HANDLE *array; /* array of waiting threads, each represented by an event */ + unsigned int count; /* number of waiting threads */ + unsigned int alloc; /* length of allocated array */ + unsigned int offset; /* index of first waiting thread in array */ + } + gl_carray_waitqueue_t; +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + CRITICAL_SECTION lock; /* protects the remaining fields */ + gl_carray_waitqueue_t waiting_readers; /* waiting readers */ + gl_carray_waitqueue_t waiting_writers; /* waiting writers */ + int runcount; /* number of readers running, or -1 when a writer runs */ + } + gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME; +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_rwlock_t NAME = gl_rwlock_initializer; +# define gl_rwlock_initializer \ + { { 0, -1 } } +# define glthread_rwlock_init(LOCK) \ + (glthread_rwlock_init_func (LOCK), 0) +# define glthread_rwlock_rdlock(LOCK) \ + glthread_rwlock_rdlock_func (LOCK) +# define glthread_rwlock_wrlock(LOCK) \ + glthread_rwlock_wrlock_func (LOCK) +# define glthread_rwlock_unlock(LOCK) \ + glthread_rwlock_unlock_func (LOCK) +# define glthread_rwlock_destroy(LOCK) \ + glthread_rwlock_destroy_func (LOCK) +extern void glthread_rwlock_init_func (gl_rwlock_t *lock); +extern int glthread_rwlock_rdlock_func (gl_rwlock_t *lock); +extern int glthread_rwlock_wrlock_func (gl_rwlock_t *lock); +extern int glthread_rwlock_unlock_func (gl_rwlock_t *lock); +extern int glthread_rwlock_destroy_func (gl_rwlock_t *lock); + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +/* The Win32 documentation says that CRITICAL_SECTION already implements a + recursive lock. But we need not rely on it: It's easy to implement a + recursive lock without this assumption. */ + +typedef struct + { + gl_spinlock_t guard; /* protects the initialization */ + DWORD owner; + unsigned long depth; + CRITICAL_SECTION lock; + } + gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME; +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) \ + STORAGECLASS gl_recursive_lock_t NAME = gl_recursive_lock_initializer; +# define gl_recursive_lock_initializer \ + { { 0, -1 }, 0, 0 } +# define glthread_recursive_lock_init(LOCK) \ + (glthread_recursive_lock_init_func (LOCK), 0) +# define glthread_recursive_lock_lock(LOCK) \ + glthread_recursive_lock_lock_func (LOCK) +# define glthread_recursive_lock_unlock(LOCK) \ + glthread_recursive_lock_unlock_func (LOCK) +# define glthread_recursive_lock_destroy(LOCK) \ + glthread_recursive_lock_destroy_func (LOCK) +extern void glthread_recursive_lock_init_func (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_lock_func (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_unlock_func (gl_recursive_lock_t *lock); +extern int glthread_recursive_lock_destroy_func (gl_recursive_lock_t *lock); + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef struct + { + volatile int inited; + volatile long started; + CRITICAL_SECTION lock; + } + gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = { -1, -1 }; +# define glthread_once(ONCE_CONTROL, INITFUNCTION) \ + (glthread_once_func (ONCE_CONTROL, INITFUNCTION), 0) +extern void glthread_once_func (gl_once_t *once_control, void (*initfunction) (void)); + +# ifdef __cplusplus +} +# endif + +#endif + +/* ========================================================================= */ + +#if !(USE_POSIX_THREADS || USE_PTH_THREADS || USE_SOLARIS_THREADS || USE_WIN32_THREADS) + +/* Provide dummy implementation if threads are not supported. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +typedef int gl_lock_t; +# define gl_lock_define(STORAGECLASS, NAME) +# define gl_lock_define_initialized(STORAGECLASS, NAME) +# define glthread_lock_init(NAME) 0 +# define glthread_lock_lock(NAME) 0 +# define glthread_lock_unlock(NAME) 0 +# define glthread_lock_destroy(NAME) 0 + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +typedef int gl_rwlock_t; +# define gl_rwlock_define(STORAGECLASS, NAME) +# define gl_rwlock_define_initialized(STORAGECLASS, NAME) +# define glthread_rwlock_init(NAME) 0 +# define glthread_rwlock_rdlock(NAME) 0 +# define glthread_rwlock_wrlock(NAME) 0 +# define glthread_rwlock_unlock(NAME) 0 +# define glthread_rwlock_destroy(NAME) 0 + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +typedef int gl_recursive_lock_t; +# define gl_recursive_lock_define(STORAGECLASS, NAME) +# define gl_recursive_lock_define_initialized(STORAGECLASS, NAME) +# define glthread_recursive_lock_init(NAME) 0 +# define glthread_recursive_lock_lock(NAME) 0 +# define glthread_recursive_lock_unlock(NAME) 0 +# define glthread_recursive_lock_destroy(NAME) 0 + +/* -------------------------- gl_once_t datatype -------------------------- */ + +typedef int gl_once_t; +# define gl_once_define(STORAGECLASS, NAME) \ + STORAGECLASS gl_once_t NAME = 0; +# define glthread_once(ONCE_CONTROL, INITFUNCTION) \ + (*(ONCE_CONTROL) == 0 ? (*(ONCE_CONTROL) = ~ 0, INITFUNCTION (), 0) : 0) + +#endif + +/* ========================================================================= */ + +/* Macros with built-in error handling. */ + +/* -------------------------- gl_lock_t datatype -------------------------- */ + +#define gl_lock_init(NAME) \ + do \ + { \ + if (glthread_lock_init (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_lock_lock(NAME) \ + do \ + { \ + if (glthread_lock_lock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_lock_unlock(NAME) \ + do \ + { \ + if (glthread_lock_unlock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_lock_destroy(NAME) \ + do \ + { \ + if (glthread_lock_destroy (&NAME)) \ + abort (); \ + } \ + while (0) + +/* ------------------------- gl_rwlock_t datatype ------------------------- */ + +#define gl_rwlock_init(NAME) \ + do \ + { \ + if (glthread_rwlock_init (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_rwlock_rdlock(NAME) \ + do \ + { \ + if (glthread_rwlock_rdlock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_rwlock_wrlock(NAME) \ + do \ + { \ + if (glthread_rwlock_wrlock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_rwlock_unlock(NAME) \ + do \ + { \ + if (glthread_rwlock_unlock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_rwlock_destroy(NAME) \ + do \ + { \ + if (glthread_rwlock_destroy (&NAME)) \ + abort (); \ + } \ + while (0) + +/* --------------------- gl_recursive_lock_t datatype --------------------- */ + +#define gl_recursive_lock_init(NAME) \ + do \ + { \ + if (glthread_recursive_lock_init (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_recursive_lock_lock(NAME) \ + do \ + { \ + if (glthread_recursive_lock_lock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_recursive_lock_unlock(NAME) \ + do \ + { \ + if (glthread_recursive_lock_unlock (&NAME)) \ + abort (); \ + } \ + while (0) +#define gl_recursive_lock_destroy(NAME) \ + do \ + { \ + if (glthread_recursive_lock_destroy (&NAME)) \ + abort (); \ + } \ + while (0) + +/* -------------------------- gl_once_t datatype -------------------------- */ + +#define gl_once(NAME, INITFUNCTION) \ + do \ + { \ + if (glthread_once (&NAME, INITFUNCTION)) \ + abort (); \ + } \ + while (0) + +/* ========================================================================= */ + +#endif /* _LOCK_H */ diff --git a/libmednahawk/intl/log.c b/libmednahawk/intl/log.c new file mode 100644 index 0000000000..9b784926ab --- /dev/null +++ b/libmednahawk/intl/log.c @@ -0,0 +1,128 @@ +/* Log file output. + Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +#else +# include "lock.h" +#endif + +/* Separator between msgctxt and msgid in .mo files. */ +#define MSGCTXT_SEPARATOR '\004' /* EOT */ + +/* Print an ASCII string with quotes and escape sequences where needed. */ +static void +print_escaped (FILE *stream, const char *str, const char *str_end) +{ + putc ('"', stream); + for (; str != str_end; str++) + if (*str == '\n') + { + fputs ("\\n\"", stream); + if (str + 1 == str_end) + return; + fputs ("\n\"", stream); + } + else + { + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); + } + putc ('"', stream); +} + +static char *last_logfilename = NULL; +static FILE *last_logfile = NULL; +__libc_lock_define_initialized (static, lock) + +static inline void +_nl_log_untranslated_locked (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + FILE *logfile; + const char *separator; + + /* Can we reuse the last opened logfile? */ + if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) + { + /* Close the last used logfile. */ + if (last_logfilename != NULL) + { + if (last_logfile != NULL) + { + fclose (last_logfile); + last_logfile = NULL; + } + free (last_logfilename); + last_logfilename = NULL; + } + /* Open the logfile. */ + last_logfilename = (char *) malloc (strlen (logfilename) + 1); + if (last_logfilename == NULL) + return; + strcpy (last_logfilename, logfilename); + last_logfile = fopen (logfilename, "a"); + if (last_logfile == NULL) + return; + } + logfile = last_logfile; + + fprintf (logfile, "domain "); + print_escaped (logfile, domainname, domainname + strlen (domainname)); + separator = strchr (msgid1, MSGCTXT_SEPARATOR); + if (separator != NULL) + { + /* The part before the MSGCTXT_SEPARATOR is the msgctxt. */ + fprintf (logfile, "\nmsgctxt "); + print_escaped (logfile, msgid1, separator); + msgid1 = separator + 1; + } + fprintf (logfile, "\nmsgid "); + print_escaped (logfile, msgid1, msgid1 + strlen (msgid1)); + if (plural) + { + fprintf (logfile, "\nmsgid_plural "); + print_escaped (logfile, msgid2, msgid2 + strlen (msgid2)); + fprintf (logfile, "\nmsgstr[0] \"\"\n"); + } + else + fprintf (logfile, "\nmsgstr \"\"\n"); + putc ('\n', logfile); +} + +/* Add to the log file an entry denoting a failed translation. */ +void +_nl_log_untranslated (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + __libc_lock_lock (lock); + _nl_log_untranslated_locked (logfilename, domainname, msgid1, msgid2, plural); + __libc_lock_unlock (lock); +} diff --git a/libmednahawk/intl/ngettext.c b/libmednahawk/intl/ngettext.c new file mode 100644 index 0000000000..dd56aa1e19 --- /dev/null +++ b/libmednahawk/intl/ngettext.c @@ -0,0 +1,65 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT libintl_ngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/libmednahawk/intl/os2compat.c b/libmednahawk/intl/os2compat.c new file mode 100644 index 0000000000..4edcc0f9eb --- /dev/null +++ b/libmednahawk/intl/os2compat.c @@ -0,0 +1,98 @@ +/* OS/2 compatibility functions. + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#define OS2_AWARE +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +/* A version of getenv() that works from DLLs */ +extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); + +char * +_nl_getenv (const char *name) +{ + unsigned char *value; + if (DosScanEnv (name, &value)) + return NULL; + else + return value; +} + +/* A fixed size buffer. */ +char libintl_nl_default_dirname[MAXPATHLEN+1]; + +char *_nlos2_libdir = NULL; +char *_nlos2_localealiaspath = NULL; +char *_nlos2_localedir = NULL; + +static __attribute__((constructor)) void +nlos2_initialize () +{ + char *root = getenv ("UNIXROOT"); + char *gnulocaledir = getenv ("GNULOCALEDIR"); + + _nlos2_libdir = gnulocaledir; + if (!_nlos2_libdir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); + memcpy (_nlos2_libdir, root, sl); + memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); + } + else + _nlos2_libdir = LIBDIR; + } + + _nlos2_localealiaspath = gnulocaledir; + if (!_nlos2_localealiaspath) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); + memcpy (_nlos2_localealiaspath, root, sl); + memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); + } + else + _nlos2_localealiaspath = LOCALE_ALIAS_PATH; + } + + _nlos2_localedir = gnulocaledir; + if (!_nlos2_localedir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); + memcpy (_nlos2_localedir, root, sl); + memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); + } + else + _nlos2_localedir = LOCALEDIR; + } + + if (strlen (_nlos2_localedir) <= MAXPATHLEN) + strcpy (libintl_nl_default_dirname, _nlos2_localedir); +} diff --git a/libmednahawk/intl/os2compat.h b/libmednahawk/intl/os2compat.h new file mode 100644 index 0000000000..1cad31ddc5 --- /dev/null +++ b/libmednahawk/intl/os2compat.h @@ -0,0 +1,46 @@ +/* OS/2 compatibility defines. + This file is intended to be included from config.h + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* When included from os2compat.h we need all the original definitions */ +#ifndef OS2_AWARE + +#undef LIBDIR +#define LIBDIR _nlos2_libdir +extern char *_nlos2_libdir; + +#undef LOCALEDIR +#define LOCALEDIR _nlos2_localedir +extern char *_nlos2_localedir; + +#undef LOCALE_ALIAS_PATH +#define LOCALE_ALIAS_PATH _nlos2_localealiaspath +extern char *_nlos2_localealiaspath; + +#endif + +#undef HAVE_STRCASECMP +#define HAVE_STRCASECMP 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp + +/* We have our own getenv() which works even if library is compiled as DLL */ +#define getenv _nl_getenv + +/* Older versions of gettext used -1 as the value of LC_MESSAGES */ +#define LC_MESSAGES_COMPAT (-1) diff --git a/libmednahawk/intl/osdep.c b/libmednahawk/intl/osdep.c new file mode 100644 index 0000000000..420a5b994f --- /dev/null +++ b/libmednahawk/intl/osdep.c @@ -0,0 +1,26 @@ +/* OS dependent parts of libintl. + Copyright (C) 2001-2002, 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#if defined __CYGWIN__ +# include "intl-exports.c" +#elif defined __EMX__ +# include "os2compat.c" +#else +/* Avoid AIX compiler warning. */ +typedef int dummy; +#endif diff --git a/libmednahawk/intl/plural-exp.c b/libmednahawk/intl/plural-exp.c new file mode 100644 index 0000000000..f0fff092d1 --- /dev/null +++ b/libmednahawk/intl/plural-exp.c @@ -0,0 +1,155 @@ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "plural-exp.h" + +#if (defined __GNUC__ && !(__APPLE_CC__ > 1) && !defined __cplusplus) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +struct expression GERMANIC_PLURAL = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +struct expression GERMANIC_PLURAL; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + GERMANIC_PLURAL.nargs = 2; + GERMANIC_PLURAL.operation = not_equal; + GERMANIC_PLURAL.val.args[0] = &plvar; + GERMANIC_PLURAL.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + +void +internal_function +EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + const struct expression **pluralp, + unsigned long int *npluralsp) +{ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + char *endp; + unsigned long int n; + struct parse_args args; + + /* First get the number. */ + nplurals += 9; + while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) + ++nplurals; + if (!(*nplurals >= '0' && *nplurals <= '9')) + goto no_plural; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + if (nplurals == endp) + goto no_plural; + *npluralsp = n; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + *pluralp = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + *pluralp = &GERMANIC_PLURAL; + *npluralsp = 2; + } +} diff --git a/libmednahawk/intl/plural-exp.h b/libmednahawk/intl/plural-exp.h new file mode 100644 index 0000000000..e4ac90c415 --- /dev/null +++ b/libmednahawk/intl/plural-exp.h @@ -0,0 +1,129 @@ +/* Expression parsing and evaluation for plural form selection. + Copyright (C) 2000-2003, 2005-2007 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PLURAL_EXP_H +#define _PLURAL_EXP_H + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +enum expression_operator +{ + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ +}; + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum expression_operator operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* Names for the libintl functions are a problem. This source code is used + 1. in the GNU C Library library, + 2. in the GNU libintl library, + 3. in the GNU gettext tools. + The function names in each situation must be different, to allow for + binary incompatible changes in 'struct expression'. Furthermore, + 1. in the GNU C Library library, the names have a __ prefix, + 2.+3. in the GNU libintl library and in the GNU gettext tools, the names + must follow ANSI C and not start with __. + So we have to distinguish the three cases. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +# define PLURAL_PARSE __gettextparse +# define GERMANIC_PLURAL __gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural +#elif defined (IN_LIBINTL) +# define FREE_EXPRESSION libintl_gettext_free_exp +# define PLURAL_PARSE libintl_gettextparse +# define GERMANIC_PLURAL libintl_gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural +#else +# define FREE_EXPRESSION free_plural_expression +# define PLURAL_PARSE parse_plural_expression +# define GERMANIC_PLURAL germanic_plural +# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression +#endif + +extern void FREE_EXPRESSION (struct expression *exp) + internal_function; +extern int PLURAL_PARSE (void *arg); +extern struct expression GERMANIC_PLURAL attribute_hidden; +extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + const struct expression **pluralp, + unsigned long int *npluralsp) + internal_function; + +#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE) +extern unsigned long int plural_eval (const struct expression *pexp, + unsigned long int n); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _PLURAL_EXP_H */ diff --git a/libmednahawk/intl/plural.c b/libmednahawk/intl/plural.c new file mode 100644 index 0000000000..54611aa603 --- /dev/null +++ b/libmednahawk/intl/plural.c @@ -0,0 +1,1961 @@ +/* A Bison parser, made by GNU Bison 2.3a. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3a" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs + + +/* Copy the first part of user declarations. */ +/* Line 164 of yacc.c. */ +#line 1 "plural.y" + +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us + to put this declaration at the beginning of the file. The declaration in + bison's skeleton file comes too late. This must come before + because may include arbitrary system headers. + This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + EQUOP2 = 258, + CMPOP2 = 259, + ADDOP2 = 260, + MULOP2 = 261, + NUMBER = 262 + }; +#endif +/* Tokens. */ +#define EQUOP2 258 +#define CMPOP2 259 +#define ADDOP2 260 +#define MULOP2 261 +#define NUMBER 262 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{/* Line 191 of yacc.c. */ +#line 51 "plural.y" + + unsigned long int num; + enum expression_operator op; + struct expression *exp; +} +/* Line 191 of yacc.c. */ +#line 175 "plural.c" + YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + + + +/* Copy the second part of user declarations. */ +/* Line 221 of yacc.c. */ +#line 57 "plural.y" + +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (int nargs, enum expression_operator op, + struct expression * const *args) +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (enum expression_operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (enum expression_operator op, struct expression *right) +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (enum expression_operator op, struct expression *left, + struct expression *right) +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (enum expression_operator op, struct expression *bexp, + struct expression *tbranch, struct expression *fbranch) +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + + +/* Line 221 of yacc.c. */ +#line 265 "plural.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 9 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 54 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 16 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 3 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 13 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 27 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 262 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, + 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, + 8, 9, 11 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 5, 11, 15, 19, 23, 27, 31, + 35, 38, 40, 42 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 17, 0, -1, 18, -1, 18, 3, 18, 12, 18, + -1, 18, 4, 18, -1, 18, 5, 18, -1, 18, + 6, 18, -1, 18, 7, 18, -1, 18, 8, 18, + -1, 18, 9, 18, -1, 10, 18, -1, 13, -1, + 11, -1, 14, 18, 15, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 154, 154, 162, 166, 170, 174, 178, 182, 186, + 190, 194, 198, 203 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", + "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", + "$accept", "start", "exp", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 63, 124, 38, 258, 259, 260, 261, + 33, 262, 58, 110, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, + 2, 1, 1, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, + 5, 6, 7, 8, 9, 0, 3 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 5, 6 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -10 +static const yytype_int8 yypact[] = +{ + -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, + -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, + 45, 18, -2, 14, -10, -9, 36 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -10, -10, -1 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, + 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, + 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, + 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, + 16, 13, 14, 15, 16 +}; + +static const yytype_int8 yycheck[] = +{ + 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, + 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, + 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, + 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, + 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, + 9, 6, 7, 8, 9 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 10, 11, 13, 14, 17, 18, 18, 18, 0, + 3, 4, 5, 6, 7, 8, 9, 15, 18, 18, + 18, 18, 18, 18, 18, 12, 18 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +/* Line 1269 of yacc.c. */ +#line 155 "plural.y" + { + if ((yyvsp[(1) - (1)].exp) == NULL) + YYABORT; + ((struct parse_args *) arg)->res = (yyvsp[(1) - (1)].exp); + } + break; + + case 3: +/* Line 1269 of yacc.c. */ +#line 163 "plural.y" + { + (yyval.exp) = new_exp_3 (qmop, (yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].exp), (yyvsp[(5) - (5)].exp)); + } + break; + + case 4: +/* Line 1269 of yacc.c. */ +#line 167 "plural.y" + { + (yyval.exp) = new_exp_2 (lor, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 5: +/* Line 1269 of yacc.c. */ +#line 171 "plural.y" + { + (yyval.exp) = new_exp_2 (land, (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 6: +/* Line 1269 of yacc.c. */ +#line 175 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 7: +/* Line 1269 of yacc.c. */ +#line 179 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 8: +/* Line 1269 of yacc.c. */ +#line 183 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 9: +/* Line 1269 of yacc.c. */ +#line 187 "plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].exp)); + } + break; + + case 10: +/* Line 1269 of yacc.c. */ +#line 191 "plural.y" + { + (yyval.exp) = new_exp_1 (lnot, (yyvsp[(2) - (2)].exp)); + } + break; + + case 11: +/* Line 1269 of yacc.c. */ +#line 195 "plural.y" + { + (yyval.exp) = new_exp_0 (var); + } + break; + + case 12: +/* Line 1269 of yacc.c. */ +#line 199 "plural.y" + { + if (((yyval.exp) = new_exp_0 (num)) != NULL) + (yyval.exp)->val.num = (yyvsp[(1) - (1)].num); + } + break; + + case 13: +/* Line 1269 of yacc.c. */ +#line 204 "plural.y" + { + (yyval.exp) = (yyvsp[(2) - (3)].exp); + } + break; + + +/* Line 1269 of yacc.c. */ +#line 1572 "plural.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +/* Line 1486 of yacc.c. */ +#line 209 "plural.y" + + +void +internal_function +FREE_EXPRESSION (struct expression *exp) +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (YYSTYPE *lval, const char **pexp) +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} + diff --git a/libmednahawk/intl/plural.y b/libmednahawk/intl/plural.y new file mode 100644 index 0000000000..744b5bf255 --- /dev/null +++ b/libmednahawk/intl/plural.y @@ -0,0 +1,385 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003, 2005-2006 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us + to put this declaration at the beginning of the file. The declaration in + bison's skeleton file comes too late. This must come before + because may include arbitrary system headers. + This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 7 + +%union { + unsigned long int num; + enum expression_operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (int nargs, enum expression_operator op, + struct expression * const *args) +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (enum expression_operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (enum expression_operator op, struct expression *right) +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (enum expression_operator op, struct expression *left, + struct expression *right) +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (enum expression_operator op, struct expression *bexp, + struct expression *tbranch, struct expression *fbranch) +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (struct expression *exp) +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (YYSTYPE *lval, const char **pexp) +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/libmednahawk/intl/printf-args.c b/libmednahawk/intl/printf-args.c new file mode 100644 index 0000000000..f2431d11e2 --- /dev/null +++ b/libmednahawk/intl/printf-args.c @@ -0,0 +1,188 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be defined. + STATIC Set to 'static' to declare the function static. */ + +#ifndef PRINTF_FETCHARGS +# include +#endif + +/* Specification. */ +#ifndef PRINTF_FETCHARGS +# include "printf-args.h" +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_FETCHARGS (va_list args, arguments *a) +{ + size_t i; + argument *ap; + + for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) + switch (ap->type) + { + case TYPE_SCHAR: + ap->a.a_schar = va_arg (args, /*signed char*/ int); + break; + case TYPE_UCHAR: + ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); + break; + case TYPE_SHORT: + ap->a.a_short = va_arg (args, /*short*/ int); + break; + case TYPE_USHORT: + ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); + break; + case TYPE_INT: + ap->a.a_int = va_arg (args, int); + break; + case TYPE_UINT: + ap->a.a_uint = va_arg (args, unsigned int); + break; + case TYPE_LONGINT: + ap->a.a_longint = va_arg (args, long int); + break; + case TYPE_ULONGINT: + ap->a.a_ulongint = va_arg (args, unsigned long int); + break; +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + ap->a.a_longlongint = va_arg (args, long long int); + break; + case TYPE_ULONGLONGINT: + ap->a.a_ulonglongint = va_arg (args, unsigned long long int); + break; +#endif + case TYPE_DOUBLE: + ap->a.a_double = va_arg (args, double); + break; + case TYPE_LONGDOUBLE: + ap->a.a_longdouble = va_arg (args, long double); + break; + case TYPE_CHAR: + ap->a.a_char = va_arg (args, int); + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by + default argument promotions", this is not the case in mingw32, + where wint_t is 'unsigned short'. */ + ap->a.a_wide_char = + (sizeof (wint_t) < sizeof (int) + ? va_arg (args, int) + : va_arg (args, wint_t)); + break; +#endif + case TYPE_STRING: + ap->a.a_string = va_arg (args, const char *); + /* A null pointer is an invalid argument for "%s", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_string == NULL) + ap->a.a_string = "(NULL)"; + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + ap->a.a_wide_string = va_arg (args, const wchar_t *); + /* A null pointer is an invalid argument for "%ls", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_wide_string == NULL) + { + static const wchar_t wide_null_string[] = + { + (wchar_t)'(', + (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L', + (wchar_t)')', + (wchar_t)0 + }; + ap->a.a_wide_string = wide_null_string; + } + break; +#endif + case TYPE_POINTER: + ap->a.a_pointer = va_arg (args, void *); + break; + case TYPE_COUNT_SCHAR_POINTER: + ap->a.a_count_schar_pointer = va_arg (args, signed char *); + break; + case TYPE_COUNT_SHORT_POINTER: + ap->a.a_count_short_pointer = va_arg (args, short *); + break; + case TYPE_COUNT_INT_POINTER: + ap->a.a_count_int_pointer = va_arg (args, int *); + break; + case TYPE_COUNT_LONGINT_POINTER: + ap->a.a_count_longint_pointer = va_arg (args, long int *); + break; +#if HAVE_LONG_LONG_INT + case TYPE_COUNT_LONGLONGINT_POINTER: + ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); + break; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case TYPE_U8_STRING: + ap->a.a_u8_string = va_arg (args, const uint8_t *); + /* A null pointer is an invalid argument for "%U", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u8_string == NULL) + { + static const uint8_t u8_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u8_string = u8_null_string; + } + break; + case TYPE_U16_STRING: + ap->a.a_u16_string = va_arg (args, const uint16_t *); + /* A null pointer is an invalid argument for "%lU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u16_string == NULL) + { + static const uint16_t u16_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u16_string = u16_null_string; + } + break; + case TYPE_U32_STRING: + ap->a.a_u32_string = va_arg (args, const uint32_t *); + /* A null pointer is an invalid argument for "%llU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u32_string == NULL) + { + static const uint32_t u32_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u32_string = u32_null_string; + } + break; +#endif + default: + /* Unknown type. */ + return -1; + } + return 0; +} diff --git a/libmednahawk/intl/printf-args.h b/libmednahawk/intl/printf-args.h new file mode 100644 index 0000000000..d3a8682175 --- /dev/null +++ b/libmednahawk/intl/printf-args.h @@ -0,0 +1,155 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_ARGS_H +#define _PRINTF_ARGS_H + +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be declared. + STATIC Set to 'static' to declare the function static. */ + +/* Default parameters. */ +#ifndef PRINTF_FETCHARGS +# define PRINTF_FETCHARGS printf_fetchargs +#endif + +/* Get size_t. */ +#include + +/* Get wchar_t. */ +#if HAVE_WCHAR_T +# include +#endif + +/* Get wint_t. */ +#if HAVE_WINT_T +# include +#endif + +/* Get va_list. */ +#include + + +/* Argument types */ +typedef enum +{ + TYPE_NONE, + TYPE_SCHAR, + TYPE_UCHAR, + TYPE_SHORT, + TYPE_USHORT, + TYPE_INT, + TYPE_UINT, + TYPE_LONGINT, + TYPE_ULONGINT, +#if HAVE_LONG_LONG_INT + TYPE_LONGLONGINT, + TYPE_ULONGLONGINT, +#endif + TYPE_DOUBLE, + TYPE_LONGDOUBLE, + TYPE_CHAR, +#if HAVE_WINT_T + TYPE_WIDE_CHAR, +#endif + TYPE_STRING, +#if HAVE_WCHAR_T + TYPE_WIDE_STRING, +#endif + TYPE_POINTER, + TYPE_COUNT_SCHAR_POINTER, + TYPE_COUNT_SHORT_POINTER, + TYPE_COUNT_INT_POINTER, + TYPE_COUNT_LONGINT_POINTER +#if HAVE_LONG_LONG_INT +, TYPE_COUNT_LONGLONGINT_POINTER +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ +, TYPE_U8_STRING +, TYPE_U16_STRING +, TYPE_U32_STRING +#endif +} arg_type; + +/* Polymorphic argument */ +typedef struct +{ + arg_type type; + union + { + signed char a_schar; + unsigned char a_uchar; + short a_short; + unsigned short a_ushort; + int a_int; + unsigned int a_uint; + long int a_longint; + unsigned long int a_ulongint; +#if HAVE_LONG_LONG_INT + long long int a_longlongint; + unsigned long long int a_ulonglongint; +#endif + float a_float; + double a_double; + long double a_longdouble; + int a_char; +#if HAVE_WINT_T + wint_t a_wide_char; +#endif + const char* a_string; +#if HAVE_WCHAR_T + const wchar_t* a_wide_string; +#endif + void* a_pointer; + signed char * a_count_schar_pointer; + short * a_count_short_pointer; + int * a_count_int_pointer; + long int * a_count_longint_pointer; +#if HAVE_LONG_LONG_INT + long long int * a_count_longlongint_pointer; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + const uint8_t * a_u8_string; + const uint16_t * a_u16_string; + const uint32_t * a_u32_string; +#endif + } + a; +} +argument; + +typedef struct +{ + size_t count; + argument *arg; +} +arguments; + + +/* Fetch the arguments, putting them into a. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int PRINTF_FETCHARGS (va_list args, arguments *a); + +#endif /* _PRINTF_ARGS_H */ diff --git a/libmednahawk/intl/printf-parse.c b/libmednahawk/intl/printf-parse.c new file mode 100644 index 0000000000..1924a4bb91 --- /dev/null +++ b/libmednahawk/intl/printf-parse.c @@ -0,0 +1,628 @@ +/* Formatted output to strings. + Copyright (C) 1999-2000, 2002-2003, 2006-2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + CHAR_T The element type of the format string. + CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. + DIRECTIVE Structure denoting a format directive. + Depends on CHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on CHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on CHAR_T. + STATIC Set to 'static' to declare the function static. + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */ + +#ifndef PRINTF_PARSE +# include +#endif + +/* Specification. */ +#ifndef PRINTF_PARSE +# include "printf-parse.h" +#endif + +/* Default parameters. */ +#ifndef PRINTF_PARSE +# define PRINTF_PARSE printf_parse +# define CHAR_T char +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +#endif + +/* Get size_t, NULL. */ +#include + +/* Get intmax_t. */ +#if defined IN_LIBINTL || defined IN_LIBASPRINTF +# if HAVE_STDINT_H_WITH_UINTMAX +# include +# endif +# if HAVE_INTTYPES_H_WITH_UINTMAX +# include +# endif +#else +# include +#endif + +/* malloc(), realloc(), free(). */ +#include + +/* errno. */ +#include + +/* Checked size_t computations. */ +#include "xsize.h" + +#if CHAR_T_ONLY_ASCII +/* c_isascii(). */ +# include "c-ctype.h" +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) +{ + const CHAR_T *cp = format; /* pointer into format */ + size_t arg_posn = 0; /* number of regular arguments consumed */ + size_t d_allocated; /* allocated elements of d->dir */ + size_t a_allocated; /* allocated elements of a->arg */ + size_t max_width_length = 0; + size_t max_precision_length = 0; + + d->count = 0; + d_allocated = 1; + d->dir = (DIRECTIVE *) malloc (d_allocated * sizeof (DIRECTIVE)); + if (d->dir == NULL) + /* Out of memory. */ + goto out_of_memory_1; + + a->count = 0; + a_allocated = 0; + a->arg = NULL; + +#define REGISTER_ARG(_index_,_type_) \ + { \ + size_t n = (_index_); \ + if (n >= a_allocated) \ + { \ + size_t memory_size; \ + argument *memory; \ + \ + a_allocated = xtimes (a_allocated, 2); \ + if (a_allocated <= n) \ + a_allocated = xsum (n, 1); \ + memory_size = xtimes (a_allocated, sizeof (argument)); \ + if (size_overflow_p (memory_size)) \ + /* Overflow, would lead to out of memory. */ \ + goto out_of_memory; \ + memory = (argument *) (a->arg \ + ? realloc (a->arg, memory_size) \ + : malloc (memory_size)); \ + if (memory == NULL) \ + /* Out of memory. */ \ + goto out_of_memory; \ + a->arg = memory; \ + } \ + while (a->count <= n) \ + a->arg[a->count++].type = TYPE_NONE; \ + if (a->arg[n].type == TYPE_NONE) \ + a->arg[n].type = (_type_); \ + else if (a->arg[n].type != (_type_)) \ + /* Ambiguous type for positional argument. */ \ + goto error; \ + } + + while (*cp != '\0') + { + CHAR_T c = *cp++; + if (c == '%') + { + size_t arg_index = ARG_NONE; + DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */ + + /* Initialize the next directive. */ + dp->dir_start = cp - 1; + dp->flags = 0; + dp->width_start = NULL; + dp->width_end = NULL; + dp->width_arg_index = ARG_NONE; + dp->precision_start = NULL; + dp->precision_end = NULL; + dp->precision_arg_index = ARG_NONE; + dp->arg_index = ARG_NONE; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + arg_index = n - 1; + cp = np + 1; + } + } + + /* Read the flags. */ + for (;;) + { + if (*cp == '\'') + { + dp->flags |= FLAG_GROUP; + cp++; + } + else if (*cp == '-') + { + dp->flags |= FLAG_LEFT; + cp++; + } + else if (*cp == '+') + { + dp->flags |= FLAG_SHOWSIGN; + cp++; + } + else if (*cp == ' ') + { + dp->flags |= FLAG_SPACE; + cp++; + } + else if (*cp == '#') + { + dp->flags |= FLAG_ALT; + cp++; + } + else if (*cp == '0') + { + dp->flags |= FLAG_ZERO; + cp++; + } + else + break; + } + + /* Parse the field width. */ + if (*cp == '*') + { + dp->width_start = cp; + cp++; + dp->width_end = cp; + if (max_width_length < 1) + max_width_length = 1; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + dp->width_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->width_arg_index == ARG_NONE) + { + dp->width_arg_index = arg_posn++; + if (dp->width_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->width_arg_index, TYPE_INT); + } + else if (*cp >= '0' && *cp <= '9') + { + size_t width_length; + + dp->width_start = cp; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->width_end = cp; + width_length = dp->width_end - dp->width_start; + if (max_width_length < width_length) + max_width_length = width_length; + } + + /* Parse the precision. */ + if (*cp == '.') + { + cp++; + if (*cp == '*') + { + dp->precision_start = cp - 1; + cp++; + dp->precision_end = cp; + if (max_precision_length < 2) + max_precision_length = 2; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory + later. */ + goto error; + dp->precision_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->precision_arg_index == ARG_NONE) + { + dp->precision_arg_index = arg_posn++; + if (dp->precision_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->precision_arg_index, TYPE_INT); + } + else + { + size_t precision_length; + + dp->precision_start = cp - 1; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->precision_end = cp; + precision_length = dp->precision_end - dp->precision_start; + if (max_precision_length < precision_length) + max_precision_length = precision_length; + } + } + + { + arg_type type; + + /* Parse argument type/size specifiers. */ + { + int flags = 0; + + for (;;) + { + if (*cp == 'h') + { + flags |= (1 << (flags & 1)); + cp++; + } + else if (*cp == 'L') + { + flags |= 4; + cp++; + } + else if (*cp == 'l') + { + flags += 8; + cp++; + } + else if (*cp == 'j') + { + if (sizeof (intmax_t) > sizeof (long)) + { + /* intmax_t = long long */ + flags += 16; + } + else if (sizeof (intmax_t) > sizeof (int)) + { + /* intmax_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 'z' || *cp == 'Z') + { + /* 'z' is standardized in ISO C 99, but glibc uses 'Z' + because the warning facility in gcc-2.95.2 understands + only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ + if (sizeof (size_t) > sizeof (long)) + { + /* size_t = long long */ + flags += 16; + } + else if (sizeof (size_t) > sizeof (int)) + { + /* size_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 't') + { + if (sizeof (ptrdiff_t) > sizeof (long)) + { + /* ptrdiff_t = long long */ + flags += 16; + } + else if (sizeof (ptrdiff_t) > sizeof (int)) + { + /* ptrdiff_t = long */ + flags += 8; + } + cp++; + } +#if defined __APPLE__ && defined __MACH__ + /* On MacOS X 10.3, PRIdMAX is defined as "qd". + We cannot change it to "lld" because PRIdMAX must also + be understood by the system's printf routines. */ + else if (*cp == 'q') + { + if (64 / 8 > sizeof (long)) + { + /* int64_t = long long */ + flags += 16; + } + else + { + /* int64_t = long */ + flags += 8; + } + cp++; + } +#endif +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Win32, PRIdMAX is defined as "I64d". + We cannot change it to "lld" because PRIdMAX must also + be understood by the system's printf routines. */ + else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4') + { + if (64 / 8 > sizeof (long)) + { + /* __int64 = long long */ + flags += 16; + } + else + { + /* __int64 = long */ + flags += 8; + } + cp += 3; + } +#endif + else + break; + } + + /* Read the conversion character. */ + c = *cp++; + switch (c) + { + case 'd': case 'i': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGLONGINT; + else +#endif + /* If 'long long' exists and is the same as 'long', we parse + "lld" into TYPE_LONGINT. */ + if (flags >= 8) + type = TYPE_LONGINT; + else if (flags & 2) + type = TYPE_SCHAR; + else if (flags & 1) + type = TYPE_SHORT; + else + type = TYPE_INT; + break; + case 'o': case 'u': case 'x': case 'X': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_ULONGLONGINT; + else +#endif + /* If 'unsigned long long' exists and is the same as + 'unsigned long', we parse "llu" into TYPE_ULONGINT. */ + if (flags >= 8) + type = TYPE_ULONGINT; + else if (flags & 2) + type = TYPE_UCHAR; + else if (flags & 1) + type = TYPE_USHORT; + else + type = TYPE_UINT; + break; + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGDOUBLE; + else + type = TYPE_DOUBLE; + break; + case 'c': + if (flags >= 8) +#if HAVE_WINT_T + type = TYPE_WIDE_CHAR; +#else + goto error; +#endif + else + type = TYPE_CHAR; + break; +#if HAVE_WINT_T + case 'C': + type = TYPE_WIDE_CHAR; + c = 'c'; + break; +#endif + case 's': + if (flags >= 8) +#if HAVE_WCHAR_T + type = TYPE_WIDE_STRING; +#else + goto error; +#endif + else + type = TYPE_STRING; + break; +#if HAVE_WCHAR_T + case 'S': + type = TYPE_WIDE_STRING; + c = 's'; + break; +#endif + case 'p': + type = TYPE_POINTER; + break; + case 'n': +#if HAVE_LONG_LONG_INT + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_COUNT_LONGLONGINT_POINTER; + else +#endif + /* If 'long long' exists and is the same as 'long', we parse + "lln" into TYPE_COUNT_LONGINT_POINTER. */ + if (flags >= 8) + type = TYPE_COUNT_LONGINT_POINTER; + else if (flags & 2) + type = TYPE_COUNT_SCHAR_POINTER; + else if (flags & 1) + type = TYPE_COUNT_SHORT_POINTER; + else + type = TYPE_COUNT_INT_POINTER; + break; +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case 'U': + if (flags >= 16) + type = TYPE_U32_STRING; + else if (flags >= 8) + type = TYPE_U16_STRING; + else + type = TYPE_U8_STRING; + break; +#endif + case '%': + type = TYPE_NONE; + break; + default: + /* Unknown conversion character. */ + goto error; + } + } + + if (type != TYPE_NONE) + { + dp->arg_index = arg_index; + if (dp->arg_index == ARG_NONE) + { + dp->arg_index = arg_posn++; + if (dp->arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->arg_index, type); + } + dp->conversion = c; + dp->dir_end = cp; + } + + d->count++; + if (d->count >= d_allocated) + { + size_t memory_size; + DIRECTIVE *memory; + + d_allocated = xtimes (d_allocated, 2); + memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); + if (size_overflow_p (memory_size)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + memory = (DIRECTIVE *) realloc (d->dir, memory_size); + if (memory == NULL) + /* Out of memory. */ + goto out_of_memory; + d->dir = memory; + } + } +#if CHAR_T_ONLY_ASCII + else if (!c_isascii (c)) + { + /* Non-ASCII character. Not supported. */ + goto error; + } +#endif + } + d->dir[d->count].dir_start = cp; + + d->max_width_length = max_width_length; + d->max_precision_length = max_precision_length; + return 0; + +error: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); + errno = EINVAL; + return -1; + +out_of_memory: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); +out_of_memory_1: + errno = ENOMEM; + return -1; +} + +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef CHAR_T_ONLY_ASCII +#undef CHAR_T diff --git a/libmednahawk/intl/printf-parse.h b/libmednahawk/intl/printf-parse.h new file mode 100644 index 0000000000..245b27eced --- /dev/null +++ b/libmednahawk/intl/printf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_PARSE_H +#define _PRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const char* dir_start; + const char* dir_end; + int flags; + const char* width_start; + const char* width_end; + size_t width_arg_index; + const char* precision_start; + const char* precision_end; + size_t precision_arg_index; + char conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +char_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + char_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +char_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int printf_parse (const char *format, char_directives *d, arguments *a); + +#endif /* _PRINTF_PARSE_H */ diff --git a/libmednahawk/intl/printf.c b/libmednahawk/intl/printf.c new file mode 100644 index 0000000000..f86eb10741 --- /dev/null +++ b/libmednahawk/intl/printf.c @@ -0,0 +1,429 @@ +/* Formatted output to strings, using POSIX/XSI format strings with positions. + Copyright (C) 2003, 2006-2007, 2009 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include + +#if !HAVE_POSIX_PRINTF + +#include +#include +#include +#include + +/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */ +#ifndef EOVERFLOW +# define EOVERFLOW E2BIG +#endif + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + +#define STATIC static + +/* This needs to be consistent with libgnuintl.h.in. */ +#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ +/* Don't break __attribute__((format(printf,M,N))). + This redefinition is only possible because the libc in NetBSD, Cygwin, + mingw does not have a function __printf__. */ +# define libintl_printf __printf__ +#endif + +/* Define auxiliary functions declared in "printf-args.h". */ +#include "printf-args.c" + +/* Define auxiliary functions declared in "printf-parse.h". */ +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnprintf libintl_vasnprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnprintf libintl_asnprintf +#include "asnprintf.c" +#endif + +DLL_EXPORTED +int +libintl_vfprintf (FILE *stream, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vfprintf (stream, format, args); + else + { + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t written = fwrite (result, 1, length, stream); + free (result); + if (written == length) + { + if (length > INT_MAX) + errno = EOVERFLOW; + else + retval = length; + } + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fprintf (FILE *stream, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vprintf (const char *format, va_list args) +{ + return libintl_vfprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vsprintf (char *resultbuf, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vsprintf (resultbuf, format, args); + else + { + size_t length = (size_t) ~0 / (4 * sizeof (char)); + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + free (result); + return -1; + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_sprintf (char *resultbuf, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsprintf (resultbuf, format, args); + va_end (args); + return retval; +} + +#if HAVE_SNPRINTF + +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define system_vsnprintf _vsnprintf +# else + /* Unix. */ +# define system_vsnprintf vsnprintf +# endif + +DLL_EXPORTED +int +libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return system_vsnprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + size_t pruned_length = + (length < maxlength ? length : maxlength - 1); + memcpy (resultbuf, result, pruned_length); + resultbuf[pruned_length] = '\0'; + } + free (result); + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_snprintf (char *resultbuf, size_t length, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsnprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_ASPRINTF + +DLL_EXPORTED +int +libintl_vasprintf (char **resultp, const char *format, va_list args) +{ + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + if (result == NULL) + return -1; + if (length > INT_MAX) + { + free (result); + errno = EOVERFLOW; + return -1; + } + *resultp = result; + return length; +} + +DLL_EXPORTED +int +libintl_asprintf (char **resultp, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vasprintf (resultp, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_FWPRINTF + +#include + +#define WIDE_CHAR_VERSION 1 + +#include "wprintf-parse.h" +/* Define auxiliary functions declared in "wprintf-parse.h". */ +#define CHAR_T wchar_t +#define DIRECTIVE wchar_t_directive +#define DIRECTIVES wchar_t_directives +#define PRINTF_PARSE wprintf_parse +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnwprintf libintl_vasnwprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnwprintf libintl_asnwprintf +#include "asnprintf.c" +#endif + +# if HAVE_DECL__SNWPRINTF + /* Windows. */ +# define system_vswprintf _vsnwprintf +# else + /* Unix. */ +# define system_vswprintf vswprintf +# endif + +DLL_EXPORTED +int +libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return vfwprintf (stream, format, args); + else + { + size_t length; + wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t i; + for (i = 0; i < length; i++) + if (fputwc (result[i], stream) == WEOF) + break; + free (result); + if (i == length) + { + if (length > INT_MAX) + errno = EOVERFLOW; + else + retval = length; + } + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fwprintf (FILE *stream, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfwprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vwprintf (const wchar_t *format, va_list args) +{ + return libintl_vfwprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_wprintf (const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vwprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return system_vswprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + size_t pruned_length = + (length < maxlength ? length : maxlength - 1); + memcpy (resultbuf, result, pruned_length * sizeof (wchar_t)); + resultbuf[pruned_length] = 0; + } + free (result); + /* Unlike vsnprintf, which has to return the number of character that + would have been produced if the resultbuf had been sufficiently + large, the vswprintf function has to return a negative value if + the resultbuf was not sufficiently large. */ + if (length >= maxlength) + return -1; + } + if (length > INT_MAX) + { + errno = EOVERFLOW; + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vswprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#endif diff --git a/libmednahawk/intl/ref-add.sin b/libmednahawk/intl/ref-add.sin new file mode 100644 index 0000000000..9ea5c9928e --- /dev/null +++ b/libmednahawk/intl/ref-add.sin @@ -0,0 +1,31 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/libmednahawk/intl/ref-del.sin b/libmednahawk/intl/ref-del.sin new file mode 100644 index 0000000000..4609e08324 --- /dev/null +++ b/libmednahawk/intl/ref-del.sin @@ -0,0 +1,26 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/libmednahawk/intl/relocatable.c b/libmednahawk/intl/relocatable.c new file mode 100644 index 0000000000..1dd6554b90 --- /dev/null +++ b/libmednahawk/intl/relocatable.c @@ -0,0 +1,493 @@ +/* Provide relocatable packages. + Copyright (C) 2003-2006, 2008-2009 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + +/* Tell glibc's to provide a prototype for getline(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include + +/* Specification. */ +#include "relocatable.h" + +#if ENABLE_RELOCATABLE + +#include +#include +#include +#include + +#ifdef NO_XMALLOC +# define xmalloc malloc +#else +# include "xalloc.h" +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ +# define WIN32_LEAN_AND_MEAN +# include +#endif + +#if DEPENDS_ON_LIBCHARSET +# include +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV +# include +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS +# include +#endif + +/* Faked cheap 'bool'. */ +#undef bool +#undef false +#undef true +#define bool int +#define false 0 +#define true 1 + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +# define FILE_SYSTEM_PREFIX_LEN(P) 0 +#endif + +/* Original installation prefix. */ +static char *orig_prefix; +static size_t orig_prefix_len; +/* Current installation prefix. */ +static char *curr_prefix; +static size_t curr_prefix_len; +/* These prefixes do not end in a slash. Anything that will be concatenated + to them must start with a slash. */ + +/* Sets the original and the current installation prefix of this module. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +static void +set_this_relocation_prefix (const char *orig_prefix_arg, + const char *curr_prefix_arg) +{ + if (orig_prefix_arg != NULL && curr_prefix_arg != NULL + /* Optimization: if orig_prefix and curr_prefix are equal, the + relocation is a nop. */ + && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) + { + /* Duplicate the argument strings. */ + char *memory; + + orig_prefix_len = strlen (orig_prefix_arg); + curr_prefix_len = strlen (curr_prefix_arg); + memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (memory != NULL) +#endif + { + memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); + orig_prefix = memory; + memory += orig_prefix_len + 1; + memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); + curr_prefix = memory; + return; + } + } + orig_prefix = NULL; + curr_prefix = NULL; + /* Don't worry about wasted memory here - this function is usually only + called once. */ +} + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +void +set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) +{ + set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); + + /* Now notify all dependent libraries. */ +#if DEPENDS_ON_LIBCHARSET + libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 + libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix + libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +} + +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. + Returns it, freshly allocated. Returns NULL upon failure. */ +#ifdef IN_LIBRARY +#define compute_curr_prefix local_compute_curr_prefix +static +#endif +char * +compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname) +{ + char *curr_installdir; + const char *rel_installdir; + + if (curr_pathname == NULL) + return NULL; + + /* Determine the relative installation directory, relative to the prefix. + This is simply the difference between orig_installprefix and + orig_installdir. */ + if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) + != 0) + /* Shouldn't happen - nothing should be installed outside $(prefix). */ + return NULL; + rel_installdir = orig_installdir + strlen (orig_installprefix); + + /* Determine the current installation directory. */ + { + const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname); + const char *p = curr_pathname + strlen (curr_pathname); + char *q; + + while (p > p_base) + { + p--; + if (ISSLASH (*p)) + break; + } + + q = (char *) xmalloc (p - curr_pathname + 1); +#ifdef NO_XMALLOC + if (q == NULL) + return NULL; +#endif + memcpy (q, curr_pathname, p - curr_pathname); + q[p - curr_pathname] = '\0'; + curr_installdir = q; + } + + /* Compute the current installation prefix by removing the trailing + rel_installdir from it. */ + { + const char *rp = rel_installdir + strlen (rel_installdir); + const char *cp = curr_installdir + strlen (curr_installdir); + const char *cp_base = + curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir); + + while (rp > rel_installdir && cp > cp_base) + { + bool same = false; + const char *rpi = rp; + const char *cpi = cp; + + while (rpi > rel_installdir && cpi > cp_base) + { + rpi--; + cpi--; + if (ISSLASH (*rpi) || ISSLASH (*cpi)) + { + if (ISSLASH (*rpi) && ISSLASH (*cpi)) + same = true; + break; + } + /* Do case-insensitive comparison if the file system is always or + often case-insensitive. It's better to accept the comparison + if the difference is only in case, rather than to fail. */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS - case insignificant file system */ + if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) + != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) + break; +#else + if (*rpi != *cpi) + break; +#endif + } + if (!same) + break; + /* The last pathname component was the same. opi and cpi now point + to the slash before it. */ + rp = rpi; + cp = cpi; + } + + if (rp > rel_installdir) + { + /* Unexpected: The curr_installdir does not end with rel_installdir. */ + free (curr_installdir); + return NULL; + } + + { + size_t curr_prefix_len = cp - curr_installdir; + char *curr_prefix; + + curr_prefix = (char *) xmalloc (curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (curr_prefix == NULL) + { + free (curr_installdir); + return NULL; + } +#endif + memcpy (curr_prefix, curr_installdir, curr_prefix_len); + curr_prefix[curr_prefix_len] = '\0'; + + free (curr_installdir); + + return curr_prefix; + } + } +} + +#endif /* !IN_LIBRARY || PIC */ + +#if defined PIC && defined INSTALLDIR + +/* Full pathname of shared library, or NULL. */ +static char *shared_library_fullname; + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ + +/* Determine the full pathname of the shared library when it is loaded. */ + +BOOL WINAPI +DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) +{ + (void) reserved; + + if (event == DLL_PROCESS_ATTACH) + { + /* The DLL is being loaded into an application's address range. */ + static char location[MAX_PATH]; + + if (!GetModuleFileName (module_handle, location, sizeof (location))) + /* Shouldn't happen. */ + return FALSE; + + if (!IS_PATH_WITH_DIR (location)) + /* Shouldn't happen. */ + return FALSE; + + { +#if defined __CYGWIN__ + /* On Cygwin, we need to convert paths coming from Win32 system calls + to the Unix-like slashified notation. */ + static char location_as_posix_path[2 * MAX_PATH]; + /* There's no error return defined for cygwin_conv_to_posix_path. + See cygwin-api/func-cygwin-conv-to-posix-path.html. + Does it overflow the buffer of expected size MAX_PATH or does it + truncate the path? I don't know. Let's catch both. */ + cygwin_conv_to_posix_path (location, location_as_posix_path); + location_as_posix_path[MAX_PATH - 1] = '\0'; + if (strlen (location_as_posix_path) >= MAX_PATH - 1) + /* A sign of buffer overflow or path truncation. */ + return FALSE; + shared_library_fullname = strdup (location_as_posix_path); +#else + shared_library_fullname = strdup (location); +#endif + } + } + + return TRUE; +} + +#else /* Unix except Cygwin */ + +static void +find_shared_library_fullname () +{ +#if defined __linux__ && __GLIBC__ >= 2 + /* Linux has /proc/self/maps. glibc 2 has the getline() function. */ + FILE *fp; + + /* Open the current process' maps file. It describes one VMA per line. */ + fp = fopen ("/proc/self/maps", "r"); + if (fp) + { + unsigned long address = (unsigned long) &find_shared_library_fullname; + for (;;) + { + unsigned long start, end; + int c; + + if (fscanf (fp, "%lx-%lx", &start, &end) != 2) + break; + if (address >= start && address <= end - 1) + { + /* Found it. Now see if this line contains a filename. */ + while (c = getc (fp), c != EOF && c != '\n' && c != '/') + continue; + if (c == '/') + { + size_t size; + int len; + + ungetc (c, fp); + shared_library_fullname = NULL; size = 0; + len = getline (&shared_library_fullname, &size, fp); + if (len >= 0) + { + /* Success: filled shared_library_fullname. */ + if (len > 0 && shared_library_fullname[len - 1] == '\n') + shared_library_fullname[len - 1] = '\0'; + } + } + break; + } + while (c = getc (fp), c != EOF && c != '\n') + continue; + } + fclose (fp); + } +#endif +} + +#endif /* (WIN32 or Cygwin) / (Unix except Cygwin) */ + +/* Return the full pathname of the current shared library. + Return NULL if unknown. + Guaranteed to work only on Linux, Cygwin and Woe32. */ +static char * +get_shared_library_fullname () +{ +#if !(defined _WIN32 || defined __WIN32__ || defined __CYGWIN__) + static bool tried_find_shared_library_fullname; + if (!tried_find_shared_library_fullname) + { + find_shared_library_fullname (); + tried_find_shared_library_fullname = true; + } +#endif + return shared_library_fullname; +} + +#endif /* PIC */ + +/* Returns the pathname, relocated according to the current installation + directory. + The returned string is either PATHNAME unmodified or a freshly allocated + string that you can free with free() after casting it to 'char *'. */ +const char * +relocate (const char *pathname) +{ +#if defined PIC && defined INSTALLDIR + static int initialized; + + /* Initialization code for a shared library. */ + if (!initialized) + { + /* At this point, orig_prefix and curr_prefix likely have already been + set through the main program's set_program_name_and_installdir + function. This is sufficient in the case that the library has + initially been installed in the same orig_prefix. But we can do + better, to also cover the cases that 1. it has been installed + in a different prefix before being moved to orig_prefix and (later) + to curr_prefix, 2. unlike the program, it has not moved away from + orig_prefix. */ + const char *orig_installprefix = INSTALLPREFIX; + const char *orig_installdir = INSTALLDIR; + char *curr_prefix_better; + + curr_prefix_better = + compute_curr_prefix (orig_installprefix, orig_installdir, + get_shared_library_fullname ()); + + set_relocation_prefix (orig_installprefix, + curr_prefix_better != NULL + ? curr_prefix_better + : curr_prefix); + + if (curr_prefix_better != NULL) + free (curr_prefix_better); + + initialized = 1; + } +#endif + + /* Note: It is not necessary to perform case insensitive comparison here, + even for DOS-like file systems, because the pathname argument was + typically created from the same Makefile variable as orig_prefix came + from. */ + if (orig_prefix != NULL && curr_prefix != NULL + && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) + { + if (pathname[orig_prefix_len] == '\0') + { + /* pathname equals orig_prefix. */ + char *result = (char *) xmalloc (strlen (curr_prefix) + 1); + +#ifdef NO_XMALLOC + if (result != NULL) +#endif + { + strcpy (result, curr_prefix); + return result; + } + } + else if (ISSLASH (pathname[orig_prefix_len])) + { + /* pathname starts with orig_prefix. */ + const char *pathname_tail = &pathname[orig_prefix_len]; + char *result = + (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); + +#ifdef NO_XMALLOC + if (result != NULL) +#endif + { + memcpy (result, curr_prefix, curr_prefix_len); + strcpy (result + curr_prefix_len, pathname_tail); + return result; + } + } + } + /* Nothing to relocate. */ + return pathname; +} + +#endif diff --git a/libmednahawk/intl/relocatable.h b/libmednahawk/intl/relocatable.h new file mode 100644 index 0000000000..eabdd89971 --- /dev/null +++ b/libmednahawk/intl/relocatable.h @@ -0,0 +1,83 @@ +/* Provide relocatable packages. + Copyright (C) 2003, 2005, 2008 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _RELOCATABLE_H +#define _RELOCATABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* This can be enabled through the configure --enable-relocatable option. */ +#if ENABLE_RELOCATABLE + +/* When building a DLL, we must export some functions. Note that because + this is a private .h file, we don't need to use __declspec(dllimport) + in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) +#else +# define RELOCATABLE_DLL_EXPORTED +#endif + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +extern RELOCATABLE_DLL_EXPORTED void + set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + +/* Returns the pathname, relocated according to the current installation + directory. + The returned string is either PATHNAME unmodified or a freshly allocated + string that you can free with free() after casting it to 'char *'. */ +extern const char * relocate (const char *pathname); + +/* Memory management: relocate() potentially allocates memory, because it has + to construct a fresh pathname. If this is a problem because your program + calls relocate() frequently, think about caching the result. Or free the + return value if it was different from the argument pathname. */ + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. + Returns it, freshly allocated. Returns NULL upon failure. */ +extern char * compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname); + +#else + +/* By default, we use the hardwired pathnames. */ +#define relocate(pathname) (pathname) + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _RELOCATABLE_H */ diff --git a/libmednahawk/intl/setlocale.c b/libmednahawk/intl/setlocale.c new file mode 100644 index 0000000000..2f44438bed --- /dev/null +++ b/libmednahawk/intl/setlocale.c @@ -0,0 +1,1015 @@ +/* setlocale() function that respects the locale chosen by the user. + Copyright (C) 2009 Free Software Foundation, Inc. + Written by Bruno Haible , 2009. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Override setlocale() and newlocale() so that when the default locale is + requested (locale = "") and no relevant environment variable is set, the + locale chosen by the user is used. + This matters on MacOS X 10 and Windows. + See the comments in localename.c, function gl_locale_name_default. */ + +#include +#include +#include + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if HAVE_VISIBILITY && BUILDING_DLL +# define DLL_EXPORTED __attribute__((__visibility__("default"))) +#elif defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + +#include "gettextP.h" + +#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ + +# undef setlocale +# undef newlocale + +/* Return string representation of locale category CATEGORY. */ +static const char * +category_to_name (int category) +{ + const char *retval; + + switch (category) + { + case LC_COLLATE: + retval = "LC_COLLATE"; + break; + case LC_CTYPE: + retval = "LC_CTYPE"; + break; + case LC_MONETARY: + retval = "LC_MONETARY"; + break; + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; + case LC_TIME: + retval = "LC_TIME"; + break; + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + +/* The native Win32 setlocale() function expects locale names of the form + "German" or "German_Germany" or "DEU", but not "de" or "de_DE". We need + to convert the names from the form with ISO 639 language code and ISO 3166 + country code to the form with English names or with three-letter identifier. + The three-letter identifiers known by a Windows XP SP2 or SP3 are: + AFK Afrikaans_South Africa.1252 + ARA Arabic_Saudi Arabia.1256 + ARB Arabic_Lebanon.1256 + ARE Arabic_Egypt.1256 + ARG Arabic_Algeria.1256 + ARH Arabic_Bahrain.1256 + ARI Arabic_Iraq.1256 + ARJ Arabic_Jordan.1256 + ARK Arabic_Kuwait.1256 + ARL Arabic_Libya.1256 + ARM Arabic_Morocco.1256 + ARO Arabic_Oman.1256 + ARQ Arabic_Qatar.1256 + ARS Arabic_Syria.1256 + ART Arabic_Tunisia.1256 + ARU Arabic_U.A.E..1256 + ARY Arabic_Yemen.1256 + AZE Azeri (Latin)_Azerbaijan.1254 + BEL Belarusian_Belarus.1251 + BGR Bulgarian_Bulgaria.1251 + BSB Bosnian_Bosnia and Herzegovina.1250 + BSC Bosnian (Cyrillic)_Bosnia and Herzegovina.1250 (wrong encoding!) + CAT Catalan_Spain.1252 + CHH Chinese_Hong Kong S.A.R..950 + CHI Chinese_Singapore.936 + CHS Chinese_People's Republic of China.936 + CHT Chinese_Taiwan.950 + CSY Czech_Czech Republic.1250 + CYM Welsh_United Kingdom.1252 + DAN Danish_Denmark.1252 + DEA German_Austria.1252 + DEC German_Liechtenstein.1252 + DEL German_Luxembourg.1252 + DES German_Switzerland.1252 + DEU German_Germany.1252 + ELL Greek_Greece.1253 + ENA English_Australia.1252 + ENB English_Caribbean.1252 + ENC English_Canada.1252 + ENG English_United Kingdom.1252 + ENI English_Ireland.1252 + ENJ English_Jamaica.1252 + ENL English_Belize.1252 + ENP English_Republic of the Philippines.1252 + ENS English_South Africa.1252 + ENT English_Trinidad and Tobago.1252 + ENU English_United States.1252 + ENW English_Zimbabwe.1252 + ENZ English_New Zealand.1252 + ESA Spanish_Panama.1252 + ESB Spanish_Bolivia.1252 + ESC Spanish_Costa Rica.1252 + ESD Spanish_Dominican Republic.1252 + ESE Spanish_El Salvador.1252 + ESF Spanish_Ecuador.1252 + ESG Spanish_Guatemala.1252 + ESH Spanish_Honduras.1252 + ESI Spanish_Nicaragua.1252 + ESL Spanish_Chile.1252 + ESM Spanish_Mexico.1252 + ESN Spanish_Spain.1252 + ESO Spanish_Colombia.1252 + ESP Spanish_Spain.1252 + ESR Spanish_Peru.1252 + ESS Spanish_Argentina.1252 + ESU Spanish_Puerto Rico.1252 + ESV Spanish_Venezuela.1252 + ESY Spanish_Uruguay.1252 + ESZ Spanish_Paraguay.1252 + ETI Estonian_Estonia.1257 + EUQ Basque_Spain.1252 + FAR Farsi_Iran.1256 + FIN Finnish_Finland.1252 + FOS Faroese_Faroe Islands.1252 + FPO Filipino_Philippines.1252 + FRA French_France.1252 + FRB French_Belgium.1252 + FRC French_Canada.1252 + FRL French_Luxembourg.1252 + FRM French_Principality of Monaco.1252 + FRS French_Switzerland.1252 + FYN Frisian_Netherlands.1252 + GLC Galician_Spain.1252 + HEB Hebrew_Israel.1255 + HRB Croatian_Bosnia and Herzegovina.1250 + HRV Croatian_Croatia.1250 + HUN Hungarian_Hungary.1250 + IND Indonesian_Indonesia.1252 + IRE Irish_Ireland.1252 + ISL Icelandic_Iceland.1252 + ITA Italian_Italy.1252 + ITS Italian_Switzerland.1252 + IUK Inuktitut (Latin)_Canada.1252 + JPN Japanese_Japan.932 + KKZ Kazakh_Kazakhstan.1251 + KOR Korean_Korea.949 + KYR Kyrgyz_Kyrgyzstan.1251 + LBX Luxembourgish_Luxembourg.1252 + LTH Lithuanian_Lithuania.1257 + LVI Latvian_Latvia.1257 + MKI FYRO Macedonian_Former Yugoslav Republic of Macedonia.1251 + MON Mongolian_Mongolia.1251 + MPD Mapudungun_Chile.1252 + MSB Malay_Brunei Darussalam.1252 + MSL Malay_Malaysia.1252 + MWK Mohawk_Canada.1252 + NLB Dutch_Belgium.1252 + NLD Dutch_Netherlands.1252 + NON Norwegian-Nynorsk_Norway.1252 + NOR Norwegian (BokmÃ¥l)_Norway.1252 + NSO Northern Sotho_South Africa.1252 + PLK Polish_Poland.1250 + PTB Portuguese_Brazil.1252 + PTG Portuguese_Portugal.1252 + QUB Quechua_Bolivia.1252 + QUE Quechua_Ecuador.1252 + QUP Quechua_Peru.1252 + RMC Romansh_Switzerland.1252 + ROM Romanian_Romania.1250 + RUS Russian_Russia.1251 + SKY Slovak_Slovakia.1250 + SLV Slovenian_Slovenia.1250 + SMA Sami (Southern)_Norway.1252 + SMB Sami (Southern)_Sweden.1252 + SME Sami (Northern)_Norway.1252 + SMF Sami (Northern)_Sweden.1252 + SMG Sami (Northern)_Finland.1252 + SMJ Sami (Lule)_Norway.1252 + SMK Sami (Lule)_Sweden.1252 + SMN Sami (Inari)_Finland.1252 + SMS Sami (Skolt)_Finland.1252 + SQI Albanian_Albania.1250 + SRB Serbian (Cyrillic)_Serbia and Montenegro.1251 + SRL Serbian (Latin)_Serbia and Montenegro.1250 + SRN Serbian (Cyrillic)_Bosnia and Herzegovina.1251 + SRS Serbian (Latin)_Bosnia and Herzegovina.1250 + SVE Swedish_Sweden.1252 + SVF Swedish_Finland.1252 + SWK Swahili_Kenya.1252 + THA Thai_Thailand.874 + TRK Turkish_Turkey.1254 + TSN Tswana_South Africa.1252 + TTT Tatar_Russia.1251 + UKR Ukrainian_Ukraine.1251 + URD Urdu_Islamic Republic of Pakistan.1256 + USA English_United States.1252 + UZB Uzbek (Latin)_Uzbekistan.1254 + VIT Vietnamese_Viet Nam.1258 + XHO Xhosa_South Africa.1252 + ZHH Chinese_Hong Kong S.A.R..950 + ZHI Chinese_Singapore.936 + ZHM Chinese_Macau S.A.R..950 + ZUL Zulu_South Africa.1252 + */ + +/* Table from ISO 639 language code, optionally with country or script suffix, + to English name. + Keep in sync with the gl_locale_name_from_win32_LANGID function in + localename.c! */ +struct table_entry +{ + const char *code; + const char *english; +}; +static const struct table_entry language_table[] = + { + { "af", "Afrikaans" }, + { "am", "Amharic" }, + { "ar", "Arabic" }, + { "arn", "Mapudungun" }, + { "as", "Assamese" }, + { "az@cyrillic", "Azeri (Cyrillic)" }, + { "az@latin", "Azeri (Latin)" }, + { "ba", "Bashkir" }, + { "be", "Belarusian" }, + { "ber", "Tamazight" }, + { "ber@arabic", "Tamazight (Arabic)" }, + { "ber@latin", "Tamazight (Latin)" }, + { "bg", "Bulgarian" }, + { "bin", "Edo" }, + { "bn", "Bengali" }, + { "bn_BD", "Bengali (Bangladesh)" }, + { "bn_IN", "Bengali (India)" }, + { "bnt", "Sutu" }, + { "bo", "Tibetan" }, + { "br", "Breton" }, + { "bs", "BSB" }, /* "Bosnian (Latin)" */ + { "bs@cyrillic", "BSC" }, /* Bosnian (Cyrillic) */ + { "ca", "Catalan" }, + { "chr", "Cherokee" }, + { "co", "Corsican" }, + { "cpe", "Hawaiian" }, + { "cs", "Czech" }, + { "cy", "Welsh" }, + { "da", "Danish" }, + { "de", "German" }, + { "dsb", "Lower Sorbian" }, + { "dv", "Divehi" }, + { "el", "Greek" }, + { "en", "English" }, + { "es", "Spanish" }, + { "et", "Estonian" }, + { "eu", "Basque" }, + { "fa", "Farsi" }, + { "ff", "Fulfulde" }, + { "fi", "Finnish" }, + { "fo", "Faroese" }, /* "Faeroese" does not work */ + { "fr", "French" }, + { "fy", "Frisian" }, + { "ga", "IRE" }, /* Gaelic (Ireland) */ + { "gd", "Gaelic (Scotland)" }, + { "gd", "Scottish Gaelic" }, + { "gl", "Galician" }, + { "gn", "Guarani" }, + { "gsw", "Alsatian" }, + { "gu", "Gujarati" }, + { "ha", "Hausa" }, + { "he", "Hebrew" }, + { "hi", "Hindi" }, + { "hr", "Croatian" }, + { "hsb", "Upper Sorbian" }, + { "hu", "Hungarian" }, + { "hy", "Armenian" }, + { "id", "Indonesian" }, + { "ig", "Igbo" }, + { "ii", "Yi" }, + { "is", "Icelandic" }, + { "it", "Italian" }, + { "iu", "IUK" }, /* Inuktitut */ + { "ja", "Japanese" }, + { "ka", "Georgian" }, + { "kk", "Kazakh" }, + { "kl", "Greenlandic" }, + { "km", "Cambodian" }, + { "km", "Khmer" }, + { "kn", "Kannada" }, + { "ko", "Korean" }, + { "kok", "Konkani" }, + { "kr", "Kanuri" }, + { "ks", "Kashmiri" }, + { "ks_IN", "Kashmiri_India" }, + { "ks_PK", "Kashmiri (Arabic)_Pakistan" }, + { "ky", "Kyrgyz" }, + { "la", "Latin" }, + { "lb", "Luxembourgish" }, + { "lo", "Lao" }, + { "lt", "Lithuanian" }, + { "lv", "Latvian" }, + { "mi", "Maori" }, + { "mk", "FYRO Macedonian" }, + { "mk", "Macedonian" }, + { "ml", "Malayalam" }, + { "mn", "Mongolian" }, + { "mni", "Manipuri" }, + { "moh", "Mohawk" }, + { "mr", "Marathi" }, + { "ms", "Malay" }, + { "mt", "Maltese" }, + { "my", "Burmese" }, + { "nb", "NOR" }, /* Norwegian BokmÃ¥l */ + { "ne", "Nepali" }, + { "nic", "Ibibio" }, + { "nl", "Dutch" }, + { "nn", "NON" }, /* Norwegian Nynorsk */ + { "no", "Norwegian" }, + { "nso", "Northern Sotho" }, + { "nso", "Sepedi" }, + { "oc", "Occitan" }, + { "om", "Oromo" }, + { "or", "Oriya" }, + { "pa", "Punjabi" }, + { "pap", "Papiamentu" }, + { "pl", "Polish" }, + { "prs", "Dari" }, + { "ps", "Pashto" }, + { "pt", "Portuguese" }, + { "qu", "Quechua" }, + { "qut", "K'iche'" }, + { "rm", "Romansh" }, + { "ro", "Romanian" }, + { "ru", "Russian" }, + { "rw", "Kinyarwanda" }, + { "sa", "Sanskrit" }, + { "sah", "Yakut" }, + { "sd", "Sindhi" }, + { "se", "Sami (Northern)" }, + { "se", "Northern Sami" }, + { "si", "Sinhalese" }, + { "sk", "Slovak" }, + { "sl", "Slovenian" }, + { "sma", "Sami (Southern)" }, + { "sma", "Southern Sami" }, + { "smj", "Sami (Lule)" }, + { "smj", "Lule Sami" }, + { "smn", "Sami (Inari)" }, + { "smn", "Inari Sami" }, + { "sms", "Sami (Skolt)" }, + { "sms", "Skolt Sami" }, + { "so", "Somali" }, + { "sq", "Albanian" }, + { "sr", "Serbian (Latin)" }, + { "sr@cyrillic", "SRB" }, /* Serbian (Cyrillic) */ + { "sw", "Swahili" }, + { "syr", "Syriac" }, + { "ta", "Tamil" }, + { "te", "Telugu" }, + { "tg", "Tajik" }, + { "th", "Thai" }, + { "ti", "Tigrinya" }, + { "tk", "Turkmen" }, + { "tl", "Filipino" }, + { "tn", "Tswana" }, + { "tr", "Turkish" }, + { "ts", "Tsonga" }, + { "tt", "Tatar" }, + { "ug", "Uighur" }, + { "uk", "Ukrainian" }, + { "ur", "Urdu" }, + { "uz", "Uzbek" }, + { "uz", "Uzbek (Latin)" }, + { "uz@cyrillic", "Uzbek (Cyrillic)" }, + { "ve", "Venda" }, + { "vi", "Vietnamese" }, + { "wen", "Sorbian" }, + { "wo", "Wolof" }, + { "xh", "Xhosa" }, + { "yi", "Yiddish" }, + { "yo", "Yoruba" }, + { "zh", "Chinese" }, + { "zu", "Zulu" } + }; + +/* Table from ISO 3166 country code to English name. + Keep in sync with the gl_locale_name_from_win32_LANGID function in + localename.c! */ +static const struct table_entry country_table[] = + { + { "AE", "U.A.E." }, + { "AF", "Afghanistan" }, + { "AL", "Albania" }, + { "AM", "Armenia" }, + { "AN", "Netherlands Antilles" }, + { "AR", "Argentina" }, + { "AT", "Austria" }, + { "AU", "Australia" }, + { "AZ", "Azerbaijan" }, + { "BA", "Bosnia and Herzegovina" }, + { "BD", "Bangladesh" }, + { "BE", "Belgium" }, + { "BG", "Bulgaria" }, + { "BH", "Bahrain" }, + { "BN", "Brunei Darussalam" }, + { "BO", "Bolivia" }, + { "BR", "Brazil" }, + { "BT", "Bhutan" }, + { "BY", "Belarus" }, + { "BZ", "Belize" }, + { "CA", "Canada" }, + { "CG", "Congo" }, + { "CH", "Switzerland" }, + { "CI", "Cote d'Ivoire" }, + { "CL", "Chile" }, + { "CM", "Cameroon" }, + { "CN", "People's Republic of China" }, + { "CO", "Colombia" }, + { "CR", "Costa Rica" }, + { "CS", "Serbia and Montenegro" }, + { "CZ", "Czech Republic" }, + { "DE", "Germany" }, + { "DK", "Denmark" }, + { "DO", "Dominican Republic" }, + { "DZ", "Algeria" }, + { "EC", "Ecuador" }, + { "EE", "Estonia" }, + { "EG", "Egypt" }, + { "ER", "Eritrea" }, + { "ES", "Spain" }, + { "ET", "Ethiopia" }, + { "FI", "Finland" }, + { "FO", "Faroe Islands" }, + { "FR", "France" }, + { "GB", "United Kingdom" }, + { "GD", "Caribbean" }, + { "GE", "Georgia" }, + { "GL", "Greenland" }, + { "GR", "Greece" }, + { "GT", "Guatemala" }, + { "HK", "Hong Kong" }, + { "HK", "Hong Kong S.A.R." }, + { "HN", "Honduras" }, + { "HR", "Croatia" }, + { "HT", "Haiti" }, + { "HU", "Hungary" }, + { "ID", "Indonesia" }, + { "IE", "Ireland" }, + { "IL", "Israel" }, + { "IN", "India" }, + { "IQ", "Iraq" }, + { "IR", "Iran" }, + { "IS", "Iceland" }, + { "IT", "Italy" }, + { "JM", "Jamaica" }, + { "JO", "Jordan" }, + { "JP", "Japan" }, + { "KE", "Kenya" }, + { "KG", "Kyrgyzstan" }, + { "KH", "Cambodia" }, + { "KR", "South Korea" }, + { "KW", "Kuwait" }, + { "KZ", "Kazakhstan" }, + { "LA", "Laos" }, + { "LB", "Lebanon" }, + { "LI", "Liechtenstein" }, + { "LK", "Sri Lanka" }, + { "LT", "Lithuania" }, + { "LU", "Luxembourg" }, + { "LV", "Latvia" }, + { "LY", "Libya" }, + { "MA", "Morocco" }, + { "MC", "Principality of Monaco" }, + { "MD", "Moldava" }, + { "MD", "Moldova" }, + { "ME", "Montenegro" }, + { "MK", "Former Yugoslav Republic of Macedonia" }, + { "ML", "Mali" }, + { "MM", "Myanmar" }, + { "MN", "Mongolia" }, + { "MO", "Macau S.A.R." }, + { "MT", "Malta" }, + { "MV", "Maldives" }, + { "MX", "Mexico" }, + { "MY", "Malaysia" }, + { "NG", "Nigeria" }, + { "NI", "Nicaragua" }, + { "NL", "Netherlands" }, + { "NO", "Norway" }, + { "NP", "Nepal" }, + { "NZ", "New Zealand" }, + { "OM", "Oman" }, + { "PA", "Panama" }, + { "PE", "Peru" }, + { "PH", "Philippines" }, + { "PK", "Islamic Republic of Pakistan" }, + { "PL", "Poland" }, + { "PR", "Puerto Rico" }, + { "PT", "Portugal" }, + { "PY", "Paraguay" }, + { "QA", "Qatar" }, + { "RE", "Reunion" }, + { "RO", "Romania" }, + { "RS", "Serbia" }, + { "RU", "Russia" }, + { "RW", "Rwanda" }, + { "SA", "Saudi Arabia" }, + { "SE", "Sweden" }, + { "SG", "Singapore" }, + { "SI", "Slovenia" }, + { "SK", "Slovak" }, + { "SN", "Senegal" }, + { "SO", "Somalia" }, + { "SR", "Suriname" }, + { "SV", "El Salvador" }, + { "SY", "Syria" }, + { "TH", "Thailand" }, + { "TJ", "Tajikistan" }, + { "TM", "Turkmenistan" }, + { "TN", "Tunisia" }, + { "TR", "Turkey" }, + { "TT", "Trinidad and Tobago" }, + { "TW", "Taiwan" }, + { "TZ", "Tanzania" }, + { "UA", "Ukraine" }, + { "US", "United States" }, + { "UY", "Uruguay" }, + { "VA", "Vatican" }, + { "VE", "Venezuela" }, + { "VN", "Viet Nam" }, + { "YE", "Yemen" }, + { "ZA", "South Africa" }, + { "ZW", "Zimbabwe" } + }; + +/* Given a string STRING, find the set of indices i such that TABLE[i].code is + the given STRING. It is a range [lo,hi-1]. */ +typedef struct { size_t lo; size_t hi; } range_t; +static void +search (const struct table_entry *table, size_t table_size, const char *string, + range_t *result) +{ + /* The table is sorted. Perform a binary search. */ + size_t hi = table_size; + size_t lo = 0; + while (lo < hi) + { + /* Invariant: + for i < lo, strcmp (table[i].code, string) < 0, + for i >= hi, strcmp (table[i].code, string) > 0. */ + size_t mid = (hi + lo) >> 1; /* >= lo, < hi */ + int cmp = strcmp (table[mid].code, string); + if (cmp < 0) + lo = mid + 1; + else if (cmp > 0) + hi = mid; + else + { + /* Found an i with + strcmp (language_table[i].code, string) == 0. + Find the entire interval of such i. */ + { + size_t i; + + for (i = mid; i > lo; ) + { + i--; + if (strcmp (table[i].code, string) < 0) + { + lo = i + 1; + break; + } + } + } + { + size_t i; + + for (i = mid; i < hi; i++) + { + if (strcmp (table[i].code, string) > 0) + { + hi = i; + break; + } + } + } + /* The set of i with + strcmp (language_table[i].code, string) == 0 + is the interval [lo, hi-1]. */ + break; + } + } + result->lo = lo; + result->hi = hi; +} + +/* Like setlocale, but accept also locale names in the form ll or ll_CC, + where ll is an ISO 639 language code and CC is an ISO 3166 country code. */ +static char * +setlocale_unixlike (int category, const char *locale) +{ + char *result; + char llCC_buf[64]; + char ll_buf[64]; + char CC_buf[64]; + + /* First, try setlocale with the original argument unchanged. */ + result = setlocale (category, locale); + if (result != NULL) + return result; + + /* Otherwise, assume the argument is in the form + language[_territory][.codeset][@modifier] + and try to map it using the tables. */ + if (strlen (locale) < sizeof (llCC_buf)) + { + /* Second try: Remove the codeset part. */ + { + const char *p = locale; + char *q = llCC_buf; + + /* Copy the part before the dot. */ + for (; *p != '\0' && *p != '.'; p++, q++) + *q = *p; + if (*p == '.') + /* Skip the part up to the '@', if any. */ + for (; *p != '\0' && *p != '@'; p++) + ; + /* Copy the part starting with '@', if any. */ + for (; *p != '\0'; p++, q++) + *q = *p; + *q = '\0'; + } + /* llCC_buf now contains + language[_territory][@modifier] + */ + if (strcmp (llCC_buf, locale) != 0) + { + result = setlocale (category, llCC_buf); + if (result != NULL) + return result; + } + /* Look it up in language_table. */ + { + range_t range; + size_t i; + + search (language_table, + sizeof (language_table) / sizeof (language_table[0]), + llCC_buf, + &range); + + for (i = range.lo; i < range.hi; i++) + { + /* Try the replacement in language_table[i]. */ + result = setlocale (category, language_table[i].english); + if (result != NULL) + return result; + } + } + /* Split language[_territory][@modifier] + into ll_buf = language[@modifier] + and CC_buf = territory + */ + { + const char *underscore = strchr (llCC_buf, '_'); + if (underscore != NULL) + { + const char *territory_start = underscore + 1; + const char *territory_end = strchr (territory_start, '@'); + if (territory_end == NULL) + territory_end = territory_start + strlen (territory_start); + + memcpy (ll_buf, llCC_buf, underscore - llCC_buf); + strcpy (ll_buf + (underscore - llCC_buf), territory_end); + + memcpy (CC_buf, territory_start, territory_end - territory_start); + CC_buf[territory_end - territory_start] = '\0'; + + { + /* Look up ll_buf in language_table + and CC_buf in country_table. */ + range_t language_range; + + search (language_table, + sizeof (language_table) / sizeof (language_table[0]), + ll_buf, + &language_range); + if (language_range.lo < language_range.hi) + { + range_t country_range; + + search (country_table, + sizeof (country_table) / sizeof (country_table[0]), + CC_buf, + &country_range); + if (country_range.lo < country_range.hi) + { + size_t i; + size_t j; + + for (i = language_range.lo; i < language_range.hi; i++) + for (j = country_range.lo; j < country_range.hi; j++) + { + /* Concatenate the replacements. */ + const char *part1 = language_table[i].english; + size_t part1_len = strlen (part1); + const char *part2 = country_table[j].english; + size_t part2_len = strlen (part2) + 1; + char buf[64+64]; + + if (!(part1_len + 1 + part2_len <= sizeof (buf))) + abort (); + memcpy (buf, part1, part1_len); + buf[part1_len] = '_'; + memcpy (buf + part1_len + 1, part2, part2_len); + + /* Try the concatenated replacements. */ + result = setlocale (category, buf); + if (result != NULL) + return result; + } + } + + /* Try omitting the country entirely. This may set a locale + corresponding to the wrong country, but is better than + failing entirely. */ + { + size_t i; + + for (i = language_range.lo; i < language_range.hi; i++) + { + /* Try only the language replacement. */ + result = + setlocale (category, language_table[i].english); + if (result != NULL) + return result; + } + } + } + } + } + } + } + + /* Failed. */ + return NULL; +} + +# else +# define setlocale_unixlike setlocale +# endif + +# if LC_MESSAGES == 1729 + +/* The system does not store an LC_MESSAGES locale category. Do it here. */ +static char lc_messages_name[64] = "C"; + +/* Like setlocale, but support also LC_MESSAGES. */ +static char * +setlocale_single (int category, const char *locale) +{ + if (category == LC_MESSAGES) + { + if (locale != NULL) + { + lc_messages_name[sizeof (lc_messages_name) - 1] = '\0'; + strncpy (lc_messages_name, locale, sizeof (lc_messages_name) - 1); + } + return lc_messages_name; + } + else + return setlocale_unixlike (category, locale); +} + +# else +# define setlocale_single setlocale_unixlike +# endif + +DLL_EXPORTED +char * +libintl_setlocale (int category, const char *locale) +{ + if (locale != NULL && locale[0] == '\0') + { + /* A request to the set the current locale to the default locale. */ + if (category == LC_ALL) + { + /* Set LC_CTYPE first. Then the other categories. */ + static int const categories[] = + { + LC_NUMERIC, + LC_TIME, + LC_COLLATE, + LC_MONETARY, + LC_MESSAGES + }; + char *saved_locale; + const char *base_name; + unsigned int i; + + /* Back up the old locale, in case one of the steps fails. */ + saved_locale = setlocale (LC_ALL, NULL); + if (saved_locale == NULL) + return NULL; + saved_locale = strdup (saved_locale); + if (saved_locale == NULL) + return NULL; + + /* Set LC_CTYPE category. Set all other categories (except possibly + LC_MESSAGES) to the same value in the same call; this is likely to + save calls. */ + base_name = + gl_locale_name_environ (LC_CTYPE, category_to_name (LC_CTYPE)); + if (base_name == NULL) + base_name = gl_locale_name_default (); + + if (setlocale_unixlike (LC_ALL, base_name) == NULL) + goto fail; + + for (i = 0; i < sizeof (categories) / sizeof (categories[0]); i++) + { + int cat = categories[i]; + const char *name; + + name = gl_locale_name_environ (cat, category_to_name (cat)); + if (name == NULL) + name = gl_locale_name_default (); + + /* If name is the same as base_name, it has already been set + through the setlocale call before the loop. */ + if (strcmp (name, base_name) != 0 +# if LC_MESSAGES == 1729 + || cat == LC_MESSAGES +# endif + ) + if (setlocale_single (cat, name) == NULL) + goto fail; + } + + /* All steps were successful. */ + free (saved_locale); + return setlocale (LC_ALL, NULL); + + fail: + if (saved_locale[0] != '\0') /* don't risk an endless recursion */ + setlocale (LC_ALL, saved_locale); + free (saved_locale); + return NULL; + } + else + { + const char *name = + gl_locale_name_environ (category, category_to_name (category)); + if (name == NULL) + name = gl_locale_name_default (); + + return setlocale_single (category, name); + } + } + else + return setlocale_single (category, locale); +} + +# if HAVE_NEWLOCALE + +DLL_EXPORTED +locale_t +libintl_newlocale (int category_mask, const char *locale, locale_t base) +{ + if (category_mask != 0 && locale != NULL && locale[0] == '\0') + { + /* A request to construct a locale_t object that refers to the default + locale. */ + + /* Set LC_CTYPE first. Then the other categories. */ + static struct { int cat; int mask; } const categories[] = + { + { LC_CTYPE, LC_CTYPE_MASK }, + { LC_NUMERIC, LC_NUMERIC_MASK }, + { LC_TIME, LC_TIME_MASK }, + { LC_COLLATE, LC_COLLATE_MASK }, + { LC_MONETARY, LC_MONETARY_MASK }, + { LC_MESSAGES, LC_MESSAGES_MASK } + }; + + locale_t orig_base = base; + + if ((LC_ALL_MASK & ~category_mask) == 0) + { + const char *base_name; + unsigned int i; + + /* Set LC_CTYPE category. Set all other categories (except possibly + LC_MESSAGES) to the same value in the same call; this is likely to + save calls. */ + base_name = + gl_locale_name_environ (LC_CTYPE, category_to_name (LC_CTYPE)); + if (base_name == NULL) + base_name = gl_locale_name_default (); + + base = newlocale (LC_ALL_MASK, base_name, base); + if (base == NULL) + return NULL; + + for (i = 1; i < sizeof (categories) / sizeof (categories[0]); i++) + { + int category = categories[i].cat; + int category_mask = categories[i].mask; + const char *name; + + name = + gl_locale_name_environ (category, category_to_name (category)); + if (name == NULL) + name = gl_locale_name_default (); + + /* If name is the same as base_name, it has already been set + through the setlocale call before the loop. */ + if (strcmp (name, base_name) != 0) + { + locale_t copy = newlocale (category_mask, name, base); + if (copy == NULL) + goto fail; + /* No need to call freelocale (base) if copy != base; the + newlocale function already takes care of doing it. */ + base = copy; + } + } + } + else + { + unsigned int i; + + for (i = 0; i < sizeof (categories) / sizeof (categories[0]); i++) + { + int cat_mask = categories[i].mask; + + if ((category_mask & cat_mask) != 0) + { + int cat = categories[i].cat; + const char *name; + locale_t copy; + + name = gl_locale_name_environ (cat, category_to_name (cat)); + if (name == NULL) + name = gl_locale_name_default (); + + copy = newlocale (cat_mask, name, base); + if (copy == NULL) + goto fail; + /* No need to call freelocale (base) if copy != base; the + newlocale function already takes care of doing it. */ + base = copy; + } + } + } + + /* All steps were successful. */ + return base; + + fail: + if (base != NULL && orig_base == NULL) + { + int saved_errno = errno; + freelocale (base); + errno = saved_errno; + } + return NULL; + } + else + return newlocale (category_mask, locale, base); +} + +# endif + +#endif diff --git a/libmednahawk/intl/textdomain.c b/libmednahawk/intl/textdomain.c new file mode 100644 index 0000000000..4c7cee22e2 --- /dev/null +++ b/libmednahawk/intl/textdomain.c @@ -0,0 +1,127 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000-2003, 2005-2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* Handle multi-threaded applications. */ +#ifdef _LIBC +# include +# define gl_rwlock_define __libc_rwlock_define +# define gl_rwlock_wrlock __libc_rwlock_wrlock +# define gl_rwlock_unlock __libc_rwlock_unlock +#else +# include "lock.h" +#endif + +/* @@ end of prolog @@ */ + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN libintl_textdomain +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +gl_rwlock_define (extern, _nl_state_lock attribute_hidden) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (const char *domainname) +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + gl_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + gl_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/libmednahawk/intl/threadlib.c b/libmednahawk/intl/threadlib.c new file mode 100644 index 0000000000..705ca95b53 --- /dev/null +++ b/libmednahawk/intl/threadlib.c @@ -0,0 +1,75 @@ +/* Multithreading primitives. + Copyright (C) 2005-2009 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible , 2005. */ + +#include + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library. */ + +# include +# include + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The function to be executed by a dummy thread. */ +static void * +dummy_thread_func (void *arg) +{ + return arg; +} + +int +glthread_in_use (void) +{ + static int tested; + static int result; /* 1: linked with -lpthread, 0: only with libc */ + + if (!tested) + { + pthread_t thread; + + if (pthread_create (&thread, NULL, dummy_thread_func, NULL) != 0) + /* Thread creation failed. */ + result = 0; + else + { + /* Thread creation works. */ + void *retval; + if (pthread_join (thread, &retval) != 0) + abort (); + result = 1; + } + tested = 1; + } + return result; +} + +# endif + +#endif + +/* ========================================================================= */ + +/* This declaration is solely to ensure that after preprocessing + this file is never empty. */ +typedef int dummy; diff --git a/libmednahawk/intl/tsearch.c b/libmednahawk/intl/tsearch.c new file mode 100644 index 0000000000..3f61402df7 --- /dev/null +++ b/libmednahawk/intl/tsearch.c @@ -0,0 +1,684 @@ +/* Copyright (C) 1995, 1996, 1997, 2000, 2006 Free Software Foundation, Inc. + Contributed by Bernd Schmidt , 1997. + + NOTE: The canonical source of this file is maintained with the GNU C + Library. Bugs can be reported to bug-glibc@gnu.org. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tree search for red/black trees. + The algorithm for adding nodes is taken from one of the many "Algorithms" + books by Robert Sedgewick, although the implementation differs. + The algorithm for deleting nodes can probably be found in a book named + "Introduction to Algorithms" by Cormen/Leiserson/Rivest. At least that's + the book that my professor took most algorithms from during the "Data + Structures" course... + + Totally public domain. */ + +/* Red/black trees are binary trees in which the edges are colored either red + or black. They have the following properties: + 1. The number of black edges on every path from the root to a leaf is + constant. + 2. No two red edges are adjacent. + Therefore there is an upper bound on the length of every path, it's + O(log n) where n is the number of nodes in the tree. No path can be longer + than 1+2*P where P is the length of the shortest path in the tree. + Useful for the implementation: + 3. If one of the children of a node is NULL, then the other one is red + (if it exists). + + In the implementation, not the edges are colored, but the nodes. The color + interpreted as the color of the edge leading to this node. The color is + meaningless for the root node, but we color the root node black for + convenience. All added nodes are red initially. + + Adding to a red/black tree is rather easy. The right place is searched + with a usual binary tree search. Additionally, whenever a node N is + reached that has two red successors, the successors are colored black and + the node itself colored red. This moves red edges up the tree where they + pose less of a problem once we get to really insert the new node. Changing + N's color to red may violate rule 2, however, so rotations may become + necessary to restore the invariants. Adding a new red leaf may violate + the same rule, so afterwards an additional check is run and the tree + possibly rotated. + + Deleting is hairy. There are mainly two nodes involved: the node to be + deleted (n1), and another node that is to be unchained from the tree (n2). + If n1 has a successor (the node with a smallest key that is larger than + n1), then the successor becomes n2 and its contents are copied into n1, + otherwise n1 becomes n2. + Unchaining a node may violate rule 1: if n2 is black, one subtree is + missing one black edge afterwards. The algorithm must try to move this + error upwards towards the root, so that the subtree that does not have + enough black edges becomes the whole tree. Once that happens, the error + has disappeared. It may not be necessary to go all the way up, since it + is possible that rotations and recoloring can fix the error before that. + + Although the deletion algorithm must walk upwards through the tree, we + do not store parent pointers in the nodes. Instead, delete allocates a + small array of parent pointers and fills it while descending the tree. + Since we know that the length of a path is O(log n), where n is the number + of nodes, this is likely to use less memory. */ + +/* Tree rotations look like this: + A C + / \ / \ + B C A G + / \ / \ --> / \ + D E F G B F + / \ + D E + + In this case, A has been rotated left. This preserves the ordering of the + binary tree. */ + +#include + +/* Specification. */ +#ifdef IN_LIBINTL +# include "tsearch.h" +#else +# include +#endif + +#include + +typedef int (*__compar_fn_t) (const void *, const void *); +typedef void (*__action_fn_t) (const void *, VISIT, int); + +#ifndef weak_alias +# define __tsearch tsearch +# define __tfind tfind +# define __tdelete tdelete +# define __twalk twalk +#endif + +#ifndef internal_function +/* Inside GNU libc we mark some function in a special way. In other + environments simply ignore the marking. */ +# define internal_function +#endif + +typedef struct node_t +{ + /* Callers expect this to be the first element in the structure - do not + move! */ + const void *key; + struct node_t *left; + struct node_t *right; + unsigned int red:1; +} *node; +typedef const struct node_t *const_node; + +#undef DEBUGGING + +#ifdef DEBUGGING + +/* Routines to check tree invariants. */ + +#include + +#define CHECK_TREE(a) check_tree(a) + +static void +check_tree_recurse (node p, int d_sofar, int d_total) +{ + if (p == NULL) + { + assert (d_sofar == d_total); + return; + } + + check_tree_recurse (p->left, d_sofar + (p->left && !p->left->red), d_total); + check_tree_recurse (p->right, d_sofar + (p->right && !p->right->red), d_total); + if (p->left) + assert (!(p->left->red && p->red)); + if (p->right) + assert (!(p->right->red && p->red)); +} + +static void +check_tree (node root) +{ + int cnt = 0; + node p; + if (root == NULL) + return; + root->red = 0; + for(p = root->left; p; p = p->left) + cnt += !p->red; + check_tree_recurse (root, 0, cnt); +} + + +#else + +#define CHECK_TREE(a) + +#endif + +/* Possibly "split" a node with two red successors, and/or fix up two red + edges in a row. ROOTP is a pointer to the lowest node we visited, PARENTP + and GPARENTP pointers to its parent/grandparent. P_R and GP_R contain the + comparison values that determined which way was taken in the tree to reach + ROOTP. MODE is 1 if we need not do the split, but must check for two red + edges between GPARENTP and ROOTP. */ +static void +maybe_split_for_insert (node *rootp, node *parentp, node *gparentp, + int p_r, int gp_r, int mode) +{ + node root = *rootp; + node *rp, *lp; + rp = &(*rootp)->right; + lp = &(*rootp)->left; + + /* See if we have to split this node (both successors red). */ + if (mode == 1 + || ((*rp) != NULL && (*lp) != NULL && (*rp)->red && (*lp)->red)) + { + /* This node becomes red, its successors black. */ + root->red = 1; + if (*rp) + (*rp)->red = 0; + if (*lp) + (*lp)->red = 0; + + /* If the parent of this node is also red, we have to do + rotations. */ + if (parentp != NULL && (*parentp)->red) + { + node gp = *gparentp; + node p = *parentp; + /* There are two main cases: + 1. The edge types (left or right) of the two red edges differ. + 2. Both red edges are of the same type. + There exist two symmetries of each case, so there is a total of + 4 cases. */ + if ((p_r > 0) != (gp_r > 0)) + { + /* Put the child at the top of the tree, with its parent + and grandparent as successors. */ + p->red = 1; + gp->red = 1; + root->red = 0; + if (p_r < 0) + { + /* Child is left of parent. */ + p->left = *rp; + *rp = p; + gp->right = *lp; + *lp = gp; + } + else + { + /* Child is right of parent. */ + p->right = *lp; + *lp = p; + gp->left = *rp; + *rp = gp; + } + *gparentp = root; + } + else + { + *gparentp = *parentp; + /* Parent becomes the top of the tree, grandparent and + child are its successors. */ + p->red = 0; + gp->red = 1; + if (p_r < 0) + { + /* Left edges. */ + gp->left = p->right; + p->right = gp; + } + else + { + /* Right edges. */ + gp->right = p->left; + p->left = gp; + } + } + } + } +} + +/* Find or insert datum into search tree. + KEY is the key to be located, ROOTP is the address of tree root, + COMPAR the ordering function. */ +void * +__tsearch (const void *key, void **vrootp, __compar_fn_t compar) +{ + node q; + node *parentp = NULL, *gparentp = NULL; + node *rootp = (node *) vrootp; + node *nextp; + int r = 0, p_r = 0, gp_r = 0; /* No they might not, Mr Compiler. */ + + if (rootp == NULL) + return NULL; + + /* This saves some additional tests below. */ + if (*rootp != NULL) + (*rootp)->red = 0; + + CHECK_TREE (*rootp); + + nextp = rootp; + while (*nextp != NULL) + { + node root = *rootp; + r = (*compar) (key, root->key); + if (r == 0) + return root; + + maybe_split_for_insert (rootp, parentp, gparentp, p_r, gp_r, 0); + /* If that did any rotations, parentp and gparentp are now garbage. + That doesn't matter, because the values they contain are never + used again in that case. */ + + nextp = r < 0 ? &root->left : &root->right; + if (*nextp == NULL) + break; + + gparentp = parentp; + parentp = rootp; + rootp = nextp; + + gp_r = p_r; + p_r = r; + } + + q = (struct node_t *) malloc (sizeof (struct node_t)); + if (q != NULL) + { + *nextp = q; /* link new node to old */ + q->key = key; /* initialize new node */ + q->red = 1; + q->left = q->right = NULL; + + if (nextp != rootp) + /* There may be two red edges in a row now, which we must avoid by + rotating the tree. */ + maybe_split_for_insert (nextp, rootp, parentp, r, p_r, 1); + } + + return q; +} +#ifdef weak_alias +weak_alias (__tsearch, tsearch) +#endif + + +/* Find datum in search tree. + KEY is the key to be located, ROOTP is the address of tree root, + COMPAR the ordering function. */ +void * +__tfind (key, vrootp, compar) + const void *key; + void *const *vrootp; + __compar_fn_t compar; +{ + node *rootp = (node *) vrootp; + + if (rootp == NULL) + return NULL; + + CHECK_TREE (*rootp); + + while (*rootp != NULL) + { + node root = *rootp; + int r; + + r = (*compar) (key, root->key); + if (r == 0) + return root; + + rootp = r < 0 ? &root->left : &root->right; + } + return NULL; +} +#ifdef weak_alias +weak_alias (__tfind, tfind) +#endif + + +/* Delete node with given key. + KEY is the key to be deleted, ROOTP is the address of the root of tree, + COMPAR the comparison function. */ +void * +__tdelete (const void *key, void **vrootp, __compar_fn_t compar) +{ + node p, q, r, retval; + int cmp; + node *rootp = (node *) vrootp; + node root, unchained; + /* Stack of nodes so we remember the parents without recursion. It's + _very_ unlikely that there are paths longer than 40 nodes. The tree + would need to have around 250.000 nodes. */ + int stacksize = 100; + int sp = 0; + node *nodestack[100]; + + if (rootp == NULL) + return NULL; + p = *rootp; + if (p == NULL) + return NULL; + + CHECK_TREE (p); + + while ((cmp = (*compar) (key, (*rootp)->key)) != 0) + { + if (sp == stacksize) + abort (); + + nodestack[sp++] = rootp; + p = *rootp; + rootp = ((cmp < 0) + ? &(*rootp)->left + : &(*rootp)->right); + if (*rootp == NULL) + return NULL; + } + + /* This is bogus if the node to be deleted is the root... this routine + really should return an integer with 0 for success, -1 for failure + and errno = ESRCH or something. */ + retval = p; + + /* We don't unchain the node we want to delete. Instead, we overwrite + it with its successor and unchain the successor. If there is no + successor, we really unchain the node to be deleted. */ + + root = *rootp; + + r = root->right; + q = root->left; + + if (q == NULL || r == NULL) + unchained = root; + else + { + node *parent = rootp, *up = &root->right; + for (;;) + { + if (sp == stacksize) + abort (); + nodestack[sp++] = parent; + parent = up; + if ((*up)->left == NULL) + break; + up = &(*up)->left; + } + unchained = *up; + } + + /* We know that either the left or right successor of UNCHAINED is NULL. + R becomes the other one, it is chained into the parent of UNCHAINED. */ + r = unchained->left; + if (r == NULL) + r = unchained->right; + if (sp == 0) + *rootp = r; + else + { + q = *nodestack[sp-1]; + if (unchained == q->right) + q->right = r; + else + q->left = r; + } + + if (unchained != root) + root->key = unchained->key; + if (!unchained->red) + { + /* Now we lost a black edge, which means that the number of black + edges on every path is no longer constant. We must balance the + tree. */ + /* NODESTACK now contains all parents of R. R is likely to be NULL + in the first iteration. */ + /* NULL nodes are considered black throughout - this is necessary for + correctness. */ + while (sp > 0 && (r == NULL || !r->red)) + { + node *pp = nodestack[sp - 1]; + p = *pp; + /* Two symmetric cases. */ + if (r == p->left) + { + /* Q is R's brother, P is R's parent. The subtree with root + R has one black edge less than the subtree with root Q. */ + q = p->right; + if (q->red) + { + /* If Q is red, we know that P is black. We rotate P left + so that Q becomes the top node in the tree, with P below + it. P is colored red, Q is colored black. + This action does not change the black edge count for any + leaf in the tree, but we will be able to recognize one + of the following situations, which all require that Q + is black. */ + q->red = 0; + p->red = 1; + /* Left rotate p. */ + p->right = q->left; + q->left = p; + *pp = q; + /* Make sure pp is right if the case below tries to use + it. */ + nodestack[sp++] = pp = &q->left; + q = p->right; + } + /* We know that Q can't be NULL here. We also know that Q is + black. */ + if ((q->left == NULL || !q->left->red) + && (q->right == NULL || !q->right->red)) + { + /* Q has two black successors. We can simply color Q red. + The whole subtree with root P is now missing one black + edge. Note that this action can temporarily make the + tree invalid (if P is red). But we will exit the loop + in that case and set P black, which both makes the tree + valid and also makes the black edge count come out + right. If P is black, we are at least one step closer + to the root and we'll try again the next iteration. */ + q->red = 1; + r = p; + } + else + { + /* Q is black, one of Q's successors is red. We can + repair the tree with one operation and will exit the + loop afterwards. */ + if (q->right == NULL || !q->right->red) + { + /* The left one is red. We perform the same action as + in maybe_split_for_insert where two red edges are + adjacent but point in different directions: + Q's left successor (let's call it Q2) becomes the + top of the subtree we are looking at, its parent (Q) + and grandparent (P) become its successors. The former + successors of Q2 are placed below P and Q. + P becomes black, and Q2 gets the color that P had. + This changes the black edge count only for node R and + its successors. */ + node q2 = q->left; + q2->red = p->red; + p->right = q2->left; + q->left = q2->right; + q2->right = q; + q2->left = p; + *pp = q2; + p->red = 0; + } + else + { + /* It's the right one. Rotate P left. P becomes black, + and Q gets the color that P had. Q's right successor + also becomes black. This changes the black edge + count only for node R and its successors. */ + q->red = p->red; + p->red = 0; + + q->right->red = 0; + + /* left rotate p */ + p->right = q->left; + q->left = p; + *pp = q; + } + + /* We're done. */ + sp = 1; + r = NULL; + } + } + else + { + /* Comments: see above. */ + q = p->left; + if (q->red) + { + q->red = 0; + p->red = 1; + p->left = q->right; + q->right = p; + *pp = q; + nodestack[sp++] = pp = &q->right; + q = p->left; + } + if ((q->right == NULL || !q->right->red) + && (q->left == NULL || !q->left->red)) + { + q->red = 1; + r = p; + } + else + { + if (q->left == NULL || !q->left->red) + { + node q2 = q->right; + q2->red = p->red; + p->left = q2->right; + q->right = q2->left; + q2->left = q; + q2->right = p; + *pp = q2; + p->red = 0; + } + else + { + q->red = p->red; + p->red = 0; + q->left->red = 0; + p->left = q->right; + q->right = p; + *pp = q; + } + sp = 1; + r = NULL; + } + } + --sp; + } + if (r != NULL) + r->red = 0; + } + + free (unchained); + return retval; +} +#ifdef weak_alias +weak_alias (__tdelete, tdelete) +#endif + + +/* Walk the nodes of a tree. + ROOT is the root of the tree to be walked, ACTION the function to be + called at each node. LEVEL is the level of ROOT in the whole tree. */ +static void +internal_function +trecurse (const void *vroot, __action_fn_t action, int level) +{ + const_node root = (const_node) vroot; + + if (root->left == NULL && root->right == NULL) + (*action) (root, leaf, level); + else + { + (*action) (root, preorder, level); + if (root->left != NULL) + trecurse (root->left, action, level + 1); + (*action) (root, postorder, level); + if (root->right != NULL) + trecurse (root->right, action, level + 1); + (*action) (root, endorder, level); + } +} + + +/* Walk the nodes of a tree. + ROOT is the root of the tree to be walked, ACTION the function to be + called at each node. */ +void +__twalk (const void *vroot, __action_fn_t action) +{ + const_node root = (const_node) vroot; + + CHECK_TREE (root); + + if (root != NULL && action != NULL) + trecurse (root, action, 0); +} +#ifdef weak_alias +weak_alias (__twalk, twalk) +#endif + + +#ifdef _LIBC + +/* The standardized functions miss an important functionality: the + tree cannot be removed easily. We provide a function to do this. */ +static void +internal_function +tdestroy_recurse (node root, __free_fn_t freefct) +{ + if (root->left != NULL) + tdestroy_recurse (root->left, freefct); + if (root->right != NULL) + tdestroy_recurse (root->right, freefct); + (*freefct) ((void *) root->key); + /* Free the node itself. */ + free (root); +} + +void +__tdestroy (void *vroot, __free_fn_t freefct) +{ + node root = (node) vroot; + + CHECK_TREE (root); + + if (root != NULL) + tdestroy_recurse (root, freefct); +} +weak_alias (__tdestroy, tdestroy) + +#endif /* _LIBC */ diff --git a/libmednahawk/intl/tsearch.h b/libmednahawk/intl/tsearch.h new file mode 100644 index 0000000000..1cda330764 --- /dev/null +++ b/libmednahawk/intl/tsearch.h @@ -0,0 +1,83 @@ +/* Binary tree data structure. + Copyright (C) 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _TSEARCH_H +#define _TSEARCH_H + +#if HAVE_TSEARCH + +/* Get tseach(), tfind(), tdelete(), twalk() declarations. */ +#include + +#else + +#ifdef __cplusplus +extern "C" { +#endif + +/* See , + + for details. */ + +typedef enum +{ + preorder, + postorder, + endorder, + leaf +} +VISIT; + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is returned. Otherwise, a new element equal to KEY + is inserted in the tree and is returned. */ +extern void * tsearch (const void *key, void **vrootp, + int (*compar) (const void *, const void *)); + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is returned. Otherwise, NULL is returned. */ +extern void * tfind (const void *key, void *const *vrootp, + int (*compar) (const void *, const void *)); + +/* Searches an element in the tree *VROOTP that compares equal to KEY. + If one is found, it is removed from the tree, and its parent node is + returned. Otherwise, NULL is returned. */ +extern void * tdelete (const void *key, void **vrootp, + int (*compar) (const void *, const void *)); + +/* Perform a depth-first, left-to-right traversal of the tree VROOT. + The ACTION function is called: + - for non-leaf nodes: 3 times, before the left subtree traversal, + after the left subtree traversal but before the right subtree traversal, + and after the right subtree traversal, + - for leaf nodes: once. + The arguments passed to ACTION are: + 1. the node; it can be casted to a 'const void * const *', i.e. into a + pointer to the key, + 2. an indicator which visit of the node this is, + 3. the level of the node in the tree (0 for the root). */ +extern void twalk (const void *vroot, + void (*action) (const void *, VISIT, int)); + +#ifdef __cplusplus +} +#endif + +#endif + +#endif /* _TSEARCH_H */ diff --git a/libmednahawk/intl/vasnprintf.c b/libmednahawk/intl/vasnprintf.c new file mode 100644 index 0000000000..f43af0cb76 --- /dev/null +++ b/libmednahawk/intl/vasnprintf.c @@ -0,0 +1,5568 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 1999, 2002-2010 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* This file can be parametrized with the following macros: + VASNPRINTF The name of the function being defined. + FCHAR_T The element type of the format string. + DCHAR_T The element type of the destination (result) string. + FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. MUST be set if + FCHAR_T and DCHAR_T are not the same type. + DIRECTIVE Structure denoting a format directive. + Depends on FCHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on FCHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on FCHAR_T. + DCHAR_CPY memcpy like function for DCHAR_T[] arrays. + DCHAR_SET memset like function for DCHAR_T[] arrays. + DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays. + SNPRINTF The system's snprintf (or similar) function. + This may be either snprintf or swprintf. + TCHAR_T The element type of the argument and result string + of the said SNPRINTF function. This may be either + char or wchar_t. The code exploits that + sizeof (TCHAR_T) | sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). + DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type. + DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[]. + DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t. + DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t. + DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. */ + +/* Tell glibc's to provide a prototype for snprintf(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifndef VASNPRINTF +# include +#endif +#ifndef IN_LIBINTL +# include +#endif + +/* Specification. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# include "vasnwprintf.h" +# else +# include "vasnprintf.h" +# endif +#endif + +#include /* localeconv() */ +#include /* snprintf(), sprintf() */ +#include /* abort(), malloc(), realloc(), free() */ +#include /* memcpy(), strlen() */ +#include /* errno */ +#include /* CHAR_BIT */ +#include /* DBL_MAX_EXP, LDBL_MAX_EXP */ +#if HAVE_NL_LANGINFO +# include +#endif +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# include "wprintf-parse.h" +# else +# include "printf-parse.h" +# endif +#endif + +/* Checked size_t computations. */ +#include "xsize.h" + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "float+.h" +#endif + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnand-nolibm.h" +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "fpucw.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnand-nolibm.h" +# include "printf-frexp.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "printf-frexpl.h" +# include "fpucw.h" +#endif + +/* Default parameters. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# define VASNPRINTF vasnwprintf +# define FCHAR_T wchar_t +# define DCHAR_T wchar_t +# define TCHAR_T wchar_t +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE wchar_t_directive +# define DIRECTIVES wchar_t_directives +# define PRINTF_PARSE wprintf_parse +# define DCHAR_CPY wmemcpy +# define DCHAR_SET wmemset +# else +# define VASNPRINTF vasnprintf +# define FCHAR_T char +# define DCHAR_T char +# define TCHAR_T char +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +# define PRINTF_PARSE printf_parse +# define DCHAR_CPY memcpy +# define DCHAR_SET memset +# endif +#endif +#if WIDE_CHAR_VERSION + /* TCHAR_T is wchar_t. */ +# define USE_SNPRINTF 1 +# if HAVE_DECL__SNWPRINTF + /* On Windows, the function swprintf() has a different signature than + on Unix; we use the function _snwprintf() or - on mingw - snwprintf() + instead. The mingw function snwprintf() has fewer bugs than the + MSVCRT function _snwprintf(), so prefer that. */ +# if defined __MINGW32__ +# define SNPRINTF snwprintf +# else +# define SNPRINTF _snwprintf +# endif +# else + /* Unix. */ +# define SNPRINTF swprintf +# endif +#else + /* TCHAR_T is char. */ + /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'. + But don't use it on BeOS, since BeOS snprintf produces no output if the + size argument is >= 0x3000000. + Also don't use it on Linux libc5, since there snprintf with size = 1 + writes any output without bounds, like sprintf. */ +# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && !(__GNU_LIBRARY__ == 1) +# define USE_SNPRINTF 1 +# else +# define USE_SNPRINTF 0 +# endif +# if HAVE_DECL__SNPRINTF + /* Windows. The mingw function snprintf() has fewer bugs than the MSVCRT + function _snprintf(), so prefer that. */ +# if defined __MINGW32__ +# define SNPRINTF snprintf + /* Here we need to call the native snprintf, not rpl_snprintf. */ +# undef snprintf +# else +# define SNPRINTF _snprintf +# endif +# else + /* Unix. */ +# define SNPRINTF snprintf + /* Here we need to call the native snprintf, not rpl_snprintf. */ +# undef snprintf +# endif +#endif +/* Here we need to call the native sprintf, not rpl_sprintf. */ +#undef sprintf + +/* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized" + warnings in this file. Use -Dlint to suppress them. */ +#ifdef lint +# define IF_LINT(Code) Code +#else +# define IF_LINT(Code) /* empty */ +#endif + +/* Avoid some warnings from "gcc -Wshadow". + This file doesn't use the exp() and remainder() functions. */ +#undef exp +#define exp expo +#undef remainder +#define remainder rem + +#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && !WIDE_CHAR_VERSION +# if (HAVE_STRNLEN && !defined _AIX) +# define local_strnlen strnlen +# else +# ifndef local_strnlen_defined +# define local_strnlen_defined 1 +static size_t +local_strnlen (const char *string, size_t maxlen) +{ + const char *end = memchr (string, '\0', maxlen); + return end ? (size_t) (end - string) : maxlen; +} +# endif +# endif +#endif + +#if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T +# if HAVE_WCSLEN +# define local_wcslen wcslen +# else + /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid + a dependency towards this library, here is a local substitute. + Define this substitute only once, even if this file is included + twice in the same compilation unit. */ +# ifndef local_wcslen_defined +# define local_wcslen_defined 1 +static size_t +local_wcslen (const wchar_t *s) +{ + const wchar_t *ptr; + + for (ptr = s; *ptr != (wchar_t) 0; ptr++) + ; + return ptr - s; +} +# endif +# endif +#endif + +#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && HAVE_WCHAR_T && WIDE_CHAR_VERSION +# if HAVE_WCSNLEN +# define local_wcsnlen wcsnlen +# else +# ifndef local_wcsnlen_defined +# define local_wcsnlen_defined 1 +static size_t +local_wcsnlen (const wchar_t *s, size_t maxlen) +{ + const wchar_t *ptr; + + for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--) + ; + return ptr - s; +} +# endif +# endif +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +/* Determine the decimal-point character according to the current locale. */ +# ifndef decimal_point_char_defined +# define decimal_point_char_defined 1 +static char +decimal_point_char (void) +{ + const char *point; + /* Determine it in a multithread-safe way. We know nl_langinfo is + multithread-safe on glibc systems and MacOS X systems, but is not required + to be multithread-safe by POSIX. sprintf(), however, is multithread-safe. + localeconv() is rarely multithread-safe. */ +# if HAVE_NL_LANGINFO && (__GLIBC__ || (defined __APPLE__ && defined __MACH__)) + point = nl_langinfo (RADIXCHAR); +# elif 1 + char pointbuf[5]; + sprintf (pointbuf, "%#.0f", 1.0); + point = &pointbuf[1]; +# else + point = localeconv () -> decimal_point; +# endif + /* The decimal point is always a single byte: either '.' or ','. */ + return (point[0] != '\0' ? point[0] : '.'); +} +# endif +#endif + +#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ +static int +is_infinite_or_zero (double x) +{ + return isnand (x) || x + x == x; +} + +#endif + +#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ +static int +is_infinite_or_zerol (long double x) +{ + return isnanl (x) || x + x == x; +} + +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + +/* Converting 'long double' to decimal without rare rounding bugs requires + real bignums. We use the naming conventions of GNU gmp, but vastly simpler + (and slower) algorithms. */ + +typedef unsigned int mp_limb_t; +# define GMP_LIMB_BITS 32 +typedef int mp_limb_verify[2 * (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS) - 1]; + +typedef unsigned long long mp_twolimb_t; +# define GMP_TWOLIMB_BITS 64 +typedef int mp_twolimb_verify[2 * (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS) - 1]; + +/* Representation of a bignum >= 0. */ +typedef struct +{ + size_t nlimbs; + mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */ +} mpn_t; + +/* Compute the product of two bignums >= 0. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +multiply (mpn_t src1, mpn_t src2, mpn_t *dest) +{ + const mp_limb_t *p1; + const mp_limb_t *p2; + size_t len1; + size_t len2; + + if (src1.nlimbs <= src2.nlimbs) + { + len1 = src1.nlimbs; + p1 = src1.limbs; + len2 = src2.nlimbs; + p2 = src2.limbs; + } + else + { + len1 = src2.nlimbs; + p1 = src2.limbs; + len2 = src1.nlimbs; + p2 = src1.limbs; + } + /* Now 0 <= len1 <= len2. */ + if (len1 == 0) + { + /* src1 or src2 is zero. */ + dest->nlimbs = 0; + dest->limbs = (mp_limb_t *) malloc (1); + } + else + { + /* Here 1 <= len1 <= len2. */ + size_t dlen; + mp_limb_t *dp; + size_t k, i, j; + + dlen = len1 + len2; + dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t)); + if (dp == NULL) + return NULL; + for (k = len2; k > 0; ) + dp[--k] = 0; + for (i = 0; i < len1; i++) + { + mp_limb_t digit1 = p1[i]; + mp_twolimb_t carry = 0; + for (j = 0; j < len2; j++) + { + mp_limb_t digit2 = p2[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + carry += dp[i + j]; + dp[i + j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + dp[i + len2] = (mp_limb_t) carry; + } + /* Normalise. */ + while (dlen > 0 && dp[dlen - 1] == 0) + dlen--; + dest->nlimbs = dlen; + dest->limbs = dp; + } + return dest->limbs; +} + +/* Compute the quotient of a bignum a >= 0 and a bignum b > 0. + a is written as a = q * b + r with 0 <= r < b. q is the quotient, r + the remainder. + Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd, + q is incremented. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +divide (mpn_t a, mpn_t b, mpn_t *q) +{ + /* Algorithm: + First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]] + with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS). + If m=n=1, perform a single-precision division: + r:=0, j:=m, + while j>0 do + {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j = + = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r=n>1, perform a multiple-precision division: + We have a/b < beta^(m-n+1). + s:=intDsize-1-(highest bit in b[n-1]), 0<=s=beta/2. + For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).} + Compute q* : + q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]). + In case of overflow (q* >= beta) set q* := beta-1. + Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2] + and c3 := b[n-2] * q*. + {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow + occurred. Furthermore 0 <= c3 < beta^2. + If there was overflow and + r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2, + the next test can be skipped.} + While c3 > c2, {Here 0 <= c2 < c3 < beta^2} + Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2]. + If q* > 0: + Put r := r - b * q* * beta^j. In detail: + [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]]. + hence: u:=0, for i:=0 to n-1 do + u := u + q* * b[i], + r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry), + u:=u div beta (+ 1, if carry in subtraction) + r[n+j]:=r[n+j]-u. + {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1 + < q* + 1 <= beta, + the carry u does not overflow.} + If a negative carry occurs, put q* := q* - 1 + and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]]. + Set q[j] := q*. + Normalise [q[m-n],..,q[0]]; this yields the quotient q. + Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the + rest r. + The room for q[j] can be allocated at the memory location of r[n+j]. + Finally, round-to-even: + Shift r left by 1 bit. + If r > b or if r = b and q[0] is odd, q := q+1. + */ + const mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + const mp_limb_t *b_ptr = b.limbs; + size_t b_len = b.nlimbs; + mp_limb_t *roomptr; + mp_limb_t *tmp_roomptr = NULL; + mp_limb_t *q_ptr; + size_t q_len; + mp_limb_t *r_ptr; + size_t r_len; + + /* Allocate room for a_len+2 digits. + (Need a_len+1 digits for the real division and 1 more digit for the + final rounding of q.) */ + roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t)); + if (roomptr == NULL) + return NULL; + + /* Normalise a. */ + while (a_len > 0 && a_ptr[a_len - 1] == 0) + a_len--; + + /* Normalise b. */ + for (;;) + { + if (b_len == 0) + /* Division by zero. */ + abort (); + if (b_ptr[b_len - 1] == 0) + b_len--; + else + break; + } + + /* Here m = a_len >= 0 and n = b_len > 0. */ + + if (a_len < b_len) + { + /* m beta^(m-2) <= a/b < beta^m */ + r_ptr = roomptr; + q_ptr = roomptr + 1; + { + mp_limb_t den = b_ptr[0]; + mp_limb_t remainder = 0; + const mp_limb_t *sourceptr = a_ptr + a_len; + mp_limb_t *destptr = q_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr; + *--destptr = num / den; + remainder = num % den; + } + /* Normalise and store r. */ + if (remainder > 0) + { + r_ptr[0] = remainder; + r_len = 1; + } + else + r_len = 0; + /* Normalise q. */ + q_len = a_len; + if (q_ptr[q_len - 1] == 0) + q_len--; + } + } + else + { + /* n>1: multiple precision division. + beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==> + beta^(m-n-1) <= a/b < beta^(m-n+1). */ + /* Determine s. */ + size_t s; + { + mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */ + s = 31; + if (msd >= 0x10000) + { + msd = msd >> 16; + s -= 16; + } + if (msd >= 0x100) + { + msd = msd >> 8; + s -= 8; + } + if (msd >= 0x10) + { + msd = msd >> 4; + s -= 4; + } + if (msd >= 0x4) + { + msd = msd >> 2; + s -= 2; + } + if (msd >= 0x2) + { + msd = msd >> 1; + s -= 1; + } + } + /* 0 <= s < GMP_LIMB_BITS. + Copy b, shifting it left by s bits. */ + if (s > 0) + { + tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t)); + if (tmp_roomptr == NULL) + { + free (roomptr); + return NULL; + } + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = tmp_roomptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + /* accu must be zero, since that was how s was determined. */ + if (accu != 0) + abort (); + } + b_ptr = tmp_roomptr; + } + /* Copy a, shifting it left by s bits, yields r. + Memory layout: + At the beginning: r = roomptr[0..a_len], + at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */ + r_ptr = roomptr; + if (s == 0) + { + memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t)); + r_ptr[a_len] = 0; + } + else + { + const mp_limb_t *sourceptr = a_ptr; + mp_limb_t *destptr = r_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = a_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + *destptr++ = (mp_limb_t) accu; + } + q_ptr = roomptr + b_len; + q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */ + { + size_t j = a_len - b_len; /* m-n */ + mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */ + mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */ + mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */ + ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd; + /* Division loop, traversed m-n+1 times. + j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */ + for (;;) + { + mp_limb_t q_star; + mp_limb_t c1; + if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */ + { + /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */ + mp_twolimb_t num = + ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS) + | r_ptr[j + b_len - 1]; + q_star = num / b_msd; + c1 = num % b_msd; + } + else + { + /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */ + q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */ + /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta + <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta + <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) + {<= beta !}. + If yes, jump directly to the subtraction loop. + (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta + <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */ + if (r_ptr[j + b_len] > b_msd + || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd) + /* r[j+n] >= b[n-1]+1 or + r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a + carry. */ + goto subtract; + } + /* q_star = q*, + c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, 0, decrease it by + b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2 + this can happen only twice. */ + if (c3 > c2) + { + q_star = q_star - 1; /* q* := q* - 1 */ + if (c3 - c2 > b_msdd) + q_star = q_star - 1; /* q* := q* - 1 */ + } + } + if (q_star > 0) + subtract: + { + /* Subtract r := r - b * q* * beta^j. */ + mp_limb_t cr; + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_twolimb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + /* Here 0 <= carry <= q*. */ + carry = + carry + + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++ + + (mp_limb_t) ~(*destptr); + /* Here 0 <= carry <= beta*q* + beta-1. */ + *destptr++ = ~(mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; /* <= q* */ + } + cr = (mp_limb_t) carry; + } + /* Subtract cr from r_ptr[j + b_len], then forget about + r_ptr[j + b_len]. */ + if (cr > r_ptr[j + b_len]) + { + /* Subtraction gave a carry. */ + q_star = q_star - 1; /* q* := q* - 1 */ + /* Add b back. */ + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_limb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + mp_limb_t source1 = *sourceptr++; + mp_limb_t source2 = *destptr; + *destptr++ = source1 + source2 + carry; + carry = + (carry + ? source1 >= (mp_limb_t) ~source2 + : source1 > (mp_limb_t) ~source2); + } + } + /* Forget about the carry and about r[j+n]. */ + } + } + /* q* is determined. Store it as q[j]. */ + q_ptr[j] = q_star; + if (j == 0) + break; + j--; + } + } + r_len = b_len; + /* Normalise q. */ + if (q_ptr[q_len - 1] == 0) + q_len--; +# if 0 /* Not needed here, since we need r only to compare it with b/2, and + b is shifted left by s bits. */ + /* Shift r right by s bits. */ + if (s > 0) + { + mp_limb_t ptr = r_ptr + r_len; + mp_twolimb_t accu = 0; + size_t count; + for (count = r_len; count > 0; count--) + { + accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS; + accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s); + *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS); + } + } +# endif + /* Normalise r. */ + while (r_len > 0 && r_ptr[r_len - 1] == 0) + r_len--; + } + /* Compare r << 1 with b. */ + if (r_len > b_len) + goto increment_q; + { + size_t i; + for (i = b_len;;) + { + mp_limb_t r_i = + (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) + | (i < r_len ? r_ptr[i] << 1 : 0); + mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); + if (r_i > b_i) + goto increment_q; + if (r_i < b_i) + goto keep_q; + if (i == 0) + break; + i--; + } + } + if (q_len > 0 && ((q_ptr[0] & 1) != 0)) + /* q is odd. */ + increment_q: + { + size_t i; + for (i = 0; i < q_len; i++) + if (++(q_ptr[i]) != 0) + goto keep_q; + q_ptr[q_len++] = 1; + } + keep_q: + if (tmp_roomptr != NULL) + free (tmp_roomptr); + q->limbs = q_ptr; + q->nlimbs = q_len; + return roomptr; +} + +/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal + representation. + Destroys the contents of a. + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +convert_to_decimal (mpn_t a, size_t extra_zeroes) +{ + mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ + size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); + char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes)); + if (c_ptr != NULL) + { + char *d_ptr = c_ptr; + for (; extra_zeroes > 0; extra_zeroes--) + *d_ptr++ = '0'; + while (a_len > 0) + { + /* Divide a by 10^9, in-place. */ + mp_limb_t remainder = 0; + mp_limb_t *ptr = a_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr; + *ptr = num / 1000000000; + remainder = num % 1000000000; + } + /* Store the remainder as 9 decimal digits. */ + for (count = 9; count > 0; count--) + { + *d_ptr++ = '0' + (remainder % 10); + remainder = remainder / 10; + } + /* Normalize a. */ + if (a_ptr[a_len - 1] == 0) + a_len--; + } + /* Remove leading zeroes. */ + while (d_ptr > c_ptr && d_ptr[-1] == '0') + d_ptr--; + /* But keep at least one zero. */ + if (d_ptr == c_ptr) + *d_ptr++ = '0'; + /* Terminate the string. */ + *d_ptr = '\0'; + } + return c_ptr; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_long_double (long double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + long double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * LDBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * LDBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'long double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +# else + { + mp_limb_t d; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d; + } +# endif +# endif + for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +#if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess + precision. */ + if (!(y == 0.0L)) + abort (); +#endif + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - LDBL_MANT_BIT; + return m.limbs; +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_double (double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * DBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * DBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } +# else + { + mp_limb_t d; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d; + } +# endif +# endif + for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) + { + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; + } + if (!(y == 0.0)) + abort (); + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - DBL_MANT_BIT; + return m.limbs; +} + +# endif + +/* Assuming x = 2^e * m is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n) +{ + int s; + size_t extra_zeroes; + unsigned int abs_n; + unsigned int abs_s; + mp_limb_t *pow5_ptr; + size_t pow5_len; + unsigned int s_limbs; + unsigned int s_bits; + mpn_t pow5; + mpn_t z; + void *z_memory; + char *digits; + + if (memory == NULL) + return NULL; + /* x = 2^e * m, hence + y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m) + = round (2^s * 5^n * m). */ + s = e + n; + extra_zeroes = 0; + /* Factor out a common power of 10 if possible. */ + if (s > 0 && n > 0) + { + extra_zeroes = (s < n ? s : n); + s -= extra_zeroes; + n -= extra_zeroes; + } + /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes. + Before converting to decimal, we need to compute + z = round (2^s * 5^n * m). */ + /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same + sign. 2.322 is slightly larger than log(5)/log(2). */ + abs_n = (n >= 0 ? n : -n); + abs_s = (s >= 0 ? s : -s); + pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1 + + abs_s / GMP_LIMB_BITS + 1) + * sizeof (mp_limb_t)); + if (pow5_ptr == NULL) + { + free (memory); + return NULL; + } + /* Initialize with 1. */ + pow5_ptr[0] = 1; + pow5_len = 1; + /* Multiply with 5^|n|. */ + if (abs_n > 0) + { + static mp_limb_t const small_pow5[13 + 1] = + { + 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, + 48828125, 244140625, 1220703125 + }; + unsigned int n13; + for (n13 = 0; n13 <= abs_n; n13 += 13) + { + mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13]; + size_t j; + mp_twolimb_t carry = 0; + for (j = 0; j < pow5_len; j++) + { + mp_limb_t digit2 = pow5_ptr[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + pow5_ptr[j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + if (carry > 0) + pow5_ptr[pow5_len++] = (mp_limb_t) carry; + } + } + s_limbs = abs_s / GMP_LIMB_BITS; + s_bits = abs_s % GMP_LIMB_BITS; + if (n >= 0 ? s >= 0 : s <= 0) + { + /* Multiply with 2^|s|. */ + if (s_bits > 0) + { + mp_limb_t *ptr = pow5_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = pow5_len; count > 0; count--) + { + accu += (mp_twolimb_t) *ptr << s_bits; + *ptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + { + *ptr = (mp_limb_t) accu; + pow5_len++; + } + } + if (s_limbs > 0) + { + size_t count; + for (count = pow5_len; count > 0;) + { + count--; + pow5_ptr[s_limbs + count] = pow5_ptr[count]; + } + for (count = s_limbs; count > 0;) + { + count--; + pow5_ptr[count] = 0; + } + pow5_len += s_limbs; + } + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* Multiply m with pow5. No division needed. */ + z_memory = multiply (m, pow5, &z); + } + else + { + /* Divide m by pow5 and round. */ + z_memory = divide (m, pow5, &z); + } + } + else + { + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* n >= 0, s < 0. + Multiply m with pow5, then divide by 2^|s|. */ + mpn_t numerator; + mpn_t denominator; + void *tmp_memory; + tmp_memory = multiply (m, pow5, &numerator); + if (tmp_memory == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + /* Construct 2^|s|. */ + { + mp_limb_t *ptr = pow5_ptr + pow5_len; + size_t i; + for (i = 0; i < s_limbs; i++) + ptr[i] = 0; + ptr[s_limbs] = (mp_limb_t) 1 << s_bits; + denominator.limbs = ptr; + denominator.nlimbs = s_limbs + 1; + } + z_memory = divide (numerator, denominator, &z); + free (tmp_memory); + } + else + { + /* n < 0, s > 0. + Multiply m with 2^s, then divide by pow5. */ + mpn_t numerator; + mp_limb_t *num_ptr; + num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1) + * sizeof (mp_limb_t)); + if (num_ptr == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + { + mp_limb_t *destptr = num_ptr; + { + size_t i; + for (i = 0; i < s_limbs; i++) + *destptr++ = 0; + } + if (s_bits > 0) + { + const mp_limb_t *sourceptr = m.limbs; + mp_twolimb_t accu = 0; + size_t count; + for (count = m.nlimbs; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s_bits; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + *destptr++ = (mp_limb_t) accu; + } + else + { + const mp_limb_t *sourceptr = m.limbs; + size_t count; + for (count = m.nlimbs; count > 0; count--) + *destptr++ = *sourceptr++; + } + numerator.limbs = num_ptr; + numerator.nlimbs = destptr - num_ptr; + } + z_memory = divide (numerator, pow5, &z); + free (num_ptr); + } + } + free (pow5_ptr); + free (memory); + + /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */ + + if (z_memory == NULL) + return NULL; + digits = convert_to_decimal (z, extra_zeroes); + free (z_memory); + return digits; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_long_double (long double x, int n) +{ + int e IF_LINT(= 0); + mpn_t m; + void *memory = decode_long_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_double (double x, int n) +{ + int e IF_LINT(= 0); + mpn_t m; + void *memory = decode_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + +# endif + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10l (long double x) +{ + int exp; + long double y; + double z; + double l; + + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + if (y == 0.0L) + return INT_MIN; + if (y < 0.5L) + { + while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0L / (1 << 16))) + { + y *= 1.0L * (1 << 16); + exp -= 16; + } + if (y < (1.0L / (1 << 8))) + { + y *= 1.0L * (1 << 8); + exp -= 8; + } + if (y < (1.0L / (1 << 4))) + { + y *= 1.0L * (1 << 4); + exp -= 4; + } + if (y < (1.0L / (1 << 2))) + { + y *= 1.0L * (1 << 2); + exp -= 2; + } + if (y < (1.0L / (1 << 1))) + { + y *= 1.0L * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5L && y < 1.0L)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) + Four terms are enough to get an approximation with error < 10^-7. */ + l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10 (double x) +{ + int exp; + double y; + double z; + double l; + + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + if (y == 0.0) + return INT_MIN; + if (y < 0.5) + { + while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0 / (1 << 16))) + { + y *= 1.0 * (1 << 16); + exp -= 16; + } + if (y < (1.0 / (1 << 8))) + { + y *= 1.0 * (1 << 8); + exp -= 8; + } + if (y < (1.0 / (1 << 4))) + { + y *= 1.0 * (1 << 4); + exp -= 4; + } + if (y < (1.0 / (1 << 2))) + { + y *= 1.0 * (1 << 2); + exp -= 2; + } + if (y < (1.0 / (1 << 1))) + { + y *= 1.0 * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5 && y < 1.0)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) + Four terms are enough to get an approximation with error < 10^-7. */ + l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} + +# endif + +/* Tests whether a string of digits consists of exactly PRECISION zeroes and + a single '1' digit. */ +static int +is_borderline (const char *digits, size_t precision) +{ + for (; precision > 0; precision--, digits++) + if (*digits != '0') + return 0; + if (*digits != '1') + return 0; + digits++; + return *digits == '\0'; +} + +#endif + +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 + +/* Use a different function name, to make it possible that the 'wchar_t' + parametrization and the 'char' parametrization get compiled in the same + translation unit. */ +# if WIDE_CHAR_VERSION +# define MAX_ROOM_NEEDED wmax_room_needed +# else +# define MAX_ROOM_NEEDED max_room_needed +# endif + +/* Returns the number of TCHAR_T units needed as temporary space for the result + of sprintf or SNPRINTF of a single conversion directive. */ +static inline size_t +MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion, + arg_type type, int flags, size_t width, int has_precision, + size_t precision, int pad_ourselves) +{ + size_t tmp_length; + + switch (conversion) + { + case 'd': case 'i': case 'u': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Multiply by 2, as an estimate for FLAG_GROUP. */ + tmp_length = xsum (tmp_length, tmp_length); + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'o': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'x': case 'X': +# if HAVE_LONG_LONG_INT + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 2, to account for a leading sign or alternate form. */ + tmp_length = xsum (tmp_length, 2); + break; + + case 'f': case 'F': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + else + tmp_length = + (unsigned int) (DBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'e': case 'E': case 'g': case 'G': + tmp_length = + 12; /* sign, decimal point, exponent etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'a': case 'A': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (DBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + break; + + case 'c': +# if HAVE_WINT_T && !WIDE_CHAR_VERSION + if (type == TYPE_WIDE_CHAR) + tmp_length = MB_CUR_MAX; + else +# endif + tmp_length = 1; + break; + + case 's': +# if HAVE_WCHAR_T + if (type == TYPE_WIDE_STRING) + { +# if WIDE_CHAR_VERSION + /* ISO C says about %ls in fwprintf: + "If the precision is not specified or is greater than the size + of the array, the array shall contain a null wide character." + So if there is a precision, we must not use wcslen. */ + const wchar_t *arg = ap->arg[arg_index].a.a_wide_string; + + if (has_precision) + tmp_length = local_wcsnlen (arg, precision); + else + tmp_length = local_wcslen (arg); +# else + /* ISO C says about %ls in fprintf: + "If a precision is specified, no more than that many bytes are + written (including shift sequences, if any), and the array + shall contain a null wide character if, to equal the multibyte + character sequence length given by the precision, the function + would need to access a wide character one past the end of the + array." + So if there is a precision, we must not use wcslen. */ + /* This case has already been handled separately in VASNPRINTF. */ + abort (); +# endif + } + else +# endif + { +# if WIDE_CHAR_VERSION + /* ISO C says about %s in fwprintf: + "If the precision is not specified or is greater than the size + of the converted array, the converted array shall contain a + null wide character." + So if there is a precision, we must not use strlen. */ + /* This case has already been handled separately in VASNPRINTF. */ + abort (); +# else + /* ISO C says about %s in fprintf: + "If the precision is not specified or greater than the size of + the array, the array shall contain a null character." + So if there is a precision, we must not use strlen. */ + const char *arg = ap->arg[arg_index].a.a_string; + + if (has_precision) + tmp_length = local_strnlen (arg, precision); + else + tmp_length = strlen (arg); +# endif + } + break; + + case 'p': + tmp_length = + (unsigned int) (sizeof (void *) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading 0x */ + break; + + default: + abort (); + } + + if (!pad_ourselves) + { +# if ENABLE_UNISTDIO + /* Padding considers the number of characters, therefore the number of + elements after padding may be + > max (tmp_length, width) + but is certainly + <= tmp_length + width. */ + tmp_length = xsum (tmp_length, width); +# else + /* Padding considers the number of elements, says POSIX. */ + if (tmp_length < width) + tmp_length = width; +# endif + } + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + return tmp_length; +} + +#endif + +DCHAR_T * +VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, + const FCHAR_T *format, va_list args) +{ + DIRECTIVES d; + arguments a; + + if (PRINTF_PARSE (format, &d, &a) < 0) + /* errno is already set. */ + return NULL; + +#define CLEANUP() \ + free (d.dir); \ + if (a.arg) \ + free (a.arg); + + if (PRINTF_FETCHARGS (args, &a) < 0) + { + CLEANUP (); + errno = EINVAL; + return NULL; + } + + { + size_t buf_neededlength; + TCHAR_T *buf; + TCHAR_T *buf_malloced; + const FCHAR_T *cp; + size_t i; + DIRECTIVE *dp; + /* Output string accumulator. */ + DCHAR_T *result; + size_t allocated; + size_t length; + + /* Allocate a small buffer that will hold a directive passed to + sprintf or snprintf. */ + buf_neededlength = + xsum4 (7, d.max_width_length, d.max_precision_length, 6); +#if HAVE_ALLOCA + if (buf_neededlength < 4000 / sizeof (TCHAR_T)) + { + buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T)); + buf_malloced = NULL; + } + else +#endif + { + size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T)); + if (size_overflow_p (buf_memsize)) + goto out_of_memory_1; + buf = (TCHAR_T *) malloc (buf_memsize); + if (buf == NULL) + goto out_of_memory_1; + buf_malloced = buf; + } + + if (resultbuf != NULL) + { + result = resultbuf; + allocated = *lengthp; + } + else + { + result = NULL; + allocated = 0; + } + length = 0; + /* Invariants: + result is either == resultbuf or == NULL or malloc-allocated. + If length > 0, then result != NULL. */ + + /* Ensures that allocated >= needed. Aborts through a jump to + out_of_memory if needed is SIZE_MAX or otherwise too big. */ +#define ENSURE_ALLOCATION(needed) \ + if ((needed) > allocated) \ + { \ + size_t memory_size; \ + DCHAR_T *memory; \ + \ + allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ + if ((needed) > allocated) \ + allocated = (needed); \ + memory_size = xtimes (allocated, sizeof (DCHAR_T)); \ + if (size_overflow_p (memory_size)) \ + goto out_of_memory; \ + if (result == resultbuf || result == NULL) \ + memory = (DCHAR_T *) malloc (memory_size); \ + else \ + memory = (DCHAR_T *) realloc (result, memory_size); \ + if (memory == NULL) \ + goto out_of_memory; \ + if (result == resultbuf && length > 0) \ + DCHAR_CPY (memory, result, length); \ + result = memory; \ + } + + for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) + { + if (cp != dp->dir_start) + { + size_t n = dp->dir_start - cp; + size_t augmented_length = xsum (length, n); + + ENSURE_ALLOCATION (augmented_length); + /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we + need that the format string contains only ASCII characters + if FCHAR_T and DCHAR_T are not the same type. */ + if (sizeof (FCHAR_T) == sizeof (DCHAR_T)) + { + DCHAR_CPY (result + length, (const DCHAR_T *) cp, n); + length = augmented_length; + } + else + { + do + result[length++] = (unsigned char) *cp++; + while (--n > 0); + } + } + if (i == d.count) + break; + + /* Execute a single directive. */ + if (dp->conversion == '%') + { + size_t augmented_length; + + if (!(dp->arg_index == ARG_NONE)) + abort (); + augmented_length = xsum (length, 1); + ENSURE_ALLOCATION (augmented_length); + result[length] = '%'; + length = augmented_length; + } + else + { + if (!(dp->arg_index != ARG_NONE)) + abort (); + + if (dp->conversion == 'n') + { + switch (a.arg[dp->arg_index].type) + { + case TYPE_COUNT_SCHAR_POINTER: + *a.arg[dp->arg_index].a.a_count_schar_pointer = length; + break; + case TYPE_COUNT_SHORT_POINTER: + *a.arg[dp->arg_index].a.a_count_short_pointer = length; + break; + case TYPE_COUNT_INT_POINTER: + *a.arg[dp->arg_index].a.a_count_int_pointer = length; + break; + case TYPE_COUNT_LONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longint_pointer = length; + break; +#if HAVE_LONG_LONG_INT + case TYPE_COUNT_LONGLONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; + break; +#endif + default: + abort (); + } + } +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + else if (dp->conversion == 'U') + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + switch (type) + { + case TYPE_U8_STRING: + { + const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string; + const uint8_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u8_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT8_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-8 to locale encoding. */ + converted = + u8_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + converted, &converted_len); +# else + /* Convert from UTF-8 to UTF-16/UTF-32. */ + converted = + U8_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); +# endif + if (converted == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U16_STRING: + { + const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string; + const uint16_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u16_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT16_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-16 to locale encoding. */ + converted = + u16_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + converted, &converted_len); +# else + /* Convert from UTF-16 to UTF-8/UTF-32. */ + converted = + U16_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); +# endif + if (converted == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U32_STRING: + { + const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string; + const uint32_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u32_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT32_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-32 to locale encoding. */ + converted = + u32_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + converted, &converted_len); +# else + /* Convert from UTF-32 to UTF-8/UTF-16. */ + converted = + U32_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); +# endif + if (converted == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + default: + abort (); + } + } +#endif +#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T + else if (dp->conversion == 's' +# if WIDE_CHAR_VERSION + && a.arg[dp->arg_index].type != TYPE_WIDE_STRING +# else + && a.arg[dp->arg_index].type == TYPE_WIDE_STRING +# endif + ) + { + /* The normal handling of the 's' directive below requires + allocating a temporary buffer. The determination of its + length (tmp_length), in the case when a precision is + specified, below requires a conversion between a char[] + string and a wchar_t[] wide string. It could be done, but + we have no guarantee that the implementation of sprintf will + use the exactly same algorithm. Without this guarantee, it + is possible to have buffer overrun bugs. In order to avoid + such bugs, we implement the entire processing of the 's' + directive ourselves. */ + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + +# if WIDE_CHAR_VERSION + /* %s in vasnwprintf. See the specification of fwprintf. */ + { + const char *arg = a.arg[dp->arg_index].a.a_string; + const char *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only as many bytes as needed to produce PRECISION + wide characters, from the left. */ +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count; +# if HAVE_MBRTOWC + count = mbrlen (arg_end, MB_CUR_MAX, &state); +# else + count = mblen (arg_end, MB_CUR_MAX); +# endif + if (count == 0) + /* Found the terminating NUL. */ + break; + if (count < 0) + { + /* Invalid or incomplete multibyte character. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of wide + characters. */ +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + for (;;) + { + int count; +# if HAVE_MBRTOWC + count = mbrlen (arg_end, MB_CUR_MAX, &state); +# else + count = mblen (arg_end, MB_CUR_MAX); +# endif + if (count == 0) + /* Found the terminating NUL. */ + break; + if (count < 0) + { + /* Invalid or incomplete multibyte character. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (has_width && width > characters + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + + if (has_precision || has_width) + { + /* We know the number of wide characters in advance. */ + size_t remaining; +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + ENSURE_ALLOCATION (xsum (length, characters)); + for (remaining = characters; remaining > 0; remaining--) + { + wchar_t wc; + int count; +# if HAVE_MBRTOWC + count = mbrtowc (&wc, arg, arg_end - arg, &state); +# else + count = mbtowc (&wc, arg, arg_end - arg); +# endif + if (count <= 0) + /* mbrtowc not consistent with mbrlen, or mbtowc + not consistent with mblen. */ + abort (); + result[length++] = wc; + arg += count; + } + if (!(arg == arg_end)) + abort (); + } + else + { +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + while (arg < arg_end) + { + wchar_t wc; + int count; +# if HAVE_MBRTOWC + count = mbrtowc (&wc, arg, arg_end - arg, &state); +# else + count = mbtowc (&wc, arg, arg_end - arg); +# endif + if (count <= 0) + /* mbrtowc not consistent with mbrlen, or mbtowc + not consistent with mblen. */ + abort (); + ENSURE_ALLOCATION (xsum (length, 1)); + result[length++] = wc; + arg += count; + } + } + + if (has_width && width > characters + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } +# else + /* %ls in vasnprintf. See the specification of fprintf. */ + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + const wchar_t *arg_end; + size_t characters; +# if !DCHAR_IS_TCHAR + /* This code assumes that TCHAR_T is 'char'. */ + typedef int TCHAR_T_verify[2 * (sizeof (TCHAR_T) == 1) - 1]; + TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t tmpdst_len; +# endif + size_t w; + + if (has_precision) + { + /* Use only as many wide characters as needed to produce + at most PRECISION bytes, from the left. */ +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + while (precision > 0) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg_end == 0) + /* Found the terminating null wide character. */ + break; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg_end, &state); +# else + count = wctomb (cbuf, *arg_end); +# endif + if (count < 0) + { + /* Cannot convert. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + if (precision < count) + break; + arg_end++; + characters += count; + precision -= count; + } + } +# if DCHAR_IS_TCHAR + else if (has_width) +# else + else +# endif + { + /* Use the entire string, and count the number of + bytes. */ +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + for (;;) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg_end == 0) + /* Found the terminating null wide character. */ + break; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg_end, &state); +# else + count = wctomb (cbuf, *arg_end); +# endif + if (count < 0) + { + /* Cannot convert. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end++; + characters += count; + } + } +# if DCHAR_IS_TCHAR + else + { + /* Use the entire string. */ + arg_end = arg + local_wcslen (arg); + /* The number of bytes doesn't matter. */ + characters = 0; + } +# endif + +# if !DCHAR_IS_TCHAR + /* Convert the string into a piece of temporary memory. */ + tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T)); + if (tmpsrc == NULL) + goto out_of_memory; + { + TCHAR_T *tmpptr = tmpsrc; + size_t remaining; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + for (remaining = characters; remaining > 0; ) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg == 0) + abort (); +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg, &state); +# else + count = wctomb (cbuf, *arg); +# endif + if (count <= 0) + /* Inconsistency. */ + abort (); + memcpy (tmpptr, cbuf, count); + tmpptr += count; + arg++; + remaining -= count; + } + if (!(arg == arg_end)) + abort (); + } + + /* Convert from TCHAR_T[] to DCHAR_T[]. */ + tmpdst = + DCHAR_CONV_FROM_ENCODING (locale_charset (), + iconveh_question_mark, + tmpsrc, characters, + NULL, + NULL, &tmpdst_len); + if (tmpdst == NULL) + { + int saved_errno = errno; + free (tmpsrc); + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + free (tmpsrc); +# endif + + if (has_width) + { +# if ENABLE_UNISTDIO + /* Outside POSIX, it's preferrable to compare the width + against the number of _characters_ of the converted + value. */ + w = DCHAR_MBSNLEN (result + length, characters); +# else + /* The width is compared against the number of _bytes_ + of the converted value, says POSIX. */ + w = characters; +# endif + } + else + /* w doesn't matter. */ + w = 0; + + if (has_width && width > w + && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - w; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_TCHAR + if (has_precision || has_width) + { + /* We know the number of bytes in advance. */ + size_t remaining; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + ENSURE_ALLOCATION (xsum (length, characters)); + for (remaining = characters; remaining > 0; ) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg == 0) + abort (); +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg, &state); +# else + count = wctomb (cbuf, *arg); +# endif + if (count <= 0) + /* Inconsistency. */ + abort (); + memcpy (result + length, cbuf, count); + length += count; + arg++; + remaining -= count; + } + if (!(arg == arg_end)) + abort (); + } + else + { +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + while (arg < arg_end) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg == 0) + abort (); +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg, &state); +# else + count = wctomb (cbuf, *arg); +# endif + if (count <= 0) + { + /* Cannot convert. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + ENSURE_ALLOCATION (xsum (length, count)); + memcpy (result + length, cbuf, count); + length += count; + arg++; + } + } +# else + ENSURE_ALLOCATION (xsum (length, tmpdst_len)); + DCHAR_CPY (result + length, tmpdst, tmpdst_len); + free (tmpdst); + length += tmpdst_len; +# endif + + if (has_width && width > w + && (dp->flags & FLAG_LEFT)) + { + size_t n = width - w; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } +# endif + } +#endif +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'a' || dp->conversion == 'A') +# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE)) + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# endif + ) +# endif + ) + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* Allocate a temporary buffer of sufficient size. */ + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) ((LDBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) ((DBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + if (type == TYPE_LONGDOUBLE) + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + long double mantissa; + + if (arg > 0.0L) + mantissa = printf_frexpl (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0L; + } + + if (has_precision + && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + long double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5L : tail > 0.5L) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0L; + } + if (tail != 0.0L) + for (q = precision; q > 0; q--) + tail *= 0.0625L; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0L || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0L) + { + mantissa *= 16.0L; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } +# else + abort (); +# endif + } + else + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnand (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + double mantissa; + + if (arg > 0.0) + mantissa = printf_frexp (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0; + } + + if (has_precision + && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5 : tail > 0.5) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0; + } + if (tail != 0.0) + for (q = precision; q > 0; q--) + tail *= 0.0625; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0 || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0) + { + mantissa *= 16.0; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + } +# else + abort (); +# endif + } + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + if (has_width && p - tmp < width) + { + size_t pad = width - (p - tmp); + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + { + size_t count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } + } +#endif +#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'f' || dp->conversion == 'F' + || dp->conversion == 'e' || dp->conversion == 'E' + || dp->conversion == 'g' || dp->conversion == 'G' + || dp->conversion == 'a' || dp->conversion == 'A') + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# elif NEED_PRINTF_INFINITE_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_DOUBLE + /* The systems (mingw) which produce wrong output + for Inf, -Inf, and NaN also do so for -0.0. + Therefore we treat this case here as well. */ + && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double)) +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# elif NEED_PRINTF_INFINITE_LONG_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE + /* Some systems produce wrong output for Inf, + -Inf, and NaN. Some systems in this category + (IRIX 5.3) also do so for -0.0. Therefore we + treat this case here as well. */ + && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble)) +# endif + )) + { +# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) + arg_type type = a.arg[dp->arg_index].type; +# endif + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* POSIX specifies the default precision to be 6 for %f, %F, + %e, %E, but not for %g, %G. Implementations appear to use + the same default precision also for %g, %G. But for %a, %A, + the default precision is 0. */ + if (!has_precision) + if (!(dp->conversion == 'a' || dp->conversion == 'A')) + precision = 6; + + /* Allocate a temporary buffer of sufficient size. */ +# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1); +# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0); +# elif NEED_PRINTF_LONG_DOUBLE + tmp_length = LDBL_DIG + 1; +# elif NEED_PRINTF_DOUBLE + tmp_length = DBL_DIG + 1; +# else + tmp_length = 0; +# endif + if (tmp_length < precision) + tmp_length = precision; +# if NEED_PRINTF_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + if (!(isnanl (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10l (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif +# if NEED_PRINTF_DOUBLE +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE + if (type == TYPE_DOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + double arg = a.arg[dp->arg_index].a.a_double; + if (!(isnand (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10 (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_LONG_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_long_double (arg, precision); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0L) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0L. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)precision - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision+1. */ + if (is_borderline (digits, precision)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_long_double (arg, + (int)precision - exponent + 1); + if (digits2 == NULL) + { + free (digits); + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + if (strlen (digits2) == precision + 1) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision+1. */ + + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0L) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0L. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + if (is_borderline (digits, precision - 1)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_long_double (arg, + (int)(precision - 1) - exponent + 1); + if (digits2 == NULL) + { + free (digits); + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + if (strlen (digits2) == precision) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t count = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; count > 0; count--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t count = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; count > 0; count--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + if (!(arg == 0.0L)) + abort (); + + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion; /* 'e' or 'E' */ + *p++ = '+'; + *p++ = '0'; + *p++ = '0'; + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + *p++ = '0'; + if (flags & FLAG_ALT) + { + size_t ndigits = + (precision > 0 ? precision - 1 : 0); + *p++ = decimal_point_char (); + for (; ndigits > 0; --ndigits) + *p++ = '0'; + } + } + else if (dp->conversion == 'a' || dp->conversion == 'A') + { + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion - 'A' + 'P'; + *p++ = '+'; + *p++ = '0'; + } + else + abort (); +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } + } +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + else +# endif +# endif +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + { + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnand (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_double (arg, precision); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)precision - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision+1. */ + if (is_borderline (digits, precision)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_double (arg, + (int)precision - exponent + 1); + if (digits2 == NULL) + { + free (digits); + goto out_of_memory; + } + if (strlen (digits2) == precision + 1) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision+1. */ + + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + if (is_borderline (digits, precision - 1)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_double (arg, + (int)(precision - 1) - exponent + 1); + if (digits2 == NULL) + { + free (digits); + goto out_of_memory; + } + if (strlen (digits2) == precision) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t count = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; count > 0; count--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t count = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; count > 0; count--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + if (!(arg == 0.0)) + abort (); + + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion; /* 'e' or 'E' */ + *p++ = '+'; + /* Produce the same number of exponent digits as + the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *p++ = '0'; +# endif + *p++ = '0'; + *p++ = '0'; + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + *p++ = '0'; + if (flags & FLAG_ALT) + { + size_t ndigits = + (precision > 0 ? precision - 1 : 0); + *p++ = decimal_point_char (); + for (; ndigits > 0; --ndigits) + *p++ = '0'; + } + } + else + abort (); +# endif + } + } + } +# endif + + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + if (has_width && p - tmp < width) + { + size_t pad = width - (p - tmp); + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + { + size_t count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } + } +#endif + else + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int has_width; + size_t width; +#endif +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION + int has_precision; + size_t precision; +#endif +#if NEED_PRINTF_UNBOUNDED_PRECISION + int prec_ourselves; +#else +# define prec_ourselves 0 +#endif +#if NEED_PRINTF_FLAG_LEFTADJUST +# define pad_ourselves 1 +#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int pad_ourselves; +#else +# define pad_ourselves 0 +#endif + TCHAR_T *fbp; + unsigned int prefix_count; + int prefixes[2] IF_LINT (= { 0 }); +#if !USE_SNPRINTF + size_t tmp_length; + TCHAR_T tmpbuf[700]; + TCHAR_T *tmp; +#endif + +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = (unsigned int) (-arg); + } + else + width = arg; + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } +#endif + +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION + has_precision = 0; + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } +#endif + + /* Decide whether to handle the precision ourselves. */ +#if NEED_PRINTF_UNBOUNDED_PRECISION + switch (dp->conversion) + { + case 'd': case 'i': case 'u': + case 'o': + case 'x': case 'X': case 'p': + prec_ourselves = has_precision && (precision > 0); + break; + default: + prec_ourselves = 0; + break; + } +#endif + + /* Decide whether to perform the padding ourselves. */ +#if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION) + switch (dp->conversion) + { +# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO + /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need + to perform the padding after this conversion. Functions + with unistdio extensions perform the padding based on + character count rather than element count. */ + case 'c': case 's': +# endif +# if NEED_PRINTF_FLAG_ZERO + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': +# endif + pad_ourselves = 1; + break; + default: + pad_ourselves = prec_ourselves; + break; + } +#endif + +#if !USE_SNPRINTF + /* Allocate a temporary buffer of sufficient size for calling + sprintf. */ + tmp_length = + MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, + flags, width, has_precision, precision, + pad_ourselves); + + if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (TCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } +#endif + + /* Construct the format string for calling snprintf or + sprintf. */ + fbp = buf; + *fbp++ = '%'; +#if NEED_PRINTF_FLAG_GROUPING + /* The underlying implementation doesn't support the ' flag. + Produce no grouping characters in this case; this is + acceptable because the grouping is locale dependent. */ +#else + if (flags & FLAG_GROUP) + *fbp++ = '\''; +#endif + if (flags & FLAG_LEFT) + *fbp++ = '-'; + if (flags & FLAG_SHOWSIGN) + *fbp++ = '+'; + if (flags & FLAG_SPACE) + *fbp++ = ' '; + if (flags & FLAG_ALT) + *fbp++ = '#'; + if (!pad_ourselves) + { + if (flags & FLAG_ZERO) + *fbp++ = '0'; + if (dp->width_start != dp->width_end) + { + size_t n = dp->width_end - dp->width_start; + /* The width specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->width_start; + do + *fbp++ = (unsigned char) *mp++; + while (--n > 0); + } + } + } + if (!prec_ourselves) + { + if (dp->precision_start != dp->precision_end) + { + size_t n = dp->precision_end - dp->precision_start; + /* The precision specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->precision_start; + do + *fbp++ = (unsigned char) *mp++; + while (--n > 0); + } + } + } + + switch (type) + { +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + case TYPE_ULONGLONGINT: +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *fbp++ = 'I'; + *fbp++ = '6'; + *fbp++ = '4'; + break; +# else + *fbp++ = 'l'; + /*FALLTHROUGH*/ +# endif +#endif + case TYPE_LONGINT: + case TYPE_ULONGINT: +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: +#endif +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: +#endif + *fbp++ = 'l'; + break; + case TYPE_LONGDOUBLE: + *fbp++ = 'L'; + break; + default: + break; + } +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + *fbp = 'f'; + else +#endif + *fbp = dp->conversion; +#if USE_SNPRINTF +# if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) + fbp[1] = '%'; + fbp[2] = 'n'; + fbp[3] = '\0'; +# else + /* On glibc2 systems from glibc >= 2.3 - probably also older + ones - we know that snprintf's returns value conforms to + ISO C 99: the gl_SNPRINTF_DIRECTIVE_N test passes. + Therefore we can avoid using %n in this situation. + On glibc2 systems from 2004-10-18 or newer, the use of %n + in format strings in writable memory may crash the program + (if compiled with _FORTIFY_SOURCE=2), so we should avoid it + in this situation. */ + /* On native Win32 systems (such as mingw), we can avoid using + %n because: + - Although the gl_SNPRINTF_TRUNCATION_C99 test fails, + snprintf does not write more than the specified number + of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes + '4', '5', '6' into buf, not '4', '5', '\0'.) + - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf + allows us to recognize the case of an insufficient + buffer size: it returns -1 in this case. + On native Win32 systems (such as mingw) where the OS is + Windows Vista, the use of %n in format strings by default + crashes the program. See + and + + So we should avoid %n in this situation. */ + fbp[1] = '\0'; +# endif +#else + fbp[1] = '\0'; +#endif + + /* Construct the arguments for calling snprintf or sprintf. */ + prefix_count = 0; + if (!pad_ourselves && dp->width_arg_index != ARG_NONE) + { + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; + } + if (!prec_ourselves && dp->precision_arg_index != ARG_NONE) + { + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; + } + +#if USE_SNPRINTF + /* The SNPRINTF result is appended after result[0..length]. + The latter is an array of DCHAR_T; SNPRINTF appends an + array of TCHAR_T to it. This is possible because + sizeof (TCHAR_T) divides sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). */ +# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T)) + /* Ensure that maxlen below will be >= 2. Needed on BeOS, + where an snprintf() with maxlen==1 acts like sprintf(). */ + ENSURE_ALLOCATION (xsum (length, + (2 + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR)); + /* Prepare checking whether snprintf returns the count + via %n. */ + *(TCHAR_T *) (result + length) = '\0'; +#endif + + for (;;) + { + int count = -1; + +#if USE_SNPRINTF + int retcount = 0; + size_t maxlen = allocated - length; + /* SNPRINTF can fail if its second argument is + > INT_MAX. */ + if (maxlen > INT_MAX / TCHARS_PER_DCHAR) + maxlen = INT_MAX / TCHARS_PER_DCHAR; + maxlen = maxlen * TCHARS_PER_DCHAR; +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + arg, &count); \ + break; \ + case 1: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], arg, &count); \ + break; \ + case 2: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], prefixes[1], arg, \ + &count); \ + break; \ + default: \ + abort (); \ + } +#else +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + count = sprintf (tmp, buf, arg); \ + break; \ + case 1: \ + count = sprintf (tmp, buf, prefixes[0], arg); \ + break; \ + case 2: \ + count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ + arg); \ + break; \ + default: \ + abort (); \ + } +#endif + + errno = 0; + switch (type) + { + case TYPE_SCHAR: + { + int arg = a.arg[dp->arg_index].a.a_schar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UCHAR: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uchar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_SHORT: + { + int arg = a.arg[dp->arg_index].a.a_short; + SNPRINTF_BUF (arg); + } + break; + case TYPE_USHORT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_ushort; + SNPRINTF_BUF (arg); + } + break; + case TYPE_INT: + { + int arg = a.arg[dp->arg_index].a.a_int; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UINT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGINT: + { + long int arg = a.arg[dp->arg_index].a.a_longint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGINT: + { + unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_LONG_LONG_INT + case TYPE_LONGLONGINT: + { + long long int arg = a.arg[dp->arg_index].a.a_longlongint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGLONGINT: + { + unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_DOUBLE: + { + double arg = a.arg[dp->arg_index].a.a_double; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGDOUBLE: + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + SNPRINTF_BUF (arg); + } + break; + case TYPE_CHAR: + { + int arg = a.arg[dp->arg_index].a.a_char; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + { + wint_t arg = a.arg[dp->arg_index].a.a_wide_char; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_STRING: + { + const char *arg = a.arg[dp->arg_index].a.a_string; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_POINTER: + { + void *arg = a.arg[dp->arg_index].a.a_pointer; + SNPRINTF_BUF (arg); + } + break; + default: + abort (); + } + +#if USE_SNPRINTF + /* Portability: Not all implementations of snprintf() + are ISO C 99 compliant. Determine the number of + bytes that snprintf() has produced or would have + produced. */ + if (count >= 0) + { + /* Verify that snprintf() has NUL-terminated its + result. */ + if (count < maxlen + && ((TCHAR_T *) (result + length)) [count] != '\0') + abort (); + /* Portability hack. */ + if (retcount > count) + count = retcount; + } + else + { + /* snprintf() doesn't understand the '%n' + directive. */ + if (fbp[1] != '\0') + { + /* Don't use the '%n' directive; instead, look + at the snprintf() return value. */ + fbp[1] = '\0'; + continue; + } + else + { + /* Look at the snprintf() return value. */ + if (retcount < 0) + { +# if !HAVE_SNPRINTF_RETVAL_C99 + /* HP-UX 10.20 snprintf() is doubly deficient: + It doesn't understand the '%n' directive, + *and* it returns -1 (rather than the length + that would have been required) when the + buffer is too small. + But a failure at this point can also come + from other reasons than a too small buffer, + such as an invalid wide string argument to + the %ls directive, or possibly an invalid + floating-point argument. */ + size_t tmp_length = + MAX_ROOM_NEEDED (&a, dp->arg_index, + dp->conversion, type, flags, + width, has_precision, + precision, pad_ourselves); + + if (maxlen < tmp_length) + { + /* Make more room. But try to do through + this reallocation only once. */ + size_t bigger_need = + xsum (length, + xsum (tmp_length, + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR); + /* And always grow proportionally. + (There may be several arguments, each + needing a little more room than the + previous one.) */ + size_t bigger_need2 = + xsum (xtimes (allocated, 2), 12); + if (bigger_need < bigger_need2) + bigger_need = bigger_need2; + ENSURE_ALLOCATION (bigger_need); + continue; + } +# endif + } + else + count = retcount; + } + } +#endif + + /* Attempt to handle failure. */ + if (count < 0) + { + /* SNPRINTF or sprintf failed. Save and use the errno + that it has set, if any. */ + int saved_errno = errno; + + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = + (saved_errno != 0 + ? saved_errno + : (dp->conversion == 'c' || dp->conversion == 's' + ? EILSEQ + : EINVAL)); + return NULL; + } + +#if USE_SNPRINTF + /* Handle overflow of the allocated buffer. + If such an overflow occurs, a C99 compliant snprintf() + returns a count >= maxlen. However, a non-compliant + snprintf() function returns only count = maxlen - 1. To + cover both cases, test whether count >= maxlen - 1. */ + if ((unsigned int) count + 1 >= maxlen) + { + /* If maxlen already has attained its allowed maximum, + allocating more memory will not increase maxlen. + Instead of looping, bail out. */ + if (maxlen == INT_MAX / TCHARS_PER_DCHAR) + goto overflow; + else + { + /* Need at least (count + 1) * sizeof (TCHAR_T) + bytes. (The +1 is for the trailing NUL.) + But ask for (count + 2) * sizeof (TCHAR_T) + bytes, so that in the next round, we likely get + maxlen > (unsigned int) count + 1 + and so we don't get here again. + And allocate proportionally, to avoid looping + eternally if snprintf() reports a too small + count. */ + size_t n = + xmax (xsum (length, + ((unsigned int) count + 2 + + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR), + xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + continue; + } + } +#endif + +#if NEED_PRINTF_UNBOUNDED_PRECISION + if (prec_ourselves) + { + /* Handle the precision. */ + TCHAR_T *prec_ptr = +# if USE_SNPRINTF + (TCHAR_T *) (result + length); +# else + tmp; +# endif + size_t prefix_count; + size_t move; + + prefix_count = 0; + /* Put the additional zeroes after the sign. */ + if (count >= 1 + && (*prec_ptr == '-' || *prec_ptr == '+' + || *prec_ptr == ' ')) + prefix_count = 1; + /* Put the additional zeroes after the 0x prefix if + (flags & FLAG_ALT) || (dp->conversion == 'p'). */ + else if (count >= 2 + && prec_ptr[0] == '0' + && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X')) + prefix_count = 2; + + move = count - prefix_count; + if (precision > move) + { + /* Insert zeroes. */ + size_t insert = precision - move; + TCHAR_T *prec_end; + +# if USE_SNPRINTF + size_t n = + xsum (length, + (count + insert + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR); + length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + ENSURE_ALLOCATION (n); + length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + prec_ptr = (TCHAR_T *) (result + length); +# endif + + prec_end = prec_ptr + count; + prec_ptr += prefix_count; + + while (prec_end > prec_ptr) + { + prec_end--; + prec_end[insert] = prec_end[0]; + } + + prec_end += insert; + do + *--prec_end = '0'; + while (prec_end > prec_ptr); + + count += insert; + } + } +#endif + +#if !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +#endif + +#if !DCHAR_IS_TCHAR + /* Convert from TCHAR_T[] to DCHAR_T[]. */ + if (dp->conversion == 'c' || dp->conversion == 's') + { + /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING + TYPE_WIDE_STRING. + The result string is not certainly ASCII. */ + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t tmpdst_len; + /* This code assumes that TCHAR_T is 'char'. */ + typedef int TCHAR_T_verify + [2 * (sizeof (TCHAR_T) == 1) - 1]; +# if USE_SNPRINTF + tmpsrc = (TCHAR_T *) (result + length); +# else + tmpsrc = tmp; +# endif + tmpdst = + DCHAR_CONV_FROM_ENCODING (locale_charset (), + iconveh_question_mark, + tmpsrc, count, + NULL, + NULL, &tmpdst_len); + if (tmpdst == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + ENSURE_ALLOCATION (xsum (length, tmpdst_len)); + DCHAR_CPY (result + length, tmpdst, tmpdst_len); + free (tmpdst); + count = tmpdst_len; + } + else + { + /* The result string is ASCII. + Simple 1:1 conversion. */ +# if USE_SNPRINTF + /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a + no-op conversion, in-place on the array starting + at (result + length). */ + if (sizeof (DCHAR_T) != sizeof (TCHAR_T)) +# endif + { + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t n; + +# if USE_SNPRINTF + if (result == resultbuf) + { + tmpsrc = (TCHAR_T *) (result + length); + /* ENSURE_ALLOCATION will not move tmpsrc + (because it's part of resultbuf). */ + ENSURE_ALLOCATION (xsum (length, count)); + } + else + { + /* ENSURE_ALLOCATION will move the array + (because it uses realloc(). */ + ENSURE_ALLOCATION (xsum (length, count)); + tmpsrc = (TCHAR_T *) (result + length); + } +# else + tmpsrc = tmp; + ENSURE_ALLOCATION (xsum (length, count)); +# endif + tmpdst = result + length; + /* Copy backwards, because of overlapping. */ + tmpsrc += count; + tmpdst += count; + for (n = count; n > 0; n--) + *--tmpdst = (unsigned char) *--tmpsrc; + } + } +#endif + +#if DCHAR_IS_TCHAR && !USE_SNPRINTF + /* Make room for the result. */ + if (count > allocated - length) + { + /* Need at least count elements. But allocate + proportionally. */ + size_t n = + xmax (xsum (length, count), xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + } +#endif + + /* Here count <= allocated - length. */ + + /* Perform padding. */ +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + if (pad_ourselves && has_width) + { + size_t w; +# if ENABLE_UNISTDIO + /* Outside POSIX, it's preferrable to compare the width + against the number of _characters_ of the converted + value. */ + w = DCHAR_MBSNLEN (result + length, count); +# else + /* The width is compared against the number of _bytes_ + of the converted value, says POSIX. */ + w = count; +# endif + if (w < width) + { + size_t pad = width - w; + + /* Make room for the result. */ + if (xsum (count, pad) > allocated - length) + { + /* Need at least count + pad elements. But + allocate proportionally. */ + size_t n = + xmax (xsum3 (length, count, pad), + xtimes (allocated, 2)); + +# if USE_SNPRINTF + length += count; + ENSURE_ALLOCATION (n); + length -= count; +# else + ENSURE_ALLOCATION (n); +# endif + } + /* Here count + pad <= allocated - length. */ + + { +# if !DCHAR_IS_TCHAR || USE_SNPRINTF + DCHAR_T * const rp = result + length; +# else + DCHAR_T * const rp = tmp; +# endif + DCHAR_T *p = rp + count; + DCHAR_T *end = p + pad; + DCHAR_T *pad_ptr; +# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO + if (dp->conversion == 'c' + || dp->conversion == 's') + /* No zero-padding for string directives. */ + pad_ptr = NULL; + else +# endif + { + pad_ptr = (*rp == '-' ? rp + 1 : rp); + /* No zero-padding of "inf" and "nan". */ + if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z') + || (*pad_ptr >= 'a' && *pad_ptr <= 'z')) + pad_ptr = NULL; + } + /* The generated string now extends from rp to p, + with the zero padding insertion point being at + pad_ptr. */ + + count = count + pad; /* = end - rp */ + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > rp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + } + } + } +#endif + + /* Here still count <= allocated - length. */ + +#if !DCHAR_IS_TCHAR || USE_SNPRINTF + /* The snprintf() result did fit. */ +#else + /* Append the sprintf() result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); +#endif +#if !USE_SNPRINTF + if (tmp != tmpbuf) + free (tmp); +#endif + +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + { + /* Convert the %f result to upper case for %F. */ + DCHAR_T *rp = result + length; + size_t rc; + for (rc = count; rc > 0; rc--, rp++) + if (*rp >= 'a' && *rp <= 'z') + *rp = *rp - 'a' + 'A'; + } +#endif + + length += count; + break; + } +#undef pad_ourselves +#undef prec_ourselves + } + } + } + + /* Add the final NUL. */ + ENSURE_ALLOCATION (xsum (length, 1)); + result[length] = '\0'; + + if (result != resultbuf && length + 1 < allocated) + { + /* Shrink the allocated memory if possible. */ + DCHAR_T *memory; + + memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T)); + if (memory != NULL) + result = memory; + } + + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + *lengthp = length; + /* Note that we can produce a big string of a length > INT_MAX. POSIX + says that snprintf() fails with errno = EOVERFLOW in this case, but + that's only because snprintf() returns an 'int'. This function does + not have this limitation. */ + return result; + +#if USE_SNPRINTF + overflow: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EOVERFLOW; + return NULL; +#endif + + out_of_memory: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + out_of_memory_1: + CLEANUP (); + errno = ENOMEM; + return NULL; + } +} + +#undef MAX_ROOM_NEEDED +#undef TCHARS_PER_DCHAR +#undef SNPRINTF +#undef USE_SNPRINTF +#undef DCHAR_SET +#undef DCHAR_CPY +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef DCHAR_IS_TCHAR +#undef TCHAR_T +#undef DCHAR_T +#undef FCHAR_T +#undef VASNPRINTF diff --git a/libmednahawk/intl/vasnprintf.h b/libmednahawk/intl/vasnprintf.h new file mode 100644 index 0000000000..337b864052 --- /dev/null +++ b/libmednahawk/intl/vasnprintf.h @@ -0,0 +1,78 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 2002-2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNPRINTF_H +#define _VASNPRINTF_H + +/* Get va_list. */ +#include + +/* Get size_t. */ +#include + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __format__ format +# define __printf__ printf +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. + + When dynamic memory allocation occurs, the preallocated buffer is left + alone (with possibly modified contents). This makes it possible to use + a statically allocated or stack-allocated buffer, like this: + + char buf[100]; + size_t len = sizeof (buf); + char *output = vasnprintf (buf, &len, format, args); + if (output == NULL) + ... error handling ...; + else + { + ... use the output string ...; + if (output != buf) + free (output); + } + */ +extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) + __attribute__ ((__format__ (__printf__, 3, 0))); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNPRINTF_H */ diff --git a/libmednahawk/intl/vasnwprintf.h b/libmednahawk/intl/vasnwprintf.h new file mode 100644 index 0000000000..b4f6ce608c --- /dev/null +++ b/libmednahawk/intl/vasnwprintf.h @@ -0,0 +1,46 @@ +/* vswprintf with automatic memory allocation. + Copyright (C) 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNWPRINTF_H +#define _VASNWPRINTF_H + +/* Get va_list. */ +#include + +/* Get wchar_t, size_t. */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. */ +extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...); +extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNWPRINTF_H */ diff --git a/libmednahawk/intl/version.c b/libmednahawk/intl/version.c new file mode 100644 index 0000000000..31014989d7 --- /dev/null +++ b/libmednahawk/intl/version.c @@ -0,0 +1,26 @@ +/* libintl library version. + Copyright (C) 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgnuintl.h" + +/* Version number: (major<<16) + (minor<<8) + subminor */ +int libintl_version = LIBINTL_VERSION; diff --git a/libmednahawk/intl/wprintf-parse.h b/libmednahawk/intl/wprintf-parse.h new file mode 100644 index 0000000000..69d1f8f5f3 --- /dev/null +++ b/libmednahawk/intl/wprintf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _WPRINTF_PARSE_H +#define _WPRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const wchar_t* dir_start; + const wchar_t* dir_end; + int flags; + const wchar_t* width_start; + const wchar_t* width_end; + size_t width_arg_index; + const wchar_t* precision_start; + const wchar_t* precision_end; + size_t precision_arg_index; + wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +wchar_t_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + wchar_t_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +wchar_t_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a); + +#endif /* _WPRINTF_PARSE_H */ diff --git a/libmednahawk/intl/xsize.h b/libmednahawk/intl/xsize.h new file mode 100644 index 0000000000..5846f7bb61 --- /dev/null +++ b/libmednahawk/intl/xsize.h @@ -0,0 +1,109 @@ +/* xsize.h -- Checked size_t computations. + + Copyright (C) 2003, 2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _XSIZE_H +#define _XSIZE_H + +/* Get size_t. */ +#include + +/* Get SIZE_MAX. */ +#include +#if HAVE_STDINT_H +# include +#endif + +/* The size of memory objects is often computed through expressions of + type size_t. Example: + void* p = malloc (header_size + n * element_size). + These computations can lead to overflow. When this happens, malloc() + returns a piece of memory that is way too small, and the program then + crashes while attempting to fill the memory. + To avoid this, the functions and macros in this file check for overflow. + The convention is that SIZE_MAX represents overflow. + malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc + implementation that uses mmap --, it's recommended to use size_overflow_p() + or size_in_bounds_p() before invoking malloc(). + The example thus becomes: + size_t size = xsum (header_size, xtimes (n, element_size)); + void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); +*/ + +/* Convert an arbitrary value >= 0 to type size_t. */ +#define xcast_size_t(N) \ + ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) + +/* Sum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum (size_t size1, size_t size2) +{ + size_t sum = size1 + size2; + return (sum >= size1 ? sum : SIZE_MAX); +} + +/* Sum of three sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum3 (size_t size1, size_t size2, size_t size3) +{ + return xsum (xsum (size1, size2), size3); +} + +/* Sum of four sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) +{ + return xsum (xsum (xsum (size1, size2), size3), size4); +} + +/* Maximum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xmax (size_t size1, size_t size2) +{ + /* No explicit check is needed here, because for any n: + max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ + return (size1 >= size2 ? size1 : size2); +} + +/* Multiplication of a count with an element size, with overflow check. + The count must be >= 0 and the element size must be > 0. + This is a macro, not an inline function, so that it works correctly even + when N is of a wider type and N > SIZE_MAX. */ +#define xtimes(N, ELSIZE) \ + ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) + +/* Check for overflow. */ +#define size_overflow_p(SIZE) \ + ((SIZE) == SIZE_MAX) +/* Check against overflow. */ +#define size_in_bounds_p(SIZE) \ + ((SIZE) != SIZE_MAX) + +#endif /* _XSIZE_H */ diff --git a/libmednahawk/inttypes.h b/libmednahawk/inttypes.h new file mode 100644 index 0000000000..6835ef29ab --- /dev/null +++ b/libmednahawk/inttypes.h @@ -0,0 +1,12 @@ +#pragma once + + +typedef __int8 int8_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +typedef __int64 int64_t; + +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; diff --git a/libmednahawk/libmednahawk.vcxproj b/libmednahawk/libmednahawk.vcxproj new file mode 100644 index 0000000000..7acf14f0db --- /dev/null +++ b/libmednahawk/libmednahawk.vcxproj @@ -0,0 +1,456 @@ + + + + + Debug + Win32 + + + Release FastBuild + Win32 + + + Release + Win32 + + + + libmednahawk + {B014CA7A-DC5F-404C-8614-3378CD02E17D} + mednafenpsxunibuild + Win32Proj + + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\BizHawk.MultiClient\output\dll + $(Configuration)\ + true + ..\BizHawk.MultiClient\output\dll + $(Configuration)\ + false + ..\BizHawk.MultiClient\output\dll + $(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + .;src;include;zlib123;sdl/include;dx;%(AdditionalIncludeDirectories) + HEADLESS;WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + false + EnableFastChecks + MultiThreadedDebugDLL + 1Byte + + + Level3 + EditAndContinue + true + + + zlib123/zlib-vc8-Win32.lib;sdl/sdl-vc8-win32.lib;winmm.lib;dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib;%(AdditionalDependencies) + true + Console + MachineX86 + true + + + + + /MP %(AdditionalOptions) + .;src;include;zlib123;sdl/include;dx;%(AdditionalIncludeDirectories) + HEADLESS;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + 1Byte + + + Level3 + ProgramDatabase + true + StreamingSIMDExtensions2 + false + Fast + Speed + AnySuitable + true + + + zlib123/zlib-vc8-Win32.lib;sdl/sdl-vc8-win32.lib;sdl/sdlmain-vc8-Win32.lib;winmm.lib;dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib;%(AdditionalDependencies) + true + Console + true + true + MachineX86 + + + + + /MP %(AdditionalOptions) + Full + false + .;src;include;zlib123;sdl/include;dx;%(AdditionalIncludeDirectories) + HEADLESS;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + 1Byte + StreamingSIMDExtensions2 + + + Level3 + ProgramDatabase + true + false + Fast + Speed + + + zlib123/zlib-vc8-Win32.lib;sdl/sdl-vc8-win32.lib;sdl/sdlmain-vc8-Win32.lib;winmm.lib;dx/directx-win32-ddraw-dinput8-dsound-dxerr8-dxguid.lib;%(AdditionalDependencies) + true + Console + true + true + + + MachineX86 + + + + + + + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + + + + + + + + + + + + + + + + + + + + + + + + + false + false + + + + + + + Full + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + + + + + + + + + + + + false + false + + + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + + + + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + $(IntDir)%(Filename)1.obj + $(IntDir)%(Filename)1.xdc + + + + + + + + + + + + + + + + + + + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libmednahawk/libmednahawk.vcxproj.filters b/libmednahawk/libmednahawk.vcxproj.filters new file mode 100644 index 0000000000..24623bcfc7 --- /dev/null +++ b/libmednahawk/libmednahawk.vcxproj.filters @@ -0,0 +1,813 @@ + + + + + {fb6eaf64-91ab-4736-b65b-78a01176a309} + + + {f68ea951-d7e0-44da-9a7a-9afe7209d8dc} + + + {98786f09-7a2c-41eb-86fc-6f8fe36279df} + + + {c68eaba4-8ef4-445d-93bf-3225d9494ffc} + + + {1612acb8-c4fe-49df-b34e-a0335258e86a} + + + {73d71c2e-d2b0-4a11-858c-20ab4bcdc329} + + + {991ef1b3-b823-42b0-9275-9e78656e258a} + + + {3148db90-e2c5-4e14-89e1-96ae553dfd0d} + + + {5c139355-d298-4dc7-8eaf-4d01f15e4638} + + + {b02120a5-aefd-4df6-b1c6-0351f7cdf4a5} + + + {026374fb-8a2c-4f3c-8c60-eae8c3382fa2} + + + {5b25894d-5a30-4bb3-b747-7285f523a904} + + + {2d6ec477-c745-4d13-9e64-8c0483c2749d} + + + {5791d772-b7d9-42dc-966b-5c9ff4ca7683} + + + {91179346-9375-4427-8630-122e086273dd} + + + {a3e7626e-55bc-4387-b374-de3b4c608880} + + + {abc744d2-84b0-4a48-854b-7c1a92fd277e} + + + {3726dd22-b931-47f4-a2d3-29683b41b727} + + + {9fad4099-1fba-4cc2-8866-ad9be1671961} + + + {f36488fc-db6a-4348-84ad-94128fb86fbf} + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\resampler + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\trio + + + src\trio + + + src\trio + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\sound + + + src\sound + + + src\sound + + + src\sound + + + src\sound + + + src\compress + + + src\compress + + + src\compress + + + src\compress + + + src\compress + + + src\string + + + src\string + + + src\sexyal + + + src\sexyal + + + src\sexyal\drivers + + + src\sexyal\drivers + + + src\hw_cpu\c68k + + + src\hw_cpu\c68k + + + src\hw_cpu\z80-fuse + + + src\hw_cpu\z80-fuse + + + src\hw_sound\ym2612 + + + src\hw_sound\sms_apu + + + src\desa68 + + + + + src\drivers + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\psx\input + + + src\resampler + + + src\resampler + + + src\resampler + + + src\resampler + + + src\resampler + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\cdrom + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\drivers + + + src\sound + + + src\compress + + + src\compress + + + src\compress + + + src\compress + + + src\compress + + + src\compress + + + src\compress + + + src\string + + + src\string + + + src\sexyal + + + src\sexyal + + + src\hw_cpu\c68k + + + src\hw_cpu\z80-fuse + + + src\hw_sound\ym2612 + + + src\hw_sound\sms_apu + + + src\hw_sound\sms_apu + + + src\desa68 + + + + + src\drivers + + + + + src\psx + + + src\psx + + + src\psx + + + src\psx + + + \ No newline at end of file diff --git a/libmednahawk/ltmain.sh b/libmednahawk/ltmain.sh new file mode 100644 index 0000000000..5a1984b31e --- /dev/null +++ b/libmednahawk/ltmain.sh @@ -0,0 +1,8413 @@ +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6b +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION="2.2.6b Debian-2.2.6b-2" +TIMESTAMP="" +package_revision=1.3017 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/bin/sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} + +exit_cmd=: + + + + + +# Check that we have a working $ECHO. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell, and then maybe $ECHO will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case "$@ " in + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { +test "$mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac + + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." + + exit $? +} + + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + $ECHO "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + $ECHO "X----------------------------------------------------------------------" | $Xsed + $ECHO "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + $ECHO + $ECHO "If you ever happen to want to link against installed libraries" + $ECHO "in a given directory, LIBDIR, you must either use libtool, and" + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" + $ECHO "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" + $ECHO " during execution" + fi + if test -n "$runpath_var"; then + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" + $ECHO " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $ECHO + + $ECHO "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} + +test "$mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + $ECHO >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac + + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + + +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 + fi + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + ECHO=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$ECHO works! + : + else + # Restart under the correct shell, and then maybe \$ECHO will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $ECHO "\ + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +# define setmode _setmode +#else +# include +# include +# ifdef __CYGWIN__ +# include +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : ""), + (value ? value : ""))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done + fi + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | + $GREP . >/dev/null; then + $ECHO + if test "X$deplibs_check_method" = "Xnone"; then + $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + else + $ECHO "*** Warning: inter-library dependencies are not known to be supported." + fi + $ECHO "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $ECHO + $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + $ECHO "*** a static module, that should work as long as the dlopening" + $ECHO "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $ECHO "*** The inter-library dependencies that have been dropped here will be" + $ECHO "*** automatically added whenever a program is linked with this library" + $ECHO "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; + *) files="$files $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/libmednahawk/m4/ChangeLog b/libmednahawk/m4/ChangeLog new file mode 100644 index 0000000000..725cff73d5 --- /dev/null +++ b/libmednahawk/m4/ChangeLog @@ -0,0 +1,89 @@ +2012-01-03 gettextize + + * gettext.m4: Upgrade to gettext-0.18.1. + * iconv.m4: Upgrade to gettext-0.18.1. + * lib-ld.m4: Upgrade to gettext-0.18.1. + * lib-link.m4: Upgrade to gettext-0.18.1. + * lib-prefix.m4: Upgrade to gettext-0.18.1. + * nls.m4: Upgrade to gettext-0.18.1. + * po.m4: Upgrade to gettext-0.18.1. + * progtest.m4: Upgrade to gettext-0.18.1. + * codeset.m4: Upgrade to gettext-0.18.1. + * fcntl-o.m4: New file, from gettext-0.18.1. + * glibc2.m4: Upgrade to gettext-0.18.1. + * glibc21.m4: Upgrade to gettext-0.18.1. + * intdiv0.m4: Upgrade to gettext-0.18.1. + * intl.m4: Upgrade to gettext-0.18.1. + * intldir.m4: Upgrade to gettext-0.18.1. + * intlmacosx.m4: Upgrade to gettext-0.18.1. + * intmax.m4: Upgrade to gettext-0.18.1. + * inttypes_h.m4: Upgrade to gettext-0.18.1. + * inttypes-pri.m4: Upgrade to gettext-0.18.1. + * lcmessage.m4: Upgrade to gettext-0.18.1. + * lock.m4: Upgrade to gettext-0.18.1. + * longlong.m4: Upgrade to gettext-0.18.1. + * printf-posix.m4: Upgrade to gettext-0.18.1. + * size_max.m4: Upgrade to gettext-0.18.1. + * stdint_h.m4: Upgrade to gettext-0.18.1. + * threadlib.m4: New file, from gettext-0.18.1. + * uintmax_t.m4: Upgrade to gettext-0.18.1. + * visibility.m4: Upgrade to gettext-0.18.1. + * wchar_t.m4: Upgrade to gettext-0.18.1. + * wint_t.m4: Upgrade to gettext-0.18.1. + * xsize.m4: Upgrade to gettext-0.18.1. + +2008-06-09 gettextize + + * gettext.m4: Upgrade to gettext-0.17. + * iconv.m4: Upgrade to gettext-0.17. + * lib-link.m4: Upgrade to gettext-0.17. + * po.m4: Upgrade to gettext-0.17. + * codeset.m4: Upgrade to gettext-0.17. + * intdiv0.m4: Upgrade to gettext-0.17. + * intl.m4: New file, from gettext-0.17. + * intldir.m4: New file, from gettext-0.17. + * intlmacosx.m4: New file, from gettext-0.17. + * intmax.m4: Upgrade to gettext-0.17. + * inttypes_h.m4: Upgrade to gettext-0.17. + * inttypes-pri.m4: Upgrade to gettext-0.17. + * lock.m4: Upgrade to gettext-0.17. + * longlong.m4: Upgrade to gettext-0.17. + * printf-posix.m4: Upgrade to gettext-0.17. + * size_max.m4: Upgrade to gettext-0.17. + * stdint_h.m4: Upgrade to gettext-0.17. + * uintmax_t.m4: Upgrade to gettext-0.17. + * wint_t.m4: Upgrade to gettext-0.17. + +2006-12-21 gettextize + + * codeset.m4: New file, from gettext-0.15. + * gettext.m4: New file, from gettext-0.15. + * glibc2.m4: New file, from gettext-0.15. + * glibc21.m4: New file, from gettext-0.15. + * iconv.m4: New file, from gettext-0.15. + * intdiv0.m4: New file, from gettext-0.15. + * intmax.m4: New file, from gettext-0.15. + * inttypes_h.m4: New file, from gettext-0.15. + * inttypes-h.m4: New file, from gettext-0.15. + * inttypes-pri.m4: New file, from gettext-0.15. + * lcmessage.m4: New file, from gettext-0.15. + * lib-ld.m4: New file, from gettext-0.15. + * lib-link.m4: New file, from gettext-0.15. + * lib-prefix.m4: New file, from gettext-0.15. + * lock.m4: New file, from gettext-0.15. + * longdouble.m4: New file, from gettext-0.15. + * longlong.m4: New file, from gettext-0.15. + * nls.m4: New file, from gettext-0.15. + * po.m4: New file, from gettext-0.15. + * printf-posix.m4: New file, from gettext-0.15. + * progtest.m4: New file, from gettext-0.15. + * signed.m4: New file, from gettext-0.15. + * size_max.m4: New file, from gettext-0.15. + * stdint_h.m4: New file, from gettext-0.15. + * uintmax_t.m4: New file, from gettext-0.15. + * ulonglong.m4: New file, from gettext-0.15. + * visibility.m4: New file, from gettext-0.15. + * wchar_t.m4: New file, from gettext-0.15. + * wint_t.m4: New file, from gettext-0.15. + * xsize.m4: New file, from gettext-0.15. + diff --git a/libmednahawk/m4/ax_cflags_gcc_option.m4 b/libmednahawk/m4/ax_cflags_gcc_option.m4 new file mode 100644 index 0000000000..b30a54ea0c --- /dev/null +++ b/libmednahawk/m4/ax_cflags_gcc_option.m4 @@ -0,0 +1,225 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_cflags_gcc_option.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CFLAGS_GCC_OPTION (optionflag [,[shellvar][,[A][,[NA]]]) +# +# DESCRIPTION +# +# AX_CFLAGS_GCC_OPTION(-fomit-frame-pointer) would show a message like +# "checking CFLAGS for gcc -fomit-frame-pointer ... yes" and add the +# optionflag to CFLAGS if it is understood. You can override the +# shellvar-default of CFLAGS of course. The order of arguments stems from +# the explicit macros like AX_CFLAGS_WARN_ALL. +# +# The cousin AX_CXXFLAGS_GCC_OPTION would check for an option to add to +# CXXFLAGS - and it uses the autoconf setup for C++ instead of C (since it +# is possible to use different compilers for C and C++). +# +# The macro is a lot simpler than any special AX_CFLAGS_* macro (or +# ax_cxx_rtti.m4 macro) but allows to check for arbitrary options. +# However, if you use this macro in a few places, it would be great if you +# would make up a new function-macro and submit it to the ac-archive. +# +# - $1 option-to-check-for : required ("-option" as non-value) +# - $2 shell-variable-to-add-to : CFLAGS (or CXXFLAGS in the other case) +# - $3 action-if-found : add value to shellvariable +# - $4 action-if-not-found : nothing +# +# Note: in earlier versions, $1-$2 were swapped. We try to detect the +# situation and accept a $2=~/-/ as being the old option-to-check-for. +# +# There are other variants that emerged from the original macro variant +# which did just test an option to be possibly added. However, some +# compilers accept an option silently, or possibly for just another option +# that was not intended. Therefore, we have to do a generic test for a +# compiler family. For gcc we check "-pedantic" being accepted which is +# also understood by compilers who just want to be compatible with gcc +# even when not being made from gcc sources. +# +# See also: AX_CFLAGS_SUN_OPTION, AX_CFLAGS_HPUX_OPTION, +# AX_CFLAGS_AIX_OPTION, and AX_CFLAGS_IRIX_OPTION. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 12 + +AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl +AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ax_cv_cflags_gcc_option_$2])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], +VAR,[AS_VAR_SET([VAR],["no, unknown"]) + AC_LANG_SAVE + AC_LANG_C + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC + "-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_TRY_COMPILE([],[return 0;], + [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]); break]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +m4_ifdef([AS_VAR_COPY],[AS_VAR_COPY([var],[VAR])],[var=AS_VAR_GET([VAR])]) +case ".$var" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $var " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $var]) + else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $var"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $var" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + + +dnl the only difference - the LANG selection... and the default FLAGS + +AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_OLD], [dnl +AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_gcc_option_$2])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], +VAR,[AS_VAR_SET([VAR],["no, unknown"]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC + "-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_TRY_COMPILE([],[return 0;], + [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]); break]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +m4_ifdef([AS_VAR_COPY],[AS_VAR_COPY([var],[VAR])],[var=AS_VAR_GET([VAR])]) +case ".$var" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $var " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $var]) + else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $var"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $var" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + +dnl ------------------------------------------------------------------------- + +AC_DEFUN([AX_CFLAGS_GCC_OPTION_NEW], [dnl +AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ax_cv_cflags_gcc_option_$1])dnl +AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], +VAR,[AS_VAR_SET([VAR],["no, unknown"]) + AC_LANG_SAVE + AC_LANG_C + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC + "-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_TRY_COMPILE([],[return 0;], + [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]); break]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +m4_ifdef([AS_VAR_COPY],[AS_VAR_COPY([var],[VAR])],[var=AS_VAR_GET([VAR])]) +case ".$var" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $var " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $var]) + else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $var"]) + m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $var" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + + +dnl the only difference - the LANG selection... and the default FLAGS + +AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_NEW], [dnl +AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_gcc_option_$1])dnl +AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], +VAR,[AS_VAR_SET([VAR],["no, unknown"]) + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC + "-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_TRY_COMPILE([],[return 0;], + [AS_VAR_SET([VAR],[`echo $ac_arg | sed -e 's,.*% *,,'`]); break]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +m4_ifdef([AS_VAR_COPY],[AS_VAR_COPY([var],[VAR])],[var=AS_VAR_GET([VAR])]) +case ".$var" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $var " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $var]) + else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $var"]) + m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $var" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + +AC_DEFUN([AX_CFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, +[AX_CFLAGS_GCC_OPTION_NEW($@)],[AX_CFLAGS_GCC_OPTION_OLD($@)])]) + +AC_DEFUN([AX_CXXFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, +[AX_CXXFLAGS_GCC_OPTION_NEW($@)],[AX_CXXFLAGS_GCC_OPTION_OLD($@)])]) diff --git a/libmednahawk/m4/codeset.m4 b/libmednahawk/m4/codeset.m4 new file mode 100644 index 0000000000..5539909c16 --- /dev/null +++ b/libmednahawk/m4/codeset.m4 @@ -0,0 +1,21 @@ +# codeset.m4 serial 4 (gettext-0.18) +dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET); return !cs;], + [am_cv_langinfo_codeset=yes], + [am_cv_langinfo_codeset=no]) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE([HAVE_LANGINFO_CODESET], [1], + [Define if you have and nl_langinfo(CODESET).]) + fi +]) diff --git a/libmednahawk/m4/fcntl-o.m4 b/libmednahawk/m4/fcntl-o.m4 new file mode 100644 index 0000000000..2b2cd81681 --- /dev/null +++ b/libmednahawk/m4/fcntl-o.m4 @@ -0,0 +1,81 @@ +# fcntl-o.m4 serial 1 +dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Written by Paul Eggert. + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. +AC_DEFUN([gl_FCNTL_O_FLAGS], +[ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #include + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int status = !constants; + { + static char const sym[] = "conftest.sym"; + if (symlink (".", sym) != 0 + || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0) + status |= 32; + unlink (sym); + } + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + char c; + struct stat st0, st1; + if (fd < 0 + || fstat (fd, &st0) != 0 + || sleep (1) != 0 + || read (fd, &c, 1) != 1 + || close (fd) != 0 + || stat (file, &st1) != 0 + || st0.st_atime != st1.st_atime) + status |= 64; + } + return status;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], + [Define to 1 if O_NOATIME works.]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], + [Define to 1 if O_NOFOLLOW works.]) +]) diff --git a/libmednahawk/m4/gettext.m4 b/libmednahawk/m4/gettext.m4 new file mode 100644 index 0000000000..2d2265071d --- /dev/null +++ b/libmednahawk/m4/gettext.m4 @@ -0,0 +1,383 @@ +# gettext.m4 serial 63 (gettext-0.18) +dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/libmednahawk/m4/glibc2.m4 b/libmednahawk/m4/glibc2.m4 new file mode 100644 index 0000000000..5f8d4fb8c8 --- /dev/null +++ b/libmednahawk/m4/glibc2.m4 @@ -0,0 +1,30 @@ +# glibc2.m4 serial 2 +dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + ] +) diff --git a/libmednahawk/m4/glibc21.m4 b/libmednahawk/m4/glibc21.m4 new file mode 100644 index 0000000000..3fa84ebaab --- /dev/null +++ b/libmednahawk/m4/glibc21.m4 @@ -0,0 +1,30 @@ +# glibc21.m4 serial 4 +dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2_1=yes], + [ac_cv_gnu_library_2_1=no]) + ] + ) + AC_SUBST([GLIBC21]) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) diff --git a/libmednahawk/m4/iconv.m4 b/libmednahawk/m4/iconv.m4 new file mode 100644 index 0000000000..b477b96d5e --- /dev/null +++ b/libmednahawk/m4/iconv.m4 @@ -0,0 +1,214 @@ +# iconv.m4 serial 11 (gettext-0.18.1) +dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + AC_TRY_RUN([ +#include +#include +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\263"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])) +gl_iconv_AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + fi +]) diff --git a/libmednahawk/m4/intdiv0.m4 b/libmednahawk/m4/intdiv0.m4 new file mode 100644 index 0000000000..41938c3add --- /dev/null +++ b/libmednahawk/m4/intdiv0.m4 @@ -0,0 +1,84 @@ +# intdiv0.m4 serial 3 (gettext-0.18) +dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On MacOS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_TRY_RUN([ +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} +], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], + [Define if integer division by zero raises signal SIGFPE.]) +]) diff --git a/libmednahawk/m4/intl.m4 b/libmednahawk/m4/intl.m4 new file mode 100644 index 0000000000..ad5f755455 --- /dev/null +++ b/libmednahawk/m4/intl.m4 @@ -0,0 +1,294 @@ +# intl.m4 serial 17 (gettext-0.18) +dnl Copyright (C) 1995-2009 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2009. + +AC_PREREQ([2.52]) + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + gt_CHECK_DECL(_snprintf, [#include ]) + gt_CHECK_DECL(_snwprintf, [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL(getc_unlocked, [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() . + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) + + +dnl Checks for the core files of the intl subdirectory: +dnl dcigettext.c +dnl eval-plural.h +dnl explodename.c +dnl finddomain.c +dnl gettextP.h +dnl gmo.h +dnl hash-string.h hash-string.c +dnl l10nflist.c +dnl libgnuintl.h.in (except the *printf stuff) +dnl loadinfo.h +dnl loadmsgcat.c +dnl localealias.c +dnl log.c +dnl plural-exp.h plural-exp.c +dnl plural.y +dnl Used by libglocale. +AC_DEFUN([gt_INTL_SUBDIR_CORE], +[ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_TRY_LINK( + [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], + [], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL([feof_unlocked], [#include ]) + gt_CHECK_DECL([fgets_unlocked], [#include ]) + + AM_ICONV + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +dnl gt_CHECK_DECL(FUNC, INCLUDES) +dnl Check whether a function is declared. +AC_DEFUN([gt_CHECK_DECL], +[ + AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1], + [AC_TRY_COMPILE([$2], [ +#ifndef $1 + char *p = (char *) $1; +#endif +], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) + if test $ac_cv_have_decl_$1 = yes; then + gt_value=1 + else + gt_value=0 + fi + AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) +]) diff --git a/libmednahawk/m4/intldir.m4 b/libmednahawk/m4/intldir.m4 new file mode 100644 index 0000000000..078bab97f0 --- /dev/null +++ b/libmednahawk/m4/intldir.m4 @@ -0,0 +1,19 @@ +# intldir.m4 serial 2 (gettext-0.18) +dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +AC_PREREQ([2.52]) + +dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory. +AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], []) diff --git a/libmednahawk/m4/intlmacosx.m4 b/libmednahawk/m4/intlmacosx.m4 new file mode 100644 index 0000000000..949f4178fa --- /dev/null +++ b/libmednahawk/m4/intlmacosx.m4 @@ -0,0 +1,51 @@ +# intlmacosx.m4 serial 3 (gettext-0.18) +dnl Copyright (C) 2004-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include ], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) diff --git a/libmednahawk/m4/intmax.m4 b/libmednahawk/m4/intmax.m4 new file mode 100644 index 0000000000..d4293adb5f --- /dev/null +++ b/libmednahawk/m4/intmax.m4 @@ -0,0 +1,33 @@ +# intmax.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_TRY_COMPILE([ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif +], [intmax_t x = -1; + return !x;], + [gt_cv_c_intmax_t=yes], + [gt_cv_c_intmax_t=no])]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE([HAVE_INTMAX_T], [1], + [Define if you have the 'intmax_t' type in or .]) + fi +]) diff --git a/libmednahawk/m4/inttypes-h.m4 b/libmednahawk/m4/inttypes-h.m4 new file mode 100644 index 0000000000..4aa5c02fe2 --- /dev/null +++ b/libmednahawk/m4/inttypes-h.m4 @@ -0,0 +1,25 @@ +# inttypes-h.m4 serial 1 (gettext-0.15) +dnl Copyright (C) 1997-2002, 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H if exists and doesn't clash with +# . + +AC_DEFUN([gl_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], gl_cv_header_inttypes_h=yes, gl_cv_header_inttypes_h=no) + ]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, + [Define if exists and doesn't clash with .]) + fi +]) diff --git a/libmednahawk/m4/inttypes-pri.m4 b/libmednahawk/m4/inttypes-pri.m4 new file mode 100644 index 0000000000..af2da1c66c --- /dev/null +++ b/libmednahawk/m4/inttypes-pri.m4 @@ -0,0 +1,36 @@ +# inttypes-pri.m4 serial 6 (gettext-0.18) +dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.52]) + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_TRY_COMPILE([#include +#ifdef PRId32 +char *p = PRId32; +#endif +], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes]) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1], + [Define if exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) diff --git a/libmednahawk/m4/inttypes_h.m4 b/libmednahawk/m4/inttypes_h.m4 new file mode 100644 index 0000000000..e2cbbdf545 --- /dev/null +++ b/libmednahawk/m4/inttypes_h.m4 @@ -0,0 +1,26 @@ +# inttypes_h.m4 serial 9 +dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1; return !i;], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/libmednahawk/m4/lcmessage.m4 b/libmednahawk/m4/lcmessage.m4 new file mode 100644 index 0000000000..1da9ee117d --- /dev/null +++ b/libmednahawk/m4/lcmessage.m4 @@ -0,0 +1,31 @@ +# lcmessage.m4 serial 6 (gettext-0.18) +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your file defines LC_MESSAGES.]) + fi +]) diff --git a/libmednahawk/m4/lib-ld.m4 b/libmednahawk/m4/lib-ld.m4 new file mode 100644 index 0000000000..a4b837b40c --- /dev/null +++ b/libmednahawk/m4/lib-ld.m4 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 4 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT([$LD]) +else + AC_MSG_RESULT([no]) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) diff --git a/libmednahawk/m4/lib-link.m4 b/libmednahawk/m4/lib-link.m4 new file mode 100644 index 0000000000..5d6176f210 --- /dev/null +++ b/libmednahawk/m4/lib-link.m4 @@ -0,0 +1,774 @@ +# lib-link.m4 serial 21 (gettext-0.18) +dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.54]) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + popdef([NAME]) + popdef([Name]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. The missing-message +dnl defaults to 'no' and may contain additional hints for the user. +dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} +dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, + dnl because these -l options might require -L options that are present in + dnl LIBS. -l options benefit only from the -L options listed before it. + dnl Otherwise, add it to the front of LIBS, because it may be a static + dnl library that depends on another static library that is present in LIBS. + dnl Static libraries benefit only from the static libraries listed after + dnl it. + case " $LIB[]NAME" in + *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; + *) LIBS="$LIB[]NAME $LIBS" ;; + esac + AC_TRY_LINK([$3], [$4], + [ac_cv_lib[]Name=yes], + [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + popdef([NAME]) + popdef([Name]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/libmednahawk/m4/lib-prefix.m4 b/libmednahawk/m4/lib-prefix.m4 new file mode 100644 index 0000000000..f03a54bd71 --- /dev/null +++ b/libmednahawk/m4/lib-prefix.m4 @@ -0,0 +1,224 @@ +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) diff --git a/libmednahawk/m4/libtool.m4 b/libmednahawk/m4/libtool.m4 new file mode 100644 index 0000000000..dc0948487e --- /dev/null +++ b/libmednahawk/m4/libtool.m4 @@ -0,0 +1,7377 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 56 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl +_LT_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\[$]0 --fallback-echo"')dnl " + lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` + ;; +esac + +_LT_OUTPUT_LIBTOOL_INIT +]) + + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +cat >"$CONFIG_LT" <<_LTEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. + +lt_cl_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AS_SHELL_SANITIZE +_AS_PREPARE + +exec AS_MESSAGE_FD>&1 +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +if test "$no_create" != yes; then + lt_cl_success=: + test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" + exec AS_MESSAGE_LOG_FD>/dev/null + $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false + exec AS_MESSAGE_LOG_FD>>config.log + $lt_cl_success || AS_EXIT(1) +fi +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_XSI_SHELLFNS + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_SHELL_INIT + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[_LT_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +[$]* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(lt_ECHO) +]) +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], + [An echo program that does not interpret backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[AC_CHECK_TOOL(AR, ar, false) +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1]) + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method == "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac +AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [fix_srcfile_path], [1], + [Fix the shell variable $srcfile for the compiler]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_PROG_CXX +# ------------ +# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ +# compiler, we have our own version here. +m4_defun([_LT_PROG_CXX], +[ +pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) +AC_PROG_CXX +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_CXX + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_CXX], []) + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[AC_REQUIRE([_LT_PROG_CXX])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_PROG_F77 +# ------------ +# Since AC_PROG_F77 is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_F77], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) +AC_PROG_F77 +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_F77 + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_F77], []) + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_REQUIRE([_LT_PROG_F77])dnl +AC_LANG_PUSH(Fortran 77) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${F77-"f77"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_PROG_FC +# ----------- +# Since AC_PROG_FC is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_FC], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) +AC_PROG_FC +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_FC + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_FC], []) + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_REQUIRE([_LT_PROG_FC])dnl +AC_LANG_PUSH(Fortran) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${FC-"f95"} + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC="$lt_save_CC" +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC="$lt_save_CC" +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. +m4_defun([_LT_PROG_XSI_SHELLFNS], +[case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $[*] )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +dnl func_dirname_and_basename +dnl A portable version of this function is already defined in general.m4sh +dnl so there is no need for it here. + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[[^=]]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$[@]"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]+=\$[2]" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]=\$$[1]\$[2]" +} + +_LT_EOF + ;; + esac +]) diff --git a/libmednahawk/m4/lock.m4 b/libmednahawk/m4/lock.m4 new file mode 100644 index 0000000000..dacc9bd0d9 --- /dev/null +++ b/libmednahawk/m4/lock.m4 @@ -0,0 +1,37 @@ +# lock.m4 serial 10 (gettext-0.18) +dnl Copyright (C) 2005-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_LOCK], +[ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include ]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_TRY_COMPILE([#include ], + [#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) + +# Prerequisites of lib/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [ + AC_REQUIRE([AC_C_INLINE]) +]) diff --git a/libmednahawk/m4/longdouble.m4 b/libmednahawk/m4/longdouble.m4 new file mode 100644 index 0000000000..3cf7e6b9fc --- /dev/null +++ b/libmednahawk/m4/longdouble.m4 @@ -0,0 +1,31 @@ +# longdouble.m4 serial 2 (gettext-0.15) +dnl Copyright (C) 2002-2003, 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the compiler supports the 'long double' type. +dnl Prerequisite: AC_PROG_CC + +dnl This file is only needed in autoconf <= 2.59. Newer versions of autoconf +dnl have a macro AC_TYPE_LONG_DOUBLE with identical semantics. + +AC_DEFUN([gt_TYPE_LONGDOUBLE], +[ + AC_CACHE_CHECK([for long double], gt_cv_c_long_double, + [if test "$GCC" = yes; then + gt_cv_c_long_double=yes + else + AC_TRY_COMPILE([ + /* The Stardent Vistra knows sizeof(long double), but does not support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + int array [2*(sizeof(long double) >= sizeof(double)) - 1]; + ], , + gt_cv_c_long_double=yes, gt_cv_c_long_double=no) + fi]) + if test $gt_cv_c_long_double = yes; then + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) + fi +]) diff --git a/libmednahawk/m4/longlong.m4 b/libmednahawk/m4/longlong.m4 new file mode 100644 index 0000000000..4b0d8422cc --- /dev/null +++ b/libmednahawk/m4/longlong.m4 @@ -0,0 +1,106 @@ +# longlong.m4 serial 14 +dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG_INT if 'long long int' works. +# This fixes a bug in Autoconf 2.61, but can be removed once we +# assume 2.62 everywhere. + +# Note: If the type 'long long int' exists but is only 32 bits large +# (as on some very old compilers), HAVE_LONG_LONG_INT will not be +# defined. In this case you can treat 'long long int' like 'long int'. + +AC_DEFUN([AC_TYPE_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug isn't important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [ac_cv_type_long_long_int=yes], + [ac_cv_type_long_long_int=no], + [ac_cv_type_long_long_int=yes])], + [ac_cv_type_long_long_int=no])]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], [1], + [Define to 1 if the system has the type `long long int'.]) + fi +]) + +# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. +# This fixes a bug in Autoconf 2.61, but can be removed once we +# assume 2.62 everywhere. + +# Note: If the type 'unsigned long long int' exists but is only 32 bits +# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT +# will not be defined. In this case you can treat 'unsigned long long int' +# like 'unsigned long int'. + +AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [ac_cv_type_unsigned_long_long_int=yes], + [ac_cv_type_unsigned_long_long_int=no])]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], + [Define to 1 if the system has the type `unsigned long long int'.]) + fi +]) + +# Expands to a C program that can be used to test for simultaneous support +# of 'long long' and 'unsigned long long'. We don't want to say that +# 'long long' is available if 'unsigned long long' is not, or vice versa, +# because too many programs rely on the symmetry between signed and unsigned +# integer types (excluding 'bool'). +AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], +[ + AC_LANG_PROGRAM( + [[/* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) diff --git a/libmednahawk/m4/ltoptions.m4 b/libmednahawk/m4/ltoptions.m4 new file mode 100644 index 0000000000..32b3ce9ac5 --- /dev/null +++ b/libmednahawk/m4/ltoptions.m4 @@ -0,0 +1,368 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [0], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/libmednahawk/m4/ltsugar.m4 b/libmednahawk/m4/ltsugar.m4 new file mode 100644 index 0000000000..272859dfd9 --- /dev/null +++ b/libmednahawk/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/libmednahawk/m4/ltversion.m4 b/libmednahawk/m4/ltversion.m4 new file mode 100644 index 0000000000..7e2b69b509 --- /dev/null +++ b/libmednahawk/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# Generated from ltversion.in. + +# serial 3017 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.2.6b]) +m4_define([LT_PACKAGE_REVISION], [1.3017]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.2.6b' +macro_revision='1.3017' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/libmednahawk/m4/lt~obsolete.m4 b/libmednahawk/m4/lt~obsolete.m4 new file mode 100644 index 0000000000..0976b865e0 --- /dev/null +++ b/libmednahawk/m4/lt~obsolete.m4 @@ -0,0 +1,92 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 4 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) diff --git a/libmednahawk/m4/nls.m4 b/libmednahawk/m4/nls.m4 new file mode 100644 index 0000000000..682383760a --- /dev/null +++ b/libmednahawk/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff --git a/libmednahawk/m4/po.m4 b/libmednahawk/m4/po.m4 new file mode 100644 index 0000000000..22b162feef --- /dev/null +++ b/libmednahawk/m4/po.m4 @@ -0,0 +1,449 @@ +# po.m4 serial 17 (gettext-0.18) +dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.50]) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" < +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, + [ + AC_EGREP_CPP([notposix], [ +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], + [gt_cv_func_printf_posix="guessing no"], + [gt_cv_func_printf_posix="guessing yes"]) + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE([HAVE_POSIX_PRINTF], [1], + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) diff --git a/libmednahawk/m4/progtest.m4 b/libmednahawk/m4/progtest.m4 new file mode 100644 index 0000000000..a3d1a623ca --- /dev/null +++ b/libmednahawk/m4/progtest.m4 @@ -0,0 +1,92 @@ +# progtest.m4 serial 6 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +AC_PREREQ([2.50]) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) diff --git a/libmednahawk/m4/signed.m4 b/libmednahawk/m4/signed.m4 new file mode 100644 index 0000000000..850dbcb2f4 --- /dev/null +++ b/libmednahawk/m4/signed.m4 @@ -0,0 +1,17 @@ +# signed.m4 serial 1 (gettext-0.10.40) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([bh_C_SIGNED], +[ + AC_CACHE_CHECK([for signed], bh_cv_c_signed, + [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) + if test $bh_cv_c_signed = no; then + AC_DEFINE(signed, , + [Define to empty if the C compiler doesn't support this keyword.]) + fi +]) diff --git a/libmednahawk/m4/size_max.m4 b/libmednahawk/m4/size_max.m4 new file mode 100644 index 0000000000..35ab988267 --- /dev/null +++ b/libmednahawk/m4/size_max.m4 @@ -0,0 +1,75 @@ +# size_max.m4 serial 9 +dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include +#include ], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include ], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_TRY_COMPILE([#include + extern size_t foo; + extern unsigned long foo; + ], [], [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl . Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) diff --git a/libmednahawk/m4/stdint_h.m4 b/libmednahawk/m4/stdint_h.m4 new file mode 100644 index 0000000000..126fbf5d16 --- /dev/null +++ b/libmednahawk/m4/stdint_h.m4 @@ -0,0 +1,26 @@ +# stdint_h.m4 serial 8 +dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1; return !i;], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/libmednahawk/m4/threadlib.m4 b/libmednahawk/m4/threadlib.m4 new file mode 100644 index 0000000000..e00f6d7f73 --- /dev/null +++ b/libmednahawk/m4/threadlib.m4 @@ -0,0 +1,347 @@ +# threadlib.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 2005-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl gl_THREADLIB +dnl ------------ +dnl Tests for a multithreading library to be used. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WIN32_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread". +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_THREADLIB_EARLY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) + +dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_divert_text([DEFAULTS], [gl_use_threads_default=]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API]) +AC_HELP_STRING([--disable-threads], [build without multithread safety]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_TRY_LINK test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_THREADLIB. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_BODY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_TRY_LINK([extern void xyzzy (); +#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_TRY_RUN([ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + AC_TRY_LINK([#include ], + [pthread_mutex_lock((pthread_mutex_t*)0); + pthread_mutexattr_init((pthread_mutexattr_t*)0);], + [gl_have_pthread=yes]) + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + else + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_TRY_LINK([#include +#include ], + [thr_self();], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lpth" + AC_TRY_LINK([#include ], [pth_self();], [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=win32 + AC_DEFINE([USE_WIN32_THREADS], [1], + [Define if the Win32 multithreading API can be used.]) + fi + fi + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) + +AC_DEFUN([gl_THREADLIB], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) + + +dnl gl_DISABLE_THREADS +dnl ------------------ +dnl Sets the gl_THREADLIB default so that threads are not used by default. +dnl The user can still override it at installation time, by using the +dnl configure option '--enable-threads'. + +AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) + + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl MacOS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw win32 N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. diff --git a/libmednahawk/m4/uintmax_t.m4 b/libmednahawk/m4/uintmax_t.m4 new file mode 100644 index 0000000000..81be35a29a --- /dev/null +++ b/libmednahawk/m4/uintmax_t.m4 @@ -0,0 +1,30 @@ +# uintmax_t.m4 serial 12 +dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +AC_PREREQ([2.13]) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE([HAVE_UINTMAX_T], [1], + [Define if you have the 'uintmax_t' type in or .]) + fi +]) diff --git a/libmednahawk/m4/ulonglong.m4 b/libmednahawk/m4/ulonglong.m4 new file mode 100644 index 0000000000..a8e4d8c487 --- /dev/null +++ b/libmednahawk/m4/ulonglong.m4 @@ -0,0 +1,23 @@ +# ulonglong.m4 serial 4 +dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. + +AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], +[ + AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, + [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], + [unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull;], + ac_cv_type_unsigned_long_long=yes, + ac_cv_type_unsigned_long_long=no)]) + if test $ac_cv_type_unsigned_long_long = yes; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, + [Define if you have the 'unsigned long long' type.]) + fi +]) diff --git a/libmednahawk/m4/visibility.m4 b/libmednahawk/m4/visibility.m4 new file mode 100644 index 0000000000..ab73eb09a5 --- /dev/null +++ b/libmednahawk/m4/visibility.m4 @@ -0,0 +1,74 @@ +# visibility.m4 serial 3 (gettext-0.18) +dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl MacOS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_TRY_COMPILE([], [], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_TRY_COMPILE( + [extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {}], + [], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) diff --git a/libmednahawk/m4/wchar_t.m4 b/libmednahawk/m4/wchar_t.m4 new file mode 100644 index 0000000000..17cd3bd714 --- /dev/null +++ b/libmednahawk/m4/wchar_t.m4 @@ -0,0 +1,20 @@ +# wchar_t.m4 serial 3 (gettext-0.18) +dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], + [AC_TRY_COMPILE([#include + wchar_t foo = (wchar_t)'\0';], , + [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) + fi +]) diff --git a/libmednahawk/m4/wint_t.m4 b/libmednahawk/m4/wint_t.m4 new file mode 100644 index 0000000000..62fb4e8530 --- /dev/null +++ b/libmednahawk/m4/wint_t.m4 @@ -0,0 +1,28 @@ +# wint_t.m4 serial 4 (gettext-0.18) +dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], + [AC_TRY_COMPILE([ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0';], , + [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) + fi +]) diff --git a/libmednahawk/m4/xsize.m4 b/libmednahawk/m4/xsize.m4 new file mode 100644 index 0000000000..dd9c666a03 --- /dev/null +++ b/libmednahawk/m4/xsize.m4 @@ -0,0 +1,13 @@ +# xsize.m4 serial 4 +dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_REQUIRE([AC_C_INLINE]) + AC_CHECK_HEADERS([stdint.h]) +]) diff --git a/libmednahawk/missing b/libmednahawk/missing new file mode 100644 index 0000000000..23c9d2e0a4 --- /dev/null +++ b/libmednahawk/missing @@ -0,0 +1,376 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te*) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison*|yacc*) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex*|flex*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit $? + fi + ;; + + makeinfo*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar*) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/libmednahawk/netplay_stub.cpp b/libmednahawk/netplay_stub.cpp new file mode 100644 index 0000000000..4718d90170 --- /dev/null +++ b/libmednahawk/netplay_stub.cpp @@ -0,0 +1,6 @@ +#include "mednafen.h" + +int MDFNnetplay = 0; +void MDFND_NetplayText(const uint8* buf, bool something) {} +void MDFND_NetworkClose(void) {} +bool MDFNI_DumpSettingsDef(char const *) { return false; } \ No newline at end of file diff --git a/libmednahawk/po/ChangeLog b/libmednahawk/po/ChangeLog new file mode 100644 index 0000000000..68fb44f6b1 --- /dev/null +++ b/libmednahawk/po/ChangeLog @@ -0,0 +1,24 @@ +2012-01-03 gettextize + + * Makefile.in.in: Upgrade to gettext-0.18.1. + * Rules-quot: Upgrade to gettext-0.18.1. + +2009-12-30 gettextize + + * Makefile.in.in: Upgrade to gettext-0.17. + +2008-06-09 gettextize + + * Makefile.in.in: Upgrade to gettext-0.17. + +2005-05-18 gettextize + + * Makefile.in.in: New file, from gettext-0.14.1. + * boldquot.sed: New file, from gettext-0.14.1. + * en@boldquot.header: New file, from gettext-0.14.1. + * en@quot.header: New file, from gettext-0.14.1. + * insert-header.sin: New file, from gettext-0.14.1. + * quot.sed: New file, from gettext-0.14.1. + * remove-potcdate.sin: New file, from gettext-0.14.1. + * Rules-quot: New file, from gettext-0.14.1. + diff --git a/libmednahawk/po/LINGUAS b/libmednahawk/po/LINGUAS new file mode 100644 index 0000000000..3f26deb52b --- /dev/null +++ b/libmednahawk/po/LINGUAS @@ -0,0 +1,3 @@ +# Set of available languages. +# en +ru es de diff --git a/libmednahawk/po/Makefile.in.in b/libmednahawk/po/Makefile.in.in new file mode 100644 index 0000000000..c4de35aed7 --- /dev/null +++ b/libmednahawk/po/Makefile.in.in @@ -0,0 +1,444 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.18 +GETTEXT_MACRO_VERSION = 0.18 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libmednahawk/po/Makevars b/libmednahawk/po/Makevars new file mode 100644 index 0000000000..f4320b7ee1 --- /dev/null +++ b/libmednahawk/po/Makevars @@ -0,0 +1,43 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +MSGMERGE_OPTIONS = -N + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=utf-8 + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Mednafen Team + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = http://forum.fobby.net/ + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/libmednahawk/po/POTFILES.in b/libmednahawk/po/POTFILES.in new file mode 100644 index 0000000000..79f3d7199b --- /dev/null +++ b/libmednahawk/po/POTFILES.in @@ -0,0 +1,752 @@ +src/hw_misc/arcade_card/arcade_card.cpp +src/snes/src/cheat/cheat.cpp +src/snes/src/cpu/cpu.cpp +src/snes/src/cpu/cpu-debugger.cpp +src/snes/src/cpu/core/serialization.cpp +src/snes/src/cpu/core/algorithms.cpp +src/snes/src/cpu/core/opcode_write.cpp +src/snes/src/cpu/core/core.cpp +src/snes/src/cpu/core/opcode_read.cpp +src/snes/src/cpu/core/opcode_pc.cpp +src/snes/src/cpu/core/disassembler/disassembler.cpp +src/snes/src/cpu/core/table.cpp +src/snes/src/cpu/core/opcode_misc.cpp +src/snes/src/cpu/core/opcode_rmw.cpp +src/snes/src/cpu/scpu/mmio/mmio.cpp +src/snes/src/cpu/scpu/serialization.cpp +src/snes/src/cpu/scpu/debugger/debugger.cpp +src/snes/src/cpu/scpu/dma/dma.cpp +src/snes/src/cpu/scpu/memory/memory.cpp +src/snes/src/cpu/scpu/timing/irq.cpp +src/snes/src/cpu/scpu/timing/joypad.cpp +src/snes/src/cpu/scpu/timing/event.cpp +src/snes/src/cpu/scpu/timing/timing.cpp +src/snes/src/cpu/scpu/scpu.cpp +src/snes/src/dsp/adsp/adsp_tables.cpp +src/snes/src/dsp/adsp/adsp.cpp +src/snes/src/dsp/sdsp/voice.cpp +src/snes/src/dsp/sdsp/brr.cpp +src/snes/src/dsp/sdsp/serialization.cpp +src/snes/src/dsp/sdsp/debugger/debugger.cpp +src/snes/src/dsp/sdsp/misc.cpp +src/snes/src/dsp/sdsp/gaussian.cpp +src/snes/src/dsp/sdsp/counter.cpp +src/snes/src/dsp/sdsp/envelope.cpp +src/snes/src/dsp/sdsp/echo.cpp +src/snes/src/dsp/sdsp/sdsp.cpp +src/snes/src/ui_qt/debugger/misc/debugger-options.cpp +src/snes/src/ui_qt/debugger/tracer.cpp +src/snes/src/ui_qt/debugger/debugger.cpp +src/snes/src/ui_qt/debugger/hexeditor.cpp +src/snes/src/ui_qt/debugger/ppu/layer-toggle.cpp +src/snes/src/ui_qt/debugger/ppu/oam-viewer.cpp +src/snes/src/ui_qt/debugger/ppu/vram-viewer.cpp +src/snes/src/ui_qt/debugger/ppu/cgram-viewer.cpp +src/snes/src/ui_qt/debugger/tools/disassembler.cpp +src/snes/src/ui_qt/debugger/tools/breakpoint.cpp +src/snes/src/ui_qt/debugger/tools/properties.cpp +src/snes/src/ui_qt/debugger/tools/memory.cpp +src/snes/src/ui_qt/utility/system-state.cpp +src/snes/src/ui_qt/utility/utility.cpp +src/snes/src/ui_qt/utility/window.cpp +src/snes/src/ui_qt/settings/pixelshader.cpp +src/snes/src/ui_qt/settings/video.cpp +src/snes/src/ui_qt/settings/advanced.cpp +src/snes/src/ui_qt/settings/settings.cpp +src/snes/src/ui_qt/settings/audio.cpp +src/snes/src/ui_qt/settings/input.cpp +src/snes/src/ui_qt/settings/paths.cpp +src/snes/src/ui_qt/state/state.cpp +src/snes/src/ui_qt/base/base.cpp +src/snes/src/ui_qt/base/diskbrowser.cpp +src/snes/src/ui_qt/base/about.cpp +src/snes/src/ui_qt/base/loader.cpp +src/snes/src/ui_qt/base/main.cpp +src/snes/src/ui_qt/base/htmlviewer.cpp +src/snes/src/ui_qt/interface.cpp +src/snes/src/ui_qt/link/reader.cpp +src/snes/src/ui_qt/link/filter.cpp +src/snes/src/ui_qt/input/userinterface-emulationspeed.cpp +src/snes/src/ui_qt/input/userinterface-general.cpp +src/snes/src/ui_qt/input/userinterface-videosettings.cpp +src/snes/src/ui_qt/input/userinterface-states.cpp +src/snes/src/ui_qt/input/userinterface-system.cpp +src/snes/src/ui_qt/input/input.cpp +src/snes/src/ui_qt/input/controller.cpp +src/snes/src/ui_qt/config.cpp +src/snes/src/ui_qt/application/init.cpp +src/snes/src/ui_qt/application/application.cpp +src/snes/src/ui_qt/application/qb.cpp +src/snes/src/ui_qt/platform/platform_x.cpp +src/snes/src/ui_qt/platform/platform_osx.cpp +src/snes/src/ui_qt/platform/platform_win.cpp +src/snes/src/ui_qt/tools/statemanager.cpp +src/snes/src/ui_qt/tools/cheatfinder.cpp +src/snes/src/ui_qt/tools/tools.cpp +src/snes/src/ui_qt/tools/cheateditor.cpp +src/snes/src/ui_qt/movie/movie.cpp +src/snes/src/ui_qt/cartridge/cartridge.cpp +src/snes/src/ui_qt/main.cpp +src/snes/src/ppu/ppu-debugger.cpp +src/snes/src/ppu/serialization.cpp +src/snes/src/ppu/ppu.cpp +src/snes/src/ppu/bppu/mmio/mmio.cpp +src/snes/src/ppu/bppu/serialization.cpp +src/snes/src/ppu/bppu/debugger/render.cpp +src/snes/src/ppu/bppu/debugger/debugger.cpp +src/snes/src/ppu/bppu/render/bg.cpp +src/snes/src/ppu/bppu/render/cache.cpp +src/snes/src/ppu/bppu/render/render.cpp +src/snes/src/ppu/bppu/render/windows.cpp +src/snes/src/ppu/bppu/render/line.cpp +src/snes/src/ppu/bppu/render/oam.cpp +src/snes/src/ppu/bppu/render/addsub.cpp +src/snes/src/ppu/bppu/render/mode7.cpp +src/snes/src/ppu/bppu/memory/memory.cpp +src/snes/src/ppu/bppu/bppu.cpp +src/snes/src/memory/smemory/serialization.cpp +src/snes/src/memory/smemory/smemory.cpp +src/snes/src/memory/smemory/system.cpp +src/snes/src/memory/smemory/generic.cpp +src/snes/src/memory/memory.cpp +src/snes/src/chip/st011/st011.cpp +src/snes/src/chip/dsp3/dsp3.cpp +src/snes/src/chip/spc7110/spc7110.cpp +src/snes/src/chip/spc7110/serialization.cpp +src/snes/src/chip/spc7110/decomp.cpp +src/snes/src/chip/sa1/mmio/mmio.cpp +src/snes/src/chip/sa1/sa1.cpp +src/snes/src/chip/sa1/serialization.cpp +src/snes/src/chip/sa1/dma/dma.cpp +src/snes/src/chip/sa1/memory/memory.cpp +src/snes/src/chip/sa1/bus/bus.cpp +src/snes/src/chip/dsp2/serialization.cpp +src/snes/src/chip/dsp2/opcodes.cpp +src/snes/src/chip/dsp2/dsp2.cpp +src/snes/src/chip/srtc/serialization.cpp +src/snes/src/chip/srtc/srtc.cpp +src/snes/src/chip/st018/st018.cpp +src/snes/src/chip/sdd1/serialization.cpp +src/snes/src/chip/sdd1/sdd1.cpp +src/snes/src/chip/sdd1/sdd1emu.cpp +src/snes/src/chip/bsx/bsx_base.cpp +src/snes/src/chip/bsx/bsx.cpp +src/snes/src/chip/bsx/bsx_cart.cpp +src/snes/src/chip/bsx/bsx_flash.cpp +src/snes/src/chip/cx4/functions.cpp +src/snes/src/chip/cx4/data.cpp +src/snes/src/chip/cx4/serialization.cpp +src/snes/src/chip/cx4/opcodes.cpp +src/snes/src/chip/cx4/oam.cpp +src/snes/src/chip/cx4/cx4.cpp +src/snes/src/chip/dsp4/dsp4.cpp +src/snes/src/chip/dsp1/serialization.cpp +src/snes/src/chip/dsp1/dsp1emu.cpp +src/snes/src/chip/dsp1/dsp1.cpp +src/snes/src/chip/st010/st010.cpp +src/snes/src/chip/st010/serialization.cpp +src/snes/src/chip/st010/st010_op.cpp +src/snes/src/chip/21fx/serialization.cpp +src/snes/src/chip/21fx/21fx.cpp +src/snes/src/chip/obc1/serialization.cpp +src/snes/src/chip/obc1/obc1.cpp +src/snes/src/chip/supergameboy/supergameboy.cpp +src/snes/src/chip/superfx/mmio/mmio.cpp +src/snes/src/chip/superfx/serialization.cpp +src/snes/src/chip/superfx/superfx.cpp +src/snes/src/chip/superfx/core/opcode_table.cpp +src/snes/src/chip/superfx/core/opcodes.cpp +src/snes/src/chip/superfx/core/core.cpp +src/snes/src/chip/superfx/disasm/disasm.cpp +src/snes/src/chip/superfx/memory/memory.cpp +src/snes/src/chip/superfx/timing/timing.cpp +src/snes/src/chip/superfx/bus/bus.cpp +src/snes/src/system/scheduler/scheduler.cpp +src/snes/src/system/serialization.cpp +src/snes/src/system/debugger/debugger.cpp +src/snes/src/system/video/video.cpp +src/snes/src/system/input/input.cpp +src/snes/src/system/config/config.cpp +src/snes/src/system/system.cpp +src/snes/src/system/audio/audio.cpp +src/snes/src/smp/ssmp/serialization.cpp +src/snes/src/smp/ssmp/debugger/debugger.cpp +src/snes/src/smp/ssmp/ssmp.cpp +src/snes/src/smp/ssmp/memory/memory.cpp +src/snes/src/smp/ssmp/timing/timing.cpp +src/snes/src/smp/smp.cpp +src/snes/src/smp/core/opcode_mov.cpp +src/snes/src/smp/core/serialization.cpp +src/snes/src/smp/core/algorithms.cpp +src/snes/src/smp/core/core.cpp +src/snes/src/smp/core/opcode_read.cpp +src/snes/src/smp/core/opcode_pc.cpp +src/snes/src/smp/core/disassembler/disassembler.cpp +src/snes/src/smp/core/table.cpp +src/snes/src/smp/core/opcode_misc.cpp +src/snes/src/smp/core/opcode_rmw.cpp +src/snes/src/cartridge/header.cpp +src/snes/src/cartridge/serialization.cpp +src/snes/src/cartridge/cartridge.cpp +src/snes/src/cartridge/gameboyheader.cpp +src/snes/src/lib/ruby/ruby.cpp +src/snes/src/lib/ruby/video/glx.cpp +src/snes/src/lib/ruby/video/sdl.cpp +src/snes/src/lib/ruby/video/gdi.cpp +src/snes/src/lib/ruby/video/wgl.cpp +src/snes/src/lib/ruby/video/xv.cpp +src/snes/src/lib/ruby/video/qtopengl.cpp +src/snes/src/lib/ruby/video/direct3d.cpp +src/snes/src/lib/ruby/video/qtraster.cpp +src/snes/src/lib/ruby/video/directdraw.cpp +src/snes/src/lib/ruby/ruby_audio.cpp +src/snes/src/lib/ruby/input/sdl.cpp +src/snes/src/lib/ruby/input/directinput.cpp +src/snes/src/lib/ruby/input/rawinput.cpp +src/snes/src/lib/ruby/input/carbon.cpp +src/snes/src/lib/ruby/input/x.cpp +src/snes/src/lib/ruby/ruby_impl.cpp +src/snes/src/lib/ruby/audio/openal.cpp +src/snes/src/lib/ruby/audio/oss.cpp +src/snes/src/lib/ruby/audio/pulseaudio.cpp +src/snes/src/lib/ruby/audio/directsound.cpp +src/snes/src/lib/ruby/audio/ao.cpp +src/snes/src/lib/ruby/audio/alsa.cpp +src/snes/src/lib/ruby/audio/pulseaudiosimple.cpp +src/snes/interface.cpp +src/mempatcher.cpp +src/sexyal/sexyal.cpp +src/sexyal/convert.cpp +src/sexyal/drivers/sdl.cpp +src/sexyal/drivers/oss.cpp +src/sexyal/drivers/dsound.cpp +src/sexyal/drivers/dummy.cpp +src/sexyal/drivers/alsa.cpp +src/sexyal/drivers/jack.cpp +src/wswan/sound.cpp +src/wswan/interrupt.cpp +src/wswan/tcache.cpp +src/wswan/v30mz.cpp +src/wswan/eeprom.cpp +src/wswan/debug.cpp +src/wswan/memory.cpp +src/wswan/gfx.cpp +src/wswan/rtc.cpp +src/wswan/main.cpp +src/wswan/dis/syntax.cpp +src/wswan/dis/dis_decode.cpp +src/wswan/dis/resolve.cpp +src/wswan/dis/dis_groups.cpp +src/math_ops.cpp +src/string/ConvertUTF.cpp +src/string/escape.cpp +src/general.cpp +src/hw_cpu/v810/v810_cpuD.cpp +src/hw_cpu/v810/v810_cpu.cpp +src/hw_cpu/huc6280/huc6280.cpp +src/hw_cpu/z80-fuse/z80.cpp +src/hw_cpu/z80-fuse/z80_ops.cpp +src/state.cpp +src/dis6502.cpp +src/cdrom/recover-raw.cpp +src/cdrom/CDAccess.cpp +src/cdrom/SimpleFIFO.cpp +src/cdrom/CDAccess_Physical.cpp +src/cdrom/cdromif.cpp +src/cdrom/scsicd.cpp +src/cdrom/CDAccess_Image.cpp +src/cdrom/galois.cpp +src/cdrom/crc32.cpp +src/cdrom/pcecd.cpp +src/cdrom/l-ec.cpp +src/cdrom/audioreader.cpp +src/cdrom/lec.cpp +src/cdrom/CDUtility.cpp +src/FileWrapper.cpp +src/demo/demo.cpp +src/PSFLoader.cpp +src/psx/irq.cpp +src/psx/cdc.cpp +src/psx/cpu.cpp +src/psx/spu.cpp +src/psx/mdec.cpp +src/psx/dma.cpp +src/psx/frontio.cpp +src/psx/input/memcard.cpp +src/psx/input/gamepad.cpp +src/psx/dis.cpp +src/psx/gpu.cpp +src/psx/debug.cpp +src/psx/psx.cpp +src/psx/timer.cpp +src/psx/gte.cpp +src/psx/sio.cpp +src/mednafen.cpp +src/okiadpcm_generate.cpp +src/gb/sound.cpp +src/gb/gb.cpp +src/gb/gbGlobals.cpp +src/gb/z80.cpp +src/gb/memory.cpp +src/gb/gfx.cpp +src/hw_sound/gb_apu/Gb_Oscs.cpp +src/hw_sound/gb_apu/Gb_Apu_State.cpp +src/hw_sound/gb_apu/Gb_Apu.cpp +src/hw_sound/ym2413/emu2413.cpp +src/hw_sound/ym2612/Ym2612_Emu.cpp +src/hw_sound/sms_apu/Sms_Apu.cpp +src/hw_sound/pce_psg/pce_psg.cpp +src/dis6280.cpp +src/nes/nsf.cpp +src/nes/sound.cpp +src/nes/x6502.cpp +src/nes/unif.cpp +src/nes/fds-sound.cpp +src/nes/boards/152.cpp +src/nes/boards/88.cpp +src/nes/boards/n106.cpp +src/nes/boards/248.cpp +src/nes/boards/supervision.cpp +src/nes/boards/113.cpp +src/nes/boards/78.cpp +src/nes/boards/22.cpp +src/nes/boards/68.cpp +src/nes/boards/114.cpp +src/nes/boards/16.cpp +src/nes/boards/33.cpp +src/nes/boards/151.cpp +src/nes/boards/70.cpp +src/nes/boards/82.cpp +src/nes/boards/h2288.cpp +src/nes/boards/189.cpp +src/nes/boards/67.cpp +src/nes/boards/simple.cpp +src/nes/boards/95.cpp +src/nes/boards/emu2413.cpp +src/nes/boards/107.cpp +src/nes/boards/182.cpp +src/nes/boards/156.cpp +src/nes/boards/244.cpp +src/nes/boards/86.cpp +src/nes/boards/76.cpp +src/nes/boards/mmc5.cpp +src/nes/boards/mmc2and4.cpp +src/nes/boards/codemasters.cpp +src/nes/boards/117.cpp +src/nes/boards/51.cpp +src/nes/boards/maxicart.cpp +src/nes/boards/mmc3.cpp +src/nes/boards/185.cpp +src/nes/boards/15.cpp +src/nes/boards/38.cpp +src/nes/boards/73.cpp +src/nes/boards/8.cpp +src/nes/boards/242.cpp +src/nes/boards/deirom.cpp +src/nes/boards/ffe.cpp +src/nes/boards/75.cpp +src/nes/boards/72.cpp +src/nes/boards/41.cpp +src/nes/boards/90.cpp +src/nes/boards/93.cpp +src/nes/boards/mmc1.cpp +src/nes/boards/112.cpp +src/nes/boards/222.cpp +src/nes/boards/77.cpp +src/nes/boards/246.cpp +src/nes/boards/180.cpp +src/nes/boards/234.cpp +src/nes/boards/sachen.cpp +src/nes/boards/184.cpp +src/nes/boards/25.cpp +src/nes/boards/42.cpp +src/nes/boards/8237.cpp +src/nes/boards/colordreams.cpp +src/nes/boards/241.cpp +src/nes/boards/32.cpp +src/nes/boards/140.cpp +src/nes/boards/23.cpp +src/nes/boards/34.cpp +src/nes/boards/87.cpp +src/nes/boards/fme7.cpp +src/nes/boards/vrc7.cpp +src/nes/boards/novel.cpp +src/nes/boards/65.cpp +src/nes/boards/89.cpp +src/nes/boards/21.cpp +src/nes/boards/99.cpp +src/nes/boards/163.cpp +src/nes/boards/80.cpp +src/nes/boards/46.cpp +src/nes/boards/240.cpp +src/nes/boards/vrc6.cpp +src/nes/boards/187.cpp +src/nes/boards/18.cpp +src/nes/boards/nina06.cpp +src/nes/boards/96.cpp +src/nes/boards/94.cpp +src/nes/boards/208.cpp +src/nes/boards/97.cpp +src/nes/boards/193.cpp +src/nes/boards/tengen.cpp +src/nes/boards/malee.cpp +src/nes/boards/232.cpp +src/nes/boards/92.cpp +src/nes/boards/super24.cpp +src/nes/boards/228.cpp +src/nes/cart.cpp +src/nes/ines.cpp +src/nes/ppu/ppu.cpp +src/nes/ppu/palette.cpp +src/nes/input/partytap.cpp +src/nes/input/ftrainer.cpp +src/nes/input/shadow.cpp +src/nes/input/powerpad.cpp +src/nes/input/arkanoid.cpp +src/nes/input/cursor.cpp +src/nes/input/mahjong.cpp +src/nes/input/bworld.cpp +src/nes/input/toprider.cpp +src/nes/input/hypershot.cpp +src/nes/input/suborkb.cpp +src/nes/input/zapper.cpp +src/nes/input/oekakids.cpp +src/nes/input/fkb.cpp +src/nes/nsfe.cpp +src/nes/filter.cpp +src/nes/debug.cpp +src/nes/nes.cpp +src/nes/vsuni.cpp +src/nes/fds.cpp +src/nes/input.cpp +src/nes/ntsc/nes_ntsc.cpp +src/pce_fast/tsushin.cpp +src/pce_fast/huc6280.cpp +src/pce_fast/vdc.cpp +src/pce_fast/hes.cpp +src/pce_fast/huc.cpp +src/pce_fast/pce.cpp +src/pce_fast/input.cpp +src/player.cpp +src/error.cpp +src/tests.cpp +src/ngp/Z80_interface.cpp +src/ngp/sound.cpp +src/ngp/interrupt.cpp +src/ngp/mem.cpp +src/ngp/dma.cpp +src/ngp/flash.cpp +src/ngp/gfx_scanline_mono.cpp +src/ngp/TLCS-900h/TLCS900h_disassemble_reg.cpp +src/ngp/TLCS-900h/TLCS900h_disassemble_extra.cpp +src/ngp/TLCS-900h/TLCS900h_disassemble.cpp +src/ngp/TLCS-900h/TLCS900h_interpret_single.cpp +src/ngp/TLCS-900h/TLCS900h_disassemble_src.cpp +src/ngp/TLCS-900h/TLCS900h_registers.cpp +src/ngp/TLCS-900h/TLCS900h_interpret_dst.cpp +src/ngp/TLCS-900h/TLCS900h_interpret_reg.cpp +src/ngp/TLCS-900h/TLCS900h_interpret.cpp +src/ngp/TLCS-900h/TLCS900h_interpret_src.cpp +src/ngp/TLCS-900h/TLCS900h_disassemble_dst.cpp +src/ngp/bios.cpp +src/ngp/gfx.cpp +src/ngp/T6W28_Apu.cpp +src/ngp/rom.cpp +src/ngp/rtc.cpp +src/ngp/gfx_scanline_colour.cpp +src/ngp/biosHLE.cpp +src/ngp/neopop.cpp +src/video/tblur.cpp +src/video/selblur.cpp +src/video/text.cpp +src/video/font-data.cpp +src/video/Deinterlacer.cpp +src/video/video.cpp +src/video/surface.cpp +src/video/primitives.cpp +src/video/png.cpp +src/video/resize.cpp +src/drivers/sound.cpp +src/drivers/joystick.cpp +src/drivers/video-state.cpp +src/drivers/help.cpp +src/drivers/cheat.cpp +src/drivers/hq4x.cpp +src/drivers/ers.cpp +src/drivers/debugger.cpp +src/drivers/nongl.cpp +src/drivers/NetClient_BSD.cpp +src/drivers/console.cpp +src/drivers/args.cpp +src/drivers/memdebugger.cpp +src/drivers/overlay.cpp +src/drivers/hq3x.cpp +src/drivers/video.cpp +src/drivers/prompt.cpp +src/drivers/shader.cpp +src/drivers/2xSaI.cpp +src/drivers/hq2x.cpp +src/drivers/opengl.cpp +src/drivers/input-config.cpp +src/drivers/nnx.cpp +src/drivers/input.cpp +src/drivers/remote.cpp +src/drivers/logdebugger.cpp +src/drivers/hqxx-common.cpp +src/drivers/main.cpp +src/drivers/gfxdebugger.cpp +src/drivers/netplay.cpp +src/drivers/fps.cpp +src/lynx/ram.cpp +src/lynx/c65c02.cpp +src/lynx/susie.cpp +src/lynx/cart.cpp +src/lynx/system.cpp +src/lynx/memmap.cpp +src/lynx/rom.cpp +src/lynx/mikie.cpp +src/pce/tsushin.cpp +src/pce/mcgenjin.cpp +src/pce/vce.cpp +src/pce/hes.cpp +src/pce/huc.cpp +src/pce/input/tsushinkb.cpp +src/pce/input/gamepad.cpp +src/pce/input/mouse.cpp +src/pce/subhw.cpp +src/pce/debug.cpp +src/pce/pce.cpp +src/pce/input.cpp +src/sms/tms.cpp +src/sms/sound.cpp +src/sms/sms.cpp +src/sms/memz80.cpp +src/sms/vdp.cpp +src/sms/render.cpp +src/sms/cart.cpp +src/sms/romdb.cpp +src/sms/system.cpp +src/sms/pio.cpp +src/settings.cpp +src/Stream.cpp +src/pcfx/soundbox.cpp +src/pcfx/interrupt.cpp +src/pcfx/rainbow.cpp +src/pcfx/king.cpp +src/pcfx/jrevdct.cpp +src/pcfx/input/gamepad.cpp +src/pcfx/input/mouse.cpp +src/pcfx/fxscsi.cpp +src/pcfx/debug.cpp +src/pcfx/timer.cpp +src/pcfx/input.cpp +src/pcfx/pcfx.cpp +src/pcfx/huc6273.cpp +src/sound/sound.cpp +src/sound/Blip_Buffer.cpp +src/sound/Fir_Resampler.cpp +src/sound/WAVRecord.cpp +src/sound/Stereo_Buffer.cpp +src/md5.cpp +src/debug.cpp +src/cdplay.cpp +src/md/sound.cpp +src/md/header.cpp +src/md/memz80.cpp +src/md/vdp.cpp +src/md/cd/interrupt.cpp +src/md/cd/pcm.cpp +src/md/cd/cd.cpp +src/md/cd/timer.cpp +src/md/cd/cdc_cdd.cpp +src/md/memvdp.cpp +src/md/mem68k.cpp +src/md/genio.cpp +src/md/input/gamepad.cpp +src/md/input/mouse.cpp +src/md/system.cpp +src/md/membnk.cpp +src/md/genesis.cpp +src/md/debug.cpp +src/md/cart/map_ssf2.cpp +src/md/cart/map_sbb.cpp +src/md/cart/map_ff.cpp +src/md/cart/map_rmx3.cpp +src/md/cart/map_svp.cpp +src/md/cart/cart.cpp +src/md/cart/map_eeprom.cpp +src/md/cart/map_yase.cpp +src/md/cart/map_rom.cpp +src/md/cart/map_realtec.cpp +src/md/cart/map_sram.cpp +src/endian.cpp +src/memory.cpp +src/qtrecord.cpp +src/file.cpp +src/vb/vb.cpp +src/vb/vip.cpp +src/vb/vsu.cpp +src/vb/debug.cpp +src/vb/timer.cpp +src/vb/input.cpp +src/netplay.cpp +src/okiadpcm.cpp +src/gba/Mode5.cpp +src/gba/sram.cpp +src/gba/Mode3.cpp +src/gba/Mode2.cpp +src/gba/Sound.cpp +src/gba/Gfx.cpp +src/gba/Mode4.cpp +src/gba/flash.cpp +src/gba/thumb.cpp +src/gba/arm.cpp +src/gba/eeprom.cpp +src/gba/GBA.cpp +src/gba/bios.cpp +src/gba/RTC.cpp +src/gba/Mode0.cpp +src/gba/GBAinline.cpp +src/gba/Mode1.cpp +src/gba/Globals.cpp +src/movie.cpp +src/hw_video/huc6270/backup/vdc.cpp +src/hw_video/huc6270/vdc.cpp +src/snes/src/chip/dsp3/dsp3emu.c +src/snes/src/chip/dsp4/dsp4emu.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/ppc.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/libco/libco.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark_impl.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/test_libco.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/test_threads.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/benchmark.c +src/snes/src/lib/libco/blargg_libco_ppc64-5/test_regs.c +src/snes/src/lib/libco/ppc.c +src/snes/src/lib/libco/amd64.c +src/snes/src/lib/libco/ucontext.c +src/snes/src/lib/libco/x86.c +src/snes/src/lib/libco/sjlj.c +src/snes/src/lib/libco/ppc-elf.c +src/snes/src/lib/libco/fiber.c +src/snes/src/lib/libco/libco.c +src/desa68/desa68.c +src/resampler/resample.c +src/string/world_strtod.c +src/hw_cpu/v810/fpu-new/softfloat.c +src/hw_cpu/v810/fpu-new/timesoftfloat.c +src/hw_cpu/c68k/gen68k.c +src/hw_cpu/c68k/c68k.c +src/hw_cpu/c68k/c68kexec.c +src/hw_cpu/z80-fuse/coretest.c +src/hw_cpu/z80-fuse/z80_ddfdcb.c +src/hw_cpu/z80-fuse/z80_ddfd.c +src/hw_cpu/z80-fuse/z80_cb.c +src/hw_cpu/z80-fuse/z80_ed.c +src/hw_cpu/z80-fuse/opcodes_base.c +src/tremor/floor0.c +src/tremor/vorbisfile.c +src/tremor/registry.c +src/tremor/info.c +src/tremor/block.c +src/tremor/floor1.c +src/tremor/mdct.c +src/tremor/framing.c +src/tremor/synthesis.c +src/tremor/window.c +src/tremor/bitwise.c +src/tremor/res012.c +src/tremor/codebook.c +src/tremor/sharedbook.c +src/tremor/mapping0.c +src/tremor/ivorbisfile_example.c +src/nes/ntsc/benchmark.c +src/nes/ntsc/demo.c +src/video/font-data-18x18.c +src/video/font-data-12x13.c +src/drivers/scale3x.c +src/drivers/scalebit.c +src/drivers/scale2x.c +src/compress/ioapi.c +src/compress/blz.c +src/compress/quicklz.c +src/compress/minilzo.c +src/compress/unzip.c +src/trio/trionan.c +src/trio/triostr.c +src/trio/trio.c +src/md/cart/ssp16.c +src/cputest/arm_cpu.c +src/cputest/x86_cpu.c +src/cputest/cputest.c +src/cputest/ppc_cpu.c +src/mpcdec/streaminfo.c +src/mpcdec/idtag.c +src/mpcdec/synth_filter.c +src/mpcdec/huffsv7.c +src/mpcdec/mpc_reader.c +src/mpcdec/requant.c +src/mpcdec/huffsv46.c +src/mpcdec/mpc_decoder.c +src/resampler/Makefile.am.inc +src/wswan/start.inc +src/wswan/v30mz-ea.inc +src/wswan/dis/dis_tables.inc +src/wswan/dis/opcodes.inc +src/wswan/v30mz-modrm.inc +src/string/Makefile.am.inc +src/hw_cpu/v810/v810_oploop.inc +src/hw_cpu/v810/v810_op_table.inc +src/hw_cpu/huc6280/huc6280_step.inc +src/hw_cpu/huc6280/ops.inc +src/hw_cpu/c68k/c68k_opE.inc +src/hw_cpu/c68k/c68k_op8.inc +src/hw_cpu/c68k/c68k_op4.inc +src/hw_cpu/c68k/c68k_op5.inc +src/hw_cpu/c68k/c68k_opB.inc +src/hw_cpu/c68k/c68k_ini.inc +src/hw_cpu/c68k/c68k_opA.inc +src/hw_cpu/c68k/c68k_op9.inc +src/hw_cpu/c68k/c68k_op3.inc +src/hw_cpu/c68k/c68k_op0.inc +src/hw_cpu/c68k/c68k_opC.inc +src/hw_cpu/c68k/c68k_op1.inc +src/hw_cpu/c68k/c68k_opF.inc +src/hw_cpu/c68k/c68k_op6.inc +src/hw_cpu/c68k/gen68k.inc +src/hw_cpu/c68k/c68k_op2.inc +src/hw_cpu/c68k/c68k_opD.inc +src/hw_cpu/c68k/c68kmac.inc +src/hw_cpu/c68k/c68k_op7.inc +src/cdrom/scsicd-pce-commands.inc +src/cdrom/Makefile.am.inc +src/psx/gpu_sprite.inc +src/psx/spu_xa.inc +src/psx/spu_reverb.inc +src/psx/gpu_polygon.inc +src/psx/gpu_command_table.inc +src/psx/spu_fir_table.inc +src/psx/spu_nft.inc +src/psx/gte_divrecip.inc +src/psx/gpu_line.inc +src/nes/ines-correct.inc +src/nes/ines-bad.inc +src/nes/boards/Makefile.am.inc +src/nes/ppu/Makefile.am.inc +src/nes/input/Makefile.am.inc +src/pce_fast/vpc_mix_inner.inc +src/pce_fast/huc6280_ops.inc +src/pce_fast/ioread.inc +src/video/Makefile.am.inc +src/pce/vce_sync.inc +src/pce/mcgenjin_ym2413.inc +src/sms/hvc.inc +src/compress/Makefile.am.inc +src/pcfx/king-bgfast-blit.inc +src/pcfx/king_mix_body.inc +src/pcfx/mem-handler.inc +src/pcfx/gamedb.inc +src/pcfx/king-bgfast.inc +src/pcfx/io-handler.inc +src/md/vdp_run.inc +src/cputest/Makefile.am.inc +src/vb/vip_draw.inc diff --git a/libmednahawk/po/Rules-quot b/libmednahawk/po/Rules-quot new file mode 100644 index 0000000000..aec196d556 --- /dev/null +++ b/libmednahawk/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/libmednahawk/po/boldquot.sed b/libmednahawk/po/boldquot.sed new file mode 100644 index 0000000000..6c5df9ebc7 --- /dev/null +++ b/libmednahawk/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g +s/“/“/g +s/â€/â€/g +s/‘/‘/g +s/’/’/g diff --git a/libmednahawk/po/de.gmo b/libmednahawk/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..bf54e202b005f37d300d493759afa5a0819325e5 GIT binary patch literal 34902 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�px=*%lLobdEtM>fy9%9zEhVa3K;Uj$1Y3 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 literal 0 HcmV?d00001 diff --git a/libmednahawk/po/de.po b/libmednahawk/po/de.po new file mode 100644 index 0000000000..6b71114998 --- /dev/null +++ b/libmednahawk/po/de.po @@ -0,0 +1,4788 @@ +# translation of de.po to +# German translations for mednafen package. +# Copyright (C) 2007 Mednafen Team +# This file is distributed under the same license as the mednafen package. +# +# Dryer Lint, 2007. +msgid "" +msgstr "" +"Project-Id-Version: mednafen\n" +"Report-Msgid-Bugs-To: http://forum.fobby.net/\n" +"POT-Creation-Date: 2012-01-18 11:00-0800\n" +"PO-Revision-Date: 2007-09-30 15:15+0200\n" +"Last-Translator: Dryer Lint\n" +"Language-Team: \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/snes/interface.cpp:66 src/gb/gb.cpp:284 src/nes/ppu/palette.cpp:71 +#: src/pce_fast/vdc.cpp:1569 src/pce/pce.cpp:276 src/gba/GBA.cpp:842 +#, c-format +msgid "Loading custom palette from \"%s\"...\n" +msgstr "" + +#: src/snes/interface.cpp:73 src/mempatcher.cpp:238 src/gb/gb.cpp:291 +#: src/nes/ppu/palette.cpp:78 src/pce/pce.cpp:284 src/gba/GBA.cpp:849 +#, c-format +msgid "Error opening file: %s\n" +msgstr "Fehler beim Öffnen der Datei: %s\n" + +#: src/snes/interface.cpp:80 src/gb/gb.cpp:298 src/pce_fast/vdc.cpp:1578 +#: src/pce/vce.cpp:466 src/gba/GBA.cpp:858 +msgid "custom color map" +msgstr "benutzerdefinierte Farb-Tabelle" + +#: src/snes/interface.cpp:92 src/gb/gb.cpp:310 src/nes/ppu/palette.cpp:87 +#, c-format +msgid "Error reading file: %s\n" +msgstr "" + +#: src/snes/interface.cpp:336 +#, c-format +msgid "Error opening save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:347 src/snes/interface.cpp:359 +#, c-format +msgid "Error reading save file \"%s\": %s" +msgstr "" + +#: src/snes/interface.cpp:448 +msgid "SNES Cart ROM" +msgstr "" + +#: src/snes/interface.cpp:556 +msgid "SNES save state buffer" +msgstr "" + +#: src/snes/interface.cpp:796 +msgid "Enable multitap on SNES port 1." +msgstr "" + +#: src/snes/interface.cpp:797 +msgid "Enable multitap on SNES port 2." +msgstr "" + +#: src/snes/interface.cpp:799 src/pce/pce.cpp:1009 +msgid "Emulated mouse sensitivity." +msgstr "" + +#: src/mempatcher.cpp:166 +msgid "Error allocating memory for cheat data." +msgstr "Fehler beim Reservieren des Speichers für Cheat-Daten." + +#: src/mempatcher.cpp:231 +#, c-format +msgid "Loading cheats from %s...\n" +msgstr "Lade Cheats aus %s...\n" + +#: src/mempatcher.cpp:265 +#, c-format +msgid "Invalid cheat type: %c\n" +msgstr "Ungültiger Cheat-Typ: %c\n" + +#: src/mempatcher.cpp:313 +#, c-format +msgid "%lu cheats loaded.\n" +msgstr "" + +#: src/wswan/main.cpp:215 +#, c-format +msgid "%s ROM image is too small." +msgstr "" + +#: src/wswan/main.cpp:244 src/gb/gb.cpp:2094 src/pce_fast/huc.cpp:123 +#: src/ngp/neopop.cpp:146 src/lynx/system.cpp:232 src/pce/huc.cpp:226 +#: src/sms/cart.cpp:133 src/md/system.cpp:236 src/vb/vb.cpp:605 +#: src/gba/GBA.cpp:748 +#, c-format +msgid "ROM: %dKiB\n" +msgstr "ROM: %dKiB\n" + +#: src/wswan/main.cpp:249 src/gb/gb.cpp:2096 src/pce_fast/huc.cpp:125 +#: src/ngp/neopop.cpp:147 src/lynx/system.cpp:234 src/pce/huc.cpp:228 +#: src/sms/cart.cpp:135 src/md/system.cpp:237 src/vb/vb.cpp:606 +#: src/gba/GBA.cpp:750 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "ROM MD5: 0x%s\n" + +#: src/wswan/main.cpp:264 +#, c-format +msgid "Developer: %s (0x%02x)\n" +msgstr "Entwickler: %s (0x%02x)\n" + +#: src/wswan/main.cpp:285 +#, c-format +msgid "EEPROM: %d bytes\n" +msgstr "EEPROM: %d Bytes\n" + +#: src/wswan/main.cpp:288 +#, c-format +msgid "Battery-backed RAM: %d bytes\n" +msgstr "Battery-unterstützter RAM: %d Bytes\n" + +#: src/wswan/main.cpp:290 +#, c-format +msgid "Recorded Checksum: 0x%04x\n" +msgstr "Gespeicherte Prüfsumme: 0x%04x\n" + +#: src/wswan/main.cpp:295 +#, c-format +msgid "Real Checksum: 0x%04x\n" +msgstr "Tatsächliche Prüfsumme: 0x%04x\n" + +#: src/wswan/main.cpp:395 +msgid "Male" +msgstr "" + +#: src/wswan/main.cpp:398 +msgid "Female" +msgstr "" + +#: src/wswan/main.cpp:419 src/ngp/neopop.cpp:251 +msgid "Japanese" +msgstr "" + +#: src/wswan/main.cpp:422 src/ngp/neopop.cpp:254 +msgid "English" +msgstr "" + +#: src/wswan/main.cpp:430 +msgid "Virtually rotate D-pads along with screen." +msgstr "D-pad virtuell mit Bildschirm rotieren." + +#: src/wswan/main.cpp:431 src/ngp/neopop.cpp:262 +msgid "Language games should display text in." +msgstr "" + +#: src/wswan/main.cpp:431 +msgid "" +"The only game this setting is known to affect is \"Digimon Tamers - Battle " +"Spirit\"." +msgstr "" + +#: src/wswan/main.cpp:432 +msgid "Name" +msgstr "Name" + +#: src/wswan/main.cpp:433 +msgid "Birth Year" +msgstr "Geburtsjahr" + +#: src/wswan/main.cpp:434 +msgid "Birth Month" +msgstr "Geburtsmonat" + +#: src/wswan/main.cpp:435 +msgid "Birth Day" +msgstr "Geburtstag" + +#: src/wswan/main.cpp:436 +msgid "Sex" +msgstr "Geschlecht" + +#: src/wswan/main.cpp:437 +msgid "Blood Type" +msgstr "Blutgruppe" + +#: src/wswan/main.cpp:508 +msgid "WonderSwan ROM Image" +msgstr "" + +#: src/wswan/main.cpp:509 +msgid "WonderSwan Color ROM Image" +msgstr "" + +#: src/wswan/main.cpp:510 +msgid "WonderSwan Music Rip" +msgstr "" + +#: src/general.cpp:170 src/cdrom/CDAccess_Image.cpp:489 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting.\n" +msgstr "" + +#: src/state.cpp:658 src/state.cpp:805 +#, c-format +msgid "Module \"%s\" doesn't support save states." +msgstr "" + +#: src/state.cpp:667 src/state.cpp:677 +#, c-format +msgid "State %d save error." +msgstr "Fehler beim Speichern von Stand %d." + +#: src/state.cpp:688 +#, c-format +msgid "State %d saved." +msgstr "Stand %d gespeichert." + +#: src/state.cpp:820 +#, c-format +msgid "State %d load error." +msgstr "Fehler beim Laden von Stand %d." + +#: src/state.cpp:831 +#, c-format +msgid "State %d loaded." +msgstr "Stand %d geladen." + +#: src/state.cpp:840 +#, c-format +msgid "State %d read error!" +msgstr "Fehler beim Lesen von Stand %d!" + +#: src/state.cpp:894 +msgid "Save state preview buffer" +msgstr "" + +#: src/state.cpp:946 +msgid "Save state status" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:51 +msgid "MMC [MODE SENSE 10] command failed." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:59 +msgid "MMC [MODE SENSE 10] command returned bogus data for mode page 0x2A." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:64 +msgid "Drive does not support reading Mode 2 Form 1 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:69 +msgid "Drive does not support reading Mode 2 Form 2 sectors." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:74 +msgid "Reading CD-DA sectors via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:79 +msgid "Read CD-DA sectors via \"READ CD\" are not positionally-accurate." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:84 +msgid "Reading raw subchannel data via \"READ CD\" is not supported." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:137 +msgid "Error reading disc TOC." +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:148 +#, c-format +msgid "Invalid first track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:153 +#, c-format +msgid "Invalid last track: %d\n" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:220 src/cdrom/CDAccess_Physical.cpp:234 +#, c-format +msgid "MMC Read Error; libcdio return code %d" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:257 +msgid "Connected physical devices:\n" +msgstr "Verbundenes physikalisches Gerät:\n" + +#: src/cdrom/CDAccess_Physical.cpp:269 +msgid "No CDROM drives detected(or no disc present)." +msgstr "Kein CD-ROM Laufwerk gefunden (oder keine CD eingelegt)." + +#: src/cdrom/CDAccess_Physical.cpp:281 +msgid "Unknown error opening physical CD" +msgstr "" + +#: src/cdrom/CDAccess_Physical.cpp:323 +#, c-format +msgid "Error ejecting medium;; libcdio return code %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:124 +#, c-format +msgid "TOC first(%d)/last(%d) track numbers bad." +msgstr "" + +#: src/cdrom/cdromif.cpp:257 +#, c-format +msgid "Sector %u read error: %s" +msgstr "" + +#: src/cdrom/cdromif.cpp:414 src/cdrom/cdromif.cpp:415 +#: src/cdrom/scsicd.cpp:514 src/cdrom/scsicd.cpp:515 +#, c-format +msgid "Uncorrectable data at sector %d" +msgstr "" + +#: src/cdrom/cdromif.cpp:464 +#, c-format +msgid "Error on eject/insert attempt: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:227 src/cdrom/CDAccess_Image.cpp:498 +#, c-format +msgid "Could not open referenced file \"%s\": %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:281 +#, c-format +msgid "" +"Length specified in TOC file for track %d is too large by %ld sectors!\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:372 +#, c-format +msgid "Invalid track number: %d" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:393 +#, c-format +msgid "Invalid track format: %s" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:402 +msgid "\"RW\" format subchannel data not supported, only \"RW_RAW\" is!" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:459 src/cdrom/CDAccess_Image.cpp:469 +#, c-format +msgid "Command %s is outside of a TRACK definition!\n" +msgstr "Kommando %s it außerhalb von einer TRACK Definition!\n" + +#: src/cdrom/CDAccess_Image.cpp:514 +#, c-format +msgid "Unsupported audio track file format: %s\n" +msgstr "Nicht unterstütztes Tonspur-Dateiformat: %s\n" + +#: src/cdrom/CDAccess_Image.cpp:519 +#, c-format +msgid "Unsupported track format: %s\n" +msgstr "Nicht unterstütztes Track-Format: %s\n" + +#: src/cdrom/CDAccess_Image.cpp:553 +#, c-format +msgid "Invalid track format: %s\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:560 +#, c-format +msgid "Invalid track number: %d\n" +msgstr "Ungültige Track-Nummer: %d\n" + +#: src/cdrom/CDAccess_Image.cpp:601 +#, c-format +msgid "Unsupported CUE sheet directive: \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:605 +#, c-format +msgid "Unknown CUE sheet directive \"%s\".\n" +msgstr "" + +#: src/cdrom/CDAccess_Image.cpp:615 +msgid "No tracks found!\n" +msgstr "Keine Tracks gefunden!\n" + +#: src/cdrom/CDAccess_Image.cpp:809 +#, c-format +msgid "Could not find track for sector %u!" +msgstr "" + +#: src/cdrom/pcecd.cpp:446 +msgid "PCE ADPCM RAM" +msgstr "PCE ADPCM RAM" + +#: src/cdrom/audioreader.cpp:142 +msgid "Error initializing MusePack decoder!\n" +msgstr "" + +#: src/FileWrapper.cpp:87 +#, c-format +msgid "Error duping file descriptor: %s" +msgstr "" + +#: src/FileWrapper.cpp:94 +#, c-format +msgid "Error during fdopen(): %s" +msgstr "" + +#: src/FileWrapper.cpp:127 src/FileWrapper.cpp:139 +#, c-format +msgid "Error opening file \"%s\" for \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:129 src/FileWrapper.cpp:141 +#, c-format +msgid "Error opening file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:169 +#, c-format +msgid "Error closing opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:187 src/FileWrapper.cpp:190 src/FileWrapper.cpp:233 +#, c-format +msgid "Error reading from opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:202 +#, c-format +msgid "Error flushing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:212 src/FileWrapper.cpp:258 src/FileWrapper.cpp:268 +#, c-format +msgid "Error writing to opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:294 +#, c-format +msgid "Error reading line in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:306 +#, c-format +msgid "Error seeking in opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:318 +#, c-format +msgid "Error getting the size of opened file \"%s\": %s" +msgstr "" + +#: src/FileWrapper.cpp:345 +#, c-format +msgid "Error getting position in opened file \"%s\": %s" +msgstr "" + +#: src/PSFLoader.cpp:225 +#, c-format +msgid "Not a PSF(version=0x%02x) file!" +msgstr "" + +#: src/PSFLoader.cpp:232 +#, c-format +msgid "PSF is missing at least %u bytes of data!" +msgstr "" + +#: src/PSFLoader.cpp:235 +msgid "PSF compressed CRC32 mismatch(data is corrupt)!" +msgstr "" + +#: src/PSFLoader.cpp:258 +#, c-format +msgid "" +"Referenced path \"%s\" is potentially unsafe. See \"filesys." +"untrusted_fip_check\" setting." +msgstr "" + +#: src/PSFLoader.cpp:286 +msgid "PSF decompressed size exceeds maximum allowed!" +msgstr "" + +#: src/PSFLoader.cpp:289 +msgid "PSF compressed data is bad." +msgstr "" + +#: src/psx/frontio.cpp:461 +#, c-format +msgid "" +"Memory card file \"%s\" is an incorrect size(%d bytes). The correct size is " +"%d bytes." +msgstr "" + +#: src/psx/gpu.cpp:1130 +msgid "VIDEO STANDARD MISMATCH" +msgstr "" + +#: src/psx/psx.cpp:1294 src/pce/pce.cpp:944 src/pcfx/pcfx.cpp:893 +msgid "Eject error." +msgstr "" + +#: src/psx/psx.cpp:1300 src/pce/pce.cpp:950 src/pcfx/pcfx.cpp:899 +msgid "Virtual CD Drive Tray Open" +msgstr "" + +#: src/psx/psx.cpp:1302 src/pce/pce.cpp:952 src/pcfx/pcfx.cpp:901 +msgid "Virtual CD Drive Tray Closed" +msgstr "" + +#: src/psx/psx.cpp:1324 src/pce/pce.cpp:973 src/pcfx/pcfx.cpp:922 +msgid "Disc absence selected." +msgstr "" + +#: src/psx/psx.cpp:1326 src/pce/pce.cpp:975 src/pcfx/pcfx.cpp:924 +#, c-format +msgid "Disc %d of %d selected." +msgstr "" + +#: src/psx/psx.cpp:1355 +msgid "PSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1356 +msgid "MiniPSF1 Rip" +msgstr "" + +#: src/psx/psx.cpp:1357 src/psx/psx.cpp:1358 +msgid "PS-X Executable" +msgstr "" + +#: src/psx/psx.cpp:1364 +msgid "Japan" +msgstr "" + +#: src/psx/psx.cpp:1365 +msgid "North America" +msgstr "" + +#: src/psx/psx.cpp:1366 +msgid "Europe" +msgstr "" + +#: src/psx/psx.cpp:1372 +msgid "Attempt to auto-detect region of game." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Default region to use." +msgstr "" + +#: src/psx/psx.cpp:1373 +msgid "Used if region autodetection fails or is disabled." +msgstr "" + +#: src/psx/psx.cpp:1375 +msgid "Path to the Japan SCPH-5500 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "Path to the North America SCPH-5501 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1376 +msgid "SHA1 0555c6fae8906f3f09baf5988f00e55f88e9f30b" +msgstr "" + +#: src/psx/psx.cpp:1377 +msgid "Path to the Europe SCPH-5502 ROM BIOS" +msgstr "" + +#: src/psx/psx.cpp:1379 +msgid "SPU output resampler quality." +msgstr "" + +#: src/psx/psx.cpp:1380 +msgid "" +"0 is lowest quality and CPU usage, 10 is highest quality and CPU usage. The " +"resampler that this setting refers to is used for converting from 44.1KHz to " +"the sampling rate of the host audio device Mednafen is using. Changing " +"Mednafen's output rate, via the \"sound.rate\" setting, to \"44100\" will " +"bypass the resampler, which will decrease CPU usage by Mednafen, and can " +"increase or decrease audio quality, depending on various operating system " +"and hardware factors." +msgstr "" + +#: src/mednafen.cpp:54 +msgid "Force monophonic sound output." +msgstr "Mono-Sound-Ausgabe erzwingen." + +#: src/mednafen.cpp:55 +msgid "Enable (automatic) usage of this module." +msgstr "" + +#: src/mednafen.cpp:56 +msgid "Enable video temporal blur(50/50 previous/current frame by default)." +msgstr "" + +#: src/mednafen.cpp:57 +msgid "Accumulate color data rather than discarding it." +msgstr "" +"Farbdaten akkumulieren, anstelle sie zu verwerfen (Bewegungsunschärfe)." + +#: src/mednafen.cpp:58 +msgid "" +"Blur amount in accumulation mode, specified in percentage of accumulation " +"buffer to mix with the current frame." +msgstr "" +"Unschärfe-Intensität im Akkumulierungs-Modus, angegeben in Prozent des " +"Akkumulierungspuffers, die mit dem aktuellen Frame gemischt werden sollen." + +#: src/mednafen.cpp:73 +msgid "" +"A fast codec, computationally, but will cause enormous file size and may " +"exceed your storage medium's sustained write rate." +msgstr "" + +#: src/mednafen.cpp:76 +msgid "A good balance between performance and compression ratio." +msgstr "" + +#: src/mednafen.cpp:79 +msgid "" +"Has a better compression ratio than \"cscd\", but is much more CPU " +"intensive. Use for compatibility with official QuickTime in cases where you " +"have insufficient disk space for \"raw\"." +msgstr "" + +#: src/mednafen.cpp:84 +msgid "See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:88 +msgid "Compressor to use with state rewinding" +msgstr "" + +#: src/mednafen.cpp:90 +msgid "Number of frames to keep states for when state rewinding is enabled." +msgstr "" +"Anzahl der Frames, die Speicherstände behalten werden sollen, wenn Stand-" +"Zurückspulen aktiviert ist." + +#: src/mednafen.cpp:91 +msgid "" +"WARNING: Setting this to a large value may cause excessive RAM usage in some " +"circumstances, such as with games that stream large volumes of data off of " +"CDs." +msgstr "" + +#: src/mednafen.cpp:93 +msgid "Enable untrusted file-inclusion path security check." +msgstr "" + +#: src/mednafen.cpp:94 +msgid "" +"When this setting is set to \"1\", the default, paths to files referenced " +"from files like CUE sheets and PSF rips are checked for certain characters " +"that can be used in directory traversal, and if found, loading is aborted. " +"Set it to \"0\" if you want to allow constructs like absolute paths in CUE " +"sheets, but only if you understand the security implications of doing so(see " +"\"Security Issues\" section in the documentation)." +msgstr "" + +#: src/mednafen.cpp:96 +msgid "Path to directory for screen snapshots." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "Path to directory for save games and nonvolatile memory." +msgstr "" + +#: src/mednafen.cpp:97 +msgid "" +"WARNING: Do not set this path to a directory that contains Famicom Disk " +"System disk images, or you will corrupt them when you load an FDS game and " +"exit Mednafen." +msgstr "" + +#: src/mednafen.cpp:98 +msgid "Path to directory for save states." +msgstr "" + +#: src/mednafen.cpp:99 +msgid "Path to directory for movies." +msgstr "" + +#: src/mednafen.cpp:100 +msgid "Path to directory for cheats." +msgstr "" + +#: src/mednafen.cpp:101 +msgid "Path to directory for custom palettes." +msgstr "" + +#: src/mednafen.cpp:102 +msgid "Path to directory for firmware." +msgstr "" + +#: src/mednafen.cpp:104 +msgid "Format string for movie filename." +msgstr "" + +#: src/mednafen.cpp:105 +msgid "Format string for state filename." +msgstr "" + +#: src/mednafen.cpp:106 +msgid "Format string for save games filename." +msgstr "" + +#: src/mednafen.cpp:106 +#, c-format +msgid "" +"WARNING: %x should always be included, otherwise you run the risk of " +"overwriting save data for games that create multiple save data files.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:107 +msgid "Format string for screen snapshot filenames." +msgstr "" + +#: src/mednafen.cpp:107 +#, c-format +msgid "" +"WARNING: %x or %p should always be included, otherwise there will be a " +"conflict between the numeric counter text file and the image data file.\n" +"\n" +"See fname_format.txt for more information. Edit at your own risk." +msgstr "" + +#: src/mednafen.cpp:109 +msgid "Disable gzip compression when saving save states and backup memory." +msgstr "" + +#: src/mednafen.cpp:112 +msgid "Double the raw image's width if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:113 +msgid "Double the raw image's height if it's below this threshold." +msgstr "" + +#: src/mednafen.cpp:115 +msgid "Video codec to use." +msgstr "" + +#: src/mednafen.cpp:213 +#, c-format +msgid "Starting QuickTime recording to file \"%s\":\n" +msgstr "" + +#: src/mednafen.cpp:215 +#, c-format +msgid "Video width: %u\n" +msgstr "" + +#: src/mednafen.cpp:216 +#, c-format +msgid "Video height: %u\n" +msgstr "" + +#: src/mednafen.cpp:217 +#, c-format +msgid "Video codec: %s\n" +msgstr "" + +#: src/mednafen.cpp:218 +#, c-format +msgid "Sound rate: %u\n" +msgstr "" + +#: src/mednafen.cpp:219 +#, c-format +msgid "Sound channels: %u\n" +msgstr "" + +#: src/mednafen.cpp:400 +msgid "M3U CD Set" +msgstr "" + +#: src/mednafen.cpp:419 +#, c-format +msgid "M3U at \"%s\" references self." +msgstr "" + +#: src/mednafen.cpp:422 +msgid "M3U load recursion too deep!" +msgstr "" + +#: src/mednafen.cpp:441 +#, c-format +msgid "" +"Loading %s...\n" +"\n" +msgstr "" +"Lade %s...\n" +"\n" + +#: src/mednafen.cpp:441 +msgid "PHYSICAL CD" +msgstr "" + +#: src/mednafen.cpp:472 +msgid "Error opening CD." +msgstr "Fehler beim Öffnen der CD." + +#: src/mednafen.cpp:486 +#, c-format +msgid "CD %d Layout:\n" +msgstr "" + +#: src/mednafen.cpp:491 +#, c-format +msgid "Track %2d, LBA: %6d %s\n" +msgstr "" + +#: src/mednafen.cpp:567 src/mednafen.cpp:770 +#, c-format +msgid "Unrecognized system \"%s\"!" +msgstr "Unbekanntes System \"%s\"!" + +#: src/mednafen.cpp:572 +msgid "Could not find a system that supports this CD." +msgstr "" + +#: src/mednafen.cpp:579 +#, c-format +msgid "Specified system \"%s\" doesn't support CDs!" +msgstr "Das angegebene System \"%s\" unterstützt keine CDs!" + +#: src/mednafen.cpp:583 src/mednafen.cpp:779 +#, c-format +msgid "" +"Using module: %s(%s)\n" +"\n" +msgstr "" + +#: src/mednafen.cpp:631 +#, c-format +msgid "Applying IPS file \"%s\"...\n" +msgstr "Wende IPS Datei \"%s\" an...\n" + +#: src/mednafen.cpp:638 src/settings.cpp:343 +#, c-format +msgid "Failed: %s\n" +msgstr "" + +#: src/mednafen.cpp:644 +#, c-format +msgid "Error opening IPS file: %s\n" +msgstr "" + +#: src/mednafen.cpp:681 +#, c-format +msgid "Loading %s...\n" +msgstr "" + +#: src/mednafen.cpp:708 +msgid "game" +msgstr "" + +#: src/mednafen.cpp:737 +msgid "" +"Specified system only supports CD(physical, or image files, such as *.cue " +"and *.toc) loading." +msgstr "" + +#: src/mednafen.cpp:739 +msgid "Specified system does not support normal file loading." +msgstr "" + +#: src/mednafen.cpp:772 +msgid "Unrecognized file format. Sorry." +msgstr "Unbekanntes Dateiformat. Sorry." + +#: src/mednafen.cpp:1020 +#, c-format +msgid "Internal emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1021 +#, c-format +msgid "External emulation modules: %s\n" +msgstr "" + +#: src/mednafen.cpp:1357 +msgid "Can't rewind during movie playback(yet!)." +msgstr "Kann während Film-Wiedergabe (noch!) nicht zurückspulen." + +#: src/mednafen.cpp:1362 +msgid "Silly-billy, can't rewind during netplay." +msgstr "Dummerchen, kein Zurückspulen im Netplay!" + +#: src/mednafen.cpp:1367 +msgid "Music player rewinding is unsupported." +msgstr "Zurückspulen wird im Music Player nicht unterstützt." + +#: src/mednafen.cpp:1645 +#, c-format +msgid "%s enabled." +msgstr "%s aktiviert." + +#: src/mednafen.cpp:1647 +#, c-format +msgid "%s disabled." +msgstr "%s deaktiviert." + +#: src/gb/gb.cpp:327 +#, c-format +msgid "Warning: %lld byte(s) of trailing unused data.\n" +msgstr "" + +#: src/gb/gb.cpp:1962 src/gb/gb.cpp:1992 src/nes/fds.cpp:601 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/gb/gb.cpp:1967 src/drivers/video.cpp:547 +msgid "None" +msgstr "Keiner" + +#: src/gb/gb.cpp:2076 +msgid "GB Color Map" +msgstr "GB Farb-Tabelle" + +#: src/gb/gb.cpp:2095 src/lynx/system.cpp:233 src/pce/huc.cpp:227 +#: src/sms/cart.cpp:134 src/gba/GBA.cpp:749 +#, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "" + +#: src/gb/gb.cpp:2097 +#, c-format +msgid "Type: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2098 +#, c-format +msgid "RAM Size: 0x%02x(%s)\n" +msgstr "" + +#: src/gb/gb.cpp:2099 +#, c-format +msgid "Version: 0x%02x\n" +msgstr "" + +#: src/gb/gb.cpp:2132 +msgid "Invalid ROM size" +msgstr "Ungültige ROM-Größe" + +#: src/gb/gb.cpp:2146 +msgid "Invalid RAM size" +msgstr "Ungültige RAM-Größe" + +#: src/gb/gb.cpp:2666 +msgid "Auto" +msgstr "" + +#: src/gb/gb.cpp:2666 +msgid "Automatic detection based on headers." +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "DMG" +msgstr "" + +#: src/gb/gb.cpp:2667 +msgid "Original GameBoy Monochrome." +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "CGB" +msgstr "" + +#: src/gb/gb.cpp:2668 +msgid "" +"GameBoy Color.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "AGB" +msgstr "" + +#: src/gb/gb.cpp:2669 +msgid "" +"GameBoy Advance.\n" +"\n" +"This option is not fully implemented in regards to handling of DMG games." +msgstr "" + +#: src/gb/gb.cpp:2675 +msgid "Emulated GB type." +msgstr "" + +#: src/gb/gb.cpp:2722 +msgid "GameBoy ROM Image" +msgstr "" + +#: src/gb/gb.cpp:2723 src/gb/gb.cpp:2724 +msgid "GameBoy Color ROM Image" +msgstr "" + +#: src/nes/nsf.cpp:154 +msgid "NSF data" +msgstr "NSF Daten" + +#: src/nes/nsf.cpp:194 +msgid "NSF header" +msgstr "NSF Header" + +#: src/nes/nsf.cpp:227 +msgid "Load address is invalid!" +msgstr "Lade-Adresse ist ungültig!" + +#: src/nes/nsf.cpp:234 +msgid "Total number of songs is less than 1!" +msgstr "Gesamtzahl der Lieder ist kleiner als 1!" + +#: src/nes/nsf.cpp:265 +msgid "" +"NSF Loaded. File information:\n" +"\n" +msgstr "" +"NSF geladen. Datei-Informationen:\n" +"\n" + +#: src/nes/nsf.cpp:268 +#, c-format +msgid "Game/Album Name:\t%s\n" +msgstr "Spiel-/Album-Name: \t%s\n" + +#: src/nes/nsf.cpp:270 +#, c-format +msgid "Music Artist:\t%s\n" +msgstr "Musik-Interpret:\t%s\n" + +#: src/nes/nsf.cpp:272 +#, c-format +msgid "Copyright:\t\t%s\n" +msgstr "Copyright:\t\t%s\n" + +#: src/nes/nsf.cpp:274 +#, c-format +msgid "Ripper:\t\t%s\n" +msgstr "Ripper:\t\t%s\n" + +#: src/nes/nsf.cpp:283 +#, c-format +msgid "Expansion hardware: %s\n" +msgstr "Erweiterungs-Hardware: %s\n" + +#: src/nes/nsf.cpp:289 +msgid "Bank-switched\n" +msgstr "Bank-switched\n" + +#: src/nes/nsf.cpp:290 +#, c-format +msgid "" +"Load address: $%04x\n" +"Init address: $%04x\n" +"Play address: $%04x\n" +msgstr "" +"Lade-Adresse: $%04x\n" +"Init-Adresse: $%04x\n" +"Abspiel-Adresse: $%04x\n" + +#: src/nes/nsf.cpp:292 +#, c-format +msgid "" +"Starting song: %d / %d\n" +"\n" +msgstr "" +"Starte Lied: %d / %d\n" +"\n" + +#: src/nes/nsf.cpp:295 src/nes/nsf.cpp:297 +msgid "NSF expansion RAM" +msgstr "NSF Erweiterungs-RAM" + +#: src/nes/unif.cpp:143 +#, c-format +msgid "Name/Attribute Table Mirroring: %s\n" +msgstr "Name/Attribut-Tabellen-Spiegelung: %s\n" + +#: src/nes/unif.cpp:154 +msgid "Name: " +msgstr "Name:" + +#: src/nes/unif.cpp:191 +#, c-format +msgid "Dumped by: %s\n" +msgstr "Ausgelesen von: %s\n" + +#: src/nes/unif.cpp:192 +#, c-format +msgid "Dumped with: %s\n" +msgstr "Ausgelesen mit: %s\n" + +#: src/nes/unif.cpp:194 +msgid "January" +msgstr "Januar" + +#: src/nes/unif.cpp:194 +msgid "February" +msgstr "Februar" + +#: src/nes/unif.cpp:194 +msgid "March" +msgstr "März" + +#: src/nes/unif.cpp:194 +msgid "April" +msgstr "April" + +#: src/nes/unif.cpp:194 +msgid "May" +msgstr "Mai" + +#: src/nes/unif.cpp:194 +msgid "June" +msgstr "Juni" + +#: src/nes/unif.cpp:194 +msgid "July" +msgstr "Juli" + +#: src/nes/unif.cpp:195 +msgid "August" +msgstr "August" + +#: src/nes/unif.cpp:195 +msgid "September" +msgstr "September" + +#: src/nes/unif.cpp:195 +msgid "October" +msgstr "Oktober" + +#: src/nes/unif.cpp:195 +msgid "November" +msgstr "November" + +#: src/nes/unif.cpp:195 +msgid "December" +msgstr "Dezember" + +#: src/nes/unif.cpp:196 +#, c-format +msgid "Dumped on: %s %d, %d\n" +msgstr "Ausgelesen am: %2$d. %1$s, %3$d\n" + +#: src/nes/unif.cpp:244 +#, c-format +msgid "TV Standard Compatibility: %s\n" +msgstr "TV-Standard Kompatibilität: %s\n" + +#: src/nes/unif.cpp:251 src/nes/ines.cpp:696 +msgid "Battery-backed.\n" +msgstr "Batterie-gestützt.\n" + +#: src/nes/unif.cpp:274 +#, c-format +msgid "PRG ROM %d size: %d" +msgstr "PRG ROM %d Größe: %d" + +#: src/nes/unif.cpp:284 +#, c-format +msgid "Error reading PRG chunk %d" +msgstr "" + +#: src/nes/unif.cpp:302 +#, c-format +msgid "Board name: %s\n" +msgstr "Board-Name: %s\n" + +#: src/nes/unif.cpp:315 +#, c-format +msgid "CHR ROM %d size: %d" +msgstr "CHR ROM %d Größe: %d" + +#: src/nes/unif.cpp:325 +#, c-format +msgid "Error reading CHR chunk %d" +msgstr "" + +#: src/nes/unif.cpp:503 +msgid "Board type not supported." +msgstr "Board-Typ nicht unterstützt." + +#: src/nes/unif.cpp:570 src/nes/ines.cpp:692 +#, c-format +msgid "ROM MD5: 0x%s\n" +msgstr "ROM MD5: 0x%s\n" + +#: src/nes/boards/mmc5.cpp:122 src/nes/boards/mmc1.cpp:340 +msgid ">8KB external WRAM present. Use UNIF if you hack the ROM image.\n" +msgstr "" +" >8KB externer WRAM präsent. Verwende UNIF, wenn du das ROM-Abbild hacken " +"willst.\n" + +#: src/nes/boards/mmc5.cpp:655 src/nes/boards/mmc5.cpp:785 +msgid "MMC5 EXRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:770 src/nes/ines.cpp:917 +msgid "WRAM" +msgstr "" + +#: src/nes/boards/mmc5.cpp:779 +msgid "MMC5 Fill" +msgstr "" + +#: src/nes/boards/maxicart.cpp:98 +msgid "expansion RAM" +msgstr "Erweiterungs-RAM" + +#: src/nes/boards/mmc3.cpp:1536 +msgid "" +"Low-G-Man can not work normally in the iNES format.\n" +"This game has been recognized by its CRC32 value, and the appropriate " +"changes will be made so it will run.\n" +"If you wish to hack this game, you should use the UNIF format for your " +"hack.\n" +"\n" +msgstr "" +"Low-G-Man läuft nicht ordnungsgemäß im iNES Format.\n" +"Dieses Spiel wurde an seinem CRC32 Wert erkannt und die erforderlichen " +"Änderungen, damit es laufen kann, werden vorgenommen.\n" +"Wenn du dieses Spiel hacken willst, solltest du das UNIF-Format für den Hack " +"verwenden.\n" +"\n" + +#: src/nes/cart.cpp:494 +msgid "Game Genie ROM image" +msgstr "Game Genie ROM-Abbild" + +#: src/nes/cart.cpp:499 +msgid "Game Genie ROM Image" +msgstr "" + +#: src/nes/cart.cpp:509 +msgid "Error reading from Game Genie ROM image!" +msgstr "Fehler beim Lesen des Game Genie ROM Abbildes!" + +#: src/nes/cart.cpp:539 +msgid "Game Genie Read Map Backup" +msgstr "" + +#: src/nes/cart.cpp:540 +msgid "Game Genie Write Map Backup" +msgstr "" + +#: src/nes/cart.cpp:752 +#, c-format +msgid "WRAM file \"%s\" cannot be written to.\n" +msgstr "In WRAM-Datei \"%s\" konnte nicht geschrieben werden.\n" + +#: src/nes/ines.cpp:368 +#, c-format +msgid "" +"The copy of the game you have loaded, \"%s\", is bad, and will not work " +"properly on Mednafen." +msgstr "" +"Die Kopie des geladenen Spiels, \"%s\", ist fehlerhaft und wird nicht " +"fehlerfrei unter Mednafen laufen." + +#: src/nes/ines.cpp:531 +msgid "" +"The iNES header contains incorrect information. For now, the information " +"will be corrected in RAM:\n" +msgstr "" +"Der iNES Header enthält fehlerhafte Informationen. Die Informationen werden " +"vorerst im RAM korrigiert:\n" + +#: src/nes/ines.cpp:534 +#, c-format +msgid "The mapper number should be set to %d.\n" +msgstr "Die Mapper-Nummer sollte auf %d gestellt sein.\n" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Horizontal" +msgstr "Horizontal" + +#: src/nes/ines.cpp:539 src/nes/ines.cpp:694 +msgid "Vertical" +msgstr "Vertikal" + +#: src/nes/ines.cpp:539 +msgid "Four-screen" +msgstr "" + +#: src/nes/ines.cpp:541 +#, c-format +msgid "Mirroring should be set to \"%s\".\n" +msgstr "" + +#: src/nes/ines.cpp:545 +msgid "The battery-backed bit should be set.\n" +msgstr "Das Batterie-gestützt-Bit sollte gesetzt sein.\n" + +#: src/nes/ines.cpp:549 +msgid "This game should not have any CHR ROM. " +msgstr "Dieses Spiel sollte kein CHR ROM besitzen. " + +#: src/nes/ines.cpp:604 +msgid "No PRG ROM present!" +msgstr "Kein PRG ROM vorhanden!" + +#: src/nes/ines.cpp:621 +msgid "PRG ROM data" +msgstr "PRG ROM Daten" + +#: src/nes/ines.cpp:633 +msgid "CHR ROM data" +msgstr "" + +#: src/nes/ines.cpp:648 +msgid "Error reading trainer." +msgstr "Fehler beim Lesen des Trainers." + +#: src/nes/ines.cpp:659 +msgid "Error reading PRG ROM data" +msgstr "Fehler beim Lesen der PRG ROM Daten." + +#: src/nes/ines.cpp:668 +msgid "Error reading CHR ROM data" +msgstr "Fehler beim Lesen der CHR ROM Daten." + +#: src/nes/ines.cpp:688 +#, c-format +msgid "PRG ROM: %3d x 16KiB\n" +msgstr "PRG ROM: %3d x 16KiB\n" + +#: src/nes/ines.cpp:689 +#, c-format +msgid "CHR ROM: %3d x 8KiB\n" +msgstr "CHR ROM: %3d x 8KiB\n" + +#: src/nes/ines.cpp:690 +#, c-format +msgid "ROM CRC32: 0x%08x\n" +msgstr "" + +#: src/nes/ines.cpp:693 +#, c-format +msgid "Mapper: %d\n" +msgstr "Mapper: %d\n" + +#: src/nes/ines.cpp:694 +#, c-format +msgid "Mirroring: %s\n" +msgstr "Spiegelung: %s\n" + +#: src/nes/ines.cpp:694 +msgid "None(Four-screen)" +msgstr "Keine (Four-screen)" + +#: src/nes/ines.cpp:697 +msgid "Trained.\n" +msgstr "Enthält Trainer.\n" + +#: src/nes/ines.cpp:905 src/nes/fds.cpp:682 +msgid "CHR RAM" +msgstr "CHR RAM" + +#: src/nes/ines.cpp:940 +#, c-format +msgid "iNES mapper %d is not supported!" +msgstr "iNES Mapper %d wird nicht unterstützt!" + +#: src/nes/ppu/palette.cpp:87 +msgid "File length is too short" +msgstr "" + +#: src/nes/nes.cpp:406 +msgid "Cannot use states in GG Screen." +msgstr "Speicherstände können im Game Genie-Bildschirm nicht verwendet werden." + +#: src/nes/nes.cpp:437 src/pce_fast/huc.cpp:320 src/drivers/main.cpp:244 +#: src/drivers/main.cpp:261 src/pce/pce.cpp:732 src/vb/vb.cpp:983 +msgid "Disabled" +msgstr "Deaktiviert" + +#: src/nes/nes.cpp:440 +msgid "Composite Video" +msgstr "" + +#: src/nes/nes.cpp:441 +msgid "S-Video" +msgstr "" + +#: src/nes/nes.cpp:442 +msgid "RGB" +msgstr "" + +#: src/nes/nes.cpp:443 +msgid "Monochrome" +msgstr "" + +#: src/nes/nes.cpp:450 +msgid "Disable four-score emulation." +msgstr "" + +#: src/nes/nes.cpp:452 +msgid "Remove 8-sprites-per-scanline hardware limit." +msgstr "" + +#: src/nes/nes.cpp:453 +msgid "" +"WARNING: Enabling this option will cause graphical glitches in some games, " +"including \"Solstice\"." +msgstr "" + +#: src/nes/nes.cpp:455 +msgid "Sound quality." +msgstr "" + +#: src/nes/nes.cpp:456 +msgid "Output rate tolerance." +msgstr "" + +#: src/nes/nes.cpp:457 +msgid "" +"Enable less-accurate, but better sounding, Namco 106(mapper 19) sound " +"emulation." +msgstr "" +"Ungenauere aber besser klingende Namco 106(mapper 19) Sound Emulation " +"aktivieren." + +#: src/nes/nes.cpp:458 +msgid "" +"Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation." +msgstr "" +"Dateiname nach (U), (J), (E), etc. Zeichenfolgen durchsuchen, um PAL-" +"Emulation zu (de-)aktivieren." + +#: src/nes/nes.cpp:459 +msgid "" +"Warning: This option may break NES network play when enabled IF the players " +"are using ROM images with different filenames." +msgstr "" + +#: src/nes/nes.cpp:461 +msgid "Enable PAL(50Hz) NES emulation." +msgstr "PAL (50Hz) NES Emulation aktivieren." + +#: src/nes/nes.cpp:462 +msgid "Enable Game Genie emulation." +msgstr "Game Genie Emulation aktivieren." + +#: src/nes/nes.cpp:463 +msgid "Path to Game Genie ROM image." +msgstr "Pfad zum Game Genie ROM-Abbild." + +#: src/nes/nes.cpp:464 +msgid "Clip left+right 8 pixel columns." +msgstr "Links und rechts 8 Pixel Spalten abschneiden." + +#: src/nes/nes.cpp:465 +msgid "First displayed scanline in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:466 +msgid "Last displayed scanlines in NTSC mode." +msgstr "" + +#: src/nes/nes.cpp:467 +msgid "First displayed scanline in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:468 +msgid "Last displayedscanlines in PAL mode." +msgstr "" + +#: src/nes/nes.cpp:469 +msgid "Enable NTSC color generation and blitter." +msgstr "NTSC-Farbgenerierung und -Blitter aktivieren." + +#: src/nes/nes.cpp:470 +msgid "" +"NOTE: If your refresh rate isn't very close to 60.1Hz(+-0.1), you will need " +"to set the nes.ntsc.mergefields setting to \"1\" to avoid excessive " +"flickering." +msgstr "" + +#: src/nes/nes.cpp:473 +msgid "Video quality/type preset." +msgstr "" + +#: src/nes/nes.cpp:474 +msgid "Merge fields to partially work around !=60.1Hz refresh rates." +msgstr "" +"Felder vermischen, um Abweichungen von 60.1Hz Bildwiederholrate teilweise " +"auszugleichen." + +#: src/nes/nes.cpp:475 +msgid "NTSC composite blitter saturation." +msgstr "NTSC Composite Blitter Sättigung." + +#: src/nes/nes.cpp:476 +msgid "NTSC composite blitter hue." +msgstr "NTSC Composite Blitter Farbton." + +#: src/nes/nes.cpp:477 +msgid "NTSC composite blitter sharpness." +msgstr "NTSC Composite Blitter Schärfe." + +#: src/nes/nes.cpp:478 +msgid "NTSC composite blitter brightness." +msgstr "NTSC Composite Blitter Helligkeit." + +#: src/nes/nes.cpp:479 +msgid "NTSC composite blitter contrast." +msgstr "NTSC Composite Blitter Kontrast." + +#: src/nes/nes.cpp:481 +msgid "Enable NTSC custom decoder matrix." +msgstr "Eigene NTSC Decoder-Matrix aktivieren." + +#: src/nes/nes.cpp:484 +msgid "NTSC custom decoder matrix element 0(red, value * V)." +msgstr "Eigene NTSC-Dekoder-Matrix: Element 0 (Rot, Wert * V)" + +#: src/nes/nes.cpp:485 +msgid "NTSC custom decoder matrix element 1(red, value * U)." +msgstr "Eigene NTSC-Dekoder-Matrix: Element 1 (Rot, Wert * U)" + +#: src/nes/nes.cpp:486 +msgid "NTSC custom decoder matrix element 2(green, value * V)." +msgstr "Eigene NTSC-Dekoder-Matrix: Element 2 (Grün, Wert * V)" + +#: src/nes/nes.cpp:487 +msgid "NTSC custom decoder matrix element 3(green, value * U)." +msgstr "Eigene NTSC-Dekoder-Matrix: Element 3 (Grün, Wert * U)" + +#: src/nes/nes.cpp:488 +msgid "NTSC custom decoder matrix element 4(blue, value * V)." +msgstr "Eigene NTSC-Dekoder-Matrix: Element 4 (Blau, Wert * V)" + +#: src/nes/nes.cpp:489 +msgid "NTSC custom decoder matrix element 5(blue, value * U." +msgstr "Eigene NTSC-Dekoder-Matrix: Element 5 (Blau, Wert * U)" + +#: src/nes/fds.cpp:84 +#, c-format +msgid "Disk %1$d Side %2$s Inserted" +msgstr "Diskette %1$d Seite %2$s eingelegt" + +#: src/nes/fds.cpp:89 +#, c-format +msgid "Disk %1$d Side %2$s Ejected" +msgstr "Diskette %1$d Seite %2$s ausgeworfen" + +#: src/nes/fds.cpp:105 +msgid "Eject disk before selecting." +msgstr "Diskette vor der Seiten-Auswahl auswerfen." + +#: src/nes/fds.cpp:109 +#, c-format +msgid "Disk %1$d Side %2$s Selected" +msgstr "Diskette %1$d Seite %2$s ausgewählt" + +#: src/nes/fds.cpp:358 src/nes/fds.cpp:636 +msgid "FDS Disk Data" +msgstr "FDS Disketten-Daten" + +#: src/nes/fds.cpp:641 +msgid "FDS BIOS" +msgstr "" + +#: src/nes/fds.cpp:649 src/nes/fds.cpp:665 +msgid "FDS BIOS ROM image is too small." +msgstr "" + +#: src/nes/fds.cpp:676 +msgid "FDS RAM" +msgstr "FDS RAM" + +#: src/nes/fds.cpp:693 +msgid "auxillary FDS data" +msgstr "" + +#: src/nes/fds.cpp:726 +#, c-format +msgid "Sides: %d\n" +msgstr "Seiten: %d\n" + +#: src/nes/fds.cpp:727 +#, c-format +msgid "Manufacturer Code: %02x (%s)\n" +msgstr "Hersteller-Code: %02x (%s)\n" + +#: src/nes/fds.cpp:728 +#, c-format +msgid "MD5: 0x%s\n" +msgstr "MD5: 0x%s\n" + +#: src/pce_fast/vdc.cpp:1574 +#, c-format +msgid "Error opening file: %m\n" +msgstr "" + +#: src/pce_fast/vdc.cpp:1589 src/pce/pce.cpp:299 src/gba/GBA.cpp:862 +msgid "Error reading file\n" +msgstr "" + +#: src/pce_fast/hes.cpp:57 src/pce/hes.cpp:62 +#, c-format +msgid "" +"Warning: HES is writing to physical address %08x. Future warnings of this " +"nature are temporarily disabled for this HES file.\n" +msgstr "" + +#: src/pce_fast/hes.cpp:79 src/pce_fast/hes.cpp:84 src/pce/hes.cpp:99 +#: src/pce/hes.cpp:104 +msgid "HES ROM" +msgstr "HES ROM" + +#: src/pce_fast/hes.cpp:105 src/pce/hes.cpp:144 +#, c-format +msgid "" +"Warning: HES is trying to load more data than is present in the file(%u " +"attempted, %u left)!\n" +msgstr "" + +#: src/pce_fast/hes.cpp:113 src/pce/hes.cpp:152 +msgid "Warning: HES is trying to load data past boundary.\n" +msgstr "" + +#: src/pce_fast/huc.cpp:124 +#, c-format +msgid "ROM CRC32: 0x%04x\n" +msgstr "ROM CRC32: 0x%04x\n" + +#: src/pce_fast/huc.cpp:127 src/pce/huc.cpp:266 +msgid "HuCard ROM" +msgstr "HuCard ROM" + +#: src/pce_fast/huc.cpp:191 src/pce/huc.cpp:399 +msgid "Tsushin Booster RAM" +msgstr "Tsushin Booster RAM" + +#: src/pce_fast/huc.cpp:263 src/pce_fast/huc.cpp:264 src/pce_fast/pce.cpp:625 +#: src/pce/pce.cpp:672 src/pce/pce.cpp:673 src/pce/pce.cpp:1083 +msgid "PC Engine ROM Image" +msgstr "" + +#: src/pce_fast/huc.cpp:265 src/pce/pce.cpp:674 src/md/cd/cd.cpp:903 +#: src/md/cd/cd.cpp:904 src/gba/GBA.cpp:2549 +msgid "BIOS Image" +msgstr "" + +#: src/pce_fast/huc.cpp:271 src/pce/pce.cpp:690 +msgid "CD BIOS" +msgstr "" + +#: src/pce_fast/huc.cpp:317 +#, c-format +msgid "CD MD5(first 256KiB): 0x%s\n" +msgstr "CD MD5(erste 256KiB): 0x%s\n" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +#, c-format +msgid "Arcade Card Emulation: %s\n" +msgstr "Arcade Card Emulation: %s\n" + +#: src/pce_fast/huc.cpp:320 src/pce/pce.cpp:732 +msgid "Enabled" +msgstr "Aktiviert" + +#: src/pce_fast/huc.cpp:344 src/pce/huc.cpp:351 +#, c-format +msgid "Error creating %s object: %s" +msgstr "" + +#: src/pce_fast/pce.cpp:177 src/pce/pce.cpp:339 +#, c-format +msgid "CD-DA Volume: %d%%\n" +msgstr "CD-DA Lautstärke: %d%%\n" + +#: src/pce_fast/pce.cpp:180 src/pce/pce.cpp:342 +#, c-format +msgid "ADPCM Volume: %d%%\n" +msgstr "" + +#: src/pce_fast/pce.cpp:282 +#, c-format +msgid "CPU overclock: %dx\n" +msgstr "CPU Übertaktung: %dx\n" + +#: src/pce_fast/pce.cpp:285 +#, c-format +msgid "CD-ROM speed: %ux\n" +msgstr "" + +#: src/pce_fast/pce.cpp:348 src/pce/pce.cpp:350 +#, c-format +msgid "CD PSG Volume: %d%%\n" +msgstr "CD PSG Lautstärke: %d%%\n" + +#: src/pce_fast/pce.cpp:599 src/md/system.cpp:517 +msgid "Correct the aspect ratio." +msgstr "" + +#: src/pce_fast/pce.cpp:600 src/pce/pce.cpp:1004 src/pcfx/pcfx.cpp:1079 +msgid "First rendered scanline." +msgstr "Erste angezeigte Scanline." + +#: src/pce_fast/pce.cpp:601 src/pce/pce.cpp:1005 src/pcfx/pcfx.cpp:1080 +msgid "Last rendered scanline." +msgstr "Letzte angezeigte Scanline." + +#: src/pce_fast/pce.cpp:602 src/pcfx/pcfx.cpp:1067 +msgid "Mouse sensitivity." +msgstr "" + +#: src/pce_fast/pce.cpp:603 src/pce/pce.cpp:1010 +msgid "" +"If set, when RUN+SEL are pressed simultaneously, disable both buttons " +"temporarily." +msgstr "" +"Wenn aktiviert, nachdem RUN+SELECT gleichzeitig gedrückt wurden beide Knöpfe " +"vorübergehend deaktivieren." + +#: src/pce_fast/pce.cpp:604 src/pce/pce.cpp:1015 +msgid "Force SuperGrafx emulation." +msgstr "SuperGrafx Emulation erzwingen." + +#: src/pce_fast/pce.cpp:605 src/pce/pce.cpp:1018 +msgid "Enable Arcade Card emulation." +msgstr "Arcade Card Emulation aktivieren." + +#: src/pce_fast/pce.cpp:606 +msgid "CPU overclock multiplier." +msgstr "CPU-Übertaktungs-Multiplikator" + +#: src/pce_fast/pce.cpp:607 +msgid "CD-ROM data transfer speed multiplier." +msgstr "CD-ROM Datentransfer-Geschwindigkeits-Multiplikator" + +#: src/pce_fast/pce.cpp:608 src/pce/pce.cpp:1021 src/pcfx/pcfx.cpp:1076 +msgid "Remove 16-sprites-per-scanline hardware limit." +msgstr "" + +#: src/pce_fast/pce.cpp:610 src/pce/pce.cpp:1024 src/md/system.cpp:515 +msgid "Path to the CD BIOS" +msgstr "Pfad zum CD BIOS" + +#: src/pce_fast/pce.cpp:611 +msgid "Enable lowpass filter dependent on playback-frequency." +msgstr "Lowpass-Filter abhängig von der Wiedergabe-Frequenz aktivieren." + +#: src/pce_fast/pce.cpp:612 src/pce/pce.cpp:1032 +msgid "PSG volume when playing a CD game." +msgstr "PSG-Lautstärke beim Abspielen eines CD-Spiels." + +#: src/pce_fast/pce.cpp:613 src/pce/pce.cpp:1033 +msgid "CD-DA volume." +msgstr "CD-DA-Lautstärke." + +#: src/pce_fast/pce.cpp:614 src/pce/pce.cpp:1034 +msgid "ADPCM volume." +msgstr "ADPCM Lautstärke." + +#: src/pce_fast/pce.cpp:626 src/pce/pce.cpp:1084 +msgid "PC Engine Music Rip" +msgstr "" + +#: src/pce_fast/pce.cpp:627 src/pce/pce.cpp:1085 +msgid "SuperGrafx ROM Image" +msgstr "" + +#: src/player.cpp:212 +msgid "Song:" +msgstr "Lied:" + +#: src/ngp/rom.cpp:104 +#, c-format +msgid "Name: %s\n" +msgstr "Name: %s\n" + +#: src/ngp/rom.cpp:105 +msgid "System: " +msgstr "System: " + +#: src/ngp/rom.cpp:108 +msgid "Color" +msgstr "Farbe" + +#: src/ngp/rom.cpp:110 +msgid "Greyscale" +msgstr "Graustufen" + +#: src/ngp/rom.cpp:114 +#, c-format +msgid "Catalog: %d (sub %d)\n" +msgstr "Katalog: %d (sub %d)\n" + +#: src/ngp/rom.cpp:119 +#, c-format +msgid "Starting PC: 0x%06X\n" +msgstr "Ausgangs-PC: 0x%06X\n" + +#: src/ngp/neopop.cpp:134 src/sms/cart.cpp:94 src/md/cart/cart.cpp:340 +msgid "Cart ROM" +msgstr "Cart ROM" + +#: src/ngp/neopop.cpp:338 +msgid "Neo Geo Pocket ROM Image" +msgstr "" + +#: src/ngp/neopop.cpp:339 +msgid "Neo Geo Pocket Color ROM Image" +msgstr "" + +#: src/video/tblur.cpp:40 +#, c-format +msgid "Video temporal frame blur enabled with accumulation: %f.\n" +msgstr "" + +#: src/video/tblur.cpp:45 +msgid "Video temporal frame blur enabled.\n" +msgstr "" + +#: src/video/video.cpp:69 +#, c-format +msgid "Screen snapshot %d saved." +msgstr "Bildschirmfoto %d gespeichert." + +#: src/video/video.cpp:79 src/video/video.cpp:80 +#, c-format +msgid "Error saving screen snapshot: %s" +msgstr "" + +#: src/drivers/sound.cpp:144 src/drivers/sound.cpp:273 +msgid "Error opening a sound device." +msgstr "Fehler beim Öffnen des Sound-Geräts." + +#: src/drivers/sound.cpp:243 +msgid "" +"\n" +"Initializing sound...\n" +msgstr "" +"\n" +"Initialisiere Sound...\n" + +#: src/drivers/sound.cpp:248 +#, c-format +msgid "" +"\n" +"Unknown sound driver \"%s\". Supported sound drivers:\n" +msgstr "" + +#: src/drivers/sound.cpp:264 +#, c-format +msgid "Using \"%s\" audio driver with SexyAL's default device selection." +msgstr "" + +#: src/drivers/sound.cpp:266 +#, c-format +msgid "Using \"%s\" audio driver with device \"%s\":" +msgstr "Verwende \"%s\" Audio-Treiber mit Gerät \"%s\":" + +#: src/drivers/sound.cpp:282 +msgid "Set rate is out of range [22050-1048576]" +msgstr "" + +#: src/drivers/sound.cpp:287 +#, c-format +msgid "" +"\n" +"Bits: %u\n" +"Rate: %u\n" +"Channels: %u\n" +"Byte order: CPU %s\n" +"Buffer size: %u sample frames(%f ms)\n" +msgstr "" +"\n" +"Bits: %u\n" +"Rate: %u\n" +"Kanäle: %u\n" +"Byte-Reihenfolge: CPU %s\n" +"Puffer-Größe: %u sample frames(%f ms)\n" + +#: src/drivers/sound.cpp:288 +#, c-format +msgid "Latency: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:294 +#, c-format +msgid "Period size: %u sample frames(%f ms)\n" +msgstr "" + +#: src/drivers/sound.cpp:299 +msgid "" +"Warning: Period time is too large(it should be <= ~5.333ms). Video will " +"appear very jerky.\n" +msgstr "" + +#: src/drivers/joystick.cpp:169 +#, c-format +msgid "Joystick %d - %s - Unique ID: %016llx\n" +msgstr "Joystick %d - %s - ID: %016llx\n" + +#: src/drivers/joystick.cpp:172 +#, c-format +msgid "Could not open joystick %d: %s.\n" +msgstr "" + +#: src/drivers/video-state.cpp:166 +#, c-format +msgid "-recording movie %d-" +msgstr "-nehme Film %d auf-" + +#: src/drivers/video-state.cpp:168 +#, c-format +msgid "-playing movie %d-" +msgstr "-Film %d wird abgespielt-" + +#: src/drivers/video-state.cpp:170 +msgid "-select movie-" +msgstr "-Film auswählen-" + +#: src/drivers/video-state.cpp:175 +msgid "-select state-" +msgstr "-Stand wählen-" + +#: src/drivers/help.cpp:40 +msgid "Toggle Help" +msgstr "" + +#: src/drivers/help.cpp:42 +msgid "Configure Command Key" +msgstr "" + +#: src/drivers/help.cpp:43 +msgid "Configure buttons on port n(1-5)" +msgstr "" + +#: src/drivers/help.cpp:44 +msgid "Select device on port n" +msgstr "" + +#: src/drivers/help.cpp:46 +msgid "Rotate Screen" +msgstr "" + +#: src/drivers/help.cpp:47 +msgid "Toggle Fullscreen Mode" +msgstr "" + +#: src/drivers/help.cpp:48 +msgid "Take Screen Snapshot" +msgstr "" + +#: src/drivers/help.cpp:50 +msgid "Enable state rewinding" +msgstr "" + +#: src/drivers/help.cpp:51 src/drivers/input.cpp:703 +msgid "Rewind" +msgstr "Zurückspulen" + +#: src/drivers/help.cpp:52 +msgid "Save State" +msgstr "" + +#: src/drivers/help.cpp:53 +msgid "Select Disk" +msgstr "" + +#: src/drivers/help.cpp:54 +msgid "Load State" +msgstr "" + +#: src/drivers/help.cpp:55 +msgid "Insert coin; Insert/Eject disk" +msgstr "" + +#: src/drivers/help.cpp:57 +msgid "(Soft) Reset, if available on emulated system." +msgstr "" + +#: src/drivers/help.cpp:58 +msgid "Power Toggle/Hard Reset" +msgstr "" + +#: src/drivers/help.cpp:59 src/drivers/input.cpp:702 +msgid "Exit" +msgstr "Beenden" + +#: src/drivers/help.cpp:64 +msgid "Mednafen Quickie Help" +msgstr "Mednafen Hilfe-Übersicht" + +#: src/drivers/help.cpp:67 +msgid "Default key assignments:" +msgstr "Standard Tastenbelegung:" + +#: src/drivers/video.cpp:385 +msgid "Initializing video...\n" +msgstr "Initialisiere Video...\n" + +#: src/drivers/video.cpp:454 +msgid "Could not load OpenGL library, disabling OpenGL usage!" +msgstr "Konnte OpenGL Bibliothek nicht laden, deaktiviere OpenGL-Verwendung!" + +#: src/drivers/video.cpp:481 +msgid "Eep! Effective X scale setting is way too high. Correcting." +msgstr "Oi! Effektive X-Skalierung ist viel zu hoch! Korrigiere..." + +#: src/drivers/video.cpp:487 +msgid "Eep! Effective Y scale setting is way too high. Correcting." +msgstr "Oi! Effektive Y-Skalierung ist viel zu hoch! Korrigiere..." + +#: src/drivers/video.cpp:526 +#, c-format +msgid "Video Driver: %s\n" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "OpenGL" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Overlay" +msgstr "" + +#: src/drivers/video.cpp:526 +msgid "Software SDL" +msgstr "" + +#: src/drivers/video.cpp:528 +#, c-format +msgid "Video Mode: %d x %d x %d bpp\n" +msgstr "Video-Modus: %d x %d x %d bpp\n" + +#: src/drivers/video.cpp:531 +#, c-format +msgid "" +"Sorry, %dbpp modes are not supported by Mednafen. Supported bit depths are " +"16bpp, 24bpp, and 32bpp.\n" +msgstr "" +"Sorry, %dbpp Modi werden von Mednafen nicht unterstützt. Unterstützte " +"Farbtiefen sind 16bpp, 24bpp und 32bpp.\n" + +#: src/drivers/video.cpp:542 +#, c-format +msgid "Pixel shader: %s\n" +msgstr "Pixel-Shader: %s\n" + +#: src/drivers/video.cpp:546 +#, c-format +msgid "Fullscreen: %s\n" +msgstr "Vollbild: %s\n" + +#: src/drivers/video.cpp:546 +msgid "Yes" +msgstr "Ja" + +#: src/drivers/video.cpp:546 +msgid "No" +msgstr "Nein" + +#: src/drivers/video.cpp:547 +#, c-format +msgid "Special Scaler: %s\n" +msgstr "Spezial-Filter: %s\n" + +#: src/drivers/video.cpp:550 +msgid "Scanlines: Off\n" +msgstr "Scanlines: Aus\n" + +#: src/drivers/video.cpp:552 +#, c-format +msgid "Scanlines: %d%% opacity\n" +msgstr "" + +#: src/drivers/video.cpp:554 +#, c-format +msgid "Destination Rectangle: X=%d, Y=%d, W=%d, H=%d\n" +msgstr "Ziel-Rechteck: X=%d, Y=%d, B=%d, H=%d\n" + +#: src/drivers/video.cpp:559 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. This is ok if " +"you really do want the clipping...\n" +msgstr "" +"Warnung: Ziel-Rechteck überschreitet Bildschirmgröße. Das Bild wird " +"beschnitten dargestellt.\n" + +#: src/drivers/video.cpp:561 +msgid "" +"Warning: Destination rectangle exceeds screen dimensions. The rectangle " +"will be adjusted to fit within the screen area.\n" +msgstr "" +"Warnung: Ziel-Rechteck überschreitet Bildschirmgröße. Das Rechteck wird auf " +"die Bildschirmgröße angepasst.\n" + +#: src/drivers/opengl.cpp:320 +msgid "OpenGL dummy black texture data" +msgstr "OpenGL schwarze Dummy-Textur-Daten" + +#: src/drivers/opengl.cpp:550 +#, c-format +msgid "Error getting proc address for: %s\n" +msgstr "Fehler beim Holen der proc-Adresse für: %s\n" + +#: src/drivers/opengl.cpp:608 +#, c-format +msgid "OpenGL Implementation: %s %s %s\n" +msgstr "OpenGL Implementation: %s %s %s\n" + +#: src/drivers/opengl.cpp:612 +msgid "Checking extensions:\n" +msgstr "Prüfe Erweiterungen:\n" + +#: src/drivers/opengl.cpp:619 +msgid "GL_ARB_texture_non_power_of_two found.\n" +msgstr "\"GL_ARB_texture_non_power_of_two\" gefunden.\n" + +#: src/drivers/opengl.cpp:645 +#, c-format +msgid "Invalid pixel shader type: %s\n" +msgstr "Ungültiger Pixel-Shader-Typ: %s\n" + +#: src/drivers/opengl.cpp:683 +msgid "Using non-power-of-2 sized textures.\n" +msgstr "Verwende Texturen mit nicht-2er-Potenz-Abmessungen.\n" + +#: src/drivers/opengl.cpp:685 +msgid "Using power-of-2 sized textures.\n" +msgstr "Verwende Texturen von 2er-Potenz-Abmessungen.\n" + +#: src/drivers/opengl.cpp:783 +msgid "Checking maximum texture size...\n" +msgstr "Prüfe maximale Texturgröße...\n" + +#: src/drivers/opengl.cpp:801 +#, c-format +msgid "Apparently it is at least: %d x %d\n" +msgstr "Scheinbar ist sie mindestens: %d x %d\n" + +#: src/drivers/opengl.cpp:805 +msgid "" +"Warning: Maximum texture size is reported as being less than 256, but we " +"can't handle that.\n" +msgstr "" +"Achtung: Maximale Texturgröße wird als weniger als 256 angegeben, aber wir " +"können damit nichts anfangen.\n" + +#: src/drivers/opengl.cpp:829 +msgid "Using GL_RGBA, GL_UNSIGNED_BYTE for texture source data.\n" +msgstr "" + +#: src/drivers/opengl.cpp:839 +msgid "Using GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV for texture source data.\n" +msgstr "" + +#: src/drivers/input.cpp:530 +msgid "Cannot change input device during netplay." +msgstr "Kann Eingabegerät während Netplay nicht ändern." + +#: src/drivers/input.cpp:534 +msgid "Cannot change input device while state rewinding is active." +msgstr "Eingabegerät kann nicht " + +#: src/drivers/input.cpp:553 +#, c-format +msgid "%s selected on port %d" +msgstr "%s ausgewählt auf Port %d" + +#: src/drivers/input.cpp:640 +msgid "Save state" +msgstr "Stand speichern" + +#: src/drivers/input.cpp:641 +msgid "Load state" +msgstr "Stand laden" + +#: src/drivers/input.cpp:642 +msgid "Save movie" +msgstr "Film speichern" + +#: src/drivers/input.cpp:643 +msgid "Load movie" +msgstr "Film laden" + +#: src/drivers/input.cpp:644 +msgid "Toggle state rewind functionality" +msgstr "Stand-Zurückspulen Funktionalität aktivieren/deaktivieren" + +#: src/drivers/input.cpp:646 +msgid "Save state 0 select" +msgstr "Speicherstand 0 auswählen" + +#: src/drivers/input.cpp:647 +msgid "Save state 1 select" +msgstr "Speicherstand 1 auswählen" + +#: src/drivers/input.cpp:648 +msgid "Save state 2 select" +msgstr "Speicherstand 2 auswählen" + +#: src/drivers/input.cpp:649 +msgid "Save state 3 select" +msgstr "Speicherstand 3 auswählen" + +#: src/drivers/input.cpp:650 +msgid "Save state 4 select" +msgstr "Speicherstand 5 auswählen" + +#: src/drivers/input.cpp:651 +msgid "Save state 5 select" +msgstr "Speicherstand 5 auswählen" + +#: src/drivers/input.cpp:652 +msgid "Save state 6 select" +msgstr "Speicherstand 6 auswählen" + +#: src/drivers/input.cpp:653 +msgid "Save state 7 select" +msgstr "Speicherstand 7 auswählen" + +#: src/drivers/input.cpp:654 +msgid "Save state 8 select" +msgstr "Speicherstand 8 auswählen" + +#: src/drivers/input.cpp:655 +msgid "Save state 9 select" +msgstr "Speicherstand 9 auswählen" + +#: src/drivers/input.cpp:657 +msgid "Movie 0 select" +msgstr "Film 0 auswählen" + +#: src/drivers/input.cpp:658 +msgid "Movie 1 select" +msgstr "Film 1 auswählen" + +#: src/drivers/input.cpp:659 +msgid "Movie 2 select" +msgstr "Film 2 auswählen" + +#: src/drivers/input.cpp:660 +msgid "Movie 3 select" +msgstr "Film 3 auswählen" + +#: src/drivers/input.cpp:661 +msgid "Movie 4 select" +msgstr "Film 4 auswählen" + +#: src/drivers/input.cpp:662 +msgid "Movie 5 select" +msgstr "Film 5 auswählen" + +#: src/drivers/input.cpp:663 +msgid "Movie 6 select" +msgstr "Film 6 auswählen" + +#: src/drivers/input.cpp:664 +msgid "Movie 7 select" +msgstr "Film 7 auswählen" + +#: src/drivers/input.cpp:665 +msgid "Movie 8 select" +msgstr "Film 8 auswählen" + +#: src/drivers/input.cpp:666 +msgid "Movie 9 select" +msgstr "Film 9 auswählen" + +#: src/drivers/input.cpp:668 +msgid "Toggle graphics layer 1" +msgstr "Grafik-Ebene 1 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:669 +msgid "Toggle graphics layer 2" +msgstr "Grafik-Ebene 2 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:670 +msgid "Toggle graphics layer 3" +msgstr "Grafik-Ebene 3 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:671 +msgid "Toggle graphics layer 4" +msgstr "Grafik-Ebene 4 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:672 +msgid "Toggle graphics layer 5" +msgstr "Grafik-Ebene 5 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:673 +msgid "Toggle graphics layer 6" +msgstr "Grafik-Ebene 6 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:674 +msgid "Toggle graphics layer 7" +msgstr "Grafik-Ebene 7 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:675 +msgid "Toggle graphics layer 8" +msgstr "Grafik-Ebene 8 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:676 +msgid "Toggle graphics layer 9" +msgstr "Grafik-Ebene 9 aktivieren/deaktivieren" + +#: src/drivers/input.cpp:678 +msgid "Take screen snapshot" +msgstr "Bildschirmfoto speichern" + +#: src/drivers/input.cpp:679 +msgid "Toggle fullscreen mode" +msgstr "Vollbild-Modus aktivieren/deaktivieren" + +#: src/drivers/input.cpp:680 +msgid "Fast-forward" +msgstr "Vorspulen" + +#: src/drivers/input.cpp:681 +msgid "Slow-forward" +msgstr "" + +#: src/drivers/input.cpp:683 +msgid "Insert coin" +msgstr "Münze einwerfen" + +#: src/drivers/input.cpp:684 +msgid "Toggle DIP switch view" +msgstr "DIP-Schalter Ansicht aktivieren/deaktivieren" + +#: src/drivers/input.cpp:685 +msgid "Select disk/disc" +msgstr "Diskette/CD wählen" + +#: src/drivers/input.cpp:686 +msgid "Insert/Eject disk/disc" +msgstr "Diskette/CD einlegen/auswerfen" + +#: src/drivers/input.cpp:687 +msgid "Activate barcode(for Famicom)" +msgstr "Barcode (für Famicom) aktivieren" + +#: src/drivers/input.cpp:688 +msgid "Grab input" +msgstr "Eingabe festhalten" + +#: src/drivers/input.cpp:689 +msgid "Grab input and disable commands" +msgstr "Eingabe festhalten und Kommandos deaktivieren" + +#: src/drivers/input.cpp:690 +msgid "Configure buttons on virtual port 1" +msgstr "Knöpfe auf virtuellem Port 1 konfigurieren" + +#: src/drivers/input.cpp:691 +msgid "Configure buttons on virtual port 2" +msgstr "Knöpfe auf virtuellem Port 2 konfigurieren" + +#: src/drivers/input.cpp:692 +msgid "Configure buttons on virtual port 3" +msgstr "Knöpfe auf virtuellem Port 3 konfigurieren" + +#: src/drivers/input.cpp:693 +msgid "Configure buttons on virtual port 4" +msgstr "Knöpfe auf virtuellem Port 4 konfigurieren" + +#: src/drivers/input.cpp:694 +msgid "Configure buttons on virtual port 5" +msgstr "Knöpfe auf virtuellem Port 5 konfigurieren" + +#: src/drivers/input.cpp:695 +msgid "Configure buttons on virtual port 6" +msgstr "" + +#: src/drivers/input.cpp:696 +msgid "Configure buttons on virtual port 7" +msgstr "" + +#: src/drivers/input.cpp:697 +msgid "Configure buttons on virtual port 8" +msgstr "" + +#: src/drivers/input.cpp:698 +msgid "Configure command key" +msgstr "Befehlstaste konfigurieren" + +#: src/drivers/input.cpp:700 +msgid "Reset" +msgstr "Reset" + +#: src/drivers/input.cpp:701 +msgid "Power toggle" +msgstr "Ein-/Aus-Schalter" + +#: src/drivers/input.cpp:704 +msgid "Rotate screen" +msgstr "Rotiere Bildschirm" + +#: src/drivers/input.cpp:706 +msgid "Toggle netplay console" +msgstr "Netplay Konsole konfigurieren" + +#: src/drivers/input.cpp:707 +msgid "Advance frame" +msgstr "Frame vorgehen" + +#: src/drivers/input.cpp:708 +msgid "Return to normal mode after advancing frames" +msgstr "Zu normalem Modus zurück kehren nach Frame-Vorgehen" + +#: src/drivers/input.cpp:709 +msgid "Toggle cheat console" +msgstr "Cheat-Konsole konfigurieren" + +#: src/drivers/input.cpp:710 +msgid "Enable/Disable cheats" +msgstr "Cheats konfigurieren" + +#: src/drivers/input.cpp:711 +msgid "Toggle frames-per-second display" +msgstr "Frames-pro-Sekunde Anzeige konfigurieren" + +#: src/drivers/input.cpp:712 +msgid "Toggle debugger" +msgstr "Debugger konfigurieren" + +#: src/drivers/input.cpp:713 +msgid "Decrease selected save state slot by 1" +msgstr "Ausgewählten Speicherstand-Slot um 1 verringern" + +#: src/drivers/input.cpp:714 +msgid "Increase selected save state slot by 1" +msgstr "Ausgewählten Speicherstand-Slot um 1 erhöhen" + +#: src/drivers/input.cpp:715 +msgid "Toggle help screen" +msgstr "Hilfe-Bildschirm aktivieren/deaktivieren" + +#: src/drivers/input.cpp:716 +msgid "Select virtual device on virtual input port 1" +msgstr "Virtuelles Gerät auf virtuellem Eingabe-Port 1 wählen" + +#: src/drivers/input.cpp:717 +msgid "Select virtual device on virtual input port 2" +msgstr "Virtuelles Gerät auf virtuellem Eingabe-Port 2 wählen" + +#: src/drivers/input.cpp:718 +msgid "Select virtual device on virtual input port 3" +msgstr "Virtuelles Gerät auf virtuellem Eingabe-Port 3 wählen" + +#: src/drivers/input.cpp:719 +msgid "Select virtual device on virtual input port 4" +msgstr "Virtuelles Gerät auf virtuellem Eingabe-Port 4 wählen" + +#: src/drivers/input.cpp:720 +msgid "Select virtual device on virtual input port 5" +msgstr "Virtuelles Gerät auf virtuellem Eingabe-Port 5 wählen" + +#: src/drivers/input.cpp:721 +msgid "Select virtual device on virtual input port 6" +msgstr "" + +#: src/drivers/input.cpp:722 +msgid "Select virtual device on virtual input port 7" +msgstr "" + +#: src/drivers/input.cpp:723 +msgid "Select virtual device on virtual input port 8" +msgstr "" + +#: src/drivers/input.cpp:950 +msgid "Configuration interrupted." +msgstr "Konfiguration unterbrochen." + +#: src/drivers/input.cpp:968 src/drivers/input.cpp:1613 +msgid "Configuration finished." +msgstr "Konfiguration abgeschlossen." + +#: src/drivers/input.cpp:979 +msgid "Press command key to remap now..." +msgstr "" + +#: src/drivers/input.cpp:995 +msgid "Input grabbing enabled." +msgstr "Eingabe-Auffangen aktiviert." + +#: src/drivers/input.cpp:997 +msgid "Input grabbing disabled." +msgstr "Eingabe-Auffangen deaktiviert." + +#: src/drivers/input.cpp:1013 +msgid "Command processing disabled." +msgstr "Befehls-Bearbeitung deaktiviert." + +#: src/drivers/input.cpp:1015 +msgid "Command processing enabled." +msgstr "Befehls-Bearbeitung aktiviert." + +#: src/drivers/input.cpp:1040 +msgid "Application of cheats enabled." +msgstr "Anwendung von Cheats aktiviert." + +#: src/drivers/input.cpp:1042 +msgid "Application of cheats disabled." +msgstr "Anwendung von Cheats deaktiviert." + +#: src/drivers/input.cpp:1073 +#, c-format +msgid "No buttons to configure for input port %d!" +msgstr "Keine Knöpfe zu konfigurieren für Port %d!" + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality enabled." +msgstr "Stand-Zurückspulen-Funktion aktiviert." + +#: src/drivers/input.cpp:1115 +msgid "State rewinding functionality disabled." +msgstr "Stand-Zurückspulen-Funktion deaktiviert." + +#: src/drivers/input.cpp:1285 +msgid "Barcode Entered" +msgstr "Barcode eingegeben" + +#: src/drivers/input.cpp:1287 +msgid "Enter Barcode" +msgstr "Barcode eingeben" + +#: src/drivers/input.cpp:1293 +#, c-format +msgid "Barcode: %s" +msgstr "Barcode: %s" + +#: src/drivers/main.cpp:61 +msgid "Full-screen horizontal resolution." +msgstr "Vollbild horizontale Auflösung." + +#: src/drivers/main.cpp:62 +msgid "Full-screen vertical resolution." +msgstr "Vollbild vertikale Auflösung." + +#: src/drivers/main.cpp:63 +msgid "" +"A value of \"0\" will cause the desktop horizontal resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:64 +msgid "A value of \"0\" will cause the desktop vertical resolution to be used." +msgstr "" + +#: src/drivers/main.cpp:66 +msgid "Scaling factor for the X axis." +msgstr "" + +#: src/drivers/main.cpp:67 +msgid "Scaling factor for the Y axis." +msgstr "" + +#: src/drivers/main.cpp:69 +msgid "Scaling factor for the X axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:70 +msgid "Scaling factor for the Y axis in fullscreen mode." +msgstr "" + +#: src/drivers/main.cpp:71 +msgid "" +"For this settings to have any effect, the \".stretch\" setting must " +"be set to \"0\"." +msgstr "" + +#: src/drivers/main.cpp:73 +msgid "Enable scanlines with specified opacity." +msgstr "" + +#: src/drivers/main.cpp:74 +msgid "" +"Opacity is specified in %; IE a value of \"100\" will give entirely black " +"scanlines." +msgstr "" + +#: src/drivers/main.cpp:76 +msgid "Stretch to fill screen." +msgstr "Auf ganzen Bildschirm strecken." + +#: src/drivers/main.cpp:77 +msgid "Enable (bi)linear interpolation." +msgstr "" + +#: src/drivers/main.cpp:80 +msgid "Enable specified special video scaler." +msgstr "Angegebenen Spezial-Video-Filter aktivieren." + +#: src/drivers/main.cpp:81 +msgid "" +"The destination rectangle is NOT altered by this setting, so if you have " +"xscale and yscale set to \"2\", and try to use a 3x scaling filter like " +"hq3x, the image is not going to look that great. The nearest-neighbor " +"scalers are intended for use with bilinear interpolation enabled, at high " +"resolutions(such as 1280x1024; nn2x(or nny2x) + bilinear interpolation + " +"fullscreen stretching at this resolution looks quite nice)." +msgstr "" + +#: src/drivers/main.cpp:83 +msgid "Enable specified OpenGL pixel shader." +msgstr "Angegebenen OpenGL Pixel-Shader aktivieren." + +#: src/drivers/main.cpp:84 +msgid "" +"Obviously, this will only work with the OpenGL \"video.driver\" setting, and " +"only on cards and OpenGL implementations that support pixel shaders, " +"otherwise you will get a black screen, or Mednafen may display an error " +"message when starting up. Bilinear interpolation is disabled with pixel " +"shaders, and any interpolation, if present, will be noted in the description " +"of each pixel shader." +msgstr "" + +#: src/drivers/main.cpp:93 +msgid "This output method is preferred, as all features are available with it." +msgstr "" + +#: src/drivers/main.cpp:94 +msgid "" +"Slower with lower-quality scaling than OpenGL, but if you don't have " +"hardware-accelerated OpenGL rendering, it will be faster than software " +"OpenGL rendering. Bilinear interpolation not available. Pixel shaders do not " +"work with this output method, of course." +msgstr "" + +#: src/drivers/main.cpp:95 +msgid "" +"As fast as OpenGL, perhaps faster in some situations, *if* it's hardware-" +"accelerated. Scanline effects are not available. hq2x, hq3x, hq4x are not " +"available. The OSD may be missing or glitchy. Bilinear interpolation can't " +"be turned off. Harsh chroma subsampling blurring in some picture types. If " +"you use this output method, it is strongly recommended to use a special " +"scaler with it, such as nn2x." +msgstr "" + +#: src/drivers/main.cpp:102 +msgid "Default sound driver." +msgstr "" + +#: src/drivers/main.cpp:104 +msgid "A recommended driver, and the default for Linux(if available)." +msgstr "" + +#: src/drivers/main.cpp:105 +msgid "" +"A recommended driver, and the default for non-Linux UN*X/POSIX/BSD systems, " +"or anywhere ALSA is unavailable. If the ALSA driver gives you problems, you " +"can try using this one instead.\n" +"\n" +"If you are using OSSv4 or newer, you should edit \"/usr/lib/oss/conf/osscore." +"conf\", uncomment the max_intrate= line, and change the value from 100" +"(default) to 1000(or higher if you know what you're doing), and restart OSS. " +"Otherwise, performance will be poor, and the sound buffer size in Mednafen " +"will be orders of magnitude larger than specified.\n" +"\n" +"If the sound buffer size is still excessively larger than what is specified " +"via the \"sound.buffer_time\" setting, you can try setting \"sound." +"period_time\" to 2666, and as a last resort, 5333, to work around a design " +"flaw/limitation/choice in the OSS API and OSS implementation." +msgstr "" + +#: src/drivers/main.cpp:106 +msgid "A recommended driver, and the default for Microsoft Windows." +msgstr "" + +#: src/drivers/main.cpp:107 +msgid "" +"This driver is not recommended, but it serves as a backup driver if the " +"others aren't available. Its performance is generally sub-par, requiring " +"higher latency or faster CPUs/SMP for glitch-free playback, except where the " +"OS provides a sound callback API itself, such as with Mac OS X and BeOS." +msgstr "" + +#: src/drivers/main.cpp:108 +msgid "" +"Somewhat experimental driver, unusably buggy until Mednafen 0.8.C. The " +"\"sound.buffer_time\" setting controls the size of the local sound buffer, " +"not the server's sound buffer, and the latency reported during startup is " +"for the local sound buffer only. Please note that video card drivers(in the " +"kernel or X), and hardware-accelerated OpenGL, may interfere with jackd's " +"ability to effectively run with realtime response." +msgstr "" + +#: src/drivers/main.cpp:139 +msgid "" +"Will automatically interpolate on each axis if the corresponding effective " +"scaling factor is not an integer." +msgstr "" + +#: src/drivers/main.cpp:140 +msgid "" +"Same as \"autoip\", but when interpolation is done, it is done in a manner " +"that will reduce blurriness if possible." +msgstr "" + +#: src/drivers/main.cpp:157 +msgid "Server hostname." +msgstr "" + +#: src/drivers/main.cpp:158 +msgid "Server port." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Server password." +msgstr "" + +#: src/drivers/main.cpp:159 +msgid "Password to connect to the netplay server." +msgstr "Passwort für die Verbindung mit dem Netplay Server." + +#: src/drivers/main.cpp:160 +msgid "Local player count." +msgstr "" + +#: src/drivers/main.cpp:160 +msgid "Number of local players for network play." +msgstr "Anzahl lokaler Spieler für Netplay." + +#: src/drivers/main.cpp:161 +msgid "Nickname." +msgstr "" + +#: src/drivers/main.cpp:161 +msgid "Nickname to use for network play chat." +msgstr "Spitzname für Netplay-Chat." + +#: src/drivers/main.cpp:162 +msgid "Key to hash with the MD5 hash of the game." +msgstr "Schlüssel für Hash mit dem MD5 Hash des Spiels." + +#: src/drivers/main.cpp:163 +msgid "Merge input to this player # on the server." +msgstr "Eingabe mit dieser Spieler-Nummer auf dem Server verbinden." + +#: src/drivers/main.cpp:164 +msgid "Use small(tiny!) font for netplay chat console." +msgstr "Kleine (winzige!) Schrift für Netplay Chat Konsole verwenden." + +#: src/drivers/main.cpp:166 +msgid "Enable fullscreen mode." +msgstr "Vollbild-Modus aktivieren." + +#: src/drivers/main.cpp:167 +msgid "Select video driver, \"opengl\" or \"sdl\"." +msgstr "Video-Treiber wählen, \"opengl\" oder \"sdl\"." + +#: src/drivers/main.cpp:168 +msgid "Attempt to synchronize OpenGL page flips to vertical retrace period." +msgstr "" +"Versuchen, OpenGL Page Flips mit vertikalem Rücksprung zu synchronisieren " +"(VSync)." + +#: src/drivers/main.cpp:169 +msgid "" +"Note: Additionally, if the environment variable \"__GL_SYNC_TO_VBLANK\" does " +"not exist, then it will be created and set to the value specified for this " +"setting. This has the effect of forcibly enabling or disabling vblank " +"synchronization when running under Linux with NVidia's drivers." +msgstr "" + +#: src/drivers/main.cpp:172 +msgid "Enable frameskip during emulation rendering." +msgstr "" + +#: src/drivers/main.cpp:173 +msgid "Disable for rendering code performance testing." +msgstr "" + +#: src/drivers/main.cpp:175 +msgid "Fast-forwarding speed multiplier." +msgstr "Vorspul-Geschwindigkeits-Multiplikator." + +#: src/drivers/main.cpp:176 +msgid "Treat the fast-forward button as a toggle." +msgstr "Den Vorspul-Knopf als Umschalter behandeln." + +#: src/drivers/main.cpp:177 +msgid "Silence sound output when fast-forwarding." +msgstr "Sound-Ausgabe beim Vorspulen deaktivieren." + +#: src/drivers/main.cpp:179 +msgid "SLOW-forwarding speed multiplier." +msgstr "" + +#: src/drivers/main.cpp:180 +msgid "Treat the SLOW-forward button as a toggle." +msgstr "" + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency." +msgstr "Auto-Feuer Frequenz." + +#: src/drivers/main.cpp:182 +msgid "Auto-fire frequency = GameSystemFrameRateHz / (value + 1)" +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Analog axis press threshold." +msgstr "" + +#: src/drivers/main.cpp:183 +msgid "Threshold for detecting a \"button\" press on analog axis, in percent." +msgstr "" +"Schwellwert, ab dem ein \"Knopfdruck\" auf einer analogen Achse erkannt " +"wird, in Prozent." + +#: src/drivers/main.cpp:184 +msgid "Dangerous key action delay." +msgstr "" + +#: src/drivers/main.cpp:184 +msgid "" +"The length of time, in milliseconds, that a button/key corresponding to a " +"\"dangerous\" command like power, reset, exit, etc. must be pressed before " +"the command is executed." +msgstr "" +"Die Zeitdauer in Millisekunden, die ein/e Knopf/Taste zu einem \"gefährlichen" +"\" Befehl wie Power, Reset, Beenden, etc. gedrückt werden muss, bevor der " +"Befehl ausgeführt wird." + +#: src/drivers/main.cpp:185 +msgid "Disable speed throttling when sound is disabled." +msgstr "Geschwindigkeits-Drosslung deaktivieren wenn der Ton deaktiviert ist." + +#: src/drivers/main.cpp:186 +msgid "Automatic load/save state on game load/save." +msgstr "" + +#: src/drivers/main.cpp:186 +msgid "" +"Automatically save and load save states when a game is closed or loaded, " +"respectively." +msgstr "" +"Stand automatisch speichern, wenn ein Spiel beendet wird und laden, wenn das " +"Spiel wieder gestartet wird." + +#: src/drivers/main.cpp:187 +msgid "Select sound driver." +msgstr "Sound-Treiber wählen." + +#: src/drivers/main.cpp:187 +msgid "" +"The following choices are possible, sorted by preference, high to low, when " +"\"default\" driver is used, but dependent on being compiled in." +msgstr "" + +#: src/drivers/main.cpp:188 +msgid "Select sound output device." +msgstr "Sound-Ausgabe-Gerät wählen." + +#: src/drivers/main.cpp:189 +msgid "Sound volume level, in percent." +msgstr "Sound-Lautstärke in Prozent." + +#: src/drivers/main.cpp:190 +msgid "Enable sound output." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "Desired period size in microseconds." +msgstr "" + +#: src/drivers/main.cpp:191 +msgid "" +"Currently only affects OSS and ALSA output. A value of 0 defers to the " +"default in the driver code in SexyAL.\n" +"\n" +"Note: This is not the \"sound buffer size\" setting, that would be \"sound." +"buffer_time\"." +msgstr "" + +#: src/drivers/main.cpp:192 +msgid "Desired total buffer size in milliseconds." +msgstr "" + +#: src/drivers/main.cpp:199 +msgid "Specifies the sound playback rate, in sound frames per second(\"Hz\")." +msgstr "" + +#: src/drivers/main.cpp:202 +msgid "Automatically go into the debugger's step mode after a game is loaded." +msgstr "" + +#: src/drivers/main.cpp:205 +msgid "" +"The length of time, in milliseconds, to display the save state or the movie " +"selector after selecting a state or movie." +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full" +msgstr "" + +#: src/drivers/main.cpp:248 +msgid "Full-screen stretch, disregarding aspect ratio." +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "Aspect Preserve" +msgstr "" + +#: src/drivers/main.cpp:251 +msgid "" +"Full-screen stretch as far as the aspect ratio(in this sense, the equivalent " +"xscalefs == yscalefs) can be maintained." +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "Aspect Preserve + Integer Scale" +msgstr "" + +#: src/drivers/main.cpp:253 +msgid "" +"Full-screen stretch, same as \"aspect\" except that the equivalent xscalefs " +"and yscalefs are rounded down to the nearest integer." +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "Aspect Preserve + Integer Multiple-of-2 Scale" +msgstr "" + +#: src/drivers/main.cpp:254 +msgid "" +"Full-screen stretch, same as \"aspect_int\", but rounds down to the nearest " +"multiple of 2." +msgstr "" + +#: src/drivers/main.cpp:263 +msgid "Bilinear" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Linear (X)" +msgstr "" + +#: src/drivers/main.cpp:265 +msgid "Interpolation only on the X axis." +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Linear (Y)" +msgstr "" + +#: src/drivers/main.cpp:266 +msgid "Interpolation only on the Y axis." +msgstr "" + +#: src/drivers/main.cpp:283 +msgid "Disassembly font size." +msgstr "" + +#: src/drivers/main.cpp:286 +msgid "Character encoding for the debugger's memory editor." +msgstr "" + +#: src/drivers/main.cpp:480 +msgid "How DARE you interrupt me!\n" +msgstr "Du WAGST es, mich zu unterbrechen?!\n" + +#: src/drivers/main.cpp:484 +msgid "MUST TERMINATE ALL HUMANS\n" +msgstr "MUSS ALLE MENSCHEN VERNICHTEN\n" + +#: src/drivers/main.cpp:488 +msgid "Reach out and hang-up on someone.\n" +msgstr "-KLICK- Aufgelegt.\n" + +#: src/drivers/main.cpp:492 +msgid "" +"Iyeeeeeeeee!!! A segmentation fault has occurred. Have a fluffy day.\n" +msgstr "" +"AAARRRRRRRGHHH!!! Ein Segmentierungsfehler ist aufgetreten. Einen " +"wunderschönen Tag noch.\n" + +#: src/drivers/main.cpp:496 +msgid "The pipe has broken! Better watch out for floods...\n" +msgstr "Die Pipeline wurde unterbrochen! Vorsicht vor Ölpfützen...\n" + +#: src/drivers/main.cpp:501 +msgid "I told you to be nice to the driver.\n" +msgstr "Ich sagte doch sei nett zu dem Treiber.\n" + +#: src/drivers/main.cpp:505 +msgid "Those darn floating points. Ne'er know when they'll bite!\n" +msgstr "Diese verdammten Fließkommata. Sie sind so verdammt schlüpfrig.\n" + +#: src/drivers/main.cpp:509 +msgid "Don't throw your clock at the meowing cats!\n" +msgstr "Schmeiß' deinen Wecker nicht auf die miauenden Katzen!\n" + +#: src/drivers/main.cpp:513 +msgid "Abort, Retry, Ignore, Fail?\n" +msgstr "Abbrechen, Wiederholen, Ignorieren, Versagen?\n" + +#: src/drivers/main.cpp:517 src/drivers/main.cpp:521 +msgid "Killing your processes is not nice.\n" +msgstr "Deine Prozesse zu töten ist nicht nett.\n" + +#: src/drivers/main.cpp:531 +msgid "" +"\n" +"Signal has been caught and dealt with: " +msgstr "" + +#: src/drivers/main.cpp:656 +msgid "Show help!" +msgstr "Hilfe zeigen!" + +#: src/drivers/main.cpp:657 +msgid "Enable remote mode(EXPERIMENTAL AND INCOMPLETE)." +msgstr "" + +#: src/drivers/main.cpp:659 +msgid "Load and boot a CD for the specified system." +msgstr "Eine CD für das angegebene System laden und booten." + +#: src/drivers/main.cpp:661 +msgid "Force usage of specified emulation module." +msgstr "" + +#: src/drivers/main.cpp:663 +msgid "Record sound output to the specified filename in the MS WAV format." +msgstr "" +"Sound-Ausgabe als Wave-Datei im MS WAV Format mit dem angegebenen Dateinamen " +"aufnehmen." + +#: src/drivers/main.cpp:664 +msgid "" +"Record video and audio output to the specified filename in the QuickTime " +"format." +msgstr "" + +#: src/drivers/main.cpp:666 +msgid "Dump settings definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:667 +msgid "Dump modules definition data to specified file." +msgstr "" + +#: src/drivers/main.cpp:671 +msgid "Connect to the remote server and start network play." +msgstr "Mit entferntem Server verbinden und Netplay starten." + +#: src/drivers/main.cpp:676 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]\n" +msgstr "Verwendung: %s [OPTION]... [Datei]\n" + +#: src/drivers/main.cpp:679 +#, c-format +msgid "" +"No command-line arguments specified.\n" +"\n" +msgstr "" +"Keine Kommandozeilen-Argumente angegeben.\n" +"\n" + +#: src/drivers/main.cpp:681 +#, c-format +msgid "" +"\tPlease refer to the documentation for option parameters and usage.\n" +"\n" +msgstr "" +"\tFür Options-Parameter und Verwendung bitte in der Dokumentation " +"nachsehen.\n" +"\n" + +#: src/drivers/main.cpp:694 +#, c-format +msgid "" +"Each setting(listed in the documentation) can also be passed as an argument " +"by prefixing the name with a hyphen,\n" +"and specifying the value to change the setting to as the next argument.\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:695 +#, c-format +msgid "" +"For example:\n" +"\t%s -pce.xres 1680 -pce.yres 1050 -pce.stretch aspect -pce.pixshader " +"ipsharper \"Hyper Bonk Soldier.pce\"\n" +"\n" +msgstr "" + +#: src/drivers/main.cpp:696 +#, c-format +msgid "" +"Settings specified in this manner are automatically saved to the " +"configuration file, hence they\n" +"do not need to be passed to future invocations of the Mednafen executable.\n" +msgstr "" + +#: src/drivers/main.cpp:712 +msgid "No game filename specified!" +msgstr "Kein Spiel-Dateiname angegeben!" + +#: src/drivers/main.cpp:1388 +#, c-format +msgid "Compiled with gcc %s\n" +msgstr "" + +#: src/drivers/main.cpp:1396 +#, c-format +msgid "Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n" +msgstr "" + +#: src/drivers/main.cpp:1406 +#, c-format +msgid "Running with %s\n" +msgstr "" + +#: src/drivers/main.cpp:1413 +#, c-format +msgid "Compiled against zlib %s, running with zlib %s\n" +msgstr "" + +#: src/drivers/main.cpp:1494 +#, c-format +msgid "Starting Mednafen %s\n" +msgstr "Starte Mednafen %s\n" + +#: src/drivers/main.cpp:1497 +msgid "Build information:\n" +msgstr "" + +#: src/drivers/main.cpp:1505 +#, c-format +msgid "Base directory: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1529 +#, c-format +msgid "Could not create mutex: %s\n" +msgstr "" + +#: src/drivers/main.cpp:1567 +#, c-format +msgid "Error creating directories: %s\n" +msgstr "" + +#: src/drivers/netplay.cpp:245 +msgid "*** Error intializing SDL_net!" +msgstr "*** Fehler beim Initialisieren von SDL_net!" + +#: src/drivers/netplay.cpp:256 +#, c-format +msgid "*** Error resolving host \"%s\"!" +msgstr "*** Fehler beim auflösen von Host \"%s\"!" + +#: src/drivers/netplay.cpp:263 +#, c-format +msgid "*** Error connecting to remote host \"%s\" on port %u!" +msgstr "*** Fehler beim Verbinden mit entferntem Host \"%s\" auf Port %u!" + +#: src/drivers/netplay.cpp:267 +msgid "*** Sending initialization data to server." +msgstr "*** Sende Initialisierungs-Daten an Server." + +#: src/drivers/netplay.cpp:275 +msgid "*** Connection established." +msgstr "*** Verbindung hergestellt." + +#: src/lynx/system.cpp:382 +msgid "Virtually rotate D-pad along with screen." +msgstr "D-pad virtuell mit Bildschirm rotieren." + +#: src/lynx/system.cpp:383 +msgid "Enable sound output lowpass filter." +msgstr "Sound-Ausgabe-Lowpass-Filter aktivieren." + +#: src/lynx/system.cpp:433 +msgid "Atari Lynx ROM Image" +msgstr "" + +#: src/lynx/rom.cpp:67 +msgid "Lynx Boot ROM" +msgstr "" + +#: src/lynx/rom.cpp:74 +msgid "The Lynx Boot ROM Image is an incorrect size." +msgstr "" + +#: src/pce/mcgenjin.cpp:197 +msgid "MCGenjin ROM size is too small!" +msgstr "" + +#: src/pce/mcgenjin.cpp:200 +msgid "MC Genjin header magic missing!" +msgstr "" + +#: src/pce/mcgenjin.cpp:220 +#, c-format +msgid "Unsupported MCGENJIN device on CS%d: 0x%02x" +msgstr "" + +#: src/pce/mcgenjin.cpp:224 +#, c-format +msgid "CS%d: Unused\n" +msgstr "" + +#: src/pce/mcgenjin.cpp:230 +#, c-format +msgid "CS%d: %uKiB %sRAM\n" +msgstr "" + +#: src/pce/hes.cpp:85 +msgid "HES header is too small." +msgstr "" + +#: src/pce/hes.cpp:91 +msgid "HES header magic is invalid." +msgstr "" + +#: src/pce/hes.cpp:109 +msgid "HES Information:\n" +msgstr "" + +#: src/pce/hes.cpp:114 +#, c-format +msgid "Init address: 0x%04x\n" +msgstr "" + +#: src/pce/hes.cpp:115 +#, c-format +msgid "Starting song: %d\n" +msgstr "" + +#: src/pce/hes.cpp:132 +msgid "Chunk load:\n" +msgstr "" + +#: src/pce/hes.cpp:134 +#, c-format +msgid "File offset: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:135 +#, c-format +msgid "Load size: 0x%08x\n" +msgstr "" + +#: src/pce/hes.cpp:136 +#, c-format +msgid "Load target address: 0x%08x\n" +msgstr "" + +#: src/pce/huc.cpp:207 +msgid "ROM image is too large!" +msgstr "" + +#: src/pce/huc.cpp:233 +msgid "CD RAM" +msgstr "CD RAM" + +#: src/pce/huc.cpp:326 +msgid "System Card RAM" +msgstr "" + +#: src/pce/huc.cpp:372 +msgid "Populous RAM" +msgstr "Populous RAM" + +#: src/pce/pce.cpp:44 +msgid "HuC6280 as found in the original PC Engine." +msgstr "" + +#: src/pce/pce.cpp:45 +msgid "" +"HuC6280A as found in the SuperGrafx and CoreGrafx I. Provides proper " +"channel amplitude centering, but may cause clicking in a few games designed " +"with the original HuC6280's sound characteristics in mind." +msgstr "" + +#: src/pce/pce.cpp:46 +msgid "" +"Emulator-only pseudo-revision, designed to reduce clicking and audio " +"artifacts in games designed for either real revision." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "Match emulation mode." +msgstr "" + +#: src/pce/pce.cpp:47 +msgid "" +"Selects \"huc6280\" for non-SuperGrafx mode, and \"huc6280a\" for SuperGrafx" +"(full) mode." +msgstr "" + +#: src/pce/pce.cpp:507 +#, c-format +msgid "PSG Revision: %s\n" +msgstr "" + +#: src/pce/pce.cpp:707 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram_cd setting. This is " +"simulating a malfunction.\n" +msgstr "" + +#: src/pce/pce.cpp:731 +#, c-format +msgid "CD Layout: 0x%s\n" +msgstr "" + +#: src/pce/pce.cpp:1002 +msgid "Enable multitap(TurboTap) emulation." +msgstr "" + +#: src/pce/pce.cpp:1007 +msgid "Show horizontal overscan area." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "Disable BRAM(saved game memory) for CD games." +msgstr "" + +#: src/pce/pce.cpp:1012 +msgid "" +"It is intended for viewing CD games' error screens that may be different " +"from simple BRAM full and uninitialized BRAM error screens, though it can " +"cause the game to crash outright." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "Disable BRAM(saved game memory) for HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1013 +msgid "" +"It is intended for changing the behavior(passwords vs save games) of some " +"HuCard games." +msgstr "" + +#: src/pce/pce.cpp:1016 +msgid "" +"Enabling this option is not necessary to run unrecognized PCE ROM images in " +"SuperGrafx mode, and enabling it is discouraged; ROM images with a file " +"extension of \".sgx\" will automatically enable SuperGrafx emulation." +msgstr "" + +#: src/pce/pce.cpp:1019 +msgid "" +"Leaving this option enabled is recommended, unless you want to see special " +"warning screens on ACD games, or you prefer the non-enhanced modes of ACD-" +"enhanced SCD games. Additionally, you may want to disable it you you wish " +"to use state rewinding with a SCD ACD-enhanced game on a slow CPU, as the " +"extra 2MiB of RAM the Arcade Card offers is difficult to compress in real-" +"time." +msgstr "" + +#: src/pce/pce.cpp:1022 +msgid "" +"WARNING: Enabling this option may cause undesirable graphics glitching on " +"some games(such as \"Bloody Wolf\")." +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Path to the GE CD BIOS" +msgstr "" + +#: src/pce/pce.cpp:1025 +msgid "Games Express CD Card BIOS (Unlicensed)" +msgstr "" + +#: src/pce/pce.cpp:1027 +msgid "Enable lowpass filter with rolloff dependent on playback-frequency." +msgstr "" + +#: src/pce/pce.cpp:1028 +msgid "" +"This makes ADPCM voices sound less \"harsh\", however, the downside is that " +"it will cause many ADPCM sound effects to sound a bit muffled." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "Select PSG revision." +msgstr "" + +#: src/pce/pce.cpp:1030 +msgid "" +"WARNING: HES playback will always use the \"huc6280a\" revision if this " +"setting is set to \"match\", since HES playback is always done with " +"SuperGrafx emulation enabled." +msgstr "" + +#: src/pce/pce.cpp:1036 +msgid "" +"Size of emulated VRAM per VDC in 16-bit words. DO NOT CHANGE THIS UNLESS " +"YOU KNOW WTF YOU ARE DOING." +msgstr "" + +#: src/sms/cart.cpp:136 +#, c-format +msgid "Mapper: %s\n" +msgstr "Mapper: %s\n" + +#: src/sms/cart.cpp:137 +#, c-format +msgid "Territory: %s\n" +msgstr "Territorium: %s\n" + +#: src/sms/cart.cpp:137 src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Domestic" +msgstr "\"Domestic\"" + +#: src/sms/cart.cpp:137 +msgid "Export" +msgstr "\"Export\"" + +#: src/sms/system.cpp:383 +msgid "Domestic(Japanese)" +msgstr "" + +#: src/sms/system.cpp:384 +msgid "Export(World)" +msgstr "" + +#: src/sms/system.cpp:390 +msgid "System territory/region." +msgstr "" + +#: src/sms/system.cpp:391 +msgid "Enable FM sound emulation when playing domestic/Japan-region games." +msgstr "" +"Aktiviere FM-Klang-Emulation beim Spielen von \"domestic\"-/Japan-Region-" +"Spielen." + +#: src/sms/system.cpp:403 +msgid "Sega Master System ROM Image" +msgstr "" + +#: src/sms/system.cpp:409 +msgid "Game Gear ROM Image" +msgstr "" + +#: src/settings.cpp:89 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid unsigned integer." +msgstr "" + +#: src/settings.cpp:99 src/settings.cpp:131 src/settings.cpp:166 +#, c-format +msgid "" +"Setting \"%s\" is set too small(\"%s\"); the minimum acceptable value is \"%s" +"\"." +msgstr "" +"Einstellung \"%s\" ist zu niedrig gesetzt (\"%s\"); der niedrigste " +"akzeptable Wert ist \"%s\"." + +#: src/settings.cpp:110 src/settings.cpp:142 src/settings.cpp:177 +#, c-format +msgid "" +"Setting \"%s\" is set too large(\"%s\"); the maximum acceptable value is \"%s" +"\"." +msgstr "" +"Einstellung \"%s\" ist zu hoch gesetzt (\"%s\"); der höchste akzeptable Wert " +"ist \"%s\"." + +#: src/settings.cpp:121 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not set to a valid signed integer." +msgstr "" + +#: src/settings.cpp:156 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not set to a floating-point(real) number." +msgstr "" + +#: src/settings.cpp:186 +#, c-format +msgid "Setting \"%s\", value \"%s\", is not a valid boolean value." +msgstr "" + +#: src/settings.cpp:214 +#, c-format +msgid "" +"Setting \"%s\", value \"%s\", is not a recognized string. Recognized " +"strings: %s" +msgstr "" + +#: src/settings.cpp:223 +#, c-format +msgid "Setting \"%s\" is not set to a valid string: \"%s\"" +msgstr "" +"Einstellung \"%s\" ist nicht auf einen gültigen String (Zeichenfolge) " +"gesetzt: \"%s\"" + +#: src/settings.cpp:225 +#, c-format +msgid "Setting \"%s\" is not set to a valid unsigned integer: \"%s\"" +msgstr "" +"Einstellung \"%s\" ist nicht auf einen gültigen vorzeichenlosen Ganzzahl-" +"Wert gesetzt: \"%s\"" + +#: src/settings.cpp:336 +#, c-format +msgid "Loading settings from \"%s\"..." +msgstr "Lade Einstellungen aus \"%s\"..." + +#: src/settings.cpp:429 +msgid ";Edit this file at your own risk!\n" +msgstr ";Bearbeitung dieser Datei erfolgt auf eigenes Risiko!\n" + +#: src/settings.cpp:430 +msgid "" +";File format: \n" +"\n" +msgstr "" +";Dateiformat: \n" +"\n" + +#: src/settings.cpp:638 +#, c-format +msgid "Unknown setting \"%s\"" +msgstr "Unbekannte Einstellung \"%s\"" + +#: src/pcfx/rainbow.cpp:257 src/pcfx/rainbow.cpp:260 +msgid "Huffman LUT" +msgstr "" + +#: src/pcfx/rainbow.cpp:656 +msgid "RAINBOW buffer RAM" +msgstr "RAINBOW Puffer RAM" + +#: src/pcfx/king.cpp:1681 +msgid "KING Data" +msgstr "KING Daten" + +#: src/pcfx/input/gamepad.cpp:83 +#, c-format +msgid "Pad %d - MODE 1: %s, MODE 2: %s" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +#, c-format +msgid "V810 Emulation Mode: %s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Accurate" +msgstr "" + +#: src/pcfx/pcfx.cpp:503 src/vb/vb.cpp:610 +msgid "Fast" +msgstr "" + +#: src/pcfx/pcfx.cpp:510 +msgid "RAM" +msgstr "RAM" + +#: src/pcfx/pcfx.cpp:515 src/md/cd/cd.cpp:879 src/gba/GBA.cpp:762 +msgid "BIOS ROM" +msgstr "BIOS ROM" + +#: src/pcfx/pcfx.cpp:522 src/pcfx/pcfx.cpp:539 +msgid "BIOS ROM file is incorrect size.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:545 +msgid "FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:635 +msgid "" +"Warning: BRAM is disabled per pcfx.disable_bram setting. This is simulating " +"a malfunction.\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:830 +#, c-format +msgid "CD Layout MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:833 +#, c-format +msgid "GameSet MD5: 0x%s\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:876 +#, c-format +msgid "Emulated CD-ROM drive speed: %ux\n" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "Fast Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1035 src/vb/vb.cpp:965 +msgid "" +"Fast mode trades timing accuracy, cache emulation, and executing from " +"hardware registers and RAM not intended for code use for performance." +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "Accurate Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1036 src/vb/vb.cpp:966 +msgid "" +"Increased timing accuracy, though not perfect, along with cache emulation, " +"at the cost of decreased performance. Additionally, even the pipeline isn't " +"correctly and fully emulated in this mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "Auto Mode" +msgstr "" + +#: src/pcfx/pcfx.cpp:1037 +msgid "" +"Selects \"fast\" or \"accurate\" automatically based on an internal " +"database. If the CD image is not recognized, defaults to \"fast\"." +msgstr "" + +#: src/pcfx/pcfx.cpp:1044 +msgid "This value will cause heavy pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1045 +msgid "This value will cause moderate pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1046 +msgid "" +"This value will cause no pixel distortion as long as interpolation is " +"enabled on the video output device and the resolution is sufficiently high, " +"but it will use a lot of CPU time." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "Enable multitap on PC-FX port 1." +msgstr "" + +#: src/pcfx/pcfx.cpp:1063 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 3 4 5." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "Enable multitap on PC-FX port 2." +msgstr "" + +#: src/pcfx/pcfx.cpp:1064 +msgid "" +"EXPERIMENTAL emulation of the unreleased multitap. Enables ports 6 7 8." +msgstr "" + +#: src/pcfx/pcfx.cpp:1068 +msgid "" +"When RUN+SEL are pressed simultaneously, disable both buttons temporarily." +msgstr "" + +#: src/pcfx/pcfx.cpp:1070 src/vb/vb.cpp:998 +msgid "CPU emulation mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1071 +msgid "Path to the ROM BIOS" +msgstr "Pfad zum ROM BIOS" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Path to the FX-SCSI ROM" +msgstr "" + +#: src/pcfx/pcfx.cpp:1072 +msgid "Intended for developers only." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "Disable internal and external BRAM." +msgstr "" + +#: src/pcfx/pcfx.cpp:1073 +msgid "" +"It is intended for viewing games' error screens that may be different from " +"simple BRAM full and uninitialized BRAM error screens, though it can cause " +"the game to crash outright." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "Emulated CD-ROM speed." +msgstr "" + +#: src/pcfx/pcfx.cpp:1074 +msgid "" +"Setting this to \"1\" will probably cause most games with FMV to break, but " +"setting it higher than 2, the default, will decrease loading times in most " +"games by some degree." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "Emulated width for 7.16MHz dot-clock mode." +msgstr "" + +#: src/pcfx/pcfx.cpp:1077 +msgid "" +"Lower values are faster, but will cause some degree of pixel distortion." +msgstr "" + +#: src/pcfx/pcfx.cpp:1082 +msgid "" +"Enable bilinear interpolation on the chroma channel of RAINBOW YUV output." +msgstr "" + +#: src/pcfx/pcfx.cpp:1084 +msgid "Hack to suppress clicks caused by forced channel resets." +msgstr "" + +#: src/pcfx/pcfx.cpp:1088 +msgid "" +"Hack that emulates the codec a buggy ADPCM encoder used for some games' " +"ADPCM." +msgstr "" + +#: src/md/cd/cd.cpp:884 +msgid "Battery-backed RAM" +msgstr "" + +#: src/md/cd/cd.cpp:890 +msgid "Program RAM" +msgstr "" + +#: src/md/cd/cd.cpp:895 +msgid "Word RAM" +msgstr "" + +#: src/md/cd/cd.cpp:912 +#, c-format +msgid "Could not open CD BIOS file \"%s\": %s\n" +msgstr "Konnte CD BIOS Datei \"%s\" nicht öffnen: %s\n" + +#: src/md/cd/cd.cpp:918 +msgid "BIOS is incorrect size." +msgstr "" + +#: src/md/system.cpp:238 +#, c-format +msgid "Header MD5: 0x%s\n" +msgstr "" + +#: src/md/system.cpp:239 +#, c-format +msgid "Product Code: %s\n" +msgstr "" + +#: src/md/system.cpp:240 +#, c-format +msgid "Domestic name: %s\n" +msgstr "" + +#: src/md/system.cpp:241 +#, c-format +msgid "Overseas name: %s\n" +msgstr "" + +#: src/md/system.cpp:242 +#, c-format +msgid "Copyright: %s\n" +msgstr "" + +#: src/md/system.cpp:244 +#, c-format +msgid "Checksum: 0x%04x\n" +msgstr "" + +#: src/md/system.cpp:246 +#, c-format +msgid "" +"Checksum: 0x%04x\n" +" Warning: calculated checksum(0x%04x) does not match\n" +msgstr "" + +#: src/md/system.cpp:248 +msgid "Supported I/O devices:\n" +msgstr "" + +#: src/md/system.cpp:253 +#, c-format +msgid "%s\n" +msgstr "" + +#: src/md/system.cpp:264 +msgid "Supported regions:\n" +msgstr "" + +#: src/md/system.cpp:267 +msgid "Japan/Domestic NTSC\n" +msgstr "" + +#: src/md/system.cpp:269 +msgid "Japan/Domestic PAL\n" +msgstr "" + +#: src/md/system.cpp:271 +msgid "Overseas NTSC\n" +msgstr "" + +#: src/md/system.cpp:273 +msgid "Overseas PAL\n" +msgstr "" + +#: src/md/system.cpp:336 +#, c-format +msgid "Active Region: %s %s\n" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "Overseas" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "PAL" +msgstr "" + +#: src/md/system.cpp:336 src/md/system.cpp:337 +msgid "NTSC" +msgstr "" + +#: src/md/system.cpp:337 +#, c-format +msgid "Active Region Reported: %s %s\n" +msgstr "" + +#: src/md/system.cpp:484 src/md/system.cpp:499 +msgid "Match game's header." +msgstr "" + +#: src/md/system.cpp:484 +msgid "" +"Emulate the region that the game indicates it expects to run in via data in " +"the header(or in an internal database for a few games that may have bad " +"header data)." +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Overseas(non-Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:486 src/md/system.cpp:501 +msgid "Region used in North America." +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Overseas(non-Japan), PAL" +msgstr "" + +#: src/md/system.cpp:487 src/md/system.cpp:502 +msgid "Region used in Europe." +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Domestic(Japan), NTSC" +msgstr "" + +#: src/md/system.cpp:489 src/md/system.cpp:504 +msgid "Region used in Japan." +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Domestic(Japan), PAL" +msgstr "" + +#: src/md/system.cpp:490 src/md/system.cpp:505 +msgid "Probably an invalid region, but available for testing purposes anyway." +msgstr "" + +#: src/md/system.cpp:497 +msgid "Match the region emulated." +msgstr "" + +#: src/md/system.cpp:499 +msgid "" +"This option, in conjunction with the \"md.region\" setting, can be used to " +"run all games at NTSC speeds, or all games at PAL speeds." +msgstr "" + +#: src/md/system.cpp:512 +msgid "Emulate the specified region's Genesis/MegaDrive" +msgstr "" + +#: src/md/system.cpp:513 +msgid "Region reported to the game." +msgstr "" + +#: src/md/system.cpp:515 +msgid "SegaCD/MegaCD emulation is currently nonfunctional." +msgstr "" + +#: src/md/system.cpp:527 +msgid "Super Magic Drive binary ROM Image" +msgstr "" + +#: src/md/system.cpp:528 +msgid "Super Magic Drive interleaved format ROM Image" +msgstr "" + +#: src/md/system.cpp:529 +msgid "Multi Game Doctor format ROM Image" +msgstr "" + +#: src/md/cart/cart.cpp:441 +#, c-format +msgid "Handler for mapper/board \"%s\" not found!\n" +msgstr "" + +#: src/md/cart/map_eeprom.cpp:187 +msgid "Cart EEPROM" +msgstr "" + +#: src/md/cart/map_sram.cpp:78 +msgid "Cart SRAM" +msgstr "" + +#: src/memory.cpp:33 +#, c-format +msgid "Error allocating(calloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "Fehler beim Reservieren(calloc) von %u Bytes für \"%s\" in %s(%d)!" + +#: src/memory.cpp:47 +#, c-format +msgid "Error allocating(malloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "Fehler beim Reservieren(malloc) von %u Bytes für \"%s\" in %s(%d)!" + +#: src/memory.cpp:61 +#, c-format +msgid "Error allocating(realloc) %u bytes for \"%s\" in %s(%d)!" +msgstr "" + +#: src/file.cpp:88 +#, c-format +msgid "Error reading IPS file header: %s" +msgstr "" + +#: src/file.cpp:95 +msgid "IPS file header is invalid." +msgstr "" + +#: src/file.cpp:104 src/file.cpp:174 src/file.cpp:269 src/file.cpp:291 +#: src/file.cpp:307 src/file.cpp:313 src/file.cpp:351 +msgid "file read buffer" +msgstr "Datei-Lese-Puffer" + +#: src/file.cpp:129 +#, c-format +msgid "" +"IPS EOF: Did %d patches\n" +"\n" +msgstr "" +"IPS EOF: %d Patches angewendet\n" +"\n" + +#: src/file.cpp:137 +#, c-format +msgid "Error reading IPS patch length: %s" +msgstr "" + +#: src/file.cpp:148 +#, c-format +msgid "Error reading IPS RLE patch length: %s" +msgstr "" + +#: src/file.cpp:170 +#, c-format +msgid "" +"ROM image will be too large after IPS patch; maximum size allowed is %llu " +"bytes." +msgstr "" + +#: src/file.cpp:194 +#, c-format +msgid "Error reading IPS RLE patch byte: %s" +msgstr "" + +#: src/file.cpp:213 +#, c-format +msgid "Error reading IPS patch: %s" +msgstr "" + +#: src/file.cpp:225 +#, c-format +msgid "Error reading IPS patch header: %s" +msgstr "" + +#: src/file.cpp:250 src/file.cpp:303 src/file.cpp:347 +#, c-format +msgid "ROM image is too large; maximum size allowed is %llu bytes." +msgstr "" + +#: src/file.cpp:276 src/file.cpp:332 +#, c-format +msgid "Error reading file: %s" +msgstr "" + +#: src/file.cpp:327 +#, c-format +msgid "Error reading file: zlib error: %s" +msgstr "" + +#: src/file.cpp:424 src/file.cpp:474 +#, c-format +msgid "Could not seek to first file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:440 +#, c-format +msgid "Could not get file information in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:467 +#, c-format +msgid "Error seeking to next file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:486 +#, c-format +msgid "Could not open file in ZIP archive: %s" +msgstr "" + +#: src/file.cpp:514 src/file.cpp:557 src/file.cpp:560 src/file.cpp:724 +#: src/file.cpp:756 +#, c-format +msgid "Error opening \"%s\": %s" +msgstr "Fehler beim Laden von \"%s\": %s" + +#: src/file.cpp:560 +msgid "zlib error" +msgstr "" + +#: src/file.cpp:737 src/file.cpp:769 +#, c-format +msgid "Error writing to \"%s\": %s" +msgstr "" + +#: src/file.cpp:745 +#, c-format +msgid "Error closing \"%s\"" +msgstr "" + +#: src/file.cpp:779 +#, c-format +msgid "Error closing \"%s\": %s" +msgstr "" + +#: src/vb/vb.cpp:600 +#, c-format +msgid "Title: %s\n" +msgstr "" + +#: src/vb/vb.cpp:601 +#, c-format +msgid "Game ID Code: %u\n" +msgstr "" + +#: src/vb/vb.cpp:602 +#, c-format +msgid "Manufacturer Code: %d\n" +msgstr "" + +#: src/vb/vb.cpp:603 +#, c-format +msgid "Version: %u\n" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Anaglyph" +msgstr "" + +#: src/vb/vb.cpp:972 +msgid "Used in conjuction with classic dual-lens-color glasses." +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "CyberScope" +msgstr "" + +#: src/vb/vb.cpp:973 +msgid "Intended for use with the CyberScope 3D device." +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "Side-by-Side" +msgstr "" + +#: src/vb/vb.cpp:974 +msgid "" +"The left-eye image is displayed on the left, and the right-eye image is " +"displayed on the right." +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:976 +msgid "Vertical lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal Line Interlaced" +msgstr "" + +#: src/vb/vb.cpp:977 +msgid "Horizontal lines alternate between left view and right view." +msgstr "" + +#: src/vb/vb.cpp:983 +msgid "Forces usage of custom anaglyph colors." +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Red/Blue" +msgstr "" + +#: src/vb/vb.cpp:986 +msgid "Classic red/blue anaglyph." +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Red/Cyan" +msgstr "" + +#: src/vb/vb.cpp:987 +msgid "Improved quality red/cyan anaglyph." +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Red/Electric Cyan" +msgstr "" + +#: src/vb/vb.cpp:988 +msgid "Alternate version of red/cyan" +msgstr "" + +#: src/vb/vb.cpp:989 +msgid "Red/Green" +msgstr "" + +#: src/vb/vb.cpp:990 +msgid "Green/Magenta" +msgstr "" + +#: src/vb/vb.cpp:991 +msgid "Yellow/Blue" +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "Input latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:999 +msgid "" +"Reduces latency in some games by 20ms by returning the current pad state, " +"rather than latched state, on serial port data reads. This hack may cause " +"some homebrew software to malfunction, but it should be relatively safe for " +"commercial official games." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "Display latency reduction hack." +msgstr "" + +#: src/vb/vb.cpp:1001 +msgid "" +"Reduces latency in games by displaying the framebuffer 20ms earlier. This " +"hack has some potential of causing graphical glitches, so it is disabled by " +"default." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "Allow draw skipping." +msgstr "" + +#: src/vb/vb.cpp:1002 +msgid "" +"If vb.instant_display_hack is set to \"1\", and this setting is set to " +"\"1\", then frame-skipping the drawing to the emulated framebuffer will be " +"allowed. THIS WILL CAUSE GRAPHICAL GLITCHES, AND THEORETICALLY(but " +"unlikely) GAME CRASHES, ESPECIALLY WITH DIRECT FRAMEBUFFER DRAWING GAMES." +msgstr "" + +#: src/vb/vb.cpp:1005 +msgid "3D mode." +msgstr "" + +#: src/vb/vb.cpp:1006 +msgid "Line Interlaced prescale." +msgstr "" + +#: src/vb/vb.cpp:1008 +msgid "Disable parallax for BG and OBJ rendering." +msgstr "" + +#: src/vb/vb.cpp:1009 +msgid "Default maximum-brightness color to use in non-anaglyph 3D modes." +msgstr "" + +#: src/vb/vb.cpp:1011 +msgid "Anaglyph preset colors." +msgstr "" + +#: src/vb/vb.cpp:1012 +msgid "Anaglyph maximum-brightness color for left view." +msgstr "" + +#: src/vb/vb.cpp:1013 +msgid "Anaglyph maximum-brightness color for right view." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "Number of pixels to separate L/R views by." +msgstr "" + +#: src/vb/vb.cpp:1015 +msgid "" +"This setting refers to pixels before vb.xscale(fs) scaling is taken into " +"consideration. For example, a value of \"100\" here will result in a " +"separation of 300 screen pixels if vb.xscale(fs) is set to \"3\"." +msgstr "" + +#: src/vb/vb.cpp:1017 +msgid "Reverse left/right 3D views." +msgstr "" + +#: src/vb/vb.cpp:1069 src/vb/vb.cpp:1070 +msgid "Nintendo Virtual Boy" +msgstr "" + +#: src/vb/vb.cpp:1072 +msgid "Nintendo Virtual Boy (Deprecated)" +msgstr "" + +#: src/netplay.cpp:259 src/netplay.cpp:265 +msgid "Could not send the integrity result to the netplay server." +msgstr "" + +#: src/netplay.cpp:292 +msgid "Could not send the save state command to the netplay server." +msgstr "Konnte Speicherstand-Befehl nicht an den Netplay-Server senden." + +#: src/netplay.cpp:298 +msgid "Could not send the save state data to the netplay server." +msgstr "Konnte Speicherstand-Daten nicht an Netplay-Server senden." + +#: src/netplay.cpp:355 +msgid "a lurker" +msgstr "" + +#: src/netplay.cpp:357 +#, c-format +msgid "player(s)%s%s%s%s%s%s%s%s" +msgstr "" + +#: src/netplay.cpp:441 +msgid "Remote state loaded." +msgstr "Remote-Speicherstand geladen." + +#: src/netplay.cpp:573 +#, c-format +msgid "* You are now known as <%s>." +msgstr "* Du heißt jetzt <%s>" + +#: src/netplay.cpp:578 +#, c-format +msgid "* <%s> is now known as <%s>" +msgstr "* <%s> heißt jetzt <%s>" + +#: src/netplay.cpp:635 +#, c-format +msgid "* You, %s, have connected as: %s%s" +msgstr "" + +#: src/netplay.cpp:649 +#, c-format +msgid "* %s has left(%s%s)" +msgstr "" + +#: src/netplay.cpp:653 +#, c-format +msgid "* %s has connected as: %s%s" +msgstr "" + +#: src/gba/flash.cpp:67 +msgid "flash memory" +msgstr "Flash-Speicher" + +#: src/gba/GBA.cpp:691 +msgid "ROM" +msgstr "" + +#: src/gba/GBA.cpp:696 +msgid "Work RAM" +msgstr "" + +#: src/gba/GBA.cpp:768 +msgid "Internal RAM" +msgstr "" + +#: src/gba/GBA.cpp:774 +msgid "Palette RAM" +msgstr "" + +#: src/gba/GBA.cpp:780 +msgid "VRAM" +msgstr "" + +#: src/gba/GBA.cpp:786 +msgid "OAM" +msgstr "" + +#: src/gba/GBA.cpp:792 +msgid "IO" +msgstr "" + +#: src/gba/GBA.cpp:798 +msgid "GBA Color Map" +msgstr "GBA Farb-Tabelle" + +#: src/gba/GBA.cpp:1367 +#, c-format +msgid "" +"Unsupported BIOS function %02x called from %08x. A BIOS file is needed in " +"order to get correct behaviour." +msgstr "" +"Nicht unterstützte BIOS-Funktion %02x aufgerufen von %08x. Eine BIOS-Datei " +"wird benötigt, um das korrekte Verhalten zu emulieren." + +#: src/gba/GBA.cpp:2546 src/gba/GBA.cpp:2547 src/gba/GBA.cpp:2548 +#: src/gba/GBA.cpp:3382 src/gba/GBA.cpp:3383 src/gba/GBA.cpp:3384 +msgid "GameBoy Advance ROM Image" +msgstr "" + +#: src/gba/GBA.cpp:2555 +msgid "GBA BIOS" +msgstr "" + +#: src/gba/GBA.cpp:2562 +msgid "Invalid BIOS file size" +msgstr "Ungültige BIOS-Dateigröße" + +#: src/gba/GBA.cpp:3329 +msgid "Path to optional GBA BIOS ROM image." +msgstr "" + +#: src/gba/GBA.cpp:3380 +msgid "GSF Rip" +msgstr "" + +#: src/gba/GBA.cpp:3381 +msgid "MiniGSF Rip" +msgstr "" + +#: src/movie.cpp:64 +msgid "Movie recording stopped." +msgstr "Film-Aufnahme gestoppt." + +#: src/movie.cpp:107 +msgid "Movie recording started." +msgstr "Film-Aufnahme gestartet." + +#: src/movie.cpp:119 +msgid "Movie playback stopped." +msgstr "Film-Wiedergabe gestoppt." + +#: src/movie.cpp:138 +msgid "Can't play movies during netplay." +msgstr "Kann Filme während Netplay nicht abspielen." + +#: src/movie.cpp:159 +msgid "Error loading state portion of the movie." +msgstr "Fehler beim Laden des Stand-Abschnitts des Films." + +#: src/movie.cpp:168 +msgid "Movie playback started." +msgstr "Film-Wiedergabe gestartet." + +#: src/movie.cpp:331 +msgid "Movie status" +msgstr "" + +#~ msgid "The scaling factor for the X axis." +#~ msgstr "Der Skalierungsfaktor für die X-Achse." + +#~ msgid "The scaling factor for the Y axis." +#~ msgstr "Der Skalierungsfaktor für die Y-Achse." + +#~ msgid "The scaling factor for the X axis in fullscreen mode." +#~ msgstr "Der Skalierungsfaktor für die X-Achse im Vollbild-Modus." + +#~ msgid "The scaling factor for the Y axis in fullscreen mode." +#~ msgstr "Der Skalierungsfaktor für die Y-Achse im Vollbild-Modus." + +#~ msgid "Enable scanlines with specified transparency." +#~ msgstr "Scanlines mit angegebener Transparenz aktivieren." + +#~ msgid "Enable bilinear interpolation." +#~ msgstr "Bilinearen Filter aktivieren." + +#~ msgid "Network play server hostname." +#~ msgstr "Netplay-Server Hostname." + +#~ msgid "Port to connect to on the server." +#~ msgstr "Port für die Verbindung mit dem Netplay Server." + +#~ msgid "Enable sound emulation." +#~ msgstr "Sound-Emulation aktivieren." + +#~ msgid "Specifies the desired size of the sound buffer, in milliseconds." +#~ msgstr "Gibt die gewünschte Größe des Sound-Buffers in Millisekunden an." + +#~ msgid "Specifies the sound playback rate, in frames per second(\"Hz\")." +#~ msgstr "Gibt den Sound-Wiedergaberate in Bildern pro Sekunde (\"Hz\") an." + +#~ msgid "Enable the help screen." +#~ msgstr "Den Hilfe-Bildschirm aktivieren." + +#~ msgid "Character set for the debugger's memory editor." +#~ msgstr "Zeichensatz für den Speicher-Editor des Debuggers." + +#~ msgid "" +#~ "\n" +#~ "Signal %d has been caught and dealt with...\n" +#~ msgstr "" +#~ "\n" +#~ "Signal %d wurde abgefangen und versorgt...\n" + +#~ msgid "" +#~ "Compiled against SDL %u.%u.%u, running with SDL %u.%u.%u\n" +#~ "\n" +#~ msgstr "" +#~ "Kompiliert mit SDL %u.%u.%u, ausgeführt mit SDL %u.%u.%u\n" +#~ "\n" + +#~ msgid "Press a command key now." +#~ msgstr "Jetzt den Knopf des Befehls drücken, der neu belegt werden soll." + +#~ msgid "OpenGL: %s\n" +#~ msgstr "OpenGL: %s\n" + +#~ msgid "Scanlines: %f%% transparency\n" +#~ msgstr "Scanlines: %f%% Transparenz\n" + +#~ msgid "Set rate is out of range [8192-48000]" +#~ msgstr "" +#~ "Eingestellte Rate ist außerhalb des zulässigen Bereichs [8192-48000]" + +#~ msgid " F1 - Toggle Help" +#~ msgstr " F1 - Hilfe anzeigen/ausblenden" + +#~ msgid " F2 - Configure Command Key" +#~ msgstr " F2 - Befehlstaste konfigurieren" + +#~ msgid " ALT + SHIFT + [n] - Configure buttons on port n(1-5)" +#~ msgstr " ALT + UMSCHALT + [n] - Tasten für Port n (1-5) konfigurieren" + +#~ msgid " CTRL + SHIFT + [n] - Select device on port n" +#~ msgstr " STRG + UMSCHALT + [n] - Gerät an Port n wählen" + +#~ msgid " ALT + S - Enable state rewinding" +#~ msgstr " ALT + S - Stand-Zurückspulen aktivieren" + +#~ msgid " BACKSPACE - Rewind" +#~ msgstr " RÜCKTASTE - Zurück spulen" + +#~ msgid " F5 - Save State" +#~ msgstr " F5 - Stand speichern" + +#~ msgid " F6 - Select Disk" +#~ msgstr " F6 - Diskette/CD wählen" + +#~ msgid " F7 - Load State" +#~ msgstr " F7 - Stand laden" + +#~ msgid " F8 - Insert coin; Insert/Eject disk" +#~ msgstr " F8 - Münze einwerfen; Diskette einsetzen/auswerfen" + +#~ msgid " F9 - Take Screen Snapshot" +#~ msgstr " F9 - Bildschirmfoto speichern" + +#~ msgid " F10 - (Soft) Reset, if available on emulated system." +#~ msgstr "" +#~ " F10 - (Soft) Reset, wenn verfügbar unter dem emulierten\n" +#~ "System." + +#~ msgid " F11 - Power Toggle/Hard Reset" +#~ msgstr " F11 - Aus-/Einschalten (Hard Reset)" + +#~ msgid " F12 - Exit" +#~ msgstr " F12 - Beenden" + +#~ msgid "(now with 30% more moaning)" +#~ msgstr "(jetzt mit 30% mehr Gejammer)" + +#~ msgid "Warning: IPS ended without an EOF chunk.\n" +#~ msgstr "Warnung: IPS ohne einen EOF-Abschnitt beendet.\n" + +#~ msgid "Error opening \"%s\": %m" +#~ msgstr "Fehler beim Öffnen von \"%s\":%m" + +#~ msgid "Loading custom color map from \"%s\"...\n" +#~ msgstr "Lade benutzerdefinierte Farb-Tabelle aus \"%s\"...\n" + +#~ msgid "Load custom color map from specified file." +#~ msgstr "Lade benutzerdefinierte Farb-Tabelle aus der angegebenen Datei." + +#~ msgid "Could not open referenced file \"%s\": %m\n" +#~ msgstr "Kann referenzierte Datei \"%s\" nicht öffnen: %m\n" + +#~ msgid "" +#~ "Length specified in TOC file for track %d is too large by %d sectors!\n" +#~ msgstr "" +#~ "In TOC-Datei angegebene Länge für Track %d ist %d Sektoren zu lang!\n" + +#~ msgid "Error opening CUE sheet/TOC \"%s\": %m\n" +#~ msgstr "Fehler beim Öffnen der CUE/TOC-Datei \"%s\": %m\n" + +#~ msgid "\"RW\" format subchannel data not supported, only \"RW_RAW\" is!\n" +#~ msgstr "\"RW\" Format Subchannel Daten nicht unterstützt, nur \"RW_RAW\"!\n" + +#~ msgid "Error initializing MusePack decoder: %s!\n" +#~ msgstr "Fehler beim Initialisieren des MusePack-Decoders: %s!\n" + +#~ msgid "Error reading TOC file: %m\n" +#~ msgstr "Fehler beim Lesen der TOC-Datei: %m\n" + +#~ msgid "Error reading CUE sheet: %m\n" +#~ msgstr "Fehler beim Lesen der CUE-Datei: %m\n" + +#~ msgid "PHYSICAL CDROM DISC" +#~ msgstr "PHYSIKALISCHE CD-ROM" + +#~ msgid "Track %2d, LSN: %6d %s\n" +#~ msgstr "Track %2d, LSN: %6d %s\n" + +#~ msgid "Blur each frame with the last frame." +#~ msgstr "Jeden Frame mit dem letzten Frame vermischen." + +#~ msgid "" +#~ "Compressor to use with state rewinding: \"minilzo\", \"quicklz\", or " +#~ "\"blz\"" +#~ msgstr "" +#~ "Kompressor, der für das Stand-Zurückspulen verwendet werden soll: " +#~ "\"minilzo\", \"quicklz\", oder \"blz\"" + +#~ msgid "" +#~ "If value is true, use an alternate naming scheme(file base and numeric) " +#~ "for screen snapshots." +#~ msgstr "" +#~ "Wenn der Wert \"true\" ist, ein alternatives Benennungsschema (Dateinamen-" +#~ "Basis und Nummer) für Bildschirmfotos verwenden." + +#~ msgid "" +#~ "Include the MD5 hash of the loaded game in the filenames of the data file" +#~ "(save states, SRAM backups) Mednafen creates." +#~ msgstr "" +#~ "Den MD5-Hash des geladenen Spiels an den Dateinamen von Spiel-Daten die " +#~ "Mednafen erstellt (Speicherständen, SRAM-Dateien, ...) anhängen." + +#~ msgid "Path override for screen snapshots." +#~ msgstr "Pfad für Bildschirmfotos." + +#~ msgid "Path override for save games and nonvolatile memory." +#~ msgstr "Pfad für Spielstände und nicht-flüchtigen Speicher." + +#~ msgid "Path override for save states." +#~ msgstr "Pfad für Speicherstände." + +#~ msgid "Path override for movies." +#~ msgstr "Pfad für Filme." + +#~ msgid "Path override for cheats." +#~ msgstr "Pfad für Cheats." + +#~ msgid "Path override for custom palettes." +#~ msgstr "Pfad für eigene Paletten." + +#~ msgid "" +#~ "Write screen snapshots to the same directory the ROM/disk/disc image is " +#~ "in." +#~ msgstr "" +#~ "Die Bildschirmfotos in das selbe Verzeichnis schreiben, wie das geladene " +#~ "ROM/Abbild." + +#~ msgid "" +#~ "Write/Read save games and nonvolatile memory to/from the same directory " +#~ "the ROM/disk/disc image is in." +#~ msgstr "" +#~ "Speicherstände und Speicher-Abbilder im selben Verzeichnis lesen/" +#~ "schreiben, wie das geladene ROM/Abbild." + +#~ msgid "" +#~ "Write/Read save states to/from the same directory the ROM/disk/disc image " +#~ "is in." +#~ msgstr "" +#~ "Spielstände im selben Verzeichnis lesen/schreiben, wie das geladene ROM/" +#~ "Abbild." + +#~ msgid "" +#~ "Write/Read movies to/from the same directory the ROM/disk/disc image is " +#~ "in." +#~ msgstr "" +#~ "Filme im selben Verzeichnis lesen/schreiben, wie das geladene ROM/Abbild." + +#~ msgid "%d cheats loaded.\n" +#~ msgstr "%d Cheats geladen.\n" + +#~ msgid "Error opening Game Genie ROM image \"%s\": %m" +#~ msgstr "Fehler beim Öffnen des Game Genie ROM Abbildes \"%s\": %m" + +#~ msgid "Game Genie Read Handler Save" +#~ msgstr "Game Genie Lese-Handler speichern" + +#~ msgid "Game Genie Write Handler Save" +#~ msgstr "Game Genie Schreib-Handler speichern" + +#~ msgid "Select input device for input port 1." +#~ msgstr "Eingabegerät für Port 1 wählen." + +#~ msgid "Select input device for input port 2." +#~ msgstr "Eingabegerät für Port 2 wählen." + +#~ msgid "Select input device for input port 3." +#~ msgstr "Eingabegerät für Port 3 wählen." + +#~ msgid "Select input device for input port 4." +#~ msgstr "Eingabegerät für Port 4 wählen." + +#~ msgid "Select Famicom expansion-port device." +#~ msgstr "Gerät für Famicom Erweiterungs-Port wählen." + +#~ msgid "Disabled four-score emulation." +#~ msgstr "Four-score-Emulation deaktiviert." + +#~ msgid "No 8-sprites-per-scanline limit option." +#~ msgstr "8-Sprites-pro-Scanline-Limit deaktivieren." + +#~ msgid "First rendered scanline in NTSC mode." +#~ msgstr "Erste angezeigte Scanline im NTSC-Modus." + +#~ msgid "Last rendered scanlines in NTSC mode." +#~ msgstr "Letzte angezeigte Scanline im NTSC-Modus." + +#~ msgid "First rendered scanline in PAL mode." +#~ msgstr "Erste angezeigte Scanline im PAL-Modus." + +#~ msgid "Last rendered scanlines in PAL mode." +#~ msgstr "Letzte angezeigte Scanline im PAL-Modus." + +#~ msgid "Filename of custom NES palette." +#~ msgstr "Dateiname von eigener NES-Palette." + +#~ msgid "Select video quality/type preset." +#~ msgstr "Video-Qualität/-Typ Voreinstellung wählen." + +#~ msgid "ROM CRC32: 0x%08lx\n" +#~ msgstr "ROM CRC32: 0x%08lx\n" + +#~ msgid "* You, %s, have connected as player: %s%s%s%s%s%s" +#~ msgstr "* Du, %s, bist verbunden als Spieler: %s%s%s%s%s%s" + +#~ msgid "* %s has left(player: %s%s%s%s%s%s)" +#~ msgstr "* %s ist gegangen (Spieler: %s%s%s%s%s%s)" + +#~ msgid "* %s has connected as player: %s%s%s%s%s%s" +#~ msgstr "* %s ist verbunden als Spieler: %s%s%s%s%s%s" + +#~ msgid "If =1, tell games to display in English, if =0, in Japanese." +#~ msgstr "" +#~ "Wenn =1, lasse Spiele englische Sprache verwenden, wenn =0 Japanisch." + +#~ msgid "Arcade Card RAM" +#~ msgstr "Arcade Card RAM" + +#~ msgid "CD-ROM speed: %dx\n" +#~ msgstr "CD-ROM Geschwindigkeit: %dx\n" + +#~ msgid "Select input device for input port 5." +#~ msgstr "Eingabegerät für Port 5 wählen." + +#~ msgid "Set mouse sensitivity." +#~ msgstr "Maus-Sensibilität einstellen." + +#~ msgid "No 16-sprites-per-scanline limit option." +#~ msgstr "16-Sprites-pro-Scanline-Einschränkung deaktivieren." + +#~ msgid "Could not open BIOS file \"%s\": %s\n" +#~ msgstr "Konnte BIOS-Datei \"%s\" nicht öffnen: %s\n" + +#~ msgid "Using mmap() address space emulation...\n" +#~ msgstr "Verwende mmap() Adressraum-Emulation...\n" + +#~ msgid "Anonymous mmap() not supported? Then /dev/zero it is!\n" +#~ msgstr "Anonymous mmap() nicht unterstützt? Dann soll es /dev/zero sein!\n" + +#~ msgid "Base mmap failed: %m" +#~ msgstr "Base mmap fehlgeschlagen: %m" + +#~ msgid "RAM mmap failed: %m" +#~ msgstr "RAM mmap fehlgeschlagen: %m" + +#~ msgid "Error reading BIOS file \"%s\": %s\n" +#~ msgstr "Fehler beim Lesen der BIOS-Datei \"%s\": %s\n" + +#~ msgid "CD ID MD5(first 4KiB): 0x%s\n" +#~ msgstr "CD ID MD5 (erste 5KiB): 0x%s\n" + +#~ msgid "GameSet MD5:\t 0x%s\n" +#~ msgstr "Spiel-Set MD5: \t 0x%s\n" + +#~ msgid "Virtual CD Ejected" +#~ msgstr "Virtuelle CD ausgeworfen" + +#~ msgid "Virtual CD Inserted" +#~ msgstr "Virtuelle CD eingelegt" + +#~ msgid "Emulated width for 7.16MHz dot-clock mode: 256, 341, or 1024." +#~ msgstr "Emulierte Breite für 7.16MHz dot-clock Modus: 256, 341, oder 1024." + +#~ msgid "" +#~ "Use mmap() to create a virtual 32-bit address space to speed up V810 " +#~ "emulation." +#~ msgstr "" +#~ "mmap() verwenden, um einen virtuellen 32-Bit Adressraum zu erzeugen, um " +#~ "die V810-Emulation zu beschleunigen." + +#~ msgid "Setting \"%s\" is not set to a valid signed integer: \"%s\"" +#~ msgstr "" +#~ "Einstellung \"%s\" ist nicht auf einen gültigen Ganzzahl-Wert gesetzt: " +#~ "\"%s\"" + +#~ msgid "Setting \"%s\" is not set to a floating-point(real) number: \"%s\"" +#~ msgstr "Einstellung \"%s\" ist keine Fließkomma- (reelle) Zahl: \"%s\"" + +#~ msgid "Setting \"%s\" is not a valid boolean value: \"%s\"" +#~ msgstr "Einstellung \"%s\" ist kein gültiger boolescher Wert: \"%s\"" + +#~ msgid "Failed: %m\n" +#~ msgstr "Fehlgeschlagen: %m\n" + +#~ msgid "Territory, \"domestic\"(Japan) or \"export\"." +#~ msgstr "Territorium, \"domestic\"(Japan) oder \"export\"." + +#~ msgid "Error saving screen snapshot." +#~ msgstr "Fehler beim Speichern des Bildschirmfotos." + +#~ msgid "PNG compression buffer" +#~ msgstr "PNG Kompressions-Puffer" + +#~ msgid "Video frame blur enabled with accumulation: %f.\n" +#~ msgstr "Video Frame Unschärfe aktiviert mit Akkumulierung: %f.\n" + +#~ msgid "Video frame blur enabled.\n" +#~ msgstr "Video Frame Unschärfe aktiviert.\n" + +#~ msgid "Error opening %s: %s\n" +#~ msgstr "Fehler beim Öffnen von %s: %s\n" + +#~ msgid "IPS file is not valid!" +#~ msgstr "IPS-Datei ist ungültig!" + +#~ msgid "Error creating file %s" +#~ msgstr "Fehler beim Erstellen der Datei %s" diff --git a/libmednahawk/po/en@boldquot.header b/libmednahawk/po/en@boldquot.header new file mode 100644 index 0000000000..970d431e91 --- /dev/null +++ b/libmednahawk/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/libmednahawk/po/en@quot.header b/libmednahawk/po/en@quot.header new file mode 100644 index 0000000000..fdb6f27385 --- /dev/null +++ b/libmednahawk/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/libmednahawk/po/es.gmo b/libmednahawk/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b0892221c0414d7c328d6ecef6097178172b1ccd GIT binary patch literal 3821 zcmbW3OKc=Z8OJLm0d^8z36EsMvNQevJ3I~KZfIu9=|Euotcz3-ZC{53A zx}M*==A9=V`Jq6Y!t+TyKX^!p1@Q5Q@rCx(BSL%-d>VWdya>J*Y&ZRv!Kd-Q2!00q zI`|>*+u-}b?}5*NuYtV(?S^lG&*S~i&HGtwei83q1fK%G3G(_O_)+jX4POH%@%|I= z7h;ore8_5W|ii^Pk>7xpYuw?eeffA|2|0IA;{<70eSy7 zL6+k;;N##Q!873BK;Hjd@MGYkn9TE@0Y40On)kVeFN18KJ@5+nEpQV2dBfj>9r)m3 z9DWx4mv9L0zX4)MTnF3WE8wTV?}C@WH$dL^4CGaaC>;Edq_WK10v&R_Wb9n62cvuH+Y=cpIviZSrJ!))=&*Nd6 zafA9%50;(%HfpRRH;!GFkK08&5bwCLUAVEHgoopbV~OLH8|UhCcp!4rmHqY}JnVmt z+0Wu(o3mXwrde;!&6Di{UN}xiEx`}A6Z_&EcP3sHDhuR;3@QVqTiP z#2@I8?W(*b=B;!&g<+}4SgfeZ(z>AXwpfscdn&K$eLQJHD=XB^oKgnkwj4U$-wo-R zGn2k07FDJOJ>|rr_IorreLknI&J|70ocFYJ1M;Z+)Uj3L6(4!(U^i;QgVtOK6n33G zprNfCWrfZ5NOGT|fwBkM^eL0UPqailj&c^Hr*^D^3UMDyX^SQ2tRtsn&MS7D9ngv# zC|XfQE85yvCq0mTH6fO6meP1_4ei262hypOh*e!yJy%IL6sN6=ol|o~uNu%b?3+gG ztWvN=&XVH?gd(Fe#Xnj4-06Mg+AXna_GO`SnqS@M(vB`5x4xysRcYdJSF2(uu2x2g zH7j$HdG3_=5bFG7=hDsAs?p)T&dov&@9Pxn(q+5&9*T9l53Nhg>PgrWAyd1*?sqD) zF52lo4A`>dfLX7+&S=gB?GY1fr)%A1Vo5Pdw9M*g18)pufKk&HCfNNtW;U{5Id-=mU1UnZtq&;MJ}D89f%nPD6KZZL(^;Of^xKH5UB^d5C|?FUMLFc z>7Wpt+cwC8OvTAUc85IlKyrC1;7m-GhNdUPSGVTY>kv3M>CYjsV>Tji4xA2wceMzZ zO=mf?lGQwUSvii?6uD3vqP3+smy>nh*LgBu^?kB!Q`!xoOsA&chicH?vAy1~ZB&?Q zZEkEQ3or!xCRv1~Qkv;Z&m^7cWO|mSr_)X+>CARIn3!y-ea(j*&+ELv^Jcz8GhawA zUrIVJVBVVaA=!3Fp+W}hQh3Of=r#Qc>6L6NIY_CC6w`k9xH~1~TkEUqOJjYe+nv^e zHP9K`p-`n1)Xgx3kk#f2Wynph!i(3pmy_A?JU(_uxn#*?mg6_2S(v}ol*SCQOHu_z zAN!_E_Qqw>BEvlOBvyOMF_A;LtW*xeqgo-3gL0W1^t8;ahakY~0Hg znB`D6%c}5Ej{j|;j)nRESXdX^xbV&)bT42>Bz1+NTi6=}8?p)dhzd`x(y*Y7RXYlb zoEvE(VP!T?UA?2z9FMZ{qdJaJzUwL{d14`B0l(LjO(i!xWn9Zgr5rXCT=wr?g+i

    75Gq)m= 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�~*$d|P!Y4k=~ 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